2023-10-30 15:07:49 65a1391 feat(data/{list,multiset,finset}/*): `attach` and `filter` lemmas (#18087) Left commutativity and cardinality of `list.filter`/`multiset.filter`/`finset.filter`. Interaction of `count`/`countp` and `attach`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.card_filter + theorem finset.nat_cast_card_filter + theorem finset.prod_map_val +/- theorem finset.sum_boole Modified src/algebra/big_operators/order.lean Modified src/data/finset/card.lean + theorem finset.card_val Modified src/data/finset/image.lean + theorem finset.filter_attach' + theorem finset.filter_attach + theorem finset.map_filter' Modified src/data/list/basic.lean + theorem list.attach_nil + theorem list.filter_attach' + theorem list.filter_attach + theorem list.filter_comm + theorem list.map_filter' Modified src/data/list/count.lean + theorem list.count_attach + theorem list.countp_attach Modified src/data/list/perm.lean Modified src/data/multiset/basic.lean - theorem multiset.attach_count_eq_count_coe + theorem multiset.count_attach + theorem multiset.countp_attach + theorem multiset.filter_attach' + theorem multiset.filter_attach + theorem multiset.filter_comm + theorem multiset.map_filter' Modified src/data/multiset/lattice.lean +/- theorem multiset.sup_le Modified src/data/set/finite.lean Modified src/number_theory/kummer_dedekind.lean 2023-10-22 19:51:38 3365b20 feat(combinatorics/simple_graph): More clique lemmas (#19203) More lemmas about `is_clique`, `is_n_clique`, `edge_set`. Also define `clique_free_on`, a local version of `clique_free`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem equiv.simple_graph_refl + theorem equiv.simple_graph_trans + theorem equiv.symm_simple_graph + theorem simple_graph.comap_comap + theorem simple_graph.comap_id + theorem simple_graph.comap_symm + theorem simple_graph.delete_edges_eq + theorem simple_graph.disjoint_edge_set + theorem simple_graph.disjoint_from_edge_set + theorem simple_graph.edge_set_eq_empty + theorem simple_graph.edge_set_nonempty + theorem simple_graph.embedding.coe_to_hom +/- theorem simple_graph.embedding.map_adj_iff + theorem simple_graph.from_edge_set_disjoint + theorem simple_graph.hom.coe_id + theorem simple_graph.hom.coe_of_le - def simple_graph.hom.id + def simple_graph.hom.of_le + theorem simple_graph.map_adj_apply + theorem simple_graph.map_id + theorem simple_graph.map_map + theorem simple_graph.map_symm + theorem simple_graph.not_mem_neighbor_set_self Modified src/combinatorics/simple_graph/clique.lean + theorem simple_graph.card_clique_finset_le + theorem simple_graph.clique_finset_map + theorem simple_graph.clique_finset_map_of_equiv +/- theorem simple_graph.clique_free_bot + theorem simple_graph.clique_free_on.anti + theorem simple_graph.clique_free_on.mono + theorem simple_graph.clique_free_on.of_succ + theorem simple_graph.clique_free_on.subset + def simple_graph.clique_free_on + theorem simple_graph.clique_free_on_empty + theorem simple_graph.clique_free_on_of_card_lt + theorem simple_graph.clique_free_on_singleton + theorem simple_graph.clique_free_on_two + theorem simple_graph.clique_free_on_univ + theorem simple_graph.clique_free_two + theorem simple_graph.clique_set_bot + theorem simple_graph.clique_set_map + theorem simple_graph.clique_set_map_of_equiv + theorem simple_graph.clique_set_one + theorem simple_graph.clique_set_zero +/- theorem simple_graph.coe_clique_finset + theorem simple_graph.is_clique.insert +/- theorem simple_graph.is_clique.mono +/- theorem simple_graph.is_clique.subset + theorem simple_graph.is_clique_empty + theorem simple_graph.is_clique_insert + theorem simple_graph.is_clique_insert_of_not_mem + theorem simple_graph.is_clique_pair + theorem simple_graph.is_clique_singleton + theorem simple_graph.is_n_clique.insert + theorem simple_graph.is_n_clique_empty + theorem simple_graph.is_n_clique_one + theorem simple_graph.is_n_clique_singleton + theorem simple_graph.is_n_clique_zero +/- theorem simple_graph.mem_clique_finset_iff +/- theorem simple_graph.mem_clique_set_iff Modified src/combinatorics/simple_graph/triangle/basic.lean Modified src/data/finset/card.lean + theorem finset.exists_mem_ne Modified src/data/finset/preimage.lean + theorem finset.preimage_map Modified src/logic/basic.lean + theorem iff.ne_left + theorem iff.ne_right Modified src/logic/relation.lean + theorem relation.map_apply + theorem relation.map_id_id + theorem relation.map_map 2023-10-16 15:09:44 b1abe23 feat(measure_theory/order/upper_lower): Order-connected sets in `ℝⁿ` are measurable (#16976) Prove that the frontier of an order-connected set in `ℝⁿ` (with the `∞`-metric, but it doesn't actually matter) has measure zero. As a corollary, antichains in `ℝⁿ` have measure zero. ESTIMATED CHANGES Modified src/analysis/normed/order/upper_lower.lean + theorem bdd_above.bounded_inter + theorem bdd_below.bounded_inter + theorem bounded_iff_bdd_below_bdd_above + theorem closure_lower_closure_comm + theorem closure_upper_closure_comm + theorem dist_anti_left + theorem dist_anti_right + theorem dist_inf_sup + theorem dist_le_dist_of_le + theorem dist_mono_left + theorem dist_mono_right + theorem is_antichain.interior_eq_empty + theorem lower_closure_interior_subset' + theorem upper_closure_interior_subset' Modified src/data/real/nnreal.lean + theorem real.to_nnreal_abs Added src/measure_theory/order/upper_lower.lean + theorem is_antichain.volume_eq_zero + theorem is_lower_set.null_frontier + theorem is_upper_set.null_frontier + theorem set.ord_connected.null_frontier Modified src/order/bounds/basic.lean + theorem mem_lower_bounds_iff_subset_Ici + theorem mem_upper_bounds_iff_subset_Iic Modified src/topology/algebra/order/upper_lower.lean + theorem bdd_above_closure + theorem bdd_below_closure + theorem lower_bounds_closure + theorem upper_bounds_closure 2023-10-11 09:24:47+02:00 19c869e move old README.md to OLD_README.md ESTIMATED CHANGES Added OLD_README.md Modified README.md 2023-10-10 22:55:10 3ac76ec doc: Add a warning mentioning Lean 4 to the readme (#19243) Also correct links to point to the lean3 webpages; this means that users clicking them end up on pages which also have scary banners telling them not to use Lean 3. ESTIMATED CHANGES Modified README.md 2023-10-09 14:37:58 c8f3055 feat(topology/metric_space): diameter of pointwise zero and addition (#19028) ESTIMATED CHANGES Modified src/analysis/normed/group/pointwise.lean + theorem ediam_mul_le + theorem metric.bounded.of_mul Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.bounded_of_image2_left + theorem antilipschitz_with.bounded_of_image2_right Modified src/topology/metric_space/basic.lean + theorem metric.diam_one + theorem metric.nonempty_of_unbounded Modified src/topology/metric_space/emetric_space.lean + theorem emetric.diam_one Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_on_with.bounded_image2 + theorem lipschitz_on_with.ediam_image2_le 2023-09-18 15:31:36 ce64cd3 feat(topology/algebra/order/liminf_limsup): Eventual boundedness of neighborhoods (#18629) Generalise `bounded_le_nhds`/`bounded_ge_nhds` using two ad hoc typeclasses. The goal here is to circumvent the fact that the product of order topologies is *not* an order topology, and apply those lemmas to `ℝⁿ`. ESTIMATED CHANGES Modified src/order/filter/pi.lean + theorem filter.eventually.eval_pi + theorem filter.eventually_pi Modified src/topology/algebra/order/liminf_limsup.lean +/- theorem Union_Ici_eq_Ioi_of_lt_of_tendsto +/- theorem Union_Iic_eq_Iio_of_lt_of_tendsto +/- theorem filter.tendsto.bdd_above_range +/- theorem filter.tendsto.bdd_above_range_of_cofinite +/- theorem filter.tendsto.bdd_below_range +/- theorem filter.tendsto.bdd_below_range_of_cofinite +/- theorem filter.tendsto.is_bounded_under_ge +/- theorem filter.tendsto.is_bounded_under_le +/- theorem filter.tendsto.is_cobounded_under_ge +/- theorem filter.tendsto.is_cobounded_under_le +/- theorem is_bounded_ge_nhds 2023-09-12 23:46:39 001ffdc feat(probability/independence): Independence of singletons (#18506) Characterisation of independence in terms of measure distributing over finite intersections, and lemmas connecting the different concepts of independence. Also add supporting `measurable_space` and `set.preimage` lemmas ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem Prop.compl_singleton Modified src/data/set/image.lean + theorem set.preimage_singleton_false + theorem set.preimage_singleton_true + theorem set.preimage_symm_diff Modified src/measure_theory/measurable_space.lean + theorem measurable_embedding.comap_eq + theorem measurable_embedding.iff_comap_eq + theorem measurable_equiv.map_eq + def measurable_equiv.of_involutive + theorem measurable_equiv.of_involutive_apply + theorem measurable_equiv.of_involutive_symm + theorem measurable_mem + theorem measurable_set_set_of + theorem measurable_space.comap_compl + theorem measurable_space.comap_const + theorem measurable_space.comap_not + theorem measurable_space.generate_from_singleton + theorem measurable_space.map_const + theorem measurable_to_prop Modified src/measure_theory/measurable_space_def.lean +/- theorem measurable_set.const +/- theorem measurable_space.generate_from_singleton_empty +/- theorem measurable_space.generate_from_singleton_univ Modified src/probability/independence/basic.lean + theorem probability_theory.Indep_comap_mem_iff + theorem probability_theory.Indep_set_iff_Indep_sets_singleton + theorem probability_theory.Indep_set_iff_measure_Inter_eq_prod + theorem probability_theory.Indep_sets.Indep_set_of_mem + theorem probability_theory.Indep_sets.meas_Inter + theorem probability_theory.Indep_sets_singleton_iff 2023-09-12 13:12:04 8818fde feat(combinatorics/set_family/ahlswede_zhang): Ahlswede-Zhang identity, part I (#18612) The Ahlswede-Zhang identity is a sharpening of the [Lubell-Yamamoto-Meshalkin identity](https://leanprover-community.github.io/mathlib_docs/combinatorics/set_family/lym.html#finset.sum_card_slice_div_choose_le_one), by expliciting the correction term. This PR defines `finset.truncated_sup`/`finset.truncated_inf`, whose cardinalities show up in the correction term. ESTIMATED CHANGES Added src/combinatorics/set_family/ahlswede_zhang.lean + theorem finset.card_truncated_sup_union_add_card_truncated_sup_infs + theorem finset.compl_truncated_inf + theorem finset.compl_truncated_sup + theorem finset.le_truncated_sup + theorem finset.map_truncated_inf + theorem finset.map_truncated_sup + def finset.truncated_inf + theorem finset.truncated_inf_empty + theorem finset.truncated_inf_le + theorem finset.truncated_inf_of_mem + theorem finset.truncated_inf_of_not_mem + theorem finset.truncated_inf_sups + theorem finset.truncated_inf_sups_of_not_mem + theorem finset.truncated_inf_union + theorem finset.truncated_inf_union_left + theorem finset.truncated_inf_union_of_not_mem + theorem finset.truncated_inf_union_right + def finset.truncated_sup + theorem finset.truncated_sup_empty + theorem finset.truncated_sup_infs + theorem finset.truncated_sup_infs_of_not_mem + theorem finset.truncated_sup_of_mem + theorem finset.truncated_sup_of_not_mem + theorem finset.truncated_sup_union + theorem finset.truncated_sup_union_left + theorem finset.truncated_sup_union_of_not_mem + theorem finset.truncated_sup_union_right Modified src/data/finset/sups.lean + theorem finset.filter_infs_ge + theorem finset.filter_sups_le Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean 2023-08-31 08:51:42 442a83d feat(data/finset/lattice): `sup'`/`inf'` lemmas (#18989) Match (most of) the lemmas between `finset.sup`/`finset.inf` and `finset.sup'`/`finset.inf'`. Also golf two proofs using `eq_of_forall_ge_iff` to make sure both APIs prove their lemmas in as closely as possible a way. Also define `finset.nontrivial` to match `set.nontrivial`. ESTIMATED CHANGES Modified src/data/dfinsupp/multiset.lean +/- theorem multiset.to_dfinsupp_support Modified src/data/finset/basic.lean +/- theorem finset.attach_eq_empty_iff +/- theorem finset.attach_nonempty_iff + theorem finset.cons_empty +/- theorem finset.eq_singleton_or_nontrivial + theorem finset.filter_comm +/- theorem finset.filter_congr_decidable + theorem finset.filter_const +/- theorem finset.filter_eq_empty_iff +/- theorem finset.filter_eq_self +/- theorem finset.filter_false +/- theorem finset.filter_false_of_mem +/- theorem finset.filter_true +/- theorem finset.filter_true_of_mem +/- theorem finset.nonempty.exists_eq_singleton_or_nontrivial + theorem finset.nontrivial.ne_singleton + theorem finset.nontrivial_iff_ne_singleton + theorem finset.not_nontrivial_empty + theorem finset.not_nontrivial_singleton - theorem finset.sdiff_self Modified src/data/finset/lattice.lean + theorem finset.inf'_image + theorem finset.inf'_product_left + theorem finset.inf'_product_right + theorem finset.inf'_sup_distrib_left + theorem finset.inf'_sup_distrib_right + theorem finset.inf'_sup_inf' + theorem finset.inf'_union + theorem finset.sup'_image + theorem finset.sup'_inf_distrib_left + theorem finset.sup'_inf_distrib_right + theorem finset.sup'_inf_sup' + theorem finset.sup'_product_left + theorem finset.sup'_product_right + theorem finset.sup'_union + theorem map_finset_inf' + theorem map_finset_sup' Modified src/data/finset/locally_finite.lean Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean 2023-08-28 11:58:43 ffde2d8 chore(order/liminf_limsup): Generalise and move lemmas (#18628) Generalise lemmas from semilattices to codirected orders. Move topology-less lemmas from `topology.algebra.order.liminf_limsup` to `order.liminf_limsup`. Also turn arguments to `bdd_above_insert` and friends implicit. ESTIMATED CHANGES Modified src/data/set/finite.lean +/- theorem set.infinite_of_not_bdd_below Modified src/order/bounds/basic.lean - theorem bdd_above.insert +/- theorem bdd_above.union +/- theorem bdd_above_insert +/- theorem bdd_above_union +/- theorem bdd_below.insert +/- theorem bdd_below.union +/- theorem bdd_below_insert +/- theorem bdd_below_union + def scott_continuous Modified src/order/directed.lean - def scott_continuous Modified src/order/liminf_limsup.lean + theorem filter.bdd_above_range_of_tendsto_at_top_at_bot + theorem filter.bdd_below_range_of_tendsto_at_top_at_top + theorem filter.gt_mem_sets_of_Liminf_gt + theorem filter.is_bounded_ge_at_top + theorem filter.is_bounded_le_at_bot +/- theorem filter.is_bounded_under.bdd_above_range +/- theorem filter.is_bounded_under.bdd_above_range_of_cofinite +/- theorem filter.is_bounded_under.bdd_below_range +/- theorem filter.is_bounded_under.bdd_below_range_of_cofinite + theorem filter.lt_mem_sets_of_Limsup_lt + theorem filter.tendsto.is_bounded_under_ge_at_top + theorem filter.tendsto.is_bounded_under_le_at_bot Modified src/topology/algebra/order/liminf_limsup.lean - theorem bdd_above_range_of_tendsto_at_top_at_bot - theorem bdd_below_range_of_tendsto_at_top_at_top - theorem filter.tendsto.is_bounded_under_ge_at_top - theorem filter.tendsto.is_bounded_under_le_at_bot - theorem gt_mem_sets_of_Liminf_gt - theorem is_bounded_ge_at_top - theorem is_bounded_le_at_bot - theorem lt_mem_sets_of_Limsup_lt 2023-08-05 18:07:30 32a7e53 feat(algebraic_topology/dold_kan): The Dold-Kan equivalence for abelian categories (#17926) ESTIMATED CHANGES Modified src/algebraic_topology/dold_kan/compatibility.lean Modified src/algebraic_topology/dold_kan/decomposition.lean Modified src/algebraic_topology/dold_kan/degeneracies.lean Added src/algebraic_topology/dold_kan/equivalence.lean + def category_theory.abelian.dold_kan.N + def category_theory.abelian.dold_kan.comparison_N + def category_theory.abelian.dold_kan.equivalence + theorem category_theory.abelian.dold_kan.equivalence_inverse + def category_theory.abelian.dold_kan.Γ Modified src/algebraic_topology/dold_kan/equivalence_additive.lean Modified src/algebraic_topology/dold_kan/equivalence_pseudoabelian.lean Modified src/algebraic_topology/dold_kan/faces.lean Modified src/algebraic_topology/dold_kan/functor_gamma.lean Modified src/algebraic_topology/dold_kan/functor_n.lean Modified src/algebraic_topology/dold_kan/gamma_comp_n.lean Modified src/algebraic_topology/dold_kan/n_comp_gamma.lean Modified src/algebraic_topology/dold_kan/n_reflects_iso.lean Modified src/algebraic_topology/dold_kan/normalized.lean Modified src/algebraic_topology/dold_kan/notations.lean Modified src/algebraic_topology/dold_kan/p_infty.lean Modified src/algebraic_topology/dold_kan/projections.lean Modified src/algebraic_topology/dold_kan/split_simplicial_object.lean 2023-08-02 16:47:14 48a058d feat(data/sum/interval): The lexicographic sum of two locally finite orders is locally finite (#11352) This proves `locally_finite_order (α ⊕ₗ β)` where `α` and `β` are locally finite themselves. ESTIMATED CHANGES Modified src/data/finset/sum.lean + theorem finset.disj_sum_eq_empty Modified src/data/sum/interval.lean + theorem finset.inl_mem_sum_lex_lift + theorem finset.inr_mem_sum_lex_lift + theorem finset.mem_sum_lex_lift + def finset.sum_lex_lift + theorem finset.sum_lex_lift_eq_empty + theorem finset.sum_lex_lift_inl_inl + theorem finset.sum_lex_lift_inl_inr + theorem finset.sum_lex_lift_inr_inl + theorem finset.sum_lex_lift_inr_inr + theorem finset.sum_lex_lift_mono + theorem finset.sum_lex_lift_nonempty + theorem sum.lex.Icc_inl_inl + theorem sum.lex.Icc_inl_inr + theorem sum.lex.Icc_inr_inl + theorem sum.lex.Icc_inr_inr + theorem sum.lex.Ico_inl_inl + theorem sum.lex.Ico_inl_inr + theorem sum.lex.Ico_inr_inl + theorem sum.lex.Ico_inr_inr + theorem sum.lex.Ioc_inl_inl + theorem sum.lex.Ioc_inl_inr + theorem sum.lex.Ioc_inr_inl + theorem sum.lex.Ioc_inr_inr + theorem sum.lex.Ioo_inl_inl + theorem sum.lex.Ioo_inl_inr + theorem sum.lex.Ioo_inr_inl + theorem sum.lex.Ioo_inr_inr 2023-08-02 13:20:57 3ba1516 feat(analysis/convex/proj_Icc): Extending convex functions (#18797) Constantly extending monotone/antitone functions preserves their convexity. ESTIMATED CHANGES Modified src/algebra/order/module.lean + theorem smul_max_of_nonpos + theorem smul_min_of_nonpos Modified src/algebra/order/monoid/lemmas.lean + theorem max_mul_mul_le_max_mul_max' + theorem min_mul_min_le_min_mul_mul' Modified src/algebra/order/smul.lean + theorem smul_max + theorem smul_min Added src/analysis/convex/proj_Icc.lean Modified src/data/set/intervals/basic.lean + theorem antitone.image_Icc_subset + theorem antitone_on.image_Icc_subset + theorem monotone.image_Icc_subset + theorem monotone_on.image_Icc_subset Modified src/data/set/intervals/unordered_interval.lean + theorem antitone.image_uIcc_subset + theorem antitone_on.image_uIcc_subset + theorem monotone.image_uIcc_subset + theorem monotone_on.image_uIcc_subset Modified src/order/lattice.lean + theorem antitone_on.map_inf + theorem antitone_on.map_sup + theorem antitone_on.of_map_inf + theorem antitone_on.of_map_sup + theorem monotone_on.map_inf + theorem monotone_on.map_sup + theorem monotone_on.of_map_inf + theorem monotone_on.of_map_sup 2023-07-30 10:18:54 63721b2 feat(algebraic_topology/dold_kan): The Dold-Kan equivalence for pseudoabelian categories (#17925) ESTIMATED CHANGES Added src/algebraic_topology/dold_kan/equivalence_pseudoabelian.lean + def category_theory.idempotents.dold_kan.N + def category_theory.idempotents.dold_kan.equivalence + theorem category_theory.idempotents.dold_kan.equivalence_counit_iso + theorem category_theory.idempotents.dold_kan.equivalence_functor + theorem category_theory.idempotents.dold_kan.equivalence_inverse + theorem category_theory.idempotents.dold_kan.equivalence_unit_iso + theorem category_theory.idempotents.dold_kan.hN₁ + theorem category_theory.idempotents.dold_kan.hΓ₀ + theorem category_theory.idempotents.dold_kan.hε + theorem category_theory.idempotents.dold_kan.hη + def category_theory.idempotents.dold_kan.Γ + def category_theory.idempotents.dold_kan.ε + def category_theory.idempotents.dold_kan.η Modified src/category_theory/functor/category.lean + theorem category_theory.nat_trans.comp_app_assoc 2023-07-28 12:48:03 3b52265 feat(measure_theory/measure/haar_quotient): the Unfolding Trick (#18863) We prove the "unfolding trick": Given a subgroup `Γ` of a group `G`, the integral of a function `f` on `G` times the lift to `G` of a function `g` on the coset space `G ⧸ Γ` with respect to a right-invariant measure `μ` on `G`, is equal to the integral over the coset space of the automorphization of `f` times `g`. We also prove the following simplified version: Given a subgroup `Γ` of a group `G`, the integral of a function `f` on `G` with respect to a right-invariant measure `μ` is equal to the integral over the coset space `G ⧸ Γ` of the automorphization of `f`. A question: is it possible to deduce `ae_strongly_measurable (quotient_group.automorphize f) μ_𝓕` from `ae_strongly_measurable f μ` (as opposed to assuming it as a hypothesis in the main theorem)? It seems quite plausible... ESTIMATED CHANGES Modified src/group_theory/group_action/group.lean + def distrib_mul_action.to_add_equiv₀ Modified src/measure_theory/function/strongly_measurable/basic.lean + theorem measure_theory.ae_strongly_measurable_of_absolutely_continuous Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.integral_eq_tsum'' + theorem measure_theory.is_fundamental_domain.lintegral_eq_tsum'' Modified src/measure_theory/measure/haar/quotient.lean + theorem ess_sup_comp_quotient_group_mk +/- theorem measure_preserving_quotient_group.mk' + theorem measure_theory.is_fundamental_domain.absolutely_continuous_map +/- theorem measure_theory.is_fundamental_domain.map_restrict_quotient + theorem quotient_add_group.integral_mul_eq_integral_automorphize_mul + theorem quotient_group.integral_eq_integral_automorphize + theorem quotient_group.integral_mul_eq_integral_automorphize_mul Modified src/topology/algebra/infinite_sum/basic.lean + theorem add_action.automorphize_smul_left + def mul_action.automorphize + theorem mul_action.automorphize_smul_left + theorem quotient_add_group.automorphize_smul_left + def quotient_group.automorphize + theorem quotient_group.automorphize_smul_left + theorem tsum_const_smul'' + theorem tsum_const_smul' 2023-07-28 10:11:09 0c1d80f feat(linear_algebra/orientation): add `orientation.reindex` (#19236) ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.dom_dom_congr_smul + def alternating_map.dom_dom_lcongr + theorem alternating_map.dom_dom_lcongr_refl + theorem alternating_map.dom_dom_lcongr_to_add_equiv Modified src/linear_algebra/determinant.lean + theorem basis.det_reindex' Modified src/linear_algebra/orientation.lean + theorem basis.orientation_reindex + def orientation.reindex + theorem orientation.reindex_apply + theorem orientation.reindex_refl + theorem orientation.reindex_symm 2023-07-28 10:11:08 188a411 feat(combinatorics/quiver/covering): Definition of coverings and unique lifting of paths (#17828) ESTIMATED CHANGES Added src/combinatorics/quiver/covering.lean + theorem prefunctor.bijective_costar_iff_bijective_star + def prefunctor.costar + theorem prefunctor.costar_apply + theorem prefunctor.costar_comp + theorem prefunctor.costar_conj_star + theorem prefunctor.is_covering.comp + theorem prefunctor.is_covering.map_injective + theorem prefunctor.is_covering.of_comp_left + theorem prefunctor.is_covering.of_comp_right + theorem prefunctor.is_covering_of_bijective_costar + theorem prefunctor.is_covering_of_bijective_star + def prefunctor.path_star + theorem prefunctor.path_star_apply + theorem prefunctor.path_star_bijective + theorem prefunctor.path_star_injective + theorem prefunctor.path_star_surjective + def prefunctor.star + theorem prefunctor.star_apply + theorem prefunctor.star_comp + theorem prefunctor.symmetrify_star + def quiver.costar + def quiver.path_star + def quiver.star + def quiver.star_equiv_costar + theorem quiver.star_equiv_costar_apply + theorem quiver.star_equiv_costar_symm_apply + def quiver.symmetrify_costar + def quiver.symmetrify_star 2023-07-28 10:11:06 8900d54 feat(set_theory/game/pgame): small sets of pre-games / games / surreals are bounded (#15260) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + theorem game.bdd_above_of_small + theorem game.bdd_below_of_small Modified src/set_theory/game/pgame.lean + theorem pgame.bdd_above_of_small + theorem pgame.bdd_below_of_small + theorem pgame.le_upper_bound + def pgame.lower_bound + theorem pgame.lower_bound_le + theorem pgame.lower_bound_mem_lower_bounds + def pgame.upper_bound + theorem pgame.upper_bound_mem_upper_bounds Modified src/set_theory/surreal/basic.lean + theorem surreal.bdd_above_of_small + theorem surreal.bdd_below_of_small + theorem surreal.lower_bound_numeric + theorem surreal.upper_bound_numeric 2023-07-28 07:23:47 e90e0a6 feat(tactic/positivity): Extension for `ite` (#17650) Add `positivity_ite`, an extension for `ite`. ESTIMATED CHANGES Modified src/tactic/positivity.lean Modified test/positivity.lean 2023-07-27 10:40:44 fe18ded feat(analysis/normed_space/continuous_linear_map): generalize typeclass assumptions (#19108) ESTIMATED CHANGES Modified src/analysis/normed_space/continuous_linear_map.lean 2023-07-26 13:39:42 d11f435 feat(linear_algebra/quadratic_form): some work from 'Clifford Algebras and Spinor Norms Over a Commutative Ring' (#18447) ESTIMATED CHANGES Modified docs/references.bib Modified src/linear_algebra/quadratic_form/basic.lean +/- def quadratic_form.associated Added src/linear_algebra/quadratic_form/dual.lean + theorem bilin_form.dual_prod.to_quadratic_form + def bilin_form.dual_prod + theorem bilin_form.is_symm_dual_prod + theorem bilin_form.nondenerate_dual_prod + def quadratic_form.dual_prod + def quadratic_form.dual_prod_isometry + def quadratic_form.dual_prod_prod_isometry + def quadratic_form.to_dual_prod + theorem quadratic_form.to_dual_prod_isometry 2023-07-25 05:26:13 18ee599 feat(algebraic_topology/dold_kan): tools for compatibilities, lemmas (#17923) ESTIMATED CHANGES Modified src/algebraic_topology/dold_kan/compatibility.lean + def algebraic_topology.dold_kan.compatibility.equivalence_counit_iso + theorem algebraic_topology.dold_kan.compatibility.equivalence_counit_iso_eq + def algebraic_topology.dold_kan.compatibility.equivalence_unit_iso + theorem algebraic_topology.dold_kan.compatibility.equivalence_unit_iso_eq + def algebraic_topology.dold_kan.compatibility.τ₀ + def algebraic_topology.dold_kan.compatibility.τ₁ + def algebraic_topology.dold_kan.compatibility.υ 2023-07-24 11:50:08 c0c52ab feat(order/upper_lower/basic): Linear order (#19068) Upper/lower sets on a linear order themselves form a linear order. ESTIMATED CHANGES Modified src/algebra/order/upper_lower.lean Modified src/order/upper_lower/basic.lean + theorem is_lower_set.total + theorem is_upper_set.total Modified src/topology/algebra/order/upper_lower.lean 2023-07-24 08:57:03 4be5890 fix(group_theory/subgroup/basic): generalize `centralizer` from `subgroup G` to `set G` (#18965) This is consistent with all the other `sub.centralizer` definitions. This generalization reveals that a lot of downstream results are rather strangely stated about `zpowers`. This does not attempt to change these, instead leaving the work for a follow up (either in a later mathlib3 PR or in mathlib4). ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Modified src/group_theory/commutator.lean +/- theorem subgroup.commutator_eq_bot_iff_le_centralizer Modified src/group_theory/group_action/conj_act.lean +/- theorem conj_act.stabilizer_eq_centralizer Modified src/group_theory/group_action/quotient.lean Modified src/group_theory/subgroup/basic.lean +/- def subgroup.centralizer +/- theorem subgroup.centralizer_eq_top_iff_subset +/- theorem subgroup.centralizer_le - theorem subgroup.centralizer_top + theorem subgroup.centralizer_univ +/- theorem subgroup.le_centralizer +/- theorem subgroup.le_centralizer_iff +/- theorem subgroup.le_centralizer_iff_is_commutative +/- theorem subgroup.mem_centralizer_iff +/- theorem subgroup.mem_centralizer_iff_commutator_eq_one Modified src/group_theory/subgroup/zpowers.lean Modified src/group_theory/sylow.lean Modified src/group_theory/transfer.lean 2023-07-24 08:57:01 148aefb docs(topology/dense_embedding): Improve explanation (#18134) An attempt at improving understandability. Closes #1539 ESTIMATED CHANGES Modified src/topology/dense_embedding.lean 2023-07-24 07:47:40 4b92a46 chore(ring_theory/kaehler): cleanup instances (#19234) The previous module instance has the wrong defeqs, and was more work to construct. The new one remains propositionally equal to the old one. ESTIMATED CHANGES Modified src/ring_theory/ideal/cotangent.lean Modified src/ring_theory/kaehler.lean +/- def kaehler_differential.End_equiv_derivation' 2023-07-23 09:51:10 88fcdc3 feat(ring_theory/tensor_product): add missing scalar tower instances (#19143) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean Modified src/ring_theory/tensor_product.lean - theorem algebra.tensor_product.mul_assoc - theorem algebra.tensor_product.mul_one - theorem algebra.tensor_product.one_mul 2023-07-22 18:41:27 8047de4 feat(topology/metric_space/basic): decomposition of a "sphere" hypercube (#18875) The main result here is `sphere x r = (⋃ i : β, function.eval i ⁻¹' sphere (x i) r) ∩ closed_ball x r`, which attempts to express that you can form the surface of a cube by taking the union of the faces in each axis. The `prod` result, `sphere (x, y) r = sphere x r ×ˢ closed_ball y r ∪ closed_ball x r ×ˢ sphere y r`, is a little easier to follow. I can imagine these being useful if we wanted to prove that the surface area of a "sphere" in `fin 3 -> R` was `24*r*r`! ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem dist_pi_eq_iff + theorem metric.closed_ball_eq_sphere_of_nonpos + theorem metric.nonneg_of_mem_sphere + theorem metric.sphere_eq_empty_of_neg + theorem nndist_pi_eq_iff + theorem nndist_pi_lt_iff + theorem sphere_pi + theorem sphere_prod 2023-07-22 09:12:42 573eea9 chore(*): add mathlib4 synchronization comments (#19239) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `order.irreducible` ESTIMATED CHANGES Modified src/order/irreducible.lean 2023-07-19 06:33:41 8ea5598 chore(set_theory/ordinal/basic): golf (#18547) ESTIMATED CHANGES Modified src/order/initial_seg.lean + theorem principal_seg.apply_subrel_iso + theorem principal_seg.subrel_iso_apply Modified src/set_theory/ordinal/basic.lean +/- def ordinal.enum +/- def ordinal.typein.principal_seg 2023-07-16 19:01:39 bf2428c feat(order/irreducible): Sup-irreducible elements (#18999) Define sup- and inf- irreducible and prime elements in a lattice. ESTIMATED CHANGES Modified src/data/fin/tuple/bubble_sort_induction.lean Modified src/data/fintype/card.lean - theorem finite.preorder.well_founded_gt - theorem finite.preorder.well_founded_lt Added src/order/irreducible.lean + theorem exists_inf_irred_decomposition + theorem exists_sup_irred_decomposition + theorem inf_irred.finset_inf_eq + theorem inf_irred.ne_top + def inf_irred + theorem inf_irred_iff_not_is_max + theorem inf_irred_of_dual + theorem inf_irred_to_dual + theorem inf_prime.finset_inf_le + theorem inf_prime.inf_le + theorem inf_prime.ne_top + def inf_prime + theorem inf_prime_iff_inf_irred + theorem inf_prime_iff_not_is_max + theorem inf_prime_of_dual + theorem inf_prime_to_dual + theorem is_max.not_inf_irred + theorem is_max.not_inf_prime + theorem is_min.not_sup_irred + theorem is_min.not_sup_prime + theorem not_inf_irred + theorem not_inf_irred_top + theorem not_inf_prime + theorem not_inf_prime_top + theorem not_sup_irred + theorem not_sup_irred_bot + theorem not_sup_prime + theorem not_sup_prime_bot + theorem sup_irred.finset_sup_eq + theorem sup_irred.ne_bot + theorem sup_irred.not_is_min + def sup_irred + theorem sup_irred_iff_not_is_min + theorem sup_irred_of_dual + theorem sup_irred_to_dual + theorem sup_prime.le_finset_sup + theorem sup_prime.le_sup + theorem sup_prime.ne_bot + theorem sup_prime.not_is_min + def sup_prime + theorem sup_prime_iff_not_is_min + theorem sup_prime_iff_sup_irred + theorem sup_prime_of_dual + theorem sup_prime_to_dual 2023-07-16 12:56:33 08b081e chore(*): add mathlib4 synchronization comments (#19238) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.expr` * `algebraic_geometry.morphisms.finite_type` * `algebraic_geometry.morphisms.ring_hom_properties` * `arithcc` * `canonically_ordered_comm_semiring_two_mul` * `char_p_zero_ne_char_zero` * `cyclotomic_105` * `data.matrix.auto` * `direct_sum_is_internal` * `examples.mersenne_primes` * `examples.prop_encodable` * `geometry.manifold.instances.sphere` * `girard` * `homogeneous_prime_not_prime` * `imo.imo1959_q1` * `imo.imo1960_q1` * `imo.imo1962_q1` * `imo.imo1962_q4` * `imo.imo1964_q1` * `imo.imo1969_q1` * `imo.imo1972_q5` * `imo.imo1975_q1` * `imo.imo1977_q6` * `imo.imo1981_q3` * `imo.imo1987_q1` * `imo.imo1988_q6` * `imo.imo1994_q1` * `imo.imo1998_q2` * `imo.imo2001_q2` * `imo.imo2001_q6` * `imo.imo2005_q3` * `imo.imo2005_q4` * `imo.imo2006_q3` * `imo.imo2006_q5` * `imo.imo2008_q2` * `imo.imo2008_q3` * `imo.imo2008_q4` * `imo.imo2011_q3` * `imo.imo2011_q5` * `imo.imo2013_q1` * `imo.imo2013_q5` * `imo.imo2019_q1` * `imo.imo2019_q2` * `imo.imo2019_q4` * `imo.imo2020_q2` * `imo.imo2021_q1` * `linear_order_with_pos_mul_pos_eq_zero` * `map_floor` * `miu_language.basic` * `miu_language.decision_nec` * `miu_language.decision_suf` * `oxford_invariants.2021summer.week3_p1` * `phillips` * `pseudoelement` * `quadratic_form` * `seminorm_lattice_not_distrib` * `sensitivity` * `sorgenfrey_line` * `wiedijk_100_theorems.abel_ruffini` * `wiedijk_100_theorems.area_of_a_circle` * `wiedijk_100_theorems.ascending_descending_sequences` * `wiedijk_100_theorems.ballot_problem` * `wiedijk_100_theorems.birthday_problem` * `wiedijk_100_theorems.cubing_a_cube` * `wiedijk_100_theorems.friendship_graphs` * `wiedijk_100_theorems.herons_formula` * `wiedijk_100_theorems.inverse_triangle_sum` * `wiedijk_100_theorems.konigsberg` * `wiedijk_100_theorems.partition` * `wiedijk_100_theorems.perfect_numbers` * `wiedijk_100_theorems.solution_of_cubic` * `wiedijk_100_theorems.sum_of_prime_reciprocals_diverges` * `zero_divisors_in_add_monoid_algebras` ESTIMATED CHANGES Modified archive/arithcc.lean Modified archive/examples/mersenne_primes.lean Modified archive/examples/prop_encodable.lean Modified archive/imo/imo1959_q1.lean Modified archive/imo/imo1960_q1.lean Modified archive/imo/imo1962_q1.lean Modified archive/imo/imo1962_q4.lean Modified archive/imo/imo1964_q1.lean Modified archive/imo/imo1969_q1.lean Modified archive/imo/imo1972_q5.lean Modified archive/imo/imo1975_q1.lean Modified archive/imo/imo1977_q6.lean Modified archive/imo/imo1981_q3.lean Modified archive/imo/imo1987_q1.lean Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo1994_q1.lean Modified archive/imo/imo1998_q2.lean Modified archive/imo/imo2001_q2.lean Modified archive/imo/imo2001_q6.lean Modified archive/imo/imo2005_q3.lean Modified archive/imo/imo2005_q4.lean Modified archive/imo/imo2006_q3.lean Modified archive/imo/imo2006_q5.lean Modified archive/imo/imo2008_q2.lean Modified archive/imo/imo2008_q3.lean Modified archive/imo/imo2008_q4.lean Modified archive/imo/imo2011_q3.lean Modified archive/imo/imo2011_q5.lean Modified archive/imo/imo2013_q1.lean Modified archive/imo/imo2013_q5.lean Modified archive/imo/imo2019_q1.lean Modified archive/imo/imo2019_q2.lean Modified archive/imo/imo2019_q4.lean Modified archive/imo/imo2020_q2.lean Modified archive/imo/imo2021_q1.lean Modified archive/miu_language/basic.lean Modified archive/miu_language/decision_nec.lean Modified archive/miu_language/decision_suf.lean Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified archive/sensitivity.lean Modified archive/wiedijk_100_theorems/abel_ruffini.lean Modified archive/wiedijk_100_theorems/area_of_a_circle.lean Modified archive/wiedijk_100_theorems/ascending_descending_sequences.lean Modified archive/wiedijk_100_theorems/ballot_problem.lean Modified archive/wiedijk_100_theorems/birthday_problem.lean Modified archive/wiedijk_100_theorems/cubing_a_cube.lean Modified archive/wiedijk_100_theorems/friendship_graphs.lean Modified archive/wiedijk_100_theorems/herons_formula.lean Modified archive/wiedijk_100_theorems/inverse_triangle_sum.lean Modified archive/wiedijk_100_theorems/konigsberg.lean Modified archive/wiedijk_100_theorems/partition.lean Modified archive/wiedijk_100_theorems/perfect_numbers.lean Modified archive/wiedijk_100_theorems/solution_of_cubic.lean Modified archive/wiedijk_100_theorems/sum_of_prime_reciprocals_diverges.lean Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean Modified counterexamples/char_p_zero_ne_char_zero.lean Modified counterexamples/cyclotomic_105.lean Modified counterexamples/direct_sum_is_internal.lean Modified counterexamples/girard.lean Modified counterexamples/homogeneous_prime_not_prime.lean Modified counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean Modified counterexamples/map_floor.lean Modified counterexamples/phillips.lean Modified counterexamples/pseudoelement.lean Modified counterexamples/quadratic_form.lean Modified counterexamples/seminorm_lattice_not_distrib.lean Modified counterexamples/sorgenfrey_line.lean Modified counterexamples/zero_divisors_in_add_monoid_algebras.lean Modified src/algebra/expr.lean Modified src/algebraic_geometry/morphisms/finite_type.lean Modified src/algebraic_geometry/morphisms/ring_hom_properties.lean Modified src/data/matrix/auto.lean Modified src/geometry/manifold/instances/sphere.lean 2023-07-16 09:47:04 88e6ad4 fix: handle archive and counterexamples correctly when adding port comments (#19237) ESTIMATED CHANGES Modified scripts/add_port_comments.py 2023-07-16 09:47:03 016138c fix(tactic/linarith): instantiate metavariables in linarith (#19233) This probably isn't exhaustive, but catches the really trivial case. This doesn't appear to need forward-porting. ESTIMATED CHANGES Modified src/tactic/linarith/datatypes.lean Modified src/tactic/linarith/frontend.lean Modified src/tactic/linarith/parsing.lean Modified src/tactic/linarith/preprocessing.lean Modified src/tactic/linarith/verification.lean Modified test/linarith.lean 2023-07-16 07:50:31 31b269b feat(set_theory/ordinal/natural_ops): define natural multiplication (#14324) ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean + def ordinal.blsub₂ + theorem ordinal.lt_blsub₂ Modified src/set_theory/ordinal/natural_ops.lean + theorem nat_ordinal.mul_le_nmul + theorem ordinal.add_one_nmul + theorem ordinal.le_nadd_left + theorem ordinal.le_nadd_right + theorem ordinal.le_nadd_self + theorem ordinal.le_self_nadd + theorem ordinal.lt_nmul_iff + theorem ordinal.lt_nmul_iff₃' + theorem ordinal.lt_nmul_iff₃ + theorem ordinal.nadd_eq_add + theorem ordinal.nadd_le_nadd + theorem ordinal.nadd_left_comm + theorem ordinal.nadd_lt_nadd + theorem ordinal.nadd_lt_nadd_of_le_of_lt + theorem ordinal.nadd_lt_nadd_of_lt_of_le + theorem ordinal.nadd_nmul + theorem ordinal.nadd_one_nmul + theorem ordinal.nadd_right_comm + theorem ordinal.nmul_add_one + theorem ordinal.nmul_assoc + theorem ordinal.nmul_comm + theorem ordinal.nmul_def + theorem ordinal.nmul_eq_mul + theorem ordinal.nmul_le_iff + theorem ordinal.nmul_le_iff₃' + theorem ordinal.nmul_le_iff₃ + theorem ordinal.nmul_le_nmul_of_nonneg_left + theorem ordinal.nmul_le_nmul_of_nonneg_right + theorem ordinal.nmul_lt_nmul_of_pos_left + theorem ordinal.nmul_lt_nmul_of_pos_right + theorem ordinal.nmul_nadd + theorem ordinal.nmul_nadd_le + theorem ordinal.nmul_nadd_le₃' + theorem ordinal.nmul_nadd_le₃ + theorem ordinal.nmul_nadd_lt + theorem ordinal.nmul_nadd_lt₃' + theorem ordinal.nmul_nadd_lt₃ + theorem ordinal.nmul_nadd_one + theorem ordinal.nmul_nonempty + theorem ordinal.nmul_one + theorem ordinal.nmul_succ + theorem ordinal.nmul_zero + theorem ordinal.one_nmul + theorem ordinal.succ_nmul +/- theorem ordinal.to_nat_ordinal_max +/- theorem ordinal.to_nat_ordinal_min + theorem ordinal.zero_nmul Modified src/set_theory/ordinal/principal.lean - def ordinal.blsub₂ - theorem ordinal.lt_blsub₂ 2023-07-15 12:19:30 2fe465d chore(*): add mathlib4 synchronization comments (#19231) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.big_operators.norm_num` * `algebraic_geometry.projective_spectrum.scheme` * `analysis.analytic.inverse` * `analysis.inner_product_space.of_norm` * `analysis.normed.group.SemiNormedGroup.completion` * `category_theory.monad.monadicity` * `data.buffer.parser.basic` * `data.buffer.parser.numeral` * `data.fintype.array` * `data.hash_map` * `geometry.manifold.algebra.left_invariant_derivation` * `geometry.manifold.cont_mdiff_mfderiv` * `geometry.manifold.vector_bundle.hom` * `linear_algebra.clifford_algebra.even_equiv` * `ring_theory.etale` * `ring_theory.kaehler` * `tactic.group` * `testing.slim_check.functions` ESTIMATED CHANGES Modified src/algebra/big_operators/norm_num.lean Modified src/algebraic_geometry/projective_spectrum/scheme.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/inner_product_space/of_norm.lean Modified src/analysis/normed/group/SemiNormedGroup/completion.lean Modified src/category_theory/monad/monadicity.lean Modified src/data/buffer/parser/basic.lean Modified src/data/buffer/parser/numeral.lean Modified src/data/fintype/array.lean Modified src/data/hash_map.lean Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/cont_mdiff_mfderiv.lean Modified src/geometry/manifold/vector_bundle/hom.lean Modified src/linear_algebra/clifford_algebra/even_equiv.lean Modified src/ring_theory/etale.lean Modified src/ring_theory/kaehler.lean Modified src/tactic/group.lean Modified src/testing/slim_check/functions.lean 2023-07-15 01:08:20 c1acdcc fix(tactic/norm_num): Do not allow typos in simp lemmas if they are unused (#17981) Previously ```lean import tactic.norm_num example : 1 + 1 = 2 := by norm_num [nonsense] ``` was legal. More realistically, if a lemma was added to the simp set then renamed, `norm_num [old_name]` would keep working even if the lemma no longer existed. This only seemed to happen once in mathlib, in the tests. It feels a bit silly to build the lemma set only to discard it, but we already rebuild the same lemma set on every iteration of the `repeat1` ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean Modified test/norm_num_ext.lean 2023-07-15 00:02:14 6b711d2 feat(data/matrix/auto): lemmas for arbitrary concrete matrices generated via auto_params (#15738) This adds a lemma `matrix.mul_fin` that works for arbitrary dimensions of concrete matrices indexed by `fin`. It uses a similar strategy to `category_theory.reassoc_of` to have a tactic populate wildcards in the lemma statement. For example: ```lean example {α} [add_comm_monoid α] [has_mul α] (a₁₁ a₁₂ a₂₁ a₂₂ b₁₁ b₁₂ b₂₁ b₂₂ : α) : !![a₁₁, a₁₂; a₂₁, a₂₂] ⬝ !![b₁₁, b₁₂; b₂₁, b₂₂] = !![a₁₁ * b₁₁ + a₁₂ * b₂₁, a₁₁ * b₁₂ + a₁₂ * b₂₂; a₂₁ * b₁₁ + a₂₂ * b₂₁, a₂₁ * b₁₂ + a₂₂ * b₂₂] := begin rw mul_fin, end example {α} [add_comm_monoid α] [has_mul α] (a₁₁ a₁₂ b₁₁ b₁₂ b₂₁ b₂₂ : α) : !![a₁₁, a₁₂] ⬝ !![b₁₁, b₁₂; b₂₁, b₂₂] = !![a₁₁ * b₁₁ + a₁₂ * b₂₁, a₁₁ * b₁₂ + a₁₂ * b₂₂;] := begin rw mul_fin, end ``` Relevant zulip threads: * [Explicit vector unfolding](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Explicit.20vector.20unfolding) * [concrete matrix multiplication](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/concrete.20matrix.20multiplication/near/291208624) * [A tactic for expanding matrices into coefficients](https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/A.20tactic.20for.20expanding.20matrices.20into.20coefficients) ESTIMATED CHANGES Modified scripts/lint-style.py Added src/algebra/expr.lean Added src/data/matrix/auto.lean + def fin.mmap + theorem matrix.fin_eta + theorem matrix.of_mul_of_fin + theorem matrix.of_mul_of_fin_aux Modified test/matrix_reflection.lean 2023-07-14 19:58:49 1d29de4 feat(data/*/interval): `finset.uIcc` on concrete structures (#18838) Calculate the size of `finset.uIcc` in `ℕ`, `ℤ`, `fin`, `prod`, `pi`, `multiset`, `finset`... ESTIMATED CHANGES Modified src/data/dfinsupp/interval.lean + theorem dfinsupp.card_uIcc Modified src/data/dfinsupp/multiset.lean + theorem dfinsupp.to_multiset_inf + theorem dfinsupp.to_multiset_inj + theorem dfinsupp.to_multiset_injective + theorem dfinsupp.to_multiset_le_to_multiset + theorem dfinsupp.to_multiset_lt_to_multiset + theorem dfinsupp.to_multiset_sup +/- theorem dfinsupp.to_multiset_to_dfinsupp + theorem multiset.to_dfinsupp_inj + theorem multiset.to_dfinsupp_injective + theorem multiset.to_dfinsupp_inter +/- theorem multiset.to_dfinsupp_le_to_dfinsupp + theorem multiset.to_dfinsupp_lt_to_dfinsupp + theorem multiset.to_dfinsupp_union Modified src/data/dfinsupp/order.lean + theorem dfinsupp.support_inf_union_support_sup + theorem dfinsupp.support_sup_union_support_inf Modified src/data/fin/interval.lean + theorem fin.card_fintype_uIcc + theorem fin.card_uIcc + theorem fin.coe_inf + theorem fin.coe_max + theorem fin.coe_min + theorem fin.coe_sup + theorem fin.map_subtype_embedding_uIcc + theorem fin.uIcc_eq_finset_subtype Modified src/data/finset/locally_finite.lean +/- theorem finset.mem_uIcc_of_ge +/- theorem finset.mem_uIcc_of_le +/- theorem finset.uIcc_subset_uIcc_iff_le' +/- theorem finset.uIcc_subset_uIcc_left +/- theorem finset.uIcc_subset_uIcc_right Modified src/data/finsupp/interval.lean + theorem finsupp.card_uIcc Modified src/data/finsupp/order.lean + theorem finsupp.support_inf_union_support_sup + theorem finsupp.support_sup_union_support_inf Modified src/data/int/interval.lean +/- theorem int.card_Icc +/- theorem int.card_Ico +/- theorem int.card_Ioc +/- theorem int.card_Ioo + theorem int.card_fintype_uIcc + theorem int.card_uIcc + theorem int.uIcc_eq_finset_map Modified src/data/multiset/interval.lean + theorem multiset.card_uIcc + theorem multiset.uIcc_eq Modified src/data/nat/interval.lean + theorem nat.card_uIcc + theorem nat.uIcc_eq_range' Modified src/data/pi/interval.lean +/- theorem pi.card_Ici +/- theorem pi.card_Ico +/- theorem pi.card_Iio +/- theorem pi.card_Ioc +/- theorem pi.card_Ioi +/- theorem pi.card_Ioo + theorem pi.card_uIcc + theorem pi.uIcc_eq Modified src/data/pnat/interval.lean + theorem pnat.card_fintype_uIcc + theorem pnat.card_uIcc +/- theorem pnat.map_subtype_embedding_Icc +/- theorem pnat.map_subtype_embedding_Ico +/- theorem pnat.map_subtype_embedding_Ioc +/- theorem pnat.map_subtype_embedding_Ioo + theorem pnat.map_subtype_embedding_uIcc + theorem pnat.uIcc_eq_finset_subtype Modified src/order/locally_finite.lean + theorem set.finite_interval 2023-07-14 19:58:48 2c84c2c feat(order/well_founded_set): `prod.lex` is well-founded (#18665) ESTIMATED CHANGES Modified src/order/well_founded.lean + theorem well_founded.mono + theorem well_founded.on_fun Modified src/order/well_founded_set.lean + theorem set.well_founded_on.mono' + theorem set.well_founded_on.prod_lex_of_well_founded_on_fiber + theorem set.well_founded_on.sigma_lex_of_well_founded_on_fiber + theorem set.well_founded_on_image + theorem set.well_founded_on_range + theorem set.well_founded_on_univ + theorem well_founded.prod_lex_of_well_founded_on_fiber + theorem well_founded.sigma_lex_of_well_founded_on_fiber + theorem well_founded.well_founded_on 2023-07-14 16:30:09 d07245f feat(group_theory/order_of_element): Order in `α × β` (#18719) The order of `(a, b)` is the lcm of the orders of `a` and `b`. Match `pow` and `zpow` lemmas. Also some `variables` noise because I could not use `x` to mean what I wanted, and incidentally the type `A` was mostly unused. ESTIMATED CHANGES Modified src/data/prod/basic.lean +/- theorem prod.map_id Modified src/dynamics/periodic_pts.lean + theorem function.is_fixed_pt_prod_map + theorem function.is_periodic_pt_prod_map + theorem function.iterate_prod_map + theorem function.minimal_period_fst_dvd + theorem function.minimal_period_prod_map + theorem function.minimal_period_snd_dvd Modified src/group_theory/order_of_element.lean + theorem injective_zpow_iff_not_is_of_fin_order + theorem is_of_fin_order.fst + theorem is_of_fin_order.mono + theorem is_of_fin_order.prod_mk + theorem is_of_fin_order.snd +/- theorem monoid_hom.is_of_fin_order + theorem order_of_fst_dvd_order_of + theorem order_of_snd_dvd_order_of + theorem zpow_eq_one_iff_modeq + theorem zpow_eq_zpow_iff_modeq 2023-07-13 13:57:44 d608fc5 feat(analysis/calculus/fderiv/mul): derivative of inverse in division rings (#19127) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv/mul.lean + theorem differentiable.inv' + theorem differentiable.inverse + theorem differentiable_at.inv' + theorem differentiable_at.inverse + theorem differentiable_at_inv' +/- theorem differentiable_at_inverse + theorem differentiable_on.inv' + theorem differentiable_on.inverse + theorem differentiable_on_inv' + theorem differentiable_on_inverse + theorem differentiable_within_at.inv' + theorem differentiable_within_at.inverse + theorem differentiable_within_at_inv' + theorem differentiable_within_at_inverse + theorem fderiv_inv' + theorem fderiv_within_inv' + theorem has_fderiv_at_inv' Modified src/analysis/normed_space/spectrum.lean 2023-07-13 10:41:08 cd39118 feat(*/prod): `prod_prod_prod` equivs (#19235) These send `((a, b), (c, d))` to `((a, c), (b, d))`, and this commit provides this bundled as `equiv`, `add_equiv`, `mul_equiv`, `ring_equiv`, and `linear_equiv`. We already have something analogous for `tensor_product`. ESTIMATED CHANGES Modified src/algebra/group/prod.lean + def mul_equiv.prod_prod_prod_comm + theorem mul_equiv.prod_prod_prod_comm_symm + theorem mul_equiv.prod_prod_prod_comm_to_equiv Modified src/algebra/ring/prod.lean + def ring_equiv.prod_prod_prod_comm + theorem ring_equiv.prod_prod_prod_comm_symm + theorem ring_equiv.prod_prod_prod_comm_to_add_equiv + theorem ring_equiv.prod_prod_prod_comm_to_equiv + theorem ring_equiv.prod_prod_prod_comm_to_mul_equiv Modified src/linear_algebra/prod.lean + def linear_equiv.prod_prod_prod_comm + theorem linear_equiv.prod_prod_prod_comm_symm + theorem linear_equiv.prod_prod_prod_comm_to_add_equiv Modified src/logic/equiv/basic.lean + def equiv.prod_prod_prod_comm + theorem equiv.prod_prod_prod_comm_symm 2023-07-12 21:38:36 baa8830 feat(analysis/inner_product_space/of_norm): Create an inner product from a norm (#4798) A normed space respecting the polarization identity is an inner product space. ESTIMATED CHANGES Modified docs/references.bib Added src/analysis/inner_product_space/of_norm.lean + theorem inner_product_space.to_inner_product_spaceable + theorem inner_product_spaceable.add_left + theorem inner_product_spaceable.continuous.inner_ + theorem inner_product_spaceable.inner_.conj_symm + theorem inner_product_spaceable.inner_.norm_sq + theorem inner_product_spaceable.inner_prop + theorem inner_product_spaceable.inner_prop_neg_one + theorem inner_product_spaceable.nat + theorem nonempty_inner_product_space Modified src/data/is_R_or_C/basic.lean + theorem is_R_or_C.norm_I_of_ne_zero 2023-07-12 18:27:44 b01d6eb fix(control/traversable/derive): the `functor` deriving handler makes weird definitions for inductive types which have recursive arguments separated by a non-recursive argument (#19228) I found this bug during the porting. The current deriving handler doesn't work for this. ```lean @[derive [traversable,is_lawful_traversable]] inductive my_tree' (α : Type) | leaf : my_tree' | node : my_tree' → α → my_tree' → my_tree' ``` This is because the `functor` deriving handler makes weird definitions for inductive types which have recursive arguments separated by a non-recursive argument. Fortunatelly, the cause of this bug is just a mistake of the argument in `control.traversable.derive`. ESTIMATED CHANGES Modified src/control/traversable/derive.lean Modified test/traversable.lean + inductive my_tree' 2023-07-12 18:27:42 41bef4a feat(analysis/normed/group/basic): norm lemmas for lipschitz and antilipschitz (#19103) This also corrects some nonsense names produced by to_additive. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv/basic.lean Modified src/analysis/normed/group/basic.lean + theorem antilipschitz_with.le_mul_nnnorm' + theorem antilipschitz_with.le_mul_norm' +/- theorem antilipschitz_with.le_mul_norm_div + theorem dist_le_norm_add_norm' - theorem dist_le_norm_mul_norm + theorem lipschitz_with.nnorm_le_mul' + theorem lipschitz_with.norm_le_mul' - theorem monoid_hom_class.bound_of_antilipschitz + theorem one_hom_class.bound_of_antilipschitz Modified src/analysis/normed_space/continuous_linear_map.lean 2023-07-12 15:28:32 d3b54a9 fix(tactic/interval_cases): instantiate metavars (#19232) The test included in this commit fails without this change. This does not need forward-porting, the test already passes in Lean 4. ESTIMATED CHANGES Modified src/tactic/interval_cases.lean Modified test/interval_cases.lean 2023-07-12 15:28:31 d9e96a3 feat(data/list/dedup): Lemmas about `list.dedup` (#19142) Basic lemmas about `dedup` applied with `cons`, `nil`, `head`, and `tail`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem list.to_finset_nonempty_iff + theorem multiset.to_finset_nonempty Modified src/data/list/dedup.lean + theorem list.dedup_eq_cons + theorem list.dedup_eq_nil + theorem list.head_dedup + theorem list.tail_dedup 2023-07-12 15:28:30 92bd7b1 feat(analysis/convex): convexity of n-ary sums (#18943) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem coe_convex_add_submonoid + def convex_add_submonoid + theorem convex_list_sum + theorem convex_multiset_sum + theorem convex_sum + theorem convex_zero + theorem mem_convex_add_submonoid Modified src/analysis/convex/combination.lean + def convex_hull_add_monoid_hom + theorem convex_hull_list_sum + theorem convex_hull_multiset_sum + theorem convex_hull_sum Modified src/analysis/convex/hull.lean + theorem convex_hull_zero Modified src/measure_theory/measure/haar/of_basis.lean 2023-07-12 12:15:34 3a2b552 feat(data/fin/basic): extra instances that cover `fin 0` (#18970) These apply to `fin 0`, unlike the `comm_ring` instance which needs `ne_zero n`. ESTIMATED CHANGES Modified src/data/fin/basic.lean Modified src/data/zmod/defs.lean 2023-07-11 15:46:03 4e24c4b feat(data/set/intervals/proj_Icc): Extending from `Ici a` (#18795) Define the `Ici` and `Iic` versions of `set.proj_Icc`/`set.Icc_extend`. Slightly reorder the lemmas to allow better overall structure. This is useful for extending convex functions by a junk value. ESTIMATED CHANGES Modified src/data/set/intervals/proj_Icc.lean - theorem monotone.Icc_extend + theorem set.Icc_extend_apply + def set.Ici_extend + theorem set.Ici_extend_apply + theorem set.Ici_extend_coe + theorem set.Ici_extend_of_le + theorem set.Ici_extend_of_mem + theorem set.Ici_extend_self + def set.Iic_extend + theorem set.Iic_extend_apply + theorem set.Iic_extend_coe + theorem set.Iic_extend_of_le + theorem set.Iic_extend_of_mem + theorem set.Iic_extend_self + theorem set.coe_proj_Icc + theorem set.coe_proj_Ici + theorem set.coe_proj_Iic + theorem set.monotone_proj_Ici + theorem set.monotone_proj_Iic +/- theorem set.proj_Icc_surjective + def set.proj_Ici + theorem set.proj_Ici_coe + theorem set.proj_Ici_eq_self + theorem set.proj_Ici_of_le + theorem set.proj_Ici_of_mem + theorem set.proj_Ici_self + theorem set.proj_Ici_surj_on + theorem set.proj_Ici_surjective + def set.proj_Iic + theorem set.proj_Iic_coe + theorem set.proj_Iic_eq_self + theorem set.proj_Iic_of_le + theorem set.proj_Iic_of_mem + theorem set.proj_Iic_self + theorem set.proj_Iic_surj_on + theorem set.proj_Iic_surjective + theorem set.range_Ici_extend + theorem set.range_Iic_extend +/- theorem set.range_proj_Icc + theorem set.range_proj_Ici + theorem set.range_proj_Iic + theorem set.strict_mono_on_proj_Ici + theorem set.strict_mono_on_proj_Iic + theorem strict_mono.strict_mono_on_Ici_extend + theorem strict_mono.strict_mono_on_Iic_extend 2023-07-11 12:40:14 3ed3f98 feat(data/nat/order/basic): `a + b - 1 ≤ a * b` (#18737) and golf `max_eq_zero_iff`/`min_eq_zero_iff` To be used for Kneser's addition theorem. ESTIMATED CHANGES Modified src/data/nat/order/basic.lean + theorem nat.add_sub_one_le_mul +/- theorem nat.max_eq_zero_iff +/- theorem nat.min_eq_zero_iff 2023-07-11 12:40:13 bd365b1 feat(group_theory/sylow): add inverse to card_eq_multiplicity (#18300) The lemma `card_eq_multiplicity` states that a Sylow group of a finite group has cardinality p^n, where n is the multiplicity of p in the group order. This PR adds an inverse definition `card_eq_multiplicity_to_sylow`, promoting a subgroup of the right cardinality to a Sylow group, and a simplification lemma `coe_card_eq_multiplicity_to_sylow` for the coercion of the resulting Sylow group back to a subgroup. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.coe_of_card + def sylow.of_card 2023-07-08 12:34:58 1a51edf chore(*): add mathlib4 synchronization comments (#19229) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Algebra.basic` * `algebra.category.Algebra.limits` * `algebra.category.Module.change_of_rings` * `algebra.module.pid` * `algebraic_geometry.elliptic_curve.point` * `algebraic_geometry.morphisms.quasi_compact` * `algebraic_geometry.morphisms.quasi_separated` * `algebraic_geometry.projective_spectrum.structure_sheaf` * `algebraic_topology.fundamental_groupoid.induced_maps` * `algebraic_topology.fundamental_groupoid.product` * `algebraic_topology.fundamental_groupoid.simply_connected` * `analysis.normed.group.SemiNormedGroup.kernels` * `category_theory.adjunction.lifting` * `category_theory.monoidal.internal.Module` * `data.qpf.multivariate.constructions.cofix` * `geometry.manifold.diffeomorph` * `geometry.manifold.vector_bundle.smooth_section` * `geometry.manifold.whitney_embedding` * `group_theory.finite_abelian` * `linear_algebra.clifford_algebra.contraction` * `linear_algebra.exterior_algebra.grading` * `linear_algebra.matrix.schur_complement` * `linear_algebra.tensor_algebra.to_tensor_power` * `model_theory.direct_limit` * `model_theory.fraisse` * `number_theory.modular_forms.basic` * `representation_theory.character` * `representation_theory.group_cohomology.basic` * `ring_theory.jacobson` * `ring_theory.nullstellensatz` * `topology.metric_space.gromov_hausdorff` * `topology.vector_bundle.hom` ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/category/Algebra/limits.lean Modified src/algebra/category/Module/change_of_rings.lean Modified src/algebra/module/pid.lean Modified src/algebraic_geometry/elliptic_curve/point.lean Modified src/algebraic_geometry/morphisms/quasi_compact.lean Modified src/algebraic_geometry/morphisms/quasi_separated.lean Modified src/algebraic_geometry/projective_spectrum/structure_sheaf.lean Modified src/algebraic_topology/fundamental_groupoid/induced_maps.lean Modified src/algebraic_topology/fundamental_groupoid/product.lean Modified src/algebraic_topology/fundamental_groupoid/simply_connected.lean Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/vector_bundle/smooth_section.lean Modified src/geometry/manifold/whitney_embedding.lean Modified src/group_theory/finite_abelian.lean Modified src/linear_algebra/clifford_algebra/contraction.lean Modified src/linear_algebra/exterior_algebra/grading.lean Modified src/linear_algebra/matrix/schur_complement.lean Modified src/linear_algebra/tensor_algebra/to_tensor_power.lean Modified src/model_theory/direct_limit.lean Modified src/model_theory/fraisse.lean Modified src/number_theory/modular_forms/basic.lean Modified src/representation_theory/character.lean Modified src/representation_theory/group_cohomology/basic.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/nullstellensatz.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/vector_bundle/hom.lean 2023-07-06 13:05:39 8905e5e feat(topology/algebra/module/strong_topology): golf `arrow_congrSL` introduced in #19107 (#19128) I added more general definitions `precomp` and `postcomp` for expressing that (pre/post)-composing by a *fixed* continuous linear maps is continuous. These were planned about a year ago when I defined the strong topology and follow from [uniform_on_fun.precomp_uniform_continuous](https://leanprover-community.github.io/mathlib_docs/topology/uniform_space/uniform_convergence_topology.html#uniform_on_fun.precomp_uniform_continuous) and [uniform_on_fun.postcomp_uniform_continuous](https://leanprover-community.github.io/mathlib_docs/topology/uniform_space/uniform_convergence_topology.html#uniform_on_fun.postcomp_uniform_continuous). The proof of continuity of `arrow_congrSL` is a direct consequence of these, so we don't have to do it by hand. This is not really a "golf" since I added more lines than I removed, but these more general constructions will be needed at some point anyway (my use case was distribution theory) so I'm doing some proactive golfing :smile:. ESTIMATED CHANGES Modified src/analysis/convolution.lean Modified src/geometry/manifold/vector_bundle/hom.lean Modified src/topology/algebra/module/strong_topology.lean - def continuous_linear_equiv.arrow_congrₛₗ - theorem continuous_linear_equiv.arrow_congrₛₗ_continuous + def continuous_linear_map.postcomp + def continuous_linear_map.precomp Modified src/topology/vector_bundle/hom.lean 2023-07-04 07:03:10 5dc6092 chore(topology/sheaves): revert universe generalizations from #19153 (#19230) This reverts commit 13361559d66b84f80b6d5a1c4a26aa5054766725. These are just too difficult to forward port as is because of the `max u v =?= max u ?v` issue https://github.com/leanprover/lean4/issues/2297. We have another candidate approach to this, using a new `UnivLE` typeclass, and I would prefer if we investigated that without the pressure of the port at the same time. This will delay @hrmacbeth's plans to define meromorphic functions, perhaps. ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/quasi_compact.lean +/- theorem algebraic_geometry.exists_pow_mul_eq_zero_of_res_basic_open_eq_zero_of_is_compact Modified src/algebraic_geometry/morphisms/quasi_separated.lean +/- theorem algebraic_geometry.exists_eq_pow_mul_of_is_compact_of_is_quasi_separated Modified src/algebraic_geometry/ringed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/category_theory/limits/shapes/types.lean - theorem category_theory.limits.types.pi_lift_π_apply' - theorem category_theory.limits.types.pi_map_π_apply' +/- theorem category_theory.limits.types.pi_map_π_apply Modified src/topology/sheaves/forget.lean +/- def Top.presheaf.sheaf_condition.map_cone_fork Modified src/topology/sheaves/local_predicate.lean +/- def Top.continuous_prelocal +/- def Top.stalk_to_fiber +/- theorem Top.stalk_to_fiber_germ +/- theorem Top.stalk_to_fiber_injective +/- theorem Top.stalk_to_fiber_surjective +/- def Top.subpresheaf_to_Types +/- def Top.subsheaf_to_Types Modified src/topology/sheaves/presheaf.lean +/- def Top.presheaf.pullback +/- def Top.presheaf.pullback_hom_iso_pushforward_inv +/- def Top.presheaf.pullback_inv_iso_pushforward_hom +/- def Top.presheaf.pullback_map +/- def Top.presheaf.pullback_obj +/- def Top.presheaf.pullback_obj_obj_of_image_open +/- def Top.presheaf.pushforward_pullback_adjunction Modified src/topology/sheaves/presheaf_of_functions.lean +/- def Top.presheaf_to_Type +/- def Top.presheaf_to_Types Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheaf_of_functions.lean +/- def Top.sheaf_to_Type +/- def Top.sheaf_to_Types Modified src/topology/sheaves/stalks.lean 2023-07-03 06:18:05 728ef9d chore(*): add mathlib4 synchronization comments (#19226) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Mon.adjunctions` * `algebra.category.Semigroup.basic` * `algebraic_geometry.function_field` * `algebraic_geometry.morphisms.basic` * `algebraic_geometry.morphisms.open_immersion` * `algebraic_geometry.morphisms.universally_closed` * `analysis.complex.upper_half_plane.manifold` * `analysis.convex.cone.proper` * `category_theory.limits.constructions.over.basic` * `geometry.manifold.algebra.smooth_functions` * `geometry.manifold.derivation_bundle` * `number_theory.modular_forms.jacobi_theta.manifold` * `representation_theory.fdRep` * `representation_theory.invariants` * `ring_theory.witt_vector.isocrystal` * `set_theory.game.domineering` * `set_theory.game.short` * `set_theory.game.state` * `topology.homotopy.product` ESTIMATED CHANGES Modified src/algebra/category/Mon/adjunctions.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/algebraic_geometry/function_field.lean Modified src/algebraic_geometry/morphisms/basic.lean Modified src/algebraic_geometry/morphisms/open_immersion.lean Modified src/algebraic_geometry/morphisms/universally_closed.lean Modified src/analysis/complex/upper_half_plane/manifold.lean Modified src/analysis/convex/cone/proper.lean Modified src/category_theory/limits/constructions/over/basic.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/number_theory/modular_forms/jacobi_theta/manifold.lean Modified src/representation_theory/fdRep.lean Modified src/representation_theory/invariants.lean Modified src/ring_theory/witt_vector/isocrystal.lean Modified src/set_theory/game/domineering.lean Modified src/set_theory/game/short.lean Modified src/set_theory/game/state.lean Modified src/topology/homotopy/product.lean 2023-07-02 14:35:26 e473c31 refactor: redefine `bundle.total_space` (#19221) - Use a custom structure for `bundle.total_space`. - Use `bundle.total_space.mk` instead of `bundle.total_space_mk`. - Use `bundle.total_space.to_prod` instead of `equiv.sigma_equiv_prod`. - Use `bundle.total_space.mk'` (scoped notation) to specify `F`. - Rename `bundle.trivial.proj_snd` to `bundle.total_space.trivial_snd` to allow dot notation. Should we just use `bundle.total_space.snd` since `bundle.trivial` is now reducible? - Add an unused argument to `bundle.total_space`. - Make `bundle.trivial` and `bundle.continuous_linear_map` reducible. - Drop instances that are no longer needed. ESTIMATED CHANGES Modified src/data/bundle.lean - theorem bundle.coe_fst - theorem bundle.coe_snd +/- theorem bundle.coe_snd_map_apply +/- theorem bundle.coe_snd_map_smul +/- def bundle.pullback.lift +/- theorem bundle.pullback.lift_mk - theorem bundle.pullback.proj_lift +/- def bundle.pullback - theorem bundle.pullback_total_space_embedding_snd - theorem bundle.sigma_mk_eq_total_space_mk - theorem bundle.to_total_space_coe + theorem bundle.total_space.coe_eq_mk + theorem bundle.total_space.coe_proj + theorem bundle.total_space.coe_snd +/- theorem bundle.total_space.eta - def bundle.total_space.proj - theorem bundle.total_space.proj_mk + def bundle.total_space.to_prod + def bundle.total_space.trivial_snd + structure bundle.total_space - def bundle.total_space - def bundle.total_space_mk - def bundle.trivial.proj_snd +/- def bundle.trivial Modified src/geometry/manifold/cont_mdiff_mfderiv.lean Modified src/geometry/manifold/mfderiv.lean - theorem tangent_map_fst - theorem tangent_map_within_fst Modified src/geometry/manifold/vector_bundle/basic.lean +/- theorem bundle.cont_mdiff_at_proj +/- theorem bundle.cont_mdiff_at_total_space +/- theorem bundle.cont_mdiff_on_proj +/- theorem bundle.cont_mdiff_proj +/- theorem bundle.cont_mdiff_within_at_total_space +/- theorem bundle.smooth_at_proj +/- theorem bundle.smooth_on_proj +/- theorem bundle.smooth_proj +/- theorem bundle.smooth_zero_section +/- theorem fiber_bundle.charted_space_chart_at +/- theorem fiber_bundle.charted_space_chart_at_symm_fst Modified src/geometry/manifold/vector_bundle/hom.lean Modified src/geometry/manifold/vector_bundle/pullback.lean Modified src/geometry/manifold/vector_bundle/smooth_section.lean Modified src/geometry/manifold/vector_bundle/tangent.lean +/- def tangent_bundle Modified src/topology/covering.lean Modified src/topology/fiber_bundle/basic.lean +/- theorem fiber_bundle.continuous_at_total_space +/- theorem fiber_bundle.continuous_proj +/- theorem fiber_bundle.continuous_total_space_mk +/- theorem fiber_bundle.continuous_within_at_total_space +/- theorem fiber_bundle.is_open_map_proj +/- theorem fiber_bundle.map_proj_nhds +/- theorem fiber_bundle.mem_trivialization_at_proj_source +/- theorem fiber_bundle.quotient_map_proj +/- theorem fiber_bundle.surjective_proj +/- theorem fiber_bundle.trivialization_at_proj_fst +/- def fiber_bundle_core.local_triv_at +/- def fiber_bundle_core.total_space +/- theorem fiber_prebundle.continuous_on_of_comp_right +/- theorem fiber_prebundle.continuous_proj +/- theorem fiber_prebundle.is_open_source +/- theorem fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter +/- def fiber_prebundle.total_space_topology Modified src/topology/fiber_bundle/constructions.lean +/- theorem bundle.trivial.eq_trivialization +/- def bundle.trivial.trivialization +/- theorem pullback.continuous_lift +/- theorem pullback.continuous_proj +/- def pullback_topology +/- theorem trivialization.prod.continuous_to_fun +/- theorem trivialization.prod.left_inv +/- def trivialization.prod.to_fun' +/- theorem trivialization.prod_symm_apply Modified src/topology/fiber_bundle/trivialization.lean +/- theorem pretrivialization.apply_mk_symm +/- theorem pretrivialization.coe_mem_source +/- theorem pretrivialization.coe_symm_of_not_mem +/- theorem pretrivialization.mk_symm +/- theorem pretrivialization.symm_apply +/- theorem pretrivialization.symm_apply_apply_mk +/- theorem pretrivialization.symm_apply_of_not_mem +/- theorem pretrivialization.symm_coe_proj +/- theorem pretrivialization.symm_proj_apply +/- theorem trivialization.apply_mk_symm +/- theorem trivialization.continuous_on_symm +/- theorem trivialization.mk_symm +/- theorem trivialization.symm_apply +/- theorem trivialization.symm_apply_apply +/- theorem trivialization.symm_apply_apply_mk +/- theorem trivialization.symm_apply_of_not_mem +/- theorem trivialization.symm_proj_apply Modified src/topology/vector_bundle/basic.lean +/- def bundle.zero_section +/- theorem bundle.zero_section_proj +/- theorem bundle.zero_section_snd +/- theorem continuous_on_coord_change +/- theorem pretrivialization.coe_linear_map_at +/- theorem pretrivialization.coe_linear_map_at_of_mem +/- def pretrivialization.linear_equiv_at +/- theorem pretrivialization.linear_map_at_apply +/- theorem pretrivialization.linear_map_at_def_of_mem +/- theorem pretrivialization.linear_map_at_def_of_not_mem +/- theorem pretrivialization.linear_map_at_eq_zero +/- theorem pretrivialization.linear_map_at_symmₗ +/- theorem pretrivialization.symmₗ_linear_map_at +/- theorem trivialization.apply_eq_prod_continuous_linear_equiv_at +/- theorem trivialization.apply_symm_apply_eq_coord_changeL +/- theorem trivialization.coe_continuous_linear_equiv_at_eq +/- theorem trivialization.coe_coord_changeL' +/- theorem trivialization.coe_coord_changeL +/- theorem trivialization.coe_linear_map_at +/- theorem trivialization.coe_linear_map_at_of_mem +/- theorem trivialization.coe_symmₗ +/- theorem trivialization.comp_continuous_linear_equiv_at_eq_coord_change +/- def trivialization.continuous_linear_equiv_at +/- theorem trivialization.continuous_linear_equiv_at_apply' +/- def trivialization.continuous_linear_map_at +/- theorem trivialization.continuous_linear_map_at_symmL +/- def trivialization.coord_changeL +/- theorem trivialization.coord_changeL_apply' +/- theorem trivialization.coord_changeL_apply +/- theorem trivialization.coord_changeL_symm_apply +/- def trivialization.linear_equiv_at +/- theorem trivialization.linear_equiv_at_apply +/- theorem trivialization.linear_equiv_at_symm_apply +/- theorem trivialization.linear_map_at_apply +/- theorem trivialization.linear_map_at_def_of_mem +/- theorem trivialization.linear_map_at_def_of_not_mem +/- theorem trivialization.linear_map_at_symmₗ +/- theorem trivialization.mk_coord_changeL +/- def trivialization.symmL +/- theorem trivialization.symmL_continuous_linear_map_at +/- theorem trivialization.symm_apply_eq_mk_continuous_linear_equiv_at_symm +/- theorem trivialization.symm_continuous_linear_equiv_at_eq +/- theorem trivialization.symm_coord_changeL +/- theorem trivialization.symmₗ_linear_map_at +/- def vector_bundle_core.local_triv +/- def vector_bundle_core.local_triv_at Modified src/topology/vector_bundle/constructions.lean +/- theorem trivialization.continuous_linear_equiv_at_prod Modified src/topology/vector_bundle/hom.lean 2023-07-02 06:51:23 a176cb1 feat(linear_algebra/matrix/schur_complement): invertibility of block matrices (#19156) ESTIMATED CHANGES Modified src/category_theory/preadditive/biproducts.lean Modified src/linear_algebra/matrix/schur_complement.lean + def matrix.from_blocks₁₁_invertible + def matrix.from_blocks₂₂_invertible + theorem matrix.inv_of_from_blocks₁₁_eq + theorem matrix.inv_of_from_blocks₂₂_eq + def matrix.invertible_equiv_from_blocks₁₁_invertible + def matrix.invertible_equiv_from_blocks₂₂_invertible + def matrix.invertible_of_from_blocks₁₁_invertible + def matrix.invertible_of_from_blocks₂₂_invertible + theorem matrix.is_unit_from_blocks_iff_of_invertible₁₁ + theorem matrix.is_unit_from_blocks_iff_of_invertible₂₂ 2023-07-01 04:27:34 44b3f42 chore(scripts): update nolints.txt (#19227) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2023-06-30 15:09:19 d0b1936 chore(*): add mathlib4 synchronization comments (#19220) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.fgModule.limits` * `algebra.homology.differential_object` * `algebraic_geometry.AffineScheme` * `algebraic_geometry.gluing` * `algebraic_geometry.limits` * `algebraic_geometry.properties` * `algebraic_geometry.pullbacks` * `linear_algebra.clifford_algebra.even` * `number_theory.legendre_symbol.norm_num` * `number_theory.zeta_function` * `order.category.omega_complete_partial_order` * `ring_theory.witt_vector.frobenius_fraction_field` * `set_theory.game.nim` * `set_theory.surreal.dyadic` * `topology.sheaves.skyscraper` ESTIMATED CHANGES Modified src/algebra/category/fgModule/limits.lean Modified src/algebra/homology/differential_object.lean Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/gluing.lean Modified src/algebraic_geometry/limits.lean Modified src/algebraic_geometry/properties.lean Modified src/algebraic_geometry/pullbacks.lean Modified src/linear_algebra/clifford_algebra/even.lean Modified src/number_theory/legendre_symbol/norm_num.lean Modified src/number_theory/zeta_function.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/ring_theory/witt_vector/frobenius_fraction_field.lean Modified src/set_theory/game/nim.lean Modified src/set_theory/surreal/dyadic.lean Modified src/topology/sheaves/skyscraper.lean 2023-06-30 11:29:36 48fb5b5 refactor(*): move all `mk_simp_attribute` commands to 1 file (#19223) ESTIMATED CHANGES Modified src/algebra/group/defs.lean Modified src/control/basic.lean Modified src/control/monad/basic.lean Modified src/data/is_R_or_C/basic.lean Modified src/data/nat/parity.lean Modified src/data/prod/basic.lean +/- theorem prod.map_mk Modified src/data/set/basic.lean +/- theorem set.inter_subset_left +/- theorem set.inter_univ +/- theorem set.mem_inter_iff +/- theorem set.mem_univ +/- theorem set.univ_inter Modified src/data/set/image.lean +/- theorem set.image_eq_empty +/- theorem set.mem_preimage +/- theorem set.mem_range_self +/- theorem set.preimage_id +/- theorem set.preimage_inter +/- theorem set.preimage_univ +/- theorem set.range_id Modified src/data/set/prod.lean +/- theorem set.mem_prod +/- theorem set.prod_mk_mem_set_prod_eq +/- theorem set.range_prod_map +/- theorem set.univ_prod_univ Modified src/data/subtype.lean +/- theorem subtype.coe_mk Modified src/data/typevec.lean Modified src/logic/basic.lean +/- theorem and_imp +/- theorem eq_iff_true_of_subsingleton +/- theorem forall_const +/- theorem heq_iff_eq Modified src/logic/equiv/defs.lean +/- theorem equiv.apply_symm_apply +/- def equiv.sigma_equiv_prod +/- theorem equiv.symm_apply_apply +/- theorem equiv.symm_symm Modified src/logic/equiv/local_equiv.lean Modified src/logic/nontrivial.lean Modified src/measure_theory/integral/bochner.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/tactic/core.lean Modified src/tactic/equiv_rw.lean Added src/tactic/mk_simp_attribute.lean Modified src/tactic/norm_cast.lean Modified src/tactic/split_ifs.lean Modified src/tactic/transport.lean Modified test/equiv_rw.lean 2023-06-30 04:04:12 311ef8c chore(category_theory/concrete_category): reorder universes (#19222) These will make life slightly easier dealing with our universe problems. Most of these changes have in fact already been made in mathlib4, and the remainder are in https://github.com/leanprover-community/mathlib4/pull/5605. ESTIMATED CHANGES Modified src/category_theory/concrete_category/basic.lean +/- def category_theory.concrete_category.has_coe_to_sort +/- def category_theory.forget +/- def category_theory.forget₂ +/- def category_theory.has_forget_to_Type +/- def category_theory.has_forget₂.mk' 2023-06-29 14:58:24 9240e8b chore(*): add mathlib4 synchronization comments (#19218) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_geometry.elliptic_curve.weierstrass` * `analysis.complex.upper_half_plane.basic` * `analysis.complex.upper_half_plane.functions_bounded_at_infty` * `analysis.complex.upper_half_plane.metric` * `analysis.complex.upper_half_plane.topology` * `analysis.fourier.riemann_lebesgue_lemma` * `analysis.inner_product_space.linear_pmap` * `analysis.special_functions.gamma.beta` * `category_theory.closed.ideal` * `category_theory.monad.equiv_mon` * `control.random` * `geometry.euclidean.monge_point` * `geometry.manifold.complex` * `geometry.manifold.partition_of_unity` * `logic.equiv.array` * `number_theory.legendre_symbol.jacobi_symbol` * `number_theory.modular` * `number_theory.modular_forms.jacobi_theta.basic` * `number_theory.modular_forms.slash_actions` * `number_theory.modular_forms.slash_invariant_forms` * `ring_theory.witt_vector.compare` * `ring_theory.witt_vector.discrete_valuation_ring` * `ring_theory.witt_vector.domain` * `ring_theory.witt_vector.frobenius` * `ring_theory.witt_vector.identities` * `ring_theory.witt_vector.init_tail` * `ring_theory.witt_vector.mul_coeff` * `ring_theory.witt_vector.truncated` * `ring_theory.witt_vector.verschiebung` * `set_theory.game.birthday` * `set_theory.game.impartial` * `set_theory.surreal.basic` * `testing.slim_check.gen` * `testing.slim_check.sampleable` * `testing.slim_check.testable` ESTIMATED CHANGES Modified src/algebraic_geometry/elliptic_curve/weierstrass.lean Modified src/analysis/complex/upper_half_plane/basic.lean Modified src/analysis/complex/upper_half_plane/functions_bounded_at_infty.lean Modified src/analysis/complex/upper_half_plane/metric.lean Modified src/analysis/complex/upper_half_plane/topology.lean Modified src/analysis/fourier/riemann_lebesgue_lemma.lean Modified src/analysis/inner_product_space/linear_pmap.lean Modified src/analysis/special_functions/gamma/beta.lean Modified src/category_theory/closed/ideal.lean Modified src/category_theory/monad/equiv_mon.lean Modified src/control/random.lean Modified src/geometry/euclidean/monge_point.lean Modified src/geometry/manifold/complex.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/logic/equiv/array.lean Modified src/number_theory/legendre_symbol/jacobi_symbol.lean Modified src/number_theory/modular.lean Modified src/number_theory/modular_forms/jacobi_theta/basic.lean Modified src/number_theory/modular_forms/slash_actions.lean Modified src/number_theory/modular_forms/slash_invariant_forms.lean Modified src/ring_theory/witt_vector/compare.lean Modified src/ring_theory/witt_vector/discrete_valuation_ring.lean Modified src/ring_theory/witt_vector/domain.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/identities.lean Modified src/ring_theory/witt_vector/init_tail.lean Modified src/ring_theory/witt_vector/mul_coeff.lean Modified src/ring_theory/witt_vector/truncated.lean Modified src/ring_theory/witt_vector/verschiebung.lean Modified src/set_theory/game/birthday.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/surreal/basic.lean Modified src/testing/slim_check/gen.lean Modified src/testing/slim_check/sampleable.lean Modified src/testing/slim_check/testable.lean 2023-06-29 07:01:52 147b294 feat(analysis/convex/cone/proper): add hyperplane_separation and comap (#19008) We add the theorem `hyperplane_separation` which is a relative version of [convex_cone.hyperplane_separation_of_nonempty_of_is_closed_of_nmem](https://leanprover-community.github.io/mathlib_docs/analysis/convex/cone/dual.html#convex_cone.hyperplane_separation_of_nonempty_of_is_closed_of_nmem). This is the most general form of Farkas' lemma (that I know of) for convex cones. We also add `proper_cone.comap` and a few theorems about it. ESTIMATED CHANGES Modified src/analysis/convex/cone/proper.lean + theorem proper_cone.coe_comap + theorem proper_cone.comap_comap + theorem proper_cone.comap_id + theorem proper_cone.hyperplane_separation + theorem proper_cone.hyperplane_separation_of_nmem + theorem proper_cone.mem_comap 2023-06-28 06:08:04 08b63ab chore(*): add mathlib4 synchronization comments (#19216) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Mon.colimits` * `algebra.category.fgModule.basic` * `analysis.complex.upper_half_plane.basic` * `analysis.inner_product_space.linear_pmap` * `analysis.special_functions.gamma.beta` * `analysis.special_functions.gamma.bohr_mollerup` * `analysis.special_functions.gaussian` * `category_theory.closed.ideal` * `category_theory.monoidal.Bimod` * `combinatorics.simple_graph.regularity.bound` * `combinatorics.simple_graph.regularity.chunk` * `combinatorics.simple_graph.regularity.increment` * `combinatorics.simple_graph.regularity.lemma` * `control.random` * `geometry.manifold.complex` * `geometry.manifold.mfderiv` * `geometry.manifold.partition_of_unity` * `linear_algebra.exterior_algebra.of_alternating` * `logic.equiv.array` * `number_theory.bertrand` * `number_theory.legendre_symbol.gauss_eisenstein_lemmas` * `number_theory.legendre_symbol.gauss_sum` * `number_theory.legendre_symbol.jacobi_symbol` * `number_theory.legendre_symbol.quadratic_char.gauss_sum` * `number_theory.legendre_symbol.quadratic_reciprocity` * `number_theory.sum_two_squares` * `number_theory.zsqrtd.quadratic_reciprocity` * `ring_theory.dedekind_domain.selmer_group` * `ring_theory.witt_vector.frobenius` * `ring_theory.witt_vector.identities` * `ring_theory.witt_vector.init_tail` * `ring_theory.witt_vector.verschiebung` * `set_theory.game.basic` * `set_theory.game.impartial` * `set_theory.game.ordinal` * `set_theory.surreal.basic` * `testing.slim_check.gen` * `testing.slim_check.sampleable` * `testing.slim_check.testable` ESTIMATED CHANGES Modified src/algebra/category/Mon/colimits.lean Modified src/algebra/category/fgModule/basic.lean Modified src/analysis/special_functions/gamma/bohr_mollerup.lean Modified src/analysis/special_functions/gaussian.lean Modified src/category_theory/monoidal/Bimod.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/combinatorics/simple_graph/regularity/chunk.lean Modified src/combinatorics/simple_graph/regularity/increment.lean Modified src/combinatorics/simple_graph/regularity/lemma.lean Modified src/geometry/manifold/mfderiv.lean Modified src/linear_algebra/exterior_algebra/of_alternating.lean Modified src/number_theory/bertrand.lean Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean Modified src/number_theory/legendre_symbol/gauss_sum.lean Modified src/number_theory/legendre_symbol/quadratic_char/gauss_sum.lean Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/sum_two_squares.lean Modified src/number_theory/zsqrtd/quadratic_reciprocity.lean Modified src/ring_theory/dedekind_domain/selmer_group.lean Modified src/set_theory/game/basic.lean Modified src/set_theory/game/ordinal.lean 2023-06-27 04:28:35 15db1b4 chore(category_theory/limits/construction/over): rename default to basic (#19217) This was a default file with content, so needs renaming. Afterwards it can just be ported as usual. ESTIMATED CHANGES Renamed src/category_theory/limits/constructions/over/default.lean to src/category_theory/limits/constructions/over/basic.lean 2023-06-26 15:07:59 8b98191 feat(analysis/inner_product_space): the adjoint for unbounded operators (#18820) ESTIMATED CHANGES Modified docs/overview.yaml Added src/analysis/inner_product_space/linear_pmap.lean + theorem continuous_linear_map.to_pmap_adjoint_eq_adjoint_to_pmap_of_dense + def linear_pmap.adjoint + theorem linear_pmap.adjoint_apply_eq + theorem linear_pmap.adjoint_apply_of_dense + theorem linear_pmap.adjoint_apply_of_not_dense + def linear_pmap.adjoint_aux + theorem linear_pmap.adjoint_aux_inner + theorem linear_pmap.adjoint_aux_unique + def linear_pmap.adjoint_domain + def linear_pmap.adjoint_domain_mk_clm + theorem linear_pmap.adjoint_domain_mk_clm_apply + def linear_pmap.adjoint_domain_mk_clm_extend + theorem linear_pmap.adjoint_domain_mk_clm_extend_apply + theorem linear_pmap.adjoint_is_formal_adjoint + theorem linear_pmap.is_formal_adjoint.le_adjoint + theorem linear_pmap.is_formal_adjoint.symm + def linear_pmap.is_formal_adjoint + theorem linear_pmap.mem_adjoint_domain_iff + theorem linear_pmap.mem_adjoint_domain_of_exists Modified src/linear_algebra/linear_pmap.lean + theorem linear_map.to_pmap_domain 2023-06-26 11:35:20 3ff3f2d feat(set_theory/cardinal/finite): prove lemmas to handle part_enat.card (#19198) Prove some lemmas that allow to handle part_enat.card of finite cardinals, analogous to those about nat.card ESTIMATED CHANGES Modified src/data/finite/card.lean + theorem part_enat.card_eq_coe_nat_card Modified src/data/nat/part_enat.lean + theorem part_enat.coe_succ_le_iff + theorem part_enat.lt_coe_succ_iff_le Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.sum_lt_prod + theorem cardinal.to_nat_eq_iff_eq_of_lt_aleph_0 + theorem cardinal.to_part_enat_congr + theorem cardinal.to_part_enat_eq_iff_eq_of_le_aleph_0 + theorem cardinal.to_part_enat_eq_top_iff_le_aleph_0 + theorem cardinal.to_part_enat_le_iff_le_of_le_aleph_0 + theorem cardinal.to_part_enat_le_iff_le_of_lt_aleph_0 + theorem cardinal.to_part_enat_lift + theorem cardinal.to_part_enat_mono Modified src/set_theory/cardinal/finite.lean + theorem cardinal.coe_nat_eq_to_part_enat_iff + theorem cardinal.coe_nat_le_to_part_enat_iff + theorem cardinal.coe_nat_lt_coe_iff_lt + theorem cardinal.lt_coe_nat_iff_lt + theorem cardinal.to_part_enat_eq_coe_nat_iff + theorem cardinal.to_part_enat_le_coe_nat_iff + theorem part_enat.card_congr + theorem part_enat.card_eq_zero_iff_empty + theorem part_enat.card_image_of_inj_on + theorem part_enat.card_image_of_injective + theorem part_enat.card_le_one_iff_subsingleton + theorem part_enat.card_plift + theorem part_enat.card_ulift + theorem part_enat.is_finite_of_card + theorem part_enat.one_lt_card_iff_nontrivial 2023-06-26 04:51:08 30faa0c chore(*): add mathlib4 synchronization comments (#19215) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `field_theory.abel_ruffini` * `geometry.manifold.algebra.lie_group` * `geometry.manifold.algebra.monoid` * `geometry.manifold.algebra.structures` * `geometry.manifold.bump_function` * `geometry.manifold.cont_mdiff` * `geometry.manifold.cont_mdiff_map` * `geometry.manifold.vector_bundle.basic` * `geometry.manifold.vector_bundle.fiberwise_linear` * `geometry.manifold.vector_bundle.pullback` * `geometry.manifold.vector_bundle.tangent` * `linear_algebra.clifford_algebra.equivs` * `linear_algebra.clifford_algebra.fold` * `number_theory.class_number.finite` * `number_theory.class_number.function_field` * `number_theory.cyclotomic.gal` * `number_theory.cyclotomic.rat` * `number_theory.number_field.class_number` * `representation_theory.group_cohomology.resolution` * `topology.metric_space.dilation` ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/algebra/structures.lean Modified src/geometry/manifold/bump_function.lean Modified src/geometry/manifold/cont_mdiff.lean Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/vector_bundle/basic.lean Modified src/geometry/manifold/vector_bundle/fiberwise_linear.lean Modified src/geometry/manifold/vector_bundle/pullback.lean Modified src/geometry/manifold/vector_bundle/tangent.lean Modified src/linear_algebra/clifford_algebra/equivs.lean Modified src/linear_algebra/clifford_algebra/fold.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/class_number/function_field.lean Modified src/number_theory/cyclotomic/gal.lean Modified src/number_theory/cyclotomic/rat.lean Modified src/number_theory/number_field/class_number.lean Modified src/representation_theory/group_cohomology/resolution.lean Modified src/topology/metric_space/dilation.lean 2023-06-24 06:34:52 fdc286c chore(*): add mathlib4 synchronization comments (#19214) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_geometry.presheafed_space.gluing` * `analysis.calculus.bump_function_findim` * `field_theory.polynomial_galois_group` * `geometry.manifold.sheaf.basic` * `linear_algebra.clifford_algebra.conjugation` * `linear_algebra.clifford_algebra.grading` * `linear_algebra.clifford_algebra.star` * `linear_algebra.free_module.norm` * `number_theory.cyclotomic.discriminant` * `number_theory.legendre_symbol.add_character` * `number_theory.number_field.canonical_embedding` ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space/gluing.lean Modified src/analysis/calculus/bump_function_findim.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/geometry/manifold/sheaf/basic.lean Modified src/linear_algebra/clifford_algebra/conjugation.lean Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/linear_algebra/clifford_algebra/star.lean Modified src/linear_algebra/free_module/norm.lean Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/legendre_symbol/add_character.lean Modified src/number_theory/number_field/canonical_embedding.lean 2023-06-23 19:10:46 93f8809 feat(topology/metric_space/dilation): Dilations on metric spaces (#14315) We define `dilation α β` as the type of maps that satisfy `edist (f x) (f y) = r * edist x y` for all `x y`. Here `r : ℝ≥0`, so we do not exclude the degenerate case of dilations which collapse into constant maps. After this I will extend to `{linear, affine}_dilation_{equiv}`s and `{linear, affine}_isometry_{equiv}`s. ESTIMATED CHANGES Modified docs/references.bib Added src/topology/metric_space/dilation.lean + theorem dilation.antilipschitz + theorem dilation.cancel_left + theorem dilation.cancel_right + theorem dilation.coe_comp + theorem dilation.coe_id + theorem dilation.coe_mk + theorem dilation.coe_mk_of_dist_eq + theorem dilation.coe_mk_of_nndist_eq + theorem dilation.coe_mul + theorem dilation.coe_one + def dilation.comp + theorem dilation.comp_apply + theorem dilation.comp_assoc + theorem dilation.comp_continuous_iff + theorem dilation.comp_continuous_on_iff + theorem dilation.comp_id + theorem dilation.comp_ratio + theorem dilation.congr_arg + theorem dilation.congr_fun + theorem dilation.copy_eq_self + theorem dilation.diam_image + theorem dilation.diam_range + theorem dilation.dist_eq + theorem dilation.ediam_image + theorem dilation.ediam_range + theorem dilation.edist_eq + theorem dilation.ext + theorem dilation.ext_iff + theorem dilation.id_comp + theorem dilation.id_ratio + theorem dilation.lipschitz + theorem dilation.maps_to_ball + theorem dilation.maps_to_closed_ball + theorem dilation.maps_to_emetric_ball + theorem dilation.maps_to_emetric_closed_ball + theorem dilation.maps_to_sphere + theorem dilation.mk_coe + theorem dilation.mk_coe_of_dist_eq + theorem dilation.mk_coe_of_nndist_eq + def dilation.mk_of_dist_eq + def dilation.mk_of_nndist_eq + theorem dilation.mul_def + theorem dilation.nndist_eq + theorem dilation.one_def + def dilation.ratio + theorem dilation.ratio_ne_zero + theorem dilation.ratio_pos + theorem dilation.ratio_unique + theorem dilation.ratio_unique_of_dist_ne_zero + theorem dilation.ratio_unique_of_nndist_ne_zero + theorem dilation.tendsto_nhds_iff + theorem dilation.to_continuous + theorem dilation.to_fun_eq_coe + structure dilation 2023-06-23 06:33:52 5d0c768 chore(*): add mathlib4 synchronization comments (#19213) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_geometry.Gamma_Spec_adjunction` * `algebraic_geometry.open_immersion.Scheme` * `analysis.calculus.implicit` * `analysis.matrix` * `analysis.normed_space.matrix_exponential` * `analysis.normed_space.star.matrix` * `data.matrix.invertible` * `linear_algebra.clifford_algebra.basic` * `linear_algebra.exterior_algebra.basic` * `number_theory.cyclotomic.basic` * `number_theory.cyclotomic.primitive_roots` * `number_theory.number_field.embeddings` * `number_theory.number_field.units` * `number_theory.zsqrtd.gaussian_int` * `ring_theory.dedekind_domain.S_integer` * `ring_theory.dedekind_domain.adic_valuation` * `ring_theory.dedekind_domain.finite_adele_ring` * `ring_theory.discriminant` * `ring_theory.ideal.norm` ESTIMATED CHANGES Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/algebraic_geometry/open_immersion/Scheme.lean Modified src/analysis/calculus/implicit.lean Modified src/analysis/matrix.lean Modified src/analysis/normed_space/matrix_exponential.lean Modified src/analysis/normed_space/star/matrix.lean Modified src/data/matrix/invertible.lean Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/exterior_algebra/basic.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/primitive_roots.lean Modified src/number_theory/number_field/embeddings.lean Modified src/number_theory/number_field/units.lean Modified src/number_theory/zsqrtd/gaussian_int.lean Modified src/ring_theory/dedekind_domain/S_integer.lean Modified src/ring_theory/dedekind_domain/adic_valuation.lean Modified src/ring_theory/dedekind_domain/finite_adele_ring.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/ideal/norm.lean 2023-06-22 23:00:27 57f9349 chore(analysis/complex/upper_half_plane,number_theory/modular_forms): reduce dependency on manifolds (#19212) Move some lemmas that use `mfderiv` or `mdifferentiable` to new files. ESTIMATED CHANGES Added src/analysis/complex/upper_half_plane/manifold.lean + theorem upper_half_plane.mdifferentiable_coe + theorem upper_half_plane.smooth_coe Modified src/analysis/complex/upper_half_plane/topology.lean - theorem upper_half_plane.mdifferentiable_coe - theorem upper_half_plane.smooth_coe Modified src/number_theory/modular_forms/basic.lean Renamed src/number_theory/modular_forms/jacobi_theta.lean to src/number_theory/modular_forms/jacobi_theta/basic.lean - theorem mdifferentiable_jacobi_theta Added src/number_theory/modular_forms/jacobi_theta/manifold.lean + theorem mdifferentiable_jacobi_theta Modified src/number_theory/zeta_function.lean 2023-06-22 12:28:45 d30d312 feat(group_theory): simple lemmas for Wedderburn (#18862) These lemmas are a bit disparate, but they are all useful for Wedderburn's little theorem. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.orbit_rel_apply Modified src/group_theory/group_action/conj_act.lean + theorem conj_act.mem_orbit_conj_act + theorem conj_act.orbit_rel_conj_act Modified src/group_theory/subgroup/basic.lean + theorem is_conj.eq_of_left_mem_center + theorem is_conj.eq_of_right_mem_center 2023-06-22 05:03:22 1b089e3 chore(*): add mathlib4 synchronization comments (#19211) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.adjunctions` * `analysis.constant_speed` * `analysis.convolution` * `category_theory.category.PartialFun` * `control.bitraversable.instances` * `control.uliftable` * `data.nat.nth` * `field_theory.cardinality` * `field_theory.finite.galois_field` * `field_theory.finite.trace` * `number_theory.function_field` * `number_theory.number_field.basic` * `number_theory.number_field.norm` * `number_theory.prime_counting` * `number_theory.zeta_values` * `probability.ident_distrib` * `probability.kernel.cond_distrib` * `probability.kernel.condexp` * `probability.moments` * `probability.strong_law` * `probability.variance` * `representation_theory.Rep` * `ring_theory.complex` * `ring_theory.valuation.ramification_group` * `ring_theory.valuation.valuation_subring` * `set_theory.ordinal.notation` ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean Modified src/analysis/constant_speed.lean Modified src/analysis/convolution.lean Modified src/category_theory/category/PartialFun.lean Modified src/control/bitraversable/instances.lean Modified src/control/uliftable.lean Modified src/data/nat/nth.lean Modified src/field_theory/cardinality.lean Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/finite/trace.lean Modified src/number_theory/function_field.lean Modified src/number_theory/number_field/basic.lean Modified src/number_theory/number_field/norm.lean Modified src/number_theory/prime_counting.lean Modified src/number_theory/zeta_values.lean Modified src/probability/ident_distrib.lean Modified src/probability/kernel/cond_distrib.lean Modified src/probability/kernel/condexp.lean Modified src/probability/moments.lean Modified src/probability/strong_law.lean Modified src/probability/variance.lean Modified src/representation_theory/Rep.lean Modified src/ring_theory/complex.lean Modified src/ring_theory/valuation/ramification_group.lean Modified src/ring_theory/valuation/valuation_subring.lean Modified src/set_theory/ordinal/notation.lean 2023-06-22 02:23:51 f404766 feat(analysis/normed_space/multilinear): add lemmas/defs (#19114) * Add `simps` here and there. * Add `continuous_multilinear_map.norm_of_subsingleton_le` and `continuous_multilinear_map.nnnorm_of_subsingleton_le`. * Add `continuous_multilinear_map.cod_restrict`. * Add `continuous_multilinear_map.restrict_scalarsₗᵢ`, a `linear_isometry_equiv` version of `continuous_multilinear_map.restrict_scalars`. * Split `continuous_multilinear_map.dom_dom_congr` into 3 definitions: a map, an equivalence, and a linear isometry (the old def). ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean - def continuous_multilinear_map.dom_dom_congr + def continuous_multilinear_map.dom_dom_congrₗᵢ + theorem continuous_multilinear_map.nnnorm_of_subsingleton_le + theorem continuous_multilinear_map.norm_dom_dom_congr + theorem continuous_multilinear_map.norm_of_subsingleton_le +/- theorem continuous_multilinear_map.norm_restrict_scalars + def continuous_multilinear_map.restrict_scalarsₗᵢ Modified src/topology/algebra/module/multilinear.lean + def continuous_multilinear_map.cod_restrict + def continuous_multilinear_map.dom_dom_congr + def continuous_multilinear_map.dom_dom_congr_equiv 2023-06-21 22:24:16 554bb38 feat(order/monotone): add `decidable` instances (#19175) These can be written in a very nice, elegant way. ESTIMATED CHANGES Modified archive/wiedijk_100_theorems/ascending_descending_sequences.lean Modified src/order/monotone/basic.lean 2023-06-21 18:29:29 6285167 chore(topology/algebra/module/basic): generalize `to_span_singleton` to topological spaces (#19116) This should be straightforward to forward-port, as it involves deleting one hunk and pasting in another. ESTIMATED CHANGES Modified src/analysis/normed_space/continuous_linear_map.lean - def continuous_linear_map.to_span_singleton - theorem continuous_linear_map.to_span_singleton_add - theorem continuous_linear_map.to_span_singleton_apply - theorem continuous_linear_map.to_span_singleton_smul' - theorem continuous_linear_map.to_span_singleton_smul Modified src/topology/algebra/module/basic.lean + def continuous_linear_map.to_span_singleton + theorem continuous_linear_map.to_span_singleton_add + theorem continuous_linear_map.to_span_singleton_apply + theorem continuous_linear_map.to_span_singleton_smul' + theorem continuous_linear_map.to_span_singleton_smul 2023-06-21 18:29:28 3efd324 feat(topology/algebra/order/compact): remove conditional completeness assumption in `is_compact.exists_forall_le` (#18991) ESTIMATED CHANGES Modified src/order/directed.lean + theorem is_total.directed Modified src/topology/algebra/order/compact.lean + theorem continuous.bdd_above_range_of_has_compact_mul_support + theorem continuous.bdd_below_range_of_has_compact_mul_support + theorem is_compact.bdd_above + theorem is_compact.bdd_above_image + theorem is_compact.bdd_below + theorem is_compact.bdd_below_image Modified src/topology/order/basic.lean - theorem continuous.bdd_above_range_of_has_compact_mul_support - theorem continuous.bdd_below_range_of_has_compact_mul_support - theorem is_compact.bdd_above - theorem is_compact.bdd_above_image - theorem is_compact.bdd_below - theorem is_compact.bdd_below_image Modified src/topology/subset_properties.lean + theorem is_compact.elim_directed_family_closed 2023-06-21 18:29:27 eba7871 feat(data/finset/pointwise): `|s| ∣ |s * t|` (#18663) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.forall_of_forall_cons + theorem finset.forall_of_forall_insert Modified src/data/finset/n_ary.lean + theorem finset.card_dvd_card_image₂_left + theorem finset.card_dvd_card_image₂_right Modified src/data/finset/pointwise.lean + theorem finset.card_dvd_card_mul_left + theorem finset.card_dvd_card_smul_right 2023-06-21 15:57:07 f23a09c feat(analysis/special_functions/log/base): add `real.logb_mul_base` (#18979) Add proof that states `logb (a * b) c = ((logb a c)⁻¹ + (logb b c)⁻¹)⁻¹`. ESTIMATED CHANGES Modified src/analysis/special_functions/log/base.lean + theorem real.div_logb + theorem real.inv_logb + theorem real.inv_logb_div_base + theorem real.inv_logb_mul_base + theorem real.logb_div_base + theorem real.logb_mul_base + theorem real.mul_logb Modified src/analysis/special_functions/log/basic.lean + theorem real.log_ne_zero 2023-06-21 09:24:30 e5ab837 feat(manifold/{cont_mdiff,algebra/smooth_functions}): restriction as a homomorphism between spaces of smooth functions (#19209) This splits out for separate review the part of #19094 that is blocking the port. ESTIMATED CHANGES Modified src/geometry/manifold/algebra/smooth_functions.lean + def smooth_map.comp_left_monoid_hom + def smooth_map.comp_left_ring_hom + def smooth_map.restrict_monoid_hom + def smooth_map.restrict_ring_hom Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff_inclusion + theorem smooth_inclusion 2023-06-21 07:24:58 c14c8fc feat(measure_theory/integral/average): Lebesgue average (#19199) Define the Lebesgue integral version of the average of a measurable function and prove the corresponding first moment method. ESTIMATED CHANGES Modified src/data/real/ennreal.lean Modified src/measure_theory/integral/average.lean +/- theorem measure_theory.average_const - theorem measure_theory.average_to_real + theorem measure_theory.exists_laverage_le + theorem measure_theory.exists_le_laverage + theorem measure_theory.exists_le_lintegral + theorem measure_theory.exists_le_set_laverage + theorem measure_theory.exists_lintegral_le + theorem measure_theory.exists_not_mem_null_laverage_le + theorem measure_theory.exists_not_mem_null_le_laverage + theorem measure_theory.exists_not_mem_null_le_lintegral + theorem measure_theory.exists_not_mem_null_lintegral_le + theorem measure_theory.exists_set_laverage_le + theorem measure_theory.laverage_add_measure + theorem measure_theory.laverage_congr + theorem measure_theory.laverage_const + theorem measure_theory.laverage_eq' + theorem measure_theory.laverage_eq + theorem measure_theory.laverage_eq_lintegral + theorem measure_theory.laverage_lt_top + theorem measure_theory.laverage_mem_open_segment_compl_self + theorem measure_theory.laverage_one + theorem measure_theory.laverage_union + theorem measure_theory.laverage_union_mem_open_segment + theorem measure_theory.laverage_union_mem_segment + theorem measure_theory.laverage_zero + theorem measure_theory.laverage_zero_measure + theorem measure_theory.lintegral_laverage + theorem measure_theory.measure_laverage_le_pos + theorem measure_theory.measure_le_laverage_pos + theorem measure_theory.measure_le_lintegral_pos + theorem measure_theory.measure_le_set_laverage_pos + theorem measure_theory.measure_lintegral_le_pos + theorem measure_theory.measure_mul_laverage + theorem measure_theory.measure_mul_set_laverage + theorem measure_theory.measure_set_laverage_le_pos + theorem measure_theory.set_average_congr + theorem measure_theory.set_average_congr_fun - theorem measure_theory.set_average_congr_set_ae - theorem measure_theory.set_average_to_real + theorem measure_theory.set_laverage_congr + theorem measure_theory.set_laverage_congr_fun + theorem measure_theory.set_laverage_const + theorem measure_theory.set_laverage_eq' + theorem measure_theory.set_laverage_eq + theorem measure_theory.set_laverage_lt_top + theorem measure_theory.set_laverage_one + theorem measure_theory.set_lintegral_set_laverage + theorem measure_theory.to_real_laverage + theorem measure_theory.to_real_set_laverage Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_eq_top_of_measure_eq_top_ne_zero - theorem measure_theory.lintegral_eq_top_of_measure_eq_top_pos + theorem measure_theory.lintegral_indicator_one + theorem measure_theory.measure_eq_top_of_lintegral_ne_top + theorem measure_theory.measure_eq_top_of_set_lintegral_ne_top + theorem measure_theory.set_lintegral_eq_top_of_measure_eq_top_ne_zero Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/measure_space_def.lean +/- theorem set.mul_indicator_ae_eq_one Modified src/probability/density.lean 2023-06-21 06:09:43 e8e130d chore(*): add mathlib4 synchronization comments (#19208) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_geometry.locally_ringed_space.has_colimits` * `analysis.bounded_variation` * `analysis.fourier.add_circle` * `analysis.fourier.poisson_summation` * `probability.borel_cantelli` * `probability.kernel.disintegration` * `probability.martingale.borel_cantelli` * `probability.martingale.convergence` * `probability.martingale.optional_stopping` * `probability.martingale.upcrossing` * `ring_theory.dedekind_domain.integral_closure` * `ring_theory.localization.norm` * `ring_theory.norm` * `ring_theory.polynomial.eisenstein.is_integral` * `ring_theory.trace` ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/analysis/bounded_variation.lean Modified src/analysis/fourier/add_circle.lean Modified src/analysis/fourier/poisson_summation.lean Modified src/probability/borel_cantelli.lean Modified src/probability/kernel/disintegration.lean Modified src/probability/martingale/borel_cantelli.lean Modified src/probability/martingale/convergence.lean Modified src/probability/martingale/optional_stopping.lean Modified src/probability/martingale/upcrossing.lean Modified src/ring_theory/dedekind_domain/integral_closure.lean Modified src/ring_theory/localization/norm.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/polynomial/eisenstein/is_integral.lean Modified src/ring_theory/trace.lean 2023-06-20 23:14:57 722b3b1 refactor(data/matrix/invertible): more results about invertible matrices (#19204) Many results about `invertible` apply directly to matrices simply by replacing `*` with `matrix.mul`. This also adds some missing lemmas about invertibility of products. ESTIMATED CHANGES Modified src/algebra/invertible.lean + def invertible.copy' + def invertible.mul + def invertible.mul_left + def invertible.mul_right + def invertible_of_invertible_mul + def invertible_of_mul_invertible Added src/data/matrix/invertible.lean + def invertible.matrix_mul + def invertible.matrix_mul_left + def invertible.matrix_mul_right Modified src/linear_algebra/matrix/nonsingular_inverse.lean 2023-06-20 21:31:46 431589b feat(geometry/manifold/sheaf/basic): sheaf of functions satisfying a `local_invariant_prop` (#19146) Define `structure_groupoid.local_invariant_prop.sheaf`, the sheaf-of-types of functions `f : M → M'` (for charted spaces `M`, `M'`) satisfying some local property in the sense of `structure_groupoid.local_invariant_prop` (for example continuity, differentiability, smoothness). ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + theorem topological_space.opens.chart_at_inclusion_symm_eventually_eq Modified src/geometry/manifold/local_invariant_properties.lean + theorem structure_groupoid.local_invariant_prop.lift_prop_at_iff_comp_inclusion + theorem structure_groupoid.local_invariant_prop.lift_prop_inclusion Added src/geometry/manifold/sheaf/basic.lean + def structure_groupoid.local_invariant_prop.local_predicate + theorem structure_groupoid.local_invariant_prop.section_spec + def structure_groupoid.local_invariant_prop.sheaf Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.map_subtype_source + theorem local_homeomorph.subtype_restr_symm_eq_on_of_le 2023-06-20 06:00:43 f2ad364 chore(*): add mathlib4 synchronization comments (#19207) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_geometry.open_immersion.basic` * `analysis.schwartz_space` * `category_theory.monoidal.internal.types` * `dynamics.ergodic.add_circle` * `field_theory.is_alg_closed.algebraic_closure` * `measure_theory.group.add_circle` * `measure_theory.integral.periodic` * `number_theory.kummer_dedekind` * `number_theory.well_approximable` * `probability.kernel.integral_comp_prod` * `probability.martingale.basic` * `probability.martingale.centering` * `probability.martingale.optional_sampling` * `probability.process.hitting_time` * `ring_theory.is_adjoin_root` ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion/basic.lean Modified src/analysis/schwartz_space.lean Modified src/category_theory/monoidal/internal/types.lean Modified src/dynamics/ergodic/add_circle.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/measure_theory/group/add_circle.lean Modified src/measure_theory/integral/periodic.lean Modified src/number_theory/kummer_dedekind.lean Modified src/number_theory/well_approximable.lean Modified src/probability/kernel/integral_comp_prod.lean Modified src/probability/martingale/basic.lean Modified src/probability/martingale/centering.lean Modified src/probability/martingale/optional_sampling.lean Modified src/probability/process/hitting_time.lean Modified src/ring_theory/is_adjoin_root.lean 2023-06-20 04:52:54 86c29ae refactor(geometry/manifold/cont_mdiff_map): redefine as subtype not structure (#19147) We have a long-running conversation in mathlib about whether function spaces should be implemented as subtypes or as structures. This PR proposes to change `cont_mdiff_map`, the type of smooth functions between manifolds `M` and `M'`, from a "structure" implementation to a "subtype" implementation. It honestly seems pretty painless, even though this is a widely used type -- the only change for users is that the field names are now `val` and `property` rather than `to_fun` and `cont_mdiff_to_fun`. The motivation is to make it possible to make certain constructions about function spaces generic, so that work for the space of smooth functions can be reused for (for example) the spaces of continuous or differentiable functions. Notably, in #19146 we introduce a generic construction of a sheaf of functions on a manifold whose object over the open set `U` is the subtype of functions satisfying a "local invariant property". With this PR, when that construction is applied to the property "smoothness", the resulting sheaf has objects which are *by definition* the types `cont_mdiff_map`. They then inherit algebraic structures for free, see #19094. ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff_map.lean + def cont_mdiff_map - structure cont_mdiff_map Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/whitney_embedding.lean 2023-06-19 20:03:53 0723536 chore(data/zmod/algebra): make zmod.algebra a def (#19197) `zmod.algebra` creates a diamond about the `zmod p`-algebra structure on `zmod p`: ```lean import algebra.algebra.basic import data.zmod.algebra example (p : ℕ) : algebra.id (zmod p) = (zmod.algebra (zmod p) p) := rfl --fails ``` This is also causing troubles with the port. We turn `zmod.algebra` into a def. ESTIMATED CHANGES Modified src/data/zmod/algebra.lean + def zmod.algebra Modified src/field_theory/cardinality.lean Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/finite/trace.lean +/- theorem finite_field.trace_to_zmod_nondegenerate Modified src/field_theory/is_alg_closed/classification.lean +/- theorem is_alg_closed.ring_equiv_of_cardinal_eq_of_char_eq +/- theorem is_alg_closed.ring_equiv_of_cardinal_eq_of_char_zero Modified src/number_theory/legendre_symbol/add_character.lean Modified src/ring_theory/polynomial/cyclotomic/expand.lean Modified src/ring_theory/witt_vector/frobenius.lean 2023-06-19 06:39:32 e160cef chore(*): add mathlib4 synchronization comments (#19200) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.continued_fractions.computation.terminates_iff_rat` * `category_theory.enriched.basic` * `category_theory.monoidal.internal.limits` * `field_theory.krull_topology` * `measure_theory.function.conditional_expectation.basic` * `measure_theory.function.conditional_expectation.condexp_L1` * `measure_theory.function.conditional_expectation.condexp_L2` * `measure_theory.function.conditional_expectation.indicator` * `measure_theory.function.conditional_expectation.real` * `number_theory.legendre_symbol.basic` * `number_theory.legendre_symbol.quadratic_char.basic` * `probability.conditional_expectation` * `probability.notation` * `probability.process.adapted` * `probability.process.filtration` * `probability.process.stopping` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/category_theory/enriched/basic.lean Modified src/category_theory/monoidal/internal/limits.lean Modified src/field_theory/krull_topology.lean Modified src/measure_theory/function/conditional_expectation/basic.lean Modified src/measure_theory/function/conditional_expectation/condexp_L1.lean Modified src/measure_theory/function/conditional_expectation/condexp_L2.lean Modified src/measure_theory/function/conditional_expectation/indicator.lean Modified src/measure_theory/function/conditional_expectation/real.lean Modified src/number_theory/legendre_symbol/basic.lean Modified src/number_theory/legendre_symbol/quadratic_char/basic.lean Modified src/probability/conditional_expectation.lean Modified src/probability/notation.lean Modified src/probability/process/adapted.lean Modified src/probability/process/filtration.lean Modified src/probability/process/stopping.lean 2023-06-17 06:21:17 2a0ce62 chore(*): add mathlib4 synchronization comments (#19196) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.BoolRing` * `algebra.continued_fractions.computation.approximation_corollaries` * `category_theory.monoidal.internal.functor_category` * `field_theory.galois` * `field_theory.minpoly.is_integrally_closed` * `field_theory.primitive_element` * `linear_algebra.matrix.ldl` * `number_theory.diophantine_approximation` * `number_theory.pell` * `number_theory.primes_congruent_one` * `order.category.FinBoolAlg` * `probability.kernel.composition` * `probability.kernel.cond_cdf` * `probability.kernel.invariance` * `ring_theory.polynomial.cyclotomic.eval` * `ring_theory.polynomial.cyclotomic.expand` * `ring_theory.polynomial.cyclotomic.roots` * `ring_theory.polynomial.gauss_lemma` * `ring_theory.polynomial.selmer` * `ring_theory.ring_hom.finite_type` * `ring_theory.roots_of_unity.minpoly` * `topology.category.UniformSpace` * `topology.continuous_function.zero_at_infty` * `topology.sheaves.operations` ESTIMATED CHANGES Modified src/algebra/category/BoolRing.lean Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/category_theory/monoidal/internal/functor_category.lean Modified src/field_theory/galois.lean Modified src/field_theory/minpoly/is_integrally_closed.lean Modified src/field_theory/primitive_element.lean Modified src/linear_algebra/matrix/ldl.lean Modified src/number_theory/diophantine_approximation.lean Modified src/number_theory/pell.lean Modified src/number_theory/primes_congruent_one.lean Modified src/order/category/FinBoolAlg.lean Modified src/probability/kernel/composition.lean Modified src/probability/kernel/cond_cdf.lean Modified src/probability/kernel/invariance.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean Modified src/ring_theory/polynomial/cyclotomic/expand.lean Modified src/ring_theory/polynomial/cyclotomic/roots.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/polynomial/selmer.lean Modified src/ring_theory/ring_hom/finite_type.lean Modified src/ring_theory/roots_of_unity/minpoly.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/continuous_function/zero_at_infty.lean Modified src/topology/sheaves/operations.lean 2023-06-16 17:36:19 893964f feat(algebra/homology/local_cohomology): Add equivalence of local cohomology along cofinal diagrams (#19105) Add the natural equivalence of local cohomology along cofinal diagrams of ideals. ESTIMATED CHANGES Modified src/algebra/homology/local_cohomology.lean - theorem ideal.exists_pow_le_of_le_radical_of_fg + def local_cohomology.diagram_comp + theorem local_cohomology.ideal.exists_pow_le_of_le_radical_of_fg +/- def local_cohomology.ideal_powers_to_self_le_radical - def local_cohomology.ideal_powers_to_self_le_radical_comp_inclusion + def local_cohomology.iso_of_final + def local_cohomology.iso_of_same_radical + def local_cohomology.iso_self_le_radical +/- def local_cohomology.of_self_le_radical + def local_cohomology.self_le_radical.cast + def local_cohomology.self_le_radical.iso_of_same_radical 2023-06-16 11:48:58 22c4d2f feat(order/bounded_order): The lattice of complemented elements (#16267) Define `complementeds`, the subtype of complemented elements, and show that it is a complemented bounded distributive lattice. ESTIMATED CHANGES Modified src/order/disjoint.lean + theorem complementeds.codisjoint_coe + theorem complementeds.coe_bot + theorem complementeds.coe_inf + theorem complementeds.coe_inj + theorem complementeds.coe_injective + theorem complementeds.coe_le_coe + theorem complementeds.coe_lt_coe + theorem complementeds.coe_sup + theorem complementeds.coe_top + theorem complementeds.disjoint_coe + theorem complementeds.is_compl_coe + theorem complementeds.mk_bot + theorem complementeds.mk_inf_mk + theorem complementeds.mk_sup_mk + theorem complementeds.mk_top + def complementeds + theorem is_complemented.inf + theorem is_complemented.sup + def is_complemented + theorem is_complemented_bot + theorem is_complemented_top 2023-06-16 08:34:16 c4c2ed6 feat(order/sup_indep): More lemmas (#11932) A few more lemmas about `finset.sup_indep` and `set.pairwise_disjoint`. ESTIMATED CHANGES Modified src/data/finset/pairwise.lean + theorem set.pairwise_disjoint.attach +/- theorem set.pairwise_disjoint.image_finset_of_le Modified src/data/set/pairwise/basic.lean + theorem set.pairwise_disjoint.prod + theorem set.pairwise_disjoint_pi Modified src/data/set/pairwise/lattice.lean +/- theorem set.pairwise_Union + theorem set.pairwise_disjoint.prod_left + theorem set.pairwise_disjoint_prod_left Modified src/data/set/prod.lean + theorem disjoint.set_pi + theorem disjoint.set_prod_left + theorem disjoint.set_prod_right + theorem set.disjoint_pi +/- theorem set.disjoint_prod + theorem set.pi_eq_empty_iff' Modified src/order/sup_indep.lean +/- theorem finset.sup_indep.attach + theorem finset.sup_indep.image + theorem finset.sup_indep.le_sup_iff + theorem finset.sup_indep.product + theorem finset.sup_indep.sigma + theorem finset.sup_indep_attach + theorem finset.sup_indep_map + theorem finset.sup_indep_product_iff 2023-06-16 05:28:55 5563b1b style(archive.100-theorems-list.xx_theorem_name): rename to `wiedijk_100_theorems.theorem_name` (#19195) https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Archive.2E100-theorems-list.2EXXTheoremName.20causes.20error.20!4.235114 ESTIMATED CHANGES Renamed archive/100-theorems-list/README.md to archive/wiedijk_100_theorems/README.md Renamed archive/100-theorems-list/16_abel_ruffini.lean to archive/wiedijk_100_theorems/abel_ruffini.lean Renamed archive/100-theorems-list/9_area_of_a_circle.lean to archive/wiedijk_100_theorems/area_of_a_circle.lean Renamed archive/100-theorems-list/73_ascending_descending_sequences.lean to archive/wiedijk_100_theorems/ascending_descending_sequences.lean Renamed archive/100-theorems-list/30_ballot_problem.lean to archive/wiedijk_100_theorems/ballot_problem.lean Renamed archive/100-theorems-list/93_birthday_problem.lean to archive/wiedijk_100_theorems/birthday_problem.lean Renamed archive/100-theorems-list/82_cubing_a_cube.lean to archive/wiedijk_100_theorems/cubing_a_cube.lean Renamed archive/100-theorems-list/83_friendship_graphs.lean to archive/wiedijk_100_theorems/friendship_graphs.lean Renamed archive/100-theorems-list/57_herons_formula.lean to archive/wiedijk_100_theorems/herons_formula.lean Renamed archive/100-theorems-list/42_inverse_triangle_sum.lean to archive/wiedijk_100_theorems/inverse_triangle_sum.lean Renamed archive/100-theorems-list/54_konigsberg.lean to archive/wiedijk_100_theorems/konigsberg.lean Renamed archive/100-theorems-list/45_partition.lean to archive/wiedijk_100_theorems/partition.lean Renamed archive/100-theorems-list/70_perfect_numbers.lean to archive/wiedijk_100_theorems/perfect_numbers.lean Renamed archive/100-theorems-list/37_solution_of_cubic.lean to archive/wiedijk_100_theorems/solution_of_cubic.lean Renamed archive/100-theorems-list/81_sum_of_prime_reciprocals_diverges.lean to archive/wiedijk_100_theorems/sum_of_prime_reciprocals_diverges.lean 2023-06-16 05:28:54 cff8231 chore(*): add mathlib4 synchronization comments (#19194) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.continued_fractions.computation.approximations` * `analysis.inner_product_space.rayleigh` * `analysis.inner_product_space.spectrum` * `analysis.normed.group.SemiNormedGroup` * `category_theory.closed.functor` * `field_theory.splitting_field.construction` * `geometry.euclidean.angle.sphere` * `linear_algebra.matrix.pos_def` * `linear_algebra.matrix.spectrum` * `order.category.BoolAlg` * `order.category.FinBddDistLat` * `ring_theory.local_properties` * `ring_theory.ring_hom.surjective` * `topology.sheaves.locally_surjective` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/inner_product_space/spectrum.lean Modified src/analysis/normed/group/SemiNormedGroup.lean Modified src/category_theory/closed/functor.lean Modified src/field_theory/splitting_field/construction.lean Modified src/geometry/euclidean/angle/sphere.lean Modified src/linear_algebra/matrix/pos_def.lean Modified src/linear_algebra/matrix/spectrum.lean Modified src/order/category/BoolAlg.lean Modified src/order/category/FinBddDistLat.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/ring_hom/surjective.lean Modified src/topology/sheaves/locally_surjective.lean 2023-06-16 04:21:23 5b2fe80 chore(number_theory/legendre_symbol/quadratic_reciprocity): split some files (#19193) The best split here is separating `quadratic_reciprocity` into that and `legendre_symbol`. I was looking at this because the olean analyser in the port-progress-bot made an unlikely claim about unnecessary dependencies, and I wanted to make sure we weren't missing something in doubting it. We weren't. :-) ESTIMATED CHANGES Added src/number_theory/legendre_symbol/basic.lean + theorem legendre_sym.at_neg_one + theorem legendre_sym.at_one + theorem legendre_sym.at_zero + theorem legendre_sym.card_sqrts + theorem legendre_sym.eq_neg_one_iff' + theorem legendre_sym.eq_neg_one_iff + theorem legendre_sym.eq_neg_one_iff_not_one + theorem legendre_sym.eq_one_iff' + theorem legendre_sym.eq_one_iff + theorem legendre_sym.eq_one_of_sq_sub_mul_sq_eq_zero' + theorem legendre_sym.eq_one_of_sq_sub_mul_sq_eq_zero + theorem legendre_sym.eq_one_or_neg_one + theorem legendre_sym.eq_pow + theorem legendre_sym.eq_zero_iff + theorem legendre_sym.eq_zero_mod_of_eq_neg_one + def legendre_sym.hom + theorem legendre_sym.mod + theorem legendre_sym.mul + theorem legendre_sym.prime_dvd_of_eq_neg_one + theorem legendre_sym.sq_one' + theorem legendre_sym.sq_one + def legendre_sym + theorem zmod.euler_criterion + theorem zmod.euler_criterion_units + theorem zmod.exists_sq_eq_neg_one_iff + theorem zmod.mod_four_ne_three_of_sq_eq_neg_one + theorem zmod.mod_four_ne_three_of_sq_eq_neg_sq' + theorem zmod.mod_four_ne_three_of_sq_eq_neg_sq + theorem zmod.pow_div_two_eq_neg_one_or_one Renamed src/number_theory/legendre_symbol/quadratic_char.lean to src/number_theory/legendre_symbol/quadratic_char/basic.lean - theorem finite_field.is_square_neg_two_iff - theorem finite_field.is_square_odd_prime_iff - theorem finite_field.is_square_two_iff - theorem quadratic_char_card_card - theorem quadratic_char_neg_two - theorem quadratic_char_odd_prime - theorem quadratic_char_two Added src/number_theory/legendre_symbol/quadratic_char/gauss_sum.lean + theorem finite_field.is_square_neg_two_iff + theorem finite_field.is_square_odd_prime_iff + theorem finite_field.is_square_two_iff + theorem quadratic_char_card_card + theorem quadratic_char_neg_two + theorem quadratic_char_odd_prime + theorem quadratic_char_two Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean - theorem legendre_sym.at_neg_one - theorem legendre_sym.at_one - theorem legendre_sym.at_zero - theorem legendre_sym.card_sqrts - theorem legendre_sym.eq_neg_one_iff' - theorem legendre_sym.eq_neg_one_iff - theorem legendre_sym.eq_neg_one_iff_not_one - theorem legendre_sym.eq_one_iff' - theorem legendre_sym.eq_one_iff - theorem legendre_sym.eq_one_of_sq_sub_mul_sq_eq_zero' - theorem legendre_sym.eq_one_of_sq_sub_mul_sq_eq_zero - theorem legendre_sym.eq_one_or_neg_one - theorem legendre_sym.eq_pow - theorem legendre_sym.eq_zero_iff - theorem legendre_sym.eq_zero_mod_of_eq_neg_one - def legendre_sym.hom - theorem legendre_sym.mod - theorem legendre_sym.mul - theorem legendre_sym.prime_dvd_of_eq_neg_one - theorem legendre_sym.sq_one' - theorem legendre_sym.sq_one - def legendre_sym - theorem zmod.euler_criterion - theorem zmod.euler_criterion_units - theorem zmod.exists_sq_eq_neg_one_iff - theorem zmod.mod_four_ne_three_of_sq_eq_neg_one - theorem zmod.mod_four_ne_three_of_sq_eq_neg_sq' - theorem zmod.mod_four_ne_three_of_sq_eq_neg_sq - theorem zmod.pow_div_two_eq_neg_one_or_one Modified src/number_theory/sum_two_squares.lean Modified src/number_theory/zsqrtd/gaussian_int.lean - theorem gaussian_int.mod_four_eq_three_of_nat_prime_of_prime - theorem gaussian_int.prime_iff_mod_four_eq_three_of_nat_prime - theorem gaussian_int.prime_of_nat_prime_of_mod_four_eq_three Added src/number_theory/zsqrtd/quadratic_reciprocity.lean + theorem gaussian_int.mod_four_eq_three_of_nat_prime_of_prime + theorem gaussian_int.prime_iff_mod_four_eq_three_of_nat_prime + theorem gaussian_int.prime_of_nat_prime_of_mod_four_eq_three 2023-06-15 15:45:26 bf9bbbc feat(field_theory/ratfunc): The numerator and denominator of a rational function are coprime (#18652) Also make more arguments to `gcd_ne_zero_of_left`/`gcd_ne_zero_of_right` implicit. ESTIMATED CHANGES Modified src/algebra/euclidean_domain/basic.lean Modified src/field_theory/ratfunc.lean + theorem ratfunc.is_coprime_num_denom Modified src/ring_theory/euclidean_domain.lean +/- theorem gcd_ne_zero_of_left +/- theorem gcd_ne_zero_of_right + theorem is_coprime_div_gcd_div_gcd 2023-06-15 13:54:35 88474d1 chore(algebraic_geometry/Scheme): remove @[simps] from Spec (#19188) The `@[simps]` on `Spec` produces lemmas that aren't needed in mathlib3, and get in the way in mathlib4. This backports the removal of this attribute, to match https://github.com/leanprover-community/mathlib4/pull/5040. ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/Scheme.lean +/- def algebraic_geometry.Scheme.Spec Modified src/algebraic_geometry/properties.lean 2023-06-15 10:09:42 4b05d3f chore(field_theory.finite.galois_field, number_theory.cyclotomic.basic): make splitting_field.algebra' an instance again (#19191) ESTIMATED CHANGES Modified src/field_theory/finite/galois_field.lean Modified src/number_theory/cyclotomic/basic.lean 2023-06-15 06:31:45 e3f4be1 chore(field_theory/splitting_field): refactor `splitting_field` (#19178) We refactor the definition of `splitting_field`. The main motivation is to backport [!4#4891](https://github.com/leanprover-community/mathlib4/pull/4891) since the is seems very problematic to port the current design. Zulip discussion relevant to this PR: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/!4.234891.20.20FieldTheory.2ESplittingField ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/splitting_field/construction.lean + def polynomial.splitting_field.alg_equiv_splitting_field_aux + def polynomial.splitting_field_aux.alg_equiv_quotient_mv_polynomial - theorem polynomial.splitting_field_aux.exists_lift + def polynomial.splitting_field_aux.of_mv_polynomial + theorem polynomial.splitting_field_aux.of_mv_polynomial_surjective +/- def polynomial.splitting_field_aux + def polynomial.splitting_field_aux_aux Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/gal.lean Modified src/number_theory/legendre_symbol/add_character.lean + theorem add_char.primitive_add_char.prim + def add_char.primitive_add_char - structure add_char.primitive_add_char Modified src/number_theory/legendre_symbol/gauss_sum.lean Modified src/ring_theory/polynomial/gauss_lemma.lean 2023-06-15 05:00:11 8af7091 chore(*): add mathlib4 synchronization comments (#19190) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.homology.Module` * `algebra.lie.weights` * `algebraic_geometry.Scheme` * `algebraic_geometry.Spec` * `analysis.analytic.isolated_zeros` * `analysis.analytic.uniqueness` * `analysis.complex.open_mapping` * `analysis.mellin_transform` * `analysis.special_functions.gamma.basic` * `category_theory.monoidal.CommMon_` * `geometry.euclidean.angle.oriented.affine` * `geometry.euclidean.angle.oriented.right_angle` * `geometry.euclidean.angle.oriented.rotation` * `geometry.euclidean.circumcenter` * `geometry.euclidean.sphere.ptolemy` * `geometry.euclidean.triangle` * `measure_theory.function.conditional_expectation.unique` * `order.category.BddDistLat` * `order.category.BddLat` * `order.category.CompleteLat` * `order.category.HeytAlg` * `probability.kernel.measurable_integral` * `probability.kernel.with_density` * `ring_theory.ring_hom.finite` * `topology.continuous_function.ideals` * `topology.gluing` ESTIMATED CHANGES Modified src/algebra/homology/Module.lean Modified src/algebra/lie/weights.lean Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/Spec.lean Modified src/analysis/analytic/isolated_zeros.lean Modified src/analysis/analytic/uniqueness.lean Modified src/analysis/complex/open_mapping.lean Modified src/analysis/mellin_transform.lean Modified src/analysis/special_functions/gamma/basic.lean Modified src/category_theory/monoidal/CommMon_.lean Modified src/geometry/euclidean/angle/oriented/affine.lean Modified src/geometry/euclidean/angle/oriented/right_angle.lean Modified src/geometry/euclidean/angle/oriented/rotation.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/sphere/ptolemy.lean Modified src/geometry/euclidean/triangle.lean Modified src/measure_theory/function/conditional_expectation/unique.lean Modified src/order/category/BddDistLat.lean Modified src/order/category/BddLat.lean Modified src/order/category/CompleteLat.lean Modified src/order/category/HeytAlg.lean Modified src/probability/kernel/measurable_integral.lean Modified src/probability/kernel/with_density.lean Modified src/ring_theory/ring_hom/finite.lean Modified src/topology/continuous_function/ideals.lean Modified src/topology/gluing.lean 2023-06-14 16:17:48 9f55d0d feat(measure_theory/constructions/polish): quotient group is a Borel space (#19186) * Suslin's theorem: an analytic set with analytic complement is measurable. * Image of a measurable set in a Polish space under a measurable map is an analytic set. * Preimage of a set under a measurable surjective map from a Polish space is measurable iff the original set is measurable. * Quotient space of a Polish space with quotient σ-algebra is a Borel space provided that it has second countable topology. * In particular, quotient group of a Polish topological group is a Borel space. * Change instance for `measurable_space` on `add_circle`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space/basic.lean + theorem borel_anti Modified src/measure_theory/constructions/polish.lean + theorem continuous.map_borel_eq + theorem continuous.map_eq_borel + theorem measurable.borel_space_codomain + theorem measurable.map_measurable_space_eq + theorem measurable.map_measurable_space_eq_borel + theorem measurable.measurable_comp_iff_of_surjective + theorem measurable.measurable_comp_iff_restrict + theorem measurable.measurable_set_preimage_iff_inter_range + theorem measurable.measurable_set_preimage_iff_of_surjective + theorem measurable.measurable_set_preimage_iff_preimage_coe + theorem measurable_set.analytic_set_image + theorem measure_theory.analytic_set.measurable_set_of_compl +/- theorem measure_theory.analytic_set.measurably_separable +/- theorem measure_theory.measurably_separable_range_of_disjoint Modified src/measure_theory/integral/periodic.lean 2023-06-14 13:43:55 c8734e8 feat(data/mv_polynomial/basic): add more general smul compatibility instances (#19187) These apply for things like actions by the units of the base ring. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2023-06-14 13:43:54 8bdf5e9 refactor(field_theory/polynomial_galois_group): remove `open_locale classical` (#19184) This doesn't actually generalize any lemmas, but it reduces the chance of lemmas added in future being less general. The `restrict_dvd_def` lemma is new, and deals with substituting an arbitray `decidable_eq` instance. ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.restrict_dvd_def 2023-06-14 13:43:53 f9ec187 feat(geometry/manifold/vector_bundle/smooth_section): define smooth sections (#19064) * Define the module of smooth sections of a smooth vector bundle over a smooth manifold. * ESTIMATED CHANGES Modified src/geometry/manifold/algebra/lie_group.lean + theorem cont_mdiff.div + theorem cont_mdiff.inv + theorem cont_mdiff_at.div + theorem cont_mdiff_at.inv + theorem cont_mdiff_on.div + theorem cont_mdiff_on.inv + theorem cont_mdiff_within_at.div + theorem cont_mdiff_within_at.inv + theorem smooth_at.div + theorem smooth_at.inv + theorem smooth_within_at.div + theorem smooth_within_at.inv Modified src/geometry/manifold/vector_bundle/basic.lean + theorem bundle.cont_mdiff_at_section Added src/geometry/manifold/vector_bundle/smooth_section.lean + theorem cont_mdiff_section.coe_add + def cont_mdiff_section.coe_add_hom + theorem cont_mdiff_section.coe_fn_mk + theorem cont_mdiff_section.coe_inj + theorem cont_mdiff_section.coe_injective + theorem cont_mdiff_section.coe_neg + theorem cont_mdiff_section.coe_nsmul + theorem cont_mdiff_section.coe_smul + theorem cont_mdiff_section.coe_sub + theorem cont_mdiff_section.coe_zero + theorem cont_mdiff_section.coe_zsmul + theorem cont_mdiff_section.ext + structure cont_mdiff_section + def smooth_section 2023-06-14 10:32:56 1ac8d43 chore(*): fix `@[to_additive, simp]` to the correct order (#19169) Whilst making some files, I noticed that there is some lemmas that have the wrong order for `to_additive` and `simp`. ESTIMATED CHANGES Modified src/algebra/hom/equiv/basic.lean +/- theorem mul_equiv.coe_monoid_hom_refl +/- theorem mul_equiv.coe_monoid_hom_trans Modified src/group_theory/subsemigroup/center.lean +/- theorem subsemigroup.center_eq_top Modified src/topology/algebra/monoid.lean 2023-06-14 09:28:31 c321606 chore(linear_algebra/eigenspace/minpoly): remove a silly use of `tauto` (#19183) `tauto` is not `refl`. ESTIMATED CHANGES Modified src/linear_algebra/eigenspace/minpoly.lean 2023-06-14 04:48:05 d07a9c8 chore(*): add mathlib4 synchronization comments (#19185) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.subobject` * `analysis.analytic.composition` * `analysis.convex.intrinsic` * `analysis.inner_product_space.two_dim` * `analysis.special_functions.japanese_bracket` * `category_theory.differential_object` * `geometry.euclidean.angle.oriented.basic` * `measure_theory.function.conditional_expectation.ae_measurable` * `order.category.BddOrd` * `order.category.Semilat` * `ring_theory.polynomial.hermite.basic` * `ring_theory.polynomial.hermite.gaussian` * `ring_theory.ring_hom.integral` * `ring_theory.ring_hom_properties` ESTIMATED CHANGES Modified src/algebra/category/Group/subobject.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/convex/intrinsic.lean Modified src/analysis/inner_product_space/two_dim.lean Modified src/analysis/special_functions/japanese_bracket.lean Modified src/category_theory/differential_object.lean Modified src/geometry/euclidean/angle/oriented/basic.lean Modified src/measure_theory/function/conditional_expectation/ae_measurable.lean Modified src/order/category/BddOrd.lean Modified src/order/category/Semilat.lean Modified src/ring_theory/polynomial/hermite/basic.lean Modified src/ring_theory/polynomial/hermite/gaussian.lean Modified src/ring_theory/ring_hom/integral.lean Modified src/ring_theory/ring_hom_properties.lean 2023-06-13 07:07:01 8efcf80 refactor(data/polynomial/ring_division): remove `open_locale classical` (#19182) This makes the lemmas strictly more general. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.bUnion_roots_finite +/- theorem polynomial.count_map_roots +/- theorem polynomial.count_map_roots_of_injective +/- theorem polynomial.count_roots +/- theorem polynomial.exists_multiset_roots +/- theorem polynomial.prod_multiset_root_eq_finset_root +/- theorem polynomial.root_multiplicity_X_sub_C +/- theorem polynomial.root_set_def + theorem polynomial.roots_def Modified src/linear_algebra/eigenspace/minpoly.lean 2023-06-13 07:06:59 fbbd626 chore(field_theory/abel_ruffini): Rename variables (#19180) Rename variables for consistency. ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean 2023-06-13 07:06:56 e2e7f2a feat(algebraic_geometry/elliptic_curve/point): the group law on the nonsingular rational points of a Weierstrass curve (#18000) Define a group structure on the nonsingular rational points of a Weierstrass curve by constructing an explicit injective group homomorphism into the class group of its coordinate ring and therefore proving associativity of the addition law. - [x] depends on: #17999 - [x] depends on: #17194 - [x] depends on: #18038 - [x] depends on: #18101 - [x] depends on: #19121 ESTIMATED CHANGES Modified src/algebraic_geometry/elliptic_curve/point.lean + theorem weierstrass_curve.C_add_polynomial + theorem weierstrass_curve.XY_ideal'_eq + theorem weierstrass_curve.XY_ideal_add_eq + theorem weierstrass_curve.XY_ideal_eq₁ + theorem weierstrass_curve.XY_ideal_eq₂ + theorem weierstrass_curve.XY_ideal_mul_XY_ideal + theorem weierstrass_curve.XY_ideal_neg_mul + theorem weierstrass_curve.coordinate_ring.C_add_polynomial + theorem weierstrass_curve.coordinate_ring.C_add_polynomial_slope + theorem weierstrass_curve.mk_XY_ideal'_mul_mk_XY_ideal' + theorem weierstrass_curve.mk_XY_ideal'_mul_mk_XY_ideal'_of_Y_eq + theorem weierstrass_curve.point.add_assoc + theorem weierstrass_curve.point.add_comm + theorem weierstrass_curve.point.to_class_eq_zero + theorem weierstrass_curve.point.to_class_injective + theorem weierstrass_curve.point.to_class_some + theorem weierstrass_curve.point.to_class_zero Modified src/algebraic_geometry/elliptic_curve/weierstrass.lean 2023-06-13 06:00:19 44e2ae8 chore(*): add mathlib4 synchronization comments (#19181) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.simple` * `algebra.category.Module.subobject` * `algebra.lie.engel` * `analysis.normed_space.star.continuous_functional_calculus` * `category_theory.bicategory.functor_bicategory` * `category_theory.groupoid.subgroupoid` * `category_theory.monoidal.center` * `linear_algebra.eigenspace.minpoly` * `measure_theory.integral.torus_integral` * `probability.density` * `topology.metric_space.hausdorff_dimension` ESTIMATED CHANGES Modified src/algebra/category/Module/simple.lean Modified src/algebra/category/Module/subobject.lean Modified src/algebra/lie/engel.lean Modified src/analysis/normed_space/star/continuous_functional_calculus.lean Modified src/category_theory/bicategory/functor_bicategory.lean Modified src/category_theory/groupoid/subgroupoid.lean Modified src/category_theory/monoidal/center.lean Modified src/linear_algebra/eigenspace/minpoly.lean Modified src/measure_theory/integral/torus_integral.lean Modified src/probability/density.lean Modified src/topology/metric_space/hausdorff_dimension.lean 2023-06-13 01:21:10 cec8151 refactor(representation_theory/Rep): define `ihom` concretely (#19170) ESTIMATED CHANGES Modified src/representation_theory/Rep.lean +/- theorem Rep.Action_ρ_eq_ρ + theorem Rep.hom_comm_apply + theorem Rep.hom_equiv_def - theorem Rep.ihom_coev_app_def +/- theorem Rep.ihom_coev_app_hom +/- theorem Rep.ihom_ev_app_hom - theorem Rep.ihom_map_hom - theorem Rep.ihom_obj_ρ +/- theorem Rep.ihom_obj_ρ_def + def Rep.monoidal_closed.linear_hom_equiv + def Rep.monoidal_closed.linear_hom_equiv_comm +/- theorem Rep.monoidal_closed.linear_hom_equiv_comm_hom +/- theorem Rep.monoidal_closed.linear_hom_equiv_comm_symm_hom +/- theorem Rep.monoidal_closed.linear_hom_equiv_hom +/- theorem Rep.monoidal_closed.linear_hom_equiv_symm_hom - theorem Rep.monoidal_closed_curry_hom - theorem Rep.monoidal_closed_uncurry_hom + theorem Rep.ρ_inv_self_apply + theorem Rep.ρ_self_inv_apply Modified src/representation_theory/group_cohomology/resolution.lean 2023-06-12 19:52:45 9fb8964 refactor(field_theory/splitting_field/is_splitting_field): use `root_set` (#19179) ESTIMATED CHANGES Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/galois.lean Modified src/field_theory/normal.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/splitting_field/construction.lean +/- theorem polynomial.splitting_field.adjoin_root_set - theorem polynomial.splitting_field.adjoin_roots + theorem polynomial.splitting_field_aux.adjoin_root_set - theorem polynomial.splitting_field_aux.adjoin_roots Modified src/field_theory/splitting_field/is_splitting_field.lean Modified src/number_theory/cyclotomic/basic.lean +/- theorem is_cyclotomic_extension.adjoin_roots_cyclotomic_eq_adjoin_nth_roots +/- theorem is_cyclotomic_extension.adjoin_roots_cyclotomic_eq_adjoin_root_cyclotomic 2023-06-12 09:33:15 d8bbb04 chore(measure_theory/function/conditional_expectation): split `measure_theory.function.conditional_expectation.basic` (#19177) ESTIMATED CHANGES Added src/measure_theory/function/conditional_expectation/ae_measurable.lean + theorem measure_theory.Lp.induction_strongly_measurable + theorem measure_theory.Lp.induction_strongly_measurable_aux + theorem measure_theory.Lp_meas.ae_fin_strongly_measurable' + theorem measure_theory.Lp_meas.ae_strongly_measurable' + def measure_theory.Lp_meas + theorem measure_theory.Lp_meas_coe + def measure_theory.Lp_meas_subgroup + theorem measure_theory.Lp_meas_subgroup_coe + def measure_theory.Lp_meas_subgroup_to_Lp_meas_iso + def measure_theory.Lp_meas_subgroup_to_Lp_trim + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_add + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_ae_eq + def measure_theory.Lp_meas_subgroup_to_Lp_trim_iso + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_left_inv + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_neg + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_norm_map + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_right_inv + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_sub + def measure_theory.Lp_meas_to_Lp_trim + theorem measure_theory.Lp_meas_to_Lp_trim_ae_eq + def measure_theory.Lp_meas_to_Lp_trim_lie + theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_indicator + theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_to_Lp + theorem measure_theory.Lp_meas_to_Lp_trim_smul + def measure_theory.Lp_trim_to_Lp_meas + theorem measure_theory.Lp_trim_to_Lp_meas_ae_eq + def measure_theory.Lp_trim_to_Lp_meas_subgroup + theorem measure_theory.Lp_trim_to_Lp_meas_subgroup_ae_eq + theorem measure_theory.ae_eq_trim_iff_of_ae_strongly_measurable' + theorem measure_theory.ae_strongly_measurable'.add + theorem measure_theory.ae_strongly_measurable'.ae_eq_mk + theorem measure_theory.ae_strongly_measurable'.ae_strongly_measurable'_of_measurable_space_le_on + theorem measure_theory.ae_strongly_measurable'.congr + theorem measure_theory.ae_strongly_measurable'.const_inner + theorem measure_theory.ae_strongly_measurable'.const_smul + theorem measure_theory.ae_strongly_measurable'.continuous_comp + def measure_theory.ae_strongly_measurable'.mk + theorem measure_theory.ae_strongly_measurable'.neg + theorem measure_theory.ae_strongly_measurable'.strongly_measurable_mk + theorem measure_theory.ae_strongly_measurable'.sub + def measure_theory.ae_strongly_measurable' + theorem measure_theory.ae_strongly_measurable'_of_ae_strongly_measurable'_trim + theorem measure_theory.ae_strongly_measurable.comp_ae_measurable' + theorem measure_theory.is_closed_ae_strongly_measurable' + theorem measure_theory.is_complete_ae_strongly_measurable' + theorem measure_theory.isometry_Lp_meas_subgroup_to_Lp_trim + theorem measure_theory.mem_Lp_meas_iff_ae_strongly_measurable' + theorem measure_theory.mem_Lp_meas_indicator_const_Lp + theorem measure_theory.mem_Lp_meas_self + theorem measure_theory.mem_Lp_meas_subgroup_iff_ae_strongly_measurable' + theorem measure_theory.mem_Lp_meas_subgroup_to_Lp_of_trim + theorem measure_theory.mem_ℒp.induction_strongly_measurable + theorem measure_theory.mem_ℒp_trim_of_mem_Lp_meas_subgroup + theorem measure_theory.strongly_measurable.ae_strongly_measurable' Modified src/measure_theory/function/conditional_expectation/basic.lean - theorem measure_theory.Lp.ae_eq_of_forall_set_integral_eq' - theorem measure_theory.Lp.ae_eq_zero_of_forall_set_integral_eq_zero' - theorem measure_theory.Lp.induction_strongly_measurable - theorem measure_theory.Lp.induction_strongly_measurable_aux - theorem measure_theory.Lp_meas.ae_eq_zero_of_forall_set_integral_eq_zero - theorem measure_theory.Lp_meas.ae_fin_strongly_measurable' - theorem measure_theory.Lp_meas.ae_strongly_measurable' - def measure_theory.Lp_meas - theorem measure_theory.Lp_meas_coe - def measure_theory.Lp_meas_subgroup - theorem measure_theory.Lp_meas_subgroup_coe - def measure_theory.Lp_meas_subgroup_to_Lp_meas_iso - def measure_theory.Lp_meas_subgroup_to_Lp_trim - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_add - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_ae_eq - def measure_theory.Lp_meas_subgroup_to_Lp_trim_iso - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_left_inv - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_neg - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_norm_map - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_right_inv - theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_sub - def measure_theory.Lp_meas_to_Lp_trim - theorem measure_theory.Lp_meas_to_Lp_trim_ae_eq - def measure_theory.Lp_meas_to_Lp_trim_lie - theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_indicator - theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_to_Lp - theorem measure_theory.Lp_meas_to_Lp_trim_smul - def measure_theory.Lp_trim_to_Lp_meas - theorem measure_theory.Lp_trim_to_Lp_meas_ae_eq - def measure_theory.Lp_trim_to_Lp_meas_subgroup - theorem measure_theory.Lp_trim_to_Lp_meas_subgroup_ae_eq - theorem measure_theory.ae_eq_of_forall_set_integral_eq_of_sigma_finite' - theorem measure_theory.ae_eq_trim_iff_of_ae_strongly_measurable' - theorem measure_theory.ae_strongly_measurable'.add - theorem measure_theory.ae_strongly_measurable'.ae_eq_mk - theorem measure_theory.ae_strongly_measurable'.ae_strongly_measurable'_of_measurable_space_le_on - theorem measure_theory.ae_strongly_measurable'.congr - theorem measure_theory.ae_strongly_measurable'.const_inner - theorem measure_theory.ae_strongly_measurable'.const_smul - theorem measure_theory.ae_strongly_measurable'.continuous_comp - def measure_theory.ae_strongly_measurable'.mk - theorem measure_theory.ae_strongly_measurable'.neg - theorem measure_theory.ae_strongly_measurable'.strongly_measurable_mk - theorem measure_theory.ae_strongly_measurable'.sub - def measure_theory.ae_strongly_measurable' - theorem measure_theory.ae_strongly_measurable'_condexp_L1 - theorem measure_theory.ae_strongly_measurable'_condexp_L1_clm - theorem measure_theory.ae_strongly_measurable'_condexp_L2 - theorem measure_theory.ae_strongly_measurable'_condexp_ind - theorem measure_theory.ae_strongly_measurable'_condexp_ind_smul - theorem measure_theory.ae_strongly_measurable'_of_ae_strongly_measurable'_trim - theorem measure_theory.ae_strongly_measurable.comp_ae_measurable' - def measure_theory.condexp_L1 - theorem measure_theory.condexp_L1_add - def measure_theory.condexp_L1_clm - theorem measure_theory.condexp_L1_clm_Lp_meas - theorem measure_theory.condexp_L1_clm_indicator_const - theorem measure_theory.condexp_L1_clm_indicator_const_Lp - theorem measure_theory.condexp_L1_clm_of_ae_strongly_measurable' - theorem measure_theory.condexp_L1_clm_smul - theorem measure_theory.condexp_L1_congr_ae - theorem measure_theory.condexp_L1_eq - theorem measure_theory.condexp_L1_measure_zero - theorem measure_theory.condexp_L1_mono - theorem measure_theory.condexp_L1_neg - theorem measure_theory.condexp_L1_of_ae_strongly_measurable' - theorem measure_theory.condexp_L1_smul - theorem measure_theory.condexp_L1_sub - theorem measure_theory.condexp_L1_undef - theorem measure_theory.condexp_L1_zero - def measure_theory.condexp_L2 - theorem measure_theory.condexp_L2_ae_eq_zero_of_ae_eq_zero - theorem measure_theory.condexp_L2_comp_continuous_linear_map - theorem measure_theory.condexp_L2_const_inner - theorem measure_theory.condexp_L2_indicator_ae_eq_smul - theorem measure_theory.condexp_L2_indicator_eq_to_span_singleton_comp - theorem measure_theory.condexp_L2_indicator_nonneg - theorem measure_theory.condexp_L2_indicator_of_measurable - def measure_theory.condexp_ind - def measure_theory.condexp_ind_L1 - theorem measure_theory.condexp_ind_L1_add - theorem measure_theory.condexp_ind_L1_disjoint_union - def measure_theory.condexp_ind_L1_fin - theorem measure_theory.condexp_ind_L1_fin_add - theorem measure_theory.condexp_ind_L1_fin_ae_eq_condexp_ind_smul - theorem measure_theory.condexp_ind_L1_fin_disjoint_union - theorem measure_theory.condexp_ind_L1_fin_smul' - theorem measure_theory.condexp_ind_L1_fin_smul - theorem measure_theory.condexp_ind_L1_of_measurable_set_of_measure_ne_top - theorem measure_theory.condexp_ind_L1_of_measure_eq_top - theorem measure_theory.condexp_ind_L1_of_not_measurable_set - theorem measure_theory.condexp_ind_L1_smul' - theorem measure_theory.condexp_ind_L1_smul - theorem measure_theory.condexp_ind_ae_eq_condexp_ind_smul - theorem measure_theory.condexp_ind_disjoint_union - theorem measure_theory.condexp_ind_disjoint_union_apply - theorem measure_theory.condexp_ind_empty - theorem measure_theory.condexp_ind_nonneg - theorem measure_theory.condexp_ind_of_measurable - theorem measure_theory.condexp_ind_smul' - def measure_theory.condexp_ind_smul - theorem measure_theory.condexp_ind_smul_add - theorem measure_theory.condexp_ind_smul_ae_eq_smul - theorem measure_theory.condexp_ind_smul_empty - theorem measure_theory.condexp_ind_smul_nonneg - theorem measure_theory.condexp_ind_smul_smul' - theorem measure_theory.condexp_ind_smul_smul - theorem measure_theory.continuous_condexp_ind_L1 - theorem measure_theory.dominated_fin_meas_additive_condexp_ind - theorem measure_theory.inner_condexp_L2_eq_inner_fun - theorem measure_theory.inner_condexp_L2_left_eq_right - theorem measure_theory.integrable_condexp_L1 - theorem measure_theory.integrable_condexp_L2_indicator - theorem measure_theory.integrable_condexp_L2_of_is_finite_measure - theorem measure_theory.integrable_condexp_ind_smul - theorem measure_theory.integrable_on_condexp_L2_of_measure_ne_top - theorem measure_theory.integral_condexp_L2_eq - theorem measure_theory.integral_condexp_L2_eq_of_fin_meas_real - theorem measure_theory.integral_norm_le_of_forall_fin_meas_integral_eq - theorem measure_theory.is_closed_ae_strongly_measurable' - theorem measure_theory.is_complete_ae_strongly_measurable' - theorem measure_theory.isometry_Lp_meas_subgroup_to_Lp_trim - theorem measure_theory.lintegral_nnnorm_condexp_L2_indicator_le - theorem measure_theory.lintegral_nnnorm_condexp_L2_indicator_le_real - theorem measure_theory.lintegral_nnnorm_condexp_L2_le - theorem measure_theory.lintegral_nnnorm_condexp_ind_smul_le - theorem measure_theory.lintegral_nnnorm_le_of_forall_fin_meas_integral_eq - theorem measure_theory.mem_Lp_meas_iff_ae_strongly_measurable' - theorem measure_theory.mem_Lp_meas_indicator_const_Lp - theorem measure_theory.mem_Lp_meas_self - theorem measure_theory.mem_Lp_meas_subgroup_iff_ae_strongly_measurable' - theorem measure_theory.mem_Lp_meas_subgroup_to_Lp_of_trim - theorem measure_theory.mem_ℒp.induction_strongly_measurable - theorem measure_theory.mem_ℒp_trim_of_mem_Lp_meas_subgroup - theorem measure_theory.norm_condexp_L2_coe_le - theorem measure_theory.norm_condexp_L2_le - theorem measure_theory.norm_condexp_L2_le_one - theorem measure_theory.norm_condexp_ind_L1_fin_le - theorem measure_theory.norm_condexp_ind_L1_le - theorem measure_theory.norm_condexp_ind_apply_le - theorem measure_theory.norm_condexp_ind_le - theorem measure_theory.set_integral_condexp_L1 - theorem measure_theory.set_integral_condexp_L1_clm - theorem measure_theory.set_integral_condexp_L1_clm_of_measure_ne_top - theorem measure_theory.set_integral_condexp_L2_indicator - theorem measure_theory.set_integral_condexp_ind - theorem measure_theory.set_integral_condexp_ind_smul - theorem measure_theory.set_lintegral_nnnorm_condexp_L2_indicator_le - theorem measure_theory.set_lintegral_nnnorm_condexp_ind_smul_le - theorem measure_theory.snorm_condexp_L2_le - theorem measure_theory.strongly_measurable.ae_strongly_measurable' Added src/measure_theory/function/conditional_expectation/condexp_L1.lean + theorem measure_theory.ae_strongly_measurable'_condexp_L1 + theorem measure_theory.ae_strongly_measurable'_condexp_L1_clm + theorem measure_theory.ae_strongly_measurable'_condexp_ind + def measure_theory.condexp_L1 + theorem measure_theory.condexp_L1_add + def measure_theory.condexp_L1_clm + theorem measure_theory.condexp_L1_clm_Lp_meas + theorem measure_theory.condexp_L1_clm_indicator_const + theorem measure_theory.condexp_L1_clm_indicator_const_Lp + theorem measure_theory.condexp_L1_clm_of_ae_strongly_measurable' + theorem measure_theory.condexp_L1_clm_smul + theorem measure_theory.condexp_L1_congr_ae + theorem measure_theory.condexp_L1_eq + theorem measure_theory.condexp_L1_measure_zero + theorem measure_theory.condexp_L1_mono + theorem measure_theory.condexp_L1_neg + theorem measure_theory.condexp_L1_of_ae_strongly_measurable' + theorem measure_theory.condexp_L1_smul + theorem measure_theory.condexp_L1_sub + theorem measure_theory.condexp_L1_undef + theorem measure_theory.condexp_L1_zero + def measure_theory.condexp_ind + def measure_theory.condexp_ind_L1 + theorem measure_theory.condexp_ind_L1_add + theorem measure_theory.condexp_ind_L1_disjoint_union + def measure_theory.condexp_ind_L1_fin + theorem measure_theory.condexp_ind_L1_fin_add + theorem measure_theory.condexp_ind_L1_fin_ae_eq_condexp_ind_smul + theorem measure_theory.condexp_ind_L1_fin_disjoint_union + theorem measure_theory.condexp_ind_L1_fin_smul' + theorem measure_theory.condexp_ind_L1_fin_smul + theorem measure_theory.condexp_ind_L1_of_measurable_set_of_measure_ne_top + theorem measure_theory.condexp_ind_L1_of_measure_eq_top + theorem measure_theory.condexp_ind_L1_of_not_measurable_set + theorem measure_theory.condexp_ind_L1_smul' + theorem measure_theory.condexp_ind_L1_smul + theorem measure_theory.condexp_ind_ae_eq_condexp_ind_smul + theorem measure_theory.condexp_ind_disjoint_union + theorem measure_theory.condexp_ind_disjoint_union_apply + theorem measure_theory.condexp_ind_empty + theorem measure_theory.condexp_ind_nonneg + theorem measure_theory.condexp_ind_of_measurable + theorem measure_theory.condexp_ind_smul' + theorem measure_theory.continuous_condexp_ind_L1 + theorem measure_theory.dominated_fin_meas_additive_condexp_ind + theorem measure_theory.integrable_condexp_L1 + theorem measure_theory.norm_condexp_ind_L1_fin_le + theorem measure_theory.norm_condexp_ind_L1_le + theorem measure_theory.norm_condexp_ind_apply_le + theorem measure_theory.norm_condexp_ind_le + theorem measure_theory.set_integral_condexp_L1 + theorem measure_theory.set_integral_condexp_L1_clm + theorem measure_theory.set_integral_condexp_L1_clm_of_measure_ne_top + theorem measure_theory.set_integral_condexp_ind Added src/measure_theory/function/conditional_expectation/condexp_L2.lean + theorem measure_theory.ae_strongly_measurable'_condexp_L2 + theorem measure_theory.ae_strongly_measurable'_condexp_ind_smul + def measure_theory.condexp_L2 + theorem measure_theory.condexp_L2_ae_eq_zero_of_ae_eq_zero + theorem measure_theory.condexp_L2_comp_continuous_linear_map + theorem measure_theory.condexp_L2_const_inner + theorem measure_theory.condexp_L2_indicator_ae_eq_smul + theorem measure_theory.condexp_L2_indicator_eq_to_span_singleton_comp + theorem measure_theory.condexp_L2_indicator_nonneg + theorem measure_theory.condexp_L2_indicator_of_measurable + def measure_theory.condexp_ind_smul + theorem measure_theory.condexp_ind_smul_add + theorem measure_theory.condexp_ind_smul_ae_eq_smul + theorem measure_theory.condexp_ind_smul_empty + theorem measure_theory.condexp_ind_smul_nonneg + theorem measure_theory.condexp_ind_smul_smul' + theorem measure_theory.condexp_ind_smul_smul + theorem measure_theory.inner_condexp_L2_eq_inner_fun + theorem measure_theory.inner_condexp_L2_left_eq_right + theorem measure_theory.integrable_condexp_L2_indicator + theorem measure_theory.integrable_condexp_L2_of_is_finite_measure + theorem measure_theory.integrable_condexp_ind_smul + theorem measure_theory.integrable_on_condexp_L2_of_measure_ne_top + theorem measure_theory.integral_condexp_L2_eq + theorem measure_theory.integral_condexp_L2_eq_of_fin_meas_real + theorem measure_theory.lintegral_nnnorm_condexp_L2_indicator_le + theorem measure_theory.lintegral_nnnorm_condexp_L2_indicator_le_real + theorem measure_theory.lintegral_nnnorm_condexp_L2_le + theorem measure_theory.lintegral_nnnorm_condexp_ind_smul_le + theorem measure_theory.norm_condexp_L2_coe_le + theorem measure_theory.norm_condexp_L2_le + theorem measure_theory.norm_condexp_L2_le_one + theorem measure_theory.set_integral_condexp_L2_indicator + theorem measure_theory.set_integral_condexp_ind_smul + theorem measure_theory.set_lintegral_nnnorm_condexp_L2_indicator_le + theorem measure_theory.set_lintegral_nnnorm_condexp_ind_smul_le + theorem measure_theory.snorm_condexp_L2_le Added src/measure_theory/function/conditional_expectation/unique.lean + theorem measure_theory.Lp.ae_eq_of_forall_set_integral_eq' + theorem measure_theory.Lp.ae_eq_zero_of_forall_set_integral_eq_zero' + theorem measure_theory.Lp_meas.ae_eq_zero_of_forall_set_integral_eq_zero + theorem measure_theory.ae_eq_of_forall_set_integral_eq_of_sigma_finite' + theorem measure_theory.integral_norm_le_of_forall_fin_meas_integral_eq + theorem measure_theory.lintegral_nnnorm_le_of_forall_fin_meas_integral_eq 2023-06-12 06:38:55 087c325 chore(*): add mathlib4 synchronization comments (#19176) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.filtered_colimits` * `analysis.normed_space.algebra` * `analysis.normed_space.spectrum` * `analysis.normed_space.star.gelfand_duality` * `analysis.normed_space.star.spectrum` * `category_theory.sites.surjective` * `measure_theory.measure.hausdorff` * `number_theory.dioph` * `number_theory.wilson` * `ring_theory.perfection` ESTIMATED CHANGES Modified src/algebra/category/Module/filtered_colimits.lean Modified src/analysis/normed_space/algebra.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/star/gelfand_duality.lean Modified src/analysis/normed_space/star/spectrum.lean Modified src/category_theory/sites/surjective.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/number_theory/dioph.lean Modified src/number_theory/wilson.lean Modified src/ring_theory/perfection.lean 2023-06-11 22:44:02 7fdd4f3 refactor(data/nat/nth): redefine, review API (#18760) Redefine `nat.nth` in terms of already available definitions, review API, generalize some lemmas. Also fix some typos in `data/set/intervals/monotone`. ESTIMATED CHANGES Modified src/data/nat/nth.lean + theorem nat.count_nth - theorem nat.count_nth_gc + theorem nat.count_nth_succ + theorem nat.exists_lt_card_finite_nth_eq + theorem nat.exists_lt_card_nth_eq + theorem nat.filter_range_nth_eq_insert +/- theorem nat.filter_range_nth_eq_insert_of_finite + theorem nat.filter_range_nth_subset_insert + theorem nat.gc_count_nth + theorem nat.image_nth_Iio_card + theorem nat.is_least_nth + theorem nat.is_least_nth_of_infinite + theorem nat.is_least_nth_of_lt_card + theorem nat.le_nth + theorem nat.le_nth_count' + theorem nat.le_nth_count +/- theorem nat.le_nth_of_count_le + theorem nat.le_nth_of_lt_nth_succ - theorem nat.le_nth_of_lt_nth_succ_finite - theorem nat.le_nth_of_lt_nth_succ_infinite + theorem nat.le_of_nth_le_nth_of_lt_card + theorem nat.lt_of_nth_lt_nth_of_lt_card + theorem nat.nth_apply_eq_order_iso_of_nat +/- theorem nat.nth_count_eq_Inf - theorem nat.nth_count_le + theorem nat.nth_eq_Inf + theorem nat.nth_eq_nthd_sort + theorem nat.nth_eq_order_emb_of_fin +/- theorem nat.nth_eq_order_iso_of_nat + theorem nat.nth_eq_zero + theorem nat.nth_eq_zero_mono + theorem nat.nth_inj_on + theorem nat.nth_injective - theorem nat.nth_injective_of_infinite + theorem nat.nth_le_nth' + theorem nat.nth_le_nth + theorem nat.nth_le_nth_of_lt_card + theorem nat.nth_lt_nth' + theorem nat.nth_lt_nth + theorem nat.nth_lt_nth_of_lt_card +/- theorem nat.nth_lt_of_lt_count + theorem nat.nth_mem +/- theorem nat.nth_mem_of_infinite - theorem nat.nth_mem_of_infinite_aux + theorem nat.nth_mem_of_lt_card - theorem nat.nth_mem_of_lt_card_finite - theorem nat.nth_mem_of_lt_card_finite_aux - theorem nat.nth_mono_of_finite +/- theorem nat.nth_monotone + theorem nat.nth_of_card_le - theorem nat.nth_set_card - theorem nat.nth_set_card_aux - theorem nat.nth_set_nonempty_of_lt_card +/- theorem nat.nth_strict_mono - theorem nat.nth_strict_mono_of_finite + theorem nat.nth_strict_mono_on +/- theorem nat.nth_zero - theorem nat.nth_zero_of_nth_zero +/- theorem nat.nth_zero_of_zero + theorem nat.range_nth_of_finite + theorem nat.range_nth_of_infinite + theorem nat.range_nth_subset + theorem nat.subset_range_nth Modified src/data/set/finite.lean + theorem set.finite.to_finset_eq_to_finset + theorem set.to_finite_to_finset Modified src/number_theory/prime_counting.lean 2023-06-11 12:27:24 ccdbfb6 feat(measure_theory/integral/set_integral): First moment method (#18731) Integrable functions are smaller/larger than their mean on a set of positive measure. We prove it for the Bochner and Lebesgue integrals. ESTIMATED CHANGES Modified src/analysis/mean_inequalities_pow.lean Modified src/data/real/ennreal.lean - theorem ennreal.div_eq_inv_mul + theorem ennreal.to_nnreal_ne_one + theorem ennreal.to_nnreal_ne_zero + theorem ennreal.to_real_ne_one + theorem ennreal.to_real_ne_zero Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.integrable_const Modified src/measure_theory/integral/average.lean + theorem measure_theory.average_to_real + theorem measure_theory.exists_average_le + theorem measure_theory.exists_integral_le + theorem measure_theory.exists_le_average + theorem measure_theory.exists_le_integral + theorem measure_theory.exists_le_set_average + theorem measure_theory.exists_not_mem_null_average_le + theorem measure_theory.exists_not_mem_null_integral_le + theorem measure_theory.exists_not_mem_null_le_average + theorem measure_theory.exists_not_mem_null_le_integral + theorem measure_theory.exists_set_average_le + theorem measure_theory.integral_average + theorem measure_theory.integral_average_sub + theorem measure_theory.integral_sub_average + theorem measure_theory.measure_average_le_pos + theorem measure_theory.measure_integral_le_pos + theorem measure_theory.measure_le_average_pos + theorem measure_theory.measure_le_integral_pos + theorem measure_theory.measure_le_set_average_pos + theorem measure_theory.measure_set_average_le_pos + theorem measure_theory.of_real_average + theorem measure_theory.of_real_set_average + theorem measure_theory.set_average_congr_set_ae + theorem measure_theory.set_average_to_real + theorem measure_theory.set_integral_set_average + theorem measure_theory.set_integral_set_average_sub + theorem measure_theory.set_integral_sub_set_average 2023-06-11 07:04:48 660b3a2 chore(*): add mathlib4 synchronization comments (#19174) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.lie.cartan_matrix` * `algebra.module.zlattice` * `analysis.complex.polynomial` * `category_theory.monoidal.limits` * `category_theory.preadditive.schur` * `category_theory.sites.compatible_sheafification` * `data.polynomial.unit_trinomial` * `field_theory.is_alg_closed.classification` * `field_theory.is_alg_closed.spectrum` * `linear_algebra.eigenspace.is_alg_closed` * `linear_algebra.matrix.charpoly.eigs` * `measure_theory.measure.portmanteau` ESTIMATED CHANGES Modified src/algebra/lie/cartan_matrix.lean Modified src/algebra/module/zlattice.lean Modified src/analysis/complex/polynomial.lean Modified src/category_theory/monoidal/limits.lean Modified src/category_theory/preadditive/schur.lean Modified src/category_theory/sites/compatible_sheafification.lean Modified src/data/polynomial/unit_trinomial.lean Modified src/field_theory/is_alg_closed/classification.lean Modified src/field_theory/is_alg_closed/spectrum.lean Modified src/linear_algebra/eigenspace/is_alg_closed.lean Modified src/linear_algebra/matrix/charpoly/eigs.lean Modified src/measure_theory/measure/portmanteau.lean 2023-06-10 20:00:22 c471da7 chore(number_theory/legendre_symbol/gauss_eisenstein_lemmas): move zmod.wilsons_lemma (#19172) ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean - theorem zmod.prod_Ico_one_prime - theorem zmod.wilsons_lemma Modified src/number_theory/wilson.lean + theorem zmod.prod_Ico_one_prime + theorem zmod.wilsons_lemma 2023-06-10 18:56:02 90b0d53 feat(linear_algebra/free_module/ideal_quotient): prove dimension of quotient by ideal equals degree of norm of generator (#19121) Also refactor file into `namespace ideal`. ESTIMATED CHANGES Modified src/linear_algebra/free_module/ideal_quotient.lean +/- theorem ideal.finrank_quotient_eq_sum Added src/linear_algebra/free_module/norm.lean + theorem associated_norm_prod_smith + theorem finrank_quotient_span_eq_nat_degree_norm 2023-06-10 17:01:39 e1e7190 feat(data/polynomial/div): add X_sub_C_dvd_sub_C_eval (#19120) ESTIMATED CHANGES Modified src/data/polynomial/div.lean + theorem polynomial.X_sub_C_dvd_sub_C_eval +/- theorem polynomial.dvd_iff_is_root + theorem polynomial.mem_span_C_X_sub_C_X_sub_C_iff_eval_eval_eq_zero 2023-06-10 05:31:39 fd4551c chore(*): add mathlib4 synchronization comments (#19171) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.lie.cartan_subalgebra` * `algebra.lie.nilpotent` * `analysis.ODE.picard_lindelof` * `analysis.calculus.affine_map` * `analysis.complex.abs_max` * `analysis.complex.cauchy_integral` * `analysis.complex.liouville` * `analysis.complex.locally_uniform_limit` * `analysis.complex.phragmen_lindelof` * `analysis.complex.removable_singularity` * `analysis.complex.schwarz` * `analysis.convex.measure` * `analysis.fourier.fourier_transform` * `analysis.normed_space.add_torsor_bases` * `analysis.normed_space.continuous_affine_map` * `analysis.special_functions.improper_integrals` * `analysis.special_functions.stirling` * `analysis.special_functions.trigonometric.euler_sine_prod` * `analysis.sum_integral_comparisons` * `category_theory.closed.cartesian` * `category_theory.closed.types` * `category_theory.closed.zero` * `category_theory.monoidal.Mod_` * `data.real.pi.bounds` * `data.vector3` * `field_theory.fixed` * `field_theory.is_alg_closed.basic` * `field_theory.normal` * `measure_theory.group.geometry_of_numbers` * `measure_theory.group.integration` * `measure_theory.integral.circle_integral` * `measure_theory.integral.circle_transform` * `measure_theory.integral.exp_decay` * `measure_theory.integral.integral_eq_improper` * `measure_theory.integral.layercake` * `number_theory.bernoulli_polynomials` * `probability.kernel.basic` * `topology.category.Profinite.cofiltered_limit` ESTIMATED CHANGES Modified src/algebra/lie/cartan_subalgebra.lean Modified src/algebra/lie/nilpotent.lean Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/calculus/affine_map.lean Modified src/analysis/complex/abs_max.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/complex/liouville.lean Modified src/analysis/complex/locally_uniform_limit.lean Modified src/analysis/complex/phragmen_lindelof.lean Modified src/analysis/complex/removable_singularity.lean Modified src/analysis/complex/schwarz.lean Modified src/analysis/convex/measure.lean Modified src/analysis/fourier/fourier_transform.lean Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/analysis/normed_space/continuous_affine_map.lean Modified src/analysis/special_functions/improper_integrals.lean Modified src/analysis/special_functions/stirling.lean Modified src/analysis/special_functions/trigonometric/euler_sine_prod.lean Modified src/analysis/sum_integral_comparisons.lean Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/closed/types.lean Modified src/category_theory/closed/zero.lean Modified src/category_theory/monoidal/Mod_.lean Modified src/data/real/pi/bounds.lean Modified src/data/vector3.lean Modified src/field_theory/fixed.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/normal.lean Modified src/measure_theory/group/geometry_of_numbers.lean Modified src/measure_theory/group/integration.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/integral/circle_transform.lean Modified src/measure_theory/integral/exp_decay.lean Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/layercake.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/probability/kernel/basic.lean Modified src/topology/category/Profinite/cofiltered_limit.lean 2023-06-09 20:02:24 a3e83f0 feat(algebra/module/zlattice): prove some results about Z-lattices (#18266) For a ℤ-lattice `L` given by `L := submodule.span ℤ (set.range b)` where `b` is a basis of finite dimensional real vector space `E`, this PR defines the fundamental domain of `L` and proves that it is a fundamental domain in the sense of `measure_theory.group.fundamental_domain`. It also introduces most of the tools that will be needed to prove that a discrete subgroup of `E` that spans `E` over `ℝ` is a ℤ-lattice, see #18477 ESTIMATED CHANGES Added src/algebra/module/zlattice.lean + def zspan.ceil + theorem zspan.ceil_eq_self_of_mem + theorem zspan.coe_floor_self + theorem zspan.coe_fract_self + theorem zspan.exist_unique_vadd_mem_fundamental_domain + def zspan.floor + theorem zspan.floor_eq_self_of_mem + def zspan.fract + theorem zspan.fract_add_zspan + theorem zspan.fract_apply + theorem zspan.fract_eq_fract + theorem zspan.fract_eq_self + theorem zspan.fract_fract + theorem zspan.fract_mem_fundamental_domain + theorem zspan.fract_zspan_add + def zspan.fundamental_domain + theorem zspan.fundamental_domain_bounded + theorem zspan.fundamental_domain_measurable_set + theorem zspan.mem_fundamental_domain + theorem zspan.norm_fract_le + theorem zspan.repr_ceil_apply + theorem zspan.repr_floor_apply + theorem zspan.repr_fract_apply + theorem zspan.vadd_mem_fundamental_domain 2023-06-09 17:26:37 96aa788 feat(linear_algebra/matrix/nonsingular_inverse): 2×2 block triangular matrices are invertible iff their diagonal is (#18849) ESTIMATED CHANGES Modified src/linear_algebra/matrix/schur_complement.lean + def matrix.from_blocks_zero₁₂_invertible + def matrix.from_blocks_zero₁₂_invertible_equiv + def matrix.from_blocks_zero₂₁_invertible + def matrix.from_blocks_zero₂₁_invertible_equiv + theorem matrix.inv_from_blocks_zero₁₂_of_is_unit_iff + theorem matrix.inv_from_blocks_zero₂₁_of_is_unit_iff + theorem matrix.inv_of_from_blocks_zero₁₂_eq + theorem matrix.inv_of_from_blocks_zero₂₁_eq + def matrix.invertible_of_from_blocks_zero₁₂_invertible + def matrix.invertible_of_from_blocks_zero₂₁_invertible + theorem matrix.is_unit_from_blocks_zero₁₂ + theorem matrix.is_unit_from_blocks_zero₂₁ 2023-06-09 17:26:36 ba074af feat(probability/martingale): optional sampling theorem (#14065) We prove the optional sampling theorem: if `τ` is a bounded stopping time and `σ` is another stopping time, then the value of a martingale `f` at the stopping time `min τ σ` is almost everywhere equal to `μ[stopped_value f τ | hσ.measurable_space]`. ESTIMATED CHANGES Modified src/probability/martingale/basic.lean Added src/probability/martingale/optional_sampling.lean + theorem measure_theory.martingale.condexp_stopped_value_stopping_time_ae_eq_restrict_le + theorem measure_theory.martingale.condexp_stopping_time_ae_eq_restrict_eq_const + theorem measure_theory.martingale.condexp_stopping_time_ae_eq_restrict_eq_const_of_le_const + theorem measure_theory.martingale.stopped_value_ae_eq_condexp_of_le + theorem measure_theory.martingale.stopped_value_ae_eq_condexp_of_le_const + theorem measure_theory.martingale.stopped_value_ae_eq_condexp_of_le_const_of_countable_range + theorem measure_theory.martingale.stopped_value_ae_eq_condexp_of_le_of_countable_range + theorem measure_theory.martingale.stopped_value_ae_eq_restrict_eq + theorem measure_theory.martingale.stopped_value_min_ae_eq_condexp Modified src/probability/process/stopping.lean + theorem measure_theory.condexp_min_stopping_time_ae_eq_restrict_le + theorem measure_theory.condexp_min_stopping_time_ae_eq_restrict_le_const + theorem measure_theory.condexp_stopping_time_ae_eq_restrict_eq + theorem measure_theory.condexp_stopping_time_ae_eq_restrict_eq_of_countable + theorem measure_theory.condexp_stopping_time_ae_eq_restrict_eq_of_countable_range 2023-06-09 14:50:20 cc67cd7 chore(*/centralizer): add forgotten `to_additive`s (#19168) I forgot these in #18861. These are already in the forward-port PR, leanprover-community/mathlib4#4896. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.center_le_centralizer +/- theorem subgroup.centralizer_eq_top_iff_subset Modified src/group_theory/submonoid/centralizer.lean +/- theorem submonoid.center_le_centralizer +/- theorem submonoid.centralizer_eq_top_iff_subset Modified src/group_theory/subsemigroup/centralizer.lean +/- theorem set.centralizer_eq_top_iff_subset +/- theorem subsemigroup.centralizer_eq_top_iff_subset 2023-06-09 07:26:36 59150e4 chore(modular_forms/basic): fix typo in docs (#19166) ESTIMATED CHANGES Modified src/number_theory/modular_forms/basic.lean 2023-06-09 05:37:49 6b31d1e chore(*): add mathlib4 synchronization comments (#19167) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebra.spectrum` * `algebra.category.Module.algebra` * `algebra.lie.free` * `algebra.lie.normalizer` * `algebra.lie.quotient` * `algebra.lie.universal_enveloping` * `algebra.order.complete_field` * `algebra.order.interval` * `algebra.star.order` * `analysis.normed_space.enorm` * `analysis.special_functions.integrals` * `analysis.special_functions.non_integrable` * `analysis.special_functions.polar_coord` * `category_theory.monoidal.of_has_finite_products` * `category_theory.monoidal.opposite` * `category_theory.monoidal.skeleton` * `category_theory.monoidal.types.coyoneda` * `category_theory.preadditive.Mat` * `data.rat.star` * `data.real.pi.wallis` * `field_theory.adjoin` * `group_theory.schur_zassenhaus` * `linear_algebra.eigenspace.basic` * `linear_algebra.tensor_algebra.grading` * `measure_theory.covering.besicovitch` * `measure_theory.covering.besicovitch_vector_space` * `measure_theory.function.jacobian` * `measure_theory.integral.divergence_theorem` * `measure_theory.integral.fund_thm_calculus` * `measure_theory.measure.lebesgue.integral` * `number_theory.ramification_inertia` * `ring_theory.dedekind_domain.dvr` * `ring_theory.dedekind_domain.pid` * `ring_theory.discrete_valuation_ring.tfae` * `ring_theory.polynomial.cyclotomic.basic` * `ring_theory.witt_vector.basic` * `ring_theory.witt_vector.is_poly` * `ring_theory.witt_vector.mul_p` * `ring_theory.witt_vector.teichmuller` * `topology.algebra.continuous_affine_map` * `topology.algebra.module.character_space` * `topology.category.Compactum` * `topology.continuous_function.units` ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean Modified src/algebra/category/Module/algebra.lean Modified src/algebra/lie/free.lean Modified src/algebra/lie/normalizer.lean Modified src/algebra/lie/quotient.lean Modified src/algebra/lie/universal_enveloping.lean Modified src/algebra/order/complete_field.lean Modified src/algebra/order/interval.lean Modified src/algebra/star/order.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/special_functions/integrals.lean Modified src/analysis/special_functions/non_integrable.lean Modified src/analysis/special_functions/polar_coord.lean Modified src/category_theory/monoidal/of_has_finite_products.lean Modified src/category_theory/monoidal/opposite.lean Modified src/category_theory/monoidal/skeleton.lean Modified src/category_theory/monoidal/types/coyoneda.lean Modified src/category_theory/preadditive/Mat.lean Modified src/data/rat/star.lean Modified src/data/real/pi/wallis.lean Modified src/field_theory/adjoin.lean Modified src/group_theory/schur_zassenhaus.lean Modified src/linear_algebra/eigenspace/basic.lean Modified src/linear_algebra/tensor_algebra/grading.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/fund_thm_calculus.lean Modified src/measure_theory/measure/lebesgue/integral.lean Modified src/number_theory/ramification_inertia.lean Modified src/ring_theory/dedekind_domain/dvr.lean Modified src/ring_theory/dedekind_domain/pid.lean Modified src/ring_theory/discrete_valuation_ring/tfae.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/witt_vector/basic.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/mul_p.lean Modified src/ring_theory/witt_vector/teichmuller.lean Modified src/topology/algebra/continuous_affine_map.lean Modified src/topology/algebra/module/character_space.lean Modified src/topology/category/Compactum.lean Modified src/topology/continuous_function/units.lean 2023-06-09 01:23:28 74f1d61 feat(analysis/convex/cone/proper): define proper cone (#18913) Part of #16266 We define proper cones as nonempty, closed cones and define duals. Next todo: Prove Farkas' lemma from #19008 ESTIMATED CHANGES Modified src/analysis/convex/cone/proper.lean + theorem convex_cone.closure_eq +/- theorem convex_cone.coe_closure + theorem proper_cone.coe_dual + theorem proper_cone.coe_map + theorem proper_cone.coe_zero + def proper_cone.dual + theorem proper_cone.dual_dual + theorem proper_cone.ext' + theorem proper_cone.ext + theorem proper_cone.map_id + theorem proper_cone.mem_coe + theorem proper_cone.mem_dual + theorem proper_cone.mem_map + theorem proper_cone.mem_zero + theorem proper_cone.pointed_zero + theorem proper_cone.to_convex_cone_eq_coe + structure proper_cone 2023-06-08 04:42:31 7e5137f chore(*): add mathlib4 synchronization comments (#19165) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.lie.classical` * `analysis.calculus.bump_function_inner` * `analysis.calculus.monotone` * `analysis.calculus.parametric_interval_integral` * `analysis.normed_space.quaternion_exponential` * `analysis.special_functions.trigonometric.arctan_deriv` * `analysis.special_functions.trigonometric.bounds` * `category_theory.bicategory.coherence_tactic` * `category_theory.monoidal.Mon_` * `category_theory.monoidal.coherence` * `category_theory.monoidal.subcategory` * `category_theory.sites.compatible_plus` * `category_theory.sites.types` * `data.json` * `data.real.pi.leibniz` * `geometry.euclidean.angle.unoriented.right_angle` * `linear_algebra.tensor_algebra.basic` * `measure_theory.covering.density_theorem` * `measure_theory.covering.differentiation` * `measure_theory.covering.liminf_limsup` * `measure_theory.covering.one_dim` * `measure_theory.decomposition.lebesgue` * `measure_theory.decomposition.radon_nikodym` * `measure_theory.function.continuous_map_dense` * `measure_theory.function.l2_space` * `measure_theory.function.special_functions.arctan` * `measure_theory.integral.interval_average` * `measure_theory.integral.interval_integral` * `measure_theory.integral.peak_function` * `measure_theory.measure.finite_measure` * `measure_theory.measure.haar.quotient` * `measure_theory.measure.probability_measure` * `probability.integration` * `ring_theory.class_group` * `ring_theory.roots_of_unity.basic` * `ring_theory.roots_of_unity.complex` * `topology.order.hom.esakia` ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/analysis/calculus/bump_function_inner.lean Modified src/analysis/calculus/monotone.lean Modified src/analysis/calculus/parametric_interval_integral.lean Modified src/analysis/normed_space/quaternion_exponential.lean Modified src/analysis/special_functions/trigonometric/arctan_deriv.lean Modified src/analysis/special_functions/trigonometric/bounds.lean Modified src/category_theory/bicategory/coherence_tactic.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/coherence.lean Modified src/category_theory/monoidal/subcategory.lean Modified src/category_theory/sites/compatible_plus.lean Modified src/category_theory/sites/types.lean Modified src/data/json.lean Modified src/data/real/pi/leibniz.lean Modified src/geometry/euclidean/angle/unoriented/right_angle.lean Modified src/linear_algebra/tensor_algebra/basic.lean Modified src/measure_theory/covering/density_theorem.lean Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/covering/liminf_limsup.lean Modified src/measure_theory/covering/one_dim.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/radon_nikodym.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/special_functions/arctan.lean Modified src/measure_theory/integral/interval_average.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/peak_function.lean Modified src/measure_theory/measure/finite_measure.lean Modified src/measure_theory/measure/haar/quotient.lean Modified src/measure_theory/measure/probability_measure.lean Modified src/probability/integration.lean Modified src/ring_theory/class_group.lean Modified src/ring_theory/roots_of_unity/basic.lean Modified src/ring_theory/roots_of_unity/complex.lean Modified src/topology/order/hom/esakia.lean 2023-06-07 19:34:28 b915e93 feat(ring_theory/subring): centralizer as a subring (#18861) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean + theorem subalgebra.center_le_centralizer + theorem subalgebra.centralizer_eq_top_iff_subset Modified src/group_theory/subgroup/basic.lean + theorem subgroup.center_le_centralizer + theorem subgroup.centralizer_eq_top_iff_subset Modified src/group_theory/submonoid/centralizer.lean + theorem submonoid.center_le_centralizer + theorem submonoid.centralizer_eq_top_iff_subset Modified src/group_theory/subsemigroup/centralizer.lean + theorem set.center_subset_centralizer + theorem set.centralizer_eq_top_iff_subset + theorem subsemigroup.center_le_centralizer + theorem subsemigroup.centralizer_eq_top_iff_subset Modified src/ring_theory/non_unital_subsemiring/basic.lean + theorem non_unital_subsemiring.center_le_centralizer + theorem non_unital_subsemiring.centralizer_eq_top_iff_subset Modified src/ring_theory/subring/basic.lean + theorem subring.center_le_centralizer + def subring.centralizer + theorem subring.centralizer_eq_top_iff_subset + theorem subring.centralizer_le + theorem subring.centralizer_to_submonoid + theorem subring.centralizer_to_subsemiring + theorem subring.centralizer_univ + theorem subring.coe_centralizer + theorem subring.mem_centralizer_iff Modified src/ring_theory/subsemiring/basic.lean + theorem subsemiring.center_le_centralizer + theorem subsemiring.centralizer_eq_top_iff_subset 2023-06-07 16:34:13 31c24aa feat(algebra/star/basic): refactor `star_ordered_ring` to include `add_submonoid.closure` (#18854) Per [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Star.20ordered.20ring), this refactors `star_ordered_ring` so that the condition `star_ordered_ring.nonneg_iff` is changed from `∀ r : R, 0 ≤ r ↔ ∃ s, r = star s * s` to something morally equivalent to `∀ x : R, 0 ≤ x ↔ x ∈ add_submonoid.closure (set.range (λ s : R, star s * s))`. In fact, we actually change the structure field `nonneg_iff` to `le_iff`, which characterizes `· ≤ ·` instead of just `0 ≤ ·`. When `R` is a `non_unital_ring`, there is effectively no change (see how we recover `star_ordered_ring.nonneg_iff` and also `star_ordered_ring.of_nonneg_iff`), but it gives a more useful and sensible condition when `R` is only a `non_unital_semiring`. For instance, now `conjugate_le_conjugate` holds for `non_unital_semiring`. There are essentially two reasons for this change. 1. It would be nice if things like `ℚ` could be `star_ordered_ring`s. This is a minor reason, but it should be a nice convenience. This instance is added in this PR in a new file. 2. Much more importantly, we want to declare the positive elements in a `star_ordered_ring` as an `add_submonoid`, but to accomplish this with the previous definition requires much more stringent type class assumptions (e.g., C⋆-algebras) and sophisticated machinery (the continuous functional calculus) in order to show that the sum of positive elements is positive. This change essentially allows us to defer that proof obligation to the settings where it will matter that a positive element really does have the form `star s * s`. We remark that even for C⋆-algebras, the fact that the sum of positive elements (i.e., those of the form `star s * s`) is positive is a deep result which was first shown in 1952 by [Fukamiya](http://www.sci.kumamoto-u.ac.jp/~kjm/BKS/kjmpdf/KJSM/v1-4-fukamiya.pdf), and then again in 1953 by [Kelley and Vaught](https://www.ams.org/journals/tran/1953-074-01/S0002-9947-1953-0054175-2/S0002-9947-1953-0054175-2.pdf). These proofs are in essence very similar, but the latter is more aesthetically pleasing, and it is this proof that appears in all the textbooks. I went looking and did not see another proof anywhere in the literature. We provide a few convenience constructors for `star_ordered_ring` in the form of reducible definitions which can apply when `R` is either a `non_unital_ring` (so we only need to characterize nonnegativity), and / or when positive elements have exactly the form `star s * s`. In this way, we can effectively maintain the status quo (see the instances for `real` and `complex`). ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/star/basic.lean - theorem conjugate_le_conjugate' - theorem conjugate_le_conjugate - theorem conjugate_nonneg' - theorem conjugate_nonneg - theorem star_mul_self_nonneg' - theorem star_mul_self_nonneg Modified src/algebra/star/chsh.lean Added src/algebra/star/order.lean + theorem conjugate_le_conjugate' + theorem conjugate_le_conjugate + theorem conjugate_nonneg' + theorem conjugate_nonneg + theorem star_mul_self_nonneg' + theorem star_mul_self_nonneg + theorem star_ordered_ring.nonneg_iff + def star_ordered_ring.of_le_iff + def star_ordered_ring.of_nonneg_iff' + def star_ordered_ring.of_nonneg_iff Modified src/analysis/normed_space/star/continuous_functional_calculus.lean Modified src/data/complex/basic.lean Added src/data/rat/star.lean Modified src/data/real/sqrt.lean Modified src/linear_algebra/matrix/dot_product.lean 2023-06-07 13:00:51 e354e86 feat(geometry/manifold): lemmas from the sphere eversion project (#18877) * Also adds a new library note `comp_of_eq lemmas` about how (I think) we should better formulate composition lemmas of properties of functions. * About the library note `comp_of_eq lemmas`: exactly the same problems happen in Lean 4. * renamings ``` smooth_iff_proj_smooth -> smooth_prod_iff differentiable_at.fderiv_within_prod -> differentiable_within_at.fderiv_within_prod ``` * We add a `path_connected_space` instance of the tangent space. This instance is sufficient to compile sphere-eversion, without any `normed_space` instances on the tangent space (which are not the canonical structure on the tangent space). * From the sphere eversion project ESTIMATED CHANGES Modified src/analysis/calculus/fderiv/prod.lean - theorem differentiable_at.fderiv_within_prod + theorem differentiable_within_at.fderiv_within_prod Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff_at.comp_of_eq + theorem cont_mdiff_on_ext_chart_at_symm + theorem cont_mdiff_on_extend_symm + theorem cont_mdiff_on_model_symm + theorem cont_mdiff_prod_iff + theorem cont_mdiff_within_at.comp_of_eq + theorem smooth_at_prod_iff - theorem smooth_iff_proj_smooth + theorem smooth_prod_iff Modified src/geometry/manifold/cont_mdiff_map.lean + def cont_mdiff_map.fst + def cont_mdiff_map.prod_mk + def cont_mdiff_map.snd Modified src/geometry/manifold/cont_mdiff_mfderiv.lean + theorem cont_mdiff_at.mfderiv_apply Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/mfderiv.lean + theorem has_mfderiv_at_fst + theorem has_mfderiv_at_snd + theorem has_mfderiv_within_at_fst + theorem has_mfderiv_within_at_snd + theorem mdifferentiable.prod_mk + theorem mdifferentiable.prod_mk_space + theorem mdifferentiable_at.mfderiv_prod + theorem mdifferentiable_at.prod_mk + theorem mdifferentiable_at.prod_mk_space + theorem mdifferentiable_at_fst + theorem mdifferentiable_at_snd + theorem mdifferentiable_fst + theorem mdifferentiable_on.prod_mk + theorem mdifferentiable_on.prod_mk_space + theorem mdifferentiable_on_fst + theorem mdifferentiable_on_snd + theorem mdifferentiable_snd + theorem mdifferentiable_within_at.prod_mk + theorem mdifferentiable_within_at.prod_mk_space + theorem mdifferentiable_within_at_fst + theorem mdifferentiable_within_at_snd + theorem mfderiv_comp_of_eq + theorem mfderiv_congr + theorem mfderiv_congr_point + theorem mfderiv_fst + theorem mfderiv_prod_eq_add + theorem mfderiv_prod_left + theorem mfderiv_prod_right + theorem mfderiv_snd + theorem mfderiv_within_fst + theorem mfderiv_within_snd + theorem tangent_map_prod_fst + theorem tangent_map_prod_snd + theorem tangent_map_within_prod_fst + theorem tangent_map_within_prod_snd Modified src/geometry/manifold/vector_bundle/tangent.lean Modified src/topology/algebra/module/basic.lean + theorem continuous_linear_map.comp_fst_add_comp_snd + theorem continuous_linear_map.coprod_inl_inr Modified src/topology/basic.lean + theorem continuous_at.comp_of_eq Modified test/continuity.lean 2023-06-07 11:35:18 3b92d54 chore(probability/kernel/composition): redefine kernel.comp using measure.bind, remove kernel.map_measure (#19160) We replace the definition of `kernel.comp` with a new one using `measure.bind`: it removes the need for `is_s_finite_kernel` hypotheses in the definition and most lemmas. When the kernels are s-finite, the new definition coincides with the old one. We remove `kernel.map_measure` because it is exactly the same as `measure.bind` applied to a kernel. ESTIMATED CHANGES Modified src/probability/kernel/composition.lean +/- def probability_theory.kernel.comp + theorem probability_theory.kernel.comp_apply' +/- theorem probability_theory.kernel.comp_apply +/- theorem probability_theory.kernel.comp_deterministic_eq_comap + theorem probability_theory.kernel.comp_eq_snd_comp_prod +/- theorem probability_theory.kernel.deterministic_comp_eq_map +/- theorem probability_theory.kernel.lintegral_comp Modified src/probability/kernel/invariance.lean + theorem probability_theory.kernel.bind_add + theorem probability_theory.kernel.bind_smul - theorem probability_theory.kernel.comp_apply_eq_map_measure + theorem probability_theory.kernel.comp_const_apply_eq_bind - theorem probability_theory.kernel.comp_const_apply_eq_map_measure + theorem probability_theory.kernel.const_bind_eq_comp_const - theorem probability_theory.kernel.const_map_measure_eq_comp_const +/- theorem probability_theory.kernel.invariant.comp +/- theorem probability_theory.kernel.invariant.comp_const +/- theorem probability_theory.kernel.invariant.def - theorem probability_theory.kernel.lintegral_map_measure - def probability_theory.kernel.map_measure - theorem probability_theory.kernel.map_measure_add - theorem probability_theory.kernel.map_measure_apply - theorem probability_theory.kernel.map_measure_smul - theorem probability_theory.kernel.map_measure_zero 2023-06-07 10:28:17 0dc4079 refactor(geometry/manifold/cont_mdiff_map): refactor to reduce imports (#19164) See https://tqft.net/mathlib4/2023-06-07/geometry.manifold.algebra.left_invariant_derivation.pdf for the motivation. I'm happy if this one is shot down. :-) ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/cont_mdiff_mfderiv.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/instances/sphere.lean 2023-06-07 07:55:03 81843c0 feat (number_theory/zeta_function): func eqn + link to Bernoulli nos (#19158) Functional equation relating `zeta (1 - s)` to `zeta s`, and formula for `zeta (-k)` for nat `k` in terms of Bernoulli numbers. ESTIMATED CHANGES Modified src/number_theory/zeta_function.lean + theorem riemann_completed_zeta_one_sub + theorem riemann_completed_zeta₀_one_sub + theorem riemann_zeta_four + theorem riemann_zeta_neg_nat_eq_bernoulli + theorem riemann_zeta_one_sub + theorem riemann_zeta_two + theorem riemann_zeta_two_mul_nat - theorem zeta_eq_tsum_of_one_lt_re + theorem zeta_eq_tsum_one_div_nat_add_one_cpow + theorem zeta_eq_tsum_one_div_nat_cpow + theorem zeta_nat_eq_tsum_of_gt_one 2023-06-07 06:47:08 6b01692 chore(linear_algebra/eigenspace): split file (#19163) ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/weights.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/inner_product_space/spectrum.lean Renamed src/linear_algebra/eigenspace.lean to src/linear_algebra/eigenspace/basic.lean - theorem module.End.aeval_apply_of_has_eigenvector - theorem module.End.eigenspace_aeval_polynomial_degree_1 - theorem module.End.exists_eigenvalue - theorem module.End.has_eigenvalue_iff_is_root - theorem module.End.has_eigenvalue_of_is_root - theorem module.End.is_root_of_has_eigenvalue - theorem module.End.ker_aeval_ring_hom'_unit_polynomial - theorem module.End.supr_generalized_eigenspace_eq_top Added src/linear_algebra/eigenspace/is_alg_closed.lean + theorem module.End.exists_eigenvalue + theorem module.End.supr_generalized_eigenspace_eq_top Added src/linear_algebra/eigenspace/minpoly.lean + theorem module.End.aeval_apply_of_has_eigenvector + theorem module.End.eigenspace_aeval_polynomial_degree_1 + theorem module.End.has_eigenvalue_iff_is_root + theorem module.End.has_eigenvalue_of_is_root + theorem module.End.is_root_of_has_eigenvalue + theorem module.End.ker_aeval_ring_hom'_unit_polynomial 2023-06-07 05:24:06 c209272 chore(*): add mathlib4 synchronization comments (#19162) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.colimits` * `algebra.category.Module.monoidal.closed` * `algebra.homology.local_cohomology` * `analysis.box_integral.basic` * `analysis.box_integral.divergence_theorem` * `analysis.box_integral.integrability` * `analysis.calculus.parametric_integral` * `analysis.convex.integral` * `analysis.convex.specific_functions.deriv` * `analysis.special_functions.exponential` * `analysis.special_functions.pow.deriv` * `analysis.special_functions.trigonometric.arctan` * `analysis.special_functions.trigonometric.complex` * `analysis.special_functions.trigonometric.complex_deriv` * `analysis.special_functions.trigonometric.series` * `category_theory.closed.functor_category` * `category_theory.with_terminal` * `combinatorics.additive.behrend` * `combinatorics.derangements.exponential` * `data.set.ncard` * `field_theory.splitting_field.is_splitting_field` * `group_theory.schreier` * `group_theory.specific_groups.quaternion` * `linear_algebra.quadratic_form.complex` * `linear_algebra.quadratic_form.isometry` * `linear_algebra.quadratic_form.prod` * `linear_algebra.quadratic_form.real` * `measure_theory.constructions.prod.integral` * `measure_theory.function.ae_eq_of_integral` * `measure_theory.group.fundamental_domain` * `measure_theory.integral.average` * `measure_theory.integral.set_integral` * `measure_theory.measure.haar.inner_product_space` * `measure_theory.measure.with_density_vector_measure` * `representation_theory.Action` * `ring_theory.dedekind_domain.factorization` * `ring_theory.localization.away.adjoin_root` * `ring_theory.valuation.valuation_ring` ESTIMATED CHANGES Modified src/algebra/category/Module/colimits.lean Modified src/algebra/category/Module/monoidal/closed.lean Modified src/algebra/homology/local_cohomology.lean Modified src/analysis/box_integral/basic.lean Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/box_integral/integrability.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/convex/integral.lean Modified src/analysis/convex/specific_functions/deriv.lean Modified src/analysis/special_functions/exponential.lean Modified src/analysis/special_functions/pow/deriv.lean Modified src/analysis/special_functions/trigonometric/arctan.lean Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/analysis/special_functions/trigonometric/complex_deriv.lean Modified src/analysis/special_functions/trigonometric/series.lean Modified src/category_theory/closed/functor_category.lean Modified src/category_theory/with_terminal.lean Modified src/combinatorics/additive/behrend.lean Modified src/combinatorics/derangements/exponential.lean Modified src/data/set/ncard.lean Modified src/field_theory/splitting_field/is_splitting_field.lean Modified src/group_theory/schreier.lean Modified src/group_theory/specific_groups/quaternion.lean Modified src/linear_algebra/quadratic_form/complex.lean Modified src/linear_algebra/quadratic_form/isometry.lean Modified src/linear_algebra/quadratic_form/prod.lean Modified src/linear_algebra/quadratic_form/real.lean Modified src/measure_theory/constructions/prod/integral.lean Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/integral/average.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/haar/inner_product_space.lean Modified src/measure_theory/measure/with_density_vector_measure.lean Modified src/representation_theory/Action.lean Modified src/ring_theory/dedekind_domain/factorization.lean Modified src/ring_theory/localization/away/adjoin_root.lean Modified src/ring_theory/valuation/valuation_ring.lean 2023-06-06 17:18:51 58a2722 chore(algebra/algebra/spectrum): split file (#19161) This splits off all the material related to polynomials from `algebra.algebra.spectrum` into a new file `field_theory.is_alg_closed.spectrum`, because (almost) all of it requires `is_alg_closed 𝕜`. This significantly simplifies the import tree for this file, and for a few files which import it. This also does two minor housekeeping chores: 1. generalizes type class assumptions for `alg_hom.mem_resolvent_set_apply` and `alg_hom.spectrum_apply_subset` 2. rephrases `spectrum.nonempty_of_is_alg_closed_of_finite_dimensional` to use `set.nonempty`. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean - theorem spectrum.exists_mem_of_not_is_unit_aeval_prod - theorem spectrum.map_polynomial_aeval_of_degree_pos - theorem spectrum.map_polynomial_aeval_of_nonempty - theorem spectrum.map_pow_of_nonempty - theorem spectrum.map_pow_of_pos - theorem spectrum.nonempty_of_is_alg_closed_of_finite_dimensional - theorem spectrum.pow_image_subset - theorem spectrum.subset_polynomial_aeval Modified src/analysis/normed_space/spectrum.lean Modified src/category_theory/preadditive/schur.lean Added src/field_theory/is_alg_closed/spectrum.lean + theorem spectrum.exists_mem_of_not_is_unit_aeval_prod + theorem spectrum.map_polynomial_aeval_of_degree_pos + theorem spectrum.map_polynomial_aeval_of_nonempty + theorem spectrum.map_pow_of_nonempty + theorem spectrum.map_pow_of_pos + theorem spectrum.nonempty_of_is_alg_closed_of_finite_dimensional + theorem spectrum.pow_image_subset + theorem spectrum.subset_polynomial_aeval Modified src/linear_algebra/eigenspace.lean 2023-06-06 05:16:06 36938f7 chore(*): add mathlib4 synchronization comments (#19159) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.monoidal.symmetric` * `algebra.lie.base_change` * `algebra.lie.character` * `algebra.lie.direct_sum` * `algebra.lie.semisimple` * `algebra.lie.skew_adjoint` * `algebra.lie.solvable` * `algebra.module.dedekind_domain` * `algebra.symmetrized` * `analysis.ODE.gronwall` * `analysis.box_integral.partition.measure` * `analysis.calculus.fderiv_analytic` * `analysis.calculus.series` * `analysis.inner_product_space.calculus` * `analysis.inner_product_space.euclidean_dist` * `analysis.special_functions.arsinh` * `analysis.special_functions.bernstein` * `analysis.special_functions.compare_exp` * `analysis.special_functions.complex.log_deriv` * `analysis.special_functions.log.deriv` * `analysis.special_functions.trigonometric.deriv` * `analysis.special_functions.trigonometric.inverse_deriv` * `category_theory.bicategory.natural_transformation` * `category_theory.monoidal.of_chosen_finite_products.symmetric` * `category_theory.monoidal.rigid.functor_category` * `category_theory.monoidal.rigid.of_equivalence` * `category_theory.monoidal.types.symmetric` * `category_theory.sites.canonical` * `data.complex.exponential_bounds` * `data.nat.sqrt_norm_num` * `field_theory.laurent` * `geometry.manifold.instances.real` * `geometry.manifold.instances.units_of_normed_algebra` * `geometry.manifold.metrizable` * `geometry.manifold.smooth_manifold_with_corners` * `group_theory.transfer` * `linear_algebra.quadratic_form.basic` * `measure_theory.integral.bochner` * `measure_theory.integral.vitali_caratheodory` * `measure_theory.measure.haar.normed_space` * `measure_theory.measure.lebesgue.eq_haar` * `number_theory.liouville.measure` * `ring_theory.dedekind_domain.ideal` * `ring_theory.polynomial.bernstein` * `ring_theory.witt_vector.defs` * `ring_theory.witt_vector.structure_polynomial` * `topology.continuous_function.stone_weierstrass` * `topology.continuous_function.weierstrass` ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal/symmetric.lean Modified src/algebra/lie/base_change.lean Modified src/algebra/lie/character.lean Modified src/algebra/lie/direct_sum.lean Modified src/algebra/lie/semisimple.lean Modified src/algebra/lie/skew_adjoint.lean Modified src/algebra/lie/solvable.lean Modified src/algebra/module/dedekind_domain.lean Modified src/algebra/symmetrized.lean Modified src/analysis/ODE/gronwall.lean Modified src/analysis/box_integral/partition/measure.lean Modified src/analysis/calculus/fderiv_analytic.lean Modified src/analysis/calculus/series.lean Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/euclidean_dist.lean Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/special_functions/compare_exp.lean Modified src/analysis/special_functions/complex/log_deriv.lean Modified src/analysis/special_functions/log/deriv.lean Modified src/analysis/special_functions/trigonometric/deriv.lean Modified src/analysis/special_functions/trigonometric/inverse_deriv.lean Modified src/category_theory/bicategory/natural_transformation.lean Modified src/category_theory/monoidal/of_chosen_finite_products/symmetric.lean Modified src/category_theory/monoidal/rigid/functor_category.lean Modified src/category_theory/monoidal/rigid/of_equivalence.lean Modified src/category_theory/monoidal/types/symmetric.lean Modified src/category_theory/sites/canonical.lean Modified src/data/complex/exponential_bounds.lean Modified src/data/nat/sqrt_norm_num.lean Modified src/field_theory/laurent.lean Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/instances/units_of_normed_algebra.lean Modified src/geometry/manifold/metrizable.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/group_theory/transfer.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measure/haar/normed_space.lean Modified src/measure_theory/measure/lebesgue/eq_haar.lean Modified src/number_theory/liouville/measure.lean Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/continuous_function/weierstrass.lean 2023-06-05 08:24:03 a3209dd feat (special_functions/gamma): doubling formula (#19136) This PR adds the proof of the Legendre doubling formula, relating `Gamma s * Gamma (s + 1 / 2)` to `Gamma (2 * s)`. ESTIMATED CHANGES Modified src/analysis/analytic/isolated_zeros.lean + theorem analytic_on.eq_of_frequently_eq Modified src/analysis/analytic/uniqueness.lean + theorem analytic_on.eq_of_eventually_eq Modified src/analysis/special_functions/gamma/beta.lean + theorem complex.Gamma_mul_Gamma_add_half + theorem real.Gamma_mul_Gamma_add_half Modified src/analysis/special_functions/gamma/bohr_mollerup.lean + theorem concave_on.add_const + theorem concave_on.congr + theorem convex_on.add_const + theorem convex_on.congr + theorem real.Gamma_mul_Gamma_add_half_of_pos + def real.doubling_Gamma + theorem real.doubling_Gamma_add_one + theorem real.doubling_Gamma_eq_Gamma + theorem real.doubling_Gamma_log_convex_Ioi + theorem real.doubling_Gamma_one + theorem real.log_doubling_Gamma_eq + theorem strict_concave_on.add_const + theorem strict_concave_on.congr + theorem strict_convex_on.add_const + theorem strict_convex_on.congr 2023-06-05 06:26:18 575b4ea chore(*): add mathlib4 synchronization comments (#19157) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.lie.tensor_product` * `analysis.calculus.cont_diff` * `analysis.calculus.inverse` * `analysis.calculus.lagrange_multipliers` * `analysis.complex.real_deriv` * `analysis.special_functions.exp_deriv` * `analysis.special_functions.sqrt` * `category_theory.monoidal.functor_category` * `linear_algebra.tensor_power` * `number_theory.sum_four_squares` ESTIMATED CHANGES Modified src/algebra/lie/tensor_product.lean Modified src/analysis/calculus/cont_diff.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/analysis/complex/real_deriv.lean Modified src/analysis/special_functions/exp_deriv.lean Modified src/analysis/special_functions/sqrt.lean Modified src/category_theory/monoidal/functor_category.lean Modified src/linear_algebra/tensor_power.lean Modified src/number_theory/sum_four_squares.lean 2023-06-05 06:26:16 4c3e172 feat(topology/homotopy/homotopy_group): `group` and `comm_group` instances for `π_n` (#15681) This PR adds: - Group instance for `π_(n+1)` - Commutative group instance for `π_(n+2)` ESTIMATED CHANGES Modified src/topology/homeomorph.lean Modified src/topology/homotopy/homotopy_group.lean +/- def cube.boundary - theorem cube.head.continuous - def cube.head + def cube.insert_at + theorem cube.insert_at_boundary - theorem cube.one_char - theorem cube.proj_continuous + def cube.split_at - def cube.tail - def cube + theorem gen_loop.boundary + def gen_loop.c_comp_insert + theorem gen_loop.coe_copy +/- def gen_loop.const + theorem gen_loop.const_apply + theorem gen_loop.continuous_from_loop + theorem gen_loop.continuous_to_loop + def gen_loop.copy + theorem gen_loop.copy_eq +/- theorem gen_loop.ext + def gen_loop.from_loop + theorem gen_loop.from_loop_apply + theorem gen_loop.from_loop_symm_to_loop + theorem gen_loop.from_loop_trans_to_loop +/- theorem gen_loop.homotopic.equiv +/- theorem gen_loop.homotopic.refl +/- theorem gen_loop.homotopic.symm +/- theorem gen_loop.homotopic.trans +/- def gen_loop.homotopic + theorem gen_loop.homotopic_from + theorem gen_loop.homotopic_to + def gen_loop.homotopy_from + theorem gen_loop.homotopy_from_apply + def gen_loop.homotopy_to + theorem gen_loop.homotopy_to_apply + def gen_loop.loop_homeo +/- theorem gen_loop.mk_apply + def gen_loop.symm_at + theorem gen_loop.to_from + def gen_loop.to_loop + theorem gen_loop.to_loop_apply + def gen_loop.trans_at + theorem gen_loop.trans_at_distrib + def gen_loop - structure gen_loop + def gen_loop_equiv_of_unique + def gen_loop_homeo_of_is_empty - def gen_loop_one_equiv_path_self - def gen_loop_zero_equiv + def homotopy_group.aux_group + theorem homotopy_group.aux_group_indep + theorem homotopy_group.inv_spec + theorem homotopy_group.is_unital_aux_group + theorem homotopy_group.mul_spec + theorem homotopy_group.one_def + def homotopy_group.pi + def homotopy_group.pi_0_equiv_zeroth_homotopy + def homotopy_group.pi_1_equiv_fundamental_group + theorem homotopy_group.symm_at_indep + theorem homotopy_group.trans_at_indep +/- def homotopy_group + def homotopy_group_equiv_fundamental_group + def homotopy_group_equiv_fundamental_group_of_unique + def homotopy_group_equiv_zeroth_homotopy_of_is_empty + def loop_space - def pi0_equiv_path_components - def pi1_equiv_fundamental_group Modified src/topology/subset_properties.lean 2023-06-05 05:15:23 df76f43 chore(field_theory/splitting_field): split file (#19154) We split `field_theory.splitting_field` into `field_theory.splitting_field.is_splitting_field` and `field_theory.splitting_field.construction`. This is useful for the port, but also quite a lot of Galois theory should not depend on the existence of splitting fields. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/field_theory/normal.lean Modified src/field_theory/primitive_element.lean Renamed src/field_theory/splitting_field.lean to src/field_theory/splitting_field/construction.lean - theorem intermediate_field.splits_of_splits - theorem polynomial.is_splitting_field.finite_dimensional - def polynomial.is_splitting_field.lift - theorem polynomial.is_splitting_field.mul - theorem polynomial.is_splitting_field.of_alg_equiv - theorem polynomial.is_splitting_field.splits_iff Added src/field_theory/splitting_field/is_splitting_field.lean + theorem intermediate_field.splits_of_splits + theorem polynomial.is_splitting_field.finite_dimensional + def polynomial.is_splitting_field.lift + theorem polynomial.is_splitting_field.mul + theorem polynomial.is_splitting_field.of_alg_equiv + theorem polynomial.is_splitting_field.splits_iff Modified src/ring_theory/polynomial/gauss_lemma.lean 2023-06-05 02:20:49 3088264 chore(archive/imo): fix some naming inconsistencies and whitespace (#19155) I realize that this is the third PR concerning namespacing the files in `archive/imo`. These are some simple inconsistencies in naming. There is no rush in merging this PR, but in the long run it might help to have consistent namespacing, so that batch renames can be simpler. ESTIMATED CHANGES Modified archive/imo/imo1975_q1.lean - theorem imo1975_q1.IMO_1975_Q1 + theorem imo1975_q1 Modified archive/imo/imo1977_q6.lean Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo1994_q1.lean Modified archive/imo/imo1998_q2.lean Modified archive/imo/imo2001_q2.lean Modified archive/imo/imo2005_q3.lean Modified archive/imo/imo2005_q4.lean + theorem imo2005_q4 Modified archive/imo/imo2006_q3.lean Modified archive/imo/imo2006_q5.lean Modified archive/imo/imo2008_q3.lean Modified archive/imo/imo2008_q4.lean Modified archive/imo/imo2013_q1.lean Modified archive/imo/imo2013_q5.lean Modified archive/imo/imo2019_q1.lean - theorem imo2019_q1.imo2019Q1 + theorem imo2019_q1 Modified archive/imo/imo2019_q2.lean Modified archive/imo/imo2019_q4.lean - theorem imo2019_q4.imo2019_q4_upper_bound + theorem imo2019_q4.upper_bound Modified archive/imo/imo2021_q1.lean - theorem imo2021_q1.IMO_2021_Q1 + theorem imo2021_q1 2023-06-05 01:10:26 533f62f chore(algebraic_geometry/open_immersion): split (#19149) Split `algebraic_geometry/open_immersion` into a 1000-line file which doesn't mention schemes and a 1000-line file which does. This should open more porting targets (the first file should be available for porting immediately), but also helps towards a reorganization I have in mind for after-port: moving the [pre]sheafed-space and [locally-]ringed-space material from `algebraic_geometry` into a new folder in `topology` or `geometry`. ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/gluing.lean Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Renamed src/algebraic_geometry/open_immersion.lean to src/algebraic_geometry/open_immersion/Scheme.lean - def algebraic_geometry.LocallyRingedSpace.is_open_immersion.iso_restrict - def algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift - theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_fac - theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_range - theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_uniq - def algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_cone_of_left - def algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_cone_of_left_is_limit - theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_snd_is_iso_of_range_subset - def algebraic_geometry.LocallyRingedSpace.is_open_immersion - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.LocallyRingedSpace_to_LocallyRingedSpace - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.SheafedSpace_to_SheafedSpace - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.app_inv_app' - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.app_inv_app - def algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app_app - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_inv_app - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_naturality - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.is_iso_of_subset - def algebraic_geometry.PresheafedSpace.is_open_immersion.iso_of_range_eq - def algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict_hom_of_restrict - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict_inv_of_restrict - def algebraic_geometry.PresheafedSpace.is_open_immersion.lift - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.lift_fac - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.lift_uniq - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.of_restrict_inv_app - def algebraic_geometry.PresheafedSpace.is_open_immersion.open_functor - def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_condition - def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_fst - def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_is_limit - def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift_fst - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift_snd - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_snd_is_iso_of_range_subset - def algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace - def algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_hom - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_hom_val - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_to_SheafedSpace - def algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace - def algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom_base - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom_c - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_to_PresheafedSpace - theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_iso - theorem algebraic_geometry.SheafedSpace.is_open_immersion.image_preimage_is_empty - theorem algebraic_geometry.SheafedSpace.is_open_immersion.of_stalk_iso - theorem algebraic_geometry.SheafedSpace.is_open_immersion.sigma_ι_open_embedding - def algebraic_geometry.SheafedSpace.is_open_immersion Added src/algebraic_geometry/open_immersion/basic.lean + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.iso_restrict + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_fac + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_range + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_uniq + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_cone_of_left + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_cone_of_left_is_limit + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_snd_is_iso_of_range_subset + def algebraic_geometry.LocallyRingedSpace.is_open_immersion + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.LocallyRingedSpace_to_LocallyRingedSpace + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.SheafedSpace_to_SheafedSpace + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.app_inv_app' + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.app_inv_app + def algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_inv_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_naturality + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.is_iso_of_subset + def algebraic_geometry.PresheafedSpace.is_open_immersion.iso_of_range_eq + def algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict_hom_of_restrict + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict_inv_of_restrict + def algebraic_geometry.PresheafedSpace.is_open_immersion.lift + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.lift_fac + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.lift_uniq + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.of_restrict_inv_app + def algebraic_geometry.PresheafedSpace.is_open_immersion.open_functor + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_condition + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_fst + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_is_limit + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift_fst + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift_snd + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_snd_is_iso_of_range_subset + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_hom + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_hom_val + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_to_SheafedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom_base + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom_c + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_to_PresheafedSpace + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_iso + theorem algebraic_geometry.SheafedSpace.is_open_immersion.image_preimage_is_empty + theorem algebraic_geometry.SheafedSpace.is_open_immersion.of_stalk_iso + theorem algebraic_geometry.SheafedSpace.is_open_immersion.sigma_ι_open_embedding + def algebraic_geometry.SheafedSpace.is_open_immersion Modified src/algebraic_geometry/presheafed_space/gluing.lean 2023-06-04 16:20:36 1336155 chore(topology/sheaves/*): universe generalizations (#19153) Necessary but sadly insufficient for the request at https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2319146.20sheaves.20on.20manifolds ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/quasi_compact.lean +/- theorem algebraic_geometry.exists_pow_mul_eq_zero_of_res_basic_open_eq_zero_of_is_compact Modified src/algebraic_geometry/morphisms/quasi_separated.lean +/- theorem algebraic_geometry.exists_eq_pow_mul_of_is_compact_of_is_quasi_separated Modified src/algebraic_geometry/ringed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.pi_lift_π_apply' + theorem category_theory.limits.types.pi_map_π_apply' +/- theorem category_theory.limits.types.pi_map_π_apply Modified src/topology/sheaves/forget.lean +/- def Top.presheaf.sheaf_condition.map_cone_fork Modified src/topology/sheaves/local_predicate.lean +/- def Top.continuous_prelocal +/- def Top.stalk_to_fiber +/- theorem Top.stalk_to_fiber_germ +/- theorem Top.stalk_to_fiber_injective +/- theorem Top.stalk_to_fiber_surjective +/- def Top.subpresheaf_to_Types +/- def Top.subsheaf_to_Types Modified src/topology/sheaves/presheaf.lean +/- def Top.presheaf.pullback +/- def Top.presheaf.pullback_hom_iso_pushforward_inv +/- def Top.presheaf.pullback_inv_iso_pushforward_hom +/- def Top.presheaf.pullback_map +/- def Top.presheaf.pullback_obj +/- def Top.presheaf.pullback_obj_obj_of_image_open +/- def Top.presheaf.pushforward_pullback_adjunction Modified src/topology/sheaves/presheaf_of_functions.lean +/- def Top.presheaf_to_Type +/- def Top.presheaf_to_Types Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheaf_of_functions.lean +/- def Top.sheaf_to_Type +/- def Top.sheaf_to_Types Modified src/topology/sheaves/stalks.lean 2023-06-04 11:07:50 5f25c08 chore(archive/imo): change namespace `imo` to `imoYYYY_qX` (#19152) This PR fixes a mistake that I made when namespacing files in `archive.imo`. Now, the files whose namespace was `imo` have namespace their file name (minus .lean). Changes: * namespace `imo` changed to `imoYYYY_qX`; * added `nolint dup_namespace` tags to the declarations that have a duplication; * changed namespace `imo_1987_q1` to `imo1987_q1` for consistency. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mathport/near/363379951) ESTIMATED CHANGES Modified archive/imo/imo1959_q1.lean - theorem imo.calculation - theorem imo.imo1959_q1 + theorem imo1959_q1.calculation + theorem imo1959_q1 Modified archive/imo/imo1962_q4.lean - theorem imo.alt_equiv - def imo.alt_formula - theorem imo.cos_sum_equiv - theorem imo.finding_zeros - theorem imo.formula - theorem imo.imo1962_q4' - theorem imo.imo1962_q4 - def imo.problem_equation - def imo.solution_set - theorem imo.solve_cos2_half - theorem imo.solve_cos2x_0 - theorem imo.solve_cos3x_0 + theorem imo1962_q4' + theorem imo1962_q4.alt_equiv + def imo1962_q4.alt_formula + theorem imo1962_q4.cos_sum_equiv + theorem imo1962_q4.finding_zeros + theorem imo1962_q4.formula + def imo1962_q4.problem_equation + def imo1962_q4.solution_set + theorem imo1962_q4.solve_cos2_half + theorem imo1962_q4.solve_cos2x_0 + theorem imo1962_q4.solve_cos3x_0 + theorem imo1962_q4 Modified archive/imo/imo1972_q5.lean Modified archive/imo/imo1975_q1.lean - theorem imo.IMO_1975_Q1 + theorem imo1975_q1.IMO_1975_Q1 Modified archive/imo/imo1977_q6.lean - theorem imo.imo1977_q6 - theorem imo.imo1977_q6_nat + theorem imo1977_q6.imo1977_q6_nat + theorem imo1977_q6 Modified archive/imo/imo1987_q1.lean + theorem imo1987_q1.card_fixed_points + def imo1987_q1.fiber + def imo1987_q1.fixed_points_equiv' + def imo1987_q1.fixed_points_equiv + theorem imo1987_q1.main + theorem imo1987_q1.main_fintype + theorem imo1987_q1.main₀ + theorem imo1987_q1.mem_fiber + def imo1987_q1.p - theorem imo_1987_q1.card_fixed_points - def imo_1987_q1.fiber - def imo_1987_q1.fixed_points_equiv' - def imo_1987_q1.fixed_points_equiv - theorem imo_1987_q1.main - theorem imo_1987_q1.main_fintype - theorem imo_1987_q1.main₀ - theorem imo_1987_q1.mem_fiber - def imo_1987_q1.p Modified archive/imo/imo1988_q6.lean - theorem imo.constant_descent_vieta_jumping - theorem imo.imo1988_q6 + theorem imo1988_q6.constant_descent_vieta_jumping + theorem imo1988_q6 Modified archive/imo/imo1994_q1.lean - theorem imo.imo1994_q1 - theorem imo.tedious + theorem imo1994_q1.tedious + theorem imo1994_q1 Modified archive/imo/imo1998_q2.lean - def imo.A - theorem imo.A_card_lower_bound - theorem imo.A_card_upper_bound - theorem imo.A_fibre_over_contestant - theorem imo.A_fibre_over_contestant_card - theorem imo.A_fibre_over_judge_pair - theorem imo.A_fibre_over_judge_pair_card - theorem imo.A_maps_to_off_diag_judge_pair - theorem imo.add_sq_add_sq_sub - def imo.agreed_contestants - def imo.agreed_triple.contestant - def imo.agreed_triple.judge_pair - def imo.agreed_triple - theorem imo.clear_denominators - theorem imo.distinct_judge_pairs_card_lower_bound - theorem imo.imo1998_q2 - def imo.judge_pair.agree - theorem imo.judge_pair.agree_iff_same_rating - def imo.judge_pair.distinct - def imo.judge_pair.judge₁ - def imo.judge_pair.judge₂ - def imo.judge_pair - theorem imo.judge_pairs_card_lower_bound - theorem imo.norm_bound_of_odd_sum + def imo1998_q2.A + theorem imo1998_q2.A_card_lower_bound + theorem imo1998_q2.A_card_upper_bound + theorem imo1998_q2.A_fibre_over_contestant + theorem imo1998_q2.A_fibre_over_contestant_card + theorem imo1998_q2.A_fibre_over_judge_pair + theorem imo1998_q2.A_fibre_over_judge_pair_card + theorem imo1998_q2.A_maps_to_off_diag_judge_pair + theorem imo1998_q2.add_sq_add_sq_sub + def imo1998_q2.agreed_contestants + def imo1998_q2.agreed_triple.contestant + def imo1998_q2.agreed_triple.judge_pair + def imo1998_q2.agreed_triple + theorem imo1998_q2.clear_denominators + theorem imo1998_q2.distinct_judge_pairs_card_lower_bound + def imo1998_q2.judge_pair.agree + theorem imo1998_q2.judge_pair.agree_iff_same_rating + def imo1998_q2.judge_pair.distinct + def imo1998_q2.judge_pair.judge₁ + def imo1998_q2.judge_pair.judge₂ + def imo1998_q2.judge_pair + theorem imo1998_q2.judge_pairs_card_lower_bound + theorem imo1998_q2.norm_bound_of_odd_sum + theorem imo1998_q2 Modified archive/imo/imo2001_q2.lean - theorem imo.bound - theorem imo.denom_pos - theorem imo.imo2001_q2' - theorem imo.imo2001_q2 + theorem imo2001_q2.bound + theorem imo2001_q2.denom_pos + theorem imo2001_q2.imo2001_q2' + theorem imo2001_q2 Modified archive/imo/imo2001_q6.lean - theorem imo.imo2001_q6 + theorem imo2001_q6 Modified archive/imo/imo2005_q3.lean - theorem imo.imo2005_q3 - theorem imo.key_insight + theorem imo2005_q3.key_insight + theorem imo2005_q3 Modified archive/imo/imo2005_q4.lean - def imo.a - theorem imo.find_specified_factor + def imo2005_q4.a + theorem imo2005_q4.find_specified_factor Modified archive/imo/imo2006_q3.lean - theorem imo.four_pow_four_pos - theorem imo.imo2006_q3 - theorem imo.lhs_identity - theorem imo.lhs_ineq - theorem imo.mid_ineq - theorem imo.proof₁ - theorem imo.proof₂ - theorem imo.rhs_ineq - theorem imo.subst_proof₁ - theorem imo.subst_wlog - theorem imo.zero_lt_32 + theorem imo2006_q3.four_pow_four_pos + theorem imo2006_q3.lhs_identity + theorem imo2006_q3.lhs_ineq + theorem imo2006_q3.mid_ineq + theorem imo2006_q3.proof₁ + theorem imo2006_q3.proof₂ + theorem imo2006_q3.rhs_ineq + theorem imo2006_q3.subst_proof₁ + theorem imo2006_q3.subst_wlog + theorem imo2006_q3.zero_lt_32 + theorem imo2006_q3 Modified archive/imo/imo2006_q5.lean - theorem imo.imo2006_q5' - theorem imo.imo2006_q5 - theorem imo.int.add_eq_add_of_nat_abs_eq_of_nat_abs_eq - theorem imo.int.nat_abs_eq_of_chain_dvd - theorem imo.polynomial.is_periodic_pt_eval_two - theorem imo.polynomial.iterate_comp_sub_X_ne + theorem imo2006_q5.imo2006_q5' + theorem imo2006_q5.int.add_eq_add_of_nat_abs_eq_of_nat_abs_eq + theorem imo2006_q5.int.nat_abs_eq_of_chain_dvd + theorem imo2006_q5.polynomial.is_periodic_pt_eval_two + theorem imo2006_q5.polynomial.iterate_comp_sub_X_ne + theorem imo2006_q5 Modified archive/imo/imo2008_q2.lean - theorem imo.imo2008_q2a - theorem imo.imo2008_q2b - def imo.rational_solutions - theorem imo.subst_abc + theorem imo2008_q2.imo2008_q2a + theorem imo2008_q2.imo2008_q2b + def imo2008_q2.rational_solutions + theorem imo2008_q2.subst_abc Modified archive/imo/imo2008_q3.lean - theorem imo.imo2008_q3 - theorem imo.p_lemma + theorem imo2008_q3.p_lemma + theorem imo2008_q3 Modified archive/imo/imo2008_q4.lean - theorem imo.abs_eq_one_of_pow_eq_one - theorem imo.imo2008_q4 + theorem imo2008_q4.abs_eq_one_of_pow_eq_one + theorem imo2008_q4 Modified archive/imo/imo2011_q3.lean - theorem imo.imo2011_q3 + theorem imo2011_q3 Modified archive/imo/imo2011_q5.lean - theorem imo.imo2011_q5 + theorem imo2011_q5 Modified archive/imo/imo2013_q1.lean - theorem imo.arith_lemma - theorem imo.imo2013_q1 - theorem imo.prod_lemma + theorem imo2013_q1.arith_lemma + theorem imo2013_q1.prod_lemma + theorem imo2013_q1 Modified archive/imo/imo2013_q5.lean - theorem imo.f_pos_of_pos - theorem imo.fixed_point_of_gt_1 - theorem imo.fixed_point_of_pos_nat_pow - theorem imo.fx_gt_xm1 - theorem imo.imo2013_q5 - theorem imo.le_of_all_pow_lt_succ' - theorem imo.le_of_all_pow_lt_succ - theorem imo.pow_f_le_f_pow + theorem imo2013_q5.f_pos_of_pos + theorem imo2013_q5.fixed_point_of_gt_1 + theorem imo2013_q5.fixed_point_of_pos_nat_pow + theorem imo2013_q5.fx_gt_xm1 + theorem imo2013_q5.le_of_all_pow_lt_succ' + theorem imo2013_q5.le_of_all_pow_lt_succ + theorem imo2013_q5.pow_f_le_f_pow + theorem imo2013_q5 Modified archive/imo/imo2019_q1.lean - theorem imo.imo2019Q1 + theorem imo2019_q1.imo2019Q1 Modified archive/imo/imo2019_q2.lean - theorem imo.imo2019_q2 - theorem imo.imo2019q2_cfg.A_mem_circumsphere - theorem imo.imo2019q2_cfg.A_ne_A₁ - theorem imo.imo2019q2_cfg.A_ne_B - theorem imo.imo2019q2_cfg.A_ne_C - theorem imo.imo2019q2_cfg.A₁_ne_B - theorem imo.imo2019q2_cfg.A₁_ne_C - def imo.imo2019q2_cfg.A₂ - theorem imo.imo2019q2_cfg.A₂_mem_circumsphere - theorem imo.imo2019q2_cfg.A₂_ne_A - theorem imo.imo2019q2_cfg.A₂_ne_B - theorem imo.imo2019q2_cfg.A₂_ne_C - theorem imo.imo2019q2_cfg.A₂_ne_P - theorem imo.imo2019q2_cfg.B_mem_circumsphere - theorem imo.imo2019q2_cfg.B_ne_C - theorem imo.imo2019q2_cfg.B₁_ne_C - def imo.imo2019q2_cfg.B₂ - theorem imo.imo2019q2_cfg.B₂_mem_circumsphere - theorem imo.imo2019q2_cfg.B₂_ne_A₂ - theorem imo.imo2019q2_cfg.B₂_ne_B - theorem imo.imo2019q2_cfg.B₂_ne_Q - theorem imo.imo2019q2_cfg.C_mem_circumsphere - theorem imo.imo2019q2_cfg.P_mem_ω - theorem imo.imo2019q2_cfg.P₁_mem_ω - theorem imo.imo2019q2_cfg.QP_parallel_BA - theorem imo.imo2019q2_cfg.Q_mem_ω - theorem imo.imo2019q2_cfg.Q_ne_B - theorem imo.imo2019q2_cfg.Q_not_mem_CB - theorem imo.imo2019q2_cfg.Q₁_mem_ω - theorem imo.imo2019q2_cfg.Q₁_ne_A₂ - theorem imo.imo2019q2_cfg.affine_independent_PQB₂ - theorem imo.imo2019q2_cfg.affine_independent_QPA₂ - theorem imo.imo2019q2_cfg.collinear_PAA₁A₂ - theorem imo.imo2019q2_cfg.cospherical_A₁Q₁CA₂ - theorem imo.imo2019q2_cfg.cospherical_QPB₂A₂ - theorem imo.imo2019q2_cfg.not_collinear_ABC - theorem imo.imo2019q2_cfg.not_collinear_CA₂A₁ - theorem imo.imo2019q2_cfg.not_collinear_QPA₂ - theorem imo.imo2019q2_cfg.oangle_CQ₁Q_eq_oangle_CBA - theorem imo.imo2019q2_cfg.oangle_CQ₁Q_sign_eq_oangle_CBA_sign - theorem imo.imo2019q2_cfg.result - theorem imo.imo2019q2_cfg.s_opp_side_CB_Q_Q₁ - theorem imo.imo2019q2_cfg.sbtw_A_A₁_A₂ - theorem imo.imo2019q2_cfg.sbtw_A_B₁_C - theorem imo.imo2019q2_cfg.sbtw_B_A₁_C - theorem imo.imo2019q2_cfg.sbtw_B_B₁_B₂ - def imo.imo2019q2_cfg.symm - theorem imo.imo2019q2_cfg.symm_A₂ - theorem imo.imo2019q2_cfg.symm_triangle_ABC - theorem imo.imo2019q2_cfg.symm_triangle_ABC_circumsphere - theorem imo.imo2019q2_cfg.symm_triangle_QPA₂ - theorem imo.imo2019q2_cfg.symm_ω - theorem imo.imo2019q2_cfg.symm_ω_eq_triangle_PQB₂_circumsphere - def imo.imo2019q2_cfg.triangle_ABC - def imo.imo2019q2_cfg.triangle_PQB₂ - def imo.imo2019q2_cfg.triangle_QPA₂ - theorem imo.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA - theorem imo.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ - theorem imo.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_BAA₂ - theorem imo.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂ - theorem imo.imo2019q2_cfg.two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂ - theorem imo.imo2019q2_cfg.wbtw_B_Q_B₂ - def imo.imo2019q2_cfg.ω - structure imo.imo2019q2_cfg - def imo.some_orientation + theorem imo2019_q2.imo2019q2_cfg.A_mem_circumsphere + theorem imo2019_q2.imo2019q2_cfg.A_ne_A₁ + theorem imo2019_q2.imo2019q2_cfg.A_ne_B + theorem imo2019_q2.imo2019q2_cfg.A_ne_C + theorem imo2019_q2.imo2019q2_cfg.A₁_ne_B + theorem imo2019_q2.imo2019q2_cfg.A₁_ne_C + def imo2019_q2.imo2019q2_cfg.A₂ + theorem imo2019_q2.imo2019q2_cfg.A₂_mem_circumsphere + theorem imo2019_q2.imo2019q2_cfg.A₂_ne_A + theorem imo2019_q2.imo2019q2_cfg.A₂_ne_B + theorem imo2019_q2.imo2019q2_cfg.A₂_ne_C + theorem imo2019_q2.imo2019q2_cfg.A₂_ne_P + theorem imo2019_q2.imo2019q2_cfg.B_mem_circumsphere + theorem imo2019_q2.imo2019q2_cfg.B_ne_C + theorem imo2019_q2.imo2019q2_cfg.B₁_ne_C + def imo2019_q2.imo2019q2_cfg.B₂ + theorem imo2019_q2.imo2019q2_cfg.B₂_mem_circumsphere + theorem imo2019_q2.imo2019q2_cfg.B₂_ne_A₂ + theorem imo2019_q2.imo2019q2_cfg.B₂_ne_B + theorem imo2019_q2.imo2019q2_cfg.B₂_ne_Q + theorem imo2019_q2.imo2019q2_cfg.C_mem_circumsphere + theorem imo2019_q2.imo2019q2_cfg.P_mem_ω + theorem imo2019_q2.imo2019q2_cfg.P₁_mem_ω + theorem imo2019_q2.imo2019q2_cfg.QP_parallel_BA + theorem imo2019_q2.imo2019q2_cfg.Q_mem_ω + theorem imo2019_q2.imo2019q2_cfg.Q_ne_B + theorem imo2019_q2.imo2019q2_cfg.Q_not_mem_CB + theorem imo2019_q2.imo2019q2_cfg.Q₁_mem_ω + theorem imo2019_q2.imo2019q2_cfg.Q₁_ne_A₂ + theorem imo2019_q2.imo2019q2_cfg.affine_independent_PQB₂ + theorem imo2019_q2.imo2019q2_cfg.affine_independent_QPA₂ + theorem imo2019_q2.imo2019q2_cfg.collinear_PAA₁A₂ + theorem imo2019_q2.imo2019q2_cfg.cospherical_A₁Q₁CA₂ + theorem imo2019_q2.imo2019q2_cfg.cospherical_QPB₂A₂ + theorem imo2019_q2.imo2019q2_cfg.not_collinear_ABC + theorem imo2019_q2.imo2019q2_cfg.not_collinear_CA₂A₁ + theorem imo2019_q2.imo2019q2_cfg.not_collinear_QPA₂ + theorem imo2019_q2.imo2019q2_cfg.oangle_CQ₁Q_eq_oangle_CBA + theorem imo2019_q2.imo2019q2_cfg.oangle_CQ₁Q_sign_eq_oangle_CBA_sign + theorem imo2019_q2.imo2019q2_cfg.result + theorem imo2019_q2.imo2019q2_cfg.s_opp_side_CB_Q_Q₁ + theorem imo2019_q2.imo2019q2_cfg.sbtw_A_A₁_A₂ + theorem imo2019_q2.imo2019q2_cfg.sbtw_A_B₁_C + theorem imo2019_q2.imo2019q2_cfg.sbtw_B_A₁_C + theorem imo2019_q2.imo2019q2_cfg.sbtw_B_B₁_B₂ + def imo2019_q2.imo2019q2_cfg.symm + theorem imo2019_q2.imo2019q2_cfg.symm_A₂ + theorem imo2019_q2.imo2019q2_cfg.symm_triangle_ABC + theorem imo2019_q2.imo2019q2_cfg.symm_triangle_ABC_circumsphere + theorem imo2019_q2.imo2019q2_cfg.symm_triangle_QPA₂ + theorem imo2019_q2.imo2019q2_cfg.symm_ω + theorem imo2019_q2.imo2019q2_cfg.symm_ω_eq_triangle_PQB₂_circumsphere + def imo2019_q2.imo2019q2_cfg.triangle_ABC + def imo2019_q2.imo2019q2_cfg.triangle_PQB₂ + def imo2019_q2.imo2019q2_cfg.triangle_QPA₂ + theorem imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA + theorem imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ + theorem imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_BAA₂ + theorem imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂ + theorem imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂ + theorem imo2019_q2.imo2019q2_cfg.wbtw_B_Q_B₂ + def imo2019_q2.imo2019q2_cfg.ω + structure imo2019_q2.imo2019q2_cfg + def imo2019_q2.some_orientation + theorem imo2019_q2 Modified archive/imo/imo2019_q4.lean - theorem imo.imo2019_q4 - theorem imo.imo2019_q4_upper_bound + theorem imo2019_q4.imo2019_q4_upper_bound + theorem imo2019_q4 Modified archive/imo/imo2020_q2.lean - theorem imo.imo2020_q2 + theorem imo2020_q2 Modified archive/imo/imo2021_q1.lean - theorem imo.IMO_2021_Q1 - theorem imo.exists_finset_3_le_card_with_pairs_summing_to_squares - theorem imo.exists_numbers_in_interval - theorem imo.exists_triplet_summing_to_squares - theorem imo.lower_bound - theorem imo.radical_inequality - theorem imo.upper_bound + theorem imo2021_q1.IMO_2021_Q1 + theorem imo2021_q1.exists_finset_3_le_card_with_pairs_summing_to_squares + theorem imo2021_q1.exists_numbers_in_interval + theorem imo2021_q1.exists_triplet_summing_to_squares + theorem imo2021_q1.lower_bound + theorem imo2021_q1.radical_inequality + theorem imo2021_q1.upper_bound 2023-06-04 05:46:16 5c1efce chore(*): add mathlib4 synchronization comments (#19151) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.jordan.basic` * `algebra.lie.abelian` * `algebra.lie.ideal_operations` * `algebra.lie.matrix` * `algebra.lie.of_associative` * `analysis.calculus.fderiv_symmetric` * `analysis.normed_space.dual_number` * `analysis.normed_space.triv_sq_zero_ext` * `category_theory.adhesive` * `data.mv_polynomial.pderiv` * `field_theory.chevalley_warning` * `linear_algebra.pi_tensor_product` * `number_theory.fermat_psp` * `number_theory.liouville.liouville_number` * `ring_theory.bezout` * `ring_theory.dedekind_domain.basic` * `ring_theory.derivation.lie` * `ring_theory.derivation.to_square_zero` * `topology.sheaves.sheafify` ESTIMATED CHANGES Modified src/algebra/jordan/basic.lean Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/ideal_operations.lean Modified src/algebra/lie/matrix.lean Modified src/algebra/lie/of_associative.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/normed_space/dual_number.lean Modified src/analysis/normed_space/triv_sq_zero_ext.lean Modified src/category_theory/adhesive.lean Modified src/data/mv_polynomial/pderiv.lean Modified src/field_theory/chevalley_warning.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/number_theory/fermat_psp.lean Modified src/number_theory/liouville/liouville_number.lean Modified src/ring_theory/bezout.lean Modified src/ring_theory/dedekind_domain/basic.lean Modified src/ring_theory/derivation/lie.lean Modified src/ring_theory/derivation/to_square_zero.lean Modified src/topology/sheaves/sheafify.lean 2023-06-03 13:39:51 af471b9 chore(*): add mathlib4 synchronization comments (#19148) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.gcd_monoid.integrally_closed` * `algebra.lie.submodule` * `algebraic_geometry.locally_ringed_space` * `algebraic_geometry.ringed_space` * `analysis.analytic.linear` * `analysis.analytic.radius_liminf` * `analysis.calculus.extend_deriv` * `analysis.calculus.lhopital` * `analysis.calculus.taylor` * `analysis.calculus.uniform_limits_deriv` * `analysis.inner_product_space.l2_space` * `analysis.inner_product_space.orientation` * `analysis.normed_space.exponential` * `analysis.normed_space.star.exponential` * `analysis.von_neumann_algebra.basic` * `category_theory.extensive` * `category_theory.monoidal.braided` * `category_theory.monoidal.rigid.basic` * `data.mv_polynomial.derivation` * `data.ordmap.ordset` * `field_theory.finite.basic` * `field_theory.finite.polynomial` * `linear_algebra.matrix.charpoly.finite_field` * `measure_theory.function.simple_func_dense_lp` * `measure_theory.function.strongly_measurable.lp` * `measure_theory.function.uniform_integrable` * `measure_theory.integral.set_to_l1` * `measure_theory.measure.lebesgue.basic` * `measure_theory.measure.lebesgue.complex` * `number_theory.liouville.basic` * `number_theory.liouville.liouville_with` * `number_theory.liouville.residual` * `probability.independence.basic` * `probability.independence.zero_one` * `ring_theory.derivation.basic` * `ring_theory.integrally_closed` * `ring_theory.polynomial.rational_root` * `ring_theory.valuation.integral` * `topology.homotopy.H_spaces` ESTIMATED CHANGES Modified src/algebra/gcd_monoid/integrally_closed.lean Modified src/algebra/lie/submodule.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/ringed_space.lean Modified src/analysis/analytic/linear.lean Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/calculus/taylor.lean Modified src/analysis/calculus/uniform_limits_deriv.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/orientation.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/star/exponential.lean Modified src/analysis/von_neumann_algebra/basic.lean Modified src/category_theory/extensive.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/rigid/basic.lean Modified src/data/mv_polynomial/derivation.lean Modified src/data/ordmap/ordset.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/finite/polynomial.lean Modified src/linear_algebra/matrix/charpoly/finite_field.lean Modified src/measure_theory/function/simple_func_dense_lp.lean Modified src/measure_theory/function/strongly_measurable/lp.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/measure_theory/measure/lebesgue/basic.lean Modified src/measure_theory/measure/lebesgue/complex.lean Modified src/number_theory/liouville/basic.lean Modified src/number_theory/liouville/liouville_with.lean Modified src/number_theory/liouville/residual.lean Modified src/probability/independence/basic.lean Modified src/probability/independence/zero_one.lean Modified src/ring_theory/derivation/basic.lean Modified src/ring_theory/integrally_closed.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/valuation/integral.lean Modified src/topology/homotopy/H_spaces.lean 2023-06-02 16:27:10 7fdeecc chore(ring_theory/root_of_unity): move and split a file (#19144) We split `ring_theory.roots_of_unity` (almost 1200 lines) into `ring_theory.roots_of_unity.basic` and `ring_theory.roots_of_unity.minpoly`. We also move `analysis.complex.roots_of_unity` to `ring_theory.roots_of_unity.complex`. ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified archive/100-theorems-list/37_solution_of_cubic.lean Modified src/field_theory/abel_ruffini.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/cyclotomic/roots.lean Renamed src/ring_theory/roots_of_unity.lean to src/ring_theory/roots_of_unity/basic.lean - theorem is_primitive_root.is_integral - theorem is_primitive_root.is_roots_of_minpoly - theorem is_primitive_root.minpoly_dvd_X_pow_sub_one - theorem is_primitive_root.minpoly_dvd_expand - theorem is_primitive_root.minpoly_dvd_mod_p - theorem is_primitive_root.minpoly_dvd_pow_mod - theorem is_primitive_root.minpoly_eq_pow - theorem is_primitive_root.minpoly_eq_pow_coprime - theorem is_primitive_root.pow_is_root_minpoly - theorem is_primitive_root.separable_minpoly_mod - theorem is_primitive_root.squarefree_minpoly_mod - theorem is_primitive_root.totient_le_degree_minpoly Renamed src/analysis/complex/roots_of_unity.lean to src/ring_theory/roots_of_unity/complex.lean Added src/ring_theory/roots_of_unity/minpoly.lean + theorem is_primitive_root.is_integral + theorem is_primitive_root.is_roots_of_minpoly + theorem is_primitive_root.minpoly_dvd_X_pow_sub_one + theorem is_primitive_root.minpoly_dvd_expand + theorem is_primitive_root.minpoly_dvd_mod_p + theorem is_primitive_root.minpoly_dvd_pow_mod + theorem is_primitive_root.minpoly_eq_pow + theorem is_primitive_root.minpoly_eq_pow_coprime + theorem is_primitive_root.pow_is_root_minpoly + theorem is_primitive_root.separable_minpoly_mod + theorem is_primitive_root.squarefree_minpoly_mod + theorem is_primitive_root.totient_le_degree_minpoly 2023-06-02 14:50:10 3d5c4a7 feat(measure_theory/measure/hausdorff): invariance instances (#19145) These are a trivial consequence of the existing lemmas. The additive cases here are the ones that actually are useful, and follow from `normed_add_torsor.to_has_isometric_vadd`. ESTIMATED CHANGES Modified src/measure_theory/measure/hausdorff.lean 2023-06-02 12:04:17 571e13c feat(measure_theory/measure/hausdorff): the 1-measure of a segment is its length (#18981) Or in other words, length along a line segment is the distance between its endpoints. This also proves that the `d`-dimensional Hausdorff measure scales by a factor of `‖r‖₊ ^ d` when the set is scaled by `r` (both linearly and affinely), and that it is translation-invariant. ESTIMATED CHANGES Modified src/analysis/convex/between.lean + theorem affine_segment_same Modified src/measure_theory/measure/hausdorff.lean + theorem measure_theory.hausdorff_measure_affine_segment + theorem measure_theory.hausdorff_measure_homothety_image + theorem measure_theory.hausdorff_measure_homothety_preimage + theorem measure_theory.hausdorff_measure_line_map_image + theorem measure_theory.hausdorff_measure_segment + theorem measure_theory.hausdorff_measure_smul + theorem measure_theory.hausdorff_measure_smul_right_image + theorem measure_theory.measure.hausdorff_measure_smul₀ + theorem measure_theory.outer_measure.mk_metric_nnreal_smul + theorem measure_theory.outer_measure.mk_metric_smul 2023-06-02 09:01:24 69b2e97 chore(ring_theory/tensor_product): replace `is_scalar_tower` by `smul_comm_class` in `left_algebra` (#19118) With this change, this instance works for both restriction (e.g tensor product over `ℂ` of complex algebras is a real algebra) and extension (e.g tensor product over `ℝ` of complex algebras is a complex algebra) of scalars. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Tensor.20products) I also removes [algebra.tensor_product.tensor_product.is_scalar_tower](https://leanprover-community.github.io/mathlib_docs/ring_theory/tensor_product.html#algebra.tensor_product.tensor_product.is_scalar_tower) since it is automatically inferred from [tensor_product.is_scalar_tower](https://leanprover-community.github.io/mathlib_docs/linear_algebra/tensor_product.html#tensor_product.is_scalar_tower) ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean +/- theorem algebra.tensor_product.algebra_map_apply 2023-06-02 05:41:33 2ebc1d6 chore(*): add mathlib4 synchronization comments (#19141) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_geometry.stalks` * `algebraic_geometry.structure_sheaf` * `analysis.analytic.basic` * `analysis.calculus.cont_diff_def` * `analysis.calculus.iterated_deriv` * `analysis.calculus.mean_value` * `analysis.inner_product_space.adjoint` * `analysis.inner_product_space.positive` * `analysis.normed_space.lp_equiv` * `analysis.normed_space.lp_space` * `measure_theory.constructions.pi` * `measure_theory.function.convergence_in_measure` * `measure_theory.function.locally_integrable` * `measure_theory.measure.haar.of_basis` * `probability.probability_mass_function.uniform` * `ring_theory.filtration` * `topology.algebra.valued_field` * `topology.metric_space.kuratowski` ESTIMATED CHANGES Modified src/algebraic_geometry/stalks.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/cont_diff_def.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/inner_product_space/adjoint.lean Modified src/analysis/inner_product_space/positive.lean Modified src/analysis/normed_space/lp_equiv.lean Modified src/analysis/normed_space/lp_space.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/function/convergence_in_measure.lean Modified src/measure_theory/function/locally_integrable.lean Modified src/measure_theory/measure/haar/of_basis.lean Modified src/probability/probability_mass_function/uniform.lean Modified src/ring_theory/filtration.lean Modified src/topology/algebra/valued_field.lean Modified src/topology/metric_space/kuratowski.lean 2023-06-02 05:41:32 a166656 chore(analysis/convex/specific_functions/deriv): remove unnecessary imports (#19140) I accidentally left some extra imports in this file during the split #19031. ESTIMATED CHANGES Modified src/analysis/convex/specific_functions/deriv.lean Modified src/number_theory/bertrand.lean 2023-06-02 04:32:37 6a5c850 chore(analysis/special_functions/exp_deriv): downgrade import (#19139) Move lemma `complex.is_open_map_exp` from `special_functions/exp_deriv` to right before its (unique) place of use, in `complex.exp_local_homeomorph` in `special_functions/log_deriv`. Morally these belong together: being an open map and being a local homeomorphism are closely tied, they are both consequences of the inverse function theorem and the point of both is to set up being able to differentiate complex log as the inverse function of complex exp. This removes the inverse function theorem from the dependencies of `special_functions/exp_deriv` (a surprisingly widely-imported file). ESTIMATED CHANGES Modified src/analysis/special_functions/complex/log_deriv.lean + theorem complex.is_open_map_exp Modified src/analysis/special_functions/exp_deriv.lean - theorem complex.is_open_map_exp 2023-06-01 20:20:54 34ebaff feat(number_theory/sum_two_squares): add result for general n (#19054) This PR resolves the "Todo" that was left in `number_theory.sum_two_squares`, i.e., it adds the result that characterizes natural numbers that are sums of two squares in terms of their prime factorization: ```lean lemma nat.eq_sq_add_sq_iff {n : ℕ} : (∃ x y : ℕ, n = x ^ 2 + y ^ 2) ↔ ∀ {q : ℕ} (hq : q.prime) (h : q % 4 = 3), even (padic_val_nat q n) := ... ``` There is some discussion on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Preferred.20spelling.20of.20p-adic.20valuation.3F/near/359896021) regarding how to spell out the condition on the right hand side. ESTIMATED CHANGES Modified src/number_theory/sum_two_squares.lean + theorem nat.eq_sq_add_sq_iff + theorem nat.eq_sq_add_sq_iff_eq_sq_mul + theorem nat.eq_sq_add_sq_of_is_square_mod_neg_one + theorem nat.prime.mod_four_ne_three_of_dvd_is_square_neg_one +/- theorem nat.prime.sq_add_sq + theorem nat.sq_add_sq_mul + theorem sq_add_sq_mul + theorem zmod.is_square_neg_one_iff' + theorem zmod.is_square_neg_one_iff + theorem zmod.is_square_neg_one_mul + theorem zmod.is_square_neg_one_of_dvd + theorem zmod.is_square_neg_one_of_eq_sq_add_sq_of_coprime + theorem zmod.is_square_neg_one_of_eq_sq_add_sq_of_is_coprime 2023-06-01 19:12:42 b608348 chore(ring_theory/derivation): split file (#19138) The Stone-Weierstrass theorem shouldn't require the definition of Lie algebras. ESTIMATED CHANGES Modified src/data/mv_polynomial/derivation.lean Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/derivation_bundle.lean Renamed src/ring_theory/derivation.lean to src/ring_theory/derivation/basic.lean - theorem derivation.commutator_apply - theorem derivation.commutator_coe_linear_map - def derivation_to_square_zero_equiv_lift - def derivation_to_square_zero_of_lift - theorem derivation_to_square_zero_of_lift_apply - def diff_to_ideal_of_quotient_comp_eq - theorem diff_to_ideal_of_quotient_comp_eq_apply - def lift_of_derivation_to_square_zero - theorem lift_of_derivation_to_square_zero_mk_apply Added src/ring_theory/derivation/lie.lean + theorem derivation.commutator_apply + theorem derivation.commutator_coe_linear_map Added src/ring_theory/derivation/to_square_zero.lean + def derivation_to_square_zero_equiv_lift + def derivation_to_square_zero_of_lift + theorem derivation_to_square_zero_of_lift_apply + def diff_to_ideal_of_quotient_comp_eq + theorem diff_to_ideal_of_quotient_comp_eq_apply + def lift_of_derivation_to_square_zero + theorem lift_of_derivation_to_square_zero_mk_apply Modified src/ring_theory/kaehler.lean 2023-06-01 16:18:47 d35b4ff chore(ring_theory): remove `splitting_field` dependency from `is_integrally_closed` (#19137) The only declarations involving splitting fields were `integral_closure.mem_lifts_of_monic_of_dvd_map` and `is_integrally_closed.eq_map_mul_C_of_dvd`. Both are similar to Gauss' lemma and their only use is to prove Gauss' lemma, so I moved them to that file. ESTIMATED CHANGES Modified src/ring_theory/integrally_closed.lean - theorem integral_closure.mem_lifts_of_monic_of_dvd_map - theorem is_integrally_closed.eq_map_mul_C_of_dvd Modified src/ring_theory/polynomial/gauss_lemma.lean + theorem integral_closure.mem_lifts_of_monic_of_dvd_map + theorem is_integrally_closed.eq_map_mul_C_of_dvd 2023-06-01 13:20:10 9d013ad doc(analysis/normed_space/pi_Lp): fix corrupt synchronization header (#19134) The missing blank line makes a mess in doc-gen. Hopefully this file was just strangely formatted, and this isn't a new bug in the script. ESTIMATED CHANGES Modified src/analysis/normed_space/pi_Lp.lean 2023-06-01 08:55:00 6723746 chore(field_theory/ratfunc): use `section` instead of `omit/include` (#19133) This hopefully closes [#4513](https://github.com/leanprover-community/mathlib4/issues/4513) (or at least mitigates it) and will settle [!4#4373](https://github.com/leanprover-community/mathlib4/pull/4373) in mathlib3. ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean +/- structure ratfunc 2023-06-01 06:32:48 599fffe chore(*): add mathlib4 synchronization comments (#19135) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `analysis.calculus.deriv.zpow` * `analysis.quaternion` * `analysis.specific_limits.floor_pow` * `category_theory.sites.closed` * `group_theory.nilpotent` * `measure_theory.function.l1_space` * `measure_theory.group.prod` * `measure_theory.integral.integrable_on` * `measure_theory.measure.haar.basic` * `topology.homotopy.homotopy_group` * `topology.sheaves.local_predicate` ESTIMATED CHANGES Modified src/analysis/calculus/deriv/zpow.lean Modified src/analysis/quaternion.lean Modified src/analysis/specific_limits/floor_pow.lean Modified src/category_theory/sites/closed.lean Modified src/group_theory/nilpotent.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/measure/haar/basic.lean Modified src/topology/homotopy/homotopy_group.lean Modified src/topology/sheaves/local_predicate.lean 2023-06-01 05:11:40 04e80bb refactor(number_theory/liouville/liouville_number): review API, golf (#19126) * Protect `liouville.irrational` and `liouville.transcendental`. * Sync file name with definition name (Liouville constant vs Liouville number). * Move auxiliary definitions and lemmas about Liouville number to `liouville_number` namespace. * Rename auxiliary definitions, golf proofs (where it doesn't affect readability). ESTIMATED CHANGES Modified docs/overview.yaml Modified src/number_theory/liouville/basic.lean - theorem liouville.irrational - theorem liouville.transcendental Renamed src/number_theory/liouville/liouville_constant.lean to src/number_theory/liouville/liouville_number.lean - theorem liouville.aux_calc - theorem liouville.is_liouville - theorem liouville.is_transcendental - def liouville.liouville_number - theorem liouville.liouville_number_eq_initial_terms_add_tail - def liouville.liouville_number_initial_terms - theorem liouville.liouville_number_rat_initial_terms - def liouville.liouville_number_tail - theorem liouville.liouville_number_tail_pos - theorem liouville.tsum_one_div_pow_factorial_lt + theorem liouville_liouville_number + theorem liouville_number.aux_calc + def liouville_number.partial_sum + theorem liouville_number.partial_sum_add_remainder + theorem liouville_number.partial_sum_eq_rat + theorem liouville_number.partial_sum_succ + def liouville_number.remainder + theorem liouville_number.remainder_lt' + theorem liouville_number.remainder_lt + theorem liouville_number.remainder_pos + theorem liouville_number.remainder_summable + def liouville_number + theorem transcendental_liouville_number 2023-05-31 19:23:50 cca4078 feat (number_theory/zeta_function): relate to Dirichlet series (#19131) This PR adds two important properties of the Riemann zeta function: firstly, it is differentiable away from `s = 1` (which is easy for `s ≠ 0`, but much harder at `s = 0`); secondly, for `1 < re s` the zeta function is given by the usual Dirichlet series. Just for fun, we also add a formal statement of the Riemann hypothesis. ESTIMATED CHANGES Modified src/analysis/special_functions/gamma/basic.lean + theorem complex.tendsto_self_mul_Gamma_nhds_zero Modified src/analysis/special_functions/gamma/beta.lean + theorem complex.Gamma_ne_zero_of_re_pos Modified src/number_theory/zeta_function.lean + theorem completed_zeta_eq_tsum_of_one_lt_re + theorem differentiable_at_riemann_zeta + theorem integral_cpow_mul_exp_neg_pi_mul_sq + theorem mellin_zeta_kernel₁_eq_tsum + def riemann_hypothesis + theorem riemann_zeta_neg_two_mul_nat_add_one + theorem zeta_eq_tsum_of_one_lt_re 2023-05-31 13:56:43 e137999 feat(analysis/schwartz_space): Multiplication of Schwartz function and functions of temperate growth (#18649) ESTIMATED CHANGES Modified src/analysis/schwartz_space.lean + theorem function.has_temperate_growth.norm_iterated_fderiv_le_uniform_aux + def function.has_temperate_growth + def schwartz_map.bilin_left_clm + def schwartz_map.comp_clm 2023-05-31 12:41:58 00abe06 feat(probability/kernel/cond_distrib): regular conditional probability distributions (#19090) We define the regular conditional probability distribution `cond_distrib Y X μ` of `Y : α → Ω` given `X : α → β`, where `Ω` is a standard Borel space. This is a `kernel β Ω` such that for almost all `a`, for all measurable set `s`, `cond_distrib Y X μ (X a) s` is equal to the conditional expectation `μ⟦Y ⁻¹' s | mβ.comap X⟧` evaluated at `a`. Also define the above notation for the conditional expectation of the indicator of a set. ESTIMATED CHANGES Modified src/measure_theory/constructions/prod/basic.lean + theorem measure_theory.measure.fst_map_prod_mk + theorem measure_theory.measure.fst_map_prod_mk₀ + theorem measure_theory.measure.snd_map_prod_mk + theorem measure_theory.measure.snd_map_prod_mk₀ Modified src/measure_theory/function/conditional_expectation/basic.lean + theorem measure_theory.ae_strongly_measurable.comp_ae_measurable' Added src/probability/kernel/cond_distrib.lean + theorem measure_theory.ae_strongly_measurable.ae_integrable_cond_distrib_map_iff + theorem measure_theory.ae_strongly_measurable.comp_snd_map_prod_mk + theorem measure_theory.ae_strongly_measurable.integral_cond_distrib + theorem measure_theory.ae_strongly_measurable.integral_cond_distrib_map + theorem measure_theory.integrable.comp_snd_map_prod_mk + theorem measure_theory.integrable.cond_distrib_ae + theorem measure_theory.integrable.cond_distrib_ae_map + theorem measure_theory.integrable.integral_cond_distrib + theorem measure_theory.integrable.integral_cond_distrib_map + theorem measure_theory.integrable.integral_norm_cond_distrib + theorem measure_theory.integrable.integral_norm_cond_distrib_map + theorem measure_theory.integrable.norm_integral_cond_distrib + theorem measure_theory.integrable.norm_integral_cond_distrib_map + theorem probability_theory.ae_strongly_measurable'_integral_cond_distrib + theorem probability_theory.ae_strongly_measurable_comp_snd_map_prod_mk_iff + def probability_theory.cond_distrib + theorem probability_theory.cond_distrib_ae_eq_condexp + theorem probability_theory.condexp_ae_eq_integral_cond_distrib' + theorem probability_theory.condexp_ae_eq_integral_cond_distrib + theorem probability_theory.condexp_ae_eq_integral_cond_distrib_id + theorem probability_theory.condexp_prod_ae_eq_integral_cond_distrib' + theorem probability_theory.condexp_prod_ae_eq_integral_cond_distrib + theorem probability_theory.condexp_prod_ae_eq_integral_cond_distrib₀ + theorem probability_theory.integrable_comp_snd_map_prod_mk_iff + theorem probability_theory.integrable_to_real_cond_distrib + theorem probability_theory.measurable_cond_distrib + theorem probability_theory.set_lintegral_cond_distrib_of_measurable_set + theorem probability_theory.set_lintegral_preimage_cond_distrib Added src/probability/kernel/condexp.lean + theorem measure_theory.ae_strongly_measurable.comp_snd_map_prod_id + theorem measure_theory.ae_strongly_measurable.integral_condexp_kernel + theorem measure_theory.integrable.comp_snd_map_prod_id + theorem measure_theory.integrable.condexp_kernel_ae + theorem measure_theory.integrable.integral_condexp_kernel + theorem measure_theory.integrable.integral_norm_condexp_kernel + theorem measure_theory.integrable.norm_integral_condexp_kernel + theorem probability_theory.ae_measurable_id'' + theorem probability_theory.ae_strongly_measurable'_integral_condexp_kernel + theorem probability_theory.condexp_ae_eq_integral_condexp_kernel + def probability_theory.condexp_kernel + theorem probability_theory.integrable_to_real_condexp_kernel + theorem probability_theory.measurable_condexp_kernel + theorem probability_theory.measurable_id'' Modified src/probability/notation.lean 2023-05-31 09:30:33 a99f852 feat(linear_algebra/matrix/adjugate): add `det_eq_sum_mul_adjugate_row` (#19117) From lean-matrix-cookbook ESTIMATED CHANGES Modified src/data/matrix/notation.lean + theorem matrix.submatrix_update_column_succ_above + theorem matrix.submatrix_update_row_succ_above Modified src/linear_algebra/matrix/adjugate.lean + theorem matrix.adjugate_fin_succ_eq_det_submatrix + theorem matrix.det_eq_sum_mul_adjugate_col + theorem matrix.det_eq_sum_mul_adjugate_row 2023-05-31 08:02:01 61b5e27 chore(*): add mathlib4 synchronization comments (#19132) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.adjunctions` * `analysis.calculus.darboux` * `analysis.calculus.deriv.inv` * `analysis.calculus.diff_cont_on_cl` * `analysis.calculus.dslope` * `analysis.inner_product_space.gram_schmidt_ortho` * `category_theory.abelian.ext` * `category_theory.abelian.left_derived` * `category_theory.bicategory.single_obj` * `data.real.golden_ratio` * `measure_theory.category.Meas` * `measure_theory.decomposition.jordan` * `measure_theory.decomposition.signed_hahn` * `measure_theory.group.action` * `measure_theory.group.measure` * `number_theory.arithmetic_function` * `number_theory.l_series` * `number_theory.von_mangoldt` * `topology.algebra.continuous_monoid_hom` * `topology.instances.discrete` * `topology.sheaves.stalks` * `topology.tietze_extension` ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/deriv/inv.lean Modified src/analysis/calculus/diff_cont_on_cl.lean Modified src/analysis/calculus/dslope.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/category_theory/abelian/ext.lean Modified src/category_theory/abelian/left_derived.lean Modified src/category_theory/bicategory/single_obj.lean Modified src/data/real/golden_ratio.lean Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/group/action.lean Modified src/measure_theory/group/measure.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/l_series.lean Modified src/number_theory/von_mangoldt.lean Modified src/topology/algebra/continuous_monoid_hom.lean Modified src/topology/instances/discrete.lean Modified src/topology/sheaves/stalks.lean Modified src/topology/tietze_extension.lean 2023-05-31 00:27:53 12a85fa chore(field_theory/finite/basic): move a lemma (#19130) Moving one instance we can erase `field_theory.splitting_field` from the imports of `field_theory.finite.basic)`. ESTIMATED CHANGES Modified src/field_theory/finite/basic.lean Modified src/field_theory/finite/galois_field.lean 2023-05-30 23:18:13 3283755 chore(archive + counterexamples): namespaces imo, theorems_100, counterexample, plus three more (#19129) This PR is a revision of #19122: it addresses namespacing in `archive` and `counterexamples`. The main difference with #19122 is that it adds namespaces less aggressively: I added a namespace only if there was not an explicit namespace after the initial "fluff". In `counterexamples`, I added namespaces to all files. I introduced three "main" namespaces: `imo, theorems_100, counterexample` (the last one singular). Besides these, I also introduced the namespaces `prop_encodable, oxford_invariants, sensitivity`, to cover the left-over files in `archive`. Note that if a file has `namespace` early on, then it does not get a new namespace, even though it might be desirable for it to have one. Comments are very welcome! Note: besides adding namespaces, the only files that I had to manually edit are the ones in * commit d337b99e3e6d147d440c91874d1809a3ee04ff16 -- I do not like these changes, but currently do not see how to avoid them; * commit 48471f35ec9f9929dd35363ee176f8c889042f6e -- I *removed* an pre-existing namespace, replacing it by `open `. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mk_all.2Esh): this PR is motivated by the desire to port to mathlib4 the files in `archive, counterexamples`, taking advantage of `mathport`. The namespacing helps with avoiding clashes among names of declarations, as well as one-lettered declarations in the root namespace. ESTIMATED CHANGES Modified archive/100-theorems-list/37_solution_of_cubic.lean - theorem cube_root_of_unity_sum - theorem cubic_basic_eq_zero_iff - theorem cubic_eq_zero_iff - theorem cubic_eq_zero_iff_of_p_eq_zero - theorem cubic_monic_eq_zero_iff + theorem theorems_100.cube_root_of_unity_sum + theorem theorems_100.cubic_basic_eq_zero_iff + theorem theorems_100.cubic_eq_zero_iff + theorem theorems_100.cubic_eq_zero_iff_of_p_eq_zero + theorem theorems_100.cubic_monic_eq_zero_iff Modified archive/100-theorems-list/42_inverse_triangle_sum.lean - theorem inverse_triangle_sum + theorem theorem_100.inverse_triangle_sum Modified archive/100-theorems-list/45_partition.lean - theorem coeff_indicator - theorem coeff_indicator_neg - theorem coeff_indicator_pos - theorem coeff_prod_range - theorem constant_coeff_indicator - def cut - theorem cut_empty_succ - theorem cut_equiv_antidiag - theorem cut_insert - theorem cut_univ_fin_eq_antidiagonal_tuple - theorem cut_zero - theorem distinct_gf_prop - def indicator_series - theorem mem_cut - def mk_odd - theorem num_series' - theorem odd_gf_prop - def partial_distinct_gf - theorem partial_distinct_gf_prop - theorem partial_gf_prop - def partial_odd_gf - theorem partial_odd_gf_prop - theorem partition_theorem - theorem same_coeffs - theorem same_gf + theorem theorems_100.coeff_indicator + theorem theorems_100.coeff_indicator_neg + theorem theorems_100.coeff_indicator_pos + theorem theorems_100.coeff_prod_range + theorem theorems_100.constant_coeff_indicator + def theorems_100.cut + theorem theorems_100.cut_empty_succ + theorem theorems_100.cut_equiv_antidiag + theorem theorems_100.cut_insert + theorem theorems_100.cut_univ_fin_eq_antidiagonal_tuple + theorem theorems_100.cut_zero + theorem theorems_100.distinct_gf_prop + def theorems_100.indicator_series + theorem theorems_100.mem_cut + def theorems_100.mk_odd + theorem theorems_100.num_series' + theorem theorems_100.odd_gf_prop + def theorems_100.partial_distinct_gf + theorem theorems_100.partial_distinct_gf_prop + theorem theorems_100.partial_gf_prop + def theorems_100.partial_odd_gf + theorem theorems_100.partial_odd_gf_prop + theorem theorems_100.partition_theorem + theorem theorems_100.same_coeffs + theorem theorems_100.same_gf + theorem theorems_100.two_series - theorem two_series Modified archive/100-theorems-list/57_herons_formula.lean - theorem heron + theorem theorems_100.heron Modified archive/100-theorems-list/70_perfect_numbers.lean - theorem nat.eq_two_pow_mul_odd - theorem nat.eq_two_pow_mul_prime_mersenne_of_even_perfect - theorem nat.even_and_perfect_iff - theorem nat.even_two_pow_mul_mersenne_of_prime - theorem nat.ne_zero_of_prime_mersenne - theorem nat.perfect_two_pow_mul_mersenne_of_prime - theorem nat.sigma_two_pow_eq_mersenne_succ - theorem odd_mersenne_succ + theorem theorems_100.nat.eq_two_pow_mul_odd + theorem theorems_100.nat.eq_two_pow_mul_prime_mersenne_of_even_perfect + theorem theorems_100.nat.even_and_perfect_iff + theorem theorems_100.nat.even_two_pow_mul_mersenne_of_prime + theorem theorems_100.nat.ne_zero_of_prime_mersenne + theorem theorems_100.nat.perfect_two_pow_mul_mersenne_of_prime + theorem theorems_100.nat.sigma_two_pow_eq_mersenne_succ + theorem theorems_100.odd_mersenne_succ Modified archive/100-theorems-list/73_ascending_descending_sequences.lean - theorem erdos_szekeres + theorem theorems_100.erdos_szekeres Modified archive/100-theorems-list/81_sum_of_prime_reciprocals_diverges.lean - theorem card_le_mul_sum - theorem card_le_two_pow - theorem card_le_two_pow_mul_sqrt - theorem range_sdiff_eq_bUnion - theorem real.tendsto_sum_one_div_prime_at_top - theorem sum_lt_half_of_not_tendsto + theorem theorems_100.card_le_mul_sum + theorem theorems_100.card_le_two_pow + theorem theorems_100.card_le_two_pow_mul_sqrt + theorem theorems_100.range_sdiff_eq_bUnion + theorem theorems_100.real.tendsto_sum_one_div_prime_at_top + theorem theorems_100.sum_lt_half_of_not_tendsto Modified archive/100-theorems-list/82_cubing_a_cube.lean + theorem theorems_100.«82».Ico_lemma + theorem theorems_100.«82».b_le_b + def theorems_100.«82».bcubes + theorem theorems_100.«82».bottom_mem_side + theorem theorems_100.«82».cannot_cube_a_cube + theorem theorems_100.«82».correct.b_add_w_le_one + theorem theorems_100.«82».correct.nontrivial_fin + theorem theorems_100.«82».correct.shift_up_bottom_subset_bottoms + theorem theorems_100.«82».correct.side_subset + theorem theorems_100.«82».correct.to_set_subset_unit_cube + theorem theorems_100.«82».correct.w_ne_one + theorem theorems_100.«82».correct.zero_le_b + theorem theorems_100.«82».correct.zero_le_of_mem + theorem theorems_100.«82».correct.zero_le_of_mem_side + structure theorems_100.«82».correct + theorem theorems_100.«82».cube.b_lt_xm + theorem theorems_100.«82».cube.b_mem_bottom + theorem theorems_100.«82».cube.b_mem_side + theorem theorems_100.«82».cube.b_mem_to_set + theorem theorems_100.«82».cube.b_ne_xm + def theorems_100.«82».cube.bottom + theorem theorems_100.«82».cube.head_shift_up + theorem theorems_100.«82».cube.hw' + def theorems_100.«82».cube.shift_up + def theorems_100.«82».cube.side + theorem theorems_100.«82».cube.side_nonempty + theorem theorems_100.«82».cube.side_tail + theorem theorems_100.«82».cube.side_unit_cube + theorem theorems_100.«82».cube.tail_shift_up + def theorems_100.«82».cube.to_set + theorem theorems_100.«82».cube.to_set_disjoint + theorem theorems_100.«82».cube.to_set_subset + def theorems_100.«82».cube.unit_cube + theorem theorems_100.«82».cube.univ_pi_side + def theorems_100.«82».cube.xm + structure theorems_100.«82».cube + def theorems_100.«82».decreasing_sequence + theorem theorems_100.«82».exists_mi + theorem theorems_100.«82».injective_sequence_of_cubes + def theorems_100.«82».mi + theorem theorems_100.«82».mi_mem_bcubes + theorem theorems_100.«82».mi_minimal + theorem theorems_100.«82».mi_not_on_boundary' + theorem theorems_100.«82».mi_not_on_boundary + theorem theorems_100.«82».mi_strict_minimal + theorem theorems_100.«82».mi_xm_ne_one + theorem theorems_100.«82».nonempty_bcubes + theorem theorems_100.«82».nontrivial_bcubes + theorem theorems_100.«82».not_correct + def theorems_100.«82».on_boundary + theorem theorems_100.«82».smallest_on_boundary + theorem theorems_100.«82».strict_anti_sequence_of_cubes + theorem theorems_100.«82».t_le_t + theorem theorems_100.«82».tail_sub + def theorems_100.«82».valley + theorem theorems_100.«82».valley_mi + theorem theorems_100.«82».valley_unit_cube + theorem theorems_100.«82».w_lt_w - theorem «82».Ico_lemma - theorem «82».b_le_b - def «82».bcubes - theorem «82».bottom_mem_side - theorem «82».cannot_cube_a_cube - theorem «82».correct.b_add_w_le_one - theorem «82».correct.nontrivial_fin - theorem «82».correct.shift_up_bottom_subset_bottoms - theorem «82».correct.side_subset - theorem «82».correct.to_set_subset_unit_cube - theorem «82».correct.w_ne_one - theorem «82».correct.zero_le_b - theorem «82».correct.zero_le_of_mem - theorem «82».correct.zero_le_of_mem_side - structure «82».correct - theorem «82».cube.b_lt_xm - theorem «82».cube.b_mem_bottom - theorem «82».cube.b_mem_side - theorem «82».cube.b_mem_to_set - theorem «82».cube.b_ne_xm - def «82».cube.bottom - theorem «82».cube.head_shift_up - theorem «82».cube.hw' - def «82».cube.shift_up - def «82».cube.side - theorem «82».cube.side_nonempty - theorem «82».cube.side_tail - theorem «82».cube.side_unit_cube - theorem «82».cube.tail_shift_up - def «82».cube.to_set - theorem «82».cube.to_set_disjoint - theorem «82».cube.to_set_subset - def «82».cube.unit_cube - theorem «82».cube.univ_pi_side - def «82».cube.xm - structure «82».cube - def «82».decreasing_sequence - theorem «82».exists_mi - theorem «82».injective_sequence_of_cubes - def «82».mi - theorem «82».mi_mem_bcubes - theorem «82».mi_minimal - theorem «82».mi_not_on_boundary' - theorem «82».mi_not_on_boundary - theorem «82».mi_strict_minimal - theorem «82».mi_xm_ne_one - theorem «82».nonempty_bcubes - theorem «82».nontrivial_bcubes - theorem «82».not_correct - def «82».on_boundary - theorem «82».smallest_on_boundary - theorem «82».strict_anti_sequence_of_cubes - theorem «82».t_le_t - theorem «82».tail_sub - def «82».valley - theorem «82».valley_mi - theorem «82».valley_unit_cube - theorem «82».w_lt_w Modified archive/100-theorems-list/83_friendship_graphs.lean - def exists_politician - theorem friendship.adj_matrix_mul_const_one_mod_p_of_regular - theorem friendship.adj_matrix_pow_mod_p_of_regular - theorem friendship.adj_matrix_pow_three_of_not_adj - theorem friendship.adj_matrix_sq_mod_p_of_regular - theorem friendship.adj_matrix_sq_mul_const_one_of_regular - theorem friendship.adj_matrix_sq_of_ne - theorem friendship.adj_matrix_sq_of_regular - theorem friendship.card_mod_p_of_regular - theorem friendship.card_of_regular - theorem friendship.degree_eq_of_not_adj - theorem friendship.exists_politician_of_degree_eq_two - theorem friendship.exists_politician_of_degree_le_one - theorem friendship.exists_politician_of_degree_le_two - theorem friendship.false_of_three_le_degree - theorem friendship.is_regular_of_not_exists_politician - theorem friendship.neighbor_finset_eq_of_degree_eq_two - def friendship - theorem friendship_theorem + def theorems_100.exists_politician + theorem theorems_100.friendship.adj_matrix_mul_const_one_mod_p_of_regular + theorem theorems_100.friendship.adj_matrix_pow_mod_p_of_regular + theorem theorems_100.friendship.adj_matrix_pow_three_of_not_adj + theorem theorems_100.friendship.adj_matrix_sq_mod_p_of_regular + theorem theorems_100.friendship.adj_matrix_sq_mul_const_one_of_regular + theorem theorems_100.friendship.adj_matrix_sq_of_ne + theorem theorems_100.friendship.adj_matrix_sq_of_regular + theorem theorems_100.friendship.card_mod_p_of_regular + theorem theorems_100.friendship.card_of_regular + theorem theorems_100.friendship.degree_eq_of_not_adj + theorem theorems_100.friendship.exists_politician_of_degree_eq_two + theorem theorems_100.friendship.exists_politician_of_degree_le_one + theorem theorems_100.friendship.exists_politician_of_degree_le_two + theorem theorems_100.friendship.false_of_three_le_degree + theorem theorems_100.friendship.is_regular_of_not_exists_politician + theorem theorems_100.friendship.neighbor_finset_eq_of_degree_eq_two + def theorems_100.friendship + theorem theorems_100.friendship_theorem Modified archive/100-theorems-list/93_birthday_problem.lean - theorem birthday - theorem birthday_measure - theorem fin_fin.measure_apply + theorem theorems_100.birthday + theorem theorems_100.birthday_measure + theorem theorems_100.fin_fin.measure_apply Modified archive/100-theorems-list/9_area_of_a_circle.lean - theorem area_disc - def disc - theorem disc_eq_region_between - theorem measurable_set_disc + theorem theorems_100.area_disc + def theorems_100.disc + theorem theorems_100.disc_eq_region_between + theorem theorems_100.measurable_set_disc Modified archive/examples/prop_encodable.lean - def mk_fn0 - def mk_fn1 - def mk_fn2 + def prop_encodable.mk_fn0 + def prop_encodable.mk_fn1 + def prop_encodable.mk_fn2 + inductive prop_encodable.prop_form - inductive prop_form Modified archive/imo/imo1959_q1.lean - theorem calculation + theorem imo.calculation + theorem imo.imo1959_q1 - theorem imo1959_q1 Modified archive/imo/imo1962_q4.lean - theorem alt_equiv - def alt_formula - theorem cos_sum_equiv - theorem finding_zeros - theorem formula + theorem imo.alt_equiv + def imo.alt_formula + theorem imo.cos_sum_equiv + theorem imo.finding_zeros + theorem imo.formula + theorem imo.imo1962_q4' + theorem imo.imo1962_q4 + def imo.problem_equation + def imo.solution_set + theorem imo.solve_cos2_half + theorem imo.solve_cos2x_0 + theorem imo.solve_cos3x_0 - theorem imo1962_q4' - theorem imo1962_q4 - def problem_equation - def solution_set - theorem solve_cos2_half - theorem solve_cos2x_0 - theorem solve_cos3x_0 Modified archive/imo/imo1972_q5.lean Modified archive/imo/imo1975_q1.lean - theorem IMO_1975_Q1 + theorem imo.IMO_1975_Q1 Modified archive/imo/imo1977_q6.lean + theorem imo.imo1977_q6 + theorem imo.imo1977_q6_nat - theorem imo1977_q6 - theorem imo1977_q6_nat Modified archive/imo/imo1988_q6.lean - theorem constant_descent_vieta_jumping + theorem imo.constant_descent_vieta_jumping + theorem imo.imo1988_q6 - theorem imo1988_q6 Modified archive/imo/imo1994_q1.lean + theorem imo.imo1994_q1 + theorem imo.tedious - theorem imo1994_q1 - theorem tedious Modified archive/imo/imo1998_q2.lean - def A - theorem A_card_lower_bound - theorem A_card_upper_bound - theorem A_fibre_over_contestant - theorem A_fibre_over_contestant_card - theorem A_fibre_over_judge_pair - theorem A_fibre_over_judge_pair_card - theorem A_maps_to_off_diag_judge_pair - theorem add_sq_add_sq_sub - def agreed_contestants - def agreed_triple.contestant - def agreed_triple.judge_pair - def agreed_triple - theorem clear_denominators - theorem distinct_judge_pairs_card_lower_bound + def imo.A + theorem imo.A_card_lower_bound + theorem imo.A_card_upper_bound + theorem imo.A_fibre_over_contestant + theorem imo.A_fibre_over_contestant_card + theorem imo.A_fibre_over_judge_pair + theorem imo.A_fibre_over_judge_pair_card + theorem imo.A_maps_to_off_diag_judge_pair + theorem imo.add_sq_add_sq_sub + def imo.agreed_contestants + def imo.agreed_triple.contestant + def imo.agreed_triple.judge_pair + def imo.agreed_triple + theorem imo.clear_denominators + theorem imo.distinct_judge_pairs_card_lower_bound + theorem imo.imo1998_q2 + def imo.judge_pair.agree + theorem imo.judge_pair.agree_iff_same_rating + def imo.judge_pair.distinct + def imo.judge_pair.judge₁ + def imo.judge_pair.judge₂ + def imo.judge_pair + theorem imo.judge_pairs_card_lower_bound + theorem imo.norm_bound_of_odd_sum - theorem imo1998_q2 - def judge_pair.agree - theorem judge_pair.agree_iff_same_rating - def judge_pair.distinct - def judge_pair.judge₁ - def judge_pair.judge₂ - def judge_pair - theorem judge_pairs_card_lower_bound - theorem norm_bound_of_odd_sum Modified archive/imo/imo2001_q2.lean - theorem bound - theorem denom_pos + theorem imo.bound + theorem imo.denom_pos + theorem imo.imo2001_q2' + theorem imo.imo2001_q2 - theorem imo2001_q2' - theorem imo2001_q2 Modified archive/imo/imo2001_q6.lean + theorem imo.imo2001_q6 - theorem imo2001_q6 Modified archive/imo/imo2005_q3.lean + theorem imo.imo2005_q3 + theorem imo.key_insight - theorem imo2005_q3 - theorem key_insight Modified archive/imo/imo2005_q4.lean - def a - theorem find_specified_factor + def imo.a + theorem imo.find_specified_factor Modified archive/imo/imo2006_q3.lean - theorem four_pow_four_pos + theorem imo.four_pow_four_pos + theorem imo.imo2006_q3 + theorem imo.lhs_identity + theorem imo.lhs_ineq + theorem imo.mid_ineq + theorem imo.proof₁ + theorem imo.proof₂ + theorem imo.rhs_ineq + theorem imo.subst_proof₁ + theorem imo.subst_wlog + theorem imo.zero_lt_32 - theorem imo2006_q3 - theorem lhs_identity - theorem lhs_ineq - theorem mid_ineq - theorem proof₁ - theorem proof₂ - theorem rhs_ineq - theorem subst_proof₁ - theorem subst_wlog - theorem zero_lt_32 Modified archive/imo/imo2006_q5.lean + theorem imo.imo2006_q5' + theorem imo.imo2006_q5 + theorem imo.int.add_eq_add_of_nat_abs_eq_of_nat_abs_eq + theorem imo.int.nat_abs_eq_of_chain_dvd + theorem imo.polynomial.is_periodic_pt_eval_two + theorem imo.polynomial.iterate_comp_sub_X_ne - theorem imo2006_q5' - theorem imo2006_q5 - theorem int.add_eq_add_of_nat_abs_eq_of_nat_abs_eq - theorem int.nat_abs_eq_of_chain_dvd - theorem polynomial.is_periodic_pt_eval_two - theorem polynomial.iterate_comp_sub_X_ne Modified archive/imo/imo2008_q2.lean + theorem imo.imo2008_q2a + theorem imo.imo2008_q2b + def imo.rational_solutions + theorem imo.subst_abc - theorem imo2008_q2a - theorem imo2008_q2b - def rational_solutions - theorem subst_abc Modified archive/imo/imo2008_q3.lean + theorem imo.imo2008_q3 + theorem imo.p_lemma - theorem imo2008_q3 - theorem p_lemma Modified archive/imo/imo2008_q4.lean - theorem abs_eq_one_of_pow_eq_one + theorem imo.abs_eq_one_of_pow_eq_one + theorem imo.imo2008_q4 - theorem imo2008_q4 Modified archive/imo/imo2011_q3.lean + theorem imo.imo2011_q3 - theorem imo2011_q3 Modified archive/imo/imo2011_q5.lean + theorem imo.imo2011_q5 - theorem imo2011_q5 Modified archive/imo/imo2013_q1.lean - theorem arith_lemma + theorem imo.arith_lemma + theorem imo.imo2013_q1 + theorem imo.prod_lemma - theorem imo2013_q1 - theorem prod_lemma Modified archive/imo/imo2013_q5.lean - theorem f_pos_of_pos - theorem fixed_point_of_gt_1 - theorem fixed_point_of_pos_nat_pow - theorem fx_gt_xm1 + theorem imo.f_pos_of_pos + theorem imo.fixed_point_of_gt_1 + theorem imo.fixed_point_of_pos_nat_pow + theorem imo.fx_gt_xm1 + theorem imo.imo2013_q5 + theorem imo.le_of_all_pow_lt_succ' + theorem imo.le_of_all_pow_lt_succ + theorem imo.pow_f_le_f_pow - theorem imo2013_q5 - theorem le_of_all_pow_lt_succ' - theorem le_of_all_pow_lt_succ - theorem pow_f_le_f_pow Modified archive/imo/imo2019_q1.lean + theorem imo.imo2019Q1 - theorem imo2019Q1 Modified archive/imo/imo2019_q2.lean + theorem imo.imo2019_q2 + theorem imo.imo2019q2_cfg.A_mem_circumsphere + theorem imo.imo2019q2_cfg.A_ne_A₁ + theorem imo.imo2019q2_cfg.A_ne_B + theorem imo.imo2019q2_cfg.A_ne_C + theorem imo.imo2019q2_cfg.A₁_ne_B + theorem imo.imo2019q2_cfg.A₁_ne_C + def imo.imo2019q2_cfg.A₂ + theorem imo.imo2019q2_cfg.A₂_mem_circumsphere + theorem imo.imo2019q2_cfg.A₂_ne_A + theorem imo.imo2019q2_cfg.A₂_ne_B + theorem imo.imo2019q2_cfg.A₂_ne_C + theorem imo.imo2019q2_cfg.A₂_ne_P + theorem imo.imo2019q2_cfg.B_mem_circumsphere + theorem imo.imo2019q2_cfg.B_ne_C + theorem imo.imo2019q2_cfg.B₁_ne_C + def imo.imo2019q2_cfg.B₂ + theorem imo.imo2019q2_cfg.B₂_mem_circumsphere + theorem imo.imo2019q2_cfg.B₂_ne_A₂ + theorem imo.imo2019q2_cfg.B₂_ne_B + theorem imo.imo2019q2_cfg.B₂_ne_Q + theorem imo.imo2019q2_cfg.C_mem_circumsphere + theorem imo.imo2019q2_cfg.P_mem_ω + theorem imo.imo2019q2_cfg.P₁_mem_ω + theorem imo.imo2019q2_cfg.QP_parallel_BA + theorem imo.imo2019q2_cfg.Q_mem_ω + theorem imo.imo2019q2_cfg.Q_ne_B + theorem imo.imo2019q2_cfg.Q_not_mem_CB + theorem imo.imo2019q2_cfg.Q₁_mem_ω + theorem imo.imo2019q2_cfg.Q₁_ne_A₂ + theorem imo.imo2019q2_cfg.affine_independent_PQB₂ + theorem imo.imo2019q2_cfg.affine_independent_QPA₂ + theorem imo.imo2019q2_cfg.collinear_PAA₁A₂ + theorem imo.imo2019q2_cfg.cospherical_A₁Q₁CA₂ + theorem imo.imo2019q2_cfg.cospherical_QPB₂A₂ + theorem imo.imo2019q2_cfg.not_collinear_ABC + theorem imo.imo2019q2_cfg.not_collinear_CA₂A₁ + theorem imo.imo2019q2_cfg.not_collinear_QPA₂ + theorem imo.imo2019q2_cfg.oangle_CQ₁Q_eq_oangle_CBA + theorem imo.imo2019q2_cfg.oangle_CQ₁Q_sign_eq_oangle_CBA_sign + theorem imo.imo2019q2_cfg.result + theorem imo.imo2019q2_cfg.s_opp_side_CB_Q_Q₁ + theorem imo.imo2019q2_cfg.sbtw_A_A₁_A₂ + theorem imo.imo2019q2_cfg.sbtw_A_B₁_C + theorem imo.imo2019q2_cfg.sbtw_B_A₁_C + theorem imo.imo2019q2_cfg.sbtw_B_B₁_B₂ + def imo.imo2019q2_cfg.symm + theorem imo.imo2019q2_cfg.symm_A₂ + theorem imo.imo2019q2_cfg.symm_triangle_ABC + theorem imo.imo2019q2_cfg.symm_triangle_ABC_circumsphere + theorem imo.imo2019q2_cfg.symm_triangle_QPA₂ + theorem imo.imo2019q2_cfg.symm_ω + theorem imo.imo2019q2_cfg.symm_ω_eq_triangle_PQB₂_circumsphere + def imo.imo2019q2_cfg.triangle_ABC + def imo.imo2019q2_cfg.triangle_PQB₂ + def imo.imo2019q2_cfg.triangle_QPA₂ + theorem imo.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA + theorem imo.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ + theorem imo.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_BAA₂ + theorem imo.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂ + theorem imo.imo2019q2_cfg.two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂ + theorem imo.imo2019q2_cfg.wbtw_B_Q_B₂ + def imo.imo2019q2_cfg.ω + structure imo.imo2019q2_cfg + def imo.some_orientation - theorem imo2019_q2 - theorem imo2019q2_cfg.A_mem_circumsphere - theorem imo2019q2_cfg.A_ne_A₁ - theorem imo2019q2_cfg.A_ne_B - theorem imo2019q2_cfg.A_ne_C - theorem imo2019q2_cfg.A₁_ne_B - theorem imo2019q2_cfg.A₁_ne_C - def imo2019q2_cfg.A₂ - theorem imo2019q2_cfg.A₂_mem_circumsphere - theorem imo2019q2_cfg.A₂_ne_A - theorem imo2019q2_cfg.A₂_ne_B - theorem imo2019q2_cfg.A₂_ne_C - theorem imo2019q2_cfg.A₂_ne_P - theorem imo2019q2_cfg.B_mem_circumsphere - theorem imo2019q2_cfg.B_ne_C - theorem imo2019q2_cfg.B₁_ne_C - def imo2019q2_cfg.B₂ - theorem imo2019q2_cfg.B₂_mem_circumsphere - theorem imo2019q2_cfg.B₂_ne_A₂ - theorem imo2019q2_cfg.B₂_ne_B - theorem imo2019q2_cfg.B₂_ne_Q - theorem imo2019q2_cfg.C_mem_circumsphere - theorem imo2019q2_cfg.P_mem_ω - theorem imo2019q2_cfg.P₁_mem_ω - theorem imo2019q2_cfg.QP_parallel_BA - theorem imo2019q2_cfg.Q_mem_ω - theorem imo2019q2_cfg.Q_ne_B - theorem imo2019q2_cfg.Q_not_mem_CB - theorem imo2019q2_cfg.Q₁_mem_ω - theorem imo2019q2_cfg.Q₁_ne_A₂ - theorem imo2019q2_cfg.affine_independent_PQB₂ - theorem imo2019q2_cfg.affine_independent_QPA₂ - theorem imo2019q2_cfg.collinear_PAA₁A₂ - theorem imo2019q2_cfg.cospherical_A₁Q₁CA₂ - theorem imo2019q2_cfg.cospherical_QPB₂A₂ - theorem imo2019q2_cfg.not_collinear_ABC - theorem imo2019q2_cfg.not_collinear_CA₂A₁ - theorem imo2019q2_cfg.not_collinear_QPA₂ - theorem imo2019q2_cfg.oangle_CQ₁Q_eq_oangle_CBA - theorem imo2019q2_cfg.oangle_CQ₁Q_sign_eq_oangle_CBA_sign - theorem imo2019q2_cfg.result - theorem imo2019q2_cfg.s_opp_side_CB_Q_Q₁ - theorem imo2019q2_cfg.sbtw_A_A₁_A₂ - theorem imo2019q2_cfg.sbtw_A_B₁_C - theorem imo2019q2_cfg.sbtw_B_A₁_C - theorem imo2019q2_cfg.sbtw_B_B₁_B₂ - def imo2019q2_cfg.symm - theorem imo2019q2_cfg.symm_A₂ - theorem imo2019q2_cfg.symm_triangle_ABC - theorem imo2019q2_cfg.symm_triangle_ABC_circumsphere - theorem imo2019q2_cfg.symm_triangle_QPA₂ - theorem imo2019q2_cfg.symm_ω - theorem imo2019q2_cfg.symm_ω_eq_triangle_PQB₂_circumsphere - def imo2019q2_cfg.triangle_ABC - def imo2019q2_cfg.triangle_PQB₂ - def imo2019q2_cfg.triangle_QPA₂ - theorem imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA - theorem imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ - theorem imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_BAA₂ - theorem imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂ - theorem imo2019q2_cfg.two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂ - theorem imo2019q2_cfg.wbtw_B_Q_B₂ - def imo2019q2_cfg.ω - structure imo2019q2_cfg - def some_orientation Modified archive/imo/imo2019_q4.lean + theorem imo.imo2019_q4 + theorem imo.imo2019_q4_upper_bound - theorem imo2019_q4 - theorem imo2019_q4_upper_bound Modified archive/imo/imo2020_q2.lean + theorem imo.imo2020_q2 - theorem imo2020_q2 Modified archive/imo/imo2021_q1.lean - theorem IMO_2021_Q1 - theorem exists_finset_3_le_card_with_pairs_summing_to_squares - theorem exists_numbers_in_interval - theorem exists_triplet_summing_to_squares + theorem imo.IMO_2021_Q1 + theorem imo.exists_finset_3_le_card_with_pairs_summing_to_squares + theorem imo.exists_numbers_in_interval + theorem imo.exists_triplet_summing_to_squares + theorem imo.lower_bound + theorem imo.radical_inequality + theorem imo.upper_bound - theorem lower_bound - theorem radical_inequality - theorem upper_bound Modified archive/oxford_invariants/2021summer/week3_p1.lean + theorem oxford_invariants.week3_p1 - theorem week3_p1 Modified archive/sensitivity.lean - theorem Q.adj_iff_proj_adj - theorem Q.adj_iff_proj_eq - theorem Q.adjacent.symm - def Q.adjacent - theorem Q.card - theorem Q.not_adjacent_zero - theorem Q.succ_n_eq - def V - theorem dim_V - def dual_bases_e_ε - theorem duality - theorem e_zero_apply - theorem epsilon_total - theorem exists_eigenvalue - theorem f_image_g - theorem f_matrix - theorem f_squared - theorem f_succ_apply - theorem f_zero - theorem finrank_V - theorem g_apply - theorem g_injective - theorem huang_degree_theorem + theorem sensitivity.Q.adj_iff_proj_adj + theorem sensitivity.Q.adj_iff_proj_eq + theorem sensitivity.Q.adjacent.symm + def sensitivity.Q.adjacent + theorem sensitivity.Q.card + theorem sensitivity.Q.not_adjacent_zero + theorem sensitivity.Q.succ_n_eq + def sensitivity.V + theorem sensitivity.dim_V + def sensitivity.dual_bases_e_ε + theorem sensitivity.duality + theorem sensitivity.e_zero_apply + theorem sensitivity.epsilon_total + theorem sensitivity.exists_eigenvalue + theorem sensitivity.f_image_g + theorem sensitivity.f_matrix + theorem sensitivity.f_squared + theorem sensitivity.f_succ_apply + theorem sensitivity.f_zero + theorem sensitivity.finrank_V + theorem sensitivity.g_apply + theorem sensitivity.g_injective + theorem sensitivity.huang_degree_theorem + def sensitivity.π - def π Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean - theorem Nxzmod_2.add_le_add_left - theorem Nxzmod_2.add_left_cancel - theorem Nxzmod_2.le_of_add_le_add_left - theorem Nxzmod_2.lt_def - theorem Nxzmod_2.mul_lt_mul_of_pos_left - theorem Nxzmod_2.mul_lt_mul_of_pos_right - theorem add_self_zmod_2 + theorem counterexample.Nxzmod_2.add_le_add_left + theorem counterexample.Nxzmod_2.add_left_cancel + theorem counterexample.Nxzmod_2.le_of_add_le_add_left + theorem counterexample.Nxzmod_2.lt_def + theorem counterexample.Nxzmod_2.mul_lt_mul_of_pos_left + theorem counterexample.Nxzmod_2.mul_lt_mul_of_pos_right + theorem counterexample.add_self_zmod_2 + def counterexample.ex_L.L + def counterexample.ex_L.L_subsemiring + theorem counterexample.ex_L.add_L + theorem counterexample.ex_L.bot_le + theorem counterexample.ex_L.eq_zero_or_eq_zero_of_mul_eq_zero + theorem counterexample.ex_L.exists_add_of_le + theorem counterexample.ex_L.le_self_add + theorem counterexample.ex_L.mul_L + def counterexample.from_Bhavik.K + theorem counterexample.mem_zmod_2 - def ex_L.L - def ex_L.L_subsemiring - theorem ex_L.add_L - theorem ex_L.bot_le - theorem ex_L.eq_zero_or_eq_zero_of_mul_eq_zero - theorem ex_L.exists_add_of_le - theorem ex_L.le_self_add - theorem ex_L.mul_L - def from_Bhavik.K - theorem mem_zmod_2 Modified counterexamples/char_p_zero_ne_char_zero.lean - theorem add_one_eq_one + theorem counterexample.add_one_eq_one + theorem counterexample.with_zero_unit_char_p_zero + theorem counterexample.with_zero_unit_not_char_zero - theorem with_zero_unit_char_p_zero - theorem with_zero_unit_not_char_zero Modified counterexamples/cyclotomic_105.lean - theorem coeff_cyclotomic_105 + theorem counterexample.coeff_cyclotomic_105 + theorem counterexample.cyclotomic_105 + theorem counterexample.cyclotomic_15 + theorem counterexample.cyclotomic_21 + theorem counterexample.cyclotomic_35 + theorem counterexample.cyclotomic_3 + theorem counterexample.cyclotomic_5 + theorem counterexample.cyclotomic_7 + theorem counterexample.not_forall_coeff_cyclotomic_neg_one_zero_one + theorem counterexample.proper_divisors_105 + theorem counterexample.proper_divisors_15 + theorem counterexample.proper_divisors_21 + theorem counterexample.proper_divisors_35 - theorem cyclotomic_105 - theorem cyclotomic_15 - theorem cyclotomic_21 - theorem cyclotomic_35 - theorem cyclotomic_3 - theorem cyclotomic_5 - theorem cyclotomic_7 - theorem not_forall_coeff_cyclotomic_neg_one_zero_one - theorem proper_divisors_105 - theorem proper_divisors_15 - theorem proper_divisors_21 - theorem proper_divisors_35 Modified counterexamples/direct_sum_is_internal.lean + theorem counterexample.mem_with_sign_neg_one + theorem counterexample.mem_with_sign_one + theorem counterexample.units_int.one_ne_neg_one + def counterexample.with_sign.independent + theorem counterexample.with_sign.is_compl + theorem counterexample.with_sign.not_injective + theorem counterexample.with_sign.not_internal + theorem counterexample.with_sign.supr + def counterexample.with_sign - theorem mem_with_sign_neg_one - theorem mem_with_sign_one - theorem units_int.one_ne_neg_one - def with_sign.independent - theorem with_sign.is_compl - theorem with_sign.not_injective - theorem with_sign.not_internal - theorem with_sign.supr - def with_sign Modified counterexamples/girard.lean + theorem counterexample.{u} - theorem {u} Modified counterexamples/homogeneous_prime_not_prime.lean + def counterexample.counterexample_not_prime_but_homogeneous_prime.I + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.I_is_homogeneous + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.I_not_prime + def counterexample.counterexample_not_prime_but_homogeneous_prime.grading.decompose + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.grading.left_inv + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.grading.mul_mem + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.grading.one_mem + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.grading.right_inv + def counterexample.counterexample_not_prime_but_homogeneous_prime.grading + theorem counterexample.counterexample_not_prime_but_homogeneous_prime.homogeneous_mem_or_mem + def counterexample.counterexample_not_prime_but_homogeneous_prime.submodule_o + def counterexample.counterexample_not_prime_but_homogeneous_prime.submodule_z + def counterexample.counterexample_not_prime_but_homogeneous_prime.two - def counterexample_not_prime_but_homogeneous_prime.I - theorem counterexample_not_prime_but_homogeneous_prime.I_is_homogeneous - theorem counterexample_not_prime_but_homogeneous_prime.I_not_prime - def counterexample_not_prime_but_homogeneous_prime.grading.decompose - theorem counterexample_not_prime_but_homogeneous_prime.grading.left_inv - theorem counterexample_not_prime_but_homogeneous_prime.grading.mul_mem - theorem counterexample_not_prime_but_homogeneous_prime.grading.one_mem - theorem counterexample_not_prime_but_homogeneous_prime.grading.right_inv - def counterexample_not_prime_but_homogeneous_prime.grading - theorem counterexample_not_prime_but_homogeneous_prime.homogeneous_mem_or_mem - def counterexample_not_prime_but_homogeneous_prime.submodule_o - def counterexample_not_prime_but_homogeneous_prime.submodule_z - def counterexample_not_prime_but_homogeneous_prime.two Modified counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean + def counterexample.foo.aux1 + theorem counterexample.foo.aux1_inj + def counterexample.foo.mul + theorem counterexample.foo.not_mul_pos + inductive counterexample.foo - def foo.aux1 - theorem foo.aux1_inj - def foo.mul - theorem foo.not_mul_pos - inductive foo Modified counterexamples/map_floor.lean + def counterexample.int_with_epsilon.forget_epsilons + theorem counterexample.int_with_epsilon.forget_epsilons_apply + theorem counterexample.int_with_epsilon.forget_epsilons_floor_lt + theorem counterexample.int_with_epsilon.lt_forget_epsilons_ceil + theorem counterexample.int_with_epsilon.pos_iff - def int_with_epsilon.forget_epsilons - theorem int_with_epsilon.forget_epsilons_apply - theorem int_with_epsilon.forget_epsilons_floor_lt - theorem int_with_epsilon.lt_forget_epsilons_ceil - theorem int_with_epsilon.pos_iff Modified counterexamples/phillips.lean + def counterexample.discrete_copy + theorem counterexample.phillips_1940.apply_f_eq_continuous_part + def counterexample.phillips_1940.bounded_additive_measure.C + theorem counterexample.phillips_1940.bounded_additive_measure.abs_le_bound + theorem counterexample.phillips_1940.bounded_additive_measure.additive + theorem counterexample.phillips_1940.bounded_additive_measure.apply_countable + def counterexample.phillips_1940.bounded_additive_measure.continuous_part + theorem counterexample.phillips_1940.bounded_additive_measure.continuous_part_apply_diff + theorem counterexample.phillips_1940.bounded_additive_measure.continuous_part_apply_eq_zero_of_countable + theorem counterexample.phillips_1940.bounded_additive_measure.countable_discrete_support + def counterexample.phillips_1940.bounded_additive_measure.discrete_part + theorem counterexample.phillips_1940.bounded_additive_measure.discrete_part_apply + def counterexample.phillips_1940.bounded_additive_measure.discrete_support + theorem counterexample.phillips_1940.bounded_additive_measure.empty + theorem counterexample.phillips_1940.bounded_additive_measure.eq_add_parts + theorem counterexample.phillips_1940.bounded_additive_measure.exists_discrete_support + theorem counterexample.phillips_1940.bounded_additive_measure.exists_discrete_support_nonpos + theorem counterexample.phillips_1940.bounded_additive_measure.le_bound + theorem counterexample.phillips_1940.bounded_additive_measure.neg_apply + def counterexample.phillips_1940.bounded_additive_measure.restrict + theorem counterexample.phillips_1940.bounded_additive_measure.restrict_apply + structure counterexample.phillips_1940.bounded_additive_measure + def counterexample.phillips_1940.bounded_integrable_functions + def counterexample.phillips_1940.bounded_integrable_functions_integral_clm + theorem counterexample.phillips_1940.comp_ae_eq_const + theorem counterexample.phillips_1940.continuous_part_eval_clm_eq_zero + theorem counterexample.phillips_1940.countable_compl_spf + theorem counterexample.phillips_1940.countable_ne + theorem counterexample.phillips_1940.countable_spf_mem + theorem counterexample.phillips_1940.exists_linear_extension_to_bounded_functions + theorem counterexample.phillips_1940.extension_to_bounded_functions_apply + def counterexample.phillips_1940.f + theorem counterexample.phillips_1940.integrable_comp + theorem counterexample.phillips_1940.integral_comp + theorem counterexample.phillips_1940.measurable_comp + theorem counterexample.phillips_1940.no_pettis_integral + theorem counterexample.phillips_1940.norm_bound + theorem counterexample.phillips_1940.norm_indicator_le_one + theorem counterexample.phillips_1940.sierpinski_pathological_family + def counterexample.phillips_1940.spf + theorem counterexample.phillips_1940.to_functions_to_measure + theorem counterexample.phillips_1940.to_functions_to_measure_continuous_part - def discrete_copy - theorem phillips_1940.apply_f_eq_continuous_part - def phillips_1940.bounded_additive_measure.C - theorem phillips_1940.bounded_additive_measure.abs_le_bound - theorem phillips_1940.bounded_additive_measure.additive - theorem phillips_1940.bounded_additive_measure.apply_countable - def phillips_1940.bounded_additive_measure.continuous_part - theorem phillips_1940.bounded_additive_measure.continuous_part_apply_diff - theorem phillips_1940.bounded_additive_measure.continuous_part_apply_eq_zero_of_countable - theorem phillips_1940.bounded_additive_measure.countable_discrete_support - def phillips_1940.bounded_additive_measure.discrete_part - theorem phillips_1940.bounded_additive_measure.discrete_part_apply - def phillips_1940.bounded_additive_measure.discrete_support - theorem phillips_1940.bounded_additive_measure.empty - theorem phillips_1940.bounded_additive_measure.eq_add_parts - theorem phillips_1940.bounded_additive_measure.exists_discrete_support - theorem phillips_1940.bounded_additive_measure.exists_discrete_support_nonpos - theorem phillips_1940.bounded_additive_measure.le_bound - theorem phillips_1940.bounded_additive_measure.neg_apply - def phillips_1940.bounded_additive_measure.restrict - theorem phillips_1940.bounded_additive_measure.restrict_apply - structure phillips_1940.bounded_additive_measure - def phillips_1940.bounded_integrable_functions - def phillips_1940.bounded_integrable_functions_integral_clm - theorem phillips_1940.comp_ae_eq_const - theorem phillips_1940.continuous_part_eval_clm_eq_zero - theorem phillips_1940.countable_compl_spf - theorem phillips_1940.countable_ne - theorem phillips_1940.countable_spf_mem - theorem phillips_1940.exists_linear_extension_to_bounded_functions - theorem phillips_1940.extension_to_bounded_functions_apply - def phillips_1940.f - theorem phillips_1940.integrable_comp - theorem phillips_1940.integral_comp - theorem phillips_1940.measurable_comp - theorem phillips_1940.no_pettis_integral - theorem phillips_1940.norm_bound - theorem phillips_1940.norm_indicator_le_one - theorem phillips_1940.sierpinski_pathological_family - def phillips_1940.spf - theorem phillips_1940.to_functions_to_measure - theorem phillips_1940.to_functions_to_measure_continuous_part Modified counterexamples/pseudoelement.lean - theorem category_theory.abelian.pseudoelement.exist_ne_and_fst_eq_fst_and_snd_eq_snd - theorem category_theory.abelian.pseudoelement.fst_mk_x_eq_fst_mk_y - theorem category_theory.abelian.pseudoelement.fst_x_pseudo_eq_fst_y - theorem category_theory.abelian.pseudoelement.mk_x_ne_mk_y - theorem category_theory.abelian.pseudoelement.snd_mk_x_eq_snd_mk_y - theorem category_theory.abelian.pseudoelement.snd_x_pseudo_eq_snd_y - def category_theory.abelian.pseudoelement.x - theorem category_theory.abelian.pseudoelement.x_not_pseudo_eq - def category_theory.abelian.pseudoelement.y + theorem counterexample.exist_ne_and_fst_eq_fst_and_snd_eq_snd + theorem counterexample.fst_mk_x_eq_fst_mk_y + theorem counterexample.fst_x_pseudo_eq_fst_y + theorem counterexample.mk_x_ne_mk_y + theorem counterexample.snd_mk_x_eq_snd_mk_y + theorem counterexample.snd_x_pseudo_eq_snd_y + def counterexample.x + theorem counterexample.x_not_pseudo_eq + def counterexample.y Modified counterexamples/quadratic_form.lean - def B - theorem B_apply - theorem B_ne_zero + def counterexample.B + theorem counterexample.B_apply + theorem counterexample.B_ne_zero + theorem counterexample.is_alt_B + theorem counterexample.is_symm_B + theorem counterexample.{u} - theorem is_alt_B - theorem is_symm_B - theorem {u} Modified counterexamples/seminorm_lattice_not_distrib.lean + theorem counterexample.seminorm_not_distrib.eq_one + theorem counterexample.seminorm_not_distrib.not_distrib - theorem seminorm_not_distrib.eq_one - theorem seminorm_not_distrib.not_distrib Modified counterexamples/sorgenfrey_line.lean + theorem counterexample.sorgenfrey_line.continuous_to_real + theorem counterexample.sorgenfrey_line.dense_range_coe_rat + theorem counterexample.sorgenfrey_line.exists_Ico_disjoint_closed + theorem counterexample.sorgenfrey_line.is_clopen_Ici + theorem counterexample.sorgenfrey_line.is_clopen_Ici_prod + theorem counterexample.sorgenfrey_line.is_clopen_Ico + theorem counterexample.sorgenfrey_line.is_clopen_Iio + theorem counterexample.sorgenfrey_line.is_closed_antidiagonal + theorem counterexample.sorgenfrey_line.is_closed_iff + theorem counterexample.sorgenfrey_line.is_closed_of_subset_antidiagonal + theorem counterexample.sorgenfrey_line.is_open_Ici + theorem counterexample.sorgenfrey_line.is_open_Ico + theorem counterexample.sorgenfrey_line.is_open_iff + theorem counterexample.sorgenfrey_line.map_to_real_nhds + theorem counterexample.sorgenfrey_line.nhds_antitone_basis_Ico_inv_pnat + theorem counterexample.sorgenfrey_line.nhds_basis_Ico + theorem counterexample.sorgenfrey_line.nhds_basis_Ico_inv_pnat + theorem counterexample.sorgenfrey_line.nhds_basis_Ico_rat + theorem counterexample.sorgenfrey_line.nhds_countable_basis_Ico_inv_pnat + theorem counterexample.sorgenfrey_line.nhds_eq_comap + theorem counterexample.sorgenfrey_line.nhds_eq_map + theorem counterexample.sorgenfrey_line.nhds_prod_antitone_basis_inv_pnat + theorem counterexample.sorgenfrey_line.not_metrizable_space + theorem counterexample.sorgenfrey_line.not_normal_space_prod + theorem counterexample.sorgenfrey_line.not_second_countable_topology + def counterexample.sorgenfrey_line.to_real + def counterexample.sorgenfrey_line - theorem sorgenfrey_line.continuous_to_real - theorem sorgenfrey_line.dense_range_coe_rat - theorem sorgenfrey_line.exists_Ico_disjoint_closed - theorem sorgenfrey_line.is_clopen_Ici - theorem sorgenfrey_line.is_clopen_Ici_prod - theorem sorgenfrey_line.is_clopen_Ico - theorem sorgenfrey_line.is_clopen_Iio - theorem sorgenfrey_line.is_closed_antidiagonal - theorem sorgenfrey_line.is_closed_iff - theorem sorgenfrey_line.is_closed_of_subset_antidiagonal - theorem sorgenfrey_line.is_open_Ici - theorem sorgenfrey_line.is_open_Ico - theorem sorgenfrey_line.is_open_iff - theorem sorgenfrey_line.map_to_real_nhds - theorem sorgenfrey_line.nhds_antitone_basis_Ico_inv_pnat - theorem sorgenfrey_line.nhds_basis_Ico - theorem sorgenfrey_line.nhds_basis_Ico_inv_pnat - theorem sorgenfrey_line.nhds_basis_Ico_rat - theorem sorgenfrey_line.nhds_countable_basis_Ico_inv_pnat - theorem sorgenfrey_line.nhds_eq_comap - theorem sorgenfrey_line.nhds_eq_map - theorem sorgenfrey_line.nhds_prod_antitone_basis_inv_pnat - theorem sorgenfrey_line.not_metrizable_space - theorem sorgenfrey_line.not_normal_space_prod - theorem sorgenfrey_line.not_second_countable_topology - def sorgenfrey_line.to_real - def sorgenfrey_line Modified counterexamples/zero_divisors_in_add_monoid_algebras.lean - theorem F.f010 - theorem F.f011 - theorem F.f110 - theorem F.f111 - theorem F.f1 - def F.val - theorem F.z01 + theorem counterexample.F.f010 + theorem counterexample.F.f011 + theorem counterexample.F.f110 + theorem counterexample.F.f111 + theorem counterexample.F.f1 + def counterexample.F.val + theorem counterexample.F.z01 + def counterexample.list.drop_until + theorem counterexample.single_zero_one + theorem counterexample.zero_divisors_of_periodic + theorem counterexample.zero_divisors_of_torsion - def list.drop_until - theorem single_zero_one - theorem zero_divisors_of_periodic - theorem zero_divisors_of_torsion 2023-05-30 18:50:38 48dc6ab feat(linear_algebra/matrix/charpoly/eigs): det and trace are product and sum of eigenvalues (#19079) This adds two lemmas: 1. `det_eq_prod_roots_charpoly`: the determinant of a square matrix is the product of the characteristic polynomial roots of that matrix. 2. `trace_eq_sum_roots_charpoly`: the trace is similarly the sum of the characteristic polynomial roots. These two lemmas are more commonly stated as trace is the sum of eigenvalues and determinant is the product of eigenvalues. Mathlib has already defined eigenvalues in [linear_algebra.eigenspace](https://leanprover-community.github.io/mathlib_docs/linear_algebra/eigenspace.html#module.End.eigenvalues) as the roots of the minimal polynomial of a linear endomorphism. These do not have correct multiplicity and cannot be used in the theorems above. Hence we express these theorems in terms of the roots of the characteristic polynomial directly. ESTIMATED CHANGES Added src/linear_algebra/matrix/charpoly/eigs.lean + theorem matrix.det_eq_prod_roots_charpoly + theorem matrix.det_eq_prod_roots_charpoly_of_splits + theorem matrix.trace_eq_sum_roots_charpoly + theorem matrix.trace_eq_sum_roots_charpoly_of_splits 2023-05-30 17:46:30 938d3db feat(ring_theory/polynomial/hermite): proof of explicit formula for Hermite polynomial coefficients (#19044) Add the explicit closed formula for the coefficients of Hermite polynomials. ESTIMATED CHANGES Modified src/ring_theory/polynomial/hermite/basic.lean + theorem polynomial.coeff_hermite + theorem polynomial.coeff_hermite_explicit + theorem polynomial.coeff_hermite_of_even_add 2023-05-30 14:04:02 74c2af3 feat(data/set/ncard): noncomputable set cardinality (#18576) This PR introduces a function `set.ncard` that (noncomputably) gives the cardinality of a finite `set`, or zero if the set is infinite. The intention is to give a way to reason about set cardinality that avoids data and going between `set` and `finset`. This is especially useful for reasoning about sets in a `finite` type. The added file is somewhat large, but it is essentially just duplicating the API in `data.finset.card` (minus the induction lemmas). ESTIMATED CHANGES Added src/data/set/ncard.lean + theorem set.diff_nonempty_of_ncard_lt_ncard + theorem set.eq_insert_of_ncard_eq_succ + theorem set.eq_of_subset_of_ncard_le + theorem set.exists_eq_insert_iff_ncard + theorem set.exists_intermediate_set' + theorem set.exists_intermediate_set + theorem set.exists_mem_not_mem_of_ncard_lt_ncard + theorem set.exists_ne_map_eq_of_ncard_lt_of_maps_to + theorem set.exists_ne_of_one_lt_ncard + theorem set.exists_smaller_set + theorem set.exists_subset_or_subset_of_two_mul_lt_ncard + theorem set.fiber_ncard_ne_zero_iff_mem_image + theorem set.finite_of_ncard_ne_zero + theorem set.finite_of_ncard_pos + theorem set.infinite.exists_subset_ncard_eq + theorem set.infinite.exists_supset_ncard_eq + theorem set.infinite.ncard + theorem set.inj_on_of_ncard_image_eq + theorem set.inj_on_of_surj_on_of_ncard_le + theorem set.le_ncard_diff + theorem set.le_ncard_of_inj_on_range + theorem set.map_eq_of_subset + theorem set.nat.card_coe_set_eq + theorem set.ncard_add_ncard_compl + theorem set.ncard_coe_finset + theorem set.ncard_congr + theorem set.ncard_def + theorem set.ncard_diff + theorem set.ncard_diff_add_ncard + theorem set.ncard_diff_add_ncard_eq_ncard + theorem set.ncard_diff_singleton_add_one + theorem set.ncard_diff_singleton_le + theorem set.ncard_diff_singleton_lt_of_mem + theorem set.ncard_diff_singleton_of_mem + theorem set.ncard_empty + theorem set.ncard_eq_ncard_iff_ncard_diff_eq_ncard_diff + theorem set.ncard_eq_of_bijective + theorem set.ncard_eq_one + theorem set.ncard_eq_succ + theorem set.ncard_eq_three + theorem set.ncard_eq_to_finset_card + theorem set.ncard_eq_two + theorem set.ncard_eq_zero + theorem set.ncard_exchange' + theorem set.ncard_exchange + theorem set.ncard_image_iff + theorem set.ncard_image_le + theorem set.ncard_image_of_inj_on + theorem set.ncard_image_of_injective + theorem set.ncard_insert_eq_ite + theorem set.ncard_insert_le + theorem set.ncard_insert_of_mem + theorem set.ncard_insert_of_not_mem + theorem set.ncard_inter_add_ncard_diff_eq_ncard + theorem set.ncard_inter_add_ncard_union + theorem set.ncard_inter_le_ncard_left + theorem set.ncard_inter_le_ncard_right + theorem set.ncard_le_ncard_diff_add_ncard + theorem set.ncard_le_ncard_iff_ncard_diff_le_ncard_diff + theorem set.ncard_le_ncard_insert + theorem set.ncard_le_ncard_of_inj_on + theorem set.ncard_le_of_subset + theorem set.ncard_le_one + theorem set.ncard_le_one_iff + theorem set.ncard_le_one_iff_eq + theorem set.ncard_le_one_iff_subset_singleton + theorem set.ncard_le_one_of_subsingleton + theorem set.ncard_lt_ncard + theorem set.ncard_lt_ncard_iff_ncard_diff_lt_ncard_diff + theorem set.ncard_map + theorem set.ncard_mono + theorem set.ncard_ne_zero_of_mem + theorem set.ncard_pair + theorem set.ncard_pos + theorem set.ncard_preimage_of_injective_subset_range + theorem set.ncard_singleton + theorem set.ncard_singleton_inter + theorem set.ncard_strict_mono + theorem set.ncard_subtype + theorem set.ncard_union_add_ncard_inter + theorem set.ncard_union_eq + theorem set.ncard_union_le + theorem set.ncard_univ + theorem set.nonempty_of_ncard_ne_zero + theorem set.one_lt_ncard + theorem set.one_lt_ncard_iff + theorem set.pred_ncard_le_ncard_diff_singleton + theorem set.sep_of_ncard_eq + theorem set.subset_iff_eq_of_ncard_le + theorem set.surj_on_of_inj_on_of_ncard_le + theorem set.two_lt_card + theorem set.two_lt_ncard_iff 2023-05-30 10:24:32 9a1ffe4 refactor(analysis/calculus/darboux): review API (#19125) Add more versions of the main theorem, slightly generalize existing versions. ESTIMATED CHANGES Modified src/analysis/calculus/darboux.lean + theorem convex.image_deriv + theorem convex.image_deriv_within + theorem convex.image_has_deriv_within_at - theorem convex_image_has_deriv_at - theorem deriv_forall_lt_or_forall_gt_of_forall_ne + theorem exists_has_deriv_within_at_eq_of_ge_of_le + theorem exists_has_deriv_within_at_eq_of_le_of_ge + theorem has_deriv_within_at_forall_lt_or_forall_gt_of_forall_ne + theorem set.ord_connected.image_deriv + theorem set.ord_connected.image_deriv_within + theorem set.ord_connected.image_has_deriv_within_at 2023-05-30 08:50:51 f60c608 chore(*): add mathlib4 synchronization comments (#19115) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.biproducts` * `algebra.category.Module.monoidal.basic` * `algebra.category.Ring.adjunctions` * `algebra.monoid_algebra.grading` * `analysis.calculus.deriv.add` * `analysis.calculus.deriv.basic` * `analysis.calculus.deriv.comp` * `analysis.calculus.deriv.inverse` * `analysis.calculus.deriv.linear` * `analysis.calculus.deriv.mul` * `analysis.calculus.deriv.polynomial` * `analysis.calculus.deriv.pow` * `analysis.calculus.deriv.prod` * `analysis.calculus.deriv.slope` * `analysis.calculus.deriv.star` * `analysis.calculus.deriv.support` * `analysis.calculus.fderiv_measurable` * `analysis.calculus.local_extr` * `analysis.convex.cone.dual` * `analysis.inner_product_space.lax_milgram` * `analysis.inner_product_space.pi_L2` * `category_theory.bicategory.coherence` * `category_theory.limits.fubini` * `category_theory.monoidal.coherence_lemmas` * `geometry.euclidean.sphere.basic` * `geometry.euclidean.sphere.power` * `geometry.euclidean.sphere.second_inter` * `group_theory.complement` * `group_theory.sylow` * `linear_algebra.matrix.hermitian` * `measure_theory.constructions.prod.basic` * `measure_theory.function.lp_order` * `measure_theory.function.lp_seminorm` * `measure_theory.function.lp_space` * `measure_theory.measure.complex` * `measure_theory.measure.vector_measure` * `number_theory.padics.ring_homs` * `ring_theory.ideal.cotangent` * `topology.metric_space.metrizable_uniformity` * `topology.sheaves.forget` * `topology.sheaves.sheaf_condition.unique_gluing` * `topology.sheaves.sheaf_of_functions` ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/category/Module/monoidal/basic.lean Modified src/algebra/category/Ring/adjunctions.lean Modified src/algebra/monoid_algebra/grading.lean Modified src/analysis/calculus/deriv/add.lean Modified src/analysis/calculus/deriv/basic.lean Modified src/analysis/calculus/deriv/comp.lean Modified src/analysis/calculus/deriv/inverse.lean Modified src/analysis/calculus/deriv/linear.lean Modified src/analysis/calculus/deriv/mul.lean Modified src/analysis/calculus/deriv/polynomial.lean Modified src/analysis/calculus/deriv/pow.lean Modified src/analysis/calculus/deriv/prod.lean Modified src/analysis/calculus/deriv/slope.lean Modified src/analysis/calculus/deriv/star.lean Modified src/analysis/calculus/deriv/support.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/convex/cone/dual.lean Modified src/analysis/inner_product_space/lax_milgram.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/category_theory/bicategory/coherence.lean Modified src/category_theory/limits/fubini.lean Modified src/category_theory/monoidal/coherence_lemmas.lean Modified src/geometry/euclidean/sphere/basic.lean Modified src/geometry/euclidean/sphere/power.lean Modified src/geometry/euclidean/sphere/second_inter.lean Modified src/group_theory/complement.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/matrix/hermitian.lean Modified src/measure_theory/constructions/prod/basic.lean Modified src/measure_theory/function/lp_order.lean Modified src/measure_theory/function/lp_seminorm.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/measure/complex.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/number_theory/padics/ring_homs.lean Modified src/ring_theory/ideal/cotangent.lean Modified src/topology/metric_space/metrizable_uniformity.lean Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheaf_of_functions.lean 2023-05-30 03:49:43 bd65478 chore(linear_algebra/alternating): make `ι` an explicit arg of `alternating_map.const_of_is_empty` (#19123) While for general multilinear maps one can deduce it from the type of `E : ι -> Type*`, this doesn't work for alternating maps. ESTIMATED CHANGES Modified src/analysis/inner_product_space/orientation.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/determinant.lean +/- theorem basis.det_is_empty 2023-05-29 17:56:41 837f72d chore(analysis/normed/group/add_torsor): nnnorm lemmas (#18997) For every `dist`/`norm` lemma in these files, this adds the corresponding `nndist`/`nnnorm` lemma. ESTIMATED CHANGES Modified src/analysis/normed/group/add_torsor.lean + theorem nndist_eq_nnnorm_vsub' + theorem nndist_eq_nnnorm_vsub + theorem nndist_vadd_cancel_right + theorem nndist_vadd_left + theorem nndist_vadd_right + theorem nndist_vsub_cancel_right Modified src/analysis/normed_space/add_torsor.lean + theorem nndist_center_homothety + theorem nndist_homothety_center + theorem nndist_homothety_self + theorem nndist_left_line_map + theorem nndist_left_midpoint + theorem nndist_line_map_left + theorem nndist_line_map_line_map + theorem nndist_line_map_right + theorem nndist_midpoint_left + theorem nndist_midpoint_midpoint_le' + theorem nndist_midpoint_midpoint_le + theorem nndist_midpoint_right + theorem nndist_right_line_map + theorem nndist_right_midpoint + theorem nndist_self_homothety 2023-05-29 16:53:40 729d23f doc(topology/homotopy/H-spaces): add doc about H-spaces. (#19075) Added doc about `H-spaces` in topology/homotopy/H-spaces. ESTIMATED CHANGES Modified src/topology/homotopy/H_spaces.lean 2023-05-29 08:34:45 a841089 feat (number_theory/zeta_function): define zeta (#19027) This PR defines the Riemann zeta function (as a function on the whole complex plane). ESTIMATED CHANGES Added src/number_theory/zeta_function.lean + theorem completed_zeta_eq_mellin_of_one_lt_re + theorem continuous_at_zeta_kernel₁ + theorem differentiable_at_completed_zeta + theorem differentiable_at_mellin_zeta_kernel₁ + theorem differentiable_completed_zeta₀ + theorem differentiable_mellin_zeta_kernel₂ + theorem has_mellin_one_div_sqrt_Ioc + theorem has_mellin_one_div_sqrt_sub_one_div_two_Ioc + theorem is_O_at_top_zeta_kernel₁ + theorem is_O_at_top_zeta_kernel₂ + theorem is_O_zero_zeta_kernel₁ + theorem is_O_zero_zeta_kernel₂ + theorem is_O_zero_zeta_kernel₂_rpow + theorem locally_integrable_zeta_kernel₁ + theorem locally_integrable_zeta_kernel₂ + theorem mellin_zeta_kernel₂_eq_of_lt_re + def riemann_completed_zeta + def riemann_completed_zeta₀ + def riemann_zeta + theorem riemann_zeta_zero + theorem summable_exp_neg_pi_mul_nat_sq + def zeta_kernel₁ + theorem zeta_kernel₁_eq_jacobi_theta + def zeta_kernel₂ + theorem zeta_kernel₂_one_div 2023-05-29 05:08:40 e3e30a5 feat(analysis/schwartz_space): partial derivatives (#18755) ESTIMATED CHANGES Modified src/analysis/schwartz_space.lean + def schwartz_map.eval_clm + def schwartz_map.iterated_pderiv + theorem schwartz_map.iterated_pderiv_one + theorem schwartz_map.iterated_pderiv_succ_left + theorem schwartz_map.iterated_pderiv_succ_right + theorem schwartz_map.iterated_pderiv_zero + def schwartz_map.pderiv_clm + theorem schwartz_map.pderiv_clm_apply 2023-05-28 20:45:53 88a563b feat(analysis/normed_space/triv_sq_zero_ext): generalize some results to non-commutativity (#19049) ESTIMATED CHANGES Modified src/analysis/normed_space/triv_sq_zero_ext.lean + theorem triv_sq_zero_ext.exp_def_of_smul_comm - theorem triv_sq_zero_ext.has_sum_exp_series + theorem triv_sq_zero_ext.has_sum_exp_series_of_smul_comm + theorem triv_sq_zero_ext.has_sum_fst_exp_series + theorem triv_sq_zero_ext.has_sum_snd_exp_series_of_smul_comm 2023-05-28 19:28:50 7bf0850 fix(scripts): Allow special character in file names (#11001) We don't have any files like this in mathlib, but it probably doesn't hurt to be safe here. ESTIMATED CHANGES Modified scripts/mk_all.sh 2023-05-28 16:55:33 5c4b3d4 chore(ring_theory/adjoin_root): modify `field` instance on `adjoin_root` (#19119) We copy the fields of `group_with_zero` instead of `field`. This speeds up the already ported `adjoin_root/AdjoinRoot` pair. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/!4.234339.20.20FieldTheory.2ESplittingField) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2023-05-28 14:55:09 f7ebde7 refactor(topology/vector_bundle/hom): fibres of hom-bundle carry strong topology (#19107) Currently, the "hom-bundle" between two vector bundles `E₁` and `E₂` has fibre over `x` which is a type synonym of `E₁ x →SL[σ] E₂ x`, but which carries a topology produced by the hom-bundle construction (using the identification by trivializations withe the model fibre `F₁ →SL[σ] F₂`). This was needed when this bundle was made (#14541) because at that time, `F₁ →SL[σ] F₂` (continuous linear maps between normed spaces) carried a topology in mathlib but `E₁ x →SL[σ] E₂ x` (continuous linear maps between topological vector spaces) did not. As of #16053, continuous linear maps between topological vector spaces do carry a topology, the strong topology. So we can kill the old topology on the type synonym and just use the default one, which should avoid annoying issues later. A few minor changes are needed to make this go through: - we revert #14377: the question is whether the "vector prebundle" construction, whose canonical use is for the hom-bundle, should or should not require a topology on the fibres. Now that in applications it could happen either way (fibres do or don't come with a topology), it will be more convenient to assume that they do carry a topology, and put the "artificial" topology on the fibres if they happen to not. - some assumptions need to change from `[add_comm_monoid]` to `[add_comm_group]`, this is mathematically harmless since they are also modules over a field. - generalize the construction `continuous_linear_equiv.arrow_congrSL` from normed spaces to topological vector spaces ESTIMATED CHANGES Modified src/analysis/convolution.lean Modified src/analysis/normed_space/operator_norm.lean - def continuous_linear_equiv.arrow_congr - def continuous_linear_equiv.arrow_congrSL Modified src/geometry/manifold/vector_bundle/basic.lean Modified src/geometry/manifold/vector_bundle/hom.lean - def smooth_vector_bundle.continuous_linear_map.aux Modified src/topology/algebra/module/strong_topology.lean + def continuous_linear_equiv.arrow_congr + def continuous_linear_equiv.arrow_congrSL + def continuous_linear_equiv.arrow_congrₛₗ + theorem continuous_linear_equiv.arrow_congrₛₗ_continuous Modified src/topology/constructions.lean + theorem inducing_const_prod + theorem inducing_prod_const Modified src/topology/fiber_bundle/basic.lean - def fiber_prebundle.fiber_topology - theorem fiber_prebundle.inducing_total_space_mk + theorem fiber_prebundle.inducing_total_space_mk_of_inducing_comp Modified src/topology/vector_bundle/basic.lean - def vector_prebundle.fiber_topology - theorem vector_prebundle.inducing_total_space_mk +/- def vector_prebundle.to_fiber_bundle Modified src/topology/vector_bundle/hom.lean +/- theorem pretrivialization.continuous_linear_map_coord_change_apply 2023-05-28 14:55:08 d87199d feat(linear_algebra/free_module/ideal_quotient): add ideal.finrank_quotient_eq_sum (#19084) ESTIMATED CHANGES Modified src/linear_algebra/free_module/ideal_quotient.lean + theorem ideal.finrank_quotient_eq_sum Modified src/linear_algebra/free_module/pid.lean 2023-05-28 12:56:58 4f840b8 feat(ring_theory/polynomial/quotient): generalise quotient_span_X_sub_C_alg_equiv (#19086) ESTIMATED CHANGES Modified src/ring_theory/polynomial/quotient.lean 2023-05-27 20:56:06 917c3c0 feat (analysis/mellin_transform): API for mellin transforms (#19110) This adds results about Mellin transforms of things like `f(a * x)` or `f (x ^ a)` in terms of the Mellin transform of `f`. ESTIMATED CHANGES Modified src/analysis/mellin_transform.lean + theorem complex.cpow_mul_of_real_nonneg + def has_mellin + theorem has_mellin_add + theorem has_mellin_cpow_Ioc + theorem has_mellin_one_Ioc + theorem has_mellin_sub +/- def mellin + theorem mellin_comp_inv + theorem mellin_comp_mul_left + theorem mellin_comp_mul_right + theorem mellin_comp_rpow + theorem mellin_const_smul + theorem mellin_convergent.comp_mul_left + theorem mellin_convergent.comp_rpow + theorem mellin_convergent.const_smul + theorem mellin_convergent.cpow_smul + theorem mellin_convergent.div_const + def mellin_convergent + theorem mellin_cpow_smul + theorem mellin_div_const Modified src/analysis/special_functions/gamma/basic.lean 2023-05-27 19:40:00 3bce8d8 chore(analysis/calculus/deriv): split file (#19113) * Split `analysis.calculus.deriv` into smaller files. * Add copyright headers and (stubs of) module docstrings. * Change proofs of derivatives of `pow` and `polynomial` so that `analysis.calculus.deriv.pow` does not depend on polynomials. ESTIMATED CHANGES Modified src/analysis/bounded_variation.lean Modified src/analysis/calculus/bump_function_inner.lean Modified src/analysis/calculus/cont_diff.lean Deleted src/analysis/calculus/deriv.lean - theorem deriv.comp - theorem deriv.neg' - theorem deriv.neg - theorem deriv.scomp - def deriv - theorem deriv_add - theorem deriv_add_const' - theorem deriv_add_const - theorem deriv_clm_apply - theorem deriv_clm_comp - theorem deriv_const' - theorem deriv_const - theorem deriv_const_add' - theorem deriv_const_add - theorem deriv_const_mul - theorem deriv_const_mul_field' - theorem deriv_const_mul_field - theorem deriv_const_smul - theorem deriv_const_sub - theorem deriv_div - theorem deriv_div_const - theorem deriv_eq - theorem deriv_fderiv - theorem deriv_id'' - theorem deriv_id' - theorem deriv_id - theorem deriv_inv'' - theorem deriv_inv' - theorem deriv_inv - theorem deriv_mem_iff - theorem deriv_mul - theorem deriv_mul_const - theorem deriv_mul_const_field' - theorem deriv_mul_const_field - theorem deriv_neg'' - theorem deriv_neg' - theorem deriv_neg - theorem deriv_pi - theorem deriv_pow'' - theorem deriv_pow' - theorem deriv_pow - theorem deriv_smul - theorem deriv_smul_const - theorem deriv_sub - theorem deriv_sub_const - theorem deriv_sum - theorem deriv_within.comp - theorem deriv_within.neg - theorem deriv_within.scomp - def deriv_within - theorem deriv_within_Ioi_eq_Ici - theorem deriv_within_add - theorem deriv_within_add_const - theorem deriv_within_clm_apply - theorem deriv_within_clm_comp - theorem deriv_within_congr - theorem deriv_within_congr_set' - theorem deriv_within_congr_set - theorem deriv_within_const - theorem deriv_within_const_add - theorem deriv_within_const_mul - theorem deriv_within_const_smul - theorem deriv_within_const_sub - theorem deriv_within_div - theorem deriv_within_div_const - theorem deriv_within_fderiv_within - theorem deriv_within_id - theorem deriv_within_inter - theorem deriv_within_inv' - theorem deriv_within_inv - theorem deriv_within_mem_iff - theorem deriv_within_mul - theorem deriv_within_mul_const - theorem deriv_within_neg - theorem deriv_within_of_mem - theorem deriv_within_of_open - theorem deriv_within_pi - theorem deriv_within_pow' - theorem deriv_within_pow - theorem deriv_within_smul - theorem deriv_within_smul_const - theorem deriv_within_sub - theorem deriv_within_sub_const - theorem deriv_within_subset - theorem deriv_within_sum - theorem deriv_within_univ - theorem deriv_within_zero_of_not_differentiable_within_at - theorem deriv_within_zpow - theorem deriv_zero_of_not_differentiable_at - theorem deriv_zpow' - theorem deriv_zpow - theorem differentiable.div - theorem differentiable.div_const - theorem differentiable.inv - theorem differentiable.zpow - theorem differentiable_at.deriv_within - theorem differentiable_at.div - theorem differentiable_at.div_const - theorem differentiable_at.has_deriv_at - theorem differentiable_at.inv - theorem differentiable_at.zpow - theorem differentiable_at_inv - theorem differentiable_at_of_deriv_ne_zero - theorem differentiable_at_pow - theorem differentiable_at_zpow - theorem differentiable_neg - theorem differentiable_on.div - theorem differentiable_on.div_const - theorem differentiable_on.has_deriv_at - theorem differentiable_on.inv - theorem differentiable_on.zpow - theorem differentiable_on_inv - theorem differentiable_on_neg - theorem differentiable_on_pow - theorem differentiable_on_zpow - theorem differentiable_pow - theorem differentiable_within_at.div - theorem differentiable_within_at.div_const - theorem differentiable_within_at.has_deriv_within_at - theorem differentiable_within_at.inv - theorem differentiable_within_at.zpow - theorem differentiable_within_at_Ioi_iff_Ici - theorem differentiable_within_at_inv - theorem differentiable_within_at_of_deriv_within_ne_zero - theorem differentiable_within_at_pow - theorem differentiable_within_at_zpow - theorem fderiv.comp_deriv - theorem fderiv_deriv - theorem fderiv_inv - theorem fderiv_within.comp_deriv_within - theorem fderiv_within_deriv_within - theorem fderiv_within_inv - theorem filter.eventually_eq.deriv_eq - theorem filter.eventually_eq.deriv_within_eq - theorem filter.eventually_eq.has_deriv_at_filter_iff - theorem has_compact_support.deriv - theorem has_deriv_at.add - theorem has_deriv_at.add_const - theorem has_deriv_at.clm_apply - theorem has_deriv_at.clm_comp - theorem has_deriv_at.comp - theorem has_deriv_at.comp_has_deriv_within_at - theorem has_deriv_at.comp_has_fderiv_at - theorem has_deriv_at.comp_has_fderiv_within_at - theorem has_deriv_at.congr_of_eventually_eq - theorem has_deriv_at.const_add - theorem has_deriv_at.const_mul - theorem has_deriv_at.const_smul - theorem has_deriv_at.const_sub - theorem has_deriv_at.continuous_at - theorem has_deriv_at.deriv - theorem has_deriv_at.differentiable_at - theorem has_deriv_at.div - theorem has_deriv_at.div_const - theorem has_deriv_at.eventually_ne - theorem has_deriv_at.has_deriv_at_filter - theorem has_deriv_at.has_deriv_within_at - theorem has_deriv_at.has_fderiv_at_equiv - theorem has_deriv_at.inv - theorem has_deriv_at.mul - theorem has_deriv_at.mul_const - theorem has_deriv_at.neg - theorem has_deriv_at.of_local_left_inverse - theorem has_deriv_at.pow - theorem has_deriv_at.prod - theorem has_deriv_at.scomp - theorem has_deriv_at.scomp_has_deriv_within_at - theorem has_deriv_at.smul - theorem has_deriv_at.smul_const - theorem has_deriv_at.sub - theorem has_deriv_at.sub_const - theorem has_deriv_at.sum - theorem has_deriv_at.tendsto_punctured_nhds - theorem has_deriv_at.unique - def has_deriv_at - theorem has_deriv_at_const - theorem has_deriv_at_deriv_iff - theorem has_deriv_at_filter.add - theorem has_deriv_at_filter.add_const - theorem has_deriv_at_filter.comp - theorem has_deriv_at_filter.comp_has_fderiv_at_filter - theorem has_deriv_at_filter.congr_of_eventually_eq - theorem has_deriv_at_filter.const_add - theorem has_deriv_at_filter.const_smul - theorem has_deriv_at_filter.const_sub - theorem has_deriv_at_filter.is_O_sub - theorem has_deriv_at_filter.is_O_sub_rev - theorem has_deriv_at_filter.mono - theorem has_deriv_at_filter.neg - theorem has_deriv_at_filter.prod - theorem has_deriv_at_filter.scomp - theorem has_deriv_at_filter.sub - theorem has_deriv_at_filter.sub_const - theorem has_deriv_at_filter.sum - theorem has_deriv_at_filter.tendsto_nhds - def has_deriv_at_filter - theorem has_deriv_at_filter_const - theorem has_deriv_at_filter_id - theorem has_deriv_at_filter_iff_is_o - theorem has_deriv_at_filter_iff_tendsto - theorem has_deriv_at_filter_iff_tendsto_slope - theorem has_deriv_at_filter_neg - theorem has_deriv_at_filter_pi - theorem has_deriv_at_id' - theorem has_deriv_at_id - theorem has_deriv_at_iff_has_fderiv_at - theorem has_deriv_at_iff_is_o - theorem has_deriv_at_iff_is_o_nhds_zero - theorem has_deriv_at_iff_tendsto - theorem has_deriv_at_iff_tendsto_slope - theorem has_deriv_at_inv - theorem has_deriv_at_mul_const - theorem has_deriv_at_neg' - theorem has_deriv_at_neg - theorem has_deriv_at_pi - theorem has_deriv_at_pow - theorem has_deriv_at_zpow - theorem has_deriv_within_at.Ioi_iff_Ioo - theorem has_deriv_within_at.add - theorem has_deriv_within_at.add_const - theorem has_deriv_within_at.clm_apply - theorem has_deriv_within_at.clm_comp - theorem has_deriv_within_at.comp - theorem has_deriv_within_at.comp_has_fderiv_within_at - theorem has_deriv_within_at.congr - theorem has_deriv_within_at.congr_mono - theorem has_deriv_within_at.congr_of_eventually_eq - theorem has_deriv_within_at.congr_of_eventually_eq_of_mem - theorem has_deriv_within_at.congr_of_mem - theorem has_deriv_within_at.const_add - theorem has_deriv_within_at.const_mul - theorem has_deriv_within_at.const_smul - theorem has_deriv_within_at.const_sub - theorem has_deriv_within_at.continuous_within_at - theorem has_deriv_within_at.deriv_eq_zero - theorem has_deriv_within_at.deriv_within - theorem has_deriv_within_at.differentiable_within_at - theorem has_deriv_within_at.div - theorem has_deriv_within_at.div_const - theorem has_deriv_within_at.has_deriv_at - theorem has_deriv_within_at.has_fderiv_within_at - theorem has_deriv_within_at.inv - theorem has_deriv_within_at.liminf_right_norm_slope_le - theorem has_deriv_within_at.liminf_right_slope_le - theorem has_deriv_within_at.liminf_right_slope_norm_le - theorem has_deriv_within_at.limsup_norm_slope_le - theorem has_deriv_within_at.limsup_slope_le' - theorem has_deriv_within_at.limsup_slope_le - theorem has_deriv_within_at.limsup_slope_norm_le - theorem has_deriv_within_at.mono - theorem has_deriv_within_at.mono_of_mem - theorem has_deriv_within_at.mul - theorem has_deriv_within_at.mul_const - theorem has_deriv_within_at.neg - theorem has_deriv_within_at.nhds_within - theorem has_deriv_within_at.pow - theorem has_deriv_within_at.prod - theorem has_deriv_within_at.scomp - theorem has_deriv_within_at.scomp_has_deriv_at - theorem has_deriv_within_at.smul - theorem has_deriv_within_at.smul_const - theorem has_deriv_within_at.sub - theorem has_deriv_within_at.sub_const - theorem has_deriv_within_at.sum - theorem has_deriv_within_at.union - def has_deriv_within_at - theorem has_deriv_within_at_Iio_iff_Iic - theorem has_deriv_within_at_Ioi_iff_Ici - theorem has_deriv_within_at_congr_set' - theorem has_deriv_within_at_congr_set - theorem has_deriv_within_at_const - theorem has_deriv_within_at_deriv_within_iff - theorem has_deriv_within_at_diff_singleton - theorem has_deriv_within_at_id - theorem has_deriv_within_at_iff_has_fderiv_within_at - theorem has_deriv_within_at_iff_is_o - theorem has_deriv_within_at_iff_tendsto - theorem has_deriv_within_at_iff_tendsto_slope' - theorem has_deriv_within_at_iff_tendsto_slope - theorem has_deriv_within_at_inter' - theorem has_deriv_within_at_inter - theorem has_deriv_within_at_inv - theorem has_deriv_within_at_neg - theorem has_deriv_within_at_pi - theorem has_deriv_within_at_pow - theorem has_deriv_within_at_univ - theorem has_deriv_within_at_zpow - theorem has_fderiv_at.comp_has_deriv_at - theorem has_fderiv_at.comp_has_deriv_within_at - theorem has_fderiv_at.has_deriv_at - theorem has_fderiv_at_filter.has_deriv_at_filter - theorem has_fderiv_at_filter_iff_has_deriv_at_filter - theorem has_fderiv_at_iff_has_deriv_at - theorem has_fderiv_at_inv - theorem has_fderiv_within_at.comp_has_deriv_within_at - theorem has_fderiv_within_at.has_deriv_within_at - theorem has_fderiv_within_at_iff_has_deriv_within_at - theorem has_fderiv_within_at_inv - theorem has_strict_deriv_at.add - theorem has_strict_deriv_at.clm_apply - theorem has_strict_deriv_at.clm_comp - theorem has_strict_deriv_at.comp - theorem has_strict_deriv_at.comp_has_strict_fderiv_at - theorem has_strict_deriv_at.const_mul - theorem has_strict_deriv_at.const_smul - theorem has_strict_deriv_at.const_sub - theorem has_strict_deriv_at.div - theorem has_strict_deriv_at.div_const - theorem has_strict_deriv_at.has_deriv_at - theorem has_strict_deriv_at.has_strict_fderiv_at_equiv - theorem has_strict_deriv_at.mul - theorem has_strict_deriv_at.mul_const - theorem has_strict_deriv_at.neg - theorem has_strict_deriv_at.of_local_left_inverse - theorem has_strict_deriv_at.prod - theorem has_strict_deriv_at.scomp - theorem has_strict_deriv_at.smul - theorem has_strict_deriv_at.smul_const - theorem has_strict_deriv_at.sub - theorem has_strict_deriv_at.sum - def has_strict_deriv_at - theorem has_strict_deriv_at_const - theorem has_strict_deriv_at_id - theorem has_strict_deriv_at_iff_has_strict_fderiv_at - theorem has_strict_deriv_at_inv - theorem has_strict_deriv_at_neg - theorem has_strict_deriv_at_pi - theorem has_strict_deriv_at_pow - theorem has_strict_deriv_at_zpow - theorem has_strict_fderiv_at.comp_has_strict_deriv_at - theorem has_strict_fderiv_at_iff_has_strict_deriv_at - theorem iter_deriv_inv' - theorem iter_deriv_inv - theorem iter_deriv_pow' - theorem iter_deriv_pow - theorem iter_deriv_zpow' - theorem iter_deriv_zpow - theorem local_homeomorph.has_deriv_at_symm - theorem local_homeomorph.has_strict_deriv_at_symm - theorem not_differentiable_at_of_local_left_inverse_has_deriv_at_zero - theorem not_differentiable_within_at_of_local_left_inverse_has_deriv_within_at_zero - theorem support_deriv_subset - theorem unique_diff_within_at.eq_deriv Added src/analysis/calculus/deriv/add.lean + theorem deriv.neg' + theorem deriv.neg + theorem deriv_add + theorem deriv_add_const' + theorem deriv_add_const + theorem deriv_const_add' + theorem deriv_const_add + theorem deriv_const_sub + theorem deriv_neg'' + theorem deriv_neg' + theorem deriv_neg + theorem deriv_sub + theorem deriv_sub_const + theorem deriv_sum + theorem deriv_within.neg + theorem deriv_within_add + theorem deriv_within_add_const + theorem deriv_within_const_add + theorem deriv_within_const_sub + theorem deriv_within_neg + theorem deriv_within_sub + theorem deriv_within_sub_const + theorem deriv_within_sum + theorem differentiable_neg + theorem differentiable_on_neg + theorem has_deriv_at.add + theorem has_deriv_at.add_const + theorem has_deriv_at.const_add + theorem has_deriv_at.const_sub + theorem has_deriv_at.neg + theorem has_deriv_at.sub + theorem has_deriv_at.sub_const + theorem has_deriv_at.sum + theorem has_deriv_at_filter.add + theorem has_deriv_at_filter.add_const + theorem has_deriv_at_filter.const_add + theorem has_deriv_at_filter.const_sub + theorem has_deriv_at_filter.neg + theorem has_deriv_at_filter.sub + theorem has_deriv_at_filter.sub_const + theorem has_deriv_at_filter.sum + theorem has_deriv_at_filter_neg + theorem has_deriv_at_neg' + theorem has_deriv_at_neg + theorem has_deriv_within_at.add + theorem has_deriv_within_at.add_const + theorem has_deriv_within_at.const_add + theorem has_deriv_within_at.const_sub + theorem has_deriv_within_at.neg + theorem has_deriv_within_at.sub + theorem has_deriv_within_at.sub_const + theorem has_deriv_within_at.sum + theorem has_deriv_within_at_neg + theorem has_strict_deriv_at.add + theorem has_strict_deriv_at.const_sub + theorem has_strict_deriv_at.neg + theorem has_strict_deriv_at.sub + theorem has_strict_deriv_at.sum + theorem has_strict_deriv_at_neg Added src/analysis/calculus/deriv/basic.lean + def deriv + theorem deriv_const' + theorem deriv_const + theorem deriv_eq + theorem deriv_fderiv + theorem deriv_id'' + theorem deriv_id' + theorem deriv_id + theorem deriv_mem_iff + def deriv_within + theorem deriv_within_Ioi_eq_Ici + theorem deriv_within_congr + theorem deriv_within_congr_set' + theorem deriv_within_congr_set + theorem deriv_within_const + theorem deriv_within_fderiv_within + theorem deriv_within_id + theorem deriv_within_inter + theorem deriv_within_mem_iff + theorem deriv_within_of_mem + theorem deriv_within_of_open + theorem deriv_within_subset + theorem deriv_within_univ + theorem deriv_within_zero_of_not_differentiable_within_at + theorem deriv_zero_of_not_differentiable_at + theorem differentiable_at.deriv_within + theorem differentiable_at.has_deriv_at + theorem differentiable_at_of_deriv_ne_zero + theorem differentiable_on.has_deriv_at + theorem differentiable_within_at.has_deriv_within_at + theorem differentiable_within_at_Ioi_iff_Ici + theorem differentiable_within_at_of_deriv_within_ne_zero + theorem fderiv_deriv + theorem fderiv_within_deriv_within + theorem filter.eventually_eq.deriv_eq + theorem filter.eventually_eq.deriv_within_eq + theorem filter.eventually_eq.has_deriv_at_filter_iff + theorem has_deriv_at.congr_of_eventually_eq + theorem has_deriv_at.continuous_at + theorem has_deriv_at.deriv + theorem has_deriv_at.differentiable_at + theorem has_deriv_at.has_deriv_at_filter + theorem has_deriv_at.has_deriv_within_at + theorem has_deriv_at.unique + def has_deriv_at + theorem has_deriv_at_const + theorem has_deriv_at_deriv_iff + theorem has_deriv_at_filter.congr_of_eventually_eq + theorem has_deriv_at_filter.is_O_sub + theorem has_deriv_at_filter.is_O_sub_rev + theorem has_deriv_at_filter.mono + theorem has_deriv_at_filter.tendsto_nhds + def has_deriv_at_filter + theorem has_deriv_at_filter_const + theorem has_deriv_at_filter_id + theorem has_deriv_at_filter_iff_is_o + theorem has_deriv_at_filter_iff_tendsto + theorem has_deriv_at_id' + theorem has_deriv_at_id + theorem has_deriv_at_iff_has_fderiv_at + theorem has_deriv_at_iff_is_o + theorem has_deriv_at_iff_is_o_nhds_zero + theorem has_deriv_at_iff_tendsto + theorem has_deriv_within_at.Ioi_iff_Ioo + theorem has_deriv_within_at.congr + theorem has_deriv_within_at.congr_mono + theorem has_deriv_within_at.congr_of_eventually_eq + theorem has_deriv_within_at.congr_of_eventually_eq_of_mem + theorem has_deriv_within_at.congr_of_mem + theorem has_deriv_within_at.continuous_within_at + theorem has_deriv_within_at.deriv_eq_zero + theorem has_deriv_within_at.deriv_within + theorem has_deriv_within_at.differentiable_within_at + theorem has_deriv_within_at.has_deriv_at + theorem has_deriv_within_at.has_fderiv_within_at + theorem has_deriv_within_at.mono + theorem has_deriv_within_at.mono_of_mem + theorem has_deriv_within_at.nhds_within + theorem has_deriv_within_at.union + def has_deriv_within_at + theorem has_deriv_within_at_Iio_iff_Iic + theorem has_deriv_within_at_Ioi_iff_Ici + theorem has_deriv_within_at_congr_set' + theorem has_deriv_within_at_congr_set + theorem has_deriv_within_at_const + theorem has_deriv_within_at_deriv_within_iff + theorem has_deriv_within_at_diff_singleton + theorem has_deriv_within_at_id + theorem has_deriv_within_at_iff_has_fderiv_within_at + theorem has_deriv_within_at_iff_is_o + theorem has_deriv_within_at_iff_tendsto + theorem has_deriv_within_at_inter' + theorem has_deriv_within_at_inter + theorem has_deriv_within_at_univ + theorem has_fderiv_at.has_deriv_at + theorem has_fderiv_at_filter.has_deriv_at_filter + theorem has_fderiv_at_filter_iff_has_deriv_at_filter + theorem has_fderiv_at_iff_has_deriv_at + theorem has_fderiv_within_at.has_deriv_within_at + theorem has_fderiv_within_at_iff_has_deriv_within_at + theorem has_strict_deriv_at.has_deriv_at + def has_strict_deriv_at + theorem has_strict_deriv_at_const + theorem has_strict_deriv_at_id + theorem has_strict_deriv_at_iff_has_strict_fderiv_at + theorem has_strict_fderiv_at_iff_has_strict_deriv_at + theorem unique_diff_within_at.eq_deriv Added src/analysis/calculus/deriv/comp.lean + theorem deriv.comp + theorem deriv.scomp + theorem deriv_within.comp + theorem deriv_within.scomp + theorem fderiv.comp_deriv + theorem fderiv_within.comp_deriv_within + theorem has_deriv_at.comp + theorem has_deriv_at.comp_has_deriv_within_at + theorem has_deriv_at.comp_has_fderiv_at + theorem has_deriv_at.comp_has_fderiv_within_at + theorem has_deriv_at.scomp + theorem has_deriv_at.scomp_has_deriv_within_at + theorem has_deriv_at_filter.comp + theorem has_deriv_at_filter.comp_has_fderiv_at_filter + theorem has_deriv_at_filter.scomp + theorem has_deriv_within_at.comp + theorem has_deriv_within_at.comp_has_fderiv_within_at + theorem has_deriv_within_at.scomp + theorem has_deriv_within_at.scomp_has_deriv_at + theorem has_fderiv_at.comp_has_deriv_at + theorem has_fderiv_at.comp_has_deriv_within_at + theorem has_fderiv_within_at.comp_has_deriv_within_at + theorem has_strict_deriv_at.comp + theorem has_strict_deriv_at.comp_has_strict_fderiv_at + theorem has_strict_deriv_at.scomp + theorem has_strict_fderiv_at.comp_has_strict_deriv_at Added src/analysis/calculus/deriv/inv.lean + theorem deriv_div + theorem deriv_inv'' + theorem deriv_inv' + theorem deriv_inv + theorem deriv_within_div + theorem deriv_within_inv' + theorem deriv_within_inv + theorem differentiable.div + theorem differentiable.inv + theorem differentiable_at.div + theorem differentiable_at.inv + theorem differentiable_at_inv + theorem differentiable_on.div + theorem differentiable_on.inv + theorem differentiable_on_inv + theorem differentiable_within_at.div + theorem differentiable_within_at.inv + theorem differentiable_within_at_inv + theorem fderiv_inv + theorem fderiv_within_inv + theorem has_deriv_at.div + theorem has_deriv_at.inv + theorem has_deriv_at_inv + theorem has_deriv_within_at.div + theorem has_deriv_within_at.inv + theorem has_deriv_within_at_inv + theorem has_fderiv_at_inv + theorem has_fderiv_within_at_inv + theorem has_strict_deriv_at.div + theorem has_strict_deriv_at_inv Added src/analysis/calculus/deriv/inverse.lean + theorem has_deriv_at.eventually_ne + theorem has_deriv_at.has_fderiv_at_equiv + theorem has_deriv_at.of_local_left_inverse + theorem has_deriv_at.tendsto_punctured_nhds + theorem has_strict_deriv_at.has_strict_fderiv_at_equiv + theorem has_strict_deriv_at.of_local_left_inverse + theorem local_homeomorph.has_deriv_at_symm + theorem local_homeomorph.has_strict_deriv_at_symm + theorem not_differentiable_at_of_local_left_inverse_has_deriv_at_zero + theorem not_differentiable_within_at_of_local_left_inverse_has_deriv_within_at_zero Added src/analysis/calculus/deriv/linear.lean Added src/analysis/calculus/deriv/mul.lean + theorem deriv_clm_apply + theorem deriv_clm_comp + theorem deriv_const_mul + theorem deriv_const_mul_field' + theorem deriv_const_mul_field + theorem deriv_const_smul + theorem deriv_div_const + theorem deriv_mul + theorem deriv_mul_const + theorem deriv_mul_const_field' + theorem deriv_mul_const_field + theorem deriv_smul + theorem deriv_smul_const + theorem deriv_within_clm_apply + theorem deriv_within_clm_comp + theorem deriv_within_const_mul + theorem deriv_within_const_smul + theorem deriv_within_div_const + theorem deriv_within_mul + theorem deriv_within_mul_const + theorem deriv_within_smul + theorem deriv_within_smul_const + theorem differentiable.div_const + theorem differentiable_at.div_const + theorem differentiable_on.div_const + theorem differentiable_within_at.div_const + theorem has_deriv_at.clm_apply + theorem has_deriv_at.clm_comp + theorem has_deriv_at.const_mul + theorem has_deriv_at.const_smul + theorem has_deriv_at.div_const + theorem has_deriv_at.mul + theorem has_deriv_at.mul_const + theorem has_deriv_at.smul + theorem has_deriv_at.smul_const + theorem has_deriv_at_filter.const_smul + theorem has_deriv_at_mul_const + theorem has_deriv_within_at.clm_apply + theorem has_deriv_within_at.clm_comp + theorem has_deriv_within_at.const_mul + theorem has_deriv_within_at.const_smul + theorem has_deriv_within_at.div_const + theorem has_deriv_within_at.mul + theorem has_deriv_within_at.mul_const + theorem has_deriv_within_at.smul + theorem has_deriv_within_at.smul_const + theorem has_strict_deriv_at.clm_apply + theorem has_strict_deriv_at.clm_comp + theorem has_strict_deriv_at.const_mul + theorem has_strict_deriv_at.const_smul + theorem has_strict_deriv_at.div_const + theorem has_strict_deriv_at.mul + theorem has_strict_deriv_at.mul_const + theorem has_strict_deriv_at.smul + theorem has_strict_deriv_at.smul_const Added src/analysis/calculus/deriv/polynomial.lean Added src/analysis/calculus/deriv/pow.lean + theorem deriv_pow'' + theorem deriv_pow' + theorem deriv_pow + theorem deriv_within_pow' + theorem deriv_within_pow + theorem differentiable_at_pow + theorem differentiable_on_pow + theorem differentiable_pow + theorem differentiable_within_at_pow + theorem has_deriv_at.pow + theorem has_deriv_at_pow + theorem has_deriv_within_at.pow + theorem has_deriv_within_at_pow + theorem has_strict_deriv_at_pow Added src/analysis/calculus/deriv/prod.lean + theorem deriv_pi + theorem deriv_within_pi + theorem has_deriv_at.prod + theorem has_deriv_at_filter.prod + theorem has_deriv_at_filter_pi + theorem has_deriv_at_pi + theorem has_deriv_within_at.prod + theorem has_deriv_within_at_pi + theorem has_strict_deriv_at.prod + theorem has_strict_deriv_at_pi Added src/analysis/calculus/deriv/slope.lean + theorem has_deriv_at_filter_iff_tendsto_slope + theorem has_deriv_at_iff_tendsto_slope + theorem has_deriv_within_at.liminf_right_norm_slope_le + theorem has_deriv_within_at.liminf_right_slope_le + theorem has_deriv_within_at.liminf_right_slope_norm_le + theorem has_deriv_within_at.limsup_norm_slope_le + theorem has_deriv_within_at.limsup_slope_le' + theorem has_deriv_within_at.limsup_slope_le + theorem has_deriv_within_at.limsup_slope_norm_le + theorem has_deriv_within_at_iff_tendsto_slope' + theorem has_deriv_within_at_iff_tendsto_slope Added src/analysis/calculus/deriv/star.lean Added src/analysis/calculus/deriv/support.lean + theorem has_compact_support.deriv + theorem support_deriv_subset Added src/analysis/calculus/deriv/zpow.lean + theorem deriv_within_zpow + theorem deriv_zpow' + theorem deriv_zpow + theorem differentiable.zpow + theorem differentiable_at.zpow + theorem differentiable_at_zpow + theorem differentiable_on.zpow + theorem differentiable_on_zpow + theorem differentiable_within_at.zpow + theorem differentiable_within_at_zpow + theorem has_deriv_at_zpow + theorem has_deriv_within_at_zpow + theorem has_strict_deriv_at_zpow + theorem iter_deriv_inv' + theorem iter_deriv_inv + theorem iter_deriv_pow' + theorem iter_deriv_pow + theorem iter_deriv_zpow' + theorem iter_deriv_zpow Modified src/analysis/calculus/diff_cont_on_cl.lean Modified src/analysis/calculus/dslope.lean Modified src/analysis/calculus/fderiv_analytic.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/monotone.lean Modified src/analysis/complex/real_deriv.lean Modified src/analysis/convex/specific_functions/deriv.lean Modified src/analysis/special_functions/log/deriv.lean Modified src/analysis/special_functions/pow/deriv.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/fund_thm_calculus.lean Modified src/ring_theory/polynomial/hermite/gaussian.lean Modified test/simp_command.lean 2023-05-27 18:17:13 13b0d72 feat(measure_theory/function/l1_space): generalize multiplicative results to is_unit (#19073) This generalization lets us use these lemmas for left- and right- multiplication by non-commutative normed rings. This doesn't make it all the way to `integral_mul_const`, but it's a step in that direction. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean - theorem measure_theory.has_finite_integral.smul' +/- theorem measure_theory.has_finite_integral.smul +/- theorem measure_theory.has_finite_integral_smul_iff +/- theorem measure_theory.integrable.smul +/- theorem measure_theory.integrable.smul_ess_sup +/- theorem measure_theory.integrable_smul_iff + theorem measure_theory.is_unit.integrable_smul_iff Modified src/measure_theory/integral/peak_function.lean 2023-05-27 17:03:32 5a2df4c chore(measure_theory/function/simple_func_dense_lp): generalize typeclasses (#19111) Lemmas like `to_Lp_smul` now apply for `normed_ring`s, not just `normed_field`s. ESTIMATED CHANGES Modified src/measure_theory/function/simple_func_dense_lp.lean 2023-05-27 15:17:24 0b7c740 chore(*): add mathlib4 synchronization comments (#19099) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.abelian` * `algebra.category.Group.colimits` * `algebra.category.Group.images` * `algebra.category.Module.abelian` * `algebra.category.Module.biproducts` * `algebra.category.Module.images` * `algebra.category.Ring.constructions` * `algebra.category.Ring.filtered_colimits` * `algebra.category.Ring.limits` * `algebra.module.graded_module` * `algebra.module.torsion` * `algebraic_geometry.presheafed_space.has_colimits` * `algebraic_geometry.prime_spectrum.maximal` * `algebraic_geometry.prime_spectrum.noetherian` * `algebraic_geometry.sheafed_space` * `analysis.box_integral.partition.filter` * `analysis.calculus.conformal.inner_product` * `analysis.calculus.conformal.normed_space` * `analysis.calculus.fderiv.bilinear` * `analysis.calculus.fderiv.mul` * `analysis.complex.arg` * `analysis.complex.conformal` * `analysis.complex.unit_disc.basic` * `analysis.convex.krein_milman` * `analysis.convex.specific_functions.basic` * `analysis.inner_product_space.basic` * `analysis.inner_product_space.conformal_linear_map` * `analysis.inner_product_space.dual` * `analysis.inner_product_space.orthogonal` * `analysis.inner_product_space.projection` * `analysis.inner_product_space.symmetric` * `analysis.locally_convex.abs_convex` * `analysis.locally_convex.weak_dual` * `analysis.mean_inequalities` * `analysis.mean_inequalities_pow` * `analysis.normed_space.dual` * `analysis.normed_space.hahn_banach.separation` * `analysis.normed_space.pi_Lp` * `analysis.normed_space.star.multiplier` * `analysis.normed_space.weak_dual` * `analysis.p_series` * `analysis.special_functions.pow.asymptotics` * `analysis.special_functions.pow.continuity` * `category_theory.abelian.injective` * `category_theory.abelian.injective_resolution` * `category_theory.abelian.projective` * `category_theory.abelian.right_derived` * `category_theory.preadditive.yoneda.limits` * `data.nat.squarefree` * `data.zmod.quotient` * `field_theory.ratfunc` * `geometry.euclidean.angle.unoriented.affine` * `geometry.euclidean.angle.unoriented.basic` * `geometry.euclidean.angle.unoriented.conformal` * `geometry.euclidean.basic` * `geometry.euclidean.inversion` * `geometry.manifold.conformal_groupoid` * `group_theory.exponent` * `group_theory.p_group` * `group_theory.specific_groups.cyclic` * `group_theory.specific_groups.dihedral` * `group_theory.torsion` * `linear_algebra.free_module.ideal_quotient` * `linear_algebra.matrix.bilinear_form` * `linear_algebra.matrix.sesquilinear_form` * `measure_theory.function.egorov` * `measure_theory.function.special_functions.inner` * `measure_theory.function.strongly_measurable.inner` * `measure_theory.integral.mean_inequalities` * `model_theory.graph` * `model_theory.satisfiability` * `model_theory.types` * `model_theory.ultraproducts` * `number_theory.bernoulli` * `number_theory.padics.hensel` * `number_theory.padics.padic_integers` * `order.category.FinPartOrd` * `probability.probability_mass_function.constructions` * `ring_theory.adjoin.field` * `ring_theory.algebraic_independent` * `ring_theory.integral_domain` * `ring_theory.is_tensor_product` * `ring_theory.polynomial.dickson` * `topology.continuous_function.compact` * `topology.instances.complex` * `topology.metric_space.holder` * `topology.sheaves.functors` * `topology.sheaves.sheaf_condition.equalizer_products` * `topology.sheaves.sheaf_condition.pairwise_intersections` ESTIMATED CHANGES Modified src/algebra/category/Group/abelian.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Group/images.lean Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/biproducts.lean Modified src/algebra/category/Module/images.lean Modified src/algebra/category/Ring/constructions.lean Modified src/algebra/category/Ring/filtered_colimits.lean Modified src/algebra/category/Ring/limits.lean Modified src/algebra/module/graded_module.lean Modified src/algebra/module/torsion.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_geometry/prime_spectrum/maximal.lean Modified src/algebraic_geometry/prime_spectrum/noetherian.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/analysis/box_integral/partition/filter.lean Modified src/analysis/calculus/conformal/inner_product.lean Modified src/analysis/calculus/conformal/normed_space.lean Modified src/analysis/calculus/fderiv/bilinear.lean Modified src/analysis/calculus/fderiv/mul.lean Modified src/analysis/complex/arg.lean Modified src/analysis/complex/conformal.lean Modified src/analysis/complex/unit_disc/basic.lean Modified src/analysis/convex/krein_milman.lean Modified src/analysis/convex/specific_functions/basic.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/conformal_linear_map.lean Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/orthogonal.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/analysis/locally_convex/abs_convex.lean Modified src/analysis/locally_convex/weak_dual.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/mean_inequalities_pow.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/hahn_banach/separation.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/analysis/normed_space/star/multiplier.lean Modified src/analysis/normed_space/weak_dual.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/pow/asymptotics.lean Modified src/analysis/special_functions/pow/continuity.lean Modified src/category_theory/abelian/injective.lean Modified src/category_theory/abelian/injective_resolution.lean Modified src/category_theory/abelian/projective.lean Modified src/category_theory/abelian/right_derived.lean Modified src/category_theory/preadditive/yoneda/limits.lean Modified src/data/nat/squarefree.lean Modified src/data/zmod/quotient.lean Modified src/field_theory/ratfunc.lean Modified src/geometry/euclidean/angle/unoriented/affine.lean Modified src/geometry/euclidean/angle/unoriented/basic.lean Modified src/geometry/euclidean/angle/unoriented/conformal.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/inversion.lean Modified src/geometry/manifold/conformal_groupoid.lean Modified src/group_theory/exponent.lean Modified src/group_theory/p_group.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/group_theory/specific_groups/dihedral.lean Modified src/group_theory/torsion.lean Modified src/linear_algebra/free_module/ideal_quotient.lean Modified src/linear_algebra/matrix/bilinear_form.lean Modified src/linear_algebra/matrix/sesquilinear_form.lean Modified src/measure_theory/function/egorov.lean Modified src/measure_theory/function/special_functions/inner.lean Modified src/measure_theory/function/strongly_measurable/inner.lean Modified src/measure_theory/integral/mean_inequalities.lean Modified src/model_theory/graph.lean Modified src/model_theory/satisfiability.lean Modified src/model_theory/types.lean Modified src/model_theory/ultraproducts.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/padics/hensel.lean Modified src/number_theory/padics/padic_integers.lean Modified src/order/category/FinPartOrd.lean Modified src/probability/probability_mass_function/constructions.lean Modified src/ring_theory/adjoin/field.lean Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/is_tensor_product.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/topology/continuous_function/compact.lean Modified src/topology/instances/complex.lean Modified src/topology/metric_space/holder.lean Modified src/topology/sheaves/functors.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2023-05-27 11:16:23 c4015ac refactor(measure_theory/function/lp_space): split file (#19112) This is the longest file that remains to port, and there is an obvious split to be made. The new file is called `measure_theory.function/lp_seminorm`. Other than the module docstrings, which have been tweaked to represent the split, the contents of the new file is moved without modification from the old one. ESTIMATED CHANGES Added src/measure_theory/function/lp_seminorm.lean + theorem measurable_embedding.mem_ℒp_map_measure_iff + theorem measurable_embedding.snorm_ess_sup_map_measure + theorem measurable_embedding.snorm_map_measure + theorem measurable_equiv.mem_ℒp_map_measure_iff + def measure_theory.Lp_add_const + theorem measure_theory.Lp_add_const_lt_top + theorem measure_theory.Lp_add_const_of_one_le + theorem measure_theory.Lp_add_const_zero + theorem measure_theory.ae_bdd_liminf_at_top_of_snorm_bdd + theorem measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd + theorem measure_theory.ae_eq_zero_of_snorm'_eq_zero + theorem measure_theory.ae_le_snorm_ess_sup + theorem measure_theory.coe_nnnorm_ae_le_snorm_ess_sup + theorem measure_theory.ess_sup_trim + theorem measure_theory.exists_Lp_half + theorem measure_theory.limsup_trim + theorem measure_theory.lintegral_rpow_nnnorm_eq_rpow_snorm' + theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top + theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top + theorem measure_theory.meas_ge_le_mul_pow_snorm + theorem measure_theory.meas_snorm_ess_sup_lt + theorem measure_theory.mem_ℒp.add + theorem measure_theory.mem_ℒp.ae_eq + theorem measure_theory.mem_ℒp.ae_strongly_measurable + theorem measure_theory.mem_ℒp.congr_norm + theorem measure_theory.mem_ℒp.const_mul + theorem measure_theory.mem_ℒp.const_smul + theorem measure_theory.mem_ℒp.im + theorem measure_theory.mem_ℒp.left_of_add_measure + theorem measure_theory.mem_ℒp.mem_ℒp_of_exponent_le + theorem measure_theory.mem_ℒp.mono' + theorem measure_theory.mem_ℒp.mono_measure + theorem measure_theory.mem_ℒp.neg + theorem measure_theory.mem_ℒp.norm + theorem measure_theory.mem_ℒp.of_bound + theorem measure_theory.mem_ℒp.of_le + theorem measure_theory.mem_ℒp.of_le_mul + theorem measure_theory.mem_ℒp.of_measure_le_smul + theorem measure_theory.mem_ℒp.of_nnnorm_le_mul + theorem measure_theory.mem_ℒp.re + theorem measure_theory.mem_ℒp.restrict + theorem measure_theory.mem_ℒp.right_of_add_measure + theorem measure_theory.mem_ℒp.smul + theorem measure_theory.mem_ℒp.smul_measure + theorem measure_theory.mem_ℒp.smul_of_top_left + theorem measure_theory.mem_ℒp.smul_of_top_right + theorem measure_theory.mem_ℒp.snorm_lt_top + theorem measure_theory.mem_ℒp.snorm_ne_top + theorem measure_theory.mem_ℒp.sub + def measure_theory.mem_ℒp + theorem measure_theory.mem_ℒp_congr_ae + theorem measure_theory.mem_ℒp_congr_norm + theorem measure_theory.mem_ℒp_const + theorem measure_theory.mem_ℒp_const_iff + theorem measure_theory.mem_ℒp_finset_sum' + theorem measure_theory.mem_ℒp_finset_sum + theorem measure_theory.mem_ℒp_map_measure_iff + theorem measure_theory.mem_ℒp_neg_iff + theorem measure_theory.mem_ℒp_norm_iff + theorem measure_theory.mem_ℒp_of_mem_ℒp_trim + theorem measure_theory.mem_ℒp_top_const + theorem measure_theory.mem_ℒp_top_of_bound + theorem measure_theory.mem_ℒp_zero_iff_ae_strongly_measurable + theorem measure_theory.mul_meas_ge_le_pow_snorm' + theorem measure_theory.mul_meas_ge_le_pow_snorm + theorem measure_theory.pow_mul_meas_ge_le_snorm + def measure_theory.snorm' + theorem measure_theory.snorm'_add_le + theorem measure_theory.snorm'_add_le_of_le_one + theorem measure_theory.snorm'_congr_ae + theorem measure_theory.snorm'_congr_nnnorm_ae + theorem measure_theory.snorm'_congr_norm_ae + theorem measure_theory.snorm'_const' + theorem measure_theory.snorm'_const + theorem measure_theory.snorm'_const_of_is_probability_measure + theorem measure_theory.snorm'_const_smul + theorem measure_theory.snorm'_const_smul_le + theorem measure_theory.snorm'_eq_zero_iff + theorem measure_theory.snorm'_eq_zero_of_ae_zero' + theorem measure_theory.snorm'_eq_zero_of_ae_zero + theorem measure_theory.snorm'_exponent_zero + theorem measure_theory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul + theorem measure_theory.snorm'_le_snorm'_mul_rpow_measure_univ + theorem measure_theory.snorm'_le_snorm'_mul_snorm' + theorem measure_theory.snorm'_le_snorm'_of_exponent_le + theorem measure_theory.snorm'_le_snorm_ess_sup + theorem measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ + theorem measure_theory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le + theorem measure_theory.snorm'_measure_zero_of_exponent_zero + theorem measure_theory.snorm'_measure_zero_of_neg + theorem measure_theory.snorm'_measure_zero_of_pos + theorem measure_theory.snorm'_mono_ae + theorem measure_theory.snorm'_mono_measure + theorem measure_theory.snorm'_mono_nnnorm_ae + theorem measure_theory.snorm'_neg + theorem measure_theory.snorm'_norm + theorem measure_theory.snorm'_norm_rpow + theorem measure_theory.snorm'_smul_le_mul_snorm' + theorem measure_theory.snorm'_smul_measure + theorem measure_theory.snorm'_sum_le + theorem measure_theory.snorm'_trim + theorem measure_theory.snorm'_zero' + theorem measure_theory.snorm'_zero + def measure_theory.snorm + theorem measure_theory.snorm_add_le' + theorem measure_theory.snorm_add_le + theorem measure_theory.snorm_add_lt_top + theorem measure_theory.snorm_congr_ae + theorem measure_theory.snorm_congr_nnnorm_ae + theorem measure_theory.snorm_congr_norm_ae + theorem measure_theory.snorm_const' + theorem measure_theory.snorm_const + theorem measure_theory.snorm_const_lt_top_iff + theorem measure_theory.snorm_const_smul + theorem measure_theory.snorm_const_smul_le + theorem measure_theory.snorm_eq_lintegral_rpow_nnnorm + theorem measure_theory.snorm_eq_snorm' + theorem measure_theory.snorm_eq_zero_and_zero_of_ae_le_mul_neg + theorem measure_theory.snorm_eq_zero_iff + def measure_theory.snorm_ess_sup + theorem measure_theory.snorm_ess_sup_add_le + theorem measure_theory.snorm_ess_sup_congr_ae + theorem measure_theory.snorm_ess_sup_const + theorem measure_theory.snorm_ess_sup_const_smul + theorem measure_theory.snorm_ess_sup_const_smul_le + theorem measure_theory.snorm_ess_sup_eq_zero_iff + theorem measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul + theorem measure_theory.snorm_ess_sup_le_of_ae_bound + theorem measure_theory.snorm_ess_sup_le_of_ae_nnnorm_bound + theorem measure_theory.snorm_ess_sup_lt_top_of_ae_bound + theorem measure_theory.snorm_ess_sup_lt_top_of_ae_nnnorm_bound + theorem measure_theory.snorm_ess_sup_map_measure + theorem measure_theory.snorm_ess_sup_measure_zero + theorem measure_theory.snorm_ess_sup_mono_measure + theorem measure_theory.snorm_ess_sup_mono_nnnorm_ae + theorem measure_theory.snorm_ess_sup_smul_measure + theorem measure_theory.snorm_ess_sup_trim + theorem measure_theory.snorm_ess_sup_zero + theorem measure_theory.snorm_exponent_top + theorem measure_theory.snorm_exponent_zero + theorem measure_theory.snorm_indicator_ge_of_bdd_below + theorem measure_theory.snorm_le_add_measure_left + theorem measure_theory.snorm_le_add_measure_right + theorem measure_theory.snorm_le_mul_snorm_of_ae_le_mul + theorem measure_theory.snorm_le_nnreal_smul_snorm_of_ae_le_mul + theorem measure_theory.snorm_le_of_ae_bound + theorem measure_theory.snorm_le_of_ae_nnnorm_bound + theorem measure_theory.snorm_le_snorm_mul_rpow_measure_univ + theorem measure_theory.snorm_le_snorm_mul_snorm'_of_norm + theorem measure_theory.snorm_le_snorm_mul_snorm_of_nnnorm + theorem measure_theory.snorm_le_snorm_mul_snorm_top + theorem measure_theory.snorm_le_snorm_of_exponent_le + theorem measure_theory.snorm_le_snorm_top_mul_snorm + theorem measure_theory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top + theorem measure_theory.snorm_map_measure + theorem measure_theory.snorm_measure_zero + theorem measure_theory.snorm_mono + theorem measure_theory.snorm_mono_ae + theorem measure_theory.snorm_mono_ae_real + theorem measure_theory.snorm_mono_measure + theorem measure_theory.snorm_mono_nnnorm + theorem measure_theory.snorm_mono_nnnorm_ae + theorem measure_theory.snorm_mono_real + theorem measure_theory.snorm_neg + theorem measure_theory.snorm_norm + theorem measure_theory.snorm_norm_rpow + theorem measure_theory.snorm_one_add_measure + theorem measure_theory.snorm_one_eq_lintegral_nnnorm + theorem measure_theory.snorm_one_smul_measure + theorem measure_theory.snorm_smul_le_mul_snorm + theorem measure_theory.snorm_smul_le_snorm_mul_snorm_top + theorem measure_theory.snorm_smul_le_snorm_top_mul_snorm + theorem measure_theory.snorm_smul_measure_of_ne_top + theorem measure_theory.snorm_smul_measure_of_ne_zero + theorem measure_theory.snorm_sub_le' + theorem measure_theory.snorm_sub_le + theorem measure_theory.snorm_sum_le + theorem measure_theory.snorm_trim + theorem measure_theory.snorm_trim_ae + theorem measure_theory.snorm_zero' + theorem measure_theory.snorm_zero + theorem measure_theory.zero_mem_ℒp' + theorem measure_theory.zero_mem_ℒp Modified src/measure_theory/function/lp_space.lean - theorem measurable_embedding.mem_ℒp_map_measure_iff - theorem measurable_embedding.snorm_ess_sup_map_measure - theorem measurable_embedding.snorm_map_measure - theorem measurable_equiv.mem_ℒp_map_measure_iff - def measure_theory.Lp_add_const - theorem measure_theory.Lp_add_const_lt_top - theorem measure_theory.Lp_add_const_of_one_le - theorem measure_theory.Lp_add_const_zero - theorem measure_theory.ae_bdd_liminf_at_top_of_snorm_bdd - theorem measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd - theorem measure_theory.ae_eq_zero_of_snorm'_eq_zero - theorem measure_theory.ae_le_snorm_ess_sup - theorem measure_theory.coe_nnnorm_ae_le_snorm_ess_sup - theorem measure_theory.ess_sup_trim - theorem measure_theory.exists_Lp_half - theorem measure_theory.limsup_trim - theorem measure_theory.lintegral_rpow_nnnorm_eq_rpow_snorm' - theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top - theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top - theorem measure_theory.meas_ge_le_mul_pow_snorm - theorem measure_theory.meas_snorm_ess_sup_lt - theorem measure_theory.mem_ℒp.add - theorem measure_theory.mem_ℒp.ae_eq - theorem measure_theory.mem_ℒp.ae_strongly_measurable - theorem measure_theory.mem_ℒp.congr_norm - theorem measure_theory.mem_ℒp.const_mul - theorem measure_theory.mem_ℒp.const_smul - theorem measure_theory.mem_ℒp.im - theorem measure_theory.mem_ℒp.left_of_add_measure - theorem measure_theory.mem_ℒp.mem_ℒp_of_exponent_le - theorem measure_theory.mem_ℒp.mono' - theorem measure_theory.mem_ℒp.mono_measure - theorem measure_theory.mem_ℒp.neg - theorem measure_theory.mem_ℒp.norm - theorem measure_theory.mem_ℒp.of_bound - theorem measure_theory.mem_ℒp.of_le - theorem measure_theory.mem_ℒp.of_le_mul - theorem measure_theory.mem_ℒp.of_measure_le_smul - theorem measure_theory.mem_ℒp.of_nnnorm_le_mul - theorem measure_theory.mem_ℒp.re - theorem measure_theory.mem_ℒp.restrict - theorem measure_theory.mem_ℒp.right_of_add_measure - theorem measure_theory.mem_ℒp.smul - theorem measure_theory.mem_ℒp.smul_measure - theorem measure_theory.mem_ℒp.smul_of_top_left - theorem measure_theory.mem_ℒp.smul_of_top_right - theorem measure_theory.mem_ℒp.snorm_lt_top - theorem measure_theory.mem_ℒp.snorm_ne_top - theorem measure_theory.mem_ℒp.sub - def measure_theory.mem_ℒp - theorem measure_theory.mem_ℒp_congr_ae - theorem measure_theory.mem_ℒp_congr_norm - theorem measure_theory.mem_ℒp_const - theorem measure_theory.mem_ℒp_const_iff - theorem measure_theory.mem_ℒp_finset_sum' - theorem measure_theory.mem_ℒp_finset_sum - theorem measure_theory.mem_ℒp_map_measure_iff - theorem measure_theory.mem_ℒp_neg_iff - theorem measure_theory.mem_ℒp_norm_iff - theorem measure_theory.mem_ℒp_of_mem_ℒp_trim - theorem measure_theory.mem_ℒp_top_const - theorem measure_theory.mem_ℒp_top_of_bound - theorem measure_theory.mem_ℒp_zero_iff_ae_strongly_measurable - theorem measure_theory.mul_meas_ge_le_pow_snorm' - theorem measure_theory.mul_meas_ge_le_pow_snorm - theorem measure_theory.pow_mul_meas_ge_le_snorm - def measure_theory.snorm' - theorem measure_theory.snorm'_add_le - theorem measure_theory.snorm'_add_le_of_le_one - theorem measure_theory.snorm'_congr_ae - theorem measure_theory.snorm'_congr_nnnorm_ae - theorem measure_theory.snorm'_congr_norm_ae - theorem measure_theory.snorm'_const' - theorem measure_theory.snorm'_const - theorem measure_theory.snorm'_const_of_is_probability_measure - theorem measure_theory.snorm'_const_smul - theorem measure_theory.snorm'_const_smul_le - theorem measure_theory.snorm'_eq_zero_iff - theorem measure_theory.snorm'_eq_zero_of_ae_zero' - theorem measure_theory.snorm'_eq_zero_of_ae_zero - theorem measure_theory.snorm'_exponent_zero - theorem measure_theory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul - theorem measure_theory.snorm'_le_snorm'_mul_rpow_measure_univ - theorem measure_theory.snorm'_le_snorm'_mul_snorm' - theorem measure_theory.snorm'_le_snorm'_of_exponent_le - theorem measure_theory.snorm'_le_snorm_ess_sup - theorem measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ - theorem measure_theory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le - theorem measure_theory.snorm'_measure_zero_of_exponent_zero - theorem measure_theory.snorm'_measure_zero_of_neg - theorem measure_theory.snorm'_measure_zero_of_pos - theorem measure_theory.snorm'_mono_ae - theorem measure_theory.snorm'_mono_measure - theorem measure_theory.snorm'_mono_nnnorm_ae - theorem measure_theory.snorm'_neg - theorem measure_theory.snorm'_norm - theorem measure_theory.snorm'_norm_rpow - theorem measure_theory.snorm'_smul_le_mul_snorm' - theorem measure_theory.snorm'_smul_measure - theorem measure_theory.snorm'_sum_le - theorem measure_theory.snorm'_trim - theorem measure_theory.snorm'_zero' - theorem measure_theory.snorm'_zero - def measure_theory.snorm - theorem measure_theory.snorm_add_le' - theorem measure_theory.snorm_add_le - theorem measure_theory.snorm_add_lt_top - theorem measure_theory.snorm_congr_ae - theorem measure_theory.snorm_congr_nnnorm_ae - theorem measure_theory.snorm_congr_norm_ae - theorem measure_theory.snorm_const' - theorem measure_theory.snorm_const - theorem measure_theory.snorm_const_lt_top_iff - theorem measure_theory.snorm_const_smul - theorem measure_theory.snorm_const_smul_le - theorem measure_theory.snorm_eq_lintegral_rpow_nnnorm - theorem measure_theory.snorm_eq_snorm' - theorem measure_theory.snorm_eq_zero_and_zero_of_ae_le_mul_neg - theorem measure_theory.snorm_eq_zero_iff - def measure_theory.snorm_ess_sup - theorem measure_theory.snorm_ess_sup_add_le - theorem measure_theory.snorm_ess_sup_congr_ae - theorem measure_theory.snorm_ess_sup_const - theorem measure_theory.snorm_ess_sup_const_smul - theorem measure_theory.snorm_ess_sup_const_smul_le - theorem measure_theory.snorm_ess_sup_eq_zero_iff - theorem measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul - theorem measure_theory.snorm_ess_sup_le_of_ae_bound - theorem measure_theory.snorm_ess_sup_le_of_ae_nnnorm_bound - theorem measure_theory.snorm_ess_sup_lt_top_of_ae_bound - theorem measure_theory.snorm_ess_sup_lt_top_of_ae_nnnorm_bound - theorem measure_theory.snorm_ess_sup_map_measure - theorem measure_theory.snorm_ess_sup_measure_zero - theorem measure_theory.snorm_ess_sup_mono_measure - theorem measure_theory.snorm_ess_sup_mono_nnnorm_ae - theorem measure_theory.snorm_ess_sup_smul_measure - theorem measure_theory.snorm_ess_sup_trim - theorem measure_theory.snorm_ess_sup_zero - theorem measure_theory.snorm_exponent_top - theorem measure_theory.snorm_exponent_zero - theorem measure_theory.snorm_indicator_ge_of_bdd_below - theorem measure_theory.snorm_le_add_measure_left - theorem measure_theory.snorm_le_add_measure_right - theorem measure_theory.snorm_le_mul_snorm_of_ae_le_mul - theorem measure_theory.snorm_le_nnreal_smul_snorm_of_ae_le_mul - theorem measure_theory.snorm_le_of_ae_bound - theorem measure_theory.snorm_le_of_ae_nnnorm_bound - theorem measure_theory.snorm_le_snorm_mul_rpow_measure_univ - theorem measure_theory.snorm_le_snorm_mul_snorm'_of_norm - theorem measure_theory.snorm_le_snorm_mul_snorm_of_nnnorm - theorem measure_theory.snorm_le_snorm_mul_snorm_top - theorem measure_theory.snorm_le_snorm_of_exponent_le - theorem measure_theory.snorm_le_snorm_top_mul_snorm - theorem measure_theory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top - theorem measure_theory.snorm_map_measure - theorem measure_theory.snorm_measure_zero - theorem measure_theory.snorm_mono - theorem measure_theory.snorm_mono_ae - theorem measure_theory.snorm_mono_ae_real - theorem measure_theory.snorm_mono_measure - theorem measure_theory.snorm_mono_nnnorm - theorem measure_theory.snorm_mono_nnnorm_ae - theorem measure_theory.snorm_mono_real - theorem measure_theory.snorm_neg - theorem measure_theory.snorm_norm - theorem measure_theory.snorm_norm_rpow - theorem measure_theory.snorm_one_add_measure - theorem measure_theory.snorm_one_eq_lintegral_nnnorm - theorem measure_theory.snorm_one_smul_measure - theorem measure_theory.snorm_smul_le_mul_snorm - theorem measure_theory.snorm_smul_le_snorm_mul_snorm_top - theorem measure_theory.snorm_smul_le_snorm_top_mul_snorm - theorem measure_theory.snorm_smul_measure_of_ne_top - theorem measure_theory.snorm_smul_measure_of_ne_zero - theorem measure_theory.snorm_sub_le' - theorem measure_theory.snorm_sub_le - theorem measure_theory.snorm_sum_le - theorem measure_theory.snorm_trim - theorem measure_theory.snorm_trim_ae - theorem measure_theory.snorm_zero' - theorem measure_theory.snorm_zero - theorem measure_theory.zero_mem_ℒp' - theorem measure_theory.zero_mem_ℒp 2023-05-27 08:18:54 78fdf68 feat(linear_algebra/alternating): add 3 missing definitions (#19069) ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.coe_pi + theorem alternating_map.coe_prod + theorem alternating_map.coe_smul_right + def alternating_map.pi + def alternating_map.prod + def alternating_map.smul_right + theorem linear_map.smul_right_eq_comp Modified src/linear_algebra/multilinear/basic.lean +/- def multilinear_map.prod 2023-05-27 07:13:41 b84aee7 feat (measure_theory/integral): some simple substitution rules (#19106) This adds a few lemmas for evaluating integrals, and showing that integrability is preserved, by substitutions of the form `x ↦ a * x` or `x ↦ x ^ a`. ESTIMATED CHANGES Modified src/measure_theory/function/jacobian.lean + theorem measure_theory.det_one_smul_right + theorem measure_theory.integrable_on_image_iff_integrable_on_abs_deriv_smul Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.integrable_on_Ioi_comp_mul_left_iff + theorem measure_theory.integrable_on_Ioi_comp_mul_right_iff + theorem measure_theory.integrable_on_Ioi_comp_rpow_iff' + theorem measure_theory.integrable_on_Ioi_comp_rpow_iff + theorem measure_theory.integral_comp_mul_left_Ioi + theorem measure_theory.integral_comp_mul_right_Ioi Modified src/measure_theory/measure/haar/normed_space.lean + theorem measure_theory.integrable.comp_div + theorem measure_theory.integrable.comp_mul_left' + theorem measure_theory.integrable.comp_mul_right' + theorem measure_theory.integrable.comp_smul + theorem measure_theory.integrable_comp_div_iff + theorem measure_theory.integrable_comp_mul_left_iff + theorem measure_theory.integrable_comp_mul_right_iff + theorem measure_theory.integrable_comp_smul_iff + theorem measure_theory.measure.integral_comp_div + theorem measure_theory.measure.integral_comp_inv_mul_left + theorem measure_theory.measure.integral_comp_inv_mul_right + theorem measure_theory.measure.integral_comp_mul_left + theorem measure_theory.measure.integral_comp_mul_right 2023-05-26 19:59:45 ea0bcd8 feat(number_theory/class_number/finite): remove useless assumption [dedekind_domain R] (#19109) Remove the useless assumption `[dedekind_domain R]` from the final lemma [class_group.fintype_of_admissible_of_finite](https://leanprover-community.github.io/mathlib_docs/number_theory/class_number/finite.html#class_group.fintype_of_admissible_of_finite) since this can be inferred by the Euclidean domain one, that is in force thanks the standing assumption is that `R` has an admissible absolute value. ESTIMATED CHANGES Modified src/number_theory/class_number/finite.lean 2023-05-26 16:13:46 6274895 fix: missing continuity attribute (#19104) ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean +/- theorem exp_continuous 2023-05-26 16:13:44 373b03b feat(analysis/convex/gauge): gauge of a convex nhd of zero is continuous (#19102) From the Brouwer Fixed Point Theorem project. ESTIMATED CHANGES Modified src/analysis/convex/gauge.lean + theorem convex.lipschitz_with_gauge + theorem convex.uniform_continuous_gauge 2023-05-26 16:13:43 e0736bb refactor(measure_theory/function/lp_space): generalize actions from `normed_field` to `normed_ring` (#19083) The motivation is that this makes it easier to work with integrals in non-commutative rings. This makes the proof of Hölder's inequality slightly more painful, as we can no longer use `simp_rw [norm_smul]` and have to make monotonicity arguments instead. `rel_congr` may be able to clean this up in mathlib3. The results in the `normed_space` section (including Hölder's inequality) have been largely moved to the `monotonicity` section, where they hold more generally for arbitrary binary functions. The results about scalar actions now follow as trivial special cases. This also makes the `fails_quickly` linter reject the `complete_space (Lp_meas F 𝕜 m p μ)` instance. Since Lean4 is around the corner and there are better debugging tools there, I think it's ok to just no-lint it. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation/basic.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/lp_space.lean +/- theorem continuous_linear_map.smul_comp_Lp +/- theorem continuous_linear_map.smul_comp_LpL - theorem continuous_linear_map.smul_comp_LpL_apply - theorem measure_theory.Lp.norm_const_smul +/- theorem measure_theory.mem_ℒp.const_mul + theorem measure_theory.snorm'_const_smul_le + theorem measure_theory.snorm'_le_snorm'_mul_snorm' +/- theorem measure_theory.snorm_const_smul + theorem measure_theory.snorm_const_smul_le +/- theorem measure_theory.snorm_ess_sup_const_smul + theorem measure_theory.snorm_ess_sup_const_smul_le + theorem measure_theory.snorm_ess_sup_mono_nnnorm_ae + theorem measure_theory.snorm_le_snorm_mul_snorm'_of_norm + theorem measure_theory.snorm_le_snorm_mul_snorm_of_nnnorm + theorem measure_theory.snorm_le_snorm_mul_snorm_top + theorem measure_theory.snorm_le_snorm_top_mul_snorm 2023-05-26 13:18:47 5bb9fff feat(data/set/finite): add a version of `set.finite.bUnion` (#19098) Add `set.finite.Union` and `equiv.set_finite_iff`. From the sphere eversion project. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem equiv.set_finite_iff + theorem set.finite.Union 2023-05-26 10:27:18 a33d01f feat(analysis/inner_product_space/spectrum): add a decomposition instance (#14870) This `decomposition` instances inherits the noncomputability of `orthogonal_projection`, but it is at least defeq to something useful. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + def orthogonal_family.decomposition + theorem orthogonal_family.projection_direct_sum_coe_add_hom + theorem orthogonal_family.sum_projection_of_mem_supr Modified src/analysis/inner_product_space/spectrum.lean + theorem linear_map.is_symmetric.direct_sum_decompose_apply 2023-05-26 08:33:09 76f9c99 feat(topology/subset_properties): add `sigma_compact_space` instances (#19100) Add instances for * `α × β`, `α ⊕ β`, `ulift α`; * `Π i : ι, π i`, assuming `finite ι`; * `Σ i : ι, π i`, assuming `countable ι`. In each case, all input topological spaces are also assumed to be σ-compact. Motivated by the `prod` instance in the sphere eversion project. ESTIMATED CHANGES Modified src/topology/constructions.lean + theorem ulift.closed_embedding_down Modified src/topology/subset_properties.lean 2023-05-26 06:32:00 42e9a1f feat(analysis/calculus/bump_function_inner): add `real.smooth_transition.proj_Icc` (#19097) Also add `real.smooth_transition.continuous_at`. From the sphere eversion project ESTIMATED CHANGES Modified src/analysis/calculus/bump_function_inner.lean Modified src/data/set/intervals/proj_Icc.lean + theorem set.Icc_extend_eq_self 2023-05-26 06:31:59 c2258f7 chore(topology/continuous_function/ideals): generalize type class requirements (#19093) For the continuous functional calculus in non-unital algebras the subtype `C(R, R)₀ := { f : C(R, R) // f 0 = 0 }` will be useful, which is exactly `continuous_map.ideal_of_set`. However, it will be necessary to let `R` be `ℂ`, `ℝ` and `ℝ≥0`, and for the latter we need these more general type class assumptions. ESTIMATED CHANGES Modified src/topology/continuous_function/ideals.lean 2023-05-26 06:31:58 d2d14e7 chore(measure_theory/function/lp_space): add and reorder monotonicity results (#19092) In #19083, I generalize the normed_space results to work without a tight bound. This is much easier if I have the more general monotonicity results available first. The `snorm'_le_nnreal_smul_snorm'_of_ae_le_mul` and `snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul` lemmas are new, and the `snorm_le_nnreal_smul_snorm_of_ae_le_mul` lemma has been adjusted to not rely on `snorm_const_smul`. All the other lemmas have just been reordered. ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul + theorem measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul 2023-05-26 03:27:28 cb42593 feat(data/real/basic): add `real.supr_nonneg` etc (#19096) Motivated by lemmas from the sphere eversion project ESTIMATED CHANGES Modified src/data/real/basic.lean 2023-05-25 22:47:33 d91e7f7 feat(topology/{maps,separation}): add lemmas about closed and quotient maps (#19071) Lemma statements are from Shamrock-Frost/BrouwerFixedPoint ESTIMATED CHANGES Modified src/topology/maps.lean + theorem is_closed_map.to_quotient_map +/- theorem quotient_map_iff + theorem quotient_map_iff_closed Modified src/topology/separation.lean - theorem continuous.is_closed_map + theorem quotient_map.of_surjective_continuous 2023-05-25 21:34:40 45a46f4 doc(analysis/complex/arg): fix docs (#19095) This is being backported from leanprover-community/mathlib4#4355. ESTIMATED CHANGES Modified src/analysis/complex/arg.lean 2023-05-25 19:59:18 e1a18ca feat(analysis/special_functions/exponential): derivative of `u ↦ exp 𝕂 (u • x)` (#19062) Revived from an old branch of @ADedecker, golfed using new lemmas that I added in the meantime. ESTIMATED CHANGES Modified src/analysis/special_functions/exponential.lean + theorem has_deriv_at_exp_smul_const' + theorem has_deriv_at_exp_smul_const + theorem has_deriv_at_exp_smul_const_of_mem_ball' + theorem has_deriv_at_exp_smul_const_of_mem_ball + theorem has_fderiv_at_exp_smul_const' + theorem has_fderiv_at_exp_smul_const + theorem has_fderiv_at_exp_smul_const_of_mem_ball' + theorem has_fderiv_at_exp_smul_const_of_mem_ball + theorem has_strict_deriv_at_exp_smul_const' + theorem has_strict_deriv_at_exp_smul_const + theorem has_strict_deriv_at_exp_smul_const_of_mem_ball' + theorem has_strict_deriv_at_exp_smul_const_of_mem_ball + theorem has_strict_fderiv_at_exp_smul_const' + theorem has_strict_fderiv_at_exp_smul_const + theorem has_strict_fderiv_at_exp_smul_const_of_mem_ball' + theorem has_strict_fderiv_at_exp_smul_const_of_mem_ball 2023-05-25 19:59:17 5a684ce feat(algebra/homology/local_cohomology): just the definition (#19061) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/category/Module/colimits.lean Added src/algebra/homology/local_cohomology.lean + theorem ideal.exists_pow_le_of_le_radical_of_fg + def local_cohomology.diagram + def local_cohomology.ideal_powers_diagram + def local_cohomology.ideal_powers_to_self_le_radical + def local_cohomology.ideal_powers_to_self_le_radical_comp_inclusion + def local_cohomology.of_diagram + def local_cohomology.of_self_le_radical + def local_cohomology.ring_mod_ideals + def local_cohomology.self_le_radical + def local_cohomology.self_le_radical_diagram + def local_cohomology 2023-05-25 18:32:44 de83b43 feat(analysis/normed_space/lp_space): generalize from normed_field to `normed_ring` (#19085) This provides a `module 𝕜 (lp E p)` instance for `normed_ring 𝕜` instead of `normed_field 𝕜`, as we didn't actually require that the bound on the norm of the scalar action was tight. ESTIMATED CHANGES Modified src/analysis/normed_space/lp_space.lean + theorem lp.norm_const_smul_le 2023-05-25 17:14:54 6480bed chore(measure_theory/function/lp_space): add nnnorm lemmas (#19091) This also adds a `has_nnnorm (Lp E p μ)` instance, which applies more generally (without `[fact (1 ≤ p)]`) than the version derived from `Lp.normed_add_comm_group`. In general, `nnnorm` (`‖f x‖₊)` statements can often be easier to work with because there is no need to repeatedly remind Lean that the norm is non-negative. Most of the time, the `norm` (`‖x‖`) counterparts follow trivially from the `nnnorm` ones. Notably this removes the need for a proof-by-cases in `snorm_le_mul_snorm_of_ae_le_mul` and some similar lemmas. ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean + theorem bounded_continuous_function.Lp_nnnorm_le + theorem measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound + theorem measure_theory.Lp.mem_Lp_of_nnnorm_ae_le + theorem measure_theory.Lp.mem_Lp_of_nnnorm_ae_le_mul + theorem measure_theory.Lp.nnnorm_def + theorem measure_theory.Lp.nnnorm_eq_zero_iff + theorem measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul + theorem measure_theory.Lp.nnnorm_le_of_ae_bound + theorem measure_theory.Lp.nnnorm_neg + theorem measure_theory.Lp.nnnorm_to_Lp + theorem measure_theory.Lp.nnnorm_zero +/- theorem measure_theory.Lp.norm_neg + theorem measure_theory.mem_ℒp.of_nnnorm_le_mul + theorem measure_theory.snorm'_congr_nnnorm_ae + theorem measure_theory.snorm'_mono_nnnorm_ae + theorem measure_theory.snorm_congr_nnnorm_ae + theorem measure_theory.snorm_eq_zero_and_zero_of_ae_le_mul_neg + theorem measure_theory.snorm_ess_sup_le_of_ae_nnnorm_bound + theorem measure_theory.snorm_ess_sup_lt_top_of_ae_nnnorm_bound - theorem measure_theory.snorm_le_mul_snorm_aux_of_neg - theorem measure_theory.snorm_le_mul_snorm_aux_of_nonneg + theorem measure_theory.snorm_le_nnreal_smul_snorm_of_ae_le_mul + theorem measure_theory.snorm_le_of_ae_nnnorm_bound + theorem measure_theory.snorm_mono_nnnorm + theorem measure_theory.snorm_mono_nnnorm_ae 2023-05-25 02:59:04 a87d225 chore(*): add mathlib4 synchronization comments (#19089) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.filtered_colimits` * `algebra.category.Module.limits` * `algebra.direct_limit` * `algebraic_geometry.prime_spectrum.basic` * `algebraic_geometry.prime_spectrum.is_open_comap_C` * `analysis.calculus.fderiv.star` * `analysis.complex.isometry` * `analysis.locally_convex.with_seminorms` * `analysis.normed.mul_action` * `analysis.normed_space.hahn_banach.extension` * `data.fintype.quotient` * `field_theory.separable_degree` * `linear_algebra.charpoly.to_matrix` * `linear_algebra.matrix.general_linear_group` * `linear_algebra.matrix.to_linear_equiv` * `measure_theory.function.ae_eq_fun` * `model_theory.quotients` * `number_theory.modular_forms.congruence_subgroups` * `ring_theory.adjoin.power_basis` * `ring_theory.adjoin_root` * `ring_theory.laurent_series` * `topology.instances.rat_lemmas` * `topology.metric_space.gromov_hausdorff_realized` ESTIMATED CHANGES Modified src/algebra/category/Group/filtered_colimits.lean Modified src/algebra/category/Module/limits.lean Modified src/algebra/direct_limit.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/prime_spectrum/is_open_comap_C.lean Modified src/analysis/calculus/fderiv/star.lean Modified src/analysis/complex/isometry.lean Modified src/analysis/locally_convex/with_seminorms.lean Modified src/analysis/normed/mul_action.lean Modified src/analysis/normed_space/hahn_banach/extension.lean Modified src/data/fintype/quotient.lean Modified src/field_theory/separable_degree.lean Modified src/linear_algebra/charpoly/to_matrix.lean Modified src/linear_algebra/matrix/general_linear_group.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/model_theory/quotients.lean Modified src/number_theory/modular_forms/congruence_subgroups.lean Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/laurent_series.lean Modified src/topology/instances/rat_lemmas.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2023-05-25 02:59:03 10878f6 feat(linear_algebra/span): generalise to_span_nonzero_singleton (#19082) ESTIMATED CHANGES Modified src/linear_algebra/span.lean +/- def linear_equiv.coord + theorem linear_equiv.coord_apply_smul +/- theorem linear_equiv.coord_self +/- def linear_equiv.to_span_nonzero_singleton +/- theorem linear_equiv.to_span_nonzero_singleton_one +/- theorem linear_map.ker_to_span_singleton 2023-05-24 21:28:29 96d2ccb fix: bump to Lean 3.51.1 (#19088) This should fix the web editor ESTIMATED CHANGES Modified leanpkg.toml 2023-05-24 15:42:17 ef95945 feat(measure_theory/function/strongly_measurable/basic): generalize to `is_unit c` from `c ≠ 0` (#19081) We already have this generalization for `measurable_const_smul_iff` and `ae_measurable_const_smul_iff`. ESTIMATED CHANGES Modified src/measure_theory/function/strongly_measurable/basic.lean + theorem is_unit.ae_strongly_measurable_const_smul_iff + theorem is_unit.strongly_measurable_const_smul_iff 2023-05-24 15:42:16 0372d31 feat(algebra/group/opposite): `is_unit` lemmas for `mul_opposite` (#19080) I need these to build lemmas about right-multiplication by a unit out of lemmas about the left-action by a unit of the opposite ring, and this lets me convert that hypothesis. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean + theorem is_unit.op + theorem is_unit.unop + theorem is_unit_op + theorem is_unit_unop 2023-05-24 14:35:21 5bfbcca chore(ring_theory.polynomial.cyclotomic): split file (#19077) `ring_theory.polynomial.cyclotomic` is almost 1000 lines long and it can be nicely split. We also fix some docstring. ESTIMATED CHANGES Modified archive/100-theorems-list/37_solution_of_cubic.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/primitive_roots.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean - theorem is_primitive_root.is_root_cyclotomic - theorem is_primitive_root.minpoly_dvd_cyclotomic - theorem is_primitive_root.minpoly_eq_cyclotomic_of_irreducible - theorem is_root_of_unity_iff - theorem polynomial.cyclotomic.irreducible - theorem polynomial.cyclotomic.irreducible_rat - theorem polynomial.cyclotomic.is_coprime_rat - theorem polynomial.cyclotomic.roots_eq_primitive_roots_val - theorem polynomial.cyclotomic.roots_to_finset_eq_primitive_roots - theorem polynomial.cyclotomic_eq_minpoly - theorem polynomial.cyclotomic_eq_minpoly_rat - theorem polynomial.cyclotomic_expand_eq_cyclotomic - theorem polynomial.cyclotomic_expand_eq_cyclotomic_mul - theorem polynomial.cyclotomic_injective - theorem polynomial.cyclotomic_irreducible_of_irreducible_pow - theorem polynomial.cyclotomic_irreducible_pow_of_irreducible_pow - theorem polynomial.cyclotomic_mul_prime_dvd_eq_pow - theorem polynomial.cyclotomic_mul_prime_eq_pow_of_not_dvd - theorem polynomial.cyclotomic_mul_prime_pow_eq - theorem polynomial.is_root_cyclotomic_iff - theorem polynomial.is_root_cyclotomic_iff_char_zero - theorem polynomial.is_root_cyclotomic_prime_pow_mul_iff_of_char_p - theorem polynomial.is_root_of_unity_of_root_cyclotomic - theorem polynomial.roots_cyclotomic_nodup Modified src/ring_theory/polynomial/cyclotomic/eval.lean Added src/ring_theory/polynomial/cyclotomic/expand.lean + theorem polynomial.cyclotomic_expand_eq_cyclotomic + theorem polynomial.cyclotomic_expand_eq_cyclotomic_mul + theorem polynomial.cyclotomic_irreducible_of_irreducible_pow + theorem polynomial.cyclotomic_irreducible_pow_of_irreducible_pow + theorem polynomial.cyclotomic_mul_prime_dvd_eq_pow + theorem polynomial.cyclotomic_mul_prime_eq_pow_of_not_dvd + theorem polynomial.cyclotomic_mul_prime_pow_eq + theorem polynomial.is_root_cyclotomic_prime_pow_mul_iff_of_char_p Added src/ring_theory/polynomial/cyclotomic/roots.lean + theorem is_primitive_root.is_root_cyclotomic + theorem is_primitive_root.minpoly_dvd_cyclotomic + theorem is_primitive_root.minpoly_eq_cyclotomic_of_irreducible + theorem is_root_of_unity_iff + theorem polynomial.cyclotomic.irreducible + theorem polynomial.cyclotomic.irreducible_rat + theorem polynomial.cyclotomic.is_coprime_rat + theorem polynomial.cyclotomic.roots_eq_primitive_roots_val + theorem polynomial.cyclotomic.roots_to_finset_eq_primitive_roots + theorem polynomial.cyclotomic_eq_minpoly + theorem polynomial.cyclotomic_eq_minpoly_rat + theorem polynomial.cyclotomic_injective + theorem polynomial.is_root_cyclotomic_iff + theorem polynomial.is_root_cyclotomic_iff_char_zero + theorem polynomial.is_root_of_unity_of_root_cyclotomic + theorem polynomial.roots_cyclotomic_nodup Modified src/ring_theory/polynomial/eisenstein/is_integral.lean 2023-05-24 12:44:51 bc91ed7 feat(analysis/normed_space/basic): scaling a set scales its diameter, translating it leaves it unchanged (#18990) ESTIMATED CHANGES Modified src/analysis/normed/mul_action.lean + theorem edist_smul_le + theorem edist_smul₀ +/- theorem lipschitz_with_smul +/- theorem nndist_smul₀ Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/pointwise.lean + theorem diam_smul₀ + theorem ediam_smul_le + theorem ediam_smul₀ + theorem inf_dist_smul₀ + theorem inf_edist_smul₀ Modified src/data/real/ennreal.lean +/- theorem ennreal.mul_le_iff_le_inv Modified src/topology/metric_space/hausdorff_distance.lean + theorem emetric.inf_edist_smul Modified src/topology/metric_space/isometric_smul.lean + theorem diam_smul + theorem ediam_smul 2023-05-24 11:30:13 6315581 feat(probability/kernel/disintegration): integral against `cond_kernel` (#19066) ESTIMATED CHANGES Modified src/probability/kernel/disintegration.lean + theorem measure_theory.ae_strongly_measurable.ae_integrable_cond_kernel_iff + theorem measure_theory.ae_strongly_measurable.integral_cond_kernel + theorem measure_theory.integrable.cond_kernel_ae + theorem measure_theory.integrable.integral_cond_kernel + theorem measure_theory.integrable.integral_norm_cond_kernel + theorem measure_theory.integrable.norm_integral_cond_kernel + theorem probability_theory.integral_cond_kernel + theorem probability_theory.set_integral_cond_kernel + theorem probability_theory.set_integral_cond_kernel_univ_left + theorem probability_theory.set_integral_cond_kernel_univ_right + theorem probability_theory.set_lintegral_cond_kernel + theorem probability_theory.set_lintegral_cond_kernel_eq_measure_prod + theorem probability_theory.set_lintegral_cond_kernel_univ_left + theorem probability_theory.set_lintegral_cond_kernel_univ_right 2023-05-24 04:13:02 61db041 chore(*): add mathlib4 synchronization comments (#19076) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Ring.colimits` * `analysis.box_integral.partition.additive` * `analysis.calculus.formal_multilinear_series` * `analysis.convex.cone.basic` * `analysis.convex.side` * `data.nat.prime_norm_num` * `field_theory.ax_grothendieck` * `field_theory.intermediate_field` * `field_theory.separable` * `linear_algebra.annihilating_polynomial` * `linear_algebra.charpoly.basic` * `linear_algebra.free_module.strong_rank_condition` * `linear_algebra.matrix.charpoly.minpoly` * `linear_algebra.matrix.special_linear_group` * `linear_algebra.trace` * `measure_theory.function.strongly_measurable.basic` * `representation_theory.basic` * `ring_theory.fractional_ideal` * `ring_theory.hahn_series` * `ring_theory.henselian` * `ring_theory.ideal.over` * `ring_theory.localization.integral` * `ring_theory.power_basis` * `topology.instances.irrational` * `topology.sheaves.sheaf_condition.opens_le_cover` ESTIMATED CHANGES Modified src/algebra/category/Ring/colimits.lean Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/convex/cone/basic.lean Modified src/analysis/convex/side.lean Modified src/data/nat/prime_norm_num.lean Modified src/field_theory/ax_grothendieck.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/separable.lean Modified src/linear_algebra/annihilating_polynomial.lean Modified src/linear_algebra/charpoly/basic.lean Modified src/linear_algebra/free_module/strong_rank_condition.lean Modified src/linear_algebra/matrix/charpoly/minpoly.lean Modified src/linear_algebra/matrix/special_linear_group.lean Modified src/linear_algebra/trace.lean Modified src/measure_theory/function/strongly_measurable/basic.lean Modified src/representation_theory/basic.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/henselian.lean Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/power_basis.lean Modified src/topology/instances/irrational.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean 2023-05-24 02:31:04 3a69562 feat(analysis/calculus): drop unneeded assumptions (#19045) * Prove more precise congruence lemmas for derivatives. In particular, adding or removing a single point from `s` doesn't change anything about derivatives within `s`. * Drop `has_fderiv_within_at.antimono` and `has_deriv_within_at.antimono`, use stronger `*.mono_of_mem` lemmas instead. * Prove some equalities about `(f)deriv_within` by using `simp` instead of `slit_ifs`: if `has_fderiv_within_at f f' s x ↔ has_fderiv_within_at g g' t y`, then `fderiv_within f s x = fderiv_within g t y`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean Modified src/analysis/calculus/cont_diff_def.lean + theorem cont_diff_within_at.cont_diff_on' + theorem cont_diff_within_at.differentiable_within_at_iterated_fderiv_within + theorem filter.eventually_eq.iterated_fderiv_within' + theorem filter.eventually_eq.iterated_fderiv_within_eq +/- theorem iterated_fderiv_within_congr + theorem iterated_fderiv_within_congr_set + theorem iterated_fderiv_within_eventually_congr_set' + theorem iterated_fderiv_within_eventually_congr_set +/- theorem iterated_fderiv_within_inter' +/- theorem iterated_fderiv_within_inter +/- theorem iterated_fderiv_within_inter_open Modified src/analysis/calculus/deriv.lean +/- theorem deriv_within_congr + theorem deriv_within_congr_set' + theorem deriv_within_congr_set +/- theorem deriv_within_inter + theorem deriv_within_of_mem +/- theorem filter.eventually_eq.deriv_within_eq + theorem has_deriv_within_at.mono_of_mem + theorem has_deriv_within_at_congr_set' +/- theorem has_deriv_within_at_congr_set Modified src/analysis/calculus/fderiv/basic.lean - theorem differentiable_within_at.antimono + theorem differentiable_within_at_congr_set' + theorem differentiable_within_at_congr_set +/- theorem fderiv_within_congr' +/- theorem fderiv_within_congr + theorem fderiv_within_congr_set' + theorem fderiv_within_congr_set + theorem fderiv_within_eventually_congr_set' + theorem fderiv_within_eventually_congr_set +/- theorem fderiv_within_inter + theorem fderiv_within_of_mem - theorem fderiv_within_subset' +/- theorem filter.eventually_eq.fderiv_eq + theorem filter.eventually_eq.fderiv_within' +/- theorem filter.eventually_eq.fderiv_within_eq +/- theorem filter.eventually_eq.fderiv_within_eq_nhds - theorem has_fderiv_within_at.antimono +/- theorem has_fderiv_within_at.congr' +/- theorem has_fderiv_within_at.congr +/- theorem has_fderiv_within_at.congr_mono +/- theorem has_fderiv_within_at.insert + theorem has_fderiv_within_at_congr_set' + theorem has_fderiv_within_at_congr_set + theorem has_fderiv_within_at_diff_singleton +/- theorem has_fderiv_within_at_insert + theorem tsupport_fderiv_subset Modified src/analysis/calculus/iterated_deriv.lean + theorem cont_diff_within_at.differentiable_within_at_iterated_deriv_within +/- theorem iterated_deriv_within_one Modified src/analysis/calculus/taylor.lean +/- theorem has_deriv_within_at_taylor_coeff_within Modified src/geometry/manifold/cont_mdiff_mfderiv.lean Modified src/geometry/manifold/mfderiv.lean +/- theorem mfderiv_within_inter Modified src/geometry/manifold/vector_bundle/tangent.lean 2023-05-23 21:45:53 d4f691b feat(order/filter/basic): generalize some lemmas from `nhds_within` (#19070) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.set_eventually_eq_iff_inf_principal + theorem filter.set_eventually_le_iff_inf_principal_le + theorem filter.set_eventually_le_iff_mem_inf_principal Modified src/topology/continuous_on.lean 2023-05-23 19:44:12 8d33f09 feat(topology/homotopy/H_spaces): define H spaces (#16029) introduce H-spaces and prove basic properties, in particular that every topological group is a H-space and that the path space at a point is a H-space. ESTIMATED CHANGES Modified docs/references.bib Added src/topology/homotopy/H_spaces.lean + theorem path.continuous_delay_refl_left + theorem path.continuous_delay_refl_right + def path.delay_refl_left + theorem path.delay_refl_left_one + theorem path.delay_refl_left_zero + def path.delay_refl_right + theorem path.delay_refl_right_one + theorem path.delay_refl_right_zero + theorem topological_group.one_eq_H_space_e + def unit_interval.Q_right + theorem unit_interval.Q_right_one_left + theorem unit_interval.Q_right_one_right + theorem unit_interval.Q_right_zero_left + theorem unit_interval.Q_right_zero_right + theorem unit_interval.continuous_Q_right 2023-05-23 16:54:20 ba5ff5a refactor(analysis/normed_space/basic): generalize some results to actions by normed_rings (#19053) This only moves the very basic lemmas for now. This should be very easy to forward-port: * Let someone port the new file via the normal mechanism * Have them delete the duplicate lemmas that appear in CI A few downstream proofs need some small help with unification, as while the old `normed_space` argument was found by unification, the new `has_bounded_smul` has to be found by typeclass search. ESTIMATED CHANGES Added src/analysis/normed/mul_action.lean + theorem dist_smul_le + theorem dist_smul₀ + theorem has_bounded_smul.of_norm_smul_le + theorem lipschitz_with_smul + theorem nndist_smul_le + theorem nndist_smul₀ + theorem nnnorm_smul + theorem nnnorm_smul_le + theorem norm_smul + theorem norm_smul_le Modified src/analysis/normed_space/basic.lean - theorem dist_smul_le - theorem dist_smul₀ - theorem lipschitz_with_smul - theorem nndist_smul_le - theorem nndist_smul₀ - theorem nnnorm_smul - theorem nnnorm_smul_le - theorem norm_smul - theorem norm_smul_le Modified src/analysis/normed_space/star/multiplier.lean Modified src/analysis/special_functions/exp.lean Modified src/topology/continuous_function/zero_at_infty.lean 2023-05-23 14:49:31 b602702 chore(number_theory/cyclotomic): tidying (#19067) Now that the splitting field diamond is gone, we can tidy the code around these areas a bit more. This also incidentally removed another diamond (the ℤ-algebra on `cyclotomic_ring`) and so we can remove ugliness related to this. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean - def cyclotomic_ring.algebra_base Modified src/number_theory/cyclotomic/primitive_roots.lean 2023-05-23 12:33:52 ad84a13 feat(analysis/calculus/fderiv/star): derivative of star in star-modules over a trivial star-ring (#19038) Notably this includes the complex and quaternion conjugates. We need the `has_trivial_star` assumption in order to have `star (c • x) = c • star x` available; which in turn we need because `has_fderiv_at` consumes *linear* maps not *semi-linear* maps. In the absence of an easy way to convert between linear and semi-linear maps, we bundle `star` (again) as a continuous linear equiv as `starL'`. Some alternative approaches are discussed [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Star-semilinear.20maps.20are.20semilinear.20when.20star.20is.20trivial/near/359552581). These API here is just the API for `-` (`neg`), modified by replacing `neg` with `star` and `-f x` with `star (f x)`. Since we require `has_trivial_star` there is no point adding any lemmas for the derivative of `star` on the field itself. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Added src/analysis/calculus/fderiv/star.lean + theorem differentiable.star + theorem differentiable_at.star + theorem differentiable_at_star_iff + theorem differentiable_on.star + theorem differentiable_on_star_iff + theorem differentiable_star_iff + theorem differentiable_within_at.star + theorem differentiable_within_at_star_iff + theorem fderiv_star + theorem fderiv_within_star + theorem has_fderiv_at.star + theorem has_fderiv_at_filter.star + theorem has_fderiv_within_at.star + theorem has_strict_fderiv_at.star Modified src/topology/algebra/module/star.lean + def starL' 2023-05-23 08:35:45 c0d694d feat(probability/kernel/integral_comp_prod): Bochner integral against the composition-product of two kernels (#18976) ESTIMATED CHANGES Modified src/probability/kernel/composition.lean + theorem probability_theory.kernel.ae_ae_of_ae_comp_prod + theorem probability_theory.kernel.ae_kernel_lt_top + theorem probability_theory.kernel.ae_null_of_comp_prod_null + theorem probability_theory.kernel.comp_prod_null + theorem probability_theory.kernel.comp_prod_restrict + theorem probability_theory.kernel.comp_prod_restrict_left + theorem probability_theory.kernel.comp_prod_restrict_right + theorem probability_theory.kernel.le_comp_prod_apply + theorem probability_theory.kernel.lintegral_comp_prod₀ + theorem probability_theory.kernel.set_lintegral_comp_prod + theorem probability_theory.kernel.set_lintegral_comp_prod_univ_left + theorem probability_theory.kernel.set_lintegral_comp_prod_univ_right Added src/probability/kernel/integral_comp_prod.lean + theorem measure_theory.ae_strongly_measurable.comp_prod_mk_left + theorem measure_theory.ae_strongly_measurable.integral_kernel_comp_prod + theorem measure_theory.integrable.comp_prod_mk_left_ae + theorem measure_theory.integrable.integral_comp_prod + theorem measure_theory.integrable.integral_norm_comp_prod + theorem probability_theory.has_finite_integral_comp_prod_iff' + theorem probability_theory.has_finite_integral_comp_prod_iff + theorem probability_theory.has_finite_integral_prod_mk_left + theorem probability_theory.integrable_comp_prod_iff + theorem probability_theory.integrable_kernel_prod_mk_left + theorem probability_theory.integral_comp_prod + theorem probability_theory.kernel.continuous_integral_integral + theorem probability_theory.kernel.integral_fn_integral_add + theorem probability_theory.kernel.integral_fn_integral_sub + theorem probability_theory.kernel.integral_integral_add' + theorem probability_theory.kernel.integral_integral_add + theorem probability_theory.kernel.integral_integral_sub' + theorem probability_theory.kernel.integral_integral_sub + theorem probability_theory.kernel.lintegral_fn_integral_sub + theorem probability_theory.set_integral_comp_prod + theorem probability_theory.set_integral_comp_prod_univ_left + theorem probability_theory.set_integral_comp_prod_univ_right Modified src/probability/kernel/with_density.lean + theorem probability_theory.kernel.integral_with_density 2023-05-23 05:24:35 05b93a5 feat: update to Lean 3.51.0 (#19060) This version: * Propagates goal tags through `unfreezingI` * Uses a more recent set of emscripten build tools It's hard to know whether this will break the web editor, other than just pushing and finding out. ESTIMATED CHANGES Modified leanpkg.toml 2023-05-23 04:16:26 cb9077f chore(scripts): update nolints.txt (#19065) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2023-05-23 01:09:14 38df578 chore(*): add mathlib4 synchronization comments (#19063) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebraic_card` * `algebra.category.GroupWithZero` * `algebra.category.Ring.instances` * `algebra.dual_quaternion` * `algebra.quaternion` * `algebra.quaternion_basis` * `analysis.calculus.fderiv.add` * `analysis.calculus.fderiv.comp` * `analysis.calculus.fderiv.equiv` * `analysis.calculus.fderiv.linear` * `analysis.calculus.fderiv.prod` * `analysis.calculus.fderiv.restrict_scalars` * `analysis.convex.between` * `analysis.convex.strict_convex_between` * `analysis.locally_convex.strong_topology` * `combinatorics.configuration` * `data.real.irrational` * `dynamics.ergodic.conservative` * `field_theory.minpoly.basic` * `field_theory.minpoly.field` * `group_theory.perm.cycle.concrete` * `linear_algebra.bilinear_form` * `linear_algebra.bilinear_form.tensor_product` * `linear_algebra.coevaluation` * `linear_algebra.contraction` * `linear_algebra.dual` * `linear_algebra.matrix.dual` * `measure_theory.constructions.borel_space.metrizable` * `measure_theory.covering.vitali` * `measure_theory.function.special_functions.is_R_or_C` * `measure_theory.integral.lebesgue_normed_space` * `measure_theory.integral.riesz_markov_kakutani` * `measure_theory.measure.content` * `measure_theory.measure.giry_monad` * `number_theory.legendre_symbol.zmod_char` * `number_theory.padics.padic_numbers` * `order.interval` * `ring_theory.algebraic` * `ring_theory.artinian` * `ring_theory.discrete_valuation_ring.basic` * `ring_theory.graded_algebra.radical` * `ring_theory.integral_closure` * `ring_theory.localization.as_subring` * `ring_theory.localization.away.basic` * `ring_theory.localization.cardinality` * `ring_theory.localization.localization_localization` * `ring_theory.power_series.basic` * `ring_theory.power_series.well_known` * `ring_theory.witt_vector.witt_polynomial` * `topology.metric_space.metrizable` * `topology.metric_space.thickened_indicator` * `topology.sheaves.punit` * `topology.urysohns_bounded` * `topology.vector_bundle.basic` * `topology.vector_bundle.constructions` ESTIMATED CHANGES Modified src/algebra/algebraic_card.lean Modified src/algebra/category/GroupWithZero.lean Modified src/algebra/category/Ring/instances.lean Modified src/algebra/dual_quaternion.lean Modified src/algebra/quaternion.lean Modified src/algebra/quaternion_basis.lean Modified src/analysis/calculus/fderiv/add.lean Modified src/analysis/calculus/fderiv/comp.lean Modified src/analysis/calculus/fderiv/equiv.lean Modified src/analysis/calculus/fderiv/linear.lean Modified src/analysis/calculus/fderiv/prod.lean Modified src/analysis/calculus/fderiv/restrict_scalars.lean Modified src/analysis/convex/between.lean Modified src/analysis/convex/strict_convex_between.lean Modified src/analysis/locally_convex/strong_topology.lean Modified src/combinatorics/configuration.lean Modified src/data/real/irrational.lean Modified src/dynamics/ergodic/conservative.lean Modified src/field_theory/minpoly/basic.lean Modified src/field_theory/minpoly/field.lean Modified src/group_theory/perm/cycle/concrete.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/bilinear_form/tensor_product.lean Modified src/linear_algebra/coevaluation.lean Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/matrix/dual.lean Modified src/measure_theory/constructions/borel_space/metrizable.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/function/special_functions/is_R_or_C.lean Modified src/measure_theory/integral/lebesgue_normed_space.lean Modified src/measure_theory/integral/riesz_markov_kakutani.lean Modified src/measure_theory/measure/content.lean Modified src/measure_theory/measure/giry_monad.lean Modified src/number_theory/legendre_symbol/zmod_char.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/order/interval.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/discrete_valuation_ring/basic.lean Modified src/ring_theory/graded_algebra/radical.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization/as_subring.lean Modified src/ring_theory/localization/away/basic.lean Modified src/ring_theory/localization/cardinality.lean Modified src/ring_theory/localization/localization_localization.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/power_series/well_known.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/topology/metric_space/metrizable.lean Modified src/topology/metric_space/thickened_indicator.lean Modified src/topology/sheaves/punit.lean Modified src/topology/urysohns_bounded.lean Modified src/topology/vector_bundle/basic.lean Modified src/topology/vector_bundle/constructions.lean 2023-05-22 22:49:48 6f8ab7d feat(combinatorics/set_family/compression/uv): UV-compressing reduces the size of the shadow (#13149) Prove `(∂ (𝓒 u v 𝒜)).card ≤ (∂ 𝒜).card`, which is key to Kruskal-Katona. ESTIMATED CHANGES Modified src/combinatorics/set_family/compression/uv.lean +/- theorem uv.card_compress +/- theorem uv.card_compression + theorem uv.card_shadow_compression_le + theorem uv.compress_of_disjoint_of_le' + theorem uv.compress_sdiff_sdiff + theorem uv.disjoint_of_mem_compression_of_not_mem + theorem uv.le_of_mem_compression_of_not_mem + theorem uv.shadow_compression_subset_compression_shadow + theorem uv.sup_sdiff_mem_of_mem_compression_of_not_mem 2023-05-22 17:11:56 75e7fca feat(analysis/calculus/mean_value): functions are equal if their derivatives and a point are equal (#19059) And the version for equality within a convex set. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean + theorem convex.eq_on_of_fderiv_within_eq + theorem eq_of_fderiv_eq 2023-05-22 14:39:43 55ec6e9 chore(analysis/special_functions/non_integrable): split (#19047) Split out a fairly niche special-functions lemma, reducing the dependencies of this file. This decreases by 5 the length of the path to the Cauchy integral formula. ESTIMATED CHANGES Modified src/analysis/special_functions/non_integrable.lean 2023-05-22 12:50:02 b353176 feat(field_theory/splitting_field): fix the diamond (#18857) This re-implements how instances for `splitting_field` in such a way that we can now avoid diamonds with the N, Z and Q-actions. This makes a lot more instances safe, which is good for e.g. flt-regular. Many thanks to @Vierkantor for many of the ideas and all the `distrib_smul` PRs that were needed for this. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean Modified src/number_theory/cyclotomic/basic.lean - def cyclotomic_field.algebra_base Modified src/number_theory/cyclotomic/rat.lean 2023-05-22 10:23:18 3b88f40 feat(probability/kernel/disintegration): disintegration of finite measures on product spaces (#18834) Disintegration of finite measures on `α × Ω`, where `Ω` is a standard Borel space. ESTIMATED CHANGES Modified src/measure_theory/constructions/prod/basic.lean + theorem measurable_embedding.prod_mk Modified src/probability/kernel/cond_cdf.lean + theorem probability_theory.measurable_measure_cond_cdf + theorem probability_theory.measure_cond_cdf_Iic + theorem probability_theory.measure_cond_cdf_univ Added src/probability/kernel/disintegration.lean + def measure_theory.measure.cond_kernel + theorem probability_theory.ae_cond_kernel_real_eq_one + theorem probability_theory.cond_kernel_def + def probability_theory.cond_kernel_real + theorem probability_theory.cond_kernel_real_Iic + theorem probability_theory.exists_cond_kernel + theorem probability_theory.kernel.const_eq_comp_prod + theorem probability_theory.kernel.const_eq_comp_prod_real + theorem probability_theory.kernel.const_unit_eq_comp_prod + theorem probability_theory.lintegral_cond_kernel + theorem probability_theory.lintegral_cond_kernel_mem + theorem probability_theory.lintegral_cond_kernel_real + theorem probability_theory.lintegral_cond_kernel_real_mem + theorem probability_theory.lintegral_cond_kernel_real_univ + theorem probability_theory.measure_eq_comp_prod + theorem probability_theory.measure_eq_comp_prod_real + theorem probability_theory.set_lintegral_cond_kernel_real_Iic + theorem probability_theory.set_lintegral_cond_kernel_real_prod + theorem probability_theory.set_lintegral_cond_kernel_real_univ 2023-05-22 08:06:10 13bce9a chore(linear_algebra/basis): `simp` lemmas about `basis.equiv_fun` (#19021) ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.basis_fun_equiv_fun Modified src/linear_algebra/basis.lean + theorem basis.equiv_fun_of_equiv_fun Modified src/linear_algebra/std_basis.lean + theorem pi.basis_fun_equiv_fun 2023-05-22 05:47:04 4280f5f chore(*): add mathlib4 synchronization comments (#19057) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.limits` * `algebra.category.Module.kernels` * `algebra.category.Mon.filtered_colimits` * `algebra.char_p.mixed_char_zero` * `algebraic_geometry.presheafed_space` * `algebraic_geometry.projective_spectrum.topology` * `analysis.calculus.fderiv.basic` * `analysis.normed_space.star.mul` * `analysis.special_functions.complex.circle` * `analysis.special_functions.pow.nnreal` * `linear_algebra.matrix.charpoly.basic` * `linear_algebra.matrix.charpoly.coeff` * `linear_algebra.matrix.charpoly.linear_map` * `measure_theory.constructions.borel_space.basic` * `measure_theory.constructions.borel_space.complex` * `measure_theory.constructions.borel_space.continuous_linear_map` * `measure_theory.constructions.polish` * `measure_theory.function.ae_measurable_order` * `measure_theory.function.ess_sup` * `measure_theory.function.floor` * `measure_theory.function.simple_func` * `measure_theory.function.simple_func_dense` * `measure_theory.function.special_functions.basic` * `measure_theory.integral.lebesgue` * `measure_theory.measure.regular` * `measure_theory.measure.stieltjes` * `number_theory.class_number.admissible_card_pow_degree` * `ring_theory.graded_algebra.homogeneous_ideal` * `ring_theory.graded_algebra.homogeneous_localization` * `ring_theory.ideal.minimal_prime` * `ring_theory.polynomial_algebra` * `topology.algebra.module.locally_convex` * `topology.continuous_function.bounded` * `topology.sheaves.sheaf_condition.sites` ESTIMATED CHANGES Modified src/algebra/category/Group/limits.lean Modified src/algebra/category/Module/kernels.lean Modified src/algebra/category/Mon/filtered_colimits.lean Modified src/algebra/char_p/mixed_char_zero.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/projective_spectrum/topology.lean Modified src/analysis/calculus/fderiv/basic.lean Modified src/analysis/normed_space/star/mul.lean Modified src/analysis/special_functions/complex/circle.lean Modified src/analysis/special_functions/pow/nnreal.lean Modified src/linear_algebra/matrix/charpoly/basic.lean Modified src/linear_algebra/matrix/charpoly/coeff.lean Modified src/linear_algebra/matrix/charpoly/linear_map.lean Modified src/measure_theory/constructions/borel_space/basic.lean Modified src/measure_theory/constructions/borel_space/complex.lean Modified src/measure_theory/constructions/borel_space/continuous_linear_map.lean Modified src/measure_theory/constructions/polish.lean Modified src/measure_theory/function/ae_measurable_order.lean Modified src/measure_theory/function/ess_sup.lean Modified src/measure_theory/function/floor.lean Modified src/measure_theory/function/simple_func.lean Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/function/special_functions/basic.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean Modified src/ring_theory/ideal/minimal_prime.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/topology/algebra/module/locally_convex.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/sheaves/sheaf_condition/sites.lean 2023-05-21 22:57:58 1d4d3ca feat(combinatorics/simple_graph): Szemerédi's Regularity Lemma (#11000) Prove (finally!) the equitable version of the Szemerédi Regularity Lemma. ESTIMATED CHANGES Added src/combinatorics/simple_graph/regularity/lemma.lean + theorem szemeredi_regularity 2023-05-21 20:10:14 b2c8989 chore(data/multiset/pi): correct names and reorder (#19050) * `multiset.pi_cons_injective` is about `multiset.pi.cons` so should have a `.` in its name. * `multiset.pi.cons_ext` is not an ext lemma, but more closely resembles eta-reduction. This also groups together the lemmas about `pi.cons`. ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean Modified src/data/finset/pi.lean + theorem finset.pi.cons_injective - theorem finset.pi_cons_injective Modified src/data/multiset/pi.lean + theorem multiset.pi.cons_eta - theorem multiset.pi.cons_ext + theorem multiset.pi.cons_injective - theorem multiset.pi_cons_injective 2023-05-21 06:27:02 1b0a28e chore(*): add mathlib4 synchronization comments (#19055) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.projective` * `algebra.monoid_algebra.to_direct_sum` * `analysis.convex.strict_convex_space` * `analysis.convex.uniform` * `analysis.normed_space.banach` * `analysis.normed_space.bounded_linear_maps` * `analysis.normed_space.complemented` * `analysis.normed_space.finite_dimension` * `analysis.normed_space.mazur_ulam` * `analysis.special_functions.log.base` * `analysis.special_functions.log.monotone` * `analysis.special_functions.pow.real` * `combinatorics.additive.salem_spencer` * `data.is_R_or_C.lemmas` * `linear_algebra.adic_completion` * `linear_algebra.cross_product` * `measure_theory.measure.doubling` * `ring_theory.graded_algebra.basic` * `ring_theory.mv_polynomial.homogeneous` * `ring_theory.valuation.extend_to_localization` * `topology.algebra.module.star` ESTIMATED CHANGES Modified src/algebra/category/Module/projective.lean Modified src/algebra/monoid_algebra/to_direct_sum.lean Modified src/analysis/convex/strict_convex_space.lean Modified src/analysis/convex/uniform.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/complemented.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/special_functions/log/base.lean Modified src/analysis/special_functions/log/monotone.lean Modified src/analysis/special_functions/pow/real.lean Modified src/combinatorics/additive/salem_spencer.lean Modified src/data/is_R_or_C/lemmas.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/cross_product.lean Modified src/measure_theory/measure/doubling.lean Modified src/ring_theory/graded_algebra/basic.lean Modified src/ring_theory/mv_polynomial/homogeneous.lean Modified src/ring_theory/valuation/extend_to_localization.lean Modified src/topology/algebra/module/star.lean 2023-05-20 19:07:20 33c67ae chore(*): add mathlib4 synchronization comments (#19042) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Mon.limits` * `algebra.char_p.local_ring` * `algebra.direct_sum.decomposition` * `algebra.direct_sum.internal` * `algebra.module.bimodule` * `algebraic_topology.fundamental_groupoid.fundamental_group` * `algebraic_topology.fundamental_groupoid.punit` * `analysis.complex.operator_norm` * `analysis.normed_space.affine_isometry` * `analysis.normed_space.banach_steinhaus` * `analysis.normed_space.completion` * `analysis.normed_space.extend` * `analysis.normed_space.multilinear` * `analysis.special_functions.complex.arg` * `analysis.special_functions.complex.log` * `analysis.special_functions.pow.complex` * `category_theory.bicategory.free` * `category_theory.groupoid.free_groupoid` * `category_theory.monoidal.free.coherence` * `category_theory.monoidal.of_chosen_finite_products.basic` * `category_theory.monoidal.types.basic` * `data.matrix.kronecker` * `data.nat.factorial.double_factorial` * `data.polynomial.expand` * `linear_algebra.matrix.is_diag` * `linear_algebra.tensor_product.matrix` * `linear_algebra.unitary_group` * `number_theory.legendre_symbol.mul_character` * `number_theory.multiplicity` * `ring_theory.finite_presentation` * `ring_theory.ideal.local_ring` * `ring_theory.jacobson_ideal` * `ring_theory.localization.at_prime` * `ring_theory.matrix_algebra` * `ring_theory.nakayama` * `set_theory.game.pgame` * `topology.category.TopCommRing` * `topology.fiber_bundle.constructions` * `topology.sheaves.limits` * `topology.sheaves.presheaf` * `topology.sheaves.presheaf_of_functions` * `topology.sheaves.sheaf` ESTIMATED CHANGES Modified src/algebra/category/Mon/limits.lean Modified src/algebra/char_p/local_ring.lean Modified src/algebra/direct_sum/decomposition.lean Modified src/algebra/direct_sum/internal.lean Modified src/algebra/module/bimodule.lean Modified src/algebraic_topology/fundamental_groupoid/fundamental_group.lean Modified src/algebraic_topology/fundamental_groupoid/punit.lean Modified src/analysis/complex/operator_norm.lean Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/completion.lean Modified src/analysis/normed_space/extend.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/complex/arg.lean Modified src/analysis/special_functions/complex/log.lean Modified src/analysis/special_functions/pow/complex.lean Modified src/category_theory/bicategory/free.lean Modified src/category_theory/groupoid/free_groupoid.lean Modified src/category_theory/monoidal/free/coherence.lean Modified src/category_theory/monoidal/of_chosen_finite_products/basic.lean Modified src/category_theory/monoidal/types/basic.lean Modified src/data/matrix/kronecker.lean Modified src/data/nat/factorial/double_factorial.lean Modified src/data/polynomial/expand.lean Modified src/linear_algebra/matrix/is_diag.lean Modified src/linear_algebra/tensor_product/matrix.lean Modified src/linear_algebra/unitary_group.lean Modified src/number_theory/legendre_symbol/mul_character.lean Modified src/number_theory/multiplicity.lean Modified src/ring_theory/finite_presentation.lean Modified src/ring_theory/ideal/local_ring.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization/at_prime.lean Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/nakayama.lean Modified src/set_theory/game/pgame.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/fiber_bundle/constructions.lean Modified src/topology/sheaves/limits.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/presheaf_of_functions.lean Modified src/topology/sheaves/sheaf.lean 2023-05-20 16:28:32 b9e46fe refactor(topology): fix definition of residual (#18962) The current definition of `residual` in mathlib is incorrect for non-Baire spaces. This fixes it. ESTIMATED CHANGES Modified src/order/filter/countable_Inter.lean + def filter.countable_generate + theorem filter.countable_generate_is_greatest + inductive filter.countable_generate_sets + theorem filter.le_countable_generate_iff_of_countable_Inter_filter + theorem filter.mem_countable_generate_iff Modified src/topology/G_delta.lean + theorem mem_residual_iff + theorem residual_of_dense_Gδ + theorem residual_of_dense_open Modified src/topology/metric_space/baire.lean +/- theorem dense_of_mem_residual 2023-05-20 10:41:26 9b33e5f feat(measure_theory/function/l1_space): generalize from fields to rings (#19052) ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.has_finite_integral.const_mul +/- theorem measure_theory.has_finite_integral.mul_const + theorem measure_theory.has_finite_integral.smul' +/- theorem measure_theory.has_finite_integral.smul +/- theorem measure_theory.has_finite_integral_smul_iff + theorem measure_theory.integrable_const_mul_iff + theorem measure_theory.integrable_mul_const_iff 2023-05-19 22:52:50 bf7ef0e feat(combinatorics/simple_graph/regularity): Increment partition (#19051) Define the increment partition and prove its two crucial properties: * It has size depending only on the size of the original partition * It increases the energy by a fixed amount This is all internal to the proof of SRL, so I made most lemmas `private`. ESTIMATED CHANGES Modified docs/references.bib Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/combinatorics/simple_graph/regularity/chunk.lean Modified src/combinatorics/simple_graph/regularity/energy.lean + theorem finpartition.coe_energy Modified src/combinatorics/simple_graph/regularity/equitabilise.lean Added src/combinatorics/simple_graph/regularity/increment.lean + theorem szemeredi_regularity.card_increment + theorem szemeredi_regularity.energy_increment + theorem szemeredi_regularity.increment_is_equipartition + theorem szemeredi_regularity.off_diag_pairs_le_increment_energy + theorem szemeredi_regularity.pair_contrib_lower_bound + theorem szemeredi_regularity.uniform_add_nonuniform_eq_off_diag_pairs Modified src/combinatorics/simple_graph/regularity/uniform.lean 2023-05-19 16:48:34 f51de87 feat(combinatorics/simple_graph/regularity/chunk): Partition of a part (#18371) The heart of the calculation of Szemerédi Regularity Lemma. Define the partition of a part of the original partition and show it locally increases the energy. This is all internal to the proof of SRL, so I made most lemmas `private` ESTIMATED CHANGES Added src/combinatorics/simple_graph/regularity/chunk.lean + theorem szemeredi_regularity.bUnion_star_subset_nonuniform_witness + theorem szemeredi_regularity.card_bUnion_star_le_m_add_one_card_star_mul + theorem szemeredi_regularity.card_chunk + theorem szemeredi_regularity.card_eq_of_mem_parts_chunk + theorem szemeredi_regularity.card_le_m_add_one_of_mem_chunk_parts + theorem szemeredi_regularity.edge_density_chunk_not_uniform + theorem szemeredi_regularity.edge_density_chunk_uniform + theorem szemeredi_regularity.m_le_card_of_mem_chunk_parts + theorem szemeredi_regularity.star_subset_chunk Modified src/combinatorics/simple_graph/regularity/uniform.lean + theorem simple_graph.le_card_nonuniform_witness - theorem simple_graph.nonuniform_witness_card_le 2023-05-19 13:16:24 ef7403f chore(.github/workflows): don't rely on linkifier in maintainer merge messages (#19046) Not tested, and I'm just guessing that the relevant properties exist as I can't find the relevant API docs... ESTIMATED CHANGES Modified .github/workflows/maintainer_merge_comment.yml Modified .github/workflows/maintainer_merge_review.yml Modified .github/workflows/maintainer_merge_review_comment.yml 2023-05-19 13:16:23 a7c017d chore(ring_theory/localization/away): split (#19041) This breaks off a large initial segment of the [longest chain](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/port.20progress/near/359494005) remaining to port. ESTIMATED CHANGES Modified src/algebra/category/Ring/instances.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/local_properties.lean Added src/ring_theory/localization/away/adjoin_root.lean + theorem is_localization.adjoin_inv + theorem is_localization.away.finite_presentation Renamed src/ring_theory/localization/away.lean to src/ring_theory/localization/away/basic.lean - theorem is_localization.adjoin_inv - theorem is_localization.away.finite_presentation Modified src/ring_theory/ring_hom/integral.lean Modified src/ring_theory/ring_hom_properties.lean 2023-05-19 12:01:13 915591b chore(analysis/convex/cone/basic): split (#19043) Split out the inner product space material (the dual cone) from `analysis/convex/cone/basic`. What's left imports almost nothing, and can probably be ported immediately. ESTIMATED CHANGES Modified src/analysis/convex/cone/basic.lean - theorem convex_cone.hyperplane_separation_of_nonempty_of_is_closed_of_nmem - theorem convex_cone.inner_dual_cone_of_inner_dual_cone_eq_self - theorem convex_cone.pointed_of_nonempty_of_is_closed - theorem inner_dual_cone_Union - theorem inner_dual_cone_empty - theorem inner_dual_cone_eq_Inter_inner_dual_cone_singleton - theorem inner_dual_cone_insert - theorem inner_dual_cone_le_inner_dual_cone - theorem inner_dual_cone_sUnion - theorem inner_dual_cone_singleton - theorem inner_dual_cone_union - theorem inner_dual_cone_univ - theorem inner_dual_cone_zero - theorem is_closed_inner_dual_cone - theorem mem_inner_dual_cone - theorem pointed_inner_dual_cone - def set.inner_dual_cone Added src/analysis/convex/cone/dual.lean + theorem convex_cone.hyperplane_separation_of_nonempty_of_is_closed_of_nmem + theorem convex_cone.inner_dual_cone_of_inner_dual_cone_eq_self + theorem convex_cone.pointed_of_nonempty_of_is_closed + theorem inner_dual_cone_Union + theorem inner_dual_cone_empty + theorem inner_dual_cone_eq_Inter_inner_dual_cone_singleton + theorem inner_dual_cone_insert + theorem inner_dual_cone_le_inner_dual_cone + theorem inner_dual_cone_sUnion + theorem inner_dual_cone_singleton + theorem inner_dual_cone_union + theorem inner_dual_cone_univ + theorem inner_dual_cone_zero + theorem is_closed_inner_dual_cone + theorem mem_inner_dual_cone + theorem pointed_inner_dual_cone + def set.inner_dual_cone Modified src/analysis/convex/cone/proper.lean Modified src/analysis/normed_space/hahn_banach/extension.lean Modified src/analysis/normed_space/hahn_banach/separation.lean Modified src/measure_theory/function/ae_eq_of_integral.lean 2023-05-19 07:37:42 7ae139f feat(linear_algebra/matrix/charpoly/minpoly): `minpoly` is unaffected by `to_lin` and `to_matrix` (#19036) ESTIMATED CHANGES Modified src/linear_algebra/matrix/charpoly/minpoly.lean + theorem linear_map.minpoly_to_matrix' + theorem linear_map.minpoly_to_matrix + theorem matrix.minpoly_to_lin' + theorem matrix.minpoly_to_lin 2023-05-18 23:40:24 fd5edc4 chore(measure_theory/{constructions/prod,measure/lebesgue}): split (#19039) Reorganize some files in measure theory, with the goal of removing the dependence of Lebesgue measure on the Bochner integral. `measure_theory/constructions/prod` is split into `prod/basic` and `prod/integral`; the former imports the Lebesgue integral but not the Bochner integral. `measure_theory/measure/haar` is renamed `measure_theory/measure/haar/basic`. `measure_theory/measure/haar_of_inner` is renamed `measure_theory/measure/haar/inner_product_space`. `measure_theory/measure/haar_of_basis` is renamed `measure_theory/measure/haar/of_basis`. `measure_theory/measure/lebesgue` is split into `measure_theory/measure/lebesgue/basic` and `measure_theory/measure/lebesgue/integral`, with the former not importing the Bochner integral. `measure_theory/measure/complex_lebesgue` is renamed `measure_theory/measure/lebesgue/complex`. `measure_theory/measure/haar_lebesgue` is split into `measure_theory/measure/lebesgue/eq_haar` and `measure_theory/measure/haar/normed_space`, with the former not importing the Bochner integral. A few lemmas about Haar measure in normed spaces or fields are also moved from `measure_theory/group/measure` to the newly-created `measure_theory/measure/haar/normed_space`, since the former no longer imports `normed_space`. ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified counterexamples/phillips.lean Modified src/analysis/box_integral/integrability.lean Modified src/analysis/box_integral/partition/measure.lean Modified src/analysis/calculus/bump_function_findim.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/convex/measure.lean Modified src/analysis/convolution.lean Modified src/analysis/fourier/fourier_transform.lean Modified src/analysis/fourier/poisson_summation.lean Modified src/analysis/fourier/riemann_lebesgue_lemma.lean Modified src/analysis/special_functions/improper_integrals.lean Modified src/analysis/special_functions/japanese_bracket.lean Modified src/measure_theory/constructions/pi.lean Renamed src/measure_theory/constructions/prod.lean to src/measure_theory/constructions/prod/basic.lean - theorem measurable_set_integrable - theorem measure_theory.ae_strongly_measurable.fst - theorem measure_theory.ae_strongly_measurable.integral_prod_right' - theorem measure_theory.ae_strongly_measurable.prod_mk_left - theorem measure_theory.ae_strongly_measurable.prod_swap - theorem measure_theory.ae_strongly_measurable.snd - theorem measure_theory.continuous_integral_integral - theorem measure_theory.has_finite_integral_prod_iff' - theorem measure_theory.has_finite_integral_prod_iff - theorem measure_theory.integrable.integral_norm_prod_left - theorem measure_theory.integrable.integral_norm_prod_right - theorem measure_theory.integrable.integral_prod_left - theorem measure_theory.integrable.integral_prod_right - theorem measure_theory.integrable.prod_left_ae - theorem measure_theory.integrable.prod_right_ae - theorem measure_theory.integrable.swap - theorem measure_theory.integrable_prod_iff' - theorem measure_theory.integrable_prod_iff - theorem measure_theory.integrable_prod_mul - theorem measure_theory.integrable_swap_iff - theorem measure_theory.integral_fn_integral_add - theorem measure_theory.integral_fn_integral_sub - theorem measure_theory.integral_integral - theorem measure_theory.integral_integral_add' - theorem measure_theory.integral_integral_add - theorem measure_theory.integral_integral_sub' - theorem measure_theory.integral_integral_sub - theorem measure_theory.integral_integral_swap - theorem measure_theory.integral_integral_symm - theorem measure_theory.integral_prod - theorem measure_theory.integral_prod_mul - theorem measure_theory.integral_prod_swap - theorem measure_theory.integral_prod_symm - theorem measure_theory.lintegral_fn_integral_sub - theorem measure_theory.measure.integrable_measure_prod_mk_left - theorem measure_theory.set_integral_prod - theorem measure_theory.set_integral_prod_mul - theorem measure_theory.strongly_measurable.integral_prod_left' - theorem measure_theory.strongly_measurable.integral_prod_left - theorem measure_theory.strongly_measurable.integral_prod_right' - theorem measure_theory.strongly_measurable.integral_prod_right Added src/measure_theory/constructions/prod/integral.lean + theorem measurable_set_integrable + theorem measure_theory.ae_strongly_measurable.fst + theorem measure_theory.ae_strongly_measurable.integral_prod_right' + theorem measure_theory.ae_strongly_measurable.prod_mk_left + theorem measure_theory.ae_strongly_measurable.prod_swap + theorem measure_theory.ae_strongly_measurable.snd + theorem measure_theory.continuous_integral_integral + theorem measure_theory.has_finite_integral_prod_iff' + theorem measure_theory.has_finite_integral_prod_iff + theorem measure_theory.integrable.integral_norm_prod_left + theorem measure_theory.integrable.integral_norm_prod_right + theorem measure_theory.integrable.integral_prod_left + theorem measure_theory.integrable.integral_prod_right + theorem measure_theory.integrable.prod_left_ae + theorem measure_theory.integrable.prod_right_ae + theorem measure_theory.integrable.swap + theorem measure_theory.integrable_prod_iff' + theorem measure_theory.integrable_prod_iff + theorem measure_theory.integrable_prod_mul + theorem measure_theory.integrable_swap_iff + theorem measure_theory.integral_fn_integral_add + theorem measure_theory.integral_fn_integral_sub + theorem measure_theory.integral_integral + theorem measure_theory.integral_integral_add' + theorem measure_theory.integral_integral_add + theorem measure_theory.integral_integral_sub' + theorem measure_theory.integral_integral_sub + theorem measure_theory.integral_integral_swap + theorem measure_theory.integral_integral_symm + theorem measure_theory.integral_prod + theorem measure_theory.integral_prod_mul + theorem measure_theory.integral_prod_swap + theorem measure_theory.integral_prod_symm + theorem measure_theory.lintegral_fn_integral_sub + theorem measure_theory.measure.integrable_measure_prod_mk_left + theorem measure_theory.set_integral_prod + theorem measure_theory.set_integral_prod_mul + theorem measure_theory.strongly_measurable.integral_prod_left' + theorem measure_theory.strongly_measurable.integral_prod_left + theorem measure_theory.strongly_measurable.integral_prod_right' + theorem measure_theory.strongly_measurable.integral_prod_right Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/covering/one_dim.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/group/geometry_of_numbers.lean Modified src/measure_theory/group/measure.lean Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/integral/torus_integral.lean Renamed src/measure_theory/measure/haar.lean to src/measure_theory/measure/haar/basic.lean Renamed src/measure_theory/measure/haar_of_inner.lean to src/measure_theory/measure/haar/inner_product_space.lean Added src/measure_theory/measure/haar/normed_space.lean + theorem measure_theory.measure.integral_comp_inv_smul + theorem measure_theory.measure.integral_comp_inv_smul_of_nonneg + theorem measure_theory.measure.integral_comp_smul + theorem measure_theory.measure.integral_comp_smul_of_nonneg Renamed src/measure_theory/measure/haar_of_basis.lean to src/measure_theory/measure/haar/of_basis.lean Renamed src/measure_theory/measure/haar_quotient.lean to src/measure_theory/measure/haar/quotient.lean Modified src/measure_theory/measure/hausdorff.lean Renamed src/measure_theory/measure/lebesgue.lean to src/measure_theory/measure/lebesgue/basic.lean - theorem integral_comp_neg_Iic - theorem integral_comp_neg_Ioi - theorem real.integrable_of_summable_norm_Icc - theorem volume_region_between_eq_integral' - theorem volume_region_between_eq_integral Renamed src/measure_theory/measure/complex_lebesgue.lean to src/measure_theory/measure/lebesgue/complex.lean Renamed src/measure_theory/measure/haar_lebesgue.lean to src/measure_theory/measure/lebesgue/eq_haar.lean - theorem measure_theory.measure.integral_comp_inv_smul - theorem measure_theory.measure.integral_comp_inv_smul_of_nonneg - theorem measure_theory.measure.integral_comp_smul - theorem measure_theory.measure.integral_comp_smul_of_nonneg Added src/measure_theory/measure/lebesgue/integral.lean + theorem integral_comp_neg_Iic + theorem integral_comp_neg_Ioi + theorem real.integrable_of_summable_norm_Icc + theorem volume_region_between_eq_integral' + theorem volume_region_between_eq_integral Modified src/measure_theory/measure/portmanteau.lean Modified src/number_theory/liouville/measure.lean Modified src/probability/density.lean Modified src/probability/kernel/basic.lean Modified test/monotonicity.lean 2023-05-18 23:40:22 aa66698 feat(topology/algebra/module/star): continuity results for star_modules (#19037) Notably this adds `starL`. This also fixes some unnecessary typeclass arguments in `star_linear_equiv`. ESTIMATED CHANGES Modified src/algebra/star/module.lean Modified src/analysis/normed_space/star/basic.lean + theorem starₗᵢ_to_continuous_linear_equiv Added src/topology/algebra/module/star.lean + theorem continuous_decompose_prod_adjoint + theorem continuous_decompose_prod_adjoint_symm + theorem continuous_self_adjoint_part + theorem continuous_skew_adjoint_part + def self_adjoint_partL + def skew_adjoint_partL + def starL + def star_module.decompose_prod_adjointL 2023-05-18 22:00:43 83a66c8 chore(measure_theory/special_functions/basic): split (#19040) Split out the facts about `is_R_or_C` from `measure_theory/function/special_functions/basic` (a foundational file, imported by the Bochner integral construction). These facts are heavier-weight than one would expect because the fact that an `is_R_or_C` field is a proper space currently passes through the corresponding fact for a general finite-dimensional normed space. ESTIMATED CHANGES Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/special_functions/basic.lean - theorem ae_measurable.im - theorem ae_measurable.re - theorem ae_measurable_of_re_im - theorem is_R_or_C.measurable_im - theorem is_R_or_C.measurable_of_real - theorem is_R_or_C.measurable_re - theorem measurable.im - theorem measurable.re - theorem measurable_of_re_im Added src/measure_theory/function/special_functions/is_R_or_C.lean + theorem ae_measurable.im + theorem ae_measurable.re + theorem ae_measurable_of_re_im + theorem is_R_or_C.measurable_im + theorem is_R_or_C.measurable_of_real + theorem is_R_or_C.measurable_re + theorem measurable.im + theorem measurable.re + theorem measurable_of_re_im 2023-05-18 17:57:59 95a8761 chore(category_theory/monoidal/types): split file (#19035) ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Modified src/category_theory/enriched/basic.lean Modified src/category_theory/monoidal/internal/types.lean Renamed src/category_theory/monoidal/of_chosen_finite_products.lean to src/category_theory/monoidal/of_chosen_finite_products/basic.lean - theorem category_theory.monoidal_of_chosen_finite_products.braiding_naturality - theorem category_theory.monoidal_of_chosen_finite_products.hexagon_forward - theorem category_theory.monoidal_of_chosen_finite_products.hexagon_reverse - theorem category_theory.monoidal_of_chosen_finite_products.symmetry - def category_theory.symmetric_of_chosen_finite_products Added src/category_theory/monoidal/of_chosen_finite_products/symmetric.lean + theorem category_theory.monoidal_of_chosen_finite_products.braiding_naturality + theorem category_theory.monoidal_of_chosen_finite_products.hexagon_forward + theorem category_theory.monoidal_of_chosen_finite_products.hexagon_reverse + theorem category_theory.monoidal_of_chosen_finite_products.symmetry + def category_theory.symmetric_of_chosen_finite_products Renamed src/category_theory/monoidal/types.lean to src/category_theory/monoidal/types/basic.lean - theorem category_theory.braiding_hom_apply - theorem category_theory.braiding_inv_apply - def category_theory.coyoneda_tensor_unit Added src/category_theory/monoidal/types/coyoneda.lean + def category_theory.coyoneda_tensor_unit Added src/category_theory/monoidal/types/symmetric.lean + theorem category_theory.braiding_hom_apply + theorem category_theory.braiding_inv_apply Modified src/representation_theory/Action.lean 2023-05-18 17:57:58 74403a3 chore(algebra/category/Module/monoidal): split file (#19034) ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Renamed src/algebra/category/Module/monoidal.lean to src/algebra/category/Module/monoidal/basic.lean - def Module.braiding - theorem Module.braiding_naturality - theorem Module.hexagon_forward - theorem Module.hexagon_reverse - theorem Module.ihom_coev_app - theorem Module.ihom_ev_app - theorem Module.ihom_map_apply - theorem Module.monoidal_category.braiding_hom_apply - theorem Module.monoidal_category.braiding_inv_apply - theorem Module.monoidal_closed_curry - def Module.monoidal_closed_hom_equiv - theorem Module.monoidal_closed_pre_app - theorem Module.monoidal_closed_uncurry Added src/algebra/category/Module/monoidal/closed.lean + theorem Module.ihom_coev_app + theorem Module.ihom_ev_app + theorem Module.ihom_map_apply + theorem Module.monoidal_closed_curry + def Module.monoidal_closed_hom_equiv + theorem Module.monoidal_closed_pre_app + theorem Module.monoidal_closed_uncurry Added src/algebra/category/Module/monoidal/symmetric.lean + def Module.braiding + theorem Module.monoidal_category.braiding_hom_apply + theorem Module.monoidal_category.braiding_inv_apply + theorem Module.monoidal_category.braiding_naturality + theorem Module.monoidal_category.hexagon_forward + theorem Module.monoidal_category.hexagon_reverse Modified src/algebra/category/fgModule/basic.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/representation_theory/Rep.lean 2023-05-18 15:19:24 5a4ea84 chore(data/set/Union_lift) generalize Union_lift to Sort (#19033) ESTIMATED CHANGES Modified src/data/set/Union_lift.lean 2023-05-18 13:54:34 8f9fea0 refactor(analysis/convex/specific_functions): split (#19031) Split `analysis/convex/specific_function` into a part which doesn't require differentiation (as of #19026) and a part which does. This removes the dependence of `measure_theory/integral/bochner` on differentiation, and decreases by 11 the length of the longest path in mathlib. See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Shortcut.20to.20integration) ESTIMATED CHANGES Modified src/analysis/calculus/bump_function_inner.lean Modified src/analysis/calculus/monotone.lean Modified src/analysis/calculus/parametric_integral.lean Renamed src/analysis/convex/specific_functions.lean to src/analysis/convex/specific_functions/basic.lean - theorem deriv2_sqrt_mul_log - theorem deriv_sqrt_mul_log' - theorem deriv_sqrt_mul_log - theorem even.strict_convex_on_pow - theorem finset.prod_nonneg_of_card_nonpos_even - theorem has_deriv_at_sqrt_mul_log - theorem int_prod_range_nonneg - theorem int_prod_range_pos - theorem nnreal.pow_sum_div_card_le_sum_pow - theorem real.pow_sum_div_card_le_sum_pow - theorem strict_concave_on_cos_Icc - theorem strict_concave_on_sin_Icc - theorem strict_concave_on_sqrt_mul_log_Ioi - theorem strict_convex_on_pow - theorem strict_convex_on_zpow Added src/analysis/convex/specific_functions/deriv.lean + theorem deriv2_sqrt_mul_log + theorem deriv_sqrt_mul_log' + theorem deriv_sqrt_mul_log + theorem even.strict_convex_on_pow + theorem finset.prod_nonneg_of_card_nonpos_even + theorem has_deriv_at_sqrt_mul_log + theorem int_prod_range_nonneg + theorem int_prod_range_pos + theorem strict_concave_on_cos_Icc + theorem strict_concave_on_sin_Icc + theorem strict_concave_on_sqrt_mul_log_Ioi + theorem strict_convex_on_pow + theorem strict_convex_on_zpow Modified src/analysis/fourier/add_circle.lean Modified src/analysis/fourier/fourier_transform.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/mean_inequalities_pow.lean + theorem nnreal.pow_sum_div_card_le_sum_pow + theorem real.pow_sum_div_card_le_sum_pow Modified src/analysis/normed_space/lp_space.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/analysis/special_functions/polar_coord.lean Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/number_theory/bertrand.lean Modified src/topology/metric_space/hausdorff_dimension.lean 2023-05-18 09:13:10 df0098f feat(field_theory/minpoly/basic): `minpoly` is unaffected by injective `alg_hom`s (#19030) ESTIMATED CHANGES Modified src/field_theory/minpoly/basic.lean + theorem minpoly.minpoly_alg_equiv + theorem minpoly.minpoly_alg_hom 2023-05-18 07:01:17 50251fd chore(*): add mathlib4 synchronization comments (#19032) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.direct_sum.algebra` * `algebra.direct_sum.ring` * `algebra.homology.opposite` * `algebra.homology.quasi_iso` * `algebraic_topology.fundamental_groupoid.basic` * `analysis.box_integral.partition.subbox_induction` * `analysis.complex.circle` * `analysis.normed_space.is_R_or_C` * `analysis.normed_space.operator_norm` * `analysis.special_functions.trigonometric.angle` * `analysis.special_functions.trigonometric.basic` * `analysis.special_functions.trigonometric.inverse` * `category_theory.limits.constructions.over.products` * `category_theory.preadditive.endo_functor` * `combinatorics.simple_graph.ends.properties` * `combinatorics.simple_graph.finsubgraph` * `linear_algebra.multilinear.finite_dimensional` * `ring_theory.free_comm_ring` * `ring_theory.polynomial.quotient` * `ring_theory.tensor_product` * `topology.algebra.module.finite_dimension` * `topology.metric_space.partition_of_unity` ESTIMATED CHANGES Modified src/algebra/direct_sum/algebra.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/homology/opposite.lean Modified src/algebra/homology/quasi_iso.lean Modified src/algebraic_topology/fundamental_groupoid/basic.lean Modified src/analysis/box_integral/partition/subbox_induction.lean Modified src/analysis/complex/circle.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/analysis/special_functions/trigonometric/inverse.lean Modified src/category_theory/limits/constructions/over/products.lean Modified src/category_theory/preadditive/endo_functor.lean Modified src/combinatorics/simple_graph/ends/properties.lean Modified src/combinatorics/simple_graph/finsubgraph.lean Modified src/linear_algebra/multilinear/finite_dimensional.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/polynomial/quotient.lean Modified src/ring_theory/tensor_product.lean Modified src/topology/algebra/module/finite_dimension.lean Modified src/topology/metric_space/partition_of_unity.lean 2023-05-18 07:01:16 c720ca1 chore(number_theory/modular_forms): don't define jacobi_theta on subtype (#19029) In a previous PR, the Jacobi theta function was defined on the subtype `ℍ` of `ℂ` and this is slightly annoying to work with. This PR tweaks it to be a function on `ℂ` (whose values outside `ℍ` are uninteresting, but well-defined). Split off from #19027. ESTIMATED CHANGES Modified src/number_theory/modular_forms/jacobi_theta.lean + theorem continuous_at_jacobi_theta - theorem continuous_jacobi_theta + theorem differentiable_at_jacobi_theta - theorem differentiable_at_tsum_exp_mul_sq +/- theorem has_sum_nat_jacobi_theta +/- theorem jacobi_theta_T_sq_smul +/- theorem jacobi_theta_eq_tsum_nat + theorem jacobi_theta_two_add - theorem jacobi_theta_two_vadd +/- theorem mdifferentiable_jacobi_theta +/- theorem norm_jacobi_theta_sub_one_le 2023-05-18 07:01:15 56b71f0 feat(algebra/category/Module/change_of_rings): coextension of scalars (#15958) ESTIMATED CHANGES Modified src/algebra/category/Module/change_of_rings.lean + def category_theory.Module.coextend_scalars.map' + theorem category_theory.Module.coextend_scalars.map_apply + def category_theory.Module.coextend_scalars.obj' + theorem category_theory.Module.coextend_scalars.smul_apply' + theorem category_theory.Module.coextend_scalars.smul_apply + def category_theory.Module.coextend_scalars + def category_theory.Module.restrict_coextend_scalars_adj + def category_theory.Module.restriction_coextension_adj.hom_equiv.from_restriction + def category_theory.Module.restriction_coextension_adj.hom_equiv.to_restriction 2023-05-18 05:56:34 7daeaf3 feat(nat/factorial): add double factorials (#18994) Add double factorials. ESTIMATED CHANGES Added src/data/nat/factorial/double_factorial.lean + def nat.double_factorial + theorem nat.double_factorial_add_one + theorem nat.double_factorial_add_two + theorem nat.double_factorial_eq_prod_even + theorem nat.double_factorial_eq_prod_odd + theorem nat.double_factorial_two_mul + theorem nat.factorial_eq_mul_double_factorial 2023-05-17 22:36:20 a8b2226 feat(analysis/convex/specific_functions): elementary convexity proofs (#19026) Give elementary proofs for the convexity of `pow`, `zpow`, `exp`, `log` and `rpow`, avoiding the second derivative test. See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Shortcut.20to.20integration) ESTIMATED CHANGES Modified src/analysis/convex/slope.lean + theorem convex_on.secant_mono + theorem convex_on.secant_mono_aux1 + theorem convex_on.secant_mono_aux2 + theorem convex_on.secant_mono_aux3 + theorem strict_concave_on.secant_strict_mono + theorem strict_convex_on.secant_strict_mono + theorem strict_convex_on.secant_strict_mono_aux1 + theorem strict_convex_on.secant_strict_mono_aux2 + theorem strict_convex_on.secant_strict_mono_aux3 Modified src/analysis/convex/specific_functions.lean +/- theorem convex_on_zpow + theorem one_add_mul_self_le_rpow_one_add + theorem one_add_mul_self_lt_rpow_one_add Modified src/analysis/special_functions/log/basic.lean + theorem real.log_lt_sub_one_of_pos Modified src/data/complex/exponential.lean - theorem real.add_one_le_exp_of_nonpos + theorem real.add_one_lt_exp_of_neg + theorem real.add_one_lt_exp_of_nonzero + theorem real.add_one_lt_exp_of_pos + theorem real.exp_bound_div_one_sub_of_interval' - theorem real.exp_bound_div_one_sub_of_interval_approx + theorem real.one_sub_le_exp_minus_of_nonneg - theorem real.one_sub_le_exp_minus_of_pos + theorem real.one_sub_lt_exp_minus_of_pos + theorem real.quadratic_le_exp_of_nonneg + theorem real.sum_le_exp_of_nonneg 2023-05-17 16:46:30 c89fe2d feat(geometry/manifold/vector_bundle/hom): the hom bundle is smooth (#18828) * From the sphere eversion project ESTIMATED CHANGES Modified src/geometry/manifold/vector_bundle/basic.lean + theorem vector_prebundle.mk_smooth_coord_change + theorem vector_prebundle.smooth_coord_change_apply + theorem vector_prebundle.smooth_on_smooth_coord_change + theorem vector_prebundle.smooth_vector_bundle Added src/geometry/manifold/vector_bundle/hom.lean + theorem cont_mdiff_at_hom_bundle + theorem hom_chart + theorem smooth_at_hom_bundle + theorem smooth_on_continuous_linear_map_coord_change + def smooth_vector_bundle.continuous_linear_map.aux 2023-05-17 15:12:57 17fe363 feat(geometry/manifold/cont_mdiff_mfderiv): prove that mfderiv is smooth (#18827) * From the sphere eversion project * `cont_mdiff_at.mfderiv` is strong enough to prove `cont_mdiff.cont_mdiff_tangent_map`. This is already done in [the sphere eversion project](https://github.com/leanprover-community/sphere-eversion/blob/9486e7f42c283041bc512f133daec359b73d4986/src/to_mathlib/unused/geometry_manifold_misc.lean#L383). We would need to generalize `cont_mdiff_at.mfderiv` to something like `cont_mdiff_within_at.mfderiv_within` to prove the full version of `cont_mdiff_on.cont_mdiff_on_tangent_map_within`. This is non-trivial and needs additions to already ported files, so I'll wait with doing that till after the port. ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff_mfderiv.lean + theorem cont_mdiff_at.mfderiv + theorem cont_mdiff_at.mfderiv_const Modified src/geometry/manifold/vector_bundle/tangent.lean + theorem in_coordinates_tangent_bundle_core_model_space + def in_tangent_coordinates + theorem in_tangent_coordinates_eq + theorem in_tangent_coordinates_model_space 2023-05-17 12:41:52 8ff51ea feat(analysis/inner_product_space/pi_L2): norms of basis vectors (#19020) This adds `‖euclidean_space.single i (a : 𝕜)‖ = ‖a‖` and other similar results. They hold more generally for `pi_Lp`, so they are proven there first. The statement of `linear_isometry_equiv.pi_Lp_congr_left_single` has also been corrected to include the missing typecast. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem euclidean_space.dist_single_same + theorem euclidean_space.edist_single_same + theorem euclidean_space.nndist_single_same + theorem euclidean_space.nnnorm_single + theorem euclidean_space.norm_single + theorem euclidean_space.orthonormal_single Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.dist_equiv_symm_single_same + theorem pi_Lp.edist_equiv_symm_single_same + theorem pi_Lp.nndist_equiv_symm_single_same + theorem pi_Lp.nnnorm_equiv_symm_single + theorem pi_Lp.norm_equiv_symm_single 2023-05-17 10:26:04 20d5763 feat(probability/kernel/cond_cdf): conditional cumulative distribution function (#18988) We define `cond_cdf ρ : α → stieltjes_function`, the conditional cdf of `ρ : measure (α × ℝ)`, and prove its main properties: it is monotone and right-continuous with limit 0 at -∞ and limit 1 at +∞; for all `x : ℝ`, `a ↦ cond_cdf ρ a x` is measurable; for all `x : ℝ` and measurable set `s`, it satisfies `∫⁻ a in s, ennreal.of_real (cond_cdf ρ a x) ∂ρ.fst = ρ (s ×ˢ Iic x)` ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space/basic.lean + theorem borel_eq_generate_from_Ici + theorem borel_eq_generate_from_Iic Modified src/measure_theory/measure/stieltjes.lean + theorem infi_Ioi_eq_infi_rat_gt + theorem right_lim_eq_Inf + theorem right_lim_eq_of_tendsto + theorem stieltjes_function.infi_Ioi_eq + theorem stieltjes_function.infi_rat_gt_eq + theorem stieltjes_function.right_lim_eq Added src/probability/kernel/cond_cdf.lean + theorem at_bot_le_nhds_bot + theorem at_top_le_nhds_top + theorem directed.sequence_anti + theorem directed.sequence_le + theorem ennreal.of_real_cinfi + theorem is_pi_system_Ici + theorem is_pi_system_Iic + theorem lintegral_infi_directed_of_measurable + def measure_theory.measure.Iic_snd + theorem measure_theory.measure.Iic_snd_ac_fst + theorem measure_theory.measure.Iic_snd_apply + theorem measure_theory.measure.Iic_snd_le_fst + theorem measure_theory.measure.Iic_snd_mono + theorem measure_theory.measure.Iic_snd_univ + theorem measure_theory.measure.infi_Iic_snd_gt + theorem measure_theory.measure.is_finite_measure.Iic_snd + theorem measure_theory.measure.tendsto_Iic_snd_at_bot + theorem measure_theory.measure.tendsto_Iic_snd_at_top + theorem probability_theory.bdd_below_range_cond_cdf_rat_gt + def probability_theory.cond_cdf' + theorem probability_theory.cond_cdf'_def + theorem probability_theory.cond_cdf'_eq_cond_cdf_rat + theorem probability_theory.cond_cdf'_nonneg + def probability_theory.cond_cdf + theorem probability_theory.cond_cdf_ae_eq + theorem probability_theory.cond_cdf_eq_cond_cdf_rat + theorem probability_theory.cond_cdf_le_one + theorem probability_theory.cond_cdf_nonneg + def probability_theory.cond_cdf_rat + theorem probability_theory.cond_cdf_rat_ae_eq + theorem probability_theory.cond_cdf_rat_le_one + theorem probability_theory.cond_cdf_rat_nonneg + theorem probability_theory.cond_cdf_rat_of_mem + theorem probability_theory.cond_cdf_rat_of_not_mem + def probability_theory.cond_cdf_set + theorem probability_theory.continuous_within_at_cond_cdf'_Ici + structure probability_theory.has_cond_cdf + theorem probability_theory.has_cond_cdf_ae + theorem probability_theory.has_cond_cdf_of_mem_cond_cdf_set + theorem probability_theory.inf_gt_cond_cdf_rat + theorem probability_theory.inf_gt_pre_cdf + theorem probability_theory.integrable_cond_cdf + theorem probability_theory.integral_cond_cdf + theorem probability_theory.lintegral_cond_cdf + theorem probability_theory.measurable_cond_cdf + theorem probability_theory.measurable_cond_cdf_rat + theorem probability_theory.measurable_pre_cdf + theorem probability_theory.measurable_set_cond_cdf_set + theorem probability_theory.mem_cond_cdf_set_ae + theorem probability_theory.monotone_cond_cdf' + theorem probability_theory.monotone_cond_cdf_rat + theorem probability_theory.monotone_pre_cdf + theorem probability_theory.of_real_cond_cdf_ae_eq + theorem probability_theory.of_real_cond_cdf_rat_ae_eq + def probability_theory.pre_cdf + theorem probability_theory.pre_cdf_le_one + theorem probability_theory.set_integral_cond_cdf + theorem probability_theory.set_lintegral_cond_cdf + theorem probability_theory.set_lintegral_cond_cdf_rat + theorem probability_theory.set_lintegral_infi_gt_pre_cdf + theorem probability_theory.set_lintegral_pre_cdf_fst + theorem probability_theory.strongly_measurable_cond_cdf + theorem probability_theory.tendsto_cond_cdf_at_bot + theorem probability_theory.tendsto_cond_cdf_at_top + theorem probability_theory.tendsto_cond_cdf_rat_at_bot + theorem probability_theory.tendsto_cond_cdf_rat_at_top + theorem probability_theory.tendsto_lintegral_pre_cdf_at_bot + theorem probability_theory.tendsto_lintegral_pre_cdf_at_top + theorem probability_theory.tendsto_pre_cdf_at_bot_zero + theorem probability_theory.tendsto_pre_cdf_at_top_one + theorem probability_theory.with_density_pre_cdf + theorem prod_Inter + theorem real.Inter_Iic_rat + theorem real.Union_Iic_rat + theorem tendsto_of_antitone 2023-05-17 00:23:15 2ed2c63 chore(*): add mathlib4 synchronization comments (#19024) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.module.localized_module` * `analysis.box_integral.partition.tagged` * `analysis.calculus.tangent_cone` * `analysis.complex.basic` * `analysis.complex.re_im_topology` * `analysis.normed.group.add_circle` * `analysis.special_functions.exp` * `analysis.special_functions.log.basic` * `category_theory.cofiltered_system` * `category_theory.endofunctor.algebra` * `category_theory.sites.dense_subsite` * `category_theory.sites.induced_topology` * `category_theory.sites.subsheaf` * `combinatorics.hall.basic` * `combinatorics.simple_graph.ends.defs` * `data.polynomial.laurent` * `group_theory.nielsen_schreier` * `order.category.Frm` * `topology.category.Locale` * `topology.instances.add_circle` ESTIMATED CHANGES Modified src/algebra/module/localized_module.lean Modified src/analysis/box_integral/partition/tagged.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/basic.lean Modified src/analysis/complex/re_im_topology.lean Modified src/analysis/normed/group/add_circle.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/log/basic.lean Modified src/category_theory/cofiltered_system.lean Modified src/category_theory/endofunctor/algebra.lean Modified src/category_theory/sites/dense_subsite.lean Modified src/category_theory/sites/induced_topology.lean Modified src/category_theory/sites/subsheaf.lean Modified src/combinatorics/hall/basic.lean Modified src/combinatorics/simple_graph/ends/defs.lean Modified src/data/polynomial/laurent.lean Modified src/group_theory/nielsen_schreier.lean Modified src/order/category/Frm.lean Modified src/topology/category/Locale.lean Modified src/topology/instances/add_circle.lean 2023-05-16 22:14:44 b1859b6 feat(measure_theory/measure/hausdorff): `(μH[1] : measure ℝ) = volume` (#18982) And similarly for `(μH[2] : measure ℝ × ℝ) = volume`. This addresses the TODO comment in the docstring. The `hausdorff_measure_pi_real` proof has been moved to the bottom of the file so that it can be kept next to the new results. ESTIMATED CHANGES Modified src/measure_theory/measure/hausdorff.lean + theorem isometry_equiv.map_hausdorff_measure + theorem isometry_equiv.measure_preserving_hausdorff_measure + theorem measure_theory.hausdorff_measure_measure_preserving_fun_unique + theorem measure_theory.hausdorff_measure_measure_preserving_pi_fin_two + theorem measure_theory.hausdorff_measure_prod_real + theorem measure_theory.hausdorff_measure_real Modified src/topology/metric_space/isometry.lean + def isometry_equiv.fun_unique + def isometry_equiv.pi_fin_two 2023-05-16 19:40:58 f8c79b0 doc(linear_algebra/std_basis): add a missing backtick (#19025) ESTIMATED CHANGES Modified src/linear_algebra/std_basis.lean 2023-05-16 05:07:51 b76e9f6 feat(analysis/special_functions/gamma): holomorphy of `1 / Gamma` (#19012) This PR makes two changes to the Gamma function code: - drastically shorten the proof of differentiability of the Gamma function by applying general results on Mellin transforms; - add the fact that `1 / Gamma` is differentiable everywhere (including at the poles of the Gamma function). ESTIMATED CHANGES Modified src/analysis/special_functions/gamma/basic.lean + theorem complex.Gamma_integral_eq_mellin +/- theorem complex.has_deriv_at_Gamma_integral - theorem dGamma_integral_abs_convergent - def dGamma_integrand - theorem dGamma_integrand_is_o_at_top - def dGamma_integrand_real - theorem loc_unif_bound_dGamma_integrand Modified src/analysis/special_functions/gamma/beta.lean + theorem complex.differentiable_one_div_Gamma + theorem complex.one_div_Gamma_eq_self_mul_one_div_Gamma_add_one 2023-05-16 00:23:25 4fa54b3 chore(analysis/special_functions/pow): move around rpow/cpow tactics (#19022) This PR splits up the code that implements `norm_num` and `positivity` for real / complex powers, and puts it into the files where those operations are defined, for easier discoverability. ESTIMATED CHANGES Modified src/analysis/fourier/poisson_summation.lean Modified src/analysis/special_functions/japanese_bracket.lean Modified src/analysis/special_functions/pow/complex.lean + theorem norm_num.cpow_neg + theorem norm_num.cpow_pos Modified src/analysis/special_functions/pow/nnreal.lean + theorem norm_num.ennrpow_neg + theorem norm_num.ennrpow_pos + theorem norm_num.nnrpow_neg + theorem norm_num.nnrpow_pos Modified src/analysis/special_functions/pow/real.lean + theorem norm_num.rpow_neg + theorem norm_num.rpow_pos Deleted src/analysis/special_functions/pow/tactic.lean - theorem norm_num.cpow_neg - theorem norm_num.cpow_pos - theorem norm_num.ennrpow_neg - theorem norm_num.ennrpow_pos - theorem norm_num.nnrpow_neg - theorem norm_num.nnrpow_pos - theorem norm_num.rpow_neg - theorem norm_num.rpow_pos Modified src/combinatorics/additive/behrend.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/number_theory/bertrand.lean Modified test/norm_num_ext.lean Modified test/positivity.lean 2023-05-15 19:52:19 0b9eaaa chore(analysis/special_functions): split up `pow.lean` (#19006) This PR splits up the monster file `analysis.special_functions.pow` into the following 6 files: - `pow_complex`: definition of `a ^ b` for complex a, b and basic properties (179 lines) - `pow_real`: definition of `a ^ b` for real a, b & lemmas about order / monotonicity (641 lines) - `pow_nnreal`: definitions for nnreal and ennreal types (693 lines) - `pow_asymptotics`: limiting behaviour at infinity (282 lines) - `pow_continuity`: continuity properties (500 lines) - `pow_tactic`: extensions to `positivity` and `norm_num` for powers (209 lines) No code has been added or removed, only moved around, and the only changes outside these files are adjustments to imports. ESTIMATED CHANGES Modified archive/imo/imo2001_q2.lean Modified src/algebra/order/complete_field.lean Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/fourier/poisson_summation.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/star/multiplier.lean Modified src/analysis/p_series.lean Modified src/analysis/schwartz_space.lean Modified src/analysis/special_functions/compare_exp.lean Modified src/analysis/special_functions/japanese_bracket.lean Modified src/analysis/special_functions/log/base.lean Modified src/analysis/special_functions/log/monotone.lean Deleted src/analysis/special_functions/pow.lean - theorem asymptotics.is_O.rpow - theorem asymptotics.is_O_with.rpow - theorem asymptotics.is_o.rpow - theorem complex.abs_cpow_eq_rpow_re_of_nonneg - theorem complex.abs_cpow_eq_rpow_re_of_pos - theorem complex.abs_cpow_inv_nat - theorem complex.abs_cpow_le - theorem complex.abs_cpow_of_imp - theorem complex.abs_cpow_of_ne_zero - theorem complex.abs_cpow_real - theorem complex.conj_cpow - theorem complex.conj_cpow_eq_ite - theorem complex.continuous_at_cpow_const_of_re_pos - theorem complex.continuous_at_cpow_of_re_pos - theorem complex.continuous_at_cpow_zero_of_re_pos - theorem complex.continuous_at_of_real_cpow - theorem complex.continuous_at_of_real_cpow_const - theorem complex.continuous_of_real_cpow_const - theorem complex.cpow_add - theorem complex.cpow_conj - theorem complex.cpow_def - theorem complex.cpow_def_of_ne_zero - theorem complex.cpow_eq_pow - theorem complex.cpow_eq_zero_iff - theorem complex.cpow_int_cast - theorem complex.cpow_mul - theorem complex.cpow_nat_cast - theorem complex.cpow_nat_inv_pow - theorem complex.cpow_neg - theorem complex.cpow_neg_one - theorem complex.cpow_one - theorem complex.cpow_sub - theorem complex.cpow_two - theorem complex.cpow_zero - theorem complex.eq_zero_cpow_iff - theorem complex.inv_cpow - theorem complex.inv_cpow_eq_ite' - theorem complex.inv_cpow_eq_ite - theorem complex.is_O_cpow_rpow - theorem complex.is_Theta_cpow_const_rpow - theorem complex.is_Theta_cpow_rpow - theorem complex.is_Theta_exp_arg_mul_im - theorem complex.mul_cpow_of_real_nonneg - theorem complex.of_real_cpow - theorem complex.of_real_cpow_of_nonpos - theorem complex.one_cpow - theorem complex.zero_cpow - theorem complex.zero_cpow_eq_iff - theorem continuous.const_cpow - theorem continuous.cpow - theorem continuous.rpow - theorem continuous.rpow_const - theorem continuous_at.const_cpow - theorem continuous_at.cpow - theorem continuous_at.rpow - theorem continuous_at.rpow_const - theorem continuous_at_const_cpow' - theorem continuous_at_const_cpow - theorem continuous_at_cpow - theorem continuous_at_cpow_const - theorem continuous_on.const_cpow - theorem continuous_on.cpow - theorem continuous_on.cpow_const - theorem continuous_on.rpow - theorem continuous_on.rpow_const - theorem continuous_within_at.const_cpow - theorem continuous_within_at.cpow - theorem continuous_within_at.rpow - theorem continuous_within_at.rpow_const - theorem cpow_eq_nhds' - theorem cpow_eq_nhds - theorem ennreal.coe_mul_rpow - theorem ennreal.coe_rpow_def - theorem ennreal.coe_rpow_of_ne_zero - theorem ennreal.coe_rpow_of_nonneg - theorem ennreal.continuous_rpow_const - theorem ennreal.div_rpow_of_nonneg - theorem ennreal.eventually_pow_one_div_le - theorem ennreal.inv_rpow - theorem ennreal.le_rpow_one_div_iff - theorem ennreal.le_rpow_self_of_one_le - theorem ennreal.lt_rpow_one_div_iff - theorem ennreal.monotone_rpow_of_nonneg - theorem ennreal.mul_rpow_eq_ite - theorem ennreal.mul_rpow_of_ne_top - theorem ennreal.mul_rpow_of_ne_zero - theorem ennreal.mul_rpow_of_nonneg - theorem ennreal.of_real_rpow_of_nonneg - theorem ennreal.of_real_rpow_of_pos - theorem ennreal.one_le_rpow - theorem ennreal.one_le_rpow_of_pos_of_le_one_of_neg - theorem ennreal.one_lt_rpow - theorem ennreal.one_lt_rpow_of_pos_of_lt_one_of_neg - theorem ennreal.one_rpow - def ennreal.order_iso_rpow - theorem ennreal.order_iso_rpow_symm_apply - theorem ennreal.rpow_add - theorem ennreal.rpow_eq_pow - theorem ennreal.rpow_eq_top_iff - theorem ennreal.rpow_eq_top_iff_of_pos - theorem ennreal.rpow_eq_top_of_nonneg - theorem ennreal.rpow_eq_zero_iff - theorem ennreal.rpow_le_one - theorem ennreal.rpow_le_one_of_one_le_of_neg - theorem ennreal.rpow_le_rpow - theorem ennreal.rpow_le_rpow_iff - theorem ennreal.rpow_le_rpow_of_exponent_ge - theorem ennreal.rpow_le_rpow_of_exponent_le - theorem ennreal.rpow_le_self_of_le_one - theorem ennreal.rpow_left_bijective - theorem ennreal.rpow_left_injective - theorem ennreal.rpow_left_surjective - theorem ennreal.rpow_lt_one - theorem ennreal.rpow_lt_one_of_one_lt_of_neg - theorem ennreal.rpow_lt_rpow - theorem ennreal.rpow_lt_rpow_iff - theorem ennreal.rpow_lt_rpow_of_exponent_gt - theorem ennreal.rpow_lt_rpow_of_exponent_lt - theorem ennreal.rpow_lt_top_of_nonneg - theorem ennreal.rpow_mul - theorem ennreal.rpow_nat_cast - theorem ennreal.rpow_ne_top_of_nonneg - theorem ennreal.rpow_neg - theorem ennreal.rpow_neg_one - theorem ennreal.rpow_one - theorem ennreal.rpow_one_div_le_iff - theorem ennreal.rpow_pos - theorem ennreal.rpow_pos_of_nonneg - theorem ennreal.rpow_sub - theorem ennreal.rpow_two - theorem ennreal.rpow_zero - theorem ennreal.strict_mono_rpow_of_pos - theorem ennreal.tendsto_const_mul_rpow_nhds_zero_of_pos - theorem ennreal.tendsto_rpow_at_top - theorem ennreal.to_nnreal_rpow - theorem ennreal.to_real_rpow - theorem ennreal.top_rpow_def - theorem ennreal.top_rpow_of_neg - theorem ennreal.top_rpow_of_pos - theorem ennreal.zero_rpow_def - theorem ennreal.zero_rpow_mul_self - theorem ennreal.zero_rpow_of_neg - theorem ennreal.zero_rpow_of_pos - theorem filter.tendsto.const_cpow - theorem filter.tendsto.cpow - theorem filter.tendsto.ennrpow_const - theorem filter.tendsto.nnrpow - theorem filter.tendsto.rpow - theorem filter.tendsto.rpow_const - theorem is_o_abs_log_rpow_rpow_nhds_zero - theorem is_o_exp_neg_mul_rpow_at_top - theorem is_o_log_rpow_at_top - theorem is_o_log_rpow_nhds_zero - theorem is_o_log_rpow_rpow_at_top - theorem is_o_pow_exp_pos_mul_at_top - theorem is_o_rpow_exp_at_top - theorem is_o_rpow_exp_pos_mul_at_top - theorem is_o_zpow_exp_pos_mul_at_top - theorem nnreal.coe_rpow - theorem nnreal.continuous_at_rpow - theorem nnreal.continuous_at_rpow_const - theorem nnreal.continuous_rpow_const - theorem nnreal.div_rpow - theorem nnreal.eq_rpow_one_div_iff - theorem nnreal.eventually_pow_one_div_le - theorem nnreal.inv_rpow - theorem nnreal.le_rpow_one_div_iff - theorem nnreal.mul_rpow - theorem nnreal.one_le_rpow - theorem nnreal.one_le_rpow_of_pos_of_le_one_of_nonpos - theorem nnreal.one_lt_rpow - theorem nnreal.one_lt_rpow_of_pos_of_lt_one_of_neg - theorem nnreal.one_rpow - theorem nnreal.pow_nat_rpow_nat_inv - theorem nnreal.rpow_add' - theorem nnreal.rpow_add - theorem nnreal.rpow_eq_pow - theorem nnreal.rpow_eq_rpow_iff - theorem nnreal.rpow_eq_zero_iff - theorem nnreal.rpow_inv_rpow_self - theorem nnreal.rpow_le_one - theorem nnreal.rpow_le_one_of_one_le_of_nonpos - theorem nnreal.rpow_le_rpow - theorem nnreal.rpow_le_rpow_iff - theorem nnreal.rpow_le_rpow_of_exponent_ge - theorem nnreal.rpow_le_rpow_of_exponent_le - theorem nnreal.rpow_le_self_of_le_one - theorem nnreal.rpow_left_bijective - theorem nnreal.rpow_left_injective - theorem nnreal.rpow_left_surjective - theorem nnreal.rpow_lt_one - theorem nnreal.rpow_lt_one_of_one_lt_of_neg - theorem nnreal.rpow_lt_rpow - theorem nnreal.rpow_lt_rpow_iff - theorem nnreal.rpow_lt_rpow_of_exponent_gt - theorem nnreal.rpow_lt_rpow_of_exponent_lt - theorem nnreal.rpow_mul - theorem nnreal.rpow_nat_cast - theorem nnreal.rpow_nat_inv_pow_nat - theorem nnreal.rpow_neg - theorem nnreal.rpow_neg_one - theorem nnreal.rpow_one - theorem nnreal.rpow_one_div_eq_iff - theorem nnreal.rpow_one_div_le_iff - theorem nnreal.rpow_pos - theorem nnreal.rpow_self_rpow_inv - theorem nnreal.rpow_sub' - theorem nnreal.rpow_sub - theorem nnreal.rpow_two - theorem nnreal.rpow_zero - theorem nnreal.sqrt_eq_rpow - theorem nnreal.tendsto_rpow_at_top - theorem nnreal.zero_rpow - theorem norm_num.cpow_neg - theorem norm_num.cpow_pos - theorem norm_num.ennrpow_neg - theorem norm_num.ennrpow_pos - theorem norm_num.nnrpow_neg - theorem norm_num.nnrpow_pos - theorem norm_num.rpow_neg - theorem norm_num.rpow_pos - theorem real.abs_log_mul_self_rpow_lt - theorem real.abs_rpow_le_abs_rpow - theorem real.abs_rpow_le_exp_log_mul - theorem real.abs_rpow_of_nonneg - theorem real.continuous_at_const_rpow' - theorem real.continuous_at_const_rpow - theorem real.continuous_at_rpow - theorem real.continuous_at_rpow_const - theorem real.continuous_at_rpow_of_ne - theorem real.continuous_at_rpow_of_pos - theorem real.div_rpow - theorem real.eq_zero_rpow_iff - theorem real.exists_rat_pow_btwn - theorem real.exists_rat_pow_btwn_rat - theorem real.exists_rat_pow_btwn_rat_aux - theorem real.exp_mul - theorem real.exp_one_rpow - theorem real.inv_rpow - theorem real.le_rpow_add - theorem real.le_rpow_iff_log_le - theorem real.le_rpow_inv_iff_of_neg - theorem real.le_rpow_of_log_le - theorem real.log_rpow - theorem real.lt_rpow_iff_log_lt - theorem real.lt_rpow_inv_iff_of_neg - theorem real.lt_rpow_of_log_lt - theorem real.mul_rpow - theorem real.norm_rpow_of_nonneg - theorem real.one_le_rpow - theorem real.one_le_rpow_of_pos_of_le_one_of_nonpos - theorem real.one_lt_rpow - theorem real.one_lt_rpow_iff - theorem real.one_lt_rpow_iff_of_pos - theorem real.one_lt_rpow_of_pos_of_lt_one_of_neg - theorem real.one_rpow - theorem real.pow_nat_rpow_nat_inv - theorem real.rpow_add' - theorem real.rpow_add - theorem real.rpow_add_int - theorem real.rpow_add_nat - theorem real.rpow_add_of_nonneg - theorem real.rpow_add_one - theorem real.rpow_def - theorem real.rpow_def_of_neg - theorem real.rpow_def_of_nonneg - theorem real.rpow_def_of_nonpos - theorem real.rpow_def_of_pos - theorem real.rpow_div_two_eq_sqrt - theorem real.rpow_eq_nhds_of_neg - theorem real.rpow_eq_nhds_of_pos - theorem real.rpow_eq_pow - theorem real.rpow_eq_zero_iff_of_nonneg - theorem real.rpow_int_cast - theorem real.rpow_inv_le_iff_of_neg - theorem real.rpow_inv_lt_iff_of_neg - theorem real.rpow_le_one - theorem real.rpow_le_one_iff_of_pos - theorem real.rpow_le_one_of_one_le_of_nonpos - theorem real.rpow_le_rpow - theorem real.rpow_le_rpow_iff - theorem real.rpow_le_rpow_left_iff - theorem real.rpow_le_rpow_left_iff_of_base_lt_one - theorem real.rpow_le_rpow_of_exponent_ge' - theorem real.rpow_le_rpow_of_exponent_ge - theorem real.rpow_le_rpow_of_exponent_le - theorem real.rpow_left_inj_on - theorem real.rpow_lt_one - theorem real.rpow_lt_one_iff - theorem real.rpow_lt_one_iff_of_pos - theorem real.rpow_lt_one_of_one_lt_of_neg - theorem real.rpow_lt_rpow - theorem real.rpow_lt_rpow_iff - theorem real.rpow_lt_rpow_left_iff - theorem real.rpow_lt_rpow_left_iff_of_base_lt_one - theorem real.rpow_lt_rpow_of_exponent_gt - theorem real.rpow_lt_rpow_of_exponent_lt - theorem real.rpow_mul - theorem real.rpow_nat_cast - theorem real.rpow_nat_inv_pow_nat - theorem real.rpow_neg - theorem real.rpow_neg_one - theorem real.rpow_nonneg_of_nonneg - theorem real.rpow_one - theorem real.rpow_pos_of_pos - theorem real.rpow_sub' - theorem real.rpow_sub - theorem real.rpow_sub_int - theorem real.rpow_sub_nat - theorem real.rpow_sub_one - theorem real.rpow_sum_of_nonneg - theorem real.rpow_sum_of_pos - theorem real.rpow_two - theorem real.rpow_zero - theorem real.sqrt_eq_rpow - theorem real.to_nnreal_rpow_of_nonneg - theorem real.zero_rpow - theorem real.zero_rpow_eq_iff - theorem real.zero_rpow_le_one - theorem real.zero_rpow_nonneg - theorem tendsto_exp_div_rpow_at_top - theorem tendsto_exp_mul_div_rpow_at_top - theorem tendsto_log_div_rpow_nhds_zero - theorem tendsto_log_mul_rpow_nhds_zero - theorem tendsto_rpow_at_top - theorem tendsto_rpow_div - theorem tendsto_rpow_div_mul_add - theorem tendsto_rpow_mul_exp_neg_mul_at_top_nhds_0 - theorem tendsto_rpow_neg_at_top - theorem tendsto_rpow_neg_div - theorem zero_cpow_eq_nhds Added src/analysis/special_functions/pow/asymptotics.lean + theorem asymptotics.is_O.rpow + theorem asymptotics.is_O_with.rpow + theorem asymptotics.is_o.rpow + theorem complex.is_O_cpow_rpow + theorem complex.is_Theta_cpow_const_rpow + theorem complex.is_Theta_cpow_rpow + theorem complex.is_Theta_exp_arg_mul_im + theorem ennreal.tendsto_rpow_at_top + theorem is_o_abs_log_rpow_rpow_nhds_zero + theorem is_o_exp_neg_mul_rpow_at_top + theorem is_o_log_rpow_at_top + theorem is_o_log_rpow_nhds_zero + theorem is_o_log_rpow_rpow_at_top + theorem is_o_pow_exp_pos_mul_at_top + theorem is_o_rpow_exp_at_top + theorem is_o_rpow_exp_pos_mul_at_top + theorem is_o_zpow_exp_pos_mul_at_top + theorem nnreal.tendsto_rpow_at_top + theorem tendsto_exp_div_rpow_at_top + theorem tendsto_exp_mul_div_rpow_at_top + theorem tendsto_log_div_rpow_nhds_zero + theorem tendsto_log_mul_rpow_nhds_zero + theorem tendsto_rpow_at_top + theorem tendsto_rpow_div + theorem tendsto_rpow_div_mul_add + theorem tendsto_rpow_mul_exp_neg_mul_at_top_nhds_0 + theorem tendsto_rpow_neg_at_top + theorem tendsto_rpow_neg_div Added src/analysis/special_functions/pow/complex.lean + theorem complex.conj_cpow + theorem complex.conj_cpow_eq_ite + theorem complex.cpow_add + theorem complex.cpow_conj + theorem complex.cpow_def + theorem complex.cpow_def_of_ne_zero + theorem complex.cpow_eq_pow + theorem complex.cpow_eq_zero_iff + theorem complex.cpow_int_cast + theorem complex.cpow_mul + theorem complex.cpow_nat_cast + theorem complex.cpow_nat_inv_pow + theorem complex.cpow_neg + theorem complex.cpow_neg_one + theorem complex.cpow_one + theorem complex.cpow_sub + theorem complex.cpow_two + theorem complex.cpow_zero + theorem complex.eq_zero_cpow_iff + theorem complex.inv_cpow + theorem complex.inv_cpow_eq_ite' + theorem complex.inv_cpow_eq_ite + theorem complex.mul_cpow_of_real_nonneg + theorem complex.one_cpow + theorem complex.zero_cpow + theorem complex.zero_cpow_eq_iff Added src/analysis/special_functions/pow/continuity.lean + theorem complex.continuous_at_cpow_const_of_re_pos + theorem complex.continuous_at_cpow_of_re_pos + theorem complex.continuous_at_cpow_zero_of_re_pos + theorem complex.continuous_at_of_real_cpow + theorem complex.continuous_at_of_real_cpow_const + theorem complex.continuous_of_real_cpow_const + theorem continuous.const_cpow + theorem continuous.cpow + theorem continuous.rpow + theorem continuous.rpow_const + theorem continuous_at.const_cpow + theorem continuous_at.cpow + theorem continuous_at.rpow + theorem continuous_at.rpow_const + theorem continuous_at_const_cpow' + theorem continuous_at_const_cpow + theorem continuous_at_cpow + theorem continuous_at_cpow_const + theorem continuous_on.const_cpow + theorem continuous_on.cpow + theorem continuous_on.cpow_const + theorem continuous_on.rpow + theorem continuous_on.rpow_const + theorem continuous_within_at.const_cpow + theorem continuous_within_at.cpow + theorem continuous_within_at.rpow + theorem continuous_within_at.rpow_const + theorem cpow_eq_nhds' + theorem cpow_eq_nhds + theorem ennreal.continuous_rpow_const + theorem ennreal.eventually_pow_one_div_le + theorem ennreal.tendsto_const_mul_rpow_nhds_zero_of_pos + theorem filter.tendsto.const_cpow + theorem filter.tendsto.cpow + theorem filter.tendsto.ennrpow_const + theorem filter.tendsto.nnrpow + theorem filter.tendsto.rpow + theorem filter.tendsto.rpow_const + theorem nnreal.continuous_at_rpow + theorem nnreal.continuous_at_rpow_const + theorem nnreal.continuous_rpow_const + theorem nnreal.eventually_pow_one_div_le + theorem real.continuous_at_const_rpow' + theorem real.continuous_at_const_rpow + theorem real.continuous_at_rpow + theorem real.continuous_at_rpow_const + theorem real.continuous_at_rpow_of_ne + theorem real.continuous_at_rpow_of_pos + theorem real.rpow_eq_nhds_of_neg + theorem real.rpow_eq_nhds_of_pos + theorem zero_cpow_eq_nhds Renamed src/analysis/special_functions/pow_deriv.lean to src/analysis/special_functions/pow/deriv.lean Added src/analysis/special_functions/pow/nnreal.lean + theorem ennreal.coe_mul_rpow + theorem ennreal.coe_rpow_def + theorem ennreal.coe_rpow_of_ne_zero + theorem ennreal.coe_rpow_of_nonneg + theorem ennreal.div_rpow_of_nonneg + theorem ennreal.inv_rpow + theorem ennreal.le_rpow_one_div_iff + theorem ennreal.le_rpow_self_of_one_le + theorem ennreal.lt_rpow_one_div_iff + theorem ennreal.monotone_rpow_of_nonneg + theorem ennreal.mul_rpow_eq_ite + theorem ennreal.mul_rpow_of_ne_top + theorem ennreal.mul_rpow_of_ne_zero + theorem ennreal.mul_rpow_of_nonneg + theorem ennreal.of_real_rpow_of_nonneg + theorem ennreal.of_real_rpow_of_pos + theorem ennreal.one_le_rpow + theorem ennreal.one_le_rpow_of_pos_of_le_one_of_neg + theorem ennreal.one_lt_rpow + theorem ennreal.one_lt_rpow_of_pos_of_lt_one_of_neg + theorem ennreal.one_rpow + def ennreal.order_iso_rpow + theorem ennreal.order_iso_rpow_symm_apply + theorem ennreal.rpow_add + theorem ennreal.rpow_eq_pow + theorem ennreal.rpow_eq_top_iff + theorem ennreal.rpow_eq_top_iff_of_pos + theorem ennreal.rpow_eq_top_of_nonneg + theorem ennreal.rpow_eq_zero_iff + theorem ennreal.rpow_le_one + theorem ennreal.rpow_le_one_of_one_le_of_neg + theorem ennreal.rpow_le_rpow + theorem ennreal.rpow_le_rpow_iff + theorem ennreal.rpow_le_rpow_of_exponent_ge + theorem ennreal.rpow_le_rpow_of_exponent_le + theorem ennreal.rpow_le_self_of_le_one + theorem ennreal.rpow_left_bijective + theorem ennreal.rpow_left_injective + theorem ennreal.rpow_left_surjective + theorem ennreal.rpow_lt_one + theorem ennreal.rpow_lt_one_of_one_lt_of_neg + theorem ennreal.rpow_lt_rpow + theorem ennreal.rpow_lt_rpow_iff + theorem ennreal.rpow_lt_rpow_of_exponent_gt + theorem ennreal.rpow_lt_rpow_of_exponent_lt + theorem ennreal.rpow_lt_top_of_nonneg + theorem ennreal.rpow_mul + theorem ennreal.rpow_nat_cast + theorem ennreal.rpow_ne_top_of_nonneg + theorem ennreal.rpow_neg + theorem ennreal.rpow_neg_one + theorem ennreal.rpow_one + theorem ennreal.rpow_one_div_le_iff + theorem ennreal.rpow_pos + theorem ennreal.rpow_pos_of_nonneg + theorem ennreal.rpow_sub + theorem ennreal.rpow_two + theorem ennreal.rpow_zero + theorem ennreal.strict_mono_rpow_of_pos + theorem ennreal.to_nnreal_rpow + theorem ennreal.to_real_rpow + theorem ennreal.top_rpow_def + theorem ennreal.top_rpow_of_neg + theorem ennreal.top_rpow_of_pos + theorem ennreal.zero_rpow_def + theorem ennreal.zero_rpow_mul_self + theorem ennreal.zero_rpow_of_neg + theorem ennreal.zero_rpow_of_pos + theorem nnreal.coe_rpow + theorem nnreal.div_rpow + theorem nnreal.eq_rpow_one_div_iff + theorem nnreal.inv_rpow + theorem nnreal.le_rpow_one_div_iff + theorem nnreal.mul_rpow + theorem nnreal.one_le_rpow + theorem nnreal.one_le_rpow_of_pos_of_le_one_of_nonpos + theorem nnreal.one_lt_rpow + theorem nnreal.one_lt_rpow_of_pos_of_lt_one_of_neg + theorem nnreal.one_rpow + theorem nnreal.pow_nat_rpow_nat_inv + theorem nnreal.rpow_add' + theorem nnreal.rpow_add + theorem nnreal.rpow_eq_pow + theorem nnreal.rpow_eq_rpow_iff + theorem nnreal.rpow_eq_zero_iff + theorem nnreal.rpow_inv_rpow_self + theorem nnreal.rpow_le_one + theorem nnreal.rpow_le_one_of_one_le_of_nonpos + theorem nnreal.rpow_le_rpow + theorem nnreal.rpow_le_rpow_iff + theorem nnreal.rpow_le_rpow_of_exponent_ge + theorem nnreal.rpow_le_rpow_of_exponent_le + theorem nnreal.rpow_le_self_of_le_one + theorem nnreal.rpow_left_bijective + theorem nnreal.rpow_left_injective + theorem nnreal.rpow_left_surjective + theorem nnreal.rpow_lt_one + theorem nnreal.rpow_lt_one_of_one_lt_of_neg + theorem nnreal.rpow_lt_rpow + theorem nnreal.rpow_lt_rpow_iff + theorem nnreal.rpow_lt_rpow_of_exponent_gt + theorem nnreal.rpow_lt_rpow_of_exponent_lt + theorem nnreal.rpow_mul + theorem nnreal.rpow_nat_cast + theorem nnreal.rpow_nat_inv_pow_nat + theorem nnreal.rpow_neg + theorem nnreal.rpow_neg_one + theorem nnreal.rpow_one + theorem nnreal.rpow_one_div_eq_iff + theorem nnreal.rpow_one_div_le_iff + theorem nnreal.rpow_pos + theorem nnreal.rpow_self_rpow_inv + theorem nnreal.rpow_sub' + theorem nnreal.rpow_sub + theorem nnreal.rpow_two + theorem nnreal.rpow_zero + theorem nnreal.sqrt_eq_rpow + theorem nnreal.zero_rpow + theorem real.to_nnreal_rpow_of_nonneg Added src/analysis/special_functions/pow/real.lean + theorem complex.abs_cpow_eq_rpow_re_of_nonneg + theorem complex.abs_cpow_eq_rpow_re_of_pos + theorem complex.abs_cpow_inv_nat + theorem complex.abs_cpow_le + theorem complex.abs_cpow_of_imp + theorem complex.abs_cpow_of_ne_zero + theorem complex.abs_cpow_real + theorem complex.of_real_cpow + theorem complex.of_real_cpow_of_nonpos + theorem real.abs_log_mul_self_rpow_lt + theorem real.abs_rpow_le_abs_rpow + theorem real.abs_rpow_le_exp_log_mul + theorem real.abs_rpow_of_nonneg + theorem real.div_rpow + theorem real.eq_zero_rpow_iff + theorem real.exists_rat_pow_btwn + theorem real.exists_rat_pow_btwn_rat + theorem real.exists_rat_pow_btwn_rat_aux + theorem real.exp_mul + theorem real.exp_one_rpow + theorem real.inv_rpow + theorem real.le_rpow_add + theorem real.le_rpow_iff_log_le + theorem real.le_rpow_inv_iff_of_neg + theorem real.le_rpow_of_log_le + theorem real.log_rpow + theorem real.lt_rpow_iff_log_lt + theorem real.lt_rpow_inv_iff_of_neg + theorem real.lt_rpow_of_log_lt + theorem real.mul_rpow + theorem real.norm_rpow_of_nonneg + theorem real.one_le_rpow + theorem real.one_le_rpow_of_pos_of_le_one_of_nonpos + theorem real.one_lt_rpow + theorem real.one_lt_rpow_iff + theorem real.one_lt_rpow_iff_of_pos + theorem real.one_lt_rpow_of_pos_of_lt_one_of_neg + theorem real.one_rpow + theorem real.pow_nat_rpow_nat_inv + theorem real.rpow_add' + theorem real.rpow_add + theorem real.rpow_add_int + theorem real.rpow_add_nat + theorem real.rpow_add_of_nonneg + theorem real.rpow_add_one + theorem real.rpow_def + theorem real.rpow_def_of_neg + theorem real.rpow_def_of_nonneg + theorem real.rpow_def_of_nonpos + theorem real.rpow_def_of_pos + theorem real.rpow_div_two_eq_sqrt + theorem real.rpow_eq_pow + theorem real.rpow_eq_zero_iff_of_nonneg + theorem real.rpow_int_cast + theorem real.rpow_inv_le_iff_of_neg + theorem real.rpow_inv_lt_iff_of_neg + theorem real.rpow_le_one + theorem real.rpow_le_one_iff_of_pos + theorem real.rpow_le_one_of_one_le_of_nonpos + theorem real.rpow_le_rpow + theorem real.rpow_le_rpow_iff + theorem real.rpow_le_rpow_left_iff + theorem real.rpow_le_rpow_left_iff_of_base_lt_one + theorem real.rpow_le_rpow_of_exponent_ge' + theorem real.rpow_le_rpow_of_exponent_ge + theorem real.rpow_le_rpow_of_exponent_le + theorem real.rpow_left_inj_on + theorem real.rpow_lt_one + theorem real.rpow_lt_one_iff + theorem real.rpow_lt_one_iff_of_pos + theorem real.rpow_lt_one_of_one_lt_of_neg + theorem real.rpow_lt_rpow + theorem real.rpow_lt_rpow_iff + theorem real.rpow_lt_rpow_left_iff + theorem real.rpow_lt_rpow_left_iff_of_base_lt_one + theorem real.rpow_lt_rpow_of_exponent_gt + theorem real.rpow_lt_rpow_of_exponent_lt + theorem real.rpow_mul + theorem real.rpow_nat_cast + theorem real.rpow_nat_inv_pow_nat + theorem real.rpow_neg + theorem real.rpow_neg_one + theorem real.rpow_nonneg_of_nonneg + theorem real.rpow_one + theorem real.rpow_pos_of_pos + theorem real.rpow_sub' + theorem real.rpow_sub + theorem real.rpow_sub_int + theorem real.rpow_sub_nat + theorem real.rpow_sub_one + theorem real.rpow_sum_of_nonneg + theorem real.rpow_sum_of_pos + theorem real.rpow_two + theorem real.rpow_zero + theorem real.sqrt_eq_rpow + theorem real.zero_rpow + theorem real.zero_rpow_eq_iff + theorem real.zero_rpow_le_one + theorem real.zero_rpow_nonneg Added src/analysis/special_functions/pow/tactic.lean + theorem norm_num.cpow_neg + theorem norm_num.cpow_pos + theorem norm_num.ennrpow_neg + theorem norm_num.ennrpow_pos + theorem norm_num.nnrpow_neg + theorem norm_num.nnrpow_pos + theorem norm_num.rpow_neg + theorem norm_num.rpow_pos Modified src/analysis/specific_limits/floor_pow.lean Modified src/combinatorics/additive/behrend.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/linear_algebra/quadratic_form/complex.lean Modified src/linear_algebra/quadratic_form/real.lean Modified src/measure_theory/function/convergence_in_measure.lean Modified src/measure_theory/function/special_functions/basic.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/number_theory/bertrand.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/liouville/liouville_with.lean Modified src/ring_theory/perfection.lean Modified src/topology/metric_space/holder.lean Modified test/norm_num_ext.lean Modified test/positivity.lean 2023-05-15 16:30:23 24e0c85 chore(measure_theory/{integral/set_integral,function/*}): split out inner product space material (#19019) Split out inner product space material from ```text measure_theory/function/lp_space measure_theory/function/l1_space measure_theory/integral/set_integral ``` into `measure_theory/integral/l2_space`, the only place it's used. This removes the dependence of the Bochner integral file on `inner_product_space`. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean - theorem measure_theory.integrable.const_inner - theorem measure_theory.integrable.inner_const Modified src/measure_theory/function/l2_space.lean + theorem integral_eq_zero_of_forall_integral_inner_eq_zero + theorem integral_inner + theorem measure_theory.integrable.const_inner + theorem measure_theory.integrable.inner_const + theorem measure_theory.mem_ℒp.const_inner + theorem measure_theory.mem_ℒp.inner_const Modified src/measure_theory/function/lp_space.lean - theorem measure_theory.mem_ℒp.const_inner - theorem measure_theory.mem_ℒp.inner_const Modified src/measure_theory/integral/set_integral.lean - theorem integral_eq_zero_of_forall_integral_inner_eq_zero - theorem integral_inner 2023-05-15 10:56:56 1fd8518 chore(measure_theory/measure/haar_lebesgue): remove unecessary parens (#19017) Some cleanup extracted from a larger refactor. ESTIMATED CHANGES Modified src/measure_theory/measure/haar_lebesgue.lean 2023-05-15 08:40:11 dbdf71c chore(*): add mathlib4 synchronization comments (#19009) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.injective` * `algebra.category.Ring.basic` * `algebra.homology.augment` * `analysis.convex.contractible` * `analysis.convex.gauge` * `category_theory.abelian.homology` * `category_theory.subterminal` * `model_theory.bundled` * `model_theory.elementary_maps` * `model_theory.finitely_generated` * `model_theory.skolem` * `topology.category.Top.limits.cofiltered` * `topology.category.Top.limits.konig` * `topology.homotopy.contractible` * `topology.homotopy.path` * `topology.sheaves.abelian` ESTIMATED CHANGES Modified src/algebra/category/Group/injective.lean Modified src/algebra/category/Ring/basic.lean Modified src/algebra/homology/augment.lean Modified src/analysis/convex/contractible.lean Modified src/analysis/convex/gauge.lean Modified src/category_theory/abelian/homology.lean Modified src/category_theory/subterminal.lean Modified src/model_theory/bundled.lean Modified src/model_theory/elementary_maps.lean Modified src/model_theory/finitely_generated.lean Modified src/model_theory/skolem.lean Modified src/topology/category/Top/limits/cofiltered.lean Modified src/topology/category/Top/limits/konig.lean Modified src/topology/homotopy/contractible.lean Modified src/topology/homotopy/path.lean Modified src/topology/sheaves/abelian.lean 2023-05-15 07:08:25 e9f2a83 chore(analysis/normed_space/pi_Lp): add `pi_Lp.continuous_linear_equiv` (#19014) This bundling is often useful to have. We keep around `pi_Lp.linear_equiv` as this is shorter to write than `pi_Lp.continuous_linear_equiv.to_linear_equiv`. ESTIMATED CHANGES Modified src/analysis/normed_space/pi_Lp.lean 2023-05-15 07:08:24 4b884ef chore(measure_theory/measure/haar_of_basis): lemmas about `basis.parallelepiped` (#18873) These are bundled versions of the lemmas about `parallelepiped`. This is working towards the result that the measure on `euclidean_space` and the corresponding pi type agree. ESTIMATED CHANGES Modified src/measure_theory/measure/haar_of_basis.lean + theorem basis.coe_parallelepiped + theorem basis.parallelepiped_map + theorem basis.parallelepiped_reindex 2023-05-15 06:03:03 74a2713 feat(number_theory/legendre_symbol/*): add some API for the Legendre and the Jacobi symbol (#19011) This PR adds some additional API lemmas for the Legendre symbol (related to solutions mod `p` of `x^2-a*y^2 = 0`) and for the Jacobi symbol. These are useful for a project formalizing the proof that a certain diophantine equation has no integral solutions, but also appear to make sense more generally. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/jacobi_symbol.lean + theorem jacobi_sym.eq_neg_one_at_prime_divisor_of_eq_neg_one + theorem jacobi_sym.list_prod_left + theorem jacobi_sym.list_prod_right + theorem jacobi_sym.prime_dvd_of_eq_neg_one Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean + theorem legendre_sym.eq_one_of_sq_sub_mul_sq_eq_zero' + theorem legendre_sym.eq_one_of_sq_sub_mul_sq_eq_zero + theorem legendre_sym.eq_zero_mod_of_eq_neg_one + theorem legendre_sym.prime_dvd_of_eq_neg_one 2023-05-15 04:39:37 bf6a013 chore(measure_theory/{constructions/borel_space,integral/lebesgue}): split (#19015) Remove dependence on ```text import analysis.complex.basic import analysis.normed_space.basic import topology.instances.add_circle import topology.metric_space.metrizable ``` from `measure_theory.constructions.borel_space` (in particular this gets rid of the `operator_norm` dependency, which is currently the big blocker) and `measure_theory.integral.lebesgue`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_measurable.lean Modified src/dynamics/ergodic/conservative.lean Renamed src/measure_theory/constructions/borel_space.lean to src/measure_theory/constructions/borel_space/basic.lean - theorem ae_measurable.apply_continuous_linear_map - theorem ae_measurable_of_tendsto_metrizable_ae' - theorem ae_measurable_of_tendsto_metrizable_ae - theorem ae_measurable_of_unif_approx - theorem ae_measurable_smul_const - theorem continuous_linear_map.measurable_apply' - theorem continuous_linear_map.measurable_apply - theorem continuous_linear_map.measurable_coe - theorem continuous_linear_map.measurable_comp - theorem measurable.apply_continuous_linear_map - theorem measurable_limit_of_tendsto_metrizable_ae - theorem measurable_of_tendsto_ennreal' - theorem measurable_of_tendsto_ennreal - theorem measurable_of_tendsto_metrizable' - theorem measurable_of_tendsto_metrizable - theorem measurable_of_tendsto_metrizable_ae - theorem measurable_of_tendsto_nnreal' - theorem measurable_of_tendsto_nnreal - theorem measurable_smul_const Added src/measure_theory/constructions/borel_space/complex.lean Added src/measure_theory/constructions/borel_space/continuous_linear_map.lean + theorem ae_measurable.apply_continuous_linear_map + theorem ae_measurable_smul_const + theorem continuous_linear_map.measurable_apply' + theorem continuous_linear_map.measurable_apply + theorem continuous_linear_map.measurable_coe + theorem continuous_linear_map.measurable_comp + theorem measurable.apply_continuous_linear_map + theorem measurable_smul_const Added src/measure_theory/constructions/borel_space/metrizable.lean + theorem ae_measurable_of_tendsto_metrizable_ae' + theorem ae_measurable_of_tendsto_metrizable_ae + theorem ae_measurable_of_unif_approx + theorem measurable_limit_of_tendsto_metrizable_ae + theorem measurable_of_tendsto_ennreal' + theorem measurable_of_tendsto_ennreal + theorem measurable_of_tendsto_metrizable' + theorem measurable_of_tendsto_metrizable + theorem measurable_of_tendsto_metrizable_ae + theorem measurable_of_tendsto_nnreal' + theorem measurable_of_tendsto_nnreal Modified src/measure_theory/constructions/polish.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/function/ae_measurable_order.lean Modified src/measure_theory/function/ess_sup.lean Modified src/measure_theory/function/floor.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/function/simple_func.lean Modified src/measure_theory/function/special_functions/arctan.lean Modified src/measure_theory/function/special_functions/basic.lean Modified src/measure_theory/function/special_functions/inner.lean Modified src/measure_theory/function/strongly_measurable/basic.lean Modified src/measure_theory/integral/lebesgue.lean - theorem measure_theory.ae_measurable_with_density_iff Added src/measure_theory/integral/lebesgue_normed_space.lean + theorem ae_measurable_with_density_iff Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean 2023-05-14 22:21:24 2f5b500 fix(data/mv_polynomial): add missing `decidable_eq` arguments to lemmas (#18848) This does not change the type of any definitions; the effect of this PR is to make the *statement* of the lemmas syntactically more general. To ensure this catches them all, this removes `open_locale classical` from the beginning of every file in `data/mv_polynomial` and `ring_theory/mv_polynomial`. For definitions which bake in a `classical.dec_eq` assumption, this adds a lemma proven by `convert rfl` that unfolds them to a version with an arbitrary `decidable_eq` instance, following a pattern established elsewhere. Unlike previous refactors of this style this doesn't seemed to have helped any downstream proofs much. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.support_add +/- theorem mv_polynomial.support_mul +/- theorem mv_polynomial.support_sum Modified src/data/mv_polynomial/comm_ring.lean +/- theorem mv_polynomial.degrees_sub +/- theorem mv_polynomial.support_sub +/- theorem mv_polynomial.vars_sub_of_disjoint +/- theorem mv_polynomial.vars_sub_subset Modified src/data/mv_polynomial/equiv.lean Modified src/data/mv_polynomial/monad.lean +/- theorem mv_polynomial.vars_bind₁ Modified src/data/mv_polynomial/pderiv.lean +/- theorem mv_polynomial.pderiv_X +/- theorem mv_polynomial.pderiv_X_self + theorem mv_polynomial.pderiv_def Modified src/data/mv_polynomial/rename.lean +/- theorem mv_polynomial.support_rename_of_injective Modified src/data/mv_polynomial/supported.lean Modified src/data/mv_polynomial/variables.lean +/- def mv_polynomial.degree_of +/- theorem mv_polynomial.degree_of_X + theorem mv_polynomial.degree_of_def +/- theorem mv_polynomial.degrees_add +/- theorem mv_polynomial.degrees_add_of_disjoint + theorem mv_polynomial.degrees_def +/- theorem mv_polynomial.degrees_sum +/- def mv_polynomial.vars +/- theorem mv_polynomial.vars_add_of_disjoint +/- theorem mv_polynomial.vars_add_subset + theorem mv_polynomial.vars_def +/- theorem mv_polynomial.vars_eq_support_bUnion_support +/- theorem mv_polynomial.vars_mul +/- theorem mv_polynomial.vars_prod +/- theorem mv_polynomial.vars_rename +/- theorem mv_polynomial.vars_sum_of_disjoint +/- theorem mv_polynomial.vars_sum_subset Modified src/ring_theory/mv_polynomial/basic.lean +/- theorem mv_polynomial.mem_restrict_degree_iff_sup Modified src/ring_theory/mv_polynomial/homogeneous.lean Modified src/ring_theory/mv_polynomial/symmetric.lean Modified src/ring_theory/mv_polynomial/weighted_homogeneous.lean +/- theorem mv_polynomial.coeff_weighted_homogeneous_component +/- theorem mv_polynomial.weighted_homogeneous_component_apply +/- theorem mv_polynomial.weighted_homogeneous_component_weighted_homogeneous_polynomial Modified src/ring_theory/witt_vector/mul_coeff.lean 2023-05-14 15:14:09 7ad820c doc(number_theory/pell): fix links in module docstring (#19010) This PR fixes two typos in the module docstring of `number_theory.pell` (a missing and a mis-spelt namespace part), which prevented doc-gen from linking to the relevant statements. ESTIMATED CHANGES Modified src/number_theory/pell.lean 2023-05-14 09:06:46 7982767 chore(analysis/special_functions/gamma): split into 3 files (#19004) This PR splits the existing 1500-line file `analysis.special_functions.gamma` into 3 files. There are no changes to the content of the files (other than top-of-file docstrings and imports). ESTIMATED CHANGES Deleted src/analysis/special_functions/gamma.lean - def complex.Gamma - theorem complex.Gamma_add_one - theorem complex.Gamma_aux_recurrence1 - theorem complex.Gamma_aux_recurrence2 - theorem complex.Gamma_conj - theorem complex.Gamma_eq_Gamma_aux - theorem complex.Gamma_eq_integral - theorem complex.Gamma_eq_zero_iff - def complex.Gamma_integral - theorem complex.Gamma_integral_add_one - theorem complex.Gamma_integral_conj - theorem complex.Gamma_integral_convergent - theorem complex.Gamma_integral_of_real - theorem complex.Gamma_integral_one - theorem complex.Gamma_mul_Gamma_eq_beta_integral - theorem complex.Gamma_mul_Gamma_one_sub - theorem complex.Gamma_nat_eq_factorial - theorem complex.Gamma_ne_zero - theorem complex.Gamma_neg_nat_eq_zero - theorem complex.Gamma_of_real - theorem complex.Gamma_one - theorem complex.Gamma_seq_add_one_left - theorem complex.Gamma_seq_eq_approx_Gamma_integral - theorem complex.Gamma_seq_eq_beta_integral_of_re_pos - theorem complex.Gamma_seq_mul - theorem complex.Gamma_seq_tendsto_Gamma - theorem complex.Gamma_zero - theorem complex.approx_Gamma_integral_tendsto_Gamma_integral - theorem complex.beta_integral_convergent - theorem complex.beta_integral_convergent_left - theorem complex.beta_integral_eval_nat_add_one_right - theorem complex.beta_integral_eval_one_right - theorem complex.beta_integral_recurrence - theorem complex.beta_integral_scaled - theorem complex.beta_integral_symm - theorem complex.differentiable_at_Gamma - theorem complex.differentiable_at_Gamma_aux - theorem complex.has_deriv_at_Gamma_integral - def complex.partial_Gamma - theorem complex.partial_Gamma_add_one - theorem complex.tendsto_partial_Gamma - theorem dGamma_integral_abs_convergent - def dGamma_integrand - theorem dGamma_integrand_is_o_at_top - def dGamma_integrand_real - theorem loc_unif_bound_dGamma_integrand - def real.Gamma - theorem real.Gamma_add_one - theorem real.Gamma_eq_integral - theorem real.Gamma_eq_zero_iff - theorem real.Gamma_integral_convergent - theorem real.Gamma_integrand_is_o - theorem real.Gamma_mul_Gamma_one_sub - theorem real.Gamma_mul_add_mul_le_rpow_Gamma_mul_rpow_Gamma - theorem real.Gamma_nat_eq_factorial - theorem real.Gamma_ne_zero - theorem real.Gamma_neg_nat_eq_zero - theorem real.Gamma_one - theorem real.Gamma_pos_of_pos - theorem real.Gamma_seq_tendsto_Gamma - theorem real.Gamma_strict_mono_on_Ici - theorem real.Gamma_three_div_two_lt_one - theorem real.Gamma_two - theorem real.Gamma_zero - theorem real.bohr_mollerup.f_add_nat_eq - theorem real.bohr_mollerup.f_add_nat_ge - theorem real.bohr_mollerup.f_add_nat_le - theorem real.bohr_mollerup.f_nat_eq - theorem real.bohr_mollerup.ge_log_gamma_seq - theorem real.bohr_mollerup.le_log_gamma_seq - def real.bohr_mollerup.log_gamma_seq - theorem real.bohr_mollerup.log_gamma_seq_add_one - theorem real.bohr_mollerup.tendsto_log_Gamma - theorem real.bohr_mollerup.tendsto_log_gamma_seq - theorem real.bohr_mollerup.tendsto_log_gamma_seq_of_le_one - theorem real.convex_on_Gamma - theorem real.convex_on_log_Gamma - theorem real.differentiable_at_Gamma - theorem real.eq_Gamma_of_log_convex Added src/analysis/special_functions/gamma/basic.lean + def complex.Gamma + theorem complex.Gamma_add_one + theorem complex.Gamma_aux_recurrence1 + theorem complex.Gamma_aux_recurrence2 + theorem complex.Gamma_conj + theorem complex.Gamma_eq_Gamma_aux + theorem complex.Gamma_eq_integral + def complex.Gamma_integral + theorem complex.Gamma_integral_add_one + theorem complex.Gamma_integral_conj + theorem complex.Gamma_integral_convergent + theorem complex.Gamma_integral_of_real + theorem complex.Gamma_integral_one + theorem complex.Gamma_nat_eq_factorial + theorem complex.Gamma_neg_nat_eq_zero + theorem complex.Gamma_of_real + theorem complex.Gamma_one + theorem complex.Gamma_zero + theorem complex.differentiable_at_Gamma + theorem complex.differentiable_at_Gamma_aux + theorem complex.has_deriv_at_Gamma_integral + def complex.partial_Gamma + theorem complex.partial_Gamma_add_one + theorem complex.tendsto_partial_Gamma + theorem dGamma_integral_abs_convergent + def dGamma_integrand + theorem dGamma_integrand_is_o_at_top + def dGamma_integrand_real + theorem loc_unif_bound_dGamma_integrand + def real.Gamma + theorem real.Gamma_add_one + theorem real.Gamma_eq_integral + theorem real.Gamma_eq_zero_iff + theorem real.Gamma_integral_convergent + theorem real.Gamma_integrand_is_o + theorem real.Gamma_nat_eq_factorial + theorem real.Gamma_ne_zero + theorem real.Gamma_neg_nat_eq_zero + theorem real.Gamma_one + theorem real.Gamma_pos_of_pos + theorem real.Gamma_zero + theorem real.differentiable_at_Gamma Added src/analysis/special_functions/gamma/beta.lean + theorem complex.Gamma_eq_zero_iff + theorem complex.Gamma_mul_Gamma_eq_beta_integral + theorem complex.Gamma_mul_Gamma_one_sub + theorem complex.Gamma_ne_zero + theorem complex.Gamma_seq_add_one_left + theorem complex.Gamma_seq_eq_approx_Gamma_integral + theorem complex.Gamma_seq_eq_beta_integral_of_re_pos + theorem complex.Gamma_seq_mul + theorem complex.Gamma_seq_tendsto_Gamma + theorem complex.approx_Gamma_integral_tendsto_Gamma_integral + theorem complex.beta_integral_convergent + theorem complex.beta_integral_convergent_left + theorem complex.beta_integral_eval_nat_add_one_right + theorem complex.beta_integral_eval_one_right + theorem complex.beta_integral_recurrence + theorem complex.beta_integral_scaled + theorem complex.beta_integral_symm + theorem real.Gamma_mul_Gamma_one_sub + theorem real.Gamma_seq_tendsto_Gamma Added src/analysis/special_functions/gamma/bohr_mollerup.lean + theorem real.Gamma_mul_add_mul_le_rpow_Gamma_mul_rpow_Gamma + theorem real.Gamma_strict_mono_on_Ici + theorem real.Gamma_three_div_two_lt_one + theorem real.Gamma_two + theorem real.bohr_mollerup.f_add_nat_eq + theorem real.bohr_mollerup.f_add_nat_ge + theorem real.bohr_mollerup.f_add_nat_le + theorem real.bohr_mollerup.f_nat_eq + theorem real.bohr_mollerup.ge_log_gamma_seq + theorem real.bohr_mollerup.le_log_gamma_seq + def real.bohr_mollerup.log_gamma_seq + theorem real.bohr_mollerup.log_gamma_seq_add_one + theorem real.bohr_mollerup.tendsto_log_Gamma + theorem real.bohr_mollerup.tendsto_log_gamma_seq + theorem real.bohr_mollerup.tendsto_log_gamma_seq_of_le_one + theorem real.convex_on_Gamma + theorem real.convex_on_log_Gamma + theorem real.eq_Gamma_of_log_convex Modified src/analysis/special_functions/gaussian.lean 2023-05-13 18:07:21 e3fb840 chore(analysis/calculus/fderiv): split huge file into many pieces (#18995) Splits `analysis/calculus/fderiv.lean` into many subfiles. The file was already structured into well-organized sections. Small sections that fit well-together contentwise end up in a single file. Larger sections get their own file. The order of the sections changed a bit (to the extent that it still makes sense to say that they are ordered, after the split). But none of the sections were split into subsections. ESTIMATED CHANGES Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/calculus/conformal/normed_space.lean Modified src/analysis/calculus/cont_diff_def.lean Modified src/analysis/calculus/deriv.lean Added src/analysis/calculus/fderiv/add.lean + theorem differentiable.add + theorem differentiable.add_const + theorem differentiable.const_add + theorem differentiable.const_smul + theorem differentiable.const_sub + theorem differentiable.neg + theorem differentiable.sub + theorem differentiable.sub_const + theorem differentiable.sum + theorem differentiable_add_const_iff + theorem differentiable_at.add + theorem differentiable_at.add_const + theorem differentiable_at.const_add + theorem differentiable_at.const_smul + theorem differentiable_at.const_sub + theorem differentiable_at.neg + theorem differentiable_at.sub + theorem differentiable_at.sub_const + theorem differentiable_at.sum + theorem differentiable_at_add_const_iff + theorem differentiable_at_const_add_iff + theorem differentiable_at_const_sub_iff + theorem differentiable_at_neg_iff + theorem differentiable_at_sub_const_iff + theorem differentiable_const_add_iff + theorem differentiable_const_sub_iff + theorem differentiable_neg_iff + theorem differentiable_on.add + theorem differentiable_on.add_const + theorem differentiable_on.const_add + theorem differentiable_on.const_smul + theorem differentiable_on.const_sub + theorem differentiable_on.neg + theorem differentiable_on.sub + theorem differentiable_on.sub_const + theorem differentiable_on.sum + theorem differentiable_on_add_const_iff + theorem differentiable_on_const_add_iff + theorem differentiable_on_const_sub_iff + theorem differentiable_on_neg_iff + theorem differentiable_on_sub_const_iff + theorem differentiable_sub_const_iff + theorem differentiable_within_at.add + theorem differentiable_within_at.add_const + theorem differentiable_within_at.const_add + theorem differentiable_within_at.const_smul + theorem differentiable_within_at.const_sub + theorem differentiable_within_at.neg + theorem differentiable_within_at.sub + theorem differentiable_within_at.sub_const + theorem differentiable_within_at.sum + theorem differentiable_within_at_add_const_iff + theorem differentiable_within_at_const_add_iff + theorem differentiable_within_at_const_sub_iff + theorem differentiable_within_at_neg_iff + theorem differentiable_within_at_sub_const_iff + theorem fderiv_add + theorem fderiv_add_const + theorem fderiv_const_add + theorem fderiv_const_smul + theorem fderiv_const_sub + theorem fderiv_neg + theorem fderiv_sub + theorem fderiv_sub_const + theorem fderiv_sum + theorem fderiv_within_add + theorem fderiv_within_add_const + theorem fderiv_within_const_add + theorem fderiv_within_const_smul + theorem fderiv_within_const_sub + theorem fderiv_within_neg + theorem fderiv_within_sub + theorem fderiv_within_sub_const + theorem fderiv_within_sum + theorem has_fderiv_at.add + theorem has_fderiv_at.add_const + theorem has_fderiv_at.const_add + theorem has_fderiv_at.const_smul + theorem has_fderiv_at.const_sub + theorem has_fderiv_at.neg + theorem has_fderiv_at.sub + theorem has_fderiv_at.sub_const + theorem has_fderiv_at.sum + theorem has_fderiv_at_filter.add + theorem has_fderiv_at_filter.add_const + theorem has_fderiv_at_filter.const_add + theorem has_fderiv_at_filter.const_smul + theorem has_fderiv_at_filter.const_sub + theorem has_fderiv_at_filter.neg + theorem has_fderiv_at_filter.sub + theorem has_fderiv_at_filter.sub_const + theorem has_fderiv_at_filter.sum + theorem has_fderiv_within_at.add + theorem has_fderiv_within_at.add_const + theorem has_fderiv_within_at.const_add + theorem has_fderiv_within_at.const_smul + theorem has_fderiv_within_at.const_sub + theorem has_fderiv_within_at.neg + theorem has_fderiv_within_at.sub + theorem has_fderiv_within_at.sub_const + theorem has_fderiv_within_at.sum + theorem has_strict_fderiv_at.add + theorem has_strict_fderiv_at.add_const + theorem has_strict_fderiv_at.const_add + theorem has_strict_fderiv_at.const_smul + theorem has_strict_fderiv_at.const_sub + theorem has_strict_fderiv_at.neg + theorem has_strict_fderiv_at.sub + theorem has_strict_fderiv_at.sub_const + theorem has_strict_fderiv_at.sum Modified src/analysis/calculus/fderiv/basic.lean - theorem continuous_linear_equiv.comp_differentiable_at_iff - theorem continuous_linear_equiv.comp_differentiable_iff - theorem continuous_linear_equiv.comp_differentiable_on_iff - theorem continuous_linear_equiv.comp_differentiable_within_at_iff - theorem continuous_linear_equiv.comp_fderiv - theorem continuous_linear_equiv.comp_fderiv_within - theorem continuous_linear_equiv.comp_has_fderiv_at_iff' - theorem continuous_linear_equiv.comp_has_fderiv_at_iff - theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff' - theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff - theorem continuous_linear_equiv.comp_has_strict_fderiv_at_iff - theorem continuous_linear_equiv.comp_right_differentiable_at_iff - theorem continuous_linear_equiv.comp_right_differentiable_iff - theorem continuous_linear_equiv.comp_right_differentiable_on_iff - theorem continuous_linear_equiv.comp_right_differentiable_within_at_iff - theorem continuous_linear_equiv.comp_right_fderiv - theorem continuous_linear_equiv.comp_right_fderiv_within - theorem continuous_linear_equiv.comp_right_has_fderiv_at_iff' - theorem continuous_linear_equiv.comp_right_has_fderiv_at_iff - theorem continuous_linear_equiv.comp_right_has_fderiv_within_at_iff' - theorem continuous_linear_equiv.comp_right_has_fderiv_within_at_iff - theorem continuous_linear_equiv.unique_diff_on_image - theorem continuous_linear_equiv.unique_diff_on_image_iff - theorem continuous_linear_equiv.unique_diff_on_preimage_iff - theorem continuous_linear_map.fderiv_of_bilinear - theorem continuous_linear_map.fderiv_within_of_bilinear - theorem continuous_linear_map.has_fderiv_at_of_bilinear - theorem continuous_linear_map.has_fderiv_within_at_of_bilinear - theorem differentiable.add - theorem differentiable.add_const - theorem differentiable.clm_apply - theorem differentiable.clm_comp - theorem differentiable.comp - theorem differentiable.comp_differentiable_on - theorem differentiable.const_add - theorem differentiable.const_mul - theorem differentiable.const_smul - theorem differentiable.const_sub - theorem differentiable.mul - theorem differentiable.mul_const - theorem differentiable.neg - theorem differentiable.pow - theorem differentiable.prod - theorem differentiable.restrict_scalars - theorem differentiable.smul - theorem differentiable.smul_const - theorem differentiable.sub - theorem differentiable.sub_const - theorem differentiable.sum - theorem differentiable_add_const_iff - theorem differentiable_at.add - theorem differentiable_at.add_const - theorem differentiable_at.clm_apply - theorem differentiable_at.clm_comp - theorem differentiable_at.comp - theorem differentiable_at.comp_differentiable_within_at - theorem differentiable_at.const_add - theorem differentiable_at.const_mul - theorem differentiable_at.const_smul - theorem differentiable_at.const_sub - theorem differentiable_at.fderiv_prod - theorem differentiable_at.fderiv_restrict_scalars - theorem differentiable_at.fderiv_within_prod - theorem differentiable_at.mul - theorem differentiable_at.mul_const - theorem differentiable_at.neg - theorem differentiable_at.pow - theorem differentiable_at.prod - theorem differentiable_at.restrict_scalars - theorem differentiable_at.smul - theorem differentiable_at.smul_const - theorem differentiable_at.sub - theorem differentiable_at.sub_const - theorem differentiable_at.sum - theorem differentiable_at_add_const_iff - theorem differentiable_at_const_add_iff - theorem differentiable_at_const_sub_iff - theorem differentiable_at_fst - theorem differentiable_at_iff_restrict_scalars - theorem differentiable_at_inverse - theorem differentiable_at_neg_iff - theorem differentiable_at_pi - theorem differentiable_at_snd - theorem differentiable_at_sub_const_iff - theorem differentiable_const_add_iff - theorem differentiable_const_sub_iff - theorem differentiable_fst - theorem differentiable_neg_iff - theorem differentiable_on.add - theorem differentiable_on.add_const - theorem differentiable_on.clm_apply - theorem differentiable_on.clm_comp - theorem differentiable_on.comp - theorem differentiable_on.const_add - theorem differentiable_on.const_mul - theorem differentiable_on.const_smul - theorem differentiable_on.const_sub - theorem differentiable_on.mul - theorem differentiable_on.mul_const - theorem differentiable_on.neg - theorem differentiable_on.pow - theorem differentiable_on.prod - theorem differentiable_on.restrict_scalars - theorem differentiable_on.smul - theorem differentiable_on.smul_const - theorem differentiable_on.sub - theorem differentiable_on.sub_const - theorem differentiable_on.sum - theorem differentiable_on_add_const_iff - theorem differentiable_on_const_add_iff - theorem differentiable_on_const_sub_iff - theorem differentiable_on_fst - theorem differentiable_on_neg_iff - theorem differentiable_on_pi - theorem differentiable_on_snd - theorem differentiable_on_sub_const_iff - theorem differentiable_pi - theorem differentiable_snd - theorem differentiable_sub_const_iff - theorem differentiable_within_at.add - theorem differentiable_within_at.add_const - theorem differentiable_within_at.clm_apply - theorem differentiable_within_at.clm_comp - theorem differentiable_within_at.comp' - theorem differentiable_within_at.comp - theorem differentiable_within_at.const_add - theorem differentiable_within_at.const_mul - theorem differentiable_within_at.const_smul - theorem differentiable_within_at.const_sub - theorem differentiable_within_at.mul - theorem differentiable_within_at.mul_const - theorem differentiable_within_at.neg - theorem differentiable_within_at.pow - theorem differentiable_within_at.prod - theorem differentiable_within_at.restrict_scalars - theorem differentiable_within_at.smul - theorem differentiable_within_at.smul_const - theorem differentiable_within_at.sub - theorem differentiable_within_at.sub_const - theorem differentiable_within_at.sum - theorem differentiable_within_at_add_const_iff - theorem differentiable_within_at_const_add_iff - theorem differentiable_within_at_const_sub_iff - theorem differentiable_within_at_fst - theorem differentiable_within_at_iff_restrict_scalars - theorem differentiable_within_at_neg_iff - theorem differentiable_within_at_pi - theorem differentiable_within_at_snd - theorem differentiable_within_at_sub_const_iff - theorem fderiv.comp - theorem fderiv.comp_fderiv_within - theorem fderiv.fst - theorem fderiv.snd - theorem fderiv_add - theorem fderiv_add_const - theorem fderiv_clm_apply - theorem fderiv_clm_comp - theorem fderiv_const_add - theorem fderiv_const_mul - theorem fderiv_const_smul - theorem fderiv_const_sub - theorem fderiv_fst - theorem fderiv_inverse - theorem fderiv_mul' - theorem fderiv_mul - theorem fderiv_mul_const' - theorem fderiv_mul_const - theorem fderiv_neg - theorem fderiv_pi - theorem fderiv_smul - theorem fderiv_smul_const - theorem fderiv_snd - theorem fderiv_sub - theorem fderiv_sub_const - theorem fderiv_sum - theorem fderiv_within.comp - theorem fderiv_within.comp₃ - theorem fderiv_within.fst - theorem fderiv_within.snd - theorem fderiv_within_add - theorem fderiv_within_add_const - theorem fderiv_within_clm_apply - theorem fderiv_within_clm_comp - theorem fderiv_within_const_add - theorem fderiv_within_const_mul - theorem fderiv_within_const_smul - theorem fderiv_within_const_sub - theorem fderiv_within_fderiv_within - theorem fderiv_within_fst - theorem fderiv_within_mul' - theorem fderiv_within_mul - theorem fderiv_within_mul_const' - theorem fderiv_within_mul_const - theorem fderiv_within_neg - theorem fderiv_within_pi - theorem fderiv_within_smul - theorem fderiv_within_smul_const - theorem fderiv_within_snd - theorem fderiv_within_sub - theorem fderiv_within_sub_const - theorem fderiv_within_sum - theorem has_fderiv_at.add - theorem has_fderiv_at.add_const - theorem has_fderiv_at.clm_apply - theorem has_fderiv_at.clm_comp - theorem has_fderiv_at.comp - theorem has_fderiv_at.comp_has_fderiv_within_at - theorem has_fderiv_at.const_add - theorem has_fderiv_at.const_mul - theorem has_fderiv_at.const_smul - theorem has_fderiv_at.const_sub - theorem has_fderiv_at.eventually_ne - theorem has_fderiv_at.lim_real - theorem has_fderiv_at.mul' - theorem has_fderiv_at.mul - theorem has_fderiv_at.mul_const' - theorem has_fderiv_at.mul_const - theorem has_fderiv_at.neg - theorem has_fderiv_at.of_local_left_inverse - theorem has_fderiv_at.prod - theorem has_fderiv_at.restrict_scalars - theorem has_fderiv_at.smul - theorem has_fderiv_at.smul_const - theorem has_fderiv_at.sub - theorem has_fderiv_at.sub_const - theorem has_fderiv_at.sum - theorem has_fderiv_at_filter.add - theorem has_fderiv_at_filter.add_const - theorem has_fderiv_at_filter.comp - theorem has_fderiv_at_filter.const_add - theorem has_fderiv_at_filter.const_smul - theorem has_fderiv_at_filter.const_sub - theorem has_fderiv_at_filter.neg - theorem has_fderiv_at_filter.prod - theorem has_fderiv_at_filter.restrict_scalars - theorem has_fderiv_at_filter.sub - theorem has_fderiv_at_filter.sub_const - theorem has_fderiv_at_filter.sum - theorem has_fderiv_at_filter_fst - theorem has_fderiv_at_filter_pi' - theorem has_fderiv_at_filter_pi - theorem has_fderiv_at_filter_real_equiv - theorem has_fderiv_at_filter_snd - theorem has_fderiv_at_fst - theorem has_fderiv_at_of_restrict_scalars - theorem has_fderiv_at_pi' - theorem has_fderiv_at_pi - theorem has_fderiv_at_prod_mk_left - theorem has_fderiv_at_prod_mk_right - theorem has_fderiv_at_ring_inverse - theorem has_fderiv_at_snd - theorem has_fderiv_within_at.add - theorem has_fderiv_within_at.add_const - theorem has_fderiv_within_at.clm_apply - theorem has_fderiv_within_at.clm_comp - theorem has_fderiv_within_at.comp - theorem has_fderiv_within_at.comp_of_mem - theorem has_fderiv_within_at.const_add - theorem has_fderiv_within_at.const_mul - theorem has_fderiv_within_at.const_smul - theorem has_fderiv_within_at.const_sub - theorem has_fderiv_within_at.eventually_ne - theorem has_fderiv_within_at.maps_to_tangent_cone - theorem has_fderiv_within_at.mul' - theorem has_fderiv_within_at.mul - theorem has_fderiv_within_at.mul_const' - theorem has_fderiv_within_at.mul_const - theorem has_fderiv_within_at.neg - theorem has_fderiv_within_at.prod - theorem has_fderiv_within_at.restrict_scalars - theorem has_fderiv_within_at.smul - theorem has_fderiv_within_at.smul_const - theorem has_fderiv_within_at.sub - theorem has_fderiv_within_at.sub_const - theorem has_fderiv_within_at.sum - theorem has_fderiv_within_at.unique_diff_within_at - theorem has_fderiv_within_at.unique_diff_within_at_of_continuous_linear_equiv - theorem has_fderiv_within_at_fst - theorem has_fderiv_within_at_of_restrict_scalars - theorem has_fderiv_within_at_pi' - theorem has_fderiv_within_at_pi - theorem has_fderiv_within_at_snd - theorem has_strict_fderiv_at.add - theorem has_strict_fderiv_at.add_const - theorem has_strict_fderiv_at.clm_apply - theorem has_strict_fderiv_at.clm_comp - theorem has_strict_fderiv_at.const_add - theorem has_strict_fderiv_at.const_mul - theorem has_strict_fderiv_at.const_smul - theorem has_strict_fderiv_at.const_sub - theorem has_strict_fderiv_at.mul' - theorem has_strict_fderiv_at.mul - theorem has_strict_fderiv_at.mul_const' - theorem has_strict_fderiv_at.mul_const - theorem has_strict_fderiv_at.neg - theorem has_strict_fderiv_at.of_local_left_inverse - theorem has_strict_fderiv_at.restrict_scalars - theorem has_strict_fderiv_at.smul - theorem has_strict_fderiv_at.smul_const - theorem has_strict_fderiv_at.sub - theorem has_strict_fderiv_at.sub_const - theorem has_strict_fderiv_at.sum - theorem has_strict_fderiv_at_fst - theorem has_strict_fderiv_at_pi' - theorem has_strict_fderiv_at_pi - theorem has_strict_fderiv_at_snd - theorem is_bounded_bilinear_map.differentiable - theorem is_bounded_bilinear_map.differentiable_at - theorem is_bounded_bilinear_map.differentiable_on - theorem is_bounded_bilinear_map.differentiable_within_at - theorem is_bounded_bilinear_map.fderiv - theorem is_bounded_bilinear_map.fderiv_within - theorem is_bounded_bilinear_map.has_fderiv_at - theorem is_bounded_bilinear_map.has_fderiv_within_at - theorem is_bounded_bilinear_map.has_strict_fderiv_at - theorem is_bounded_linear_map.differentiable - theorem is_bounded_linear_map.differentiable_at - theorem is_bounded_linear_map.differentiable_on - theorem is_bounded_linear_map.differentiable_within_at - theorem is_bounded_linear_map.fderiv - theorem is_bounded_linear_map.fderiv_within - theorem is_bounded_linear_map.has_fderiv_at - theorem is_bounded_linear_map.has_fderiv_at_filter - theorem is_bounded_linear_map.has_fderiv_within_at - theorem linear_isometry_equiv.comp_differentiable_at_iff - theorem linear_isometry_equiv.comp_differentiable_iff - theorem linear_isometry_equiv.comp_differentiable_on_iff - theorem linear_isometry_equiv.comp_differentiable_within_at_iff - theorem linear_isometry_equiv.comp_fderiv - theorem linear_isometry_equiv.comp_fderiv_within - theorem linear_isometry_equiv.comp_has_fderiv_at_iff' - theorem linear_isometry_equiv.comp_has_fderiv_at_iff - theorem linear_isometry_equiv.comp_has_fderiv_within_at_iff' - theorem linear_isometry_equiv.comp_has_fderiv_within_at_iff - theorem linear_isometry_equiv.comp_has_strict_fderiv_at_iff - theorem local_homeomorph.has_fderiv_at_symm - theorem local_homeomorph.has_strict_fderiv_at_symm - theorem unique_diff_on.image Added src/analysis/calculus/fderiv/bilinear.lean + theorem continuous_linear_map.fderiv_of_bilinear + theorem continuous_linear_map.fderiv_within_of_bilinear + theorem continuous_linear_map.has_fderiv_at_of_bilinear + theorem continuous_linear_map.has_fderiv_within_at_of_bilinear + theorem is_bounded_bilinear_map.differentiable + theorem is_bounded_bilinear_map.differentiable_at + theorem is_bounded_bilinear_map.differentiable_on + theorem is_bounded_bilinear_map.differentiable_within_at + theorem is_bounded_bilinear_map.fderiv + theorem is_bounded_bilinear_map.fderiv_within + theorem is_bounded_bilinear_map.has_fderiv_at + theorem is_bounded_bilinear_map.has_fderiv_within_at + theorem is_bounded_bilinear_map.has_strict_fderiv_at Added src/analysis/calculus/fderiv/comp.lean + theorem differentiable.comp + theorem differentiable.comp_differentiable_on + theorem differentiable_at.comp + theorem differentiable_at.comp_differentiable_within_at + theorem differentiable_on.comp + theorem differentiable_within_at.comp' + theorem differentiable_within_at.comp + theorem fderiv.comp + theorem fderiv.comp_fderiv_within + theorem fderiv_within.comp + theorem fderiv_within.comp₃ + theorem fderiv_within_fderiv_within + theorem has_fderiv_at.comp + theorem has_fderiv_at.comp_has_fderiv_within_at + theorem has_fderiv_at_filter.comp + theorem has_fderiv_within_at.comp + theorem has_fderiv_within_at.comp_of_mem Added src/analysis/calculus/fderiv/equiv.lean + theorem continuous_linear_equiv.comp_differentiable_at_iff + theorem continuous_linear_equiv.comp_differentiable_iff + theorem continuous_linear_equiv.comp_differentiable_on_iff + theorem continuous_linear_equiv.comp_differentiable_within_at_iff + theorem continuous_linear_equiv.comp_fderiv + theorem continuous_linear_equiv.comp_fderiv_within + theorem continuous_linear_equiv.comp_has_fderiv_at_iff' + theorem continuous_linear_equiv.comp_has_fderiv_at_iff + theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff' + theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff + theorem continuous_linear_equiv.comp_has_strict_fderiv_at_iff + theorem continuous_linear_equiv.comp_right_differentiable_at_iff + theorem continuous_linear_equiv.comp_right_differentiable_iff + theorem continuous_linear_equiv.comp_right_differentiable_on_iff + theorem continuous_linear_equiv.comp_right_differentiable_within_at_iff + theorem continuous_linear_equiv.comp_right_fderiv + theorem continuous_linear_equiv.comp_right_fderiv_within + theorem continuous_linear_equiv.comp_right_has_fderiv_at_iff' + theorem continuous_linear_equiv.comp_right_has_fderiv_at_iff + theorem continuous_linear_equiv.comp_right_has_fderiv_within_at_iff' + theorem continuous_linear_equiv.comp_right_has_fderiv_within_at_iff + theorem continuous_linear_equiv.unique_diff_on_image + theorem continuous_linear_equiv.unique_diff_on_image_iff + theorem continuous_linear_equiv.unique_diff_on_preimage_iff + theorem has_fderiv_at.eventually_ne + theorem has_fderiv_at.lim_real + theorem has_fderiv_at.of_local_left_inverse + theorem has_fderiv_at_filter_real_equiv + theorem has_fderiv_within_at.eventually_ne + theorem has_fderiv_within_at.maps_to_tangent_cone + theorem has_fderiv_within_at.unique_diff_within_at + theorem has_fderiv_within_at.unique_diff_within_at_of_continuous_linear_equiv + theorem has_strict_fderiv_at.of_local_left_inverse + theorem linear_isometry_equiv.comp_differentiable_at_iff + theorem linear_isometry_equiv.comp_differentiable_iff + theorem linear_isometry_equiv.comp_differentiable_on_iff + theorem linear_isometry_equiv.comp_differentiable_within_at_iff + theorem linear_isometry_equiv.comp_fderiv + theorem linear_isometry_equiv.comp_fderiv_within + theorem linear_isometry_equiv.comp_has_fderiv_at_iff' + theorem linear_isometry_equiv.comp_has_fderiv_at_iff + theorem linear_isometry_equiv.comp_has_fderiv_within_at_iff' + theorem linear_isometry_equiv.comp_has_fderiv_within_at_iff + theorem linear_isometry_equiv.comp_has_strict_fderiv_at_iff + theorem local_homeomorph.has_fderiv_at_symm + theorem local_homeomorph.has_strict_fderiv_at_symm + theorem unique_diff_on.image Added src/analysis/calculus/fderiv/linear.lean + theorem is_bounded_linear_map.differentiable + theorem is_bounded_linear_map.differentiable_at + theorem is_bounded_linear_map.differentiable_on + theorem is_bounded_linear_map.differentiable_within_at + theorem is_bounded_linear_map.fderiv + theorem is_bounded_linear_map.fderiv_within + theorem is_bounded_linear_map.has_fderiv_at + theorem is_bounded_linear_map.has_fderiv_at_filter + theorem is_bounded_linear_map.has_fderiv_within_at Added src/analysis/calculus/fderiv/mul.lean + theorem differentiable.clm_apply + theorem differentiable.clm_comp + theorem differentiable.const_mul + theorem differentiable.mul + theorem differentiable.mul_const + theorem differentiable.pow + theorem differentiable.smul + theorem differentiable.smul_const + theorem differentiable_at.clm_apply + theorem differentiable_at.clm_comp + theorem differentiable_at.const_mul + theorem differentiable_at.mul + theorem differentiable_at.mul_const + theorem differentiable_at.pow + theorem differentiable_at.smul + theorem differentiable_at.smul_const + theorem differentiable_at_inverse + theorem differentiable_on.clm_apply + theorem differentiable_on.clm_comp + theorem differentiable_on.const_mul + theorem differentiable_on.mul + theorem differentiable_on.mul_const + theorem differentiable_on.pow + theorem differentiable_on.smul + theorem differentiable_on.smul_const + theorem differentiable_within_at.clm_apply + theorem differentiable_within_at.clm_comp + theorem differentiable_within_at.const_mul + theorem differentiable_within_at.mul + theorem differentiable_within_at.mul_const + theorem differentiable_within_at.pow + theorem differentiable_within_at.smul + theorem differentiable_within_at.smul_const + theorem fderiv_clm_apply + theorem fderiv_clm_comp + theorem fderiv_const_mul + theorem fderiv_inverse + theorem fderiv_mul' + theorem fderiv_mul + theorem fderiv_mul_const' + theorem fderiv_mul_const + theorem fderiv_smul + theorem fderiv_smul_const + theorem fderiv_within_clm_apply + theorem fderiv_within_clm_comp + theorem fderiv_within_const_mul + theorem fderiv_within_mul' + theorem fderiv_within_mul + theorem fderiv_within_mul_const' + theorem fderiv_within_mul_const + theorem fderiv_within_smul + theorem fderiv_within_smul_const + theorem has_fderiv_at.clm_apply + theorem has_fderiv_at.clm_comp + theorem has_fderiv_at.const_mul + theorem has_fderiv_at.mul' + theorem has_fderiv_at.mul + theorem has_fderiv_at.mul_const' + theorem has_fderiv_at.mul_const + theorem has_fderiv_at.smul + theorem has_fderiv_at.smul_const + theorem has_fderiv_at_ring_inverse + theorem has_fderiv_within_at.clm_apply + theorem has_fderiv_within_at.clm_comp + theorem has_fderiv_within_at.const_mul + theorem has_fderiv_within_at.mul' + theorem has_fderiv_within_at.mul + theorem has_fderiv_within_at.mul_const' + theorem has_fderiv_within_at.mul_const + theorem has_fderiv_within_at.smul + theorem has_fderiv_within_at.smul_const + theorem has_strict_fderiv_at.clm_apply + theorem has_strict_fderiv_at.clm_comp + theorem has_strict_fderiv_at.const_mul + theorem has_strict_fderiv_at.mul' + theorem has_strict_fderiv_at.mul + theorem has_strict_fderiv_at.mul_const' + theorem has_strict_fderiv_at.mul_const + theorem has_strict_fderiv_at.smul + theorem has_strict_fderiv_at.smul_const Added src/analysis/calculus/fderiv/prod.lean + theorem differentiable.prod + theorem differentiable_at.fderiv_prod + theorem differentiable_at.fderiv_within_prod + theorem differentiable_at.prod + theorem differentiable_at_fst + theorem differentiable_at_pi + theorem differentiable_at_snd + theorem differentiable_fst + theorem differentiable_on.prod + theorem differentiable_on_fst + theorem differentiable_on_pi + theorem differentiable_on_snd + theorem differentiable_pi + theorem differentiable_snd + theorem differentiable_within_at.prod + theorem differentiable_within_at_fst + theorem differentiable_within_at_pi + theorem differentiable_within_at_snd + theorem fderiv.fst + theorem fderiv.snd + theorem fderiv_fst + theorem fderiv_pi + theorem fderiv_snd + theorem fderiv_within.fst + theorem fderiv_within.snd + theorem fderiv_within_fst + theorem fderiv_within_pi + theorem fderiv_within_snd + theorem has_fderiv_at.prod + theorem has_fderiv_at_filter.prod + theorem has_fderiv_at_filter_fst + theorem has_fderiv_at_filter_pi' + theorem has_fderiv_at_filter_pi + theorem has_fderiv_at_filter_snd + theorem has_fderiv_at_fst + theorem has_fderiv_at_pi' + theorem has_fderiv_at_pi + theorem has_fderiv_at_prod_mk_left + theorem has_fderiv_at_prod_mk_right + theorem has_fderiv_at_snd + theorem has_fderiv_within_at.prod + theorem has_fderiv_within_at_fst + theorem has_fderiv_within_at_pi' + theorem has_fderiv_within_at_pi + theorem has_fderiv_within_at_snd + theorem has_strict_fderiv_at_fst + theorem has_strict_fderiv_at_pi' + theorem has_strict_fderiv_at_pi + theorem has_strict_fderiv_at_snd Added src/analysis/calculus/fderiv/restrict_scalars.lean + theorem differentiable.restrict_scalars + theorem differentiable_at.fderiv_restrict_scalars + theorem differentiable_at.restrict_scalars + theorem differentiable_at_iff_restrict_scalars + theorem differentiable_on.restrict_scalars + theorem differentiable_within_at.restrict_scalars + theorem differentiable_within_at_iff_restrict_scalars + theorem has_fderiv_at.restrict_scalars + theorem has_fderiv_at_filter.restrict_scalars + theorem has_fderiv_at_of_restrict_scalars + theorem has_fderiv_within_at.restrict_scalars + theorem has_fderiv_within_at_of_restrict_scalars + theorem has_strict_fderiv_at.restrict_scalars 2023-05-13 13:20:17 6cf5900 chore(*): add mathlib4 synchronization comments (#19005) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.homology.short_exact.abelian` * `algebra.modeq` * `algebra.ring.boolean_ring` * `analysis.locally_convex.continuous_of_bounded` * `analysis.normed_space.units` * `category_theory.abelian.diagram_lemmas.four` * `category_theory.abelian.generator` * `category_theory.idempotents.biproducts` * `data.is_R_or_C.basic` * `model_theory.definability` * `model_theory.order` * `model_theory.semantics` * `model_theory.substructures` * `topology.category.Top.limits.pullbacks` ESTIMATED CHANGES Modified src/algebra/homology/short_exact/abelian.lean Modified src/algebra/modeq.lean Modified src/algebra/ring/boolean_ring.lean Modified src/analysis/locally_convex/continuous_of_bounded.lean Modified src/analysis/normed_space/units.lean Modified src/category_theory/abelian/diagram_lemmas/four.lean Modified src/category_theory/abelian/generator.lean Modified src/category_theory/idempotents/biproducts.lean Modified src/data/is_R_or_C/basic.lean Modified src/model_theory/definability.lean Modified src/model_theory/order.lean Modified src/model_theory/semantics.lean Modified src/model_theory/substructures.lean Modified src/topology/category/Top/limits/pullbacks.lean 2023-05-13 12:04:10 1d650c2 chore(category_theory/sites/dense_subsite): minor refactor (#19002) Lean 4 pointed out that `include H` came slightly too early in `category_theory/sites_dense_subsite`; it doesn't need to be in the definition of https://leanprover-community.github.io/mathlib_docs/category_theory/sites/dense_subsite.html#category_theory.cover_dense.types.pushforward_family , for example. I removed both the `include`s in the file, which changes the types of at least one declaration (a superfluous `H` is no longer there). This file is not a leaf file -- it's imported by all the algebraic geometry hierarchy for example -- but mathlib still compiles with these edits and I propose making this change in the ported version of this file. ESTIMATED CHANGES Modified src/category_theory/sites/dense_subsite.lean 2023-05-13 10:36:52 5853729 chore(analysis/calculus/fderiv): move large file to dedicated subfolder, prepare for split (#19007) ESTIMATED CHANGES Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/calculus/conformal/normed_space.lean Modified src/analysis/calculus/cont_diff_def.lean Modified src/analysis/calculus/deriv.lean Renamed src/analysis/calculus/fderiv.lean to src/analysis/calculus/fderiv/basic.lean 2023-05-12 18:49:43 403190b feat(algebra/category/Module/change_of_rings): extension and restriction of scalars are adjoint (#15564) ESTIMATED CHANGES Modified src/algebra/category/Module/change_of_rings.lean + def category_theory.Module.extend_restrict_scalars_adj.counit.map + def category_theory.Module.extend_restrict_scalars_adj.counit + def category_theory.Module.extend_restrict_scalars_adj.hom_equiv.from_extend_scalars + def category_theory.Module.extend_restrict_scalars_adj.hom_equiv.to_restrict_scalars + def category_theory.Module.extend_restrict_scalars_adj.hom_equiv + def category_theory.Module.extend_restrict_scalars_adj.unit.map + def category_theory.Module.extend_restrict_scalars_adj.unit + def category_theory.Module.extend_restrict_scalars_adj 2023-05-12 16:32:23 ee7b9f9 doc(algebra/euclidean_domain/defs): correct typos in doc (#19001) Correct two typos in the doc about the Main Statements about Euclidean Domains. The corresponding `mathlib-4` PR is [#3945. ](https://github.com/leanprover-community/mathlib4/pull/3945) ESTIMATED CHANGES Modified src/algebra/euclidean_domain/defs.lean 2023-05-12 08:46:29 bd15ff4 chore(*): add mathlib4 synchronization comments (#18992) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.module.injective` * `category_theory.preadditive.yoneda.injective` * `category_theory.preadditive.yoneda.projective` * `category_theory.sites.cover_lifting` * `category_theory.sites.pushforward` * `computability.reduce` * `computability.tm_to_partrec` * `measure_theory.group.measurable_equiv` * `measure_theory.group.pointwise` * `probability.cond_count` * `probability.probability_mass_function.monad` * `topology.continuous_function.polynomial` ESTIMATED CHANGES Modified src/algebra/module/injective.lean Modified src/category_theory/preadditive/yoneda/injective.lean Modified src/category_theory/preadditive/yoneda/projective.lean Modified src/category_theory/sites/cover_lifting.lean Modified src/category_theory/sites/pushforward.lean Modified src/computability/reduce.lean Modified src/computability/tm_to_partrec.lean Modified src/measure_theory/group/measurable_equiv.lean Modified src/measure_theory/group/pointwise.lean Modified src/probability/cond_count.lean Modified src/probability/probability_mass_function/monad.lean Modified src/topology/continuous_function/polynomial.lean 2023-05-12 08:46:28 343e802 chore(measure_theory/measure/outer_measure): lemmas about zero and top (#18983) ESTIMATED CHANGES Modified src/measure_theory/measure/hausdorff.lean + theorem measure_theory.measure.mk_metric_top + theorem measure_theory.outer_measure.mk_metric_top Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.to_outer_measure_top + theorem measure_theory.outer_measure.to_measure_top Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.extend_top + theorem measure_theory.outer_measure.bounded_by_top + theorem measure_theory.outer_measure.bounded_by_zero + theorem measure_theory.outer_measure.trim_top 2023-05-12 08:46:27 066ecdb feat(ring_theory/polynomial): show gaussian form of `hermite n` (#18896) Show the equivalence of the polynomial form of the Hermite polynomials to the explicit form involving derivatives of the gaussian function. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff.iterate_deriv' + theorem cont_diff.iterate_deriv Renamed src/ring_theory/polynomial/hermite.lean to src/ring_theory/polynomial/hermite/basic.lean Added src/ring_theory/polynomial/hermite/gaussian.lean + theorem polynomial.deriv_gaussian_eq_hermite_mul_gaussian + theorem polynomial.hermite_eq_deriv_gaussian' + theorem polynomial.hermite_eq_deriv_gaussian 2023-05-12 08:46:25 9e6d4ae feat(analysis/mellin_transform): Mellin transforms (#18822) This PR defines the Mellin transform of a locally integrable function, and proves it is holomorphic on a suitable vertical strip. ESTIMATED CHANGES Added src/analysis/mellin_transform.lean + theorem is_O_rpow_top_log_smul + theorem is_O_rpow_zero_log_smul + def mellin + theorem mellin_convergent_iff_norm + theorem mellin_convergent_of_is_O_rpow + theorem mellin_convergent_of_is_O_rpow_exp + theorem mellin_convergent_of_is_O_scalar + theorem mellin_convergent_top_of_is_O + theorem mellin_convergent_zero_of_is_O + theorem mellin_differentiable_at_of_is_O_rpow + theorem mellin_differentiable_at_of_is_O_rpow_exp + theorem mellin_has_deriv_of_is_O_rpow Modified src/analysis/special_functions/pow.lean + theorem is_o_exp_neg_mul_rpow_at_top 2023-05-12 05:44:02 b599f4e chore(algebra/order/group/defs): remove some instances that cause timeouts with etaExperiment (#18985) Seeing what CI thinks about removing these instances. This is a backport of https://github.com/leanprover-community/mathlib4/pull/3905 ESTIMATED CHANGES Modified src/algebra/order/group/defs.lean + theorem ordered_comm_group.to_contravariant_class_left_le + theorem ordered_comm_group.to_contravariant_class_right_le 2023-05-11 21:30:27 8c1b484 feat(topology/sets/compacts): add `positive_compacts.map` (#18872) Also adds some missing functorial lemmas about `map`. ESTIMATED CHANGES Modified src/topology/sets/compacts.lean +/- theorem topological_space.compact_opens.coe_map + theorem topological_space.compact_opens.map_comp + theorem topological_space.compact_opens.map_id + theorem topological_space.compacts.coe_equiv_apply_eq_preimage +/- theorem topological_space.compacts.coe_map + theorem topological_space.compacts.equiv_refl + theorem topological_space.compacts.equiv_symm - theorem topological_space.compacts.equiv_to_fun_val + theorem topological_space.compacts.equiv_trans + theorem topological_space.compacts.map_comp + theorem topological_space.compacts.map_id + theorem topological_space.positive_compacts.coe_map + theorem topological_space.positive_compacts.map_comp + theorem topological_space.positive_compacts.map_id 2023-05-11 07:22:31 2f83470 chore(probability/independence): create independence folder, split old file into two parts (#18987) Split `probability/independence` into two files, to put Kolmogorov's zero-one law in its own file. The two new files are placed in an `independence` folder. Also fix a typo in a name in `probability/borel_cantelli`. ESTIMATED CHANGES Modified src/probability/borel_cantelli.lean - theorem probability_theory.Indep_fun.condexp_natrual_ae_eq_of_lt + theorem probability_theory.Indep_fun.condexp_natural_ae_eq_of_lt Modified src/probability/conditional_expectation.lean Renamed src/probability/independence.lean to src/probability/independence/basic.lean - theorem probability_theory.indep_bsupr_compl - theorem probability_theory.indep_bsupr_limsup - theorem probability_theory.indep_limsup_at_bot_self - theorem probability_theory.indep_limsup_at_top_self - theorem probability_theory.indep_limsup_self - theorem probability_theory.indep_supr_directed_limsup - theorem probability_theory.indep_supr_limsup - theorem probability_theory.measure_eq_zero_or_one_of_indep_set_self - theorem probability_theory.measure_eq_zero_or_one_or_top_of_indep_set_self - theorem probability_theory.measure_zero_or_one_of_measurable_set_limsup - theorem probability_theory.measure_zero_or_one_of_measurable_set_limsup_at_bot - theorem probability_theory.measure_zero_or_one_of_measurable_set_limsup_at_top Added src/probability/independence/zero_one.lean + theorem probability_theory.indep_bsupr_compl + theorem probability_theory.indep_bsupr_limsup + theorem probability_theory.indep_limsup_at_bot_self + theorem probability_theory.indep_limsup_at_top_self + theorem probability_theory.indep_limsup_self + theorem probability_theory.indep_supr_directed_limsup + theorem probability_theory.indep_supr_limsup + theorem probability_theory.measure_eq_zero_or_one_of_indep_set_self + theorem probability_theory.measure_eq_zero_or_one_or_top_of_indep_set_self + theorem probability_theory.measure_zero_or_one_of_measurable_set_limsup + theorem probability_theory.measure_zero_or_one_of_measurable_set_limsup_at_bot + theorem probability_theory.measure_zero_or_one_of_measurable_set_limsup_at_top Modified src/probability/integration.lean 2023-05-11 07:22:30 781cb2e chore(*): add mathlib4 synchronization comments (#18984) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.epi_mono` * `algebra.category.Group.equivalence_Group_AddGroup` * `algebra.continued_fractions.computation.correctness_terminating` * `analysis.convex.partition_of_unity` * `analysis.normed.group.controlled_closure` * `analysis.normed_space.compact_operator` * `category_theory.abelian.pseudoelements` * `category_theory.preadditive.hom_orthogonal` * `category_theory.sites.cover_preserving` * `computability.halting` * `computability.partrec_code` * `dynamics.ergodic.ergodic` * `dynamics.ergodic.measure_preserving` * `measure_theory.covering.vitali_family` * `measure_theory.decomposition.unsigned_hahn` * `measure_theory.group.arithmetic` * `measure_theory.lattice` * `measure_theory.measure.mutually_singular` * `measure_theory.measure.open_pos` * `probability.conditional_probability` * `topology.algebra.equicontinuity` * `topology.category.Profinite.as_limit` * `topology.category.Top.limits.products` * `topology.continuous_function.locally_constant` ESTIMATED CHANGES Modified src/algebra/category/Group/epi_mono.lean Modified src/algebra/category/Group/equivalence_Group_AddGroup.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/analysis/convex/partition_of_unity.lean Modified src/analysis/normed/group/controlled_closure.lean Modified src/analysis/normed_space/compact_operator.lean Modified src/category_theory/abelian/pseudoelements.lean Modified src/category_theory/preadditive/hom_orthogonal.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/computability/halting.lean Modified src/computability/partrec_code.lean Modified src/dynamics/ergodic/ergodic.lean Modified src/dynamics/ergodic/measure_preserving.lean Modified src/measure_theory/covering/vitali_family.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/lattice.lean Modified src/measure_theory/measure/mutually_singular.lean Modified src/measure_theory/measure/open_pos.lean Modified src/probability/conditional_probability.lean Modified src/topology/algebra/equicontinuity.lean Modified src/topology/category/Profinite/as_limit.lean Modified src/topology/category/Top/limits/products.lean Modified src/topology/continuous_function/locally_constant.lean 2023-05-11 05:57:35 5dc275e feat(analysis/normed/order/lattice): add has_solid_norm (#18554) See [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Solid) ESTIMATED CHANGES Modified src/algebra/order/lattice_group.lean + def lattice_ordered_add_comm_group.is_solid + theorem lattice_ordered_add_comm_group.is_solid_solid_closure + def lattice_ordered_add_comm_group.solid_closure + theorem lattice_ordered_add_comm_group.solid_closure_min Modified src/analysis/normed/order/lattice.lean + theorem lattice_ordered_add_comm_group.is_solid_ball + theorem norm_le_norm_of_abs_le_abs - theorem solid Modified src/measure_theory/function/lp_order.lean Modified src/topology/continuous_function/bounded.lean 2023-05-10 23:10:40 ec4b2ee chore(topology/instances/ennreal): missing smul lemmas (#18980) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.smul_top Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.smul_extend Modified src/topology/instances/ennreal.lean + theorem ennreal.smul_Sup + theorem ennreal.smul_supr 2023-05-10 23:10:39 2d44d68 feat(data/finset/lattice): Distributivity lemmas (#18611) Dualise a few existing lemmas, protect `finset.sup_eq_bot_iff`/`finset.inf_eq_top_iff`, move `map_finset_sup`/`map_finset_inf` from `order.hom.lattice` to `data.finset.lattice`, make binders semi-implicit in `finset.disjoint_sup_left` and friends to avoid overly explicit binders in a local assumption after rewriting. ESTIMATED CHANGES Modified src/data/finset/lattice.lean - theorem finset.inf_eq_top_iff + theorem finset.inf_himp_right + theorem finset.inf_sup + theorem finset.inf_sup_inf - theorem finset.sup_eq_bot_iff + theorem finset.sup_himp_left + theorem finset.sup_himp_right + theorem finset.sup_inf + theorem finset.sup_inf_sup 2023-05-10 21:40:00 213b0cf feat(algebra/order/to_interval_mod): add circular_order instance for add_circle (#17743) This also provides us with the same instance for `real.angle`. ESTIMATED CHANGES Modified src/algebra/order/to_interval_mod.lean + theorem quotient_add_group.btw_coe_iff' + theorem quotient_add_group.btw_coe_iff + theorem quotient_add_group.equiv_Ico_mod_zero + theorem quotient_add_group.equiv_Ioc_mod_zero + theorem to_Ico_div_eq_sub + theorem to_Ico_mod_add_to_Ioc_mod_zero + theorem to_Ico_mod_eq_sub + theorem to_Ico_mod_zero_sub_comm + theorem to_Ioc_div_eq_sub + theorem to_Ioc_mod_add_to_Ico_mod_zero + theorem to_Ioc_mod_eq_sub + theorem to_Ioc_mod_zero_sub_comm Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/order/circular.lean Modified src/topology/instances/add_circle.lean 2023-05-10 20:34:53 28b2a92 feat(probability/kernel/measurable_integral): the integral against a kernel is strongly measurable (#18974) We also rename the measurability lemmas to use the same convention as in the file measure_theory/constructions/prod, which contains very similar lemmas for the integral against a measure (a particular case of what we are proving here). ESTIMATED CHANGES Modified src/probability/kernel/composition.lean Modified src/probability/kernel/measurable_integral.lean + theorem measurable.lintegral_kernel + theorem measurable.lintegral_kernel_prod_left' + theorem measurable.lintegral_kernel_prod_left + theorem measurable.lintegral_kernel_prod_right'' + theorem measurable.lintegral_kernel_prod_right' + theorem measurable.lintegral_kernel_prod_right + theorem measurable.set_lintegral_kernel + theorem measurable.set_lintegral_kernel_prod_left + theorem measurable.set_lintegral_kernel_prod_right + theorem measure_theory.strongly_measurable.integral_kernel_prod_left'' + theorem measure_theory.strongly_measurable.integral_kernel_prod_left' + theorem measure_theory.strongly_measurable.integral_kernel_prod_left + theorem measure_theory.strongly_measurable.integral_kernel_prod_right'' + theorem measure_theory.strongly_measurable.integral_kernel_prod_right' + theorem measure_theory.strongly_measurable.integral_kernel_prod_right + theorem probability_theory.kernel.measurable_kernel_prod_mk_left' + theorem probability_theory.kernel.measurable_kernel_prod_mk_left + theorem probability_theory.kernel.measurable_kernel_prod_mk_left_of_finite + theorem probability_theory.kernel.measurable_kernel_prod_mk_right - theorem probability_theory.kernel.measurable_lintegral' - theorem probability_theory.kernel.measurable_lintegral +/- theorem probability_theory.kernel.measurable_lintegral_indicator_const - theorem probability_theory.kernel.measurable_prod_mk_mem - theorem probability_theory.kernel.measurable_prod_mk_mem_of_finite - theorem probability_theory.kernel.measurable_set_lintegral' - theorem probability_theory.kernel.measurable_set_lintegral + theorem probability_theory.measurable_set_kernel_integrable Modified src/probability/kernel/with_density.lean 2023-05-10 14:51:30 a2706b5 chore(*): add mathlib4 synchronization comments (#18977) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `category_theory.functor.flat` * `category_theory.preadditive.injective` * `category_theory.preadditive.injective_resolution` * `linear_algebra.projective_space.subspace` * `measure_theory.measure.ae_measurable` * `measure_theory.measure.measure_space` * `measure_theory.measure.sub` * `probability.probability_mass_function.basic` * `topology.partition_of_unity` ESTIMATED CHANGES Modified src/category_theory/functor/flat.lean Modified src/category_theory/preadditive/injective.lean Modified src/category_theory/preadditive/injective_resolution.lean Modified src/linear_algebra/projective_space/subspace.lean Modified src/measure_theory/measure/ae_measurable.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/sub.lean Modified src/probability/probability_mass_function/basic.lean Modified src/topology/partition_of_unity.lean 2023-05-10 14:51:29 e25a317 feat(number_theory/diophantine_approximation): add Legendre's thm on rat'l approximations (#18460) This adds *Legendre's Theorem* on rational approximations: ```lean lemma ex_continued_fraction_convergent_eq_rat {ξ : ℝ} {q : ℚ} (h : |ξ - q| < 1 / (2 * q.denom ^ 2)) : ∃ n, (generalized_continued_fraction.of ξ).convergents n = q ``` See this [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Diophantine.20approximation/near/323758115). ESTIMATED CHANGES Modified src/number_theory/diophantine_approximation.lean + theorem real.aux₃ + def real.contfrac_legendre.ass + theorem real.continued_fraction_convergent_eq_convergent + theorem real.convergent_of_int + theorem real.convergent_of_zero + theorem real.convergent_succ + theorem real.convergent_zero + theorem real.exists_continued_fraction_convergent_eq_rat + theorem real.exists_rat_eq_convergent' + theorem real.exists_rat_eq_convergent 2023-05-10 11:33:42 a07d750 refactor(algebra): Redefine `a ≡ b [PMOD p]` (#18958) as `∃ n : ℤ, b - a = n • p` instead of `∀ n : ℤ, b - n • p ∉ set.Ioo a (a + p)`. Since this new definition doesn't require an order on `α`, we move it to a new file `algebra.modeq`. Expand the API. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem div_mul_cancel''' Modified src/algebra/group_power/lemmas.lean + theorem int.cast_mul_eq_zsmul_cast Modified src/algebra/hom/units.lean Added src/algebra/modeq.lean + theorem add_comm_group.add_modeq_left + theorem add_comm_group.add_modeq_right + theorem add_comm_group.add_nsmul_modeq + theorem add_comm_group.add_zsmul_modeq + theorem add_comm_group.int_cast_modeq_int_cast + theorem add_comm_group.modeq.trans + def add_comm_group.modeq + theorem add_comm_group.modeq_comm + theorem add_comm_group.modeq_iff_eq_add_zsmul + theorem add_comm_group.modeq_iff_eq_mod_zmultiples + theorem add_comm_group.modeq_iff_int_modeq + theorem add_comm_group.modeq_neg + theorem add_comm_group.modeq_refl + theorem add_comm_group.modeq_rfl + theorem add_comm_group.modeq_sub + theorem add_comm_group.modeq_sub_iff_add_modeq' + theorem add_comm_group.modeq_sub_iff_add_modeq + theorem add_comm_group.modeq_zero + theorem add_comm_group.nat_cast_modeq_nat_cast + theorem add_comm_group.neg_modeq_neg + theorem add_comm_group.not_modeq_iff_ne_add_zsmul + theorem add_comm_group.not_modeq_iff_ne_mod_zmultiples + theorem add_comm_group.nsmul_add_modeq + theorem add_comm_group.nsmul_modeq_nsmul + theorem add_comm_group.self_modeq_zero + theorem add_comm_group.sub_modeq_iff_modeq_add' + theorem add_comm_group.sub_modeq_iff_modeq_add + theorem add_comm_group.sub_modeq_zero + theorem add_comm_group.zsmul_add_modeq + theorem add_comm_group.zsmul_modeq_zero + theorem add_comm_group.zsmul_modeq_zsmul Modified src/algebra/order/to_interval_mod.lean - def add_comm_group.modeq - theorem add_comm_group.modeq_iff_eq_add_zsmul - theorem add_comm_group.modeq_iff_eq_mod_zmultiples + theorem add_comm_group.modeq_iff_not_forall_mem_Ioo_mod +/- theorem add_comm_group.modeq_iff_to_Ico_mod_eq_left - theorem add_comm_group.not_modeq_iff_ne_add_zsmul - theorem add_comm_group.not_modeq_iff_ne_mod_zmultiples + theorem to_Ico_mod_inj Modified src/topology/instances/add_circle.lean 2023-05-10 11:33:41 0b20dff feat(number_theory/pell): add def and properties of fundamental solutions (#18901) This is the next step in developing the theory of Pell's equation. We define what a *fundamental solution* is, show that it exists and is unique and that it is characterized by the property that it (is positive and) generates the group of solutions up to sign. See [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Proving.20Pell's.20equation.20is.20solvable/near/343270338). ESTIMATED CHANGES Modified src/number_theory/pell.lean + theorem pell.exists_unique_pos_generator + theorem pell.is_fundamental.d_nonsquare + theorem pell.is_fundamental.d_pos + theorem pell.is_fundamental.eq_pow_of_nonneg + theorem pell.is_fundamental.eq_zpow_or_neg_zpow + theorem pell.is_fundamental.exists_of_not_is_square + theorem pell.is_fundamental.mul_inv_x_lt_x + theorem pell.is_fundamental.mul_inv_x_pos + theorem pell.is_fundamental.mul_inv_y_nonneg + theorem pell.is_fundamental.subsingleton + theorem pell.is_fundamental.x_le_x + theorem pell.is_fundamental.x_mul_y_le_y_mul_x + theorem pell.is_fundamental.x_pos + theorem pell.is_fundamental.y_le_y + theorem pell.is_fundamental.y_strict_mono + theorem pell.is_fundamental.zpow_eq_one_iff + theorem pell.is_fundamental.zpow_ne_neg_zpow + theorem pell.is_fundamental.zpow_y_lt_iff_lt + def pell.is_fundamental + theorem pell.pos_generator_iff_fundamental + theorem pell.solution₁.d_nonsquare_of_one_lt_x + theorem pell.solution₁.d_pos_of_one_lt_x + theorem pell.solution₁.y_zpow_pos 2023-05-10 08:33:30 0013240 chore(algebra/order/absolute_value): remove unneeded imports (#18978) This is just a CI verification backport of https://github.com/leanprover-community/mathlib4/pull/3869. Feel free to either close or merge! ESTIMATED CHANGES Modified src/algebra/order/absolute_value.lean 2023-05-09 17:20:11 cc5dd62 chore(representation_theory/group_cohomology): use `fin.cast_succ` instead of coe (#18950) This replaces the cast from `fin n` to `fin (n + 1)` (defined as `⟨↑i % (n + 1), _⟩`) with `fin.cast_succ` (defined as `⟨↑i, _⟩`). This is the preferred spelling, and using it lets us simplify some proofs. This also removes the `g` argument from `partial_prod_right_inv`, as it was not used, and the interesting statement is the one without it. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean Modified src/representation_theory/group_cohomology/basic.lean Modified src/representation_theory/group_cohomology/resolution.lean 2023-05-09 05:07:50 7d34004 chore(*): add mathlib4 synchronization comments (#18966) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.continued_fractions.computation.translations` * `analysis.normed.group.quotient` * `analysis.specific_limits.normed` * `computability.partrec` * `data.complex.orientation` * `data.sym.card` * `linear_algebra.orientation` * `measure_theory.tactic` * `topology.algebra.nonarchimedean.adic_topology` * `topology.category.Top.open_nhds` * `topology.continuous_function.algebra` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/translations.lean Modified src/analysis/normed/group/quotient.lean Modified src/analysis/specific_limits/normed.lean Modified src/computability/partrec.lean Modified src/data/complex/orientation.lean Modified src/data/sym/card.lean Modified src/linear_algebra/orientation.lean Modified src/measure_theory/tactic.lean Modified src/topology/algebra/nonarchimedean/adic_topology.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/continuous_function/algebra.lean 2023-05-08 23:09:05 949dc57 feat(*): generalise+add algebraic instances (#18947) These are needed for #18857 (splitting field diamond), and I feel as though it's getting unwieldy so having these separately for review may be nice. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean Modified src/data/polynomial/basic.lean Modified src/field_theory/normal.lean +/- theorem normal.of_is_splitting_field Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.smul_mk + theorem adjoin_root.smul_of Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/ideal/quotient.lean 2023-05-08 20:42:17 c1686df feat(data/real/ennreal): interactions between infi/supr and to_nnreal/to_real (#18946) Add lemmas relating `ennreal.to_real` and `ennreal.to_nnreal` to the indexed infimum. Note that a slightly different set of lemmas and proofs were added in leanprover-community/mathlib4#3457. Please make sure to switch to these versions when forward-porting, and add `#align`s to the existing lemmas. This also adds `inf_dist_eq_infi`, which is from the same mathlib4 PR. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.coe_infi + theorem ennreal.coe_supr + theorem ennreal.to_nnreal_Inf + theorem ennreal.to_nnreal_Sup + theorem ennreal.to_nnreal_infi + theorem ennreal.to_nnreal_supr + theorem ennreal.to_real_Inf + theorem ennreal.to_real_Sup + theorem ennreal.to_real_infi + theorem ennreal.to_real_supr Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.inf_dist_eq_infi 2023-05-08 17:26:31 d4437c6 feat(field_theory/adjoin,normal): `field_range` lemmas (#18959) This PR adds a couple useful lemmas regarding `field_range`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem alg_equiv.field_range_eq_top + theorem alg_hom.field_range_eq_top Modified src/field_theory/normal.lean + theorem alg_hom.field_range_of_normal 2023-05-08 17:26:30 c596622 feat(field_theory/intermediate_field): Inhabited instance (#18956) If `S : intermediate_field K L`, then `S →ₐ[K] L` is nonempty. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean 2023-05-08 10:37:09 a9545e8 feat(probability/kernel/basic): integrals of basic kernels (#18961) Lebesgue and Bochner integral of a function against deterministic, constant and restricted kernels. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.set_integral_dirac' + theorem measure_theory.set_integral_dirac Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.restrict_dirac' + theorem measure_theory.restrict_dirac + theorem measure_theory.set_lintegral_dirac' + theorem measure_theory.set_lintegral_dirac Modified src/probability/kernel/basic.lean + theorem probability_theory.kernel.integral_const + theorem probability_theory.kernel.integral_deterministic' + theorem probability_theory.kernel.integral_deterministic + theorem probability_theory.kernel.lintegral_const + theorem probability_theory.kernel.lintegral_deterministic' + theorem probability_theory.kernel.lintegral_deterministic + theorem probability_theory.kernel.restrict_univ + theorem probability_theory.kernel.set_integral_const + theorem probability_theory.kernel.set_integral_deterministic' + theorem probability_theory.kernel.set_integral_deterministic + theorem probability_theory.kernel.set_integral_restrict + theorem probability_theory.kernel.set_lintegral_const + theorem probability_theory.kernel.set_lintegral_deterministic' + theorem probability_theory.kernel.set_lintegral_deterministic + theorem probability_theory.kernel.set_lintegral_restrict Modified src/probability/kernel/composition.lean Modified src/probability/kernel/invariance.lean 2023-05-08 10:37:08 63decdb feat(probability/kernel/basic): add `kernel.comap_right` and `kernel.piecewise` (#18917) Also put `is_s_finite_kernel` in the same namespace as the other classes of kernels and add `iff` variants of the ext lemmas. ESTIMATED CHANGES Modified src/probability/kernel/basic.lean + def probability_theory.kernel.comap_right + theorem probability_theory.kernel.comap_right_apply' + theorem probability_theory.kernel.comap_right_apply +/- theorem probability_theory.kernel.ext +/- theorem probability_theory.kernel.ext_fun + theorem probability_theory.kernel.ext_fun_iff + theorem probability_theory.kernel.ext_iff' + theorem probability_theory.kernel.ext_iff + theorem probability_theory.kernel.integral_piecewise + theorem probability_theory.kernel.is_markov_kernel.comap_right + theorem probability_theory.kernel.lintegral_piecewise + def probability_theory.kernel.piecewise + theorem probability_theory.kernel.piecewise_apply' + theorem probability_theory.kernel.piecewise_apply + theorem probability_theory.kernel.set_integral_piecewise + theorem probability_theory.kernel.set_lintegral_piecewise 2023-05-08 07:29:48 6632ca2 feat(algebra/order/group/order_iso): add `order_iso.div_{left,right}` (#18968) ESTIMATED CHANGES Modified src/algebra/order/group/order_iso.lean + def order_iso.div_left + def order_iso.div_right 2023-05-08 07:29:47 f81174b feat(analysis/calculus/deriv): `polynomial.aeval` lemmas (#18945) This duplicates every lemma about differentiation of `polynomial.eval` for `polynomial.aeval` too. Some of these turned out to be needed in #18896. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean 2023-05-08 06:19:52 937b1c5 feat(order/category): Category of finite distributive lattices (#11677) Define `FinBddDistLat`, the category of finite distributive lattices with bounded lattice homomorphisms. This is one of the two categories involved in Birkhoff's representation theorem. ESTIMATED CHANGES Added src/order/category/FinBddDistLat.lean + def FinBddDistLat.dual + def FinBddDistLat.dual_equiv + def FinBddDistLat.iso.mk + def FinBddDistLat.of' + def FinBddDistLat.of + structure FinBddDistLat + theorem FinBddDistLat_dual_comp_forget_to_BddDistLat Modified src/order/category/FinBoolAlg.lean + theorem FinBoolAlg_dual_comp_forget_to_FinBddDistLat Modified src/order/category/FinPartOrd.lean 2023-05-08 02:00:12 3f655f5 refactor(data/is_R_or_C,analysis/inner_product_space): review API (#18919) ## Drop `is_R_or_C.abs` and lemmas about it Use `has_norm.norm` instead. The norm is definitionally equal both to `real.abs` and `complex.abs`, so it's easier to specialize generic theorems to real numbers. Also, we don't have to convert between norm and `is_R_or_C.abs` here and there. - Drop `is_R_or_C.abs`, `is_R_or_C.norm_eq_abs`, `is_R_or_C.abs_of_nonneg`, `is_R_or_C.abs_zero`, `is_R_or_C.abs_one`, `is_R_or_C.abs_nonneg`, `is_R_or_C.abs_eq_zero`, `is_R_or_C.abs_ne_zero`, `is_R_or_C.abs_mul`, `is_R_or_C.abs_add`, `is_R_or_C.is_absolute_value`, `is_R_or_C.abs_abs`, `is_R_or_C.abs_pos`, `is_R_or_C.abs_neg`, `is_R_or_C.abs_inv`, `is_R_or_C.abs_div`, `is_R_or_C.abs_abs_sub_le_abs_sub`, `is_R_or_C.norm_sq_eq_abs`, `is_R_or_C.abs_to_real`, `is_R_or_C.continuous_abs`, `is_R_or_C.abs_to_complex`, `inner_product_space.core.abs_inner_symm`, `abs_inner_le_norm`. ## Rename/merge lemmas ### `is_R_or_C` - Rename `is_R_or_C.of_real_smul` to `is_R_or_C.real_smul_of_real`. - Merge `is_R_or_C.norm_real`, `is_R_or_C.norm_of_real`, and `is_R_or_C.abs_of_real` into `is_R_or_C.norm_of_real`. - Merge `is_R_or_C.abs_of_nat` and `is_R_or_C.abs_cast_nat` into `is_R_or_C.norm_nat_cast`, use `has_norm.norm`, make it a `simp, priority 900, is_R_or_C_simps, norm_cast` lemma. - Rename `is_R_or_C.mul_self_abs` to `is_R_or_C.mul_self_norm`, use `has_norm.norm`. - Rename `is_R_or_C.abs_two` to `is_R_or_C.norm_two`, use `has_norm.norm`. - Rename `is_R_or_C.abs_conj` to `is_R_or_C.norm_conj`, use `has_norm.norm`. - Rename `is_R_or_C.abs_re_le_abs` to `is_R_or_C.abs_re_le_norm`, use `has_norm.norm`. - Rename `is_R_or_C.abs_im_le_abs` to `is_R_or_C.abs_im_le_norm`, use `has_norm.norm`. - Rename `is_R_or_C.re_le_abs` and `is_R_or_C.im_le_abs` to `is_R_or_C.re_le_norm` and `is_R_or_C.im_le_norm`, respectively; use `has_norm.norm`. - Use `has_norm.norm` in `is_R_or_C.im_eq_zero_of_le` and `is_R_or_C.re_eq_self_of_le`. - Rename `is_R_or_C.abs_re_div_abs_le_one` and `is_R_or_C.abs_im_div_abs_le_one` to `is_R_or_C.abs_re_div_norm_le_one` and `is_R_or_C.abs_im_div_norm_le_one`, respectively; use `has_norm.norm`. - Rename `is_R_or_C.re_eq_abs_of_mul_conj` to `is_R_or_C.re_eq_norm_of_mul_conj`, use `has_norm.norm`. - Rename `is_R_or_C.abs_sq_re_add_conj` and `is_R_or_C.abs_sq_re_add_conj'` to `is_R_or_C.norm_sq_re_add_conj` and `is_R_or_C.norm_sq_re_conj_add`, respectively; use `has_norm.norm`. - Use `has_norm.norm` in all lemmas/definitions about `is_cau_seq` and `cau_seq` sequences of `is_R_or_C` numbers. - Rename `is_R_or_C.is_cau_seq_abs` to `is_R_or_C.is_cau_seq_norm`, use `has_norm.norm`. ### Inner products - Rename `inner_product_space.core.inner_mul_conj_re_abs` to `inner_product_space.core.inner_mul_symm_re_eq_norm`, use `has_norm.norm`. - Do the same in the root NS. - Rename `inner_self_re_abs` to `inner_self_re_eq_norm`, use `has_norm.norm`. - Rename `inner_self_abs_to_K` to `inner_self_norm_to_K`, use `has_norm.norm`. - Rename `abs_inner_symm` to `norm_inner_symm`, use `has_norm.norm`. - Rename `abs_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul` to `norm_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul`, use `has_norm.norm`. ## Add lemmas - Add `is_R_or_C.is_real_tfae` and `is_real_tfae.conj_eq_iff_im`. - Add `is_R_or_C.norm_sq_apply`. ## Change attributes - `is_R_or_C.zero_re'` is no longer a `simp` lemma - `is_R_or_C.norm_conj` is now a `simp` lemma. ## Misc - Reorder lemmas here and there to golf. ESTIMATED CHANGES Modified docs/100.yaml Modified src/analysis/calculus/uniform_limits_deriv.lean Modified src/analysis/complex/basic.lean - theorem is_R_or_C.abs_to_complex +/- theorem is_R_or_C.norm_sq_to_complex Modified src/analysis/complex/schwarz.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/inner_product_space/basic.lean - theorem abs_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul - theorem abs_inner_le_norm - theorem abs_inner_symm +/- theorem abs_real_inner_div_norm_mul_norm_le_one - theorem inner_mul_conj_re_abs + theorem inner_mul_symm_re_eq_norm - theorem inner_product_space.core.abs_inner_symm - theorem inner_product_space.core.inner_mul_conj_re_abs + theorem inner_product_space.core.inner_mul_symm_re_eq_norm - theorem inner_self_abs_to_K + theorem inner_self_norm_to_K - theorem inner_self_re_abs + theorem inner_self_re_eq_norm + theorem norm_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul + theorem norm_inner_symm +/- theorem real_inner_self_abs Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/analysis/locally_convex/continuous_of_bounded.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/extend.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/spectrum.lean Modified src/data/is_R_or_C/basic.lean - theorem is_R_or_C.abs_abs - theorem is_R_or_C.abs_abs_sub_le_abs_sub - theorem is_R_or_C.abs_add - theorem is_R_or_C.abs_cast_nat - theorem is_R_or_C.abs_conj - theorem is_R_or_C.abs_div - theorem is_R_or_C.abs_eq_zero - theorem is_R_or_C.abs_im_div_abs_le_one + theorem is_R_or_C.abs_im_div_norm_le_one - theorem is_R_or_C.abs_im_le_abs + theorem is_R_or_C.abs_im_le_norm - theorem is_R_or_C.abs_inv - theorem is_R_or_C.abs_mul - theorem is_R_or_C.abs_ne_zero - theorem is_R_or_C.abs_neg - theorem is_R_or_C.abs_nonneg - theorem is_R_or_C.abs_of_nat - theorem is_R_or_C.abs_of_nonneg - theorem is_R_or_C.abs_of_real - theorem is_R_or_C.abs_one - theorem is_R_or_C.abs_pos - theorem is_R_or_C.abs_re_div_abs_le_one + theorem is_R_or_C.abs_re_div_norm_le_one - theorem is_R_or_C.abs_re_le_abs + theorem is_R_or_C.abs_re_le_norm - theorem is_R_or_C.abs_sq_re_add_conj' - theorem is_R_or_C.abs_sq_re_add_conj - theorem is_R_or_C.abs_sub - theorem is_R_or_C.abs_sub_le - theorem is_R_or_C.abs_to_real - theorem is_R_or_C.abs_two - theorem is_R_or_C.abs_zero +/- theorem is_R_or_C.add_conj + theorem is_R_or_C.conj_eq_iff_im +/- theorem is_R_or_C.conj_eq_re_sub_im - theorem is_R_or_C.continuous_abs +/- theorem is_R_or_C.continuous_norm_sq +/- theorem is_R_or_C.im_eq_zero_of_le - theorem is_R_or_C.im_le_abs + theorem is_R_or_C.im_le_norm - theorem is_R_or_C.is_cau_seq_abs +/- theorem is_R_or_C.is_cau_seq_im + theorem is_R_or_C.is_cau_seq_norm +/- theorem is_R_or_C.is_cau_seq_re + theorem is_R_or_C.is_real_tfae - theorem is_R_or_C.mul_self_abs + theorem is_R_or_C.mul_self_norm +/- theorem is_R_or_C.norm_conj - theorem is_R_or_C.norm_eq_abs +/- theorem is_R_or_C.norm_im_le_norm + theorem is_R_or_C.norm_nat_cast +/- theorem is_R_or_C.norm_of_nonneg +/- theorem is_R_or_C.norm_of_real +/- theorem is_R_or_C.norm_re_le_norm - theorem is_R_or_C.norm_real + theorem is_R_or_C.norm_sq_apply - theorem is_R_or_C.norm_sq_eq_abs +/- theorem is_R_or_C.norm_sq_eq_def' +/- theorem is_R_or_C.norm_sq_eq_def + theorem is_R_or_C.norm_sq_re_add_conj + theorem is_R_or_C.norm_sq_re_conj_add + theorem is_R_or_C.norm_two +/- theorem is_R_or_C.of_real_inj - theorem is_R_or_C.of_real_smul +/- theorem is_R_or_C.of_real_zero - theorem is_R_or_C.re_eq_abs_of_mul_conj + theorem is_R_or_C.re_eq_norm_of_mul_conj +/- theorem is_R_or_C.re_eq_self_of_le - theorem is_R_or_C.re_le_abs + theorem is_R_or_C.re_le_norm + theorem is_R_or_C.real_smul_of_real +/- theorem is_R_or_C.smul_im +/- theorem is_R_or_C.smul_re +/- theorem is_R_or_C.sub_conj +/- theorem is_R_or_C.zero_re' Modified src/measure_theory/function/l2_space.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2023-05-07 21:39:00 b1c0175 refactor(linear_algebra/dual): make `module.dual` reducible (#18963) Otherwise Lean 4 can't apply `simp` lemmas about linear maps to elements of `module.dual`. There is no need for this to be reducible anyway, as all the instances on `dual` agree with the instances on linear maps. Also delete `basis.to_dual_equiv_symm_apply`, which stated `⇑(b.to_dual_equiv.symm) f = ⇑((linear_equiv.of_injective b.to_dual _).symm) (⇑((linear_equiv.of_top (linear_map.range b.to_dual) _).symm) f)` which was hardly helpful. ESTIMATED CHANGES Modified src/linear_algebra/dual.lean + theorem basis.to_dual_equiv_apply + def module.dual 2023-05-07 19:11:01 08e1d8d feat(measure_theory/measure/stieltjes): add measure_Iic, measure_Ici, measure_univ (#18884) ESTIMATED CHANGES Modified src/measure_theory/measure/stieltjes.lean + theorem exists_seq_antitone_tendsto_at_top_at_bot + theorem exists_seq_monotone_tendsto_at_top_at_top + theorem measure_theory.tendsto_measure_Ici_at_bot + theorem measure_theory.tendsto_measure_Ico_at_top + theorem measure_theory.tendsto_measure_Iic_at_top + theorem measure_theory.tendsto_measure_Ioc_at_bot + theorem stieltjes_function.measure_Ici + theorem stieltjes_function.measure_Iic + theorem stieltjes_function.measure_univ + theorem supr_eq_supr_subseq_of_antitone 2023-05-07 10:16:22 483dd86 chore(probability/kernel/basic): split into three files (#18957) Split `probability/kernel/basic` into 3 files: - basic: definitions of a kernel, classes of kernels and some elementary kernels - measurable_integral: measurability of the Lebesgue integral against a kernel. I am about to add a lot more material to this file, about (ae-)strong measurability, the Bochner integral, etc. This planned increase in size is the motivation for this PR. - with_density: the kernel `with_density`. It requires results about measurability of the integral, hence it cannot remain in basic. ESTIMATED CHANGES Modified src/probability/kernel/basic.lean - theorem probability_theory.kernel.is_finite_kernel_with_density_of_bounded - theorem probability_theory.kernel.is_s_finite_kernel.with_density - theorem probability_theory.kernel.is_s_finite_kernel_with_density_of_is_finite_kernel - theorem probability_theory.kernel.lintegral_with_density - theorem probability_theory.kernel.measurable_lintegral' - theorem probability_theory.kernel.measurable_lintegral - theorem probability_theory.kernel.measurable_lintegral_indicator_const - theorem probability_theory.kernel.measurable_prod_mk_mem - theorem probability_theory.kernel.measurable_prod_mk_mem_of_finite - theorem probability_theory.kernel.measurable_set_lintegral' - theorem probability_theory.kernel.measurable_set_lintegral - def probability_theory.kernel.with_density - theorem probability_theory.kernel.with_density_add_left - theorem probability_theory.kernel.with_density_apply' - theorem probability_theory.kernel.with_density_kernel_sum - theorem probability_theory.kernel.with_density_of_not_measurable - theorem probability_theory.kernel.with_density_tsum Modified src/probability/kernel/composition.lean Added src/probability/kernel/measurable_integral.lean + theorem probability_theory.kernel.measurable_lintegral' + theorem probability_theory.kernel.measurable_lintegral + theorem probability_theory.kernel.measurable_lintegral_indicator_const + theorem probability_theory.kernel.measurable_prod_mk_mem + theorem probability_theory.kernel.measurable_prod_mk_mem_of_finite + theorem probability_theory.kernel.measurable_set_lintegral' + theorem probability_theory.kernel.measurable_set_lintegral Added src/probability/kernel/with_density.lean + theorem probability_theory.kernel.is_finite_kernel_with_density_of_bounded + theorem probability_theory.kernel.is_s_finite_kernel.with_density + theorem probability_theory.kernel.is_s_finite_kernel_with_density_of_is_finite_kernel + theorem probability_theory.kernel.lintegral_with_density + def probability_theory.kernel.with_density + theorem probability_theory.kernel.with_density_add_left + theorem probability_theory.kernel.with_density_apply' + theorem probability_theory.kernel.with_density_kernel_sum + theorem probability_theory.kernel.with_density_of_not_measurable + theorem probability_theory.kernel.with_density_tsum 2023-05-07 08:46:01 b5ad141 chore(*): add mathlib4 synchronization comments (#18944) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.continued_fractions.computation.basic` * `algebra.continued_fractions.continuants_recurrence` * `algebra.continued_fractions.convergents_equiv` * `algebra.continued_fractions.terminated_stable` * `algebra.continued_fractions.translations` * `linear_algebra.lagrange` * `measure_theory.function.ae_measurable_sequence` * `measure_theory.measure.ae_disjoint` * `measure_theory.measure.measure_space_def` * `measure_theory.measure.null_measurable` * `ring_theory.ideal.associated_prime` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/continuants_recurrence.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/continued_fractions/terminated_stable.lean Modified src/algebra/continued_fractions/translations.lean Modified src/linear_algebra/lagrange.lean Modified src/measure_theory/function/ae_measurable_sequence.lean Modified src/measure_theory/measure/ae_disjoint.lean Modified src/measure_theory/measure/measure_space_def.lean Modified src/measure_theory/measure/null_measurable.lean Modified src/ring_theory/ideal/associated_prime.lean 2023-05-07 06:38:53 ba2eb70 feat(algebra/order/to_interval_mod): notation for `add_comm_group.modeq` (#18955) Split from #18941 ESTIMATED CHANGES Modified src/algebra/order/to_interval_mod.lean +/- theorem add_comm_group.modeq_iff_eq_add_zsmul +/- theorem add_comm_group.modeq_iff_to_Ioc_mod_eq_right +/- theorem add_comm_group.not_modeq_iff_ne_add_zsmul 2023-05-06 21:28:16 7581030 feat(order/category): Free functor `Lat ⥤ BddLat` (#18949) Construct the free functor from the category of lattices to the category of bounded lattices. Concretely, it adds a bottom and a top element. ESTIMATED CHANGES Modified src/order/category/BddLat.lean + def Lat_to_BddLat + def Lat_to_BddLat_comp_dual_iso_dual_comp_Lat_to_BddLat + def Lat_to_BddLat_forget_adjunction Modified src/order/hom/lattice.lean + def inf_hom.with_bot' + theorem inf_hom.with_bot_comp + theorem inf_hom.with_bot_id + def inf_hom.with_top' + theorem inf_hom.with_top_comp + theorem inf_hom.with_top_id + def lattice_hom.with_bot' + theorem lattice_hom.with_bot_comp + theorem lattice_hom.with_bot_id + def lattice_hom.with_top' + theorem lattice_hom.with_top_comp + theorem lattice_hom.with_top_id + def lattice_hom.with_top_with_bot' + def lattice_hom.with_top_with_bot + theorem lattice_hom.with_top_with_bot_comp + theorem lattice_hom.with_top_with_bot_id + def sup_hom.with_bot' + theorem sup_hom.with_bot_comp + theorem sup_hom.with_bot_id + def sup_hom.with_top' + theorem sup_hom.with_top_comp + theorem sup_hom.with_top_id 2023-05-06 13:10:53 4c8f86b feat(algebra/order/to_interval_mod): symmetric variants of lemmas (#18942) These lemmas are about expressions in the second instead of third arguments of the `I{co,oc}_{mod,div}` functions. Some existing lemmas clashed with these new lemmas; they have been renamed as follows: * `to_Ico_div_sub'` → `to_Ico_div_sub_eq_to_Ico_div_add` * `to_Ioc_div_sub'` → `to_Ioc_div_sub_eq_to_Ioc_div_add` * `to_Ico_div_add_right'` → `to_Ico_div_sub_eq_to_Ico_div_add'` (and reversed) * `to_Ioc_div_add_right'` → `to_Ioc_div_sub_eq_to_Ioc_div_add'` (and reversed) * `to_Ico_mod_sub'` → `to_Ico_mod_sub_eq_sub` * `to_Ioc_mod_sub'` → `to_Ioc_mod_sub_eq_sub` * `to_Ico_mod_add_right'` → `to_Ico_mod_add_right_eq_add` * `to_Ioc_mod_add_right'` → `to_Ioc_mod_add_right_eq_add` The statement of `to_Ioc_div_zsmul_add` is commuted to be consistent with the lemmas around it; presumably it was a copy-and-paste error. ESTIMATED CHANGES Modified src/algebra/order/to_interval_mod.lean + theorem to_Ico_div_add_left' +/- theorem to_Ico_div_add_right' + theorem to_Ico_div_add_zsmul' + theorem to_Ico_div_neg' +/- theorem to_Ico_div_sub' + theorem to_Ico_div_sub_eq_to_Ico_div_add' + theorem to_Ico_div_sub_eq_to_Ico_div_add + theorem to_Ico_div_sub_zsmul' + theorem to_Ico_mod_add_left' +/- theorem to_Ico_mod_add_right' + theorem to_Ico_mod_add_right_eq_add + theorem to_Ico_mod_add_zsmul' + theorem to_Ico_mod_neg' +/- theorem to_Ico_mod_sub' + theorem to_Ico_mod_sub_eq_sub + theorem to_Ico_mod_sub_zsmul' + theorem to_Ico_mod_zsmul_add' + theorem to_Ioc_div_add_left' +/- theorem to_Ioc_div_add_right' + theorem to_Ioc_div_add_zsmul' + theorem to_Ioc_div_neg' +/- theorem to_Ioc_div_sub' + theorem to_Ioc_div_sub_eq_to_Ioc_div_add' + theorem to_Ioc_div_sub_eq_to_Ioc_div_add + theorem to_Ioc_div_sub_zsmul' + theorem to_Ioc_mod_add_left' +/- theorem to_Ioc_mod_add_right' + theorem to_Ioc_mod_add_right_eq_add + theorem to_Ioc_mod_add_zsmul' + theorem to_Ioc_mod_neg' +/- theorem to_Ioc_mod_sub' + theorem to_Ioc_mod_sub_eq_sub + theorem to_Ioc_mod_sub_zsmul' + theorem to_Ioc_mod_zsmul_add' 2023-05-06 10:26:45 db07e6f chore(algebra/order/lattice_group): remove redundant instance (#18951) This instance was redundant. It can be synthesised at the declaration site via: ``` example (α : Type u) [linear_ordered_comm_group α] : covariant_class α α (*) (≤) := by show_term {apply_instance} -- ordered_comm_group.to_covariant_class_left_le α ``` Moreover, it is implicated in a timeout in the reenableeta branches, so I want it gone! This PR is just a verification that mathlib still compiles. I don't care if it is merged. ESTIMATED CHANGES Modified src/algebra/order/lattice_group.lean 2023-05-06 08:38:22 fa4a805 feat(order/category): Forgetful functor `NonemptyFinLinOrd ⥤ FinPartOrd` (#18948) Also fix a wrong docstring ESTIMATED CHANGES Modified src/order/category/NonemptyFinLinOrd.lean + def NonemptyFinLinOrd_dual_comp_forget_to_FinPartOrd 2023-05-05 08:50:18 3905fa8 doc(measure_theory): Fix some names and docstrings (#18910) ESTIMATED CHANGES Modified src/measure_theory/constructions/polish.lean Modified src/measure_theory/measurable_space.lean - theorem measurable_space.measurable_injection_cantor_of_countably_generated + theorem measurable_space.measurable_injection_nat_bool_of_countably_generated Modified src/topology/perfect.lean 2023-05-05 05:51:17 00f9122 feat(number_theory/number_field/units): add is_unit_iff_norm (#18866) This PR creates the file `number_theory/number_field/units.lean` and proves the result : ```lean lemma is_unit_iff_norm [number_field K] (x : 𝓞 K) : is_unit x ↔ abs (ring_of_integers.norm ℚ x : ℚ) = 1 ``` ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem abs_pow_eq_one Modified src/algebra/ring/equiv.lean + theorem ring_equiv.map_eq_neg_one_iff Modified src/field_theory/galois.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/field_theory/is_alg_closed/basic.lean + theorem is_alg_closure.of_algebraic Modified src/field_theory/normal.lean Modified src/number_theory/number_field/norm.lean + theorem ring_of_integers.coe_norm_algebra_map +/- theorem ring_of_integers.is_unit_norm + theorem ring_of_integers.is_unit_norm_of_is_galois + theorem ring_of_integers.norm_algebra_map + theorem ring_of_integers.norm_norm Added src/number_theory/number_field/units.lean + theorem is_unit_iff_norm + theorem rat.ring_of_integers.is_unit_iff 2023-05-05 01:40:46 2558080 chore(data/is_R_or_C/basic): rename `conj_mul_eq_norm_sq_left` to `conj_mul` (#18939) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed_space/extend.lean Modified src/data/is_R_or_C/basic.lean + theorem is_R_or_C.conj_mul - theorem is_R_or_C.conj_mul_eq_norm_sq_left Modified src/topology/continuous_function/ideals.lean 2023-05-05 00:23:07 efed3ca feat(field_theory/intermediate_field): Add lemma for the `field_range` of `val` (#18940) This PR adds a simple lemma for the `field_range` of `val`. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.field_range_val 2023-05-04 20:00:45 738054f chore(number_theory/modular_forms/slash_invariant_forms): golf and rename (#18933) In the `slash_action` namespace, this renames: * `right_action` to `slash_mul` (and reverses the direction), to match `slash_one` * `add_action` to `add_slash`, to match `zero_slash` * `smul_action` to `smul_slash`, to match `zero_slash` ESTIMATED CHANGES Modified src/number_theory/modular_forms/slash_actions.lean Modified src/number_theory/modular_forms/slash_invariant_forms.lean 2023-05-04 13:44:28 570e9f4 feat(ring_theory/localization/away) : Add `num_denom` section (#18830) Added a section `num_denom`: the main result is the lemma `exists_reduced_fraction` that shows that every non-zero element `b` in a `localization.away x` of a UFM can be written in a unique way as `b=x^n * a` with `n : ℤ` and `a` not divisible by `x`. ESTIMATED CHANGES Modified src/ring_theory/localization/away.lean + theorem exists_reduced_fraction' + theorem self_zpow_add + theorem self_zpow_coe_nat + theorem self_zpow_mul_neg + theorem self_zpow_neg_coe_nat + theorem self_zpow_neg_mul + theorem self_zpow_of_neg + theorem self_zpow_of_nonneg + theorem self_zpow_of_nonpos + theorem self_zpow_pow_sub + theorem self_zpow_sub_cast_nat + theorem self_zpow_zero Modified src/ring_theory/unique_factorization_domain.lean +/- theorem unique_factorization_monoid.count_normalized_factors_eq' +/- theorem unique_factorization_monoid.count_normalized_factors_eq +/- theorem unique_factorization_monoid.le_multiplicity_iff_replicate_le_normalized_factors + theorem unique_factorization_monoid.max_power_factor +/- theorem unique_factorization_monoid.multiplicity_eq_count_normalized_factors 2023-05-04 11:38:01 26ae6f6 chore(ring_theory/derivation): generalize tower instance (#18937) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean 2023-05-04 11:38:00 2f39bcb chore(ring_theory/ideal/quotient): add missing smul compatibility instances (#18934) The low priority is needed to avoid a timeout in what will be `ring_theory/kaehler.lean`. These instances are more general cases of the instances implied by `algebra α c.quotient` and `algebra α (R ⧸ I)`, which work for cases like `α = units R`. ESTIMATED CHANGES Modified src/ring_theory/congruence.lean Modified src/ring_theory/ideal/quotient.lean 2023-05-04 11:37:58 338fe44 feat(data/is_R_or_C/basic): drop 2 fields, golf (#18931) * Drop fields `inv_def_ax` and `div_I_ax` in `is_R_or_C`, deduce them instead. * Use lemmas about `ring_hom`s to prove properties of coercion, `is_R_or_C.re` etc. * Drop `is_R_or_C.of_real_hom` and `is_R_or_C.coe_hom`. * Drop `is_R_or_C.inv_zero` and `is_R_or_C.mul_inv_cancel`. * Move some lemmas to more appropriate sections. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Modified src/data/is_R_or_C/basic.lean +/- theorem is_R_or_C.I_mul_I_of_nonzero +/- theorem is_R_or_C.bit0_im +/- theorem is_R_or_C.bit0_re +/- theorem is_R_or_C.conj_bit0 +/- theorem is_R_or_C.conj_bit1 +/- theorem is_R_or_C.ext +/- theorem is_R_or_C.ext_iff +/- theorem is_R_or_C.inv_im +/- theorem is_R_or_C.of_real_add +/- theorem is_R_or_C.of_real_bit0 +/- theorem is_R_or_C.of_real_eq_zero + theorem is_R_or_C.of_real_injective +/- theorem is_R_or_C.of_real_int_cast +/- theorem is_R_or_C.of_real_inv +/- theorem is_R_or_C.of_real_mul +/- theorem is_R_or_C.of_real_ne_zero +/- theorem is_R_or_C.of_real_neg +/- theorem is_R_or_C.of_real_one +/- theorem is_R_or_C.of_real_pow +/- theorem is_R_or_C.of_real_sub +/- theorem is_R_or_C.one_im +/- theorem is_R_or_C.one_re 2023-05-04 11:37:57 caf83ba chore(probability/kernel/basic): make the function argument of kernel.deterministic explicit (#18930) If that argument is implicit, the infoview often shows only `deterministic _`, which does not allow to see which function is used. Making it explicit fixes that problem. ESTIMATED CHANGES Modified src/probability/kernel/basic.lean +/- def probability_theory.kernel.deterministic Modified src/probability/kernel/composition.lean 2023-05-04 11:37:56 698c80e chore(probability/kernel/composition): swap the order of the arguments of prod_mk_left (#18929) Since `prod_mk_left γ κ` creates a `kernel (γ × α) β` from `κ : kernel α β`, it makes more sense to put the `γ` argument to the left. ESTIMATED CHANGES Modified src/probability/kernel/composition.lean +/- def probability_theory.kernel.prod_mk_left 2023-05-04 09:41:24 07992a1 chore(analysis/inner_product_space/basic): golf the proof of Cauchy-Schwarz (#18938) ## API changes - Add `inner_product_space.to_core`. - Make `inner_product_space.core` extend `has_inner`. - Rename namespace from `inner_product_space.of_core` to `inner_product_space.core`. - Rename `inner_product_space.of_core.inner_norm_sq_eq_inner_self` to `inner_product_space.core.coe_norm_sq_eq_inner_self`. - Add `inner_product_space.core.norm_inner_symm`. - Add `inner_product_space.core.cauchy_schwarz_aux`, use it to golf the proof of the Cauchy-Schwarz inequality and its versions. - Use norm instead of `is_R_or_C.abs` here and there, the rest will migrate in #18919. - Rename `inner_product_space.of_core.abs_inner_le_norm` to `inner_product_space.core.norm_inner_le_norm`, use norm. - Add `norm_inner_eq_norm_tfae` and `inner_eq_norm_mul_iff_div`. - Rename `abs_inner_div_norm_mul_norm_eq_one_iff` to `norm_inner_div_norm_mul_norm_eq_one_iff`, use norm. - Rename `inner_eq_norm_mul_iff_of_norm_one` to `inner_eq_one_iff_of_norm_one`. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/inner_product_space/basic.lean - theorem abs_inner_div_norm_mul_norm_eq_one_iff - theorem abs_inner_eq_norm_iff +/- theorem abs_real_inner_le_norm + theorem inner_eq_norm_mul_iff_div - theorem inner_eq_norm_mul_iff_of_norm_one + theorem inner_eq_one_iff_of_norm_one +/- theorem inner_mul_inner_self_le + theorem inner_product_space.core.abs_inner_symm + theorem inner_product_space.core.cauchy_schwarz_aux + theorem inner_product_space.core.coe_norm_sq_eq_inner_self + theorem inner_product_space.core.inner_add_add_self + theorem inner_product_space.core.inner_add_left + theorem inner_product_space.core.inner_add_right + theorem inner_product_space.core.inner_conj_symm + theorem inner_product_space.core.inner_im_symm + theorem inner_product_space.core.inner_mul_conj_re_abs + theorem inner_product_space.core.inner_mul_inner_self_le + theorem inner_product_space.core.inner_neg_left + theorem inner_product_space.core.inner_neg_right + theorem inner_product_space.core.inner_re_symm + theorem inner_product_space.core.inner_self_eq_norm_mul_norm + theorem inner_product_space.core.inner_self_eq_zero + theorem inner_product_space.core.inner_self_im + theorem inner_product_space.core.inner_self_ne_zero + theorem inner_product_space.core.inner_self_nonneg + theorem inner_product_space.core.inner_self_re_to_K + theorem inner_product_space.core.inner_smul_left + theorem inner_product_space.core.inner_smul_right + theorem inner_product_space.core.inner_sub_left + theorem inner_product_space.core.inner_sub_right + theorem inner_product_space.core.inner_sub_sub_self + theorem inner_product_space.core.inner_zero_left + theorem inner_product_space.core.inner_zero_right + theorem inner_product_space.core.norm_eq_sqrt_inner + theorem inner_product_space.core.norm_inner_le_norm + theorem inner_product_space.core.norm_inner_symm + def inner_product_space.core.norm_sq + theorem inner_product_space.core.norm_sq_eq_zero + theorem inner_product_space.core.sqrt_norm_sq_eq_norm + def inner_product_space.core.to_has_inner' + def inner_product_space.core.to_has_norm + def inner_product_space.core.to_normed_add_comm_group + def inner_product_space.core.to_normed_space +/- structure inner_product_space.core - theorem inner_product_space.of_core.abs_inner_le_norm - theorem inner_product_space.of_core.abs_inner_symm - theorem inner_product_space.of_core.inner_add_add_self - theorem inner_product_space.of_core.inner_add_left - theorem inner_product_space.of_core.inner_add_right - theorem inner_product_space.of_core.inner_conj_symm - theorem inner_product_space.of_core.inner_im_symm - theorem inner_product_space.of_core.inner_mul_conj_re_abs - theorem inner_product_space.of_core.inner_mul_inner_self_le - theorem inner_product_space.of_core.inner_neg_left - theorem inner_product_space.of_core.inner_neg_right - theorem inner_product_space.of_core.inner_norm_sq_eq_inner_self - theorem inner_product_space.of_core.inner_re_symm - theorem inner_product_space.of_core.inner_self_eq_norm_mul_norm - theorem inner_product_space.of_core.inner_self_eq_zero - theorem inner_product_space.of_core.inner_self_im - theorem inner_product_space.of_core.inner_self_ne_zero - theorem inner_product_space.of_core.inner_self_nonneg - theorem inner_product_space.of_core.inner_self_re_to_K - theorem inner_product_space.of_core.inner_smul_left - theorem inner_product_space.of_core.inner_smul_right - theorem inner_product_space.of_core.inner_sub_left - theorem inner_product_space.of_core.inner_sub_right - theorem inner_product_space.of_core.inner_sub_sub_self - theorem inner_product_space.of_core.inner_zero_left - theorem inner_product_space.of_core.inner_zero_right - theorem inner_product_space.of_core.norm_eq_sqrt_inner - def inner_product_space.of_core.norm_sq - theorem inner_product_space.of_core.norm_sq_eq_zero - theorem inner_product_space.of_core.sqrt_norm_sq_eq_norm - def inner_product_space.of_core.to_has_inner - def inner_product_space.of_core.to_has_norm - def inner_product_space.of_core.to_normed_add_comm_group - def inner_product_space.of_core.to_normed_space + def inner_product_space.to_core + theorem norm_inner_div_norm_mul_norm_eq_one_iff + theorem norm_inner_eq_norm_iff + theorem norm_inner_eq_norm_tfae Modified src/analysis/quaternion.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/linear_algebra/matrix/pos_def.lean 2023-05-04 09:41:23 4e529b0 feat(field_theory/ax_grothendieck): Ax-Grothendieck for algebraic extensions of finite fields (#18479) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.eval_mem + theorem mv_polynomial.eval₂_mem Added src/field_theory/ax_grothendieck.lean + theorem ax_grothendieck_of_locally_finite 2023-05-04 07:52:13 fe8d0ff chore(*): add mathlib4 synchronization comments (#18923) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.continued_fractions.basic` * `analysis.convex.complex` * `analysis.special_functions.trigonometric.chebyshev` * `category_theory.category.Groupoid` * `category_theory.functor.left_derived` * `category_theory.monoidal.free.basic` * `category_theory.monoidal.tor` * `category_theory.sites.left_exact` * `data.complex.determinant` * `data.complex.module` * `data.matrix.rank` * `linear_algebra.affine_space.finite_dimensional` * `linear_algebra.affine_space.matrix` * `linear_algebra.determinant` * `linear_algebra.free_module.determinant` * `measure_theory.measure.outer_measure` * `ring_theory.localization.inv_submonoid` * `topology.algebra.module.determinant` ESTIMATED CHANGES Modified src/algebra/continued_fractions/basic.lean Modified src/analysis/convex/complex.lean Modified src/analysis/special_functions/trigonometric/chebyshev.lean Modified src/category_theory/category/Groupoid.lean Modified src/category_theory/functor/left_derived.lean Modified src/category_theory/monoidal/free/basic.lean Modified src/category_theory/monoidal/tor.lean Modified src/category_theory/sites/left_exact.lean Modified src/data/complex/determinant.lean Modified src/data/complex/module.lean Modified src/data/matrix/rank.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/affine_space/matrix.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/free_module/determinant.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/ring_theory/localization/inv_submonoid.lean Modified src/topology/algebra/module/determinant.lean 2023-05-04 03:36:49 aa1dbea chore(analysis/normed_space/extend): golf, add aux lemmas (#18927) * Add `linear_map.extend_to_𝕜'_apply_re`, `linear_map.sq_norm_extend_to_𝕜'_apply`, `continuous_linear_map.norm_extend_to_𝕜`, and `continuous_linear_map.norm_extend_to_𝕜'`. * Rename `norm_bound` to `continuous_linear_map.norm_extend_to_𝕜'_bound`. * Golf, use `namespace`s. ESTIMATED CHANGES Modified src/analysis/normed_space/extend.lean +/- theorem continuous_linear_map.extend_to_𝕜'_apply + theorem continuous_linear_map.norm_extend_to_𝕜' + theorem continuous_linear_map.norm_extend_to_𝕜'_bound + theorem continuous_linear_map.norm_extend_to_𝕜 +/- theorem linear_map.extend_to_𝕜'_apply + theorem linear_map.extend_to_𝕜'_apply_re + theorem linear_map.norm_extend_to_𝕜'_apply_sq - theorem norm_bound Modified src/analysis/normed_space/hahn_banach/extension.lean 2023-05-04 01:42:12 f0c8bf9 chore(*): removed unneeded imports (#18926) This is another run of https://github.com/leanprover-community/mathlib/pull/17568, scrubbing unnecessary imports. Like last time we only remove genuinely unneeded imports, and leave merely transitively redundant imports alone. (I *still* disagree with the objectors to removing transitively redundant imports ESTIMATED CHANGES Modified src/algebra/category/Module/biproducts.lean Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/algebra/direct_limit.lean Modified src/algebra/order/interval.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/elliptic_curve/point.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/morphisms/open_immersion.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/analysis/bounded_variation.lean Modified src/analysis/calculus/bump_function_findim.lean Modified src/analysis/complex/upper_half_plane/topology.lean Modified src/analysis/constant_speed.lean Modified src/analysis/convex/between.lean Modified src/analysis/convex/cone/proper.lean Modified src/analysis/convex/intrinsic.lean Modified src/analysis/fourier/fourier_transform.lean Modified src/analysis/fourier/riemann_lebesgue_lemma.lean Modified src/analysis/inner_product_space/orthogonal.lean Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/compact_operator.lean Modified src/analysis/normed_space/quaternion_exponential.lean Modified src/analysis/normed_space/star/spectrum.lean Modified src/analysis/special_functions/japanese_bracket.lean Modified src/category_theory/abelian/generator.lean Modified src/category_theory/abelian/injective_resolution.lean Modified src/category_theory/abelian/projective.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/data/array/lemmas.lean Modified src/data/buffer/basic.lean Modified src/data/hash_map.lean Modified src/field_theory/galois.lean Modified src/field_theory/minpoly/basic.lean Modified src/field_theory/minpoly/is_integrally_closed.lean Modified src/geometry/euclidean/angle/oriented/basic.lean Modified src/geometry/euclidean/angle/oriented/rotation.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/bilinear_form/tensor_product.lean Modified src/linear_algebra/eigenspace.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/measure/complex_lebesgue.lean Modified src/measure_theory/measure/haar_of_basis.lean Modified src/measure_theory/measure/probability_measure.lean Modified src/measure_theory/tactic.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/diophantine_approximation.lean Modified src/number_theory/kummer_dedekind.lean Modified src/number_theory/legendre_symbol/mul_character.lean Modified src/number_theory/modular_forms/jacobi_theta.lean Modified src/number_theory/number_field/basic.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/primes_congruent_one.lean Modified src/number_theory/well_approximable.lean Modified src/number_theory/zeta_values.lean Modified src/probability/density.lean Modified src/probability/variance.lean Modified src/ring_theory/dedekind_domain/adic_valuation.lean Modified src/ring_theory/dedekind_domain/dvr.lean Modified src/ring_theory/dedekind_domain/finite_adele_ring.lean Modified src/ring_theory/discrete_valuation_ring/tfae.lean Modified src/ring_theory/ideal/associated_prime.lean Modified src/ring_theory/ideal/norm.lean Modified src/ring_theory/nakayama.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/topology/algebra/nonarchimedean/adic_topology.lean Modified src/topology/instances/add_circle.lean Modified src/topology/instances/complex.lean 2023-05-03 23:08:00 73f9623 chore(ring_theory/kaehler): extract from `ring_theory/derivation` (#18935) This section of the file needs heavier imports than the first half; and this splits the content nicely in two. The lemmas are moved without modification. One very minor docstring typo is fixed. ESTIMATED CHANGES Modified src/ring_theory/derivation.lean - def derivation.comp_algebra_map - def derivation.lift_kaehler_differential - theorem derivation.lift_kaehler_differential_D - theorem derivation.lift_kaehler_differential_apply - theorem derivation.lift_kaehler_differential_comp - theorem derivation.lift_kaehler_differential_comp_D - theorem derivation.lift_kaehler_differential_unique - def derivation.tensor_product_to - theorem derivation.tensor_product_to_mul - theorem derivation.tensor_product_to_tmul - def kaehler_differential.D - theorem kaehler_differential.D_apply - def kaehler_differential.D_linear_map - theorem kaehler_differential.D_linear_map_apply - theorem kaehler_differential.D_tensor_product_to - def kaehler_differential.End_equiv - theorem kaehler_differential.End_equiv_aux - def kaehler_differential.End_equiv_aux_equiv - def kaehler_differential.End_equiv_derivation' - def kaehler_differential.derivation_quot_ker_total - theorem kaehler_differential.derivation_quot_ker_total_apply - theorem kaehler_differential.derivation_quot_ker_total_lift_comp_total - def kaehler_differential.from_ideal - def kaehler_differential.ideal - def kaehler_differential.ker_total - theorem kaehler_differential.ker_total_eq - theorem kaehler_differential.ker_total_map - theorem kaehler_differential.ker_total_mkq_single_add - theorem kaehler_differential.ker_total_mkq_single_algebra_map - theorem kaehler_differential.ker_total_mkq_single_algebra_map_one - theorem kaehler_differential.ker_total_mkq_single_mul - theorem kaehler_differential.ker_total_mkq_single_smul - def kaehler_differential.linear_map_equiv_derivation - def kaehler_differential.map - theorem kaehler_differential.map_D - def kaehler_differential.map_base_change - theorem kaehler_differential.map_base_change_tmul - theorem kaehler_differential.map_comp_der - theorem kaehler_differential.map_surjective_of_surjective - theorem kaehler_differential.one_smul_sub_smul_one_mem_ideal - def kaehler_differential.quot_ker_total_equiv - theorem kaehler_differential.quot_ker_total_equiv_symm_comp_D - def kaehler_differential.quotient_cotangent_ideal - def kaehler_differential.quotient_cotangent_ideal_ring_equiv - theorem kaehler_differential.span_range_derivation - theorem kaehler_differential.span_range_eq_ideal - theorem kaehler_differential.submodule_span_range_eq_ideal - theorem kaehler_differential.tensor_product_to_surjective - theorem kaehler_differential.total_surjective - def kaehler_differential Modified src/ring_theory/etale.lean Added src/ring_theory/kaehler.lean + def derivation.comp_algebra_map + def derivation.lift_kaehler_differential + theorem derivation.lift_kaehler_differential_D + theorem derivation.lift_kaehler_differential_apply + theorem derivation.lift_kaehler_differential_comp + theorem derivation.lift_kaehler_differential_comp_D + theorem derivation.lift_kaehler_differential_unique + def derivation.tensor_product_to + theorem derivation.tensor_product_to_mul + theorem derivation.tensor_product_to_tmul + def kaehler_differential.D + theorem kaehler_differential.D_apply + def kaehler_differential.D_linear_map + theorem kaehler_differential.D_linear_map_apply + theorem kaehler_differential.D_tensor_product_to + def kaehler_differential.End_equiv + theorem kaehler_differential.End_equiv_aux + def kaehler_differential.End_equiv_aux_equiv + def kaehler_differential.End_equiv_derivation' + def kaehler_differential.derivation_quot_ker_total + theorem kaehler_differential.derivation_quot_ker_total_apply + theorem kaehler_differential.derivation_quot_ker_total_lift_comp_total + def kaehler_differential.from_ideal + def kaehler_differential.ideal + def kaehler_differential.ker_total + theorem kaehler_differential.ker_total_eq + theorem kaehler_differential.ker_total_map + theorem kaehler_differential.ker_total_mkq_single_add + theorem kaehler_differential.ker_total_mkq_single_algebra_map + theorem kaehler_differential.ker_total_mkq_single_algebra_map_one + theorem kaehler_differential.ker_total_mkq_single_mul + theorem kaehler_differential.ker_total_mkq_single_smul + def kaehler_differential.linear_map_equiv_derivation + def kaehler_differential.map + theorem kaehler_differential.map_D + def kaehler_differential.map_base_change + theorem kaehler_differential.map_base_change_tmul + theorem kaehler_differential.map_comp_der + theorem kaehler_differential.map_surjective_of_surjective + theorem kaehler_differential.one_smul_sub_smul_one_mem_ideal + def kaehler_differential.quot_ker_total_equiv + theorem kaehler_differential.quot_ker_total_equiv_symm_comp_D + def kaehler_differential.quotient_cotangent_ideal + def kaehler_differential.quotient_cotangent_ideal_ring_equiv + theorem kaehler_differential.span_range_derivation + theorem kaehler_differential.span_range_eq_ideal + theorem kaehler_differential.submodule_span_range_eq_ideal + theorem kaehler_differential.tensor_product_to_surjective + theorem kaehler_differential.total_surjective + def kaehler_differential 2023-05-03 18:24:36 92c69b7 chore(analysis/inner_product_space/basic): golf, add/merge lemmas (#18928) - Merge `inner_product_space.of_core.inner_self_nonneg_im` and `inner_product_space.of_core.inner_self_im_zero` into `inner_product_space.of_core.inner_self_im`. - Rename `inner_product_space.of_core.inner_abs_conj_symm` to `inner_product_space.of_core.abs_inner_symm`. - Rename `inner_abs_conj_symm` to `abs_inner_symm`. - Add `inner_product_space.of_core.norm_sq_eq_zero`. - Merge `inner_self_nonneg_im` and `inner_self_im_zero` into `inner_self_im`. - Reorder, golf. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem abs_inner_symm - theorem inner_abs_conj_symm + theorem inner_product_space.of_core.abs_inner_symm - theorem inner_product_space.of_core.inner_abs_conj_symm + theorem inner_product_space.of_core.inner_self_im - theorem inner_product_space.of_core.inner_self_im_zero - theorem inner_product_space.of_core.inner_self_nonneg_im + theorem inner_product_space.of_core.norm_sq_eq_zero + theorem inner_self_im - theorem inner_self_im_zero - theorem inner_self_nonneg_im 2023-05-03 18:24:34 726d2fe feat(measure_theory/constructions/prod): marginal measures (#18915) For `ρ : measure (α × β)`, define `ρ.fst : measure α := ρ.map prod.fst`, and define `ρ.snd` similarly. ESTIMATED CHANGES Modified src/measure_theory/constructions/prod.lean + def measure_theory.measure.fst + theorem measure_theory.measure.fst_apply + theorem measure_theory.measure.fst_univ + def measure_theory.measure.snd + theorem measure_theory.measure.snd_apply + theorem measure_theory.measure.snd_univ 2023-05-03 16:34:41 c163ec9 chore(ring_theory/discrete_valuation_ring): create folder ring_theory/discrete_valuation_ring (#18867) Moved the file `ring_theory/discrete_valuation_ring.lean` inside the folder and renamed it as `basic.lean`; also, added the file `valuation.tfae` giving equivalent conditions for being a dvr to the folder. ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean Modified src/ring_theory/dedekind_domain/dvr.lean Renamed src/ring_theory/discrete_valuation_ring.lean to src/ring_theory/discrete_valuation_ring/basic.lean Renamed src/ring_theory/valuation/tfae.lean to src/ring_theory/discrete_valuation_ring/tfae.lean Modified src/ring_theory/valuation/valuation_ring.lean Modified src/ring_theory/witt_vector/discrete_valuation_ring.lean 2023-05-03 13:04:49 ef997ba feat(representation_theory/group_cohomology/basic): add standard definition of group cohomology (#18341) We define the complex of inhomogeneous cochains, define group cohomology to be its cohomology, and prove this is isomorphic to the appropriate Ext groups. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + theorem fin.inv_partial_prod_mul_eq_contract_nth Modified src/data/fin/tuple/basic.lean + def fin.contract_nth + theorem fin.contract_nth_apply_of_eq + theorem fin.contract_nth_apply_of_gt + theorem fin.contract_nth_apply_of_lt + theorem fin.contract_nth_apply_of_ne Added src/representation_theory/group_cohomology/basic.lean + def group_cohomology.inhomogeneous_cochains_iso + def group_cohomology.linear_yoneda_obj_resolution + theorem group_cohomology.linear_yoneda_obj_resolution_d_apply + def group_cohomology + def group_cohomology_iso_Ext + def inhomogeneous_cochains.d + theorem inhomogeneous_cochains.d_eq Renamed src/representation_theory/group_cohomology_resolution.lean to src/representation_theory/group_cohomology/resolution.lean +/- theorem Rep.diagonal_hom_equiv_apply +/- theorem Rep.diagonal_hom_equiv_symm_apply + theorem Rep.diagonal_hom_equiv_symm_partial_prod_succ 2023-05-03 06:27:58 4d06b17 chore(data/set/intervals/monotone): fix names (#18924) Some lemmas used `Iic` instead of `Ici` in the names, probably because of a copy+paste error. ESTIMATED CHANGES Modified src/data/set/intervals/monotone.lean + theorem strict_anti_on_Ici_of_lt_pred - theorem strict_anti_on_Iic_of_lt_pred + theorem strict_mono_on.Ici_le_id - theorem strict_mono_on.Iic_le_id + theorem strict_mono_on_Ici_of_pred_lt - theorem strict_mono_on_Iic_of_pred_lt 2023-05-03 06:27:57 f9dd320 chore(analysis/normed_space/basic): rename `abs_norm_eq_norm` to `abs_norm` (#18921) ESTIMATED CHANGES Modified src/analysis/complex/open_mapping.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/normed_space/basic.lean + theorem abs_norm - theorem abs_norm_eq_norm Modified src/analysis/normed_space/lp_space.lean Modified src/analysis/normed_space/star/continuous_functional_calculus.lean 2023-05-03 03:14:51 caa58cb chore(data/{complex,is_R_or_C}/basic): fix name of `eq_conj_iff_*` lemmas (#18922) These were all about `conj x = x` not `x = conj x`. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/metric.lean Modified src/analysis/inner_product_space/positive.lean Modified src/analysis/inner_product_space/spectrum.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/analysis/special_functions/gamma.lean Modified src/data/complex/basic.lean + theorem complex.conj_eq_iff_im + theorem complex.conj_eq_iff_re + theorem complex.conj_eq_iff_real - theorem complex.eq_conj_iff_im - theorem complex.eq_conj_iff_re - theorem complex.eq_conj_iff_real Modified src/data/complex/exponential.lean Modified src/data/is_R_or_C/basic.lean + theorem is_R_or_C.conj_eq_iff_re + theorem is_R_or_C.conj_eq_iff_real - theorem is_R_or_C.eq_conj_iff_re - theorem is_R_or_C.eq_conj_iff_real Modified src/field_theory/polynomial_galois_group.lean Modified src/linear_algebra/matrix/hermitian.lean Modified src/number_theory/number_field/embeddings.lean 2023-05-03 03:14:50 15e02bc feat(probability/kernel/composition): add a notation for the product of kernels (#18918) Define `κ ×ₖ η = probability_theory.kernel.prod κ η`. ESTIMATED CHANGES Modified src/probability/kernel/composition.lean 2023-05-03 03:14:49 61d8b82 chore(ring_theory/polynomial/quotient): remove spurious restrict_scalars (#18916) Verifying that the `restrict_scalars` here is spurious. This proof is timing out badly in mathlib4. If someone would like to merge this, please do so, but please then handle updating the SHA in mathlib4 as well. :-) ESTIMATED CHANGES Modified src/ring_theory/polynomial/quotient.lean 2023-05-03 03:14:48 645b6de refactor(algebra/order/to_interval_mod): Negate the definition of `mem_Ioo_mod` (#18912) This replaces `mem_Ioo_mod hp a b` with `¬add_comm_group.modeq p a b`. This is more consistent with `int.modeq`, `nat.modeq`, and `smodeq`. There's still some duplication here, but at least these four ideas are now conceptually aligned. This remove any lemmas of the form `¬modeq p a b ↔ _ ≠ _` as these are now trivial consequences of the `modeq p a b ↔ _ = _` versions, ESTIMATED CHANGES Modified src/algebra/order/to_interval_mod.lean + def add_comm_group.modeq + theorem add_comm_group.modeq_iff_eq_add_zsmul + theorem add_comm_group.modeq_iff_eq_mod_zmultiples + theorem add_comm_group.modeq_iff_to_Ico_div_eq_to_Ioc_div_add_one + theorem add_comm_group.modeq_iff_to_Ico_mod_add_period_eq_to_Ioc_mod + theorem add_comm_group.modeq_iff_to_Ico_mod_eq_left + theorem add_comm_group.modeq_iff_to_Ico_mod_ne_to_Ioc_mod + theorem add_comm_group.modeq_iff_to_Ioc_mod_eq_right + theorem add_comm_group.not_modeq_iff_ne_add_zsmul + theorem add_comm_group.not_modeq_iff_ne_mod_zmultiples + theorem add_comm_group.not_modeq_iff_to_Ico_div_eq_to_Ioc_div + theorem add_comm_group.not_modeq_iff_to_Ico_mod_eq_to_Ioc_mod + theorem add_comm_group.tfae_modeq - def mem_Ioo_mod - theorem mem_Ioo_mod_iff_ne_add_zsmul - theorem mem_Ioo_mod_iff_ne_mod_zmultiples - theorem mem_Ioo_mod_iff_to_Ico_div_eq_to_Ioc_div - theorem mem_Ioo_mod_iff_to_Ico_div_ne_to_Ioc_div_add_one - theorem mem_Ioo_mod_iff_to_Ico_mod_add_period_ne_to_Ioc_mod - theorem mem_Ioo_mod_iff_to_Ico_mod_eq_to_Ioc_mod - theorem mem_Ioo_mod_iff_to_Ico_mod_ne_left - theorem mem_Ioo_mod_iff_to_Ioc_mod_ne_right - theorem not_mem_Ioo_mod_iff_eq_add_zsmul - theorem not_mem_Ioo_mod_iff_eq_mod_zmultiples - theorem not_mem_Ioo_mod_iff_to_Ico_div_eq_to_Ioc_div_add_one - theorem not_mem_Ioo_mod_iff_to_Ico_mod_add_period_eq_to_Ioc_mod - theorem not_mem_Ioo_mod_iff_to_Ico_mod_eq_left - theorem not_mem_Ioo_mod_iff_to_Ioc_eq_right - theorem tfae_mem_Ioo_mod Modified src/topology/instances/add_circle.lean 2023-05-03 03:14:47 f69db8c feat(data/mv_polynomial/basic): add and generalize some lemmas from finsupp and monoid_algebra (#18855) Most of these changes generalize from `distrib_mul_action` to `smul_zero_class`. The new lemmas are all just proved using corresponding lemmas on the underlying types. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.support_smul Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.coeff_smul +/- theorem mv_polynomial.constant_coeff_smul + theorem mv_polynomial.smul_monomial + theorem mv_polynomial.support_eq_empty +/- theorem mv_polynomial.support_smul + theorem mv_polynomial.support_smul_eq 2023-05-03 03:14:46 ec45280 feat(analysis/special_functions): file for evaluations of specific improper integrals (#18821) We have the file `analysis/special_functions/integrals.lean` which has numerous evaluations of interval integrals. This adds a counterpart file for integrals over infinite intervals. (Added as preparation for a forthcoming PR about Mellin transforms -- I wanted somewhere to put the fact that `x ^ (-a)` is integrable on `[1, infinity)`). ESTIMATED CHANGES Modified src/analysis/special_functions/gamma.lean - theorem integral_exp_neg_Ioi Added src/analysis/special_functions/improper_integrals.lean + theorem integrable_on_Ioi_cpow_of_lt + theorem integrable_on_Ioi_rpow_of_lt + theorem integrable_on_exp_Iic + theorem integral_Ioi_cpow_of_lt + theorem integral_Ioi_rpow_of_lt + theorem integral_exp_Iic + theorem integral_exp_Iic_zero + theorem integral_exp_neg_Ioi + theorem integral_exp_neg_Ioi_zero Modified src/measure_theory/measure/lebesgue.lean + theorem integral_comp_neg_Iic + theorem integral_comp_neg_Ioi 2023-05-02 21:10:16 7413128 feat(data/list/cycle): well-founded or transitive irreflexive relations don't have cycles (#18512) Since `simp` can prove statements such as `cycle r [a, b, c] ↔ r a b ∧ r b c ∧ r c a`, this gives us a nice generalization of asymmetry. ESTIMATED CHANGES Modified src/data/list/cycle.lean + theorem cycle.chain.eq_nil_of_irrefl + theorem cycle.chain.eq_nil_of_well_founded + theorem cycle.chain.imp + theorem cycle.chain_mono Modified src/order/rel_classes.lean 2023-05-02 16:15:17 36b8aa6 feat(algebra/algebra/basic): add shortcut instance (#18907) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean 2023-05-02 13:48:08 ef55335 chore(*): add mathlib4 synchronization comments (#18897) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.Z_Module_equivalence` * `algebraic_topology.extra_degeneracy` * `category_theory.abelian.exact` * `category_theory.abelian.transfer` * `category_theory.monad.coequalizer` * `category_theory.preadditive.projective_resolution` * `data.mv_polynomial.polynomial` * `data.ordmap.ordnode` * `field_theory.tower` * `linear_algebra.projective_space.basic` * `linear_algebra.projective_space.independence` * `linear_algebra.symplectic_group` * `topology.category.Profinite.basic` * `topology.category.Profinite.projective` ESTIMATED CHANGES Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebraic_topology/extra_degeneracy.lean Modified src/category_theory/abelian/exact.lean Modified src/category_theory/abelian/transfer.lean Modified src/category_theory/monad/coequalizer.lean Modified src/category_theory/preadditive/projective_resolution.lean Modified src/data/mv_polynomial/polynomial.lean Modified src/data/ordmap/ordnode.lean Modified src/field_theory/tower.lean Modified src/linear_algebra/projective_space/basic.lean Modified src/linear_algebra/projective_space/independence.lean Modified src/linear_algebra/symplectic_group.lean Modified src/topology/category/Profinite/basic.lean Modified src/topology/category/Profinite/projective.lean 2023-05-02 11:42:39 11d5ff2 feat(measure_theory/constructions/polish): a Polish Borel space is measurably equivalent to a subset of the reals (#18881) ESTIMATED CHANGES Modified src/measure_theory/constructions/polish.lean + theorem measure_theory.exists_measurable_embedding_real + theorem measure_theory.exists_nat_measurable_equiv_range_coe_fin_of_finite + theorem measure_theory.exists_subset_real_measurable_equiv + theorem measure_theory.measurable_equiv_range_coe_nat_of_infinite_of_countable 2023-05-02 02:56:29 2c1d8ca chore(analysis/special_functions): Reduce imports in special_functions (#18909) Remove a bunch of imports in `analysis/special_functions` and `analysis/calculus` which are unnecessary by transitivity, and a few more which are genuinely nontrivial (i.e. the import isn't in the transitive closure of the other imports) but nonetheless aren't needed for the file to compile. ESTIMATED CHANGES Modified src/analysis/calculus/bump_function_findim.lean Modified src/analysis/calculus/bump_function_inner.lean Modified src/analysis/calculus/cont_diff_def.lean Modified src/analysis/calculus/dslope.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_analytic.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/monotone.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/calculus/taylor.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/special_functions/complex/arg.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/exp_deriv.lean Modified src/analysis/special_functions/exponential.lean Modified src/analysis/special_functions/gamma.lean Modified src/analysis/special_functions/gaussian.lean Modified src/analysis/special_functions/japanese_bracket.lean Modified src/analysis/special_functions/log/base.lean Modified src/analysis/special_functions/log/monotone.lean Modified src/analysis/special_functions/non_integrable.lean Modified src/analysis/special_functions/stirling.lean Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/analysis/special_functions/trigonometric/bounds.lean Modified src/analysis/special_functions/trigonometric/chebyshev.lean Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/analysis/special_functions/trigonometric/complex_deriv.lean Modified src/analysis/special_functions/trigonometric/deriv.lean Modified src/analysis/special_functions/trigonometric/euler_sine_prod.lean Modified src/probability/martingale/upcrossing.lean 2023-05-02 01:48:47 33085c9 chore(category_theory/monoidal/Mod): rename to Mod_ to avoid name clash in mathlib4 (#18911) This matches the existing `Mon_`. ESTIMATED CHANGES Renamed src/category_theory/monoidal/Mod.lean to src/category_theory/monoidal/Mod_.lean - theorem Mod.assoc_flip - def Mod.comap - def Mod.comp - theorem Mod.comp_hom' - def Mod.forget - structure Mod.hom - def Mod.id - theorem Mod.id_hom' - def Mod.regular - structure Mod + theorem Mod_.assoc_flip + def Mod_.comap + def Mod_.comp + theorem Mod_.comp_hom' + def Mod_.forget + structure Mod_.hom + def Mod_.id + theorem Mod_.id_hom' + def Mod_.regular + structure Mod_ 2023-05-02 01:48:46 362c226 refactor(category_theory): removing additive_category (#18903) This PR removes the class `additive_category` which was essentially unused, and was creating instance issues during the port. ESTIMATED CHANGES Deleted src/category_theory/additive/basic.lean Modified src/category_theory/idempotents/biproducts.lean 2023-05-02 01:48:45 ef74e2b refactor(number_theory/modular_forms/slash_actions): use the same notation everywhere (#18886) Previously we had both `f ∣[k] A` and `f ∣[k, A]` notation, this keeps only the former (on the assumption it more closely resembles the LaTeX). `f ∣[k;γ] A` is then added as notation for the more general `γ`-invariant case that the typeclass is designed around, even though that is never used. This makes `slash_action.map` the canonical spelling of slash actions, as opposed to a mix of this spelling and `modular_form.slash`. Since `modular_form.slash` is no longer canonical, all the lemmas about it are made private as they are immediately subsumed by the typeclass lemmas. Rather than defining the same local notation in each file, this now just opens the locale. This also ungeneralizes `has_zero` + `has_add` to `add_monoid`, since the extra generality is not used, and we do not have it for the (suspiciously!) analogous `distrib_mul_action`. ESTIMATED CHANGES Modified src/number_theory/modular_forms/basic.lean Modified src/number_theory/modular_forms/slash_actions.lean +/- theorem modular_form.SL_slash +/- theorem modular_form.is_invariant_one - theorem modular_form.neg_slash - theorem modular_form.slash_add + theorem modular_form.slash_def - theorem modular_form.slash_one - theorem modular_form.slash_right_action - theorem modular_form.smul_slash - theorem modular_form.zero_slash +/- def monoid_hom_slash_action + theorem slash_action.neg_slash + theorem slash_action.smul_slash_of_tower Modified src/number_theory/modular_forms/slash_invariant_forms.lean 2023-05-02 01:48:44 fecd352 feat(ring_theory/norm): add norm_norm (#18860) Prove the transitivity of the algebra.norm ```lean lemma algebra.norm_norm [is_scalar_tower K L F] [finite_dimensional K F] [is_separable K F] (x : F) : norm K (norm L x) = norm K x ``` ESTIMATED CHANGES Modified src/ring_theory/norm.lean + theorem algebra.norm_eq_one_of_not_module_finite + theorem algebra.norm_norm 2023-05-02 01:48:43 620ba06 feat(analysis/convex/cone/proper): define closure of a convex cone (#16335) Part of #16266 We define the closure of a convex cone. This definition is only used for defining maps between proper cones and hence is in this file and not cone/basic.lean Next todo: define proper cones and add some proper cone API ESTIMATED CHANGES Modified docs/references.bib Added src/analysis/convex/cone/proper.lean + theorem convex_cone.coe_closure 2023-05-01 23:12:52 b2d7b50 chore(algebra/order/to_interval_mod): Reorder arguments (#18908) The current argument order to `to_Ixx_mod` is a bit poor: In `to_Ico a hb x`, `a` and `x` play a similar role while `b` is completely separate. This PR changes this to `to_Ico hp a b`, where the translation is as follows: * `mem_Ioo_mod a p b` → `mem_Ioo_mod p a b` (this is more consistent with `int.modeq p a b`) * `to_Ico_div a hp b` → `to_Ico_div hp a b` * `to_Ioc_div a hp b` → `to_Ioc_div hp a b` * `to_Ico_mod a hp b` → `to_Ico_mod hp a b` * `to_Ioc_mod a hp b` → `to_Ioc_mod hp a b` While it might be tempting to order`to_Ico_div hp a b` as `to_Ico_div b a hp` to match the order of the morally equivalent `(b - a) / p + a`, we opt for the simpler convention of being consistent with `mem_Ioo_mod`, as in downstream files we also find it convenient to have `b` as the last argument. Generally speaking, the variables have been renamed to * `a` → `a` (the left end) * `b` → `p` (the period) * `x` → `b` (the interval length) * `y` → `c` (additional argument similar to the left end and interval length) * `z` → `n` (the euclidean dividend) Proofs are golfed slightly. The only lemma statements that changed are `to_Ico_div_eq_of_sub_zsmul_mem_Ico`/`to_Ioc_div_eq_of_sub_zsmul_mem_Ioc` that now state `to_Ico_div hp a b = n` rather than `n = to_Ico_div hp a b` (they were always used in this new direction). ESTIMATED CHANGES Modified src/algebra/order/to_interval_mod.lean +/- theorem Union_Icc_add_zsmul +/- theorem Union_Icc_zsmul +/- theorem Union_Ico_add_zsmul +/- theorem Union_Ico_zsmul +/- theorem Union_Ioc_add_zsmul +/- theorem Union_Ioc_zsmul - theorem eq_to_Ico_div_of_sub_zsmul_mem_Ico - theorem eq_to_Ioc_div_of_sub_zsmul_mem_Ioc +/- theorem left_le_to_Ico_mod +/- theorem left_lt_to_Ioc_mod +/- def mem_Ioo_mod +/- theorem mem_Ioo_mod_iff_ne_add_zsmul +/- theorem mem_Ioo_mod_iff_to_Ioc_mod_ne_right +/- theorem not_mem_Ioo_mod_iff_eq_add_zsmul +/- theorem not_mem_Ioo_mod_iff_to_Ico_mod_eq_left +/- theorem not_mem_Ioo_mod_iff_to_Ioc_eq_right +/- def quotient_add_group.equiv_Ico_mod +/- theorem quotient_add_group.equiv_Ico_mod_coe +/- def quotient_add_group.equiv_Ioc_mod +/- theorem quotient_add_group.equiv_Ioc_mod_coe +/- theorem self_sub_to_Ico_div_zsmul +/- theorem self_sub_to_Ico_mod +/- theorem self_sub_to_Ioc_div_zsmul +/- theorem self_sub_to_Ioc_mod +/- theorem sub_to_Ico_div_zsmul_mem_Ico +/- theorem sub_to_Ioc_div_zsmul_mem_Ioc +/- def to_Ico_div +/- theorem to_Ico_div_add_left +/- theorem to_Ico_div_add_right' +/- theorem to_Ico_div_add_right +/- theorem to_Ico_div_add_zsmul +/- theorem to_Ico_div_apply_left +/- theorem to_Ico_div_apply_right +/- theorem to_Ico_div_eq_floor + theorem to_Ico_div_eq_of_sub_zsmul_mem_Ico +/- theorem to_Ico_div_neg +/- theorem to_Ico_div_sub' +/- theorem to_Ico_div_sub +/- theorem to_Ico_div_sub_zsmul +/- theorem to_Ico_div_zero_one +/- theorem to_Ico_div_zsmul_add +/- theorem to_Ico_div_zsmul_sub_self +/- theorem to_Ico_div_zsmul_sub_to_Ico_mod +/- def to_Ico_mod +/- theorem to_Ico_mod_add_left +/- theorem to_Ico_mod_add_right' +/- theorem to_Ico_mod_add_right +/- theorem to_Ico_mod_add_to_Ico_div_zsmul +/- theorem to_Ico_mod_add_zsmul +/- theorem to_Ico_mod_apply_left +/- theorem to_Ico_mod_apply_right +/- theorem to_Ico_mod_eq_add_fract_mul +/- theorem to_Ico_mod_eq_fract_mul +/- theorem to_Ico_mod_eq_iff +/- theorem to_Ico_mod_eq_self +/- theorem to_Ico_mod_eq_to_Ico_mod +/- theorem to_Ico_mod_le_to_Ioc_mod +/- theorem to_Ico_mod_lt_right +/- theorem to_Ico_mod_mem_Ico' +/- theorem to_Ico_mod_mem_Ico +/- theorem to_Ico_mod_neg +/- theorem to_Ico_mod_periodic +/- theorem to_Ico_mod_sub' +/- theorem to_Ico_mod_sub +/- theorem to_Ico_mod_sub_self +/- theorem to_Ico_mod_sub_zsmul +/- theorem to_Ico_mod_to_Ico_mod +/- theorem to_Ico_mod_to_Ioc_mod +/- theorem to_Ico_mod_zero_one +/- theorem to_Ico_mod_zsmul_add +/- def to_Ioc_div +/- theorem to_Ioc_div_add_left +/- theorem to_Ioc_div_add_right' +/- theorem to_Ioc_div_add_right +/- theorem to_Ioc_div_add_zsmul +/- theorem to_Ioc_div_apply_left +/- theorem to_Ioc_div_apply_right +/- theorem to_Ioc_div_eq_neg_floor + theorem to_Ioc_div_eq_of_sub_zsmul_mem_Ioc +/- theorem to_Ioc_div_neg +/- theorem to_Ioc_div_sub' +/- theorem to_Ioc_div_sub +/- theorem to_Ioc_div_sub_zsmul +/- theorem to_Ioc_div_wcovby_to_Ico_div +/- theorem to_Ioc_div_zsmul_add +/- theorem to_Ioc_div_zsmul_sub_self +/- theorem to_Ioc_div_zsmul_sub_to_Ioc_mod +/- def to_Ioc_mod +/- theorem to_Ioc_mod_add_left +/- theorem to_Ioc_mod_add_right' +/- theorem to_Ioc_mod_add_right +/- theorem to_Ioc_mod_add_to_Ioc_div_zsmul +/- theorem to_Ioc_mod_add_zsmul +/- theorem to_Ioc_mod_apply_left +/- theorem to_Ioc_mod_apply_right +/- theorem to_Ioc_mod_eq_iff +/- theorem to_Ioc_mod_eq_self +/- theorem to_Ioc_mod_eq_sub_fract_mul +/- theorem to_Ioc_mod_eq_to_Ioc_mod +/- theorem to_Ioc_mod_le_right +/- theorem to_Ioc_mod_le_to_Ico_mod_add +/- theorem to_Ioc_mod_mem_Ioc +/- theorem to_Ioc_mod_neg +/- theorem to_Ioc_mod_periodic +/- theorem to_Ioc_mod_sub' +/- theorem to_Ioc_mod_sub +/- theorem to_Ioc_mod_sub_self +/- theorem to_Ioc_mod_sub_zsmul +/- theorem to_Ioc_mod_to_Ico_mod +/- theorem to_Ioc_mod_to_Ioc_mod +/- theorem to_Ioc_mod_zsmul_add Modified src/analysis/special_functions/complex/arg.lean Modified src/analysis/special_functions/trigonometric/angle.lean +/- theorem real.angle.coe_to_Ico_mod +/- theorem real.angle.coe_to_Ioc_mod +/- theorem real.angle.to_Ioc_mod_to_real +/- theorem real.angle.to_real_coe Modified src/topology/instances/add_circle.lean +/- def add_circle.equiv_Ico +/- def add_circle.equiv_Ioc +/- theorem continuous_at_to_Ico_mod +/- theorem continuous_at_to_Ioc_mod +/- theorem continuous_left_to_Ioc_mod +/- theorem continuous_right_to_Ico_mod +/- theorem to_Ico_mod_eventually_eq_to_Ioc_mod 2023-05-01 20:00:55 3947876 chore(category_theory/limits/preserves): fix typo (#18906) ESTIMATED CHANGES Modified src/category_theory/functor/flat.lean Modified src/category_theory/limits/preserves/functor_category.lean + def category_theory.preserves_limit_of_Lan_preserves_limit - def category_theory.preserves_limit_of_Lan_presesrves_limit 2023-05-01 05:15:31 8130e51 fix(algebra/module/submodule/basic): remove `submodule_class` (#18902) This is redundant in the face of `smul_mem_class`. This also adds a missing instance. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/module/submodule/basic.lean 2023-05-01 03:53:08 7317149 chore(measure_theory/integral): split up measure_theory.integral.lebesgue (#18904) This PR shortens the 3056-line-long file `measure_theory.integral.lebesgue`, by removing a 1000-line initial segment into a new file `measure_theory.function.simple_func`. ESTIMATED CHANGES Added src/measure_theory/function/simple_func.lean + theorem measurable.ennreal_induction + theorem measure_theory.simple_func.add_lintegral + theorem measure_theory.simple_func.apply_mk + def measure_theory.simple_func.approx + theorem measure_theory.simple_func.approx_apply + theorem measure_theory.simple_func.approx_comp + def measure_theory.simple_func.bind + theorem measure_theory.simple_func.bind_apply + theorem measure_theory.simple_func.bind_const + theorem measure_theory.simple_func.coe_comp + theorem measure_theory.simple_func.coe_const + theorem measure_theory.simple_func.coe_div + theorem measure_theory.simple_func.coe_inf + theorem measure_theory.simple_func.coe_injective + theorem measure_theory.simple_func.coe_inv + theorem measure_theory.simple_func.coe_le + theorem measure_theory.simple_func.coe_map + theorem measure_theory.simple_func.coe_mul + theorem measure_theory.simple_func.coe_one + theorem measure_theory.simple_func.coe_piecewise + theorem measure_theory.simple_func.coe_pow + theorem measure_theory.simple_func.coe_range + theorem measure_theory.simple_func.coe_restrict + theorem measure_theory.simple_func.coe_smul + theorem measure_theory.simple_func.coe_sup + theorem measure_theory.simple_func.coe_zpow + def measure_theory.simple_func.comp + def measure_theory.simple_func.const + theorem measure_theory.simple_func.const_apply + theorem measure_theory.simple_func.const_lintegral + theorem measure_theory.simple_func.const_lintegral_restrict + theorem measure_theory.simple_func.const_mul_eq_map + theorem measure_theory.simple_func.const_mul_lintegral + theorem measure_theory.simple_func.const_one + theorem measure_theory.simple_func.div_apply + def measure_theory.simple_func.eapprox + theorem measure_theory.simple_func.eapprox_comp + def measure_theory.simple_func.eapprox_diff + theorem measure_theory.simple_func.eapprox_lt_top + def measure_theory.simple_func.ennreal_rat_embed + theorem measure_theory.simple_func.ennreal_rat_embed_encode + theorem measure_theory.simple_func.eq_zero_of_mem_range_zero + theorem measure_theory.simple_func.exists_forall_le + theorem measure_theory.simple_func.exists_range_iff + theorem measure_theory.simple_func.ext + def measure_theory.simple_func.extend + theorem measure_theory.simple_func.extend_apply' + theorem measure_theory.simple_func.extend_apply + theorem measure_theory.simple_func.extend_comp_eq' + theorem measure_theory.simple_func.extend_comp_eq + theorem measure_theory.simple_func.fin_meas_supp.iff_lintegral_lt_top + theorem measure_theory.simple_func.fin_meas_supp.lintegral_lt_top + theorem measure_theory.simple_func.fin_meas_supp.map_iff + theorem measure_theory.simple_func.fin_meas_supp.meas_preimage_singleton_ne_zero + theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_ne_top + theorem measure_theory.simple_func.fin_meas_supp.of_map + theorem measure_theory.simple_func.fin_meas_supp_iff + theorem measure_theory.simple_func.fin_meas_supp_iff_support + theorem measure_theory.simple_func.finite_range + theorem measure_theory.simple_func.finset_sup_apply + theorem measure_theory.simple_func.forall_range_iff + theorem measure_theory.simple_func.inf_apply + theorem measure_theory.simple_func.inv_apply + theorem measure_theory.simple_func.le_sup_lintegral + def measure_theory.simple_func.lintegral + theorem measure_theory.simple_func.lintegral_add + theorem measure_theory.simple_func.lintegral_congr + theorem measure_theory.simple_func.lintegral_eq_of_measure_preimage + theorem measure_theory.simple_func.lintegral_eq_of_subset' + theorem measure_theory.simple_func.lintegral_eq_of_subset + theorem measure_theory.simple_func.lintegral_map' + theorem measure_theory.simple_func.lintegral_map + theorem measure_theory.simple_func.lintegral_mono + theorem measure_theory.simple_func.lintegral_restrict + theorem measure_theory.simple_func.lintegral_smul + theorem measure_theory.simple_func.lintegral_sum + theorem measure_theory.simple_func.lintegral_zero + def measure_theory.simple_func.lintegralₗ + def measure_theory.simple_func.map + theorem measure_theory.simple_func.map_apply + theorem measure_theory.simple_func.map_coe_ennreal_restrict + theorem measure_theory.simple_func.map_coe_nnreal_restrict + theorem measure_theory.simple_func.map_const + theorem measure_theory.simple_func.map_lintegral + theorem measure_theory.simple_func.map_map + theorem measure_theory.simple_func.map_mul + theorem measure_theory.simple_func.map_preimage + theorem measure_theory.simple_func.map_preimage_singleton + theorem measure_theory.simple_func.map_restrict_of_zero + theorem measure_theory.simple_func.measurable_bind + theorem measure_theory.simple_func.measurable_set_cut + theorem measure_theory.simple_func.measurable_set_fiber + theorem measure_theory.simple_func.measurable_set_preimage + theorem measure_theory.simple_func.measurable_set_support + theorem measure_theory.simple_func.mem_image_of_mem_range_restrict + theorem measure_theory.simple_func.mem_range + theorem measure_theory.simple_func.mem_range_of_measure_ne_zero + theorem measure_theory.simple_func.mem_range_self + theorem measure_theory.simple_func.mem_restrict_range + theorem measure_theory.simple_func.monotone_approx + theorem measure_theory.simple_func.monotone_eapprox + theorem measure_theory.simple_func.mul_apply + theorem measure_theory.simple_func.mul_eq_map₂ + def measure_theory.simple_func.of_is_empty + def measure_theory.simple_func.pair + theorem measure_theory.simple_func.pair_apply + theorem measure_theory.simple_func.pair_preimage + theorem measure_theory.simple_func.pair_preimage_singleton + def measure_theory.simple_func.piecewise + theorem measure_theory.simple_func.piecewise_apply + theorem measure_theory.simple_func.piecewise_compl + theorem measure_theory.simple_func.piecewise_empty + theorem measure_theory.simple_func.piecewise_univ + theorem measure_theory.simple_func.pow_apply + theorem measure_theory.simple_func.preimage_eq_empty_iff + theorem measure_theory.simple_func.range_comp_subset_range + theorem measure_theory.simple_func.range_const + theorem measure_theory.simple_func.range_const_subset + theorem measure_theory.simple_func.range_eq_empty_of_is_empty + theorem measure_theory.simple_func.range_indicator + theorem measure_theory.simple_func.range_map + theorem measure_theory.simple_func.range_one + def measure_theory.simple_func.restrict + theorem measure_theory.simple_func.restrict_apply + theorem measure_theory.simple_func.restrict_const_lintegral + theorem measure_theory.simple_func.restrict_empty + theorem measure_theory.simple_func.restrict_lintegral + theorem measure_theory.simple_func.restrict_lintegral_eq_lintegral_restrict + theorem measure_theory.simple_func.restrict_mono + theorem measure_theory.simple_func.restrict_of_not_measurable + theorem measure_theory.simple_func.restrict_preimage + theorem measure_theory.simple_func.restrict_preimage_singleton + theorem measure_theory.simple_func.restrict_univ + def measure_theory.simple_func.seq + theorem measure_theory.simple_func.seq_apply + theorem measure_theory.simple_func.simple_func_bot' + theorem measure_theory.simple_func.simple_func_bot + theorem measure_theory.simple_func.smul_apply + theorem measure_theory.simple_func.smul_eq_map + theorem measure_theory.simple_func.sum_eapprox_diff + theorem measure_theory.simple_func.sum_range_measure_preimage_singleton + theorem measure_theory.simple_func.sup_apply + theorem measure_theory.simple_func.sup_eq_map₂ + theorem measure_theory.simple_func.support_eq + theorem measure_theory.simple_func.support_indicator + theorem measure_theory.simple_func.supr_approx_apply + theorem measure_theory.simple_func.supr_eapprox_apply + theorem measure_theory.simple_func.tsum_eapprox_diff + theorem measure_theory.simple_func.zero_lintegral + theorem measure_theory.simple_func.zpow_apply + structure measure_theory.{u Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/function/strongly_measurable/basic.lean Modified src/measure_theory/integral/lebesgue.lean - theorem measurable.ennreal_induction - theorem measure_theory.simple_func.add_lintegral - theorem measure_theory.simple_func.apply_mk - def measure_theory.simple_func.approx - theorem measure_theory.simple_func.approx_apply - theorem measure_theory.simple_func.approx_comp - def measure_theory.simple_func.bind - theorem measure_theory.simple_func.bind_apply - theorem measure_theory.simple_func.bind_const - theorem measure_theory.simple_func.coe_comp - theorem measure_theory.simple_func.coe_const - theorem measure_theory.simple_func.coe_div - theorem measure_theory.simple_func.coe_inf - theorem measure_theory.simple_func.coe_injective - theorem measure_theory.simple_func.coe_inv - theorem measure_theory.simple_func.coe_le - theorem measure_theory.simple_func.coe_map - theorem measure_theory.simple_func.coe_mul - theorem measure_theory.simple_func.coe_one - theorem measure_theory.simple_func.coe_piecewise - theorem measure_theory.simple_func.coe_pow - theorem measure_theory.simple_func.coe_range - theorem measure_theory.simple_func.coe_restrict - theorem measure_theory.simple_func.coe_smul - theorem measure_theory.simple_func.coe_sup - theorem measure_theory.simple_func.coe_zpow - def measure_theory.simple_func.comp - def measure_theory.simple_func.const - theorem measure_theory.simple_func.const_apply - theorem measure_theory.simple_func.const_lintegral - theorem measure_theory.simple_func.const_lintegral_restrict - theorem measure_theory.simple_func.const_mul_eq_map - theorem measure_theory.simple_func.const_mul_lintegral - theorem measure_theory.simple_func.const_one - theorem measure_theory.simple_func.div_apply - def measure_theory.simple_func.eapprox - theorem measure_theory.simple_func.eapprox_comp - def measure_theory.simple_func.eapprox_diff - theorem measure_theory.simple_func.eapprox_lt_top - def measure_theory.simple_func.ennreal_rat_embed - theorem measure_theory.simple_func.ennreal_rat_embed_encode - theorem measure_theory.simple_func.eq_zero_of_mem_range_zero - theorem measure_theory.simple_func.exists_forall_le - theorem measure_theory.simple_func.exists_range_iff - theorem measure_theory.simple_func.ext - def measure_theory.simple_func.extend - theorem measure_theory.simple_func.extend_apply' - theorem measure_theory.simple_func.extend_apply - theorem measure_theory.simple_func.extend_comp_eq' - theorem measure_theory.simple_func.extend_comp_eq - theorem measure_theory.simple_func.fin_meas_supp.iff_lintegral_lt_top - theorem measure_theory.simple_func.fin_meas_supp.lintegral_lt_top - theorem measure_theory.simple_func.fin_meas_supp.map_iff - theorem measure_theory.simple_func.fin_meas_supp.meas_preimage_singleton_ne_zero - theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_ne_top - theorem measure_theory.simple_func.fin_meas_supp.of_map - theorem measure_theory.simple_func.fin_meas_supp_iff - theorem measure_theory.simple_func.fin_meas_supp_iff_support - theorem measure_theory.simple_func.finite_range - theorem measure_theory.simple_func.finset_sup_apply - theorem measure_theory.simple_func.forall_range_iff - theorem measure_theory.simple_func.inf_apply - theorem measure_theory.simple_func.inv_apply - theorem measure_theory.simple_func.le_sup_lintegral - def measure_theory.simple_func.lintegral - theorem measure_theory.simple_func.lintegral_add - theorem measure_theory.simple_func.lintegral_congr - theorem measure_theory.simple_func.lintegral_eq_of_measure_preimage - theorem measure_theory.simple_func.lintegral_eq_of_subset' - theorem measure_theory.simple_func.lintegral_eq_of_subset - theorem measure_theory.simple_func.lintegral_map' - theorem measure_theory.simple_func.lintegral_map - theorem measure_theory.simple_func.lintegral_mono - theorem measure_theory.simple_func.lintegral_restrict - theorem measure_theory.simple_func.lintegral_smul - theorem measure_theory.simple_func.lintegral_sum - theorem measure_theory.simple_func.lintegral_zero - def measure_theory.simple_func.lintegralₗ - def measure_theory.simple_func.map - theorem measure_theory.simple_func.map_apply - theorem measure_theory.simple_func.map_coe_ennreal_restrict - theorem measure_theory.simple_func.map_coe_nnreal_restrict - theorem measure_theory.simple_func.map_const - theorem measure_theory.simple_func.map_lintegral - theorem measure_theory.simple_func.map_map - theorem measure_theory.simple_func.map_mul - theorem measure_theory.simple_func.map_preimage - theorem measure_theory.simple_func.map_preimage_singleton - theorem measure_theory.simple_func.map_restrict_of_zero - theorem measure_theory.simple_func.measurable_bind - theorem measure_theory.simple_func.measurable_set_cut - theorem measure_theory.simple_func.measurable_set_fiber - theorem measure_theory.simple_func.measurable_set_preimage - theorem measure_theory.simple_func.measurable_set_support - theorem measure_theory.simple_func.mem_image_of_mem_range_restrict - theorem measure_theory.simple_func.mem_range - theorem measure_theory.simple_func.mem_range_of_measure_ne_zero - theorem measure_theory.simple_func.mem_range_self - theorem measure_theory.simple_func.mem_restrict_range - theorem measure_theory.simple_func.monotone_approx - theorem measure_theory.simple_func.monotone_eapprox - theorem measure_theory.simple_func.mul_apply - theorem measure_theory.simple_func.mul_eq_map₂ - def measure_theory.simple_func.of_is_empty - def measure_theory.simple_func.pair - theorem measure_theory.simple_func.pair_apply - theorem measure_theory.simple_func.pair_preimage - theorem measure_theory.simple_func.pair_preimage_singleton - def measure_theory.simple_func.piecewise - theorem measure_theory.simple_func.piecewise_apply - theorem measure_theory.simple_func.piecewise_compl - theorem measure_theory.simple_func.piecewise_empty - theorem measure_theory.simple_func.piecewise_univ - theorem measure_theory.simple_func.pow_apply - theorem measure_theory.simple_func.preimage_eq_empty_iff - theorem measure_theory.simple_func.range_comp_subset_range - theorem measure_theory.simple_func.range_const - theorem measure_theory.simple_func.range_const_subset - theorem measure_theory.simple_func.range_eq_empty_of_is_empty - theorem measure_theory.simple_func.range_indicator - theorem measure_theory.simple_func.range_map - theorem measure_theory.simple_func.range_one - def measure_theory.simple_func.restrict - theorem measure_theory.simple_func.restrict_apply - theorem measure_theory.simple_func.restrict_const_lintegral - theorem measure_theory.simple_func.restrict_empty - theorem measure_theory.simple_func.restrict_lintegral - theorem measure_theory.simple_func.restrict_lintegral_eq_lintegral_restrict - theorem measure_theory.simple_func.restrict_mono - theorem measure_theory.simple_func.restrict_of_not_measurable - theorem measure_theory.simple_func.restrict_preimage - theorem measure_theory.simple_func.restrict_preimage_singleton - theorem measure_theory.simple_func.restrict_univ - def measure_theory.simple_func.seq - theorem measure_theory.simple_func.seq_apply - theorem measure_theory.simple_func.simple_func_bot' - theorem measure_theory.simple_func.simple_func_bot - theorem measure_theory.simple_func.smul_apply - theorem measure_theory.simple_func.smul_eq_map - theorem measure_theory.simple_func.sum_eapprox_diff - theorem measure_theory.simple_func.sum_range_measure_preimage_singleton - theorem measure_theory.simple_func.sup_apply - theorem measure_theory.simple_func.sup_eq_map₂ - theorem measure_theory.simple_func.support_eq - theorem measure_theory.simple_func.support_indicator - theorem measure_theory.simple_func.supr_approx_apply - theorem measure_theory.simple_func.supr_eapprox_apply - theorem measure_theory.simple_func.tsum_eapprox_diff - theorem measure_theory.simple_func.zero_lintegral - theorem measure_theory.simple_func.zpow_apply - structure measure_theory.{u 2023-04-30 23:23:16 d20a8cd chore(.github/workflows): update gh-get-current-pr (#18763) The test that this upgrade works ok is that the awaiting-CI label is removed ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2023-04-30 20:09:11 8b8ba04 feat (measure_theory/integral): lemmas `integral_Ioi_eq_integral_Ici` etc (#18899) We already have some lemmas relating integrals over open vs. closed intervals, but some were missing (notably half-infinite integrals). This should now be a full set. ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean + theorem integrable_on_Icc_iff_integrable_on_Ico' + theorem integrable_on_Icc_iff_integrable_on_Ico + theorem integrable_on_Icc_iff_integrable_on_Ioc' + theorem integrable_on_Icc_iff_integrable_on_Ioc + theorem integrable_on_Icc_iff_integrable_on_Ioo' + theorem integrable_on_Icc_iff_integrable_on_Ioo + theorem integrable_on_Ici_iff_integrable_on_Ioi' + theorem integrable_on_Ici_iff_integrable_on_Ioi + theorem integrable_on_Ico_iff_integrable_on_Ioo' + theorem integrable_on_Ico_iff_integrable_on_Ioo + theorem integrable_on_Iic_iff_integrable_on_Iio' + theorem integrable_on_Iic_iff_integrable_on_Iio + theorem integrable_on_Ioc_iff_integrable_on_Ioo' + theorem integrable_on_Ioc_iff_integrable_on_Ioo Modified src/measure_theory/integral/interval_integral.lean - theorem integrable_on_Icc_iff_integrable_on_Ioc' - theorem integrable_on_Icc_iff_integrable_on_Ioc - theorem integrable_on_Icc_iff_integrable_on_Ioo - theorem integrable_on_Ici_iff_integrable_on_Ioi' - theorem integrable_on_Ici_iff_integrable_on_Ioi - theorem integrable_on_Ioc_iff_integrable_on_Ioo' - theorem integrable_on_Ioc_iff_integrable_on_Ioo Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_Icc_eq_integral_Ico' + theorem measure_theory.integral_Icc_eq_integral_Ico +/- theorem measure_theory.integral_Icc_eq_integral_Ioc' +/- theorem measure_theory.integral_Icc_eq_integral_Ioc + theorem measure_theory.integral_Icc_eq_integral_Ioo' + theorem measure_theory.integral_Icc_eq_integral_Ioo + theorem measure_theory.integral_Ici_eq_integral_Ioi' + theorem measure_theory.integral_Ici_eq_integral_Ioi + theorem measure_theory.integral_Ico_eq_integral_Ioo' + theorem measure_theory.integral_Ico_eq_integral_Ioo + theorem measure_theory.integral_Iic_eq_integral_Iio' + theorem measure_theory.integral_Iic_eq_integral_Iio +/- theorem measure_theory.integral_Ioc_eq_integral_Ioo' +/- theorem measure_theory.integral_Ioc_eq_integral_Ioo 2023-04-30 20:09:10 e42cfdb chore(linear_algebra/matrix/to_linear_equiv): golf using existing morphisms (#18895) Also changes the statement of `matrix.to_linear_equiv'_symm_apply` to be `rfl`, since it's easy to change to another spelling at the call site. ESTIMATED CHANGES Modified src/linear_algebra/matrix/to_linear_equiv.lean 2023-04-30 20:09:09 9425b6f feat(analysis/fourier): Riemann-Lebesgue lemma (#17719) This PR adds a proof that for any function `f` on a finite-dimensional real vector space `V`, the integral `∫ (v : V), exp (-2 * π * w v * I) • f x` tends to 0 as `w` goes to infinity (wrt the cocompact filter on the dual space `W` of `V`). ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/fourier/fourier_transform.lean - theorem fourier.fourier_integral_norm_le + theorem fourier.norm_fourier_integral_le_integral_norm - theorem vector_fourier.fourier_integral_convergent + theorem vector_fourier.fourier_integral_convergent_iff - theorem vector_fourier.fourier_integral_norm_le + theorem vector_fourier.norm_fourier_integral_le_integral_norm Modified src/analysis/fourier/riemann_lebesgue_lemma.lean +/- theorem fourier_integral_eq_half_sub_half_period_translate +/- theorem fourier_integral_half_period_translate +/- theorem fourier_integrand_integrable - theorem real.fourier_integral_zero_at_infty_of_continuous_compact_support + theorem real.tendsto_integral_exp_smul_cocompact + theorem real.zero_at_infty_fourier_integral + theorem real.zero_at_infty_vector_fourier_integral + theorem tendsto_integral_exp_inner_smul_cocompact + theorem tendsto_integral_exp_inner_smul_cocompact_of_continuous_compact_support + theorem tendsto_integral_exp_smul_cocompact + theorem tendsto_integral_exp_smul_cocompact_of_inner_product - theorem tendsto_integral_mul_exp_at_bot_of_continuous_compact_support - theorem tendsto_integral_mul_exp_at_top_of_continuous_compact_support - theorem zero_at_infty_integral_mul_exp_of_continuous_compact_support Modified src/analysis/inner_product_space/euclidean_dist.lean +/- def to_euclidean Modified src/analysis/normed_space/finite_dimension.lean - theorem basis.coe_constrL - def basis.constrL - theorem basis.constrL_apply - theorem basis.constrL_basis - def basis.equiv_funL - def continuous_linear_equiv.of_finrank_eq - theorem finite_dimensional.nonempty_continuous_linear_equiv_iff_finrank_eq - theorem finite_dimensional.nonempty_continuous_linear_equiv_of_finrank_eq Modified src/topology/algebra/module/finite_dimension.lean + theorem basis.coe_constrL + def basis.constrL + theorem basis.constrL_apply + theorem basis.constrL_basis + def basis.equiv_funL + def continuous_linear_equiv.of_finrank_eq + theorem finite_dimensional.nonempty_continuous_linear_equiv_iff_finrank_eq + theorem finite_dimensional.nonempty_continuous_linear_equiv_of_finrank_eq 2023-04-30 17:11:43 9d684a8 chore(data/finset/lattice): Move lemmas around (#18900) Move `map_finset_sup`/`map_finset_inf` from `order.hom.lattice` to `data.finset.lattice`. This breaks a few unqualified downstream uses of `submodule.map_bot`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean +/- theorem finset.inf_sdiff_left +/- theorem finset.inf_sdiff_right +/- theorem finset.sup_sdiff_left + theorem map_finset_inf + theorem map_finset_sup Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/linear_independent.lean Modified src/order/hom/complete_lattice.lean Modified src/order/hom/lattice.lean - theorem map_finset_inf - theorem map_finset_sup 2023-04-30 15:29:39 b88d81c feat(ring_theory/ideal/quotient_operations): add double quotient of an algebra (#18452) This adds definitions and lemmas on the double quotient `A / (I ⊔ J)` of a commutative algebra `A` by ideals `I` and `J`, analogous to existing definitions and lemmas on the double quotient of a commutative ring. ESTIMATED CHANGES Modified src/ring_theory/ideal/quotient_operations.lean + theorem double_quot.coe_lift_sup_quot_quot_mkₐ + theorem double_quot.coe_quot_left_to_quot_supₐ + theorem double_quot.coe_quot_quot_equiv_commₐ + theorem double_quot.coe_quot_quot_equiv_quot_of_leₐ + theorem double_quot.coe_quot_quot_equiv_quot_of_leₐ_symm + theorem double_quot.coe_quot_quot_equiv_quot_supₐ + theorem double_quot.coe_quot_quot_equiv_quot_supₐ_symm: + theorem double_quot.coe_quot_quot_mkₐ + theorem double_quot.coe_quot_quot_to_quot_supₐ + def double_quot.lift_sup_quot_quot_mkₐ + theorem double_quot.lift_sup_quot_quot_mkₐ_to_ring_hom + def double_quot.quot_left_to_quot_supₐ + theorem double_quot.quot_left_to_quot_supₐ_to_ring_hom + theorem double_quot.quot_quot_equiv_comm_comp_quot_quot_mkₐ + theorem double_quot.quot_quot_equiv_comm_symmₐ + def double_quot.quot_quot_equiv_commₐ + theorem double_quot.quot_quot_equiv_commₐ_to_ring_equiv + theorem double_quot.quot_quot_equiv_quot_of_le_comp_quot_quot_mkₐ + theorem double_quot.quot_quot_equiv_quot_of_le_symm_comp_mkₐ + def double_quot.quot_quot_equiv_quot_of_leₐ + theorem double_quot.quot_quot_equiv_quot_of_leₐ_symm_to_ring_equiv + theorem double_quot.quot_quot_equiv_quot_of_leₐ_to_ring_equiv + def double_quot.quot_quot_equiv_quot_supₐ + theorem double_quot.quot_quot_equiv_quot_supₐ_symm_to_ring_equiv: + theorem double_quot.quot_quot_equiv_quot_supₐ_to_ring_equiv + def double_quot.quot_quot_mkₐ + theorem double_quot.quot_quot_mkₐ_to_ring_hom + def double_quot.quot_quot_to_quot_supₐ + theorem double_quot.quot_quot_to_quot_supₐ_to_ring_hom 2023-04-30 12:24:59 4367b19 feat(data/set/intervals/basic): generalize from `linear_order` to `preorder` (#18876) The lemma statements are unchanged, but the proofs are rewritten ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean +/- theorem set.not_mem_Icc_of_gt +/- theorem set.not_mem_Icc_of_lt +/- theorem set.not_mem_Ico_of_ge +/- theorem set.not_mem_Ico_of_lt +/- theorem set.not_mem_Ioc_of_gt +/- theorem set.not_mem_Ioc_of_le +/- theorem set.not_mem_Ioo_of_ge +/- theorem set.not_mem_Ioo_of_le 2023-04-30 07:58:36 e4bc74c feat(data/set/intervals/pi): `f.update i '' Icc a b = Icc (f.update i a) (f.update i b)` (#18892) and corresponding lemmas for `pi.single` ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.mul_single_inf + theorem pi.mul_single_sup Modified src/data/set/intervals/pi.lean + theorem set.image_mul_single_Icc + theorem set.image_mul_single_Icc_left + theorem set.image_mul_single_Icc_right + theorem set.image_mul_single_Ico + theorem set.image_mul_single_Ico_left + theorem set.image_mul_single_Ico_right + theorem set.image_mul_single_Ioc + theorem set.image_mul_single_Ioc_left + theorem set.image_mul_single_Ioc_right + theorem set.image_mul_single_Ioo + theorem set.image_mul_single_Ioo_left + theorem set.image_mul_single_Ioo_right + theorem set.image_mul_single_uIcc + theorem set.image_mul_single_uIcc_left + theorem set.image_mul_single_uIcc_right + theorem set.image_update_Icc + theorem set.image_update_Icc_left + theorem set.image_update_Icc_right + theorem set.image_update_Ico + theorem set.image_update_Ico_left + theorem set.image_update_Ico_right + theorem set.image_update_Ioc + theorem set.image_update_Ioc_left + theorem set.image_update_Ioc_right + theorem set.image_update_Ioo + theorem set.image_update_Ioo_left + theorem set.image_update_Ioo_right + theorem set.image_update_uIcc + theorem set.image_update_uIcc_left + theorem set.image_update_uIcc_right Modified src/order/lattice.lean + theorem function.update_inf + theorem function.update_sup 2023-04-30 06:51:56 011cafb chore (measure_theory/integral): split interval_integral.lean into two (#18898) This divides `interval_integral.lean` (currently 2800 lines) into two roughly equal chunks -- moving the variants of FTC into a new file `fund_thm_calculus.lean` and leaving definitions and basic lemmas in the original file. ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified src/analysis/fourier/add_circle.lean Modified src/analysis/special_functions/integrals.lean Added src/measure_theory/integral/fund_thm_calculus.lean + theorem continuous.deriv_integral + theorem continuous.integral_has_strict_deriv_at + theorem interval_integral.FTC_filter.finite_at_inner + theorem interval_integral.deriv_integral_left + theorem interval_integral.deriv_integral_of_tendsto_ae_left + theorem interval_integral.deriv_integral_of_tendsto_ae_right + theorem interval_integral.deriv_integral_right + theorem interval_integral.deriv_within_integral_left + theorem interval_integral.deriv_within_integral_of_tendsto_ae_left + theorem interval_integral.deriv_within_integral_of_tendsto_ae_right + theorem interval_integral.deriv_within_integral_right + theorem interval_integral.differentiable_on_integral_of_continuous + theorem interval_integral.fderiv_integral + theorem interval_integral.fderiv_integral_of_tendsto_ae + theorem interval_integral.fderiv_within_integral_of_tendsto_ae + theorem interval_integral.integrable_on_deriv_of_nonneg + theorem interval_integral.integrable_on_deriv_right_of_nonneg + theorem interval_integral.integral_comp_mul_deriv''' + theorem interval_integral.integral_comp_mul_deriv'' + theorem interval_integral.integral_comp_mul_deriv' + theorem interval_integral.integral_comp_mul_deriv + theorem interval_integral.integral_comp_smul_deriv''' + theorem interval_integral.integral_comp_smul_deriv'' + theorem interval_integral.integral_comp_smul_deriv' + theorem interval_integral.integral_comp_smul_deriv + theorem interval_integral.integral_deriv_comp_mul_deriv' + theorem interval_integral.integral_deriv_comp_mul_deriv + theorem interval_integral.integral_deriv_comp_smul_deriv' + theorem interval_integral.integral_deriv_comp_smul_deriv + theorem interval_integral.integral_deriv_eq_sub' + theorem interval_integral.integral_deriv_eq_sub + theorem interval_integral.integral_deriv_mul_eq_sub + theorem interval_integral.integral_eq_sub_of_has_deriv_at + theorem interval_integral.integral_eq_sub_of_has_deriv_at_of_le + theorem interval_integral.integral_eq_sub_of_has_deriv_at_of_tendsto + theorem interval_integral.integral_eq_sub_of_has_deriv_right + theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le + theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le_real + theorem interval_integral.integral_has_deriv_at_left + theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_left + theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_right + theorem interval_integral.integral_has_deriv_at_right + theorem interval_integral.integral_has_deriv_within_at_left + theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_left + theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_right + theorem interval_integral.integral_has_deriv_within_at_right + theorem interval_integral.integral_has_fderiv_at + theorem interval_integral.integral_has_fderiv_at_of_tendsto_ae + theorem interval_integral.integral_has_fderiv_within_at + theorem interval_integral.integral_has_fderiv_within_at_of_tendsto_ae + theorem interval_integral.integral_has_strict_deriv_at_left + theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_left + theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_right + theorem interval_integral.integral_has_strict_deriv_at_right + theorem interval_integral.integral_has_strict_fderiv_at + theorem interval_integral.integral_has_strict_fderiv_at_of_tendsto_ae + theorem interval_integral.integral_le_sub_of_has_deriv_right_of_le + theorem interval_integral.integral_mul_deriv_eq_deriv_mul + theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae_left + theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae_right + theorem interval_integral.integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.interval_integrable_deriv_of_nonneg + theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae_left + theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae_right + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae' + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_ge' + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_ge + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_le' + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_le + theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le + theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le_Ico Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/interval_integral.lean - theorem continuous.deriv_integral - theorem continuous.integral_has_strict_deriv_at - theorem interval_integral.FTC_filter.finite_at_inner - theorem interval_integral.deriv_integral_left - theorem interval_integral.deriv_integral_of_tendsto_ae_left - theorem interval_integral.deriv_integral_of_tendsto_ae_right - theorem interval_integral.deriv_integral_right - theorem interval_integral.deriv_within_integral_left - theorem interval_integral.deriv_within_integral_of_tendsto_ae_left - theorem interval_integral.deriv_within_integral_of_tendsto_ae_right - theorem interval_integral.deriv_within_integral_right - theorem interval_integral.differentiable_on_integral_of_continuous - theorem interval_integral.fderiv_integral - theorem interval_integral.fderiv_integral_of_tendsto_ae - theorem interval_integral.fderiv_within_integral_of_tendsto_ae - theorem interval_integral.integrable_on_deriv_of_nonneg - theorem interval_integral.integrable_on_deriv_right_of_nonneg - theorem interval_integral.integral_comp_mul_deriv''' - theorem interval_integral.integral_comp_mul_deriv'' - theorem interval_integral.integral_comp_mul_deriv' - theorem interval_integral.integral_comp_mul_deriv - theorem interval_integral.integral_comp_smul_deriv''' - theorem interval_integral.integral_comp_smul_deriv'' - theorem interval_integral.integral_comp_smul_deriv' - theorem interval_integral.integral_comp_smul_deriv - theorem interval_integral.integral_deriv_comp_mul_deriv' - theorem interval_integral.integral_deriv_comp_mul_deriv - theorem interval_integral.integral_deriv_comp_smul_deriv' - theorem interval_integral.integral_deriv_comp_smul_deriv - theorem interval_integral.integral_deriv_eq_sub' - theorem interval_integral.integral_deriv_eq_sub - theorem interval_integral.integral_deriv_mul_eq_sub - theorem interval_integral.integral_eq_sub_of_has_deriv_at - theorem interval_integral.integral_eq_sub_of_has_deriv_at_of_le - theorem interval_integral.integral_eq_sub_of_has_deriv_at_of_tendsto - theorem interval_integral.integral_eq_sub_of_has_deriv_right - theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le - theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le_real - theorem interval_integral.integral_has_deriv_at_left - theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_left - theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_right - theorem interval_integral.integral_has_deriv_at_right - theorem interval_integral.integral_has_deriv_within_at_left - theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_left - theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_right - theorem interval_integral.integral_has_deriv_within_at_right - theorem interval_integral.integral_has_fderiv_at - theorem interval_integral.integral_has_fderiv_at_of_tendsto_ae - theorem interval_integral.integral_has_fderiv_within_at - theorem interval_integral.integral_has_fderiv_within_at_of_tendsto_ae - theorem interval_integral.integral_has_strict_deriv_at_left - theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_left - theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_right - theorem interval_integral.integral_has_strict_deriv_at_right - theorem interval_integral.integral_has_strict_fderiv_at - theorem interval_integral.integral_has_strict_fderiv_at_of_tendsto_ae - theorem interval_integral.integral_le_sub_of_has_deriv_right_of_le - theorem interval_integral.integral_mul_deriv_eq_deriv_mul - theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae - theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae_left - theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae_right - theorem interval_integral.integral_sub_linear_is_o_of_tendsto_ae - theorem interval_integral.interval_integrable_deriv_of_nonneg - theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae - theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae_left - theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae_right - theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae' - theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae - theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_ge' - theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_ge - theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_le' - theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_le - theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le - theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le_Ico 2023-04-29 12:39:05 86d0406 chore(.github/workflows): update get-changed-files and download-artifact version (#18765) To stay ahead of the node 12 to node 16 deprecation due "summer 2023" https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/ ESTIMATED CHANGES Modified .github/workflows/add_ported_warnings.yml Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2023-04-29 10:53:16 7cc3918 chore(.github/workflows): update checkout and setup python versions (#18764) To stay ahead of the node 12 to node 16 deprecation due "summer 2023" https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/ ESTIMATED CHANGES Modified .github/workflows/add_port_comment.yml Modified .github/workflows/add_ported_warnings.yml Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml Modified .github/workflows/lint_self_test.yml 2023-04-29 09:17:57 cf7a725 refactor(algebra/quaternion): remove `quaternion.conj` (#18803) Instead we use `star` directly. We keep only the lemmas that refer to quaternion-specific operators, as the rest are already covered by the star API. In practice, this is mostly the lemmas about the real and imaginary parts of quaternions. The `commute_self_conj` lemma has been replaced by a `is_star_normal` instance. ESTIMATED CHANGES Modified src/algebra/quaternion.lean - theorem quaternion.coe_conj_ae + theorem quaternion.coe_star_ae - theorem quaternion.commute_conj_conj - theorem quaternion.commute_conj_self - theorem quaternion.commute_self_conj - def quaternion.conj - theorem quaternion.conj_add - theorem quaternion.conj_add_self' - theorem quaternion.conj_add_self - def quaternion.conj_ae - theorem quaternion.conj_coe - theorem quaternion.conj_conj - theorem quaternion.conj_conj_mul - theorem quaternion.conj_eq_neg - theorem quaternion.conj_eq_self - theorem quaternion.conj_eq_two_re_sub - theorem quaternion.conj_im - theorem quaternion.conj_im_i - theorem quaternion.conj_im_j - theorem quaternion.conj_im_k - theorem quaternion.conj_int_cast - theorem quaternion.conj_inv - theorem quaternion.conj_mul - theorem quaternion.conj_mul_conj - theorem quaternion.conj_mul_eq_coe - theorem quaternion.conj_mul_self - theorem quaternion.conj_nat_cast - theorem quaternion.conj_neg - theorem quaternion.conj_one - theorem quaternion.conj_pow - theorem quaternion.conj_rat_cast - theorem quaternion.conj_re - theorem quaternion.conj_smul - theorem quaternion.conj_sub - theorem quaternion.conj_zero - theorem quaternion.conj_zpow - theorem quaternion.im_conj + theorem quaternion.im_star - theorem quaternion.mul_conj_eq_coe + theorem quaternion.mul_star_eq_coe +/- theorem quaternion.norm_sq_add - theorem quaternion.norm_sq_conj +/- theorem quaternion.norm_sq_def + theorem quaternion.norm_sq_star - theorem quaternion.self_add_conj' - theorem quaternion.self_add_conj + theorem quaternion.self_add_star' + theorem quaternion.self_add_star - theorem quaternion.self_mul_conj + theorem quaternion.self_mul_star + theorem quaternion.star_add_self' + theorem quaternion.star_add_self + def quaternion.star_ae + theorem quaternion.star_coe + theorem quaternion.star_eq_neg + theorem quaternion.star_eq_self + theorem quaternion.star_eq_two_re_sub + theorem quaternion.star_im + theorem quaternion.star_im_i + theorem quaternion.star_im_j + theorem quaternion.star_im_k + theorem quaternion.star_mul_eq_coe + theorem quaternion.star_mul_self + theorem quaternion.star_re + theorem quaternion.star_smul - theorem quaternion_algebra.coe_conj_ae + theorem quaternion_algebra.coe_star_ae - theorem quaternion_algebra.commute_conj_conj - theorem quaternion_algebra.commute_conj_self - theorem quaternion_algebra.commute_self_conj - def quaternion_algebra.conj - theorem quaternion_algebra.conj_add - theorem quaternion_algebra.conj_add_self' - theorem quaternion_algebra.conj_add_self - def quaternion_algebra.conj_ae - theorem quaternion_algebra.conj_coe - theorem quaternion_algebra.conj_conj - theorem quaternion_algebra.conj_conj_mul - theorem quaternion_algebra.conj_eq_neg - theorem quaternion_algebra.conj_eq_self - theorem quaternion_algebra.conj_eq_two_re_sub - theorem quaternion_algebra.conj_im - theorem quaternion_algebra.conj_int_cast - theorem quaternion_algebra.conj_mk - theorem quaternion_algebra.conj_mul - theorem quaternion_algebra.conj_mul_conj - theorem quaternion_algebra.conj_mul_eq_coe - theorem quaternion_algebra.conj_nat_cast - theorem quaternion_algebra.conj_neg - theorem quaternion_algebra.conj_one - theorem quaternion_algebra.conj_pow - theorem quaternion_algebra.conj_smul - theorem quaternion_algebra.conj_sub - theorem quaternion_algebra.conj_zero - theorem quaternion_algebra.im_conj - theorem quaternion_algebra.im_i_conj + theorem quaternion_algebra.im_i_star - theorem quaternion_algebra.im_j_conj + theorem quaternion_algebra.im_j_star - theorem quaternion_algebra.im_k_conj + theorem quaternion_algebra.im_k_star + theorem quaternion_algebra.im_star - theorem quaternion_algebra.mul_conj_eq_coe + theorem quaternion_algebra.mul_star_eq_coe - theorem quaternion_algebra.re_conj + theorem quaternion_algebra.re_star - theorem quaternion_algebra.self_add_conj' - theorem quaternion_algebra.self_add_conj + theorem quaternion_algebra.self_add_star' + theorem quaternion_algebra.self_add_star + theorem quaternion_algebra.star_add_self' + theorem quaternion_algebra.star_add_self + def quaternion_algebra.star_ae + theorem quaternion_algebra.star_coe - theorem quaternion_algebra.star_def + theorem quaternion_algebra.star_eq_neg + theorem quaternion_algebra.star_eq_self + theorem quaternion_algebra.star_eq_two_re_sub + theorem quaternion_algebra.star_im + theorem quaternion_algebra.star_mk + theorem quaternion_algebra.star_mul_eq_coe + theorem quaternion_algebra.star_smul Modified src/analysis/normed_space/quaternion_exponential.lean - theorem quaternion.conj_exp Modified src/analysis/quaternion.lean - theorem quaternion.continuous_conj +/- theorem quaternion.inner_def - theorem quaternion.nnnorm_conj + theorem quaternion.nnnorm_star - theorem quaternion.norm_conj + theorem quaternion.norm_star Modified src/linear_algebra/clifford_algebra/equivs.lean - theorem clifford_algebra_quaternion.of_quaternion_conj + theorem clifford_algebra_quaternion.of_quaternion_star 2023-04-29 05:34:54 f2b757f chore(*): add mathlib4 synchronization comments (#18889) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_topology.nerve` * `algebraic_topology.simplicial_set` * `analysis.convex.stone_separation` * `category_theory.action` * `category_theory.limits.filtered_colimit_commutes_finite_limit` * `category_theory.noetherian` * `category_theory.preadditive.projective` * `category_theory.simple` * `category_theory.sites.adjunction` * `linear_algebra.free_module.finite.matrix` * `linear_algebra.matrix.basis` * `linear_algebra.matrix.block` * `linear_algebra.matrix.diagonal` * `linear_algebra.matrix.finite_dimensional` * `linear_algebra.matrix.invariant_basis_number` * `linear_algebra.matrix.to_lin` * `linear_algebra.matrix.transvection` * `linear_algebra.matrix.zpow` * `topology.algebra.module.multilinear` * `topology.algebra.module.strong_topology` * `topology.algebra.uniform_convergence` * `topology.category.CompHaus.basic` * `topology.category.CompHaus.projective` * `topology.category.Top.limits.basic` * `topology.category.Top.opens` ESTIMATED CHANGES Modified src/algebraic_topology/nerve.lean Modified src/algebraic_topology/simplicial_set.lean Modified src/analysis/convex/stone_separation.lean Modified src/category_theory/action.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/noetherian.lean Modified src/category_theory/preadditive/projective.lean Modified src/category_theory/simple.lean Modified src/category_theory/sites/adjunction.lean Modified src/linear_algebra/free_module/finite/matrix.lean Modified src/linear_algebra/matrix/basis.lean Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/matrix/finite_dimensional.lean Modified src/linear_algebra/matrix/invariant_basis_number.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/matrix/transvection.lean Modified src/linear_algebra/matrix/zpow.lean Modified src/topology/algebra/module/multilinear.lean Modified src/topology/algebra/module/strong_topology.lean Modified src/topology/algebra/uniform_convergence.lean Modified src/topology/category/CompHaus/basic.lean Modified src/topology/category/CompHaus/projective.lean Modified src/topology/category/Top/limits/basic.lean Modified src/topology/category/Top/opens.lean 2023-04-28 17:05:18 a4f99ea chore(.github/workflows): replace set-output commands (#18762) Following deprecation, c.f. https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ The check that this change worked ok is that the action produces a correctly named artifact ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2023-04-28 17:05:17 eee67e6 chore(.github/workflows): update cancel workflow action (#18761) To stop deprecation warnings on every PR. The test commit shows that this works as intended ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml Modified .github/workflows/dependent-issues.yml 2023-04-28 17:05:16 84771a9 feat(algebra/group/basic): `a * b ≠ b ↔ a ≠ 1` (#18635) A few convenient corollaries of existing lemmas and `a / 2 ≤ a ↔ 0 ≤ a`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem mul_left_ne_self + theorem mul_right_ne_self + theorem self_ne_mul_left + theorem self_ne_mul_right Modified src/algebra/order/field/basic.lean - theorem div_two_lt_of_pos - theorem half_le_self + theorem half_le_self_iff - theorem half_lt_self + theorem half_lt_self_iff 2023-04-28 14:14:18 c813ed7 chore(data/finset/lattice): Remove `finset.sup_finset_image` (#18893) in favor of the identical `finset.sup_image` (up to argument order) in the same file. ESTIMATED CHANGES Modified src/data/finset/lattice.lean - theorem finset.sup_finset_image Modified src/order/compactly_generated.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/mv_polynomial/symmetric.lean 2023-04-28 14:14:17 c7bce28 feat(field_theory/tower): generalize `rank_mul_rank` to rings (#18885) This also renames `rank_mul_rank` to `lift_rank_mul_lift_rank` ESTIMATED CHANGES Modified src/data/complex/module.lean Modified src/field_theory/tower.lean + theorem finite_dimensional.finrank_mul_finrank' +/- theorem finite_dimensional.finrank_mul_finrank + theorem lift_rank_mul_lift_rank - theorem rank_mul_rank' +/- theorem rank_mul_rank 2023-04-28 14:14:16 f231b9d chore(measure_theory/integral/lebesgue): generalize lintegral_sub and lintegral_sub_le to ae_measurable (#18883) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_sub' + theorem measure_theory.lintegral_sub_le' 2023-04-28 14:14:14 9c5398f feat(measure_theory/constructions/borel_space): add measurable_c{Inf/supr/infi} (#18882) `measurable_cSup` was already there. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem measurable_cInf + theorem measurable_cinfi + theorem measurable_csupr 2023-04-28 14:14:13 ef09341 chore(measure_theory/measure/haar_of_basis): axis-aligned parallepipeds are cuboids (#18829) This was particularly annoying to prove; it feels like I might be missing some API somewhere. This also includes a result that @YaelDillies proved for me that shows a parallepiped can be formed by summing all the elements on its primary edges. ESTIMATED CHANGES Modified src/measure_theory/measure/haar_lebesgue.lean + theorem basis.parallelepiped_basis_fun Modified src/measure_theory/measure/haar_of_basis.lean + theorem convex_parallelepiped + theorem parallelepiped_eq_convex_hull + theorem parallelepiped_eq_sum_segment + theorem parallelepiped_single 2023-04-28 11:17:48 3974a77 chore(category_theory/limits/preserves/finite): avoid instances with unbound universes (#18890) There were some instances with unbounded universe variables, which Lean 4 couldn't cope with (reasonably!). This PR backports some changes made in https://github.com/leanprover-community/mathlib4/pull/3615 to remove these bad instances. ESTIMATED CHANGES Modified src/category_theory/limits/preserves/finite.lean Modified src/category_theory/preadditive/injective.lean Modified src/category_theory/preadditive/projective.lean 2023-04-28 11:17:47 fa23095 fix(algebra/big_operators): add missing `to_additive`s (#18878) These lemmas were written before `pi.mul_single` existed. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_erase_lt_of_one_lt + theorem finset.prod_pi_mul_single' + theorem finset.prod_pi_mul_single - theorem finset.sum_erase_lt_of_pos - theorem finset.sum_pi_single' - theorem finset.sum_pi_single Modified src/algebra/big_operators/pi.lean - theorem add_monoid_hom.functions_ext' - theorem add_monoid_hom.functions_ext + theorem finset.univ_prod_mul_single - theorem finset.univ_sum_single + theorem monoid_hom.functions_ext' + theorem monoid_hom.functions_ext 2023-04-28 09:33:36 f95ecd8 chore(field_theory/tower): remove unneeded imports (#18891) ESTIMATED CHANGES Modified docs/tutorial/representation_theory/etingof.lean Modified src/field_theory/tower.lean 2023-04-28 09:33:34 16e5924 chore(topology/continuous_function/algebra): simplify definition and proof (#18888) The definition isn't benefiting from the `coe_sort`, and the proof can save a lot of effort by staying within the subalgebra. This proof was proving annoying to port. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/stone_weierstrass.lean 2023-04-28 07:34:04 c060baa chore(data/matrix/block): the block matrix of zeros is zero (#18879) ESTIMATED CHANGES Modified src/data/matrix/block.lean + theorem matrix.from_blocks_zero 2023-04-28 07:34:03 0b89934 chore(mv_polynomial/funext): backport golfed proof (#18839) This proof was timing out in https://github.com/leanprover-community/mathlib4/pull/3225, so I completely rewrote it using smaller lemmas. This is the backport. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.eval_eval₂ + theorem mv_polynomial.eval₂_id Modified src/data/mv_polynomial/funext.lean Added src/data/mv_polynomial/polynomial.lean + theorem mv_polynomial.eval_polynomial_eval_fin_succ_equiv + theorem mv_polynomial.polynomial_eval_eval₂ 2023-04-28 06:22:27 a5ff45a chore(category_theory/abelian): backport removal of abelian.has_finite_biproducts instance (#18740) This backports a proposed removal of the `abelian.has_finite_biproducts` global instance, instead enabling it locally in the files that need it. The reason for removing it is that it triggers the ~~dreaded~~ https://github.com/leanprover/lean4/issues/2055 during the simpNF linter in https://github.com/leanprover-community/mathlib4/pull/2769, the mathlib4 port of `category_theory.abelian.basic`. This backport verifies that we won't run into further problems downstream if we (hopefully temporarily) remove these instances in mathlib4. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.has_finite_biproducts Modified src/category_theory/abelian/opposite.lean 2023-04-27 21:07:06 b17e272 feat(ring_theory/polynomial): add properties of `coeff (hermite n)` (#18837) Added lemmas showing recursive relations between coefficients of `polynomial.hermite n`: - `coeff (hermite (n + 1)) 0 = -(coeff (hermite n) 1)` - `coeff (hermite (n + 1)) (k + 1) = coeff (hermite n) k - (k + 2) * (coeff (hermite n) (k + 2))` Showed some more properties of the coefficients of Hermite polynomials: - for `k>n`, the `k`th coefficient of the `n`th Hermite polynomial is zero - the `n`th Hermite polynomial is of degree `n` - the Hermite polynomials are monic ESTIMATED CHANGES Modified src/ring_theory/polynomial/hermite.lean + theorem polynomial.coeff_hermite_of_lt + theorem polynomial.coeff_hermite_of_odd_add + theorem polynomial.coeff_hermite_self + theorem polynomial.coeff_hermite_succ_succ + theorem polynomial.coeff_hermite_succ_zero + theorem polynomial.degree_hermite + theorem polynomial.hermite_monic + theorem polynomial.leading_coeff_hermite + theorem polynomial.nat_degree_hermite 2023-04-27 11:18:50 fa78268 chore(ring_theory/finiteness): generalize `module.finite.trans` (#18880) This was stated for algebras but holds more generally for modules. This now can be used to prove `finite_dimensional.trans`. A few downstream proofs were providing the instances arguments explicitly and consequently broke. Passing those instances via `haveI` fixes those proofs and makes them less fragile. ESTIMATED CHANGES Modified src/field_theory/tower.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/ring_theory/finiteness.lean +/- theorem module.finite.trans 2023-04-27 08:43:40 04cdee3 feat(linear_algebra/basis): add basis.restrict_scalars (#18814) ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.mem_span_iff_repr_mem + theorem basis.restrict_scalars_apply + theorem basis.restrict_scalars_repr_apply 2023-04-27 05:18:06 9d2f074 chore(*): add mathlib4 synchronization comments (#18853) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.tannaka` * `algebra.homology.homotopy_category` * `algebra.homology.short_exact.preadditive` * `algebraic_topology.dold_kan.equivalence_additive` * `algebraic_topology.dold_kan.functor_gamma` * `algebraic_topology.dold_kan.gamma_comp_n` * `algebraic_topology.dold_kan.homotopy_equivalence` * `algebraic_topology.dold_kan.n_comp_gamma` * `algebraic_topology.dold_kan.normalized` * `analysis.box_integral.partition.basic` * `analysis.box_integral.partition.split` * `analysis.convex.caratheodory` * `analysis.convex.combination` * `analysis.convex.independent` * `analysis.convex.jensen` * `analysis.convex.join` * `analysis.convex.normed` * `analysis.convex.simplicial_complex.basic` * `analysis.convex.topology` * `analysis.locally_convex.bounded` * `analysis.normed_space.conformal_linear_map` * `analysis.normed_space.linear_isometry` * `analysis.normed_space.star.basic` * `analysis.seminorm` * `category_theory.abelian.opposite` * `category_theory.abelian.subobject` * `category_theory.adjunction.adjoint_functor_theorems` * `category_theory.concrete_category.unbundled_hom` * `category_theory.generator` * `category_theory.limits.constructions.weakly_initial` * `category_theory.limits.preserves.functor_category` * `category_theory.limits.presheaf` * `category_theory.limits.shapes.wide_equalizers` * `category_theory.linear.yoneda` * `category_theory.preadditive.generator` * `category_theory.preadditive.yoneda.basic` * `category_theory.subobject.comma` * `data.real.hyperreal` * `data.string.defs` * `linear_algebra.affine_space.basis` * `linear_algebra.finite_dimensional` * `linear_algebra.matrix.absolute_value` * `linear_algebra.matrix.circulant` * `linear_algebra.matrix.nonsingular_inverse` * `linear_algebra.vandermonde` * `topology.extremally_disconnected` * `topology.instances.matrix` ESTIMATED CHANGES Modified src/algebra/category/Module/tannaka.lean Modified src/algebra/homology/homotopy_category.lean Modified src/algebra/homology/short_exact/preadditive.lean Modified src/algebraic_topology/dold_kan/equivalence_additive.lean Modified src/algebraic_topology/dold_kan/functor_gamma.lean Modified src/algebraic_topology/dold_kan/gamma_comp_n.lean Modified src/algebraic_topology/dold_kan/homotopy_equivalence.lean Modified src/algebraic_topology/dold_kan/n_comp_gamma.lean Modified src/algebraic_topology/dold_kan/normalized.lean Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/box_integral/partition/split.lean Modified src/analysis/convex/caratheodory.lean Modified src/analysis/convex/combination.lean Modified src/analysis/convex/independent.lean Modified src/analysis/convex/jensen.lean Modified src/analysis/convex/join.lean Modified src/analysis/convex/normed.lean Modified src/analysis/convex/simplicial_complex/basic.lean Modified src/analysis/convex/topology.lean Modified src/analysis/locally_convex/bounded.lean Modified src/analysis/normed_space/conformal_linear_map.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/star/basic.lean Modified src/analysis/seminorm.lean Modified src/category_theory/abelian/opposite.lean Modified src/category_theory/abelian/subobject.lean Modified src/category_theory/adjunction/adjoint_functor_theorems.lean Modified src/category_theory/concrete_category/unbundled_hom.lean Modified src/category_theory/generator.lean Modified src/category_theory/limits/constructions/weakly_initial.lean Modified src/category_theory/limits/preserves/functor_category.lean Modified src/category_theory/limits/presheaf.lean Modified src/category_theory/limits/shapes/wide_equalizers.lean Modified src/category_theory/linear/yoneda.lean Modified src/category_theory/preadditive/generator.lean Modified src/category_theory/preadditive/yoneda/basic.lean Modified src/category_theory/subobject/comma.lean Modified src/data/real/hyperreal.lean Modified src/data/string/defs.lean Modified src/linear_algebra/affine_space/basis.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/matrix/absolute_value.lean Modified src/linear_algebra/matrix/circulant.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/vandermonde.lean Modified src/topology/extremally_disconnected.lean Modified src/topology/instances/matrix.lean 2023-04-26 20:55:02 57911c5 chore(finsupp/basic): weaken hypotheses (#18874) these are already in mathlib4, I just missed them in mathlib3. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_smul +/- theorem finsupp.smul_apply +/- theorem is_smul_regular.finsupp 2023-04-26 18:21:10 9b2b58d feat(measure_theory/constructions): add the Borel isomorphism theorem. (#18864) Add a file `measure_theory/constructions/borel_isomorphism.lean` with several versions of the Borel isomorphism theorem. Also add fairly small supporting lemmas in several other files. Most notable here is the addition of a type class for measurable_spaces whose sigma-algebras are generated by some countable set, and a theorem that such spaces admit measurable injections to the Cantor space. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/constructions/polish.lean + def polish_space.borel_schroeder_bernstein + def polish_space.equiv.measurable_equiv + def polish_space.measurable_equiv_nat_bool_of_not_countable + def polish_space.measurable_equiv_of_not_countable Modified src/measure_theory/measurable_space.lean + theorem measurable_space.measurable_injection_cantor_of_countably_generated + theorem measurable_to_bool + theorem measurable_to_countable' Modified src/topology/perfect.lean + theorem is_closed.exists_nat_bool_injection_of_not_countable 2023-04-26 18:21:08 dc7ac07 chore(algebra/star/basic): generalize quaternion lemmas (#18802) We already had most of these lemmas specialized to quaternions; this generalizes them to any star ring. We should consider replacing `quaternion.conj` with `star` in future. ESTIMATED CHANGES Modified src/algebra/quaternion.lean +/- theorem quaternion_algebra.conj_conj_mul +/- theorem quaternion_algebra.conj_mul_conj Modified src/algebra/star/basic.lean + theorem commute_star_comm + theorem commute_star_star + theorem semiconj_by_star_star_star + theorem star_inj + theorem star_mul_star + theorem star_star_mul 2023-04-26 18:21:07 cdb01be feat(algebra/big_operators/fin): The equivalence between `fin n → fin m` and `fin (m ^ n)` (#14817) ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + def fin_function_fin_equiv + theorem fin_function_fin_equiv_apply + theorem fin_function_fin_equiv_single + def fin_pi_fin_equiv + theorem fin_pi_fin_equiv_apply + theorem fin_pi_fin_equiv_single 2023-04-26 16:01:04 178a326 chore(topology/category/Top/limits): split file (#18871) Per https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/!4.233487.20last.20minute.20split.3F This file is already being ported at https://github.com/leanprover-community/mathlib4/pull/3487, but: * it's not going so well right now * it is going well up to the point of the proposed new `limits/basic.lean` * that is sufficient to port the files needed for Copenhagen ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_topology/fundamental_groupoid/product.lean Modified src/algebraic_topology/simplicial_set.lean Modified src/category_theory/cofiltered_system.lean Modified src/category_theory/extensive.lean Modified src/topology/category/CompHaus/basic.lean Modified src/topology/category/Profinite/cofiltered_limit.lean Deleted src/topology/category/Top/limits.lean - def Top.binary_cofan - def Top.binary_cofan_is_colimit - theorem Top.binary_cofan_is_colimit_iff - theorem Top.coequalizer_is_open_iff - theorem Top.coinduced_of_is_colimit - def Top.colimit_cocone - def Top.colimit_cocone_is_colimit - theorem Top.colimit_is_open_iff - theorem Top.colimit_topology - theorem Top.embedding_of_pullback_embeddings - theorem Top.embedding_prod_map - theorem Top.embedding_pullback_to_prod - theorem Top.fst_embedding_of_right_embedding - theorem Top.fst_iso_of_right_embedding_range_subset - theorem Top.fst_open_embedding_of_right_open_embedding - theorem Top.induced_of_is_limit - theorem Top.inducing_prod_map - theorem Top.inducing_pullback_to_prod - def Top.initial_iso_pempty - def Top.is_initial_pempty - def Top.is_terminal_punit - theorem Top.is_topological_basis_cofiltered_limit - def Top.limit_cone - def Top.limit_cone_infi - def Top.limit_cone_infi_is_limit - def Top.limit_cone_is_limit - theorem Top.limit_topology - theorem Top.nonempty_limit_cone_of_compact_t2_cofiltered_system - theorem Top.open_embedding_of_pullback_open_embeddings - theorem Top.partial_sections.closed - theorem Top.partial_sections.directed - theorem Top.partial_sections.nonempty - def Top.partial_sections - def Top.pi_fan - def Top.pi_fan_is_limit - def Top.pi_iso_pi - theorem Top.pi_iso_pi_hom_apply - theorem Top.pi_iso_pi_inv_π - theorem Top.pi_iso_pi_inv_π_apply - def Top.pi_π - def Top.prod_binary_fan - def Top.prod_binary_fan_is_limit - def Top.prod_fst - def Top.prod_iso_prod - theorem Top.prod_iso_prod_hom_apply - theorem Top.prod_iso_prod_hom_fst - theorem Top.prod_iso_prod_hom_snd - theorem Top.prod_iso_prod_inv_fst - theorem Top.prod_iso_prod_inv_snd - def Top.prod_snd - theorem Top.prod_topology - def Top.pullback_cone - def Top.pullback_cone_is_limit - def Top.pullback_fst - theorem Top.pullback_fst_image_snd_preimage - theorem Top.pullback_fst_range - def Top.pullback_iso_prod_subtype - theorem Top.pullback_iso_prod_subtype_hom_apply - theorem Top.pullback_iso_prod_subtype_hom_fst - theorem Top.pullback_iso_prod_subtype_hom_snd - theorem Top.pullback_iso_prod_subtype_inv_fst - theorem Top.pullback_iso_prod_subtype_inv_fst_apply - theorem Top.pullback_iso_prod_subtype_inv_snd - theorem Top.pullback_iso_prod_subtype_inv_snd_apply - theorem Top.pullback_map_embedding_of_embeddings - theorem Top.pullback_map_open_embedding_of_open_embeddings - def Top.pullback_snd - theorem Top.pullback_snd_image_fst_preimage - theorem Top.pullback_snd_range - theorem Top.pullback_topology - theorem Top.range_prod_map - theorem Top.range_pullback_map - theorem Top.range_pullback_to_prod - def Top.sigma_cofan - def Top.sigma_cofan_is_colimit - def Top.sigma_iso_sigma - theorem Top.sigma_iso_sigma_hom_ι - theorem Top.sigma_iso_sigma_hom_ι_apply - theorem Top.sigma_iso_sigma_inv_apply - def Top.sigma_ι - theorem Top.snd_embedding_of_left_embedding - theorem Top.snd_iso_of_left_embedding_range_subset - theorem Top.snd_open_embedding_of_left_open_embedding - def Top.terminal_iso_punit Added src/topology/category/Top/limits/basic.lean + def Top.colimit_cocone + def Top.colimit_cocone_is_colimit + def Top.initial_iso_pempty + def Top.is_initial_pempty + def Top.is_terminal_punit + def Top.limit_cone + def Top.limit_cone_infi + def Top.limit_cone_infi_is_limit + def Top.limit_cone_is_limit + def Top.terminal_iso_punit Added src/topology/category/Top/limits/cofiltered.lean + theorem Top.is_topological_basis_cofiltered_limit Added src/topology/category/Top/limits/konig.lean + theorem Top.nonempty_limit_cone_of_compact_t2_cofiltered_system + theorem Top.partial_sections.closed + theorem Top.partial_sections.directed + theorem Top.partial_sections.nonempty + def Top.partial_sections Added src/topology/category/Top/limits/products.lean + def Top.binary_cofan + def Top.binary_cofan_is_colimit + theorem Top.binary_cofan_is_colimit_iff + theorem Top.embedding_prod_map + theorem Top.induced_of_is_limit + theorem Top.inducing_prod_map + theorem Top.limit_topology + def Top.pi_fan + def Top.pi_fan_is_limit + def Top.pi_iso_pi + theorem Top.pi_iso_pi_hom_apply + theorem Top.pi_iso_pi_inv_π + theorem Top.pi_iso_pi_inv_π_apply + def Top.pi_π + def Top.prod_binary_fan + def Top.prod_binary_fan_is_limit + def Top.prod_fst + def Top.prod_iso_prod + theorem Top.prod_iso_prod_hom_apply + theorem Top.prod_iso_prod_hom_fst + theorem Top.prod_iso_prod_hom_snd + theorem Top.prod_iso_prod_inv_fst + theorem Top.prod_iso_prod_inv_snd + def Top.prod_snd + theorem Top.prod_topology + theorem Top.range_prod_map + def Top.sigma_cofan + def Top.sigma_cofan_is_colimit + def Top.sigma_iso_sigma + theorem Top.sigma_iso_sigma_hom_ι + theorem Top.sigma_iso_sigma_hom_ι_apply + theorem Top.sigma_iso_sigma_inv_apply + def Top.sigma_ι Added src/topology/category/Top/limits/pullbacks.lean + theorem Top.coequalizer_is_open_iff + theorem Top.coinduced_of_is_colimit + theorem Top.colimit_is_open_iff + theorem Top.colimit_topology + theorem Top.embedding_of_pullback_embeddings + theorem Top.embedding_pullback_to_prod + theorem Top.fst_embedding_of_right_embedding + theorem Top.fst_iso_of_right_embedding_range_subset + theorem Top.fst_open_embedding_of_right_open_embedding + theorem Top.inducing_pullback_to_prod + theorem Top.open_embedding_of_pullback_open_embeddings + def Top.pullback_cone + def Top.pullback_cone_is_limit + def Top.pullback_fst + theorem Top.pullback_fst_image_snd_preimage + theorem Top.pullback_fst_range + def Top.pullback_iso_prod_subtype + theorem Top.pullback_iso_prod_subtype_hom_apply + theorem Top.pullback_iso_prod_subtype_hom_fst + theorem Top.pullback_iso_prod_subtype_hom_snd + theorem Top.pullback_iso_prod_subtype_inv_fst + theorem Top.pullback_iso_prod_subtype_inv_fst_apply + theorem Top.pullback_iso_prod_subtype_inv_snd + theorem Top.pullback_iso_prod_subtype_inv_snd_apply + theorem Top.pullback_map_embedding_of_embeddings + theorem Top.pullback_map_open_embedding_of_open_embeddings + def Top.pullback_snd + theorem Top.pullback_snd_image_fst_preimage + theorem Top.pullback_snd_range + theorem Top.pullback_topology + theorem Top.range_pullback_map + theorem Top.range_pullback_to_prod + theorem Top.snd_embedding_of_left_embedding + theorem Top.snd_iso_of_left_embedding_range_subset + theorem Top.snd_open_embedding_of_left_open_embedding Modified src/topology/gluing.lean 2023-04-26 16:01:03 fa2cb8a feat(data/set/pointwise/big_operators): image distributes across pointwise big operators (#18840) The main results here are: * `set.image_finset_prod : f '' (∏ i in m, s i) = (∏ i in m, f '' s i)`, which says that the image under a monoid morphism commutes with the pointwise n-ary product of sets * `set.image_finset_prod_pi : (λ f : ι → α, ∏ i in l, f i) '' (l : set ι).pi S = (∏ i in l, S i)`, which says that turning a family of sets into a set of families and taking the product over each family is the same as taking the pointwise product. Both are n-ary versions of existing binary results. ESTIMATED CHANGES Modified src/data/set/pointwise/big_operators.lean + theorem set.image_finset_prod + theorem set.image_finset_prod_pi + theorem set.image_fintype_prod_pi + theorem set.image_list_prod + theorem set.image_multiset_prod 2023-04-26 09:56:01 b5665fd feat(data/matrix/block): injectivity lemmas (#18842) Block matrices are equal if their blocks are equal ESTIMATED CHANGES Modified src/data/matrix/block.lean + theorem matrix.block_diagonal'_inj + theorem matrix.block_diagonal'_injective + theorem matrix.block_diagonal_inj + theorem matrix.block_diagonal_injective + theorem matrix.ext_iff_blocks + theorem matrix.from_blocks_inj 2023-04-26 08:09:41 83df6d6 feat(measure_theory/measure/haar_of_basis): put the canonical measure on euclidean space (#18870) ESTIMATED CHANGES Modified src/measure_theory/measure/haar_of_basis.lean + theorem euclidean_space.coe_measurable_equiv 2023-04-26 01:46:20 8000bbb feat(analysis/normed_space/basic): spheres have no interior (#18869) This follows the pattern set by the nearby lemmas of having a primed and unprimed version. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem frontier_sphere' + theorem frontier_sphere + theorem interior_sphere' + theorem interior_sphere Modified src/topology/metric_space/basic.lean + theorem metric.closure_sphere 2023-04-25 23:03:09 f0b3759 chore(set_theory/zfc/basic): reverse `sInter_coe` (#18773) It now matches `coe_sUnion`, and works as a `norm_cast` lemma. Mathlib 4: https://github.com/leanprover-community/mathlib4/pull/3345 ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Class.coe_sInter - theorem Class.sInter_coe 2023-04-25 23:03:08 52fa514 feat(data/set/finite): Add lemmas relating definitions of infinite sets (#18620) Prove the following lemmas (and their dual) * `set.infinite_of_forall_exists_lt`: `(∀ a, ∃ b ∈ s, a < b) → s.infinite` in a nonempty preorder * `set.infinite_iff_exists_lt`: `(∀ a, ∃ b ∈ s, a < b) ↔ s.infinite` in a locally finite order with a bottom element ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean + theorem set.infinite.exists_gt + theorem set.infinite.exists_lt + theorem set.infinite.not_bdd_above + theorem set.infinite.not_bdd_below + theorem set.infinite_iff_exists_gt + theorem set.infinite_iff_exists_lt Modified src/data/nat/lattice.lean Modified src/data/nat/nth.lean Modified src/data/set/finite.lean - theorem set.infinite.exists_nat_lt + theorem set.infinite_of_forall_exists_gt + theorem set.infinite_of_forall_exists_lt Modified src/group_theory/exponent.lean 2023-04-25 21:34:29 efe03a5 fix(topology/continuous_function/algebra): let `continuous_map.module'` use a `semiring` instead of ` ring` (#18868) This fixes an issue where Lean couldn't recognize via TC inference that, for a topological semiring `R`, that `C(R, R)` is an `R`-module, despite the fact that it knows it is an `R`-algebra through `continuous_map.algebra`. All that is necessary is to weaken the type class assumptions. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean 2023-04-25 17:43:10 d2d964c feat(topology/vector_bundle/basic): define in_coordinates (#18826) * From the sphere eversion project ESTIMATED CHANGES Modified src/topology/vector_bundle/basic.lean + def continuous_linear_map.in_coordinates + theorem continuous_linear_map.in_coordinates_eq Modified src/topology/vector_bundle/hom.lean - def bundle.continuous_linear_map + theorem hom_trivialization_at_apply + theorem hom_trivialization_at_source + theorem hom_trivialization_at_target 2023-04-25 12:54:02 98bd247 feat(model_theory/types): Realized types (#17848) Defines `first_order.language.Theory.type_of`, the type of a given tuple. Defines what it means for a type to be realized. ESTIMATED CHANGES Modified src/model_theory/types.lean + theorem first_order.language.Theory.complete_type.formula_mem_type_of + theorem first_order.language.Theory.complete_type.mem_type_of + theorem first_order.language.Theory.exists_Model_is_realized_in + def first_order.language.Theory.realized_types + def first_order.language.Theory.type_of 2023-04-25 09:29:58 aa68866 feat(analysis/calculus/cont_diff): bound for the n-th derivative of a composition (#18643) We prove the bound `n! * C * D^n` for the `n`-th derivative of `g ∘ f` if the derivatives of `g` are bounded by `C` and the `i`-th derivative of `f` is bounded by `D^i`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem norm_iterated_fderiv_comp_le + theorem norm_iterated_fderiv_within_comp_le + theorem norm_iterated_fderiv_within_comp_le_aux 2023-04-24 13:09:26 2651125 feat(algebra & polynomial): some (q)smul lemmas+generalisations (#18852) There is many generalisations around these areas too, but I am specifically not doing them as it will be easier done after the port. I am only doing what I need for merging in the splitting field diamond fix. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem rat.smul_one_eq_coe Modified src/algebra/field/defs.lean + theorem rat.smul_one_eq_coe Modified src/algebra/monoid_algebra/basic.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_smul +/- theorem finsupp.smul_apply +/- theorem finsupp.smul_single +/- theorem is_smul_regular.finsupp Modified src/data/polynomial/basic.lean + theorem polynomial.rat_smul_eq_C_mul +/- theorem polynomial.smul_C +/- theorem polynomial.smul_monomial Modified src/data/polynomial/coeff.lean +/- theorem polynomial.coeff_smul 2023-04-24 09:08:24 a07a7ae refactor(linear_algebra/matrix/nonsingular_inverse): move results about block matrices to `schur_complement` (#18850) This gets these out of the critical path for porting, and also balances the size of these files a little better. I've added myself second rather than last on the author list since the bulk of these moved lemmas are mine, and they are about equal in number of lines to the existing lemmas. The lemmas have been moved without modification, though the module docstring for `schur_complement` has been adapted accordingly. ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean - theorem matrix.det_from_blocks_one₁₁ - theorem matrix.det_from_blocks_one₂₂ - theorem matrix.det_from_blocks₁₁ - theorem matrix.det_from_blocks₂₂ - theorem matrix.det_mul_add_one_comm - theorem matrix.det_one_add_col_mul_row - theorem matrix.det_one_add_mul_comm - theorem matrix.det_one_sub_mul_comm - theorem matrix.from_blocks_eq_of_invertible₁₁ - theorem matrix.from_blocks_eq_of_invertible₂₂ Modified src/linear_algebra/matrix/schur_complement.lean + theorem matrix.det_from_blocks_one₁₁ + theorem matrix.det_from_blocks_one₂₂ + theorem matrix.det_from_blocks₁₁ + theorem matrix.det_from_blocks₂₂ + theorem matrix.det_mul_add_one_comm + theorem matrix.det_one_add_col_mul_row + theorem matrix.det_one_add_mul_comm + theorem matrix.det_one_sub_mul_comm + theorem matrix.from_blocks_eq_of_invertible₁₁ + theorem matrix.from_blocks_eq_of_invertible₂₂ 2023-04-24 00:07:33 74ad1c8 chore(zmod/basic): alphabetise imports (#18858) This wasn't noticed in #18856 ESTIMATED CHANGES Modified src/data/zmod/basic.lean 2023-04-23 21:28:44 473ee9e chore(zmod/basic): remove unneeded import (#18856) This file was importing a weird dependency; I am now minimising this. ESTIMATED CHANGES Modified src/data/zmod/basic.lean 2023-04-22 22:59:28 0907952 chore(analysis/normed/group/seminorm): use coe_nonneg instead of ℝ≥0.prop (#18833) The change in `analysis.seminorm` has already been forward-ported in https://github.com/leanprover-community/mathlib4/pull/3484 to fix an error. Presumably the other changes will prevent the corresponding errors when we get to porting these files. This is needed in Lean 4 because `.prop` is about `Subtype.val` but `.coe_nonneg` is about `NNReal.toReal`. The two are defeq (and there is a simp lemma `NNReal.val_eq_coe` to convert between them), but not reducibly equal. In Lean 3 both are just about `coe`, so the change doesn't matter. ESTIMATED CHANGES Modified src/analysis/normed/group/seminorm.lean Modified src/analysis/seminorm.lean 2023-04-22 15:18:24 7e281de feat(topology/extremally_disconnected): Extremally disconnected topological spaces (#8196) From LTE Author: Johan Commelin [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics/topic/extremally.20disconnected.20sets) ESTIMATED CHANGES Modified docs/references.bib Added src/topology/extremally_disconnected.lean + def compact_t2.projective + theorem stone_cech.projective 2023-04-22 13:50:32 323b7f2 feat(analysis/calculus/cont_diff): iterated derivatives of maps into clm's (#18756) ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem iterated_fderiv_const_of_ne + theorem iterated_fderiv_succ_const + theorem norm_iterated_fderiv_clm_apply + theorem norm_iterated_fderiv_clm_apply_const + theorem norm_iterated_fderiv_within_clm_apply + theorem norm_iterated_fderiv_within_clm_apply_const 2023-04-22 08:22:26 4f81bc2 chore(*): add mathlib4 synchronization comments (#18851) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.monoid_algebra.ideal` * `algebra.ring_quot` * `algebraic_topology.dold_kan.decomposition` * `algebraic_topology.dold_kan.degeneracies` * `algebraic_topology.dold_kan.n_reflects_iso` * `algebraic_topology.dold_kan.split_simplicial_object` * `category_theory.adjunction.over` * `data.polynomial.module` * `linear_algebra.affine_space.independent` * `linear_algebra.matrix.adjugate` * `linear_algebra.matrix.nondegenerate` * `ring_theory.mv_polynomial.ideal` ESTIMATED CHANGES Modified src/algebra/monoid_algebra/ideal.lean Modified src/algebra/ring_quot.lean Modified src/algebraic_topology/dold_kan/decomposition.lean Modified src/algebraic_topology/dold_kan/degeneracies.lean Modified src/algebraic_topology/dold_kan/n_reflects_iso.lean Modified src/algebraic_topology/dold_kan/split_simplicial_object.lean Modified src/category_theory/adjunction/over.lean Modified src/data/polynomial/module.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/nondegenerate.lean Modified src/ring_theory/mv_polynomial/ideal.lean 2023-04-22 07:09:42 7dfe858 feat(geometry/manifold/vector_bundle/tangent): some equations about trivializations (#18825) * From the sphere eversion project ESTIMATED CHANGES Modified src/geometry/manifold/vector_bundle/tangent.lean + theorem tangent_bundle.continuous_linear_map_at_model_space + theorem tangent_bundle.coord_change_model_space + theorem tangent_bundle.symmL_model_space + theorem tangent_bundle.trivialization_at_continuous_linear_map_at + theorem tangent_bundle.trivialization_at_symmL + theorem tangent_bundle_core_coord_change_model_space Modified src/topology/vector_bundle/basic.lean + theorem vector_bundle_core.local_triv_continuous_linear_map_at + theorem vector_bundle_core.local_triv_symmL - def vector_bundle_core.proj - def vector_bundle_core.total_space + theorem vector_bundle_core.trivialization_at_continuous_linear_map_at + theorem vector_bundle_core.trivialization_at_coord_change_eq + theorem vector_bundle_core.trivialization_at_symmL 2023-04-22 06:00:37 d4817f8 feat(measure_theory/integral/integral_eq_improper): fundamental theorem of calculus on (a, +\infty) (#18844) It became apparent in several applications that we are missing API here. As an illustration, two existing proofs in the library are shortened with the new API. ESTIMATED CHANGES Modified src/analysis/special_functions/gaussian.lean Modified src/analysis/special_functions/integrals.lean Modified src/measure_theory/integral/exp_decay.lean - theorem integral_exp_neg_le Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.integrable_on_Ioi_deriv_of_nonneg' + theorem measure_theory.integrable_on_Ioi_deriv_of_nonneg + theorem measure_theory.integrable_on_Ioi_deriv_of_nonpos' + theorem measure_theory.integrable_on_Ioi_deriv_of_nonpos + theorem measure_theory.integral_Ioi_of_has_deriv_at_of_nonneg' + theorem measure_theory.integral_Ioi_of_has_deriv_at_of_nonneg + theorem measure_theory.integral_Ioi_of_has_deriv_at_of_nonpos' + theorem measure_theory.integral_Ioi_of_has_deriv_at_of_nonpos + theorem measure_theory.integral_Ioi_of_has_deriv_at_of_tendsto' + theorem measure_theory.integral_Ioi_of_has_deriv_at_of_tendsto Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.integrable_on_deriv_of_nonneg +/- theorem interval_integral.integrable_on_deriv_right_of_nonneg 2023-04-21 19:31:18 52932b3 chore(measure_theory/function/ess_sup): Generalise (#18669) A handful of lemmas hold for bounded filters in conditionally complete lattices, rather than just filter in complete lattices (which are automatically bounded). Also prove that `μ {y | x < f y} = 0` when `x` is greater than the essential supremum of `f`, and dually. ESTIMATED CHANGES Modified src/measure_theory/function/ess_sup.lean + theorem ae_ess_inf_le + theorem ae_le_ess_sup +/- theorem ae_lt_of_ess_sup_lt +/- theorem ae_lt_of_lt_ess_inf + theorem ennreal.coe_ess_sup + theorem ess_inf_const' + theorem ess_inf_eq_Sup + theorem ess_sup_const' + theorem meas_ess_sup_lt + theorem meas_lt_ess_inf Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.ae_le_snorm_ess_sup + theorem measure_theory.meas_snorm_ess_sup_lt Modified src/order/filter/ennreal.lean Modified src/topology/algebra/order/liminf_limsup.lean + theorem eventually_le_limsup + theorem eventually_liminf_le + theorem liminf_eq_top + theorem limsup_eq_bot 2023-04-21 16:29:10 86d1873 chore(*): add mathlib4 synchronization comments (#18845) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.products` * `algebra.homology.additive` * `algebra.homology.homotopy` * `algebraic_topology.alternating_face_map_complex` * `algebraic_topology.cech_nerve` * `algebraic_topology.dold_kan.faces` * `algebraic_topology.dold_kan.functor_n` * `algebraic_topology.dold_kan.homotopies` * `algebraic_topology.dold_kan.notations` * `algebraic_topology.dold_kan.p_infty` * `algebraic_topology.dold_kan.projections` * `analysis.normed_space.ball_action` * `category_theory.idempotents.homological_complex` * `category_theory.monad.adjunction` * `category_theory.monad.algebra` * `category_theory.monad.limits` * `category_theory.monad.products` * `category_theory.preadditive.eilenberg_moore` * `category_theory.preadditive.opposite` * `category_theory.sites.limits` * `data.complex.cardinality` * `data.matrix.notation` * `data.matrix.reflection` * `data.mv_polynomial.funext` * `linear_algebra.free_module.pid` * `linear_algebra.matrix.determinant` * `linear_algebra.matrix.mv_polynomial` * `linear_algebra.matrix.polynomial` * `linear_algebra.matrix.reindex` * `logic.equiv.transfer_instance` * `ring_theory.chain_of_divisors` * `ring_theory.localization.submodule` * `topology.metric_space.polish` ESTIMATED CHANGES Modified src/algebra/category/Module/products.lean Modified src/algebra/homology/additive.lean Modified src/algebra/homology/homotopy.lean Modified src/algebraic_topology/alternating_face_map_complex.lean Modified src/algebraic_topology/cech_nerve.lean Modified src/algebraic_topology/dold_kan/faces.lean Modified src/algebraic_topology/dold_kan/functor_n.lean Modified src/algebraic_topology/dold_kan/homotopies.lean Modified src/algebraic_topology/dold_kan/notations.lean Modified src/algebraic_topology/dold_kan/p_infty.lean Modified src/algebraic_topology/dold_kan/projections.lean Modified src/analysis/normed_space/ball_action.lean Modified src/category_theory/idempotents/homological_complex.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monad/products.lean Modified src/category_theory/preadditive/eilenberg_moore.lean Modified src/category_theory/preadditive/opposite.lean Modified src/category_theory/sites/limits.lean Modified src/data/complex/cardinality.lean Modified src/data/matrix/notation.lean Modified src/data/matrix/reflection.lean Modified src/data/mv_polynomial/funext.lean Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/matrix/mv_polynomial.lean Modified src/linear_algebra/matrix/polynomial.lean Modified src/linear_algebra/matrix/reindex.lean Modified src/logic/equiv/transfer_instance.lean Modified src/ring_theory/chain_of_divisors.lean Modified src/ring_theory/localization/submodule.lean Modified src/topology/metric_space/polish.lean 2023-04-21 14:27:00 e49764d feat(linear_algebra/matrix/nonsingular_inverse): decomposition of block matrices with an invertible corner (#18847) This result was already in a `have` statement of an existing proof; the lemma generalizes the indices slightly to not require that the overall matrix is square. ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.from_blocks_eq_of_invertible₁₁ + theorem matrix.from_blocks_eq_of_invertible₂₂ 2023-04-21 14:26:59 eba5bb3 feat(data/matrix/basic): miscellaneous defs and lemmas (#8289) miscellaneous defs and lemmas ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.dot_product_one +/- theorem matrix.mul_submatrix_one + theorem matrix.mul_vec_one + theorem matrix.one_dot_product + theorem matrix.one_dot_product_one +/- theorem matrix.one_submatrix_mul + theorem matrix.vec_one_mul Modified src/data/matrix/block.lean + theorem matrix.dot_product_block 2023-04-21 11:13:01 90df25d feat(order/monotone/basic): `function.update` is monotone (#18841) and `pi.single` too ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.mul_single_mono + theorem pi.mul_single_strict_mono Modified src/order/basic.lean + theorem update_le_update_iff' + theorem update_lt_update_iff Modified src/order/monotone/basic.lean + theorem function.update_mono + theorem function.update_strict_mono 2023-04-21 09:08:53 10ee941 fix(group_theory/monoid_localization): fix timeout (#18846) Splitting this into two definitions seems to make both much faster ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean 2023-04-20 22:04:33 e8cf0cf feat(order/compactly_generated): For any `b`, there exists a set of independent atoms `s` such that `Sup s` is the complement of `b`. (#8475) This new lemma is carved out of the proof that atomistic lattices are complemented. Also provide directed versions of the interaction between suprema and disjointness. ESTIMATED CHANGES Modified src/order/compactly_generated.lean + theorem directed_on.inf_Sup_eq + theorem exists_set_independent_is_compl_Sup_atoms + theorem exists_set_independent_of_Sup_atoms_eq_top - theorem inf_Sup_eq_of_directed_on Modified src/order/directed.lean +/- theorem directed_on_range 2023-04-20 16:22:55 246f6f7 feat(algebra/group_with_zero): add lemmas about `f * pi.single i x` (#6418) ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.single_mul_left + theorem pi.single_mul_left_apply + theorem pi.single_mul_right + theorem pi.single_mul_right_apply 2023-04-20 14:40:28 996a853 feat(linear_algebra/matrix/nonsingular_inverse): interchange of matrix reindexing and inversion (#18812) This follows the strategy taken in #13827, which gives us all of: * `is_unit (A.submatrix e₁ e₂) ↔ is_unit A` * `(A.submatrix e₁ e₂)⁻¹ = (A⁻¹).submatrix e₂ e₁` * `⅟(A.submatrix e₁ e₂) = (⅟A).submatrix e₂ e₁` * `invertible (A.submatrix e₁ e₂) ≃ invertible A` ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.inv_of_submatrix_equiv_eq + theorem matrix.inv_reindex + theorem matrix.inv_submatrix_equiv + def matrix.invertible_of_submatrix_equiv_invertible + theorem matrix.is_unit_submatrix_equiv + def matrix.submatrix_equiv_invertible + def matrix.submatrix_equiv_invertible_equiv_invertible 2023-04-20 11:35:11 44e29db feat(algebra/order/ring/defs): negative versions of order lemmas (#18831) For each of a handful of lemmas with a `0 <` or `0 ≤` assumption, this adds a variant with a `< 0` or `≤ 0` assumption. ESTIMATED CHANGES Modified src/algebra/order/field/basic.lean + theorem div_le_one_of_ge Modified src/algebra/order/ring/defs.lean + theorem le_mul_of_le_one_left + theorem le_mul_of_le_one_right + theorem lt_mul_of_lt_one_left + theorem lt_mul_of_lt_one_right + theorem mul_le_of_one_le_left + theorem mul_le_of_one_le_right + theorem mul_lt_of_one_lt_left + theorem mul_lt_of_one_lt_right Modified src/algebra/order/ring/lemmas.lean 2023-04-20 11:35:10 f784cc6 feat(linear_algebra/tensor_product/matrix): connect with `matrix.kronecker` (#18616) This shows that `to_matrix _ _ (tensor_product.map f g) = to_matrix _ _ f ⊗ₖ to_matrix _ _ g` , and the equivalent statement for `to_lin`. ESTIMATED CHANGES Added src/linear_algebra/tensor_product/matrix.lean + theorem matrix.to_lin_kronecker + theorem tensor_product.to_matrix_assoc + theorem tensor_product.to_matrix_comm + theorem tensor_product.to_matrix_map Modified src/linear_algebra/tensor_product_basis.lean + theorem basis.tensor_product_repr_tmul_apply 2023-04-20 11:35:08 485b24e feat(order/directed): Scott continuous functions (#18517) We prove an insert result for directed sets when the relation is reflexive. This is then used to show that a Scott continuous function is monotone. This result is required in the [construction of the Scott topology on a preorder](https://github.com/leanprover-community/mathlib4/pull/2508) (see also #18448). Holding PR for mathlib4: leanprover-community/mathlib4#2543 ESTIMATED CHANGES Modified src/order/directed.lean + theorem directed_on.insert + theorem directed_on_pair' + theorem directed_on_pair + theorem directed_on_singleton + def scott_continuous 2023-04-20 08:38:43 4020dde feat(data/set/intervals/unordered_interval): `prod` and `pi` lemmas (#18835) ESTIMATED CHANGES Modified src/data/set/intervals/pi.lean + theorem set.pi_univ_uIcc Modified src/data/set/intervals/unordered_interval.lean + theorem set.uIcc_prod_eq + theorem set.uIcc_prod_uIcc 2023-04-20 07:06:15 cdc3448 refactor(algebra/module/dedekind_domain): eliminate existentials (#14734) This extracts some constructions from some long existentials so that we don't have to prove everything about the construction in a single place. This makes some of the statements longer, so in places the existential version is kept in terms of the definition one. ESTIMATED CHANGES Modified src/algebra/module/dedekind_domain.lean + theorem submodule.exists_is_internal_prime_power_torsion Modified src/algebra/module/pid.lean + theorem submodule.exists_is_internal_prime_power_torsion_of_pid Modified src/algebra/module/torsion.lean + theorem module.is_torsion_by_set_annihilator_top + theorem submodule.annihilator_top_inter_non_zero_divisors - theorem submodule.is_torsion_by_ideal_of_finite_of_is_torsion 2023-04-19 23:18:38 9ac7c0c feat(data/finset/basic): `insert` and `erase` lemmas (#18729) Interaction of `insert` and `erase` with `inter`, `union` and `disjoint`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.disjoint_erase_comm + theorem finset.disjoint_of_erase_left + theorem finset.disjoint_of_erase_right + theorem finset.erase_eq + theorem finset.erase_inter + theorem finset.erase_inter_comm + theorem finset.erase_sdiff_comm + theorem finset.erase_sdiff_distrib + theorem finset.erase_union_distrib + theorem finset.erase_union_of_mem + theorem finset.insert_inter_distrib + theorem finset.insert_union_comm + theorem finset.inter_erase +/- theorem finset.sdiff_erase + theorem finset.sdiff_erase_self + theorem finset.sdiff_sdiff_eq_sdiff_union + theorem finset.sdiff_singleton_eq_self - theorem finset.sdiff_singleton_not_mem_eq_self + theorem finset.sdiff_union_erase_cancel + theorem finset.sdiff_union_sdiff_cancel + theorem finset.union_erase_of_mem + theorem finset.union_sdiff_cancel_left + theorem finset.union_sdiff_cancel_right + theorem finset.union_subset_union_left + theorem finset.union_subset_union_right Modified src/data/set/basic.lean + theorem set.diff_diff_eq_sdiff_union + theorem set.diff_union_diff_cancel Modified src/order/boolean_algebra.lean + theorem codisjoint_himp_self_left + theorem codisjoint_himp_self_right + theorem disjoint_sdiff_comm + theorem himp_le Modified src/order/heyting/basic.lean + theorem codisjoint.himp_le_of_right_le + theorem disjoint.le_sdiff_of_le_left 2023-04-19 21:06:45 13b8e25 feat(group_theory/monoid_localization): Order (#18724) Prove that every (linearly) ordered cancellative monoid can be embedded into a (linearly) ordered group, namely its Grothendieck group. Note that cancellativity is necessary since submonoids of a group are cancellative. ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean + theorem localization.mk_eq_mk_iff' + theorem localization.mk_le_mk + theorem localization.mk_left_injective + theorem localization.mk_lt_mk + def localization.rec_on_subsingleton₂ 2023-04-19 18:47:19 730c6d4 chore(order/initial_seg): tweak `subsingleton_of_trichotomous_of_irrefl` (#18749) We rename it, turn it into an instance, and golf the next instance with it. ESTIMATED CHANGES Modified src/order/initial_seg.lean - theorem initial_seg.unique_of_trichotomous_of_irrefl 2023-04-19 16:38:57 1721982 feat(data/matrix/rank): rank of `Aᵀ ⬝ A` and `Aᴴ ⬝ A` (#18818) Since these results imply it trivially, this also includes lemmas about the rank of `Aᵀ` and `Aᴴ`. However, these lemmas are not stated very generally, and are surely true in wider cases than the ones proven here. ESTIMATED CHANGES Modified src/data/matrix/rank.lean + theorem matrix.ker_mul_vec_lin_conj_transpose_mul_self + theorem matrix.ker_mul_vec_lin_transpose_mul_self + theorem matrix.rank_conj_transpose + theorem matrix.rank_conj_transpose_mul_self + theorem matrix.rank_eq_finrank_span_row + theorem matrix.rank_self_mul_conj_transpose + theorem matrix.rank_self_mul_transpose + theorem matrix.rank_transpose + theorem matrix.rank_transpose_mul_self 2023-04-19 14:57:28 8eb9c42 chore(*): add mathlib4 synchronization comments (#18832) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.homology.exact` * `algebra.homology.flip` * `algebra.homology.functor` * `algebra.homology.homology` * `algebra.homology.single` * `category_theory.monad.types` * `category_theory.subobject.types` * `computability.tm_computable` * `control.bitraversable.lemmas` * `data.qpf.univariate.basic` * `data.real.cardinality` * `model_theory.encoding` * `ring_theory.localization.ideal` * `topology.algebra.valuation` * `topology.metric_space.cantor_scheme` * `topology.urysohns_lemma` ESTIMATED CHANGES Modified src/algebra/homology/exact.lean Modified src/algebra/homology/flip.lean Modified src/algebra/homology/functor.lean Modified src/algebra/homology/homology.lean Modified src/algebra/homology/single.lean Modified src/category_theory/monad/types.lean Modified src/category_theory/subobject/types.lean Modified src/computability/tm_computable.lean Modified src/control/bitraversable/lemmas.lean Modified src/data/qpf/univariate/basic.lean Modified src/data/real/cardinality.lean Modified src/model_theory/encoding.lean Modified src/ring_theory/localization/ideal.lean Modified src/topology/algebra/valuation.lean Modified src/topology/metric_space/cantor_scheme.lean Modified src/topology/urysohns_lemma.lean 2023-04-19 08:40:29 c6275ef feat(ring_theory/polynomial): define the probabilist's Hermite polynomials (#18739) Define the Hermite polynomials recursively, and show this is equivalent to the result of iterating the operation `x - d/dx` on the constant polynomial `1`. Future PRs will include several equivalent characterizations: - Recursive and explicit expressions for the coefficients - Definition based on the nth derivative of the Gaussian function ESTIMATED CHANGES Added src/ring_theory/polynomial/hermite.lean + theorem polynomial.hermite_eq_iterate + theorem polynomial.hermite_one + theorem polynomial.hermite_succ + theorem polynomial.hermite_zero 2023-04-18 07:20:56 cd8fafa chore(data/complex/module): split out orientation to a separate file (#18824) This removes the imports - linear_algebra.matrix.determinant - linear_algebra.matrix.mv_polynomial - linear_algebra.matrix.adjugate - linear_algebra.matrix.nonsingular_inverse - linear_algebra.matrix.basis - linear_algebra.determinant - linear_algebra.orientation from `data.complex.module`, which aren't otherwise needed here. ESTIMATED CHANGES Modified src/analysis/inner_product_space/two_dim.lean Modified src/data/complex/module.lean Added src/data/complex/orientation.lean 2023-04-18 07:20:54 6c263e4 chore(linear_algebra/matrix/basis): reduce imports (#18823) This is a slight simplification on the current maximal path for the port. ESTIMATED CHANGES Modified src/linear_algebra/matrix/basis.lean 2023-04-18 05:13:33 ce38d86 chore(*): add mathlib4 synchronization comments (#18813) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.homology.homological_complex` * `algebra.homology.image_to_kernel` * `algebraic_topology.Moore_complex` * `algebraic_topology.topological_simplex` * `analysis.asymptotics.asymptotic_equivalent` * `analysis.box_integral.box.subbox_induction` * `analysis.convex.body` * `analysis.convex.exposed` * `analysis.normed.group.add_torsor` * `analysis.normed.ring.seminorm` * `analysis.normed_space.add_torsor` * `analysis.normed_space.pointwise` * `analysis.special_functions.polynomials` * `category_theory.sites.whiskering` * `category_theory.subobject.basic` * `category_theory.subobject.factor_thru` * `category_theory.subobject.lattice` * `category_theory.subobject.limits` * `category_theory.subobject.mono_over` * `category_theory.subobject.well_powered` * `data.num.prime` * `dynamics.circle.rotation_number.translation_number` * `geometry.manifold.local_invariant_properties` * `group_theory.free_abelian_group_finsupp` * `linear_algebra.free_module.finite.rank` * `model_theory.syntax` * `number_theory.lucas_lehmer` * `number_theory.pell_matiyasevic` * `order.category.DistLat` * `ring_theory.non_unital_subsemiring.basic` * `topology.algebra.nonarchimedean.bases` * `topology.metric_space.baire` * `topology.metric_space.closeds` ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean Modified src/algebra/homology/image_to_kernel.lean Modified src/algebraic_topology/Moore_complex.lean Modified src/algebraic_topology/topological_simplex.lean Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/box_integral/box/subbox_induction.lean Modified src/analysis/convex/body.lean Modified src/analysis/convex/exposed.lean Modified src/analysis/normed/group/add_torsor.lean Modified src/analysis/normed/ring/seminorm.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/pointwise.lean Modified src/analysis/special_functions/polynomials.lean Modified src/category_theory/sites/whiskering.lean Modified src/category_theory/subobject/basic.lean Modified src/category_theory/subobject/factor_thru.lean Modified src/category_theory/subobject/lattice.lean Modified src/category_theory/subobject/limits.lean Modified src/category_theory/subobject/mono_over.lean Modified src/category_theory/subobject/well_powered.lean Modified src/data/num/prime.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/geometry/manifold/local_invariant_properties.lean Modified src/group_theory/free_abelian_group_finsupp.lean Modified src/linear_algebra/free_module/finite/rank.lean Modified src/model_theory/syntax.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/pell_matiyasevic.lean Modified src/order/category/DistLat.lean Modified src/ring_theory/non_unital_subsemiring/basic.lean Modified src/topology/algebra/nonarchimedean/bases.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean 2023-04-17 20:49:23 49b7f94 feat(topology/perfect): Schemes, embedding of the Cantor space (#18248) Add to `topology.perfect` the following theorem: In a complete metric space, any nonempty perfect set admits a continuous embedding of the Cantor space. The proof uses an object which in descriptive set theory is sometimes called a "scheme". Some attempt was made to include in `topology.metric_space.cantor_scheme` a general theory of these schemes, since they should be useful down the line in other results as well. We also define `pi_nat.res` in `topology.metric_space.pi_nat`. ESTIMATED CHANGES Added src/topology/metric_space/cantor_scheme.lean + theorem cantor_scheme.closure_antitone.map_of_vanishing_diam + def cantor_scheme.closure_antitone + theorem cantor_scheme.disjoint.map_injective + theorem cantor_scheme.map_mem + theorem cantor_scheme.vanishing_diam.dist_lt + theorem cantor_scheme.vanishing_diam.map_continuous + def cantor_scheme.vanishing_diam Modified src/topology/metric_space/pi_nat.lean + theorem pi_nat.cylinder_eq_res + theorem pi_nat.is_open_cylinder +/- theorem pi_nat.is_topological_basis_cylinders + def pi_nat.res + theorem pi_nat.res_eq_res + theorem pi_nat.res_injective + theorem pi_nat.res_length + theorem pi_nat.res_succ + theorem pi_nat.res_zero Modified src/topology/perfect.lean + theorem perfect.exists_nat_bool_injection + theorem perfect.small_diam_splitting 2023-04-17 16:24:10 13bf761 feat(measure_theory/functions/lp_space): bounds on the sum of functions in L^p, p < 1, and applications (#18796) The `L^p` space satisfies the triangular inequality for `p ≥ 1`. We show that, for `p < 1`, it satisfies a weaker inequality (with the loss of a multiplicative constant `2^(1/p - 1)`), which is still enough for several results. This makes it possible to remove the assumptions on `p` in results on density of continuous functions. ESTIMATED CHANGES Modified src/analysis/mean_inequalities_pow.lean + theorem ennreal.rpow_add_le_mul_rpow_add_rpow + theorem nnreal.rpow_add_le_mul_rpow_add_rpow Modified src/measure_theory/function/continuous_map_dense.lean +/- theorem measure_theory.mem_ℒp.exists_bounded_continuous_snorm_sub_le Modified src/measure_theory/function/lp_space.lean + def measure_theory.Lp_add_const + theorem measure_theory.Lp_add_const_lt_top + theorem measure_theory.Lp_add_const_of_one_le + theorem measure_theory.Lp_add_const_zero + theorem measure_theory.exists_Lp_half + theorem measure_theory.snorm'_add_le_of_le_one - theorem measure_theory.snorm'_add_lt_top_of_le_one + theorem measure_theory.snorm_add_le' - theorem measure_theory.snorm_add_lt_top_of_one_le + theorem measure_theory.snorm_sub_le' Modified src/measure_theory/function/simple_func_dense_lp.lean + theorem measure_theory.mem_ℒp.exists_simple_func_snorm_sub_lt +/- theorem measure_theory.mem_ℒp.induction_dense Modified src/measure_theory/integral/mean_inequalities.lean + theorem ennreal.lintegral_Lp_add_le_of_le_one 2023-04-17 11:40:52 155d551 feat(algebra/module/submodule/basic): add has_vadd (#18815) ESTIMATED CHANGES Modified src/algebra/module/submodule/basic.lean + theorem submodule.vadd_def 2023-04-17 10:35:23 991ff3b golf(set_theory/ordinal/cantor_normal_form): golf theorems (#16009) We move `div_opow_log_pos` out of a proof and open the `list` namespace. Mathlib 4: https://github.com/leanprover-community/mathlib4/pull/3189 ESTIMATED CHANGES Modified src/set_theory/ordinal/cantor_normal_form.lean 2023-04-17 06:47:49 a968611 feat(analysis/schwartz_space): lemmas for supremum of seminorms (#18648) The main result is the bound `one_add_le_seminorm_sup_apply`, which is sometimes in the literature used as the definition of the Schwartz space. We don't really care about the `2^k` factor, since this result is usually used to prove that certain operators are bounded on Schwartz space and hence finiteness of the right hand side is all that matters. One application is to show that the product of a Schwartz function and a smooth polynomially growing function is again Schwartz. ESTIMATED CHANGES Modified src/analysis/schwartz_space.lean + theorem schwartz_map.one_add_le_sup_seminorm_apply Modified src/data/finset/lattice.lean + theorem finset.inf'_le_of_le + theorem finset.inf_le_of_le + theorem finset.le_sup'_of_le + theorem finset.le_sup_of_le 2023-04-17 00:33:14 95e83ce feat(category_theory/site/limits): generalise universes (#18817) The objects in category `C` in this file had type `Type max v u` but there's no reason they can't just have type `Type u`. There are no uses in this file of `u` as a universe by itself, so this does not make any results less general. This makes porting the file easier. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Universe.20issues.20with.20concrete.20categories/near/350340297) ESTIMATED CHANGES Modified src/category_theory/sites/limits.lean 2023-04-16 20:29:56 17ad94b ci: fix bibtool installation (#18816) Adding `sudo apt-get update` seems to fix the installation failure; perhaps our package list referred to an old version that the default mirror decided not to bother hosting any more. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2023-04-15 04:32:04 4f4a1c8 chore(*): add mathlib4 synchronization comments (#18807) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.epi_mono` * `algebraic_topology.split_simplicial_object` * `analysis.asymptotics.specific_asymptotics` * `analysis.asymptotics.superpolynomial_decay` * `analysis.asymptotics.theta` * `analysis.box_integral.box.basic` * `analysis.locally_convex.balanced_core_hull` * `analysis.normed_space.extr` * `category_theory.limits.over` * `category_theory.sites.sheafification` * `linear_algebra.free_module.rank` * `order.filter.zero_and_bounded_at_filter` * `topology.category.Top.epi_mono` ESTIMATED CHANGES Modified src/algebra/category/Module/epi_mono.lean Modified src/algebraic_topology/split_simplicial_object.lean Modified src/analysis/asymptotics/specific_asymptotics.lean Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/asymptotics/theta.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/locally_convex/balanced_core_hull.lean Modified src/analysis/normed_space/extr.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/sites/sheafification.lean Modified src/linear_algebra/free_module/rank.lean Modified src/order/filter/zero_and_bounded_at_filter.lean Modified src/topology/category/Top/epi_mono.lean 2023-04-14 22:49:11 e95e4f9 feat(linear_algebra/finite_dimensional): generalize results to `module.finite` (#18811) This generalize the following from `finite_dimensional` over division rings to `module.finite` over free modules: * `finite_dimensional.nonempty_linear_equiv_of_finrank_eq` (moved from `nonempty_linear_equiv_of_finrank_eq`) * `finite_dimensional.nonempty_linear_equiv_iff_finrank_eq` (moved from `nonempty_linear_equiv_iff_finrank_eq`) * `linear_equiv.of_finrank_eq` * `module.finite.map` (moved from `finite_dimensional.submodule.map.finite_dimensional`). This is the only lemma moved across the porting tide. * `submodule.finrank_map_le` (moved from `finite_dimensional.finrank_map_le`) * `submodule.finrank_map_subtype_eq` (moved from `finite_dimensional.finrank_map_subtype_eq`, needs no finite or free assumptions at all) * `submodule.finrank_le_finrank_of_le` ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/finite_dimensional.lean - theorem finite_dimensional.finrank_map_le - theorem finite_dimensional.finrank_map_subtype_eq - theorem finite_dimensional.nonempty_linear_equiv_iff_finrank_eq - theorem finite_dimensional.nonempty_linear_equiv_of_finrank_eq - theorem submodule.finrank_le_finrank_of_le Modified src/linear_algebra/free_module/finite/rank.lean + theorem finite_dimensional.nonempty_linear_equiv_iff_finrank_eq + theorem finite_dimensional.nonempty_linear_equiv_of_finrank_eq + theorem finite_dimensional.submodule.finrank_map_subtype_eq + theorem submodule.finrank_le_finrank_of_le + theorem submodule.finrank_map_le Modified src/ring_theory/finiteness.lean 2023-04-14 19:47:13 de29c32 feat(algebra/order/sub/defs): make `has_ordered_sub` a Prop (#18810) `has_ordered_sub` was incorrectly a Type, because of a Lean 3 bug. This is a backport of mathlib4 [#3436](https://github.com/leanprover-community/mathlib4/pull/3436) . ESTIMATED CHANGES Modified src/algebra/order/sub/defs.lean Modified src/data/real/nnreal.lean 2023-04-14 17:40:35 0e2aab2 feat(data/matrix/basic): more lemmas about submatrix (#18738) This adds trivial results about reordering rows and columns in a matrix: * Reordering can be moved around `dot_product`, `mul_vec`, and `vec_mul` (previouly we only had `mul`) * Reordering can be moved through `adjugate` * Reordering can be moved through row and column updates. * Reordering can be moved through `to_lin'` * Reordering does not affect `matrix.rank` Also adds some missing `of` wrappers. Lemmas about reindexing are useful when working with block matrices, as they make it possible to make symmetry arguments. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.comp_equiv_dot_product_comp_equiv + theorem matrix.comp_equiv_symm_dot_product + theorem matrix.dot_product_comp_equiv_symm + theorem matrix.reindex_update_column + theorem matrix.reindex_update_row + theorem matrix.submatrix_mul_vec_equiv + theorem matrix.submatrix_update_column_equiv + theorem matrix.submatrix_update_row_equiv + theorem matrix.submatrix_vec_mul_equiv + theorem matrix.update_column_reindex + theorem matrix.update_column_submatrix_equiv + theorem matrix.update_row_reindex + theorem matrix.update_row_submatrix_equiv Modified src/data/matrix/rank.lean + theorem matrix.rank_reindex + theorem matrix.rank_submatrix + theorem matrix.rank_submatrix_le Modified src/linear_algebra/matrix/adjugate.lean + theorem matrix.adjugate_reindex + theorem matrix.adjugate_submatrix_equiv_self + theorem matrix.cramer_reindex + theorem matrix.cramer_submatrix_equiv Modified src/linear_algebra/matrix/to_lin.lean + theorem matrix.mul_vec_lin_reindex + theorem matrix.mul_vec_lin_submatrix + theorem matrix.to_lin'_reindex + theorem matrix.to_lin'_submatrix Modified src/linear_algebra/matrix/transvection.lean 2023-04-14 06:11:40 2cf3ee2 feat(analysis/calculus/cont_diff_def): no continuity is needed for has_ftaylor_series_up_to if n = ∞ (#18808) We also add `has_ftaylor_series_up_to_iff_top` in order that the notation is consistent between `has_ftaylor_series_up_to` and `has_ftaylor_series_up_to_on`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff_def.lean + theorem has_ftaylor_series_up_to_on_top_iff' + theorem has_ftaylor_series_up_to_top_iff' + theorem has_ftaylor_series_up_to_top_iff 2023-04-13 21:12:11 820b229 feat(data/matrix/reflection): add `mul_vec` and `vec_mul` (#18805) This follows the pattern already established by `mul`. The motivation was an example on Zulip which wanted to compute the product of ```lean def M := !![(2:ℂ), 0, 0; 0, 1, 0; 0, 0, 1] def v := ![(0:ℂ), 0, 1] ``` As before, the meta code that makes this pleasant to use is absent, but I will add it along with the rest of the meta code in #15738. ESTIMATED CHANGES Modified src/data/matrix/reflection.lean + def matrix.mul_vecᵣ + theorem matrix.mul_vecᵣ_eq + def matrix.vec_mulᵣ + theorem matrix.vec_mulᵣ_eq 2023-04-13 19:25:22 7ebf83e chore(analysis/seminorm): add new le_def/lt_def and renaming (#18801) ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.coe_le_coe + theorem seminorm.coe_lt_coe +/- theorem seminorm.le_def +/- theorem seminorm.lt_def 2023-04-13 17:32:21 86add5c refactor(linear_algebra/matrix/rank): remove `decidable_eq` arguments (#18800) `matrix.to_lin' M` is just `matrix.vec_mul_lin M` with an unused decidability argument. We're a bit close to the tide to risk attempting to do a global replacement, so this just: * Refactors some lemmas about `matrix.to_lin'` to be first proven about `matrix.vec_mul_lin` * Changes `matrix.rank` to be defined in terms of the latter. ESTIMATED CHANGES Modified src/data/matrix/rank.lean +/- theorem matrix.rank_eq_finrank_range_to_lin +/- theorem matrix.rank_of_is_unit +/- theorem matrix.rank_one +/- theorem matrix.rank_unit Modified src/linear_algebra/matrix/to_lin.lean + theorem matrix.ker_mul_vec_lin_eq_bot_iff +/- def matrix.mul_vec_lin + theorem matrix.mul_vec_lin_add + theorem matrix.mul_vec_lin_apply + theorem matrix.mul_vec_lin_mul + theorem matrix.mul_vec_lin_one + theorem matrix.mul_vec_lin_zero +/- theorem matrix.mul_vec_std_basis +/- theorem matrix.mul_vec_std_basis_apply + theorem matrix.range_mul_vec_lin + theorem matrix.to_lin'_apply' 2023-04-13 15:25:15 465d430 chore(linear_algebra/free_module/rank): golf a slow proof (#18804) We already do all the work for this when constructing the basis elsewhere. ESTIMATED CHANGES Modified src/linear_algebra/free_module/rank.lean 2023-04-13 09:44:03 47a5f81 feat(data/matrix/rank): rank of multiplication (#18784) This adds a universe-polymorphic version of `rank_comp_le_right`, and then uses it to show `(A ⬝ B).rank ≤ B.rank`; previously we only had `(A ⬝ B).rank ≤ A.rank`. For convenience, this adds the spellings `(A ⬝ B).rank ≤ min A.rank B.rank` and `rank (f.comp g) ≤ min (rank f) (rank g)`, as these map well to the way that rank would be described in words. ESTIMATED CHANGES Modified src/data/matrix/rank.lean + theorem matrix.rank_mul_le_left + theorem matrix.rank_mul_le_right Modified src/linear_algebra/dimension.lean + theorem linear_map.lift_rank_comp_le + theorem linear_map.lift_rank_comp_le_right + theorem linear_map.rank_comp_le 2023-04-13 06:19:53 9a48a08 chore(*): add mathlib4 synchronization comments (#18799) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `analysis.asymptotics.asymptotics` * `analysis.convex.quasiconvex` * `analysis.locally_convex.basic` * `analysis.normed.order.upper_lower` * `analysis.normed_space.continuous_linear_map` * `analysis.normed_space.ray` * `analysis.normed_space.riesz_lemma` * `category_theory.idempotents.simplicial_object` * `group_theory.specific_groups.alternating` * `linear_algebra.finrank` * `model_theory.language_map` ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/convex/quasiconvex.lean Modified src/analysis/locally_convex/basic.lean Modified src/analysis/normed/order/upper_lower.lean Modified src/analysis/normed_space/continuous_linear_map.lean Modified src/analysis/normed_space/ray.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/category_theory/idempotents/simplicial_object.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/linear_algebra/finrank.lean Modified src/model_theory/language_map.lean 2023-04-13 05:16:58 2140728 feat(data/matrix/rank): rank of a matrix is the rank of its column space (#18778) This is a TODO comment in this file left from #10826. Proving the link to the row space is harder, and only easy to prove for `is_R_or_C`; so I've left it for another time. ESTIMATED CHANGES Modified src/data/matrix/rank.lean + theorem matrix.rank_eq_finrank_span_cols 2023-04-12 23:51:56 5ac1dab chore(linear_algebra/matrix/dot_product): weaken typeclasses (#18798) This makes unification slightly harder on Lean, so `: _`s are added. Fixes a stupid error in #18783 ESTIMATED CHANGES Modified src/linear_algebra/matrix/dot_product.lean 2023-04-12 15:48:11 347636a chore(linear_algebra/finrank): backport removal of simp lemmas (#18794) Testing a solution to the simpNF linter problems at https://github.com/leanprover-community/mathlib4/pull/3378 ESTIMATED CHANGES Modified src/linear_algebra/finrank.lean 2023-04-12 09:52:25 b5b5dd5 feat(linear_algebra/free_module/finite/rank): remove `module.free` assumption (#18792) Combined with the result in #18787, this lets us golf a downstream proof about matrices. ESTIMATED CHANGES Modified src/data/matrix/rank.lean Modified src/linear_algebra/dimension.lean + theorem linear_independent_le_span_finset Modified src/linear_algebra/free_module/finite/rank.lean +/- theorem linear_map.finrank_le_finrank_of_injective +/- theorem linear_map.finrank_range_le +/- theorem submodule.finrank_le +/- theorem submodule.finrank_quotient_le 2023-04-12 07:22:22 814d76e chore(*): add mathlib4 synchronization comments (#18793) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Module.basic` * `algebra.linear_recurrence` * `algebra.order.chebyshev` * `algebra.order.to_interval_mod` * `algebraic_topology.simplicial_object` * `analysis.convex.extrema` * `analysis.convex.slope` * `analysis.normed.order.basic` * `analysis.normed_space.basic` * `category_theory.graded_object` * `computability.encoding` * `geometry.manifold.charted_space` * `linear_algebra.free_algebra` * `linear_algebra.quotient_pi` * `ring_theory.polynomial.eisenstein.basic` * `topology.category.Top.adjunctions` * `topology.category.Top.basic` ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/order/chebyshev.lean Modified src/algebra/order/to_interval_mod.lean Modified src/algebraic_topology/simplicial_object.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/convex/slope.lean Modified src/analysis/normed/order/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/category_theory/graded_object.lean Modified src/computability/encoding.lean Modified src/geometry/manifold/charted_space.lean Modified src/linear_algebra/free_algebra.lean Modified src/linear_algebra/quotient_pi.lean Modified src/ring_theory/polynomial/eisenstein/basic.lean Modified src/topology/category/Top/adjunctions.lean Modified src/topology/category/Top/basic.lean 2023-04-12 07:22:21 9bb2897 chore(set_theory/cardinal/basic): reinstate `partial_order` (#18781) This change from #18714 was causing computability issues in Lean 4. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean 2023-04-12 06:14:59 46822d9 feat(linear_algebra/matrix/dot_product): `dot_product_self_eq_zero` (#18783) ESTIMATED CHANGES Modified src/linear_algebra/matrix/dot_product.lean + theorem matrix.dot_product_self_eq_zero + theorem matrix.dot_product_self_star_eq_zero + theorem matrix.dot_product_star_self_eq_zero 2023-04-11 13:21:35 039ef89 chore(ring_theory/finiteness): generalize `finite_dimensional_range` to modules (#18787) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean Modified src/ring_theory/finiteness.lean 2023-04-11 12:03:05 23b8072 chore(analysis/inner_product_space/symmetric): change lemma name (#18777) changed name from [`linear_map.is_symmetric.inner_map_eq_zero`](https://leanprover-community.github.io/mathlib_docs/analysis/inner_product_space/symmetric.html#linear_map.is_symmetric.inner_map_eq_zero) to `linear_map.is_symmetric.inner_map_self_eq_zero` to match [`inner_map_self_eq_zero`](https://leanprover-community.github.io/mathlib_docs/analysis/inner_product_space/basic.html#inner_map_self_eq_zero) ESTIMATED CHANGES Modified src/analysis/inner_product_space/symmetric.lean - theorem linear_map.is_symmetric.inner_map_eq_zero + theorem linear_map.is_symmetric.inner_map_self_eq_zero 2023-04-11 07:50:43 25a9423 chore(*): add mathlib4 synchronization comments (#18772) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.module.projective` * `algebra.order.rearrangement` * `analysis.convex.function` * `analysis.locally_convex.polar` * `category_theory.Fintype` * `category_theory.abelian.functor_category` * `category_theory.sites.plus` * `category_theory.triangulated.pretriangulated` * `category_theory.triangulated.rotate` * `category_theory.triangulated.triangulated` * `control.fold` * `data.finset.sups` * `data.list.to_finsupp` * `data.num.lemmas` * `field_theory.finiteness` * `field_theory.mv_polynomial` * `linear_algebra.alternating` * `linear_algebra.dimension` * `linear_algebra.free_module.finite.basic` * `order.height` * `set_theory.zfc.ordinal` * `topology.algebra.module.weak_dual` * `topology.local_at_target` * `topology.metric_space.contracting` * `topology.metric_space.pi_nat` ESTIMATED CHANGES Modified src/algebra/module/projective.lean Modified src/algebra/order/rearrangement.lean Modified src/analysis/convex/function.lean Modified src/analysis/locally_convex/polar.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/abelian/functor_category.lean Modified src/category_theory/sites/plus.lean Modified src/category_theory/triangulated/pretriangulated.lean Modified src/category_theory/triangulated/rotate.lean Modified src/category_theory/triangulated/triangulated.lean Modified src/control/fold.lean Modified src/data/finset/sups.lean Modified src/data/list/to_finsupp.lean Modified src/data/num/lemmas.lean Modified src/field_theory/finiteness.lean Modified src/field_theory/mv_polynomial.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/free_module/finite/basic.lean Modified src/order/height.lean Modified src/set_theory/zfc/ordinal.lean Modified src/topology/algebra/module/weak_dual.lean Modified src/topology/local_at_target.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/pi_nat.lean 2023-04-11 06:22:06 a493616 feat(analysis/calculus/cont_diff_def): C^(n+1) iff C^n derivative (#18767) ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff_def.lean + theorem cont_diff_on_succ_iff_has_fderiv_within + theorem cont_diff_succ_iff_has_fderiv 2023-04-10 21:54:43 37ffa4e refactor(topology.continuous_function.algebra): Loosen continuous_subsemiring hypothesis (#18790) The current hypothesis of `continuous_subsemiring` and `continuous_submonoid` are unnecessarily restrictive. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean 2023-04-10 17:00:44 c9236f4 ci: fix label name for ported files (#18788) ESTIMATED CHANGES Modified .github/workflows/add_ported_warnings.yml 2023-04-10 15:40:23 a8c97ed feat(measure_theory/function/continuous_map_dense): compactly supported functions are dense in L^p (#18710) We have already the fact that bounded continuous functions are dense in L^p. We refactor the proof to extract an approach that is common to bounded continuous functions and to compactly supported functions, to avoid code duplication as much as possible. We also give elementary versions of the statements (in the form: for all epsilon > 0, there exists g such that...) as they may be easier to use, and specialized versions for integrable functions. ESTIMATED CHANGES Modified src/analysis/fourier/add_circle.lean Modified src/measure_theory/function/continuous_map_dense.lean +/- theorem measure_theory.Lp.bounded_continuous_function_dense + theorem measure_theory.exists_continuous_snorm_sub_le_of_closed + theorem measure_theory.integrable.exists_bounded_continuous_integral_sub_le + theorem measure_theory.integrable.exists_bounded_continuous_lintegral_sub_le + theorem measure_theory.integrable.exists_has_compact_support_integral_sub_le + theorem measure_theory.integrable.exists_has_compact_support_lintegral_sub_le + theorem measure_theory.mem_ℒp.exists_bounded_continuous_integral_rpow_sub_le + theorem measure_theory.mem_ℒp.exists_bounded_continuous_snorm_sub_le + theorem measure_theory.mem_ℒp.exists_has_compact_support_integral_rpow_sub_le + theorem measure_theory.mem_ℒp.exists_has_compact_support_snorm_sub_le Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.exists_snorm_indicator_le + theorem measure_theory.snorm_indicator_const_le Modified src/measure_theory/function/simple_func_dense_lp.lean + theorem measure_theory.mem_ℒp.induction_dense 2023-04-10 12:40:59 df5e993 chore(algebra/group_with_zero/units/basic): Deduplicate instance (#18785) `group_with_zero.cancel_monoid_with_zero` was a duplicate of `group_with_zero.to_cancel_monoid_with_zero`. `comm_group_with_zero.cancel_comm_monoid_with_zero` is renamed to include the usual `to_` prefix. This should have been done in #18698. ESTIMATED CHANGES Modified src/algebra/group_with_zero/units/basic.lean 2023-04-10 12:40:58 0a0b3b4 feat(analysis/calculus/cont_diff): smoothness from Taylor series (#18768) The proofs are basically trivial, but I think it is very nice to have the API. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff_def.lean + theorem has_ftaylor_series_up_to.cont_diff + theorem has_ftaylor_series_up_to_on.cont_diff_on 2023-04-10 11:35:31 8cab1cd feat(analysis/schwartz_space): 1-dimensional derivative (#18745) ESTIMATED CHANGES Modified src/analysis/schwartz_space.lean + def schwartz_map.deriv_clm + theorem schwartz_map.deriv_clm_apply + theorem schwartz_map.differentiable_at + theorem schwartz_map.le_seminorm' + theorem schwartz_map.seminorm_le_bound' 2023-04-10 04:48:10 9c444b9 feat(.github/workflows): add modifies ported label automatically (#18782) ESTIMATED CHANGES Modified .github/workflows/add_ported_warnings.yml Modified scripts/detect_ported_files.py 2023-04-09 12:17:07 e05ead7 chore(set_theory/cardinal/basic): less awkward placement of theorems (#18771) Some of the new results on limit cardinals were awkwardly breaking up blocks of code with related theorems, probably due to some botched merge. We reorder them to avoid this. Ported along other changes to this file in: https://github.com/leanprover-community/mathlib4/pull/3343 ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean 2023-04-09 07:51:18 b1c2339 refactor(linear_algebra/matrix/finite_dimensional): deduplicate (#18770) * `matrix.finrank_matrix` was a duplicate of `finite_dimensional.finrank_matrix`. * `linear_map.finrank_linear_map` was a duplicate of `finrank_linear_hom`, now merged to `finite_dimensional.finrank_linear_map` * `finite_dimensional.linear_map` was a duplicate of `linear_map.finite_dimensional` and can be golfed using `module.finite.linear_map` * `finite_dimensional.matrix` can be golfed using `module.finite.matrix` For now, I've left behind `finite_dimensional` instances, but proved them in terms of the `module.finite` versions. To enable this, some imports have been adjusted. The resulting import structure substantially cuts the dependencies consumed by `linear_algebra.matrix.to_lin`; it no longer needs `module.rank` to be available. ESTIMATED CHANGES Modified src/algebra/category/fgModule/basic.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/field_theory/tower.lean - theorem finite_dimensional.finrank_linear_map Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/free_module/finite/matrix.lean + theorem finite_dimensional.finrank_linear_map + theorem matrix.rank_vec_mul_vec - theorem module.free.finrank_linear_hom Modified src/linear_algebra/free_module/finite/rank.lean +/- theorem finite_dimensional.finrank_matrix Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/matrix/finite_dimensional.lean - theorem matrix.finrank_matrix Modified src/linear_algebra/matrix/to_lin.lean - theorem linear_map.finrank_linear_map - theorem matrix.rank_vec_mul_vec Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/topology/algebra/module/finite_dimension.lean 2023-04-08 20:46:10 45ce392 chore(linear_algebra/dimension): tidy lemma names for `linear_map.rank` (#18769) `le1` and `le2` don't really fit the usual naming convention. Also generalizes `rank_le_domain` to rings and `rank_le_range` across universes. ESTIMATED CHANGES Modified src/data/matrix/rank.lean Modified src/linear_algebra/dimension.lean - theorem linear_map.rank_comp_le1 - theorem linear_map.rank_comp_le2 + theorem linear_map.rank_comp_le_left + theorem linear_map.rank_comp_le_right +/- theorem linear_map.rank_le_range Modified src/linear_algebra/matrix/to_lin.lean +/- theorem matrix.rank_vec_mul_vec 2023-04-08 18:50:04 284fdd2 chore(linear_algebra/alternating,topology/algebra/module/multilinear): add a fun_like instance (#18766) ESTIMATED CHANGES Modified src/analysis/analytic/inverse.lean Modified src/analysis/calculus/cont_diff_def.lean Modified src/analysis/normed_space/multilinear.lean Modified src/linear_algebra/alternating.lean Modified src/topology/algebra/module/multilinear.lean - theorem continuous_multilinear_map.to_multilinear_map_inj + theorem continuous_multilinear_map.to_multilinear_map_injective 2023-04-08 15:29:56 36172d6 feat(analysis/inner_product_space/symmetric): Polarization for `is_R_or_C` (#18397) This PR contains * polarization identity for `is_R_or_C` for `T.is_symmetric` * `T.is_symmetric` implies `(∀ x, ⟪x, T x⟫ = 0) ↔ T = 0` ESTIMATED CHANGES Modified src/analysis/inner_product_space/symmetric.lean + theorem linear_map.is_symmetric.inner_map_eq_zero + theorem linear_map.is_symmetric.inner_map_polarization 2023-04-08 13:17:58 19cb375 chore(*): add mathlib4 synchronization comments (#18753) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_topology.simplex_category` * `analysis.hofer` * `analysis.normed.group.pointwise` * `analysis.specific_limits.basic` * `category_theory.idempotents.basic` * `category_theory.idempotents.functor_categories` * `category_theory.idempotents.functor_extension` * `category_theory.idempotents.karoubi` * `category_theory.idempotents.karoubi_karoubi` * `data.matrix.pequiv` * `data.nat.choose.multinomial` * `group_theory.perm.fin` * `linear_algebra.affine_space.combination` * `linear_algebra.finsupp_vector_space` * `linear_algebra.free_module.basic` * `linear_algebra.matrix.dot_product` * `linear_algebra.multilinear.basic` * `linear_algebra.multilinear.basis` * `linear_algebra.multilinear.tensor_product` * `linear_algebra.std_basis` * `linear_algebra.tensor_product_basis` * `ring_theory.mv_polynomial.basic` * `ring_theory.quotient_nilpotent` * `ring_theory.quotient_noetherian` * `ring_theory.simple_module` * `ring_theory.valuation.quotient` * `set_theory.zfc.basic` * `topology.algebra.filter_basis` * `topology.algebra.module.linear_pmap` * `topology.algebra.module.simple` * `topology.algebra.star_subalgebra` * `topology.algebra.uniform_field` * `topology.algebra.uniform_filter_basis` * `topology.metric_space.hausdorff_distance` ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean Modified src/analysis/hofer.lean Modified src/analysis/normed/group/pointwise.lean Modified src/analysis/specific_limits/basic.lean Modified src/category_theory/idempotents/basic.lean Modified src/category_theory/idempotents/functor_categories.lean Modified src/category_theory/idempotents/functor_extension.lean Modified src/category_theory/idempotents/karoubi.lean Modified src/category_theory/idempotents/karoubi_karoubi.lean Modified src/data/matrix/pequiv.lean Modified src/data/nat/choose/multinomial.lean Modified src/group_theory/perm/fin.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_module/basic.lean Modified src/linear_algebra/matrix/dot_product.lean Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/multilinear/basis.lean Modified src/linear_algebra/multilinear/tensor_product.lean Modified src/linear_algebra/std_basis.lean Modified src/linear_algebra/tensor_product_basis.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/quotient_nilpotent.lean Modified src/ring_theory/quotient_noetherian.lean Modified src/ring_theory/simple_module.lean Modified src/ring_theory/valuation/quotient.lean Modified src/set_theory/zfc/basic.lean Modified src/topology/algebra/filter_basis.lean Modified src/topology/algebra/module/linear_pmap.lean Modified src/topology/algebra/module/simple.lean Modified src/topology/algebra/star_subalgebra.lean Modified src/topology/algebra/uniform_field.lean Modified src/topology/algebra/uniform_filter_basis.lean Modified src/topology/metric_space/hausdorff_distance.lean 2023-04-08 13:17:57 8535b76 feat(linear_algebra/matrix/rank): generalize to rings (#18748) This addresses a TODO comment. To achieve this we generalize `submodule.finrank_le`, `submodule.finrank_quotient_le`, and `finrank_le_finrank_of_injective` from vector spaces to free modules, and add a new lemma `linear_map.finrank_range_le`. ESTIMATED CHANGES Modified src/data/matrix/rank.lean +/- theorem matrix.rank_le_card_height +/- theorem matrix.rank_le_card_width +/- theorem matrix.rank_le_height +/- theorem matrix.rank_le_width +/- theorem matrix.rank_mul_le +/- theorem matrix.rank_of_is_unit +/- theorem matrix.rank_one +/- theorem matrix.rank_unit +/- theorem matrix.rank_zero Modified src/linear_algebra/finite_dimensional.lean - theorem linear_map.finrank_le_finrank_of_injective - theorem submodule.finrank_le - theorem submodule.finrank_quotient_le Modified src/linear_algebra/finrank.lean + theorem finite_dimensional.finrank_le_finrank_of_rank_le_rank Modified src/linear_algebra/free_module/finite/rank.lean + theorem linear_map.finrank_le_finrank_of_injective + theorem linear_map.finrank_range_le + theorem submodule.finrank_le + theorem submodule.finrank_quotient_le 2023-04-08 11:36:43 2efd242 chore(category_theory): simps should not add hom lemmas (#18742) `@[simps]` should not be used to simplify the `hom` field of a category instance. Very little needs to be changed when removing it. However the problem in https://github.com/leanprover-community/mathlib4/pull/3244 with a proof by `simp` failing seems to be implicated by this problem. If we remove the `@[simps]` generated lemma for `Hom` there, the original proof works (although is extremely slow). ESTIMATED CHANGES Modified src/category_theory/category/basic.lean Modified src/category_theory/fin_category.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/sites/sheaf.lean 2023-04-08 07:53:36 3a2039a chore(linear_algebra/dimension): remove outdated comment (#18759) This used to be about `vector_space.dim`, but was caught up in the rename that fixed the naming inconsistency and is now nonsense. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean 2023-04-07 22:13:52 f29120f chore(order/rel_iso/basic): better `namespace` management (#18758) We remove a lot of `_root_` by simply closing and reopening a namespace. ESTIMATED CHANGES Modified src/order/rel_iso/basic.lean +/- theorem acc_lift_on₂'_iff +/- theorem acc_lift₂_iff +/- def quotient.mk_rel_hom +/- theorem well_founded_lift_on₂'_iff +/- theorem well_founded_lift₂_iff 2023-04-07 15:31:22 dc65937 feat(number_theory/pell): add API for solutions (#18626) This continues the devlopment of the theory of Pell's equation. We add some API lemmas for solutions, which will be needed for defining of the fundamental solution and proving its properties. See [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Proving.20Pell's.20equation.20is.20solvable/near/343270338). ESTIMATED CHANGES Modified src/number_theory/pell.lean - theorem pell.exists_pos_of_not_is_square + theorem pell.solution₁.eq_one_of_x_eq_one + theorem pell.solution₁.eq_one_or_neg_one_iff_y_eq_zero + theorem pell.solution₁.eq_zero_of_d_neg + theorem pell.solution₁.exists_nontrivial_of_not_is_square + theorem pell.solution₁.exists_pos_of_not_is_square + theorem pell.solution₁.exists_pos_variant + theorem pell.solution₁.sign_y_zpow_eq_sign_of_x_pos_of_y_pos + theorem pell.solution₁.x_mul_pos + theorem pell.solution₁.x_ne_zero + theorem pell.solution₁.x_pow_pos + theorem pell.solution₁.x_zpow_pos + theorem pell.solution₁.y_mul_pos + theorem pell.solution₁.y_ne_zero_of_one_lt_x + theorem pell.solution₁.y_pow_succ_pos 2023-04-07 10:00:47 9dba31d chore(set_theory/cardinal/basic): missing lemmas about `<`/`≤` and `lift c`/`↑n` (#18752) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.lift_le_nat_iff + theorem cardinal.lift_lt_nat_iff + theorem cardinal.nat_le_lift_iff + theorem cardinal.nat_lt_lift_iff 2023-04-06 17:41:52 5ec62c8 feat(linear_algebra/finrank): generalize finrank to ring in more places (#18716) This replaces `[division_ring K]` with the first of the following which compiles: * `[ring K]` * `[ring K] [nontrivial K]` * `[ring K] [strong_rank_condition K]` (implies the previous one via the non-instance `nontrivial_of_invariant_basis_number`) ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/category_theory/preadditive/schur.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finrank.lean +/- theorem finite_dimensional.nontrivial_of_finrank_eq_succ +/- theorem finite_dimensional.nontrivial_of_finrank_pos +/- theorem finrank_bot +/- theorem finrank_eq_one +/- theorem subalgebra.finrank_bot +/- theorem subalgebra.rank_bot 2023-04-06 14:44:40 e08a42b chore(set_theory/cardinal/basic): missing lemmas about `lift c < ℵ₀` and `ℵ₀ < lift c` (#18746) We already had the `le` versions `lift_le_aleph0` and `aleph0_le_lift`, this adds the `lt` ones `lift_lt_aleph0` and `aleph0_lt_lift`. This turns out to be useful for proving some results about `finrank`, as well as golfing some existing proofs. Since they're trivial, this adds the same lemmas about `continuum` too. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.aleph_0_lt_lift + theorem cardinal.lift_lt_aleph_0 Modified src/set_theory/cardinal/continuum.lean + theorem cardinal.continuum_le_lift + theorem cardinal.continuum_lt_lift + theorem cardinal.lift_le_continuum + theorem cardinal.lift_lt_continuum Modified src/set_theory/ordinal/arithmetic.lean 2023-04-06 12:45:35 67e606e chore(linear_algebra/dimension): fix lemma names (#18747) This fixes some lemma names which use `rank` but are about `finrank`: * `rank_sup_add_rank_inf_eq` → `submodule.rank_sup_add_rank_inf_eq` * `rank_add_le_rank_add_rank` → `submodule.rank_add_le_rank_add_rank` * `submodule.rank_sup_add_rank_inf_eq` → `submodule.finrank_sup_add_finrank_inf_eq` * `submodule.rank_add_le_rank_add_rank` → `submodule.finrank_add_le_finrank_add_finrank` ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/inner_product_space/projection.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dimension.lean - theorem rank_add_le_rank_add_rank - theorem rank_sup_add_rank_inf_eq + theorem submodule.rank_add_le_rank_add_rank + theorem submodule.rank_sup_add_rank_inf_eq Modified src/linear_algebra/finite_dimensional.lean + theorem submodule.finrank_add_le_finrank_add_finrank + theorem submodule.finrank_sup_add_finrank_inf_eq - theorem submodule.rank_add_le_rank_add_rank - theorem submodule.rank_sup_add_rank_inf_eq 2023-04-06 10:22:10 60da01b feat(number_theory/number_field/canonical_embedding): add canonical embedding (#17783) This PR defines the canonical embedding of a number field $K$ of signature $(r_1, r_2)$ into $\mathbb{R}^{r_1} × \mathbb{C}^{r_2}$ and prove various results about this embedding, including the fact that the image of the ring of integers of $K$ is discrete. ESTIMATED CHANGES Added src/number_theory/number_field/canonical_embedding.lean + theorem number_field.canonical_embedding.apply_at_complex_infinite_place + theorem number_field.canonical_embedding.apply_at_real_infinite_place + def number_field.canonical_embedding.equiv_integer_lattice + theorem number_field.canonical_embedding.integer_lattice.inter_ball_finite + def number_field.canonical_embedding.integer_lattice + theorem number_field.canonical_embedding.nnnorm_eq + theorem number_field.canonical_embedding.non_trivial_space + theorem number_field.canonical_embedding.norm_le_iff + theorem number_field.canonical_embedding.space_rank + def number_field.canonical_embedding + theorem number_field.canonical_embedding_injective Modified src/number_theory/number_field/embeddings.lean + theorem number_field.infinite_place.is_real.abs_embedding_apply + theorem number_field.infinite_place.is_real_or_is_complex + theorem number_field.infinite_place.not_is_complex_iff_is_real +/- theorem number_field.infinite_place.not_is_real_iff_is_complex 2023-04-06 08:23:25 5aa3c1d chore(linear_algebra/dimension): deduplicate lemmas (#18743) We have some lemmas in the `module.free` namespace which duplicate lemmas in the root namespace. This moves all the remaining `rank` lemmas in this namespace into the root namespace, and cleans up the overlapping lemmas this creates. The changes are: * `module.free.rank_eq_card_choose_basis_index`: unchanged but moved to an earlier file * `rank_prod` → `rank_prod'` (the non-universe polymorphic version) * `module.free.rank_prod` → `rank_prod` * none → `rank_finsupp` (new lemma) * `finsupp.rank_eq` → `rank_finsupp'` (the non-universe polymorphic version) * `module.free.rank_finsupp` → `rank_finsupp_self` * `module.free.rank_finsupp'` → `rank_finsupp_self'` (the non-universe polymorphic version) * `module.free.rank_pi_finite` → `rank_pi` (these were duplicates) * For everything else, `module.free.rank_*` → `rank_*` ESTIMATED CHANGES Modified src/field_theory/finite/polynomial.lean Modified src/linear_algebra/dimension.lean - theorem finsupp.rank_eq + theorem module.free.rank_eq_card_choose_basis_index +/- theorem rank_pi + theorem rank_prod' +/- theorem rank_prod Modified src/linear_algebra/free_module/finite/rank.lean Modified src/linear_algebra/free_module/rank.lean - theorem module.free.rank_direct_sum - theorem module.free.rank_eq_card_choose_basis_index - theorem module.free.rank_finsupp' - theorem module.free.rank_finsupp - theorem module.free.rank_matrix'' - theorem module.free.rank_matrix' - theorem module.free.rank_matrix - theorem module.free.rank_pi_finite - theorem module.free.rank_prod' - theorem module.free.rank_prod - theorem module.free.rank_tensor_product' - theorem module.free.rank_tensor_product + theorem rank_direct_sum + theorem rank_finsupp' + theorem rank_finsupp + theorem rank_finsupp_self' + theorem rank_finsupp_self + theorem rank_matrix'' + theorem rank_matrix' + theorem rank_matrix + theorem rank_tensor_product' + theorem rank_tensor_product 2023-04-06 01:33:55 75be6b6 chore(*): add mathlib4 synchronization comments (#18744) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.char_p.char_and_card` * `category_theory.abelian.basic` * `category_theory.grothendieck` * `category_theory.sites.sheaf` * `combinatorics.simple_graph.adj_matrix` * `combinatorics.simple_graph.inc_matrix` * `computability.ackermann` * `data.string.basic` * `group_theory.perm.cycle.type` * `order.category.Lat` * `order.category.LinOrd` * `order.category.NonemptyFinLinOrd` * `order.category.PartOrd` * `order.category.Preord` * `ring_theory.eisenstein_criterion` * `ring_theory.ideal.quotient_operations` * `topology.algebra.algebra` * `topology.algebra.infinite_sum.module` * `topology.instances.real_vector_space` * `topology.instances.triv_sq_zero_ext` ESTIMATED CHANGES Modified src/algebra/char_p/char_and_card.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/grothendieck.lean Modified src/category_theory/sites/sheaf.lean Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/combinatorics/simple_graph/inc_matrix.lean Modified src/computability/ackermann.lean Modified src/data/string/basic.lean Modified src/group_theory/perm/cycle/type.lean Modified src/order/category/Lat.lean Modified src/order/category/LinOrd.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/category/PartOrd.lean Modified src/order/category/Preord.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/ideal/quotient_operations.lean Modified src/topology/algebra/algebra.lean Modified src/topology/algebra/infinite_sum/module.lean Modified src/topology/instances/real_vector_space.lean Modified src/topology/instances/triv_sq_zero_ext.lean 2023-04-05 15:13:04 06a655b feat(data/list/to_finsupp): computable finsupp from list (#15161) via `list.nthd` On the way to computable list-based polynomials ESTIMATED CHANGES Added src/data/list/to_finsupp.lean + theorem list.coe_to_finsupp + def list.to_finsupp + theorem list.to_finsupp_apply + theorem list.to_finsupp_apply_le + theorem list.to_finsupp_apply_lt + theorem list.to_finsupp_concat_eq_to_finsupp_add_single + theorem list.to_finsupp_cons_apply_succ + theorem list.to_finsupp_cons_apply_zero + theorem list.to_finsupp_cons_eq_single_add_emb_domain + theorem list.to_finsupp_eq_sum_map_enum_single + theorem list.to_finsupp_nil + theorem list.to_finsupp_singleton + theorem list.to_finsupp_support Modified src/data/multiset/basic.lean - theorem multiset.pairwise_nil + theorem multiset.pairwise_zero 2023-04-05 13:19:54 55102fc chore(linear_algebra/matrix/adjugate): add missing `matrix.of` wrapper (#18736) ESTIMATED CHANGES Modified src/linear_algebra/matrix/adjugate.lean +/- def matrix.adjugate 2023-04-05 13:19:53 9c6816c chore(category_theory/monad/basic): remove some simp lemmas (#18727) This is a backport from mathlib4, where the simpNF (correctly) linter disapproves of these lemmas. Mostly this PR exists to verify that these are not needed in the simp set. https://github.com/leanprover-community/mathlib4/pull/2969 ESTIMATED CHANGES Modified src/category_theory/monad/basic.lean 2023-04-05 10:55:55 039a089 refactor(linear_algebra/dimension): use `rank` in lemma names instead of `dim` (#18741) The `dim` name is left from the previous name of the function, `vector_space.dim`. When that was merged with `module.rank` in #7322, we left renaming the existing lemmas as future work. This commit was made by replacing `(\b|(?<=_))dim(\b|(?=_))` with `rank` in the `dimension` and `finite_dimensional` files, and then manually fixing downstream breakages; it's important not to rename `power_basis.dim` at the same time! Deciding whether to move some of these to the `module` namespace is left as future work, the diff is already big enough. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/linear_recurrence.lean - theorem linear_recurrence.sol_space_dim + theorem linear_recurrence.sol_space_rank Modified src/algebra/quaternion.lean - theorem quaternion.dim_eq_four + theorem quaternion.rank_eq_four - theorem quaternion_algebra.dim_eq_four + theorem quaternion_algebra.rank_eq_four Modified src/analysis/inner_product_space/projection.lean Modified src/data/complex/module.lean - theorem complex.dim_real_complex + theorem complex.rank_real_complex +/- theorem complex.{u} - theorem dim_real_of_complex + theorem rank_real_of_complex Modified src/field_theory/adjoin.lean - theorem intermediate_field.bot_eq_top_of_dim_adjoin_eq_one + theorem intermediate_field.bot_eq_top_of_rank_adjoin_eq_one - theorem intermediate_field.dim_adjoin_eq_one_iff - theorem intermediate_field.dim_adjoin_simple_eq_one_iff - theorem intermediate_field.dim_bot - theorem intermediate_field.dim_eq_one_iff + theorem intermediate_field.rank_adjoin_eq_one_iff + theorem intermediate_field.rank_adjoin_simple_eq_one_iff + theorem intermediate_field.rank_bot + theorem intermediate_field.rank_eq_one_iff - theorem intermediate_field.subsingleton_of_dim_adjoin_eq_one + theorem intermediate_field.subsingleton_of_rank_adjoin_eq_one Modified src/field_theory/finite/polynomial.lean - theorem mv_polynomial.dim_R + theorem mv_polynomial.rank_R Modified src/field_theory/finiteness.lean - theorem is_noetherian.dim_lt_aleph_0 - theorem is_noetherian.iff_dim_lt_aleph_0 + theorem is_noetherian.iff_rank_lt_aleph_0 + theorem is_noetherian.rank_lt_aleph_0 Modified src/field_theory/fixed.lean - theorem fixed_points.dim_le_card + theorem fixed_points.rank_le_card Modified src/field_theory/intermediate_field.lean - theorem intermediate_field.dim_eq_dim_subalgebra + theorem intermediate_field.rank_eq_rank_subalgebra Modified src/field_theory/krull_topology.lean Modified src/field_theory/mv_polynomial.lean - theorem mv_polynomial.dim_mv_polynomial + theorem mv_polynomial.rank_mv_polynomial Modified src/field_theory/tower.lean - theorem dim_mul_dim' - theorem dim_mul_dim + theorem rank_mul_rank' + theorem rank_mul_rank Modified src/linear_algebra/affine_space/finite_dimensional.lean - theorem collinear_iff_dim_le_one + theorem collinear_iff_rank_le_one Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dimension.lean - theorem basis.finite_index_of_dim_lt_aleph_0 + theorem basis.finite_index_of_rank_lt_aleph_0 - theorem basis.finite_of_vector_space_index_of_dim_lt_aleph_0 + theorem basis.finite_of_vector_space_index_of_rank_lt_aleph_0 - theorem basis.mk_eq_dim'' - theorem basis.mk_eq_dim + theorem basis.mk_eq_rank'' + theorem basis.mk_eq_rank - theorem basis.mk_range_eq_dim + theorem basis.mk_range_eq_rank - theorem basis.nonempty_fintype_index_of_dim_lt_aleph_0 + theorem basis.nonempty_fintype_index_of_rank_lt_aleph_0 - def basis.of_dim_eq_zero - theorem basis.of_dim_eq_zero_apply + def basis.of_rank_eq_zero + theorem basis.of_rank_eq_zero_apply - theorem cardinal_le_dim_of_linear_independent' - theorem cardinal_le_dim_of_linear_independent + theorem cardinal_le_rank_of_linear_independent' + theorem cardinal_le_rank_of_linear_independent - theorem cardinal_lift_le_dim_of_linear_independent' + theorem cardinal_lift_le_rank_of_linear_independent' - theorem dim_add_dim_split - theorem dim_add_le_dim_add_dim - theorem dim_bot - theorem dim_eq_card_basis - theorem dim_eq_of_injective - theorem dim_eq_of_surjective - theorem dim_fin_fun - theorem dim_fun' - theorem dim_fun - theorem dim_fun_eq_lift_mul - theorem dim_le - theorem dim_le_of_submodule - theorem dim_le_one_iff - theorem dim_map_le - theorem dim_pi - theorem dim_pos - theorem dim_pos_iff_exists_ne_zero - theorem dim_pos_iff_nontrivial - theorem dim_prod - theorem dim_punit - theorem dim_quotient_add_dim - theorem dim_quotient_le - theorem dim_range_add_dim_ker - theorem dim_range_le - theorem dim_range_of_surjective - theorem dim_self - theorem dim_span - theorem dim_span_le - theorem dim_span_of_finset - theorem dim_span_set - theorem dim_submodule_le - theorem dim_submodule_le_one_iff' - theorem dim_submodule_le_one_iff - theorem dim_subsingleton - theorem dim_sup_add_dim_inf_eq - theorem dim_top - theorem dim_zero_iff - theorem dim_zero_iff_forall_zero - theorem exists_mem_ne_zero_of_dim_pos + theorem exists_mem_ne_zero_of_rank_pos - theorem finsupp.dim_eq + theorem finsupp.rank_eq - theorem le_dim_iff_exists_linear_independent - theorem le_dim_iff_exists_linear_independent_finset + theorem le_rank_iff_exists_linear_independent + theorem le_rank_iff_exists_linear_independent_finset - theorem lift_dim_map_le - theorem lift_dim_range_le + theorem lift_rank_map_le + theorem lift_rank_range_le - theorem linear_equiv.dim_eq - theorem linear_equiv.dim_map_eq - theorem linear_equiv.lift_dim_eq + theorem linear_equiv.lift_rank_eq - theorem linear_equiv.nonempty_equiv_iff_dim_eq - theorem linear_equiv.nonempty_equiv_iff_lift_dim_eq + theorem linear_equiv.nonempty_equiv_iff_lift_rank_eq + theorem linear_equiv.nonempty_equiv_iff_rank_eq - def linear_equiv.of_dim_eq - def linear_equiv.of_lift_dim_eq + def linear_equiv.of_lift_rank_eq + def linear_equiv.of_rank_eq + theorem linear_equiv.rank_eq + theorem linear_equiv.rank_map_eq - theorem linear_map.dim_le_of_injective - theorem linear_map.dim_le_of_surjective - theorem linear_map.lift_dim_le_of_injective + theorem linear_map.lift_rank_le_of_injective + theorem linear_map.rank_le_of_injective + theorem linear_map.rank_le_of_surjective - theorem nonempty_linear_equiv_of_dim_eq - theorem nonempty_linear_equiv_of_lift_dim_eq + theorem nonempty_linear_equiv_of_lift_rank_eq + theorem nonempty_linear_equiv_of_rank_eq + theorem rank_add_le_rank_add_rank + theorem rank_add_rank_split + theorem rank_bot + theorem rank_eq_card_basis + theorem rank_eq_of_injective + theorem rank_eq_of_surjective + theorem rank_fin_fun + theorem rank_fun' + theorem rank_fun + theorem rank_fun_eq_lift_mul + theorem rank_le + theorem rank_le_of_submodule + theorem rank_le_one_iff + theorem rank_map_le + theorem rank_pi + theorem rank_pos + theorem rank_pos_iff_exists_ne_zero + theorem rank_pos_iff_nontrivial + theorem rank_prod + theorem rank_punit + theorem rank_quotient_add_rank + theorem rank_quotient_le + theorem rank_range_add_rank_ker + theorem rank_range_le + theorem rank_range_of_surjective + theorem rank_self + theorem rank_span + theorem rank_span_le + theorem rank_span_of_finset + theorem rank_span_set + theorem rank_submodule_le + theorem rank_submodule_le_one_iff' + theorem rank_submodule_le_one_iff + theorem rank_subsingleton + theorem rank_sup_add_rank_inf_eq + theorem rank_top + theorem rank_zero_iff + theorem rank_zero_iff_forall_zero +/- theorem {m} Modified src/linear_algebra/dual.lean - theorem basis.dual_dim_eq + theorem basis.dual_rank_eq - theorem module.dual_dim_eq + theorem module.dual_rank_eq Modified src/linear_algebra/finite_dimensional.lean - theorem bot_eq_top_of_dim_eq_zero + theorem bot_eq_top_of_rank_eq_zero - theorem cardinal_mk_eq_cardinal_mk_field_pow_dim + theorem cardinal_mk_eq_cardinal_mk_field_pow_rank - theorem dim_eq_zero - theorem finite_dimensional.exists_nontrivial_relation_of_dim_lt_card + theorem finite_dimensional.exists_nontrivial_relation_of_rank_lt_card - theorem finite_dimensional.exists_nontrivial_relation_sum_zero_of_dim_succ_lt_card + theorem finite_dimensional.exists_nontrivial_relation_sum_zero_of_rank_succ_lt_card - theorem finite_dimensional.exists_relation_sum_zero_pos_coefficient_of_dim_succ_lt_card + theorem finite_dimensional.exists_relation_sum_zero_pos_coefficient_of_rank_succ_lt_card - theorem finite_dimensional.finrank_eq_dim + theorem finite_dimensional.finrank_eq_rank' - theorem finite_dimensional_of_dim_eq_nat - theorem finite_dimensional_of_dim_eq_one - theorem finite_dimensional_of_dim_eq_zero + theorem finite_dimensional_of_rank_eq_nat + theorem finite_dimensional_of_rank_eq_one + theorem finite_dimensional_of_rank_eq_zero - theorem finrank_eq_zero_of_dim_eq_zero + theorem finrank_eq_zero_of_rank_eq_zero + theorem rank_eq_zero - theorem subalgebra.bot_eq_top_iff_dim_eq_one + theorem subalgebra.bot_eq_top_iff_rank_eq_one - theorem subalgebra.dim_eq_one_iff - theorem subalgebra.eq_bot_of_dim_le_one + theorem subalgebra.eq_bot_of_rank_le_one + theorem subalgebra.rank_eq_one_iff - theorem submodule.dim_add_le_dim_add_dim - theorem submodule.dim_sup_add_dim_inf_eq + theorem submodule.rank_add_le_rank_add_rank + theorem submodule.rank_sup_add_rank_inf_eq Modified src/linear_algebra/finrank.lean - theorem finite_dimensional.dim_lt_of_finrank_lt - theorem finite_dimensional.finrank_eq_of_dim_eq + theorem finite_dimensional.finrank_eq_of_rank_eq - theorem finite_dimensional.finrank_le_of_dim_le + theorem finite_dimensional.finrank_le_of_rank_le - theorem finite_dimensional.finrank_lt_of_dim_lt + theorem finite_dimensional.finrank_lt_of_rank_lt + theorem finite_dimensional.rank_lt_of_finrank_lt - theorem subalgebra.dim_bot - theorem subalgebra.dim_to_submodule - theorem subalgebra.dim_top + theorem subalgebra.rank_bot + theorem subalgebra.rank_to_submodule + theorem subalgebra.rank_top - theorem subalgebra_top_dim_eq_submodule_top_dim + theorem subalgebra_top_rank_eq_submodule_top_rank Modified src/linear_algebra/free_algebra.lean - theorem free_algebra.dim_eq + theorem free_algebra.rank_eq Modified src/linear_algebra/free_module/finite/matrix.lean Modified src/linear_algebra/free_module/finite/rank.lean Modified src/linear_algebra/free_module/rank.lean Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/number_theory/ramification_inertia.lean - theorem ideal.dim_pow_quot - theorem ideal.dim_pow_quot_aux - theorem ideal.dim_prime_pow_ramification_idx + theorem ideal.rank_pow_quot + theorem ideal.rank_pow_quot_aux + theorem ideal.rank_prime_pow_ramification_idx 2023-04-05 10:55:54 0ac3057 feat(field_theory/is_alg_closed/algebraic_closure): add instances normal and is_galois for algebraic closure (#18730) ESTIMATED CHANGES Modified src/field_theory/galois.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/field_theory/is_alg_closed/basic.lean 2023-04-05 10:55:53 b2a5f0d feat(analysis/schwartz_space): construction of continuous linear maps (#18651) This PR has two parts: (a) create two definitions to construct continuous linear maps (the point being that one wants to reuse the boundedness estimate for both the well-posedness and the continuity) and (b) drastically reduce the boilerplate for `schwartz_map.fderiv_clm`. ESTIMATED CHANGES Modified src/analysis/schwartz_space.lean - theorem schwartz_map.coe_fderiv - def schwartz_map.fderiv - theorem schwartz_map.fderiv_apply +/- theorem schwartz_map.fderiv_clm_apply - def schwartz_map.fderiv_lm - theorem schwartz_map.fderiv_lm_apply + def schwartz_map.mk_clm + def schwartz_map.mk_lm 2023-04-05 07:48:13 e8638a0 feat(algebra/divisibility/basic): Dot notation aliases (#18698) A few convenience shortcuts for `dvd` along with some simple `nat` lemmas. Also * Drop `neg_dvd_of_dvd`/`dvd_of_neg_dvd`/`dvd_neg_of_dvd`/`dvd_of_dvd_neg` in favor of the aforementioned shortcuts. * Remove explicit arguments to `dvd_neg`/`neg_dvd`. * Drop `int.of_nat_dvd_of_dvd_nat_abs`/`int.dvd_nat_abs_of_of_nat_dvd` because they are the two directions of `int.coe_nat_dvd_left`. * Move `group_with_zero.to_cancel_monoid_with_zero` from `algebra.group_with_zero.units.basic` back to `algebra.group_with_zero.basic`. It was erroneously moved during the Great Splits. ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo2011_q5.lean Modified src/algebra/divisibility/basic.lean + theorem dvd_of_eq Modified src/algebra/euclidean_domain/basic.lean Modified src/algebra/group/units.lean + theorem eq_one_of_mul_left + theorem eq_one_of_mul_right + theorem mul_eq_one Modified src/algebra/group_with_zero/basic.lean + theorem left_eq_mul₀ + theorem mul_eq_left₀ + theorem mul_eq_right₀ + theorem right_eq_mul₀ Modified src/algebra/group_with_zero/divisibility.lean + theorem dvd_antisymm' + theorem dvd_antisymm + theorem eq_of_forall_dvd' + theorem eq_of_forall_dvd Modified src/algebra/order/monoid/canonical/defs.lean Modified src/algebra/ring/boolean_ring.lean + theorem add_eq_zero' - theorem add_eq_zero Modified src/algebra/ring/divisibility.lean - theorem dvd_add_iff_left - theorem dvd_add_iff_right +/- theorem dvd_add_right +/- theorem dvd_iff_dvd_of_dvd_sub +/- theorem dvd_neg - theorem dvd_neg_of_dvd - theorem dvd_of_dvd_neg - theorem dvd_of_neg_dvd + theorem dvd_sub_left + theorem dvd_sub_right + theorem dvd_sub_self_left + theorem dvd_sub_self_right +/- theorem neg_dvd - theorem neg_dvd_of_dvd +/- theorem two_dvd_bit1 Modified src/data/int/dvd/basic.lean - theorem int.dvd_nat_abs_of_of_nat_dvd - theorem int.of_nat_dvd_of_dvd_nat_abs Modified src/data/int/dvd/pow.lean Modified src/data/int/order/basic.lean Modified src/data/nat/gcd/basic.lean + theorem nat.lcm_pos Modified src/data/nat/order/basic.lean - theorem nat.mul_eq_one_iff Modified src/data/nat/order/lemmas.lean Modified src/group_theory/perm/cycle/basic.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/divisors.lean Modified src/number_theory/multiplicity.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/number_theory/zsqrtd/gaussian_int.lean Modified src/ring_theory/multiplicity.lean Modified src/tactic/omega/eq_elim.lean 2023-04-05 05:31:24 d64d67d chore(*): add mathlib4 synchronization comments (#18726) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebraic_topology.dold_kan.compatibility` * `category_theory.shift.basic` * `category_theory.sites.sheaf_of_types` * `category_theory.triangulated.basic` * `combinatorics.additive.e_transform` * `computability.regular_expressions` * `data.fin.tuple.reflection` * `data.finset.interval` * `data.list.intervals` * `data.matrix.basis` * `data.matrix.block` * `data.matrix.char_p` * `data.matrix.dual_number` * `data.matrix.hadamard` * `data.mv_polynomial.expand` * `data.mv_polynomial.monad` * `linear_algebra.isomorphisms` * `linear_algebra.matrix.orthogonal` * `linear_algebra.matrix.symmetric` * `linear_algebra.matrix.trace` * `logic.hydra` * `ring_theory.finite_type` * `ring_theory.rees_algebra` * `ring_theory.zmod` * `topology.algebra.module.basic` * `topology.uniform_space.matrix` ESTIMATED CHANGES Modified src/algebraic_topology/dold_kan/compatibility.lean Modified src/category_theory/shift/basic.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/triangulated/basic.lean Modified src/combinatorics/additive/e_transform.lean Modified src/computability/regular_expressions.lean Modified src/data/fin/tuple/reflection.lean Modified src/data/finset/interval.lean Modified src/data/list/intervals.lean Modified src/data/matrix/basis.lean Modified src/data/matrix/block.lean Modified src/data/matrix/char_p.lean Modified src/data/matrix/dual_number.lean Modified src/data/matrix/hadamard.lean Modified src/data/mv_polynomial/expand.lean Modified src/data/mv_polynomial/monad.lean Modified src/linear_algebra/isomorphisms.lean Modified src/linear_algebra/matrix/orthogonal.lean Modified src/linear_algebra/matrix/symmetric.lean Modified src/linear_algebra/matrix/trace.lean Modified src/logic/hydra.lean Modified src/ring_theory/finite_type.lean Modified src/ring_theory/rees_algebra.lean Modified src/ring_theory/zmod.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/uniform_space/matrix.lean 2023-04-04 22:00:41 3b1890e chore(topology/algebra/group): generalise instances (#15171) Using the generalisation linter make the following generalisations in `topology.algebra.group.basic`. Note that topological spaces that are groups with continuous multiplication but noncontinuous inverse do exist at least when the space is noncompact (they are known as paratopological spaces) I do not claim that they are used in mathlib though ;). In summary we generalise: - `tendsto_inv_nhds_within_Ioi` and all variants to only require continuous inverse rather that topological group - the `continuous_inv` operation on the multiplicative opposite to only require a `has_inv`, rather than a group - `topological_group.t1_space` from topological groups to only continuous mul - `topological_group.regular_space` (and `t2_space`) from assuming the base is t1 to just topological group. - `compact_open_separated_mul_right/left`, from topological group to `mul_one_class` with a continuous mul - various `quotient_group.has_continuous_const_smul` type lemmas to continuous_mul - `tsum_sigma`/`tsum_prod` from t1 to t0 and their additivised versions. ESTIMATED CHANGES Modified src/topology/algebra/group/basic.lean +/- theorem topological_group.t2_space +/- theorem topological_group.t3_space Modified src/topology/algebra/infinite_sum/basic.lean +/- theorem tsum_comm +/- theorem tsum_prod +/- theorem tsum_sigma 2023-04-04 16:43:38 1a4df69 feat(analysis/inner_product_space/basic): orthogonal submodules (#18705) This adds `submodule.is_ortho U V`, with notation `U ⟂ V`, as a shorthand for `U ≤ Vᗮ`. To make this useful, this also adds about 30 lemmas of basic API. Some downstream proofs are golfed using the new API. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/analysis/inner_product_space/orthogonal.lean + theorem bilin_form_of_real_inner_orthogonal + theorem orthogonal_family.is_ortho + theorem orthogonal_family_iff_pairwise + theorem submodule.is_ortho.comap + theorem submodule.is_ortho.comap_iff + theorem submodule.is_ortho.disjoint + theorem submodule.is_ortho.ge + theorem submodule.is_ortho.inner_eq + theorem submodule.is_ortho.le + theorem submodule.is_ortho.map + theorem submodule.is_ortho.map_iff + theorem submodule.is_ortho.mono + theorem submodule.is_ortho.mono_left + theorem submodule.is_ortho.mono_right + theorem submodule.is_ortho.symm + def submodule.is_ortho + theorem submodule.is_ortho_Sup_left + theorem submodule.is_ortho_Sup_right + theorem submodule.is_ortho_bot_left + theorem submodule.is_ortho_bot_right + theorem submodule.is_ortho_comm + theorem submodule.is_ortho_iff_inner_eq + theorem submodule.is_ortho_iff_le + theorem submodule.is_ortho_orthogonal_left + theorem submodule.is_ortho_orthogonal_right + theorem submodule.is_ortho_self + theorem submodule.is_ortho_span + theorem submodule.is_ortho_sup_left + theorem submodule.is_ortho_sup_right + theorem submodule.is_ortho_supr_left + theorem submodule.is_ortho_supr_right + theorem submodule.is_ortho_top_left + theorem submodule.is_ortho_top_right + theorem submodule.symmetric_is_ortho Modified src/analysis/inner_product_space/projection.lean + theorem orthogonal_projection_comp_subtypeL_eq_zero_iff + theorem submodule.is_ortho.orthogonal_projection_comp_subtypeL Modified src/analysis/inner_product_space/spectrum.lean Modified src/geometry/euclidean/monge_point.lean + theorem affine.simplex.vector_span_is_ortho_altitude_direction - theorem affine.simplex.vector_span_le_altitude_direction_orthogonal 2023-04-04 13:35:11 d524d0a feat(analysis/calculus/iterated_deriv): equality of norms of iterated derivative (#18728) ESTIMATED CHANGES Modified src/analysis/calculus/iterated_deriv.lean + theorem norm_iterated_fderiv_eq_norm_iterated_deriv + theorem norm_iterated_fderiv_within_eq_norm_iterated_deriv_within 2023-04-04 11:37:57 be2ac64 chore(linear_algebra/dimension): rename `rank` to `linear_map.rank` (#18734) It's a bit weird having `rank` in the root namespace, defined in terms of `module.rank` which isn't. This moves all the lemmas into a single block at the end of the file, as they were previously spread through the file. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/normed_space/finite_dimension.lean +/- theorem is_open_set_of_nat_le_rank Modified src/linear_algebra/dimension.lean - theorem le_rank_iff_exists_linear_independent - theorem le_rank_iff_exists_linear_independent_finset + theorem linear_map.le_rank_iff_exists_linear_independent + theorem linear_map.le_rank_iff_exists_linear_independent_finset + def linear_map.rank + theorem linear_map.rank_add_le + theorem linear_map.rank_comp_le1 + theorem linear_map.rank_comp_le2 + theorem linear_map.rank_finset_sum_le + theorem linear_map.rank_le_domain + theorem linear_map.rank_le_range + theorem linear_map.rank_zero - def rank - theorem rank_add_le - theorem rank_comp_le1 - theorem rank_comp_le2 - theorem rank_finset_sum_le - theorem rank_le_domain - theorem rank_le_range - theorem rank_zero 2023-04-04 11:37:56 4cf7ca0 chore(linear_algebra/free_module/finite/rank): move lemmas from `module.free` to `finite_dimensional` (#18733) The lemmas about finite-dimensional spaces are currently scattered between namespaces. This commit mostly addresses the confusion by renaming all the `module.free.finrank_*` lemmas to `finite_dimensional.finrank_*`. This rename makes it apparent that `finrank_eq_dim` and `finrank_eq_rank` are duplicates; though it seems that for performances reasons it's still useful in one or two places to keep both. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/naming.3A.20finrank.20and.20rank.20lemmas/near/346701602) ESTIMATED CHANGES Modified src/data/matrix/rank.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/free_module/finite/rank.lean + theorem finite_dimensional.finrank_direct_sum + theorem finite_dimensional.finrank_eq_card_choose_basis_index + theorem finite_dimensional.finrank_eq_rank + theorem finite_dimensional.finrank_finsupp + theorem finite_dimensional.finrank_matrix + theorem finite_dimensional.finrank_pi + theorem finite_dimensional.finrank_pi_fintype + theorem finite_dimensional.finrank_prod + theorem finite_dimensional.finrank_tensor_product + theorem finite_dimensional.rank_lt_aleph_0 - theorem module.free.finrank_direct_sum - theorem module.free.finrank_eq_card_choose_basis_index - theorem module.free.finrank_eq_rank - theorem module.free.finrank_finsupp - theorem module.free.finrank_matrix - theorem module.free.finrank_pi - theorem module.free.finrank_pi_fintype - theorem module.free.finrank_prod - theorem module.free.finrank_tensor_product - theorem module.free.rank_lt_aleph_0 Modified src/linear_algebra/trace.lean Modified src/number_theory/ramification_inertia.lean Modified src/ring_theory/dedekind_domain/integral_closure.lean 2023-04-04 09:42:43 0ce0750 chore(linear_algebra/finite_dimensional): generalize from Type to Sort (#18723) The replacement of `fintype` with `finite` means there's no longer a need to handle these cases (added in #12877) separately. I verified that `{ι : Sort*}` is not being inferred as `{ι : Sort (u + 1)}`. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean 2023-04-04 07:41:57 7aac545 chore(linear_algebra/dimension): remove unecessary `nontrivial` argument (#18725) This is implied by another hypothesis via `nontrivial_of_invariant_basis_number` ESTIMATED CHANGES Modified src/algebra/linear_recurrence.lean Modified src/linear_algebra/dimension.lean +/- theorem dim_fin_fun +/- theorem dim_fun' +/- theorem dim_fun +/- theorem dim_fun_eq_lift_mul +/- theorem dim_pi 2023-04-04 06:24:46 08a4542 feat(measure_theory/function): Functions locally integrable on a set (#18673) This PR adds a definition for local integrability of a function on a set (a relative version of the existing "locally integrable"), and proves some elementary properties of this definition (in particular, functions continuous on `s` are locally integrable on `s`). ESTIMATED CHANGES Modified src/measure_theory/function/locally_integrable.lean + theorem continuous_on.locally_integrable_on - theorem is_compact.integrable_on_of_nhds_within + theorem measure_theory.integrable_on.continuous_on_smul + theorem measure_theory.integrable_on.locally_integrable_on + theorem measure_theory.integrable_on.smul_continuous_on + theorem measure_theory.locally_integrable.locally_integrable_on + theorem measure_theory.locally_integrable_on.ae_strongly_measurable + theorem measure_theory.locally_integrable_on.continuous_on_mul + theorem measure_theory.locally_integrable_on.continuous_on_smul + theorem measure_theory.locally_integrable_on.integrable_on_compact_subset + theorem measure_theory.locally_integrable_on.integrable_on_is_compact + theorem measure_theory.locally_integrable_on.mono + theorem measure_theory.locally_integrable_on.mul_continuous_on + theorem measure_theory.locally_integrable_on.norm + theorem measure_theory.locally_integrable_on.smul_continuous_on + def measure_theory.locally_integrable_on + theorem measure_theory.locally_integrable_on_const + theorem measure_theory.locally_integrable_on_iff + theorem measure_theory.locally_integrable_on_iff_locally_integrable_restrict + theorem measure_theory.locally_integrable_on_of_locally_integrable_restrict + theorem measure_theory.locally_integrable_on_univ Modified src/measure_theory/integral/integrable_on.lean - theorem measure_theory.integrable.integrable_on' - theorem measure_theory.integrable_on.congr_fun' + theorem measure_theory.integrable_on.congr_fun_ae + theorem measure_theory.integrable_on_congr_fun + theorem measure_theory.integrable_on_congr_fun_ae Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/layercake.lean Modified src/measure_theory/integral/set_integral.lean 2023-04-03 20:45:06 e655e4e feat(algebra/group_power/lemmas): Induction principle for powers (#18668) A property holds for all powers of `g` if it is holds for `1` and is preserved under multiplication and division by `g`. Also rename `subgroup.zpowers_subset`/`add_subgroup.zmultiples_subset` to `subgroup.zpowers_le_of_mem`/`add_subgroup.zmultiples_le_of_mem` because there is no `⊆` in the statement. The motivation is the Cauchy-Davenport theorem: https://github.com/leanprover-community/mathlib/blob/321b67021163ac504c6cfa35d5678a47b357869d/src/combinatorics/additive/cauchy_davenport.lean#L176-L181 ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem zpow_induction_left + theorem zpow_induction_right Modified src/group_theory/subgroup/pointwise.lean +/- theorem subgroup.closure_induction_left +/- theorem subgroup.closure_induction_right Modified src/group_theory/subgroup/zpowers.lean + theorem subgroup.coe_zpowers + theorem subgroup.zpowers_ne_bot - theorem subgroup.zpowers_subset Modified src/group_theory/submonoid/membership.lean + theorem submonoid.coe_powers Modified src/ring_theory/int/basic.lean Modified src/ring_theory/roots_of_unity.lean 2023-04-03 16:47:49 3cacc94 feat(linear_algebra/dimension): free generalizations (#18722) Generalizes many results about `module.rank` from `[division_ring K]` to `[ring K] [strong_rank_condition K] [module.free K V]`. Some lemmas have been moved around in the file to make use of existing `variables` groupings. There are some lemmas about division rings that I wasn't able to weaken the assumptions on. I'll make the corresponding generalizations to `finrank` in a follow-up PR. ESTIMATED CHANGES Modified src/algebra/linear_recurrence.lean Modified src/linear_algebra/dimension.lean +/- theorem dim_fin_fun +/- theorem dim_fun' +/- theorem dim_fun +/- theorem dim_fun_eq_lift_mul +/- theorem dim_pi +/- theorem exists_mem_ne_zero_of_dim_pos +/- theorem nonempty_linear_equiv_of_dim_eq 2023-04-03 13:33:50 00d163e feat(ring_theory/zmod): Criterion for `zmod` to be a reduced ring (#16998) I couldn't find a good place for this without adding some imports, so a new file seemed appropriate. ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem int.squarefree_coe_nat + theorem int.squarefree_nat_abs Modified src/data/int/basic.lean + theorem int.nat_abs_surjective Added src/ring_theory/zmod.lean + theorem is_reduced_zmod 2023-04-03 10:26:19 5962838 refactor(linear_algebra): make `module.free` available inside `linear_algebra/dimension` (#18717) Many of the results here should generalize from `division_ring K` to `module.free K V`, though this PR doesn't bother itself with making them. This PR just flips around the imports and moves the lemmas that can't stay in the old home, and makes no attempt to actually make this generalization. This also removes some duplicates: * `lemma equiv_of_dim_eq_lift_dim` duplicates `nonempty_linear_equiv_of_lift_dim_eq` * `def equiv_of_dim_eq_dim` duplicates `linear_equiv.of_dim_eq` A few downstream files now need to directly import `linear_algebra.dimension`, which previously was implied transitively. ESTIMATED CHANGES Modified src/field_theory/mv_polynomial.lean Modified src/linear_algebra/dimension.lean + def fin_dim_vectorspace_equiv + theorem finsupp.dim_eq Modified src/linear_algebra/finsupp_vector_space.lean - def equiv_of_dim_eq_dim - theorem equiv_of_dim_eq_lift_dim - def fin_dim_vectorspace_equiv - theorem finsupp.dim_eq Modified src/linear_algebra/free_algebra.lean Modified src/linear_algebra/free_module/finite/basic.lean Modified src/linear_algebra/free_module/rank.lean 2023-04-03 08:02:26 7c2ce0c refactor(set_theory/cardinal/basic): redefine `cardinal.is_limit` in terms of `is_succ_limit` (#18523) We redefine `cardinal.is_limit x` as `x ≠ 0 ∧ is_succ_limit x`. This will allow us to make use of the extensive `is_succ_limit` API in the future. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.is_limit.aleph_0_le + theorem cardinal.is_limit.succ_lt + def cardinal.is_limit + theorem cardinal.is_limit_aleph_0 + theorem cardinal.is_succ_limit_aleph_0 + theorem cardinal.is_succ_limit_zero Modified src/set_theory/cardinal/cofinality.lean - theorem cardinal.is_limit.aleph_0_le - theorem cardinal.is_limit.ne_zero - theorem cardinal.is_limit.succ_lt - def cardinal.is_limit - theorem cardinal.is_limit_aleph_0 +/- theorem cardinal.is_strong_limit_beth Modified src/set_theory/cardinal/ordinal.lean +/- theorem cardinal.aleph'_limit +/- theorem cardinal.aleph_limit +/- theorem cardinal.beth_limit +/- theorem cardinal.ord_aleph_is_limit 2023-04-03 05:43:55 94eaaaa chore(*): add mathlib4 synchronization comments (#18721) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `category_theory.monad.kleisli` * `data.matrix.basic` * `ring_theory.adjoin.tower` ESTIMATED CHANGES Modified src/category_theory/monad/kleisli.lean Modified src/data/matrix/basic.lean Modified src/ring_theory/adjoin/tower.lean 2023-04-02 23:06:01 47a1a73 feat(data/{int,nat}/modeq): `a/c ≡ b/c mod m/c → a ≡ b mod m` (#18666) Also prove `-a ≡ -b [ZMOD n] ↔ a ≡ b [ZMOD n]`, `a ≡ b [ZMOD -n] ↔ a ≡ b [ZMOD n]`, generalise `int.modeq.mul_left'`/`int.modeq.mul_right'`, and rename * `int.gcd_pos_of_non_zero_left` → `int.gcd_pos_of_ne_zero_left` * `int.gcd_pos_of_non_zero_right` → `int.gcd_pos_of_ne_zero_right` * `eq_iff_modeq_int`, `char_p.int_coe_eq_int_coe_iff` → `char_p.int_cast_eq_int_cast` (they were duplicates) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem char_p.int_cast_eq_int_cast - theorem char_p.int_coe_eq_int_coe_iff + theorem char_p.nat_cast_eq_nat_cast - theorem eq_iff_modeq_int Modified src/algebra/ring/divisibility.lean + theorem dvd_sub_comm Modified src/data/int/gcd.lean + theorem int.gcd_pos_of_ne_zero_left + theorem int.gcd_pos_of_ne_zero_right - theorem int.gcd_pos_of_non_zero_left - theorem int.gcd_pos_of_non_zero_right Modified src/data/int/modeq.lean + theorem int.add_modeq_left + theorem int.add_modeq_right + theorem int.modeq.cancel_left_div_gcd + theorem int.modeq.cancel_right_div_gcd + theorem int.modeq.of_div + theorem int.modeq_comm + theorem int.modeq_neg + theorem int.modeq_zero_iff + theorem int.neg_modeq_neg Modified src/data/nat/modeq.lean + theorem nat.modeq.of_div Modified src/data/nat/order/lemmas.lean + theorem nat.le_of_lt_add_of_dvd Modified src/data/zmod/basic.lean 2023-04-02 19:51:20 31ca6f9 chore(*): add mathlib4 synchronization comments (#18662) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.preadditive` * `algebra.category.Group.zero` * `algebra.char_p.quotient` * `algebra.cubic_discriminant` * `algebra.gcd_monoid.div` * `algebra.monoid_algebra.division` * `algebra.star.chsh` * `analysis.convex.basic` * `analysis.convex.extreme` * `analysis.convex.hull` * `analysis.convex.strict` * `category_theory.adjunction.opposites` * `category_theory.category.Twop` * `category_theory.elements` * `category_theory.glue_data` * `category_theory.localization.opposite` * `category_theory.localization.predicate` * `category_theory.monoidal.discrete` * `category_theory.monoidal.linear` * `category_theory.monoidal.transport` * `category_theory.sites.pretopology` * `category_theory.sites.spaces` * `combinatorics.derangements.finite` * `combinatorics.simple_graph.matching` * `computability.primrec` * `data.mllist` * `data.mv_polynomial.cardinal` * `data.mv_polynomial.division` * `data.nat.choose.factorization` * `data.nat.factorization.basic` * `data.nat.factorization.prime_pow` * `data.nat.totient` * `data.polynomial.degree.card_pow_degree` * `data.polynomial.mirror` * `data.polynomial.partial_fractions` * `data.polynomial.splits` * `data.set.list` * `data.set.pairwise.lattice` * `linear_algebra.affine_space.midpoint_zero` * `linear_algebra.affine_space.ordered` * `linear_algebra.affine_space.pointwise` * `linear_algebra.direct_sum.finsupp` * `linear_algebra.direct_sum.tensor_product` * `model_theory.basic` * `number_theory.lucas_primality` * `order.upper_lower.locally_finite` * `representation_theory.maschke` * `ring_theory.adjoin.fg` * `ring_theory.localization.module` * `ring_theory.mv_polynomial.weighted_homogeneous` * `ring_theory.polynomial.basic` * `ring_theory.polynomial.vieta` * `topology.algebra.polynomial` ESTIMATED CHANGES Modified src/algebra/category/Group/preadditive.lean Modified src/algebra/category/Group/zero.lean Modified src/algebra/char_p/quotient.lean Modified src/algebra/cubic_discriminant.lean Modified src/algebra/gcd_monoid/div.lean Modified src/algebra/monoid_algebra/division.lean Modified src/algebra/star/chsh.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/hull.lean Modified src/analysis/convex/strict.lean Modified src/category_theory/adjunction/opposites.lean Modified src/category_theory/category/Twop.lean Modified src/category_theory/elements.lean Modified src/category_theory/glue_data.lean Modified src/category_theory/localization/opposite.lean Modified src/category_theory/localization/predicate.lean Modified src/category_theory/monoidal/discrete.lean Modified src/category_theory/monoidal/linear.lean Modified src/category_theory/monoidal/transport.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/spaces.lean Modified src/combinatorics/derangements/finite.lean Modified src/combinatorics/simple_graph/matching.lean Modified src/computability/primrec.lean Modified src/data/mllist.lean Modified src/data/mv_polynomial/cardinal.lean Modified src/data/mv_polynomial/division.lean Modified src/data/nat/choose/factorization.lean Modified src/data/nat/factorization/basic.lean Modified src/data/nat/factorization/prime_pow.lean Modified src/data/nat/totient.lean Modified src/data/polynomial/degree/card_pow_degree.lean Modified src/data/polynomial/mirror.lean Modified src/data/polynomial/partial_fractions.lean Modified src/data/polynomial/splits.lean Modified src/data/set/list.lean Modified src/data/set/pairwise/lattice.lean Modified src/linear_algebra/affine_space/midpoint_zero.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/linear_algebra/affine_space/pointwise.lean Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/direct_sum/tensor_product.lean Modified src/model_theory/basic.lean Modified src/number_theory/lucas_primality.lean Modified src/order/upper_lower/locally_finite.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/adjoin/fg.lean Modified src/ring_theory/localization/module.lean Modified src/ring_theory/mv_polynomial/weighted_homogeneous.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/topology/algebra/polynomial.lean 2023-04-02 18:44:57 d95bef0 feat(data/matrix/reflection): lemmas for arbitrary concrete matrices, proved via reflection (#18711) Split from #15738. This contains no meta code, so should be straightforward to port to mathlib4. ESTIMATED CHANGES Added src/data/fin/tuple/reflection.lean + def fin_vec.eta_expand + theorem fin_vec.eta_expand_eq + theorem fin_vec.exists_iff + theorem fin_vec.forall_iff + def fin_vec.map + theorem fin_vec.map_eq + def fin_vec.seq + theorem fin_vec.seq_eq + def fin_vec.sum + theorem fin_vec.sum_eq + def fin_vec.«exists» + def fin_vec.«forall» Added src/data/matrix/reflection.lean + def matrix.dot_productᵣ + theorem matrix.dot_productᵣ_eq + def matrix.eta_expand + theorem matrix.eta_expand_eq + theorem matrix.exists_iff + theorem matrix.forall_iff + def matrix.mulᵣ + theorem matrix.mulᵣ_eq + def matrix.transposeᵣ + theorem matrix.transposeᵣ_eq + def matrix.«exists» + def matrix.«forall» Added test/matrix_reflection.lean 2023-04-02 18:44:55 e5820f6 chore(algebra/ring_quot): link ring_quot.rel with ring_con_gen (#17892) It's not clear to me whether it's worth keeping `ring_quot.rel r` around, or if it would be better to replace it entirely with `ring_con_gen`. ESTIMATED CHANGES Modified src/algebra/ring_quot.lean + theorem ring_con.coe_algebra_map + theorem ring_quot.eqv_gen_rel_eq + def ring_quot.ring_con 2023-04-02 16:48:25 500ccb1 chore(linear_algebra/dimension): remove a nontriviality assumption (#18715) `dim_pos` does not need `nontrivial R`. Also adds a new lemma that demonstrates why the assumption is still needed on some later results. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean +/- theorem dim_pos + theorem dim_subsingleton 2023-04-02 14:57:21 5f6e827 chore(measure_theory/measure/doubling): rename `is_doubling_measure` to `is_unif_loc_doubling_measure` (#18709) With thanks to Jireh for highlighting our non-standard terminology. See also [Zulip conversation](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/definition.20of.20doubling.20measures). ESTIMATED CHANGES Modified src/analysis/calculus/monotone.lean Modified src/dynamics/ergodic/add_circle.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/density_theorem.lean - theorem is_doubling_measure.ae_tendsto_average - theorem is_doubling_measure.ae_tendsto_average_norm_sub - theorem is_doubling_measure.ae_tendsto_measure_inter_div - theorem is_doubling_measure.closed_ball_mem_vitali_family_of_dist_le_mul - theorem is_doubling_measure.tendsto_closed_ball_filter_at - def is_doubling_measure.vitali_family + theorem is_unif_loc_doubling_measure.ae_tendsto_average + theorem is_unif_loc_doubling_measure.ae_tendsto_average_norm_sub + theorem is_unif_loc_doubling_measure.ae_tendsto_measure_inter_div + theorem is_unif_loc_doubling_measure.closed_ball_mem_vitali_family_of_dist_le_mul + theorem is_unif_loc_doubling_measure.tendsto_closed_ball_filter_at + def is_unif_loc_doubling_measure.vitali_family Modified src/measure_theory/covering/liminf_limsup.lean Modified src/measure_theory/covering/one_dim.lean Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/measure/doubling.lean - def is_doubling_measure.doubling_constant - theorem is_doubling_measure.eventually_measure_le_scaling_constant_mul' - theorem is_doubling_measure.eventually_measure_le_scaling_constant_mul - theorem is_doubling_measure.eventually_measure_mul_le_scaling_constant_of_mul - theorem is_doubling_measure.exists_eventually_forall_measure_closed_ball_le_mul - theorem is_doubling_measure.exists_measure_closed_ball_le_mul' - theorem is_doubling_measure.measure_mul_le_scaling_constant_of_mul - theorem is_doubling_measure.one_le_scaling_constant_of - def is_doubling_measure.scaling_constant_of - def is_doubling_measure.scaling_scale_of - theorem is_doubling_measure.scaling_scale_of_pos + def is_unif_loc_doubling_measure.doubling_constant + theorem is_unif_loc_doubling_measure.eventually_measure_le_scaling_constant_mul' + theorem is_unif_loc_doubling_measure.eventually_measure_le_scaling_constant_mul + theorem is_unif_loc_doubling_measure.eventually_measure_mul_le_scaling_constant_of_mul + theorem is_unif_loc_doubling_measure.exists_eventually_forall_measure_closed_ball_le_mul + theorem is_unif_loc_doubling_measure.exists_measure_closed_ball_le_mul' + theorem is_unif_loc_doubling_measure.measure_mul_le_scaling_constant_of_mul + theorem is_unif_loc_doubling_measure.one_le_scaling_constant_of + def is_unif_loc_doubling_measure.scaling_constant_of + def is_unif_loc_doubling_measure.scaling_scale_of + theorem is_unif_loc_doubling_measure.scaling_scale_of_pos Modified src/measure_theory/measure/haar_lebesgue.lean 2023-04-02 12:33:21 ea050b4 feat(set_theory/cardinal/basic): clean up instances (#18714) We add a missing `linear_ordered_comm_monoid_with_zero` instance and reorder others. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean 2023-04-02 09:13:02 6b60020 chore(group_theory/subgroup/basic): Protect `subgroup.subtype` (#18712) and `subgroup_class.subtype`. This was breaking the `subtype` notation for me in #18684. The longer term fix would be to add a `_root_` in the notation declaration. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean - def subgroup.subtype +/- theorem subgroup.subtype_injective +/- theorem subgroup_class.coe_subtype - def subgroup_class.subtype 2023-04-01 17:10:53 88fcb83 feat(measure_theory/measurable_space): Cast of natural is measurable (#18676) A few simple lemmas ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem measurable_int_cast + theorem measurable_nat_cast Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.measure_univ_ne_zero + theorem measure_theory.measure.measure_univ_pos 2023-04-01 15:55:12 207c925 feat(combinatorics/additive/e_transform): e-transforms (#18683) Define the general e-transform along with two special cases: * The Dyson e-transform, which turns `(s, t)` into `(s ∪ e • t, t ∩ e⁻¹ • s)`. * An pair of unnamed transforms, which turn `(s, t)` into `(s ∩ s • e, t ∪ e⁻¹ • t)` and `(s ∪ s • e, t ∩ e⁻¹ • t)`. ESTIMATED CHANGES Added src/combinatorics/additive/e_transform.lean + theorem finset.mul_dyson_e_transform.card + theorem finset.mul_dyson_e_transform.smul_finset_snd_subset_fst + theorem finset.mul_dyson_e_transform.subset + def finset.mul_dyson_e_transform + theorem finset.mul_dyson_e_transform_idem + theorem finset.mul_e_transform_left.card + theorem finset.mul_e_transform_left.fst_mul_snd_subset + def finset.mul_e_transform_left + theorem finset.mul_e_transform_left_inv + theorem finset.mul_e_transform_left_one + theorem finset.mul_e_transform_right.card + theorem finset.mul_e_transform_right.fst_mul_snd_subset + def finset.mul_e_transform_right + theorem finset.mul_e_transform_right_inv + theorem finset.mul_e_transform_right_one 2023-04-01 12:40:11 3c1368c fix(data/nat/squarefree): `norm_num` only supports `squarefree` on naturals (#18708) We have a `norm_num` extension for proving whether natural numbers are squarefree. This tactic does not work on other rings, like integers, but the check for this case was broken, meaning it returned a proof with a type error instead of skipping the goal. This PR changes the check to only fire the `norm_num` extension on natural numbers. I've included a small test that checks `norm_num` fails on integers, instead of returning a type-incorrect proof. We'd have to replace this test if `norm_num` gains support for `squarefree` on integers. ESTIMATED CHANGES Modified src/data/nat/squarefree.lean Modified test/norm_num_ext.lean 2023-04-01 01:35:41 474656f chore(algebra/order/lattice_group): Golf (#18046) Golf proofs and remove a duplicate lemma. ESTIMATED CHANGES Modified src/algebra/order/lattice_group.lean + theorem inf_mul - theorem lattice_ordered_comm_group.mul_inf_eq_mul_inf_mul +/- theorem lattice_ordered_comm_group.neg_eq_one_iff' +/- theorem lattice_ordered_comm_group.pos_eq_neg_inv +/- theorem lattice_ordered_comm_group.pos_eq_one_iff + theorem sup_mul 2023-03-31 22:20:10 5e526d1 feat(data/{set,finset}/pointwise): `a • t ⊆ s • t` (#18697) Eta expansion in the lemma statements is deliberate, to make the left and right lemmas more similar and allow further rewrites. Also additivise `finset.bUnion_smul_finset`, fix the name of `finset.smul_finset_mem_smul_finset` to `finset.smul_mem_smul_finset`, move `image2_swap`/`image₂_swap` further up the file to let them be used in earlier proofs. ESTIMATED CHANGES Modified src/data/finset/n_ary.lean +/- theorem finset.image_subset_image₂_right + theorem finset.image₂_insert_left + theorem finset.image₂_insert_right + theorem finset.image₂_inter_union_subset_union + theorem finset.image₂_subset_iff_left + theorem finset.image₂_subset_iff_right + theorem finset.image₂_union_inter_subset_union Modified src/data/finset/pointwise.lean + theorem finset.bUnion_op_smul_finset +/- theorem finset.bUnion_smul_finset + theorem finset.inter_div_union_subset_union + theorem finset.inter_mul_union_subset_union + theorem finset.inter_smul_union_subset_union + theorem finset.mul_subset_iff_left + theorem finset.mul_subset_iff_right + theorem finset.op_smul_finset_mul_eq_mul_smul_finset + theorem finset.op_smul_finset_smul_eq_smul_smul_finset + theorem finset.op_smul_finset_subset_mul - theorem finset.smul_finset_mem_smul_finset + theorem finset.smul_finset_subset_smul + theorem finset.smul_mem_smul_finset + theorem finset.union_div_inter_subset_union + theorem finset.union_mul_inter_subset_union + theorem finset.union_smul_inter_subset_union Modified src/data/set/n_ary.lean + theorem set.image2_insert_left + theorem set.image2_insert_right + theorem set.image2_inter_union_subset_union + theorem set.image2_subset_iff_left + theorem set.image2_subset_iff_right +/- theorem set.image2_swap + theorem set.image2_union_inter_subset_union Modified src/data/set/pointwise/basic.lean + theorem set.inter_div_union_subset_union + theorem set.inter_mul_union_subset_union + theorem set.union_div_inter_subset_union + theorem set.union_mul_inter_subset_union Modified src/data/set/pointwise/smul.lean +/- theorem set.bUnion_op_smul_set + theorem set.inter_smul_union_subset_union + theorem set.inter_vsub_union_subset_union + theorem set.mul_subset_iff_left + theorem set.mul_subset_iff_right + theorem set.op_smul_set_mul_eq_mul_smul_set + theorem set.op_smul_set_smul_eq_smul_smul_set + theorem set.op_smul_set_subset_mul + theorem set.smul_set_subset_smul + theorem set.union_smul_inter_subset_union + theorem set.union_vsub_inter_subset_union 2023-03-31 22:20:08 210657c refactor(order/well_founded): ditch `well_founded_iff_has_min'` and `well_founded_iff_has_max'` (#15071) The predicate `x ≤ y → y = x` is no more convenient than `¬ x < y`. For this reason, we ditch `well_founded.well_founded_iff_has_min'` and `well_founded.well_founded_iff_has_max'` in favor of `well_founded.well_founded_iff_has_min` (or in some cases, just `well_founded.has_min`. We also remove the misplaced lemma `well_founded.eq_iff_not_lt_of_le`, and we golf the theorems that used the removed theorems. The lemma `well_founded.well_founded_iff_has_min` has a misleading name when applied on `well_founded (>)`, and mildly screws over dot notation and rewriting by virtue of using `>`, but a future refactor will fix this. ESTIMATED CHANGES Modified src/algebra/lie/engel.lean Modified src/linear_algebra/free_module/pid.lean Modified src/order/basic.lean + theorem eq_iff_not_lt_of_le Modified src/order/compactly_generated.lean Modified src/order/order_iso_nat.lean Modified src/order/well_founded.lean - theorem well_founded.eq_iff_not_lt_of_le - theorem well_founded.well_founded_iff_has_max' - theorem well_founded.well_founded_iff_has_min' Modified src/ring_theory/artinian.lean Modified src/ring_theory/ideal/associated_prime.lean Modified src/ring_theory/noetherian.lean 2023-03-31 20:41:04 02e095b feat(measure_theory/group/geometry_of_numbers): Blichfeldt and Minkowski's theorems (#2819) I had a go at Minkowski's convex body theorem and it works thanks to @urkud 's pidgeonhole for measurable spaces. ESTIMATED CHANGES Modified docs/100.yaml Modified docs/references.bib Added src/measure_theory/group/geometry_of_numbers.lean + theorem measure_theory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure + theorem measure_theory.exists_pair_mem_lattice_not_disjoint_vadd Modified src/measure_theory/measure/haar_lebesgue.lean + theorem measure_theory.measure.add_haar_smul_of_nonneg + theorem measure_theory.measure.null_measurable_set.const_smul 2023-03-31 17:55:55 172bf28 feat(data/pnat/basic): pnat is a well-order (#18700) ESTIMATED CHANGES Modified src/data/pnat/basic.lean 2023-03-31 14:30:27 47b12e7 chore(analysis/locally_convex/strong_topology): generalize to semilinear maps (#18679) This is needed to show that the space of C-linear maps is locally convex. Also generalizes the ring from `real` to a general ordered semiring, since the proofs didn't need the `real`s. ESTIMATED CHANGES Modified src/analysis/locally_convex/strong_topology.lean 2023-03-31 14:30:26 29cb56a chore(*): Miscellaneous lemmas (#18677) * `algebra.support`: `support n = univ` if `n ≠ 0`, `mul_support n = univ` if `n ≠ 1` * `data.int.char_zero`: `↑n = 1 ↔ n = 1` * `data.real.ennreal`: `of_real a.to_real = a ↔ a ≠ ⊤`, `(of_real a).to_real = a ↔ 0 ≤ a` * `data.set.basic`: `s ∩ {a | p a} = {a ∈ s | p a}` * `logic.function.basic`: `on_fun f g a b = f (g a) (g b)` * `order.conditionally_complete_lattice.basic`: Lemmas unfolding the definition of `Sup`/`Inf` on `with_top`/`with_bot` ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.mul_support_int_cast + theorem function.mul_support_nat_cast + theorem function.mul_support_zero + theorem function.support_int_cast + theorem function.support_nat_cast + theorem function.support_one Modified src/data/int/char_zero.lean + theorem int.cast_eq_one + theorem int.cast_ne_one Modified src/data/real/ennreal.lean + theorem ennreal.of_real_to_real_eq_iff + theorem ennreal.to_real_of_real_eq_iff Modified src/data/set/basic.lean + theorem set.diff_singleton_ssubset + theorem set.insert_diff_singleton_comm + theorem set.inter_diff_distrib_left + theorem set.inter_diff_distrib_right + theorem set.inter_set_of_eq_sep + theorem set.set_of_inter_eq_sep + theorem set.singleton_subset_singleton Modified src/logic/function/basic.lean + theorem function.on_fun_apply Modified src/order/conditionally_complete_lattice/basic.lean + theorem with_bot.Inf_eq + theorem with_bot.Sup_eq + theorem with_top.Inf_eq + theorem with_top.Sup_eq 2023-03-31 11:19:35 5923c4c feat(order/rel_iso): well-founded instances for subtypes (#18699) ESTIMATED CHANGES Modified src/order/rel_iso/basic.lean 2023-03-30 21:32:22 3e068ec refactor(data/matrix/basic): work around leanprover/lean4#2042 (#18696) This adjust definitions such that everything is well-behaved in the case that things are unfolded. For each such definition, a lemma is added that replaces the equation lemma. Before this PR, we used ```lean def transpose (M : matrix m n α) : matrix n m α | x y := M y x ``` which has the nice behavior (in Lean 3 only) of `rw transpose` only unfolding the definition when it is of the applied form `transpose M i j`. If `dunfold transpose` is used then it becomes the undesirable `λ x y, M y x` in both Lean versions. After this PR, we use ```lean def transpose (M : matrix m n α) : matrix n m α := of $ λ x y, M y x -- TODO: set as an equation lemma for `transpose`, see mathlib4#3024 @[simp] lemma transpose_apply (M : matrix m n α) (i j) : transpose M i j = M j i := rfl ``` This no longer has the nice `rw` behavior, but we can't have that in Lean4 anyway (leanprover/lean4#2042). It also makes `dunfold` insert the `of`, which is better for type-safety. This affects * `matrix.transpose` * `matrix.row` * `matrix.col` * `matrix.diagonal` * `matrix.vec_mul_vec` * `matrix.block_diagonal` * `matrix.block_diagonal'` * `matrix.hadamard` * `matrix.kronecker_map` * `pequiv.to_matrix` * `matrix.circulant` * `matrix.mv_polynomial_X` * `algebra.trace_matrix` * `algebra.embeddings_matrix` While this just adds `_apply` noise in Lean 3, it is necessary when porting to Lean 4 as there the equation lemma is not generated in the way that we want. This is hopefully exhaustive; it was found by looking for lines ending in `matrix .*` followed by a `|` line ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/combinatorics/simple_graph/adj_matrix.lean +/- def simple_graph.adj_matrix Modified src/data/matrix/basic.lean +/- def matrix.col +/- theorem matrix.col_apply +/- def matrix.diagonal + theorem matrix.diagonal_apply +/- def matrix.row +/- theorem matrix.row_apply +/- def matrix.transpose +/- theorem matrix.transpose_apply +/- def matrix.vec_mul_vec + theorem matrix.vec_mul_vec_apply Modified src/data/matrix/block.lean +/- def matrix.block_diag' + theorem matrix.block_diag'_apply +/- def matrix.block_diag + theorem matrix.block_diag_apply +/- def matrix.block_diagonal' + theorem matrix.block_diagonal'_apply' +/- def matrix.block_diagonal + theorem matrix.block_diagonal_apply' Modified src/data/matrix/hadamard.lean +/- def matrix.hadamard + theorem matrix.hadamard_apply Modified src/data/matrix/kronecker.lean +/- def matrix.kronecker_map + theorem matrix.kronecker_map_apply Modified src/data/matrix/notation.lean Modified src/data/matrix/pequiv.lean +/- def pequiv.to_matrix + theorem pequiv.to_matrix_apply Modified src/linear_algebra/matrix/circulant.lean +/- def matrix.circulant + theorem matrix.circulant_apply Modified src/linear_algebra/matrix/mv_polynomial.lean + theorem matrix.mv_polynomial_X_apply Modified src/linear_algebra/matrix/symmetric.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/number_theory/cyclotomic/discriminant.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/trace.lean +/- def algebra.embeddings_matrix + theorem algebra.embeddings_matrix_apply +/- def algebra.trace_matrix + theorem algebra.trace_matrix_apply - theorem algebra.trace_matrix_def Modified src/topology/instances/matrix.lean 2023-03-30 18:52:18 ce11c3c refactor(linear_algebra/{multilinear,pi_tensor_product}): remove the decidable_eq argument (#10140) There is no need to include this argument in the type of `multilinear_map`, as it is only used to state the propositions. Instead, we move it into a binder in the `map_add` and `map_smul` fields. The same trick is done for the relation for `pi_tensor_product`. The benefit here is pretty marginal; the main one is that `mutlilinear_map.mk_pi_algebra` no longer requires a `decidable_eq I` instance. However, it still requires `fintype I`, and in practice all computably finite types are also computably decidable. This does at least mean that `0 : multilinear_map ...` rightfully no longer requires decidable equality! The downside of this PR is that the `map_add'` and `map_smul'` fields are often more annoying to prove as there are sometimes duplicate decidable instances to eliminate. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/A.20possible.20diamond/near/260179946) ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean +/- theorem continuous_multilinear_map.norm_image_sub_le' +/- theorem multilinear_map.norm_image_sub_le_of_bound' Modified src/linear_algebra/alternating.lean +/- theorem alternating_map.coe_alternatization +/- theorem alternating_map.dom_dom_congr_perm +/- theorem alternating_map.map_add +/- theorem alternating_map.map_add_swap +/- theorem alternating_map.map_congr_perm +/- theorem alternating_map.map_neg +/- theorem alternating_map.map_perm +/- theorem alternating_map.map_smul +/- theorem alternating_map.map_sub +/- theorem alternating_map.map_swap +/- theorem alternating_map.map_swap_add +/- theorem alternating_map.map_update_self +/- theorem alternating_map.map_update_sum +/- theorem alternating_map.map_update_update +/- theorem alternating_map.map_update_zero +/- theorem multilinear_map.dom_coprod_alternization +/- theorem multilinear_map.dom_coprod_alternization_coe +/- theorem multilinear_map.dom_coprod_alternization_eq Modified src/linear_algebra/determinant.lean +/- theorem alternating_map.map_basis_eq_zero_iff +/- theorem alternating_map.map_basis_ne_zero_iff Modified src/linear_algebra/exterior_algebra/of_alternating.lean Modified src/linear_algebra/multilinear/basic.lean +/- def multilinear_map.dom_dom_congr_linear_equiv' +/- def multilinear_map.dom_dom_congr_linear_equiv +/- theorem multilinear_map.map_add_univ +/- theorem multilinear_map.map_neg +/- theorem multilinear_map.map_piecewise_add +/- theorem multilinear_map.map_piecewise_smul +/- theorem multilinear_map.map_sub +/- theorem multilinear_map.map_sum +/- theorem multilinear_map.map_sum_finset +/- theorem multilinear_map.map_sum_finset_aux +/- theorem multilinear_map.map_update_smul +/- theorem multilinear_map.map_update_sum +/- theorem multilinear_map.map_update_zero +/- def multilinear_map.to_linear_map Modified src/linear_algebra/multilinear/basis.lean +/- theorem basis.ext_multilinear Modified src/linear_algebra/multilinear/finite_dimensional.lean Modified src/linear_algebra/multilinear/tensor_product.lean Modified src/linear_algebra/orientation.lean +/- def orientation.some_basis +/- theorem orientation.some_basis_orientation Modified src/linear_algebra/pi_tensor_product.lean +/- theorem pi_tensor_product.add_tprod_coeff +/- theorem pi_tensor_product.smul_tprod_coeff +/- theorem pi_tensor_product.smul_tprod_coeff_aux Modified src/linear_algebra/tensor_power.lean +/- theorem pi_tensor_product.graded_monoid_eq_of_reindex_cast Modified src/topology/algebra/module/multilinear.lean +/- theorem continuous_multilinear_map.map_add +/- theorem continuous_multilinear_map.map_add_univ +/- theorem continuous_multilinear_map.map_piecewise_add +/- theorem continuous_multilinear_map.map_piecewise_smul +/- theorem continuous_multilinear_map.map_smul +/- theorem continuous_multilinear_map.map_sub +/- theorem continuous_multilinear_map.map_sum +/- theorem continuous_multilinear_map.map_sum_finset +/- def continuous_multilinear_map.to_continuous_linear_map 2023-03-30 17:06:31 6e272cd refactor(analysis/inner_product_space): split `submodule.orthogonal` to a new file (#18706) This file is pretty long, and this seems to split out naturally. The lemmas are copied with minimal modification; the only change is that everything is now wrapped in `namespace submodule` rather than having `submodule.` prefixing every lemma. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean - theorem orthogonal_eq_inter - theorem submodule.Inf_orthogonal - theorem submodule.bot_orthogonal_eq_top - theorem submodule.inf_orthogonal - theorem submodule.inf_orthogonal_eq_bot - theorem submodule.infi_orthogonal - theorem submodule.inner_left_of_mem_orthogonal - theorem submodule.inner_right_of_mem_orthogonal - theorem submodule.is_closed_orthogonal - theorem submodule.le_orthogonal_orthogonal - theorem submodule.mem_orthogonal' - theorem submodule.mem_orthogonal - theorem submodule.mem_orthogonal_singleton_iff_inner_left - theorem submodule.mem_orthogonal_singleton_iff_inner_right - def submodule.orthogonal - theorem submodule.orthogonal_disjoint - theorem submodule.orthogonal_eq_top_iff - theorem submodule.orthogonal_family_self - theorem submodule.orthogonal_gc - theorem submodule.orthogonal_le - theorem submodule.orthogonal_orthogonal_monotone - theorem submodule.sub_mem_orthogonal_of_inner_left - theorem submodule.sub_mem_orthogonal_of_inner_right - theorem submodule.top_orthogonal_eq_bot Added src/analysis/inner_product_space/orthogonal.lean + theorem submodule.Inf_orthogonal + theorem submodule.bot_orthogonal_eq_top + theorem submodule.inf_orthogonal + theorem submodule.inf_orthogonal_eq_bot + theorem submodule.infi_orthogonal + theorem submodule.inner_left_of_mem_orthogonal + theorem submodule.inner_right_of_mem_orthogonal + theorem submodule.is_closed_orthogonal + theorem submodule.le_orthogonal_orthogonal + theorem submodule.mem_orthogonal' + theorem submodule.mem_orthogonal + theorem submodule.mem_orthogonal_singleton_iff_inner_left + theorem submodule.mem_orthogonal_singleton_iff_inner_right + def submodule.orthogonal + theorem submodule.orthogonal_disjoint + theorem submodule.orthogonal_eq_inter + theorem submodule.orthogonal_eq_top_iff + theorem submodule.orthogonal_family_self + theorem submodule.orthogonal_gc + theorem submodule.orthogonal_le + theorem submodule.orthogonal_orthogonal_monotone + theorem submodule.sub_mem_orthogonal_of_inner_left + theorem submodule.sub_mem_orthogonal_of_inner_right + theorem submodule.top_orthogonal_eq_bot Modified src/analysis/inner_product_space/projection.lean 2023-03-30 17:06:30 94d4e70 chore(category_theory): removed stupid example (#18701) ESTIMATED CHANGES Modified src/category_theory/triangulated/rotate.lean 2023-03-30 17:06:29 f8d8465 chore(category_theory/preadditive/projective): split out two lemmas to reduce imports (#18688) Motivated by all the unneeded imports visible in https://tqft.net/mathlib4/2023-03-29/category_theory.monoidal.tor.pdf ESTIMATED CHANGES Modified src/algebra/module/injective.lean Modified src/category_theory/abelian/injective.lean Modified src/category_theory/abelian/projective.lean Modified src/category_theory/preadditive/injective.lean - theorem category_theory.injective.injective_iff_preserves_epimorphisms_preadditive_yoneda_obj' - theorem category_theory.injective.injective_iff_preserves_epimorphisms_preadditive_yoneda_obj Modified src/category_theory/preadditive/opposite.lean Modified src/category_theory/preadditive/projective.lean - theorem category_theory.projective.projective_iff_preserves_epimorphisms_preadditive_coyoneda_obj' - theorem category_theory.projective.projective_iff_preserves_epimorphisms_preadditive_coyoneda_obj Added src/category_theory/preadditive/yoneda/injective.lean + theorem category_theory.injective.injective_iff_preserves_epimorphisms_preadditive_yoneda_obj' + theorem category_theory.injective.injective_iff_preserves_epimorphisms_preadditive_yoneda_obj Added src/category_theory/preadditive/yoneda/projective.lean + theorem category_theory.projective.projective_iff_preserves_epimorphisms_preadditive_coyoneda_obj' + theorem category_theory.projective.projective_iff_preserves_epimorphisms_preadditive_coyoneda_obj 2023-03-30 17:06:28 ec1c7d8 chore(ring_theory/ideal/local_ring): move ring_equiv.local_ring into local_ring.lean (#18686) By having `ring_theory.ideal.local_ring` depend on `logic.equiv.transfer_instance`, rather than the other way around, we avoid importing all the dependencies for `local_ring` into files that just need to transfer "elementary" algebraic structures across equivalences. ESTIMATED CHANGES Modified src/algebra/module/injective.lean Modified src/algebraic_topology/dold_kan/degeneracies.lean Modified src/logic/equiv/transfer_instance.lean Modified src/ring_theory/ideal/local_ring.lean 2023-03-30 12:15:49 d97a0c9 feat(linear_algebra/tensor_power): the tensor powers form a graded algebra (#10255) ESTIMATED CHANGES Modified src/data/fin/tuple/basic.lean + theorem fin.append_left_eq_cons + theorem fin.append_right_eq_snoc Added src/linear_algebra/tensor_algebra/to_tensor_power.lean + def tensor_algebra.equiv_direct_sum + theorem tensor_algebra.mk_reindex_cast + theorem tensor_algebra.mk_reindex_fin_cast + def tensor_algebra.of_direct_sum + theorem tensor_algebra.of_direct_sum_comp_to_direct_sum + theorem tensor_algebra.of_direct_sum_of_tprod + theorem tensor_algebra.of_direct_sum_to_direct_sum + def tensor_algebra.to_direct_sum + theorem tensor_algebra.to_direct_sum_comp_of_direct_sum + theorem tensor_algebra.to_direct_sum_of_direct_sum + theorem tensor_algebra.to_direct_sum_tensor_power_tprod + theorem tensor_algebra.to_direct_sum_ι + theorem tensor_power.list_prod_graded_monoid_mk_single + def tensor_power.to_tensor_algebra + theorem tensor_power.to_tensor_algebra_galgebra_to_fun + theorem tensor_power.to_tensor_algebra_ghas_mul + theorem tensor_power.to_tensor_algebra_ghas_one + theorem tensor_power.to_tensor_algebra_tprod Modified src/linear_algebra/tensor_power.lean + theorem pi_tensor_product.graded_monoid_eq_of_reindex_cast + def tensor_power.algebra_map₀ + theorem tensor_power.algebra_map₀_eq_smul_one + theorem tensor_power.algebra_map₀_mul + theorem tensor_power.algebra_map₀_mul_algebra_map₀ + theorem tensor_power.algebra_map₀_one + def tensor_power.cast + theorem tensor_power.cast_cast + theorem tensor_power.cast_eq_cast + theorem tensor_power.cast_refl + theorem tensor_power.cast_symm + theorem tensor_power.cast_tprod + theorem tensor_power.cast_trans + theorem tensor_power.galgebra_to_fun_def + theorem tensor_power.ghas_mul_eq_coe_linear_map +/- theorem tensor_power.ghas_one_def + theorem tensor_power.graded_monoid_eq_of_cast + theorem tensor_power.mul_algebra_map₀ + theorem tensor_power.mul_assoc + theorem tensor_power.mul_one + theorem tensor_power.one_mul + theorem tensor_power.tprod_mul_tprod 2023-03-30 09:07:17 c941bb9 feat(data/set/finite): When `s ×ˢ t` is finite (#18674) The one non-trivial result is `infinite_image2`, because it requires only injectivity of the `f a` and `λ a, f a b` rather than of the uncurrying of `f`. ESTIMATED CHANGES Modified archive/imo/imo2008_q2.lean Modified src/data/set/finite.lean - theorem set.finite.image2 + theorem set.finite.of_prod_left + theorem set.finite.of_prod_right - theorem set.finite.off_diag - theorem set.finite.prod + theorem set.finite_prod - theorem set.infinite.nonempty + theorem set.infinite.of_image + theorem set.infinite_image2 - theorem set.infinite_of_infinite_image Modified src/data/set/pointwise/finite.lean + theorem set.finite_smul_set + theorem set.infinite.of_smul_set + theorem set.infinite_mul + theorem set.infinite_smul_set 2023-03-30 06:36:57 fe44cd3 feat (number_theory/modular_forms): holomorphy of the Jacobi theta function (#18631) Show that the Jacobi theta function is holomorphic on the upper half-plane, with exponential decay at infinity. ESTIMATED CHANGES Modified src/analysis/complex/locally_uniform_limit.lean + theorem complex.differentiable_on_tsum_of_summable_norm + theorem complex.has_sum_deriv_of_summable_norm Modified src/analysis/complex/upper_half_plane/topology.lean + theorem upper_half_plane.mdifferentiable_coe + theorem upper_half_plane.smooth_coe Modified src/number_theory/modular_forms/basic.lean Modified src/number_theory/modular_forms/jacobi_theta.lean + theorem continuous_jacobi_theta + theorem differentiable_at_tsum_exp_mul_sq + theorem exists_summable_bound_exp_mul_sq + theorem has_sum_nat_jacobi_theta + theorem is_O_at_im_infty_jacobi_theta_sub_one + theorem jacobi_theta_eq_tsum_nat - theorem jacobi_theta_summable - theorem jacobi_theta_unif_summable + theorem mdifferentiable_jacobi_theta + theorem norm_exp_mul_sq_le + theorem norm_jacobi_theta_sub_one_le + theorem summable_exp_mul_sq 2023-03-30 03:40:44 2ec920d feat(data/list/lemmas): add lemmas about `set.range list.nth*` (#18647) Add versions for `list.nth_le`, `list.nth`, `list.nthd`, and `list.inth`. Also move lemmas from `list` to `set` namespace. ESTIMATED CHANGES Modified src/data/list/lemmas.lean - theorem list.range_map - theorem list.range_map_coe Modified src/data/multiset/basic.lean Added src/data/set/list.lean + theorem set.range_list_inth + theorem set.range_list_map + theorem set.range_list_map_coe + theorem set.range_list_nth + theorem set.range_list_nth_le + theorem set.range_list_nthd Modified src/group_theory/submonoid/membership.lean 2023-03-30 00:32:14 71b36b6 chore(order/category): Partially revert categories (#18690) It was pointed out in leanprover-community/mathlib4#3164 that certain changes in #18657 were unsound. This PR reverts those unsound changes. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean Modified src/order/hom/complete_lattice.lean 2023-03-30 00:32:13 a6ece35 chore(algebra/star/self_adjoint): generalize a lemma to `semifield` (#18687) This was missed in a previous commit, and backports a change made during forward-porting. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean 2023-03-30 00:32:12 91862a6 feat(analysis/calculus/cont_diff): bound for the iterated derivative of a product (#18632) We show that `‖D^n (x ↦ B (f x) (g x))‖ ≤ ‖B‖ ∑_{k ≤ n} n.choose k ‖D^k f‖ ‖D^{n-k} g‖` for a general continuous bilinear map `B`, and specialize this inequality to the case of the product of two functions. This is a first step to control the norm of the iterated derivative of a composition. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem continuous_linear_map.norm_iterated_fderiv_le_of_bilinear + theorem continuous_linear_map.norm_iterated_fderiv_le_of_bilinear_of_le_one + theorem continuous_linear_map.norm_iterated_fderiv_within_le_of_bilinear + theorem continuous_linear_map.norm_iterated_fderiv_within_le_of_bilinear_aux + theorem continuous_linear_map.norm_iterated_fderiv_within_le_of_bilinear_of_le_one + theorem finset.sum_antidiagonal_choose_succ_mul + theorem finset.sum_choose_succ_mul + theorem norm_iterated_fderiv_mul_le + theorem norm_iterated_fderiv_smul_le + theorem norm_iterated_fderiv_within_mul_le + theorem norm_iterated_fderiv_within_smul_le Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_mul_le 2023-03-30 00:32:10 c04bc6e refactor(representation_theory/group_cohomology_resolution): refactor `k[G^{n + 1}]` isomorphism (#18271) This refactors the isomorphism $k[G^{n + 1}] \cong k[G] \otimes_k k[G^n]$ (where $G$ acts by left multiplication on $k[G^{n + 1}]$ and $k[G]$ but trivially on $k[G^n]$) to use an isomorphism of $G$-sets $G^{n + 1} \cong G \times G^n.$ ESTIMATED CHANGES Modified src/representation_theory/Action.lean + def Action.diagonal + def Action.diagonal_one_iso_left_regular + def Action.diagonal_succ + def Action.left_regular + def Action.left_regular_tensor_iso + def Action.tensor_unit_iso +/- def category_theory.monoidal_functor.map_Action + theorem category_theory.monoidal_functor.map_Action_ε_inv_hom + theorem category_theory.monoidal_functor.map_Action_μ_inv_hom Modified src/representation_theory/Rep.lean - theorem Rep.linearization_map_hom_of + theorem Rep.linearization_map_hom_single + theorem Rep.linearization_ε_hom + theorem Rep.linearization_ε_inv_hom_apply + theorem Rep.linearization_μ_hom + theorem Rep.linearization_μ_inv_hom + def Rep.trivial + theorem Rep.trivial_def Modified src/representation_theory/basic.lean +/- def representation.trivial +/- theorem representation.trivial_def Modified src/representation_theory/group_cohomology_resolution.lean + def group_cohomology.resolution.Action_diagonal_succ + theorem group_cohomology.resolution.Action_diagonal_succ_hom_apply + theorem group_cohomology.resolution.Action_diagonal_succ_inv_apply + def group_cohomology.resolution.diagonal_succ + theorem group_cohomology.resolution.diagonal_succ_hom_single + theorem group_cohomology.resolution.diagonal_succ_inv_single_left + theorem group_cohomology.resolution.diagonal_succ_inv_single_right + theorem group_cohomology.resolution.diagonal_succ_inv_single_single - def group_cohomology.resolution.equiv_tensor - theorem group_cohomology.resolution.equiv_tensor_def - theorem group_cohomology.resolution.equiv_tensor_inv_def - def group_cohomology.resolution.of_tensor - def group_cohomology.resolution.of_tensor_aux - theorem group_cohomology.resolution.of_tensor_aux_comm_of_mul_action - theorem group_cohomology.resolution.of_tensor_aux_single - theorem group_cohomology.resolution.of_tensor_single' - theorem group_cohomology.resolution.of_tensor_single - def group_cohomology.resolution.to_tensor - def group_cohomology.resolution.to_tensor_aux - theorem group_cohomology.resolution.to_tensor_aux_left_inv - theorem group_cohomology.resolution.to_tensor_aux_of_mul_action - theorem group_cohomology.resolution.to_tensor_aux_right_inv - theorem group_cohomology.resolution.to_tensor_aux_single - theorem group_cohomology.resolution.to_tensor_single +/- def group_cohomology.resolution.ε 2023-03-30 00:32:08 564bcc4 fix(algebra.group.ulift): fix to_additive name for cancel_comm_monoid (#18268) This is a fix to match mathlib 4 https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/ULift.html#ULift.addCancelCommMonoid ESTIMATED CHANGES Modified src/algebra/group/ulift.lean 2023-03-30 00:32:06 229f6f1 feat(set_theory/zfc/basic): define Set and Class intersection (#18232) ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Class.mem_of_mem_sInter + theorem Class.mem_sInter + def Class.sInter + theorem Class.sInter_apply + theorem Class.sInter_coe + theorem Class.sInter_empty +/- theorem Class.sUnion_empty + theorem Set.mem_of_mem_sInter + theorem Set.mem_sInter + theorem Set.not_mem_sInter_of_not_mem + theorem Set.sInter_empty + theorem Set.sInter_singleton +/- theorem Set.sUnion_empty + theorem Set.to_set_sInter 2023-03-30 00:32:05 1c775cc docs(tutorials/representation_theory): beginnings of a tutorial following Etingof's notes (#13911) ESTIMATED CHANGES Added docs/tutorial/representation_theory/etingof.lean Modified src/algebra/category/Module/algebra.lean Modified src/linear_algebra/matrix/to_lin.lean 2023-03-29 11:40:01 b685f50 feat(data/finset/pointwise): `a • (s ∩ t) = a • s ∩ a • t` (#18682) I added the corresponding `set` lemmas a while back, but forgot about their `finset` counterpart. Also additivise `finset.is_central_scalar`/`set.is_central_scalar`. ESTIMATED CHANGES Modified src/data/finset/image.lean + theorem finset.image_sdiff + theorem finset.image_symm_diff Modified src/data/finset/pointwise.lean + theorem finset.smul_finset_inter + theorem finset.smul_finset_inter₀ + theorem finset.smul_finset_sdiff + theorem finset.smul_finset_sdiff₀ + theorem finset.smul_finset_symm_diff + theorem finset.smul_finset_symm_diff₀ + theorem finset.smul_finset_univ + theorem finset.smul_univ Modified src/data/set/pointwise/smul.lean 2023-03-29 08:50:38 9cb7206 doc(representation_theory/basic): add docstring to dual_tensor_hom_comm (#18661) add a docstring to dual_tensor_hom_comm to describe its mathematical content explicitly ESTIMATED CHANGES Modified src/representation_theory/basic.lean 2023-03-29 07:17:29 2de9c37 chore(linear_algebra/affine_space/combination): make k explicit in affine_combination (#18689) The implicitness caused problems in elaboration. In Lean 3 it only amounts to long elaboration times, but in Lean 4 elaboration fails. ESTIMATED CHANGES Modified src/analysis/convex/between.lean Modified src/analysis/convex/combination.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/affine_space/basis.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/affine_space/matrix.lean 2023-03-29 06:00:28 bcbee71 feat(ring_theory/mv_polynomial/weighted homogeneous): add weighted homogeneous polynomials (#17855) It is possible to assign weights (in a commutative additive monoid `M`) to the variables of a multivariate polynomial ring, so that monomials of the ring then have a weighted degree with respect to the weights of the variables. The weights are represented by a function `w : σ → M`, where `σ` are the indeterminates. A multivariate polynomial `φ` is weighted homogeneous of weighted degree `m : M` if all monomials occuring in `φ` have the same weighted degree `m`. ESTIMATED CHANGES Added src/ring_theory/mv_polynomial/weighted_homogeneous.lean + theorem mv_polynomial.coeff_weighted_homogeneous_component + theorem mv_polynomial.is_weighted_homogeneous.add + theorem mv_polynomial.is_weighted_homogeneous.coeff_eq_zero + theorem mv_polynomial.is_weighted_homogeneous.inj_right + theorem mv_polynomial.is_weighted_homogeneous.mul + theorem mv_polynomial.is_weighted_homogeneous.prod + theorem mv_polynomial.is_weighted_homogeneous.sum + theorem mv_polynomial.is_weighted_homogeneous.weighted_total_degree + def mv_polynomial.is_weighted_homogeneous + theorem mv_polynomial.is_weighted_homogeneous_C + theorem mv_polynomial.is_weighted_homogeneous_X + theorem mv_polynomial.is_weighted_homogeneous_monomial + theorem mv_polynomial.is_weighted_homogeneous_of_total_degree_zero + theorem mv_polynomial.is_weighted_homogeneous_one + theorem mv_polynomial.is_weighted_homogeneous_zero + theorem mv_polynomial.le_weighted_total_degree + theorem mv_polynomial.mem_weighted_homogeneous_submodule + theorem mv_polynomial.sum_weighted_homogeneous_component + def mv_polynomial.weighted_degree' + def mv_polynomial.weighted_homogeneous_component + theorem mv_polynomial.weighted_homogeneous_component_C_mul + theorem mv_polynomial.weighted_homogeneous_component_apply + theorem mv_polynomial.weighted_homogeneous_component_eq_zero' + theorem mv_polynomial.weighted_homogeneous_component_eq_zero + theorem mv_polynomial.weighted_homogeneous_component_finsupp + theorem mv_polynomial.weighted_homogeneous_component_is_weighted_homogeneous + theorem mv_polynomial.weighted_homogeneous_component_weighted_homogeneous_polynomial + theorem mv_polynomial.weighted_homogeneous_component_zero + def mv_polynomial.weighted_homogeneous_submodule + theorem mv_polynomial.weighted_homogeneous_submodule_eq_finsupp_supported + theorem mv_polynomial.weighted_homogeneous_submodule_mul + def mv_polynomial.weighted_total_degree' + theorem mv_polynomial.weighted_total_degree'_eq_bot_iff + theorem mv_polynomial.weighted_total_degree'_zero + def mv_polynomial.weighted_total_degree + theorem mv_polynomial.weighted_total_degree_coe + theorem mv_polynomial.weighted_total_degree_zero 2023-03-29 04:43:48 eb810cf feat(measure_theory/group/fundamental_domain): integral_eq_tsum (#18132) This is `integral` analogues of existing `lintegral` lemmas. Also added `lintegral` versions of `sum_lintegral` and fixing naming consistency with primes vs no primes. (The prime goes with the `\inv`.) ESTIMATED CHANGES Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.integral_eq_tsum' + theorem measure_theory.is_fundamental_domain.integral_eq_tsum + theorem measure_theory.is_fundamental_domain.integral_eq_tsum_of_ac + theorem measure_theory.is_fundamental_domain.lintegral_eq_tsum' + theorem measure_theory.is_fundamental_domain.set_integral_eq_tsum' + theorem measure_theory.is_fundamental_domain.set_integral_eq_tsum 2023-03-29 04:43:47 200eda1 feat(category_theory/idempotents): idempotent completeness of homological_complex (#17921) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean + def category_theory.equivalence.map_homological_complex + def category_theory.functor.map_homological_complex_id_iso + def category_theory.nat_iso.map_homological_complex Modified src/category_theory/idempotents/homological_complex.lean Modified src/category_theory/idempotents/karoubi.lean + def category_theory.idempotents.to_karoubi_equivalence 2023-03-29 02:46:58 d3acee0 feat(ring_theory/ideal/norm): add ideal.finite_set_of_abs_norm_eq (#18569) Prove that there are only finitely many ideals of `abs_norm` equal to $n$ for $n$ positive. ESTIMATED CHANGES Modified src/ring_theory/ideal/norm.lean + theorem ideal.abs_norm_ne_zero_iff + theorem ideal.finite_set_of_abs_norm_eq + theorem ideal.span_singleton_abs_norm_le Modified src/ring_theory/ideal/quotient_operations.lean + theorem ideal.comap_map_mk 2023-03-29 02:46:57 98bbc35 feat(set_theory/zfc/ordinal): more lemmas on transitive sets (#18307) ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Set.sUnion_pair Modified src/set_theory/zfc/ordinal.lean 2023-03-29 02:46:56 a7e36e4 refactor(data/seq): scope seq and wseq to namespace stream (#18284) Adds namespace `stream` to `seq` and `wseq` to ease the Mathlib4 port (as `Seq` now name clashes with class `Seq` (`has_seq` in Lean 3). This requires disambiguation between `stream` and `computation` where lemmas in each namespace have the same name, and requires explicit scoping to mathlib files that reference `seq` and `wseq` (often by `open stream.seq as seq`) ESTIMATED CHANGES Modified docs/overview.yaml Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/continued_fractions/terminated_stable.lean Modified src/algebra/continued_fractions/translations.lean Modified src/data/seq/parallel.lean Modified src/data/seq/seq.lean - def seq.append - theorem seq.append_assoc - theorem seq.append_nil - def seq.bisim_o - theorem seq.coinduction2 - theorem seq.coinduction - def seq.cons - theorem seq.cons_append - theorem seq.cons_injective2 - theorem seq.cons_left_injective - theorem seq.cons_right_injective - def seq.corec.F - def seq.corec - theorem seq.corec_eq - def seq.destruct - theorem seq.destruct_cons - theorem seq.destruct_eq_cons - theorem seq.destruct_eq_nil - theorem seq.destruct_nil - def seq.drop - theorem seq.dropn_add - theorem seq.dropn_tail - def seq.enum - theorem seq.enum_cons - theorem seq.enum_nil - theorem seq.eq_of_bisim - theorem seq.eq_or_mem_of_mem_cons - theorem seq.exists_of_mem_map - theorem seq.ge_stable - def seq.head - theorem seq.head_cons - theorem seq.head_dropn - theorem seq.head_eq_destruct - theorem seq.head_nil - def seq.is_bisimulation - def seq.join - theorem seq.join_append - theorem seq.join_cons - theorem seq.join_cons_cons - theorem seq.join_cons_nil - theorem seq.join_nil - theorem seq.le_stable - def seq.map - theorem seq.map_append - theorem seq.map_comp - theorem seq.map_cons - theorem seq.map_id - theorem seq.map_nil - theorem seq.map_nth - theorem seq.map_tail - theorem seq.mem_append_left - theorem seq.mem_cons - theorem seq.mem_cons_iff - theorem seq.mem_cons_of_mem - theorem seq.mem_map - theorem seq.mem_rec_on - def seq.nats - theorem seq.nats_nth - def seq.nil - theorem seq.nil_append - theorem seq.not_mem_nil - theorem seq.not_terminates_iff - def seq.nth - theorem seq.nth_cons_succ - theorem seq.nth_cons_zero - theorem seq.nth_enum - theorem seq.nth_mk - theorem seq.nth_nil - theorem seq.nth_tail - theorem seq.nth_zip - theorem seq.nth_zip_with - def seq.of_lazy_list - def seq.of_list - theorem seq.of_list_append - theorem seq.of_list_cons - theorem seq.of_list_nil - theorem seq.of_list_nth - theorem seq.of_mem_append - def seq.of_stream - theorem seq.of_stream_append - theorem seq.of_stream_cons - def seq.omap - def seq.rec_on - def seq.split_at - def seq.tail - theorem seq.tail_cons - theorem seq.tail_nil - def seq.take - def seq.terminated_at - theorem seq.terminated_stable - def seq.terminates - def seq.to_list' - def seq.to_list - def seq.to_list_or_stream - def seq.to_stream - def seq.unzip - theorem seq.val_cons - def seq.zip - def seq.zip_with - def seq1.bind - theorem seq1.bind_assoc - theorem seq1.bind_ret - def seq1.join - theorem seq1.join_cons - theorem seq1.join_join - theorem seq1.join_map_ret - theorem seq1.join_nil - def seq1.map - theorem seq1.map_id - theorem seq1.map_join' - theorem seq1.map_join - def seq1.ret - theorem seq1.ret_bind - def seq1.to_seq - def seq1 - def seq +/- def stream.is_seq + def stream.seq.append + theorem stream.seq.append_assoc + theorem stream.seq.append_nil + def stream.seq.bisim_o + theorem stream.seq.coinduction2 + theorem stream.seq.coinduction + def stream.seq.cons + theorem stream.seq.cons_append + theorem stream.seq.cons_injective2 + theorem stream.seq.cons_left_injective + theorem stream.seq.cons_right_injective + def stream.seq.corec.F + def stream.seq.corec + theorem stream.seq.corec_eq + def stream.seq.destruct + theorem stream.seq.destruct_cons + theorem stream.seq.destruct_eq_cons + theorem stream.seq.destruct_eq_nil + theorem stream.seq.destruct_nil + def stream.seq.drop + theorem stream.seq.dropn_add + theorem stream.seq.dropn_tail + def stream.seq.enum + theorem stream.seq.enum_cons + theorem stream.seq.enum_nil + theorem stream.seq.eq_of_bisim + theorem stream.seq.eq_or_mem_of_mem_cons + theorem stream.seq.exists_of_mem_map + theorem stream.seq.ge_stable + def stream.seq.head + theorem stream.seq.head_cons + theorem stream.seq.head_dropn + theorem stream.seq.head_eq_destruct + theorem stream.seq.head_nil + def stream.seq.is_bisimulation + def stream.seq.join + theorem stream.seq.join_append + theorem stream.seq.join_cons + theorem stream.seq.join_cons_cons + theorem stream.seq.join_cons_nil + theorem stream.seq.join_nil + theorem stream.seq.le_stable + def stream.seq.map + theorem stream.seq.map_append + theorem stream.seq.map_comp + theorem stream.seq.map_cons + theorem stream.seq.map_id + theorem stream.seq.map_nil + theorem stream.seq.map_nth + theorem stream.seq.map_tail + theorem stream.seq.mem_append_left + theorem stream.seq.mem_cons + theorem stream.seq.mem_cons_iff + theorem stream.seq.mem_cons_of_mem + theorem stream.seq.mem_map + theorem stream.seq.mem_rec_on + def stream.seq.nats + theorem stream.seq.nats_nth + def stream.seq.nil + theorem stream.seq.nil_append + theorem stream.seq.not_mem_nil + theorem stream.seq.not_terminates_iff + def stream.seq.nth + theorem stream.seq.nth_cons_succ + theorem stream.seq.nth_cons_zero + theorem stream.seq.nth_enum + theorem stream.seq.nth_mk + theorem stream.seq.nth_nil + theorem stream.seq.nth_tail + theorem stream.seq.nth_zip + theorem stream.seq.nth_zip_with + def stream.seq.of_lazy_list + def stream.seq.of_list + theorem stream.seq.of_list_append + theorem stream.seq.of_list_cons + theorem stream.seq.of_list_nil + theorem stream.seq.of_list_nth + theorem stream.seq.of_mem_append + def stream.seq.of_stream + theorem stream.seq.of_stream_append + theorem stream.seq.of_stream_cons + def stream.seq.omap + def stream.seq.rec_on + def stream.seq.split_at + def stream.seq.tail + theorem stream.seq.tail_cons + theorem stream.seq.tail_nil + def stream.seq.take + def stream.seq.terminated_at + theorem stream.seq.terminated_stable + def stream.seq.terminates + def stream.seq.to_list' + def stream.seq.to_list + def stream.seq.to_list_or_stream + def stream.seq.to_stream + def stream.seq.unzip + theorem stream.seq.val_cons + def stream.seq.zip + def stream.seq.zip_with + def stream.seq1.bind + theorem stream.seq1.bind_assoc + theorem stream.seq1.bind_ret + def stream.seq1.join + theorem stream.seq1.join_cons + theorem stream.seq1.join_join + theorem stream.seq1.join_map_ret + theorem stream.seq1.join_nil + def stream.seq1.map + theorem stream.seq1.map_id + theorem stream.seq1.map_join' + theorem stream.seq1.map_join + def stream.seq1.ret + theorem stream.seq1.ret_bind + def stream.seq1.to_seq + def stream.seq1 + def stream.seq Modified src/data/seq/wseq.lean + def stream.wseq.all + def stream.wseq.any + def stream.wseq.append + theorem stream.wseq.append_assoc + theorem stream.wseq.append_nil + def stream.wseq.bind + theorem stream.wseq.bind_assoc + theorem stream.wseq.bind_congr + theorem stream.wseq.bind_ret + theorem stream.wseq.bisim_o.imp + def stream.wseq.bisim_o + def stream.wseq.collect + def stream.wseq.compute + def stream.wseq.cons + theorem stream.wseq.cons_append + theorem stream.wseq.cons_congr + def stream.wseq.destruct + def stream.wseq.destruct_append.aux + theorem stream.wseq.destruct_append + theorem stream.wseq.destruct_congr + theorem stream.wseq.destruct_congr_iff + theorem stream.wseq.destruct_cons + theorem stream.wseq.destruct_dropn + theorem stream.wseq.destruct_flatten + def stream.wseq.destruct_join.aux + theorem stream.wseq.destruct_join + theorem stream.wseq.destruct_map + theorem stream.wseq.destruct_nil + theorem stream.wseq.destruct_of_seq + theorem stream.wseq.destruct_some_of_destruct_tail_some + theorem stream.wseq.destruct_tail + theorem stream.wseq.destruct_terminates_of_nth_terminates + theorem stream.wseq.destruct_think + def stream.wseq.drop.aux + theorem stream.wseq.drop.aux_none + def stream.wseq.drop + theorem stream.wseq.dropn_add + theorem stream.wseq.dropn_congr + theorem stream.wseq.dropn_cons + theorem stream.wseq.dropn_nil + theorem stream.wseq.dropn_of_seq + theorem stream.wseq.dropn_tail + theorem stream.wseq.dropn_think + theorem stream.wseq.eq_or_mem_iff_mem + theorem stream.wseq.equiv.equivalence + theorem stream.wseq.equiv.ext + theorem stream.wseq.equiv.refl + theorem stream.wseq.equiv.symm + theorem stream.wseq.equiv.trans + def stream.wseq.equiv + theorem stream.wseq.exists_dropn_of_mem + theorem stream.wseq.exists_nth_of_mem + theorem stream.wseq.exists_of_lift_rel_left + theorem stream.wseq.exists_of_lift_rel_right + theorem stream.wseq.exists_of_mem_bind + theorem stream.wseq.exists_of_mem_join + theorem stream.wseq.exists_of_mem_map + def stream.wseq.filter + def stream.wseq.filter_map + def stream.wseq.find + def stream.wseq.find_index + def stream.wseq.find_indexes + def stream.wseq.flatten + theorem stream.wseq.flatten_congr + theorem stream.wseq.flatten_equiv + theorem stream.wseq.flatten_ret + theorem stream.wseq.flatten_think + def stream.wseq.get + def stream.wseq.head + theorem stream.wseq.head_congr + theorem stream.wseq.head_cons + theorem stream.wseq.head_nil + theorem stream.wseq.head_of_seq + theorem stream.wseq.head_some_of_head_tail_some + theorem stream.wseq.head_some_of_nth_some + theorem stream.wseq.head_terminates_iff + theorem stream.wseq.head_terminates_of_head_tail_terminates + theorem stream.wseq.head_terminates_of_mem + theorem stream.wseq.head_terminates_of_nth_terminates + theorem stream.wseq.head_think + def stream.wseq.index_of + def stream.wseq.indexes_of + def stream.wseq.inits + def stream.wseq.is_empty + def stream.wseq.join + theorem stream.wseq.join_append + theorem stream.wseq.join_congr + theorem stream.wseq.join_cons + theorem stream.wseq.join_join + theorem stream.wseq.join_map_ret + theorem stream.wseq.join_nil + theorem stream.wseq.join_ret + theorem stream.wseq.join_think + def stream.wseq.length + theorem stream.wseq.length_eq_map + theorem stream.wseq.lift_rel.equiv + theorem stream.wseq.lift_rel.refl + theorem stream.wseq.lift_rel.swap + theorem stream.wseq.lift_rel.swap_lem + theorem stream.wseq.lift_rel.symm + theorem stream.wseq.lift_rel.trans + def stream.wseq.lift_rel + theorem stream.wseq.lift_rel_append + theorem stream.wseq.lift_rel_bind + theorem stream.wseq.lift_rel_cons + theorem stream.wseq.lift_rel_destruct + theorem stream.wseq.lift_rel_destruct_iff + theorem stream.wseq.lift_rel_dropn_destruct + theorem stream.wseq.lift_rel_flatten + theorem stream.wseq.lift_rel_join.lem + theorem stream.wseq.lift_rel_join + theorem stream.wseq.lift_rel_map + theorem stream.wseq.lift_rel_nil + theorem stream.wseq.lift_rel_o.imp + theorem stream.wseq.lift_rel_o.imp_right + theorem stream.wseq.lift_rel_o.swap + def stream.wseq.lift_rel_o + theorem stream.wseq.lift_rel_think_left + theorem stream.wseq.lift_rel_think_right + def stream.wseq.map + theorem stream.wseq.map_append + theorem stream.wseq.map_comp + theorem stream.wseq.map_congr + theorem stream.wseq.map_cons + theorem stream.wseq.map_id + theorem stream.wseq.map_join + theorem stream.wseq.map_nil + theorem stream.wseq.map_ret + theorem stream.wseq.map_think + theorem stream.wseq.mem_append_left + theorem stream.wseq.mem_congr + theorem stream.wseq.mem_cons + theorem stream.wseq.mem_cons_iff + theorem stream.wseq.mem_cons_of_mem + theorem stream.wseq.mem_map + theorem stream.wseq.mem_of_mem_dropn + theorem stream.wseq.mem_of_mem_tail + theorem stream.wseq.mem_rec_on + theorem stream.wseq.mem_think + def stream.wseq.nil + theorem stream.wseq.nil_append + theorem stream.wseq.not_mem_nil + def stream.wseq.nth + theorem stream.wseq.nth_add + theorem stream.wseq.nth_congr + theorem stream.wseq.nth_mem + theorem stream.wseq.nth_of_seq + theorem stream.wseq.nth_tail + theorem stream.wseq.nth_terminates_le + def stream.wseq.of_list + theorem stream.wseq.of_list_cons + theorem stream.wseq.of_list_nil + theorem stream.wseq.of_mem_append + def stream.wseq.of_seq + def stream.wseq.of_stream + theorem stream.wseq.productive_congr + theorem stream.wseq.productive_iff + def stream.wseq.rec_on + def stream.wseq.remove_nth + def stream.wseq.ret + theorem stream.wseq.ret_bind + def stream.wseq.scanl + theorem stream.wseq.seq_destruct_cons + theorem stream.wseq.seq_destruct_nil + theorem stream.wseq.seq_destruct_think + def stream.wseq.split_at + def stream.wseq.tail.aux + def stream.wseq.tail + theorem stream.wseq.tail_congr + theorem stream.wseq.tail_cons + theorem stream.wseq.tail_nil + theorem stream.wseq.tail_of_seq + theorem stream.wseq.tail_think + def stream.wseq.take + def stream.wseq.think + theorem stream.wseq.think_append + theorem stream.wseq.think_congr + theorem stream.wseq.think_equiv + theorem stream.wseq.to_list'_cons + theorem stream.wseq.to_list'_map + theorem stream.wseq.to_list'_nil + theorem stream.wseq.to_list'_think + def stream.wseq.to_list + theorem stream.wseq.to_list_cons + theorem stream.wseq.to_list_nil + theorem stream.wseq.to_list_of_list + def stream.wseq.to_seq + theorem stream.wseq.to_seq_of_seq + def stream.wseq.union + def stream.wseq.update_nth + def stream.wseq.zip + def stream.wseq.zip_with + def stream.wseq - def wseq.all - def wseq.any - def wseq.append - theorem wseq.append_assoc - theorem wseq.append_nil - def wseq.bind - theorem wseq.bind_assoc - theorem wseq.bind_congr - theorem wseq.bind_ret - theorem wseq.bisim_o.imp - def wseq.bisim_o - def wseq.collect - def wseq.compute - def wseq.cons - theorem wseq.cons_append - theorem wseq.cons_congr - def wseq.destruct - def wseq.destruct_append.aux - theorem wseq.destruct_append - theorem wseq.destruct_congr - theorem wseq.destruct_congr_iff - theorem wseq.destruct_cons - theorem wseq.destruct_dropn - theorem wseq.destruct_flatten - def wseq.destruct_join.aux - theorem wseq.destruct_join - theorem wseq.destruct_map - theorem wseq.destruct_nil - theorem wseq.destruct_of_seq - theorem wseq.destruct_some_of_destruct_tail_some - theorem wseq.destruct_tail - theorem wseq.destruct_terminates_of_nth_terminates - theorem wseq.destruct_think - def wseq.drop.aux - theorem wseq.drop.aux_none - def wseq.drop - theorem wseq.dropn_add - theorem wseq.dropn_congr - theorem wseq.dropn_cons - theorem wseq.dropn_nil - theorem wseq.dropn_of_seq - theorem wseq.dropn_tail - theorem wseq.dropn_think - theorem wseq.eq_or_mem_iff_mem - theorem wseq.equiv.equivalence - theorem wseq.equiv.ext - theorem wseq.equiv.refl - theorem wseq.equiv.symm - theorem wseq.equiv.trans - def wseq.equiv - theorem wseq.exists_dropn_of_mem - theorem wseq.exists_nth_of_mem - theorem wseq.exists_of_lift_rel_left - theorem wseq.exists_of_lift_rel_right - theorem wseq.exists_of_mem_bind - theorem wseq.exists_of_mem_join - theorem wseq.exists_of_mem_map - def wseq.filter - def wseq.filter_map - def wseq.find - def wseq.find_index - def wseq.find_indexes - def wseq.flatten - theorem wseq.flatten_congr - theorem wseq.flatten_equiv - theorem wseq.flatten_ret - theorem wseq.flatten_think - def wseq.get - def wseq.head - theorem wseq.head_congr - theorem wseq.head_cons - theorem wseq.head_nil - theorem wseq.head_of_seq - theorem wseq.head_some_of_head_tail_some - theorem wseq.head_some_of_nth_some - theorem wseq.head_terminates_iff - theorem wseq.head_terminates_of_head_tail_terminates - theorem wseq.head_terminates_of_mem - theorem wseq.head_terminates_of_nth_terminates - theorem wseq.head_think - def wseq.index_of - def wseq.indexes_of - def wseq.inits - def wseq.is_empty - def wseq.join - theorem wseq.join_append - theorem wseq.join_congr - theorem wseq.join_cons - theorem wseq.join_join - theorem wseq.join_map_ret - theorem wseq.join_nil - theorem wseq.join_ret - theorem wseq.join_think - def wseq.length - theorem wseq.length_eq_map - theorem wseq.lift_rel.equiv - theorem wseq.lift_rel.refl - theorem wseq.lift_rel.swap - theorem wseq.lift_rel.swap_lem - theorem wseq.lift_rel.symm - theorem wseq.lift_rel.trans - def wseq.lift_rel - theorem wseq.lift_rel_append - theorem wseq.lift_rel_bind - theorem wseq.lift_rel_cons - theorem wseq.lift_rel_destruct - theorem wseq.lift_rel_destruct_iff - theorem wseq.lift_rel_dropn_destruct - theorem wseq.lift_rel_flatten - theorem wseq.lift_rel_join.lem - theorem wseq.lift_rel_join - theorem wseq.lift_rel_map - theorem wseq.lift_rel_nil - theorem wseq.lift_rel_o.imp - theorem wseq.lift_rel_o.imp_right - theorem wseq.lift_rel_o.swap - def wseq.lift_rel_o - theorem wseq.lift_rel_think_left - theorem wseq.lift_rel_think_right - def wseq.map - theorem wseq.map_append - theorem wseq.map_comp - theorem wseq.map_congr - theorem wseq.map_cons - theorem wseq.map_id - theorem wseq.map_join - theorem wseq.map_nil - theorem wseq.map_ret - theorem wseq.map_think - theorem wseq.mem_append_left - theorem wseq.mem_congr - theorem wseq.mem_cons - theorem wseq.mem_cons_iff - theorem wseq.mem_cons_of_mem - theorem wseq.mem_map - theorem wseq.mem_of_mem_dropn - theorem wseq.mem_of_mem_tail - theorem wseq.mem_rec_on - theorem wseq.mem_think - def wseq.nil - theorem wseq.nil_append - theorem wseq.not_mem_nil - def wseq.nth - theorem wseq.nth_add - theorem wseq.nth_congr - theorem wseq.nth_mem - theorem wseq.nth_of_seq - theorem wseq.nth_tail - theorem wseq.nth_terminates_le - def wseq.of_list - theorem wseq.of_list_cons - theorem wseq.of_list_nil - theorem wseq.of_mem_append - def wseq.of_seq - def wseq.of_stream - theorem wseq.productive_congr - theorem wseq.productive_iff - def wseq.rec_on - def wseq.remove_nth - def wseq.ret - theorem wseq.ret_bind - def wseq.scanl - theorem wseq.seq_destruct_cons - theorem wseq.seq_destruct_nil - theorem wseq.seq_destruct_think - def wseq.split_at - def wseq.tail.aux - def wseq.tail - theorem wseq.tail_congr - theorem wseq.tail_cons - theorem wseq.tail_nil - theorem wseq.tail_of_seq - theorem wseq.tail_think - def wseq.take - def wseq.think - theorem wseq.think_append - theorem wseq.think_congr - theorem wseq.think_equiv - theorem wseq.to_list'_cons - theorem wseq.to_list'_map - theorem wseq.to_list'_nil - theorem wseq.to_list'_think - def wseq.to_list - theorem wseq.to_list_cons - theorem wseq.to_list_nil - theorem wseq.to_list_of_list - def wseq.to_seq - theorem wseq.to_seq_of_seq - def wseq.union - def wseq.update_nth - def wseq.zip - def wseq.zip_with - def wseq 2023-03-29 02:46:55 9512706 chore(scripts/list-attributes.sh): script to track attributes semireducible/irreducible (#18165) This script generates the data for #18164 ESTIMATED CHANGES Added scripts/list-attributes.sh 2023-03-28 23:45:20 3e17545 feat(order/upper_lower/locally_finite): Upper closure preserves finiteness (#18678) `locally_finite_order` and `upper_set` don't naturally impot one another, so I'm dumping those two lemmas in a new file. ESTIMATED CHANGES Added src/order/upper_lower/locally_finite.lean 2023-03-28 23:45:18 6876fa1 refactor(category_theory/shift): improve automation (#18670) ESTIMATED CHANGES Modified src/category_theory/differential_object.lean + def category_theory.differential_object.shift_zero - def category_theory.differential_object.shift_ε Modified src/category_theory/graded_object.lean Deleted src/category_theory/shift.lean - def category_theory.add_neg_equiv - theorem category_theory.eq_to_hom_comp_shift_add_inv₁ - theorem category_theory.eq_to_hom_comp_shift_add_inv₁₂ - theorem category_theory.eq_to_hom_comp_shift_add_inv₂ - theorem category_theory.eq_to_hom_μ_app - theorem category_theory.has_shift.shift_obj_obj - def category_theory.has_shift_mk - def category_theory.has_shift_of_fully_faithful - def category_theory.has_shift_of_fully_faithful_comm - def category_theory.shift_add - theorem category_theory.shift_add_hom_comp_eq_to_hom₁ - theorem category_theory.shift_add_hom_comp_eq_to_hom₁₂ - theorem category_theory.shift_add_hom_comp_eq_to_hom₂ - theorem category_theory.shift_comm' - def category_theory.shift_comm - theorem category_theory.shift_comm_hom_comp - theorem category_theory.shift_comm_symm - def category_theory.shift_equiv - theorem category_theory.shift_equiv_triangle - def category_theory.shift_functor - def category_theory.shift_functor_add - def category_theory.shift_functor_comp_shift_functor_neg - theorem category_theory.shift_functor_inv - def category_theory.shift_functor_neg_comp_shift_functor - def category_theory.shift_functor_zero - structure category_theory.shift_mk_core - def category_theory.shift_monoidal_functor - theorem category_theory.shift_neg_shift' - def category_theory.shift_neg_shift - theorem category_theory.shift_shift' - theorem category_theory.shift_shift_neg' - def category_theory.shift_shift_neg - theorem category_theory.shift_shift_neg_hom_shift - theorem category_theory.shift_shift_neg_inv_shift - theorem category_theory.shift_shift_neg_shift_eq - theorem category_theory.shift_zero' - def category_theory.shift_zero - theorem category_theory.shift_zero_eq_zero - theorem category_theory.μ_inv_app_eq_to_hom Added src/category_theory/shift/basic.lean + theorem category_theory.has_shift.shift_obj_obj + def category_theory.has_shift_mk + def category_theory.has_shift_of_fully_faithful + def category_theory.has_shift_of_fully_faithful_add + def category_theory.has_shift_of_fully_faithful_zero + theorem category_theory.map_has_shift_of_fully_faithful_add_hom_app + theorem category_theory.map_has_shift_of_fully_faithful_add_inv_app + theorem category_theory.map_has_shift_of_fully_faithful_zero_hom_app + theorem category_theory.map_has_shift_of_fully_faithful_zero_inv_app + def category_theory.shift_add + theorem category_theory.shift_comm' + def category_theory.shift_comm + theorem category_theory.shift_comm_hom_comp + theorem category_theory.shift_comm_symm + def category_theory.shift_equiv' + def category_theory.shift_equiv + theorem category_theory.shift_equiv_triangle + def category_theory.shift_functor + def category_theory.shift_functor_add' + theorem category_theory.shift_functor_add'_add_zero + theorem category_theory.shift_functor_add'_add_zero_hom_app + theorem category_theory.shift_functor_add'_add_zero_inv_app + theorem category_theory.shift_functor_add'_assoc + theorem category_theory.shift_functor_add'_assoc_hom_app + theorem category_theory.shift_functor_add'_assoc_inv_app + theorem category_theory.shift_functor_add'_eq_shift_functor_add + theorem category_theory.shift_functor_add'_zero_add + theorem category_theory.shift_functor_add'_zero_add_hom_app + theorem category_theory.shift_functor_add'_zero_add_inv_app + def category_theory.shift_functor_add + theorem category_theory.shift_functor_add_add_zero_hom_app + theorem category_theory.shift_functor_add_add_zero_inv_app + theorem category_theory.shift_functor_add_assoc + theorem category_theory.shift_functor_add_assoc_hom_app + theorem category_theory.shift_functor_add_assoc_inv_app + theorem category_theory.shift_functor_add_zero_add_hom_app + theorem category_theory.shift_functor_add_zero_add_inv_app + def category_theory.shift_functor_comm + theorem category_theory.shift_functor_comm_eq + theorem category_theory.shift_functor_comm_hom_app_comp_shift_shift_functor_add_hom_app + theorem category_theory.shift_functor_comm_symm + def category_theory.shift_functor_comp_iso_id + theorem category_theory.shift_functor_inv + def category_theory.shift_functor_zero + theorem category_theory.shift_functor_zero_hom_app_shift + theorem category_theory.shift_functor_zero_inv_app_shift + theorem category_theory.shift_mk_core.add_zero_inv_app + theorem category_theory.shift_mk_core.assoc_inv_app + theorem category_theory.shift_mk_core.shift_functor_add_eq + theorem category_theory.shift_mk_core.shift_functor_eq + theorem category_theory.shift_mk_core.shift_functor_zero_eq + theorem category_theory.shift_mk_core.zero_add_inv_app + structure category_theory.shift_mk_core + def category_theory.shift_monoidal_functor + theorem category_theory.shift_neg_shift' + def category_theory.shift_neg_shift + theorem category_theory.shift_shift' + theorem category_theory.shift_shift_functor_comp_iso_id_add_neg_self_hom_app + theorem category_theory.shift_shift_functor_comp_iso_id_add_neg_self_inv_app + theorem category_theory.shift_shift_functor_comp_iso_id_hom_app + theorem category_theory.shift_shift_functor_comp_iso_id_inv_app + theorem category_theory.shift_shift_functor_comp_iso_id_neg_add_self_hom_app + theorem category_theory.shift_shift_functor_comp_iso_id_neg_add_self_inv_app + theorem category_theory.shift_shift_neg' + def category_theory.shift_shift_neg + theorem category_theory.shift_zero' + def category_theory.shift_zero + theorem category_theory.shift_zero_eq_zero Modified src/category_theory/triangulated/basic.lean + def category_theory.pretriangulated.triangle.hom_mk + def category_theory.pretriangulated.triangle.iso_mk Modified src/category_theory/triangulated/pretriangulated.lean - theorem category_theory.pretriangulated.triangulated_functor.map_distinguished - def category_theory.pretriangulated.triangulated_functor.map_triangle - structure category_theory.pretriangulated.triangulated_functor - def category_theory.pretriangulated.triangulated_functor_struct.id - def category_theory.pretriangulated.triangulated_functor_struct.map_triangle - structure category_theory.pretriangulated.triangulated_functor_struct Modified src/category_theory/triangulated/rotate.lean - def category_theory.pretriangulated.from_inv_rotate_rotate - def category_theory.pretriangulated.from_rotate_inv_rotate - def category_theory.pretriangulated.inv_rot_comp_rot_hom - def category_theory.pretriangulated.inv_rot_comp_rot_inv - def category_theory.pretriangulated.rot_comp_inv_rot_hom - def category_theory.pretriangulated.rot_comp_inv_rot_inv - def category_theory.pretriangulated.to_inv_rotate_rotate - def category_theory.pretriangulated.to_rotate_inv_rotate - def category_theory.pretriangulated.triangle_morphism.inv_rotate - def category_theory.pretriangulated.triangle_morphism.rotate 2023-03-28 23:45:16 e8ac631 chore(order/category): Rename categories (#18657) The Lean 4 naming convention forces us to rename the categories of orders. Instead of blankly appending `Cat` to the names, we proactively shorten the names. Incidentally, this gets them closer to the way they're referred in the literature. * `Preorder` → `Preord` (the literature name is `Ord`, but Lean 4 already takes it) * `PartialOrder` → `PartOrd` * `BoundedOrder` → `BddOrd` * `FinPartialOrder` → `FinPartOrd` * `SemilatticeSup` → `SemilatSup` * `SemilatticeInf` → `SemilatInf` * `Lattice` → `Lat` * `DistribLattice` → `DistLat` * `BoundedLattice` → `BddLat` * `BoundedDistribLattice` → `BddDistLat` * `LinearOrder` → `LinOrd` * `CompleteLattice` → `CompleteLat` * `Frame` → `Frm` (the corresponding class is `Order.Frame`, but better be safe) ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean Added src/order/category/BddDistLat.lean + theorem BddDistLat.coe_of + theorem BddDistLat.coe_to_BddLat + def BddDistLat.dual + def BddDistLat.dual_equiv + theorem BddDistLat.forget_BddLat_Lat_eq_forget_DistLat_Lat + def BddDistLat.iso.mk + def BddDistLat.of + def BddDistLat.to_BddLat + structure BddDistLat + theorem BddDistLat_dual_comp_forget_to_DistLat Added src/order/category/BddLat.lean + theorem BddLat.coe_forget_to_BddOrd + theorem BddLat.coe_forget_to_Lat + theorem BddLat.coe_forget_to_SemilatInf + theorem BddLat.coe_forget_to_SemilatSup + theorem BddLat.coe_of + def BddLat.dual + def BddLat.dual_equiv + theorem BddLat.forget_Lat_PartOrd_eq_forget_BddOrd_PartOrd + theorem BddLat.forget_SemilatInf_PartOrd_eq_forget_BddOrd_PartOrd + theorem BddLat.forget_SemilatSup_PartOrd_eq_forget_BddOrd_PartOrd + def BddLat.iso.mk + def BddLat.of + structure BddLat + theorem BddLat_dual_comp_forget_to_BddOrd + theorem BddLat_dual_comp_forget_to_Lat + theorem BddLat_dual_comp_forget_to_SemilatInf + theorem BddLat_dual_comp_forget_to_SemilatSup Added src/order/category/BddOrd.lean + theorem BddOrd.coe_of + def BddOrd.dual + def BddOrd.dual_equiv + def BddOrd.iso.mk + def BddOrd.of + structure BddOrd + theorem BddOrd_dual_comp_forget_to_Bipointed + theorem BddOrd_dual_comp_forget_to_PartOrd Modified src/order/category/BoolAlg.lean + theorem BoolAlg.coe_to_BddDistLat - theorem BoolAlg.coe_to_BoundedDistribLattice + def BoolAlg.to_BddDistLat - def BoolAlg.to_BoundedDistribLattice + theorem BoolAlg_dual_comp_forget_to_BddDistLat - theorem BoolAlg_dual_comp_forget_to_BoundedDistribLattice Deleted src/order/category/BoundedDistribLattice.lean - theorem BoundedDistribLattice.coe_of - theorem BoundedDistribLattice.coe_to_BoundedLattice - def BoundedDistribLattice.dual - def BoundedDistribLattice.dual_equiv - theorem BoundedDistribLattice.forget_BoundedLattice_Lattice_eq_forget_DistribLattice_Lattice - def BoundedDistribLattice.iso.mk - def BoundedDistribLattice.of - def BoundedDistribLattice.to_BoundedLattice - structure BoundedDistribLattice - theorem BoundedDistribLattice_dual_comp_forget_to_DistribLattice Deleted src/order/category/BoundedLattice.lean - theorem BoundedLattice.coe_forget_to_BoundedOrder - theorem BoundedLattice.coe_forget_to_Lattice - theorem BoundedLattice.coe_forget_to_SemilatticeInf - theorem BoundedLattice.coe_forget_to_SemilatticeSup - theorem BoundedLattice.coe_of - def BoundedLattice.dual - def BoundedLattice.dual_equiv - theorem BoundedLattice.forget_Lattice_PartialOrder_eq_forget_BoundedOrder_PartialOrder - theorem BoundedLattice.forget_SemilatticeInf_PartialOrder_eq_forget_BoundedOrder_PartialOrder - theorem BoundedLattice.forget_SemilatticeSup_PartialOrder_eq_forget_BoundedOrder_PartialOrder - def BoundedLattice.iso.mk - def BoundedLattice.of - structure BoundedLattice - theorem BoundedLattice_dual_comp_forget_to_BoundedOrder - theorem BoundedLattice_dual_comp_forget_to_Lattice - theorem BoundedLattice_dual_comp_forget_to_SemilatticeInf - theorem BoundedLattice_dual_comp_forget_to_SemilatticeSup Deleted src/order/category/BoundedOrder.lean - theorem BoundedOrder.coe_of - def BoundedOrder.dual - def BoundedOrder.dual_equiv - def BoundedOrder.iso.mk - def BoundedOrder.of - structure BoundedOrder - theorem BoundedOrder_dual_comp_forget_to_Bipointed - theorem BoundedOrder_dual_comp_forget_to_PartialOrder Added src/order/category/CompleteLat.lean + theorem CompleteLat.coe_of + def CompleteLat.dual + def CompleteLat.dual_equiv + def CompleteLat.iso.mk + def CompleteLat.of + def CompleteLat + theorem CompleteLat_dual_comp_forget_to_BddLat Deleted src/order/category/CompleteLattice.lean - theorem CompleteLattice.coe_of - def CompleteLattice.dual - def CompleteLattice.dual_equiv - def CompleteLattice.iso.mk - def CompleteLattice.of - def CompleteLattice - theorem CompleteLattice_dual_comp_forget_to_BoundedLattice Added src/order/category/DistLat.lean + theorem DistLat.coe_of + def DistLat.dual + def DistLat.dual_equiv + def DistLat.iso.mk + def DistLat.of + def DistLat + theorem DistLat_dual_comp_forget_to_Lat Deleted src/order/category/DistribLattice.lean - theorem DistribLattice.coe_of - def DistribLattice.dual - def DistribLattice.dual_equiv - def DistribLattice.iso.mk - def DistribLattice.of - def DistribLattice - theorem DistribLattice_dual_comp_forget_to_Lattice Modified src/order/category/FinBoolAlg.lean Added src/order/category/FinPartOrd.lean + theorem FinPartOrd.coe_of + theorem FinPartOrd.coe_to_PartOrd + def FinPartOrd.dual + def FinPartOrd.dual_equiv + def FinPartOrd.iso.mk + def FinPartOrd.of + structure FinPartOrd + theorem FinPartOrd_dual_comp_forget_to_PartOrd Deleted src/order/category/FinPartialOrder.lean - theorem FinPartialOrder.coe_of - theorem FinPartialOrder.coe_to_PartialOrder - def FinPartialOrder.dual - def FinPartialOrder.dual_equiv - def FinPartialOrder.iso.mk - def FinPartialOrder.of - structure FinPartialOrder - theorem FinPartialOrder_dual_comp_forget_to_PartialOrder Renamed src/order/category/Frame.lean to src/order/category/Frm.lean - theorem Frame.coe_of - def Frame.hom - def Frame.iso.mk - def Frame.of - def Frame + theorem Frm.coe_of + def Frm.hom + def Frm.iso.mk + def Frm.of + def Frm +/- def Top_op_to_Frame Modified src/order/category/HeytAlg.lean Added src/order/category/Lat.lean + theorem Lat.coe_of + def Lat.dual + def Lat.dual_equiv + def Lat.iso.mk + def Lat.of + def Lat + theorem Lat_dual_comp_forget_to_PartOrd Deleted src/order/category/Lattice.lean - theorem Lattice.coe_of - def Lattice.dual - def Lattice.dual_equiv - def Lattice.iso.mk - def Lattice.of - def Lattice - theorem Lattice_dual_comp_forget_to_PartialOrder Added src/order/category/LinOrd.lean + theorem LinOrd.coe_of + def LinOrd.dual + def LinOrd.dual_equiv + def LinOrd.iso.mk + def LinOrd.of + def LinOrd + theorem LinOrd_dual_comp_forget_to_Lat Deleted src/order/category/LinearOrder.lean - theorem LinearOrder.coe_of - def LinearOrder.dual - def LinearOrder.dual_equiv - def LinearOrder.iso.mk - def LinearOrder.of - def LinearOrder - theorem LinearOrder_dual_comp_forget_to_Lattice Modified src/order/category/NonemptyFinLinOrd.lean + theorem NonemptyFinLinOrd_dual_comp_forget_to_LinOrd - theorem NonemptyFinLinOrd_dual_comp_forget_to_LinearOrder Renamed src/order/category/PartialOrder.lean to src/order/category/PartOrd.lean + theorem PartOrd.coe_of + def PartOrd.dual + def PartOrd.dual_equiv + def PartOrd.iso.mk + def PartOrd.of + def PartOrd + theorem PartOrd_dual_comp_forget_to_Preord - theorem PartialOrder.coe_of - def PartialOrder.dual - def PartialOrder.dual_equiv - def PartialOrder.iso.mk - def PartialOrder.of - def PartialOrder - theorem PartialOrder_dual_comp_forget_to_Preorder + def Preord_to_PartOrd + def Preord_to_PartOrd_comp_to_dual_iso_to_dual_comp_Preord_to_PartOrd + def Preord_to_PartOrd_forget_adjunction - def Preorder_to_PartialOrder - def Preorder_to_PartialOrder_comp_to_dual_iso_to_dual_comp_Preorder_to_PartialOrder - def Preorder_to_PartialOrder_forget_adjunction Renamed src/order/category/Preorder.lean to src/order/category/Preord.lean + theorem Preord.coe_of + def Preord.dual + def Preord.dual_equiv + def Preord.iso.mk + def Preord.of + def Preord + def Preord_to_Cat - theorem Preorder.coe_of - def Preorder.dual - def Preorder.dual_equiv - def Preorder.iso.mk - def Preorder.of - def Preorder - def Preorder_to_Cat Added src/order/category/Semilat.lean + theorem SemilatInf.coe_forget_to_PartOrd + theorem SemilatInf.coe_of + def SemilatInf.dual + def SemilatInf.iso.mk + def SemilatInf.of + structure SemilatInf + theorem SemilatInf_dual_comp_forget_to_PartOrd + theorem SemilatSup.coe_forget_to_PartOrd + theorem SemilatSup.coe_of + def SemilatSup.dual + def SemilatSup.iso.mk + def SemilatSup.of + structure SemilatSup + theorem SemilatSup_dual_comp_forget_to_PartOrd + def SemilatSup_equiv_SemilatInf Deleted src/order/category/Semilattice.lean - theorem SemilatticeInf.coe_forget_to_PartialOrder - theorem SemilatticeInf.coe_of - def SemilatticeInf.dual - def SemilatticeInf.iso.mk - def SemilatticeInf.of - structure SemilatticeInf - theorem SemilatticeInf_dual_comp_forget_to_PartialOrder - theorem SemilatticeSup.coe_forget_to_PartialOrder - theorem SemilatticeSup.coe_of - def SemilatticeSup.dual - def SemilatticeSup.iso.mk - def SemilatticeSup.of - structure SemilatticeSup - theorem SemilatticeSup_dual_comp_forget_to_PartialOrder - def SemilatticeSup_equiv_SemilatticeInf Modified src/order/complete_boolean_algebra.lean Modified src/order/hom/complete_lattice.lean Modified src/topology/category/Locale.lean +/- def Locale.of +/- def Locale 2023-03-28 23:45:14 0187644 feat(geometry/manifold/vector_bundle/tangent): use the new tangent bundle definition in the library (#18601) * Stop using the old tangent bundle definition, and use the new one instead * This affects `geometry.manifold.mfderiv` and later files. * We remove `cont_mdiff_at_iff_target`, which doesn't hold anymore in the new setting. * We prove `cont_mdiff_at_total_space`, which characterizes `C^n` maps into a vector bundle. We need a bunch of basic lemmas to prove this. This makes it easy to prove `smooth_zero_section`. * We move some results from `cont_mdiff_mfderiv` to `manifold/vector_bundle/basic` ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff_at_prod_iff + theorem cont_mdiff_within_at.fst + theorem cont_mdiff_within_at.snd + theorem cont_mdiff_within_at_prod_iff Modified src/geometry/manifold/cont_mdiff_mfderiv.lean - theorem basic_smooth_vector_bundle_core.cont_mdiff_at_iff_target - theorem basic_smooth_vector_bundle_core.cont_mdiff_at_proj - theorem basic_smooth_vector_bundle_core.cont_mdiff_on_proj - theorem basic_smooth_vector_bundle_core.cont_mdiff_proj - theorem basic_smooth_vector_bundle_core.cont_mdiff_within_at_proj - theorem basic_smooth_vector_bundle_core.smooth_at_proj - theorem basic_smooth_vector_bundle_core.smooth_const_section - theorem basic_smooth_vector_bundle_core.smooth_iff_target - theorem basic_smooth_vector_bundle_core.smooth_on_proj - theorem basic_smooth_vector_bundle_core.smooth_proj - theorem basic_smooth_vector_bundle_core.smooth_within_at_proj - theorem tangent_bundle.cont_mdiff_at_proj - theorem tangent_bundle.cont_mdiff_on_proj - theorem tangent_bundle.cont_mdiff_proj - theorem tangent_bundle.cont_mdiff_within_at_proj - theorem tangent_bundle.smooth_at_proj - theorem tangent_bundle.smooth_on_proj - theorem tangent_bundle.smooth_proj - theorem tangent_bundle.smooth_within_at_proj - theorem tangent_bundle.smooth_zero_section - def tangent_bundle.zero_section Modified src/geometry/manifold/mfderiv.lean + theorem tangent_map_fst - theorem tangent_map_tangent_bundle_proj + theorem tangent_map_within_fst - theorem tangent_map_within_tangent_bundle_proj Deleted src/geometry/manifold/tangent_bundle.lean - theorem basic_smooth_vector_bundle_core.base_set - def basic_smooth_vector_bundle_core.chart - theorem basic_smooth_vector_bundle_core.chart_apply - theorem basic_smooth_vector_bundle_core.chart_source - theorem basic_smooth_vector_bundle_core.chart_target - theorem basic_smooth_vector_bundle_core.coe_chart_at_fst - theorem basic_smooth_vector_bundle_core.coe_chart_at_symm_fst - theorem basic_smooth_vector_bundle_core.coord_change_comp' - theorem basic_smooth_vector_bundle_core.coord_change_comp_eq_self' - theorem basic_smooth_vector_bundle_core.coord_change_comp_eq_self - theorem basic_smooth_vector_bundle_core.coord_change_continuous - theorem basic_smooth_vector_bundle_core.coord_change_self' - theorem basic_smooth_vector_bundle_core.coord_change_smooth - theorem basic_smooth_vector_bundle_core.mem_atlas_iff - theorem basic_smooth_vector_bundle_core.mem_chart_source_iff - theorem basic_smooth_vector_bundle_core.mem_chart_target_iff - theorem basic_smooth_vector_bundle_core.target - def basic_smooth_vector_bundle_core.to_vector_bundle_core - structure basic_smooth_vector_bundle_core - def tangent_bundle.proj - theorem tangent_bundle.proj_apply - def tangent_bundle - def tangent_bundle_core - theorem tangent_bundle_model_space_chart_at - theorem tangent_bundle_model_space_coe_chart_at - theorem tangent_bundle_model_space_coe_chart_at_symm - def tangent_bundle_model_space_homeomorph - theorem tangent_bundle_model_space_homeomorph_coe - theorem tangent_bundle_model_space_homeomorph_coe_symm - theorem tangent_bundle_proj_continuous - theorem tangent_bundle_proj_open - def tangent_space - def trivial_basic_smooth_vector_bundle_core Modified src/geometry/manifold/vector_bundle/basic.lean + theorem bundle.cont_mdiff_at_proj + theorem bundle.cont_mdiff_at_total_space + theorem bundle.cont_mdiff_on_proj + theorem bundle.cont_mdiff_proj + theorem bundle.cont_mdiff_within_at_proj + theorem bundle.cont_mdiff_within_at_total_space + theorem bundle.smooth_at_proj + theorem bundle.smooth_on_proj + theorem bundle.smooth_proj + theorem bundle.smooth_within_at_proj + theorem bundle.smooth_zero_section + theorem fiber_bundle.charted_space_chart_at_symm_fst Modified src/geometry/manifold/vector_bundle/tangent.lean + theorem cont_diff_on_fderiv_coord_change - theorem hidden.cont_diff_on_fderiv_coord_change - def hidden.tangent_bundle - def hidden.tangent_bundle_core - theorem hidden.tangent_bundle_core_coord_change_achart - theorem hidden.tangent_bundle_model_space_chart_at - theorem hidden.tangent_bundle_model_space_coe_chart_at - theorem hidden.tangent_bundle_model_space_coe_chart_at_symm - def hidden.tangent_bundle_model_space_homeomorph - theorem hidden.tangent_bundle_model_space_homeomorph_coe - theorem hidden.tangent_bundle_model_space_homeomorph_coe_symm - def hidden.tangent_space - theorem hidden.tangent_space_chart_at - theorem hidden.tangent_space_chart_at_to_local_equiv + theorem tangent_bundle.chart_at_to_local_equiv + theorem tangent_bundle.coe_chart_at_fst + theorem tangent_bundle.coe_chart_at_symm_fst + theorem tangent_bundle.mem_chart_source_iff + theorem tangent_bundle.mem_chart_target_iff + theorem tangent_bundle.trivialization_at_apply + theorem tangent_bundle.trivialization_at_base_set + theorem tangent_bundle.trivialization_at_eq_local_triv + theorem tangent_bundle.trivialization_at_fst + theorem tangent_bundle.trivialization_at_source + theorem tangent_bundle.trivialization_at_target + def tangent_bundle + def tangent_bundle_core + theorem tangent_bundle_core_coord_change_achart + theorem tangent_bundle_model_space_chart_at + theorem tangent_bundle_model_space_coe_chart_at + theorem tangent_bundle_model_space_coe_chart_at_symm + def tangent_bundle_model_space_homeomorph + theorem tangent_bundle_model_space_homeomorph_coe + theorem tangent_bundle_model_space_homeomorph_coe_symm + def tangent_space Modified src/topology/fiber_bundle/basic.lean + theorem fiber_bundle.continuous_at_total_space + theorem fiber_bundle.continuous_within_at_total_space + theorem fiber_bundle.mem_trivialization_at_proj_source + theorem fiber_bundle.trivialization_at_proj_fst Modified src/topology/vector_bundle/basic.lean + def bundle.zero_section + theorem bundle.zero_section_proj + theorem bundle.zero_section_snd 2023-03-28 22:29:20 b99e2d5 feat(combinatorics/simple_graph/connected): support of connected components (#18442) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.connected_component.connected_component_mk_eq_of_adj + theorem simple_graph.connected_component.connected_component_mk_mem + def simple_graph.connected_component.iso_equiv_supp + theorem simple_graph.connected_component.iso_image_comp_eq_map_iff_eq_comp + theorem simple_graph.connected_component.iso_inv_image_comp_eq_iff_eq_map + theorem simple_graph.connected_component.mem_supp_iff + def simple_graph.connected_component.supp + theorem simple_graph.connected_component.supp_inj + theorem simple_graph.connected_component.supp_injective + def simple_graph.iso.connected_component_equiv + theorem simple_graph.iso.connected_component_equiv_refl + theorem simple_graph.iso.connected_component_equiv_symm + theorem simple_graph.iso.connected_component_equiv_trans + theorem simple_graph.iso.reachable_iff + theorem simple_graph.iso.symm_apply_reachable Modified src/combinatorics/simple_graph/ends/defs.lean 2023-03-28 21:02:25 160f568 feat(algebraic_topology/dold_kan): tools for compatibilities (#17922) Tools are introduced in order to construct Dold-Kan equivalences with good definitional properties. ESTIMATED CHANGES Added src/algebraic_topology/dold_kan/compatibility.lean + def algebraic_topology.dold_kan.compatibility.equivalence + theorem algebraic_topology.dold_kan.compatibility.equivalence_functor + def algebraic_topology.dold_kan.compatibility.equivalence₀ + def algebraic_topology.dold_kan.compatibility.equivalence₁ + def algebraic_topology.dold_kan.compatibility.equivalence₁_counit_iso + theorem algebraic_topology.dold_kan.compatibility.equivalence₁_counit_iso_eq + theorem algebraic_topology.dold_kan.compatibility.equivalence₁_inverse + def algebraic_topology.dold_kan.compatibility.equivalence₁_unit_iso + theorem algebraic_topology.dold_kan.compatibility.equivalence₁_unit_iso_eq + def algebraic_topology.dold_kan.compatibility.equivalence₂ + def algebraic_topology.dold_kan.compatibility.equivalence₂_counit_iso + theorem algebraic_topology.dold_kan.compatibility.equivalence₂_counit_iso_eq + theorem algebraic_topology.dold_kan.compatibility.equivalence₂_inverse + def algebraic_topology.dold_kan.compatibility.equivalence₂_unit_iso + theorem algebraic_topology.dold_kan.compatibility.equivalence₂_unit_iso_eq 2023-03-28 11:22:01 0148d45 chore(category_theory/adjunction/opposites): backport removal of simp lemmas (#18680) Some of the lemmas generated by `simps` in https://github.com/leanprover-community/mathlib4/pull/2424 are bad according to the simpNF linter, and have proved hard to fix by hand. Fortunately, they are simply not needed. This PR verifies this by backporting their removal to mathlib3. Compiles locally, lets hope CI agrees. ESTIMATED CHANGES Modified src/category_theory/adjunction/opposites.lean +/- def category_theory.adjunction.adjoint_of_op_adjoint_op +/- def category_theory.adjunction.op_adjoint_op_of_adjoint 2023-03-28 07:28:37 ef5f2ce feat(set_theory/zfc/basic): simpler/more general `Class.ext` (#18306) I failed to notice `set.ext` was simpler and more general than my custom `Class.ext` lemma. As such, I've replaced it. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean +/- theorem Class.ext +/- theorem Class.ext_iff 2023-03-28 01:31:58 b31173e chore(analysis/locally_convex/with_seminorms): remove unnecessary positivity assumption (#18659) In the boundedness definition it is not necessary to assume that the bound is positive. ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean Modified src/analysis/schwartz_space.lean 2023-03-27 18:59:04 de87d50 feat(algebra/order/monoid/min_max): `a₁ * b₁ ≤ a₂ * b₂ → a₁ ≤ a₂ ∨ b₁ ≤ b₂` (#18667) Complete the API. ESTIMATED CHANGES Modified src/algebra/order/monoid/canonical/defs.lean + theorem le_mul_of_le_left + theorem le_mul_of_le_right Modified src/algebra/order/monoid/min_max.lean + theorem le_or_le_of_mul_le_mul + theorem le_or_lt_of_mul_le_mul + theorem lt_or_le_of_mul_le_mul +/- theorem lt_or_lt_of_mul_lt_mul +/- theorem mul_lt_mul_iff_of_le_of_le Modified src/order/basic.lean + theorem gt_or_eq_of_le 2023-03-27 13:45:21 728baa2 feat(archive/imo/imo2006_q5): IMO 2006 Q5 (#15613) See module docstring for a thorough explanation of the proof. ESTIMATED CHANGES Added archive/imo/imo2006_q5.lean + theorem imo2006_q5' + theorem imo2006_q5 + theorem int.add_eq_add_of_nat_abs_eq_of_nat_abs_eq + theorem int.nat_abs_eq_of_chain_dvd + theorem polynomial.is_periodic_pt_eval_two + theorem polynomial.iterate_comp_sub_X_ne Modified src/data/int/basic.lean + theorem int.sign_coe_add_one + theorem int.sign_neg_succ_of_nat Modified src/data/int/order/basic.lean + theorem int.sign_add_eq_of_sign_eq Modified src/data/list/cycle.lean + theorem cycle.mem_map Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.nat_degree_iterate_comp Modified src/data/polynomial/eval.lean + theorem polynomial.iterate_comp_eval + theorem polynomial.iterate_comp_eval₂ 2023-03-27 11:20:17 b8627db refactor(topology/algebra/module/strong_topology): split of local convexity (#18671) The reason for this split is not only to reduce the import tree, but also to find a good home for proving `with_seminorm` versions of the local convexity results. ESTIMATED CHANGES Added src/analysis/locally_convex/strong_topology.lean + theorem continuous_linear_map.strong_topology.locally_convex_space Modified src/topology/algebra/module/strong_topology.lean - theorem continuous_linear_map.strong_topology.locally_convex_space 2023-03-27 10:14:40 9015c51 feat(ring_theory/complex): trace and norm of a complex number (#18658) ESTIMATED CHANGES Added src/ring_theory/complex.lean + theorem algebra.left_mul_matrix_complex + theorem algebra.norm_complex_apply + theorem algebra.norm_complex_eq + theorem algebra.trace_complex_apply 2023-03-27 10:14:39 b68f340 feat(ring_theory/trace): trace of product rings (#18656) Probably not a very useful result, but thought I'd add it to get some intuition for `trace`. I didn't bother with `pi` because we don't have the analogous `linear_map.trace` statements either. ESTIMATED CHANGES Modified src/ring_theory/trace.lean + theorem algebra.trace_prod + theorem algebra.trace_prod_apply 2023-03-27 08:37:39 f209a5a feat(data/zmod/basic): `zmod.val_min_abs` lemmas (#18119) ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.val_min_abs_nat_cast_of_half_lt + theorem zmod.val_min_abs_nat_cast_of_le_half + theorem zmod.val_min_nat_abs_nat_cast_eq_self 2023-03-27 02:38:29 3dec44d feat(representation_theory/group_cohomology_resolution): add isomorphism with nth inhomogeneous cochains (#18159) Given a $k$-linear $G$-representation $A,$ this defines the $k$-linear isomorphism between functions $G^n \to A$ and representation morphisms $Hom(k[G^{n + 1}], A),$ called `Rep.diagonal_hom_equiv`. ESTIMATED CHANGES Modified src/category_theory/linear/basic.lean + def category_theory.linear.hom_congr + theorem category_theory.linear.hom_congr_apply + theorem category_theory.linear.hom_congr_symm_apply Modified src/linear_algebra/finsupp.lean + theorem finsupp.llift_apply + theorem finsupp.llift_symm_apply Modified src/representation_theory/Action.lean Modified src/representation_theory/Rep.lean + theorem Rep.Action_ρ_eq_ρ + theorem Rep.left_regular_hom_apply + theorem Rep.left_regular_hom_equiv_symm_single + theorem Rep.monoidal_category.braiding_hom_apply + theorem Rep.monoidal_category.braiding_inv_apply + theorem Rep.monoidal_closed.linear_hom_equiv_comm_hom + theorem Rep.monoidal_closed.linear_hom_equiv_comm_symm_hom + theorem Rep.monoidal_closed.linear_hom_equiv_hom + theorem Rep.monoidal_closed.linear_hom_equiv_symm_hom + theorem Rep.of_ρ_apply + def representation.Rep_of_tprod_iso + theorem representation.Rep_of_tprod_iso_apply + theorem representation.Rep_of_tprod_iso_inv_apply Modified src/representation_theory/basic.lean + theorem representation.of_mul_action_single Modified src/representation_theory/group_cohomology_resolution.lean + theorem Rep.diagonal_hom_equiv_apply + theorem Rep.diagonal_hom_equiv_symm_apply 2023-03-26 23:49:07 c5dd931 feat(set_theory/zfc/basic): tweak Class hom lemmas (#18295) This PR renames a bunch of `hom` lemmas to better match the style of the rest of mathlib, and tags them as `norm_cast`. We also add the corresponding lemmas for the union. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Class.coe_apply + theorem Class.coe_diff + theorem Class.coe_empty + theorem Class.coe_insert + theorem Class.coe_inter + theorem Class.coe_mem - theorem Class.coe_mem_powerset + theorem Class.coe_powerset + theorem Class.coe_sUnion + theorem Class.coe_sep + theorem Class.coe_subset + theorem Class.coe_union - theorem Class.diff_hom - theorem Class.empty_hom - theorem Class.insert_hom - theorem Class.inter_hom - theorem Class.mem_hom_left - theorem Class.mem_hom_right + theorem Class.powerset_apply - theorem Class.powerset_hom + theorem Class.sUnion_apply - theorem Class.sUnion_hom - theorem Class.sep_hom - theorem Class.subset_hom - theorem Class.union_hom 2023-03-26 19:10:16 ce86f4e feat(analysis/locally_convex/with_seminorms): convergence along filters (#18664) ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean + theorem with_seminorms.tendsto_nhds' + theorem with_seminorms.tendsto_nhds + theorem with_seminorms.tendsto_nhds_at_top 2023-03-26 17:00:47 cea83e1 feat(data/finmap): add an equivalence with pairs `(keys, lookup)` (#18151) A non-dependent version of the equivalence requested [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Proving.20equality.20of.20sigma.20types). ESTIMATED CHANGES Modified src/data/finmap.lean + def finmap.keys_lookup_equiv + theorem finmap.keys_lookup_equiv_symm_apply_keys + theorem finmap.keys_lookup_equiv_symm_apply_lookup + theorem finmap.lookup_eq_some_iff + theorem finmap.mem_lookup_iff + theorem finmap.nodup_entries + theorem finmap.sigma_keys_lookup + theorem multiset.nodup_keys + theorem multiset.nodupkeys.nodup 2023-03-26 17:00:46 b67044b feat(set_theory/ordinal/arithmetic): miscellaneous arithmetic lemmas (#15990) Will be used to prove statements about the Cantor Normal Form. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.add_sub_add_cancel + theorem ordinal.mod_le + theorem ordinal.mod_mod + theorem ordinal.mod_mod_of_dvd + theorem ordinal.mul_add_mod_self + theorem ordinal.mul_mod Modified src/set_theory/ordinal/exponential.lean + theorem ordinal.div_opow_log_pos +/- theorem ordinal.opow_dvd_opow +/- theorem ordinal.opow_dvd_opow_iff Modified src/set_theory/ordinal/notation.lean 2023-03-26 13:57:30 c227d10 chore(data/set/pairwise): split (#17880) This PR will split most of the lemmas in `data.set.pairwise` which are independent of the `data.set.lattice`. It makes a lot of files no longer depend on `data.set.lattice`. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/port.20progress/near/315072418) mathlib4 PR: https://github.com/leanprover-community/mathlib4/pull/1184 ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/data/finset/option.lean Modified src/data/list/nodup.lean Modified src/data/multiset/finset_ops.lean Modified src/data/prod/tprod.lean Modified src/data/set/intervals/group.lean Renamed src/data/set/pairwise.lean to src/data/set/pairwise/basic.lean - theorem pairwise.bUnion_injective - theorem pairwise.subset_of_bUnion_subset_bUnion - theorem set.bUnion_diff_bUnion_eq - theorem set.pairwise_Union - theorem set.pairwise_disjoint.bUnion - theorem set.pairwise_disjoint.subset_of_bUnion_subset_bUnion - theorem set.pairwise_disjoint_Union - theorem set.pairwise_disjoint_sUnion - theorem set.pairwise_sUnion Added src/data/set/pairwise/lattice.lean + theorem pairwise.bUnion_injective + theorem pairwise.subset_of_bUnion_subset_bUnion + theorem set.bUnion_diff_bUnion_eq + theorem set.pairwise_Union + theorem set.pairwise_disjoint.bUnion + theorem set.pairwise_disjoint.subset_of_bUnion_subset_bUnion + theorem set.pairwise_disjoint_Union + theorem set.pairwise_disjoint_sUnion + theorem set.pairwise_sUnion Modified src/data/set/pointwise/smul.lean Modified src/order/antichain.lean Modified src/order/chain.lean Modified src/order/succ_pred/interval_succ.lean 2023-03-26 10:46:16 76de8ae chore(*): Fix mistakes (#18654) Fix naming errors and non-defeq diamonds recently introduced. Those were discovered during the port. ESTIMATED CHANGES Modified src/algebra/field/opposite.lean Modified src/algebra/group/opposite.lean Modified src/algebra/ring/defs.lean Modified src/algebra/ring/opposite.lean Modified src/data/set/intervals/ord_connected.lean Modified src/number_theory/multiplicity.lean 2023-03-26 01:05:13 e8da5f2 chore(topology/basic): backport another generalization to `Sort*` (#18660) * Generalize `is_closed_Union` to `Sort*`. * Drop `is_open_Inter_prop` and `is_closed_Union_prop`. ESTIMATED CHANGES Modified src/topology/basic.lean +/- theorem is_closed_Union - theorem is_closed_Union_prop - theorem is_open_Inter_prop 2023-03-25 17:27:44 55d771d feat(topology/*): add lemmas about `𝓝[⋃ i, s i] a` (#18321) * Add `theorem nhds_within_eq_nhds`, `nhds_within_bUnion`, `nhds_within_sUnion`, `nhds_within_Union`, `nhds_within_inter_of_mem'`. * Add `locally_finite.nhds_within_Union`, use it to golf `locally_finite.is_closed_Union` and `locally_finite.closure_Union`. * Reformulate `continuous_subtype_nhds_cover` in terms of `continuous_on`, rename to `continuous_of_cover_nhds`. * Reformulate `continuous_subtype_is_closed_cover` in terms of `continuous_on`, several versions are named `locally_finite.continuous_on_Union`, `locally_finite.continuous`, and primed versions of these lemmas. * Reorder imports. ESTIMATED CHANGES Modified src/data/analysis/topology.lean Modified src/topology/constructions.lean - theorem continuous_subtype_is_closed_cover - theorem continuous_subtype_nhds_cover Modified src/topology/continuous_function/basic.lean Modified src/topology/continuous_on.lean + theorem continuous_of_cover_nhds + theorem nhds_within_Union + theorem nhds_within_bUnion + theorem nhds_within_eq_nhds + theorem nhds_within_inter_of_mem' + theorem nhds_within_sUnion Modified src/topology/locally_finite.lean + theorem locally_finite.continuous_on_Union' + theorem locally_finite.continuous_on_Union +/- theorem locally_finite.is_closed_Union Modified src/topology/subset_properties.lean 2023-03-25 15:44:10 d3af060 chore(analysis/normed_space/basic): introduce `norm_smul_le` (#18650) Currently `norm_smul_le x y` is just a special case of `(norm_smul x y).le`; but if in future we generalize `normed_space` to work over normed rings, it will continue to hold where `norm_smul` no longer does. This adjusts downstream proofs to use the weaker lemma too when the stronger one isn't needed, both so that we have less to fix if/when we make the suggested refactor, and because the new spelling is shorter. This adds the corresponding `nnnorm` and `dist` and `nndist` lemmas too. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem dist_smul_le + theorem nndist_smul_le + theorem nnnorm_smul_le + theorem norm_smul_le Modified src/analysis/normed_space/completion.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/star/multiplier.lean Modified src/analysis/quaternion.lean Modified src/measure_theory/function/strongly_measurable/basic.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/compact.lean Modified src/topology/continuous_function/zero_at_infty.lean 2023-03-25 15:44:09 0e3aacd feat(analysis/convex/topology): Closure of an open segment (#18589) The closure of an open segment is the corresponding closed segment. ESTIMATED CHANGES Modified src/analysis/convex/topology.lean + theorem closure_open_segment + theorem segment_subset_closure_open_segment 2023-03-25 12:39:05 517cc14 feat(data/finset/pointwise): `s ∩ t * s ∪ t ⊆ s * t` (#17961) and distributivity of `set.to_finset`/`set.finite.to_finset` over algebraic operations. ESTIMATED CHANGES Modified src/data/finset/n_ary.lean + theorem finset.image₂_inter_union_subset + theorem finset.image₂_union_inter_subset + theorem set.finite.to_finset_image2 + theorem set.to_finset_image2 Modified src/data/finset/pointwise.lean + theorem finset.card_one + theorem finset.card_smul_finset + theorem finset.image_smul_comm + theorem finset.image_smul_distrib + theorem finset.inter_mul_union_subset + theorem finset.union_mul_inter_subset + theorem set.finite.to_finset_mul + theorem set.finite.to_finset_one + theorem set.finite.to_finset_smul + theorem set.finite.to_finset_smul_set + theorem set.finite.to_finset_vsub + theorem set.to_finset_mul + theorem set.to_finset_one + theorem set.to_finset_smul + theorem set.to_finset_smul_set + theorem set.to_finset_vsub Modified src/data/polynomial/ring_division.lean Modified src/data/set/finite.lean Modified src/data/set/n_ary.lean + theorem set.image2_inter_union_subset + theorem set.image2_union_inter_subset Modified src/data/set/pointwise/basic.lean + theorem set.inter_mul_union_subset + theorem set.union_mul_inter_subset Modified src/data/set/pointwise/finite.lean + theorem set.finite_one Modified src/data/set/pointwise/smul.lean + theorem set.image_smul_comm + theorem set.image_smul_distrib 2023-03-25 10:14:26 0ca15f4 chore(category_theory/limits/shapes/concrete_category): Delete empty file (#18653) This file was made empty in #9864 but not deleted. ESTIMATED CHANGES Deleted src/category_theory/limits/shapes/concrete_category.lean 2023-03-25 06:31:08 cb3ceec chore(*): add mathlib4 synchronization comments (#18646) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Group.basic` * `algebra.star.free` * `analysis.convex.segment` * `analysis.convex.star` * `category_theory.concrete_category.elementwise` * `category_theory.limits.concrete_category` * `category_theory.limits.shapes.diagonal` * `category_theory.limits.shapes.types` * `category_theory.localization.construction` * `category_theory.monad.basic` * `category_theory.monoidal.natural_transformation` * `category_theory.morphism_property` * `category_theory.sites.grothendieck` * `data.finset.sym` * `data.mv_polynomial.equiv` * `data.polynomial.field_division` * `group_theory.free_product` * `information_theory.hamming` * `linear_algebra.affine_space.affine_subspace` * `linear_algebra.affine_space.midpoint` * `linear_algebra.affine_space.restrict` * `number_theory.fermat4` * `number_theory.padics.padic_norm` * `ring_theory.polynomial.content` ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/algebra/star/free.lean Modified src/analysis/convex/segment.lean Modified src/analysis/convex/star.lean Modified src/category_theory/concrete_category/elementwise.lean Modified src/category_theory/limits/concrete_category.lean Modified src/category_theory/limits/shapes/diagonal.lean Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/localization/construction.lean Modified src/category_theory/monad/basic.lean Modified src/category_theory/monoidal/natural_transformation.lean Modified src/category_theory/morphism_property.lean Modified src/category_theory/sites/grothendieck.lean Modified src/data/finset/sym.lean Modified src/data/mv_polynomial/equiv.lean Modified src/data/polynomial/field_division.lean Modified src/group_theory/free_product.lean Modified src/information_theory/hamming.lean Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/affine_space/midpoint.lean Modified src/linear_algebra/affine_space/restrict.lean Modified src/number_theory/fermat4.lean Modified src/number_theory/padics/padic_norm.lean Modified src/ring_theory/polynomial/content.lean 2023-03-24 21:41:32 72e87ce fix(tactic/ring_exp): `X^(2^3) = X^8` not `X^6` (#18645) Apparently `ring_exp` didn't correctly handle the exponentiation of coefficients, returning the product instead of the power as a coefficient. It still returned the right `expr`, so the faulty value is only used when checking that two terms are the same and so we can add their coefficients. In other words, this bug could only be triggered when `ring_exp` ends up adding `X^(a^b)` with `X^(a*b)` where `a` and `b` are both numerals. Thanks to @alainchmt for reporting the bug! ESTIMATED CHANGES Modified src/tactic/ring_exp.lean Modified test/ring_exp.lean 2023-03-24 21:41:31 46b633f refactor(analysis/inner_product_space/basic): do not extend normed_add_comm_group (#18583) This replaces `[inner_product_space K V]` with `[normed_add_comm_group V] [inner_product_space K V]`. Before this PR, we had `inner_product_space K V extends normed_add_comm_group V`. At first glance this is a rather strange arrangement; we certainly don't have `module R V extends add_comm_group V`. The argument usually goes that `Derived A B extends Base B` is unsafe, because the `Derived.toBase` instance has no way of knowing which `A` to look for. For `inner_product_space K V` we argued that this problem doesn't apply, as `is_R_or_C K` means that in practice there are only two possible values of `K`. This is indeed enough to stop typeclass search grinding to a halt. The motivation for the old design is described by @dupuisf [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Dangerous.20instance.20vs.20elaboration.20problems/near/210594971): > However, when I do (the contents of this PR), I run into some very annoying elaboration issues where I have to constantly spoonfeed it `𝕜` and/or `α` in lemmas that rewrite norms in terms of inner products, even though the relevant instance is directly present in the context. While it may ease elaboration issues, there are a number of new problems that `inner_product_space K V extends normed_add_comm_group V` causes: 1. It is confusing when compared to all other typeclasses. After being told to write ```lean variables [add_comm_group U] [module R U] variables [normed_add_comm_group V] [normed_space R V] ``` it is natural to assume that the inner product space version would be ```lean variables [normed_add_comm_group W] [inner_product_space K W] ``` But writing this leads to `W` having two unrelated addition operations! 2. It doesn't allow a space `W` to be an inner product space over both R and C. For a (normed) module, you can write ```lean variables [add_comm_group U] [module R U] [module C U] variables [normed_add_comm_group V] [normed_space R V] [normed_space C V] ``` but writing `[inner_product_space R W] [inner_product_space C W]` again puts two unrelated `+` operators on `V` 3. It doesn't compose with other normed typeclasses. We can talk about a (normed) module with multiplication as ```lean variables [ring U] [module R U] variables [normed_ring V] [normed_space K V] ``` but once again, typing `[normed_ring W] [inner_product_space K W]` gives us two unrelated `+` operators. This prevents us generalizing over `real`, `complex`, and `quaternion`. We could work around this by defining variants of `inner_product_space` for `normed_ring A`, `normed_comm_ring A`, `normed_division_ring A`, `normed_field A`, but this doesn't scale well. If we do things "the module way" then we only need one new typeclass instead of four, ```lean class inner_product_algebra (K A) [is_R_or_C K] [normed_ring A] extends normed_algebra K A, inner_product_space K A ``` 5. The "`is_R_or_C` makes it OK" argument stops working if we generalize to [quaternionic inner product spaces](https://link.springer.com/chapter/10.1007/978-94-009-3713-0_13) The majority of this PR is adding `[normed_add_comm_group _]` to every `variables` line about `inner_product_space`. The rest is specifying the scalar manually where previously unification would find it for us. [This Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/inner_product_space.20and.20normed_algebra/near/341848831) has some initial discussion about this change. ESTIMATED CHANGES Modified archive/100-theorems-list/57_herons_formula.lean Modified archive/imo/imo2019_q2.lean Modified src/analysis/calculus/bump_function_inner.lean Modified src/analysis/calculus/conformal/inner_product.lean Modified src/analysis/convex/cone/basic.lean Modified src/analysis/fourier/add_circle.lean Modified src/analysis/inner_product_space/adjoint.lean Modified src/analysis/inner_product_space/basic.lean +/- theorem inner_map_complex +/- def orthogonal_family +/- theorem real_inner_comm +/- theorem real_inner_self_nonneg Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/conformal_linear_map.lean Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/lax_milgram.lean Modified src/analysis/inner_product_space/orientation.lean +/- theorem orientation.volume_form_map Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/positive.lean Modified src/analysis/inner_product_space/projection.lean +/- theorem linear_isometry.map_orthogonal_projection' +/- theorem linear_isometry.map_orthogonal_projection +/- theorem orthogonal_projection_map_apply +/- theorem reflection_map +/- theorem reflection_map_apply Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/inner_product_space/spectrum.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/analysis/inner_product_space/two_dim.lean +/- theorem orientation.area_form_map +/- theorem orientation.kahler_map +/- theorem orientation.right_angle_rotation_map' +/- theorem orientation.right_angle_rotation_map Modified src/analysis/matrix.lean Modified src/analysis/quaternion.lean Modified src/analysis/von_neumann_algebra/basic.lean +/- structure von_neumann_algebra Modified src/geometry/euclidean/angle/oriented/affine.lean Modified src/geometry/euclidean/angle/oriented/basic.lean Modified src/geometry/euclidean/angle/oriented/right_angle.lean Modified src/geometry/euclidean/angle/oriented/rotation.lean Modified src/geometry/euclidean/angle/sphere.lean Modified src/geometry/euclidean/angle/unoriented/affine.lean +/- theorem affine_isometry.angle_map Modified src/geometry/euclidean/angle/unoriented/basic.lean Modified src/geometry/euclidean/angle/unoriented/conformal.lean +/- theorem inner_product_geometry.conformal_at.preserves_angle +/- theorem inner_product_geometry.is_conformal_map.preserves_angle Modified src/geometry/euclidean/angle/unoriented/right_angle.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/inversion.lean Modified src/geometry/euclidean/monge_point.lean Modified src/geometry/euclidean/sphere/basic.lean Modified src/geometry/euclidean/sphere/power.lean Modified src/geometry/euclidean/sphere/ptolemy.lean Modified src/geometry/euclidean/sphere/second_inter.lean Modified src/geometry/euclidean/triangle.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/linear_algebra/matrix/ldl.lean Modified src/linear_algebra/matrix/pos_def.lean + def matrix.inner_product_space.of_matrix Modified src/linear_algebra/matrix/spectrum.lean Modified src/measure_theory/function/ae_eq_of_integral.lean +/- theorem measure_theory.ae_eq_zero_of_forall_inner Modified src/measure_theory/function/conditional_expectation/basic.lean +/- theorem measure_theory.ae_strongly_measurable'.const_inner +/- theorem measure_theory.norm_condexp_L2_le_one Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/special_functions/inner.lean Modified src/measure_theory/function/strongly_measurable/inner.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/haar_of_basis.lean Modified src/measure_theory/measure/haar_of_inner.lean 2023-03-24 18:27:09 d11893b fix(*): missing universe polymorphism (#18644) These are all just typo fixes, no proof adaptations. This deliberately leaves alone things related to category theory and algebraic geometry, as there the lack of polymorphism is likely deliberate. ESTIMATED CHANGES Modified src/analysis/normed_space/M_structure.lean Modified src/data/list/func.lean +/- theorem list.func.nil_sub +/- theorem list.func.sub_nil Modified src/field_theory/separable_degree.lean Modified src/linear_algebra/bilinear_form.lean Modified src/logic/equiv/list.lean +/- def equiv.list_equiv_self_of_equiv_nat Modified src/measure_theory/integral/circle_transform.lean Modified src/model_theory/elementary_maps.lean +/- theorem first_order.language.elementary_embedding.map_bounded_formula +/- theorem first_order.language.elementary_embedding.map_formula Modified src/number_theory/legendre_symbol/gauss_sum.lean +/- theorem char.card_pow_card Modified src/number_theory/legendre_symbol/quadratic_char.lean +/- theorem quadratic_char_card_card 2023-03-24 14:33:22 945bc74 chore(data/matrix/kronecker): make the `R` argument implicit (#18624) This was copied erroneously from the `tensor_product` section, where an explicit `R` _is_ needed. ESTIMATED CHANGES Modified src/data/matrix/kronecker.lean 2023-03-24 12:53:51 540b766 feat(tactic/linear_combination): allow `linear_combination with { exponent := n }` (#15428) #15425 will solve problems where the goal is not a linear combination of hypotheses, but a *power* of the goal is. This PR provides a more natural certificate for these proofs. Writing `linear_combination ... with { exponent := 2 }` will square the goal before subtracting the linear combination. In principle this could be useful even outside of `polyrith`. ESTIMATED CHANGES Modified src/tactic/linear_combination.lean Modified test/linear_combination.lean 2023-03-24 07:37:25 97eab48 chore(*): add mathlib4 synchronization comments (#18642) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.char_p.algebra` * `analysis.normed_space.M_structure` * `category_theory.groupoid.vertex_group` * `category_theory.limits.shapes.multiequalizer` * `category_theory.limits.shapes.reflexive` * `combinatorics.derangements.basic` * `combinatorics.simple_graph.degree_sum` * `data.polynomial.denoms_clearable` * `data.polynomial.ring_division` * `data.set.sups` * `linear_algebra.affine_space.affine_equiv` * `number_theory.pythagorean_triples` * `number_theory.zsqrtd.basic` * `number_theory.zsqrtd.to_real` * `ring_theory.localization.num_denom` * `topology.path_connected` ESTIMATED CHANGES Modified src/algebra/char_p/algebra.lean Modified src/analysis/normed_space/M_structure.lean Modified src/category_theory/groupoid/vertex_group.lean Modified src/category_theory/limits/shapes/multiequalizer.lean Modified src/category_theory/limits/shapes/reflexive.lean Modified src/combinatorics/derangements/basic.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/data/polynomial/denoms_clearable.lean Modified src/data/polynomial/ring_division.lean Modified src/data/set/sups.lean Modified src/linear_algebra/affine_space/affine_equiv.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/number_theory/zsqrtd/to_real.lean Modified src/ring_theory/localization/num_denom.lean Modified src/topology/path_connected.lean 2023-03-24 01:43:32 e9ce88c feat(order/upper_lower/basic): The upper closure is bounded below (#18637) and its lower bounds are the same as those of the original set. ESTIMATED CHANGES Modified src/order/upper_lower/basic.lean + theorem bdd_above_lower_closure + theorem bdd_below_upper_closure + theorem lower_bounds_upper_closure + theorem upper_bounds_lower_closure 2023-03-23 23:41:06 72c366d feat(ring_theory/mv_polynomial/ideal): lemmas about monomial ideals (#18633) Inspired by [this Zulip message](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/.F0.9D.94.BD.E2.82.82.5B.CE.B1.2C.20.CE.B2.2C.20.CE.B3.5D.20.2F.20.28.CE.B1.C2.B2.2C.20.CE.B2.C2.B2.2C.20.CE.B3.C2.B2.29/near/292327061). Instead of defining `ideal_ge'` directly, we show results about the more natural spelling with `ideal.span`. This also adds a handful of results about `dvd` on `mv_polynomial`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/division.lean + theorem add_monoid_algebra.of'_dvd_iff_mod_of_eq_zero Added src/algebra/monoid_algebra/ideal.lean + theorem add_monoid_algebra.mem_ideal_span_of'_image + theorem monoid_algebra.mem_ideal_span_of_image Modified src/data/mv_polynomial/division.lean + theorem mv_polynomial.X_dvd_X + theorem mv_polynomial.X_dvd_iff_mod_monomial_eq_zero + theorem mv_polynomial.X_dvd_monomial + theorem mv_polynomial.monomial_dvd_monomial + theorem mv_polynomial.monomial_one_dvd_iff_mod_monomial_eq_zero + theorem mv_polynomial.monomial_one_dvd_monomial_one Added src/ring_theory/mv_polynomial/ideal.lean + theorem mv_polynomial.mem_ideal_span_X_image + theorem mv_polynomial.mem_ideal_span_monomial_image + theorem mv_polynomial.mem_ideal_span_monomial_image_iff_dvd 2023-03-23 22:20:53 0caf370 feat(representation_theory/Rep): describe monoidal closed structure (#18148) The monoidal closed structure on `Rep k G` defines an internal hom of representations; we show this agrees with `representation.lin_hom`. Moreover, the maps defining the hom-set bijection come from the tensor-hom adjunction for $k$-modules. ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean + theorem Module.ihom_coev_app + theorem Module.ihom_ev_app + theorem Module.ihom_map_apply + theorem Module.monoidal_closed_pre_app Modified src/algebra/category/Mon/basic.lean Modified src/category_theory/closed/functor_category.lean + theorem category_theory.functor.ihom_coev_app + theorem category_theory.functor.ihom_ev_app + theorem category_theory.functor.ihom_map Modified src/category_theory/closed/monoidal.lean + theorem category_theory.monoidal_closed.of_equiv_curry_def + theorem category_theory.monoidal_closed.of_equiv_uncurry_def Modified src/representation_theory/Action.lean + theorem Action.functor_category_equivalence.functor_def + theorem Action.functor_category_equivalence.inverse_def + theorem Action.functor_category_monoidal_equivalence.counit_app + theorem Action.functor_category_monoidal_equivalence.functor_map + theorem Action.functor_category_monoidal_equivalence.inv_counit_app_hom + theorem Action.functor_category_monoidal_equivalence.inv_unit_app_app + theorem Action.functor_category_monoidal_equivalence.inverse_map + theorem Action.functor_category_monoidal_equivalence.unit_app_hom + theorem Action.functor_category_monoidal_equivalence.ε_app + theorem Action.functor_category_monoidal_equivalence.μ_app + theorem Action.functor_category_monoidal_equivalence.μ_iso_inv_app Modified src/representation_theory/Rep.lean + theorem Rep.ihom_coev_app_def + theorem Rep.ihom_coev_app_hom + theorem Rep.ihom_ev_app_hom + theorem Rep.ihom_map_hom + theorem Rep.ihom_obj_ρ + theorem Rep.ihom_obj_ρ_def + theorem Rep.monoidal_closed_curry_hom + theorem Rep.monoidal_closed_uncurry_hom 2023-03-23 21:18:31 842557b chore(number_theory/pell): Move def. of solution type and API to beginning (#18639) On the suggestion of @eric-wieser, this PR separates moving the definition of the type of solutions and the API lemmas to the beginning of the file, to help with the reviewing of #18626. ESTIMATED CHANGES Modified src/number_theory/pell.lean 2023-03-23 18:37:37 b19481d feat(order/antichain): Antichains are order-connected (#18636) ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean Modified src/order/antichain.lean + theorem is_antichain.not_lt + theorem is_antichain_iff_forall_not_lt 2023-03-23 15:25:39 3353f66 chore(*): golf using `acc_lift₂_iff` and `well_founded_lift₂_iff` (#18526) ESTIMATED CHANGES Modified src/order/antisymmetrization.lean Modified src/order/rel_iso/basic.lean + theorem acc_lift_on₂'_iff + theorem acc_lift₂_iff + def quotient.mk_rel_hom + theorem well_founded_lift_on₂'_iff +/- theorem well_founded_lift₂_iff Modified src/set_theory/zfc/basic.lean +/- theorem Set.mem_wf 2023-03-23 10:21:49 dc9e5ba chore(set_theory/game/pgame): golf le and lf basic API (#18498) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean - def pgame.le_lf +/- theorem pgame.lf.not_ge +/- def pgame.lf +/- theorem pgame.not_lf 2023-03-23 07:52:55 8ef6f08 chore(*): add mathlib4 synchronization comments (#18634) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.lie.subalgebra` * `category_theory.limits.shapes.kernel_pair` * `category_theory.monoidal.preadditive` * `category_theory.preadditive.single_obj` * `linear_algebra.sesquilinear_form` * `number_theory.padics.padic_val` * `ring_theory.localization.fraction_ring` * `topology.algebra.uniform_ring` * `topology.covering` * `topology.fiber_bundle.basic` ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean Modified src/category_theory/limits/shapes/kernel_pair.lean Modified src/category_theory/monoidal/preadditive.lean Modified src/category_theory/preadditive/single_obj.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/number_theory/padics/padic_val.lean Modified src/ring_theory/localization/fraction_ring.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/covering.lean Modified src/topology/fiber_bundle/basic.lean 2023-03-22 10:05:48 57e09a1 feat(algebra/monoid_algebra): add division by a generator (#15905) This generalizes `polynomial.div_X`. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/X_i.20divides.20f.20if.20f.3D0.20when.20X_i.3D0/near/339570367) ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + theorem add_monoid_algebra.mul_single_apply_of_not_exists_add + theorem add_monoid_algebra.single_mul_apply_of_not_exists_add + theorem monoid_algebra.mul_single_apply_of_not_exists_mul + theorem monoid_algebra.single_mul_apply_of_not_exists_mul Added src/algebra/monoid_algebra/division.lean + theorem add_monoid_algebra.add_div_of + theorem add_monoid_algebra.div_of_add + theorem add_monoid_algebra.div_of_add_mod_of + theorem add_monoid_algebra.div_of_apply + theorem add_monoid_algebra.div_of_zero + theorem add_monoid_algebra.mod_of_add_div_of + theorem add_monoid_algebra.mod_of_apply_add_self + theorem add_monoid_algebra.mod_of_apply_of_exists_add + theorem add_monoid_algebra.mod_of_apply_of_not_exists_add + theorem add_monoid_algebra.mod_of_apply_self_add + theorem add_monoid_algebra.mul_of'_div_of + theorem add_monoid_algebra.mul_of'_mod_of + theorem add_monoid_algebra.of'_div_of + theorem add_monoid_algebra.of'_mod_of + theorem add_monoid_algebra.of'_mul_div_of + theorem add_monoid_algebra.of'_mul_mod_of + theorem add_monoid_algebra.support_div_of + theorem add_monoid_algebra.zero_div_of Added src/data/mv_polynomial/division.lean + theorem mv_polynomial.X_div_monomial + theorem mv_polynomial.X_mul_div_monomial + theorem mv_polynomial.X_mul_mod_monomial + theorem mv_polynomial.add_div_monomial + theorem mv_polynomial.coeff_div_monomial + theorem mv_polynomial.coeff_mod_monomial_of_le + theorem mv_polynomial.coeff_mod_monomial_of_not_le + theorem mv_polynomial.div_monomial_add + theorem mv_polynomial.div_monomial_add_mod_monomial + theorem mv_polynomial.div_monomial_add_mod_monomial_single + theorem mv_polynomial.div_monomial_monomial + theorem mv_polynomial.div_monomial_monomial_mul + theorem mv_polynomial.div_monomial_mul_monomial + theorem mv_polynomial.div_monomial_zero + theorem mv_polynomial.mod_monomial_X + theorem mv_polynomial.mod_monomial_add_div_monomial + theorem mv_polynomial.mod_monomial_add_div_monomial_single + theorem mv_polynomial.monomial_mod_monomial + theorem mv_polynomial.monomial_mul_mod_monomial + theorem mv_polynomial.mul_X_div_monomial + theorem mv_polynomial.mul_X_mod_monomial + theorem mv_polynomial.mul_monomial_mod_monomial + theorem mv_polynomial.support_div_monomial + theorem mv_polynomial.zero_div_monomial Modified src/data/polynomial/inductions.lean 2023-03-22 06:13:18 c085f30 chore(*): add mathlib4 synchronization comments (#18630) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.category.Mon.basic` * `algebra.squarefree` * `category_theory.closed.monoidal` * `category_theory.single_obj` * `data.zmod.coprime` * `field_theory.perfect_closure` * `linear_algebra.invariant_basis_number` * `ring_theory.euclidean_domain` * `ring_theory.flat` * `ring_theory.int.basic` * `ring_theory.principal_ideal_domain` * `ring_theory.unique_factorization_domain` ESTIMATED CHANGES Modified src/algebra/category/Mon/basic.lean Modified src/algebra/squarefree.lean Modified src/category_theory/closed/monoidal.lean Modified src/category_theory/single_obj.lean Modified src/data/zmod/coprime.lean Modified src/field_theory/perfect_closure.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/flat.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean 2023-03-21 19:41:17 dd6388c chore(analysis/calculus/cont_diff): split into two files (#18627) The file `cont_diff.lean` takes 3824 lines. We cut it into two files, `cont_diff_def.lean` and `cont_diff.lean`, the former (of 1597 lines) containing general definitions and the latter (of 2264 lines) containing results on the preservation of smoothness by the usual operations and various API extensions that depend on these. There is no single change in maths or code, this is purely a split PR. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean - theorem cont_diff.cont_diff_at - theorem cont_diff.cont_diff_on - theorem cont_diff.cont_diff_within_at - theorem cont_diff.continuous - theorem cont_diff.continuous_fderiv - theorem cont_diff.continuous_fderiv_apply - theorem cont_diff.continuous_iterated_fderiv - theorem cont_diff.differentiable - theorem cont_diff.differentiable_iterated_fderiv - theorem cont_diff.of_le - theorem cont_diff.of_succ - theorem cont_diff.one_of_succ - def cont_diff - theorem cont_diff_all_iff_nat - theorem cont_diff_at.congr_of_eventually_eq - theorem cont_diff_at.cont_diff_within_at - theorem cont_diff_at.continuous_at - theorem cont_diff_at.differentiable_at - theorem cont_diff_at.of_le - def cont_diff_at - theorem cont_diff_at_one_iff - theorem cont_diff_at_succ_iff_has_fderiv_at - theorem cont_diff_at_top - theorem cont_diff_at_zero - theorem cont_diff_iff_cont_diff_at - theorem cont_diff_iff_continuous_differentiable - theorem cont_diff_iff_forall_nat_le - theorem cont_diff_iff_ftaylor_series - theorem cont_diff_of_differentiable_iterated_fderiv - theorem cont_diff_on.congr - theorem cont_diff_on.congr_mono - theorem cont_diff_on.cont_diff_within_at - theorem cont_diff_on.continuous_on - theorem cont_diff_on.continuous_on_fderiv_of_open - theorem cont_diff_on.continuous_on_fderiv_within - theorem cont_diff_on.continuous_on_iterated_fderiv_within - theorem cont_diff_on.differentiable_on - theorem cont_diff_on.differentiable_on_iterated_fderiv_within - theorem cont_diff_on.fderiv_of_open - theorem cont_diff_on.fderiv_within - theorem cont_diff_on.ftaylor_series_within - theorem cont_diff_on.mono - theorem cont_diff_on.of_le - theorem cont_diff_on.of_succ - theorem cont_diff_on.one_of_succ - def cont_diff_on - theorem cont_diff_on_all_iff_nat - theorem cont_diff_on_congr - theorem cont_diff_on_iff_continuous_on_differentiable_on - theorem cont_diff_on_iff_forall_nat_le - theorem cont_diff_on_of_continuous_on_differentiable_on - theorem cont_diff_on_of_differentiable_on - theorem cont_diff_on_of_locally_cont_diff_on - theorem cont_diff_on_succ_iff_fderiv_of_open - theorem cont_diff_on_succ_iff_fderiv_within - theorem cont_diff_on_succ_iff_has_fderiv_within_at - theorem cont_diff_on_succ_of_fderiv_within - theorem cont_diff_on_top - theorem cont_diff_on_top_iff_fderiv_of_open - theorem cont_diff_on_top_iff_fderiv_within - theorem cont_diff_on_univ - theorem cont_diff_on_zero - theorem cont_diff_one_iff_fderiv - theorem cont_diff_succ_iff_fderiv - theorem cont_diff_top - theorem cont_diff_top_iff_fderiv - theorem cont_diff_within_at.congr' - theorem cont_diff_within_at.congr - theorem cont_diff_within_at.congr_nhds - theorem cont_diff_within_at.congr_of_eventually_eq' - theorem cont_diff_within_at.congr_of_eventually_eq - theorem cont_diff_within_at.congr_of_eventually_eq_insert - theorem cont_diff_within_at.cont_diff_at - theorem cont_diff_within_at.cont_diff_on - theorem cont_diff_within_at.continuous_within_at - theorem cont_diff_within_at.differentiable_within_at' - theorem cont_diff_within_at.differentiable_within_at - theorem cont_diff_within_at.insert - theorem cont_diff_within_at.mono - theorem cont_diff_within_at.mono_of_mem - theorem cont_diff_within_at.of_le - def cont_diff_within_at - theorem cont_diff_within_at_congr_nhds - theorem cont_diff_within_at_iff_forall_nat_le - theorem cont_diff_within_at_insert - theorem cont_diff_within_at_inter' - theorem cont_diff_within_at_inter - theorem cont_diff_within_at_nat - theorem cont_diff_within_at_succ_iff_has_fderiv_within_at' - theorem cont_diff_within_at_succ_iff_has_fderiv_within_at - theorem cont_diff_within_at_top - theorem cont_diff_within_at_univ - theorem cont_diff_within_at_zero - theorem cont_diff_zero - theorem fderiv_iterated_fderiv - theorem filter.eventually_eq.cont_diff_within_at_iff - def ftaylor_series - def ftaylor_series_within - theorem ftaylor_series_within_univ - theorem has_compact_support.iterated_fderiv - theorem has_ftaylor_series_up_to.continuous - theorem has_ftaylor_series_up_to.differentiable - theorem has_ftaylor_series_up_to.has_fderiv_at - theorem has_ftaylor_series_up_to.has_ftaylor_series_up_to_on - theorem has_ftaylor_series_up_to.of_le - theorem has_ftaylor_series_up_to.zero_eq' - structure has_ftaylor_series_up_to - theorem has_ftaylor_series_up_to_on.congr - theorem has_ftaylor_series_up_to_on.continuous_on - theorem has_ftaylor_series_up_to_on.differentiable_at - theorem has_ftaylor_series_up_to_on.differentiable_on - theorem has_ftaylor_series_up_to_on.eq_ftaylor_series_of_unique_diff_on - theorem has_ftaylor_series_up_to_on.eventually_has_fderiv_at - theorem has_ftaylor_series_up_to_on.has_fderiv_at - theorem has_ftaylor_series_up_to_on.has_fderiv_within_at - theorem has_ftaylor_series_up_to_on.mono - theorem has_ftaylor_series_up_to_on.of_le - theorem has_ftaylor_series_up_to_on.zero_eq' - structure has_ftaylor_series_up_to_on - theorem has_ftaylor_series_up_to_on_succ_iff_left - theorem has_ftaylor_series_up_to_on_succ_iff_right - theorem has_ftaylor_series_up_to_on_top_iff - theorem has_ftaylor_series_up_to_on_univ_iff - theorem has_ftaylor_series_up_to_on_zero_iff - theorem has_ftaylor_series_up_to_succ_iff_right - theorem has_ftaylor_series_up_to_zero_iff - theorem iterated_fderiv_one_apply - theorem iterated_fderiv_succ_apply_left - theorem iterated_fderiv_succ_apply_right - theorem iterated_fderiv_succ_eq_comp_left - theorem iterated_fderiv_succ_eq_comp_right - theorem iterated_fderiv_with_zero_eq - theorem iterated_fderiv_within_congr - theorem iterated_fderiv_within_inter' - theorem iterated_fderiv_within_inter - theorem iterated_fderiv_within_inter_open - theorem iterated_fderiv_within_of_is_open - theorem iterated_fderiv_within_one_apply - theorem iterated_fderiv_within_succ_apply_left - theorem iterated_fderiv_within_succ_apply_right - theorem iterated_fderiv_within_succ_eq_comp_left - theorem iterated_fderiv_within_succ_eq_comp_right - theorem iterated_fderiv_within_univ - theorem iterated_fderiv_within_zero_apply - theorem iterated_fderiv_within_zero_eq_comp - theorem iterated_fderiv_zero_apply - theorem iterated_fderiv_zero_eq_comp - theorem norm_fderiv_iterated_fderiv - theorem norm_fderiv_within_iterated_fderiv_within - theorem norm_iterated_fderiv_fderiv - theorem norm_iterated_fderiv_within_fderiv_within - theorem norm_iterated_fderiv_within_zero - theorem norm_iterated_fderiv_zero Added src/analysis/calculus/cont_diff_def.lean + theorem cont_diff.cont_diff_at + theorem cont_diff.cont_diff_on + theorem cont_diff.cont_diff_within_at + theorem cont_diff.continuous + theorem cont_diff.continuous_fderiv + theorem cont_diff.continuous_fderiv_apply + theorem cont_diff.continuous_iterated_fderiv + theorem cont_diff.differentiable + theorem cont_diff.differentiable_iterated_fderiv + theorem cont_diff.of_le + theorem cont_diff.of_succ + theorem cont_diff.one_of_succ + def cont_diff + theorem cont_diff_all_iff_nat + theorem cont_diff_at.congr_of_eventually_eq + theorem cont_diff_at.cont_diff_within_at + theorem cont_diff_at.continuous_at + theorem cont_diff_at.differentiable_at + theorem cont_diff_at.of_le + def cont_diff_at + theorem cont_diff_at_one_iff + theorem cont_diff_at_succ_iff_has_fderiv_at + theorem cont_diff_at_top + theorem cont_diff_at_zero + theorem cont_diff_iff_cont_diff_at + theorem cont_diff_iff_continuous_differentiable + theorem cont_diff_iff_forall_nat_le + theorem cont_diff_iff_ftaylor_series + theorem cont_diff_of_differentiable_iterated_fderiv + theorem cont_diff_on.congr + theorem cont_diff_on.congr_mono + theorem cont_diff_on.cont_diff_within_at + theorem cont_diff_on.continuous_on + theorem cont_diff_on.continuous_on_fderiv_of_open + theorem cont_diff_on.continuous_on_fderiv_within + theorem cont_diff_on.continuous_on_iterated_fderiv_within + theorem cont_diff_on.differentiable_on + theorem cont_diff_on.differentiable_on_iterated_fderiv_within + theorem cont_diff_on.fderiv_of_open + theorem cont_diff_on.fderiv_within + theorem cont_diff_on.ftaylor_series_within + theorem cont_diff_on.mono + theorem cont_diff_on.of_le + theorem cont_diff_on.of_succ + theorem cont_diff_on.one_of_succ + def cont_diff_on + theorem cont_diff_on_all_iff_nat + theorem cont_diff_on_congr + theorem cont_diff_on_iff_continuous_on_differentiable_on + theorem cont_diff_on_iff_forall_nat_le + theorem cont_diff_on_of_continuous_on_differentiable_on + theorem cont_diff_on_of_differentiable_on + theorem cont_diff_on_of_locally_cont_diff_on + theorem cont_diff_on_succ_iff_fderiv_of_open + theorem cont_diff_on_succ_iff_fderiv_within + theorem cont_diff_on_succ_iff_has_fderiv_within_at + theorem cont_diff_on_succ_of_fderiv_within + theorem cont_diff_on_top + theorem cont_diff_on_top_iff_fderiv_of_open + theorem cont_diff_on_top_iff_fderiv_within + theorem cont_diff_on_univ + theorem cont_diff_on_zero + theorem cont_diff_one_iff_fderiv + theorem cont_diff_succ_iff_fderiv + theorem cont_diff_top + theorem cont_diff_top_iff_fderiv + theorem cont_diff_within_at.congr' + theorem cont_diff_within_at.congr + theorem cont_diff_within_at.congr_nhds + theorem cont_diff_within_at.congr_of_eventually_eq' + theorem cont_diff_within_at.congr_of_eventually_eq + theorem cont_diff_within_at.congr_of_eventually_eq_insert + theorem cont_diff_within_at.cont_diff_at + theorem cont_diff_within_at.cont_diff_on + theorem cont_diff_within_at.continuous_within_at + theorem cont_diff_within_at.differentiable_within_at' + theorem cont_diff_within_at.differentiable_within_at + theorem cont_diff_within_at.insert + theorem cont_diff_within_at.mono + theorem cont_diff_within_at.mono_of_mem + theorem cont_diff_within_at.of_le + def cont_diff_within_at + theorem cont_diff_within_at_congr_nhds + theorem cont_diff_within_at_iff_forall_nat_le + theorem cont_diff_within_at_insert + theorem cont_diff_within_at_inter' + theorem cont_diff_within_at_inter + theorem cont_diff_within_at_nat + theorem cont_diff_within_at_succ_iff_has_fderiv_within_at' + theorem cont_diff_within_at_succ_iff_has_fderiv_within_at + theorem cont_diff_within_at_top + theorem cont_diff_within_at_univ + theorem cont_diff_within_at_zero + theorem cont_diff_zero + theorem fderiv_iterated_fderiv + theorem filter.eventually_eq.cont_diff_within_at_iff + def ftaylor_series + def ftaylor_series_within + theorem ftaylor_series_within_univ + theorem has_compact_support.iterated_fderiv + theorem has_ftaylor_series_up_to.continuous + theorem has_ftaylor_series_up_to.differentiable + theorem has_ftaylor_series_up_to.has_fderiv_at + theorem has_ftaylor_series_up_to.has_ftaylor_series_up_to_on + theorem has_ftaylor_series_up_to.of_le + theorem has_ftaylor_series_up_to.zero_eq' + structure has_ftaylor_series_up_to + theorem has_ftaylor_series_up_to_on.congr + theorem has_ftaylor_series_up_to_on.continuous_on + theorem has_ftaylor_series_up_to_on.differentiable_at + theorem has_ftaylor_series_up_to_on.differentiable_on + theorem has_ftaylor_series_up_to_on.eq_ftaylor_series_of_unique_diff_on + theorem has_ftaylor_series_up_to_on.eventually_has_fderiv_at + theorem has_ftaylor_series_up_to_on.has_fderiv_at + theorem has_ftaylor_series_up_to_on.has_fderiv_within_at + theorem has_ftaylor_series_up_to_on.mono + theorem has_ftaylor_series_up_to_on.of_le + theorem has_ftaylor_series_up_to_on.zero_eq' + structure has_ftaylor_series_up_to_on + theorem has_ftaylor_series_up_to_on_succ_iff_left + theorem has_ftaylor_series_up_to_on_succ_iff_right + theorem has_ftaylor_series_up_to_on_top_iff + theorem has_ftaylor_series_up_to_on_univ_iff + theorem has_ftaylor_series_up_to_on_zero_iff + theorem has_ftaylor_series_up_to_succ_iff_right + theorem has_ftaylor_series_up_to_zero_iff + theorem iterated_fderiv_one_apply + theorem iterated_fderiv_succ_apply_left + theorem iterated_fderiv_succ_apply_right + theorem iterated_fderiv_succ_eq_comp_left + theorem iterated_fderiv_succ_eq_comp_right + theorem iterated_fderiv_with_zero_eq + theorem iterated_fderiv_within_congr + theorem iterated_fderiv_within_inter' + theorem iterated_fderiv_within_inter + theorem iterated_fderiv_within_inter_open + theorem iterated_fderiv_within_of_is_open + theorem iterated_fderiv_within_one_apply + theorem iterated_fderiv_within_succ_apply_left + theorem iterated_fderiv_within_succ_apply_right + theorem iterated_fderiv_within_succ_eq_comp_left + theorem iterated_fderiv_within_succ_eq_comp_right + theorem iterated_fderiv_within_univ + theorem iterated_fderiv_within_zero_apply + theorem iterated_fderiv_within_zero_eq_comp + theorem iterated_fderiv_zero_apply + theorem iterated_fderiv_zero_eq_comp + theorem norm_fderiv_iterated_fderiv + theorem norm_fderiv_within_iterated_fderiv_within + theorem norm_iterated_fderiv_fderiv + theorem norm_iterated_fderiv_within_fderiv_within + theorem norm_iterated_fderiv_within_zero + theorem norm_iterated_fderiv_zero 2023-03-21 17:28:57 aa3a420 chore(*): add mathlib4 synchronization comments (#18625) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.direct_sum.finsupp` * `algebra.free_algebra` * `ring_theory.noetherian` ESTIMATED CHANGES Modified src/algebra/direct_sum/finsupp.lean Modified src/algebra/free_algebra.lean Modified src/ring_theory/noetherian.lean 2023-03-21 06:51:36 4601791 feat(analysis/calculus/cont_diff): formula for iterated derivative of composition with linear maps (#18592) And missing API for derivatives and iterated derivatives. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff.fderiv_right - theorem cont_diff_at.cont_diff_at_fderiv + theorem cont_diff_at.fderiv + theorem cont_diff_at.fderiv_right + theorem cont_diff_iff_ftaylor_series - theorem cont_diff_on_iff_ftaylor_series + theorem continuous_linear_equiv.iterated_fderiv_within_comp_left + theorem continuous_linear_equiv.iterated_fderiv_within_comp_right + theorem continuous_linear_map.iterated_fderiv_comp_left + theorem continuous_linear_map.iterated_fderiv_comp_right + theorem continuous_linear_map.iterated_fderiv_within_comp_left + theorem continuous_linear_map.iterated_fderiv_within_comp_right + theorem iterated_fderiv_add_apply' + theorem iterated_fderiv_within_add_apply' + theorem linear_isometry.norm_iterated_fderiv_comp_left + theorem linear_isometry.norm_iterated_fderiv_within_comp_left + theorem linear_isometry_equiv.norm_iterated_fderiv_comp_left + theorem linear_isometry_equiv.norm_iterated_fderiv_comp_right + theorem linear_isometry_equiv.norm_iterated_fderiv_within_comp_left + theorem linear_isometry_equiv.norm_iterated_fderiv_within_comp_right +/- theorem norm_iterated_fderiv_within_zero +/- theorem norm_iterated_fderiv_zero Modified src/analysis/calculus/fderiv.lean + theorem continuous_linear_equiv.comp_right_differentiable_at_iff + theorem continuous_linear_equiv.comp_right_differentiable_iff + theorem continuous_linear_equiv.comp_right_differentiable_on_iff + theorem continuous_linear_equiv.comp_right_differentiable_within_at_iff + theorem continuous_linear_equiv.comp_right_fderiv + theorem continuous_linear_equiv.comp_right_fderiv_within + theorem continuous_linear_equiv.comp_right_has_fderiv_at_iff' + theorem continuous_linear_equiv.comp_right_has_fderiv_at_iff + theorem continuous_linear_equiv.comp_right_has_fderiv_within_at_iff' + theorem continuous_linear_equiv.comp_right_has_fderiv_within_at_iff + theorem continuous_linear_map.fderiv_of_bilinear + theorem continuous_linear_map.fderiv_within_of_bilinear + theorem continuous_linear_map.has_fderiv_at_of_bilinear + theorem continuous_linear_map.has_fderiv_within_at_of_bilinear + theorem fderiv_within_congr' Modified src/analysis/normed_space/linear_isometry.lean + def linear_isometry_equiv.ulift Modified src/analysis/normed_space/multilinear.lean + def continuous_linear_equiv.comp_continuous_multilinear_mapL + theorem continuous_linear_equiv.comp_continuous_multilinear_mapL_apply + theorem continuous_linear_equiv.comp_continuous_multilinear_mapL_symm +/- theorem continuous_multilinear_map.comp_continuous_linear_mapL_apply + def continuous_multilinear_map.comp_continuous_linear_map_equivL + theorem continuous_multilinear_map.comp_continuous_linear_map_equivL_apply + theorem continuous_multilinear_map.comp_continuous_linear_map_equivL_symm + theorem continuous_multilinear_map.norm_comp_continuous_linear_isometry_equiv + theorem continuous_multilinear_map.norm_comp_continuous_linear_isometry_le + theorem linear_isometry.norm_comp_continuous_multilinear_map Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.norm_compL_le + theorem continuous_linear_map.norm_compSL_le + theorem continuous_linear_map.norm_precompL_le + theorem continuous_linear_map.norm_precompR_le Modified src/topology/algebra/module/multilinear.lean 2023-03-20 06:49:15 290a7ba chore(*): add mathlib4 synchronization comments (#18623) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.dual_number` * `data.finsupp.well_founded` * `data.nat.multiplicity` * `data.polynomial.div` * `data.zmod.algebra` * `data.zmod.parity` * `ring_theory.ideal.idempotent_fg` * `ring_theory.mv_polynomial.symmetric` ESTIMATED CHANGES Modified src/algebra/dual_number.lean Modified src/data/finsupp/well_founded.lean Modified src/data/nat/multiplicity.lean Modified src/data/polynomial/div.lean Modified src/data/zmod/algebra.lean Modified src/data/zmod/parity.lean Modified src/ring_theory/ideal/idempotent_fg.lean Modified src/ring_theory/mv_polynomial/symmetric.lean 2023-03-19 20:21:12 40cc79d feat(data/matrix/kronecker): lemmas about trace, det, and inv (#18610) The key results here are: * `det (A ⊗ₖ B) = det A ^ fintype.card n * det B ^ fintype.card m` * `trace (A ⊗ₖ B) = trace A * trace B` * `(A ⊗ₖ B)⁻¹ = (A⁻¹ ⊗ₖ B⁻¹)` and the tensor analogues: * `det (A ⊗ₖₜ[R] B) = (det A ^ fintype.card n) ⊗ₜ[R] (det B ^ fintype.card m)` * `trace (A ⊗ₖₜ[R] B) = trace A ⊗ₜ[R] trace B` This also adds some lemmas linking the kronecker product to block diagonal matrices. Generalized from https://github.com/eric-wieser/lean-matrix-cookbook ESTIMATED CHANGES Modified src/data/matrix/kronecker.lean + theorem matrix.det_kronecker + theorem matrix.det_kronecker_map_bilinear + theorem matrix.det_kronecker_tmul + theorem matrix.diagonal_kronecker + theorem matrix.diagonal_kronecker_tmul + theorem matrix.inv_kronecker + theorem matrix.kronecker_diagonal + theorem matrix.kronecker_map_diagonal_left + theorem matrix.kronecker_map_diagonal_right + theorem matrix.kronecker_one + theorem matrix.kronecker_tmul_diagonal + theorem matrix.one_kronecker + theorem matrix.trace_kronecker + theorem matrix.trace_kronecker_map_bilinear + theorem matrix.trace_kronecker_tmul 2023-03-19 20:21:11 9abfa6f refactor(linear_algebra/matrix/hermitian): golf and generalize (#18565) A handful of these results can be proven trivially using results about `is_self_adjoint`. This also generalizes the typeclass arguments throughout the file, though largely in a mathematically meaningless way. ESTIMATED CHANGES Modified src/algebra/star/pi.lean Modified src/algebra/star/prod.lean Modified src/algebra/star/self_adjoint.lean + theorem is_self_adjoint_add_star_self + theorem is_self_adjoint_star_add_self Modified src/linear_algebra/matrix/hermitian.lean +/- theorem matrix.is_hermitian_diagonal + theorem matrix.is_hermitian_diagonal_of_self_adjoint +/- theorem matrix.is_hermitian_mul_conj_transpose_self +/- theorem matrix.is_hermitian_transpose_mul_self 2023-03-19 19:14:00 7ec2946 feat(number_theory/pell): group structure (#18568) This continues the sequence of PRs related to the Pell equation. We define a type for the solutions of `x^2 - d*y^2 = 1` and give it the structure of a commutative mutiplicative group with compatible negation. See [this thread on Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Proving.20Pell's.20equation.20is.20solvable/near/338175458). ESTIMATED CHANGES Modified src/number_theory/pell.lean + theorem pell.is_pell_solution_iff_mem_unitary + theorem pell.solution₁.coe_mk + theorem pell.solution₁.ext + def pell.solution₁.mk + theorem pell.solution₁.prop + theorem pell.solution₁.prop_x + theorem pell.solution₁.prop_y + theorem pell.solution₁.x_inv + theorem pell.solution₁.x_mk + theorem pell.solution₁.x_mul + theorem pell.solution₁.x_neg + theorem pell.solution₁.x_one + theorem pell.solution₁.y_inv + theorem pell.solution₁.y_mk + theorem pell.solution₁.y_mul + theorem pell.solution₁.y_neg + theorem pell.solution₁.y_one + def pell.solution₁ Modified src/number_theory/zsqrtd/basic.lean + theorem zsqrtd.mker_norm_eq_unitary + theorem zsqrtd.norm_eq_one_iff_mem_unitary 2023-03-19 11:16:55 e96bdfb chore(linear_algebra/affine_space/affine_subspace) add set_like instance (#18622) Needed for the port. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean +/- theorem affine_subspace.coe_injective + theorem affine_subspace.ext Modified src/linear_algebra/affine_space/pointwise.lean 2023-03-19 08:24:29 c78cad3 chore(analysis/inner_product_space/basic): explicit `𝕜` argument for `innerₛₗ` and `innerSL` (#18613) A reasonable fraction of the uses of these functions required either `@` or a type annotation before this change. ESTIMATED CHANGES Modified src/analysis/convex/cone/basic.lean Modified src/analysis/inner_product_space/basic.lean +/- theorem innerSL_apply +/- theorem innerSL_apply_coe +/- theorem innerSL_apply_norm +/- theorem innerSL_flip_apply +/- theorem innerₛₗ_apply +/- theorem innerₛₗ_apply_coe +/- theorem orthogonal_eq_inter Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/dual.lean +/- theorem inner_product_space.innerSL_norm Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/inner_product_space/two_dim.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/integral/set_integral.lean 2023-03-19 06:10:09 1dac236 chore(*): add mathlib4 synchronization comments (#18621) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.group_ring_action.invariant` * `algebra.quadratic_discriminant` * `data.dfinsupp.well_founded` * `data.mv_polynomial.comm_ring` * `data.mv_polynomial.invertible` * `data.mv_polynomial.supported` * `data.mv_polynomial.variables` * `data.zmod.basic` * `ring_theory.finiteness` * `ring_theory.multiplicity` * `ring_theory.polynomial.chebyshev` * `ring_theory.valuation.integers` * `topology.category.Born` ESTIMATED CHANGES Modified src/algebra/group_ring_action/invariant.lean Modified src/algebra/quadratic_discriminant.lean Modified src/data/dfinsupp/well_founded.lean Modified src/data/mv_polynomial/comm_ring.lean Modified src/data/mv_polynomial/invertible.lean Modified src/data/mv_polynomial/supported.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/zmod/basic.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/chebyshev.lean Modified src/ring_theory/valuation/integers.lean Modified src/topology/category/Born.lean 2023-03-19 01:36:21 05101c3 feat(algebra/group/commute): `div` lemmas (#18607) `commute` analogs of existing lemmas. Also normalise lemma names about `commute` and `nat.cast`/`int.cast`, following existing `int.cast` lemmas. ESTIMATED CHANGES Modified src/algebra/field/basic.lean Modified src/algebra/group/commute.lean - theorem commute.inv_inv Modified src/algebra/group_power/lemmas.lean +/- theorem commute.cast_int_left +/- theorem commute.cast_int_right +/- theorem commute.cast_nat_mul_self +/- theorem commute.self_cast_nat_mul +/- theorem commute.self_cast_nat_mul_cast_nat_mul 2023-03-18 23:36:05 4e7e700 chore(linear_algebra/free_module/basic): golf a proof (#18615) We construct the basis in another file, we may as well use it. ESTIMATED CHANGES Modified src/linear_algebra/free_module/basic.lean 2023-03-18 18:29:34 1f4705c perf(group_theory/torsion): Speedup `torsion_mul_equiv` (#18614) From 17s to 0.1s on my gitpod. ESTIMATED CHANGES Modified src/group_theory/torsion.lean + theorem monoid.is_torsion.torsion_mul_equiv_apply + theorem monoid.is_torsion.torsion_mul_equiv_symm_apply_coe 2023-03-18 11:38:18 f430769 chore(topology/algebra/module/basic): move a lemma to a new file (#18608) Also slightly generalize from `[is_simple_module R R]` to `[is_simple_module R N]`. ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean - theorem linear_map.is_closed_or_dense_ker Modified src/topology/algebra/module/finite_dimension.lean Added src/topology/algebra/module/simple.lean + theorem linear_map.is_closed_or_dense_ker 2023-03-18 09:58:11 027ff1e chore(geometry/euclidean/sphere/basic): generalize typeclasses (#18605) `cospherical_empty` asks for `P` to be a real inner product space when all it needs is `nonempty P`. The motivation for this PR is that it fixes a linter error in #18583; lean complains that we are carrying around the type `V` for no reason. The alternative here would be to force all these typeclass arguments to be present in the constructor for `euclidean_space.sphere` and use `no_lint unused_arguments` ESTIMATED CHANGES Modified src/geometry/euclidean/sphere/basic.lean +/- theorem euclidean_geometry.cospherical_empty +/- structure euclidean_geometry.sphere 2023-03-18 06:40:16 9328723 chore(*): add mathlib4 synchronization comments (#18595) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebra.subalgebra.pointwise` * `algebra.algebra.unitization` * `algebra.char_p.exp_char` * `algebra.direct_sum.module` * `algebra.field.ulift` * `algebra.monoid_algebra.degree` * `algebra.monoid_algebra.no_zero_divisors` * `algebra.triv_sq_zero_ext` * `category_theory.category.Bipointed` * `category_theory.concrete_category.bundled_hom` * `category_theory.elementwise` * `category_theory.preadditive.of_biproducts` * `data.complex.exponential` * `data.mv_polynomial.basic` * `data.mv_polynomial.comap` * `data.mv_polynomial.counit` * `data.mv_polynomial.rename` * `data.polynomial.cancel_leads` * `data.polynomial.identities` * `group_theory.perm.cycle.basic` * `measure_theory.card_measurable_space` * `ring_theory.algebra_tower` * `ring_theory.coprime.ideal` * `ring_theory.free_ring` * `ring_theory.ideal.prod` * `ring_theory.mv_polynomial.tower` * `ring_theory.polynomial.opposites` * `ring_theory.subring.pointwise` * `ring_theory.valuation.basic` * `topology.algebra.nonarchimedean.basic` * `topology.algebra.open_subgroup` * `topology.algebra.with_zero_topology` * `topology.homotopy.equiv` ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/pointwise.lean Modified src/algebra/algebra/unitization.lean Modified src/algebra/char_p/exp_char.lean Modified src/algebra/direct_sum/module.lean Modified src/algebra/field/ulift.lean Modified src/algebra/monoid_algebra/degree.lean Modified src/algebra/monoid_algebra/no_zero_divisors.lean Modified src/algebra/triv_sq_zero_ext.lean Modified src/category_theory/category/Bipointed.lean Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/category_theory/elementwise.lean Modified src/category_theory/preadditive/of_biproducts.lean Modified src/data/complex/exponential.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/comap.lean Modified src/data/mv_polynomial/counit.lean Modified src/data/mv_polynomial/rename.lean Modified src/data/polynomial/cancel_leads.lean Modified src/data/polynomial/identities.lean Modified src/group_theory/perm/cycle/basic.lean Modified src/measure_theory/card_measurable_space.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/coprime/ideal.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/ideal/prod.lean Modified src/ring_theory/mv_polynomial/tower.lean Modified src/ring_theory/polynomial/opposites.lean Modified src/ring_theory/subring/pointwise.lean Modified src/ring_theory/valuation/basic.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/with_zero_topology.lean Modified src/topology/homotopy/equiv.lean 2023-03-18 04:16:55 e085d1d feat(algebra/quadratic_discriminant): generalize, use `ne_zero` (#18606) * Add `discrim_neg`. * Add `discrim_eq_sq_of_quadratic_eq_zero`, an implication from `quadratic_eq_zero_iff_discrim_eq_sq` that doesn't need extra assumptions. * Assume `[ne_zero (2 : _)]` instead of `2 ≠ 0` or `[invertible (2 : _)]`. * Drop unneeded assumptions in `quadratic_ne_zero_of_discrim_ne_sq`, use `s ^ 2` instead of `s * s`. * Add `discrim_le_zero_of_nonpos` and `discrim_lt_zero_of_neg`. ESTIMATED CHANGES Modified src/algebra/quadratic_discriminant.lean + theorem discrim_eq_sq_of_quadratic_eq_zero + theorem discrim_le_zero_of_nonpos + theorem discrim_lt_zero_of_neg + theorem discrim_neg +/- theorem quadratic_eq_zero_iff_discrim_eq_sq +/- theorem quadratic_ne_zero_of_discrim_ne_sq 2023-03-18 01:10:33 20715f4 feat(data/set/sups): Set family operations (#18172) Followup to #17947. Add a similar `set` API (but do not define `set.disj_sups` because I don't need it), correct a few lemma names and connect to upper/lower sets. ESTIMATED CHANGES Modified src/data/finset/n_ary.lean +/- theorem finset.image_subset_image₂_left +/- theorem finset.image_subset_image₂_right + theorem finset.image₂_image₂_image₂_comm Modified src/data/finset/sups.lean +/- theorem finset.coe_infs +/- theorem finset.coe_sups + theorem finset.disj_sups_disj_sups_disj_sups_comm + theorem finset.empty_infs + theorem finset.empty_sups +/- theorem finset.image_subset_infs_left +/- theorem finset.image_subset_infs_right +/- theorem finset.image_subset_sups_left +/- theorem finset.image_subset_sups_right - def finset.infs + theorem finset.infs_empty - theorem finset.infs_empty_left - theorem finset.infs_empty_right + theorem finset.infs_eq_empty - theorem finset.infs_eq_empty_iff + theorem finset.infs_infs_infs_comm + theorem finset.infs_nonempty - theorem finset.infs_nonempty_iff +/- theorem finset.infs_singleton - theorem finset.infs_singleton_left' - theorem finset.infs_singleton_left - theorem finset.infs_singleton_right + theorem finset.infs_sups_subset_left + theorem finset.infs_sups_subset_right +/- theorem finset.mem_infs +/- theorem finset.mem_sups - theorem finset.nonempty.infs - theorem finset.nonempty.sups + theorem finset.singleton_infs + theorem finset.singleton_infs_singleton + theorem finset.singleton_sups + theorem finset.singleton_sups_singleton - def finset.sups + theorem finset.sups_empty - theorem finset.sups_empty_left - theorem finset.sups_empty_right + theorem finset.sups_eq_empty - theorem finset.sups_eq_empty_iff + theorem finset.sups_infs_subset_left + theorem finset.sups_infs_subset_right + theorem finset.sups_nonempty - theorem finset.sups_nonempty_iff +/- theorem finset.sups_singleton - theorem finset.sups_singleton_left' - theorem finset.sups_singleton_left - theorem finset.sups_singleton_right + theorem finset.sups_sups_sups_comm Modified src/data/set/n_ary.lean + theorem set.image2_image2_image2_comm Added src/data/set/sups.lean + theorem lower_closure_infs + theorem set.Union_image_inf_left + theorem set.Union_image_inf_right + theorem set.Union_image_sup_left + theorem set.Union_image_sup_right + theorem set.empty_infs + theorem set.empty_sups + theorem set.forall_infs_iff + theorem set.forall_sups_iff + theorem set.image_inf_prod + theorem set.image_subset_infs_left + theorem set.image_subset_infs_right + theorem set.image_subset_sups_left + theorem set.image_subset_sups_right + theorem set.image_sup_prod + theorem set.inf_mem_infs + theorem set.infs_assoc + theorem set.infs_comm + theorem set.infs_empty + theorem set.infs_eq_empty + theorem set.infs_infs_infs_comm + theorem set.infs_inter_subset_left + theorem set.infs_inter_subset_right + theorem set.infs_left_comm + theorem set.infs_nonempty + theorem set.infs_right_comm + theorem set.infs_singleton + theorem set.infs_subset + theorem set.infs_subset_iff + theorem set.infs_subset_left + theorem set.infs_subset_right + theorem set.infs_sups_subset_left + theorem set.infs_sups_subset_right + theorem set.infs_union_left + theorem set.infs_union_right + theorem set.mem_infs + theorem set.mem_sups + theorem set.nonempty.of_infs_left + theorem set.nonempty.of_infs_right + theorem set.nonempty.of_sups_left + theorem set.nonempty.of_sups_right + theorem set.singleton_infs + theorem set.singleton_infs_singleton + theorem set.singleton_sups + theorem set.singleton_sups_singleton + theorem set.sup_mem_sups + theorem set.sups_assoc + theorem set.sups_comm + theorem set.sups_empty + theorem set.sups_eq_empty + theorem set.sups_infs_subset_left + theorem set.sups_infs_subset_right + theorem set.sups_inter_subset_left + theorem set.sups_inter_subset_right + theorem set.sups_left_comm + theorem set.sups_nonempty + theorem set.sups_right_comm + theorem set.sups_singleton + theorem set.sups_subset + theorem set.sups_subset_iff + theorem set.sups_subset_left + theorem set.sups_subset_right + theorem set.sups_sups_sups_comm + theorem set.sups_union_left + theorem set.sups_union_right + theorem upper_closure_sups 2023-03-17 19:18:02 acebd8d feat(algebra/*/opposite): Missing instances (#18602) A few missing instances about `nat.cast`/`int.cast`/`rat.cast` and `mul_opposite`/`add_opposite`. Also add the (weirdly) missing `add_comm_group_with_one → add_comm_monoid_with_one`. Finally, this changes the defeq of `rat.cast` on `mul_opposite` to be simpler. ESTIMATED CHANGES Modified src/algebra/field/opposite.lean + theorem mul_opposite.op_rat_cast + theorem mul_opposite.unop_rat_cast Modified src/algebra/group/opposite.lean + theorem mul_opposite.op_int_cast + theorem mul_opposite.op_nat_cast + theorem mul_opposite.unop_int_cast + theorem mul_opposite.unop_nat_cast Modified src/algebra/ring/opposite.lean Modified src/data/int/cast/defs.lean Modified src/data/int/cast/lemmas.lean - theorem mul_opposite.op_int_cast - theorem mul_opposite.unop_int_cast Modified src/data/nat/cast/basic.lean - theorem mul_opposite.op_nat_cast - theorem mul_opposite.unop_nat_cast Modified src/data/rat/cast.lean - theorem mul_opposite.op_rat_cast - theorem mul_opposite.unop_rat_cast 2023-03-17 14:58:11 02ba894 chore (data/finset/sym): remove unnecessary alias (#18603) See the discussion in this [PR](https://github.com/leanprover-community/mathlib4/pull/2168) ESTIMATED CHANGES Modified src/data/finset/sym.lean 2023-03-17 14:58:10 9f0d61b fix(analysis/inner_product_space/pi_L2): add missing type cast functions (#18574) The preferred way to convert between `ι → 𝕜` and `euclidean_space 𝕜 ι` is via `pi_Lp.equiv`, as this preserves the right typing information. We use the local notation `⟪x, y⟫ₑ` to refer the euclidean inner product of `x y : ι → 𝕜`, which inserts the casting within the notation. This adds a new definition `matrix.to_euclidean_lin` as a shorthand to turn a matrix into a `linear_map` over `euclidean_space`. It also generalizes `inner_matrix_row_row` and `inner_matrix_col_col` away from `fin n` to arbitrary index types. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean - theorem matrix.conj_transpose_eq_adjoint + theorem matrix.to_euclidean_lin_conj_transpose_eq_adjoint Modified src/analysis/inner_product_space/pi_L2.lean + theorem euclidean_space.inner_pi_Lp_equiv_symm +/- theorem inner_matrix_col_col +/- theorem inner_matrix_row_row + theorem matrix.pi_Lp_equiv_to_euclidean_lin + def matrix.to_euclidean_lin + theorem matrix.to_euclidean_lin_eq_to_lin + theorem matrix.to_euclidean_lin_pi_Lp_equiv_symm Modified src/linear_algebra/matrix/hermitian.lean Modified src/linear_algebra/matrix/ldl.lean Modified src/linear_algebra/matrix/spectrum.lean 2023-03-17 14:58:09 88b8a77 chore(topology/basic): backport a generalization to Sort (#18544) mathport currently complains that these don't align. ESTIMATED CHANGES Modified src/topology/basic.lean +/- theorem is_open_Inter 2023-03-17 12:30:25 7595756 chore(data/fintype/fin): add Iio lemmas (#18600) These are the analogue to the existing `Ioi` lemmas in this file. `Iio_last_eq_map` is the dual of `Ioi_zero_eq_map`, and `Iio_cast_succ` is the dual of `Ioi_succ`. I couldn't find a better home for `map_subtype_embedding_univ`. Note that it is deliberately `subtype_embedding` and not `coe_embedding` to match the similarly-misnamed `fin.map_subtype_embedding_Iio` ESTIMATED CHANGES Modified src/data/fintype/fin.lean + theorem fin.Iio_cast_succ + theorem fin.Iio_last_eq_map + theorem fin.map_subtype_embedding_univ 2023-03-17 12:30:23 2d5739b chore(ring_theory/power_series/basic): remove commutativity assumption (#18599) Also moves a lost lemma that belongs in an earlier file. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.algebra_map_apply Modified src/ring_theory/power_series/basic.lean - theorem mv_polynomial.algebra_map_apply 2023-03-17 09:39:09 30413fc chore(algebra): generalize typeclass arguments from field to semifield (#18597) This generalizes some typeclass arguments from `field` to `semifield` and `division_ring` to `division_semiring`. The proof for `map_inv_nat_cast_smul` had to be rewritten, as it was previously proved in terms of `map_inv_int_cast_smul`. The latter is now instead proved in terms of the former. Forward-ported in https://github.com/leanprover-community/mathlib4/pull/2926 ESTIMATED CHANGES Modified src/algebra/module/basic.lean +/- theorem inv_nat_cast_smul_comm +/- theorem inv_nat_cast_smul_eq +/- theorem map_inv_nat_cast_smul Modified src/algebra/periodic.lean +/- theorem function.antiperiodic.const_inv_mul +/- theorem function.antiperiodic.const_inv_smul₀ +/- theorem function.antiperiodic.const_mul +/- theorem function.antiperiodic.const_smul₀ +/- theorem function.antiperiodic.mul_const' +/- theorem function.antiperiodic.mul_const +/- theorem function.antiperiodic.mul_const_inv +/- theorem function.periodic.const_inv_mul +/- theorem function.periodic.const_inv_smul₀ +/- theorem function.periodic.const_smul₀ +/- theorem function.periodic.div_const +/- theorem function.periodic.mul_const' +/- theorem function.periodic.mul_const +/- theorem function.periodic.mul_const_inv Modified src/algebra/star/basic.lean +/- theorem star_div' +/- theorem star_inv' +/- theorem star_zpow₀ Modified src/algebra/star/module.lean +/- theorem star_inv_nat_cast_smul Modified src/algebra/star/pointwise.lean Modified src/algebra/star/self_adjoint.lean Modified src/data/matrix/basic.lean +/- theorem matrix.conj_transpose_inv_nat_cast_smul 2023-03-17 00:32:34 13e18cf chore(algebra/ring/ulift): Split off and golf field instances (#18590) Move field-like instances on `ulift` from `algebra.ring.ulift` to a new file `algebra.field.ulift`. Golf them by declaring the `has_nat_cast` and `has_int_cast` instances earlier. ESTIMATED CHANGES Added src/algebra/field/ulift.lean + theorem ulift.down_rat_cast + theorem ulift.up_rat_cast Modified src/algebra/group/ulift.lean + theorem ulift.down_int_cast + theorem ulift.down_nat_cast - theorem ulift.int_cast_down - theorem ulift.nat_cast_down + theorem ulift.up_int_cast + theorem ulift.up_nat_cast Modified src/algebra/ring/ulift.lean - theorem ulift.rat_cast_down Modified src/field_theory/cardinality.lean 2023-03-16 20:41:23 da3fc4a feat(analysis/normed_space/quaternion_exponential): lemmas about the quaternion exponential (#18349) This gives the result that $\exp q = \exp r (\cos \|v\| + \frac{v}{\|v\|} \sin \|v\|)$ where $r$ is the real part and $v$ the imaginary part. After adding some missing algebraic lemmas, the result that $\|\exp q\| = \|\exp r\|$ is then simple. ESTIMATED CHANGES Modified src/algebra/quaternion.lean + theorem quaternion.conj_eq_neg + theorem quaternion.conj_eq_self - theorem quaternion.conj_fixed + theorem quaternion.norm_sq_add + theorem quaternion.norm_sq_smul + theorem quaternion.sq_eq_neg_norm_sq + theorem quaternion.sq_eq_norm_sq + theorem quaternion_algebra.conj_eq_neg + theorem quaternion_algebra.conj_eq_self - theorem quaternion_algebra.conj_fixed Modified src/analysis/normed_space/exponential.lean + theorem exp_series_apply_zero Added src/analysis/normed_space/quaternion_exponential.lean + theorem quaternion.conj_exp + theorem quaternion.exp_coe + theorem quaternion.exp_eq + theorem quaternion.exp_of_re_eq_zero + theorem quaternion.has_sum_exp_series_of_imaginary + theorem quaternion.im_exp + theorem quaternion.norm_exp + theorem quaternion.norm_sq_exp + theorem quaternion.re_exp Modified src/analysis/quaternion.lean + theorem quaternion.has_sum_coe + theorem quaternion.summable_coe + theorem quaternion.tsum_coe 2023-03-16 17:03:43 acee671 chore(data/{nat,int}/cast/field): generalize to division_ring (#18598) Notably, this now works on quaternions. Forward-ported at https://github.com/leanprover-community/mathlib4/pull/2928 ESTIMATED CHANGES Modified src/algebra/char_zero/lemmas.lean +/- theorem nat.cast_div_char_zero Modified src/data/int/cast/field.lean +/- theorem int.cast_div +/- theorem int.cast_neg_nat_cast Modified src/data/int/char_zero.lean +/- theorem int.cast_div_char_zero Modified src/data/nat/cast/field.lean +/- theorem nat.cast_div +/- theorem nat.cast_div_div_div_cancel_right 2023-03-16 17:03:41 34d3797 feat(number_theory/modular_forms): Jacobi theta function (#18564) Define Jacobi's theta function, and prove its functional equation using Poisson summation. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/basic.lean +/- theorem upper_half_plane.modular_S_smul + theorem upper_half_plane.modular_T_smul + theorem upper_half_plane.modular_T_zpow_smul Modified src/analysis/special_functions/gaussian.lean + theorem complex.tsum_exp_neg_mul_int_sq +/- theorem fourier_transform_gaussian_pi + theorem is_o_exp_neg_mul_sq_cocompact + theorem real.tsum_exp_neg_mul_int_sq + theorem tendsto_rpow_abs_mul_exp_neg_mul_sq_cocompact Added src/number_theory/modular_forms/jacobi_theta.lean + theorem jacobi_theta_S_smul + theorem jacobi_theta_T_sq_smul + theorem jacobi_theta_summable + theorem jacobi_theta_two_vadd + theorem jacobi_theta_unif_summable 2023-03-16 17:03:40 22f5772 feat(analysis/inner_product_space/projection): express `orthogonal_projection` using `linear_proj_of_is_compl` (#18243) We currently don't have any link between `orthogonal_projection` and `linear_proj_of_is_compl`, which blocks us from applying general algebraic facts about projection to `orthogonal_projection`. This PR fixes that. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem orthogonal_projection_coe_linear_map_eq_linear_proj + theorem orthogonal_projection_eq_linear_proj 2023-03-16 13:33:55 b3f4f00 chore(algebra/order/nonneg/*): Separate `floor_ring` from `field` (#18596) Move the `archimedean` and `floor_ring` instances out of `algebra.order.nonneg.field` into a new file `algebra.order.nonneg.floor`. ESTIMATED CHANGES Modified src/algebra/order/nonneg/field.lean - theorem nonneg.nat_ceil_coe - theorem nonneg.nat_floor_coe Added src/algebra/order/nonneg/floor.lean + theorem nonneg.nat_ceil_coe + theorem nonneg.nat_floor_coe Modified src/data/rat/nnrat.lean Modified src/data/real/nnreal.lean 2023-03-16 13:33:54 acb3d20 chore(algebra/order/field/basic): Rename `pow_minus_two_nonneg` (#18591) Rename `pow_minus_two_nonneg` to `zpow_neg_two_nonneg` and move it to `algebra.order.field.power`. ESTIMATED CHANGES Modified src/algebra/order/field/basic.lean - theorem pow_minus_two_nonneg Modified src/algebra/order/field/power.lean + theorem zpow_neg_two_nonneg Modified src/analysis/special_functions/bernstein.lean 2023-03-16 11:15:19 eea141b refactor(geometry/euclidean): split out spheres (#18220) Rearrange material related to spheres as follows: * `geometry.euclidean.sphere.power` has most of the content from the previous `geometry.euclidean.sphere` (intersecting chords / secants, which at some point should probably be refactored using an explicit definition of the power of a point). * `geometry.euclidean.sphere.ptolemy` has the proof of Ptolemy's theorem that was previously in `geometry.euclidean.sphere`. * `geometry.euclidean.sphere.basic` has most of the material previously in `geometry.euclidean.basic`: definitions of `sphere`, `cospherical` and `concyclic` and associated lemmas. * `geometry.euclidean.sphere.second_inter` has the definition and lemmas about `second_inter`. There are no changes to API or proofs. ESTIMATED CHANGES Modified archive/imo/imo2019_q2.lean Modified src/geometry/euclidean/basic.lean - theorem euclidean_geometry.concyclic.subset - structure euclidean_geometry.concyclic - theorem euclidean_geometry.concyclic_empty - theorem euclidean_geometry.concyclic_pair - theorem euclidean_geometry.concyclic_singleton - theorem euclidean_geometry.cospherical.affine_independent - theorem euclidean_geometry.cospherical.affine_independent_of_mem_of_ne - theorem euclidean_geometry.cospherical.affine_independent_of_ne - theorem euclidean_geometry.cospherical.subset - def euclidean_geometry.cospherical - theorem euclidean_geometry.cospherical_def - theorem euclidean_geometry.cospherical_empty - theorem euclidean_geometry.cospherical_iff_exists_sphere - theorem euclidean_geometry.cospherical_pair - theorem euclidean_geometry.cospherical_singleton - theorem euclidean_geometry.dist_center_eq_dist_center_of_mem_sphere' - theorem euclidean_geometry.dist_center_eq_dist_center_of_mem_sphere - theorem euclidean_geometry.dist_of_mem_subset_mk_sphere - theorem euclidean_geometry.dist_of_mem_subset_sphere - theorem euclidean_geometry.eq_of_mem_sphere_of_mem_sphere_of_finrank_eq_two - theorem euclidean_geometry.eq_of_mem_sphere_of_mem_sphere_of_mem_of_finrank_eq_two - theorem euclidean_geometry.inner_nonneg_of_dist_le_radius - theorem euclidean_geometry.inner_pos_of_dist_lt_radius - theorem euclidean_geometry.inner_pos_or_eq_of_dist_le_radius - theorem euclidean_geometry.inner_vsub_vsub_of_mem_sphere_of_mem_sphere - theorem euclidean_geometry.mem_sphere' - theorem euclidean_geometry.mem_sphere - theorem euclidean_geometry.sbtw_of_collinear_of_dist_center_lt_radius - theorem euclidean_geometry.sphere.center_eq_iff_eq_of_mem - theorem euclidean_geometry.sphere.center_ne_iff_ne_of_mem - theorem euclidean_geometry.sphere.coe_def - theorem euclidean_geometry.sphere.coe_mk - theorem euclidean_geometry.sphere.cospherical - theorem euclidean_geometry.sphere.eq_or_eq_second_inter_of_mem_mk'_span_singleton_iff_mem - theorem euclidean_geometry.sphere.mem_coe - theorem euclidean_geometry.sphere.mk_center - theorem euclidean_geometry.sphere.mk_center_radius - theorem euclidean_geometry.sphere.mk_radius - theorem euclidean_geometry.sphere.ne_iff - theorem euclidean_geometry.sphere.sbtw_second_inter - def euclidean_geometry.sphere.second_inter - theorem euclidean_geometry.sphere.second_inter_collinear - theorem euclidean_geometry.sphere.second_inter_dist - theorem euclidean_geometry.sphere.second_inter_eq_line_map - theorem euclidean_geometry.sphere.second_inter_eq_self_iff - theorem euclidean_geometry.sphere.second_inter_mem - theorem euclidean_geometry.sphere.second_inter_neg - theorem euclidean_geometry.sphere.second_inter_second_inter - theorem euclidean_geometry.sphere.second_inter_smul - theorem euclidean_geometry.sphere.second_inter_vsub_mem_affine_span - theorem euclidean_geometry.sphere.second_inter_zero - theorem euclidean_geometry.sphere.wbtw_second_inter - structure euclidean_geometry.sphere - theorem euclidean_geometry.subset_sphere - theorem euclidean_geometry.wbtw_of_collinear_of_dist_center_le_radius Modified src/geometry/euclidean/circumcenter.lean Added src/geometry/euclidean/sphere/basic.lean + theorem euclidean_geometry.concyclic.subset + structure euclidean_geometry.concyclic + theorem euclidean_geometry.concyclic_empty + theorem euclidean_geometry.concyclic_pair + theorem euclidean_geometry.concyclic_singleton + theorem euclidean_geometry.cospherical.affine_independent + theorem euclidean_geometry.cospherical.affine_independent_of_mem_of_ne + theorem euclidean_geometry.cospherical.affine_independent_of_ne + theorem euclidean_geometry.cospherical.subset + def euclidean_geometry.cospherical + theorem euclidean_geometry.cospherical_def + theorem euclidean_geometry.cospherical_empty + theorem euclidean_geometry.cospherical_iff_exists_sphere + theorem euclidean_geometry.cospherical_pair + theorem euclidean_geometry.cospherical_singleton + theorem euclidean_geometry.dist_center_eq_dist_center_of_mem_sphere' + theorem euclidean_geometry.dist_center_eq_dist_center_of_mem_sphere + theorem euclidean_geometry.dist_of_mem_subset_mk_sphere + theorem euclidean_geometry.dist_of_mem_subset_sphere + theorem euclidean_geometry.eq_of_mem_sphere_of_mem_sphere_of_finrank_eq_two + theorem euclidean_geometry.eq_of_mem_sphere_of_mem_sphere_of_mem_of_finrank_eq_two + theorem euclidean_geometry.inner_nonneg_of_dist_le_radius + theorem euclidean_geometry.inner_pos_of_dist_lt_radius + theorem euclidean_geometry.inner_pos_or_eq_of_dist_le_radius + theorem euclidean_geometry.inner_vsub_vsub_of_mem_sphere_of_mem_sphere + theorem euclidean_geometry.mem_sphere' + theorem euclidean_geometry.mem_sphere + theorem euclidean_geometry.sbtw_of_collinear_of_dist_center_lt_radius + theorem euclidean_geometry.sphere.center_eq_iff_eq_of_mem + theorem euclidean_geometry.sphere.center_ne_iff_ne_of_mem + theorem euclidean_geometry.sphere.coe_def + theorem euclidean_geometry.sphere.coe_mk + theorem euclidean_geometry.sphere.cospherical + theorem euclidean_geometry.sphere.mem_coe + theorem euclidean_geometry.sphere.mk_center + theorem euclidean_geometry.sphere.mk_center_radius + theorem euclidean_geometry.sphere.mk_radius + theorem euclidean_geometry.sphere.ne_iff + structure euclidean_geometry.sphere + theorem euclidean_geometry.subset_sphere + theorem euclidean_geometry.wbtw_of_collinear_of_dist_center_le_radius Renamed src/geometry/euclidean/sphere.lean to src/geometry/euclidean/sphere/power.lean - theorem euclidean_geometry.mul_dist_add_mul_dist_eq_mul_dist_of_cospherical Added src/geometry/euclidean/sphere/ptolemy.lean + theorem euclidean_geometry.mul_dist_add_mul_dist_eq_mul_dist_of_cospherical Added src/geometry/euclidean/sphere/second_inter.lean + theorem euclidean_geometry.sphere.eq_or_eq_second_inter_of_mem_mk'_span_singleton_iff_mem + theorem euclidean_geometry.sphere.sbtw_second_inter + def euclidean_geometry.sphere.second_inter + theorem euclidean_geometry.sphere.second_inter_collinear + theorem euclidean_geometry.sphere.second_inter_dist + theorem euclidean_geometry.sphere.second_inter_eq_line_map + theorem euclidean_geometry.sphere.second_inter_eq_self_iff + theorem euclidean_geometry.sphere.second_inter_mem + theorem euclidean_geometry.sphere.second_inter_neg + theorem euclidean_geometry.sphere.second_inter_second_inter + theorem euclidean_geometry.sphere.second_inter_smul + theorem euclidean_geometry.sphere.second_inter_vsub_mem_affine_span + theorem euclidean_geometry.sphere.second_inter_zero + theorem euclidean_geometry.sphere.wbtw_second_inter 2023-03-16 08:10:19 5120cf4 chore(data/mv_polynomial): reverse an import (#18593) As proposed on [zulip](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/!4.232887.20Data.2EMvPolynomial.2EMonad/near/342140597) ESTIMATED CHANGES Modified src/data/mv_polynomial/monad.lean + theorem mv_polynomial.mem_vars_bind₁ + theorem mv_polynomial.vars_bind₁ Modified src/data/mv_polynomial/variables.lean - theorem mv_polynomial.mem_vars_bind₁ - theorem mv_polynomial.vars_bind₁ Modified src/ring_theory/polynomial/quotient.lean 2023-03-16 06:43:27 97d1aa9 feat(probability/kernel/invariance): Define pushforward of measure along a kernel (#18244) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean Modified src/probability/kernel/basic.lean + theorem probability_theory.kernel.const_apply Modified src/probability/kernel/composition.lean Added src/probability/kernel/invariance.lean + theorem probability_theory.kernel.comp_apply_eq_map_measure + theorem probability_theory.kernel.comp_const_apply_eq_map_measure + theorem probability_theory.kernel.const_map_measure_eq_comp_const + theorem probability_theory.kernel.invariant.comp + theorem probability_theory.kernel.invariant.comp_const + theorem probability_theory.kernel.invariant.def + def probability_theory.kernel.invariant + theorem probability_theory.kernel.lintegral_map_measure + def probability_theory.kernel.map_measure + theorem probability_theory.kernel.map_measure_add + theorem probability_theory.kernel.map_measure_apply + theorem probability_theory.kernel.map_measure_smul + theorem probability_theory.kernel.map_measure_zero 2023-03-15 16:02:42 ce7e9d5 feat(algebra/triv_sq_zero_ext): lemmas about big operators (#18488) Some more results following on from #18384. For now this just has the list lemmas. The multiset and finset lemmas are hard to state cleanly. ESTIMATED CHANGES Modified src/algebra/triv_sq_zero_ext.lean + theorem triv_sq_zero_ext.fst_list_prod + theorem triv_sq_zero_ext.snd_list_prod 2023-03-15 14:32:23 a378650 chore(analysis/inner_product_space/basic): add inner_self_ne_zero (#18587) This result is trivial, but it's presence is consistent with how we have both `norm_ne_zero` and `norm_ne_zero_iff`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem inner_product_space.of_core.inner_self_ne_zero + theorem inner_self_ne_zero Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/geometry/euclidean/angle/unoriented/basic.lean Modified src/geometry/euclidean/basic.lean 2023-03-15 14:32:21 83f81ae refactor(topology/algebra/open_subgroup): use `set_like` (#18585) ESTIMATED CHANGES Modified src/field_theory/krull_topology.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/open_subgroup.lean + theorem open_subgroup.coe_coe_opens + theorem open_subgroup.coe_coe_subgroup - theorem open_subgroup.coe_injective + theorem open_subgroup.coe_opens_inf + theorem open_subgroup.coe_opens_top + theorem open_subgroup.coe_prod + theorem open_subgroup.coe_subgroup_comap + theorem open_subgroup.coe_subgroup_inf + theorem open_subgroup.coe_subgroup_injective + theorem open_subgroup.coe_subgroup_prod + theorem open_subgroup.coe_subgroup_sup + theorem open_subgroup.coe_subgroup_top - theorem open_subgroup.coe_subset + theorem open_subgroup.coe_top +/- def open_subgroup.comap +/- theorem open_subgroup.ext - theorem open_subgroup.ext_iff + theorem open_subgroup.is_clopen - theorem open_subgroup.mem_coe + theorem open_subgroup.mem_inf + theorem open_subgroup.mem_top +/- theorem subgroup.is_open_of_one_mem_interior +/- theorem subgroup.is_open_of_open_subgroup 2023-03-15 14:32:20 992efbd feat(analysis/normed/order/upper_lower): Thickening an upper set (#17257) Results about upper sets in normed ordered groups. ESTIMATED CHANGES Added src/analysis/normed/order/upper_lower.lean + theorem is_lower_set.exists_subset_ball + theorem is_lower_set.mem_interior_of_forall_lt + theorem is_upper_set.exists_subset_ball + theorem is_upper_set.mem_interior_of_forall_lt Modified src/topology/algebra/order/upper_lower.lean 2023-03-15 11:17:36 29d5700 chore(geometry/manifold/instances/sphere): speedup a proof (#18586) This goes from 15s to 1.75 seconds. I've squeezed this in multiple steps to make the proof easier to follow. ESTIMATED CHANGES Modified src/geometry/manifold/instances/sphere.lean 2023-03-15 11:17:35 0111834 chore(order/with_bot): lemmas about unbot and untop (#18582) ESTIMATED CHANGES Modified src/algebra/order/monoid/with_top.lean + theorem with_bot.unbot_one' + theorem with_bot.unbot_one + theorem with_top.untop_one' + theorem with_top.untop_one Modified src/algebra/order/ring/with_top.lean Modified src/order/succ_pred/basic.lean + theorem with_bot.succ_unbot + theorem with_top.pred_untop Modified src/order/with_bot.lean 2023-03-15 08:58:05 10bf4f8 chore(*): add mathlib4 synchronization comments (#18578) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.char_p.basic` * `algebra.char_p.invertible` * `algebra.char_p.pi` * `algebra.char_p.subring` * `algebra.char_p.two` * `algebra.polynomial.group_ring_action` * `analysis.normed.field.basic` * `analysis.normed.field.infinite_sum` * `analysis.normed.field.unit_ball` * `analysis.normed.order.lattice` * `analysis.normed_space.int` * `category_theory.bicategory.locally_discrete` * `category_theory.category.Cat.limit` * `category_theory.category.Pointed` * `category_theory.category.Quiv` * `category_theory.connected_components` * `category_theory.limits.colimit_limit` * `category_theory.limits.connected` * `category_theory.limits.constructions.filtered` * `category_theory.limits.constructions.over.connected` * `category_theory.limits.constructions.zero_objects` * `category_theory.limits.final` * `category_theory.limits.pi` * `category_theory.limits.preserves.opposites` * `category_theory.limits.preserves.shapes.images` * `category_theory.limits.preserves.shapes.kernels` * `category_theory.limits.shapes.comm_sq` * `category_theory.linear.linear_functor` * `category_theory.preadditive.left_exact` * `combinatorics.catalan` * `data.polynomial.algebra_map` * `data.polynomial.hasse_deriv` * `data.polynomial.integral_normalization` * `data.polynomial.lifts` * `data.polynomial.taylor` * `group_theory.free_abelian_group` * `linear_algebra.smodeq` * `ring_theory.localization.integer` * `ring_theory.polynomial.scale_roots` * `ring_theory.polynomial.tower` * `topology.homotopy.basic` * `topology.instances.ereal` * `topology.metric_space.cau_seq_filter` * `topology.semicontinuous` ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean Modified src/algebra/char_p/invertible.lean Modified src/algebra/char_p/pi.lean Modified src/algebra/char_p/subring.lean Modified src/algebra/char_p/two.lean Modified src/algebra/polynomial/group_ring_action.lean Modified src/analysis/normed/field/basic.lean Modified src/analysis/normed/field/infinite_sum.lean Modified src/analysis/normed/field/unit_ball.lean Modified src/analysis/normed/order/lattice.lean Modified src/analysis/normed_space/int.lean Modified src/category_theory/bicategory/locally_discrete.lean Modified src/category_theory/category/Cat/limit.lean Modified src/category_theory/category/Pointed.lean Modified src/category_theory/category/Quiv.lean Modified src/category_theory/connected_components.lean Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/constructions/filtered.lean Modified src/category_theory/limits/constructions/over/connected.lean Modified src/category_theory/limits/constructions/zero_objects.lean Modified src/category_theory/limits/final.lean Modified src/category_theory/limits/pi.lean Modified src/category_theory/limits/preserves/opposites.lean Modified src/category_theory/limits/preserves/shapes/images.lean Modified src/category_theory/limits/preserves/shapes/kernels.lean Modified src/category_theory/limits/shapes/comm_sq.lean Modified src/category_theory/linear/linear_functor.lean Modified src/category_theory/preadditive/left_exact.lean Modified src/combinatorics/catalan.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/hasse_deriv.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/lifts.lean Modified src/data/polynomial/taylor.lean Modified src/group_theory/free_abelian_group.lean Modified src/linear_algebra/smodeq.lean Modified src/ring_theory/localization/integer.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/polynomial/tower.lean Modified src/topology/homotopy/basic.lean Modified src/topology/instances/ereal.lean Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/semicontinuous.lean 2023-03-15 07:28:57 4681620 fix(analysis/inner_product_space): make type families explicit for `orthogonal_family` and `is_hilbert_sum` (#18584) Pretty much every single use of `orthogonal_family` was unable to infer this argument and so used `@`. `is_hilbert_sum` is changed for consistency. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean +/- def orthogonal_family Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/spectrum.lean 2023-03-14 18:20:43 1a313d8 feat(order/initial_seg): add lemmas about `acc` and `well_founded` (#18527) ESTIMATED CHANGES Modified src/order/initial_seg.lean + theorem well_founded_iff_well_founded_subrel + theorem {u} 2023-03-14 15:36:40 3fc0b25 chore(analysis/inner_product_space): rename `_sym` to `_symm` (#18580) This is the preferred spelling of `symmetric` in mathlib. `sym` refers to the type of unordered pairs. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean Modified src/analysis/inner_product_space/basic.lean - theorem inner_abs_conj_sym + theorem inner_abs_conj_symm - theorem inner_conj_sym + theorem inner_conj_symm - theorem inner_eq_zero_sym + theorem inner_eq_zero_symm - theorem inner_product_space.of_core.inner_abs_conj_sym + theorem inner_product_space.of_core.inner_abs_conj_symm - theorem inner_product_space.of_core.inner_conj_sym + theorem inner_product_space.of_core.inner_conj_symm +/- theorem real_inner_comm Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/analysis/quaternion.lean Modified src/linear_algebra/matrix/ldl.lean Modified src/linear_algebra/matrix/pos_def.lean Modified src/measure_theory/function/l2_space.lean 2023-03-14 13:51:43 af8f9bc chore(analysis/inner_product_space/basic): make arguments explicit (#18579) This applies the regex ```regex \{(x[^}]+)\}(?![^\n]*↔)(?=[^\n]* =) ``` and replaces it with `($1)` in appropriate places. The heuristic is "equalities should take their arguments explicitly". Underscores are then inserted as necessary to fix the build. ESTIMATED CHANGES Modified src/analysis/convex/cone/basic.lean Modified src/analysis/inner_product_space/basic.lean +/- theorem innerSL_flip_apply +/- theorem inner_abs_conj_sym +/- theorem inner_add_add_self +/- theorem inner_add_left +/- theorem inner_add_right +/- theorem inner_im_symm +/- theorem inner_mul_conj_re_abs +/- theorem inner_neg_left +/- theorem inner_neg_neg +/- theorem inner_neg_right +/- theorem inner_product_space.of_core.inner_abs_conj_sym +/- theorem inner_product_space.of_core.inner_add_add_self +/- theorem inner_product_space.of_core.inner_add_left +/- theorem inner_product_space.of_core.inner_add_right +/- theorem inner_product_space.of_core.inner_im_symm +/- theorem inner_product_space.of_core.inner_mul_conj_re_abs +/- theorem inner_product_space.of_core.inner_neg_left +/- theorem inner_product_space.of_core.inner_neg_right +/- theorem inner_product_space.of_core.inner_re_symm +/- theorem inner_product_space.of_core.inner_self_im_zero +/- theorem inner_product_space.of_core.inner_self_nonneg_im +/- theorem inner_product_space.of_core.inner_self_re_to_K +/- theorem inner_product_space.of_core.inner_smul_left +/- theorem inner_product_space.of_core.inner_smul_right +/- theorem inner_product_space.of_core.inner_sub_left +/- theorem inner_product_space.of_core.inner_sub_right +/- theorem inner_product_space.of_core.inner_sub_sub_self +/- theorem inner_product_space.of_core.inner_zero_left +/- theorem inner_product_space.of_core.inner_zero_right +/- theorem inner_product_space.of_core.sqrt_norm_sq_eq_norm +/- theorem inner_re_symm +/- theorem inner_re_zero_left +/- theorem inner_re_zero_right +/- theorem inner_self_abs_to_K +/- theorem inner_self_conj +/- theorem inner_self_im_zero +/- theorem inner_self_nonneg_im +/- theorem inner_self_re_abs +/- theorem inner_self_re_to_K +/- theorem inner_smul_left +/- theorem inner_smul_real_left +/- theorem inner_smul_real_right +/- theorem inner_smul_right +/- theorem inner_sub_left +/- theorem inner_sub_right +/- theorem inner_sub_sub_self +/- theorem inner_zero_left +/- theorem inner_zero_right +/- theorem norm_add_mul_self +/- theorem norm_add_mul_self_real +/- theorem norm_add_sq +/- theorem norm_add_sq_real +/- theorem norm_sub_mul_self +/- theorem norm_sub_mul_self_real +/- theorem norm_sub_sq +/- theorem norm_sub_sq_real +/- theorem real_inner_add_add_self +/- theorem real_inner_self_abs +/- theorem real_inner_smul_left +/- theorem real_inner_smul_right +/- theorem real_inner_sub_sub_self Modified src/analysis/inner_product_space/lax_milgram.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/measure_theory/function/l2_space.lean 2023-03-14 11:21:55 ceb887d feat(algebra/char_p/basic): refactor proof of add_pow_char_of_commute to extract a statement true in all rings (#11364) If x and y commute, the pth power of their sum is the sum of the pth powers plus a multiple of p. This holds in any semiring and easily implies the additivity of frobenius in char p, but is occasionally useful in characteristic 0. Also make the fact that p is 0 in a char_p ring a simp lemma. From flt-regular ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean +/- theorem add_pow_char_of_commute +/- theorem add_pow_char_pow_of_commute + theorem add_pow_prime_eq + theorem add_pow_prime_pow_eq + theorem exists_add_pow_prime_eq + theorem exists_add_pow_prime_pow_eq Modified src/combinatorics/additive/behrend.lean Modified src/data/enat/basic.lean +/- theorem enat.coe_zero Modified src/data/nat/multiplicity.lean + theorem nat.prime.dvd_choose_pow + theorem nat.prime.dvd_choose_pow_iff +/- theorem nat.prime.multiplicity_choose_prime_pow_add_multiplicity Modified src/ring_theory/multiplicity.lean +/- theorem multiplicity.multiplicity_eq_zero + theorem multiplicity.multiplicity_ne_zero Modified src/ring_theory/polynomial/eisenstein/is_integral.lean 2023-03-14 04:08:23 2fd0de2 chore(analysis/normed_space/pi_Lp): missing scalar tower instances (#18577) Extracted from #6799. Note these have rather strong requirements on `𝕜` and `𝕜''` as those are the requirements for there to be a `smul` operation. ESTIMATED CHANGES Modified src/analysis/normed_space/pi_Lp.lean 2023-03-13 22:49:50 bd1fc18 refactor(linear_algebra/affine_space/affine_{map,equiv}): add fun_like instances (#18575) Going all the way and defining a new `affine_map_class` class can wait till after the port; but adding `fun_like` makes the port easier. This has to reorder a few declarations in `affine_equiv.lean`. The only new declarations are the new instances. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean +/- def affine_equiv.to_affine_map Modified src/linear_algebra/affine_space/affine_map.lean Modified src/topology/algebra/continuous_affine_map.lean +/- theorem continuous_affine_map.coe_injective +/- theorem continuous_affine_map.congr_fun +/- theorem continuous_affine_map.to_affine_map_injective 2023-03-13 12:12:30 2196ab3 refactor(algebra/group/basic): rework lemmas on inv and neg (#17483) This PR adds the following lemma (and its additive equivalent). ```lean theorem inv_eq_iff_eq_inv : a⁻¹ = b ↔ a = b⁻¹ ``` and removes `eq_inv_of_eq_inv`, `eq_inv_iff_eq_inv` and `inv_eq_iff_inv_eq` (and their additive equivalents). ESTIMATED CHANGES Modified src/algebra/group/basic.lean - theorem eq_inv_iff_eq_inv - theorem eq_inv_of_eq_inv + theorem inv_eq_iff_eq_inv - theorem inv_eq_iff_inv_eq Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/order/group/abs.lean Modified src/algebra/order/to_interval_mod.lean Modified src/algebra/periodic.lean Modified src/algebraic_geometry/elliptic_curve/point.lean Modified src/analysis/normed/group/quotient.lean Modified src/analysis/special_functions/gamma.lean Modified src/analysis/special_functions/log/basic.lean Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/data/int/basic.lean Modified src/data/num/lemmas.lean Modified src/data/polynomial/mirror.lean Modified src/data/real/conjugate_exponents.lean Modified src/data/real/ereal.lean Modified src/data/real/golden_ratio.lean Modified src/data/set/pointwise/interval.lean Modified src/field_theory/finite/basic.lean Modified src/geometry/euclidean/angle/oriented/basic.lean Modified src/geometry/euclidean/angle/oriented/rotation.lean Modified src/linear_algebra/affine_space/midpoint.lean Modified src/linear_algebra/clifford_algebra/even_equiv.lean Modified src/linear_algebra/dimension.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/modular.lean Modified src/probability/martingale/borel_cantelli.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/valuation/valuation_subring.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/set_theory/game/pgame.lean 2023-03-13 06:41:40 69c6a5a chore(*): add mathlib4 synchronization comments (#18566) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebra.subalgebra.basic` * `algebra.algebra.subalgebra.tower` * `algebra.free_non_unital_non_assoc_algebra` * `algebra.monoid_algebra.basic` * `algebra.monoid_algebra.support` * `algebra.polynomial.big_operators` * `algebra.star.subalgebra` * `analysis.normed.group.ball_sphere` * `analysis.normed.group.basic` * `analysis.normed.group.completion` * `analysis.normed.group.hom` * `analysis.normed.group.hom_completion` * `analysis.normed.group.infinite_sum` * `analysis.normed.group.seminorm` * `analysis.normed_space.indicator_function` * `analysis.subadditive` * `category_theory.abelian.images` * `category_theory.abelian.non_preadditive` * `category_theory.adjunction.comma` * `category_theory.concrete_category.reflects_isomorphisms` * `category_theory.is_connected` * `category_theory.limits.bicones` * `category_theory.limits.comma` * `category_theory.limits.cone_category` * `category_theory.limits.constructions.equalizers` * `category_theory.limits.constructions.finite_products_of_binary_products` * `category_theory.limits.constructions.limits_of_products_and_equalizers` * `category_theory.limits.essentially_small` * `category_theory.limits.kan_extension` * `category_theory.limits.lattice` * `category_theory.limits.mono_coprod` * `category_theory.limits.opposites` * `category_theory.limits.preserves.filtered` * `category_theory.limits.preserves.shapes.biproducts` * `category_theory.limits.preserves.shapes.zero` * `category_theory.limits.shapes.biproducts` * `category_theory.limits.shapes.finite_products` * `category_theory.limits.shapes.functor_category` * `category_theory.limits.shapes.kernels` * `category_theory.limits.shapes.normal_mono.basic` * `category_theory.limits.shapes.normal_mono.equalizers` * `category_theory.limits.shapes.zero_morphisms` * `category_theory.limits.small_complete` * `category_theory.limits.types` * `category_theory.linear.basic` * `category_theory.linear.functor_category` * `category_theory.monoidal.End` * `category_theory.preadditive.additive_functor` * `category_theory.preadditive.basic` * `category_theory.preadditive.biproducts` * `category_theory.preadditive.functor_category` * `combinatorics.hindman` * `control.bifunctor` * `control.bitraversable.basic` * `data.complex.basic` * `data.nat.choose.cast` * `data.nat.choose.vandermonde` * `data.nat.factorial.cast` * `data.polynomial.basic` * `data.polynomial.cardinal` * `data.polynomial.coeff` * `data.polynomial.degree.definitions` * `data.polynomial.degree.lemmas` * `data.polynomial.degree.trailing_degree` * `data.polynomial.derivative` * `data.polynomial.erase_lead` * `data.polynomial.eval` * `data.polynomial.induction` * `data.polynomial.inductions` * `data.polynomial.monic` * `data.polynomial.monomial` * `data.polynomial.reverse` * `data.real.sqrt` * `data.tree` * `linear_algebra.affine_space.slope` * `logic.equiv.functor` * `number_theory.basic` * `order.jordan_holder` * `ring_theory.adjoin.basic` * `ring_theory.ideal.operations` * `ring_theory.ideal.quotient` * `ring_theory.localization.basic` * `ring_theory.nilpotent` * `ring_theory.polynomial.pochhammer` * `topology.algebra.affine` * `topology.algebra.localization` * `topology.algebra.ring.ideal` * `topology.fiber_bundle.trivialization` * `topology.instances.ennreal` * `topology.metric_space.completion` * `topology.metric_space.gluing` * `topology.metric_space.isometric_smul` * `topology.metric_space.isometry` * `topology.uniform_space.compare_reals` * `topology.unit_interval` ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/algebra/subalgebra/tower.lean Modified src/algebra/free_non_unital_non_assoc_algebra.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/monoid_algebra/support.lean Modified src/algebra/polynomial/big_operators.lean Modified src/algebra/star/subalgebra.lean Modified src/analysis/normed/group/ball_sphere.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed/group/completion.lean Modified src/analysis/normed/group/hom.lean Modified src/analysis/normed/group/hom_completion.lean Modified src/analysis/normed/group/infinite_sum.lean Modified src/analysis/normed/group/seminorm.lean Modified src/analysis/normed_space/indicator_function.lean Modified src/analysis/subadditive.lean Modified src/category_theory/abelian/images.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/adjunction/comma.lean Modified src/category_theory/concrete_category/reflects_isomorphisms.lean Modified src/category_theory/is_connected.lean Modified src/category_theory/limits/bicones.lean Modified src/category_theory/limits/comma.lean Modified src/category_theory/limits/cone_category.lean Modified src/category_theory/limits/constructions/equalizers.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/essentially_small.lean Modified src/category_theory/limits/kan_extension.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/mono_coprod.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/preserves/filtered.lean Modified src/category_theory/limits/preserves/shapes/biproducts.lean Modified src/category_theory/limits/preserves/shapes/zero.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/functor_category.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/normal_mono/basic.lean Modified src/category_theory/limits/shapes/normal_mono/equalizers.lean Modified src/category_theory/limits/shapes/zero_morphisms.lean Modified src/category_theory/limits/small_complete.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/linear/basic.lean Modified src/category_theory/linear/functor_category.lean Modified src/category_theory/monoidal/End.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/basic.lean Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/preadditive/functor_category.lean Modified src/combinatorics/hindman.lean Modified src/control/bifunctor.lean Modified src/control/bitraversable/basic.lean Modified src/data/complex/basic.lean Modified src/data/nat/choose/cast.lean Modified src/data/nat/choose/vandermonde.lean Modified src/data/nat/factorial/cast.lean Modified src/data/polynomial/basic.lean Modified src/data/polynomial/cardinal.lean Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/degree/lemmas.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/induction.lean Modified src/data/polynomial/inductions.lean Modified src/data/polynomial/monic.lean Modified src/data/polynomial/monomial.lean Modified src/data/polynomial/reverse.lean Modified src/data/real/sqrt.lean Modified src/data/tree.lean Modified src/linear_algebra/affine_space/slope.lean Modified src/logic/equiv/functor.lean Modified src/number_theory/basic.lean Modified src/order/jordan_holder.lean Modified src/ring_theory/adjoin/basic.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/ideal/quotient.lean Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/nilpotent.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/topology/algebra/affine.lean Modified src/topology/algebra/localization.lean Modified src/topology/algebra/ring/ideal.lean Modified src/topology/fiber_bundle/trivialization.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/isometric_smul.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/uniform_space/compare_reals.lean Modified src/topology/unit_interval.lean 2023-03-13 05:01:01 795b501 chore(number_theory/pell_matiyasevic): generalize `is_pell` to arbitary `d` (#18573) Not much else in the file generalizes, but we may as well generalize the definition. ESTIMATED CHANGES Modified src/number_theory/pell_matiyasevic.lean +/- theorem pell.is_pell_nat +/- theorem pell.is_pell_one 2023-03-12 22:38:09 1e32013 feat(analysis/normed_space/*exponential): more results about `star` (#18553) These are trivial consequences of existing results. It turns out we already had a proof about `exp _ x` belonging to `unitary X`; this weakens the conditions. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean + theorem is_self_adjoint.smul_mem_skew_adjoint + theorem is_self_adjoint_smul_of_mem_skew_adjoint Modified src/analysis/normed_space/exponential.lean + theorem exp_mem_unitary_of_mem_skew_adjoint + theorem is_self_adjoint.exp Modified src/analysis/normed_space/matrix_exponential.lean + theorem matrix.is_hermitian.exp + theorem matrix.is_symm.exp Modified src/analysis/normed_space/star/exponential.lean - theorem is_self_adjoint.exp_i_smul_unitary Modified src/analysis/normed_space/star/spectrum.lean 2023-03-12 20:39:34 2af0836 refactor(number_theory/zsqrtd): replace `zsqrtd.conj` with `star` (#18572) This allows more existing lemmas to be used; notably, `unitary (zqsrt d)` becomes something we can talk about. ESTIMATED CHANGES Modified src/number_theory/pell_matiyasevic.lean - theorem pell.is_pell_conj + theorem pell.is_pell_iff_mem_unitary +/- theorem pell.is_pell_norm + theorem pell.is_pell_star +/- theorem pell.pell_zd_sub Modified src/number_theory/zsqrtd/basic.lean - def zsqrtd.conj - theorem zsqrtd.conj_add - theorem zsqrtd.conj_conj - def zsqrtd.conj_hom - theorem zsqrtd.conj_im - theorem zsqrtd.conj_mul - theorem zsqrtd.conj_neg - theorem zsqrtd.conj_one - theorem zsqrtd.conj_re - theorem zsqrtd.conj_sub - theorem zsqrtd.conj_zero - theorem zsqrtd.mul_conj + theorem zsqrtd.mul_star +/- theorem zsqrtd.norm_conj +/- theorem zsqrtd.norm_eq_mul_conj + theorem zsqrtd.star_im + theorem zsqrtd.star_mk + theorem zsqrtd.star_re Modified src/number_theory/zsqrtd/gaussian_int.lean +/- theorem gaussian_int.div_def + theorem gaussian_int.to_complex_star 2023-03-12 00:23:44 c985ae9 chore(topology/order/basic): generalise frontier_Icc (#18571) ESTIMATED CHANGES Modified src/topology/order/basic.lean +/- theorem frontier_Icc 2023-03-11 18:20:22 f24cc28 chore(data/finset/locally_finite): lemmas about open intervals (#18533) We had `cons` lemmas for the other four cases, but not these two. The new lemmas golf a proof a little. Also adds some docstrings to makes these lemmas easier to find. Forward-ported in https://github.com/leanprover-community/mathlib4/pull/2812 ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean + theorem finset.Ico_eq_cons_Ioo + theorem finset.Ioc_eq_cons_Ioo 2023-03-11 09:26:40 da420a8 refactor(*): reduce dependencies on ring_theory.ideal.quotient_operations (#18530) ESTIMATED CHANGES Modified src/data/polynomial/div.lean - theorem polynomial.quotient_span_X_sub_C_alg_equiv_mk - theorem polynomial.quotient_span_X_sub_C_alg_equiv_symm_apply Modified src/data/zmod/quotient.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/number_theory/multiplicity.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/etale.lean Modified src/ring_theory/finite_presentation.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/nilpotent.lean - theorem ideal.is_nilpotent.induction_on - theorem ideal.is_radical_iff_quotient_reduced - theorem is_nilpotent.is_unit_quotient_mk_iff Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean - theorem ideal.eq_zero_of_polynomial_mem_map_range - theorem ideal.eval₂_C_mk_eq_zero - theorem ideal.is_domain_map_C_quotient + theorem ideal.is_prime_map_C_iff_is_prime - def ideal.polynomial_quotient_equiv_quotient_polynomial - theorem ideal.polynomial_quotient_equiv_quotient_polynomial_map_mk - theorem ideal.polynomial_quotient_equiv_quotient_polynomial_symm_mk - theorem ideal.quotient_map_C_eq_zero - theorem mv_polynomial.eval₂_C_mk_eq_zero - def mv_polynomial.quotient_equiv_quotient_mv_polynomial - theorem mv_polynomial.quotient_map_C_eq_zero Added src/ring_theory/polynomial/quotient.lean + theorem ideal.eq_zero_of_polynomial_mem_map_range + theorem ideal.eval₂_C_mk_eq_zero + theorem ideal.is_domain_map_C_quotient + def ideal.polynomial_quotient_equiv_quotient_polynomial + theorem ideal.polynomial_quotient_equiv_quotient_polynomial_map_mk + theorem ideal.polynomial_quotient_equiv_quotient_polynomial_symm_mk + theorem ideal.quotient_map_C_eq_zero + theorem mv_polynomial.eval₂_C_mk_eq_zero + def mv_polynomial.quotient_equiv_quotient_mv_polynomial + theorem mv_polynomial.quotient_map_C_eq_zero + theorem polynomial.quotient_span_X_sub_C_alg_equiv_mk + theorem polynomial.quotient_span_X_sub_C_alg_equiv_symm_apply Added src/ring_theory/quotient_nilpotent.lean + theorem ideal.is_nilpotent.induction_on + theorem ideal.is_radical_iff_quotient_reduced + theorem is_nilpotent.is_unit_quotient_mk_iff Added src/ring_theory/quotient_noetherian.lean Modified src/ring_theory/valuation/basic.lean - theorem add_valuation.comap_on_quot_eq - theorem add_valuation.comap_supp - def add_valuation.on_quot - theorem add_valuation.on_quot_comap_eq - def add_valuation.on_quot_val - theorem add_valuation.self_le_supp_comap - theorem add_valuation.supp_quot - theorem add_valuation.supp_quot_supp - theorem valuation.comap_on_quot_eq - def valuation.on_quot - theorem valuation.on_quot_comap_eq - def valuation.on_quot_val - theorem valuation.self_le_supp_comap - theorem valuation.supp_quot - theorem valuation.supp_quot_supp Added src/ring_theory/valuation/quotient.lean + theorem add_valuation.comap_on_quot_eq + theorem add_valuation.comap_supp + def add_valuation.on_quot + theorem add_valuation.on_quot_comap_eq + def add_valuation.on_quot_val + theorem add_valuation.self_le_supp_comap + theorem add_valuation.supp_quot + theorem add_valuation.supp_quot_supp + theorem valuation.comap_on_quot_eq + def valuation.on_quot + theorem valuation.on_quot_comap_eq + def valuation.on_quot_val + theorem valuation.self_le_supp_comap + theorem valuation.supp_quot + theorem valuation.supp_quot_supp 2023-03-10 11:38:10 3180fab feat(probability/kernel/composition): composition of kernels (#17974) We define the product, map, comap and composition of s-finite kernels. ESTIMATED CHANGES Added src/probability/kernel/composition.lean + def probability_theory.kernel.comap + theorem probability_theory.kernel.comap_apply' + theorem probability_theory.kernel.comap_apply + def probability_theory.kernel.comp + theorem probability_theory.kernel.comp_apply + theorem probability_theory.kernel.comp_assoc + theorem probability_theory.kernel.comp_deterministic_eq_comap + def probability_theory.kernel.comp_prod + theorem probability_theory.kernel.comp_prod_apply + theorem probability_theory.kernel.comp_prod_apply_eq_comp_prod_fun + theorem probability_theory.kernel.comp_prod_apply_univ_le + theorem probability_theory.kernel.comp_prod_eq_sum_comp_prod + theorem probability_theory.kernel.comp_prod_eq_sum_comp_prod_left + theorem probability_theory.kernel.comp_prod_eq_sum_comp_prod_right + theorem probability_theory.kernel.comp_prod_eq_tsum_comp_prod + def probability_theory.kernel.comp_prod_fun + theorem probability_theory.kernel.comp_prod_fun_Union + theorem probability_theory.kernel.comp_prod_fun_empty + theorem probability_theory.kernel.comp_prod_fun_eq_tsum + theorem probability_theory.kernel.comp_prod_fun_tsum_left + theorem probability_theory.kernel.comp_prod_fun_tsum_right + theorem probability_theory.kernel.deterministic_comp_eq_map + def probability_theory.kernel.fst + theorem probability_theory.kernel.fst_apply' + theorem probability_theory.kernel.fst_apply + theorem probability_theory.kernel.lintegral_comap + theorem probability_theory.kernel.lintegral_comp + theorem probability_theory.kernel.lintegral_comp_prod' + theorem probability_theory.kernel.lintegral_comp_prod + theorem probability_theory.kernel.lintegral_fst + theorem probability_theory.kernel.lintegral_map + theorem probability_theory.kernel.lintegral_prod + theorem probability_theory.kernel.lintegral_prod_mk_left + theorem probability_theory.kernel.lintegral_snd + theorem probability_theory.kernel.lintegral_swap_left + theorem probability_theory.kernel.lintegral_swap_right + def probability_theory.kernel.map + theorem probability_theory.kernel.map_apply' + theorem probability_theory.kernel.map_apply + theorem probability_theory.kernel.measurable_comp_prod_fun + theorem probability_theory.kernel.measurable_comp_prod_fun_of_finite + def probability_theory.kernel.prod + theorem probability_theory.kernel.prod_apply + def probability_theory.kernel.prod_mk_left + theorem probability_theory.kernel.prod_mk_left_apply' + theorem probability_theory.kernel.prod_mk_left_apply + def probability_theory.kernel.snd + theorem probability_theory.kernel.snd_apply' + theorem probability_theory.kernel.snd_apply + theorem probability_theory.kernel.sum_comap_seq + theorem probability_theory.kernel.sum_map_seq + def probability_theory.kernel.swap_left + theorem probability_theory.kernel.swap_left_apply' + theorem probability_theory.kernel.swap_left_apply + def probability_theory.kernel.swap_right + theorem probability_theory.kernel.swap_right_apply' + theorem probability_theory.kernel.swap_right_apply 2023-03-10 09:55:21 4ac69b2 feat(probability/probability_mass_function): basic lawful monad lemmas for `pmf`. (#18469) This file adds basic lemmas for monadic operations on `pmf`, mirroring the lemmas for `is_lawful_monad`. ESTIMATED CHANGES Modified src/probability/probability_mass_function/basic.lean + theorem pmf.coe_ne_zero + theorem pmf.ext_iff + theorem pmf.support_nonempty Modified src/probability/probability_mass_function/constructions.lean + theorem pmf.bind_map + theorem pmf.map_bind +/- theorem pmf.map_comp + theorem pmf.map_const +/- theorem pmf.map_id +/- theorem pmf.pure_map Modified src/probability/probability_mass_function/monad.lean + theorem pmf.bind_const + theorem pmf.pure_apply_of_ne + theorem pmf.pure_apply_self 2023-03-09 17:31:39 ddec54a feat(geometry/manifold/vector_bundle/tangent): the tangent bundle is a smooth vector bundle (#17680) * This defines a tangent bundle as a smooth vector bundle * Currently we still use the old definition in the library (e.g. for `mfderiv`). Therefore we put the new version temporarily in the `hidden` namespace, to avoid a name clash (we could skip this PR and immediately merge #18068, but that will be a big PR). Co-authored by: Heather Macbeth 25316162+hrmacbeth@users.noreply.github.com ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem fderiv_within_fderiv_within Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem local_homeomorph.cont_diff_within_at_extend_coord_change' + theorem local_homeomorph.extend_coord_change_source_mem_nhds_within' + theorem local_homeomorph.extend_coord_change_source_mem_nhds_within + theorem local_homeomorph.extend_left_inv Modified src/geometry/manifold/vector_bundle/basic.lean + theorem fiber_bundle.charted_space_chart_at Added src/geometry/manifold/vector_bundle/tangent.lean + theorem hidden.cont_diff_on_fderiv_coord_change + def hidden.tangent_bundle + def hidden.tangent_bundle_core + theorem hidden.tangent_bundle_core_coord_change_achart + theorem hidden.tangent_bundle_model_space_chart_at + theorem hidden.tangent_bundle_model_space_coe_chart_at + theorem hidden.tangent_bundle_model_space_coe_chart_at_symm + def hidden.tangent_bundle_model_space_homeomorph + theorem hidden.tangent_bundle_model_space_homeomorph_coe + theorem hidden.tangent_bundle_model_space_homeomorph_coe_symm + def hidden.tangent_space + theorem hidden.tangent_space_chart_at + theorem hidden.tangent_space_chart_at_to_local_equiv 2023-03-09 10:11:28 5b05c63 feat(number_theory/pell): add exists_pos_of_not_is_square (#18567) This PR continues work on the theory of the Pell equation for general (nonsquare and positive) `d`. In preparation for proving statements on the structure of the solution set, this adds ```lean lemma exists_pos_of_not_is_square {d : ℤ} (h₀ : 0 < d) (hd : ¬ is_square d) : ∃ x y : ℤ, x ^ 2 - d * y ^ 2 = 1 ∧ 1 < x ∧ 0 < y := ... ``` as a prerequisite for defining the fundamental solution as the solution with smallest `x > 1` and positive `y`. See [this thread on Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Proving.20Pell's.20equation.20is.20solvable/near/338175458). ESTIMATED CHANGES Modified src/number_theory/pell.lean +/- theorem pell.exists_iff_not_is_square +/- theorem pell.exists_of_not_is_square + theorem pell.exists_pos_of_not_is_square 2023-03-08 18:49:50 21e3562 chore(data/matrix/basic): add a star_module instance (#18557) We already have instances for the other star properties, but missed this one. ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2023-03-08 16:43:26 d23150d chore(data/matrix/basic): generalize an instance (#18563) ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2023-03-08 13:45:47 671d5d9 feat(algebra/star/self_adjoint): add and generalize trivial lemmas (#18558) This: * Generalizes `is_self_adjoint.smul`, which makes it easier to show that `0.5 • x` is self-adjoint when `x` is, even if `0.5` is a complex number. * Generalizes `is_self_adjoint.add` to match `matrix.is_hermitian.add` (for a later refactor), along with many other lemmas. * Removes re-proofs of `star_nat_cast` and `star_int_cast`. The first is motivated by showing that `exp K m` for some matrix `m` is positive definite if `is_self_adjoint m`. Forward-ported at https://github.com/leanprover-community/mathlib4/pull/2719. ESTIMATED CHANGES Modified src/algebra/star/module.lean Modified src/algebra/star/self_adjoint.lean + theorem is_self_adjoint.all +/- theorem is_self_adjoint.smul + theorem is_self_adjoint_int_cast + theorem is_self_adjoint_nat_cast + theorem is_self_adjoint_rat_cast - theorem self_adjoint.rat_cast_mem 2023-03-08 09:51:03 90ac7a9 chore(topology/instances/ennreal): drop a dependency (#18562) Drop dependency on `analysis.normed.group.basic` by using `nnabs` instead of `nnnorm`. ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean 2023-03-08 09:51:02 e2e38c0 chore(category_theory/sites/pushforward): move pushforwards to own file to reduce imports (#18561) We had unnecessarily dragged in the development of sheafification to material about [dense subsites](https://tqft.net/mathlib4/2023-03-08/category_theory.sites.dense_subsite.pdf). ESTIMATED CHANGES Modified src/category_theory/sites/cover_preserving.lean - def category_theory.sites.pullback_pushforward_adjunction - def category_theory.sites.pushforward Added src/category_theory/sites/pushforward.lean + def category_theory.sites.pullback_pushforward_adjunction + def category_theory.sites.pushforward Modified src/topology/sheaves/stalks.lean 2023-03-08 09:51:00 3e0c4d7 chore(topology/algebra/with_zero_topology): move to a new NS, used `localized` (#18560) This way we can naturally use `scoped instance` in Lean 4. ESTIMATED CHANGES Modified src/topology/algebra/valued_field.lean Modified src/topology/algebra/with_zero_topology.lean - theorem linear_ordered_comm_group_with_zero.Iio_mem_nhds - theorem linear_ordered_comm_group_with_zero.Iio_mem_nhds_zero - theorem linear_ordered_comm_group_with_zero.has_basis_nhds_of_ne_zero - theorem linear_ordered_comm_group_with_zero.has_basis_nhds_units - theorem linear_ordered_comm_group_with_zero.has_basis_nhds_zero - theorem linear_ordered_comm_group_with_zero.is_closed_iff - theorem linear_ordered_comm_group_with_zero.is_open_Iio - theorem linear_ordered_comm_group_with_zero.is_open_iff - theorem linear_ordered_comm_group_with_zero.nhds_coe_units - theorem linear_ordered_comm_group_with_zero.nhds_eq_update - theorem linear_ordered_comm_group_with_zero.nhds_of_ne_zero - theorem linear_ordered_comm_group_with_zero.nhds_zero - theorem linear_ordered_comm_group_with_zero.nhds_zero_of_units - theorem linear_ordered_comm_group_with_zero.singleton_mem_nhds_of_ne_zero - theorem linear_ordered_comm_group_with_zero.singleton_mem_nhds_of_units - theorem linear_ordered_comm_group_with_zero.tendsto_of_ne_zero - theorem linear_ordered_comm_group_with_zero.tendsto_units - theorem linear_ordered_comm_group_with_zero.tendsto_zero + theorem with_zero_topology.Iio_mem_nhds + theorem with_zero_topology.Iio_mem_nhds_zero + theorem with_zero_topology.has_basis_nhds_of_ne_zero + theorem with_zero_topology.has_basis_nhds_units + theorem with_zero_topology.has_basis_nhds_zero + theorem with_zero_topology.is_closed_iff + theorem with_zero_topology.is_open_Iio + theorem with_zero_topology.is_open_iff + theorem with_zero_topology.nhds_coe_units + theorem with_zero_topology.nhds_eq_update + theorem with_zero_topology.nhds_of_ne_zero + theorem with_zero_topology.nhds_zero + theorem with_zero_topology.nhds_zero_of_units + theorem with_zero_topology.singleton_mem_nhds_of_ne_zero + theorem with_zero_topology.singleton_mem_nhds_of_units + theorem with_zero_topology.t3_space + theorem with_zero_topology.tendsto_of_ne_zero + theorem with_zero_topology.tendsto_units + theorem with_zero_topology.tendsto_zero 2023-03-08 09:50:59 09f981f chore(category_theory/preadditive): reduce unnecessary imports (#18559) Looking at the [port-progress bot output](https://tqft.net/mathlib4/2023-03-08/category_theory.monoidal.tor.pdf) for `category_theory.monoidal.tor`, it is clear that most of the algebra imports are only needed to show `Module R` is abelian, which we don't in fact need for setting up `Tor`. This PR splits files to reflect that. ESTIMATED CHANGES Modified src/algebra/category/Module/abelian.lean Modified src/category_theory/abelian/generator.lean Modified src/category_theory/abelian/injective.lean Modified src/category_theory/abelian/projective.lean Modified src/category_theory/linear/yoneda.lean Modified src/category_theory/monoidal/tor.lean Modified src/category_theory/preadditive/generator.lean Modified src/category_theory/preadditive/projective.lean Renamed src/category_theory/preadditive/yoneda.lean to src/category_theory/preadditive/yoneda/basic.lean Added src/category_theory/preadditive/yoneda/limits.lean 2023-03-08 07:00:35 f475811 chore(*): add mathlib4 synchronization comments (#18546) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebra.operations` * `algebra.algebra.restrict_scalars` * `algebra.lie.non_unital_non_assoc_algebra` * `algebra.order.algebra` * `algebra.star.module` * `algebra.star.star_alg_hom` * `category_theory.adjunction.evaluation` * `category_theory.adjunction.limits` * `category_theory.category.pairwise` * `category_theory.concrete_category.basic` * `category_theory.limits.constructions.binary_products` * `category_theory.limits.constructions.epi_mono` * `category_theory.limits.constructions.pullbacks` * `category_theory.limits.creates` * `category_theory.limits.exact_functor` * `category_theory.limits.full_subcategory` * `category_theory.limits.functor_category` * `category_theory.limits.preserves.finite` * `category_theory.limits.preserves.shapes.binary_products` * `category_theory.limits.preserves.shapes.equalizers` * `category_theory.limits.preserves.shapes.products` * `category_theory.limits.preserves.shapes.pullbacks` * `category_theory.limits.preserves.shapes.terminal` * `category_theory.limits.shapes.binary_products` * `category_theory.limits.shapes.disjoint_coproduct` * `category_theory.limits.shapes.equalizers` * `category_theory.limits.shapes.equivalence` * `category_theory.limits.shapes.finite_limits` * `category_theory.limits.shapes.images` * `category_theory.limits.shapes.products` * `category_theory.limits.shapes.pullbacks` * `category_theory.limits.shapes.regular_mono` * `category_theory.limits.shapes.split_coequalizer` * `category_theory.limits.shapes.strict_initial` * `category_theory.limits.shapes.terminal` * `category_theory.limits.shapes.zero_objects` * `category_theory.limits.unit` * `category_theory.limits.yoneda` * `category_theory.over` * `category_theory.path_category` * `category_theory.quotient` * `category_theory.sites.sieves` * `category_theory.structured_arrow` * `combinatorics.simple_graph.hasse` * `combinatorics.simple_graph.metric` * `combinatorics.simple_graph.prod` * `combinatorics.simple_graph.regularity.energy` * `combinatorics.simple_graph.trails` * `control.lawful_fix` * `group_theory.solvable` * `linear_algebra.affine_space.affine_map` * `linear_algebra.dfinsupp` * `topology.algebra.field` * `topology.algebra.group_completion` * `topology.algebra.infinite_sum.basic` * `topology.algebra.infinite_sum.order` * `topology.algebra.infinite_sum.real` * `topology.algebra.infinite_sum.ring` * `topology.algebra.order.field` * `topology.algebra.order.upper_lower` * `topology.algebra.ring.basic` * `topology.algebra.uniform_mul_action` * `topology.instances.int` * `topology.instances.nat` * `topology.instances.nnreal` * `topology.instances.rat` * `topology.instances.real` * `topology.locally_constant.algebra` * `topology.metric_space.algebra` * `topology.metric_space.antilipschitz` * `topology.metric_space.basic` * `topology.metric_space.emetric_paracompact` * `topology.metric_space.emetric_space` * `topology.metric_space.equicontinuity` * `topology.metric_space.infsep` * `topology.metric_space.lipschitz` * `topology.metric_space.metric_separated` * `topology.metric_space.shrinking_lemma` * `topology.sequences` ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/restrict_scalars.lean Modified src/algebra/lie/non_unital_non_assoc_algebra.lean Modified src/algebra/order/algebra.lean Modified src/algebra/star/module.lean Modified src/algebra/star/star_alg_hom.lean Modified src/category_theory/adjunction/evaluation.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/pairwise.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/limits/constructions/binary_products.lean Modified src/category_theory/limits/constructions/epi_mono.lean Modified src/category_theory/limits/constructions/pullbacks.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/exact_functor.lean Modified src/category_theory/limits/full_subcategory.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/preserves/finite.lean Modified src/category_theory/limits/preserves/shapes/binary_products.lean Modified src/category_theory/limits/preserves/shapes/equalizers.lean Modified src/category_theory/limits/preserves/shapes/products.lean Modified src/category_theory/limits/preserves/shapes/pullbacks.lean Modified src/category_theory/limits/preserves/shapes/terminal.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/disjoint_coproduct.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/equivalence.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/split_coequalizer.lean Modified src/category_theory/limits/shapes/strict_initial.lean Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/shapes/zero_objects.lean Modified src/category_theory/limits/unit.lean Modified src/category_theory/limits/yoneda.lean Modified src/category_theory/over.lean Modified src/category_theory/path_category.lean Modified src/category_theory/quotient.lean Modified src/category_theory/sites/sieves.lean Modified src/category_theory/structured_arrow.lean Modified src/combinatorics/simple_graph/hasse.lean Modified src/combinatorics/simple_graph/metric.lean Modified src/combinatorics/simple_graph/prod.lean Modified src/combinatorics/simple_graph/regularity/energy.lean Modified src/combinatorics/simple_graph/trails.lean Modified src/control/lawful_fix.lean Modified src/group_theory/solvable.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/dfinsupp.lean Modified src/topology/algebra/field.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/infinite_sum/basic.lean Modified src/topology/algebra/infinite_sum/order.lean Modified src/topology/algebra/infinite_sum/real.lean Modified src/topology/algebra/infinite_sum/ring.lean Modified src/topology/algebra/order/field.lean Modified src/topology/algebra/order/upper_lower.lean Modified src/topology/algebra/ring/basic.lean Modified src/topology/algebra/uniform_mul_action.lean Modified src/topology/instances/int.lean Modified src/topology/instances/nat.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/rat.lean Modified src/topology/instances/real.lean Modified src/topology/locally_constant/algebra.lean Modified src/topology/metric_space/algebra.lean Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_paracompact.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/equicontinuity.lean Modified src/topology/metric_space/infsep.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/metric_space/metric_separated.lean Modified src/topology/metric_space/shrinking_lemma.lean Modified src/topology/sequences.lean 2023-03-07 20:20:15 38f16f9 feat(analysis/fourier): Poisson summation for polynomially-decaying functions (#18556) This PR proves some alternate formulations of Poisson's summation formula with less general, but simpler-to-verify, hypotheses. ESTIMATED CHANGES Modified src/analysis/fourier/poisson_summation.lean + theorem is_O_norm_Icc_restrict_at_bot + theorem is_O_norm_Icc_restrict_at_top + theorem is_O_norm_restrict_cocompact + theorem real.tsum_eq_tsum_fourier_integral_of_rpow_decay + theorem real.tsum_eq_tsum_fourier_integral_of_rpow_decay_of_summable + theorem schwartz_map.tsum_eq_tsum_fourier_integral Modified src/analysis/p_series.lean + theorem real.summable_abs_int_rpow Modified src/analysis/schwartz_space.lean + theorem schwartz_map.is_O_cocompact_rpow + theorem schwartz_map.is_O_cocompact_zpow + theorem schwartz_map.is_O_cocompact_zpow_neg_nat + def schwartz_map.to_continuous_map 2023-03-07 19:08:14 be2c24f feat(geometry/manifold/vector_bundle/basic): smooth vector bundles (#17611) Definition of smooth vector bundle, and basic constructions (direct sum, pullback, core construction). ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff.clm_apply +/- theorem cont_mdiff.clm_comp + theorem cont_mdiff.clm_prod_map + theorem cont_mdiff_at.clm_apply +/- theorem cont_mdiff_at.clm_comp + theorem cont_mdiff_at.clm_prod_map + theorem cont_mdiff_on.clm_apply +/- theorem cont_mdiff_on.clm_comp + theorem cont_mdiff_on.clm_prod_map + theorem cont_mdiff_within_at.clm_apply +/- theorem cont_mdiff_within_at.clm_comp + theorem cont_mdiff_within_at.clm_prod_map Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/local_invariant_properties.lean Added src/geometry/manifold/vector_bundle/basic.lean Renamed src/geometry/manifold/vector_bundle.lean to src/geometry/manifold/vector_bundle/fiberwise_linear.lean + theorem mem_smooth_fiberwise_linear_iff Added src/geometry/manifold/vector_bundle/pullback.lean Modified src/topology/fiber_bundle/basic.lean Modified src/topology/fiber_bundle/constructions.lean Modified src/topology/fiber_bundle/is_homeomorphic_trivial_bundle.lean Modified src/topology/fiber_bundle/trivialization.lean Modified src/topology/vector_bundle/basic.lean + theorem trivialization.apply_symm_apply_eq_coord_changeL + theorem trivialization.coe_coord_changeL' + theorem trivialization.symm_coord_changeL Modified src/topology/vector_bundle/constructions.lean + theorem trivialization.coord_changeL_prod Modified src/topology/vector_bundle/hom.lean 2023-03-07 07:27:01 7826122 chore(linear_algebra/affine_space/midpoint): factor out lemmas about char_zero (#18555) This removes the dependency on `char_p` in `analysis.convex.segment` and `analysis.normed.group.add_torsor`. ESTIMATED CHANGES Modified src/analysis/convex/between.lean Modified src/analysis/convex/slope.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/linear_algebra/affine_space/midpoint.lean - theorem homothety_inv_of_two - theorem homothety_inv_two - theorem homothety_one_half - theorem line_map_inv_two - theorem line_map_one_half - theorem pi_midpoint_apply Added src/linear_algebra/affine_space/midpoint_zero.lean + theorem homothety_inv_of_two + theorem homothety_inv_two + theorem homothety_one_half + theorem line_map_inv_two + theorem line_map_one_half + theorem pi_midpoint_apply Modified src/linear_algebra/affine_space/ordered.lean 2023-03-05 05:14:58 3b267e7 feat(topology/homeomorph): add `homeomorph.symm_symm` (#18551) I'm surprised we didn't have this lemma. ESTIMATED CHANGES Modified src/topology/homeomorph.lean + theorem homeomorph.symm_symm 2023-03-04 23:57:17 346bace feat(measure_theory/function/l1_space): Hölder's inequality specialized to integrable functions (#18550) Specialize Hölder's inequality for scalar product of an integrable and a finite-essential-supremum function. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.ess_sup_smul + theorem measure_theory.integrable.smul_ess_sup 2023-03-04 22:07:59 fbde2f6 feat(measure_theory/integral): integral_tsum (#18549) Interchanging Bochner integrals with `tsum`s. Replaces #18508 with a quicker approach. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem ae_measurable.nnreal_tsum Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.integral_tsum 2023-03-03 22:25:19 641b6a8 feat(number_theory/number_field/basic): add integral_basis (#18474) ESTIMATED CHANGES Modified src/number_theory/number_field/basic.lean + theorem number_field.integral_basis_apply +/- theorem number_field.ring_of_integers.not_is_field + theorem number_field.ring_of_integers.rank Modified src/ring_theory/dedekind_domain/integral_closure.lean + theorem is_integral_closure.is_localization + theorem is_integral_closure.module_free + theorem is_integral_closure.rank Modified src/ring_theory/integral_closure.lean + theorem is_integral_closure.no_zero_smul_divisors 2023-03-03 19:01:42 d2d8742 chore(logic/equiv/basic): Generalize Type to Sort (#18543) This backports a change that was already made in mathlib4. Indeed, mathport complains that the change was made, see the comments in https://github.com/leanprover-community/mathlib3port/blob/e3a205b1f51e409563e9e4294f41dd4df61f578a/Mathbin/Logic/Equiv/Basic.lean#L1729-L1735 By backporting this, we can deal with the fallout up-front rather than during porting. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean Modified src/data/list/defs.lean +/- def list.foldl_with_index +/- def list.foldl_with_index_aux +/- def list.foldr_with_index +/- def list.foldr_with_index_aux Modified src/logic/basic.lean +/- theorem eq_iff_eq_cancel_left +/- theorem eq_iff_eq_cancel_right Modified src/logic/equiv/basic.lean +/- def equiv.subtype_equiv_prop +/- def equiv.subtype_subtype_equiv_subtype_exists +/- def equiv.subtype_subtype_equiv_subtype_inter +/- theorem function.injective.map_swap Modified src/logic/nonempty.lean +/- theorem function.surjective.nonempty 2023-03-03 14:04:04 62e8311 fix(data/set/semiring): fix lemma name (#18545) This was a typo by me ESTIMATED CHANGES Modified src/data/set/semiring.lean - theorem set_semiring.down_image_def + theorem set_semiring.image_hom_def 2023-03-02 20:56:16 ec80bb1 feat(field_theory/ratfunc): add lemma `coe_sub` (#18542) add lemma `coe_sub` stating that the coercion from rational functions to Laurent series commutes with subtraction. It is part of the long list of lemmas like `coe_add`, `coe_mul` and the like that were already there. ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean + theorem ratfunc.coe_neg + theorem ratfunc.coe_pow + theorem ratfunc.coe_sub 2023-03-02 20:56:14 a484a7d feat(ring_theory/hahn_series): add lemma neg_order (#18541) added lemma `neg_order` stating that the order of the opposite of a Hahn series (with coefficients in an `add_group`) is the same of the order of the series itself. ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean + theorem hahn_series.order_neg 2023-03-02 18:05:18 c310cfd chore(algebra/algebra/restrict_scalars): replace `restrict_scalars_smul_def` with version that does not commit defeq-abuse. (#18540) This lemma abuses definitional equality and I think we are better without it. My immediate motivation is the trouble it is causing in the Mathlib4 porting PR: https://github.com/leanprover-community/mathlib4/pull/2563 Note that it was only used in one place and there is a better proof. ESTIMATED CHANGES Modified src/algebra/algebra/restrict_scalars.lean + theorem restrict_scalars.smul_def - theorem restrict_scalars_smul_def Modified src/data/complex/module.lean 2023-03-02 18:05:13 27b54c4 fix(algebra/algebra/operations): add missing `set_semiring.down` casts (#18539) Previously this was abusing the defeq of the types, resulting in lemmas stated in weird ways. This also fixes a type in #18449, and adds three missing lemmas about `image_hom`. Forward port of `set_semiring` will be included in https://github.com/leanprover-community/mathlib4/pull/2518 ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean +/- theorem submodule.smul_def +/- theorem submodule.smul_le_smul Modified src/data/set/semiring.lean + theorem set.up_image + theorem set_semiring.down_image_def + theorem set_semiring.down_image_hom +/- theorem set_semiring.down_mul 2023-03-02 18:05:10 f5edf46 chore(ring_theory/finiteness): remove references to `ideal.quotient` (#18538) This proof is not meaningfully more complex, and it removes a dependency that has to be ported before this file can be ported. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean 2023-03-02 18:05:06 832f7b9 chore(*): add mathlib4 synchronization comments (#18535) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebra.bilinear` * `algebra.algebra.pi` * `algebra.algebra.tower` * `category_theory.limits.filtered` * `category_theory.limits.preserves.basic` * `category_theory.limits.preserves.limits` * `category_theory.limits.shapes.wide_pullbacks` * `combinatorics.simple_graph.acyclic` * `combinatorics.simple_graph.connectivity` * `combinatorics.simple_graph.regularity.uniform` * `data.nat.digits` * `linear_algebra.basis.bilinear` * `linear_algebra.tensor_product` ESTIMATED CHANGES Modified src/algebra/algebra/bilinear.lean Modified src/algebra/algebra/pi.lean Modified src/algebra/algebra/tower.lean Modified src/category_theory/limits/filtered.lean Modified src/category_theory/limits/preserves/basic.lean Modified src/category_theory/limits/preserves/limits.lean Modified src/category_theory/limits/shapes/wide_pullbacks.lean Modified src/combinatorics/simple_graph/acyclic.lean Modified src/combinatorics/simple_graph/connectivity.lean Modified src/combinatorics/simple_graph/regularity/uniform.lean Modified src/data/nat/digits.lean Modified src/linear_algebra/basis/bilinear.lean Modified src/linear_algebra/tensor_product.lean 2023-03-02 15:13:14 f62c15c feat(linear_algebra/free_module/pid): rename module.free_of_finite_type_torsion_free (#18537) See https://github.com/leanprover-community/mathlib/pull/18474#discussion_r1122802316 ESTIMATED CHANGES Modified src/algebra/module/pid.lean Modified src/linear_algebra/free_module/pid.lean + theorem module.free_of_finite_type_torsion_free' + theorem module.free_of_finite_type_torsion_free 2023-03-02 15:13:12 c10e724 refactor(topology/algebra/field): drop `topological_space_units` (#18536) See [Zulip chat](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/topology.20on.20units/near/324188800) Also generalize TC assumptions in `inv_mem_iff`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean +/- theorem inv_mem_iff Modified src/group_theory/subgroup/pointwise.lean +/- theorem inv_coe_set Modified src/topology/algebra/constructions.lean + theorem units.embedding_coe_mk + theorem units.topology_eq_inf Modified src/topology/algebra/field.lean - theorem topological_division_ring.continuous_units_inv - theorem topological_division_ring.units_top_group - theorem topological_ring.induced_units.continuous_coe - def topological_ring.topological_space_units - theorem topological_ring.units_embedding - theorem topological_ring.units_topology_eq Modified src/topology/algebra/group/basic.lean + def to_units_homeomorph Modified src/topology/algebra/group_with_zero.lean + theorem units.embedding_coe₀ 2023-03-02 13:10:52 8da9e30 chore(set_theory/ordinal/initial_seg): swap the names of `init` and `init'` (#18534) The former `init` was stated with the non-preferred `to_embedding` spelling, and the primed `init'` used `coe_fn`. Swapping them around is consistent with how most other bundled morphisms are handled. mathlib4 PR: https://github.com/leanprover-community/mathlib4/pull/2581 ESTIMATED CHANGES Modified src/order/initial_seg.lean - theorem initial_seg.init' + theorem initial_seg.init Modified src/set_theory/cardinal/ordinal.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean 2023-03-02 09:27:54 9b9d125 feat(linear_algebra/direct_sum/tensor_product): one-sided distributivity constructions (#18514) We had the two-sided distributivity already, analogous to `finset.sum_mul_sum`. This PR adds constructions analogous to `finset.mul_sum` and `finset.sum_mul`. This also tidies some namespacing and explicitness issues. ESTIMATED CHANGES Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/direct_sum/tensor_product.lean - def tensor_product.direct_sum + def tensor_product.direct_sum_left + theorem tensor_product.direct_sum_left_symm_lof_tmul + theorem tensor_product.direct_sum_left_tmul_lof + def tensor_product.direct_sum_right + theorem tensor_product.direct_sum_right_symm_lof_tmul + theorem tensor_product.direct_sum_right_tmul_lof 2023-03-02 07:01:43 e7f0ddb refactor(ring_theory/ideal/operations): split quotients to a new file (#18531) This file is growing quite long. Splitting it will reduce dependencies in (some) downstream files, and by becoming shorter also makes this file easier to edit and port. This doesn't attempt to change any proofs in downstream files; instead, it just adds new imports to keep them compiling. There are 9 downstream files which no longer depend on the `quotient_operations` file, although one of these now depends on `ring_theory.ideal.quotient`. A future PR will remove the `ring_theory.ideal.quotient_operations` import from more files. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/analysis/normed/group/quotient.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/operations.lean - theorem double_quot.ker_quot_left_to_quot_sup - theorem double_quot.ker_quot_quot_mk - def double_quot.lift_sup_quot_quot_mk - def double_quot.quot_left_to_quot_sup - def double_quot.quot_quot_equiv_comm - theorem double_quot.quot_quot_equiv_comm_algebra_map - theorem double_quot.quot_quot_equiv_comm_comp_quot_quot_mk - theorem double_quot.quot_quot_equiv_comm_mk_mk - theorem double_quot.quot_quot_equiv_comm_quot_quot_mk - theorem double_quot.quot_quot_equiv_comm_symm - def double_quot.quot_quot_equiv_quot_of_le - theorem double_quot.quot_quot_equiv_quot_of_le_comp_quot_quot_mk - theorem double_quot.quot_quot_equiv_quot_of_le_quot_quot_mk - theorem double_quot.quot_quot_equiv_quot_of_le_symm_comp_mk - theorem double_quot.quot_quot_equiv_quot_of_le_symm_mk - def double_quot.quot_quot_equiv_quot_sup - theorem double_quot.quot_quot_equiv_quot_sup_quot_quot_algebra_map - theorem double_quot.quot_quot_equiv_quot_sup_quot_quot_mk - theorem double_quot.quot_quot_equiv_quot_sup_symm_quot_quot_mk - def double_quot.quot_quot_mk - def double_quot.quot_quot_to_quot_sup - theorem ideal.algebra_map_quotient_injective - theorem ideal.bot_quotient_is_maximal_iff - theorem ideal.comp_quotient_map_eq_of_comp_eq - theorem ideal.ker_lift.map_smul - def ideal.ker_lift_alg - theorem ideal.ker_lift_alg_injective - theorem ideal.ker_lift_alg_mk - theorem ideal.ker_lift_alg_to_ring_hom - theorem ideal.ker_quotient_lift - theorem ideal.map_mk_eq_bot_of_le - theorem ideal.map_quotient_self - theorem ideal.mem_quotient_iff_mem - theorem ideal.mem_quotient_iff_mem_sup - theorem ideal.mk_ker - theorem ideal.quotient.alg_hom_ext - theorem ideal.quotient.alg_map_eq - theorem ideal.quotient.algebra_map_eq - def ideal.quotient.liftₐ - theorem ideal.quotient.liftₐ_apply - theorem ideal.quotient.liftₐ_comp - theorem ideal.quotient.mk_algebra_map - theorem ideal.quotient.mk_comp_algebra_map - def ideal.quotient.mkₐ - theorem ideal.quotient.mkₐ_eq_mk - theorem ideal.quotient.mkₐ_ker - theorem ideal.quotient.mkₐ_surjective - theorem ideal.quotient.mkₐ_to_ring_hom - def ideal.quotient_equiv - def ideal.quotient_equiv_alg - def ideal.quotient_equiv_alg_of_eq - theorem ideal.quotient_equiv_alg_of_eq_mk - theorem ideal.quotient_equiv_alg_of_eq_symm - theorem ideal.quotient_equiv_mk - theorem ideal.quotient_equiv_symm_mk - theorem ideal.quotient_ker_alg_equiv_of_right_inverse.apply - def ideal.quotient_ker_alg_equiv_of_right_inverse - theorem ideal.quotient_ker_alg_equiv_of_right_inverse_symm.apply - def ideal.quotient_map - theorem ideal.quotient_map_algebra_map - theorem ideal.quotient_map_comp_mk - theorem ideal.quotient_map_comp_mkₐ - theorem ideal.quotient_map_injective' - theorem ideal.quotient_map_injective - theorem ideal.quotient_map_mk - theorem ideal.quotient_map_mkₐ - theorem ideal.quotient_map_surjective - def ideal.quotient_mapₐ - def ring_hom.ker_lift - theorem ring_hom.ker_lift_injective - theorem ring_hom.ker_lift_mk - theorem ring_hom.lift_injective_of_ker_le_ideal - theorem ring_hom.quotient_ker_equiv_of_right_inverse.apply - theorem ring_hom.quotient_ker_equiv_of_right_inverse.symm.apply - def ring_hom.quotient_ker_equiv_of_right_inverse Added src/ring_theory/ideal/quotient_operations.lean + theorem double_quot.ker_quot_left_to_quot_sup + theorem double_quot.ker_quot_quot_mk + def double_quot.lift_sup_quot_quot_mk + def double_quot.quot_left_to_quot_sup + def double_quot.quot_quot_equiv_comm + theorem double_quot.quot_quot_equiv_comm_algebra_map + theorem double_quot.quot_quot_equiv_comm_comp_quot_quot_mk + theorem double_quot.quot_quot_equiv_comm_mk_mk + theorem double_quot.quot_quot_equiv_comm_quot_quot_mk + theorem double_quot.quot_quot_equiv_comm_symm + def double_quot.quot_quot_equiv_quot_of_le + theorem double_quot.quot_quot_equiv_quot_of_le_comp_quot_quot_mk + theorem double_quot.quot_quot_equiv_quot_of_le_quot_quot_mk + theorem double_quot.quot_quot_equiv_quot_of_le_symm_comp_mk + theorem double_quot.quot_quot_equiv_quot_of_le_symm_mk + def double_quot.quot_quot_equiv_quot_sup + theorem double_quot.quot_quot_equiv_quot_sup_quot_quot_algebra_map + theorem double_quot.quot_quot_equiv_quot_sup_quot_quot_mk + theorem double_quot.quot_quot_equiv_quot_sup_symm_quot_quot_mk + def double_quot.quot_quot_mk + def double_quot.quot_quot_to_quot_sup + theorem ideal.algebra_map_quotient_injective + theorem ideal.bot_quotient_is_maximal_iff + theorem ideal.comp_quotient_map_eq_of_comp_eq + theorem ideal.ker_lift.map_smul + def ideal.ker_lift_alg + theorem ideal.ker_lift_alg_injective + theorem ideal.ker_lift_alg_mk + theorem ideal.ker_lift_alg_to_ring_hom + theorem ideal.ker_quotient_lift + theorem ideal.map_mk_eq_bot_of_le + theorem ideal.map_quotient_self + theorem ideal.mem_quotient_iff_mem + theorem ideal.mem_quotient_iff_mem_sup + theorem ideal.mk_ker + theorem ideal.quotient.alg_hom_ext + theorem ideal.quotient.alg_map_eq + theorem ideal.quotient.algebra_map_eq + def ideal.quotient.liftₐ + theorem ideal.quotient.liftₐ_apply + theorem ideal.quotient.liftₐ_comp + theorem ideal.quotient.mk_algebra_map + theorem ideal.quotient.mk_comp_algebra_map + def ideal.quotient.mkₐ + theorem ideal.quotient.mkₐ_eq_mk + theorem ideal.quotient.mkₐ_ker + theorem ideal.quotient.mkₐ_surjective + theorem ideal.quotient.mkₐ_to_ring_hom + def ideal.quotient_equiv + def ideal.quotient_equiv_alg + def ideal.quotient_equiv_alg_of_eq + theorem ideal.quotient_equiv_alg_of_eq_mk + theorem ideal.quotient_equiv_alg_of_eq_symm + theorem ideal.quotient_equiv_mk + theorem ideal.quotient_equiv_symm_mk + theorem ideal.quotient_ker_alg_equiv_of_right_inverse.apply + def ideal.quotient_ker_alg_equiv_of_right_inverse + theorem ideal.quotient_ker_alg_equiv_of_right_inverse_symm.apply + def ideal.quotient_map + theorem ideal.quotient_map_algebra_map + theorem ideal.quotient_map_comp_mk + theorem ideal.quotient_map_comp_mkₐ + theorem ideal.quotient_map_injective' + theorem ideal.quotient_map_injective + theorem ideal.quotient_map_mk + theorem ideal.quotient_map_mkₐ + theorem ideal.quotient_map_surjective + def ideal.quotient_mapₐ + def ring_hom.ker_lift + theorem ring_hom.ker_lift_injective + theorem ring_hom.ker_lift_mk + theorem ring_hom.lift_injective_of_ker_le_ideal + theorem ring_hom.quotient_ker_equiv_of_right_inverse.apply + theorem ring_hom.quotient_ker_equiv_of_right_inverse.symm.apply + def ring_hom.quotient_ker_equiv_of_right_inverse Modified src/ring_theory/localization/ideal.lean Modified src/ring_theory/nilpotent.lean Modified src/ring_theory/valuation/basic.lean 2023-03-02 00:11:50 9a59dcb chore(topology/algebra/ring): split into 2 files (#18532) ESTIMATED CHANGES Modified src/analysis/normed/group/infinite_sum.lean Modified src/analysis/normed_space/units.lean Modified src/topology/algebra/field.lean Modified src/topology/algebra/infinite_sum/real.lean Modified src/topology/algebra/infinite_sum/ring.lean Modified src/topology/algebra/localization.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/order/field.lean Renamed src/topology/algebra/ring.lean to src/topology/algebra/ring/basic.lean - def ideal.closure - theorem ideal.closure_eq_of_is_closed - theorem ideal.coe_closure - theorem quotient_ring.is_open_map_coe - theorem quotient_ring.quotient_map_coe_coe Added src/topology/algebra/ring/ideal.lean + theorem ideal.closure_eq_of_is_closed + theorem ideal.coe_closure + theorem quotient_ring.is_open_map_coe + theorem quotient_ring.quotient_map_coe_coe Modified src/topology/algebra/uniform_ring.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/instances/matrix.lean Modified src/topology/instances/real.lean 2023-03-01 21:21:24 742aa2c feat(data.polynomial.div): add `theorem X_pow_dvd_iff` (#18528) Add the `theorem X_pow_dvd_iff` saying that a polynomial is divisible by $X^n$ if and only if its first $(n-1)$ coefficients are $0$. ESTIMATED CHANGES Modified src/data/polynomial/div.lean +/- theorem polynomial.X_dvd_iff + theorem polynomial.X_pow_dvd_iff 2023-03-01 21:21:22 f06058e feat(analysis/complex/upper_half_plane/metric): prove that SL(2, ℝ) acts isometrically on upper half space with the hyperbolic metric (#18379) A key part of the argument is to show that the element `modular_group.S` acts isometrically. We thus move the definition `modular_group.S` (and its partner `modular_group.T`) earlier in the import hierarchy to make it available without introducing a dependency on the theory of the modular group. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/basic.lean + theorem upper_half_plane.exists_SL2_smul_eq_of_apply_zero_one_eq_zero + theorem upper_half_plane.exists_SL2_smul_eq_of_apply_zero_one_ne_zero + theorem upper_half_plane.im_inv_neg_coe_pos + theorem upper_half_plane.modular_S_smul + theorem upper_half_plane.special_linear_group_apply Modified src/analysis/complex/upper_half_plane/metric.lean Modified src/analysis/normed/field/basic.lean + theorem dist_inv_inv₀ + theorem nndist_inv_inv₀ Modified src/linear_algebra/matrix/special_linear_group.lean + theorem matrix.special_linear_group.fin_two_exists_eq_mk_of_apply_zero_one_eq_zero + theorem matrix.special_linear_group.fin_two_induction + def modular_group.S + def modular_group.T + theorem modular_group.T_inv_mul_apply_one + theorem modular_group.T_mul_apply_one + theorem modular_group.T_pow_mul_apply_one + theorem modular_group.coe_S + theorem modular_group.coe_T + theorem modular_group.coe_T_inv + theorem modular_group.coe_T_zpow Modified src/number_theory/modular.lean - def modular_group.S - def modular_group.T - theorem modular_group.T_inv_mul_apply_one - theorem modular_group.T_mul_apply_one - theorem modular_group.T_pow_mul_apply_one - theorem modular_group.coe_S - theorem modular_group.coe_T - theorem modular_group.coe_T_inv - theorem modular_group.coe_T_zpow 2023-03-01 21:21:21 842328d feat(data/finsupp/indicator, algebra/big_operators/finsupp): add some lemmas about `finsupp.indicator` (#17413) mathlib4 PR: https://github.com/leanprover-community/mathlib4/pull/2258 ESTIMATED CHANGES Modified src/algebra/big_operators/finsupp.lean + theorem finsupp.indicator_eq_sum_single + theorem finsupp.prod_indicator_index Modified src/data/finsupp/defs.lean - theorem finsupp.single_eq_indicator + theorem finsupp.single_eq_set_indicator Modified src/data/finsupp/indicator.lean + theorem finsupp.single_eq_indicator 2023-03-01 18:06:17 195fcd6 refactor(topology/uniform_space/basic): review API (#18516) ### API about uniform embeddings * Add `mk_iff` to `uniform_inducing` and `uniform_embedding`. * Move lemmas about `uniform_inducing` up. * Add `uniform_inducing.comap_uniform_space`, `uniform_inducing_iff'`, and `filter.has_basis.uniform_inducing_iff`. * Add `uniform_embedding_iff'`, `filter.has_basis.uniform_embedding_iff'`, and `filter.has_basis.uniform_embedding_iff`. * Drop `uniform_embedding_def` and `uniform_embedding_def'`. * Add `uniform_embedding_iff_uniform_inducing`. ### Other changes * Add `rescale_to_shell_semi_normed_zpow` and `rescale_to_shell_zpow`. * Generalize `continuous_linear_map.antilipschitz_of_uniform_embedding` to `continuous_linear_map.antilipschitz_of_embedding`, add an even more general version `linear_map.antilipschitz_of_comap_nhds_le`. * Use `fully_applied := ff` to generate `equiv.prod_congr_apply`. * Use `edist := λ _ _, 0` in `metric_space` instances for `empty` and `punit`. * Add `inducing.injective`, `inducing.embedding`, and `embedding_iff_inducing` * Allow `Sort*`s in `filter.has_basis.uniform_continuous_iff` and `filter.has_basis.uniform_continuous_on_iff`. * Rename * `metric.of_t0_pseudo_metric_space` to `metric_space.of_t0_pseudo_metric_space`; * `emetric.of_t0_pseudo_emetric_space` to `emetric_space.of_t0_pseudo_emetric_space`; * `metric.metric_space.to_emetric_space` to `metric_space.to_emetric_space`; * `uniform_embedding_iff'` to `emetric.uniform_embedding_iff'` ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed_space/basic.lean + theorem rescale_to_shell_semi_normed_zpow + theorem rescale_to_shell_zpow Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.antilipschitz_of_embedding - theorem continuous_linear_map.antilipschitz_of_uniform_embedding + theorem linear_map.antilipschitz_of_comap_nhds_le +/- theorem linear_map.bound_of_ball_bound +/- theorem linear_map.bound_of_shell Modified src/analysis/normed_space/pi_Lp.lean Modified src/logic/equiv/basic.lean Modified src/topology/metric_space/basic.lean +/- def emetric_space.to_metric_space - def metric.of_t0_pseudo_metric_space + def metric_space.of_t0_pseudo_metric_space Modified src/topology/metric_space/emetric_space.lean - def emetric.of_t0_pseudo_emetric_space + theorem emetric.uniform_embedding_iff' + def emetric_space.of_t0_pseudo_emetric_space - theorem uniform_embedding_iff' Modified src/topology/metric_space/metrizable_uniformity.lean Modified src/topology/separation.lean + theorem embedding_iff_inducing Modified src/topology/uniform_space/basic.lean +/- theorem filter.has_basis.uniform_continuous_iff +/- theorem filter.has_basis.uniform_continuous_on_iff Modified src/topology/uniform_space/uniform_embedding.lean + theorem filter.has_basis.uniform_embedding_iff' + theorem filter.has_basis.uniform_embedding_iff - theorem uniform_embedding.embedding - theorem uniform_embedding_def' - theorem uniform_embedding_def + theorem uniform_embedding_iff' + theorem uniform_embedding_iff_uniform_inducing - theorem uniform_inducing.inducing + theorem uniform_inducing_iff' 2023-03-01 16:43:17 989433c perf(analysis/inner_product_space/spectrum): Squeeze simps (#18529) From 17.6s to 1.8s on my machine. ESTIMATED CHANGES Modified src/analysis/inner_product_space/spectrum.lean 2023-03-01 14:37:21 fee218f doc(order/game_add): minor doc improvement (#18525) Ported along with other changes to the file: https://github.com/leanprover-community/mathlib4/pull/2532 ESTIMATED CHANGES Modified src/order/game_add.lean 2023-03-01 14:37:19 dfb0adb chore(ring_theory/polynomial): squeeze a `simpa` (#18524) This turns the tactic execution time from over 18s to under 700ms on my machine. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Timeout.20in.20ring_theory.2Epolynomial.2Ebasic ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean 2023-03-01 12:30:28 8ee653c doc(set_theory/ordinal/exponential): improve module docstring (#18522) Pair: https://github.com/leanprover-community/mathlib4/pull/2551 ESTIMATED CHANGES Modified src/set_theory/ordinal/exponential.lean 2023-03-01 12:30:26 c577340 feat(analysis/convex/extreme): Extreme points of `s ×ˢ t` (#18171) Characterise `segment`, `open_segment`, `extreme_points` in `prod` and `pi`. ESTIMATED CHANGES Modified src/analysis/convex/extreme.lean - theorem extreme_points_def + theorem extreme_points_pi + theorem extreme_points_prod +/- theorem is_extreme_Inter +/- theorem is_extreme_bInter + theorem mem_extreme_points Modified src/analysis/convex/segment.lean + theorem image_open_segment + theorem image_segment +/- theorem mem_segment_translate - theorem open_segment_image + theorem pi.image_update_open_segment + theorem pi.image_update_segment + theorem pi.open_segment_subset + theorem pi.segment_subset + theorem prod.image_mk_open_segment_left + theorem prod.image_mk_open_segment_right + theorem prod.image_mk_segment_left + theorem prod.image_mk_segment_right + theorem prod.open_segment_subset + theorem prod.segment_subset - theorem segment_image + theorem vadd_open_segment + theorem vadd_segment 2023-03-01 11:03:47 e876965 chore(combinatorics/simple_graph/connectivity): open a namespace block for `connected_component` (#18520) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean +/- def simple_graph.connected_component.map +/- theorem simple_graph.connected_component.map_comp +/- theorem simple_graph.connected_component.map_id +/- theorem simple_graph.connected_component.map_mk +/- theorem simple_graph.preconnected.subsingleton_connected_component 2023-03-01 08:55:34 35882dd fix(algebra/star/star_alg_hom): fix typo in `star_alg_hom.coe_coe` (#18519) ESTIMATED CHANGES Modified src/algebra/star/star_alg_hom.lean +/- theorem star_alg_hom.coe_coe 2023-03-01 08:55:32 c6ef638 feat(combinatorics/simple_graph/basic): Simple graphs form a complete boolean algebra (#18285) Upgrade the `boolean_algebra (simple_graph α)` and `lattice G.subgraph` instances to `complete_boolean_algebra (simple_graph α)` and `complete_distrib_lattice G.subgraph` respectively. Add `distrib_lattice`/`complete_distrib_lattice` instances for `G.finsubgraph`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.Inf_adj + theorem simple_graph.Inf_adj_of_nonempty + theorem simple_graph.Sup_adj + theorem simple_graph.adj_inj + theorem simple_graph.adj_injective + theorem simple_graph.infi_adj + theorem simple_graph.infi_adj_of_nonempty + theorem simple_graph.supr_adj Modified src/combinatorics/simple_graph/finsubgraph.lean Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.Inf_adj + theorem simple_graph.subgraph.Inf_adj_of_nonempty + theorem simple_graph.subgraph.Sup_adj - def simple_graph.subgraph.bot - theorem simple_graph.subgraph.bot_verts + theorem simple_graph.subgraph.edge_set_Inf + theorem simple_graph.subgraph.edge_set_Sup + theorem simple_graph.subgraph.edge_set_infi + theorem simple_graph.subgraph.edge_set_supr +/- theorem simple_graph.subgraph.inf_adj + theorem simple_graph.subgraph.infi_adj + theorem simple_graph.subgraph.infi_adj_of_nonempty - def simple_graph.subgraph.inter - def simple_graph.subgraph.is_subgraph + theorem simple_graph.subgraph.neighbor_set_Inf + theorem simple_graph.subgraph.neighbor_set_Sup + theorem simple_graph.subgraph.neighbor_set_bot +/- theorem simple_graph.subgraph.neighbor_set_inf + theorem simple_graph.subgraph.neighbor_set_infi +/- theorem simple_graph.subgraph.neighbor_set_sup + theorem simple_graph.subgraph.neighbor_set_supr + theorem simple_graph.subgraph.neighbor_set_top +/- theorem simple_graph.subgraph.not_bot_adj + theorem simple_graph.subgraph.spanning_coe_inj +/- theorem simple_graph.subgraph.sup_adj + theorem simple_graph.subgraph.supr_adj - def simple_graph.subgraph.top + theorem simple_graph.subgraph.top_adj - theorem simple_graph.subgraph.top_adj_iff - theorem simple_graph.subgraph.top_verts - def simple_graph.subgraph.union + theorem simple_graph.subgraph.verts_Inf + theorem simple_graph.subgraph.verts_Sup + theorem simple_graph.subgraph.verts_bot +/- theorem simple_graph.subgraph.verts_inf + theorem simple_graph.subgraph.verts_infi +/- theorem simple_graph.subgraph.verts_sup + theorem simple_graph.subgraph.verts_supr + theorem simple_graph.subgraph.verts_top 2023-03-01 05:59:09 ee05e9c chore(*): add mathlib4 synchronization comments (#18494) Regenerated from the [port status wiki page](https://github.com/leanprover-community/mathlib/wiki/mathlib4-port-status). Relates to the following files: * `algebra.algebra.equiv` * `algebra.hom.non_unital_alg` * `algebra.lie.basic` * `algebra.module.submodule.bilinear` * `algebra.order.hom.ring` * `category_theory.adjunction.mates` * `category_theory.adjunction.reflective` * `category_theory.bicategory.functor` * `category_theory.filtered` * `category_theory.limits.cones` * `category_theory.limits.has_limits` * `category_theory.limits.is_limit` * `category_theory.monoidal.functorial` * `category_theory.sums.associator` * `combinatorics.simple_graph.basic` * `combinatorics.simple_graph.clique` * `combinatorics.simple_graph.coloring` * `combinatorics.simple_graph.density` * `combinatorics.simple_graph.partition` * `combinatorics.simple_graph.strongly_regular` * `combinatorics.simple_graph.subgraph` * `combinatorics.simple_graph.triangle.basic` * `data.W.cardinal` * `data.real.conjugate_exponents` * `data.real.enat_ennreal` * `data.real.ennreal` * `data.real.ereal` * `dynamics.omega_limit` * `group_theory.perm.option` * `group_theory.perm.sign` * `linear_algebra.basis` * `linear_algebra.bilinear_map` * `linear_algebra.linear_pmap` * `linear_algebra.ray` * `logic.equiv.fintype` * `order.filter.ennreal` * `set_theory.cardinal.cofinality` * `set_theory.cardinal.continuum` * `set_theory.cardinal.divisibility` * `set_theory.ordinal.cantor_normal_form` * `topology.algebra.order.floor` * `topology.algebra.uniform_group` * `topology.tactic` * `topology.uniform_space.compact` * `topology.uniform_space.equicontinuity` * `topology.uniform_space.uniform_convergence_topology` ESTIMATED CHANGES Modified src/algebra/algebra/equiv.lean Modified src/algebra/hom/non_unital_alg.lean Modified src/algebra/lie/basic.lean Modified src/algebra/module/submodule/bilinear.lean Modified src/algebra/order/hom/ring.lean Modified src/category_theory/adjunction/mates.lean Modified src/category_theory/adjunction/reflective.lean Modified src/category_theory/bicategory/functor.lean Modified src/category_theory/filtered.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/has_limits.lean Modified src/category_theory/limits/is_limit.lean Modified src/category_theory/monoidal/functorial.lean Modified src/category_theory/sums/associator.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/clique.lean Modified src/combinatorics/simple_graph/coloring.lean Modified src/combinatorics/simple_graph/density.lean Modified src/combinatorics/simple_graph/partition.lean Modified src/combinatorics/simple_graph/strongly_regular.lean Modified src/combinatorics/simple_graph/subgraph.lean Modified src/combinatorics/simple_graph/triangle/basic.lean Modified src/data/W/cardinal.lean Modified src/data/real/conjugate_exponents.lean Modified src/data/real/enat_ennreal.lean Modified src/data/real/ennreal.lean Modified src/data/real/ereal.lean Modified src/dynamics/omega_limit.lean Modified src/group_theory/perm/option.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_map.lean Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/ray.lean Modified src/logic/equiv/fintype.lean Modified src/order/filter/ennreal.lean Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/cardinal/continuum.lean Modified src/set_theory/cardinal/divisibility.lean Modified src/set_theory/ordinal/cantor_normal_form.lean Modified src/topology/algebra/order/floor.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/tactic.lean Modified src/topology/uniform_space/compact.lean Modified src/topology/uniform_space/equicontinuity.lean Modified src/topology/uniform_space/uniform_convergence_topology.lean 2023-03-01 04:43:30 8195826 refactor(category theory/cofiltered_systems): rename `mittag_leffler.lean` and move `nonempty_sections_of_fintype_cofiltered_system` into new file (#18433) * Create new file `category_theory/cofiltered_system.lean`. * Delete `category_theory/mittag_leffler.lean` and move its content there. * Move `nonempty_sections_of_fintype_cofiltered_system` and `nonempty_sections_of_fintype_inverse_system` there. * Some new lemmas. ESTIMATED CHANGES Renamed src/category_theory/mittag_leffler.lean to src/category_theory/cofiltered_system.lean + theorem category_theory.functor.eval_section_injective_of_eventually_injective + theorem category_theory.functor.eval_section_surjective_of_surjective + theorem category_theory.functor.eventually_injective +/- theorem category_theory.functor.surjective_to_eventual_ranges +/- theorem category_theory.functor.thin_diagram_of_surjective + theorem category_theory.functor.to_preimages_nonempty_of_surjective + theorem nonempty_sections_of_finite_cofiltered_system.init + theorem nonempty_sections_of_finite_cofiltered_system + theorem nonempty_sections_of_finite_inverse_system Modified src/combinatorics/hall/basic.lean Modified src/combinatorics/simple_graph/ends/defs.lean Modified src/combinatorics/simple_graph/finsubgraph.lean Modified src/topology/category/Top/limits.lean +/- theorem Top.partial_sections.nonempty - theorem nonempty_sections_of_fintype_cofiltered_system.init - theorem nonempty_sections_of_fintype_cofiltered_system - theorem nonempty_sections_of_fintype_inverse_system 2023-03-01 02:42:27 7a0dd7b feat(combinatorics/simple_graph/regularity/bound): Local `positivity` extension (#18368) I was finding myself writing long positivity proofs that relied only on a few Szemerédi Regularity Lemma-specific lemmas before applying a bunch of usual positivity lemmas. This provides a SRL-specific `positivity` extension, which I turn on locally in the files internal to the proof of SRL. It works great and has significantly reduced the clutter. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/regularity/bound.lean +/- theorem szemeredi_regularity.coe_m_add_one_pos - theorem szemeredi_regularity.m_coe_pos +/- theorem szemeredi_regularity.m_pos 2023-03-01 02:42:26 0dd4319 chore(set_theory/ordinal/fixed_point): style + comments (#18322) We add some missing brackets, and some much-needed comments on various functions. ESTIMATED CHANGES Modified src/set_theory/ordinal/fixed_point.lean +/- theorem ordinal.nfp_le 2023-02-28 23:18:52 ed90a7d refactor(ring_theory): submodules that are units are finitely generated (#18510) + generalize from fractional_ideal to submodule. + the algebra doesn't have to be commutative. + introduce `fractional_ideal.coe_submodule_hom`. Potential future project: since we have [fractional_ideal.is_fractional_of_fg](https://leanprover-community.github.io/mathlib_docs/ring_theory/fractional_ideal.html#fractional_ideal.is_fractional_of_fg), submodules in a localization that are units are automatically fractional ideals, so [class_group](https://leanprover-community.github.io/mathlib_docs/ring_theory/class_group.html#class_group) could be defined as the invertible submodules in the fraction_ring modulo principal ones, without mentioning `is_fractional`. This might make `class_group` less complicated and therefore faster. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem submodule.fg_of_is_unit + theorem submodule.fg_unit Modified src/ring_theory/fractional_ideal.lean + def fractional_ideal.coe_submodule_hom 2023-02-28 22:11:39 8f66c29 feat(set_theory/zfc/basic): range of indexed family of sets (#18296) ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Set.mem_range + theorem Set.to_set_range 2023-02-28 18:04:32 4c586d2 chore(data/{multiset,finset}/pi): generalize from `Type` to `Sort` (#18429) Everything in this file about `multiset.pi.cons` generalizes to `Sort`. The parts of the file which don't generalize now use `β` instead. This is motivated by #18417, though I do not know if supporting `Sort` is actually important there. Forward-ported as https://github.com/leanprover-community/mathlib4/pull/2220 ESTIMATED CHANGES Modified src/data/finset/pi.lean +/- theorem finset.mem_pi +/- def finset.pi +/- theorem finset.pi_empty +/- theorem finset.pi_insert +/- theorem finset.pi_subset +/- theorem finset.pi_val Modified src/data/multiset/pi.lean +/- theorem multiset.card_pi +/- theorem multiset.mem_pi +/- def multiset.pi.empty +/- def multiset.pi +/- theorem multiset.pi_cons +/- theorem multiset.pi_zero 2023-02-28 18:04:31 e657711 feat(analysis/normed_space/star/continuous_functional_calculus): prove spectral permanence and construct the `continuous_functional_calculus` (#17164) This PR proves the **spectral permanence** property for C⋆-algebras and constructs the **continuous functional calculus** for normal elements. - [x] depends on: #17000 - [x] depends on: #17136 - [x] depends on: #17156 - [x] depends on: #17166 - [x] depends on: #17167 - [x] depends on: #17169 - [x] depends on: #17170 - [x] depends on: #17178 - [x] depends on: #17183 - [x] depends on: #17504 ESTIMATED CHANGES Modified src/analysis/inner_product_space/two_dim.lean Modified src/analysis/normed_space/star/basic.lean Added src/analysis/normed_space/star/continuous_functional_calculus.lean + theorem continuous_functional_calculus_map_id + theorem elemental_star_algebra.bijective_character_space_to_spectrum + theorem elemental_star_algebra.continuous_character_space_to_spectrum + theorem elemental_star_algebra.is_unit_of_is_unit_of_is_star_normal + theorem spectrum_star_mul_self_of_is_star_normal + theorem star_subalgebra.coe_is_unit + theorem star_subalgebra.is_unit_coe_inv_mem + theorem star_subalgebra.mem_spectrum_iff + theorem star_subalgebra.spectrum_eq Modified src/analysis/normed_space/star/gelfand_duality.lean + theorem weak_dual.character_space.mem_spectrum_iff_exists Modified src/number_theory/modular_forms/slash_actions.lean Modified src/number_theory/modular_forms/slash_invariant_forms.lean 2023-02-28 15:56:07 da083da feat(combinatorics/simple_graph/hom): add basic definitions and lemmas for finite subgraphs (#16382) We define `finsubgraph` and its corresponding vertex- and edge-based singletons, and prove some basic ordering lemmas on the singletons. This is primarily preparatory work for proving the De Bruijn-Erdős theorem (generalised to arbitrary finite codomain graphs). X | | snd 0 | | v v Y ESTIMATED CHANGES Added src/category_theory/limits/constructions/zero_objects.lean + def category_theory.limits.binary_cofan_zero_left + def category_theory.limits.binary_cofan_zero_left_is_colimit + def category_theory.limits.binary_cofan_zero_right + def category_theory.limits.binary_cofan_zero_right_is_colimit + def category_theory.limits.binary_fan_zero_left + def category_theory.limits.binary_fan_zero_left_is_limit + def category_theory.limits.binary_fan_zero_right + def category_theory.limits.binary_fan_zero_right_is_limit + def category_theory.limits.coprod_zero_iso + theorem category_theory.limits.coprod_zero_iso_inv + theorem category_theory.limits.inl_pushout_zero_zero_iso_hom + theorem category_theory.limits.inl_pushout_zero_zero_iso_inv + theorem category_theory.limits.inr_coprod_zeroiso_hom + theorem category_theory.limits.inr_pushout_zero_zero_iso_hom + theorem category_theory.limits.inr_pushout_zero_zero_iso_inv + theorem category_theory.limits.inr_zero_coprod_iso_hom + def category_theory.limits.prod_zero_iso + theorem category_theory.limits.prod_zero_iso_hom + theorem category_theory.limits.prod_zero_iso_iso_inv_snd + def category_theory.limits.pullback_zero_zero_iso + theorem category_theory.limits.pullback_zero_zero_iso_hom_fst + theorem category_theory.limits.pullback_zero_zero_iso_hom_snd + theorem category_theory.limits.pullback_zero_zero_iso_inv_fst + theorem category_theory.limits.pullback_zero_zero_iso_inv_snd + def category_theory.limits.pushout_zero_zero_iso + def category_theory.limits.zero_coprod_iso + theorem category_theory.limits.zero_coprod_iso_inv + def category_theory.limits.zero_prod_iso + theorem category_theory.limits.zero_prod_iso_hom + theorem category_theory.limits.zero_prod_iso_inv_snd Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.binary_cofan.is_colimit_mk + def category_theory.limits.binary_fan.is_limit_mk Modified src/category_theory/limits/shapes/comm_sq.lean + theorem category_theory.bicartesian_sq.flip + theorem category_theory.bicartesian_sq.of_has_biproduct₁ + theorem category_theory.bicartesian_sq.of_has_biproduct₂ + theorem category_theory.bicartesian_sq.of_is_biproduct₁ + theorem category_theory.bicartesian_sq.of_is_biproduct₂ + theorem category_theory.bicartesian_sq.of_is_pullback_is_pushout + structure category_theory.bicartesian_sq + theorem category_theory.is_pullback.inl_snd' + theorem category_theory.is_pullback.inl_snd + theorem category_theory.is_pullback.inr_fst' + theorem category_theory.is_pullback.inr_fst + theorem category_theory.is_pullback.of_has_binary_biproduct + theorem category_theory.is_pullback.of_has_biproduct + theorem category_theory.is_pullback.of_is_bilimit' + theorem category_theory.is_pullback.of_is_bilimit + theorem category_theory.is_pullback.of_is_product' + def category_theory.is_pullback.pullback_biprod_inl_biprod_inr + theorem category_theory.is_pullback.zero_bot +/- theorem category_theory.is_pullback.zero_left + theorem category_theory.is_pullback.zero_right +/- theorem category_theory.is_pullback.zero_top +/- structure category_theory.is_pullback + theorem category_theory.is_pushout.inl_snd' + theorem category_theory.is_pushout.inl_snd + theorem category_theory.is_pushout.inr_fst' + theorem category_theory.is_pushout.inr_fst + theorem category_theory.is_pushout.of_has_binary_biproduct + theorem category_theory.is_pushout.of_has_biproduct + theorem category_theory.is_pushout.of_is_bilimit' + theorem category_theory.is_pushout.of_is_bilimit + theorem category_theory.is_pushout.of_is_coproduct' + def category_theory.is_pushout.pushout_biprod_fst_biprod_snd +/- theorem category_theory.is_pushout.zero_bot + theorem category_theory.is_pushout.zero_left +/- theorem category_theory.is_pushout.zero_right + theorem category_theory.is_pushout.zero_top +/- structure category_theory.is_pushout 2022-10-05 04:10:07 ae17d05 chore(algebra/hom/non_unital_alg): add missing `non_unital_ring_hom_class` instance (#16783) This instance was missing because `non_unital_alg_hom` was defined before `non_unital_ring_hom`. ESTIMATED CHANGES Modified src/algebra/hom/non_unital_alg.lean 2022-10-05 01:42:24 8f83c26 feat(ring_theory/ideal/minimal_prime): Minimal prime ideals over an ideal (#16136) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.Inf_is_prime_of_is_chain Added src/ring_theory/ideal/minimal_prime.lean + theorem ideal.Inf_minimal_primes + theorem ideal.comap_minimal_primes_eq_of_surjective + theorem ideal.exists_comap_eq_of_mem_minimal_primes + theorem ideal.exists_comap_eq_of_mem_minimal_primes_of_injective + theorem ideal.exists_minimal_primes_comap_eq + theorem ideal.exists_minimal_primes_le + theorem ideal.mimimal_primes_comap_of_surjective + def ideal.minimal_primes + theorem ideal.minimal_primes_eq_comap + theorem ideal.minimal_primes_eq_subsingleton + theorem ideal.minimal_primes_eq_subsingleton_self + theorem ideal.radical_minimal_primes + def minimal_primes 2022-10-04 21:21:06 e36ae18 feat(data/set/prod): `set.off_diag` (#16803) Define the off-diagonal of a set, which is the set of pairs of points whose components are distinct. ESTIMATED CHANGES Modified src/data/set/prod.lean + theorem set.disjoint_diagonal_off_diag + theorem set.mem_off_diag + def set.off_diag + theorem set.off_diag_empty + theorem set.off_diag_eq_empty + theorem set.off_diag_eq_sep_prod + theorem set.off_diag_insert + theorem set.off_diag_inter + theorem set.off_diag_mono + theorem set.off_diag_nonempty + theorem set.off_diag_singleton + theorem set.off_diag_subset_prod + theorem set.off_diag_union + theorem set.off_diag_univ + theorem set.prod_sdiff_diagonal 2022-10-04 21:21:05 3946a60 fix(docs/references.bib): fix Fröhlich's name in the references (#16802) Correct the BibTeX entry for the book by Cassels and Frohlich, copy-pasting it from MathSciNet. ESTIMATED CHANGES Modified docs/references.bib 2022-10-04 18:24:27 8f40883 chore(topology/algebra/polynomial): golf `polynomial.coeff_le_of_roots_le` (#16789) ... and generalize from [field F] to [comm_ring F]. ESTIMATED CHANGES Modified src/topology/algebra/polynomial.lean 2022-10-04 18:24:26 5c88020 feat(data/{finsupp,pi}/lex): generalize from linear_order to partial_order (#16740) Included in #16777. Should be closed if #16777 is merged first. ESTIMATED CHANGES Modified src/data/finsupp/lex.lean Modified src/data/pi/lex.lean +/- theorem pi.lex.le_of_forall_le +/- theorem pi.lex.le_of_of_lex_le +/- theorem pi.to_lex_monotone 2022-10-04 18:24:25 6858e17 feat(number_theory/padic_numbers): bundle padic_norm_e (#16650) We turn `padic_norm_e` into a docs#absolute_value, removing the need for many specific methods. ESTIMATED CHANGES Modified src/number_theory/padics/padic_numbers.lean + theorem padic.zero_def - theorem padic_norm_e.sub_rev - theorem padic_norm_e.triangle_ineq - theorem padic_norm_e.zero_def - theorem padic_norm_e.zero_iff +/- def padic_norm_e 2022-10-04 12:55:48 b2e818b chore(data/complex/basic): golf 2 proofs (#16788) ESTIMATED CHANGES Modified src/data/complex/basic.lean 2022-10-04 12:55:47 9fe85cd feat(tactic/qify) : `qify` tactic (#16313) This file mainly introduces `qify` which casts goals or hypotheses about natural numbers or integers to the ones about rational numbers. Note that this file is following from `zify`. This is motivated by thinking about division in natural numbers or integers. Division in natural numbers or integers is not always working fine (e.g. (5 : ℕ) / 2 = 2), so it's easier to work in `ℚ`, where division and subtraction are well behaved. ESTIMATED CHANGES Added src/tactic/qify.lean + theorem qify.rat.coe_int_eq_coe_int_iff + theorem qify.rat.coe_int_le_coe_int_iff + theorem qify.rat.coe_int_lt_coe_int_iff + theorem qify.rat.coe_int_ne_coe_int_iff + theorem qify.rat.coe_nat_eq_coe_nat_iff + theorem qify.rat.coe_nat_le_coe_nat_iff + theorem qify.rat.coe_nat_lt_coe_nat_iff + theorem qify.rat.coe_nat_ne_coe_nat_iff Added test/qify.lean 2022-10-04 10:22:27 91df768 feat(tactic/positivity): Extension for `int.nat_abs` (#16787) Add `positivity_nat_abs`, a positivity extension for `int.nat_abs`. ESTIMATED CHANGES Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-10-04 10:22:25 16749fc feat(algebra/monoid_algebra/support): lemmas about support and multiplying with single (#16326) The new lemmas use weaker assumptions and can be used to shorten some proofs. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/support.lean + theorem monoid_algebra.support_mul_single_eq_image + theorem monoid_algebra.support_mul_single_subset + theorem monoid_algebra.support_single_mul_eq_image + theorem monoid_algebra.support_single_mul_subset 2022-10-04 10:22:24 9335478 refactor(algebra/symmetrized): Bundle `sym` and `unsym` as equivalences (#14334) Coercions to and from a type synonym should be bundled as (decorated) equivalences to be maximally useful. This PR bundles `sym_alg.sym` and `sym_alg.unsym` that way. As a result, `sym_alg.sym_equiv` is now redundant. ESTIMATED CHANGES Modified src/algebra/symmetrized.lean +/- def sym_alg.sym +/- theorem sym_alg.sym_bijective - def sym_alg.sym_equiv +/- theorem sym_alg.sym_injective +/- theorem sym_alg.sym_surjective + theorem sym_alg.sym_symm +/- def sym_alg.unsym +/- theorem sym_alg.unsym_bijective +/- theorem sym_alg.unsym_injective +/- theorem sym_alg.unsym_surjective + theorem sym_alg.unsym_symm 2022-10-04 09:14:55 7aaa53f refactor(order/succ_pred/limit): redefine successor/predecessor limits (#15655) I realized too late that there is a much simpler definition for a successor/predecessor limit (defined in #15001) in terms of the covering relation. We redefine these predicates and port over the existing API. Note that this new definition is only equivalent to the old one in partial orders. The API has remained exactly the same with two caveats: - A few theorems need their assumptions strengthened from preorders to partial orders. - Since `is_succ_limit` is now defined outside of the `order` namespace, all its theorems are moved outside of it too. ESTIMATED CHANGES Modified src/order/succ_pred/limit.lean +/- theorem order.is_pred_limit.lt_pred +/- theorem order.is_pred_limit.lt_pred_iff +/- theorem order.is_pred_limit.pred_ne +/- def order.is_pred_limit +/- theorem order.is_pred_limit_iff_lt_pred - theorem order.is_pred_limit_iff_pred_ne + theorem order.is_pred_limit_of_dense - theorem order.is_pred_limit_of_lt_pred + theorem order.is_pred_limit_of_pred_lt +/- theorem order.is_pred_limit_of_pred_ne +/- theorem order.is_pred_limit_rec_on_limit +/- theorem order.is_pred_limit_rec_on_pred' +/- theorem order.is_pred_limit_rec_on_pred + theorem order.is_pred_limit_to_dual_iff +/- theorem order.is_pred_limit_top +/- theorem order.is_succ_limit.succ_ne +/- def order.is_succ_limit +/- theorem order.is_succ_limit_bot + theorem order.is_succ_limit_of_dense +/- theorem order.is_succ_limit_of_succ_ne +/- theorem order.is_succ_limit_rec_on_limit +/- theorem order.is_succ_limit_rec_on_succ' +/- theorem order.is_succ_limit_rec_on_succ + theorem order.is_succ_limit_to_dual_iff +/- theorem order.mem_range_pred_of_not_is_pred_limit - theorem order.not_is_pred_limit_iff' + theorem order.not_is_pred_limit_iff_exists_covby + theorem order.not_is_succ_limit_iff_exists_covby 2022-10-04 05:52:19 efb178d chore(scripts): update nolints.txt (#16793) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-10-04 05:52:18 3f6d1de feat(overview.yaml): add divergence theorem (#16781) ESTIMATED CHANGES Modified docs/overview.yaml 2022-10-04 05:52:17 8230606 feat(ring_theory/roots_of_unity): add geom_sum_eq_zero (#16755) We add `geom_sum_eq_zero`: the geometric sum of a primitive root of unity is `0`. From flt-regular ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.geom_sum_eq_zero + theorem is_primitive_root.ne_one + theorem is_primitive_root.pow_sub_one_eq 2022-10-04 05:52:16 522ace4 feat(order/antisymmetrization): (<) is well-founded for a preorder iff well-founded on its antisymmetrization (#16741) + Show that the antisymmetrization of a well-founded preorder is a well-founded partial order. Useful for reducing well-foundedness of preorders to partial orders. + fix reference to renamed lemma `well_founded.prod_game_add` in docstring. ESTIMATED CHANGES Modified src/order/antisymmetrization.lean + theorem acc_antisymmetrization_iff + theorem antisymmetrization_fibration + theorem well_founded_antisymmetrization_iff Modified src/order/game_add.lean 2022-10-04 05:52:15 561202d refactor(data/list/count): review API, add lemmas (#16736) * add `list.countp_join`, `list.countp_map`, `list.countp_mono_left`, `list.countp_congr`, and `list.count_join`; * add `@[simp]` attrs to `list.countp_eq_zero`, `list.countp_eq_length`, `list.count_eq_zero`, and `list.count_eq_length`; * golf the proofs of `list.count_bind`, `list.count_map_of_injective`, and `list.count_le_count_map`. ESTIMATED CHANGES Modified src/data/list/count.lean +/- theorem list.count_eq_length +/- theorem list.count_eq_zero + theorem list.count_join + theorem list.countp_congr +/- theorem list.countp_eq_length +/- theorem list.countp_eq_zero +/- theorem list.countp_false +/- theorem list.countp_filter + theorem list.countp_join + theorem list.countp_map + theorem list.countp_mono_left +/- theorem list.countp_true 2022-10-04 05:52:14 b5ce4aa feat(analysis/inner_product_space/pi_L2): extend an indexed orthonormal set to an orthonormal basis (#16478) Given a finite-dimensional inner product space `E`, a fintype `ι` whose cardinality is the dimension of `E`, and a function `v : ι → E` whose restriction to some set `s` in `ι` is orthonormal, modify `v` to give an orthonormal basis for `E` indexed by `ι` which agrees on `s` with `v`. We already have this lemma for sets (`orthonormal.exists_orthonormal_basis_extension`); this is just some messing round to get the indexed version. Also rename `orthonormal.coe_range` to `orthonormal.to_subtype_range`, matching the naming convention for `linear_independent.to_subtype_range`. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean - theorem orthonormal.coe_range + theorem orthonormal.to_subtype_range + theorem orthonormal_subtype_range Modified src/analysis/inner_product_space/pi_L2.lean + theorem orthonormal.exists_orthonormal_basis_extension_of_card_eq 2022-10-04 03:15:12 41a7254 feat(algebra/free_monoid): action of the `free_monoid` (#16746) ESTIMATED CHANGES Modified src/algebra/free_monoid.lean + theorem free_monoid.map_id + def free_monoid.mk_mul_action + theorem free_monoid.of_smul 2022-10-04 00:58:18 f3dd4ac feat(group_theory/sylow): Injectivity of `sylow.subtype` (#16717) `sylow.subtype` is injective if both Sylow subgroups are contained in the subgroup that you are restricting to. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.subtype_injective 2022-10-04 00:58:17 a1b96f8 feat(group_theory/index): Index of finite intersection (#16393) This PR proves that the index of a finite intersection is at most the product of the indices. ESTIMATED CHANGES Modified src/data/finite/card.lean + theorem finite.card_eq_zero_of_embedding + theorem finite.card_eq_zero_of_injective + theorem finite.card_eq_zero_of_surjective + theorem finite.card_le_of_embedding' + theorem finite.card_le_of_injective' + theorem finite.card_le_of_surjective' Modified src/group_theory/index.lean + theorem subgroup.index_infi_le + theorem subgroup.index_infi_ne_zero + theorem subgroup.relindex_infi_le + theorem subgroup.relindex_infi_ne_zero Modified src/set_theory/cardinal/finite.lean + theorem nat.finite_of_card_ne_zero 2022-10-03 21:49:24 ec0b114 feat(measure_theory/group/prod.lean): use measure_preserving predicate (#16668) * Also use `quasi_measure_preserving` more in various files. In particular, `ae_[strongly_]measurable.comp_measurable'` is now `.comp_quasi_measure_preserving`. * Remove lemmas that are direct consequences of `[quasi_]measure_preserving` properties. * This simplifies various proofs. ESTIMATED CHANGES Modified src/analysis/convolution.lean Modified src/measure_theory/constructions/prod.lean + theorem measure_theory.measure.measure_preserving_swap - theorem measure_theory.measure.prod_fst_absolutely_continuous - theorem measure_theory.measure.prod_snd_absolutely_continuous + theorem measure_theory.measure.quasi_measure_preserving_fst + theorem measure_theory.measure.quasi_measure_preserving_snd Modified src/measure_theory/function/strongly_measurable.lean - theorem measure_theory.ae_strongly_measurable.comp_measurable' + theorem measure_theory.ae_strongly_measurable.comp_quasi_measure_preserving Modified src/measure_theory/group/measure.lean + theorem measure_theory.measure_preserving_div_right Modified src/measure_theory/group/prod.lean - theorem measure_theory.map_div_left_absolutely_continuous - theorem measure_theory.map_inv_absolutely_continuous - theorem measure_theory.map_mul_right_absolutely_continuous - theorem measure_theory.map_prod_inv_mul_eq - theorem measure_theory.map_prod_inv_mul_eq_swap - theorem measure_theory.map_prod_mul_eq - theorem measure_theory.map_prod_mul_eq_swap - theorem measure_theory.map_prod_mul_inv_eq + theorem measure_theory.measure_preserving_mul_prod_inv + theorem measure_theory.measure_preserving_prod_inv_mul + theorem measure_theory.measure_preserving_prod_inv_mul_swap + theorem measure_theory.measure_preserving_prod_mul + theorem measure_theory.measure_preserving_prod_mul_swap +/- theorem measure_theory.quasi_measure_preserving_mul_right Modified src/measure_theory/measure/ae_measurable.lean - theorem ae_measurable.comp_measurable' + theorem ae_measurable.comp_quasi_measure_preserving Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.quasi_measure_preserving.ae_eq_comp 2022-10-03 21:49:23 075b3f7 feat(linear_algebra/matrix): Add matrix properties for sesquilinear forms (#15906) The main goal of this PR is to move `linear_algebra/matrix/bilinear_form` to the curried bilinear map form. Since this file as quite few dependencies we copy it to a new file `linear_algebra/matrix/sesquilinear_form` and then move all the dependencies. The structure is taken literally from `linear_algebra/matrix/bilinear_form` with generalizations and easier proofs where possible. The new lemmas are named exactly as the old ones with the following changes: - the namespace changed from `bilin_form` to `linear_map` - `bilin` is changed to `linear_map₂`. In case there is the necessity for separate bilinear and semi-bilinear lemmas we use `linear_map₂` and `linear_mapₛₗ₂` - If `bilin` is not in the name of a lemma, `matrix` is changed to `matrix₂` to avoid nameclashes with lemmas for linear maps `M →ₛₗ[ρ₁₂] N` Moreover, the following changes were necessary: `linear_algebra/bilinear_map`: - Weakened some typeclass assumptions - Added bilinear version of `sum_repr_mul_repr_mul` and moved sesquilinear version to `sum_repr_mul_repr_mulₛₗ` `linear_algebra/matrix/bilinear_form`: - Moved `basis.equiv_fun_symm_std_basis` to `linear_algebra/std_basis` - `adjoint_pair` section: Removed a few definitions (they are now in `linear_algebra/matrix/sesquilinear_form`) and added a prime to the names of lemmas that have the same name as the version in `linear_algebra/matrix/sesquilinear_form` `linear_algebra/sesquilinear_form`: - Added a few missing lemmas about left-separating bilinear forms (note that `separating_left` was previously known as `nondegenerate`) `linear_algebra/std_basis`: - Lemma `std_basis_apply'` for calculating the application of `i' : ι` to `(std_basis R (λ (_x : ι), R) i)` `algebra/hom/ring/`: - Lemmas for calculating a ring homomorphism applied to `ite 0 1` and `ite 1 0` The last two additions are needed to get a reasonable proof for `matrix.to_linear_map₂'_aux_std_basis`. ESTIMATED CHANGES Modified src/algebra/hom/ring.lean + theorem ring_hom.map_ite_one_zero + theorem ring_hom.map_ite_zero_one Modified src/algebra/lie/skew_adjoint.lean Modified src/linear_algebra/bilinear_map.lean + theorem linear_map.compl₁₂_id_id + theorem linear_map.compl₂_id +/- theorem linear_map.sum_repr_mul_repr_mul + theorem linear_map.sum_repr_mul_repr_mulₛₗ Modified src/linear_algebra/finsupp_vector_space.lean + theorem basis.equiv_fun_symm_std_basis + theorem finset.sum_single_ite Modified src/linear_algebra/matrix/bilinear_form.lean - theorem basis.equiv_fun_symm_std_basis - def matrix.is_adjoint_pair + theorem matrix.is_adjoint_pair_equiv' - theorem matrix.is_adjoint_pair_equiv - def matrix.is_self_adjoint - def matrix.is_skew_adjoint + theorem mem_pair_self_adjoint_matrices_submodule' - theorem mem_pair_self_adjoint_matrices_submodule + theorem mem_self_adjoint_matrices_submodule' - theorem mem_self_adjoint_matrices_submodule + theorem mem_skew_adjoint_matrices_submodule' - theorem mem_skew_adjoint_matrices_submodule + def pair_self_adjoint_matrices_submodule' - def pair_self_adjoint_matrices_submodule + def self_adjoint_matrices_submodule' - def self_adjoint_matrices_submodule + def skew_adjoint_matrices_submodule' - def skew_adjoint_matrices_submodule Added src/linear_algebra/matrix/sesquilinear_form.lean + theorem is_adjoint_pair_to_linear_map₂' + theorem is_adjoint_pair_to_linear_map₂ + theorem linear_map.mul_to_matrix' + theorem linear_map.mul_to_matrix₂'_mul + theorem linear_map.mul_to_matrix₂ + theorem linear_map.mul_to_matrix₂_mul + theorem linear_map.nondegenerate_to_matrix_iff + theorem linear_map.nondegenerate_to_matrix₂'_iff + theorem linear_map.separating_left.to_matrix₂' + theorem linear_map.separating_left.to_matrix₂ + theorem linear_map.separating_left_iff_det_ne_zero + theorem linear_map.separating_left_of_det_ne_zero + theorem linear_map.separating_left_to_linear_map₂'_iff_det_ne_zero + theorem linear_map.separating_left_to_linear_map₂'_of_det_ne_zero' + theorem linear_map.to_linear_map₂'_aux_to_matrix₂_aux + theorem linear_map.to_matrix'_to_linear_map₂' + theorem linear_map.to_matrix'_to_linear_mapₛₗ₂' + def linear_map.to_matrix₂' + theorem linear_map.to_matrix₂'_apply + theorem linear_map.to_matrix₂'_comp + theorem linear_map.to_matrix₂'_compl₁₂ + theorem linear_map.to_matrix₂'_compl₂ + theorem linear_map.to_matrix₂'_mul + theorem linear_map.to_matrix₂_apply + def linear_map.to_matrix₂_aux + theorem linear_map.to_matrix₂_aux_apply + theorem linear_map.to_matrix₂_aux_eq + theorem linear_map.to_matrix₂_basis_fun + theorem linear_map.to_matrix₂_comp + theorem linear_map.to_matrix₂_compl₁₂ + theorem linear_map.to_matrix₂_compl₂ + theorem linear_map.to_matrix₂_mul + theorem linear_map.to_matrix₂_mul_basis_to_matrix + theorem linear_map.to_matrix₂_symm + theorem linear_map.to_matrix₂_to_linear_map₂ + def linear_map.to_matrixₛₗ₂' + theorem linear_map.to_matrixₛₗ₂'_apply + theorem linear_map.to_matrixₛₗ₂'_symm + def matrix.is_adjoint_pair + theorem matrix.is_adjoint_pair_equiv + def matrix.is_self_adjoint + def matrix.is_skew_adjoint + theorem matrix.nondegenerate.to_linear_map₂' + theorem matrix.nondegenerate.to_linear_map₂ + theorem matrix.separating_left_to_linear_map₂'_iff + theorem matrix.separating_left_to_linear_map₂'_iff_separating_left_to_linear_map₂ + theorem matrix.separating_left_to_linear_map₂_iff + def matrix.to_linear_map₂' + theorem matrix.to_linear_map₂'_apply' + theorem matrix.to_linear_map₂'_apply + def matrix.to_linear_map₂'_aux + theorem matrix.to_linear_map₂'_aux_std_basis + theorem matrix.to_linear_map₂'_comp + theorem matrix.to_linear_map₂'_std_basis + theorem matrix.to_linear_map₂'_to_matrix' + theorem matrix.to_linear_map₂_apply + theorem matrix.to_linear_map₂_basis_fun + theorem matrix.to_linear_map₂_compl₁₂ + theorem matrix.to_linear_map₂_symm + theorem matrix.to_linear_map₂_to_matrix₂ + def matrix.to_linear_mapₛₗ₂' + theorem matrix.to_linear_mapₛₗ₂'_apply + theorem matrix.to_linear_mapₛₗ₂'_aux_eq + theorem matrix.to_linear_mapₛₗ₂'_std_basis + theorem matrix.to_linear_mapₛₗ₂'_symm + theorem matrix.to_linear_mapₛₗ₂'_to_matrix' + theorem matrix.to_matrix₂_aux_to_linear_map₂'_aux + theorem mem_pair_self_adjoint_matrices_submodule + theorem mem_self_adjoint_matrices_submodule + theorem mem_skew_adjoint_matrices_submodule + def pair_self_adjoint_matrices_submodule + def self_adjoint_matrices_submodule + def skew_adjoint_matrices_submodule Modified src/linear_algebra/sesquilinear_form.lean + theorem linear_map.not_separating_left_zero + theorem linear_map.separating_left.congr + theorem linear_map.separating_left.ne_zero + theorem linear_map.separating_left_congr_iff Modified src/linear_algebra/std_basis.lean + theorem linear_map.std_basis_apply' 2022-10-03 17:40:56 b40ce7d feat(measure_theory/integral/average): average of constant functions (#16776) Also make the API more coherent, by renaming `average_def'` to `average_eq` to match `set_average_eq`. And rename `lintegral_to_real_le_lintegral_nnnorm` to `lintegral_of_real_le_lintegral_nnnorm`. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean Modified src/analysis/normed/group/basic.lean + theorem nnnorm_sub_le Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable_inv_smul_measure Modified src/measure_theory/integral/average.lean + theorem measure_theory.average_const - theorem measure_theory.average_def' - theorem measure_theory.average_def + theorem measure_theory.average_eq' + theorem measure_theory.average_eq + theorem measure_theory.set_average_const + theorem measure_theory.set_average_eq' Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_of_real_le_lintegral_nnnorm - theorem measure_theory.lintegral_to_real_le_lintegral_nnnorm 2022-10-03 17:40:55 ce4a8b8 feat(topology/algebra/group): quotient of a second countable group (#16738) Quotient of a second countable group is second countable ESTIMATED CHANGES Modified src/topology/algebra/const_mul_action.lean + theorem has_continuous_const_smul.second_countable_topology Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/bases.lean + theorem topological_space.is_topological_basis.quotient + theorem topological_space.is_topological_basis.quotient_map + theorem topological_space.quotient.second_countable_topology + theorem topological_space.quotient_map.second_countable_topology 2022-10-03 17:40:54 7802ba7 refactor(data/set/basic): review API of `set.nontrivial` (#16737) * make `z` an explicit argument in `set.nontrivial.exists_ne`; * rename `set.nontrivial.iff_exists_lt` to `set.nontrivial_iff_exists_lt`; * protect lemmas `set.nontrivial.nonempty` and `set.nontrivial.ne_empty`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.nontrivial.exists_ne - theorem set.nontrivial.iff_exists_lt - theorem set.nontrivial.ne_empty - theorem set.nontrivial.nonempty + theorem set.nontrivial_iff_exists_lt 2022-10-03 17:40:53 6d5dda1 feat(geometry/euclidean/basic): angles and betweenness (#16734) Add some basic lemmas about the relation between (unoriented) angles and betweenness of points. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.angle_eq_pi_iff_sbtw + theorem euclidean_geometry.angle_eq_zero_iff_eq_and_ne_or_sbtw + theorem euclidean_geometry.angle_eq_zero_iff_ne_and_wbtw + theorem sbtw.angle₁₂₃_eq_pi + theorem sbtw.angle₁₃₂_eq_zero + theorem sbtw.angle₂₁₃_eq_zero + theorem sbtw.angle₂₃₁_eq_zero + theorem sbtw.angle₃₁₂_eq_zero + theorem sbtw.angle₃₂₁_eq_pi + theorem wbtw.angle₁₃₂_eq_zero_of_ne + theorem wbtw.angle₂₁₃_eq_zero_of_ne + theorem wbtw.angle₂₃₁_eq_zero_of_ne + theorem wbtw.angle₃₁₂_eq_zero_of_ne 2022-10-03 17:40:52 b0b0d5e feat(tactic/positivity): Extensions for `nat` constructions (#16728) Introduce the following `positivity` extensions: * `positivity_succ` * `positivity_factorial` * `positivity_asc_factorial` ESTIMATED CHANGES Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-10-03 17:40:51 5ca6e9d feat(logic/relation): characterization of the accessible predicate in terms of `well_founded_on` (#16720) + Show that `acc r a` (read: `a` is accessible under the relation `r`) if and only if `r` is well-founded on the subset of elements below `a` (transitively) under `r`, including (`refl_trans_gen`) or excluding (`trans_gen`) `a`. Stated as a `list.tfae`. + Move `relation.fibration` (used by the proof) to *logic/relation* to avoid importing *logic/hydra*. Add lemma `acc_trans_gen_iff` used in the proof. ESTIMATED CHANGES Modified src/logic/hydra.lean - theorem acc.of_downward_closed - theorem acc.of_fibration - def relation.fibration Modified src/logic/relation.lean + theorem acc.of_downward_closed + theorem acc.of_fibration +/- theorem acc.trans_gen + theorem acc_trans_gen_iff + def relation.fibration +/- theorem well_founded.trans_gen Modified src/order/well_founded_set.lean + theorem set.well_founded_on.acc_iff_well_founded_on 2022-10-03 17:40:49 486cb2f feat(ring_theory/graded_algebra/homogeneous_localization): generalise homogeneous localization to any submonoid (#16653) homogeneous localization is generalised to work on any `submonoid` and introduced `homogneous_localization.prime` and `homogeneous_localization.away` ESTIMATED CHANGES Modified src/algebraic_geometry/projective_spectrum/structure_sheaf.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean + def homogeneous_localization.at_prime + def homogeneous_localization.away +/- theorem homogeneous_localization.denom_mem + theorem homogeneous_localization.denom_mem_deg - theorem homogeneous_localization.denom_not_mem +/- theorem homogeneous_localization.is_unit_iff_is_unit_val - theorem homogeneous_localization.num_mem + theorem homogeneous_localization.num_mem_deg 2022-10-03 17:40:48 5cf34f8 feat(topology/algebra/continuous_monoid_hom): Continuity of composition (#16319) This PR adds some API regarding continuity of compositions of `continuous_monoid_hom`s. ESTIMATED CHANGES Modified src/topology/algebra/continuous_monoid_hom.lean + theorem continuous_monoid_hom.closed_embedding_to_continuous_map + def continuous_monoid_hom.comp_left + def continuous_monoid_hom.comp_right + theorem continuous_monoid_hom.continuous_comp + theorem continuous_monoid_hom.continuous_comp_left + theorem continuous_monoid_hom.continuous_comp_right + theorem continuous_monoid_hom.continuous_of_continuous_uncurry + theorem continuous_monoid_hom.embedding_to_continuous_map +/- theorem continuous_monoid_hom.ext + theorem continuous_monoid_hom.inducing_to_continuous_map - theorem continuous_monoid_hom.is_closed_embedding - theorem continuous_monoid_hom.is_embedding - theorem continuous_monoid_hom.is_inducing + theorem pontryagin_dual.map_apply + theorem pontryagin_dual.map_comp + theorem pontryagin_dual.map_mul + theorem pontryagin_dual.map_one 2022-10-03 17:40:47 77615d0 chore(data/seq/*): `cases_on` → `rec_on` (#15843) We rename recursion principles on `Sort` from `cases_on` to `rec_on`. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/data/seq/computation.lean - def computation.cases_on + def computation.rec_on Modified src/data/seq/parallel.lean Modified src/data/seq/seq.lean - def seq.cases_on + def seq.rec_on Modified src/data/seq/wseq.lean - def wseq.cases_on + def wseq.rec_on 2022-10-03 17:40:46 9aec1a2 feat(ring_theory/dedekind_domain/selmer_group): add Selmer groups of Dedekind domains (#15405) ESTIMATED CHANGES Added src/ring_theory/dedekind_domain/selmer_group.lean + def is_dedekind_domain.height_one_spectrum.valuation_of_ne_zero + theorem is_dedekind_domain.height_one_spectrum.valuation_of_ne_zero_eq + def is_dedekind_domain.height_one_spectrum.valuation_of_ne_zero_mod + def is_dedekind_domain.height_one_spectrum.valuation_of_ne_zero_to_fun + theorem is_dedekind_domain.height_one_spectrum.valuation_of_ne_zero_to_fun_eq + theorem is_dedekind_domain.height_one_spectrum.valuation_of_unit_eq + theorem is_dedekind_domain.height_one_spectrum.valuation_of_unit_mod_eq + def is_dedekind_domain.selmer_group.from_unit + theorem is_dedekind_domain.selmer_group.from_unit_ker + def is_dedekind_domain.selmer_group.from_unit_lift + theorem is_dedekind_domain.selmer_group.from_unit_lift_injective + theorem is_dedekind_domain.selmer_group.monotone + def is_dedekind_domain.selmer_group.valuation + theorem is_dedekind_domain.selmer_group.valuation_ker_eq + def is_dedekind_domain.selmer_group 2022-10-03 17:40:45 a347076 feat(set_theory/game/birthday): birthday of addition equals natural addition of birthdays (#14549) ESTIMATED CHANGES Modified src/order/lattice.lean + theorem max_max_max_comm + theorem min_min_min_comm Modified src/set_theory/game/birthday.lean + theorem pgame.birthday_add + theorem pgame.birthday_add_nat + theorem pgame.birthday_add_one +/- theorem pgame.birthday_add_zero +/- theorem pgame.birthday_eq_zero + theorem pgame.birthday_nat_add + theorem pgame.birthday_nat_cast + theorem pgame.birthday_one_add +/- theorem pgame.birthday_zero_add +/- theorem pgame.neg_birthday_le Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.lsub_sum + theorem ordinal.one_add_nat_cast + theorem ordinal.sup_sum 2022-10-03 17:40:43 ee02a30 feat(set_theory/surreal/basic): relabellings preserve being numeric (#14406) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.relabelling.numeric_congr + theorem pgame.relabelling.numeric_imp 2022-10-03 14:28:38 eb97389 feat(linear_algebra/affine_space/affine_subspace): spans of two points (#16770) Add lemmas about the `vector_span` and `affine_span` of two points (analogous to `span_singleton` lemmas for `submodule`). ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_map.line_map_mem_affine_span_pair + theorem affine_map.line_map_rev_mem_affine_span_pair + theorem left_mem_affine_span_pair + theorem mem_vector_span_pair + theorem mem_vector_span_pair_rev + theorem right_mem_affine_span_pair + theorem smul_vsub_mem_vector_span_pair + theorem smul_vsub_rev_mem_vector_span_pair + theorem smul_vsub_rev_vadd_mem_affine_span_pair + theorem smul_vsub_vadd_mem_affine_span_pair + theorem vadd_left_mem_affine_span_pair + theorem vadd_right_mem_affine_span_pair + theorem vector_span_pair + theorem vector_span_pair_rev + theorem vsub_mem_vector_span_pair + theorem vsub_rev_mem_vector_span_pair 2022-10-03 14:28:37 f1f9d66 feat(analysis/convex/between): `wbtw` and distinct end points (#16768) Add lemmas that `wbtw`, together with the middle point being distinct from one of the end points, implies the two end points are distinct, and use one of those lemmas in the proof of `sbtw.left_ne_right`. ESTIMATED CHANGES Modified src/analysis/convex/between.lean + theorem wbtw.left_ne_right_of_ne_left + theorem wbtw.left_ne_right_of_ne_right 2022-10-03 14:28:35 580e52c feat(analysis/convex/between): betweenness and `same_ray` (#16767) Add some lemmas about the relation between `wbtw` and `same_ray`. ESTIMATED CHANGES Modified src/analysis/convex/between.lean + theorem wbtw.same_ray_vsub + theorem wbtw.same_ray_vsub_left + theorem wbtw.same_ray_vsub_right + theorem wbtw_iff_same_ray_vsub 2022-10-03 14:28:34 64b6d04 feat(linear_algebra/affine_space/affine_subspace): `vector_span_insert_eq_vector_span` (#16765) Add a variant of `affine_span_insert_eq_affine_span` for the `vector_span`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem vector_span_insert_eq_vector_span 2022-10-03 14:28:33 81120ae refactor(number_theory): reorganize number field results into new subfolder (#16764) - Create a new dir `number_field` in `number_theory` - Move the current file `number_field.lean` to `number_theory/number_field/basic.lean` - Move the results about embeddings from this file to a new file `number_theory/number_field/embeddings.lean` - Move the file `number_theory/class_number/number_field.lean` to `number_theory/number_field/class_number.lean` ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean Added src/number_theory/number_field/basic.lean + theorem int.not_is_field + theorem number_field.is_integral_of_mem_ring_of_integers + theorem number_field.mem_ring_of_integers + theorem number_field.ring_of_integers.is_integral_coe + theorem number_field.ring_of_integers.not_is_field + def number_field.ring_of_integers + def number_field.ring_of_integers_algebra Renamed src/number_theory/class_number/number_field.lean to src/number_theory/number_field/class_number.lean Renamed src/number_theory/number_field.lean to src/number_theory/number_field/embeddings.lean - theorem int.not_is_field - theorem number_field.is_integral_of_mem_ring_of_integers - theorem number_field.mem_ring_of_integers - theorem number_field.ring_of_integers.is_integral_coe - theorem number_field.ring_of_integers.not_is_field - def number_field.ring_of_integers - def number_field.ring_of_integers_algebra Modified src/ring_theory/discriminant.lean 2022-10-03 14:28:32 8a1b982 feat(data/{fin,}set/pointwise): add `{fin,}set.inv_insert` (#16748) ESTIMATED CHANGES Modified src/data/finset/pointwise.lean + theorem finset.inv_insert Modified src/data/set/pointwise.lean + theorem set.inv_insert 2022-10-03 14:28:31 c7aa2df refactor(data/fin/basic): merge `fin.rev` and `order_iso.fin_equiv` (#16745) Also add some missing lemmas. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.coe_rev +/- theorem fin.is_lt + theorem fin.last_sub +/- theorem fin.pos_iff_nonempty +/- def fin.rev + theorem fin.rev_bijective + theorem fin.rev_inj + theorem fin.rev_injective + theorem fin.rev_involutive + theorem fin.rev_le_rev + theorem fin.rev_lt_rev + def fin.rev_order_iso + theorem fin.rev_order_iso_symm_apply + theorem fin.rev_rev + theorem fin.rev_surjective + theorem fin.rev_symm +/- theorem fin.sub_one_lt_iff - def order_iso.fin_equiv - theorem order_iso.fin_equiv_apply - theorem order_iso.fin_equiv_symm_apply 2022-10-03 08:59:09 9dbe038 fix({ tactic/fin_cases + test/interval_cases }): add `focus1` and a test (#16752) Fix [this bug](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/interval_cases.20bug), reported by @hrmacbeth. The current solution is to move the `focus1` to `fin_cases_at`, instead of relying on `fin_cases` and `interval_cases` to call `focus1`. Having `interval_cases` wrapped in `focus1` is the reason for this PR. An older (compiling) solution was to just use `focus1` inside `interval_cases`, but calling it in `fin_cases_at` seems more stable. The link above is to a Zulip discussion with more details. ESTIMATED CHANGES Modified src/tactic/fin_cases.lean Modified test/interval_cases.lean 2022-10-03 08:59:08 2e433a5 feat(category_theory/groupoid/free): free groupoid on a quiver (#16666) Define the free groupoid on a quiver and prove its universal property. ESTIMATED CHANGES Modified src/category_theory/functor/basic.lean + theorem category_theory.functor.to_prefunctor_comp + theorem category_theory.functor.to_prefunctor_map + theorem category_theory.functor.to_prefunctor_obj Modified src/category_theory/groupoid.lean Added src/category_theory/groupoid/free_groupoid.lean + theorem category_theory.groupoid.free.congr_comp_reverse + theorem category_theory.groupoid.free.congr_reverse + theorem category_theory.groupoid.free.congr_reverse_comp + def category_theory.groupoid.free.free_groupoid + def category_theory.groupoid.free.lift + theorem category_theory.groupoid.free.lift_spec + theorem category_theory.groupoid.free.lift_unique_spec + def category_theory.groupoid.free.of + theorem category_theory.groupoid.free.of_eq + def category_theory.groupoid.free.quiver.hom.to_neg + def category_theory.groupoid.free.quiver.hom.to_neg_path + def category_theory.groupoid.free.quiver.hom.to_pos + def category_theory.groupoid.free.quiver.hom.to_pos_path + def category_theory.groupoid.free.quot_inv + inductive category_theory.groupoid.free.red_step Modified src/category_theory/path_category.lean + def category_theory.paths.lift + theorem category_theory.paths.lift_cons + theorem category_theory.paths.lift_nil + theorem category_theory.paths.lift_spec + theorem category_theory.paths.lift_spec_unique + theorem category_theory.paths.lift_to_path Modified src/category_theory/quotient.lean + theorem category_theory.quotient.lift_spec + theorem category_theory.quotient.lift_spec_unique Modified src/combinatorics/quiver/basic.lean + theorem prefunctor.comp_assoc + theorem prefunctor.ext Modified src/combinatorics/quiver/connected_component.lean +/- def quiver.path.reverse + theorem quiver.path.reverse_comp + theorem quiver.path.reverse_reverse + theorem quiver.path.reverse_to_path +/- def quiver.reverse + theorem quiver.reverse_reverse + def quiver.symmetrify.lift + theorem quiver.symmetrify.lift_reverse + theorem quiver.symmetrify.lift_spec + theorem quiver.symmetrify.lift_spec_unique + def quiver.symmetrify.of Modified src/combinatorics/quiver/path.lean 2022-10-03 08:59:07 35bc69b feat(group_theory/subgroup): add several trivial lemmas (#16633) * add `subgroup.top_to_submonoid` and `subgroup.bot_to_submonoid`; * add `free_monoid.mrange_lift`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.bot_to_submonoid + theorem subgroup.top_to_submonoid Modified src/group_theory/submonoid/membership.lean + theorem free_monoid.mrange_lift 2022-10-03 08:59:05 3cf2547 feat(data/fintype/basic): Existence of a bijection with specified behaviour on a subset (#16479) Given a function `f : α → β` which is injective on a set `s` in `α`, and a set `t` in `β` which has the same finite cardinality as the type `α` and which contains the image `f '' s`, extend/modify to a bijection between `α` and `t` which agrees on `s` with the original `f`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.exists_equiv_extend_of_card_eq + theorem set.maps_to.exists_equiv_extend_of_card_eq Modified src/data/set/function.lean + theorem set.inj_on.ne_iff 2022-10-03 06:36:40 d246177 chore(analysis/locally_convex/with_seminorms): fix namespaces for dot-notation (#16771) Some lemmas where in the wrong namespaces. ESTIMATED CHANGES Modified src/analysis/locally_convex/weak_dual.lean Modified src/analysis/locally_convex/with_seminorms.lean - theorem seminorm_family.to_locally_convex_space - theorem seminorm_family.with_seminorms_eq + theorem with_seminorms.to_locally_convex_space + theorem with_seminorms.with_seminorms_eq Modified src/analysis/schwartz_space.lean 2022-10-03 06:36:39 ebe6bda feat(analysis/normed/group/add_circle): define the additive circle (#16201) ESTIMATED CHANGES Modified src/algebra/order/archimedean.lean - theorem floor_ring.archimedean Modified src/algebra/order/to_interval_mod.lean + theorem to_Ico_mod_eq_fract_mul + theorem to_Ico_mod_mem_Ico' Added src/analysis/normed/group/add_circle.lean + theorem add_circle.norm_coe_mul + theorem add_circle.norm_eq + theorem add_circle.norm_eq_of_zero + theorem unit_add_circle.norm_eq Modified src/analysis/normed/group/quotient.lean + theorem add_subgroup.quotient_norm_eq Modified src/analysis/special_functions/trigonometric/angle.lean +/- def real.angle Modified src/group_theory/subgroup/basic.lean + theorem add_subgroup.int_cast_mem_zmultiples_one + theorem add_subgroup.int_cast_mul_mem_zmultiples + theorem subgroup.zpow_mem_zpowers Added src/topology/instances/add_circle.lean + theorem add_circle.coe_equiv_Ico_mk_apply + theorem add_circle.coe_image_Icc_eq + theorem add_circle.compact_space + theorem add_circle.continuous_equiv_Ico_symm + def add_circle.equiv_Ico + def add_circle.equiv_add_circle + theorem add_circle.equiv_add_circle_apply_mk + theorem add_circle.equiv_add_circle_symm_apply_mk + def add_circle + def unit_add_circle 2022-10-03 05:43:49 08bb56f feat(algebra/module/projective): weaken assumptions in lifting_property (#16750) These `add_comm_group` structures are not necessary, nor is the universe restriction on `M`. ESTIMATED CHANGES Modified src/algebra/module/projective.lean +/- theorem module.projective_def 2022-10-03 04:09:01 8818d82 chore(scripts): update nolints.txt (#16773) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2022-10-03 02:06:51 3665254 feat(analysis/convex/cone/basic): add `has_add`, `add_zero_class`, and `add_comm_semigroup` instances to `convex_cone` (#16213) Adds `has_add`, `add_zero_class`, and `add_comm_semigroup` instance to `convex_cone`s. ESTIMATED CHANGES Modified src/analysis/convex/cone/basic.lean + theorem convex_cone.mem_add 2022-10-03 01:13:30 a4e0a65 feat(linear_algebra/matrix/hermitian): complex_hermitian_real_diagonal (#16380) The diagonal elements of a complex Hermitian matrix are real. ESTIMATED CHANGES Modified src/linear_algebra/matrix/hermitian.lean + theorem matrix.is_hermitian.coe_re_apply_self + theorem matrix.is_hermitian.coe_re_diag 2022-10-02 21:39:12 b2d70ba feat(order/liminf_limsup): add limsup/liminf variants of some Limsup/Liminf lemmas (#16759) Also make sure that similar lemmas follow each other in the order Limsup, Liminf, limsup, liminf. ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.infi_le_liminf + theorem filter.le_liminf_of_le + theorem filter.le_limsup_of_le + theorem filter.liminf_le_of_le + theorem filter.limsup_le_of_le + theorem filter.limsup_le_supr 2022-10-02 20:28:26 2ce380c docs(analysis/locally_convex/bounded): fix hyperlink (#16753) ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean 2022-10-02 20:28:25 51696a6 chore(data/analysis/*): Fix lint and docs (#16751) Write the missing docstrings and module docs for `data.analysis.filter` and `data.analysis.topology`. Satisfy the `has_nonempty_instance` and `unused_arguments` linters. ESTIMATED CHANGES Modified src/data/analysis/filter.lean Modified src/data/analysis/topology.lean +/- def compact.realizer +/- theorem ctop.realizer.nhds_F +/- theorem ctop.realizer.nhds_σ 2022-10-02 19:22:08 2bb1bae chore(analysis/locally_convex/[continuous_of_]bounded): import `analysis.normed_space.is_R_or_C` later (#16758) We don't want to import `analysis/normed_space/is_R_or_C` in `analysis/locally_convex/bounded` because it will create a cycle when defining the strong topology on `continuous_linear_map`, because we will have to (transitively) import `analysis/locally_convex/bounded` in `analysis/normed_space/operator_norm`. So I moved the material of #16550 in a new file `analysis/locally_convex/continuous_of_bounded` ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean - def linear_map.clm_of_exists_bounded_image - theorem linear_map.clm_of_exists_bounded_image_apply - theorem linear_map.clm_of_exists_bounded_image_coe - theorem linear_map.continuous_at_zero_of_locally_bounded - theorem linear_map.continuous_of_locally_bounded Added src/analysis/locally_convex/continuous_of_bounded.lean + def linear_map.clm_of_exists_bounded_image + theorem linear_map.clm_of_exists_bounded_image_apply + theorem linear_map.clm_of_exists_bounded_image_coe + theorem linear_map.continuous_at_zero_of_locally_bounded + theorem linear_map.continuous_of_locally_bounded 2022-10-02 16:23:54 c4878d1 feat(data/fintype): complement of univ (#16623) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.compl_eq_empty_iff + theorem finset.compl_eq_univ_iff + theorem finset.compl_univ + theorem finset.top_eq_univ 2022-10-02 15:17:50 b2381e5 feat(analysis/locally_convex/with_seminorms): boundedness of images (#16674) This PR adds two lemmas that are very useful in proving that semilinear maps are locally bounded (and hence continuous). We also add some documentation for these lemmas and remove documentation for the ad-hoc lemmas. ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean - theorem bornology.is_vonN_bounded_iff_seminorm_bounded + theorem with_seminorms.image_is_vonN_bounded_iff_finset_seminorm_bounded + theorem with_seminorms.image_is_vonN_bounded_iff_seminorm_bounded + theorem with_seminorms.is_vonN_bounded_iff_seminorm_bounded 2022-10-02 12:39:50 73d05c4 feat(analysis/locally_convex): first countable topologies from countable families of seminorms (#16595) This PR proves that if the topology is induced by a countable family of seminorms, then it is first countable. ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean + theorem with_seminorms.first_countable 2022-10-02 06:53:32 df6a0b2 feat(analysis/convex/body): define bodies and implement module instance (#16297) Defines the type `convex_body V` and endows it with a module structure over the nonnegative reals. This commit also introduces `set_like` and `inhabited` instances. ESTIMATED CHANGES Added src/analysis/convex/body.lean + theorem convex_body.coe_add + theorem convex_body.coe_mk + theorem convex_body.coe_smul' + theorem convex_body.coe_smul + theorem convex_body.coe_zero + theorem convex_body.convex + theorem convex_body.is_compact + theorem convex_body.nonempty + structure convex_body Modified src/topology/algebra/const_mul_action.lean + theorem is_compact.smul 2022-10-02 05:55:10 d79c367 feat(algebraic_topology): extra degeneracy of augmented simplicial objects (#16411) This PR introduces the notion of extra degeneracy of augmented simplicial objects. In homotopy theory, this is a condition that is used to show that the connected components of simplicial sets are contractible. This notion is formalized for augmented simplicial objects in any category and it is shown that the standard `n`-simplex has an extra degeneracy. ESTIMATED CHANGES Added src/algebraic_topology/extra_degeneracy.lean + def sSet.augmented.standard_simplex.extra_degeneracy + def sSet.augmented.standard_simplex.shift + def sSet.augmented.standard_simplex.shift_fun + theorem sSet.augmented.standard_simplex.shift_fun_0 + theorem sSet.augmented.standard_simplex.shift_fun_succ + def simplicial_object.augmented.extra_degeneracy.map + structure simplicial_object.augmented.extra_degeneracy Modified src/algebraic_topology/simplicial_object.lean + theorem category_theory.simplicial_object.augmented.w₀ Modified src/algebraic_topology/simplicial_set.lean + def sSet.augmented 2022-10-02 04:41:35 f063221 feat(topology/sheaves/skyscraper): skyscraper presheaf as a functor (#16685) ESTIMATED CHANGES Modified src/topology/sheaves/skyscraper.lean + def skyscraper_presheaf_functor.map' + theorem skyscraper_presheaf_functor.map'_comp + theorem skyscraper_presheaf_functor.map'_id + def skyscraper_presheaf_functor + def skyscraper_sheaf_functor 2022-10-01 23:57:29 852b23b chore(topology,analysis): make the sup metric and norm computable (#16570) To make this work, we replace `max` with `sup` in the implementation (the two are defeq, but the former has stronger typeclass arguments), and add some missing shortcut instances for `ennreal` which are needed for the emetric structure. As a result, we can can now perform useless "computation"s like: ```lean #eval ∥((3 : ℤ), (4 : ℤ))∥ -- real.of_cauchy (sorry /- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ... -/) ``` (this isn't totally useless; it's enough to inform the reader that they're not looking at a euclidean norm, which is a common source of confusion) ESTIMATED CHANGES Modified src/analysis/normed/field/basic.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed_space/star/basic.lean Modified src/data/real/ennreal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean - def emetric.diam 2022-10-01 21:30:39 77db6f7 feat(analysis/locally_convex/with_seminorms): split `continuous_from_bounded` to get an extra continuity criterion (#16710) This split should also help with proving that `continuous_from_bounded` is an `iff` under some assumptions, because the only remaining fact to prove is that a continuous seminorm is necessarily greater than a constant times the supremum of a finite number of generating seminorms. ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean + theorem seminorm.continuous_iff_continuous_comp + theorem seminorm.continuous_of_continuous_comp + theorem with_seminorms.continuous_seminorm 2022-10-01 18:32:37 d638c7f feat(group_theory/subgroup/basic): If `H` is commutative, then `H ≤ H.centralizer` (#16718) If `H` is commutative, then `H ≤ H.centralizer`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.le_centralizer + theorem subgroup.le_centralizer_iff_is_commutative 2022-10-01 18:32:35 567220c refactor(analysis/inner_product_space/pi_L2): Delete `orthonormal_basis_index` (#16698) `std_orthonormal_basis` was indexed by `orthonormal_basis_index` while it can simply be indexed by `fin (finrank 𝕜 E)`. As a result, `fin_std_orthonormal_basis` becomes a trivial reindexation of `std_orthonormal_basis` so we delete it. ESTIMATED CHANGES Modified src/analysis/inner_product_space/orientation.lean Modified src/analysis/inner_product_space/pi_L2.lean - theorem coe_std_orthonormal_basis - def fin_std_orthonormal_basis - def orthonormal_basis_index +/- def std_orthonormal_basis 2022-10-01 18:32:34 ba197e4 feat(order/filter/*,topology/noetherian_space): add lemmas about `cofinite` (#16498) * A filter is disjoint with `cofinite` iff there exists a finite set that belongs to this filter. * An ultrafilter is either less than or equal to `cofinite`, or is equal to `pure a` for some `a`. * Any type with cofinite topology is a Noetherian (hence, is a compact) space. ESTIMATED CHANGES Modified src/order/filter/cofinite.lean + theorem filter.disjoint_cofinite_left + theorem filter.disjoint_cofinite_right +/- theorem filter.le_cofinite_iff_compl_singleton_mem +/- theorem filter.le_cofinite_iff_eventually_ne Modified src/order/filter/ultrafilter.lean + theorem ultrafilter.disjoint_iff_not_le +/- theorem ultrafilter.eq_pure_of_finite +/- theorem ultrafilter.eq_pure_of_finite_mem + theorem ultrafilter.inf_ne_bot_iff + theorem ultrafilter.le_cofinite_or_eq_pure + theorem ultrafilter.le_sup_iff +/- theorem ultrafilter.union_mem_iff Modified src/topology/noetherian_space.lean 2022-10-01 15:41:04 7f034c5 feat(topology/algebra/module/character_space): kernels of terms of the `character_space` (#16722) This shows that the kernel of a element `φ` of `character_space 𝕜 A` is a maximal ideal. Moreover, `φ` and `ψ` are equal if their kernels coincide. In addition, we provide a missing `ext` lemma, and protect a lemma named `is_closed` in this namespace. ESTIMATED CHANGES Modified src/analysis/normed_space/algebra.lean Modified src/topology/algebra/module/character_space.lean + theorem weak_dual.character_space.ext + theorem weak_dual.character_space.ext_ker - theorem weak_dual.character_space.is_closed 2022-10-01 15:41:03 c2d85ce feat(data/list/basic): `λ a, [a]` is injective (#16716) Also add a `@[simp]` lemma `list.cons_eq_cons` ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.cons_eq_cons + theorem list.singleton_inj + theorem list.singleton_injective 2022-10-01 14:05:59 21347ef feat(analysis/convolution): prove that parametric convolution tends to a specific value (#16704) * Prove `convolution_tendsto_right` which shows that the convolution tends to a value when all three relevant arguments vary (in the previous version only the first argument varied). * This lemma can be used to simplify a proof in the sphere eversion project ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean + theorem cont_diff_bump_of_inner.tendsto_support_normed_small_sets Modified src/analysis/convolution.lean - theorem cont_diff_bump_of_inner.convolution_tendsto_right' + theorem cont_diff_bump_of_inner.convolution_tendsto_right_of_continuous +/- theorem convolution_tendsto_right +/- theorem dist_convolution_le' +/- theorem dist_convolution_le Modified src/topology/metric_space/basic.lean + theorem metric.eventually_nhds_prod_iff + theorem metric.eventually_prod_nhds_iff 2022-10-01 14:05:58 180f4f2 feat(analysis/locally_convex): locally bounded implies continuous (#16550) We prove that locally bounded linear maps are continuous provided the domain is first countable. In the literature this is usually stated with pseudometrizable, but first countable is equivalent. ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean + theorem linear_map.continuous_at_zero_of_locally_bounded + theorem linear_map.continuous_of_locally_bounded 2022-10-01 14:05:57 bf78318 feat(number_theory/number_field): add mem_roots_of_unity_of_norm_eq_one (#15143) We prove that an algebraic integer whose conjugates are all of norm 1 is a root of unity. For that, we prove first that the set of algebraic integers (in a fixed number field) with bounded conjugates is finite. The counterpart of the result, that is roots of unity are of norm 1, is #16426 From flt-regular ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem minpoly.degree_le + theorem minpoly.nat_degree_le Modified src/number_theory/number_field.lean + theorem number_field.embeddings.coeff_bdd_of_norm_le + theorem number_field.embeddings.finite_of_norm_le + theorem number_field.embeddings.pow_eq_one_of_norm_eq_one +/- theorem number_field.embeddings.rat_range_eq_roots 2022-10-01 11:17:09 7295c81 feat(topology/sheaves/skyscraper): skyscraper presheaf is a sheaf (#16649) - [x] depends on: #16694 ESTIMATED CHANGES Modified src/topology/sheaves/skyscraper.lean + theorem skyscraper_presheaf_eq_pushforward + theorem skyscraper_presheaf_is_sheaf + def skyscraper_sheaf 2022-10-01 11:17:08 8150c5e feat(category_theory/morphism_property): miscellaneous basic results (#16444) This PR establishes miscellaneous results about `morphism_property` in category theory: how `stable_under_composition`, etc, behave with passing to the opposite category, the definition of the inverse image of a `morphism_property` by a functor, the definition of isomorphisms/monomorphisms/epimorphisms as morphism properties. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/comm_sq.lean + theorem category_theory.is_pushout.of_horiz_is_iso + theorem category_theory.is_pushout.of_vert_is_iso Modified src/category_theory/morphism_property.lean + theorem category_theory.morphism_property.epimorphisms.iff + theorem category_theory.morphism_property.epimorphisms.infer_property + def category_theory.morphism_property.epimorphisms + def category_theory.morphism_property.inverse_image + theorem category_theory.morphism_property.isomorphisms.iff + theorem category_theory.morphism_property.isomorphisms.infer_property + def category_theory.morphism_property.isomorphisms + theorem category_theory.morphism_property.monomorphisms.iff + theorem category_theory.morphism_property.monomorphisms.infer_property + def category_theory.morphism_property.monomorphisms + def category_theory.morphism_property.op + theorem category_theory.morphism_property.op_unop + theorem category_theory.morphism_property.respects_iso.epimorphisms + theorem category_theory.morphism_property.respects_iso.inverse_image + theorem category_theory.morphism_property.respects_iso.isomorphisms + theorem category_theory.morphism_property.respects_iso.monomorphisms + theorem category_theory.morphism_property.respects_iso.op + theorem category_theory.morphism_property.respects_iso.unop + theorem category_theory.morphism_property.stable_under_base_change.op + theorem category_theory.morphism_property.stable_under_base_change.unop + theorem category_theory.morphism_property.stable_under_cobase_change.inl + theorem category_theory.morphism_property.stable_under_cobase_change.inr + theorem category_theory.morphism_property.stable_under_cobase_change.mk + theorem category_theory.morphism_property.stable_under_cobase_change.op + theorem category_theory.morphism_property.stable_under_cobase_change.respects_iso + theorem category_theory.morphism_property.stable_under_cobase_change.unop + def category_theory.morphism_property.stable_under_cobase_change + theorem category_theory.morphism_property.stable_under_composition.epimorphisms + theorem category_theory.morphism_property.stable_under_composition.inverse_image + theorem category_theory.morphism_property.stable_under_composition.isomorphisms + theorem category_theory.morphism_property.stable_under_composition.monomorphisms + theorem category_theory.morphism_property.stable_under_composition.op + theorem category_theory.morphism_property.stable_under_composition.unop + theorem category_theory.morphism_property.stable_under_inverse.op + theorem category_theory.morphism_property.stable_under_inverse.unop + def category_theory.morphism_property.unop + theorem category_theory.morphism_property.unop_op 2022-10-01 11:17:07 9af2034 feat(algebraic_topology/dold_kan): decomposition of Q (#16357) In this PR, a decomposition of the endomorphisms `Q q` acting on `X _[n+1]` is obtained. In the case of abelian categories, it shows that the image of `Q q` is contained in a certain sum of images of degeneracy operators. Critical tools are also introduced in order to show (in a future PR) that the normalized Moore complex functor reflects isomorphisms. ESTIMATED CHANGES Modified src/algebraic_topology/Moore_complex.lean Added src/algebraic_topology/dold_kan/decomposition.lean + theorem algebraic_topology.dold_kan.decomposition_Q + def algebraic_topology.dold_kan.morph_components.id + theorem algebraic_topology.dold_kan.morph_components.id_φ + def algebraic_topology.dold_kan.morph_components.post_comp + theorem algebraic_topology.dold_kan.morph_components.post_comp_φ + def algebraic_topology.dold_kan.morph_components.pre_comp + theorem algebraic_topology.dold_kan.morph_components.pre_comp_φ + def algebraic_topology.dold_kan.morph_components.φ + structure algebraic_topology.dold_kan.morph_components Modified src/algebraic_topology/simplicial_object.lean + theorem category_theory.cosimplicial_object.δ_naturality + theorem category_theory.cosimplicial_object.σ_naturality + theorem category_theory.simplicial_object.δ_naturality + theorem category_theory.simplicial_object.σ_naturality Modified src/data/fin/basic.lean + def fin.rev + theorem fin.rev_eq 2022-10-01 11:17:06 563aed3 feat(algebraic_topology/simplex_category): strong epi mono factorisations (#16276) In this PR, it is shown that there exists (unique) strong epi mono factorisations in `simplex_category`. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean +/- theorem simplex_category.eq_id_of_is_iso + theorem simplex_category.factor_thru_image_eq + theorem simplex_category.image_eq + theorem simplex_category.image_ι_eq + theorem simplex_category.skeletal_functor.coe_map Modified src/category_theory/functor/epi_mono.lean + def category_theory.functor.split_epi_category_imp_of_is_equivalence Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.functor.has_strong_epi_mono_factorisations_imp_of_is_equivalence Modified src/order/category/NonemptyFinLinOrd.lean + theorem NonemptyFinLinOrd.epi_iff_surjective + theorem NonemptyFinLinOrd.mono_iff_injective 2022-10-01 08:30:23 8f78eb9 feat(*): generalize to and add distrib_smul instances (#16132) This PR builds on #16123 by adding `distrib_smul` (and `smul_zero_class`) instances for: * `finsupp` * `add_monoid_algebra` * `polynomial` * submodule quotients * scalar multiplication by `ℚ` It also generalizes some results by weakening `distrib_mul_action` to `distrib_smul`. The choice of instances and generalizations is based on which are necessary to solve instance diamonds in `splitting_field`, so I probably missed a lot of additional changes. Since I'm not so interested in generalizing everything at the moment, I'd rather leave missing instances to follow-up PRs. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_smul +/- theorem finsupp.smul_apply +/- theorem finsupp.sum_smul_index' +/- theorem is_smul_regular.finsupp Modified src/data/polynomial/basic.lean +/- theorem polynomial.of_finsupp_smul +/- theorem polynomial.to_finsupp_smul Modified src/data/rat/cast.lean Modified src/field_theory/ratfunc.lean Modified src/group_theory/group_action/big_operators.lean Modified src/group_theory/group_action/defs.lean + def distrib_smul.comp_fun + def distrib_smul.to_add_monoid_hom + def function.surjective.distrib_smul_left + def function.surjective.smul_zero_class_left +/- theorem smul_add +/- theorem smul_zero + def smul_zero_class.comp_fun + def smul_zero_class.to_zero_hom Modified src/linear_algebra/basic.lean Modified src/linear_algebra/quotient.lean Modified src/representation_theory/maschke.lean Modified test/instance_diamonds.lean 2022-10-01 07:15:36 25c8333 chore(number_theory/bernoulli_polynomials): removed unnecessary cast_succ from sum_bernoulli (#16731) ESTIMATED CHANGES Modified src/number_theory/bernoulli_polynomials.lean 2022-10-01 02:05:35 2a543b0 perf(algebraic_topology/simplicial_object): Speedup `simplicial_cosimplicial_augmented_equiv` (#16729) Use `equivalence.mk` rather than `equivalence.mk'`. Restrict the `simps` to `functor` and `inverse`. This roughly speeds everything up by a factor of 2. ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_object.lean 2022-10-01 02:05:34 5fefdfa feat(group_theory/schreier): The size of the commutator subgroup is bounded in terms of the index of the center and the number of commutators (#16679) This PR proves that the size of the commutator subgroup is bounded in terms of the index of the center and the number of commutators. The proof uses Schreier's lemma and the transfer homomorphism. I included lots of comments since the proof is rather technical. But please let me know if I went overboard. Ultimately, this is building up to a bound on the size of the commutator subgroup just in terms of the number of commutators. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean + theorem rank_commutator_le_card Modified src/group_theory/schreier.lean + theorem subgroup.card_commutator_dvd_index_center_pow 2022-09-30 23:37:22 7aebb34 refactor(ring_theory/polynomial/tower): review APIs (#16678) Split from #16412. All of the following lemmas move from namespace `is_scalar_tower` to namespace `polynomial`. Rename `aeval_apply` to `aeval_map_algebra_map` and swap the sides of the equality, remove `aeval_map` which is just the same as `aeval_map_algebra_map`. Rename `algebra_map_aeval` to `aeval_algebra_map_apply` and swap the sides of the equality, rename original `aeval_algebra_map_apply` to `aeval_algebra_map_apply_eq_algebra_map_eval`. Make the new lemma a `simp` lemma and remove `simp` from the original one. Rename `aeval_eq_zero_of_aeval_algebra_map_eq_zero` to `aeval_algebra_map_eq_zero_iff_of_injective` and make it an iff lemma. Replace `aeval_eq_zero_of_aeval_algebra_map_eq_zero_field` by `aeval_algebra_map_eq_zero_iff`, it has weaker assumptions and is also an iff lemma. - [x] depends on: #16673 ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/chebyshev.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/polynomial/algebra_map.lean - theorem polynomial.aeval_algebra_map_apply + theorem polynomial.aeval_algebra_map_apply_eq_algebra_map_eval - theorem polynomial.aeval_map Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/minpoly.lean Modified src/field_theory/normal.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/polynomial/tower.lean - theorem is_scalar_tower.aeval_apply - theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero - theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero_field - theorem is_scalar_tower.algebra_map_aeval + theorem polynomial.aeval_algebra_map_apply + theorem polynomial.aeval_algebra_map_eq_zero_iff + theorem polynomial.aeval_algebra_map_eq_zero_iff_of_injective + theorem polynomial.aeval_map_algebra_map +/- theorem subalgebra.aeval_coe 2022-09-30 23:37:21 a753abc feat(linear_algebra/{basis, determinant, orientation}): determinant of `adjust_to_orientation` of a basis (#16476) Performing the operation `adjust_to_orientation` on a basis either preserves the determinant with respect to that basis, or negates it. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.coord_units_smul + theorem basis.repr_units_smul Modified src/linear_algebra/determinant.lean +/- theorem basis.det_units_smul + theorem basis.det_units_smul_self Modified src/linear_algebra/orientation.lean + theorem basis.abs_det_adjust_to_orientation + theorem basis.det_adjust_to_orientation 2022-09-30 23:37:20 c1a28cb feat(topology/semicontinuous): characterization by closed sets of semicontinuous maps to a linear order (#16442) ESTIMATED CHANGES Modified src/topology/semicontinuous.lean + theorem lower_semicontinuous.is_closed_preimage + theorem lower_semicontinuous_iff_is_closed_preimage - theorem lower_semicontinuous_iff_is_open + theorem lower_semicontinuous_iff_is_open_preimage + theorem upper_semicontinuous.is_closed_preimage + theorem upper_semicontinuous_iff_is_closed_preimage - theorem upper_semicontinuous_iff_is_open + theorem upper_semicontinuous_iff_is_open_preimage 2022-09-30 23:37:19 e4ee4e3 feat(category_theory/limits): colimits from finite colimits and filtered colimits (#16373) We will use this in the future to show that if C has finite colimits, then Ind(C) is cocomplete. ESTIMATED CHANGES Modified src/category_theory/functor/flat.lean + theorem category_theory.cofiltered_of_has_finite_limits Added src/category_theory/limits/constructions/filtered.lean + def category_theory.limits.coproducts_from_finite_filtered.lift_to_finset + def category_theory.limits.coproducts_from_finite_filtered.lift_to_finset_colimit_cocone + theorem category_theory.limits.has_colimits_of_finite_and_filtered + theorem category_theory.limits.has_coproducts_of_finite_and_filtered + theorem category_theory.limits.has_limits_of_finite_and_cofiltered + theorem category_theory.limits.has_products_of_finite_and_cofiltered Added src/category_theory/limits/filtered.lean Modified src/category_theory/limits/opposites.lean + theorem category_theory.limits.has_cofiltered_limits_of_has_filtered_colimits_op + theorem category_theory.limits.has_colimit_of_has_limit_op + theorem category_theory.limits.has_colimits_of_has_limits_op + theorem category_theory.limits.has_colimits_of_shape_of_has_limits_of_shape_op - theorem category_theory.limits.has_colimits_of_shape_op_of_has_limits_of_shape + theorem category_theory.limits.has_coproducts_of_opposite + theorem category_theory.limits.has_coproducts_of_shape_of_opposite + theorem category_theory.limits.has_filtered_colimits_of_has_cofiltered_limits_op + theorem category_theory.limits.has_finite_coproducts_of_opposite + theorem category_theory.limits.has_finite_products_of_opposite + theorem category_theory.limits.has_limit_of_has_colimit_op + theorem category_theory.limits.has_limits_of_has_colimits_op + theorem category_theory.limits.has_limits_of_shape_of_has_colimits_of_shape_op + theorem category_theory.limits.has_products_of_opposite + theorem category_theory.limits.has_products_of_shape_of_opposite 2022-09-30 23:37:18 aa701d8 feat(algebra/module/localized_module): universal property of localized module (#15559) as $R$ module. `is_localized_module` also characterises localized module upto isomorphism as $R\_S$ module, this can be found in #16084 ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem module.End_algebra_map_is_unit_inv_apply_eq_iff' + theorem module.End_algebra_map_is_unit_inv_apply_eq_iff + theorem module.End_is_unit_apply_inv_apply_of_is_unit + theorem module.End_is_unit_iff + theorem module.End_is_unit_inv_apply_apply_of_is_unit Modified src/algebra/module/localized_module.lean + theorem is_localized_module.from_localized_module'_add + theorem is_localized_module.from_localized_module'_mk + theorem is_localized_module.from_localized_module'_smul + theorem is_localized_module.from_localized_module.bij + theorem is_localized_module.from_localized_module.inj + theorem is_localized_module.from_localized_module.surj + theorem is_localized_module.from_localized_module_mk + theorem is_localized_module.is_universal + theorem is_localized_module.iso_apply_mk + theorem is_localized_module.iso_symm_apply' + theorem is_localized_module.iso_symm_apply_aux + theorem is_localized_module.iso_symm_comp + theorem is_localized_module.lift_comp + theorem is_localized_module.lift_unique + theorem is_localized_module.ring_hom_ext + theorem localized_module.lift'_add + theorem localized_module.lift'_mk + theorem localized_module.lift'_smul + theorem localized_module.lift_comp + theorem localized_module.lift_mk + theorem localized_module.lift_unique 2022-09-30 21:29:00 866664b feat(data/polynomial/ring_division): add bUnion_roots_finite (#16670) Add three lemmas about polynomials needed for #15143 From flt-regular ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.ext_iff_degree_le + theorem polynomial.ext_iff_nat_degree_le Modified src/data/polynomial/ring_division.lean + theorem polynomial.bUnion_roots_finite Modified src/topology/algebra/polynomial.lean + theorem polynomial.coeff_bdd_of_roots_le + theorem polynomial.eq_one_of_roots_le 2022-09-30 21:28:58 2fb109f feat(analysis/inner_product/orientation, geometry/euclidean/oriented_angle): use bundled orthonormal bases (#16475) Bundled orthonormal bases (as opposed to bases with a mixin predicate `orthonormal`) were defined in #12060, and some of the use cases were switched over in #12253. This PR completes the job, switching to bundled orthonormal bases in `inner_product/orientation` and `euclidean/oriented_angle` as well as in one remaining construction (the standard ` ℝ`-orthonormal basis of `ℂ`) in `inner_product/pi_L2`. Formalized as part of the Sphere Eversion project. The part that I will be using in future PRs is the bundled version of the construction `orthonormal_basis.adjust_to_orientation` in `inner_product/orientation`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/orientation.lean - theorem orthonormal.orthonormal_adjust_to_orientation + def orthonormal_basis.adjust_to_orientation + theorem orthonormal_basis.adjust_to_orientation_apply_eq_or_eq_neg + theorem orthonormal_basis.orientation_adjust_to_orientation + theorem orthonormal_basis.orthonormal_adjust_to_orientation + theorem orthonormal_basis.to_basis_adjust_to_orientation Modified src/analysis/inner_product_space/pi_L2.lean - theorem basis.map_isometry_euclidean_of_orthonormal + theorem complex.coe_orthonormal_basis_one_I - def complex.isometry_euclidean - theorem complex.isometry_euclidean_apply_one - theorem complex.isometry_euclidean_apply_zero - theorem complex.isometry_euclidean_proj_eq_self - theorem complex.isometry_euclidean_symm_apply +/- def complex.isometry_of_orthonormal +/- theorem complex.map_isometry_of_orthonormal + def complex.orthonormal_basis_one_I + theorem complex.orthonormal_basis_one_I_repr_apply + theorem complex.orthonormal_basis_one_I_repr_symm_apply + theorem complex.to_basis_orthonormal_basis_one_I Modified src/geometry/euclidean/oriented_angle.lean +/- theorem orientation.oangle_eq_basis_oangle +/- theorem orientation.rotation_eq_basis_rotation - theorem orthonormal.angle_eq_abs_oangle_to_real - def orthonormal.conj_lie - theorem orthonormal.conj_lie_symm - theorem orthonormal.continuous_at_oangle - theorem orthonormal.cos_oangle_eq_cos_angle - theorem orthonormal.cos_oangle_eq_inner_div_norm_mul_norm - theorem orthonormal.det_conj_lie - theorem orthonormal.det_rotation - theorem orthonormal.eq_iff_norm_eq_and_oangle_eq_zero - theorem orthonormal.eq_iff_norm_eq_of_oangle_eq_zero - theorem orthonormal.eq_iff_oangle_eq_zero_of_norm_eq - theorem orthonormal.eq_rotation_self_iff - theorem orthonormal.eq_rotation_self_iff_angle_eq_zero - theorem orthonormal.eq_zero_or_angle_eq_zero_or_pi_of_sign_oangle_eq_zero - theorem orthonormal.exists_linear_isometry_equiv_eq - theorem orthonormal.exists_linear_isometry_equiv_eq_of_det_neg - theorem orthonormal.exists_linear_isometry_equiv_eq_of_det_pos - theorem orthonormal.exists_linear_isometry_equiv_map_eq_of_orientation_eq - theorem orthonormal.exists_linear_isometry_equiv_map_eq_of_orientation_eq_neg - theorem orthonormal.inner_eq_norm_mul_norm_mul_cos_oangle - theorem orthonormal.linear_equiv_det_conj_lie - theorem orthonormal.linear_equiv_det_rotation - def orthonormal.oangle - theorem orthonormal.oangle_add - theorem orthonormal.oangle_add_cyc3 - theorem orthonormal.oangle_add_cyc3_neg_left - theorem orthonormal.oangle_add_cyc3_neg_right - theorem orthonormal.oangle_add_oangle_rev - theorem orthonormal.oangle_add_oangle_rev_neg_left - theorem orthonormal.oangle_add_oangle_rev_neg_right - theorem orthonormal.oangle_add_swap - theorem orthonormal.oangle_conj_lie - theorem orthonormal.oangle_eq_angle_or_eq_neg_angle - theorem orthonormal.oangle_eq_iff_angle_eq_of_sign_eq - theorem orthonormal.oangle_eq_iff_eq_norm_div_norm_smul_rotation_of_ne_zero - theorem orthonormal.oangle_eq_iff_eq_norm_div_norm_smul_rotation_or_eq_zero - theorem orthonormal.oangle_eq_iff_eq_pos_smul_rotation_of_ne_zero - theorem orthonormal.oangle_eq_iff_eq_pos_smul_rotation_or_eq_zero - theorem orthonormal.oangle_eq_neg_of_orientation_eq_neg - theorem orthonormal.oangle_eq_of_angle_eq_of_sign_eq - theorem orthonormal.oangle_eq_of_orientation_eq - theorem orthonormal.oangle_eq_pi_iff_angle_eq_pi - theorem orthonormal.oangle_eq_pi_iff_oangle_rev_eq_pi - theorem orthonormal.oangle_eq_pi_iff_same_ray_neg - theorem orthonormal.oangle_eq_pi_sub_two_zsmul_oangle_sub_of_norm_eq - theorem orthonormal.oangle_eq_two_zsmul_oangle_sub_of_norm_eq - theorem orthonormal.oangle_eq_two_zsmul_oangle_sub_of_norm_eq_real - theorem orthonormal.oangle_eq_zero_iff_angle_eq_zero - theorem orthonormal.oangle_eq_zero_iff_oangle_rev_eq_zero - theorem orthonormal.oangle_eq_zero_iff_same_ray - theorem orthonormal.oangle_eq_zero_or_eq_pi_iff_not_linear_independent - theorem orthonormal.oangle_eq_zero_or_eq_pi_iff_right_eq_smul - theorem orthonormal.oangle_map - theorem orthonormal.oangle_ne_zero_and_ne_pi_iff_linear_independent - theorem orthonormal.oangle_neg_left - theorem orthonormal.oangle_neg_left_eq_neg_right - theorem orthonormal.oangle_neg_neg - theorem orthonormal.oangle_neg_right - theorem orthonormal.oangle_neg_self_left - theorem orthonormal.oangle_neg_self_right - theorem orthonormal.oangle_rev - theorem orthonormal.oangle_rotation - theorem orthonormal.oangle_rotation_left - theorem orthonormal.oangle_rotation_oangle_left - theorem orthonormal.oangle_rotation_oangle_right - theorem orthonormal.oangle_rotation_right - theorem orthonormal.oangle_rotation_self_left - theorem orthonormal.oangle_rotation_self_right - theorem orthonormal.oangle_self - theorem orthonormal.oangle_sign_add_smul_left - theorem orthonormal.oangle_sign_neg_left - theorem orthonormal.oangle_sign_neg_right - theorem orthonormal.oangle_sign_smul_add_right - theorem orthonormal.oangle_sign_smul_add_smul_left - theorem orthonormal.oangle_sign_smul_add_smul_right - theorem orthonormal.oangle_sign_smul_add_smul_smul_add_smul - theorem orthonormal.oangle_sign_smul_left - theorem orthonormal.oangle_sign_smul_right - theorem orthonormal.oangle_sign_sub_smul_left - theorem orthonormal.oangle_sign_sub_smul_right - theorem orthonormal.oangle_smul_add_right_eq_zero_or_eq_pi_iff - theorem orthonormal.oangle_smul_left_of_neg - theorem orthonormal.oangle_smul_left_of_pos - theorem orthonormal.oangle_smul_left_self_of_nonneg - theorem orthonormal.oangle_smul_right_of_neg - theorem orthonormal.oangle_smul_right_of_pos - theorem orthonormal.oangle_smul_right_self_of_nonneg - theorem orthonormal.oangle_smul_smul_self_of_nonneg - theorem orthonormal.oangle_sub_eq_oangle_sub_rev_of_norm_eq - theorem orthonormal.oangle_sub_left - theorem orthonormal.oangle_sub_right - theorem orthonormal.oangle_zero_left - theorem orthonormal.oangle_zero_right - def orthonormal.rotation - theorem orthonormal.rotation_eq_of_orientation_eq - theorem orthonormal.rotation_eq_rotation_neg_of_orientation_eq_neg - theorem orthonormal.rotation_eq_self_iff - theorem orthonormal.rotation_eq_self_iff_angle_eq_zero - theorem orthonormal.rotation_oangle_eq_iff_norm_eq - theorem orthonormal.rotation_pi - theorem orthonormal.rotation_symm - theorem orthonormal.rotation_trans - theorem orthonormal.rotation_zero - theorem orthonormal.two_zsmul_oangle_neg_left - theorem orthonormal.two_zsmul_oangle_neg_right - theorem orthonormal.two_zsmul_oangle_neg_self_left - theorem orthonormal.two_zsmul_oangle_neg_self_right - theorem orthonormal.two_zsmul_oangle_smul_left_of_ne_zero - theorem orthonormal.two_zsmul_oangle_smul_left_self - theorem orthonormal.two_zsmul_oangle_smul_right_of_ne_zero - theorem orthonormal.two_zsmul_oangle_smul_right_self - theorem orthonormal.two_zsmul_oangle_smul_smul_self - theorem orthonormal.two_zsmul_oangle_sub_eq_two_zsmul_oangle_sub_of_norm_eq + theorem orthonormal_basis.angle_eq_abs_oangle_to_real + def orthonormal_basis.conj_lie + theorem orthonormal_basis.conj_lie_symm + theorem orthonormal_basis.continuous_at_oangle + theorem orthonormal_basis.cos_oangle_eq_cos_angle + theorem orthonormal_basis.cos_oangle_eq_inner_div_norm_mul_norm + theorem orthonormal_basis.det_conj_lie + theorem orthonormal_basis.det_rotation + theorem orthonormal_basis.eq_iff_norm_eq_and_oangle_eq_zero + theorem orthonormal_basis.eq_iff_norm_eq_of_oangle_eq_zero + theorem orthonormal_basis.eq_iff_oangle_eq_zero_of_norm_eq + theorem orthonormal_basis.eq_rotation_self_iff + theorem orthonormal_basis.eq_rotation_self_iff_angle_eq_zero + theorem orthonormal_basis.eq_zero_or_angle_eq_zero_or_pi_of_sign_oangle_eq_zero + theorem orthonormal_basis.exists_linear_isometry_equiv_eq + theorem orthonormal_basis.exists_linear_isometry_equiv_eq_of_det_neg + theorem orthonormal_basis.exists_linear_isometry_equiv_eq_of_det_pos + theorem orthonormal_basis.exists_linear_isometry_equiv_map_eq_of_orientation_eq + theorem orthonormal_basis.exists_linear_isometry_equiv_map_eq_of_orientation_eq_neg + theorem orthonormal_basis.inner_eq_norm_mul_norm_mul_cos_oangle + theorem orthonormal_basis.linear_equiv_det_conj_lie + theorem orthonormal_basis.linear_equiv_det_rotation + def orthonormal_basis.oangle + theorem orthonormal_basis.oangle_add + theorem orthonormal_basis.oangle_add_cyc3 + theorem orthonormal_basis.oangle_add_cyc3_neg_left + theorem orthonormal_basis.oangle_add_cyc3_neg_right + theorem orthonormal_basis.oangle_add_oangle_rev + theorem orthonormal_basis.oangle_add_oangle_rev_neg_left + theorem orthonormal_basis.oangle_add_oangle_rev_neg_right + theorem orthonormal_basis.oangle_add_swap + theorem orthonormal_basis.oangle_conj_lie + theorem orthonormal_basis.oangle_eq_angle_or_eq_neg_angle + theorem orthonormal_basis.oangle_eq_iff_angle_eq_of_sign_eq + theorem orthonormal_basis.oangle_eq_iff_eq_norm_div_norm_smul_rotation_of_ne_zero + theorem orthonormal_basis.oangle_eq_iff_eq_norm_div_norm_smul_rotation_or_eq_zero + theorem orthonormal_basis.oangle_eq_iff_eq_pos_smul_rotation_of_ne_zero + theorem orthonormal_basis.oangle_eq_iff_eq_pos_smul_rotation_or_eq_zero + theorem orthonormal_basis.oangle_eq_neg_of_orientation_eq_neg + theorem orthonormal_basis.oangle_eq_of_angle_eq_of_sign_eq + theorem orthonormal_basis.oangle_eq_of_orientation_eq + theorem orthonormal_basis.oangle_eq_pi_iff_angle_eq_pi + theorem orthonormal_basis.oangle_eq_pi_iff_oangle_rev_eq_pi + theorem orthonormal_basis.oangle_eq_pi_iff_same_ray_neg + theorem orthonormal_basis.oangle_eq_pi_sub_two_zsmul_oangle_sub_of_norm_eq + theorem orthonormal_basis.oangle_eq_two_zsmul_oangle_sub_of_norm_eq + theorem orthonormal_basis.oangle_eq_two_zsmul_oangle_sub_of_norm_eq_real + theorem orthonormal_basis.oangle_eq_zero_iff_angle_eq_zero + theorem orthonormal_basis.oangle_eq_zero_iff_oangle_rev_eq_zero + theorem orthonormal_basis.oangle_eq_zero_iff_same_ray + theorem orthonormal_basis.oangle_eq_zero_or_eq_pi_iff_not_linear_independent + theorem orthonormal_basis.oangle_eq_zero_or_eq_pi_iff_right_eq_smul + theorem orthonormal_basis.oangle_map + theorem orthonormal_basis.oangle_ne_zero_and_ne_pi_iff_linear_independent + theorem orthonormal_basis.oangle_neg_left + theorem orthonormal_basis.oangle_neg_left_eq_neg_right + theorem orthonormal_basis.oangle_neg_neg + theorem orthonormal_basis.oangle_neg_right + theorem orthonormal_basis.oangle_neg_self_left + theorem orthonormal_basis.oangle_neg_self_right + theorem orthonormal_basis.oangle_rev + theorem orthonormal_basis.oangle_rotation + theorem orthonormal_basis.oangle_rotation_left + theorem orthonormal_basis.oangle_rotation_oangle_left + theorem orthonormal_basis.oangle_rotation_oangle_right + theorem orthonormal_basis.oangle_rotation_right + theorem orthonormal_basis.oangle_rotation_self_left + theorem orthonormal_basis.oangle_rotation_self_right + theorem orthonormal_basis.oangle_self + theorem orthonormal_basis.oangle_sign_add_smul_left + theorem orthonormal_basis.oangle_sign_neg_left + theorem orthonormal_basis.oangle_sign_neg_right + theorem orthonormal_basis.oangle_sign_smul_add_right + theorem orthonormal_basis.oangle_sign_smul_add_smul_left + theorem orthonormal_basis.oangle_sign_smul_add_smul_right + theorem orthonormal_basis.oangle_sign_smul_add_smul_smul_add_smul + theorem orthonormal_basis.oangle_sign_smul_left + theorem orthonormal_basis.oangle_sign_smul_right + theorem orthonormal_basis.oangle_sign_sub_smul_left + theorem orthonormal_basis.oangle_sign_sub_smul_right + theorem orthonormal_basis.oangle_smul_add_right_eq_zero_or_eq_pi_iff + theorem orthonormal_basis.oangle_smul_left_of_neg + theorem orthonormal_basis.oangle_smul_left_of_pos + theorem orthonormal_basis.oangle_smul_left_self_of_nonneg + theorem orthonormal_basis.oangle_smul_right_of_neg + theorem orthonormal_basis.oangle_smul_right_of_pos + theorem orthonormal_basis.oangle_smul_right_self_of_nonneg + theorem orthonormal_basis.oangle_smul_smul_self_of_nonneg + theorem orthonormal_basis.oangle_sub_eq_oangle_sub_rev_of_norm_eq + theorem orthonormal_basis.oangle_sub_left + theorem orthonormal_basis.oangle_sub_right + theorem orthonormal_basis.oangle_zero_left + theorem orthonormal_basis.oangle_zero_right + def orthonormal_basis.rotation + theorem orthonormal_basis.rotation_eq_of_orientation_eq + theorem orthonormal_basis.rotation_eq_rotation_neg_of_orientation_eq_neg + theorem orthonormal_basis.rotation_eq_self_iff + theorem orthonormal_basis.rotation_eq_self_iff_angle_eq_zero + theorem orthonormal_basis.rotation_oangle_eq_iff_norm_eq + theorem orthonormal_basis.rotation_pi + theorem orthonormal_basis.rotation_symm + theorem orthonormal_basis.rotation_trans + theorem orthonormal_basis.rotation_zero + theorem orthonormal_basis.two_zsmul_oangle_neg_left + theorem orthonormal_basis.two_zsmul_oangle_neg_right + theorem orthonormal_basis.two_zsmul_oangle_neg_self_left + theorem orthonormal_basis.two_zsmul_oangle_neg_self_right + theorem orthonormal_basis.two_zsmul_oangle_smul_left_of_ne_zero + theorem orthonormal_basis.two_zsmul_oangle_smul_left_self + theorem orthonormal_basis.two_zsmul_oangle_smul_right_of_ne_zero + theorem orthonormal_basis.two_zsmul_oangle_smul_right_self + theorem orthonormal_basis.two_zsmul_oangle_smul_smul_self + theorem orthonormal_basis.two_zsmul_oangle_sub_eq_two_zsmul_oangle_sub_of_norm_eq 2022-09-30 18:24:35 73afba4 refactor(analysis/normed/group/basic): Replace `normed_add_comm_group.core` with group norms (#16238) Delete `seminormed_add_comm_group.core`/`normed_add_comm_group.core` in favor of `add_group_norm`/`group_norm`. The former are unbundled prop versions of the latter, specialized to `∥ ∥`. ESTIMATED CHANGES Modified src/algebra/order/hom/basic.lean + theorem le_map_div_mul_map_div + theorem le_map_mul_map_div Modified src/analysis/complex/basic.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed/group/basic.lean + def add_group_norm.to_normed_add_comm_group + def add_group_seminorm.to_seminormed_add_comm_group - theorem normed_add_comm_group.core.to_seminormed_add_comm_group.core - structure normed_add_comm_group.core - def normed_add_comm_group.of_core - structure seminormed_add_comm_group.core - def seminormed_add_comm_group.of_core Modified src/analysis/normed/group/hom.lean Modified src/analysis/normed_space/continuous_affine_map.lean Modified src/analysis/normed_space/lp_space.lean +/- theorem lp.norm_eq_zero_iff Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.op_norm_zero Modified src/analysis/normed_space/operator_norm.lean Modified src/measure_theory/function/lp_space.lean 2022-09-30 18:24:34 98c61b1 feat(order/hom/heyting): Heyting homomorphisms (#15308) Define the type of Heyting homomorphisms, maps between Heyting algebras that preserve Heyting implication. ESTIMATED CHANGES Modified src/algebra/ring/boolean_ring.lean Modified src/data/fun_like/equiv.lean + theorem equiv_like.apply_inv_apply + theorem equiv_like.inv_apply_apply Modified src/order/heyting/basic.lean Added src/order/heyting/hom.lean + theorem biheyting_hom.cancel_left + theorem biheyting_hom.cancel_right + theorem biheyting_hom.coe_comp + theorem biheyting_hom.coe_id + def biheyting_hom.comp + theorem biheyting_hom.comp_apply + theorem biheyting_hom.comp_assoc + theorem biheyting_hom.comp_id + theorem biheyting_hom.ext + theorem biheyting_hom.id_apply + theorem biheyting_hom.id_comp + theorem biheyting_hom.to_fun_eq_coe + structure biheyting_hom + def bounded_lattice_hom_class.to_biheyting_hom_class + theorem coheyting_hom.cancel_left + theorem coheyting_hom.cancel_right + theorem coheyting_hom.coe_comp + theorem coheyting_hom.coe_id + def coheyting_hom.comp + theorem coheyting_hom.comp_apply + theorem coheyting_hom.comp_assoc + theorem coheyting_hom.comp_id + theorem coheyting_hom.ext + theorem coheyting_hom.id_apply + theorem coheyting_hom.id_comp + theorem coheyting_hom.to_fun_eq_coe + structure coheyting_hom + theorem heyting_hom.cancel_left + theorem heyting_hom.cancel_right + theorem heyting_hom.coe_comp + theorem heyting_hom.coe_id + def heyting_hom.comp + theorem heyting_hom.comp_apply + theorem heyting_hom.comp_assoc + theorem heyting_hom.comp_id + theorem heyting_hom.ext + theorem heyting_hom.id_apply + theorem heyting_hom.id_comp + theorem heyting_hom.to_fun_eq_coe + structure heyting_hom + theorem map_bihimp + theorem map_compl + theorem map_hnot + theorem map_symm_diff Modified src/order/hom/complete_lattice.lean Modified src/order/hom/lattice.lean + theorem map_compl' - theorem map_compl + theorem map_sdiff' - theorem map_sdiff + theorem map_symm_diff' - theorem map_symm_diff 2022-09-30 18:24:32 6e5e3f6 feat(analysis/locally_convex): the topology of a locally convex space is generated by seminorms (#15035) This PR provides the proof that every locally convex space has a family of seminorms that induces the topology. This PR also adds a new simp-lemma `is_R_or_C.real_norm`, which calculates the norm of a real number `r` coerced into a `is_R_or_C` type as the norm of `r`. This made it necessary to change some proofs in a few places. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean +/- theorem complex.norm_real Added src/analysis/locally_convex/abs_convex.lean + theorem abs_convex_open_sets.coe_balanced + theorem abs_convex_open_sets.coe_convex + theorem abs_convex_open_sets.coe_is_open + theorem abs_convex_open_sets.coe_nhds + theorem abs_convex_open_sets.coe_zero_mem + def abs_convex_open_sets + def gauge_seminorm_family + theorem gauge_seminorm_family_ball + theorem nhds_basis_abs_convex + theorem nhds_basis_abs_convex_open + theorem with_gauge_seminorm_family Modified src/analysis/locally_convex/basic.lean + theorem balanced_convex_hull_of_balanced Modified src/analysis/locally_convex/with_seminorms.lean Modified src/analysis/normed_space/is_R_or_C.lean +/- theorem is_R_or_C.norm_coe_norm Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.norm_real - theorem is_R_or_C.norm_sq_of_real Modified src/topology/algebra/module/locally_convex.lean 2022-09-30 13:10:26 be05d53 feat(algebra/free_monoid): add 2 lemmas (#16712) ESTIMATED CHANGES Modified src/algebra/free_monoid.lean + theorem free_monoid.of_mul_eq_cons + theorem free_monoid.prod_eq_join 2022-09-30 13:10:24 cc967da feat(algebra/hom/group): `simp` lemmas for applying generic morphism coercions (#16700) There are a bunch of random specific versions of these lemmas floating around, which can be made generic to apply to all `one_hom_class`/`mul_hom_class`/`monoid_hom_class` instances. Compare existing `ring_hom.coe_coe`. ESTIMATED CHANGES Modified src/algebra/hom/group.lean + theorem monoid_hom.coe_coe + theorem monoid_with_zero_hom.coe_coe + theorem mul_hom.coe_coe + theorem one_hom.coe_coe 2022-09-30 13:10:21 64ad902 refactor(algebra/order/{smul,module}): Turn lemmas around (#16696) Match the `mul` lemmas by having the `⁻¹` on the LHS in `inv_smul_le_iff`, `inv_smul_lt_iff`, etc... Also generalize for free to `ordered_add_comm_monoid`. ESTIMATED CHANGES Modified src/algebra/order/module.lean + theorem inv_smul_le_iff_of_neg + theorem inv_smul_lt_iff_of_neg - theorem lt_smul_iff_of_neg + theorem smul_inv_le_iff_of_neg + theorem smul_inv_lt_iff_of_neg - theorem smul_lt_iff_of_neg Modified src/algebra/order/smul.lean + theorem inv_smul_le_iff + theorem inv_smul_lt_iff + theorem le_inv_smul_iff - theorem le_smul_iff_of_pos + theorem lt_inv_smul_iff - theorem lt_smul_iff_of_pos - theorem smul_le_iff_of_pos - theorem smul_lt_iff_of_pos Modified src/linear_algebra/affine_space/ordered.lean 2022-09-30 13:10:20 a52be2a feat(category_theory/localization): whiskering_left_equivalence and definition of the predicate (#16646) In this PR, an equivalence `localization.construction.whiskering_left_equivalence W D : (W.localization ⥤ D) ≌ W.functors_inverting D` is obtained and the predicate `L.is_localization W` is defined for a functor `L : C ⥤ D`. ESTIMATED CHANGES Modified src/category_theory/localization/construction.lean + theorem category_theory.localization.construction.nat_trans_hcomp_injective + def category_theory.localization.construction.whiskering_left_equivalence.counit_iso + def category_theory.localization.construction.whiskering_left_equivalence.functor + def category_theory.localization.construction.whiskering_left_equivalence.inverse + def category_theory.localization.construction.whiskering_left_equivalence.unit_iso + def category_theory.localization.construction.whiskering_left_equivalence + theorem category_theory.morphism_property.Q_inverts Added src/category_theory/localization/predicate.lean Modified src/category_theory/morphism_property.lean + def category_theory.morphism_property.functors_inverting.mk + def category_theory.morphism_property.functors_inverting + theorem category_theory.morphism_property.is_inverted_by.of_comp 2022-09-30 13:10:19 c804ede feat(category_theory/groupoid): simplify groupoid.inv to category_theory.inv (#16624) Add simp lemma `groupoid.inv_eq_inv` to simplify `groupoid.inv` to `category_theory.inv` (which uses the `is_iso` instance) to gain access to the developed API around `category_theory.inv`. This isn't a defeq though so I can imagine sometimes we may want to `simp [-groupoid.inv_eq_inv]`, but most of the times this simp lemma makes things smoother. ESTIMATED CHANGES Modified src/category_theory/groupoid.lean + theorem category_theory.groupoid.inv_eq_inv + def category_theory.groupoid.inv_equiv 2022-09-30 13:10:18 3df3c61 feat(linear_algebra/quadratic_form/basic): algebraic lemmas about `bilin_form.to_quadratic_form` (#16616) Following the usual pattern, we defined the bundle additive morphism so that we can copy across the salient lemmas about sums. The `polar_to_quadratic_form` lemma in the diff was an existing lemma that has just been moved below the new `semiring` section. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form/basic.lean + theorem bilin_form.to_quadratic_form_add + def bilin_form.to_quadratic_form_add_monoid_hom + theorem bilin_form.to_quadratic_form_list_sum + theorem bilin_form.to_quadratic_form_multiset_sum + theorem bilin_form.to_quadratic_form_neg + theorem bilin_form.to_quadratic_form_smul + theorem bilin_form.to_quadratic_form_sub + theorem bilin_form.to_quadratic_form_sum 2022-09-30 13:10:16 98ed2a2 move(algebra/order/ring_lemmas): Rename file (#16520) Rename `algebra.order.monoid_lemmas_zero_lt` to `algebra.order.ring_lemmas` because `algebra.order.monoid_lemmas_zero_lt` is to `algebra.order.ring` what `algebra.order.monoid_lemmas` is to `algebra.order.monoid`. ESTIMATED CHANGES Modified src/algebra/order/ring.lean Renamed src/algebra/order/monoid_lemmas_zero_lt.lean to src/algebra/order/ring_lemmas.lean 2022-09-30 13:10:15 699c2ca feat(analysis/convex/between): betweenness in affine spaces (#16191) Define the notions of (weak and strict) betweenness for points in affine spaces over an ordered ring, for use in describing geometrical configurations. Until convexity is refactored to support abstract affine combination spaces, this means having a definition `affine_segment` that duplicates `segment` in the affine space case (and is proved to equal `segment` when the affine space is a module considered as an affine space over itself). However, the bulk of results concern betweenness, not `affine_segment`, and so would be just as relevant after such a refactor, even if some of the proofs would change, and indeed most of the things stated about `affine_segment` involve `+ᵥ` and `-ᵥ` and so would still be meaningful results, distinct from those already present for `segment`, after such a refactor (at which point they might apply for whatever typeclass describes an `add_torsor` for a module that is also an abstract affine combination space where the two affine combination structures agree). So I think the actual duplication here is minimal and defining `affine_segment` is a reasonable approach to allow betweenness to be handled in affine spaces now rather than making it depend on a possible future refactor. There are certainly more things that could sensibly be stated about betweenness (e.g. various forms of Pasch's axiom), but I think this is a reasonable starting point. One thing I definitely intend to add in a followup is notions of two points being (weakly or strictly) on the same side or opposite sides of an affine subspace (e.g. a line); I think it will probably be most convenient to define those notions in terms of `same_ray` and then prove appropriate results about how they relate to betweenness for points. ESTIMATED CHANGES Added src/analysis/convex/between.lean + theorem affine_equiv.sbtw_map_iff + theorem affine_equiv.wbtw_map_iff + def affine_segment + theorem affine_segment_comm + theorem affine_segment_const_vadd_image + theorem affine_segment_const_vsub_image + theorem affine_segment_eq_segment + theorem affine_segment_image + theorem affine_segment_vadd_const_image + theorem affine_segment_vsub_const_image + theorem collinear.wbtw_or_wbtw_or_wbtw + theorem function.injective.sbtw_map_iff + theorem function.injective.wbtw_map_iff + theorem left_mem_affine_segment + theorem mem_const_vadd_affine_segment + theorem mem_const_vsub_affine_segment + theorem mem_vadd_const_affine_segment + theorem mem_vsub_const_affine_segment + theorem not_sbtw_self + theorem not_sbtw_self_left + theorem not_sbtw_self_right + theorem right_mem_affine_segment + theorem sbtw.left_ne + theorem sbtw.left_ne_right + theorem sbtw.mem_image_Ioo + theorem sbtw.ne_left + theorem sbtw.ne_right + theorem sbtw.not_rotate + theorem sbtw.not_swap_left + theorem sbtw.not_swap_right + theorem sbtw.right_ne + theorem sbtw.trans_left + theorem sbtw.trans_left_right + theorem sbtw.trans_right + theorem sbtw.trans_right_left + theorem sbtw.wbtw + def sbtw + theorem sbtw_comm + theorem sbtw_const_vadd_iff + theorem sbtw_const_vsub_iff + theorem sbtw_iff_mem_image_Ioo_and_ne + theorem sbtw_vadd_const_iff + theorem sbtw_vsub_const_iff + theorem wbtw.collinear + theorem wbtw.map + theorem wbtw.rotate_iff + theorem wbtw.swap_left_iff + theorem wbtw.swap_right_iff + theorem wbtw.trans_left + theorem wbtw.trans_left_right + theorem wbtw.trans_right + theorem wbtw.trans_right_left + theorem wbtw.trans_sbtw_left + theorem wbtw.trans_sbtw_right + def wbtw + theorem wbtw_comm + theorem wbtw_const_vadd_iff + theorem wbtw_const_vsub_iff + theorem wbtw_or_wbtw_smul_vadd_of_nonneg + theorem wbtw_or_wbtw_smul_vadd_of_nonpos + theorem wbtw_rotate_iff + theorem wbtw_self_iff + theorem wbtw_self_left + theorem wbtw_self_right + theorem wbtw_smul_vadd_smul_vadd_of_nonneg_of_le + theorem wbtw_smul_vadd_smul_vadd_of_nonneg_of_nonpos + theorem wbtw_smul_vadd_smul_vadd_of_nonpos_of_le + theorem wbtw_smul_vadd_smul_vadd_of_nonpos_of_nonneg + theorem wbtw_swap_left_iff + theorem wbtw_swap_right_iff + theorem wbtw_vadd_const_iff + theorem wbtw_vsub_const_iff 2022-09-30 08:02:43 b2a6572 feat(topology/instances/nnreal): generalize `has_continuous_smul` instance (#16713) This generalizes the `has_continuous_smul ℝ≥0 ℝ` instance to `has_continuous_smul ℝ≥0 α` whenever there is a `mul_action ℝ α` with `has_continuous_smul R α` (the `mul_action` is the minimal assumption to get an induced action of `ℝ≥0` on `α` in mathlib). ESTIMATED CHANGES Modified src/topology/instances/nnreal.lean 2022-09-30 08:02:42 af90fef feat(data/fin): golf, add lemmas (#16711) * add `fin.range_succ`, `fin.exists_succ_eq_iff`, and `fin.range_fin_succ`; * golf `fin.eq_succ_of_ne_zero` and `fin.range_cons`. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.exists_succ_eq_iff + theorem fin.range_succ Modified src/data/fin/tuple/basic.lean +/- theorem fin.range_cons + theorem fin.range_fin_succ 2022-09-30 08:02:41 d610cec feat(group_theory/quotient_group): `simp` lemmas for `quotient_group.map` (#16703) Little lemmas that I needed to work with the class group of a ring of integers. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + theorem quotient_group.map_comp_map + theorem quotient_group.map_id + theorem quotient_group.map_id_apply + theorem quotient_group.map_map Modified src/group_theory/subgroup/basic.lean + theorem subgroup.comap_id 2022-09-30 08:02:40 001ba50 feat(ring_theory/fractional_ideal): `simp` lemmas for `fractional_ideal.canonical_equiv` (#16702) Some lemmas I needed for working with the class group of a ring of integers. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.canonical_equiv_canonical_equiv + theorem fractional_ideal.canonical_equiv_coe_ideal +/- theorem fractional_ideal.canonical_equiv_flip + theorem fractional_ideal.canonical_equiv_self + theorem fractional_ideal.canonical_equiv_trans_canonical_equiv 2022-09-30 08:02:39 acd02bb feat(algebra/hom/equiv): two little `simp` lemmas for `units.map_equiv` (#16701) Two lemmas I needed for working with the class group of rings. ESTIMATED CHANGES Modified src/algebra/hom/equiv.lean + theorem units.coe_map_equiv + theorem units.map_equiv_symm 2022-09-30 08:02:38 3a0be82 feat(topology/sheaves): presheaf on indiscrete space is sheaf iff value at empty is terminal (#16694) + Show that the indiscrete topology (⊤ : topological_space α), defined to be the topology generated by nothing, consists of exactly the empty set and the whole space. + Show that a presheaf on an indiscrete space (in particular the one point space) is a sheaf if its value at the empty set is a terminal object. + Generalize universe level in the converse `is_terminal_of_empty` (which holds for any space). ESTIMATED CHANGES Modified src/topology/order.lean + theorem topological_space.is_open_top_iff Modified src/topology/sets/opens.lean + theorem topological_space.opens.eq_bot_or_top Added src/topology/sheaves/punit.lean + theorem Top.presheaf.is_sheaf_iff_is_terminal_of_indiscrete + theorem Top.presheaf.is_sheaf_of_is_terminal_of_indiscrete + theorem Top.presheaf.is_sheaf_on_punit_iff_is_terminal + theorem Top.presheaf.is_sheaf_on_punit_of_is_terminal Modified src/topology/sheaves/sheaf_condition/sites.lean 2022-09-30 06:01:27 9b1e920 feat(topology/continuous_function/{basic, compact}): add a few missing lemmas (#16714) ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + theorem continuous_map.coe_coe Modified src/topology/continuous_function/compact.lean + theorem continuous_map.nnnorm_lt_iff + theorem continuous_map.nnnorm_lt_iff_of_nonempty 2022-09-30 06:01:26 667f2a6 feat(analysis/normed_space/basic): add `norm_algebra_map_nnreal` (#16709) This adds `simp` lemmas saying that `∥algebra_map ℝ≥0 𝕜 x∥ = x` and similarly for `∥⬝∥₊` whenever `𝕜` is a normed `ℝ`-algebra and satisfies `norm_one_class`. These are needed separately from `norm_algebra_map'` and `nnnorm_algebra_map'` because `𝕜` cannot be a normed `ℝ≥0`-algebra for the simple reason that `ℝ≥0` is not a normed field. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnnorm_algebra_map_nnreal + theorem norm_algebra_map_nnreal 2022-09-30 03:07:25 07e46bc feat(data/fin): iff on add or sub across last-0 break (#15916) ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.add_one_le_iff + theorem fin.add_one_lt_iff + theorem fin.last_le_iff + theorem fin.le_sub_one_iff + theorem fin.le_zero_iff + theorem fin.lt_add_one_iff + theorem fin.lt_sub_one_iff + theorem fin.sub_one_lt_iff 2022-09-30 00:01:07 4ed5044 feat(tactic/positivity): Extension for `finset.card` (#16637) A best effort `positivity` extension for `finset.card`. This looks for an assumption of the form `s.nonempty` in context to prove `0 < s.card`. ESTIMATED CHANGES Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-09-30 00:01:06 6fc2df6 feat(order/filter/{prod,pi}): add `filter.prod_le_prod`, `filter.pi_le_pi` etc (#16468) ESTIMATED CHANGES Modified src/data/set/prod.lean + theorem set.subset_eval_image_pi Modified src/order/filter/pi.lean + theorem filter.map_eval_pi + theorem filter.pi_inj + theorem filter.pi_le_pi Modified src/order/filter/prod.lean + theorem filter.map_fst_prod + theorem filter.map_snd_prod + theorem filter.prod_inj + theorem filter.prod_le_prod Modified src/topology/inseparable.lean + theorem inseparable.prod + theorem inseparable_pi + theorem inseparable_prod + theorem specializes.prod + theorem specializes_pi + theorem specializes_prod 2022-09-29 21:54:17 ed33fcf feat(order/filter/*): a family of pairwise disjoint filters has a family of pairwise disjoint members (#16504) ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem disjoint.exists_mem_filter_basis + theorem pairwise.exists_mem_filter_basis_of_disjoint + theorem set.pairwise_disjoint.exists_mem_filter_basis Modified src/order/filter/basic.lean + theorem pairwise.exists_mem_filter_of_disjoint + theorem set.pairwise_disjoint.exists_mem_filter Modified src/topology/separation.lean + theorem pairwise_disjoint_nhds + theorem set.finite.t2_separation - theorem t2_separation_finset 2022-09-29 19:48:11 71e28e0 feat(topology/uniform_space/uniform_convergence_topology): bases for uniform structures of 𝔖-convergence (#14778) By definition, the sets `S(V) := {(f, g) | ∀ x, (f x, g x) ∈ V}` for `V∈𝓤 β` form a basis for the uniformity of uniform convergence on `α → β`. We extend this result in the two following ways : - we show that it suffices to consider only the sets `V` in a basis of `𝓤 β` instead of all the entourages - we deduce a similar result for the uniformity of 𝔖-convergence for a directed 𝔖 : in that case, a basis is given by the sets `S'(A,V) := {(f, g) | ∀ x ∈ A, (f x, g x) ∈ V}` for `A ∈𝔖` and `V` in a basis of `𝓤 β` ESTIMATED CHANGES Modified src/topology/uniform_space/uniform_convergence_topology.lean 2022-09-29 16:43:03 c8760bd refactor(algebra/ring/basic): replace `neg_zero'` by `neg_zero_class` instance (#16686) Eliminate the separate `neg_zero'` lemma for the combination of `mul_zero_class` with `has_distrib_neg` by adding a `neg_zero_class` instance for that case. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean - theorem neg_zero' Modified src/analysis/special_functions/pow.lean Modified src/data/polynomial/laurent.lean Modified src/data/sign.lean Modified src/linear_algebra/symplectic_group.lean Modified src/probability/moments.lean 2022-09-29 16:43:02 d755c08 feat(data/set/intervals/monotone): extend a monotone function on a set to a globally monotone function (#16682) ESTIMATED CHANGES Modified src/data/set/intervals/monotone.lean + theorem antitone_on.exists_antitone_extension + theorem monotone_on.exists_monotone_extension 2022-09-29 14:41:49 4260428 refactor(*): `inv_one_class`, `neg_zero_class` instances replacing lemmas (#16699) Replace `inv_one` lemmas for `matrix`, `fractional_ideal`, `mv_power_series` and `power_series` with `inv_one_class` instances, and a `neg_zero` lemma for `pgame` with a `neg_zero_class` instance. ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean - theorem matrix.inv_one Modified src/ring_theory/dedekind_domain/ideal.lean - theorem fractional_ideal.inv_one Modified src/ring_theory/power_series/basic.lean - theorem mv_power_series.inv_one - theorem power_series.inv_one Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean 2022-09-29 12:54:41 2e09d79 feat(topology/algebra/algebra): `algebra_clm` does not need a normed space or field (#16690) This also clean up the variables in the `topology/algebra/algebra.lean` file, to ensure that the type variables come first (as this is a useful convention for when using `@` notation). ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean - def algebra_map_clm - theorem algebra_map_clm_coe - theorem algebra_map_clm_to_linear_map Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/spectrum.lean Modified src/topology/algebra/algebra.lean + def algebra_map_clm + theorem algebra_map_clm_coe + theorem algebra_map_clm_to_linear_map +/- theorem continuous_algebra_map +/- theorem continuous_algebra_map_iff_smul +/- theorem has_continuous_smul_of_algebra_map 2022-09-29 12:54:40 37cfab4 feat(topology/path_connected): add five lemmas (#16501) add five lemmas about `symm` and `trans` operations on paths ESTIMATED CHANGES Modified src/topology/path_connected.lean + theorem continuous.path_eval + theorem continuous.path_trans + theorem path.continuous_eval + theorem path.continuous_symm + theorem path.continuous_trans + theorem path.continuous_uncurry_iff 2022-09-29 10:48:59 a630444 feat(analysis/analytic/isolated_zeros): the uniqueness theorem for analytic fns (#16489) ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem analytic_at_const + theorem analytic_on.add + theorem analytic_on.sub + theorem analytic_on_const + theorem formal_multilinear_series.const_formal_multilinear_series_radius + theorem has_fpower_series_at_const + theorem has_fpower_series_on_ball_const Modified src/analysis/analytic/isolated_zeros.lean + theorem analytic_at.frequently_zero_iff_eventually_zero + theorem analytic_on.eq_on_of_preconnected_of_frequently_eq' + theorem analytic_on.eq_on_of_preconnected_of_frequently_eq + theorem analytic_on.eq_on_of_preconnected_of_mem_closure' + theorem analytic_on.eq_on_of_preconnected_of_mem_closure Modified src/analysis/calculus/formal_multilinear_series.lean + def const_formal_multilinear_series + theorem const_formal_multilinear_series_apply Modified src/topology/continuous_on.lean + theorem frequently_nhds_within_iff + theorem mem_closure_ne_iff_frequently_within Modified src/topology/separation.lean + theorem is_open_set_of_eventually_nhds_within 2022-09-29 10:48:58 7944d18 feat(number_theory/multiplicity): lifting the exponent lemma (#8915) `multiplicity.int.pow_sub_pow` is the [lifting the exponent lemma](https://en.wikipedia.org/wiki/Lifting-the-exponent_lemma) for odd primes. Some variations are also proved. ESTIMATED CHANGES Modified src/algebra/geom_sum.lean + theorem geom_sum₂_comm Added src/number_theory/multiplicity.lean + theorem dvd_geom_sum₂_iff_of_dvd_sub' + theorem dvd_geom_sum₂_iff_of_dvd_sub + theorem dvd_geom_sum₂_self + theorem int.sq_mod_four_eq_one_of_odd + theorem int.two_pow_sub_pow' + theorem int.two_pow_sub_pow + theorem int.two_pow_two_pow_add_two_pow_two_pow + theorem int.two_pow_two_pow_sub_pow_two_pow + theorem multiplicity.geom_sum₂_eq_one + theorem multiplicity.int.pow_add_pow + theorem multiplicity.int.pow_sub_pow + theorem multiplicity.nat.pow_add_pow + theorem multiplicity.nat.pow_sub_pow + theorem multiplicity.pow_prime_pow_sub_pow_prime_pow + theorem multiplicity.pow_prime_sub_pow_prime + theorem multiplicity.pow_sub_pow_of_prime + theorem nat.two_pow_sub_pow + theorem not_dvd_geom_sum₂ + theorem odd_sq_dvd_geom_sum₂_sub + theorem padic_val_nat.pow_add_pow + theorem padic_val_nat.pow_sub_pow + theorem padic_val_nat.pow_two_sub_pow + theorem pow_two_pow_sub_pow_two_pow + theorem sq_dvd_add_pow_sub_sub 2022-09-29 06:46:39 d95851b chore(data/finset/lattice): use more common name, fix spaces (#16336) `coe_le_max_of_mem` -> `le_max` `le_max_of_mem` -> `le_max_of_eq` `min_le_coe_of_mem` -> `min_le` `min_le_of_mem` -> `min_le_of_eq` `coe_le_max_of_mem` is an analogue of `le_sup` and `min_le_coe_of_mem` is an analogue of `inf_le`, new names are more consistent with them. ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/data/finset/lattice.lean - theorem finset.coe_le_max_of_mem +/- theorem finset.inf_congr +/- theorem finset.inf_id_set_eq_sInter +/- theorem finset.inf_mono_fun +/- theorem finset.le_inf + theorem finset.le_max + theorem finset.le_max_of_eq - theorem finset.le_max_of_mem + theorem finset.min_le - theorem finset.min_le_coe_of_mem + theorem finset.min_le_of_eq - theorem finset.min_le_of_mem +/- theorem finset.sup_congr +/- theorem finset.sup_eq_supr +/- theorem finset.sup_le +/- theorem finset.sup_mono_fun 2022-09-29 01:02:48 7876437 refactor(data/real/ennreal): `div_inv_one_monoid` instance (#16689) Add a `div_inv_one_monoid` instance for `ennreal`, so eliminating its `inv_one` and `div_one` lemmas. (Once we have typeclasses for antitone `inv`, more separate `ennreal` lemmas can be eliminated.) ESTIMATED CHANGES Modified src/analysis/specific_limits/basic.lean Modified src/data/real/ennreal.lean - theorem ennreal.div_one - theorem ennreal.inv_one Modified src/measure_theory/integral/average.lean Modified src/measure_theory/measure/haar.lean Modified src/probability/cond_count.lean Modified src/topology/metric_space/hausdorff_dimension.lean 2022-09-29 01:02:47 0ec98ed refactor(data/real/ereal): `sub_neg_zero_monoid` instance (#16688) Add a `sub_neg_zero_monoid` instance for `ereal`, so eliminating its `neg_zero`, `sub_zero` and `sub_eq_add_neg` lemmas and allowing results for `neg_zero_class` to be applied to `ereal`. ESTIMATED CHANGES Modified src/data/real/ereal.lean - theorem ereal.neg_zero - theorem ereal.sub_eq_add_neg - theorem ereal.sub_zero Modified src/measure_theory/integral/vitali_caratheodory.lean 2022-09-29 01:02:46 8f89631 refactor(algebra/periodic): use `neg_zero_class` for `antiperiodic.nat_mul_eq_of_eq_zero` (#16687) Weaken the typeclass assumption on the codomain of the antiperiodic function in `antiperiodic.nat_mul_eq_of_eq_zero` from `subtraction_monoid` to `neg_zero_class`. The corresponding `int` lemma also requires involutive `neg` so will be dealt with separately once we have a further typeclass for the combination of `neg_zero_class` with `has_involutive_neg`. ESTIMATED CHANGES Modified src/algebra/periodic.lean +/- theorem function.antiperiodic.nat_mul_eq_of_eq_zero 2022-09-29 01:02:45 e63a4d5 feat(analysis/special_functions/pow): sqrt and inequalities (#16515) This PR proves a few lemmas about `real.sqrt` and `real.rpow` as well as inequality lemmas for negative powers. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem real.le_rpow_inv_iff_of_neg + theorem real.lt_rpow_inv_iff_of_neg + theorem real.rpow_div_two_eq_sqrt + theorem real.rpow_inv_le_iff_of_neg + theorem real.rpow_inv_lt_iff_of_neg 2022-09-28 21:58:16 345b38d feat(measure_theory/measure/lebesgue): deduce that a property is almost sure from a localized version in intervals (#16684) ESTIMATED CHANGES Modified src/measure_theory/measure/lebesgue.lean + theorem ae_of_mem_of_ae_of_mem_inter_Ioo + theorem ae_restrict_of_ae_restrict_inter_Ioo Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_restrict_Union_iff + theorem measure_theory.ae_restrict_bUnion_finset_iff + theorem measure_theory.ae_restrict_bUnion_iff + theorem measure_theory.ae_restrict_union_iff 2022-09-28 21:58:15 acc2a10 feat(algebra/module/basic): weaken assumption (#16673) ESTIMATED CHANGES Modified src/algebra/module/basic.lean 2022-09-28 21:58:14 0abedaf feat(data/nat/parity): iterations of involutive functions (#16630) ESTIMATED CHANGES Modified src/data/bool/basic.lean + theorem bool.bnot_ne_id Modified src/data/nat/parity.lean + theorem function.involutive.iterate_bit0 + theorem function.involutive.iterate_bit1 + theorem function.involutive.iterate_eq_id + theorem function.involutive.iterate_eq_self + theorem function.involutive.iterate_even + theorem function.involutive.iterate_odd Modified src/logic/function/basic.lean + theorem bool.involutive_bnot 2022-09-28 21:58:12 f769858 feat(tactic/push_neg): option for an alternate normal form of `¬ (P ∧ Q)` (#16586) Backport a feature of the [mathlib4 version](https://github.com/leanprover-community/mathlib4/pull/344) of `push_neg`: an option to make `¬ (P ∧ Q)` be normalized to `¬ P ∨ ¬ Q`, rather than `P → ¬ Q`. That was actually the original behaviour, but it was changed in #3362. I have implemented this as a global option `trace.push_neg.use_distrib` (using the [tracing option hack](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/custom.20options)) rather than as a piece of configuration information which is passed when using the tactic, because I imagine this feature will mostly be used in teaching (that was both my motivation and also @PatrickMassot's when he wrote the original version), where it is convenient to "set it and forget it". This is also how it is implemented in the mathlib4 version (cc @dupuisf @j-loreaux). Zulip: https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/alternative.20normal.20form.20for.20push_neg ESTIMATED CHANGES Modified src/tactic/push_neg.lean + theorem push_neg.not_and_distrib_eq Modified test/push_neg.lean 2022-09-28 21:58:11 25e7fe6 chore(algebra/order/monoid_lemmas_zero_lt): reorder, create aliases (#16522) The first part of #16449 ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem le_of_mul_le_mul_left - theorem le_of_mul_le_mul_of_pos_left - theorem le_of_mul_le_mul_of_pos_right + theorem le_of_mul_le_mul_right +/- theorem lt_of_mul_lt_mul_left +/- theorem lt_of_mul_lt_mul_right +/- theorem mul_le_mul_left +/- theorem mul_le_mul_of_nonneg_left +/- theorem mul_le_mul_of_nonneg_right +/- theorem mul_le_mul_right +/- theorem mul_lt_mul_left +/- theorem mul_lt_mul_of_pos_left +/- theorem mul_lt_mul_of_pos_right +/- theorem mul_lt_mul_right 2022-09-28 21:58:10 76747ca feat(set_theory/cardinal/ordinal): some lemmas about adding finite cardinals and (in)equalities (#16262) These lemmas arose from [this Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/cardinal.2Ele_of_add_le_add). Comments are welcome! ESTIMATED CHANGES Modified src/set_theory/cardinal/ordinal.lean + theorem cardinal.add_le_add_iff_of_lt_aleph_0 + theorem cardinal.add_nat_eq + theorem cardinal.add_nat_inj + theorem cardinal.add_nat_le_add_nat_iff_of_lt_aleph_0 + theorem cardinal.add_one_inj + theorem cardinal.add_one_le_add_one_iff_of_lt_aleph_0 + theorem cardinal.add_right_inj_of_lt_aleph_0 2022-09-28 21:58:09 326722b feat(set_theory/zfc/basic): nonempty predicate (#15546) We define `Set.nonempty` matching `set.nonempty` and prove the basic results. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Set.nonempty_def + theorem Set.nonempty_mk_iff + theorem Set.nonempty_of_mem + theorem Set.nonempty_to_set_iff + theorem Set.not_nonempty_empty + theorem pSet.nonempty_def + theorem pSet.nonempty_of_mem + theorem pSet.nonempty_of_nonempty_type + theorem pSet.nonempty_to_set_iff + theorem pSet.nonempty_type_iff_nonempty + theorem pSet.not_nonempty_empty 2022-09-28 21:58:08 fe84059 feat(set_theory/game/pgame): ditch `restricted` (#15037) We ditch `pgame.restricted`. The docstring erroneously claimed it to be something other than what it was, and in its current form, it really only served as a worse form of `le_def`. It was barely used anyways. See also my comments on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Well-founded.20recursion.20for.20pgames/near/287531824). ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean +/- theorem pgame.relabelling.ge +/- theorem pgame.relabelling.le - def pgame.relabelling.restricted - theorem pgame.restricted.le - def pgame.restricted.refl - def pgame.restricted.trans - inductive pgame.restricted 2022-09-28 18:56:28 35f0f1b feat(data/set/basic): Refactor and additions of sep lemmas (#16566) Add and refactor sep lemmas. ESTIMATED CHANGES Modified src/analysis/convex/quasiconvex.lean Modified src/data/set/basic.lean - theorem set.eq_sep_of_subset - theorem set.forall_not_of_sep_empty +/- theorem set.mem_sep +/- theorem set.mem_sep_iff + theorem set.sep_and +/- theorem set.sep_empty + theorem set.sep_eq_empty_iff_mem_false + theorem set.sep_eq_of_subset + theorem set.sep_eq_self_iff_mem_true + theorem set.sep_ext_iff +/- theorem set.sep_false + theorem set.sep_inter - theorem set.sep_inter_sep +/- theorem set.sep_mem_eq + theorem set.sep_or +/- theorem set.sep_set_of +/- theorem set.sep_true + theorem set.sep_union +/- theorem set.sep_univ Modified src/data/set/finite.lean 2022-09-28 15:55:11 4dc217e feat(algebra/order/floor): Positivity extensions for `floor` and `ceil` (#16635) Add two `positivity` extensions: * `positivity_floor` for `int.floor` * `positivity_ceil` for `nat.ceil`, `int.ceil` ESTIMATED CHANGES Modified src/algebra/order/floor.lean Modified test/positivity.lean 2022-09-28 15:55:10 7247a3c refactor(algebra/group/defs): `inv_one_class`, `neg_zero_class` (#16187) Define typeclasses `inv_one_class` and `neg_zero_class`, to allow results depending on those properties to be proved more generally than for `division_monoid` and `subtraction_monoid` without requiring duplication. Also define `div_inv_one_monoid` and `sub_neg_zero_monoid`. The only instances added here are those deduced from `division_monoid` and `subtraction_monoid`, and the only lemmas generalized to these classes were previously proved for those classes. Additional instances intended for followups include: * `neg_zero_class` for the combination of `mul_zero_class` with `has_distrib_neg`, so eliminating the separate `neg_zero'` lemma. * `sub_neg_zero_monoid` for `ereal`. * `div_inv_one_monoid` for `ennreal`. * The usual `pointwise`, `pi` and `prod` instances. Additional lemmas intended to be generalized to use these typeclasses in followups include: * `antiperiodic.nat_mul_eq_of_eq_zero` and `antiperiodic.int_mul_eq_of_eq_zero`, which currently require the codomain of the antiperiodic function to be a `subtraction_monoid`. (The latter will also require involutive `neg`, as will some lemmas about inequalities.) * Given appropriate typeclasses for the interaction of inequalities with `inv` and `neg` (which will also enabling combining `left` and `right` variants, which is the main motivation of these changes), lemmas such as `left.inv_le_one_iff`, `left.one_le_inv_iff`, `left.one_lt_inv_iff`, `left.inv_lt_one_iff` and their `right` and additive variants. Some of these currently have duplicates for `ennreal`, for example. Zulip thread raising question of such typeclasses: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/typeclasses.20for.20orders.20with.20neg.20and.20inv ESTIMATED CHANGES Modified src/algebra/group/basic.lean +/- theorem div_one - theorem inv_one +/- theorem one_div_one Modified src/algebra/group/defs.lean + theorem inv_one Modified src/tactic/abel.lean 2022-09-28 14:15:46 60851c9 feat(topology/order/lattice): add `topological_lattice` instance for linear orders with an order closed topology (#16664) This adds a `topological_lattice` instance for and linear order with an order closed topology. In particular, this gives us previously nonexistent `topological_lattice` instances for `ℝ≥0`, `ℝ≥0∞` and things like `set.Icc (a : ℝ) b` as well as many others. In addition, it makes the `topological_lattice` instance for `ℝ` available earlier in the import hierarchy, because the previously existing instance was derived from `real.normed_lattice_add_comm_group` via `normed_lattice_add_comm_group_topological_lattice`. ESTIMATED CHANGES Modified src/topology/order/lattice.lean 2022-09-28 07:45:13 8ef6d8f feat(analysis/schwartz_space): add lemmas for seminorms (#16634) ESTIMATED CHANGES Modified src/analysis/schwartz_space.lean + theorem schwartz_map.norm_iterated_fderiv_le_seminorm + theorem schwartz_map.norm_pow_mul_le_seminorm 2022-09-28 06:21:16 494b1f8 feat(linear_algebra/affine_space/affine_subspace): `parallel` (#16298) Define the notion of two affine subspaces being parallel and set up associated API. This notion is very similar to the subspaces having equal `direction`, and in many cases I expect equality of direction will remain more convenient to use. However, the notions aren't exactly the same (the empty affine subspace and a single-point subspace have the same `direction` but aren't considered parallel), and having a definition of `parallel`, even if not used much, allows geometrical statements involving things being parallel to be made in a way corresponding more closely to the informal formulation. Note that the notation defined for `parallel` is based on what characters are available rather than on their proper Unicode semantics. There are at least four characters in Unicode with somewhat similar appearance: * U+01C1 LATIN LETTER LATERAL CLICK `ǁ` * U+2016 DOUBLE VERTICAL LINE `‖` (for which the Unicode Character Database says "used in pairs to indicate norm of a matrix") * U+2225 PARALLEL TO `∥` * U+23F8 DOUBLE VERTICAL BAR `⏸` Based on the Unicode descriptions, U+2225 would be natural to use for `parallel`, and U+2016 for norms. However, mathlib makes extensive use of U+2225 for norms; for geometry, both norms and `parallel` are of use and it doesn't work well to try to use the notation for both (unless there's some way to set the precedences of the different notations that will make Lean parse both uses correctly). (There's a local notation using U+2225 for `fuzzy` in the context of games, which seems a more appropriate use of U+2225 and probably doesn't cause problems because of games and norms not being used together.) So this PR uses U+2016 for `parallel` instead of the logical U+2225 (even if in principle the uses for `parallel` and norms should be swapped to correspond better to the Unicode semantics). There are other local uses of U+2016 for `fintype.card` in a few places, but I don't expect those to cause a problem. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.bot_parallel_iff_eq_bot + theorem affine_subspace.parallel.direction_eq + theorem affine_subspace.parallel.refl + theorem affine_subspace.parallel.symm + theorem affine_subspace.parallel.trans + def affine_subspace.parallel + theorem affine_subspace.parallel_bot_iff_eq_bot + theorem affine_subspace.parallel_comm + theorem affine_subspace.parallel_iff_direction_eq_and_eq_bot_iff_eq_bot 2022-09-28 05:29:41 6fe90f2 feat(algebra/jordan/special): The symmetrization of an associative ring is a commutative Jordan multiplication (#11401) A commutative multiplication on a real or complex space can be constructed from any multiplication by "symmetrisation" i.e ``` a∘b = 1/2(ab+ba). ``` When the original multiplication is associative, the symmetrised algebra is a commutative Jordan algebra. A commutative Jordan algebra which can be constructed in this way from an associative multiplication is said to be a special Jordan algebra. This PR shows more generally that for a ring where the scalar `2` is invertible, the symmetrised multiplication is a commutative Jordan multiplication. ESTIMATED CHANGES Modified src/algebra/jordan/basic.lean Modified src/algebra/symmetrized.lean 2022-09-27 22:00:36 c251522 feat(order/atoms): link `set` to `is_atom` API (#16665) ESTIMATED CHANGES Modified src/order/atoms.lean + theorem set.is_atom_iff + theorem set.is_atom_singleton + theorem set.is_coatom_iff + theorem set.is_coatom_singleton_compl 2022-09-27 22:00:34 999e092 feat(group_theory/finiteness): Add variants of `rank_closure_le_card` (#16364) This PR adds some more API lemmas for `group.rank`. `rank_congr` is useful since `rw h` and `simp only [h]` have run into trouble. ESTIMATED CHANGES Modified src/group_theory/finiteness.lean + theorem subgroup.rank_closure_finite_le_nat_card + theorem subgroup.rank_closure_finset_le_card + theorem subgroup.rank_congr Modified src/group_theory/subgroup/basic.lean + theorem subgroup.closure_preimage_eq_top 2022-09-27 20:24:08 8e8c7fd feat(analysis/normed_space/star/basic): in a C⋆-ring `star x * x = 0 ↔ x = 0` (#16672) This adds a few convenience lemmas for C⋆-rings regarding criteria for being equal, or not equal, to zero. ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean + theorem cstar_ring.mul_star_self_eq_zero_iff + theorem cstar_ring.mul_star_self_ne_zero_iff + theorem cstar_ring.star_mul_self_eq_zero_iff + theorem cstar_ring.star_mul_self_ne_zero_iff 2022-09-27 20:24:07 99e885b chore(ring_theory/(mv_)polynomial/{symmetric, homogeneous}): move files (#16414) ESTIMATED CHANGES Renamed src/ring_theory/polynomial/homogeneous.lean to src/ring_theory/mv_polynomial/homogeneous.lean Renamed src/ring_theory/polynomial/symmetric.lean to src/ring_theory/mv_polynomial/symmetric.lean Modified src/ring_theory/polynomial/vieta.lean 2022-09-27 17:24:18 ec74a7c feat(topology/algebra/[uniform_]group): more `ext` lemmas (#16667) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem topological_group.ext_iff Modified src/topology/algebra/uniform_group.lean + theorem uniform_group.ext + theorem uniform_group.ext_iff 2022-09-27 17:24:17 a652850 feat(algebra/group/type_tags): finite & infinite instances for additive/multiplicative group type tags (#16662) - adds finite & infinite instances for additive/multiplicative group type tags ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean 2022-09-27 17:24:16 6f9edf5 fix(tactic/positivity + test): instantiate meta-variables and add a test (#16647) Fix an issue with `positivity` reported by @YaelDillies [here](https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/New.20tactic.3A.20.60positivity.60/near/300639970). For the fix, it seems that instantiating meta-variables is enough. ESTIMATED CHANGES Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-09-27 17:24:15 3bfcb4c feat(analysis/locally_convex): boundedness in normed spaces (#16636) ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean + theorem normed_space.image_is_vonN_bounded_iff + theorem normed_space.is_vonN_bounded_iff' 2022-09-27 17:24:14 c433ac0 feat(analysis/calculus): add lemma for norm of zeroth iterated derivative (#16631) ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem norm_iterated_fderiv_zero 2022-09-27 17:24:13 d0f9249 feat(data/list/chain): add `list.chain'_is_infix` (#16627) ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain'_is_infix 2022-09-27 17:24:12 7a4b066 chore(probability/martingale): use volume_tac in definitions (#16619) Use the tactic `volume_tac` in the definitions `martingale`, `submartingale`, `supermartingale`, `martingale_part` and `predictable_part`. In order to do that, change the order of the arguments of `martingale_part` and `predictable_part`. ESTIMATED CHANGES Modified src/probability/martingale/basic.lean +/- def measure_theory.martingale +/- def measure_theory.submartingale +/- def measure_theory.supermartingale Modified src/probability/martingale/borel_cantelli.lean Modified src/probability/martingale/centering.lean +/- theorem measure_theory.adapted_predictable_part' +/- theorem measure_theory.adapted_predictable_part +/- theorem measure_theory.predictable_part_zero 2022-09-27 17:24:11 89417b9 feat(geometry/euclidean/basic): angles in subspaces (#16610) Add lemmas that the angle between two vectors or three points in a subspace equals the angle between those vectors or points in the whole space. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem affine_subspace.angle_coe + theorem submodule.angle_coe 2022-09-27 17:24:10 33c6eea chore(topology/separation): rename `separated` to `separated_nhds` (#16604) E.g., Wikipedia uses "separated" for `disjoint (closure s) t ∧ disjoint s (closure t)`. ESTIMATED CHANGES Modified src/topology/separation.lean - theorem separated.comm - theorem separated.disjoint_closure_left - theorem separated.disjoint_closure_right - theorem separated.empty_left - theorem separated.empty_right - theorem separated.mono - theorem separated.preimage - theorem separated.symm - theorem separated.union_left - theorem separated.union_right - def separated - theorem separated_iff_disjoint + theorem separated_nhds.comm + theorem separated_nhds.disjoint_closure_left + theorem separated_nhds.disjoint_closure_right + theorem separated_nhds.empty_left + theorem separated_nhds.empty_right + theorem separated_nhds.mono + theorem separated_nhds.preimage + theorem separated_nhds.symm + theorem separated_nhds.union_left + theorem separated_nhds.union_right + def separated_nhds + theorem separated_nhds_iff_disjoint 2022-09-27 17:24:09 dc1ac24 feat(topology/subset_properties): lemmas about `disjoint`, `nhds_set`, and `is_compact` (#16591) The set neighborhoods filter of a compact set is disjoint with a filter `l` if and only if the neighborhoods filter of each point of this set is disjoint with `l`. ESTIMATED CHANGES Modified src/topology/nhds_set.lean +/- theorem monotone_nhds_set + theorem nhds_le_nhds_set + theorem nhds_set_mono Modified src/topology/separation.lean - theorem nhds_le_nhds_set + theorem nhds_le_nhds_set_iff Modified src/topology/subset_properties.lean + theorem is_compact.disjoint_nhds_set_left + theorem is_compact.disjoint_nhds_set_right 2022-09-27 14:28:32 801c013 refactor(tactic/lift): remove attribute/simp-set and swap side goal (#16565) This PR accomplishes two things: * It simplifies the design of the `lift` tactic (while keeping roughly the same user interface, see below). Specifically, it does not need an attribute set to simplify expressions coming from `can_lift` instances. - This will make the tactic easier to port to Lean 4. - It accomplishes this by moving two fields of `can_lift` into `out_param`s. So writing the instances is slightly different from before. * If the `using h` clause is left out, then `lift` produces a subgoal. This subgoal used to come after the main goal. But I think it is natural to make it the first goal. So that you can write ``` lift n to nat with k, { linarith }, ``` instead of ``` lift n to nat using by { linarith } with k, ``` ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Modified src/algebra/group/units.lean Modified src/algebra/group/with_one.lean Modified src/analysis/complex/upper_half_plane/basic.lean Modified src/data/complex/basic.lean Modified src/data/finset/basic.lean Modified src/data/finsupp/defs.lean Modified src/data/list/basic.lean Modified src/data/multiset/basic.lean Modified src/data/nat/enat.lean Modified src/data/pnat/basic.lean Modified src/data/rat/defs.lean Modified src/data/rat/nnrat.lean Modified src/data/real/ennreal.lean Modified src/data/real/ereal.lean Modified src/data/real/nnreal.lean Modified src/data/set/basic.lean Modified src/data/set/finite.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/logic/embedding.lean Modified src/logic/equiv/basic.lean Modified src/order/bounded_order.lean Modified src/order/filter/basic.lean Modified src/order/hom/basic.lean Modified src/order/interval.lean Modified src/set_theory/cardinal/basic.lean Modified src/tactic/lift.lean Modified src/topology/alexandroff.lean Modified src/topology/continuous_function/units.lean Modified src/topology/instances/nnreal.lean Modified src/topology/sets/compacts.lean Modified test/lift.lean 2022-09-27 11:53:03 f48c65a feat(analysis/convex/topology): connectedness and `same_ray` (#16661) Add lemmas that the set of vectors in the same ray as a given vector, and the set of nonzero vectors in the same ray as a given nonzero vector, are connected (in a real normed space). ESTIMATED CHANGES Modified src/analysis/convex/topology.lean + theorem is_connected_set_of_same_ray + theorem is_connected_set_of_same_ray_and_ne_zero 2022-09-27 11:53:01 7294416 feat(topology/instances/real): classify discrete subgroups (#16592) The subgroups aℤ (i.e. `zmultiples a`) of ℝ are discrete, in the sense of having finite intersection with any compact subset. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem monoid_hom.coe_comp_range_restrict + theorem monoid_hom.subtype_comp_range_restrict Modified src/topology/algebra/field.lean + theorem filter.tendsto_cocompact_mul_left₀ + theorem filter.tendsto_cocompact_mul_right₀ Modified src/topology/algebra/monoid.lean + theorem filter.tendsto_cocompact_mul_left + theorem filter.tendsto_cocompact_mul_right Modified src/topology/instances/real.lean + theorem add_subgroup.tendsto_zmultiples_subtype_cofinite + theorem int.tendsto_coe_cofinite + theorem int.tendsto_zmultiples_hom_cofinite Modified src/topology/metric_space/basic.lean - theorem int.tendsto_coe_cofinite 2022-09-27 11:53:00 ac49df8 feat(group_theory/exponent): `card G ∣ exponent G ^ rank G` (#16354) This PR adds a lemma stating that `nat.card G ∣ monoid.exponent G ^ group.rank G`. ESTIMATED CHANGES Modified src/group_theory/exponent.lean + theorem card_dvd_exponent_pow_rank' + theorem card_dvd_exponent_pow_rank 2022-09-27 11:52:59 3c139aa feat(combinatorics/quiver/path): Turn a quiver path into a list (#15240) Define `quiver.path.to_list : path a b → list V`. ESTIMATED CHANGES Modified src/combinatorics/quiver/path.lean + theorem quiver.path.eq_of_length_zero + def quiver.path.to_list + theorem quiver.path.to_list_chain_nonempty + theorem quiver.path.to_list_comp + theorem quiver.path.to_list_inj + theorem quiver.path.to_list_injective 2022-09-27 09:35:29 3397560 chore(topology/algebra/module/basic): remove `continuous_linear_map.ker` and `continuous_linear_map.range` (#16208) This PR removes `continuous_linear_map.ker` and `continuous_linear_map.range`, which are now obsolete since `linear_map.ker` and `linear_map.range` are defined for any `linear_map_class` morphism. ESTIMATED CHANGES Modified src/analysis/calculus/implicit.lean +/- theorem has_strict_fderiv_at.eq_implicit_function +/- def has_strict_fderiv_at.implicit_function +/- def has_strict_fderiv_at.implicit_to_local_homeomorph +/- theorem has_strict_fderiv_at.map_implicit_function_eq +/- theorem has_strict_fderiv_at.to_implicit_function Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/analysis/inner_product_space/basic.lean +/- theorem orthogonal_eq_inter Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/lax_milgram.lean +/- theorem is_coercive.closed_range +/- theorem is_coercive.ker_eq_bot +/- theorem is_coercive.range_eq_top Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed_space/banach.lean +/- theorem continuous_linear_equiv.coe_fn_of_bijective +/- theorem continuous_linear_equiv.coe_of_bijective +/- theorem continuous_linear_equiv.of_bijective_apply_symm_apply +/- theorem continuous_linear_equiv.of_bijective_symm_apply_apply +/- theorem continuous_linear_map.exists_nonlinear_right_inverse_of_surjective +/- theorem continuous_linear_map.nonlinear_right_inverse_of_surjective_nnnorm_pos Modified src/analysis/normed_space/complemented.lean +/- def continuous_linear_map.equiv_prod_of_surjective_of_is_compl Modified src/analysis/normed_space/finite_dimension.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/whitney_embedding.lean Modified src/linear_algebra/basic.lean +/- theorem linear_map.ker_eq_bot +/- theorem linear_map.sub_mem_ker_iff + theorem linear_map_class.ker_eq_bot Modified src/linear_algebra/prod.lean Modified src/linear_algebra/projection.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/lp_space.lean Modified src/topology/algebra/module/basic.lean - theorem continuous_linear_map.apply_ker +/- theorem continuous_linear_map.infi_ker_proj +/- theorem continuous_linear_map.is_closed_ker - def continuous_linear_map.ker - theorem continuous_linear_map.ker_coe - theorem continuous_linear_map.mem_ker - theorem continuous_linear_map.mem_range - theorem continuous_linear_map.mem_range_self - def continuous_linear_map.range - theorem continuous_linear_map.range_coe +/- theorem continuous_linear_map.range_prod_eq - theorem continuous_linear_map.range_prod_le +/- theorem submodule.ker_subtypeL +/- theorem submodule.range_subtypeL Modified src/topology/algebra/module/finite_dimension.lean 2022-09-27 07:32:45 e2621d9 chore(number_theory/legendre_symbol/norm_num): remove now unnecessary instance (#16659) This just removes a shortcut instance in `number_theory/legendre_symnol/norm_num` that was necessary to avoid computability trouble with the meta code, but is no longer so, since the root cause was fixed by #16463. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/norm_num.lean 2022-09-27 00:15:04 e46daa0 feat(analysis/normed_space/operator_norm): remove to_span_singleton_norm (#16654) Remove `continuous_linear_map.to_span_singleton_norm`. It is a duplicate of `continuous_linear_map.norm_to_span_singleton` (which has more explicit arguments and weaker type-class assumptions). ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_map.to_span_singleton_norm 2022-09-26 21:59:54 1a4f927 chore(analysis/special_functions/pow): squeezing some simps (#16660) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean 2022-09-26 21:59:53 ab2e9fb feat(algebra/category/Group/injective): divisible groups are injective in category of `AddCommGroup` (#16110) ESTIMATED CHANGES Added src/algebra/category/Group/injective.lean + theorem AddCommGroup.injective_as_module_of_injective_as_Ab + theorem AddCommGroup.injective_of_injective_as_module 2022-09-26 19:49:24 b3d23d7 chore(analysis/special_functions/pow): squeeze a nonterminal simp (#16657) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean 2022-09-26 19:49:22 9f972c7 feat(topology/uniform_space/completion): add uniform_completion.complete_equiv_self (#16612) - Change ```abstract_completion.compare_equiv``` to uniform bijection. - Define the ```abstract_completion α``` given by ```α``` when it is complete. - Use it to prove that there is a uniform bijection between a complete space and its ```uniform_completion```. - Upgrade the bijection between ```Bourbaki reals``` and ```Cauchy reals``` to a uniform bijection. - Add a new function ```function.dense_range_id``` (needed in one of the proofs) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem dense_range_id Modified src/topology/uniform_space/abstract_completion.lean +/- def abstract_completion.compare_equiv + def abstract_completion.of_complete Modified src/topology/uniform_space/compare_reals.lean Modified src/topology/uniform_space/completion.lean + def uniform_space.completion.uniform_completion.complete_equiv_self 2022-09-26 19:49:21 f38b4df feat(topology/sheaves/skyscraper): define skyscraper presheaves and calculate stalks (#15934) ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean + theorem category_theory.comp_eq_to_hom_iff + theorem category_theory.eq_to_hom_comp_iff Modified src/topology/inseparable.lean + theorem not_specializes_iff_exists_closed + theorem not_specializes_iff_exists_open Added src/topology/sheaves/skyscraper.lean + def skyscraper_presheaf + def skyscraper_presheaf_cocone + def skyscraper_presheaf_cocone_of_specializes + def skyscraper_presheaf_stalk_of_not_specializes_is_terminal 2022-09-26 19:49:20 db24ba7 chore(number_theory/padics): stylistic changes (#15755) Extracted stylistic changes (backticks, brackets, linebreaks, naming, spacing) from #15221 as suggested in the comments. ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean +/- theorem padic_int.exists_pow_neg_lt +/- theorem padic_int.exists_pow_neg_lt_rat +/- theorem padic_int.ideal_eq_span_pow_p +/- theorem padic_int.inv_mul +/- theorem padic_int.irreducible_p +/- theorem padic_int.mk_units_eq +/- theorem padic_int.norm_eq_of_norm_add_lt_left +/- theorem padic_int.norm_eq_of_norm_add_lt_right +/- theorem padic_int.norm_eq_padic_norm +/- theorem padic_int.norm_eq_pow_val +/- theorem padic_int.norm_int_cast_eq_padic_norm +/- theorem padic_int.norm_int_le_pow_iff_dvd +/- theorem padic_int.norm_le_pow_iff_norm_lt_pow_add_one +/- theorem padic_int.norm_lt_pow_iff_norm_le_pow_sub_one +/- theorem padic_int.norm_mul +/- theorem padic_int.norm_pow +/- theorem padic_int.norm_units +/- theorem padic_int.padic_norm_e_of_padic_int +/- theorem padic_int.valuation_one +/- theorem padic_int.valuation_p +/- theorem padic_int.valuation_zero Modified src/number_theory/padics/padic_norm.lean +/- theorem padic_norm.padic_norm_p +/- theorem padic_norm.padic_norm_p_of_prime +/- def padic_norm Modified src/number_theory/padics/padic_numbers.lean +/- theorem padic.add_valuation.apply +/- def padic.add_valuation_def +/- theorem padic.norm_eq_pow_val +/- theorem padic.norm_le_pow_iff_norm_lt_pow_add_one +/- theorem padic.norm_lt_pow_iff_norm_le_pow_sub_one +/- theorem padic.padic_norm_e_lim_le +/- theorem padic.rat_dense' +/- theorem padic.rat_dense +/- def padic.valuation +/- theorem padic.valuation_zero +/- theorem padic_norm_e.add_eq_max_of_ne +/- theorem padic_norm_e.eq_of_norm_add_lt_left +/- theorem padic_norm_e.eq_of_norm_add_lt_right +/- theorem padic_norm_e.eq_padic_norm +/- theorem padic_norm_e.norm_int_le_pow_iff_dvd +/- theorem padic_norm_e.norm_p_pow +/- theorem padic_seq.eq_zero_iff_equiv_zero +/- def padic_seq.norm +/- theorem padic_seq.norm_eq_pow_val +/- theorem padic_seq.norm_neg +/- theorem padic_seq.norm_nonarchimedean +/- theorem padic_seq.norm_nonzero_of_not_equiv_zero +/- theorem padic_seq.norm_values_discrete +/- theorem padic_seq.not_equiv_zero_const_of_nonzero +/- def padic_seq.stationary_point Modified src/number_theory/padics/padic_val.lean +/- theorem dvd_of_one_le_padic_val_nat +/- theorem padic_val_int.of_nat +/- theorem padic_val_int.self +/- def padic_val_int +/- theorem padic_val_nat_dvd_iff +/- theorem padic_val_nat_primes +/- theorem padic_val_rat.le_padic_val_rat_add_of_le +/- theorem padic_val_rat.self +/- theorem padic_val_rat.sum_pos_of_pos +/- def padic_val_rat +/- theorem padic_val_rat_of_nat +/- theorem pow_padic_val_nat_dvd +/- theorem pow_succ_padic_val_nat_not_dvd +/- theorem range_pow_padic_val_nat_subset_divisors' +/- theorem range_pow_padic_val_nat_subset_divisors Modified src/number_theory/padics/ring_homs.lean 2022-09-26 17:07:01 a12363e perf(analysis/normed_space/continuous_affine_map): Speedup (#16652) This changes the compilation time of `continuous_affine_map.to_const_prod_continuous_linear_map` from 19s to 3s for me locally. ESTIMATED CHANGES Modified src/analysis/normed_space/continuous_affine_map.lean 2022-09-26 17:07:00 b41baba doc(analysis/special_functions/stirling): fix equation (#16651) ESTIMATED CHANGES Modified src/analysis/special_functions/stirling.lean 2022-09-26 17:06:59 dfd17f2 feat(data/fintype/basic): `set.to_finset_of_finset` (#16460) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem set.to_finset_of_finset 2022-09-26 17:06:58 a44ce4d feat(real/ennreal): basic lemmas about `ennreal.to_nnreal` and `ennreal.to_real` (#16318) Provides lemmas for when `to_nnreal` or `to_real` equal `1`, and when two instances of `to_nnreal` and `to_real` equal each other. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_nnreal_eq_one_iff + theorem ennreal.to_nnreal_eq_to_nnreal_iff' + theorem ennreal.to_nnreal_eq_to_nnreal_iff + theorem ennreal.to_real_eq_one_iff + theorem ennreal.to_real_eq_to_real_iff' + theorem ennreal.to_real_eq_to_real_iff 2022-09-26 14:37:53 d5e1961 feat(topology/sheaves/abelian): category of sheaves is abelian (#16403) and that sheafification functor is additive ESTIMATED CHANGES Added src/topology/sheaves/abelian.lean 2022-09-26 12:01:06 525ffd7 feat(group_theory/subgroup/basic): golf proof of instance normal_inf_normal (#16620) Removed some `rw` from the proof of the instance `normal_inf_normal`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean 2022-09-26 09:37:05 ebf8ff4 feat(algebraic_geometry/projective_spectrum/Scheme): the function from Spec to Proj restricted to basic open set. (#15259) We want to have a homeomorphism between $\mathrm{Proj}|_{D(f)}$ to $\mathrm{Spec}{A^0_f}$, we have the forward direction already. This PR is the underlying function of backward direction. Continuity will be proved separately. ESTIMATED CHANGES Modified src/algebraic_geometry/projective_spectrum/scheme.lean + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.add_mem + def algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.as_homogeneous_ideal + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.as_ideal.homogeneous + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.as_ideal.ne_top + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.as_ideal.prime + def algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.as_ideal + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.denom_not_mem + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.relevant + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.smul_mem + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier.zero_mem + def algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.carrier + theorem algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.mem_carrier_iff + def algebraic_geometry.Proj_iso_Spec_Top_component.from_Spec.to_fun + theorem algebraic_geometry.degree_zero_part.coe_one + theorem algebraic_geometry.degree_zero_part.coe_sum 2022-09-26 05:32:50 3b4e9d5 feat(data/option/basic): `option.map` is injective (#16626) * prove that `option.map : (α → β) → (option α → option β)` is injective; * add `iff` version of this lemma; * add `option.map_comp_some` and `option.map_eq_id`; * drop `option.map_id'`: it was the same as `option.map_id`. ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.map_comp_some + theorem option.map_eq_id - theorem option.map_id' + theorem option.map_inj + theorem option.map_injective' 2022-09-26 05:32:49 a48b8ef feat(data/list/basic): `list.head`, `list.head'`, and `list.tail` are surjective (#16625) Also add `list.eq_cons_of_mem_head'`, a more specific version of `list.mem_of_mem_head'` ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.eq_cons_of_mem_head' +/- theorem list.mem_of_mem_head' + theorem list.surjective_head' + theorem list.surjective_head + theorem list.surjective_tail 2022-09-26 03:20:38 19deedc feat(combinatorics/simple_graph/density): `positivity` extension for `edge_density` (#16640) Add a `positivity` extension for `rel.edge_density` and `simple_graph.edge_density`. Also golf the file a little using `positivity`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/density.lean Modified test/positivity.lean 2022-09-26 02:19:54 653307a chore(number_theory/cyclotomic): fix typo in lemma name (#16643) ESTIMATED CHANGES Modified src/number_theory/cyclotomic/rat.lean + theorem is_cyclotomic_extension.rat.is_integral_closure_adjoin_singleton_of_prime + theorem is_cyclotomic_extension.rat.is_integral_closure_adjoin_singleton_of_prime_pow - theorem is_cyclotomic_extension.rat.is_integral_closure_adjoing_singleton_of_prime - theorem is_cyclotomic_extension.rat.is_integral_closure_adjoing_singleton_of_prime_pow 2022-09-26 00:54:26 765955f feat(linear_algebra/ray): `iff` versions of some lemmas (#16642) Add `iff` versions of some `same_ray` lemmas. These are lemmas where we already have some form of both directions, but not the `iff` version (and the separate directions are still useful on their own, since one direction is true for weaker typeclass assumptions than the `iff` version and the other is available with dot notation). ESTIMATED CHANGES Modified src/linear_algebra/ray.lean + theorem exists_nonneg_left_iff_same_ray + theorem exists_nonneg_right_iff_same_ray + theorem exists_pos_left_iff_same_ray + theorem exists_pos_left_iff_same_ray_and_ne_zero + theorem exists_pos_right_iff_same_ray + theorem exists_pos_right_iff_same_ray_and_ne_zero 2022-09-25 21:25:27 a337782 chore(data/list/range): fix incorrect docstring (#16622) The description of `iota` was incorrect (this can be easily checked by viewing its definition, using `#eval` or looking at any of the lemmas about it) ESTIMATED CHANGES Modified src/data/list/range.lean 2022-09-25 21:25:26 74f6e95 feat(data/real/ennreal): make of_real_sub easier to rewrite with (#16621) A tiny edit to make this lemma more general for the purpose of rewriting - previously `q` was only for `nnreal` (even though it had the assumption of nonnegativity). ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.of_real_sub 2022-09-25 20:15:26 868ee2c chore(.docker): fix build failure in docker images (#16590) ESTIMATED CHANGES Modified .docker/debian/lean/Dockerfile 2022-09-25 18:26:49 5a8eded refactor(linear_algebra/affine_space): remove `open_locale classical` (#16628) Use of `open_locale classical` in mathlib is liable to cause problems if it results in the classical decidability instances forming part of the type of a lemma, making that lemma harder to use in any context where typeclass inference finds a different decidability instance. Remove it from affine space files, adding explicit decidability instance parameters where needed for the type of a lemma and uses of the `classical` tactic when only needed for a proof. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean +/- theorem vector_span_eq_span_vsub_finset_right_ne Modified src/linear_algebra/affine_space/combination.lean +/- theorem finset.attach_affine_combination_of_injective +/- theorem finset.centroid_pair +/- theorem finset.weighted_vsub_of_point_erase Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/affine_space/independent.lean 2022-09-25 17:18:09 4a927b2 feat(algebra/order/hom/monoid): add `monotone_iff_map_nonneg/pos` + golf (#16601) If the source is an ordered add_group, a monoid hom is monotone if and only if it sends nonnegative elements to a nonnegative elements. This connects the notion of [positive linear functional](https://en.wikipedia.org/wiki/Positive_linear_functional) to monotonicity. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Amenable.20Groups/near/300076886) ESTIMATED CHANGES Modified src/algebra/order/complete_field.lean Modified src/algebra/order/hom/monoid.lean + theorem antitone_iff_map_nonneg + theorem antitone_iff_map_nonpos + theorem monotone_iff_map_nonneg + theorem monotone_iff_map_nonpos + theorem strict_anti_iff_map_neg + theorem strict_anti_iff_map_pos + theorem strict_mono_iff_map_neg + theorem strict_mono_iff_map_pos 2022-09-25 15:14:30 1313934 feat(analysis/inner_product_space/l2_space): compute orthogonal projection on U given a hilbert basis of U (#15541) ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean 2022-09-25 11:24:22 3b727dc feat(algebra/module/basic): More general `smul_ne_zero` (#16608) Prove the one way implication of `smul_ne_zero` that holds without `smul_eq_zero` separately. Call it `smul_ne_zero` and rename `smul_ne_zero` to `smul_ne_zero_iff`. This matches `mul_ne_zero` and `mul_ne_zero_iff`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean +/- theorem smul_eq_zero +/- theorem smul_ne_zero + theorem smul_ne_zero_iff Modified src/algebra/support.lean +/- theorem function.support_smul Modified src/geometry/euclidean/oriented_angle.lean 2022-09-25 11:24:21 8f09a40 chore(category_theory/preadditive/biproducts): speed up biprod.of_components_eq (#16516) ESTIMATED CHANGES Modified src/category_theory/preadditive/biproducts.lean 2022-09-25 08:17:38 8cd94b8 feat(order/symm_diff): Heyting bi-implication (#16544) Define `bihimp`, the Heyting bi-implication operator. This is dual to `symm_diff` and generalizes `iff` on propositions. Delete `order.imp` as all the material there is now fully superseded by the Heyting algebra material (`himp`, defined in `order.heyting.basic`). ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem compl_himp + theorem compl_himp_compl +/- theorem compl_sdiff + theorem compl_sdiff_compl Modified src/order/bounded_order.lean + theorem is_compl_iff Modified src/order/heyting/basic.lean + theorem himp_idem Deleted src/order/imp.lean - def lattice.biimp - theorem lattice.biimp_comm - theorem lattice.biimp_eq_iff - theorem lattice.biimp_eq_top_iff - theorem lattice.biimp_mp - theorem lattice.biimp_mpr - theorem lattice.biimp_self - theorem lattice.biimp_symm - theorem lattice.bot_imp - theorem lattice.compl_biimp - theorem lattice.compl_biimp_compl - theorem lattice.compl_imp - theorem lattice.compl_imp_compl - theorem lattice.compl_sdiff - theorem lattice.compl_symm_diff - def lattice.imp - theorem lattice.imp_bot - theorem lattice.imp_eq_arrow - theorem lattice.imp_eq_bot_iff - theorem lattice.imp_eq_top_iff - theorem lattice.imp_inf_le - theorem lattice.imp_mono - theorem lattice.imp_self - theorem lattice.imp_top - theorem lattice.inf_imp_eq - theorem lattice.inf_imp_eq_imp_imp - theorem lattice.le_imp_iff - theorem lattice.top_imp Modified src/order/symm_diff.lean + def bihimp + theorem bihimp_assoc + theorem bihimp_bihimp_bihimp_comm + theorem bihimp_bihimp_cancel_left + theorem bihimp_bihimp_cancel_right + theorem bihimp_bihimp_self + theorem bihimp_bihimp_sup + theorem bihimp_bot + theorem bihimp_comm + theorem bihimp_def + theorem bihimp_eq' + theorem bihimp_eq + theorem bihimp_eq_bot + theorem bihimp_eq_inf + theorem bihimp_eq_inf_himp_inf + theorem bihimp_eq_left + theorem bihimp_eq_right + theorem bihimp_eq_top + theorem bihimp_fst + theorem bihimp_himp_eq_inf + theorem bihimp_himp_left + theorem bihimp_himp_right + theorem bihimp_hnot_self + theorem bihimp_iff_iff + theorem bihimp_inf_sup + theorem bihimp_le_iff_left + theorem bihimp_le_iff_right + theorem bihimp_left_comm + theorem bihimp_left_inj + theorem bihimp_left_injective + theorem bihimp_left_involutive + theorem bihimp_left_surjective + theorem bihimp_of_ge + theorem bihimp_of_le + theorem bihimp_right_comm + theorem bihimp_right_inj + theorem bihimp_right_injective + theorem bihimp_right_involutive + theorem bihimp_right_surjective + theorem bihimp_self + theorem bihimp_snd + theorem bihimp_top + theorem bihimp_triangle + theorem bot_bihimp + theorem codisjoint.bihimp_eq_inf + theorem codisjoint_bihimp_sup + theorem compl_bihimp + theorem compl_bihimp_compl + theorem compl_bihimp_self +/- theorem compl_symm_diff + theorem compl_symm_diff_compl + theorem himp_bihimp + theorem himp_bihimp_eq_inf + theorem himp_bihimp_left + theorem himp_bihimp_right + theorem inf_himp_bihimp + theorem inf_le_bihimp + theorem is_compl.bihimp_eq_bot + theorem le_bihimp + theorem le_bihimp_iff + theorem of_dual_bihimp + theorem of_dual_symm_diff + theorem pi.bihimp_apply + theorem pi.bihimp_def + theorem pi.symm_diff_apply + theorem pi.symm_diff_def + theorem sdiff_symm_diff_left + theorem sdiff_symm_diff_right - theorem sdiff_symm_diff_self + theorem sup_bihimp_bihimp + theorem sup_himp_bihimp + theorem sup_inf_bihimp + theorem symm_diff_eq' +/- theorem symm_diff_eq_bot + theorem symm_diff_eq_top - theorem symm_diff_eq_top_iff + theorem symm_diff_fst + theorem symm_diff_snd + theorem to_dual_bihimp + theorem to_dual_symm_diff + theorem top_bihimp 2022-09-24 20:23:47 2d915e4 chore(tactic/{core + compute_degree}): tightening up compute_degree_le (#15649) This PR instantiates meta-variables to fix [this bug](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/debugging.20.60compute_degree_le.60), using code of Floris. I also tightened up the main tactic: it uses focus1 and it has a version that does not throw errors, suitable for iterations. ESTIMATED CHANGES Modified src/tactic/compute_degree.lean Modified src/tactic/core.lean Modified test/compute_degree.lean 2022-09-24 14:07:51 ba80091 feat(data/complex/basic): bundle complex.abs (#16347) Doing this this way round makes the refactor in #16340 much easier. I will follow up this PR with similar PRs for `padic_norm` and `padic_norm_e`. ESTIMATED CHANGES Modified src/algebra/order/absolute_value.lean + theorem absolute_value.coe_mk Modified src/analysis/complex/basic.lean Modified src/analysis/complex/circle.lean Modified src/analysis/complex/isometry.lean Modified src/analysis/complex/phragmen_lindelof.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/complex/upper_half_plane/functions_bounded_at_infty.lean Modified src/analysis/special_functions/compare_exp.lean Modified src/analysis/special_functions/complex/arg.lean Modified src/analysis/special_functions/complex/log.lean Modified src/analysis/special_functions/gamma.lean Modified src/analysis/special_functions/polar_coord.lean Modified src/analysis/special_functions/pow.lean Modified src/data/complex/basic.lean - theorem complex.abs_abs_sub_le_abs_sub - theorem complex.abs_add + theorem complex.abs_apply +/- theorem complex.abs_conj + theorem complex.abs_def - theorem complex.abs_div - theorem complex.abs_eq_zero - theorem complex.abs_inv - theorem complex.abs_mul - theorem complex.abs_ne_zero - theorem complex.abs_neg - theorem complex.abs_nonneg - theorem complex.abs_one - theorem complex.abs_pos - theorem complex.abs_sub_comm - theorem complex.abs_sub_le + theorem complex.abs_theory.abs_conj - theorem complex.abs_zero Modified src/data/complex/exponential.lean Modified src/geometry/euclidean/oriented_angle.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/integral/circle_transform.lean Modified src/number_theory/l_series.lean Modified src/number_theory/modular.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2022-09-24 05:06:37 5947fb6 chore(scripts): update nolints.txt (#16618) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2022-09-23 23:35:54 44eb23a chore(linear_algebra/matrix/adjugate): remove unnecessary fin_cases with (#16605) This was the only use of `fin_cases ... with ...` in mathlib, and it wasn't even necessary. Removing it to avoid having to port unused tactic features. ESTIMATED CHANGES Modified src/linear_algebra/matrix/adjugate.lean 2022-09-23 20:26:33 ac01c53 chore(data/finset/basic): Scope variables over smaller sections (#16613) Having everything in huge sections makes it harder to adjust typeclasses and variable names locally. ESTIMATED CHANGES Modified src/data/finset/basic.lean 2022-09-23 17:34:02 27b9038 feat(algebra/punit_instances): linear_ordered_add_comm_monoid_with_top punit (#16609) ESTIMATED CHANGES Modified src/algebra/punit_instances.lean 2022-09-23 17:34:01 01894cc chore(docs): run `bibtool` on `references.bib` (#16606) It seems that this file is frequently extended in the wrong format. This PR just runs the suggested reformatter. At some point we should do this in CI. ESTIMATED CHANGES Modified docs/references.bib 2022-09-23 17:33:59 8deb2a6 feat(topology/separation): connected sets in a t1 space are infinite (#16584) Also rename `eq_univ_of_nonempty_clopen` to `is_clopen.eq_univ`. ESTIMATED CHANGES Modified src/topology/connected.lean - theorem eq_univ_of_nonempty_clopen + theorem is_clopen.eq_univ Modified src/topology/path_connected.lean Modified src/topology/separation.lean + theorem connected_space.infinite + theorem is_preconnected.infinite_of_nontrivial + theorem preconnected_space.trivial_of_discrete 2022-09-23 17:33:58 e1783b0 doc(group_theory/sylow): update docstring to include card_eq_multiplicity as a main result (#14354) Sylow subgroups have been redefined to be maximal p-subgroups, instead of subgroups of cardinality `p^n` where `n` is the multiplicity of `p` in the cardinality of G. Sylow's first theorem basically proves that these two are equivalent. With the new definition the hard part of Sylow's first theorem is really proving the lemma `sylow.card_eq_multiplicity` and not proving the existence of a Sylow subgroup so I included it as a main result. ESTIMATED CHANGES Modified src/group_theory/sylow.lean 2022-09-23 14:45:52 8f66240 feat(group_theory/group_action): define `distrib_smul` and `smul_zero_class` (#16123) These are two new superclasses of `distrib_mul_action` that get rid of the `mul_action` part: * `smul_zero_class` is `has_smul` + `a • 0 = 0` * `distrib_smul` is `smul_zero_class` + `a • (x + y) = a • x + a • y`. The motivation for these classes is to instantiate `qsmul` on `splitting_field`: in general scalar multiplication with rational numbers is not a `distrib_mul_action` but it is a `distrib_smul`, and `distrib_smul` is sufficient to lift an action to the `splitting_field`. I set up both `distrib_mul_action` and `smul_with_zero` to be subclasses of the above classes, and unify `smul_zero` (depending on `distrib_mul_action`) and `smul_zero'` (depending on `smul_with_zero`) into one lemma. There are a few places where I need to help the elaborator because e.g. it's expecting `units.mk0 a ha • 0 = 0` (with `smul` coming from `distrib_mul_action`) and getting `a • 0 = 0` (with `smul` coming from `smul_zero_class`). Apparently having both the type and instance differ is too hard for the unifier. Because we don't have definitional eta for structures yet, setting up the inheritance is a bit more tricky than you might think; I added an `example` test case to ensure everything stays OK. ESTIMATED CHANGES Modified src/algebra/algebra/unitization.lean Modified src/algebra/category/Module/change_of_rings.lean +/- theorem category_theory.Module.restrict_scalars.smul_def' Modified src/algebra/module/pi.lean Modified src/algebra/module/prod.lean Modified src/algebra/module/ulift.lean Modified src/algebra/order/module.lean Modified src/algebra/order/smul.lean Modified src/algebra/smul_with_zero.lean - theorem smul_zero' Modified src/algebra/triv_sq_zero_ext.lean Modified src/analysis/convex/star.lean Modified src/data/finset/pointwise.lean Modified src/data/real/pointwise.lean Modified src/data/set/pointwise.lean Modified src/group_theory/group_action/defs.lean +/- theorem smul_add +/- theorem smul_zero Modified src/group_theory/group_action/group.lean Modified src/group_theory/group_action/pi.lean Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/units.lean Modified src/information_theory/hamming.lean Modified src/linear_algebra/matrix/diagonal.lean Modified src/number_theory/legendre_symbol/add_character.lean Modified src/order/filter/pointwise.lean Modified src/ring_theory/localization/module.lean Modified src/tactic/lint/type_classes.lean Modified src/topology/support.lean 2022-09-23 14:45:51 249a9c9 feat(category_theory/limits/shapes/biproducts): more (co)kernel instances (#14188) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.cokernel_biprod_inl_iso + def category_theory.limits.cokernel_biprod_inr_iso + def category_theory.limits.cokernel_biproduct_from_subtype_iso + def category_theory.limits.cokernel_biproduct_ι_iso + def category_theory.limits.cokernel_cofork_biproduct_from_subtype + def category_theory.limits.kernel_biprod_fst_iso + def category_theory.limits.kernel_biprod_snd_iso + def category_theory.limits.kernel_biproduct_to_subtype_iso + def category_theory.limits.kernel_biproduct_π_iso + def category_theory.limits.kernel_fork_biproduct_to_subtype 2022-09-23 11:55:24 313f36d feat(order/filter/lift): replace some implications with iffs (#16452) ESTIMATED CHANGES Modified src/order/filter/lift.lean +/- theorem filter.le_lift' +/- theorem filter.le_lift +/- theorem filter.mem_lift'_sets +/- theorem filter.principal_le_lift' + theorem filter.sInter_lift'_sets + theorem filter.sInter_lift_sets Modified src/topology/basic.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2022-09-23 11:55:23 24b50bf chore(data/finset/basic): move `disjoint` proofs earlier (#16436) This avoids repeating work for `disj_union`, and takes the stance that `disjoint` is part of the lattice API. ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem disjoint.of_image_finset +/- theorem finset.bot_eq_empty +/- theorem finset.disjoint_bUnion_left +/- theorem finset.disjoint_bUnion_right +/- theorem finset.disjoint_filter +/- theorem finset.disjoint_filter_filter +/- theorem finset.disjoint_image +/- theorem finset.disjoint_map 2022-09-23 08:22:36 d0507e7 feat(analysis/normed_space/affine_isometry): `subtypeₐᵢ` (#16573) Now that we have `affine_subspace.subtype`, add the corresponding definition as a bundled affine isometry (so resolving a comment about that being missing). The name uses subscript `ₐᵢ` rather than superscript `ᵃⁱ` as in the notation for `affine_isometry` because Lean does not accept the superscript in identifiers. ESTIMATED CHANGES Modified src/analysis/normed_space/affine_isometry.lean + theorem affine_subspace.coe_subtypeₐᵢ + def affine_subspace.subtypeₐᵢ + theorem affine_subspace.subtypeₐᵢ_linear + theorem affine_subspace.subtypeₐᵢ_linear_isometry + theorem affine_subspace.subtypeₐᵢ_to_affine_map 2022-09-23 08:22:35 f89fa08 chore(tactic): typos in docs (#16510) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean 2022-09-23 08:22:33 02022cd feat(topology/subset_properties): an infinite type with cofinite topology is irreducible (#16499) ESTIMATED CHANGES Modified src/data/set/basic.lean Modified src/topology/separation.lean +/- theorem is_irreducible_iff_singleton +/- theorem is_preirreducible_iff_subsingleton + theorem not_preirreducible_nontrivial_t2 Modified src/topology/sober.lean Modified src/topology/subset_properties.lean 2022-09-23 08:22:32 53322d0 feat(analysis/special_functions/pow, set_theory/*): `positivity` extension for powers (#16462) Add the following `positivity` extensions to handle powers: * `positivity_rpow` for real powers * `positivity_opow` for ordinal powers * `positivity_cardinal_pow` for cardinal powers ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.power_pos Modified src/set_theory/ordinal/arithmetic.lean Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-09-23 04:37:06 028afe5 chore(category/endomorphism): remove unneeded ext attribute (#16603) Removes an unnecessary `@[ext]` attribute that used an extended syntax which we are not planning to port to mathlib4. Closes #16602. ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean 2022-09-23 04:37:05 3972305 chore(topology/basic): rename lemmas (#16598) `interior_eq_iff_open` -> `interior_eq_iff_is_open`, it's dual lemma `closure_eq_iff_is_closed` renamed in #4 `subset_interior_iff_open` -> `subset_interior_iff_is_open` `subset_interior_iff_subset_of_open` -> `is_open.subset_interior_iff`, it's dual lemma `is_closed.closure_subset_iff` renamed in #3251 `closure_inter_open` -> `is_open.closure_inter` `closure_inter_open'` -> `is_open.closure_inter'` ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/convex/strict.lean Modified src/topology/basic.lean - theorem closure_inter_open' - theorem closure_inter_open + theorem interior_eq_iff_is_open - theorem interior_eq_iff_open +/- theorem is_closed.mem_iff_closure_subset + theorem is_open.closure_inter' + theorem is_open.closure_inter + theorem is_open.subset_interior_iff +/- theorem is_open_singleton_iff_nhds_eq_pure + theorem subset_interior_iff_is_open - theorem subset_interior_iff_open - theorem subset_interior_iff_subset_of_open Modified src/topology/locally_finite.lean Modified src/topology/maps.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/nhds_set.lean Modified src/topology/sets/opens.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean 2022-09-23 04:37:04 79a2eb3 chore(.github/workflows): `maintainer merge` workflow (#16555) This PR adds a workflow that will listen for PR comments containing the phrase `maintainer merge` at the beginning of a line. It is intended for use by mathlib reviewers to flag to mathlib maintainers that they have reviewed a PR and consider it ready for merging. - The workflow will send a message to the maintainer stream on zulip to ping maintainers. - The workflow will add a comment confirming that the ping has been sent. - The workflow will only work for messages from members of the "mathlib reviewers" team in the leanprover-community organization. ESTIMATED CHANGES Added .github/workflows/maintainer_merge_comment.yml Added .github/workflows/maintainer_merge_review.yml Added .github/workflows/maintainer_merge_review_comment.yml 2022-09-23 04:37:03 98cbfb4 chore(tactic/monotonicity/lemmas): Move lemmas to the correct places (#16509) A few lemmas were gathered in `tactic.monotonicity.lemmas` rather than the files they belong to. Generalize them, move them and fix their names. ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem lt_of_mul_lt_mul_of_nonpos_left + theorem lt_of_mul_lt_mul_of_nonpos_right Modified src/algebra/order/sub.lean + theorem tsub_lt_tsub_left_of_le Modified src/analysis/calculus/taylor.lean Modified src/analysis/inner_product_space/projection.lean Modified src/data/bitvec/basic.lean Modified src/number_theory/liouville/liouville_constant.lean Modified src/tactic/monotonicity/lemmas.lean - theorem lt_of_mul_lt_mul_neg_right - theorem mul_mono_nonneg - theorem mul_mono_nonpos - theorem nat.sub_mono_left_strict - theorem nat.sub_mono_right_strict 2022-09-22 22:45:38 33075a0 chore(analysis): golf a few proofs (#16600) ESTIMATED CHANGES Modified src/analysis/calculus/taylor.lean Modified src/analysis/special_functions/stirling.lean 2022-09-22 22:45:37 9806b5c doc(topology/algebra/filter_basis): modify doc of `add_group_filter_basis_of_comm` (#16597) Added the `additive` adjective to the doc for the @additive variation `add_group_filter_basis_of_comm` of `group_filter_basis_of_comm` ESTIMATED CHANGES Modified src/topology/algebra/filter_basis.lean 2022-09-22 22:45:36 1732f9c chore(topology): golf (#16585) 2 minor golfs from an old branch ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/constructions.lean 2022-09-22 22:45:35 f18afbe feat(set_theory/game/nim): recursors for left/right nim moves (#15408) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean + def pgame.left_moves_nim_rec_on + def pgame.right_moves_nim_rec_on 2022-09-22 18:41:27 951bf1d refactor(data/set/basic): Remove _eq lemmas (#16572) This PR removes `_eq` lemmas from `data.set.basic` which asset a `rfl` propositional equality, in favour of the `iff` versions, and makes the latter `simp` lemmas if they weren't already. ESTIMATED CHANGES Modified archive/100-theorems-list/30_ballot_problem.lean Modified counterexamples/phillips.lean Modified src/algebra/indicator_function.lean Modified src/algebra/order/floor.lean Modified src/algebra/support.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/prime_spectrum/is_open_comap_C.lean Modified src/algebraic_geometry/projective_spectrum/topology.lean Modified src/analysis/box_integral/basic.lean Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/box_integral/partition/split.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/complex/abs_max.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/convex/join.lean Modified src/analysis/normed_space/lp_space.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/polar_coord.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/connectivity.lean Modified src/combinatorics/simple_graph/inc_matrix.lean Modified src/computability/halting.lean Modified src/data/fin/tuple/basic.lean Modified src/data/fintype/basic.lean Modified src/data/nat/lattice.lean Modified src/data/set/basic.lean - theorem set.mem_compl_eq +/- theorem set.mem_compl_iff - theorem set.mem_empty_eq + theorem set.mem_empty_iff_false - theorem set.mem_image2_eq - theorem set.mem_image_eq - theorem set.mem_inter_eq +/- theorem set.mem_inter_iff - theorem set.mem_sep_eq +/- theorem set.mem_sep_iff +/- theorem set.mem_union - theorem set.mem_union_eq - theorem set.nmem_set_of_eq + theorem set.nmem_set_of_iff Modified src/data/set/function.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/data/set/lattice.lean Modified src/data/set/pairwise.lean Modified src/data/set/prod.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/cont_mdiff.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/group_theory/perm/support.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/logic/equiv/local_equiv.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/covering/vitali_family.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/function/ae_measurable_order.lean Modified src/measure_theory/function/convergence_in_measure.lean Modified src/measure_theory/function/egorov.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/function/simple_func_dense_lp.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/ae_disjoint.lean Modified src/measure_theory/measure/ae_measurable.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/pi_system.lean Modified src/model_theory/definability.lean Modified src/model_theory/semantics.lean Modified src/order/compactly_generated.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/basic.lean Modified src/order/filter/curry.lean Modified src/probability/independence.lean Modified src/probability/martingale/borel_cantelli.lean Modified src/probability/process/hitting_time.lean Modified src/probability/process/stopping.lean Modified src/ring_theory/hahn_series.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/basic.lean Modified src/topology/category/Profinite/default.lean Modified src/topology/category/Top/limits.lean Modified src/topology/fiber_bundle.lean Modified src/topology/locally_constant/basic.lean Modified src/topology/locally_finite.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/partition_of_unity.lean Modified src/topology/paracompact.lean Modified src/topology/shrinking_lemma.lean Modified src/topology/sober.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/compact_convergence.lean Modified src/topology/vector_bundle/basic.lean 2022-09-22 16:25:53 3dc8592 feat(tactic/positivity): Extension for `coe` (#16141) Add: * a case in the main `positivity` tactic to show that `0 ≤ a` in a `canonically_ordered_add_monoid` * `positivity_coe`, an extension to `positivity`, to turn `0 ≤ a`/`0 < a` into `0 ≤ ↑a`/`0 < ↑a` when `a` is of type `ℕ`, `ℤ`, `ℚ`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_nonneg Modified src/data/real/ereal.lean + theorem ereal.coe_ennreal_pos +/- theorem ereal.coe_ennreal_top +/- theorem ereal.coe_ennreal_zero +/- theorem ereal.coe_zero Modified src/data/real/hyperreal.lean + theorem hyperreal.coe_nonneg +/- theorem hyperreal.coe_pos Modified src/data/real/nnreal.lean Modified src/measure_theory/function/lp_space.lean Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-09-22 13:12:11 6907143 feat(geometry/manifold/instances/sphere): the differential of the embedding of the sphere into its ambient space (#16466) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/geometry/manifold/instances/sphere.lean + theorem has_fderiv_at_stereo_inv_fun_aux + theorem has_fderiv_at_stereo_inv_fun_aux_comp_coe + theorem mfderiv_coe_sphere_injective + theorem range_mfderiv_coe_sphere + theorem stereographic_apply_neg + theorem stereographic_neg_apply 2022-09-22 10:57:53 e18fa7b feat(probability/martingale/centering): uniqueness of Doob's decomposition (#16532) ESTIMATED CHANGES Modified src/probability/martingale/basic.lean + theorem measure_theory.martingale.eq_zero_of_predicatable + theorem measure_theory.submartingale.zero_le_of_predictable + theorem measure_theory.supermartingale.le_zero_of_predictable Modified src/probability/martingale/centering.lean + theorem measure_theory.martingale_part_add_ae_eq + theorem measure_theory.predictable_part_add_ae_eq Modified src/probability/process/adapted.lean + theorem measure_theory.predictable.adapted 2022-09-22 06:54:03 f4210e9 feat(data/polynomial/ring_division): move lemmas, add lemmas (#16432) Rename `count_map_roots` to `count_map_roots_of_injective`. Add 8 lemmas: ``` le_root_multiplicity_iff root_multiplicity_le_iff pow_root_multiplicity_not_dvd _root_.multiset.prod_X_sub_C_dvd_iff_le_roots count_map_roots map_roots_le map_roots_le_of_injective card_roots_le_map ``` Remove `root_multiplicity_of_dvd`, it's just the left direction of `le_root_multiplicity_iff`. Move and golf 3 lemmas: ``` le_root_multiplicity_map (8 -> 5) eq_root_multiplicity_map (10 -> 7) roots_map_of_injective_card_eq_total_degree (7 -> 4) ``` - [x] depends on: #16440 ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem multiset.prod_X_sub_C_dvd_iff_le_roots + theorem polynomial.card_roots_le_map +/- theorem polynomial.count_map_roots + theorem polynomial.count_map_roots_of_injective + theorem polynomial.le_root_multiplicity_iff + theorem polynomial.map_roots_le + theorem polynomial.map_roots_le_of_injective + theorem polynomial.pow_root_multiplicity_not_dvd + theorem polynomial.root_multiplicity_le_iff - theorem polynomial.root_multiplicity_of_dvd - theorem polynomial.roots_map_of_injective_card_eq_total_degree + theorem polynomial.roots_map_of_injective_of_card_eq_nat_degree Modified src/field_theory/splitting_field.lean 2022-09-22 05:58:38 ec5f9ad feat(analysis/convolution): relax typeclasses and add lemma (#16587) * Relax type-class conditions on `measure_theory.integrable.integrable_convolution` and `convolution_flip` * Add `integral_convolution` ESTIMATED CHANGES Modified src/analysis/convolution.lean + theorem integral_convolution 2022-09-21 20:56:31 88f41bb feat(data/complex/exponential): `positivity` extension for `real.exp` (#16492) Add `positivity_exp`, a `positivity` extension to prove `0 < real.exp r` for all `r`. ESTIMATED CHANGES Modified src/data/complex/exponential.lean Modified test/positivity.lean 2022-09-21 15:26:28 b153991 doc(metric_space/basic): modify doc for metric spaces adding pseudo metric spaces (#16577) The doc preceeding the `pseudo_metric_space` instance spoke only about `metric spaces`. I have added the `pseudo_metric` version. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean 2022-09-21 12:36:51 84b2754 feat(algebra/field/opposite): Missing instances (#16564) A few missing field-like instances for `mul_opposite` and `add_opposite`. ESTIMATED CHANGES Modified src/algebra/field/opposite.lean 2022-09-21 10:15:01 aae2a82 feat(algebra/order/hom/basic): `positivity` extension for nonnegative homs (#16228) Add `positivity_map`, a `positivity` extension for expressions of the form `f x` where `f : F` where `nonneg_hom_class F α β`. Golf existing proofs using it. ESTIMATED CHANGES Modified src/algebra/order/hom/basic.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/normed/group/seminorm.lean Modified src/analysis/seminorm.lean Modified test/positivity.lean 2022-09-21 08:15:20 d205727 feat(topology/constructions): add/golf lemmas about `sigma` (#16571) * add some `iff` lemmas; * golf some proofs. ESTIMATED CHANGES Modified src/topology/category/Top/limits.lean Modified src/topology/constructions.lean + theorem comap_sigma_mk_nhds + theorem continuous.sigma_map +/- theorem continuous_sigma + theorem continuous_sigma_iff +/- theorem continuous_sigma_map +/- theorem embedding_sigma_map + theorem inducing_sigma_map + theorem is_closed_range_sigma_mk - theorem is_closed_sigma_mk +/- theorem is_open_map_sigma + theorem is_open_map_sigma_map + theorem open_embedding_sigma_map + theorem sigma.nhds_eq + theorem sigma.nhds_mk Modified src/topology/homeomorph.lean 2022-09-21 08:15:19 a6d28ae feat(topology/algebra/mul_action): `add_torsor.connected_space` (#16471) Add the lemma that an `add_torsor` for a connected space is itself a connected space, given `has_continuous_vadd`. ESTIMATED CHANGES Modified src/topology/algebra/mul_action.lean 2022-09-21 08:15:18 ae9b867 feat(analysis/seminorm): continuity criterion for seminorms (#16402) ESTIMATED CHANGES Modified src/analysis/normed/group/seminorm.lean + theorem abs_sub_map_le_div Modified src/analysis/seminorm.lean + theorem seminorm.continuous_at_zero + theorem seminorm.continuous_of_le + theorem seminorm.mem_ball_self + theorem seminorm.norm_sub_map_le_sub 2022-09-21 08:15:16 e2ce3fa feat(linear_algebra/affine_space/affine_subspace): `affine_subspace.subtype` (#16372) Define `affine_subspace.subtype`, the embedding map from an affine subspace to the ambient affine space as a bundled affine map, analogous to `submodule.subtype`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.coe_subtype + theorem affine_subspace.injective_subtype + theorem affine_subspace.subtype_apply + theorem affine_subspace.subtype_linear 2022-09-21 08:15:15 9936c3d feat(ring_theory/graded_algebra/basic): lemmas about rings graded by canonically ordered monoids (#16083) When the `canonically_ordered_add_monoid` `has_ordered_sub` and is cancellative (equivalent to the `[contravariant_class ι ι (+) (≤)]` assumption): * `(decompose 𝒜 (a * b) n : A) = if i ≤ n then a * decompose 𝒜 b (n - i) else 0` for homogeneous `a` of degree `i` * `(decompose 𝒜 (a * b) n : A) = if i ≤ n then (decompose 𝒜 a (n - i)) * b else 0` for homogeneous `b` of degree `i` Examples of such monoids include ℕ and finitely supported functions to ℕ. ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean +/- theorem direct_sum.coe_mul_apply + theorem direct_sum.coe_mul_apply_eq_dfinsupp_sum + theorem direct_sum.coe_mul_of_apply + theorem direct_sum.coe_mul_of_apply_add + theorem direct_sum.coe_mul_of_apply_aux + theorem direct_sum.coe_mul_of_apply_of_le + theorem direct_sum.coe_mul_of_apply_of_not_le + theorem direct_sum.coe_of_mul_apply + theorem direct_sum.coe_of_mul_apply_add + theorem direct_sum.coe_of_mul_apply_aux + theorem direct_sum.coe_of_mul_apply_of_le + theorem direct_sum.coe_of_mul_apply_of_not_le +/- def direct_sum.coe_ring_hom +/- theorem direct_sum.coe_ring_hom_of Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.mul_eq_dfinsupp_sum Modified src/ring_theory/graded_algebra/basic.lean +/- theorem direct_sum.coe_decompose_mul_add_of_left_mem +/- theorem direct_sum.coe_decompose_mul_add_of_right_mem + theorem direct_sum.coe_decompose_mul_of_left_mem + theorem direct_sum.coe_decompose_mul_of_left_mem_of_le + theorem direct_sum.coe_decompose_mul_of_left_mem_of_not_le + theorem direct_sum.coe_decompose_mul_of_right_mem + theorem direct_sum.coe_decompose_mul_of_right_mem_of_le + theorem direct_sum.coe_decompose_mul_of_right_mem_of_not_le +/- theorem direct_sum.decompose_mul_add_left +/- theorem direct_sum.decompose_mul_add_right 2022-09-21 08:15:14 30553f1 feat(algebra/hom/centroid): Introduce the centroid of a (non-unital, non-associative) semiring (#12746) Define the centroid of a (non-unital, non-associative) semiring and shows that it forms a semiring. The centroid of a (non-unital, non-associative) ring is a ring. When the ring is prime, the centroid is commutative. ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/hom/centroid.lean + theorem centroid_hom.add_apply + theorem centroid_hom.cancel_left + theorem centroid_hom.cancel_right + theorem centroid_hom.coe_add + theorem centroid_hom.coe_comp + theorem centroid_hom.coe_comp_add_monoid_hom + theorem centroid_hom.coe_id + theorem centroid_hom.coe_int_cast + theorem centroid_hom.coe_mul + theorem centroid_hom.coe_nat_cast + theorem centroid_hom.coe_neg + theorem centroid_hom.coe_nsmul + theorem centroid_hom.coe_one + theorem centroid_hom.coe_sub + theorem centroid_hom.coe_to_add_monoid_hom + theorem centroid_hom.coe_to_add_monoid_hom_id + theorem centroid_hom.coe_to_add_monoid_hom_injective + theorem centroid_hom.coe_zero + def centroid_hom.comm_ring + def centroid_hom.comp + theorem centroid_hom.comp_apply + theorem centroid_hom.comp_assoc + theorem centroid_hom.comp_id + theorem centroid_hom.comp_mul_comm + theorem centroid_hom.ext + theorem centroid_hom.id_apply + theorem centroid_hom.id_comp + theorem centroid_hom.int_cast_apply + theorem centroid_hom.mul_apply + theorem centroid_hom.nat_cast_apply + theorem centroid_hom.neg_apply + theorem centroid_hom.nsmul_apply + theorem centroid_hom.one_apply + theorem centroid_hom.sub_apply + def centroid_hom.to_End + theorem centroid_hom.to_End_add + theorem centroid_hom.to_End_injective + theorem centroid_hom.to_End_int_cast + theorem centroid_hom.to_End_mul + theorem centroid_hom.to_End_nat_cast + theorem centroid_hom.to_End_neg + theorem centroid_hom.to_End_nsmul + theorem centroid_hom.to_End_one + theorem centroid_hom.to_End_pow + theorem centroid_hom.to_End_sub + theorem centroid_hom.to_End_zero + theorem centroid_hom.to_End_zsmul + theorem centroid_hom.to_add_monoid_hom_eq_coe + theorem centroid_hom.to_fun_eq_coe + theorem centroid_hom.zero_apply + structure centroid_hom 2022-09-21 06:16:26 236a0af feat(topology/algebra/order): a linear order is T₅ (#16540) ESTIMATED CHANGES Added src/data/set/intervals/ord_connected_component.lean + theorem set.disjoint_left_ord_separating_set + theorem set.disjoint_ord_t5_nhd + theorem set.disjoint_right_ord_separating_set + theorem set.dual_ord_connected_component + theorem set.dual_ord_connected_section + theorem set.dual_ord_separating_set + theorem set.eq_of_mem_ord_connected_section_of_interval_subset + theorem set.mem_ord_connected_component + theorem set.mem_ord_connected_component_comm + theorem set.mem_ord_connected_component_ord_connected_proj + theorem set.mem_ord_connected_component_trans + theorem set.nonempty_ord_connected_component + def set.ord_connected_component + theorem set.ord_connected_component_empty + theorem set.ord_connected_component_eq + theorem set.ord_connected_component_eq_empty + theorem set.ord_connected_component_inter + theorem set.ord_connected_component_ord_connected_proj + theorem set.ord_connected_component_subset + theorem set.ord_connected_component_univ + theorem set.ord_connected_proj_eq + theorem set.ord_connected_proj_mem_ord_connected_component + def set.ord_connected_section + theorem set.ord_connected_section_subset + def set.ord_separating_set + theorem set.ord_separating_set_comm + def set.ord_t5_nhd + theorem set.self_mem_ord_connected_component + theorem set.subset_ord_connected_component Modified src/topology/algebra/order/basic.lean Added src/topology/algebra/order/t5.lean + theorem set.compl_section_ord_separating_set_mem_nhds + theorem set.compl_section_ord_separating_set_mem_nhds_within_Ici + theorem set.compl_section_ord_separating_set_mem_nhds_within_Iic + theorem set.ord_connected_component_mem_nhds + theorem set.ord_t5_nhd_mem_nhds_set 2022-09-20 19:59:00 a547b3b feat(order/bounded_order): distrib_lattice instances for with_top and with_bot (#16569) ESTIMATED CHANGES Modified src/order/bounded_order.lean 2022-09-20 16:43:27 a5ed408 feat(group_theory/coset): Construct the embedding `H ⧸ ⨅ i, f i → Π i, H ⧸ f i` (#16560) This PR constructs the embedding `H ⧸ ⨅ i, f i → Π i, H ⧸ f i`, which is needed for #16393. ESTIMATED CHANGES Modified src/group_theory/coset.lean + def subgroup.quotient_infi_embedding + theorem subgroup.quotient_infi_embedding_apply_mk +/- def subgroup.quotient_subgroup_of_embedding_of_le + theorem subgroup.quotient_subgroup_of_embedding_of_le_apply_mk + def subgroup.quotient_subgroup_of_map_of_le + theorem subgroup.quotient_subgroup_of_map_of_le_apply_mk 2022-09-20 14:59:59 b7cc093 chore(topology/constructions): use `variables` (#16562) Also move `continuous_pi_iff` up and golf its proof. ESTIMATED CHANGES Modified src/topology/constructions.lean +/- theorem continuous.update +/- theorem continuous_apply +/- theorem continuous_apply_apply +/- theorem continuous_at.update +/- theorem continuous_at_apply +/- theorem continuous_at_pi +/- theorem continuous_pi +/- theorem continuous_pi_iff +/- theorem continuous_update +/- theorem exists_finset_piecewise_mem_of_mem_nhds +/- theorem filter.tendsto.apply +/- theorem filter.tendsto.update +/- theorem inducing_infi_to_pi +/- theorem interior_pi_set +/- theorem is_closed_set_pi +/- theorem is_open_set_pi +/- theorem mem_nhds_of_pi_mem_nhds +/- theorem nhds_pi +/- theorem pi_eq_generate_from +/- theorem pi_generate_from_eq +/- theorem pi_generate_from_eq_finite +/- theorem set_pi_mem_nhds +/- theorem set_pi_mem_nhds_iff +/- theorem tendsto_pi_nhds 2022-09-20 11:17:57 4aab2ab feat(combinatorics/additive/pluennecke_ruzsa): The Plünnecke-Ruzsa inequality (#15440) Prove the Ruzsa triangle inequalities, the Plünnecke-Petridis lemma, and the Plünnecke-Ruzsa inequality. ESTIMATED CHANGES Modified docs/references.bib Added src/combinatorics/additive/pluennecke_ruzsa.lean + theorem finset.card_add_nsmul_le + theorem finset.card_div_mul_le_card_div_mul_card_div + theorem finset.card_div_mul_le_card_div_mul_card_mul + theorem finset.card_div_mul_le_card_mul_mul_card_div + theorem finset.card_div_mul_le_card_mul_mul_card_mul + theorem finset.card_mul_mul_card_le_card_mul_mul_card_mul + theorem finset.card_mul_mul_le_card_div_mul_card_div + theorem finset.card_mul_mul_le_card_div_mul_card_mul + theorem finset.card_mul_mul_le_card_mul_mul_card_div + theorem finset.card_mul_pow_le + theorem finset.card_pow_div_pow_le' + theorem finset.card_pow_div_pow_le + theorem finset.card_pow_le' + theorem finset.card_pow_le + theorem finset.mul_pluennecke_petridis 2022-09-20 11:17:56 744170a feat(data/pfun): Product of partial functions (#15389) Define `pfun.prod : (α →. γ) → (β →. δ) → α × β →. γ × δ`. ESTIMATED CHANGES Modified src/data/pfun.lean + theorem pfun.dom_prod_lift + theorem pfun.dom_prod_map + theorem pfun.get_prod_lift + theorem pfun.get_prod_map + theorem pfun.mem_prod_lift + theorem pfun.mem_prod_map + def pfun.prod_lift + theorem pfun.prod_lift_apply + theorem pfun.prod_lift_fst_comp_snd_comp + def pfun.prod_map + theorem pfun.prod_map_apply + theorem pfun.prod_map_comp_comp + theorem pfun.prod_map_id_id 2022-09-20 09:35:03 dc680a8 feat(topology/uniform_space): Every Cauchy sequence over ℕ is totally bounded (#16563) This PR proves that the image of every Cauchy sequence `ℕ → α` is totally bounded. ESTIMATED CHANGES Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq.totally_bounded_range 2022-09-20 07:09:35 b76d2b4 feat(measure_theory/measurable_space): add `prod.measurable_singleton_class` (#16559) * golf `pi.measurable_singleton_class`, rename from `measurable_singleton_class.pi`; * add `prod.measurable_singleton_class`. ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean 2022-09-20 07:09:34 95d6715 feat(model_theory/types): Complete types over a theory (#16548) Defines the space of complete types over a particular theory in a particular type of variables ESTIMATED CHANGES Modified src/model_theory/semantics.lean + theorem first_order.language.Theory.complete_theory.subset Added src/model_theory/types.lean + theorem first_order.language.Theory.complete_type.Inter_set_of_subset + theorem first_order.language.Theory.complete_type.compl_set_of_mem + theorem first_order.language.Theory.complete_type.is_maximal + theorem first_order.language.Theory.complete_type.mem_of_models + theorem first_order.language.Theory.complete_type.mem_or_not_mem + theorem first_order.language.Theory.complete_type.nonempty_iff + theorem first_order.language.Theory.complete_type.not_mem_iff + theorem first_order.language.Theory.complete_type.set_of_mem_eq_univ_iff + theorem first_order.language.Theory.complete_type.set_of_subset_eq_empty_iff + theorem first_order.language.Theory.complete_type.set_of_subset_eq_univ_iff + theorem first_order.language.Theory.complete_type.subset + theorem first_order.language.Theory.complete_type.to_list_foldr_inf_mem + structure first_order.language.Theory.complete_type 2022-09-20 07:09:33 560891c refactor(data/real/basic): make `⊓` and `⊔` computable on reals (#16463) This also makes `norm` and `dist` computable on `real`, `nnreal`, `rat`, and `int`. From a mathematical point of view that doesn't care about computability, this still contains the (mildly) interesting result that the maximum of two reals is equal to the real produced by taking the elementwise maximum of the two cauchy sequences. This change causes some unpleasant elaboration pain in `modular.lean` for reasons presumably linked to unification of dependent typeclasses. It's not clear to me precisely what the cause if. ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_set.lean + def Top.to_sSet Modified src/analysis/normed/field/basic.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed/group/seminorm.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/analysis/normed_space/ordered.lean Modified src/analysis/seminorm.lean Modified src/data/real/basic.lean + theorem real.mk_inf + theorem real.mk_sup + theorem real.of_cauchy_inf + theorem real.of_cauchy_sup Modified src/data/real/nnreal.lean + def real.nnabs Modified src/number_theory/modular.lean Modified src/topology/instances/rat.lean Modified src/topology/metric_space/basic.lean Modified src/topology/uniform_space/compare_reals.lean 2022-09-20 05:26:47 0a67ddd feat(topology/separation): define `regular_space` (#16360) ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean +/- theorem nhds_basis_closed_balanced Modified src/order/filter/bases.lean + theorem filter.has_basis.disjoint_iff_left + theorem filter.has_basis.disjoint_iff_right Modified src/topology/algebra/group.lean +/- theorem topological_group.t3_space Modified src/topology/algebra/infinite_sum.lean +/- theorem has_sum.prod_fiberwise +/- theorem has_sum.sigma +/- theorem summable.sigma' +/- theorem summable.sigma +/- theorem tendsto_tsum_compl_at_top_zero +/- theorem tsum_comm' +/- theorem tsum_prod' +/- theorem tsum_sigma' Modified src/topology/algebra/order/basic.lean Modified src/topology/algebra/order/extend_from.lean Modified src/topology/algebra/with_zero_topology.lean Modified src/topology/dense_embedding.lean Modified src/topology/extend_from.lean +/- theorem continuous_extend_from +/- theorem continuous_on_extend_from Modified src/topology/inseparable.lean + theorem filter.has_basis.specializes_iff Modified src/topology/order.lean + theorem is_closed.mono + theorem is_open.mono Modified src/topology/separation.lean +/- theorem closed_nhds_basis + theorem disjoint_nhds_nhds_iff_not_specializes + theorem disjoint_nhds_nhds_set + theorem disjoint_nhds_set_nhds + theorem exists_mem_nhds_is_closed_subset + theorem filter.has_basis.nhds_closure + theorem has_basis_nhds_closure + theorem has_basis_opens_closure + theorem is_closed_set_of_inseparable + theorem is_closed_set_of_specializes + theorem is_open_set_of_disjoint_nhds_nhds + theorem lift'_nhds_closure - theorem nhds_is_closed + theorem regular_space.inf + theorem regular_space.of_basis + theorem regular_space.of_exists_mem_nhds_is_closed_subset + theorem regular_space.of_lift'_closure + theorem regular_space_Inf + theorem regular_space_induced + theorem regular_space_infi + theorem regular_space_tfae + theorem specializes_comm + theorem specializes_iff_inseparable - theorem t3_space.of_lift'_closure +/- theorem topological_space.is_topological_basis.exists_closure_subset +/- theorem topological_space.is_topological_basis.nhds_basis_closure Modified src/topology/uniform_space/separation.lean 2022-09-20 01:29:13 9019542 feat(data/complex/module): get `smul_comm_class ℝ M E` from the one for `ℂ` (#16513) This makes it so all the pieces are in places to realize a non-unital `ℂ`-algebra as a non-unital `ℝ`-algebra. ESTIMATED CHANGES Modified src/data/complex/module.lean 2022-09-19 23:44:49 ca827ba feat(analysis/special_functions/compare_exp): new file (#16543) Prove `(λ z, z ^ a * exp (b * z)) =o[l] λ z, z ^ a' * exp (b' * z)` for an appropriate filter `l`, any complex `a`, `a'`, and real `b < b'`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotic_equivalent.lean +/- theorem asymptotics.is_equivalent.add_is_o + theorem asymptotics.is_equivalent.sub_is_o Added src/analysis/special_functions/compare_exp.lean + theorem complex.is_exp_cmp_filter.abs_im_pow_eventually_le_exp_re + theorem complex.is_exp_cmp_filter.eventually_ne + theorem complex.is_exp_cmp_filter.is_o_cpow_exp + theorem complex.is_exp_cmp_filter.is_o_cpow_mul_exp + theorem complex.is_exp_cmp_filter.is_o_exp_cpow + theorem complex.is_exp_cmp_filter.is_o_im_pow_exp_re + theorem complex.is_exp_cmp_filter.is_o_log_abs_re + theorem complex.is_exp_cmp_filter.is_o_log_re_re + theorem complex.is_exp_cmp_filter.is_o_pow_mul_exp + theorem complex.is_exp_cmp_filter.is_o_zpow_mul_exp + theorem complex.is_exp_cmp_filter.of_bounded_under_abs_im + theorem complex.is_exp_cmp_filter.of_bounded_under_im + theorem complex.is_exp_cmp_filter.of_is_O_im_re_pow + theorem complex.is_exp_cmp_filter.of_is_O_im_re_rpow + theorem complex.is_exp_cmp_filter.tendsto_abs + theorem complex.is_exp_cmp_filter.tendsto_abs_re + structure complex.is_exp_cmp_filter Modified src/analysis/special_functions/complex/arg.lean + theorem complex.abs_arg_le_pi Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/pow.lean + theorem complex.abs_cpow_of_imp + theorem complex.is_O_cpow_rpow + theorem complex.is_Theta_cpow_const_rpow + theorem complex.is_Theta_cpow_rpow + theorem complex.is_Theta_exp_arg_mul_im Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto.eventually_ne_at_top' Modified src/order/liminf_limsup.lean + theorem filter.is_bounded_under_const 2022-09-19 20:38:32 b3951c6 feat(model_theory/*): Lemmas about satisfiability (#16546) Proves that applying an injective language map to a theory does not change its satisfiability (`first_order.language.Theory.is_satisfiable_of_is_satisfiable_on_Theory`) Proves that a union of theories is satisfiable iff any finite union of the theories is (`first_order.language.Theory.is_satisfiable_Union_iff_is_satisfiable_Union_finset`) Proves a few other minor satisfiability and language map lemmas. ESTIMATED CHANGES Modified src/model_theory/basic.lean + def first_order.language.inhabited.trivial_structure - def first_order.language.trivial_unit_structure Modified src/model_theory/bundled.lean Modified src/model_theory/language_map.lean + theorem first_order.language.Lhom.injective.is_expansion_on_default + theorem first_order.language.Lhom.sum_inl_injective + theorem first_order.language.Lhom.sum_inr_injective + theorem first_order.language.Lhom_with_constants_injective Modified src/model_theory/satisfiability.lean + theorem first_order.language.Theory.is_satisfiable_Union_iff_is_satisfiable_Union_finset + theorem first_order.language.Theory.is_satisfiable_empty + theorem first_order.language.Theory.is_satisfiable_of_is_satisfiable_on_Theory + theorem first_order.language.Theory.is_satisfiable_on_Theory_iff 2022-09-19 20:38:31 9824a55 feat(measure_theory/measurable_space): pi has measurable singletons (#16542) This generalises a result used for the birthday problem. ESTIMATED CHANGES Modified archive/100-theorems-list/93_birthday_problem.lean Modified src/measure_theory/measurable_space.lean 2022-09-19 20:38:29 c41e171 chore(probability/process): split `probability/stopping.lean` into three files, create `process` folder (#16521) Split the content of stopping.lean into the following three files: * filtration.lean: definition and properties of filtrations * adapted.lean: adapted and progressively measurable processes (and soon predictable as well) * stopping.lean: stopping times, stopped values and stopped processes ESTIMATED CHANGES Modified src/probability/martingale/basic.lean Modified src/probability/martingale/upcrossing.lean Added src/probability/process/adapted.lean + theorem measure_theory.adapted.div + theorem measure_theory.adapted.inv + theorem measure_theory.adapted.mul + theorem measure_theory.adapted.prog_measurable_of_continuous + theorem measure_theory.adapted.prog_measurable_of_nat + theorem measure_theory.adapted.smul + theorem measure_theory.adapted.strongly_measurable + theorem measure_theory.adapted.strongly_measurable_le + def measure_theory.adapted + theorem measure_theory.adapted_const + theorem measure_theory.adapted_zero + theorem measure_theory.filtration.adapted_natural + def measure_theory.prog_measurable + theorem measure_theory.prog_measurable_const + theorem measure_theory.prog_measurable_of_tendsto' + theorem measure_theory.prog_measurable_of_tendsto Added src/probability/process/filtration.lean + theorem measure_theory.filtration.Inf_def + theorem measure_theory.filtration.Sup_def + theorem measure_theory.filtration.coe_fn_inf + theorem measure_theory.filtration.coe_fn_sup + def measure_theory.filtration.const + theorem measure_theory.filtration.const_apply + def measure_theory.filtration.limit_process + theorem measure_theory.filtration.mem_ℒp_limit_process_of_snorm_bdd + def measure_theory.filtration.natural + theorem measure_theory.filtration.strongly_measurable_limit_process' + theorem measure_theory.filtration.strongly_measurable_limit_process + structure measure_theory.filtration + theorem measure_theory.integrable.uniform_integrable_condexp_filtration + theorem measure_theory.measurable_set_of_filtration Renamed src/probability/hitting_time.lean to src/probability/process/hitting_time.lean Renamed src/probability/stopping.lean to src/probability/process/stopping.lean - theorem measure_theory.adapted.div - theorem measure_theory.adapted.inv - theorem measure_theory.adapted.mul - theorem measure_theory.adapted.prog_measurable_of_continuous - theorem measure_theory.adapted.prog_measurable_of_nat - theorem measure_theory.adapted.smul - theorem measure_theory.adapted.strongly_measurable - theorem measure_theory.adapted.strongly_measurable_le - def measure_theory.adapted - theorem measure_theory.adapted_const - theorem measure_theory.adapted_zero - theorem measure_theory.filtration.Inf_def - theorem measure_theory.filtration.Sup_def - theorem measure_theory.filtration.adapted_natural - theorem measure_theory.filtration.coe_fn_inf - theorem measure_theory.filtration.coe_fn_sup - def measure_theory.filtration.const - theorem measure_theory.filtration.const_apply - def measure_theory.filtration.limit_process - theorem measure_theory.filtration.mem_ℒp_limit_process_of_snorm_bdd - def measure_theory.filtration.natural - theorem measure_theory.filtration.strongly_measurable_limit_process' - theorem measure_theory.filtration.strongly_measurable_limit_process - structure measure_theory.filtration - theorem measure_theory.integrable.uniform_integrable_condexp_filtration - theorem measure_theory.measurable_set_of_filtration - def measure_theory.prog_measurable - theorem measure_theory.prog_measurable_const - theorem measure_theory.prog_measurable_of_tendsto' - theorem measure_theory.prog_measurable_of_tendsto 2022-09-19 18:53:17 eb7d266 feat(data/real/cau_seq): more lemmas about sup and inf (#16553) These will be needed to provide `distrib_lattice real` in terms of these operators later. ESTIMATED CHANGES Modified src/data/real/cau_seq.lean 2022-09-19 18:02:44 043a74e feat(model_theory/satisfiability): Maximally consistent theories (#16547) Defines `first_order.language.Theory.is_maximal` to denote maximally consistent theories Shows that such theories are complete, and that the complete theory of a structure, as constructed, is maximal ESTIMATED CHANGES Modified src/model_theory/bundled.lean + def first_order.language.Theory.Model.subtheory_Model Modified src/model_theory/satisfiability.lean + theorem first_order.language.Theory.is_maximal.is_complete + theorem first_order.language.Theory.is_maximal.mem_iff_models + theorem first_order.language.Theory.is_maximal.mem_of_models + theorem first_order.language.Theory.is_maximal.mem_or_not_mem + def first_order.language.Theory.is_maximal + theorem first_order.language.Theory.models_iff_not_satisfiable + theorem first_order.language.complete_theory.is_maximal 2022-09-19 19:43:44+02:00 5ea93be Revert "first attempt (#16557)" This reverts commit 1ae5da9d90a97e93425baa5e18cec4128fd90797. ESTIMATED CHANGES Deleted .github/workflows/maintainer_merge.yml 2022-09-19 19:37:19+02:00 1ae5da9 first attempt (#16557) ESTIMATED CHANGES Added .github/workflows/maintainer_merge.yml 2022-09-19 15:19:05 d7e9710 feat(ring_theory/polynomial/symmetric): restore `finset.powerset_len` version of `prod_X_sub_C_coeff` (#16424) In #15008, [`prod_X_add_C_coeff`](https://github.com/leanprover-community/mathlib/pull/15008/files#diff-08ead07a5e3b20f4db52e932b309a2ff767e486e4a0bf7d90b5520d25d95dc57L79-L81) was changed to use `multiset.esymm` in its RHS, which is defined in terms of `multiset.powerset_len` and not defeq to the original version which involves `finset.powerset_len` instead. This PR restores the `finset` version by introducing `finset.esymm_map_val`, a generalized version of `mv_polynomial.esymm_eq_multiset_esymm` (this lemma is renamed from `mv_polynomial.esymm_eq_multiset.esymm` to better conform with mathlib convention). [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Help.20with.20mv_polynomial/near/297702031) ESTIMATED CHANGES Modified src/ring_theory/polynomial/symmetric.lean + theorem finset.esymm_map_val + theorem mv_polynomial.aeval_esymm_eq_multiset_esymm - theorem mv_polynomial.esymm_eq_multiset.esymm + theorem mv_polynomial.esymm_eq_multiset_esymm Modified src/ring_theory/polynomial/vieta.lean + theorem finset.prod_X_add_C_coeff + theorem multiset.prod_X_add_C_coeff' 2022-09-19 13:33:53 d742555 feat(topology/instances/ennreal): diameter of intervals (#16556) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem real.diam_Icc + theorem real.diam_Ico + theorem real.diam_Ioc + theorem real.diam_Ioo 2022-09-19 11:49:37 3f498b0 chore(analysis,topology): replace `noncomputable theory` with `noncomputable` (#16552) The purpose of this change is to make it easier to parse the diff of a future PR that makes a significant fraction of these definitions computable. ESTIMATED CHANGES Modified src/analysis/normed/field/basic.lean Modified src/topology/instances/rat.lean 2022-09-19 09:57:53 dcf3c6b feat(group_theory/commutator): Add `commutator_element_self` (#16437) This PR adds `commutator_element_self`, similar to `commutator_element_one_left` and `commutator_element_one_right`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean + theorem commutator_element_self 2022-09-19 07:18:19 499ab57 refactor(topology/constructions): golf, add `@[simp]`/`iff` variants (#16539) ESTIMATED CHANGES Modified src/topology/constructions.lean +/- theorem continuous.sum_map + theorem continuous_sum_elim + theorem continuous_sum_map +/- theorem embedding_inl +/- theorem embedding_inr + theorem is_open_map.sum_elim + theorem is_open_map_inl + theorem is_open_map_inr +/- theorem is_open_map_sum + theorem is_open_map_sum_elim +/- theorem is_open_range_inl +/- theorem is_open_range_inr + theorem nhds_inl + theorem nhds_inr +/- theorem open_embedding_inl +/- theorem open_embedding_inr Modified src/topology/homeomorph.lean 2022-09-19 07:18:17 77fa4dc feat(data/set/intervals/ord_connected): lemmas about `order_dual` etc (#16534) * add `dual_interval`; * add `ord_connected_preimage` for an `order_hom_class`, use it to golf `ord_connected_image`; * add `dual_ord_connected_iff` and `dual_ord_connected`; * one implication from `ord_connected_iff_interval_subset_left` doesn't need `(hx : x ∈ s)`. ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean + theorem set.dual_ord_connected + theorem set.dual_ord_connected_iff + theorem set.ord_connected_of_interval_subset_left + theorem set.ord_connected_preimage Modified src/data/set/intervals/unordered_interval.lean + theorem set.dual_interval 2022-09-19 07:18:14 7cfeb2f feat(data/real/cau_seq): define sup and inf (#16494) Showing that these coincide with the max and min (respectively) of `real` is left to a follow-up PR. Note that these do not form a `distrib_lattice` as `cau_seq` does not form a `partial_order`. ESTIMATED CHANGES Modified src/data/real/cau_seq.lean + theorem cau_seq.coe_inf + theorem cau_seq.coe_sup + theorem cau_seq.inf_equiv_inf + theorem cau_seq.inf_lim_zero + theorem cau_seq.sup_equiv_sup + theorem cau_seq.sup_lim_zero + theorem rat_inf_continuous_lemma + theorem rat_sup_continuous_lemma 2022-09-19 07:18:13 e3fac0b refactor(topology/uniform_space/separated): drop `is_separated` (#16458) This predicate is no longer used outside of this file. If we'll need it in the future, then we can redefine it for any topological space in terms of `inseparable`. Also rename `topology.uniform_space.compact_separated` to `topology.uniform_space.compact`. ESTIMATED CHANGES Modified src/analysis/box_integral/basic.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/continuous_function/compact.lean Renamed src/topology/uniform_space/compact_separated.lean to src/topology/uniform_space/compact.lean Modified src/topology/uniform_space/separation.lean + theorem eq_of_cluster_pt_uniformity - theorem eq_of_uniformity_inf_nhds - theorem eq_of_uniformity_inf_nhds_of_is_separated - theorem is_separated.eq_of_uniform_continuous - theorem is_separated.mono - theorem is_separated.prod - def is_separated - theorem is_separated_def' - theorem is_separated_def - theorem is_separated_iff_induced - theorem is_separated_of_separated_space - theorem univ_separated_iff 2022-09-19 07:18:11 85c08a6 feat(algebra/order/ring): `linear_ordered_comm_semiring` (#16456) Add `linear_ordered_comm_semiring`, a typeclass that was missing from the algebraic order hierarchy for some reason and which acquired a few possible uses over time. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/order/field_defs.lean Modified src/algebra/order/positive/ring.lean Modified src/algebra/order/ring.lean + def function.injective.linear_ordered_comm_semiring Modified src/combinatorics/pigeonhole.lean Modified src/data/nat/basic.lean Modified src/ring_theory/subsemiring/basic.lean 2022-09-19 07:18:10 bb05277 refactor(topology/algebra/with_zero_topology): review API, golf (#16359) * use `γ ≠ 0` instead of `units`; * deduplicate, golf ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean Modified src/topology/algebra/valued_field.lean Modified src/topology/algebra/with_zero_topology.lean + theorem linear_ordered_comm_group_with_zero.Iio_mem_nhds + theorem linear_ordered_comm_group_with_zero.Iio_mem_nhds_zero - theorem linear_ordered_comm_group_with_zero.directed_lt +/- theorem linear_ordered_comm_group_with_zero.has_basis_nhds_zero + theorem linear_ordered_comm_group_with_zero.is_closed_iff + theorem linear_ordered_comm_group_with_zero.is_open_Iio + theorem linear_ordered_comm_group_with_zero.is_open_iff +/- theorem linear_ordered_comm_group_with_zero.nhds_coe_units + theorem linear_ordered_comm_group_with_zero.nhds_eq_update - def linear_ordered_comm_group_with_zero.nhds_fun - theorem linear_ordered_comm_group_with_zero.nhds_fun_ok +/- theorem linear_ordered_comm_group_with_zero.nhds_of_ne_zero + theorem linear_ordered_comm_group_with_zero.nhds_zero - theorem linear_ordered_comm_group_with_zero.nhds_zero_of_ne_zero +/- theorem linear_ordered_comm_group_with_zero.nhds_zero_of_units - theorem linear_ordered_comm_group_with_zero.pure_le_nhds_fun +/- theorem linear_ordered_comm_group_with_zero.singleton_mem_nhds_of_ne_zero + theorem linear_ordered_comm_group_with_zero.singleton_mem_nhds_of_units - theorem linear_ordered_comm_group_with_zero.singleton_nhds_of_ne_zero - theorem linear_ordered_comm_group_with_zero.singleton_nhds_of_units +/- theorem linear_ordered_comm_group_with_zero.tendsto_of_ne_zero +/- theorem linear_ordered_comm_group_with_zero.tendsto_units +/- theorem linear_ordered_comm_group_with_zero.tendsto_zero Modified src/topology/order.lean + theorem topological_space.nhds_mk_of_nhds_single Modified src/topology/separation.lean + theorem t3_space.of_lift'_closure 2022-09-19 07:18:09 d673baf feat(topology/algebra/ordered): add lemmas, golf (#16343) * add lemmas about `nhds_within_Ici`/`nhds_within_Iic`; * move `order_separated` and `order_topology.to_order_closed_topology` up; * use new lemmas to golf some proofs. ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean + theorem exists_Icc_mem_subset_of_mem_nhds + theorem exists_Icc_mem_subset_of_mem_nhds_within_Ici + theorem exists_Icc_mem_subset_of_mem_nhds_within_Iic + theorem nhds_within_Ici_basis' + theorem nhds_within_Ici_basis + theorem nhds_within_Ici_eq'' + theorem nhds_within_Ici_eq' + theorem nhds_within_Iic_basis' + theorem nhds_within_Iic_basis + theorem nhds_within_Iic_eq'' + theorem nhds_within_Iic_eq' - theorem order_topology.t2_space 2022-09-19 05:48:18 f59c26d feat(analysis/complex/poincare_metric): new file (#14703) Introduce a `metric_space` structure on the upper half plane. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/basic.lean + theorem upper_half_plane.coe_pos_real_smul + theorem upper_half_plane.coe_vadd + theorem upper_half_plane.pos_real_im + theorem upper_half_plane.pos_real_re + theorem upper_half_plane.vadd_im + theorem upper_half_plane.vadd_re Added src/analysis/complex/upper_half_plane/metric.lean + def upper_half_plane.center + theorem upper_half_plane.center_im + theorem upper_half_plane.center_re + theorem upper_half_plane.center_zero + theorem upper_half_plane.cmp_dist_eq_cmp_dist_coe_center + theorem upper_half_plane.cosh_dist' + theorem upper_half_plane.cosh_dist + theorem upper_half_plane.cosh_half_dist + theorem upper_half_plane.dist_center_dist + theorem upper_half_plane.dist_coe_center + theorem upper_half_plane.dist_coe_center_sq + theorem upper_half_plane.dist_coe_le + theorem upper_half_plane.dist_eq + theorem upper_half_plane.dist_eq_iff_dist_coe_center_eq + theorem upper_half_plane.dist_eq_iff_eq_sinh + theorem upper_half_plane.dist_eq_iff_eq_sq_sinh + theorem upper_half_plane.dist_le_dist_coe_div_sqrt + theorem upper_half_plane.dist_le_iff_dist_coe_center_le + theorem upper_half_plane.dist_le_iff_le_sinh + theorem upper_half_plane.dist_log_im_le + theorem upper_half_plane.dist_lt_iff_dist_coe_center_lt + theorem upper_half_plane.dist_of_re_eq + theorem upper_half_plane.dist_self_center + theorem upper_half_plane.exp_half_dist + theorem upper_half_plane.im_div_exp_dist_le + theorem upper_half_plane.im_le_im_mul_exp_dist + theorem upper_half_plane.im_pos_of_dist_center_le + theorem upper_half_plane.image_coe_ball + theorem upper_half_plane.image_coe_closed_ball + theorem upper_half_plane.image_coe_sphere + theorem upper_half_plane.isometry_pos_mul + theorem upper_half_plane.isometry_real_vadd + theorem upper_half_plane.isometry_vertical_line + theorem upper_half_plane.le_dist_coe + theorem upper_half_plane.le_dist_iff_le_dist_coe_center + theorem upper_half_plane.lt_dist_iff_lt_dist_coe_center + def upper_half_plane.metric_space_aux + theorem upper_half_plane.sinh_half_dist + theorem upper_half_plane.sinh_half_dist_add_dist + theorem upper_half_plane.tanh_half_dist Modified src/topology/metric_space/basic.lean + theorem continuous_iff_continuous_dist 2022-09-19 03:33:51 0889997 feat(group_theory/coset): Add `quotient_equiv_of_eq` (#16439) This PR adds `quotient_equiv_of_eq` and renames `equiv_quotient_of_eq` to `quotient_mul_equiv_of_eq`. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean Modified src/group_theory/coset.lean + def subgroup.quotient_equiv_of_eq + theorem subgroup.quotient_equiv_of_eq_mk Modified src/group_theory/quotient_group.lean - def quotient_group.equiv_quotient_of_eq - theorem quotient_group.equiv_quotient_of_eq_mk + def quotient_group.quotient_mul_equiv_of_eq + theorem quotient_group.quotient_mul_equiv_of_eq_mk Modified src/ring_theory/valuation/valuation_subring.lean 2022-09-19 02:22:47 7ec8f8a feat(analysis/inner_product_space/basic): `ext_inner_map` (#16388) Equality of operators by equality of inner products. An easy corollary of `inner_map_self_eq_zero`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem ext_inner_map 2022-09-19 00:39:06 489bc58 feat(topology/homeomorph): add `homeomorph.Pi_congr_right` (#16527) ESTIMATED CHANGES Modified src/topology/homeomorph.lean + def homeomorph.Pi_congr_right + theorem homeomorph.Pi_congr_right_symm 2022-09-18 22:14:10 b4502fd feat(topology): is_open and is_closed in term of ∀ᶠ and ∃ᶠ (#16545) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem is_closed_iff_frequently + theorem is_open_iff_eventually 2022-09-18 13:45:12 8c9342f feat(probability/martingale/borel_cantelli): Lévy's generalized Borel-Cantelli (#16358) This PR proves the one sided martingale bound and uses it to prove the Lévy's generalized Borel-Cantelli lemma. With the generalized Borel-Cantelli, the still missing second Borel-Cantelli lemma follows by choosing an appropriate filtration. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation/real.lean + theorem measure_theory.ae_bdd_condexp_of_ae_bdd + theorem measure_theory.integral_abs_condexp_le + theorem measure_theory.set_integral_abs_condexp_le Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.snorm_one_le_of_le' + theorem measure_theory.snorm_one_le_of_le Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.set_integral_gt_gt Modified src/probability/martingale/basic.lean + theorem measure_theory.martingale_const_fun Added src/probability/martingale/borel_cantelli.lean + theorem measure_theory.adapted.is_stopping_time_least_ge + theorem measure_theory.ae_mem_limsup_at_top_iff + theorem measure_theory.borel_cantelli.adapted_process + theorem measure_theory.borel_cantelli.integrable_process + theorem measure_theory.borel_cantelli.martingale_part_process_ae_eq + theorem measure_theory.borel_cantelli.predictable_part_process_ae_eq + def measure_theory.borel_cantelli.process + theorem measure_theory.borel_cantelli.process_difference_le + theorem measure_theory.borel_cantelli.process_zero + def measure_theory.least_ge + theorem measure_theory.least_ge_eq_min + theorem measure_theory.least_ge_le + theorem measure_theory.least_ge_mono + theorem measure_theory.martingale.ae_not_tendsto_at_top_at_bot + theorem measure_theory.martingale.ae_not_tendsto_at_top_at_top + theorem measure_theory.martingale.bdd_above_range_iff_bdd_below_range + theorem measure_theory.norm_stopped_value_least_ge_le + theorem measure_theory.stopped_value_stopped_value_least_ge + theorem measure_theory.submartingale.bdd_above_iff_exists_tendsto + theorem measure_theory.submartingale.bdd_above_iff_exists_tendsto_aux + theorem measure_theory.submartingale.exists_tendsto_of_abs_bdd_above_aux + theorem measure_theory.submartingale.stopped_value_least_ge + theorem measure_theory.submartingale.stopped_value_least_ge_snorm_le' + theorem measure_theory.submartingale.stopped_value_least_ge_snorm_le + theorem measure_theory.tendsto_sum_indicator_at_top_iff' + theorem measure_theory.tendsto_sum_indicator_at_top_iff Modified src/probability/martingale/centering.lean +/- theorem measure_theory.martingale_part_add_predictable_part + theorem measure_theory.martingale_part_bdd_difference + theorem measure_theory.predictable_part_bdd_difference Modified src/topology/algebra/order/liminf_limsup.lean + theorem bdd_above_range_of_tendsto_at_top_at_bot + theorem bdd_below_range_of_tendsto_at_top_at_top + theorem filter.tendsto.is_bounded_under_ge_at_top + theorem filter.tendsto.is_bounded_under_le_at_bot + theorem is_bounded_ge_at_top + theorem is_bounded_le_at_bot + theorem limsup_eq_tendsto_sum_indicator_at_top + theorem limsup_eq_tendsto_sum_indicator_nat_at_top 2022-09-18 11:24:05 827a83e feat(archive/birthday): improve birthday problem (#16528) This adds a measure-theoretic interpretation of the birthday problem; not yet the one with independent uniform random variables, but some form of a step in that direction. It also removes a misleading statement from the YAML to make it clearer that `card_embedding_eq` is not all the work done on the Birthday problem on mathlib. cc @digama0 ESTIMATED CHANGES Modified archive/100-theorems-list/93_birthday_problem.lean + theorem birthday_measure + theorem fin_fin.measure_apply Modified docs/100.yaml Modified src/data/set/finite.lean + theorem set.finite_univ_to_finset Modified src/measure_theory/measure/measure_space.lean Modified src/probability/cond_count.lean + theorem probability_theory.cond_count_of_univ +/- theorem probability_theory.cond_count_univ 2022-09-18 10:17:08 7e74869 doc(number_theory/legendre_symbol/jacobi_symbol): remove now spurious reference to 'subscript J' (#16541) This PR just fixes the docstring for the notation. The reference to "no subscript J in unicode" doesn't make sense anymore after the notation was changed to `J(a | b)`. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/jacobi_symbol.lean 2022-09-18 07:54:17 1dc531a feat(measure_theory/integral): finiteness of lower Lebesgue integral (#16514) This PR proves that if a function is integrable and non-negative, then it's lower Lebesgue integral is finite. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/integral/integrable_on.lean + theorem measure_theory.integrable.lintegral_lt_top + theorem measure_theory.integrable_on.set_lintegral_lt_top Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_nnnorm_eq_of_ae_nonneg + theorem measure_theory.lintegral_nnnorm_eq_of_nonneg + theorem measure_theory.lintegral_to_real_le_lintegral_nnnorm 2022-09-17 23:24:12 ba584a4 chore(topology/constructions): deduplicate (#16505) * rename `mem_closure_of_continuous` to `set.maps_to.closure_left`, move near `map_mem_closure`; * merge `map_mem_closure2` and `mem_closure_of_continuous2` into `map_mem_closure₂`; * fix&golf some proofs broken by these changes. ESTIMATED CHANGES Modified src/analysis/convex/topology.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/basic.lean + theorem set.maps_to.closure_left Modified src/topology/constructions.lean - theorem map_mem_closure2 + theorem map_mem_closure₂ - theorem mem_closure_of_continuous2 - theorem mem_closure_of_continuous Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean 2022-09-17 18:12:10 f8dfe81 chore(algebra/order/nonneg): add a `distrib_lattice` instance (#16493) ESTIMATED CHANGES Modified src/algebra/order/nonneg.lean Modified src/order/lattice_intervals.lean 2022-09-17 18:12:09 57bbd9e chore(order/symm_diff): Generalize to co-Heyting algebras (#16282) Generalize the `symm_diff` material from `(generalized_)boolean_algebra` to `(generalized_)coheyting_algebra`. ESTIMATED CHANGES Modified src/data/dfinsupp/interval.lean Modified src/data/finset/basic.lean + theorem finset.coe_symm_diff + theorem finset.mem_symm_diff Modified src/data/set/basic.lean + theorem set.inter_symm_diff_distrib_left + theorem set.inter_symm_diff_distrib_right + theorem set.le_iff_subset + theorem set.lt_iff_ssubset + theorem set.mem_symm_diff + theorem set.symm_diff_subset_union Modified src/measure_theory/decomposition/jordan.lean Modified src/order/symm_diff.lean +/- theorem compl_symm_diff_self + theorem hnot_symm_diff_self + theorem inf_sup_symm_diff +/- theorem is_compl.symm_diff_eq_top + theorem sdiff_symm_diff_eq_sup +/- def symm_diff +/- theorem symm_diff_compl_self +/- theorem symm_diff_def +/- theorem symm_diff_eq_iff_sdiff_eq +/- theorem symm_diff_eq_sup_sdiff_inf + theorem symm_diff_hnot_self + theorem symm_diff_le + theorem symm_diff_le_iff +/- theorem symm_diff_le_sup + theorem symm_diff_of_ge + theorem symm_diff_of_le +/- theorem symm_diff_sdiff + theorem symm_diff_sdiff_eq_sup + theorem symm_diff_sdiff_inf + theorem symm_diff_sup_inf + theorem symm_diff_top' +/- theorem symm_diff_top + theorem top_symm_diff' +/- theorem top_symm_diff 2022-09-17 16:29:31 f7e477f feat(topology/separation): define `T₅` spaces (#16533) I'm going to prove that any `order_topology` is a `t5_space` in a follow-up PR. This will imply that any set in an `order_topology` is a normal space. ESTIMATED CHANGES Modified counterexamples/sorgenfrey_line.lean Modified src/topology/maps.lean + theorem inducing.nhds_set_eq_comap Modified src/topology/nhds_set.lean + theorem bUnion_mem_nhds_set Modified src/topology/separation.lean + theorem embedding.t5_space + theorem separated_iff_disjoint 2022-09-17 14:47:01 0ff46b9 doc(order/filter/basic): fix notations in doc of filter.comap (#16530) The notations in the doc of ```filter.comap``` did not match the notations used in the lemma and thus were a bit confusing (at least for me). ESTIMATED CHANGES Modified src/order/filter/basic.lean 2022-09-17 09:00:18 a4f6c41 move(algebra/field_power): Put lemmas in the correct place (#16465) `algebra.field_power` is only made of lemmas that belong elsewhere. Move them and delete the file. Golf proofs while we're at it and make `min_le_of_zpow_le_max` an iff. ESTIMATED CHANGES Modified src/algebra/field/basic.lean + theorem zpow_bit1_neg Deleted src/algebra/field_power.lean - theorem div_pow_le - theorem min_le_of_zpow_le_max - theorem nat.zpow_ne_zero_of_pos - theorem one_le_zpow_of_nonneg - theorem one_lt_zpow - theorem pos_div_pow_pos - theorem pow_le_max_of_min_le - theorem rat.cast_zpow - theorem zpow_bit0_nonneg - theorem zpow_bit0_pos - theorem zpow_bit1_neg - theorem zpow_bit1_neg_iff - theorem zpow_bit1_nonneg_iff - theorem zpow_bit1_nonpos_iff - theorem zpow_bit1_pos_iff - theorem zpow_inj - theorem zpow_injective - theorem zpow_le_iff_le - theorem zpow_le_of_le - theorem zpow_le_one_of_nonpos - theorem zpow_lt_iff_lt - theorem zpow_nonneg - theorem zpow_pos_of_pos - theorem zpow_strict_anti - theorem zpow_strict_mono - theorem zpow_two_nonneg - theorem zpow_two_pos_of_ne_zero Modified src/algebra/group_power/order.lean +/- theorem pow_lt_pow_of_lt_left +/- theorem strict_mono_on_pow Modified src/algebra/order/archimedean.lean Modified src/algebra/order/field.lean + theorem div_pow_le + theorem nat.zpow_ne_zero_of_pos + theorem one_le_zpow_of_nonneg + theorem one_lt_zpow + theorem zpow_bit0_nonneg + theorem zpow_bit0_pos + theorem zpow_bit1_neg_iff + theorem zpow_bit1_nonneg_iff + theorem zpow_bit1_nonpos_iff + theorem zpow_bit1_pos_iff + theorem zpow_inj + theorem zpow_injective + theorem zpow_le_iff_le + theorem zpow_le_max_iff_min_le + theorem zpow_le_max_of_min_le + theorem zpow_le_of_le + theorem zpow_le_one_of_nonpos + theorem zpow_lt_iff_lt + theorem zpow_nonneg + theorem zpow_pos_of_pos + theorem zpow_strict_anti + theorem zpow_strict_mono + theorem zpow_two_nonneg + theorem zpow_two_pos_of_ne_zero Modified src/algebra/order/positive/field.lean Modified src/algebra/parity.lean Modified src/algebra/star/basic.lean Modified src/analysis/hofer.lean + theorem pos_div_pow_pos Modified src/data/int/log.lean Modified src/data/rat/cast.lean + theorem rat.cast_zpow Modified src/number_theory/frobenius_number.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/number_theory/padics/padic_val.lean Modified src/topology/metric_space/pi_nat.lean 2022-09-17 06:13:12 86a1467 docs(data/list/defs): fix `list.dedup` docstring (#16535) ESTIMATED CHANGES Modified src/data/list/defs.lean 2022-09-16 22:29:26 1e22525 feat(number_theory): Dedekind-Kummer theorem (#15000) It's PR #15000! The Kummer-Dedekind theorem on the splitting of ideals in monogenic ring extensions. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2315000.3A.20the.20Kummer-Dedekind.20theorem) Co-Authored-By: Paul Lezeau ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.attach_count_eq_count_coe + theorem multiset.attach_map_coe Added src/number_theory/kummer_dedekind.lean + theorem kummer_dedekind.ideal.irreducible_map_of_irreducible_minpoly + theorem kummer_dedekind.multiplicity_factors_map_eq_multiplicity + theorem kummer_dedekind.normalized_factors_ideal_map_eq_normalized_factors_min_poly_mk_map Modified src/ring_theory/ideal/operations.lean + theorem ideal.map_eq_bot_iff_of_injective 2022-09-16 19:44:02 e763499 chore(algebra/order/monoid_lemmas_zero_lt): remove redundant assumptions (#16524) The third part of #16449 ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean +/- theorem mul_pos_mono_iff_mul_pos_reflect_lt +/- theorem mul_pos_reflect_lt.to_mul_pos_mono +/- theorem pos_mul_mono_iff_pos_mul_reflect_lt +/- theorem pos_mul_reflect_lt.to_pos_mul_mono 2022-09-16 15:31:11 7a9e6ca doc(category/abelian/ext): update module doc (#16512) Update future work described in module doc, to reflect previous contributions to mathlib. ESTIMATED CHANGES Modified src/category_theory/abelian/ext.lean 2022-09-16 14:24:33 8922aaa feat(number_theory/legendre_symbol/norm_num): add file with `norm_num` extension for the Jacobi symbol (#16519) This PR adds the file `number_theory.legendre_symbol.norm_num`, which provides an extension to the `norm_num` tactic, so that it can compute the value of a Jacobi (or Legendre) symbol when the entries are concrete numbers. See this [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Jacobi.20symbol/near/298768851) for discussion. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/jacobi_symbol.lean Added src/number_theory/legendre_symbol/norm_num.lean + theorem norm_num.jacobi_sym.mod_left + theorem norm_num.jacobi_sym_nat.double_even + theorem norm_num.jacobi_sym_nat.even_even + theorem norm_num.jacobi_sym_nat.even_odd₁ + theorem norm_num.jacobi_sym_nat.even_odd₃ + theorem norm_num.jacobi_sym_nat.even_odd₅ + theorem norm_num.jacobi_sym_nat.even_odd₇ + theorem norm_num.jacobi_sym_nat.mod_left + theorem norm_num.jacobi_sym_nat.odd_even + theorem norm_num.jacobi_sym_nat.one_left_even + theorem norm_num.jacobi_sym_nat.one_left_odd + theorem norm_num.jacobi_sym_nat.one_right + theorem norm_num.jacobi_sym_nat.qr₁' + theorem norm_num.jacobi_sym_nat.qr₁'_mod + theorem norm_num.jacobi_sym_nat.qr₁ + theorem norm_num.jacobi_sym_nat.qr₁_mod + theorem norm_num.jacobi_sym_nat.qr₃ + theorem norm_num.jacobi_sym_nat.qr₃_mod + theorem norm_num.jacobi_sym_nat.zero_left_even + theorem norm_num.jacobi_sym_nat.zero_left_odd + theorem norm_num.jacobi_sym_nat.zero_right + def norm_num.jacobi_sym_nat + theorem norm_num.legendre_sym.to_jacobi_sym Modified test/norm_num_ext.lean 2022-09-16 13:03:05 894c8c2 refactor(number_theory/padics/padic_val): make prime implicit (#15221) Make the variable denoting the prime in theorems related to `padic_val_nat`, `padic_val_int`, `padic_val_rat`, and `padic_norm` implicit, since they seem to be redundant and inferable in all use cases, but the variable in their definitions remain explicit. ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean +/- theorem padic_int.norm_int_le_pow_iff_dvd +/- theorem padic_int.norm_int_lt_one_iff_dvd Modified src/number_theory/padics/padic_norm.lean +/- theorem padic_norm.dvd_iff_norm_le +/- theorem padic_norm.of_nat +/- theorem padic_norm.padic_norm_of_prime_of_ne +/- theorem padic_norm.padic_norm_p +/- theorem padic_norm.padic_norm_p_lt_one +/- theorem padic_norm.padic_norm_p_lt_one_of_prime +/- theorem padic_norm.padic_norm_p_of_prime +/- theorem padic_norm.sum_le' +/- theorem padic_norm.sum_lt' Modified src/number_theory/padics/padic_numbers.lean +/- theorem padic_norm_e.norm_int_le_pow_iff_dvd Modified src/number_theory/padics/padic_val.lean +/- theorem dvd_of_one_le_padic_val_nat +/- theorem one_le_padic_val_nat_of_dvd +/- theorem padic_val_int.mul +/- theorem padic_val_int_dvd +/- theorem padic_val_int_dvd_iff +/- theorem padic_val_int_mul_eq_succ +/- theorem padic_val_int_self +/- theorem padic_val_nat_def' +/- theorem padic_val_nat_def +/- theorem padic_val_nat_dvd_iff +/- theorem padic_val_nat_primes +/- theorem padic_val_nat_self +/- theorem padic_val_rat.finite_int_prime_iff +/- theorem padic_val_rat.multiplicity_sub_multiplicity +/- theorem padic_val_rat.of_int +/- theorem padic_val_rat.of_int_multiplicity +/- theorem padic_val_rat.of_nat +/- theorem padic_val_rat_of_nat +/- theorem range_pow_padic_val_nat_subset_divisors' +/- theorem zero_le_padic_val_rat_of_nat Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2022-09-16 12:10:58 d46774d feat(linear_algebra/clifford_algebra/basic): lemmas about triple products of repeated vectors (#16153) ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean + theorem clifford_algebra.inv_of_ι_mul_ι_mul_ι + theorem clifford_algebra.ι_mul_comm + theorem clifford_algebra.ι_mul_ι_mul_inv_of_ι + theorem clifford_algebra.ι_mul_ι_mul_ι 2022-09-16 12:10:57 fc35e1e feat(archive/100-theorems-list): Stirling, part 2 (#14875) feat(archive/100-theorems-list): Stirling Part 2 - [x] depends on: #14874 [part 1] ESTIMATED CHANGES Modified docs/100.yaml Modified src/analysis/special_functions/stirling.lean - theorem log_stirling_seq'_antitone - theorem log_stirling_seq_bounded_aux - theorem log_stirling_seq_bounded_by_constant - theorem log_stirling_seq_diff_has_sum - theorem log_stirling_seq_diff_le_geo_sum - theorem log_stirling_seq_formula - theorem log_stirling_seq_sub_log_stirling_seq_succ + theorem stirling.log_stirling_seq'_antitone + theorem stirling.log_stirling_seq_bounded_aux + theorem stirling.log_stirling_seq_bounded_by_constant + theorem stirling.log_stirling_seq_diff_has_sum + theorem stirling.log_stirling_seq_diff_le_geo_sum + theorem stirling.log_stirling_seq_formula + theorem stirling.log_stirling_seq_sub_log_stirling_seq_succ + theorem stirling.second_wallis_limit + theorem stirling.stirling_seq'_antitone + theorem stirling.stirling_seq'_bounded_by_pos_constant + theorem stirling.stirling_seq'_pos + theorem stirling.stirling_seq_has_pos_limit_a + theorem stirling.stirling_seq_one + theorem stirling.stirling_seq_pow_four_div_stirling_seq_pow_two_eq + theorem stirling.stirling_seq_zero + theorem stirling.tendsto_self_div_two_mul_self_add_one + theorem stirling.tendsto_stirling_seq_sqrt_pi + theorem stirling.tendsto_w_at_top: - theorem stirling_seq'_antitone - theorem stirling_seq'_bounded_by_pos_constant - theorem stirling_seq'_pos - theorem stirling_seq_has_pos_limit_a - theorem stirling_seq_one - theorem stirling_seq_zero 2022-09-16 10:27:29 104f141 feat(combinatorics/simple_graph/prod): add `locally_finite` instance for the box product of `locally_finite` graphs, plus two related lemmas (#16431) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/prod.lean + theorem simple_graph.box_prod_degree + theorem simple_graph.box_prod_neighbor_set 2022-09-16 10:27:28 a5b382d feat(linear_algebra/symplectic_group): add definition of symplectic group (#15513) This PR defines the symplectic group over arbitrary ring (with characteristic not 2) It also moves the definition of the `symplectic.J` into the new `linear_algebra/symplectic_group` file, and adds a lemma `from_blocks_neg` to `data/matrix/block`. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean - def lie_algebra.symplectic.J Modified src/data/matrix/block.lean + theorem matrix.from_blocks_neg Added src/linear_algebra/symplectic_group.lean + def matrix.J + theorem matrix.J_det_mul_J_det + theorem matrix.J_inv + theorem matrix.J_squared + theorem matrix.J_transpose + theorem matrix.is_unit_det_J + def matrix.symplectic_group + theorem symplectic_group.J_mem + theorem symplectic_group.coe_J + theorem symplectic_group.coe_inv' + theorem symplectic_group.coe_inv + theorem symplectic_group.inv_eq_symplectic_inv + theorem symplectic_group.inv_left_mul_aux + theorem symplectic_group.mem_iff' + theorem symplectic_group.mem_iff + theorem symplectic_group.neg_mem + def symplectic_group.sym_J + theorem symplectic_group.symplectic_det + theorem symplectic_group.transpose_mem + theorem symplectic_group.transpose_mem_iff 2022-09-16 07:49:46 69be6fe fix(tactic/monotonicity/interactive): fix the order of calling `unify_with_instance` (#16480) [Zulip](https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/.60apply_instance.60.20fails.20to.20infer.20instance.3F) ESTIMATED CHANGES Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/monotonicity/lemmas.lean Modified test/monotonicity.lean 2022-09-16 05:29:21 f1397dc feat(analysis/normed_space/star/gelfand_duality): Show the Gelfand transform is a bijective isometry for C⋆-algebras over ℂ (#16488) - [x] depends on: #16451 - [x] depends on: #16438 - [x] depends on: #16368 - [x] depends on: #16303 - [x] depends on: #16446 - [x] depends on: #16448 ESTIMATED CHANGES Modified src/analysis/normed_space/spectrum.lean + def weak_dual.character_space.equiv_alg_hom + theorem weak_dual.character_space.equiv_alg_hom_coe + theorem weak_dual.character_space.equiv_alg_hom_symm_coe Added src/analysis/normed_space/star/gelfand_duality.lean + theorem gelfand_transform_bijective + theorem gelfand_transform_isometry + theorem ideal.to_character_space_apply_eq_zero_of_mem + theorem spectrum.gelfand_transform_eq + theorem weak_dual.character_space.exists_apply_eq_zero Modified src/ring_theory/ideal/basic.lean + theorem ideal.span_singleton_ne_top Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/compact.lean 2022-09-15 21:54:34 97befb8 feat(analysis/normed/ring/seminorm): add ring_seminorm, ring_norm (#14115) We define structures `ring_seminorm` and `ring_norm`. These definitions are useful when one needs to consider multiple (semi)norms on a given ring. ESTIMATED CHANGES Modified docs/references.bib Modified src/analysis/normed/group/basic.lean + theorem coe_norm_add_group_norm + def norm_add_group_norm Modified src/analysis/normed/group/seminorm.lean + theorem group_norm.to_fun_eq_coe + theorem group_seminorm.to_fun_eq_coe Added src/analysis/normed/ring/seminorm.lean + def norm_ring_norm + def norm_ring_seminorm + theorem ring_norm.apply_one + theorem ring_norm.ext + theorem ring_norm.to_fun_eq_coe + structure ring_norm + theorem ring_seminorm.apply_one + theorem ring_seminorm.eq_zero_iff + theorem ring_seminorm.ext + theorem ring_seminorm.ne_zero_iff + theorem ring_seminorm.seminorm_one_eq_one_iff_ne_zero + theorem ring_seminorm.to_fun_eq_coe + def ring_seminorm.to_ring_norm + structure ring_seminorm 2022-09-15 15:17:12 3077b72 feat(analysis/normed/group/quotient): transfer norm structures on quotients of groups to quotients of modules by submodules and of rings by ideals (#16446) This takes the existing norm structures on quotients of additive groups and transfers it along the definitional equality to quotients of modules by submodules and quotients of rings by ideals. In addition, this puts the extra norm structures on these objects where appropriate including `complete_space`, `normed_space`, `semi_normed_comm_ring`, `normed_comm_ring` and `normed_algebra`. - [x] depends on: #16368 ESTIMATED CHANGES Modified src/analysis/normed/group/quotient.lean + theorem ideal.quotient.norm_mk_le + theorem ideal.quotient.norm_mk_lt + theorem submodule.quotient.norm_mk_le + theorem submodule.quotient.norm_mk_lt 2022-09-15 11:57:46 5488223 feat(probabiliy/martingale): centering lemma (#16517) We provide the decomposition of an adapted and integrable stochastic process into a predictable part and a martingale part. ESTIMATED CHANGES Added src/probability/martingale/centering.lean + theorem measure_theory.adapted_martingale_part + theorem measure_theory.adapted_predictable_part' + theorem measure_theory.adapted_predictable_part + theorem measure_theory.integrable_martingale_part + theorem measure_theory.martingale_martingale_part + def measure_theory.martingale_part + theorem measure_theory.martingale_part_add_predictable_part + theorem measure_theory.martingale_part_eq_sum + def measure_theory.predictable_part + theorem measure_theory.predictable_part_zero Modified src/probability/stopping.lean + theorem measure_theory.adapted.div 2022-09-15 11:57:44 2178a7f feat(ring_theory/{ideal/basic, adjoin_root): some lemmas from #15000 (#16450) This PR contains some lemmas that were originally in #15000. The main result that is proven here is `quotient_equiv_quotient_minpoly_map`, which says that if `α` has minimal polynomial `f` over `R` and `I` is an ideal of `R`, then rings `R[α] / I[α]` and `(R/I)[X] / (f mod I)` are isomorphic as R-algebras. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.of_ring_equiv +/- theorem alg_equiv.refl_symm + theorem alg_equiv.symm_to_ring_equiv + theorem alg_equiv.to_ring_equiv_symm Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.quot_equiv_quot_map_apply_mk + theorem adjoin_root.quot_equiv_quot_map_symm_apply_mk + theorem power_basis.quotient_equiv_quotient_minpoly_map_apply_mk + theorem power_basis.quotient_equiv_quotient_minpoly_map_symm_apply_mk Modified src/ring_theory/ideal/operations.lean + theorem double_quot.quot_quot_equiv_comm_algebra_map + theorem double_quot.quot_quot_equiv_comm_mk_mk + theorem double_quot.quot_quot_equiv_quot_sup_quot_quot_algebra_map 2022-09-15 09:41:43 0f287f8 chore(topology/separation): move/add `simp` lemmas (#16470) * add `inseparable_iff_eq` and `inseparable_eq_eq`; * add `specializes_eq_eq`, move `@[simp]` from `specializes_iff_eq`; * golf `pure_le_nhds_iff` and `nhds_le_nhds_iff`. ESTIMATED CHANGES Modified src/topology/separation.lean + theorem inseparable_eq_eq + theorem inseparable_iff_eq + theorem specializes_eq_eq +/- theorem specializes_iff_eq 2022-09-15 09:41:42 400aa37 feat(data/polynomial/eval): add `map_{eq/ne}_zero_iff` (#16440) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean 2022-09-15 09:41:40 7afe23e feat(linear_algebra/affine_space/affine_subspace): more `mem_map` lemmas (#16378) Add two more lemmas about membership of an affine subspace given by `affine_subspace.map`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.mem_map_iff_mem_of_injective + theorem affine_subspace.mem_map_of_mem 2022-09-15 06:43:26 a0ae216 feat(field_theory/splitting_field): generalize `splits` for `comm_ring K` (#16405) The definition of `splits` has been slightly changed for this change. Hence 2 lemmas `splits_iff` and `splits.def` are added for the `field K` case. I guess it may be helpful if we are able to talk about something like `splits i (p : ℤ[X])`? ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/normal.lean Modified src/field_theory/splitting_field.lean + theorem polynomial.degree_eq_card_roots' +/- theorem polynomial.degree_eq_one_of_irreducible_of_splits + theorem polynomial.exists_root_of_splits' + theorem polynomial.map_root_of_splits' + theorem polynomial.nat_degree_eq_card_roots' + def polynomial.root_of_splits' + theorem polynomial.root_of_splits'_eq_root_of_splits + theorem polynomial.roots_ne_zero_of_splits' + theorem polynomial.splits.def +/- theorem polynomial.splits_C + theorem polynomial.splits_iff +/- theorem polynomial.splits_of_is_unit + theorem polynomial.splits_of_map_degree_eq_one + theorem polynomial.splits_of_map_eq_C +/- theorem polynomial.splits_of_splits_id + theorem polynomial.splits_of_splits_mul' +/- theorem polynomial.splits_zero 2022-09-15 04:20:53 53e5dd3 chore(category/limits/opposites): instances (#16511) Upgrade some lemmas to instances, per [zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/limits.20in.20opposite.20categories). ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/pullbacks.lean Modified src/category_theory/abelian/generator.lean Modified src/category_theory/abelian/opposite.lean Modified src/category_theory/generator.lean Modified src/category_theory/limits/opposites.lean - theorem category_theory.limits.has_coequalizers_opposite - theorem category_theory.limits.has_colimits_op_of_has_limits - theorem category_theory.limits.has_coproducts_opposite - theorem category_theory.limits.has_equalizers_opposite - theorem category_theory.limits.has_finite_colimits_opposite - theorem category_theory.limits.has_finite_coproducts_opposite - theorem category_theory.limits.has_finite_limits_opposite - theorem category_theory.limits.has_finite_products_opposite - theorem category_theory.limits.has_limits_op_of_has_colimits - theorem category_theory.limits.has_products_opposite - theorem category_theory.limits.has_pullbacks_opposite - theorem category_theory.limits.has_pushouts_opposite 2022-09-15 01:42:16 a489500 feat(data/sym/basic): add `fill_mem`, `append_mem` and supporting lemmas (#16486) Add lemmas for membership of fill and append, with supporting coercion and casting lemmas. ESTIMATED CHANGES Modified src/data/sym/basic.lean +/- def sym.append +/- theorem sym.append_comm +/- theorem sym.append_inj_left +/- theorem sym.append_inj_right +/- theorem sym.cast_cast + theorem sym.coe_append +/- theorem sym.coe_cast +/- def sym.filter_ne + theorem sym.mem_append_iff + theorem sym.mem_cast + theorem sym.mem_coe +/- theorem sym.mem_cons +/- theorem sym.mem_cons_of_mem + theorem sym.mem_fill_iff 2022-09-15 00:06:23 fd2fb7b feat(topology/unit_interval): add lemma add_pos (#16507) Add `lemma add_pos` stating that for every element of the unit interval and for every positive real number, their sum (as real number) is positive It is needed for #16029 defining H-spaces ESTIMATED CHANGES Modified src/topology/unit_interval.lean + theorem unit_interval.add_pos 2022-09-14 21:29:45 e702f02 feat(topology/algebra/module/character_space, analysis/normed_space/star/spectrum): define the Gelfand transform as an `alg_hom` (#16451) This defines the `gelfand_transform` as an algebra homomorphism from a `𝕜`-algebra `A` into the continuous functions from the `character_space 𝕜 A` into the base field `𝕜`, where the map is given by evaluation. For this definition it is only supposed that `𝕜` is a topological ring and `A` is a topological space. When the algebra `A` is a C⋆-algebra over `ℂ`, algebra homomorphisms of `A` into `ℂ` (hence also terms of `character_space ℂ A`) are automatically star-preserving. Therefore, in this setting the Gelfand transform may be upgraded to a `star_alg_hom`. However, we do not implement that here because, with more work, one may show that this is actually an equivalence. - [x] depends on: #16438 ESTIMATED CHANGES Modified src/analysis/normed_space/star/spectrum.lean Modified src/topology/algebra/module/character_space.lean + def weak_dual.gelfand_transform 2022-09-14 18:51:35 1afd6c7 docs(analysis/calculus/taylor): Latex fixes (#16508) Fixes backslash error and corrects one docstring. ESTIMATED CHANGES Modified src/analysis/calculus/taylor.lean 2022-09-14 18:51:34 660bde4 refactor(algebra/order/monoid_lemma_zero_lt): Use `{x : α // 0 ≤ α}` (#16447) `pos_mul_mono`/`mul_pos_mono` and `pos_mul_reflect_lt`/`mul_pos_reflect_lt` were stated as covariance/contravariance of `{x : α // 0 < α}` over `α` even though the extension to `{x : α // 0 ≤ α}` also holds. This meant that many lemmas were relying on antisymmetry only to treat the cases `a = 0` and `0 < a` separately, which made them need `partial_order` and depend on `classical.choice`. This prevented #16172 from actually removing the `decidable` lemma in `algebra.order.ring` after #16189 got merged. Further, #16189 did not actually get rid of the temporary `zero_lt` namespace, so name conflicts that arise were not fixed. Finally, `le_mul_of_one_le_left` and its seven friends were reproved inline about five time each. Hence in this PR we * restate `pos_mul_mono`, `mul_pos_mono`, `pos_mul_reflect_lt`, `mul_pos_reflect_lt` using `{x : α // 0 ≤ α}` * provide the (classical) equivalence with the previous definitions in a `partial_order`. * generalise lemmas from `partial_order` to `preorder`. * delete all lemmas in the `preorder` namespace as they are now fully generalized. This in essence reverts (parts of) #12961, #13296 and #13299. * replace most of the various `has_le`/`has_lt` assumptions by a blank `preorder` one, hence simplifying the file sectioning * remove the `zero_lt` namespace. * rename lemmas to fix name conflicts. * delete a few lemmas that were left in `algebra.order.ring`. * golf proofs involving `le_mul_of_one_le_left` and its seven friends. This is why the PR has a -450 lines diff. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem exists_square_le' + theorem le_mul_iff_one_le_left + theorem le_mul_iff_one_le_right + theorem le_mul_of_le_mul_of_nonneg_left + theorem le_mul_of_le_mul_of_nonneg_right + theorem le_mul_of_le_of_one_le' + theorem le_mul_of_le_of_one_le_of_nonneg + theorem le_mul_of_one_le_left + theorem le_mul_of_one_le_of_le_of_nonneg + theorem le_mul_of_one_le_right + theorem le_of_le_mul_of_le_one_of_nonneg_left + theorem le_of_le_mul_of_le_one_of_nonneg_right + theorem le_of_mul_le_mul_of_pos_left + theorem le_of_mul_le_mul_of_pos_right + theorem le_of_mul_le_of_one_le_nonneg_right + theorem le_of_mul_le_of_one_le_of_nonneg_left + theorem left.lt_mul_of_lt_of_one_le_of_nonneg + theorem left.mul_le_one_of_le_of_le + theorem left.mul_lt_of_le_of_lt_one_of_pos + theorem left.mul_lt_of_lt_of_le_one_of_nonneg + theorem left.mul_nonneg + theorem left.mul_pos + theorem left.neg_of_mul_neg_left + theorem left.neg_of_mul_neg_right + theorem left.one_le_mul_of_le_of_le + theorem left.one_lt_mul_of_le_of_lt_of_pos + theorem lt_mul_iff_one_lt_left + theorem lt_mul_iff_one_lt_right + theorem lt_mul_of_le_of_one_lt' + theorem lt_mul_of_le_of_one_lt_of_pos + theorem lt_mul_of_lt_mul_of_nonneg_left + theorem lt_mul_of_lt_mul_of_nonneg_right + theorem lt_mul_of_lt_of_one_le' + theorem lt_mul_of_lt_of_one_le_of_nonneg + theorem lt_mul_of_lt_of_one_lt_of_pos + theorem lt_mul_of_one_le_of_lt_of_nonneg + theorem lt_mul_of_one_lt_left + theorem lt_mul_of_one_lt_of_le_of_pos + theorem lt_mul_of_one_lt_of_lt_of_nonneg + theorem lt_mul_of_one_lt_of_lt_of_pos + theorem lt_mul_of_one_lt_right + theorem lt_of_lt_mul_of_le_one_of_nonneg_left + theorem lt_of_lt_mul_of_le_one_of_nonneg_right + theorem lt_of_mul_lt_mul_left + theorem lt_of_mul_lt_mul_right + theorem lt_of_mul_lt_of_one_le_of_nonneg_left + theorem mul_eq_mul_iff_eq_and_eq_of_pos' + theorem mul_eq_mul_iff_eq_and_eq_of_pos + theorem mul_le_iff_le_one_left + theorem mul_le_iff_le_one_right + theorem mul_le_mul + theorem mul_le_mul_left + theorem mul_le_mul_of_le_of_le + theorem mul_le_mul_of_nonneg_left + theorem mul_le_mul_of_nonneg_right + theorem mul_le_mul_right + theorem mul_le_of_le_of_le_one' + theorem mul_le_of_le_of_le_one_of_nonneg + theorem mul_le_of_le_one_left + theorem mul_le_of_le_one_of_le' + theorem mul_le_of_le_one_of_le_of_nonneg + theorem mul_le_of_le_one_right + theorem mul_le_of_mul_le_of_nonneg_left + theorem mul_le_of_mul_le_of_nonneg_right + theorem mul_left_cancel_iff_of_pos + theorem mul_lt_iff_lt_one_left + theorem mul_lt_iff_lt_one_right + theorem mul_lt_mul_left + theorem mul_lt_mul_of_le_of_le' + theorem mul_lt_mul_of_le_of_lt' + theorem mul_lt_mul_of_lt_of_lt' + theorem mul_lt_mul_of_nonneg_of_pos + theorem mul_lt_mul_of_pos_left + theorem mul_lt_mul_of_pos_of_nonneg + theorem mul_lt_mul_of_pos_of_pos + theorem mul_lt_mul_of_pos_right + theorem mul_lt_mul_right + theorem mul_lt_of_le_of_lt_one' + theorem mul_lt_of_le_of_lt_one_of_pos + theorem mul_lt_of_le_one_of_lt' + theorem mul_lt_of_le_one_of_lt_of_nonneg + theorem mul_lt_of_lt_of_le_one' + theorem mul_lt_of_lt_of_le_one_of_nonneg + theorem mul_lt_of_lt_of_lt_one_of_pos + theorem mul_lt_of_lt_one_left + theorem mul_lt_of_lt_one_of_le' + theorem mul_lt_of_lt_one_of_le_of_pos + theorem mul_lt_of_lt_one_of_lt_of_pos + theorem mul_lt_of_lt_one_right + theorem mul_lt_of_mul_lt_of_nonneg_left + theorem mul_lt_of_mul_lt_of_nonneg_right + theorem mul_neg_of_neg_of_pos + theorem mul_neg_of_pos_of_neg + theorem mul_nonpos_of_nonneg_of_nonpos + theorem mul_nonpos_of_nonpos_of_nonneg + theorem mul_pos_mono.to_mul_pos_reflect_lt + theorem mul_pos_mono.to_mul_pos_strict_mono + def mul_pos_mono + theorem mul_pos_mono_iff_covariant_pos + theorem mul_pos_mono_iff_mul_pos_reflect_lt + theorem mul_pos_mono_iff_mul_pos_strict_mono + theorem mul_pos_mono_rev.to_mul_pos_strict_mono + def mul_pos_mono_rev + theorem mul_pos_mono_rev_iff_mul_pos_reflect_lt + theorem mul_pos_reflect_lt.to_mul_pos_mono + theorem mul_pos_reflect_lt.to_mul_pos_mono_rev + def mul_pos_reflect_lt + theorem mul_pos_reflect_lt_iff_contravariant_pos + def mul_pos_strict_mono + theorem mul_pos_strict_mono_iff_mul_pos_mono_rev + theorem mul_right_cancel_iff_of_pos + theorem neg_iff_neg_of_mul_pos + theorem neg_of_mul_pos_left + theorem neg_of_mul_pos_right + theorem pos_and_pos_or_neg_and_neg_of_mul_pos + theorem pos_iff_pos_of_mul_pos + theorem pos_mul_mono.to_pos_mul_reflect_lt + theorem pos_mul_mono.to_pos_mul_strict_mono + def pos_mul_mono + theorem pos_mul_mono_iff_covariant_pos + theorem pos_mul_mono_iff_mul_pos_mono + theorem pos_mul_mono_iff_pos_mul_reflect_lt + theorem pos_mul_mono_iff_pos_mul_strict_mono + theorem pos_mul_mono_rev.to_pos_mul_strict_mono + def pos_mul_mono_rev + theorem pos_mul_mono_rev_iff_mul_pos_mono_rev + theorem pos_mul_mono_rev_iff_pos_mul_reflect_lt + theorem pos_mul_reflect_lt.to_pos_mul_mono + theorem pos_mul_reflect_lt.to_pos_mul_mono_rev + def pos_mul_reflect_lt + theorem pos_mul_reflect_lt_iff_contravariant_pos + theorem pos_mul_reflect_lt_iff_mul_pos_reflect_lt + def pos_mul_strict_mono + theorem pos_mul_strict_mono_iff_mul_pos_strict_mono + theorem pos_mul_strict_mono_iff_pos_mul_mono_rev + theorem pos_of_mul_pos_left + theorem pos_of_mul_pos_right + theorem right.mul_le_one_of_le_of_le + theorem right.mul_lt_one_of_le_of_lt_of_nonneg + theorem right.mul_lt_one_of_lt_of_le_of_pos + theorem right.mul_nonneg + theorem right.mul_pos + theorem right.neg_of_mul_neg_left + theorem right.neg_of_mul_neg_right + theorem right.one_le_mul_of_le_of_le + theorem right.one_lt_mul_of_le_of_lt_of_nonneg + theorem right.one_lt_mul_of_lt_of_le_of_pos + theorem right.one_lt_mul_of_lt_of_lt - theorem zero_lt.exists_square_le' - theorem zero_lt.exists_square_le - theorem zero_lt.le_mul_iff_one_le_left - theorem zero_lt.le_mul_iff_one_le_right - theorem zero_lt.le_mul_of_le_mul_left - theorem zero_lt.le_mul_of_le_mul_right - theorem zero_lt.le_mul_of_le_of_one_le' - theorem zero_lt.le_mul_of_le_of_one_le - theorem zero_lt.le_mul_of_one_le_left - theorem zero_lt.le_mul_of_one_le_of_le' - theorem zero_lt.le_mul_of_one_le_of_le - theorem zero_lt.le_mul_of_one_le_right - theorem zero_lt.le_of_le_mul_of_le_one_of_nonneg_left - theorem zero_lt.le_of_le_mul_of_le_one_right - theorem zero_lt.le_of_mul_le_mul_left' - theorem zero_lt.le_of_mul_le_mul_right' - theorem zero_lt.le_of_mul_le_of_one_le_nonneg_right - theorem zero_lt.le_of_mul_le_of_one_le_of_nonneg_left - theorem zero_lt.left.mul_le_one_of_le_of_le - theorem zero_lt.left.mul_lt_one_of_le_of_lt - theorem zero_lt.left.mul_lt_one_of_lt_of_le - theorem zero_lt.left.mul_lt_one_of_lt_of_lt - theorem zero_lt.left.mul_nonneg - theorem zero_lt.left.mul_pos - theorem zero_lt.left.neg_of_mul_neg_left - theorem zero_lt.left.neg_of_mul_neg_right - theorem zero_lt.left.one_le_mul_of_le_of_le - theorem zero_lt.left.one_lt_mul_of_le_of_lt - theorem zero_lt.left.one_lt_mul_of_lt_of_le - theorem zero_lt.left.one_lt_mul_of_lt_of_lt - theorem zero_lt.lt_mul_iff_one_lt_left - theorem zero_lt.lt_mul_iff_one_lt_right - theorem zero_lt.lt_mul_of_le_of_one_lt' - theorem zero_lt.lt_mul_of_le_of_one_lt - theorem zero_lt.lt_mul_of_lt_mul_left - theorem zero_lt.lt_mul_of_lt_mul_right - theorem zero_lt.lt_mul_of_lt_of_one_le' - theorem zero_lt.lt_mul_of_lt_of_one_le - theorem zero_lt.lt_mul_of_lt_of_one_lt' - theorem zero_lt.lt_mul_of_lt_of_one_lt - theorem zero_lt.lt_mul_of_one_le_of_lt' - theorem zero_lt.lt_mul_of_one_le_of_lt - theorem zero_lt.lt_mul_of_one_lt_left - theorem zero_lt.lt_mul_of_one_lt_of_le' - theorem zero_lt.lt_mul_of_one_lt_of_le - theorem zero_lt.lt_mul_of_one_lt_of_lt' - theorem zero_lt.lt_mul_of_one_lt_of_lt - theorem zero_lt.lt_mul_of_one_lt_right - theorem zero_lt.lt_of_lt_mul_of_le_one_left - theorem zero_lt.lt_of_lt_mul_of_le_one_right - theorem zero_lt.lt_of_mul_lt_mul_left' - theorem zero_lt.lt_of_mul_lt_mul_left - theorem zero_lt.lt_of_mul_lt_mul_right' - theorem zero_lt.lt_of_mul_lt_mul_right - theorem zero_lt.lt_of_mul_lt_of_one_le_left - theorem zero_lt.lt_of_mul_lt_of_one_le_right - theorem zero_lt.mul_eq_mul_iff_eq_and_eq' - theorem zero_lt.mul_eq_mul_iff_eq_and_eq - theorem zero_lt.mul_le_iff_le_one_left - theorem zero_lt.mul_le_iff_le_one_right - theorem zero_lt.mul_le_mul - theorem zero_lt.mul_le_mul_left - theorem zero_lt.mul_le_mul_left_of_le_of_pos - theorem zero_lt.mul_le_mul_of_le_of_le - theorem zero_lt.mul_le_mul_of_nonneg_left - theorem zero_lt.mul_le_mul_of_nonneg_right - theorem zero_lt.mul_le_mul_right - theorem zero_lt.mul_le_mul_right_of_le_of_pos - theorem zero_lt.mul_le_of_le_of_le_one - theorem zero_lt.mul_le_of_le_one_left - theorem zero_lt.mul_le_of_le_one_of_le' - theorem zero_lt.mul_le_of_le_one_of_le - theorem zero_lt.mul_le_of_le_one_right - theorem zero_lt.mul_le_of_mul_le_left - theorem zero_lt.mul_le_of_mul_le_right - theorem zero_lt.mul_left_cancel_iff_of_pos - theorem zero_lt.mul_lt_iff_lt_one_left - theorem zero_lt.mul_lt_iff_lt_one_right - theorem zero_lt.mul_lt_mul_left' - theorem zero_lt.mul_lt_mul_left - theorem zero_lt.mul_lt_mul_of_le_of_lt' - theorem zero_lt.mul_lt_mul_of_le_of_lt - theorem zero_lt.mul_lt_mul_of_lt_of_le' - theorem zero_lt.mul_lt_mul_of_lt_of_le - theorem zero_lt.mul_lt_mul_of_lt_of_lt' - theorem zero_lt.mul_lt_mul_of_lt_of_lt - theorem zero_lt.mul_lt_mul_right' - theorem zero_lt.mul_lt_mul_right - theorem zero_lt.mul_lt_of_le_of_lt_one' - theorem zero_lt.mul_lt_of_le_of_lt_one - theorem zero_lt.mul_lt_of_le_one_of_lt' - theorem zero_lt.mul_lt_of_le_one_of_lt - theorem zero_lt.mul_lt_of_lt_of_le_one' - theorem zero_lt.mul_lt_of_lt_of_le_one - theorem zero_lt.mul_lt_of_lt_of_lt_one' - theorem zero_lt.mul_lt_of_lt_of_lt_one - theorem zero_lt.mul_lt_of_lt_one_left - theorem zero_lt.mul_lt_of_lt_one_of_le' - theorem zero_lt.mul_lt_of_lt_one_of_le - theorem zero_lt.mul_lt_of_lt_one_of_lt' - theorem zero_lt.mul_lt_of_lt_one_of_lt - theorem zero_lt.mul_lt_of_lt_one_right - theorem zero_lt.mul_lt_of_mul_lt_left - theorem zero_lt.mul_lt_of_mul_lt_right - theorem zero_lt.mul_neg_of_neg_of_pos - theorem zero_lt.mul_neg_of_pos_of_neg - theorem zero_lt.mul_nonneg_le_one_le - theorem zero_lt.mul_nonpos_of_nonneg_of_nonpos - theorem zero_lt.mul_nonpos_of_nonpos_of_nonneg - theorem zero_lt.mul_pos_mono.to_mul_pos_reflect_lt - theorem zero_lt.mul_pos_mono.to_mul_pos_strict_mono - def zero_lt.mul_pos_mono - theorem zero_lt.mul_pos_mono_iff_mul_pos_reflect_lt - theorem zero_lt.mul_pos_mono_iff_mul_pos_strict_mono - theorem zero_lt.mul_pos_mono_rev.to_mul_pos_strict_mono - def zero_lt.mul_pos_mono_rev - theorem zero_lt.mul_pos_mono_rev_iff_mul_pos_reflect_lt - theorem zero_lt.mul_pos_reflect_lt.to_mul_pos_mono - theorem zero_lt.mul_pos_reflect_lt.to_mul_pos_mono_rev - def zero_lt.mul_pos_reflect_lt - def zero_lt.mul_pos_strict_mono - theorem zero_lt.mul_pos_strict_mono_iff_mul_pos_mono_rev - theorem zero_lt.mul_right_cancel_iff_of_pos - theorem zero_lt.neg_iff_neg_of_mul_pos - theorem zero_lt.neg_of_mul_pos_left - theorem zero_lt.neg_of_mul_pos_right - theorem zero_lt.pos_and_pos_or_neg_and_neg_of_mul_pos - theorem zero_lt.pos_iff_pos_of_mul_pos - theorem zero_lt.pos_mul_mono.to_pos_mul_reflect_lt - theorem zero_lt.pos_mul_mono.to_pos_mul_strict_mono - def zero_lt.pos_mul_mono - theorem zero_lt.pos_mul_mono_iff_mul_pos_mono - theorem zero_lt.pos_mul_mono_iff_pos_mul_reflect_lt - theorem zero_lt.pos_mul_mono_iff_pos_mul_strict_mono - theorem zero_lt.pos_mul_mono_rev.to_pos_mul_strict_mono - def zero_lt.pos_mul_mono_rev - theorem zero_lt.pos_mul_mono_rev_iff_mul_pos_mono_rev - theorem zero_lt.pos_mul_mono_rev_iff_pos_mul_reflect_lt - theorem zero_lt.pos_mul_reflect_lt.to_pos_mul_mono - theorem zero_lt.pos_mul_reflect_lt.to_pos_mul_mono_rev - def zero_lt.pos_mul_reflect_lt - theorem zero_lt.pos_mul_reflect_lt_iff_mul_pos_reflect_lt - def zero_lt.pos_mul_strict_mono - theorem zero_lt.pos_mul_strict_mono_iff_mul_pos_strict_mono - theorem zero_lt.pos_mul_strict_mono_iff_pos_mul_mono_rev - theorem zero_lt.pos_of_mul_pos_left - theorem zero_lt.pos_of_mul_pos_right - theorem zero_lt.preorder.le_mul_of_le_mul_left - theorem zero_lt.preorder.le_mul_of_le_mul_right - theorem zero_lt.preorder.le_mul_of_le_of_one_le' - theorem zero_lt.preorder.le_mul_of_le_of_one_le - theorem zero_lt.preorder.le_mul_of_one_le_left - theorem zero_lt.preorder.le_mul_of_one_le_of_le' - theorem zero_lt.preorder.le_mul_of_one_le_of_le - theorem zero_lt.preorder.le_mul_of_one_le_right - theorem zero_lt.preorder.le_of_le_mul_of_le_one_left - theorem zero_lt.preorder.le_of_le_mul_of_le_one_right - theorem zero_lt.preorder.le_of_mul_le_of_one_le_left - theorem zero_lt.preorder.le_of_mul_le_of_one_le_right - theorem zero_lt.preorder.left.mul_le_one_of_le_of_le' - theorem zero_lt.preorder.left.one_le_mul_of_le_of_le - theorem zero_lt.preorder.lt_mul_of_le_of_one_lt' - theorem zero_lt.preorder.lt_mul_of_lt_of_one_le' - theorem zero_lt.preorder.lt_mul_of_one_le_of_lt' - theorem zero_lt.preorder.lt_mul_of_one_lt_of_le' - theorem zero_lt.preorder.mul_le_mul_of_le_of_le' - theorem zero_lt.preorder.mul_le_mul_of_le_of_le - theorem zero_lt.preorder.mul_le_of_le_of_le_one' - theorem zero_lt.preorder.mul_le_of_le_of_le_one - theorem zero_lt.preorder.mul_le_of_le_one_left - theorem zero_lt.preorder.mul_le_of_le_one_of_le' - theorem zero_lt.preorder.mul_le_of_le_one_of_le - theorem zero_lt.preorder.mul_le_of_le_one_right - theorem zero_lt.preorder.mul_le_of_mul_le_left - theorem zero_lt.preorder.mul_le_of_mul_le_right - theorem zero_lt.preorder.mul_lt_of_le_of_lt_one' - theorem zero_lt.preorder.mul_lt_of_le_one_of_lt' - theorem zero_lt.preorder.mul_lt_of_lt_of_le_one' - theorem zero_lt.preorder.mul_lt_of_lt_one_of_le' - theorem zero_lt.preorder.right.mul_le_one_of_le_of_le - theorem zero_lt.preorder.right.one_le_mul_of_le_of_le - theorem zero_lt.right.mul_le_one_of_le_of_le - theorem zero_lt.right.mul_lt_one_of_le_of_lt - theorem zero_lt.right.mul_lt_one_of_lt_of_le - theorem zero_lt.right.mul_lt_one_of_lt_of_lt - theorem zero_lt.right.mul_nonneg - theorem zero_lt.right.mul_pos - theorem zero_lt.right.neg_of_mul_neg_left - theorem zero_lt.right.neg_of_mul_neg_right - theorem zero_lt.right.one_le_mul_of_le_of_le - theorem zero_lt.right.one_lt_mul_of_le_of_lt - theorem zero_lt.right.one_lt_mul_of_lt_of_le - theorem zero_lt.right.one_lt_mul_of_lt_of_lt - theorem zero_lt.zero_lt_mul_left - theorem zero_lt.zero_lt_mul_right + theorem zero_lt_mul_left + theorem zero_lt_mul_right Modified src/algebra/order/ring.lean - theorem le_of_mul_le_mul_left - theorem le_of_mul_le_mul_right - theorem mul_lt_mul_of_pos_left - theorem mul_lt_mul_of_pos_right Modified src/analysis/normed_space/basic.lean Modified src/analysis/special_functions/bernstein.lean Modified src/measure_theory/integral/set_to_l1.lean 2022-09-14 16:17:56 0602c59 refactor(model_theory/*): Use `countable` in model theory (#16496) Uses `countable` instead of custom classes in the model theory library. ESTIMATED CHANGES Modified src/model_theory/basic.lean - theorem first_order.language.card_functions_le_aleph_0 - theorem first_order.language.card_le_aleph_0 - theorem first_order.language.encodable.countable - theorem first_order.language.encodable.countable_functions Modified src/model_theory/encoding.lean - theorem first_order.language.term.card_le_aleph_0 Modified src/model_theory/finitely_generated.lean +/- theorem first_order.language.Structure.cg_iff_countable +/- theorem first_order.language.substructure.cg_iff_countable Modified src/model_theory/fraisse.lean +/- theorem first_order.language.age.countable_quotient +/- theorem first_order.language.exists_countable_is_age_of_iff +/- theorem first_order.language.is_fraisse_limit.is_fraisse +/- structure first_order.language.is_fraisse_limit +/- theorem first_order.language.is_ultrahomogeneous.age_is_fraisse Modified src/model_theory/substructures.lean +/- theorem set.countable.substructure_closure 2022-09-14 16:17:54 d8bc182 chore(order/filter/basic): golf (#16472) Reorder lemmas, golf ESTIMATED CHANGES Modified src/order/filter/basic.lean 2022-09-14 16:17:53 5cbe3c4 chore(data/finset/powerset): generalize powerset_len_nonempty (#16429) `powerset_len_nonempty` holds for `n ≤ s.card`. ESTIMATED CHANGES Modified src/data/finset/powerset.lean +/- theorem finset.powerset_len_nonempty 2022-09-14 16:17:52 94b2c2c chore(category_theory/sites/limits): generalise universe level (#16408) ESTIMATED CHANGES Modified src/category_theory/sites/limits.lean 2022-09-14 16:17:51 9532aeb chore(data/mv_polynomial/{basic, monad}): move lemmas `aeval_X_left` and `aeval_X_left_apply` (#16391) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.aeval_X_left + theorem mv_polynomial.aeval_X_left_apply Modified src/data/mv_polynomial/monad.lean - theorem mv_polynomial.aeval_X_left - theorem mv_polynomial.aeval_X_left_apply 2022-09-14 16:17:49 71b8c46 feat(ring_theory/multiplicity): generalize `multiplicity` (#16330) Divisibility is defined for any `semigroup`, so I also reduce the assumption of `multiplicity` to any `monoid`. At least it can be used for the elements which commute with every element, such as `power_series.X`. - [x] depends on: #16328 ESTIMATED CHANGES Modified src/ring_theory/multiplicity.lean + theorem multiplicity.multiplicity_eq_multiplicity_iff + theorem multiplicity.not_dvd_one_of_finite_one_right +/- def multiplicity 2022-09-14 13:30:25 db0c0a7 refactor (equiv.perm.basic): base of_subtype on extend_domain (#16484) There were two distinct ways to extend a permutation from a subtype to the ambient type. As suggested by Johann Commelin in https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/permutations.20.3A.20of_subtype.20vs.20extend_domain/near/298180355 this PR unifies them by basing .of_subtype on the more general .extend_domain. Some proofs have been redone, some other simplified. For symmetry, I also added cycle_type_of_subtype (it just calls cycle_type_extend_domain. ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean Modified src/group_theory/perm/cycle/basic.lean Modified src/group_theory/perm/cycle/type.lean + theorem equiv.perm.cycle_type_of_subtype Modified src/group_theory/perm/sign.lean Modified src/group_theory/perm/support.lean + theorem equiv.perm.of_subtype_swap_eq 2022-09-14 12:38:51 11878a4 feat(topology/algebra/uniform_convergence): maps to a uniform group form a uniform group when equipped with the uniform structure of `𝔖`-convergence (#14693) ESTIMATED CHANGES Added src/topology/algebra/uniform_convergence.lean + structure of 2022-09-14 11:13:07 e1452ef chore(number_theory/legendre_symbol/*): move zmod.{legendre|jacobi}_sym* to other namespaces (#16461) This PR moves `legendre_sym` and `jacobi_sym` (and `qr_sign`) to the root namespace. It also moves definitions and lemmas named `legendre_sym_...` to the `legendre_sym` namespace and analogous for `jacobi_sym_...` and `qr_sign_...`. We change names like `jacobi_sym_two` to `jacobi_sym.at_two`. This mostly affects the files `number_theory.legendre_symbol.quadratic_reciprocity` and `number_theory.legendre_symbol.jacobi_symbol`. Note that names like `exists_sq_eq_neg_one_iff` have been left in `zmod`. We prefix `quadratic_reciprocity*` by `legendre_sym` to disambiguate with the versions for the Jacobi symbol. (The links in `docs/100.yaml` and `docs/overview.yaml` are updated accordingly.) We also move the results in `number_theory.legendre_symbol.gauss_eisenstein_lemmas` from the `legendre_symbol` namespace to the `zmod` namespace. See this [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Jacobi.20symbol/near/297792676) and the comments at [#16395](https://github.com/leanprover-community/mathlib/pull/16395) for discussion. ESTIMATED CHANGES Modified docs/100.yaml Modified docs/overview.yaml Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean - theorem legendre_symbol.Ico_map_val_min_abs_nat_abs_eq_Ico_map_id - theorem legendre_symbol.div_eq_filter_card - theorem legendre_symbol.eisenstein_lemma - theorem legendre_symbol.eisenstein_lemma_aux - theorem legendre_symbol.gauss_lemma - theorem legendre_symbol.gauss_lemma_aux - theorem legendre_symbol.sum_mul_div_add_sum_mul_div_eq_mul + theorem zmod.Ico_map_val_min_abs_nat_abs_eq_Ico_map_id + theorem zmod.div_eq_filter_card + theorem zmod.eisenstein_lemma + theorem zmod.eisenstein_lemma_aux + theorem zmod.gauss_lemma + theorem zmod.gauss_lemma_aux + theorem zmod.sum_mul_div_add_sum_mul_div_eq_mul Modified src/number_theory/legendre_symbol/jacobi_symbol.lean + theorem jacobi_sym.at_neg_one + theorem jacobi_sym.at_neg_two + theorem jacobi_sym.at_two + theorem jacobi_sym.eq_one_or_neg_one + theorem jacobi_sym.eq_zero_iff + theorem jacobi_sym.eq_zero_iff_not_coprime + theorem jacobi_sym.mod_left' + theorem jacobi_sym.mod_left + theorem jacobi_sym.mod_right' + theorem jacobi_sym.mod_right + theorem jacobi_sym.mul_left + theorem jacobi_sym.mul_right' + theorem jacobi_sym.mul_right + theorem jacobi_sym.ne_zero + theorem jacobi_sym.neg + theorem jacobi_sym.one_left + theorem jacobi_sym.one_right + theorem jacobi_sym.pow_left + theorem jacobi_sym.pow_right + theorem jacobi_sym.quadratic_reciprocity' + theorem jacobi_sym.quadratic_reciprocity + theorem jacobi_sym.quadratic_reciprocity_one_mod_four' + theorem jacobi_sym.quadratic_reciprocity_one_mod_four + theorem jacobi_sym.quadratic_reciprocity_three_mod_four + theorem jacobi_sym.sq_one' + theorem jacobi_sym.sq_one + theorem jacobi_sym.trichotomy + theorem jacobi_sym.value_at + theorem jacobi_sym.zero_left + theorem jacobi_sym.zero_right + def jacobi_sym + theorem legendre_sym.to_jacobi_sym + theorem qr_sign.eq_iff_eq + theorem qr_sign.mul_left + theorem qr_sign.mul_right + theorem qr_sign.neg_one_pow + theorem qr_sign.sq_eq_one + theorem qr_sign.symm + def qr_sign - def zmod.jacobi_sym - theorem zmod.jacobi_sym_eq_one_or_neg_one - theorem zmod.jacobi_sym_eq_zero_iff - theorem zmod.jacobi_sym_eq_zero_iff_not_coprime - theorem zmod.jacobi_sym_mod_left' - theorem zmod.jacobi_sym_mod_left - theorem zmod.jacobi_sym_mod_right' - theorem zmod.jacobi_sym_mod_right - theorem zmod.jacobi_sym_mul_left - theorem zmod.jacobi_sym_mul_right' - theorem zmod.jacobi_sym_mul_right - theorem zmod.jacobi_sym_ne_zero - theorem zmod.jacobi_sym_neg - theorem zmod.jacobi_sym_neg_one - theorem zmod.jacobi_sym_neg_two - theorem zmod.jacobi_sym_one_left - theorem zmod.jacobi_sym_one_right - theorem zmod.jacobi_sym_pow_left - theorem zmod.jacobi_sym_pow_right - theorem zmod.jacobi_sym_quadratic_reciprocity' - theorem zmod.jacobi_sym_quadratic_reciprocity - theorem zmod.jacobi_sym_quadratic_reciprocity_one_mod_four' - theorem zmod.jacobi_sym_quadratic_reciprocity_one_mod_four - theorem zmod.jacobi_sym_quadratic_reciprocity_three_mod_four - theorem zmod.jacobi_sym_sq_one' - theorem zmod.jacobi_sym_sq_one - theorem zmod.jacobi_sym_trichotomy - theorem zmod.jacobi_sym_two - theorem zmod.jacobi_sym_value - theorem zmod.jacobi_sym_zero_left - theorem zmod.jacobi_sym_zero_right - theorem zmod.legendre_sym.to_jacobi_sym - def zmod.qr_sign - theorem zmod.qr_sign_eq_iff_eq - theorem zmod.qr_sign_mul_left - theorem zmod.qr_sign_mul_right - theorem zmod.qr_sign_neg_one_pow - theorem zmod.qr_sign_sq_eq_one - theorem zmod.qr_sign_symm Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean + theorem legendre_sym.at_neg_one + theorem legendre_sym.at_neg_two + theorem legendre_sym.at_one + theorem legendre_sym.at_two + theorem legendre_sym.at_zero + theorem legendre_sym.card_sqrts + theorem legendre_sym.eq_neg_one_iff' + theorem legendre_sym.eq_neg_one_iff + theorem legendre_sym.eq_neg_one_iff_not_one + theorem legendre_sym.eq_one_iff' + theorem legendre_sym.eq_one_iff + theorem legendre_sym.eq_one_or_neg_one + theorem legendre_sym.eq_pow + theorem legendre_sym.eq_zero_iff + def legendre_sym.hom + theorem legendre_sym.mod + theorem legendre_sym.mul + theorem legendre_sym.quadratic_reciprocity' + theorem legendre_sym.quadratic_reciprocity + theorem legendre_sym.quadratic_reciprocity_one_mod_four + theorem legendre_sym.quadratic_reciprocity_three_mod_four + theorem legendre_sym.sq_one' + theorem legendre_sym.sq_one + def legendre_sym - def zmod.legendre_sym - theorem zmod.legendre_sym_card_sqrts - theorem zmod.legendre_sym_eq_neg_one_iff' - theorem zmod.legendre_sym_eq_neg_one_iff - theorem zmod.legendre_sym_eq_neg_one_iff_not_one - theorem zmod.legendre_sym_eq_one_iff' - theorem zmod.legendre_sym_eq_one_iff - theorem zmod.legendre_sym_eq_one_or_neg_one - theorem zmod.legendre_sym_eq_pow - theorem zmod.legendre_sym_eq_zero_iff - def zmod.legendre_sym_hom - theorem zmod.legendre_sym_mod - theorem zmod.legendre_sym_mul - theorem zmod.legendre_sym_neg_one - theorem zmod.legendre_sym_neg_two - theorem zmod.legendre_sym_one - theorem zmod.legendre_sym_sq_one' - theorem zmod.legendre_sym_sq_one - theorem zmod.legendre_sym_two - theorem zmod.legendre_sym_zero - theorem zmod.quadratic_reciprocity' - theorem zmod.quadratic_reciprocity - theorem zmod.quadratic_reciprocity_one_mod_four - theorem zmod.quadratic_reciprocity_three_mod_four 2022-09-14 11:13:02 b118db5 feat(ring_theory/roots_of_unity): add roots_of_unity.norm_one (#16426) This is the proof that the norm of the image of a root of unity by a ring homomorphism is always equal to one. This is the counterpart of the result proved in #15143 that an algebraic integer whose conjugates are all of absolute value one is a root of unity. From flt-regular ESTIMATED CHANGES Modified src/analysis/normed/field/basic.lean + theorem norm_map_one_of_pow_eq_one + theorem norm_one_of_pow_eq_one 2022-09-14 08:28:10 a3bb205 feat(topology/separation): generalize&rename a lemma (#16503) * rename `tot_sep_of_zero_dim` to `totally_separated_space_of_t1_of_basis_clopen`; * generalize it from a `t2_space` to a `t1_space`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem eq.subset Modified src/topology/separation.lean - theorem tot_sep_of_zero_dim + theorem totally_separated_space_of_t1_of_basis_clopen 2022-09-14 08:28:08 f9f5d51 feat(algebra/order/group): some more lemmas about `min`, `max`, and `abs` (#16485) These are trivially true, but require a bit of annoying casework, making them handy to package into lemmas. ESTIMATED CHANGES Modified src/algebra/order/group.lean +/- theorem abs_le_max_abs_abs + theorem abs_max_le_max_abs_abs + theorem abs_min_le_max_abs_abs + theorem min_abs_abs_le_abs_max + theorem min_abs_abs_le_abs_min 2022-09-14 05:48:04 8b8cd99 feat(analysis/calculus): Taylor's theorem (#15087) Proves Taylor's theorem for the mean value form of the remainder. There are four different versions: the general case for real-valued functions, the Lagrange form, the Cauchy form, and a version for vector valued functions. ESTIMATED CHANGES Modified docs/100.yaml Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/group_with_zero/basic.lean + theorem div_mul_eq_mul_div₀ Modified src/analysis/calculus/tangent_cone.lean + theorem unique_diff_within_at_Ioo Added src/analysis/calculus/taylor.lean + theorem continuous_on_taylor_within_eval + theorem exists_taylor_mean_remainder_bound + theorem has_deriv_within_at_taylor_coeff_within + theorem has_deriv_within_at_taylor_within_eval + theorem has_deriv_within_taylor_within_eval_at_Icc + theorem monomial_has_deriv_aux + def taylor_coeff_within + theorem taylor_mean_remainder + theorem taylor_mean_remainder_bound + theorem taylor_mean_remainder_cauchy + theorem taylor_mean_remainder_lagrange + def taylor_within + theorem taylor_within_apply + def taylor_within_eval + theorem taylor_within_eval_has_deriv_at_Ioo + theorem taylor_within_eval_self + theorem taylor_within_eval_succ + theorem taylor_within_succ + theorem taylor_within_zero_eval Modified src/data/polynomial/module.lean + theorem polynomial_module.eval_lsingle Modified src/topology/algebra/monoid.lean + theorem continuous_on_finset_prod + theorem continuous_on_list_prod + theorem continuous_on_multiset_prod 2022-09-14 00:27:32 2ff9204 feat(analysis/inner_product_space/projection): remove useless `complete_space E` assumption (#15682) The current proof decomposes v as its projection on K and its projection on the orthogonal complement of K, thus requiring `E` to be complete. Instead, we decompose it as `v = p v + (v - p v)`, where `p` is the projection on K. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem inner_orthogonal_projection_eq_of_mem_left + theorem inner_orthogonal_projection_eq_of_mem_right +/- theorem inner_orthogonal_projection_left_eq_right +/- theorem orthogonal_projection_is_symmetric 2022-09-13 21:26:46 3d36908 fix(order/bounded_order): remove classical axiom from Prop.distrib_lattice (#16497) Used all three axioms before, now only `propext`. ESTIMATED CHANGES Modified src/order/bounded_order.lean 2022-09-13 19:19:23 ed9be88 docs(category_theory): mention notation for identity homs (#16410) ESTIMATED CHANGES Modified src/category_theory/category/basic.lean 2022-09-13 13:37:35 d268bb7 feat(data/polynomial/eval): add polynomial.map_bit0/1 (#16481) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean - theorem polynomial.map_smul 2022-09-13 13:37:34 c0ad3bf feat(topology/algebra/uniform_group): the quotient of a first countable complete topological group by a normal subgroup is itself complete (#16368) ESTIMATED CHANGES Modified docs/references.bib Modified src/order/filter/bases.lean Modified src/topology/algebra/group.lean + theorem quotient_group.nhds_eq + theorem topological_group.exists_antitone_basis_nhds_one Modified src/topology/algebra/uniform_group.lean 2022-09-13 13:37:33 01a8a9f feat(convex/specific_functions): specific case of Jensen's inequality for powers (#16186) Proves a specific case of Jensen's inequality: a powers of a sum divided by the cardinality of the `finset` is less than or equal to the sum of the powers. ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean + theorem nnreal.pow_sum_div_card_le_sum_pow + theorem real.pow_sum_div_card_le_sum_pow 2022-09-13 13:37:32 3c93c65 feat(analysis/inner_product_space/l2_space): the family of subspaces spanned by finitely many elements of a Hilbert basis has dense supremum (#15821) ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean + theorem hilbert_basis.finite_spans_dense Modified src/linear_algebra/span.lean + theorem submodule.span_monotone 2022-09-13 10:49:18 a945b37 feat(data/sym/basic): add `fill` `filter_ne` and `sigma_ext` (#16316) Add definitions and lemmas to support a proof for the multinomial theorem. ESTIMATED CHANGES Modified src/data/sym/basic.lean + def sym.append + theorem sym.append_comm + theorem sym.append_inj_left + theorem sym.append_inj_right + theorem sym.cast_cast + theorem sym.cast_rfl + theorem sym.coe_cast + def sym.fill + def sym.filter_ne + theorem sym.sigma_sub_ext 2022-09-13 09:02:48 c64fb26 feat(topology/algebra/order/intermediate_value): intervals are connected (#16473) `topology.algebra.order.intermediate_value` has a series of lemmas that different kinds of intervals are preconnected. Add a corresponding series of lemmas that intervals are connected (with appropriate extra conditions on the order or the endpoints as needed). ESTIMATED CHANGES Modified src/topology/algebra/order/intermediate_value.lean + theorem is_connected_Icc + theorem is_connected_Ici + theorem is_connected_Ico + theorem is_connected_Iic + theorem is_connected_Iio + theorem is_connected_Ioc + theorem is_connected_Ioi + theorem is_connected_Ioo 2022-09-13 06:29:29 4ff1021 feat(analysis/normed_space/units): maximal ideals in complete normed rings are closed (#16303) ESTIMATED CHANGES Modified src/analysis/normed_space/units.lean + theorem ideal.closure_ne_top + theorem ideal.eq_top_of_norm_lt_one + theorem ideal.is_maximal.closure_eq + theorem nonunits.subset_compl_ball Modified src/topology/algebra/ring.lean 2022-09-13 04:22:54 5bd4f62 chore(ring_theory/local_properties): remove coercions from `ring_hom` to `monoid_hom` (#16453) Now that `submonoid.map` takes `monoid_hom_class`, these aren't necessary. Also golfs a pair of proofs. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/localization/inv_submonoid.lean +/- def is_localization.equiv_inv_submonoid +/- def is_localization.inv_submonoid +/- theorem is_localization.submonoid_map_le_is_unit Modified src/ring_theory/localization/localization_localization.lean 2022-09-13 03:04:28 06ae049 feat(data/complex/module): define `real_part` and `imaginary_part` (#16438) In a generic `star_module` one always has a decomposition of any element into a `self_adjoint_part` and a `skew_self_adjoint` part, but in a star module over `ℂ` we can instead decompose any element into a `real_part` and an `imaginary_part`, both of which are self-adjoint. Here we define these as `ℝ`-linear maps from the star module into the type of its self-adjoint elements and describe the basic relationships between these maps. The decomposition into real and imaginary parts is often useful for reducing arguments about elements of a star module over `ℂ` to the case when the element is self-adjoint. ESTIMATED CHANGES Modified src/data/complex/module.lean + def imaginary_part + theorem imaginary_part_I_smul + theorem imaginary_part_apply_coe + theorem imaginary_part_smul + theorem real_part_I_smul + theorem real_part_add_I_smul_imaginary_part + theorem real_part_apply_coe + theorem real_part_smul + theorem skew_adjoint.I_smul_neg_I + def skew_adjoint.neg_I_smul 2022-09-12 19:53:47 36e0130 feat(ring_theory/dedekind_domain/ideal): construct map between the sets of prime factors of ideal `I` and `J` induced by an isomorphism between `R/I` and `S/J` (#16455) These lemmas generalize results that were originally in #15000. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean +/- def ideal_factors_equiv_of_quot_equiv + theorem ideal_factors_equiv_of_quot_equiv_is_dvd_iso + theorem ideal_factors_equiv_of_quot_equiv_mem_normalized_factors_of_mem_normalized_factors + theorem ideal_factors_equiv_of_quot_equiv_symm + theorem multiplicity_normalized_factors_equiv_span_normalized_factors_eq_multiplicity + theorem multiplicity_normalized_factors_equiv_span_normalized_factors_symm_eq_multiplicity + def normalized_factors_equiv_of_quot_equiv + theorem normalized_factors_equiv_of_quot_equiv_multiplicity_eq_multiplicity + theorem normalized_factors_equiv_of_quot_equiv_symm 2022-09-12 19:53:46 a280c1e feat(data/nat/{choose/multinomial,factorial/big_operations}): add multinomial coefficient definition with basic lemma's (#16170) Chose a definition based on finset and a function for multiplicity. This allows the definition to be used in various context, including in a multiset context, where multiset.count yields the function describing multiplicity. Supporting lemma's concerning factorials are introduced in a new file, since importing big_operators in the main factorial file yields a circular import. ESTIMATED CHANGES Added src/data/nat/choose/multinomial.lean + theorem nat.binomial_eq + theorem nat.binomial_eq_choose + theorem nat.binomial_one + theorem nat.binomial_spec + theorem nat.binomial_succ_succ + def nat.multinomial + theorem nat.multinomial_insert + theorem nat.multinomial_insert_one + theorem nat.multinomial_nil + theorem nat.multinomial_pos + theorem nat.multinomial_singleton + theorem nat.multinomial_spec + theorem nat.multinomial_univ_three + theorem nat.multinomial_univ_two + theorem nat.succ_mul_binomial Added src/data/nat/factorial/big_operators.lean + theorem nat.prod_factorial_dvd_factorial_sum + theorem nat.prod_factorial_pos 2022-09-12 18:27:05 1b3556c chore(linear_algebra): rename dual_pair (#16482) This only renames `dual_pair` to `module.dual_bases`, avoiding to put a very generic name into the root name space. This `dual_pair` was used only in the archive, I introduced it a very long time ago to streamline the proof of the sensitivity conjecture. ESTIMATED CHANGES Modified archive/sensitivity.lean + def dual_bases_e_ε - def dual_pair_e_ε Modified src/linear_algebra/dual.lean - def dual_pair.basis - theorem dual_pair.coe_basis - theorem dual_pair.coe_dual_basis - def dual_pair.coeffs - theorem dual_pair.coeffs_apply - theorem dual_pair.coeffs_lc - theorem dual_pair.dual_lc - def dual_pair.lc - theorem dual_pair.lc_coeffs - theorem dual_pair.lc_def - theorem dual_pair.mem_of_mem_span - structure dual_pair + def module.dual_bases.basis + theorem module.dual_bases.coe_basis + theorem module.dual_bases.coe_dual_basis + def module.dual_bases.coeffs + theorem module.dual_bases.coeffs_apply + theorem module.dual_bases.coeffs_lc + theorem module.dual_bases.dual_lc + def module.dual_bases.lc + theorem module.dual_bases.lc_coeffs + theorem module.dual_bases.lc_def + theorem module.dual_bases.mem_of_mem_span + structure module.dual_bases 2022-09-12 18:27:04 f058af3 feat(analysis/inner_product_space/pi_L2): change of basis matrix between orthonormal bases is unitary (#16474) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem orthonormal_basis.det_to_matrix_orthonormal_basis + theorem orthonormal_basis.det_to_matrix_orthonormal_basis_real + theorem orthonormal_basis.to_matrix_orthonormal_basis_mem_orthogonal + theorem orthonormal_basis.to_matrix_orthonormal_basis_mem_unitary Modified src/linear_algebra/unitary_group.lean + theorem matrix.det_of_mem_unitary + theorem matrix.mem_orthogonal_group_iff' + theorem matrix.mem_unitary_group_iff' 2022-09-12 16:02:12 38963b5 feat(algebra/algebra/basic): add two simp lemmas (#16096) Two simp lemmas that are useful for dealing with the group of automorphisms of an algebra. I also had to fix two proofs from `field_theory/krull_topology`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/field_theory/krull_topology.lean 2022-09-12 13:12:24 60f7215 chore(data/real/cau_seq_completion): golf using existing lemmas (#16469) This extracts `cau_seq.mul_equiv_mul` and `cau_seq.sub_equiv_sub` into standalone lemmas, and uses the existing lemmas for `add` and `neg` rather than reproving the result from scratch. ESTIMATED CHANGES Modified src/data/real/cau_seq.lean + theorem cau_seq.mul_equiv_mul + theorem cau_seq.sub_equiv_sub Modified src/data/real/cau_seq_completion.lean 2022-09-12 13:12:23 86be023 feat(data/polynomial/algebra_map): add `aeval_X_left_apply` (#16433) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_X_left_apply 2022-09-12 13:12:22 28b23c9 feat(analysis/normed/group/seminorm): Group norms (#16237) Define (additive) group norms, which are group seminorms `f` such that `f x = 0 → x = 0` (resp. `f x = 0 → x = 1`), along with their hom classes. ESTIMATED CHANGES Modified src/analysis/normed/group/seminorm.lean + theorem add_group_norm.apply_one + structure add_group_norm + theorem add_group_seminorm.apply_one + theorem group_norm.add_apply + theorem group_norm.apply_one + theorem group_norm.coe_add + theorem group_norm.coe_le_coe + theorem group_norm.coe_lt_coe + theorem group_norm.coe_sup + theorem group_norm.ext + theorem group_norm.le_def + theorem group_norm.lt_def + theorem group_norm.sup_apply + structure group_norm + theorem group_seminorm.apply_one + theorem group_seminorm.mul_bdd_below_range_add + theorem map_eq_zero_iff_eq_one + theorem map_ne_zero_iff_ne_one + theorem map_pos_of_ne_one 2022-09-12 11:04:52 e184737 feat(data/real/ennreal): Add `to_real_{min, sup, inf}` (#16233) This adds `to_real_min` to match `to_real_max`, and adds `inf` and `sup` spellings of these lemmas. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_real_inf + theorem ennreal.to_real_min + theorem ennreal.to_real_sup 2022-09-12 11:04:51 1c4e184 refactor(set_theory/basic): match `x < ℵ₀` lemmas with `x ≤ ℵ₀` lemmas (#15662) * Mark `cardinal.lt_aleph_0_iff_set_finite` as `@[simp]` lemma. * Add `cardinal.lt_aleph_0_iff_subtype_finite` and `cardinal.mk_le_aleph_0_iff`; drop `cardinal.encodable_iff`. * Rename `cardinal.mk_set_le_aleph_0` to `cardinal.le_aleph_0_iff_set_countable`. * Rename `cardinal.mk_subtype_le_aleph_0` to `cardinal.le_aleph_0_iff_subtype_countable`. * Make `first_order.language.countable` protected. * Use `[countable _]` instead of `[encodable _]` or `[nonempty (encodable _)]` here and there. ESTIMATED CHANGES Modified src/algebra/algebraic_card.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/data/complex/cardinality.lean Modified src/data/real/cardinality.lean Modified src/model_theory/basic.lean +/- theorem first_order.language.encodable.countable Modified src/model_theory/encoding.lean +/- theorem first_order.language.term.card_le_aleph_0 Modified src/model_theory/finitely_generated.lean +/- theorem first_order.language.Structure.cg_iff_countable Modified src/model_theory/fraisse.lean Modified src/model_theory/substructures.lean Modified src/set_theory/cardinal/basic.lean - theorem cardinal.encodable_iff + theorem cardinal.le_aleph_0_iff_set_countable + theorem cardinal.le_aleph_0_iff_subtype_countable +/- theorem cardinal.lt_aleph_0_iff_set_finite + theorem cardinal.lt_aleph_0_iff_subtype_finite +/- theorem cardinal.mk_le_aleph_0 + theorem cardinal.mk_le_aleph_0_iff - theorem cardinal.mk_set_le_aleph_0 - theorem cardinal.mk_subtype_le_aleph_0 Modified src/set_theory/cardinal/ordinal.lean 2022-09-12 11:04:50 d5ef068 feat(linear_algebra/finsupp): A variant of `finsupp.total` for `fintype`s. (#15462) ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean + theorem finsupp.total_eq_fintype_total + theorem finsupp.total_eq_fintype_total_apply + theorem fintype.range_total + theorem fintype.total_apply + theorem fintype.total_apply_single 2022-09-12 09:20:02 745e23d feat(measure_theory/function/conditional_expectation): conditional expectation with respect to the bot sigma algebra (#16342) Prove that for a probability measure, `μ[f|⊥] = λ _, ∫ x, f x ∂μ`. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation/basic.lean + theorem measure_theory.condexp_bot' + theorem measure_theory.condexp_bot + theorem measure_theory.condexp_bot_ae_eq +/- theorem measure_theory.integral_condexp Modified src/measure_theory/function/strongly_measurable.lean + theorem strongly_measurable_bot_iff Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.simple_func_bot' + theorem measure_theory.simple_func.simple_func_bot Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.not_is_finite_measure_iff + theorem measure_theory.sigma_finite_bot_iff + theorem measure_theory.sigma_finite_trim_bot_iff 2022-09-12 01:34:41 3c00612 feat(data/{seq,stream}): cons_injective2 (#15832) Also some simple API lemmas for `nth` I didn't change the style of the `stream/init` file. ESTIMATED CHANGES Modified src/data/seq/seq.lean + theorem seq.cons_injective2 + theorem seq.cons_left_injective + theorem seq.cons_right_injective Modified src/data/stream/init.lean + theorem stream.cons_injective2 + theorem stream.cons_injective_left + theorem stream.cons_injective_right + theorem stream.nth_succ_cons +/- theorem stream.nth_zero_cons 2022-09-11 21:08:51 8771490 chore(probability/martingale): move the optional stopping theorem to its own file (#16464) The idea is to reserve martingale/basic.lean to really basic API about (sub/super)martingales. ESTIMATED CHANGES Modified src/probability/martingale/basic.lean - theorem measure_theory.maximal_ineq - theorem measure_theory.smul_le_stopped_value_hitting - theorem measure_theory.submartingale.expected_stopped_value_mono - theorem measure_theory.submartingale.stopped_process - theorem measure_theory.submartingale_iff_expected_stopped_value_mono - theorem measure_theory.submartingale_of_expected_stopped_value_mono Added src/probability/martingale/optional_stopping.lean + theorem measure_theory.maximal_ineq + theorem measure_theory.smul_le_stopped_value_hitting + theorem measure_theory.submartingale.expected_stopped_value_mono + theorem measure_theory.submartingale.stopped_process + theorem measure_theory.submartingale_iff_expected_stopped_value_mono + theorem measure_theory.submartingale_of_expected_stopped_value_mono 2022-09-11 21:08:50 d04db58 refactor(algebra/order/monoid): Remove redundant field from `ordered_cancel_comm_monoid` (#16445) `mul_left_cancel : ∀ a b c, a + b = a + c → b = c` can be inferred from `le_of_mul_le_mul_left : ∀ a b c, a + b ≤ a + c → b ≤ c` and antisymmetry. ESTIMATED CHANGES Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/positive/ring.lean Modified src/algebra/order/ring.lean Modified src/algebra/punit_instances.lean Modified src/data/dfinsupp/order.lean Modified src/data/finsupp/order.lean Modified src/data/multiset/basic.lean Modified src/data/nat/basic.lean Modified src/data/num/lemmas.lean Modified src/number_theory/bertrand.lean Modified src/order/filter/germ.lean Modified src/set_theory/ordinal/natural_ops.lean 2022-09-11 19:22:57 2791739 feat(topology/uniform_space/compact_separated): drop unneeded assumptions (#16457) Lemmas in this file don't need `[separated_space _]` / `is_separated _` assumption. Also add `nhds_set` versions of some lemmas. ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean Modified src/topology/nhds_set.lean + theorem nhds_set_diagonal Modified src/topology/subset_properties.lean + theorem is_compact_diagonal Modified src/topology/uniform_space/basic.lean + theorem is_compact.nhds_set_basis_uniformity - theorem mem_map_iff_exists_image' +/- theorem mem_uniformity_of_uniform_continuous_invariant + theorem nhds_set_diagonal_le_uniformity + theorem uniformity_prod_eq_comap_prod Modified src/topology/uniform_space/compact_separated.lean +/- theorem compact_space.uniform_continuous_of_continuous +/- theorem compact_space_uniformity +/- theorem continuous.tendsto_uniformly - theorem is_compact.uniform_continuous_on_of_continuous' +/- theorem is_compact.uniform_continuous_on_of_continuous + theorem nhds_set_diagonal_eq_uniformity + theorem unique_uniformity_of_compact - theorem unique_uniformity_of_compact_t2 2022-09-11 12:05:08 c8c740d feat(data/fintype/basic): `fintype.to_finset_prod` (#16459) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem set.to_finset_prod 2022-09-10 19:00:22 5e78882 feat(algebra/parity): Primes are not square (#16430) and a few other basic results about `is_square`. ESTIMATED CHANGES Modified src/algebra/parity.lean + theorem even.is_square_pow + theorem even.is_square_zpow + theorem irreducible.not_square + theorem is_square.not_irreducible + theorem is_square.not_prime + theorem is_square.pow + theorem is_square.zpow +/- theorem is_square_zero + theorem prime.not_square 2022-09-10 18:07:07 ba6b142 refactor(analysis/normed_space/spectrum): generalize Gelfand-Mazur away from `normed_division_ring` (#16448) This generalizes the Gelfand-Mazur theorem so that it does not require the hypothesis that the algebra is a `normed_division_ring`, but instead is only a `normed_ring` in which the nonzero elements are precisely the units. This is important for applications of the Gelfand-Mazur theorem in which one may not be able to prove *a priori* that `∥a * b∥ = ∥a∥ * ∥b∥`, even though it may follow *a posteriori* from the Gelfand-Mazur isomorphism. An explicit example of this is the quotient of a complex Banach algebra by a maximal ideal, which is the use case that prompted this change. ESTIMATED CHANGES Modified src/analysis/normed_space/spectrum.lean 2022-09-10 10:02:38 7fd4a0b feat(probability/stopping): generalize `mem_ℒp_stopped_value` (#16369) Also rename many lemmas which had names `*_of_encodable` but took `countable` arguments since a recent PR which replaced all `encodable` by `countable` but did not touch the names. ESTIMATED CHANGES Modified src/probability/martingale/basic.lean Modified src/probability/stopping.lean +/- theorem measure_theory.integrable_stopped_value + theorem measure_theory.integrable_stopped_value_of_mem_finset + theorem measure_theory.is_stopping_time.measurable_set_inter_le_const_iff + theorem measure_theory.is_stopping_time.measurable_space_le_of_countable - theorem measure_theory.is_stopping_time.measurable_space_le_of_encodable + theorem measure_theory.is_stopping_time.measurable_space_le_of_le +/- theorem measure_theory.mem_ℒp_stopped_value + theorem measure_theory.mem_ℒp_stopped_value_of_mem_finset + theorem measure_theory.stopped_value_eq' + theorem measure_theory.stopped_value_eq_of_mem_finset 2022-09-10 01:42:57 f7d03fe feat(counterexamples/sorgenfrey_line): new file (#14820) Define the Sorgenfrey line and prove that it is a normal topological space but its product with itself is not a normal topological space. ESTIMATED CHANGES Added counterexamples/sorgenfrey_line.lean + theorem sorgenfrey_line.continuous_to_real + theorem sorgenfrey_line.dense_range_coe_rat + theorem sorgenfrey_line.exists_Ico_disjoint_closed + theorem sorgenfrey_line.is_clopen_Ici + theorem sorgenfrey_line.is_clopen_Ici_prod + theorem sorgenfrey_line.is_clopen_Ico + theorem sorgenfrey_line.is_clopen_Iio + theorem sorgenfrey_line.is_closed_antidiagonal + theorem sorgenfrey_line.is_closed_iff + theorem sorgenfrey_line.is_closed_of_subset_antidiagonal + theorem sorgenfrey_line.is_open_Ici + theorem sorgenfrey_line.is_open_Ico + theorem sorgenfrey_line.is_open_iff + theorem sorgenfrey_line.map_to_real_nhds + theorem sorgenfrey_line.nhds_antitone_basis_Ico_inv_pnat + theorem sorgenfrey_line.nhds_basis_Ico + theorem sorgenfrey_line.nhds_basis_Ico_inv_pnat + theorem sorgenfrey_line.nhds_basis_Ico_rat + theorem sorgenfrey_line.nhds_countable_basis_Ico_inv_pnat + theorem sorgenfrey_line.nhds_eq_comap + theorem sorgenfrey_line.nhds_eq_map + theorem sorgenfrey_line.nhds_prod_antitone_basis_inv_pnat + theorem sorgenfrey_line.not_metrizable_space + theorem sorgenfrey_line.not_normal_space_prod + theorem sorgenfrey_line.not_second_countable_topology + def sorgenfrey_line.to_real + def sorgenfrey_line Modified src/order/filter/bases.lean + theorem filter.has_antitone_basis.has_basis_ge + theorem filter.has_basis.principal_inf Modified src/topology/algebra/order/basic.lean + theorem nhds_within_Ici_basis_Ico Modified src/topology/connected.lean Modified src/topology/paracompact.lean 2022-09-09 23:42:10 48e3d6a feat(linear_algebra/linear_pmap): add_action and mul_action (#16068) This PR defines the instances `has_vadd`, `add_action` and `mul_action` for `linear_pmap`. ESTIMATED CHANGES Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.coe_vadd + theorem linear_pmap.ext' + theorem linear_pmap.smul_domain + theorem linear_pmap.vadd_apply + theorem linear_pmap.vadd_domain 2022-09-09 16:10:08 22a9066 feat(topology/algebra/module/weak_dual): `weak_space` is functorial (#16441) ESTIMATED CHANGES Modified src/topology/algebra/module/weak_dual.lean + theorem weak_space.coe_map + def weak_space.map + theorem weak_space.map_apply 2022-09-09 15:00:27 c3d2b3b feat(analysis/inner_product_space/basic): completion of an `inner_product_space` is an `inner_product_space` (#16407) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem uniform_space.completion.inner_coe Modified src/topology/algebra/group_completion.lean + theorem uniform_space.completion.dense_inducing_to_compl 2022-09-09 12:28:35 3a0b839 feat(analysis/{normed/group}/seminorm): Hom classes for seminorms (#16227) Introduce `add_group_seminorm_class`, `group_seminorm_class`, `seminorm_class`, the hom classes of `add_group_seminorm`, `group_seminorm`, `seminorm`. ESTIMATED CHANGES Modified counterexamples/seminorm_lattice_not_distrib.lean Modified src/algebra/order/absolute_value.lean Added src/algebra/order/hom/basic.lean + theorem le_map_add_map_div Modified src/analysis/convex/gauge.lean Modified src/analysis/locally_convex/with_seminorms.lean Modified src/analysis/normed/group/seminorm.lean +/- theorem group_seminorm.comp_zero - theorem group_seminorm.div_rev +/- theorem group_seminorm.ext - theorem group_seminorm.le_insert' - theorem group_seminorm.le_insert + theorem le_map_add_map_div' + theorem map_div_le_add + theorem map_div_rev Modified src/analysis/seminorm.lean + theorem seminorm.bdd_below_range_add - theorem seminorm.le_insert' - theorem seminorm.le_insert +/- def seminorm.pullback - theorem seminorm.sub_rev 2022-09-08 23:06:22 75cc1ae feat(analysis/normed/group/basic): add `norm_multiset_sum_le` (#16419) ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem nnnorm_multiset_sum_le + theorem norm_multiset_sum_le 2022-09-08 20:32:32 ba346d8 feat(order/upper_lower): `Iic` is not bounded below (#16425) Nonempty lower sets are not bounded below in a `no_min_order`, and dual. ESTIMATED CHANGES Modified src/order/upper_lower.lean + theorem is_lower_set.not_bdd_below + theorem is_upper_set.not_bdd_above + theorem not_bdd_above_Ici + theorem not_bdd_above_Ioi + theorem not_bdd_below_Iic + theorem not_bdd_below_Iio 2022-09-08 20:32:30 d2d6652 feat(number_theory/legendre_symbol/jacobi_symbol): add new file with the definition and properties of the Jacobi symbol (#16395) This PR consists of a new file, `number_theory.legendre_symbol.jacobi_symbol`, that contains a definition of the Jacobi symbol (and sets up notation `[a | b]ⱼ` for it) and then proves a number of results, e.g., multiplicativity in both arguments, expressions for the cases `a = -1`, `a = 2`, `a = -2`, and several versions of quadratic reciprocity. It also proves that the symbol depends on a only through its residue class `mod b` and that it depends on `b` only through its residue class `mod 4*a` (quadratic reciprocity is needed for the latter). The code has already been quite thoroughly reviewed while it was part of #16290 (which then was reduced to the auxiliary results needed for the Jacobi symbol code). Discussion on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Jacobi.20symbol/near/295816984) ESTIMATED CHANGES Added src/number_theory/legendre_symbol/jacobi_symbol.lean + theorem zmod.is_square_of_jacobi_sym_eq_one + def zmod.jacobi_sym + theorem zmod.jacobi_sym_eq_one_or_neg_one + theorem zmod.jacobi_sym_eq_zero_iff + theorem zmod.jacobi_sym_eq_zero_iff_not_coprime + theorem zmod.jacobi_sym_mod_left' + theorem zmod.jacobi_sym_mod_left + theorem zmod.jacobi_sym_mod_right' + theorem zmod.jacobi_sym_mod_right + theorem zmod.jacobi_sym_mul_left + theorem zmod.jacobi_sym_mul_right' + theorem zmod.jacobi_sym_mul_right + theorem zmod.jacobi_sym_ne_zero + theorem zmod.jacobi_sym_neg + theorem zmod.jacobi_sym_neg_one + theorem zmod.jacobi_sym_neg_two + theorem zmod.jacobi_sym_one_left + theorem zmod.jacobi_sym_one_right + theorem zmod.jacobi_sym_pow_left + theorem zmod.jacobi_sym_pow_right + theorem zmod.jacobi_sym_quadratic_reciprocity' + theorem zmod.jacobi_sym_quadratic_reciprocity + theorem zmod.jacobi_sym_quadratic_reciprocity_one_mod_four' + theorem zmod.jacobi_sym_quadratic_reciprocity_one_mod_four + theorem zmod.jacobi_sym_quadratic_reciprocity_three_mod_four + theorem zmod.jacobi_sym_sq_one' + theorem zmod.jacobi_sym_sq_one + theorem zmod.jacobi_sym_trichotomy + theorem zmod.jacobi_sym_two + theorem zmod.jacobi_sym_value + theorem zmod.jacobi_sym_zero_left + theorem zmod.jacobi_sym_zero_right + theorem zmod.legendre_sym.to_jacobi_sym + theorem zmod.nonsquare_iff_jacobi_sym_eq_neg_one + theorem zmod.nonsquare_of_jacobi_sym_eq_neg_one + def zmod.qr_sign + theorem zmod.qr_sign_eq_iff_eq + theorem zmod.qr_sign_mul_left + theorem zmod.qr_sign_mul_right + theorem zmod.qr_sign_neg_one_pow + theorem zmod.qr_sign_sq_eq_one + theorem zmod.qr_sign_symm 2022-09-08 20:32:29 662786a refactor(data/{finite,fintype}): redefine `infinite` in terms of `finite`, move to `data.finite.defs` (#16390) ESTIMATED CHANGES Modified src/data/finite/basic.lean - theorem finite_or_infinite Modified src/data/finite/defs.lean +/- theorem finite.of_bijective + theorem finite_or_infinite + theorem not_finite + theorem not_finite_iff_infinite + theorem not_infinite_iff_finite Modified src/data/fintype/basic.lean + theorem infinite.of_not_fintype - theorem not_finite - theorem not_finite_iff_infinite - theorem not_infinite_iff_finite Modified src/data/fintype/card_embedding.lean +/- theorem fintype.card_embedding_eq_of_infinite Modified src/data/set/finite.lean - theorem set.infinite.to_subtype Modified src/field_theory/is_alg_closed/basic.lean 2022-09-08 20:32:28 e0bdbbe feat(combinatorics/young_diagram): add transposes, rows and columns of Young diagrams (#16120) Add transposes, rows (and row lengths), columns (and column lengths) of Young diagrams. ESTIMATED CHANGES Modified src/combinatorics/young_diagram.lean + def young_diagram.col + theorem young_diagram.col_eq_prod + def young_diagram.col_len + theorem young_diagram.col_len_anti + theorem young_diagram.col_len_eq_card + theorem young_diagram.col_len_transpose + theorem young_diagram.mem_col_iff + theorem young_diagram.mem_iff_lt_col_len + theorem young_diagram.mem_iff_lt_row_len + theorem young_diagram.mem_mk + theorem young_diagram.mem_row_iff + theorem young_diagram.mem_transpose + theorem young_diagram.mk_mem_col_iff + theorem young_diagram.mk_mem_row_iff + def young_diagram.row + theorem young_diagram.row_eq_prod + def young_diagram.row_len + theorem young_diagram.row_len_anti + theorem young_diagram.row_len_eq_card + theorem young_diagram.row_len_transpose + def young_diagram.transpose + theorem young_diagram.transpose_eq_iff + theorem young_diagram.transpose_eq_iff_eq_transpose + theorem young_diagram.transpose_le_iff + def young_diagram.transpose_order_iso + theorem young_diagram.transpose_transpose 2022-09-08 20:32:26 00ab776 feat(ring_theory/dedekind_domain/integer_unit): define S-integers and S-units (#15646) ESTIMATED CHANGES Added src/ring_theory/dedekind_domain/S_integer.lean + def set.integer + theorem set.integer_eq + theorem set.integer_valuation_le_one + def set.unit + theorem set.unit_eq + def set.unit_equiv_units_integer + theorem set.unit_valuation_eq_one Modified src/ring_theory/subring/basic.lean + theorem subring.coe_infi + theorem subring.mem_infi Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation.mem_unit_group_iff +/- theorem valuation_subring.mem_unit_group_iff 2022-09-08 17:38:33 cd7f062 feat(combinatorics/simple_graph/triangle/basic): add ε-triangle-free far graph predicate (#12988) Define the property of being triangle-free far. This comes up in the triangle counting and triangle removal lemmas. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.coe_edge_finset + theorem simple_graph.delete_edges_sdiff_eq_of_le + theorem simple_graph.delete_far.mono + def simple_graph.delete_far + theorem simple_graph.delete_far_iff + theorem simple_graph.edge_finset_delete_edges + theorem simple_graph.edge_finset_mono + theorem simple_graph.edge_set_delete_edges + theorem simple_graph.edge_set_mono Modified src/combinatorics/simple_graph/clique.lean + theorem simple_graph.is_n_clique.not_clique_free Added src/combinatorics/simple_graph/triangle/basic.lean + theorem simple_graph.clique_free.not_far_from_triangle_free + theorem simple_graph.far_from_triangle_free.clique_finset_nonempty' + theorem simple_graph.far_from_triangle_free.clique_finset_nonempty + theorem simple_graph.far_from_triangle_free.mono + theorem simple_graph.far_from_triangle_free.nonpos + theorem simple_graph.far_from_triangle_free.not_clique_free + def simple_graph.far_from_triangle_free + theorem simple_graph.far_from_triangle_free_iff 2022-09-08 16:05:58 d645d0e feat(analysis/calculus/uniform_limits_deriv): Swap limits and derivatives (#14090) This commit proves that the derivative of the pointwise limit of a series of functions is the limit of the derivatives when the derivatives converge uniformly in some closed ball. This and #13500 are two fundamental theorems for bootstrapping the theory of Dirichlet series. This theory underlies my ongoing attempts to prove the density of squarefree integers. ESTIMATED CHANGES Added src/analysis/calculus/uniform_limits_deriv.lean + theorem difference_quotients_converge_uniformly + theorem has_deriv_at_of_tendsto_uniformly + theorem has_deriv_at_of_tendsto_uniformly_on + theorem has_deriv_at_of_tendsto_uniformly_on_filter + theorem has_fderiv_at_of_tendsto_uniformly + theorem has_fderiv_at_of_tendsto_uniformly_on + theorem has_fderiv_at_of_tendsto_uniformly_on_filter + theorem uniform_cauchy_seq_on_ball_of_tendsto_uniformly_on_ball_deriv + theorem uniform_cauchy_seq_on_ball_of_tendsto_uniformly_on_ball_fderiv + theorem uniform_cauchy_seq_on_filter.one_smul_right + theorem uniform_cauchy_seq_on_filter_of_tendsto_uniformly_on_filter_deriv + theorem uniform_cauchy_seq_on_filter_of_tendsto_uniformly_on_filter_fderiv Modified src/analysis/normed/group/basic.lean + theorem normed_add_comm_group.tendsto_uniformly_on_zero + theorem normed_add_comm_group.uniform_cauchy_seq_on_filter_iff_tendsto_uniformly_on_filter_zero + theorem normed_add_comm_group.uniform_cauchy_seq_on_iff_tendsto_uniformly_on_zero Added src/order/filter/curry.lean + def filter.curry + theorem filter.curry_le_prod + theorem filter.eventually_curry_iff + theorem filter.tendsto.curry Modified src/topology/metric_space/basic.lean + theorem metric.tendsto_uniformly_on_filter_iff 2022-09-08 13:17:13 aff61c0 chore(algebra/big_operators/basic): golf (#16427) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean 2022-09-08 13:17:12 d75314b fix(data/nat/interval): do not dedup when implementing `finset.Icc` etc (#16423) This means that `finset.Iic n` no longer has quadratic complexity. `#eval (finset.Iic 200000).card` is now almost instant rather than taking a very long time. ESTIMATED CHANGES Modified src/data/nat/interval.lean +/- theorem nat.Icc_eq_range' +/- theorem nat.Ico_eq_range' +/- theorem nat.Ioc_eq_range' +/- theorem nat.Ioo_eq_range' +/- theorem nat.card_Icc +/- theorem nat.card_Ico +/- theorem nat.card_Ioc +/- theorem nat.card_Ioo 2022-09-08 13:17:09 370dabe feat(algebra/big_operators/multiset): add `prod_map_le_prod_map` (#16418) ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_map_le_prod_map Modified src/algebra/big_operators/order.lean 2022-09-08 10:32:14 a073586 fix(*): fix padding around notations (#16333) I noticed a bunch of issues around padding in mathport, so I went through and fixed all the padding issues I could find in mathlib. ESTIMATED CHANGES Modified archive/examples/prop_encodable.lean Modified archive/sensitivity.lean Modified src/algebra/big_operators/intervals.lean Modified src/algebraic_geometry/presheafed_space/gluing.lean Modified src/algebraic_geometry/projective_spectrum/scheme.lean Modified src/algebraic_topology/simplicial_object.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/data/bracket.lean Modified src/data/bundle.lean Modified src/data/finset/fold.lean Modified src/data/list/basic.lean Modified src/data/list/perm.lean Modified src/data/multiset/fold.lean Modified src/data/nat/factorization/basic.lean Modified src/data/rat/nnrat.lean Modified src/data/rbtree/insert.lean Modified src/data/real/nnreal.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/group_theory/eckmann_hilton.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/span.lean Modified src/linear_algebra/special_linear_group.lean Modified src/linear_algebra/tensor_power.lean Modified src/logic/function/basic.lean Modified src/logic/relator.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/torus_integral.lean Modified src/order/basic.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/witt_vector/isocrystal.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/zfc/basic.lean Modified src/tactic/omega/find_ees.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/reserved_notation.lean Modified src/tactic/rewrite.lean Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/uniform_convergence_topology.lean Modified test/noncomm_ring.lean Modified test/simps.lean 2022-09-08 10:32:13 4c0aa6e feat(analysis/schwartz): Definition of the Schwartz space (#15850) This PR adds the definition of the Schwartz space and by abstract results also of tempered distributions. We prove basic algebraic and topological properties of the Schwartz space. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Added src/analysis/schwartz_space.lean + theorem schwartz_map.add_apply + theorem schwartz_map.bounds_bdd_below + theorem schwartz_map.bounds_nonempty + theorem schwartz_map.coe_coe_hom + theorem schwartz_map.coe_fn_zero + def schwartz_map.coe_hom + theorem schwartz_map.coe_hom_injective + theorem schwartz_map.coe_zero + theorem schwartz_map.decay + theorem schwartz_map.decay_add_le_aux + theorem schwartz_map.decay_neg_aux + theorem schwartz_map.decay_smul_aux + theorem schwartz_map.ext + theorem schwartz_map.le_seminorm + theorem schwartz_map.le_seminorm_aux + def schwartz_map.seminorm + def schwartz_map.seminorm_aux + theorem schwartz_map.seminorm_aux_add_le + theorem schwartz_map.seminorm_aux_le_bound + theorem schwartz_map.seminorm_aux_nonneg + theorem schwartz_map.seminorm_aux_smul_le + theorem schwartz_map.seminorm_aux_zero + theorem schwartz_map.seminorm_le_bound + theorem schwartz_map.smooth + theorem schwartz_map.smul_apply + theorem schwartz_map.sub_apply + theorem schwartz_map.zero_apply + structure schwartz_map + def schwartz_seminorm_family + theorem schwartz_with_seminorms 2022-09-08 10:32:12 9b6eef6 feat(number_theory/modular_forms/congruence_subgroups): Add definition of congruence subgroups. (#15159) This contains the definition of a congruence subgroup of `SL(2,Z)` and defines Gamma1, Gamma0 and full level subgroups. It also contains some basic results about them. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.two_mul_expl Modified src/group_theory/subgroup/pointwise.lean + theorem subgroup.normal.conj_act Modified src/linear_algebra/special_linear_group.lean + theorem matrix.special_linear_group.SL2_inv_expl + theorem matrix.special_linear_group.SL2_inv_expl_det Added src/number_theory/modular_forms/congruence_subgroups.lean + def Gamma0 + theorem Gamma0_det + theorem Gamma0_is_congruence + theorem Gamma0_mem + def Gamma1' + def Gamma1 + theorem Gamma1_in_Gamma0 + theorem Gamma1_is_congruence + theorem Gamma1_mem' + theorem Gamma1_mem + theorem Gamma1_to_Gamma0_mem + def Gamma + def Gamma_0_map + theorem Gamma_cong_eq_self + theorem Gamma_is_cong_sub + theorem Gamma_mem' + theorem Gamma_mem + theorem Gamma_normal + theorem Gamma_one_top + theorem Gamma_zero_bot + theorem SL_reduction_mod_hom_val + theorem conj_cong_is_cong + def is_congruence_subgroup + theorem is_congruence_subgroup_trans 2022-09-08 08:00:09 572e54a fix(algebra/big_operators/multiset): rename `prod_le_sum_prod` to `prod_le_prod_map` (#16420) ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_le_prod_map - theorem multiset.prod_le_sum_prod Modified src/topology/algebra/polynomial.lean 2022-09-08 06:45:07 fd5d306 chore(measure_theory/function/conditional_expectation): change the definition of `condexp` (#16325) Change the definition of `condexp` slightly to have `μ[f|m] = 0` when `f` is not integrable, instead of `μ[f|m] =ᵐ[μ] 0`. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation/basic.lean + theorem measure_theory.condexp_L1_measure_zero +/- theorem measure_theory.condexp_L1_zero +/- theorem measure_theory.condexp_undef Modified src/measure_theory/function/conditional_expectation/indicator.lean Modified src/measure_theory/function/conditional_expectation/real.lean Modified src/probability/conditional_expectation.lean 2022-09-08 02:05:20 5ebb7d8 feat(analysis/convex/gauge): unit ball of the gauge seminorm (#16413) ESTIMATED CHANGES Modified src/analysis/convex/gauge.lean + theorem gauge_seminorm_ball_one 2022-09-07 23:23:52 ed4882b chore(data/finset/basic): generalize `finset.nonempty_mk_coe` to `nonempty_mk` (#16399) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.nonempty_mk - theorem finset.nonempty_mk_coe 2022-09-07 23:23:51 019df1c feat(order/max): equivalence of no_top_order and no_max_order for linear orders (#16341) ESTIMATED CHANGES Modified src/order/max.lean + theorem no_bot_order.to_no_min_order + theorem no_bot_order_iff_no_min_order + theorem no_top_order.to_no_max_order + theorem no_top_order_iff_no_max_order 2022-09-07 23:23:50 eae1ec8 feat(analysis/normed/group/add_torsor): `normed_add_torsor` instance for `affine_subspace` (#16339) Add an instance that a nonempty affine subspace of a `normed_add_torsor` is itself a `normed_add_torsor` (building on the existing instance that says such a subspace of an `add_torsor` is itself an `add_torsor`). Note that this instance uses `@[nolint fails_quickly]`, because of a typeclass loop with the `add_torsor.nonempty` instance. I don't know the right way to avoid that typeclass loop, but I don't think it's meaningfully a new issue, since exactly the same nolint appears in `nolints.txt` for `affine_subspace.to_add_torsor`. ESTIMATED CHANGES Modified src/analysis/normed/group/add_torsor.lean 2022-09-07 15:10:40 56e4f0d feat(analysis/seminorm): `restrict_scalars` for seminorms (#16401) ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.coe_restrict_scalars + theorem seminorm.restrict_scalars_ball 2022-09-07 15:10:39 13c6c43 feat(group_theory/subgroup/basic): Centralizer of closure is intersection of centralizers (#16394) This PR adds some more API for `subgroup.centralizer` and proves that the centralizer of a closure is the intersection of the centralizers. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.centralizer_closure + theorem subgroup.centralizer_le + theorem subgroup.le_centralizer_iff 2022-09-07 15:10:37 6211945 feat(analysis/complex/upper_half_plane): Functions bounded at infinity (#15009) The defines the notion of functions on the upper half plane being bounded at infinity and zero at infinity. This is required for #13250. ESTIMATED CHANGES Added src/analysis/complex/upper_half_plane/functions_bounded_at_infty.lean + def upper_half_plane.at_im_infty + theorem upper_half_plane.at_im_infty_basis + theorem upper_half_plane.at_im_infty_mem + def upper_half_plane.bounded_at_im_infty_subalgebra + theorem upper_half_plane.bounded_mem + def upper_half_plane.is_bounded_at_im_infty + def upper_half_plane.is_zero_at_im_infty + theorem upper_half_plane.prod_of_bounded_is_bounded + theorem upper_half_plane.zero_at_im_infty + def upper_half_plane.zero_at_im_infty_submodule + theorem upper_half_plane.zero_form_is_bounded_at_im_infty Added src/order/filter/zero_and_bounded_at_filter.lean + def filter.bounded_at_filter + def filter.bounded_filter_subalgebra + def filter.bounded_filter_submodule + def filter.zero_at_filter + def filter.zero_at_filter_add_submonoid + theorem filter.zero_at_filter_is_bounded_at_filter + def filter.zero_at_filter_submodule + theorem filter.zero_is_bounded_at_filter + theorem filter.zero_is_zero_at_filter 2022-09-07 13:23:09 41626f7 feat(data/polynomial/degree/definitions): add `degree_X_sub_C_le` (#16404) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_X_sub_C_le +/- theorem polynomial.nat_degree_X_sub_C_le 2022-09-07 09:54:37 63014d2 feat(order/interval): Order intervals (#14807) Define `nonempty_interval`, the type of nonempty intervals in an order, namely pairs where the second element is greater than the first, and `interval α` as `with_bot (nonempty_interval α)`. ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.map_comm Modified src/data/set/lattice.lean + theorem set.Inter₂_subset_of_subset + theorem set.subset_Union₂_of_subset Modified src/order/bounded_order.lean + theorem with_bot.coe_inj + theorem with_bot.coe_injective + theorem with_bot.map_comm + theorem with_top.map_comm Added src/order/interval.lean + theorem interval.coe_Inf + theorem interval.coe_bot + theorem interval.coe_coe + theorem interval.coe_dual + def interval.coe_hom + theorem interval.coe_inf + theorem interval.coe_infi + theorem interval.coe_infi₂ + theorem interval.coe_inj + theorem interval.coe_injective + theorem interval.coe_pure + theorem interval.coe_ssubset_coe + theorem interval.coe_subset_coe + theorem interval.coe_top + theorem interval.disjoint_coe + def interval.dual + theorem interval.dual_bot + theorem interval.dual_map + theorem interval.dual_pure + theorem interval.dual_top + def interval.map + theorem interval.map_map + theorem interval.map_pure + def interval.pure + theorem interval.pure_injective + theorem interval.«exists» + theorem interval.«forall» + def interval + theorem nonempty_interval.coe_coe_hom + theorem nonempty_interval.coe_dual + def nonempty_interval.coe_hom + theorem nonempty_interval.coe_nonempty + theorem nonempty_interval.coe_pure + theorem nonempty_interval.coe_pure_interval + theorem nonempty_interval.coe_ssubset_coe + theorem nonempty_interval.coe_subset_coe + theorem nonempty_interval.coe_sup_interval + theorem nonempty_interval.coe_top + theorem nonempty_interval.coe_top_interval + def nonempty_interval.dual + theorem nonempty_interval.dual_map + theorem nonempty_interval.dual_pure + theorem nonempty_interval.dual_top + theorem nonempty_interval.fst_dual + theorem nonempty_interval.fst_sup + theorem nonempty_interval.le_def + def nonempty_interval.map + theorem nonempty_interval.map_map + theorem nonempty_interval.map_pure + theorem nonempty_interval.mem_coe_interval + theorem nonempty_interval.mem_def + theorem nonempty_interval.mem_mk + def nonempty_interval.pure + theorem nonempty_interval.pure_injective + theorem nonempty_interval.snd_dual + theorem nonempty_interval.snd_sup + def nonempty_interval.to_dual_prod + theorem nonempty_interval.to_dual_prod_apply + def nonempty_interval.to_dual_prod_hom + theorem nonempty_interval.to_dual_prod_injective + structure nonempty_interval 2022-09-07 08:06:16 9362a5b docs(data/polynomial/ring_division, field_theory/splitting_field): update docs (#16406) ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean Modified src/field_theory/splitting_field.lean 2022-09-07 06:39:14 914d421 feat(linear_algebra/matrix): A positive definite matrix has a positive determinant (#16376) ESTIMATED CHANGES Modified src/linear_algebra/matrix/pos_def.lean + theorem matrix.pos_def.det_pos Modified src/linear_algebra/matrix/spectrum.lean + theorem matrix.is_hermitian.conj_transpose_eigenvector_matrix + theorem matrix.is_hermitian.conj_transpose_eigenvector_matrix_inv + theorem matrix.is_hermitian.eigenvalues_eq + theorem matrix.is_hermitian.eigenvector_matrix_apply + theorem matrix.is_hermitian.eigenvector_matrix_inv_apply 2022-09-07 03:48:54 18cf2ca chore(scripts): update nolints.txt (#16409) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-09-06 20:23:05 a0d1a84 feat(topology/sheaves/*): sheafification preserves zero morphisms (#16381) ESTIMATED CHANGES Modified src/category_theory/sites/plus.lean + theorem category_theory.grothendieck_topology.diagram_nat_trans_zero + theorem category_theory.grothendieck_topology.plus_map_zero Modified src/category_theory/sites/sheafification.lean 2022-09-06 17:23:42 b799b43 feat(data/fin/basic): eq_succ_of_ne_zero, coe_cast_pred, succ_pred_above_succ (#16294) This PR introduces three basic lemmas about `fin`. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.coe_cast_pred + theorem fin.eq_succ_of_ne_zero + theorem fin.succ_pred_above_succ 2022-09-06 14:33:30 3c227fc feat(data/nat/parity): add lemmas nat.bit{0|1}_mod_bit0 (#16396) This PR adds a pair of lemmas that complement [nat.bit0_div_bit0](https://leanprover-community.github.io/mathlib_docs/data/nat/parity.html#nat.bit0_div_bit0) and [nat.bit1_div_bit0](https://leanprover-community.github.io/mathlib_docs/data/nat/parity.html#nat.bit1_div_bit0), namely ```lean @[simp] lemma bit0_mod_bit0 : bit0 n % bit0 m = bit0 (n % m) := ... @[simp] lemma bit1_mod_bit0 : bit1 n % bit0 m = bit1 (n % m) := ... ``` They will be helpful in an upcoming PR that introduces a `norm_num` extension for computing Jacobi symbols. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/bit0.2Fbit1.20and.20mod/near/297228893) ESTIMATED CHANGES Modified src/data/nat/basic.lean +/- theorem nat.bit0_mod_two +/- theorem nat.bit1_mod_two Modified src/data/nat/parity.lean + theorem nat.bit0_mod_bit0 + theorem nat.bit1_mod_bit0 2022-09-06 14:33:29 3f409bd chore(category_theory/*): Lint (#16366) Satisfy the `fintype_finite` linter. ESTIMATED CHANGES Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/shapes/biproducts.lean +/- theorem category_theory.limits.has_biproduct.of_has_coproduct +/- theorem category_theory.limits.has_biproduct.of_has_product Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/preadditive/biproducts.lean 2022-09-06 13:43:25 b3b5475 feat(data/finsupp/ne_locus): add a not-member lemma (#16245) This PR adds a convenience lemma characterizing non-membership in the `ne_locus`. `simp` proves this lemma, but given the position of the negations in `mem_ne_locus`, this form is also convenient. ESTIMATED CHANGES Modified src/data/finsupp/ne_locus.lean + theorem finsupp.not_mem_ne_locus 2022-09-06 10:21:12 a67ec23 feat(category_theory/sites/sheaf): category of sheaf is preadditive when target is preadditive (#16324) `Sheaf J A` is preadditive when `A` is ESTIMATED CHANGES Modified src/category_theory/sites/sheaf.lean + theorem category_theory.Sheaf.hom.add_app 2022-09-06 07:23:29 fbebf1a chore(algebra/order/ring): golf a few proofs (#16398) ESTIMATED CHANGES Modified src/algebra/order/ring.lean 2022-09-06 07:23:28 e11bafa feat(category_theory/limits/shapes/products): if each `f b ⟶ g b` is mono, then `∏ f ⟶ ∏ g` is mono (#16180) and its dual version: if each `f b ⟶ g b` is epi, then `∐ f ⟶ ∐ g` is epi ESTIMATED CHANGES Modified src/category_theory/limits/has_limits.lean Modified src/category_theory/limits/shapes/products.lean 2022-09-06 05:41:24 f0c55c2 feat(measure_theory/measure/measure_space): add variants of `ae_restrict_Union_eq` (#16370) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_eq_restrict_Union_iff + theorem measure_theory.ae_eq_restrict_bUnion_finset_iff + theorem measure_theory.ae_eq_restrict_bUnion_iff + theorem measure_theory.ae_restrict_bUnion_eq + theorem measure_theory.ae_restrict_bUnion_finset_eq Modified src/order/filter/basic.lean +/- theorem filter.eventually_supr 2022-09-06 02:53:11 5890310 feat(src/data/*): lemmas about emptiness for finset/multiset/vector coercions (#16113) Adds basic lemmas about whether the result of `to_list` is empty for various data structures. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/periodic.lean Modified src/data/finset/basic.lean +/- theorem finset.coe_to_list + theorem finset.empty_to_list +/- theorem finset.mem_to_list + theorem finset.nonempty.not_empty_to_list + theorem finset.nonempty.to_list_ne_nil +/- theorem finset.to_list_empty + theorem finset.to_list_eq_nil Modified src/data/multiset/basic.lean + theorem multiset.coe_eq_zero_iff_empty +/- theorem multiset.coe_to_list + theorem multiset.empty_to_list +/- theorem multiset.mem_to_list + theorem multiset.to_list_eq_nil +/- theorem multiset.to_list_zero Modified src/data/vector/basic.lean + theorem vector.empty_to_list_eq_ff + theorem vector.not_empty_to_list + theorem vector.to_list_empty Modified src/data/vector/mem.lean +/- theorem vector.not_mem_zero Modified src/field_theory/splitting_field.lean Modified src/number_theory/class_number/admissible_absolute_value.lean 2022-09-06 00:11:44 1ef3412 refactor(order/rel_classes): ditch `is_strict_total_order'` (#16069) Since Lean 3.46, `is_strict_total_order` and `is_strict_total_order'` are exactly the same typeclass. Hence, we remove the latter for the former. ESTIMATED CHANGES Modified src/data/list/lex.lean Modified src/data/pi/lex.lean Modified src/order/rel_classes.lean - theorem is_strict_total_order'.swap + theorem is_strict_total_order.swap - def linear_order_of_STO' + def linear_order_of_STO Modified src/order/rel_iso.lean Modified src/set_theory/cardinal/ordinal.lean Modified src/topology/metric_space/emetric_paracompact.lean Modified src/topology/partition_of_unity.lean 2022-09-05 22:37:47 3e06797 feat(algebra/monoid_algebra/no_zero_divisors): left/right order implies no zero divisors (#16299) This PR is split off from #15983. It contains only the result about zero-divisors in the presence of a left/right-ordered appropriately cancellable semigroup. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2315983.20no-zero.20divisors.20and.20right.20orderability) ESTIMATED CHANGES Added src/algebra/monoid_algebra/no_zero_divisors.lean + theorem add_monoid_algebra.left.exists_add_of_mem_support_single_mul + theorem add_monoid_algebra.mul_apply_add_eq_mul_of_forall_ne + theorem add_monoid_algebra.no_zero_divisors.of_left_ordered + theorem add_monoid_algebra.no_zero_divisors.of_right_ordered + theorem add_monoid_algebra.right.exists_add_of_mem_support_single_mul 2022-09-05 19:41:21 c376260 chore(analysis/analytic/isolated_zeros): tidy exists_has_sum_smul_of_apply_eq_zero (#16389) ESTIMATED CHANGES Modified src/analysis/analytic/isolated_zeros.lean 2022-09-05 19:41:20 0377317 feat(algebra/group_power/basic): add `pow_mul_pow_eq_one` (#16328) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem pow_mul_pow_eq_one 2022-09-05 18:04:23 d25f4d6 feat(linear_algebra/affine_space/affine_subspace): `vadd_mem_iff_mem_of_mem_direction` (#16383) Add a lemma similar to `vadd_mem_iff_mem_direction`, but where it's given that the vector is in `s.direction` and the `iff` is between the two points being in the subspace. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.vadd_mem_iff_mem_of_mem_direction 2022-09-05 16:20:52 8ac7e3b feat(topology/instances/nnreal): add `nnreal.pow_order_iso` (#16344) Also use it to redefine `nnreal.sqrt`. ESTIMATED CHANGES Modified src/data/real/sqrt.lean +/- theorem nnreal.le_sqrt_iff +/- theorem nnreal.mul_self_sqrt +/- theorem nnreal.sq_sqrt +/- theorem nnreal.sqrt_eq_iff_sq_eq +/- theorem nnreal.sqrt_le_iff +/- theorem nnreal.sqrt_mul_self +/- theorem nnreal.sqrt_one +/- theorem nnreal.sqrt_sq Modified src/topology/instances/nnreal.lean + def nnreal.pow_order_iso 2022-09-05 15:24:14 3f772d4 chore(category_theory/sites/compatible_plus): speed up ι_plus_comp_iso_hom (#16379) This failed when experimenting with `-T90000`; just squeezing the `simp`s seems to help a fair bit. ESTIMATED CHANGES Modified src/category_theory/sites/compatible_plus.lean 2022-09-05 12:48:24 7df02f8 feat(measure_theory/integral/circle_integral_transform.lean): name ch… (#16387) Change file name from `circle_integral_transform` to `circle_transform` to match the definitions. This is in preparation for #15356 ESTIMATED CHANGES Renamed src/measure_theory/integral/circle_integral_transform.lean to src/measure_theory/integral/circle_transform.lean 2022-09-05 12:48:23 0693084 refactor(linear_algebra/affine_space/finite_dimensional): change three lemmas to instances (#16331) I realised after the PR with these lemmas was approved that they are actually suitable to be instances (don't depend on any hypotheses that typeclass inference can't deduce), and making them such sometimes allows removing explicit `haveI` uses because typeclass inference can then find them automatically. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/finite_dimensional.lean - theorem finite_dimensional_direction_affine_span_insert - theorem finite_dimensional_vector_span_insert - theorem finite_dimensional_vector_span_insert_set 2022-09-05 12:48:22 4b4975c feat(): add a bunch of lemmas for use with Jacobi symbols (#16290) This PR introduces a number of lemmas that will be needed for proving results about the Jacobi symbol (to be introduced in a follow-up PR). (Originally, the Jacobi symbol results were included here; see the discussion below.) Discussion on [Zuilp](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Jacobi.20symbol/near/295816984). ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.pmap_append' + theorem list.pmap_append Modified src/data/nat/factorization/basic.lean + theorem nat.exists_eq_pow_mul_and_not_dvd Modified src/data/nat/parity.lean + theorem even.mod_even + theorem even.mod_even_iff + theorem odd.factors_ne_two + theorem odd.mod_even + theorem odd.mod_even_iff Modified src/data/sign.lean + theorem sign_type.range_eq Added src/data/zmod/coprime.lean + theorem zmod.eq_zero_iff_gcd_ne_one + theorem zmod.eq_zero_of_gcd_ne_one + theorem zmod.ne_zero_of_gcd_eq_one Modified src/number_theory/legendre_symbol/zmod_char.lean + theorem zmod.χ₄_int_mod_four + theorem zmod.χ₄_int_one_mod_four + theorem zmod.χ₄_int_three_mod_four + theorem zmod.χ₄_nat_mod_four + theorem zmod.χ₄_nat_one_mod_four + theorem zmod.χ₄_nat_three_mod_four + theorem zmod.χ₈_int_mod_eight + theorem zmod.χ₈_nat_mod_eight Modified src/ring_theory/int/basic.lean + theorem int.gcd_eq_one_of_gcd_mul_right_eq_one_left + theorem int.gcd_eq_one_of_gcd_mul_right_eq_one_right + theorem int.gcd_ne_one_iff_gcd_mul_right_ne_one 2022-09-05 12:48:21 0ab3171 feat(order/heyting/boundary): Co-Heyting boundary (#16257) Define the boundary of an element in a co-Heyting algebra. This generalizes the topological boundary as an operation on `closeds α`. ESTIMATED CHANGES Added src/order/heyting/boundary.lean + def coheyting.boundary + theorem coheyting.boundary_bot + theorem coheyting.boundary_eq_bot + theorem coheyting.boundary_hnot_hnot + theorem coheyting.boundary_hnot_le + theorem coheyting.boundary_idem + theorem coheyting.boundary_inf + theorem coheyting.boundary_inf_le + theorem coheyting.boundary_le + theorem coheyting.boundary_le_boundary_sup_sup_boundary_inf_left + theorem coheyting.boundary_le_boundary_sup_sup_boundary_inf_right + theorem coheyting.boundary_le_hnot + theorem coheyting.boundary_sup_le + theorem coheyting.boundary_sup_sup_boundary_inf + theorem coheyting.boundary_top + theorem coheyting.hnot_boundary + theorem coheyting.hnot_eq_top_iff_exists_boundary + theorem coheyting.hnot_hnot_sup_boundary + theorem coheyting.inf_hnot_self 2022-09-05 11:05:45 3a8665a feat(tactic/positivity): Handle division of integers (#16163) Extend `positivity_div` to handle division of integers. ESTIMATED CHANGES Modified src/tactic/positivity.lean Modified test/positivity.lean 2022-09-05 08:52:17 44c9024 feat(probability/martingale/basic): the stopped process of a submartingale is a submartingale (#16375) ESTIMATED CHANGES Modified src/probability/martingale/basic.lean + theorem measure_theory.submartingale.stopped_process Modified src/probability/stopping.lean + theorem measure_theory.stopped_process_eq_stopped_value + theorem measure_theory.stopped_value_stopped_process 2022-09-05 06:12:36 dc8113b feat(linear_algebra/ray): `same_ray_map_iff` for injective linear maps (#16377) Add a stronger version of `same_ray_map_iff`, for any injective linear map rather than just a linear equivalence. ESTIMATED CHANGES Modified src/linear_algebra/ray.lean + theorem function.injective.same_ray_map_iff 2022-09-05 05:16:33 9b11656 chore(scripts): update nolints.txt (#16384) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-09-05 03:19:01 e1d2f5b feat(geometry/euclidean/basic): `affine_isometry.angle_map` (#16374) Add the lemma that angles between three points are preserved by affine isometries, analogous to the one that already exists that angles between two vectors are preserved by linear isometries. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem affine_isometry.angle_map 2022-09-05 03:19:00 7fdc06d chore(data/nat/part_enat): make `coe_inj` `@[norm_cast]` (#16334) ESTIMATED CHANGES Modified src/data/nat/part_enat.lean +/- theorem part_enat.coe_inj 2022-09-05 00:43:00 7ce2bb4 feat(order/filter/at_top_bot): add lemmas about convergence of `λ x, r * f x` to `±∞` (#16355) Other API changes: * assume `m ≠ 0` instead of `1 ≤ m` in `le_self_pow`; * generalize `linear_ordered_semiring.to_no_max_order` to `ordered_semiring.to_no_max_order`. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean +/- theorem le_self_pow Modified src/algebra/order/ring.lean Modified src/data/nat/factorization/basic.lean Modified src/order/filter/at_top_bot.lean + theorem filter.not_tendsto_pow_at_top_at_bot + theorem filter.tendsto_const_mul_at_bot_iff + theorem filter.tendsto_const_mul_at_bot_iff_neg + theorem filter.tendsto_const_mul_at_bot_iff_pos + theorem filter.tendsto_const_mul_at_bot_of_neg + theorem filter.tendsto_const_mul_at_bot_of_pos + theorem filter.tendsto_const_mul_at_top_iff + theorem filter.tendsto_const_mul_at_top_iff_neg + theorem filter.tendsto_const_mul_at_top_iff_pos + theorem filter.tendsto_const_mul_at_top_of_neg + theorem filter.tendsto_const_mul_at_top_of_pos + theorem filter.tendsto_mul_const_at_bot_iff + theorem filter.tendsto_mul_const_at_bot_iff_neg + theorem filter.tendsto_mul_const_at_bot_iff_pos + theorem filter.tendsto_mul_const_at_bot_of_neg + theorem filter.tendsto_mul_const_at_bot_of_pos + theorem filter.tendsto_mul_const_at_top_iff + theorem filter.tendsto_mul_const_at_top_iff_neg + theorem filter.tendsto_mul_const_at_top_iff_pos + theorem filter.tendsto_mul_const_at_top_of_neg + theorem filter.tendsto_mul_const_at_top_of_pos + theorem filter.tendsto_pow_at_top_iff 2022-09-04 22:22:14 86ee668 fix(algebra/category/Module): speedup (#16371) This change makes `map'` go from using 95,000+ heartbeats (that is, `lean --make -T95000` fails locally) to using less than 25,000. With `set_option pp.all true`, the output of `#print map'` is the same before and after this change, but note that this is a `def` so perhaps using the `apply` tactic is not appropriate. ESTIMATED CHANGES Modified src/algebra/category/Module/change_of_rings.lean 2022-09-04 19:09:59 075b0d2 doc(data/nat/{part_enat, lattice}): update doc string (#16345) ESTIMATED CHANGES Modified src/data/nat/lattice.lean Modified src/data/nat/part_enat.lean 2022-09-04 18:07:36 a3e847c feat(analysis/special_functions/stirling): Stirling's formula, part I (#14874) Part 1 - [x] depends on: #14881 ESTIMATED CHANGES Added src/analysis/special_functions/stirling.lean + theorem log_stirling_seq'_antitone + theorem log_stirling_seq_bounded_aux + theorem log_stirling_seq_bounded_by_constant + theorem log_stirling_seq_diff_has_sum + theorem log_stirling_seq_diff_le_geo_sum + theorem log_stirling_seq_formula + theorem log_stirling_seq_sub_log_stirling_seq_succ + theorem stirling_seq'_antitone + theorem stirling_seq'_bounded_by_pos_constant + theorem stirling_seq'_pos + theorem stirling_seq_has_pos_limit_a + theorem stirling_seq_one + theorem stirling_seq_zero 2022-09-04 15:22:31 e4fb641 feat(order/heyting/basic): Generalize boolean algebras lemmas (#16281) Generalize lemmas from `(generalized_)boolean_algebra` to `(generalized_)coheyting_algebra`. Dualize (some of) them. Duplicate lemmas have been made aliases. Add supporting lemmas to golf the proofs. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/projective_spectrum/topology.lean Modified src/data/finset/basic.lean +/- theorem finset.sdiff_union_self_eq_union +/- theorem finset.union_sdiff_self_eq_union +/- theorem finset.union_sdiff_symm Modified src/data/set/basic.lean +/- theorem set.diff_union_self +/- theorem set.subset_compl_comm +/- theorem set.union_diff_self Modified src/model_theory/definability.lean +/- theorem first_order.language.definable_set.coe_bot +/- theorem first_order.language.definable_set.coe_compl +/- theorem first_order.language.definable_set.coe_inf + theorem first_order.language.definable_set.coe_sdiff +/- theorem first_order.language.definable_set.coe_sup +/- theorem first_order.language.definable_set.coe_top +/- theorem first_order.language.definable_set.le_iff +/- theorem first_order.language.definable_set.mem_compl +/- theorem first_order.language.definable_set.mem_inf + theorem first_order.language.definable_set.mem_sdiff +/- theorem first_order.language.definable_set.mem_sup +/- theorem first_order.language.definable_set.mem_top +/- theorem first_order.language.definable_set.not_mem_bot - theorem set.fin.coe_cast_add_zero Modified src/order/boolean_algebra.lean +/- theorem compl_compl +/- theorem compl_inf - theorem compl_unique - theorem disjoint.sdiff_eq_left - theorem disjoint.sdiff_eq_right - theorem disjoint.sup_sdiff_cancel_left - theorem disjoint.sup_sdiff_cancel_right - theorem inf_sdiff_left - theorem inf_sdiff_right - theorem inf_sdiff_sup_left - theorem inf_sdiff_sup_right - theorem is_compl.compl_eq - theorem is_compl.eq_compl - theorem le_compl_iff_le_compl - theorem le_compl_of_le_compl - theorem sdiff_idem - theorem sdiff_le' - theorem sdiff_le_sdiff_of_sup_le_sup_left - theorem sdiff_le_sdiff_of_sup_le_sup_right - theorem sdiff_sdiff_comm - theorem sdiff_sdiff_le - theorem sdiff_sdiff_left - theorem sdiff_sdiff_self - theorem sdiff_sup_cancel - theorem sdiff_sup_sdiff_cancel - theorem sdiff_triangle - theorem sup_le_of_le_sdiff_left - theorem sup_le_of_le_sdiff_right - theorem sup_sdiff - theorem sup_sdiff_cancel' - theorem sup_sdiff_cancel_right - theorem sup_sdiff_eq_sup - theorem sup_sdiff_left - theorem sup_sdiff_left_self - theorem sup_sdiff_right - theorem sup_sdiff_right_self - theorem sup_sdiff_self_left - theorem sup_sdiff_self_right - theorem sup_sdiff_symm +/- theorem top_sdiff Modified src/order/heyting/basic.lean + theorem codisjoint.himp_eq_left + theorem codisjoint.himp_eq_right + theorem codisjoint.himp_inf_cancel_left + theorem codisjoint.himp_inf_cancel_right + theorem compl_unique + theorem disjoint.sdiff_eq_left + theorem disjoint.sdiff_eq_right + theorem disjoint.sup_sdiff_cancel_left + theorem disjoint.sup_sdiff_cancel_right + theorem has_le.le.codisjoint_hnot_left + theorem has_le.le.codisjoint_hnot_right + theorem has_le.le.disjoint_compl_left + theorem has_le.le.disjoint_compl_right + theorem himp_inf_himp_cancel - theorem himp_le_himp_himp + theorem himp_le_himp_himp_himp + theorem himp_triangle + theorem inf_sdiff_left + theorem inf_sdiff_right + theorem inf_sdiff_sup_left + theorem inf_sdiff_sup_right + theorem is_compl.compl_eq + theorem is_compl.eq_compl + theorem is_compl.eq_hnot + theorem is_compl.hnot_eq +/- theorem le_himp_comm + theorem le_himp_himp + theorem le_himp_iff' + theorem sdiff_idem +/- theorem sdiff_le_comm + theorem sdiff_le_iff' + theorem sdiff_le_sdiff_of_sup_le_sup_left + theorem sdiff_le_sdiff_of_sup_le_sup_right + theorem sdiff_sdiff_comm + theorem sdiff_sdiff_le - theorem sdiff_sdiff_le_sdiff + theorem sdiff_sdiff_left + theorem sdiff_sdiff_sdiff_le_sdiff + theorem sdiff_sdiff_self + theorem sdiff_sup_cancel + theorem sdiff_sup_sdiff_cancel + theorem sdiff_triangle + theorem sup_le_of_le_sdiff_left + theorem sup_le_of_le_sdiff_right + theorem sup_sdiff + theorem sup_sdiff_cancel' + theorem sup_sdiff_cancel_right + theorem sup_sdiff_eq_sup + theorem sup_sdiff_left + theorem sup_sdiff_left_self + theorem sup_sdiff_right + theorem sup_sdiff_right_self Modified src/order/hom/basic.lean Modified src/order/lattice.lean +/- theorem inf_eq_left +/- theorem inf_eq_right - theorem inf_of_le_left - theorem inf_of_le_right - theorem le_of_inf_eq - theorem le_of_sup_eq +/- theorem left_eq_inf +/- theorem left_eq_sup +/- theorem right_eq_inf +/- theorem right_eq_sup +/- theorem sup_eq_left +/- theorem sup_eq_right + theorem sup_le_inf - theorem sup_of_le_left - theorem sup_of_le_right Modified src/topology/uniform_space/compact_separated.lean 2022-09-04 06:25:03 bb0978c fix(analysis/inner_product_space,geometry/euclidean): two deterministic timeout fixes (#16365) CI seems to be having some issues after #16356, which I can't reproduce with `-T100000` locally but can with `-T90000`. This PR speeds up `analysis/inner_product_space/l2_space.lean:hilbert_basis.coe_mk` (which was already investigated before in #15271) and `geometry/euclidean/oriented_angle.lean:inner_eq_norm_mul_norm_mul_cos_oangle`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean Modified src/geometry/euclidean/oriented_angle.lean 2022-09-04 04:40:23 1cfdf5f chore(linear_algebra/*): Lint (#16362) Satisfy the `fintype_finite` and `fails_quickly` linters. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/linear_algebra/affine_space/affine_subspace.lean + def affine_subspace.to_add_torsor Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/determinant.lean +/- theorem alternating_map.map_basis_eq_zero_iff +/- theorem alternating_map.map_basis_ne_zero_iff +/- theorem linear_map.det_zero' Modified src/linear_algebra/dimension.lean +/- theorem dim_pi Modified src/linear_algebra/dual.lean +/- theorem basis.coe_dual_basis +/- def basis.dual_basis +/- theorem basis.dual_basis_apply +/- theorem basis.dual_basis_apply_self +/- theorem basis.dual_basis_repr +/- theorem basis.dual_dim_eq +/- def basis.eval_equiv +/- theorem basis.eval_equiv_to_linear_map +/- theorem basis.eval_range +/- def basis.to_dual_equiv +/- theorem basis.to_dual_range +/- theorem basis.to_dual_to_dual +/- theorem basis.total_coord +/- theorem basis.total_dual_basis Modified src/linear_algebra/finsupp_vector_space.lean +/- theorem cardinal_lt_aleph_0_of_finite_dimensional Modified src/linear_algebra/free_module/finite/basic.lean +/- theorem module.finite.of_basis Modified src/linear_algebra/free_module/finite/rank.lean Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/free_module/rank.lean +/- theorem module.free.rank_matrix'' +/- theorem module.free.rank_matrix' +/- theorem module.free.rank_matrix + theorem module.free.rank_pi_finite - theorem module.free.rank_pi_fintype Modified src/linear_algebra/matrix/finite_dimensional.lean +/- theorem matrix.finrank_matrix Modified src/linear_algebra/matrix/reindex.lean +/- theorem matrix.mul_reindex_linear_equiv_one Modified src/linear_algebra/matrix/transvection.lean +/- theorem matrix.update_row_eq_transvection Modified src/linear_algebra/multilinear/basis.lean +/- theorem basis.ext_multilinear Modified src/linear_algebra/multilinear/finite_dimensional.lean Modified src/linear_algebra/orientation.lean +/- theorem basis.map_orientation_eq_det_inv_smul Modified src/linear_algebra/std_basis.lean +/- theorem linear_map.supr_range_std_basis Modified src/linear_algebra/trace.lean +/- theorem linear_map.trace_eq_contract_of_basis' +/- theorem linear_map.trace_eq_contract_of_basis 2022-09-04 02:50:31 443c02b feat(group_theory/finiteness): Add `rank_le_of_surjective`, `rank_range_le`, and `rank_congr` (#16363) This PR adds some more API lemmas for `group.rank`. ESTIMATED CHANGES Modified src/group_theory/finiteness.lean + theorem group.rank_congr + theorem group.rank_le_of_surjective + theorem group.rank_range_le 2022-09-04 02:01:26 f46fcef feat(matrix/spectrum): The determinant of a hermitian matrix is the product of its eigenvalues. (#16293) ESTIMATED CHANGES Modified src/linear_algebra/matrix/spectrum.lean + theorem matrix.is_hermitian.det_eq_prod_eigenvalues 2022-09-03 22:00:07 a6ca2e8 feat(analysis/analytic/isolated_zeros): Principle of isolated zeros (#15908) Local version: an analytic function is either locally zero, or nonzero in a punctured neighborhood. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem has_fpower_series_at.congr + theorem has_fpower_series_at.eq_formal_multilinear_series_of_eventually + theorem has_fpower_series_at.eq_zero_of_eventually + theorem has_fpower_series_at.eventually_eq_zero + theorem has_fpower_series_at.eventually_has_sum + theorem has_fpower_series_at.eventually_has_sum_sub + theorem has_fpower_series_at_iff' + theorem has_fpower_series_at_iff + theorem has_fpower_series_on_ball.eventually_eq_zero + theorem has_fpower_series_on_ball.eventually_has_sum + theorem has_fpower_series_on_ball.eventually_has_sum_sub Added src/analysis/analytic/isolated_zeros.lean + theorem analytic_at.eventually_eq_zero_or_eventually_ne_zero + theorem has_fpower_series_at.eq_pow_order_mul_iterate_dslope + theorem has_fpower_series_at.has_fpower_series_dslope_fslope + theorem has_fpower_series_at.has_fpower_series_iterate_dslope_fslope + theorem has_fpower_series_at.iterate_dslope_fslope_ne_zero + theorem has_fpower_series_at.locally_ne_zero + theorem has_fpower_series_at.locally_zero_iff + theorem has_sum.exists_has_sum_smul_of_apply_eq_zero + theorem has_sum.has_sum_at_zero Modified src/analysis/calculus/formal_multilinear_series.lean + theorem formal_multilinear_series.apply_eq_pow_smul_coeff + theorem formal_multilinear_series.apply_eq_prod_smul_coeff + theorem formal_multilinear_series.apply_eq_zero_of_lt_order + theorem formal_multilinear_series.apply_order_ne_zero' + theorem formal_multilinear_series.apply_order_ne_zero + def formal_multilinear_series.coeff + theorem formal_multilinear_series.coeff_eq_zero + theorem formal_multilinear_series.coeff_fslope + theorem formal_multilinear_series.coeff_iterate_fslope + theorem formal_multilinear_series.mk_pi_field_coeff_eq + theorem formal_multilinear_series.ne_zero_of_order_ne_zero + theorem formal_multilinear_series.norm_apply_eq_norm_coef + theorem formal_multilinear_series.order_eq_find' + theorem formal_multilinear_series.order_eq_find + theorem formal_multilinear_series.order_eq_zero_iff' + theorem formal_multilinear_series.order_eq_zero_iff + theorem formal_multilinear_series.order_zero Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.mk_pi_field_eq_iff + theorem continuous_multilinear_map.mk_pi_field_eq_zero_iff + theorem continuous_multilinear_map.mk_pi_field_zero Modified src/linear_algebra/multilinear/basic.lean + theorem multilinear_map.mk_pi_ring_eq_iff + theorem multilinear_map.mk_pi_ring_eq_zero_iff + theorem multilinear_map.mk_pi_ring_zero Modified src/topology/algebra/module/multilinear.lean + theorem continuous_multilinear_map.ext_iff Modified src/topology/separation.lean + theorem continuous_at.eventually_ne + theorem filter.tendsto.eventually_ne 2022-09-03 13:10:34 1995c7b chore(.github/workflows): revert first-run timeout to -T100000 (#16356) This reverts part of #15251, now that #15784 works around the olean issue. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml Modified src/algebraic_topology/dold_kan/functor_n.lean Modified src/analysis/calculus/implicit.lean Modified src/category_theory/category/Cat/limit.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/monad/basic.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/ring_theory/ideal/quotient.lean Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.coe_aut_to_pow_apply 2022-09-03 10:46:21 882fc13 refactor(group_theory/finiteness): Make `group.rank` noncomputable (#16256) I've been working on some more API for `group.rank`, and the decidability hypothesis was making lemma statements really clunky. If you wanted to say `group.rank G ≤ group.rank G'`, then the decidability hypotheses would add two lines to the statement of the lemma. ESTIMATED CHANGES Modified src/group_theory/finiteness.lean - def group.rank +/- theorem group.rank_le +/- theorem group.rank_spec Modified src/group_theory/schreier.lean +/- theorem subgroup.rank_le_index_mul_rank 2022-09-03 10:46:20 51b175c feat(number_theory/padics/padic_norm): add int_eq_one_iff (#16074) Add the proof that the p-adic norm of an integer is 1 iff the integer is not a multiple of p and related API for `padic_norm`. ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean + theorem padic_norm.int_eq_one_iff + theorem padic_norm.int_lt_one_iff + theorem padic_norm.nat_eq_one_iff + theorem padic_norm.nat_lt_one_iff + theorem padic_norm.of_nat + theorem padic_norm.sum_le' + theorem padic_norm.sum_le + theorem padic_norm.sum_lt' + theorem padic_norm.sum_lt 2022-09-03 07:46:07 08fd57f chore(topology/connected): speed up sum.is_connected_iff (#16353) ESTIMATED CHANGES Modified src/topology/connected.lean 2022-09-03 04:24:01 ebced63 chore(scripts): update nolints.txt (#16361) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-09-02 15:15:25 637412d feat(analysis/complex/schwarz): equality case in Schwarz lemma (#15861) This partially addresses one of the TODO items in `analysis/complex/schwarz` by showing the equality case in the main statement of the Schwarz lemma. ESTIMATED CHANGES Modified src/analysis/complex/schwarz.lean + theorem complex.affine_of_maps_to_ball_of_exists_norm_dslope_eq_div' + theorem complex.affine_of_maps_to_ball_of_exists_norm_dslope_eq_div 2022-09-02 15:15:24 9191c40 feat(data/nat/factorization/basic): lemmas on divisibility of `ord_proj` and `ord_compl` (#15793) For `a b : ℕ`, we have `a ∣ b` iff * `∀ p : ℕ, ord_proj[p] a ∣ ord_proj[p] b` (for `a`, `b` positive) * `∀ p : ℕ, ord_compl[p] a ∣ ord_compl[p] b` ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean + theorem nat.ord_compl_dvd_ord_compl_iff_dvd + theorem nat.ord_compl_dvd_ord_compl_of_dvd + theorem nat.ord_proj_dvd_ord_proj_iff_dvd + theorem nat.ord_proj_dvd_ord_proj_of_dvd 2022-09-02 15:15:23 734c95f feat(combinatorics/simple_graph/connectivity): walk.copy function to relax dependent type issues (#15764) Walks in a graph present a special challenge since the endpoints of a walk appear as type indices, leading to a constant struggle with dependent types and strict definitional equality. This commit introduces a `walk.copy` function to be able to change the definitions of a walk's endpoints. There are also many simp lemmas to push the copy function out of most expressions. An example of a lemma that `copy` lets us express: ```lean lemma map_eq_of_eq {f : G →g G'} (f' : G →g G') (h : f = f') : p.map f = (p.map f').copy (by rw h) (by rw h) ``` Thanks to @**Junyan Xu|224323** for the idea. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.walk.append_copy_copy + theorem simple_graph.walk.bypass_copy + theorem simple_graph.walk.cons_copy + theorem simple_graph.walk.copy_cons + theorem simple_graph.walk.copy_copy + theorem simple_graph.walk.copy_nil + theorem simple_graph.walk.copy_rfl_rfl + theorem simple_graph.walk.darts_copy + theorem simple_graph.walk.drop_until_copy + theorem simple_graph.walk.edges_copy + theorem simple_graph.walk.is_circuit_copy + theorem simple_graph.walk.is_circuit_def + theorem simple_graph.walk.is_cycle_copy + theorem simple_graph.walk.is_path_copy + theorem simple_graph.walk.is_trail_copy + theorem simple_graph.walk.length_copy + theorem simple_graph.walk.map_copy + theorem simple_graph.walk.map_eq_of_eq + theorem simple_graph.walk.map_id + theorem simple_graph.walk.map_map + theorem simple_graph.walk.reverse_copy + theorem simple_graph.walk.support_copy + theorem simple_graph.walk.take_until_copy + theorem simple_graph.walk.to_delete_edges_copy 2022-09-02 15:15:22 678f62f feat(data/polynomial): some lemmas about (nat)degree of bit0/1 in char_zero (#15726) ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_bit0 Modified src/data/polynomial/ring_division.lean + theorem polynomial.degree_bit0_eq + theorem polynomial.degree_bit1_eq + theorem polynomial.nat_degree_bit0_eq + theorem polynomial.nat_degree_bit1_eq 2022-09-02 13:28:04 aab6d3c feat(data/nat/factorization/prime_pow): lemmas relating `is_prime_pow` and `ord_compl = 1` (#15692) Adds lemmas showing that `n` is a prime power iff `ord_compl[p] n = 1` (for some prime `p`). `exists_ord_compl_eq_one_of_is_prime_pow (h : is_prime_pow n) : (∃ p : ℕ, p.prime ∧ ord_compl[p] n = 1)` `is_prime_pow_of_ord_compl_eq_one (hn : n ≠ 1) (pp : p.prime) (h : ord_compl[p] n = 1) : is_prime_pow n` ESTIMATED CHANGES Modified src/data/nat/factorization/prime_pow.lean + theorem exists_ord_compl_eq_one_iff_is_prime_pow + theorem is_prime_pow.exists_ord_compl_eq_one 2022-09-02 13:28:02 447cbe9 refactor({data,linear_algebra}/matrix/block): Generalize block indexing (#14035) Currently many definitions around block matrices are specialized to either `ℕ` or `fin n` as the indexing type. This means that some definitions are duplicated and proofs feel unnatural. This PR generalizes them to an arbitrary type (with an order) and subsequently golfs proofs. ESTIMATED CHANGES Modified src/data/matrix/block.lean - def matrix.to_square_block' +/- def matrix.to_square_block - theorem matrix.to_square_block_def' +/- theorem matrix.to_square_block_def +/- def matrix.to_square_block_prop +/- theorem matrix.to_square_block_prop_def Modified src/linear_algebra/matrix/block.lean - def matrix.block_triangular' + theorem matrix.block_triangular.det_fintype +/- def matrix.block_triangular + theorem matrix.block_triangular_reindex_iff - theorem matrix.det_of_block_triangular'' - theorem matrix.det_of_block_triangular' - theorem matrix.det_of_block_triangular +/- theorem matrix.det_of_lower_triangular +/- theorem matrix.det_of_upper_triangular - theorem matrix.det_to_square_block' - theorem matrix.det_to_square_block + theorem matrix.det_to_square_block_id - theorem matrix.to_square_block_det'' + theorem matrix.two_block_triangular_det' - theorem matrix.upper_two_block_triangular' +/- theorem matrix.upper_two_block_triangular 2022-09-02 10:49:49 9556784 chore(ring_theory/*): Fix lint (#16350) Satisfy the `fintype_finite` and `check_reducibility` linters. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/quotient.lean +/- theorem ideal.exists_sub_mem +/- theorem ideal.map_pi +/- theorem ideal.quotient_inf_to_pi_quotient_bijective Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization/integer.lean + theorem is_localization.exist_integer_multiples_of_finite - theorem is_localization.exist_integer_multiples_of_fintype Modified src/ring_theory/norm.lean +/- theorem algebra.norm_algebra_map_of_basis +/- theorem algebra.norm_eq_matrix_det Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/polynomial/basic.lean +/- theorem mv_polynomial.map_mv_polynomial_eq_eval₂ Modified src/ring_theory/trace.lean +/- theorem algebra.trace_comp_trace_of_basis +/- theorem algebra.trace_trace_of_basis Modified src/ring_theory/witt_vector/basic.lean 2022-09-02 10:49:48 8bedeaf feat(data/nat/enat): derive typeclasses about well founded (#16346) ESTIMATED CHANGES Modified src/data/nat/enat.lean 2022-09-02 10:49:46 62f14c3 feat(category_theory/limits/has_limits): `const` and `(co)lim` are adjoint (#16251) ESTIMATED CHANGES Modified src/category_theory/limits/has_limits.lean + def category_theory.limits.colim_const_adj + def category_theory.limits.const_lim_adj 2022-09-02 10:49:45 1555e3d feat(set_theory/cardinal/finite): `nat.card_pi` (#16143) This PR adds `nat.card_pi`. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.prod_eq_of_fintype + theorem cardinal.to_nat_finset_prod + def cardinal.to_nat_hom Modified src/set_theory/cardinal/finite.lean + theorem nat.card_pi 2022-09-02 10:49:44 d6789b8 refactor(data/list/forall2): consistent names of relations (#16098) ESTIMATED CHANGES Modified src/data/list/forall2.lean +/- theorem list.forall₂.flip +/- theorem list.forall₂.imp +/- theorem list.forall₂.length_eq +/- theorem list.forall₂.mp +/- theorem list.forall₂_and_left +/- theorem list.forall₂_cons +/- theorem list.forall₂_drop +/- theorem list.forall₂_drop_append +/- theorem list.forall₂_iff_zip +/- theorem list.forall₂_nil_left_iff +/- theorem list.forall₂_nil_right_iff +/- theorem list.forall₂_refl +/- theorem list.forall₂_reverse_iff +/- theorem list.forall₂_same +/- theorem list.forall₂_take +/- theorem list.forall₂_take_append +/- theorem list.forall₂_zip +/- theorem list.left_unique_forall₂' +/- theorem list.rel_append +/- theorem list.rel_bind +/- theorem list.rel_filter_map +/- theorem list.rel_foldl +/- theorem list.rel_foldr +/- theorem list.rel_join +/- theorem list.rel_map +/- theorem list.rel_mem +/- theorem list.rel_reverse +/- theorem list.right_unique_forall₂' +/- theorem list.sublist.sublist_forall₂ +/- inductive list.sublist_forall₂ +/- theorem list.tail_sublist_forall₂_self +/- theorem relator.bi_unique.forall₂ +/- theorem relator.left_unique.forall₂ +/- theorem relator.right_unique.forall₂ 2022-09-02 10:49:43 3c92748 feat(topology/separation): `embedding.discrete_topology` (#16092) This PR adds a short lemma `embedding.discrete_topology` and golfs the related lemma `discrete_topology_induced`. ESTIMATED CHANGES Modified src/topology/separation.lean + theorem embedding.discrete_topology 2022-09-02 10:49:41 09fb38c chore(analysis/box_integral): use GP instead of bot (#15939) This is how this integral is called in the original paper. ESTIMATED CHANGES Modified src/analysis/box_integral/divergence_theorem.lean + theorem box_integral.has_integral_GP_divergence_of_forall_has_deriv_within_at + theorem box_integral.has_integral_GP_pderiv - theorem box_integral.has_integral_bot_divergence_of_forall_has_deriv_within_at - theorem box_integral.has_integral_bot_pderiv Modified src/analysis/box_integral/partition/filter.lean + def box_integral.integration_params.GP + theorem box_integral.integration_params.GP_le Modified src/measure_theory/integral/divergence_theorem.lean 2022-09-02 10:49:40 8615210 feat(data/rat/defs): inv_coe_{int,nat}_{num,denom} (#15863) Rename existing lemmas to `inv_coe_{int,nat}_{num,denom}_of_pos` since they took positivity assumptions Also provide `rat.inv_neg`. ESTIMATED CHANGES Modified src/data/rat/defs.lean +/- theorem rat.inv_coe_int_denom + theorem rat.inv_coe_int_denom_of_pos +/- theorem rat.inv_coe_int_num + theorem rat.inv_coe_int_num_of_pos +/- theorem rat.inv_coe_nat_denom + theorem rat.inv_coe_nat_denom_of_pos +/- theorem rat.inv_coe_nat_num + theorem rat.inv_coe_nat_num_of_pos 2022-09-02 09:34:33 ddc7484 feat(geometry/euclidean/oriented_angle): signs of angles between linear combinations of vectors (#16243) Add a series of lemmas giving the sign of the oriented angle between two linear combinations of two vectors in terms of the sign of the angle between the original two vectors and the coefficients in the linear combination. ESTIMATED CHANGES Modified src/geometry/euclidean/oriented_angle.lean + theorem orientation.oangle_sign_add_smul_left + theorem orientation.oangle_sign_neg_left + theorem orientation.oangle_sign_neg_right + theorem orientation.oangle_sign_smul_add_right + theorem orientation.oangle_sign_smul_add_smul_left + theorem orientation.oangle_sign_smul_add_smul_right + theorem orientation.oangle_sign_smul_add_smul_smul_add_smul + theorem orientation.oangle_sign_smul_left + theorem orientation.oangle_sign_smul_right + theorem orientation.oangle_sign_sub_smul_left + theorem orientation.oangle_sign_sub_smul_right + theorem orthonormal.oangle_sign_add_smul_left + theorem orthonormal.oangle_sign_neg_left + theorem orthonormal.oangle_sign_neg_right + theorem orthonormal.oangle_sign_smul_add_right + theorem orthonormal.oangle_sign_smul_add_smul_left + theorem orthonormal.oangle_sign_smul_add_smul_right + theorem orthonormal.oangle_sign_smul_add_smul_smul_add_smul + theorem orthonormal.oangle_sign_smul_left + theorem orthonormal.oangle_sign_smul_right + theorem orthonormal.oangle_sign_sub_smul_left + theorem orthonormal.oangle_sign_sub_smul_right + theorem orthonormal.oangle_smul_add_right_eq_zero_or_eq_pi_iff 2022-09-02 06:43:31 541b288 chore(topology/order): open `function`, don't open `classical` (#16288) ESTIMATED CHANGES Modified src/topology/order.lean +/- theorem set_of_is_open_injective 2022-09-02 04:12:12 525c5a8 feat(topology/fiber_bundle): Each fiber of a trivialization is homeomorphic to the specified fiber (#16079) This PR adds `topological_fiber_bundle.trivialization.preimage_singleton_homeomorph`, which states that each fiber of a trivialization is homeomorphic to the specified fiber. ESTIMATED CHANGES Modified src/topology/fiber_bundle.lean + theorem topological_fiber_bundle.trivialization.image_preimage_eq_prod_univ + def topological_fiber_bundle.trivialization.preimage_homeomorph + theorem topological_fiber_bundle.trivialization.preimage_homeomorph_apply + theorem topological_fiber_bundle.trivialization.preimage_homeomorph_symm_apply + def topological_fiber_bundle.trivialization.preimage_singleton_homeomorph + theorem topological_fiber_bundle.trivialization.preimage_singleton_homeomorph_apply + theorem topological_fiber_bundle.trivialization.preimage_singleton_homeomorph_symm_apply + theorem topological_fiber_bundle.trivialization.preimage_subset_source + def topological_fiber_bundle.trivialization.source_homeomorph_base_set_prod + theorem topological_fiber_bundle.trivialization.source_homeomorph_base_set_prod_apply + theorem topological_fiber_bundle.trivialization.source_homeomorph_base_set_prod_symm_apply Modified src/topology/homeomorph.lean + def homeomorph.homeomorph_of_unique Modified src/topology/local_homeomorph.lean + def local_homeomorph.homeomorph_of_image_subset_source 2022-09-01 11:45:54 394f6e6 feat(measure_theory/integral/bochner): Hölder's inequality for real nonnegative functions (#16291) We already have several versions of Hölder's inequality for the Lebesgue integral and functions with values in nnreal or ennreal. This PR introduces two versions of this inequality for the Bochner integral, one of which applies to nonnegative real functions. ESTIMATED CHANGES Modified src/measure_theory/function/ess_sup.lean + theorem ennreal.ess_sup_mul_le Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.smul + theorem measure_theory.snorm_smul_le_mul_snorm + theorem measure_theory.snorm_smul_le_snorm_mul_snorm_top + theorem measure_theory.snorm_smul_le_snorm_top_mul_snorm Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.integral_mul_le_Lp_mul_Lq_of_nonneg + theorem measure_theory.integral_mul_norm_le_Lp_mul_Lq Modified src/order/filter/ennreal.lean + theorem ennreal.limsup_mul_le 2022-09-01 11:45:52 44c94be feat(data/finsupp/lex): lexicographic orders on finsupps and covariant classes (#16127) This PR constructs a linear order on `finsupp`s where both source and target are linearly ordered. This is useful for #15983, where these linear orders help prove that (some) `add_monoid_algebra`s have no non-trivial zero-divisors. The PR also proves that the lexicographic linear order on finitely supported functions preserves a few covariant class assumptions. As always, comments and suggestions are really really appreciated! [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/linear.20order.20on.20finsupps) This PR supersedes #15984. ESTIMATED CHANGES Added src/data/finsupp/lex.lean + theorem finsupp.lex.le_of_forall_le + theorem finsupp.lex.le_of_of_lex_le + theorem finsupp.lex_def + theorem finsupp.lt_of_forall_lt_of_lt + theorem finsupp.to_lex_monotone + theorem pi.lex_eq_finsupp_lex 2022-09-01 09:13:58 8d90fcd feat(data/finset/basic): Add `coe_pair` lemmas (#16235) Adds `coe_pair` lemmas to go with `coe_singleton` and `coe_eq_singleton` (and fixes a couple of style issues). ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.coe_eq_pair +/- theorem finset.coe_eq_singleton + theorem finset.coe_pair +/- theorem finset.cons_eq_insert +/- theorem finset.pair_comm 2022-09-01 05:10:37 370cc48 chore(data/real/nnreal): Golf (#16307) Generalize various lemmas to `linear_ordered_semifield` or weaker so that they apply to `nnreal`. Golf the `nnreal` API using them. ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean +/- theorem finset.sum_div Modified src/algebra/order/field.lean + theorem two_inv_lt_one Modified src/algebra/order/field_defs.lean Modified src/algebra/order/group.lean - theorem le_of_forall_one_lt_le_mul Modified src/algebra/order/monoid.lean + theorem le_iff_forall_one_lt_lt_mul' + theorem le_of_forall_one_lt_le_mul + theorem le_of_forall_one_lt_lt_mul' Modified src/algebra/order/nonneg.lean Modified src/data/nat/choose/bounds.lean Modified src/data/real/nnreal.lean +/- theorem nnreal.add_halves +/- theorem nnreal.div_add_div_same +/- theorem nnreal.div_le_iff +/- theorem nnreal.div_pos +/- theorem nnreal.div_self_le +/- theorem nnreal.half_le_self +/- theorem nnreal.half_lt_self +/- theorem nnreal.half_pos +/- theorem nnreal.inv_lt_inv_iff +/- theorem nnreal.inv_lt_one +/- theorem nnreal.inv_pos +/- theorem nnreal.le_div_iff_mul_le +/- theorem nnreal.sub_div +/- theorem nnreal.two_inv_lt_one Modified src/order/filter/at_top_bot.lean +/- theorem filter.tendsto_const_mul_pow_at_top +/- theorem filter.tendsto_const_mul_pow_at_top_iff 2022-08-31 23:05:23 616e6ef feat(data/sign): Allocating signs (#14335) A sum of integers of absolute value less than `n` can be broken up as a sum of less than `n` signs. ESTIMATED CHANGES Modified src/data/sign.lean + theorem exists_signed_sum' + theorem exists_signed_sum + theorem int.sign_eq_sign 2022-08-31 20:06:31 9b68ed5 refactor(topology/algebra/continuous_monoid_hom): Make variables consistent (#16304) This PR cleans up some redundant variables in `continuous_monoid_hom`. ESTIMATED CHANGES Modified src/topology/algebra/continuous_monoid_hom.lean +/- def continuous_monoid_hom.to_continuous_map +/- theorem continuous_monoid_hom.to_continuous_map_injective +/- def pontryagin_dual 2022-08-31 20:06:30 acbe099 feat(*): bump to lean 3.48.0 (#16292) `fin n` is a structure now. ESTIMATED CHANGES Modified archive/imo/imo1987_q1.lean Modified leanpkg.toml Modified src/algebra/big_operators/fin.lean Modified src/algebra/char_zero/quotient.lean Modified src/algebraic_topology/simplex_category.lean Modified src/algebraic_topology/split_simplicial_object.lean Modified src/algebraic_topology/topological_simplex.lean Modified src/analysis/complex/upper_half_plane/basic.lean Modified src/analysis/convex/stone_separation.lean Modified src/combinatorics/composition.lean Modified src/combinatorics/simple_graph/coloring.lean Modified src/computability/primrec.lean Modified src/data/buffer/basic.lean Modified src/data/countable/defs.lean Modified src/data/fin/basic.lean +/- def fin.coe_embedding + theorem fin.coe_eq_coe +/- theorem fin.coe_injective + def fin.coe_order_embedding + def fin.equiv_subtype + theorem fin.equiv_subtype_symm_trans_val_embedding +/- theorem fin.ext_iff + theorem fin.is_le' +/- theorem fin.is_lt + theorem fin.max_coe + theorem fin.min_coe + theorem fin.mk_eq_mk - theorem fin.mk_eq_subtype_mk + theorem fin.mk_le_mk + theorem fin.mk_lt_mk + def fin.order_iso_subtype + theorem fin.val_injective Modified src/data/fin/interval.lean +/- theorem fin.Icc_eq_finset_subtype +/- theorem fin.Ici_eq_finset_subtype +/- theorem fin.Ico_eq_finset_subtype +/- theorem fin.Iic_eq_finset_subtype +/- theorem fin.Iio_eq_finset_subtype +/- theorem fin.Ioc_eq_finset_subtype +/- theorem fin.Ioi_eq_finset_subtype +/- theorem fin.Ioo_eq_finset_subtype +/- theorem fin.map_subtype_embedding_Icc +/- theorem fin.map_subtype_embedding_Ici +/- theorem fin.map_subtype_embedding_Ico +/- theorem fin.map_subtype_embedding_Iic +/- theorem fin.map_subtype_embedding_Iio +/- theorem fin.map_subtype_embedding_Ioc +/- theorem fin.map_subtype_embedding_Ioi +/- theorem fin.map_subtype_embedding_Ioo Modified src/data/fin/tuple/basic.lean Modified src/data/finset/basic.lean + theorem finset.fin_map + theorem finset.fin_mono + theorem finset.mem_fin Modified src/data/finset/sort.lean Modified src/data/fintype/card.lean + theorem equiv.prod_comp' Modified src/data/list/range.lean Modified src/field_theory/finite/polynomial.lean Modified src/group_theory/order_of_element.lean Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/matrix/transvection.lean Modified src/logic/encodable/basic.lean Modified src/logic/equiv/fin.lean Modified src/number_theory/class_number/admissible_abs.lean Modified src/number_theory/class_number/finite.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/witt_vector/truncated.lean Modified src/testing/slim_check/sampleable.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2022-08-31 20:06:29 87d8c4b doc(measure_theory/integral): integrability docstrings (#16269) This PR adds a few docstrings to make the conditions and more readable. ESTIMATED CHANGES Modified src/measure_theory/integral/integral_eq_improper.lean 2022-08-31 17:11:06 371b414 chore(algebra/divisibility): golf (#16327) ESTIMATED CHANGES Modified src/algebra/divisibility.lean 2022-08-31 17:11:05 5b7bc67 refactor(group_theory/subgroup/basic): Make `subgroup.opposite` an `equiv` (#16271) There is currently no way to turn a `subgroup Gᵐᵒᵖ` into a `subgroup G`, so this PR bundles `subgroup.opposite` as an `equiv` so that now we can use `subgroup.opposite.symm`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean +/- def subgroup.opposite 2022-08-31 14:19:01 39014ec feat(probability/independence): add indep_bot_left and indep_bot_right (#16309) Prove that for any `m`, `indep m ⊥ μ`, and prove the corresponding statement with bot on the left. Also declare two types as variables on top of the file and remove them from many lemmas. ESTIMATED CHANGES Modified src/probability/independence.lean +/- theorem probability_theory.Indep.Indep_sets +/- theorem probability_theory.Indep.indep +/- def probability_theory.Indep +/- theorem probability_theory.Indep_fun.indep_fun +/- def probability_theory.Indep_fun +/- def probability_theory.Indep_set +/- theorem probability_theory.Indep_sets.indep_sets +/- def probability_theory.Indep_sets +/- theorem probability_theory.indep.indep_sets +/- theorem probability_theory.indep.symm +/- def probability_theory.indep + theorem probability_theory.indep_bot_left + theorem probability_theory.indep_bot_right +/- def probability_theory.indep_fun +/- theorem probability_theory.indep_of_indep_of_le_left +/- theorem probability_theory.indep_of_indep_of_le_right +/- def probability_theory.indep_set +/- theorem probability_theory.indep_sets.Inter +/- theorem probability_theory.indep_sets.Union +/- theorem probability_theory.indep_sets.indep +/- theorem probability_theory.indep_sets.inter +/- theorem probability_theory.indep_sets.symm +/- theorem probability_theory.indep_sets.union +/- theorem probability_theory.indep_sets.union_iff +/- def probability_theory.indep_sets +/- theorem probability_theory.indep_sets_of_indep_sets_of_le_left +/- theorem probability_theory.indep_sets_of_indep_sets_of_le_right +/- theorem probability_theory.indep_sets_singleton_iff 2022-08-31 14:19:00 5a3cd16 feat(order/filter/small_sets): yet another squeeze theorem (#16286) * Add a very general version of the squeeze theorem. * Use it to golf the proof of the usual squeeze theorem. * Add docstrings. ESTIMATED CHANGES Modified src/order/filter/small_sets.lean + theorem filter.tendsto.of_small_sets Modified src/topology/algebra/order/basic.lean 2022-08-31 14:18:58 5e194d4 feat(algebra/invertible): `map_inv_of` and some other basic results (#16202) The titular lemma states that under suitable conditions, `f (⅟r) = ⅟(f r)`. This also provides some lemmas about left inverses, which are motivated primarily by proving `is_unit (algebra_map R (exterior_algebra R M) r) ↔ is_unit r`. ESTIMATED CHANGES Modified src/algebra/hom/units.lean + theorem is_unit.of_left_inverse + theorem is_unit_map_of_left_inverse Modified src/algebra/invertible.lean +/- def invertible.copy + def invertible.of_left_inverse + def invertible_equiv_of_left_inverse + theorem map_inv_of Modified src/linear_algebra/exterior_algebra/basic.lean + def exterior_algebra.invertible_algebra_map_equiv + theorem exterior_algebra.is_unit_algebra_map 2022-08-31 14:18:57 76be8c7 chore(algebra/order/absolute_value): superficial tidying (#16190) This weakens the requirements of many lemmas in this file, preparing for further changes. `is_absolute_value` is unbundled, which is an approach that is currently not favoured in mathlib. ESTIMATED CHANGES Modified src/algebra/order/absolute_value.lean + theorem absolute_value.map_one_of_is_regular +/- theorem is_absolute_value.abv_div + def is_absolute_value.abv_hom' +/- def is_absolute_value.abv_hom +/- theorem is_absolute_value.abv_inv + theorem is_absolute_value.abv_one' +/- theorem is_absolute_value.abv_one +/- theorem is_absolute_value.abv_pos +/- theorem is_absolute_value.abv_zero 2022-08-31 14:18:56 27d8324 feat(topology/sheaves/sheaf_condition): Description of sections on the union of two open sets. (#16093) ESTIMATED CHANGES Modified src/algebra/category/Ring/constructions.lean + def CommRing.pullback_cone + def CommRing.pullback_cone_is_limit Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean +/- def Top.sheaf.inter_union_pullback_cone_lift +/- def Top.sheaf.is_product_of_disjoint + def Top.sheaf.obj_sup_iso_prod_eq_locus + theorem Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst + theorem Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd + theorem Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst + theorem Top.sheaf.obj_sup_iso_prod_eq_locus_inv_snd Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean + theorem Top.sheaf.eq_of_locally_eq₂ 2022-08-31 14:18:55 361aa77 feat(category_theory/adjunction): complete well-powered category with a coseparating set is cocomplete (#15988) This corollary of the special adjoint functor theorem immediately implies that Grothendieck categories are complete, which, according to the Wikipedia article on Grothendieck categories, is "a rather deep result". ESTIMATED CHANGES Modified src/category_theory/adjunction/adjoint_functor_theorems.lean + theorem category_theory.limits.has_colimits_of_has_limits_of_is_coseparating + theorem category_theory.limits.has_limits_of_has_colimits_of_is_separating Modified src/category_theory/generator.lean 2022-08-31 11:42:45 865184b feat(linear_algebra/affine_space/finite_dimensional): `insert` lemmas (#16308) Add various lemmas about adding a point to a finite-dimensional affine subspace and the dimension of the span of the result. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem finite_dimensional_direction_affine_span_insert + theorem finite_dimensional_vector_span_insert + theorem finite_dimensional_vector_span_insert_set + theorem finrank_vector_span_insert_le + theorem finrank_vector_span_insert_le_set 2022-08-31 11:42:44 0719076 chore(topology/instances/rat): add `namespace rat` (#16306) ESTIMATED CHANGES Modified src/topology/instances/rat.lean +/- theorem rat.continuous_mul +/- theorem rat.totally_bounded_Icc +/- theorem rat.uniform_continuous_abs +/- theorem rat.uniform_continuous_add +/- theorem rat.uniform_continuous_neg 2022-08-31 11:42:43 1e91718 feat(logic/equiv/option): equivalence with subtypes (#16302) Add an equivalence between equivalences ```lean /-- Equivalences between `option α` and `β` that send `none` to `x` are equivalent to equivalences between `α` and `{y : β // y ≠ x}`. -/ def option_subtype [decidable_eq β] (x : β) : {e : option α ≃ β // e none = x} ≃ (α ≃ {y : β // y ≠ x}) := ``` which can be used to give a much simpler definition of an equivalence in #16278. ESTIMATED CHANGES Modified src/logic/equiv/option.lean + theorem equiv.coe_option_subtype_apply_apply + def equiv.option_subtype + theorem equiv.option_subtype_apply_apply + theorem equiv.option_subtype_apply_symm_apply + theorem equiv.option_subtype_symm_apply_apply_coe + theorem equiv.option_subtype_symm_apply_apply_none + theorem equiv.option_subtype_symm_apply_apply_some + theorem equiv.option_subtype_symm_apply_symm_apply 2022-08-31 11:42:42 d44692a refactor(analysis/convex/cone): move cone.lean to cone/basic.lean (#16270) Part of #16266 I intend to create another file for `proper_cone`, which for cyclic import reasons cannot be included in cone.lean. So I want to move cone.lean to cone/basic.lean and create cone/proper.lean in a separate PR. ESTIMATED CHANGES Renamed src/analysis/convex/cone.lean to src/analysis/convex/cone/basic.lean Modified src/analysis/normed_space/hahn_banach/extension.lean Modified src/analysis/normed_space/hahn_banach/separation.lean 2022-08-31 11:42:40 2d30ffc feat(algebra/gcd_monoid): `simp` lemmas for `associated (normalize x) y` (#16249) The lemmas in `gcd_monoid` package `associated_normalize` and `normalize_associated` into a form suitable for `simp`. Useful e.g. for working with `normalized_factors`. The lemmas in `associated` are the `simp`-normal forms of the `normalize` lemmas, since `normalize x` is not itself in `simp`-normal form. ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associated_is_unit_mul_left_iff + theorem associated_is_unit_mul_right_iff + theorem associated_mul_is_unit_left_iff + theorem associated_mul_is_unit_right_iff + theorem associated_mul_unit_left_iff + theorem associated_mul_unit_right_iff + theorem associated_unit_mul_left_iff + theorem associated_unit_mul_right_iff Modified src/algebra/gcd_monoid/basic.lean + theorem associated_normalize_iff + theorem normalize_associated_iff 2022-08-31 11:42:39 eaa51e7 feat(algebra/order/smul): `ordered_smul` instances for `ℕ` and `ℤ` (#16247) A linear ordered monoid/group has ordered scalar multiplication by `ℕ`/`ℤ`. ESTIMATED CHANGES Modified src/algebra/order/smul.lean + theorem ordered_smul.mk'' Modified test/positivity.lean 2022-08-31 11:42:38 f951e20 feat(algebraic_topology/dold_kan): the normalized Moore complex is homotopy equivalent to the alternating face map complex (#16246) In this PR, when the category `A` is abelian, we obtain the homotopy equivalence `homotopy_equiv_normalized_Moore_complex_alternating_face_map_complex` between the normalized Moore complex and the alternating face map complex of a simplicial object in `A`. ESTIMATED CHANGES Added src/algebraic_topology/dold_kan/homotopy_equivalence.lean + def algebraic_topology.dold_kan.homotopy_P_infty_to_id + theorem algebraic_topology.dold_kan.homotopy_P_to_id_eventually_constant + def algebraic_topology.dold_kan.homotopy_Q_to_zero + def algebraic_topology.dold_kan.homotopy_equiv_normalized_Moore_complex_alternating_face_map_complex 2022-08-31 11:42:37 9e27454 feat(algebra/category/Module/change_of_rings): extension of scalars (#15673) Given a ring homomorphism $f : R \to S$ between commutative rings, the extension of scalars functor from $R$-module to $S$-module. In #15564 it will proven that extension of scalars $\dashv$ restriction of scalars ESTIMATED CHANGES Modified src/algebra/category/Module/change_of_rings.lean + def category_theory.Module.extend_scalars.map' + theorem category_theory.Module.extend_scalars.map'_comp + theorem category_theory.Module.extend_scalars.map'_id + theorem category_theory.Module.extend_scalars.map_tmul + def category_theory.Module.extend_scalars.obj' + def category_theory.Module.extend_scalars 2022-08-31 08:44:53 f84386d chore(algebra/regular/basic): clean up variables and slight golf (#16321) Re-organize variables in the file, so that typeclass assumptions appear earlier. Also, golf two proofs and remove two unneeded `@`. ESTIMATED CHANGES Modified src/algebra/regular/basic.lean +/- def is_left_regular +/- def is_right_regular 2022-08-31 08:44:51 17ff82d feat(topology/instances/ennreal): `ennreal.to_nnreal` applied to a `tsum` (#16320) If a function is finite for all inputs, then `to_nnreal` applied to the sum is the sum of `to_nnreal` applied to the values. ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem ennreal.tsum_to_nnreal_eq +/- theorem ennreal.tsum_to_real_eq 2022-08-31 08:44:50 b35461b feat(logic/basic): `function.mt` and `function.mtr` (#16315) Add modus tollens and reversed modus tollens to the `function` namespace so that they are available for dot notation on implications. ESTIMATED CHANGES Modified src/logic/basic.lean 2022-08-31 08:44:49 6a68f86 chore(topology/algebra/order/basic): deduplicate (#16287) Primed and non-primed versions of 2 lemmas were almost defeq. Merge them. ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/topology/algebra/order/basic.lean - theorem mem_nhds_within_Ici_iff_exists_Icc_subset' - theorem mem_nhds_within_Iic_iff_exists_Icc_subset' 2022-08-31 08:44:48 386acba feat(order/locally_finite): transfer locally_finite_order across order_iso (#16264) ESTIMATED CHANGES Modified src/order/locally_finite.lean + def order_iso.locally_finite_order + def order_iso.locally_finite_order_bot + def order_iso.locally_finite_order_top 2022-08-31 08:44:46 70c4863 feat(data/finset/locally_finite): more on `filter (< c)` (#16260) ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean + theorem finset.Icc_filter_lt_of_lt_right + theorem finset.Iic_filter_lt_of_lt_right + theorem finset.Iio_filter_lt + theorem finset.Ioc_filter_lt_of_lt_right + theorem finset.Ioo_filter_lt 2022-08-31 06:55:31 20cfd34 refactor(algebra/monoid_algebra/{ basic + support } + import dust): move lemmas to a new "support" file (#16322) This PR moves some lemmas from `algebra/monoid_algebra/basic` to the new file `algebra/monoid_algebra/support`. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/splitting.20support.20from.20algebra.2Fmonoid_algebra.2Fbasic) ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean - theorem add_monoid_algebra.mem_span_support' - theorem add_monoid_algebra.mem_span_support - theorem add_monoid_algebra.support_mul - theorem add_monoid_algebra.support_mul_single - theorem add_monoid_algebra.support_single_mul - theorem monoid_algebra.mem_span_support - theorem monoid_algebra.support_mul - theorem monoid_algebra.support_mul_single - theorem monoid_algebra.support_single_mul Modified src/algebra/monoid_algebra/degree.lean Modified src/algebra/monoid_algebra/grading.lean Added src/algebra/monoid_algebra/support.lean + theorem add_monoid_algebra.mem_span_support' + theorem add_monoid_algebra.mem_span_support + theorem add_monoid_algebra.support_mul + theorem add_monoid_algebra.support_mul_single + theorem add_monoid_algebra.support_single_mul + theorem monoid_algebra.mem_span_support + theorem monoid_algebra.support_mul + theorem monoid_algebra.support_mul_single + theorem monoid_algebra.support_single_mul Modified src/data/mv_polynomial/basic.lean 2022-08-31 06:55:29 489c1c5 feat(analysis/complex/basic): add `complex.ring_hom_eq_id_or_conj_of_continuous` (#16169) We prove that the only continuous ring homorphism from $\mathbb{C}$ to $\mathbb{C}$ are the identity and the complex conjugation. We deduce the result from a first lemma that gives the same conclusion for the $\mathbb{R}$-algebra homomorphisms from $\mathbb{C}$ to $\mathbb{C}$. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.ring_hom_eq_id_or_conj_of_continuous Modified src/data/complex/module.lean + theorem complex.real_alg_hom_eq_id_or_conj 2022-08-31 05:14:16 f5da082 feat(order/filter/basic): add `eventually_le.add_le_add` (#16295) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_le.mul_le_mul' +/- theorem filter.eventually_le.mul_le_mul 2022-08-31 04:06:01 5083718 chore(scripts): update nolints.txt (#16323) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-31 02:14:46 13618c1 chore(.github/workflows): increase olean generation timeout (#15784) We are currently experiencing timeouts when saving some oleans (leanprover-community/lean#749). Since Lean does not error out when deterministic timeouts happen during olean generation (leanprover-community/lean#750) and we already run Lean twice when compiling mathlib, Ben Toner suggested the following clever hack: Increase the timeout, but only on the second lean run. This effectively means anything that was reported as a timeout before is still reported as a timeout (by the first call), while olean generation gets more heartbeats. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2022-08-31 01:06:43 fe5e4ce feat(category_theory/limits): (co)limits in full subcategories (#16188) ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean + def category_theory.creates_colimit_of_fully_faithful_of_iso' + def category_theory.creates_colimit_of_fully_faithful_of_lift' + def category_theory.creates_limit_of_fully_faithful_of_iso' + def category_theory.creates_limit_of_fully_faithful_of_lift' Added src/category_theory/limits/full_subcategory.lean + theorem category_theory.limits.closed_under_colimits_of_shape.colimit + def category_theory.limits.closed_under_colimits_of_shape + theorem category_theory.limits.closed_under_limits_of_shape.limit + def category_theory.limits.closed_under_limits_of_shape + def category_theory.limits.creates_colimit_full_subcategory_inclusion' + def category_theory.limits.creates_colimit_full_subcategory_inclusion + def category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed + def category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion + def category_theory.limits.creates_limit_full_subcategory_inclusion' + def category_theory.limits.creates_limit_full_subcategory_inclusion + def category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed + def category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion + theorem category_theory.limits.has_colimit_of_closed_under_colimits + theorem category_theory.limits.has_colimits_of_shape_of_closed_under_colimits + theorem category_theory.limits.has_limit_of_closed_under_limits + theorem category_theory.limits.has_limits_of_shape_of_closed_under_limits 2022-08-30 16:44:22 002aa51 feat(probability/hitting_time): add some hitting time lemmas (#16296) ESTIMATED CHANGES Modified src/probability/hitting_time.lean + theorem measure_theory.hitting_eq_end_iff + theorem measure_theory.hitting_mem_set_of_hitting_lt + theorem measure_theory.hitting_mono + theorem measure_theory.hitting_of_le + theorem measure_theory.not_mem_of_lt_hitting Modified src/probability/stopping.lean + theorem measure_theory.stopped_process_eq' 2022-08-30 16:44:21 1da31fa feat(data/polynomial/derivative): add more lemmas (#16139) ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean + theorem polynomial.derivative_X_add_pow + theorem polynomial.derivative_X_sub_pow + theorem polynomial.derivative_int_cast + theorem polynomial.derivative_int_cast_mul + theorem polynomial.derivative_nat_cast_mul + theorem polynomial.dvd_iterate_derivative_pow + theorem polynomial.iterate_derivative_X_add_pow + theorem polynomial.iterate_derivative_X_pow_eq_C_mul + theorem polynomial.iterate_derivative_X_pow_eq_nat_cast_mul + theorem polynomial.iterate_derivative_X_pow_eq_smul + theorem polynomial.iterate_derivative_X_sub_pow + theorem polynomial.iterate_derivative_int_cast_mul 2022-08-30 13:54:31 d003c55 chore(analysis, measure_theory): Fix lint (#16216) Satisfy the `fintype_finite` and `to_additive_doc` linters. Further, perform the similar weakening from `encodable` to `countable`, even though that's not yet linted for. The advantage of this is that `finite α → countable α` in known to TC inference, while `fintype α → encodable α` is not (because it's noncanonical data). As a result, some lemmas that were proved for both `fintype` and `encodable` are now deduplicated. ESTIMATED CHANGES Modified src/analysis/box_integral/box/basic.lean +/- theorem box_integral.box.Union_Ioo_of_tendsto Modified src/analysis/box_integral/integrability.lean Modified src/analysis/box_integral/partition/additive.lean +/- theorem box_integral.box_additive_map.sum_boxes_congr Modified src/analysis/box_integral/partition/measure.lean +/- theorem box_integral.box.measurable_set_Ioo +/- theorem box_integral.box.measure_Icc_lt_top +/- theorem box_integral.box.measure_coe_lt_top +/- theorem box_integral.prepartition.measure_Union_to_real Modified src/analysis/box_integral/partition/split.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/lagrange_multipliers.lean +/- theorem is_local_extr_on.linear_dependent_of_has_strict_fderiv_at Modified src/analysis/calculus/tangent_cone.lean +/- theorem unique_diff_on.pi +/- theorem unique_diff_on.univ_pi +/- theorem unique_diff_within_at.pi +/- theorem unique_diff_within_at.univ_pi Modified src/analysis/normed_space/add_torsor_bases.lean +/- theorem interior_convex_hull_aff_basis Modified src/analysis/normed_space/finite_dimension.lean +/- theorem basis.exists_op_nnnorm_le +/- theorem basis.exists_op_norm_le +/- theorem is_open_set_of_linear_independent Modified src/analysis/specific_limits/basic.lean + theorem ennreal.exists_pos_sum_of_countable' + theorem ennreal.exists_pos_sum_of_countable - theorem ennreal.exists_pos_sum_of_encodable' - theorem ennreal.exists_pos_sum_of_encodable + theorem ennreal.exists_pos_tsum_mul_lt_of_countable - theorem ennreal.exists_pos_tsum_mul_lt_of_encodable + theorem nnreal.exists_pos_sum_of_countable - theorem nnreal.exists_pos_sum_of_encodable Modified src/data/set/countable.lean +/- theorem set.countable_coe_iff Modified src/data/set/lattice.lean + theorem set.Inter_plift_down + theorem set.Inter_plift_up + theorem set.Union_plift_down + theorem set.Union_plift_up Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/finite_dimensional.lean - theorem finite_dimensional.of_finset_basis +/- theorem finite_dimensional.of_fintype_basis Modified src/linear_algebra/pi.lean +/- theorem submodule.supr_map_single Modified src/logic/encodable/basic.lean + theorem nonempty_encodable Modified src/logic/encodable/lattice.lean - theorem finset.nonempty_encodable Modified src/measure_theory/constructions/borel_space.lean +/- theorem ae_measurable.ennreal_tsum +/- theorem ae_measurable.is_glb +/- theorem ae_measurable.is_lub +/- theorem ae_measurable_infi +/- theorem ae_measurable_of_tendsto_metrizable_ae +/- theorem ae_measurable_supr + theorem borel_eq_top_of_countable - theorem borel_eq_top_of_encodable +/- theorem measurable.ennreal_tsum' +/- theorem measurable.ennreal_tsum +/- theorem measurable.is_glb +/- theorem measurable.is_lub +/- theorem measurable.nnreal_tsum +/- theorem measurable_infi +/- theorem measurable_limit_of_tendsto_metrizable_ae +/- theorem measurable_supr Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/polish.lean +/- theorem measure_theory.analytic_set.Inter +/- theorem measure_theory.analytic_set.Union +/- theorem measure_theory.measurably_separable.Union Modified src/measure_theory/constructions/prod.lean +/- theorem measure_theory.measure.prod_sum +/- theorem measure_theory.measure.sum_prod Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/function/ae_measurable_order.lean Modified src/measure_theory/function/ae_measurable_sequence.lean +/- theorem ae_seq.ae_seq_eq_fun_ae +/- theorem ae_seq.ae_seq_eq_mk_ae +/- theorem ae_seq.ae_seq_n_eq_fun_n_ae +/- theorem ae_seq.measure_compl_ae_seq_set_eq_zero +/- theorem ae_seq.supr Modified src/measure_theory/function/egorov.lean +/- theorem measure_theory.egorov.measure_not_convergent_seq_tendsto_zero +/- theorem measure_theory.egorov.not_convergent_seq_measurable_set Modified src/measure_theory/function/ess_sup.lean +/- theorem ennreal.ess_sup_liminf_le Modified src/measure_theory/function/floor.lean Modified src/measure_theory/function/lp_space.lean +/- theorem measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/group/arithmetic.lean + theorem measurable_set_eq_fun_of_countable - theorem measurable_set_eq_fun_of_encodable Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.has_sum_integral_of_dominated_convergence Modified src/measure_theory/integral/integrable_on.lean +/- theorem measure_theory.integrable_on_finite_Union + theorem measure_theory.integrable_on_finite_bUnion - theorem measure_theory.integrable_on_fintype_Union Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.has_sum_integral_of_dominated_convergence Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.lintegral_Union +/- theorem measure_theory.lintegral_Union_le +/- theorem measure_theory.lintegral_Union₀ + theorem measure_theory.lintegral_countable' - theorem measure_theory.lintegral_encodable +/- theorem measure_theory.lintegral_supr_directed +/- theorem measure_theory.lintegral_tsum Modified src/measure_theory/integral/set_integral.lean +/- theorem measure_theory.has_sum_integral_Union +/- theorem measure_theory.has_sum_integral_Union_ae +/- theorem measure_theory.integral_Union +/- theorem measure_theory.integral_Union_ae +/- theorem measure_theory.tendsto_set_integral_of_monotone Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measurable_space.lean + theorem measurable_from_prod_countable - theorem measurable_from_prod_encodable + theorem measurable_of_finite - theorem measurable_of_fintype - theorem measurable_set.pi_fintype +/- theorem measurable_set.univ_pi - theorem measurable_set.univ_pi_fintype + theorem measurable_to_countable - theorem measurable_to_encodable Modified src/measure_theory/measurable_space_def.lean +/- theorem measurable_set.Inter - theorem measurable_set.Inter_Prop - theorem measurable_set.Inter_fintype +/- theorem measurable_set.Union - theorem measurable_set.Union_Prop - theorem measurable_set.Union_fintype Modified src/measure_theory/measure/ae_disjoint.lean +/- theorem measure_theory.ae_disjoint.Union_left_iff +/- theorem measure_theory.ae_disjoint.Union_right_iff +/- theorem measure_theory.exists_null_pairwise_disjoint_diff Modified src/measure_theory/measure/ae_measurable.lean +/- theorem ae_measurable.sum_measure +/- theorem ae_measurable_Union_iff +/- theorem ae_measurable_sum_measure_iff Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/haar_quotient.lean Modified src/measure_theory/measure/hausdorff.lean +/- theorem measure_theory.measure.hausdorff_measure_le_liminf_tsum +/- theorem measure_theory.measure.mk_metric_le_liminf_tsum Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.ae_restrict_Union_eq +/- theorem measure_theory.exists_pos_measure_of_cover +/- theorem measure_theory.measure.ae_sum_eq +/- theorem measure_theory.measure.ae_sum_iff +/- theorem measure_theory.measure.ext_iff_of_Union_eq_univ +/- theorem measure_theory.measure.map_eq_sum +/- theorem measure_theory.measure.restrict_Union +/- theorem measure_theory.measure.restrict_Union_ae +/- theorem measure_theory.measure.restrict_Union_apply +/- theorem measure_theory.measure.restrict_Union_apply_ae +/- theorem measure_theory.measure.restrict_Union_apply_eq_supr +/- theorem measure_theory.measure.restrict_Union_congr +/- theorem measure_theory.measure.restrict_Union_le +/- theorem measure_theory.measure.sum_apply_eq_zero +/- theorem measure_theory.measure.sum_smul_dirac +/- theorem measure_theory.measure_Inter_eq_infi +/- theorem measure_theory.measure_Union_congr_of_subset +/- theorem measure_theory.measure_Union_eq_supr +/- theorem measure_theory.measure_Union_to_measurable +/- theorem measure_theory.tendsto_measure_Inter +/- theorem measure_theory.tendsto_measure_Union Modified src/measure_theory/measure/measure_space_def.lean +/- theorem measure_theory.ae_all_iff - theorem measure_theory.ae_imp_iff +/- theorem measure_theory.exists_measurable_superset_forall_eq +/- theorem measure_theory.exists_measure_pos_of_not_measure_Union_null +/- theorem measure_theory.measure_Union_le +/- theorem measure_theory.measure_Union_null +/- theorem measure_theory.measure_Union_null_iff Modified src/measure_theory/measure/mutually_singular.lean +/- theorem measure_theory.measure.mutually_singular.sum_left +/- theorem measure_theory.measure.mutually_singular.sum_right Modified src/measure_theory/measure/null_measurable.lean +/- theorem measure_theory.exists_subordinate_pairwise_disjoint +/- theorem measure_theory.measure_Union +/- theorem measure_theory.measure_Union₀ - theorem measure_theory.null_measurable_set.Inter_Prop - theorem measure_theory.null_measurable_set.Inter_fintype - theorem measure_theory.null_measurable_set.Union_Prop - theorem measure_theory.null_measurable_set.Union_fintype Modified src/measure_theory/measure/outer_measure.lean +/- theorem measure_theory.extend_Union +/- theorem measure_theory.outer_measure.Union_null +/- theorem measure_theory.outer_measure.Union_null_iff +/- theorem measure_theory.outer_measure.exists_measurable_superset_forall_eq_trim +/- theorem measure_theory.outer_measure.trim_supr Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/measure_theory/measure/vector_measure.lean +/- theorem measure_theory.vector_measure.has_sum_of_disjoint_Union +/- theorem measure_theory.vector_measure.of_disjoint_Union + theorem measure_theory.vector_measure.restrict_le_restrict_countable_Union - theorem measure_theory.vector_measure.restrict_le_restrict_encodable_Union Modified src/measure_theory/pi_system.lean +/- theorem measurable_space.dynkin_system.has_Union Modified src/measure_theory/tactic.lean Modified src/order/complete_lattice.lean + theorem infi_plift_down + theorem infi_plift_up + theorem supr_plift_down + theorem supr_plift_up Modified src/order/filter/at_top_bot.lean +/- theorem filter.at_bot_countable_basis +/- theorem filter.at_top_countable_basis Modified src/order/filter/bases.lean +/- theorem filter.is_countably_generated_seq Modified src/order/filter/countable_Inter.lean +/- theorem countable_Inter_mem +/- theorem countable_bInter_mem +/- theorem eventually_countable_ball +/- theorem eventually_countable_forall +/- theorem eventually_eq.countable_Inter +/- theorem eventually_eq.countable_Union +/- theorem eventually_eq.countable_bInter +/- theorem eventually_eq.countable_bUnion +/- theorem eventually_le.countable_Inter +/- theorem eventually_le.countable_Union +/- theorem eventually_le.countable_bInter +/- theorem eventually_le.countable_bUnion Modified src/order/filter/ennreal.lean +/- theorem ennreal.limsup_liminf_le_liminf_limsup Modified src/probability/hitting_time.lean Modified src/probability/independence.lean Modified src/probability/stopping.lean + theorem measure_theory.is_stopping_time.measurable_set_eq_stopping_time_of_countable - theorem measure_theory.is_stopping_time.measurable_set_eq_stopping_time_of_encodable +/- theorem measure_theory.is_stopping_time.measurable_space_le_of_encodable +/- theorem measure_theory.is_stopping_time_of_measurable_set_eq Modified src/ring_theory/noetherian.lean +/- theorem submodule.fg_pi +/- theorem submodule.fg_supr Modified src/ring_theory/norm.lean Modified src/ring_theory/trace.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/bases.lean +/- theorem topological_space.is_separable_Union +/- theorem topological_space.separable_space_of_dense_range Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/polish.lean +/- theorem polish_space.exists_polish_space_forall_le 2022-08-30 11:08:03 3d7987c chore(*): bump to lean 3.47.0 (#16252) A major change is that notations now require names when they are shadowing another identical notation, even if it is a local notation. Also, because localized notations can be imported in a variety of contexts, there are some new best practices for them: * localized notations should always have a `(name := ...)`. Notation names are unrelated to declaration names, but the declaration name is a reasonable base for the notation name. * localized notations should never use `_` in the notation, because this gets desugared to a unique metavariable index, meaning that the notation will not be recognized as a duplicate of itself if `open_locale` is used when the notation is already available. Instead, you should use the `hole!` notation, which unfolds to `_`. Another major change is that projection notation (`x.foo`) now always instantiates implicit arguments with metavariables, which is consistent with Lean 4. To simulate the older behavior, one can use either strict implicit arguments for the structure field (e.g. `∀ {{n}}, p n` instead of `∀ {n}, p n`) or, depending on specifics, writing `λ _, x.foo` to ensure the implicit argument is preserved as an argument. ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified leanpkg.toml Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/finprod.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/direct_sum/basic.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/dual_number.lean Modified src/algebra/hom/freiman.lean Modified src/algebra/hom/group_action.lean Modified src/algebra/lie/quotient.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/algebra/module/submodule/basic.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/order/hom/ring.lean +/- def order_ring_iso.to_order_iso Modified src/algebra/quandle.lean Modified src/algebra/quaternion.lean Modified src/algebra/star/basic.lean Modified src/algebraic_topology/dold_kan/notations.lean Modified src/algebraic_topology/fundamental_groupoid/basic.lean Modified src/algebraic_topology/simplex_category.lean Modified src/algebraic_topology/simplicial_object.lean Modified src/algebraic_topology/simplicial_set.lean Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/complex/isometry.lean Modified src/analysis/complex/upper_half_plane/basic.lean Modified src/analysis/convex/segment.lean Modified src/analysis/convolution.lean Modified src/analysis/inner_product_space/adjoint.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/analysis/quaternion.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/category_theory/bicategory/basic.lean Modified src/category_theory/bicategory/coherence.lean Modified src/category_theory/bicategory/coherence_tactic.lean Modified src/category_theory/bicategory/free.lean Modified src/category_theory/bicategory/functor.lean +/- theorem category_theory.oplax_functor.to_prelax_functor_map +/- theorem category_theory.oplax_functor.to_prelax_functor_map₂ +/- theorem category_theory.prelax_functor.to_prefunctor_map +/- theorem category_theory.pseudofunctor.to_oplax_map +/- theorem category_theory.pseudofunctor.to_oplax_map₂ +/- theorem category_theory.pseudofunctor.to_prelax_functor_map +/- theorem category_theory.pseudofunctor.to_prelax_functor_map₂ Modified src/category_theory/closed/monoidal.lean Modified src/category_theory/enriched/basic.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/rigid/basic.lean Modified src/category_theory/types.lean Modified src/combinatorics/configuration.lean Modified src/combinatorics/set_family/compression/down.lean Modified src/combinatorics/set_family/compression/uv.lean Modified src/combinatorics/set_family/shadow.lean Modified src/combinatorics/simple_graph/prod.lean +/- def simple_graph.walk.of_box_prod_left +/- theorem simple_graph.walk.of_box_prod_left_box_prod_left +/- theorem simple_graph.walk.of_box_prod_left_box_prod_right +/- def simple_graph.walk.of_box_prod_right Modified src/combinatorics/simple_graph/subgraph.lean Modified src/control/functor/multivariate.lean Modified src/control/traversable/basic.lean +/- theorem applicative_transformation.preserves_pure +/- theorem applicative_transformation.preserves_seq Modified src/data/finmap.lean Modified src/data/finset/fold.lean Modified src/data/finset/prod.lean Modified src/data/finset/slice.lean Modified src/data/fintype/card_embedding.lean Modified src/data/list/basic.lean Modified src/data/list/defs.lean Modified src/data/list/func.lean Modified src/data/list/perm.lean Modified src/data/matrix/basic.lean Modified src/data/matrix/dmatrix.lean Modified src/data/matrix/hadamard.lean Modified src/data/matrix/kronecker.lean Modified src/data/multiset/bind.lean Modified src/data/multiset/fold.lean Modified src/data/nat/basic.lean Modified src/data/nat/factorial/basic.lean Modified src/data/nat/totient.lean Modified src/data/num/bitwise.lean Modified src/data/polynomial/basic.lean Modified src/data/quot.lean Modified src/data/rat/defs.lean Modified src/data/rbtree/insert.lean Modified src/data/real/ennreal.lean Modified src/data/real/golden_ratio.lean Modified src/data/real/hyperreal.lean Modified src/data/real/nnreal.lean Modified src/data/real/pi/leibniz.lean Modified src/data/rel.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/data/set/prod.lean Modified src/data/stream/defs.lean Modified src/data/sym/basic.lean Modified src/data/typevec.lean Modified src/data/vector3.lean Modified src/deprecated/ring.lean +/- theorem is_ring_hom.to_is_add_group_hom Modified src/deprecated/subgroup.lean Modified src/deprecated/submonoid.lean +/- theorem submonoid.is_submonoid +/- def submonoid.of Modified src/deprecated/subring.lean Modified src/dynamics/omega_limit.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/krull_topology.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/group_theory/coset.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/basic.lean Modified src/group_theory/submonoid/operations.lean Modified src/group_theory/subsemigroup/basic.lean Modified src/group_theory/subsemigroup/operations.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/affine_space/basic.lean Modified src/linear_algebra/cross_product.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/special_linear_group.lean Modified src/linear_algebra/tensor_power.lean Modified src/linear_algebra/tensor_product.lean Modified src/logic/equiv/local_equiv.lean Modified src/logic/function/basic.lean Modified src/measure_theory/function/conditional_expectation/basic.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/mutually_singular.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/meta/coinductive_predicates.lean Modified src/model_theory/basic.lean Modified src/model_theory/elementary_maps.lean Modified src/model_theory/language_map.lean Modified src/model_theory/satisfiability.lean Modified src/model_theory/semantics.lean Modified src/model_theory/skolem.lean Modified src/model_theory/syntax.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/dioph.lean Modified src/number_theory/modular.lean Modified src/number_theory/modular_forms/slash_actions.lean Modified src/number_theory/number_field.lean Modified src/number_theory/prime_counting.lean Modified src/number_theory/von_mangoldt.lean Modified src/order/filter/basic.lean Modified src/order/filter/prod.lean Modified src/order/hom/basic.lean Modified src/order/initial_seg.lean Modified src/order/rel_iso.lean +/- theorem rel_embedding.map_rel_iff +/- theorem rel_iso.map_rel_iff Modified src/probability/conditional_probability.lean Modified src/probability/notation.lean Modified src/probability/variance.lean Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.is_prime.mem_or_mem Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/localization/num_denom.lean +/- theorem is_fraction_ring.num_denom_reduced Modified src/ring_theory/noetherian.lean Modified src/ring_theory/non_zero_divisors.lean Modified src/ring_theory/polynomial/eisenstein.lean +/- theorem polynomial.is_eisenstein_at.is_weakly_eisenstein_at Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/witt_vector/isocrystal.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/cardinal/continuum.lean Modified src/set_theory/game/pgame.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean Modified src/set_theory/ordinal/fixed_point.lean Modified src/set_theory/ordinal/natural_ops.lean Modified src/set_theory/ordinal/notation.lean Modified src/set_theory/ordinal/principal.lean Modified src/set_theory/surreal/dyadic.lean Modified src/set_theory/zfc/basic.lean Modified src/tactic/converter/apply_congr.lean Modified src/tactic/core.lean Modified src/tactic/ext.lean Modified src/tactic/generalize_proofs.lean Modified src/tactic/interval_cases.lean Modified src/tactic/localized.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/push_neg.lean Modified src/tactic/rcases.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/ring.lean Modified src/tactic/ring2.lean Modified src/tactic/ring_exp.lean Modified src/tactic/simpa.lean Modified src/tactic/tauto.lean Modified src/topology/alexandroff.lean Modified src/topology/basic.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/zero_at_infty.lean Modified src/topology/homotopy/equiv.lean Modified src/topology/nhds_set.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/unit_interval.lean Modified test/induction.lean Modified test/localized/localized.lean Modified test/noncomm_ring.lean Modified test/simps.lean Modified test/to_additive.lean 2022-08-30 09:26:21 fbfe26d feat(linear_algebra/finite_dimensional): `dim_add_le_dim_add_dim` (#16301) Add a `finrank` version of a lemma that already exists for `module.rank`. The proof is exactly the same as the proof of the `module.rank` version, and, as with the previous `dim_sup_add_dim_inf_eq` lemma that it uses, so is the name (but in the `submodule` namespace in the case of the `finrank` versions). ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem submodule.dim_add_le_dim_add_dim 2022-08-30 09:26:20 86e9362 feat(algebraic_topology): the category simplicial_object.split (#16274) This PR introduces the category of simplicial objects equipped with a splitting. ESTIMATED CHANGES Modified src/algebraic_topology/split_simplicial_object.lean + theorem simplicial_object.split.comp_F + theorem simplicial_object.split.comp_f + theorem simplicial_object.split.congr_F + theorem simplicial_object.split.congr_f + def simplicial_object.split.eval_N + def simplicial_object.split.forget + theorem simplicial_object.split.hom.ext + structure simplicial_object.split.hom + theorem simplicial_object.split.id_F + theorem simplicial_object.split.id_f + def simplicial_object.split.mk' + def simplicial_object.split.nat_trans_ι_summand + theorem simplicial_object.split.ι_summand_naturality_symm + structure simplicial_object.split + def simplicial_object.splitting.of_iso 2022-08-30 08:38:06 c82fab8 feat(category_theory/adjunction): the Special Adjoint Functor Theorem (#15987) ESTIMATED CHANGES Modified src/category_theory/adjunction/adjoint_functor_theorems.lean 2022-08-30 06:55:36 ed23151 feat(data/list/rdrop): drop or take from the right (#15475) ESTIMATED CHANGES Added src/data/list/rdrop.lean + theorem list.drop_while_eq_self_iff + theorem list.drop_while_idempotent + theorem list.mem_rtake_while_imp + def list.rdrop + theorem list.rdrop_concat_succ + theorem list.rdrop_eq_reverse_drop_reverse + theorem list.rdrop_nil + def list.rdrop_while + theorem list.rdrop_while_concat + theorem list.rdrop_while_concat_neg + theorem list.rdrop_while_concat_pos + theorem list.rdrop_while_eq_nil_iff + theorem list.rdrop_while_eq_self_iff + theorem list.rdrop_while_idempotent + theorem list.rdrop_while_last_not + theorem list.rdrop_while_nil + theorem list.rdrop_while_prefix + theorem list.rdrop_while_singleton + theorem list.rdrop_zero + def list.rtake + theorem list.rtake_concat_succ + theorem list.rtake_eq_reverse_take_reverse + theorem list.rtake_nil + def list.rtake_while + theorem list.rtake_while_concat + theorem list.rtake_while_concat_neg + theorem list.rtake_while_concat_pos + theorem list.rtake_while_eq_nil_iff + theorem list.rtake_while_eq_self_iff + theorem list.rtake_while_idempotent + theorem list.rtake_while_nil + theorem list.rtake_while_suffix + theorem list.rtake_zero 2022-08-30 03:46:59 3683b34 chore(scripts): update nolints.txt (#16305) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-30 01:42:25 20f9454 feat(ring_theory/unique_factorization_domain): add `associated_iff_normalized_factors_eq_normalized_factors` (#16221) ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.associated_iff_normalized_factors_eq_normalized_factors 2022-08-30 00:38:43 17ab30b feat(field_theory/normal): Define the normal closure (#16144) This PR adds the definition of the normal closure, and proves that the normal closure is finite-dimensional and normal. ESTIMATED CHANGES Modified src/field_theory/normal.lean + theorem intermediate_field.restrict_scalars_normal + theorem normal_closure.restrict_scalars_eq_supr_adjoin 2022-08-29 20:01:00 e6c6dfd chore(analysis/special_functions): correct typo (#16280) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem tendsto_log_mul_rpow_nhds_zero - theorem tensdto_log_mul_rpow_nhds_zero 2022-08-29 20:00:59 879155b feat(*): replace fact(0 < t) with ne_zero (#16145) This has almost fully made things easier, whilst also being easier on the typeclass system (`fact` can cause many slowdowns). It also allows us to make many things that were not instances before into instances. ESTIMATED CHANGES Modified counterexamples/homogeneous_prime_not_prime.lean Modified src/algebra/algebra/basic.lean + theorem ne_zero.of_no_zero_smul_divisors Modified src/algebra/char_p/basic.lean +/- theorem char_p.char_is_prime_of_pos + theorem ne_zero.not_char_dvd + theorem ne_zero.of_not_dvd Modified src/algebra/char_p/invertible.lean Modified src/algebra/invertible.lean Modified src/algebra/ne_zero.lean - theorem ne_zero.not_char_dvd - theorem ne_zero.of_no_zero_smul_divisors - theorem ne_zero.of_not_dvd Modified src/control/random.lean Modified src/data/bitvec/basic.lean Modified src/data/fin/basic.lean - theorem fact.bit0.pos - theorem fact.bit1.pos - theorem fact.pow.pos - theorem fact.succ.pos +/- theorem fin.coe_of_nat_eq_mod' +/- def fin.of_nat' Modified src/data/nat/basic.lean Modified src/data/nat/totient.lean +/- theorem zmod.card_units_eq_totient Modified src/data/pnat/basic.lean - theorem pnat.fact_pos Modified src/data/zmod/basic.lean + theorem zmod.cast_eq_val +/- theorem zmod.int_coe_zmod_eq_iff +/- theorem zmod.nat_abs_val_min_abs_le +/- theorem zmod.nat_cast_comp_val +/- theorem zmod.nat_cast_nat_abs_val_min_abs +/- theorem zmod.nat_cast_right_inverse +/- theorem zmod.nat_cast_val +/- theorem zmod.nat_cast_zmod_surjective +/- theorem zmod.nat_cast_zmod_val +/- theorem zmod.nat_coe_zmod_eq_iff +/- theorem zmod.neg_val' +/- theorem zmod.neg_val +/- def zmod.units_equiv_coprime +/- theorem zmod.val_add +/- theorem zmod.val_eq_ite_val_min_abs +/- theorem zmod.val_injective +/- theorem zmod.val_int_cast +/- theorem zmod.val_le +/- theorem zmod.val_lt +/- theorem zmod.val_min_abs_def_pos Modified src/data/zmod/defs.lean Modified src/data/zmod/quotient.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/group_theory/finite_abelian.lean Modified src/group_theory/specific_groups/dihedral.lean +/- theorem dihedral_group.card +/- theorem dihedral_group.order_of_r Modified src/group_theory/specific_groups/quaternion.lean +/- theorem quaternion_group.card +/- theorem quaternion_group.order_of_a +/- theorem quaternion_group.order_of_xa Modified src/number_theory/cyclotomic/gal.lean Modified src/number_theory/legendre_symbol/add_character.lean Modified src/number_theory/lucas_lehmer.lean - theorem lucas_lehmer.fact_pnat_pos Modified src/number_theory/lucas_primality.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/ramification_inertia.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/tactic/norm_fin.lean +/- theorem tactic.norm_fin.normalize_fin_iff Modified src/testing/slim_check/sampleable.lean 2022-08-29 18:29:10 b490ab4 feat(analysis/normed_space/star/basic): add `cstar_ring` instances for `pi` and `prod` (#16254) ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean 2022-08-29 16:06:00 d032ed1 feat(analysis/seminorm): Add construction of seminorm over normed fields (#15893) As for normed spaces the properties of seminorms over fields are strong enough so that it sufficies to assume that `∀ (r : 𝕜) x, f (r • x) ≤ ∥r∥ * f x`. This PR adds this construction. ESTIMATED CHANGES Modified src/analysis/seminorm.lean +/- def seminorm.of + def seminorm.of_smul_le 2022-08-29 16:05:59 7e20c8f feat(topology): composition of continuous functions is continuous w.r.t. the compact-open topologies (#15721) * Remove the `t2_space` assumption from `exists_compact_between` by generalizing the proof of `exists_compact_superset`, and move it from `topology/separation` to `topology/subset_properties`. * Use it to prove `continuous_map.continuous_prod` in `topology/continuous_map` stating that for topological spaces `X,Y,Z` with `Y` locally compact, the composition induces a continuous map from `C(X,Y) x C(Y,Z)` to `C(X,Z)` where all function spaces are endowed with the compact-open topology. The (statement and the) proof is taken from Prop. 9 of Chap. X, §3, №. 4 of Bourbaki's *Topologie Générale*. * Generalize `exists_open_between_and_is_compact_closure` from `t3_space` to `t2_space` using the generalized `exists_compact_between`. This has been briefly discussed in [this Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/continuity.20of.20continuous.20composition) ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.continuous.comp' + theorem continuous_map.continuous_comp' Modified src/topology/separation.lean - theorem exists_compact_between +/- theorem exists_open_between_and_is_compact_closure Modified src/topology/subset_properties.lean + theorem exists_compact_between 2022-08-29 13:10:49 1b8a0c2 chore(set_theory/cardinal/ordinal): follow your linter (#16265) Editing `set_theory.cardinal.ordinal`, I noticed that the linter was unhappy. So, I thought of pleasing it. I followed its instructions, but, admittedly, I do not know if this is a good change or not! I replaced some `fintype` assumptions by `finite` ones and changed one proof as a consequence. ESTIMATED CHANGES Modified src/set_theory/cardinal/ordinal.lean +/- theorem cardinal.extend_function_finite +/- theorem cardinal.mk_compl_eq_mk_compl_finite +/- theorem cardinal.mk_compl_eq_mk_compl_finite_lift +/- theorem cardinal.mk_compl_eq_mk_compl_finite_same 2022-08-29 13:10:48 daec7d6 chore(order/bounded_order): Rename `is_complemented` to `complemented_lattice` (#16263) This is to make space for the predicate `is_complemented : α → Prop := ∃ b, is_compl a b`. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean Modified src/order/atoms.lean + theorem is_atomic_of_is_coatomic_of_complemented_lattice_of_is_modular - theorem is_atomic_of_is_coatomic_of_is_complemented_of_is_modular + theorem is_coatomic_of_is_atomic_of_complemented_lattice_of_is_modular - theorem is_coatomic_of_is_atomic_of_is_complemented_of_is_modular Modified src/order/boolean_algebra.lean Modified src/order/bounded_order.lean Modified src/order/compactly_generated.lean + theorem complemented_lattice_iff_is_atomistic + theorem complemented_lattice_of_Sup_atoms_eq_top + theorem complemented_lattice_of_is_atomistic - theorem is_complemented_iff_is_atomistic - theorem is_complemented_of_Sup_atoms_eq_top - theorem is_complemented_of_is_atomistic Modified src/order/hom/basic.lean + theorem order_iso.complemented_lattice + theorem order_iso.complemented_lattice_iff - theorem order_iso.is_complemented - theorem order_iso.is_complemented_iff Modified src/order/modular_lattice.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/simple_module.lean +/- def is_semisimple_module 2022-08-29 13:10:47 24b08ce feat(order/heyting/regular): Heyting-regular elements (#16033) Define Heyting-regular elements of an Heyting lattice, namely those `a` such that `aᶜᶜ = a`, and prove that they form a boolean algebra. ESTIMATED CHANGES Added src/order/heyting/regular.lean + def boolean_algebra.of_regular + theorem heyting.is_regular.himp + theorem heyting.is_regular.inf + def heyting.is_regular + theorem heyting.is_regular_bot + theorem heyting.is_regular_compl + theorem heyting.is_regular_of_boolean + theorem heyting.is_regular_of_decidable + theorem heyting.is_regular_top + theorem heyting.regular.coe_bot + theorem heyting.regular.coe_compl + theorem heyting.regular.coe_himp + theorem heyting.regular.coe_inf + theorem heyting.regular.coe_inj + theorem heyting.regular.coe_injective + theorem heyting.regular.coe_le_coe + theorem heyting.regular.coe_lt_coe + theorem heyting.regular.coe_sdiff + theorem heyting.regular.coe_sup + theorem heyting.regular.coe_to_regular + theorem heyting.regular.coe_top + def heyting.regular.gi + def heyting.regular.to_regular + theorem heyting.regular.to_regular_coe + def heyting.regular 2022-08-29 11:13:01 e4b9af2 feat(algebra/char_p/basic + data/zmod/basic): the characteristic is the order of one and zmod related lemmas (#16277) [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem char_p.add_order_of_one Modified src/data/zmod/basic.lean + theorem zmod.add_order_of_coe' + theorem zmod.add_order_of_coe + theorem zmod.add_order_of_one 2022-08-29 11:13:00 8ad7077 feat(data/nat/factorization/basic): lemmas about `n.factorization p = 0` (#16185) Adds some lemmas characterising conditions when `n.factorization p = 0`. This PR also rearranges the order of some lemmas to better group them together (and adds some section docstrings). Also swaps the names `factorization_eq_zero_iff` and `factorization_eq_zero_iff'`. ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean +/- theorem nat.factorization_eq_zero_iff' +/- theorem nat.factorization_eq_zero_iff + theorem nat.factorization_eq_zero_iff_remainder + theorem nat.factorization_eq_zero_of_not_dvd + theorem nat.factorization_eq_zero_of_remainder + theorem nat.prime.eq_of_factorization_pos 2022-08-29 08:18:28 211bf1a feat(linear_algebra/affine_space/affine_subspace): `map_eq_bot_iff` (#16285) Add the lemma that the image of an affine subspace under an affine map is `⊥` if and only if that subspace is `⊥`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.map_eq_bot_iff 2022-08-29 08:18:27 39d5a98 feat(linear_algebra/affine_space/affine_equiv): lemmas about coercion to `affine_map` (#16284) Add two more `rfl` (and `simp`) lemmas about the coercion from `affine_equiv` to `affine_map`. In both cases very similar lemmas are already present (in one case a version using `to_affine_map`, in one case a version for the coercion to a function), but apparently not these particular ones. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.coe_linear + theorem affine_equiv.coe_trans_to_affine_map 2022-08-29 08:18:26 3e2fb4c feat(data/rat/cast): generalize `ext` lemmas (#16268) * generalize `monoid_with_zero_hom.ext_rat` to `monoid_with_zero`; * deduce `ext` lemma for `ring_hom`s from `monoid_with_zero_hom` version; * use hom classes. ESTIMATED CHANGES Modified src/data/rat/cast.lean + theorem monoid_with_zero_hom.ext_rat' +/- theorem monoid_with_zero_hom.ext_rat +/- theorem monoid_with_zero_hom.ext_rat_on_pnat +/- theorem ring_hom.ext_rat Modified src/ring_theory/witt_vector/structure_polynomial.lean 2022-08-29 08:18:25 31297bd refactor(algebra/order/with_zero): Generalize lemmas (#16240) Generalize the lemmas introduced in #15644 to monoids + covariant classes. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean + theorem eq_one_of_mul_le_one_left + theorem eq_one_of_mul_le_one_right + theorem eq_one_of_one_le_mul_left + theorem eq_one_of_one_le_mul_right Modified src/algebra/order/with_zero.lean - theorem eq_one_of_mul_eq_one_left' - theorem eq_one_of_mul_eq_one_left - theorem eq_one_of_mul_eq_one_right' - theorem eq_one_of_mul_eq_one_right 2022-08-29 08:18:24 301a625 feat(ring_theory/polynomial/basic): generalize `is_domain` to `no_zero_divisors` (#16226) This generalization makes this work on `comm_semiring` instead of `comm_ring`. This also removes a duplicate proof of nontriviality. `mv_polynomial.eq_zero_or_eq_zero_of_mul_eq_zero` has been removed in favor of this instance. ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean - theorem mv_polynomial.is_domain_fin - theorem mv_polynomial.is_domain_fin_zero - theorem mv_polynomial.is_domain_fintype + theorem mv_polynomial.no_zero_divisors_fin + theorem mv_polynomial.no_zero_divisors_of_finite 2022-08-29 08:18:23 9c0a543 feat(counterexamples/map_floor): `floor`/`ceil` are not preserved under order ring homs (#16198) #16025 proves that `⌊f a⌋ = ⌊a⌋` and `⌈f a⌉ = ⌈a⌉` for a **strictly** monotone ring hom `f`. This counterexample shows that this can't be relaxed to `f` monotone. ESTIMATED CHANGES Added counterexamples/map_floor.lean + def int_with_epsilon.forget_epsilons + theorem int_with_epsilon.forget_epsilons_apply + theorem int_with_epsilon.forget_epsilons_floor_lt + theorem int_with_epsilon.lt_forget_epsilons_ceil + theorem int_with_epsilon.pos_iff Modified src/data/polynomial/basic.lean + theorem polynomial.coeff_inj + theorem polynomial.coeff_injective Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.le_nat_trailing_degree 2022-08-29 08:18:21 ae93ce8 feat(topology/algebra/polynomial): add coeff_le_of_roots_le (#15275) This is the proof that, if the roots of a polynomial are bounded, then its coefficients are bounded. More precisely, it is the following statement: ```lean lemma coeff_le_of_roots_le [field F] [normed_field K] {p : F[X]} {f : F →+* K} {B : ℝ} (i : ℕ) (h1 : p.monic) (h2 : splits f p) (h3 : ∀ z ∈ (map f p).roots, ∥z∥ ≤ B) : ∥ (map f p).coeff i ∥ ≤ B^(p.nat_degree - i) * p.nat_degree.choose i ``` From flt-regular ESTIMATED CHANGES Modified src/topology/algebra/polynomial.lean + theorem polynomial.coeff_le_of_roots_le 2022-08-29 08:18:20 f0514a8 feat(category_theory/preadditive): projective iff variants of Yoneda preserve epimorphisms (#15123) ESTIMATED CHANGES Modified src/category_theory/preadditive/injective.lean + theorem category_theory.injective.injective_iff_preserves_epimorphisms_preadditive_yoneda_obj' + theorem category_theory.injective.injective_iff_preserves_epimorphisms_preadditive_yoneda_obj Modified src/category_theory/preadditive/projective.lean + theorem category_theory.projective.projective_iff_preserves_epimorphisms_preadditive_coyoneda_obj' + theorem category_theory.projective.projective_iff_preserves_epimorphisms_preadditive_coyoneda_obj 2022-08-29 08:18:19 24a233d feat(algebra/order/positive): new file (#14833) Define various algebraic structures on the set of positive numbers. I have two reasons to introduce these classes: - we can use `{x : ℝ // 0 < x}` in various filter bases; this may save us from explicit usage of `half_pos` or `div_pos` here or there; - I want to introduce a multiplicative action of `{x : ℝ // 0 < x}` on the upper half plane. ESTIMATED CHANGES Added src/algebra/order/positive/field.lean + theorem positive.coe_inv + theorem positive.coe_zpow Added src/algebra/order/positive/ring.lean + theorem positive.coe_add + theorem positive.coe_mul + theorem positive.coe_one + theorem positive.coe_pow Modified src/data/pnat/basic.lean +/- theorem pnat.coe_eq_one_iff 2022-08-29 06:20:49 7c4a46f feat(measure_theory/function/conditional_expectation/basic): add some condexp lemmas (#16273) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation/basic.lean + theorem measure_theory.condexp_finset_sum + theorem measure_theory.condexp_nonneg + theorem measure_theory.condexp_nonpos Modified src/topology/algebra/monoid.lean + theorem eventually_eq_prod 2022-08-29 04:56:43 6de241f feat(data/rat/nnrat): Nonnegative rationals (#16283) Define `nnrat`, the subtype of nonnegative rational numbers, and show it forms a `canonically_linear_ordered_semifield`. ESTIMATED CHANGES Added src/data/rat/nnrat.lean + theorem nnrat.abs_coe + theorem nnrat.bdd_above_coe + theorem nnrat.bdd_below_coe + theorem nnrat.coe_add + theorem nnrat.coe_bit0 + theorem nnrat.coe_bit1 + theorem nnrat.coe_coe_hom + theorem nnrat.coe_div + theorem nnrat.coe_eq_zero + def nnrat.coe_hom + theorem nnrat.coe_indicator + theorem nnrat.coe_inj + theorem nnrat.coe_inv + theorem nnrat.coe_le_coe + theorem nnrat.coe_list_prod + theorem nnrat.coe_list_sum + theorem nnrat.coe_lt_coe + theorem nnrat.coe_max + theorem nnrat.coe_min + theorem nnrat.coe_mk + theorem nnrat.coe_mono + theorem nnrat.coe_mul + theorem nnrat.coe_multiset_prod + theorem nnrat.coe_multiset_sum + theorem nnrat.coe_nat_cast + theorem nnrat.coe_ne_zero + theorem nnrat.coe_nonneg + theorem nnrat.coe_one + theorem nnrat.coe_pos + theorem nnrat.coe_pow + theorem nnrat.coe_prod + theorem nnrat.coe_sub + theorem nnrat.coe_sum + theorem nnrat.coe_zero + def nnrat.denom + theorem nnrat.denom_coe + theorem nnrat.ext + theorem nnrat.ext_iff + theorem nnrat.ext_num_denom + theorem nnrat.ext_num_denom_iff + theorem nnrat.mk_coe_nat + theorem nnrat.nat_abs_num_coe + theorem nnrat.ne_iff + theorem nnrat.nsmul_coe + def nnrat.num + theorem nnrat.num_div_denom + theorem nnrat.sub_def + theorem nnrat.to_nnrat_coe + theorem nnrat.to_nnrat_coe_nat + theorem nnrat.to_nnrat_mono + theorem nnrat.to_nnrat_prod_of_nonneg + theorem nnrat.to_nnrat_sum_of_nonneg + theorem nnrat.val_eq_coe + def nnrat + theorem rat.coe_nnabs + theorem rat.coe_to_nnrat + theorem rat.le_coe_to_nnrat + theorem rat.le_to_nnrat_iff_coe_le' + theorem rat.le_to_nnrat_iff_coe_le + theorem rat.lt_to_nnrat_iff_coe_lt + def rat.nnabs + def rat.to_nnrat + theorem rat.to_nnrat_add + theorem rat.to_nnrat_add_le + theorem rat.to_nnrat_bit0 + theorem rat.to_nnrat_bit1 + theorem rat.to_nnrat_div' + theorem rat.to_nnrat_div + theorem rat.to_nnrat_eq_zero + theorem rat.to_nnrat_inv + theorem rat.to_nnrat_le_iff_le_coe + theorem rat.to_nnrat_le_to_nnrat_iff + theorem rat.to_nnrat_lt_iff_lt_coe + theorem rat.to_nnrat_lt_to_nnrat_iff' + theorem rat.to_nnrat_lt_to_nnrat_iff + theorem rat.to_nnrat_lt_to_nnrat_iff_of_nonneg + theorem rat.to_nnrat_mul + theorem rat.to_nnrat_one + theorem rat.to_nnrat_pos + theorem rat.to_nnrat_zero 2022-08-28 08:57:09 de62604 feat(probability/integration): remove integrability assumption in indep_fun.integral_mul (#16167) The integral of a product of independent random variables is the product of the integrals. This is already in mathlib when the random variables are integrable, but it also holds when they are not integrable (as both sides are then zero). In this PR, we remove the integrability assumption from this statement (and weaken accordingly further results that depended on this one). ESTIMATED CHANGES Modified src/probability/independence.lean + theorem probability_theory.indep_fun.symm Modified src/probability/integration.lean + theorem probability_theory.indep_fun.integrable_left_of_integrable_mul + theorem probability_theory.indep_fun.integrable_right_of_integrable_mul + theorem probability_theory.indep_fun.integral_mul' + theorem probability_theory.indep_fun.integral_mul - theorem probability_theory.indep_fun.integral_mul_of_integrable' + theorem probability_theory.lintegral_mul_eq_lintegral_mul_lintegral_of_indep_fun'' Modified src/probability/moments.lean + theorem probability_theory.ae_strongly_measurable_exp_mul_add + theorem probability_theory.ae_strongly_measurable_exp_mul_sum + theorem probability_theory.indep_fun.mgf_add' Modified src/probability/variance.lean 2022-08-27 21:53:56 937c692 chore(category_theory): fix name of mono_app_of_mono (#16275) This PR fixes the names of a few lemmas like `mono_app_of_mono`. ESTIMATED CHANGES Modified src/category_theory/adjunction/evaluation.lean - theorem category_theory.nat_trans.epi_iff_app_epi + theorem category_theory.nat_trans.epi_iff_epi_app - theorem category_theory.nat_trans.mono_iff_app_mono + theorem category_theory.nat_trans.mono_iff_mono_app Modified src/category_theory/functor/category.lean - theorem category_theory.nat_trans.epi_app_of_epi + theorem category_theory.nat_trans.epi_of_epi_app - theorem category_theory.nat_trans.mono_app_of_mono + theorem category_theory.nat_trans.mono_of_mono_app Modified src/category_theory/sites/subsheaf.lean 2022-08-27 21:53:55 8dd8009 fix(combinatorics/composition): remove non-terminal simp (#16259) ESTIMATED CHANGES Modified src/combinatorics/composition.lean 2022-08-27 21:53:53 1c2d71f feat(algebra/order/field): Canonically linear ordered semifields (#15677) Define `canonically_linear_ordered_semifield`. The target is `nnreal` and the future `nnrat`. ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem tsub_div Modified src/algebra/order/field_defs.lean Modified src/algebra/order/nonneg.lean +/- theorem nonneg.inv_mk +/- theorem nonneg.mk_div_mk + theorem nonneg.mk_zpow 2022-08-27 19:36:00 ebb53dc feat(data/rat/defs): add two lemmas for `pnat_denom` of 0 and 1 (#15864) ESTIMATED CHANGES Modified src/data/rat/defs.lean + theorem rat.pnat_denom_one + theorem rat.pnat_denom_zero 2022-08-27 18:04:24 6901db6 chore(category_theory/limits/shapes/finite_products): avoid tidy (#16261) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/finite_products.lean 2022-08-27 16:01:28 c241a03 docs(ring_theory/valuation/valuation_subring): clarify value group docstring (#16272) The "value group" of a valuation is not a group! It's a group with zero. I've heard the phrase "value group" being used to describe the units of this group with zero before, so we should perhaps clarify in the docstring what we mean by this definition. ESTIMATED CHANGES Modified src/ring_theory/valuation/valuation_subring.lean 2022-08-27 16:01:27 fef8efd feat(category_theory): coseparators in structured_arrow (#15981) Hopefully the last preliminary PR for the Special Adjoint Functor Theorem. ESTIMATED CHANGES Modified src/category_theory/generator.lean + theorem category_theory.costructured_arrow.is_separating_proj_preimage + theorem category_theory.has_initial_of_is_coseparating - theorem category_theory.has_initial_of_is_cosepatating +/- theorem category_theory.has_terminal_of_is_separating + theorem category_theory.structured_arrow.is_coseparating_proj_preimage +/- theorem category_theory.well_powered_of_is_detecting Modified src/category_theory/structured_arrow.lean 2022-08-27 13:27:26 c95908a feat(measure_theory/measure/finite_measure_weak_convergence): Add portmanteau implications concerning open and closed sets. (#15321) Add equivalence of a limsup condition for closed sets and a liminf condition for open sets, which will later both be shown to be characterizing conditions of weak convergence of probability measures. Also add that either of these equivalent conditions implies that for any Borel set whose boundary carries zero probability in the candidate limit measure, we have that the measures of this set tend to its measure under the candidate limit measure. ESTIMATED CHANGES Modified src/algebra/order/sub.lean + theorem antitone_const_tsub Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem measure_theory.le_measure_compl_liminf_of_limsup_measure_le + theorem measure_theory.le_measure_liminf_of_limsup_measure_compl_le + theorem measure_theory.limsup_measure_closed_le_iff_liminf_measure_open_ge + theorem measure_theory.limsup_measure_compl_le_of_le_liminf_measure + theorem measure_theory.limsup_measure_le_of_le_liminf_measure_compl + theorem measure_theory.probability_measure.le_liminf_measure_open_of_tendsto + theorem measure_theory.probability_measure.limsup_measure_closed_le_of_tendsto + theorem measure_theory.probability_measure.tendsto_measure_of_null_frontier_of_tendsto' + theorem measure_theory.probability_measure.tendsto_measure_of_null_frontier_of_tendsto + theorem measure_theory.tendsto_measure_of_le_liminf_measure_of_limsup_measure_le + theorem measure_theory.tendsto_measure_of_null_frontier 2022-08-27 00:58:35 1836169 feat(ring_theory/ideal): Two little `restrict_scalars` lemmas (#16248) I used these two lemmas in one of the definitions of the ideal norm. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.coe_restrict_scalars + theorem ideal.restrict_scalars_mul 2022-08-26 20:25:38 5ef6426 feat(analysis/normed_space/star/spectrum): star algebra morphisms over ℂ are norm contractive (#16219) - [x] depends on: #16177 - [x] depends on: #16212 ESTIMATED CHANGES Modified src/analysis/normed_space/star/spectrum.lean + theorem star_alg_hom.nnnorm_apply_le + theorem star_alg_hom.norm_apply_le 2022-08-26 07:00:48 15c8fdd feat(data/{list, multiset}/basic): generalize `pmap_congr` (#16220) ESTIMATED CHANGES Modified src/data/list/basic.lean Modified src/data/multiset/basic.lean 2022-08-26 04:46:45 3b0a507 chore(scripts): update nolints.txt (#16253) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-25 18:07:03 b059a44 feat(algebra/order/floor): lemmas about `int.floor`, `int.ceil`, `int.fract`, `round` (#16158) ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem abs_sub_round_eq_min + theorem abs_sub_round_le_abs_self + theorem int.abs_fract + theorem int.abs_one_sub_fract + theorem int.add_one_le_ceil_iff - theorem int.ceil_coe + theorem int.ceil_eq_add_one_sub_fract + theorem int.ceil_int_cast + theorem int.ceil_nat_cast +/- theorem int.ceil_one + theorem int.ceil_sub_self_eq +/- theorem int.ceil_zero - theorem int.floor_coe + theorem int.floor_int_cast + theorem int.floor_le_neg_one_iff + theorem int.floor_le_sub_one_iff + theorem int.floor_nat_cast +/- theorem int.floor_one +/- theorem int.floor_zero - theorem int.fract_coe + theorem int.fract_eq_zero_or_add_one_sub_ceil +/- theorem int.fract_floor + theorem int.fract_int_cast + theorem int.fract_nat_cast +/- theorem int.fract_nonneg +/- theorem int.lt_floor_add_one + theorem int.one_le_ceil_iff +/- theorem int.sub_one_lt_floor +/- def round + theorem round_eq + theorem round_int_cast + theorem round_nat_cast +/- theorem round_one +/- theorem round_zero Modified src/data/int/succ_pred.lean + theorem int.pos_iff_one_le Modified src/data/rat/floor.lean Modified src/order/basic.lean + theorem max_def' + theorem min_def' Modified src/topology/algebra/order/floor.lean 2022-08-25 15:37:33 4ed5f0e feat(algebra/order/smul): `positivity` extension for `smul` (#16162) Add `positivity_smul`, a `positivity` extension to deal with `•`. ESTIMATED CHANGES Modified src/algebra/order/smul.lean 2022-08-25 13:18:46 3d0bb87 feat(data/zmod/quotient): Version of `order_eq_card_zpowers` in terms of `nat.card` without a `fintype`/`finite` assumption (#16175) This PR adds a version of `order_eq_card_zpowers` in terms of `nat.card` without a `fintype`/`finite` assumption. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean + theorem order_eq_card_zpowers' Modified src/group_theory/order_of_element.lean 2022-08-25 11:08:07 b625803 feat(topology/uniform_space/uniform_convergence): tendsto_uniformly_on_filter (#15871) Currently, mathlib supports several notions of uniform convergence (e.g., tendsto_uniformly_on). These are "global" versions of a more local notion, which we call tendsto_uniformly_on_filter. Specifically, as revealed by tendsto_prod_top_iff is that uniform convergence means convergence on a product filter. So why can't you have a more general filter than a principal filter? There's no reason you can't! Indeed, if you replace 𝓟 s with 𝓝 x you get a notion of "local uniform convergence" which is enough to prove, e.g., the derivative operator at a point commutes with the pointwise limit. ESTIMATED CHANGES Modified src/order/filter/prod.lean + theorem filter.eventually.diag_of_prod_left + theorem filter.eventually.diag_of_prod_right + theorem filter.eventually_prod_principal_iff + theorem filter.eventually_swap_iff + theorem filter.prod_mono_left + theorem filter.prod_mono_right Modified src/topology/algebra/uniform_group.lean + theorem tendsto_uniformly.div + theorem tendsto_uniformly.mul + theorem tendsto_uniformly_on_filter.div + theorem tendsto_uniformly_on_filter.mul Modified src/topology/uniform_space/uniform_convergence.lean + theorem filter.tendsto.tendsto_uniformly_on_filter_const + theorem tendsto_prod_filter_iff + theorem tendsto_uniformly.tendsto_uniformly_on_filter + theorem tendsto_uniformly_iff_tendsto_uniformly_on_filter + theorem tendsto_uniformly_on.tendsto_at + theorem tendsto_uniformly_on_filter.comp + theorem tendsto_uniformly_on_filter.congr + theorem tendsto_uniformly_on_filter.mono_left + theorem tendsto_uniformly_on_filter.mono_right + theorem tendsto_uniformly_on_filter.prod + theorem tendsto_uniformly_on_filter.prod_map + theorem tendsto_uniformly_on_filter.tendsto_at + theorem tendsto_uniformly_on_filter.uniform_cauchy_seq_on_filter + def tendsto_uniformly_on_filter + theorem tendsto_uniformly_on_filter_iff_tendsto + theorem tendsto_uniformly_on_iff_tendsto_uniformly_on_filter + theorem uniform_cauchy_seq_on.uniform_cauchy_seq_on_filter + theorem uniform_cauchy_seq_on_filter.comp + theorem uniform_cauchy_seq_on_filter.mono_left + theorem uniform_cauchy_seq_on_filter.mono_right + theorem uniform_cauchy_seq_on_filter.tendsto_uniformly_on_filter_of_tendsto + def uniform_cauchy_seq_on_filter + theorem uniform_cauchy_seq_on_iff_uniform_cauchy_seq_on_filter + theorem uniform_continuous.comp_tendsto_uniformly_on_filter 2022-08-25 08:22:00 36e16da docs(algebra/field/basic): fix typo (#16241) ESTIMATED CHANGES Modified src/algebra/field/basic.lean 2022-08-25 05:07:58 b6931e1 chore(scripts): update nolints.txt (#16244) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2022-08-25 05:07:57 c5be877 feat(tactic/tauto): add support for `¬_ ≠ _` (#16232) This is an attempt to fix [this issue](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/tauto!.20fails.20on.20ne). ESTIMATED CHANGES Modified src/tactic/tauto.lean Modified test/tauto.lean 2022-08-25 03:05:47 fec8ffe chore(analysis/normed_space/star/*): migrate use of `a ∈ self_adjoint A` to `is_self_adjoint a` (#16212) After #15326, this PR migrates existing uses of `a ∈ self_adjoint A` to `is_self_adjoint a` so as to standardize. We also move several results into the `is_self_adjoint` namespace in order to take advantage of dot notation. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean +/- theorem self_adjoint.rat_cast_mem Modified src/analysis/normed_space/star/basic.lean + theorem is_self_adjoint.nnnorm_pow_two_pow - theorem nnnorm_pow_two_pow_of_self_adjoint Modified src/analysis/normed_space/star/exponential.lean + theorem is_self_adjoint.exp_i_smul_unitary - theorem self_adjoint.exp_i_smul_unitary Modified src/analysis/normed_space/star/spectrum.lean + theorem is_self_adjoint.coe_re_map_spectrum + theorem is_self_adjoint.mem_spectrum_eq_re + theorem is_self_adjoint.spectral_radius_eq_nnnorm + theorem is_star_normal.spectral_radius_eq_nnnorm - theorem self_adjoint.coe_re_map_spectrum' +/- theorem self_adjoint.coe_re_map_spectrum - theorem self_adjoint.mem_spectrum_eq_re' +/- theorem self_adjoint.mem_spectrum_eq_re - theorem spectral_radius_eq_nnnorm_of_self_adjoint - theorem spectral_radius_eq_nnnorm_of_star_normal 2022-08-25 03:05:46 42d6407 feat(analysis/convex/cone): add `inner_dual_cone_of_inner_dual_cone_eq_self` for nonempty, closed, convex cones (#15637) We add the following results about convex cones: - instance `has_zero` - `inner_dual_cone_zero` - `inner_dual_cone_univ` - `pointed_of_nonempty_of_is_closed` - `hyperplane_separation_of_nonempty_of_is_closed_of_nmem` - `inner_dual_cone_of_inner_dual_cone_eq_self` References: - https://ti.inf.ethz.ch/ew/lehre/ApproxSDP09/notes/conelp.pdf - Stephen P. Boyd and Lieven Vandenberghe. Convex Optimization. Cambridge University Press. ISBN 978-0-521-83378-3. available at https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf ESTIMATED CHANGES Modified docs/references.bib Modified src/analysis/convex/cone.lean + theorem convex_cone.coe_zero + theorem convex_cone.hyperplane_separation_of_nonempty_of_is_closed_of_nmem + theorem convex_cone.inner_dual_cone_of_inner_dual_cone_eq_self + theorem convex_cone.mem_zero + theorem convex_cone.pointed_of_nonempty_of_is_closed + theorem convex_cone.pointed_zero + theorem inner_dual_cone_univ + theorem inner_dual_cone_zero 2022-08-25 00:16:14 bd12701 feat(algebra/group_with_zero): add `eq_on_inv₀` (#16222) * move some lemmas up in the import chain; * use `namespace is_unit`; * add `is_unit.eq_on_inv` and `eq_on_inv₀`; * rename `monoid_hom.eq_on_inv` to `eq_on_inv`, make `f` and `g` explicit. ESTIMATED CHANGES Modified src/algebra/group/units.lean +/- theorem is_unit.coe_inv_mul +/- theorem is_unit.mul_coe_inv +/- theorem is_unit.mul_iff +/- theorem is_unit.mul_left_inj +/- theorem is_unit.mul_right_inj +/- theorem is_unit.unit_of_coe_units +/- theorem is_unit.unit_spec + theorem units.coe_inv Modified src/algebra/group_with_zero/basic.lean + theorem eq_on_inv₀ Modified src/algebra/hom/equiv.lean Modified src/algebra/hom/group.lean + theorem eq_on_inv + theorem group.is_unit + theorem is_unit.eq_on_inv - theorem monoid_hom.eq_on_inv Modified src/algebra/hom/units.lean - theorem units.coe_inv Modified src/data/int/cast.lean 2022-08-25 00:16:12 2ca1b57 chore(algebra/order/{module, smul}): Move to the correct spot (#16131) Make `algebra.order.module` do what it says on the tin. Namely, move everything that wasn't about `module` to `algebra.order.smul` and generalize accordingly. As a bonus, add a shortcut instance for `ordered_smul 𝕜 (ι → 𝕜)` as this solves #16021. ESTIMATED CHANGES Modified src/algebra/order/module.lean - theorem bdd_above.smul_of_nonneg - theorem bdd_above_smul_iff_of_pos - theorem bdd_below.smul_of_nonneg - theorem bdd_below_smul_iff_of_pos - theorem lower_bounds_smul_of_pos - theorem smul_lower_bounds_subset_lower_bounds_smul - theorem smul_upper_bounds_subset_upper_bounds_smul - theorem upper_bounds_smul_of_pos Modified src/algebra/order/smul.lean + theorem bdd_above.smul_of_nonneg + theorem bdd_above_smul_iff_of_pos + theorem bdd_below.smul_of_nonneg + theorem bdd_below_smul_iff_of_pos + theorem lower_bounds_smul_of_pos +/- def order_iso.smul_left - theorem ordered_smul.mk'' +/- theorem ordered_smul.mk' + theorem smul_lower_bounds_subset_lower_bounds_smul + theorem smul_upper_bounds_subset_upper_bounds_smul + theorem upper_bounds_smul_of_pos 2022-08-25 00:16:11 4b440bb refactor(order/well_founded_set): golf, review API (#11303) ## New lemmas ### About `set.well_founded_on` - `set.well_founded_on.mono`, `set.well_founded_on.mono_set`; - `set.well_founded_on.union`, `set.well_founded_on_union`, `finset.well_founded_on`, `set.finite.well_founded_on`, `set.subsingleton.well_founded_on`, `set.well_founded_on_empty`, `set.well_founded_on_singleton`, `set.well_founded_on_insert`, `set.well_founded_on.insert`; ### About `set.is_wf` - `set.is_wf_union`; - `set.finite.is_wf`, `finset.is_wf`, `set.is_wf_empty`, `set.is_wf_singleton`, `set.subsingleton.is_wf`, `set.is_wf_insert`, `set.is_wf.insert`; - `finset.is_wf_bUnion` ### About `set.partially_well_ordered_on` - `set.partially_well_ordered_on.union`, `set.partially_well_ordered_on_union`; - `set.finite.partially_well_ordered_on`, `finset.partially_well_ordered_on`, `set.partially_well_ordered_on_empty`, `set.partially_well_ordered_on_singleton`, `set.partially_well_ordered_on_insert` (an `iff`), `set.partially_well_ordered_on.insert`, `set.subsingleton.partially_well_ordered_on`; ### About `set.is_pwo` - `set.is_pwo.image_of_monotone_on`, `set.is_pwo_union`; - `finset.is_pwo`, `set.is_pwo_insert`; - `finset.is_pwo_bUnion`; ## Other API changes - Definitions lemmas now use `∀ n, f n ∈ s` instead of `range f ⊆ s`. - Many lemmas now use weaker TC assumptions (e.g., `preorder` instead of `partial_order`). - `set.is_wf_iff_no_descending_seq` now uses `(f : ℕ → α) (hf : strict_anti f)` instead of `f : order_dual ℕ ↪o α`. - The order of binders in the `hf` argument of `set.partially_well_ordered_on.image_of_monotone_on` was changed to match `monotone_on`. - `set.is_pwo.prod` now allows sets from different types. - `finset.is_wf_sup` and `finset.is_pwo_sup` are now `iff`s ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/data/fintype/basic.lean - theorem set.to_finset_mono + theorem set.to_finset_ssubset - theorem set.to_finset_strict_mono + theorem set.to_finset_subset Modified src/data/set/finite.lean + theorem set.finite.exists_lt_map_eq_of_forall_mem - theorem set.finite.exists_lt_map_eq_of_range_subset - theorem set.finite.to_finset_mono + theorem set.finite.to_finset_ssubset - theorem set.finite.to_finset_strict_mono + theorem set.finite.to_finset_subset Modified src/data/set/pointwise.lean + theorem finset.is_pwo_support_mul_antidiagonal + theorem finset.mem_mul_antidiagonal + theorem finset.mul_antidiagonal_min_mul_min + theorem finset.mul_antidiagonal_mono_left + theorem finset.mul_antidiagonal_mono_right + theorem finset.support_mul_antidiagonal_subset_mul + theorem finset.swap_mem_mul_antidiagonal + theorem set.is_pwo.mul + theorem set.is_wf.min_mul + theorem set.is_wf.mul + theorem set.mem_mul_antidiagonal + theorem set.mul_antidiagonal.eq_of_fst_eq_fst + theorem set.mul_antidiagonal.eq_of_fst_le_fst_of_snd_le_snd + theorem set.mul_antidiagonal.eq_of_snd_eq_snd + theorem set.mul_antidiagonal.finite_of_is_pwo + theorem set.mul_antidiagonal.finite_of_is_wf + theorem set.mul_antidiagonal.fst_eq_fst_iff_snd_eq_snd + def set.mul_antidiagonal + theorem set.mul_antidiagonal_mono_left + theorem set.mul_antidiagonal_mono_right + theorem set.swap_mem_mul_antidiagonal Modified src/group_theory/submonoid/pointwise.lean + theorem set.is_pwo.submonoid_closure Modified src/order/well_founded_set.lean - theorem finset.is_pwo + theorem finset.is_pwo_bUnion +/- theorem finset.is_pwo_sup - theorem finset.is_pwo_support_mul_antidiagonal - theorem finset.is_wf + theorem finset.is_wf_bUnion +/- theorem finset.is_wf_sup - theorem finset.mem_mul_antidiagonal - theorem finset.mul_antidiagonal_min_mul_min - theorem finset.mul_antidiagonal_mono_left - theorem finset.mul_antidiagonal_mono_right - theorem finset.partially_well_ordered_on + theorem finset.partially_well_ordered_on_bUnion + theorem finset.partially_well_ordered_on_sup - theorem finset.support_mul_antidiagonal_subset_mul - theorem finset.well_founded_on + theorem finset.well_founded_on_bUnion + theorem finset.well_founded_on_sup +/- theorem is_antichain.finite_of_partially_well_ordered_on +/- theorem is_antichain.partially_well_ordered_on_iff +/- theorem pi.is_pwo - theorem set.finite.is_pwo - theorem set.finite.partially_well_ordered_on - theorem set.fintype.is_pwo +/- theorem set.is_pwo.exists_monotone_subseq +/- theorem set.is_pwo.image_of_monotone + theorem set.is_pwo.image_of_monotone_on - theorem set.is_pwo.insert - theorem set.is_pwo.is_wf +/- theorem set.is_pwo.mono - theorem set.is_pwo.mul +/- theorem set.is_pwo.prod - theorem set.is_pwo.submonoid_closure - theorem set.is_pwo.union +/- def set.is_pwo +/- theorem set.is_pwo_empty + theorem set.is_pwo_insert + theorem set.is_pwo_of_finite +/- theorem set.is_pwo_singleton + theorem set.is_pwo_union + theorem set.is_wf.insert - theorem set.is_wf.is_pwo +/- theorem set.is_wf.le_min_iff +/- theorem set.is_wf.min_le - theorem set.is_wf.min_mul +/- theorem set.is_wf.mono - theorem set.is_wf.mul - theorem set.is_wf.union +/- theorem set.is_wf_iff_is_pwo +/- theorem set.is_wf_iff_no_descending_seq + theorem set.is_wf_insert + theorem set.is_wf_singleton + theorem set.is_wf_union - theorem set.mul_antidiagonal.eq_of_fst_eq_fst - theorem set.mul_antidiagonal.eq_of_fst_le_fst_of_snd_le_snd - theorem set.mul_antidiagonal.eq_of_snd_eq_snd - theorem set.mul_antidiagonal.finite_of_is_pwo - theorem set.mul_antidiagonal.finite_of_is_wf - theorem set.mul_antidiagonal.fst_eq_fst_iff_snd_eq_snd - theorem set.mul_antidiagonal.mem_mul_antidiagonal - def set.mul_antidiagonal +/- theorem set.partially_well_ordered_on.exists_monotone_subseq +/- theorem set.partially_well_ordered_on.iff_not_exists_is_min_bad_seq +/- theorem set.partially_well_ordered_on.image_of_monotone_on +/- theorem set.partially_well_ordered_on.mono + theorem set.partially_well_ordered_on.union +/- theorem set.partially_well_ordered_on.well_founded_on +/- def set.partially_well_ordered_on +/- theorem set.partially_well_ordered_on_empty +/- theorem set.partially_well_ordered_on_iff_exists_monotone_subseq +/- theorem set.partially_well_ordered_on_iff_finite_antichains + theorem set.partially_well_ordered_on_insert + theorem set.partially_well_ordered_on_singleton + theorem set.partially_well_ordered_on_union - theorem set.well_founded_on.induction + theorem set.well_founded_on.insert + theorem set.well_founded_on.subset + theorem set.well_founded_on.union +/- def set.well_founded_on +/- theorem set.well_founded_on_iff +/- theorem set.well_founded_on_iff_no_descending_seq + theorem set.well_founded_on_insert + theorem set.well_founded_on_singleton + theorem set.well_founded_on_union +/- theorem well_founded.is_wf Modified src/probability/cond_count.lean Modified src/ring_theory/hahn_series.lean +/- def hahn_series.to_power_series 2022-08-24 21:27:30 f1f166b feat(geometry/euclidean/oriented_angle): angles equal to 0 or π (#16229) Add lemmas about various conditions for oriented angles between two vectors to equal 0 or π. ESTIMATED CHANGES Modified src/geometry/euclidean/oriented_angle.lean + theorem orientation.oangle_eq_pi_iff_oangle_rev_eq_pi + theorem orientation.oangle_eq_pi_iff_same_ray_neg + theorem orientation.oangle_eq_zero_iff_oangle_rev_eq_zero + theorem orientation.oangle_eq_zero_iff_same_ray + theorem orientation.oangle_eq_zero_or_eq_pi_iff_not_linear_independent + theorem orientation.oangle_eq_zero_or_eq_pi_iff_right_eq_smul + theorem orientation.oangle_ne_zero_and_ne_pi_iff_linear_independent + theorem orthonormal.oangle_eq_pi_iff_oangle_rev_eq_pi + theorem orthonormal.oangle_eq_pi_iff_same_ray_neg + theorem orthonormal.oangle_eq_zero_iff_oangle_rev_eq_zero + theorem orthonormal.oangle_eq_zero_iff_same_ray + theorem orthonormal.oangle_eq_zero_or_eq_pi_iff_not_linear_independent + theorem orthonormal.oangle_eq_zero_or_eq_pi_iff_right_eq_smul + theorem orthonormal.oangle_ne_zero_and_ne_pi_iff_linear_independent 2022-08-24 21:27:29 a51c2fd feat(topology/separation): add `eq_on_closure₂` (#16206) Also use it to golf `submonoid.comm_monoid_topological_closure`. ESTIMATED CHANGES Modified src/topology/algebra/monoid.lean Modified src/topology/separation.lean + theorem eq_on_closure₂' + theorem eq_on_closure₂ 2022-08-24 21:27:28 6274086 refactor(algebra/order/{monoid_lemmas_zero_lt + ring} + crumbs) remove duplicate lemmas (#16189) This is one of the cleaning up stages of the `order` refactor. This PR removes some of the lemmas for ordered semirings that are now superfluous. To keep things simple, the new lemmas are in the `zero_lt` namespace and we export this namespace. Probably, this will not stay this way once the tide of unsuccessful builds washes away. The plan for this PR is to align names and order of explicit hypotheses in the `zero_lt` file with the lemmas in `ring`, in order to delete them. This will likely involve changing a few extra files, but I'm hoping to seriously contain the diff outside of these two files. I want to thank @negiizhao who has been a great help in taking over and pushing forward the refactor! ESTIMATED CHANGES Modified archive/imo/imo1972_q5.lean Modified src/algebra/order/monoid_lemmas_zero_lt.lean +/- theorem zero_lt.le_mul_of_one_le_left +/- theorem zero_lt.le_mul_of_one_le_right - theorem zero_lt.le_of_le_mul_of_le_one_left + theorem zero_lt.le_of_le_mul_of_le_one_of_nonneg_left - theorem zero_lt.le_of_mul_le_of_one_le_left + theorem zero_lt.le_of_mul_le_of_one_le_nonneg_right + theorem zero_lt.le_of_mul_le_of_one_le_of_nonneg_left - theorem zero_lt.le_of_mul_le_of_one_le_right +/- theorem zero_lt.lt_mul_of_one_lt_left +/- theorem zero_lt.lt_mul_of_one_lt_right + theorem zero_lt.mul_le_mul - theorem zero_lt.mul_le_mul_iff_left - theorem zero_lt.mul_le_mul_iff_right - theorem zero_lt.mul_le_mul_left' +/- theorem zero_lt.mul_le_mul_left + theorem zero_lt.mul_le_mul_left_of_le_of_pos - theorem zero_lt.mul_le_mul_of_le_of_le' + theorem zero_lt.mul_le_mul_of_nonneg_left + theorem zero_lt.mul_le_mul_of_nonneg_right - theorem zero_lt.mul_le_mul_right' +/- theorem zero_lt.mul_le_mul_right + theorem zero_lt.mul_le_mul_right_of_le_of_pos - theorem zero_lt.mul_le_of_le_of_le_one' +/- theorem zero_lt.mul_le_of_le_one_left +/- theorem zero_lt.mul_le_of_le_one_right - theorem zero_lt.mul_left_cancel_iff + theorem zero_lt.mul_left_cancel_iff_of_pos - theorem zero_lt.mul_lt_mul_iff_left - theorem zero_lt.mul_lt_mul_iff_right + theorem zero_lt.mul_lt_mul_left' +/- theorem zero_lt.mul_lt_mul_left + theorem zero_lt.mul_lt_mul_right' +/- theorem zero_lt.mul_lt_mul_right +/- theorem zero_lt.mul_lt_of_lt_one_left +/- theorem zero_lt.mul_lt_of_lt_one_right + theorem zero_lt.mul_nonneg_le_one_le - theorem zero_lt.mul_right_cancel_iff + theorem zero_lt.mul_right_cancel_iff_of_pos + theorem zero_lt.zero_lt_mul_left + theorem zero_lt.zero_lt_mul_right Modified src/algebra/order/ring.lean - theorem le_mul_iff_one_le_left - theorem le_mul_iff_one_le_right - theorem le_mul_of_one_le_left - theorem le_mul_of_one_le_right - theorem lt_mul_iff_one_lt_left - theorem lt_mul_iff_one_lt_right - theorem lt_mul_left - theorem lt_mul_of_one_lt_left - theorem lt_mul_of_one_lt_right - theorem lt_mul_right - theorem lt_of_mul_lt_mul_left - theorem lt_of_mul_lt_mul_right +/- theorem lt_two_mul_self - theorem mul_le_iff_le_one_left - theorem mul_le_iff_le_one_right - theorem mul_le_mul - theorem mul_le_mul_left - theorem mul_le_mul_of_nonneg_left - theorem mul_le_mul_of_nonneg_right - theorem mul_le_mul_right - theorem mul_le_of_le_one_left - theorem mul_le_of_le_one_right - theorem mul_lt_iff_lt_one_left - theorem mul_lt_iff_lt_one_right - theorem mul_lt_mul_left - theorem mul_lt_mul_right - theorem mul_lt_of_lt_one_left - theorem mul_lt_of_lt_one_right - theorem mul_neg_of_neg_of_pos - theorem mul_neg_of_pos_of_neg - theorem mul_nonneg - theorem mul_nonneg_le_one_le - theorem mul_nonpos_of_nonneg_of_nonpos - theorem mul_nonpos_of_nonpos_of_nonneg - theorem mul_pos - theorem neg_iff_neg_of_mul_pos - theorem neg_of_mul_pos_left - theorem neg_of_mul_pos_right - theorem pos_and_pos_or_neg_and_neg_of_mul_pos - theorem pos_iff_pos_of_mul_pos - theorem pos_of_mul_pos_left - theorem pos_of_mul_pos_right - theorem zero_lt_mul_left - theorem zero_lt_mul_right Modified src/analysis/specific_limits/floor_pow.lean Modified src/data/nat/basic.lean Modified src/data/real/nnreal.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/number_theory/liouville/liouville_constant.lean 2022-08-24 21:27:27 093c503 feat(category_theory/strong_epi): various results about strong_epi (#16182) In order to prepare for the proof of the existence of strong epi mono factorisations in `simplex_category` (which shall be used for the Dold-Kan correspondence), various results are obtained, mostly about strong epimorphisms (and strong monomorphisms). If two arrows are isomorphic, then one is a strong epi iff the other is. An equivalence of categories preserves and reflects strong epimorphisms. ESTIMATED CHANGES Modified src/category_theory/arrow.lean + theorem category_theory.arrow.hom.congr_left + theorem category_theory.arrow.hom.congr_right + def category_theory.arrow.iso_of_nat_iso + theorem category_theory.arrow.iso_w' + theorem category_theory.arrow.iso_w Modified src/category_theory/concrete_category/basic.lean + theorem category_theory.concrete_category.bijective_of_is_iso Modified src/category_theory/functor/epi_mono.lean + theorem category_theory.adjunction.strong_epi_map_of_strong_epi + theorem category_theory.functor.is_split_epi_iff + theorem category_theory.functor.is_split_mono_iff + theorem category_theory.functor.strong_epi_map_iff_strong_epi_of_is_equivalence Modified src/category_theory/lifting_properties/basic.lean + theorem category_theory.has_lifting_property.iff_of_arrow_iso_left + theorem category_theory.has_lifting_property.iff_of_arrow_iso_right + theorem category_theory.has_lifting_property.of_arrow_iso_left + theorem category_theory.has_lifting_property.of_arrow_iso_right Modified src/category_theory/limits/shapes/strong_epi.lean + theorem category_theory.strong_epi.iff_of_arrow_iso + theorem category_theory.strong_epi.of_arrow_iso + theorem category_theory.strong_mono.iff_of_arrow_iso + theorem category_theory.strong_mono.of_arrow_iso 2022-08-24 18:34:16 f5afe20 split(analysis/normed/group/seminorm): Split off `analysis.seminorm` (#16152) Move `group_seminorm` and `add_group_seminorm` to a new file `analysis.normed.group.seminorm`. Move `norm_add_group_seminorm` to `analysis.normed.group.basic`. Remove the `nonneg` field from `add_group_seminorm` and `group_seminorm` because it is redundant. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem coe_norm_add_group_seminorm + def norm_add_group_seminorm Added src/analysis/normed/group/seminorm.lean + theorem add_group_seminorm.coe_smul + theorem add_group_seminorm.smul_apply + theorem add_group_seminorm.smul_sup + structure add_group_seminorm + theorem group_seminorm.add_apply + theorem group_seminorm.add_comp + theorem group_seminorm.coe_add + theorem group_seminorm.coe_comp + theorem group_seminorm.coe_le_coe + theorem group_seminorm.coe_lt_coe + theorem group_seminorm.coe_smul + theorem group_seminorm.coe_sup + theorem group_seminorm.coe_zero + def group_seminorm.comp + theorem group_seminorm.comp_apply + theorem group_seminorm.comp_assoc + theorem group_seminorm.comp_id + theorem group_seminorm.comp_mono + theorem group_seminorm.comp_mul_le + theorem group_seminorm.comp_zero + theorem group_seminorm.div_rev + theorem group_seminorm.ext + theorem group_seminorm.inf_apply + theorem group_seminorm.le_def + theorem group_seminorm.le_insert' + theorem group_seminorm.le_insert + theorem group_seminorm.lt_def + theorem group_seminorm.smul_apply + theorem group_seminorm.smul_sup + theorem group_seminorm.sup_apply + theorem group_seminorm.zero_apply + theorem group_seminorm.zero_comp + structure group_seminorm Modified src/analysis/seminorm.lean - theorem add_group_seminorm.coe_smul - theorem add_group_seminorm.smul_apply - theorem add_group_seminorm.smul_sup - structure add_group_seminorm - theorem coe_norm_add_group_seminorm - theorem group_seminorm.add_apply - theorem group_seminorm.add_comp - theorem group_seminorm.coe_add - theorem group_seminorm.coe_comp - theorem group_seminorm.coe_le_coe - theorem group_seminorm.coe_lt_coe - theorem group_seminorm.coe_smul - theorem group_seminorm.coe_sup - theorem group_seminorm.coe_zero - def group_seminorm.comp - theorem group_seminorm.comp_apply - theorem group_seminorm.comp_assoc - theorem group_seminorm.comp_id - theorem group_seminorm.comp_mono - theorem group_seminorm.comp_mul_le - theorem group_seminorm.comp_zero - theorem group_seminorm.div_rev - theorem group_seminorm.ext - theorem group_seminorm.inf_apply - theorem group_seminorm.le_def - theorem group_seminorm.le_insert' - theorem group_seminorm.le_insert - theorem group_seminorm.lt_def - theorem group_seminorm.smul_apply - theorem group_seminorm.smul_sup - theorem group_seminorm.sup_apply - theorem group_seminorm.zero_apply - theorem group_seminorm.zero_comp - structure group_seminorm - def norm_add_group_seminorm 2022-08-24 18:34:15 81afa2c feat(data/polynomial/module): Some api for `polynomial_module`. (#16126) ESTIMATED CHANGES Modified src/data/polynomial/module.lean + def polynomial_module.comp + theorem polynomial_module.comp_eval + theorem polynomial_module.comp_single + theorem polynomial_module.comp_smul + def polynomial_module.eval + theorem polynomial_module.eval_map' + theorem polynomial_module.eval_map + theorem polynomial_module.eval_single + theorem polynomial_module.eval_smul + def polynomial_module.map + theorem polynomial_module.map_single + theorem polynomial_module.map_smul 2022-08-24 18:34:13 fc5b2d2 feat(algebraic_topology/dold_kan): the normalized Moore complex is a direct factor of the alternating face map complex (#16071) In this PR, we show that when the category `A` is abelian, there is an isomorphism `N₁_iso_to_karoubi_normalized A` between the functor `N₁ : simplicial_object A ⥤ karoubi (chain_complex A ℕ)` defined in `functor_n.lean` and the composition of `normalized_Moore_complex A` with the inclusion `chain_complex A ℕ ⥤ karoubi (chain_complex A ℕ)`. (In particular, the normalized Moore complex is a direct factor of the alternating face map complex.) ESTIMATED CHANGES Modified src/algebraic_topology/Moore_complex.lean + theorem algebraic_topology.normalized_Moore_complex_obj_d Added src/algebraic_topology/dold_kan/normalized.lean + def algebraic_topology.dold_kan.N₁_iso_normalized_Moore_complex_comp_to_karoubi + theorem algebraic_topology.dold_kan.P_infty_comp_P_infty_to_normalized_Moore_complex + def algebraic_topology.dold_kan.P_infty_to_normalized_Moore_complex + theorem algebraic_topology.dold_kan.P_infty_to_normalized_Moore_complex_comp_inclusion_of_Moore_complex_map + theorem algebraic_topology.dold_kan.P_infty_to_normalized_Moore_complex_naturality + theorem algebraic_topology.dold_kan.factors_normalized_Moore_complex_P_infty + theorem algebraic_topology.dold_kan.higher_faces_vanish.inclusion_of_Moore_complex_map + theorem algebraic_topology.dold_kan.inclusion_of_Moore_complex_map_comp_P_infty + def algebraic_topology.dold_kan.split_mono_inclusion_of_Moore_complex_map Modified src/algebraic_topology/dold_kan/p_infty.lean + theorem algebraic_topology.dold_kan.P_infty_f_0 2022-08-24 18:34:12 0be7214 feat(category_theory/currying): bifunctor version of whiskering_right (#15504) This cannot go in `category_theory/whiskering` because this file is imported indirectly by `category_theory/functor/currying`. Hopefully it is ok to put it in `category_theory/functor/currying`. - [x] depends on: #15445 ESTIMATED CHANGES Modified src/category_theory/functor/currying.lean + def category_theory.whiskering_right₂ 2022-08-24 18:34:11 96ed422 feat(order/heyting_algebra): Heyting algebras (#15305) Define (generalized) Heyting, co-Heyting and bi-Heyting algebras. No lemma has been renamed, even though this might look like so from the diff. `himp` is now a field of `boolean_algebra`, with default value `λ x y, y ⊔ xᶜ`. ## Duplicated lemmas Those lemmas have been duplicated because they are true for Heyting algebras but are also used to prove that Boolean algebras are Heyting algebras: * `sdiff_le'` * `inf_compl_eq_bot'` ## Changes to argument implicitness * `sdiff_inf_self_left` * `sdiff_inf_self_right` ESTIMATED CHANGES Modified src/analysis/box_integral/partition/filter.lean Modified src/combinatorics/set_family/kleitman.lean Modified src/data/finset/basic.lean +/- theorem finset.sdiff_inter_self_left +/- theorem finset.sdiff_inter_self_right Modified src/data/set/basic.lean +/- theorem set.diff_self_inter Modified src/data/set/function.lean Modified src/measure_theory/measure/ae_disjoint.lean +/- theorem measure_theory.ae_disjoint_compl_left +/- theorem measure_theory.ae_disjoint_compl_right Modified src/order/boolean_algebra.lean - theorem bot_sdiff - theorem compl_bot - theorem compl_inf_eq_bot - theorem compl_le_compl - theorem compl_sup - theorem compl_top - theorem disjoint.disjoint_sdiff_left - theorem disjoint.disjoint_sdiff_right - theorem disjoint_compl_left - theorem disjoint_compl_right + theorem himp_eq + theorem hnot_eq_compl + theorem inf_compl_eq_bot' - theorem inf_compl_eq_bot +/- theorem inf_sdiff_right +/- theorem is_compl_compl - theorem le_compl_iff_disjoint_left - theorem le_compl_iff_disjoint_right - theorem le_sdiff_sup - theorem le_sup_sdiff - theorem of_dual_compl - theorem punit.bot_eq - theorem punit.compl_eq - theorem punit.inf_eq - theorem punit.sdiff_eq - theorem punit.sup_eq - theorem punit.top_eq - theorem sdiff_bot +/- theorem sdiff_compl - theorem sdiff_eq_bot_iff - theorem sdiff_inf - theorem sdiff_inf_self_left - theorem sdiff_inf_self_right + theorem sdiff_le' - theorem sdiff_le - theorem sdiff_le_comm - theorem sdiff_le_iff - theorem sdiff_le_sdiff - theorem sdiff_le_sdiff_left - theorem sdiff_le_sdiff_right - theorem sdiff_self - theorem sdiff_top +/- theorem sup_sdiff_left +/- theorem sup_sdiff_right - theorem to_dual_compl +/- theorem top_sdiff Added src/order/heyting/basic.lean + theorem bot_himp + theorem bot_sdiff + theorem codisjoint_hnot_hnot_left_iff + theorem codisjoint_hnot_hnot_right_iff + theorem codisjoint_hnot_left + theorem codisjoint_hnot_right + def coheyting_algebra.of_hnot + def coheyting_algebra.of_sdiff + theorem compl_anti + theorem compl_bot + theorem compl_compl_compl + theorem compl_compl_himp_distrib + theorem compl_compl_inf_distrib + theorem compl_iff_not + theorem compl_inf_eq_bot + theorem compl_inf_self + theorem compl_le_compl + theorem compl_le_himp + theorem compl_le_hnot + theorem compl_sup + theorem compl_sup_compl_le + theorem compl_sup_distrib + theorem compl_sup_le_himp + theorem compl_top + theorem disjoint.disjoint_sdiff_left + theorem disjoint.disjoint_sdiff_right + theorem disjoint_compl_compl_left_iff + theorem disjoint_compl_compl_right_iff + theorem disjoint_compl_left + theorem disjoint_compl_right + theorem fst_compl + theorem fst_himp + theorem fst_hnot + theorem fst_sdiff + def heyting_algebra.of_compl + def heyting_algebra.of_himp + theorem himp_bot + theorem himp_compl + theorem himp_compl_comm + theorem himp_eq_top_iff + theorem himp_himp + theorem himp_iff_imp + theorem himp_inf_distrib + theorem himp_inf_le + theorem himp_inf_self + theorem himp_le_himp + theorem himp_le_himp_himp + theorem himp_le_himp_left + theorem himp_le_himp_right + theorem himp_left_comm + theorem himp_self + theorem himp_top + theorem hnot_anti + theorem hnot_bot + theorem hnot_hnot_hnot + theorem hnot_hnot_le + theorem hnot_hnot_sdiff_distrib + theorem hnot_hnot_sup_distrib + theorem hnot_inf_distrib + theorem hnot_le_comm + theorem hnot_le_hnot + theorem hnot_le_iff_codisjoint_left + theorem hnot_le_iff_codisjoint_right + theorem hnot_sdiff + theorem hnot_sdiff_comm + theorem hnot_sup_self + theorem hnot_top + theorem inf_compl_eq_bot + theorem inf_compl_self + theorem inf_himp + theorem inf_himp_le + theorem le_compl_comm + theorem le_compl_compl + theorem le_compl_iff_disjoint_left + theorem le_compl_iff_disjoint_right + theorem le_himp + theorem le_himp_comm + theorem le_himp_iff + theorem le_himp_iff_left + theorem le_hnot_inf_hnot + theorem le_sdiff_sup + theorem le_sup_sdiff + def linear_order.to_biheyting_algebra + theorem of_dual_compl + theorem of_dual_himp + theorem of_dual_hnot + theorem pi.himp_apply + theorem pi.himp_def + theorem pi.hnot_apply + theorem pi.hnot_def + theorem punit.bot_eq + theorem punit.compl_eq + theorem punit.himp_eq + theorem punit.hnot_eq + theorem punit.inf_eq + theorem punit.sdiff_eq + theorem punit.sup_eq + theorem punit.top_eq + theorem sdiff_bot + theorem sdiff_eq_bot_iff + theorem sdiff_inf + theorem sdiff_inf_distrib + theorem sdiff_inf_self_left + theorem sdiff_inf_self_right + theorem sdiff_le + theorem sdiff_le_comm + theorem sdiff_le_hnot + theorem sdiff_le_iff + theorem sdiff_le_iff_left + theorem sdiff_le_inf_hnot + theorem sdiff_le_sdiff + theorem sdiff_le_sdiff_left + theorem sdiff_le_sdiff_right + theorem sdiff_right_comm + theorem sdiff_sdiff + theorem sdiff_sdiff_le_sdiff + theorem sdiff_self + theorem sdiff_sup_self + theorem sdiff_top + theorem snd_compl + theorem snd_himp + theorem snd_hnot + theorem snd_sdiff + theorem sup_compl_le_himp + theorem sup_himp_distrib + theorem sup_himp_self_left + theorem sup_himp_self_right + theorem sup_hnot_self + theorem sup_sdiff_distrib + theorem sup_sdiff_self + theorem to_dual_compl + theorem to_dual_hnot + theorem to_dual_sdiff + theorem top_himp + theorem top_sdiff' 2022-08-24 18:34:10 4e64a3f feat(algebra/category): forgetful functors from modules/abelian groups preserve epis/monos (#15108) The corresponding `reflects` statements already follow from faithfulness. ESTIMATED CHANGES Modified src/algebra/category/Group/epi_mono.lean Modified src/algebra/category/Module/epi_mono.lean Modified src/category_theory/concrete_category/basic.lean + def category_theory.has_forget_to_Type Modified src/category_theory/functor/epi_mono.lean + theorem category_theory.functor.preserves_epimorphisms_of_preserves_of_reflects + theorem category_theory.functor.preserves_monomorphisms_of_preserves_of_reflects + theorem category_theory.functor.reflects_epimorphisms_of_preserves_of_reflects + theorem category_theory.functor.reflects_monomorphisms_of_preserves_of_reflects 2022-08-24 15:46:19 40427f7 feat(analysis/special_functions/trigonometric/angle): continuity and signs (#16204) Add the lemmas that `real.angle.sign` is continuous away from 0 and π, and thus that any function to angles that is continuous on a connected set and does not take the value 0 or π on that set produces angles with constant sign on that set (this is a general principle for use in proving results about when two oriented angles in a geometrical configuration must have the same sign). ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem continuous_on.angle_sign_comp + theorem real.angle.continuous_at_sign + theorem real.angle.sign_eq_of_continuous_on 2022-08-24 15:46:18 730cde3 feat(algebra/order/monoid): a canonically ordered add monoid has `0 ≤ 1` (#16199) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean 2022-08-24 12:36:14 63f2525 chore(data/finset/pi_induction): fix lint (#16224) ESTIMATED CHANGES Modified src/data/finset/pi_induction.lean 2022-08-24 12:36:12 3339976 refactor(topology/constructions): rename `continuous_subtype_mk` (#16223) * rename `continuous_subtype_mk` to `continuous.subtype_mk` to allow dot notation; * add `continuous.subtype_map`. ESTIMATED CHANGES Modified src/algebraic_topology/topological_simplex.lean Modified src/analysis/convex/contractible.lean Modified src/analysis/normed/field/unit_ball.lean Modified src/analysis/normed/group/ball_sphere.lean Modified src/analysis/normed/group/basic.lean +/- theorem continuous_norm Modified src/analysis/normed_space/ball_action.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/log/basic.lean Modified src/dynamics/flow.lean Modified src/geometry/manifold/instances/real.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/order/proj_Icc.lean Modified src/topology/algebra/semigroup.lean Modified src/topology/bases.lean Modified src/topology/category/CompHaus/default.lean Modified src/topology/constructions.lean + theorem continuous.subtype_map + theorem continuous.subtype_mk - theorem continuous_subtype_mk Modified src/topology/continuous_function/bounded.lean Modified src/topology/homeomorph.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/ereal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/pi_nat.lean Modified src/topology/tietze_extension.lean Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous.subtype_mk - theorem uniform_continuous_subtype_mk Modified src/topology/uniform_space/equiv.lean 2022-08-24 12:36:10 839b92f feat(data/nat/enat): new file (#16217) Define `enat := with_top nat`, use notation. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/analysis/calculus/affine_map.lean +/- theorem continuous_affine_map.cont_diff Modified src/analysis/calculus/cont_diff.lean +/- theorem cont_diff.continuous_iterated_fderiv +/- theorem cont_diff.differentiable_iterated_fderiv +/- def cont_diff_at +/- theorem cont_diff_clm_apply +/- theorem cont_diff_on_clm_apply +/- def cont_diff_within_at +/- structure has_ftaylor_series_up_to +/- structure has_ftaylor_series_up_to_on Modified src/analysis/calculus/fderiv_analytic.lean +/- theorem analytic_on.cont_diff_on Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/iterated_deriv.lean +/- theorem cont_diff.continuous_iterated_deriv +/- theorem cont_diff.differentiable_iterated_deriv +/- theorem cont_diff_iff_iterated_deriv +/- theorem cont_diff_of_differentiable_iterated_deriv +/- theorem cont_diff_on.continuous_on_iterated_deriv_within +/- theorem cont_diff_on.differentiable_on_iterated_deriv_within +/- theorem cont_diff_on_iff_continuous_on_differentiable_on_deriv +/- theorem cont_diff_on_of_continuous_on_differentiable_on_deriv +/- theorem cont_diff_on_of_differentiable_on_deriv Modified src/analysis/calculus/specific_functions.lean +/- theorem cont_diff_bump_of_inner.cont_diff_normed Modified src/analysis/complex/real_deriv.lean +/- theorem cont_diff.real_of_complex +/- theorem cont_diff_at.real_of_complex Modified src/analysis/convolution.lean Modified src/analysis/inner_product_space/calculus.lean +/- theorem cont_diff_at_euclidean +/- theorem cont_diff_euclidean +/- theorem cont_diff_on_euclidean +/- theorem cont_diff_within_at_euclidean Modified src/analysis/inner_product_space/euclidean_dist.lean Modified src/analysis/special_functions/arsinh.lean +/- theorem real.cont_diff_arsinh Modified src/analysis/special_functions/complex/log_deriv.lean +/- theorem complex.cont_diff_at_log Modified src/analysis/special_functions/log/deriv.lean +/- theorem real.cont_diff_at_log +/- theorem real.cont_diff_on_log Modified src/analysis/special_functions/pow_deriv.lean +/- theorem real.cont_diff_at_rpow_const_of_ne +/- theorem real.cont_diff_at_rpow_of_ne Modified src/analysis/special_functions/sqrt.lean +/- theorem real.cont_diff_at_sqrt Modified src/analysis/special_functions/trigonometric/arctan_deriv.lean +/- theorem real.cont_diff_arctan Modified src/analysis/special_functions/trigonometric/complex_deriv.lean +/- theorem complex.cont_diff_at_tan Modified src/analysis/special_functions/trigonometric/inverse_deriv.lean +/- theorem real.cont_diff_at_arccos +/- theorem real.cont_diff_at_arccos_iff +/- theorem real.cont_diff_at_arcsin +/- theorem real.cont_diff_at_arcsin_iff +/- theorem real.cont_diff_on_arccos +/- theorem real.cont_diff_on_arcsin Modified src/data/nat/cast.lean - theorem with_top.add_one_le_of_lt - theorem with_top.nat_induction - theorem with_top.one_le_iff_pos Added src/data/nat/enat.lean + theorem enat.add_one_le_iff + theorem enat.add_one_le_of_lt + theorem enat.coe_add + theorem enat.coe_mul + theorem enat.coe_one + theorem enat.coe_sub + theorem enat.coe_zero + theorem enat.le_of_lt_add_one + theorem enat.nat_induction + theorem enat.one_le_iff_ne_zero + theorem enat.one_le_iff_pos + theorem enat.succ_def + def enat.to_nat + def enat Modified src/data/nat/part_enat.lean +/- def part_enat.to_with_top +/- theorem part_enat.with_top_equiv_symm_le +/- theorem part_enat.with_top_equiv_symm_lt Modified src/data/polynomial/degree/trailing_degree.lean +/- theorem polynomial.coeff_eq_zero_of_trailing_degree_lt +/- theorem polynomial.le_trailing_degree_C +/- theorem polynomial.le_trailing_degree_X +/- theorem polynomial.ne_zero_of_trailing_degree_lt +/- def polynomial.trailing_degree +/- theorem polynomial.trailing_degree_C +/- theorem polynomial.trailing_degree_one +/- theorem polynomial.trailing_degree_one_le Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/cont_mdiff.lean +/- theorem cont_diff_within_at_local_invariant_prop +/- def cont_diff_within_at_prop +/- theorem cont_diff_within_at_prop_mono +/- def cont_mdiff +/- def cont_mdiff_at +/- theorem cont_mdiff_at_iff +/- def cont_mdiff_on +/- def cont_mdiff_within_at Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/probability/hitting_time.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/unique_factorization_domain.lean 2022-08-24 12:36:08 474f96a feat(geometry/euclidean/oriented_angle): more on relation to unoriented angles (#16215) Add more lemmas about the relation of oriented and unoriented angles; in particular, some involving `real.angle.to_real` and `real.angle.sign`. ESTIMATED CHANGES Modified src/geometry/euclidean/oriented_angle.lean + theorem orientation.angle_eq_abs_oangle_to_real + theorem orientation.eq_zero_or_angle_eq_zero_or_pi_of_sign_oangle_eq_zero + theorem orientation.oangle_eq_iff_angle_eq_of_sign_eq + theorem orientation.oangle_eq_of_angle_eq_of_sign_eq + theorem orientation.oangle_eq_pi_iff_angle_eq_pi + theorem orientation.oangle_eq_zero_iff_angle_eq_zero + theorem orthonormal.angle_eq_abs_oangle_to_real + theorem orthonormal.eq_zero_or_angle_eq_zero_or_pi_of_sign_oangle_eq_zero + theorem orthonormal.oangle_eq_iff_angle_eq_of_sign_eq + theorem orthonormal.oangle_eq_of_angle_eq_of_sign_eq + theorem orthonormal.oangle_eq_pi_iff_angle_eq_pi + theorem orthonormal.oangle_eq_zero_iff_angle_eq_zero 2022-08-24 12:36:07 9b75911 feat(algebra/order): lemmas about `cmp` and arithmetic operations (#16207) ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem cmp_div_one' Modified src/algebra/order/monoid_lemmas.lean + theorem cmp_mul_left' + theorem cmp_mul_right' Modified src/algebra/order/ring.lean + theorem cmp_mul_neg_left + theorem cmp_mul_neg_right + theorem cmp_mul_pos_left + theorem cmp_mul_pos_right 2022-08-24 09:35:21 7362d50 feat(topology/sheaves/sheaf_condition/opens_le_cover): generalize universe (#16214) + Generalize universe levels in the sheaf condition `opens_le_cover` on topological spaces and its equivalence with the sheaf condition on sites, allowing three different universe parameters as in `Top.{w}`, `C : Type u` and `category.{v} C`. To be used in #15934. + Generalize universes for the sheaf condition `pairwise_intersection` on topological spaces. This sheaf condition also doesn't require any assumption on the category `C`, and its equivalence with `opens_le_cover` could also have universe levels at maximal generality; however, the proof `is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections` breaks due to the `small_category` restriction on [category_theory.functor.initial.is_limit_whisker_equiv](https://leanprover-community.github.io/mathlib_docs/category_theory/limits/final.html#category_theory.functor.initial.is_limit_whisker_equiv), which will take more work to fix, so we do not generalize the equivalence at this time. + Generalize universes for `Top.presheaf.pushforward`; pullback is not generalized because it would need `has_colimits_of_size`. `Top.sheaf.pushforward` is not yet generalized. + Fixate the universe level of [Top.presheaf](https://leanprover-community.github.io/mathlib_docs/topology/sheaves/presheaf.html#Top.presheaf) to be the same as [Top.sheaf](https://leanprover-community.github.io/mathlib_docs/topology/sheaves/sheaf.html#Top.sheaf). ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean +/- theorem algebraic_geometry.LocallyRingedSpace.comp_val_c Modified src/topology/sheaves/presheaf.lean +/- theorem Top.presheaf.id_pushforward +/- def Top.presheaf.pushforward +/- theorem Top.presheaf.pushforward_map_app' +/- def Top.presheaf Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean +/- theorem Top.presheaf.is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections +/- def Top.presheaf.sheaf_condition.opens_le_cover Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2022-08-24 09:35:19 912a310 refactor(category_theory/morphism_property): stable_under_base_change (#16196) This PR redefines `morphism_property.stable_under_base_change P`. This condition now states that for all pullback squares (`is_pullback`), the left map satisfies the property if the right map does. Then, it is automatic that the property `P` respects isos. A constructor is provided to take as an input the assumption that `P` respects isos and the previous condition that if a map `g` satisfies `P`, then `pullback.fst : pullback f g → _` satisfies it `P`. ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/basic.lean Modified src/category_theory/limits/shapes/comm_sq.lean + theorem category_theory.is_pullback.of_horiz_is_iso + theorem category_theory.is_pullback.of_vert_is_iso Modified src/category_theory/morphism_property.lean + theorem category_theory.morphism_property.respects_iso.of_respects_arrow_iso +/- theorem category_theory.morphism_property.stable_under_base_change.fst + theorem category_theory.morphism_property.stable_under_base_change.mk + theorem category_theory.morphism_property.stable_under_base_change.respects_iso +/- theorem category_theory.morphism_property.stable_under_base_change.snd +/- def category_theory.morphism_property.stable_under_base_change 2022-08-24 09:35:18 53b7957 feat(analysis/normed_space/basic): if `E` is a `normed_space` over `ℚ` then `ℤ ∙ e` is discrete for any `e` in `E` (#16135) ESTIMATED CHANGES Modified src/algebra/module/basic.lean Modified src/analysis/normed_space/basic.lean + theorem norm_zsmul Modified src/group_theory/subgroup/basic.lean + theorem subgroup.zpowers_one_eq_bot 2022-08-24 09:35:16 214f197 refactor(field_theory/*): Move and golf `alg_hom.fintype` (#16114) This PR moves `alg_hom.fintype` to `minpoly.lean` so that it can be used later (e.g., in `normal.lean`). ESTIMATED CHANGES Modified src/field_theory/fixed.lean - theorem aux_inj_roots_of_min_poly Modified src/field_theory/minpoly.lean + theorem minpoly.aux_inj_roots_of_min_poly 2022-08-24 09:35:15 7f06271 feat(algebraic_geometry/limits): Empty scheme is initial. (#16086) ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean - def algebraic_geometry.Scheme.empty + def algebraic_geometry.Scheme.{u} Added src/algebraic_geometry/limits.lean + theorem algebraic_geometry.Scheme.empty_ext + def algebraic_geometry.Scheme.empty_to + theorem algebraic_geometry.Scheme.eq_empty_to + def algebraic_geometry.Spec_Z_is_terminal + def algebraic_geometry.Spec_punit_is_initial + theorem algebraic_geometry.bot_is_affine_open + def algebraic_geometry.empty_is_initial + theorem algebraic_geometry.empty_is_initial_to + def algebraic_geometry.is_initial_of_is_empty Modified src/algebraic_geometry/open_immersion.lean + theorem algebraic_geometry.is_iso_iff_is_open_immersion + theorem algebraic_geometry.is_iso_iff_stalk_iso + theorem algebraic_geometry.is_open_immersion.iff_stalk_iso + theorem algebraic_geometry.is_open_immersion.of_stalk_iso + theorem algebraic_geometry.is_open_immersion.to_iso Modified src/category_theory/sites/sheaf.lean + theorem category_theory.presheaf.is_sheaf_of_is_terminal 2022-08-24 09:35:14 fa0bbc7 feat(algebra/order/floor): `floor`/`ceil` are preserved under order ring homs (#16025) `⌊f a⌋ = ⌊a⌋`, `⌈f a⌉ = ⌈a⌉` and similar for `f` a strictly monotone ring homomorphism. ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem int.ceil_congr + theorem int.floor_congr + theorem int.map_ceil + theorem int.map_floor + theorem int.map_fract + theorem int.map_round + theorem nat.ceil_congr + theorem nat.floor_congr + theorem nat.map_ceil + theorem nat.map_floor Modified src/algebra/order/hom/monoid.lean + theorem map_nonneg + theorem map_nonpos 2022-08-24 09:35:13 a9402e0 refactor(algebraic_geometry/*): Make `LocallyRingedSpace.hom` a custom structure. (#15973) We also define `algebraic_geometry.Scheme.hom` as an type alias for morphisms between schemes to enable dot notation. ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/algebraic_geometry/Scheme.lean + def algebraic_geometry.Scheme.hom - theorem algebraic_geometry.Scheme.id_coe_base +/- theorem algebraic_geometry.Scheme.id_val_base - theorem algebraic_geometry.Scheme.preimage_basic_open' Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/gluing.lean Modified src/algebraic_geometry/locally_ringed_space.lean + structure algebraic_geometry.LocallyRingedSpace.hom - def algebraic_geometry.LocallyRingedSpace.hom - theorem algebraic_geometry.LocallyRingedSpace.hom_ext Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/algebraic_geometry/morphisms/basic.lean Modified src/algebraic_geometry/morphisms/ring_hom_properties.lean Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.hom.opens_functor + def algebraic_geometry.Scheme.hom.opens_range + theorem algebraic_geometry.Scheme.image_basic_open - theorem algebraic_geometry.is_open_immersion.image_basic_open - def algebraic_geometry.is_open_immersion.opens_range 2022-08-24 09:35:12 94f13c6 feat(ring_theory/localization/away): finitely presented as R[X]/(rX-1) (#12455) + Show `localization.away r` is isomorphic to `R[X]/(rX-1)` (implemented as `adjoin_root (C r * X - 1)`) as `R`-algebras: `localization.away_equiv_adjoin`. Lemmas introduced for this purpose are: `alg_hom_ext`, `root_is_inv` and `alg_hom_subsingleton` under namespace `adjoin_root`, `ideal.quotient.alg_hom_ext`, `is_localization.away.mul_inv_self`, and `is_localization.alg_hom_subsingleton` (which says any two R-alg_hom from from a localization of R to another R-algebra are equal). + Deduce that the R-algebra S is finitely presented if S is a localization of R away from some `r : R`: `is_localization.away.finite_presentation`. Lemmas introduced for this purpose are `algebra.finite_presentation.polynomial` and `adjoin_root.finite_presentation`, and the `finite_type` versions are also added. + Golf `algebra.finite_finite_type/presentation.mv_polynomial` and fix typo in `mem_adjoint_support`. ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.alg_hom_ext + theorem adjoin_root.alg_hom_subsingleton + theorem adjoin_root.finite_presentation + theorem adjoin_root.finite_type + theorem adjoin_root.root_is_inv Modified src/ring_theory/finiteness.lean + theorem algebra.finite_presentation.polynomial + theorem monoid_algebra.mem_adjoin_support - theorem monoid_algebra.mem_adjoint_support Modified src/ring_theory/ideal/operations.lean + theorem ideal.quotient.alg_hom_ext Modified src/ring_theory/localization/away.lean + theorem is_localization.adjoin_inv + theorem is_localization.away.finite_presentation + theorem is_localization.away.mul_inv_self Modified src/ring_theory/localization/basic.lean + theorem is_localization.alg_hom_subsingleton 2022-08-24 07:00:05 44de64f chore(algebra/order/with_zero): Move unrelated lemmas (#15676) Move a bunch of lemmas that were not about `whatever_with_zero` from `algebra.order.with_zero` to `algebra.group_power.order`. Delete `nat.le_zero_iff` in favor of `le_zero_iff`. ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo2013_q5.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/group_power/order.lean + theorem left.one_le_pow_of_le + theorem left.pow_le_one_of_le + theorem left.pow_lt_one_iff + theorem left.pow_lt_one_of_lt + theorem monoid_hom.map_neg + theorem monoid_hom.map_neg_one + theorem monoid_hom.map_sub_swap +/- theorem pow_le_pow_of_le_left' + theorem pow_lt_pow_succ + theorem pow_lt_pow₀ + theorem pow_pos_iff + theorem right.one_le_pow_of_le + theorem right.pow_le_one_of_le + theorem right.pow_lt_one_iff + theorem right.pow_lt_one_of_lt Modified src/algebra/lie/solvable.lean Modified src/algebra/order/with_zero.lean - theorem left.one_le_pow_of_le - theorem left.pow_lt_one_iff - theorem left.pow_lt_one_of_lt - theorem monoid_hom.map_neg - theorem monoid_hom.map_neg_one - theorem monoid_hom.map_sub_swap - theorem pow_le_pow_of_le - theorem pow_lt_pow_succ - theorem pow_lt_pow₀ - theorem pow_pos_iff - theorem right.one_le_pow_of_le - theorem right.pow_le_one_of_le - theorem right.pow_lt_one_iff - theorem right.pow_lt_one_of_lt Modified src/analysis/inner_product_space/projection.lean Modified src/combinatorics/configuration.lean Modified src/data/list/big_operators.lean Modified src/data/list/zip.lean Modified src/data/nat/basic.lean - theorem nat.le_zero_iff Modified src/data/nat/choose/factorization.lean Modified src/data/nat/factorial/basic.lean Modified src/data/ordmap/ordset.lean Modified src/data/polynomial/reverse.lean Modified src/data/polynomial/unit_trinomial.lean Modified src/data/real/hyperreal.lean Modified src/data/zmod/basic.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/group_theory/p_group.lean Modified src/group_theory/perm/cycle/type.lean Modified src/group_theory/perm/support.lean Modified src/information_theory/hamming.lean Modified src/linear_algebra/basis.lean Modified src/number_theory/padics/padic_val.lean Modified src/ring_theory/multiplicity.lean Modified src/topology/path_connected.lean 2022-08-24 05:21:06 6cc2de2 feat(analysis/complex/arg): `same_ray_iff_arg_div_eq_zero` (#16218) Add the lemma that `same_ray ℝ x y ↔ arg (x / y) = 0`. ESTIMATED CHANGES Modified src/analysis/complex/arg.lean + theorem complex.same_ray_iff_arg_div_eq_zero 2022-08-24 05:21:04 757e73c feat(data/seq/seq): prove `seq.ext` earlier (#15830) We heavily golf `seq.ext` and move it to almost the beginning of the file. Doing this breaks the proof of `seq.of_list_cons`, which we also change and golf by adding a few trivial `simp` lemmas (not all of them are needed, but might as well add them). ESTIMATED CHANGES Modified src/data/seq/seq.lean + theorem seq.nth_cons_succ + theorem seq.nth_cons_zero + theorem seq.nth_mk + theorem seq.nth_nil +/- theorem seq.nth_tail +/- theorem seq.of_list_cons + theorem seq.of_list_nth 2022-08-24 03:40:54 04763f3 feat(group_theory/index): `card_dvd_of_surjective` (#16133) Mathlib already has `card_dvd_of_injective : fintype.card G ∣ fintype.card H` This PR adds: `nat_card_dvd_of_injective : nat.card G ∣ nat.card H` `nat_card_dvd_of_surjective : nat.card H ∣ nat.card G` `card_dvd_of_surjective : fintype.card H ∣ fintype.card G` ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.card_dvd_of_surjective + theorem subgroup.nat_card_dvd_of_injective + theorem subgroup.nat_card_dvd_of_surjective 2022-08-23 16:58:33 6f1ad82 chore(algebra/algebra/spectrum): generalize some spectrum results from `alg_hom` to `alg_hom_class` (#16177) - [x] depends on: #16178 ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean +/- theorem alg_hom.apply_mem_spectrum +/- theorem alg_hom.mem_resolvent_set_apply +/- theorem alg_hom.spectrum_apply_subset Modified src/analysis/normed_space/spectrum.lean + theorem alg_hom.coe_to_continuous_linear_map - theorem alg_hom.continuous +/- def alg_hom.to_continuous_linear_map Modified src/topology/algebra/module/character_space.lean 2022-08-23 16:58:32 cf9eb04 feat(topology/metric_space): Add first countability instances (#15942) This PR proves the following two facts: - pseudo-metric/metrizable spaces are first countable - uniform groups that have a countably generated neighborhood at the origin have a countably generated uniformity The instance for uniform groups allows for an easy way to prove that a topological group is metrizable, since the neighborhood filter is a more common object than the uniformity. In total this PR gives the proof that a topological group is metrizable iff it the neighborhood filter at the origin is countably generated. ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean + theorem uniform_group.uniformity_countably_generated Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/metrizable.lean 2022-08-23 15:50:52 e919421 feat(category_theory): functors preserving epis and kernels are exact (#16129) ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.exact_iff_exact_coimage_π + theorem category_theory.abelian.exact_iff_exact_image_ι +/- def category_theory.functor.preserves_finite_colimits_of_map_exact + def category_theory.functor.preserves_finite_colimits_of_preserves_epis_and_kernels +/- def category_theory.functor.preserves_finite_limits_of_map_exact + def category_theory.functor.preserves_finite_limits_of_preserves_monos_and_cokernels 2022-08-23 14:57:14 02128fe feat(topology/algebra/module/character_space): add facts about `character_space.union_zero` (#16209) This adds that the `character_space` along with the zero map is a closed subspace of the `weak_dual`. The point of this is eventually to show that in the non-unital case, the `character_space` is a locally compact Hausdorff space, under appropriate assumptions. ESTIMATED CHANGES Modified src/topology/algebra/module/character_space.lean + theorem weak_dual.character_space.union_zero + theorem weak_dual.character_space.union_zero_is_closed 2022-08-23 10:32:40 f089486 feat(analysis/special_functions/trigonometric): add `real.abs_sinh` (#16211) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/deriv.lean + theorem real.abs_sinh 2022-08-23 10:32:39 f399d3a feat(analysis/special_functions/complex/arg): relation to `real.angle.to_real` (#16205) Add two lemmas about the fact that `real.angle.to_real` is the inverse of coercing the result of `complex.arg` to `real.angle`. Thus, give the existing lemma `arg_coe_angle_eq_iff` a much shorter proof. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_coe_angle_eq_iff_eq_to_real + theorem complex.arg_coe_angle_to_real_eq_arg 2022-08-23 10:32:37 0abbdc0 chore(algebra/algebra/basic): some helper lemmas for linear maps over algebras (#16200) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem linear_map.map_algebra_map_mul + theorem linear_map.map_mul_algebra_map 2022-08-23 10:32:36 9bc7dfa chore(*): golfs with rsufficesI (#16197) ESTIMATED CHANGES Modified src/algebra/algebraic_card.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/analysis/normed_space/lp_space.lean Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/functor/flat.lean Modified src/category_theory/sites/plus.lean Modified src/topology/subset_properties.lean 2022-08-23 10:32:35 aeb7fac feat(data/rat/cast): add lemmas, golf (#16194) * add `rat.cast_strict_mono`, `rat.cast_strict_mono`, and `rat.cast_order_embedding`; * use these lemmas to prove `rat.cast_le` etc; * add `rat.preimage_cast_Ixx`. ESTIMATED CHANGES Modified src/data/rat/cast.lean +/- theorem rat.cast_abs + theorem rat.cast_eq_id +/- theorem rat.cast_hom_rat +/- theorem rat.cast_id +/- theorem rat.cast_le +/- theorem rat.cast_lt +/- theorem rat.cast_lt_zero +/- theorem rat.cast_max +/- theorem rat.cast_min + theorem rat.cast_mono +/- theorem rat.cast_nonneg +/- theorem rat.cast_nonpos + def rat.cast_order_embedding +/- theorem rat.cast_pos + theorem rat.cast_pos_of_pos + theorem rat.cast_strict_mono + theorem rat.preimage_cast_Icc + theorem rat.preimage_cast_Ici + theorem rat.preimage_cast_Ico + theorem rat.preimage_cast_Iic + theorem rat.preimage_cast_Iio + theorem rat.preimage_cast_Ioc + theorem rat.preimage_cast_Ioi + theorem rat.preimage_cast_Ioo 2022-08-23 10:32:34 62ac221 feat(group_theory/subgroup/basic): Add `map_is_commutative` and `comap_injective_is_commutative` (#16109) This PR adds `map_is_commutative` and `comap_injective_is_commutative`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.comap_injective_is_commutative 2022-08-23 10:32:33 fadfe79 chore(set_theory/surreal/basic): remove unnecessary namespace prefixes (#14585) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean - def surreal.equiv 2022-08-23 08:23:13 c205fe1 chore(order/conditionally_complete_lattice): golf three proofs (#16064) ESTIMATED CHANGES Modified src/analysis/inner_product_space/rayleigh.lean Modified src/order/conditionally_complete_lattice.lean - theorem cinfi_set - theorem csupr_set 2022-08-23 05:33:38 0ac6ba0 feat(analysis/special_functions/trigonometric/angle): `pi_ne_zero` (#16203) Add the lemma that `(π : angle) ≠ 0`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.pi_ne_zero 2022-08-23 05:33:37 40213d8 feat(data/finset/lattice): four lemmas about non-membership and max/min (#16192) These four lemmas were proved and used by Eric in his decidable version of `finsupp.lex`, replacing my previous undecidable one. They are extracted from #15984 (now closed) and used in #16127 (which replaces the closed PR). Authored-by: Eric Wieser <[wieser.eric@gmail.com](mailto:wieser.eric@gmail.com)> Submitted by me :smile: ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.not_mem_of_coe_lt_min + theorem finset.not_mem_of_lt_min + theorem finset.not_mem_of_max_lt + theorem finset.not_mem_of_max_lt_coe 2022-08-23 02:57:34 26d0a53 fix(topology/continuous_function/basic): use `old_structure_cmd` to define `continuous_map_class` (#16164) We fix `continuous_map_class` to use `old_structure_cmd`, and also fix the documentation of `fun_like` and `equiv_like` to specify that this should be done systematically for new morphism type classes. Without this, we get a `to_fun_like` field in the newly created class which then creates diamonds. ESTIMATED CHANGES Modified src/data/fun_like/basic.lean Modified src/data/fun_like/equiv.lean Modified src/topology/continuous_function/basic.lean Modified src/topology/spectral/hom.lean 2022-08-22 23:29:07 8f9efd6 feat(topology/algebra/module/character_space): provide instances of `continuous_linear_map_class`, `non_unital_alg_hom_class` and `alg_hom_class` (#16178) This updates `character_space` to utilize the new hom classes `continuous_linear_map_class`, `non_unital_alg_hom_class` and `alg_hom_class`. Also performs some minor housekeeping related to `simp` lemmas. ESTIMATED CHANGES Modified src/topology/algebra/module/character_space.lean - theorem weak_dual.character_space.coe_apply + theorem weak_dual.character_space.coe_coe + theorem weak_dual.character_space.coe_to_clm + theorem weak_dual.character_space.coe_to_non_unital_alg_hom - theorem weak_dual.character_space.continuous - theorem weak_dual.character_space.map_add - theorem weak_dual.character_space.map_mul - theorem weak_dual.character_space.map_one - theorem weak_dual.character_space.map_smul - theorem weak_dual.character_space.map_zero - theorem weak_dual.character_space.to_clm_apply +/- def weak_dual.character_space.to_non_unital_alg_hom 2022-08-22 21:53:27 abb635f feat(number_theory/legendre_symbol/quadratic_reciprocity): switch to Gauss sum proof, clean-up (#16171) This PR is (for now) the final step in the quest to change the proof of Quadratic Reciprocity from using the Gauss and Eisenstein lemmas to using the results for quadratic characters of general finite fields obtained from properties of the quadratic Gauss sum. In addition, there is some clean-up of the file and some further results (e.g., on the quadratic character of `-2` and some versions of the law of quadratic reciprocity that are probably easier to use), and the documentation has been extended. The Gauss and Eisenstein lemmas have been moved to `number_theory/legendre_symbol/gauss_eisenstein_lemmas` (where the auxiliary results needed for them have already been residing). I have opened a [topic](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2316171.20renovate.20quadratic.20reciprocity/near/294460241) on this under "PR reviews". ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean + theorem legendre_symbol.eisenstein_lemma + theorem legendre_symbol.gauss_lemma Modified src/number_theory/legendre_symbol/quadratic_char.lean - theorem quadratic_char_eq_one_of_char_two' - theorem quadratic_char_eq_pow_of_char_ne_two'' +/- theorem quadratic_char_eq_pow_of_char_ne_two' - theorem quadratic_char_eq_zero_iff' + theorem quadratic_char_fun_eq_one_of_char_two + theorem quadratic_char_fun_eq_pow_of_char_ne_two + theorem quadratic_char_fun_eq_zero_iff + theorem quadratic_char_fun_mul + theorem quadratic_char_fun_one + theorem quadratic_char_fun_zero - theorem quadratic_char_mul - theorem quadratic_char_one +/- theorem quadratic_char_zero Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean - theorem zmod.eisenstein_lemma +/- theorem zmod.euler_criterion +/- theorem zmod.euler_criterion_units + theorem zmod.exists_sq_eq_neg_two_iff +/- theorem zmod.exists_sq_eq_prime_iff_of_mod_four_eq_three +/- theorem zmod.exists_sq_eq_two_iff - theorem zmod.gauss_lemma +/- def zmod.legendre_sym + theorem zmod.legendre_sym_eq_neg_one_iff' +/- theorem zmod.legendre_sym_eq_neg_one_iff + theorem zmod.legendre_sym_eq_one_iff' +/- theorem zmod.legendre_sym_eq_one_or_neg_one +/- theorem zmod.legendre_sym_eq_pow +/- theorem zmod.legendre_sym_eq_zero_iff +/- def zmod.legendre_sym_hom +/- theorem zmod.legendre_sym_mod +/- theorem zmod.legendre_sym_mul + theorem zmod.legendre_sym_neg_two +/- theorem zmod.legendre_sym_one +/- theorem zmod.legendre_sym_sq_one' +/- theorem zmod.legendre_sym_sq_one +/- theorem zmod.legendre_sym_two +/- theorem zmod.legendre_sym_zero + theorem zmod.quadratic_reciprocity' +/- theorem zmod.quadratic_reciprocity + theorem zmod.quadratic_reciprocity_one_mod_four + theorem zmod.quadratic_reciprocity_three_mod_four Modified src/number_theory/legendre_symbol/zmod_char.lean + theorem neg_one_pow_div_two_of_one_mod_four + theorem neg_one_pow_div_two_of_three_mod_four Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-08-22 20:33:38 fa6e024 feat(analysis/special_functions/trigonometric/angle): `to_real` (#16007) Define `real.angle.to_real`, converting a `real.angle` to a real in the interval `Ioc (-π) π` (the same interval used by `complex.arg`), and prove some associated lemmas. This is the inverse operation to coercing the result of `complex.arg` to `real.angle`, and is also useful for converting between oriented and unoriented angles. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.abs_to_real_coe_eq_self_iff + theorem real.angle.abs_to_real_le_pi + theorem real.angle.abs_to_real_neg_coe_eq_self_iff + theorem real.angle.coe_abs_to_real_of_sign_nonneg + theorem real.angle.coe_to_Ico_mod + theorem real.angle.coe_to_Ioc_mod + theorem real.angle.coe_to_real + theorem real.angle.cos_to_real + theorem real.angle.eq_iff_abs_to_real_eq_of_sign_eq + theorem real.angle.eq_iff_sign_eq_and_abs_to_real_eq + theorem real.angle.neg_coe_abs_to_real_of_sign_nonpos + theorem real.angle.neg_pi_lt_to_real + theorem real.angle.sign_to_real + theorem real.angle.sin_to_real + theorem real.angle.to_Ioc_mod_to_real + def real.angle.to_real + theorem real.angle.to_real_coe + theorem real.angle.to_real_coe_eq_self_iff + theorem real.angle.to_real_coe_eq_self_iff_mem_Ioc + theorem real.angle.to_real_eq_pi_iff + theorem real.angle.to_real_eq_zero_iff + theorem real.angle.to_real_inj + theorem real.angle.to_real_injective + theorem real.angle.to_real_le_pi + theorem real.angle.to_real_mem_Ioc + theorem real.angle.to_real_neg_iff_sign_neg + theorem real.angle.to_real_nonneg_iff_sign_nonneg + theorem real.angle.to_real_pi + theorem real.angle.to_real_zero 2022-08-22 19:28:25 841ac1a refactor(algebra/lie): replace local instance with type synonym (#16154) A Lie ring can be viewed as a `non_unital_non_assoc_semiring` by using its bracket operator as the multiplication. Defining this as an instance causes diamonds because all rings are also Lie rings, so there are two incompatible multiplications on the same type. Instead of the previous approach, of making this a `def` and only locally enabling the instance being careful not to cause diamonds, we use a type synonym that is guaranteed to have only one multiplication operator. Someone who knows more about Lie theory should definitely check that the changes make mathematical sense. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/.60lie_ring.2Eto_non_unital_non_assoc_semiring.60 ESTIMATED CHANGES Modified src/algebra/lie/free.lean +/- def free_lie_algebra.lift_aux +/- def free_lie_algebra.mk Modified src/algebra/lie/non_unital_non_assoc_algebra.lean + def commutator_ring +/- def lie_hom.to_non_unital_alg_hom - def lie_ring.to_non_unital_non_assoc_semiring 2022-08-22 12:53:42 0a31295 feat(algebra/star/self_adjoint): add `star_mul_self`, `mul_star_self` and `star_hom_apply` (#16193) add some basic missing lemmas in the `is_self_adjoint` namespace: that `star x * x`, `x * (star x)` are selfadjoint, and members of a `star_hom_class` preserve self-adjoint elements. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean + theorem is_self_adjoint.mul_star_self + theorem is_self_adjoint.star_hom_apply + theorem is_self_adjoint.star_mul_self 2022-08-22 11:11:25 00eb691 feat(group_theory/free_group): norm of elements (#15503) This PR adds to a new `free_group.metric` namespace some useful lemmas related to the word metric on the free group. This will be useful for defining the word metric for an arbitrary (marked) group. ESTIMATED CHANGES Modified src/group_theory/free_group.lean +/- theorem free_group.inv_mk + def free_group.inv_rev + theorem free_group.inv_rev_bijective + theorem free_group.inv_rev_empty + theorem free_group.inv_rev_injective + theorem free_group.inv_rev_inv_rev + theorem free_group.inv_rev_involutive + theorem free_group.inv_rev_length + theorem free_group.inv_rev_surjective + theorem free_group.mk_to_word + def free_group.norm + theorem free_group.norm_eq_zero + theorem free_group.norm_inv_eq + theorem free_group.norm_mk_le + theorem free_group.norm_mul_le + theorem free_group.norm_one +/- theorem free_group.red.antisymm + theorem free_group.red.inv_rev + theorem free_group.red.length_le + theorem free_group.red.reduce_left + theorem free_group.red.reduce_right + theorem free_group.red.step.inv_rev + theorem free_group.red.step_inv_rev_iff - theorem free_group.red.sublist + theorem free_group.red_inv_rev_iff +/- theorem free_group.reduce.idem + theorem free_group.reduce_inv_rev + theorem free_group.reduce_to_word - theorem free_group.to_word.inj - theorem free_group.to_word.mk + theorem free_group.to_word_eq_nil_iff + theorem free_group.to_word_inj + theorem free_group.to_word_injective + theorem free_group.to_word_inv + theorem free_group.to_word_mk + theorem free_group.to_word_one 2022-08-22 08:40:48 4970a17 feat(list/basic): list.subset_singleton_iff (#16183) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.subset_singleton_iff 2022-08-22 08:40:47 cf7b16a chore(algebra/order/monoid): move lemmas (#16176) * move `with_top.coe_nat` to `algebra.order.monoid`, prove by `rfl`; * move `with_top.nat_ne_top` and `with_top.top_ne_nat` to `algebra.order.monoid`; * add `with_bot` versions. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem with_bot.bot_ne_nat + theorem with_bot.coe_nat + theorem with_bot.nat_ne_bot + theorem with_top.coe_nat + theorem with_top.nat_ne_top + theorem with_top.top_ne_nat Modified src/data/nat/cast.lean - theorem with_top.coe_nat - theorem with_top.nat_ne_top - theorem with_top.top_ne_nat 2022-08-22 08:40:46 6a5a2b1 feat(data/rat/cast): drop an unneeded typeclass assumption (#15972) * drop `[char_zero _]` assumption in `map_rat_cast`; * golf `ring_hom.eq_rat_cast`, generalize to `ring_hom_class`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/star/basic.lean +/- theorem star_rat_cast Modified src/data/rat/cast.lean + theorem eq_rat_cast +/- theorem map_rat_cast - theorem ring_hom.eq_rat_cast Modified src/ring_theory/algebraic.lean +/- theorem is_algebraic_rat 2022-08-22 06:09:44 0705229 feat(data/sym/basic): add nil coe lemma (#16181) add simple coe lemma for sym.nil ESTIMATED CHANGES Modified src/data/sym/basic.lean + theorem sym.coe_nil 2022-08-22 06:09:43 bfd2857 feat(algebra/order/ring): generalize some `mono` lemmas, use them (#14691) * generalize lemmas like `monotone_mul_left_of_nonneg` to `ordered_semiring`s, add `decidable.*` versions as needed; * add some `antitone` lemmas; * use these lemmas to prove `le_of_mul_le_mul_left` etc; * use section-local attributes instead of `letI := @linear_order.decidable_le α _`. ESTIMATED CHANGES Modified src/algebra/order/field.lean Modified src/algebra/order/ring.lean + theorem antitone_mul_left + theorem antitone_mul_right + theorem decidable.antitone_mul_left + theorem decidable.antitone_mul_right + theorem decidable.monotone_mul + theorem decidable.monotone_mul_left_of_nonneg + theorem decidable.monotone_mul_right_of_nonneg + theorem decidable.monotone_mul_strict_mono + theorem decidable.strict_mono_mul + theorem decidable.strict_mono_mul_monotone + theorem strict_anti_mul_left + theorem strict_anti_mul_right 2022-08-22 03:39:21 6155d43 feat(*): rsuffices golfs (#16159) This PR golfs many uses of `suffices` + `obtain`. There is further golfs possible, but I kept a specific type of golf to this PR. Most of these at least drop a line, if not two. ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo2021_q1.lean Modified archive/miu_language/decision_suf.lean Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified src/algebra/lie/weights.lean Modified src/analysis/convex/jensen.lean Modified src/analysis/convex/krein_milman.lean Modified src/analysis/inner_product_space/symmetric.lean Modified src/category_theory/abelian/homology.lean Modified src/computability/partrec_code.lean Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean Modified src/data/fintype/basic.lean Modified src/data/real/sqrt.lean Modified src/deprecated/subring.lean Modified src/group_theory/free_product.lean Modified src/measure_theory/function/ess_sup.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/ultrafilter.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/dedekind_domain/integral_closure.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean Modified src/ring_theory/subring/basic.lean Modified src/set_theory/cardinal/cofinality.lean Modified src/topology/algebra/semigroup.lean Modified src/topology/fiber_bundle.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/metrizable.lean Modified src/topology/metric_space/metrizable_uniformity.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/subset_properties.lean 2022-08-21 19:16:59 0da5446 refactor(analysis/convex/basic): Redefine convexity in terms of star-convexity (#16173) Change the definition from ```lean def convex : Prop := ∀ ⦃x y : E⦄, x ∈ s → y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • x + b • y ∈ s ``` to ```lean def convex : Prop := ∀ ⦃x : E⦄, x ∈ s → star_convex 𝕜 x s ``` which is defeq up to swapping the second and third foralls. This allows golfing the `convex` API in terms of the `star_convex` one. Also generalize `convex_pi` by limiting quantification to the set. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem convex.combo_eq_smul_sub_add Modified src/analysis/convex/basic.lean - theorem convex.combo_affine_apply - theorem convex.combo_eq_vadd +/- theorem convex.prod + theorem convex.star_convex + theorem convex.star_convex_iff +/- def convex +/- theorem convex_empty +/- theorem convex_iff_segment_subset +/- theorem convex_univ - theorem submodule.convex - theorem subspace.convex Modified src/analysis/convex/combination.lean Modified src/analysis/convex/cone.lean Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/function.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/convex/join.lean Modified src/analysis/convex/quasiconvex.lean Modified src/analysis/convex/slope.lean Modified src/analysis/convex/star.lean - theorem convex.star_convex - theorem convex.star_convex_iff - theorem convex_iff_forall_star_convex - theorem submodule.star_convex - theorem subspace.star_convex Modified src/analysis/convex/stone_separation.lean Modified src/analysis/convex/topology.lean Modified src/analysis/seminorm.lean Modified src/linear_algebra/affine_space/affine_map.lean + theorem convex.combo_affine_apply 2022-08-21 19:16:57 90bc957 chore(analysis/inner_product_space): move `is_symmetric` to a new file lower in the import tree (#16106) ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean - theorem linear_map.is_symmetric.add - theorem linear_map.is_symmetric.apply_clm - theorem linear_map.is_symmetric.coe_re_apply_inner_self_apply - theorem linear_map.is_symmetric.conj_inner_sym - theorem linear_map.is_symmetric.continuous - theorem linear_map.is_symmetric.restrict_invariant - theorem linear_map.is_symmetric.restrict_scalars - def linear_map.is_symmetric - theorem linear_map.is_symmetric_id - theorem linear_map.is_symmetric_iff_bilin_form - theorem linear_map.is_symmetric_iff_inner_map_self_real - theorem linear_map.is_symmetric_zero - theorem orthogonal_projection_is_symmetric Modified src/analysis/inner_product_space/projection.lean + theorem orthogonal_projection_is_symmetric Added src/analysis/inner_product_space/symmetric.lean + theorem linear_map.is_symmetric.add + theorem linear_map.is_symmetric.apply_clm + theorem linear_map.is_symmetric.coe_re_apply_inner_self_apply + theorem linear_map.is_symmetric.conj_inner_sym + theorem linear_map.is_symmetric.continuous + theorem linear_map.is_symmetric.restrict_invariant + theorem linear_map.is_symmetric.restrict_scalars + def linear_map.is_symmetric + theorem linear_map.is_symmetric_id + theorem linear_map.is_symmetric_iff_bilin_form + theorem linear_map.is_symmetric_iff_inner_map_self_real + theorem linear_map.is_symmetric_zero 2022-08-21 16:31:25 175a095 feat(data/set/prod): decidable mem instance on set prod (#16107) Adds a decidable mem instance for `s ×ˢ t` when both `s` and `t` are decidable ESTIMATED CHANGES Modified src/data/set/prod.lean 2022-08-21 09:59:02 e0b2fa6 feat(algebra/*): Algebraic instances on `lex`/`order_dual` (#16122) Copy over algebraic instances for `lex` and `order_dual`. ESTIMATED CHANGES Modified src/algebra/field/basic.lean + theorem of_dual_rat_cast + theorem of_lex_rat_cast + theorem to_dual_rat_cast + theorem to_lex_rat_cast Modified src/algebra/group/basic.lean + theorem of_dual_div + theorem of_dual_inv + theorem of_dual_mul + theorem of_dual_one + theorem of_dual_pow + theorem of_dual_smul + theorem of_dual_vadd + theorem of_lex_div + theorem of_lex_inv + theorem of_lex_mul + theorem of_lex_one + theorem of_lex_pow + theorem of_lex_smul + theorem of_lex_vadd + theorem to_dual_div + theorem to_dual_inv + theorem to_dual_mul + theorem to_dual_one + theorem to_dual_pow + theorem to_dual_smul + theorem to_dual_vadd + theorem to_lex_div + theorem to_lex_inv + theorem to_lex_mul + theorem to_lex_one + theorem to_lex_pow + theorem to_lex_smul + theorem to_lex_vadd Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/order/field.lean Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/ring.lean Modified src/algebra/order/smul.lean - theorem order_dual.of_dual_smul - theorem order_dual.to_dual_smul Modified src/algebra/ring/basic.lean Modified src/data/int/cast.lean + theorem of_dual_int_cast + theorem of_lex_int_cast + theorem to_dual_int_cast + theorem to_lex_int_cast Modified src/data/nat/cast.lean + theorem of_dual_nat_cast + theorem of_lex_nat_cast +/- theorem pi.coe_nat +/- theorem pi.nat_apply + theorem to_dual_nat_cast + theorem to_lex_nat_cast Modified src/order/basic.lean Modified test/simps.lean +/- structure decorated_equiv + def equiv'.trans + structure equiv' - def equiv.trans - structure equiv +/- def foo2 +/- def my_equiv 2022-08-21 06:57:50 972aa42 refactor(data/int/cast): Use hom classes (#16024) Restate `map_eq_zero`, `map_ne_zero`, `map_int_cast`, `eq_int_cast'` using `monoid_with_zero_hom_class`/`ring_hom_class` instead of `monoid_with_zero_hom`/`ring_hom`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_hom.map_int_cast Modified src/algebra/cubic_discriminant.lean Modified src/algebra/field/basic.lean - theorem ring_hom.map_eq_zero - theorem ring_hom.map_ne_zero Modified src/algebra/group_with_zero/basic.lean + theorem map_eq_zero + theorem map_ne_zero - theorem monoid_with_zero_hom.map_eq_zero - theorem monoid_with_zero_hom.map_ne_zero Modified src/algebra/order/absolute_value.lean +/- def absolute_value.to_monoid_hom +/- def absolute_value.to_monoid_with_zero_hom Modified src/algebra/star/basic.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/complex/upper_half_plane/basic.lean Modified src/analysis/locally_convex/bounded.lean Modified src/analysis/normed_space/compact_operator.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/data/complex/basic.lean +/- theorem complex.of_real_int_cast Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.of_real_int_cast + theorem is_R_or_C.of_real_ne_zero Modified src/data/int/cast.lean - theorem add_monoid_hom.eq_int_cast + theorem eq_int_cast' + theorem eq_int_cast + theorem ext_int' +/- theorem int.cast_id + theorem map_int_cast - theorem monoid_with_zero_hom.ext_int' +/- theorem pi.coe_int +/- theorem pi.int_apply +/- theorem ring_hom.eq_int_cast' - theorem ring_hom.eq_int_cast - theorem ring_hom.map_int_cast Modified src/data/mv_polynomial/comm_ring.lean Modified src/data/nat/cast.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean +/- theorem polynomial.C_eq_int_cast Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/eval.lean +/- theorem polynomial.map_int_cast Modified src/data/polynomial/field_division.lean +/- theorem polynomial.map_eq_zero Modified src/data/zmod/algebra.lean Modified src/data/zmod/basic.lean +/- theorem zmod.cast_int_cast Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/normal.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/number_theory/class_number/admissible_abs.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/cyclotomic/primitive_roots.lean Modified src/number_theory/function_field.lean Modified src/number_theory/legendre_symbol/gauss_sum.lean Modified src/number_theory/legendre_symbol/quadratic_char.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/localization/fraction_ring.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/subring/basic.lean +/- theorem subring.coe_int_cast +/- theorem subring.coe_nat_cast +/- theorem subring_class.coe_int_cast +/- theorem subring_class.coe_nat_cast Modified src/ring_theory/valuation/basic.lean - theorem add_valuation.map_units_inv Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/mul_coeff.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean 2022-08-21 04:35:03 b46c895 chore(scripts): update nolints.txt (#16179) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-20 23:11:15 ec73f6e chore(algebra/big_operators/pi): rename `w` to `H` in assumptions (#16166) ESTIMATED CHANGES Modified src/algebra/big_operators/pi.lean Modified src/data/fintype/basic.lean 2022-08-20 18:10:39 aac3141 feat(group_theory/coset): Right cosets are orbits (#16119) This PR adds a few lemma about the orbit of the action of a subgroup of a group on the group. ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem orbit_subgroup_eq_right_coset + theorem orbit_subgroup_eq_self_of_mem + theorem orbit_subgroup_one_eq_self 2022-08-20 18:10:38 eaeb458 feat(set_theory/cardinal/finite): `nat.card (zmod n) = n` (#16118) This PR adds a short lemma `nat.card (zmod n) = n`. ESTIMATED CHANGES Modified src/set_theory/cardinal/finite.lean + theorem nat.card_zmod 2022-08-20 17:01:47 df96790 feat(algebraic_topology): split simplicial objects (#16072) This PR introduces the notion of split simplicial objects. Future PRs will show that simplicial sets are split (in a unique way). It will also be a consequence of the Dold-Kan correspondence that in (pseudo-)abelian categories, all simplicial objects have at least a splitting. Split simplicial objects will be used in the proof of the Dold-Kan correspondence. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean Added src/algebraic_topology/split_simplicial_object.lean + def simplicial_object.splitting.coprod + def simplicial_object.splitting.desc + theorem simplicial_object.splitting.hom_ext' + theorem simplicial_object.splitting.hom_ext + def simplicial_object.splitting.index_set.e + theorem simplicial_object.splitting.index_set.ext' + theorem simplicial_object.splitting.index_set.ext + def simplicial_object.splitting.index_set.id + def simplicial_object.splitting.index_set.mk + def simplicial_object.splitting.index_set + def simplicial_object.splitting.iso + def simplicial_object.splitting.map + def simplicial_object.splitting.summand + def simplicial_object.splitting.ι_coprod + theorem simplicial_object.splitting.ι_desc + def simplicial_object.splitting.ι_summand + theorem simplicial_object.splitting.ι_summand_comp_app + theorem simplicial_object.splitting.ι_summand_eq + theorem simplicial_object.splitting.ι_summand_id + def simplicial_object.splitting.φ + structure simplicial_object.splitting 2022-08-20 13:58:41 ee26143 feat(algebra/order/complete_field): generalize ring_hom_monotone (#16147) @alreadydone noticed that in the proof of ```ring_hom_monotone``` can be generalized to rings. ESTIMATED CHANGES Modified src/algebra/order/complete_field.lean 2022-08-20 13:58:40 67488df refactor(order/minimals): Change definition to `a ≤ b → b ≤ a` (#16103) This matches `is_min`/`is_max` and will allow to smoothly restate Zorn's lemma using those. ESTIMATED CHANGES Modified src/order/minimal.lean + theorem eq_of_mem_maximals + theorem eq_of_mem_minimals +/- theorem is_greatest.mem_maximals +/- theorem is_least.mem_minimals +/- def maximals +/- theorem maximals_antichain +/- theorem maximals_mono +/- def minimals +/- theorem minimals_antichain +/- theorem minimals_mono 2022-08-20 11:28:35 c2c31b5 chore(field_theory/*): Fix lint (#16149) Satisfy the `fintype_finite` linter. ESTIMATED CHANGES Modified src/data/fintype/basic.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/finite/polynomial.lean +/- theorem mv_polynomial.eq_zero_of_eval_eq_zero +/- theorem mv_polynomial.ker_evalₗ +/- theorem mv_polynomial.range_evalᵢ Modified src/field_theory/finite/trace.lean +/- theorem finite_field.trace_to_zmod_nondegenerate Modified src/field_theory/fixed.lean +/- theorem fixed_points.finrank_le_card +/- theorem fixed_points.is_integral Modified src/field_theory/galois.lean Modified src/field_theory/primitive_element.lean + theorem field.exists_primitive_element_of_finite_bot + theorem field.exists_primitive_element_of_finite_top - theorem field.exists_primitive_element_of_fintype_bot - theorem field.exists_primitive_element_of_fintype_top Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.finite_of_finite 2022-08-20 08:58:24 4a0f332 feat(data/finset/pointwise): `-s • t = -(s • t)` (#16138) and copy over other pointwise `set` lemmas. Generalize the `set` lemmas. `set.smul_neg`, `set.neg_smul`, `set.smul_set_neg`, `set.neg_smul_set` now have explicit arguments. ESTIMATED CHANGES Modified src/analysis/locally_convex/basic.lean Modified src/data/finset/pointwise.lean + theorem finset.neg_smul_finset + theorem finset.nonempty.smul_zero + theorem finset.nonempty.zero_smul + theorem finset.smul_finset_neg + theorem finset.smul_zero_subset + theorem finset.zero_mem_smul_finset + theorem finset.zero_mem_smul_finset_iff + theorem finset.zero_mem_smul_iff + theorem finset.zero_smul_finset + theorem finset.zero_smul_finset_subset + theorem finset.zero_smul_subset Modified src/data/set/pointwise.lean 2022-08-20 08:58:23 4705dd0 split(analysis/convex/segment): Split off `analysis/convex.basic` (#16112) Move `segment` and `open_segment` to a new file `analysis.convex.segment`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean - theorem Icc_subset_segment - theorem Ioo_subset_open_segment - theorem convex.combo_le_max - theorem convex.mem_Icc - theorem convex.mem_Ico - theorem convex.mem_Ioc - theorem convex.mem_Ioo - theorem convex.min_le_combo - theorem insert_endpoints_open_segment - theorem left_mem_open_segment_iff - theorem left_mem_segment - theorem mem_open_segment_iff_div - theorem mem_open_segment_of_ne_left_right - theorem mem_open_segment_translate - theorem mem_segment_add_sub - theorem mem_segment_iff_div - theorem mem_segment_iff_same_ray - theorem mem_segment_sub_add - theorem mem_segment_translate - theorem midpoint_mem_segment - def open_segment - theorem open_segment_eq_Ioo' - theorem open_segment_eq_Ioo - theorem open_segment_eq_image' - theorem open_segment_eq_image - theorem open_segment_eq_image_line_map - theorem open_segment_eq_image₂ - theorem open_segment_image - theorem open_segment_same - theorem open_segment_subset_Ioo - theorem open_segment_subset_iff - theorem open_segment_subset_iff_segment_subset - theorem open_segment_subset_segment - theorem open_segment_symm - theorem open_segment_translate_image - theorem open_segment_translate_preimage - theorem right_mem_open_segment_iff - theorem right_mem_segment - theorem same_ray_of_mem_segment - def segment - theorem segment_eq_Icc' - theorem segment_eq_Icc - theorem segment_eq_image' - theorem segment_eq_image - theorem segment_eq_image_line_map - theorem segment_eq_image₂ - theorem segment_eq_interval - theorem segment_image - theorem segment_same - theorem segment_subset_Icc - theorem segment_subset_iff - theorem segment_subset_interval - theorem segment_symm - theorem segment_translate_image - theorem segment_translate_preimage Added src/analysis/convex/segment.lean + theorem Icc_subset_segment + theorem Ioo_subset_open_segment + theorem convex.combo_le_max + theorem convex.mem_Icc + theorem convex.mem_Ico + theorem convex.mem_Ioc + theorem convex.mem_Ioo + theorem convex.min_le_combo + theorem insert_endpoints_open_segment + theorem left_mem_open_segment_iff + theorem left_mem_segment + theorem mem_open_segment_iff_div + theorem mem_open_segment_of_ne_left_right + theorem mem_open_segment_translate + theorem mem_segment_add_sub + theorem mem_segment_iff_div + theorem mem_segment_iff_same_ray + theorem mem_segment_sub_add + theorem mem_segment_translate + theorem midpoint_mem_segment + def open_segment + theorem open_segment_eq_Ioo' + theorem open_segment_eq_Ioo + theorem open_segment_eq_image' + theorem open_segment_eq_image + theorem open_segment_eq_image_line_map + theorem open_segment_eq_image₂ + theorem open_segment_image + theorem open_segment_same + theorem open_segment_subset_Ioo + theorem open_segment_subset_iff + theorem open_segment_subset_iff_segment_subset + theorem open_segment_subset_segment + theorem open_segment_symm + theorem open_segment_translate_image + theorem open_segment_translate_preimage + theorem right_mem_open_segment_iff + theorem right_mem_segment + theorem same_ray_of_mem_segment + def segment + theorem segment_eq_Icc' + theorem segment_eq_Icc + theorem segment_eq_image' + theorem segment_eq_image + theorem segment_eq_image_line_map + theorem segment_eq_image₂ + theorem segment_eq_interval + theorem segment_image + theorem segment_same + theorem segment_subset_Icc + theorem segment_subset_iff + theorem segment_subset_interval + theorem segment_symm + theorem segment_translate_image + theorem segment_translate_preimage 2022-08-20 08:58:22 8fdec90 feat(ring_theory/polynomial): Vieta's formula in terms of `polynomial.roots` (#14908) Specialize `multiset.prod_X_sub_C_coeff` to the root multiset of a split polynomial over an integral domain to derive the familiar Vieta's formula; update *undergrad.yaml*. Make various stylistic improvements to *polynomial/vieta.lean*: most notably, `open polynomial` to be able to omit the prefix in `polynomial.X` and `polynomial.C`. Instead, write `mv_polynomial.X` with the prefix because it's less frequent. Prove miscellaneous lemmas `list.prod_map_neg`, `multiset.prod_map_neg`, `list.map_nth_le` and `multiset.length_to_list`, which are remnants of a previous approach to prove `polynomial.vieta` superseded by #15008. See below/#14908 for the original motivation for introducing them. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_map_neg Modified src/data/list/big_operators.lean + theorem list.prod_map_neg Modified src/data/list/range.lean + theorem list.map_nth_le Modified src/data/multiset/basic.lean + theorem multiset.length_to_list Modified src/ring_theory/polynomial/vieta.lean +/- theorem multiset.prod_X_add_C_coeff +/- theorem multiset.prod_X_sub_C_coeff +/- theorem mv_polynomial.prod_C_add_X_eq_sum_esymm +/- theorem mv_polynomial.prod_X_add_C_coeff + theorem polynomial.coeff_eq_esymm_roots_of_card + theorem polynomial.coeff_eq_esymm_roots_of_splits 2022-08-20 06:55:40 09d7fe3 feat(algebra/star/star_alg_hom): define unital and non-unital `star_alg_hom`s (#16089) This defines three new hom classes `star_hom_class`, `star_alg_hom_class` and `non_unital_star_alg_hom_class`, and associated hom types for the latter two. `star_hom_class` is used essentially as a mixin. The types `star_alg_hom` and `non_unital_star_alg_hom` constitute the morphisms in the categories of unital C⋆-algebras and C⋆-algebras, respectively. Per this [recent discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/has_coe_t.20for.20semilinear_map_class), there are no coercions implemented for these new morphisms aside from the usual `has_coe_to_fun` arising from the `fun_like` instance. In particular, there is no coercion from `star_alg_hom` to `alg_hom`, nor for the non-unital variants, but of course there is the "manual coercion" `star_alg_hom.to_alg_hom`. Likewise, there is no coercion from `F` to `star_alg_hom R A B` given an instance `star_alg_hom_class F R A B`. Such coercions as we deem useful and prudent can be added later. ESTIMATED CHANGES Modified src/algebra/star/basic.lean Modified src/algebra/star/module.lean + theorem algebra_map_star_comm Added src/algebra/star/star_alg_hom.lean + theorem non_unital_star_alg_hom.coe_comp + theorem non_unital_star_alg_hom.coe_id + theorem non_unital_star_alg_hom.coe_inl + theorem non_unital_star_alg_hom.coe_inr + theorem non_unital_star_alg_hom.coe_mk + theorem non_unital_star_alg_hom.coe_one + theorem non_unital_star_alg_hom.coe_prod + theorem non_unital_star_alg_hom.coe_to_non_unital_alg_hom + theorem non_unital_star_alg_hom.coe_zero + def non_unital_star_alg_hom.comp + theorem non_unital_star_alg_hom.comp_apply + theorem non_unital_star_alg_hom.comp_assoc + theorem non_unital_star_alg_hom.comp_id + theorem non_unital_star_alg_hom.ext + def non_unital_star_alg_hom.fst + theorem non_unital_star_alg_hom.fst_prod + theorem non_unital_star_alg_hom.id_comp + def non_unital_star_alg_hom.inl + theorem non_unital_star_alg_hom.inl_apply + def non_unital_star_alg_hom.inr + theorem non_unital_star_alg_hom.inr_apply + theorem non_unital_star_alg_hom.mk_coe + theorem non_unital_star_alg_hom.one_apply + def non_unital_star_alg_hom.prod + def non_unital_star_alg_hom.prod_equiv + theorem non_unital_star_alg_hom.prod_fst_snd + def non_unital_star_alg_hom.snd + theorem non_unital_star_alg_hom.snd_prod + theorem non_unital_star_alg_hom.zero_apply + structure non_unital_star_alg_hom + theorem star_alg_hom.coe_comp + theorem star_alg_hom.coe_id + theorem star_alg_hom.coe_mk + theorem star_alg_hom.coe_prod + theorem star_alg_hom.coe_to_alg_hom + theorem star_alg_hom.coe_to_non_unital_star_alg_hom + def star_alg_hom.comp + theorem star_alg_hom.comp_apply + theorem star_alg_hom.comp_assoc + theorem star_alg_hom.comp_id + theorem star_alg_hom.ext + def star_alg_hom.fst + theorem star_alg_hom.fst_prod + theorem star_alg_hom.id_comp + theorem star_alg_hom.mk_coe + def star_alg_hom.prod + def star_alg_hom.prod_equiv + theorem star_alg_hom.prod_fst_snd + def star_alg_hom.snd + theorem star_alg_hom.snd_prod + def star_alg_hom.to_non_unital_star_alg_hom + structure star_alg_hom 2022-08-20 03:46:16 2c6e595 chore(data/finsupp/ne_locus): reduce import, after the finsupp.basic refactor (#16165) Importing `data.finsupp.defs` is enough. ESTIMATED CHANGES Modified src/data/finsupp/ne_locus.lean 2022-08-20 00:37:23 21b6412 feat(order/complete_lattice): Duals of complete lattice operations (#16148) A few missing lemmas about `to_dual` and `of_dual`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem of_dual_Inf + theorem of_dual_Sup + theorem of_dual_infi + theorem of_dual_supr + theorem to_dual_Inf + theorem to_dual_Sup + theorem to_dual_infi + theorem to_dual_supr 2022-08-19 21:51:38 e1b7b7d fix(control/random): typo (#16156) Fix a small typo in the `random.lean` doc comment of `mk_generator` definition. ESTIMATED CHANGES Modified src/control/random.lean 2022-08-19 21:51:36 e8ca35f chore(linear_algebra/matrix/block): remove the `_matrix` suffix from `matrix.block_triangular_matrix` (#16155) The same is done for the primed version. There's no need to have the word `matrix` in this definition twice. ESTIMATED CHANGES Modified src/linear_algebra/matrix/block.lean + def matrix.block_triangular' + def matrix.block_triangular - def matrix.block_triangular_matrix' - def matrix.block_triangular_matrix + theorem matrix.det_of_block_triangular'' + theorem matrix.det_of_block_triangular' + theorem matrix.det_of_block_triangular - theorem matrix.det_of_block_triangular_matrix'' - theorem matrix.det_of_block_triangular_matrix' - theorem matrix.det_of_block_triangular_matrix 2022-08-19 21:51:35 faed3a7 feat(algebra/group_with_zero): slightly generalise mul_ne_zero (#16137) Also tidies a couple of adjacent declarations in the file. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean +/- theorem eq_zero_of_mul_self_eq_zero +/- theorem mul_self_ne_zero +/- theorem zero_ne_mul_self 2022-08-19 21:51:34 e57e72f feat(ring_theory/valuation/valuation_subring): pointwise left actions via `map` (#16080) This copies over the API from the pointwise actions on subrings, with the action on a valuation subring just acting on the underlying subring. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Working.20on.20Frobenius.20elements/near/293810759) ESTIMATED CHANGES Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation_subring.coe_pointwise_smul + theorem valuation_subring.mem_inv_pointwise_smul_iff + theorem valuation_subring.mem_pointwise_smul_iff_inv_smul_mem + theorem valuation_subring.mem_smul_pointwise_iff_exists + def valuation_subring.pointwise_has_smul + def valuation_subring.pointwise_mul_action + theorem valuation_subring.pointwise_smul_le_pointwise_smul_iff + theorem valuation_subring.pointwise_smul_subset_iff + theorem valuation_subring.pointwise_smul_to_subring + theorem valuation_subring.smul_mem_pointwise_smul + theorem valuation_subring.smul_mem_pointwise_smul_iff + theorem valuation_subring.subset_pointwise_smul_iff + theorem valuation_subring.to_subring_injective 2022-08-19 19:30:34 5ad44a9 feat(data/finsupp/ne_locus): new file with finsupp.ne_locus (#16091) `finsupp.ne_locus` for finitely supported functions. Let `α N` be two Types, and assume that `N` has a `0` and let `f g : α →₀ N` be finitely supported functions. This PR defines `finsupp.ne_locus f g : finset α`, the finite subset of `α` where `f` and `g` differ. In the case in which `N` is an additive group, `finsupp.ne_locus f g` coincides with `finsupp.support (f - g)`. This is the initial segment of #16026, that continues with the definition of witnesses. [Zulip discussion for the choice of name](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60diff.60.20vs.20.60ne_locus.60) [Zulip discussion for the actual PR](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2316091.20.60ne_locus.60) ESTIMATED CHANGES Added src/data/finsupp/ne_locus.lean + theorem finsupp.add_ne_locus_add_eq_left + theorem finsupp.add_ne_locus_add_eq_right + theorem finsupp.coe_ne_locus + theorem finsupp.map_range_ne_locus_eq + theorem finsupp.mem_ne_locus + def finsupp.ne_locus + theorem finsupp.ne_locus_comm + theorem finsupp.ne_locus_eq_empty + theorem finsupp.ne_locus_eq_support_sub + theorem finsupp.ne_locus_neg + theorem finsupp.ne_locus_zero_left + theorem finsupp.ne_locus_zero_right + theorem finsupp.neg_ne_locus_neg + theorem finsupp.nonempty_ne_locus_iff + theorem finsupp.sub_ne_locus_sub_eq_left + theorem finsupp.sub_ne_locus_sub_eq_right + theorem finsupp.subset_map_range_ne_locus + theorem finsupp.zip_with_ne_locus_eq_left + theorem finsupp.zip_with_ne_locus_eq_right 2022-08-19 19:30:33 f9c3000 refactor(data/finsupp/basic): split `data/finsupp/basic` into three parts (#15699) This PR splits the ~2900 lines of `data/finsupp/basic` into more manageable parts: * the most basic material (~1000 lines) moves to `data/finsupp/defs` * lemmas about `finsupp.sum` and `finsupp.prod` move to `algebra/big_operators/finsupp` * the remaining less-used definitions and lemmas remain in `data/finsupp/basic` (~1600 lines) ESTIMATED CHANGES Modified src/algebra/big_operators/associated.lean Modified src/algebra/big_operators/finsupp.lean + theorem finsupp.coe_finset_sum + theorem finsupp.coe_sum + theorem finsupp.comp_lift_add_hom + theorem finsupp.finset_sum_apply + def finsupp.lift_add_hom + theorem finsupp.lift_add_hom_apply + theorem finsupp.lift_add_hom_apply_single + theorem finsupp.lift_add_hom_comp_single + theorem finsupp.lift_add_hom_single_add_hom + theorem finsupp.lift_add_hom_symm_apply + theorem finsupp.lift_add_hom_symm_apply_apply + theorem finsupp.mul_prod_erase' + theorem finsupp.mul_prod_erase + theorem finsupp.multiset_map_sum + theorem finsupp.multiset_sum_sum + theorem finsupp.multiset_sum_sum_index + theorem finsupp.on_finset_prod + def finsupp.prod + theorem finsupp.prod_add_index' + theorem finsupp.prod_add_index + theorem finsupp.prod_add_index_of_disjoint + theorem finsupp.prod_comm + theorem finsupp.prod_congr + theorem finsupp.prod_dvd_prod_of_subset_of_dvd + theorem finsupp.prod_emb_domain + theorem finsupp.prod_finset_sum_index + theorem finsupp.prod_fintype + theorem finsupp.prod_hom_add_index + theorem finsupp.prod_inv + theorem finsupp.prod_ite_eq' + theorem finsupp.prod_ite_eq + theorem finsupp.prod_map_range_index + theorem finsupp.prod_mul + theorem finsupp.prod_neg_index + theorem finsupp.prod_of_support_subset + theorem finsupp.prod_pow + theorem finsupp.prod_single_index + theorem finsupp.prod_sum_index + theorem finsupp.prod_zero_index + theorem finsupp.single_finset_sum + theorem finsupp.single_multiset_sum + theorem finsupp.single_sum + theorem finsupp.sum_apply + theorem finsupp.sum_hom_add_index + theorem finsupp.sum_ite_self_eq' + theorem finsupp.sum_ite_self_eq + theorem finsupp.sum_single + theorem finsupp.sum_sub + theorem finsupp.sum_sub_index + theorem finsupp.sum_univ_single' + theorem finsupp.sum_univ_single + theorem finsupp.sum_zero + theorem finsupp.support_finset_sum + theorem finsupp.support_sum + theorem finsupp.support_sum_eq_bUnion + theorem map_finsupp_prod + theorem monoid_hom.coe_finsupp_prod + theorem monoid_hom.finsupp_prod_apply + theorem submonoid_class.finsupp_prod_mem Modified src/data/finset/finsupp.lean Modified src/data/finsupp/basic.lean - def equiv.finsupp_unique - theorem finsupp.add_apply - theorem finsupp.add_closure_set_of_eq_single - theorem finsupp.add_hom_ext' - theorem finsupp.add_hom_ext - def finsupp.apply_add_hom - theorem finsupp.card_support_eq_one' - theorem finsupp.card_support_eq_one - theorem finsupp.card_support_eq_zero - theorem finsupp.card_support_le_one' - theorem finsupp.card_support_le_one - theorem finsupp.coe_add - theorem finsupp.coe_eq_zero - theorem finsupp.coe_finset_sum - theorem finsupp.coe_fn_inj - theorem finsupp.coe_fn_injective - theorem finsupp.coe_mk - theorem finsupp.coe_neg - theorem finsupp.coe_sub - theorem finsupp.coe_sum - theorem finsupp.coe_update - theorem finsupp.coe_zero - theorem finsupp.comp_lift_add_hom - theorem finsupp.congr_fun - def finsupp.emb_domain.add_monoid_hom - def finsupp.emb_domain - theorem finsupp.emb_domain_add - theorem finsupp.emb_domain_apply - theorem finsupp.emb_domain_eq_zero - theorem finsupp.emb_domain_inj - theorem finsupp.emb_domain_injective - theorem finsupp.emb_domain_map_range - theorem finsupp.emb_domain_notin_range - theorem finsupp.emb_domain_single - theorem finsupp.emb_domain_zero - theorem finsupp.eq_single_iff - def finsupp.equiv_fun_on_fintype - theorem finsupp.equiv_fun_on_fintype_single - theorem finsupp.equiv_fun_on_fintype_symm_coe - theorem finsupp.equiv_fun_on_fintype_symm_single - def finsupp.erase - theorem finsupp.erase_add - def finsupp.erase_add_hom - theorem finsupp.erase_add_single - theorem finsupp.erase_eq_sub_single - theorem finsupp.erase_ne - theorem finsupp.erase_of_not_mem_support - theorem finsupp.erase_same - theorem finsupp.erase_single - theorem finsupp.erase_single_ne - theorem finsupp.erase_zero - theorem finsupp.ext - theorem finsupp.ext_iff' - theorem finsupp.ext_iff - theorem finsupp.finite_support - theorem finsupp.finset_sum_apply - theorem finsupp.fun_support_eq - theorem finsupp.induction_linear - theorem finsupp.induction₂ - def finsupp.lift_add_hom - theorem finsupp.lift_add_hom_apply - theorem finsupp.lift_add_hom_apply_single - theorem finsupp.lift_add_hom_comp_single - theorem finsupp.lift_add_hom_single_add_hom - theorem finsupp.lift_add_hom_symm_apply - theorem finsupp.lift_add_hom_symm_apply_apply - def finsupp.map_range - theorem finsupp.map_range_add - theorem finsupp.map_range_apply - theorem finsupp.map_range_comp - theorem finsupp.map_range_id - theorem finsupp.map_range_single - theorem finsupp.map_range_zero - theorem finsupp.mem_support_iff - theorem finsupp.mem_support_on_finset - theorem finsupp.mem_support_single - theorem finsupp.mul_hom_ext' - theorem finsupp.mul_hom_ext - theorem finsupp.mul_prod_erase' - theorem finsupp.mul_prod_erase - theorem finsupp.multiset_map_sum - theorem finsupp.multiset_sum_sum - theorem finsupp.multiset_sum_sum_index - theorem finsupp.neg_apply - theorem finsupp.nonzero_iff_exists - theorem finsupp.not_mem_support_iff - theorem finsupp.of_support_finite_coe - def finsupp.on_finset - theorem finsupp.on_finset_apply - theorem finsupp.on_finset_prod - def finsupp.prod - theorem finsupp.prod_add_index' - theorem finsupp.prod_add_index - theorem finsupp.prod_add_index_of_disjoint - theorem finsupp.prod_comm - theorem finsupp.prod_congr - theorem finsupp.prod_dvd_prod_of_subset_of_dvd - theorem finsupp.prod_emb_domain - theorem finsupp.prod_finset_sum_index - theorem finsupp.prod_fintype - theorem finsupp.prod_hom_add_index - theorem finsupp.prod_inv - theorem finsupp.prod_ite_eq' - theorem finsupp.prod_ite_eq - theorem finsupp.prod_map_range_index - theorem finsupp.prod_mul - theorem finsupp.prod_neg_index - theorem finsupp.prod_of_support_subset - theorem finsupp.prod_pow - theorem finsupp.prod_single_index - theorem finsupp.prod_sum_index - theorem finsupp.prod_zero_index - theorem finsupp.range_single_subset - def finsupp.single - theorem finsupp.single_add - theorem finsupp.single_add_erase - def finsupp.single_add_hom - theorem finsupp.single_add_single_eq_single_add_single - theorem finsupp.single_apply - theorem finsupp.single_apply_eq_zero - theorem finsupp.single_apply_mem - theorem finsupp.single_apply_ne_zero - theorem finsupp.single_eq_indicator - theorem finsupp.single_eq_of_ne - theorem finsupp.single_eq_pi_single - theorem finsupp.single_eq_same - theorem finsupp.single_eq_single_iff - theorem finsupp.single_eq_update - theorem finsupp.single_eq_zero - theorem finsupp.single_finset_sum - theorem finsupp.single_injective - theorem finsupp.single_left_inj - theorem finsupp.single_left_injective - theorem finsupp.single_multiset_sum - theorem finsupp.single_of_emb_domain_single - theorem finsupp.single_of_single_apply - theorem finsupp.single_sum - theorem finsupp.single_swap - theorem finsupp.single_zero - theorem finsupp.sub_apply - theorem finsupp.sum_apply - theorem finsupp.sum_hom_add_index - theorem finsupp.sum_ite_self_eq' - theorem finsupp.sum_ite_self_eq - theorem finsupp.sum_single - theorem finsupp.sum_sub - theorem finsupp.sum_sub_index - theorem finsupp.sum_univ_single' - theorem finsupp.sum_univ_single - theorem finsupp.sum_zero - theorem finsupp.support_add - theorem finsupp.support_add_eq - theorem finsupp.support_emb_domain - theorem finsupp.support_eq_empty - theorem finsupp.support_eq_singleton' - theorem finsupp.support_eq_singleton - theorem finsupp.support_erase - theorem finsupp.support_finset_sum - theorem finsupp.support_map_range - theorem finsupp.support_map_range_of_injective - theorem finsupp.support_neg - theorem finsupp.support_nonempty_iff - theorem finsupp.support_on_finset - theorem finsupp.support_on_finset_subset - theorem finsupp.support_single_disjoint - theorem finsupp.support_single_ne_bot - theorem finsupp.support_single_ne_zero - theorem finsupp.support_single_subset - theorem finsupp.support_sub - theorem finsupp.support_subset_iff - theorem finsupp.support_subset_singleton' - theorem finsupp.support_subset_singleton - theorem finsupp.support_sum - theorem finsupp.support_sum_eq_bUnion - theorem finsupp.support_update - theorem finsupp.support_update_ne_zero - theorem finsupp.support_update_zero - theorem finsupp.support_zero - theorem finsupp.support_zip_with - theorem finsupp.unique_ext - theorem finsupp.unique_ext_iff - theorem finsupp.unique_single - theorem finsupp.unique_single_eq_iff - def finsupp.update - theorem finsupp.update_eq_erase_add_single - theorem finsupp.update_eq_single_add_erase - theorem finsupp.update_eq_sub_add_single - theorem finsupp.update_self - theorem finsupp.zero_apply - theorem finsupp.zero_update - def finsupp.zip_with - theorem finsupp.zip_with_apply - structure finsupp - theorem map_finsupp_prod - theorem monoid_hom.coe_finsupp_prod - theorem monoid_hom.finsupp_prod_apply - theorem submonoid_class.finsupp_prod_mem Modified src/data/finsupp/big_operators.lean Modified src/data/finsupp/default.lean Added src/data/finsupp/defs.lean + def equiv.finsupp_unique + theorem finsupp.add_apply + theorem finsupp.add_closure_set_of_eq_single + theorem finsupp.add_hom_ext' + theorem finsupp.add_hom_ext + def finsupp.apply_add_hom + theorem finsupp.card_support_eq_one' + theorem finsupp.card_support_eq_one + theorem finsupp.card_support_eq_zero + theorem finsupp.card_support_le_one' + theorem finsupp.card_support_le_one + theorem finsupp.coe_add + theorem finsupp.coe_eq_zero + theorem finsupp.coe_fn_inj + theorem finsupp.coe_fn_injective + theorem finsupp.coe_mk + theorem finsupp.coe_neg + theorem finsupp.coe_sub + theorem finsupp.coe_update + theorem finsupp.coe_zero + theorem finsupp.congr_fun + def finsupp.emb_domain.add_monoid_hom + def finsupp.emb_domain + theorem finsupp.emb_domain_add + theorem finsupp.emb_domain_apply + theorem finsupp.emb_domain_eq_zero + theorem finsupp.emb_domain_inj + theorem finsupp.emb_domain_injective + theorem finsupp.emb_domain_map_range + theorem finsupp.emb_domain_notin_range + theorem finsupp.emb_domain_single + theorem finsupp.emb_domain_zero + theorem finsupp.eq_single_iff + def finsupp.equiv_fun_on_fintype + theorem finsupp.equiv_fun_on_fintype_single + theorem finsupp.equiv_fun_on_fintype_symm_coe + theorem finsupp.equiv_fun_on_fintype_symm_single + def finsupp.erase + theorem finsupp.erase_add + def finsupp.erase_add_hom + theorem finsupp.erase_add_single + theorem finsupp.erase_eq_sub_single + theorem finsupp.erase_ne + theorem finsupp.erase_of_not_mem_support + theorem finsupp.erase_same + theorem finsupp.erase_single + theorem finsupp.erase_single_ne + theorem finsupp.erase_zero + theorem finsupp.ext + theorem finsupp.ext_iff' + theorem finsupp.ext_iff + theorem finsupp.finite_support + theorem finsupp.fun_support_eq + theorem finsupp.induction_linear + theorem finsupp.induction₂ + def finsupp.map_range + theorem finsupp.map_range_add + theorem finsupp.map_range_apply + theorem finsupp.map_range_comp + theorem finsupp.map_range_id + theorem finsupp.map_range_single + theorem finsupp.map_range_zero + theorem finsupp.mem_support_iff + theorem finsupp.mem_support_on_finset + theorem finsupp.mem_support_single + theorem finsupp.mul_hom_ext' + theorem finsupp.mul_hom_ext + theorem finsupp.neg_apply + theorem finsupp.nonzero_iff_exists + theorem finsupp.not_mem_support_iff + theorem finsupp.of_support_finite_coe + def finsupp.on_finset + theorem finsupp.on_finset_apply + theorem finsupp.range_single_subset + def finsupp.single + theorem finsupp.single_add + theorem finsupp.single_add_erase + def finsupp.single_add_hom + theorem finsupp.single_add_single_eq_single_add_single + theorem finsupp.single_apply + theorem finsupp.single_apply_eq_zero + theorem finsupp.single_apply_mem + theorem finsupp.single_apply_ne_zero + theorem finsupp.single_eq_indicator + theorem finsupp.single_eq_of_ne + theorem finsupp.single_eq_pi_single + theorem finsupp.single_eq_same + theorem finsupp.single_eq_single_iff + theorem finsupp.single_eq_update + theorem finsupp.single_eq_zero + theorem finsupp.single_injective + theorem finsupp.single_left_inj + theorem finsupp.single_left_injective + theorem finsupp.single_of_emb_domain_single + theorem finsupp.single_of_single_apply + theorem finsupp.single_swap + theorem finsupp.single_zero + theorem finsupp.sub_apply + theorem finsupp.support_add + theorem finsupp.support_add_eq + theorem finsupp.support_emb_domain + theorem finsupp.support_eq_empty + theorem finsupp.support_eq_singleton' + theorem finsupp.support_eq_singleton + theorem finsupp.support_erase + theorem finsupp.support_map_range + theorem finsupp.support_map_range_of_injective + theorem finsupp.support_neg + theorem finsupp.support_nonempty_iff + theorem finsupp.support_on_finset + theorem finsupp.support_on_finset_subset + theorem finsupp.support_single_disjoint + theorem finsupp.support_single_ne_bot + theorem finsupp.support_single_ne_zero + theorem finsupp.support_single_subset + theorem finsupp.support_sub + theorem finsupp.support_subset_iff + theorem finsupp.support_subset_singleton' + theorem finsupp.support_subset_singleton + theorem finsupp.support_update + theorem finsupp.support_update_ne_zero + theorem finsupp.support_update_zero + theorem finsupp.support_zero + theorem finsupp.support_zip_with + theorem finsupp.unique_ext + theorem finsupp.unique_ext_iff + theorem finsupp.unique_single + theorem finsupp.unique_single_eq_iff + def finsupp.update + theorem finsupp.update_eq_erase_add_single + theorem finsupp.update_eq_single_add_erase + theorem finsupp.update_eq_sub_add_single + theorem finsupp.update_self + theorem finsupp.zero_apply + theorem finsupp.zero_update + def finsupp.zip_with + theorem finsupp.zip_with_apply + structure finsupp Modified src/data/finsupp/fin.lean Modified src/data/finsupp/indicator.lean Modified src/data/finsupp/multiset.lean Modified src/data/finsupp/order.lean Modified src/data/finsupp/pointwise.lean Modified src/group_theory/free_abelian_group_finsupp.lean Modified src/linear_algebra/finsupp.lean Modified src/set_theory/cardinal/basic.lean Modified src/testing/slim_check/functions.lean Modified test/conv/apply_congr.lean 2022-08-19 19:30:31 0fc5496 feat(linear_algebra/matrix): LDL Decomposition (#15220) Any positive definite matrix `S` can be decomposed as `S = LDLᴴ` where `L` is a lower-triangular matrix and `D` is a diagonal matrix. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.mul_mul_apply Modified src/linear_algebra/matrix/basis.lean + def basis.invertible_to_matrix Added src/linear_algebra/matrix/ldl.lean + theorem LDL.diag_eq_lower_inv_conj + theorem LDL.lower_conj_diag + theorem LDL.lower_inv_eq_gram_schmidt_basis + theorem LDL.lower_inv_orthogonal + theorem LDL.lower_inv_triangular Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.inv_mul_eq_iff_eq_mul_of_invertible + def matrix.invertible__of_invertible_transpose + def matrix.invertible_of_invertible_conj_transpose + theorem matrix.is_unit_of_left_inverse + theorem matrix.is_unit_of_right_inverse + theorem matrix.mul_inv_eq_iff_eq_mul_of_invertible Modified src/linear_algebra/matrix/pos_def.lean + theorem matrix.pos_def.transpose 2022-08-19 16:44:06 aaf7dc2 chore(data/multiset/basic): rename theorems, mark as `simp` (#15883) This PR does the following: - rename `coe_nil_eq_zero` to `coe_nil`. - rename `singleton_eq_cons` to `cons_zero`, flip direction, mark `simp` (we prefer `{a}` over `a ::ₘ 0`). - add lemmas `coe_singleton` and `singleton_eq_cons_iff`. - ditch `singleton_coe` in favor of `cons_zero` and `coe_singleton`. - mark `singleton_add`, `singleton_inj`, `nodup_singleton` as `simp`. - unmark `count_singleton_self` as `simp`, since it can now be solved automatically via `count_eq_one_of_mem`. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/data/finset/basic.lean Modified src/data/finset/noncomm_prod.lean Modified src/data/fintype/basic.lean Modified src/data/multiset/basic.lean + theorem multiset.coe_nil - theorem multiset.coe_nil_eq_zero + theorem multiset.coe_singleton + theorem multiset.cons_zero +/- theorem multiset.count_singleton_self +/- theorem multiset.singleton_add - theorem multiset.singleton_coe - theorem multiset.singleton_eq_cons + theorem multiset.singleton_eq_cons_iff +/- theorem multiset.singleton_inj Modified src/data/multiset/nodup.lean +/- theorem multiset.nodup_singleton Modified src/data/polynomial/ring_division.lean Modified src/data/sym/sym2.lean Modified src/group_theory/perm/cycle/concrete.lean Modified src/group_theory/perm/cycle/type.lean Modified src/ring_theory/ideal/operations.lean 2022-08-19 13:53:41 efd9dd3 feat(data/finsupp/basic): more lemmas on `alist.lookup_finsupp` (#15875) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem alist.empty_lookup_finsupp + theorem alist.insert_lookup_finsupp + theorem alist.lookup_finsupp_eq_iff_of_ne_zero + theorem alist.lookup_finsupp_eq_zero_iff + theorem alist.singleton_lookup_finsupp - theorem alist.to_alist_lookup_finsupp + theorem finsupp.to_alist_lookup_finsupp + theorem finsupp.zero_update Modified src/data/list/alist.lean + theorem alist.insert_empty +/- theorem alist.not_mem_empty 2022-08-19 13:53:40 34d6de4 feat(src/tactic/rcases): rsuffices(I) = suffices + obtain (+ resetI) (#15735) ESTIMATED CHANGES Modified src/tactic/cache.lean Modified src/tactic/rcases.lean Modified test/rcases.lean 2022-08-19 11:48:03 be87e25 feat(topology/algebra): subgroup.is_closed_of_discrete (#16130) ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean 2022-08-19 11:48:02 6a966c8 chore(geometry/manifold/complex): extract some theory of locally constant functions (#16019) After #16015, I realised that we might as well deduce the rest of the lemmas in the file from the `is_locally_constant` lemma by appealing to general theory about locally constant functions. I have added three such lemmas to the general theory of locally constant functions: * `is_locally_constant.apply_eq_of_preconnected_space` * `is_locally_constant.eq_const` * `is_locally_constant.exists_eq_const` All are direct copies of the lemmas for the bundled version (`locally_constant`). Then I reworked the holomorphic function theory to pass through these, which cuts a few lines from the file. ESTIMATED CHANGES Modified src/geometry/manifold/complex.lean +/- theorem mdifferentiable.apply_eq_of_compact_space - theorem mdifferentiable.apply_eq_of_is_compact +/- theorem mdifferentiable.exists_eq_const_of_compact_space Modified src/topology/locally_constant/basic.lean + theorem is_locally_constant.apply_eq_of_preconnected_space + theorem is_locally_constant.eq_const + theorem is_locally_constant.exists_eq_const 2022-08-19 11:48:00 4dd837d refactor(topology/sequences): redefine `is_seq_closed`, define Fréchet-Urysohn spaces (#15953) * redefine `is_seq_closed` as "the set contains every limit of a sequence of points from this set"; * delete `is_seq_closed_of_def` and `is_seq_closed.mem_of_tendsto`, because now we use this property as the definition; * rename `sequential_space` to `frechet_urysohn_space`, add new `sequential_space`; this way our definitions agree with textbooks. ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean Modified src/topology/sequences.lean +/- theorem continuous_iff_seq_continuous + theorem frechet_urysohn_space.of_seq_tendsto_imp_tendsto - theorem is_closed.is_seq_closed - theorem is_seq_closed.mem_of_tendsto + theorem is_seq_closed.preimage + theorem is_seq_closed.seq_closure_eq +/- def is_seq_closed + theorem is_seq_closed_iff +/- theorem is_seq_closed_iff_is_closed - theorem is_seq_closed_of_def + theorem is_seq_closed_of_seq_closure_eq +/- theorem mem_closure_iff_seq_limit + theorem quotient_map.sequential_space + theorem seq_closure_eq_closure +/- theorem seq_closure_subset_closure +/- theorem subset_seq_closure + theorem tendsto_nhds_iff_seq_tendsto 2022-08-19 11:47:59 54b4573 feat(data/int/modeq): add modeq_iff_add_fac, modeq_add_fac_self (#15816) Adding some API for int.modeq ESTIMATED CHANGES Modified src/data/int/modeq.lean + theorem int.modeq_add_fac_self + theorem int.modeq_iff_add_fac 2022-08-19 09:24:18 a07d03a chore(analysis/calculus/cont_diff): Add two missing cont_diff_on lemmas (#16108) Adds two lemmas that are immediate consequences of `cont_diff_on.of_le`. Names and proofs are taken verbatim from the corresponding `cont_diff` lemmas. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff_on.of_succ + theorem cont_diff_on.one_of_succ 2022-08-19 09:24:17 4e861f2 feat(group_theory/submonoid/basic): weaken assumptions for `has_one` instance to `one_mem_class` for `set_like` subobjects (#16104) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/direct_sum/basic.lean Modified src/algebra/direct_sum/decomposition.lean Modified src/algebra/module/injective.lean Modified src/field_theory/intermediate_field.lean Modified src/group_theory/submonoid/operations.lean + theorem one_mem_class.coe_eq_one + theorem one_mem_class.coe_one + theorem one_mem_class.one_def - theorem submonoid_class.coe_eq_one - theorem submonoid_class.coe_one - theorem submonoid_class.one_def Modified src/ring_theory/graded_algebra/basic.lean Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean Modified src/ring_theory/polynomial/basic.lean 2022-08-19 07:12:41 b4a51d9 feat(topology/algebra/module): add basic definitions for `linear_pmap` in topological vector spaces (#15479) We define closed, closable operators, the closure, and cores. All these definitions are valid on topological vector spaces. ESTIMATED CHANGES Modified docs/references.bib Modified src/linear_algebra/linear_pmap.lean + def linear_pmap.dom_restrict + theorem linear_pmap.dom_restrict_apply + theorem linear_pmap.dom_restrict_domain + theorem linear_pmap.dom_restrict_le + theorem linear_pmap.le_graph_iff + theorem linear_pmap.le_graph_of_le + theorem linear_pmap.mem_domain_of_mem_graph Added src/topology/algebra/module/linear_pmap.lean + def linear_pmap.closure + theorem linear_pmap.closure_def' + theorem linear_pmap.closure_def + theorem linear_pmap.closure_has_core + structure linear_pmap.has_core + theorem linear_pmap.has_core_def + theorem linear_pmap.is_closable.closure_is_closable + theorem linear_pmap.is_closable.closure_is_closed + theorem linear_pmap.is_closable.closure_mono + theorem linear_pmap.is_closable.exists_unique + theorem linear_pmap.is_closable.graph_closure_eq_closure_graph + theorem linear_pmap.is_closable.le_is_closable + def linear_pmap.is_closable + theorem linear_pmap.is_closable_iff_exists_closed_extension + theorem linear_pmap.is_closed.is_closable + def linear_pmap.is_closed + theorem linear_pmap.le_closure 2022-08-19 05:36:38 2faca70 chore(scripts): update nolints.txt (#16146) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-19 03:19:04 33f4d61 feat(algebra/algebra/basic):add `alg_hom.prod` (#16116) This adds `alg_hom.prod` to go with `alg_hom.fst` and `alg_hom.snd`. It was noticed to be missing during #16089. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.coe_prod + theorem alg_hom.fst_prod + def alg_hom.prod + def alg_hom.prod_equiv + theorem alg_hom.prod_fst_snd + theorem alg_hom.snd_prod 2022-08-18 21:20:23 34020e5 chore(linear_algebra/basic): generalize `submodule.map`, `comap`, etc to `semilinear_map_class` (#16105) This PR generalizes `submodule.map`, `submodule.comap`, `linear_map.ker` and `linear_map.range` such that they are defined for any morphism class satisfying `semilinear_map_class` (they are currently hardcoded for `linear_map`s). The namespaces have been left as is. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/homology/Module.lean Modified src/algebra/module/injective.lean Modified src/algebra/module/submodule/pointwise.lean Modified src/algebra/module/torsion.lean +/- def submodule.torsion_by Modified src/algebra/monoid_algebra/grading.lean +/- theorem add_monoid_algebra.grade_eq_lsingle_range Modified src/analysis/calculus/fderiv.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/projection.lean + theorem linear_isometry.map_orthogonal_projection' Modified src/analysis/normed_space/linear_isometry.lean +/- theorem linear_isometry.is_complete_image_iff + theorem linear_isometry.is_complete_map_iff' +/- theorem linear_isometry.nnnorm_map +/- theorem linear_isometry.norm_map +/- theorem linear_isometry_equiv.nnnorm_map Modified src/linear_algebra/basic.lean +/- theorem linear_map.comap_injective +/- theorem linear_map.comap_le_comap_iff +/- theorem linear_map.disjoint_ker +/- def linear_map.ker +/- theorem linear_map.ker_eq_bot' +/- theorem linear_map.ker_eq_bot_of_injective +/- theorem linear_map.le_ker_iff_map +/- theorem linear_map.map_coe_ker +/- theorem linear_map.map_le_range +/- theorem linear_map.mem_ker +/- def linear_map.range +/- theorem linear_map.range_coe +/- theorem linear_map.range_eq_top +/- theorem linear_map.range_le_iff_comap +/- theorem submodule.apply_coe_mem_map +/- theorem submodule.coe_equiv_map_of_injective_apply +/- def submodule.comap +/- theorem submodule.comap_bot +/- theorem submodule.comap_coe +/- theorem submodule.comap_id +/- theorem submodule.comap_inf +/- theorem submodule.comap_infi +/- theorem submodule.comap_mono +/- theorem submodule.comap_top +/- theorem submodule.gc_map_comap +/- theorem submodule.le_comap_map +/- def submodule.map +/- theorem submodule.map_bot +/- theorem submodule.map_coe +/- theorem submodule.map_comap_le +/- theorem submodule.map_inf_eq_map_inf_comap +/- theorem submodule.map_le_iff_le_comap +/- theorem submodule.map_mono +/- theorem submodule.map_sup +/- theorem submodule.map_supr +/- theorem submodule.map_top +/- theorem submodule.mem_comap +/- theorem submodule.mem_map +/- theorem submodule.mem_map_of_mem Modified src/linear_algebra/basis.lean Modified src/linear_algebra/clifford_algebra/conjugation.lean +/- theorem clifford_algebra.even_odd_comap_reverse +/- theorem clifford_algebra.even_odd_map_reverse +/- theorem clifford_algebra.ι_range_comap_involute +/- theorem clifford_algebra.ι_range_comap_reverse +/- theorem clifford_algebra.ι_range_map_involute +/- theorem clifford_algebra.ι_range_map_reverse Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/linear_algebra/exterior_algebra/basic.lean +/- theorem exterior_algebra.ι_range_disjoint_one Modified src/linear_algebra/exterior_algebra/grading.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/isomorphisms.lean +/- def submodule.quotient_quotient_equiv_quotient_aux Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/pi.lean +/- theorem linear_map.infi_ker_proj +/- theorem submodule.binfi_comap_proj +/- theorem submodule.infi_comap_proj Modified src/linear_algebra/prod.lean Modified src/linear_algebra/projection.lean Modified src/linear_algebra/quotient.lean +/- theorem submodule.mapq_id Modified src/linear_algebra/span.lean +/- theorem linear_map.map_eq_top_iff +/- theorem linear_map.map_injective +/- theorem linear_map.map_le_map_iff' +/- theorem submodule.comap_map_eq +/- theorem submodule.comap_map_eq_self Modified src/linear_algebra/std_basis.lean Modified src/linear_algebra/tensor_algebra/basic.lean +/- theorem tensor_algebra.ι_range_disjoint_one Modified src/ring_theory/artinian.lean Modified src/ring_theory/ideal/cotangent.lean Modified src/ring_theory/ideal/operations.lean +/- theorem submodule.mem_annihilator' +/- theorem submodule.mem_colon' Modified src/ring_theory/noetherian.lean Modified src/ring_theory/rees_algebra.lean 2022-08-18 17:58:12 f651d75 chore(data/polynomial/derivative): merge iterated_deriv.lean into derivative.lean (#16022) iterated_deriv.lean was not used anywhere, and derivative.lean already had independent variants of several of the lemmas there, without the `iterated_deriv` indirecion. It seems better to consolidate these results. ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean + theorem polynomial.coeff_iterate_derivative_as_prod_Ico + theorem polynomial.coeff_iterate_derivative_as_prod_range + theorem polynomial.iterate_derivative_C + theorem polynomial.iterate_derivative_X + theorem polynomial.iterate_derivative_mul + theorem polynomial.iterate_derivative_one Deleted src/data/polynomial/iterated_deriv.lean - theorem polynomial.coeff_iterated_deriv_as_prod_Ico - theorem polynomial.coeff_iterated_deriv_as_prod_range - def polynomial.iterated_deriv - theorem polynomial.iterated_deriv_C - theorem polynomial.iterated_deriv_C_zero - theorem polynomial.iterated_deriv_X - theorem polynomial.iterated_deriv_X_one - theorem polynomial.iterated_deriv_X_zero - theorem polynomial.iterated_deriv_add - theorem polynomial.iterated_deriv_eq_zero_of_nat_degree_lt - theorem polynomial.iterated_deriv_mul - theorem polynomial.iterated_deriv_neg - theorem polynomial.iterated_deriv_one - theorem polynomial.iterated_deriv_one_zero - theorem polynomial.iterated_deriv_smul - theorem polynomial.iterated_deriv_sub - theorem polynomial.iterated_deriv_succ - theorem polynomial.iterated_deriv_zero_left - theorem polynomial.iterated_deriv_zero_right 2022-08-18 15:12:37 2cf5d19 chore(algebra/*): Fix lint (#16128) Satisfy the `fintype_finite` and `to_additive_doc` linters. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean Modified src/algebra/big_operators/finprod.lean +/- theorem finprod_mem_Union Modified src/algebra/big_operators/pi.lean +/- theorem add_monoid_hom.functions_ext' +/- theorem add_monoid_hom.functions_ext +/- theorem ring_hom.functions_ext Modified src/algebra/category/Group/limits.lean Modified src/algebra/char_p/basic.lean +/- theorem is_square_of_char_two' Modified src/algebra/hom/freiman.lean Modified src/algebra/order/group.lean Modified src/algebra/order/lattice_group.lean 2022-08-18 15:12:35 e53226c chore(probability/martingale/upcrossing): remove duplicate lemma (#16125) ESTIMATED CHANGES Modified src/probability/martingale/upcrossing.lean - theorem measure_theory.mul_integral_upcrossings_before_le_integral_pos_part_aux1 - theorem measure_theory.mul_integral_upcrossings_before_le_integral_pos_part_aux2 + theorem measure_theory.mul_integral_upcrossings_before_le_integral_pos_part_aux 2022-08-18 13:46:24 14c52e9 feat(data/set/intervals/instances): algebraic instances for unit intervals (#15712) Proving `cancel_comm_monoid_with_zero (Icc 0 1)`, `comm_semigroup (Ico 0 1)`, `comm_monoid (Ioc 0 1)`, and `comm_semigroup (Ioo 0 1)` for suitably structured underlying type `α`. ESTIMATED CHANGES Added src/data/set/intervals/instances.lean + theorem set.Icc.coe_eq_one + theorem set.Icc.coe_eq_zero + theorem set.Icc.coe_le_one + theorem set.Icc.coe_mul + theorem set.Icc.coe_ne_one + theorem set.Icc.coe_ne_zero + theorem set.Icc.coe_nonneg + theorem set.Icc.coe_one + theorem set.Icc.coe_pow + theorem set.Icc.coe_zero + theorem set.Icc.le_one + theorem set.Icc.mem_iff_one_sub_mem + theorem set.Icc.mk_one + theorem set.Icc.mk_zero + theorem set.Icc.mul_le_left + theorem set.Icc.mul_le_right + theorem set.Icc.nonneg + theorem set.Icc.one_sub_le_one + theorem set.Icc.one_sub_mem + theorem set.Icc.one_sub_nonneg + theorem set.Ico.coe_eq_zero + theorem set.Ico.coe_lt_one + theorem set.Ico.coe_mul + theorem set.Ico.coe_ne_zero + theorem set.Ico.coe_nonneg + theorem set.Ico.coe_zero + theorem set.Ico.mk_zero + theorem set.Ico.nonneg + theorem set.Ioc.coe_eq_one + theorem set.Ioc.coe_le_one + theorem set.Ioc.coe_mul + theorem set.Ioc.coe_ne_one + theorem set.Ioc.coe_one + theorem set.Ioc.coe_pos + theorem set.Ioc.coe_pow + theorem set.Ioc.le_one + theorem set.Ioc.mk_one + theorem set.Ioo.coe_mul + theorem set.Ioo.lt_one + theorem set.Ioo.mem_iff_one_sub_mem + theorem set.Ioo.one_minus_lt_one + theorem set.Ioo.one_minus_pos + theorem set.Ioo.one_sub_mem + theorem set.Ioo.pos Modified src/topology/unit_interval.lean - theorem unit_interval.coe_eq_one - theorem unit_interval.coe_eq_zero - theorem unit_interval.coe_mul - theorem unit_interval.coe_one - theorem unit_interval.coe_zero - theorem unit_interval.mk_one - theorem unit_interval.mk_zero 2022-08-18 11:42:31 55e2dfd chore(data.matrix): rename `minor` to `submatrix` (#16101) As discussed on Zulip: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/matrix.2Eminor.20wrong.20terminology.3F This is an alternative to the previous plan to rename `minor` to `on` in #16063. Moreover, I have adapted some documentation in `src/linear_algebra/matrix/adjugate.lean` that also used the term "minor" in the wrong way. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/lie/classical.lean Modified src/algebra/lie/matrix.lean Modified src/data/matrix/basic.lean - theorem matrix.conj_transpose_minor + theorem matrix.conj_transpose_submatrix - theorem matrix.diag_minor + theorem matrix.diag_submatrix - def matrix.minor - theorem matrix.minor_add - theorem matrix.minor_apply - theorem matrix.minor_diagonal - theorem matrix.minor_diagonal_embedding - theorem matrix.minor_diagonal_equiv - theorem matrix.minor_id_id - theorem matrix.minor_map - theorem matrix.minor_minor - theorem matrix.minor_mul - theorem matrix.minor_mul_equiv - theorem matrix.minor_mul_transpose_minor - theorem matrix.minor_neg - theorem matrix.minor_one - theorem matrix.minor_one_embedding - theorem matrix.minor_one_equiv - theorem matrix.minor_smul - theorem matrix.minor_sub - theorem matrix.minor_zero - theorem matrix.mul_minor_one + theorem matrix.mul_submatrix_one - theorem matrix.one_minor_mul + theorem matrix.one_submatrix_mul + def matrix.submatrix + theorem matrix.submatrix_add + theorem matrix.submatrix_apply + theorem matrix.submatrix_diagonal + theorem matrix.submatrix_diagonal_embedding + theorem matrix.submatrix_diagonal_equiv + theorem matrix.submatrix_id_id + theorem matrix.submatrix_map + theorem matrix.submatrix_mul + theorem matrix.submatrix_mul_equiv + theorem matrix.submatrix_mul_transpose_submatrix + theorem matrix.submatrix_neg + theorem matrix.submatrix_one + theorem matrix.submatrix_one_embedding + theorem matrix.submatrix_one_equiv + theorem matrix.submatrix_smul + theorem matrix.submatrix_sub + theorem matrix.submatrix_submatrix + theorem matrix.submatrix_zero - theorem matrix.transpose_minor + theorem matrix.transpose_submatrix Modified src/data/matrix/block.lean - theorem matrix.block_diagonal'_minor_eq_block_diagonal + theorem matrix.block_diagonal'_submatrix_eq_block_diagonal - theorem matrix.from_blocks_minor_sum_swap_left - theorem matrix.from_blocks_minor_sum_swap_right - theorem matrix.from_blocks_minor_sum_swap_sum_swap + theorem matrix.from_blocks_submatrix_sum_swap_left + theorem matrix.from_blocks_submatrix_sum_swap_right + theorem matrix.from_blocks_submatrix_sum_swap_sum_swap Modified src/data/matrix/notation.lean - theorem matrix.minor_cons_row - theorem matrix.minor_empty + theorem matrix.submatrix_cons_row + theorem matrix.submatrix_empty Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/basis.lean Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/matrix/determinant.lean - theorem matrix.det_minor_equiv_self + theorem matrix.det_submatrix_equiv_self Modified src/linear_algebra/matrix/hermitian.lean - theorem matrix.is_hermitian.minor + theorem matrix.is_hermitian.submatrix Modified src/linear_algebra/matrix/is_diag.lean - theorem matrix.is_diag.minor + theorem matrix.is_diag.submatrix Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/matrix/reindex.lean Modified src/linear_algebra/matrix/symmetric.lean - theorem matrix.is_symm.minor + theorem matrix.is_symm.submatrix Modified src/linear_algebra/matrix/transvection.lean Modified src/linear_algebra/vandermonde.lean Modified src/ring_theory/trace.lean Modified src/topology/instances/matrix.lean - theorem continuous.matrix_minor + theorem continuous.matrix_submatrix Modified test/matrix.lean 2022-08-18 09:39:28 eba35e3 feat(ring_theory/etale): Condition for a quotient of a formally smooth algebra to be formally smooth. (#15842) ESTIMATED CHANGES Modified src/ring_theory/etale.lean + theorem algebra.formally_smooth.comp_lift_of_surjective + theorem algebra.formally_smooth.iff_split_surjection + def algebra.formally_smooth.lift_of_surjective + theorem algebra.formally_smooth.lift_of_surjective_apply + theorem algebra.formally_smooth.of_split Modified src/ring_theory/ideal/cotangent.lean + theorem alg_hom.ker_ker_sqare_lift + def alg_hom.ker_square_lift + theorem ideal.cotangent_ideal_square Modified src/ring_theory/ideal/operations.lean + theorem ideal.le_comap_pow + theorem ideal.pow_mono + def ideal.quotient.liftₐ + theorem ideal.quotient.liftₐ_apply + theorem ideal.quotient.liftₐ_comp 2022-08-18 03:35:13 881d1ce chore(scripts): update nolints.txt (#16117) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-18 01:15:12 32258e9 chore(number_theory/cyclotomic/primitive_roots): generalisation linter (#16013) ESTIMATED CHANGES Modified src/number_theory/cyclotomic/primitive_roots.lean +/- theorem is_primitive_root.norm_eq_neg_one_pow +/- theorem is_primitive_root.norm_eq_one +/- theorem is_primitive_root.norm_of_cyclotomic_irreducible 2022-08-17 22:03:52 26c2c38 feat(field_theory/intermediate_field): Add `alg_hom.field_range` (#16078) This PR adds `alg_hom.field_range` (which produces an `intermediate_field` rather than a `subalgebra`) and copies over the API from `ring_hom.field_range` (which produces a `subfield` rather than a `subring`). ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem alg_hom.field_range_eq_map + theorem alg_hom.map_field_range Modified src/field_theory/intermediate_field.lean + theorem alg_hom.coe_field_range + def alg_hom.field_range + theorem alg_hom.field_range_to_subfield + theorem alg_hom.mem_field_range 2022-08-17 20:57:35 551079b feat(field_theory/normal): A compositum of normal extensions is normal (#16076) This PR proves that a compositum of normal extensions is normal. The proof uses a technical lemma `exists_finset_of_mem_supr''` to reduce to the case of a finite compositum of finite normal extensions (i.e., a finite compositum of splitting fields), which is proved in `is_splitting_field_supr`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean +/- theorem intermediate_field.adjoin_root_set_is_splitting_field + theorem intermediate_field.exists_finset_of_mem_supr'' +/- theorem intermediate_field.is_splitting_field_iff + theorem intermediate_field.is_splitting_field_supr Modified src/field_theory/normal.lean 2022-08-17 19:34:43 35f4941 chore(ring_theory/graded_algebra/basic): golf `graded_ring.proj_zero_ring_hom` (#16081) use `direct_sum.decomposition.induction_on` instead of manually writing out inductions ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/basic.lean 2022-08-17 19:34:42 ce566b3 feat(algebraic_geometry/morphisms): Construct morphism properties from ring homomorphism properties (#16059) ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/ring_hom_properties.lean + theorem algebraic_geometry.Scheme_restrict_basic_open_of_localization_preserves + def algebraic_geometry.affine_locally + theorem algebraic_geometry.affine_locally_iff_affine_opens_le + theorem algebraic_geometry.affine_locally_respects_iso + theorem algebraic_geometry.is_open_immersion_comp_of_source_affine_locally + def algebraic_geometry.source_affine_locally + theorem algebraic_geometry.source_affine_locally_is_local + theorem algebraic_geometry.source_affine_locally_of_source_open_cover_aux + theorem algebraic_geometry.source_affine_locally_respects_iso + theorem ring_hom.property_is_local.affine_locally_of_is_open_immersion + theorem ring_hom.property_is_local.affine_locally_stable_under_composition + theorem ring_hom.property_is_local.affine_open_cover_iff + theorem ring_hom.property_is_local.affine_open_cover_tfae + theorem ring_hom.property_is_local.is_local_affine_locally + theorem ring_hom.property_is_local.is_local_source_affine_locally + theorem ring_hom.property_is_local.open_cover_tfae + theorem ring_hom.property_is_local.source_affine_locally_comp_of_is_open_immersion + theorem ring_hom.property_is_local.source_affine_locally_of_source_open_cover + theorem ring_hom.property_is_local.source_affine_open_cover_iff + theorem ring_hom.property_is_local.source_open_cover_iff 2022-08-17 19:34:39 61c8f89 feat(algebra/order/complete.field): add real.ring_hom_eq_id (#16049) Proves that there are no nontrivial ring homomorphism from ℝ to ℝ. This is motivated by a remark of K. Buzzard (see https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Continuous.20complex.20ring.20hom/near/293264751). It looks like it should be a direct consequence of the results of ```algebra/order/complete.field``` but I was not able to see how to do it more directly. ESTIMATED CHANGES Modified src/algebra/order/complete_field.lean + theorem ring_hom_monotone 2022-08-17 19:34:37 86db394 feat(number_theory): fundamental identity of ramification index and inertia degree (#12287) This PR proves the fundamental identity of ramification index and inertia degree: Let `p` be a prime in a Dedekind domain `R`, `S` the integral closure of `R` in some finite field extension `L` of `K = Frac(R)`, then for `P` ranging over the primes lying over `p`, `Σ P, e P * f P = [L : K]`. ESTIMATED CHANGES Modified src/number_theory/function_field.lean Modified src/number_theory/number_field.lean Modified src/number_theory/ramification_inertia.lean + theorem ideal.factors.finrank_pow_ramification_idx + theorem ideal.factors.inertia_deg_ne_zero + theorem ideal.factors.ne_bot + theorem ideal.factors.pi_quotient_equiv_map + theorem ideal.factors.pi_quotient_equiv_mk + theorem ideal.factors.ramification_idx_ne_zero + theorem ideal.le_comap_pow_ramification_idx + theorem ideal.sum_ramification_inertia 2022-08-17 17:39:26 40ac1b2 feat(ring_theory/ring_hom/integral): Integral extensions are stable under base change. (#16094) redoes #15806 ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral.tmul Modified src/ring_theory/polynomial/scale_roots.lean + theorem polynomial.map_scale_roots + theorem polynomial.scale_roots_eval₂_mul Added src/ring_theory/ring_hom/integral.lean + theorem ring_hom.is_integral_respects_iso + theorem ring_hom.is_integral_stable_under_base_change + theorem ring_hom.is_integral_stable_under_composition 2022-08-17 17:39:24 ffb51d3 feat(linear_algebra/clifford_algebra/basic): invertibility of vectors (#16077) I believe the reverse direction of `is_unit_ι_of_is_unit` is true, but it requires that `Q` is divisible by two and #11468. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean + theorem clifford_algebra.inv_of_ι + def clifford_algebra.invertible_ι_of_invertible + theorem clifford_algebra.is_unit_ι_of_is_unit 2022-08-17 17:39:23 ae132cd feat(topology/basic): intersection of a finset-indexed open sets is open (#16075) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem is_open_bInter_finset 2022-08-17 17:39:22 4a0c497 feat(algebraic_geometry/morphisms): Condition for target affine locally to be stable under base change (#16061) ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/basic.lean + theorem algebraic_geometry.affine_target_morphism_property.is_local.stable_under_base_change + theorem algebraic_geometry.affine_target_morphism_property.is_local.target_affine_locally_pullback_fst_of_right_of_stable_under_base_change + def algebraic_geometry.affine_target_morphism_property.stable_under_base_change 2022-08-17 14:53:37 b78cf50 chore(group_theory/*): Fix lint (#16095) Fix the linting errors coming from `fintype_finite` and `to_additive_doc` in the `group_theory` folder (+ some in `data` and `combinatorics`). Remove the decidability assumptions to `decidable_powers`/`decidable_zpowers` because they are already noncomputable. ## Lemma renames * `fintype` → `finite` in lemmas that used to assume `fintype` and now only assume `finite` * `fintype.induction_empty_option'` → `fintype.induction_empty_option` ESTIMATED CHANGES Modified archive/sensitivity.lean Modified docs/overview.yaml Modified src/algebra/char_p/basic.lean Modified src/combinatorics/hales_jewett.lean +/- theorem combinatorics.line.exists_mono_in_high_dimension Modified src/combinatorics/pigeonhole.lean Modified src/combinatorics/simple_graph/coloring.lean Modified src/computability/primrec.lean Modified src/data/W/basic.lean Modified src/data/finite/basic.lean - theorem finite.exists_max - theorem finite.exists_min - theorem finite.of_not_infinite - theorem infinite.of_not_finite - theorem not_finite - theorem not_finite_iff_infinite - theorem not_infinite_iff_finite Modified src/data/fintype/basic.lean + theorem finite.exists_infinite_fiber + theorem finite.exists_max + theorem finite.exists_min + theorem finite.exists_ne_map_eq_of_infinite + theorem finite.exists_univ_list + theorem finite.induction_empty_option + theorem finite.injective_iff_bijective + theorem finite.injective_iff_surjective + theorem finite.injective_iff_surjective_of_equiv + theorem finite.preorder.well_founded_gt + theorem finite.preorder.well_founded_lt + theorem finite.surjective_iff_bijective + theorem finite.well_founded_of_trans_of_irrefl +/- theorem fintype.card_compl_eq_card_compl - theorem fintype.exists_infinite_fiber - theorem fintype.exists_max - theorem fintype.exists_min - theorem fintype.exists_ne_map_eq_of_infinite - theorem fintype.exists_univ_list - theorem fintype.induction_empty_option' +/- theorem fintype.induction_empty_option - theorem fintype.injective_iff_bijective - theorem fintype.injective_iff_surjective - theorem fintype.injective_iff_surjective_of_equiv - theorem fintype.linear_order.is_well_order_gt - theorem fintype.linear_order.is_well_order_lt - theorem fintype.preorder.well_founded_gt - theorem fintype.preorder.well_founded_lt - theorem fintype.surjective_iff_bijective - theorem fintype.well_founded_of_trans_of_irrefl +/- theorem function.embedding.equiv_of_fintype_self_embedding_to_embedding + theorem not_finite + theorem not_finite_iff_infinite - theorem not_fintype + theorem not_infinite_iff_finite + theorem not_injective_infinite_finite - theorem not_injective_infinite_fintype + theorem not_surjective_finite_infinite - theorem not_surjective_fintype_infinite Modified src/data/fintype/card_embedding.lean Modified src/data/set_like/fintype.lean Modified src/data/zmod/defs.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/commutator.lean + theorem subgroup.commutator_pi_pi_of_finite - theorem subgroup.commutator_pi_pi_of_fintype Modified src/group_theory/exponent.lean + theorem monoid.exponent_ne_zero_of_finite - theorem monoid.exponent_ne_zero_of_fintype Modified src/group_theory/finite_abelian.lean +/- theorem add_comm_group.equiv_direct_sum_zmod_of_fintype Modified src/group_theory/finiteness.lean Modified src/group_theory/group_action/basic.lean - theorem mul_action.quotient_preimage_image_eq_union_mul Modified src/group_theory/group_action/group.lean +/- theorem mul_action.to_perm_injective Modified src/group_theory/group_action/opposite.lean Modified src/group_theory/group_action/pi.lean Modified src/group_theory/index.lean + theorem subgroup.index_ne_zero_of_finite - theorem subgroup.index_ne_zero_of_fintype +/- theorem subgroup.one_lt_index_of_ne_top Modified src/group_theory/nilpotent.lean +/- theorem is_p_group.is_nilpotent + theorem lower_central_series_pi_of_finite - theorem lower_central_series_pi_of_fintype +/- theorem nilpotency_class_pi Modified src/group_theory/noncomm_pi_coprod.lean +/- theorem monoid_hom.independent_range_of_coprime_order +/- theorem subgroup.independent_of_coprime_order Modified src/group_theory/order_of_element.lean +/- theorem exists_pow_eq_one +/- theorem exists_zpow_eq_one +/- theorem fin_equiv_powers_apply +/- theorem fin_equiv_powers_symm_apply +/- theorem fin_equiv_zpowers_apply +/- theorem fin_equiv_zpowers_symm_apply +/- theorem mem_powers_iff_mem_range_order_of +/- theorem mem_powers_iff_mem_zpowers +/- theorem mem_zpowers_iff_mem_range_order_of +/- theorem order_eq_card_powers +/- theorem order_eq_card_zpowers +/- theorem order_of_le_card_univ +/- theorem order_of_pos +/- theorem order_of_pow +/- theorem pow_card_eq_one +/- theorem powers_eq_zpowers +/- theorem powers_equiv_powers_apply +/- theorem sum_card_order_of_eq_card_pow_eq_one +/- theorem zpowers_equiv_zpowers_apply Modified src/group_theory/perm/cycle/basic.lean +/- theorem equiv.perm.cycle_induction_on +/- theorem equiv.perm.disjoint.is_conj_mul +/- theorem equiv.perm.is_cycle.exists_pow_eq +/- theorem equiv.perm.is_cycle.exists_pow_eq_one +/- theorem equiv.perm.is_cycle.is_cycle_pow_pos_of_lt_prime_order +/- theorem equiv.perm.is_cycle.pow_eq_one_iff +/- theorem equiv.perm.is_cycle.pow_eq_pow_iff +/- theorem equiv.perm.is_cycle.pow_iff +/- theorem equiv.perm.list_cycles_perm_list_cycles +/- theorem equiv.perm.mem_list_cycles_iff +/- theorem equiv.perm.same_cycle.nat'' +/- theorem equiv.perm.same_cycle.nat' Modified src/group_theory/perm/cycle/concrete.lean Modified src/group_theory/perm/sign.lean +/- theorem equiv.perm.closure_is_swap +/- theorem equiv.perm.mem_sum_congr_hom_range_of_perm_maps_to_inl +/- theorem equiv.perm.perm_inv_maps_to_iff_maps_to +/- theorem equiv.perm.perm_inv_maps_to_of_maps_to + theorem equiv.perm.perm_inv_on_of_perm_on_finite - theorem equiv.perm.perm_inv_on_of_perm_on_fintype +/- theorem equiv.perm.perm_maps_to_inl_iff_maps_to_inr +/- theorem equiv.perm.swap_induction_on' +/- theorem equiv.perm.swap_induction_on Modified src/group_theory/schur_zassenhaus.lean Modified src/group_theory/specific_groups/cyclic.lean +/- theorem is_cyclic.exists_monoid_generator Modified src/group_theory/subgroup/basic.lean +/- theorem monoid_hom.eq_on_closure +/- theorem subgroup.bot_or_exists_ne_one +/- theorem subgroup.bot_or_nontrivial +/- theorem subgroup.commute_of_normal_of_disjoint +/- theorem subgroup.map_injective_of_ker_le +/- theorem subgroup.mem_normalizer_fintype +/- theorem subgroup.pi_le_iff +/- theorem subgroup.pi_mem_of_mul_single_mem Modified src/group_theory/submonoid/basic.lean Modified src/group_theory/sylow.lean +/- theorem not_dvd_index_sylow +/- theorem sylow.characteristic_of_normal +/- def sylow.fixed_points_mul_left_cosets_equiv_quotient +/- theorem sylow.mem_fixed_points_mul_left_cosets_iff_mem_normalizer +/- theorem sylow.normal_of_all_max_subgroups_normal +/- theorem sylow.normal_of_normalizer_normal +/- theorem sylow.normalizer_normalizer +/- theorem sylow.orbit_eq_top +/- theorem sylow.subsingleton_of_normal Modified src/group_theory/torsion.lean + theorem add_monoid.is_torsion.module_of_finite - theorem add_monoid.is_torsion.module_of_fintype + theorem is_torsion_of_finite - theorem is_torsion_of_fintype Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/order/atoms.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/integral_domain.lean +/- theorem card_nth_roots_subgroup_units + theorem finite.is_field_of_domain - theorem fintype.is_field_of_domain +/- theorem is_cyclic_of_subgroup_is_domain + theorem mul_left_bijective_of_finite₀ - theorem mul_left_bijective_of_fintype₀ + theorem mul_right_bijective_of_finite₀ - theorem mul_right_bijective_of_fintype₀ Modified src/set_theory/cardinal/basic.lean Modified src/topology/noetherian_space.lean Modified src/topology/sets/opens.lean 2022-08-17 14:53:36 753ef90 feat(ring_theory/derivation): Construction of the module of Kähler differentials. (#16047) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + def derivation.lift_kaehler_differential + theorem derivation.lift_kaehler_differential_D + theorem derivation.lift_kaehler_differential_apply + theorem derivation.lift_kaehler_differential_comp + theorem derivation.lift_kaehler_differential_unique - def derivation_module.ideal - theorem derivation_module.one_smul_sub_smul_one_mem_ideal - theorem derivation_module.span_range_eq_ideal - theorem derivation_module.submodule_span_range_eq_ideal + def kaehler_differential.D + theorem kaehler_differential.D_apply + def kaehler_differential.D_linear_map + theorem kaehler_differential.D_linear_map_apply + theorem kaehler_differential.D_tensor_product_to + def kaehler_differential.ideal + def kaehler_differential.linear_map_equiv_derivation + theorem kaehler_differential.one_smul_sub_smul_one_mem_ideal + theorem kaehler_differential.span_range_derivation + theorem kaehler_differential.span_range_eq_ideal + theorem kaehler_differential.submodule_span_range_eq_ideal + theorem kaehler_differential.tensor_product_to_surjective + def kaehler_differential 2022-08-17 14:53:35 c30985d feat(group_theory/transfer): The transfer homomorphism `G →* center G` (#14520) This PR constructs the transfer homomorphism `G →* center G`. The bulk of this PR is a messy computation giving a criterion (`transfer_eq_pow`) for when the transfer homomorphism is the power map. The same criterion can be used to prove Burnside's transfer theorem. ESTIMATED CHANGES Modified src/group_theory/group_action/quotient.lean + theorem quotient_group.out'_conj_pow_minimal_period_mem Modified src/group_theory/transfer.lean + theorem monoid_hom.transfer_center_eq_pow + theorem monoid_hom.transfer_center_pow'_apply + theorem monoid_hom.transfer_center_pow_apply +/- theorem monoid_hom.transfer_def + theorem monoid_hom.transfer_eq_pow + theorem monoid_hom.transfer_eq_pow_aux + theorem monoid_hom.transfer_eq_prod_quotient_orbit_rel_zpowers_quot 2022-08-17 12:46:17 22dce61 feat(linear_algebra/linear_pmap): introduce notation (#15751) We add the notation `E →ₗ.[R] F` for `linear_pmap R E F` inspired by the notation for `pfun` and `linear_map`. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean +/- theorem exists_extension_of_le_sublinear +/- theorem riesz_extension.exists_top +/- theorem riesz_extension Modified src/analysis/normed_space/hahn_banach/separation.lean Modified src/linear_algebra/linear_pmap.lean +/- def linear_map.comp_pmap +/- theorem linear_map.comp_pmap_apply +/- def linear_map.to_pmap +/- def linear_pmap.cod_restrict +/- theorem linear_pmap.coe_smul +/- def linear_pmap.comp +/- def linear_pmap.coprod +/- theorem linear_pmap.coprod_apply +/- theorem linear_pmap.domain_sup +/- theorem linear_pmap.domain_sup_span_singleton +/- def linear_pmap.eq_locus +/- theorem linear_pmap.eq_of_eq_graph +/- theorem linear_pmap.eq_of_le_of_domain_eq +/- theorem linear_pmap.ext +/- theorem linear_pmap.ext_iff +/- def linear_pmap.graph +/- theorem linear_pmap.graph_fst_eq_zero_snd +/- theorem linear_pmap.image_iff +/- theorem linear_pmap.le_of_eq_locus_ge +/- theorem linear_pmap.le_of_le_graph +/- theorem linear_pmap.map_add +/- theorem linear_pmap.map_neg +/- theorem linear_pmap.map_smul +/- theorem linear_pmap.map_sub +/- theorem linear_pmap.map_zero +/- theorem linear_pmap.mem_domain_iff +/- theorem linear_pmap.mem_domain_iff_of_eq_graph +/- theorem linear_pmap.mem_graph +/- theorem linear_pmap.mem_graph_iff' +/- theorem linear_pmap.mem_graph_iff +/- theorem linear_pmap.mem_graph_snd_inj' +/- theorem linear_pmap.mem_graph_snd_inj +/- theorem linear_pmap.mem_range_iff +/- theorem linear_pmap.neg_apply +/- theorem linear_pmap.neg_graph +/- theorem linear_pmap.smul_apply +/- theorem linear_pmap.smul_graph +/- theorem linear_pmap.sup_apply +/- theorem linear_pmap.sup_h_of_disjoint +/- theorem linear_pmap.sup_span_singleton_apply_mk +/- theorem linear_pmap.to_fun_eq_coe 2022-08-17 09:39:52 4e76ad0 feat(group_theory/group_action/defs): `additive`/`multiplicative` instances (#15719) More action instances involving `additive` and `multiplicative`. ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean - theorem additive.of_mul_vadd - theorem multiplicative.of_add_smul + theorem of_add_smul + theorem of_mul_vadd + theorem to_add_vadd + theorem to_mul_smul 2022-08-17 09:39:51 6c13528 feat(data/nat/factorization/basic): define `ord_proj[p]` and `ord_compl[p]`, prove basic lemmas (#15589) `ord_proj[p] n := p ^ (nat.factorization n p)` is the largest power of `p` that divides into `n`. For `p = 2` this is the even part of `n`. `ord_compl[p] n := n / ord_proj[p] n` is the largest divisor of `n` not divisible by `p`. For `p = 2` this is the odd part of `n`. Note that for consistency with the naming of other lemmas introduced in this PR, the following lemmas are renamed: * `pow_factorization_dvd` -> `ord_proj_dvd` * `pow_factorization_le` -> `ord_proj_le` * `not_dvd_div_pow_factorization` -> `not_dvd_ord_compl` * `coprime_of_div_pow_factorization` -> `coprime_ord_compl` * `div_pow_factorization_ne_zero` -> `ord_compl_pos` * `prime.pow_dvd_iff_dvd_pow_factorization` -> `prime.pow_dvd_iff_dvd_ord_proj` ESTIMATED CHANGES Modified src/algebra/char_p/local_ring.lean Modified src/data/nat/factorization/basic.lean - theorem nat.coprime_of_div_pow_factorization + theorem nat.coprime_ord_compl - theorem nat.div_pow_factorization_ne_zero + theorem nat.dvd_ord_compl_of_dvd_not_dvd + theorem nat.dvd_ord_proj_of_dvd + theorem nat.factorization_ord_compl - theorem nat.not_dvd_div_pow_factorization + theorem nat.not_dvd_ord_compl + theorem nat.ord_compl_dvd + theorem nat.ord_compl_le + theorem nat.ord_compl_mul + theorem nat.ord_compl_of_not_prime + theorem nat.ord_compl_pos + theorem nat.ord_proj_dvd + theorem nat.ord_proj_le + theorem nat.ord_proj_mul + theorem nat.ord_proj_mul_ord_compl_eq_self + theorem nat.ord_proj_of_not_prime + theorem nat.ord_proj_pos - theorem nat.pow_factorization_dvd - theorem nat.pow_factorization_le + theorem nat.prime.pow_dvd_iff_dvd_ord_proj - theorem nat.prime.pow_dvd_iff_dvd_pow_factorization Modified src/data/nat/factorization/prime_pow.lean Modified src/group_theory/exponent.lean Modified src/group_theory/sylow.lean 2022-08-17 07:10:41 bb28953 feat(data/list/forall2): add `list.forall₂_iff_nth_le` (#16073) Characterization of `list.forall₂` with respect to `list.nth_le` on all positions. ESTIMATED CHANGES Modified src/data/list/forall2.lean + theorem list.forall₂.length_eq + theorem list.forall₂.nth_le + theorem list.forall₂_iff_nth_le - theorem list.forall₂_length_eq + theorem list.forall₂_of_length_eq_of_nth_le Modified src/data/list/sections.lean 2022-08-17 07:10:39 e83ba8f feat(category_theory/limits/shapes/diagonal): The diagonal object of a morphism. (#15711) ESTIMATED CHANGES Added src/category_theory/limits/shapes/diagonal.lean + def category_theory.limits.diagonal_obj_pullback_fst_iso + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_hom_fst_fst + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_hom_fst_snd + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_hom_snd + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_inv_fst_fst + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_inv_fst_snd + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_inv_snd_fst + theorem category_theory.limits.diagonal_obj_pullback_fst_iso_inv_snd_snd + theorem category_theory.limits.diagonal_pullback_fst + def category_theory.limits.pullback.diagonal + theorem category_theory.limits.pullback.diagonal_comp + theorem category_theory.limits.pullback.diagonal_fst + def category_theory.limits.pullback.diagonal_is_kernel_pair + def category_theory.limits.pullback.diagonal_obj + theorem category_theory.limits.pullback.diagonal_snd + def category_theory.limits.pullback_diagonal_map_id_iso + theorem category_theory.limits.pullback_diagonal_map_id_iso_hom_fst + theorem category_theory.limits.pullback_diagonal_map_id_iso_hom_snd + theorem category_theory.limits.pullback_diagonal_map_id_iso_inv_fst + theorem category_theory.limits.pullback_diagonal_map_id_iso_inv_snd_fst + theorem category_theory.limits.pullback_diagonal_map_id_iso_inv_snd_snd + def category_theory.limits.pullback_diagonal_map_iso + theorem category_theory.limits.pullback_diagonal_map_iso_hom_fst + theorem category_theory.limits.pullback_diagonal_map_iso_hom_snd + theorem category_theory.limits.pullback_diagonal_map_iso_inv_fst + theorem category_theory.limits.pullback_diagonal_map_iso_inv_snd_fst + theorem category_theory.limits.pullback_diagonal_map_iso_inv_snd_snd + theorem category_theory.limits.pullback_diagonal_map_snd_fst_fst + theorem category_theory.limits.pullback_diagonal_map_snd_snd_fst + def category_theory.limits.pullback_fst_fst_iso + theorem category_theory.limits.pullback_fst_map_snd_is_pullback + theorem category_theory.limits.pullback_lift_map_is_pullback + theorem category_theory.limits.pullback_map_diagonal_is_pullback + theorem category_theory.limits.pullback_map_eq_pullback_fst_fst_iso_inv Modified src/category_theory/limits/shapes/kernel_pair.lean + def category_theory.is_kernel_pair.pullback 2022-08-17 07:10:38 b604119 feat(data/polynomial): Polynomial modules (#15065) ESTIMATED CHANGES Added src/data/polynomial/module.lean + def polynomial_module.equiv_polynomial + def polynomial_module.equiv_polynomial_self + theorem polynomial_module.induction_linear + def polynomial_module.lsingle + theorem polynomial_module.lsingle_apply + theorem polynomial_module.monomial_smul_apply + theorem polynomial_module.monomial_smul_single + def polynomial_module.single + theorem polynomial_module.single_apply + theorem polynomial_module.single_smul + theorem polynomial_module.smul_apply + theorem polynomial_module.smul_single_apply + def polynomial_module Modified src/ring_theory/finiteness.lean + theorem module_polynomial_of_endo_smul_def 2022-08-17 04:40:06 0893158 refactor(order/rel_classes): redefine `is_well_order` in terms of `is_well_founded` (#15729) We redefine `is_well_order` in terms of `is_well_founded`, and remove the redundant `is_irrefl` assumption in the process. This also replaces `is_well_order.wf` with `is_well_founded.wf`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/data/nat/part_enat.lean Modified src/data/pi/lex.lean Modified src/data/sum/order.lean Modified src/order/conditionally_complete_lattice.lean +/- theorem Inf_eq_argmin_on Modified src/order/initial_seg.lean Modified src/order/rel_classes.lean Modified src/order/well_founded_set.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/ordinal/basic.lean Modified src/set_theory/ordinal/natural_ops.lean Modified src/set_theory/ordinal/notation.lean Modified src/topology/metric_space/emetric_paracompact.lean 2022-08-17 03:54:59 f5de6ed chore(scripts): update nolints.txt (#16090) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-17 00:31:53 e14ff25 feat(set_theory/cardinal): cardinality of `multiset`, `polynomial` and `mv_polynomial` (#15889) + Show `#(multiset α) = max (#α) ℵ₀` when `α` is nonempty. Show the same for `#(α →₀ ℕ)`, which is used in the mv_polynomial proof (see below). + Prove that the inequality in `polynomial.cardinal_mk_le_max` is an equality when the semiring is nontrivial. The result is no longer derived from the corresponding result for mv_polynomial to allow general `semiring`, not just `comm_semiring`. + Generalize `mv_polynomial.cardinal_mk_le_max` to two possibly different universes, and prove that the inequality is an equality when the type of variables is nonempty and the semiring is nontrivial. W_type is no longer used so that part is removed from the file. + Change the [encodable] assumption in `mk_le_aleph_0` and `mk_list_eq_aleph_0` to the weaker typeclass [countable]. - [x] depends on: #16046 ESTIMATED CHANGES Modified src/algebra/algebraic_card.lean Modified src/data/mv_polynomial/cardinal.lean + theorem mv_polynomial.cardinal_lift_mk_le_max + theorem mv_polynomial.cardinal_mk_eq_lift + theorem mv_polynomial.cardinal_mk_eq_max + theorem mv_polynomial.cardinal_mk_eq_max_lift +/- theorem mv_polynomial.cardinal_mk_le_max Modified src/data/polynomial/cardinal.lean + theorem polynomial.cardinal_mk_eq_max +/- theorem polynomial.cardinal_mk_le_max Modified src/field_theory/cardinality.lean Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.mk_le_aleph_0 Modified src/set_theory/cardinal/ordinal.lean + theorem cardinal.mk_finsupp_lift_of_infinite' + theorem cardinal.mk_finsupp_nat + theorem cardinal.mk_finsupp_of_infinite' +/- theorem cardinal.mk_list_eq_aleph_0 + theorem cardinal.mk_multiset_of_countable + theorem cardinal.mk_multiset_of_infinite + theorem cardinal.mk_multiset_of_is_empty + theorem cardinal.mk_multiset_of_nonempty 2022-08-16 21:56:57 64e20fb feat(algebra/order/ring): add some instances about covariance (#14763) Most of the basic lemmas have been prepared. It is time to start trying to replace some of the lemmas in `algebra/order/ring`. - [x] depends on: #14761 ESTIMATED CHANGES Modified src/algebra/order/ring.lean Modified src/combinatorics/additive/behrend.lean Modified src/data/nat/basic.lean 2022-08-16 18:55:51 2303b3e chore(combinatorics/simple_graph): review inhabited instances (#15770) Delete artificial inhabited instance, normalize remaining and give them `@[simps]`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/connectivity.lean Modified src/combinatorics/simple_graph/partition.lean Modified src/combinatorics/simple_graph/subgraph.lean 2022-08-16 18:55:50 ea1dd3d feat(algebra/module/localized_module): add characteristic predicate for `localized_module` (#15507) Add characteristic predicate for localised module similar to ring localization and prove that the concrete construction satisfies the characteristic predicate. ESTIMATED CHANGES Modified src/algebra/module/localized_module.lean + def localized_module.div_by + theorem localized_module.div_by_mul_by + theorem localized_module.mk_cancel + theorem localized_module.mk_cancel_common_left + theorem localized_module.mk_cancel_common_right + def localized_module.mk_linear_map + theorem localized_module.mul_by_div_by + theorem localized_module.smul'_mk +/- theorem localized_module.zero_mk 2022-08-16 16:11:19 d96e92d feat(probability/martingale/convergence): L¹ martingale convergence theorem and Lévy's upwards theorem (#16042) ESTIMATED CHANGES Modified src/measure_theory/measurable_space_def.lean + theorem measurable_space.measurable_space_supr_eq Modified src/probability/martingale/convergence.lean + theorem measure_theory.integrable.tendsto_ae_condexp + theorem measure_theory.integrable.tendsto_snorm_condexp + theorem measure_theory.martingale.ae_eq_condexp_limit_process + theorem measure_theory.martingale.eq_condexp_of_tendsto_snorm + theorem measure_theory.submartingale.ae_tendsto_limit_process_of_uniform_integrable + theorem measure_theory.submartingale.tendsto_snorm_one_limit_process + theorem measure_theory.tendsto_ae_condexp + theorem measure_theory.tendsto_snorm_condexp 2022-08-16 16:11:17 01f1f1b feat(number_theory/legendre_symbol/add_character): change `coe_to_fun` for `add_char` so it includes `of_add` (#16016) The purpose of this PR is to carry out the solution mentioned [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/map.20from.20mult.20gp.20to.20add.20gp/near/292623869) to the unpleasantness that one has to explicitly invoke `of_add` and `to_add` when working with homomorphisms from additive to multiplicative monoids (in the form `multiplicative M → M'`). The idea is to implement the coercion to a function `M → M'` so that it inserts the `to_add` conversion automatically. This is done here for additive characters (which also simplifies the treatment of Gauss sums in `number_theory/legendre_symbol/gauss_sum`). We also change many `nat` arguments in `add_character.lean` to `pnat`, to help the with the refactor of cyclotomic fields. See the discussion [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60pnat.60.20vs.20.60.5Bfact.20.280.20.3C.20n.29.5D.60/near/293293368). ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/add_character.lean + theorem add_char.coe_to_fun_apply - theorem add_char.inv_apply' +/- theorem add_char.inv_apply +/- theorem add_char.is_nontrivial.is_primitive +/- def add_char.is_nontrivial +/- theorem add_char.is_primitive.zmod_char_eq_one_iff + theorem add_char.map_add_mul + theorem add_char.map_nsmul_pow + theorem add_char.map_zero_one + theorem add_char.map_zsmul_zpow +/- theorem add_char.mul_shift_apply +/- theorem add_char.mul_shift_spec' +/- def add_char.primitive_char_finite_field +/- def add_char.primitive_zmod_char - theorem add_char.sum_eq_card_of_is_trivial' - theorem add_char.sum_eq_zero_of_is_nontrivial' +/- theorem add_char.sum_mul_shift + def add_char.to_monoid_hom +/- def add_char.zmod_char + theorem add_char.zmod_char_apply' + theorem add_char.zmod_char_apply +/- theorem add_char.zmod_char_is_nontrivial_iff +/- theorem add_char.zmod_char_primitive_of_eq_one_only_at_zero +/- theorem add_char.zmod_char_primitive_of_primitive_root Modified src/number_theory/legendre_symbol/gauss_sum.lean +/- def gauss_sum 2022-08-16 16:11:16 ce3997c feat(analysis/locally_convex): Add construction of continuous linear maps (#15922) This is the first part of the theorem that for a pseudometrizable locally convex space boundedness implies continuity. ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean + def linear_map.clm_of_exists_bounded_image + theorem linear_map.clm_of_exists_bounded_image_apply + theorem linear_map.clm_of_exists_bounded_image_coe 2022-08-16 16:11:15 c62c909 feat(linear_algebra/projective_space/subspace): adds lemmas about the span operation and supremums of collections of subspaces (#15596) This PR adds lemmas relating the span operation to the order relations between subsets and subspaces, and adds lemmas about computing the supremum of a collection of subspaces using the span operation. ESTIMATED CHANGES Modified src/linear_algebra/projective_space/subspace.lean + theorem projectivization.subspace.mem_span + theorem projectivization.subspace.monotone_span + theorem projectivization.subspace.span_Union +/- theorem projectivization.subspace.span_coe + theorem projectivization.subspace.span_empty + theorem projectivization.subspace.span_eq_Inf + theorem projectivization.subspace.span_eq_of_le + theorem projectivization.subspace.span_eq_span_iff + theorem projectivization.subspace.span_le_subspace_iff + theorem projectivization.subspace.span_sup + theorem projectivization.subspace.span_union + theorem projectivization.subspace.span_univ + theorem projectivization.subspace.subset_span_trans + theorem projectivization.subspace.sup_span 2022-08-16 16:11:14 2ccfe54 refactor(data/finset/fin): Delete `finset.fin_range` (#15538) `finset.fin_range n` is just `finset.univ`, so we inline its definition in the `fintype (fin n)` instance to avoid people trying to use it. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean Modified src/algebra/big_operators/norm_num.lean + theorem tactic.norm_num.finset.mk_congr Modified src/analysis/normed_space/multilinear.lean Modified src/data/finset/fin.lean - theorem finset.coe_fin_range - def finset.fin_range - theorem finset.fin_range_card - theorem finset.mem_fin_range Modified src/data/finset/sort.lean Modified src/data/fintype/basic.lean +/- theorem fin.univ_def Modified src/data/list/range.lean Modified test/norm_num_ext.lean 2022-08-16 13:24:48 774c38f feat(ring_theory/algebraic): add transcendental.pow (#16057) ESTIMATED CHANGES Modified src/data/polynomial/expand.lean + theorem polynomial.expand_aeval + theorem polynomial.expand_ne_zero Modified src/ring_theory/algebraic.lean + theorem is_algebraic_of_pow + theorem transcendental.pow 2022-08-16 13:24:47 98a9eb2 feat(analysis/special_functions/trigonometric/angle): more on angles equal or not equal to 0 or π (#16055) We have various lemmas giving conditions for an angle to equal 0 or π. Add some more such lemmas, plus negated versions of existing lemmas giving conditions for angles not to equal 0 or π. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.eq_neg_self_iff + theorem real.angle.ne_neg_self_iff + theorem real.angle.neg_eq_self_iff + theorem real.angle.neg_ne_self_iff + theorem real.angle.sign_ne_zero_iff + theorem real.angle.sin_ne_zero_iff + theorem real.angle.two_nsmul_ne_zero_iff + theorem real.angle.two_zsmul_ne_zero_iff 2022-08-16 13:24:46 0173319 feat(order/directed): a subset stable by supremum is `directed_on (≤)` (#16054) ESTIMATED CHANGES Modified src/order/directed.lean + theorem directed_on_of_inf_mem + theorem directed_on_of_sup_mem 2022-08-16 13:24:44 d9992ad feat(data/set/basic): Add natural missing lemmas to `set.subsingleton` and slightly refactor (#15886) - `subsingleton.image` is moved and documentation is added so that it is near related lemmas. - `subsingleton_of_preimage` is added to go with `subsingleton.preimage`, `subsingleton_of_image`., and `subsingleton.image`. - We add `subsingleton_anti` analogously to `nontrivial_mono`. - Some small style tweaks are made. - `subsingleton.mono` is renamed to `subsingleton.anti`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton.anti +/- theorem set.subsingleton.eq_singleton_of_mem - theorem set.subsingleton.mono + theorem set.subsingleton_of_preimage Modified src/data/set/pointwise.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/topology/connected.lean Modified src/topology/metric_space/basic.lean Modified src/topology/separation.lean 2022-08-16 13:24:43 1d7f479 feat(data/set/basic): Add `set.nontrivial` predicate and API (#15867) Analogously to the existing `set.subsingleton`, we add `set.nontrivial` and the corresponding API. This allows for dot notation to be used for `set.nontrivial` (which is equivalent to ¬ `set.subsingleton`). We also make some small changes to `set.subsingleton`, mostly style tweaks, a rename, and a missing lemma. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.nontrivial.exists_lt + theorem set.nontrivial.exists_ne + theorem set.nontrivial.iff_exists_lt + theorem set.nontrivial.image + theorem set.nontrivial.mono + theorem set.nontrivial.ne_empty + theorem set.nontrivial.ne_singleton + theorem set.nontrivial.nonempty + theorem set.nontrivial.not_subset_empty + theorem set.nontrivial.not_subset_singleton + theorem set.nontrivial.pair_subset + theorem set.nontrivial.preimage + theorem set.nontrivial_coe + theorem set.nontrivial_iff_exists_ne + theorem set.nontrivial_iff_pair_subset +/- theorem set.nontrivial_mono + theorem set.nontrivial_of_exists_lt + theorem set.nontrivial_of_exists_ne + theorem set.nontrivial_of_image + theorem set.nontrivial_of_lt + theorem set.nontrivial_of_mem_mem_ne + theorem set.nontrivial_of_nontrivial + theorem set.nontrivial_of_nontrivial_coe + theorem set.nontrivial_of_pair_subset + theorem set.nontrivial_of_preimage + theorem set.nontrivial_of_univ_nontrivial + theorem set.nontrivial_pair + theorem set.nontrivial_univ + theorem set.nontrivial_univ_iff + theorem set.not_nontrivial_empty + theorem set.not_nontrivial_iff + theorem set.not_nontrivial_singleton + theorem set.not_subsingleton_iff 2022-08-16 13:24:42 c239c99 feat(algebra/order/monoid_lemmas_zero_lt): remove primes, add missing lemmas (#14774) These lemmas are very similar to the existing ones, but with different assumptions. I intend to move the positivity assumption to the first place of assumptions in a future PR. So I just simply deleted some things in docstr. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.le_mul_of_le_of_one_le' + theorem zero_lt.le_mul_of_one_le_of_le' + theorem zero_lt.lt_mul_of_le_of_one_lt' + theorem zero_lt.lt_mul_of_lt_of_one_le' + theorem zero_lt.lt_mul_of_lt_of_one_lt' + theorem zero_lt.lt_mul_of_one_le_of_lt' + theorem zero_lt.lt_mul_of_one_lt_of_le' + theorem zero_lt.lt_mul_of_one_lt_of_lt' + theorem zero_lt.mul_le_of_le_of_le_one' + theorem zero_lt.mul_le_of_le_one_of_le' - theorem zero_lt.mul_lt_mul_left' + theorem zero_lt.mul_lt_mul_left - theorem zero_lt.mul_lt_mul_right' + theorem zero_lt.mul_lt_mul_right + theorem zero_lt.mul_lt_of_le_of_lt_one' + theorem zero_lt.mul_lt_of_le_one_of_lt' + theorem zero_lt.mul_lt_of_lt_of_le_one' + theorem zero_lt.mul_lt_of_lt_of_lt_one' + theorem zero_lt.mul_lt_of_lt_one_of_le' + theorem zero_lt.mul_lt_of_lt_one_of_lt' + theorem zero_lt.preorder.le_mul_of_le_of_one_le' + theorem zero_lt.preorder.le_mul_of_one_le_of_le' + theorem zero_lt.preorder.lt_mul_of_le_of_one_lt' + theorem zero_lt.preorder.lt_mul_of_lt_of_one_le' + theorem zero_lt.preorder.lt_mul_of_one_le_of_lt' + theorem zero_lt.preorder.lt_mul_of_one_lt_of_le' + theorem zero_lt.preorder.mul_le_of_le_of_le_one' + theorem zero_lt.preorder.mul_le_of_le_one_of_le' + theorem zero_lt.preorder.mul_lt_of_le_of_lt_one' + theorem zero_lt.preorder.mul_lt_of_le_one_of_lt' + theorem zero_lt.preorder.mul_lt_of_lt_of_le_one' + theorem zero_lt.preorder.mul_lt_of_lt_one_of_le' 2022-08-16 10:37:03 7b94ffe chore(scripts): update nolints.txt (#16070) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2022-08-16 10:37:01 d928d9b fix(algebra/category/Group/equivalence_Group_AddGroup): fix typo (#16067) ESTIMATED CHANGES Modified src/algebra/category/Group/equivalence_Group_AddGroup.lean 2022-08-16 10:36:59 c553a82 feat(analysis/normed/group/basic): construct a normed group from a seminormed group satisfying `∥x∥ = 0 → x = 0` (#16066) This makes it more convenient to have a `normed_add_comm_group` instance as a special case of a general `seminormed_add_comm_group` without having to go back to the (pseudo) metric space level. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + def normed_add_comm_group.of_separation 2022-08-16 10:36:58 b95b8c7 chore(*): restore `subsingleton` instances and remove hacks (#16046) #### Background The `simp` tactic used to [look for subsingleton instances excessively](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.235672.20breaks.20timeout/near/223034551), so every subsingleton/unique instances added to mathlib could slow down `simp` performance; in fact, removing some subsingleton instances locally led to such speedup that three hacks #5779, #5878 and #6639 along this line have been merged into mathlib. Since the problem was discovered, new subsingleton instances were mostly turned into lemma/defs, with a reference to gh-6025 that @eric-wieser created to track them and a notice to restore them as instances once safe to do so. This bad behavior of `simp` was finally fixed in [lean#665](https://github.com/leanprover-community/lean/pull/665) by @gebner in January 2022, so it is now safe to remove the hacks and restore the instances. In fact, the hack #5878 was already removed in [#13127](https://github.com/leanprover-community/mathlib/commit/c7626b7dfe2bf35b48cf43178a32d74f5dbf8b3f#diff-02976f8e19552b3c7ea070e30761e4e99f1333085cc5bb94fa170861c6ed27bcL497). I [measured the difference in performance](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.235672.20breaks.20timeout/near/293228091) from removing one of the remaining hacks and it was negligible. Therefore, in this PR, we: + Remove both hacks remaining; + Turn all would-be instances that mention gh-6025 into actual global instances; + Golf proofs that explicitly invoked these instances previously; + Remove `local attribute [instance]` lines that were added when these instances were needed. Closes #6025. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem algebra_rat_subsingleton Modified src/algebra/algebra/subalgebra/basic.lean - theorem alg_equiv.subsingleton_left - theorem alg_equiv.subsingleton_right - theorem alg_hom.subsingleton - theorem subalgebra.subsingleton_of_subsingleton Modified src/algebra/lie/solvable.lean Modified src/algebra/lie/subalgebra.lean - theorem lie_subalgebra.subsingleton_of_bot Modified src/algebra/lie/submodule.lean - theorem lie_ideal.subsingleton_of_bot - theorem lie_submodule.subsingleton_of_bot Modified src/algebra/module/basic.lean - theorem subsingleton_rat_module Modified src/algebra/order/complete_field.lean Modified src/algebra/order/hom/ring.lean - theorem order_ring_hom.subsingleton - theorem order_ring_iso.subsingleton_left - theorem order_ring_iso.subsingleton_right Modified src/analysis/normed_space/multilinear.lean Modified src/data/list/basic.lean - def list.unique_of_is_empty Modified src/data/matrix/basic.lean - theorem matrix.subsingleton_of_empty_left - theorem matrix.subsingleton_of_empty_right Modified src/data/matrix/dmatrix.lean - theorem dmatrix.subsingleton_of_empty_left - theorem dmatrix.subsingleton_of_empty_right Modified src/data/mv_polynomial/basic.lean Modified src/geometry/manifold/charted_space.lean Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/charpoly/finite_field.lean Modified src/logic/basic.lean - theorem subtype.subsingleton Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/rat.lean Modified src/number_theory/number_field.lean Modified src/order/filter/basic.lean Modified src/order/hom/basic.lean - def order_hom.unique Modified src/ring_theory/algebraic_independent.lean Modified src/set_theory/ordinal/fixed_point.lean Modified src/topology/continuous_function/algebra.lean - theorem continuous_map.subsingleton_subalgebra Modified src/topology/continuous_function/weierstrass.lean Modified src/topology/metric_space/basic.lean 2022-08-16 10:36:56 791852e feat(polynomial/field_division): Add `root_set_prod` and clean up lemma statements (#16035) This PR adds `root_set_prod` (based on `roots_prod`) and cleans up lemma statements (the file already has `{R S : Type*} [field R]`). ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean +/- theorem polynomial.mem_root_set +/- theorem polynomial.mem_roots_map +/- theorem polynomial.root_set_C_mul_X_pow +/- theorem polynomial.root_set_X_pow +/- theorem polynomial.root_set_monomial + theorem polynomial.root_set_prod 2022-08-16 10:36:54 0398787 feat(data/finset/lattice): 3*2 lemmas about max/min and max'/min' (#15978) The six lemmas in this PR show that * `finset.max` and `finset.max'` coincide (when and how they can); * the `finset.max'` of `s.erase x` is not `x`; * the `finset.max` of `s.erase x` is not `x`; and their `@[to_dual]` analogues. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.coe_max' + theorem finset.coe_min' + theorem finset.max'_erase_ne_self + theorem finset.max_erase_ne_self + theorem finset.min'_erase_ne_self + theorem finset.min_erase_ne_self 2022-08-16 10:36:43 0a58aef lint(scripts/lint-style): style linter for _inst_ occurences (#15977) ESTIMATED CHANGES Modified scripts/lint-style.py Modified src/control/functor/multivariate.lean Modified src/data/qpf/multivariate/constructions/sigma.lean Modified src/field_theory/krull_topology.lean Modified src/group_theory/nilpotent.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/general_linear_group.lean Modified src/measure_theory/constructions/pi.lean Modified src/ring_theory/etale.lean +/- theorem algebra.formally_smooth.exists_lift +/- theorem algebra.formally_unramified.lift_unique Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/jacobson.lean Modified src/tactic/core.lean Modified src/topology/separation.lean 2022-08-16 10:36:23 b7f327b refactor(order/game_add): move `game_add` to its own file (#15885) We move `game_add` from the `logic/hydra` file to a new `order/game_add` file, and move it in the `prod` namespace in preparation for a future PR that will add `sym2.game_add`. ESTIMATED CHANGES Modified src/logic/hydra.lean - theorem acc.game_add - inductive relation.game_add - theorem relation.game_add_le_lex - theorem relation.rprod_le_trans_gen_game_add - theorem well_founded.game_add Added src/order/game_add.lean + theorem acc.prod_game_add + inductive prod.game_add + theorem prod.game_add_le_lex + theorem prod.rprod_le_trans_gen_game_add + theorem well_founded.prod_game_add 2022-08-16 10:36:22 1b42ac3 refactor(information_theory/hamming): Separate Hamming norm and dist definitions. (#15820) In practice, the current definition of the Hamming norm in terms of the dist leads to having to repeatedly invoke `pi.zero_apply`. This PR separates the two definitions and then proves their compatibility. We also improve a few style aspects to proofs while here, and add some simp lemmas. ESTIMATED CHANGES Modified src/information_theory/hamming.lean +/- theorem hamming_dist_pos +/- theorem hamming_dist_zero_left +/- theorem hamming_dist_zero_right +/- def hamming_norm +/- theorem hamming_norm_nonneg +/- theorem hamming_norm_pos_iff 2022-08-16 10:36:20 0d43cc6 feat(algebra/order/with_zero): Add eq_one_of_mul_eq_one lemmas (#15644) ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean +/- theorem div_le_div_left₀ +/- theorem div_le_div_right₀ +/- theorem div_le_iff₀ + theorem eq_one_of_mul_eq_one_left' + theorem eq_one_of_mul_eq_one_left + theorem eq_one_of_mul_eq_one_right' + theorem eq_one_of_mul_eq_one_right + theorem inv_le_one₀ +/- theorem le_div_iff₀ + theorem mul_le_one₀ + theorem one_le_inv₀ + theorem one_le_mul₀ 2022-08-16 10:36:19 d13cc09 feat(data/list/basic): add `list.length_filter_le` and `list.length_filter_map_le` (#15369) A `list` can't get longer when applying `list.filter` or `list.filter_map`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.length_filter_le + theorem list.length_filter_map_le + theorem list.map_filter_map_some_eq_filter_map_is_some 2022-08-16 10:36:17 0f4d823 feat(topology/algebra/uniform_ring): ring completions and algebra structures (#14841) If `A` is an algebra over a commutative ring `R`, so is the `uniform_space.completion` of `A`. If `A` is a normed algebra over a normed field `𝕜`, then so is `uniform_space.completion A`. ESTIMATED CHANGES Modified src/analysis/normed_space/completion.lean Modified src/topology/algebra/uniform_mul_action.lean + theorem uniform_space.completion.smul_def Modified src/topology/algebra/uniform_ring.lean + theorem uniform_space.completion.algebra_map_def + theorem uniform_space.completion.map_smul_eq_mul_coe 2022-08-16 08:39:41 90dc617 feat(analysis/calculus/cont_diff): `iterated_fderiv[_within]` is linear in the function (#15902) This PR adds lemmas for calculating the iterated Fréchet-derivative of addition, negation, and constant scalar multiplication. For each operation, we provide two lemmas, one for `iterated_fderiv_within` and on for `iterated_fderiv`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem iterated_fderiv_add_apply + theorem iterated_fderiv_const_smul_apply + theorem iterated_fderiv_neg_apply + theorem iterated_fderiv_within_add_apply + theorem iterated_fderiv_within_const_smul_apply + theorem iterated_fderiv_within_neg_apply 2022-08-16 08:39:39 18302a4 feat(category_theory/limits): has_limits_of_shape J if and only if const J is a left adjoint (#15859) ESTIMATED CHANGES Modified src/category_theory/adjunction/comma.lean + theorem category_theory.nonempty_is_left_adjoint_iff_has_terminal_costructured_arrow + theorem category_theory.nonempty_is_right_adjoint_iff_has_initial_structured_arrow Modified src/category_theory/limits/cone_category.lean + theorem category_theory.limits.has_colimits_of_shape_iff_is_right_adjoint_const + theorem category_theory.limits.has_limits_of_shape_iff_is_left_adjoint_const 2022-08-16 08:39:38 ecb66ca chore(tactic/group): do not swallow errors from simp_core (#15835) This probably doesn't make much difference, but it's better to silence only the error we expect (no progress being made), and not all errors that could ever possibly happen. ESTIMATED CHANGES Modified src/tactic/group.lean 2022-08-16 08:39:37 fae3ce1 feat(field_theory/splitting_field): Adjoining all of the roots of a polynomial gives a splitting field (#15795) This PR proves that if `p` splits in a field extensions, then adjoining all of the roots of `p` gives a splitting field of `p`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_root_set_is_splitting_field + theorem intermediate_field.is_splitting_field_iff Modified src/field_theory/splitting_field.lean 2022-08-16 08:39:35 adb6142 refactor(topology/algebra/infinite_sum): generalize `tsum_zero` (#15786) Thanks to @kbuzzard and @b-mehta, it holds whenever `is_closed {0}`. This is true not just as `t2_space` as before, but in all `t1_space`. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem tsum_zero' +/- theorem tsum_zero 2022-08-16 06:42:28 0672fa4 feat(ring_theory/dedekind_domain/ideal): the prime factorizations of `r` and `span {r}` are essentially the same in a PID (#15758) A definition plus some extra lemmas about PIDs that will be used in #15000 ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean + theorem multiplicity_eq_multiplicity_span + theorem singleton_span_mem_normalized_factors_of_mem_normalized_factors + theorem span_singleton_dvd_span_singleton_iff_dvd Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.mem_normalized_factors_eq_of_associated 2022-08-16 06:42:27 28959d9 feat(category_theory/closed/monoidal): transport monoidal_closed across a monoidal equivalence (#15530) ESTIMATED CHANGES Modified src/category_theory/closed/monoidal.lean + def category_theory.monoidal_closed.of_equiv Added src/category_theory/functor/inv_isos.lean + def category_theory.comp_inv_iso + def category_theory.inv_comp_iso + def category_theory.iso_comp_inv + def category_theory.iso_inv_comp Modified src/category_theory/monoidal/functor.lean 2022-08-16 06:42:26 3db6395 feat(category_theory/products/basic): equivalence ((A ⥤ B) × (A ⥤ C)) ≌ (A ⥤ (B × C)) (#15445) ESTIMATED CHANGES Modified src/category_theory/products/basic.lean + def category_theory.functor.prod'_comp_fst + def category_theory.functor.prod'_comp_snd + def category_theory.functor_prod_functor_equiv + def category_theory.functor_prod_functor_equiv_counit_iso + def category_theory.functor_prod_functor_equiv_unit_iso + def category_theory.functor_prod_to_prod_functor + def category_theory.prod.eta_iso + def category_theory.prod_functor_to_functor_prod 2022-08-16 06:42:24 6375f85 feat(measure_theory/probability_mass_function): Probability one iff support equals singleton (#15334) `a` has probability 1 under a `pmf` iff the support is the singleton `{a}` ESTIMATED CHANGES Modified src/probability/probability_mass_function/basic.lean + theorem pmf.apply_eq_one_iff + theorem pmf.to_measure_apply_eq_zero_iff + theorem pmf.to_measure_apply_singleton + theorem pmf.to_outer_measure_apply_singleton 2022-08-16 04:11:13 89f46dd docs(group_theory/p_group): Swap mismatched docstrings (#16065) This PR swaps two mismatched docstrings. ESTIMATED CHANGES Modified src/group_theory/p_group.lean 2022-08-16 04:11:12 2230ae6 feat(data/sign): `sign_one`, `sign_mul`, `sign_pow` (#16058) Add a lemma about the sign of the product of two numbers (in the `linear_ordered_ring` case, extracted from the existing `sign_hom` in that case). Also add `sign_one` and `sign_pow`. ESTIMATED CHANGES Modified src/data/sign.lean + theorem sign_mul + theorem sign_one + theorem sign_pow 2022-08-16 04:11:11 9d24857 feat(linear_algebra/ray): relation to linear independence (#16056) Add lemmas that two vectors are linearly dependent if and only if they are in the same ray or one is in the same ray as the negation of the other (for a module over a `linear_ordered_comm_ring` with `no_zero_smul_divisors`). ESTIMATED CHANGES Modified src/linear_algebra/ray.lean + theorem same_ray_or_ne_zero_and_same_ray_neg_iff_not_linear_independent + theorem same_ray_or_same_ray_neg_iff_not_linear_independent 2022-08-16 04:11:10 24855f4 feat(category_theory/lifting_properties): adjunctions (#16038) In this PR, we obtain the basic behaviour of lifting properties with respect to adjunctions. ESTIMATED CHANGES Added src/category_theory/lifting_properties/adjunction.lean + theorem category_theory.adjunction.has_lifting_property_iff + theorem category_theory.comm_sq.left_adjoint + theorem category_theory.comm_sq.left_adjoint_has_lift_iff + def category_theory.comm_sq.left_adjoint_lift_struct_equiv + theorem category_theory.comm_sq.right_adjoint + theorem category_theory.comm_sq.right_adjoint_has_lift_iff + def category_theory.comm_sq.right_adjoint_lift_struct_equiv 2022-08-16 04:11:09 909cae0 feat(logic/basic): given two different elements, one of the two is different from a third (#16023) This lemma is extracted from #15984, as suggested by the code-review. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem ne.ne_or_ne 2022-08-16 04:11:08 33261fb feat(topology/quasi_separated): Define quasi-separated topological spaces. (#15999) ESTIMATED CHANGES Modified src/topology/noetherian_space.lean Added src/topology/quasi_separated.lean + theorem is_quasi_separated.image_of_embedding + theorem is_quasi_separated.of_quasi_separated_space + theorem is_quasi_separated.of_subset + def is_quasi_separated + theorem is_quasi_separated_iff_quasi_separated_space + theorem is_quasi_separated_univ + theorem is_quasi_separated_univ_iff + theorem open_embedding.is_quasi_separated_iff + theorem quasi_separated_space.of_open_embedding Modified src/topology/sets/compacts.lean 2022-08-16 04:11:07 3e0dd19 feat(category_theory): compute subobjects of structured arrows (#15912) One step closer to the Special Adjoint Functor Theorem. ESTIMATED CHANGES Modified src/category_theory/limits/comma.lean + theorem category_theory.costructured_arrow.epi_iff_epi_left + theorem category_theory.structured_arrow.mono_iff_mono_right Modified src/category_theory/limits/over.lean + theorem category_theory.over.epi_iff_epi_left + theorem category_theory.over.epi_left_of_epi + theorem category_theory.under.mono_iff_mono_right + theorem category_theory.under.mono_right_of_mono Modified src/category_theory/over.lean + theorem category_theory.under.epi_of_epi_right + theorem category_theory.under.mono_of_mono_right Modified src/category_theory/structured_arrow.lean + theorem category_theory.costructured_arrow.epi_of_epi_left + theorem category_theory.costructured_arrow.ext + theorem category_theory.costructured_arrow.ext_iff + theorem category_theory.costructured_arrow.mono_of_mono_left + theorem category_theory.structured_arrow.epi_of_epi_right + theorem category_theory.structured_arrow.ext + theorem category_theory.structured_arrow.ext_iff + theorem category_theory.structured_arrow.mono_of_mono_right Added src/category_theory/subobject/comma.lean + theorem category_theory.costructured_arrow.lift_project_quotient + def category_theory.costructured_arrow.lift_quotient + def category_theory.costructured_arrow.project_quotient + theorem category_theory.costructured_arrow.project_quotient_factors + theorem category_theory.costructured_arrow.project_quotient_mk + def category_theory.costructured_arrow.quotient_equiv + theorem category_theory.costructured_arrow.unop_left_comp_of_mk_le_mk_unop + theorem category_theory.costructured_arrow.unop_left_comp_underlying_iso_hom_unop + theorem category_theory.structured_arrow.lift_project_subobject + def category_theory.structured_arrow.lift_subobject + def category_theory.structured_arrow.project_subobject + theorem category_theory.structured_arrow.project_subobject_factors + theorem category_theory.structured_arrow.project_subobject_mk + def category_theory.structured_arrow.subobject_equiv 2022-08-16 04:11:06 e6f3561 refactor(analysis/normed_space/pi_Lp): make argument of pi_Lp a term of ℝ≥0∞ instead of ℝ (#15833) This refactors `pi_Lp` so that the `p` argument has type ℝ≥0∞ instead of ℝ. There are several reasons for doing this: 1. It matches the design of `lp`. 2. We have `pi_Lp ∞ β`, so we can appropriately state various interpolation inequalities. 3. It makes more sense semantically 4. It should make the equivalence between `pi_Lp` and `lp` easier to implement The new implementation of `pi_Lp` tries to retain as much as possible of the original implementation, while at the same time mimicking the implementation of `lp`. Many of the proofs are now significantly longer because of the required case splits. - [x] depends on: #15852 ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/matrix.lean Modified src/analysis/normed_space/pi_Lp.lean - theorem pi_Lp.dist_eq + theorem pi_Lp.dist_eq_card + theorem pi_Lp.dist_eq_csupr + theorem pi_Lp.dist_eq_sum - theorem pi_Lp.edist_eq + theorem pi_Lp.edist_eq_card + theorem pi_Lp.edist_eq_sum + theorem pi_Lp.edist_eq_supr + def pi_Lp.equivₗᵢ + theorem pi_Lp.infty_equiv_isometry - theorem pi_Lp.nndist_eq + theorem pi_Lp.nndist_eq_sum + theorem pi_Lp.nndist_eq_supr - theorem pi_Lp.nnnorm_eq + theorem pi_Lp.nnnorm_eq_csupr + theorem pi_Lp.nnnorm_eq_sum + theorem pi_Lp.nnnorm_equiv_symm_const' +/- theorem pi_Lp.nnnorm_equiv_symm_const +/- theorem pi_Lp.nnnorm_equiv_symm_one - theorem pi_Lp.norm_eq + theorem pi_Lp.norm_eq_card + theorem pi_Lp.norm_eq_csupr +/- theorem pi_Lp.norm_eq_of_nat + theorem pi_Lp.norm_eq_sum + theorem pi_Lp.norm_equiv_symm_const' +/- theorem pi_Lp.norm_equiv_symm_const +/- theorem pi_Lp.norm_equiv_symm_one + theorem pi_Lp.norm_sq_eq_of_L2 + theorem pi_Lp.supr_edist_ne_top_aux +/- def pi_Lp Modified src/data/real/ennreal.lean + theorem ennreal.to_real_pos_iff_ne_top 2022-08-16 04:11:04 8a2d93a feat(ring_theory/etale): Localization and formally etale homomorphisms. (#15813) ESTIMATED CHANGES Modified src/ring_theory/etale.lean + theorem algebra.formally_etale.localization_base + theorem algebra.formally_etale.localization_map + theorem algebra.formally_etale.of_is_localization + theorem algebra.formally_smooth.localization_base + theorem algebra.formally_smooth.localization_map + theorem algebra.formally_smooth.of_is_localization + theorem algebra.formally_unramified.localization_base + theorem algebra.formally_unramified.localization_map + theorem algebra.formally_unramified.of_comp + theorem algebra.formally_unramified.of_is_localization Modified src/ring_theory/nilpotent.lean +/- theorem ideal.is_nilpotent.induction_on + theorem is_nilpotent.is_unit_quotient_mk_iff 2022-08-16 04:11:03 cdb7af2 feat(combinatorics/simple_graph): add three useful lemmas relating walk.support and walk.append (#15687) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.walk.mem_support_iff_exists_append + theorem simple_graph.walk.subset_support_append_left + theorem simple_graph.walk.subset_support_append_right 2022-08-16 04:11:02 fb1787b feat(analysis/seminorm): Group seminorms (#15594) Multiplicativize the existing `add_group_seminorm` material. ESTIMATED CHANGES Modified src/analysis/seminorm.lean - theorem add_group_seminorm.add_apply - theorem add_group_seminorm.add_comp - theorem add_group_seminorm.coe_add - theorem add_group_seminorm.coe_comp - theorem add_group_seminorm.coe_sup - theorem add_group_seminorm.coe_zero - def add_group_seminorm.comp - theorem add_group_seminorm.comp_add_le - theorem add_group_seminorm.comp_apply - theorem add_group_seminorm.comp_comp - theorem add_group_seminorm.comp_id - theorem add_group_seminorm.comp_mono - theorem add_group_seminorm.comp_zero - theorem add_group_seminorm.ext - theorem add_group_seminorm.inf_apply - theorem add_group_seminorm.le_def - theorem add_group_seminorm.le_insert' - theorem add_group_seminorm.le_insert - theorem add_group_seminorm.lt_def - theorem add_group_seminorm.sub_rev - theorem add_group_seminorm.sup_apply - theorem add_group_seminorm.zero_apply - theorem add_group_seminorm.zero_comp + theorem group_seminorm.add_apply + theorem group_seminorm.add_comp + theorem group_seminorm.coe_add + theorem group_seminorm.coe_comp + theorem group_seminorm.coe_le_coe + theorem group_seminorm.coe_lt_coe + theorem group_seminorm.coe_smul + theorem group_seminorm.coe_sup + theorem group_seminorm.coe_zero + def group_seminorm.comp + theorem group_seminorm.comp_apply + theorem group_seminorm.comp_assoc + theorem group_seminorm.comp_id + theorem group_seminorm.comp_mono + theorem group_seminorm.comp_mul_le + theorem group_seminorm.comp_zero + theorem group_seminorm.div_rev + theorem group_seminorm.ext + theorem group_seminorm.inf_apply + theorem group_seminorm.le_def + theorem group_seminorm.le_insert' + theorem group_seminorm.le_insert + theorem group_seminorm.lt_def + theorem group_seminorm.smul_apply + theorem group_seminorm.smul_sup + theorem group_seminorm.sup_apply + theorem group_seminorm.zero_apply + theorem group_seminorm.zero_comp + structure group_seminorm 2022-08-16 04:11:01 5c91a35 refactor(analysis/inner_product_space): rename `is_self_adjoint` to `is_symmetric` and add `is_self_adjoint` (#15326) We rename the current `inner_product_space.is_self_adjoint` to `linear_map.is_symmetric` (which states that `inner (A x) y = inner x (A y)` for all `x,y : E`) and add a new definition `is_self_adjoint` for `has_star R`. This definition is used to state theorems that were previously stated for `linear_map.is_symmetric`, but are actually about self-adjointness for `continuous_linear_map`. The Hellinger-Toeplitz theorem then becomes the construction of a self-adjoint operator from a symmetric operator, which is consistent with the functional analysis literature. Moreover, since the definitions are now in the correct namespaces, we can use dot-notation. Consequently, most parts of `inner_product_space/rayleigh` and `inner_product_space/spectrum` now use `is_self_adjoint` and are also now in the `continuous_linear_map.is_self_adjoint` namespace. For the finite-dimensional case we use `is_symmetric`, since continuity is not used anywhere. Finally, there are some minor cleanups in the matrix diagonalization file. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/star/module.lean Modified src/algebra/star/self_adjoint.lean + theorem is_self_adjoint.add + theorem is_self_adjoint.bit0 + theorem is_self_adjoint.bit1 + theorem is_self_adjoint.conjugate' + theorem is_self_adjoint.conjugate + theorem is_self_adjoint.div + theorem is_self_adjoint.inv + theorem is_self_adjoint.is_star_normal + theorem is_self_adjoint.mul + theorem is_self_adjoint.neg + theorem is_self_adjoint.pow + theorem is_self_adjoint.smul + theorem is_self_adjoint.star_eq + theorem is_self_adjoint.sub + theorem is_self_adjoint.zpow + def is_self_adjoint + theorem is_self_adjoint_iff + theorem is_self_adjoint_one + theorem is_self_adjoint_zero - theorem self_adjoint.bit0_mem - theorem self_adjoint.bit1_mem - theorem self_adjoint.conjugate' - theorem self_adjoint.conjugate - theorem self_adjoint.is_star_normal_of_mem - theorem self_adjoint.mul_mem - theorem self_adjoint.one_mem - theorem self_adjoint.smul_mem Modified src/analysis/inner_product_space/adjoint.lean + theorem continuous_linear_map.adjoint_id + theorem continuous_linear_map.is_self_adjoint_iff' - theorem continuous_linear_map.is_self_adjoint_iff_adjoint_eq + theorem continuous_linear_map.is_self_adjoint_iff_is_symmetric - theorem inner_product_space.is_self_adjoint.add - theorem inner_product_space.is_self_adjoint.adjoint_conj - theorem inner_product_space.is_self_adjoint.adjoint_eq - theorem inner_product_space.is_self_adjoint.apply_clm - def inner_product_space.is_self_adjoint.clm - theorem inner_product_space.is_self_adjoint.clm_apply - theorem inner_product_space.is_self_adjoint.coe_re_apply_inner_self_apply - theorem inner_product_space.is_self_adjoint.conj_adjoint - theorem inner_product_space.is_self_adjoint.conj_inner_sym - theorem inner_product_space.is_self_adjoint.conj_orthogonal_projection - theorem inner_product_space.is_self_adjoint.continuous - theorem inner_product_space.is_self_adjoint.restrict_invariant - def inner_product_space.is_self_adjoint - theorem inner_product_space.is_self_adjoint_id - theorem inner_product_space.is_self_adjoint_iff_bilin_form - theorem inner_product_space.is_self_adjoint_iff_inner_map_self_real - theorem inner_product_space.is_self_adjoint_zero - theorem inner_product_space.orthogonal_projection_is_self_adjoint + theorem is_self_adjoint.adjoint_conj + theorem is_self_adjoint.adjoint_eq + theorem is_self_adjoint.conj_adjoint + theorem is_self_adjoint.conj_orthogonal_projection + theorem is_self_adjoint.is_symmetric - theorem linear_map.is_self_adjoint_adjoint_mul_self + theorem linear_map.is_self_adjoint_iff' - theorem linear_map.is_self_adjoint_iff_eq_adjoint + theorem linear_map.is_symmetric.add + theorem linear_map.is_symmetric.apply_clm + theorem linear_map.is_symmetric.coe_re_apply_inner_self_apply + theorem linear_map.is_symmetric.coe_to_self_adjoint + theorem linear_map.is_symmetric.conj_inner_sym + theorem linear_map.is_symmetric.continuous + theorem linear_map.is_symmetric.is_self_adjoint + theorem linear_map.is_symmetric.restrict_invariant + theorem linear_map.is_symmetric.restrict_scalars + def linear_map.is_symmetric.to_self_adjoint + theorem linear_map.is_symmetric.to_self_adjoint_apply + def linear_map.is_symmetric + theorem linear_map.is_symmetric_adjoint_mul_self + theorem linear_map.is_symmetric_id + theorem linear_map.is_symmetric_iff_bilin_form + theorem linear_map.is_symmetric_iff_inner_map_self_real + theorem linear_map.is_symmetric_iff_is_self_adjoint + theorem linear_map.is_symmetric_zero + theorem orthogonal_projection_is_self_adjoint + theorem orthogonal_projection_is_symmetric Modified src/analysis/inner_product_space/positive.lean +/- theorem continuous_linear_map.is_positive.adjoint_conj +/- theorem continuous_linear_map.is_positive.conj_adjoint +/- theorem continuous_linear_map.is_positive.conj_orthogonal_projection +/- theorem continuous_linear_map.is_positive.orthogonal_projection_comp - theorem continuous_linear_map.is_positive_id + theorem continuous_linear_map.is_positive_one Modified src/analysis/inner_product_space/rayleigh.lean - theorem inner_product_space.is_self_adjoint.eq_smul_self_of_is_local_extr_on - theorem inner_product_space.is_self_adjoint.eq_smul_self_of_is_local_extr_on_real - theorem inner_product_space.is_self_adjoint.has_eigenvalue_infi_of_finite_dimensional - theorem inner_product_space.is_self_adjoint.has_eigenvalue_supr_of_finite_dimensional - theorem inner_product_space.is_self_adjoint.has_eigenvector_of_is_local_extr_on - theorem inner_product_space.is_self_adjoint.has_eigenvector_of_is_max_on - theorem inner_product_space.is_self_adjoint.has_eigenvector_of_is_min_on - theorem inner_product_space.is_self_adjoint.has_strict_fderiv_at_re_apply_inner_self - theorem inner_product_space.is_self_adjoint.linearly_dependent_of_is_local_extr_on - theorem inner_product_space.is_self_adjoint.subsingleton_of_no_eigenvalue_finite_dimensional + theorem is_self_adjoint.eq_smul_self_of_is_local_extr_on + theorem is_self_adjoint.eq_smul_self_of_is_local_extr_on_real + theorem is_self_adjoint.has_eigenvector_of_is_local_extr_on + theorem is_self_adjoint.has_eigenvector_of_is_max_on + theorem is_self_adjoint.has_eigenvector_of_is_min_on + theorem is_self_adjoint.linearly_dependent_of_is_local_extr_on + theorem linear_map.is_symmetric.has_eigenvalue_infi_of_finite_dimensional + theorem linear_map.is_symmetric.has_eigenvalue_supr_of_finite_dimensional + theorem linear_map.is_symmetric.has_strict_fderiv_at_re_apply_inner_self + theorem linear_map.is_symmetric.subsingleton_of_no_eigenvalue_finite_dimensional Modified src/analysis/inner_product_space/spectrum.lean - theorem inner_product_space.is_self_adjoint.apply_eigenvector_basis - theorem inner_product_space.is_self_adjoint.conj_eigenvalue_eq_self - theorem inner_product_space.is_self_adjoint.diagonalization_apply_self_apply - theorem inner_product_space.is_self_adjoint.diagonalization_basis_apply_self_apply - theorem inner_product_space.is_self_adjoint.diagonalization_symm_apply - theorem inner_product_space.is_self_adjoint.direct_sum_is_internal - theorem inner_product_space.is_self_adjoint.has_eigenvalue_eigenvalues - theorem inner_product_space.is_self_adjoint.has_eigenvector_eigenvector_basis - theorem inner_product_space.is_self_adjoint.invariant_orthogonal_eigenspace - theorem inner_product_space.is_self_adjoint.orthogonal_family_eigenspaces' - theorem inner_product_space.is_self_adjoint.orthogonal_family_eigenspaces - theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces - theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot' - theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot - theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces_invariant + theorem linear_map.is_symmetric.apply_eigenvector_basis + theorem linear_map.is_symmetric.conj_eigenvalue_eq_self + theorem linear_map.is_symmetric.diagonalization_apply_self_apply + theorem linear_map.is_symmetric.diagonalization_basis_apply_self_apply + theorem linear_map.is_symmetric.diagonalization_symm_apply + theorem linear_map.is_symmetric.direct_sum_is_internal + theorem linear_map.is_symmetric.has_eigenvalue_eigenvalues + theorem linear_map.is_symmetric.has_eigenvector_eigenvector_basis + theorem linear_map.is_symmetric.invariant_orthogonal_eigenspace + theorem linear_map.is_symmetric.orthogonal_family_eigenspaces' + theorem linear_map.is_symmetric.orthogonal_family_eigenspaces + theorem linear_map.is_symmetric.orthogonal_supr_eigenspaces + theorem linear_map.is_symmetric.orthogonal_supr_eigenspaces_eq_bot' + theorem linear_map.is_symmetric.orthogonal_supr_eigenspaces_eq_bot + theorem linear_map.is_symmetric.orthogonal_supr_eigenspaces_invariant Modified src/linear_algebra/matrix/hermitian.lean - theorem matrix.is_hermitian_iff_is_self_adjoint + theorem matrix.is_hermitian_iff_is_symmetric Modified src/linear_algebra/matrix/spectrum.lean 2022-08-16 04:10:59 05d8b4f feat(ring_theory/polynomial/vieta): add version of prod_X_add_C_eq_sum_esymm for multiset (#15008) This is a proof of Vieta's formula for `multiset`: ```lean lemma multiset.prod_X_add_C_eq_sum_esymm (s : multiset R) : (s.map (λ r, polynomial.X + polynomial.C r)).prod = ∑ j in finset.range (s.card + 1), (polynomial.C (s.esymm j) * polynomial.X ^ (s.card - j)) ``` where ```lean def multiset.esymm (s : multiset R) (n : ℕ) : R := ((s.powerset_len n).map multiset.prod).sum ``` From this, we deduce the proof of the formula for `mv_polynomial`: ```lean lemma prod_C_add_X_eq_sum_esymm : (∏ i : σ, (polynomial.X + polynomial.C (X i)) : polynomial (mv_polynomial σ R) )= ∑ j in range (card σ + 1), (polynomial.C (esymm σ R j) * polynomial.X ^ (card σ - j)) ``` with ```lean def mv_polynomial.esymm (n : ℕ) : mv_polynomial σ R := ∑ t in powerset_len n univ, ∏ i in t, X i ``` It is better to go in this direction since there does not seem to be a natural way to prove the `multiset` version from the `mv_polynomial` version due to the difficulty to enumerate the elements of a `multiset` with a `fintype`, see this [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/.E2.9C.94.20fintype.20enumerating.20a.20multiset) and the discussion from https://github.com/leanprover-community/mathlib/pull/14908. We prove, as suggested in [#14908](https://github.com/leanprover-community/mathlib/pull/14908#discussion_r905667015) , that `mv_polynomial.esymm` is obtained by specialising `multiset.esymm`. However, we do not refactor the results of `ring_theory/polynomial/symmetric` in terms of `multiset.esymm`. From flt-regular ESTIMATED CHANGES Modified src/ring_theory/polynomial/symmetric.lean + def multiset.esymm + theorem mv_polynomial.esymm_eq_multiset.esymm Modified src/ring_theory/polynomial/vieta.lean + theorem multiset.esymm_neg + theorem multiset.prod_X_add_C_coeff + theorem multiset.prod_X_add_C_eq_sum_esymm + theorem multiset.prod_X_sub_C_coeff + theorem multiset.prod_X_sub_C_eq_sum_esymm - theorem mv_polynomial.esymm_to_sum + theorem mv_polynomial.prod_C_add_X_eq_sum_esymm +/- theorem mv_polynomial.prod_X_add_C_coeff - theorem mv_polynomial.prod_X_add_C_eq_sum_esymm - theorem mv_polynomial.prod_X_add_C_eval 2022-08-16 04:10:58 f1e5c65 feat(topology/uniform_space/uniform_convergence_topology): continuity of [pre,post]composition, and other topological properties (#14534) We refactor a bit the beginning of the file to define a lower adjoint to the operation sending a filter on `β × β` to the corresponding "filter of uniform convergence" on `(α → β) × (α → β)` (applied to the uniformity on `β`, this gives the uniformity of uniform convergence on `α → β`). Using this lower adjoint and general facts about Galois connections, we prove (among other things) that, for the uniform structure of uniform convergence : - if `f : γ → β` is uniformly continuous, then `(f ∘ ⬝) : (α → γ) → (α → β)` is too - for any function `g : γ → α`, `(⬝ ∘ g) : (α → β) → (γ → β)` is uniformly continuous - "swapping the arguments" is an isomorphism of uniform spaces between `α → Π i, δ i` and `Π i, α → δ i`, where the `α → *` types are endowed with the uniform structure of uniform convergence and the `Π i, *` are endowed with the product uniform structure We then generalize these results to uniform structures of uniform convergence on a set of subsets of `α`. ESTIMATED CHANGES Modified src/topology/uniform_space/uniform_convergence_topology.lean +/- theorem uniform_convergence.t2_space +/- theorem uniform_convergence.uniform_continuous_eval 2022-08-16 01:42:08 34b2a98 feat(algebraic_geometry/*): Preliminary lemmas for #16059 (#16060) ESTIMATED CHANGES Modified src/algebra/category/Ring/basic.lean + theorem CommRing.comp_eq_ring_hom_comp + theorem CommRing.ring_hom_comp_eq_comp Modified src/algebraic_geometry/AffineScheme.lean + def algebraic_geometry.AffineScheme.of + def algebraic_geometry.AffineScheme.of_hom + theorem algebraic_geometry.is_affine_open.map_restrict_basic_open + theorem algebraic_geometry.is_affine_open_iff_of_is_open_immersion + theorem algebraic_geometry.is_localization_of_eq_basic_open Added src/algebraic_geometry/morphisms/ring_hom_properties.lean + theorem ring_hom.respects_iso.basic_open_iff + theorem ring_hom.respects_iso.basic_open_iff_localization + theorem ring_hom.respects_iso.of_restrict_morphism_restrict_iff + theorem ring_hom.stable_under_base_change.Γ_pullback_fst Modified src/algebraic_geometry/open_immersion.lean Modified src/topology/category/Top/opens.lean + theorem topological_space.opens.functor_obj_map_obj 2022-08-16 01:42:07 531db2e feat(topology/algebra/uniform_group): add instance `topological_group_is_uniform_of_compact_space` (#16027) Also update doc string for `topological_group.to_uniform_space`. cc @ADedecker ESTIMATED CHANGES Modified src/analysis/normed_space/compact_operator.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module/finite_dimension.lean Modified src/topology/algebra/nonarchimedean/adic_topology.lean Modified src/topology/algebra/uniform_filter_basis.lean Modified src/topology/algebra/uniform_group.lean + theorem topological_comm_group_is_uniform - theorem topological_group_is_uniform + theorem topological_group_is_uniform_of_compact_space Modified src/topology/algebra/valuation.lean Modified src/topology/continuous_function/algebra.lean 2022-08-16 01:42:06 07d11ba feat(algebraic/dold_kan): construction of the functors N₁ and N₂ (#16003) This PR constructs two functors, including `N₂ : karoubi (simplicial_object C) ⥤ karoubi (chain_complex C ℕ)` which shall be an equivalence of categories for any preadditive category `C`. ESTIMATED CHANGES Added src/algebraic_topology/dold_kan/functor_n.lean + def algebraic_topology.dold_kan.N₁ + def algebraic_topology.dold_kan.N₂ 2022-08-16 01:42:05 9b298fe feat(algebraic_geometry): Being quasi-compact is a local property. (#15995) ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/basic.lean - theorem algebraic_geometry.affine_target_morphism_property.is_local.open_cover_iff + theorem algebraic_geometry.affine_target_morphism_property.respects_iso_mk + theorem algebraic_geometry.property_is_local_at_target.open_cover_iff Modified src/algebraic_geometry/morphisms/quasi_compact.lean + theorem algebraic_geometry.is_compact_basic_open + theorem algebraic_geometry.quasi_compact.affine_open_cover_iff + theorem algebraic_geometry.quasi_compact.affine_open_cover_tfae + def algebraic_geometry.quasi_compact.affine_property + theorem algebraic_geometry.quasi_compact.affine_property_is_local + theorem algebraic_geometry.quasi_compact.affine_property_to_property + theorem algebraic_geometry.quasi_compact.open_cover_iff + theorem algebraic_geometry.quasi_compact.open_cover_tfae + theorem algebraic_geometry.quasi_compact_eq_affine_property + theorem algebraic_geometry.quasi_compact_iff_affine_property + theorem algebraic_geometry.quasi_compact_over_affine_iff + theorem algebraic_geometry.quasi_compact_respects_iso + theorem algebraic_geometry.quasi_compact_stable_under_composition 2022-08-16 01:42:03 1348274 chore(ring_theory/*): make ACC/DCC on rings be defeq to module versions (#15989) This makes `is_noetherian_ring R` defeq to `is_noetherian R R`, and similar for `is_artinian_ring`. This was discussed on https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.40.5Breducible.5D.20defs.20of.20classes.20on.20the.20leadup.20to.20Lean4.2E. ESTIMATED CHANGES Modified src/ring_theory/artinian.lean + def is_artinian_ring Modified src/ring_theory/noetherian.lean + def is_noetherian_ring 2022-08-16 01:42:02 9e25db4 feat(algebra/group_with_zero): generalize some lemmas (#15985) * replace `*_hom.map_inv` by a generic lemma `map_inv₀` assuming `[monoid_with_zero_hom_class]`; * replace `*_hom.map_div` by a generic lemma `map_div₀` assuming `[monoid_with_zero_hom_class]`; * replace `*_hom.map_zpow` by a generic lemma `map_zpow₀` assuming `[monoid_with_zero_hom_class]`; * replace `*_hom.map_units_inv` by a generic lemma `map_units_inv` assuming `[monoid_hom_class]`, `[monoid]`, and `[division_monoid]`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_equiv.map_div - theorem alg_equiv.map_inv - theorem alg_hom.map_div - theorem alg_hom.map_inv Modified src/algebra/field/basic.lean - theorem ring_hom.map_div +/- theorem ring_hom.map_eq_zero - theorem ring_hom.map_inv +/- theorem ring_hom.map_ne_zero - theorem ring_hom.map_units_inv Modified src/algebra/field_power.lean - theorem ring_equiv.map_zpow - theorem ring_hom.map_zpow Modified src/algebra/group_ring_action.lean Modified src/algebra/group_with_zero/basic.lean + theorem map_div₀ + theorem map_inv₀ - theorem monoid_hom.map_units_inv - theorem monoid_with_zero_hom.map_div +/- theorem monoid_with_zero_hom.map_eq_zero - theorem monoid_with_zero_hom.map_inv - theorem monoid_with_zero_hom.map_units_inv Modified src/algebra/group_with_zero/power.lean + theorem map_zpow₀ - theorem monoid_with_zero_hom.map_zpow Modified src/algebra/hom/units.lean + theorem map_units_inv Modified src/algebra/order/absolute_value.lean +/- theorem is_absolute_value.abv_div +/- theorem is_absolute_value.abv_inv Modified src/algebra/order/field.lean +/- theorem abs_div +/- theorem abs_inv Modified src/algebra/quaternion.lean +/- theorem quaternion.norm_sq_div +/- theorem quaternion.norm_sq_inv Modified src/algebra/ring/equiv.lean - theorem ring_equiv.map_div - theorem ring_equiv.map_inv Modified src/algebra/star/basic.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed/field/basic.lean +/- theorem nnnorm_div +/- theorem norm_div +/- theorem norm_inv +/- theorem norm_zpow Modified src/analysis/normed_space/compact_operator.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/polynomial/field_division.lean Modified src/data/rat/cast.lean +/- theorem rat.cast_div +/- theorem rat.cast_inv Modified src/data/real/sqrt.lean +/- theorem nnreal.sqrt_div +/- theorem nnreal.sqrt_inv Modified src/deprecated/subfield.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/primitive_element.lean Modified src/field_theory/ratfunc.lean Modified src/field_theory/subfield.lean Modified src/geometry/euclidean/oriented_angle.lean Modified src/group_theory/group_action/defs.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization/fraction_ring.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/localization/num_denom.lean Modified src/ring_theory/valuation/basic.lean - theorem valuation.map_inv - theorem valuation.map_units_inv - theorem valuation.map_zpow Modified src/ring_theory/valuation/valuation_ring.lean Modified src/ring_theory/valuation/valuation_subring.lean Modified src/topology/algebra/valued_field.lean 2022-08-15 23:11:37 1e6b748 chore(combinatorics/*): Fix lint (#16031) Fix the linting errors coming from `fintype_finite`, `to_additive_doc` and `doc_blame`. Pull out a `[projective_plane P L]` assumption to a `variables` declaration in `combinatorics.configuration`. ESTIMATED CHANGES Modified src/combinatorics/additive/salem_spencer.lean Modified src/combinatorics/configuration.lean +/- theorem configuration.projective_plane.card_lines +/- theorem configuration.projective_plane.card_points +/- theorem configuration.projective_plane.card_points_eq_card_lines +/- theorem configuration.projective_plane.dual.order +/- theorem configuration.projective_plane.line_count_eq +/- theorem configuration.projective_plane.line_count_eq_line_count +/- theorem configuration.projective_plane.line_count_eq_point_count +/- theorem configuration.projective_plane.one_lt_order +/- theorem configuration.projective_plane.point_count_eq +/- theorem configuration.projective_plane.point_count_eq_point_count +/- theorem configuration.projective_plane.two_lt_line_count +/- theorem configuration.projective_plane.two_lt_point_count Modified src/combinatorics/hales_jewett.lean +/- theorem combinatorics.exists_mono_homothetic_copy +/- theorem combinatorics.line.exists_mono_in_high_dimension Modified src/combinatorics/hall/finite.lean Modified src/combinatorics/hindman.lean Modified src/combinatorics/simple_graph/coloring.lean +/- theorem simple_graph.clique_free_of_chromatic_number_lt +/- theorem simple_graph.colorable_chromatic_number_of_fintype + theorem simple_graph.coloring.color_classes_finite - theorem simple_graph.coloring.color_classes_finite_of_fintype +/- theorem simple_graph.is_clique.card_le_chromatic_number +/- theorem simple_graph.is_empty_of_chromatic_number_eq_zero Modified src/combinatorics/simple_graph/partition.lean Modified src/data/setoid/partition.lean + theorem setoid.finite_classes_ker - theorem setoid.nonempty_fintype_classes_ker 2022-08-15 23:11:16 1ec4876 chore(topology/*): Fix lint (#16030) Fix the linting errors coming from `fintype_finite`, `to_additive_doc` and `doc_blame`. ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean + theorem ultrafilter.eq_pure_of_finite - theorem ultrafilter.eq_pure_of_fintype Modified src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/constructions.lean Modified src/topology/algebra/continuous_monoid_hom.lean Modified src/topology/algebra/filter_basis.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/order/compact.lean +/- theorem continuous.exists_forall_le_of_has_compact_mul_support Modified src/topology/category/Profinite/cofiltered_limit.lean + theorem Profinite.exists_locally_constant_finite_aux + theorem Profinite.exists_locally_constant_finite_nonempty - theorem Profinite.exists_locally_constant_fintype_aux - theorem Profinite.exists_locally_constant_fintype_nonempty Modified src/topology/category/Top/open_nhds.lean Modified src/topology/constructions.lean + theorem pi_generate_from_eq_finite - theorem pi_generate_from_eq_fintype Modified src/topology/separation.lean +/- theorem discrete_of_t1_of_finite Modified src/topology/uniform_space/completion.lean +/- def Cauchy.extend 2022-08-15 23:11:15 8a9a16d feat(combinatorics/young_diagram): add Young diagrams (#15822) Add basic definition and initial API for Young diagrams. ESTIMATED CHANGES Added src/combinatorics/young_diagram.lean + theorem young_diagram.cells_bot + theorem young_diagram.cells_inf + theorem young_diagram.cells_ssubset_iff + theorem young_diagram.cells_subset_iff + theorem young_diagram.cells_sup + theorem young_diagram.coe_bot + theorem young_diagram.coe_inf + theorem young_diagram.coe_sup + theorem young_diagram.mem_cells + theorem young_diagram.mem_inf + theorem young_diagram.mem_sup + theorem young_diagram.not_mem_bot + theorem young_diagram.up_left_mem + structure young_diagram 2022-08-15 23:11:14 091ccfb feat(order/bounded_order): with_top.of_dual (#15727) `with_top.to_dual : with_top α ≃ with_bot αᵒᵈ` Also define * `with_top.of_dual` * `with_bot.to_dual` * `with_bot.of_dual` API on the application of these added, their relation to `le` and `lt`, and how they interact with `with_{bot,top}.map` Some `with_top` proofs that broke through the `option` or `order_dual` API have been rephrased to carry over the `with_bot` proofs across these functions. ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem with_bot.le_of_dual_iff + theorem with_bot.le_to_dual_iff + theorem with_bot.lt_of_dual_iff + theorem with_bot.lt_to_dual_iff + theorem with_bot.map_of_dual + theorem with_bot.map_to_dual + theorem with_bot.of_dual_apply_bot + theorem with_bot.of_dual_apply_coe + theorem with_bot.of_dual_le_iff + theorem with_bot.of_dual_le_of_dual_iff + theorem with_bot.of_dual_lt_iff + theorem with_bot.of_dual_lt_of_dual_iff + theorem with_bot.of_dual_map + theorem with_bot.of_dual_symm_apply + theorem with_bot.to_dual_apply_bot + theorem with_bot.to_dual_apply_coe + theorem with_bot.to_dual_le_iff + theorem with_bot.to_dual_le_to_dual_iff + theorem with_bot.to_dual_lt_iff + theorem with_bot.to_dual_lt_to_dual_iff + theorem with_bot.to_dual_map + theorem with_bot.to_dual_symm_apply +/- theorem with_top.coe_le_coe +/- theorem with_top.coe_le_iff +/- theorem with_top.coe_lt_coe +/- theorem with_top.coe_lt_iff +/- theorem with_top.coe_lt_top +/- theorem with_top.le_coe_iff + theorem with_top.le_of_dual_iff + theorem with_top.le_to_dual_iff +/- theorem with_top.lt_iff_exists_coe + theorem with_top.lt_of_dual_iff + theorem with_top.lt_to_dual_iff + theorem with_top.map_of_dual + theorem with_top.map_to_dual + theorem with_top.of_dual_apply_coe + theorem with_top.of_dual_apply_top + theorem with_top.of_dual_le_iff + theorem with_top.of_dual_le_of_dual_iff + theorem with_top.of_dual_lt_iff + theorem with_top.of_dual_lt_of_dual_iff + theorem with_top.of_dual_map + theorem with_top.of_dual_symm_apply +/- theorem with_top.some_le_some +/- theorem with_top.some_lt_none +/- theorem with_top.some_lt_some + theorem with_top.to_dual_apply_coe + theorem with_top.to_dual_apply_top + theorem with_top.to_dual_le_iff + theorem with_top.to_dual_le_to_dual_iff + theorem with_top.to_dual_lt_iff + theorem with_top.to_dual_lt_to_dual_iff + theorem with_top.to_dual_map + theorem with_top.to_dual_symm_apply Modified src/order/hom/basic.lean + theorem with_bot.coe_to_dual_top_equiv_eq - theorem with_bot.to_dual_top_coe + theorem with_bot.to_dual_top_equiv_bot + theorem with_bot.to_dual_top_equiv_coe + theorem with_bot.to_dual_top_equiv_symm_bot + theorem with_bot.to_dual_top_equiv_symm_coe - theorem with_bot.to_dual_top_symm_coe + theorem with_top.coe_to_dual_bot_equiv_eq - theorem with_top.to_dual_bot_coe + theorem with_top.to_dual_bot_equiv_coe + theorem with_top.to_dual_bot_equiv_symm_coe + theorem with_top.to_dual_bot_equiv_symm_top + theorem with_top.to_dual_bot_equiv_top - theorem with_top.to_dual_bot_symm_coe 2022-08-15 23:11:12 75edc28 feat(catgory_theory/sites): Image sheaf (#15282) ESTIMATED CHANGES Modified src/category_theory/sites/subsheaf.lean + def category_theory.grothendieck_topology.image_factorization + def category_theory.grothendieck_topology.image_mono_factorization + def category_theory.grothendieck_topology.image_presheaf + theorem category_theory.grothendieck_topology.image_presheaf_comp_le + theorem category_theory.grothendieck_topology.image_presheaf_id + def category_theory.grothendieck_topology.image_sheaf + def category_theory.grothendieck_topology.image_sheaf_ι + theorem category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι + def category_theory.grothendieck_topology.subpresheaf.lift + theorem category_theory.grothendieck_topology.subpresheaf.lift_ι + theorem category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality + theorem category_theory.grothendieck_topology.subpresheaf.sheafify_le + theorem category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift_unique + def category_theory.grothendieck_topology.to_image_presheaf + theorem category_theory.grothendieck_topology.to_image_presheaf_ι + def category_theory.grothendieck_topology.to_image_sheaf + theorem category_theory.grothendieck_topology.to_image_sheaf_ι + theorem category_theory.grothendieck_topology.top_subpresheaf_obj 2022-08-15 23:11:11 445154a feat(group_theory/divisible): definition of divisible group (#15030) This PR defines divisible group and proves that the set of rationals is divisible and product of divisible group is divisible. Future PR will be opened to prove that divisibility implies injectivity and hence category of abelian group has enough injective and an adjoint functor will transfer enough invectiveness in Ab to R-Mod. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Added src/group_theory/divisible.lean + theorem add_comm_group.smul_top_eq_top_of_divisible_by_int + def group.rootable_by_int_of_rootable_by_nat + def group.rootable_by_nat_of_rootable_by_int + theorem pow_left_surj_of_rootable_by 2022-08-15 23:11:10 8cd4f19 refactor(data/set/basic): Adds `inter_nonempty` to match `union_nonempty`. (#14854) Also changes existing `inter_nonempty` lemmas to match. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.inter_nonempty + theorem set.inter_nonempty_iff_exists_left + theorem set.inter_nonempty_iff_exists_right - theorem set.nonempty_inter_iff_exists_left - theorem set.nonempty_inter_iff_exists_right Modified src/topology/basic.lean 2022-08-15 23:11:09 9f5d911 feat(category_theory/preadditive): inclusion functor from left exact functors to additive functors (#12339) ESTIMATED CHANGES Modified src/category_theory/preadditive/additive_functor.lean + def category_theory.AdditiveFunctor.of_exact + theorem category_theory.AdditiveFunctor.of_exact_obj_fst + def category_theory.AdditiveFunctor.of_left_exact + theorem category_theory.AdditiveFunctor.of_left_exact_obj_fst + def category_theory.AdditiveFunctor.of_right_exact + theorem category_theory.AdditiveFunctor.of_right_exact_obj_fst + theorem category_theory.Additive_Functor.of_exact_map + theorem category_theory.Additive_Functor.of_left_exact_map + theorem category_theory.Additive_Functor.of_right_exact_map 2022-08-15 19:01:29 ed83306 feat(set/prod): decidable mem instance for diagonal (#15846) Membership in `diagonal A` is decidable if we have `decidable_eq A` ESTIMATED CHANGES Modified src/data/set/prod.lean 2022-08-15 12:50:43 3cf22a9 chore(probability/martingale/convergence): fix doc-string (#16062) ESTIMATED CHANGES Modified src/probability/martingale/convergence.lean 2022-08-15 12:50:41 c85d2ff chore(category_theory/limits): generalize universes for limits in punit (#16050) ESTIMATED CHANGES Modified src/category_theory/limits/unit.lean 2022-08-15 12:50:40 6b7e12a feat(category_theory): `discrete punit` is filtered and cofiltered (#16045) ESTIMATED CHANGES Modified src/category_theory/filtered.lean 2022-08-15 12:50:39 92b557b chore(data/polynomial/expand): update docstrings for move (#16044) Ref: #13776. ESTIMATED CHANGES Modified src/data/polynomial/expand.lean Modified src/field_theory/separable.lean 2022-08-15 12:50:38 ecc542a chore(ring_theory/chain_of_divisors): make some variables that can be infered implicit (#16039) A few variables could be made implicit in some of the lemmas in `ring_theory/chain_of_divisors`. I also made a (very) minor stylistic change to a proof from one of my previous PRs in `ring_theory/adjoin_root` ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/chain_of_divisors.lean - theorem multiplicity_eq_multiplicity_factor_dvd_iso_of_mem_normalized_factor + theorem multiplicity_factor_dvd_iso_eq_multiplicity_of_mem_normalized_factor 2022-08-15 12:50:37 ff99668 feat(data/*): `unique` instances for `dfinsupp` and `direct_sum` (#16017) + Add `unique` instances when the codomain types are subsingletons and rename the original `unique` instances (which apply when the domain is empty) to `unique_of_is_empty`. These are in analogy to [pi.unique](https://leanprover-community.github.io/mathlib_docs/logic/unique.html#pi.unique) and [pi.unique_of_is_empty](https://leanprover-community.github.io/mathlib_docs/logic/unique.html#pi.unique_of_is_empty). + Golf the `unique` instances for (d)finsupp using `fun_like.coe_injective.unique`. The names `unique_of_left` and `unique_of_right` remain unchanged in the finsupp case, because finsupp is special in that it consists of non-dependent functions, unlike dfinsupp or direct_sum. (There was a concern that adding `unique` instances would slow down `simp` (see #6025), but it has been fixed in [lean#665](https://github.com/leanprover-community/lean/pull/665).) ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean Modified src/data/dfinsupp/basic.lean Modified src/data/finsupp/basic.lean 2022-08-15 12:50:36 c1b5d21 feat(*): bump to lean 3.46.0 (#15994) The only relevant change is that `is_strict_total_order` had a redundant assumption removed, and is now exactly the same as `is_strict_total_order'`. This old assumption is proved in `order/rel_classes.lean`, which has to be added as an import to a file, leading to two non-terminal `simp`s breaking. Of course, the idea is to remove `is_strict_total_order'` in a follow-up PR. ESTIMATED CHANGES Modified leanpkg.toml Modified src/data/rbmap/default.lean Modified src/data/rbtree/main.lean Modified src/order/rel_classes.lean 2022-08-15 10:22:20 674ff19 feat(order/conditionally_complete_lattice): add `with_top.supr_coe_eq_top` and `with_top.supr_coe_lt_top` (#15979) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem with_top.supr_coe_eq_top + theorem with_top.supr_coe_lt_top 2022-08-15 09:04:33 8df20db feat(analysis/convex/topology): minimize import (#16052) Importing `analysis/normed_space/finite_dimension` was problematic for defining the strong operator topology because this needs quite a few facts about convexity but it has to be defined before `continuous_linear_map.has_op_norm`. ESTIMATED CHANGES Modified src/analysis/convex/strict_convex_space.lean Modified src/analysis/convex/topology.lean 2022-08-15 09:04:32 4a379da feat(analysis/normed_space/basic): change `homeomorph_unit_ball` to make it obviously smooth (#15980) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/inner_product_space/calculus.lean + theorem cont_diff_homeomorph_unit_ball + theorem cont_diff_on_homeomorph_unit_ball_symm Modified src/analysis/normed_space/basic.lean + theorem coe_homeomorph_unit_ball_apply_zero +/- def homeomorph_unit_ball 2022-08-14 08:34:11 6313863 chore(algebra/algebra/unitization): update `comm_semiring` instance for `unitization` (#16048) The `comm_monoid` and `comm_semiring` instances for `unitization` had type class restrictions that were too strong because `non_unital_comm_semiring` didn't exist at the time `unitization` was created. This drops those restrictions. ESTIMATED CHANGES Modified src/algebra/algebra/unitization.lean 2022-08-14 02:18:05 3baad3b feat(model_theory/syntax): Swapping between constants and variables (#14018) `term.constants_vars_equiv` and `bounded_formula.constants_vars_equiv` send terms/formulas with constants to terms/formulas with extra variables and back. ESTIMATED CHANGES Modified src/model_theory/language_map.lean + theorem first_order.language.Lhom.fun_map_sum_inl + theorem first_order.language.Lhom.fun_map_sum_inr + theorem first_order.language.Lhom.map_on_function + theorem first_order.language.Lhom.map_on_relation +/- def first_order.language.with_constants + theorem first_order.language.with_constants_fun_map_sum_inl + theorem first_order.language.with_constants_fun_map_sum_inr + theorem first_order.language.with_constants_rel_map_sum_inl Modified src/model_theory/order.lean Modified src/model_theory/semantics.lean + theorem first_order.language.bounded_formula.realize_constants_vars_equiv + theorem first_order.language.term.realize_constants_to_vars + theorem first_order.language.term.realize_constants_vars_equiv_left + theorem first_order.language.term.realize_vars_to_constants Modified src/model_theory/substructures.lean Modified src/model_theory/syntax.lean + def first_order.language.bounded_formula.constants_vars_equiv + def first_order.language.term.constants_to_vars + def first_order.language.term.constants_vars_equiv + def first_order.language.term.constants_vars_equiv_left + theorem first_order.language.term.constants_vars_equiv_left_apply + theorem first_order.language.term.constants_vars_equiv_left_symm_apply + def first_order.language.term.relabel_equiv + def first_order.language.term.vars_to_constants 2022-08-13 19:21:19 8a03229 feat(category_theory/limits): cone F ≌ costructured_arrow (const J) F (#15796) This will be used to show that `C` has limits of shape `J` if and only if `const J` has a right adjoint. ESTIMATED CHANGES Modified src/category_theory/limits/cone_category.lean + def category_theory.limits.cocone.equiv_structured_arrow + def category_theory.limits.cocone.from_structured_arrow + def category_theory.limits.cocone.to_structured_arrow + def category_theory.limits.cone.equiv_costructured_arrow + def category_theory.limits.cone.from_costructured_arrow + def category_theory.limits.cone.to_costructured_arrow Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocones.eta + def category_theory.limits.cones.eta Modified src/category_theory/structured_arrow.lean + def category_theory.costructured_arrow.eta + def category_theory.structured_arrow.eta 2022-08-13 17:43:06 31800d8 refactor(topology/constructions): review `quotient` API (#15986) * rename `continuous_quotient_lift` to `continuous.quotient_lift`; * rename `continuous_quotient_lift_on'` to `continuous.quotient_lift_on'`; * add `continuous.quotient_map'` and use it to golf some proofs. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/topology/algebra/group.lean Modified src/topology/connected.lean Modified src/topology/constructions.lean + theorem continuous.quotient_lift + theorem continuous.quotient_lift_on' + theorem continuous.quotient_map' - theorem continuous_quotient_lift - theorem continuous_quotient_lift_on' 2022-08-13 07:30:14 239d882 refactor(category_theory/epi_mono): is_split_epi and split_epi (#16036) This PR makes a distinction between the class `is_split_epi f` which is a `Prop` and `split_epi f` which contains the datum of a section of `f`. ESTIMATED CHANGES Modified src/category_theory/adjunction/reflective.lean + theorem category_theory.mem_ess_image_of_unit_is_split_mono - theorem category_theory.mem_ess_image_of_unit_split_mono Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/closed/ideal.lean Modified src/category_theory/epi_mono.lean + theorem category_theory.is_iso.of_epi_section' +/- theorem category_theory.is_iso.of_epi_section + theorem category_theory.is_iso.of_mono_retraction' +/- theorem category_theory.is_iso.of_mono_retraction + theorem category_theory.is_iso_of_epi_of_is_split_mono - theorem category_theory.is_iso_of_epi_of_split_mono + theorem category_theory.is_iso_of_mono_of_is_split_epi - theorem category_theory.is_iso_of_mono_of_split_epi + theorem category_theory.is_split_epi.id + theorem category_theory.is_split_epi.mk' + theorem category_theory.is_split_epi_of_epi + theorem category_theory.is_split_mono.id + theorem category_theory.is_split_mono.mk' + theorem category_theory.is_split_mono_of_mono - def category_theory.retraction - def category_theory.section_ + theorem category_theory.split_epi.epi - theorem category_theory.split_epi.id + def category_theory.split_epi.map + def category_theory.split_epi.split_mono + structure category_theory.split_epi - def category_theory.split_epi_of_epi - theorem category_theory.split_mono.id + def category_theory.split_mono.map + theorem category_theory.split_mono.mono + def category_theory.split_mono.split_epi + structure category_theory.split_mono - def category_theory.split_mono_of_mono Modified src/category_theory/functor/epi_mono.lean - def category_theory.functor.map_split_epi - def category_theory.functor.map_split_mono Modified src/category_theory/generator.lean Modified src/category_theory/limits/constructions/weakly_initial.lean Modified src/category_theory/limits/preserves/shapes/biproducts.lean - theorem category_theory.functor.retraction_biprod_comparison' - theorem category_theory.functor.retraction_biproduct_comparison' - theorem category_theory.functor.section_biprod_comparison - theorem category_theory.functor.section_biproduct_comparison + def category_theory.functor.split_epi_biprod_comparison + def category_theory.functor.split_epi_biproduct_comparison + def category_theory.functor.split_mono_biprod_comparison' + def category_theory.functor.split_mono_biproduct_comparison' Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.binary_bicone_of_is_split_epi_of_kernel + def category_theory.limits.binary_bicone_of_is_split_mono_of_cokernel - def category_theory.limits.binary_bicone_of_split_epi_of_kernel - def category_theory.limits.binary_bicone_of_split_mono_of_cokernel + def category_theory.limits.is_bilimit_binary_bicone_of_is_split_epi_of_kernel + def category_theory.limits.is_bilimit_binary_bicone_of_is_split_mono_of_cokernel - def category_theory.limits.is_bilimit_binary_bicone_of_split_epi_of_kernel - def category_theory.limits.is_bilimit_binary_bicone_of_split_mono_of_cokernel Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cocone_of_is_split_epi + theorem category_theory.limits.cocone_of_is_split_epi_π - def category_theory.limits.cocone_of_split_epi - theorem category_theory.limits.cocone_of_split_epi_π + def category_theory.limits.cone_of_is_split_mono + theorem category_theory.limits.cone_of_is_split_mono_ι - def category_theory.limits.cone_of_split_mono - theorem category_theory.limits.cone_of_split_mono_ι + def category_theory.limits.is_split_epi_coequalizes + def category_theory.limits.is_split_mono_equalizes - def category_theory.limits.split_epi_coequalizes - def category_theory.limits.split_mono_equalizes Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/terminal.lean + theorem category_theory.limits.is_initial.is_split_epi_to - def category_theory.limits.is_initial.split_epi_to + theorem category_theory.limits.is_terminal.is_split_mono_from - def category_theory.limits.is_terminal.split_mono_from Modified src/category_theory/limits/shapes/zero_morphisms.lean + theorem category_theory.limits.is_zero.iff_is_split_epi_eq_zero + theorem category_theory.limits.is_zero.iff_is_split_mono_eq_zero - theorem category_theory.limits.is_zero.iff_split_epi_eq_zero - theorem category_theory.limits.is_zero.iff_split_mono_eq_zero Modified src/category_theory/simple.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/sites/sieves.lean + def category_theory.sieve.galois_insertion_of_is_split_epi - def category_theory.sieve.galois_insertion_of_split_epi + theorem category_theory.sieve.generate_of_contains_is_split_epi - theorem category_theory.sieve.generate_of_contains_split_epi + theorem category_theory.sieve.generate_of_singleton_is_split_epi - theorem category_theory.sieve.generate_of_singleton_split_epi Modified src/category_theory/types.lean 2022-08-13 03:16:24 b5b30b0 chore(scripts): update nolints.txt (#16037) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-12 21:16:13 43e859a feat(probability/martingale/convergence): a.e. martingale convergence theorem (#15904) This PR proves the a.e. martingale convergence while a later PR will show the L¹ version. I've also added a new `martingale` folder in the `probability` folder as there are a few files regarding martingales now. ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.ae_bdd_liminf_at_top_of_snorm_bdd + theorem measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd Renamed src/probability/martingale.lean to src/probability/martingale/basic.lean Added src/probability/martingale/convergence.lean + theorem measure_theory.not_frequently_of_upcrossings_lt_top + theorem measure_theory.submartingale.ae_tendsto_limit_process + theorem measure_theory.submartingale.exists_ae_tendsto_of_bdd + theorem measure_theory.submartingale.exists_ae_trim_tendsto_of_bdd + theorem measure_theory.submartingale.mem_ℒp_limit_process + theorem measure_theory.submartingale.upcrossings_ae_lt_top' + theorem measure_theory.submartingale.upcrossings_ae_lt_top + theorem measure_theory.tendsto_of_uncrossing_lt_top + theorem measure_theory.upcrossings_eq_top_of_frequently_lt Renamed src/probability/upcrossing.lean to src/probability/martingale/upcrossing.lean Modified src/probability/stopping.lean + def measure_theory.filtration.limit_process + theorem measure_theory.filtration.mem_ℒp_limit_process_of_snorm_bdd + theorem measure_theory.filtration.strongly_measurable_limit_process' + theorem measure_theory.filtration.strongly_measurable_limit_process Modified src/topology/instances/ennreal.lean + theorem ennreal.exists_frequently_lt_of_liminf_ne_top' + theorem ennreal.exists_frequently_lt_of_liminf_ne_top + theorem ennreal.exists_upcrossings_of_not_bounded_under 2022-08-12 20:30:49 e1443c9 doc(ring_theory/valuation/valuation_subring): fix docstring (#16034) ESTIMATED CHANGES Modified src/ring_theory/valuation/valuation_subring.lean 2022-08-12 17:53:08 0b8f638 feat(category_theory/preadditive/injective): Adjoint functors preserves injective objects (#15935) For a pair of adjoint functors, if the left adjoint preserves monomorphism, then the right adjoint preserves injective object ESTIMATED CHANGES Modified src/category_theory/preadditive/injective.lean + theorem category_theory.injective.injective_of_adjoint 2022-08-12 16:58:58 58cef51 feat(algebra/module/bimodule): basic definitions for subbimodules (#14465) ESTIMATED CHANGES Added src/algebra/module/bimodule.lean + def subbimodule.base_change + def subbimodule.mk + theorem subbimodule.smul_mem' + theorem subbimodule.smul_mem + def subbimodule.to_subbimodule_int + def subbimodule.to_subbimodule_nat + def subbimodule.to_submodule' + def subbimodule.to_submodule Modified src/ring_theory/tensor_product.lean + def tensor_product.algebra.module_aux + theorem tensor_product.algebra.module_aux_apply + theorem tensor_product.algebra.smul_def Modified test/instance_diamonds.lean 2022-08-12 14:28:45 26e3eea feat(group_theory/group_action/defs): `vadd_assoc_class` (#15844) Additivize `is_scalar_tower` into a new class `vadd_assoc_class`. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/data/finset/pointwise.lean Modified src/data/set/pointwise.lean Modified src/group_theory/group_action/defs.lean +/- theorem has_smul.comp.is_scalar_tower +/- theorem smul_assoc +/- theorem smul_one_mul +/- theorem smul_one_smul Modified src/order/filter/pointwise.lean 2022-08-12 09:58:10 f1944b3 refactor(*): Extend `×ˢ` notation (#15717) Delete `has_set_prod` in favor of a direct notation declaration. Overload that notation with the `list`, `finset`, `multiset` versions. Use the new notation and remove type ascriptions to the existing uses where possible (because Lean gets more information from the notation now). ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified archive/100-theorems-list/81_sum_of_prime_reciprocals_diverges.lean Modified src/algebra/algebra/subalgebra/basic.lean +/- theorem subalgebra.coe_prod Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/ring.lean Modified src/algebra/direct_sum/internal.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/indicator_function.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/analysis/calculus/cont_diff.lean Modified src/analysis/convex/combination.lean Modified src/analysis/normed/field/basic.lean Modified src/combinatorics/additive/salem_spencer.lean Modified src/combinatorics/simple_graph/density.lean +/- def rel.interedges Modified src/computability/turing_machine.lean Modified src/data/fin_enum.lean Modified src/data/finset/functor.lean Modified src/data/finset/lattice.lean Modified src/data/finset/n_ary.lean Modified src/data/finset/pointwise.lean +/- theorem finset.div_def +/- theorem finset.image_div_prod +/- theorem finset.image_mul_product +/- theorem finset.image_smul_product +/- theorem finset.mul_def +/- theorem finset.smul_def Modified src/data/finset/prod.lean +/- theorem finset.card_product +/- def finset.diag +/- theorem finset.diag_union_off_diag +/- theorem finset.empty_product +/- theorem finset.mem_product +/- theorem finset.mk_mem_product +/- theorem finset.nonempty.fst +/- theorem finset.nonempty.product +/- theorem finset.nonempty.snd +/- theorem finset.nonempty_product +/- def finset.off_diag +/- theorem finset.product_empty +/- theorem finset.product_eq_empty +/- theorem finset.product_sdiff_diag +/- theorem finset.product_sdiff_off_diag +/- theorem finset.product_subset_product +/- theorem finset.product_subset_product_left +/- theorem finset.product_subset_product_right +/- theorem finset.product_val Modified src/data/finset/sym.lean Modified src/data/fintype/basic.lean Modified src/data/list/defs.lean Modified src/data/multiset/bind.lean +/- theorem multiset.add_product +/- theorem multiset.card_product +/- theorem multiset.cons_product +/- theorem multiset.product_add +/- theorem multiset.product_singleton Modified src/data/set/finite.lean Modified src/data/set/pairwise.lean Modified src/data/set/pointwise.lean Modified src/data/set/prod.lean +/- theorem set.nonempty.fst +/- theorem set.nonempty.prod +/- theorem set.nonempty.snd + def set.prod +/- theorem set.prod_eq_prod_iff_of_nonempty +/- theorem set.prod_nonempty_iff Modified src/data/sym/sym2.lean Modified src/geometry/manifold/cont_mdiff.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/tangent_bundle.lean Modified src/group_theory/schreier.lean Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.coe_prod Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.coe_prod Modified src/group_theory/subsemigroup/operations.lean +/- theorem subsemigroup.coe_prod Modified src/linear_algebra/span.lean +/- theorem submodule.prod_coe Modified src/logic/equiv/set.lean Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/circle_integral_transform.lean Modified src/measure_theory/measurable_space.lean +/- theorem measurable_set_prod_of_nonempty Modified src/measure_theory/measure/lebesgue.lean +/- theorem region_between_subset Modified src/model_theory/syntax.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/divisors.lean Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean Modified src/order/filter/prod.lean Modified src/order/locally_finite.lean Modified src/order/partition/finpartition.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/graded_algebra/radical.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/subring/basic.lean +/- theorem subring.coe_prod Modified src/ring_theory/subsemiring/basic.lean +/- theorem subsemiring.coe_prod Modified src/ring_theory/witt_vector/defs.lean +/- theorem witt_vector.witt_add_vars +/- theorem witt_vector.witt_mul_vars +/- theorem witt_vector.witt_neg_vars +/- theorem witt_vector.witt_sub_vars Modified src/ring_theory/witt_vector/mul_coeff.lean +/- theorem witt_vector.poly_of_interest_vars +/- theorem witt_vector.remainder_vars +/- theorem witt_vector.witt_poly_prod_vars Modified src/ring_theory/witt_vector/structure_polynomial.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/order/floor.lean Modified src/topology/constructions.lean Modified src/topology/fiber_bundle.lean Modified src/topology/sets/compacts.lean +/- theorem topological_space.compacts.coe_prod Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/vector_bundle/basic.lean Modified src/topology/vector_bundle/hom.lean Modified src/topology/vector_bundle/prod.lean Modified src/topology/vector_bundle/pullback.lean 2022-08-12 07:57:38 24a55a0 feat(category_theory/abelian): injective coseparator from separator and enough injectives (#15495) ESTIMATED CHANGES Modified docs/references.bib Added src/category_theory/abelian/generator.lean + theorem category_theory.abelian.has_injective_coseparator + theorem category_theory.abelian.has_projective_separator Modified src/category_theory/abelian/subobject.lean 2022-08-12 04:23:51 fc739bf feat(category_theory/localization): extension of natural transformations (#15747) ESTIMATED CHANGES Modified src/category_theory/localization/construction.lean + def category_theory.localization.construction.Winv + theorem category_theory.localization.construction.morphism_property_is_top' + theorem category_theory.localization.construction.morphism_property_is_top + def category_theory.localization.construction.nat_trans_extension.app + theorem category_theory.localization.construction.nat_trans_extension.app_eq + def category_theory.localization.construction.nat_trans_extension + theorem category_theory.localization.construction.nat_trans_extension_hcomp + def category_theory.localization.construction.obj_equiv Modified src/category_theory/morphism_property.lean + theorem category_theory.morphism_property.naturality_property.is_stable_under_composition + theorem category_theory.morphism_property.naturality_property.is_stable_under_inverse + def category_theory.morphism_property.naturality_property + def category_theory.morphism_property.stable_under_inverse 2022-08-12 03:39:49 bd98041 chore(scripts): update nolints.txt (#16020) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-11 23:10:41 58d9778 chore(set_theory/ordinal/arithmetic): clean up `is_normal.sup` and related (#15162) We golf various theorems and tweak their arguments. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.is_normal.is_limit +/- theorem ordinal.is_normal.le_iff_eq +/- theorem ordinal.is_normal.le_set' +/- theorem ordinal.is_normal.le_set +/- theorem ordinal.is_normal.refl +/- theorem ordinal.is_normal.sup +/- theorem ordinal.is_normal.trans Modified src/set_theory/ordinal/topology.lean 2022-08-11 22:08:28 8cfa836 feat(analysis/inner_product_space/l2_space): if `K` is a complete submodule then `E` is the Hilbert sum of `K` and `Kᗮ` (#15792) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem submodule.orthogonal_family_self Modified src/analysis/inner_product_space/l2_space.lean + theorem submodule.is_hilbert_sum_orthogonal 2022-08-11 21:15:05 a9f9960 feat(geometry/manifold/complex): holomorphic functions are locally constant (#16015) Prove that a holomorphic function on a compact complex manifold is locally constant. This is nearly a trivial consequence of #15667 and #15965; the only new input is that a charted space modelled on a locally connected space is locally connected. ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + theorem charted_space.locally_connected_space Modified src/geometry/manifold/complex.lean 2022-08-11 21:15:04 de4a9ed feat(ring_theory/roots_of_unity): generalisation linter (#16014) This was really a huge generalisation of many results, and in fact now no results in this file depend on things being fields (just char-zero integral domains, such as ℤ!) Also a thanks to @YaelDillies for the division_monoid refactor, which united many similar-looking results here. This will be very helpful on `flt_regular`! ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean - theorem is_primitive_root.inv' - theorem is_primitive_root.inv_iff' +/- theorem is_primitive_root.map_iff_of_injective +/- theorem is_primitive_root.map_of_injective +/- theorem is_primitive_root.of_map_of_injective - theorem is_primitive_root.zpow_eq_one_iff_dvd₀ - theorem is_primitive_root.zpow_eq_one₀ - theorem is_primitive_root.zpow_of_gcd_eq_one₀ 2022-08-11 18:43:05 76fd4b2 feat(number_theory/cyclotomic/gal): generalise a little (#16012) Found using the generalisation linter. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/gal.lean 2022-08-11 18:43:03 c590a23 chore(number_theory/wilson): trivial strengthening (#16008) ESTIMATED CHANGES Modified src/number_theory/wilson.lean +/- theorem nat.prime_iff_fac_equiv_neg_one 2022-08-11 18:43:02 acae0c3 chore(data/polynomial/derivative): use 'nat_cast' rather than 'cast_nat' for consistency (#16005) ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean - theorem polynomial.derivative_cast_nat + theorem polynomial.derivative_nat_cast - theorem polynomial.iterate_derivative_cast_nat_mul + theorem polynomial.iterate_derivative_nat_cast_mul Modified src/ring_theory/polynomial/bernstein.lean 2022-08-11 18:43:01 fc32854 feat(algebra/order/sub): add `canonically_ordered_add_monoid.to_add_cancel_comm_monoid` (#15955) We don't have a typeclass for cancellative ordered additive monoids (such as `nat` or finsupps with nat as their codomain). This definition is enough to create the instance mid-proof if needed, so is better than nothing. We already have similar definitions such as `no_zero_divisors.to_cancel_comm_monoid` for rings. ESTIMATED CHANGES Modified src/algebra/order/sub.lean + def canonically_ordered_add_monoid.to_add_cancel_comm_monoid 2022-08-11 18:43:00 eb5be8a feat(data/fin/basic): coe_sub_iff_{le,lt} (#15930) Also clean up the `order_dual` definition and proofs. Add ``` nat.mod_eq_iff_lt @[simp] nat.mod_succ_eq_iff_lt ``` ESTIMATED CHANGES Modified archive/miu_language/decision_nec.lean Modified src/data/fin/basic.lean + theorem fin.coe_sub_iff_le + theorem fin.coe_sub_iff_lt Modified src/data/nat/basic.lean + theorem nat.mod_eq_iff_lt + theorem nat.mod_succ_eq_iff_lt 2022-08-11 18:42:58 7dff8ed fix(algebra/order/field_defs): move definitions to a separate file (#15783) Considering the "saving olean" bug, this will provide a stopgap to at least make compilation times be smaller. ESTIMATED CHANGES Modified src/algebra/order/field.lean Added src/algebra/order/field_defs.lean 2022-08-11 18:42:57 802513c feat(ring_theory/adjoin_root): a bit of missing API for maps between certain quotients of `adjoin_root f` (#15757) A few lemmas needed for #15000. ESTIMATED CHANGES Modified src/algebra/ring/equiv.lean + theorem ring_equiv.symm_trans_apply Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.polynomial.quot_quot_equiv_comm_mk - theorem adjoin_root.polynomial.quot_quot_equiv_comm_mk_mk + theorem adjoin_root.polynomial.quot_quot_equiv_comm_symm_mk_mk + def adjoin_root.quot_adjoin_root_equiv_quot_polynomial_quot + theorem adjoin_root.quot_adjoin_root_equiv_quot_polynomial_quot_symm_mk_mk + theorem adjoin_root.quot_map_C_map_span_mk_equiv_quot_map_C_quot_map_span_mk_symm_quot_quot_mk - def adjoin_root.quot_map_of_equiv + theorem adjoin_root.quot_map_of_equiv_quot_map_C_map_span_mk_symm_mk Modified src/ring_theory/ideal/quotient.lean + theorem ideal.quot_equiv_of_eq_symm 2022-08-11 18:42:55 811da36 feat(representation_theory/group_cohomology_resolution): show k[G^(n + 1)] is free over k[G] (#15501) Defines an isomorphism $k[G^{n + 1}] \cong k[G] \otimes_k k[G^n].$ Also shows that given a $k$-algebra $R$ and a $k$-basis for a module $M,$ we get an $R$-basis of $R \otimes_k M.$ Then, using that, we show $k[G^{n + 1}]$ is free. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + theorem fin.partial_prod_left_inv + theorem fin.partial_prod_right_inv Modified src/linear_algebra/basic.lean + theorem finsupp.linear_equiv.finsupp_unique_apply + theorem finsupp.linear_equiv.finsupp_unique_symm_apply Modified src/logic/equiv/basic.lean + theorem equiv.coe_prod_unique + theorem equiv.coe_unique_prod + theorem equiv.prod_unique_apply + theorem equiv.prod_unique_symm_apply + theorem equiv.unique_prod_apply + theorem equiv.unique_prod_symm_apply Modified src/representation_theory/basic.lean + theorem representation.of_mul_action_self_smul_eq_mul + theorem representation.smul_one_tprod_as_module + theorem representation.smul_tprod_one_as_module Modified src/representation_theory/group_cohomology_resolution.lean + def group_cohomology.resolution.equiv_tensor + theorem group_cohomology.resolution.equiv_tensor_def + theorem group_cohomology.resolution.equiv_tensor_inv_def + def group_cohomology.resolution.of_mul_action_basis + def group_cohomology.resolution.of_mul_action_basis_aux + theorem group_cohomology.resolution.of_mul_action_free + theorem group_cohomology.resolution.to_tensor_aux_left_inv + theorem group_cohomology.resolution.to_tensor_aux_right_inv Modified src/ring_theory/tensor_product.lean + theorem algebra.tensor_product.basis_aux_map_smul + theorem algebra.tensor_product.basis_aux_tmul + theorem algebra.tensor_product.basis_repr_symm_apply + theorem algebra.tensor_product.basis_repr_tmul 2022-08-11 18:42:54 557f5e5 feat(algebra/add_monoid_algebra/degree): new file with lemmas about support.sup/inf (#15413) This PR contains the initial lemmas that prove basic properties about `finset.support.sup/inf`, with a view towards defining `degree`s for `add_monoid_algebra`s. It is split off from #15296. ESTIMATED CHANGES Added src/algebra/monoid_algebra/degree.lean + theorem add_monoid_algebra.le_inf_support_add + theorem add_monoid_algebra.le_inf_support_finset_prod + theorem add_monoid_algebra.le_inf_support_list_prod + theorem add_monoid_algebra.le_inf_support_mul + theorem add_monoid_algebra.le_inf_support_multiset_prod + theorem add_monoid_algebra.le_inf_support_pow + theorem add_monoid_algebra.sup_support_add_le + theorem add_monoid_algebra.sup_support_finset_prod_le + theorem add_monoid_algebra.sup_support_list_prod_le + theorem add_monoid_algebra.sup_support_mul_le + theorem add_monoid_algebra.sup_support_multiset_prod_le + theorem add_monoid_algebra.sup_support_pow_le 2022-08-11 16:08:06 e2ba6de feat(linear_algebra/span, matrix, finite_dimensional): new lemmas (#16006) + Introduce `submodule.supr_span` and deduce `submodule.supr_eq_span` from it. + Use supr_span to prove that the range of `matrix.to_lin' M` is spanned by column vectors of `M`. + Show the rank of a finite set in a vector space is at most the cardinality of the indexing type (`finrank_range_le_card`), so in order to show the set is linearly independent, it suffices to prove the reverse inequality (`linear_independent_iff_card_le_finrank_span`). Spinoff of [Zulip question](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/more.20linear.20algebra/near/292630550) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem finrank_range_le_card + theorem linear_independent_iff_card_le_finrank_span Modified src/linear_algebra/matrix/to_lin.lean + theorem matrix.range_to_lin' Modified src/linear_algebra/span.lean +/- theorem submodule.supr_eq_span + theorem submodule.supr_span 2022-08-11 16:08:05 66b8fa7 feat(topology/algebra/uniform_group): drop commutativity assumption in `topological_group.to_uniform_space` (#16004) ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean 2022-08-11 16:08:04 2fae5fd feat(algebra/char_p): use `finite` instead of `fintype` (#16002) * rename `char_ne_zero_of_fintype` to `char_ne_zero_of_finite`, use `[finite _]`; * rename `ring_char_ne_zero_of_fintype` to `ring_char_ne_zero_of_finite`, use `[finite _]`; * split `is_unit_iff_not_dvd_char_of_ring_char_ne_zero` from the proof of `is_unit_iff_not_dvd_char`; * add aliases `is_coprime.nat_coprime` and `nat.coprime.is_coprime`. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem char_p.char_ne_zero_of_finite - theorem char_p.char_ne_zero_of_fintype + theorem char_p.ring_char_ne_zero_of_finite - theorem char_p.ring_char_ne_zero_of_fintype Modified src/algebra/char_p/char_and_card.lean +/- theorem is_unit_iff_not_dvd_char + theorem is_unit_iff_not_dvd_char_of_ring_char_ne_zero Modified src/ring_theory/coprime/lemmas.lean 2022-08-11 16:08:02 32a432c feat(topology/separation): add `t0_space.of_cover` (#15982) Also use it in `algebraic_geometry.properties`. ESTIMATED CHANGES Modified src/algebraic_geometry/properties.lean Modified src/topology/separation.lean + theorem t0_space.of_cover + theorem t0_space.of_open_cover 2022-08-11 16:08:01 41cf8de feat(ring_theory/algebraic): `alg_hom` from an algebraic extension to itself is bijective (#15873) + Generalizes `alg_hom.bijective` and [alg_equiv_equiv_alg_hom](https://leanprover-community.github.io/mathlib_docs/linear_algebra/finite_dimensional.html#alg_equiv_equiv_alg_hom) and move them so that they can be derived from the generalized versions. Upgrade `alg_equiv_equiv_alg_hom` to a `mul_equiv` by introducing the monoid instance `alg_hom.End` on self-alg_homs. + Show that algebraicity of an algebra is preserved under alg_equiv (`alg_equiv.is_algebraic_iff`). [Zulip](https://leanprover.zulipchat.com/#narrow/stream/304774-FLT-regular/topic/Project.20status/near/292112817) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.mul_apply + theorem alg_hom.one_apply Modified src/data/polynomial/ring_division.lean + theorem polynomial.root_set_maps_to Modified src/field_theory/galois.lean Modified src/linear_algebra/finite_dimensional.lean - theorem alg_hom.bijective Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/ring_theory/algebraic.lean + theorem alg_equiv.is_algebraic + theorem alg_equiv.is_algebraic_iff + theorem alg_hom.bijective + def algebra.is_algebraic.alg_equiv_equiv_alg_hom + theorem algebra.is_algebraic.alg_hom_bijective + theorem is_algebraic_alg_hom_of_is_algebraic 2022-08-11 16:08:00 d853174 feat(ring_theory/derivation): The kernel of the map `S ⊗[R] S →ₐ[R] S`. (#15856) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + def derivation.llcomp + def derivation.tensor_product_to + theorem derivation.tensor_product_to_mul + theorem derivation.tensor_product_to_tmul + def derivation_module.ideal + theorem derivation_module.one_smul_sub_smul_one_mem_ideal + theorem derivation_module.span_range_eq_ideal + theorem derivation_module.submodule_span_range_eq_ideal 2022-08-11 16:07:59 87e9e26 feat (data/multiset/powerset): add bind_powerset_len (#15824) We prove the following result ```lean lemma multiset.bind_powerset_len {α : Type*} (S : multiset α) : bind (multiset.range (S.card + 1)) (λ k, S.powerset_len k) = S.powerset ``` From flt-regular ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem multiset.sup_powerset_len Modified src/data/multiset/antidiagonal.lean + theorem multiset.antidiagonal_eq_map_powerset Modified src/data/multiset/basic.lean + theorem multiset.cons_sub_of_le Modified src/data/multiset/powerset.lean + theorem multiset.bind_powerset_len + theorem multiset.disjoint_powerset_len 2022-08-11 16:07:57 796f267 refactor(category_theory/lifting_properties): refactor lifting properties using comm_sq (#15765) ESTIMATED CHANGES Modified src/category_theory/arrow.lean - theorem category_theory.arrow.has_lift.mk - theorem category_theory.arrow.lift.fac_left - theorem category_theory.arrow.lift.fac_left_of_from_mk - theorem category_theory.arrow.lift.fac_right - theorem category_theory.arrow.lift.fac_right_of_to_mk - theorem category_theory.arrow.lift_mk'_left - theorem category_theory.arrow.lift_mk'_right - structure category_theory.arrow.lift_struct Modified src/category_theory/comm_sq.lean + theorem category_theory.comm_sq.fac_left + theorem category_theory.comm_sq.fac_right + theorem category_theory.comm_sq.has_lift.iff + theorem category_theory.comm_sq.has_lift.iff_op + theorem category_theory.comm_sq.has_lift.iff_unop + theorem category_theory.comm_sq.has_lift.mk' + def category_theory.comm_sq.lift + def category_theory.comm_sq.lift_struct.op + def category_theory.comm_sq.lift_struct.op_equiv + def category_theory.comm_sq.lift_struct.unop + def category_theory.comm_sq.lift_struct.unop_equiv + structure category_theory.comm_sq.lift_struct Deleted src/category_theory/lifting_properties.lean - theorem category_theory.has_right_lifting_property_comp' - theorem category_theory.has_right_lifting_property_comp - theorem category_theory.id_has_right_lifting_property' - theorem category_theory.id_has_right_lifting_property - theorem category_theory.iso_has_right_lifting_property - theorem category_theory.right_lifting_property_initial_iff - def category_theory.right_lifting_subcat.X - def category_theory.right_lifting_subcat - def category_theory.right_lifting_subcategory Added src/category_theory/lifting_properties/basic.lean + theorem category_theory.has_lifting_property.iff_op + theorem category_theory.has_lifting_property.iff_unop + theorem category_theory.has_lifting_property.op + theorem category_theory.has_lifting_property.unop Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/strong_epi.lean + theorem category_theory.strong_epi.mk' + theorem category_theory.strong_mono.mk' 2022-08-11 16:07:56 70d5733 feat(combinatorics/set_family/compression/down): Down-compression (#15246) Define the down-compression of set families. Down-compressing `𝒜 : finset (finset α)` along `a : α` means removing `a` for the elements of `𝒜` that contain it for the sets whose image is not yet there. Move `finset.member_subfamily`/`finset.non_member_subfamily` to that new file and rename them to `finset.member_section`/`finset.non_member_section` to match the literature. ESTIMATED CHANGES Added src/combinatorics/set_family/compression/down.lean + theorem down.card_compression + def down.compression + theorem down.compression_idem + theorem down.erase_mem_compression + theorem down.erase_mem_compression_of_mem_compression + theorem down.mem_compression + theorem down.mem_compression_of_insert_mem_compression + theorem finset.card_member_subfamily_add_card_non_member_subfamily + theorem finset.mem_member_subfamily + theorem finset.mem_non_member_subfamily + def finset.member_subfamily + theorem finset.member_subfamily_inter + theorem finset.member_subfamily_member_subfamily + theorem finset.member_subfamily_non_member_subfamily + theorem finset.member_subfamily_union + theorem finset.member_subfamily_union_non_member_subfamily + def finset.non_member_subfamily + theorem finset.non_member_subfamily_inter + theorem finset.non_member_subfamily_member_subfamily + theorem finset.non_member_subfamily_non_member_subfamily + theorem finset.non_member_subfamily_union Modified src/combinatorics/set_family/harris_kleitman.lean - theorem finset.card_member_subfamily_add_card_non_member_subfamily - theorem finset.mem_member_subfamily - theorem finset.mem_non_member_subfamily - def finset.member_subfamily - theorem finset.member_subfamily_inter - def finset.non_member_subfamily - theorem finset.non_member_subfamily_inter 2022-08-11 13:51:13 8086825 chore(order/conditionally_complete_lattice): `with_top.coe_infi` and `with_top.coe_supr` (#15975) This adds `infi` and `supr` versions of the existing `Inf` and `Sup` lemmas, and adds some more general primed lemmas that work when much weaker assumptions are available on `α`. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem with_bot.coe_Inf' + theorem with_bot.coe_Sup' + theorem with_bot.coe_infi + theorem with_bot.coe_supr + theorem with_bot.csupr_empty + theorem with_top.cinfi_empty + theorem with_top.coe_Inf' +/- theorem with_top.coe_Inf + theorem with_top.coe_Sup' +/- theorem with_top.coe_Sup + theorem with_top.coe_infi + theorem with_top.coe_supr 2022-08-11 11:21:38 a21a8bc chore(data/mv_polynomial/basic): spacing (#16001) We remove some unnecessary spaces in the module docs, and space out many tightly packed instances. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2022-08-11 11:21:32 50f092e feat(analysis/special_functions/trigonometric/angle): signs of angles (#15967) Add a definition of `real.angle.sign` and some associated basic lemmas. This is intended for use in relating oriented and unoriented angles in Euclidean geometry (if the signs of two oriented angles between nonzero vectors are equal, then those angles are equal if and only if the corresponding unoriented angles are equal, and lots of lemmas can be stated of the form "these two angles have the same sign" or "these two angles have opposite signs"). ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + def real.angle.sign + theorem real.angle.sign_add_pi + theorem real.angle.sign_antiperiodic + theorem real.angle.sign_coe_pi + theorem real.angle.sign_eq_zero_iff + theorem real.angle.sign_neg + theorem real.angle.sign_pi_add + theorem real.angle.sign_pi_sub + theorem real.angle.sign_sub_pi + theorem real.angle.sign_zero Modified src/linear_algebra/quadratic_form/real.lean 2022-08-11 11:21:29 bc40b44 doc(tactic/doc_commands): fix doc comment (#15947) As noted at https://github.com/leanprover-community/mathlib/pull/15913#discussion_r940698781 . ESTIMATED CHANGES Modified src/tactic/doc_commands.lean 2022-08-11 11:21:25 af8760c feat(archive/100-theorems-list): Königsberg bridges problem (#15279) ESTIMATED CHANGES Added archive/100-theorems-list/54_konigsberg.lean + def konigsberg.adj + def konigsberg.degree + theorem konigsberg.degree_eq_degree + def konigsberg.edges + def konigsberg.graph + theorem konigsberg.not_is_eulerian + inductive konigsberg.verts Modified docs/100.yaml 2022-08-11 09:04:25 bae872c feat(algebra/group_with_zero/power): generalize `zpow_eq_zero_iff` (#15997) Also golf two proofs. ESTIMATED CHANGES Modified src/algebra/field_power.lean Modified src/algebra/group_with_zero/power.lean +/- theorem zpow_eq_zero_iff 2022-08-11 05:59:01 60a1dcf refactor(set_theory/ordinal/cantor_normal_form): simplify `CNF` definition (#15449) We simplify the definition of `CNF` by removing the casing on `b = 0`. Note that the new definition is not equivalent to the old one: we now have `CNF 0 o = [(0, o)]` instead of `CNF 0 o = []`. This is a good thing though, since it means that `CNF_foldr` (arguably the defining characteristic of the CNF) is now unconditionally true. We generalize previously existing theorems according to this new definition. Note that none of the theorems have had their hypotheses strengthened, but a few have been weakened. ESTIMATED CHANGES Modified src/set_theory/ordinal/cantor_normal_form.lean +/- theorem ordinal.CNF_foldr +/- theorem ordinal.CNF_fst_le +/- theorem ordinal.CNF_fst_le_log +/- theorem ordinal.CNF_lt_snd +/- theorem ordinal.CNF_ne_zero + theorem ordinal.CNF_of_le_one + theorem ordinal.CNF_of_lt - theorem ordinal.CNF_pairwise - theorem ordinal.CNF_rec_ne_zero + theorem ordinal.CNF_rec_pos +/- theorem ordinal.CNF_rec_zero +/- theorem ordinal.CNF_snd_lt +/- theorem ordinal.CNF_zero +/- theorem ordinal.one_CNF +/- theorem ordinal.zero_CNF 2022-08-11 04:28:19 7af0885 feat(category_theory/epi_mono): preserves/reflects properties for epi/split_epi (#15857) This PR shows that split epi/mono are preserved by any functor, and reflected by fully faithful functors. Moreover, `iff` lemmas are obtained for functors which both preserve and reflect epimorphisms (resp. monomorphisms). ESTIMATED CHANGES Modified src/category_theory/epi_mono.lean Modified src/category_theory/functor/epi_mono.lean + theorem category_theory.functor.epi_map_iff_epi + def category_theory.functor.map_split_epi + def category_theory.functor.map_split_mono + theorem category_theory.functor.mono_map_iff_mono + def category_theory.functor.split_epi_equiv + def category_theory.functor.split_mono_equiv 2022-08-11 03:43:58 dd6b84e chore(scripts): update nolints.txt (#15998) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-10 20:15:41 67821d2 feat(analysis/special_functions/trigonometric/chebyshev): `T_real_cos` and `U_real_cos` (#15798) We prove `T_real_cos` and `U_real_cos` matching `T_complex_cos` and `U_complex_cos`. We also remove two redundant theorems. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/chebyshev.lean +/- theorem polynomial.chebyshev.T_complex_cos + theorem polynomial.chebyshev.T_real_cos +/- theorem polynomial.chebyshev.U_complex_cos + theorem polynomial.chebyshev.U_real_cos + theorem polynomial.chebyshev.aeval_T + theorem polynomial.chebyshev.aeval_U + theorem polynomial.chebyshev.algebra_map_eval_T + theorem polynomial.chebyshev.algebra_map_eval_U + theorem polynomial.chebyshev.complex_of_real_eval_T + theorem polynomial.chebyshev.complex_of_real_eval_U - theorem polynomial.chebyshev.cos_nat_mul - theorem polynomial.chebyshev.sin_nat_succ_mul 2022-08-10 20:15:40 619eaf8 feat(ring_theory/ideal): The module `I ⧸ I ^ 2`. (#15638) ESTIMATED CHANGES Added src/ring_theory/ideal/cotangent.lean + def ideal.cotangent + def ideal.cotangent_equiv_ideal + theorem ideal.cotangent_equiv_ideal_apply + theorem ideal.cotangent_equiv_ideal_symm_apply + def ideal.cotangent_ideal + theorem ideal.cotangent_subsingleton_iff + def ideal.cotangent_to_quotient_square + theorem ideal.map_to_cotangent_ker + theorem ideal.mem_to_cotangent_ker + def ideal.to_cotangent + theorem ideal.to_cotangent_eq + theorem ideal.to_cotangent_eq_zero + theorem ideal.to_cotangent_range + theorem ideal.to_cotangent_surjective + theorem ideal.to_cotangent_to_quotient_square + theorem ideal.to_quotient_square_comp_to_cotangent + theorem ideal.to_quotient_square_range + def local_ring.cotangent_space 2022-08-10 17:41:28 299b612 docs(topology/*/weak_dual): Add docstring (#15944) The lemma `coe_fn_continuous` is hard to read with the lambda and without the domain and codomain. ESTIMATED CHANGES Modified src/topology/algebra/module/weak_dual.lean 2022-08-10 17:41:27 3424a59 chore(category_theory/limits/*): Unify names for limit constructions. (#15810) List of renames: `limits_from_equalizers_and_products` -> `has_limits_of_has_equalizers_and_products` `colimits_from_coequalizers_and_coproducts` -> `has_colimits_of_has_coequalizers_and_coproducts` `finite_limits_from_equalizers_and_finite_products` -> `has_finite_limits_of_has_equalizers_and_finite_products` `finite_colimits_from_coequalizers_and_finite_coproducts` -> `has_finite_colimits_of_has_coequalizers_and_finite_coproducts` `has_binary_products_of_terminal_and_pullbacks` -> `has_binary_products_of_has_terminal_and_pullbacks` `has_binary_coproducts_of_initial_and_pushouts` -> `has_binary_coproducts_of_has_initial_and_pushouts` `has_equalizers_of_pullbacks_and_binary_products` -> `has_equalizers_of_has_pullbacks_and_binary_products` `has_coequalizers_of_pushouts_and_binary_coproducts` -> `has_coequalizers_of_has_pushouts_and_binary_coproducts` `preserves_equalizers_of_pullbacks_and_binary_products` -> `preserves_equalizers_of_preserves_pullbacks_and_binary_products` `preserves_coequalizers_of_pushouts_and_binary_coproducts` -> `preserves_coequalizers_of_preserves_pushouts_and_binary_coproducts` `has_finite_coproducts_of_has_binary_and_terminal` -> `has_finite_coproducts_of_has_binary_and_initial` ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/opposite.lean Modified src/category_theory/limits/constructions/binary_products.lean + theorem has_binary_coproducts_of_has_initial_and_pushouts - theorem has_binary_coproducts_of_initial_and_pushouts + theorem has_binary_products_of_has_terminal_and_pullbacks - theorem has_binary_products_of_terminal_and_pullbacks Modified src/category_theory/limits/constructions/equalizers.lean + def category_theory.limits.has_coequalizers_of_has_pushouts_and_binary_coproducts.coequalizer_cocone + def category_theory.limits.has_coequalizers_of_has_pushouts_and_binary_coproducts.coequalizer_cocone_is_colimit + def category_theory.limits.has_coequalizers_of_has_pushouts_and_binary_coproducts.construct_coequalizer + def category_theory.limits.has_coequalizers_of_has_pushouts_and_binary_coproducts.pushout_inl + theorem category_theory.limits.has_coequalizers_of_has_pushouts_and_binary_coproducts.pushout_inl_eq_pushout_inr + theorem category_theory.limits.has_coequalizers_of_has_pushouts_and_binary_coproducts - def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.coequalizer_cocone - def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.coequalizer_cocone_is_colimit - def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.construct_coequalizer - def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.pushout_inl - theorem category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.pushout_inl_eq_pushout_inr - theorem category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts + def category_theory.limits.has_equalizers_of_has_pullbacks_and_binary_products.construct_equalizer + def category_theory.limits.has_equalizers_of_has_pullbacks_and_binary_products.equalizer_cone + def category_theory.limits.has_equalizers_of_has_pullbacks_and_binary_products.equalizer_cone_is_limit + def category_theory.limits.has_equalizers_of_has_pullbacks_and_binary_products.pullback_fst + theorem category_theory.limits.has_equalizers_of_has_pullbacks_and_binary_products.pullback_fst_eq_pullback_snd + theorem category_theory.limits.has_equalizers_of_has_pullbacks_and_binary_products - def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.construct_equalizer - def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.equalizer_cone - def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.equalizer_cone_is_limit - def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.pullback_fst - theorem category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.pullback_fst_eq_pullback_snd - theorem category_theory.limits.has_equalizers_of_pullbacks_and_binary_products + def category_theory.limits.preserves_coequalizers_of_preserves_pushouts_and_binary_coproducts - def category_theory.limits.preserves_coequalizers_of_pushouts_and_binary_coproducts + def category_theory.limits.preserves_equalizers_of_preserves_pullbacks_and_binary_products - def category_theory.limits.preserves_equalizers_of_pullbacks_and_binary_products Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean + theorem category_theory.has_finite_coproducts_of_has_binary_and_initial - theorem category_theory.has_finite_coproducts_of_has_binary_and_terminal Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean - theorem category_theory.limits.colimits_from_coequalizers_and_coproducts - theorem category_theory.limits.finite_colimits_from_coequalizers_and_finite_coproducts - theorem category_theory.limits.finite_limits_from_equalizers_and_finite_products + theorem category_theory.limits.has_colimits_of_has_coequalizers_and_coproducts + theorem category_theory.limits.has_finite_colimits_of_has_coequalizers_and_finite_coproducts + theorem category_theory.limits.has_finite_limits_of_has_equalizers_and_finite_products + theorem category_theory.limits.has_limits_of_has_equalizers_and_products - theorem category_theory.limits.limits_from_equalizers_and_products Modified src/category_theory/limits/constructions/over/default.lean Modified src/order/category/omega_complete_partial_order.lean 2022-08-10 17:41:26 43894ff feat(data/fintype/basic): infinite.exists_superset_card_eq (#15787) A stronger variant of `infinite.exists_subset_card_eq` ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem infinite.exists_superset_card_eq 2022-08-10 17:41:24 03d906c feat(field_theory/finite/basic): zmod.pow_totient is true for zero (#15771) ESTIMATED CHANGES Modified src/field_theory/finite/basic.lean +/- theorem zmod.pow_totient 2022-08-10 17:41:23 286d675 feat(algebra/category/Module/change_of_rings): restriction of scalars (#15672) Given a ring homomorphism $f : R\to S$, there is a functor from $S$-module to $R$-module. In #15564, it will proven that extension of scalars $\dashv$ restriction of scalars ESTIMATED CHANGES Added src/algebra/category/Module/change_of_rings.lean + def category_theory.Module.restrict_scalars.map' + theorem category_theory.Module.restrict_scalars.map_apply + def category_theory.Module.restrict_scalars.obj' + theorem category_theory.Module.restrict_scalars.smul_def' + theorem category_theory.Module.restrict_scalars.smul_def + def category_theory.Module.restrict_scalars 2022-08-10 15:00:29 45ccb85 chore(topology/basic): update module docstring (#15976) ESTIMATED CHANGES Modified src/topology/basic.lean 2022-08-10 15:00:28 ac0996d chore(topology/algebra/uniform_mul_action): the action of a ring on itself is uniformly continuous (#15974) This proof can be used to golf the misnamed `real.uniform_continuous_mul_const` which is now called `real.uniform_continuous_const_mul`. ESTIMATED CHANGES Modified src/analysis/specific_limits/normed.lean Modified src/topology/algebra/uniform_mul_action.lean + theorem has_uniform_continuous_const_smul_of_continuous_const_smul Modified src/topology/instances/real.lean + theorem real.uniform_continuous_const_mul - theorem real.uniform_continuous_mul_const 2022-08-10 15:00:27 ce9af07 feat(algebra/order/to_interval_mod): reducing to an interval modulo its length (#15966) Previously I had use for the operation of reducing a real number to an interval modulo the length of that interval, in proving results about `complex.arg`, and as it was only being used in one place, inlined expressions in terms of `int.fract` and associated proofs where needed. Now I'd like to make further use of that operation, so define actual functions to reduce to an interval (`Ico` or `Ioc`, in an `archimedean` `linear_ordered_add_comm_group`) and set up associated API for those definitions. In the case of a `linear_ordered_field` that is a `floor_ring`, these definitions are proved equal to explicit expressions in terms of `fract` and `floor`. Previous uses for `complex.arg` are updated to illustrate the use of the new API. ESTIMATED CHANGES Added src/algebra/order/to_interval_mod.lean + theorem add_to_Ico_div_zsmul_mem_Ico + theorem add_to_Ioc_div_zsmul_mem_Ioc + theorem eq_to_Ico_div_of_add_zsmul_mem_Ico + theorem eq_to_Ioc_div_of_add_zsmul_mem_Ioc + theorem left_le_to_Ico_mod + theorem left_lt_to_Ioc_mod + theorem self_add_to_Ico_div_zsmul + theorem self_add_to_Ioc_div_zsmul + theorem self_sub_to_Ico_mod + theorem self_sub_to_Ioc_mod + def to_Ico_div + theorem to_Ico_div_add_left + theorem to_Ico_div_add_right + theorem to_Ico_div_add_zsmul + theorem to_Ico_div_apply_left + theorem to_Ico_div_apply_right + theorem to_Ico_div_eq_neg_floor + theorem to_Ico_div_sub + theorem to_Ico_div_sub_zsmul + theorem to_Ico_div_zero_one + theorem to_Ico_div_zsmul_add + theorem to_Ico_div_zsmul_add_self + theorem to_Ico_div_zsmul_sub_to_Ico_mod + def to_Ico_mod + theorem to_Ico_mod_add_left + theorem to_Ico_mod_add_right + theorem to_Ico_mod_add_zsmul + theorem to_Ico_mod_apply_left + theorem to_Ico_mod_apply_right + theorem to_Ico_mod_eq_add_fract_mul + theorem to_Ico_mod_eq_iff + theorem to_Ico_mod_eq_self + theorem to_Ico_mod_eq_to_Ico_mod + theorem to_Ico_mod_lt_right + theorem to_Ico_mod_mem_Ico + theorem to_Ico_mod_periodic + theorem to_Ico_mod_sub + theorem to_Ico_mod_sub_self + theorem to_Ico_mod_sub_to_Ico_div_zsmul + theorem to_Ico_mod_sub_zsmul + theorem to_Ico_mod_to_Ico_mod + theorem to_Ico_mod_to_Ioc_mod + theorem to_Ico_mod_zero_one + theorem to_Ico_mod_zsmul_add + def to_Ioc_div + theorem to_Ioc_div_add_left + theorem to_Ioc_div_add_right + theorem to_Ioc_div_add_zsmul + theorem to_Ioc_div_apply_left + theorem to_Ioc_div_apply_right + theorem to_Ioc_div_eq_floor + theorem to_Ioc_div_sub + theorem to_Ioc_div_sub_zsmul + theorem to_Ioc_div_zsmul_add + theorem to_Ioc_div_zsmul_add_self + theorem to_Ioc_div_zsmul_sub_to_Ioc_mod + def to_Ioc_mod + theorem to_Ioc_mod_add_left + theorem to_Ioc_mod_add_right + theorem to_Ioc_mod_add_zsmul + theorem to_Ioc_mod_apply_left + theorem to_Ioc_mod_apply_right + theorem to_Ioc_mod_eq_iff + theorem to_Ioc_mod_eq_self + theorem to_Ioc_mod_eq_sub_fract_mul + theorem to_Ioc_mod_eq_to_Ioc_mod + theorem to_Ioc_mod_le_right + theorem to_Ioc_mod_mem_Ioc + theorem to_Ioc_mod_periodic + theorem to_Ioc_mod_sub + theorem to_Ioc_mod_sub_self + theorem to_Ioc_mod_sub_to_Ioc_div_zsmul + theorem to_Ioc_mod_sub_zsmul + theorem to_Ioc_mod_to_Ico_mod + theorem to_Ioc_mod_to_Ioc_mod + theorem to_Ioc_mod_zsmul_add Modified src/analysis/special_functions/complex/arg.lean - theorem complex.arg_cos_add_sin_mul_I_eq_mul_fract + theorem complex.arg_cos_add_sin_mul_I_eq_to_Ioc_mod - theorem complex.arg_mul_cos_add_sin_mul_I_eq_mul_fract + theorem complex.arg_mul_cos_add_sin_mul_I_eq_to_Ioc_mod 2022-08-10 15:00:26 452984b feat(field_theory/intermediate_field): `minpoly K x = minpoly K (x : L)` (#15946) This PR adds a lemma stating that `minpoly K x = minpoly K (x : L)` for `x : S` and `S : intermediate_field K L`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean Modified src/field_theory/intermediate_field.lean - theorem intermediate_field.algebraic_iff + theorem intermediate_field.is_algebraic_iff + theorem intermediate_field.is_integral_iff + theorem intermediate_field.minpoly_eq 2022-08-10 15:00:24 1e09735 feat(category_theory/sites/subsheaf): Subpresheaves of types. (#15827) ESTIMATED CHANGES Added src/category_theory/sites/subsheaf.lean + theorem category_theory.grothendieck_topology.subpresheaf.eq_sheafify + theorem category_theory.grothendieck_topology.subpresheaf.eq_sheafify_iff + theorem category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible + def category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section + def category_theory.grothendieck_topology.subpresheaf.hom_of_le + theorem category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff + theorem category_theory.grothendieck_topology.subpresheaf.le_sheafify + def category_theory.grothendieck_topology.subpresheaf.sheafify + theorem category_theory.grothendieck_topology.subpresheaf.sheafify_is_sheaf + def category_theory.grothendieck_topology.subpresheaf.sheafify_lift + theorem category_theory.grothendieck_topology.subpresheaf.sheafify_sheafify + def category_theory.grothendieck_topology.subpresheaf.sieve_of_section + def category_theory.grothendieck_topology.subpresheaf.to_presheaf + theorem category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift + def category_theory.grothendieck_topology.subpresheaf.ι + structure category_theory.grothendieck_topology.subpresheaf 2022-08-10 15:00:23 473da0e feat(data/polynomial/{ basic + div + monic + degree/definitions }): lemmas about monic and forall_eq (#15817) This PR reorganizes a couple of lemmas about monic. The main breaking change is the removal of `subsingleton_of_monic_zero'` in favour of `monic_zero_iff_subsingleton`. I left in `monic_zero_iff_subsingleton'` an iff version of `subsingleton_of_monic_zero'`, but I think that this can probably be removed, thanks to `monic_zero_iff_subsingleton` and `forall_eq_iff_forall_eq`. Also, if anyone wants to rename some/all subsingletons to forall_eq, I am happy to do the change! ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.forall_eq_iff_forall_eq + theorem polynomial.subsingleton_iff_subsingleton Modified src/data/polynomial/degree/definitions.lean - theorem polynomial.subsingleton_of_monic_zero Modified src/data/polynomial/div.lean Modified src/data/polynomial/monic.lean + theorem polynomial.monic_zero_iff_subsingleton' + theorem polynomial.monic_zero_iff_subsingleton + theorem polynomial.not_monic_zero_iff 2022-08-10 15:00:21 7e33e4f feat(measure_theory/measure/measure_space): add lemma `measure_theory.measure.exists_mem_of_measure_ne_zero_of_ae` (#15812) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.exists_mem_of_measure_ne_zero_of_ae 2022-08-10 15:00:20 3ed7018 feat(ring_theory/localization/integral): Integral element over localization. (#15809) ESTIMATED CHANGES Modified src/algebra/hom/ring.lean + theorem ring_hom.codomain_trivial Modified src/data/polynomial/lifts.lean + theorem polynomial.lifts_and_nat_degree_eq_and_monic Modified src/ring_theory/integral_closure.lean - theorem is_integral.tmul Modified src/ring_theory/localization/integral.lean + theorem is_integral.exists_multiple_integral_of_is_localization + theorem is_localization.scale_roots_common_denom_mem_lifts Modified src/ring_theory/polynomial/scale_roots.lean - theorem polynomial.map_scale_roots - theorem polynomial.scale_roots_eval₂_mul Deleted src/ring_theory/ring_hom/integral.lean - theorem ring_hom.is_integral_respects_iso - theorem ring_hom.is_integral_stable_under_base_change - theorem ring_hom.is_integral_stable_under_composition 2022-08-10 15:00:18 7a7f5ec feat(ring_theory/ring_hom/integral): Integral extensions are stable under base change. (#15806) ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral.tmul Modified src/ring_theory/polynomial/scale_roots.lean + theorem polynomial.map_scale_roots + theorem polynomial.scale_roots_eval₂_mul Added src/ring_theory/ring_hom/integral.lean + theorem ring_hom.is_integral_respects_iso + theorem ring_hom.is_integral_stable_under_base_change + theorem ring_hom.is_integral_stable_under_composition Modified src/ring_theory/tensor_product.lean + theorem algebra.tensor_product.include_left_comp_algebra_map 2022-08-10 15:00:17 e182085 feat(ring_theory/is_tensor_product): Universal property of base change (#15800) ESTIMATED CHANGES Modified src/ring_theory/is_tensor_product.lean + theorem is_base_change.alg_hom_ext' + theorem is_base_change.alg_hom_ext + theorem is_base_change.comm + theorem is_base_change.comp + theorem is_base_change.iff_lift_unique + theorem is_base_change.induction_on + theorem is_base_change.of_equiv + theorem is_base_change.of_lift_unique + theorem is_base_change.symm 2022-08-10 15:00:15 3b09a26 feat(ring_theory/artinian): localization maps of artinian rings are surjective (#15736) The proof is by Junyan, I just tidied it up a little, and also the `ring_theory/artinian` file a little bit, in order to fit the results more smoothly. ESTIMATED CHANGES Modified src/ring_theory/artinian.lean + theorem function.surjective.is_artinian_ring +/- theorem is_artinian.bijective_of_injective_endomorphism +/- theorem is_artinian.disjoint_partial_infs_eventually_top +/- theorem is_artinian.exists_endomorphism_iterate_ker_sup_range_eq_top + theorem is_artinian.exists_pow_succ_smul_dvd +/- theorem is_artinian.induction +/- theorem is_artinian.monotone_stabilizes + theorem is_artinian.range_smul_pow_stabilizes +/- theorem is_artinian.surjective_of_injective_endomorphism - theorem is_artinian_of_fintype + theorem is_artinian_ring.localization_artinian + theorem is_artinian_ring.localization_surjective - theorem is_artinian_ring_of_ring_equiv - theorem is_artinian_ring_of_surjective Modified src/ring_theory/localization/cardinality.lean - theorem is_localization.algebra_map_surjective_of_fintype 2022-08-10 15:00:14 0026ed9 feat(category_theory/monoidal/subcategory): monoidal closed structure on full subcategories (#15703) I made `monoidal_closed_of_left_rigid_category` a `def` because having it an instance causes diamonds with `full_monoidal_closed_subcategory` or `category_theory.monoidal_closed.functor_category` from #15643. In practice, I think that we rarely want to deduce that a category is monoidal closed from the rigid structure. ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean + theorem FinVect.ihom_obj Modified src/category_theory/monoidal/rigid/basic.lean + def category_theory.closed_of_has_left_dual + def category_theory.monoidal_closed_of_left_rigid_category Modified src/category_theory/monoidal/subcategory.lean + theorem category_theory.monoidal_category.full_monoidal_closed_subcategory_ihom_map + theorem category_theory.monoidal_category.full_monoidal_closed_subcategory_ihom_obj 2022-08-10 15:00:11 e63df39 feat(ring_theory/valuation/valuation_subring): define principal unit group of valuation subring and provide basic API (#14742) This PR defines the principal unit group of a valuation subring as a subgroup of the units of the field. We show two valuation subrings are equal iff their principal unit groups are the same, and we show that the map on valuation subrings to their principal unit groups is an order embedding. ESTIMATED CHANGES Modified src/ring_theory/ideal/local_ring.lean + theorem local_ring.is_local_ring_hom_residue + theorem local_ring.surjective_units_map_of_local_ring_hom Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation_subring.coe_mem_principal_unit_group_iff + theorem valuation_subring.coe_unit_group_to_residue_field_units_apply + theorem valuation_subring.eq_iff_principal_unit_group + theorem valuation_subring.ker_unit_group_to_residue_field_units +/- theorem valuation_subring.mem_nonunits_iff + theorem valuation_subring.mem_principal_unit_group_iff +/- theorem valuation_subring.mem_unit_group_iff + def valuation_subring.principal_unit_group + def valuation_subring.principal_unit_group_equiv + theorem valuation_subring.principal_unit_group_equiv_apply + theorem valuation_subring.principal_unit_group_injective + theorem valuation_subring.principal_unit_group_le_principal_unit_group + def valuation_subring.principal_unit_group_order_embedding + theorem valuation_subring.principal_unit_group_symm_apply + theorem valuation_subring.principal_units_le_units + theorem valuation_subring.surjective_unit_group_to_residue_field_units + def valuation_subring.unit_group_to_residue_field_units + def valuation_subring.units_mod_principal_units_equiv_residue_field_units + theorem valuation_subring.units_mod_principal_units_equiv_residue_field_units_comp_quotient_group_mk + theorem valuation_subring.units_mod_principal_units_equiv_residue_field_units_comp_quotient_group_mk_apply 2022-08-10 13:06:49 e1f0116 feat(topology/connected): definition and basic properties about locally connected spaces (#15965) This was introduced in the [Sphere Eversion Project](https://github.com/leanprover-community/sphere-eversion/blob/333231d77aa028bb164abc695ac8a4abce4af0c2/src/to_mathlib/topology/misc.lean#L444); I added a clean API, proved the equivalence with "weak local connectedness" (where we don't require the bases to be made of open sets), generalized [local connectedness of normed spaces](https://github.com/leanprover-community/sphere-eversion/blob/333231d77aa028bb164abc695ac8a4abce4af0c2/src/to_mathlib/topology/misc.lean#L504) to local connectedness of locally convex spaces, and proved the lemmas @hrmacbeth asked for on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Missing.20facts.20about.20.60locally_constant.60/near/290704266). ESTIMATED CHANGES Modified src/topology/algebra/module/locally_convex.lean Modified src/topology/connected.lean + theorem connected_component_in_mem_nhds + theorem is_clopen_connected_component + theorem is_open.connected_component_in + theorem is_open_connected_component + theorem locally_connected_space_iff_connected_basis + theorem locally_connected_space_iff_connected_component_in_open + theorem locally_connected_space_iff_connected_subsets + theorem locally_connected_space_iff_open_connected_basis + theorem locally_connected_space_iff_open_connected_subsets + theorem locally_connected_space_of_connected_bases Modified src/topology/locally_constant/basic.lean + theorem is_locally_constant.of_constant_on_connected_components + theorem is_locally_constant.of_constant_on_preconnected_clopens 2022-08-10 13:06:48 9dd3807 feat(category_theory/sites/{sheaf, sheafification}): monomorphisms of sheaves are precisely monomorphisms of presheaves (#15932) * monomorphisms of sheaves are precisely monomorphisms of underlying presheaves (when presheaves can be sheafified) * a morphism between sheaves is epic if the morphism between underlying presheaves is epic. (The converse is not always true) ESTIMATED CHANGES Modified src/category_theory/sites/sheaf.lean + theorem category_theory.Sheaf.hom.mono_of_presheaf_mono Modified src/category_theory/sites/sheafification.lean + theorem category_theory.Sheaf.hom.mono_iff_presheaf_mono 2022-08-10 13:06:44 17d8e67 feat(category_theory): every category is essentially small... (#15874) ...if you look at it from far enough away. ESTIMATED CHANGES Modified src/category_theory/essentially_small.lean + theorem category_theory.essentially_small_self 2022-08-10 13:06:41 4d66277 feat(linear_algebra/clifford_algebra/star): add a possibly-non-canonical star structure (#15866) See the module docstring for a discussion of non-canonicity. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/equivs.lean - theorem clifford_algebra_quaternion.to_quaternion_involute_reverse + theorem clifford_algebra_quaternion.to_quaternion_star Added src/linear_algebra/clifford_algebra/star.lean + theorem clifford_algebra.star_algebra_map + theorem clifford_algebra.star_def' + theorem clifford_algebra.star_def + theorem clifford_algebra.star_smul + theorem clifford_algebra.star_ι 2022-08-10 13:06:39 0ddf919 feat(ring_theory/ideal/operations): strengthen a lemma to iff and golf (#15777) + Strengthen `exists_sum_of_mem_ideal_smul_span` to iff and rename it to `mem_ideal_smul_span_iff_exists_sum'`. + Introduce a more general version `mem_ideal_smul_span_iff_exists_sum` (without the prime) that applies to any type, not just types coerced from a set; this version is stated using `set.range` instead of `set.image`. + Use the general version to golf down `finsupp_total_apply_eq_of_fintype` in the same file (this comes from reviewing PR # 15460 after it's approved) and slightly golf `ideal.finrank_quotient_map.span_eq_top` in another file (the only place in mathlib this lemma is used previously). ESTIMATED CHANGES Modified src/number_theory/ramification_inertia.lean Modified src/ring_theory/ideal/operations.lean - theorem submodule.exists_sum_of_mem_ideal_smul_span + theorem submodule.mem_ideal_smul_span_iff_exists_sum' + theorem submodule.mem_ideal_smul_span_iff_exists_sum 2022-08-10 13:06:37 fb16dbc feat(analysis/convex/cone): dual of a convex cone is closed (#15766) We prove that the dual of a convex cone is always closed. Part of #15637 ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem convex_cone.coe_comap + theorem is_closed_inner_dual_cone +/- theorem mem_inner_dual_cone Modified src/analysis/inner_product_space/basic.lean 2022-08-10 13:06:36 16cf14f feat(number_theory/cyclotomic/rat): add integral_power_basis (#15570) We add `integral_power_basis` and some variants, defining integral power basis of `𝓞 K`. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/rat.lean + theorem is_primitive_root.integral_power_basis'_gen + theorem is_primitive_root.integral_power_basis_dim + theorem is_primitive_root.integral_power_basis_gen + theorem is_primitive_root.power_basis_int'_dim + theorem is_primitive_root.sub_one_integral_power_basis'_gen + theorem is_primitive_root.sub_one_integral_power_basis_gen Modified src/number_theory/number_field.lean + theorem number_field.is_integral_of_mem_ring_of_integers 2022-08-10 13:06:35 9fc5330 feat(category_theory/limits): bundled exact functors (#12336) ESTIMATED CHANGES Added src/category_theory/limits/exact_functor.lean + def category_theory.ExactFunctor.forget + theorem category_theory.ExactFunctor.forget_map + theorem category_theory.ExactFunctor.forget_obj + theorem category_theory.ExactFunctor.forget_obj_of + def category_theory.ExactFunctor.of + theorem category_theory.ExactFunctor.of_fst + def category_theory.ExactFunctor + def category_theory.LeftExactFunctor.forget + theorem category_theory.LeftExactFunctor.forget_map + theorem category_theory.LeftExactFunctor.forget_obj + theorem category_theory.LeftExactFunctor.forget_obj_of + def category_theory.LeftExactFunctor.of + def category_theory.LeftExactFunctor.of_exact + theorem category_theory.LeftExactFunctor.of_exact_map + theorem category_theory.LeftExactFunctor.of_exact_obj + theorem category_theory.LeftExactFunctor.of_fst + def category_theory.LeftExactFunctor + def category_theory.RightExactFunctor.forget + theorem category_theory.RightExactFunctor.forget_map + theorem category_theory.RightExactFunctor.forget_obj + theorem category_theory.RightExactFunctor.forget_obj_of + def category_theory.RightExactFunctor.of + def category_theory.RightExactFunctor.of_exact + theorem category_theory.RightExactFunctor.of_exact_map + theorem category_theory.RightExactFunctor.of_exact_obj + theorem category_theory.RightExactFunctor.of_fst + def category_theory.RightExactFunctor 2022-08-10 10:23:34 3dbd680 feat(algebraic_topology/dold_kan): construction of an idempotent endomorphism (#15950) In this PR, we pass to the limit in order to obtain the endomorphism `P_infty : K[X] ⟶ K[X]` of the alternating face map complex. In the case of abelian categories, it shall be the projection on the normalized subcomplex, with kernel the degenerate subcomplex. ESTIMATED CHANGES Added src/algebraic_topology/dold_kan/p_infty.lean + def algebraic_topology.dold_kan.P_infty + theorem algebraic_topology.dold_kan.P_infty_f + theorem algebraic_topology.dold_kan.P_infty_f_idem + theorem algebraic_topology.dold_kan.P_infty_f_naturality + theorem algebraic_topology.dold_kan.P_infty_idem + theorem algebraic_topology.dold_kan.P_is_eventually_constant + theorem algebraic_topology.dold_kan.Q_is_eventually_constant + theorem algebraic_topology.dold_kan.karoubi_P_infty_f + theorem algebraic_topology.dold_kan.map_P_infty_f + def algebraic_topology.dold_kan.nat_trans_P_infty + def algebraic_topology.dold_kan.nat_trans_P_infty_f 2022-08-10 10:23:33 952e7ee feat(category_theory/generator): complete well-powered category with small coseparating set has an initial object (#15865) A step towards the Special Adjoint Functor Theorem. ESTIMATED CHANGES Modified src/category_theory/generator.lean + theorem category_theory.has_initial_of_is_cosepatating + theorem category_theory.has_terminal_of_is_separating Modified src/category_theory/limits/essentially_small.lean +/- theorem category_theory.limits.has_coproducts_of_shape_of_small +/- theorem category_theory.limits.has_products_of_shape_of_small Modified src/category_theory/limits/shapes/terminal.lean + theorem category_theory.limits.has_initial_of_has_terminal_op + theorem category_theory.limits.has_terminal_of_has_initial_op Modified src/data/set/opposite.lean + def set.op_equiv_self 2022-08-10 10:23:32 ea74dc9 feat(category_theory/limits): transport has_initial across equivalences (#15858) ESTIMATED CHANGES Added src/category_theory/limits/shapes/equivalence.lean + theorem category_theory.equivalence.has_initial_iff + theorem category_theory.equivalence.has_terminal_iff + theorem category_theory.has_initial_of_equivalence + theorem category_theory.has_terminal_of_equivalence 2022-08-10 10:23:31 4ef4fef feat(geometry/manifold/cont_mdiff): more flexibility in changing charts (#15519) * Adds lemmas that allows one to change the chart one considers for only the source or target * Also adds a lemma that shows `cont_mdiff_on` if the source and target lie completely in one chart. * Also add various properties for `local_invariant_prop` * From the sphere eversion project ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff.lean + theorem basic_smooth_vector_bundle_core.cont_mdiff_at_iff_target + theorem cont_diff_within_at_prop_self + theorem cont_diff_within_at_prop_self_source + theorem cont_diff_within_at_prop_self_target + theorem cont_mdiff_at_iff_source_of_mem_source + theorem cont_mdiff_at_iff_target + theorem cont_mdiff_at_iff_target_of_mem_source + theorem cont_mdiff_on_iff_of_subset_source + theorem cont_mdiff_within_at_iff_source_of_mem_source + theorem cont_mdiff_within_at_iff_target_of_mem_source + theorem ext_chart_at_symm_continuous_within_at_comp_right_iff + theorem model_with_corners.symm_continuous_within_at_comp_right_iff + theorem smooth_at_iff_target Modified src/geometry/manifold/local_invariant_properties.lean + theorem structure_groupoid.lift_prop_within_at_self + theorem structure_groupoid.lift_prop_within_at_self_source + theorem structure_groupoid.lift_prop_within_at_self_target + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux + theorem structure_groupoid.local_invariant_prop.right_invariance Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem maps_to_ext_chart_at Modified src/topology/local_homeomorph.lean 2022-08-10 10:23:29 be63ea2 feat(category_theory/abelian): equivalence between subobjects and quotients (#15494) ESTIMATED CHANGES Added src/category_theory/abelian/subobject.lean + def category_theory.abelian.subobject_iso_subobject_op Modified src/category_theory/subobject/basic.lean Modified src/category_theory/subobject/limits.lean + def category_theory.limits.cokernel_order_hom + def category_theory.limits.kernel_order_hom 2022-08-10 10:23:28 d8510ca feat(topology/local_at_target): Properties of continuous maps that are local at the target. (#15452) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_subtype_map Modified src/data/set/function.lean + theorem set.maps_to.coe_restrict + theorem set.maps_to.range_restrict + theorem set.range_restrict_preimage + def set.restrict_preimage Modified src/data/set/lattice.lean + theorem set.bijective_iff_bijective_of_Union_eq_univ + theorem set.injective_iff_injective_of_Union_eq_univ + theorem set.restrict_preimage_bijective + theorem set.restrict_preimage_injective + theorem set.restrict_preimage_surjective + theorem set.surjective_iff_surjective_of_Union_eq_univ Modified src/topology/constructions.lean + theorem continuous_at.restrict + theorem continuous_at.restrict_preimage + theorem continuous_at_cod_restrict_iff Modified src/topology/continuous_function/basic.lean + def continuous_map.restrict_preimage Added src/topology/local_at_target.lean + theorem closed_embedding_iff_closed_embedding_of_supr_eq_top + theorem closed_iff_coe_preimage_of_supr_eq_top + theorem embedding_iff_embedding_of_supr_eq_top + theorem inducing_iff_inducing_of_supr_eq_top + theorem open_embedding_iff_open_embedding_of_supr_eq_top + theorem open_iff_coe_preimage_of_supr_eq_top + theorem open_iff_inter_of_supr_eq_top + theorem set.restrict_preimage_closed_embedding + theorem set.restrict_preimage_embedding + theorem set.restrict_preimage_inducing + theorem set.restrict_preimage_open_embedding Modified src/topology/maps.lean + theorem inducing.is_closed_preimage 2022-08-10 08:06:43 a4ea889 feat(topology/connected): make `connected_component_in` more usable, develop API (#15964) From the [Sphere Eversion Project](https://github.com/leanprover-community/sphere-eversion/blob/333231d77aa028bb164abc695ac8a4abce4af0c2/src/to_mathlib/topology/misc.lean#L516) ESTIMATED CHANGES Modified src/topology/connected.lean +/- def connected_component_in + theorem connected_component_in_eq + theorem connected_component_in_eq_empty + theorem connected_component_in_eq_image + theorem connected_component_in_mono + theorem connected_component_in_nonempty_iff + theorem connected_component_in_subset + theorem connected_component_in_univ + theorem connected_component_nonempty + theorem is_connected_connected_component_in_iff + theorem is_preconnected.connected_component_in + theorem is_preconnected.subset_connected_component_in + theorem is_preconnected_connected_component_in + theorem mem_connected_component_in 2022-08-10 08:06:41 d4805ef feat(logic/equiv/list): add `countable` instances (#15960) ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.val_inj + theorem finset.val_injective Modified src/logic/equiv/list.lean 2022-08-10 08:06:40 30cf3db feat(analysis/calculus/cont_diff): Add `cont_diff` lemmas for constant scalar multiplication (#15895) Add the smoothness lemmas for constant scalar multiplication. We imitate the lemmas for multiplication. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff.const_smul + theorem cont_diff_at.const_smul + theorem cont_diff_const_smul + theorem cont_diff_on.const_smul + theorem cont_diff_within_at.const_smul 2022-08-10 08:06:39 0e0a8b4 feat(analysis/inner_product_space/l2_space): define `is_hilbert_sum` predicate (#15772) This introduces a predicate on a space `E` and a family of linear isometries `V : Π i, G i →ₗᵢ[𝕜] E` expressing that the associated map `lp G 2 →ₗᵢ[𝕜] E` is surjective. As explained in the docstring, this is *somewhat* analogous to `direct_sum.is_internal`, but **not completely**, since it is a predicate on embeddings rather than subspaces (so in a sense it is more category-theoretic, even though we don't implement it as a universal property). I am aware that introducing this inconsistency is not ideal, but I believe this is the cleanest thing to do here, because it follows the design of `orthogonal_family`. I also have a more practical motivation : in a following PR, I will introduce a way to concatenate Hilbert bases from mutually orthogonal "subspaces" with dense span to form a Hilbert basis for the whole space. Without this, the natural way would be to state this with hypotheses `orthogonal_family 𝕜 V` and `⊤ ≤ (⨆ (i : ι), (V i).to_linear_map.range).topological_closure`. First, this is quite verbose for such a common set of hypotheses, but the real problem comes with the fact that for actual subspaces you want to replace this second hypothesis by `⊤ ≤ (⨆ (i : ι), F i).topological_closure`, so you essentially have to duplicate the API. With this constructions, these two variants just correspond to two different ways of proving `is_hilbert_sum`. I think we should consider doing a similar thing for direct sums, stating the fact that the map `direct_sum.to_module` is bijective, but it will be harder since linear maps are not injective in general like linear isometries are. ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean + theorem is_hilbert_sum.mk + theorem is_hilbert_sum.mk_internal + structure is_hilbert_sum + theorem orthonormal.is_hilbert_sum 2022-08-10 08:06:38 73421d5 feat(field_theory/adjoin): `intermediate_field.adjoin` equals `subalgebra.adjoin` for algebraic sets (#15762) This PR proves `(intermediate_field.adjoin F S).to_subalgebra = algebra.adjoin F S` for algebraic sets `S`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_algebraic_to_subalgebra Modified src/field_theory/galois.lean Modified src/number_theory/cyclotomic/primitive_roots.lean 2022-08-10 08:06:37 0fb4144 feat(data/polynomial/ring_division,ring_theory/algebraic): Basic consequences of `x ∈ p.root_set` (#15745) This PR adds two basic consequences of `x ∈ p.root_set`: `p ≠ 0` and `is_algebraic x`. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.aeval_eq_zero_of_mem_root_set + theorem polynomial.is_root_of_mem_roots + theorem polynomial.ne_zero_of_mem_root_set + theorem polynomial.ne_zero_of_mem_roots Modified src/ring_theory/algebraic.lean + theorem is_algebraic_of_mem_root_set 2022-08-10 08:06:35 7c205ff feat(data/nat/totient): add lemma `totient_dvd_of_dvd` (#15642) Adds `totient_dvd_of_dvd (h : a ∣ b) : φ a ∣ φ b`. This is Theorem 2.5(d) in Apostol (1976) Introduction to Analytic Number Theory. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.prod_dvd_prod_of_subset_of_dvd Modified src/data/nat/totient.lean + theorem nat.totient_dvd_of_dvd 2022-08-10 05:50:16 b5eb042 feat(ring_theory/integral_closure): finite = integral + finite_type (#15970) ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem ring_hom.finite_type.of_finite Modified src/ring_theory/integral_closure.lean + theorem algebra.finite_iff_is_integral_and_finite_type + theorem algebra.is_integral.finite + theorem algebra.is_integral.of_finite + theorem ring_hom.finite.to_is_integral + theorem ring_hom.finite_iff_is_integral_and_finite_type + theorem ring_hom.is_integral.to_finite 2022-08-10 05:50:15 f7534de feat(topology/nhds_set): add several lemmas (#15957) Prove `𝓟 s ≤ 𝓝ˢ s` and `𝓝ˢ s = 𝓟 s ↔ is_open s`. ESTIMATED CHANGES Modified src/topology/nhds_set.lean +/- theorem mem_nhds_set_empty + theorem nhds_set_eq_principal_iff + theorem nhds_set_interior + theorem principal_le_nhds_set 2022-08-10 05:50:14 94a20a7 chore(data/polynomial/degree/definitions): make an argument explicit (#15951) The argument `n : ℕ` cannot be deduced from the goal and it is useful to be able to provide it. This argument changed from explicit to implicit when I prepared #15818. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.monic_of_degree_le_of_coeff_eq_one +/- theorem polynomial.monic_of_nat_degree_le_of_coeff_eq_one 2022-08-10 05:50:12 36d300c refactor(data/fintype/basic): drop 2 noncomputable instances (#15943) Drop `fintype.of_subsingleton'` and `function.embedding.fintype'`. First, we should use `finite` instances instead of noncomputable `fintype` instances. Second, these instances created diamonds with non-primed versions. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem fintype.prod_subsingleton Modified src/data/finite/basic.lean - theorem of_subsingleton Modified src/data/finset/basic.lean + theorem finset.nonempty_iff_eq_singleton_default Modified src/data/fintype/basic.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal/finite.lean 2022-08-10 05:50:11 1cdd826 feat(topology/instances/sign): topology of `sign_type` and `sign` (#15925) Give `sign_type` the discrete topology, and prove that `sign`, in an `order_topology`, is continuous at positive and negative arguments (in a `partial_order`) or away from zero (in a `linear_order`). ESTIMATED CHANGES Added src/topology/instances/sign.lean + theorem continuous_at_sign_of_ne_zero + theorem continuous_at_sign_of_neg + theorem continuous_at_sign_of_pos 2022-08-10 05:50:07 d38aca1 chore(topology/*): Use `finite` in place of `fintype` where possible (#15891) Satisfy the `fintype_finite` linter. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/data/set/finite.lean +/- theorem infi_supr_of_antitone +/- theorem infi_supr_of_monotone +/- theorem set.Inter_Union_of_antitone +/- theorem set.Inter_Union_of_monotone +/- theorem set.Union_Inter_of_antitone +/- theorem set.Union_Inter_of_monotone +/- theorem set.Union_univ_pi_of_monotone +/- theorem set.finite.pi +/- theorem set.forall_finite_image_eval_iff +/- theorem supr_infi_of_antitone +/- theorem supr_infi_of_monotone Modified src/order/filter/basic.lean +/- theorem filter.Inter_mem +/- theorem filter.eventually_all + theorem filter.infi_principal - theorem filter.infi_principal_fintype + theorem filter.mem_infi_of_finite - theorem filter.mem_infi_of_fintype Modified src/order/filter/cofinite.lean +/- theorem filter.Coprod_cofinite Modified src/topology/algebra/module/finite_dimension.lean Modified src/topology/basic.lean + theorem closure_Union - theorem closure_Union_of_fintype + theorem interior_Inter - theorem interior_Inter_of_fintype +/- theorem is_closed_Union +/- theorem is_open_Inter Modified src/topology/bornology/basic.lean +/- theorem bornology.is_bounded_Union +/- theorem bornology.is_cobounded_Inter Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean +/- theorem nhds_within_pi_univ_eq Modified src/topology/metric_space/metrizable.lean Modified src/topology/separation.lean +/- theorem exists_open_singleton_of_fintype Modified src/topology/subset_properties.lean +/- theorem compact_Union + theorem finite_of_compact_of_discrete - def fintype_of_compact_of_discrete +/- theorem is_clopen_Inter +/- theorem is_clopen_Union 2022-08-10 05:50:06 af80234 feat(algebraic_geometry/morphisms/basic): Basic framework for local properties of morphisms. (#15709) ESTIMATED CHANGES Modified src/algebraic_geometry/morphisms/basic.lean + theorem algebraic_geometry.affine_cancel_left_is_iso + theorem algebraic_geometry.affine_cancel_right_is_iso + theorem algebraic_geometry.affine_target_morphism_property.is_local.affine_open_cover_iff + theorem algebraic_geometry.affine_target_morphism_property.is_local.affine_open_cover_tfae + theorem algebraic_geometry.affine_target_morphism_property.is_local.affine_target_iff + theorem algebraic_geometry.affine_target_morphism_property.is_local.open_cover_iff + theorem algebraic_geometry.affine_target_morphism_property.is_local.target_affine_locally_is_local + structure algebraic_geometry.affine_target_morphism_property.is_local + theorem algebraic_geometry.affine_target_morphism_property.is_local_of_open_cover_imply + theorem algebraic_geometry.is_affine_open.map_is_iso + theorem algebraic_geometry.property_is_local_at_target.open_cover_tfae + structure algebraic_geometry.property_is_local_at_target + def algebraic_geometry.target_affine_locally + theorem algebraic_geometry.target_affine_locally_of_open_cover + theorem algebraic_geometry.target_affine_locally_respects_iso 2022-08-10 05:04:52 2792268 chore(scripts): update nolints.txt (#15971) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-08-10 03:11:44 146d3d1 chore(*/..eq): add is_refl instances (#15963) This allows the use of docs#of_eq, an extremely underused utility method. Also fixes `smodeq` to match the `rfl/refl` conventions. ESTIMATED CHANGES Modified src/data/int/modeq.lean Modified src/data/nat/modeq.lean Modified src/linear_algebra/smodeq.lean - theorem smodeq.refl Modified src/ring_theory/henselian.lean 2022-08-10 00:22:58 cad35c7 feat(analysis/convex/cone): add `convex_cone.strictly_positive` and monotonicity lemmas (#15837) The monotonicity lemmas transfer `poined`, `blunt`, `salient`, and `flat` across inequalities of cones. This also renames `convex_cone.positive_cone` to `convex_cone.positive` to reduce duplication. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem convex_cone.blunt.anti + theorem convex_cone.blunt_strictly_positive + theorem convex_cone.coe_positive + theorem convex_cone.coe_strictly_positive + theorem convex_cone.flat.mono + theorem convex_cone.mem_positive + theorem convex_cone.mem_strictly_positive + theorem convex_cone.pointed.mono + theorem convex_cone.pointed_positive - theorem convex_cone.pointed_positive_cone + def convex_cone.positive - def convex_cone.positive_cone + theorem convex_cone.positive_le_strictly_positive + theorem convex_cone.salient.anti + theorem convex_cone.salient_positive - theorem convex_cone.salient_positive_cone + theorem convex_cone.salient_strictly_positive + def convex_cone.strictly_positive 2022-08-10 00:22:57 f838fe8 feat(order/initial_seg): `is_empty (r ≺i r)` (#15803) ESTIMATED CHANGES Modified src/order/initial_seg.lean +/- theorem principal_seg.irrefl Modified src/set_theory/ordinal/basic.lean 2022-08-09 21:53:13 a913b9b chore(order/filter): move `filter.prod` and `filter.coprod` to a new file (#15937) These lemmas and definitions are moved without changes. ESTIMATED CHANGES Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean - theorem filter.bot_coprod - theorem filter.bot_coprod_bot - theorem filter.bot_prod - theorem filter.comap_prod - theorem filter.compl_mem_coprod - theorem filter.coprod_bot - theorem filter.coprod_mono - theorem filter.coprod_ne_bot_iff - theorem filter.coprod_ne_bot_left - theorem filter.coprod_ne_bot_right - theorem filter.eventually.curry - theorem filter.eventually.diag_of_prod - theorem filter.eventually.prod_inl - theorem filter.eventually.prod_inr - theorem filter.eventually.prod_mk - theorem filter.eventually_eq.prod_map - theorem filter.eventually_le.prod_map - theorem filter.eventually_prod_iff - theorem filter.le_prod_map_fst_snd - theorem filter.map_const_principal_coprod_map_id_principal - theorem filter.map_prod_map_const_id_principal_coprod_principal - theorem filter.map_prod_map_coprod_le - theorem filter.map_pure_prod - theorem filter.map_swap4_prod - theorem filter.mem_coprod_iff - theorem filter.mem_prod_iff - theorem filter.mem_prod_principal - theorem filter.mem_prod_top - theorem filter.ne_bot.prod - theorem filter.principal_coprod_principal - theorem filter.prod_assoc - theorem filter.prod_assoc_symm - theorem filter.prod_bot - theorem filter.prod_comap_comap_eq - theorem filter.prod_comm' - theorem filter.prod_comm - theorem filter.prod_eq - theorem filter.prod_eq_bot - theorem filter.prod_inf_prod - theorem filter.prod_infi_left - theorem filter.prod_infi_right - theorem filter.prod_map_map_eq' - theorem filter.prod_map_map_eq - theorem filter.prod_mem_prod - theorem filter.prod_mem_prod_iff - theorem filter.prod_mono - theorem filter.prod_ne_bot - theorem filter.prod_principal_principal - theorem filter.prod_pure - theorem filter.prod_pure_pure - theorem filter.prod_sup - theorem filter.prod_top - theorem filter.pure_prod - theorem filter.sup_prod - theorem filter.tendsto.prod_map - theorem filter.tendsto.prod_map_coprod - theorem filter.tendsto.prod_mk - theorem filter.tendsto_diag - theorem filter.tendsto_fst - theorem filter.tendsto_prod_assoc - theorem filter.tendsto_prod_assoc_symm - theorem filter.tendsto_prod_iff' - theorem filter.tendsto_prod_iff - theorem filter.tendsto_prod_swap - theorem filter.tendsto_snd - theorem filter.tendsto_swap4_prod Modified src/order/filter/n_ary.lean Added src/order/filter/prod.lean + theorem filter.bot_coprod + theorem filter.bot_coprod_bot + theorem filter.bot_prod + theorem filter.comap_prod + theorem filter.compl_mem_coprod + theorem filter.coprod_bot + theorem filter.coprod_mono + theorem filter.coprod_ne_bot_iff + theorem filter.coprod_ne_bot_left + theorem filter.coprod_ne_bot_right + theorem filter.eventually.curry + theorem filter.eventually.diag_of_prod + theorem filter.eventually.prod_inl + theorem filter.eventually.prod_inr + theorem filter.eventually.prod_mk + theorem filter.eventually_eq.prod_map + theorem filter.eventually_le.prod_map + theorem filter.eventually_prod_iff + theorem filter.le_prod_map_fst_snd + theorem filter.map_const_principal_coprod_map_id_principal + theorem filter.map_prod_map_const_id_principal_coprod_principal + theorem filter.map_pure_prod + theorem filter.map_swap4_prod + theorem filter.mem_coprod_iff + theorem filter.mem_prod_iff + theorem filter.mem_prod_principal + theorem filter.mem_prod_top + theorem filter.ne_bot.prod + theorem filter.principal_coprod_principal + theorem filter.prod_assoc + theorem filter.prod_assoc_symm + theorem filter.prod_bot + theorem filter.prod_comm' + theorem filter.prod_comm + theorem filter.prod_eq + theorem filter.prod_eq_bot + theorem filter.prod_inf_prod + theorem filter.prod_infi_left + theorem filter.prod_infi_right + theorem filter.prod_map_map_eq' + theorem filter.prod_mem_prod + theorem filter.prod_mem_prod_iff + theorem filter.prod_mono + theorem filter.prod_ne_bot + theorem filter.prod_principal_principal + theorem filter.prod_pure + theorem filter.prod_pure_pure + theorem filter.prod_sup + theorem filter.prod_top + theorem filter.pure_prod + theorem filter.sup_prod + theorem filter.tendsto.prod_map + theorem filter.tendsto.prod_map_coprod + theorem filter.tendsto.prod_mk + theorem filter.tendsto_diag + theorem filter.tendsto_fst + theorem filter.tendsto_prod_assoc + theorem filter.tendsto_prod_assoc_symm + theorem filter.tendsto_prod_iff' + theorem filter.tendsto_prod_iff + theorem filter.tendsto_prod_swap + theorem filter.tendsto_snd + theorem filter.tendsto_swap4_prod + theorem filter.{u 2022-08-09 21:53:12 e71c115 feat(order/max): no value is accessible in a `no_min_order` / `no_max_order` (#15931) ESTIMATED CHANGES Modified src/order/max.lean + theorem no_max_order.not_acc + theorem no_min_order.not_acc 2022-08-09 21:53:11 511caf6 chore(analysis/calculus/cont_diff): rename and add @[simp] to `iterated_fderiv_within_zero_fun` (#15896) Rename the lemma `iterated_fderiv_within_zero_fun` to `iterated_fderiv_zero_fun` because it is not stated with `iterated_fderiv_within` and add the `simp` attribute. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean - theorem iterated_fderiv_within_zero_fun + theorem iterated_fderiv_zero_fun 2022-08-09 21:53:10 a5413b6 chore(analysis/calculus/cont_diff): Add two helper lemmas (#15894) This PR adds the forward direction of `cont_diff_iff_continuous_differentiable` as separate lemmas, which enables using dot-notation for `cont_diff`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff.continuous_iterated_fderiv + theorem cont_diff.differentiable_iterated_fderiv 2022-08-09 21:53:09 2f9a721 feat(analysis/inner_product_space/projection): various facts about `orthogonal_projection` (#15807) ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem orthogonal_projection_minimal + theorem orthogonal_projection_orthogonal_projection_of_le + theorem orthogonal_projection_tendsto_closure_supr + theorem orthogonal_projection_tendsto_self Modified src/topology/algebra/module/basic.lean 2022-08-09 20:13:56 f37e88f chore(linear_algebra/free_module/basic): tidy up (#15956) This generalizes a few free instances to not assume the same ring appears twice, notably `module.free R (ι →₀ R)` to `module.free R (ι →₀ M)` and `module.free R (matrix m n R)` to `module.free R (matrix m n M)`. This renames `module.free.pi.free`, a special case of `module.free.pi`, to `module.free.function`. It also renames `module.free.finsupp.free` to `module.free.finsupp`. In order to make this change we relax the typeclasses in `finsupp.basis` from rings to semirings. We make the same relaxation on `module.free.pi`, which results in us running into the same typeclass search bug that already occurs for `module.finite`. Finally, at the request of the new linter this changes `fintype` assumptions to `finite`. ESTIMATED CHANGES Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_module/basic.lean Modified src/linear_algebra/free_module/strong_rank_condition.lean 2022-08-09 20:13:55 b6ab1f4 feat(analysis/normed/field/basic): define `densely_normed_field` give instances for ℚ, ℝ, ℂ and `is_R_or_C` (#15657) This adds a new type class extending `normed_field` which is named `densely_normed_field` per this [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/hypotheses.20for.20a.20field.20property/near/290408091). The name comes from the fact that the (nn)norm has dense range in ℝ≥0. This type class is strictly stronger than `nontrivially_normed_field`, with `padic` being a field which is nontrivially normed but not densely normed. The instances of `nontrivially_normed_field` for each of ℚ, ℝ, ℂ have all been migrated to `densely_normed_field` instead. Moreover, `is_R_or_C` now extends `densely_normed_field`; this is natural because even if it only extends `nontrivially_normed_field`, it would still be possible to prove that the norm has dense range in ℝ≥0. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Modified src/analysis/inner_product_space/adjoint.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/normed/field/basic.lean + theorem normed_field.dense_range_nnnorm + theorem normed_field.exists_lt_nnnorm_lt + theorem normed_field.exists_lt_norm_lt Modified src/data/complex/is_R_or_C.lean Modified src/geometry/manifold/instances/sphere.lean 2022-08-09 19:12:16 77d020f feat(number_theory/number_field.lean): generalise ```range_eq_roots``` to relative extensions (#15903) The statement of ```range_eq_roots``` is generalised to relative extensions: Let `A` be an algebraically closed field and let `x ∈ K`, with `K` a number field. For `F`, subfield of `K`, the images of `x` by the `F`-algebra morphisms from `K` to `A` are exactly the roots in `A` of the minimal polynomial of `x` over `F`. The original version over `ℚ` is a direct consequence. Still, I kept the statement since I think it is useful. ESTIMATED CHANGES Modified src/number_theory/number_field.lean - theorem number_field.embeddings.eq_roots + theorem number_field.embeddings.range_eq_roots + theorem number_field.embeddings.rat_range_eq_roots 2022-08-09 19:12:15 4a1b530 feat(number_theory/legendre_symbol/quadratic_char): add results on special values (#15888) This uses the new results on Gauss sums to prove results on the values of quadratic characters at 2, -2 and odd primes. The next step will be to use these to prove Quadratic Reciprocity and the Second Supplementary Law for Legendre symbols. [Here](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Gauss.20sums/near/292231902) is the Zulip discussion on Gauss sums. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/gauss_sum.lean +/- theorem finite_field.two_pow_card Modified src/number_theory/legendre_symbol/mul_character.lean + theorem mul_char.is_quadratic.eq_of_eq_coe + theorem mul_char.map_ring_char Modified src/number_theory/legendre_symbol/quadratic_char.lean - theorem char.is_square_neg_one_iff - def char.quadratic_char - theorem char.quadratic_char_card_sqrts - theorem char.quadratic_char_dichotomy - theorem char.quadratic_char_eq_neg_one_iff_not_one - theorem char.quadratic_char_eq_one_of_char_two' - theorem char.quadratic_char_eq_one_of_char_two - theorem char.quadratic_char_eq_pow_of_char_ne_two' - theorem char.quadratic_char_eq_pow_of_char_ne_two - theorem char.quadratic_char_eq_zero_iff' - theorem char.quadratic_char_eq_zero_iff - theorem char.quadratic_char_exists_neg_one - def char.quadratic_char_fun - theorem char.quadratic_char_is_nontrivial - theorem char.quadratic_char_is_quadratic - theorem char.quadratic_char_mul - theorem char.quadratic_char_neg_one - theorem char.quadratic_char_neg_one_iff_not_is_square - theorem char.quadratic_char_one - theorem char.quadratic_char_one_iff_is_square - theorem char.quadratic_char_sq_one' - theorem char.quadratic_char_sq_one - theorem char.quadratic_char_sum_zero - theorem char.quadratic_char_zero + theorem finite_field.is_square_neg_one_iff + theorem finite_field.is_square_neg_two_iff + theorem finite_field.is_square_odd_prime_iff + theorem finite_field.is_square_two_iff + def quadratic_char + theorem quadratic_char_card_card + theorem quadratic_char_card_sqrts + theorem quadratic_char_dichotomy + theorem quadratic_char_eq_neg_one_iff_not_one + theorem quadratic_char_eq_one_of_char_two' + theorem quadratic_char_eq_one_of_char_two + theorem quadratic_char_eq_pow_of_char_ne_two'' + theorem quadratic_char_eq_pow_of_char_ne_two' + theorem quadratic_char_eq_pow_of_char_ne_two + theorem quadratic_char_eq_zero_iff' + theorem quadratic_char_eq_zero_iff + theorem quadratic_char_exists_neg_one + def quadratic_char_fun + theorem quadratic_char_is_nontrivial + theorem quadratic_char_is_quadratic + theorem quadratic_char_mul + theorem quadratic_char_neg_one + theorem quadratic_char_neg_one_iff_not_is_square + theorem quadratic_char_neg_two + theorem quadratic_char_odd_prime + theorem quadratic_char_one + theorem quadratic_char_one_iff_is_square + theorem quadratic_char_sq_one' + theorem quadratic_char_sq_one + theorem quadratic_char_sum_zero + theorem quadratic_char_two + theorem quadratic_char_zero Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/legendre_symbol/zmod_char.lean Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-08-09 17:01:04 59eef0a refactor(algebra/periodic): weaken another `antiperiodic` typeclass assumption (#15961) Followup to #15941 and #15782, weakening the typeclass assumption on the codomain of the antiperiodic function in `antiperiodic.const_sub` (added by #15782) in the same way as done for other lemmas in #15941. ESTIMATED CHANGES Modified src/algebra/periodic.lean +/- theorem function.antiperiodic.const_sub 2022-08-09 17:01:01 5e0a5bc fix(geometry/manifold/complex): remove nonempty assumption (#15948) ESTIMATED CHANGES Modified src/geometry/manifold/complex.lean +/- theorem mdifferentiable.exists_eq_const_of_compact_space 2022-08-09 17:00:58 a150b69 chore(probability/*): change to probability notation in the probability folder (#15933) This PR makes two notational changes in the probability folder: `α` changed to `Ω` and `x` of type `α` to `ω`. ESTIMATED CHANGES Modified src/probability/cond_count.lean +/- def probability_theory.cond_count +/- theorem probability_theory.cond_count_add_compl_eq +/- theorem probability_theory.cond_count_compl +/- theorem probability_theory.cond_count_empty +/- theorem probability_theory.cond_count_empty_meas +/- theorem probability_theory.cond_count_is_probability_measure +/- theorem probability_theory.cond_count_singleton +/- theorem probability_theory.finite_of_cond_count_ne_zero Modified src/probability/conditional_expectation.lean Modified src/probability/conditional_probability.lean +/- def probability_theory.cond +/- theorem probability_theory.cond_apply +/- theorem probability_theory.cond_inter_self Modified src/probability/density.lean +/- theorem measure_theory.has_pdf.measurable +/- theorem measure_theory.has_pdf_of_pdf_ne_zero +/- theorem measure_theory.map_eq_set_lintegral_pdf +/- theorem measure_theory.map_eq_with_density_pdf +/- theorem measure_theory.measurable_of_pdf_ne_zero +/- theorem measure_theory.measurable_pdf +/- theorem measure_theory.pdf.ae_lt_top +/- theorem measure_theory.pdf.has_pdf_iff +/- theorem measure_theory.pdf.has_pdf_iff_of_measurable +/- theorem measure_theory.pdf.have_lebesgue_decomposition_of_has_pdf +/- theorem measure_theory.pdf.integrable_iff_integrable_mul_pdf +/- theorem measure_theory.pdf.is_uniform.has_pdf +/- theorem measure_theory.pdf.is_uniform.is_probability_measure +/- theorem measure_theory.pdf.is_uniform.measure_preimage +/- theorem measure_theory.pdf.is_uniform.pdf_to_real_ae_eq +/- def measure_theory.pdf.is_uniform +/- theorem measure_theory.pdf.lintegral_eq_measure_univ +/- theorem measure_theory.pdf.map_absolutely_continuous +/- theorem measure_theory.pdf.of_real_to_real_ae_eq +/- theorem measure_theory.pdf.quasi_measure_preserving_has_pdf +/- theorem measure_theory.pdf.to_quasi_measure_preserving +/- def measure_theory.pdf +/- theorem measure_theory.pdf_eq_zero_of_not_measurable +/- theorem measure_theory.pdf_undef Modified src/probability/hitting_time.lean +/- theorem measure_theory.hitting_bot_le_iff +/- theorem measure_theory.hitting_eq_Inf +/- theorem measure_theory.hitting_le +/- theorem measure_theory.hitting_le_of_mem +/- theorem measure_theory.hitting_mem_Icc +/- theorem measure_theory.hitting_mem_set +/- theorem measure_theory.hitting_of_lt +/- theorem measure_theory.le_hitting +/- theorem measure_theory.le_hitting_of_exists Modified src/probability/independence.lean +/- theorem probability_theory.Indep.Indep_sets +/- theorem probability_theory.Indep.indep +/- def probability_theory.Indep +/- theorem probability_theory.Indep_fun.indep_fun +/- def probability_theory.Indep_fun +/- def probability_theory.Indep_set +/- theorem probability_theory.Indep_sets.Indep +/- theorem probability_theory.Indep_sets.Indep_aux +/- theorem probability_theory.Indep_sets.indep_sets +/- theorem probability_theory.Indep_sets.pi_Union_Inter_singleton +/- def probability_theory.Indep_sets +/- theorem probability_theory.indep.indep_sets +/- theorem probability_theory.indep.symm +/- def probability_theory.indep +/- theorem probability_theory.indep_fun.ae_eq +/- def probability_theory.indep_fun +/- theorem probability_theory.indep_of_indep_of_le_left +/- theorem probability_theory.indep_of_indep_of_le_right +/- def probability_theory.indep_set +/- theorem probability_theory.indep_sets.Inter +/- theorem probability_theory.indep_sets.Union +/- theorem probability_theory.indep_sets.indep +/- theorem probability_theory.indep_sets.inter +/- theorem probability_theory.indep_sets.symm +/- theorem probability_theory.indep_sets.union +/- theorem probability_theory.indep_sets.union_iff +/- def probability_theory.indep_sets +/- theorem probability_theory.indep_sets_of_indep_sets_of_le_left +/- theorem probability_theory.indep_sets_of_indep_sets_of_le_right +/- theorem probability_theory.indep_sets_singleton_iff Modified src/probability/integration.lean +/- theorem probability_theory.indep_fun.integrable_mul +/- theorem probability_theory.lintegral_mul_indicator_eq_lintegral_mul_lintegral_indicator Modified src/probability/martingale.lean +/- def measure_theory.martingale +/- theorem measure_theory.martingale_condexp +/- theorem measure_theory.martingale_const +/- theorem measure_theory.martingale_zero +/- theorem measure_theory.submartingale.integrable_stopped_value +/- theorem measure_theory.submartingale.set_integral_le +/- theorem measure_theory.submartingale.smul_nonneg +/- theorem measure_theory.submartingale.smul_nonpos +/- theorem measure_theory.submartingale.sum_mul_sub' +/- theorem measure_theory.submartingale.sum_mul_sub +/- def measure_theory.submartingale +/- theorem measure_theory.submartingale_iff_condexp_sub_nonneg +/- theorem measure_theory.supermartingale.set_integral_le +/- theorem measure_theory.supermartingale.smul_nonneg +/- theorem measure_theory.supermartingale.smul_nonpos +/- def measure_theory.supermartingale Modified src/probability/stopping.lean +/- def measure_theory.adapted +/- theorem measure_theory.adapted_zero +/- theorem measure_theory.filtration.adapted_natural +/- def measure_theory.filtration.const +/- theorem measure_theory.filtration.const_apply +/- def measure_theory.filtration.natural +/- structure measure_theory.filtration +/- theorem measure_theory.is_stopping_time.le_measurable_space_of_const_le +/- theorem measure_theory.is_stopping_time.measurable_set_inter_eq_iff +/- theorem measure_theory.is_stopping_time.measurable_set_min_const_iff +/- theorem measure_theory.is_stopping_time.measurable_set_min_iff +/- theorem measure_theory.is_stopping_time.measurable_space_le +/- theorem measure_theory.is_stopping_time.measurable_space_le_of_le_const +/- def measure_theory.is_stopping_time +/- theorem measure_theory.measurable_set_of_filtration +/- def measure_theory.prog_measurable +/- def measure_theory.stopped_process +/- theorem measure_theory.stopped_process_eq_of_ge +/- theorem measure_theory.stopped_process_eq_of_le +/- def measure_theory.stopped_value +/- theorem measure_theory.stopped_value_const +/- theorem measure_theory.stopped_value_eq +/- theorem measure_theory.stopped_value_piecewise_const' +/- theorem measure_theory.stopped_value_piecewise_const +/- theorem measure_theory.stopped_value_sub_eq_sum' Modified src/probability/variance.lean 2022-08-09 17:00:57 d4b5619 chore(data/polynomial/induction): cleanup (#15918) Even ignoring the confusion with `data/polynomial/inductions.lean` (out of scope for this PR), this file is a bit of a mess: * The coeff and summation lemmas are out of place * Some lemmas use a weird `inverse` naming to refer to `set.preimage`. * Some lemmas use `submodule.span` instead of `ideal.span`. This PR moves, renames, and restates the lemmas above as necessary. Some proofs have been golfed to enable the shuffling, but all lemma statements are defeq to the originals. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/is_open_comap_C.lean Modified src/data/polynomial/basic.lean + theorem polynomial.sum_C_mul_X_eq + theorem polynomial.sum_monomial_eq Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_monomial_mul + theorem polynomial.coeff_monomial_zero_mul + theorem polynomial.coeff_mul_monomial + theorem polynomial.coeff_mul_monomial_zero Modified src/data/polynomial/induction.lean - theorem polynomial.coeff_monomial_mul - theorem polynomial.coeff_monomial_zero_mul - theorem polynomial.coeff_mul_monomial - theorem polynomial.coeff_mul_monomial_zero + theorem polynomial.exists_C_coeff_not_mem - theorem polynomial.exists_coeff_not_mem_C_inverse +/- theorem polynomial.mem_span_C_coeff + theorem polynomial.span_le_of_C_coeff_mem - theorem polynomial.span_le_of_coeff_mem_C_inverse - theorem polynomial.sum_C_mul_X_eq - theorem polynomial.sum_monomial_eq 2022-08-09 17:00:56 df1179d feat(algebra/order/archimedean): `archimedean_iff_int_lt`, `archimedean_iff_int_le`, `floor_ring.archimedean` (#15909) Add lemmas `archimedean_iff_int_lt` and `archimedean_iff_int_le`, analogous to existing lemmas for `nat` and `rat`. Deduce that a linear ordered field that is a floor ring is archimedean (it seems we currently only have the converse direction). ESTIMATED CHANGES Modified src/algebra/order/archimedean.lean + theorem archimedean_iff_int_le + theorem archimedean_iff_int_lt + theorem floor_ring.archimedean 2022-08-09 17:00:54 bc1341f feat(algebra/algebra/operations): pointwise mul_semiring_action on submodules (#15877) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem smul_algebra_map Modified src/algebra/algebra/operations.lean 2022-08-09 17:00:53 71320d9 feat(group_theory/group_action/conj_act): smul_comm_class instances (#15876) Notably these instances give us access to conjugation as a linear map, enabling the pointwise scalar multiplication on submodules. I also moved the `forall` lemma to be next to the `rec` definition it is similar to. ESTIMATED CHANGES Modified src/group_theory/group_action/conj_act.lean 2022-08-09 17:00:52 878370b chore(measure_theory/function/condexp): split `conditional_expectation` into multiple files (#15714) ESTIMATED CHANGES Renamed src/measure_theory/function/conditional_expectation.lean to src/measure_theory/function/conditional_expectation/basic.lean - theorem measure_theory.condexp_ae_eq_restrict_of_measurable_space_eq_on - theorem measure_theory.condexp_ae_eq_restrict_zero - theorem measure_theory.condexp_indicator - theorem measure_theory.condexp_indicator_aux - theorem measure_theory.condexp_restrict_ae_eq_restrict - theorem measure_theory.condexp_strongly_measurable_mul - theorem measure_theory.condexp_strongly_measurable_mul_of_bound - theorem measure_theory.condexp_strongly_measurable_mul_of_bound₀ - theorem measure_theory.condexp_strongly_measurable_mul₀ - theorem measure_theory.condexp_strongly_measurable_simple_func_mul - theorem measure_theory.integrable.uniform_integrable_condexp - theorem measure_theory.rn_deriv_ae_eq_condexp - theorem measure_theory.snorm_one_condexp_le_snorm Added src/measure_theory/function/conditional_expectation/indicator.lean + theorem measure_theory.condexp_ae_eq_restrict_of_measurable_space_eq_on + theorem measure_theory.condexp_ae_eq_restrict_zero + theorem measure_theory.condexp_indicator + theorem measure_theory.condexp_indicator_aux + theorem measure_theory.condexp_restrict_ae_eq_restrict Added src/measure_theory/function/conditional_expectation/real.lean + theorem measure_theory.condexp_strongly_measurable_mul + theorem measure_theory.condexp_strongly_measurable_mul_of_bound + theorem measure_theory.condexp_strongly_measurable_mul_of_bound₀ + theorem measure_theory.condexp_strongly_measurable_mul₀ + theorem measure_theory.condexp_strongly_measurable_simple_func_mul + theorem measure_theory.integrable.uniform_integrable_condexp + theorem measure_theory.rn_deriv_ae_eq_condexp + theorem measure_theory.snorm_one_condexp_le_snorm Modified src/probability/notation.lean Modified src/probability/stopping.lean 2022-08-09 17:00:51 b88fa08 feat(set_theory/zfc): lemmas on `to_set` (#15265) We also flip the direction of `Set.ext_iff` to match `set.ext_iff`. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean +/- theorem Set.ext +/- theorem Set.ext_iff + theorem Set.mem_to_set + theorem Set.mk_mem_iff + theorem Set.to_set_empty + theorem Set.to_set_image + theorem Set.to_set_inj + theorem Set.to_set_injective + theorem Set.to_set_insert + theorem Set.to_set_inter + theorem Set.to_set_pair + theorem Set.to_set_sUnion + theorem Set.to_set_sdiff + theorem Set.to_set_sep + theorem Set.to_set_singleton + theorem Set.to_set_subset_iff + theorem Set.to_set_union + theorem pSet.mem_to_set + theorem pSet.to_set_empty + theorem pSet.to_set_sUnion 2022-08-09 14:16:39 eb55b1e chore(algebra/order/floor): generalize lemmas about adding nat from rings to semirings (#15952) This generalizes this typeclass argument of the following lemmas: * `nat.floor_add_nat` * `nat.floor_add_one` * `nat.ceil_add_nat` * `nat.ceil_add_one` * `nat.floor_sub_nat` These generalizations are useful for `nnreal` and a future `nnrat`. ESTIMATED CHANGES Modified src/algebra/order/floor.lean +/- theorem nat.floor_sub_nat 2022-08-09 14:16:38 f028ff2 feat(algebra/hom/group_instances): add missing `int_cast` and `nat_cast` lemmas to `add_monoid.End` and `module.End` (#15839) We already had provided the `nat_cast` field for `add_monoid.End`, this just copies the same pattern to the three other fields, and adds the 8 missing `rfl` lemmas. ESTIMATED CHANGES Modified src/algebra/hom/group_instances.lean + theorem add_monoid.End.int_cast_apply + theorem add_monoid.End.nat_cast_apply Modified src/algebra/module/basic.lean + theorem add_monoid.End.int_cast_def + theorem add_monoid.End.nat_cast_def Modified src/algebra/module/linear_map.lean + theorem module.End.int_cast_apply + theorem module.End.int_cast_def + theorem module.End.nat_cast_apply + theorem module.End.nat_cast_def 2022-08-09 14:16:36 1a51c70 feat(analysis/convex/cone): lemmas about `inner_dual_cone` of unions (#15836) This discards the proof in #15639 and replaces it with a more general strategy and some auxiliary lemmas. This includes an `insert` lemma for consistency with `submodule.span_insert`, even though it follows trivially from the union lemma. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem inner_dual_cone_Union + theorem inner_dual_cone_insert + theorem inner_dual_cone_sUnion + theorem inner_dual_cone_singleton + theorem inner_dual_cone_union 2022-08-09 14:16:35 75f5289 feat(data/list/perm): binding all the sublists of a given length gives all the sublists (#15834) This is essentially the defining relation between `sublists'` and `sublists_len`. This also adds a few other trivial lemmas about `sublists_len`. ESTIMATED CHANGES Modified src/data/list/perm.lean + theorem list.map_append_bind_perm + theorem list.range_bind_sublists_len_perm Modified src/data/list/sublists.lean + theorem list.sublists_len_length + theorem list.sublists_len_of_length_lt Modified src/tactic/wlog.lean 2022-08-09 14:16:34 545a595 feat(measure_theory/measure/measure_space): add instance `compact_space.is_finite_measure` (#15693) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem is_finite_measure_iff_is_finite_measure_on_compacts_of_compact_space + theorem measure_theory.compact_space.is_finite_measure 2022-08-09 12:53:13 7adef57 feat(analysis/special_functions/trigonometric/angle): more `sin` and `cos` lemmas (#15945) Add more lemmas about `real.angle.sin` and `real.angle.cos`, generally deduced from corresponding lemmas for `real.sin` and `real.cos`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.cos_add_pi + theorem real.angle.cos_antiperiodic + theorem real.angle.cos_coe_pi + theorem real.angle.cos_neg + theorem real.angle.cos_sub_pi + theorem real.angle.cos_zero + theorem real.angle.sin_add_pi + theorem real.angle.sin_antiperiodic + theorem real.angle.sin_coe_pi + theorem real.angle.sin_eq_zero_iff + theorem real.angle.sin_neg + theorem real.angle.sin_sub_pi + theorem real.angle.sin_zero 2022-08-09 12:53:11 d812abd refactor(algebra/periodic): weaken `antiperiodic` typeclass assumptions (#15941) Many lemmas about `antiperiodic` have typeclass assumptions on the codomain of the antiperiodic function that are stronger than necessary, generally because the weaker typeclasses didn't exist when most of the lemmas were added. Weaken those assumptions as follows: * `add_group` to `has_involutive_neg` (the most common change). * `add_group` to `has_neg` (in a few places). * `add_group` to `subtraction_monoid` (twice). * `ring` to `has_mul` with `has_distrib_neg` (once). * `division_ring` to `division_monoid` with `has_distrib_neg` (once). There remain three cases where lemmas have typeclass assumptions requiring addition and subtraction operations on the codomain, despite those operations not otherwise being used in the lemma, because of the lack of more specific typeclasses appropriate to those lemmas. The two that I changed to use `subtraction_monoid` actually only need the `neg_zero` lemma (along with `has_involutive_neg` in one case), but we don't have a typeclass for types that satisfy `neg_zero` (one example without addition and subtraction operations is `sign_type`). And `antiperiodic.smul` actually only needs a scalar action that satisfies `smul_neg`, without needing addition or subtraction operations on the type on which the scalar action acts, but again we don't have such a typeclass (and I don't know if we have any such scalar actions in mathlib for which such a typeclass would actually enable this lemma to apply). ESTIMATED CHANGES Modified src/algebra/periodic.lean +/- theorem function.antiperiodic.add +/- theorem function.antiperiodic.div +/- theorem function.antiperiodic.funext' +/- theorem function.antiperiodic.int_even_mul_periodic +/- theorem function.antiperiodic.int_mul_eq_of_eq_zero +/- theorem function.antiperiodic.int_odd_mul_antiperiodic +/- theorem function.antiperiodic.mul +/- theorem function.antiperiodic.nat_even_mul_periodic +/- theorem function.antiperiodic.nat_mul_eq_of_eq_zero +/- theorem function.antiperiodic.nat_odd_mul_antiperiodic +/- theorem function.antiperiodic.neg +/- theorem function.antiperiodic.neg_eq +/- theorem function.antiperiodic.periodic +/- theorem function.antiperiodic.sub +/- theorem function.antiperiodic.sub_eq' +/- theorem function.antiperiodic.sub_eq +/- theorem function.periodic.add_antiperiod +/- theorem function.periodic.add_antiperiod_eq +/- theorem function.periodic.sub_antiperiod +/- theorem function.periodic.sub_antiperiod_eq 2022-08-09 12:53:10 346cc93 fix(number_theory/cyclotomic/primitive_roots): speedup (#15804) needed for #15784's reverting of the timeout ESTIMATED CHANGES Modified src/number_theory/cyclotomic/primitive_roots.lean + theorem is_primitive_root.embeddings_equiv_primitive_roots_apply_coe 2022-08-09 12:53:08 954f3e1 feat(algebra/periodic): `const_add`, `add_const`, `const_sub`, `sub_const` (#15782) Add lemmas that if `f` is periodic (or antiperiodic), so are functions such as `λ x, f (a + x)` and `λ x, f (x - a)` where a constant is added or subtracted on either side of the argument, with the same period. As far as I can tell, while mathlib has such lemmas about the effect of multiplying or dividing the argument by a constant on the period, it doesn't have them for addition or subtraction. It's possible some of these lemmas are true under weaker type class assumptions, though I think the type classes used are at least minimal for the proofs I used. ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem function.antiperiodic.add_const + theorem function.antiperiodic.const_add + theorem function.antiperiodic.const_sub + theorem function.antiperiodic.sub_const + theorem function.periodic.add_const + theorem function.periodic.const_add + theorem function.periodic.const_sub + theorem function.periodic.sub_const 2022-08-09 09:08:19 b74907b feat(algebra/category/Group/epi_mono): (mono)epimorphisms and (in)surjections are the same in `(Add)(Comm)Group` (#15496) ESTIMATED CHANGES Modified src/algebra/category/Group/epi_mono.lean + theorem AddGroup.epi_iff_range_eq_top + theorem AddGroup.epi_iff_surjective + theorem CommGroup.epi_iff_range_eq_top + theorem CommGroup.epi_iff_surjective + theorem CommGroup.ker_eq_bot_of_mono + theorem CommGroup.mono_iff_injective + theorem CommGroup.mono_iff_ker_eq_bot + theorem CommGroup.range_eq_top_of_epi + theorem monoid_hom.range_eq_top_of_cancel Added src/algebra/category/Group/equivalence_Group_AddGroup.lean + def AddCommGroup.to_CommGroup + def AddGroup.to_Group + def CommGroup.to_AddCommGroup + def CommGroup_AddCommGroup_equivalence + def Group.to_AddGroup + def Group_AddGroup_equivalence Modified src/algebra/hom/equiv.lean + def add_equiv.additive_multiplicative + def mul_equiv.multiplicative_additive 2022-08-09 09:08:17 a88bc4f feat(analysis/convex): the gauge as a seminorm over is_R_or_C (#14879) Constructs the gauge for a set on a vector spaces over `is_R_or_C` assuming that the set is convex, balanced and absorbing. The main part of this PR is to show that if a set is balanced then the corresponding gauge has the correct scaling behavior. ESTIMATED CHANGES Modified src/analysis/convex/gauge.lean + theorem gauge_norm_smul +/- def gauge_seminorm +/- theorem gauge_smul Modified src/analysis/locally_convex/basic.lean + theorem balanced_iff_neg_mem Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.real_smul_eq_coe_mul + theorem is_R_or_C.real_smul_eq_coe_smul 2022-08-09 06:40:19 03f58c5 feat(category_theory/limits): the constant functor preserves (co)limits (#15938) ESTIMATED CHANGES Modified src/category_theory/limits/functor_category.lean + def category_theory.limits.preserves_colimits_of_evaluation + def category_theory.limits.preserves_limits_of_evaluation - def category_theory.limits.{w' Modified src/category_theory/products/basic.lean + def category_theory.functor.const_comp_evaluation_obj 2022-08-09 06:40:18 26e8026 feat(algebra/big_operators/basic): Sums and product in `additive`/`multiplicative` (#15898) and multiplicativizes `eq_sum_range_sub`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.eq_prod_range_div' + theorem finset.eq_prod_range_div - theorem finset.eq_sum_range_sub' - theorem finset.eq_sum_range_sub + theorem of_add_list_prod + theorem of_add_multiset_prod + theorem of_add_sum + theorem of_mul_list_prod + theorem of_mul_multiset_prod + theorem of_mul_prod + theorem to_add_list_sum + theorem to_add_multiset_sum + theorem to_add_prod + theorem to_mul_list_sum + theorem to_mul_multiset_sum + theorem to_mul_sum 2022-08-09 04:12:22 0bd4fae feat(topology/algebra/group): add lemmas about `units` (#15921) * add `simps` attribute here and there; * add `continuous_prod_mk`, `units.continuous_iff`, `units.continuous_inv`, and `continuous.map_units`; * golf `homeomorph.prod_units`, add additive version; * drop unused section variables, golf `topological_group_Inf`. ESTIMATED CHANGES Modified src/algebra/group/prod.lean Modified src/topology/algebra/constructions.lean + theorem units.continuous_coe_inv Modified src/topology/algebra/group.lean +/- def units.homeomorph.prod_units Modified src/topology/algebra/monoid.lean + theorem continuous.units_map Modified src/topology/constructions.lean + theorem continuous_prod_mk 2022-08-09 00:13:04 ec81883 feat(geometry/manifold/complex): holomorphic function on compact connected manifold is constant (#15667) Our first fact about complex manifolds! [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Missing.20facts.20about.20.60locally_constant.60) ESTIMATED CHANGES Added src/geometry/manifold/complex.lean + theorem mdifferentiable.apply_eq_of_compact_space + theorem mdifferentiable.apply_eq_of_is_compact + theorem mdifferentiable.exists_eq_const_of_compact_space 2022-08-08 21:44:37 e0b9062 doc(algebra/homology/homological_complex): fix doc and names (#15940) Some trivial modifications following #15690. ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean + def homological_complex.X_next_iso_self - def homological_complex.X_next_iso_zero + def homological_complex.X_prev_iso_self + theorem homological_complex.X_prev_iso_self_comp_d_to - def homological_complex.X_prev_iso_zero - theorem homological_complex.X_prev_iso_zero_comp_d_to + theorem homological_complex.d_from_comp_X_next_iso_self - theorem homological_complex.d_from_comp_X_next_iso_zero 2022-08-08 21:44:35 fb478f6 chore(data/sign): simplify definition of multiplication (#15920) Removing cases from the match results in better definitional equalities, and is also shorter. This also eliminates the separate `mul` definition for consistency with how the `has_neg` instance has the definition inlined. ESTIMATED CHANGES Modified src/data/sign.lean - def sign_type.mul 2022-08-08 21:44:34 6fcb704 chore(field_theory/polynomial_galois_group): golf `gal_action_hom` (#15919) We already have a more general version of this definition, we may as well implement the specialization in terms of it. ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean 2022-08-08 21:44:33 5be8529 chore(tactic/doc_commands): simpler tactic_doc / library_note encoding (#15913) This does some encoding optimizations on the documentation commands: * Long strings inside `expr` is a source of stack overflows in lean external checkers because the translation uses a chain of `string.cons` applications, so we should avoid putting doc strings in exprs. * There is no need to hash names for either `library_note` or `tactic_doc`, because they already come with a unique name. Concretely: * Instead of encoding `/-- doc -/ library_note "my note"` as ```lean @[library_note] def library_note._1234 := ("my note", "doc") ``` we encode it as ```lean /-- doc -/ @[library_note] def library_note.«my note» := () ``` so we don't have to do any string -> expr encoding. * Similarly, the `description` field is removed from `tactic_doc_entry` and its data is moved to the doc string. ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/doc_commands.lean Modified src/tactic/lint/default.lean 2022-08-08 21:44:32 b976267 chore(data/real/ennreal): deduplicate `ennreal.nat_ne_top` (#15853) The lemmas `ennreal.nat_ne_top` and `ennreal.coe_nat_ne_top` are near duplicates, with the former being a `simp` lemma taking an explicit argument, and the latter being a non-`simp` lemma taking an implicit argument. The former is used slightly more frequently (in explicit form) in mathlib. We remove `ennreal.coe_nat_ne_top` in favor of `ennreal.nat_ne_top`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean - theorem ennreal.coe_nat_ne_top Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/group/measure.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/hausdorff.lean 2022-08-08 21:44:31 b353d8e chore(data/polynomial/degree/lemmas): rename lemmas that should have been renamed in an earlier PR (#15819) In #15694 I was asked to modify some of these lemmas, but forgot to update their names to their new statements. This PR corrects this oversight. ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.coeff_add_eq_right_of_lt - theorem polynomial.coeff_add_succ_eq_right_of_le + theorem polynomial.coeff_sub_eq_left_of_lt + theorem polynomial.coeff_sub_eq_neg_right_of_lt - theorem polynomial.coeff_sub_succ_eq_left_of_le - theorem polynomial.coeff_sub_succ_eq_neg_right_of_le 2022-08-08 21:44:30 c9dc8c1 feat(src/data/polynomial/degree/definitions.lean): a lemma about monic polynomials (#15818) A polynomial is monic is its degree is at most `n` and its `n`-th coefficient equals `1`. This is a lemma that `tactic.interactive.compute_degree` uses. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_eq_of_le_of_coeff_ne_zero + theorem polynomial.monic_of_degree_le_of_coeff_eq_one + theorem polynomial.monic_of_nat_degree_le_of_coeff_eq_one + theorem polynomial.nat_degree_eq_of_le_of_coeff_ne_zero 2022-08-08 21:44:29 e75326d feat(category/idempotents): extension of functors to the idempotent completion (#15746) This PR show that functors `C ⥤ karoubi D` can be canonically extended to functors `karoubi C ⥤ karoubi D`. ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean + theorem category_theory.functor.congr_map Modified src/category_theory/idempotents/functor_categories.lean + theorem category_theory.idempotents.app_comp_p + theorem category_theory.idempotents.app_idem + theorem category_theory.idempotents.app_p_comm + theorem category_theory.idempotents.app_p_comp Added src/category_theory/idempotents/functor_extension.lean + def category_theory.idempotents.functor_extension₁.map + def category_theory.idempotents.functor_extension₁.obj + def category_theory.idempotents.functor_extension₁ + theorem category_theory.idempotents.functor_extension₁_comp_whiskering_left_to_karoubi + theorem category_theory.idempotents.nat_trans_eq 2022-08-08 21:44:28 0a34b82 feat(field_theory/splitting_field): Add `image_root_set` (#15743) This PR adds a short lemma `image_root_set` and uses it to prove that `is_splitting_field` is preserved by algebra isomorphisms. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem polynomial.adjoin_root_set_eq_range + theorem polynomial.image_root_set + theorem polynomial.is_splitting_field.of_alg_equiv 2022-08-08 21:44:27 4ece2ee feat(geometry/manifold/smooth_manifold_with_corners): properties to prove smoothness of mfderiv (#15523) * Define `achart` * Rename and reformulate `mem_maximal_atlas_of_mem_atlas -> subset_maximal_atlas` * Used to prove smoothness of `mfderiv` (that result still has to be generalized to `mfderiv_within`, so is not included yet) * From the sphere eversion project ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + def achart + theorem achart_def + theorem achart_val + theorem coe_achart - theorem structure_groupoid.mem_maximal_atlas_of_mem_atlas + theorem structure_groupoid.subset_maximal_atlas Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff_at_iff_cont_mdiff_at_nhds Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem cont_diff_on_ext_coord_change + theorem cont_diff_within_at_ext_coord_change + theorem ext_chart_at_target + theorem ext_chart_model_space_apply +/- theorem ext_chart_model_space_eq_id + theorem ext_chart_preimage_mem_nhds' + theorem ext_chart_self_apply + theorem ext_chart_self_eq + theorem ext_coord_change_source + theorem model_with_corners.injective - theorem smooth_manifold_with_corners.mem_maximal_atlas_of_mem_atlas + theorem smooth_manifold_with_corners.subset_maximal_atlas Modified src/geometry/manifold/tangent_bundle.lean 2022-08-08 21:44:25 0271f81 feat(order/bounded_order): More `disjoint` lemmas (#15304) ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem codisjoint_left_comm + theorem codisjoint_right_comm + theorem disjoint.le_of_codisjoint + theorem disjoint_left_comm + theorem disjoint_right_comm 2022-08-08 21:44:24 77b8e3c feat(data/set/pointwise): add `mem_pow` and `mem_prod_list_of_fn` (#15049) These are specifically motivated by non-commutative monoids, hence the use of `list.prod` instead of `finset.prod`. ESTIMATED CHANGES Modified src/data/finset/pointwise.lean + theorem finset.coe_list_prod + theorem finset.mem_pow + theorem finset.mem_prod_list_of_fn Modified src/data/set/pointwise.lean + theorem set.mem_list_prod + theorem set.mem_pow + theorem set.mem_prod_list_of_fn 2022-08-08 19:01:35 c7963f4 chore(data/mv_polynomial/basic): generalize lemmas about evaluation at zero (#15929) This adds unapplied versions of the simp lemmas so that they apply more generally, and adds missing versions for `mv_polynomial.eval` and `mv_polynomial.eval₂`. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.eval_zero' + theorem mv_polynomial.eval_zero +/- theorem mv_polynomial.eval₂_hom_zero' + theorem mv_polynomial.eval₂_hom_zero'_apply +/- theorem mv_polynomial.eval₂_hom_zero + theorem mv_polynomial.eval₂_hom_zero_apply + theorem mv_polynomial.eval₂_zero'_apply + theorem mv_polynomial.eval₂_zero_apply Modified src/ring_theory/witt_vector/structure_polynomial.lean 2022-08-08 19:01:33 1eb1aff feat(category_theory): functors preserving exactness are left and right exact (#15900) This is the inverse statement to #14581. ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean + def category_theory.functor.preserves_cokernels_of_map_exact + theorem category_theory.functor.preserves_epimorphisms_of_map_exact + def category_theory.functor.preserves_finite_colimits_of_map_exact + def category_theory.functor.preserves_finite_limits_of_map_exact + def category_theory.functor.preserves_kernels_of_map_exact + theorem category_theory.functor.preserves_monomorphisms_of_map_exact + theorem category_theory.functor.preserves_zero_morphisms_of_map_exact 2022-08-08 19:01:32 acf8294 feat(order/rel_iso): `well_founded (quotient.lift₂ r H) ↔ well_founded r` (#15890) ESTIMATED CHANGES Modified src/logic/embedding.lean + theorem function.embedding.coe_quotient_out Modified src/order/rel_iso.lean + theorem well_founded_lift₂_iff 2022-08-08 16:51:44 7edb6d5 refactor(algebra/field/basic): generalize some lemmas to division monoids (#15845) Generalize various lemmas about the relation of division and negation from `division_ring` to any `division_monoid` with `has_distrib_neg`. This permits these lemmas to apply to `units K` where `ring K`, and to `sign_type`. ESTIMATED CHANGES Modified src/algebra/field/basic.lean 2022-08-08 16:51:43 ab2c6a7 feat(ring_theory/polynomial/chebyshev): general cleanup (#15799) We move `map_T` to save on some `variables` blocks, and clean up some spacing. ESTIMATED CHANGES Modified src/ring_theory/polynomial/chebyshev.lean +/- theorem polynomial.chebyshev.T_add_two +/- theorem polynomial.chebyshev.T_derivative_eq_U +/- theorem polynomial.chebyshev.T_eq_U_sub_X_mul_U +/- theorem polynomial.chebyshev.T_eq_X_mul_T_sub_pol_U +/- theorem polynomial.chebyshev.T_mul +/- theorem polynomial.chebyshev.T_of_two_le +/- theorem polynomial.chebyshev.T_two +/- theorem polynomial.chebyshev.U_add_two +/- theorem polynomial.chebyshev.U_eq_X_mul_U_add_T +/- theorem polynomial.chebyshev.U_of_two_le +/- theorem polynomial.chebyshev.U_two +/- theorem polynomial.chebyshev.map_T +/- theorem polynomial.chebyshev.map_U +/- theorem polynomial.chebyshev.mul_T 2022-08-08 16:51:42 56734db feat(ring_theory/adjoin_root): adjoin_root is noetherian (#15737) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2022-08-08 14:58:37 49cc82c chore(data/mv_polynomial/basic): missing injectivity lemmas (#15928) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.X_inj + theorem mv_polynomial.X_injective + theorem mv_polynomial.monomial_left_inj + theorem mv_polynomial.monomial_left_injective 2022-08-08 11:04:17 11bd2a0 feat(big_operators/basic): sum of count over finset.filter equals countp (#15393) The sum of `l.count x` over `x` in `l.to_finset.filter p` is equal to `l.countp p`. Also includes `prod_eq_one` instances for `list` and `multiset` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.sum_filter_count_eq_countp Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_eq_one + theorem multiset.prod_eq_pow_single + theorem multiset.prod_map_eq_pow_single Modified src/data/list/big_operators.lean + theorem list.prod_eq_one Modified src/data/list/count.lean + theorem list.prod_eq_pow_single + theorem list.prod_map_eq_pow_single Modified src/data/list/dedup.lean + theorem list.count_dedup + theorem list.sum_map_count_dedup_eq_length + theorem list.sum_map_count_dedup_filter_eq_countp Modified src/data/list/nodup.lean + theorem list.count_eq_of_nodup Modified src/data/multiset/nodup.lean + theorem multiset.count_eq_of_nodup 2022-08-08 06:35:25 a81ef2f perf(number_theory/padics/hensel): squeeze simps (#15926) This avoids a timeout in #15890. ESTIMATED CHANGES Modified src/number_theory/padics/hensel.lean 2022-08-08 04:07:58 7fbadc6 chore(order/basic): move `Prop.partial_order` to `order/basic` (#15884) This ensures, among other things, that `r ≤ s` is almost always available as notation for subrelations. We don't move `Prop.linear_order` since doing so means we need to manually prove `or = max_default` and `and = min_default`. ESTIMATED CHANGES Modified src/order/basic.lean + theorem le_Prop_eq + theorem subrelation_iff_le Modified src/order/bounded_order.lean - theorem le_Prop_eq - theorem subrelation_iff_le 2022-08-08 01:39:50 dff563e doc(data/countable/small): fix module docs (#15924) ESTIMATED CHANGES Modified src/data/countable/small.lean 2022-08-08 01:39:49 46ba96e feat(data/sign): more lemmas (#15917) Add various lemmas for manipulation of `sign_type` and the `sign` function. ESTIMATED CHANGES Modified src/data/sign.lean + theorem sign_eq_neg_one_iff + theorem sign_eq_one_iff + theorem sign_nonneg_iff + theorem sign_nonpos_iff + theorem sign_type.le_neg_one_iff + theorem sign_type.le_one + theorem sign_type.lt_one_iff + theorem sign_type.neg_eq_self_iff + theorem sign_type.neg_iff + theorem sign_type.neg_one_le + theorem sign_type.neg_one_lt_iff + theorem sign_type.neg_one_lt_one + theorem sign_type.nonneg_iff + theorem sign_type.nonneg_iff_ne_neg_one + theorem sign_type.nonpos_iff + theorem sign_type.nonpos_iff_ne_one + theorem sign_type.not_lt_neg_one + theorem sign_type.not_one_lt + theorem sign_type.one_le_iff + theorem sign_type.pos_iff + theorem sign_type.self_eq_neg_iff 2022-08-08 01:39:48 a0c5aef feat(data/sym/sym2): `sym2.lift₂` (#15887) We add `sym2.lift₂`, a two-argument version of `sym2.lift`. Its intended purpose is for defining the relation on unordered pairs relating pairs where exactly one entry decreases. We also generalize the types for the existing `funext₂` and `funext₃`. ESTIMATED CHANGES Modified src/data/sym/sym2.lean + theorem sym2.coe_lift₂_symm_apply + def sym2.lift₂ + theorem sym2.lift₂_mk Modified src/logic/basic.lean +/- theorem funext₂ +/- theorem funext₃ 2022-08-08 01:39:47 e992b75 feat(data/list/of_fn): last_of_fn (#15474) Also `of_fn_eq_nil_iff`. ESTIMATED CHANGES Modified src/data/list/of_fn.lean + theorem list.last_of_fn + theorem list.last_of_fn_succ + theorem list.of_fn_eq_nil_iff 2022-08-07 23:17:30 9a4dde3 feat(field_theory/polynomial_galois_group): add `mul_semiring_action` instance for `polynomial.gal` (#15914) ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean 2022-08-07 23:17:28 1e594c7 chore(data/multiset/basic): move theorems around (#15882) This PR does the following: - move the `singleton` instance earlier (I want this defined before `to_list` for a subsequent PR) - move the `order_bot` instance earlier and minor golfs ESTIMATED CHANGES Modified src/data/multiset/basic.lean +/- theorem multiset.le_zero 2022-08-07 23:17:27 0e9c7c1 feat(order/initial_seg): exchange `down` and `down'` (#15802) As customary throughout mathlib, we prime the structure field, and unprime any theorem subsequently derived from it. ESTIMATED CHANGES Modified src/order/initial_seg.lean - theorem principal_seg.down' + theorem principal_seg.down +/- theorem principal_seg.lt_top Modified src/set_theory/ordinal/basic.lean 2022-08-07 23:17:26 530b948 chore(ring_theory/dedekind_domain): better, computable, defeq in `cancel_comm_monoid_with_zero` instance (#15752) The `ideal.cancel_comm_monoid_with_zero` instance transports the cancellativity property across the injection from `ideal` into `fractional_ideal`. However, it also transported all the operations on ideals, making the instance `noncomputable`. We can just use the `ideal.semiring` instance for all these operations so the instance becomes computable again. In addition, this results in better defeq as we don't have to unfold through `fractional_ideal` to get to multiplication. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean 2022-08-07 23:17:25 0530782 chore(order/well_founded): golf + rename variables (#15730) We rename some variables and hypotheses with very odd names, and golf a proof. ESTIMATED CHANGES Modified src/order/well_founded.lean +/- theorem well_founded.self_le_of_strict_mono 2022-08-07 23:17:24 1647838 feat(set_theory/zfc/basic): `pSet` with empty type is equivalent to `Ø` (#15550) We also add `Set.equiv_iff`, which unfolds the definition of `equiv` in terms of `Set.func` and `Set.type`. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem pSet.equiv.exists_left + theorem pSet.equiv.exists_right + theorem pSet.equiv_iff - theorem pSet.exists_equiv_left - theorem pSet.exists_equiv_right 2022-08-07 22:11:02 9e9c3ab chore(analysis/convex/cone): fix typeclass assumption and add a missing lemma (#15879) We fix a typeclass assumption: `ordered_add_comm_group` to `add_comm_group`. The ordered structure is never used. Also add a missing lemma: `mem_map`. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem convex_cone.mem_map 2022-08-07 16:31:16 a6b56ec refactor(analysis/normed_space/operator_norm): generalize `continuous_linear_map.lmul` to non-unital algebras (#15868) After the recent refactor in #15310 of `algebra.lmul` (resulting in `linear_map.mul` in particular) the type class restrictions on `continuous_linear_map.lmul` (and `continuous_linear_map.lmul_right` and `continuous_linear_map.lmul_right_left`) can be weakened to non-unital normed algebras, which we do here. `continuous_linear_map.lmulₗᵢ` and `continuous_linear_map.lmul_rightₗᵢ` have not had their type class requirements weakened because they require `norm_one_class`, and hence unital algebras. In many non-unital algebras (including all non-unital normed algebras with an approximate unit, and hence all C⋆-algebras), the maps `continuous_linear_map.lmul` (and `lmul_right`) are nevertheless isometric, but this requires other properties so they are not implemented here. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.coe_lmul_rightₗᵢ +/- theorem continuous_linear_map.coe_lmulₗᵢ +/- def continuous_linear_map.lmul_rightₗᵢ +/- def continuous_linear_map.lmulₗᵢ +/- theorem continuous_linear_map.op_norm_lmul_apply +/- theorem continuous_linear_map.op_norm_lmul_right_apply 2022-08-07 14:57:21 a97d85d feat(measure_theory/function/ae_eq_of_integral): remove a finite_measure assumption (#15899) ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_of_integral.lean + theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg - theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_finite_measure - theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_finite_measure_of_strongly_measurable + theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_strongly_measurable +/- theorem measure_theory.ae_nonneg_restrict_of_forall_set_integral_nonneg_inter - theorem measure_theory.integrable.ae_nonneg_of_forall_set_integral_nonneg Modified src/probability/martingale.lean +/- theorem measure_theory.submartingale.condexp_sub_nonneg 2022-08-07 10:16:52 2be2f2c feat(analysis/normed_space/multilinear): constant scalar multiplication is continuous (#15897) This PR adds an instance for continuous multilinear maps that gives continuous scalar multiplication. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean 2022-08-07 09:31:59 9a5b984 doc(linear_algebra/clifford_algebra/basic): docstring clarification (#15892) ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean 2022-08-07 07:29:45 e2333f3 feat(probability/upcrossing): Doob's upcrossing estimate (#14933) This PR proves Doob's upcrossing estimate which is central for the martingale convergence theorems. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/order/lattice_group.lean + theorem lattice_ordered_comm_group.pos_eq_self_of_one_lt_pos Modified src/probability/hitting_time.lean + theorem measure_theory.hitting_eq_hitting_of_exists + theorem measure_theory.is_stopping_time_hitting_is_stopping_time Modified src/probability/martingale.lean + theorem measure_theory.martingale_const Modified src/probability/stopping.lean + theorem measure_theory.adapted_const Added src/probability/upcrossing.lean + theorem measure_theory.adapted.integrable_upcrossings_before + theorem measure_theory.adapted.is_stopping_time_crossing + theorem measure_theory.adapted.is_stopping_time_lower_crossing_time + theorem measure_theory.adapted.is_stopping_time_upper_crossing_time + theorem measure_theory.adapted.measurable_upcrossings + theorem measure_theory.adapted.measurable_upcrossings_before + theorem measure_theory.adapted.upcrossing_strat_adapted + theorem measure_theory.crossing_eq_crossing_of_lower_crossing_time_lt + theorem measure_theory.crossing_eq_crossing_of_upper_crossing_time_lt + theorem measure_theory.crossing_pos_eq + theorem measure_theory.exists_upper_crossing_time_eq + theorem measure_theory.integral_mul_upcrossings_before_le_integral + theorem measure_theory.le_sub_of_le_upcrossings_before + def measure_theory.lower_crossing_time + def measure_theory.lower_crossing_time_aux + theorem measure_theory.lower_crossing_time_le + theorem measure_theory.lower_crossing_time_le_upper_crossing_time_succ + theorem measure_theory.lower_crossing_time_lt_of_lt_upcrossings_before + theorem measure_theory.lower_crossing_time_lt_upper_crossing_time + theorem measure_theory.lower_crossing_time_mono + theorem measure_theory.lower_crossing_time_stabilize' + theorem measure_theory.lower_crossing_time_stabilize + theorem measure_theory.lower_crossing_time_zero + theorem measure_theory.mul_integral_upcrossings_before_le_integral_pos_part_aux1 + theorem measure_theory.mul_integral_upcrossings_before_le_integral_pos_part_aux2 + theorem measure_theory.mul_upcrossings_before_le + theorem measure_theory.stopped_value_lower_crossing_time + theorem measure_theory.stopped_value_upper_crossing_time + theorem measure_theory.sub_eq_zero_of_upcrossings_before_lt + theorem measure_theory.submartingale.mul_integral_upcrossings_before_le_integral_pos_part + theorem measure_theory.submartingale.mul_lintegral_upcrossings_le_lintegral_pos_part + theorem measure_theory.submartingale.sum_mul_upcrossing_strat_le + theorem measure_theory.submartingale.sum_sub_upcrossing_strat_mul + theorem measure_theory.submartingale.sum_upcrossing_strat_mul + def measure_theory.upcrossing_strat + theorem measure_theory.upcrossing_strat_le_one + theorem measure_theory.upcrossing_strat_nonneg + def measure_theory.upcrossings_before + theorem measure_theory.upcrossings_before_bot + theorem measure_theory.upcrossings_before_eq_sum + theorem measure_theory.upcrossings_before_le + theorem measure_theory.upcrossings_before_lt_of_exists_upcrossing + theorem measure_theory.upcrossings_before_mono + theorem measure_theory.upcrossings_before_pos_eq + theorem measure_theory.upcrossings_before_zero' + theorem measure_theory.upcrossings_before_zero + theorem measure_theory.upcrossings_lt_top_iff + def measure_theory.upper_crossing_time + theorem measure_theory.upper_crossing_time_bound_eq + theorem measure_theory.upper_crossing_time_eq_of_bound_le + theorem measure_theory.upper_crossing_time_eq_of_upcrossings_before_lt + theorem measure_theory.upper_crossing_time_eq_upper_crossing_time_of_lt + theorem measure_theory.upper_crossing_time_le + theorem measure_theory.upper_crossing_time_le_lower_crossing_time + theorem measure_theory.upper_crossing_time_lt_bdd_above + theorem measure_theory.upper_crossing_time_lt_lower_crossing_time + theorem measure_theory.upper_crossing_time_lt_nonempty + theorem measure_theory.upper_crossing_time_lt_of_le_upcrossings_before + theorem measure_theory.upper_crossing_time_lt_succ + theorem measure_theory.upper_crossing_time_mono + theorem measure_theory.upper_crossing_time_stabilize' + theorem measure_theory.upper_crossing_time_stabilize + theorem measure_theory.upper_crossing_time_succ + theorem measure_theory.upper_crossing_time_succ_eq + theorem measure_theory.upper_crossing_time_zero' + theorem measure_theory.upper_crossing_time_zero 2022-08-06 09:17:24 14d34b7 feat(topology/metric_space/*): `additive`/`multiplicative`/`order_dual` instances (#15704) Transfer topology, bornology, uniform space and metric space instances to `additive`, `multiplicative` and `order_dual`. ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/bornology/constructions.lean Modified src/topology/constructions.lean + theorem continuous_of_add + theorem continuous_of_dual + theorem continuous_of_mul + theorem continuous_to_add + theorem continuous_to_dual + theorem continuous_to_mul + theorem is_closed_map_of_add + theorem is_closed_map_of_dual + theorem is_closed_map_of_mul + theorem is_closed_map_to_add + theorem is_closed_map_to_dual + theorem is_closed_map_to_mul + theorem is_open_map_of_add + theorem is_open_map_of_dual + theorem is_open_map_of_mul + theorem is_open_map_to_add + theorem is_open_map_to_dual + theorem is_open_map_to_mul + theorem nhds_of_add + theorem nhds_of_dual + theorem nhds_of_mul + theorem nhds_to_add + theorem nhds_to_dual + theorem nhds_to_mul Modified src/topology/metric_space/algebra.lean Modified src/topology/metric_space/basic.lean + theorem dist_of_add + theorem dist_of_dual + theorem dist_of_mul + theorem dist_to_add + theorem dist_to_dual + theorem dist_to_mul + theorem nndist_of_add + theorem nndist_of_dual + theorem nndist_of_mul + theorem nndist_to_add + theorem nndist_to_dual + theorem nndist_to_mul Modified src/topology/metric_space/emetric_space.lean + theorem edist_of_add + theorem edist_of_dual + theorem edist_of_mul + theorem edist_to_add + theorem edist_to_dual + theorem edist_to_mul Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous_of_add + theorem uniform_continuous_of_mul + theorem uniform_continuous_to_add + theorem uniform_continuous_to_mul + theorem uniformity_additive + theorem uniformity_multiplicative 2022-08-06 05:32:58 e3d2f74 feat(data/nat): Add new binary recursors; prove the relationship between `nat.bits` and other pieces of code (#14990) This is in connection to https://github.com/leanprover-community/mathlib/pull/13208, because I was asked to write `to_bits` in terms of `nat.size` and `nat.bits`, but `nat.bits` was hard to use (there were no lemmas about it). This PR proves some statements about `nat.bits`, so that it can finally be used. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.inth_zero_eq_head Added src/data/nat/bits.lean + def nat.binary_rec' + theorem nat.binary_rec_eq' + def nat.binary_rec_from_one + theorem nat.bit0_bits + theorem nat.bit1_bits + theorem nat.bit_eq_zero_iff + theorem nat.bits_append_bit + theorem nat.bodd_eq_bits_head + theorem nat.div2_bits_eq_tail + theorem nat.one_bits + theorem nat.size_eq_bits_len + theorem nat.zero_bits Modified src/data/nat/bitwise.lean + theorem nat.test_bit_eq_inth Modified src/data/nat/digits.lean + theorem nat.digits_two_eq_bits 2022-08-06 01:01:25 dffc243 feat(order/complete_lattice): add `equiv.supr_congr` and `equiv.supr_comp` lemmas (#15852) Adds these lemmas as easy consequences of the `function.surjective` versions in order to aid in discovery. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem equiv.infi_comp + theorem equiv.supr_comp - theorem function.surjective.infi_congr 2022-08-05 22:34:09 d5344df feat(algebra/order/ring): lt_mul_{left,right,self} (#15848) ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem lt_mul_left + theorem lt_mul_right + theorem lt_mul_self 2022-08-05 19:22:18 d1795d6 feat(topology/algebra/module/basic): continuous versions of `linear_map.comp_sub` and variants (#15870) ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean + theorem continuous_linear_map.comp_neg + theorem continuous_linear_map.comp_sub + theorem continuous_linear_map.neg_comp + theorem continuous_linear_map.sub_comp 2022-08-05 12:35:42 68cc613 feat(algebraic_geometry/open_immersion): Restricting a morphism twice is isomorphic to one restriction. (#15710) ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean +/- def algebraic_geometry.Scheme.affine_basic_open + theorem algebraic_geometry.is_affine_open.image_is_open_immersion Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.open_cover_of_supr_eq_top + def algebraic_geometry.is_open_immersion.opens_range + def algebraic_geometry.morphism_restrict_eq + def algebraic_geometry.morphism_restrict_opens_range + def algebraic_geometry.morphism_restrict_restrict + def algebraic_geometry.morphism_restrict_restrict_basic_open Modified src/category_theory/arrow.lean + def category_theory.arrow.iso_mk' Modified src/category_theory/morphism_property.lean + theorem category_theory.morphism_property.respects_iso.arrow_iso_iff + theorem category_theory.morphism_property.respects_iso.arrow_mk_iso_iff 2022-08-05 10:19:24 2ddf74a feat(set_theory/game/nim): lemmas about `nim 1` (#14787) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean + theorem pgame.default_nim_one_left_moves_eq + theorem pgame.default_nim_one_right_moves_eq + theorem pgame.nim_one_move_left + theorem pgame.nim_one_move_right + theorem pgame.to_left_moves_nim_one_symm + theorem pgame.to_right_moves_nim_one_symm 2022-08-05 09:34:12 666c6e0 feat(set_theory/game/nim): Grundy value in terms of right moves (#15410) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean - theorem pgame.grundy_value_def + theorem pgame.grundy_value_eq_mex_left + theorem pgame.grundy_value_eq_mex_right + theorem pgame.grundy_value_neg 2022-08-05 08:41:44 162413f fix(probability/notation): add missing spaces around operators in notation (#15862) This ensures these operators are pretty-printed with spaces ESTIMATED CHANGES Modified src/probability/notation.lean 2022-08-04 19:30:11 6120aac chore(data/seq/*): trivial spacing fixes (#15847) We do `λx` → `λ x` and a single instance of `{ x }` → `{x}`. ESTIMATED CHANGES Modified src/data/seq/computation.lean +/- def computation.empty +/- theorem computation.equiv.refl +/- def computation.return Modified src/data/seq/parallel.lean Modified src/data/seq/wseq.lean 2022-08-04 18:08:53 11cace1 feat(data/real/ennreal): add instance linear_ordered_comm_monoid_with_zero ℝ≥0∞ (#15851) Adding this instance also yields an instance of `zero_le_one_class` via type class inference, which gives access to `one_le_two`, so we remove `ennreal.one_le_two` in favor of `one_le_two`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean - theorem ennreal.one_le_two Modified src/probability/variance.lean 2022-08-04 15:03:21 7eaf341 chore(analysis/mean_inequalities_pow): weaken assumptions on rpow_add_le_rpow (#15823) ESTIMATED CHANGES Modified src/analysis/mean_inequalities_pow.lean +/- theorem ennreal.rpow_add_le_add_rpow +/- theorem nnreal.rpow_add_le_add_rpow Modified src/analysis/normed_space/lp_space.lean Modified src/measure_theory/function/lp_space.lean 2022-08-04 15:03:19 20f68fc feat(field_theory/splitting_field): If an intermediate field contains all of the roots, then the polynomial splits (#15658) This lemma came up when proving that if `p` splits in `L/K`, then `p.is_splitting_field K (adjoin K (p.root_set L))` ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem intermediate_field.splits_of_splits 2022-08-04 14:20:02 4d59d4a feat(number_theory): [S/P^e : R/p] = e * [S/P : R/p], where e is ramification index (#15316) Let `S` be a Dedekind domain extending the commutative ring `R`, `p` a maximal ideal of `R`, `P` a prime ideal of `S`, and `e` the (nonzero) ramification index of `P` over `p`. Because the ramification index is nonzero, we get an inclusion `R/p → S/P` and we can compute that the degree of the field extension `[S/(P^e) : R/p]` is exactly `e` times `[S/P : R/p]`. This is the next step in showing the fundamental identity of inertia degree and ramification index (#12287). Setting up the ingredients for the proof is quite complicated because it involves taking `(P^(i+1) / P^e)` as a `R/p`-subspace of `P^i / P^e` and basically each part of this structure would produce free metavariables if we naïvely assigned it an instance. In the end, the important parts are an instance for `S/(P^e)` as `R/p`-algebra and replacing subspaces with the image of inclusion maps. ESTIMATED CHANGES Modified src/number_theory/ramification_inertia.lean + theorem ideal.dim_pow_quot + theorem ideal.dim_pow_quot_aux + theorem ideal.dim_prime_pow_ramification_idx + theorem ideal.finrank_prime_pow_ramification_idx + theorem ideal.le_comap_of_ramification_idx_ne_zero + def ideal.pow_quot_succ_inclusion + theorem ideal.pow_quot_succ_inclusion_injective + theorem ideal.quotient.algebra_map_quotient_of_ramification_idx_ne_zero + theorem ideal.quotient.algebra_map_quotient_pow_ramification_idx + def ideal.quotient.algebra_quotient_of_ramification_idx_ne_zero + theorem ideal.quotient_to_quotient_range_pow_quot_succ_aux_mk + theorem ideal.quotient_to_quotient_range_pow_quot_succ_injective + theorem ideal.quotient_to_quotient_range_pow_quot_succ_mk + theorem ideal.quotient_to_quotient_range_pow_quot_succ_surjective 2022-08-04 10:05:37 5424d3f feat(category_theory/limits): has_limit F ↔ has_terminal (cone F) (#15797) This will be used to show that `C` has limits of shape `J` if and only if `const J` has a right adjoint. ESTIMATED CHANGES Modified src/category_theory/limits/cone_category.lean + theorem category_theory.limits.has_colimit_iff_has_initial_cocone + theorem category_theory.limits.has_limit_iff_has_terminal_cone Modified src/category_theory/limits/shapes/terminal.lean + theorem category_theory.limits.is_initial.has_initial + theorem category_theory.limits.is_terminal.has_terminal 2022-08-04 08:27:59 4f3245c feat(topology/continuous_function/basic): inverse equations for `homeomorph.to_continuous_map` (#15708) This PR adds two lemmas stating the left and right inverse of an `homeomorph.to_continuous_map`: -`homeomorph.symm_comp_to_continuous_map`, and -`homeomorph.comp_symm_to_continuous_map` Suggested by: @alreadydone ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + theorem homeomorph.coe_refl + theorem homeomorph.coe_trans + theorem homeomorph.symm_comp_to_continuous_map +/- def homeomorph.to_continuous_map + theorem homeomorph.to_continuous_map_as_coe + theorem homeomorph.to_continuous_map_comp_symm Modified src/topology/homeomorph.lean + theorem homeomorph.self_trans_symm + theorem homeomorph.symm_trans_self 2022-08-03 19:44:27 0ba3098 chore(data/seq/seq): use `terminates` predicate in `to_list_or_stream` (#15826) We already have a canonical way to spell out that a sequence terminates, so we don't need to spell it in full. ESTIMATED CHANGES Modified src/data/seq/seq.lean + theorem seq.not_terminates_iff +/- def seq.to_list +/- def seq.to_list_or_stream +/- def seq.to_stream 2022-08-03 17:15:13 131c39a chore(algebra/big_operators): reorder the definitions in `norm_num` extension (#15840) This prepares for PR #15538, where `eval_finset` calls `eval_multiset`, which calls `eval_list`. By reordering in a separate PR, we get a cleaner diff. ESTIMATED CHANGES Modified src/algebra/big_operators/norm_num.lean 2022-08-03 17:15:12 24a09b3 feat(tactic/field_simp): extend `field_simp` to partial division and units (#14897) Extend the `field_simp` tactic to deal with inverses of units in a general monoid/ring. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/.E2.9C.94.20.60field_simp.60.20for.20units/near/286896891) ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem coe_div_eq_divp + theorem divp_assoc' +/- theorem divp_divp_eq_divp_mul +/- theorem divp_eq_divp_iff +/- theorem divp_eq_iff_mul_eq +/- theorem divp_mul_divp + theorem divp_mul_eq_mul_divp + theorem eq_divp_iff_mul_eq + theorem inv_eq_one_divp' + theorem inv_eq_one_divp Modified src/algebra/hom/units.lean +/- theorem divp_eq_div Modified src/algebra/ring/basic.lean + theorem units.add_divp + theorem units.divp_add + theorem units.divp_add_divp + theorem units.divp_add_divp_same + theorem units.divp_sub + theorem units.divp_sub_divp + theorem units.divp_sub_divp_same +/- theorem units.inv_eq_self_iff + theorem units.neg_divp + theorem units.sub_divp Modified src/tactic/field_simp.lean Added test/field_simp.lean 2022-08-03 16:27:38 acc7dfa chore(set_theory/surreal/basic): golf an instance (#15838) `subtype.setoid` is defeq to this manually specified instance. ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean +/- def surreal 2022-08-03 16:27:37 c5e83e0 chore(analysis/convex/cone): set_like instance (#15715) This removes lots of lemmas that are already in the `set_like` namespace. `convex_cone.ext'` is now `set_like.coe_injective`. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean +/- theorem convex_cone.comap_id - theorem convex_cone.ext' +/- theorem convex_cone.ext +/- theorem convex_cone.map_id - theorem convex_cone.mem_coe 2022-08-03 14:13:21 dd6f53d chore(data/seq/seq): clean up spacing (#15825) And other small acts of golfing. ESTIMATED CHANGES Modified src/data/seq/seq.lean +/- theorem seq.le_stable +/- def seq.nil +/- theorem seq.terminated_stable +/- def seq 2022-08-03 14:13:20 1563242 feat(linear_algebra/lagrange): Refactor lagrange interpolation and add extended proofs. (#15036) The current formulation of Lagrange interpolants phrases things in terms of a finset of nodes, and functions interpolated at those nodes. This changes things in order to allow for indexed nodes and weights. It also extends various functionalities of the lagrange interpolation. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.sdiff_insert + theorem finset.sdiff_insert_insert_of_mem_of_not_mem + theorem finset.sdiff_sdiff_left' Modified src/linear_algebra/lagrange.lean + theorem lagrange.X_sub_C_dvd_nodal - def lagrange.basis + def lagrange.basis_divisor + theorem lagrange.basis_divisor_add_symm + theorem lagrange.basis_divisor_eq_zero_iff + theorem lagrange.basis_divisor_inj + theorem lagrange.basis_divisor_ne_zero_iff + theorem lagrange.basis_divisor_self +/- theorem lagrange.basis_empty + theorem lagrange.basis_eq_prod_sub_inv_mul_nodal_div + theorem lagrange.basis_ne_zero + theorem lagrange.basis_pair_left + theorem lagrange.basis_pair_right + theorem lagrange.basis_singleton - theorem lagrange.basis_singleton_self + theorem lagrange.degree_basis + theorem lagrange.degree_basis_divisor_of_ne + theorem lagrange.degree_basis_divisor_self - theorem lagrange.degree_interpolate_erase + theorem lagrange.degree_interpolate_erase_lt + theorem lagrange.degree_interpolate_le +/- theorem lagrange.degree_interpolate_lt + theorem lagrange.degree_nodal + theorem lagrange.derivative_nodal +/- theorem lagrange.eq_interpolate + theorem lagrange.eq_interpolate_iff +/- theorem lagrange.eq_interpolate_of_eval_eq - theorem lagrange.eq_of_eval_eq - theorem lagrange.eq_zero_of_eval_eq_zero - theorem lagrange.eval_basis + theorem lagrange.eval_basis_divisor_left_of_ne + theorem lagrange.eval_basis_divisor_right - theorem lagrange.eval_basis_ne + theorem lagrange.eval_basis_not_at_node + theorem lagrange.eval_basis_of_ne +/- theorem lagrange.eval_basis_self - theorem lagrange.eval_interpolate + theorem lagrange.eval_interpolate_at_node + theorem lagrange.eval_interpolate_not_at_node' + theorem lagrange.eval_interpolate_not_at_node + theorem lagrange.eval_nodal + theorem lagrange.eval_nodal_at_node + theorem lagrange.eval_nodal_derivative_eval_node_eq + theorem lagrange.eval_nodal_not_at_node +/- def lagrange.fun_equiv_degree_lt +/- def lagrange.interpolate - theorem lagrange.interpolate_add +/- theorem lagrange.interpolate_empty + theorem lagrange.interpolate_eq_add_interpolate_erase + theorem lagrange.interpolate_eq_iff_values_eq_on - theorem lagrange.interpolate_eq_interpolate_erase_add + theorem lagrange.interpolate_eq_nodal_weight_mul_nodal_div_X_sub_C - theorem lagrange.interpolate_eq_of_eval_eq + theorem lagrange.interpolate_eq_of_values_eq_on + theorem lagrange.interpolate_eq_sum_interpolate_insert_sdiff - theorem lagrange.interpolate_neg + theorem lagrange.interpolate_one +/- theorem lagrange.interpolate_singleton - theorem lagrange.interpolate_smul - theorem lagrange.interpolate_sub - theorem lagrange.interpolate_zero - def lagrange.linterpolate +/- theorem lagrange.nat_degree_basis + theorem lagrange.nat_degree_basis_divisor_of_ne + theorem lagrange.nat_degree_basis_divisor_self + def lagrange.nodal + theorem lagrange.nodal_empty + theorem lagrange.nodal_eq + theorem lagrange.nodal_eq_mul_nodal_erase + theorem lagrange.nodal_erase_eq_nodal_div + theorem lagrange.nodal_insert_eq_nodal + def lagrange.nodal_weight + theorem lagrange.nodal_weight_eq_eval_nodal_derative + theorem lagrange.nodal_weight_eq_eval_nodal_erase_inv + theorem lagrange.nodal_weight_ne_zero + theorem lagrange.sum_basis + theorem lagrange.sum_nodal_weight_mul_inv_sub_ne_zero + theorem lagrange.values_eq_on_of_interpolate_eq + theorem polynomial.eq_of_degree_sub_lt_of_eval_finset_eq + theorem polynomial.eq_of_degree_sub_lt_of_eval_index_eq + theorem polynomial.eq_of_degrees_lt_of_eval_finset_eq + theorem polynomial.eq_of_degrees_lt_of_eval_index_eq + theorem polynomial.eq_zero_of_degree_lt_of_eval_finset_eq_zero + theorem polynomial.eq_zero_of_degree_lt_of_eval_index_eq_zero Modified src/linear_algebra/vandermonde.lean + theorem matrix.eq_zero_of_forall_index_sum_mul_pow_eq_zero + theorem matrix.eq_zero_of_forall_index_sum_pow_mul_eq_zero + theorem matrix.eq_zero_of_forall_pow_sum_mul_pow_eq_zero Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.degree_lt_equiv_eq_zero_iff_eq_zero + theorem polynomial.eval_eq_sum_degree_lt_equiv 2022-08-03 11:38:39 637b58e feat(data/finsupp/basic): `alist.lookup` as a finitely supported function (#15443) Reworked from #15396. The planned use case for this new definition is to facilitate giving the [Cantor Normal Form](https://leanprover-community.github.io/mathlib_docs/set_theory/ordinal/cantor_normal_form.html#ordinal.CNF) of an ordinal as a finitely supported function. See https://github.com/leanprover-community/mathlib/pull/15396#discussion_r922723604 for further discussion of the motivation. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + def alist.lookup_finsupp + theorem alist.lookup_finsupp_surjective + theorem alist.to_alist_lookup_finsupp + theorem finsupp.mem_to_alist + def finsupp.to_alist + theorem finsupp.to_alist_keys_to_finset Modified src/data/list/alist.lean + theorem alist.mem_lookup_iff Modified src/data/sigma/basic.lean + theorem prod.fst_comp_to_sigma 2022-08-03 11:38:37 798b4ae refactor(linear_algebra): morphism refactor for `linear_equiv`, `continuous_linear_equiv`, `linear_isometry` and `linear_isometry_equiv` (#15078) This PR brings the morphism refactor to `linear_equiv`, `continuous_linear_equiv`, `linear_isometry`, and `linear_isometry_equiv`. Note that I had to resort to an ugly hack to deal with deterministic timouts in two proofs: `vitali.exists_disjoint_covering_ae` and another one in the counterexamples folder. Both of these are very large proofs with no obvious sublemmas to extract or inefficiencies, so I just used `try_for 20000 {...}` to increase the timeout. It's not great, but I don't see a better alternative -- besides, I don't think it's unreasonable for long proofs like these to have a bigger timeout. ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified src/algebra/algebra/basic.lean Modified src/algebra/module/equiv.lean + def linear_equiv_class Modified src/analysis/normed_space/linear_isometry.lean - theorem linear_isometry.map_add - theorem linear_isometry.map_neg - theorem linear_isometry.map_smul - theorem linear_isometry.map_smulₛₗ - theorem linear_isometry.map_sub - theorem linear_isometry.map_zero + def linear_isometry_class + def linear_isometry_equiv_class + theorem semilinear_isometry_class.diam_image + theorem semilinear_isometry_class.diam_range + theorem semilinear_isometry_class.ediam_image + theorem semilinear_isometry_class.ediam_range + theorem semilinear_isometry_class.nnnorm_map Modified src/measure_theory/covering/vitali.lean Modified src/topology/algebra/module/basic.lean + def continuous_linear_equiv_class 2022-08-03 08:16:42 078cd61 feat(data/seq/seq): improve `cons` and `tail` def-eqs (#15829) We sidestep the equation compiler for better definitional equalities. ESTIMATED CHANGES Modified src/data/seq/seq.lean +/- def seq.cons +/- def seq.tail 2022-08-03 08:16:40 0e87ef9 feat(data/list/basic): `l.nth l.length = none` (#15828) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_length 2022-08-03 06:38:56 54c4c22 chore(data/stream/defs): remove match from `stream.cons` (#15789) We can use equation compiler instead, which should give better eq lemmas. ESTIMATED CHANGES Modified src/data/stream/defs.lean +/- def stream.cons 2022-08-03 06:38:55 53ab3a5 feat(set_theory/ordinal/arithmetic): generalize `mod_opow_log_lt_self` (#15448) We remove the assumption `b ≠ 0` from `ordinal.mod_opow_log_lt_self`, and from other theorems/definitions that depended on it. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.mod_opow_log_lt_self Modified src/set_theory/ordinal/cantor_normal_form.lean +/- theorem ordinal.CNF_rec_ne_zero +/- theorem ordinal.CNF_rec_zero 2022-08-03 06:38:53 997fa57 refactor(set_theory/game/nim): remove `nim` namespace (#15366) A lot of theorems that already had `nim` in the name were also in the `pgame.nim` namespace. We remove the `nim` namespace entirely, and rename the few theorems that didn't have `nim` in the name: - `non_zero_first_wins` → `nim_fuzzy_zero_of_ne_zero` - `add_equiv_zero_iff_eq` → `nim_add_equiv_zero_iff` - `add_fuzzy_zero_iff_ne` → `nim_add_fuzzy_zero_iff` - `equiv_iff_eq` → `nim_equiv_iff_eq` - `grundy_value` → `nim_grundy_value` Further, we move `nim` itself into the `pgame` namespace. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean + theorem pgame.exists_move_left_eq + theorem pgame.exists_ordinal_move_left_eq + theorem pgame.left_moves_nim + theorem pgame.move_left_nim' + theorem pgame.move_left_nim + theorem pgame.move_left_nim_heq + theorem pgame.move_right_nim' + theorem pgame.move_right_nim + theorem pgame.move_right_nim_heq + theorem pgame.neg_nim - theorem pgame.nim.add_equiv_zero_iff_eq - theorem pgame.nim.add_fuzzy_zero_iff_ne - theorem pgame.nim.equiv_iff_eq - theorem pgame.nim.exists_move_left_eq - theorem pgame.nim.exists_ordinal_move_left_eq - theorem pgame.nim.grundy_value - theorem pgame.nim.left_moves_nim - theorem pgame.nim.move_left_nim' - theorem pgame.nim.move_left_nim - theorem pgame.nim.move_left_nim_heq - theorem pgame.nim.move_right_nim' - theorem pgame.nim.move_right_nim - theorem pgame.nim.move_right_nim_heq - theorem pgame.nim.neg_nim - theorem pgame.nim.nim_birthday - theorem pgame.nim.nim_def - theorem pgame.nim.nim_one_equiv - def pgame.nim.nim_one_relabelling - theorem pgame.nim.nim_zero_equiv - def pgame.nim.nim_zero_relabelling - theorem pgame.nim.non_zero_first_wins - theorem pgame.nim.right_moves_nim - theorem pgame.nim.to_left_moves_nim_symm_lt - theorem pgame.nim.to_right_moves_nim_symm_lt + theorem pgame.nim_add_equiv_zero_iff + theorem pgame.nim_add_fuzzy_zero_iff + theorem pgame.nim_birthday + theorem pgame.nim_def + theorem pgame.nim_equiv_iff_eq + theorem pgame.nim_fuzzy_zero_of_ne_zero + theorem pgame.nim_grundy_value + theorem pgame.nim_one_equiv + def pgame.nim_one_relabelling + theorem pgame.nim_zero_equiv + def pgame.nim_zero_relabelling + theorem pgame.right_moves_nim + theorem pgame.to_left_moves_nim_symm_lt + theorem pgame.to_right_moves_nim_symm_lt 2022-08-03 05:01:24 adc4ebc doc(data/polynomial/basic): fix docstring (#15814) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean 2022-08-02 20:21:08 777082d chore(probability/martingale): add some parity lemmas for martingales and supermartingales (#15811) ESTIMATED CHANGES Modified src/probability/martingale.lean + theorem measure_theory.martingale_nat + theorem measure_theory.martingale_of_condexp_sub_eq_zero_nat + theorem measure_theory.martingale_of_set_integral_eq_succ + theorem measure_theory.supermartingale_nat + theorem measure_theory.supermartingale_of_condexp_sub_nonneg_nat + theorem measure_theory.supermartingale_of_set_integral_succ_le 2022-08-02 18:06:16 bedd950 feat(algebra/big_operators/multiset): add `prod_map_erase` for `list` and `multiset` (#15808) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_map_erase Modified src/data/list/big_operators.lean + theorem list.prod_map_erase 2022-08-02 17:04:35 5800468 feat(geometry/manifold/mfderiv): differentiability is a `local_invariant_prop`, and consequences (#15666) The boilerplate to make differentiability into a `local_invariant_prop` was missing. I added this, stated the lemmas that the definition of differentiability on a manifold this gives is equivalent to the existing definition, and deduced as a consequence that differentiability is invariant under choice of chart. Almost everything is copied nearly exactly, even up to docstrings, from the corresponding lemmas about `cont_(m)diff`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem differentiable_within_at.mono_of_mem Modified src/geometry/manifold/mfderiv.lean + theorem differentiable_within_at_local_invariant_prop + def differentiable_within_at_prop + theorem mdifferentiable_at_iff_lift_prop_at + theorem mdifferentiable_at_iff_of_mem_source + theorem mdifferentiable_within_at_iff_lift_prop_within_at + theorem mdifferentiable_within_at_iff_of_mem_source 2022-08-02 17:04:33 c06c680 feat(algebraic_geometry/EllipticCurve): add 2-torsion polynomials and changes of variables (#15230) ESTIMATED CHANGES Modified src/algebraic_geometry/EllipticCurve.lean - def EllipticCurve.b2 - def EllipticCurve.b4 - def EllipticCurve.b6 - def EllipticCurve.b8 + theorem EllipticCurve.b_relation + def EllipticCurve.b₂ + def EllipticCurve.b₄ + def EllipticCurve.b₆ + def EllipticCurve.b₈ - def EllipticCurve.c4 - theorem EllipticCurve.c4_def + theorem EllipticCurve.c_relation + theorem EllipticCurve.change_of_variable.a₁_eq + theorem EllipticCurve.change_of_variable.a₂_eq + theorem EllipticCurve.change_of_variable.a₃_eq + theorem EllipticCurve.change_of_variable.a₄_eq + theorem EllipticCurve.change_of_variable.a₆_eq + theorem EllipticCurve.change_of_variable.b₂_eq + theorem EllipticCurve.change_of_variable.b₄_eq + theorem EllipticCurve.change_of_variable.b₆_eq + theorem EllipticCurve.change_of_variable.b₈_eq + theorem EllipticCurve.change_of_variable.c₄_eq + theorem EllipticCurve.change_of_variable.c₆_eq + theorem EllipticCurve.change_of_variable.j_eq + theorem EllipticCurve.change_of_variable.Δ_eq + def EllipticCurve.change_of_variable + theorem EllipticCurve.coe_Δ + def EllipticCurve.c₄ + def EllipticCurve.c₆ - def EllipticCurve.disc - def EllipticCurve.disc_aux - theorem EllipticCurve.disc_aux_def - theorem EllipticCurve.disc_def - theorem EllipticCurve.disc_is_unit +/- def EllipticCurve.j + theorem EllipticCurve.two_torsion_polynomial.disc_eq + theorem EllipticCurve.two_torsion_polynomial.disc_ne_zero + def EllipticCurve.two_torsion_polynomial + def EllipticCurve.Δ_aux +/- structure EllipticCurve 2022-08-02 15:18:47 2a2d33c feat(number_theory/legendre_symbol/gauss_sum): add file gauss_sum.lean (#15684) This adds a file to the number_theory/legendre_symbol directory. It defines the Gauss sum of a multiplicative and an additive character on a finite commutative ring with values in another commutative ring and proves some statements about them. This will lead to a new proof of Quadratic Reciprocity (including the second supplementary law). For comments/discussion, use this [Zulip topic](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Gauss.20sums/near/290844370). ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + theorem fin.prod_univ_eight + theorem fin.prod_univ_five + theorem fin.prod_univ_four + theorem fin.prod_univ_seven + theorem fin.prod_univ_six + theorem fin.prod_univ_three Modified src/algebra/char_p/algebra.lean + theorem algebra.ring_char_eq Modified src/number_theory/legendre_symbol/add_character.lean + theorem add_char.inv_apply' + theorem add_char.inv_apply + theorem add_char.inv_mul_shift + theorem add_char.pow_mul_shift + theorem add_char.sum_mul_shift +/- def add_char Added src/number_theory/legendre_symbol/gauss_sum.lean + theorem char.card_pow_card + theorem char.card_pow_char_pow + theorem finite_field.two_pow_card + def gauss_sum + theorem gauss_sum_frob + theorem gauss_sum_mul_aux + theorem gauss_sum_mul_gauss_sum_eq_card + theorem gauss_sum_mul_shift + theorem gauss_sum_sq + theorem mul_char.is_quadratic.gauss_sum_frob + theorem mul_char.is_quadratic.gauss_sum_frob_iter 2022-08-02 10:33:58 aafeb5f feat(ring_theory/dedekind_domain): promote fractional ideals to `semifield` (#15794) This is the first nontrivial semifield instance in mathlib! We can just upgrade the existing `comm_group_with_zero` instance to `semifield`. cc @YaelDillies ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean 2022-08-02 03:10:17 5bd49e4 chore(*): golf using new `positivity` tactic (#15701) The `positivity` tactic introduced in #15618 solves goals of the form `0 < x` and `0 ≤ x`, particularly motivated by streamlining bigger inequality calculations where these frequently show up as side goals. This PR gives a few example uses in this kind of bigger inequality calculation, golfing proofs in: - archive/imo/imo2005_q3 - archive/imo/imo2013_q5 - analysis/convex/basic - analysis/mean_inequalities_pow - topology/algebra/order/basic ESTIMATED CHANGES Modified archive/imo/imo2005_q3.lean Modified archive/imo/imo2013_q5.lean Modified src/analysis/convex/basic.lean Modified src/analysis/mean_inequalities_pow.lean Modified src/topology/algebra/order/basic.lean 2022-08-02 00:16:49 9264b15 feat(algebra/algebra/bilinear): make `algebra.lmul` to apply to non-unital (non-assoc) algebras (#15310) Multiplication in an algebra is a bilinear map. Previously, this was called `algebra.lmul` ("l" for "linear") and what was actually constructed was an algebra homomorphism `A →ₐ[R] (End R A)`, where `A` is an `R`-algebra. As a result, this object (and the derived linear maps `algebra.lmul_left` and `algebra.lmul_right`, and others) only exists when `A` is a unital `R`-algebra. Of course, when `A` is a non-unital (even non-associative) algebra, this bilinear map `A →ₗ[R] A →ₗ[R] A` still exists, but it can't be upgraded to an algebra homomorphism as above. When `A` is associative, it can be upgraded to non-unital algebra homomorphism. In this PR, we define all three of these multiplication maps as `linear_map.mul`, `non_unital_alg_hom.lmul` and `algebra.lmul`, along with appropriate `simp` lemmas stating that the underlying functions coincide. All existing lemmas about the maps are preserved, but each in the correct generality. In so doing, we also move most the results and definitions in this file into the `linear_map` namespace (which is also why we call the simplest map `linear_map.mul` instead of `linear_map.lmul` as the `l` in the latter would be redundant). ESTIMATED CHANGES Modified src/algebra/algebra/bilinear.lean + theorem algebra.coe_lmul_eq_mul - theorem algebra.commute_lmul_left_right - def algebra.lmul' - theorem algebra.lmul'_apply +/- def algebra.lmul - theorem algebra.lmul_apply - theorem algebra.lmul_injective - def algebra.lmul_left - theorem algebra.lmul_left_apply - theorem algebra.lmul_left_eq_zero_iff - theorem algebra.lmul_left_injective - theorem algebra.lmul_left_mul - theorem algebra.lmul_left_one - def algebra.lmul_left_right - theorem algebra.lmul_left_right_apply - theorem algebra.lmul_left_to_add_monoid_hom - theorem algebra.lmul_left_zero_eq_zero - def algebra.lmul_right - theorem algebra.lmul_right_apply - theorem algebra.lmul_right_eq_zero_iff - theorem algebra.lmul_right_injective - theorem algebra.lmul_right_mul - theorem algebra.lmul_right_one - theorem algebra.lmul_right_to_add_monoid_hom - theorem algebra.lmul_right_zero_eq_zero - theorem algebra.pow_lmul_left - theorem algebra.pow_lmul_right + theorem linear_map.commute_mul_left_right + def linear_map.mul' + theorem linear_map.mul'_apply + def linear_map.mul + theorem linear_map.mul_apply' + theorem linear_map.mul_injective + def linear_map.mul_left + theorem linear_map.mul_left_apply + theorem linear_map.mul_left_eq_zero_iff + theorem linear_map.mul_left_injective + theorem linear_map.mul_left_mul + theorem linear_map.mul_left_one + def linear_map.mul_left_right + theorem linear_map.mul_left_right_apply + theorem linear_map.mul_left_to_add_monoid_hom + theorem linear_map.mul_left_zero_eq_zero + def linear_map.mul_right + theorem linear_map.mul_right_apply + theorem linear_map.mul_right_eq_zero_iff + theorem linear_map.mul_right_injective + theorem linear_map.mul_right_mul + theorem linear_map.mul_right_one + theorem linear_map.mul_right_to_add_monoid_hom + theorem linear_map.mul_right_zero_eq_zero + theorem linear_map.pow_mul_left + theorem linear_map.pow_mul_right + theorem non_unital_alg_hom.coe_lmul_eq_mul + def non_unital_alg_hom.lmul Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/tower.lean Modified src/algebra/hom/group_instances.lean Modified src/algebra/lie/base_change.lean Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/of_associative.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/data/matrix/kronecker.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/clifford_algebra/even.lean Modified src/linear_algebra/clifford_algebra/even_equiv.lean Modified src/linear_algebra/exterior_algebra/basic.lean Modified src/linear_algebra/exterior_algebra/of_alternating.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/nilpotent.lean - theorem algebra.is_nilpotent_lmul_left_iff - theorem algebra.is_nilpotent_lmul_right_iff + theorem linear_map.is_nilpotent_mul_left_iff + theorem linear_map.is_nilpotent_mul_right_iff Modified src/ring_theory/norm.lean Modified src/ring_theory/tensor_product.lean +/- theorem algebra.tensor_product.lmul'_apply_tmul +/- theorem algebra.tensor_product.lmul'_to_linear_map Modified src/ring_theory/trace.lean 2022-08-01 20:05:45 10a5ded lemmas about coeff for `compute_degree` (#15694) This PR proves 5 lemmas about `coeff`s of polynomials under products, multiplications, sums and differences. I also moved an already existing `ring` lemma to a previously non-existing section on `ring`. These lemmas are useful for the `compute_degree` tactic of #15691. ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.coeff_add_eq_left_of_lt + theorem polynomial.coeff_add_succ_eq_right_of_le + theorem polynomial.coeff_mul_of_nat_degree_le + theorem polynomial.coeff_pow_of_nat_degree_le + theorem polynomial.coeff_sub_succ_eq_left_of_le + theorem polynomial.coeff_sub_succ_eq_neg_right_of_le + theorem polynomial.nat_degree_sub +/- theorem polynomial.nat_degree_sub_le_iff_left + theorem polynomial.nat_degree_sub_le_iff_right Modified src/tactic/compute_degree.lean 2022-08-01 15:32:49 5987452 fix(algebra/monoid_algebra/basic): add `int_cast` to `monoid_algebra` instances (#15779) Note that this reshuffles how some instances are created to ensure that they get the `int_cast` field. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + theorem add_monoid_algebra.int_cast_def + theorem add_monoid_algebra.nat_cast_def + theorem monoid_algebra.int_cast_def + theorem monoid_algebra.nat_cast_def Modified src/data/polynomial/expand.lean Modified test/instance_diamonds.lean 2022-08-01 15:32:48 073a3e9 fix(tactic/rcases): support `rcases x with y` renames (#15773) fixes #15741 ESTIMATED CHANGES Modified src/tactic/rcases.lean Modified test/rcases.lean 2022-08-01 15:32:47 bb103f3 refactor(category_theory): custom structure for full_subcategory (#14767) Full subcategories are now a custom structure rather than the usual subtype. The advantage of this is that we don't have to fight the `simp`-normal form of subtypes, as the coercion does more harm than good for full subcategories. We saw a similar refactor for discrete categories, and in both cases, erring on the side of explicitness seems to pay off. ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean +/- theorem FinVect.FinVect_evaluation_apply +/- def FinVect.iso_to_linear_equiv +/- def FinVect Modified src/algebra/category/FinVect/limits.lean Modified src/algebraic_geometry/AffineScheme.lean + def algebraic_geometry.AffineScheme.mk +/- def algebraic_geometry.AffineScheme - theorem algebraic_geometry.mem_AffineScheme + theorem algebraic_geometry.mem_Spec_ess_image Modified src/algebraic_geometry/properties.lean Modified src/algebraic_topology/simplex_category.lean +/- def simplex_category.truncated Modified src/category_theory/adjunction/reflective.lean +/- def category_theory.equiv_ess_image_of_reflective Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/connected_components.lean +/- def category_theory.component Modified src/category_theory/essential_image.lean +/- def category_theory.functor.ess_image_inclusion + def category_theory.functor.ess_image_subcategory +/- def category_theory.functor.to_ess_image Modified src/category_theory/full_subcategory.lean +/- def category_theory.full_subcategory.lift +/- def category_theory.full_subcategory.map + structure category_theory.full_subcategory +/- def category_theory.full_subcategory_inclusion Modified src/category_theory/monoidal/subcategory.lean +/- def category_theory.monoidal_category.full_braided_subcategory_inclusion +/- def category_theory.monoidal_category.full_monoidal_subcategory_inclusion Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/sites/sieves.lean +/- def category_theory.presieve.diagram Modified src/category_theory/subobject/basic.lean Modified src/category_theory/subobject/mono_over.lean +/- def category_theory.mono_over.hom_mk +/- def category_theory.mono_over.iso_mk +/- def category_theory.mono_over.mk' +/- def category_theory.mono_over Modified src/category_theory/subterminal.lean Modified src/representation_theory/fdRep.lean Modified src/topology/category/Top/open_nhds.lean +/- def topological_space.open_nhds Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean +/- def Top.presheaf.sheaf_condition.opens_le_cover.hom_to_index +/- def Top.presheaf.sheaf_condition.opens_le_cover Modified src/topology/sheaves/sheafify.lean Modified src/topology/sheaves/stalks.lean 2022-08-01 13:04:56 7200c50 feat(order/rel_iso): relation embeddings for `sum.lex` and `prod.lex` (#15355) ESTIMATED CHANGES Modified src/order/rel_iso.lean + theorem rel_embedding.inj + def rel_embedding.prod_lex_map + def rel_embedding.prod_lex_mk_left + def rel_embedding.prod_lex_mk_right + def rel_embedding.sum_lex_inl + def rel_embedding.sum_lex_inr + def rel_embedding.sum_lex_map + def rel_embedding.sum_lift_rel_inl + def rel_embedding.sum_lift_rel_inr + def rel_embedding.sum_lift_rel_map 2022-08-01 12:20:50 674505e feat(geometry/euclidean/oriented_angle): relation to unoriented angles (#15722) Add some versions of the result that an oriented angle is plus or minus the unoriented angle between the same two vectors. There will be a lot more lemmas to add subsequently in this area (including, in particular, lemmas about when two angles have the same or different signs, that are needed to go from equality of unoriented angles to equality of oriented angles). This just provides the starting point for adding such results. ESTIMATED CHANGES Modified src/geometry/euclidean/oriented_angle.lean + theorem orientation.cos_oangle_eq_cos_angle + theorem orientation.cos_oangle_eq_inner_div_norm_mul_norm + theorem orientation.inner_eq_norm_mul_norm_mul_cos_oangle + theorem orientation.oangle_eq_angle_or_eq_neg_angle + theorem orthonormal.cos_oangle_eq_cos_angle + theorem orthonormal.cos_oangle_eq_inner_div_norm_mul_norm + theorem orthonormal.inner_eq_norm_mul_norm_mul_cos_oangle + theorem orthonormal.oangle_eq_angle_or_eq_neg_angle 2022-08-01 10:42:41 7dcf5c3 feat(algebra/order/floor): `fract_one` (#15785) This seems to be an appropriate `simp` lemma, but is currently missing. ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem int.fract_one 2022-08-01 10:42:40 2f1b313 chore(data/zmod): make `zmod.int_cast_zmod_cast` `@[norm_cast]` (#15753) I was suprised that `norm_cast` couldn't do anything with an expression including `(((r : zmod 4) : ℤ) : zmod 4)`, turns out this lemma was missing a `norm_cast` attribute. ESTIMATED CHANGES Modified src/data/zmod/basic.lean +/- theorem zmod.int_cast_zmod_cast 2022-08-01 10:42:39 1b09efe feat(topology/homeomorph): Product of sets is isomorphic to product of sets (#15664) This PR adds `homeomorph.set.prod`, analogous to `homeomorph.set.univ`. ESTIMATED CHANGES Modified src/topology/homeomorph.lean + def homeomorph.set.prod 2022-08-01 08:42:17 7ad184e fix(data/polynomial/basic): remove `monomial_fun` to remove diamonds (#15778) This was previously irreducible to prevent any `finsupp/add_monoid_algebra` leakage, but it causes a non-defeq diamond in instances. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean - def polynomial.monomial_fun +/- theorem polynomial.of_finsupp_one +/- theorem polynomial.of_finsupp_zero +/- theorem polynomial.to_finsupp_one Modified test/instance_diamonds.lean 2022-07-31 20:14:27 9bb1256 feat(order/succ_pred/basic): `a ≤ succ ⊥ ↔ a = ⊥ ∨ a = succ ⊥` and related (#15567) We use these new results to golf down the ordinal API. ESTIMATED CHANGES Modified src/order/succ_pred/basic.lean + theorem order.le_succ_bot_iff + theorem order.lt_succ_bot_iff + theorem order.pred_top_le_iff + theorem order.pred_top_lt_iff Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.lt_one_iff_zero Modified src/set_theory/ordinal/basic.lean 2022-07-31 15:17:21 b6fa37e chore(ring_theory/adjoin_root): remove duplicate namespace (#15775) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2022-07-31 15:17:20 9c473c1 feat(probability/density): probability of event in uniform distribution (#15678) ESTIMATED CHANGES Modified src/probability/density.lean +/- theorem measure_theory.pdf.is_uniform.integral_eq + theorem measure_theory.pdf.is_uniform.is_probability_measure + theorem measure_theory.pdf.is_uniform.measure_preimage +/- theorem measure_theory.pdf.is_uniform.mul_pdf_integrable 2022-07-31 14:14:04 a2a02a3 feat(data/nat/factorization/basic): add lemma `prime.factorization_self` (#15767) Adds `lemma prime.factorization_self (hp : prime p) : p.factorization p = 1`. We already have `prime.factorization (hp : prime p) : p.factorization = single p 1`, but this sometimes needs a little more help to simp down to `1`. ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean + theorem nat.prime.factorization_self 2022-07-31 11:53:14 7b2ae37 feat(number_theory): Bertrand's postulate, slightly different approach (#8002) ESTIMATED CHANGES Modified docs/100.yaml Modified src/data/nat/choose/central.lean Modified src/data/nat/choose/factorization.lean + theorem nat.prod_pow_factorization_central_binom + theorem nat.prod_pow_factorization_choose Added src/number_theory/bertrand.lean + theorem bertrand.real_main_inequality + theorem bertrand_main_inequality + theorem central_binom_factorization_small + theorem central_binom_le_of_no_bertrand_prime + theorem nat.exists_prime_lt_and_le_two_mul + theorem nat.exists_prime_lt_and_le_two_mul_eventually + theorem nat.exists_prime_lt_and_le_two_mul_succ 2022-07-31 05:16:10 5e07117 feat(ring_theory/ideal/operations): A variant of `finsupp.total` for ideals. (#15460) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + def ideal.finsupp_total + theorem ideal.finsupp_total_apply + theorem ideal.finsupp_total_apply_eq_of_fintype + theorem ideal.range_finsupp_total 2022-07-31 03:48:52 bff2f20 chore(scripts): update nolints.txt (#15776) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-30 20:46:21 a574fbe chore(logic/function/basic): make `function.injective.decidable_eq` protected (#15759) ESTIMATED CHANGES Modified src/logic/function/basic.lean - def function.injective.decidable_eq 2022-07-30 19:08:11 348a674 feat(algebra/algebra/subalgebra/basic): Swap arguments of `map` and `comap` (#15744) As suggested by @eric-wieser, I swapped the arguments of `subalgebra.map` and `subalgebra.comap`. I also updated `subalgebra.map_injective` to use `function.injective` and to have `f` implicit. This is done to make the `subalgebra` API match the `subgroup`, `submodule`, etc... API. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean +/- theorem algebra.comap_top +/- theorem algebra.map_bot +/- theorem algebra.map_top +/- def subalgebra.comap +/- theorem subalgebra.gc_map_comap +/- def subalgebra.map +/- theorem subalgebra.map_injective Modified src/field_theory/intermediate_field.lean +/- def intermediate_field.map Modified src/ring_theory/adjoin/fg.lean Modified src/ring_theory/algebra_tower.lean 2022-07-30 06:36:36 14b69e9 refactor(tactic/lint/type_classes): change inhabited linter to nonempty linter (#15542) The `inhabited` typeclass is intended to be a default value (and computable, if one is writing programs) but many times it is filled in with a junk (and perhaps noncomputable) value to satisfy the `has_inhabited_instance` linter. This commit switches to a `has_nonempty_instance` linter to push contributors toward supplying a `nonempty` instance instead. The linter still accepts `inhabited` and `unique` instances, which should be preferred over `nonempty` when appropriate. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/algebra/basic.lean Modified src/algebra/category/Group/epi_mono.lean Modified src/algebra/category/Module/adjunctions.lean Modified src/algebra/hom/group_action.lean Modified src/algebra/homology/complex_shape.lean Modified src/algebra/homology/homological_complex.lean Modified src/algebra/homology/homotopy.lean Modified src/algebra/homology/short_exact/preadditive.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/equiv.lean Modified src/algebra/module/localized_module.lean Modified src/algebra/order/group.lean Modified src/algebra/order/ring.lean Modified src/algebra/quandle.lean Modified src/algebra/quotient.lean Modified src/algebra/star/chsh.lean Modified src/algebraic_geometry/gluing.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/presheafed_space/gluing.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/projective_spectrum/topology.lean Modified src/algebraic_topology/simplex_category.lean Modified src/algebraic_topology/simplicial_object.lean Modified src/analysis/calculus/implicit.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/von_neumann_algebra/basic.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/bicategory/free.lean Modified src/category_theory/bicategory/functor.lean Modified src/category_theory/category/PartialFun.lean +/- def PartialFun.of Modified src/category_theory/concrete_category/bundled.lean Modified src/category_theory/core.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/elements.lean Modified src/category_theory/enriched/basic.lean Modified src/category_theory/essentially_small.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/glue_data.lean Modified src/category_theory/grothendieck.lean Modified src/category_theory/idempotents/karoubi.lean Modified src/category_theory/limits/has_limits.lean Modified src/category_theory/limits/is_limit.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/multiequalizer.lean Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/localization/construction.lean Modified src/category_theory/monad/algebra.lean +/- structure category_theory.comonad.coalgebra.hom Modified src/category_theory/monoidal/center.lean Modified src/category_theory/monoidal/free/basic.lean Modified src/category_theory/monoidal/free/coherence.lean Modified src/category_theory/monoidal/of_chosen_finite_products.lean Modified src/category_theory/monoidal/opposite.lean Modified src/category_theory/preadditive/Mat.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/injective.lean Modified src/category_theory/preadditive/injective_resolution.lean Modified src/category_theory/preadditive/projective.lean Modified src/category_theory/preadditive/projective_resolution.lean Modified src/category_theory/shift.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/sites/cover_lifting.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/category_theory/sites/dense_subsite.lean Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/sheafification.lean Modified src/category_theory/sites/sieves.lean Modified src/category_theory/structured_arrow.lean Modified src/category_theory/with_terminal.lean Modified src/combinatorics/quiver/basic.lean Modified src/combinatorics/quiver/connected_component.lean Modified src/combinatorics/quiver/subquiver.lean Modified src/data/bundle.lean +/- def bundle.pullback Modified src/data/multiset/fintype.lean Modified src/data/pfunctor/multivariate/W.lean Modified src/data/pfunctor/univariate/basic.lean Modified src/data/qpf/multivariate/constructions/fix.lean Modified src/data/qpf/univariate/basic.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/tangent_bundle.lean Modified src/group_theory/free_product.lean Modified src/group_theory/monoid_localization.lean +/- structure add_submonoid.localization_map +/- structure submonoid.localization_map +/- structure submonoid.localization_with_zero_map Modified src/group_theory/nielsen_schreier.lean Modified src/linear_algebra/affine_space/affine_equiv.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/free_module/basic.lean +/- def module.free.choose_basis_index Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/matrix/transvection.lean Modified src/linear_algebra/projective_space/basic.lean Modified src/linear_algebra/quadratic_form/isometry.lean +/- structure quadratic_form.isometry Modified src/linear_algebra/ray.lean Modified src/logic/embedding.lean Modified src/logic/small.lean Modified src/measure_theory/covering/vitali_family.lean Modified src/measure_theory/measure/measure_space.lean Modified src/model_theory/basic.lean +/- def first_order.language.symbols Modified src/number_theory/legendre_symbol/add_character.lean Modified src/order/galois_connection.lean Modified src/order/initial_seg.lean Modified src/order/prime_ideal.lean Modified src/order/rel_iso.lean Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean Modified src/ring_theory/perfection.lean +/- def mod_p +/- structure perfection_map +/- def pre_tilt +/- def tilt Modified src/ring_theory/power_basis.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/witt_vector/isocrystal.lean Modified src/tactic/derive_fintype.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/type_classes.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/module/weak_dual.lean Modified src/topology/fiber_bundle.lean Modified src/topology/gluing.lean Modified src/topology/homeomorph.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/metric_space/polish.lean Modified src/topology/path_connected.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/shrinking_lemma.lean Modified src/topology/uniform_space/equiv.lean Modified src/topology/vector_bundle/basic.lean Modified test/has_scalar_comp_loop.lean 2022-07-30 04:28:46 20f9796 feat(algebra/big_operators): add lemmas about sum of disjoint multiset (#15556) Some easy lemmas about sum of disjoint ```multiset``` are proved. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem multiset.add_eq_union_left_of_le + theorem multiset.add_eq_union_right_of_le + theorem multiset.disjoint_finset_sum_left + theorem multiset.disjoint_finset_sum_right + theorem multiset.disjoint_list_sum_left + theorem multiset.disjoint_list_sum_right + theorem multiset.disjoint_sum_left + theorem multiset.disjoint_sum_right + theorem multiset.finset_sum_eq_sup_iff_disjoint 2022-07-30 00:53:43 09afe57 feat(group_theory/p_group): Groups of order p^2 are commutative (#8632) ESTIMATED CHANGES Modified src/group_theory/p_group.lean +/- theorem is_p_group.bot_lt_center + theorem is_p_group.card_center_eq_prime_pow +/- theorem is_p_group.card_modeq_card_fixed_points +/- theorem is_p_group.center_nontrivial + def is_p_group.comm_group_of_card_eq_prime_sq + theorem is_p_group.commutative_of_card_eq_prime_sq + theorem is_p_group.cyclic_center_quotient_of_card_eq_prime_sq +/- theorem is_p_group.index +/- theorem is_p_group.nonempty_fixed_point_of_prime_not_dvd_card + theorem is_p_group.nontrivial_iff_card 2022-07-29 18:28:34 13ff898 refactor(algebra/homology): better defeqs, less case splitting (#15690) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean Modified src/algebra/homology/complex_shape.lean +/- def complex_shape.next + theorem complex_shape.next_eq' - theorem complex_shape.next_eq_some +/- def complex_shape.prev + theorem complex_shape.prev_eq' - theorem complex_shape.prev_eq_some Modified src/algebra/homology/homological_complex.lean +/- def homological_complex.X_next +/- def homological_complex.X_next_iso_zero +/- def homological_complex.X_prev +/- def homological_complex.X_prev_iso_zero +/- theorem homological_complex.X_prev_iso_zero_comp_d_to +/- def homological_complex.d_from +/- theorem homological_complex.d_from_comp_X_next_iso_zero +/- theorem homological_complex.d_from_eq_zero +/- def homological_complex.d_to +/- theorem homological_complex.d_to_eq_zero +/- def homological_complex.hom.next +/- def homological_complex.hom.prev +/- theorem homological_complex.hom.sq_from_id Modified src/algebra/homology/homology.lean +/- theorem homological_complex.boundaries_eq_bot +/- theorem homological_complex.cycles_eq_top Modified src/algebra/homology/homotopy.lean +/- theorem d_next_eq_d_from_from_next +/- def from_next +/- theorem homotopy.mk_coinductive_aux₃ +/- theorem homotopy.mk_inductive_aux₃ +/- theorem prev_d_eq_to_prev_d_to +/- def to_prev Modified src/algebra/homology/homotopy_category.lean Modified src/category_theory/functor/left_derived.lean 2022-07-29 15:19:12 cb3c2b9 fix(linear_algebra/prod): add missing `of_dual`s in lemma statements (#15750) Without these the lemmas contain nonsense statements of the form `(x : α) ≤ (y : αᵒᵈ)`. ESTIMATED CHANGES Modified src/linear_algebra/prod.lean 2022-07-29 14:31:27 daac51e feat(field_theory/adjoin): A compositum of algebraic extensions is algebraic (#15724) This PR proves that a compositum of algebraic extensions is algebraic. Coming soon to a mathlib near you: A compositum of normal extensions is normal. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.exists_finset_of_mem_supr' + theorem intermediate_field.is_algebraic_supr 2022-07-29 14:31:26 7afd66a feat(field_theory/intermediate_field): Produce an intermediate field from a subalgebra satisfying `is_field`. (#15659) This construction came up when proving that if `p` splits in `L/K`, then `p.is_splitting_field K (adjoin K (p.root_set L))`. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + def subalgebra.to_intermediate_field' + theorem to_intermediate_field'_to_subalgebra +/- theorem to_intermediate_field_to_subalgebra + theorem to_subalgebra_to_intermediate_field' 2022-07-29 14:31:24 725ad27 feat(algebra/direct_sum/decomposition): add an induction principle for `direct_sum.decomposition` class (#15654) If `direct_sum.decomposition M` and `p : M → Prop`, then to prove `p m` for an arbitrary `m`, it suffices to prove `p 0` and `p x` for homogeneous x and `p` being preserved by add. ESTIMATED CHANGES Modified src/algebra/direct_sum/decomposition.lean 2022-07-29 12:50:09 0fc357f feat(data/finset/pointwise): Singleton arithmetic (#15435) Lemmas about pointwise operations with a singleton. Also make `s` explicit in `finset.card_inv`. ESTIMATED CHANGES Modified src/data/finset/n_ary.lean + theorem finset.card_image₂_singleton_left + theorem finset.card_image₂_singleton_right + theorem finset.card_le_card_image₂_left + theorem finset.card_le_card_image₂_right + theorem finset.image₂_inter_singleton + theorem finset.image₂_singleton_inter Modified src/data/finset/pointwise.lean + theorem finset.card_le_card_mul_left + theorem finset.card_le_card_mul_right + theorem finset.card_mul_singleton + theorem finset.card_singleton_mul +/- theorem finset.coe_inv + theorem finset.inter_mul_singleton +/- theorem finset.mul_singleton +/- theorem finset.pairwise_disjoint_smul_iff +/- theorem finset.singleton_mul + theorem finset.singleton_mul_inter +/- theorem finset.singleton_smul +/- theorem finset.singleton_vsub +/- theorem finset.smul_singleton 2022-07-29 11:05:19 87861dd feat(data/nat/factorization/basic): golf & move `card_multiples`, prove variant lemma `Ioc_filter_dvd_card_eq_div` (#15277) Golfs `card_multiples` ("exactly `n / p` naturals in `[1, n]` are multiples of `p`") and moves it from `data/nat/prime` to `data/nat/factorization/basic`. Also proves a slightly more convenient variant, `Ioc_filter_dvd_card_eq_div`. ESTIMATED CHANGES Modified archive/100-theorems-list/81_sum_of_prime_reciprocals_diverges.lean Modified src/data/nat/factorization/basic.lean + theorem nat.Ioc_filter_dvd_card_eq_div + theorem nat.card_multiples Modified src/data/nat/prime.lean - theorem card_multiples 2022-07-29 08:40:27 df203bc docs(measure_theory/measure/haar): Mention uniqueness in module docstring (#15740) ESTIMATED CHANGES Modified src/measure_theory/measure/haar.lean 2022-07-29 08:40:25 b7bde9d docs(topology/sets/compacts): fix typo (#15739) ESTIMATED CHANGES Modified src/topology/sets/compacts.lean 2022-07-29 08:40:24 1d0df91 feat(linear_algebra/matrix): inner prod of matrix (#14794) A positive definite matrix `M` induces an inner product `⟪x, y⟫ = xᴴMy`. ESTIMATED CHANGES Modified src/linear_algebra/matrix/pos_def.lean + theorem matrix.pos_def.is_hermitian +/- def matrix.pos_def 2022-07-29 05:53:23 56199b7 feat(linear_algebra/clifford_algebra/even): Universal property and isomorphisms for the even subalgebra (#14790) The main three results here are: * `even.lift : even_hom Q A ≃ (clifford_algebra.even Q →ₐ[R] A)` * `equiv_even : clifford_algebra Q ≃ₐ[R] clifford_algebra.even (Q' Q)` * `even_equiv_even_neg : clifford_algebra.even Q ≃ₐ[R] clifford_algebra.even (-Q)` ESTIMATED CHANGES Added src/linear_algebra/clifford_algebra/even.lean + theorem clifford_algebra.even.alg_hom_ext + theorem clifford_algebra.even.lift.aux_algebra_map + theorem clifford_algebra.even.lift.aux_mul + theorem clifford_algebra.even.lift.aux_one + theorem clifford_algebra.even.lift.aux_ι + def clifford_algebra.even.lift + theorem clifford_algebra.even.lift_ι + def clifford_algebra.even.ι + def clifford_algebra.even + def clifford_algebra.even_hom.compr₂ + structure clifford_algebra.even_hom + theorem clifford_algebra.even_to_submodule Added src/linear_algebra/clifford_algebra/even_equiv.lean + theorem clifford_algebra.coe_to_even_reverse_involute + def clifford_algebra.equiv_even.Q' + theorem clifford_algebra.equiv_even.Q'_apply + def clifford_algebra.equiv_even.e0 + theorem clifford_algebra.equiv_even.e0_mul_e0 + theorem clifford_algebra.equiv_even.e0_mul_v_mul_e0 + theorem clifford_algebra.equiv_even.involute_e0 + theorem clifford_algebra.equiv_even.involute_v + theorem clifford_algebra.equiv_even.neg_e0_mul_v + theorem clifford_algebra.equiv_even.neg_v_mul_e0 + theorem clifford_algebra.equiv_even.reverse_e0 + theorem clifford_algebra.equiv_even.reverse_v + def clifford_algebra.equiv_even.v + theorem clifford_algebra.equiv_even.v_sq_scalar + theorem clifford_algebra.equiv_even.ι_eq_v_add_smul_e0 + def clifford_algebra.equiv_even + def clifford_algebra.even_equiv_even_neg + def clifford_algebra.even_to_neg + theorem clifford_algebra.even_to_neg_comp_even_to_neg + theorem clifford_algebra.even_to_neg_ι + def clifford_algebra.of_even + theorem clifford_algebra.of_even_comp_to_even + theorem clifford_algebra.of_even_ι + def clifford_algebra.to_even + theorem clifford_algebra.to_even_comp_of_even + theorem clifford_algebra.to_even_ι 2022-07-29 02:07:00 6b647c3 refactor(linear_algebra, analysis/inner_product_space): use `⊤ ≤` instead of `= ⊤` in bases constructors (#15697) All the existing proof just need a `.ge` to be fixed, and this allows to remove a lot of `rw [eq_top_iff]`, and it sticks with the convention of having weakest forms in assumptions and stronger forms in conclusion. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60.E2.8A.A4.20.E2.89.A4.20span.60.20in.20basis.20constructors ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/projection.lean Modified src/linear_algebra/affine_space/basis.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/finite_dimensional.lean - theorem coe_basis_of_span_eq_top_of_card_eq_finrank + theorem coe_basis_of_top_le_span_of_card_eq_finrank - theorem linear_independent_of_span_eq_top_of_card_eq_finrank + theorem linear_independent_of_top_le_span_of_card_eq_finrank Modified src/number_theory/ramification_inertia.lean Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/localization/module.lean 2022-07-28 21:09:51 4ff8c3d feat(analysis/normed_space/compact_operator): definition and basic facts about compact operators (#15467) ESTIMATED CHANGES Added src/analysis/normed_space/compact_operator.lean + def compact_operator + theorem compact_operator_topological_closure + theorem continuous_linear_map.coe_mk_of_is_compact_operator + def continuous_linear_map.mk_of_is_compact_operator + theorem continuous_linear_map.mk_of_is_compact_operator_mem_compact_operator + theorem continuous_linear_map.mk_of_is_compact_operator_to_linear_map + theorem is_closed_set_of_is_compact_operator + theorem is_compact_operator.add + theorem is_compact_operator.clm_comp + theorem is_compact_operator.cod_restrict + theorem is_compact_operator.comp_clm + theorem is_compact_operator.continuous + theorem is_compact_operator.continuous_comp + theorem is_compact_operator.image_ball_subset_compact + theorem is_compact_operator.image_closed_ball_subset_compact + theorem is_compact_operator.image_subset_compact_of_bounded + theorem is_compact_operator.image_subset_compact_of_vonN_bounded + theorem is_compact_operator.is_compact_closure_image_ball + theorem is_compact_operator.is_compact_closure_image_closed_ball + theorem is_compact_operator.is_compact_closure_image_of_bounded + theorem is_compact_operator.is_compact_closure_image_of_vonN_bounded + theorem is_compact_operator.neg + theorem is_compact_operator.restrict' + theorem is_compact_operator.restrict + theorem is_compact_operator.smul + theorem is_compact_operator.sub + def is_compact_operator + theorem is_compact_operator_iff_exists_mem_nhds_image_subset_compact + theorem is_compact_operator_iff_exists_mem_nhds_is_compact_closure_image + theorem is_compact_operator_iff_image_ball_subset_compact + theorem is_compact_operator_iff_image_closed_ball_subset_compact + theorem is_compact_operator_iff_is_compact_closure_image_ball + theorem is_compact_operator_iff_is_compact_closure_image_closed_ball + theorem is_compact_operator_of_tendsto + theorem is_compact_operator_zero 2022-07-28 20:15:19 b33d6d6 feat(probability/strong_law): Lp version of the strong law of large numbers (#15392) This PR proves the Lp version of the strong law of large numbers which states that $\frac{1}{n}\sum_{i < n} X_i$ converges to $\mathbb{E}[X_0]$ in the Lp-norm where $(X_n)$ is iid. and Lp. ESTIMATED CHANGES Modified src/measure_theory/function/uniform_integrable.lean + theorem measure_theory.uniform_integrable_average Modified src/probability/ident_distrib.lean + theorem probability_theory.mem_ℒp.uniform_integrable_of_ident_distrib + theorem probability_theory.mem_ℒp.uniform_integrable_of_ident_distrib_aux Modified src/probability/strong_law.lean + theorem probability_theory.strong_law_Lp 2022-07-28 20:15:18 5fc18b5 fix(tactic/polyrith): remove unnecessary 1* from polyrith output (#15292) Some `polyrith` certificates were printing with a superfluous `1*` in front. ESTIMATED CHANGES Modified scripts/polyrith_sage_helper.py Modified src/tactic/polyrith.lean Modified test/polyrith.lean 2022-07-28 17:47:20 39046bd feat(data/{pi, prod}): add missing `has_pow` instances for `pi` type (#15478) This generalizes the existing powers by `nat` and `int` defined in later files to be defined for arbitrary powers. As well as eliminating the need for separate lemmas for these different power operations, this also means that tuples of real numbers now inherit a power operation by the real numbers. ESTIMATED CHANGES Modified src/algebra/group/pi.lean - theorem pi.pow_apply Modified src/data/pi/algebra.lean + theorem pi.const_pow + theorem pi.pow_apply + theorem pi.pow_comp + theorem pi.pow_def + theorem pi.smul_apply + theorem pi.smul_comp + theorem pi.smul_const + theorem pi.smul_def Modified src/group_theory/group_action/pi.lean - theorem pi.smul_apply - theorem pi.smul_def Modified src/group_theory/group_action/prod.lean + theorem prod.pow_def + theorem prod.pow_fst + theorem prod.pow_mk + theorem prod.pow_snd + theorem prod.pow_swap Modified src/topology/continuous_function/polynomial.lean 2022-07-28 15:05:16 8b87d33 feat(algebra/module): sub_mem_sup for modules over rings (#15733) ESTIMATED CHANGES Modified src/algebra/module/submodule/lattice.lean + theorem submodule.sub_mem_sup 2022-07-28 15:05:15 1065169 feat(data/pi/algebra): sum_elim lemmas (#15588) ESTIMATED CHANGES Modified src/data/int/cast.lean + theorem sum.elim_int_cast_int_cast Modified src/data/nat/cast.lean + theorem sum.elim_nat_cast_nat_cast Modified src/data/pi/algebra.lean + theorem sum.elim_div_div + theorem sum.elim_inv_inv + theorem sum.elim_mul_mul + theorem sum.elim_mul_single_one + theorem sum.elim_one_mul_single + theorem sum.elim_one_one Modified src/data/sum/basic.lean + theorem sum.elim_const_const + theorem sum.elim_lam_const_lam_const + theorem sum.elim_update_left + theorem sum.elim_update_right 2022-07-28 13:50:36 94dcadd feat(test/polyrith): better formatting for generated tests (#15728) The `polyrith` test suite is unusually structured to avoid making dozens of calls to Sage. A helper tactic calls `polyrith` and saves the output from Sage along with intermediate information, printing a full test as a "Try this:". This PR makes that helper tactic format its output better, spread over multiple lines as requested at https://github.com/leanprover-community/mathlib/pull/15292#discussion_r925838661 by @eric-wieser . ESTIMATED CHANGES Modified test/polyrith.lean 2022-07-28 04:54:29 123f454 chore(field_theory/splitting_field): remove unneeded parameter (#15716) The definition of `splitting_field_aux` relied on a parameter `hfn : n = f.nat_degree` that was never actually used in the construction or its instances, only in the `splits` theorem. So we might as well delete it. This PR prepares for a redefinition of all instances on `splitting_field_aux` to fix instance diamonds, see the `splitting_field-diamond` branch for progress. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean +/- theorem polynomial.splitting_field_aux.algebra_map_succ +/- theorem polynomial.splitting_field_aux.succ +/- def polynomial.splitting_field_aux 2022-07-28 04:54:28 adeda57 feat(group_theory/finite_abelian): a finitely generated torsion abelian group is finite (#15402) ESTIMATED CHANGES Modified src/group_theory/finite_abelian.lean +/- theorem add_comm_group.equiv_direct_sum_zmod_of_fintype +/- theorem add_comm_group.equiv_free_prod_direct_sum_zmod + theorem add_comm_group.finite_of_fg_torsion + theorem comm_group.finite_of_fg_torsion + theorem module.finite_of_fg_torsion 2022-07-28 04:54:27 71d0115 chore(measure_theory/tactic): remove the measurability attribute from two lemmas (#15295) The measurability tactic applied `set.finite.measurable_set` to every set (when the space had measurable singletons) and got stuck. ESTIMATED CHANGES Modified src/measure_theory/tactic.lean Modified test/measurability.lean 2022-07-28 04:54:26 af21308 feat(order/bounded_order): `is_well_order` instances for `with_top` and `with_bot` (#15278) ESTIMATED CHANGES Modified src/order/bounded_order.lean 2022-07-28 04:11:46 d3b1dbe chore(category_theory/adjunction): fix a typo (#15720) ESTIMATED CHANGES Modified src/category_theory/adjunction/comma.lean + def category_theory.is_left_adjoint_of_costructured_arrow_terminals - def category_theory.is_right_adjoint_of_costructured_arrow_terminals 2022-07-28 02:26:42 cad1907 chore(topology/algebra/module, analysis/normed_space/linear_isometry): dedup `submodule.subtypeL` and `continuous_linear_map.subtype_val` (#15700) To designate the continuous linear inclusion of a submodule into the ambient space, we currently have both `continuous_linear_map.subtype_val` (correct assumptions, name not consistent with `submodule.subtype`) and `submodule.subtypeL` (good name, but way too strong assumptions). This keeps the best of both worlds. ESTIMATED CHANGES Modified src/analysis/calculus/implicit.lean Modified src/analysis/normed_space/complemented.lean Modified src/analysis/normed_space/linear_isometry.lean - theorem submodule.coe_subtypeL' - theorem submodule.coe_subtypeL - theorem submodule.ker_subtypeL - theorem submodule.range_subtypeL - def submodule.subtypeL + theorem submodule.subtypeₗᵢ_to_continuous_linear_map Modified src/topology/algebra/module/basic.lean - theorem continuous_linear_map.coe_subtype_val - def continuous_linear_map.subtype_val - theorem continuous_linear_map.subtype_val_apply + theorem submodule.coe_subtypeL' + theorem submodule.coe_subtypeL + theorem submodule.ker_subtypeL + theorem submodule.range_subtypeL + def submodule.subtypeL + theorem submodule.subtypeL_apply 2022-07-28 01:01:34 350a381 feat(category_theory): construction of the localized category (#14422) When `W : morphism_property C` is a class of morphisms in a category `C`, this PR constructs the localized category `localization W` obtained by adding formal inverses to the morphisms in `W`. ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/arrow.lean + theorem category_theory.arrow.mk_eq Modified src/category_theory/category/Quiv.lean +/- def category_theory.Quiv.lift Modified src/category_theory/eq_to_hom.lean + theorem category_theory.functor.congr_inv_of_congr_hom Added src/category_theory/localization/construction.lean + def category_theory.localization.construction.Wiso + theorem category_theory.localization.construction.fac + def category_theory.localization.construction.lift + def category_theory.localization.construction.lift_to_path_category + structure category_theory.localization.construction.loc_quiver + inductive category_theory.localization.construction.relations + theorem category_theory.localization.construction.uniq + def category_theory.localization.construction.ι_paths + def category_theory.localization.construction.ψ₁ + def category_theory.localization.construction.ψ₂ + def category_theory.morphism_property.Q + def category_theory.morphism_property.localization Modified src/category_theory/morphism_property.lean + def category_theory.morphism_property.is_inverted_by Modified src/combinatorics/quiver/path.lean + theorem prefunctor.map_path_to_path 2022-07-28 00:18:08 00e7ca5 feat(category_theory/limits/shapes/comm_sq): opposites of is_pullback and is_pushout (#15269) This PR shows that the dual of a pushout commutative square is a pullback square, and similar other results. The most basic `comm_sq` API is also moved to a separate file with fewer dependencies so as to prepare for a refactor of lifting properties which shall be based on `comm_sq`. ESTIMATED CHANGES Added src/category_theory/comm_sq.lean + theorem category_theory.comm_sq.flip + theorem category_theory.comm_sq.of_arrow + theorem category_theory.comm_sq.op + theorem category_theory.comm_sq.unop + structure category_theory.comm_sq + theorem category_theory.functor.map_comm_sq Modified src/category_theory/limits/shapes/comm_sq.lean + def category_theory.comm_sq.cocone_op + def category_theory.comm_sq.cocone_unop + def category_theory.comm_sq.cone_op + def category_theory.comm_sq.cone_unop - theorem category_theory.comm_sq.flip - theorem category_theory.comm_sq.of_arrow - structure category_theory.comm_sq - theorem category_theory.functor.map_comm_sq + theorem category_theory.is_pullback.op + theorem category_theory.is_pullback.unop + theorem category_theory.is_pushout.op + theorem category_theory.is_pushout.unop 2022-07-27 22:36:27 cd7b23d feat(topology/subset_properties): `locally_compact_space` instance for `Π` types (#15707) This PR adds - `locally_compact_space.pi` mirroring `locally_compact_space.prod` and - `locally_compact_space.pi_finite` for finite products Proof by: @alreadydone ESTIMATED CHANGES Modified src/topology/subset_properties.lean 2022-07-27 19:44:52 805bb2d feat(algebraic_geometry/morphisms): Quasi-compact morphisms of schemes (#15436) ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Added src/algebraic_geometry/morphisms/quasi_compact.lean + theorem algebraic_geometry.compact_open_induction_on + theorem algebraic_geometry.is_compact_open_iff_eq_basic_open_union + theorem algebraic_geometry.is_compact_open_iff_eq_finset_affine_union + theorem algebraic_geometry.quasi_compact_iff_forall_affine + theorem algebraic_geometry.quasi_compact_iff_spectral Modified src/algebraic_geometry/open_immersion.lean + theorem algebraic_geometry.Scheme.open_cover.Union_range + theorem algebraic_geometry.Scheme.open_cover.compact_space Modified src/topology/sets/opens.lean + theorem topological_space.opens.is_compact_open_iff_eq_finite_Union_of_is_basis Modified src/topology/subset_properties.lean + theorem is_compact_open_iff_eq_finite_Union_of_is_topological_basis 2022-07-27 19:44:51 594e884 feat(combinatorics/additive/behrend): Behrend's lower bound on Roth numbers (#15327) This proves the explicit bound on Roth's numbers of the form `n / exp (O (sqrt (log n)))`. ESTIMATED CHANGES Modified src/algebra/order/floor.lean +/- theorem int.ceil_pos + theorem nat.ceil_pos Modified src/analysis/special_functions/pow.lean + theorem real.exp_one_rpow Modified src/combinatorics/additive/behrend.lean + theorem behrend.bound + theorem behrend.bound_aux' + theorem behrend.bound_aux + theorem behrend.ceil_lt_mul + theorem behrend.d_value_pos + theorem behrend.div_lt_floor + theorem behrend.exists_large_sphere + theorem behrend.exists_large_sphere_aux + theorem behrend.exp_four_lt + theorem behrend.exp_neg_two_mul_le + theorem behrend.four_zero_nine_six_lt_exp_sixteen + theorem behrend.le_N + theorem behrend.le_sqrt_log + theorem behrend.log_two_mul_two_le_sqrt_log_eight + theorem behrend.lower_bound_le_one' + theorem behrend.lower_bound_le_one + theorem behrend.n_value_pos + theorem behrend.roth_lower_bound + theorem behrend.roth_lower_bound_explicit + theorem behrend.three_le_n_value + theorem behrend.two_div_one_sub_two_div_e_le_eight + theorem behrend.two_le_n_value 2022-07-27 19:44:50 732279d feat(analysis/special_functions/gaussian): formula for gaussian integrals (#15106) ESTIMATED CHANGES Added src/analysis/special_functions/gaussian.lean + theorem exp_neg_mul_sq_is_o_exp_neg + theorem integrable_exp_neg_mul_sq + theorem integrable_exp_neg_mul_sq_iff + theorem integrable_mul_exp_neg_mul_sq + theorem integrable_on_rpow_mul_exp_neg_mul_sq + theorem integrable_rpow_mul_exp_neg_mul_sq + theorem integral_gaussian + theorem integral_mul_exp_neg_mul_sq + theorem rpow_mul_exp_neg_mul_sq_is_o_exp_neg 2022-07-27 19:44:49 3086d34 feat(probability/martingale): the discrete stochastic integral of a submartingale is a submartingale (#14909) This PR proves that the discrete stochastic integral of a predictable process with a submartingale is a submartingale. ESTIMATED CHANGES Modified src/probability/martingale.lean + theorem measure_theory.submartingale.sum_mul_sub' + theorem measure_theory.submartingale.sum_mul_sub Modified src/probability/stopping.lean - theorem measure_theory.adapted.add + theorem measure_theory.adapted.inv + theorem measure_theory.adapted.mul - theorem measure_theory.adapted.neg +/- theorem measure_theory.adapted.smul + theorem measure_theory.adapted.strongly_measurable + theorem measure_theory.adapted.strongly_measurable_le 2022-07-27 19:44:48 583a703 feat(category_theory): a characterization of separating objects (#14838) ESTIMATED CHANGES Modified src/category_theory/generator.lean + theorem category_theory.is_coseparating_iff_mono + theorem category_theory.is_coseparator_iff_mono + theorem category_theory.is_separating_iff_epi + theorem category_theory.is_separator_iff_epi 2022-07-27 19:44:47 08af4a3 chore(data/polynomial/cancel_leads): golf using `compute_degree_le` (#14776) This PR is the companion to #14762. It serves to show how to use the tactic in a few cases in what is already in mathlib. I generalized lemma `nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree` to assume `ring` instead of `comm_ring + is_domain`. The lemma with the weaker assumptions is `nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree_of_comm`. I left the old lemma as well,with proof a simple application of the newer lemma. ESTIMATED CHANGES Modified src/data/polynomial/cancel_leads.lean +/- theorem polynomial.nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree + theorem polynomial.nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree_of_comm 2022-07-27 17:03:28 c59720b chore(analysis/convex/cone): add trivial coercion lemmas (#15713) This also changes `le` to unfold in terms of `coe` rather than `carrier`, since that's the form we have lemmas about. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem convex_cone.coe_Inf + theorem convex_cone.coe_bot +/- theorem convex_cone.coe_inf + theorem convex_cone.coe_infi + theorem convex_cone.coe_mk + theorem convex_cone.coe_top + theorem convex_cone.mem_infi 2022-07-27 17:03:27 63eb48b feat(analysis/special_functions/trigonometric/angle): equality of `cos` or `sin` (#15651) `analysis.special_functions.trigonometric.angle` has results relating equality of `real.cos` of two reals, or `real.sin` of two reals, to relations between those reals converted to `angle`. Add variants of those results where one or both of the arguments are passed as `angle` instead of as reals, with `real.angle.cos` and `real.angle.sin` used on those `angle` arguments. The version for `cos` with one `angle` and one real argument, in particular, is what I want for proving that the oriented angle between two nonzero vectors is plus or minus the unoriented angle. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.cos_eq_iff_coe_eq_or_eq_neg +/- theorem real.angle.cos_eq_iff_eq_or_eq_neg + theorem real.angle.cos_eq_real_cos_iff_eq_or_eq_neg + theorem real.angle.sin_eq_iff_coe_eq_or_add_eq_pi +/- theorem real.angle.sin_eq_iff_eq_or_add_eq_pi + theorem real.angle.sin_eq_real_sin_iff_eq_or_add_eq_pi 2022-07-27 17:03:26 4573298 doc(field_theory/splitting_field): update code example to reflect changes to diamond issues (#15620) We now have infrastructure in place to avoid diamonds in nat/int/rat algebras, so we can't appeal to a lack of it when explaining diamond issues. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean 2022-07-27 17:03:25 ac2addd feat(linear_algebra): lemmas on associatedness of determinants of linear maps (#15587) `det f` equals `det f'` up to units if `f'` is `f` composed with a linear equiv. First a homogeneous form where `f f' : M → M`, then a heterogeneous form where `f f' : M → N` and the equivs `e e' : N → M`. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_map.associated_det_comp_equiv + theorem linear_map.associated_det_of_eq_comp 2022-07-27 17:03:24 6965426 feat(computability/ackermann): the Ackermann function isn't primitive recursive (#15505) See module docs for a thorough explanation of the proof. ESTIMATED CHANGES Added src/computability/ackermann.lean + def ack + theorem ack_ack_lt_ack_max_add_two + theorem ack_add_one_sq_lt_ack_add_four + theorem ack_add_one_sq_lt_ack_add_three + theorem ack_inj_left + theorem ack_inj_right + theorem ack_injective_left + theorem ack_injective_right + theorem ack_le_ack + theorem ack_le_iff_left + theorem ack_le_iff_right + theorem ack_lt_iff_left + theorem ack_lt_iff_right + theorem ack_mkpair_lt + theorem ack_mono_left + theorem ack_mono_right + theorem ack_one + theorem ack_pos + theorem ack_strict_mono_left + theorem ack_strict_mono_right + theorem ack_succ_right_le_ack_succ_left + theorem ack_succ_succ + theorem ack_succ_zero + theorem ack_three + theorem ack_two + theorem ack_zero + theorem add_add_one_le_ack + theorem add_lt_ack + theorem exists_lt_ack_of_nat_primrec + theorem lt_ack_left + theorem lt_ack_right + theorem max_ack_left + theorem max_ack_right + theorem not_nat_primrec_ack_self + theorem not_primrec_ack_self + theorem not_primrec₂_ack + theorem one_lt_ack_succ_left + theorem one_lt_ack_succ_right 2022-07-27 17:03:23 b3efc73 feat(order/well_founded): typeclasses for well-founded `<` and `>` (#15399) # Well-founded typeclasses We introduce a new unbundled typeclass `is_well_founded` for a general well-founded relation, and reducible defs `well_founded_lt` and `well_founded_gt` for well-founded `<` and `>` specifically, to be used as mixins. For now, all we do is specialize only the most basic API on well-founded relations to these new typeclasses. This is just an initial development. If this is merged, a subsequent PR will redefine `is_well_order` in terms of `is_well_founded` (and remove the redundant `irrefl` field). Further PRs will focus on providing all the possible instances for this new typeclass, and actually using it throughout mathlib. Moved from #15023. ## Why do we want this? Here's the part where I justify why this is a good thing we want in mathlib. ### Well-ordered `<` There is a need to talk about well-ordered `<` relations, as a quick search for `is_well_order α (<)` or `is_well_order ι (<)` reveals. The most obvious way to spell this condition out, namely `[has_lt α] [is_well_order α (<)]` is actually the most inconvenient, since none of the results for linear orders are available. You actually need to write `[linear_order α] [is_well_order α (<)]` instead. With this new typeclass, the obvious spelling is now the good one: `[linear_order α] [well_founded_lt α]` ### Redundant typeclasses We actually already at least four typeclasses for the well-foundedness of a concrete relation: `category.noetherian_object`, `category.artinian_object`, `topological_space.noetherian_space`, and `wf_dvd_monoid`. One currently needs to specialize the characterizing properties of a well-founded relation to these separate typeclasses in order to use them. Redefining these typeclasses in terms of these new ones, and making them `reducible def`s, would alleviate this problem. ### Typeclass inference Well-founded relations are actually a nice candidate for typeclass inference, since there's many common constructions that automatically preserve well-foundedness. These include taking inverse images (including `measure` and `order.preimage`), maps through relation embeddings (including subtypes), lexicographic sums or products, and adding a top or bottom element. Many of these are currently provided as instances, but only for well-orders. ### Misleading theorem names Perhaps the most useful result on well-founded relations is that every nonempty set has a minimum - when you view the relation as `<`, that is. This leads to misleading theorem names when you're using them on a well-founded `>` relation. With this refactor, we could simply specialize `well_founded.min` into `well_founded_gt.max` and end up with clearer theorem statements. On a related note, given a linear order and a well-founded `<` relation, we can rephrase `well_founded.not_lt_min` into the much more convenient `well_founded_lt.min_le`. ESTIMATED CHANGES Modified src/order/rel_classes.lean + theorem is_well_founded.apply + def is_well_founded.fix + theorem is_well_founded.fix_eq + theorem is_well_founded.induction + def is_well_founded.to_has_well_founded + theorem subrelation.is_well_founded + theorem well_founded.asymmetric + theorem well_founded_gt.apply + def well_founded_gt.fix + theorem well_founded_gt.fix_eq + theorem well_founded_gt.induction + def well_founded_gt.to_has_well_founded + def well_founded_gt + theorem well_founded_gt_dual_iff + theorem well_founded_lt.apply + def well_founded_lt.fix + theorem well_founded_lt.fix_eq + theorem well_founded_lt.induction + def well_founded_lt.to_has_well_founded + def well_founded_lt + theorem well_founded_lt_dual_iff Modified src/order/well_founded.lean - theorem well_founded.not_gt_of_lt 2022-07-27 14:35:18 b9387a4 feat(data/nat/totient): lemmas `totient_mul_of_prime_of_{not_}dvd` (#15645) Add `totient_mul_of_prime_of_not_dvd (hp : p.prime) (h : ¬ p ∣ n) : (p * n).totient = (p - 1) * n.totient` and golf `totient_mul_of_prime_of_dvd`. ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.totient_mul_of_prime_of_not_dvd 2022-07-27 14:35:16 23c3981 feat(analysis/convex/cone): add inner_dual_cone_eq_Inter_inner_dual_cone_singleton (#15639) Proof that a dual cone equals the intersection of dual cones of singleton sets. Part of #15637 ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem inner_dual_cone_eq_Inter_inner_dual_cone_singleton 2022-07-27 14:35:14 735943a feat(algebraic_topology/dold_kan): construction of idempotent endomorphisms (#15616) This PR introduces a sequence of idempotent endomorphisms of the alternating face map complex of a simplicial object in a preadditive category. In a future PR, by taking the "limit" of this sequence, we shall get the projection on the normalized subcomplex, parallel to the degenerate sucomplex. ESTIMATED CHANGES Modified src/algebraic_topology/dold_kan/faces.lean +/- theorem algebraic_topology.dold_kan.higher_faces_vanish.comp_Hσ_eq +/- theorem algebraic_topology.dold_kan.higher_faces_vanish.comp_Hσ_eq_zero Modified src/algebraic_topology/dold_kan/homotopies.lean Added src/algebraic_topology/dold_kan/projections.lean + theorem algebraic_topology.dold_kan.P_add_Q + theorem algebraic_topology.dold_kan.P_add_Q_f + theorem algebraic_topology.dold_kan.P_f_0_eq + theorem algebraic_topology.dold_kan.P_f_idem + theorem algebraic_topology.dold_kan.P_f_naturality + theorem algebraic_topology.dold_kan.P_idem + def algebraic_topology.dold_kan.Q + theorem algebraic_topology.dold_kan.Q_eq + theorem algebraic_topology.dold_kan.Q_eq_zero + theorem algebraic_topology.dold_kan.Q_f_0_eq + theorem algebraic_topology.dold_kan.comp_P_eq_self_iff + theorem algebraic_topology.dold_kan.higher_faces_vanish.comp_P_eq_self + theorem algebraic_topology.dold_kan.higher_faces_vanish.of_P + theorem algebraic_topology.dold_kan.map_P + def algebraic_topology.dold_kan.nat_trans_P 2022-07-27 14:35:11 017e1f1 feat(ring_theory/algebraic): `is_algebraic_algebra_map_iff` (#15586) This PR adds `is_algebraic_algebra_map_iff`, which is the `is_algebraic` analog of `is_integral_algebra_map_iff`. I also added the special case of an `intermediate_field`, which has been useful. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.algebraic_iff Modified src/ring_theory/algebraic.lean + theorem is_algebraic_algebra_map_iff 2022-07-27 14:35:09 e9d9967 feat(linear_algebra/finite_dimensional): One-dimensional iff principal (#15558) ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem module.rank_le_one_iff_top_is_principal + theorem submodule.rank_le_one_iff_is_principal Modified src/linear_algebra/finite_dimensional.lean + theorem module.finrank_le_one_iff_top_is_principal + theorem submodule.finrank_le_one_iff_is_principal Modified src/ring_theory/principal_ideal_domain.lean 2022-07-27 14:35:07 a6f325f feat(algebraic_geometry): comap of surjective homomorphism is closed embedding (#15291) The comap of a surjective homomorphism is a closed embedding between the Zariski spectra. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean + theorem prime_spectrum.closed_embedding_comap_of_surjective + theorem prime_spectrum.comap_inducing_of_surjective + theorem prime_spectrum.image_comap_zero_locus_eq_zero_locus_comap + theorem prime_spectrum.is_closed_range_comap_of_surjective + theorem prime_spectrum.range_comap_of_surjective 2022-07-27 14:35:04 b4f242f feat(ring_theory): Formally étale/smooth/unramified morphisms are stable under base change. (#15243) ESTIMATED CHANGES Modified src/ring_theory/etale.lean 2022-07-27 14:35:02 03172b6 chore(ring_theory/dedekind_domain/ideal): generalize a lemma (#15104) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean - theorem normalized_factors_prod Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.normalized_factors_prod_of_prime 2022-07-27 14:34:56 f11e306 feat(category_theory/limits/construction): Construct finite limits from terminal objects and pullbacks (#14948) Also provides the dual version, and also in terms of `preserves_limit`. ESTIMATED CHANGES Modified src/category_theory/limits/constructions/binary_products.lean + def is_binary_coproduct_of_is_initial_is_pushout + def is_binary_product_of_is_terminal_is_pullback + def preserves_binary_coproducts_of_preserves_initial_and_pushouts + def preserves_binary_products_of_preserves_terminal_and_pullbacks Modified src/category_theory/limits/constructions/equalizers.lean + def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.coequalizer_cocone + def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.coequalizer_cocone_is_colimit + def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.construct_coequalizer + def category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.pushout_inl + theorem category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts.pushout_inl_eq_pushout_inr + theorem category_theory.limits.has_coequalizers_of_pushouts_and_binary_coproducts +/- theorem category_theory.limits.has_equalizers_of_pullbacks_and_binary_products + def category_theory.limits.preserves_coequalizers_of_pushouts_and_binary_coproducts + def category_theory.limits.preserves_equalizers_of_pullbacks_and_binary_products Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean + theorem category_theory.limits.has_finite_colimits_of_has_initial_and_pushouts + theorem category_theory.limits.has_finite_limits_of_has_terminal_and_pullbacks + def category_theory.limits.preserves_finite_colimits_of_preserves_initial_and_pushouts + def category_theory.limits.preserves_finite_limits_of_preserves_terminal_and_pullbacks Modified src/category_theory/limits/preserves/shapes/pullbacks.lean + theorem category_theory.limits.has_pullback_of_preserves_pullback + theorem category_theory.limits.has_pushout_of_preserves_pushout 2022-07-27 14:34:54 42eb7f2 feat(linear_algebra/basis): shows the lattice of submodules of a module over a division ring is atomistic (#14883) This PR shows that the lattice of submodules of a module over a division ring is atomistic, and that the atoms of this lattice are the spans of nonzero elements. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem atom_iff_nonzero_span + theorem nonzero_span_atom Modified src/linear_algebra/span.lean + theorem submodule.submodule_eq_Sup_le_nonzero_spans 2022-07-27 14:34:52 061ea99 feat(category_theory/preadditive): constructing a semiadditive structure from binary biproducts (#14445) ESTIMATED CHANGES Added src/category_theory/preadditive/of_biproducts.lean + def category_theory.semiadditive_of_binary_biproducts.add_comm_monoid_hom_of_has_binary_biproducts + theorem category_theory.semiadditive_of_binary_biproducts.add_comp + theorem category_theory.semiadditive_of_binary_biproducts.add_eq_left_addition + theorem category_theory.semiadditive_of_binary_biproducts.add_eq_right_addition + theorem category_theory.semiadditive_of_binary_biproducts.comp_add + theorem category_theory.semiadditive_of_binary_biproducts.distrib + theorem category_theory.semiadditive_of_binary_biproducts.is_unital_left_add + theorem category_theory.semiadditive_of_binary_biproducts.is_unital_right_add + def category_theory.semiadditive_of_binary_biproducts.left_add + def category_theory.semiadditive_of_binary_biproducts.right_add 2022-07-27 14:34:50 8f26ace feat(group_theory/complement): transversal for the transfer homomorphism (#14182) In order to make use of the transfer homomorphism, there is a messy computation that must be done. This computation involves a specific choice of transversal, which is constructed in this PR. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.coe_transfer_function + theorem subgroup.mem_transfer_set + theorem subgroup.quotient_equiv_sigma_zmod_apply + theorem subgroup.quotient_equiv_sigma_zmod_symm_apply + theorem subgroup.transfer_function_apply + def subgroup.transfer_set + def subgroup.transfer_transversal + theorem subgroup.transfer_transversal_apply'' + theorem subgroup.transfer_transversal_apply' + theorem subgroup.transfer_transversal_apply 2022-07-27 14:34:49 bb3f990 feat(data/sym/card): Prove stars and bars (#11162) In this file we prove (in `sym.card_sym_eq_multichoose`) that `multichoose (card α) k` counts the number of multisets of cardinality `k` over a finite alphabet `α`. In conjunction with `nat.multichoose_eq`, which shows that `multichoose n k = choose (n + k - 1) k`, we immediately derive `card (sym α k) = (card α + k - 1).choose k`, which is the essence of the "stars and bars" technique in combinatorics. ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean Modified src/data/sym/card.lean + theorem sym.card_sym_eq_choose + theorem sym.card_sym_eq_multichoose + theorem sym.card_sym_fin_eq_multichoose 2022-07-27 12:53:06 ba9c8f3 feat(ring_theory/tensor_product): A predicate for being the tensor product. (#15512) ESTIMATED CHANGES Added src/ring_theory/is_tensor_product.lean + def is_base_change.equiv + theorem is_base_change.equiv_symm_apply + theorem is_base_change.equiv_tmul + def is_base_change.lift + theorem is_base_change.lift_comp + theorem is_base_change.lift_eq + def is_base_change + def is_tensor_product.equiv + theorem is_tensor_product.equiv_symm_apply + theorem is_tensor_product.equiv_to_linear_map + theorem is_tensor_product.induction_on + def is_tensor_product.lift + theorem is_tensor_product.lift_eq + def is_tensor_product.map + theorem is_tensor_product.map_eq + def is_tensor_product + theorem tensor_product.is_base_change + theorem tensor_product.is_tensor_product 2022-07-27 12:53:04 f746956 feat(ring_theory/ring_hom/finite): Finite ring morphisms are stable under base change (#15427) ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean Added src/ring_theory/ring_hom/finite.lean + theorem ring_hom.finite_respects_iso + theorem ring_hom.finite_stable_under_base_change + theorem ring_hom.finite_stable_under_composition 2022-07-27 11:14:37 b8fb47c refactor(topology/sheaves): Redefine sheaves in terms of Grothendieck topology. (#15384) We change the "official definition" of sheaves over topological spaces from the equalizer diagram condition to the condition in terms of the Grothendieck topology on `Opens(X)`. The benefit is that 1. The `X.Sheaf C` category is now defeq to `(opens.grothendieck_topology X).Sheaf C`, so that functors between categories of sheaves over sites could be specialized onto topological spaces without the abundant equivalences. 2. It allows sheaves over spaces to value in arbitrary categories that doesn't have all products. The original sheaf condition is now called `presheaf.is_sheaf_equalizer_products`, and `presheaf.is_sheaf_iff_is_sheaf_equalizer_products` (in `topology.sheaves.sheaf_condition.sites`) shows that the two are equivalent. ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/algebraic_geometry/projective_spectrum/structure_sheaf.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean +/- def algebraic_geometry.structure_sheaf.to_stalk Modified src/category_theory/sites/sheaf.lean + theorem category_theory.presheaf.is_sheaf_of_iso_iff Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/functors.lean Modified src/topology/sheaves/limits.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf.lean +/- theorem Top.sheaf.comp_app +/- theorem Top.sheaf.id_app + def Top.sheaf.presheaf +/- def Top.sheaf Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean + def Top.presheaf.is_sheaf_equalizer_products Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean +/- theorem Top.presheaf.is_sheaf_iff_is_sheaf_opens_le_cover - theorem Top.presheaf.is_sheaf_sites_iff_is_sheaf_opens_le_cover Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified src/topology/sheaves/sheaf_condition/sites.lean - def Top.presheaf.Sheaf_sites_to_sheaf_spaces - def Top.presheaf.Sheaf_spaces_equiv_sheaf_sites - def Top.presheaf.Sheaf_spaces_equiv_sheaf_sites_functor_forget - def Top.presheaf.Sheaf_spaces_equiv_sheaf_sites_inverse_forget - def Top.presheaf.Sheaf_spaces_to_sheaf_sites + theorem Top.presheaf.is_sheaf_equalizer_products_of_is_sheaf + theorem Top.presheaf.is_sheaf_iff_is_sheaf_equalizer_products + theorem Top.presheaf.is_sheaf_of_is_sheaf_equalizer_products - theorem Top.presheaf.is_sheaf_sites_iff_is_sheaf_spaces - theorem Top.presheaf.is_sheaf_sites_of_is_sheaf_spaces - theorem Top.presheaf.is_sheaf_spaces_of_is_sheaf_sites Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheafify.lean +/- def Top.presheaf.sheafify_stalk_iso +/- def Top.presheaf.stalk_to_fiber Modified src/topology/sheaves/stalks.lean 2022-07-27 11:14:36 01c60b2 feat(ring_theory/ring_hom/finite): Finite type is a local property (#15379) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean + theorem subalgebra.mem_of_span_eq_top_of_smul_pow_mem Modified src/ring_theory/adjoin/basic.lean + theorem algebra.pow_smul_mem_of_smul_subset_of_mem_adjoin Modified src/ring_theory/local_properties.lean + theorem is_localization.exists_smul_mem_of_mem_adjoin + def ring_hom.of_localization_finite_span_target + theorem ring_hom.of_localization_span_target_iff_finite Added src/ring_theory/ring_hom/finite_type.lean + theorem ring_hom.finite_is_local + theorem ring_hom.finite_type_holds_for_localization_away + theorem ring_hom.finite_type_of_localization_span_target + theorem ring_hom.finite_type_stable_under_composition 2022-07-27 07:39:57 cffa031 feat(category_theory): full_of_surjective (#14974) ESTIMATED CHANGES Modified src/category_theory/functor/fully_faithful.lean +/- theorem category_theory.functor.map_injective + theorem category_theory.functor.map_surjective 2022-07-27 07:39:55 293da93 feat(ring_theory): the Ore localization of a ring (#14348) Implements the Ore localization of a potentially non-commutative ring and shows its universal property. ESTIMATED CHANGES Modified docs/references.bib Modified src/data/subtype.lean + theorem subtype.coe_eq_of_eq_mk Added src/ring_theory/ore_localization/basic.lean + theorem ore_localization.add_ore_div + theorem ore_localization.div_one_mul + def ore_localization.lift_expand + theorem ore_localization.lift_expand_of + def ore_localization.lift₂_expand + theorem ore_localization.lift₂_expand_of + theorem ore_localization.nontrivial_of_non_zero_divisors + def ore_localization.numerator_hom + theorem ore_localization.numerator_hom_apply + theorem ore_localization.numerator_hom_inj + theorem ore_localization.numerator_is_unit + def ore_localization.numerator_unit + def ore_localization.ore_div + def ore_localization.ore_div_add_char' + theorem ore_localization.ore_div_add_char + theorem ore_localization.ore_div_add_ore_div + theorem ore_localization.ore_div_eq_iff + def ore_localization.ore_div_mul_char' + theorem ore_localization.ore_div_mul_char + theorem ore_localization.ore_div_mul_ore_div + theorem ore_localization.ore_div_mul_ore_div_comm + def ore_localization.ore_eqv + theorem ore_localization.right_distrib + def ore_localization.universal_hom + theorem ore_localization.universal_hom_apply + theorem ore_localization.universal_hom_commutes + theorem ore_localization.universal_hom_unique + def ore_localization.universal_mul_hom + theorem ore_localization.universal_mul_hom_apply + theorem ore_localization.universal_mul_hom_commutes + theorem ore_localization.universal_mul_hom_unique + theorem ore_localization.zero_div_eq_zero + def ore_localization Added src/ring_theory/ore_localization/ore_set.lean + def ore_localization.ore_condition + def ore_localization.ore_denom + theorem ore_localization.ore_eq + theorem ore_localization.ore_left_cancel + def ore_localization.ore_num + def ore_localization.ore_set_of_cancel_monoid_with_zero + def ore_localization.ore_set_of_no_zero_divisors 2022-07-27 06:57:41 b583055 feat(category_theory): a category with a small detecting set is well-powered (#15238) ESTIMATED CHANGES Modified src/category_theory/generator.lean + theorem category_theory.subobject.eq_of_is_detecting + theorem category_theory.subobject.eq_of_le_of_is_detecting + theorem category_theory.subobject.inf_eq_of_is_detecting + theorem category_theory.well_powered_of_is_detecting + theorem category_theory.well_powered_of_is_detector 2022-07-27 05:09:53 a0e2c62 refactor(topology/algebra/order/basic): Add antitone versions of sup and inf lemmas for continuous monotone functions and move them to monotone/antitone namespaces. (#15218) This PR adds antitone versions of lemmas about supremum and infimum under monotone functions and moves those lemmas to monotone/antitone namespaces. Simultaneously, the type class assumption on the codomain is weakened from `order_topology` to `order_closed_topology`. Moreover, lemmas about limsup and liminf under monotone/antitone functions are added: `antitone.map_Limsup_of_continuous_at` etc. ESTIMATED CHANGES Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/order/liminf_limsup.lean + theorem filter.frequently_lt_of_Liminf_lt + theorem filter.frequently_lt_of_lt_Limsup + theorem filter.liminf_eq_Sup_Inf + theorem filter.limsup_eq_Inf_Sup Modified src/topology/algebra/order/basic.lean + theorem antitone.map_Inf_of_continuous_at' + theorem antitone.map_Inf_of_continuous_at + theorem antitone.map_Sup_of_continuous_at' + theorem antitone.map_Sup_of_continuous_at + theorem antitone.map_cInf_of_continuous_at + theorem antitone.map_cSup_of_continuous_at + theorem antitone.map_cinfi_of_continuous_at + theorem antitone.map_csupr_of_continuous_at + theorem antitone.map_infi_of_continuous_at' + theorem antitone.map_infi_of_continuous_at + theorem antitone.map_supr_of_continuous_at' + theorem antitone.map_supr_of_continuous_at - theorem map_Inf_of_continuous_at_of_monotone' - theorem map_Inf_of_continuous_at_of_monotone - theorem map_Sup_of_continuous_at_of_monotone' - theorem map_Sup_of_continuous_at_of_monotone - theorem map_cInf_of_continuous_at_of_monotone - theorem map_cSup_of_continuous_at_of_monotone - theorem map_cinfi_of_continuous_at_of_monotone - theorem map_csupr_of_continuous_at_of_monotone - theorem map_infi_of_continuous_at_of_monotone' - theorem map_infi_of_continuous_at_of_monotone - theorem map_supr_of_continuous_at_of_monotone' - theorem map_supr_of_continuous_at_of_monotone + theorem monotone.map_Inf_of_continuous_at' + theorem monotone.map_Inf_of_continuous_at + theorem monotone.map_Sup_of_continuous_at' + theorem monotone.map_Sup_of_continuous_at + theorem monotone.map_cInf_of_continuous_at + theorem monotone.map_cSup_of_continuous_at + theorem monotone.map_cinfi_of_continuous_at + theorem monotone.map_csupr_of_continuous_at + theorem monotone.map_infi_of_continuous_at' + theorem monotone.map_infi_of_continuous_at + theorem monotone.map_supr_of_continuous_at' + theorem monotone.map_supr_of_continuous_at +/- theorem monotone.tendsto_nhds_within_Iio +/- theorem monotone.tendsto_nhds_within_Ioi Modified src/topology/algebra/order/liminf_limsup.lean + theorem antitone.map_Liminf_of_continuous_at + theorem antitone.map_Limsup_of_continuous_at + theorem antitone.map_liminf_of_continuous_at + theorem antitone.map_limsup_of_continuous_at + theorem monotone.map_Liminf_of_continuous_at + theorem monotone.map_Limsup_of_continuous_at + theorem monotone.map_liminf_of_continuous_at + theorem monotone.map_limsup_of_continuous_at Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2022-07-27 04:27:17 a5f78c9 chore(scripts): update nolints.txt (#15706) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-27 00:42:28 46b1975 refactor(algebra/big_operators/basic): Use `to_additive` (#15702) Prove `sum_range_sub` and `sum_range_sub'` using `to_additive`. Change the statement of `prod_range_div` to use `f (i + 1) / f i` rather than `f (i + 1) * (f i)⁻¹`. Rename `sum_range_sub_of_monotone` to `sum_range_tsub`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_range_induction - theorem finset.sum_range_induction - theorem finset.sum_range_sub' - theorem finset.sum_range_sub - theorem finset.sum_range_sub_of_monotone + theorem finset.sum_range_tsub 2022-07-26 23:26:02 10aeb39 style(analysis/inner_product_space/l2_space): small style improvement (#15698) Spotted by @hrmacbeth ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean 2022-07-26 23:26:01 8050ac7 feat(set_theory/zfc/basic): `inj` lemmas (#15545) We rename two existing lemmas from `*_inj` to `*_injective` to match mathlib convention, and add the corresponding `inj` lemmas. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean +/- theorem Set.pair_inj + theorem Set.pair_injective +/- theorem Set.singleton_inj + theorem Set.singleton_injective 2022-07-26 23:26:00 c6357ee feat(analysis/inner_product_space): in finite dimension, hilbert basis = orthonormal basis (#15540) This allows transferring general facts about hilbert bases to orthonormal bases ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean + theorem hilbert_basis.coe_to_orthonormal_basis + theorem orthonormal_basis.coe_to_hilbert_basis 2022-07-26 20:33:31 f3e89fb chore(topology/sequences): drop local notation `x ⟶ a` (#15696) As requested by @PatrickMassot some time ago. ESTIMATED CHANGES Modified src/topology/sequences.lean 2022-07-26 20:33:29 4a6e8cf chore(data/list/of_fn): injectivity (#15695) ESTIMATED CHANGES Modified src/data/fin/tuple/basic.lean + theorem fin.sigma_eq_iff_eq_comp_cast Modified src/data/list/of_fn.lean + theorem list.of_fn_inj' + theorem list.of_fn_inj + theorem list.of_fn_injective 2022-07-26 20:33:27 fc5a82e feat(analysis/inner_product/pi_L2): a finite orthonormal family is a basis of its span (#15481) We actually prove this for finite sub-families of a generic orthonormal basis because this is easier to use in practice ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem linear_isometry.orthonormal_comp_iff + theorem orthonormal.cod_restrict + theorem orthonormal_span Modified src/analysis/inner_product_space/pi_L2.lean Modified src/linear_algebra/basis.lean 2022-07-26 20:33:25 eea396e feat(set/intervals/monotone): add some monotonicity lemmas (#14896) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.antitone_on_singleton + theorem set.monotone_on_singleton + theorem set.strict_anti_on_singleton + theorem set.strict_mono_on_singleton Modified src/data/set/intervals/monotone.lean + theorem strict_anti_on_Iic_of_lt_pred + theorem strict_anti_on_Iic_of_succ_lt + theorem strict_mono_on.Iic_id_le + theorem strict_mono_on.Iic_le_id + theorem strict_mono_on_Iic_of_lt_succ + theorem strict_mono_on_Iic_of_pred_lt Modified src/order/succ_pred/basic.lean + theorem order.le_succ_iterate + theorem order.pred_iterate_le 2022-07-26 18:06:38 fd77cbf chore(data/set/{function,countable}): extract a lemma from a proof (#15668) ESTIMATED CHANGES Modified src/data/set/countable.lean Modified src/data/set/function.lean + theorem set.exists_inj_on_iff_injective 2022-07-26 18:06:37 8bc2354 feat(ring_theory/valuation/valuation_subring): define maximal ideal of valuation subring and provide basic API (#14656) This PR defines the unique maximal ideal of a valuation subring as a subsemigroup of the field. We prove a few equivalent conditions for two valuations to be equivalent, and we use this to show two valuation subrings are equivalent iff they have the same maximal ideal. ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean +/- theorem add_valuation.map_inv +/- theorem add_valuation.ne_top_iff +/- theorem add_valuation.top_iff + theorem valuation.is_equiv_iff_val_lt_one + theorem valuation.is_equiv_iff_val_sub_one_lt_one + theorem valuation.is_equiv_tfae +/- theorem valuation.map_inv +/- theorem valuation.map_zpow +/- theorem valuation.ne_zero_iff + theorem valuation.one_lt_val_iff +/- theorem valuation.zero_iff Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation_subring.coe_mem_nonunits_iff + theorem valuation_subring.image_maximal_ideal + theorem valuation_subring.mem_nonunits_iff + theorem valuation_subring.mem_nonunits_iff_exists_mem_maximal_ideal + def valuation_subring.nonunits + theorem valuation_subring.nonunits_inj + theorem valuation_subring.nonunits_injective + theorem valuation_subring.nonunits_le + theorem valuation_subring.nonunits_le_nonunits + def valuation_subring.nonunits_order_embedding + theorem valuation_subring.nonunits_subset 2022-07-26 16:40:47 70887f8 feat(measure_theory/constructions/borel_space): the set of points for which a measurable sequence of functions converges is measurable (#15307) ESTIMATED CHANGES Modified src/measure_theory/constructions/polish.lean + theorem measure_theory.measurable_set_exists_tendsto Modified src/order/filter/bases.lean + theorem filter.has_antitone_basis.map 2022-07-26 16:40:46 86f8020 feat(measure_theory/function/conditional_expectation): pull-out property of the conditional expectation (#15274) We prove this result: ```lean lemma condexp_strongly_measurable_mul {f g : α → ℝ} (hf : strongly_measurable[m] f) (hfg : integrable (f * g) μ) (hg : integrable g μ) : μ[f * g | m] =ᵐ[μ] f * μ[g | m] := ``` This could be extended beyond multiplication, to any bounded bilinear map, but we leave this to a future PR. For now we only prove the real multiplication case, which is needed for #14909 and #14933. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.condexp_strongly_measurable_mul + theorem measure_theory.condexp_strongly_measurable_mul_of_bound + theorem measure_theory.condexp_strongly_measurable_mul_of_bound₀ + theorem measure_theory.condexp_strongly_measurable_mul₀ + theorem measure_theory.condexp_strongly_measurable_simple_func_mul + theorem measure_theory.tendsto_condexp_L1_of_dominated_convergence + theorem measure_theory.tendsto_condexp_unique Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.bdd_mul' Modified src/measure_theory/function/strongly_measurable.lean + def measure_theory.strongly_measurable.approx_bounded + theorem measure_theory.strongly_measurable.exists_spanning_measurable_set_norm_le + theorem measure_theory.strongly_measurable.norm_approx_bounded_le + theorem measure_theory.strongly_measurable.tendsto_approx_bounded_ae + theorem measure_theory.strongly_measurable.tendsto_approx_bounded_of_norm_le Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integrable.simple_func_mul' + theorem measure_theory.integrable.simple_func_mul 2022-07-26 14:35:09 e517862 feat(tactic/positivity): a tactic for proving positivity/nonnegativity (#15618) This is a new tactic, `positivity`, which solves goals of the form `0 ≤ x` and `0 < x`. The tactic works recursively according to the syntax of the expression `x`. ESTIMATED CHANGES Modified src/algebra/order/field.lean Modified src/analysis/normed/group/basic.lean Modified src/data/real/sqrt.lean Added src/tactic/positivity.lean Modified src/topology/metric_space/basic.lean Added test/positivity.lean 2022-07-26 12:57:24 8edffc2 feat(order/filter/bases): lemmas about bases of product filters (#15630) * Move `has_basis.prod_self` and `mem_prod_self_iff` down to golf the proof. * Rename `has_basis.prod''` to `has_basis.prod_pprod`. * Rename `has_basis.prod'` to `has_basis.prod_same_index`. * Add `has_basis.prod_same_index_mono ` and `has_basis.prod_same_index_anti`. ESTIMATED CHANGES Modified src/order/filter/bases.lean +/- theorem filter.has_antitone_basis.prod - theorem filter.has_basis.prod'' - theorem filter.has_basis.prod' + theorem filter.has_basis.prod_pprod + theorem filter.has_basis.prod_same_index + theorem filter.has_basis.prod_same_index_anti + theorem filter.has_basis.prod_same_index_mono +/- theorem filter.has_basis.prod_self +/- theorem filter.mem_prod_self_iff Modified src/topology/uniform_space/basic.lean 2022-07-26 12:57:23 671d57d chore(number_theory/padics/padic_integers): golf the comm_ring instance (#15590) This results in nicer definitional equalities that don't involve the application of a recursor. This also renames `padic_int.coe_coe` to `padic_int.coe_nat_cast` and `padic_int.coe_coe_int` to `padic_int.coe_int_cast` to match other similar lemmas in mathlib. Finally, this fixes the TODO comment ```lean -- TODO: define nat_cast/int_cast so that coe_coe and coe_coe_int are rfl ``` ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean +/- def padic_int.coe.ring_hom +/- theorem padic_int.coe_add - theorem padic_int.coe_coe - theorem padic_int.coe_coe_int + theorem padic_int.coe_int_cast +/- theorem padic_int.coe_mul + theorem padic_int.coe_nat_cast +/- theorem padic_int.coe_neg +/- theorem padic_int.coe_pow +/- theorem padic_int.coe_sub +/- theorem padic_int.ext + theorem padic_int.mem_subring_iff +/- theorem padic_int.mk_coe +/- theorem padic_int.nonarchimedean +/- theorem padic_int.norm_add_eq_max_of_ne +/- theorem padic_int.norm_le_one +/- theorem padic_int.norm_p +/- theorem padic_int.norm_p_pow + def padic_int.subring Modified src/number_theory/padics/ring_homs.lean 2022-07-26 12:57:22 e35aa92 feat(probability/moments): mgf/cgf of a sum of independent random variables (#15140) ESTIMATED CHANGES Modified src/probability/independence.lean + theorem probability_theory.Indep_fun.indep_fun_finset_prod_of_not_mem + theorem probability_theory.Indep_fun.indep_fun_prod + theorem probability_theory.Indep_fun.indep_fun_prod_range_succ + theorem probability_theory.Indep_fun.mul Modified src/probability/moments.lean + theorem probability_theory.Indep_fun.cgf_sum + theorem probability_theory.Indep_fun.integrable_exp_mul_sum + theorem probability_theory.Indep_fun.mgf_sum + theorem probability_theory.indep_fun.exp_mul + theorem probability_theory.indep_fun.integrable_exp_mul_add 2022-07-26 12:57:21 c4d273c feat(category_theory/limits): preserves biproducts if comparison is iso (#14419) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/shapes/biproducts.lean + def category_theory.functor.biprod_comparison' + theorem category_theory.functor.biprod_comparison'_comp_biprod_comparison + def category_theory.functor.biprod_comparison + theorem category_theory.functor.biprod_comparison_fst + theorem category_theory.functor.biprod_comparison_snd + def category_theory.functor.biproduct_comparison' + theorem category_theory.functor.biproduct_comparison'_comp_biproduct_comparison + def category_theory.functor.biproduct_comparison + theorem category_theory.functor.biproduct_comparison_π + theorem category_theory.functor.inl_biprod_comparison' + theorem category_theory.functor.inr_biprod_comparison' + theorem category_theory.functor.retraction_biprod_comparison' + theorem category_theory.functor.retraction_biproduct_comparison' + theorem category_theory.functor.section_biprod_comparison + theorem category_theory.functor.section_biproduct_comparison + theorem category_theory.functor.ι_biproduct_comparison' + def category_theory.limits.preserves_binary_biproduct_of_epi_biprod_comparison' + def category_theory.limits.preserves_binary_biproduct_of_mono_biprod_comparison + def category_theory.limits.preserves_biproduct_of_epi_biproduct_comparison' + def category_theory.limits.preserves_biproduct_of_mono_biproduct_comparison Modified src/category_theory/limits/shapes/biproducts.lean +/- theorem category_theory.limits.bicone.to_cocone_ι_app + theorem category_theory.limits.bicone.to_cocone_ι_app_mk +/- theorem category_theory.limits.bicone.to_cone_π_app + theorem category_theory.limits.bicone.to_cone_π_app_mk + def category_theory.limits.biprod.iso_coprod + theorem category_theory.limits.biprod.iso_coprod_inv + def category_theory.limits.biprod.iso_prod + theorem category_theory.limits.biprod.iso_prod_hom + theorem category_theory.limits.biprod.iso_prod_inv + theorem category_theory.limits.biprod_iso_coprod_hom + def category_theory.limits.biproduct.iso_coproduct + theorem category_theory.limits.biproduct.iso_coproduct_hom + theorem category_theory.limits.biproduct.iso_coproduct_inv + def category_theory.limits.biproduct.iso_product + theorem category_theory.limits.biproduct.iso_product_hom + theorem category_theory.limits.biproduct.iso_product_inv Modified src/category_theory/preadditive/additive_functor.lean 2022-07-26 12:57:20 38341f1 feat(algebraic_topology/fundamental_groupoid): Define simply connected spaces (#12788) Proves contractible spaces are simply connected, and that simply connected spaces are characterized by the property that any two paths between the same endpoints are homotopic. ESTIMATED CHANGES Added src/algebraic_topology/fundamental_groupoid/simply_connected.lean + theorem simply_connected_def + theorem simply_connected_iff_paths_homotopic' + theorem simply_connected_iff_paths_homotopic + theorem simply_connected_iff_unique_homotopic + theorem simply_connected_space.paths_homotopic 2022-07-26 11:31:08 b21c9aa chore(analysis/inner_product_space): golf two proofs (#15679) Golf two proofs and move the lemmas into `inner_product_space/basic` since they now only depend on elementary facts about inner product spaces. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem ext_inner_left + theorem ext_inner_right Modified src/analysis/inner_product_space/dual.lean - theorem inner_product_space.ext_inner_left - theorem inner_product_space.ext_inner_right 2022-07-26 11:31:06 8fcb820 feat(order/filter/basic): add `filter.has_basis.bInter_mem` (#15661) Use it to golf a few proofs. ESTIMATED CHANGES Modified src/order/filter/bases.lean +/- theorem filter.has_basis.sInter_sets Modified src/topology/uniform_space/basic.lean 2022-07-26 11:31:05 379b72c feat(topology/basic): add lemmas about `filter.lift' _ closure` (#15653) Use these lemmas to golf some proofs about `uniformity`. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem filter.has_basis.lift'_closure + theorem filter.has_basis.lift'_closure_eq_self + theorem filter.le_lift'_closure Modified src/topology/uniform_space/basic.lean + theorem filter.has_basis.uniformity_closure 2022-07-26 11:31:04 65d8b84 feat(tooplogy/metric_space/hausdorff_distance): add lemmas about `thickening` (#15641) * rename `emetric.exists_pos_forall_le_edist` -> `emetric.exists_pos_forall_lt_edist`; - don't assume that the compact set is nonempty; - provide an `nnreal` number instead of an `ennreal`; - claim strict inequality; * add `metric.thickening_mem_nhds_set` and `metric.cthickening_mem_nhds_set`; * move `is_compact.exists_thickening_subset_open` below the `cthickening` version, make it clear from the proof that the latter implies the former; * add `metric.has_basis_nhds_set_thickening` and `metric.has_basis_nhds_set_cthickening`; * add `continuous.tendsto_nhds_set` ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean - theorem emetric.exists_pos_forall_le_edist + theorem emetric.exists_pos_forall_lt_edist + theorem metric.cthickening_mem_nhds_set + theorem metric.has_basis_nhds_set_cthickening + theorem metric.has_basis_nhds_set_thickening + theorem metric.thickening_mem_nhds_set Modified src/topology/nhds_set.lean + theorem continuous.tendsto_nhds_set 2022-07-26 11:31:03 b08c7ac chore(topology/locally_finite): move from `topology.basic` (#15640) Create a new file about `locally_finite`, move the definition and some lemmas from `topology.basic`. ESTIMATED CHANGES Modified src/topology/basic.lean - theorem locally_finite.Inter_compl_mem_nhds - theorem locally_finite.closure - theorem locally_finite.closure_Union - theorem locally_finite.comp_inj_on - theorem locally_finite.comp_injective - theorem locally_finite.eventually_finite - theorem locally_finite.exists_forall_eventually_at_top_eventually_eq' - theorem locally_finite.exists_forall_eventually_at_top_eventually_eq - theorem locally_finite.exists_forall_eventually_eq_prod - theorem locally_finite.exists_mem_basis - theorem locally_finite.is_closed_Union - theorem locally_finite.point_finite - theorem locally_finite.preimage_continuous - theorem locally_finite.subset - theorem locally_finite.sum_elim - def locally_finite - theorem locally_finite_of_finite Modified src/topology/constructions.lean Added src/topology/locally_finite.lean + theorem locally_finite.Inter_compl_mem_nhds + theorem locally_finite.closure_Union + theorem locally_finite.comp_inj_on + theorem locally_finite.comp_injective + theorem locally_finite.eventually_finite + theorem locally_finite.exists_forall_eventually_at_top_eventually_eq' + theorem locally_finite.exists_forall_eventually_at_top_eventually_eq + theorem locally_finite.exists_forall_eventually_eq_prod + theorem locally_finite.exists_mem_basis + theorem locally_finite.is_closed_Union + theorem locally_finite.point_finite + theorem locally_finite.preimage_continuous + theorem locally_finite.sum_elim + def locally_finite + theorem locally_finite_of_finite 2022-07-26 11:31:02 2a9d569 feat(topology/separation): add `disjoint_nhds_nhds` (#15635) Prove that a topological space is a Hausdorff space if and only iff the neighborhood filters of distinct points are disjoint. Use existing API about filters to golf some proofs. ESTIMATED CHANGES Modified src/order/filter/bases.lean - theorem filter.has_basis.disjoint_basis_iff + theorem filter.has_basis.disjoint_iff Modified src/topology/separation.lean + theorem disjoint_nhds_nhds +/- theorem eq_of_nhds_ne_bot + theorem t2_space_iff_disjoint_nhds 2022-07-26 11:31:01 d43aef0 feat(topology/metric_space/lipschitz): add several lemmas (#15634) Some of these lemmas come from the sphere eversion project, with slightly different names. ESTIMATED CHANGES Modified src/topology/metric_space/lipschitz.lean + theorem maps_to.lipschitz_on_with_iff_restrict 2022-07-26 11:31:00 a095eae feat(order/filter/*): `filter.pi` is countably generated (#15632) * rename `filter.has_basis_infi` to `filter.has_basis_infi'`, add new `filter.has_basis_infi`; * move `prod.is_countably_generated`, golf, add `coprod.is_countably_generated`; * `is_countably_generated_seq` is no longer an instance, `infi.is_countably_generated` is better; * add `infi.is_countably_generated` and `pi.is_countably_generated`; * prove `prod.fist_countable_topology` (from the sphere eversion project) and `pi.first_countable_topology`; * generalize `pi.second_countable_topology` from `encodable` to `countable` so that it automatically applies to finite types. ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis_infi' +/- theorem filter.is_countably_generated_seq Modified src/order/filter/pi.lean Modified src/topology/algebra/module/locally_convex.lean Modified src/topology/bases.lean 2022-07-26 10:45:55 4b76b9d chore(algebra/jordan/basic): remove unused imports (#15686) We don't need any linear algebra or the real numbers here ESTIMATED CHANGES Modified src/algebra/jordan/basic.lean 2022-07-26 08:05:37 5938226 refactor(category_theory/*): use simps in the old parts of the library (#14236) ESTIMATED CHANGES Modified src/algebraic_topology/cech_nerve.lean Modified src/category_theory/functor/basic.lean +/- def category_theory.functor.comp - theorem category_theory.functor.comp_obj Modified src/category_theory/functor/category.lean - theorem category_theory.functor.flip_map_app - theorem category_theory.functor.flip_obj_map - theorem category_theory.functor.flip_obj_obj +/- def category_theory.nat_trans.hcomp - theorem category_theory.nat_trans.hcomp_app Modified src/category_theory/functor/const.lean - theorem category_theory.functor.const.map_app - theorem category_theory.functor.const.obj_map - theorem category_theory.functor.const.obj_obj +/- def category_theory.functor.const.op_obj_op - theorem category_theory.functor.const.op_obj_op_hom_app - theorem category_theory.functor.const.op_obj_op_inv_app +/- def category_theory.functor.const Modified src/category_theory/functor/currying.lean - theorem category_theory.curry.map_app_app - theorem category_theory.curry.obj_map_app - theorem category_theory.curry.obj_obj_map - theorem category_theory.curry.obj_obj_obj - theorem category_theory.uncurry.map_app - theorem category_theory.uncurry.obj_map - theorem category_theory.uncurry.obj_obj Modified src/category_theory/functor/hom.lean + def category_theory.functor.hom - theorem category_theory.functor.hom_obj - theorem category_theory.functor.hom_pairing_map Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/final.lean Modified src/category_theory/limits/fubini.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/natural_isomorphism.lean - theorem category_theory.nat_iso.of_components.hom_app - theorem category_theory.nat_iso.of_components.inv_app +/- def category_theory.nat_iso.of_components Modified src/category_theory/sites/left_exact.lean Modified src/category_theory/structured_arrow.lean Modified src/group_theory/nielsen_schreier.lean Modified src/topology/category/CompHaus/default.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean 2022-07-26 05:38:28 edb7f92 feat(algebra/jordan): Introduce Jordan rings (#11073) Introduces linear Jordan rings; linearises the Jordan axiom; shows that every associative ring has a symmertised product with respect to which it is a commutative Jordan ring. Linearising the Jordan axiom is an important step towards showing that (commutative) Jordan algebras are power associative. ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/jordan/basic.lean + theorem commute_lmul_lmul_sq + theorem commute_lmul_rmul + theorem commute_lmul_rmul_sq + theorem commute_lmul_sq_rmul + theorem commute_rmul_rmul_sq + theorem two_nsmul_lie_lmul_lmul_add_add_eq_zero + theorem two_nsmul_lie_lmul_lmul_add_eq_lie_lmul_lmul_add 2022-07-26 04:56:22 9d8c0f8 doc(tactic/compute_degree): fix tactic tags, add examples to docs (#15680) ESTIMATED CHANGES Modified src/tactic/compute_degree.lean 2022-07-26 04:02:42 df09f2a chore(scripts): update nolints.txt (#15685) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-26 02:21:15 1142e0b feat(big_operators/fin): sum over elements of vector equal to `a` equals count `a` (#15360) The sum over `i : fin n` of 1 for vector elements equal to some `a` is just count applied to `a`. ESTIMATED CHANGES Modified src/data/fintype/fin.lean +/- theorem fin.Ioi_succ +/- theorem fin.Ioi_zero_eq_map + theorem fin.card_filter_univ_eq_vector_nth_eq_count + theorem fin.card_filter_univ_succ' + theorem fin.card_filter_univ_succ 2022-07-25 21:48:30 d85af62 chore(tactic/fix_reflect_string): delete file (#15537) The file `tactic/fix_reflect_string` has a header from @gebner explaining that it was written as a workaround for the Lean issue [144](https://github.com/leanprover-community/lean/issues/144): ```quote The default `has_reflect string` instance in Lean only work for strings up to few thousand characters. Anything larger than that will trigger a stack overflow because the string is represented as a very deeply nested expression ``` This issue was fixed in [185](https://github.com/leanprover-community/lean/pull/185) and at least one file which imports it, `tactic/doc_commands`, no longer uses its contents. Can we delete the file forever now? Or should we keep it because the workaround might be useful in the future? ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/doc_commands.lean Deleted src/tactic/fix_reflect_string.lean 2022-07-25 19:35:23 8da80f4 feat(data/set/countable): add `iff` versions of some lemmas (#15671) ESTIMATED CHANGES Modified src/data/set/countable.lean - theorem set.countable.bUnion + theorem set.countable.bUnion_iff - theorem set.countable.sUnion + theorem set.countable.sUnion_iff +/- theorem set.countable.union - theorem set.countable_Union_Prop + theorem set.countable_Union_iff Modified src/measure_theory/constructions/borel_space.lean 2022-07-25 18:14:50 f22fe49 feat(measure_theory/measure/finite_measure_weak_convergence): Add normalization of finite measures to probability measures and characterize weak convergence in terms of it. (#15528) This PR adds the definition and basic API about normalization of finite measures to probability measures (divide by the total mass, return junk when total mass vanishes). The weak convergence of finite measures is then characterized in terms of convergence of the total mass and the convergence of the probability normalized measures. This characterization allows to obtain results about the weak convergence of finite measures from the often more convenient considerations of weak convergence of probability measures (some implications of portmanteau theorem, in particular). ESTIMATED CHANGES Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem filter.tendsto.mass + theorem measure_theory.finite_measure.average_eq_integral_normalize + theorem measure_theory.finite_measure.coe_normalize_eq_of_nonzero + theorem measure_theory.finite_measure.continuous_mass + theorem measure_theory.finite_measure.mass_nonzero_iff + def measure_theory.finite_measure.normalize + theorem measure_theory.finite_measure.normalize_eq_inv_mass_smul_of_nonzero + theorem measure_theory.finite_measure.normalize_eq_of_nonzero + theorem measure_theory.finite_measure.normalize_test_against_nn + theorem measure_theory.finite_measure.self_eq_mass_mul_normalize + theorem measure_theory.finite_measure.self_eq_mass_smul_normalize +/- theorem measure_theory.finite_measure.tendsto_iff_forall_test_against_nn_tendsto + theorem measure_theory.finite_measure.tendsto_iff_forall_to_weak_dual_bcnn_tendsto + theorem measure_theory.finite_measure.tendsto_normalize_iff_tendsto + theorem measure_theory.finite_measure.tendsto_normalize_of_tendsto + theorem measure_theory.finite_measure.tendsto_normalize_test_against_nn_of_tendsto + theorem measure_theory.finite_measure.tendsto_of_tendsto_normalize_test_against_nn_of_tendsto_mass + theorem measure_theory.finite_measure.tendsto_test_against_nn_of_tendsto_normalize_test_against_nn_of_tendsto_mass + theorem measure_theory.finite_measure.tendsto_zero_of_tendsto_zero_mass + theorem measure_theory.finite_measure.tendsto_zero_test_against_nn_of_tendsto_zero_mass + theorem measure_theory.finite_measure.test_against_nn_eq_mass_mul + theorem measure_theory.finite_measure.test_against_nn_one + theorem measure_theory.finite_measure.test_against_nn_zero + theorem measure_theory.probability_measure.to_finite_measure_nonzero + theorem probability_measure.to_finite_measure_normalize_eq_self 2022-07-25 14:27:54 fe45ef2 feat(algebra/lie/of_associative): add `commute.lie_eq` (#15675) ESTIMATED CHANGES Modified src/algebra/lie/of_associative.lean + theorem commute.lie_eq + theorem commute_iff_lie_eq 2022-07-25 14:27:52 c7ae1ac feat(data/sign): `left.sign_neg`, `right.sign_neg` (#15652) Add lemmas that the sign of `-a` is the negation of the sign of `a`, for two kinds of ordered additive groups (corresponding to the type classes on the `left` and `right` variants of the `neg_pos_iff` and `neg_neg_iff` lemmas used). ESTIMATED CHANGES Modified src/data/sign.lean + theorem left.sign_neg + theorem right.sign_neg 2022-07-25 14:27:50 287a69a refactor(measure_theory/function/uniform_integrable): change `uniform_integrable` to only require `ae_strongly_measurable` (#15623) The L¹ version of the strong LLN does not require `strongly_measurable` but the assumption in `uniform_integrable` forces it to have this condition if not requiring an extra step to relax the condition (see #15392). This PR relaxes the definition of `uniform_integrable` so it only requires `ae_strongly_measurable`. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/uniform_integrable.lean + theorem measure_theory.unif_integrable_finite - theorem measure_theory.unif_integrable_fintype - theorem measure_theory.uniform_integrable.mem_ℒp + theorem measure_theory.uniform_integrable.spec' - theorem measure_theory.uniform_integrable.strongly_measurable - theorem measure_theory.uniform_integrable.unif_integrable + theorem measure_theory.uniform_integrable_finite - theorem measure_theory.uniform_integrable_fintype + theorem measure_theory.uniform_integrable_of' +/- theorem measure_theory.uniform_integrable_zero_meas 2022-07-25 14:27:48 a6269fe feat(combinatorics/set_family/kleitman): Kleitman's bound (#14543) The union of `k` intersecting families over a type of cardinality `n` has size at most `2ⁿ - 2ⁿ⁻ᵏ`. This is the main result in [Families of Non-disjoint subsets](https://reader.elsevier.com/reader/sd/pii/S0021980066800121). ESTIMATED CHANGES Added src/combinatorics/set_family/kleitman.lean + theorem finset.card_bUnion_le_of_intersecting 2022-07-25 12:01:29 b877056 feat(order/compare): general cleanup (#15665) We add `swap_inj`, golf some lemmas, do some simple spacing tweaks. ESTIMATED CHANGES Modified src/order/compare.lean +/- theorem cmp_swap +/- theorem ordering.compares.eq_eq +/- theorem ordering.compares.eq_lt +/- theorem ordering.compares.inj +/- theorem ordering.compares.le_antisymm +/- theorem ordering.compares.le_total +/- theorem ordering.compares.ne_lt + theorem ordering.swap_inj 2022-07-25 12:01:28 98f0d69 feat(linear_algebra/annihilating_polynomial): add definition of annihilating ideal and show minpoly generates in field case (#12140) adding item from trivial undergrad subjects list ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/data/polynomial/ring_division.lean + theorem polynomial.degree_le_of_dvd Added src/linear_algebra/annihilating_polynomial.lean + theorem polynomial.ann_ideal_generator_aeval_eq_zero + theorem polynomial.ann_ideal_generator_eq_minpoly + theorem polynomial.ann_ideal_generator_eq_zero_iff + theorem polynomial.ann_ideal_generator_mem + theorem polynomial.degree_ann_ideal_generator_le_of_mem + theorem polynomial.mem_ann_ideal_iff_aeval_eq_zero + theorem polynomial.mem_iff_ann_ideal_generator_dvd + theorem polynomial.mem_iff_eq_smul_ann_ideal_generator + theorem polynomial.monic_ann_ideal_generator + theorem polynomial.monic_generator_eq_minpoly + theorem polynomial.span_singleton_ann_ideal_generator 2022-07-25 10:24:27 d244509 feat(data/matrix/basic): Add `alg_equiv` and `linear_equiv` instances for transpose. (#15386) `transpose` has natural bundlings as an `alg_equiv` and a `linear_equiv` for which we already have the substantial lemmas. Similarly, `conj_transpose` can be bundled as a `linear_equiv`. This also alters the other bundled versions to take explicit variables as this saves the need for many type annotations, and makes the necessary edits to fix proofs. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + def matrix.conj_transpose_linear_equiv + theorem matrix.conj_transpose_linear_equiv_symm + def matrix.transpose_alg_equiv + def matrix.transpose_linear_equiv + theorem matrix.transpose_linear_equiv_symm Modified src/ring_theory/trace.lean Modified src/topology/instances/matrix.lean 2022-07-25 09:05:27 168d6ba feat(*/partition_of_unity): more lemmas based on the partition of unity (#15609) Add `metric.exists_continuous_real_forall_closed_ball_subset` and `metric.exists_smooth_forall_closed_ball_subset`. For the sphere eversion project, Lemma 3.6. ESTIMATED CHANGES Modified src/geometry/manifold/partition_of_unity.lean + theorem emetric.exists_smooth_forall_closed_ball_subset + theorem metric.exists_smooth_forall_closed_ball_subset Modified src/topology/metric_space/emetric_space.lean + theorem emetric.ord_connected_set_of_ball_subset + theorem emetric.ord_connected_set_of_closed_ball_subset + theorem uniformity_basis_edist_nnreal_le Added src/topology/metric_space/partition_of_unity.lean + theorem emetric.eventually_nhds_zero_forall_closed_ball_subset + theorem emetric.exists_continuous_ennreal_forall_closed_ball_subset + theorem emetric.exists_continuous_nnreal_forall_closed_ball_subset + theorem emetric.exists_continuous_real_forall_closed_ball_subset + theorem emetric.exists_forall_closed_ball_subset_aux₁ + theorem emetric.exists_forall_closed_ball_subset_aux₂ + theorem metric.exists_continuous_nnreal_forall_closed_ball_subset + theorem metric.exists_continuous_real_forall_closed_ball_subset 2022-07-25 06:23:38 f5138d1 feat(category_theory/preadditive/*): algebra over endofunctor preadditive and forget additive functor (#15100) This PR shows that the category of algebras over an endofunctor is preadditive and that forgetful functors from algebras over endofunctors and (co)algebras over (co)monads are additive. ESTIMATED CHANGES Modified src/category_theory/preadditive/additive_functor.lean + theorem category_theory.functor.map_nsmul Modified src/category_theory/preadditive/eilenberg_moore.lean Added src/category_theory/preadditive/endo_functor.lean 2022-07-25 05:10:08 62a1f82 fix(algebraic_geometry/projective_spectrum/scheme) : fix module doc string (#15633) After renaming definitions/lemmas in the body of the `src/algebraic_geometry/projective_spectrum/scheme.lean`, the module doc string is left unchanged. This pr fix the doc string ESTIMATED CHANGES Modified src/algebraic_geometry/projective_spectrum/scheme.lean 2022-07-25 05:10:07 b351ad5 feat(algebraic_geometry/morphisms): Basic framework for classes of morphisms between schemes (#14944) ESTIMATED CHANGES Added src/algebraic_geometry/morphisms/basic.lean + def algebraic_geometry.affine_target_morphism_property.to_property + theorem algebraic_geometry.affine_target_morphism_property.to_property_apply + def algebraic_geometry.affine_target_morphism_property Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.base_change Added src/category_theory/morphism_property.lean + theorem category_theory.morphism_property.respects_iso.cancel_left_is_iso + theorem category_theory.morphism_property.respects_iso.cancel_right_is_iso + def category_theory.morphism_property.respects_iso + theorem category_theory.morphism_property.stable_under_base_change.base_change_map + theorem category_theory.morphism_property.stable_under_base_change.base_change_obj + theorem category_theory.morphism_property.stable_under_base_change.fst + theorem category_theory.morphism_property.stable_under_base_change.pullback_map + theorem category_theory.morphism_property.stable_under_base_change.snd + def category_theory.morphism_property.stable_under_base_change + theorem category_theory.morphism_property.stable_under_composition.respects_iso + def category_theory.morphism_property.stable_under_composition + def category_theory.morphism_property 2022-07-25 04:21:38 44c1fdc chore(scripts): update nolints.txt (#15674) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-25 01:36:16 48dec30 chore(algebra/module/basic): use `simp` instead of `norm_num` (#15670) ESTIMATED CHANGES Modified src/algebra/module/basic.lean 2022-07-25 01:36:15 5f543bd chore(algebra/order/sub): Generalize lemmas (#15497) Generalize many lemmas from `canonically_ordered_add_monoid` to `has_exists_add_of_le`, and a few other generalizations. ### New lemmas * `mul_le_cancellable_one`/`add_le_cancellable_zero` * `tsub_add_le_right_comm` * `add_tsub_add_le_tsub_left` * `add_tsub_add_le_tsub_right` ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/order/monoid_lemmas.lean + theorem mul_le_cancellable_one Modified src/algebra/order/ring.lean Modified src/algebra/order/sub.lean +/- theorem add_tsub_add_le_tsub_add_tsub + theorem add_tsub_add_le_tsub_left + theorem add_tsub_add_le_tsub_right + theorem add_tsub_le_tsub_add +/- theorem lt_tsub_of_add_lt_left +/- theorem lt_tsub_of_add_lt_right +/- theorem tsub_add_eq_tsub_tsub +/- theorem tsub_add_tsub_cancel - theorem tsub_eq_zero_of_le +/- theorem tsub_inj_left +/- theorem tsub_le_self +/- theorem tsub_lt_of_lt +/- theorem tsub_pos_of_lt +/- theorem tsub_self +/- theorem tsub_self_add +/- theorem zero_tsub Modified src/data/list/basic.lean Modified src/data/nat/fib.lean Modified src/data/real/nnreal.lean Modified src/order/order_iso_nat.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/polynomial/eisenstein.lean 2022-07-25 01:36:14 3419dfc feat(analysis/normed_space/lp_space): construct star structures on lp spaces (#15317) On general `lp` spaces we construct a star add monoid and star module structure, and in the case when `1 ≤ p` we also show it is a normed star group. In addition, for `p = ∞`, we provide a star ring structure and show that it is a C⋆-ring. This establishes that the (\ell ^ \infty) direct sum of C⋆-algebras is itself a C⋆-algebra with the supremum norm. ESTIMATED CHANGES Modified src/analysis/normed_space/lp_space.lean + theorem lp.coe_fn_star + theorem mem_ℓp.star_iff + theorem mem_ℓp.star_mem 2022-07-25 01:36:13 a1ce53c refactor(set_theory/ordinal/basic): `ordinal.min` → `infi` (#14707) We ditch `ordinal.min` (which is really just `infi`). Apart from this, we add some missing theorems on conditionally complete lattices with a bottom element. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem cinfi_le' + theorem infi_mem + theorem le_cinfi_iff' Modified src/set_theory/ordinal/basic.lean +/- theorem cardinal.ord_eq + theorem cardinal.ord_eq_Inf - theorem cardinal.ord_eq_min +/- theorem cardinal.ord_le_type - theorem ordinal.le_min - theorem ordinal.lift_min - def ordinal.min - theorem ordinal.min_eq - theorem ordinal.min_le 2022-07-24 23:44:09 5ed2c72 feat(representation_theory/Rep): Rep k G ≌ Module (monoid_algebra k G) (#13713) ESTIMATED CHANGES Modified src/algebra/algebra/restrict_scalars.lean +/- def restrict_scalars.add_equiv +/- theorem restrict_scalars.add_equiv_map_smul + theorem restrict_scalars.add_equiv_symm_map_algebra_map_smul + theorem restrict_scalars.add_equiv_symm_map_smul_smul + theorem restrict_scalars.lsmul_apply_apply Modified src/algebra/module/linear_map.lean Modified src/representation_theory/Rep.lean + theorem Rep.coe_of + def Rep.counit_iso + def Rep.counit_iso_add_equiv + def Rep.equivalence_Module_monoid_algebra + def Rep.of_Module_monoid_algebra + theorem Rep.of_Module_monoid_algebra_obj_coe + theorem Rep.of_Module_monoid_algebra_obj_ρ + theorem Rep.of_ρ + def Rep.to_Module_monoid_algebra + def Rep.to_Module_monoid_algebra_map + theorem Rep.to_Module_monoid_algebra_map_aux + def Rep.unit_iso + def Rep.unit_iso_add_equiv + theorem Rep.unit_iso_comm + def Rep.ρ Modified src/representation_theory/basic.lean +/- theorem representation.as_algebra_hom_def +/- theorem representation.as_algebra_hom_of +/- theorem representation.as_algebra_hom_single + theorem representation.as_algebra_hom_single_one + def representation.as_module + def representation.as_module_equiv + theorem representation.as_module_equiv_map_smul + theorem representation.as_module_equiv_symm_map_rho + theorem representation.as_module_equiv_symm_map_smul + def representation.of_module' + def representation.of_module + theorem representation.of_module_as_algebra_hom_apply_apply + theorem representation.of_module_as_module_act + theorem representation.smul_of_module_as_module Modified src/representation_theory/invariants.lean 2022-07-24 16:34:43 86febe1 feat(algebra/periodic): `fract_periodic` (#15660) Add the lemma that `int.fract` is periodic with period 1. Note that this goes in `algebra.periodic` alongside the definition of `periodic`, rather than `algebra.order.floor` alongside the definition of `fract`, because of import ordering (`algebra.periodic` ends up importing `algebra.order.floor`). ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem int.fract_periodic 2022-07-24 16:34:42 75f1044 feat(order/bounded_order): an order is either an `order_bot` or a `no_bot_order` (#15636) ESTIMATED CHANGES Modified src/order/bounded_order.lean 2022-07-24 16:34:41 a1fdc99 feat(linear_algebra/tensor_product): add id_apply and comp_apply for ltensor and rtensor (#15628) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + theorem linear_map.ltensor_comp_apply + theorem linear_map.ltensor_id_apply + theorem linear_map.rtensor_comp_apply + theorem linear_map.rtensor_id_apply 2022-07-24 16:34:40 aed4c49 refactor(data/{finite,fintype}): move some lemmas to `data.fintype.basic` (#15626) We should have lemmas like `nonempty_fintype` in `fintype.basic` to replace `[fintype _]` by `[finite _]` in the assumptions. This PR doesn't fix any assumptions to keep it small. ESTIMATED CHANGES Modified src/data/finite/basic.lean - theorem finite.of_injective - theorem finite.of_surjective - theorem finite_iff_nonempty_fintype - def fintype.of_finite - theorem nonempty_fintype Modified src/data/fintype/basic.lean + theorem finite.of_injective + theorem finite.of_surjective + theorem finite_iff_nonempty_fintype + theorem nonempty_fintype 2022-07-24 16:34:39 d1bd9c5 chore(*): Rename `normed_group` to `normed_add_comm_group` (#15619) * `normed_group` → `normed_add_comm_group` * `semi_normed_group` → `seminormed_add_comm_group`. Elision of the underscore corresponds to `seminorm` (and to counterbalance the name being sensibly longer). * `normed_group_hom` → `normed_add_group_hom` ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified src/algebra/module/pi.lean Modified src/analysis/ODE/gronwall.lean Modified src/analysis/ODE/picard_lindelof.lean +/- structure picard_lindelof Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/analytic/linear.lean Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/asymptotics/asymptotic_equivalent.lean +/- theorem asymptotics.is_equivalent.smul Modified src/analysis/asymptotics/asymptotics.lean +/- theorem asymptotics.is_O_pi +/- theorem asymptotics.is_O_with_pi +/- theorem asymptotics.is_o.tendsto_zero_of_tendsto +/- theorem asymptotics.is_o_pi +/- theorem summable_of_is_O +/- theorem summable_of_is_O_nat Modified src/analysis/asymptotics/specific_asymptotics.lean +/- theorem asymptotics.is_o.sum_range +/- theorem asymptotics.is_o_sum_range_of_tendsto_zero +/- theorem filter.tendsto.cesaro_smul Modified src/analysis/asymptotics/theta.lean Modified src/analysis/box_integral/basic.lean Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/box_integral/integrability.lean Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/box_integral/partition/measure.lean +/- theorem box_integral.box_additive_map.volume_apply Modified src/analysis/calculus/affine_map.lean Modified src/analysis/calculus/conformal/normed_space.lean Modified src/analysis/calculus/cont_diff.lean +/- theorem cont_diff_on.prod_map +/- theorem cont_diff_within_at.exists_lipschitz_on_with +/- theorem has_ftaylor_series_up_to_on.exists_lipschitz_on_with Modified src/analysis/calculus/deriv.lean +/- theorem deriv_within_Ioi_eq_Ici Modified src/analysis/calculus/diff_on_int_cont.lean Modified src/analysis/calculus/dslope.lean +/- theorem continuous_linear_map.dslope_comp Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_analytic.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/calculus/implicit.lean Modified src/analysis/calculus/inverse.lean +/- theorem approximates_linear_on.exists_homeomorph_extension Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean +/- theorem image_norm_le_of_liminf_right_slope_norm_lt_deriv_boundary Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/calculus/parametric_interval_integral.lean Modified src/analysis/calculus/specific_functions.lean +/- structure cont_diff_bump +/- theorem exists_cont_diff_bump_function_of_mem_nhds Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/abs_max.lean Modified src/analysis/complex/basic.lean +/- theorem complex.restrict_scalars_one_smul_right' Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/complex/conformal.lean Modified src/analysis/complex/liouville.lean Modified src/analysis/complex/phragmen_lindelof.lean Modified src/analysis/complex/real_deriv.lean Modified src/analysis/complex/removable_singularity.lean Modified src/analysis/complex/schwarz.lean Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/convex/integral.lean Modified src/analysis/convex/krein_milman.lean Modified src/analysis/convex/measure.lean Modified src/analysis/convex/strict_convex_space.lean Modified src/analysis/convex/topology.lean Modified src/analysis/convex/uniform.lean Modified src/analysis/convolution.lean Modified src/analysis/inner_product_space/basic.lean + def inner_product_space.of_core.to_normed_add_comm_group - def inner_product_space.of_core.to_normed_group Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/euclidean_dist.lean Modified src/analysis/locally_convex/balanced_core_hull.lean Modified src/analysis/locally_convex/bounded.lean Modified src/analysis/locally_convex/with_seminorms.lean +/- theorem norm_with_seminorms +/- theorem seminorm.cont_normed_space_to_with_seminorms +/- theorem seminorm.cont_with_seminorms_normed_space Modified src/analysis/matrix.lean +/- theorem matrix.frobenius_nnnorm_one + def matrix.frobenius_normed_add_comm_group - def matrix.frobenius_normed_group +/- def matrix.frobenius_normed_space - def matrix.frobenius_semi_normed_group + def matrix.frobenius_seminormed_add_comm_group Modified src/analysis/normed/field/basic.lean +/- theorem nnnorm_norm +/- theorem nnnorm_one +/- theorem norm_norm +/- theorem norm_one_class.nontrivial + theorem normed_add_comm_group.tendsto_at_top' + theorem normed_add_comm_group.tendsto_at_top - theorem normed_group.tendsto_at_top' - theorem normed_group.tendsto_at_top Modified src/analysis/normed/group/SemiNormedGroup.lean +/- theorem SemiNormedGroup.coe_of +/- def SemiNormedGroup.of +/- def SemiNormedGroup +/- theorem SemiNormedGroup₁.coe_of +/- def SemiNormedGroup₁.of +/- def SemiNormedGroup₁ Modified src/analysis/normed/group/SemiNormedGroup/completion.lean Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean Modified src/analysis/normed/group/add_torsor.lean + def metric_space_of_normed_add_comm_group_of_add_torsor - def metric_space_of_normed_group_of_add_torsor + def pseudo_metric_space_of_normed_add_comm_group_of_add_torsor - def pseudo_metric_space_of_normed_group_of_add_torsor Modified src/analysis/normed/group/ball_sphere.lean Modified src/analysis/normed/group/basic.lean +/- theorem add_subgroup.coe_norm +/- theorem add_subgroup.norm_coe +/- theorem nnnorm_le_pi_nnnorm +/- theorem norm_le_pi_norm + theorem normed_add_comm_group.cauchy_seq_iff + theorem normed_add_comm_group.core.to_seminormed_add_comm_group.core + structure normed_add_comm_group.core + def normed_add_comm_group.induced + theorem normed_add_comm_group.nhds_basis_norm_lt + theorem normed_add_comm_group.nhds_zero_basis_norm_lt + def normed_add_comm_group.of_add_dist + def normed_add_comm_group.of_core + theorem normed_add_comm_group.tendsto_nhds_nhds + theorem normed_add_comm_group.tendsto_nhds_zero + theorem normed_add_comm_group.uniformity_basis_dist - theorem normed_group.cauchy_seq_iff - theorem normed_group.core.to_semi_normed_group.core - structure normed_group.core - def normed_group.induced - theorem normed_group.nhds_basis_norm_lt - theorem normed_group.nhds_zero_basis_norm_lt - def normed_group.of_add_dist - def normed_group.of_core - theorem normed_group.tendsto_nhds_nhds - theorem normed_group.tendsto_nhds_zero - theorem normed_group.uniformity_basis_dist +/- theorem pi.nnnorm_def +/- theorem pi.norm_def +/- theorem pi.sum_nnnorm_apply_le_nnnorm +/- theorem pi.sum_norm_apply_le_norm +/- theorem pi_nnnorm_const +/- theorem pi_nnnorm_le_iff +/- theorem pi_nnnorm_lt_iff +/- theorem pi_norm_const +/- theorem pi_norm_le_iff +/- theorem pi_norm_lt_iff - structure semi_normed_group.core - def semi_normed_group.induced - theorem semi_normed_group.mem_closure_iff - def semi_normed_group.of_add_dist' - def semi_normed_group.of_add_dist - def semi_normed_group.of_core + structure seminormed_add_comm_group.core + def seminormed_add_comm_group.induced + theorem seminormed_add_comm_group.mem_closure_iff + def seminormed_add_comm_group.of_add_dist' + def seminormed_add_comm_group.of_add_dist + def seminormed_add_comm_group.of_core Modified src/analysis/normed/group/completion.lean +/- theorem uniform_space.completion.norm_coe Modified src/analysis/normed/group/hom.lean + def add_monoid_hom.mk_normed_add_group_hom' + def add_monoid_hom.mk_normed_add_group_hom - def add_monoid_hom.mk_normed_group_hom' - def add_monoid_hom.mk_normed_group_hom +/- theorem controlled_closure_of_complete +/- theorem controlled_closure_range_of_complete +/- theorem exists_pos_bound_of_bound + theorem normed_add_group_hom.add_apply + theorem normed_add_group_hom.antilipschitz_of_norm_ge + theorem normed_add_group_hom.bound + theorem normed_add_group_hom.bounds_bdd_below + theorem normed_add_group_hom.bounds_nonempty + theorem normed_add_group_hom.coe_add + theorem normed_add_group_hom.coe_comp + def normed_add_group_hom.coe_fn_add_hom + theorem normed_add_group_hom.coe_id + theorem normed_add_group_hom.coe_inj + theorem normed_add_group_hom.coe_inj_iff + theorem normed_add_group_hom.coe_injective + theorem normed_add_group_hom.coe_ker + theorem normed_add_group_hom.coe_mk + theorem normed_add_group_hom.coe_mk_normed_add_group_hom' + theorem normed_add_group_hom.coe_mk_normed_add_group_hom + theorem normed_add_group_hom.coe_neg + theorem normed_add_group_hom.coe_nsmul + theorem normed_add_group_hom.coe_smul + theorem normed_add_group_hom.coe_sub + theorem normed_add_group_hom.coe_sum + theorem normed_add_group_hom.coe_to_add_monoid_hom + theorem normed_add_group_hom.coe_zero + theorem normed_add_group_hom.coe_zsmul + theorem normed_add_group_hom.comp_assoc + def normed_add_group_hom.comp_hom + theorem normed_add_group_hom.comp_range + theorem normed_add_group_hom.comp_zero + theorem normed_add_group_hom.equalizer.comm_sq₂ + theorem normed_add_group_hom.equalizer.comp_ι_eq + def normed_add_group_hom.equalizer.lift + def normed_add_group_hom.equalizer.lift_equiv + theorem normed_add_group_hom.equalizer.lift_norm_noninc + def normed_add_group_hom.equalizer.map + theorem normed_add_group_hom.equalizer.map_comp_map + theorem normed_add_group_hom.equalizer.map_id + theorem normed_add_group_hom.equalizer.map_norm_noninc + theorem normed_add_group_hom.equalizer.norm_lift_le + theorem normed_add_group_hom.equalizer.norm_map_le + def normed_add_group_hom.equalizer.ι + theorem normed_add_group_hom.equalizer.ι_comp_lift + theorem normed_add_group_hom.equalizer.ι_comp_map + theorem normed_add_group_hom.equalizer.ι_norm_noninc + def normed_add_group_hom.equalizer + theorem normed_add_group_hom.ext + theorem normed_add_group_hom.ext_iff + def normed_add_group_hom.id + def normed_add_group_hom.incl + theorem normed_add_group_hom.incl_range + theorem normed_add_group_hom.is_closed_ker + theorem normed_add_group_hom.isometry_comp + theorem normed_add_group_hom.isometry_id + theorem normed_add_group_hom.ker.incl_comp_lift + def normed_add_group_hom.ker.lift + def normed_add_group_hom.ker + theorem normed_add_group_hom.ker_zero + theorem normed_add_group_hom.le_of_op_norm_le + theorem normed_add_group_hom.le_op_norm + theorem normed_add_group_hom.le_op_norm_of_le + theorem normed_add_group_hom.lipschitz + theorem normed_add_group_hom.mem_ker + theorem normed_add_group_hom.mem_range + theorem normed_add_group_hom.mem_range_self + theorem normed_add_group_hom.mk_normed_add_group_hom_norm_le' + theorem normed_add_group_hom.mk_normed_add_group_hom_norm_le + theorem normed_add_group_hom.mk_to_add_monoid_hom + theorem normed_add_group_hom.neg_apply + theorem normed_add_group_hom.norm_comp_le + theorem normed_add_group_hom.norm_comp_le_of_le' + theorem normed_add_group_hom.norm_comp_le_of_le + theorem normed_add_group_hom.norm_def + theorem normed_add_group_hom.norm_eq_of_isometry + theorem normed_add_group_hom.norm_id + theorem normed_add_group_hom.norm_id_le + theorem normed_add_group_hom.norm_id_of_nontrivial_seminorm + theorem normed_add_group_hom.norm_incl + theorem normed_add_group_hom.norm_noninc.comp + theorem normed_add_group_hom.norm_noninc.id + theorem normed_add_group_hom.norm_noninc.neg_iff + theorem normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one + theorem normed_add_group_hom.norm_noninc.zero + def normed_add_group_hom.norm_noninc + theorem normed_add_group_hom.norm_noninc_of_isometry + theorem normed_add_group_hom.nsmul_apply + def normed_add_group_hom.op_norm + theorem normed_add_group_hom.op_norm_add_le + theorem normed_add_group_hom.op_norm_eq_of_bounds + theorem normed_add_group_hom.op_norm_le_bound + theorem normed_add_group_hom.op_norm_le_of_lipschitz + theorem normed_add_group_hom.op_norm_neg + theorem normed_add_group_hom.op_norm_nonneg + theorem normed_add_group_hom.op_norm_zero + theorem normed_add_group_hom.op_norm_zero_iff + def normed_add_group_hom.range + theorem normed_add_group_hom.range_comp_incl_top + theorem normed_add_group_hom.ratio_le_op_norm + theorem normed_add_group_hom.smul_apply + theorem normed_add_group_hom.sub_apply + theorem normed_add_group_hom.sum_apply + theorem normed_add_group_hom.surjective_on_with.exists_pos + theorem normed_add_group_hom.surjective_on_with.mono + theorem normed_add_group_hom.surjective_on_with.surj_on + def normed_add_group_hom.surjective_on_with + def normed_add_group_hom.to_add_monoid_hom + theorem normed_add_group_hom.to_add_monoid_hom_injective + theorem normed_add_group_hom.to_fun_eq_coe + theorem normed_add_group_hom.zero_apply + theorem normed_add_group_hom.zero_comp + theorem normed_add_group_hom.zsmul_apply + structure normed_add_group_hom - theorem normed_group_hom.add_apply - theorem normed_group_hom.antilipschitz_of_norm_ge - theorem normed_group_hom.bound - theorem normed_group_hom.bounds_bdd_below - theorem normed_group_hom.bounds_nonempty - theorem normed_group_hom.coe_add - theorem normed_group_hom.coe_comp - def normed_group_hom.coe_fn_add_hom - theorem normed_group_hom.coe_id - theorem normed_group_hom.coe_inj - theorem normed_group_hom.coe_inj_iff - theorem normed_group_hom.coe_injective - theorem normed_group_hom.coe_ker - theorem normed_group_hom.coe_mk - theorem normed_group_hom.coe_mk_normed_group_hom' - theorem normed_group_hom.coe_mk_normed_group_hom - theorem normed_group_hom.coe_neg - theorem normed_group_hom.coe_nsmul - theorem normed_group_hom.coe_smul - theorem normed_group_hom.coe_sub - theorem normed_group_hom.coe_sum - theorem normed_group_hom.coe_to_add_monoid_hom - theorem normed_group_hom.coe_zero - theorem normed_group_hom.coe_zsmul - theorem normed_group_hom.comp_assoc - def normed_group_hom.comp_hom - theorem normed_group_hom.comp_range - theorem normed_group_hom.comp_zero - theorem normed_group_hom.equalizer.comm_sq₂ - theorem normed_group_hom.equalizer.comp_ι_eq - def normed_group_hom.equalizer.lift - def normed_group_hom.equalizer.lift_equiv - theorem normed_group_hom.equalizer.lift_norm_noninc - def normed_group_hom.equalizer.map - theorem normed_group_hom.equalizer.map_comp_map - theorem normed_group_hom.equalizer.map_id - theorem normed_group_hom.equalizer.map_norm_noninc - theorem normed_group_hom.equalizer.norm_lift_le - theorem normed_group_hom.equalizer.norm_map_le - def normed_group_hom.equalizer.ι - theorem normed_group_hom.equalizer.ι_comp_lift - theorem normed_group_hom.equalizer.ι_comp_map - theorem normed_group_hom.equalizer.ι_norm_noninc - def normed_group_hom.equalizer - theorem normed_group_hom.ext - theorem normed_group_hom.ext_iff - def normed_group_hom.id - def normed_group_hom.incl - theorem normed_group_hom.incl_range - theorem normed_group_hom.is_closed_ker - theorem normed_group_hom.isometry_comp - theorem normed_group_hom.isometry_id - theorem normed_group_hom.ker.incl_comp_lift - def normed_group_hom.ker.lift - def normed_group_hom.ker - theorem normed_group_hom.ker_zero - theorem normed_group_hom.le_of_op_norm_le - theorem normed_group_hom.le_op_norm - theorem normed_group_hom.le_op_norm_of_le - theorem normed_group_hom.lipschitz - theorem normed_group_hom.mem_ker - theorem normed_group_hom.mem_range - theorem normed_group_hom.mem_range_self - theorem normed_group_hom.mk_normed_group_hom_norm_le' - theorem normed_group_hom.mk_normed_group_hom_norm_le - theorem normed_group_hom.mk_to_add_monoid_hom - theorem normed_group_hom.neg_apply - theorem normed_group_hom.norm_comp_le - theorem normed_group_hom.norm_comp_le_of_le' - theorem normed_group_hom.norm_comp_le_of_le - theorem normed_group_hom.norm_def - theorem normed_group_hom.norm_eq_of_isometry - theorem normed_group_hom.norm_id - theorem normed_group_hom.norm_id_le - theorem normed_group_hom.norm_id_of_nontrivial_seminorm - theorem normed_group_hom.norm_incl - theorem normed_group_hom.norm_noninc.comp - theorem normed_group_hom.norm_noninc.id - theorem normed_group_hom.norm_noninc.neg_iff - theorem normed_group_hom.norm_noninc.norm_noninc_iff_norm_le_one - theorem normed_group_hom.norm_noninc.zero - def normed_group_hom.norm_noninc - theorem normed_group_hom.norm_noninc_of_isometry - theorem normed_group_hom.nsmul_apply - def normed_group_hom.op_norm - theorem normed_group_hom.op_norm_add_le - theorem normed_group_hom.op_norm_eq_of_bounds - theorem normed_group_hom.op_norm_le_bound - theorem normed_group_hom.op_norm_le_of_lipschitz - theorem normed_group_hom.op_norm_neg - theorem normed_group_hom.op_norm_nonneg - theorem normed_group_hom.op_norm_zero - theorem normed_group_hom.op_norm_zero_iff - def normed_group_hom.range - theorem normed_group_hom.range_comp_incl_top - theorem normed_group_hom.ratio_le_op_norm - theorem normed_group_hom.smul_apply - theorem normed_group_hom.sub_apply - theorem normed_group_hom.sum_apply - theorem normed_group_hom.surjective_on_with.exists_pos - theorem normed_group_hom.surjective_on_with.mono - theorem normed_group_hom.surjective_on_with.surj_on - def normed_group_hom.surjective_on_with - def normed_group_hom.to_add_monoid_hom - theorem normed_group_hom.to_add_monoid_hom_injective - theorem normed_group_hom.to_fun_eq_coe - theorem normed_group_hom.zero_apply - theorem normed_group_hom.zero_comp - theorem normed_group_hom.zsmul_apply - structure normed_group_hom Modified src/analysis/normed/group/hom_completion.lean + theorem normed_add_comm_group.dense_range_to_compl + theorem normed_add_comm_group.norm_to_compl + def normed_add_comm_group.to_compl + def normed_add_group_hom.completion + theorem normed_add_group_hom.completion_add + theorem normed_add_group_hom.completion_coe + theorem normed_add_group_hom.completion_coe_to_fun + theorem normed_add_group_hom.completion_comp + theorem normed_add_group_hom.completion_def + theorem normed_add_group_hom.completion_id + theorem normed_add_group_hom.completion_neg + theorem normed_add_group_hom.completion_sub + theorem normed_add_group_hom.completion_to_compl + def normed_add_group_hom.extension + theorem normed_add_group_hom.extension_coe + theorem normed_add_group_hom.extension_coe_to_fun + theorem normed_add_group_hom.extension_def + theorem normed_add_group_hom.extension_unique + theorem normed_add_group_hom.ker_completion + theorem normed_add_group_hom.ker_le_ker_completion + theorem normed_add_group_hom.norm_completion + theorem normed_add_group_hom.zero_completion + def normed_add_group_hom_completion_hom - theorem normed_group.dense_range_to_compl - theorem normed_group.norm_to_compl - def normed_group.to_compl - def normed_group_hom.completion - theorem normed_group_hom.completion_add - theorem normed_group_hom.completion_coe - theorem normed_group_hom.completion_coe_to_fun - theorem normed_group_hom.completion_comp - theorem normed_group_hom.completion_def - theorem normed_group_hom.completion_id - theorem normed_group_hom.completion_neg - theorem normed_group_hom.completion_sub - theorem normed_group_hom.completion_to_compl - def normed_group_hom.extension - theorem normed_group_hom.extension_coe - theorem normed_group_hom.extension_coe_to_fun - theorem normed_group_hom.extension_def - theorem normed_group_hom.extension_unique - theorem normed_group_hom.ker_completion - theorem normed_group_hom.ker_le_ker_completion - theorem normed_group_hom.norm_completion - theorem normed_group_hom.zero_completion - def normed_group_hom_completion_hom Modified src/analysis/normed/group/infinite_sum.lean Modified src/analysis/normed/group/pointwise.lean Modified src/analysis/normed/group/quotient.lean +/- def add_subgroup.normed_mk + theorem normed_add_group_hom.is_quotient.norm_le + theorem normed_add_group_hom.is_quotient.norm_lift + structure normed_add_group_hom.is_quotient + theorem normed_add_group_hom.is_quotient_quotient + def normed_add_group_hom.lift + theorem normed_add_group_hom.lift_mk + theorem normed_add_group_hom.lift_norm_le + theorem normed_add_group_hom.lift_norm_noninc + theorem normed_add_group_hom.lift_unique - theorem normed_group_hom.is_quotient.norm_le - theorem normed_group_hom.is_quotient.norm_lift - structure normed_group_hom.is_quotient - theorem normed_group_hom.is_quotient_quotient - def normed_group_hom.lift - theorem normed_group_hom.lift_mk - theorem normed_group_hom.lift_norm_le - theorem normed_group_hom.lift_norm_noninc - theorem normed_group_hom.lift_unique Modified src/analysis/normed_space/M_structure.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/add_torsor_bases.lean +/- theorem interior_convex_hull_aff_basis Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/ball_action.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/basic.lean +/- def homeomorph_unit_ball Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/complemented.lean Modified src/analysis/normed_space/completion.lean +/- theorem uniform_space.completion.norm_to_complL Modified src/analysis/normed_space/conformal_linear_map.lean Modified src/analysis/normed_space/continuous_affine_map.lean Modified src/analysis/normed_space/dual.lean +/- theorem normed_space.polar_closed_ball Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/extend.lean Modified src/analysis/normed_space/extr.lean Modified src/analysis/normed_space/finite_dimension.lean +/- theorem exists_mem_frontier_inf_dist_compl_eq_dist +/- theorem is_compact.exists_mem_frontier_inf_dist_compl_eq_dist +/- theorem is_equivalent.summable_iff +/- theorem is_equivalent.summable_iff_nat +/- theorem summable_norm_iff +/- theorem summable_of_is_O' +/- theorem summable_of_is_O_nat' +/- theorem summable_of_is_equivalent +/- theorem summable_of_is_equivalent_nat Modified src/analysis/normed_space/hahn_banach/extension.lean Modified src/analysis/normed_space/hahn_banach/separation.lean +/- theorem separate_convex_open_set Modified src/analysis/normed_space/indicator_function.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/analysis/normed_space/linear_isometry.lean +/- def linear_isometry.simps.apply +/- structure linear_isometry Modified src/analysis/normed_space/lp_space.lean +/- def lp +/- def pre_lp Modified src/analysis/normed_space/matrix_exponential.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/normed_space/multilinear.lean +/- theorem continuous_multilinear_map.le_op_norm_mul_pow_of_le +/- theorem continuous_multilinear_map.norm_pi +/- def continuous_multilinear_map.piₗᵢ Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_equiv.arrow_congr Modified src/analysis/normed_space/ordered.lean Modified src/analysis/normed_space/pi_Lp.lean +/- theorem pi_Lp.dist_eq_of_L2 +/- theorem pi_Lp.edist_eq_of_L2 +/- theorem pi_Lp.nndist_eq_of_L2 +/- theorem pi_Lp.nnnorm_eq_of_L2 +/- theorem pi_Lp.nnnorm_equiv_symm_const +/- theorem pi_Lp.nnnorm_equiv_symm_one +/- theorem pi_Lp.norm_eq_of_L2 +/- theorem pi_Lp.norm_equiv_symm_const +/- theorem pi_Lp.norm_equiv_symm_one Modified src/analysis/normed_space/pointwise.lean Modified src/analysis/normed_space/ray.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/analysis/normed_space/star/basic.lean + def star_normed_add_group_hom - def star_normed_group_hom Modified src/analysis/normed_space/star/matrix.lean Modified src/analysis/normed_space/weak_dual.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/complex/log_deriv.lean Modified src/analysis/special_functions/exp_deriv.lean Modified src/analysis/special_functions/log/deriv.lean Modified src/analysis/special_functions/non_integrable.lean Modified src/analysis/special_functions/polar_coord.lean Modified src/analysis/special_functions/pow_deriv.lean Modified src/analysis/special_functions/sqrt.lean Modified src/analysis/special_functions/trigonometric/arctan_deriv.lean Modified src/analysis/special_functions/trigonometric/deriv.lean Modified src/analysis/specific_limits/normed.lean + theorem normed_add_comm_group.cauchy_series_of_le_geometric'' + theorem normed_add_comm_group.cauchy_series_of_le_geometric' - theorem normed_group.cauchy_series_of_le_geometric'' - theorem normed_group.cauchy_series_of_le_geometric' +/- theorem not_summable_of_ratio_norm_eventually_ge +/- theorem not_summable_of_ratio_test_tendsto_gt_one - theorem semi_normed_group.cauchy_seq_of_le_geometric + theorem seminormed_add_comm_group.cauchy_seq_of_le_geometric +/- theorem summable_of_ratio_norm_eventually_le +/- theorem summable_of_ratio_test_tendsto_lt_one +/- theorem tendsto_norm_zero' Modified src/analysis/von_neumann_algebra/basic.lean Modified src/combinatorics/additive/salem_spencer.lean +/- theorem add_salem_spencer_sphere Modified src/data/complex/is_R_or_C.lean Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/algebra/smooth_functions.lean +/- def smooth_map.coe_fn_linear_map +/- theorem smooth_map.coe_smul +/- theorem smooth_map.smul_comp' +/- theorem smooth_map.smul_comp Modified src/geometry/manifold/algebra/structures.lean Modified src/geometry/manifold/bump_function.lean +/- theorem smooth_bump_function.smooth_smul Modified src/geometry/manifold/conformal_groupoid.lean Modified src/geometry/manifold/cont_mdiff.lean Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/geometry/manifold/metrizable.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/partition_of_unity.lean +/- theorem bump_covering.smooth_to_partition_of_unity Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/tangent_bundle.lean Modified src/geometry/manifold/whitney_embedding.lean Modified src/information_theory/hamming.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean +/- def besicovitch.multiplicity Modified src/measure_theory/function/ae_eq_of_integral.lean +/- theorem measure_theory.ae_eq_zero_of_forall_dual +/- theorem measure_theory.ae_eq_zero_of_forall_dual_of_is_separable Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/convergence_in_measure.lean +/- theorem measure_theory.tendsto_in_measure_iff_norm +/- theorem measure_theory.tendsto_in_measure_of_tendsto_snorm_top Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/locally_integrable.lean Modified src/measure_theory/function/lp_order.lean Modified src/measure_theory/function/lp_space.lean +/- def bounded_continuous_function.to_Lp_hom +/- theorem measure_theory.Lp.snorm'_lim_le_liminf_snorm' +/- theorem measure_theory.Lp.snorm_lim_le_liminf_snorm +/- def measure_theory.Lp +/- theorem measure_theory.snorm_indicator_le Modified src/measure_theory/function/simple_func_dense_lp.lean Modified src/measure_theory/function/strongly_measurable.lean +/- theorem ae_strongly_measurable_with_density_iff Modified src/measure_theory/function/strongly_measurable_lp.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/group/integration.lean Modified src/measure_theory/group/measure.lean Modified src/measure_theory/integral/average.lean Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.integral_norm_eq_lintegral_nnnorm +/- theorem measure_theory.of_real_integral_norm_eq_lintegral_nnnorm Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/integral/circle_integral_transform.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/integrable_on.lean +/- theorem measure_theory.has_finite_integral_restrict_of_bounded +/- theorem measure_theory.integrable_indicator_const_Lp +/- theorem measure_theory.integrable_on_Lp_of_measure_ne_top Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/interval_average.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integrable.mono_fun +/- theorem interval_integrable_iff_integrable_Icc_of_le Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.ae_measurable_with_density_iff Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/integral/set_integral.lean +/- theorem continuous_linear_map.integral_apply Modified src/measure_theory/integral/set_to_l1.lean +/- theorem measure_theory.L1.simple_func.set_to_L1s_smul +/- theorem measure_theory.dominated_fin_meas_additive.eq_zero +/- theorem measure_theory.dominated_fin_meas_additive.eq_zero_of_measure_zero +/- def measure_theory.dominated_fin_meas_additive +/- theorem measure_theory.simple_func.set_to_simple_func_smul Modified src/measure_theory/integral/torus_integral.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/with_density_vector_measure.lean Modified src/number_theory/modular.lean Modified src/probability/conditional_expectation.lean Modified src/probability/ident_distrib.lean +/- theorem probability_theory.ident_distrib.integrable_iff +/- theorem probability_theory.ident_distrib.integrable_snd +/- theorem probability_theory.ident_distrib.integral_eq +/- theorem probability_theory.ident_distrib.mem_ℒp_iff +/- theorem probability_theory.ident_distrib.mem_ℒp_snd +/- theorem probability_theory.ident_distrib.snorm_eq Modified src/probability/martingale.lean Modified src/probability/stopping.lean Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_of_normed_add_comm_group + theorem bounded_continuous_function.coe_of_normed_add_comm_group_discrete - theorem bounded_continuous_function.coe_of_normed_group - theorem bounded_continuous_function.coe_of_normed_group_discrete + theorem bounded_continuous_function.norm_of_normed_add_comm_group_le - theorem bounded_continuous_function.norm_of_normed_group_le + def bounded_continuous_function.of_normed_add_comm_group + def bounded_continuous_function.of_normed_add_comm_group_discrete - def bounded_continuous_function.of_normed_group - def bounded_continuous_function.of_normed_group_discrete Modified src/topology/continuous_function/compact.lean +/- def continuous_map.comp_right_continuous_map +/- theorem continuous_map.comp_right_continuous_map_apply +/- def continuous_map.comp_right_homeomorph Modified src/topology/continuous_function/zero_at_infty.lean Modified src/topology/metric_space/algebra.lean Modified src/topology/metric_space/hausdorff_dimension.lean Modified src/topology/vector_bundle/basic.lean Modified src/topology/vector_bundle/hom.lean Modified src/topology/vector_bundle/prod.lean Modified src/topology/vector_bundle/pullback.lean Modified test/calc.lean Modified test/measurability.lean 2022-07-24 16:34:38 989fe52 feat(set_theory/zfc/basic): `∈` is well-founded on classes (#15544) ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem Class.mem_asymm + theorem Class.mem_irrefl + theorem Class.mem_wf + theorem Class.univ_not_mem_univ 2022-07-24 14:07:55 639fe5a feat(data/list/of_fn): lemmas to turn quantifiers over lists to quantifiers over tuples (#15433) In order to prove a property of the recursor, this adds some helper lemmas to `function.left_inverse` ESTIMATED CHANGES Modified src/data/fin/tuple/basic.lean + theorem fin.sigma_eq_of_eq_comp_cast Modified src/data/list/of_fn.lean + def list.equiv_sigma_tuple + theorem list.exists_iff_exists_tuple + theorem list.forall_iff_forall_tuple + def list.of_fn_rec + theorem list.of_fn_rec_of_fn Modified src/logic/function/basic.lean + theorem function.left_inverse.cast_eq + theorem function.left_inverse.eq_rec_eq + theorem function.left_inverse.eq_rec_on_eq 2022-07-24 04:00:22 b3bcb79 chore(scripts): update nolints.txt (#15656) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-24 02:48:42 4a4c275 feat(analysis/normed_space/linear_isometry): add defs and lemmas (#15650) * add `linear_isometry_equiv.of_top` and `linear_isometry.equiv_range`; * add lemmas about (pre)images of balls and spheres. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.preimage_ball + theorem linear_isometry.preimage_closed_ball + theorem linear_isometry.preimage_sphere + theorem linear_isometry_equiv.image_ball + theorem linear_isometry_equiv.image_closed_ball + theorem linear_isometry_equiv.image_eq_preimage + theorem linear_isometry_equiv.image_sphere + def linear_isometry_equiv.of_top + theorem linear_isometry_equiv.preimage_ball + theorem linear_isometry_equiv.preimage_closed_ball + theorem linear_isometry_equiv.preimage_sphere 2022-07-23 22:32:58 0179605 feat(analysis/inner_product_space/positive): definition and basic facts about positive operators (#15470) ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem continuous_linear_map.is_self_adjoint_iff_adjoint_eq + theorem inner_product_space.is_self_adjoint.add + theorem inner_product_space.is_self_adjoint.adjoint_conj + theorem inner_product_space.is_self_adjoint.adjoint_eq + theorem inner_product_space.is_self_adjoint.conj_adjoint + theorem inner_product_space.is_self_adjoint.conj_orthogonal_projection + theorem inner_product_space.is_self_adjoint_id + theorem inner_product_space.is_self_adjoint_zero + theorem inner_product_space.orthogonal_projection_is_self_adjoint + theorem submodule.adjoint_orthogonal_projection + theorem submodule.adjoint_subtypeL Added src/analysis/inner_product_space/positive.lean + theorem continuous_linear_map.is_positive.add + theorem continuous_linear_map.is_positive.adjoint_conj + theorem continuous_linear_map.is_positive.conj_adjoint + theorem continuous_linear_map.is_positive.conj_orthogonal_projection + theorem continuous_linear_map.is_positive.inner_nonneg_left + theorem continuous_linear_map.is_positive.inner_nonneg_right + theorem continuous_linear_map.is_positive.is_self_adjoint + theorem continuous_linear_map.is_positive.orthogonal_projection_comp + def continuous_linear_map.is_positive + theorem continuous_linear_map.is_positive_id + theorem continuous_linear_map.is_positive_iff_complex + theorem continuous_linear_map.is_positive_zero 2022-07-23 21:26:58 983c737 feat(number_theory/legendre_symbol/add_character): add file introducing additive characters (#15499) This adds a file that defines additive characters on commutative rings and proves some relevant properties, e.g., that on finite fields and rings of type `zmod n`, there exists a *primitive* additive character, and that the sum of the character values vanishes when the character is nontrivial. This will be used in a later PR (together with multiplicative characters) to define Gauss sums and prove some resuits on them. There is a [Zulip topic](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Additive.20characters/near/290005886) to discuss this. ESTIMATED CHANGES Added src/number_theory/legendre_symbol/add_character.lean + theorem add_char.is_nontrivial.is_primitive + def add_char.is_nontrivial + theorem add_char.is_nontrivial_iff_ne_trivial + theorem add_char.is_primitive.zmod_char_eq_one_iff + def add_char.is_primitive + def add_char.mul_shift + theorem add_char.mul_shift_apply + theorem add_char.mul_shift_mul + theorem add_char.mul_shift_spec' + theorem add_char.mul_shift_zero + structure add_char.primitive_add_char + def add_char.primitive_char_finite_field + def add_char.primitive_zmod_char + theorem add_char.sum_eq_card_of_is_trivial' + theorem add_char.sum_eq_card_of_is_trivial + theorem add_char.sum_eq_zero_of_is_nontrivial' + theorem add_char.sum_eq_zero_of_is_nontrivial + theorem add_char.to_mul_shift_inj_of_is_primitive + def add_char.zmod_char + theorem add_char.zmod_char_is_nontrivial_iff + theorem add_char.zmod_char_primitive_of_eq_one_only_at_zero + theorem add_char.zmod_char_primitive_of_primitive_root + def add_char 2022-07-23 19:01:00 c9ba943 fix(*): fix typos I made yesterday (#15627) Fix 4 typos I made yesterday. ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean + theorem set.ord_connected.interval_oc_subset - theorem set.ord_interval.interval_oc_subset Modified src/data/set/prod.lean + theorem set.diag_preimage_prod_self - theorem set.diag_preimage_prod_sellf Modified src/topology/algebra/module/finite_dimension.lean +/- theorem linear_map.ker_to_continuous_linear_map +/- theorem linear_map.range_to_continuous_linear_map 2022-07-23 17:07:53 ef901ea refactor(*): rename `nondiscrete_normed_field` (#15625) This renames `nondiscrete_normed_field` to `nontrivially_normed_field` in accordance with this [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/hypotheses.20for.20a.20field.20property/near/290408091) ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/analytic/linear.lean Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/calculus/affine_map.lean Modified src/analysis/calculus/cont_diff.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/diff_on_int_cont.lean +/- theorem diff_cont_on_cl.smul +/- theorem diff_cont_on_cl.smul_const Modified src/analysis/calculus/dslope.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_analytic.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/calculus/implicit.lean +/- structure implicit_function_data Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/basic.lean Modified src/analysis/convolution.lean Modified src/analysis/locally_convex/balanced_core_hull.lean Modified src/analysis/locally_convex/basic.lean Modified src/analysis/locally_convex/bounded.lean Modified src/analysis/locally_convex/polar.lean Modified src/analysis/locally_convex/with_seminorms.lean Modified src/analysis/normed/field/basic.lean +/- theorem normed_field.exists_one_lt_norm Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/analysis/normed_space/algebra.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/complemented.lean Modified src/analysis/normed_space/completion.lean +/- theorem uniform_space.completion.norm_to_complL Modified src/analysis/normed_space/continuous_affine_map.lean Modified src/analysis/normed_space/dual.lean +/- def normed_space.polar Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/weak_dual.lean Modified src/analysis/special_functions/exp_deriv.lean Modified src/analysis/special_functions/exponential.lean Modified src/analysis/specific_limits/normed.lean +/- theorem normed_field.continuous_at_inv +/- theorem normed_field.continuous_at_zpow Modified src/data/complex/is_R_or_C.lean Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/algebra/structures.lean Modified src/geometry/manifold/cont_mdiff.lean Modified src/geometry/manifold/cont_mdiff_map.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/instances/units_of_normed_algebra.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- theorem ext_chart_model_space_eq_id +/- def model_with_corners.simps.apply +/- def model_with_corners.simps.symm_apply +/- structure model_with_corners +/- def model_with_corners_self +/- theorem smooth_manifold_with_corners.mk' Modified src/geometry/manifold/tangent_bundle.lean +/- structure basic_smooth_vector_bundle_core +/- def trivial_basic_smooth_vector_bundle_core Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/lp_space.lean +/- theorem bounded_continuous_function.to_Lp_norm_le Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.integral_smul Modified src/measure_theory/integral/set_to_l1.lean +/- theorem measure_theory.set_to_fun_smul Modified src/measure_theory/measure/with_density_vector_measure.lean +/- theorem measure_theory.with_densityᵥ_smul' +/- theorem measure_theory.with_densityᵥ_smul Modified src/number_theory/padics/padic_numbers.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/module/finite_dimension.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/compact.lean Modified src/topology/metric_space/hausdorff_dimension.lean Modified src/topology/vector_bundle/basic.lean Modified src/topology/vector_bundle/hom.lean Modified src/topology/vector_bundle/prod.lean Modified src/topology/vector_bundle/pullback.lean 2022-07-23 17:07:52 4050b90 refactor(data/set/countable): golf using `_root_.countable`, review API (#15624) * add `set.countable_coe_iff`, `set.countable.to_subtype`, `set.to_countable`, `set.countable_univ`, `countable.to_set`, `set.countable.exists_surjective`; * generalize some lemmas from `[encodable]` to `[countable]`; * move `section enumerate` up to use it in `countable_iff_exists_subset_range`; * golf some proofs using facts about `_root_.countable`; * drop `countable_encodable` and `countable_encodable'`, use `set.to_countable` instead. ESTIMATED CHANGES Modified src/data/set/countable.lean +/- theorem set.countable_Union + theorem set.countable_coe_iff +/- theorem set.countable_empty - theorem set.countable_encodable' - theorem set.countable_encodable +/- theorem set.countable_iff_exists_subset_range +/- theorem set.countable_pi +/- theorem set.countable_range + theorem set.countable_univ + theorem set.countable_univ_pi + theorem set.to_countable Modified src/dynamics/ergodic/conservative.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/ae_disjoint.lean Modified src/measure_theory/measure/measure_space.lean Modified src/model_theory/fraisse.lean Modified src/number_theory/liouville/measure.lean Modified src/order/filter/archimedean.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/probability/stopping.lean Modified src/topology/G_delta.lean Modified src/topology/bases.lean 2022-07-23 14:34:54 c0cc689 chore(algebra/lie/direct_sum): remove `direct_sum.lie_algebra_is_internal` (#15631) This meant the same thing as the unprefixed version, and wasn't used anywhere: ```lean example [decidable_eq ι] : direct_sum.lie_algebra_is_internal I ↔ direct_sum.is_internal I := iff.rfl ``` I think it was added before `direct_sum.is_internal` generalized to arbitrary additive subobjects. ESTIMATED CHANGES Modified src/algebra/lie/direct_sum.lean - def direct_sum.lie_algebra_is_internal 2022-07-23 14:34:53 92e9660 feat(data/finset/basic): There is exactly one set in empty types (#15607) and transfer a few boolean algebra lemmas to `finset`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.union_sdiff_left + theorem finset.union_sdiff_right Modified src/data/fintype/basic.lean + theorem finset.sdiff_eq_inter_compl Modified src/data/set/basic.lean 2022-07-23 14:34:52 6537ae9 feat(order/partition/finpartition): Bound size of a bit of `finpartition.atomise` (#15350) Auxiliary lemmas for Szemerédi Regularity Lemma. ESTIMATED CHANGES Modified src/order/partition/finpartition.lean +/- theorem finpartition.bUnion_filter_atomise + theorem finpartition.card_filter_atomise_le_two_pow +/- theorem finpartition.mem_atomise 2022-07-23 13:51:43 7c94fe7 feat(combinatorics/simple_graph/density): Bound on the difference between edge densities (#15353) Auxiliary lemma for Szemerédi Regularity Lemma. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/density.lean + theorem rel.abs_edge_density_sub_edge_density_le_one_sub_mul + theorem rel.abs_edge_density_sub_edge_density_le_two_mul + theorem rel.abs_edge_density_sub_edge_density_le_two_mul_sub_sq + theorem rel.card_interedges_finpartition + theorem rel.card_interedges_finpartition_left + theorem rel.card_interedges_finpartition_right + theorem rel.edge_density_sub_edge_density_le_one_sub_mul + theorem rel.mul_edge_density_le_edge_density 2022-07-23 07:51:52 106f0ac feat(ring_theory/noetherian): Finitely generated idempotent ideal is principal. (#15561) ESTIMATED CHANGES Modified src/algebra/ring/idempotents.lean Modified src/ring_theory/noetherian.lean +/- theorem ideal.fg.map +/- def ideal.fg +/- theorem ideal.fg_ker_comp + theorem ideal.is_idempotent_elem_iff_eq_bot_or_top + theorem ideal.is_idempotent_elem_iff_of_fg + theorem submodule.exists_mem_and_smul_eq_self_of_fg_of_le_smul 2022-07-23 03:35:52 282da0c feat(set_theory/game/nim): make the file `noncomputable theory` (#15367) Since we're interfacing with ordinals and since `pgame` holds no data, we simplify `nim` and allow it to be noncomputable. We need to give `nim` the `noncomputable!` attribute to avoid a VM compilation bug. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean - def nim - def ordinal.out' + def pgame.nim.nim_one_relabelling 2022-07-23 01:31:07 ab6bcd6 feat(order/upper_lower): Upper closure of a set (#15581) Define the upper/lower set generated by a set. ESTIMATED CHANGES Modified src/combinatorics/set_family/intersecting.lean Modified src/order/minimal.lean - theorem is_antichain.max_lower_set_of + theorem is_antichain.maximals_lower_closure - theorem is_antichain.min_upper_set_of + theorem is_antichain.minimals_upper_closure Modified src/order/upper_lower.lean + theorem coe_lower_closure + theorem coe_upper_closure + theorem gc_lower_closure_coe + theorem gc_upper_closure_coe + def gi_lower_closure_coe + def gi_upper_closure_coe + theorem is_lower_set.ord_connected + theorem is_lower_set_iff_Iic_subset + theorem is_upper_set.ord_connected + theorem is_upper_set_iff_Ici_subset + def lower_closure + theorem lower_closure_Union + theorem lower_closure_empty + theorem lower_closure_eq_bot_iff + theorem lower_closure_min + theorem lower_closure_mono + theorem lower_closure_sUnion + theorem lower_closure_union + theorem lower_closure_univ +/- theorem lower_set.coe_Inf +/- theorem lower_set.coe_Sup +/- theorem lower_set.coe_bot +/- theorem lower_set.coe_inf +/- theorem lower_set.coe_infi +/- theorem lower_set.coe_infi₂ + theorem lower_set.coe_subset_coe +/- theorem lower_set.coe_sup +/- theorem lower_set.coe_supr +/- theorem lower_set.coe_supr₂ +/- theorem lower_set.coe_top + theorem lower_set.supr_Iic + theorem mem_lower_closure + theorem mem_upper_closure + theorem ord_connected_iff_upper_closure_inter_lower_closure + theorem set.ord_connected.upper_closure_inter_lower_closure + theorem subset_lower_closure + theorem subset_upper_closure + def upper_closure + theorem upper_closure_Union + theorem upper_closure_anti + theorem upper_closure_empty + theorem upper_closure_eq_top_iff + theorem upper_closure_min + theorem upper_closure_sUnion + theorem upper_closure_union + theorem upper_closure_univ +/- theorem upper_set.coe_Inf +/- theorem upper_set.coe_Sup +/- theorem upper_set.coe_bot +/- theorem upper_set.coe_inf +/- theorem upper_set.coe_infi +/- theorem upper_set.coe_infi₂ + theorem upper_set.coe_subset_coe +/- theorem upper_set.coe_sup +/- theorem upper_set.coe_supr +/- theorem upper_set.coe_supr₂ +/- theorem upper_set.coe_top + theorem upper_set.infi_Ici 2022-07-22 22:11:08 1e024cb feat(data/polynomial/degree/definitions): redefine `polynomial.degree` as `p.support.max` (#15199) This PR redefines `polynomial.degree p`: * old: `p.support.sup coe` * new: `p.support.max`. The two definitions are defeq and relatively few changes are required. Weirdness: `open finset` seems to no longer work consistently. This is the largest source of differences. In particular, the file `ring_theory/polynomial/cyclotomic/basic` only changed because I added `finset.` in several places. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.max_eq_sup_coe Modified src/data/mv_polynomial/equiv.lean Modified src/data/polynomial/degree/definitions.lean +/- def polynomial.degree Modified src/data/polynomial/reverse.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2022-07-22 22:11:06 db22f69 feat(analysis/locally_convex/with_seminorms): in a normed space, von Neumann bounded = metric bounded (#15124) ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean + theorem normed_space.is_bounded_iff_subset_smul_ball + theorem normed_space.is_bounded_iff_subset_smul_closed_ball + theorem normed_space.is_vonN_bounded_ball + theorem normed_space.is_vonN_bounded_closed_ball + theorem normed_space.is_vonN_bounded_iff + theorem normed_space.vonN_bornology_eq Modified src/topology/metric_space/basic.lean + theorem metric.bounded_iff_is_bounded 2022-07-22 18:27:53 b2ba27c move(order/{boolean_algebra → basic}): move `has_compl` and trivial instances (#15602) We move the trivial `pi.has_sdiff`, `pi.has_compl`, and `Prop.has_compl` instances to `order/basic.lean`. The main effect of this is that `rᶜ` for the complement of a relation is now available basically anywhere. ESTIMATED CHANGES Modified src/order/basic.lean + theorem pi.compl_apply + theorem pi.compl_def + theorem pi.sdiff_apply + theorem pi.sdiff_def Modified src/order/boolean_algebra.lean - theorem pi.compl_apply - theorem pi.compl_def - theorem pi.sdiff_apply - theorem pi.sdiff_def 2022-07-22 18:27:52 0b1e039 feat(topology/metric_space/isometry): use namespace, add lemmas (#15591) * Use `namespace isometry`. * Add lemmas like `isometry.preimage_ball`. ESTIMATED CHANGES Modified src/analysis/normed/group/add_torsor.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean +/- theorem isometry.antilipschitz +/- theorem isometry.closed_embedding +/- theorem isometry.comp +/- theorem isometry.comp_continuous_iff +/- theorem isometry.comp_continuous_on_iff - theorem isometry.continuous - theorem isometry.dist_eq +/- theorem isometry.ediam_image +/- theorem isometry.ediam_range +/- theorem isometry.edist_eq - theorem isometry.embedding - theorem isometry.injective +/- theorem isometry.lipschitz +/- theorem isometry.maps_to_emetric_ball +/- theorem isometry.maps_to_emetric_closed_ball - theorem isometry.nndist_eq + theorem isometry.preimage_ball + theorem isometry.preimage_closed_ball + theorem isometry.preimage_emetric_ball + theorem isometry.preimage_emetric_closed_ball + theorem isometry.preimage_set_of_dist + theorem isometry.preimage_sphere +/- theorem isometry.right_inv +/- theorem isometry.tendsto_nhds_iff - theorem isometry.uniform_embedding - theorem isometry.uniform_inducing - theorem isometry_emetric_iff_metric +/- theorem isometry_id + theorem isometry_iff_dist_eq + theorem isometry_iff_nndist_eq +/- theorem isometry_subsingleton +/- theorem isometry_subtype_coe Modified src/topology/metric_space/kuratowski.lean 2022-07-22 15:53:08 b93a64d fix(data/json): `rbmap string α` never serializes to `null` (#15622) This change means that `option (rbmap string α)` can now serialize ESTIMATED CHANGES Modified src/data/json.lean 2022-07-22 15:53:07 81e2643 feat(order/boolean_algebra): A bounded generalized boolean algebra is a boolean algebra (#15606) Abstract the construction of `boolean_algebra (finset α)`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean Modified src/order/boolean_algebra.lean + def generalized_boolean_algebra.to_boolean_algebra 2022-07-22 13:13:08 6b93ea7 feat(data/set/function): add lemmas about `set.restrict` (#15605) From the sphere eversion project. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.eq_restrict_iff + theorem set.restrict_eq_iff + theorem set.restrict_eq_restrict_iff 2022-07-22 11:08:53 8ad82e4 feat(topology/order): upgrade some lemmas to `iff`s (#15617) * turn `continuous_induced_rng`, `continuous_coinduced_dom`, `continuous_sup_dom`, `continuous_Sup_dom`, `continuous_supr_dom`, `continuous_inf_rng`, `continuous_Inf_rng`, and `continuous_infi_rng` into `iff`s; * drop `continuous_induced_rng'`; * add `is_open_sup`. ESTIMATED CHANGES Modified src/geometry/manifold/instances/sphere.lean Modified src/topology/algebra/constructions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/module/weak_dual.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/star.lean Modified src/topology/constructions.lean Modified src/topology/continuous_function/units.lean Modified src/topology/order.lean +/- theorem continuous_Inf_rng +/- theorem continuous_Sup_dom +/- theorem continuous_coinduced_dom - theorem continuous_induced_rng' +/- theorem continuous_induced_rng +/- theorem continuous_inf_rng +/- theorem continuous_infi_rng +/- theorem continuous_sup_dom +/- theorem continuous_supr_dom + theorem is_open_sup 2022-07-22 11:08:51 db10776 chore(analysis/normed/field/unit_ball): cleanup instances (#15615) Add `subsemigroup.has_continuous_mul` and use it. Also use missing `ancestor` attributes so that `to_additive` works with `submonoid.to_subsemigroup`. ESTIMATED CHANGES Modified src/analysis/normed/field/unit_ball.lean Modified src/group_theory/submonoid/basic.lean Modified src/topology/algebra/monoid.lean Modified src/topology/continuous_function/algebra.lean 2022-07-22 09:11:49 51891be feat(topology/maps): add 2 lemmas, `open function` (#15612) * Add `is_open_map.of_inverse` and `is_open_map.range_mem_nhds`. * Open namespace `function`, add `_root_` before `embedding` here and there. One lemma comes from a recent presentation at Brown University, another one comes from the sphere eversion project. ESTIMATED CHANGES Modified src/topology/maps.lean +/- structure closed_embedding +/- theorem embedding.mk' + theorem is_open_map.range_mem_nhds +/- structure open_embedding + theorem quotient_map.of_inverse 2022-07-22 09:11:48 1a73c7e feat(logic/equiv/local_equiv): add 2 lemmas (#15611) Motivated by a lemma in the sphere eversion project. ESTIMATED CHANGES Modified src/logic/equiv/local_equiv.lean + theorem local_equiv.image_symm_image_of_subset_target + theorem local_equiv.symm_image_image_of_subset_source 2022-07-22 09:11:47 80d7906 feat(topology/algebra/module/finite_dimension): add 2 simp lemmas (#15610) From the sphere eversion project. Co-Authored-By: Patrick Massot ESTIMATED CHANGES Modified src/topology/algebra/module/finite_dimension.lean + theorem linear_map.ker_to_continuous_linear_map + theorem linear_map.range_to_continuous_linear_map 2022-07-22 09:11:46 716616b chore(ring_theory/localization/basic): golf sec_snd_ne_zero (#15572) ESTIMATED CHANGES Modified src/ring_theory/localization/basic.lean 2022-07-22 09:11:45 4b82074 chore(set_theory/ordinal/arithmetic): change `0 < x` assumptions to `x ≠ 0` (#15562) Converting from `h : 0 < x` to `h : x ≠ 0` is as easy as `h.ne'`, while the other way round requires `ordinal.pos_iff_ne_zero.2 h`. As such, we prefer the latter form throughout the ordinal logarithm API. We also rename hypotheses like `b0` and `x0` to more standard names like `hb` and `hx`. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.add_log_le_log_mul +/- theorem ordinal.log_def +/- theorem ordinal.log_mod_opow_log_lt_log_self +/- theorem ordinal.log_of_left_le_one +/- theorem ordinal.log_of_not_one_lt_left +/- theorem ordinal.log_opow_mul_add +/- theorem ordinal.log_pos +/- theorem ordinal.lt_opow_iff_log_lt +/- theorem ordinal.lt_opow_succ_log_self +/- theorem ordinal.mod_opow_log_lt_self +/- theorem ordinal.opow_le_iff_le_log +/- theorem ordinal.opow_log_le_self +/- theorem ordinal.opow_mul_add_pos +/- theorem ordinal.succ_log_def Modified src/set_theory/ordinal/cantor_normal_form.lean Modified src/set_theory/ordinal/principal.lean +/- theorem ordinal.mul_eq_opow_log_succ 2022-07-22 09:11:44 ac9e358 feat(algebraic_geometry/AffineScheme): Affine communication lemma (#15487) ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean + def algebraic_geometry.Scheme.affine_basic_open + def algebraic_geometry.Scheme.affine_opens + theorem algebraic_geometry.is_affine_open.basic_open_from_Spec_app + theorem algebraic_geometry.is_affine_open.basic_open_union_eq_self_iff + theorem algebraic_geometry.is_affine_open.from_Spec_map_basic_open + theorem algebraic_geometry.is_affine_open.self_le_basic_open_union_iff + theorem algebraic_geometry.of_affine_open_cover 2022-07-22 09:11:43 30edc93 chore(set_theory/game/nim): review `simp` lemmas (#15407) This PR does the following: - Untag `grundy_value_eq_iff_equiv_nim`, `grundy_value_eq_iff_equiv`, and `grundy_value_iff_equiv_zero` as `simp`, since it's sometimes easier to directly prove the equality of Grundy values than it is the equivalence of games. - Untag `nim_zero_equiv` and `nim_one_equiv` as `simp` - since equivalences can't be used to rewrite, these are nearly useless as `simp` lemmas. - Tag `nim.grundy_value` and `grundy_value_star` as `simp`. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean +/- theorem pgame.grundy_value_eq_iff_equiv +/- theorem pgame.grundy_value_eq_iff_equiv_nim +/- theorem pgame.grundy_value_iff_equiv_zero +/- theorem pgame.grundy_value_star +/- theorem pgame.grundy_value_zero +/- theorem pgame.nim.grundy_value +/- theorem pgame.nim.nim_one_equiv +/- theorem pgame.nim.nim_zero_equiv 2022-07-22 07:51:01 6845136 feat(topology/instances/ennreal): add `continuous(_on).ennreal_mul` (#15593) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem continuous.ennreal_mul + theorem continuous_on.ennreal_mul 2022-07-22 04:29:30 4d5ac73 feat(data/set/intervals): add lemmas (#15608) From sphere eversion project ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean +/- theorem set.Iic_union_Ici + theorem set.Iic_union_Ici_of_le +/- theorem set.Iic_union_Ioi + theorem set.Iic_union_Ioi_of_le +/- theorem set.Iio_union_Ici + theorem set.Iio_union_Ici_of_le + theorem set.Iio_union_Ioi + theorem set.Iio_union_Ioi_of_lt Modified src/data/set/intervals/ord_connected.lean +/- theorem set.ord_connected_interval + theorem set.ord_connected_interval_oc + theorem set.ord_interval.interval_oc_subset Modified src/data/set/intervals/unordered_interval.lean + theorem set.Ioc_subset_interval_oc' + theorem set.Ioc_subset_interval_oc 2022-07-22 04:29:30 98c62bd feat(data/set/prod): add theorems about `λ x, (x, x)` (#15604) From the sphere eversion project. Also swap LHS with RHS in `set.diagonal_eq_range` and rename it to `set.range_diag`. ESTIMATED CHANGES Modified src/data/set/prod.lean + theorem set.diag_preimage_prod + theorem set.diag_preimage_prod_sellf - theorem set.diagonal_eq_range + theorem set.range_diag 2022-07-22 04:29:29 e52026f feat(integration): elementary version of FTC-1 (#15603) The goal is to have a nice statement for the undergrad list and for Mathematics in Lean. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/measure_theory/integral/interval_integral.lean + theorem continuous.deriv_integral + theorem continuous.integral_has_strict_deriv_at 2022-07-22 04:29:28 bd4a574 chore(ring_theory/polynomial/symmetric): golf (#15598) ESTIMATED CHANGES Modified src/ring_theory/polynomial/symmetric.lean 2022-07-22 02:20:20 e27e99b docs(undergrad): add pointwise convergence (#15601) We could link to the definition of the product topology but I think it makes more sense to point out this theorem stating that convergence for the product topology is pointwise convergence. ESTIMATED CHANGES Modified docs/undergrad.yaml 2022-07-22 02:20:18 2f99fd4 docs(undergrad): clean up distribution section (#15600) ESTIMATED CHANGES Modified docs/undergrad.yaml 2022-07-22 02:20:17 d96fc10 docs(undergrad): add polar integration (#15597) ESTIMATED CHANGES Modified docs/undergrad.yaml 2022-07-22 02:20:16 c97887b refactor(data/list/chain): `transitive` → `is_trans` on `chain.pairwise` (#15571) Apart from being more widely used throughout `mathlib`, `is_trans` can be inferred when used with common relations such as `≤`, `<`, `∣`, and others. ESTIMATED CHANGES Modified src/data/list/chain.lean +/- theorem list.chain'_iff_pairwise +/- theorem list.chain_iff_pairwise Modified src/data/list/cycle.lean +/- theorem cycle.chain_iff_pairwise +/- theorem cycle.forall_eq_of_chain Modified src/data/list/range.lean Modified src/data/nat/prime.lean Modified src/logic/equiv/list.lean 2022-07-22 01:22:04 d98479a feat(analysis/calculus/cont_diff): generalize `mul` lemmas to a normed algebra (#15595) Also add lemmas about `finset.prod`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean +/- theorem cont_diff.div_const +/- theorem cont_diff.mul +/- theorem cont_diff.pow +/- theorem cont_diff_at.div_const +/- theorem cont_diff_at.mul +/- theorem cont_diff_at.pow + theorem cont_diff_at_prod' + theorem cont_diff_at_prod +/- theorem cont_diff_mul +/- theorem cont_diff_on.div_const +/- theorem cont_diff_on.mul +/- theorem cont_diff_on.pow + theorem cont_diff_on_prod' + theorem cont_diff_on_prod + theorem cont_diff_prod' + theorem cont_diff_prod +/- theorem cont_diff_within_at.div_const +/- theorem cont_diff_within_at.mul +/- theorem cont_diff_within_at.pow + theorem cont_diff_within_at_prod' + theorem cont_diff_within_at_prod Modified src/geometry/manifold/instances/sphere.lean 2022-07-21 23:19:54 9141644 doc(number_theory/bernoulli_polynomials): a few small improvements (#15599) To make the page header look nicer. ESTIMATED CHANGES Modified src/number_theory/bernoulli_polynomials.lean 2022-07-21 22:30:23 767aeb3 feat(order/succ_pred/limit): Successor and predecessor limits (#15001) We define a successor limit as a value that isn't a successor of anything but perhaps itself, and likewise for predecessors. The plan is to use this to redefine limit ordinals and limit cardinals. ESTIMATED CHANGES Added src/order/succ_pred/limit.lean + theorem order.is_pred_limit.lt_pred + theorem order.is_pred_limit.lt_pred_iff + theorem order.is_pred_limit.pred_ne + def order.is_pred_limit + theorem order.is_pred_limit_iff + theorem order.is_pred_limit_iff_lt_pred + theorem order.is_pred_limit_iff_of_no_min + theorem order.is_pred_limit_iff_pred_ne + theorem order.is_pred_limit_of_lt_pred + theorem order.is_pred_limit_of_pred_ne + theorem order.is_pred_limit_rec_on_limit + theorem order.is_pred_limit_rec_on_pred' + theorem order.is_pred_limit_rec_on_pred + theorem order.is_pred_limit_top + theorem order.is_succ_limit.is_min_of_no_max + theorem order.is_succ_limit.succ_lt + theorem order.is_succ_limit.succ_lt_iff + theorem order.is_succ_limit.succ_ne + def order.is_succ_limit + theorem order.is_succ_limit_bot + theorem order.is_succ_limit_iff + theorem order.is_succ_limit_iff_of_no_max + theorem order.is_succ_limit_iff_succ_lt + theorem order.is_succ_limit_iff_succ_ne + theorem order.is_succ_limit_of_succ_lt + theorem order.is_succ_limit_of_succ_ne + theorem order.is_succ_limit_rec_on_limit + theorem order.is_succ_limit_rec_on_succ' + theorem order.is_succ_limit_rec_on_succ + theorem order.mem_range_pred_of_not_is_pred_limit + theorem order.mem_range_succ_of_not_is_succ_limit + theorem order.not_is_pred_limit + theorem order.not_is_pred_limit_iff' + theorem order.not_is_pred_limit_iff + theorem order.not_is_pred_limit_of_no_min + theorem order.not_is_pred_limit_pred + theorem order.not_is_pred_limit_pred_of_not_is_min + theorem order.not_is_succ_limit + theorem order.not_is_succ_limit_iff' + theorem order.not_is_succ_limit_iff + theorem order.not_is_succ_limit_of_no_max + theorem order.not_is_succ_limit_succ + theorem order.not_is_succ_limit_succ_of_not_is_max 2022-07-21 20:19:11 9bf23b0 feat(order/initial_seg): Initial/principal segment from empty type (#15375) ESTIMATED CHANGES Modified src/order/initial_seg.lean + def initial_seg.of_is_empty + def principal_seg.of_is_empty + theorem principal_seg.of_is_empty_top + def principal_seg.pempty_to_punit 2022-07-21 18:20:24 d749b20 feat(data/real/basic): add a repr showing an underlying cauchy sequence (#15575) This isn't all that useful, but it gives a slightly nicer experience for users who are surprised when `#eval (2 + 3 : real)` emits a gigantic pile of garbage. ESTIMATED CHANGES Modified src/data/real/basic.lean Modified src/data/real/cau_seq_completion.lean Added test/real.lean 2022-07-21 18:20:23 c0c910d feat(linear_algebra/linear_pmap): more lemmas about the graph (#15531) This PR adds more lemmas about the graph of a partially defined linear map, in particular about scalar multiplication and negation of `linear_pmap`s as well as relating inequalities and equalities between the graph and the `linear_pmap`. ESTIMATED CHANGES Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.eq_of_eq_graph + theorem linear_pmap.image_iff + theorem linear_pmap.le_of_le_graph + theorem linear_pmap.mem_domain_iff + theorem linear_pmap.mem_domain_iff_of_eq_graph + theorem linear_pmap.mem_range_iff + theorem linear_pmap.neg_graph + theorem linear_pmap.smul_graph 2022-07-21 16:19:45 591992d chore(data/real/basic,number_theory/padics/padic_numbers): eliminate `real.of_rat` and `padic.of_rat` (#15569) This removes `real.of_rat` and `padic.of_rat` in favor of using `rat.cast` directly now that the diamond is gone. The cauchy version is still useful because it generalizes to fields other than the rationals. This also cleans up the lemmas around these definitions. As a bonus, this means the cast from rat to real is now computable, such that ```lean #eval ((2.5 : ℚ) : ℝ).cauchy.unquot 0 -- 5/2 ``` can be used to extract an element of the cauchy series. It's not clear to me why the `field Cauchy` was only a `def` and not an `instance`. On the assumption that if there were a good reason it would either be indicated in a comment or by a CI failure, I've changed it to be an instance. This also makes some instances on `Cauchy` and `padic` computable, simply by not defining them in terms of forgetting division from the noncompuable field structure. ESTIMATED CHANGES Modified src/data/real/basic.lean + theorem cau_seq.completion.of_rat_rat + theorem real.cauchy_int_cast + theorem real.cauchy_nat_cast + theorem real.cauchy_rat_cast + theorem real.of_cauchy_int_cast + theorem real.of_cauchy_nat_cast + theorem real.of_cauchy_rat_cast - def real.of_rat - theorem real.of_rat_apply - theorem real.of_rat_eq_cast - theorem real.of_rat_lt + theorem real.rat_cast_lt + def real.ring_equiv_Cauchy Modified src/data/real/cau_seq_completion.lean + theorem cau_seq.completion.of_rat_int_cast + theorem cau_seq.completion.of_rat_nat_cast + theorem cau_seq.completion.of_rat_rat_cast + def cau_seq.completion.of_rat_ring_hom Modified src/number_theory/liouville/basic.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_numbers.lean - theorem padic.cast_eq_of_rat - theorem padic.cast_eq_of_rat_of_int - theorem padic.cast_eq_of_rat_of_nat +/- theorem padic.coe_add +/- theorem padic.coe_div +/- theorem padic.coe_mul +/- theorem padic.coe_neg +/- theorem padic.coe_one +/- theorem padic.coe_sub - def padic.of_rat - theorem padic.of_rat_add - theorem padic.of_rat_div - theorem padic.of_rat_eq - theorem padic.of_rat_mul - theorem padic.of_rat_neg - theorem padic.of_rat_one - theorem padic.of_rat_sub - theorem padic.of_rat_zero +/- theorem padic_norm_e.eq_padic_norm' 2022-07-21 16:19:44 7f16dd2 feat(topology/partition_of_unity): local to global (#15490) Use partitions of unity to construct global maps. Motivated by discussions with @PatrickMassot . Useful for the sphere eversion project and probably duplicates some lemmas from that project. ESTIMATED CHANGES Modified src/analysis/convex/combination.lean + theorem convex.finsum_mem Added src/analysis/convex/partition_of_unity.lean + theorem exists_continuous_forall_mem_convex_of_local + theorem exists_continuous_forall_mem_convex_of_local_const + theorem partition_of_unity.finsum_smul_mem_convex Modified src/geometry/manifold/partition_of_unity.lean + theorem exists_cont_mdiff_forall_mem_convex_of_local + theorem exists_smooth_forall_mem_convex_of_local + theorem exists_smooth_forall_mem_convex_of_local_const + theorem smooth_partition_of_unity.cont_mdiff_finsum_smul + theorem smooth_partition_of_unity.cont_mdiff_smul + theorem smooth_partition_of_unity.finsum_smul_mem_convex + theorem smooth_partition_of_unity.is_subordinate.cont_mdiff_finsum_smul + theorem smooth_partition_of_unity.is_subordinate.smooth_finsum_smul +/- theorem smooth_partition_of_unity.is_subordinate_to_partition_of_unity + theorem smooth_partition_of_unity.smooth_finsum_smul + theorem smooth_partition_of_unity.smooth_smul Modified src/topology/partition_of_unity.lean + theorem bump_covering.locally_finite_tsupport + theorem partition_of_unity.continuous_finsum_smul + theorem partition_of_unity.continuous_smul + theorem partition_of_unity.exists_pos + theorem partition_of_unity.is_subordinate.continuous_finsum_smul + theorem partition_of_unity.locally_finite_tsupport 2022-07-21 16:19:43 f05fdca refactor(set_theory/zfc): make `Class` morally `Set → Prop` (#15248) We use `Class` in place of `Set → Prop` (within the `Class` API), and document this decision. Note that there's no longer much reason to have `Class.to_Set` separately from `Class.mem`. I will suggest inlining both into the `has_mem` instance in a followup PR. See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/ZFC.20definable.20class/near/289194801)). ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean +/- def Class.iota +/- theorem Class.iota_ex +/- theorem Class.iota_val +/- theorem Class.sep_hom +/- def Class.to_Set +/- theorem Class.to_Set_of_Set 2022-07-21 16:19:42 99625b1 feat(set_theory/cardinal/ordinal): basic properties on Beth numbers (#14989) We define Beth cardinals and prove miscellaneous basic properties about them. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.bdd_above_of_small Modified src/set_theory/cardinal/cofinality.lean + theorem cardinal.is_strong_limit_beth Modified src/set_theory/cardinal/continuum.lean + theorem cardinal.beth_one Modified src/set_theory/cardinal/ordinal.lean + theorem cardinal.aleph'_limit + theorem cardinal.aleph_0_le_beth + theorem cardinal.aleph_le_beth + theorem cardinal.aleph_limit + def cardinal.beth + theorem cardinal.beth_le + theorem cardinal.beth_limit + theorem cardinal.beth_lt + theorem cardinal.beth_ne_zero + theorem cardinal.beth_pos + theorem cardinal.beth_strict_mono + theorem cardinal.beth_succ + theorem cardinal.beth_zero Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.bdd_above_of_small + theorem ordinal.is_limit.succ_lt + theorem ordinal.le_sub_of_le - theorem ordinal.small_Iio + theorem ordinal.sub_lt_of_le 2022-07-21 16:19:40 d29aca8 feat(algebraic_topology/dold_kan): technical lemmas about face maps (#14044) This PR introduces technical lemmas about face maps and the null homotopic maps Hσ that will be used in the proof of the Dold-Kan equivalence. ESTIMATED CHANGES Modified src/algebraic_topology/alternating_face_map_complex.lean + theorem algebraic_topology.alternating_face_map_complex.map_f + theorem algebraic_topology.alternating_face_map_complex.obj_X + theorem algebraic_topology.alternating_face_map_complex.obj_d_eq + theorem algebraic_topology.alternating_face_map_complex_map_f + theorem algebraic_topology.alternating_face_map_complex_obj_X + theorem algebraic_topology.alternating_face_map_complex_obj_d Added src/algebraic_topology/dold_kan/faces.lean + theorem algebraic_topology.dold_kan.higher_faces_vanish.comp_Hσ_eq + theorem algebraic_topology.dold_kan.higher_faces_vanish.comp_Hσ_eq_zero + theorem algebraic_topology.dold_kan.higher_faces_vanish.induction + theorem algebraic_topology.dold_kan.higher_faces_vanish.of_comp + theorem algebraic_topology.dold_kan.higher_faces_vanish.of_succ + def algebraic_topology.dold_kan.higher_faces_vanish Modified src/algebraic_topology/dold_kan/homotopies.lean 2022-07-21 13:52:38 72e0e9a doc(data/dfinsupp): improve the docstring for dfinsupp (#15554) This adds a brief comment about notation, and an extended implementation note. ESTIMATED CHANGES Modified src/data/dfinsupp/basic.lean 2022-07-21 13:52:37 8672734 feat(set_theory/zfc/ordinal): more lemmas on transitive sets (#15548) We add `empty_is_transitive`, `is_transitive.inter`, and `is_transitive.sUnion'`. We also add a `variables` block. ESTIMATED CHANGES Modified src/set_theory/zfc/ordinal.lean + theorem Set.empty_is_transitive + theorem Set.is_transitive.sUnion' - theorem Set.is_transitive.sUnion +/- theorem Set.is_transitive.subset_of_mem +/- theorem Set.is_transitive_iff_mem_trans +/- theorem Set.is_transitive_iff_sUnion_subset +/- theorem Set.is_transitive_iff_subset_powerset 2022-07-21 13:52:36 8983bec fix(data/set_like): `coe_sort_trans` should have low priority (#15489) In core Lean, `coe_sort_trans` is given default priority, meaning it takes precedence over `set_like.has_coe_to_sort`. As a consequence, sometimes a weird instance path was chosen, such as `submodule R M → Module R → Type*` rather than the direct path `submodule R M → Type*`, and I believe this can lead to diamonds (including weird universe levels), and in any case to weird defeq checks (which are made extra expensive by occurring in the type). In fact, there are quite a few `has_coe_to_sort` instances that would be useless since they are preceded by a `has_coe`, e.g. `lie_ideal`. Lowering the priority of `coe_sort_trans` below that of `set_like.has_coe_to_sort` should ensure we use the preferred inheritance path. We did the same thing for `coe_fn_trans` in `fun_like/basic.lean`. The consequence is that certain places that (ab)used the weird coercion paths will need to be slightly redefined to use the new path, basically inserting unification hints manually. Those paths were slightly fragile anyway so I don't think that's an important loss compared to the advantages of clarifying. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/ideal_operations.lean Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/of_associative.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean + theorem lie_ideal.coe_bracket_of_module +/- theorem lie_ideal.subsingleton_of_bot Modified src/algebra/lie/weights.lean Modified src/group_theory/sylow.lean Modified src/logic/basic.lean Modified src/model_theory/elementary_maps.lean Modified src/ring_theory/fractional_ideal.lean 2022-07-21 13:52:35 62b5bb7 refactor(field_theory/*): Refactor `normal` to use `is_algebraic` (#15421) This PR refactors `normal` to use `is_algebraic` rather than `is_integral`, as suggested by a TODO comment. I think the motivation is that `is_algebraic` is the preferred language when discussing fields. ESTIMATED CHANGES Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean +/- theorem is_galois.integral Modified src/field_theory/normal.lean + theorem normal.is_algebraic +/- theorem normal.is_integral 2022-07-21 13:52:34 90a44f6 feat(linear_algebra/projective_space/subspace): defines subspaces of a projective space (#15391) This PR defines subspaces of a projective space, and shows that they form a complete lattice under inclusion. In an upcoming PR we show that there is an order-preserving bijection between the lattice of a subspaces of a projective space and the lattice of submodules of the underlying vector space. ESTIMATED CHANGES Added src/linear_algebra/projective_space/subspace.lean + def projectivization.subspace.gi + theorem projectivization.subspace.mem_add + theorem projectivization.subspace.mem_carrier_iff + def projectivization.subspace.span + inductive projectivization.subspace.span_carrier + theorem projectivization.subspace.span_coe + theorem projectivization.subspace.subset_span + structure projectivization.subspace 2022-07-21 13:52:32 976f510 feat(ring_theory/graded_algebra/basic): add lemma `proj_homogeneous_mul` (#15264) added a lemma stating that $(ab)_{i+j}=ab_j$ for homogeneous $a$ with degree $I$ ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/basic.lean + theorem direct_sum.coe_decompose_mul_add_of_left_mem + theorem direct_sum.coe_decompose_mul_add_of_right_mem + theorem direct_sum.decompose_mul_add_left + theorem direct_sum.decompose_mul_add_right 2022-07-21 12:26:57 4a09c73 feat(topology/basic): a condition implying that a sequence of functions locally stabilizes (#15580) For sphere-eversion-project. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem locally_finite.comp_inj_on + theorem locally_finite.exists_forall_eventually_at_top_eventually_eq' + theorem locally_finite.exists_forall_eventually_at_top_eventually_eq + theorem locally_finite.exists_forall_eventually_eq_prod 2022-07-21 10:00:58 6b5a173 feat(logic/nonempty): `pi.nonempty` instance (#15574) Moved from lean-liquid. ESTIMATED CHANGES Modified src/logic/nonempty.lean +/- theorem classical.nonempty_pi 2022-07-21 04:33:08 b5e9ffd chore(scripts): update nolints.txt (#15582) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-21 04:33:07 6b34a40 feat(analysis/normed_space/operator_norm): variant of `continuous_linear_equiv.has_sum` (#15578) ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean 2022-07-21 04:33:06 8ab47c5 feat(analysis/inner_product_space/basic): `orthonormal` version of `linear_independent.coe_range` (#15577) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem orthonormal.coe_range 2022-07-21 04:33:05 eece0d9 feat(combinatorics/simple_graph/connectivity): operations and lemmas about path type (#15156) Adds more theory about the type of paths in a simple graph. From `walks_and_trees` branch. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.path.cons_is_cycle + theorem simple_graph.path.count_edges_eq_one + theorem simple_graph.path.count_support_eq_one + theorem simple_graph.path.loop_eq + theorem simple_graph.path.mk_mem_edges_singleton + theorem simple_graph.path.nodup_support + theorem simple_graph.path.not_mem_edges_of_loop + def simple_graph.path.reverse + def simple_graph.path.singleton 2022-07-21 04:33:04 3ce710a feat(group_theory/subsemigroup/membership): add membership criteria for subsemigroups (#13945) This mimics the membership file for submoniods. However, because we have no `free_semigroup`, many features are missing from the corresponding submonid file. In particular, we have no notion of `subsemigroup.closure`. The reason for adding this now is so that we can develop some of the corresponding API for non-unital subsemirings. - [x] depends on: #13627 ESTIMATED CHANGES Added src/group_theory/subsemigroup/membership.lean + theorem subsemigroup.coe_Sup_of_directed_on + theorem subsemigroup.coe_supr_of_directed + theorem subsemigroup.mem_Sup_of_directed_on + theorem subsemigroup.mem_Sup_of_mem + theorem subsemigroup.mem_sup_left + theorem subsemigroup.mem_sup_right + theorem subsemigroup.mem_supr_of_directed + theorem subsemigroup.mem_supr_of_mem + theorem subsemigroup.mul_mem_sup + theorem subsemigroup.supr_induction' + theorem subsemigroup.supr_induction 2022-07-21 02:26:07 e1eba9f chore(tactic/*): clean up doc tags (#15563) ESTIMATED CHANGES Modified src/tactic/polyrith.lean Modified src/tactic/rewrite_search/frontend.lean 2022-07-21 02:26:06 9696524 chore(algebra/module/injective): golf some proofs (#15534) ESTIMATED CHANGES Modified src/algebra/module/injective.lean 2022-07-21 02:26:05 34d4a9b feat(analysis/normed_space/linear_isometry): `linear_equiv.of_eq` as a `linear_isometry_equiv` (#15471) We also setup `simps` on `linear_isometry` and `linear_isometry_equiv`. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + def linear_isometry.simps.apply + theorem linear_isometry_equiv.coe_of_eq_apply + def linear_isometry_equiv.of_eq + theorem linear_isometry_equiv.of_eq_rfl + theorem linear_isometry_equiv.of_eq_symm + def linear_isometry_equiv.simps.apply + def linear_isometry_equiv.simps.symm_apply Modified src/linear_algebra/basic.lean + theorem linear_equiv.of_eq_rfl 2022-07-21 02:26:04 de04baf feat(data/sum/order): `with_bot α ≃o punit ⊕ₗ α` and `with_top α ≃o α ⊕ₗ punit` (#15370) ESTIMATED CHANGES Modified src/data/sum/order.lean + def with_bot.order_iso_punit_sum_lex + theorem with_bot.order_iso_punit_sum_lex_bot + theorem with_bot.order_iso_punit_sum_lex_coe + theorem with_bot.order_iso_punit_sum_lex_symm_inl + theorem with_bot.order_iso_punit_sum_lex_symm_inr + def with_top.order_iso_sum_lex_punit + theorem with_top.order_iso_sum_lex_punit_coe + theorem with_top.order_iso_sum_lex_punit_symm_inl + theorem with_top.order_iso_sum_lex_punit_symm_inr + theorem with_top.order_iso_sum_lex_punit_top 2022-07-21 01:28:45 73cf56f feat(set_theory/zfc/basic): `Set.mem_insert → Set.mem_insert_iff`, add `Set.mem_insert` and `Set.mem_insert_of_mem` (#15573) The name `Set.mem_insert_iff` matches `set.mem_insert_iff`. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean +/- theorem Set.mem_insert + theorem Set.mem_insert_iff + theorem Set.mem_insert_of_mem 2022-07-21 00:27:46 bff4172 feat(field_theory/adjoin): The compositum of finitely many finite dimensional intermediate fields is finite dimensional, finset version (#15426) This PR adds a finset version of `finite_dimensional_supr_of_finite`, since `⨆ i ∈ s` seems to be the best way to talk about finite compositums in practice. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean 2022-07-21 00:27:46 9e4e72a feat(category_theory/preadditive): left exactness of certain hom functors (#15096) ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Modified src/category_theory/linear/yoneda.lean Modified src/category_theory/preadditive/yoneda.lean 2022-07-20 23:01:43 4eacd60 feat(analysis/asymptotics): add `is_o*.of_pow` (#15568) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O.of_pow + theorem asymptotics.is_O_with.of_pow + theorem asymptotics.is_o.of_pow 2022-07-20 21:46:00 08c1fbc chore(measure_theory/measure/finite_measure_weak_convergence): golf (#15576) ESTIMATED CHANGES Modified src/measure_theory/measure/finite_measure_weak_convergence.lean +/- theorem measure_theory.finite_measure.zero.mass 2022-07-20 21:45:59 c9f4840 refactor(analysis/special_functions/pow): assume `n ≠ 0` instead of `0 < n` (#15553) ESTIMATED CHANGES Modified archive/imo/imo2001_q2.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/special_functions/pow.lean +/- theorem complex.cpow_nat_inv_pow +/- theorem nnreal.pow_nat_rpow_nat_inv +/- theorem nnreal.rpow_nat_inv_pow_nat +/- theorem real.pow_nat_rpow_nat_inv +/- theorem real.rpow_nat_inv_pow_nat 2022-07-20 21:45:57 2f5afa1 feat(tactic/compute_degree + test/compute_degree): introduce a tactic for proving `f.(nat_)degree ≤ d` (#14762) This PR is a prequel to #14040. It introduces a simpler step than the actual computation of the degree. This step is used by the "main" tactic `compute_degree` defined in #14040. To help the reviewing process, I split this PR from the other one. For a very small sample of some golfing that could be done with this tactic, see [this diff](https://github.com/leanprover-community/mathlib/compare/adomani_compute_degree_le..adomani_compute_degree_le_golf), from #14776. ESTIMATED CHANGES Added src/tactic/compute_degree.lean Added test/compute_degree.lean 2022-07-20 19:03:33 382acc1 feat(geometry/manifold): generalize some lemmas from `smooth` to `cont_mdiff` (#15560) Also add `*_within_at`, `*_at`, and `*_on` versions. ESTIMATED CHANGES Modified src/geometry/manifold/algebra/monoid.lean + theorem cont_mdiff.mul + theorem cont_mdiff_at.mul + theorem cont_mdiff_at_finset_prod' + theorem cont_mdiff_at_finset_prod + theorem cont_mdiff_finprod + theorem cont_mdiff_finprod_cond + theorem cont_mdiff_finset_prod' + theorem cont_mdiff_finset_prod + theorem cont_mdiff_on.mul + theorem cont_mdiff_on_finset_prod' + theorem cont_mdiff_on_finset_prod + theorem cont_mdiff_within_at.mul + theorem cont_mdiff_within_at_finset_prod' + theorem cont_mdiff_within_at_finset_prod +/- theorem smooth.mul + theorem smooth_at.mul + theorem smooth_at_finset_prod' + theorem smooth_at_finset_prod +/- theorem smooth_finprod +/- theorem smooth_finprod_cond +/- theorem smooth_finset_prod' +/- theorem smooth_finset_prod +/- theorem smooth_on.mul + theorem smooth_on_finset_prod' + theorem smooth_on_finset_prod + theorem smooth_within_at.mul + theorem smooth_within_at_finset_prod' + theorem smooth_within_at_finset_prod Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff.smul + theorem cont_mdiff_at.smul + theorem cont_mdiff_on.cont_mdiff_at + theorem cont_mdiff_on.smul + theorem cont_mdiff_within_at.smul +/- theorem smooth.smul +/- theorem smooth_at.smul - theorem smooth_at_univ + theorem smooth_on.smooth_at +/- theorem smooth_on.smul +/- theorem smooth_on_univ + theorem smooth_within_at.smul + theorem smooth_within_at_univ 2022-07-20 19:03:32 6fed037 refactor(logic/encodable/small): migrate to `countable` (#15557) ESTIMATED CHANGES Renamed src/logic/encodable/small.lean to src/data/countable/small.lean Modified src/logic/small.lean 2022-07-20 19:03:31 0c79da0 feat(data/nat/pairing): basic bounds on `mkpair` (#15539) Needed for #15505. ESTIMATED CHANGES Modified src/data/nat/pairing.lean + theorem nat.add_le_mkpair + theorem nat.max_sq_add_min_le_mkpair + theorem nat.mkpair_lt_max_add_one_sq + theorem nat.unpair_add_le 2022-07-20 19:03:30 ebf7343 feat(analysis/normed*): add instances and lemmas (#15515) * Add some `coe_*` lemmas. * Add `is_scalar_tower` and `is_smul_class` instances. ESTIMATED CHANGES Modified src/algebra/group/units.lean +/- theorem units.inv_unique Modified src/algebra/hom/units.lean + theorem units.coe_div Modified src/analysis/normed/field/unit_ball.lean + theorem coe_div_unit_sphere + theorem coe_inv_unit_sphere + theorem coe_mul_unit_ball + theorem coe_mul_unit_closed_ball + theorem coe_mul_unit_sphere + theorem coe_one_unit_closed_ball + theorem coe_one_unit_sphere + theorem coe_pow_unit_closed_ball + theorem coe_pow_unit_sphere + theorem coe_zpow_unit_sphere + theorem unit_sphere_to_units_apply_coe + theorem unit_sphere_to_units_injective Modified src/analysis/normed_space/ball_action.lean 2022-07-20 19:03:29 3838b0e refactor(order/boolean_algebra): Get rid of `boolean_algebra.core` (#15302) The current setup is problematic for two reasons: * `boolean_algebra.core` is part of the typeclass hierarchy even though it is mathematically the same as `boolean_algebra`. * `boolean_algebra` contains the redundant fields `sup_inf_sdiff` and `inf_inf_sdiff`. The easiest fix is to respectively: * delete `boolean_algebra.core` and use default values in the `boolean_algebra` fields. * not make `boolean_algebra` extend `generalized_boolean_algebra` but instead manually provide the forgetful instance. ESTIMATED CHANGES Modified src/algebra/ring/boolean_ring.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/analysis/normed_space/M_structure.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/data/fintype/basic.lean Modified src/measure_theory/measurable_space.lean Modified src/model_theory/definability.lean Modified src/order/atoms.lean Modified src/order/boolean_algebra.lean - def boolean_algebra.core.sdiff - theorem boolean_algebra.core.sdiff_eq - def boolean_algebra.of_core +/- theorem compl_inf_eq_bot +/- theorem compl_sup_eq_top +/- theorem inf_compl_eq_bot +/- theorem sdiff_eq +/- theorem sup_compl_eq_top 2022-07-20 19:03:28 f01c132 feat(data/sym/basic): combinatorial equivalence for `sym (option α) n.succ` (#15192) Adds `sym_option_succ_equiv`. ESTIMATED CHANGES Modified src/data/sym/basic.lean + def sym_option_succ_equiv.decode + theorem sym_option_succ_equiv.decode_encode + def sym_option_succ_equiv.encode + theorem sym_option_succ_equiv.encode_decode + theorem sym_option_succ_equiv.encode_of_none_mem + theorem sym_option_succ_equiv.encode_of_not_none_mem + def sym_option_succ_equiv 2022-07-20 19:03:27 80ae52a refactor(data/nat/factorization): Change definition of `factorization` to be computable (#12301) This PR changes the definition of `data.nat.factorization` to not depend on `multiset.to_finsupp` and instead to depend on `padic_val_nat`. This sidesteps the computability issues with finsupp discussed in [this thread](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/.60ite.60.20with.20multiple.20decidable.20instances/near/272409877). To deal with the changed imports this PR also moves some material from `number_theory/padics/padic_val` and `ring_theory/multiplicity` into `data/nat/factorization/basic`. ESTIMATED CHANGES Modified src/analysis/special_functions/log/basic.lean Modified src/data/nat/choose/factorization.lean Modified src/data/nat/factorization/basic.lean + theorem nat.eq_iff_prime_padic_val_nat_eq + def nat.factorization + theorem nat.factorization_def + theorem nat.factorization_eq_factors_multiset + theorem nat.multiplicity_eq_factorization + theorem nat.prod_factors_gcd_mul_prod_factors_mul + theorem nat.prod_pow_prime_padic_val_nat Modified src/data/nat/totient.lean Modified src/group_theory/exponent.lean Modified src/number_theory/padics/padic_val.lean + theorem dvd_iff_padic_val_nat_ne_zero - theorem padic_val_nat_eq_factorization - theorem prod_pow_prime_padic_val_nat Modified src/ring_theory/multiplicity.lean - theorem multiplicity_eq_factorization - theorem prod_factors_gcd_mul_prod_factors_mul 2022-07-20 16:22:57 c26a844 feat(order/succ_pred/basic): `succ_le_succ_iff`, etc. taking `¬ is_max` hypotheses (#15536) ESTIMATED CHANGES Modified src/order/succ_pred/basic.lean + theorem order.succ_eq_succ_iff_of_not_is_max + theorem order.succ_le_succ_iff_of_not_is_max + theorem order.succ_lt_succ_iff_of_not_is_max 2022-07-20 16:22:56 f9153b8 feat(tactic/attribute): add `expand_exists` (#15498) Adds an attribute `expand_exists`, which takes a proof that something exists with some property, and outputs a value using `classical.some`, and a proof that it has that property using `classical.some_spec`. Closes #11682 ESTIMATED CHANGES Modified src/tactic/default.lean Added src/tactic/expand_exists.lean Added test/expand_exists.lean + theorem dependent_type_exists + def dependent_type_res + theorem dependent_type_spec_res + theorem nat_greater_exists + theorem nat_greater_exists₂ + theorem nat_greater_nosplit_spec_res + theorem nat_greater_spec_res + theorem nat_greater_split_spec_lt_res + theorem nat_greater_split_spec_neq_res 2022-07-20 16:22:54 1dd65b6 refactor(order/rel_classes): ditch `is_extensional` (#15373) This typeclass was barely used anyways, and the instances that existed for it had unnecessary assumptions. We replace it by the theorem `extensional_of_trichotomous_of_irrefl`. A relevant short discussion on this typeclass: [link](https://github.com/leanprover-community/mathlib/pull/15371#issuecomment-1185138800) ESTIMATED CHANGES Modified src/order/initial_seg.lean - theorem initial_seg.unique_of_extensional + theorem initial_seg.unique_of_trichotomous_of_irrefl Modified src/order/rel_classes.lean + theorem extensional_of_trichotomous_of_irrefl 2022-07-20 16:22:53 309f759 feat(set_theory/ordinal/basic): dot notation lemmas + golf (#15348) We introduce dot notation lemmas for proving something of the form `type r < type s` or `type r ≤ type s` by providing a principal segment, an initial segment, or a relation embedding. We rename `type_le` and `type_le'` to `type_le_iff` and `type_le_iff'` for consistency with `type_lt_iff` (which can't be renamed to `type_lt`, as this is an existing theorem about `type (<)`). We could introduce `lift` variants of these, but I'd rather wait until #15041 is merged, at which point I can do the analogous refactor on ordinals. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean + theorem initial_seg.ordinal_type_le - theorem ordinal.type_le' - theorem ordinal.type_le + theorem ordinal.type_le_iff' + theorem ordinal.type_le_iff + theorem principal_seg.ordinal_type_lt + theorem rel_embedding.ordinal_type_le 2022-07-20 16:22:52 5c88274 feat(set_theory/zfc): ZFC sets are small types (#15320) ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean + theorem pSet.func_mem 2022-07-20 16:22:51 6102220 style(set_theory/ordinal/cantor_normal_form): rename hypotheses (#15229) We rename hypotheses with names like `o0`, `b0`, and `b1` to more standard `ho` and `hb`. ESTIMATED CHANGES Modified src/set_theory/ordinal/cantor_normal_form.lean +/- theorem ordinal.CNF_foldr +/- theorem ordinal.CNF_lt_snd +/- theorem ordinal.CNF_ne_zero +/- theorem ordinal.CNF_rec_ne_zero +/- theorem ordinal.CNF_rec_zero +/- theorem ordinal.CNF_snd_lt +/- theorem ordinal.one_CNF 2022-07-20 14:32:43 4b1c83f feat(data/pfun): tooling to help reasoning about pfun domains (#15313) Tooling to help reasoning about pfun domains. Helps solving problems such as: ```lean -- Informal: Find the domain of the function $g(x) = \sqrt{x-2}$. Express your answer using intervals notation. example : (pfun.sqrt.comp $ pfun.lift (λ x : ℝ, x - 2)).dom = set.Ici 2 := begin have h₀ : (pfun.sqrt).dom = set.Ici 0, { refl }, simp only [pfun.lift_eq_coe, pfun.dom_comp], rw [h₀, pfun.coe_preimage], ext, simp only [set.preimage_sub_const_Ici, zero_add], end ``` ESTIMATED CHANGES Modified src/data/pfun.lean + theorem pfun.coe_preimage + theorem pfun.dom_mk 2022-07-20 13:35:43 a1a1fbd feat(set_theory/zfc/basic): `⊆` is reflexive, transitive, antisymmetric (#15551) This gives us access to the `subset_refl`, `subset_trans`, `subset_antisymm` lemmas defined elsewhere. ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean 2022-07-20 13:35:42 7ee53e0 chore(probability_mass_function/uniform): Move some constructions to a new file (#15500) Move uniform `pmf` constructions to a seperate file. ESTIMATED CHANGES Modified src/probability/probability_mass_function/constructions.lean - theorem pmf.mem_support_of_multiset_iff - theorem pmf.mem_support_uniform_of_finset_iff - theorem pmf.mem_support_uniform_of_fintype - def pmf.of_multiset - theorem pmf.of_multiset_apply - theorem pmf.of_multiset_apply_of_not_mem - theorem pmf.support_of_multiset - theorem pmf.support_uniform_of_finset - theorem pmf.support_uniform_of_fintype - theorem pmf.to_measure_of_multiset_apply - theorem pmf.to_measure_uniform_of_finset_apply - theorem pmf.to_measure_uniform_of_fintype_apply - theorem pmf.to_outer_measure_of_multiset_apply - theorem pmf.to_outer_measure_uniform_of_finset_apply - theorem pmf.to_outer_measure_uniform_of_fintype_apply - def pmf.uniform_of_finset - theorem pmf.uniform_of_finset_apply - theorem pmf.uniform_of_finset_apply_of_mem - theorem pmf.uniform_of_finset_apply_of_not_mem - def pmf.uniform_of_fintype - theorem pmf.uniform_of_fintype_apply Added src/probability/probability_mass_function/uniform.lean + theorem pmf.mem_support_of_multiset_iff + theorem pmf.mem_support_uniform_of_finset_iff + theorem pmf.mem_support_uniform_of_fintype + def pmf.of_multiset + theorem pmf.of_multiset_apply + theorem pmf.of_multiset_apply_of_not_mem + theorem pmf.support_of_multiset + theorem pmf.support_uniform_of_finset + theorem pmf.support_uniform_of_fintype + theorem pmf.to_measure_of_multiset_apply + theorem pmf.to_measure_uniform_of_finset_apply + theorem pmf.to_measure_uniform_of_fintype_apply + theorem pmf.to_outer_measure_of_multiset_apply + theorem pmf.to_outer_measure_uniform_of_finset_apply + theorem pmf.to_outer_measure_uniform_of_fintype_apply + def pmf.uniform_of_finset + theorem pmf.uniform_of_finset_apply + theorem pmf.uniform_of_finset_apply_of_mem + theorem pmf.uniform_of_finset_apply_of_not_mem + def pmf.uniform_of_fintype + theorem pmf.uniform_of_fintype_apply 2022-07-20 11:04:58 40e7791 feat(set_theory/zfc/basic): add `refl`, `symm`, `trans` attributes to `equiv` lemmas (#15549) ESTIMATED CHANGES Modified src/set_theory/zfc/basic.lean 2022-07-20 11:04:57 e2e097c refactor(data/nat/part_enat): move `complete_linear_order` instance (#15543) ESTIMATED CHANGES Modified src/data/nat/lattice.lean Modified src/data/nat/part_enat.lean 2022-07-20 11:04:55 327259a refactor(data/dfinsupp/basic): Improve definitional equalities of coercions (#15521) This means that `dfinsupp.coe_add` etc are true by definition, rather than requiring the application of `quotient.induction` first. The key change is that the underlying function is no longer "hidden" under the quotient, as it does not need to be. One motivation for this is to make the API more similar to that of `finsupp`. This change eliminates `dfinsupp.pre`, instead using `{s : multiset ι // ∀ i, i ∈ s ∨ to_fun i = 0}` directly. We no longer even need to create a `setoid` instance, since we can just use `trunc`. While adjusting some proofs in `data/finsupp/interval` to use the new definition, this ended up eliminating some decidable arguments. I don't think that is a consequence of this redefinition, and is incidental cleanup that could have been performed separately. ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean +/- theorem direct_sum.add_apply +/- theorem direct_sum.sub_apply Modified src/data/dfinsupp/basic.lean + theorem dfinsupp.coe_mk' - theorem dfinsupp.coe_pre_mk +/- theorem dfinsupp.coe_update + def dfinsupp.comap_domain' - def dfinsupp.comap_domain'[Π +/- def dfinsupp.erase +/- def dfinsupp.extend_with +/- def dfinsupp.filter +/- def dfinsupp.map_range - structure dfinsupp.pre +/- def dfinsupp.subtype_domain + theorem dfinsupp.support_mk'_subset +/- theorem dfinsupp.support_update_ne_zero + theorem dfinsupp.to_fun_eq_coe +/- theorem dfinsupp.update_eq_erase +/- theorem dfinsupp.update_self +/- def dfinsupp.zip_with + structure dfinsupp - def dfinsupp Modified src/data/dfinsupp/interval.lean +/- theorem dfinsupp.support_range_Icc_subset Modified src/data/dfinsupp/order.lean Modified src/data/finsupp/to_dfinsupp.lean 2022-07-20 11:04:54 dcb4b68 feat(category_theory/shapes/pullbacks): Pullbacks isomorphic to the opposite of pushouts (#15455) ESTIMATED CHANGES Modified src/category_theory/limits/opposites.lean + def category_theory.limits.pullback_iso_unop_pushout + theorem category_theory.limits.pullback_iso_unop_pushout_hom_inl + theorem category_theory.limits.pullback_iso_unop_pushout_hom_inr + theorem category_theory.limits.pullback_iso_unop_pushout_inv_fst + theorem category_theory.limits.pullback_iso_unop_pushout_inv_snd + def category_theory.limits.pushout_iso_unop_pullback + theorem category_theory.limits.pushout_iso_unop_pullback_inl_hom + theorem category_theory.limits.pushout_iso_unop_pullback_inr_hom + theorem category_theory.limits.pushout_iso_unop_pullback_inv_fst + theorem category_theory.limits.pushout_iso_unop_pullback_inv_snd Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.pullback_cone.fst_colimit_cocone + theorem category_theory.limits.pullback_cone.snd_colimit_cocone + theorem category_theory.limits.pullback_cone.π_app_left + theorem category_theory.limits.pullback_cone.π_app_right + theorem category_theory.limits.pushout_cocone.inl_colimit_cocone + theorem category_theory.limits.pushout_cocone.inr_colimit_cocone + theorem category_theory.limits.pushout_cocone.ι_app_left + theorem category_theory.limits.pushout_cocone.ι_app_right 2022-07-20 11:04:53 4359e48 feat(field_theory/intermediate_field): `dsimp` lemma (#15188) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_map 2022-07-20 11:04:52 edaaaa4 feat(combinatorics/simple_graph/trails): Euler's condition for trails (#15158) Adds theory for trails and Eulerian trails and proves that Eulerian trails imply a condition on vertex degrees. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.incidence_finset_eq_filter Added src/combinatorics/simple_graph/trails.lean + theorem simple_graph.walk.is_eulerian.card_filter_odd_degree + theorem simple_graph.walk.is_eulerian.card_odd_degree + theorem simple_graph.walk.is_eulerian.edges_finset_eq + theorem simple_graph.walk.is_eulerian.even_degree_iff + def simple_graph.walk.is_eulerian.fintype_edge_set + theorem simple_graph.walk.is_eulerian.is_trail + theorem simple_graph.walk.is_eulerian.mem_edges_iff + def simple_graph.walk.is_eulerian + theorem simple_graph.walk.is_eulerian_iff + def simple_graph.walk.is_trail.edges_finset + theorem simple_graph.walk.is_trail.even_countp_edges_iff + theorem simple_graph.walk.is_trail.is_eulerian_of_forall_mem 2022-07-20 08:38:51 261c24c feat(data/nat/factorization/basic): add lemma `factorization_eq_card_pow_dvd` (#15014) Adds lemma `factorization_eq_card_pow_dvd (pp : p.prime) : n.factorization p = ((Ico 1 n).filter (λ i, p ^ i ∣ n)).card` This is a counterpart to `multiplicity_eq_card_pow_dvd` defined and proved in terms of `factorization`. Also proves some upper bounds on `n.factorization p`: `factorization_lt (hn : n ≠ 0) : n.factorization p < n` `factorization_le_of_le_pow (hb : n ≤ p ^ b) : n.factorization p ≤ b` ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean + theorem nat.Icc_factorization_eq_pow_dvd + theorem nat.Ico_filter_pow_dvd_eq + theorem nat.factorization_eq_card_pow_dvd + theorem nat.factorization_le_of_le_pow + theorem nat.factorization_lt + theorem nat.set_of_pow_dvd_eq_Icc_factorization Modified src/data/nat/pow.lean + theorem nat.lt_of_pow_dvd_right 2022-07-20 07:41:14 ffc640f feat(ring_theory/derivation): Derivations into square-zero ideals corresponds to liftings. (#15244) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + def derivation_to_square_zero_equiv_lift + def derivation_to_square_zero_of_lift + theorem derivation_to_square_zero_of_lift_apply + def diff_to_ideal_of_quotient_comp_eq + theorem diff_to_ideal_of_quotient_comp_eq_apply + def lift_of_derivation_to_square_zero + theorem lift_of_derivation_to_square_zero_apply + theorem lift_of_derivation_to_square_zero_mk_apply 2022-07-20 06:04:55 73e41c2 feat(analysis/inner_product_space/[pi_L2, l2_space]): compute inner product in a given [orthonormal, hilbert] basis (#15514) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean 2022-07-20 03:24:13 be93cac feat(data/list): accessing list with fallback (#15138) Reimplement `list.inth` in terms of the new `list.nthd`. Implementation wise, it is "faster" because it doesn't have to go through `option.iget` on the way anymore. On the way to computable list-based polynomials ESTIMATED CHANGES Modified src/computability/primrec.lean + theorem primrec.list_nthd Modified src/computability/turing_machine.lean Modified src/data/list/basic.lean + def list.decidable_nthd_nil_ne + theorem list.inth_append + theorem list.inth_append_right + theorem list.inth_cons_succ + theorem list.inth_cons_zero + theorem list.inth_eq_default + theorem list.inth_eq_iget_nth + theorem list.inth_eq_nth_le + theorem list.inth_nil + theorem list.nthd_append + theorem list.nthd_append_right + theorem list.nthd_cons_succ + theorem list.nthd_cons_zero + theorem list.nthd_default_eq_inth + theorem list.nthd_eq_default + theorem list.nthd_eq_get_or_else_nth + theorem list.nthd_eq_nth_le + theorem list.nthd_nil + theorem list.nthd_repeat_default_eq + theorem list.nthd_singleton_default_eq Modified src/data/list/defs.lean +/- def list.inth + def list.nthd Modified src/data/option/basic.lean + theorem option.get_or_else_default_eq_iget 2022-07-20 01:47:17 c31b1f3 chore(topology/algebra): cleanup (#15301) * Drop instances about `sub*.topological_closure`. Normal `sub*` instances apply. * Add `units.inducing_embed_product` and `units.embedding_embed_product`. * Add `inducing.has_continuous_mul`, `inducing.has_continuous_inv`, and `inducing.topological_group`. * Use new lemmas to golf some instances. * Don't use `section .. variables` for assumptions that are used only once. * Reuse `topological_group_inf`, `topological_group_Inf` in `group_topology.has_inf`, `group_topology.has_Inf`. ESTIMATED CHANGES Modified src/topology/algebra/algebra.lean Modified src/topology/algebra/constructions.lean + theorem units.embedding_embed_product + theorem units.inducing_embed_product Modified src/topology/algebra/group.lean +/- theorem has_continuous_inv_Inf +/- theorem has_continuous_inv_inf +/- theorem has_continuous_inv_infi + theorem inducing.has_continuous_inv +/- theorem topological_group_Inf - theorem topological_group_induced +/- theorem topological_group_inf +/- theorem topological_group_infi Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/monoid.lean +/- theorem has_continuous_mul_Inf +/- theorem has_continuous_mul_induced +/- theorem has_continuous_mul_inf +/- theorem has_continuous_mul_infi + theorem inducing.has_continuous_mul Modified src/topology/algebra/ring.lean 2022-07-20 01:47:16 7059323 feat(set_theory/zfc/ordinal): transitive sets (#15288) We define transitive sets, as an initial development towards von Neumann ordinals. ESTIMATED CHANGES Renamed src/set_theory/zfc.lean to src/set_theory/zfc/basic.lean + theorem Set.mem_sUnion_of_mem Added src/set_theory/zfc/ordinal.lean + theorem Set.is_transitive.sUnion + theorem Set.is_transitive.subset_of_mem + def Set.is_transitive + theorem Set.is_transitive_iff_mem_trans + theorem Set.is_transitive_iff_sUnion_subset + theorem Set.is_transitive_iff_subset_powerset 2022-07-19 23:27:56 54cb848 refactor(data/set/countable): rename some lemmas (#15527) * `set.countable_iff_exists_surjective` -> `set.countable_iff_exists_subset_range`; * `set.countable_iff_exists_surjective_to_subtype` -> `set.countable_iff_exists_surjective`; * `set.countable.exists_surjective` -> `set.countable.exists_eq_range`. ESTIMATED CHANGES Modified src/data/set/countable.lean + theorem set.countable.exists_eq_range - theorem set.countable.exists_surjective + theorem set.countable_iff_exists_subset_range - theorem set.countable_iff_exists_surjective_to_subtype Modified src/model_theory/finitely_generated.lean Modified src/model_theory/fraisse.lean Modified src/order/filter/bases.lean Modified src/topology/bases.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/kuratowski.lean 2022-07-19 23:27:55 df2ebcf feat(logic/encodable/basic): an encodable type is countable (#15524) Also simplify `nonempty (encodable X)` to `countable X`. ESTIMATED CHANGES Modified src/logic/encodable/basic.lean + theorem encodable.nonempty_encodable 2022-07-19 23:27:54 cfc157d chore(analysis/locally_convex/with_seminorms): change `with_seminorms` to a structure (#15388) Change the class `with_seminorms` into a `structure`. The typeclass was useless in the first case since it can be only infered in trivial cases. Now it is somehow similar to how `has_basis` behaves. ESTIMATED CHANGES Modified src/analysis/locally_convex/weak_dual.lean + theorem linear_map.weak_bilin_with_seminorms Modified src/analysis/locally_convex/with_seminorms.lean - theorem bornology.is_vonN_bounded_iff_finset_seminorm_bounded +/- theorem bornology.is_vonN_bounded_iff_seminorm_bounded + theorem norm_with_seminorms +/- theorem seminorm.continuous_from_bounded - theorem seminorm_family.has_basis +/- theorem seminorm_family.to_locally_convex_space +/- theorem seminorm_family.with_seminorms_eq + theorem with_seminorms.has_basis + theorem with_seminorms.is_vonN_bounded_iff_finset_seminorm_bounded + structure with_seminorms 2022-07-19 23:27:53 7178643 feat(tactic/linear_combination): allow linear_combination to leave goal open (#15319) Previously, `linear_combination` was a finishing tactic: it would close the goal, or fail. This PR changes it to be more of a simplification tactic. The semantics are "subtract this linear combination from the goal and normalize." In the case where the linear combination *does* close the goal, this behavior is the same as before. This is a very convenient way to see what's missing from your linear combination. I imagine that people will often look at the remaining expression and modify the combination until the goal is closed. By request of @hrmacbeth the default normalizer is `ring SOP`. cc @digama0 ESTIMATED CHANGES Modified src/tactic/linear_combination.lean + theorem linear_combo.eq_zero_of_sub_eq_zero Modified src/tactic/polyrith.lean Modified test/linear_combination.lean 2022-07-19 21:09:10 2220b0c chore(data/buffer/parser/numeral): new int and rat parsers don't need to be meta (#15535) ESTIMATED CHANGES Modified src/data/buffer/parser/numeral.lean + def parser.int + def parser.rat 2022-07-19 21:09:09 3c33aba ci(.github/workflows/*): Make build step fail if lean returns nonzero value (#15520) Currently, when building mathlib, if the second `lean --make src` returns a nonzero value, say due to an out-of-memory error, this value will be masked by the pipe, causing the build step to appear to succeed. The problem will then show up down the line, say in linting. This bit us in lean-liquid. This change causes the build step to fail if the `lean --make` command fails. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2022-07-19 21:09:08 3788b07 refactor(logic/equiv/nat): remove `equiv.nat_prod_nat_equiv_nat` (#15509) This is a duplicate of `nat.mkpair_equiv`. ESTIMATED CHANGES Modified src/data/countable/basic.lean Modified src/logic/equiv/nat.lean - def equiv.nat_prod_nat_equiv_nat Modified src/measure_theory/measure/outer_measure.lean 2022-07-19 21:09:07 4d35264 feat(ring_theory/valuation): Properties of valuation rings. (#15093) ESTIMATED CHANGES Modified src/ring_theory/valuation/valuation_ring.lean + theorem function.surjective.valuation_ring + theorem valuation_ring.dvd_total + theorem valuation_ring.iff_dvd_total + theorem valuation_ring.iff_ideal_total + theorem valuation_ring.iff_is_integer_or_is_integer + theorem valuation_ring.iff_local_bezout_domain + theorem valuation_ring.is_integer_or_is_integer + theorem valuation_ring.unique_irreducible 2022-07-19 18:28:16 7c916a6 feat(set_theory/ordinal/arithmetic): `pred 0 = 0` (#15533) ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.pred_eq_iff_not_succ' + theorem ordinal.pred_zero 2022-07-19 18:28:15 be6a408 chore(probability/probability_mass_function): move folder into probability (#15525) ESTIMATED CHANGES Renamed src/measure_theory/probability_mass_function/basic.lean to src/probability/probability_mass_function/basic.lean Renamed src/measure_theory/probability_mass_function/constructions.lean to src/probability/probability_mass_function/constructions.lean Renamed src/measure_theory/probability_mass_function/monad.lean to src/probability/probability_mass_function/monad.lean 2022-07-19 18:28:14 df5297a feat(data/list/basic): when drop_while and take_while hold (#15472) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.drop_while_eq_nil_iff + theorem list.drop_while_nth_le_zero_not + theorem list.mem_take_while_imp + theorem list.take_while_eq_nil_iff + theorem list.take_while_eq_self_iff + theorem list.take_while_idem + theorem list.take_while_take_while 2022-07-19 18:28:13 5306f2d refactor(algebra/punit_instances): Move order instances (#15465) The location of those instances means that order files need to pull out a bunch of algebra to use the (trivial) order structures on `punit`. This moves the `complete_boolean_algebra` instance to `order.complete_boolean_algebra` and splits off the `boolean_algebra` and `linear_order` instances. ESTIMATED CHANGES Modified src/algebra/punit_instances.lean - theorem punit.Inf_eq - theorem punit.Sup_eq - theorem punit.bot_eq - theorem punit.compl_eq - theorem punit.inf_eq - theorem punit.not_lt - theorem punit.sdiff_eq - theorem punit.sup_eq - theorem punit.top_eq Modified src/order/basic.lean + theorem punit.max_eq + theorem punit.min_eq + theorem punit.not_lt Modified src/order/boolean_algebra.lean + theorem punit.bot_eq + theorem punit.compl_eq + theorem punit.inf_eq + theorem punit.sdiff_eq + theorem punit.sup_eq + theorem punit.top_eq Modified src/order/category/Preorder.lean Modified src/order/complete_boolean_algebra.lean + theorem punit.Inf_eq + theorem punit.Sup_eq 2022-07-19 18:28:12 6e8c150 feat(data/nat/basic): add recursion principle `even_odd_rec` as a wrapper around `binary_rec` (#15457) This is just a wrapper around `nat.binary_rec`, so that the subsequent reasoning after invoking this recursion principle can remain in the familiar world of `ℕ` and avoids having to switch to dealing with `bit0` and `bit1`. ESTIMATED CHANGES Modified src/data/nat/basic.lean + def nat.even_odd_rec + theorem nat.even_odd_rec_even + theorem nat.even_odd_rec_odd + theorem nat.even_odd_rec_zero 2022-07-19 18:28:11 5e114a3 feat(set_theory/ordinal/arithmetic): more log lemmas (#15447) We prove a bunch of lemmas on the ordinal logarithm that are relevant for Cantor normal forms. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.div_opow_log_lt + theorem ordinal.div_pos + theorem ordinal.log_eq_zero + theorem ordinal.log_mod_opow_log_lt_log_self +/- theorem ordinal.log_opow + theorem ordinal.log_pos +/- theorem ordinal.lt_div 2022-07-19 18:28:10 9137502 chore(topology/uniform_space/basic): rename `symmetric_rel_inter` to `symmetric_rel.inter` (#15441) Also add `symmetric_rel.eq` ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem symmetric_rel.eq + theorem symmetric_rel.inter - theorem symmetric_rel_inter 2022-07-19 18:28:09 65a44e6 feat(analysis/normed_space/operator_norm): add 2 new versions of `op_norm_le_*` (#15417) * `continuous_linear_map.op_norm_le_bound'` requires an estimate on `∥f x∥` for any `x`, `∥x∥ ≠ 0`; * `continuous_linear_map.op_norm_le_of_unit_norm` works only for real linear map and requires that `∥f x∥ ≤ C` for all `x`, `∥x∥ = 1`. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_nnnorm_le_bound' + theorem continuous_linear_map.op_nnnorm_le_of_unit_nnnorm + theorem continuous_linear_map.op_norm_le_bound' + theorem continuous_linear_map.op_norm_le_of_unit_norm 2022-07-19 18:28:08 86597b3 doc(set_theory/game/nim): update module docs (#15406) We update the module docs to reflect that you should use `to_left_moves_nim` and `to_right_moves_nim` to interface with the nim API, instead of using the raw definition (which has the problems the old docs mentioned). ESTIMATED CHANGES Modified src/set_theory/game/nim.lean 2022-07-19 18:28:07 d3051b1 feat(order/initial_seg): remove `nolint` from `initial_seg` (#15374) ESTIMATED CHANGES Modified src/order/initial_seg.lean 2022-07-19 18:28:06 f73beff feat(algebra/order/monoid): add lemmas `map_add` for `with_bot/top` (#15300) This PR shows that a map that preserves addition on a type with addition, also preserves addition on `with_bot/top`. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean 2022-07-19 18:28:05 101555b refactor(data/real/ennreal): redefine `ennreal.to_nnreal` in terms of `with_top.untop'` (#15247) * redefine `ennreal.to_nnreal` as `with_top.untop' 0`; * use lambda function instead of `id` for identity coercions of `nat` and `int`; * move `with_top.add_monoid_with_one` and `with_bot.add_monoid_with_one` to `algebra.order.monoid`, add commutative version; * generalize `ennreal.to_nnreal_mul` to `with_top`. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean Modified src/algebra/order/ring.lean + theorem with_top.untop'_zero_mul Modified src/data/int/basic.lean Modified src/data/nat/basic.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.to_nnreal_mul_top +/- theorem ennreal.to_nnreal_top_mul 2022-07-19 18:28:04 93fbab6 feat(data/finsupp/big_operators): sum of finsupp and their support (#15155) With some additional API for pairwise on multisets and coerced lists On the way to computable list-based polynomials ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_val Modified src/data/finset/basic.lean + theorem list.to_finset_coe Modified src/data/finset/lattice.lean + theorem list.foldr_inf_eq_inf_to_finset + theorem list.foldr_sup_eq_sup_to_finset Modified src/data/finset/pairwise.lean + theorem list.pairwise_disjoint_iff_coe_to_finset_pairwise_disjoint + theorem list.pairwise_disjoint_of_coe_to_finset_pairwise_disjoint + theorem list.pairwise_iff_coe_to_finset_pairwise + theorem list.pairwise_of_coe_to_finset_pairwise Added src/data/finsupp/big_operators.lean + theorem finset.mem_sup_support_iff + theorem finset.support_sum_eq + theorem finset.support_sum_subset + theorem list.mem_foldr_sup_support_iff + theorem list.support_sum_eq + theorem list.support_sum_subset + theorem multiset.mem_sup_map_support_iff + theorem multiset.support_sum_eq + theorem multiset.support_sum_subset Modified src/data/list/perm.lean + theorem list.pairwise.perm + theorem list.perm.pairwise Modified src/data/multiset/basic.lean + theorem multiset.pairwise_coe_iff + theorem multiset.pairwise_nil Modified src/data/multiset/lattice.lean + theorem multiset.inf_coe + theorem multiset.sup_coe Modified src/data/nat/factorization/basic.lean 2022-07-19 18:28:03 2ee2bae chore({algebra,data/rat}): use forgetful inheritance for `algebra_rat` (#14894) Throughout mathlib we've been struggling with diamonds arising from the `algebra_rat [division_ring K] [char_zero K] : algebra ℚ K` instance: since this instance provided its own inclusion map `to_fun : ℚ → K` and scalar multiplication by rationals `smul : ℚ → K → K`, it would not be definitionally equal to other instances such as `algebra.id`, and we'd need tactics like `convert` to deal with this inequality. Following the previous `nsmul` and `zmul` refactors, this PR applies the forgetful inheritance pattern to the `algebra_rat` instance, allowing you to supply a definitionally convenient value for the conflicting `to_fun` and `smul` fields as the fields `of_rat` and `qsmul` in the `division_ring K` instance. `of_rat` is used to define the coercion `ℚ → K` (in the instance `rat.cast_coe`), whic is used to define the map `rat.cast_hom : ℚ →+* K`, which is used along with `qsmul` to define `algebra_rat`. A default value for `of_rat` and `qsmul` and coherence proofs are provided using the `opt_param`/`auto_param` mechanism, just like for `nsmul` and `zsmul`. I have included a test after the definition of `algebra_rat`, to ensure definitional equality with `algebra.id`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/field/basic.lean + def qsmul_rec + theorem rat.cast_def + theorem rat.cast_mk' + def rat.cast_rec + theorem rat.smul_def Modified src/algebra/group/ulift.lean + theorem ulift.int_cast_down + theorem ulift.nat_cast_down Modified src/algebra/order/field.lean Modified src/algebra/ring/ulift.lean + theorem ulift.rat_cast_down Modified src/algebra/star/self_adjoint.lean + theorem self_adjoint.coe_rat_cast + theorem self_adjoint.coe_rat_smul + theorem self_adjoint.mul_mem + theorem self_adjoint.rat_cast_mem Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean - theorem rat.cast_def Modified src/field_theory/subfield.lean + theorem subfield_class.coe_rat_cast + theorem subfield_class.coe_rat_mem + theorem subfield_class.coe_rat_smul + theorem subfield_class.rat_smul_mem Modified src/logic/equiv/transfer_instance.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/topology/algebra/algebra.lean Modified src/topology/instances/irrational.lean 2022-07-19 18:28:02 5797ef5 feat(algebraic_topology): alternating_coface_map_complex (#14588) This PR constructs the alternating coface map complex of a cosimplicial object in an additive category. This construction is dual to the alternating face map complex. ESTIMATED CHANGES Modified src/algebraic_topology/alternating_face_map_complex.lean + theorem algebraic_topology.alternating_coface_map_complex.d_eq_unop_d + theorem algebraic_topology.alternating_coface_map_complex.d_squared + def algebraic_topology.alternating_coface_map_complex.map + def algebraic_topology.alternating_coface_map_complex.obj + def algebraic_topology.alternating_coface_map_complex.obj_d + def algebraic_topology.alternating_coface_map_complex Modified src/algebraic_topology/simplicial_object.lean + def category_theory.cosimplicial_simplicial_equiv Modified src/category_theory/preadditive/opposite.lean + def category_theory.op_hom + theorem category_theory.op_neg + theorem category_theory.op_sum + theorem category_theory.op_zsmul + def category_theory.unop_hom + theorem category_theory.unop_neg + theorem category_theory.unop_sum + theorem category_theory.unop_zsmul 2022-07-19 15:47:19 48c6cc3 feat(data/polynomial/degree/lemmas): three lemmas on nat_degrees, bits and neg (#15522) These three lemmas are used in #14762, to help the tactic `compute_degree_le`. ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.nat_degree_bit0 + theorem polynomial.nat_degree_bit1 + theorem polynomial.nat_degree_sub_le_iff_left 2022-07-19 15:47:17 3563936 feat(field_theory/adjoin): `intermediate_field.exists_finset_of_mem_supr` (#15518) This PR adds a lemma stating that an element of a compositum of intermediate fields lies in a finite compositum. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.exists_finset_of_mem_supr 2022-07-19 15:47:16 c55cadb chore(order/upper_lower): fix typo (#15517) ESTIMATED CHANGES Modified src/order/upper_lower.lean + theorem upper_set.Ici_le_Ioi - theorem upper_set.Icoi_le_Ioi 2022-07-19 15:47:15 d665535 chore(set_theory/game/nim): reorder lemmas (#15516) We move the most basic API for `nim` to the beginning of the file. This was causing trouble in another PR, where I wanted to prove basic properties of `nim 1` alongside those of `nim 0` but couldn't because of this missing API. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean 2022-07-19 15:47:12 fd7796a chore(logic/equiv): improve defeq and/or simp lemmas about some equivs (#15511) ESTIMATED CHANGES Modified src/logic/equiv/basic.lean +/- def equiv.bool_prod_equiv_sum Modified src/logic/equiv/nat.lean +/- def equiv.bool_prod_nat_equiv_nat +/- def equiv.nat_sum_nat_equiv_nat + theorem equiv.nat_sum_nat_equiv_nat_apply 2022-07-19 15:47:11 72eaeff feat(data/pnat/basic): add lemmas, move `equiv.pnat_equiv_nat` (#15508) * Add lemmas about `pnat.nat_pred` and `nat.succ_pnat`. * Use `derive` for `pnat.linear_order`. * Move `equiv.pnat_equiv_nat` to `data/pnat/basic`. * Use it in `order_iso.pnat_iso_nat` (renamed from `pnat.succ_order_iso`, swaped LHS with RHS). * Golf some proofs. ESTIMATED CHANGES Modified src/data/pnat/basic.lean + def equiv.pnat_equiv_nat + theorem nat.nat_pred_succ_pnat +/- theorem nat.succ_pnat_inj + theorem nat.succ_pnat_injective + theorem nat.succ_pnat_le_succ_pnat + theorem nat.succ_pnat_lt_succ_pnat + theorem nat.succ_pnat_mono + theorem nat.succ_pnat_strict_mono + def order_iso.pnat_iso_nat + theorem order_iso.pnat_iso_nat_symm_apply +/- theorem pnat.coe_eq_one_iff +/- theorem pnat.le_one_iff +/- theorem pnat.lt_add_left +/- theorem pnat.lt_add_right +/- def pnat.nat_pred +/- theorem pnat.nat_pred_add_one +/- theorem pnat.nat_pred_eq_pred + theorem pnat.nat_pred_inj + theorem pnat.nat_pred_injective + theorem pnat.nat_pred_le_nat_pred + theorem pnat.nat_pred_lt_nat_pred + theorem pnat.nat_pred_monotone + theorem pnat.nat_pred_strict_mono +/- theorem pnat.one_add_nat_pred - def pnat.succ_order_iso + theorem pnat.succ_pnat_nat_pred Modified src/data/pnat/xgcd.lean +/- theorem pnat.xgcd_type.is_reduced_iff Modified src/logic/equiv/nat.lean - def equiv.pnat_equiv_nat 2022-07-19 15:47:09 8f000ca feat(analysis/special_functions/exp): add lemmas about `is_o`/`is_O`/`is_Theta` (#15506) Add lemmas about asymptotic comparison of `exp (f x)` and `exp (g x)`. ESTIMATED CHANGES Modified src/analysis/special_functions/exp.lean + theorem real.is_O_exp_comp_exp_comp + theorem real.is_O_exp_comp_one +/- theorem real.is_O_one_exp_comp + theorem real.is_Theta_exp_comp_exp_comp + theorem real.is_Theta_exp_comp_one +/- theorem real.is_bounded_under_ge_exp_comp +/- theorem real.is_bounded_under_le_exp_comp + theorem real.is_o_exp_comp_exp_comp + theorem real.is_o_one_exp_comp +/- theorem real.tendsto_comp_exp_at_bot +/- theorem real.tendsto_comp_exp_at_top +/- theorem real.tendsto_exp_comp_at_top + theorem real.tendsto_exp_comp_nhds_zero 2022-07-19 13:05:58 b2af6ee feat(tactic/ext): don't remove attr (#15502) In #8785 the ext attribute was changed to try to remove itself after it is applied, unfortunately this is not possible however. The command `unset_attribute` is not persistent, as seen in https://github.com/leanprover-community/lean/blob/bf12a6c9b74846b532a248617eae692d2c13f18b/src/library/tactic/user_attribute.cpp#L365. This means that even though it appears that a declaration doesn't have the `ext` attribute when `#print`ed immediately after, the attribute reappears after the namespace is closed This leads to weird discrepancies like the following: https://leanprover-community.github.io/mathlib_docs/topology/algebra/open_subgroup.html#open_subgroup.ext where the `to_additive` version of the lemma doesn't have the `ext` attribute in doc-gen (as it is copied immediately, so before the end of the current scope), but the original does have the attribute, as it only temporarily didn't. To resolve this we simply give up on removing the `ext` attribute. ESTIMATED CHANGES Modified src/tactic/ext.lean 2022-07-19 11:15:22 461afda refactor(algebra/graded_monoid): provide better names for lemmas about internal graduations (#15488) This provides `set_like.one_mem_graded` as the preferred spelling of the projection `set_like.has_graded_one.one_mem`. This follows the usual pattern of not including the typeclass name in the lemma that it provides; we don't usually write `add_semigroup.add_assoc`. The new lemmas are now listed in the docstring as the preferred API for working with these typeclasses. ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean + theorem set_like.algebra_map_mem_graded - theorem set_like.has_graded_one.algebra_map_mem - theorem set_like.has_graded_one.int_cast_mem - theorem set_like.has_graded_one.nat_cast_mem + theorem set_like.int_cast_mem_graded + theorem set_like.nat_cast_mem_graded Modified src/algebra/graded_monoid.lean - theorem set_like.graded_monoid.list_prod_map_mem - theorem set_like.graded_monoid.list_prod_of_fn_mem - theorem set_like.graded_monoid.pow_mem + theorem set_like.list_prod_map_mem_graded + theorem set_like.list_prod_of_fn_mem_graded + theorem set_like.mul_mem_graded + theorem set_like.one_mem_graded + theorem set_like.pow_mem_graded Modified src/algebraic_geometry/projective_spectrum/scheme.lean Modified src/algebraic_geometry/projective_spectrum/structure_sheaf.lean Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean 2022-07-19 11:15:21 93219fb feat(number_theory): degree `[Frac(S):Frac(R)]` is degree `[S/pS:R/p]` (#15315) (for a Dedekind domain `R` and its integral closure `S` and maximal ideal `p`) This is the first step in showing the fundamental identity of inertia degree and ramification index (#12287). The next step is to factor `pS` into coprime factors `P` and use the Chinese remainder theorem. ESTIMATED CHANGES Modified src/number_theory/ramification_inertia.lean + theorem ideal.finrank_quotient_map.linear_independent_of_nontrivial + theorem ideal.finrank_quotient_map.span_eq_top + theorem ideal.finrank_quotient_map 2022-07-19 11:15:20 1b775c2 feat(ring_theory/etale): Formally étale morphisms. (#15242) ESTIMATED CHANGES Added src/ring_theory/etale.lean + theorem algebra.formally_etale.comp + theorem algebra.formally_etale.iff_unramified_and_smooth + theorem algebra.formally_etale.of_equiv + theorem algebra.formally_etale.of_unramified_and_smooth + theorem algebra.formally_smooth.comp + theorem algebra.formally_smooth.comp_lift + theorem algebra.formally_smooth.exists_lift + def algebra.formally_smooth.lift + theorem algebra.formally_smooth.mk_lift + theorem algebra.formally_smooth.of_equiv + theorem algebra.formally_unramified.comp + theorem algebra.formally_unramified.ext + theorem algebra.formally_unramified.lift_unique + theorem algebra.formally_unramified.of_equiv Modified src/ring_theory/nilpotent.lean + theorem ideal.is_nilpotent.induction_on 2022-07-19 09:10:17 3527e4a refactor(group_theory/group_action/basic): Make `mul_action.self_equiv_sigma_orbits` computable (#14591) This introduces a new `mul_action.orbit_rel.quotient.orbit` definition to avoid the need for `.out`. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.orbit_rel.quotient.mem_orbit + def mul_action.orbit_rel.quotient.orbit + theorem mul_action.orbit_rel.quotient.orbit_eq_orbit_out + theorem mul_action.orbit_rel.quotient.orbit_mk + def mul_action.orbit_rel.quotient +/- def mul_action.self_equiv_sigma_orbits' + def mul_action.self_equiv_sigma_orbits Modified src/group_theory/group_action/quotient.lean 2022-07-19 07:59:12 1e72fb3 feat(representation_theory/Action): mapping by a monoidal functor (#14331) ESTIMATED CHANGES Modified src/representation_theory/Action.lean + theorem Action.tensor_unit_V + theorem Action.tensor_unit_rho + def category_theory.monoidal_functor.map_Action 2022-07-19 07:03:11 c70a787 feat(set_theory/zfc): `Ø ⊆ x` (#15223) ESTIMATED CHANGES Modified src/set_theory/zfc.lean + theorem Set.empty_subset +/- theorem Set.subset_iff + theorem pSet.empty_subset 2022-07-19 03:30:01 e1c8bde feat(topology/support): add lemmas, fix a name (#15484) * generalize `support_smul_subset_left` to `smul_with_zero`; * add `tsupport_smul_subset_left`; * rename `not_mem_closure_mul_support_iff_eventually_eq` to `not_mem_mul_tsupport_iff_eventually_eq`; * add `continuous_of_mul_tsupport`. ESTIMATED CHANGES Modified src/algebra/support.lean +/- theorem function.support_smul_subset_left Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/geometry/manifold/bump_function.lean Modified src/topology/support.lean + theorem continuous_of_mul_tsupport - theorem not_mem_closure_mul_support_iff_eventually_eq + theorem not_mem_mul_tsupport_iff_eventually_eq + theorem tsupport_smul_subset_left 2022-07-19 03:30:00 ebe6029 feat(field_theory/adjoin): Compact elements of `intermediate_field` (#15438) This PR proves some lemmas regarding compact elements of `intermediate_field`, essentially copying the analogous results for `submodule` from `linear_algebra/span.lean`. This PR combos with #15419. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_finite_is_compact_element + theorem intermediate_field.adjoin_finset_is_compact_element + theorem intermediate_field.adjoin_simple_is_compact_element 2022-07-19 03:29:59 150b8e8 feat(analysis/calculus): generalize `differentiable*.pow`, add `differentiable*.zpow` (#15416) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean - theorem differentiable.pow + theorem differentiable.zpow - theorem differentiable_at.pow + theorem differentiable_at.zpow - theorem differentiable_on.pow + theorem differentiable_on.zpow - theorem differentiable_within_at.pow + theorem differentiable_within_at.zpow Modified src/analysis/calculus/fderiv.lean + theorem differentiable.pow + theorem differentiable_at.pow + theorem differentiable_on.pow + theorem differentiable_within_at.pow 2022-07-19 03:29:58 632b497 feat(analysis/inner_product/calculus): [higher] differentiability to/from `euclidean_space` (#15363) This duplicates some of the calculus `pi` API to `euclidean_space`. Namely : - we duplicate all the variants of `differentiable_pi` to show that a function to a euclidean space is (higher) differentiable iff all of its components are - we introduce `euclidean_version.proj`, analogous to `continuous_linear_map.proj`. This allows us to avoid duplicating all the `differentiable_apply`-like lemmas, because one can just use the API for smoothness of continuous linear maps ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem continuous_linear_equiv.comp_cont_diff_at_iff + theorem continuous_linear_equiv.comp_cont_diff_iff + theorem continuous_linear_equiv.cont_diff_at_comp_iff + theorem continuous_linear_equiv.cont_diff_comp_iff Modified src/analysis/inner_product_space/calculus.lean + theorem cont_diff_at_euclidean + theorem cont_diff_euclidean + theorem cont_diff_on_euclidean + theorem cont_diff_within_at_euclidean + theorem differentiable_at_euclidean + theorem differentiable_euclidean + theorem differentiable_on_euclidean + theorem differentiable_within_at_euclidean + theorem has_fderiv_within_at_euclidean + theorem has_strict_fderiv_at_euclidean Modified src/analysis/inner_product_space/pi_L2.lean + def euclidean_space.equiv + def euclidean_space.proj + def euclidean_space.projₗ Modified src/analysis/normed_space/pi_Lp.lean Modified src/linear_algebra/matrix/hermitian.lean 2022-07-19 03:29:57 58d7431 refactor(set_theory/zfc): `Union` → `sUnion` (#15352) The current `Union` definitions more closely match `set.sUnion`. We also change the notation to match. See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/ZFC.20definable.20class/near/289406692). ESTIMATED CHANGES Modified src/set_theory/zfc.lean - def Class.Union - theorem Class.Union_hom +/- def Class.iota + def Class.sUnion + theorem Class.sUnion_hom - def Set.Union - theorem Set.Union_lem - theorem Set.Union_singleton +/- theorem Set.choice_is_func - theorem Set.mem_Union + theorem Set.mem_sUnion + def Set.sUnion + theorem Set.sUnion_lem + theorem Set.sUnion_singleton - def pSet.Union - theorem pSet.mem_Union + theorem pSet.mem_sUnion + def pSet.sUnion 2022-07-19 03:29:56 11576db feat(set_theory/zfc): `∈` is well-founded (#15213) ESTIMATED CHANGES Modified src/set_theory/zfc.lean + theorem Set.mem_asymm + theorem Set.mem_irrefl + theorem Set.mem_wf + theorem pSet.mem_asymm + theorem pSet.mem_irrefl + theorem pSet.mem_wf 2022-07-19 03:29:55 d655f45 feat(topology/algebra/filter_basis): add a variant of `module_filter_basis.has_continuous_smul` when we already have a topological group (#14806) This basically just factors the existing proof to get for free that it works not only for the topology generated by the basis (as an `add_group_filter_basis`) but for any topological add group topology with a suitable basis of neighborhoods of 0. This adds nothing new mathematically because group topologies are characterized by their neighborhoods of 0, so one could obtain such a result by building a second topology from the filter basis and proving it is equal to the first one, but it turns out it's just easier to split the proof, so this is just a free quality-of-life improvement. ESTIMATED CHANGES Modified src/topology/algebra/filter_basis.lean + theorem has_continuous_smul.of_basis_zero 2022-07-19 03:29:54 4514021 feat(algebra/category_theory/Group/epi_mono): about monomorphism and epimorphism in category of group (#14720) This pr proves that monomorphism and injective homomorphism are the same and epimorphism and surjective homomorphism are the same in `Group`. For `CommGroup`, `AddGroup` and `AddCommGroup`, the same is proved in #15496 ESTIMATED CHANGES Added src/algebra/category/Group/epi_mono.lean + theorem Group.epi_iff_range_eq_top + theorem Group.epi_iff_surjective + theorem Group.ker_eq_bot_of_mono + theorem Group.mono_iff_injective + theorem Group.mono_iff_ker_eq_bot + theorem Group.surjective_of_epi + def Group.surjective_of_epi_auxs.G + def Group.surjective_of_epi_auxs.H + inductive Group.surjective_of_epi_auxs.X_with_infinity + theorem Group.surjective_of_epi_auxs.agree + theorem Group.surjective_of_epi_auxs.comp_eq + theorem Group.surjective_of_epi_auxs.from_coset_eq_of_mem_range + theorem Group.surjective_of_epi_auxs.from_coset_ne_of_nin_range + theorem Group.surjective_of_epi_auxs.g_apply_from_coset + theorem Group.surjective_of_epi_auxs.g_apply_infinity + theorem Group.surjective_of_epi_auxs.g_ne_h + theorem Group.surjective_of_epi_auxs.h_apply_from_coset' + theorem Group.surjective_of_epi_auxs.h_apply_from_coset + theorem Group.surjective_of_epi_auxs.h_apply_from_coset_nin_range + theorem Group.surjective_of_epi_auxs.h_apply_infinity + theorem Group.surjective_of_epi_auxs.mul_smul + theorem Group.surjective_of_epi_auxs.one_smul + theorem Group.surjective_of_epi_auxs.τ_apply_from_coset' + theorem Group.surjective_of_epi_auxs.τ_apply_from_coset + theorem Group.surjective_of_epi_auxs.τ_apply_infinity + theorem Group.surjective_of_epi_auxs.τ_symm_apply_from_coset + theorem Group.surjective_of_epi_auxs.τ_symm_apply_infinity + theorem monoid_hom.ker_eq_bot_of_cancel Modified src/group_theory/subgroup/basic.lean + theorem monoid_hom.range_one 2022-07-19 01:02:20 b36a458 feat(set_theory/ordinal/basic): add `gc_ord_card` and `gci_ord_card` (#15152) Define a Galois coinsertion between `cardinal.ord` and `ordinal.card`, then use it to golf some proofs. ESTIMATED CHANGES Modified src/order/galois_connection.lean Modified src/set_theory/ordinal/basic.lean + theorem cardinal.gc_ord_card + def cardinal.gci_ord_card +/- theorem cardinal.lt_ord +/- theorem cardinal.lt_ord_succ_card +/- theorem cardinal.ord_card_le +/- theorem cardinal.ord_le_ord +/- theorem cardinal.ord_lt_ord + theorem cardinal.ord_mono + theorem cardinal.ord_strict_mono +/- theorem cardinal.ord_zero 2022-07-19 01:02:19 b9c17c1 feat(data/multiset/fintype): coercion from multiset to type (#15094) Introduces a coercion from multisets to types and provides a `fintype` instance for it. Also gives some definitions and lemmas to help work with sums and products over multisets. ESTIMATED CHANGES Modified src/data/finset/basic.lean Added src/data/multiset/fintype.lean + theorem multiset.card_coe + theorem multiset.card_to_enum_finset + def multiset.coe_embedding + theorem multiset.coe_eq + def multiset.coe_equiv + theorem multiset.coe_mem + theorem multiset.coe_mk + theorem multiset.coe_sort_eq + theorem multiset.fst_coe_eq_coe + theorem multiset.image_to_enum_finset_fst + theorem multiset.map_to_enum_finset_fst + theorem multiset.map_univ + theorem multiset.map_univ_coe + theorem multiset.map_univ_coe_embedding + theorem multiset.mem_of_mem_to_enum_finset + theorem multiset.mem_to_enum_finset + def multiset.mk_to_type + theorem multiset.prod_eq_prod_coe + theorem multiset.prod_eq_prod_to_enum_finset + theorem multiset.prod_to_enum_finset + theorem multiset.to_embedding_coe_equiv_trans + def multiset.to_enum_finset + theorem multiset.to_enum_finset_filter_eq + theorem multiset.to_enum_finset_mono + theorem multiset.to_enum_finset_subset_iff + def multiset.to_type 2022-07-19 01:02:17 00c3968 refactor(set_theory/game/pgame): tweak `relabelling` definition (#14941) We simplify the definition for a `relabelling` by using `R` instead of `R.symm`. This overall leads to more symmetric proofs. We also create a constructor with the equivalences swapped. This allows us to golf various theorems. Further, we add basic API on destructuring relabellings, which makes it so that we don't have to case on them all the time. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/birthday.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean +/- def pgame.relabel +/- def pgame.relabel_relabelling + def pgame.relabelling.left_moves_equiv + def pgame.relabelling.mk' + theorem pgame.relabelling.mk'_left_moves_equiv + theorem pgame.relabelling.mk'_right_moves_equiv + theorem pgame.relabelling.mk_left_moves_equiv + theorem pgame.relabelling.mk_right_moves_equiv + def pgame.relabelling.move_left + def pgame.relabelling.move_left_symm + def pgame.relabelling.move_right + def pgame.relabelling.move_right_symm + def pgame.relabelling.right_moves_equiv Modified src/set_theory/game/short.lean 2022-07-19 01:02:16 b90e72c feat(set_theory/game/ordinal): lemmas on `0.to_pgame` and `1.to_pgame` (#14780) ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean + theorem ordinal.one_to_pgame_left_moves_default_eq + theorem ordinal.one_to_pgame_move_left + theorem ordinal.to_left_moves_one_to_pgame_symm + theorem ordinal.to_pgame_nonneg Modified src/set_theory/ordinal/arithmetic.lean 2022-07-19 01:02:15 3600b62 feat(topology/homotopy): define nth homotopy group πₙ (without the group instance) (#14724) This pull request adds: - definition of the nth homotopy group `π n x` - proof of `π 0 x ≃ zeroth_homotopy X` where `x:X` - proof of `π 1 x ≃ path.homotopic.quotient x x` ESTIMATED CHANGES Added src/topology/homotopy/homotopy_group.lean + def cube.boundary + theorem cube.head.continuous + def cube.head + theorem cube.one_char + theorem cube.proj_continuous + def cube.tail + def cube + def gen_loop.const + theorem gen_loop.ext + theorem gen_loop.homotopic.equiv + theorem gen_loop.homotopic.refl + theorem gen_loop.homotopic.symm + theorem gen_loop.homotopic.trans + def gen_loop.homotopic + theorem gen_loop.mk_apply + structure gen_loop + def gen_loop_one_equiv_path_self + def gen_loop_zero_equiv + def homotopy_group + def pi0_equiv_path_components + def pi1_equiv_fundamental_group 2022-07-19 01:02:14 e960dc6 feat(combinatorics/simple_graph/subgraph): delete vertices in a subgraph (#14403) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/subgraph.lean + def simple_graph.subgraph.delete_verts + theorem simple_graph.subgraph.delete_verts_adj + theorem simple_graph.subgraph.delete_verts_anti + theorem simple_graph.subgraph.delete_verts_delete_verts + theorem simple_graph.subgraph.delete_verts_empty + theorem simple_graph.subgraph.delete_verts_inter_verts_left_eq + theorem simple_graph.subgraph.delete_verts_inter_verts_set_right_eq + theorem simple_graph.subgraph.delete_verts_le + theorem simple_graph.subgraph.delete_verts_mono + theorem simple_graph.subgraph.delete_verts_verts + theorem simple_graph.subgraph.induce_self_verts 2022-07-19 01:02:13 fcaedc5 feat(algebra/module): add injective module and Baer's criterion (#12895) Baer's criterion for injective modules: if an $R$-module $M$ is such that every linear map from an ideal of $R$ to $M$ can be extended to $R\to M$, then $M$ is injective. ESTIMATED CHANGES Added src/algebra/module/injective.lean + theorem module.Baer.chain_linear_pmap_of_chain_extension_of + theorem module.Baer.extension_of.ext + theorem module.Baer.extension_of.ext_iff + theorem module.Baer.extension_of.le_max + def module.Baer.extension_of.max + structure module.Baer.extension_of + def module.Baer.extension_of_max + theorem module.Baer.extension_of_max_adjoin.eqn + def module.Baer.extension_of_max_adjoin.extend_ideal_to + theorem module.Baer.extension_of_max_adjoin.extend_ideal_to_eq + theorem module.Baer.extension_of_max_adjoin.extend_ideal_to_is_extension + theorem module.Baer.extension_of_max_adjoin.extend_ideal_to_wd' + theorem module.Baer.extension_of_max_adjoin.extend_ideal_to_wd + def module.Baer.extension_of_max_adjoin.extension_to_fun + theorem module.Baer.extension_of_max_adjoin.extension_to_fun_wd + def module.Baer.extension_of_max_adjoin.fst + def module.Baer.extension_of_max_adjoin.ideal + def module.Baer.extension_of_max_adjoin.ideal_to + def module.Baer.extension_of_max_adjoin.snd + def module.Baer.extension_of_max_adjoin + theorem module.Baer.extension_of_max_is_max + theorem module.Baer.extension_of_max_le + theorem module.Baer.extension_of_max_to_submodule_eq_top + def module.Baer + theorem module.injective_iff_injective_object + theorem module.injective_module_of_injective_object + theorem module.injective_object_of_injective_module Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.ext_iff Modified src/order/chain.lean + theorem is_chain.exists3 2022-07-18 22:20:12 5a01744 feat(data/{finset,set}/basic): `insert a s = s ↔ a ∈ s` (#15493) and `s.erase a = s ↔ a ∉ s`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.erase_eq_self + theorem finset.erase_ne_self + theorem finset.insert_eq_self + theorem finset.insert_ne_self Modified src/data/set/basic.lean + theorem set.insert_eq_self + theorem set.insert_ne_self 2022-07-18 22:20:10 9540a42 chore(data/json): add a missing subtype parser for nullable types (#15486) This instance is needed by `of_json (option (subtype p)) j`. There is now a test for this. ESTIMATED CHANGES Modified src/data/json.lean Modified test/json.lean 2022-07-18 22:20:09 3557e4d feat(topology/basic): add 2 lemmas about `locally_finite` families (#15485) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem locally_finite.Inter_compl_mem_nhds + theorem locally_finite.exists_mem_basis 2022-07-18 22:20:08 a26b4ee feat(data/list/infix): drop_while and take_while suf/prefix (#15473) ESTIMATED CHANGES Modified src/data/list/infix.lean + theorem list.drop_while_suffix + theorem list.take_while_prefix 2022-07-18 22:20:07 925d890 chore(algebra/group/ulift): add missing lemmas about pow, additivize (#15469) This renames `ulift.smul_down` to `ulift.smul_def` since there is no mention of `down` on the LHS, and then unprimes `ulift.smul_down'` now that the name is available. It also additivizes the `mul_action` instances. ESTIMATED CHANGES Modified src/algebra/group/ulift.lean + theorem ulift.pow_down + theorem ulift.smul_down Modified src/algebra/module/ulift.lean + theorem ulift.smul_def - theorem ulift.smul_down' - theorem ulift.smul_down 2022-07-18 22:20:06 8d2ae95 fix(analysis/locally_convex): weaken assumptions for `totally_bounded.is_vonN_bounded` (#15468) The `t3_space` assumption was needed because of `nhds_basis_closed_balanced`, but closedness was never used, and removing the closedness condition allows us to drop the `t3_space` assumption ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean + theorem nhds_basis_balanced Modified src/analysis/locally_convex/bounded.lean 2022-07-18 22:20:05 2cdc757 doc(set_theory/ordinal/cantor_normal_form): implementation notes (#15466) We write a short paragraph on why `CNF` is implemented as a list of pairs. ESTIMATED CHANGES Modified src/set_theory/ordinal/cantor_normal_form.lean 2022-07-18 22:20:04 92f31fb refactor(tactic/polyrith): use the autogenerated json parser (#15429) This acts as a nice demonstration of how to use `@[derive non_null_json_serializable]` ESTIMATED CHANGES Modified src/tactic/polyrith.lean + structure polyrith.sage_json_failure + structure polyrith.sage_json_success 2022-07-18 22:20:03 0b673ed feat(set_theory/cardinal/ordinal): cardinality of `α →₀ β` (#15198) As requested by @YaelDillies. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.mk_finsupp_lift_of_fintype + theorem cardinal.mk_finsupp_of_fintype Modified src/set_theory/cardinal/ordinal.lean + theorem cardinal.mk_finsupp_lift_of_infinite + theorem cardinal.mk_finsupp_of_infinite +/- theorem cardinal.mk_list_eq_mk 2022-07-18 22:20:01 f5d916a feat(data/vector/mem): Lemmas about membership in a vector (#15154) Add a number of lemmas about membership in different `vector`s. Some just wrap the `list` versions but some of the `n+1` cases are more general. ESTIMATED CHANGES Modified src/data/vector/basic.lean + theorem vector.eq_cons_iff + theorem vector.exists_eq_cons + theorem vector.head_map - theorem vector.mem_iff_nth + theorem vector.ne_cons_iff - theorem vector.nth_mem + theorem vector.tail_map Added src/data/vector/mem.lean + theorem vector.head_mem + theorem vector.mem_cons_iff + theorem vector.mem_cons_of_mem + theorem vector.mem_cons_self + theorem vector.mem_iff_nth + theorem vector.mem_map_iff + theorem vector.mem_map_succ_iff + theorem vector.mem_of_mem_tail + theorem vector.mem_succ_iff + theorem vector.not_mem_map_zero + theorem vector.not_mem_nil + theorem vector.not_mem_zero + theorem vector.nth_mem 2022-07-18 22:20:00 4af7cb2 feat(data/nat/choose/basic): Definition of `multichoose` and basic lemmas (#15072) Defining `multichoose` which (by contrast with `choose`) counts the number of _multisets_ of cardinality `k` from a type of cardinality `n`, or equivalently the number of ways to select `k` items (up to permutation) from `n` items _with_ replacement. For eventual use in @huynhtrankhanh's #11162 ("stars and bars") ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean + def nat.multichoose + theorem nat.multichoose_eq + theorem nat.multichoose_one + theorem nat.multichoose_one_right + theorem nat.multichoose_succ_succ + theorem nat.multichoose_two + theorem nat.multichoose_zero_right + theorem nat.multichoose_zero_succ 2022-07-18 17:22:21 7b43177 feat(ring_theory/bezout): Bezout domains are integrally closed (#15424) ESTIMATED CHANGES Modified src/ring_theory/bezout.lean 2022-07-18 17:22:20 ee72cf6 refactor(order/compactly_generated): Generalize `submodule.exists_finset_of_mem_supr` to compact elements of complete lattices (#15419) The lemma `submodule.exists_finset_of_mem_supr` can be generalized to compact elements of complete lattices. This should make it easy to get analogous results for other algebraic structures. ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean Modified src/order/compactly_generated.lean + theorem complete_lattice.is_compact_element.exists_finset_of_le_supr 2022-07-18 17:22:19 0e30f2d feat(ring_theory/localization/basic): section of localisation of non-zero is non-zero (#15404) ESTIMATED CHANGES Modified src/ring_theory/localization/basic.lean + theorem is_localization.sec_fst_ne_zero + theorem is_localization.sec_snd_ne_zero 2022-07-18 17:22:18 582e667 feat(algebraic_geometry/EllipticCurve): simplify definition of discriminant (#15365) This replaces the definition with a nested let definition more similar to the definition on [the LMFDB page on discriminants](https://www.lmfdb.org/knowledge/show/ec.discriminant), and proves the equivalence to the (slightly reformatted) explicit polynomial in terms of the $a_i$'s. ESTIMATED CHANGES Modified src/algebraic_geometry/EllipticCurve.lean + def EllipticCurve.b2 + def EllipticCurve.b4 + def EllipticCurve.b6 + def EllipticCurve.b8 + def EllipticCurve.c4 + theorem EllipticCurve.c4_def + theorem EllipticCurve.disc_aux_def + theorem EllipticCurve.disc_def +/- def EllipticCurve.j 2022-07-18 17:22:17 bcc2c4e refactor(data/finset/lattice): sup' and inf' without option (#15195) Hide the option API further, by using `unbot` and `untop`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean +/- theorem finset.inf'_const + theorem finset.inf'_map +/- theorem finset.max'_mem +/- theorem finset.min'_mem + theorem finset.sup'_map Modified src/order/conditionally_complete_lattice.lean 2022-07-18 17:22:16 9c7a7cc feat(tactic/congrm): add "function underscores" to `congrm` (#14532) This PR introduces further functionality to tactic `congrm`. It is now possible to use "function underscores": for instance, ``` example {a b c d e f g h : ℕ} (ae : a = e) (bf : b = f) (cg : c = g) (dh : d = h) : (a + b) * (c - d.succ) = (e + f) * (g - h.succ) := by congrm _₂ (_₂ _ _) (_₂ _ (_₁ _)); assumption ``` works. Each `_₂` is interpreted as the correct operation, `*, +, -`. I implemented `_ᵢ` for `i ∈ {1,2,3,4}`. It is easy to extend it further, in case this is desired. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/variant.20syntax.20for.20.60congr'.60) ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.replace_if Modified src/meta/expr.lean Modified src/tactic/congrm.lean + def tactic.congrm_fun_1 + def tactic.congrm_fun_2 + def tactic.congrm_fun_3 + def tactic.congrm_fun_4 Modified test/congrm.lean 2022-07-18 17:22:15 fba8620 feat(algebra/module/localized_module): construction of module localisation (#14470) Give commutative ring $R$, multiplicative subset $S\subseteq R$ and an $R$-module $M$. We can localise $M$ by $S$ to be $$ \frac ms = \frac n t \iff \exists (u \in S), u(sn - tm) = 0 $$ This pr makes this construction and proves that the localised module is an $R_S$ module. Thanks @Vierkantor for substantial golfing. ESTIMATED CHANGES Added src/algebra/module/localized_module.lean + theorem localized_module.induction_on + theorem localized_module.induction_on₂ + def localized_module.lift_on + theorem localized_module.lift_on_mk + def localized_module.lift_on₂ + theorem localized_module.lift_on₂_mk + def localized_module.mk + theorem localized_module.mk_add_mk + theorem localized_module.mk_eq + theorem localized_module.mk_smul_mk + theorem localized_module.r.is_equiv + def localized_module.r + theorem localized_module.zero_mk + def localized_module 2022-07-18 15:26:25 903e894 feat(ring_theory/adjoin_root): add lemmas for GCD domains (#14981) We add `algebra.adjoin.power_basis'` and `power_basis.of_gen_mem_adjoin'`, that generalize the umprimed versions to GCD domain. From flt-regular. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean + theorem algebra.range_top_iff_surjective Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/adjoin_root.lean + def adjoin_root.minpoly.equiv_adjoin + theorem adjoin_root.minpoly.to_adjoin.apply_X + theorem adjoin_root.minpoly.to_adjoin.injective + theorem adjoin_root.minpoly.to_adjoin.surjective + def adjoin_root.minpoly.to_adjoin + theorem adjoin_root.minpoly.to_adjoin_apply' + def algebra.adjoin.power_basis' 2022-07-18 12:17:50 b60a270 feat(data/real/{e,}nnreal): images and preimages of `ord_connected` sets (#15483) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem set.ord_connected.image_coe_nnreal_ennreal + theorem set.ord_connected.image_ennreal_of_real + theorem set.ord_connected.preimage_coe_nnreal_ennreal + theorem set.ord_connected.preimage_ennreal_of_real Modified src/data/real/nnreal.lean + theorem set.ord_connected.image_coe_nnreal_real + theorem set.ord_connected.image_real_to_nnreal + theorem set.ord_connected.preimage_coe_nnreal_real + theorem set.ord_connected.preimage_real_to_nnreal Modified src/data/set/intervals/ord_connected.lean + theorem set.ord_connected.preimage_anti + theorem set.ord_connected.preimage_mono 2022-07-18 12:17:49 ed513f8 feat(data/list/basic): last_reverse (#15482) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.last_reverse 2022-07-18 12:17:48 a641e1b doc(set_theory/cardinal/basic): tweak documentation (#15480) This PR does the following: - remove the mention of `cardinal.min`, as it was removed in #13410. - elaborate on `cardinal.sum`. - add mention of `cardinal.prod`. - separate the documentation of definitions with that of instances. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean 2022-07-18 12:17:46 5c062ff feat(algebra/order/monoid): add `one_lt_mul_iff`/`add_pos_iff` (#15458) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem one_lt_mul_iff Modified src/data/list/basic.lean Modified src/testing/slim_check/sampleable.lean 2022-07-18 12:17:43 fc2d456 feat(topology/instances/nnreal): add `can_lift C(X, ℝ) C(X, ℝ≥0)` (#15446) ESTIMATED CHANGES Modified src/topology/instances/nnreal.lean + def continuous_map.coe_nnreal_real 2022-07-18 12:17:41 1a30610 chore(logic/equiv/fin): golf, avoid `norm_num` (#15442) ESTIMATED CHANGES Modified archive/100-theorems-list/93_birthday_problem.lean Modified src/logic/equiv/fin.lean Modified src/order/jordan_holder.lean 2022-07-18 12:17:40 3b19e7e feat(order/hom/basic): `order_iso` of `rel_iso (<) (<)` (#15432) We introduce `of_rel_iso_lt` to build an order isomorphism from a relation isomorphism between `(<)` relations. We also add two basic lemmas on `to_rel_iso_lt`. ESTIMATED CHANGES Modified src/order/hom/basic.lean + def order_iso.of_rel_iso_lt + theorem order_iso.of_rel_iso_lt_apply + theorem order_iso.of_rel_iso_lt_symm + theorem order_iso.of_rel_iso_lt_to_rel_iso_lt +/- def order_iso.to_rel_iso_lt + theorem order_iso.to_rel_iso_lt_apply + theorem order_iso.to_rel_iso_lt_of_rel_iso_lt + theorem order_iso.to_rel_iso_lt_symm 2022-07-18 12:17:39 1627d8d feat(number_theory/legendre_symbol/*): redefine quadratic characters as `mul_char`s (#15418) This is a follow-up to #14768; it defines quadratic characters (and also the characters on `zmod 4` and `zmod 8`) to be of type `mul_char F int` (where `F` is a finite field). Some content of `number_theory/legendre_symbol/quadratic_char` is moved within the file; one proof is replaced by directly using the corresponding more general result. See here on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Implementation.20of.20multiplicative.20characters/near/289635166). ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/quadratic_char.lean +/- def char.quadratic_char + theorem char.quadratic_char_eq_one_of_char_two' + theorem char.quadratic_char_eq_pow_of_char_ne_two' + theorem char.quadratic_char_eq_zero_iff' +/- theorem char.quadratic_char_eq_zero_iff + def char.quadratic_char_fun - def char.quadratic_char_hom + theorem char.quadratic_char_is_nontrivial + theorem char.quadratic_char_is_quadratic +/- theorem char.quadratic_char_one +/- theorem char.quadratic_char_zero Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/legendre_symbol/zmod_char.lean + theorem zmod.is_quadratic_χ₄ + theorem zmod.is_quadratic_χ₈' + theorem zmod.is_quadratic_χ₈ +/- def zmod.χ₄ - theorem zmod.χ₄_trichotomy +/- def zmod.χ₈' - theorem zmod.χ₈'_trichotomy +/- def zmod.χ₈ - theorem zmod.χ₈_trichotomy 2022-07-18 12:17:38 ea33054 feat(ring_theory/I_filtration): I-filtrations of modules. (#15333) ESTIMATED CHANGES Added src/ring_theory/filtration.lean + theorem ideal.filtration.Inf_N + theorem ideal.filtration.Sup_N + theorem ideal.filtration.antitone + theorem ideal.filtration.bot_N + theorem ideal.filtration.inf_N + theorem ideal.filtration.infi_N + theorem ideal.filtration.pow_smul_le + theorem ideal.filtration.pow_smul_le_pow_smul + theorem ideal.filtration.stable.bounded_difference + theorem ideal.filtration.stable.exists_forall_le + theorem ideal.filtration.stable.exists_pow_smul_eq + theorem ideal.filtration.stable.exists_pow_smul_eq_of_ge + def ideal.filtration.stable + theorem ideal.filtration.stable_iff_exists_pow_smul_eq_of_ge + theorem ideal.filtration.sup_N + theorem ideal.filtration.supr_N + theorem ideal.filtration.top_N + structure ideal.filtration + def ideal.stable_filtration + theorem ideal.stable_filtration_stable + def ideal.trivial_filtration Modified src/ring_theory/ideal/operations.lean + theorem submodule.smul_infi_le + theorem submodule.smul_supr 2022-07-18 12:17:37 1d937dd feat(topology): basic simplification lemmas for `continuous_map`s (#15102) This PR adds the `@[simps]` attribute at two definitions - at [continuous_map.uncurry](https://leanprover-community.github.io/mathlib_docs/topology/compact_open.html#continuous_map.uncurry) and, - at [continuous.prod_map](https://leanprover-community.github.io/mathlib_docs/topology/constructions.html#continuous.prod_map) ESTIMATED CHANGES Modified src/topology/compact_open.lean +/- def continuous_map.uncurry Modified src/topology/continuous_function/basic.lean +/- def continuous_map.prod_map 2022-07-18 11:08:41 691c003 feat(algebra/lie/cartan_subalgebra): characterise Cartan subalgebras as limiting values of upper central series (#14179) The main result is `lie_subalgebra.is_cartan_subalgebra_iff_is_ucs_limit`. ESTIMATED CHANGES Modified src/algebra/lie/cartan_subalgebra.lean + theorem lie_subalgebra.is_cartan_subalgebra_iff_is_ucs_limit + theorem lie_subalgebra.ucs_eq_self_of_is_cartan_subalgebra + def lie_submodule.is_ucs_limit Modified src/algebra/lie/nilpotent.lean + theorem lie_submodule.is_nilpotent_iff_exists_lcs_eq_bot + theorem lie_submodule.ucs_add Modified src/algebra/lie/submodule.lean + theorem lie_submodule.comap_incl_eq_bot 2022-07-18 08:49:56 e82fbd3 feat(topology/sets/closeds): The coframe of closed sets (#15338) `coframe (closeds α)`. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Inter₂_union + theorem set.union_Inter₂ Modified src/topology/sets/closeds.lean + theorem topological_space.closeds.coe_Inf + theorem topological_space.closeds.coe_infi + theorem topological_space.closeds.gc + def topological_space.closeds.gi + theorem topological_space.closeds.infi_def + theorem topological_space.closeds.infi_mk + theorem topological_space.closeds.mem_Inf + theorem topological_space.closeds.mem_infi Modified src/topology/sets/opens.lean +/- theorem topological_space.opens.coe_Sup + theorem topological_space.opens.coe_supr - theorem topological_space.opens.supr_s Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2022-07-18 08:07:43 e3f47f2 feat(geometry/euclidean/oriented_angle): `continuous_at_oangle` (#15463) Add lemmas that oriented angles are continuous, as a function of a pair of vectors, except where one of the vectors is zero, analogous to the lemmas previously added for unoriented angles. ESTIMATED CHANGES Modified src/geometry/euclidean/oriented_angle.lean + theorem orientation.continuous_at_oangle + theorem orthonormal.continuous_at_oangle 2022-07-18 06:31:43 09ff086 chore(set_theory/ordinal/arithmetic): improve `enum_iso` def-eq (#15454) By not casing on the argument of `to_fun`, we get much a much nicer `apply` projection. ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean 2022-07-18 02:21:36 2067c01 feat(geometry/manifold/metrizable): metrizability of a manifold (#15437) ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean Added src/geometry/manifold/metrizable.lean + theorem manifold_with_corners.metrizable_space 2022-07-17 23:41:17 5b4425a feat(order/lattice): Congruence lemmas for `⊔` and `⊓` (#15439) `a ⊔ b = a ⊔ c` if `b ≤ a ⊔ c` and `c ≤ a ⊔ b`, and similar. ## Lemma renames * `sup_eq_sup_of_le_le` → `sup_congr_right` * `inf_eq_inf_of_le_le` → `inf_congr_right` * `set.union_eq_union_of_subset_of_subset` → `set.union_congr_right` * `set.inter_eq_inter_of_subset_of_subset` → `set.inter_congr_right` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.inter_congr_left + theorem finset.inter_congr_right + theorem finset.inter_eq_inter_iff_left + theorem finset.inter_eq_inter_iff_right + theorem finset.union_congr_left + theorem finset.union_congr_right + theorem finset.union_eq_union_iff_left + theorem finset.union_eq_union_iff_right Modified src/data/set/basic.lean + theorem set.inter_congr_left + theorem set.inter_congr_right + theorem set.inter_eq_inter_iff_left + theorem set.inter_eq_inter_iff_right - theorem set.inter_eq_inter_iff_subset_subset - theorem set.inter_eq_inter_of_subset_of_subset + theorem set.union_congr_left + theorem set.union_congr_right + theorem set.union_eq_union_iff_left + theorem set.union_eq_union_iff_right - theorem set.union_eq_union_iff_subset_subset - theorem set.union_eq_union_of_subset_of_subset Modified src/order/boolean_algebra.lean + theorem sup_sdiff_eq_sup Modified src/order/lattice.lean + theorem inf_congr_left + theorem inf_congr_right - theorem inf_eq_inf_iff_le_le + theorem inf_eq_inf_iff_left + theorem inf_eq_inf_iff_right - theorem inf_eq_inf_of_le_of_le + theorem sup_congr_left + theorem sup_congr_right - theorem sup_eq_sup_iff_le_le + theorem sup_eq_sup_iff_left + theorem sup_eq_sup_iff_right - theorem sup_eq_sup_of_le_of_le 2022-07-17 21:26:36 87fc682 feat(data/set/finite): set.finite.induction_on' (#15444) This is analogous to `finset.induction_on'`. Discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/induction.20on.20finite.20set ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite.induction_on' 2022-07-17 21:26:35 65ec599 chore(linear_algebra/matrix): Use the new matrix notation in most places (#15306) ESTIMATED CHANGES Modified src/algebra/lie/cartan_matrix.lean +/- def cartan_matrix.E₆ +/- def cartan_matrix.E₇ +/- def cartan_matrix.E₈ +/- def cartan_matrix.F₄ +/- def cartan_matrix.G₂ Modified src/analysis/complex/isometry.lean Modified src/analysis/special_functions/polar_coord.lean Modified src/data/complex/determinant.lean Modified src/data/complex/module.lean Modified src/data/fin/vec_notation.lean Modified src/data/matrix/notation.lean + theorem matrix.cons_vec_mul_cons + theorem matrix.eta_fin_three + theorem matrix.eta_fin_two Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/matrix/adjugate.lean - theorem matrix.adjugate_fin_two' + theorem matrix.adjugate_fin_two_of Modified src/linear_algebra/matrix/determinant.lean - theorem matrix.det_fin_one_mk + theorem matrix.det_fin_one_of Modified src/linear_algebra/matrix/to_lin.lean Modified src/number_theory/modular.lean +/- def modular_group.S +/- def modular_group.T +/- theorem modular_group.coe_S +/- theorem modular_group.coe_T +/- theorem modular_group.coe_T_inv +/- theorem modular_group.coe_T_zpow Modified src/topology/algebra/module/finite_dimension.lean 2022-07-17 19:11:11 9745b09 feat(linear_algebra/matrix/charpoly): Coefficients of the characteristic polynomial falls in the ideal power. (#15459) ESTIMATED CHANGES Modified src/algebra/order/sub.lean + theorem add_tsub_add_le_tsub_add_tsub Modified src/linear_algebra/matrix/charpoly/basic.lean + theorem charmatrix_apply Modified src/linear_algebra/matrix/charpoly/coeff.lean + theorem coeff_charpoly_mem_ideal_pow Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.coeff_prod_mem_ideal_pow_tsub 2022-07-17 19:11:10 f19c615 feat(algebra/group/with_one): units of a group with zero is isomorphic to the group (#15403) ESTIMATED CHANGES Modified src/algebra/group/with_one.lean + theorem with_one.coe_unone + def with_one.unone + theorem with_one.unone_coe + def with_zero.units_with_zero_equiv 2022-07-17 19:11:09 98f747f chore(set_theory/zfc): better def-eqs (#15210) We sidestep the equation compiler when not strictly needed, thus improving the definitional equalities on some basic definitions. This also allows us to inline many instances. ESTIMATED CHANGES Modified src/set_theory/zfc.lean - def Set.empty - def Set.mem +/- def pSet.Union +/- def pSet.image - def pSet.mem + theorem pSet.mk_func + theorem pSet.mk_type +/- def pSet.powerset +/- def pSet.type 2022-07-17 19:11:08 d84d1af feat(category_theory/preadditive): projective iff coyoneda.obj preserves epimorphisms (#14832) ESTIMATED CHANGES Modified src/category_theory/preadditive/injective.lean + theorem category_theory.injective.injective_iff_preserves_epimorphisms_yoneda_obj + theorem category_theory.injective.injective_iff_projective_op + theorem category_theory.injective.projective_iff_injective_op Modified src/category_theory/preadditive/projective.lean + theorem category_theory.projective.projective_iff_preserves_epimorphisms_coyoneda_obj 2022-07-17 19:11:07 5b77413 refactor(analysis/inner_product_space/pi_L2): change `std_orthonormal_basis` to type `orthonormal_basis` (#12253) ESTIMATED CHANGES Modified src/analysis/inner_product_space/orientation.lean Modified src/analysis/inner_product_space/pi_L2.lean + theorem coe_std_orthonormal_basis + theorem direct_sum.is_internal.collected_orthonormal_basis_mem + def direct_sum.is_internal.sigma_orthonormal_basis_index_equiv + def direct_sum.is_internal.subordinate_orthonormal_basis + def direct_sum.is_internal.subordinate_orthonormal_basis_index + theorem direct_sum.is_internal.subordinate_orthonormal_basis_subordinate + theorem euclidean_space.pi_Lp_congr_left_single + theorem exists_orthonormal_basis + def fin_std_orthonormal_basis - def linear_isometry_equiv.from_orthogonal_span_singleton - def linear_isometry_equiv.of_inner_product_space + theorem orthonormal.exists_orthonormal_basis_extension + theorem orthonormal_basis.coe_of_repr + def orthonormal_basis.from_orthogonal_span_singleton + def orthonormal_basis.reindex + def orthonormal_basis_index + def std_orthonormal_basis Modified src/analysis/inner_product_space/projection.lean - theorem coe_std_orthonormal_basis - def direct_sum.is_internal.sigma_orthonormal_basis_index_equiv - def direct_sum.is_internal.subordinate_orthonormal_basis - def direct_sum.is_internal.subordinate_orthonormal_basis_index - theorem direct_sum.is_internal.subordinate_orthonormal_basis_orthonormal - theorem direct_sum.is_internal.subordinate_orthonormal_basis_subordinate - theorem exists_subset_is_orthonormal_basis - def fin_std_orthonormal_basis - theorem fin_std_orthonormal_basis_orthonormal - def orthonormal_basis_index - def std_orthonormal_basis - theorem std_orthonormal_basis_orthonormal Modified src/analysis/inner_product_space/spectrum.lean - theorem inner_product_space.is_self_adjoint.diagonalization_basis_symm_apply - theorem inner_product_space.is_self_adjoint.eigenvector_basis_orthonormal Modified src/analysis/normed_space/pi_Lp.lean + def linear_isometry_equiv.pi_Lp_congr_left + theorem linear_isometry_equiv.pi_Lp_congr_left_apply + theorem linear_isometry_equiv.pi_Lp_congr_left_single + theorem linear_isometry_equiv.pi_Lp_congr_left_symm Modified src/geometry/manifold/instances/sphere.lean Modified src/linear_algebra/finite_dimensional.lean + theorem linear_independent.finite Modified src/linear_algebra/matrix/spectrum.lean 2022-07-17 17:25:03 6379d39 feat(data/set/countable): protect lemmas (#15415) We protect `set.countable_iff_exists_injective`, `set.countable_iff_exists_surjective`, and `set.countable.to_encodable` in order to avoid clashes with the theorems on the new `countable` typeclass. ESTIMATED CHANGES Modified src/data/countable/basic.lean Modified src/data/set/countable.lean - def set.countable.to_encodable - theorem set.countable_iff_exists_injective - theorem set.countable_iff_exists_surjective Modified src/set_theory/cardinal/basic.lean Modified src/topology/bases.lean Modified src/topology/metric_space/kuratowski.lean 2022-07-17 17:25:02 621cf7f feat(algebraic_geometry): Intersection of affine open can be covered by common basic opens (#11649) ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean + theorem algebraic_geometry.basic_open_basic_open_is_basic_open + def algebraic_geometry.basic_open_sections_to_affine + theorem algebraic_geometry.exists_basic_open_subset_affine_inter + theorem algebraic_geometry.is_affine_open.exists_basic_open_subset + theorem algebraic_geometry.is_affine_open.opens_map_from_Spec_basic_open + theorem algebraic_geometry.is_localization_basic_open Modified src/algebraic_geometry/open_immersion.lean +/- theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.is_iso_of_subset + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.of_restrict_inv_app + theorem algebraic_geometry.is_open_immersion.image_basic_open 2022-07-17 15:25:51 bb08977 doc(undergrad): add unitary and orthogonal group (#15456) ESTIMATED CHANGES Modified docs/undergrad.yaml 2022-07-17 15:25:50 fcceffa chore(order/initial_seg): move definitions of initial and principal segments (#15328) We move the definitions of initial and principal segments from `set_theory/ordinal/basic.lean` to a new file `order/initial_seg.lean`. We minimally change this file, just doing the following: - add a copyright header - copy over existing documentation - add a few `noncomputable` attributes - localize the notation - use `by_cases` in `initial_seg.lt_or_eq` (needed as the `classical` locale is no longer open) ESTIMATED CHANGES Added src/order/initial_seg.lean + theorem initial_seg.antisymm.aux + def initial_seg.antisymm + theorem initial_seg.antisymm_symm + theorem initial_seg.antisymm_to_fun + def initial_seg.cod_restrict + theorem initial_seg.cod_restrict_apply + theorem initial_seg.coe_coe_fn + theorem initial_seg.coe_fn_mk + theorem initial_seg.coe_fn_to_rel_embedding + theorem initial_seg.eq_or_principal + theorem initial_seg.init' + theorem initial_seg.init_iff + def initial_seg.le_add + theorem initial_seg.le_add_apply + theorem initial_seg.le_lt_apply + theorem initial_seg.lt_or_eq_apply_left + theorem initial_seg.lt_or_eq_apply_right + def initial_seg.of_iso + theorem initial_seg.refl_apply + theorem initial_seg.trans_apply + theorem initial_seg.unique_of_extensional + structure initial_seg + def principal_seg.cod_restrict + theorem principal_seg.cod_restrict_apply + theorem principal_seg.cod_restrict_top + theorem principal_seg.coe_coe_fn' + theorem principal_seg.coe_coe_fn + theorem principal_seg.coe_fn_mk + theorem principal_seg.coe_fn_to_rel_embedding + theorem principal_seg.down' + def principal_seg.equiv_lt + theorem principal_seg.equiv_lt_apply + theorem principal_seg.equiv_lt_top + theorem principal_seg.init + theorem principal_seg.init_iff + theorem principal_seg.irrefl + def principal_seg.lt_equiv + def principal_seg.lt_le + theorem principal_seg.lt_le_apply + theorem principal_seg.lt_le_top + theorem principal_seg.lt_top + def principal_seg.of_element + theorem principal_seg.of_element_apply + theorem principal_seg.of_element_top + theorem principal_seg.top_eq + theorem principal_seg.top_lt_top + theorem principal_seg.trans_apply + theorem principal_seg.trans_top + structure principal_seg + theorem rel_embedding.collapse_F.lt + theorem rel_embedding.collapse_F.not_lt + theorem rel_embedding.collapse_apply Modified src/set_theory/ordinal/basic.lean - theorem initial_seg.antisymm.aux - def initial_seg.antisymm - theorem initial_seg.antisymm_symm - theorem initial_seg.antisymm_to_fun - def initial_seg.cod_restrict - theorem initial_seg.cod_restrict_apply - theorem initial_seg.coe_coe_fn - theorem initial_seg.coe_fn_mk - theorem initial_seg.coe_fn_to_rel_embedding - theorem initial_seg.eq_or_principal - theorem initial_seg.init' - theorem initial_seg.init_iff - def initial_seg.le_add - theorem initial_seg.le_add_apply - def initial_seg.le_lt - theorem initial_seg.le_lt_apply - def initial_seg.lt_or_eq - theorem initial_seg.lt_or_eq_apply_left - theorem initial_seg.lt_or_eq_apply_right - def initial_seg.of_iso - theorem initial_seg.refl_apply - theorem initial_seg.trans_apply - theorem initial_seg.unique_of_extensional - structure initial_seg - def principal_seg.cod_restrict - theorem principal_seg.cod_restrict_apply - theorem principal_seg.cod_restrict_top - theorem principal_seg.coe_coe_fn' - theorem principal_seg.coe_coe_fn - theorem principal_seg.coe_fn_mk - theorem principal_seg.coe_fn_to_rel_embedding - theorem principal_seg.down' - def principal_seg.equiv_lt - theorem principal_seg.equiv_lt_apply - theorem principal_seg.equiv_lt_top - theorem principal_seg.init - theorem principal_seg.init_iff - theorem principal_seg.irrefl - def principal_seg.lt_equiv - def principal_seg.lt_le - theorem principal_seg.lt_le_apply - theorem principal_seg.lt_le_top - theorem principal_seg.lt_top - def principal_seg.of_element - theorem principal_seg.of_element_apply - theorem principal_seg.of_element_top - theorem principal_seg.top_eq - theorem principal_seg.top_lt_top - theorem principal_seg.trans_apply - theorem principal_seg.trans_top - structure principal_seg - def rel_embedding.collapse - theorem rel_embedding.collapse_F.lt - theorem rel_embedding.collapse_F.not_lt - def rel_embedding.collapse_F - theorem rel_embedding.collapse_apply 2022-07-17 15:25:49 3e63d16 feat(data/polynomial/unit_trinomial): Irreducibility of X^n-X-1 (#15318) This PR adds a proves irreducibility of X^n-X-1, superseding #6421. ESTIMATED CHANGES Modified src/data/polynomial/unit_trinomial.lean + theorem polynomial.is_unit_trinomial.irreducible_of_coprime' + theorem polynomial.trinomial_monic Added src/ring_theory/polynomial/selmer.lean + theorem polynomial.X_pow_sub_X_sub_one_irreducible + theorem polynomial.X_pow_sub_X_sub_one_irreducible_aux + theorem polynomial.X_pow_sub_X_sub_one_irreducible_rat 2022-07-17 15:25:48 bada07e feat(algebra/category): forgetful functors from modules reflect limits (#15095) ESTIMATED CHANGES Modified src/algebra/category/Module/abelian.lean Modified src/category_theory/functor/reflects_isomorphisms.lean 2022-07-17 15:25:47 9f45314 feat(algebra/homology): homotopy equivalences are quasi-isomorphisms (#14945) In this PR, it is shown that homotopy equivalences of homological complexes are quasi-isomorphisms. ESTIMATED CHANGES Modified src/algebra/homology/quasi_iso.lean + theorem homotopy_equiv.to_quasi_iso 2022-07-17 14:26:21 54594da fix(category_theory/abelian/transfer): fix a potential timeout (#15262) At `src/category_theory/abelian/transfer.lean` line 149, `abelian_of_adjunction.coimage_iso_image_hom` is on edge of being timed out by any additional simp lemmas, see #15232. This pr squeezed the `simpa` statement. ESTIMATED CHANGES Modified src/category_theory/abelian/transfer.lean 2022-07-17 11:21:32 4461149 chore(algebra/geom_sum): golf a proof (#15450) ESTIMATED CHANGES Modified src/algebra/geom_sum.lean 2022-07-17 07:32:36 683e1f6 feat(measure_theory/function/conditional_expecation): conditional expectation of a function to a independent sigma-algebra (#15422) This PR shows that if $\mathcal{G} \perp \mathcal{F}$ and $f$ is $\mathcal{G}$-measurable, then $\mathbb{E}[f \mid \mathcal{F}] = \mathbb{E}[f]$ almost everywhere. ESTIMATED CHANGES Modified src/probability/cond_count.lean Added src/probability/conditional_expectation.lean + theorem measure_theory.condexp_indep_eq Renamed src/probability/conditional.lean to src/probability/conditional_probability.lean 2022-07-17 06:40:33 e42057f feat(data/nat/bitwise): tweak `lxor` lemmas (#15409) This PR does the following: - add `lxor_cancel_right`, `lxor_cancel_left`, `lt_lxor_cases`. - make `lxor_right_inj` and `lxor_left_inj` into iffs as per convention, prove the corresponding `lxor_right_injective` and `lxor_left_injective` separately. - golf `lxor_eq_zero`, tag it as `simp`, add the corresponding `lxor_ne_zero` lemma. - simplify the hypothesis of `lxor_trichotomy`. ESTIMATED CHANGES Modified src/data/nat/bitwise.lean + theorem nat.lt_lxor_cases + theorem nat.lxor_cancel_left + theorem nat.lxor_cancel_right +/- theorem nat.lxor_eq_zero +/- theorem nat.lxor_left_inj + theorem nat.lxor_left_injective + theorem nat.lxor_ne_zero +/- theorem nat.lxor_right_inj + theorem nat.lxor_right_injective +/- theorem nat.lxor_trichotomy Modified src/set_theory/game/nim.lean 2022-07-17 06:40:32 4dee658 chore(set_theory/zfc): general cleanup (#15208) This PR does the following: - Make `pSet.mk_type_func` into a `simp` lemma, rename to `pSet.eta`. - Give a simpler definition for `pSet.empty`. - Enable dot notation on `resp.equiv` and separate the `symm` and `trans` theorems from the `setoid` instance. - Protect lemmas to avoid trouble between the `equiv` and the `resp.equiv` lemmas. - Tweak some spacing. - Add many missing `simp` tags. ESTIMATED CHANGES Modified src/set_theory/zfc.lean +/- theorem Set.mk_eq +/- theorem Set.subset_iff - theorem pSet.equiv.euc - theorem pSet.equiv.refl - theorem pSet.equiv.rfl - theorem pSet.equiv.symm - theorem pSet.equiv.trans + theorem pSet.eta +/- theorem pSet.mem.mk +/- theorem pSet.mem_Union +/- theorem pSet.mem_empty +/- theorem pSet.mem_powerset - theorem pSet.mk_type_func - theorem pSet.resp.euc - theorem pSet.resp.refl 2022-07-17 04:14:37 7351357 chore(ring_theory/ideal/operations): golf a lemma (#15431) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean 2022-07-17 04:14:36 8822085 feat(order/rel_iso): add lemmas on `rel_iso.cast` (#15430) ESTIMATED CHANGES Modified src/order/rel_iso.lean 2022-07-17 04:14:33 1b23542 feat(measure_theory/integral): generalize some integral properties to set_to_fun (#15423) Now those lemmas can be applied to the conditional expectation as well. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/set_to_l1.lean + theorem measure_theory.tendsto_set_to_fun_approx_on_of_measurable + theorem measure_theory.tendsto_set_to_fun_approx_on_of_measurable_of_range_subset + theorem measure_theory.tendsto_set_to_fun_of_L1 2022-07-17 04:14:31 5a6671a chore(order/basic): remove two lemmas breaking API boundaries (#15401) `order.dual_le` and `order.dual_lt` don't conform to API boundaries, as they abuse the def-eq between `αᵒᵈ` and `α` instead of using `to_dual` or `of_dual` to perform the cast. As such, we remove them. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/field_theory/galois.lean Modified src/order/basic.lean - theorem order_dual.dual_le - theorem order_dual.dual_lt Modified src/order/modular_lattice.lean 2022-07-17 04:14:30 41e467a feat(analysis/complex/abs_max): add a version of the maximum modulus principle (#15364) * Add versions of the maximum modulus principle that assume strict convexity of the codomain and prove `f x = f y` instead of `∥f x∥ = ∥f y∥` * Add a version of the maximum modulus principle for arbitrary open connected sets. * Add supporting lemmas. - More lemmas about strictly convex spaces and norm (`eq_of_norm_eq_of_norm_add_eq`, `same_ray.eq_of_norm_eq`, `same_ray.norm_eq_iff`); - Lemmas about `is_max_*` and `λ x, ∥f x + y∥`. - Generalize `convex.is_preconnected` from `ℝ` to a real vector space. * Improve documentation. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/complex/abs_max.lean + theorem complex.eq_of_is_max_on_of_ball_subset + theorem complex.eq_on_closed_ball_of_is_max_on_norm +/- theorem complex.eq_on_closure_of_eq_on_frontier + theorem complex.eq_on_closure_of_is_preconnected_of_is_max_on_norm +/- theorem complex.eq_on_of_eq_on_frontier + theorem complex.eq_on_of_is_preconnected_of_is_max_on_norm + theorem complex.eventually_eq_of_is_local_max_norm +/- theorem complex.exists_mem_frontier_is_max_on_norm + theorem complex.norm_eq_on_closure_of_is_preconnected_of_is_max_on + theorem complex.norm_eq_on_of_is_preconnected_of_is_max_on +/- theorem complex.norm_le_of_forall_mem_frontier_norm_le Modified src/analysis/convex/strict_convex_space.lean + theorem eq_of_norm_eq_of_norm_add_eq Modified src/analysis/convex/topology.lean Added src/analysis/normed_space/extr.lean + theorem is_local_max.norm_add_same_ray + theorem is_local_max.norm_add_self + theorem is_local_max_on.norm_add_same_ray + theorem is_local_max_on.norm_add_self + theorem is_max_filter.norm_add_same_ray + theorem is_max_filter.norm_add_self + theorem is_max_on.norm_add_same_ray + theorem is_max_on.norm_add_self Modified src/analysis/normed_space/ray.lean + theorem same_ray.eq_of_norm_eq + theorem same_ray.norm_eq_iff 2022-07-17 04:14:28 d857ca6 feat(analysis/calculus/mean_value): remove assumption in strict_mono_on.strict_convex_on_of_deriv (#15133) Currently, the lemma `strict_mono_on.strict_convex_on_of_deriv` states that, if a real function `f` is continuous on a convex set `D`, differentiable on its interior, and `deriv f` is strictly monotone on its interior, then `f` is convex on `D`. We remove the differentiability assumption: since `deriv f` is strictly monotone, there is at most one point of nondifferentiability (as `deriv f x = 0` when `f` is not differentiable), and the result is still true (although the proof is a little bit more complicated) in this case. Of course, in essentially all applications the functions will be differentiable, but the lemma becomes easier to use as the user doesn't need to prove this differentiability. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean + theorem concave_on_of_deriv2_nonpos' - theorem concave_on_open_of_deriv2_nonpos + theorem convex_on_of_deriv2_nonneg' - theorem convex_on_open_of_deriv2_nonneg +/- theorem strict_anti.strict_concave_on_univ_of_deriv + theorem strict_concave_on_of_deriv2_neg' - theorem strict_concave_on_open_of_deriv2_neg +/- theorem strict_concave_on_univ_of_deriv2_neg + theorem strict_convex_on_of_deriv2_pos' - theorem strict_convex_on_open_of_deriv2_pos +/- theorem strict_convex_on_univ_of_deriv2_pos +/- theorem strict_mono.strict_convex_on_univ_of_deriv + theorem strict_mono_on.exists_deriv_lt_slope + theorem strict_mono_on.exists_deriv_lt_slope_aux + theorem strict_mono_on.exists_slope_lt_deriv + theorem strict_mono_on.exists_slope_lt_deriv_aux Modified src/analysis/convex/function.lean Modified src/analysis/convex/specific_functions.lean 2022-07-17 02:10:47 a2c2bc9 feat(topology/noetherian_space): Noetherian spaces (#14965) ESTIMATED CHANGES Modified src/order/compactly_generated.lean + theorem complete_lattice.{u} Added src/topology/noetherian_space.lean + theorem topological_space.noetherian_space.Union + theorem topological_space.noetherian_space.discrete + theorem topological_space.noetherian_space.exists_finset_irreducible + theorem topological_space.noetherian_space.finite + theorem topological_space.noetherian_space.finite_irreducible_components + theorem topological_space.noetherian_space.is_compact + theorem topological_space.noetherian_space.range + theorem topological_space.noetherian_space_iff_of_homeomorph + theorem topological_space.noetherian_space_iff_opens + theorem topological_space.noetherian_space_of_surjective + theorem topological_space.noetherian_space_set_iff + theorem topological_space.noetherian_space_tfae + theorem topological_space.noetherian_univ_iff Modified src/topology/sets/closeds.lean +/- theorem topological_space.closeds.coe_bot + theorem topological_space.closeds.coe_finset_inf + theorem topological_space.closeds.coe_finset_sup +/- theorem topological_space.closeds.coe_inf +/- theorem topological_space.closeds.coe_sup +/- theorem topological_space.closeds.coe_top + def topological_space.closeds.compl + theorem topological_space.closeds.compl_bijective + theorem topological_space.closeds.compl_compl + def topological_space.opens.compl + theorem topological_space.opens.compl_bijective + theorem topological_space.opens.compl_compl Modified src/topology/sets/opens.lean +/- theorem topological_space.opens.coe_Sup +/- theorem topological_space.opens.coe_bot + theorem topological_space.opens.coe_finset_inf + theorem topological_space.opens.coe_finset_sup +/- theorem topological_space.opens.coe_inf + theorem topological_space.opens.coe_sup +/- theorem topological_space.opens.coe_top + theorem topological_space.opens.is_compact_element_iff 2022-07-16 20:36:16 d69acdc feat(data/finset/powerset): More `powerset` lemmas (#15387) `finset.powerset` is injective, and others. ESTIMATED CHANGES Modified src/data/finset/powerset.lean + theorem finset.coe_powerset +/- theorem finset.mem_powerset_self +/- theorem finset.powerset_empty + theorem finset.powerset_eq_singleton_empty + theorem finset.powerset_inj + theorem finset.powerset_injective + theorem finset.powerset_nonempty Modified src/data/fintype/basic.lean + theorem finset.powerset_eq_univ + theorem finset.powerset_univ 2022-07-16 20:36:15 7220773 feat(group_theory/group_action/option): Scalar action on an option (#15239) `has_scalar α β → has_scalar α (option β)` and similar. ESTIMATED CHANGES Added src/group_theory/group_action/option.lean + theorem option.smul_def + theorem option.smul_none + theorem option.smul_some Modified src/group_theory/group_action/pi.lean Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/sum.lean Modified src/logic/function/conjugate.lean + theorem function.commute.option_map + theorem function.semiconj.option_map 2022-07-16 19:33:43 af5c45d feat(algebraic_geometry): Restriction of morphisms onto open sets of the target (#14972) ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.open_cover.add + def algebraic_geometry.Scheme.open_cover.inter + def algebraic_geometry.Scheme.restrict_functor + def algebraic_geometry.Scheme.restrict_map_iso + theorem algebraic_geometry.image_morphism_restrict_preimage + theorem algebraic_geometry.is_open_immersion.range_pullback_fst_of_right + theorem algebraic_geometry.is_open_immersion.range_pullback_snd_of_left + theorem algebraic_geometry.is_open_immersion.range_pullback_to_base_of_left + theorem algebraic_geometry.is_open_immersion.range_pullback_to_base_of_right + def algebraic_geometry.morphism_restrict + theorem algebraic_geometry.morphism_restrict_base_coe + theorem algebraic_geometry.morphism_restrict_c_app + theorem algebraic_geometry.morphism_restrict_comp + theorem algebraic_geometry.morphism_restrict_ι + def algebraic_geometry.pullback_restrict_iso_restrict + theorem algebraic_geometry.pullback_restrict_iso_restrict_hom_morphism_restrict + theorem algebraic_geometry.pullback_restrict_iso_restrict_hom_restrict + theorem algebraic_geometry.pullback_restrict_iso_restrict_inv_fst + theorem algebraic_geometry.Γ_map_morphism_restrict 2022-07-16 18:25:15 13e97da chore(measure_theory/tactic): fix a loop in the measurability tactic (#14813) ESTIMATED CHANGES Modified src/measure_theory/tactic.lean Modified test/measurability.lean 2022-07-16 15:09:12 ff548cd feat(field_theory/adjoin): `F⟮α⟯ ≤ K ↔ α ∈ K` (#15420) I was surprised that we didn't have this lemma already. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_simple_le_iff Modified src/field_theory/primitive_element.lean 2022-07-16 15:09:11 9365548 feat(group_theory/submonoid/pointwise): add the pointwise monoid structure on `add_submonoid` (#15052) This also adds some missing lemmas about powers of submodules. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.le_one_to_add_submonoid + theorem submodule.le_pow_to_add_submonoid +/- theorem submodule.mul_to_add_submonoid + theorem submodule.one_eq_span_one_set + theorem submodule.pow_eq_span_pow_set + theorem submodule.pow_mem_pow + theorem submodule.pow_to_add_submonoid + theorem submodule.span_pow Modified src/group_theory/submonoid/pointwise.lean + theorem add_submonoid.closure_pow + theorem add_submonoid.mem_one + theorem add_submonoid.mul_eq_closure_mul_set + theorem add_submonoid.nat_cast_mem_one + theorem add_submonoid.one_eq_closure + theorem add_submonoid.one_eq_closure_one_set + theorem add_submonoid.one_eq_mrange + theorem add_submonoid.pow_eq_closure_pow_set + theorem add_submonoid.pow_subset_pow 2022-07-16 11:29:43 3644fef chore(category_theory): enough_injectives is dual to enough_projectives (#15395) ESTIMATED CHANGES Modified src/category_theory/preadditive/injective.lean + theorem category_theory.injective.enough_injectives_of_enough_projectives_op + theorem category_theory.injective.enough_projectives_of_enough_injectives_op 2022-07-16 11:29:42 6dd5e43 feat(measure_theory/function/uniform_integrable): conditional expectations form a uniformly integrable class (#15378) Useful for the L1 martingale convergence theorem. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.integrable.uniform_integrable_condexp + theorem measure_theory.snorm_one_condexp_le_snorm Modified src/probability/stopping.lean + theorem measure_theory.integrable.uniform_integrable_condexp_filtration 2022-07-16 11:29:41 b8aa28d feat(category_theory): limits of essentially small indexing categories (#15377) ESTIMATED CHANGES Modified src/category_theory/essentially_small.lean + theorem category_theory.discrete.essentially_small_of_small Added src/category_theory/limits/essentially_small.lean + theorem category_theory.limits.has_colimits_of_shape_of_essentially_small + theorem category_theory.limits.has_coproducts_of_shape_of_small + theorem category_theory.limits.has_limits_of_shape_of_essentially_small + theorem category_theory.limits.has_products_of_shape_of_small 2022-07-16 11:29:40 57c7d94 feat(field_theory/adjoin): The compositum of finitely many finite dimensional intermediate fields is finite dimensional (#15339) This PR adds an instance stating that the compositum of finitely many finite dimensional intermediate fields is finite dimensional. The proof is a bit janky, unfortunately. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean - theorem intermediate_field.finite_dimensional_sup +/- theorem intermediate_field.le_sup_to_subalgebra +/- theorem intermediate_field.sup_to_subalgebra 2022-07-16 11:29:39 3d6c3b6 feat(geometry/manifold|topology): add simps and ext attributes (#15314) * From the sphere eversion project ESTIMATED CHANGES Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- def model_with_corners.prod + def model_with_corners.simps.apply + def model_with_corners.simps.symm_apply Modified src/geometry/manifold/tangent_bundle.lean +/- def tangent_bundle_core Modified src/topology/fiber_bundle.lean + theorem topological_fiber_bundle.trivialization.to_pretrivialization_injective Modified src/topology/vector_bundle/basic.lean + theorem topological_vector_bundle.trivialization.to_pretrivialization_injective 2022-07-16 11:29:38 21a387f feat(algebra/order/monoid_lemmas): add `antitone`, `monotone_on`, and `antitone_on` lemmas (#15267) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean + theorem antitone.const_mul' + theorem antitone.mul' + theorem antitone.mul_const' + theorem antitone.mul_strict_anti' + theorem antitone_on.const_mul' + theorem antitone_on.mul' + theorem antitone_on.mul_const' + theorem antitone_on.mul_strict_anti' + theorem monotone_on.const_mul' + theorem monotone_on.mul' + theorem monotone_on.mul_const' + theorem monotone_on.mul_strict_mono' + theorem strict_anti.const_mul' + theorem strict_anti.mul' + theorem strict_anti.mul_antitone' + theorem strict_anti.mul_const' + theorem strict_anti_on.const_mul' + theorem strict_anti_on.mul' + theorem strict_anti_on.mul_antitone' + theorem strict_anti_on.mul_const' +/- theorem strict_mono.const_mul' +/- theorem strict_mono.mul_const' + theorem strict_mono_on.const_mul' + theorem strict_mono_on.mul' + theorem strict_mono_on.mul_const' + theorem strict_mono_on.mul_monotone' 2022-07-16 11:29:37 4538aeb feat(data/finset/fold): add lemma `fold_max_add` (#15257) The lemma shows that adding inside or outside a "max-fold" amounts to the same. It is the folded version of docs#max_add_add_right. ESTIMATED CHANGES Modified src/data/finset/fold.lean + theorem finset.fold_max_add 2022-07-16 11:29:36 624716b feat(ring_theory/tensor_product): `A`-algebra structure on `A' ⊗[R] B`. (#15241) ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean +/- theorem algebra.tensor_product.algebra_map_apply + def algebra.tensor_product.include_left_ring_hom + def algebra.tensor_product.product_left_alg_hom +/- theorem algebra.tensor_product.product_map_left_apply - def algebra.tensor_product.tensor_algebra_map 2022-07-16 11:29:35 316d188 feat(order/filter): add `map_neg_at_top`, change some assumptions (#15237) * add `map_neg_at_top`, `map_neg_at_bot`, `comap_neg_at_top`, and `comap_neg_at_bot`; * add `disjoint_pure_at_top`, `disjoint_pure_at_bot`, `not_tendsto_const_at_top`, `not_tendsto_const_at_bot`; * more lemmas about `order_iso` and `at_top`/`at_bot` up, no modifications to the code; * rename `tendsto_at_top_iff_tends_to_neg_at_bot` to `tendsto_neg_at_top_iff`, swap LHS and RHS, mark as `@[simp]`; * rename `tendsto_at_bot_iff_tends_to_neg_at_top` to `tendsto_neg_at_bot_iff`, swap LHS and RHS, mark as `@[simp]`; * use `n ≠ 0` instead of `1 ≤ n` in `tendsto_pow_at_top`, `tendsto_const_mul_pow_at_top`, `tendsto_const_mul_pow_at_top_iff`, `tendsto_neg_const_mul_pow_at_top`, `tendsto_neg_const_mul_pow_at_top_iff`. ESTIMATED CHANGES Modified src/analysis/asymptotics/specific_asymptotics.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/polynomials.lean +/- theorem polynomial.abs_tendsto_at_top +/- theorem polynomial.tendsto_at_bot_of_leading_coeff_nonpos +/- theorem polynomial.tendsto_at_top_of_leading_coeff_nonneg Modified src/analysis/specific_limits/normed.lean Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.leading_coeff_neg Modified src/order/filter/archimedean.lean Modified src/order/filter/at_top_bot.lean + theorem filter.comap_neg_at_bot + theorem filter.comap_neg_at_top + theorem filter.disjoint_pure_at_bot + theorem filter.disjoint_pure_at_top + theorem filter.map_neg_at_bot + theorem filter.map_neg_at_top + theorem filter.not_tendsto_const_at_bot + theorem filter.not_tendsto_const_at_top - theorem filter.tendsto_at_bot_iff_tends_to_neg_at_top - theorem filter.tendsto_at_top_iff_tends_to_neg_at_bot + theorem filter.tendsto_const_mul_pow_at_bot_iff +/- theorem filter.tendsto_const_mul_pow_at_top_iff + theorem filter.tendsto_neg_at_bot_iff + theorem filter.tendsto_neg_at_top_iff - theorem filter.tendsto_neg_const_mul_pow_at_top_iff +/- theorem filter.tendsto_pow_at_top Modified src/topology/algebra/order/basic.lean + theorem tendsto_const_mul_pow_nhds_iff' + theorem tendsto_const_mul_zpow_at_top_nhds_iff - theorem tendsto_const_mul_zpow_at_top_zero_iff +/- theorem tendsto_pow_neg_at_top 2022-07-16 11:29:34 511a9f7 feat(algebra/gcd_monoid): GCD domains are integrally closed. (#15109) ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean + theorem extract_gcd + theorem is_unit_gcd_of_eq_mul_gcd Added src/algebra/gcd_monoid/integrally_closed.lean + theorem is_localization.surj_of_gcd_domain Modified src/ring_theory/polynomial/eisenstein.lean + theorem polynomial.dvd_pow_nat_degree_of_aeval_eq_zero + theorem polynomial.dvd_pow_nat_degree_of_eval₂_eq_zero + theorem polynomial.scale_roots.is_weakly_eisenstein_at Modified src/ring_theory/polynomial/scale_roots.lean - theorem coeff_scale_roots - theorem coeff_scale_roots_nat_degree - theorem degree_scale_roots - theorem monic_scale_roots_iff - theorem nat_degree_scale_roots + theorem polynomial.coeff_scale_roots + theorem polynomial.coeff_scale_roots_nat_degree + theorem polynomial.degree_scale_roots + theorem polynomial.monic_scale_roots_iff + theorem polynomial.nat_degree_scale_roots + theorem polynomial.scale_roots_aeval_eq_zero + theorem polynomial.scale_roots_aeval_eq_zero_of_aeval_div_eq_zero + theorem polynomial.scale_roots_eval₂_eq_zero + theorem polynomial.scale_roots_eval₂_eq_zero_of_eval₂_div_eq_zero + theorem polynomial.scale_roots_ne_zero + theorem polynomial.support_scale_roots_eq + theorem polynomial.support_scale_roots_le + theorem polynomial.zero_scale_roots - theorem scale_roots_aeval_eq_zero - theorem scale_roots_aeval_eq_zero_of_aeval_div_eq_zero - theorem scale_roots_eval₂_eq_zero - theorem scale_roots_eval₂_eq_zero_of_eval₂_div_eq_zero - theorem scale_roots_ne_zero - theorem support_scale_roots_eq - theorem support_scale_roots_le - theorem zero_scale_roots 2022-07-16 11:29:33 9becea2 feat(algebra/order/monoid_lemmas_zero_lt): add some lemmas about typeclasses (#14761) ~~Rename some instances for consistency.~~ Some git messages are from the previous PR. Maybe it's because I performed some improper operations. I didn't find out the way to remove them. Sorry for that. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean - theorem zero_lt.le_of_le_mul_of_le_one_right' + theorem zero_lt.mul_pos_mono.to_mul_pos_reflect_lt + theorem zero_lt.mul_pos_mono.to_mul_pos_strict_mono + theorem zero_lt.mul_pos_mono_iff_mul_pos_reflect_lt + theorem zero_lt.mul_pos_mono_iff_mul_pos_strict_mono + theorem zero_lt.mul_pos_mono_rev.to_mul_pos_strict_mono + theorem zero_lt.mul_pos_mono_rev_iff_mul_pos_reflect_lt + theorem zero_lt.mul_pos_reflect_lt.to_mul_pos_mono + theorem zero_lt.mul_pos_reflect_lt.to_mul_pos_mono_rev + theorem zero_lt.mul_pos_strict_mono_iff_mul_pos_mono_rev + theorem zero_lt.pos_mul_mono.to_pos_mul_reflect_lt + theorem zero_lt.pos_mul_mono.to_pos_mul_strict_mono + theorem zero_lt.pos_mul_mono_iff_mul_pos_mono + theorem zero_lt.pos_mul_mono_iff_pos_mul_reflect_lt + theorem zero_lt.pos_mul_mono_iff_pos_mul_strict_mono + theorem zero_lt.pos_mul_mono_rev.to_pos_mul_strict_mono + theorem zero_lt.pos_mul_mono_rev_iff_mul_pos_mono_rev + theorem zero_lt.pos_mul_mono_rev_iff_pos_mul_reflect_lt + theorem zero_lt.pos_mul_reflect_lt.to_pos_mul_mono + theorem zero_lt.pos_mul_reflect_lt.to_pos_mul_mono_rev + theorem zero_lt.pos_mul_reflect_lt_iff_mul_pos_reflect_lt + theorem zero_lt.pos_mul_strict_mono_iff_mul_pos_strict_mono + theorem zero_lt.pos_mul_strict_mono_iff_pos_mul_mono_rev + theorem zero_lt.preorder.le_of_le_mul_of_le_one_right 2022-07-16 08:56:04 367714d fix(tactic/solve_by_elim): apply_assumption argument parsing (#15394) The optional list of expressions to `apply_assumption` should be parsed interactively. This fixes a bug where `none` would have to be provided before a config object. ESTIMATED CHANGES Modified src/tactic/solve_by_elim.lean Modified test/solve_by_elim.lean 2022-07-16 08:56:03 8963fcf feat(data/json): helper functions for json serialization (#15207) The key feature here is: ```lean @[derive non_null_json_serializable] structure my_type (yval : bool) := (x : nat) (f : fin x) (y : bool := tt) (h : y = yval) ``` which generates the obvious serialization to json and deserialization from json of the above type. This makes communicating with other external programs a lot easier, rather than having to manually write code to disassemble json into lean structures. ESTIMATED CHANGES Added src/data/json.lean Added test/json.lean + structure has_default + structure my_type + structure no_fields 2022-07-16 08:13:30 45e412d chore(number_theory/number_field): remove duplicate name (#15400) ESTIMATED CHANGES Modified src/number_theory/number_field.lean 2022-07-16 04:45:36 ced1113 feat(order/bounded_order): two lemmas about the interaction between monotonicity and map with_bot/top (#15341) Pulled out of #15294, that I ~plan to~ closed. ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem with_bot.map_le_iff + theorem with_top.map_le_iff Modified src/order/hom/basic.lean 2022-07-16 02:20:10 6812328 feat(data/countable): add `countable` typeclass (#15280) Also add a few new operations on `equiv`s. ESTIMATED CHANGES Added src/data/countable/basic.lean + theorem countable_iff_nonempty_embedding + theorem nonempty_embedding_nat Added src/data/countable/defs.lean + theorem countable.of_equiv + theorem countable_iff_exists_surjective + theorem equiv.countable_iff + theorem exists_surjective_nat Modified src/logic/equiv/basic.lean + def equiv.pprod_congr + def equiv.pprod_prod + def equiv.prod_pprod + def equiv.psum_congr + def equiv.psum_sum + def equiv.sum_psum 2022-07-15 23:14:20 2dbbe57 feat(ring_theory/power_series/basic): Add `rescale_X` (#15397) ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.rescale_X +/- theorem power_series.rescale_neg_one_X 2022-07-15 23:14:19 dc7ab9e feat(measure_theory/measure/finite_measure_weak_convergence): Add some missing API lemmas. (#15205) Add API lemmas about extentionality of `finite_measure` and `probability_measure`, about `0 : finite_measure X`, and about scalar multiplication on `finite_measure`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.smul_to_nnreal Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem measure_theory.finite_measure.coe_fn_smul_apply + theorem measure_theory.finite_measure.extensionality + theorem measure_theory.finite_measure.mass_zero_iff + theorem measure_theory.finite_measure.smul_test_against_nn_apply + theorem measure_theory.finite_measure.zero.mass + theorem measure_theory.finite_measure.zero.test_against_nn + theorem measure_theory.finite_measure.zero.test_against_nn_apply + theorem measure_theory.probability_measure.extensionality 2022-07-15 23:14:18 7c54be8 feat(group_theory/group_action/sub_mul_action): add the pointwise monoid structure (#15050) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem sub_mul_action.algebra_map_mem + theorem sub_mul_action.mem_one' + theorem submodule.to_sub_mul_action_one Added src/group_theory/group_action/sub_mul_action/pointwise.lean + theorem sub_mul_action.coe_mul + theorem sub_mul_action.coe_one + theorem sub_mul_action.coe_pow + theorem sub_mul_action.mem_mul + theorem sub_mul_action.mem_one + theorem sub_mul_action.subset_coe_one + theorem sub_mul_action.subset_coe_pow 2022-07-15 23:14:17 884dde3 feat(category_theory): (co)products and (co)separators (#14880) ESTIMATED CHANGES Modified src/category_theory/generator.lean + theorem category_theory.is_coseparator_pi + theorem category_theory.is_coseparator_pi_of_is_coseparator + theorem category_theory.is_coseparator_prod + theorem category_theory.is_coseparator_prod_of_is_coseparator_left + theorem category_theory.is_coseparator_prod_of_is_coseparator_right + theorem category_theory.is_separator_coprod + theorem category_theory.is_separator_coprod_of_is_separator_left + theorem category_theory.is_separator_coprod_of_is_separator_right + theorem category_theory.is_separator_sigma + theorem category_theory.is_separator_sigma_of_is_separator 2022-07-15 20:48:43 f23205e feat(data/vector/basic): make the recursor work with `induction _ using` syntax (#15383) The `induction` tactic is picky about the order of its arguments, especially when the motive is dependently-typed. Attempting to use `induction v using vector.induction_on` gives the error: > invalid user defined recursor, type of the major premise 'v' does not contain the recursor index 'C' which indicates that the argument order has confused Lean into thinking that the motive is an index. The cause here was that the motive `C` was between the indices (`n`) and the major premise (`v`). ESTIMATED CHANGES Modified src/data/vector/basic.lean 2022-07-15 20:48:42 b560d40 feat(data/sum/basic): `sum.lift_rel` is a subrelation of `sum.lex` (#15358) Also trivial spacing fix. ESTIMATED CHANGES Modified src/data/sum/basic.lean +/- theorem sum.lex.mono_right + theorem sum.lift_rel_subrelation_lex 2022-07-15 20:48:40 7929a63 feat(set_theory/zfc): more `quotient` lemmas (#15324) It seems like we decided to use a custom `mk` definition for `Set` instead of `quotient.mk`. As such, we transfer the basic results on quotients to `Set`, in order to aid rewriting. ESTIMATED CHANGES Modified src/set_theory/zfc.lean + theorem Set.eq + theorem Set.exact +/- theorem Set.mk_eq + theorem Set.mk_out + theorem Set.sound 2022-07-15 18:31:03 15da625 chore(analysis/locally_convex): golf a proof (#15323) ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean 2022-07-15 18:31:02 959586c feat(analysis/special_functions/polar_coord): define polar coordinates, polar change of variable formula in integrals (#15258) ESTIMATED CHANGES Added src/analysis/special_functions/polar_coord.lean + theorem has_fderiv_at_polar_coord_symm + theorem integral_comp_polar_coord_symm + def polar_coord + theorem polar_coord_source_ae_eq_univ 2022-07-15 18:31:00 f6e9ec3 chore(ring_theory/ideal/operations): generalise some typeclasses (#15200) Using the generalisation linter mostly. Some more changes are possible surrounding map / comap, but they involve more restructuring, and I want to explore the right definitions of map and comap separately. All changes here are of the form: dropping commutativity, changing domain to no_zero_divisors (i.e. not assuming nontriviality), or dropping subtraction (ring to semiring). ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean +/- theorem associates.mk_ne_zero' +/- theorem ideal.add_eq_sup +/- theorem ideal.mul_eq_bot +/- theorem ideal.radical_bot_of_is_domain +/- theorem ideal.subset_union 2022-07-15 18:30:59 9c8bc91 feat(linear_algebra/linear_pmap): construct a `linear_pmap` from its graph (#14922) Define a partial linear map from its graph. This is a key step in constructing the closure of an linear operator. ESTIMATED CHANGES Modified src/linear_algebra/linear_pmap.lean + theorem submodule.exists_unique_from_graph + theorem submodule.mem_graph_to_linear_pmap + def submodule.to_linear_pmap + theorem submodule.to_linear_pmap_graph_eq + def submodule.val_from_graph + theorem submodule.val_from_graph_mem 2022-07-15 15:49:47 ecaa289 feat(data/finset/basic): lemmas about `filter`, `cons`, and `disj_union` (#15385) The lemma names and statements match the existing multiset versions. ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- def finset.disj_union + theorem finset.disj_union_comm + theorem finset.disj_union_empty + theorem finset.disj_union_singleton + theorem finset.empty_disj_union + theorem finset.filter_cons + theorem finset.filter_cons_of_neg + theorem finset.filter_cons_of_pos + theorem finset.filter_disj_union + theorem finset.singleton_disj_union 2022-07-15 15:49:46 6b2ebac chore(category_theory/limits): clean up splittings of (co)product morphisms (#15382) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/zero_morphisms.lean 2022-07-15 15:49:46 c271266 feat(ring_theory): the integral closure `C` of `A` is Noetherian over `A` (#15381) where `A` is an integrally closed Noetherian domain and `C` is the closure in a finite separable extension `L` of `Frac(A)` I was going to use this in https://github.com/leanprover-community/mathlib/pull/15315 but it turns out we don't assume separability there. Since it might still be useful elsewhere, I turned it into a new PR. The proof was already in mathlib, as part of showing that the integral closure of a Dedekind domain is Noetherian, so I could just split off the part that dealt with Noetherianness. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/integral_closure.lean + theorem is_integral_closure.is_noetherian 2022-07-15 15:49:45 30220eb feat(order/rel_iso): relation embedding from empty type (#15372) ESTIMATED CHANGES Modified src/order/rel_iso.lean + def rel_embedding.of_is_empty 2022-07-15 15:49:43 d6b861b chore(algebra/order/archimedean): Move material to correct files (#15290) Move `round` and some `floor` lemmas to `algebra.order.floor`. Move the `rat.cast` lemmas about `floor` and `ceil` to `data.rat.floor`. Merge a few sections together now that unrelated lemmas are gone. ESTIMATED CHANGES Modified src/algebra/order/archimedean.lean - theorem abs_sub_round +/- theorem archimedean_iff_nat_le +/- theorem archimedean_iff_nat_lt +/- theorem archimedean_iff_rat_le +/- theorem archimedean_iff_rat_lt +/- theorem exists_mem_Ico_zpow +/- theorem exists_mem_Ioc_zpow +/- theorem exists_nat_pow_near_of_lt_one +/- theorem exists_pow_lt_of_lt_one +/- theorem exists_rat_gt +/- theorem exists_rat_near - theorem rat.cast_fract - theorem rat.ceil_cast - theorem rat.floor_cast - theorem rat.round_cast - def round - theorem round_one - theorem round_zero - theorem sub_floor_div_mul_lt - theorem sub_floor_div_mul_nonneg Modified src/algebra/order/floor.lean + theorem abs_sub_round + theorem int.sub_floor_div_mul_lt + theorem int.sub_floor_div_mul_nonneg + def round + theorem round_one + theorem round_zero Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/data/rat/floor.lean + theorem rat.cast_fract + theorem rat.ceil_cast + theorem rat.floor_cast + theorem rat.round_cast 2022-07-15 15:49:42 8199f67 feat(ring_theory/power_series/well_known): Coefficients of sin and cos (#15287) This PR adds lemmas for the coefficients of sin and cos. ESTIMATED CHANGES Modified src/ring_theory/power_series/well_known.lean + theorem power_series.coeff_cos_bit0 + theorem power_series.coeff_cos_bit1 + theorem power_series.coeff_sin_bit0 + theorem power_series.coeff_sin_bit1 2022-07-15 15:49:41 85cd3e6 feat(category_theory/yoneda): coyoneda.obj_op_op (#14831) ESTIMATED CHANGES Modified src/category_theory/yoneda.lean + def category_theory.coyoneda.obj_op_op 2022-07-15 13:58:45 0807d66 chore(linear_algebra/alternating): add an is_central_scalar instance (#15359) ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean 2022-07-15 13:58:34 fc63bdd chore(linear_algebra/matrix/hermitian): move `matrix.conj_transpose_map` to the same file as `matrix.transpose_map` (#15297) Also restates the hypothesis using `function.semiconj` since that has more API and is definitionally easier to work with. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.conj_transpose_map Modified src/linear_algebra/matrix/hermitian.lean - theorem matrix.conj_transpose_map 2022-07-15 13:03:06 1a424e1 chore(number_theory/modular): add missing lemmas to squeeze simps (#15351) I was running into some timeouts in `exists_smul_mem_fd` when making some other changes; this extracts some `simp` calls to standalone lemmas. These lemmas don't have particularly fast proofs either, but the statements are much simpler so will be easier to speed up in future if we need to. Simp-normal form in this file seems to aggressively unfold to matrices, so we can't mark these new lemmas `simp`. At some point the simp lemmas for modular forms might want to be revisited. ESTIMATED CHANGES Modified src/number_theory/modular.lean + theorem modular_group.T_inv_mul_apply_one + theorem modular_group.T_mul_apply_one + theorem modular_group.T_pow_mul_apply_one + theorem modular_group.im_T_inv_smul + theorem modular_group.im_T_smul + theorem modular_group.im_T_zpow_smul + theorem modular_group.re_T_inv_smul + theorem modular_group.re_T_smul + theorem modular_group.re_T_zpow_smul 2022-07-15 12:02:33 ca872b6 style(set_theory/game/nim): `O` → `o` (#15361) This is the only file that uses uppercase variable names for ordinals - we standardize it to match all the others. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean +/- theorem pgame.grundy_value_eq_iff_equiv_nim +/- theorem pgame.nim.add_equiv_zero_iff_eq +/- theorem pgame.nim.add_fuzzy_zero_iff_ne +/- theorem pgame.nim.equiv_iff_eq +/- theorem pgame.nim.exists_move_left_eq +/- theorem pgame.nim.exists_ordinal_move_left_eq +/- theorem pgame.nim.grundy_value +/- theorem pgame.nim.left_moves_nim +/- theorem pgame.nim.move_left_nim' +/- theorem pgame.nim.move_left_nim +/- theorem pgame.nim.move_left_nim_heq +/- theorem pgame.nim.move_right_nim' +/- theorem pgame.nim.move_right_nim +/- theorem pgame.nim.move_right_nim_heq +/- theorem pgame.nim.neg_nim +/- theorem pgame.nim.nim_birthday +/- theorem pgame.nim.nim_def +/- theorem pgame.nim.non_zero_first_wins +/- theorem pgame.nim.right_moves_nim +/- theorem pgame.nim.to_left_moves_nim_symm_lt +/- theorem pgame.nim.to_right_moves_nim_symm_lt 2022-07-15 12:02:32 ecef686 feat(algebra/category/Group): The forgetful-units adjunction between `Group` and `Mon`. (#15330) ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean + def CommGroup.forget₂_CommMon_adj + def CommMon.units + def Group.forget₂_Mon_adj + def Mon.units 2022-07-15 12:02:31 863a30a feat(category_theory/*/algebra): epi_of_epi and mono_of_mono (#15121) This PR proves that a morphism whose underlying carrier part is an epi/mono, is itself an epi/mono. Migrated and generalised from #LTE. ESTIMATED CHANGES Modified src/category_theory/endofunctor/algebra.lean + theorem category_theory.endofunctor.algebra.epi_of_epi + theorem category_theory.endofunctor.algebra.mono_of_mono + theorem category_theory.endofunctor.coalgebra.epi_of_epi + theorem category_theory.endofunctor.coalgebra.mono_of_mono Modified src/category_theory/monad/algebra.lean + theorem category_theory.comonad.algebra_epi_of_epi + theorem category_theory.comonad.algebra_mono_of_mono + theorem category_theory.monad.algebra_epi_of_epi + theorem category_theory.monad.algebra_mono_of_mono 2022-07-15 10:49:36 72d7b4e feat(measure_theory/measure/measure_space): generalize measure.comap (#15343) Generalize comap to functions verifying `injective f ∧ ∀ s, measurable_set s → null_measurable_set (f '' s) μ`. ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean +/- def measure_theory.measure.comap + theorem measure_theory.measure.comap_apply₀ + def measure_theory.measure.comapₗ + theorem measure_theory.measure.comapₗ_apply + theorem measure_theory.measure.comapₗ_eq_comap 2022-07-15 10:49:35 4f23c9b feat(number_theory/slash_actions): Slash actions class for modular forms (#15007) We define a new class of slash actions which are to be used in the definition of modular forms (see #13250). ESTIMATED CHANGES Added src/number_theory/modular_forms/slash_actions.lean + def modular_forms.slash + theorem modular_forms.slash_add + theorem modular_forms.slash_mul_one + theorem modular_forms.slash_right_action + theorem modular_forms.smul_slash + def monoid_hom_slash_action 2022-07-15 09:35:51 e166cce chore(analysis/inner_product_space): split slow proof (#15271) This proof times out in the kernel at about 90 000 out of 100 000 heartbeats, and #14894 pushed it over the edge of timing out (except #15251 upped the timeout limits so everything sitll builds at the moment). I don't know enough about the kernel to debug why it doesn't like this proof, but splitting it into a `rw` part and a part that uses defeq seems to fix the timeout (moving it back down to about 60 000 out of 100 000 heartbeats). Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Timeout.20in.20the.20kernel/near/289294804 ESTIMATED CHANGES Modified src/analysis/inner_product_space/l2_space.lean + theorem orthonormal.linear_isometry_equiv_symm_apply_single_one 2022-07-15 09:35:50 fc78e3c feat(category_theory/abelian/*): functors that preserve finite limits and colimits preserve exactness (#14581) If $F$ is a functor between two abelian categories which preserves limits and colimits, then it preserves exactness. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/exact.lean + theorem category_theory.functor.map_exact Added src/category_theory/limits/preserves/shapes/images.lean + theorem category_theory.preserves_image.factor_thru_image_comp_hom + theorem category_theory.preserves_image.hom_comp_map_image_ι + theorem category_theory.preserves_image.inv_comp_image_ι_map + def category_theory.preserves_image.iso Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.image.is_image_lift 2022-07-15 07:02:47 5e2e804 feat(order/bounded_order): `subrelation r s ↔ r ≤ s` (#15357) We have to place the lemma here, since comparing relations requires `has_le Prop`. I haven't made any judgement on whether either of them should be a simp-normal form. ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem subrelation_iff_le 2022-07-15 07:02:46 2406dc5 feat(topology/support): tsupport of product is a subset of tsupport (#15346) ESTIMATED CHANGES Modified src/topology/support.lean + theorem tsupport_mul_subset_left + theorem tsupport_mul_subset_right 2022-07-15 07:02:44 daf1117 feat(field_theory/tower): if `L / K / F` is finite, so is `K / F` (#15303) This result came up in the discussion of #15191, where I couldn't find it. (In the end we didn't up needing it.) I saw we already had finiteness of `L / K` (in fact, for any vector space instead of the field `L`) as `finite_dimensional.right`, so I made the `left` version too. Also use this to provide an instance where `K` is an intermediate field. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean Modified src/field_theory/tower.lean + theorem finite_dimensional.left 2022-07-15 05:42:11 2123bc3 feat(measure_theory/measurable_space_def): add `generate_from_induction` (#15342) This lemma does (almost?) the same thing as `induction (ht : measurable_set[generate_from C] t)`, but the hypotheses in the generated subgoals are much easier to read. ESTIMATED CHANGES Modified src/measure_theory/measurable_space_def.lean + theorem measurable_space.generate_from_induction 2022-07-15 05:42:10 0e72a4e feat(data/polynomial/laurent): define `degree` and some API (#15225) This PR introduces the `degree` for Laurent polynomials. It takes values in `with_bot ℤ`and is defined as `f.support.max`. It may make sense to define a "degree" on any `add_monoid_algebra` whose value group is `linear_ordered`, but I am only defining `degree` for Laurent polynomials. The PR also proves some API lemmas about support and relationship between the degree of a Laurent polynomial and the degree with polynomials, seen as Laurent polynomials. In future PRs I intend to define also `int_degree`, analogous to `nat_degree` of polynomials. ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean + def laurent_polynomial.degree + theorem laurent_polynomial.degree_C + theorem laurent_polynomial.degree_C_ite + theorem laurent_polynomial.degree_C_le + theorem laurent_polynomial.degree_C_mul_T + theorem laurent_polynomial.degree_C_mul_T_ite + theorem laurent_polynomial.degree_C_mul_T_le + theorem laurent_polynomial.degree_T + theorem laurent_polynomial.degree_T_le + theorem laurent_polynomial.degree_eq_bot_iff + theorem laurent_polynomial.degree_zero + theorem laurent_polynomial.support_C_mul_T + theorem laurent_polynomial.support_C_mul_T_of_ne_zero + theorem laurent_polynomial.to_laurent_support + theorem polynomial.to_laurent_ne_zero 2022-07-15 01:25:38 09a7f7a refactor(algebra/algebra/subalgebra/basic): Remove `'` from `subalgebra.comap'` (#15349) This PR removes `'` from `subalgebra.comap'`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean +/- theorem algebra.comap_top - def subalgebra.comap' + def subalgebra.comap +/- theorem subalgebra.gc_map_comap Modified src/topology/algebra/algebra.lean - theorem subalgebra.topological_closure_comap'_homeomorph + theorem subalgebra.topological_closure_comap_homeomorph Modified src/topology/continuous_function/polynomial.lean - theorem polynomial_functions.comap'_comp_right_alg_hom_Icc_homeo_I + theorem polynomial_functions.comap_comp_right_alg_hom_Icc_homeo_I Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/continuous_function/weierstrass.lean 2022-07-15 01:25:37 8d749e6 refactor(field_theory/*): Replace weaker `alg_hom.fintype` with stronger `alg_hom.fintype` (#15345) Mathlib has two instances of `alg_hom.fintype`. The version in `field_theory.fixed` is weaker (it assumes finite-dimensionality of the target). The version in `field_theory.primitive_element` is stronger (it does not assume finite-dimensionality of the target). So why not replace the weaker version by the stronger version? ESTIMATED CHANGES Modified src/field_theory/fixed.lean + theorem aux_inj_roots_of_min_poly Modified src/field_theory/primitive_element.lean - theorem field.aux_inj_roots_of_min_poly 2022-07-15 01:25:36 b8b18fa feat(order/complete_boolean_algebra): A frame is distributive (#15340) `frame α`/`coframe α` imply `distrib_lattice α`. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean Modified src/order/lattice.lean + def distrib_lattice.of_inf_sup_le 2022-07-15 01:25:35 11bfd9c chore(logic/equiv/basic): remove `nolint` (#15329) ESTIMATED CHANGES Modified src/logic/equiv/basic.lean 2022-07-15 01:25:34 6f48d95 feat(ring_theory/localization/basic): add `mk_sum` (#15261) add a missing lemma stating that $\frac{\sum_i, a\_i}{b}=\sum_i\frac{a_i}b$ ESTIMATED CHANGES Modified src/ring_theory/localization/basic.lean + def localization.mk_add_monoid_hom + theorem localization.mk_list_sum + theorem localization.mk_multiset_sum + theorem localization.mk_sum 2022-07-14 22:11:08 635b858 doc(logic/equiv/basic): explicitly state functions equivalences are based on (#15354) This should make them more searchable. Also some trivial spacing fixes. ESTIMATED CHANGES Modified src/logic/equiv/basic.lean 2022-07-14 22:11:07 466b892 feat(analysis/asymptotics/asymptotics): generalize, golf (#15010) * add `is_o_iff_nat_mul_le`, `is_o_iff_nat_mul_le'`, `is_o_irrefl`, `is_O.not_is_o`, `is_o.not_is_O`; * generalize lemmas about `1 = o(f)`, `1 = O(f)`, `f = o(1)`, `f = O(1)` to `[has_one F] [norm_one_class F]`, add some `@[simp]` attrs; * rename `is_O_one_of_tendsto` to `filter.tendsto.is_O_one`; * golf some proofs ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O.not_is_o +/- theorem asymptotics.is_O.trans_tendsto_nhds +/- theorem asymptotics.is_O_const_one + theorem asymptotics.is_O_iff_is_bounded_under_le_div + theorem asymptotics.is_O_one_iff - theorem asymptotics.is_O_one_of_tendsto +/- theorem asymptotics.is_O_with_const_one + theorem asymptotics.is_O_with_inv + theorem asymptotics.is_o.not_is_O + theorem asymptotics.is_o_iff_nat_mul_le' + theorem asymptotics.is_o_iff_nat_mul_le + theorem asymptotics.is_o_iff_nat_mul_le_aux + theorem asymptotics.is_o_irrefl' + theorem asymptotics.is_o_irrefl +/- theorem asymptotics.is_o_one_iff + theorem asymptotics.is_o_one_left_iff + theorem filter.tendsto.is_O_one Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/phragmen_lindelof.lean 2022-07-14 17:53:30 356f889 golf(data/polynomial/degree/definitions): golf three proofs (#15236) Lemmas `degree_update_le`, `degree_nonneg_iff_ne_zero` and `degree_le_iff_coeff_zero` have shorter proofs. All three lemmas use the same axioms as they did before: ```lean propext quot.sound classical.choice ``` The golfing in `degree_le_iff_coeff_zero` is motivated by #15199, where the older version no longer compiles. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean 2022-07-14 17:53:29 0bea64b feat(ring_theory/integrally_closed): if x is in Frac R such that x^n is in R then x is in R (#12812) ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral.pow_iff + theorem is_integral_of_pow Modified src/ring_theory/integrally_closed.lean + theorem is_integrally_closed.exists_algebra_map_eq_of_is_integral_pow + theorem is_integrally_closed.exists_algebra_map_eq_of_pow_mem_subalgebra +/- theorem is_integrally_closed.is_integral_iff 2022-07-14 13:52:46 f3fac40 feat(data/fin/basic): add a reflected instance (#15337) This helps with writing tactics to expand fixed-size matrices into their components. This instance is written using the same approach as the `int.has_reflect` instance. ESTIMATED CHANGES Modified src/data/fin/basic.lean 2022-07-14 13:52:45 48b7ad6 chore(*): upgrade to lean 3.45.0c (#15325) The `decidable_eq json` instance has moved to core, since it was needed for tests there too. ESTIMATED CHANGES Modified leanpkg.toml Modified test/polyrith.lean 2022-07-14 13:52:44 51f5e6c feat(algebra/module/linear_map): use morphisms class for lemmas about linear [pre]images of `c • S` (#15103) ESTIMATED CHANGES Modified src/algebra/module/equiv.lean - theorem linear_equiv.image_smul_set - theorem linear_equiv.image_smul_setₛₗ - theorem linear_equiv.preimage_smul_set - theorem linear_equiv.preimage_smul_setₛₗ Modified src/algebra/module/linear_map.lean + theorem image_smul_set + theorem image_smul_setₛₗ - theorem linear_map.image_smul_set - theorem linear_map.image_smul_setₛₗ - theorem linear_map.preimage_smul_set - theorem linear_map.preimage_smul_setₛₗ + theorem preimage_smul_set + theorem preimage_smul_setₛₗ Modified src/analysis/locally_convex/bounded.lean Modified src/measure_theory/function/jacobian.lean Modified src/topology/algebra/module/basic.lean - theorem continuous_linear_equiv.image_smul_set - theorem continuous_linear_equiv.image_smul_setₛₗ - theorem continuous_linear_equiv.preimage_smul_set - theorem continuous_linear_equiv.preimage_smul_setₛₗ - theorem continuous_linear_map.image_smul_set - theorem continuous_linear_map.image_smul_setₛₗ - theorem continuous_linear_map.preimage_smul_set - theorem continuous_linear_map.preimage_smul_setₛₗ 2022-07-14 12:49:30 2570613 feat(measure_theory/integral/set_integral): add `set_integral_indicator` (#15344) ESTIMATED CHANGES Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.set_integral_indicator 2022-07-14 09:37:11 f3ae2d0 feat(measure_theory/constructions/prod): The layercake integral. (#14424) Prove the layercake formula, a.k.a. Cavalieri's principle, often used in measure theory and probability theory. It will in particular be a part of the proof of the portmanteau theorem. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/strongly_measurable.lean - theorem measure_theory.ae_measurable_zero_measure + theorem measure_theory.ae_strongly_measurable_zero_measure Added src/measure_theory/integral/layercake.lean + theorem measure_theory.lintegral_comp_eq_lintegral_meas_le_mul + theorem measure_theory.lintegral_comp_eq_lintegral_meas_le_mul_of_measurable + theorem measure_theory.lintegral_eq_lintegral_meas_le + theorem measure_theory.lintegral_rpow_eq_lintegral_meas_le_mul Modified src/measure_theory/measure/ae_measurable.lean + theorem ae_measurable.exists_measurable_nonneg + theorem ae_measurable_Ioi_of_forall_Ioc Modified src/measure_theory/measure/lebesgue.lean + theorem measurable_set_graph + theorem measurable_set_region_between_cc + theorem measurable_set_region_between_co + theorem measurable_set_region_between_oc 2022-07-14 05:43:46 073c3ac feat(ring_theory): Basic framework for classes of ring homomorphisms (#14966) ESTIMATED CHANGES Modified src/ring_theory/local_properties.lean + theorem localization_preserves_surjective + def ring_hom.holds_for_localization_away - theorem ring_hom.localization_away_of_localization_preserves + theorem ring_hom.localization_preserves.away + def ring_hom.of_localization_prime + def ring_hom.of_localization_span_target + theorem ring_hom.property_is_local.of_localization_span + theorem ring_hom.property_is_local.respects_iso + structure ring_hom.property_is_local + theorem surjective_of_localization_span Modified src/ring_theory/localization/away.lean + theorem is_localization.away_of_is_unit_of_bijective Added src/ring_theory/ring_hom_properties.lean + theorem ring_hom.respects_iso.cancel_left_is_iso + theorem ring_hom.respects_iso.cancel_right_is_iso + theorem ring_hom.respects_iso.is_localization_away_iff + def ring_hom.respects_iso + theorem ring_hom.stable_under_base_change.pushout_inl + def ring_hom.stable_under_base_change + theorem ring_hom.stable_under_composition.respects_iso + def ring_hom.stable_under_composition 2022-07-14 03:55:19 e479bfb chore(scripts): update nolints.txt (#15332) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2022-07-13 21:11:31 b89df0a chore(set_theory/pgame): remove redundant `dsimp` (#15312) Thanks to #14660, we no longer need the `dsimp, simp` pattern to prove some results. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-07-13 21:11:29 4302cb7 chore(data/matrix/block): lemmas about swapping blocks of matrices (#15298) Also makes `equiv.sum_comm` reduce to `equiv.sum_swap` slightly more agressively. ESTIMATED CHANGES Modified src/data/matrix/block.lean + theorem matrix.from_blocks_minor_sum_swap_left + theorem matrix.from_blocks_minor_sum_swap_right + theorem matrix.from_blocks_minor_sum_swap_sum_swap Modified src/logic/equiv/basic.lean 2022-07-13 21:11:28 5590b0a doc(set_theory/ordinal/cantor_normal_form): document most theorems (#15227) The API around CNF is somewhat hard to wrap around, so we document many of the theorems. ESTIMATED CHANGES Modified src/set_theory/ordinal/cantor_normal_form.lean 2022-07-13 21:11:27 5744b50 chore(order/order_iso_nat): remove `decidable_pred` assumption from `subtype.order_iso_of_nat` (#15190) This is a `noncomputable def` anyways, so the assumption wasn't really helping anyone. ESTIMATED CHANGES Modified src/data/nat/nth.lean +/- theorem nat.nth_eq_order_iso_of_nat Modified src/order/order_iso_nat.lean +/- def nat.order_embedding_of_set 2022-07-13 21:11:26 0864805 feat(data/finset/basic): Add `decidable_nonempty` for finsets. (#15170) Also remove some redundant decidable instances in multiset and list. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/data/bool/all_any.lean Modified src/data/finset/basic.lean Modified src/data/multiset/basic.lean - def multiset.decidable_exists_multiset 2022-07-13 21:11:24 1e82f5e feat(linear_algebra/projectivization/independence): defines (in)dependence of points in projective space (#14542) This PR only provides definitions and basic lemmas. In an upcoming pull request we use this to prove the axioms for an abstract projective space. ESTIMATED CHANGES Modified src/linear_algebra/projective_space/basic.lean + theorem projectivization.mk_eq_mk_iff' Added src/linear_algebra/projective_space/independence.lean + inductive projectivization.dependent + theorem projectivization.dependent_iff + theorem projectivization.dependent_iff_not_independent + theorem projectivization.dependent_pair_iff_eq + inductive projectivization.independent + theorem projectivization.independent_iff + theorem projectivization.independent_iff_complete_lattice_independent + theorem projectivization.independent_iff_not_dependent + theorem projectivization.independent_pair_iff_neq 2022-07-13 18:30:28 f731315 feat(topology/local_homeomorph): "injectivity" local_homeomorph.prod (#15311) * Also some other lemmas about `local_equiv` and `local_homeomorph` * From the sphere eversion project ESTIMATED CHANGES Modified src/data/set/prod.lean + theorem set.prod_eq_prod_iff + theorem set.prod_eq_prod_iff_of_nonempty Modified src/logic/basic.lean + theorem forall_forall_const Modified src/logic/equiv/local_equiv.lean + theorem local_equiv.mem_symm_trans_source + theorem local_equiv.trans_apply Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.image_source_eq_target + theorem local_homeomorph.prod_eq_prod_of_nonempty' + theorem local_homeomorph.prod_eq_prod_of_nonempty + theorem local_homeomorph.symm_image_target_eq_source + theorem local_homeomorph.trans_apply 2022-07-13 18:30:27 25f60b4 feat(analysis/calculus/cont_diff): extra lemmas about cont_diff_within_at (#15309) * Also some lemmas about `fderiv_within` and `nhds_within`. * From the sphere eversion project ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff_within_at.congr_of_eventually_eq_insert + theorem cont_diff_within_at.fderiv_within' + theorem cont_diff_within_at.fderiv_within + theorem cont_diff_within_at.has_fderiv_within_at_nhds + theorem cont_diff_within_at_succ_iff_has_fderiv_within_at_of_mem Modified src/analysis/calculus/fderiv.lean + theorem fderiv_within.comp₃ + theorem filter.eventually_eq.fderiv_within_eq_nhds + theorem has_fderiv_within_at.mono_of_mem Modified src/topology/continuous_on.lean + theorem nhds_within_le_iff 2022-07-13 18:30:26 51f76d0 feat(tactic/linear_combination): add parser for `h / a` (#15284) As reported during LFTCM 2022. ESTIMATED CHANGES Modified src/tactic/linear_combination.lean Modified src/tactic/polyrith.lean Modified test/linear_combination.lean Modified test/polyrith.lean 2022-07-13 18:30:25 be53c7c feat(topology/algebra/order): ⁻¹ continuous for linear ordered fields (#15022) Closes #12781. ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean 2022-07-13 18:30:23 44999a9 feat(combinatorics/additive/behrend): Behrend's construction (#14070) Construct large Salem-Spencer sets in `ℕ` using Behrend's construction. The idea is to turn the Euclidean sphere into a discrete set of points in Euclidean space which we then squash onto `ℕ`. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem zero_pow_le_one Added src/combinatorics/additive/behrend.lean + theorem behrend.add_salem_spencer_image_sphere + theorem behrend.add_salem_spencer_sphere + def behrend.box + theorem behrend.box_zero + theorem behrend.card_box + theorem behrend.card_sphere_le_roth_number_nat + def behrend.map + theorem behrend.map_eq_iff + theorem behrend.map_inj_on + theorem behrend.map_le_of_mem_box + theorem behrend.map_mod + theorem behrend.map_monotone + theorem behrend.map_succ' + theorem behrend.map_succ + theorem behrend.map_zero + theorem behrend.mem_box + theorem behrend.norm_of_mem_sphere + def behrend.sphere + theorem behrend.sphere_subset_box + theorem behrend.sphere_subset_preimage_metric_sphere + theorem behrend.sphere_zero_right + theorem behrend.sphere_zero_subset + theorem behrend.sum_eq + theorem behrend.sum_lt + theorem behrend.sum_sq_le_of_mem_box Modified src/data/fintype/basic.lean + theorem fintype.pi_finset_empty + theorem fintype.pi_finset_singleton + theorem fintype.pi_finset_subsingleton 2022-07-13 16:39:58 2084baf feat(set_theory/ordinal/basic): mark `type_fintype` as `simp` (#15194) This PR does the following: - move `type_fintype` along with some other lemmas from `set_theory/ordinal/arithmetic.lean` to `set_theory/ordinal/basic.lean`. - tag `type_fintype` as `simp`. - untag various lemmas as `simp`, since they can now be proved by it. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.card_eq_nat - theorem ordinal.card_le_nat - theorem ordinal.card_lt_nat - theorem ordinal.nat_le_card - theorem ordinal.nat_lt_card - theorem ordinal.type_fin - theorem ordinal.type_fintype Modified src/set_theory/ordinal/basic.lean + theorem ordinal.card_eq_nat + theorem ordinal.card_le_nat + theorem ordinal.card_lt_nat + theorem ordinal.nat_le_card + theorem ordinal.nat_lt_card +/- theorem ordinal.type_eq_one_of_unique +/- theorem ordinal.type_eq_zero_of_empty + theorem ordinal.type_fin + theorem ordinal.type_fintype +/- theorem ordinal.type_pempty +/- theorem ordinal.type_punit +/- theorem ordinal.type_unit 2022-07-13 16:39:57 93e164e refactor(field_theory/intermediate_field): introduce `restrict_scalars` which replaces `lift2` (#15191) This brings the API in line with `submodule` and `subalgebra` by removing `intermediate_field.lift2` and `intermediate_field.has_lift2`, and replacing them with `intermediate_field.restrict_scalars`. This definition is strictly more general than the previous `intermediate_field.lift2` definition was. A few downstream lemma statements have been generalized in the same way. The handful of API lemmas for `restrict_scalars` that this adds were already missing for `lift2`. `intermediate_field.lift2_alg_equiv` has been removed since we didn't appear to have anything similar for `subalgebra` or `submodule`, but it's possible I missed it. At any rate, it's only needed in one proof, and we can just use `show` or `refl` instead. Note that `(↑x : intermediate_field F E)` is not actually a shorter spelling than `x.restrict_scalars F`, especially when `E` is more than a single character. Finally this renames `lift1` to `lift` now that no ambiguity remains. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean Modified src/field_theory/adjoin.lean +/- theorem intermediate_field.adjoin_adjoin_left +/- theorem intermediate_field.adjoin_simple_adjoin_simple +/- theorem intermediate_field.adjoin_simple_comm - theorem intermediate_field.coe_bot_eq_self - theorem intermediate_field.coe_top_eq_top + theorem intermediate_field.restrict_scalars_bot_eq_self + theorem intermediate_field.restrict_scalars_top Modified src/field_theory/galois.lean +/- theorem is_galois.of_separable_splitting_field_aux Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_restrict_scalars - def intermediate_field.lift1 - def intermediate_field.lift2 - def intermediate_field.lift2_alg_equiv - theorem intermediate_field.lift2_algebra_map + def intermediate_field.lift - theorem intermediate_field.mem_lift2 + theorem intermediate_field.mem_restrict_scalars + def intermediate_field.restrict_scalars + theorem intermediate_field.restrict_scalars_injective + theorem intermediate_field.restrict_scalars_to_subalgebra + theorem intermediate_field.restrict_scalars_to_subfield Modified src/field_theory/primitive_element.lean 2022-07-13 13:55:17 ed5453c chore(*/enat): rename files (#15245) rename `**/enat.lean` to `**/part_enat.lean`. ESTIMATED CHANGES Modified archive/imo/imo2019_q4.lean Modified src/algebra/big_operators/default.lean Renamed src/algebra/big_operators/enat.lean to src/algebra/big_operators/part_enat.lean Modified src/data/nat/lattice.lean Renamed src/data/nat/enat.lean to src/data/nat/part_enat.lean Modified src/set_theory/cardinal/basic.lean 2022-07-13 13:55:16 f8488be fix(algebra/group/units): splitting out `mul_one_class` for group of units (#14923) Without this proposed change, the following example gives a `(deterministic) timeout`: ```lean import algebra.ring.basic example (R : Type*) [comm_ring R] (a b : Rˣ) : a * (b / a) = b := begin rw mul_div_cancel'_right, -- or: `simp` end ``` ESTIMATED CHANGES Modified src/algebra/group/units.lean Added test/units.lean 2022-07-13 13:55:14 632b031 feat(algebra/order/complete_field): `conditionally_complete_linear_ordered_field`, aka the reals (#3292) Introduce a class `conditionally_complete_linear_ordered_field`, which axiomatises the real numbers. Show that there exist a unique ordered ring isomorphism from any two such. Additionally, show there is a unique order ring hom from any archimedean linear ordered field to such a field, giving that the ordered ring homomorphism from the rationals to the reals is unique for instance. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem lt_of_mul_self_lt_mul_self Added src/algebra/order/complete_field.lean + theorem linear_ordered_field.coe_induced_order_ring_iso + theorem linear_ordered_field.coe_lt_induced_map_iff + theorem linear_ordered_field.coe_mem_cut_map_iff + def linear_ordered_field.cut_map + theorem linear_ordered_field.cut_map_add + theorem linear_ordered_field.cut_map_bdd_above + theorem linear_ordered_field.cut_map_coe + theorem linear_ordered_field.cut_map_mono + theorem linear_ordered_field.cut_map_nonempty + theorem linear_ordered_field.cut_map_self + theorem linear_ordered_field.exists_mem_cut_map_mul_self_of_lt_induced_map_mul_self + def linear_ordered_field.induced_add_hom + def linear_ordered_field.induced_map + theorem linear_ordered_field.induced_map_add + theorem linear_ordered_field.induced_map_induced_map + theorem linear_ordered_field.induced_map_inv_self + theorem linear_ordered_field.induced_map_mono + theorem linear_ordered_field.induced_map_nonneg + theorem linear_ordered_field.induced_map_one + theorem linear_ordered_field.induced_map_rat + theorem linear_ordered_field.induced_map_self + theorem linear_ordered_field.induced_map_zero + def linear_ordered_field.induced_order_ring_hom + def linear_ordered_field.induced_order_ring_iso + theorem linear_ordered_field.induced_order_ring_iso_self + theorem linear_ordered_field.induced_order_ring_iso_symm + theorem linear_ordered_field.le_induced_map_mul_self_of_mem_cut_map + theorem linear_ordered_field.lt_induced_map_iff + theorem linear_ordered_field.mem_cut_map_iff 2022-07-13 12:42:43 1d048c5 chore(analysis/inner_product_space): move definition of self-adjointness (#15281) The file `analysis/inner_product_space/basic` is way to large and since `is_self_adjoint` will be rephrased in terms of the adjoint, it should be in the `adjoint` file. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem inner_product_space.is_self_adjoint.apply_clm + def inner_product_space.is_self_adjoint.clm + theorem inner_product_space.is_self_adjoint.clm_apply + theorem inner_product_space.is_self_adjoint.coe_re_apply_inner_self_apply + theorem inner_product_space.is_self_adjoint.conj_inner_sym + theorem inner_product_space.is_self_adjoint.continuous + theorem inner_product_space.is_self_adjoint.restrict_invariant + def inner_product_space.is_self_adjoint + theorem inner_product_space.is_self_adjoint_iff_bilin_form + theorem inner_product_space.is_self_adjoint_iff_inner_map_self_real Modified src/analysis/inner_product_space/basic.lean - theorem inner_product_space.is_self_adjoint.apply_clm - def inner_product_space.is_self_adjoint.clm - theorem inner_product_space.is_self_adjoint.clm_apply - theorem inner_product_space.is_self_adjoint.coe_re_apply_inner_self_apply - theorem inner_product_space.is_self_adjoint.conj_inner_sym - theorem inner_product_space.is_self_adjoint.continuous - theorem inner_product_space.is_self_adjoint.restrict_invariant - def inner_product_space.is_self_adjoint - theorem inner_product_space.is_self_adjoint_iff_bilin_form - theorem inner_product_space.is_self_adjoint_iff_inner_map_self_real Modified src/analysis/inner_product_space/rayleigh.lean 2022-07-13 12:42:42 2dfa69c feat(ring_theory/rees_algebra): Define the Rees algebra of an ideal. (#15089) ESTIMATED CHANGES Added src/ring_theory/rees_algebra.lean + theorem adjoin_monomial_eq_rees_algebra + theorem mem_rees_algebra_iff + theorem mem_rees_algebra_iff_support + theorem monomial_mem_adjoin_monomial + theorem rees_algebra.fg + theorem rees_algebra.monomial_mem + def rees_algebra 2022-07-13 12:42:41 8d7f001 feat(measure_theory/pmf): lawful monad instance for probability mass function monad (#15066) Provide `is_lawful_functor` and `is_lawful_monad` instances for `pmf`. Also switch the `seq` and `map` operations to the ones coming from the `monad` instance. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/basic.lean Modified src/measure_theory/probability_mass_function/constructions.lean + theorem pmf.monad_map_eq_map + theorem pmf.monad_seq_eq_seq Modified src/measure_theory/probability_mass_function/monad.lean +/- theorem pmf.pure_bind 2022-07-13 09:50:47 83092fb feat(data/matrix/notation): add `!![1, 2; 3, 4]` notation (#14991) This adds `!![1, 2; 3, 4]` as a matlab-like shorthand for `matrix.of ![![1, 2], ![3, 4]]`. This has special support for empty arrays, where `!![,,,]` is a matrix with 0 rows and 3 columns, and `![;;;]` is a matrix with 3 rows and zero columns. ESTIMATED CHANGES Modified src/data/fin/vec_notation.lean Modified src/data/matrix/notation.lean +/- theorem matrix.one_fin_three +/- theorem matrix.one_fin_two Modified src/tactic/core.lean Modified src/tactic/reserved_notation.lean Modified test/matrix.lean 2022-07-13 09:50:45 01a1824 feat(data/polynomial/unit_trinomial): An irreducibility criterion for unit trinomials (#14914) This PR adds an irreducibility criterion for unit trinomials. This is building up to irreducibility of $x^n-x-1$. ESTIMATED CHANGES Added src/data/polynomial/unit_trinomial.lean + theorem polynomial.is_unit_trinomial.card_support_eq_three + theorem polynomial.is_unit_trinomial.coeff_is_unit + theorem polynomial.is_unit_trinomial.irreducible_aux1 + theorem polynomial.is_unit_trinomial.irreducible_aux2 + theorem polynomial.is_unit_trinomial.irreducible_aux3 + theorem polynomial.is_unit_trinomial.irreducible_of_coprime + theorem polynomial.is_unit_trinomial.irreducible_of_is_coprime + theorem polynomial.is_unit_trinomial.leading_coeff_is_unit + theorem polynomial.is_unit_trinomial.ne_zero + theorem polynomial.is_unit_trinomial.not_is_unit + theorem polynomial.is_unit_trinomial.trailing_coeff_is_unit + def polynomial.is_unit_trinomial + theorem polynomial.is_unit_trinomial_iff'' + theorem polynomial.is_unit_trinomial_iff' + theorem polynomial.is_unit_trinomial_iff + theorem polynomial.trinomial_def + theorem polynomial.trinomial_leading_coeff' + theorem polynomial.trinomial_leading_coeff + theorem polynomial.trinomial_middle_coeff + theorem polynomial.trinomial_mirror + theorem polynomial.trinomial_nat_degree + theorem polynomial.trinomial_nat_trailing_degree + theorem polynomial.trinomial_support + theorem polynomial.trinomial_trailing_coeff' + theorem polynomial.trinomial_trailing_coeff 2022-07-13 09:50:44 581b694 feat(data/polynomial/erase_lead): Characterization of polynomials of fixed support (#14741) This PR adds a lemma characterizing polynomials of fixed support. ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean + theorem polynomial.card_support_eq' + theorem polynomial.card_support_eq 2022-07-13 09:09:29 7340203 feat(information_theory/hamming): add Hamming distance and norm (#14739) Add the Hamming distance, Hamming norm, and a `hamming` type synonym equipped with a normed group instance using the Hamming norm. ESTIMATED CHANGES Added src/information_theory/hamming.lean + theorem eq_of_hamming_dist_eq_zero + theorem hamming.dist_eq_hamming_dist + theorem hamming.nndist_eq_hamming_dist + theorem hamming.nnnorm_eq_hamming_norm + theorem hamming.norm_eq_hamming_norm + def hamming.of_hamming + theorem hamming.of_hamming_add + theorem hamming.of_hamming_inj + theorem hamming.of_hamming_neg + theorem hamming.of_hamming_smul + theorem hamming.of_hamming_sub + theorem hamming.of_hamming_symm_eq + theorem hamming.of_hamming_to_hamming + theorem hamming.of_hamming_zero + def hamming.to_hamming + theorem hamming.to_hamming_add + theorem hamming.to_hamming_inj + theorem hamming.to_hamming_neg + theorem hamming.to_hamming_of_hamming + theorem hamming.to_hamming_smul + theorem hamming.to_hamming_sub + theorem hamming.to_hamming_symm_eq + theorem hamming.to_hamming_zero + def hamming + def hamming_dist + theorem hamming_dist_comm + theorem hamming_dist_comp + theorem hamming_dist_comp_le_hamming_dist + theorem hamming_dist_eq_hamming_norm + theorem hamming_dist_eq_zero + theorem hamming_dist_le_card_fintype + theorem hamming_dist_lt_one + theorem hamming_dist_ne_zero + theorem hamming_dist_nonneg + theorem hamming_dist_pos + theorem hamming_dist_self + theorem hamming_dist_smul + theorem hamming_dist_smul_le_hamming_dist + theorem hamming_dist_triangle + theorem hamming_dist_triangle_left + theorem hamming_dist_triangle_right + theorem hamming_dist_zero_left + theorem hamming_dist_zero_right + def hamming_norm + theorem hamming_norm_comp + theorem hamming_norm_comp_le_hamming_norm + theorem hamming_norm_eq_zero + theorem hamming_norm_le_card_fintype + theorem hamming_norm_lt_one + theorem hamming_norm_ne_zero_iff + theorem hamming_norm_nonneg + theorem hamming_norm_pos_iff + theorem hamming_norm_smul + theorem hamming_norm_smul_le_hamming_norm + theorem hamming_norm_zero + theorem hamming_zero_eq_dist + theorem swap_hamming_dist 2022-07-13 06:13:44 b06e32c chore(scripts): update nolints.txt (#15293) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-13 06:13:43 5cb17dd refactor(logic/is_empty): tag `is_empty.forall_iff` and `is_empty.exists_iff` as `simp` (#14660) We tag the lemmas `forall_iff` and `exists_iff` on empty types as `simp`. We remove `forall_pempty`, `exists_pempty`, `forall_false_left`, and `exists_false_left` due to being redundant. ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/analysis/locally_convex/basic.lean Modified src/data/list/cycle.lean Modified src/data/nat/nth.lean Modified src/data/polynomial/laurent.lean Modified src/data/rbtree/basic.lean Modified src/group_theory/subgroup/basic.lean Modified src/logic/basic.lean +/- theorem dite_eq_iff +/- theorem dite_eq_left_iff +/- theorem dite_eq_right_iff - theorem exists_false_left - theorem exists_pempty - theorem forall_false_left - theorem forall_pempty Modified src/logic/is_empty.lean +/- theorem is_empty.exists_iff +/- theorem is_empty.forall_iff Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/order/filter/basic.lean Modified src/order/partition/finpartition.lean Modified src/order/well_founded_set.lean Modified src/probability/hitting_time.lean 2022-07-13 02:40:33 ea13c1c refactor(topology/subset_properties): reformulate `is_clopen_b{Union,Inter}` in terms of `set.finite` (#15272) This way it mirrors `is_open_bInter`/`is_closed_bUnion`. Also add `is_clopen.prod`. ESTIMATED CHANGES Modified src/topology/category/Profinite/cofiltered_limit.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean + theorem is_clopen.prod +/- theorem is_clopen_bInter + theorem is_clopen_bInter_finset +/- theorem is_clopen_bUnion + theorem is_clopen_bUnion_finset 2022-07-13 02:40:32 2a32596 feat(data/finsupp/basic): graph of a finitely supported function (#15197) We define the graph of a finitely supported function, i.e. the finset of input/output pairs, and prove basic results. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.apply_eq_of_mem_graph + def finsupp.graph + theorem finsupp.graph_eq_empty + theorem finsupp.graph_inj + theorem finsupp.graph_injective + theorem finsupp.graph_zero + theorem finsupp.image_fst_graph + theorem finsupp.mem_graph_iff + theorem finsupp.mk_mem_graph + theorem finsupp.mk_mem_graph_iff + theorem finsupp.not_mem_graph_snd_zero 2022-07-13 02:40:31 c6014bd feat(algebra/parity): more general odd.pos (#15186) The old version of this lemma (added in #13040) was only for ℕ and didn't allow dot notation. We remove this and add a version for `canonically_ordered_comm_semiring`s, and if the definition of `odd` changes, this will also work for `canononically_ordered_add_monoid`s. ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified src/algebra/parity.lean + theorem odd.pos Modified src/data/nat/parity.lean - theorem nat.pos_of_odd 2022-07-13 00:00:41 ede73b2 refactor(topology/separation): rename `regular_space` to `t3_space` (#15169) I'm going to add a version of `regular_space` without `t0_space` and prove, e.g., that any uniform space is a regular space in this sense. To do this, I need to rename the existing `regular_space`. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/topology.lean Modified src/analysis/locally_convex/balanced_core_hull.lean +/- theorem nhds_basis_closed_balanced Modified src/analysis/locally_convex/bounded.lean Modified src/topology/alexandroff.lean Modified src/topology/algebra/group.lean - theorem topological_group.regular_space + theorem topological_group.t3_space Modified src/topology/algebra/infinite_sum.lean +/- theorem has_sum.prod_fiberwise +/- theorem has_sum.sigma +/- theorem has_sum.sigma_of_has_sum +/- theorem summable.sigma' +/- theorem tsum_comm' +/- theorem tsum_prod' +/- theorem tsum_sigma' Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/algebra/order/extend_from.lean Modified src/topology/algebra/uniform_field.lean Modified src/topology/algebra/valued_field.lean Modified src/topology/algebra/with_zero_topology.lean Modified src/topology/dense_embedding.lean +/- theorem dense_inducing.continuous_at_extend +/- theorem dense_inducing.continuous_extend Modified src/topology/extend_from.lean +/- theorem continuous_extend_from +/- theorem continuous_on_extend_from Modified src/topology/homeomorph.lean Modified src/topology/metric_space/metrizable.lean - theorem topological_space.metrizable_space_of_regular_second_countable + theorem topological_space.metrizable_space_of_t3_second_countable Modified src/topology/separation.lean +/- theorem closed_nhds_basis +/- theorem disjoint_nested_nhds +/- theorem exists_compact_between +/- theorem exists_open_between_and_is_compact_closure +/- theorem nhds_is_closed - theorem normal_space_of_regular_second_countable + theorem normal_space_of_t3_second_countable +/- theorem topological_space.is_topological_basis.exists_closure_subset +/- theorem topological_space.is_topological_basis.nhds_basis_closure Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean 2022-07-13 00:00:40 6c351a8 refactor(data/matrix/basic): add matrix.of for type casting (#14992) Without this, it is easier to get confused between matrix and pi types, which have different multiplication operators. With this in place, we can have a special matrix notation that actually produces terms of type `matrix`. ESTIMATED CHANGES Modified src/analysis/matrix.lean Modified src/data/matrix/basic.lean +/- def matrix.map + theorem matrix.neg_of + def matrix.of + theorem matrix.of_add_of + theorem matrix.of_apply + theorem matrix.of_sub_of + theorem matrix.of_symm_apply + theorem matrix.of_zero + theorem matrix.smul_of Modified src/data/matrix/block.lean Modified src/data/matrix/notation.lean +/- theorem matrix.cons_mul +/- theorem matrix.cons_val' +/- theorem matrix.cons_vec_mul +/- theorem matrix.head_transpose +/- theorem matrix.head_val' +/- theorem matrix.smul_mat_cons +/- theorem matrix.tail_transpose +/- theorem matrix.tail_val' +/- theorem matrix.transpose_empty_cols +/- theorem matrix.transpose_empty_rows +/- theorem matrix.vec_mul_cons Modified src/linear_algebra/matrix/basis.lean Modified src/linear_algebra/matrix/bilinear_form.lean + theorem bilin_form.to_matrix_aux_apply Modified src/linear_algebra/matrix/determinant.lean - theorem matrix.det_fin_two_mk + theorem matrix.det_fin_two_of Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/matrix/transvection.lean Modified src/linear_algebra/vandermonde.lean Modified src/logic/equiv/basic.lean +/- theorem equiv.perm.coe_subsingleton Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/trace.lean +/- theorem algebra.trace_matrix_def Modified test/matrix.lean 2022-07-12 21:43:25 834488e feat(topology/maps): more `iff` lemmas (#15165) * add `inducing_iff` and `inducing_iff_nhds`; * add `embedding_iff`; * add `open_embedding_iff_embedding_open` and `open_embedding_iff_continuous_injective_open`; * add `open_embedding.is_open_map_iff`; * reorder `open_embedding_iff_open_embedding_compose` and `open_embedding_of_open_embedding_compose`, golf. ESTIMATED CHANGES Modified src/topology/category/Top/basic.lean Modified src/topology/maps.lean +/- structure embedding + theorem inducing_iff_nhds + theorem open_embedding.is_open_map_iff + theorem open_embedding.of_comp + theorem open_embedding.of_comp_iff + theorem open_embedding_iff_continuous_injective_open + theorem open_embedding_iff_embedding_open - theorem open_embedding_iff_open_embedding_compose - theorem open_embedding_of_open_embedding_compose 2022-07-12 21:43:24 7bd4755 feat(analysis/special_functions/pow): drop an assumption in `is_o_log_rpow_rpow_at_top` (#15164) Drop an unneeded assumption in `is_o_log_rpow_rpow_at_top`, add a few variants. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem is_o_abs_log_rpow_rpow_nhds_zero + theorem is_o_log_rpow_nhds_zero +/- theorem is_o_log_rpow_rpow_at_top + theorem tendsto_log_div_rpow_nhds_zero + theorem tensdto_log_mul_rpow_nhds_zero 2022-07-12 21:43:23 3543262 feat(ring_theory/bezout): Define Bézout rings. (#15091) ESTIMATED CHANGES Added src/ring_theory/bezout.lean + theorem function.surjective.is_bezout + theorem is_bezout.dvd_gcd + def is_bezout.gcd + theorem is_bezout.gcd_dvd_left + theorem is_bezout.gcd_dvd_right + theorem is_bezout.gcd_eq_sum + theorem is_bezout.iff_span_pair_is_principal + theorem is_bezout.span_gcd + theorem is_bezout.tfae + def is_bezout.to_gcd_domain Modified src/ring_theory/noetherian.lean + theorem is_noetherian_iff_fg_well_founded + theorem submodule.fg_induction 2022-07-12 21:43:22 ece3044 feat(algebra/ring/{pi, prod, opposite}): add basic defs for non_unital_ring_hom (#13958) The defs added mimic the corresponding ones for `ring_hom`, wherever possible. - [x] depends on: #13956 ESTIMATED CHANGES Modified src/algebra/ring/opposite.lean + def non_unital_ring_hom.from_opposite + def non_unital_ring_hom.op + def non_unital_ring_hom.to_opposite + def non_unital_ring_hom.unop Modified src/algebra/ring/pi.lean + def pi.const_non_unital_ring_hom + def pi.eval_non_unital_ring_hom + theorem pi.non_unital_ring_hom_injective Modified src/algebra/ring/prod.lean + theorem non_unital_ring_hom.coe_fst + theorem non_unital_ring_hom.coe_prod_map + theorem non_unital_ring_hom.coe_snd + def non_unital_ring_hom.fst + theorem non_unital_ring_hom.fst_comp_prod + theorem non_unital_ring_hom.prod_apply + theorem non_unital_ring_hom.prod_comp_prod_map + def non_unital_ring_hom.prod_map + theorem non_unital_ring_hom.prod_map_def + theorem non_unital_ring_hom.prod_unique + def non_unital_ring_hom.snd + theorem non_unital_ring_hom.snd_comp_prod 2022-07-12 19:18:58 55db072 chore(data/set/finite): golf some proofs (#15273) ESTIMATED CHANGES Modified src/data/set/finite.lean Modified src/data/set/lattice.lean + theorem set.Union_eq_range_psigma 2022-07-12 19:18:57 7251bbf feat(analysis/special_functions/trigonometric/angle): equality of twice angles (#14988) Add lemmas about equality of twice `real.angle` values (i.e. equality as angles modulo π). ESTIMATED CHANGES Added src/algebra/char_zero/quotient.lean + theorem add_subgroup.nsmul_mem_zmultiples_iff_exists_sub_div + theorem add_subgroup.zsmul_mem_zmultiples_iff_exists_sub_div + theorem quotient_add_group.zmultiples_nsmul_eq_nsmul_iff + theorem quotient_add_group.zmultiples_zsmul_eq_zsmul_iff Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.nsmul_eq_iff + theorem real.angle.two_nsmul_eq_iff + theorem real.angle.two_nsmul_eq_zero_iff + theorem real.angle.two_zsmul_eq_iff + theorem real.angle.two_zsmul_eq_zero_iff + theorem real.angle.zsmul_eq_iff 2022-07-12 16:39:10 89a80e6 feat(data/nat/parity): `nat.bit1_div_bit0` (#15268) This PR adds `nat.bit1_div_bit0` and related lemmas. This came up when working with the power series of sin. ESTIMATED CHANGES Modified src/data/nat/parity.lean + theorem nat.bit0_div_bit0 + theorem nat.bit0_div_two + theorem nat.bit1_div_bit0 + theorem nat.bit1_div_two 2022-07-12 16:39:09 9c40093 chore(*): improve some definitional equalities (#15083) * add `set.mem_diagonal_iff`, move `simp` from `set.mem_diagonal`; * add `@[simp]` to `set.prod_subset_compl_diagonal_iff_disjoint`; * redefine `sum.map` in terms of `sum.elim`, add `sum.map_inl` and `sum.map_inr`; * redefine `sum.swap` in terms of `sum.elim`, add `sum.swap_inl` and `sum.swap_inr`; * use `lift_rel_swap_iff` to prove `swap_le_swap` and `swap_lt_swap`; * redefine `equiv.sum_prod_distrib` and `equiv.sigma_sum_distrib` in terms of `sum.elim` and `sum.map`; * add `filter.compl_diagonal_mem_prod`; * rename `continuous_sum_rec` to `continuous.sum_elim`, use `sum.elim` in the statement; * add `continuous.sum_map`; * golf `homeomorph.sum_congr` and `homeomorph.sum_prod_distrib`. ESTIMATED CHANGES Modified src/data/set/prod.lean +/- theorem set.mem_diagonal + theorem set.mem_diagonal_iff +/- theorem set.prod_subset_compl_diagonal_iff_disjoint Modified src/data/sum/basic.lean +/- def sum.swap + theorem sum.swap_inl + theorem sum.swap_inr Modified src/data/sum/order.lean Modified src/logic/equiv/basic.lean + theorem equiv.prod_sum_distrib_symm_apply_left + theorem equiv.prod_sum_distrib_symm_apply_right + theorem equiv.sum_prod_distrib_symm_apply_left + theorem equiv.sum_prod_distrib_symm_apply_right Modified src/order/filter/bases.lean + theorem filter.compl_diagonal_mem_prod Modified src/topology/constructions.lean + theorem continuous.sum_elim + theorem continuous.sum_map - theorem continuous_sum_rec Modified src/topology/homeomorph.lean 2022-07-12 16:39:08 eb091f8 feat(data/nat/basic): add `strong_sub_recursion` and `pincer_recursion` (#15061) Adding two recursion principles for `P : ℕ → ℕ → Sort*` `strong_sub_recursion`: if for all `a b : ℕ` we can extend `P` from the rectangle strictly below `(a,b)` to `P a b`, then we have `P n m` for all `n m : ℕ`. `pincer_recursion`: if we have `P i 0` and `P 0 i` for all `i : ℕ`, and for any `x y : ℕ` we can extend `P` from `(x,y+1)` and `(x+1,y)` to `(x+1,y+1)` then we have `P n m` for all `n m : ℕ`. `strong_sub_recursion` is adapted by @vihdzp from @CBirkbeck 's #14828 ESTIMATED CHANGES Modified src/data/nat/basic.lean + def nat.pincer_recursion + def nat.strong_sub_recursion 2022-07-12 14:37:15 13f04ec feat(set_theory/game/pgame): strengthen `lf_or_equiv_of_le` to `lt_or_equiv_of_le` (#15255) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean - theorem pgame.lf_or_equiv_of_le + theorem pgame.lt_or_equiv_of_le 2022-07-12 14:37:14 0d659de feat(algebra/module/torsion): `R/I`-module structure on `M/IM`. (#15092) ESTIMATED CHANGES Modified src/algebra/module/torsion.lean 2022-07-12 14:37:13 fef5124 feat(order/order_iso_nat): generalize `well_founded.monotone_chain_condition` to preorders (#15073) We also clean up the spacing throughout the file. ESTIMATED CHANGES Modified src/order/order_iso_nat.lean +/- theorem exists_increasing_or_nonincreasing_subseq' +/- theorem exists_increasing_or_nonincreasing_subseq +/- theorem nat.exists_subseq_of_forall_mem_union +/- theorem nat.subtype.order_iso_of_nat_apply +/- def rel_embedding.nat_gt +/- theorem rel_embedding.nat_lt_apply + theorem well_founded.monotone_chain_condition' +/- theorem well_founded.monotone_chain_condition +/- theorem well_founded.supr_eq_monotonic_sequence_limit Modified src/order/well_founded_set.lean Modified src/ring_theory/artinian.lean 2022-07-12 13:45:52 119e166 feat(representation_theory/character): formula for the dimension of the invariants in terms of the character (#15084) ESTIMATED CHANGES Modified src/representation_theory/character.lean + theorem fdRep.average_char_eq_finrank_invariants Modified src/representation_theory/invariants.lean - theorem group_algebra.average_def 2022-07-12 12:46:38 aadba9b feat(order/well_founded_set): any relation is well-founded on `Ø` (#15266) ESTIMATED CHANGES Modified src/order/well_founded_set.lean +/- theorem set.is_pwo_empty + theorem set.is_wf_empty + theorem set.partially_well_ordered_on_empty + theorem set.well_founded_on_empty 2022-07-12 12:46:37 6c5e9fe feat(set_theory/game/pgame): `is_option (-x) (-y) ↔ is_option x y` (#15256) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.is_option_neg + theorem pgame.is_option_neg_neg 2022-07-12 12:46:36 087bc1f feat(set_theory/game/pgame): add `equiv.comm` (#15254) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-07-12 12:46:35 2bca4d6 chore(set_theory/ordinal/cantor_normal_form): mark `CNF` as `pp_nodot` (#15228) `b.CNF o` doesn't make much sense, since `b` is the base argument rather than the main argument. The existing lemmas all use the `CNF b o` spelling anyway. ESTIMATED CHANGES Modified src/set_theory/ordinal/cantor_normal_form.lean +/- def ordinal.CNF 2022-07-12 12:05:18 8284c00 feat(algebra/order/monoid_lemmas_zero_lt): add missing lemmas (#14770) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.lt_mul_of_one_lt_left + theorem zero_lt.lt_mul_of_one_lt_right + theorem zero_lt.mul_lt_of_lt_one_left + theorem zero_lt.mul_lt_of_lt_one_right 2022-07-12 09:40:23 30daa3c chore(logic/is_empty): add lemmas for subtype, sigma, and psigma (#15134) This reorders the nonempty lemmas to put `sigma` next to `psigma`. The resulting `is_empty` and `nonempty` lemmas are now in the same order. ESTIMATED CHANGES Modified src/logic/is_empty.lean + theorem is_empty_Prop + theorem is_empty_plift + theorem is_empty_psigma + theorem is_empty_sigma + theorem is_empty_subtype + theorem is_empty_ulift Modified src/logic/nonempty.lean 2022-07-12 08:44:51 a8fdd99 feat(probability/moments): Chernoff bound on the upper/lower tail of a real random variable (#15129) For `t` nonnegative such that the cgf exists, `ℙ(ε ≤ X) ≤ exp(-t*ε + cgf X ℙ t)`. We prove a similar result for the lower tail, as well as two corresponding versions using mgf instead of cgf. ESTIMATED CHANGES Modified src/analysis/special_functions/log/basic.lean + theorem real.le_exp_log Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.mul_meas_ge_le_integral_of_nonneg Modified src/probability/moments.lean +/- def probability_theory.cgf + theorem probability_theory.cgf_neg +/- theorem probability_theory.cgf_undef +/- theorem probability_theory.cgf_zero' +/- theorem probability_theory.cgf_zero_fun + theorem probability_theory.measure_ge_le_exp_cgf + theorem probability_theory.measure_ge_le_exp_mul_mgf + theorem probability_theory.measure_le_le_exp_cgf + theorem probability_theory.measure_le_le_exp_mul_mgf +/- def probability_theory.mgf +/- theorem probability_theory.mgf_const' +/- theorem probability_theory.mgf_const + theorem probability_theory.mgf_neg +/- theorem probability_theory.mgf_pos' +/- theorem probability_theory.mgf_pos +/- theorem probability_theory.mgf_undef 2022-07-12 07:50:38 0039a19 feat(probability/independence): two tuples indexed by disjoint subsets of an independent family of r.v. are independent (#15131) If `f` is a family of independent random variables and `S,T` are two disjoint finsets, then we have `indep_fun (λ a (i : S), f i a) (λ a (i : T), f i a) μ`. Also golf `indep_fun_iff_measure_inter_preimage_eq_mul` and add its `Indep` version: `Indep_fun_iff_measure_inter_preimage_eq_mul`. ESTIMATED CHANGES Modified src/measure_theory/pi_system.lean + theorem is_pi_system.comap Modified src/probability/independence.lean + theorem probability_theory.Indep_fun.indep_fun + theorem probability_theory.Indep_fun.indep_fun_finset + theorem probability_theory.Indep_fun_iff_measure_inter_preimage_eq_mul 2022-07-12 03:56:12 d6d3d61 feat(tactic/lint): add a linter for `[fintype _]` assumptions (#15202) Adopted from the `decidable` linter. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/tactic/lint/type_classes.lean 2022-07-12 03:56:11 423a8b9 feat(tactic/polyrith): a tactic using Sage to solve polynomial equalities with hypotheses (#14878) Created a new tactic called polyrith that solves polynomial equalities through polynomial arithmetic on the hypotheses/proof terms. Similar to how linarith solves linear equalities through linear arithmetic on the hypotheses/proof terms. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml Modified docs/references.bib Added scripts/polyrith_sage.py Added scripts/polyrith_sage_helper.py Modified src/data/buffer/parser/numeral.lean Modified src/tactic/default.lean Added src/tactic/polyrith.lean + inductive polyrith.poly Added test/polyrith.lean 2022-07-12 03:14:44 1f3c2c0 chore(set_theory/game/ordinal): minor golf (#15253) ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean 2022-07-12 03:14:43 623a658 doc(set_theory/game/pgame): divide file into sections (#15250) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-07-11 22:33:23 52d4dae feat(representation_theory/monoid_algebra_basis): add some API for `k[G^n]` (#14308) ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + def fin.partial_prod + theorem fin.partial_prod_succ' + theorem fin.partial_prod_succ + theorem fin.partial_prod_zero +/- theorem list.prod_of_fn +/- theorem list.prod_take_of_fn Modified src/representation_theory/basic.lean + theorem representation.of_mul_action_apply + theorem representation.of_mul_action_def Added src/representation_theory/group_cohomology_resolution.lean + def Rep.of_mul_action + def group_cohomology.resolution.of_tensor + def group_cohomology.resolution.of_tensor_aux + theorem group_cohomology.resolution.of_tensor_aux_comm_of_mul_action + theorem group_cohomology.resolution.of_tensor_aux_single + theorem group_cohomology.resolution.of_tensor_single' + theorem group_cohomology.resolution.of_tensor_single + def group_cohomology.resolution.to_tensor + def group_cohomology.resolution.to_tensor_aux + theorem group_cohomology.resolution.to_tensor_aux_of_mul_action + theorem group_cohomology.resolution.to_tensor_aux_single + theorem group_cohomology.resolution.to_tensor_single 2022-07-11 16:51:25 00dbc7b fix(.github/workflows): temporarily increase timeout (#15251) Quick hack to fix our olean files after https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.22saving.20olean.22.3F. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2022-07-11 16:51:24 201d2c6 refactor(data/nat/enat): rename `enat` to `part_enat` (#15235) * find+replace `enat` with `part_enat`; * reflow long lines * add a sentence to the module docstring of `data.nat.enat`. I'm going to define `enat := with_top nat` and use it as the default implementation of "nat with top". ESTIMATED CHANGES Modified archive/imo/imo2019_q4.lean Modified src/algebra/big_operators/enat.lean Modified src/algebra/order/sub.lean Modified src/algebra/squarefree.lean Modified src/data/nat/choose/factorization.lean Modified src/data/nat/enat.lean - theorem enat.add_eq_top_iff - theorem enat.add_one_le_iff_lt - theorem enat.add_one_le_of_lt - theorem enat.add_top - theorem enat.coe_add_get - theorem enat.coe_coe_hom - theorem enat.coe_get - def enat.coe_hom - theorem enat.coe_inj - theorem enat.coe_le_coe - theorem enat.coe_le_iff - theorem enat.coe_lt_coe - theorem enat.coe_lt_iff - theorem enat.coe_lt_top - theorem enat.coe_ne_top - theorem enat.dom_coe - theorem enat.dom_of_le_coe - theorem enat.dom_of_le_of_dom - theorem enat.dom_of_le_some - theorem enat.dom_of_lt - theorem enat.dom_some - theorem enat.eq_top_iff_forall_le - theorem enat.eq_top_iff_forall_lt - theorem enat.eq_zero_iff - def enat.find - theorem enat.find_dom - theorem enat.find_eq_top_iff - theorem enat.find_get - theorem enat.find_le - theorem enat.get_add - theorem enat.get_coe' - theorem enat.get_coe - theorem enat.get_eq_iff_eq_coe - theorem enat.get_eq_iff_eq_some - theorem enat.get_le_get - theorem enat.get_one - theorem enat.get_zero - theorem enat.le_coe_iff - theorem enat.le_def - theorem enat.le_of_lt_add_one - theorem enat.lt_add_one - theorem enat.lt_add_one_iff_lt - theorem enat.lt_coe_iff - theorem enat.lt_def - theorem enat.lt_find - theorem enat.lt_find_iff - theorem enat.lt_wf - theorem enat.ne_top_iff - theorem enat.ne_top_iff_dom - theorem enat.ne_top_of_lt - theorem enat.ne_zero_iff - theorem enat.not_dom_iff_eq_top - theorem enat.not_is_max_coe - theorem enat.pos_iff_one_le - def enat.some - theorem enat.some_eq_coe - def enat.to_with_top - theorem enat.to_with_top_add - theorem enat.to_with_top_coe' - theorem enat.to_with_top_coe - theorem enat.to_with_top_le - theorem enat.to_with_top_lt - theorem enat.to_with_top_some - theorem enat.to_with_top_top' - theorem enat.to_with_top_top - theorem enat.to_with_top_zero' - theorem enat.to_with_top_zero - theorem enat.top_add - theorem enat.top_eq_none - theorem enat.with_top_equiv_coe - theorem enat.with_top_equiv_le - theorem enat.with_top_equiv_lt - theorem enat.with_top_equiv_symm_coe - theorem enat.with_top_equiv_symm_le - theorem enat.with_top_equiv_symm_lt - theorem enat.with_top_equiv_symm_top - theorem enat.with_top_equiv_symm_zero - theorem enat.with_top_equiv_top - theorem enat.with_top_equiv_zero - def enat + theorem part_enat.add_eq_top_iff + theorem part_enat.add_one_le_iff_lt + theorem part_enat.add_one_le_of_lt + theorem part_enat.add_top + theorem part_enat.coe_add_get + theorem part_enat.coe_coe_hom + theorem part_enat.coe_get + def part_enat.coe_hom + theorem part_enat.coe_inj + theorem part_enat.coe_le_coe + theorem part_enat.coe_le_iff + theorem part_enat.coe_lt_coe + theorem part_enat.coe_lt_iff + theorem part_enat.coe_lt_top + theorem part_enat.coe_ne_top + theorem part_enat.dom_coe + theorem part_enat.dom_of_le_coe + theorem part_enat.dom_of_le_of_dom + theorem part_enat.dom_of_le_some + theorem part_enat.dom_of_lt + theorem part_enat.dom_some + theorem part_enat.eq_top_iff_forall_le + theorem part_enat.eq_top_iff_forall_lt + theorem part_enat.eq_zero_iff + def part_enat.find + theorem part_enat.find_dom + theorem part_enat.find_eq_top_iff + theorem part_enat.find_get + theorem part_enat.find_le + theorem part_enat.get_add + theorem part_enat.get_coe' + theorem part_enat.get_coe + theorem part_enat.get_eq_iff_eq_coe + theorem part_enat.get_eq_iff_eq_some + theorem part_enat.get_le_get + theorem part_enat.get_one + theorem part_enat.get_zero + theorem part_enat.le_coe_iff + theorem part_enat.le_def + theorem part_enat.le_of_lt_add_one + theorem part_enat.lt_add_one + theorem part_enat.lt_add_one_iff_lt + theorem part_enat.lt_coe_iff + theorem part_enat.lt_def + theorem part_enat.lt_find + theorem part_enat.lt_find_iff + theorem part_enat.lt_wf + theorem part_enat.ne_top_iff + theorem part_enat.ne_top_iff_dom + theorem part_enat.ne_top_of_lt + theorem part_enat.ne_zero_iff + theorem part_enat.not_dom_iff_eq_top + theorem part_enat.not_is_max_coe + theorem part_enat.pos_iff_one_le + def part_enat.some + theorem part_enat.some_eq_coe + def part_enat.to_with_top + theorem part_enat.to_with_top_add + theorem part_enat.to_with_top_coe' + theorem part_enat.to_with_top_coe + theorem part_enat.to_with_top_le + theorem part_enat.to_with_top_lt + theorem part_enat.to_with_top_some + theorem part_enat.to_with_top_top' + theorem part_enat.to_with_top_top + theorem part_enat.to_with_top_zero' + theorem part_enat.to_with_top_zero + theorem part_enat.top_add + theorem part_enat.top_eq_none + theorem part_enat.with_top_equiv_coe + theorem part_enat.with_top_equiv_le + theorem part_enat.with_top_equiv_lt + theorem part_enat.with_top_equiv_symm_coe + theorem part_enat.with_top_equiv_symm_le + theorem part_enat.with_top_equiv_symm_lt + theorem part_enat.with_top_equiv_symm_top + theorem part_enat.with_top_equiv_symm_zero + theorem part_enat.with_top_equiv_top + theorem part_enat.with_top_equiv_zero + def part_enat Modified src/data/nat/lattice.lean Modified src/data/nat/multiplicity.lean Modified src/data/part.lean Modified src/data/polynomial/div.lean Modified src/field_theory/separable.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/padic_val.lean Modified src/ring_theory/chain_of_divisors.lean Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/multiplicity.lean +/- theorem multiplicity.dvd_iff_multiplicity_pos +/- theorem multiplicity.dvd_of_multiplicity_pos +/- theorem multiplicity.pow_dvd_of_le_multiplicity +/- def multiplicity Modified src/ring_theory/power_series/basic.lean +/- theorem power_series.le_order +/- def power_series.order +/- theorem power_series.order_eq Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/set_theory/cardinal/basic.lean - theorem cardinal.aleph_0_to_enat + theorem cardinal.aleph_0_to_part_enat - theorem cardinal.mk_to_enat_eq_coe_card - theorem cardinal.mk_to_enat_of_infinite + theorem cardinal.mk_to_part_enat_eq_coe_card + theorem cardinal.mk_to_part_enat_of_infinite - def cardinal.to_enat - theorem cardinal.to_enat_apply_of_aleph_0_le - theorem cardinal.to_enat_apply_of_lt_aleph_0 - theorem cardinal.to_enat_cast - theorem cardinal.to_enat_surjective + def cardinal.to_part_enat + theorem cardinal.to_part_enat_apply_of_aleph_0_le + theorem cardinal.to_part_enat_apply_of_lt_aleph_0 + theorem cardinal.to_part_enat_cast + theorem cardinal.to_part_enat_surjective Modified src/set_theory/cardinal/continuum.lean - theorem cardinal.continuum_to_enat + theorem cardinal.continuum_to_part_enat Modified src/set_theory/cardinal/finite.lean - def enat.card - theorem enat.card_eq_coe_fintype_card - theorem enat.card_eq_top_of_infinite + def part_enat.card + theorem part_enat.card_eq_coe_fintype_card + theorem part_enat.card_eq_top_of_infinite Modified src/set_theory/cardinal/ordinal.lean - theorem cardinal.aleph_to_enat + theorem cardinal.aleph_to_part_enat 2022-07-11 16:51:23 44905df feat(order/hom/basic): `order_iso` to `rel_iso (<) (<)` (#15182) Couldn't find this in the library. Asked on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/rel_iso.20.28.3C.29.20.28.3C.29.20from.20order_iso/near/288891638) in case anyone knew of this already. ESTIMATED CHANGES Modified src/order/hom/basic.lean + def order_iso.to_rel_iso_lt 2022-07-11 16:51:22 0f56b2d feat(combinatorics/simple_graph/connectivity): simp confluence (#15153) From branch `walks_and_trees`. Adds data/list/basic lemma to help simp prove `d ∈ p.reverse.darts ↔ d.symm ∈ p.darts`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean +/- theorem simple_graph.walk.dart_snd_mem_support_of_mem_darts + theorem simple_graph.walk.fst_mem_support_of_mem_edges + theorem simple_graph.walk.is_cycle.not_of_nil + theorem simple_graph.walk.mem_darts_reverse - theorem simple_graph.walk.mem_support_of_mem_edges + theorem simple_graph.walk.snd_mem_support_of_mem_edges Modified src/data/list/basic.lean + theorem function.involutive.exists_mem_and_apply_eq_iff + theorem list.mem_map_of_involutive 2022-07-11 16:51:20 9a2e5c8 fix(order/basic): fix `subtype.linear_order` (#15056) This makes `subtype.lattice` definitionally equal to `linear_order.to_lattice`, after unfolding some (which?) semireducible definitions. * Rewrite `linear_order.lift` to allow custom `max` and `min` fields. Move the old definition to `linear_order.lift'`. * Use the new `linear_order.lift` to fix a non-defeq diamond on `subtype _`. * Use the new `linear_order.lift` in various `function.injective.linear_*` definitions. ESTIMATED CHANGES Modified counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean Modified src/algebra/module/submodule/basic.lean Modified src/algebra/order/field.lean Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean + def units.order_embedding_coe Modified src/algebra/order/nonneg.lean Modified src/algebra/order/ring.lean Modified src/algebra/order/with_zero.lean Modified src/data/fin/basic.lean Modified src/data/ulift.lean Modified src/field_theory/subfield.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/operations.lean Modified src/order/basic.lean + def linear_order.lift' +/- def linear_order.lift + theorem max_rec' + theorem max_rec + theorem min_rec' + theorem min_rec Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/lattice.lean Modified src/order/min_max.lean - theorem max_rec' - theorem max_rec - theorem min_rec' - theorem min_rec Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean 2022-07-11 16:51:19 bbe25d4 feat(category_theory): left-exact functors preserve finite limits (#14026) Also adds the following: * Convenient constructors for `binary_fan` and adjustments to its simp NF * Generalize the (co)kernel constructions in inclusions and projections of binary biproducts * Fixes the name of `kernel_fork.is_limit.of_ι` * Derives `preserves_limits_of_shape (discrete pempty) G` from the preservation of just *the* terminal morphism * Preserving zero morphisms implies preserving terminal morphisms * Isomorphisms from any fork to an application of `fork.of_ι` ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/preserves/shapes/terminal.lean + def category_theory.limits.preserves_colimits_of_shape_pempty_of_preserves_initial + def category_theory.limits.preserves_limits_of_shape_pempty_of_preserves_terminal Modified src/category_theory/limits/preserves/shapes/zero.lean + def category_theory.functor.preserves_initial_object_of_preserves_zero_morphisms + def category_theory.functor.preserves_terminal_object_of_preserves_zero_morphisms Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.binary_cofan.mk_inl + theorem category_theory.limits.binary_cofan.mk_inr - theorem category_theory.limits.binary_cofan.mk_ι_app_left - theorem category_theory.limits.binary_cofan.mk_ι_app_right + theorem category_theory.limits.binary_fan.mk_fst + theorem category_theory.limits.binary_fan.mk_snd - theorem category_theory.limits.binary_fan.mk_π_app_left - theorem category_theory.limits.binary_fan.mk_π_app_right + def category_theory.limits.iso_binary_cofan_mk + def category_theory.limits.iso_binary_fan_mk Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.binary_bicone.fst_kernel_fork + theorem category_theory.limits.binary_bicone.fst_kernel_fork_ι + def category_theory.limits.binary_bicone.inl_cokernel_cofork + theorem category_theory.limits.binary_bicone.inl_cokernel_cofork_π + def category_theory.limits.binary_bicone.inr_cokernel_cofork + theorem category_theory.limits.binary_bicone.inr_cokernel_cofork_π + def category_theory.limits.binary_bicone.is_colimit_inl_cokernel_cofork + def category_theory.limits.binary_bicone.is_colimit_inr_cokernel_cofork + def category_theory.limits.binary_bicone.is_limit_fst_kernel_fork + def category_theory.limits.binary_bicone.is_limit_snd_kernel_fork + def category_theory.limits.binary_bicone.snd_kernel_fork + theorem category_theory.limits.binary_bicone.snd_kernel_fork_ι + def category_theory.limits.biprod.inl_cokernel_cofork + theorem category_theory.limits.biprod.inl_cokernel_cofork_π - def category_theory.limits.biprod.inl_cokernel_fork - theorem category_theory.limits.biprod.inl_cokernel_fork_π + def category_theory.limits.biprod.inr_cokernel_cofork + theorem category_theory.limits.biprod.inr_cokernel_cofork_π - def category_theory.limits.biprod.inr_cokernel_fork - theorem category_theory.limits.biprod.inr_cokernel_fork_π +/- def category_theory.limits.biprod.is_cokernel_inl_cokernel_fork +/- def category_theory.limits.biprod.is_cokernel_inr_cokernel_fork Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cofork.iso_cofork_of_π + theorem category_theory.limits.cofork.π_precompose + def category_theory.limits.fork.iso_fork_of_ι + theorem category_theory.limits.fork.ι_postcompose + def category_theory.limits.parallel_pair.eq_of_hom_eq Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel_cofork.is_colimit.of_π - def category_theory.limits.is_colimit.of_π - def category_theory.limits.is_limit.of_ι + def category_theory.limits.kernel_fork.is_limit.of_ι Modified src/category_theory/limits/shapes/normal_mono/basic.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.cofork_of_cokernel_cofork_π + theorem category_theory.preadditive.fork_of_kernel_fork_ι Added src/category_theory/preadditive/left_exact.lean + def category_theory.functor.is_colimit_map_cocone_binary_cofan_of_preserves_cokernels + def category_theory.functor.is_limit_map_cone_binary_fan_of_preserves_kernels + def category_theory.functor.preserves_binary_coproducts_of_preserves_cokernels + def category_theory.functor.preserves_binary_product_of_preserves_kernels + def category_theory.functor.preserves_binary_products_of_preserves_kernels + def category_theory.functor.preserves_coequalizer_of_preserves_cokernels + def category_theory.functor.preserves_coequalizers_of_preserves_cokernels + def category_theory.functor.preserves_coproduct_of_preserves_cokernels + def category_theory.functor.preserves_equalizer_of_preserves_kernels + def category_theory.functor.preserves_equalizers_of_preserves_kernels + def category_theory.functor.preserves_finite_colimits_of_preserves_cokernels + def category_theory.functor.preserves_finite_limits_of_preserves_kernels 2022-07-11 16:51:18 d3f5adb feat(combinatorics/simple_graph/regularity/equitabilise): Equitabilising a partition (#13222) Define the equitabilisation of a partition and a way to find an arbitrary equipartition of any size. ESTIMATED CHANGES Added src/combinatorics/simple_graph/regularity/equitabilise.lean + theorem finpartition.card_eq_of_mem_parts_equitabilise + theorem finpartition.card_filter_equitabilise_big + theorem finpartition.card_filter_equitabilise_small + theorem finpartition.card_parts_equitabilise + theorem finpartition.card_parts_equitabilise_subset_le + theorem finpartition.equitabilise_aux + theorem finpartition.equitabilise_is_equipartition + theorem finpartition.exists_equipartition_card_eq Modified src/order/partition/finpartition.lean + theorem finpartition.mem_avoid 2022-07-11 16:51:17 888caf7 feat(order/modular_lattice): Semimodular lattices (#11602) This defines the four main kinds of semimodular lattices: * Weakly upper modular * Weakly lower modular * Upper modular * Lower modular ESTIMATED CHANGES Modified docs/references.bib Modified src/order/modular_lattice.lean + theorem covby_sup_of_inf_covby_left + theorem covby_sup_of_inf_covby_of_inf_covby_left + theorem covby_sup_of_inf_covby_of_inf_covby_right + theorem covby_sup_of_inf_covby_right + theorem inf_covby_of_covby_sup_left + theorem inf_covby_of_covby_sup_of_covby_sup_left + theorem inf_covby_of_covby_sup_of_covby_sup_right + theorem inf_covby_of_covby_sup_right 2022-07-11 14:26:39 dfcbe85 refactor(data/finite): move definition to a new file (#15204) The new file imports nothing but `logic.equiv.basic`. ESTIMATED CHANGES Modified src/data/finite/basic.lean - theorem equiv.finite_iff - theorem finite.exists_equiv_fin - theorem finite.of_bijective - theorem finite.of_equiv - theorem finite.of_fintype - theorem finite_iff_exists_equiv_fin Added src/data/finite/defs.lean + theorem equiv.finite_iff + theorem finite.exists_equiv_fin + theorem finite.of_bijective + theorem finite.of_equiv + theorem finite_iff_exists_equiv_fin + theorem function.bijective.finite_iff 2022-07-11 14:26:38 aae01cd data/multiset/range): add multiset.coe_range (#15201) ESTIMATED CHANGES Modified src/data/multiset/range.lean + theorem multiset.coe_range 2022-07-11 14:26:37 627bd0c chore(topology/basic): use `finite` in `locally_finite_of_finite` (#15181) Rename `locally_finite_of_fintype` to `locally_finite_of_finite`, use `[finite]` instead of `[fintype]`. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem locally_finite_of_finite - theorem locally_finite_of_fintype Modified src/topology/paracompact.lean 2022-07-11 14:26:36 7f837db feat(data/set/finite): add `multiset.finite_to_set` (#15177) * move `finset.finite_to_set` up; * add `multiset.finite_to_set`, `multiset.finite_to_set_to_finset`, and `list.finite_to_set`; * use new lemmas here and there. ESTIMATED CHANGES Modified src/data/set/finite.lean +/- theorem finset.finite_to_set +/- theorem finset.finite_to_set_to_finset + theorem list.finite_to_set + theorem multiset.finite_to_set + theorem multiset.finite_to_set_to_finset - theorem set.range_find_greatest_subset Modified src/field_theory/adjoin.lean Modified src/field_theory/is_alg_closed/classification.lean Modified src/field_theory/splitting_field.lean Modified src/measure_theory/measure/haar.lean Modified src/ring_theory/adjoin/fg.lean Modified src/ring_theory/integral_closure.lean 2022-07-11 14:26:34 ecd5234 feat(linear_algebra): basis on R × R, and relation between matrices and linear maps in this basis (#15119) ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean +/- theorem fin.prod_univ_two Modified src/linear_algebra/basis.lean + theorem basis.coe_fin_two_prod_repr + theorem basis.fin_two_prod_one + theorem basis.fin_two_prod_zero Modified src/linear_algebra/determinant.lean + theorem linear_map.det_to_lin Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_fin_one_mk + theorem matrix.det_fin_two_mk Modified src/linear_algebra/matrix/to_lin.lean + theorem matrix.to_lin_fin_two_prod + theorem matrix.to_lin_fin_two_prod_apply Modified src/topology/algebra/module/finite_dimension.lean + theorem linear_map.det_to_continuous_linear_map + theorem matrix.to_lin_fin_two_prod_to_continuous_linear_map 2022-07-11 14:26:33 611dcca feat(analysis/inner_product_space): the Hellinger-Toeplitz theorem (#15055) Prove the Hellinger-Toeplitz theorem as a corollary of the closed graph theorem. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + def inner_product_space.is_self_adjoint.clm + theorem inner_product_space.is_self_adjoint.clm_apply + theorem inner_product_space.is_self_adjoint.continuous 2022-07-11 14:26:32 0980bac chore(topological_space/sober): use `namespace` and `variables`, golf (#15042) #### API * Add `is_generic_point_iff_specializes`, `is_generic_point.specializes_iff_mem`. * Make `is_generic_point.is_closed` etc `protected`. #### Style * Use `namespace is_generic_point`. * Move implicit arguments to `variables`. * Move explicit `(h : is_generic_point x S)` from `variables` to each lemma. * Golf some proofs. ESTIMATED CHANGES Modified src/data/set/lattice.lean Modified src/topology/sober.lean +/- theorem is_generic_point.disjoint_iff - theorem is_generic_point.eq - theorem is_generic_point.image - theorem is_generic_point.is_closed - theorem is_generic_point.is_irreducible +/- theorem is_generic_point.mem +/- theorem is_generic_point.mem_closed_set_iff +/- theorem is_generic_point.mem_open_set_iff +/- theorem is_generic_point.specializes + theorem is_generic_point.specializes_iff_mem +/- theorem is_generic_point_iff_forall_closed + theorem is_generic_point_iff_specializes 2022-07-11 14:26:30 902e351 feat(data/set/pointwise): `list` and `multiset` versions of n-ary lemmas (#14928) These lemmas are generalizations of the existing lemmas about `finset.prod` and `finset.sum`, but for the `list` and `multiset` versions. The finset ones can now be proved in terms of the multiset ones. ESTIMATED CHANGES Modified src/data/set/pointwise.lean + theorem set.list_prod_mem_list_prod + theorem set.list_prod_singleton + theorem set.list_prod_subset_list_prod + theorem set.multiset_prod_mem_multiset_prod + theorem set.multiset_prod_singleton + theorem set.multiset_prod_subset_multiset_prod 2022-07-11 14:26:29 b762695 feat(algebraic_geometry/projective_spectrum): forward direction of homeomorphism between top_space of Proj and top_space of Spec (#13397) This pr is the start of showing that Proj is a scheme. In this pr, it will be shown that the locally on basic open set, there is a continuous function from the underlying topological space of Proj restricted to this open set to Spec of degree zero part of some localised ring. In the near future, it will be shown that this function is a homeomorphism. ESTIMATED CHANGES Modified src/algebraic_geometry/projective_spectrum/scheme.lean + def algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.carrier + theorem algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.carrier_ne_top + theorem algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.disjoint + theorem algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.mem_carrier.clear_denominator + theorem algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.mem_carrier_iff + theorem algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.preimage_eq + def algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec.to_fun + def algebraic_geometry.Proj_iso_Spec_Top_component.to_Spec + theorem algebraic_geometry.degree_zero_part.coe_mul +/- def algebraic_geometry.degree_zero_part.deg +/- theorem algebraic_geometry.degree_zero_part.eq - theorem algebraic_geometry.degree_zero_part.mul_val +/- def algebraic_geometry.degree_zero_part.num +/- theorem algebraic_geometry.degree_zero_part.num_mem Modified src/algebraic_geometry/projective_spectrum/structure_sheaf.lean 2022-07-11 09:33:58 cea2769 chore(category_theory/adjunction/*): making arguments implicit in adjuction.comp and two small lemmas about mates (#15062) Working on adjunctions between monads and comonads, I noticed that adjunction.comp was defined with having the functors of one of the adjunctions explicit as well as the adjunction. However in the library, only `adjunction.comp _ _` ever appears. Thus I found it natural to make these two arguments implicit, so that composition of adjunctions can now be written as `adj1.comp adj2` instead of `adj1.comp _ _ adj2`. Furthermore, I provide two lemmas about mates of natural transformations to and from the identity functor. The application I have in mind is to the unit/counit of a monad/comonad in case of an adjunction of monads and comonads, as studied already by Eilenberg and Moore. ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/mates.lean + theorem category_theory.transfer_nat_trans_self_adjunction_id + theorem category_theory.transfer_nat_trans_self_adjunction_id_symm Modified src/category_theory/adjunction/over.lean Modified src/category_theory/closed/functor.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/sites/adjunction.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/category_theory/subobject/mono_over.lean 2022-07-11 09:33:57 4e19dab chore(algebra/order/ring): Normalize `_left`/`_right` (#14985) Swap the `left` and `right` variants of * `nonneg_of_mul_nonneg_` * `pos_of_mul_pos_` * `neg_of_mul_pos_` * `neg_of_mul_neg_` ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo2013_q5.lean Modified src/algebra/group_power/lemmas.lean Modified src/algebra/order/invertible.lean Modified src/algebra/order/monoid_lemmas_zero_lt.lean +/- theorem zero_lt.pos_of_mul_pos_left +/- theorem zero_lt.pos_of_mul_pos_right Modified src/algebra/order/ring.lean +/- theorem neg_of_mul_neg_left +/- theorem neg_of_mul_neg_right +/- theorem neg_of_mul_pos_left +/- theorem neg_of_mul_pos_right +/- theorem nonneg_of_mul_nonneg_left +/- theorem nonneg_of_mul_nonneg_right +/- theorem nonpos_of_mul_nonpos_left +/- theorem nonpos_of_mul_nonpos_right +/- theorem pos_of_mul_pos_left +/- theorem pos_of_mul_pos_right Modified src/algebra/order/smul.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/calculus/darboux.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/seminorm.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/data/fin/basic.lean Modified src/data/int/basic.lean Modified src/data/rat/floor.lean Modified src/data/rat/order.lean Modified src/geometry/euclidean/triangle.lean Modified src/number_theory/sum_four_squares.lean Modified src/order/filter/at_top_bot.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean Modified src/topology/metric_space/basic.lean Modified src/topology/unit_interval.lean 2022-07-11 09:33:56 40fdf72 feat(category_theory/endofunctor/algebra): Define coalgebras over an endofunctor and prove an equivalence (#14834) This PR dualises the definition of an algebra over an endofunctor to that of a coalgebra over an endofunctor. Furthermore, it proves that if an endofunctor `F` is left adjoint to an endofunctor `G`, then the category of algebras over `F` is equivalent to the category of coalgebras over `G`. ESTIMATED CHANGES Modified src/category_theory/endofunctor/algebra.lean + def category_theory.endofunctor.adjunction.alg_coalg_equiv.counit_iso + def category_theory.endofunctor.adjunction.alg_coalg_equiv.unit_iso + theorem category_theory.endofunctor.adjunction.algebra.hom_equiv_naturality_str + def category_theory.endofunctor.adjunction.algebra.to_coalgebra_of + def category_theory.endofunctor.adjunction.algebra_coalgebra_equiv + theorem category_theory.endofunctor.adjunction.coalgebra.hom_equiv_naturality_str_symm + def category_theory.endofunctor.adjunction.coalgebra.to_algebra_of + theorem category_theory.endofunctor.coalgebra.comp_eq_comp + theorem category_theory.endofunctor.coalgebra.comp_f + def category_theory.endofunctor.coalgebra.equiv_of_nat_iso + def category_theory.endofunctor.coalgebra.forget + def category_theory.endofunctor.coalgebra.functor_of_nat_trans + def category_theory.endofunctor.coalgebra.functor_of_nat_trans_comp + def category_theory.endofunctor.coalgebra.functor_of_nat_trans_eq + def category_theory.endofunctor.coalgebra.functor_of_nat_trans_id + def category_theory.endofunctor.coalgebra.hom.comp + def category_theory.endofunctor.coalgebra.hom.id + structure category_theory.endofunctor.coalgebra.hom + theorem category_theory.endofunctor.coalgebra.id_eq_id + theorem category_theory.endofunctor.coalgebra.id_f + def category_theory.endofunctor.coalgebra.iso_mk + theorem category_theory.endofunctor.coalgebra.iso_of_iso + structure category_theory.endofunctor.coalgebra 2022-07-11 09:33:55 f7baecb feat(category_theory/functor): preserving/reflecting monos/epis (#14829) ESTIMATED CHANGES Modified src/algebra/category/Group/abelian.lean Modified src/algebra/category/Group/adjunctions.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/category_theory/adjunction/evaluation.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/epi_mono.lean - theorem category_theory.faithful_reflects_epi - theorem category_theory.faithful_reflects_mono - theorem category_theory.left_adjoint_preserves_epi - theorem category_theory.right_adjoint_preserves_mono Added src/category_theory/functor/epi_mono.lean + theorem category_theory.functor.epi_of_epi_map + theorem category_theory.functor.mono_of_mono_map + theorem category_theory.functor.preserves_epimorphisms.iso_iff + theorem category_theory.functor.preserves_epimorphisms.of_iso + theorem category_theory.functor.preserves_epimorphsisms_of_adjunction + theorem category_theory.functor.preserves_monomorphisms.iso_iff + theorem category_theory.functor.preserves_monomorphisms.of_iso + theorem category_theory.functor.preserves_monomorphisms_of_adjunction + theorem category_theory.functor.reflects_epimorphisms.iso_iff + theorem category_theory.functor.reflects_epimorphisms.of_iso + theorem category_theory.functor.reflects_monomorphisms.iso_iff + theorem category_theory.functor.reflects_monomorphisms.of_iso Modified src/category_theory/glue_data.lean Modified src/category_theory/limits/constructions/epi_mono.lean + theorem category_theory.preserves_epi_of_preserves_colimit + theorem category_theory.preserves_mono_of_preserves_limit - theorem category_theory.reflects_epi + theorem category_theory.reflects_epi_of_reflects_colimit - theorem category_theory.reflects_mono + theorem category_theory.reflects_mono_of_reflects_limit Modified src/category_theory/over.lean Modified src/topology/category/CompHaus/default.lean Modified src/topology/category/Profinite/default.lean Modified src/topology/category/Top/adjunctions.lean Modified src/topology/category/Top/epi_mono.lean 2022-07-11 09:33:54 3536347 feat(combinatorics/set_family/harris_kleitman): The Harris-Kleitman inequality (#14497) Lower/upper sets in `finset α` are (anti)correlated. ESTIMATED CHANGES Added src/combinatorics/set_family/harris_kleitman.lean + theorem finset.card_member_subfamily_add_card_non_member_subfamily + theorem finset.mem_member_subfamily + theorem finset.mem_non_member_subfamily + def finset.member_subfamily + theorem finset.member_subfamily_inter + def finset.non_member_subfamily + theorem finset.non_member_subfamily_inter + theorem is_lower_set.card_inter_le_finset + theorem is_lower_set.le_card_inter_finset' + theorem is_lower_set.le_card_inter_finset + theorem is_lower_set.member_subfamily + theorem is_lower_set.member_subfamily_subset_non_member_subfamily + theorem is_lower_set.non_member_subfamily + theorem is_upper_set.card_inter_le_finset + theorem is_upper_set.le_card_inter_finset Modified src/order/upper_lower.lean + theorem is_lower_set_compl + theorem is_upper_set_compl 2022-07-11 09:33:53 f5170fc feat(order/bounded_order): Codisjointness (#14195) Define `codisjoint`, the dual notion of `disjoint`. This is already used without a name in `is_compl`, and will soon be used for Heyting algebras. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/order/bounded_order.lean + theorem bot_codisjoint + theorem codisjoint.comm + theorem codisjoint.dual + theorem codisjoint.eq_top + theorem codisjoint.eq_top_of_ge + theorem codisjoint.eq_top_of_le + theorem codisjoint.inf_left + theorem codisjoint.inf_right + theorem codisjoint.left_le_of_le_inf_left + theorem codisjoint.left_le_of_le_inf_right + theorem codisjoint.mono + theorem codisjoint.mono_left + theorem codisjoint.mono_right + theorem codisjoint.ne + theorem codisjoint.of_codisjoint_sup_of_le' + theorem codisjoint.of_codisjoint_sup_of_le + theorem codisjoint.sup_left' + theorem codisjoint.sup_left + theorem codisjoint.sup_right' + theorem codisjoint.sup_right + theorem codisjoint.symm + def codisjoint + theorem codisjoint_assoc + theorem codisjoint_bot + theorem codisjoint_iff + theorem codisjoint_inf_left + theorem codisjoint_inf_right + theorem codisjoint_of_dual_iff + theorem codisjoint_self + theorem codisjoint_to_dual_iff + theorem codisjoint_top_left + theorem codisjoint_top_right + theorem disjoint.dual + theorem disjoint_of_dual_iff + theorem disjoint_to_dual_iff +/- theorem is_compl.of_eq +/- theorem is_compl.sup_eq_top +/- structure is_compl + theorem symmetric_codisjoint Modified src/order/compactly_generated.lean Modified src/order/filter/basic.lean Modified src/order/hom/basic.lean + theorem codisjoint.map_order_iso + theorem codisjoint_map_order_iso_iff +/- theorem order_embedding.le_map_sup +/- theorem order_embedding.map_inf_le +/- theorem order_iso.map_inf +/- theorem order_iso.map_sup Modified src/order/hom/lattice.lean + theorem codisjoint.map +/- theorem is_compl.map 2022-07-11 08:26:44 b7148c4 feat(analysis/special_functions/pow): Rational powers are dense (#15002) There is a rational square between any two positive elements of an archimedean ordered field. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem real.exists_rat_pow_btwn + theorem real.exists_rat_pow_btwn_rat + theorem real.exists_rat_pow_btwn_rat_aux Modified src/data/real/sqrt.lean + theorem real.lt_sq_of_sqrt_lt 2022-07-11 02:42:30 e3e4cc6 feat(data/nat/basic): split `exists_lt_and_lt_iff_not_dvd` into `if` and `iff` lemmas (#15099) Pull out from `exists_lt_and_lt_iff_not_dvd` ("`n` is not divisible by `a` iff it is between `a * k` and `a * (k + 1)` for some `k`") a separate lemma proving the forward direction (which doesn't need the `0 < a` assumption) and use this to golf the `iff` lemma. Also renames the lemma to the more descriptive `not_dvd_{of,iff}_between_consec_multiples`. ESTIMATED CHANGES Modified src/data/nat/basic.lean - theorem nat.exists_lt_and_lt_iff_not_dvd + theorem nat.not_dvd_iff_between_consec_multiples + theorem nat.not_dvd_of_between_consec_multiples Modified src/data/nat/multiplicity.lean 2022-07-11 02:42:29 67779f7 feat(algebra/category/BoolRing): The equivalence between Boolean rings and Boolean algebras (#15019) as the categorical equivalence `BoolRing ≌ BoolAlg`. ESTIMATED CHANGES Modified src/algebra/category/BoolRing.lean + def BoolRing_equiv_BoolAlg 2022-07-11 00:36:10 b18b71c refactor(data/finset/lattice): respell `finset.max/finset.min` using `sup/inf coe` (#15217) This PR simply redefines * `finset.max s` with the defeq `finset.sup s coe`, * `finset.min s` with the defeq `finset.sup/inf s coe`. This arose from PR #15212. ESTIMATED CHANGES Modified src/data/finset/lattice.lean 2022-07-10 19:29:29 ad08001 feat(category_theory/limits): opposites of limit pullback cones (#14526) Among other similar statements, this PR associates a `pullback_cone f g` to a `pushout_cocone f.op g.op`, and it is a limit pullback cone if the original cocone is a colimit cocone. ESTIMATED CHANGES Modified src/category_theory/limits/opposites.lean + def category_theory.limits.cospan_op + def category_theory.limits.op_cospan + def category_theory.limits.op_span + def category_theory.limits.pullback_cone.is_limit_equiv_is_colimit_op + def category_theory.limits.pullback_cone.is_limit_equiv_is_colimit_unop + def category_theory.limits.pullback_cone.op + theorem category_theory.limits.pullback_cone.op_inl + theorem category_theory.limits.pullback_cone.op_inr + def category_theory.limits.pullback_cone.op_unop + def category_theory.limits.pullback_cone.unop + theorem category_theory.limits.pullback_cone.unop_inl + theorem category_theory.limits.pullback_cone.unop_inr + def category_theory.limits.pullback_cone.unop_op + def category_theory.limits.pushout_cocone.is_colimit_equiv_is_limit_op + def category_theory.limits.pushout_cocone.is_colimit_equiv_is_limit_unop + def category_theory.limits.pushout_cocone.op + theorem category_theory.limits.pushout_cocone.op_fst + theorem category_theory.limits.pushout_cocone.op_snd + def category_theory.limits.pushout_cocone.op_unop + def category_theory.limits.pushout_cocone.unop + theorem category_theory.limits.pushout_cocone.unop_fst + def category_theory.limits.pushout_cocone.unop_op + theorem category_theory.limits.pushout_cocone.unop_snd + def category_theory.limits.span_op Modified src/category_theory/limits/shapes/pullbacks.lean 2022-07-10 17:43:04 f4f0f67 feat(set_theory/zfc): simp lemmas for `arity` and `const` (#15214) ESTIMATED CHANGES Modified src/set_theory/zfc.lean + theorem arity.const_succ + theorem arity.const_succ_apply + theorem arity.const_zero + theorem arity_succ + theorem arity_zero 2022-07-10 17:43:03 cf4783f feat(set_theory/zfc): basic lemmas on `pSet.equiv` (#15211) We unfold the complex definition into something easier to use. ESTIMATED CHANGES Modified src/set_theory/zfc.lean + theorem pSet.exists_equiv_left + theorem pSet.exists_equiv_right 2022-07-10 17:43:01 4b6ec60 lint(topology/algebra/order/basic): use `finite` instead of `fintype` (#15203) ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean 2022-07-10 15:28:36 f51aaab feat(algebra/order/monoid) Add zero_le_three and zero_le_four (#15219) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem zero_le_four + theorem zero_le_three 2022-07-10 15:28:35 e5b8d09 feat(data/finset/lattice): add three*2 lemmas about `finset.max/min` (#15212) The three lemmas are * `mem_le_max: ↑a ≤ s.max`, * `max_mono : s.max ≤ t.max`, * `max_le : s.max ≤ M`, and * `min_le_coe_of_mem : s.min`, * `min_mono : t.min ≤ s.min`, * `le_min : m ≤ s.min`. ~~I feel that I did not get the hang of `finset.max`: probably a lot of golfing is possible, at least for `max_mono`!~~ Luckily, Eric looked at the PR and now the proofs have been shortened! I also golfed `le_max_of_mem` and `min_le_of_mem`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.coe_le_max_of_mem + theorem finset.le_min + theorem finset.max_le + theorem finset.max_mono + theorem finset.min_le_coe_of_mem + theorem finset.min_mono 2022-07-10 15:28:34 5305d39 feat(data/pnat/basic): `succ` as an order isomorphism between `ℕ` and `ℕ+` (#15183) Couldn't find this in the library. Asked on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/order.20isomorphism.20between.20.E2.84.95.20and.20.E2.84.95.2B/near/288891689) in case anyone knew of this already. ESTIMATED CHANGES Modified src/data/pnat/basic.lean + def pnat.succ_order_iso 2022-07-10 14:02:39 37c2777 feat(order/filter/ultrafilter): `pure`, `map`, and `comap` lemmas (#15187) A handful of simple lemmas. ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean +/- theorem ultrafilter.coe_comap + theorem ultrafilter.coe_pure + theorem ultrafilter.comap_comap + theorem ultrafilter.comap_id + theorem ultrafilter.comap_pure - theorem ultrafilter.eq_principal_of_finite_mem + theorem ultrafilter.eq_pure_of_finite_mem + theorem ultrafilter.eq_pure_of_fintype + theorem ultrafilter.map_id' + theorem ultrafilter.map_id + theorem ultrafilter.map_map + theorem ultrafilter.map_pure + theorem ultrafilter.pure_injective 2022-07-09 19:44:03 861589f feat(linear_algebra/unitary_group): better constructor (#15209) `A ∈ matrix.unitary_group n α` means by definition (for reasons of agreement with something more general) that `A * star A = 1` and `star A * A = 1`. But either condition implies the other, so we provide a lemma to reduce to the first. ESTIMATED CHANGES Modified src/linear_algebra/unitary_group.lean + theorem matrix.mem_orthogonal_group_iff + theorem matrix.mem_unitary_group_iff 2022-07-09 16:05:22 983fdd6 chore(set_theory/ordinal/arithmetic): review cast API (#14757) This PR does the following: - swap the direction of `nat_cast_succ` to match `nat.cast_succ`. - make various arguments explicit. - remove `lift_type_fin`, as it's a trivial consequence of `type_fin` and `lift_nat_cast`. - tag various theorems as `norm_cast`. - golf or otherwise cleanup various proofs. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.add_le_add_iff_right +/- theorem ordinal.lift_nat_cast - theorem ordinal.lift_type_fin +/- theorem ordinal.nat_cast_div +/- theorem ordinal.nat_cast_eq_zero +/- theorem ordinal.nat_cast_inj +/- theorem ordinal.nat_cast_le +/- theorem ordinal.nat_cast_lt +/- theorem ordinal.nat_cast_mod +/- theorem ordinal.nat_cast_mul +/- theorem ordinal.nat_cast_opow +/- theorem ordinal.nat_cast_pos +/- theorem ordinal.nat_cast_sub +/- theorem ordinal.nat_cast_succ Modified src/set_theory/ordinal/notation.lean 2022-07-09 14:09:58 6d245b2 feat(set_theory/ordinal/basic): order type of naturals is `ω` (#15178) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean + theorem ordinal.type_nat_lt 2022-07-09 13:17:49 7cf0ae6 feat(combinatorics/simple_graph/subgraph): add `subgraph.comap` and subgraph of subgraph coercion (#14877) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.coe_subgraph_injective + theorem simple_graph.subgraph.comap_monotone + theorem simple_graph.subgraph.map_le_iff_le_comap + theorem simple_graph.subgraph.restrict_coe_subgraph 2022-07-09 07:26:23 d3d3539 Removed unnecessary assumption in `map_injective_of_injective` (#15184) Removed assumption in `map_injective_of_injective` ESTIMATED CHANGES Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization/basic.lean +/- theorem localization_algebra_injective 2022-07-09 04:08:50 f26a0a3 feat(logic/equiv/set): define `equiv.set.pi` (#15176) ESTIMATED CHANGES Modified src/logic/equiv/set.lean 2022-07-09 01:15:44 c5b6fe5 feat(analysis/locally_convex/basic): a few lemmas about balanced sets (#14876) Add new lemmas about unions and intersection and membership of balanced sets. ESTIMATED CHANGES Modified src/analysis/locally_convex/basic.lean +/- theorem absorbs.add + theorem absorbs.neg + theorem absorbs.sub +/- theorem absorbs_Union_finset +/- theorem balanced.add + theorem balanced.mem_smul_iff + theorem balanced.neg + theorem balanced.neg_mem_iff +/- theorem balanced.smul + theorem balanced.sub + theorem balanced_Inter + theorem balanced_Inter₂ + theorem balanced_Union + theorem balanced_Union₂ + theorem balanced_empty +/- theorem balanced_univ +/- theorem set.finite.absorbs_Union 2022-07-08 22:50:34 fefd449 feat(set_theory/ordinal/arithmetic): tweak `type_add` and `type_mul` (#15193) This renames `type_mul` to the more accurate `type_prod_lex`, and renames `type_add` to `type_sum_lex` and reverses the order of the equality so that the two lemmas match. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.type_mul + theorem ordinal.type_prod_lex Modified src/set_theory/ordinal/basic.lean - theorem ordinal.type_add + theorem ordinal.type_sum_lex 2022-07-08 20:54:25 f39bd5f feat(analysis/normed_space/star/basic): make starₗᵢ apply to normed star groups (#15173) ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean 2022-07-08 20:54:25 8a38a69 feat(combinatorics/simple_graph/hasse): The Hasse diagram of `α × β` (#14978) ... is the box product of the Hasse diagrams of `α` and `β`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/hasse.lean + theorem simple_graph.hasse_prod Modified src/combinatorics/simple_graph/prod.lean +/- theorem simple_graph.box_prod_adj 2022-07-08 20:54:24 1a54e4d feat(combinatorics/additive/ruzsa_covering): The Ruzsa covering lemma (#14697) Prove the Ruzsa covering lemma, which says that a finset `s` can be covered using at most $\frac{|s + t|}{|t|}$ copies of `t - t`. ESTIMATED CHANGES Added src/combinatorics/additive/ruzsa_covering.lean + theorem finset.exists_subset_mul_div 2022-07-08 18:50:17 2d5b45c chore(data/zmod/defs): shuffle files around (#15142) This is to prepare to fix `char_p` related diamonds. No new lemmas were added, stuff was just moved around. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean Modified src/algebra/ne_zero.lean Modified src/data/zmod/basic.lean - theorem zmod.card - def zmod Added src/data/zmod/defs.lean + theorem zmod.card + def zmod Modified src/data/zmod/quotient.lean Modified src/ring_theory/roots_of_unity.lean 2022-07-08 18:50:16 11cdccb feat(data/rat/defs): add denominator as pnat (#15101) Option to bundle `x.denom` and `x.pos` into a pnat, which can be useful in defining functions using the denominator. ESTIMATED CHANGES Modified src/data/rat/defs.lean + theorem rat.coe_pnat_denom + theorem rat.mk_pnat_pnat_denom_eq + def rat.pnat_denom + theorem rat.pnat_denom_eq_iff_denom_eq 2022-07-08 17:45:40 feb34df chore(data/nat/squarefree): fix a tactic doc typo for norm num extension (#15189) ESTIMATED CHANGES Modified src/data/nat/squarefree.lean 2022-07-08 14:49:24 5a5d290 fix(data/fintype/basic): move card_subtype_mono into the fintype namespace (#15185) ESTIMATED CHANGES Modified src/data/fintype/basic.lean - theorem card_subtype_mono + theorem fintype.card_subtype_mono 2022-07-08 13:36:19 1937dff feat(analysis/normed_space/lp_space): normed_algebra structure (#15086) This also golfs the `normed_ring` instance to go via `subring.to_ring`, as this saves us from having to build the power, nat_cast, and int_cast structures manually. We also rename `lp.lp_submodule` to `lp_submodule` to avoid unhelpful repetition. ESTIMATED CHANGES Modified src/analysis/normed_space/lp_space.lean + theorem algebra_map_mem_ℓp_infty - def lp.lp_submodule + def lp_infty_subalgebra + def lp_infty_subring + def lp_submodule +/- theorem nat_cast_mem_ℓp_infty 2022-07-08 11:29:27 e74e534 doc(tactic/wlog): use markdown lists rather than indentation (#15113) The indentation used in this docstring was lost in the web docs. ESTIMATED CHANGES Modified src/tactic/wlog.lean 2022-07-08 11:29:26 0bc51f0 feat(topology/metric_space/hausdorff_distance): Thickening a compact inside an open (#14926) If a compact set is contained in an open set, then we can find a (closed) thickening of it still contained in the open. ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean + theorem is_compact.exists_cthickening_subset_open + theorem is_compact.exists_thickening_subset_open 2022-07-08 11:29:25 93be74b feat(combinatorics/simple_graph/prod): Box product (#14867) Define `simple_graph.box_prod`, the box product of simple graphs. Show that it's commutative and associative, and prove its connectivity properties. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean Added src/combinatorics/simple_graph/prod.lean + def simple_graph.box_prod + theorem simple_graph.box_prod_adj + theorem simple_graph.box_prod_adj_left + theorem simple_graph.box_prod_adj_right + def simple_graph.box_prod_assoc + def simple_graph.box_prod_comm + theorem simple_graph.box_prod_connected + def simple_graph.box_prod_left + def simple_graph.box_prod_right + def simple_graph.walk.of_box_prod_left + theorem simple_graph.walk.of_box_prod_left_box_prod_left + theorem simple_graph.walk.of_box_prod_left_box_prod_right + def simple_graph.walk.of_box_prod_right 2022-07-08 09:53:26 7c070c4 feat(data/finset/basic): Coercion of a product of finsets (#15011) `↑(∏ i in s, f i) : set α) = ∏ i in s, ↑(f i)` for `f : ι → finset α`. ESTIMATED CHANGES Modified src/data/finset/pointwise.lean + theorem finset.coe_coe_monoid_hom + def finset.coe_monoid_hom + theorem finset.coe_monoid_hom_apply +/- theorem finset.coe_pow + theorem finset.coe_prod Modified src/data/polynomial/ring_division.lean 2022-07-08 05:24:53 d34b330 feat(data/set/basic,order/filter/basic): add semiconj lemmas about images and maps (#14970) This adds `function.commute` and `function.semiconj` lemmas, and replaces all the uses of `_comm` lemmas with the `semiconj` version as it turns out that only this generality is needed. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem function.commute.finset_image + theorem function.commute.finset_map + theorem function.semiconj.finset_image + theorem function.semiconj.finset_map Modified src/data/finset/pointwise.lean Modified src/data/set/basic.lean + theorem function.commute.set_image + theorem function.semiconj.set_image Modified src/data/set/pointwise.lean +/- theorem set.image_op_inv Modified src/order/filter/basic.lean + theorem commute.filter_comap + theorem commute.filter_map + theorem function.semiconj.filter_comap + theorem function.semiconj.filter_map Modified src/order/filter/pointwise.lean +/- theorem filter.map_inv' Modified src/topology/algebra/field.lean 2022-07-08 05:24:52 563a51a chore(topology/algebra/semigroup): golf file (#14957) ESTIMATED CHANGES Modified src/topology/algebra/semigroup.lean 2022-07-08 05:24:52 ba9f346 feat(topology/algebra/uniform_group): `uniform_group` is preserved by Inf and comap (#14889) This is the uniform version of #11720 ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean + theorem uniform_group_Inf + theorem uniform_group_comap + theorem uniform_group_inf + theorem uniform_group_infi Modified src/topology/uniform_space/basic.lean +/- theorem uniform_continuous_iff 2022-07-08 02:55:33 6eeb941 refactor(set_theory/cardinal/basic): migrate from `fintype` to `finite` (#15175) * add `finite_iff_exists_equiv_fin`; * add `cardinal.mk_eq_nat_iff` and `cardinal.lt_aleph_0_iff_finite`; * rename the old `cardinal.lt_aleph_0_iff_finite` to `cardinal.lt_aleph_0_iff_finite_set`; * rename `cardinal.lt_aleph_0_of_fintype` to `cardinal.lt_aleph_0_of_finite`, assume `[finite]` instead of `[fintype]`; * add an alias `set.finite.lt_aleph_0`; * rename `W_type.cardinal_mk_le_max_aleph_0_of_fintype` to `W_type.cardinal_mk_le_max_aleph_0_of_finite`, fix assumption. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/data/W/cardinal.lean + theorem W_type.cardinal_mk_le_max_aleph_0_of_finite - theorem W_type.cardinal_mk_le_max_aleph_0_of_fintype Modified src/data/finite/basic.lean + theorem finite_iff_exists_equiv_fin Modified src/data/mv_polynomial/cardinal.lean Modified src/data/polynomial/cardinal.lean Modified src/field_theory/finiteness.lean Modified src/field_theory/is_alg_closed/classification.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.lt_aleph_0_iff_finite + theorem cardinal.lt_aleph_0_iff_set_finite + theorem cardinal.lt_aleph_0_of_finite - theorem cardinal.lt_aleph_0_of_fintype + theorem cardinal.mk_eq_nat_iff Modified src/set_theory/game/short.lean 2022-07-08 02:55:32 a3c647b feat(set_theory/ordinal/arithmetic): tweak theorems about `0` and `1` (#15174) We add a few basic theorems on the `0` and `1` ordinals. We rename `one_eq_type_unit` to `type_unit`, and remove `one_eq_lift_type_unit` by virtue of being a trivial consequence of `type_unit` and `lift_one`. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean +/- theorem ordinal.lift_one +/- theorem ordinal.lift_zero - theorem ordinal.one_eq_lift_type_unit - theorem ordinal.one_eq_type_unit + theorem ordinal.type_empty + theorem ordinal.type_eq_one_iff_unique + theorem ordinal.type_eq_one_of_unique + theorem ordinal.type_pempty + theorem ordinal.type_punit + theorem ordinal.type_unit 2022-07-08 02:55:31 f0f4070 feat(topology/algebra/infinite_sum): Double sum is equal to a single value (#15157) A generalized version of `tsum_eq_single` that works for a double indexed sum, when all but one summand is zero. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem tsum_tsum_eq_single 2022-07-08 02:55:30 8927a02 chore(tactic/lift): move a proof to `subtype.exists_pi_extension` (#15098) * Move `_can_lift` attr to the bottom of the file, just before the rest of meta code. * Use `ι → Sort*` instead of `Π i : ι, Sort*`. * Move `pi_subtype.can_lift.prf` to a separate lemma. ESTIMATED CHANGES Modified src/tactic/lift.lean + theorem subtype.exists_pi_extension 2022-07-08 02:55:29 0e3184f feat(data/fin/tuple/basic): add lemmas for rewriting exists and forall over `n+1`-tuples (#15048) The lemma names `fin.forall_fin_succ_pi` and `fin.exists_fin_succ_pi` mirror the existing `fin.forall_fin_succ` and `fin.exists_fin_succ`. ESTIMATED CHANGES Modified src/data/fin/tuple/basic.lean + theorem fin.exists_fin_succ_pi + theorem fin.exists_fin_zero_pi + theorem fin.forall_fin_succ_pi + theorem fin.forall_fin_zero_pi 2022-07-08 02:55:28 2a7ceb0 perf(linear_algebra): speed up `graded_algebra` instances (#14967) Reduce `elaboration of graded_algebra` in: + `exterior_algebra.graded_algebra` from ~20s to 3s- + `tensor_algebra.graded_algebra` from 7s+ to 2s- + `clifford_algebra.graded_algebra` from 14s+ to 4s- (These numbers were before `lift_ι` and `lift_ι_eq` were extracted from `exterior_algebra.graded_algebra` and `lift_ι_eq` was extracted from `clifford_algebra.graded_algebra` in #12182.) Fix [timeout reported on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/deterministic.20timeout/near/286996731) Also shorten the statements of the first two without reducing clarity (I think). ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/linear_algebra/exterior_algebra/grading.lean Modified src/linear_algebra/tensor_algebra/grading.lean 2022-07-08 02:55:27 a5a6865 feat(combinatorics/set_family/intersecting): Intersecting families (#14475) Define intersecting families, prove that intersecting families in `α` have size at most `card α / 2` and that all maximal intersecting families are this size. ESTIMATED CHANGES Modified docs/references.bib Added src/combinatorics/set_family/intersecting.lean + theorem set.intersecting.card_le + theorem set.intersecting.exists_card_eq + theorem set.intersecting.exists_mem_finset + theorem set.intersecting.exists_mem_set + theorem set.intersecting.insert + theorem set.intersecting.is_max_iff_card_eq + theorem set.intersecting.is_upper_set' + theorem set.intersecting.mono + theorem set.intersecting.ne_bot + theorem set.intersecting.not_bot_mem + theorem set.intersecting.not_compl_mem + theorem set.intersecting.not_mem + def set.intersecting + theorem set.intersecting_empty + theorem set.intersecting_iff_eq_empty_of_subsingleton + theorem set.intersecting_iff_pairwise_not_disjoint + theorem set.intersecting_insert + theorem set.intersecting_singleton Modified src/order/upper_lower.lean + theorem is_lower_set.bot_mem + theorem is_lower_set.not_bot_mem + theorem is_lower_set.top_mem + theorem is_upper_set.bot_mem + theorem is_upper_set.not_top_mem + theorem is_upper_set.top_mem 2022-07-08 02:55:26 70a2708 feat(topology/continuous_function): Any T0 space embeds in a product of copies of the Sierpinski space (#14036) Any T0 space embeds in a product of copies of the Sierpinski space ESTIMATED CHANGES Added src/topology/continuous_function/t0_sierpinski.lean + theorem topological_space.eq_induced_by_maps_to_sierpinski + def topological_space.product_of_mem_opens + theorem topological_space.product_of_mem_opens_embedding + theorem topological_space.product_of_mem_opens_inducing + theorem topological_space.product_of_mem_opens_injective Modified src/topology/sets/opens.lean + theorem topological_space.opens.mem_mk 2022-07-08 00:21:19 646028a refactor(data/finset/lattice): finset.{min,max} away from option (#15163) Switch to a `with_top`/`with_bot` based API. This avoids exposing `option` as implementation detail. Redefines `polynomial.degree` to use `coe` instead of `some` ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/data/finset/lattice.lean +/- theorem finset.le_max' +/- theorem finset.le_max_of_mem +/- theorem finset.max_empty + theorem finset.max_eq_bot - theorem finset.max_eq_none +/- theorem finset.max_of_mem +/- theorem finset.max_of_nonempty +/- theorem finset.max_singleton +/- theorem finset.mem_of_max +/- theorem finset.mem_of_min +/- theorem finset.min'_le +/- theorem finset.min_empty - theorem finset.min_eq_none + theorem finset.min_eq_top +/- theorem finset.min_le_of_mem +/- theorem finset.min_of_mem +/- theorem finset.min_of_nonempty +/- theorem finset.min_singleton Modified src/data/mv_polynomial/equiv.lean Modified src/data/polynomial/degree/definitions.lean +/- def polynomial.degree Modified src/data/polynomial/degree/trailing_degree.lean Modified src/order/bounded_order.lean + theorem with_bot.rec_bot_coe_bot + theorem with_bot.rec_bot_coe_coe + def with_bot.unbot' + theorem with_bot.unbot'_bot + theorem with_bot.unbot'_coe + theorem with_top.rec_top_coe_coe + theorem with_top.rec_top_coe_top + def with_top.untop' + theorem with_top.untop'_coe + theorem with_top.untop'_top Modified src/ring_theory/polynomial/basic.lean 2022-07-07 22:47:30 8a80759 feat(order/filter/basic): add `map_le_map` and `map_injective` (#15128) * Add `filter.map_le_map`, an `iff` version of `filter.map_mono`. * Add `filter.map_injective`, a `function.injective` version of `filter.map_inj`. ESTIMATED CHANGES Modified src/order/filter/basic.lean - theorem filter.eq_of_map_eq_map_inj' - theorem filter.le_of_map_le_map_inj' - theorem filter.le_of_map_le_map_inj_iff + theorem filter.map_eq_map_iff_of_inj_on +/- theorem filter.map_inj + theorem filter.map_injective + theorem filter.map_le_map_iff + theorem filter.map_le_map_iff_of_inj_on 2022-07-07 19:22:46 b4979cb chore(data/rat): split `field ℚ` instance from definition of `ℚ` (#14893) I want to refer to the rational numbers in the definition of a field, meaning we can't define the field structure on `ℚ` in the same file as `ℚ` itself. This PR moves everything in `data/rat/basic.lean` that does not depend on `algebra/field/basic.lean` into a new file `data/rat/defs.lean`: definition of the type `ℚ`, the operations giving its algebraic structure, and the coercions from integers and natural numbers. Basically, everything except the actual `field ℚ` instance. It turns out our basic lemmas on rational numbers only require a `comm_ring`, `comm_group_with_zero` and `is_domain` instance, so I defined those instances in `defs.lean` could leave all lemmas intact. As a consequence, the transitive imports provided by `data.rat.basic` are somewhat smaller: no `linear_ordered_field` is needed until `data.rat.order`. I see this as a bonus but can also re-import `algebra.order.field` in `data.rat.basic` if desired. ESTIMATED CHANGES Modified counterexamples/pseudoelement.lean Modified src/algebra/field/basic.lean Added src/data/rat/basic.lean Modified src/data/rat/defs.lean Modified src/data/rat/order.lean Modified src/number_theory/number_field.lean Modified test/rat.lean 2022-07-07 16:57:16 7428bd9 refactor(data/finite/set,data/set/finite): move most contents of one file to another (#15166) * move most content of `data.finite.set` to `data.set.finite`; * use `casesI nonempty_fintype _` instead of `letI := fintype.of_finite`; sometimes it lets us avoid `classical.choice`; * merge `set.finite.of_fintype`, `set.finite_of_fintype`, and `set.finite_of_finite` into `set.to_finite`; * rewrite `set.finite_univ_iff` and `finite.of_finite_univ` in terms of `set.finite`; * replace some assumptions `[fintype (plift _)]` with `[finite _]`; * generalize `set.cod_restrict` and some lemmas to allow domain in `Sort*`, use it for `finite.of_injective_finite.range`. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/algebra/big_operators/finprod.lean Modified src/analysis/box_integral/partition/measure.lean Modified src/data/finite/basic.lean +/- def fintype.of_finite + theorem nonempty_fintype Modified src/data/finite/set.lean - theorem finite.of_finite_univ +/- theorem finite.of_injective_finite_range - theorem finite.set.finite_bUnion - theorem set.finite_iff_finite - theorem set.finite_of_finite - theorem set.finite_univ_iff Modified src/data/polynomial/ring_division.lean Modified src/data/set/finite.lean + theorem finite.set.finite_bUnion +/- theorem finset.finite_to_set - theorem set.finite.of_fintype +/- theorem set.finite.of_subsingleton +/- theorem set.finite_Union + theorem set.finite_coe_iff +/- theorem set.finite_empty +/- theorem set.finite_le_nat +/- theorem set.finite_lt_nat +/- theorem set.finite_mem_finset - theorem set.finite_of_fintype +/- theorem set.finite_pure +/- theorem set.finite_range +/- theorem set.finite_singleton +/- theorem set.finite_univ + theorem set.finite_univ_iff + theorem set.to_finite Modified src/data/set/function.lean +/- def set.cod_restrict +/- theorem set.coe_cod_restrict_apply +/- theorem set.injective_cod_restrict +/- theorem set.restrict_comp_cod_restrict Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/matrix/diagonal.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/probability_mass_function/basic.lean Modified src/order/atoms.lean Modified src/order/compactly_generated.lean Modified src/order/locally_finite.lean +/- theorem set.finite_Icc +/- theorem set.finite_Ici +/- theorem set.finite_Ico +/- theorem set.finite_Iic +/- theorem set.finite_Iio +/- theorem set.finite_Ioc +/- theorem set.finite_Ioi +/- theorem set.finite_Ioo Modified src/order/well_founded_set.lean +/- theorem set.fintype.is_pwo Modified src/set_theory/cardinal/ordinal.lean Modified src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/basic.lean Modified src/topology/separation.lean 2022-07-07 16:57:15 691f04f feat(order/rel_iso): two reflexive/irreflexive relations on a unique type are isomorphic (#14760) We also rename `not_rel` to the more descriptive name `not_rel_of_subsingleton`. ESTIMATED CHANGES Modified src/order/rel_classes.lean - theorem not_rel + theorem not_rel_of_subsingleton + theorem rel_of_subsingleton Modified src/order/rel_iso.lean + def rel_iso.rel_iso_of_unique_of_irrefl + def rel_iso.rel_iso_of_unique_of_refl 2022-07-07 14:49:11 6df59d6 feat(data/list/basic): nth_le_enum (#15139) Fill out some of the `enum` and `enum_from` API Link the two via `map_fst_add_enum_eq_enum_from`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.enum_append + theorem list.enum_cons + theorem list.enum_from_append + theorem list.enum_from_cons + theorem list.enum_from_nil + theorem list.enum_from_singleton + theorem list.enum_nil + theorem list.enum_singleton + theorem list.map_fst_add_enum_eq_enum_from + theorem list.map_fst_add_enum_from_eq_enum_from + theorem list.nth_le_enum + theorem list.nth_le_enum_from 2022-07-07 13:45:33 5852568 feat(combinatorics/simple_graph/{basic,subgraph,clique,coloring}): add induced graphs, characterization of cliques, and bounds for colorings (#14034) This adds `simple_graph.map`, `simple_graph.comap`, and induced graphs and subgraphs. There are renamings: `simple_graph.subgraph.map` to `simple_graph.subgraph.inclusion`, `simple_graph.subgraph.map_top` to `simple_graph.subgraph.hom`, and `simple_graph.subgraph.map_spanning_top` to `simple_graph.subgraph.spanning_hom`. These changes originated to be able to express that a clique is a set of vertices whose induced subgraph is complete, which gives some clique-based bounds for chromatic numbers. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.comap_map_eq + theorem simple_graph.comap_monotone + theorem simple_graph.comap_surjective + theorem simple_graph.hom.injective_of_top_hom + def simple_graph.induce + theorem simple_graph.induce_spanning_coe + theorem simple_graph.iso.to_embedding_complete_graph + theorem simple_graph.left_inverse_comap_map + theorem simple_graph.map_adj + theorem simple_graph.map_comap_le + theorem simple_graph.map_injective + theorem simple_graph.map_le_iff_le_comap + theorem simple_graph.map_monotone + def simple_graph.spanning_coe + theorem simple_graph.spanning_coe_induce_le Modified src/combinatorics/simple_graph/clique.lean + theorem simple_graph.clique_free_iff + theorem simple_graph.clique_free_of_card_lt + theorem simple_graph.is_clique_iff_induce_eq + theorem simple_graph.not_clique_free_card_of_top_embedding + theorem simple_graph.not_clique_free_iff + theorem simple_graph.not_clique_free_of_top_embedding + def simple_graph.top_embedding_of_not_clique_free Modified src/combinatorics/simple_graph/coloring.lean + theorem simple_graph.clique_free_of_chromatic_number_lt + theorem simple_graph.colorable.clique_free + theorem simple_graph.is_clique.card_le_chromatic_number + theorem simple_graph.is_clique.card_le_of_colorable + theorem simple_graph.is_clique.card_le_of_coloring Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.induce_eq_coe_induce_top + theorem simple_graph.subgraph.hom.injective + theorem simple_graph.subgraph.inclusion.injective + def simple_graph.subgraph.inclusion + def simple_graph.subgraph.induce + theorem simple_graph.subgraph.induce_empty + theorem simple_graph.subgraph.induce_mono + theorem simple_graph.subgraph.induce_mono_left + theorem simple_graph.subgraph.induce_mono_right - theorem simple_graph.subgraph.map.injective - def simple_graph.subgraph.map + theorem simple_graph.subgraph.map_monotone - theorem simple_graph.subgraph.map_spanning_top.injective - def simple_graph.subgraph.map_spanning_top - theorem simple_graph.subgraph.map_top.injective - def simple_graph.subgraph.map_top - theorem simple_graph.subgraph.map_top_to_fun + theorem simple_graph.subgraph.spanning_hom.injective + def simple_graph.subgraph.spanning_hom 2022-07-07 08:40:00 1422d38 feat(order/succ_pred): expand API on `with_bot` and `with_top` (#15016) We add a bunch of `simp` lemmas for successor and predecessors on `with_bot` and `with_top`, and golf some proofs. ESTIMATED CHANGES Modified src/order/succ_pred/basic.lean + theorem with_bot.pred_coe + theorem with_bot.pred_coe_bot + theorem with_bot.pred_coe_of_ne_bot + theorem with_bot.succ_bot + theorem with_bot.succ_coe + theorem with_top.pred_coe + theorem with_top.pred_top + theorem with_top.succ_coe + theorem with_top.succ_coe_of_ne_top + theorem with_top.succ_coe_top 2022-07-07 06:45:03 0d18630 chore(ring_theory/norm): generalise a couple of lemmas (#15160) Using the generalisation linter ESTIMATED CHANGES Modified src/ring_theory/norm.lean +/- theorem algebra.norm_eq_prod_embeddings_gen +/- theorem algebra.norm_eq_zero_iff' +/- theorem algebra.norm_eq_zero_iff +/- theorem algebra.prod_embeddings_eq_finrank_pow 2022-07-07 05:04:33 bf735cd chore(set_theory/ordinal/basic): remove `rel_iso_out` (#15145) This is just a specific application of `rel_iso.cast`. Moreover, it's unused. ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean - def ordinal.rel_iso_out 2022-07-07 05:04:32 9b2755b chore(*): add missing `to_fun → apply` configurations for `simps` (#15112) This improves the names of some generated lemmas for `continuous_map` and `quadratic_form`. ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/linear_algebra/quadratic_form/prod.lean Modified src/order/hom/bounded.lean Modified src/topology/continuous_function/basic.lean Modified src/topology/continuous_function/polynomial.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/gluing.lean 2022-07-07 05:04:31 ab99fd1 chore(data/nat): rename oddly named lemma odd_gt_zero (#13040) ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified src/data/nat/parity.lean - theorem nat.odd_gt_zero + theorem nat.pos_of_odd 2022-07-07 02:38:11 6d02dac feat(order/lattice, order/lattice_intervals): coe inf/sup lemmas (#15136) This PR adds simp lemmas for coercions of inf/sup in order instances on intervals. We also change the order of some arguments in instances/lemmas, by removing `variables` commands, so that typeclass arguments precede others. ESTIMATED CHANGES Modified src/order/lattice.lean + theorem subtype.coe_inf + theorem subtype.coe_sup + theorem subtype.mk_inf_mk + theorem subtype.mk_sup_mk Modified src/order/lattice_intervals.lean 2022-07-07 00:12:50 418373e feat(combinatorics/simple_graph/basic): `dart.to_prod` is injective (#15150) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.dart.to_prod_injective 2022-07-07 00:12:49 3e52000 feat(data/quot): `is_equiv` instance for quotient equivalence (#15148) ESTIMATED CHANGES Modified src/data/quot.lean 2022-07-07 00:12:47 e034eb0 feat(order/rel_iso): add `rel_iso.cast` (#15144) ESTIMATED CHANGES Modified src/order/rel_iso.lean 2022-07-07 00:12:46 e335a41 refactor(group_theory/congruence): use `quotient.map` (#15130) Also add explicit universe levels in `algebra.category.Module.monoidal`. ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean +/- def Module.monoidal_category.associator +/- theorem Module.monoidal_category.tensor_id Modified src/group_theory/congruence.lean Modified src/group_theory/quotient_group.lean 2022-07-07 00:12:45 fdfc222 feat(measure_theory/integral): Circle integral transform (#13885) Some basic definitions and results related to circle integrals of a function. These form part of #13500 ESTIMATED CHANGES Modified src/measure_theory/integral/circle_integral.lean + theorem continuous_circle_map_inv Added src/measure_theory/integral/circle_integral_transform.lean + theorem complex.abs_circle_transform_bounding_function_le + def complex.circle_transform + def complex.circle_transform_bounding_function + def complex.circle_transform_deriv + theorem complex.circle_transform_deriv_bound + theorem complex.circle_transform_deriv_eq + theorem complex.circle_transform_deriv_periodic + theorem complex.continuous_circle_transform + theorem complex.continuous_circle_transform_deriv + theorem complex.continuous_on_abs_circle_transform_bounding_function + theorem complex.continuous_on_prod_circle_transform_function + theorem complex.integral_circle_transform 2022-07-06 21:58:37 0a89f18 chore(set_theory/ordinal/basic): clean up `ordinal.card` API (#15147) We tweak some spacing throughout this section of the file, and golf a few theorems/definitions. Conflicts and is inspired by #15137. ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean +/- def ordinal.card +/- theorem ordinal.card_type + theorem ordinal.ne_zero_of_out_nonempty +/- theorem ordinal.type_ne_zero_iff_nonempty 2022-07-06 21:58:36 a54e63d feat(set_theory/ordinal/basic): basic lemmas on `ordinal.lift` (#15146) We add some missing instances for preimages, and missing theorems for `ordinal.lift`. We remove `ordinal.lift_type`, as it was just a worse way of stating `ordinal.type_ulift`. We also tweak some spacing and golf a few theorems. This conflicts with (and is inspired by) some of the changes of #15137. ESTIMATED CHANGES Modified src/order/rel_iso.lean Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/ordinal/basic.lean - theorem ordinal.lift_type +/- theorem ordinal.lift_zero + theorem ordinal.type_lift_preimage + theorem ordinal.type_preimage + theorem ordinal.type_ulift + theorem rel_iso.ordinal_lift_type_eq 2022-07-06 19:18:30 b758104 feat(order/basic): a symmetric relation implies equality when it implies less-equal (#15149) ESTIMATED CHANGES Modified src/order/basic.lean + theorem rel_imp_eq_of_rel_imp_le 2022-07-06 15:08:32 d45a8ac refactor(topology/separation): redefine `t0_space` (#15046) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean + def prime_spectrum.nhds_order_embedding Modified src/topology/alexandroff.lean + theorem alexandroff.inseparable_coe + theorem alexandroff.inseparable_iff + theorem alexandroff.not_inseparable_coe_infty + theorem alexandroff.not_inseparable_infty_coe + theorem alexandroff.not_specializes_infty_coe + theorem alexandroff.specializes_coe Modified src/topology/separation.lean - theorem t0_space_def + theorem t0_space_iff_exists_is_open_xor_mem + theorem t1_space_iff_specializes_imp_eq Modified src/topology/uniform_space/separation.lean 2022-07-06 13:12:54 71b1be6 feat(analysis/inner_product_space): add simple lemmas for the orthogonal complement (#15020) We show that the orthogonal complement of a dense subspace is trivial. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem submodule.topological_closure_eq_top_iff + theorem submodule.triorthogonal_eq_orthogonal Modified src/topology/algebra/module/basic.lean + theorem is_closed.submodule_topological_closure_eq + theorem submodule.dense_iff_topological_closure_eq_top 2022-07-06 11:16:59 f09322b feat(geometry/manifold/local_invariant_properties): simplify definitions and proofs (#15116) * Simplify the sets in `local_invariant_prop` and `lift_prop_within_at` * Simplify many proofs in `local_invariant_properties.lean` * Reorder the intersection in `cont_diff_within_at_prop` to be more consistent with all lemmas in `smooth_manifold_with_corners.lean` * New lemmas, such as `cont_mdiff_within_at_iff_of_mem_source` and properties of `local_invariant_prop` * I expect that some lemmas in `cont_mdiff.lean` can be simplified using the new definitions, but I don't do that in this PR. * Lemma renamings: ``` cont_mdiff_within_at_iff -> cont_mdiff_within_at_iff' cont_mdiff_within_at_iff' -> cont_mdiff_within_at_iff_of_mem_source' cont_mdiff_within_at_iff'' -> cont_mdiff_within_at_iff [or iff.rfl] ``` ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + theorem chart_source_mem_nhds + theorem chart_target_mem_nhds Modified src/geometry/manifold/cont_mdiff.lean - theorem cont_diff_within_at_local_invariant_prop_id - theorem cont_diff_within_at_local_invariant_prop_mono +/- def cont_diff_within_at_prop + theorem cont_diff_within_at_prop_id + theorem cont_diff_within_at_prop_mono +/- theorem cont_mdiff_at_ext_chart_at + theorem cont_mdiff_at_iff + theorem cont_mdiff_at_iff_of_mem_source - theorem cont_mdiff_within_at_iff'' +/- theorem cont_mdiff_within_at_iff' + theorem cont_mdiff_within_at_iff_of_mem_source' + theorem cont_mdiff_within_at_iff_of_mem_source Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/local_invariant_properties.lean +/- def charted_space.lift_prop +/- def charted_space.lift_prop_at + theorem charted_space.lift_prop_at_iff + theorem charted_space.lift_prop_iff +/- def charted_space.lift_prop_on +/- def charted_space.lift_prop_within_at +/- theorem structure_groupoid.lift_prop_on_univ +/- theorem structure_groupoid.lift_prop_within_at_univ + theorem structure_groupoid.local_invariant_prop.congr' + theorem structure_groupoid.local_invariant_prop.congr + theorem structure_groupoid.local_invariant_prop.congr_iff + theorem structure_groupoid.local_invariant_prop.congr_iff_nhds_within + theorem structure_groupoid.local_invariant_prop.congr_nhds_within' + theorem structure_groupoid.local_invariant_prop.congr_nhds_within + theorem structure_groupoid.local_invariant_prop.congr_set + theorem structure_groupoid.local_invariant_prop.is_local_nhds + theorem structure_groupoid.local_invariant_prop.left_invariance +/- theorem structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on +/- theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff +/- theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_iff Modified src/topology/continuous_on.lean + theorem mem_nhds_within_iff_eventually + theorem mem_nhds_within_iff_eventually_eq + theorem nhds_within_eq_iff_eventually_eq Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.eventually_nhds' + theorem local_homeomorph.eventually_nhds + theorem local_homeomorph.eventually_nhds_within' + theorem local_homeomorph.eventually_nhds_within + theorem local_homeomorph.preimage_eventually_eq_target_inter_preimage_inter 2022-07-06 08:41:41 8ff5e11 feat(analysis/special_functions/complex/arg): add complex.abs_eq_one_iff (#15125) This is a simpler formulation of `complex.range_exp_mul_I` below. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.abs_eq_one_iff 2022-07-06 08:41:40 d908bc0 chore(data/fintype): drop a `decidable_pred` assumption (#14971) OTOH, now the proof depends on `classical.choice`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- def fintype_of_fintype_ne 2022-07-06 07:46:32 a95b442 feat(probability/martingale): Doob's maximal inequality (#14737) ESTIMATED CHANGES Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.set_integral_ge_of_const_le Modified src/measure_theory/lattice.lean + theorem finset.measurable_range_sup'' + theorem finset.measurable_range_sup' + theorem finset.measurable_sup' Modified src/probability/hitting_time.lean + theorem measure_theory.stopped_value_hitting_mem Modified src/probability/martingale.lean + theorem measure_theory.maximal_ineq + theorem measure_theory.smul_le_stopped_value_hitting 2022-07-06 07:04:08 bd9c307 doc(overview): add probability theory (#15114) Also: * Add convolutions to overview and undergrad * Add some other probability notions to undergrad * Minor cleanup in probability module docs ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/probability/cond_count.lean Modified src/probability/moments.lean 2022-07-06 02:26:24 93e97d1 feat(analysis/convex/function): Variants of `convex_on.le_right_of_left_le` (#14821) This PR adds four variants of `convex_on.le_right_of_left_le` that are useful when dealing with convex functions on the real numbers. ESTIMATED CHANGES Modified src/analysis/convex/function.lean - theorem concave_on.le_right_of_left_le' - theorem concave_on.le_right_of_left_le + theorem concave_on.left_le_of_le_right'' + theorem concave_on.right_le_of_le_left'' + theorem concave_on.right_le_of_le_left' + theorem concave_on.right_le_of_le_left + theorem convex_on.le_left_of_right_le'' + theorem convex_on.le_right_of_left_le'' 2022-07-05 23:18:42 71e11de chore(analysis/normed/field/basic): add `@[simp]` to `real.norm_eq_abs (#15006) * mark `real.norm_eq_abs` and `abs_nonneg` as `simp` lemmas; * add `abs` versions of `is_o.norm_left` etc; * add `inner_product_geometry.angle_smul_smul` and `linear_isometry.angle_map`. ESTIMATED CHANGES Modified archive/imo/imo1972_q5.lean Modified counterexamples/seminorm_lattice_not_distrib.lean Modified src/algebra/order/group.lean +/- theorem abs_nonneg Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O_abs_abs + theorem asymptotics.is_O_abs_left + theorem asymptotics.is_O_abs_right + theorem asymptotics.is_O_with_abs_abs + theorem asymptotics.is_O_with_abs_left + theorem asymptotics.is_O_with_abs_right + theorem asymptotics.is_o_abs_abs + theorem asymptotics.is_o_abs_left + theorem asymptotics.is_o_abs_right Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/basic.lean +/- def complex.im_clm +/- def complex.re_clm Modified src/analysis/normed/group/basic.lean +/- theorem real.norm_eq_abs Modified src/analysis/normed_space/basic.lean Modified src/analysis/special_functions/log/deriv.lean Modified src/geometry/euclidean/basic.lean + theorem inner_product_geometry.angle_smul_smul + theorem linear_isometry.angle_map Modified src/geometry/euclidean/inversion.lean Modified src/geometry/euclidean/sphere.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/number_theory/padics/hensel.lean Modified src/topology/tietze_extension.lean 2022-07-05 23:18:41 071dc90 feat(probability/martingale): positive part of a submartingale is also a submartingale (#14932) ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_of_integral.lean + theorem measure_theory.ae_le_of_forall_set_integral_le Modified src/order/filter/basic.lean + theorem filter.eventually_le.le_sup_of_le_left + theorem filter.eventually_le.le_sup_of_le_right + theorem filter.eventually_le.sup + theorem filter.eventually_le.sup_le Modified src/probability/martingale.lean 2022-07-05 19:14:55 f10d0ab feat(*): add lemmas about sigma types (#15085) * move `set.range_sigma_mk` to `data.set.sigma`; * add `set.preimage_image_sigma_mk_of_ne`, `set.image_sigma_mk_preimage_sigma_map_subset`, and `set.image_sigma_mk_preimage_sigma_map`; * add `function.injective.of_sigma_map` and `function.injective.sigma_map_iff`; * don't use pattern matching in the definition of `prod.to_sigma`; * add `filter.map_sigma_mk_comap` ESTIMATED CHANGES Modified src/data/set/basic.lean - theorem set.range_sigma_mk Modified src/data/set/sigma.lean + theorem set.image_sigma_mk_preimage_sigma_map + theorem set.image_sigma_mk_preimage_sigma_map_subset + theorem set.preimage_image_sigma_mk_of_ne + theorem set.range_sigma_mk Modified src/data/sigma/basic.lean + theorem function.injective.of_sigma_map + theorem function.injective.sigma_map_iff +/- theorem prod.fst_to_sigma +/- theorem prod.snd_to_sigma +/- def prod.to_sigma + theorem prod.to_sigma_mk Modified src/order/filter/bases.lean + theorem filter.map_sigma_mk_comap 2022-07-05 16:26:49 527afb3 feat(topology/sets/compacts): prod constructions (#15118) ESTIMATED CHANGES Modified src/topology/sets/compacts.lean + theorem topological_space.compact_opens.coe_prod + theorem topological_space.compacts.carrier_eq_coe + theorem topological_space.compacts.coe_prod + theorem topological_space.nonempty_compacts.carrier_eq_coe + theorem topological_space.nonempty_compacts.coe_prod + theorem topological_space.positive_compacts.carrier_eq_coe + theorem topological_space.positive_compacts.coe_prod 2022-07-05 15:04:58 db9cb46 feat(analysis/complex): equiv_real_prod_symm_apply (#15122) Plus some minor lemmas for #15106. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_lt_pi_iff Modified src/analysis/special_functions/pow.lean + theorem real.continuous_at_rpow_const Modified src/data/complex/basic.lean +/- def complex.equiv_real_prod + theorem complex.equiv_real_prod_symm_apply Modified src/topology/separation.lean + theorem is_open_ne_fun 2022-07-05 15:04:57 68ae182 feat(measure_theory/group/measure): a product of Haar measures is a Haar measure (#15120) ESTIMATED CHANGES Modified src/measure_theory/constructions/prod.lean + theorem measure_theory.integrable_prod_mul + theorem measure_theory.integral_prod_mul + theorem measure_theory.set_integral_prod_mul Modified src/measure_theory/function/jacobian.lean + theorem measure_theory.integral_target_eq_integral_abs_det_fderiv_smul Modified src/measure_theory/group/measure.lean Modified src/measure_theory/integral/interval_integral.lean + theorem integrable_on_Ici_iff_integrable_on_Ioi' + theorem integrable_on_Ici_iff_integrable_on_Ioi Modified src/measure_theory/measure/haar.lean + theorem measure_theory.measure.measure_preserving_inv 2022-07-05 12:32:49 365e30d chore(data/set/*,order/*): add missing lemmas about `monotone_on` etc (#14943) * Add `monotone_on`/`antitone`/`antitone_on` versions of existing `monotone` lemmas for `id`/`const`, `inf`/`sup`/`min`/`max`, `inter`/`union`, and intervals. * Drop `set.monotone_prod`, leave `monotone.set_prod` only. * Golf some proofs that were broken by removal of `set.monotone_prod`. ESTIMATED CHANGES Modified src/data/set/intervals/monotone.lean Modified src/data/set/lattice.lean + theorem antitone_on.inter + theorem antitone_on.union + theorem monotone_on.inter + theorem monotone_on.union - theorem set.monotone_prod Modified src/data/set/prod.lean + theorem antitone.set_prod + theorem antitone_on.set_prod + theorem monotone.set_prod + theorem monotone_on.set_prod Modified src/order/filter/lift.lean Modified src/order/lattice.lean Modified src/order/monotone.lean + theorem antitone_on_const + theorem monotone_on_const + theorem monotone_on_id + theorem strict_anti_of_le_iff_le + theorem strict_mono_on_id Modified src/tactic/monotonicity/lemmas.lean Modified src/topology/uniform_space/basic.lean + theorem nhds_eq_uniformity' 2022-07-05 10:10:27 dba3dce feat(measure_theory/function/conditional_expectation): monotonicity of the conditional expectation (#15024) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.condexp_L1_mono + theorem measure_theory.condexp_L2_indicator_nonneg + theorem measure_theory.condexp_ind_nonneg + theorem measure_theory.condexp_ind_smul_nonneg + theorem measure_theory.condexp_mono + theorem measure_theory.set_integral_condexp_L2_indicator 2022-07-05 10:10:26 676e772 refactor(analysis/convex/specific_functions): Remove hypothesis from `deriv_sqrt_mul_log` (#15015) This PR removes the `hx : 0 < x` hypothesis from `deriv_sqrt_mul_log`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.congr_of_mem + theorem has_deriv_within_at.deriv_eq_zero Modified src/analysis/convex/specific_functions.lean +/- theorem deriv2_sqrt_mul_log + theorem deriv_sqrt_mul_log' +/- theorem deriv_sqrt_mul_log + theorem has_deriv_at_sqrt_mul_log Modified src/topology/continuous_on.lean + theorem eventually_mem_nhds_within 2022-07-05 08:48:19 83eda07 refactor(data/real/ennreal): golf, generalize (#14996) ## Add new lemmas * `ennreal.bit0_strict_mono`, `ennreal.bit0_injective`, `ennreal.bit0_lt_bit0`, `ennreal.bit0_le_bit0`, `ennreal.bit0_top`; * `ennreal.bit1_strict_mono`, `ennreal.bit1_injective`, `ennreal.bit1_lt_bit1`, `ennreal.bit1_le_bit1`, `ennreal.bit1_top`; * `ennreal.div_eq_inv_mul`, `ennreal.of_real_mul'`; * `filter.eventually.prod_nhds`. ## Generalize lemmas * Drop unneeded assumption in `real.to_nnreal_bit0` and `ennreal.of_real_bit0`. ## Rename lemmas * `ennreal.mul_div_cancel` → `ennreal.div_mul_cancel`, fixing a TODO; * `prod_is_open.mem_nhds` → `prod_mem_nhds`: there are no open sets in the statement. ## Other changes * Golf some proofs. * Avoid non-final `simp`s here and there. * Move `mul_inv_cancel` etc up to use them in other proofs. * Move some `to_nnreal` lemmas above `to_real` lemmas, use them in `to_real` lemmas. * Use `to_dual` in `order_iso.inv_ennreal`. ESTIMATED CHANGES Modified src/analysis/mean_inequalities_pow.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.bit0_eq_top_iff +/- theorem ennreal.bit0_eq_zero_iff +/- theorem ennreal.bit0_inj + theorem ennreal.bit0_injective + theorem ennreal.bit0_le_bit0 + theorem ennreal.bit0_lt_bit0 + theorem ennreal.bit0_strict_mono + theorem ennreal.bit0_top +/- theorem ennreal.bit1_eq_one_iff +/- theorem ennreal.bit1_eq_top_iff +/- theorem ennreal.bit1_inj + theorem ennreal.bit1_injective + theorem ennreal.bit1_le_bit1 + theorem ennreal.bit1_lt_bit1 +/- theorem ennreal.bit1_ne_zero + theorem ennreal.bit1_strict_mono + theorem ennreal.bit1_top + theorem ennreal.div_eq_inv_mul + theorem ennreal.div_mul_cancel +/- theorem ennreal.inv_le_iff_le_mul +/- theorem ennreal.inv_le_inv +/- theorem ennreal.inv_lt_inv + theorem ennreal.inv_strict_anti - theorem ennreal.mul_div_cancel +/- theorem ennreal.mul_div_le +/- theorem ennreal.of_real_bit0 + theorem ennreal.of_real_mul' +/- theorem ennreal.to_nnreal_mul +/- theorem ennreal.to_nnreal_mul_top +/- theorem ennreal.to_nnreal_pow +/- theorem ennreal.to_nnreal_prod +/- theorem ennreal.to_nnreal_top_mul +/- theorem ennreal.to_real_mul +/- theorem ennreal.to_real_mul_top +/- theorem ennreal.to_real_pow +/- theorem ennreal.to_real_prod +/- theorem ennreal.to_real_top_mul +/- theorem order_iso.inv_ennreal_symm_apply Modified src/data/real/nnreal.lean +/- theorem real.to_nnreal_bit0 Modified src/number_theory/liouville/measure.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/constructions.lean + theorem filter.eventually.prod_nhds - theorem prod_is_open.mem_nhds + theorem prod_mem_nhds Modified src/topology/instances/ennreal.lean Modified src/topology/uniform_space/compact_separated.lean 2022-07-04 23:23:06 1886093 chore(analysis/calculus/deriv): make the exponent explicit in pow lemmas (#15117) This is useful to build derivatives for explicit functions using dot notation. ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified src/analysis/calculus/deriv.lean +/- theorem deriv_pow' +/- theorem deriv_pow Modified src/analysis/complex/phragmen_lindelof.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/special_functions/integrals.lean 2022-07-04 21:37:31 73d15d7 feat(number_theory/wilson): add Wilson's Theorem (#14717) The previous "Wilson's lemma" (zmod.wilsons_lemma) was a single direction of the iff for Wilson's Theorem. This finishes the proof by adding the (admittedly, much simpler) direction where, if the congruence is satisfied for `n`, then `n` is prime. ESTIMATED CHANGES Added src/number_theory/wilson.lean + theorem nat.prime_iff_fac_equiv_neg_one + theorem nat.prime_of_fac_equiv_neg_one 2022-07-04 20:40:33 06ac34b feat(analysis/special_functions/complex/arg): `continuous_at_arg_coe_angle` (#14980) Add the lemma that `complex.arg`, coerced to `real.angle`, is continuous except at 0. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.continuous_at_arg_coe_angle 2022-07-04 19:58:37 8f391f5 feat(geometry/euclidean/basic): `continuous_at_angle` (#15021) Add lemmas that (unoriented) angles are continuous, as a function of a pair of vectors or a triple of points, except where one of the vectors is zero or one of the end points equals the middle point. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.continuous_at_angle + theorem inner_product_geometry.continuous_at_angle 2022-07-04 17:12:28 407f39b chore(ring_theory/matrix_algebra): golf using `matrix.map` (#15040) This replaces terms of the form `λ i j, a * algebra_map R A (m i j)` with the defeq `a • m.map (algebra_map R A)`, as then we get access to the API about `map`. This also leverages existing bundled maps to avoid reproving linearity in the auxiliary constructions, removing `to_fun` and `to_fun_right_linear` as we can construct `to_fun_bilinear` directly with ease. ESTIMATED CHANGES Modified src/ring_theory/matrix_algebra.lean - def matrix_equiv_tensor.to_fun + theorem matrix_equiv_tensor.to_fun_bilinear_apply - def matrix_equiv_tensor.to_fun_right_linear 2022-07-04 01:38:58 051dffa refactor(data/nat/parity): `nat.even_succ` -> `nat.even_add_one` (#14917) Change `nat.even_succ` to be analogous to `int.even_add_one`. ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean Modified src/algebra/geom_sum.lean Modified src/analysis/special_functions/log/deriv.lean Modified src/data/nat/parity.lean + theorem nat.even_add_one - theorem nat.even_succ 2022-07-03 17:11:19 46344b4 feat(category_theory/limits): bilimit from kernel (#14452) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.binary_cofan.is_colimit.mk + def category_theory.limits.binary_fan.is_limit.mk Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.binary_bicone.is_bilimit_of_cokernel_fst + def category_theory.limits.binary_bicone.is_bilimit_of_cokernel_snd + def category_theory.limits.binary_bicone.is_bilimit_of_kernel_inl + def category_theory.limits.binary_bicone.is_bilimit_of_kernel_inr 2022-07-03 11:47:31 024a423 refactor(category_theory): generalise universe levels in preservation statements (#15067) This big refactoring of universe levels in the category theory library allows to express limit preservation statements like exactness of functors which are between categories that are not necessarily in the same universe level. For this change to make sense for fixed diagrams (like coequalizers or binary products), the corresponding index categories, the universe of which so far was pinned to the category they were used for, is now fixed to `Type`. ESTIMATED CHANGES Modified src/algebra/category/FinVect/limits.lean Modified src/algebra/category/Group/biproducts.lean +/- def AddCommGroup.biproduct_iso_pi +/- theorem AddCommGroup.biproduct_iso_pi_inv_comp_π Modified src/algebra/category/Module/biproducts.lean Modified src/algebra/category/Ring/constructions.lean Modified src/algebraic_geometry/Spec.lean +/- def algebraic_geometry.Spec.to_PresheafedSpace Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/algebraic_geometry/open_immersion.lean +/- theorem algebraic_geometry.PresheafedSpace.is_open_immersion.SheafedSpace_to_SheafedSpace Modified src/algebraic_geometry/presheafed_space.lean +/- theorem algebraic_geometry.PresheafedSpace.as_coe +/- theorem algebraic_geometry.PresheafedSpace.coe_to_fun_eq +/- theorem algebraic_geometry.PresheafedSpace.comp_base +/- theorem algebraic_geometry.PresheafedSpace.comp_c_app +/- theorem algebraic_geometry.PresheafedSpace.congr_app +/- def algebraic_geometry.PresheafedSpace.forget +/- structure algebraic_geometry.PresheafedSpace.hom +/- def algebraic_geometry.PresheafedSpace.id +/- theorem algebraic_geometry.PresheafedSpace.id_base +/- theorem algebraic_geometry.PresheafedSpace.id_c +/- theorem algebraic_geometry.PresheafedSpace.id_c_app +/- def algebraic_geometry.PresheafedSpace.of_restrict +/- def algebraic_geometry.PresheafedSpace.restrict +/- def algebraic_geometry.PresheafedSpace.Γ +/- theorem algebraic_geometry.PresheafedSpace.Γ_map_op +/- def category_theory.functor.map_presheaf +/- theorem category_theory.functor.map_presheaf_map_c +/- theorem category_theory.functor.map_presheaf_map_f Modified src/algebraic_geometry/presheafed_space/gluing.lean +/- structure algebraic_geometry.PresheafedSpace.glue_data +/- structure algebraic_geometry.SheafedSpace.glue_data Modified src/algebraic_geometry/presheafed_space/has_colimits.lean +/- def algebraic_geometry.PresheafedSpace.colimit +/- theorem algebraic_geometry.PresheafedSpace.colimit_carrier +/- def algebraic_geometry.PresheafedSpace.colimit_cocone +/- def algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc +/- def algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc_c_app +/- theorem algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc_c_naturality +/- theorem algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc_fac +/- def algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit +/- theorem algebraic_geometry.PresheafedSpace.colimit_presheaf +/- def algebraic_geometry.PresheafedSpace.colimit_presheaf_obj_iso_componentwise_limit +/- theorem algebraic_geometry.PresheafedSpace.colimit_presheaf_obj_iso_componentwise_limit_hom_π +/- theorem algebraic_geometry.PresheafedSpace.colimit_presheaf_obj_iso_componentwise_limit_inv_ι_app +/- def algebraic_geometry.PresheafedSpace.componentwise_diagram +/- theorem algebraic_geometry.PresheafedSpace.map_comp_c_app +/- theorem algebraic_geometry.PresheafedSpace.map_id_c_app +/- def algebraic_geometry.PresheafedSpace.pushforward_diagram_to_colimit Modified src/algebraic_geometry/sheafed_space.lean +/- theorem algebraic_geometry.SheafedSpace.as_coe +/- def algebraic_geometry.SheafedSpace.forget_to_PresheafedSpace - def algebraic_geometry.SheafedSpace.punit + def algebraic_geometry.SheafedSpace.unit +/- structure algebraic_geometry.SheafedSpace Modified src/algebraic_geometry/stalks.lean +/- def algebraic_geometry.PresheafedSpace.restrict_stalk_iso +/- theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_hom_eq_germ +/- theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_germ +/- theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_of_restrict +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.comp +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.congr +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.congr_hom +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.congr_point +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.id +/- def algebraic_geometry.PresheafedSpace.stalk_map.stalk_iso +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.stalk_specializes_stalk_map +/- def algebraic_geometry.PresheafedSpace.stalk_map +/- theorem algebraic_geometry.PresheafedSpace.stalk_map_germ Modified src/algebraic_topology/cech_nerve.lean Modified src/category_theory/abelian/right_derived.lean Modified src/category_theory/closed/functor.lean Modified src/category_theory/closed/ideal.lean Modified src/category_theory/closed/types.lean Modified src/category_theory/discrete_category.lean + def category_theory.discrete.functor_comp Modified src/category_theory/filtered.lean Modified src/category_theory/fin_category.lean Modified src/category_theory/functor/flat.lean Modified src/category_theory/functor/left_derived.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/idempotents/biproducts.lean +/- def category_theory.idempotents.karoubi.biproducts.bicone Modified src/category_theory/is_connected.lean Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/comma.lean Modified src/category_theory/limits/concrete_category.lean +/- def category_theory.limits.concrete.multiequalizer_equiv +/- theorem category_theory.limits.concrete.multiequalizer_equiv_apply +/- theorem category_theory.limits.concrete.multiequalizer_ext +/- theorem category_theory.limits.concrete.wide_pullback_ext' +/- theorem category_theory.limits.concrete.wide_pullback_ext Modified src/category_theory/limits/cone_category.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean +/- def category_theory.extend_cofan +/- def category_theory.extend_cofan_is_colimit +/- def category_theory.extend_fan +/- def category_theory.extend_fan_is_limit + def category_theory.preserves_shape_fin_of_preserves_binary_and_initial + def category_theory.preserves_shape_fin_of_preserves_binary_and_terminal - def category_theory.preserves_ulift_fin_of_preserves_binary_and_initial - def category_theory.preserves_ulift_fin_of_preserves_binary_and_terminal Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean +/- def category_theory.limits.colimit_quotient_coproduct +/- def category_theory.limits.limit_subobject_product Modified src/category_theory/limits/constructions/over/default.lean Modified src/category_theory/limits/constructions/over/products.lean +/- def category_theory.over.construct_products.cones_equiv_functor +/- def category_theory.over.construct_products.cones_equiv_inverse +/- def category_theory.over.construct_products.cones_equiv_inverse_obj +/- theorem category_theory.over.construct_products.over_products_of_wide_pullbacks +/- def category_theory.over.construct_products.wide_pullback_diagram_of_diagram_over Modified src/category_theory/limits/constructions/weakly_initial.lean +/- theorem category_theory.has_initial_of_weakly_initial_and_has_wide_equalizers +/- theorem category_theory.has_weakly_initial_of_weakly_initial_set_and_has_products Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/has_limits.lean - theorem category_theory.limits.has_smallest_colimits_of_has_colimits - theorem category_theory.limits.has_smallest_limits_of_has_limits Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/opposites.lean +/- theorem category_theory.limits.has_finite_coproducts_opposite +/- theorem category_theory.limits.has_finite_products_opposite Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.preserves_colimits_of_size_shrink + def category_theory.limits.preserves_limits_of_size_shrink + def category_theory.limits.preserves_smallest_colimits_of_preserves_colimits + def category_theory.limits.preserves_smallest_limits_of_preserves_limits + def category_theory.limits.reflects_colimits_of_shape_of_equiv + def category_theory.limits.reflects_colimits_of_size_shrink + def category_theory.limits.reflects_limits_of_shape_of_equiv + def category_theory.limits.reflects_limits_of_size_shrink + def category_theory.limits.reflects_smallest_colimits_of_reflects_colimits + def category_theory.limits.reflects_smallest_limits_of_reflects_limits Modified src/category_theory/limits/preserves/finite.lean + def category_theory.limits.preserves_finite_colimits_of_preserves_finite_colimits_of_size + def category_theory.limits.preserves_finite_limits_of_preserves_finite_limits_of_size Modified src/category_theory/limits/preserves/shapes/binary_products.lean Modified src/category_theory/limits/preserves/shapes/biproducts.lean + theorem category_theory.functor.map_bicone_whisker + def category_theory.limits.preserves_biproducts_shrink Modified src/category_theory/limits/preserves/shapes/equalizers.lean Modified src/category_theory/limits/preserves/shapes/kernels.lean Modified src/category_theory/limits/preserves/shapes/products.lean Modified src/category_theory/limits/preserves/shapes/pullbacks.lean Modified src/category_theory/limits/preserves/shapes/terminal.lean +/- theorem category_theory.limits.has_initial_of_has_initial_of_preserves_colimit +/- theorem category_theory.limits.has_terminal_of_has_terminal_of_preserves_limit +/- def category_theory.limits.is_colimit_of_has_initial_of_preserves_colimit +/- def category_theory.limits.is_initial.is_initial_obj +/- def category_theory.limits.is_initial.is_initial_of_obj +/- def category_theory.limits.is_limit_of_has_terminal_of_preserves_limit +/- def category_theory.limits.is_terminal.is_terminal_obj +/- def category_theory.limits.is_terminal.is_terminal_of_obj Modified src/category_theory/limits/preserves/shapes/zero.lean Modified src/category_theory/limits/shapes/binary_products.lean +/- theorem category_theory.limits.coprod.map_comp_inl_inr_codiag +/- def category_theory.limits.has_binary_coproducts +/- def category_theory.limits.has_binary_products +/- def category_theory.limits.pair +/- theorem category_theory.limits.prod.diag_map_fst_snd_comp +/- inductive category_theory.limits.walking_pair Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.bicone.whisker + def category_theory.limits.bicone.whisker_is_bilimit_iff + def category_theory.limits.bicone.whisker_to_cocone + def category_theory.limits.bicone.whisker_to_cone +/- def category_theory.limits.biproduct.reindex Modified src/category_theory/limits/shapes/comm_sq.lean Modified src/category_theory/limits/shapes/equalizers.lean +/- def category_theory.limits.has_coequalizers +/- def category_theory.limits.has_equalizers +/- def category_theory.limits.parallel_pair.ext +/- def category_theory.limits.parallel_pair +/- inductive category_theory.limits.walking_parallel_pair +/- def category_theory.limits.walking_parallel_pair_op +/- def category_theory.limits.walking_parallel_pair_op_equiv Modified src/category_theory/limits/shapes/finite_limits.lean + theorem category_theory.limits.has_finite_colimits_of_has_finite_colimits_of_size + theorem category_theory.limits.has_finite_limits_of_has_finite_limits_of_size Modified src/category_theory/limits/shapes/finite_products.lean +/- theorem category_theory.limits.has_finite_coproducts_of_has_coproducts +/- theorem category_theory.limits.has_finite_products_of_has_products Modified src/category_theory/limits/shapes/functor_category.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/multiequalizer.lean +/- inductive category_theory.limits.walking_multicospan.hom +/- inductive category_theory.limits.walking_multicospan +/- inductive category_theory.limits.walking_multispan Modified src/category_theory/limits/shapes/products.lean +/- def category_theory.limits.has_coproducts +/- def category_theory.limits.has_products +/- theorem category_theory.limits.has_products_of_limit_fans + theorem category_theory.limits.has_smallest_coproducts_of_has_coproducts + theorem category_theory.limits.has_smallest_products_of_has_products Modified src/category_theory/limits/shapes/pullbacks.lean +/- def category_theory.limits.has_pullbacks +/- def category_theory.limits.has_pushouts +/- def category_theory.limits.walking_cospan.hom +/- def category_theory.limits.walking_cospan - def category_theory.limits.walking_cospan_equiv - def category_theory.limits.walking_cospan_functor - theorem category_theory.limits.walking_cospan_functor_id - theorem category_theory.limits.walking_cospan_functor_inl - theorem category_theory.limits.walking_cospan_functor_inr - theorem category_theory.limits.walking_cospan_functor_left - theorem category_theory.limits.walking_cospan_functor_one - theorem category_theory.limits.walking_cospan_functor_right +/- def category_theory.limits.walking_span.hom +/- def category_theory.limits.walking_span - def category_theory.limits.walking_span_equiv - def category_theory.limits.walking_span_functor - theorem category_theory.limits.walking_span_functor_fst - theorem category_theory.limits.walking_span_functor_id - theorem category_theory.limits.walking_span_functor_left - theorem category_theory.limits.walking_span_functor_right - theorem category_theory.limits.walking_span_functor_snd - theorem category_theory.limits.walking_span_functor_zero Modified src/category_theory/limits/shapes/split_coequalizer.lean Modified src/category_theory/limits/shapes/terminal.lean +/- def category_theory.limits.as_empty_cocone +/- def category_theory.limits.as_empty_cone +/- def category_theory.limits.has_initial +/- def category_theory.limits.has_terminal +/- def category_theory.limits.initial +/- def category_theory.limits.is_initial +/- def category_theory.limits.is_initial_equiv_unique +/- def category_theory.limits.is_terminal +/- def category_theory.limits.is_terminal_equiv_unique +/- def category_theory.limits.terminal Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/limits/shapes/wide_equalizers.lean +/- def category_theory.limits.has_wide_coequalizers +/- def category_theory.limits.has_wide_equalizers +/- inductive category_theory.limits.walking_parallel_family.hom +/- inductive category_theory.limits.walking_parallel_family Modified src/category_theory/limits/shapes/wide_pullbacks.lean + theorem category_theory.limits.has_wide_pullbacks_shrink + def category_theory.limits.wide_pullback_shape.equivalence_of_equiv +/- inductive category_theory.limits.wide_pullback_shape.hom + def category_theory.limits.wide_pullback_shape.ulift_equivalence +/- inductive category_theory.limits.wide_pushout_shape.hom Modified src/category_theory/limits/shapes/zero_morphisms.lean Modified src/category_theory/limits/small_complete.lean Renamed src/category_theory/limits/punit.lean to src/category_theory/limits/unit.lean Modified src/category_theory/limits/yoneda.lean +/- def category_theory.coyoneda_jointly_reflects_limits +/- def category_theory.yoneda_jointly_reflects_limits Modified src/category_theory/monoidal/preadditive.lean +/- def category_theory.left_distributor +/- theorem category_theory.left_distributor_assoc +/- theorem category_theory.left_distributor_hom +/- theorem category_theory.left_distributor_inv +/- def category_theory.right_distributor +/- theorem category_theory.right_distributor_assoc +/- theorem category_theory.right_distributor_hom +/- theorem category_theory.right_distributor_inv Modified src/category_theory/preadditive/Mat.lean +/- structure category_theory.Mat_ Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/preadditive/hom_orthogonal.lean Modified src/category_theory/sites/left_exact.lean Modified src/category_theory/sites/sheaf.lean Modified src/category_theory/subobject/lattice.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/topology/category/Top/limits.lean +/- theorem Top.coequalizer_is_open_iff Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/functors.lean Modified src/topology/sheaves/limits.lean +/- theorem Top.is_sheaf_of_is_limit +/- theorem Top.limit_is_sheaf Modified src/topology/sheaves/presheaf.lean +/- theorem Top.presheaf.pullback_obj_eq_pullback_obj +/- def Top.presheaf.pushforward.comp +/- theorem Top.presheaf.pushforward.comp_eq +/- theorem Top.presheaf.pushforward.comp_hom_app +/- theorem Top.presheaf.pushforward.comp_inv_app +/- theorem Top.presheaf.pushforward_eq' +/- def Top.presheaf.pushforward_eq +/- theorem Top.presheaf.pushforward_eq_eq +/- theorem Top.presheaf.pushforward_eq_rfl +/- def Top.presheaf.pushforward_map +/- def Top.presheaf.pushforward_obj +/- theorem Top.presheaf.pushforward_obj_map +/- theorem Top.presheaf.pushforward_obj_obj +/- def Top.presheaf Modified src/topology/sheaves/sheaf.lean +/- def Top.presheaf.is_sheaf - theorem Top.presheaf.is_sheaf_punit + theorem Top.presheaf.is_sheaf_unit +/- def Top.sheaf Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean +/- def Top.presheaf.sheaf_condition_equalizer_products.diagram Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified src/topology/sheaves/sheaf_condition/sites.lean 2022-07-03 09:05:56 6e8f25e chore(ring_theory/dedekind_domain/ideal): fix style of a lemma statement (#15097) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean +/- theorem ideal_factors_fun_of_quot_hom_comp 2022-07-02 14:14:01 9e701b9 feat(ring_theory/dedekind_domain): If `R/I` is isomorphic to `S/J` then the factorisations of `I` and `J` have the same shape (#11053) In this PR, we show that given Dedekind domains `R` and `S` with ideals `I` and `J`respectively, if quotients `R/I` and `S/J` are isomorphic, then the prime factorizations of `I` and `J` have the same shape, i.e. they have the same number of prime factors and up to permutation these prime factors have the same multiplicities. We can then get [the Dedekind-Kummer theorem](https://kconrad.math.uconn.edu/blurbs/gradnumthy/dedekindf.pdf) as a corollary of this statement. For previous discussion concerning the structure of this PR and the results it proves, see #9345 ESTIMATED CHANGES Modified src/algebra/hom/equiv.lean + theorem mul_equiv.of_bijective_apply_symm_apply Modified src/data/nat/enat.lean + theorem enat.not_dom_iff_eq_top Modified src/ring_theory/chain_of_divisors.lean + theorem coe_factor_order_iso_map_eq_one_iff + theorem factor_order_iso_map_one_eq_bot + theorem map_prime_of_factor_order_iso + theorem mem_normalized_factors_factor_dvd_iso_of_mem_normalized_factors + theorem mem_normalized_factors_factor_order_iso_of_mem_normalized_factors + def mk_factor_order_iso_of_factor_dvd_equiv + theorem multiplicity_eq_multiplicity_factor_dvd_iso_of_mem_normalized_factor + theorem multiplicity_prime_eq_multiplicity_image_by_factor_order_iso +/- theorem multiplicity_prime_le_multiplicity_image_by_factor_order_iso +/- theorem pow_image_of_prime_by_factor_order_iso_dvd Modified src/ring_theory/dedekind_domain/ideal.lean + def ideal_factors_equiv_of_quot_equiv + def ideal_factors_fun_of_quot_hom + theorem ideal_factors_fun_of_quot_hom_comp + theorem ideal_factors_fun_of_quot_hom_id Modified src/ring_theory/multiplicity.lean + theorem multiplicity.multiplicity_mk_eq_multiplicity 2022-07-02 12:02:23 4823da2 feat(data/nat/basic): add `mul_div_mul_comm_of_dvd_dvd` (#15031) Add lemma `mul_div_mul_comm_of_dvd_dvd (hac : c ∣ a) (hbd : d ∣ b) : (a * b) / (c * d) = (a / c) * (b / d)` (Compare with `mul_div_mul_comm`, which holds for a `division_comm_monoid`) Also adds the same lemma for a `euclidean_domain`. ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.mul_div_mul_comm_of_dvd_dvd Modified src/data/nat/basic.lean + theorem nat.mul_div_mul_comm_of_dvd_dvd 2022-07-02 10:12:17 2d76f56 chore(algebra/associated): make `irreducible` not a class (#14713) This functionality was rarely used and doesn't align with how `irreducible` is used in practice. In a future PR, we can remove some `unfreezingI`s caused by this. ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem irreducible.not_unit + structure irreducible Modified src/algebra/module/pid.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/normal.lean Modified src/field_theory/separable_degree.lean + theorem irreducible.has_separable_contraction - theorem polynomial.irreducible_has_separable_contraction Modified src/field_theory/splitting_field.lean + theorem polynomial.fact_irreducible_factor + theorem polynomial.irreducible_factor Modified src/number_theory/number_field.lean Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.coe_injective' +/- theorem adjoin_root.coe_injective +/- theorem adjoin_root.mul_div_root_cancel 2022-07-02 04:29:20 855ed5c chore(scripts): update nolints.txt (#15090) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-07-01 20:56:46 5654410 chore(group_theory/group_action/opposite): add a missed smul/scalar rename (#15082) …ename ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/data/matrix/basic.lean Modified src/group_theory/group_action/opposite.lean 2022-07-01 20:56:45 774e680 feat(data/fintype/basic): add noncomputable equivalences between finsets as fintypes and `fin s.card`, etc. (#15080) As `s.card` is not defeq to `fintype.card s`, it is convenient to have these definitions in addition to `fintype.equiv_fin` and others (though we omit the computable ones). ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2022-07-01 20:56:44 9fcf391 chore(group_theory/group_action/basic): relax monoid to mul_one_class (#15051) ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean +/- theorem smul_one_mul 2022-07-01 20:56:43 e94e5c0 feat(topology/uniform_space/basic): uniform continuity from/to an infimum of uniform spaces (#14892) This adds uniform versions of various topological lemmas about continuity from/to infimas of topological spaces ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous_Inf_dom + theorem uniform_continuous_Inf_dom₂ + theorem uniform_continuous_Inf_rng + theorem uniform_continuous_inf_dom_left + theorem uniform_continuous_inf_dom_left₂ + theorem uniform_continuous_inf_dom_right + theorem uniform_continuous_inf_dom_right₂ + theorem uniform_continuous_inf_rng + theorem uniform_continuous_infi_dom + theorem uniform_continuous_infi_rng 2022-07-01 18:31:15 ff5e97a feat(order/lattice, data/set): some helper lemmas (#14789) This PR provides lemmas describing when `s ∪ a = t ∪ a`, in both necessary and iff forms, as well as intersection and lattice versions. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.inter_eq_inter_iff_subset_subset + theorem set.inter_eq_inter_of_subset_of_subset + theorem set.union_eq_union_iff_subset_subset + theorem set.union_eq_union_of_subset_of_subset Modified src/order/lattice.lean + theorem inf_eq_inf_iff_le_le + theorem inf_eq_inf_of_le_of_le + theorem sup_eq_sup_iff_le_le + theorem sup_eq_sup_of_le_of_le 2022-07-01 18:31:14 7f95e22 feat(linear_algebra/*): add lemma `linear_independent.finite_of_is_noetherian` (#14714) This replaces `fintype_of_is_noetherian_linear_independent` which gave the same conclusion except demanded `strong_rank_condition R` instead of just `nontrivial R`. Also some other minor gaps filled. ESTIMATED CHANGES Modified src/algebra/module/torsion.lean + theorem ideal.complete_lattice.independent.linear_independent' + theorem ideal.torsion_of_eq_bot_iff_of_no_zero_smul_divisors + theorem ideal.torsion_of_eq_top_iff + theorem ideal.torsion_of_zero Modified src/analysis/box_integral/partition/measure.lean Modified src/data/finite/set.lean + theorem finite.of_injective_finite_range Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/dfinsupp.lean + theorem complete_lattice.independent_iff_linear_independent_of_ne_zero Modified src/linear_algebra/dimension.lean - theorem finite_of_is_noetherian_linear_independent + theorem linear_independent.finite_of_is_noetherian + theorem linear_independent.set_finite_of_is_noetherian Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.independent_span_singleton Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/span.lean +/- theorem linear_map.to_span_singleton_one + theorem linear_map.to_span_singleton_zero +/- theorem submodule.span_eq_supr_of_singleton_spans + theorem submodule.span_range_eq_supr Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/order/compactly_generated.lean + theorem complete_lattice.well_founded.finite_of_independent Modified src/order/sup_indep.lean + theorem complete_lattice.independent.comp' +/- theorem complete_lattice.independent.comp + theorem complete_lattice.independent.injective +/- theorem complete_lattice.independent.mono + theorem complete_lattice.independent.set_independent_range +/- theorem complete_lattice.independent_def'' +/- theorem complete_lattice.independent_def' 2022-07-01 14:39:25 2ae2065 chore(data/set,topology): fix 2 lemma names (#15079) * rename `set.quot_mk_range_eq` to `set.range_quotient_mk`; * rename `is_closed_infi_iff` to `is_closed_supr_iff`. ESTIMATED CHANGES Modified src/data/set/basic.lean - theorem set.quot_mk_range_eq + theorem set.range_quotient_mk Modified src/topology/order.lean - theorem is_closed_infi_iff + theorem is_closed_supr_iff 2022-07-01 14:39:24 8b69a4b feat(ring_theory): Some missing lemmas (#15064) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/linear_algebra/span.lean + theorem submodule.closure_le_to_add_submonoid_span + theorem submodule.closure_subset_span + theorem submodule.span_closure Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_span Modified src/ring_theory/finiteness.lean + theorem algebra.finite_type.is_noetherian_ring + theorem subalgebra.fg_iff_finite_type Modified src/ring_theory/ideal/operations.lean + theorem submodule.smul_inf_le Modified src/ring_theory/noetherian.lean + theorem submodule.fg_bsupr + theorem submodule.fg_finset_sup + theorem submodule.fg_supr 2022-07-01 14:39:22 36ee9af feat(topology/separation): `separation_quotient α` is a T₀ space (#15043) ESTIMATED CHANGES Modified src/topology/separation.lean 2022-07-01 14:39:20 0369f20 feat(order/locally_finite): make `fintype.to_locally_finite_order` computable (#14733) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean Modified src/order/locally_finite.lean + def fintype.to_locally_finite_order Modified test/instance_diamonds.lean 2022-07-01 12:26:35 0522ee0 refactor(ring_theory/jacobson): remove unnecessary `fintype.trunc_equiv_fin` (#15077) ESTIMATED CHANGES Modified src/ring_theory/jacobson.lean 2022-07-01 12:26:34 640955c refactor(ring_theory/finiteness): remove unnecessary `fintype.trunc_equiv_fin` (#15076) ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean 2022-07-01 12:26:33 f9b939c feat(data/nat/enat): simple lemmas on `enat` (#15029) ESTIMATED CHANGES Modified src/data/nat/enat.lean + theorem enat.eq_zero_iff + theorem enat.ne_zero_iff + theorem enat.not_is_max_coe 2022-07-01 12:26:32 6e362f6 chore(algebra/order/monoid): golf proofs, fix docs (#14728) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean 2022-07-01 10:20:04 9e97baa feat(data/list/basic): add filter_map_join (#14777) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_map_join 2022-07-01 10:20:03 e73ac94 feat (analysis/normed_space/lp_space):add l_infinity ring instances (#14104) We define pointwise multiplication on `lp E ∞` and give it has_mul, non_unital_ring, non_unital_normed_ring, ring, normed_ring, comm_ring and normed_comm_ring instances under the appropriate assumptions. ESTIMATED CHANGES Modified src/analysis/normed_space/lp_space.lean + theorem int_cast_mem_ℓp_infty + theorem lp.infty_coe_fn_int_cast + theorem lp.infty_coe_fn_mul + theorem lp.infty_coe_fn_nat_cast + theorem lp.infty_coe_fn_one + theorem lp.infty_coe_fn_pow + theorem mem_ℓp.infty_mul + theorem mem_ℓp.infty_pow + theorem nat_cast_mem_ℓp_infty + theorem one_mem_ℓp_infty 2022-07-01 08:11:22 ce332c1 refactor(algebra/group_power): split ring lemmas into a separate file (#15032) This doesn't actually stop `algebra.ring.basic` being imported into `group_power.basic` yet, but it makes it easier to make that change in future. Two ~300 line files are also slightly easier to manage than one ~600 line file, and ring/add_group feels like a natural place to draw the line All lemmas have just been moved, and none have been renamed. Some lemmas have had their `R` variables renamed to `M` to better reflect that they apply to monoids with zero. By grouping together the `monoid_with_zero` lemmas from separate files, it become apparent that there's some overlap. This PR does not attempt to clean this up, in the interest of limiting the the scope of this change to just moves. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean - theorem add_sq' - theorem add_sq - theorem coe_pow_monoid_with_zero_hom - theorem eq_or_eq_neg_of_sq_eq_sq - theorem min_pow_dvd_add - theorem mul_neg_one_pow_eq_zero_iff - theorem neg_one_pow_eq_or - theorem neg_one_pow_mul_eq_zero_iff - theorem neg_one_sq - theorem neg_pow - theorem neg_pow_bit0 - theorem neg_pow_bit1 - theorem neg_sq - theorem pow_dvd_pow_iff - theorem pow_eq_zero - theorem pow_eq_zero_iff' - theorem pow_eq_zero_iff - theorem pow_eq_zero_of_le - def pow_monoid_with_zero_hom - theorem pow_monoid_with_zero_hom_apply - theorem pow_ne_zero - theorem pow_ne_zero_iff - theorem sq_eq_one_iff - theorem sq_eq_sq_iff_eq_or_eq_neg - theorem sq_eq_zero_iff - theorem sq_ne_one_iff - theorem sq_sub_sq - theorem sub_sq' - theorem sub_sq - theorem zero_pow - theorem zero_pow_eq Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_power/order.lean Added src/algebra/group_power/ring.lean + theorem add_sq' + theorem add_sq + theorem coe_pow_monoid_with_zero_hom + theorem eq_or_eq_neg_of_sq_eq_sq + theorem min_pow_dvd_add + theorem mul_neg_one_pow_eq_zero_iff + theorem ne_zero_pow + theorem neg_one_pow_eq_or + theorem neg_one_pow_mul_eq_zero_iff + theorem neg_one_sq + theorem neg_pow + theorem neg_pow_bit0 + theorem neg_pow_bit1 + theorem neg_sq + theorem pow_dvd_pow_iff + theorem pow_eq_zero + theorem pow_eq_zero_iff' + theorem pow_eq_zero_iff + theorem pow_eq_zero_of_le + def pow_monoid_with_zero_hom + theorem pow_monoid_with_zero_hom_apply + theorem pow_ne_zero + theorem pow_ne_zero_iff + theorem ring.inverse_pow + theorem sq_eq_one_iff + theorem sq_eq_sq_iff_eq_or_eq_neg + theorem sq_eq_zero_iff + theorem sq_ne_one_iff + theorem sq_sub_sq + theorem sub_sq' + theorem sub_sq + theorem zero_pow' + theorem zero_pow + theorem zero_pow_eq + theorem zero_pow_eq_zero Modified src/algebra/group_with_zero/power.lean - theorem ne_zero_pow - theorem ring.inverse_pow - theorem zero_pow' - theorem zero_pow_eq_zero 2022-07-01 04:21:43 7e244d8 feat(algebra/category/Module): upgrade `free : Type ⥤ Module R` to a monoidal functor (#14328) ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean + theorem Module.free.ε_apply +/- def Module.free.μ + def Module.monoidal_free 2022-06-30 21:59:47 9229b0e chore(data/nat/factorization/basic): delete `import tactic.linarith` (#15075) Removes the import of `tactic.linarith` that's no longer needed. ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean 2022-06-30 21:59:46 e7425e7 feat(data/fin/basic): `induction_zero` and `induction_succ` lemmas (#15060) This pull request introduces `fin.induction_zero` and `fin.induction_succ` simp lemmas for `fin.induction`, similar to `fin.cases_zero` and `fin.cases_succ` for `fin.cases`. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.induction_succ + theorem fin.induction_zero 2022-06-30 19:45:49 806bbb0 refactor(algebra/group/defs): rename has_scalar to has_smul (#14559) Discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/scalar.20smul.20naming.20discrepancy ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/algebra/basic.lean +/- theorem alg_hom.map_smul_of_tower Modified src/algebra/algebra/subalgebra/basic.lean +/- theorem subalgebra.coe_algebra_map +/- theorem subalgebra.coe_smul +/- theorem subalgebra.smul_def Modified src/algebra/algebra/tower.lean Modified src/algebra/algebra/unitization.lean +/- theorem unitization.coe_smul +/- theorem unitization.fst_mul +/- theorem unitization.fst_smul +/- theorem unitization.inl_smul +/- theorem unitization.snd_mul +/- theorem unitization.snd_smul Modified src/algebra/category/Module/filtered_colimits.lean Modified src/algebra/direct_sum/module.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/field/basic.lean Modified src/algebra/free_algebra.lean - def free_algebra.pre.has_scalar + def free_algebra.pre.has_smul Modified src/algebra/graded_monoid.lean Modified src/algebra/group/defs.lean Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/group_with_zero/basic.lean +/- theorem units.smul_mk0 Modified src/algebra/hom/group_action.lean Modified src/algebra/homology/additive.lean Modified src/algebra/lie/basic.lean Modified src/algebra/lie/free.lean Modified src/algebra/lie/quotient.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/algebra/module/basic.lean +/- structure module.core Modified src/algebra/module/hom.lean Modified src/algebra/module/linear_map.lean +/- theorem linear_map.map_smul_of_tower Modified src/algebra/module/pi.lean +/- theorem is_smul_regular.pi Modified src/algebra/module/pointwise_pi.lean +/- theorem smul_pi_subset +/- theorem smul_univ_pi Modified src/algebra/module/prod.lean Modified src/algebra/module/submodule/basic.lean +/- theorem submodule.coe_smul_of_tower +/- theorem submodule.smul_mem_iff' +/- theorem submodule.smul_of_tower_mem Modified src/algebra/module/submodule/lattice.lean Modified src/algebra/module/torsion.lean +/- def module.is_torsion' - def module.is_torsion_by_set.has_scalar + def module.is_torsion_by_set.has_smul Modified src/algebra/module/ulift.lean +/- theorem ulift.smul_down' +/- theorem ulift.smul_down Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/opposites.lean +/- theorem mul_opposite.op_smul +/- theorem mul_opposite.unop_smul Modified src/algebra/order/field.lean Modified src/algebra/order/module.lean +/- theorem antitone_smul_left +/- theorem strict_anti_smul_left Modified src/algebra/order/nonneg.lean Modified src/algebra/order/ring.lean Modified src/algebra/order/smul.lean +/- theorem monotone_smul_left +/- theorem order_dual.of_dual_smul +/- theorem order_dual.to_dual_smul +/- theorem strict_mono_smul_left Modified src/algebra/periodic.lean +/- theorem function.periodic.smul Modified src/algebra/punit_instances.lean Modified src/algebra/regular/smul.lean +/- def is_smul_regular Modified src/algebra/ring/basic.lean Modified src/algebra/ring_quot.lean Modified src/algebra/smul_with_zero.lean Modified src/algebra/star/basic.lean Modified src/algebra/star/pi.lean Modified src/algebra/star/prod.lean Modified src/algebra/star/self_adjoint.lean +/- theorem self_adjoint.coe_smul +/- theorem self_adjoint.smul_mem Modified src/algebra/symmetrized.lean +/- theorem sym_alg.sym_smul +/- theorem sym_alg.unsym_smul Modified src/algebra/triv_sq_zero_ext.lean +/- theorem triv_sq_zero_ext.fst_mul +/- theorem triv_sq_zero_ext.fst_smul +/- theorem triv_sq_zero_ext.inl_smul +/- theorem triv_sq_zero_ext.inr_smul +/- theorem triv_sq_zero_ext.snd_mul +/- theorem triv_sq_zero_ext.snd_smul Modified src/algebra/tropical/basic.lean +/- theorem tropical.trop_smul +/- theorem tropical.untrop_pow Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/complex/upper_half_plane/basic.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean +/- structure convex_cone Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/function.lean Modified src/analysis/convex/quasiconvex.lean Modified src/analysis/convex/star.lean Modified src/analysis/convex/strict.lean Modified src/analysis/locally_convex/balanced_core_hull.lean Modified src/analysis/locally_convex/basic.lean Modified src/analysis/locally_convex/bounded.lean Modified src/analysis/normed/group/hom.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/lp_space.lean Modified src/analysis/seminorm.lean +/- theorem add_group_seminorm.coe_smul +/- theorem add_group_seminorm.smul_apply +/- theorem add_group_seminorm.smul_sup +/- theorem seminorm.coe_smul +/- theorem seminorm.smul_apply +/- theorem seminorm.smul_inf +/- theorem seminorm.smul_sup +/- structure seminorm Modified src/data/bracket.lean Modified src/data/complex/module.lean Modified src/data/dfinsupp/basic.lean Modified src/data/fin/vec_notation.lean Modified src/data/finset/pointwise.lean Modified src/data/finsupp/basic.lean - def finsupp.comap_has_scalar + def finsupp.comap_has_smul Modified src/data/finsupp/pointwise.lean Modified src/data/finsupp/to_dfinsupp.lean Modified src/data/holor.lean Modified src/data/matrix/basic.lean +/- theorem is_smul_regular.matrix +/- theorem matrix.col_smul +/- theorem matrix.conj_transpose_smul +/- theorem matrix.diag_smul +/- theorem matrix.map_smul +/- theorem matrix.minor_smul +/- theorem matrix.row_smul +/- theorem matrix.transpose_smul Modified src/data/matrix/block.lean +/- theorem matrix.from_blocks_smul Modified src/data/matrix/hadamard.lean +/- theorem matrix.hadamard_smul +/- theorem matrix.smul_hadamard Modified src/data/matrix/kronecker.lean +/- theorem matrix.kronecker_map_smul_left +/- theorem matrix.kronecker_map_smul_right Modified src/data/matrix/notation.lean +/- theorem matrix.smul_vec2 +/- theorem matrix.smul_vec3 Modified src/data/mv_polynomial/basic.lean Modified src/data/polynomial/basic.lean Modified src/data/polynomial/laurent.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_smul Modified src/data/real/nnreal.lean Modified src/data/set/pointwise.lean +/- theorem set.image2_smul +/- theorem set.range_smul_range +/- theorem set.smul_set_range Modified src/field_theory/intermediate_field.lean +/- theorem intermediate_field.coe_smul Modified src/field_theory/ratfunc.lean +/- theorem ratfunc.of_fraction_ring_smul +/- theorem ratfunc.to_fraction_ring_smul Modified src/field_theory/splitting_field.lean Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/group_theory/congruence.lean Modified src/group_theory/group_action/conj_act.lean Modified src/group_theory/group_action/defs.lean - theorem has_scalar.comp.is_scalar_tower - def has_scalar.comp.smul - theorem has_scalar.comp.smul_comm_class' - theorem has_scalar.comp.smul_comm_class - def has_scalar.comp + theorem has_smul.comp.is_scalar_tower + def has_smul.comp.smul + theorem has_smul.comp.smul_comm_class' + theorem has_smul.comp.smul_comm_class + def has_smul.comp +/- theorem is_central_scalar.unop_smul_eq_smul +/- theorem is_scalar_tower.of_smul_one_mul +/- theorem mul_smul_comm +/- theorem smul_assoc +/- theorem smul_comm_class.of_mul_smul_one +/- theorem smul_comm_class.symm +/- theorem smul_left_injective' +/- theorem smul_mul_assoc +/- theorem smul_one_mul +/- theorem smul_one_smul +/- theorem smul_smul_smul_comm Modified src/group_theory/group_action/embedding.lean Modified src/group_theory/group_action/opposite.lean +/- theorem mul_opposite.op_smul_eq_op_smul_op +/- theorem mul_opposite.unop_smul_eq_unop_smul_unop Modified src/group_theory/group_action/pi.lean +/- theorem function.extend_smul +/- theorem function.update_smul +/- theorem pi.smul_apply' +/- theorem pi.smul_apply +/- theorem pi.smul_def +/- theorem set.piecewise_smul Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/sigma.lean Modified src/group_theory/group_action/sub_mul_action.lean +/- theorem sub_mul_action.smul_mem_iff' +/- structure sub_mul_action Modified src/group_theory/group_action/sum.lean Modified src/group_theory/group_action/units.lean +/- theorem units.smul_def +/- theorem units.smul_is_unit Modified src/group_theory/monoid_localization.lean +/- theorem localization.smul_mk Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.smul_def Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/matrix/circulant.lean +/- theorem matrix.circulant_smul Modified src/linear_algebra/matrix/symmetric.lean +/- theorem matrix.is_symm.smul Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/linear_algebra/quotient.lean +/- def submodule.quotient.restrict_scalars_equiv Modified src/linear_algebra/span.lean +/- theorem submodule.span_le_restrict_scalars +/- theorem submodule.span_singleton_group_smul_eq +/- theorem submodule.span_singleton_smul_le +/- theorem submodule.span_span_of_tower +/- theorem submodule.span_subset_span Modified src/linear_algebra/tensor_product.lean +/- def tensor_product.smul.aux +/- theorem tensor_product.smul.aux_of Modified src/logic/equiv/transfer_instance.lean +/- theorem equiv.smul_def Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/measure_theory/function/conditional_expectation.lean +/- theorem measure_theory.ae_strongly_measurable'.const_smul Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/simple_func_dense_lp.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/group/action.lean Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/group/fundamental_domain.lean +/- structure measure_theory.is_fundamental_domain Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.simple_func.coe_smul +/- theorem measure_theory.simple_func.smul_apply +/- theorem measure_theory.simple_func.smul_eq_map Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean +/- theorem measure_theory.outer_measure.smul_supr +/- theorem measure_theory.outer_measure.trim_smul Modified src/measure_theory/measure/vector_measure.lean Modified src/number_theory/arithmetic_function.lean Modified src/order/filter/basic.lean +/- theorem filter.eventually_eq.const_smul +/- theorem filter.eventually_eq.smul Modified src/order/filter/germ.lean +/- theorem filter.germ.coe_smul' +/- theorem filter.germ.coe_smul Modified src/order/filter/pointwise.lean Modified src/probability/stopping.lean +/- theorem measure_theory.adapted.smul Modified src/ring_theory/adjoin/basic.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebraic.lean - def polynomial.has_scalar_pi + def polynomial.has_smul_pi +/- theorem polynomial_smul_apply Modified src/ring_theory/derivation.lean +/- theorem derivation.map_smul_of_tower Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/localization/integer.lean Modified src/ring_theory/localization/localization_localization.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/subring/basic.lean +/- theorem subring.smul_def Modified src/ring_theory/subsemiring/basic.lean +/- theorem subsemiring.smul_def Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/truncated.lean Modified src/tactic/abel.lean Modified src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/continuous_affine_map.lean Modified src/topology/algebra/module/basic.lean +/- theorem continuous_linear_map.map_smul_of_tower Modified src/topology/algebra/module/multilinear.lean Modified src/topology/algebra/module/weak_dual.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/uniform_mul_action.lean Modified src/topology/continuous_function/algebra.lean +/- theorem continuous_map.coe_smul +/- theorem continuous_map.smul_apply +/- theorem continuous_map.smul_comp Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/zero_at_infty.lean Modified src/topology/instances/matrix.lean Modified src/topology/locally_constant/algebra.lean +/- theorem locally_constant.coe_smul +/- theorem locally_constant.smul_apply Modified src/topology/metric_space/algebra.lean Modified test/has_scalar_comp_loop.lean +/- def foo Modified test/instance_diamonds.lean Modified test/to_additive.lean 2022-06-30 17:18:22 c10efa6 refactor(algebra/hom/group): generalize basic API of `monoid_hom` to `monoid_hom_class` (#14997) This PR generalizes part of the basic API of monoid homs to monoid_hom_class. This notably includes things like monoid_hom.mker, submonoid.map and submonoid.comap. I left the namespaces unchanged, for example `monoid_hom.mker` remains the same even though it is now defined for any `monoid_hom_class` morphism; this way dot notation still (mostly) works for actual monoid homs. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/hom/group.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/membership.lean +/- theorem submonoid.map_powers Modified src/group_theory/submonoid/operations.lean +/- theorem monoid_hom.coe_mker +/- theorem monoid_hom.coe_mrange +/- theorem monoid_hom.comap_bot' +/- theorem monoid_hom.map_mclosure +/- theorem monoid_hom.mclosure_preimage_le +/- theorem monoid_hom.mem_mker +/- theorem monoid_hom.mem_mrange +/- def monoid_hom.mker +/- def monoid_hom.mrange +/- theorem monoid_hom.mrange_eq_map +/- theorem monoid_hom.mrange_top_iff_surjective +/- theorem monoid_hom.mrange_top_of_surjective +/- theorem submonoid.apply_coe_mem_map +/- theorem submonoid.coe_comap +/- theorem submonoid.coe_map +/- def submonoid.comap +/- theorem submonoid.comap_id +/- theorem submonoid.comap_inf +/- theorem submonoid.comap_infi +/- theorem submonoid.comap_map_comap +/- theorem submonoid.comap_top +/- theorem submonoid.gc_map_comap +/- theorem submonoid.le_comap_map +/- theorem submonoid.le_comap_of_map_le +/- def submonoid.map +/- theorem submonoid.map_bot +/- theorem submonoid.map_comap_le +/- theorem submonoid.map_comap_map +/- theorem submonoid.map_le_iff_le_comap +/- theorem submonoid.map_le_of_le_comap +/- theorem submonoid.map_sup +/- theorem submonoid.map_supr +/- theorem submonoid.mem_comap +/- theorem submonoid.mem_map +/- theorem submonoid.mem_map_iff_mem +/- theorem submonoid.mem_map_of_mem +/- theorem submonoid.monotone_comap +/- theorem submonoid.monotone_map Modified src/group_theory/submonoid/pointwise.lean Modified src/linear_algebra/basic.lean + theorem submodule.map_to_add_submonoid' Modified src/ring_theory/finiteness.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/localization/localization_localization.lean Modified src/ring_theory/non_zero_divisors.lean 2022-06-30 12:40:15 eb85260 feat(topology/compact_open): continuous_comp left functor C(-, γ) (#15068) ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.continuous_comp_left 2022-06-30 06:53:03 050f9e6 feat(number_theory/legendre_symbol/mul_character): alternative implementation (#14768) This is an alternative version of `number_theory/legendre_symbol/mul_character.lean`. It defines `mul_character R R'` as a `monoid_hom` that sends non-units to zero. This allows to define a `comm_group` structure on `mul_character R R'`. There is an alternative implementation in #14716 ([side by side comparison](https://github.com/leanprover-community/mathlib/compare/legendre_symbol_mul_char...variant)). See the [discussion on Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Implementation.20of.20multiplicative.20characters). ESTIMATED CHANGES Added src/number_theory/legendre_symbol/mul_character.lean + theorem mul_char.coe_coe + theorem mul_char.coe_equiv_to_unit_hom + theorem mul_char.coe_mk + theorem mul_char.coe_to_fun_mul + theorem mul_char.coe_to_unit_hom + def mul_char.equiv_to_unit_hom + theorem mul_char.equiv_unit_hom_symm_coe + theorem mul_char.ext' + theorem mul_char.ext + theorem mul_char.ext_iff + def mul_char.inv + theorem mul_char.inv_apply' + theorem mul_char.inv_apply + theorem mul_char.inv_apply_eq_inv' + theorem mul_char.inv_apply_eq_inv + theorem mul_char.inv_mul + theorem mul_char.is_nontrivial.comp + theorem mul_char.is_nontrivial.sum_eq_zero + def mul_char.is_nontrivial + theorem mul_char.is_nontrivial_iff + theorem mul_char.is_quadratic.comp + theorem mul_char.is_quadratic.inv + theorem mul_char.is_quadratic.pow_char + theorem mul_char.is_quadratic.pow_even + theorem mul_char.is_quadratic.pow_odd + theorem mul_char.is_quadratic.sq_eq_one + def mul_char.is_quadratic + theorem mul_char.map_nonunit + theorem mul_char.map_one + theorem mul_char.map_zero + def mul_char.mul + theorem mul_char.mul_apply + theorem mul_char.mul_one + def mul_char.of_unit_hom + theorem mul_char.of_unit_hom_coe + theorem mul_char.of_unit_hom_eq + theorem mul_char.one_apply_coe + theorem mul_char.one_mul + theorem mul_char.pow_apply' + theorem mul_char.pow_apply_coe + def mul_char.ring_hom_comp + theorem mul_char.sum_one_eq_card_units + theorem mul_char.to_fun_eq_coe + def mul_char.to_unit_hom + theorem mul_char.to_unit_hom_eq + def mul_char.trivial + structure mul_char 2022-06-30 04:08:55 ad154bd chore(scripts): update nolints.txt (#15063) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-06-29 23:58:49 5d8810a feat(set_theory/cardinal/*): simp lemmas for `to_nat` and `to_enat` (#15059) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.aleph_0_to_enat + theorem cardinal.aleph_0_to_nat Modified src/set_theory/cardinal/continuum.lean + theorem cardinal.continuum_to_enat + theorem cardinal.continuum_to_nat Modified src/set_theory/cardinal/ordinal.lean + theorem cardinal.aleph_to_enat + theorem cardinal.aleph_to_nat 2022-06-29 23:58:48 68452ec feat(set_theory/game/pgame): golf `le_trans` (#14956) This also adds `has_le.le.move_left_lf` and `has_le.le.lf_move_right` to enable dot notation. Note that we already have other pgame lemmas in the `has_le.le` namespace like `has_le.le.not_gf`. To make this dot notation work even when these lemmas are partially-applied, we swap the arguments of `move_left_lf_of_le` and `lf_move_right_of_le`. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean +/- theorem pgame.lf_move_right +/- theorem pgame.lf_move_right_of_le +/- theorem pgame.lf_of_le_mk +/- theorem pgame.lf_of_mk_le +/- theorem pgame.move_left_lf +/- theorem pgame.move_left_lf_of_le Modified src/set_theory/surreal/basic.lean 2022-06-29 22:22:06 501c1d4 feat(linear_algebra/linear_pmap): add has_smul and ext (#14915) Adds the type-class `has_smul` for partially defined linear maps. We proof the ext lemma. ESTIMATED CHANGES Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.coe_smul + theorem linear_pmap.ext + theorem linear_pmap.smul_apply 2022-06-29 22:22:05 a2a8c9b refactor(ring_theory/graded_algebra): use `add_submonoid_class` to generalize to graded rings (#14583) Now that we have `add_submonoid_class`, we don't need to consider only families of submodules. For convenience, this keeps around `graded_algebra` as an alias for `graded_ring` over a family of submodules, as this can help with elaboration here and there. This renames: * `graded_algebra` to `graded_ring` * `graded_algebra.proj_zero_ring_hom` to `graded_ring.proj_zero_ring_hom` adds: * `direct_sum.decompose_ring_equiv` * `graded_ring.proj` * `graded_algebra` (as an alias for a suitable `graded_ring` and removes: * `graded_algebra.is_internal`, which was just an alias anyway. ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean +/- theorem direct_sum.coe_ring_hom_of Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/ring_theory/graded_algebra/basic.lean +/- theorem direct_sum.decompose_one + def direct_sum.decompose_ring_equiv - def graded_algebra.proj_zero_ring_hom + def graded_algebra + theorem graded_ring.mem_support_iff + def graded_ring.proj + theorem graded_ring.proj_apply + theorem graded_ring.proj_recompose + def graded_ring.proj_zero_ring_hom Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean +/- def ideal.homogeneous_core' Modified src/ring_theory/graded_algebra/radical.lean 2022-06-29 20:39:00 1116684 chore(set_theory/game/pgame): golf various theorems about relabellings (#15054) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/pgame.lean +/- theorem pgame.relabelling.equiv +/- theorem pgame.relabelling.ge +/- def pgame.relabelling.is_empty +/- theorem pgame.relabelling.le +/- def pgame.relabelling.refl +/- def pgame.relabelling.restricted +/- def pgame.relabelling.symm +/- def pgame.relabelling.trans +/- def pgame.restricted.trans 2022-06-29 20:38:59 108e3a0 refactor(group_theory/coset): redefine quotient group to be quotient by action of subgroup (#15045) Given a group `α` and subgroup `s`, redefine the relation `left_rel` ("being in the same left coset") to ```lean def left_rel : setoid α := mul_action.orbit_rel s.opposite α ``` This means that a quotient group is definitionally a quotient by a group action. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/two.20different.20quotients.20by.20subgroup) ESTIMATED CHANGES Modified src/algebra/category/Group/colimits.lean Modified src/algebra/module/torsion.lean Modified src/algebra/periodic.lean Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/data/zmod/quotient.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/complement.lean Modified src/group_theory/coset.lean +/- def quotient_group.left_rel + theorem quotient_group.left_rel_apply + theorem quotient_group.left_rel_eq +/- def quotient_group.right_rel + theorem quotient_group.right_rel_apply + theorem quotient_group.right_rel_eq Modified src/group_theory/double_coset.lean Modified src/group_theory/group_action/quotient.lean Modified src/group_theory/index.lean Modified src/group_theory/quotient_group.lean + theorem quotient_group.mk'_eq_mk' Modified src/group_theory/sylow.lean Modified src/group_theory/transfer.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/quotient.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/class_group.lean - theorem quotient_group.mk'_eq_mk' Modified src/ring_theory/ideal/quotient.lean Modified src/ring_theory/valuation/basic.lean 2022-06-29 20:38:58 71985dc feat(field_theory/minpoly): generalize statements about GCD domains (#14979) Currently, the statements about the minimal polynomial over a GCD domain `R` require the element to be in a `K`-algebra, where `K` is the fraction field of `R`. We remove this assumption. From flt-regular. ESTIMATED CHANGES Modified src/field_theory/minpoly.lean + theorem minpoly.gcd_domain_degree_le_of_ne_zero +/- theorem minpoly.gcd_domain_dvd + theorem minpoly.gcd_domain_eq_field_fractions' +/- theorem minpoly.gcd_domain_eq_field_fractions + theorem minpoly.gcd_domain_unique Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/rat.lean Modified src/ring_theory/polynomial/content.lean + theorem polynomial.aeval_prim_part_eq_zero + theorem polynomial.eval₂_prim_part_eq_zero Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/eisenstein.lean Modified src/ring_theory/roots_of_unity.lean 2022-06-29 20:38:57 6879dd0 feat(model_theory/satisfiability): The Łoś–Vaught Test (#14758) Provides more API for elementary equivalence Shows that a `κ`-categorical theory with only infinite models is complete. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/model_theory/bundled.lean + def equiv.bundled_induced + def equiv.bundled_induced_equiv + def first_order.language.elementarily_equivalent.to_Model Modified src/model_theory/satisfiability.lean + theorem cardinal.categorical.is_complete + theorem cardinal.empty_infinite_Theory_is_complete - theorem first_order.language.Theory.exists_elementary_embedding_card_eq + theorem first_order.language.Theory.exists_model_card_eq + theorem first_order.language.exists_elementarily_equivalent_card_eq + theorem first_order.language.exists_elementary_embedding_card_eq + theorem first_order.language.exists_elementary_embedding_card_eq_of_ge + theorem first_order.language.exists_elementary_embedding_card_eq_of_le Modified src/model_theory/semantics.lean + theorem first_order.language.elementarily_equivalent.Theory_model + theorem first_order.language.elementarily_equivalent.Theory_model_iff + theorem first_order.language.elementarily_equivalent.complete_theory_eq + theorem first_order.language.elementarily_equivalent.infinite + theorem first_order.language.elementarily_equivalent.infinite_iff + theorem first_order.language.elementarily_equivalent.nonempty + theorem first_order.language.elementarily_equivalent.nonempty_iff + theorem first_order.language.elementarily_equivalent.realize_sentence + theorem first_order.language.elementarily_equivalent.symm + theorem first_order.language.elementarily_equivalent.trans + theorem first_order.language.equiv.elementarily_equivalent Modified src/set_theory/cardinal/basic.lean + theorem cardinal.lift_mk_shrink'' + theorem cardinal.lift_mk_shrink' + theorem cardinal.lift_mk_shrink 2022-06-29 18:27:22 397d45f feat(algebra/order/monoid): `a + b ≤ c → a ≤ c` (#15033) Generalize four lemmas that were left by previous PRs before `canonically_ordered_monoid` was a thing. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem le_of_mul_le_left + theorem le_of_mul_le_right Modified src/data/matrix/rank.lean Modified src/data/nat/basic.lean - theorem nat.le_of_add_le_left - theorem nat.le_of_add_le_right Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/hasse_deriv.lean Modified src/data/real/nnreal.lean - theorem nnreal.le_of_add_le_left - theorem nnreal.le_of_add_le_right Modified src/ring_theory/power_series/basic.lean 2022-06-29 18:27:20 07726e2 chore(analysis/locally_convex/balanced_core_hull): Golf (#14987) Golf and improve lemmas based on the naming convention: * `balanced_mem` → `balanced_iff_smul_mem` * `zero_singleton_balanced` → `balanced_zero` * `balanced_core_emptyset` → `balanced_core_empty` * `balanced_core_mem_iff` → `mem_balanced_core_iff` * `balanced_hull_mem_iff` → `mem_balanced_hull_iff` * `balanced_core_is_closed` → `is_closed.balanced_core` ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean +/- theorem balanced.hull_subset_of_subset +/- theorem balanced.subset_core_of_subset +/- theorem balanced_core_aux_balanced +/- theorem balanced_core_aux_maximal - theorem balanced_core_aux_mem_iff + theorem balanced_core_empty - theorem balanced_core_emptyset +/- theorem balanced_core_eq_Inter - theorem balanced_core_is_closed - theorem balanced_core_mem_iff +/- theorem balanced_core_mem_nhds_zero +/- theorem balanced_core_nonempty_iff +/- theorem balanced_core_subset +/- theorem balanced_core_subset_balanced_core_aux +/- theorem balanced_core_zero_mem - theorem balanced_hull_mem_iff + theorem mem_balanced_core_aux_iff + theorem mem_balanced_core_iff + theorem mem_balanced_hull_iff +/- theorem subset_balanced_core Modified src/analysis/locally_convex/basic.lean + theorem balanced_iff_smul_mem - theorem balanced_mem + theorem balanced_zero - theorem zero_singleton_balanced Modified src/topology/algebra/module/finite_dimension.lean 2022-06-29 18:27:19 478773b chore(data/nat/factorization/basic): golf rec_on_pos_prime_pos_coprime, remove import (#14935) Golf the proof of `rec_on_pos_prime_pos_coprime`, eliminating the need for `tactic.interval_cases` ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean 2022-06-29 17:31:54 ee8d588 refactor(logic/hydra): use `is_irrefl` (#15039) `is_irrefl` seems to be the more commonly used spelling ESTIMATED CHANGES Modified src/logic/hydra.lean +/- theorem acc.cut_expand +/- theorem relation.acc_of_singleton +/- theorem relation.cut_expand_iff +/- theorem relation.not_cut_expand_zero 2022-06-29 14:27:11 c8ab806 feat(tactic/alias.lean): use current namespace in alias (#14961) This makes `alias foo <- bar` use the current namespace to resolve the new alias name `bar`, for consistency with `def bar := foo` and leanprover-community/mathlib4#293. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/group_power/lemmas.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/asymptotics/theta.lean Modified src/analysis/calculus/implicit.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/normed/group/hom.lean Modified src/analysis/special_functions/complex/log.lean Modified src/category_theory/category/Bipointed.lean Modified src/category_theory/category/Pointed.lean Modified src/category_theory/category/Twop.lean Modified src/category_theory/category/preorder.lean Modified src/category_theory/functor/fully_faithful.lean Modified src/combinatorics/simple_graph/clique.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/data/finset/basic.lean Modified src/data/finset/card.lean Modified src/data/finset/locally_finite.lean Modified src/data/finset/pointwise.lean Modified src/data/finset/slice.lean Modified src/data/finset/sym.lean Modified src/data/fintype/basic.lean Modified src/data/int/parity.lean Modified src/data/list/basic.lean Modified src/data/list/infix.lean Modified src/data/list/nodup.lean Modified src/data/list/pairwise.lean Modified src/data/list/perm.lean Modified src/data/multiset/basic.lean Modified src/data/multiset/dedup.lean Modified src/data/multiset/locally_finite.lean Modified src/data/multiset/nodup.lean Modified src/data/nat/cast.lean Modified src/data/nat/factorial/basic.lean Modified src/data/nat/pow.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/real/ennreal.lean Modified src/data/set/basic.lean Modified src/data/set/function.lean Modified src/data/set/lattice.lean Modified src/data/set/pairwise.lean Modified src/data/set/pointwise.lean Modified src/dynamics/flow.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/linear_algebra/span.lean Modified src/logic/equiv/local_equiv.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/measure_space_def.lean Modified src/meta/expr.lean Modified src/order/compactly_generated.lean Modified src/order/compare.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/filter/germ.lean Modified src/order/filter/small_sets.lean Modified src/order/filter/ultrafilter.lean Modified src/order/succ_pred/basic.lean Modified src/order/sup_indep.lean Modified src/order/synonym.lean Modified src/probability/ident_distrib.lean Modified src/ring_theory/multiplicity.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/game/pgame.lean Modified src/set_theory/surreal/basic.lean Modified src/tactic/alias.lean Modified src/tactic/core.lean Modified src/topology/bornology/basic.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/metric_separated.lean 2022-06-29 14:27:10 5de765c feat(linear_algebra/linear_pmap): definition of the graph (#14920) Define the graph of a partial linear map as the pushforward of the graph of the underlying linear map and prove some elementary facts. ESTIMATED CHANGES Modified src/linear_algebra/linear_pmap.lean + def linear_pmap.graph + theorem linear_pmap.graph_fst_eq_zero_snd + theorem linear_pmap.mem_graph + theorem linear_pmap.mem_graph_iff' + theorem linear_pmap.mem_graph_iff + theorem linear_pmap.mem_graph_snd_inj' + theorem linear_pmap.mem_graph_snd_inj 2022-06-29 12:27:59 aa812bd chore(group_theory/group_action/basic): split file (#15044) Split the file `group_theory/group_action/basic` to remove the dependency on `group_theory/quotient_group`, moving everything involving quotients to a new file `group_theory/group_action/quotient`. ESTIMATED CHANGES Modified src/algebra/polynomial/group_ring_action.lean Modified src/category_theory/action.lean Modified src/data/zmod/quotient.lean Modified src/group_theory/commuting_probability.lean Modified src/group_theory/complement.lean Modified src/group_theory/group_action/basic.lean - theorem mul_action.card_eq_sum_card_group_div_card_stabilizer' - theorem mul_action.card_eq_sum_card_group_div_card_stabilizer - theorem mul_action.card_orbit_mul_card_stabilizer_eq_card_group - theorem mul_action.injective_of_quotient_stabilizer - def mul_action.of_quotient_stabilizer - theorem mul_action.of_quotient_stabilizer_mem_orbit - theorem mul_action.of_quotient_stabilizer_mk - theorem mul_action.of_quotient_stabilizer_smul - theorem mul_action.orbit_equiv_quotient_stabilizer_symm_apply - theorem mul_action.quotient.coe_smul_out' - theorem mul_action.quotient.mk_smul_out' - theorem mul_action.quotient.smul_coe - theorem mul_action.quotient.smul_mk - theorem mul_action.stabilizer_quotient - theorem mul_action.sum_card_fixed_by_eq_card_orbits_mul_card_group - def mul_action_hom.to_quotient - theorem mul_action_hom.to_quotient_apply - theorem subgroup.normal_core_eq_ker Added src/group_theory/group_action/quotient.lean + theorem mul_action.card_eq_sum_card_group_div_card_stabilizer' + theorem mul_action.card_eq_sum_card_group_div_card_stabilizer + theorem mul_action.card_orbit_mul_card_stabilizer_eq_card_group + theorem mul_action.injective_of_quotient_stabilizer + def mul_action.of_quotient_stabilizer + theorem mul_action.of_quotient_stabilizer_mem_orbit + theorem mul_action.of_quotient_stabilizer_mk + theorem mul_action.of_quotient_stabilizer_smul + theorem mul_action.orbit_equiv_quotient_stabilizer_symm_apply + theorem mul_action.quotient.coe_smul_out' + theorem mul_action.quotient.mk_smul_out' + theorem mul_action.quotient.smul_coe + theorem mul_action.quotient.smul_mk + theorem mul_action.stabilizer_quotient + theorem mul_action.sum_card_fixed_by_eq_card_orbits_mul_card_group + def mul_action_hom.to_quotient + theorem mul_action_hom.to_quotient_apply + theorem subgroup.normal_core_eq_ker Modified src/group_theory/p_group.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/quotient.lean Modified src/topology/algebra/group.lean 2022-06-29 10:03:54 ea9dae2 refactor(topology/*): Use `disjoint` (#14950) Replace uses of `s ∩ t = ∅` by `disjoint s t` in the topology library. This shortens proofs. ESTIMATED CHANGES Modified src/data/set/basic.lean - theorem set.subset_compl_iff_disjoint Modified src/field_theory/krull_topology.lean Modified src/group_theory/group_action/basic.lean + theorem mul_action.disjoint_image_image_iff Modified src/measure_theory/constructions/polish.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/measure/haar.lean Modified src/topology/alexandroff.lean Modified src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/continuous_monoid_hom.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/basic.lean + theorem disjoint.frontier_left + theorem disjoint.frontier_right - theorem is_open.inter_frontier_eq_empty_of_disjoint +/- def is_open +/- theorem is_open_univ Modified src/topology/compact_open.lean + theorem continuous_map.gen_empty_right Modified src/topology/connected.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.ball_disjoint Modified src/topology/order/priestley.lean Modified src/topology/paracompact.lean Modified src/topology/separation.lean +/- theorem t2_separation_compact_nhds +/- theorem t2_space_iff_nhds Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/separation.lean 2022-06-29 08:02:38 03374ee feat(algebra/order/field): Linearly ordered semifields (#15027) Define `linear_ordered_semifield` and generalize lemmas within `algebra.order.field`. ESTIMATED CHANGES Modified src/algebra/field_power.lean +/- theorem div_pow_le +/- theorem min_le_of_zpow_le_max +/- theorem nat.zpow_ne_zero_of_pos - theorem nat.zpow_pos_of_pos +/- theorem one_le_zpow_of_nonneg +/- theorem one_lt_zpow +/- theorem pos_div_pow_pos +/- theorem pow_le_max_of_min_le +/- theorem rat.cast_zpow +/- theorem ring_equiv.map_zpow +/- theorem ring_hom.map_zpow +/- theorem zpow_bit0_nonneg +/- theorem zpow_bit0_pos +/- theorem zpow_bit1_neg +/- theorem zpow_inj +/- theorem zpow_injective +/- theorem zpow_le_iff_le +/- theorem zpow_le_of_le +/- theorem zpow_le_one_of_nonpos +/- theorem zpow_lt_iff_lt +/- theorem zpow_nonneg +/- theorem zpow_pos_of_pos +/- theorem zpow_strict_anti +/- theorem zpow_strict_mono +/- theorem zpow_two_nonneg +/- theorem zpow_two_pos_of_ne_zero Modified src/algebra/order/field.lean +/- theorem abs_one_div +/- theorem div_neg_iff +/- theorem div_pos_iff +/- theorem exists_add_lt_and_pos_of_lt +/- def function.injective.linear_ordered_field + def function.injective.linear_ordered_semifield +/- theorem max_div_div_right_of_nonpos +/- theorem min_div_div_right_of_nonpos +/- theorem nat.cast_le_pow_div_sub +/- theorem nat.cast_le_pow_sub_div_sub +/- theorem sub_one_div_inv_le_two Modified src/algebra/order/floor.lean Modified src/data/int/log.lean Modified src/data/nat/cast_field.lean Modified src/number_theory/padics/padic_numbers.lean 2022-06-29 02:12:43 55ec65a feat(topology/algebra/module/basic): define continuous_(semi)linear_map_class (#14674) This PR brings the morphism refactor to continuous (semi)linear maps. We define `continuous_semilinear_map_class` and `continuous_linear_map_class` in a way that parallels the non-continuous versions, along with a few extras (i.e. `add_monoid_hom_class` instance for `normed_group_hom`). A few things I was not too sure about: - When generalizing lemmas to a morphism class rather than a particular type of morphism, I used `𝓕` as the type (instead of just `F` as is done for most `fun_like` types) to avoid clashing with our convention of using `E`, `F`, etc for e.g. vector spaces. - Namespacing: I placed lemmas like `isometry_of_norm`, `continuous_of_bound`, etc, under the `add_monoid_hom_class` namespace. Maybe the root namespace would make sense here. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/locally_convex/bounded.lean Modified src/analysis/normed/group/SemiNormedGroup.lean Modified src/analysis/normed/group/SemiNormedGroup/completion.lean Modified src/analysis/normed/group/basic.lean - theorem add_monoid_hom.continuous_of_bound - theorem add_monoid_hom.isometry_iff_norm - theorem add_monoid_hom.isometry_of_norm - theorem add_monoid_hom.lipschitz_of_bound - theorem add_monoid_hom.lipschitz_of_bound_nnnorm + theorem add_monoid_hom_class.antilipschitz_of_bound + theorem add_monoid_hom_class.bound_of_antilipschitz + theorem add_monoid_hom_class.continuous_of_bound + theorem add_monoid_hom_class.isometry_iff_norm + theorem add_monoid_hom_class.isometry_of_norm + theorem add_monoid_hom_class.lipschitz_of_bound + theorem add_monoid_hom_class.lipschitz_of_bound_nnnorm + theorem add_monoid_hom_class.uniform_continuous_of_bound Modified src/analysis/normed/group/hom.lean - theorem normed_group_hom.isometry_iff_norm - theorem normed_group_hom.isometry_of_norm - theorem normed_group_hom.map_add - theorem normed_group_hom.map_neg - theorem normed_group_hom.map_sub - theorem normed_group_hom.map_sum - theorem normed_group_hom.map_zero Modified src/analysis/normed/group/hom_completion.lean Modified src/analysis/normed/group/quotient.lean Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_map.isometry_iff_norm - theorem linear_map.antilipschitz_of_bound - theorem linear_map.bound_of_antilipschitz - theorem linear_map.bound_of_continuous - theorem linear_map.bound_of_shell_semi_normed - theorem linear_map.continuous_of_bound - theorem linear_map.lipschitz_of_bound - theorem linear_map.lipschitz_of_bound_nnnorm - theorem linear_map.uniform_continuous_of_bound +/- theorem norm_image_of_norm_zero + theorem semilinear_map_class.bound_of_continuous + theorem semilinear_map_class.bound_of_shell_semi_normed Modified src/analysis/normed_space/star/basic.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/bochner.lean Modified src/topology/algebra/module/basic.lean - theorem continuous_linear_map.map_smul - theorem continuous_linear_map.map_smulₛₗ + def continuous_linear_map_class Modified src/topology/algebra/module/finite_dimension.lean Modified src/topology/algebra/module/weak_dual.lean 2022-06-28 19:09:05 08b07a6 feat(order/succ_pred/basic): tag more lemmas with simp (#14998) ESTIMATED CHANGES Modified src/order/succ_pred/basic.lean +/- theorem order.Icc_pred_right +/- theorem order.Icc_succ_left +/- theorem order.Ico_succ_left +/- theorem order.Ico_succ_right +/- theorem order.Ioc_pred_left +/- theorem order.Ioc_pred_right +/- theorem order.Ioo_pred_left +/- theorem order.Ioo_succ_right +/- theorem order.le_pred_iff +/- theorem order.lt_succ_iff +/- theorem order.pred_le_pred_iff +/- theorem order.pred_lt_iff +/- theorem order.pred_lt_pred_iff +/- theorem order.succ_le_iff +/- theorem order.succ_le_succ_iff +/- theorem order.succ_lt_succ_iff 2022-06-28 19:09:03 7db7667 feat(order/boolean_algebra): Interaction of disjointness and complements (#14925) Prove `disjoint x yᶜ ↔ x ≤ y` and similar, transfer those results to `set`. Lemma renames * `subset_compl_iff_disjoint` → `subset_compl_iff_disjoint_right` * `set.subset_compl_iff_disjoint` → `set.subset_compl_iff_disjoint_right` * `disjoint_iff_le_compl_left` → `le_compl_iff_disjoint_left` * `disjoint_iff_le_compl_right` → `le_compl_iff_disjoint_right` ESTIMATED CHANGES Modified src/algebra/support.lean Modified src/analysis/convex/stone_separation.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/data/set/basic.lean +/- theorem set.compl_subset_comm +/- theorem set.compl_subset_compl + theorem set.disjoint_compl_left_iff_subset + theorem set.disjoint_compl_right_iff_subset +/- theorem set.subset_compl_comm + theorem set.subset_compl_iff_disjoint_left + theorem set.subset_compl_iff_disjoint_right Modified src/data/set/lattice.lean + theorem set.disjoint_Union₂_left + theorem set.disjoint_Union₂_right - theorem set.disjoint_iff_subset_compl_left - theorem set.disjoint_iff_subset_compl_right + theorem set.disjoint_sUnion_left + theorem set.disjoint_sUnion_right Modified src/group_theory/free_product.lean Modified src/logic/equiv/embedding.lean Modified src/order/boolean_algebra.lean + theorem disjoint_compl_left_iff + theorem disjoint_compl_right_iff - theorem disjoint_iff_le_compl_left - theorem disjoint_iff_le_compl_right + theorem le_compl_iff_disjoint_left + theorem le_compl_iff_disjoint_right Modified src/order/complete_boolean_algebra.lean + theorem disjoint_supr₂_iff + theorem supr₂_disjoint_iff Modified src/order/filter/bases.lean Modified src/topology/basic.lean Modified src/topology/metric_space/hausdorff_distance.lean 2022-06-28 15:21:02 00c17d6 feat(algebra/ring/boolean_ring): `bool` is a Boolean ring (#15004) and a few `bool` lemmas. ESTIMATED CHANGES Modified src/algebra/ring/boolean_ring.lean Modified src/data/bool/basic.lean + theorem bool.band_bor_distrib_left + theorem bool.band_bor_distrib_right + theorem bool.band_bxor_distrib_left + theorem bool.band_bxor_distrib_right + theorem bool.bor_band_distrib_left + theorem bool.bor_band_distrib_right 2022-06-28 12:51:25 78bc372 feat(data/{finset, set}/basic): tweak `nonempty_coe_sort` and `is_empty_coe_sort` (#14937) This PR does the following: - add lemmas `set.is_empty_coe_sort` and `finset.is_empty_coe_sort` - made argument of both `nonempty_coe_sort` lemmas inferred - fix some spacing ESTIMATED CHANGES Modified src/analysis/normed_space/is_R_or_C.lean Modified src/data/finset/basic.lean +/- theorem finset.coe_nonempty + theorem finset.is_empty_coe_sort +/- theorem finset.nonempty.bex +/- theorem finset.nonempty_coe_sort Modified src/data/set/basic.lean + theorem set.is_empty_coe_sort +/- theorem set.nonempty_coe_sort Modified src/measure_theory/function/jacobian.lean Modified src/topology/algebra/semigroup.lean 2022-06-28 09:03:25 3594b63 feat(probability_theory/independence): if a family of pi-systems is independent, then so are the generated measurable spaces (#9387) The main result in this PR is `Indep_sets.Indep`: if π-systems are independent as sets of sets, then the measurable space structures they generate are independent. We already had a version of this for two pi-systems instead of a family. In order to prove this, and as preparation for a next PR about Kolmogorov's 0-1 law, a definition `pi_Union_Inter` is introduced to build a particular pi-system from a family of pi-systems. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem sup_closed.inter + def sup_closed + theorem sup_closed_of_linear_order + theorem sup_closed_of_totally_ordered + theorem sup_closed_singleton Modified src/measure_theory/measurable_space.lean - theorem measurable_space.generate_from_mono - theorem measurable_space.generate_from_sup_generate_from Modified src/measure_theory/measurable_space_def.lean + theorem measurable_space.generate_from_insert_empty + theorem measurable_space.generate_from_insert_univ + theorem measurable_space.generate_from_mono + theorem measurable_space.generate_from_sup_generate_from Modified src/measure_theory/pi_system.lean + theorem generate_from_pi_Union_Inter_le + theorem generate_from_pi_Union_Inter_measurable_space + theorem is_pi_system.insert_empty + theorem is_pi_system.insert_univ + theorem is_pi_system_pi_Union_Inter + theorem le_generate_from_pi_Union_Inter + theorem measurable_set_supr_of_mem_pi_Union_Inter +/- theorem mem_generate_pi_system_Union_elim' + theorem mem_pi_Union_Inter_of_measurable_set + def pi_Union_Inter + theorem pi_Union_Inter_mono_left + theorem subset_pi_Union_Inter Modified src/probability/independence.lean + theorem probability_theory.Indep_sets.Indep + theorem probability_theory.Indep_sets.Indep_aux + theorem probability_theory.Indep_sets.pi_Union_Inter_singleton 2022-06-28 08:13:29 728e074 feat(measure_theory/function/lp_order): prove a `normed_lattice_add_comm_group` instance for Lp (#14999) ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_fun.lean + theorem measure_theory.ae_eq_fun.coe_fn_abs Modified src/measure_theory/function/lp_order.lean + theorem measure_theory.Lp.coe_fn_abs + theorem measure_theory.Lp.coe_fn_inf + theorem measure_theory.Lp.coe_fn_sup Modified src/measure_theory/function/simple_func_dense_lp.lean 2022-06-28 03:59:01 dcedc04 feat(order/symm_diff): Triangle inequality for the symmetric difference (#14847) Prove that `a ∆ c ≤ a ∆ b ⊔ b ∆ c`. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem sdiff_triangle Modified src/order/symm_diff.lean + theorem le_symm_diff_iff_left + theorem le_symm_diff_iff_right + theorem symm_diff_triangle 2022-06-28 02:30:01 ae3d572 chore(topology/uniform_space/basic): Make `to_topological_space_inf` and `inf_uniformity` true by definition (#14912) Since the lattice API lets us provide a definition for `inf`, we may as well provide a nice one such that the obvious properties are true by rfl. ESTIMATED CHANGES Modified src/order/filter/lift.lean + theorem filter.lift'_inf_le Modified src/topology/uniform_space/basic.lean + theorem ball_inter 2022-06-28 00:05:04 cf4d987 chore(analysis/special_functions/trigonometric/angle): rfl lemmas for nat and int smul actions on angle (#15003) These can't be simp, because the simp-normal form is multiplication. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.coe_nsmul + theorem real.angle.coe_zsmul 2022-06-28 00:05:02 37bf8a2 chore(topology/separation): Extract `set` product lemma (#14958) Move `prod_subset_compl_diagonal_iff_disjoint` to `data.set.prod`, where it belongs. Delete `diagonal_eq_range_diagonal_map` because it duplicates `set.diagonal_eq_range`. Move `set.disjoint_left`/`set.disjoint_right` to `data.set.basic` to avoid an import cycle. Make variable semi-implicit in the RHS of `disjoint_left` and `disjoint_right`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem disjoint.inter_eq + theorem set.disjoint_left + theorem set.disjoint_right Modified src/data/set/lattice.lean - theorem disjoint.inter_eq - theorem set.disjoint_left - theorem set.disjoint_right Modified src/data/set/prod.lean + theorem set.prod_subset_compl_diagonal_iff_disjoint Modified src/linear_algebra/linear_independent.lean Modified src/topology/basic.lean Modified src/topology/separation.lean - theorem diagonal_eq_range_diagonal_map - theorem prod_subset_compl_diagonal_iff_disjoint Modified src/topology/urysohns_lemma.lean 2022-06-28 00:05:01 ee7f38c chore(data/set/basic): remove duplicate `nonempty_insert` in favor of `insert_nonempty` (#14884) This name matches e.g. `univ_nonempty` and `singleton_nonempty`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.insert_nonempty - theorem set.nonempty_insert Modified src/order/conditionally_complete_lattice.lean Modified src/topology/algebra/order/compact.lean 2022-06-28 00:04:54 365b2ee feat(data/bool): bnot_ne (#10562) ESTIMATED CHANGES Modified src/data/bool/basic.lean + theorem bool.bnot_ne + theorem bool.bnot_not_eq + theorem bool.ne_bnot + theorem bool.not_eq_bnot 2022-06-27 21:32:09 f6b728f feat(data/finset/pointwise): `•` and `⊆` (#14968) Port `set` lemmas to `finset`. Tag a few more lemmas with `norm_cast`. Add some missing `to_additive` attributes. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.image_subset_image_iff Modified src/data/finset/pointwise.lean +/- theorem finset.coe_one + theorem finset.inv_smul_mem_iff + theorem finset.inv_smul_mem_iff₀ + theorem finset.mem_inv_smul_finset_iff + theorem finset.mem_inv_smul_finset_iff₀ +/- theorem finset.pairwise_disjoint_smul_iff + theorem finset.smul_finset_subset_iff + theorem finset.smul_finset_subset_iff₀ + theorem finset.smul_finset_subset_smul_finset_iff + theorem finset.smul_finset_subset_smul_finset_iff₀ + theorem finset.smul_finset_univ₀ + theorem finset.smul_mem_smul_finset_iff + theorem finset.smul_mem_smul_finset_iff₀ + theorem finset.smul_univ₀ + theorem finset.subset_smul_finset_iff + theorem finset.subset_smul_finset_iff₀ Modified src/data/fintype/basic.lean +/- theorem finset.coe_univ Modified src/data/set/pointwise.lean +/- theorem set.pairwise_disjoint_smul_iff 2022-06-27 21:32:08 7c6cd38 chore(set_theory/game/pgame): remove weird `simp` lemma (#14954) I added this back before there was much API on casting natural numbers to pre-games, as a safeguard in case I used the wrong `1`. In retrospective this theorem was kind of dumb. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-06-27 21:32:07 2cdded9 feat(data/multiset/basic): add multiset.filter_singleton (#14938) Adds a lemma, similar to `finset.filter_singleton`. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.filter_singleton 2022-06-27 21:32:05 927b468 chore(data/nat/factorization/basic): golf pow_succ_factorization_not_dvd, remove import (#14936) Move `pow_succ_factorization_not_dvd` below `factorization_le_iff_dvd` and use this to golf it, eliminating the need for `tactic.linarith` ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean 2022-06-27 21:32:04 f51286d feat(analysis/locally_convex/bounded): continuous linear image of bounded set is bounded (#14907) This is needed to prove that the usual strong topology on continuous linear maps satisfies `has_continuous_smul`. ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean + theorem bornology.is_vonN_bounded.image 2022-06-27 21:32:03 cf50ac1 chore(algebra/group/units): mark some lemmas as simp (#14871) These seem like fairly natural candidates for simp lemmas. ESTIMATED CHANGES Modified src/algebra/group/units.lean 2022-06-27 21:32:02 cad1a6c feat(set_theory/cardinal/basic): lemmas about `#(finset α)` (#14850) This PR does the following: - prove `mk_finset_of_fintype : #(finset α) = 2 ^ℕ fintype.card α` for `fintype α` - rename `mk_finset_eq_mk` to `mk_finset_of_infinite` to match the former - rename `mk_finset` to `mk_coe_finset` to avoid confusion with these two lemmas ESTIMATED CHANGES Modified src/field_theory/fixed.lean Modified src/linear_algebra/dimension.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.mk_coe_finset - theorem cardinal.mk_finset + theorem cardinal.mk_finset_of_fintype Modified src/set_theory/cardinal/ordinal.lean - theorem cardinal.mk_finset_eq_mk + theorem cardinal.mk_finset_of_infinite 2022-06-27 21:32:00 fef4fb8 refactor(topology/inseparable): redefine `specializes` and `inseparable` (#14647) * Redefine `specializes` and `inseparable` in terms of `nhds`. * Review API. * Define `inseparable_setoid` and `separation_quotient`. * Add `function.surjective.subsingleton`. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/properties.lean Modified src/logic/unique.lean Modified src/topology/inseparable.lean + theorem continuous.specialization_monotone + theorem inducing.inseparable_iff + theorem inducing.specializes_iff +/- theorem inseparable.map + theorem inseparable.map_of_continuous_at + theorem inseparable.mem_closed_iff + theorem inseparable.mem_open_iff + theorem inseparable.nhds_eq + theorem inseparable.refl + theorem inseparable.rfl + theorem inseparable.specializes' + theorem inseparable.specializes + theorem inseparable.symm + theorem inseparable.trans +/- def inseparable + theorem inseparable_def - theorem inseparable_iff_closed - theorem inseparable_iff_closure + theorem inseparable_iff_closure_eq + theorem inseparable_iff_forall_closed + theorem inseparable_iff_forall_open + theorem inseparable_iff_mem_closure - theorem inseparable_iff_nhds_eq +/- theorem inseparable_iff_specializes_and + theorem inseparable_of_nhds_within_eq + def inseparable_setoid + theorem is_closed.not_inseparable + theorem is_closed.not_specializes + theorem is_open.not_inseparable + theorem is_open.not_specializes + theorem not_inseparable_iff_exists_open + theorem separation_quotient.continuous_mk + theorem separation_quotient.inducing_mk + theorem separation_quotient.is_closed_map_mk + theorem separation_quotient.is_open_map_mk + theorem separation_quotient.map_mk_nhds + def separation_quotient.mk + theorem separation_quotient.mk_eq_mk + theorem separation_quotient.preimage_image_mk_closed + theorem separation_quotient.preimage_image_mk_open + theorem separation_quotient.quotient_map_mk + theorem separation_quotient.range_mk + theorem separation_quotient.surjective_mk + def separation_quotient - theorem specialization_order.monotone_of_continuous + theorem specializes.antisymm +/- theorem specializes.map + theorem specializes.map_of_continuous_at + theorem specializes.mem_closed + theorem specializes.mem_open +/- theorem specializes.trans +/- def specializes - theorem specializes_def +/- theorem specializes_iff_closure_subset +/- theorem specializes_iff_forall_closed +/- theorem specializes_iff_forall_open + theorem specializes_iff_mem_closure + theorem specializes_iff_nhds + theorem specializes_iff_pure + theorem specializes_of_nhds_within +/- theorem specializes_refl +/- theorem specializes_rfl + theorem specializes_tfae +/- theorem subtype_inseparable_iff + theorem subtype_specializes_iff Modified src/topology/metric_space/emetric_space.lean Modified src/topology/separation.lean - theorem specializes_antisymm Modified src/topology/sets/opens.lean Modified src/topology/sober.lean 2022-06-27 19:03:59 1cd2bf5 feat(analysis/special_functions/log/deriv): more power series for log (#14881) This adds a power series expansion for `log ((a + 1) / a)`, and two lemmas that are needed for it. It's planned to be used in the proof of the Stirling formula. ESTIMATED CHANGES Modified src/analysis/special_functions/log/deriv.lean + theorem real.has_sum_log_one_add_inv + theorem real.has_sum_log_sub_log_of_abs_lt_1 2022-06-27 16:25:12 68e0160 chore(data/int/cast): redo #14890, moving field-specific lemmas (#14995) In #14894, I want to refer to the rational numbers in the definition of a field, meaning we can't have `algebra.field.basic` in the transitive imports of `data.rat.defs`. Apparently this dependency was re-added, so I'm going to have to split it again... ESTIMATED CHANGES Modified src/data/int/cast.lean - theorem int.cast_neg_nat_cast Modified src/data/int/cast_field.lean + theorem int.cast_neg_nat_cast 2022-06-27 16:25:11 2558b3b feat(*): Upgrade to lean 3.44.1c (#14984) The changes are: * `reflected a` is now spelt `reflected _ a`, as the argument was made explicit to resolve type resolution issues. We need to add new instances for `with_top` and `with_bot` as these are no longer found via the `option` instance. These new instances are an improvement, as they can now use `bot` and `top` instead of `none`. * Some nat order lemmas in core have been renamed or had their argument explicitness adjusted. * `dsimp` now applies `iff` lemmas, which means it can end up making more progress than it used to. This appears to impact `split_ifs` too. * `opposite.op_inj_iff` shouldn't be proved until after `opposite` is irreducible (where `iff.rfl` no longer works as a proof), otherwise `dsimp` is tricked into unfolding the irreducibility which puts the goal state in a form where no further lemmas can apply. We skip Lean 3.44.0c because the support in that version for `iff` lemmas in `dsimp` had some unintended consequences which required many undesirable changes. ESTIMATED CHANGES Modified archive/100-theorems-list/45_partition.lean Modified leanpkg.toml Modified src/algebra/geom_sum.lean Modified src/algebraic_geometry/gluing.lean Modified src/algebraic_topology/simplex_category.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/data/fin/tuple/basic.lean Modified src/data/fin/vec_notation.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/sigma.lean Modified src/data/matrix/pequiv.lean Modified src/data/nat/basic.lean Modified src/data/nat/log.lean Modified src/data/nat/pow.lean Modified src/data/num/lemmas.lean Modified src/data/opposite.lean +/- theorem opposite.op_inj_iff +/- theorem opposite.unop_inj_iff Modified src/data/rat/defs.lean Modified src/data/sigma/basic.lean Modified src/data/vector/basic.lean Modified src/dynamics/periodic_pts.lean Modified src/linear_algebra/projective_space/basic.lean Modified src/meta/univs.lean Modified src/number_theory/dioph.lean Modified src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/primorial.lean Modified src/number_theory/sum_four_squares.lean Modified src/order/bounded_order.lean Modified src/order/filter/at_top_bot.lean Modified src/order/galois_connection.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/tactic/core.lean Modified src/tactic/doc_commands.lean Modified src/tactic/fix_reflect_string.lean Modified src/tactic/linarith/datatypes.lean Modified src/tactic/local_cache.lean Modified src/tactic/omega/term.lean Modified src/tactic/replacer.lean Modified src/topology/discrete_quotient.lean Modified src/topology/uniform_space/basic.lean 2022-06-27 13:50:22 05565f4 doc(analysis/convex/uniform_convex_space): End of sentence (#14986) I kept the suspense for a month. ESTIMATED CHANGES Modified src/analysis/convex/uniform.lean 2022-06-27 13:50:15 5de7c34 feat(order/*): Miscellaneous results about the product order (#14977) `≤`, `<`, `⩿`, `⋖`, `is_bot`, `is_top`, `is_min`, `is_max` in `α × β`. ESTIMATED CHANGES Modified src/order/basic.lean +/- theorem prod.lt_iff + theorem prod.mk_le_mk_iff_left + theorem prod.mk_le_mk_iff_right +/- theorem prod.mk_lt_mk + theorem prod.mk_lt_mk_iff_left + theorem prod.mk_lt_mk_iff_right +/- theorem prod.swap_lt_swap Modified src/order/cover.lean + theorem prod.covby_iff + theorem prod.fst_eq_or_snd_eq_of_wcovby + theorem prod.mk_covby_mk_iff + theorem prod.mk_covby_mk_iff_left + theorem prod.mk_covby_mk_iff_right + theorem prod.mk_wcovby_mk_iff + theorem prod.mk_wcovby_mk_iff_left + theorem prod.mk_wcovby_mk_iff_right + theorem prod.swap_covby_swap + theorem prod.swap_wcovby_swap + theorem prod.wcovby_iff + theorem wcovby.fst + theorem wcovby.snd Modified src/order/max.lean + theorem is_bot.fst + theorem is_bot.prod_mk + theorem is_bot.snd + theorem is_max.fst + theorem is_max.prod_mk + theorem is_max.snd + theorem is_min.fst + theorem is_min.prod_mk + theorem is_min.snd + theorem is_top.fst + theorem is_top.prod_mk + theorem is_top.snd + theorem prod.is_bot_iff + theorem prod.is_max_iff + theorem prod.is_min_iff + theorem prod.is_top_iff 2022-06-27 13:50:14 f5d2cc8 feat(measure_theory/function/l1_space): add some integrability lemmas (#14931) ESTIMATED CHANGES Modified src/analysis/normed_space/lattice_ordered_group.lean + theorem norm_inf_le_add + theorem norm_sup_le_add Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.integrable.abs + theorem measure_theory.integrable.bdd_mul + theorem measure_theory.integrable.inf + theorem measure_theory.integrable.sup Modified src/measure_theory/function/lp_order.lean + theorem measure_theory.mem_ℒp.abs + theorem measure_theory.mem_ℒp.inf + theorem measure_theory.mem_ℒp.sup 2022-06-27 13:50:13 cf8b46d feat(analysis/convex/special_functions): `sqrt * log` is strictly convex on x>1 (#14822) This convexity result can be used to golf the proof of the main inequality in the proof of Bertrand's postulate (#8002). ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean + theorem deriv2_sqrt_mul_log + theorem deriv_sqrt_mul_log + theorem strict_concave_on_sqrt_mul_log_Ioi 2022-06-27 13:50:12 68d29f5 feat(probability/stopping): measurability of sets related to stopping times, under countable/encodable assumptions (#14750) The file already contains similar lemmas under assumptions on the topology of the index set. The new results use countability hypotheses instead. ESTIMATED CHANGES Modified src/probability/stopping.lean 2022-06-27 11:38:35 331df5a feat(probability/moments): moments and moment generating function of a real random variable (#14755) This PR defines moments, central moments, moment generating function and cumulant generating function. ESTIMATED CHANGES Added src/probability/moments.lean + def probability_theory.central_moment + theorem probability_theory.central_moment_one' + theorem probability_theory.central_moment_one + theorem probability_theory.central_moment_two_eq_variance + theorem probability_theory.central_moment_zero + def probability_theory.cgf + theorem probability_theory.cgf_const' + theorem probability_theory.cgf_const + theorem probability_theory.cgf_undef + theorem probability_theory.cgf_zero' + theorem probability_theory.cgf_zero + theorem probability_theory.cgf_zero_fun + theorem probability_theory.cgf_zero_measure + theorem probability_theory.indep_fun.cgf_add + theorem probability_theory.indep_fun.mgf_add + def probability_theory.mgf + theorem probability_theory.mgf_const' + theorem probability_theory.mgf_const + theorem probability_theory.mgf_nonneg + theorem probability_theory.mgf_pos' + theorem probability_theory.mgf_pos + theorem probability_theory.mgf_undef + theorem probability_theory.mgf_zero' + theorem probability_theory.mgf_zero + theorem probability_theory.mgf_zero_fun + theorem probability_theory.mgf_zero_measure + def probability_theory.moment + theorem probability_theory.moment_zero 2022-06-27 11:38:34 3091b91 feat(probability/stopping): if a filtration is sigma finite, then the measure restricted to the sigma algebra generated by a stopping time is sigma finite (#14752) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.sigma_finite_trim_mono Modified src/probability/stopping.lean 2022-06-27 11:38:33 72fbe5c feat(measure_theory/measure/finite_measure_weak_convergence): Characterize weak convergence of finite measures in terms of integrals of bounded continuous real-valued functions. (#14578) Weak convergence of measures was defined in terms of integrals of bounded continuous nnreal-valued functions. This PR shows the equivalence to the textbook condition in terms of integrals of bounded continuous real-valued functions. Also the file `measure_theory/measure/finite_measure_weak_convergence.lean` is divided to sections with dosctrings for clarity. ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem max_zero_add_max_neg_zero_eq_abs_self Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem bounded_continuous_function.integral_eq_integral_nnreal_part_sub + theorem bounded_continuous_function.nnreal.to_real_lintegral_eq_integral + theorem measure_theory.finite_measure.integrable_of_bounded_continuous_to_nnreal + theorem measure_theory.finite_measure.integrable_of_bounded_continuous_to_real - theorem measure_theory.finite_measure.lintegral_lt_top_of_bounded_continuous_to_nnreal + theorem measure_theory.finite_measure.lintegral_lt_top_of_bounded_continuous_to_real + theorem measure_theory.finite_measure.tendsto_iff_forall_integral_tendsto + theorem measure_theory.finite_measure.tendsto_of_forall_integral_tendsto +/- def measure_theory.finite_measure + theorem measure_theory.lintegral_lt_top_of_bounded_continuous_to_nnreal - theorem measure_theory.probability_measure.lintegral_lt_top_of_bounded_continuous_to_nnreal + theorem measure_theory.probability_measure.tendsto_iff_forall_integral_tendsto Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.abs_self_eq_nnreal_part_add_nnreal_part_neg + def bounded_continuous_function.nnnorm + theorem bounded_continuous_function.nnnorm_coe_fun_eq + def bounded_continuous_function.nnreal_part + theorem bounded_continuous_function.nnreal_part_coe_fun_eq + theorem bounded_continuous_function.self_eq_nnreal_part_sub_nnreal_part_neg 2022-06-27 09:14:45 cf0649c chore(data/sigma/basic): make `sigma.reflect` universe-polymorphic (#14934) ESTIMATED CHANGES Modified src/data/sigma/basic.lean 2022-06-27 07:39:57 671c7c0 chore(algebra/direct_sum/ring): add new `int_cast` and `nat_cast` fields to match `ring` and `semiring` (#14976) This was deliberately left to a follow up in #12182 ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean + theorem set_like.has_graded_one.int_cast_mem + theorem set_like.has_graded_one.nat_cast_mem Modified src/algebra/direct_sum/ring.lean 2022-06-27 07:39:56 af8ca85 fix(linear_algebra/{exterior,clifford}_algebra/basic): add some missing namespaces (#14975) These lemmas are about the auxiliary `{exterior,clifford}_algebra.graded_algebra.ι` not `{exterior,clifford}_algebra.ι`, so should have `graded_algebra` in their names. This is a follow up to #12182 ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/grading.lean + theorem clifford_algebra.graded_algebra.lift_ι_eq - theorem clifford_algebra.lift_ι_eq Modified src/linear_algebra/exterior_algebra/grading.lean + def exterior_algebra.graded_algebra.lift_ι + theorem exterior_algebra.graded_algebra.lift_ι_eq - def exterior_algebra.lift_ι - theorem exterior_algebra.lift_ι_eq 2022-06-27 04:03:50 d4f8a45 feat(algebra/group/units): add decidability instance for `is_unit` (#14873) This adds a decidability instance for the `is_unit` predicate. See [here](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Decidability.20of.20.60is_unit.60.20on.20finite.20rings/near/286543269). ESTIMATED CHANGES Modified src/algebra/group/units.lean 2022-06-27 03:03:23 0b18823 feat(set_theory/game/pgame): make `lt_iff_le_and_lf` true by def-eq (#14983) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/ordinal.lean Modified src/set_theory/game/pgame.lean +/- theorem pgame.lf_of_lt +/- theorem pgame.lt_iff_le_and_lf +/- theorem pgame.lt_of_le_of_lf Modified src/set_theory/game/short.lean Modified src/set_theory/surreal/basic.lean 2022-06-27 00:09:16 894f92b refactor(order/upper_lower): Reverse the order on `upper_set` (#14982) Having `upper_set` being ordered by reverse inclusion makes it order-isomorphic to `lower_set` (and antichains once we have them as a type) and it matches the order on `filter`. ESTIMATED CHANGES Modified src/order/upper_lower.lean + theorem lower_set.compl_le_compl +/- theorem upper_set.Ici_Sup +/- def upper_set.Ici_Sup_hom + theorem upper_set.Ici_bot +/- theorem upper_set.Ici_sup +/- def upper_set.Ici_sup_hom +/- theorem upper_set.Ici_sup_hom_apply +/- theorem upper_set.Ici_supr +/- theorem upper_set.Ici_supr₂ - theorem upper_set.Ici_top + theorem upper_set.Icoi_le_Ioi - theorem upper_set.Ioi_bot - theorem upper_set.Ioi_le_Ici + theorem upper_set.Ioi_top +/- theorem upper_set.coe_Inf +/- theorem upper_set.coe_Sup +/- theorem upper_set.coe_bot +/- theorem upper_set.coe_inf +/- theorem upper_set.coe_infi +/- theorem upper_set.coe_infi₂ +/- theorem upper_set.coe_sup +/- theorem upper_set.coe_supr +/- theorem upper_set.coe_supr₂ +/- theorem upper_set.coe_top + theorem upper_set.compl_le_compl +/- theorem upper_set.mem_Inf_iff +/- theorem upper_set.mem_Sup_iff + theorem upper_set.mem_bot +/- theorem upper_set.mem_inf_iff +/- theorem upper_set.mem_infi_iff +/- theorem upper_set.mem_infi₂_iff +/- theorem upper_set.mem_sup_iff +/- theorem upper_set.mem_supr_iff +/- theorem upper_set.mem_supr₂_iff - theorem upper_set.mem_top - theorem upper_set.not_mem_bot + theorem upper_set.not_mem_top + def upper_set_iso_lower_set 2022-06-26 23:29:19 f63d925 feat(combinatorics/simple_graph/clique): The set of cliques (#14827) Define `simple_graph.clique_set`, the `set` analogue to `simple_graph.clique_finset`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/clique.lean +/- theorem simple_graph.clique_finset_mono + def simple_graph.clique_set + theorem simple_graph.clique_set_eq_empty_iff + theorem simple_graph.clique_set_mono' + theorem simple_graph.clique_set_mono + theorem simple_graph.coe_clique_finset +/- theorem simple_graph.mem_clique_finset_iff + theorem simple_graph.mem_clique_set_iff 2022-06-26 21:36:44 f2b108e refactor(set_theory/cardinal/*): `cardinal.sup` → `supr` (#14569) We remove `cardinal.sup` in favor of `supr`. We tweak many other theorems relating to cardinal suprema in the process. A noteworthy consequence is that there's no longer universe constraints on the domain and codomain of the functions one takes the supremum of. When one does still have this constraint, one can use `bdd_above_range` to immediately prove their range is bounded above. The result of this PR is the following replacements: * `cardinal.sup` → `supr` * `cardinal.le_sup` → `le_csupr` * `cardinal.sup_le` → `csupr_le'` * `cardinal.sup_le_sup` → `csupr_mono` * `cardinal.sup_le_sum` → `cardinal.supr_le_sum` * `cardinal.sum_le_sup` → `cardinal.sum_le_supr` * `cardinal.sum_le_sup_lift` → `cardinal.sum_le_supr_lift` * `cardinal.sup_eq_zero` → `cardinal.supr_of_empty` * `cardinal.le_sup_iff` → `le_csupr_iff'` * `cardinal.lift_sup` → `cardinal.lift_supr` * `cardinal.lift_sup_le` → `cardinal.lift_supr` + `csupr_le'` * `cardinal.lift_sup_le_iff` → `cardinal.lift_supr` + `csupr_le_iff` * `cardinal.lift_sup_le_lift_sup` → `cardinal.lift_supr` + `csupr_le_iff'` * `cardinal.lift_sup_le_lift_sup'` → `cardinal.lift_supr` + `csupr_mono'` * `cardinal.sup_lt_lift` → `cardinal.supr_lt_lift` * `cardinal.sup_lt` → `cardinal.supr_lt` ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/linear_algebra/dimension.lean Modified src/measure_theory/card_measurable_space.lean Modified src/model_theory/encoding.lean Modified src/order/conditionally_complete_lattice.lean + theorem csupr_mono' + theorem le_csupr_iff' Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.bdd_above_iff_small + theorem cardinal.bdd_above_image + theorem cardinal.bdd_above_range_comp +/- theorem cardinal.le_powerlt - theorem cardinal.le_sup + theorem cardinal.lift_Sup + theorem cardinal.lift_infi - theorem cardinal.lift_sup - theorem cardinal.lift_sup_le - theorem cardinal.lift_sup_le_iff - theorem cardinal.lift_sup_le_lift_sup' - theorem cardinal.lift_sup_le_lift_sup + theorem cardinal.lift_supr + theorem cardinal.lift_supr_le + theorem cardinal.lift_supr_le_iff + theorem cardinal.lift_supr_le_lift_supr' + theorem cardinal.lift_supr_le_lift_supr +/- theorem cardinal.mk_Union_le +/- theorem cardinal.mk_sUnion_le +/- def cardinal.powerlt - theorem cardinal.powerlt_aux +/- theorem cardinal.powerlt_le +/- theorem cardinal.powerlt_max + theorem cardinal.powerlt_min + theorem cardinal.powerlt_mono_left +/- theorem cardinal.powerlt_succ +/- theorem cardinal.powerlt_zero - theorem cardinal.sum_le_sup - theorem cardinal.sum_le_sup_lift + theorem cardinal.sum_le_supr + theorem cardinal.sum_le_supr_lift - def cardinal.sup - theorem cardinal.sup_eq_zero - theorem cardinal.sup_le - theorem cardinal.sup_le_iff - theorem cardinal.sup_le_sum - theorem cardinal.sup_le_sup + theorem cardinal.supr_le_sum Modified src/set_theory/cardinal/cofinality.lean - theorem cardinal.sup_lt_lift_of_is_regular - theorem cardinal.sup_lt_of_is_regular + theorem cardinal.supr_lt_lift_of_is_regular + theorem cardinal.supr_lt_of_is_regular - theorem ordinal.sup_lt - theorem ordinal.sup_lt_lift + theorem ordinal.supr_lt + theorem ordinal.supr_lt_lift Modified src/set_theory/cardinal/ordinal.lean Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.Sup_ord - theorem ordinal.sup_ord + theorem ordinal.supr_ord 2022-06-26 19:48:44 33112c4 feat(data/nat/totient): more general multiplicativity lemmas for totient (#14842) Adds lemmas: `totient_gcd_mul_totient_mul : φ (a.gcd b) * φ (a * b) = φ a * φ b * (a.gcd b)` `totient_super_multiplicative : φ a * φ b ≤ φ (a * b)` `totient_gcd_mul_totient_mul` is Theorem 2.5(b) in Apostol (1976) Introduction to Analytic Number Theory. Developed while reviewing @CBirkbeck 's #14828 ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.totient_gcd_mul_totient_mul + theorem nat.totient_super_multiplicative Modified src/ring_theory/multiplicity.lean + theorem prod_factors_gcd_mul_prod_factors_mul 2022-06-26 18:50:48 381733a feat(analysis/convex/stone_separation): Stone's separation theorem (#14677) Disjoint convexes can be separated by a convex whose complement is also convex. ESTIMATED CHANGES Added src/analysis/convex/stone_separation.lean + theorem exists_convex_convex_compl_subset + theorem not_disjoint_segment_convex_hull_triple 2022-06-26 17:01:08 4111ed9 docs(linear_algebra/invariant_basis_number): Drop a TODO (#14973) This TODO was fixed some time ago by @riccardobrasca, reference the relevant instance in the docstring. ESTIMATED CHANGES Modified src/linear_algebra/invariant_basis_number.lean 2022-06-26 17:01:07 ca070dd feat(analysis/special_functions/trigonometric/angle): topology (#14969) Give `real.angle` the structure of a `topological_add_group` (rather than just an `add_comm_group`), so that it's possible to talk about continuity for functions involving this type, and add associated continuity lemmas for `coe : ℝ → angle`, `real.angle.sin` and `real.angle.cos`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.continuous_coe + theorem real.angle.continuous_cos + theorem real.angle.continuous_sin 2022-06-26 17:01:06 28a6f0a feat(set_theory/surreal/basic): add `numeric.mk` lemma, golf (#14962) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean +/- theorem pgame.numeric.add +/- theorem pgame.numeric.le_move_right +/- theorem pgame.numeric.left_lt_right +/- theorem pgame.numeric.lt_move_right + theorem pgame.numeric.mk +/- theorem pgame.numeric.move_left +/- theorem pgame.numeric.move_left_le +/- theorem pgame.numeric.move_left_lt +/- theorem pgame.numeric.move_right +/- theorem pgame.numeric.sub +/- theorem pgame.numeric_def +/- theorem pgame.numeric_of_is_empty_left_moves 2022-06-26 17:01:05 54352be feat(combinatorics/catalan): definition and equality of recursive and explicit definition (#14869) This PR defines the Catalan numbers via the recursive definition $$C (n+1) = \sum_{i=0}^n C (i) * C (n-i)$$. Furthermore, it shows that $$ n+1 | \binom {2n}{n}$$ and that the alternative $$C(n)=\frac{1}{n+1} \binom{2n}{n}$$ holds. The proof is based on the following stackexchange answer: https://math.stackexchange.com/questions/3304415/catalan-numbers-algebraic-proof-of-the-recurrence-relation which is quite elementary, so that the proof is relatively easy to formalise. ESTIMATED CHANGES Added src/combinatorics/catalan.lean + def catalan + theorem catalan_eq_central_binom_div + theorem catalan_one + theorem catalan_succ + theorem catalan_three + theorem catalan_two + theorem catalan_zero + theorem succ_mul_catalan_eq_central_binom Modified src/data/nat/choose/central.lean + theorem nat.succ_dvd_central_binom + theorem nat.two_dvd_central_binom_of_one_le + theorem nat.two_dvd_central_binom_succ 2022-06-26 14:56:15 ee7a886 feat({data/{finset,set},order/filter}/pointwise): Missing `smul_comm_class` instances (#14963) Instances of the form `smul_comm_class α β (something γ)`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.image_comm + theorem finset.map_comm Modified src/data/finset/pointwise.lean Modified src/data/set/pointwise.lean +/- theorem set.smul_set_mono + theorem set.smul_set_subset_iff Modified src/order/filter/pointwise.lean 2022-06-26 12:02:17 32b08ef feat: `add_monoid_with_one`, `add_group_with_one` (#12182) Adds two type classes `add_monoid_with_one R` and `add_group_with_one R` with operations for `ℕ → R` and `ℤ → R`, resp. The type classes extend `add_monoid` and `add_group` because those seem to be the weakest type classes where such a `+₀₁`-homomorphism is guaranteed to exist. The `nat.cast` function as well as `coe : ℕ → R` are implemented in terms of `add_monoid_with_one R`, removing the infamous `nat.cast` diamond. Fixes #946. Some lemmas are less general now because the algebraic hierarchy is not fine-grained enough, or because the lawful coercion only exists for monoids and above. This generality was not used in mathlib as far as I could tell. For example: - `char_p.char_p_to_char_zero` now requires a group instead of a left-cancellative monoid, because we don't have the `add_left_cancel_monoid_with_one` class - `nat.norm_cast_le` now requires a seminormed ring instead of a seminormed group, because we don't have `semi_normed_group_with_one` ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified archive/100-theorems-list/30_ballot_problem.lean Modified archive/imo/imo2013_q5.lean Modified archive/imo/imo2019_q4.lean Modified counterexamples/phillips.lean Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/big_operators/basic.lean +/- theorem int.cast_list_sum +/- theorem int.cast_multiset_sum +/- theorem int.cast_sum +/- theorem nat.cast_list_sum +/- theorem nat.cast_multiset_sum +/- theorem nat.cast_sum Modified src/algebra/big_operators/pi.lean Modified src/algebra/category/Ring/colimits.lean Modified src/algebra/char_p/algebra.lean Modified src/algebra/char_p/basic.lean +/- theorem char_p.cast_card_eq_zero +/- theorem char_p.cast_eq_zero +/- theorem char_p.char_p_to_char_zero +/- theorem char_p.congr +/- theorem char_p.eq +/- theorem char_p.int_cast_eq_zero_iff +/- theorem char_p.int_coe_eq_int_coe_iff Modified src/algebra/char_p/char_and_card.lean Modified src/algebra/char_zero.lean - theorem char_zero_of_inj_zero - theorem nat.cast_add_one_ne_zero - theorem nat.cast_eq_one - theorem nat.cast_eq_zero - theorem nat.cast_inj - theorem nat.cast_injective - theorem nat.cast_ne_one - theorem nat.cast_ne_zero - theorem ordered_semiring.to_char_zero Added src/algebra/char_zero/defs.lean + theorem char_zero_of_inj_zero + theorem nat.cast_add_one_ne_zero + theorem nat.cast_eq_one + theorem nat.cast_eq_zero + theorem nat.cast_inj + theorem nat.cast_injective + theorem nat.cast_ne_one + theorem nat.cast_ne_zero Modified src/algebra/direct_sum/internal.lean Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.of_int_cast + theorem direct_sum.of_nat_cast Modified src/algebra/field/basic.lean Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/opposite.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_power/lemmas.lean +/- theorem nsmul_one +/- theorem zsmul_eq_mul +/- theorem zsmul_one Modified src/algebra/group_with_zero/power.lean Modified src/algebra/hom/group_instances.lean Modified src/algebra/lie/universal_enveloping.lean Modified src/algebra/module/basic.lean +/- theorem char_zero.of_module Modified src/algebra/module/linear_map.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/ne_zero.lean +/- theorem ne_zero.ne' +/- theorem ne_zero.not_char_dvd +/- theorem ne_zero.of_ne_zero_coe +/- theorem ne_zero.of_not_dvd +/- theorem ne_zero.pos_of_ne_zero_coe Modified src/algebra/order/archimedean.lean Modified src/algebra/order/field.lean Modified src/algebra/order/floor.lean +/- theorem int.ceil_pos +/- theorem int.ceil_zero +/- theorem int.floor_add_nat +/- theorem int.floor_nat_add +/- theorem int.floor_nonneg +/- theorem int.floor_sub_nat +/- theorem int.floor_zero +/- theorem nat.ceil_eq_zero +/- theorem nat.ceil_zero +/- theorem nat.floor_zero +/- theorem nat.lt_floor_add_one Modified src/algebra/order/module.lean Modified src/algebra/order/nonneg.lean Modified src/algebra/order/ring.lean + theorem nat.strict_mono_cast + theorem ordered_semiring.to_char_zero Modified src/algebra/punit_instances.lean Modified src/algebra/quaternion.lean Modified src/algebra/ring/basic.lean Modified src/algebra/ring/opposite.lean Modified src/algebra/ring/prod.lean Modified src/algebra/ring/ulift.lean Modified src/algebra/ring_quot.lean Modified src/algebra/squarefree.lean Modified src/algebra/star/self_adjoint.lean Modified src/algebra/triv_sq_zero_ext.lean + theorem triv_sq_zero_ext.fst_mk + theorem triv_sq_zero_ext.snd_mk Modified src/algebra/tropical/basic.lean Modified src/analysis/calculus/cont_diff.lean Modified src/analysis/complex/basic.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/normed/field/basic.lean + theorem nat.norm_cast_le Modified src/analysis/normed/group/basic.lean - theorem nat.norm_cast_le Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/special_functions/gamma.lean Modified src/analysis/special_functions/integrals.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/pow_deriv.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/analysis/specific_limits/basic.lean Modified src/analysis/specific_limits/normed.lean Modified src/analysis/subadditive.lean Modified src/analysis/sum_integral_comparisons.lean Modified src/combinatorics/simple_graph/regularity/bound.lean Modified src/combinatorics/simple_graph/regularity/uniform.lean Modified src/computability/language.lean Modified src/computability/tm_to_partrec.lean + theorem turing.partrec_to_TM2.tr_nat_default +/- theorem turing.partrec_to_TM2.tr_nat_zero Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/fin/basic.lean Modified src/data/int/basic.lean +/- theorem int.coe_nat_abs +/- theorem int.coe_nat_eq_zero +/- theorem int.coe_nat_ne_zero +/- theorem int.coe_nat_nonneg +/- theorem int.coe_nat_pos + theorem int.neg_of_nat_ne_zero + theorem int.zero_ne_neg_of_nat Modified src/data/int/cast.lean - theorem int.cast_add +/- def int.cast_add_hom - theorem int.cast_bit0 - theorem int.cast_bit1 - theorem int.cast_coe_nat' - theorem int.cast_coe_nat +/- theorem int.cast_commute - theorem int.cast_four +/- theorem int.cast_ite +/- theorem int.cast_mul - theorem int.cast_neg + theorem int.cast_neg_nat_cast - theorem int.cast_neg_of_nat - theorem int.cast_neg_succ_of_nat - theorem int.cast_of_nat - theorem int.cast_one - theorem int.cast_sub - theorem int.cast_sub_nat_nat - theorem int.cast_three - theorem int.cast_two - theorem int.cast_zero +/- theorem int.coe_cast_add_hom - theorem int.coe_nat_bit0 - theorem int.coe_nat_bit1 - theorem int.nat_cast_eq_coe_nat +/- theorem mul_opposite.op_int_cast +/- theorem mul_opposite.unop_int_cast +/- theorem pi.coe_int +/- theorem pi.int_apply +/- theorem prod.fst_int_cast +/- theorem prod.snd_int_cast Added src/data/int/cast/defs.lean + theorem int.cast_add + theorem int.cast_bit0 + theorem int.cast_bit1 + theorem int.cast_coe_nat + theorem int.cast_four + theorem int.cast_neg + theorem int.cast_neg_of_nat + theorem int.cast_neg_succ_of_nat + theorem int.cast_of_nat + theorem int.cast_one + theorem int.cast_sub + theorem int.cast_sub_nat_nat + theorem int.cast_three + theorem int.cast_two + theorem int.cast_zero + theorem int.coe_nat_bit0 + theorem int.coe_nat_bit1 + theorem int.neg_of_nat_eq + theorem nat.cast_pred + theorem nat.cast_sub Modified src/data/int/char_zero.lean +/- theorem int.cast_eq_zero +/- theorem int.cast_inj +/- theorem int.cast_injective +/- theorem int.cast_ne_zero Modified src/data/int/interval.lean Modified src/data/matrix/basic.lean + theorem matrix.diagonal_eq_diagonal_iff Modified src/data/mv_polynomial/basic.lean Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean +/- theorem add_monoid_hom.ext_nat +/- theorem ext_nat' +/- theorem map_nat_cast' +/- theorem mul_opposite.op_nat_cast +/- theorem mul_opposite.unop_nat_cast - theorem nat.bin_cast_eq - theorem nat.cast_add +/- def nat.cast_add_monoid_hom - theorem nat.cast_add_one - theorem nat.cast_bit0 - theorem nat.cast_bit1 - theorem nat.cast_ite +/- theorem nat.cast_mul +/- theorem nat.cast_nonneg - theorem nat.cast_one - theorem nat.cast_pred +/- theorem nat.cast_ring_hom_nat - theorem nat.cast_sub - theorem nat.cast_succ - theorem nat.cast_two +/- theorem nat.cast_with_bot - theorem nat.cast_zero +/- theorem nat.coe_cast_add_monoid_hom - theorem nat.strict_mono_cast +/- theorem pi.coe_nat +/- theorem pi.nat_apply Added src/data/nat/cast/defs.lean + theorem nat.bin_cast_eq + theorem nat.cast_add + theorem nat.cast_add_one + theorem nat.cast_bit0 + theorem nat.cast_bit1 + theorem nat.cast_ite + theorem nat.cast_one + theorem nat.cast_succ + theorem nat.cast_two + theorem nat.cast_zero Modified src/data/nat/choose/sum.lean Modified src/data/nat/digits.lean Modified src/data/nat/enat.lean +/- theorem enat.coe_inj +/- theorem enat.dom_coe +/- theorem enat.some_eq_coe Modified src/data/num/lemmas.lean + theorem num.add_of_nat' +/- theorem num.add_of_nat + theorem num.bit1_succ +/- theorem num.cast_of_znum +/- theorem num.cast_sub' +/- theorem num.cast_succ' +/- theorem num.cast_succ +/- theorem num.cast_to_int +/- theorem num.cast_to_nat + theorem num.of_int'_to_znum + theorem num.of_nat'_bit + theorem num.of_nat'_one + theorem num.of_nat'_succ +/- theorem num.of_nat'_zero +/- theorem num.of_nat_cast +/- theorem num.of_nat_inj - theorem num.of_nat_to_znum - theorem num.of_nat_to_znum_neg + theorem num.of_to_nat' +/- theorem num.of_to_nat + theorem num.pred_succ + theorem num.succ_of_int' + theorem num.to_znum_neg_succ + theorem num.to_znum_succ +/- theorem pos_num.cast_add +/- theorem pos_num.cast_inj +/- theorem pos_num.cast_sub' +/- theorem pos_num.cast_succ +/- theorem pos_num.cast_to_int +/- theorem pos_num.cast_to_nat + theorem pos_num.of_to_nat' +/- theorem pos_num.of_to_nat +/- theorem znum.cast_add +/- theorem znum.cast_bit0 +/- theorem znum.cast_bit1 +/- theorem znum.cast_bitm1 + theorem znum.cast_sub +/- theorem znum.cast_succ +/- theorem znum.cast_to_int +/- theorem znum.of_int'_eq + theorem znum.of_int'_neg +/- theorem znum.of_int_cast +/- theorem znum.of_nat_cast + theorem znum.of_nat_to_znum + theorem znum.of_nat_to_znum_neg + theorem znum.of_to_int' +/- theorem znum.of_to_int +/- theorem znum.to_of_int Modified src/data/polynomial/basic.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/laurent.lean Modified src/data/rat/cast.lean +/- theorem rat.cast_coe_nat Modified src/data/rat/defs.lean +/- theorem rat.coe_int_eq_mk Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean Modified src/data/real/irrational.lean +/- theorem irrational.ne_zero Modified src/data/real/pi/leibniz.lean Modified src/data/zmod/basic.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_nat_mem Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/perfect_closure.lean + theorem perfect_closure.mk_zero_zero Modified src/field_theory/ratfunc.lean Modified src/field_theory/subfield.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/triangle.lean Modified src/geometry/manifold/instances/sphere.lean + theorem sphere_ext_iff + theorem stereographic'_symm_apply + theorem stereographic_apply Modified src/group_theory/p_group.lean Modified src/group_theory/perm/cycle/type.lean Modified src/group_theory/specific_groups/dihedral.lean Modified src/group_theory/specific_groups/quaternion.lean Modified src/linear_algebra/clifford_algebra/grading.lean + theorem clifford_algebra.lift_ι_eq Modified src/linear_algebra/dual.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/exterior_algebra/grading.lean + def exterior_algebra.lift_ι + theorem exterior_algebra.lift_ι_eq Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/matrix/trace.lean Modified src/linear_algebra/matrix/zpow.lean Modified src/linear_algebra/quadratic_form/complex.lean Modified src/logic/equiv/transfer_instance.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/probability_mass_function/constructions.lean Modified src/number_theory/arithmetic_function.lean +/- theorem nat.arithmetic_function.coe_coe +/- theorem nat.arithmetic_function.int_coe_apply +/- theorem nat.arithmetic_function.int_coe_one +/- theorem nat.arithmetic_function.nat_coe_apply +/- theorem nat.arithmetic_function.nat_coe_one Modified src/number_theory/bernoulli.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/dioph.lean Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/liouville/basic.lean Modified src/number_theory/liouville/measure.lean Modified src/number_theory/liouville/residual.lean Modified src/number_theory/lucas_lehmer.lean +/- theorem lucas_lehmer.X.int_coe_fst +/- theorem lucas_lehmer.X.int_coe_snd +/- theorem lucas_lehmer.X.nat_coe_fst +/- theorem lucas_lehmer.X.nat_coe_snd Modified src/number_theory/modular.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/pell.lean Modified src/number_theory/sum_four_squares.lean Modified src/number_theory/zsqrtd/basic.lean +/- theorem zsqrtd.coe_nat_im +/- theorem zsqrtd.coe_nat_re +/- theorem zsqrtd.coe_nat_val Modified src/number_theory/zsqrtd/gaussian_int.lean +/- theorem gaussian_int.coe_nat_abs_norm Modified src/order/filter/archimedean.lean Modified src/order/filter/germ.lean Modified src/probability/strong_law.lean Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_nat_cast Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/graded_algebra/basic.lean +/- theorem graded_algebra.mem_support_iff Modified src/ring_theory/graded_algebra/homogeneous_localization.lean + theorem homogeneous_localization.int_cast_val + theorem homogeneous_localization.nat_cast_val Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/ideal/quotient.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/laurent_series.lean Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean Modified src/ring_theory/polynomial/eisenstein.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean + theorem nat_cast_mem Modified src/ring_theory/tensor_product.lean Modified src/ring_theory/witt_vector/basic.lean - def witt_vector.constant_coeff - def witt_vector.map + theorem witt_vector.map_fun.int_cast + theorem witt_vector.map_fun.nat_cast Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/frobenius_fraction_field.lean + theorem witt_vector.exists_frobenius_solution_fraction_ring_aux Modified src/ring_theory/witt_vector/mul_coeff.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean Modified src/ring_theory/witt_vector/truncated.lean - def witt_vector.truncate + theorem witt_vector.truncate_fun_int_cast + theorem witt_vector.truncate_fun_nat_cast Modified src/ring_theory/witt_vector/verschiebung.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/game/basic.lean Modified src/set_theory/game/pgame.lean - theorem pgame.nat_one Modified src/set_theory/ordinal/basic.lean Modified src/set_theory/ordinal/natural_ops.lean Modified src/set_theory/surreal/basic.lean Modified src/set_theory/surreal/dyadic.lean Modified src/tactic/norm_cast.lean Modified src/tactic/norm_num.lean Modified src/tactic/zify.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/continuous_function/algebra.lean + theorem continuous_map.coe_int_cast + theorem continuous_map.coe_nat_cast Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_int_cast + theorem bounded_continuous_function.coe_nat_cast Modified src/topology/continuous_function/compact.lean Modified src/topology/locally_constant/algebra.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/path_connected.lean Modified test/norm_cast.lean Modified test/norm_cast_lemma_order.lean Modified test/norm_cast_sum_lambda.lean Modified test/norm_num.lean Modified test/transport/basic.lean Modified test/zify.lean 2022-06-26 08:42:14 871fcd8 feat(data/zmod/algebra): add subsingleton instance for zmod-algebras (#14946) This will be used to eliminate a diamond with `galois_field.algebra` in a followup PR. ESTIMATED CHANGES Modified src/data/zmod/algebra.lean 2022-06-26 08:01:37 e0ecaa9 feat(set_theory/ordinal/notation): fast growing hierarchy (#14072) Adds a definition `onote.fast_growing` which yields elements of the [fast-growing hierarchy](https://en.wikipedia.org/wiki/Fast-growing_hierarchy) up to and including ε₀. Because it is built on `onote` instead of `ordinal`, the definition is fully computable, and you can work out some small elements. For example `fast_growing_ε₀ 2 = 2048` and `fast_growing_ε₀ 3` is... big. ESTIMATED CHANGES Modified src/set_theory/ordinal/notation.lean + def onote.fast_growing + theorem onote.fast_growing_def + theorem onote.fast_growing_limit + theorem onote.fast_growing_one + theorem onote.fast_growing_succ + theorem onote.fast_growing_two + theorem onote.fast_growing_zero' + theorem onote.fast_growing_zero + def onote.fast_growing_ε₀ + theorem onote.fast_growing_ε₀_one + theorem onote.fast_growing_ε₀_two + theorem onote.fast_growing_ε₀_zero + def onote.fundamental_sequence + theorem onote.fundamental_sequence_has_prop + def onote.fundamental_sequence_prop 2022-06-26 04:37:04 cfbb97f feat(data/{finset,set}/basic): More `∪`/`∩` laws (#14952) Specialise lattice lemmas to `set` and `finset`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.inter_inter_distrib_left + theorem finset.inter_inter_distrib_right + theorem finset.inter_inter_inter_comm + theorem finset.union_union_distrib_left + theorem finset.union_union_distrib_right + theorem finset.union_union_union_comm Modified src/data/set/basic.lean + theorem set.inter_inter_distrib_left + theorem set.inter_inter_distrib_right + theorem set.inter_inter_inter_comm + theorem set.union_union_distrib_left + theorem set.union_union_distrib_right + theorem set.union_union_union_comm 2022-06-26 04:37:03 ccb1cf3 feat(data/set/lattice): Preimages are disjoint iff the sets are disjoint (#14951) Prove `disjoint (f ⁻¹' s) (f ⁻¹' t) ↔ disjoint s t` and `disjoint (f '' s) (f '' t) ↔ disjoint s t` when `f` is surjective/injective. Delete `set.disjoint_preimage` in favor of `disjoint.preimage`. Fix the statement of `set.preimage_eq_empty_iff` (the name referred to the RHS). ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem disjoint.inter_eq + theorem disjoint.of_image + theorem disjoint.of_preimage + theorem set.disjoint_image_iff - theorem set.disjoint_preimage + theorem set.disjoint_preimage_iff +/- theorem set.preimage_eq_empty_iff Modified src/topology/tietze_extension.lean 2022-06-26 03:02:54 72cff84 feat(order/symm_diff): The symmetric difference is involutive (#14959) `a ∆ (a ∆ b) = b` and `b ∆ a ∆ a = b`. ESTIMATED CHANGES Modified src/order/symm_diff.lean +/- theorem symm_diff_left_inj + theorem symm_diff_left_injective + theorem symm_diff_left_involutive + theorem symm_diff_left_surjective +/- theorem symm_diff_right_inj + theorem symm_diff_right_injective + theorem symm_diff_right_involutive + theorem symm_diff_right_surjective + theorem symm_diff_symm_diff_cancel_left + theorem symm_diff_symm_diff_cancel_right - theorem symm_diff_symm_diff_self 2022-06-26 00:12:23 b8c3e61 refactor(*): Use `finset.Iix`/`finset.Ixi` (#14448) Now that `finset.Iix`/`finset.Ixi` work for empty types, there is no need for `univ.filter (λ j, j < i)` and similar. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + theorem fin.prod_Ioi_succ + theorem fin.prod_Ioi_zero - theorem fin.prod_filter_succ_lt - theorem fin.prod_filter_zero_lt Modified src/data/fin/interval.lean - theorem fin.card_filter_ge - theorem fin.card_filter_gt - theorem fin.card_filter_le - theorem fin.card_filter_le_le - theorem fin.card_filter_le_lt - theorem fin.card_filter_lt - theorem fin.card_filter_lt_le - theorem fin.card_filter_lt_lt - theorem fin.prod_filter_lt_mul_neg_eq_prod_off_diag Modified src/data/finset/basic.lean +/- theorem finset.disjoint_left +/- theorem finset.disjoint_right Modified src/data/finset/card.lean Modified src/data/finset/locally_finite.lean + theorem finset.Ioi_disj_union_Iio + theorem finset.disjoint_Ioi_Iio + theorem finset.prod_prod_Ioi_mul_eq_prod_prod_off_diag Modified src/data/fintype/fin.lean + theorem fin.Ioi_succ + theorem fin.Ioi_zero_eq_map - theorem fin.univ_filter_succ_lt - theorem fin.univ_filter_zero_lt Modified src/linear_algebra/vandermonde.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/trace.lean 2022-06-25 21:12:47 7ee73e4 feat(data/fintype/basic): Constructing an equivalence from a left inverse (#14816) When `f : α → β`, `g : β → α` are inverses one way and `card α ≤ card β`, then they form an equivalence. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + def equiv.of_left_inverse_of_card_le + def equiv.of_right_inverse_of_card_le - theorem fintype.left_inverse_of_right_inverse_of_card_le - theorem fintype.right_inverse_of_left_inverse_of_card_le + theorem function.left_inverse.right_inverse_of_card_le + theorem function.right_inverse.left_inverse_of_card_le Modified src/data/zmod/basic.lean Modified src/logic/function/basic.lean + theorem function.right_inverse.left_inverse_of_injective + theorem function.right_inverse.left_inverse_of_surjective 2022-06-25 21:12:46 8812752 feat(algebra/field/basic): Semifields (#14683) Define division semirings and semifields. ESTIMATED CHANGES Modified src/algebra/field/basic.lean +/- theorem add_div' +/- theorem add_div +/- theorem add_div_eq_mul_add_div +/- theorem div_add' +/- theorem div_add_div +/- theorem div_add_div_same +/- theorem div_add_one +/- theorem div_add_same +/- theorem field.to_is_field +/- theorem inv_add_inv +/- theorem is_field.nontrivial +/- structure is_field +/- theorem not_is_field_of_subsingleton +/- theorem one_add_div +/- theorem one_div_add_one_div +/- theorem ring_hom.map_div +/- theorem ring_hom.map_eq_zero +/- theorem ring_hom.map_inv +/- theorem ring_hom.map_ne_zero +/- theorem ring_hom.map_units_inv +/- theorem same_add_div + theorem semifield.to_is_field Modified src/data/complex/basic.lean Modified src/data/real/nnreal.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/ring_theory/ideal/quotient.lean +/- theorem ideal.quotient.maximal_ideal_iff_is_field_quotient Modified src/ring_theory/witt_vector/basic.lean 2022-06-25 20:02:11 f9571f0 feat(analysis/normed*): add instances about balls and spheres (#14808) Non-bc change: `has_inv.inv` on the unit circle is now defined using `has_inv.inv` instead of complex conjugation. ESTIMATED CHANGES Modified src/analysis/complex/circle.lean + def circle.of_conj_div_self +/- def circle.to_units +/- def circle +/- theorem coe_inv_circle +/- theorem coe_inv_circle_eq_conj Added src/analysis/normed/field/unit_ball.lean + def submonoid.unit_closed_ball + def submonoid.unit_sphere + def subsemigroup.unit_ball + def subsemigroup.unit_closed_ball + def unit_sphere_to_units Added src/analysis/normed/group/ball_sphere.lean + theorem coe_neg_ball + theorem coe_neg_closed_ball + theorem coe_neg_sphere Modified src/analysis/normed/group/basic.lean - theorem coe_neg_sphere Added src/analysis/normed_space/ball_action.lean + theorem ne_neg_of_mem_sphere + theorem ne_neg_of_mem_unit_sphere Modified src/analysis/normed_space/basic.lean - theorem ne_neg_of_mem_sphere - theorem ne_neg_of_mem_unit_sphere Modified src/geometry/manifold/instances/sphere.lean 2022-06-25 13:57:10 6f923bd chore(*): golf (#14939) Some golfs I made while working on a large refactor. ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/data/analysis/filter.lean Modified src/data/set/countable.lean Modified src/data/set/finite.lean Modified src/linear_algebra/dimension.lean Modified src/topology/constructions.lean 2022-06-25 07:57:38 07c83c8 feat(linear_algebra/clifford_algebra/of_alternating): extend alternating maps to the exterior algebra (#14803) ESTIMATED CHANGES Modified src/linear_algebra/exterior_algebra/basic.lean Added src/linear_algebra/exterior_algebra/of_alternating.lean + theorem exterior_algebra.lhom_ext + def exterior_algebra.lift_alternating + theorem exterior_algebra.lift_alternating_algebra_map + theorem exterior_algebra.lift_alternating_apply_ι_multi + theorem exterior_algebra.lift_alternating_comp + theorem exterior_algebra.lift_alternating_comp_ι_multi + def exterior_algebra.lift_alternating_equiv + theorem exterior_algebra.lift_alternating_one + theorem exterior_algebra.lift_alternating_ι + theorem exterior_algebra.lift_alternating_ι_mul + theorem exterior_algebra.lift_alternating_ι_multi 2022-06-24 21:45:08 4fd263b feat(representation_theory/character): characters of representations (#14453) ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean + theorem FinVect.iso.conj_eq_conj + def FinVect.iso_to_linear_equiv + def linear_equiv.to_FinVect_iso Modified src/representation_theory/basic.lean - theorem representation.char_conj - theorem representation.char_mul_comm - theorem representation.char_one +/- theorem representation.dual_apply + theorem representation.dual_tensor_hom_comm Added src/representation_theory/character.lean + theorem fdRep.char_conj + theorem fdRep.char_dual + theorem fdRep.char_iso + theorem fdRep.char_lin_hom + theorem fdRep.char_mul_comm + theorem fdRep.char_one + theorem fdRep.char_tensor + def fdRep.character Modified src/representation_theory/fdRep.lean + theorem fdRep.dual_tensor_iso_lin_hom_hom_hom + theorem fdRep.iso.conj_ρ + def fdRep.iso_to_linear_equiv + def fdRep.ρ 2022-06-24 19:24:10 8bf85d7 feat(algebra/indicator_function): add an apply version of `mul_indicator_finset_bUnion` (#14919) ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.mul_indicator_finset_bUnion_apply 2022-06-24 19:24:09 f94a64f feat(probability/martingale): add some lemmas for submartingales (#14904) ESTIMATED CHANGES Modified src/probability/martingale.lean + theorem measure_theory.submartingale.condexp_sub_nonneg + theorem measure_theory.submartingale_iff_condexp_sub_nonneg + theorem measure_theory.submartingale_nat + theorem measure_theory.submartingale_of_condexp_sub_nonneg + theorem measure_theory.submartingale_of_condexp_sub_nonneg_nat + theorem measure_theory.submartingale_of_set_integral_le_succ 2022-06-24 19:24:08 40fa2d8 feat(topology/metric_space): a countably generated uniformity is metrizable (#14052) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/group_power/basic.lean + theorem pow_eq_zero_iff' Modified src/data/nat/lattice.lean + theorem nat.Sup_mem Added src/topology/metric_space/metrizable_uniformity.lean + theorem pseudo_metric_space.dist_of_prenndist + theorem pseudo_metric_space.dist_of_prenndist_le + theorem pseudo_metric_space.le_two_mul_dist_of_prenndist + theorem uniform_space.metrizable_space 2022-06-24 17:15:45 fe322e1 refactor(algebra/order/monoid): use typeclasses instead of lemmas (#14848) Use `covariant_class`/`contravariant_class` instead of type-specific `mul_le_mul_left` etc lemmas. Also, rewrite some proofs to use API about inequalities on `with_top`/`with_bot` instead of the exact form of the current definition. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem exists_one_lt_mul_of_lt - theorem exists_pos_mul_of_lt - theorem with_zero.lt_of_mul_lt_mul_left - theorem with_zero.mul_le_mul_left + theorem with_zero.zero_eq_bot +/- theorem with_zero.zero_le 2022-06-24 15:26:20 0e5f278 feat(linear_algebra/{multilinear, alternating}): add `cod_restrict` and lemmas (#14927) ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + def alternating_map.cod_restrict + theorem linear_map.comp_alternating_map_cod_restrict + theorem linear_map.subtype_comp_alternating_map_cod_restrict Modified src/linear_algebra/multilinear/basic.lean + theorem linear_map.comp_multilinear_map_cod_restrict + theorem linear_map.subtype_comp_multilinear_map_cod_restrict + def multilinear_map.cod_restrict 2022-06-24 15:26:19 3e326fc feat(data/finite/basic): add missing instances (#14913) * Add `finite` instances for `prod`, `pprod`, `sigma`, and `psigma`. * Don't depend on `classical.choice` in `finite_iff_nonempty_fintype`. * Move `not_finite_iff_infinite` up, use it to golf some proofs. ESTIMATED CHANGES Modified src/data/finite/basic.lean 2022-06-24 15:26:17 363bbd2 chore(topology/basic): golf a proof (#14911) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem mem_closure_of_frequently_of_tendsto 2022-06-24 15:26:16 475cf37 refactor(data/polynomial): extract/add lemmas and golf (#14888) + Extract lemmas `roots_multiset_prod_X_sub_C`, `nat_degree_multiset_prod_X_sub_C_eq_card`, `monic_prod_multiset_X_sub_C` from the proof of `C_leading_coeff_mul_prod_multiset_X_sub_C` in *ring_division.lean*. + Add the lemma `exists_prod_multiset_X_sub_C_mul` in *ring_division.lean* and `roots_ne_zero_of_splits` in *splitting_field.lean* and use them to golf `nat_degree_eq_card_roots` The proof of the latter originally depends on `eq_prod_roots_of_splits`, but now the dependency reversed, with `nat_degree_eq_card_roots` now used to golf `eq_prod_roots_of_splits` (and `roots_map` as well). + Move `prod_multiset_root_eq_finset_root` and `prod_multiset_X_sub_C_dvd` from *field_division.lean* to *ring_division.lean* and golf the proof of the latter, generalizing `field` to `is_domain`. + Remove redundant imports and the lemma `exists_multiset_of_splits`, because it is just one direction of `splits_iff_exists_multiset`, and it follows trivially from `eq_prod_roots_of_splits`. It couldn't be removed before this PR because `roots_map` and `eq_prod_roots_of_splits` depended on it. + Golf `splits_of_exists_multiset` (independent of other changes). ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean - theorem polynomial.prod_multiset_X_sub_C_dvd - theorem polynomial.prod_multiset_root_eq_finset_root Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.count_map_roots + theorem polynomial.exists_prod_multiset_X_sub_C_mul + theorem polynomial.monic_prod_multiset_X_sub_C + theorem polynomial.nat_degree_multiset_prod_X_sub_C_eq_card + theorem polynomial.prod_multiset_X_sub_C_dvd + theorem polynomial.prod_multiset_root_eq_finset_root + theorem polynomial.roots_multiset_prod_X_sub_C Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean +/- theorem polynomial.eq_prod_roots_of_splits - theorem polynomial.exists_multiset_of_splits + theorem polynomial.roots_ne_zero_of_splits 2022-06-24 15:26:15 dabb0c6 feat(probability/independence): equivalent ways to check indep_fun (#14814) Prove: - `indep_fun f g μ ↔ ∀ s t, measurable_set s → measurable_set t → μ (f ⁻¹' s ∩ g ⁻¹' t) = μ (f ⁻¹' s) * μ (g ⁻¹' t)`, - `indep_fun f g μ ↔ ∀ s t, measurable_set s → measurable_set t → indep_set (f ⁻¹' s) (g ⁻¹' t) μ`. ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem measurable_space.comap_eq_generate_from Modified src/probability/independence.lean + theorem probability_theory.indep_fun_iff_indep_set_preimage + theorem probability_theory.indep_fun_iff_measure_inter_preimage_eq_mul 2022-06-24 15:26:14 7c2ad75 feat(field_theory.intermediate_field): intermediate_field.inclusion (#12596) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_inclusion + def intermediate_field.inclusion + theorem intermediate_field.inclusion_inclusion + theorem intermediate_field.inclusion_injective + theorem intermediate_field.inclusion_self 2022-06-24 13:23:16 e420232 feat(data/int/basic): add a better `has_reflect int` instance (#14906) This closes a todo comment in `number_theory.lucas_lehmer`. This also merges `rat.has_reflect` with `rat.reflect` to match `nat.reflect`. ESTIMATED CHANGES Modified src/data/int/basic.lean Modified src/data/rat/meta_defs.lean Modified src/number_theory/lucas_lehmer.lean Modified test/rat.lean 2022-06-24 13:23:15 f05c49f feat(meta/univs): Add a reflect_name tactic, make reflected instances universe polymorphic (#14766) The existing `list.reflect` instance only works for `Type 0`, this version works for `Type u` providing `u` is known. ESTIMATED CHANGES Modified src/data/fin/vec_notation.lean Modified src/data/vector/basic.lean Added src/meta/univs.lean Modified test/vec_notation.lean 2022-06-24 11:15:40 8187142 feat(data/finset/pointwise): `s • t` is the union of the `a • t` (#14696) and a few other results leading to it. Also tag `set.coe_bUnion` with `norm_cast` and rename `finset.image_mul_prod`/`finset.add_image_prod` to `finset.image_mul_product`/`finset.image_add_product` ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.coe_bUnion Modified src/data/finset/n_ary.lean + theorem finset.bUnion_image_left + theorem finset.bUnion_image_right Modified src/data/finset/pointwise.lean + theorem finset.bUnion_smul_finset - theorem finset.image_mul_prod + theorem finset.image_mul_product + theorem finset.pairwise_disjoint_smul_iff Modified src/data/set/lattice.lean + theorem set.prod_eq_bUnion_left + theorem set.prod_eq_bUnion_right Modified src/data/set/pairwise.lean + theorem set.pairwise_disjoint_image_left_iff + theorem set.pairwise_disjoint_image_right_iff Modified src/data/set/pointwise.lean + theorem set.bUnion_smul_set + theorem set.pairwise_disjoint_smul_iff Modified src/data/set/prod.lean + theorem set.image2_mk_eq_prod 2022-06-24 11:15:39 6d00cc2 feat(ring_theory/trace): Add `trace_eq_sum_automorphisms`, `norm_eq_prod_automorphisms`, `normal.alg_hom_equiv_aut` (#14523) ESTIMATED CHANGES Modified src/field_theory/normal.lean + def normal.alg_hom_equiv_aut Modified src/ring_theory/norm.lean + theorem algebra.norm_eq_prod_automorphisms Modified src/ring_theory/trace.lean + theorem trace_eq_sum_automorphisms 2022-06-24 09:56:29 efe794c chore(order/filter): turn `tendsto_id'` into an `iff` lemma (#14791) ESTIMATED CHANGES Modified src/dynamics/omega_limit.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/order/filter/basic.lean +/- theorem filter.tendsto_id' +/- theorem filter.tendsto_id Modified src/topology/instances/ennreal.lean Modified src/topology/order.lean + theorem continuous_id_iff_le Modified src/topology/separation.lean 2022-06-24 09:16:09 6cefaf4 feat(measure_theory/function/conditional_expectation): conditional expectation w.r.t. the restriction of a measure to a set (#14751) We prove `(μ.restrict s)[f | m] =ᵐ[μ.restrict s] μ[f | m]`. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean +/- theorem measure_theory.condexp_indicator_aux + theorem measure_theory.condexp_of_ae_strongly_measurable' + theorem measure_theory.condexp_restrict_ae_eq_restrict 2022-06-24 01:29:11 ac2e9db feat(data/real/{e,}nnreal): add some order isomorphisms (#14900) * If `a` is a nonnegative real number, then - `set.Icc (0 : ℝ) (a : ℝ)` is order isomorphic to `set.Iic a`; - `set.Iic (a : ℝ≥0∞)` is order isomorphic to `set.Iic a`; * Also, `ℝ≥0∞` is order isomorphic both to `Iic (1 : ℝ≥0∞)` and to the unit interval in `ℝ`. * Use the latter fact to golf `ennreal.second_countable_topology`. * Golf `ennreal.has_continuous_inv` using `order_iso.continuous`. * Improve definitional equalities for `equiv.subtype_subtype_equiv_subtype_exists`, `equiv.subtype_subtype_equiv_subtype_inter`, `equiv.subtype_subtype_equiv_subtype`, `equiv.set.sep`, use `simps`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.inv_three_add_inv_three + def ennreal.order_iso_Iic_coe + theorem ennreal.order_iso_Iic_coe_symm_apply_coe + def ennreal.order_iso_Iic_one_birational + theorem ennreal.order_iso_Iic_one_birational_symm_apply + def ennreal.order_iso_unit_interval_birational + theorem ennreal.order_iso_unit_interval_birational_apply_coe Modified src/data/real/nnreal.lean + def nnreal.order_iso_Icc_zero_coe + theorem nnreal.order_iso_Icc_zero_coe_symm_apply_coe Modified src/logic/equiv/basic.lean +/- def equiv.subtype_subtype_equiv_subtype - theorem equiv.subtype_subtype_equiv_subtype_apply - theorem equiv.subtype_subtype_equiv_subtype_exists_apply +/- def equiv.subtype_subtype_equiv_subtype_inter - theorem equiv.subtype_subtype_equiv_subtype_inter_apply Modified src/topology/instances/ennreal.lean 2022-06-24 01:29:10 cb94893 refactor(order/complete_lattice): `Sup` lemmas before `Inf` lemmas (#14868) Throughout the file, we make sure that `Sup` theorems always appear immediately before their `Inf` counterparts. This ensures consistency, and makes it much easier to golf theorems or detect missing API. We choose to put `Sup` before `Inf` rather than the other way around, since this seems to minimize the amount of things that need to be moved around, and it matches the order that we define the two operations. We also golf a few proofs throughout, and add some missing corresponding theorems, namely: - `infi_extend_top` - `infi_supr_ge_nat_add` - `unary_relation_Inf_iff` - `binary_relation_Inf_iff` ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- theorem Inf_eq_of_forall_ge_of_forall_gt_exists_lt +/- theorem Inf_eq_top +/- theorem Inf_image +/- theorem Sup_apply +/- theorem Sup_eq_bot +/- theorem Sup_eq_of_forall_le_of_forall_lt_exists_gt +/- theorem Sup_eq_top +/- theorem Sup_image + theorem binary_relation_Inf_iff +/- theorem eq_singleton_top_of_Inf_eq_top_of_nonempty +/- theorem inf_infi +/- theorem infi_and +/- theorem infi_const +/- theorem infi_emptyset +/- theorem infi_eq_bot +/- theorem infi_eq_of_forall_ge_of_forall_gt_exists_lt +/- theorem infi_exists + theorem infi_extend_top +/- theorem infi_image +/- theorem infi_inf +/- theorem infi_inf_eq +/- theorem infi_le_infi_of_subset +/- theorem infi_option +/- theorem infi_prod +/- theorem infi_range +/- theorem infi_sigma +/- theorem infi_split +/- theorem infi_split_single +/- theorem infi_subtype'' +/- theorem infi_subtype +/- theorem infi_sum + theorem infi_supr_ge_nat_add +/- theorem infi_top +/- theorem infi_union +/- theorem infi_univ +/- theorem le_infi_const +/- theorem sup_supr +/- theorem supr_and +/- theorem supr_bot +/- theorem supr_const +/- theorem supr_const_le +/- theorem supr_emptyset +/- theorem supr_eq_top +/- theorem supr_exists +/- theorem supr_le_supr_of_subset +/- theorem supr_option +/- theorem supr_prod +/- theorem supr_sigma +/- theorem supr_split_single +/- theorem supr_subtype'' +/- theorem supr_subtype' +/- theorem supr_subtype +/- theorem supr_sum +/- theorem supr_sup +/- theorem supr_sup_eq +/- theorem supr_univ + theorem unary_relation_Inf_iff 2022-06-24 01:29:09 649ca66 chore(*): Disparate generalizations to division monoids (#14686) The leftover changes from the introduction of `division_monoid`. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean Modified src/algebra/group/commute.lean +/- theorem commute.inv_inv +/- theorem commute.inv_inv_iff Modified src/algebra/group/conj.lean Modified src/algebra/group/prod.lean +/- def div_monoid_hom Modified src/algebra/group/semiconj.lean +/- theorem semiconj_by.inv_inv_symm +/- theorem semiconj_by.inv_inv_symm_iff Modified src/algebra/group_with_zero/basic.lean - theorem commute.inv_inv₀ - theorem units.coe_inv' Modified src/algebra/group_with_zero/power.lean - theorem units.coe_zpow₀ Modified src/algebra/order/group.lean Modified src/analysis/normed_space/spectrum.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/group_theory/group_action/group.lean +/- def arrow_action Modified src/group_theory/submonoid/pointwise.lean Modified src/group_theory/subsemigroup/center.lean Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/dedekind_domain/adic_valuation.lean Modified src/ring_theory/localization/as_subring.lean Modified src/topology/algebra/field.lean 2022-06-23 23:27:42 56185bd feat(data/finset): add some lemmas about `finset.disj_union` (#14910) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_disj_union Modified src/data/finset/basic.lean + theorem finset.forall_mem_map + theorem finset.map_disj_union' + theorem finset.map_disj_union + theorem finset.map_disj_union_aux Modified src/data/finset/fold.lean + theorem finset.fold_disj_union 2022-06-23 20:16:37 198cb64 refactor(ring_theory): generalize basic API of `ring_hom` to `ring_hom_class` (#14756) This PR generalizes part of the basic API of ring homs to `ring_hom_class`. This notably includes things like `ring_hom.ker`, `ideal.map` and `ideal.comap`. I left the namespaces unchanged, for example `ring_hom.ker` remains the same even though it is now defined for any `ring_hom_class` morphism; this way dot notation still (mostly) works for actual ring homs. ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/ideal/local_ring.lean Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.apply_coe_mem_map +/- theorem ideal.comap_le_map_of_inv_on +/- theorem ideal.comap_le_map_of_inverse +/- theorem ideal.ker_le_comap +/- theorem ideal.map_Inf +/- theorem ideal.map_eq_bot_iff_le_ker +/- theorem ideal.map_is_prime_of_equiv +/- theorem ideal.map_is_prime_of_surjective +/- theorem ideal.map_le_comap_of_inv_on +/- theorem ideal.map_le_comap_of_inverse +/- theorem ideal.map_span +/- theorem ideal.mem_map_of_mem +/- theorem ring_hom.comap_ker +/- theorem ring_hom.ker_coe_equiv +/- theorem ring_hom.ker_eq_comap_bot + theorem ring_hom.ker_equiv +/- theorem ring_hom.ker_is_maximal_of_surjective +/- theorem ring_hom.ker_is_prime +/- theorem ring_hom.ker_ne_top +/- theorem ring_hom.not_one_mem_ker Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/ideal/prod.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization/localization_localization.lean Modified src/ring_theory/polynomial/basic.lean +/- theorem mv_polynomial.ker_map 2022-06-23 16:23:10 44d3fc0 chore(data/nat,int): move field-specific lemmas about cast (#14890) I want to refer to the rational numbers in the definition of a field, meaning we can't have `algebra.field.basic` in the transitive imports of `data.rat.basic`. This is a step in rearranging those imports: remove the definition of a field from the dependencies of the casts `ℕ → α` and `ℤ → α`, where `α` is a (semi)ring. ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean Modified src/algebra/char_zero.lean Modified src/algebra/order/field.lean + theorem nat.cast_le_pow_div_sub + theorem nat.cast_le_pow_sub_div_sub + theorem pow_minus_two_nonneg Deleted src/algebra/order/field_pow.lean - theorem nat.cast_le_pow_div_sub - theorem nat.cast_le_pow_sub_div_sub - theorem pow_minus_two_nonneg Modified src/algebra/order/smul.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/specific_limits/normed.lean Modified src/data/int/cast.lean - theorem int.cast_div Added src/data/int/cast_field.lean + theorem int.cast_div Modified src/data/int/char_zero.lean Modified src/data/nat/cast.lean - theorem nat.cast_div - theorem nat.cast_div_le - theorem nat.inv_pos_of_nat - theorem nat.one_div_le_one_div - theorem nat.one_div_lt_one_div - theorem nat.one_div_pos_of_nat Added src/data/nat/cast_field.lean + theorem nat.cast_div + theorem nat.cast_div_le + theorem nat.inv_pos_of_nat + theorem nat.one_div_le_one_div + theorem nat.one_div_lt_one_div + theorem nat.one_div_pos_of_nat Modified src/data/nat/choose/bounds.lean Modified src/data/rat/order.lean Modified src/order/filter/at_top_bot.lean 2022-06-23 16:23:08 c3e3d1a feat(data/set): replace `set_coe.can_lift` by `subtype.can_lift` (#14792) ESTIMATED CHANGES Modified src/data/set/basic.lean Modified src/tactic/lift.lean 2022-06-23 16:23:07 4de20c5 feat(analysis/../log): log_nat_eq_sum_factorization (#14782) ESTIMATED CHANGES Modified src/analysis/special_functions/log/basic.lean + theorem real.log_nat_eq_sum_factorization 2022-06-23 16:23:06 c2fcf9f feat(data/polynomial/erase_lead): Characterizations of polynomials of small support (#14500) This PR adds iff-lemmas `card_support_eq_one`, `card_support_eq_two`, and `card_support_eq_three`. These will be useful for irreducibility of x^n-x-1. ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean + theorem polynomial.card_support_eq_one + theorem polynomial.card_support_eq_three + theorem polynomial.card_support_eq_two 2022-06-23 14:10:06 ef24ace feat(order/hom/basic): some lemmas about order homs and equivs (#14872) A few lemmas from #11053, which I have seperated from the original PR following @riccardobrasca's suggestion. ESTIMATED CHANGES Modified src/order/hom/basic.lean + theorem order_hom.coe_eq + def order_iso.of_hom_inv 2022-06-23 14:10:05 dd2e7ad feat(analysis/convex/strict_convex_space): isometries of strictly convex spaces are affine (#14837) Add the result that isometries of (affine spaces for) real normed spaces with strictly convex codomain are affine isometries. In particular, this applies to isometries of Euclidean spaces (we already have the instance that real inner product spaces are uniformly convex and thus strictly convex). Strict convexity means the surjectivity requirement of Mazur-Ulam can be avoided. ESTIMATED CHANGES Modified src/analysis/convex/strict_convex_space.lean + theorem eq_line_map_of_dist_eq_mul_of_dist_eq_mul + theorem eq_midpoint_of_dist_eq_half + theorem isometry.affine_isometry_of_strict_convex_space_apply + theorem isometry.coe_affine_isometry_of_strict_convex_space Modified src/analysis/normed/group/add_torsor.lean + theorem dist_eq_norm_vsub' 2022-06-23 14:10:04 966bb24 feat(group_theory/finite_abelian): Structure of finite abelian groups (#14736) Any finitely generated abelian group is the product of a power of `ℤ` and a direct sum of some `zmod (p i ^ e i)` for some prime powers `p i ^ e i`. Any finite abelian group is a direct sum of some `zmod (p i ^ e i)` for some prime powers `p i ^ e i`. (TODO : prove uniqueness of this decomposition) ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/group/prod.lean + def mul_equiv.prod_congr + def mul_equiv.prod_unique + def mul_equiv.unique_prod Modified src/data/zmod/basic.lean + def zmod.ring_equiv_congr Added src/group_theory/finite_abelian.lean + theorem add_comm_group.equiv_direct_sum_zmod_of_fintype + theorem add_comm_group.equiv_free_prod_direct_sum_zmod Modified src/group_theory/finiteness.lean Modified src/linear_algebra/prod.lean Modified src/logic/equiv/basic.lean + def equiv.prod_unique + def equiv.unique_prod 2022-06-23 14:10:03 cff439d feat(analysis/seminorm): add add_group_seminorm (#14336) We introduce `add_group_seminorm` and refactor `seminorm` to extend this new definition. This new `add_group_seminorm` structure will also be used in #14115 to define `ring_seminorm`. ESTIMATED CHANGES Modified counterexamples/seminorm_lattice_not_distrib.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/seminorm.lean + theorem add_group_seminorm.add_apply + theorem add_group_seminorm.add_comp + theorem add_group_seminorm.coe_add + theorem add_group_seminorm.coe_comp + theorem add_group_seminorm.coe_smul + theorem add_group_seminorm.coe_sup + theorem add_group_seminorm.coe_zero + def add_group_seminorm.comp + theorem add_group_seminorm.comp_add_le + theorem add_group_seminorm.comp_apply + theorem add_group_seminorm.comp_comp + theorem add_group_seminorm.comp_id + theorem add_group_seminorm.comp_mono + theorem add_group_seminorm.comp_zero + theorem add_group_seminorm.ext + theorem add_group_seminorm.inf_apply + theorem add_group_seminorm.le_def + theorem add_group_seminorm.le_insert' + theorem add_group_seminorm.le_insert + theorem add_group_seminorm.lt_def + theorem add_group_seminorm.smul_apply + theorem add_group_seminorm.smul_sup + theorem add_group_seminorm.sub_rev + theorem add_group_seminorm.sup_apply + theorem add_group_seminorm.zero_apply + theorem add_group_seminorm.zero_comp + structure add_group_seminorm + theorem coe_norm_add_group_seminorm + def norm_add_group_seminorm +/- def norm_seminorm +/- theorem seminorm.ball_bot +/- theorem seminorm.ball_finset_sup + theorem seminorm.comp_add_le - theorem seminorm.comp_triangle - theorem seminorm.nonneg + def seminorm.of +/- structure seminorm 2022-06-23 14:10:01 585a1bf feat(number_theory): define ramification index and inertia degree (#14332) We define ramification index `ramification_idx` and inertia degree `inertia_deg` for `P : ideal S` over `p : ideal R` given a ring extension `f : R →+* S`. The literature generally assumes `p` is included in `P`, both are maximal, `R` is the ring of integers of a number field `K` and `S` is the integral closure of `R` in `L`, a finite separable extension of `K`; we relax these assumptions as much as is practical. ESTIMATED CHANGES Added src/number_theory/ramification_inertia.lean + theorem ideal.inertia_deg_algebra_map + theorem ideal.inertia_deg_of_subsingleton + theorem ideal.is_dedekind_domain.ramification_idx_eq_factors_count + theorem ideal.is_dedekind_domain.ramification_idx_eq_normalized_factors_count + theorem ideal.is_dedekind_domain.ramification_idx_ne_zero + theorem ideal.le_pow_of_le_ramification_idx + theorem ideal.le_pow_ramification_idx + theorem ideal.ramification_idx_bot + theorem ideal.ramification_idx_eq_find + theorem ideal.ramification_idx_eq_zero + theorem ideal.ramification_idx_lt + theorem ideal.ramification_idx_ne_zero + theorem ideal.ramification_idx_of_not_le + theorem ideal.ramification_idx_spec 2022-06-23 11:58:10 cc4b8e5 feat(data/sigma,data/ulift,logic/equiv): add missing lemmas (#14903) Add lemmas and `equiv`s about `plift`, `psigma`, and `pprod`. ESTIMATED CHANGES Modified src/data/sigma/basic.lean + theorem psigma.«exists» + theorem psigma.«forall» Modified src/data/ulift.lean + theorem plift.down_bijective + theorem plift.down_surjective + theorem plift.up_bijective + theorem plift.up_inj + theorem plift.up_injective + theorem plift.up_surjective + theorem ulift.down_bijective + theorem ulift.down_surjective + theorem ulift.up_bijective + theorem ulift.up_inj + theorem ulift.up_injective + theorem ulift.up_surjective Modified src/logic/equiv/basic.lean + def equiv.pprod_equiv_prod_plift + def equiv.psigma_equiv_sigma_plift Modified src/set_theory/cardinal/cofinality.lean 2022-06-23 10:25:45 cf23199 chore(number_theory/lucas_lehmer): remove `has_to_pexpr` instances (#14905) These instances are sort of out-of-place, and aren't really needed anyway. We already use the more verbose ``%%`(n)`` notation elsewhere in mathlib, which as an operation makes more conceptual sense. Until #14901 these two instances were just special cases of `has_reflect.has_to_pexpr`. While unlike that instance these two instances are not diamond-forming, they're unecessary special cases that make antiquoting harder to understand. ESTIMATED CHANGES Modified src/number_theory/lucas_lehmer.lean 2022-06-22 23:55:53 416edbd chore(ring_theory/polynomial/symmetric): golf proofs (#14866) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem equiv.finset_congr_to_embedding Modified src/data/finset/powerset.lean + theorem finset.powerset_len_map Modified src/data/fintype/basic.lean + theorem finset.map_univ_equiv + theorem finset.map_univ_of_surjective Modified src/ring_theory/polynomial/symmetric.lean 2022-06-22 21:42:36 c45e5d5 fix(meta/expr): remove `has_reflect.has_to_pexpr` (#14901) This instance (introduced in #3477) forms a diamond with the builtin `pexpr.has_to_pexpr`: ```lean import meta.expr #eval show tactic unit, from do let i1 : has_to_pexpr pexpr := pexpr.has_to_pexpr, let i2 : has_to_pexpr pexpr := has_reflect.has_to_pexpr, let e := ``(1), let p1 := @to_pexpr _ i1 e, let p2 := @to_pexpr _ i2 e, guard (p1 = p2) -- fails ``` The consequence is that in cases where `bar` is not a `pexpr` or `expr` but a value to be reflected, ``` ``(foo %%bar) ``` now has to be written ``` ``(foo %%`(bar)) ```; a spelling already used in various existing files. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/Instance.20diamonds.20in.20has_to_pexpr/near/287083928) ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/transform_decl.lean Modified test/norm_swap.lean 2022-06-22 18:31:24 2a732ed chore(analysis/special_functions/log/basic): golf a proof (#14898) ESTIMATED CHANGES Modified src/analysis/special_functions/log/basic.lean 2022-06-22 18:31:23 23918a5 feat(order/filter/basic): add some lemmas about `eventually_le` (#14891) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_le.mul_le_mul + theorem filter.eventually_le.mul_nonneg + theorem filter.eventually_sub_nonneg 2022-06-22 18:31:21 12e5f2e refactor(data/set/countable): make `set.countable` protected (#14886) I'm going to add `_root_.countable` typeclass, a data-free version of `encodable`. ESTIMATED CHANGES Modified counterexamples/phillips.lean +/- theorem phillips_1940.bounded_additive_measure.apply_countable +/- theorem phillips_1940.countable_compl_spf +/- theorem phillips_1940.countable_spf_mem Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/special_functions/complex/log.lean +/- theorem complex.countable_preimage_exp Modified src/data/complex/cardinality.lean +/- theorem not_countable_complex Modified src/data/real/cardinality.lean +/- theorem cardinal.not_countable_real Modified src/data/set/countable.lean +/- theorem set.countable.exists_surjective +/- theorem set.countable.image2 +/- theorem set.countable.image +/- theorem set.countable.insert +/- theorem set.countable.mono +/- theorem set.countable.preimage_of_inj_on +/- theorem set.countable.sUnion +/- def set.countable.to_encodable - def set.countable +/- theorem set.countable_Union +/- theorem set.countable_Union_Prop +/- theorem set.countable_empty +/- theorem set.countable_encodable' +/- theorem set.countable_encodable +/- theorem set.countable_insert +/- theorem set.countable_is_bot +/- theorem set.countable_is_top +/- theorem set.countable_pi +/- theorem set.countable_range +/- theorem set.countable_set_of_finite_subset +/- theorem set.countable_singleton +/- theorem set.countable_union +/- def set.enumerate_countable +/- theorem set.finite.countable +/- theorem set.subset_range_enumerate +/- theorem set.subsingleton.countable Modified src/geometry/manifold/charted_space.lean Modified src/measure_theory/constructions/borel_space.lean +/- theorem ae_measurable_binfi +/- theorem ae_measurable_bsupr +/- theorem measurable_binfi +/- theorem measurable_bsupr Modified src/measure_theory/constructions/polish.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/covering/vitali_family.lean +/- theorem vitali_family.fine_subfamily_on.index_countable Modified src/measure_theory/function/ae_measurable_order.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.lintegral_bUnion +/- theorem measure_theory.lintegral_bUnion₀ Modified src/measure_theory/measurable_space.lean +/- theorem measurable_set.pi +/- theorem measurable_set_pi Modified src/measure_theory/measurable_space_def.lean +/- theorem measurable_set.bInter +/- theorem measurable_set.bUnion +/- theorem measurable_set.sInter +/- theorem measurable_set.sUnion +/- theorem set.countable.measurable_set Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.bsupr_measure_Iic +/- theorem measure_theory.measure.ext_iff_of_bUnion_eq_univ +/- theorem measure_theory.measure.ext_iff_of_sUnion_eq_univ +/- theorem measure_theory.measure.restrict_bUnion_congr +/- theorem measure_theory.measure.restrict_sUnion_congr +/- theorem measure_theory.measure.sigma_finite_of_countable +/- theorem measure_theory.measure_bUnion +/- theorem measure_theory.measure_bUnion_eq_supr +/- theorem measure_theory.measure_bUnion_to_measurable +/- theorem measure_theory.measure_bUnion₀ +/- theorem measure_theory.measure_sUnion +/- theorem measure_theory.measure_sUnion₀ +/- theorem measure_theory.tsum_measure_preimage_singleton Modified src/measure_theory/measure/measure_space_def.lean +/- theorem measure_theory.ae_ball_iff +/- theorem measure_theory.measure_bUnion_le +/- theorem measure_theory.measure_bUnion_null_iff +/- theorem measure_theory.measure_sUnion_null_iff Modified src/measure_theory/measure/null_measurable.lean Modified src/measure_theory/measure/outer_measure.lean +/- theorem measure_theory.outer_measure.bUnion_null_iff +/- theorem measure_theory.outer_measure.sUnion_null_iff Modified src/order/filter/bases.lean +/- theorem filter.countable_binfi_eq_infi_seq' +/- theorem filter.countable_binfi_eq_infi_seq +/- theorem filter.countable_binfi_principal_eq_seq_infi +/- theorem filter.is_countably_generated_binfi_principal Modified src/order/filter/countable_Inter.lean +/- theorem countable_bInter_mem +/- theorem countable_sInter_mem +/- theorem eventually_countable_ball +/- theorem eventually_eq.countable_bInter +/- theorem eventually_eq.countable_bUnion +/- theorem eventually_le.countable_bInter +/- theorem eventually_le.countable_bUnion Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.mk_set_le_aleph_0 +/- theorem cardinal.mk_subtype_le_aleph_0 Modified src/set_theory/cardinal/ordinal.lean +/- theorem cardinal.countable_iff_lt_aleph_one Modified src/topology/G_delta.lean +/- theorem is_Gδ_bInter +/- theorem is_Gδ_bInter_of_open +/- theorem is_Gδ_sInter +/- theorem set.countable.is_Gδ_compl Modified src/topology/algebra/order/basic.lean Modified src/topology/bases.lean +/- theorem set.countable.is_separable +/- theorem topological_space.countable_countable_basis Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/baire.lean +/- theorem dense_sInter_of_Gδ +/- theorem dense_sInter_of_open Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/hausdorff_dimension.lean +/- theorem dimH_bUnion +/- theorem dimH_countable +/- theorem dimH_sUnion Modified src/topology/metric_space/kuratowski.lean Modified src/topology/subset_properties.lean +/- theorem sigma_compact_space.of_countable 2022-06-22 18:31:20 d8fc588 refactor(data/finite/card): split from `basic` (#14885) ESTIMATED CHANGES Modified src/data/finite/basic.lean - theorem finite.card_eq - theorem finite.card_eq_zero_iff - theorem finite.card_le_of_embedding - theorem finite.card_le_of_injective - theorem finite.card_le_of_surjective - theorem finite.card_le_one_iff_subsingleton - theorem finite.card_option - theorem finite.card_pos_iff - theorem finite.card_subtype_le - theorem finite.card_subtype_lt - theorem finite.card_sum - def finite.equiv_fin - def finite.equiv_fin_of_card_eq - theorem finite.one_lt_card - theorem finite.one_lt_card_iff_nontrivial - theorem nat.card_eq Added src/data/finite/card.lean + theorem finite.card_eq + theorem finite.card_eq_zero_iff + theorem finite.card_le_of_embedding + theorem finite.card_le_of_injective + theorem finite.card_le_of_surjective + theorem finite.card_le_one_iff_subsingleton + theorem finite.card_option + theorem finite.card_pos_iff + theorem finite.card_subtype_le + theorem finite.card_subtype_lt + theorem finite.card_sum + def finite.equiv_fin + def finite.equiv_fin_of_card_eq + theorem finite.one_lt_card + theorem finite.one_lt_card_iff_nontrivial + theorem nat.card_eq 2022-06-22 18:31:18 c2719ad feat(topology/basic): `sum.elim` of locally finite set families is locally finite (#14826) ESTIMATED CHANGES Modified src/order/filter/small_sets.lean + theorem filter.frequently_small_sets + theorem filter.frequently_small_sets_mem Modified src/topology/basic.lean + theorem locally_finite.eventually_finite + theorem locally_finite.preimage_continuous + theorem locally_finite.sum_elim 2022-06-22 18:31:17 44bb35e feat({algebra/big_operators/basic,data/rat/cast}): Missing cast lemmas (#14824) `rat.cast_sum`, `rat.cast_prod` and `nat`, `int` lemmas about `multiset` and `list` big operators. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem int.cast_list_prod + theorem int.cast_list_sum + theorem int.cast_multiset_prod + theorem int.cast_multiset_sum +/- theorem int.cast_prod +/- theorem int.cast_sum + theorem nat.cast_list_prod + theorem nat.cast_list_sum + theorem nat.cast_multiset_prod + theorem nat.cast_multiset_sum +/- theorem nat.cast_prod +/- theorem nat.cast_sum Modified src/data/finsupp/basic.lean + theorem rat.cast_finsupp_prod + theorem rat.cast_finsupp_sum Modified src/data/rat/cast.lean +/- theorem rat.cast_div +/- def rat.cast_hom +/- theorem rat.cast_inv + theorem rat.cast_list_prod + theorem rat.cast_list_sum +/- theorem rat.cast_mk + theorem rat.cast_multiset_prod + theorem rat.cast_multiset_sum +/- theorem rat.cast_pow + theorem rat.cast_prod + theorem rat.cast_sum +/- theorem rat.coe_cast_hom 2022-06-22 16:29:05 38642ef chore(data/rat): rename `data.rat.basic` to `data.rat.defs` (#14895) This is a preparatory step for PR #14893 that moves only the `field ℚ` instance (and its small set of dependencies) back to `data.rat.basic`; doing this in two moves should produce a neater set of diffs. ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified archive/imo/imo2013_q5.lean Modified src/algebraic_geometry/EllipticCurve.lean Renamed src/data/rat/basic.lean to src/data/rat/defs.lean Modified src/data/rat/meta_defs.lean Modified src/data/rat/order.lean Modified test/rewrite_search/rewrite_search.lean 2022-06-22 16:29:04 f57c0cd chore(algebra/{group_power,order}): split off field lemmas (#14849) I want to refer to the rational numbers in the definition of a field, meaning we can't have `algebra.field.basic` in the transitive imports of `data.rat.basic`. This is half of rearranging those imports: remove the definition of a field from the dependencies of basic lemmas about `nsmul`, `npow`, `zsmul` and `zpow`. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean - theorem nat.cast_le_pow_div_sub - theorem nat.cast_le_pow_sub_div_sub Modified src/algebra/group_with_zero/power.lean - theorem pow_minus_two_nonneg Added src/algebra/order/field_pow.lean + theorem nat.cast_le_pow_div_sub + theorem nat.cast_le_pow_sub_div_sub + theorem pow_minus_two_nonneg Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/specific_limits/normed.lean 2022-06-22 13:46:51 d939b0e feat(topology/vector_bundle/hom): define the vector bundle of continuous linear maps (#14541) * The changes in `topology/fiber_bundle` are not necessary for this PR, but perhaps nice additions * Co-authored by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> * Co-authored by: Patrick Massot ESTIMATED CHANGES Modified src/topology/fiber_bundle.lean + theorem topological_fiber_bundle.pretrivialization.symm_apply_apply + theorem topological_fiber_bundle.pretrivialization.target_inter_preimage_symm_source_eq + theorem topological_fiber_bundle.pretrivialization.trans_source + theorem topological_fiber_bundle.trivialization.continuous_at_of_comp_left + theorem topological_fiber_bundle.trivialization.continuous_at_of_comp_right + theorem topological_fiber_prebundle.continuous_on_of_comp_right Modified src/topology/vector_bundle/basic.lean Added src/topology/vector_bundle/hom.lean + def bundle.continuous_linear_map.topological_vector_prebundle + def bundle.continuous_linear_map + def topological_vector_bundle.pretrivialization.continuous_linear_map + theorem topological_vector_bundle.pretrivialization.continuous_linear_map_apply + def topological_vector_bundle.pretrivialization.continuous_linear_map_coord_change + theorem topological_vector_bundle.pretrivialization.continuous_linear_map_coord_change_apply + theorem topological_vector_bundle.pretrivialization.continuous_linear_map_symm_apply' + theorem topological_vector_bundle.pretrivialization.continuous_linear_map_symm_apply + theorem topological_vector_bundle.pretrivialization.continuous_on_continuous_linear_map_coord_change + theorem topological_vector_bundle.trivialization.base_set_continuous_linear_map + def topological_vector_bundle.trivialization.continuous_linear_map + theorem topological_vector_bundle.trivialization.continuous_linear_map_apply 2022-06-22 08:58:26 ad49768 feat(set_theory/surreal/basic): define map `surreal →+o game` (#14783) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem surreal.nat_to_game + theorem surreal.one_to_game + def surreal.to_game + theorem surreal.zero_to_game 2022-06-22 04:11:06 61b837f feat(combinatorics/simple_graph/connectivity): Connectivity is a graph property (#14865) `simple_graph.preconnected` and `simple_graph.connected` are preserved under graph isomorphisms. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.connected.map + theorem simple_graph.iso.connected_iff + theorem simple_graph.iso.preconnected_iff + theorem simple_graph.preconnected.map 2022-06-22 02:09:00 f3cd150 fix(tactic/apply_fun.lean): instantiate mvars in apply_fun (#14882) Fixes leanprover-community/lean#733 ESTIMATED CHANGES Modified src/tactic/apply_fun.lean Modified test/apply_fun.lean 2022-06-21 16:31:41 3b6552e chore(linear_algebra/alternating): more lemmas about `curry_left` (#14844) This follows on from #14802 ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.curry_left_add + theorem alternating_map.curry_left_comp_alternating_map + theorem alternating_map.curry_left_comp_linear_map + theorem alternating_map.curry_left_smul + theorem alternating_map.curry_left_zero Modified src/linear_algebra/exterior_algebra/basic.lean + theorem exterior_algebra.ι_multi_succ_apply + theorem exterior_algebra.ι_multi_succ_curry_left + theorem exterior_algebra.ι_multi_zero_apply 2022-06-21 16:31:40 d953773 feat(data/finsupp/basic): make `prod_add_index_of_disjoint` to_additive (#14786) Adds lemma `sum_add_index_of_disjoint (h : disjoint f1.support f2.support) (g : α → M → β) : (f1 + f2).sum g = f1.sum g + f2.sum g` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean 2022-06-21 16:31:39 3e66afe feat(data/sigma): add reflected instance (#14764) ESTIMATED CHANGES Modified src/data/sigma/basic.lean 2022-06-21 16:31:38 b779513 feat(order/conditionally_complete_lattice): add `cInf_le_cInf'` (#14719) A version of `cInf_le_cInf` for `conditionally_complete_linear_order_bot` ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem cInf_le_cInf' 2022-06-21 14:57:41 2d70b94 golf(data/polynomial): factorization into linear factors when #roots=degree (#14862) + Golf the proofs of `prod_multiset_X_sub_C_of_monic_of_roots_card_eq` and `C_leading_coeff_mul_prod_multiset_X_sub_C` and move them from *splitting_field.lean* to *ring_division.lean*; instead of using the former to deduce the latter as is currently done in mathlib, we prove the latter first and deduce the former easily. Remove the less general auxiliary, `private` `_of_field` versions. + Move `pairwise_coprime_X_sub` from *field_division.lean* to *ring_division.lean*. Rename it to `pairwise_coprime_X_sub_C` to conform with existing convention. Golf its proof using the more general new lemma `is_coprime_X_sub_C_of_is_unit_sub`. + Golf `monic.irreducible_of_irreducible_map`, but it's essentially the same proof. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean - theorem polynomial.pairwise_coprime_X_sub Modified src/data/polynomial/ring_division.lean + theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C + theorem polynomial.is_coprime_X_sub_C_of_is_unit_sub + theorem polynomial.pairwise_coprime_X_sub_C + theorem polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq Modified src/field_theory/fixed.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean - theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C - theorem polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq 2022-06-21 14:57:40 ee12362 feat(topology/metric_space/basic): Add `ball_comm` lemmas (#14858) This adds `closed_ball` and `sphere` comm lemmas to go with the existing `mem_ball_comm`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean +/- theorem metric.mem_ball' +/- theorem metric.mem_closed_ball' + theorem metric.mem_closed_ball_comm + theorem metric.mem_sphere' + theorem metric.mem_sphere_comm Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.mem_ball' + theorem emetric.mem_closed_ball' + theorem emetric.mem_closed_ball_comm 2022-06-21 13:23:46 2b5a577 doc(data/polynomial/div): fix runaway code block (#14864) Also use a fully-qualilfied name for linking ESTIMATED CHANGES Modified src/data/polynomial/div.lean 2022-06-21 13:23:45 65031ca feat(ring_theory/dedekind_domain/ideal): drop an unneeded assumption (#14444) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean +/- theorem ideal.count_normalized_factors_eq + theorem ideal.is_prime_iff_bot_or_prime Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.count_normalized_factors_eq' 2022-06-21 11:26:39 273986a fix(topology/algebra/group_completion): add lemmas about nsmul and zsmul and fix diamonds (#14846) This prevents a diamond forming between `uniform_space.completion.has_scalar` and the default `add_monoid.nsmul` and `sub_neg_monoid.zsmul` fields; by manually defining the latter to match the former. To do this, we add two new instances of `has_uniform_continuous_smul` for nat- and int- actions. To use the existing scalar actions, we had to shuffle the imports around a bit. ESTIMATED CHANGES Modified src/analysis/normed_space/completion.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/uniform_group.lean + theorem uniform_continuous.pow_const + theorem uniform_continuous.zpow_const + theorem uniform_continuous_pow_const + theorem uniform_continuous_zpow_const Modified src/topology/algebra/uniform_mul_action.lean 2022-06-21 11:26:38 2a7bde0 feat(data{finset,set}/pointwise): Pointwise monoids are domains (#14687) `no_zero_divisors`/`no_zero_smul_divisors` instances for `set` and `finset`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean Modified src/data/finset/pointwise.lean Modified src/data/set/pointwise.lean 2022-06-21 09:14:05 481f991 refactor(algebra/{hom/equiv, ring/equiv}): rename `equiv_of_unique_of_unique` to `equiv_of_unique` (#14861) This matches [`equiv.equiv_of_unique`](https://leanprover-community.github.io/mathlib_docs/logic/equiv/basic.html#equiv.equiv_of_unique). ESTIMATED CHANGES Modified src/algebra/hom/equiv.lean + def mul_equiv.mul_equiv_of_unique - def mul_equiv.mul_equiv_of_unique_of_unique Modified src/algebra/ring/equiv.lean + def ring_equiv.ring_equiv_of_unique - def ring_equiv.ring_equiv_of_unique_of_unique 2022-06-21 07:18:59 e1d7cc7 chore(set_theory/game/*): create `pgame` and `natural_ops` locales (#14856) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/birthday.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/ordinal.lean Modified src/set_theory/game/pgame.lean Modified src/set_theory/game/short.lean Modified src/set_theory/ordinal/natural_ops.lean 2022-06-21 07:18:57 67e026c fix(tactic/norm_num): fix bad proof / bad test (#14852) This is a bug in master but it was first noticed in #14683. ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2022-06-21 05:57:01 8ac19d3 chore(data/finsupp/fin): fix spacing (#14860) ESTIMATED CHANGES Modified src/data/finsupp/fin.lean 2022-06-21 04:38:57 326465d chore(set_theory/ordinal/natural_ops): use derive (#14859) ESTIMATED CHANGES Modified src/set_theory/ordinal/natural_ops.lean 2022-06-21 01:37:43 3b5441c feat(data/fintype/basic): equivalence between `finset α` and `set α` for `fintype α` (#14840) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.to_finset_coe + theorem fintype.finset_equiv_set_apply + theorem fintype.finset_equiv_set_symm_apply 2022-06-21 00:01:30 87f4758 feat(polynomial/ring_division): strengthen/generalize various lemmas (#14839) + Generalize the assumption `function.injective f` in `le_root_multiplicity_map` to `map f p ≠ 0`. Strictly speaking this is not a generalization because the trivial case `p = 0` is excluded. If one do want to apply the lemma without assuming `p ≠ 0`, they can use the newly introduced `eq_root_multiplicity_map`, which is a strengthening of the original lemma (with the same hypothesis `function.injective f`). + Extract some common `variables` from four lemmas. + Generalize `eq_of_monic_of_dvd_of_nat_degree_le` to `eq_leading_coeff_mul_of_monic_of_dvd_of_nat_degree_le`: if a polynomial `q` is divisible by a monic polynomial `p` and has degree no greater than `p`, then `q = p`. Also remove the `is_domain` hypothesis and golf the proof. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/multiplicity.20of.20root.20in.20extension.20field/near/286736361) ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.count_map_roots + theorem polynomial.eq_leading_coeff_mul_of_monic_of_dvd_of_nat_degree_le +/- theorem polynomial.eq_of_monic_of_dvd_of_nat_degree_le + theorem polynomial.eq_root_multiplicity_map +/- theorem polynomial.le_root_multiplicity_map +/- theorem polynomial.roots_map_of_injective_card_eq_total_degree 2022-06-20 22:02:23 125055b refactor(data/sym/basic): change notation for sym.cons (#14853) Switch from `::` to `::ₛ` for `sym.cons` so that it no longer conflicts with `list.cons`. This (finally) puts it in line with other notations, like `::ₘ` for `multiset.cons`. ESTIMATED CHANGES Modified src/data/sym/basic.lean +/- theorem sym.coe_cons +/- theorem sym.cons_inj_left +/- theorem sym.cons_inj_right +/- theorem sym.cons_of_coe_eq +/- theorem sym.cons_swap +/- theorem sym.exists_eq_cons_of_succ +/- theorem sym.mem_cons +/- theorem sym.mem_cons_of_mem +/- theorem sym.mem_cons_self +/- theorem sym.repeat_succ 2022-06-20 16:13:29 9df2762 chore(data/nat/totient): golf a proof (#14851) ESTIMATED CHANGES Modified src/data/nat/totient.lean +/- theorem zmod.card_units_eq_totient 2022-06-20 13:49:56 f855a4b feat(order/monotone): Monotonicity of `prod.map` (#14843) If `f` and `g` are monotone/antitone, then `prod.map f g` is as well. ESTIMATED CHANGES Modified src/order/monotone.lean + theorem antitone.imp + theorem antitone.prod_map + theorem monotone.imp + theorem monotone.prod_map +/- theorem monotone_fst +/- theorem monotone_snd + theorem strict_anti.imp + theorem strict_anti.prod_map + theorem strict_mono.imp + theorem strict_mono.prod_map 2022-06-20 13:49:55 66d3f89 feat(logic/unique): functions from a `unique` type is `const` (#14823) + A function `f` from a `unique` type is equal to the constant function with value `f default`, and the analogous heq version for dependent functions. + Also changes `Π a : α, Sort v` in the file to `α → Sort v`. Inspired by https://github.com/leanprover-community/mathlib/pull/14724#discussion_r900542203 ESTIMATED CHANGES Modified src/logic/unique.lean + theorem eq_const_of_unique + theorem heq_const_of_unique +/- theorem pi.default_apply +/- theorem pi.default_def 2022-06-20 13:49:54 0b806ba docs(linear_algebra): refer to `pi.basis_fun` in `pi.basis` (#14505) This is a common question so the more ways we can point to the standard basis, the better! See also Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Standard.20basis ESTIMATED CHANGES Modified src/linear_algebra/std_basis.lean 2022-06-20 11:25:39 c781c0e feat(data/prod/basic): Involutivity of `prod.map` (#14845) If `f` and `g` are involutive, then so is `prod.map f g`. ESTIMATED CHANGES Modified src/data/prod/basic.lean + theorem function.bijective.prod_map +/- theorem function.injective.prod_map + theorem function.involutive.prod_map + theorem function.left_inverse.prod_map + theorem function.right_inverse.prod_map +/- theorem function.surjective.prod_map 2022-06-20 11:25:38 c1abe06 refactor(linear_algebra/exterior_algebra): redefine `exterior_algebra` as `clifford_algebra 0` (#14819) The motivation here is to avoid having to duplicate API between these two types, else we end up having to repeat every definition that works on `clifford_algebra Q` on `exterior_algebra` for the case when `Q = 0`. This also: * Removes `as_exterior : clifford_algebra (0 : quadratic_form R M) ≃ₐ[R] exterior_algebra R M` as the two types are reducibly defeq. * Removes support for working with exterior algebras over semirings; while it is entirely possible to generalize `clifford_algebra` to semirings to make this removal unnecessary, it creates difficulties with elaboration, and the support for semirings was without mathematical motivation in the first place. This is in line with a [vote on Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Exterior.20algebras.20over.20semiring/near/286660821). The consequences are: * A bunch of redundant code can be removed * `x.reverse` and `x.involute` should now work on `x : exterior_algebra R M`. * Future API will extend effortlessly from one to the other ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean - def clifford_algebra.as_exterior Modified src/linear_algebra/exterior_algebra/basic.lean - inductive exterior_algebra.rel +/- def exterior_algebra.ι +/- def exterior_algebra Modified src/linear_algebra/exterior_algebra/grading.lean Modified test/free_algebra.lean 2022-06-20 11:25:37 320ea39 feat(data/dfinsupp/basic): add missing lemmas about `single` (#14815) These lemmas were missed in #13076: * `comap_domain_single` * `comap_domain'_single` * `sigma_curry_single` * `sigma_uncurry_single` * `extend_with_single_zero` * `extend_with_zero` These are useful since many induction principles replace a generic `dfinsupp` with `dfinsupp.single`. ESTIMATED CHANGES Modified src/data/dfinsupp/basic.lean + theorem dfinsupp.comap_domain'_single + theorem dfinsupp.comap_domain_single + theorem dfinsupp.extend_with_single_zero + theorem dfinsupp.extend_with_zero + theorem dfinsupp.sigma_curry_single + theorem dfinsupp.sigma_uncurry_single 2022-06-20 11:25:36 c5e13ba feat(algebra/order/pointwise): Supremum of pointwise operations (#13669) Pointwise operations of sets distribute over the (conditional) supremum/infimum. ESTIMATED CHANGES Modified src/algebra/order/pointwise.lean + theorem Inf_div + theorem Inf_inv + theorem Inf_mul + theorem Inf_one + theorem Sup_div + theorem Sup_inv + theorem Sup_mul + theorem Sup_one + theorem cInf_div + theorem cInf_inv + theorem cInf_mul + theorem cInf_one + theorem cSup_div + theorem cSup_inv + theorem cSup_mul + theorem cSup_one 2022-06-20 09:15:57 f9c339e feat(group_theory/group_action/sigma): Scalar action on a sigma type (#14825) `(Π i, has_scalar α (β i)) → has_scalar α (Σ i, β i)` and similar. ESTIMATED CHANGES Modified src/group_theory/group_action/pi.lean Modified src/group_theory/group_action/prod.lean Added src/group_theory/group_action/sigma.lean + theorem sigma.smul_def + theorem sigma.smul_mk Modified src/group_theory/group_action/sum.lean 2022-06-20 09:15:55 ff40b2c chore(algebra/group/basic): lemmas about `bit0`, `bit1`, and addition (#14798) ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem bit0_add + theorem bit0_sub + theorem bit1_add' + theorem bit1_add + theorem bit1_sub Modified src/data/nat/basic.lean + theorem nat.bit_add' + theorem nat.bit_add 2022-06-20 09:15:53 df50b88 feat(order/filter/bases): basis for directed (b)infi of filters (#14775) ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis_binfi_of_directed' + theorem filter.has_basis_binfi_of_directed + theorem filter.has_basis_infi_of_directed' + theorem filter.has_basis_infi_of_directed 2022-06-20 09:15:51 2604c04 feat(number_theory/number_field): add definitions and results about embeddings (#14749) We consider the embeddings of a number field into an algebraic closed field (of char. 0) and prove some results about those. We also prove the ```number_field``` instance for ```adjoint_root``` of an irreducible polynomial of `ℚ[X]`. From flt-regular ESTIMATED CHANGES Modified src/number_theory/number_field.lean + theorem number_field.embeddings.card + theorem number_field.embeddings.eq_roots 2022-06-20 09:15:48 8263a4b refactor(analysis/complex/upper_half_plane): move topology to a new file (#14748) Also add some instances and lemmas about topology on the upper half plane. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/basic.lean Added src/analysis/complex/upper_half_plane/topology.lean + theorem upper_half_plane.continuous_coe + theorem upper_half_plane.continuous_im + theorem upper_half_plane.continuous_re + theorem upper_half_plane.embedding_coe + theorem upper_half_plane.open_embedding_coe 2022-06-20 09:15:46 804afcb feat(geometry/manifold/diffeomorph): some additions needed for smooth vector bundles (#14738) * Define `diffeomorph.prod_comm`, `diffeomorph.prod_congr`, `diffeomorph.prod_assoc` * Prove `cont_mdiff_on.comp_cont_mdiff` * In `fiber_bundle`, define some lemmas for `local_triv_at` that were already there for `local_triv` * Yes, this PR does a couple different things, but it is still very small * This is part of #14412 ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff.lean + theorem cont_mdiff_on.comp_cont_mdiff + theorem smooth_on.comp_smooth Modified src/geometry/manifold/diffeomorph.lean + theorem diffeomorph.coe_prod_comm + theorem diffeomorph.coe_prod_congr + def diffeomorph.prod_assoc + def diffeomorph.prod_comm + theorem diffeomorph.prod_comm_symm + def diffeomorph.prod_congr + theorem diffeomorph.prod_congr_symm Modified src/topology/fiber_bundle.lean +/- theorem topological_fiber_bundle_core.local_triv_at_apply + theorem topological_fiber_bundle_core.local_triv_at_apply_mk + theorem topological_fiber_bundle_core.local_triv_symm_apply - theorem topological_fiber_bundle_core.local_triv_symm_fst + theorem topological_fiber_bundle_core.mem_local_triv_at_source + theorem topological_fiber_bundle_core.mem_local_triv_at_target Modified src/topology/vector_bundle/basic.lean +/- theorem topological_vector_bundle_core.local_triv_at_apply + theorem topological_vector_bundle_core.local_triv_at_apply_mk + def topological_vector_bundle_core.to_topological_fiber_bundle_core - def topological_vector_bundle_core.to_topological_vector_bundle_core 2022-06-20 09:15:45 04f4505 feat(analysis/convex/join): Join of sets (#14676) Define the join of two sets as the union of all segments between them. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/analysis/convex/hull.lean + theorem convex_hull_convex_hull_union_left + theorem convex_hull_convex_hull_union_right + theorem convex_hull_pair +/- theorem convex_hull_singleton + theorem segment_subset_convex_hull Added src/analysis/convex/join.lean + theorem convex_hull_insert + theorem convex_hull_union + def convex_join + theorem convex_join_Union_left + theorem convex_join_Union_right + theorem convex_join_assoc + theorem convex_join_assoc_aux + theorem convex_join_comm + theorem convex_join_convex_join_convex_join_comm + theorem convex_join_empty_left + theorem convex_join_empty_right + theorem convex_join_left_comm + theorem convex_join_mono + theorem convex_join_mono_left + theorem convex_join_mono_right + theorem convex_join_right_comm + theorem convex_join_segment_singleton + theorem convex_join_segments + theorem convex_join_singleton_left + theorem convex_join_singleton_right + theorem convex_join_singleton_segment + theorem convex_join_singletons + theorem convex_join_subset + theorem convex_join_subset_convex_hull + theorem convex_join_union_left + theorem convex_join_union_right + theorem mem_convex_join + theorem segment_subset_convex_join + theorem subset_convex_join_left + theorem subset_convex_join_right 2022-06-20 07:16:13 2903674 refactor(order/conditionally_complete_lattice): tweak `well_founded.conditionally_complete_linear_order_with_bot` (#14706) We change the `well_founded` assumption on `well_founded.conditionally_complete_linear_order_bot` to an equivalent but more convenient `is_well_order` typeclass assumption. As such, we place it in the `is_well_order` namespace. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean Modified src/order/well_founded.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/ordinal/basic.lean 2022-06-20 04:10:04 ae5b695 refactor(number_theory/cyclotomic/*): refactor the definition of is_cyclotomic_extension (#14463) We modify the definition of `is_cyclotomic_extension`, requiring the existence of a primitive root of unity rather than a root of the cyclotomic polynomial. This removes almost all the `ne_zero` assumptions. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem char_p.pow_prime_pow_mul_eq_one_iff Modified src/algebra/ne_zero.lean + theorem ne_zero.nat_of_ne_zero Modified src/number_theory/cyclotomic/basic.lean +/- theorem is_alg_closed.is_cyclotomic_extension +/- theorem is_cyclotomic_extension.adjoin_primitive_root_eq_top +/- theorem is_cyclotomic_extension.adjoin_roots_cyclotomic_eq_adjoin_root_cyclotomic + theorem is_cyclotomic_extension.ne_zero' + theorem is_cyclotomic_extension.ne_zero + theorem is_cyclotomic_extension.subsingleton_iff +/- theorem is_cyclotomic_extension.trans +/- theorem is_primitive_root.adjoin_is_cyclotomic_extension Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/gal.lean +/- theorem is_cyclotomic_extension.from_zeta_aut_spec Modified src/number_theory/cyclotomic/primitive_roots.lean + theorem is_cyclotomic_extension.aeval_zeta +/- theorem is_cyclotomic_extension.finrank +/- theorem is_cyclotomic_extension.prime_ne_two_norm_zeta_sub_one +/- theorem is_cyclotomic_extension.prime_ne_two_pow_norm_zeta_pow_sub_one +/- theorem is_cyclotomic_extension.prime_ne_two_pow_norm_zeta_sub_one +/- theorem is_cyclotomic_extension.two_pow_norm_zeta_sub_one + theorem is_cyclotomic_extension.zeta_is_root - theorem is_cyclotomic_extension.zeta_primitive_root - theorem is_cyclotomic_extension.zeta_spec' +/- theorem is_cyclotomic_extension.zeta_spec +/- theorem is_primitive_root.minpoly_sub_one_eq_cyclotomic_comp +/- theorem is_primitive_root.pow_sub_one_norm_prime_ne_two +/- theorem is_primitive_root.pow_sub_one_norm_prime_pow_ne_two +/- theorem is_primitive_root.pow_sub_one_norm_prime_pow_of_one_le +/- theorem is_primitive_root.pow_sub_one_norm_two +/- theorem is_primitive_root.sub_one_norm_prime +/- theorem is_primitive_root.sub_one_norm_prime_ne_two +/- theorem is_primitive_root.sub_one_norm_two Modified src/number_theory/cyclotomic/rat.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean +/- theorem polynomial.eval_one_cyclotomic_not_prime_pow Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.ne_zero' + theorem mem_roots_of_unity' + theorem mem_roots_of_unity_prime_pow_mul_iff 2022-06-20 00:03:55 10a5275 feat(analysis/normed/group/basic): `isometry.norm_map_of_map_zero` (#14836) Add the lemma that an isometry of `semi_normed_group`s that preserves 0 preserves the norm. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem isometry.norm_map_of_map_zero 2022-06-19 23:24:05 cf118ee feat(analysis/complex/upper_half_plane): add `upper_half_plane.mk` (#14795) ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane/basic.lean + theorem upper_half_plane.coe_mk + def upper_half_plane.mk + theorem upper_half_plane.mk_coe + theorem upper_half_plane.mk_im + theorem upper_half_plane.mk_re + theorem upper_half_plane.re_add_im 2022-06-19 17:24:08 26279c5 chore(algebraic_geometry/function_field): fix timeout in `function_field.algebra` (#14830) Reduces `elaboration of function_field.algebra` from ~29.3s to ~0.4s. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/deterministic.20timeout/near/286714162) ESTIMATED CHANGES Modified src/algebraic_geometry/function_field.lean 2022-06-19 16:13:12 65c9ffb feat(topology/algebra/infinite_sum) Sums over Z vs sums over N (#14667) This PR adds some functions for handling infinite sums indexed by the integers, relating them to sums over the naturals. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.int_rec + theorem has_sum.nonneg_add_neg + theorem has_sum.pos_add_zero_add_neg + theorem has_sum.sum_nat_of_sum_int 2022-06-19 12:34:38 f460576 feat(group_theory/group_action/sum): Scalar action on a sum of types (#14818) `has_scalar α β → has_scalar α γ → has_scalar α (β ⊕ γ)` and similar. ESTIMATED CHANGES Added src/group_theory/group_action/sum.lean + theorem sum.smul_def + theorem sum.smul_inl + theorem sum.smul_inr + theorem sum.smul_swap 2022-06-19 09:55:31 5dabef8 feat(set_theory/game/basic): Basic lemmas on `inv` (#13840) Note that we've redefined `inv` so that `inv x = 0` when `x ≈ 0`. This is because, in order to lift it to an operation on surreals, we need to prove that equivalent numeric games give equivalent numeric values, and this isn't the case otherwise. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + def pgame.inv'_one + theorem pgame.inv'_one_equiv + def pgame.inv'_zero + theorem pgame.inv'_zero_equiv + theorem pgame.inv_eq_of_equiv_zero + theorem pgame.inv_eq_of_lf_zero + theorem pgame.inv_eq_of_pos + def pgame.inv_one + theorem pgame.inv_one_equiv + theorem pgame.inv_val_is_empty + theorem pgame.inv_zero + theorem pgame.zero_lf_inv' 2022-06-19 09:12:48 69686e7 feat(algebra/category/Module): Tannaka duality for rings (#14352) Obviously this is not the most interesting statement that one might label "Tannaka duality", but perhaps it can get the ball rolling. :-) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Added src/algebra/category/Module/tannaka.lean + def ring_equiv_End_forget₂ 2022-06-19 07:01:49 7f358d0 feat(category_theory/preadditive/eilenberg_moore): (Co)algebras over a (co)monad are preadditive (#14811) The category of algebras over an additive monad on a preadditive category is preadditive (and the dual result). ESTIMATED CHANGES Added src/category_theory/preadditive/eilenberg_moore.lean 2022-06-18 19:10:48 0a5b9eb feat(set_theory/game/pgame): tweak lemmas (#14810) This PR does the following: - uncurry `le_of_forall_lf` and `le_of_forall_lt`. - remove `lf_of_exists_le`, as it's made redundant by `lf_of_move_right_le` and `lf_of_le_move_left`. - golfing. ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean Modified src/set_theory/game/pgame.lean +/- theorem pgame.le_of_forall_lf +/- theorem pgame.le_of_forall_lt +/- theorem pgame.lf_move_right_of_le - theorem pgame.lf_of_exists_le +/- theorem pgame.lf_of_le_move_left +/- theorem pgame.lf_of_move_right_le +/- theorem pgame.move_left_lf_of_le Modified src/set_theory/surreal/dyadic.lean 2022-06-18 16:59:43 4264220 feat(analysis/asymptotics): add several lemmas (#14805) Also make `𝕜` explicit in `asymptotics.is_O_with_const_one` and `asymptotics.is_O_const_one`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotic_equivalent.lean + theorem asymptotics.is_o.add_is_equivalent Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/asymptotics/theta.lean + theorem asymptotics.is_Theta.div + theorem asymptotics.is_Theta.trans_eventually_eq + theorem asymptotics.is_Theta_norm_left + theorem asymptotics.is_Theta_norm_right + theorem asymptotics.is_Theta_of_norm_eventually_eq' + theorem asymptotics.is_Theta_of_norm_eventually_eq +/- theorem asymptotics.is_Theta_refl + theorem asymptotics.is_Theta_rfl + theorem filter.eventually_eq.trans_is_Theta 2022-06-18 16:59:42 100975e feat(geometry/euclidean/inversion) new file (#14692) * Define `euclidean_geometry.inversion`. * Prove Ptolemy's inequality. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem dist_div_norm_sq_smul Added src/geometry/euclidean/inversion.lean + theorem euclidean_geometry.dist_center_inversion + theorem euclidean_geometry.dist_inversion_center + theorem euclidean_geometry.dist_inversion_inversion + def euclidean_geometry.inversion + theorem euclidean_geometry.inversion_bijective + theorem euclidean_geometry.inversion_dist_center + theorem euclidean_geometry.inversion_injective + theorem euclidean_geometry.inversion_inversion + theorem euclidean_geometry.inversion_involutive + theorem euclidean_geometry.inversion_of_mem_sphere + theorem euclidean_geometry.inversion_self + theorem euclidean_geometry.inversion_surjective + theorem euclidean_geometry.inversion_vsub_center + theorem euclidean_geometry.mul_dist_le_mul_dist_add_mul_dist 2022-06-18 16:59:41 92d5fdf feat(topology/metric_space/baire): generalize some lemmas (#14633) Add `is_Gδ.dense_{s,b,}Union_interior_of_closed`. ESTIMATED CHANGES Modified src/topology/metric_space/baire.lean + theorem is_Gδ.dense_Union_interior_of_closed + theorem is_Gδ.dense_bUnion_interior_of_closed + theorem is_Gδ.dense_sUnion_interior_of_closed 2022-06-18 16:59:40 f1b0402 feat(tactic/core + test/list_summands): a function extracting a list of summands from an expression (#14617) This meta def is used in #13483, where `move_add` is defined. A big reason for splitting these 5 lines off the main PR is that they are not in a leaf of the import hierarchy: this hopefully saves lots of CI time, when doing trivial changes to the main PR. ESTIMATED CHANGES Modified src/tactic/core.lean Added test/list_summands.lean 2022-06-18 15:26:18 3a8e0a1 feat(group_theory/torsion): define the p-primary component of a group (#14312) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem exists_order_of_eq_prime_pow_iff Modified src/group_theory/torsion.lean + theorem comm_group.primary_component.is_p_group + def comm_group.primary_component + def comm_group.torsion + theorem comm_group.torsion_eq_torsion_submonoid + theorem comm_monoid.primary_component.disjoint + theorem comm_monoid.primary_component.exists_order_of_eq_prime_pow + def comm_monoid.primary_component +/- theorem is_torsion_free.quotient_torsion - def torsion - theorem torsion_eq_torsion_submonoid 2022-06-18 12:50:23 3abee05 chore(order/pfilter): more `principal` API (#14759) `principal` and `Inf` form a Galois coinsertion. ESTIMATED CHANGES Modified src/order/pfilter.lean + theorem order.pfilter.Inf_gc + def order.pfilter.Inf_gi + theorem order.pfilter.antitone_principal + theorem order.pfilter.mem_def + theorem order.pfilter.mem_principal + theorem order.pfilter.principal_le_principal_iff 2022-06-18 09:28:02 39986ae chore(data/nat/lattice): add `nat.infi_of_empty` to match `_root_.infi_of_empty` (#14797) ESTIMATED CHANGES Modified src/data/nat/lattice.lean + theorem nat.infi_of_empty 2022-06-18 08:28:16 7fb5ed2 feat(data/complex/basic): add `complex.abs_le_sqrt_two_mul_max` (#14804) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.abs_le_sqrt_two_mul_max 2022-06-17 23:41:50 bd6b98b feat(linear_algebra/alternating): add more compositional API (#14802) These will be helpful in relating `alternating_map`s to the `exterior_algebra`. This adds: * `alternating_map.curry_left` * `alternating_map.const_linear_equiv_of_is_empty` * `alternating_map.dom_dom_congr` ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean +/- theorem alternating_map.coe_dom_dom_congr + def alternating_map.const_linear_equiv_of_is_empty + def alternating_map.const_of_is_empty + def alternating_map.curry_left + def alternating_map.curry_left_linear_map + theorem alternating_map.curry_left_same + def alternating_map.dom_dom_congr + theorem alternating_map.dom_dom_congr_add + theorem alternating_map.dom_dom_congr_eq_iff + theorem alternating_map.dom_dom_congr_eq_zero_iff + def alternating_map.dom_dom_congr_equiv + theorem alternating_map.dom_dom_congr_perm + theorem alternating_map.dom_dom_congr_refl + theorem alternating_map.dom_dom_congr_trans + theorem alternating_map.dom_dom_congr_zero + theorem alternating_map.map_vec_cons_add + theorem alternating_map.map_vec_cons_smul +/- def alternating_map.of_subsingleton 2022-06-17 23:41:49 0c47657 chore(order/symm_diff): add lemma about `bxor` (#14801) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem bool.compl_eq_bnot + theorem bool.inf_eq_band + theorem bool.sup_eq_bor Modified src/order/symm_diff.lean + theorem bool.symm_diff_eq_bxor 2022-06-17 22:43:38 4ff9e93 feat(analysis/complex/basic): add a few lemmas about `dist` on `complex` (#14796) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.dist_eq_re_im + theorem complex.dist_mk + theorem complex.dist_of_im_eq + theorem complex.dist_of_re_eq + theorem complex.edist_of_im_eq + theorem complex.edist_of_re_eq + theorem complex.nndist_conj_self + theorem complex.nndist_of_im_eq + theorem complex.nndist_of_re_eq + theorem complex.nndist_self_conj 2022-06-17 20:37:43 d2369bc feat(data/set/intervals): add two `ssubset` lemmas (#14793) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Iio_ssubset_Iic_self + theorem set.Ioi_ssubset_Ici_self 2022-06-17 18:57:26 e23de85 feat(algebra/algebra/basic) : add ring_hom.equiv_rat_alg_hom (#14772) Proves the equivalence between `ring_hom` and `rat_alg_hom`. From flt-regular ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.to_ring_hom_to_rat_alg_hom + def ring_hom.equiv_rat_alg_hom + theorem ring_hom.to_rat_alg_hom_to_ring_hom 2022-06-17 17:39:07 260d472 feat(order/topology/**/uniform*): Lemmas about uniform convergence (#14587) To prove facts about uniform convergence, it is often useful to manipulate the various functions without dealing with the ε's and δ's. To do so, you need auxiliary lemmas about adding/muliplying/etc Cauchy sequences. This commit adds several such lemmas. It supports #14090, which we're slowly transforming to use these lemmas instead of doing direct ε/δ manipulation. ESTIMATED CHANGES Modified src/order/filter/bases.lean - theorem filter.prod_assoc Modified src/order/filter/basic.lean + theorem filter.eventually.diag_of_prod + theorem filter.map_swap4_eq_comap + theorem filter.map_swap4_prod + theorem filter.prod_assoc + theorem filter.prod_assoc_symm + theorem filter.tendsto_diag + theorem filter.tendsto_prod_assoc + theorem filter.tendsto_prod_assoc_symm + theorem filter.tendsto_prod_swap + theorem filter.tendsto_swap4_prod Modified src/topology/algebra/uniform_group.lean + theorem tendsto_uniformly_on.div + theorem tendsto_uniformly_on.mul + theorem uniform_cauchy_seq_on.div + theorem uniform_cauchy_seq_on.mul Modified src/topology/continuous_function/algebra.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/uniform_convergence.lean + theorem filter.tendsto.tendsto_uniformly_on_const + theorem tendsto_prod_principal_iff - theorem tendsto_uniformly.comp' - theorem tendsto_uniformly_on.comp' + theorem tendsto_uniformly_on.congr + theorem tendsto_uniformly_on_empty + theorem tendsto_uniformly_on_singleton_iff_tendsto + theorem uniform_cauchy_seq_on.comp + theorem uniform_cauchy_seq_on.mono + theorem uniform_cauchy_seq_on.prod' + theorem uniform_cauchy_seq_on.prod + theorem uniform_cauchy_seq_on.prod_map + theorem uniform_continuous.comp_tendsto_uniformly + theorem uniform_continuous.comp_tendsto_uniformly_on + theorem uniform_continuous.comp_uniform_cauchy_seq_on 2022-06-17 16:27:29 545f0fb feat(category_theory/monad/kleisli): dualise kleisli of monad to cokleisli of comonad (#14799) This PR defines the (co)Kleisli category of a comonad, defines the corresponding adjunction, and proves that it gives rise to the original comonad. ESTIMATED CHANGES Modified src/category_theory/monad/kleisli.lean + def category_theory.cokleisli.adjunction.adj + def category_theory.cokleisli.adjunction.from_cokleisli + def category_theory.cokleisli.adjunction.to_cokleisli + def category_theory.cokleisli.adjunction.to_cokleisli_comp_from_cokleisli_iso_self + def category_theory.cokleisli 2022-06-17 15:08:42 ade72ab refactor(linear_algebra/quadratic_form/basic): generalize to semiring (#14303) This uses a slightly nicer strategy than the one suggested by @adamtopaz [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Exterior.20algebras.20over.20semiring/near/282808284). The main motivation here is to be able to talk about `0 : quadratic_form R M` even when there is no negation available, as that will let us merge `clifford_algebra` (which currently requires negation) and `exterior_algebra` (which does not). It's likely this generalization is broadly not very useful, so this adds a `quadratic_form.of_polar` constructor to preserve the old more convenient API. Note the `.bib` file changed slightly as I ran the autoformatting tool. ESTIMATED CHANGES Modified docs/references.bib Modified src/linear_algebra/quadratic_form/basic.lean +/- theorem quadratic_form.add_lin_mul_lin +/- theorem quadratic_form.basis_repr_eq_of_is_Ortho + theorem quadratic_form.exists_companion +/- def quadratic_form.lin_mul_lin +/- theorem quadratic_form.lin_mul_lin_add +/- theorem quadratic_form.lin_mul_lin_apply +/- theorem quadratic_form.lin_mul_lin_comp + theorem quadratic_form.map_add_add_add_map +/- theorem quadratic_form.map_smul_of_tower + def quadratic_form.of_polar + theorem quadratic_form.polar_add_left_iff + def quadratic_form.polar_bilin +/- def quadratic_form.proj +/- theorem quadratic_form.proj_apply + theorem quadratic_form.some_exists_companion +/- def quadratic_form.sq +/- theorem quadratic_form.to_fun_eq_coe +/- def quadratic_form.weighted_sum_squares +/- structure quadratic_form Modified src/linear_algebra/quadratic_form/isometry.lean Modified src/linear_algebra/quadratic_form/prod.lean 2022-06-17 13:35:37 9c2b890 feat(group_theory/sylow): API lemmas for smul and subtype (#14521) This PR adds some API lemmas for smul and subtype. ESTIMATED CHANGES Modified src/group_theory/subgroup/pointwise.lean + theorem subgroup.conj_smul_le_of_le + theorem subgroup.conj_smul_subgroup_of Modified src/group_theory/sylow.lean + theorem sylow.smul_le + theorem sylow.smul_subtype 2022-06-17 11:03:20 0be36f6 feat(data/list/of_fn): Add `list.of_fn_add` and `list.of_fn_mul` (#14370) This adds some lemmas to split up lists generated over `fin (n + m)` and `fin (n * m)` into their constituent parts. It also adds a congr lemma to allow `list.of_fn (λ i : fin n, _)` to be rewritten into `list.of_fn (λ i : fin m, _)` by `simp` when `h : n = m` is available. I'll need these eventually to prove some things about products of tensor powers. ESTIMATED CHANGES Modified src/data/list/join.lean + theorem list.join_concat Modified src/data/list/of_fn.lean + theorem list.of_fn_add + theorem list.of_fn_congr + theorem list.of_fn_mul' + theorem list.of_fn_mul + theorem list.of_fn_succ' 2022-06-17 08:38:50 e427a0e feat(set/basic, order/boolean_algebra): generalized `compl_comp_compl` (#14784) This PR generalizes `compl_comp_compl` to apply whenever there is a `boolean_algebra` instance. We also make the set parameter of `compl_compl_image` explicit. ESTIMATED CHANGES Modified src/data/set/basic.lean - theorem set.compl_comp_compl +/- theorem set.compl_compl_image Modified src/order/boolean_algebra.lean + theorem compl_comp_compl 2022-06-17 01:10:15 d21469e feat(set_theory/ordinal/basic): improve docs on `lift`, add `simp` lemmas (#14599) This is pretty much the same thing as #14596, just on `ordinal.lift` instead of `cardinal.lift`. ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean +/- theorem ordinal.lift_id' +/- theorem ordinal.lift_lift + theorem ordinal.lift_umax' +/- theorem ordinal.lift_umax + theorem ordinal.lift_uzero 2022-06-16 22:34:16 d0b93fa feat(set_theory/{pgame, basic}): Notation for `relabelling`, golfing (#14155) We introduce the notation `≡r` for relabellings between two pre-games. We also golf many theorems on relabellings. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean +/- theorem pgame.mul_zero_equiv +/- def pgame.mul_zero_relabelling +/- theorem pgame.zero_mul_equiv +/- def pgame.zero_mul_relabelling Modified src/set_theory/game/birthday.lean +/- theorem pgame.relabelling.birthday_congr Modified src/set_theory/game/impartial.lean +/- theorem pgame.impartial.impartial_congr Modified src/set_theory/game/nim.lean +/- def pgame.nim.nim_zero_relabelling Modified src/set_theory/game/pgame.lean +/- def pgame.add_assoc_relabelling +/- def pgame.add_comm_relabelling +/- def pgame.add_zero_relabelling +/- theorem pgame.equiv.is_empty +/- def pgame.neg_add_relabelling +/- def pgame.relabel +/- def pgame.relabelling.add_congr +/- theorem pgame.relabelling.equiv + theorem pgame.relabelling.ge +/- def pgame.relabelling.is_empty +/- theorem pgame.relabelling.le +/- def pgame.relabelling.neg_congr +/- def pgame.relabelling.refl +/- def pgame.relabelling.restricted +/- def pgame.relabelling.sub_congr +/- def pgame.relabelling.symm +/- def pgame.relabelling.trans + def pgame.restricted.trans +/- def pgame.zero_add_relabelling 2022-06-16 19:20:25 ae10dce feat(algebra/direct_sum/decomposition): add decompositions into a direct sum (#14626) This is a constructive version of `direct_sum.is_internal`, and generalizes the existing `graded_algebra`. The main user-facing changes are: * `graded_algebra.decompose` is now spelt `direct_sum.decompose_alg_hom` * The simp normal form of decomposition is now `direct_sum.decompose`. * `graded_algebra.support 𝒜 x` is now spelt `(decompose 𝒜 x).support` * `left_inv` and `right_inv` has swapped, now with meaning "the decomposition is the (left|right) inverse of the canonical map" rather than the other way around To keep this from growing even larger, I've left `graded_algebra.proj` alone for a future refactor. ESTIMATED CHANGES Modified counterexamples/homogeneous_prime_not_prime.lean Added src/algebra/direct_sum/decomposition.lean + def direct_sum.decompose + theorem direct_sum.decompose_add + def direct_sum.decompose_add_equiv + theorem direct_sum.decompose_coe + def direct_sum.decompose_linear_equiv + theorem direct_sum.decompose_neg + theorem direct_sum.decompose_of_mem + theorem direct_sum.decompose_of_mem_ne + theorem direct_sum.decompose_of_mem_same + theorem direct_sum.decompose_smul + theorem direct_sum.decompose_sub + theorem direct_sum.decompose_sum + theorem direct_sum.decompose_symm_add + theorem direct_sum.decompose_symm_neg + theorem direct_sum.decompose_symm_of + theorem direct_sum.decompose_symm_sub + theorem direct_sum.decompose_symm_sum + theorem direct_sum.decompose_symm_zero + theorem direct_sum.decompose_zero + theorem direct_sum.decomposition.decompose'_eq + theorem direct_sum.sum_support_decompose Modified src/algebra/monoid_algebra/grading.lean Modified src/algebraic_geometry/projective_spectrum/topology.lean Modified src/ring_theory/graded_algebra/basic.lean + def direct_sum.decompose_alg_equiv + theorem direct_sum.decompose_mul + theorem direct_sum.decompose_one + theorem direct_sum.decompose_symm_mul + theorem direct_sum.decompose_symm_one - theorem graded_algebra.decompose'_def - def graded_algebra.decompose - theorem graded_algebra.decompose_coe - theorem graded_algebra.decompose_of_mem - theorem graded_algebra.decompose_of_mem_ne - theorem graded_algebra.decompose_of_mem_same - theorem graded_algebra.decompose_symm_of +/- theorem graded_algebra.mem_support_iff - theorem graded_algebra.sum_support_decompose - def graded_algebra.support Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean Modified src/ring_theory/graded_algebra/radical.lean 2022-06-16 19:20:24 67da272 feat(analysis/inner_product_space): Gram-Schmidt Basis (#14514) When the Gram-Schmidt procedure is given a basis, it produces a basis. This pull request also refactors the lemma `gram_schmidt_span`. The new versions of the lemmas cover the span of `Iio`, the span of `Iic` and the span of the complete set of input vectors. I was also able to remove some type classes in the process. ESTIMATED CHANGES Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean + theorem coe_gram_schmidt_basis + theorem gram_schmidt_linear_independent + theorem gram_schmidt_mem_span +/- theorem gram_schmidt_ne_zero +/- theorem gram_schmidt_ne_zero_coe +/- theorem gram_schmidt_normed_unit_length +/- theorem gram_schmidt_normed_unit_length_coe +/- theorem gram_schmidt_orthonormal + theorem gram_schmidt_triangular +/- theorem gram_schmidt_zero + theorem mem_span_gram_schmidt +/- theorem span_gram_schmidt + theorem span_gram_schmidt_Iic + theorem span_gram_schmidt_Iio + theorem span_gram_schmidt_normed + theorem span_gram_schmidt_normed_range Modified src/linear_algebra/span.lean + theorem submodule.span_eq_span 2022-06-16 15:46:22 988f160 fix(data/rat/basic): Remove incorrect simp attribute (#14765) Remove simp attribute that breaks `field_simp`. ESTIMATED CHANGES Modified src/data/rat/basic.lean +/- theorem rat.coe_int_div_eq_mk 2022-06-16 15:46:20 6c46641 feat(linear_algebra/clifford_algebra/fold): Add recursors for folding along generators (#14619) This adds `clifford_algebra.fold{l,r}` and `clifford_algebra.{left,right}_induction`. The former are analogous to `list.foldl` and `list.foldr`, while the latter are two stronger variants of `clifford_algebra.induction`. We don't bother duplicating these for the `exterior_algebra`, as a future PR will make `exterior_algebra = clifford_algebra 0` true by `rfl`. This construction can be used to show: * `clifford_algebra Q ≃ₗ[R] exterior_algebra R M` (when `invertible 2`) * `clifford_algebra Q ≃ₐ[R] clifford_algebra.even (Q' Q)` (where `Q' Q` is a quadratic form over an augmented `V`) These will follow in future PRs. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean Added src/linear_algebra/clifford_algebra/fold.lean + def clifford_algebra.foldl + theorem clifford_algebra.foldl_algebra_map + theorem clifford_algebra.foldl_mul + theorem clifford_algebra.foldl_one + theorem clifford_algebra.foldl_prod_map_ι + theorem clifford_algebra.foldl_reverse + theorem clifford_algebra.foldl_ι + def clifford_algebra.foldr + theorem clifford_algebra.foldr_algebra_map + theorem clifford_algebra.foldr_mul + theorem clifford_algebra.foldr_one + theorem clifford_algebra.foldr_prod_map_ι + theorem clifford_algebra.foldr_reverse + theorem clifford_algebra.foldr_ι + theorem clifford_algebra.left_induction + theorem clifford_algebra.right_induction 2022-06-16 15:46:18 7584a10 feat(set_theory/game/ordinal): addition of ordinals on games matches natural addition (#14298) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean Modified src/set_theory/game/ordinal.lean + theorem ordinal.to_pgame_add + theorem ordinal.to_pgame_add_mk 2022-06-16 12:52:06 b05d845 feat(data/nat/basic): add a few lemmas (#14718) Add a few lemmas about sub and mod. ESTIMATED CHANGES Modified src/algebra/order/sub.lean + theorem tsub_lt_of_lt Modified src/data/nat/basic.lean + theorem nat.mul_add_mod + theorem nat.mul_add_mod_of_lt + theorem nat.pred_eq_self_iff 2022-06-16 11:52:28 3feb151 feat(algebra/homology,category_theory/abelian): exact_comp_mono_iff (#14410) From LTE. ESTIMATED CHANGES Modified src/algebra/homology/exact.lean + theorem category_theory.exact_comp_mono_iff Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.exact_epi_comp_iff 2022-06-16 02:53:25 6834a24 feat(analysis/asymptotics): define `is_Theta` (#14567) * define `f =Θ[l] g` and prove basic properties; * add `is_O.const_smul_left`, `is_o.const_smul_left`; * rename `is_O_const_smul_left_iff` and `is_o_const_smul_left_iff` to `is_O_const_smul_left` and `is_o_const_smul_left`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O.const_smul_left + theorem asymptotics.is_O_const_smul_left - theorem asymptotics.is_O_const_smul_left_iff + theorem asymptotics.is_o.const_smul_left +/- theorem asymptotics.is_o_const_smul_left - theorem asymptotics.is_o_const_smul_left_iff Added src/analysis/asymptotics/theta.lean + theorem asymptotics.is_O.antisymm + theorem asymptotics.is_O.trans_is_Theta + theorem asymptotics.is_Theta.eq_zero_iff + theorem asymptotics.is_Theta.inv + theorem asymptotics.is_Theta.is_O_congr_left + theorem asymptotics.is_Theta.is_O_congr_right + theorem asymptotics.is_Theta.is_bounded_under_le_iff + theorem asymptotics.is_Theta.is_o_congr_left + theorem asymptotics.is_Theta.is_o_congr_right + theorem asymptotics.is_Theta.mono + theorem asymptotics.is_Theta.mul + theorem asymptotics.is_Theta.pow + theorem asymptotics.is_Theta.smul + theorem asymptotics.is_Theta.sup + theorem asymptotics.is_Theta.symm + theorem asymptotics.is_Theta.tendsto_norm_at_top_iff + theorem asymptotics.is_Theta.tendsto_zero_iff + theorem asymptotics.is_Theta.trans + theorem asymptotics.is_Theta.trans_is_O + theorem asymptotics.is_Theta.trans_is_o + theorem asymptotics.is_Theta.zpow + def asymptotics.is_Theta + theorem asymptotics.is_Theta_comm + theorem asymptotics.is_Theta_const_const + theorem asymptotics.is_Theta_const_const_iff + theorem asymptotics.is_Theta_const_mul_left + theorem asymptotics.is_Theta_const_mul_right + theorem asymptotics.is_Theta_const_smul_left + theorem asymptotics.is_Theta_const_smul_right + theorem asymptotics.is_Theta_inv + theorem asymptotics.is_Theta_refl + theorem asymptotics.is_Theta_sup + theorem asymptotics.is_Theta_zero_left + theorem asymptotics.is_Theta_zero_right + theorem asymptotics.is_o.trans_is_Theta 2022-06-16 02:00:04 0053e3c feat(analysis/special_functions/arsinh): add lemmas, review API (#14668) ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem homeomorph.cont_diff_symm + theorem homeomorph.cont_diff_symm_deriv Modified src/analysis/special_functions/arsinh.lean + theorem cont_diff.arsinh + theorem cont_diff_at.arsinh + theorem cont_diff_on.arsinh + theorem cont_diff_within_at.arsinh + theorem continuous.arsinh + theorem continuous_at.arsinh + theorem continuous_on.arsinh + theorem continuous_within_at.arsinh + theorem differentiable.arsinh + theorem differentiable_at.arsinh + theorem differentiable_on.arsinh + theorem differentiable_within_at.arsinh + theorem filter.tendsto.arsinh + theorem has_deriv_at.arsinh + theorem has_deriv_within_at.arsinh + theorem has_fderiv_at.arsinh + theorem has_fderiv_within_at.arsinh + theorem has_strict_deriv_at.arsinh + theorem has_strict_fderiv_at.arsinh + theorem real.arsinh_bijective + theorem real.arsinh_eq_zero_iff + theorem real.arsinh_inj + theorem real.arsinh_injective + theorem real.arsinh_le_arsinh + theorem real.arsinh_lt_arsinh + theorem real.arsinh_neg + theorem real.arsinh_neg_iff + theorem real.arsinh_nonneg_iff + theorem real.arsinh_nonpos_iff + theorem real.arsinh_pos_iff +/- theorem real.arsinh_sinh + theorem real.arsinh_strict_mono + theorem real.arsinh_surjective + theorem real.arsinh_zero + theorem real.cont_diff_arsinh + theorem real.continuous_arsinh + theorem real.cosh_arsinh + theorem real.differentiable_arsinh + theorem real.exp_arsinh + theorem real.has_deriv_at_arsinh + theorem real.has_strict_deriv_at_arsinh +/- theorem real.sinh_arsinh +/- theorem real.sinh_bijective + def real.sinh_equiv + def real.sinh_homeomorph + def real.sinh_order_iso +/- theorem real.sinh_surjective - theorem real.sqrt_one_add_sinh_sq 2022-06-16 02:00:03 22f3255 refactor(set_theory/game/*): Delete `winner.lean` (#14271) The file `winner.lean` currently consists of one-line definitions and theorems, including aliases for basic inequalities. This PR removes the file, inlines all previous definitions and theorems, and golfs various proofs in the process. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean +/- theorem pgame.impartial.add_self + theorem pgame.impartial.equiv_iff_add_equiv_zero' + theorem pgame.impartial.equiv_iff_add_equiv_zero - theorem pgame.impartial.equiv_iff_sum_first_loses + theorem pgame.impartial.equiv_or_fuzzy_zero + theorem pgame.impartial.equiv_zero_iff_ge + theorem pgame.impartial.equiv_zero_iff_le: + theorem pgame.impartial.exists_left_move_equiv_iff_fuzzy_zero + theorem pgame.impartial.exists_right_move_equiv_iff_fuzzy_zero - theorem pgame.impartial.first_loses_symm' - theorem pgame.impartial.first_loses_symm - theorem pgame.impartial.first_wins_symm' - theorem pgame.impartial.first_wins_symm + theorem pgame.impartial.forall_left_moves_fuzzy_iff_equiv_zero + theorem pgame.impartial.forall_right_moves_fuzzy_iff_equiv_zero + theorem pgame.impartial.fuzzy_zero_iff_gf + theorem pgame.impartial.fuzzy_zero_iff_lf - theorem pgame.impartial.good_left_move_iff_first_wins - theorem pgame.impartial.good_right_move_iff_first_wins + theorem pgame.impartial.mk_add_self + theorem pgame.impartial.mk_neg_equiv_self - theorem pgame.impartial.no_good_left_moves_iff_first_loses - theorem pgame.impartial.no_good_right_moves_iff_first_loses +/- theorem pgame.impartial.nonneg +/- theorem pgame.impartial.nonpos + theorem pgame.impartial.not_equiv_zero_iff - theorem pgame.impartial.not_first_loses - theorem pgame.impartial.not_first_wins + theorem pgame.impartial.not_fuzzy_zero_iff - theorem pgame.impartial.winner_cases Modified src/set_theory/game/nim.lean + theorem pgame.nim.add_equiv_zero_iff_eq + theorem pgame.nim.add_fuzzy_zero_iff_ne +/- theorem pgame.nim.non_zero_first_wins - theorem pgame.nim.sum_first_loses_iff_eq - theorem pgame.nim.sum_first_wins_iff_neq - theorem pgame.nim.zero_first_loses Deleted src/set_theory/game/winner.lean - def pgame.first_loses - theorem pgame.first_loses_is_zero - theorem pgame.first_loses_of_equiv - theorem pgame.first_loses_of_equiv_iff - def pgame.first_wins - theorem pgame.first_wins_of_equiv - theorem pgame.first_wins_of_equiv_iff - def pgame.left_wins - theorem pgame.left_wins_of_equiv - theorem pgame.left_wins_of_equiv_iff - theorem pgame.not_first_loses_of_first_wins - theorem pgame.not_first_wins_of_first_loses - theorem pgame.one_left_wins - def pgame.right_wins - theorem pgame.right_wins_of_equiv - theorem pgame.right_wins_of_equiv_iff - theorem pgame.star_first_wins - theorem pgame.winner_cases - theorem pgame.zero_first_loses 2022-06-15 23:36:05 f991b4d chore(*): Bump to Lean 3.43.0 (#14684) Most of the changes in this upgrade are a consequence of https://github.com/leanprover-community/lean/pull/675, which removed almost all of `init/data/set.lean` from lean core so it could be migrated to mathlib. Other relevant core changes are https://github.com/leanprover-community/lean/pull/714, which removed a few order decidability instances, and https://github.com/leanprover-community/lean/pull/711, which caused a docstring to be rejected. ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/lie/free.lean Modified src/algebra/lie/ideal_operations.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed/group/quotient.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/combinatorics/set_family/compression/uv.lean Modified src/data/bool/basic.lean Modified src/data/set/basic.lean - theorem set.compl_eq_compl + def set.image +/- theorem set.mem_powerset +/- theorem set.mem_powerset_iff - theorem set.mem_set_of_eq + def set.powerset +/- theorem set.subset_of_mem_powerset Modified src/data/set/functor.lean Modified src/data/set/lattice.lean +/- theorem set.mem_sUnion + def set.sUnion Modified src/field_theory/adjoin.lean Modified src/field_theory/primitive_element.lean Modified src/group_theory/nielsen_schreier.lean +/- def is_free_groupoid.spanning_tree.End_is_free Modified src/group_theory/order_of_element.lean Modified src/logic/equiv/set.lean Modified src/measure_theory/constructions/borel_space.lean +/- def measurable_equiv.ereal_equiv_real Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/measure/ae_measurable.lean Modified src/model_theory/semantics.lean + theorem first_order.language.mem_complete_theory Modified src/model_theory/syntax.lean Modified src/order/filter/basic.lean + theorem has_subset.subset.eventually_le - theorem set.subset.eventually_le Modified src/order/succ_pred/basic.lean Modified src/ring_theory/local_properties.lean Modified src/set_theory/zfc.lean Modified src/tactic/core.lean Modified src/tactic/localized.lean Modified src/topology/basic.lean Modified src/topology/omega_complete_partial_order.lean +/- theorem Scott.is_open_univ Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/compact_convergence.lean Modified test/back_chaining.lean Modified test/rcases.lean 2022-06-15 21:34:32 c81c6c9 feat(data/polynomial/erase_lead): `lt_nat_degree_of_mem_erase_lead_support` (#14745) This PR adds a lemma `lt_nat_degree_of_mem_erase_lead_support` and adds term-mode proofs of a couple related lemmas. ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean + theorem polynomial.lt_nat_degree_of_mem_erase_lead_support +/- theorem polynomial.nat_degree_not_mem_erase_lead_support 2022-06-15 21:34:31 ea2dbcb feat(analysis/special_functions/integrals): Add integral_cpow (#14491) Also adds various helper lemmas. The purpose of this commit is to provide a computed integral for the `cpow` function. The proof is functionally identical to that of `integral_rpow`, but places a different set of constraints on the various parameters due to different continuity constraints of the cpow function. Some notes on future improvments: * The range of valid integration can be expanded using ae_covers a la #14147 * We currently only contemplate a real argument. However, this should essentially work for any continuous path in the complex plane that avoids the negative real axis. That would require a lot more machinery, not currently in mathlib. Despite these restrictions, why is this important? This, Abel summation, #13500, and #14090 are the key ingredients to bootstrapping Dirichlet series. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_strict_deriv_at.smul_const Modified src/analysis/special_functions/integrals.lean + theorem integral_cpow + theorem interval_integral.interval_integrable_cpow Modified src/analysis/special_functions/pow.lean + theorem continuous_on.cpow_const 2022-06-15 21:34:27 7145043 feat(algebra/group/pi): Technical casework lemma for when two binomials are equal to each other (#14400) This PR adds a technical casework lemma for when two binomials are equal to each other. It will be useful for irreducibility of x^n-x-1. If anyone can see how to golf the proof further, that would be appreciated! ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.mul_single_mul_mul_single_eq_mul_single_mul_mul_single Modified src/data/finsupp/basic.lean + theorem finsupp.single_add_single_eq_single_add_single Modified src/data/polynomial/basic.lean + theorem polynomial.binomial_eq_binomial +/- theorem polynomial.monomial_left_inj +/- theorem polynomial.nat_cast_mul 2022-06-15 18:51:17 665cec2 chore(data/nat/factorization/basic): delete two duplicate lemmas (#14754) Deleting two lemmas introduced in #14461 that are duplicates of lemmas already present, as follows: ``` lemma div_factorization_pos {q r : ℕ} (hr : nat.prime r) (hq : q ≠ 0) : q / (r ^ (q.factorization r)) ≠ 0 := div_pow_factorization_ne_zero r hq ``` ``` lemma ne_dvd_factorization_div {q r : ℕ} (hr : nat.prime r) (hq : q ≠ 0) : ¬(r ∣ (q / (r ^ (q.factorization r)))) := not_dvd_div_pow_factorization hr hq ``` ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean - theorem nat.div_factorization_pos - theorem nat.ne_dvd_factorization_div 2022-06-15 18:51:16 a583244 feat(representation_theory/Action): a few lemmas about the rigid structure of Action (#14620) ESTIMATED CHANGES Modified src/representation_theory/Action.lean + theorem Action.left_dual_V + theorem Action.left_dual_ρ + theorem Action.right_dual_V + theorem Action.right_dual_ρ 2022-06-15 18:51:15 c4ef20e feat(order/rel_classes): an irreflexive order on a subsingleton type is a well order (#14601) This generalizes a previously existing lemma that the empty relation on a subsingleton type is a well order. ESTIMATED CHANGES Modified src/order/rel_classes.lean + theorem empty_relation_apply + theorem eq_empty_relation + theorem not_rel + theorem subsingleton.is_well_order 2022-06-15 17:10:38 94fa33b fix(tactic/congrm): support multiple binders (#14753) ESTIMATED CHANGES Modified src/tactic/congrm.lean Modified test/congrm.lean 2022-06-15 17:10:37 430da94 chore(analysis/normed): move `normed.normed_field` to `normed.field.basic` (#14747) ESTIMATED CHANGES Modified src/analysis/locally_convex/polar.lean Modified src/analysis/locally_convex/weak_dual.lean Renamed src/analysis/normed/normed_field.lean to src/analysis/normed/field/basic.lean Modified src/analysis/normed_space/basic.lean 2022-06-15 17:10:36 6a0f967 feat(data/finite/set): `finite` instances for set constructions (#14673) ESTIMATED CHANGES Modified src/data/finite/basic.lean Added src/data/finite/default.lean Added src/data/finite/set.lean + theorem finite.of_finite_univ + theorem finite.set.finite_bUnion + theorem finite.set.finite_of_finite_image + theorem set.finite_iff_finite + theorem set.finite_of_finite + theorem set.finite_univ_iff 2022-06-15 17:10:35 8eaeec2 chore(a few random files): golfing using the new tactic `congrm` (#14593) This PR is simply intended to showcase some possible applications of the new tactic `congrm`, introduced in #14153. ESTIMATED CHANGES Modified archive/100-theorems-list/45_partition.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/calculus/cont_diff.lean Modified src/analysis/convex/gauge.lean 2022-06-15 14:55:51 34ce784 refactor(algebra/group_with_zero/basic): Golf using division monoid lemmas (#14213) Make all eligible `group_with_zero` lemmas one-liners from `division_monoid` ones and group them within the file. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean +/- theorem div_div_cancel' +/- theorem div_eq_iff +/- theorem div_eq_iff_mul_eq +/- theorem div_eq_of_eq_mul +/- theorem div_eq_one_iff_eq +/- theorem div_helper +/- theorem div_left_inj' +/- theorem div_mul_cancel +/- theorem div_mul_left +/- theorem div_mul_right +/- theorem div_self +/- theorem eq_div_iff +/- theorem eq_div_iff_mul_eq +/- theorem eq_div_of_mul_eq +/- theorem inv_mul_eq_one₀ +/- theorem is_unit_iff_ne_zero +/- theorem mul_div_cancel' +/- theorem mul_div_cancel +/- theorem mul_div_cancel_left +/- theorem mul_div_mul_left +/- theorem mul_div_mul_right +/- theorem mul_eq_one_iff_eq_inv₀ +/- theorem mul_eq_one_iff_inv_eq₀ +/- theorem mul_inv_eq_one₀ +/- theorem mul_left_inj' +/- theorem mul_mul_div +/- theorem mul_one_div_cancel +/- theorem mul_right_inj' +/- theorem one_div_mul_cancel Modified src/data/real/pi/leibniz.lean 2022-06-15 14:55:50 bbca289 feat(dynamics/periodic_pts): `chain.pairwise` on orbit (#12991) We prove that a relation holds pairwise on an orbit iff it does for `f^[n] x` and `f^[n+1] x` for any `n`. ESTIMATED CHANGES Modified src/data/list/cycle.lean + theorem cycle.chain_range_succ Modified src/dynamics/periodic_pts.lean + theorem function.periodic_orbit_chain' + theorem function.periodic_orbit_chain 2022-06-15 13:13:12 4661473 chore(analysis/normed/normed_field): golf 2 proofs (#14746) ESTIMATED CHANGES Modified src/analysis/normed/normed_field.lean 2022-06-15 13:13:11 dccdef6 chore(set_theory/ordinal/basic): golf ordinal addition definition (#14744) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean 2022-06-15 13:13:10 d2bfb32 feat(analysis/normed_space): range of `norm` (#14740) * Add `exists_norm_eq`, `range_norm`, `range_nnnorm`, and `nnnorm_surjective`. * Open `set` namespace. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem exists_norm_eq + theorem nnnorm_surjective + theorem range_nnnorm + theorem range_norm 2022-06-15 13:13:09 2aa3fd9 feat(analysis/convex): a convex set is contractible (#14732) ESTIMATED CHANGES Added src/analysis/convex/contractible.lean 2022-06-15 13:13:08 7430d2d feat(data/complex/exponential): more `simp` lemmas (#14731) Add `simp` attrs and `simp` lemmas. ESTIMATED CHANGES Modified src/data/complex/exponential.lean +/- theorem complex.cosh_add_sinh +/- theorem complex.cosh_of_real_re +/- theorem complex.cosh_sq_sub_sinh_sq +/- theorem complex.cosh_sub_sinh + theorem complex.exp_sub_cosh + theorem complex.exp_sub_sinh +/- theorem complex.of_real_cosh_of_real_re +/- theorem complex.sinh_add_cosh + theorem complex.sinh_sub_cosh +/- theorem real.cosh_add_sinh +/- theorem real.cosh_neg + theorem real.cosh_sq' +/- theorem real.cosh_sq_sub_sinh_sq + theorem real.cosh_sub_sinh + theorem real.exp_sub_cosh + theorem real.exp_sub_sinh +/- theorem real.sinh_add_cosh + theorem real.sinh_lt_cosh + theorem real.sinh_sub_cosh 2022-06-15 13:13:07 fee91d7 feat(data/fin/vec_notation): add has_reflect instance and tests (#14670) ESTIMATED CHANGES Modified src/data/fin/vec_notation.lean Added test/vec_notation.lean 2022-06-15 13:13:06 764d7a9 feat(probability/stopping): first hitting time (#14630) This PR adds the first hitting time (before some time) and proves that it is a stopping time in the discrete case. ESTIMATED CHANGES Added src/probability/hitting_time.lean + theorem measure_theory.hitting_bot_le_iff + theorem measure_theory.hitting_eq_Inf + theorem measure_theory.hitting_is_stopping_time + theorem measure_theory.hitting_le + theorem measure_theory.hitting_le_iff_of_exists + theorem measure_theory.hitting_le_iff_of_lt + theorem measure_theory.hitting_le_of_mem + theorem measure_theory.hitting_lt_iff + theorem measure_theory.hitting_mem_Icc + theorem measure_theory.hitting_mem_set + theorem measure_theory.hitting_of_lt + theorem measure_theory.le_hitting + theorem measure_theory.le_hitting_of_exists 2022-06-15 13:13:04 947c3c6 refactor(order/locally_finite): Allow `finset.Iix`/`finset.Ixi` on empty types (#14430) Define `locally_finite_order_top` and `locally_finite_order_bot` are redefine `Ici`, `Ioi`, `iic`, `Iio` using them. Those new typeclasses are the same as `locally_finite_order` + `order_top`/`order_bot`, except that they allow the empty type, which is a surprisingly useful feature. ESTIMATED CHANGES Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean +/- theorem gram_schmidt_zero Modified src/combinatorics/set_family/lym.lean Modified src/data/fin/interval.lean +/- theorem fin.Ici_eq_finset_subtype +/- theorem fin.Iic_eq_finset_subtype +/- theorem fin.Iio_eq_finset_subtype +/- theorem fin.Ioi_eq_finset_subtype +/- theorem fin.card_Ici +/- theorem fin.card_Ioi +/- theorem fin.card_filter_ge +/- theorem fin.card_filter_gt +/- theorem fin.card_filter_le +/- theorem fin.card_filter_lt_lt +/- theorem fin.card_fintype_Ici +/- theorem fin.card_fintype_Ioi +/- theorem fin.map_subtype_embedding_Icc +/- theorem fin.map_subtype_embedding_Ici +/- theorem fin.map_subtype_embedding_Ico +/- theorem fin.map_subtype_embedding_Iic +/- theorem fin.map_subtype_embedding_Iio +/- theorem fin.map_subtype_embedding_Ioc +/- theorem fin.map_subtype_embedding_Ioi +/- theorem fin.map_subtype_embedding_Ioo Modified src/data/finset/locally_finite.lean +/- theorem finset.Icc_subset_Ici_self +/- theorem finset.Icc_subset_Iic_self +/- theorem finset.Ico_subset_Ici_self +/- theorem finset.Ico_subset_Iio_self +/- theorem finset.Iio_subset_Iic_self +/- theorem finset.Ioc_subset_Iic_self +/- theorem finset.Ioc_subset_Ioi_self +/- theorem finset.Ioi_subset_Ici_self +/- theorem finset.Ioo_subset_Ici_self +/- theorem finset.Ioo_subset_Iic_self +/- theorem finset.Ioo_subset_Iio_self +/- theorem finset.Ioo_subset_Ioi_self +/- theorem finset.filter_ge_eq_Iic +/- theorem finset.filter_gt_eq_Iio +/- theorem finset.filter_le_eq_Ici +/- theorem finset.filter_lt_eq_Ioi Modified src/data/nat/interval.lean +/- theorem nat.card_Iic +/- theorem nat.card_Iio Modified src/order/locally_finite.lean + theorem Icc_of_dual + theorem Ici_of_dual + theorem Ici_to_dual + theorem Ico_of_dual + theorem Iic_of_dual + theorem Iic_to_dual + theorem Iio_of_dual + theorem Iio_to_dual + theorem Ioc_of_dual + theorem Ioi_of_dual + theorem Ioi_to_dual + theorem Ioo_of_dual +/- def finset.Ici +/- def finset.Iic +/- def finset.Iio +/- def finset.Ioi +/- theorem finset.coe_Ici +/- theorem finset.coe_Iic +/- theorem finset.coe_Iio +/- theorem finset.coe_Ioi +/- theorem finset.map_subtype_embedding_Icc + theorem finset.map_subtype_embedding_Ici +/- theorem finset.map_subtype_embedding_Ico + theorem finset.map_subtype_embedding_Iic + theorem finset.map_subtype_embedding_Iio +/- theorem finset.map_subtype_embedding_Ioc + theorem finset.map_subtype_embedding_Ioi +/- theorem finset.map_subtype_embedding_Ioo +/- theorem finset.mem_Ici +/- theorem finset.mem_Iic +/- theorem finset.mem_Iio +/- theorem finset.mem_Ioi + theorem finset.subtype_Ici_eq + theorem finset.subtype_Iic_eq + theorem finset.subtype_Iio_eq + theorem finset.subtype_Ioi_eq + def locally_finite_order_bot.of_Iic' + def locally_finite_order_top.of_Ici' + def locally_finite_order_top.of_Ici + def locally_finite_order_top.of_Iic 2022-06-15 11:13:37 114f543 feat(model_theory/semantics, elementary_maps): Defines elementary equivalence (#14723) Defines elementary equivalence of structures Shows that the domain and codomain of an elementary map are elementarily equivalent. ESTIMATED CHANGES Modified src/model_theory/elementary_maps.lean + theorem first_order.language.elementary_embedding.elementarily_equivalent + theorem first_order.language.elementary_substructure.elementarily_equivalent Modified src/model_theory/semantics.lean + def first_order.language.elementarily_equivalent + theorem first_order.language.elementarily_equivalent_iff 2022-06-15 11:13:36 9c40f30 refactor(set_theory/game/*): fix theorem names (#14685) Some theorems about `exists` had `forall` in the name, other theorems about swapped `≤` or `⧏` used `le` and `lf` instead of `ge` and `gf`. We also golf `le_of_forall_lt`. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/nim.lean Modified src/set_theory/game/pgame.lean + theorem has_le.le.not_gf - theorem has_le.le.not_lf + theorem pgame.le_of_forall_lt +/- theorem pgame.lf.not_equiv' +/- theorem pgame.lf.not_equiv + theorem pgame.lf.not_ge + theorem pgame.lf.not_gt - theorem pgame.lf.not_le - theorem pgame.lf.not_lt + theorem pgame.lf_iff_exists_le - theorem pgame.lf_iff_forall_le +/- theorem pgame.lf_irrefl + theorem pgame.lf_of_exists_le - theorem pgame.lf_of_forall_le Modified src/set_theory/surreal/basic.lean - theorem pgame.le_of_forall_lt + theorem pgame.lt_iff_exists_le - theorem pgame.lt_iff_forall_le + theorem pgame.lt_of_exists_le - theorem pgame.lt_of_forall_le Modified src/set_theory/surreal/dyadic.lean 2022-06-15 11:13:35 c667723 feat(model_theory/syntax, semantics): Mapping formulas given maps on terms and relations (#14466) Defines `first_order.language.bounded_formula.map_term_rel`, which maps formulas given maps on terms and maps on relations. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.cast_le_cast_le + theorem fin.cast_le_comp_cast_le + theorem fin.nat_add_cast_succ + theorem fin.nat_add_last Modified src/data/fin/tuple/basic.lean + theorem fin.snoc_cast_add + theorem fin.snoc_comp_cast_add + theorem fin.snoc_comp_nat_add Modified src/model_theory/semantics.lean + theorem first_order.language.bounded_formula.realize_map_term_rel_add_cast_le + theorem first_order.language.bounded_formula.realize_map_term_rel_id - theorem first_order.language.bounded_formula.realize_subst_aux Modified src/model_theory/syntax.lean + theorem first_order.language.bounded_formula.cast_le_cast_le + theorem first_order.language.bounded_formula.cast_le_comp_cast_le + theorem first_order.language.bounded_formula.cast_le_rfl +/- def first_order.language.bounded_formula.lift_at + def first_order.language.bounded_formula.map_term_rel + def first_order.language.bounded_formula.map_term_rel_equiv + theorem first_order.language.bounded_formula.map_term_rel_id_id_id + theorem first_order.language.bounded_formula.map_term_rel_map_term_rel +/- def first_order.language.bounded_formula.relabel + theorem first_order.language.bounded_formula.relabel_all + theorem first_order.language.bounded_formula.relabel_bot + theorem first_order.language.bounded_formula.relabel_ex + theorem first_order.language.bounded_formula.relabel_falsum + theorem first_order.language.bounded_formula.relabel_imp + theorem first_order.language.bounded_formula.relabel_not +/- def first_order.language.bounded_formula.subst + theorem first_order.language.term.relabel_comp_relabel +/- theorem first_order.language.term.relabel_id + theorem first_order.language.term.relabel_id_eq_id 2022-06-15 11:13:33 ea97606 feat(tactic/ring): recursive ring_nf (#14429) As [reported on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60ring_nf.60.20not.20consistently.20normalizing.3F). This allows `ring_nf` to rewrite inside the atoms of a ring expression, meaning that things like `f (a + b) + c` can simplify in both `+` expressions. ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/ring_theory/trace.lean Modified src/tactic/ring.lean + structure tactic.ring.ring_nf_cfg Modified test/ring.lean 2022-06-15 10:32:10 6e0e270 feat(linear_algebra/matrix): positive definite (#14531) Define positive definite matrices and connect them to positive definiteness of quadratic forms. ESTIMATED CHANGES Modified src/linear_algebra/matrix/hermitian.lean Added src/linear_algebra/matrix/pos_def.lean + def matrix.pos_def + theorem matrix.pos_def_of_to_quadratic_form' + theorem matrix.pos_def_to_quadratic_form' + theorem quadratic_form.pos_def_of_to_matrix' + theorem quadratic_form.pos_def_to_matrix' Modified src/linear_algebra/quadratic_form/basic.lean + theorem quadratic_form.is_symm_to_matrix' 2022-06-15 09:13:28 784c703 docs(topology/basic): Fix typo in library note (#14743) ESTIMATED CHANGES Modified src/topology/basic.lean 2022-06-15 08:32:58 1fbe118 golf(set_theory/game/pgame): golf `neg_le_neg_iff` (#14726) Also in this PR: + slightly golf `subsequent.trans` + replace `->` by `→` + replace a nonterminal `simp` by `dsimp` ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean +/- theorem pgame.left_moves_add_cases +/- theorem pgame.neg_le_neg_iff +/- theorem pgame.neg_lf_neg_iff +/- theorem pgame.right_moves_add_cases +/- theorem pgame.subsequent.trans 2022-06-15 08:32:57 7958e7d chore(analysis/convex/extreme): Make arguments semi-implicit (#14698) Change the definition of `is_extreme` from ``` B ⊆ A ∧ ∀ x₁ x₂ ∈ A, ∀ x ∈ B, x ∈ open_segment 𝕜 x₁ x₂ → x₁ ∈ B ∧ x₂ ∈ B ``` to ``` B ⊆ A ∧ ∀ ⦃x₁⦄, x₁ ∈ A → ∀ ⦃x₂⦄, x₂ ∈ A → ∀ ⦃x⦄, x ∈ B → x ∈ open_segment 𝕜 x₁ x₂ → x₁ ∈ B ∧ x₂ ∈ B ``` and similar for `extreme_points`. ESTIMATED CHANGES Modified src/analysis/convex/extreme.lean 2022-06-15 07:00:25 6b4f3f2 feat(data/nat/prime): prime.even_iff (#14688) Adds a lemma saying that the only even prime is two. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.even_iff 2022-06-15 04:54:47 e86ab0b refactor(src/algebra/order/monoid): make bot_eq_zero a simp lemma only when the order is linear (#14553) ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean - def lie_subalgebra.canonically_ordered_add_monoid Modified src/algebra/module/submodule/pointwise.lean - def submodule.canonically_ordered_add_monoid Modified src/algebra/order/monoid.lean + theorem bot_eq_one' +/- theorem bot_eq_one Modified src/data/multiset/basic.lean + theorem multiset.bot_eq_zero 2022-06-15 04:54:45 b4b816c feat(number_theory/cyclotomic/primitive_roots): generalize finrank lemma (#14550) We generalize certain results from fields to domains. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/gal.lean Modified src/number_theory/cyclotomic/primitive_roots.lean 2022-06-15 03:13:18 38ad656 chore(field_theory/intermediate_field): fix timeout (#14725) + Remove `@[simps]` from `intermediate_field_map` to reduce `decl post-processing of intermediate_field_map` from 18.3s to 46.4ms (on my machine). + Manually provide the two `simp` lemmas previously auto-generated by `@[simps]`. Mathlib compiles even without the two simp lemmas (see commit 1f5a7f1), but I am inclined to keep them in case some other branches/projects are using them. [Zulip reports](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/deterministic.20timeout/near/285792556) about `intermediate_field_map` causing timeout in two separate branches ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean +/- def intermediate_field.intermediate_field_map + theorem intermediate_field.intermediate_field_map_apply_coe + theorem intermediate_field.intermediate_field_map_symm_apply_coe 2022-06-15 03:13:17 dd4d8e6 feat(logic/hydra): basic lemmas on `cut_expand` (#14408) ESTIMATED CHANGES Modified src/logic/hydra.lean +/- def relation.cut_expand + theorem relation.cut_expand_add_left +/- theorem relation.cut_expand_fibration +/- theorem relation.cut_expand_iff + theorem relation.cut_expand_singleton + theorem relation.cut_expand_singleton_singleton + theorem relation.not_cut_expand_zero 2022-06-15 03:13:16 a16f1cf feat(set_theory/game/basic): cast inequalities on `pgame` to `game` (#14405) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + theorem pgame.equiv_iff_game_eq + theorem pgame.fuzzy_iff_game_fuzzy + theorem pgame.le_iff_game_le + theorem pgame.lf_iff_game_lf + theorem pgame.lt_iff_game_lt 2022-06-15 00:05:51 bf2edb5 feat(data/vector/basic): reflected instance for vectors (#14669) This means that a `vector` from a tactic block can be used in an expression. ESTIMATED CHANGES Modified src/data/vector/basic.lean 2022-06-15 00:05:50 b134b2f refactor(set_theory/game/state): rename `pgame.of` to `pgame.of_state` (#14658) This is so that we can redefine `pgame.of x y = {x | y}` in #14659. Further, this is just a much clearer name. ESTIMATED CHANGES Modified src/set_theory/game/domineering.lean +/- def pgame.domineering Modified src/set_theory/game/state.lean - def game.of + def game.of_state - def pgame.left_moves_of - def pgame.left_moves_of_aux + def pgame.left_moves_of_state + def pgame.left_moves_of_state_aux - def pgame.of - def pgame.of_aux - def pgame.of_aux_relabelling + def pgame.of_state + def pgame.of_state_aux + def pgame.of_state_aux_relabelling +/- def pgame.relabelling_move_left +/- def pgame.relabelling_move_right - def pgame.right_moves_of - def pgame.right_moves_of_aux + def pgame.right_moves_of_state + def pgame.right_moves_of_state_aux 2022-06-15 00:05:49 7b2970f feat(set_theory/cardinal/basic): improve docs on `lift`, add `simp` lemmas (#14596) We add some much needed documentation to the `cardinal.lift` API. We also mark a few extra lemmas with `simp`. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.lift_id' +/- theorem cardinal.lift_umax' +/- theorem cardinal.lift_umax 2022-06-15 00:05:48 2e2d515 feat(data/nat/factorization): add lemma `coprime_of_div_pow_factorization` (#14576) Add lemma `coprime_of_div_pow_factorization (hp : prime p) (hn : n ≠ 0) : coprime p (n / p ^ n.factorization p)` Prompted by [this Zulip question](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/div.20by.20p_adic_val_nat.20is.20coprime). ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean + theorem nat.coprime_of_div_pow_factorization 2022-06-14 18:25:05 16728b3 feat(topology/homotopy/contractible): a few convenience lemmas (#14710) If `X` and `Y` are homotopy equivalent spaces, then one is contractible if and only if the other one is contractible. ESTIMATED CHANGES Modified src/topology/homotopy/contractible.lean +/- theorem id_nullhomotopic 2022-06-14 18:25:02 05aa960 feat(analysis/special_functions/trigonometric/deriv): compare `sinh x` with `x` (#14702) ESTIMATED CHANGES Modified src/analysis/special_functions/arsinh.lean - theorem real.sinh_injective Modified src/analysis/special_functions/log/basic.lean + theorem real.cosh_log + theorem real.sinh_log Modified src/analysis/special_functions/trigonometric/deriv.lean + theorem real.cosh_le_cosh + theorem real.cosh_lt_cosh + theorem real.cosh_strict_mono_on + theorem real.one_le_cosh + theorem real.one_lt_cosh + theorem real.self_le_sinh_iff + theorem real.self_lt_sinh_iff + theorem real.sinh_inj + theorem real.sinh_injective + theorem real.sinh_le_self_iff + theorem real.sinh_le_sinh + theorem real.sinh_lt_self_iff + theorem real.sinh_lt_sinh + theorem real.sinh_neg_iff + theorem real.sinh_nonneg_iff + theorem real.sinh_nonpos_iff + theorem real.sinh_pos_iff + theorem real.sinh_sub_id_strict_mono Modified src/data/complex/exponential.lean + theorem real.cosh_abs 2022-06-14 18:24:59 d5c7260 feat(order/monotone): add lemmas about `cmp` (#14689) Also replace `order_dual.cmp_le_flip` with lemmas about `to_dual` and `of_dual`. ESTIMATED CHANGES Modified src/data/ordmap/ordset.lean Modified src/order/compare.lean + theorem cmp_le_of_dual + theorem cmp_le_to_dual + theorem cmp_of_dual + theorem cmp_to_dual + theorem eq_iff_eq_of_cmp_eq_cmp - theorem order_dual.cmp_le_flip + theorem ordering.compares.cmp_eq Modified src/order/monotone.lean + theorem strict_anti.cmp_map_eq + theorem strict_anti_on.cmp_map_eq + theorem strict_mono.cmp_map_eq + theorem strict_mono_on.cmp_map_eq 2022-06-14 17:04:56 6cdc30d golf(set_theory/ordinal/basic): golf theorems on `cardinal.ord` and `ordinal.card` (#14709) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean +/- theorem cardinal.mk_ord_out 2022-06-14 15:42:17 ed033f3 feat(linear_algebra/vandermonde): add lemmas about det equals zero (#14695) Adding two lemmas about when the determinant is zero. I shortened the first with the help of some code I found in `ring_theory/trace.lean`, lemma `det_trace_matrix_ne_zero'`. ESTIMATED CHANGES Modified src/linear_algebra/vandermonde.lean + theorem matrix.det_vandermonde_eq_zero_iff + theorem matrix.det_vandermonde_ne_zero_iff 2022-06-14 15:42:15 41eb958 feat({tactic + test}/congrm, logic/basic): `congrm = congr + pattern-match` (#14153) This PR defines a tactic `congrm`. If the goal is an equality, where the sides are "almost" equal, then calling `congrm ` will produce goals for each place where the given expression has metavariables and will try to close the goal assuming all equalities have been proven. For instance, ``` example {a b : ℕ} (h : a = b) : (λ y : ℕ, ∀ z, a + a = z) = (λ x, ∀ z, b + a = z) := begin congrm λ x, ∀ w, _ + a = w, exact h, end ``` works. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F-tactics/topic/variant.20syntax.20for.20.60congr'.60) ESTIMATED CHANGES Added src/tactic/congrm.lean Added test/congrm.lean 2022-06-14 13:35:08 32d8fc4 feat(topology/homeomorph): add `homeomorph.set.univ` (#14730) ESTIMATED CHANGES Modified src/topology/homeomorph.lean +/- def homeomorph.image + def homeomorph.set.univ 2022-06-14 13:35:07 1c8f995 feat(analysis/special_functions/exp): add `real.exp_half` (#14729) ESTIMATED CHANGES Modified src/analysis/special_functions/exp.lean + theorem real.exp_half 2022-06-14 13:35:06 da5a737 feat(data/complex/basic): ranges of `re`, `im`, `norm_sq`, and `abs` (#14727) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.im_surjective + theorem complex.range_abs + theorem complex.range_im + theorem complex.range_norm_sq + theorem complex.range_re + theorem complex.re_surjective 2022-06-14 13:35:05 b11f8e7 refactor(algebra/order/group): unify instances (#14705) Drop `group.covariant_class_le.to_contravariant_class_le` etc in favor of `group.covconv` (now an instance) and a new similar instance `group.covconv_swap`. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean + theorem group.covariant_swap_iff_contravariant_swap - theorem group.covconv Modified src/algebra/order/group.lean 2022-06-14 13:35:03 2b46992 feat(algebra/algebra/basic): define `alg_hom_class` and `non_unital_alg_hom_class` (#14679) This PR defines `alg_hom_class` and `non_unital_alg_hom_class` as part of the morphism refactor. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_hom.map_add - theorem alg_hom.map_bit0 - theorem alg_hom.map_bit1 - theorem alg_hom.map_finsupp_prod - theorem alg_hom.map_finsupp_sum - theorem alg_hom.map_mul - theorem alg_hom.map_multiset_prod - theorem alg_hom.map_neg - theorem alg_hom.map_one - theorem alg_hom.map_pow - theorem alg_hom.map_prod - theorem alg_hom.map_smul - theorem alg_hom.map_sub - theorem alg_hom.map_sum - theorem alg_hom.map_zero Modified src/algebra/hom/non_unital_alg.lean - theorem non_unital_alg_hom.map_add - theorem non_unital_alg_hom.map_mul - theorem non_unital_alg_hom.map_smul - theorem non_unital_alg_hom.map_zero 2022-06-14 13:35:02 5d18a72 feat(order/{conditionally_complete_lattice,galois_connection): Supremum of `set.image2` (#14307) `Sup` and `Inf` distribute over `set.image2` in the presence of appropriate Galois connections. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem Inf_image2 + theorem Sup_image2 + theorem binfi_prod + theorem bsupr_prod +/- theorem infi_prod +/- theorem supr_prod Modified src/order/conditionally_complete_lattice.lean + theorem cInf_image2_eq_cInf_cInf + theorem cInf_image2_eq_cInf_cSup + theorem cInf_image2_eq_cSup_cInf + theorem cInf_image2_eq_cSup_cSup + theorem cSup_image2_eq_cInf_cInf + theorem cSup_image2_eq_cInf_cSup + theorem cSup_image2_eq_cSup_cInf + theorem cSup_image2_eq_cSup_cSup + theorem csupr_le_iff + theorem csupr_set_le_iff + theorem le_cinfi_iff + theorem le_cinfi_set_iff Modified src/order/galois_connection.lean + theorem Inf_image2_eq_Inf_Inf + theorem Inf_image2_eq_Inf_Sup + theorem Inf_image2_eq_Sup_Inf + theorem Inf_image2_eq_Sup_Sup + theorem Sup_image2_eq_Inf_Inf + theorem Sup_image2_eq_Inf_Sup + theorem Sup_image2_eq_Sup_Inf + theorem Sup_image2_eq_Sup_Sup 2022-06-14 13:35:01 300c439 feat(algebra/lie/weights): the zero root space is the Cartan subalgebra for a Noetherian Lie algebra (#14174) ESTIMATED CHANGES Modified src/algebra/lie/cartan_subalgebra.lean + theorem lie_subalgebra.centralizer_eq_self_of_is_cartan_subalgebra Modified src/algebra/lie/of_associative.lean +/- theorem lie_submodule.coe_map_to_endomorphism_le + theorem lie_submodule.to_endomorphism_comp_subtype_mem + theorem lie_submodule.to_endomorphism_restrict_eq_to_endomorphism Modified src/algebra/lie/weights.lean + theorem lie_algebra.is_cartan_of_zero_root_subalgebra_eq + theorem lie_algebra.zero_root_subalgebra_eq_iff_is_cartan + theorem lie_algebra.zero_root_subalgebra_eq_of_is_cartan - theorem lie_algebra.zero_root_subalgebra_is_cartan_of_eq + theorem lie_module.exists_pre_weight_space_zero_le_ker_of_is_noetherian + theorem lie_module.is_nilpotent_to_endomorphism_weight_space_zero Modified src/linear_algebra/basic.lean + theorem linear_map.pow_apply_mem_of_forall_mem + theorem linear_map.pow_restrict Modified src/linear_algebra/eigenspace.lean + theorem module.End.eigenspace_zero + theorem module.End.generalized_eigenspace_zero 2022-06-14 11:24:09 67dfb57 feat(set_theory/cardinal/cofinality): lemma on subsets of strong limit cardinal (#14442) ESTIMATED CHANGES Modified src/order/rel_classes.lean + theorem set.unbounded_of_is_empty Modified src/set_theory/cardinal/cofinality.lean + theorem cardinal.mk_bounded_subset + theorem cardinal.mk_subset_mk_lt_cof Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.bounded_singleton 2022-06-14 01:31:50 7fee0f1 fix(data/list/nodup): change `Type` to `Type u` (#14721) Change `Type` to `Type u` in `nodup_iff_nth_ne_nth` and two other lemmas added in #14371. ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.nth_le_eq_iff +/- theorem list.some_nth_le_eq Modified src/data/list/nodup.lean +/- theorem list.nodup.nth_le_inj_iff +/- theorem list.nodup_iff_nth_ne_nth 2022-06-14 01:31:49 659983c feat(logic/equiv/basic): add `Pi_comm` aka `function.swap` as an `equiv` (#14561) ESTIMATED CHANGES Modified src/logic/equiv/basic.lean + def equiv.Pi_comm + theorem equiv.Pi_comm_symm 2022-06-14 01:31:48 18bf7af refactor(algebra/order/monoid): Split field of `canonically_ordered_...` (#14556) Replace ``` (le_iff_exists_add : ∀ a b : α, a ≤ b ↔ ∃ c, b = a + c) ``` by ``` (exists_add_of_le : ∀ {a b : α}, a ≤ b → ∃ c, b = a + c) (le_self_add : ∀ a b : α, a ≤ a + b) ``` This makes our life easier because * We can use existing `has_exists_add_of_le` instances to complete the `exists_add_of_le` field, and detect the missing ones. * No need to substitute `b = a + c` every time. ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean + theorem ex_L.exists_add_of_le - theorem ex_L.le_iff_exists_add + theorem ex_L.le_self_add Modified src/algebra/associated.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/module/submodule/pointwise.lean Modified src/algebra/order/monoid.lean +/- theorem le_iff_exists_mul' +/- theorem le_iff_exists_mul +/- theorem le_mul_self +/- theorem le_self_mul +/- theorem self_le_mul_left +/- theorem self_le_mul_right Modified src/algebra/order/nonneg.lean Modified src/algebra/order/pi.lean Modified src/algebra/punit_instances.lean Modified src/data/dfinsupp/order.lean Modified src/data/finsupp/order.lean Modified src/data/multiset/basic.lean Modified src/data/nat/basic.lean Modified src/data/nat/enat.lean Modified src/data/set/semiring.lean Modified src/set_theory/cardinal/basic.lean 2022-06-13 23:08:36 2967fae refactor(data/option/defs): Swap arguments to `option.elim` (#14681) Make `option.elim` a non-dependent version of `option.rec` rather than a non-dependent version of `option.rec_on`. Same for `option.melim`. This replaces `option.cons`, and brings `option.elim` in line with `nat.elim`, `sum.elim`, and `iff.elim`. It addresses the TODO comment added in 22c4291217925c6957c0f5a44551c9917b56c7cf. ESTIMATED CHANGES Modified src/algebra/big_operators/option.lean Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/category_theory/category/PartialFun.lean +/- def Pointed_to_PartialFun Modified src/computability/tm_to_partrec.lean Modified src/data/finset/basic.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/option/basic.lean - def option.cons - theorem option.cons_none_some + theorem option.elim_none_some Modified src/data/option/defs.lean +/- def option.melim Modified src/logic/embedding.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/number_theory/dioph.lean Modified src/tactic/linarith/frontend.lean Modified src/topology/paracompact.lean 2022-06-13 21:43:10 425dfe7 feat(set_theory/game/ordinal): golf `to_pgame_birthday` (#14662) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean 2022-06-13 19:21:13 3afafe6 doc(ring_theory/algebraic): clarify docstring (#14715) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean 2022-06-13 19:21:12 b44e742 feat(category_theory/limits): realise products as pullbacks (#14322) This was mostly done in #10581, this just adds the isomorphisms between the objects produced by the `has_limit` API. ESTIMATED CHANGES Modified src/category_theory/limits/constructions/binary_products.lean + def coprod_iso_pushout + def prod_iso_pullback 2022-06-13 19:21:11 a75460f feat(algebra/module/pid): Classification of finitely generated torsion modules over a PID (#13524) A finitely generated torsion module over a PID is isomorphic to a direct sum of some `R ⧸ R ∙ (p i ^ e i)` where the `p i ^ e i` are prime powers. (TODO : This part should be generalisable to a Dedekind domain, see https://en.wikipedia.org/wiki/Dedekind_domain#Finitely_generated_modules_over_a_Dedekind_domain . Part of the proof is already generalised). More generally, a finitely generated module over a PID is isomorphic to the product of a free module and a direct sum of some `R ⧸ R ∙ (p i ^ e i)`. (TODO : prove this decomposition is unique.) (TODO : deduce the structure theorem for finite(ly generated) abelian groups). - [x] depends on: #13414 - [x] depends on: #14376 - [x] depends on: #14573 ESTIMATED CHANGES Modified docs/overview.yaml Modified src/algebra/big_operators/associated.lean + theorem associates.finset_prod_mk Modified src/algebra/direct_sum/module.lean Added src/algebra/module/dedekind_domain.lean + theorem submodule.is_internal_prime_power_torsion + theorem submodule.is_internal_prime_power_torsion_of_is_torsion_by_ideal Added src/algebra/module/pid.lean + theorem ideal.torsion_of_eq_span_pow_p_order + theorem module.equiv_direct_sum_of_is_torsion + theorem module.equiv_free_prod_direct_sum + theorem module.exists_smul_eq_zero_and_mk_eq + theorem module.p_pow_smul_lift + theorem module.torsion_by_prime_power_decomposition + theorem submodule.is_internal_prime_power_torsion_of_pid Modified src/algebra/module/torsion.lean - theorem ideal.sup_eq_top_iff_is_coprime Modified src/data/multiset/bind.lean + theorem multiset.le_bind Modified src/data/set/basic.lean + theorem set.insert_image_compl_eq_range Modified src/linear_algebra/quotient.lean + def submodule.liftq_span_singleton + theorem submodule.liftq_span_singleton_apply + theorem submodule.mkq_surjective Modified src/ring_theory/ideal/operations.lean + theorem ideal.sup_eq_top_iff_is_coprime 2022-06-13 17:42:16 3225926 feat(category_theory/monoidal): monoidal functors `Type ⥤ C` acting on powers (#14330) ESTIMATED CHANGES Modified src/category_theory/monoidal/types.lean + def category_theory.monoidal_functor.map_pi Modified src/logic/equiv/fin.lean + def equiv.pi_fin_succ 2022-06-13 16:22:21 6ad2799 chore(analysis/locally_convex/weak_dual): golf using `seminorm.comp` (#14699) ESTIMATED CHANGES Modified src/analysis/locally_convex/weak_dual.lean 2022-06-13 15:38:03 aae786c feat(data/zmod/basic): fix a diamond in comm_ring and field (#14712) Before this change the following diamond existed: ```lean import data.zmod.basic variables {p : ℕ} [fact p.prime] example : @euclidean_domain.to_comm_ring _ (@field.to_euclidean_domain _ (zmod.field p)) = zmod.comm_ring p := rfl ``` as the eta-expanded `zmod.comm_ring` was not defeq to itself, as it is defined via cases. We fix this by instead defining each field by cases, which looks worse but at least seems to resolve the issue. See https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/zmod.20comm_ring.20field.20diamond/near/285847071 for discussion ESTIMATED CHANGES Modified src/data/zmod/basic.lean Modified test/instance_diamonds.lean 2022-06-13 14:24:16 aed7f9a feat(topology/uniform_space/basic): add three easy lemmas about `uniform_space.comap` (#14678) These are uniform spaces versions of `filter.comap_inf`, `filter.comap_infi` and `filter.comap_mono`. I split them from #14534 which is already a quite big PR. ESTIMATED CHANGES Modified src/topology/algebra/uniform_field.lean Modified src/topology/uniform_space/basic.lean + theorem uniform_space.comap_inf + theorem uniform_space.comap_infi + theorem uniform_space.comap_mono 2022-06-13 13:01:51 b7b371e doc(field_theory/finite/trace): fix module docstring (#14711) This PR just fixes the docstring in `field_theory/finite/trace.lean`. It was still mentioning a definition that was removed. ESTIMATED CHANGES Modified src/field_theory/finite/trace.lean 2022-06-13 13:01:50 46ac3cb chore(analysis/complex/upper_half_plane): move to a subdirectory (#14704) I'm going to add more files to `analysis/complex/upper_half_plane/` soon. ESTIMATED CHANGES Renamed src/analysis/complex/upper_half_plane.lean to src/analysis/complex/upper_half_plane/basic.lean Modified src/number_theory/modular.lean 2022-06-13 11:39:13 04019de chore(algebra/big_operators/associated,ring_theory/unique_factorization_domain): golf (#14671) ESTIMATED CHANGES Modified src/algebra/big_operators/associated.lean Modified src/ring_theory/unique_factorization_domain.lean +/- theorem unique_factorization_monoid.factors_unique +/- theorem unique_factorization_monoid.prime_of_factor 2022-06-13 09:39:39 b100037 refactor(order/conditionally_complete_lattice): use `order_bot` (#14568) Use `order_bot` instead of an explicit `c = ⊥` argument in `well_founded.conditionally_complete_linear_order_with_bot`. Also reuse `linear_order.to_lattice` and add `well_founded.min_le`. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean Modified src/order/well_founded.lean + theorem well_founded.min_le Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/ordinal/basic.lean 2022-06-13 09:39:38 4b67645 chore(algebra/ring_quot): provide an explicit npow field (#14349) While this probably shouldn't matter since `ring_quot` is irreducible, this matches what we do for `nsmul` and `zsmul`. ESTIMATED CHANGES Modified src/algebra/ring_quot.lean + theorem ring_quot.pow_quot 2022-06-13 08:58:22 716824d feat(set_theory/surreal/dyadic): tweak API + golf (#14649) This PR does the following changes: - Get rid of `pgame.half`, as it's def-eq to `pow_half 1`, which has strictly more API. - Fix the docstring on `pow_half`, which incorrectly stated `pow_half 0 = 0`. - Remove `simp` from some type equality lemmas. - Remove the redundant theorems `pow_half_move_left'` and `pow_half_move_right'`. - Add instances for left and right moves of `pow_half`. - Rename `zero_lt_pow_half` to `pow_half_pos`. - Prove `pow_half_le_one` and `pow_half_succ_lt_one`. - Make arguments explicit throughout. - Golf proofs throughout. ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean - theorem pgame.birthday_half Modified src/set_theory/game/pgame.lean - def pgame.half - theorem pgame.half_add_half_equiv_one - theorem pgame.half_left_moves - theorem pgame.half_lt_one - theorem pgame.half_move_left - theorem pgame.half_move_right - theorem pgame.half_right_moves Modified src/set_theory/surreal/basic.lean - theorem pgame.numeric_half Modified src/set_theory/surreal/dyadic.lean +/- theorem pgame.add_pow_half_succ_self_eq_pow_half + theorem pgame.birthday_half + theorem pgame.half_add_half_equiv_one +/- theorem pgame.numeric_pow_half + theorem pgame.pow_half_le_one +/- theorem pgame.pow_half_left_moves - theorem pgame.pow_half_move_left' +/- theorem pgame.pow_half_move_left - theorem pgame.pow_half_move_right' - theorem pgame.pow_half_move_right + theorem pgame.pow_half_pos - theorem pgame.pow_half_right_moves +/- theorem pgame.pow_half_succ_le_pow_half + theorem pgame.pow_half_succ_lt_one +/- theorem pgame.pow_half_succ_lt_pow_half + theorem pgame.pow_half_succ_move_right + theorem pgame.pow_half_succ_right_moves + theorem pgame.pow_half_zero + theorem pgame.pow_half_zero_right_moves +/- theorem pgame.zero_le_pow_half - theorem pgame.zero_lt_pow_half - theorem surreal.add_half_self_eq_one +/- theorem surreal.double_pow_half_succ_eq_pow_half - def surreal.half +/- theorem surreal.nsmul_pow_two_pow_half' +/- theorem surreal.nsmul_pow_two_pow_half +/- def surreal.pow_half - theorem surreal.pow_half_one 2022-06-13 03:45:17 dc9eab6 feat(tactic/lift): generalize pi.can_lift to Sort (#14700) ESTIMATED CHANGES Modified src/tactic/lift.lean 2022-06-12 20:34:14 8fb92bf feat(measure_theory/integral/circle_integral): add lemma `circle_map_nmem_ball` (#14643) The lemma `set.ne_of_mem_nmem` is unrelated except that both of these should be helpful for: https://github.com/leanprover-community/mathlib/pull/13885 ESTIMATED CHANGES Modified src/measure_theory/integral/circle_integral.lean + theorem circle_map_ne_mem_ball + theorem circle_map_not_mem_ball 2022-06-12 16:53:57 d6eb634 feat(number_theory/legendre_symbol/auxiliary, *): add/move lemmas in/to various files, delete `auxiliary.lean` (#14572) This is the first PR in a series that will culminate in providing the proof of Quadratic Reciprocity using Gauss sums. Here we just add some lemmas to the file `auxiliary.lean` that will be used in new code later. We also generalize the lemmas `neg_one_ne_one_of_char_ne_two` and `neg_ne_self_of_char_ne_two` from finite fields to more general rings. See [this Zulipt topic](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Quadratic.20Hilbert.20symbol.20over.20.E2.84.9A/near/285053214) for more information. **CHANGE OF PLAN:** Following the discussion on Zulip linked to above, the lemmas in `auxiliary.lean` are supposed to be moved to there proper places. I have added suggestions to each lemma or group of lemmas (or definitions) what the proper place could be (in some cases, there are alternatives). Please comment if you do not agree or to support one of the alternatives. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem int.cast_inj_on_of_ring_char_ne_two + theorem is_square_of_char_two' + theorem ring.eq_self_iff_eq_zero_of_char_ne_two + theorem ring.neg_one_ne_one_of_char_ne_two + theorem ring.two_ne_zero Added src/algebra/char_p/char_and_card.lean + theorem is_unit_iff_not_dvd_char + theorem not_is_unit_prime_of_dvd_card + theorem prime_dvd_char_iff_dvd_card Modified src/algebra/group_power/basic.lean + theorem coe_pow_monoid_with_zero_hom + theorem pow_eq_pow_mod + def pow_monoid_with_zero_hom + theorem pow_monoid_with_zero_hom_apply Modified src/algebra/group_with_zero/basic.lean + theorem monoid_with_zero.coe_inverse + def monoid_with_zero.inverse + theorem monoid_with_zero.inverse_apply Modified src/data/nat/modeq.lean + theorem nat.odd_mod_four_iff Modified src/field_theory/finite/basic.lean + theorem finite_field.even_card_iff_char_two + theorem finite_field.even_card_of_char_two + theorem finite_field.exists_nonsquare + theorem finite_field.is_square_iff + theorem finite_field.is_square_of_char_two + theorem finite_field.odd_card_of_char_ne_two + theorem finite_field.pow_dichotomy + theorem finite_field.unit_is_square_iff Added src/field_theory/finite/trace.lean + theorem finite_field.trace_to_zmod_nondegenerate Deleted src/number_theory/legendre_symbol/auxiliary.lean - theorem finite_field.even_card_iff_char_two - theorem finite_field.even_card_of_char_two - theorem finite_field.exists_nonsquare - theorem finite_field.is_square_iff - theorem finite_field.is_square_of_char_two - theorem finite_field.neg_ne_self_of_char_ne_two - theorem finite_field.neg_one_ne_one_of_char_ne_two - theorem finite_field.odd_card_of_char_ne_two - theorem finite_field.pow_dichotomy - theorem finite_field.unit_is_square_iff - theorem is_square_of_char_two' - theorem nat.odd_mod_four_iff Modified src/number_theory/legendre_symbol/quadratic_char.lean Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/legendre_symbol/zmod_char.lean 2022-06-12 16:03:11 97c9ef8 chore(measure_theory): use notation `measurable_set[m]` (#14690) ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/content.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/measure_theory/pi_system.lean Modified src/probability/independence.lean Modified src/probability/integration.lean 2022-06-12 11:53:19 8cad81a feat(data/{finset,set}/basic): More `insert` and `erase` lemmas (#14675) Also turn `finset.disjoint_iff_disjoint_coe` around and change `set.finite.to_finset_insert` take `(insert a s).finite` instead of `s.finite`. ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean Modified src/data/finset/basic.lean + theorem finset.disjoint_coe - theorem finset.disjoint_iff_disjoint_coe + theorem finset.erase_cons + theorem finset.erase_image_subset_image_erase + theorem finset.erase_inj_on' + theorem finset.erase_ssubset_insert + theorem finset.erase_subset_iff_of_mem + theorem finset.filter_inter_distrib +/- theorem finset.image_inter + theorem finset.image_inter_of_inj_on + theorem finset.pair_eq_singleton - theorem finset.pair_self_eq + theorem finset.pairwise_disjoint_coe + theorem finset.subset_insert_iff_of_not_mem Modified src/data/finset/pointwise.lean Modified src/data/fintype/basic.lean + theorem finset.coe_eq_univ +/- theorem finset.eq_univ_iff_forall + theorem finset.eq_univ_of_forall + theorem finset.image_univ_of_surjective Modified src/data/set/basic.lean + theorem set.insert_idem Modified src/data/set/finite.lean + theorem set.finite.to_finset_insert' +/- theorem set.finite.to_finset_insert + theorem set.finite.to_finset_singleton Modified src/data/set/lattice.lean +/- theorem set.Inter_comm + theorem set.Inter₂_comm +/- theorem set.Union_comm + theorem set.Union₂_comm Modified src/group_theory/perm/cycle/basic.lean Modified src/group_theory/perm/support.lean Modified src/logic/basic.lean + theorem exists₂_comm Modified src/order/complete_lattice.lean + theorem infi₂_comm + theorem supr₂_comm 2022-06-12 11:13:54 579d6f9 feat(data/polynomial/laurent): Laurent polynomials are a localization of polynomials (#14489) This PR proves the lemma `is_localization (submonoid.closure ({X} : set R[X])) R[T;T⁻¹]`. ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean + theorem laurent_polynomial.algebra_map_X_pow + theorem laurent_polynomial.algebra_map_eq_to_laurent + theorem laurent_polynomial.is_localization 2022-06-12 08:43:37 4a3b22e feat(number_theory/bernoulli_polynomials): Derivative of Bernoulli polynomial (#14625) Add the statement that the derivative of `bernoulli k x` is `k * bernoulli (k-1) x`. This will be used in a subsequent PR to evaluate the even positive integer values of the Riemann zeta function. ESTIMATED CHANGES Modified src/number_theory/bernoulli_polynomials.lean + theorem polynomial.derivative_bernoulli + theorem polynomial.derivative_bernoulli_add_one 2022-06-12 05:48:33 0926f07 feat(data/polynomial/eval): add some lemmas for `comp` (#14346) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.coe_comp_ring_hom + theorem polynomial.coe_comp_ring_hom_apply + theorem polynomial.list_prod_comp + theorem polynomial.multiset_prod_comp +/- theorem polynomial.prod_comp Modified src/field_theory/abel_ruffini.lean 2022-06-12 05:09:43 eb063e7 feat(category_theory/Fintype): equiv_equiv_iso (#13984) From LTE. ESTIMATED CHANGES Modified src/category_theory/Fintype.lean + def Fintype.equiv_equiv_iso 2022-06-11 15:30:23 053a03d feat(algebra/char_p): `char_p` of a local ring is zero or prime power (#14461) For a local commutative ring the characteristics is either zero or a prime power. ESTIMATED CHANGES Added src/algebra/char_p/local_ring.lean + theorem char_p_zero_or_prime_power Modified src/data/nat/factorization/basic.lean + theorem nat.div_factorization_pos + theorem nat.ne_dvd_factorization_div 2022-06-11 14:33:12 2e3a0a6 feat(analysis/special_functions/log): add `real.log_sqrt` (#14663) ESTIMATED CHANGES Modified src/analysis/special_functions/log/basic.lean + theorem real.log_sqrt 2022-06-11 11:06:30 d1a6dd2 feat(topology/algebra/module/locally_convex): local convexity is preserved by `Inf` and `induced` (#12118) I also generalized slightly `locally_convex_space.of_bases` and changed a `Sort*` to `Type*` in `filter.has_basis_infi` to correctly reflect the universe constraints. ESTIMATED CHANGES Modified src/order/filter/bases.lean +/- theorem filter.has_basis_infi Modified src/topology/algebra/module/locally_convex.lean +/- theorem locally_convex_space.of_bases + theorem locally_convex_space_Inf + theorem locally_convex_space_induced + theorem locally_convex_space_inf + theorem locally_convex_space_infi 2022-06-11 08:59:36 13b999c feat(algebra/{group,hom}/units): Units in division monoids (#14212) Copy over `group_with_zero` lemmas to the more general setting of `division_monoid`. ESTIMATED CHANGES Modified src/algebra/group/units.lean +/- theorem is_unit.mul_left_inj +/- theorem is_unit.mul_right_inj - theorem units.eq_iff_inv_mul - theorem units.inv_eq_of_mul_eq_one_right + theorem units.inv_mul_eq_one +/- theorem units.inv_mul_of_eq + theorem units.mul_eq_one_iff_eq_inv + theorem units.mul_eq_one_iff_inv_eq + theorem units.mul_inv_eq_one +/- theorem units.mul_inv_of_eq Modified src/algebra/group_with_zero/basic.lean - theorem divp_eq_div Modified src/algebra/hom/units.lean + theorem divp_eq_div +/- theorem is_unit.coe_lift_right + theorem is_unit.div + theorem is_unit.inv +/- theorem is_unit.lift_right_inv_mul +/- theorem is_unit.map +/- theorem is_unit.mul_lift_right_inv + def is_unit.unit' Modified src/ring_theory/ideal/local_ring.lean 2022-06-11 02:10:15 050404a feat(group_theory/sylow): Sylow subgroups are Hall subgroups (#14624) This PR adds a lemma stating that Sylow subgroups are Hall subgroups (cardinality is coprime to index). ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.card_coprime_index 2022-06-10 14:50:29 18936e5 feat(topology/uniform_space/equiv): define uniform isomorphisms (#14537) This adds a new file, mostly copy-pasted from `topology/homeomorph`, to analogously define uniform isomorphisms ESTIMATED CHANGES Modified src/data/prod/basic.lean +/- theorem prod.id_prod + theorem prod.map_id Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous_subtype_coe Added src/topology/uniform_space/equiv.lean + def equiv.to_uniform_equiv_of_uniform_inducing + theorem uniform_equiv.apply_symm_apply + def uniform_equiv.change_inv + theorem uniform_equiv.coe_prod_comm + theorem uniform_equiv.coe_prod_congr + theorem uniform_equiv.coe_punit_prod + theorem uniform_equiv.coe_symm_to_equiv + theorem uniform_equiv.coe_to_equiv + theorem uniform_equiv.comap_eq + theorem uniform_equiv.ext + def uniform_equiv.fin_two_arrow + def uniform_equiv.fun_unique + def uniform_equiv.image + theorem uniform_equiv.image_preimage + theorem uniform_equiv.image_symm + theorem uniform_equiv.preimage_image + theorem uniform_equiv.preimage_symm + def uniform_equiv.prod_assoc + def uniform_equiv.prod_comm + theorem uniform_equiv.prod_comm_symm + def uniform_equiv.prod_congr + theorem uniform_equiv.prod_congr_symm + def uniform_equiv.prod_punit + def uniform_equiv.punit_prod + theorem uniform_equiv.range_coe + theorem uniform_equiv.refl_symm + theorem uniform_equiv.self_comp_symm + def uniform_equiv.set_congr + def uniform_equiv.simps.apply + def uniform_equiv.simps.symm_apply + theorem uniform_equiv.symm_apply_apply + theorem uniform_equiv.symm_comp_self + theorem uniform_equiv.to_equiv_injective + theorem uniform_equiv.trans_apply + theorem uniform_equiv.uniform_equiv_mk_coe + theorem uniform_equiv.uniform_equiv_mk_coe_symm + def uniform_equiv.{u} + structure uniform_equiv Modified src/topology/uniform_space/uniform_embedding.lean + theorem uniform_inducing_id + theorem uniform_inducing_of_compose 2022-06-10 12:55:31 8c812fd feat(topology/algebra/order): `coe : ℚ → 𝕜` has dense range (#14635) * add `rat.dense_range_cast`, use it in `rat.dense_embedding_coe_real`; * rename `dense_iff_forall_lt_exists_mem` to `dense_iff_exists_between`; * add `dense_of_exists_between`, use it in `dense_iff_exists_between`. ESTIMATED CHANGES Added src/topology/algebra/order/archimedean.lean + theorem rat.dense_range_cast Modified src/topology/algebra/order/basic.lean + theorem dense_iff_exists_between - theorem dense_iff_forall_lt_exists_mem + theorem dense_of_exists_between Modified src/topology/basic.lean Modified src/topology/instances/rat.lean 2022-06-10 12:55:30 0f5a1f2 feat(data/rat): Add some lemmas to work with num/denom (#14456) ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.add_num_denom' + theorem rat.coe_int_div_eq_mk + theorem rat.mk_div_mk_cancel_left + theorem rat.mk_div_mk_cancel_right + theorem rat.mk_mul_mk_cancel + theorem rat.mul_num_denom' + theorem rat.substr_num_denom' 2022-06-10 10:43:10 95da649 feat(analysis/inner_product_space): Generalize Gram-Schmidt (#14379) The generalisation is to allow a family of vectors indexed by a general indexing set `ι` (carrying appropriate order typeclasses) rather than just `ℕ`. ESTIMATED CHANGES Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/box_integral/partition/tagged.lean Modified src/analysis/inner_product_space/gram_schmidt_ortho.lean +/- theorem gram_schmidt_def' +/- theorem gram_schmidt_def - theorem gram_schmidt_ne_zero' +/- theorem gram_schmidt_ne_zero + theorem gram_schmidt_ne_zero_coe - theorem gram_schmidt_normed_unit_length' +/- theorem gram_schmidt_normed_unit_length + theorem gram_schmidt_normed_unit_length_coe +/- theorem gram_schmidt_orthogonal +/- theorem gram_schmidt_orthonormal +/- theorem gram_schmidt_pairwise_orthogonal +/- theorem gram_schmidt_zero +/- theorem span_gram_schmidt Modified src/data/finset/lattice.lean - theorem finset.sup_le_iff Modified src/data/finset/powerset.lean Modified src/order/rel_classes.lean + def is_well_order.to_has_well_founded Modified src/order/succ_pred/basic.lean + theorem order.Ioi_pred_eq_insert_of_not_is_min 2022-06-10 10:04:50 391d178 feat(set_theory/game/ordinal): golf `to_pgame_injective` (#14661) We also add the `eq_iff` version and remove an outdated todo comment. ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean + theorem ordinal.to_pgame_eq_iff Modified src/set_theory/game/pgame.lean + theorem pgame.equiv_of_eq 2022-06-10 10:04:49 68dc07f refactor(set_theory/game/pgame): rename and add theorems like `-y ≤ -x ↔ x ≤ y` (#14653) For `*` in `le`, `lf`, `lt`, we rename `neg_*_iff : -y * -x ↔ x * y` to `neg_*_neg_iff`, and add the theorems `neg_*_iff : -y * x ↔ x * -y`. We further add many missing corresponding theorems for equivalence and fuzziness. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/birthday.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean + theorem pgame.le_neg_iff + theorem pgame.lf_neg_iff + theorem pgame.lt_neg_iff - theorem pgame.neg_congr + theorem pgame.neg_equiv_iff + theorem pgame.neg_equiv_neg_iff + theorem pgame.neg_equiv_zero_iff + theorem pgame.neg_fuzzy_iff + theorem pgame.neg_fuzzy_neg_iff + theorem pgame.neg_fuzzy_zero_iff +/- theorem pgame.neg_le_iff + theorem pgame.neg_le_neg_iff +/- theorem pgame.neg_lf_iff + theorem pgame.neg_lf_neg_iff +/- theorem pgame.neg_lt_iff + theorem pgame.neg_lt_neg_iff + theorem pgame.zero_equiv_neg_iff + theorem pgame.zero_fuzzy_neg_iff Modified src/set_theory/surreal/basic.lean 2022-06-10 07:36:57 a912392 feat(data/fintype/basic): add `card_subtype_mono` (#14645) This lemma naturally forms a counterpart to existing lemmas. I've also renamed a lemma it uses that didn't seem to fit the existing naming pattern. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem card_subtype_mono 2022-06-10 07:36:56 771f2b7 chore(topology/metric_space/basic): add `metric_space.replace_bornology` (#14638) We have the `pseudo_metric_space` version from #13927, but not the `metric_space` version. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + def metric_space.replace_bornology + theorem metric_space.replace_bornology_eq 2022-06-10 07:36:55 5bccb51 refactor(logic/equiv/basic): tweak lemmas on equivalences between `unique` types (#14605) This PR does various simple and highly related things: - Rename `equiv_of_unique_of_unique` to `equiv_of_unique` and make its arguments explicit, in order to match the lemma `equiv_of_empty` added in #14604. - Rename `equiv_punit_of_unique` to `equiv_punit` and make its argument explicit to match `equiv_pempty`. - Fix their docstrings (which talked about a `subsingleton` type instead of a `unique` one). - Move them much earlier in the file, together with the lemmas on empty types. - Golf `prop_equiv_punit`. ESTIMATED CHANGES Modified src/algebra/hom/equiv.lean Modified src/group_theory/perm/cycle/type.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/logic/equiv/basic.lean + def equiv.equiv_of_unique + def equiv.equiv_punit - def equiv.true_equiv_punit - def equiv_of_unique_of_unique - def equiv_punit_of_unique Modified src/logic/equiv/fin.lean Modified src/measure_theory/measurable_space.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/game/nim.lean 2022-06-10 07:36:53 7691821 feat(data/polynomial/derivative): reduce assumptions (#14338) The only changes here are to relax typeclass assumptions. Specifically these changes relax `comm_semiring` to `semiring` in: * polynomial.derivative_eval * polynomial.derivative_map * polynomial.iterate_derivative_map * polynomial.iterate_derivative_cast_nat_mul and relax `ring` to `semiring` as well as `char_zero` + `no_zero_divisors` to `no_zero_smul_divisors ℕ` in: * polynomial.mem_support_derivative * polynomial.degree_derivative_eq ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean +/- theorem polynomial.degree_derivative_eq +/- theorem polynomial.derivative_map +/- theorem polynomial.iterate_derivative_map +/- theorem polynomial.mem_support_derivative 2022-06-10 07:36:52 39184f4 feat(dynamics/periodic_pts): Orbit under periodic function (#12976) ESTIMATED CHANGES Modified src/dynamics/periodic_pts.lean + theorem function.eq_iff_lt_minimal_period_of_iterate_eq + theorem function.eq_of_lt_minimal_period_of_iterate_eq +/- theorem function.is_periodic_pt.minimal_period_dvd +/- theorem function.is_periodic_pt_iff_minimal_period_dvd +/- theorem function.is_periodic_pt_minimal_period + theorem function.iterate_add_minimal_period_eq - theorem function.iterate_eq_mod_minimal_period - theorem function.iterate_injective_of_lt_minimal_period + theorem function.iterate_mem_periodic_orbit +/- theorem function.iterate_minimal_period + theorem function.iterate_mod_minimal_period_eq + theorem function.le_of_lt_minimal_period_of_iterate_eq + theorem function.mem_periodic_orbit_iff + theorem function.minimal_period_apply + theorem function.minimal_period_apply_iterate + theorem function.minimal_period_eq_zero_iff_nmem_periodic_pts + theorem function.minimal_period_eq_zero_of_nmem_periodic_pts + theorem function.nodup_periodic_orbit + def function.periodic_orbit + theorem function.periodic_orbit_apply_eq + theorem function.periodic_orbit_apply_iterate_eq + theorem function.periodic_orbit_def + theorem function.periodic_orbit_eq_cycle_map + theorem function.periodic_orbit_eq_nil_iff_not_periodic_pt + theorem function.periodic_orbit_eq_nil_of_not_periodic_pt + theorem function.periodic_orbit_length + theorem function.self_mem_periodic_orbit Modified src/group_theory/order_of_element.lean 2022-06-10 05:26:20 e3dade3 feat(data/finite/basic): `finite` predicate (#14373) Introduces a `Prop`-valued finiteness predicate on types and adapts some subset of the `fintype` API to get started. Uses `nat.card` as the primary cardinality function. ESTIMATED CHANGES Added src/data/finite/basic.lean + theorem equiv.finite_iff + theorem finite.card_eq + theorem finite.card_eq_zero_iff + theorem finite.card_le_of_embedding + theorem finite.card_le_of_injective + theorem finite.card_le_of_surjective + theorem finite.card_le_one_iff_subsingleton + theorem finite.card_option + theorem finite.card_pos_iff + theorem finite.card_subtype_le + theorem finite.card_subtype_lt + theorem finite.card_sum + def finite.equiv_fin + def finite.equiv_fin_of_card_eq + theorem finite.exists_equiv_fin + theorem finite.exists_max + theorem finite.exists_min + theorem finite.of_bijective + theorem finite.of_equiv + theorem finite.of_fintype + theorem finite.of_injective + theorem finite.of_not_infinite + theorem finite.of_surjective + theorem finite.one_lt_card + theorem finite.one_lt_card_iff_nontrivial + theorem finite.prod_left + theorem finite.prod_right + theorem finite.sum_left + theorem finite.sum_right + theorem finite_iff_nonempty_fintype + theorem finite_or_infinite + def fintype.of_finite + theorem infinite.of_not_finite + theorem nat.card_eq + theorem not_finite + theorem not_finite_iff_infinite + theorem not_infinite_iff_finite + theorem of_subsingleton Modified src/data/nat/totient.lean Modified src/logic/unique.lean + theorem unique_iff_subsingleton_and_nonempty Modified src/set_theory/cardinal/finite.lean + theorem nat.card_congr + theorem nat.card_eq_of_bijective + theorem nat.card_eq_of_equiv_fin + theorem nat.card_eq_one_iff_unique + theorem nat.card_of_is_empty + theorem nat.card_of_subsingleton + theorem nat.card_plift + theorem nat.card_prod + theorem nat.card_ulift + theorem nat.card_unique + def nat.equiv_fin_of_card_pos 2022-06-10 04:32:43 e9d2564 chore(measure_theory): golf (#14657) Also use `@measurable_set α m s` instead of `m.measurable_set' s` in the definition of the partial order on `measurable_space`. This way we can use dot notation lemmas about measurable sets in a proof of `m₁ ≤ m₂`. ESTIMATED CHANGES Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/measure_space_def.lean 2022-06-10 02:04:07 ed2cfce feat(set_theory/ordinal/basic): tweak theorems on order type of empty relation (#14650) We move the theorems on the order type of an empty relation much earlier, and golf them. We also remove other redundant theorems. `zero_eq_type_empty` is made redundant by `type_eq_zero_of_empty`, while `zero_eq_lift_type_empty` is made redundant by the former lemma and `lift_zero`. ESTIMATED CHANGES Modified src/order/rel_iso.lean + def rel_iso.rel_iso_of_is_empty Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.type_eq_zero_iff_is_empty - theorem ordinal.type_eq_zero_of_empty - theorem ordinal.type_ne_zero_iff_nonempty Modified src/set_theory/ordinal/basic.lean + theorem ordinal.type_eq_zero_iff_is_empty + theorem ordinal.type_eq_zero_of_empty + theorem ordinal.type_ne_zero_iff_nonempty + theorem ordinal.type_ne_zero_of_nonempty - theorem ordinal.zero_eq_lift_type_empty - theorem ordinal.zero_eq_type_empty 2022-06-09 23:59:52 2cf4746 chore(analysis/special_functions/gamma): tidy some proofs (#14615) ESTIMATED CHANGES Modified src/analysis/special_functions/gamma.lean 2022-06-09 23:59:51 3afb1fa feat(ci): Add support for "notice"-level messages (#14443) It looks like support for this was added recently, it's now documented at the same link already in our source code. ESTIMATED CHANGES Modified scripts/detect_errors.py 2022-06-09 22:24:53 6e13617 feat(set_theory/ordinal/basic): better definitions for `0` and `1` (#14651) We define the `0` and `1` ordinals as the order types of the empty relation on `pempty` and `punit`, respectively. These definitions are definitionally equal to the previous ones, yet much clearer, for two reasons: - They don't make use of the auxiliary `Well_order` type. - Much of the basic API for these ordinals uses this def-eq anyways. ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean 2022-06-09 22:24:52 c89d319 feat(set_theory/cardinal): add `cardinal.aleph_0_le_mul_iff'` (#14648) This version provides a more useful `iff.mpr`. Also review 2 proofs. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.aleph_0_le_mul_iff' 2022-06-09 22:24:51 405be36 feat(data/matrix): Lemmas about `vec_mul`, `mul_vec`, `dot_product`, `inv` (#14644) ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.dot_product_assoc + theorem matrix.mul_vec_vec_mul + theorem matrix.sub_mul_vec + theorem matrix.sum_elim_dot_product_sum_elim + theorem matrix.vec_mul_mul_vec + theorem matrix.vec_mul_sub Modified src/data/matrix/block.lean + theorem matrix.from_blocks_mul_vec + theorem matrix.vec_mul_from_blocks Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.inv_mul_cancel_left_of_invertible + theorem matrix.inv_mul_cancel_right_of_invertible + theorem matrix.mul_inv_cancel_left_of_invertible + theorem matrix.mul_inv_cancel_right_of_invertible + theorem matrix.mul_nonsing_inv_cancel_left + theorem matrix.mul_nonsing_inv_cancel_right + theorem matrix.nonsing_inv_mul_cancel_left + theorem matrix.nonsing_inv_mul_cancel_right 2022-06-09 22:24:50 3e458e2 chore(topology/sequences): rename variables (#14631) * types `X`, `Y`; * sequence `x : ℕ → X`; * a point `a : X`; * sets `s`, `t`. ESTIMATED CHANGES Modified src/topology/sequences.lean +/- theorem compact_space.tendsto_subseq +/- theorem continuous_iff_seq_continuous +/- theorem is_closed.is_seq_closed +/- theorem is_compact.is_seq_compact +/- theorem is_compact.tendsto_subseq' +/- theorem is_compact.tendsto_subseq +/- theorem is_seq_closed.mem_of_tendsto +/- def is_seq_closed +/- theorem is_seq_closed_iff_is_closed +/- theorem is_seq_closed_of_def +/- theorem is_seq_compact.subseq_of_frequently_in +/- def is_seq_compact +/- theorem lebesgue_number_lemma_seq +/- theorem mem_closure_iff_seq_limit +/- def seq_closure +/- theorem seq_closure_subset_closure +/- theorem seq_compact.lebesgue_number_lemma_of_metric +/- theorem seq_compact_space.tendsto_subseq +/- def seq_continuous +/- theorem subset_seq_closure +/- theorem tendsto_subseq_of_bounded +/- theorem uniform_space.compact_space_iff_seq_compact_space 2022-06-09 19:45:28 81ab992 chore(set_theory/cardinal/basic): tidy lt_wf proof (#14574) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean 2022-06-09 19:45:27 34a9d0d feat(algebra/order/ring): Binary rearrangement inequality (#14478) Extract the binary case of the rearrangement inequality (`a * d + b * c ≤ a * c + b * d` if `a ≤ b` and `c ≤ d`) from the general one. ESTIMATED CHANGES Modified src/algebra/order/module.lean + theorem smul_add_smul_le_smul_add_smul' + theorem smul_add_smul_le_smul_add_smul + theorem smul_add_smul_lt_smul_add_smul' + theorem smul_add_smul_lt_smul_add_smul Modified src/algebra/order/rearrangement.lean Modified src/algebra/order/ring.lean + theorem mul_add_mul_le_mul_add_mul' + theorem mul_add_mul_le_mul_add_mul + theorem mul_add_mul_lt_mul_add_mul' + theorem mul_add_mul_lt_mul_add_mul 2022-06-09 19:45:25 7fbff0f feat(data/nat/choose/central): arity of primes in central binomial coefficients (#14017) Spun off of #8002. Lemmas about the arity of primes in central binomial coefficients. ESTIMATED CHANGES Modified docs/references.bib Modified src/data/nat/choose/central.lean - theorem nat.padic_val_nat_central_binom_le - theorem nat.padic_val_nat_central_binom_of_large_eq_zero - theorem nat.padic_val_nat_central_binom_of_large_le_one Added src/data/nat/choose/factorization.lean + theorem nat.factorization_central_binom_eq_zero_of_two_mul_lt + theorem nat.factorization_central_binom_of_two_mul_self_lt_three_mul + theorem nat.factorization_choose_eq_zero_of_lt + theorem nat.factorization_choose_le_log + theorem nat.factorization_choose_le_one + theorem nat.factorization_choose_of_lt_three_mul + theorem nat.factorization_factorial_eq_zero_of_lt + theorem nat.le_two_mul_of_factorization_central_binom_pos + theorem nat.pow_factorization_choose_le Modified src/data/nat/factorization/basic.lean + theorem nat.factorization_eq_zero_of_lt 2022-06-09 18:12:47 4d4de43 chore(ring_theory/unique_factorization_domain): drop simp annotation for factors_pow (#14646) Followup to https://github.com/leanprover-community/mathlib/pull/14555. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean +/- theorem unique_factorization_monoid.factors_pow 2022-06-09 18:12:46 7b4680f feat(analysis/inner_product_space/pi_L2): Distance formula in the euclidean space (#14642) A few missing results about `pi_Lp 2` and `euclidean_space`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem euclidean_space.dist_eq + theorem euclidean_space.edist_eq + theorem euclidean_space.nndist_eq Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.dist_eq_of_L2 + theorem pi_Lp.edist_eq_of_L2 + theorem pi_Lp.nndist_eq_of_L2 2022-06-09 18:12:45 ac0ce64 feat(special_functions/integrals): exponential of complex multiple of x (#14623) We add an integral for `exp (c * x)` for `c` complex (so this cannot be reduced to integration of `exp x` on the real line). This is useful for Fourier series. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean + theorem integral_exp_mul_complex 2022-06-09 15:38:27 abee649 feat(data/set/intervals): add lemmas about unions of intervals (#14636) ESTIMATED CHANGES Modified src/data/set/intervals/disjoint.lean + theorem set.Union_Icc_left + theorem set.Union_Icc_right + theorem set.Union_Ici + theorem set.Union_Ico_left + theorem set.Union_Ico_right + theorem set.Union_Iic + theorem set.Union_Iio + theorem set.Union_Ioc_left + theorem set.Union_Ioc_right + theorem set.Union_Ioi + theorem set.Union_Ioo_left + theorem set.Union_Ioo_right Modified src/data/set/lattice.lean + theorem set.Inter_union 2022-06-09 15:38:26 e0f3ea3 feat(topology/constructions): add `subtype.dense_iff` (#14632) Also add `inducing.dense_iff`. ESTIMATED CHANGES Modified src/topology/constructions.lean + theorem subtype.dense_iff Modified src/topology/maps.lean + theorem inducing.dense_iff 2022-06-09 15:38:25 48f557d chore(analysis/convex/integral): use `variables` (#14592) * Move some implicit arguments to `variables`. * Move `ae_eq_const_or_exists_average_ne_compl` to the root namespace. * Add `ae_eq_const_or_norm_set_integral_lt_of_norm_le_const`. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean + theorem ae_eq_const_or_exists_average_ne_compl + theorem ae_eq_const_or_norm_set_integral_lt_of_norm_le_const +/- theorem concave_on.average_mem_hypograph +/- theorem concave_on.le_map_average +/- theorem concave_on.le_map_integral +/- theorem concave_on.le_map_set_average +/- theorem concave_on.set_average_mem_hypograph +/- theorem convex.average_mem +/- theorem convex.average_mem_interior_of_set +/- theorem convex.integral_mem +/- theorem convex.set_average_mem +/- theorem convex.set_average_mem_closure +/- theorem convex_on.average_mem_epigraph +/- theorem convex_on.map_average_le +/- theorem convex_on.map_integral_le +/- theorem convex_on.map_set_average_le +/- theorem convex_on.set_average_mem_epigraph - theorem measure_theory.integrable.ae_eq_const_or_exists_average_ne_compl +/- theorem strict_concave_on.ae_eq_const_or_lt_map_average +/- theorem strict_convex.ae_eq_const_or_average_mem_interior +/- theorem strict_convex_on.ae_eq_const_or_map_average_lt 2022-06-09 13:27:25 c0b3ed7 feat(number_theory/padics/padic_val): add `padic_val_nat_def'` and generalise `pow_padic_val_nat_dvd` (#14637) add `padic_val_nat_def' (hn : 0 < n) (hp : p ≠ 1) : ↑(padic_val_nat p n) = multiplicity p n` `pow_padic_val_nat_dvd : p ^ (padic_val_nat p n) ∣ n` holds without the assumption that `p` is prime. ESTIMATED CHANGES Modified src/number_theory/padics/padic_val.lean + theorem padic_val_nat_def' +/- theorem pow_padic_val_nat_dvd +/- theorem range_pow_padic_val_nat_subset_divisors 2022-06-09 13:27:23 dc766dd refactor(group_theory/sylow): Golf proof of `pow_dvd_card_of_pow_dvd_card` (#14622) This PR golfs the proof of `pow_dvd_card_of_pow_dvd_card`. ESTIMATED CHANGES Modified src/group_theory/sylow.lean +/- theorem sylow.pow_dvd_card_of_pow_dvd_card 2022-06-09 13:27:22 cde6e63 feat(analysis/seminorm): removed unnecessary `norm_one_class` arguments (#14614) ESTIMATED CHANGES Modified src/analysis/seminorm.lean +/- theorem balanced_ball_zero +/- theorem seminorm.le_insert' +/- theorem seminorm.le_insert +/- theorem seminorm.nonneg +/- theorem seminorm.sub_rev 2022-06-09 13:27:21 d997baa refactor(logic/equiv/basic): remove `fin_equiv_subtype` (#14603) The types `fin n` and `{m // m < n}` are definitionally equal, so it doesn't make sense to have a dedicated equivalence between them (other than `equiv.refl`). We remove this equivalence and golf the places where it was used. ESTIMATED CHANGES Modified src/computability/primrec.lean Modified src/data/fintype/card.lean Modified src/field_theory/finite/polynomial.lean Modified src/logic/encodable/basic.lean Modified src/logic/equiv/basic.lean - def equiv.fin_equiv_subtype 2022-06-09 13:27:20 c2bb59e feat(algebra/module/torsion.lean): various lemmas about torsion modules (#14573) An intermediate PR for various lemmas about torsion modules needed at #13524 ESTIMATED CHANGES Modified src/algebra/module/torsion.lean + theorem ideal.mem_torsion_of_iff + theorem ideal.quot_torsion_of_equiv_span_singleton_apply_mk + theorem ideal.sup_eq_top_iff_is_coprime + def ideal.torsion_of - theorem mem_torsion_of_iff + theorem module.is_torsion_by_iff_torsion_by_eq_top + theorem module.is_torsion_by_set_iff_is_torsion_by_span + theorem module.is_torsion_by_set_iff_torsion_by_set_eq_top + theorem module.is_torsion_by_singleton_iff + theorem module.is_torsion_by_span_singleton_iff - theorem quot_torsion_of_equiv_span_singleton_apply_mk + theorem submodule.exists_is_torsion_by + theorem submodule.is_torsion_by_ideal_of_finite_of_is_torsion - theorem submodule.is_torsion_by_iff_torsion_by_eq_top - theorem submodule.is_torsion_by_set_iff_is_torsion_by_span - theorem submodule.is_torsion_by_set_iff_torsion_by_set_eq_top - theorem submodule.is_torsion_by_singleton_iff - theorem submodule.is_torsion_by_span_singleton_iff + def submodule.p_order + theorem submodule.pow_p_order_smul + theorem submodule.sup_indep_torsion_by + theorem submodule.sup_indep_torsion_by_ideal + theorem submodule.supr_torsion_by_ideal_eq_torsion_by_infi - theorem submodule.torsion_by_independent + theorem submodule.torsion_by_is_internal + theorem submodule.torsion_by_set_is_internal + theorem submodule.torsion_gc - theorem submodule.torsion_is_internal - def torsion_of Modified src/ring_theory/ideal/operations.lean + theorem ideal.prod_mem_prod 2022-06-09 13:27:19 dfc54a3 feat(combinatorics/ballot): the Ballot problem (#13592) ESTIMATED CHANGES Added archive/100-theorems-list/30_ballot_problem.lean + theorem ballot.ballot_edge + theorem ballot.ballot_neg + theorem ballot.ballot_pos + theorem ballot.ballot_problem' + theorem ballot.ballot_problem + theorem ballot.ballot_same + theorem ballot.count_counted_sequence + theorem ballot.counted_left_zero + theorem ballot.counted_ne_nil_left + theorem ballot.counted_ne_nil_right + theorem ballot.counted_right_zero + def ballot.counted_sequence + theorem ballot.counted_sequence_finite + theorem ballot.counted_sequence_int_neg_counted_succ_succ + theorem ballot.counted_sequence_int_pos_counted_succ_succ + theorem ballot.counted_sequence_nonempty + theorem ballot.counted_succ_succ + theorem ballot.disjoint_bits + theorem ballot.first_vote_neg + theorem ballot.first_vote_pos + theorem ballot.head_mem_of_nonempty + theorem ballot.length_of_mem_counted_sequence + theorem ballot.mem_of_mem_counted_sequence + def ballot.stays_positive + theorem ballot.stays_positive_cons_pos + theorem ballot.stays_positive_nil + theorem ballot.sum_of_mem_counted_sequence Modified docs/100.yaml Modified src/data/list/infix.lean + theorem list.mem_of_mem_suffix Modified src/data/nat/basic.lean + theorem nat.diag_induction Modified src/data/real/ennreal.lean + theorem ennreal.div_eq_div_iff + theorem ennreal.eq_div_iff Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.count_injective_image Modified src/probability/cond_count.lean +/- theorem probability_theory.cond_count_add_compl_eq +/- theorem probability_theory.cond_count_compl 2022-06-09 11:44:36 d51aacb feat(ring_theory/unique_factorization_domain): add some lemmas about … (#14555) ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.factors_mul + theorem unique_factorization_monoid.factors_one + theorem unique_factorization_monoid.factors_pow + theorem unique_factorization_monoid.factors_zero 2022-06-09 09:58:31 dc2f6bb chore(topology/metric_space): remove instances that duplicate lemmas (#14639) We can use the structure projections directly as instances, rather than duplicating them with primed names. This removes; * `metric_space.to_uniform_space'` (was misnamed, now `pseudo_metric_space.to_uniform_space`) * `pseudo_metric_space.to_bornology'` (now `pseudo_metric_space.to_bornology`) * `pseudo_emetric_space.to_uniform_space'` (now `pseudo_metric_space.to_uniform_space`) * `emetric_space.to_uniform_space'` (redundant) Follows up from review comments in #13927 ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/uniform_space/compare_reals.lean 2022-06-09 09:58:30 bc7b342 feat(topology/metric_space/basic): add lemma `exists_lt_mem_ball_of_mem_ball` (#14627) This is apparently necessary in https://github.com/leanprover-community/mathlib/pull/13885 ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.exists_lt_mem_ball_of_mem_ball 2022-06-09 09:58:29 6a1ce4e feat(analysis/seminorm): add a `zero_hom_class` instance and remove `seminorm.zero` (#14613) ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean Modified src/analysis/seminorm.lean 2022-06-09 09:58:28 6826bf0 doc(data/vector3): improve wording (#14610) ESTIMATED CHANGES Modified src/data/vector3.lean 2022-06-09 09:58:27 ab64f63 refactor(algebra/sub{monoid,group,ring,semiring,field}): merge together the `restrict` and `cod_restrict` helpers (#14548) This uses the new subobject typeclasses to merge together: * `monoid_hom.mrestrict`, `monoid_hom.restrict` * `monoid_hom.cod_mrestrict`, `monoid_hom.cod_restrict` * `ring_hom.srestrict`, `ring_hom.restrict`, `ring_hom.restrict_field` * `ring_hom.cod_srestrict`, `ring_hom.cod_restrict`, `ring_hom.cod_restrict_field` For consistency, this also removes the `m` prefix from `mul_hom.mrestrict` ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/category/Ring/constructions.lean Modified src/field_theory/subfield.lean - def ring_hom.cod_restrict_field - def ring_hom.restrict_field - theorem ring_hom.restrict_field_apply Modified src/group_theory/free_product.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/subgroup/basic.lean - def monoid_hom.cod_restrict - theorem monoid_hom.cod_restrict_apply - def monoid_hom.restrict - theorem monoid_hom.restrict_apply Modified src/group_theory/submonoid/operations.lean - def monoid_hom.cod_mrestrict + def monoid_hom.cod_restrict - def monoid_hom.mrestrict - theorem monoid_hom.mrestrict_apply + def monoid_hom.restrict + theorem monoid_hom.restrict_apply Modified src/group_theory/subsemigroup/operations.lean + def mul_hom.cod_restrict - def mul_hom.cod_srestrict + def mul_hom.restrict + theorem mul_hom.restrict_apply - def mul_hom.srestrict - theorem mul_hom.srestrict_apply Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/subring/basic.lean - def ring_hom.cod_restrict' - def ring_hom.restrict - theorem ring_hom.restrict_apply Modified src/ring_theory/subsemiring/basic.lean + def ring_hom.cod_restrict - def ring_hom.cod_srestrict + def ring_hom.restrict + theorem ring_hom.restrict_apply - def ring_hom.srestrict - theorem ring_hom.srestrict_apply 2022-06-09 09:58:26 732b79f feat(order/compactly_generated): an independent subset of a well-founded complete lattice is finite (#14215) ESTIMATED CHANGES Modified src/order/compactly_generated.lean + theorem complete_lattice.well_founded.finite_of_set_independent 2022-06-09 07:52:18 3a95d1d feat(algebra/order/monoid): `zero_le_one_class` instances for `with_top` and `with_bot` (#14640) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean 2022-06-09 05:43:16 971a9b0 feat(logic/equiv/basic): two empty types are equivalent; remove various redundant lemmas (#14604) We prove `equiv_of_is_empty`, which states two empty types are equivalent. This allows us to remove various redundant lemmas. We keep `empty_equiv_empty` and `empty_equiv_pempty` as these specific instantiations of that lemma are widely used. ESTIMATED CHANGES Modified src/logic/equiv/basic.lean - def equiv.empty_equiv_pempty + def equiv.equiv_of_is_empty + def equiv.equiv_pempty - def equiv.false_equiv_empty - def equiv.false_equiv_pempty - def equiv.pempty_equiv_pempty - def equiv.{u' Modified src/set_theory/ordinal/basic.lean 2022-06-09 04:07:37 9f19686 feat(logic/small): generalize + golf (#14584) This PR does the following: - add a lemma `small_lift` - generalize the lemma `small_ulift` - golf `small_self` and `small_max` ESTIMATED CHANGES Modified src/logic/small.lean + theorem small_lift 2022-06-09 01:54:18 b392bb2 feat(data/nat/factorization/basic): two trivial simp lemmas about factorizations (#14634) For any `n : ℕ`, `n.factorization 0 = 0` and `n.factorization 1 = 0` ESTIMATED CHANGES Modified src/data/nat/factorization/basic.lean + theorem nat.factorization_one_right + theorem nat.factorization_zero_right 2022-06-09 01:54:16 4fc3539 refactor(data/finset/nat_antidiagonal): state lemmas with cons instead of insert (#14533) This puts less of a burden on the caller rewriting in the forward direction, as they don't have to prove obvious things about membership when evaluating sums. Since this adds the missing `finset.map_cons`, a number of uses of `multiset.map_cons` now need qualified names. ESTIMATED CHANGES Modified src/algebra/big_operators/nat_antidiagonal.lean Modified src/algebra/polynomial/big_operators.lean Modified src/data/finset/basic.lean + theorem finset.map_cons Modified src/data/finset/fold.lean Modified src/data/finset/nat_antidiagonal.lean +/- theorem finset.nat.antidiagonal_succ' +/- theorem finset.nat.antidiagonal_succ 2022-06-08 23:44:35 0c08bd4 chore(data/set/basic): minor style fixes (#14628) ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.set_of_app_iff +/- theorem set_coe_cast 2022-06-08 20:36:43 c1faa2e feat(linear_algebra/affine_space/affine_subspace/pointwise): Translations are an action on affine subspaces (#14230) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.coe_refl_to_affine_map Modified src/linear_algebra/affine_space/affine_subspace.lean +/- theorem affine_equiv.span_eq_top_iff Added src/linear_algebra/affine_space/pointwise.lean + theorem affine_subspace.coe_pointwise_vadd + theorem affine_subspace.map_pointwise_vadd + theorem affine_subspace.pointwise_vadd_bot + theorem affine_subspace.pointwise_vadd_direction + theorem affine_subspace.pointwise_vadd_span + theorem affine_subspace.vadd_mem_pointwise_vadd_iff 2022-06-08 20:36:42 84a1bd6 refactor(topology/metric_space/basic): add `pseudo_metric_space.to_bornology'` (#13927) * add `pseudo_metric_space.to_bornology'` and `pseudo_metric_space.replace_bornology`; * add `metric.is_bounded_iff` and a few similar lemmas; * fix instances for `subtype`, `prod`, `pi`, and `pi_Lp` to use the correct bornology`; * add `lipschitz_with.to_locally_bounded_map` and `lipschitz_with.comap_cobounded_le`; * add `antilipschitz_with.tendsto_cobounded`. ESTIMATED CHANGES Modified src/analysis/normed_space/enorm.lean +/- def enorm.emetric_space Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.aux_cobounded_eq + def pi_Lp.pseudo_metric_aux Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.tendsto_cobounded Modified src/topology/metric_space/basic.lean + theorem metric.is_bounded_iff + theorem metric.is_bounded_iff_eventually + theorem metric.is_bounded_iff_exists_ge + theorem metric.is_bounded_iff_nndist + def pseudo_metric_space.replace_bornology + theorem pseudo_metric_space.replace_bornology_eq Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_with.coe_to_locally_bounded_map + theorem lipschitz_with.comap_cobounded_le + def lipschitz_with.to_locally_bounded_map 2022-06-08 18:51:48 61df9c6 feat(set_theory/ordinal/basic): tweak `type_def` + golf `type_lt` (#14611) We replace the original, redundant `type_def'` with a new more general lemma. We keep `type_def` as it enables `dsimp`, unlike `type_def'`. We golf `type_lt` using this new lemma. ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean +/- theorem ordinal.type_def' +/- theorem ordinal.type_def 2022-06-08 18:51:32 9c4a3d1 feat(ring_theory/valuation/valuation_subring): define unit group of valuation subring and provide basic API (#14540) This PR defines the unit group of a valuation subring as a multiplicative subgroup of the units of the field. We show two valuation subrings are equivalent iff they have the same unit group. We show the map sending a valuation to its unit group is an order embedding. ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean + theorem valuation.map_one_add_of_lt + theorem valuation.map_one_sub_of_lt Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation_subring.coe_unit_group_mul_equiv_apply + theorem valuation_subring.coe_unit_group_mul_equiv_symm_apply + theorem valuation_subring.eq_iff_unit_group + theorem valuation_subring.mem_unit_group_iff + def valuation_subring.unit_group + theorem valuation_subring.unit_group_injective + theorem valuation_subring.unit_group_le_unit_group + def valuation_subring.unit_group_mul_equiv + def valuation_subring.unit_group_order_embedding + theorem valuation_subring.unit_group_strict_mono 2022-06-08 18:10:02 d315666 feat(model_theory/substructures): tweak universes for `lift_card_closure_le` (#14597) Since `cardinal.lift.{(max u v) u} = cardinal.lift.{v u}`, the latter form should be preferred. ESTIMATED CHANGES Modified src/model_theory/substructures.lean +/- theorem first_order.language.substructure.lift_card_closure_le 2022-06-08 15:58:47 8934884 feat(set_theory/ordinal/basic): `rel_iso.ordinal_type_eq` (#14602) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean + theorem rel_iso.ordinal_type_eq 2022-06-08 15:58:46 09df85f feat(order/rel_classes): any relation on an empty type is a well-order (#14600) ESTIMATED CHANGES Modified src/logic/is_empty.lean + theorem well_founded_of_empty Modified src/order/rel_classes.lean 2022-06-08 15:58:45 201a3f4 chore(*): remove extra parentheses in universe annotations (#14595) We change `f.{(max u v)}` to `f.{max u v}` throughout, and similarly for `imax`. This is for consistency with the rest of the code. Note that `max` and `imax` take an arbitrary number of parameters, so if anyone wants to add a second universe parameter, they'll have to add the parentheses again. ESTIMATED CHANGES Modified src/algebra/category/Module/projective.lean Modified src/category_theory/category/ulift.lean Modified src/category_theory/graded_object.lean Modified src/linear_algebra/dimension.lean Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/cardinal/ordinal.lean Modified src/set_theory/ordinal/basic.lean +/- theorem ordinal.lift_lift Modified src/testing/slim_check/functions.lean 2022-06-08 15:58:43 3e4d6aa feat(algebra/algebra/basic): add instances `char_zero.no_zero_smul_divisors_int`, `char_zero.no_zero_smul_divisors_nat` (#14395) The proofs are taken from #14338 where a specific need for these arose Aside from the new instances, nothing else has changed; I moved the `no_zero_smul_divisors` section lower down in the file since the new instances need the `algebra ℤ R` structure carried by a ring `R`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean 2022-06-08 13:42:41 bfb8ec8 feat(logic/basic): add lemma `pi_congr` (#14616) This lemma is used in #14153, where `congrm` is defined. A big reason for splitting these 3 lines off the main PR is that they are the only ones that are not in a leaf of the import hierarchy: this hopefully saves lots of CI time, when doing trivial changes to the main PR. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem pi_congr 2022-06-08 13:42:38 700181a refactor(algebra/is_prime_pow): move lemmas using `factorization` to new file (#14598) As discussed in [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/squarefree.2C.20is_prime_pow.2C.20and.20factorization/near/285144241). ESTIMATED CHANGES Modified src/algebra/is_prime_pow.lean - theorem is_prime_pow.min_fac_pow_factorization_eq - theorem is_prime_pow_iff_card_support_factorization_eq_one - theorem is_prime_pow_iff_factorization_eq_single - theorem is_prime_pow_iff_min_fac_pow_factorization_eq - theorem is_prime_pow_iff_unique_prime_dvd - theorem is_prime_pow_of_min_fac_pow_factorization_eq - theorem is_prime_pow_pow_iff - theorem nat.coprime.is_prime_pow_dvd_mul - theorem nat.mul_divisors_filter_prime_pow Renamed src/data/nat/factorization.lean to src/data/nat/factorization/basic.lean Added src/data/nat/factorization/prime_pow.lean + theorem is_prime_pow.min_fac_pow_factorization_eq + theorem is_prime_pow_iff_card_support_factorization_eq_one + theorem is_prime_pow_iff_factorization_eq_single + theorem is_prime_pow_iff_min_fac_pow_factorization_eq + theorem is_prime_pow_iff_unique_prime_dvd + theorem is_prime_pow_of_min_fac_pow_factorization_eq + theorem is_prime_pow_pow_iff + theorem nat.coprime.is_prime_pow_dvd_mul + theorem nat.mul_divisors_filter_prime_pow Modified src/data/nat/squarefree.lean Modified src/field_theory/cardinality.lean Modified src/group_theory/nilpotent.lean Modified src/group_theory/sylow.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/padics/padic_val.lean Modified src/ring_theory/multiplicity.lean 2022-06-08 12:10:16 db4531f doc(data/qpf/multivariate/constructions/cofix): fix doc typos (#14609) ESTIMATED CHANGES Modified src/data/qpf/multivariate/constructions/cofix.lean 2022-06-08 12:10:15 0add876 chore(set_theory/cardinal/basic): remove unused universe + fix spacing (#14606) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.mk_subtype_mono 2022-06-08 12:10:14 65fba4c feat(algebra/lie/centralizer): define the centralizer of a Lie submodule and the upper central series (#14173) ESTIMATED CHANGES Modified src/algebra/lie/cartan_subalgebra.lean - theorem lie_subalgebra.exists_nested_lie_ideal_of_le_normalizer - theorem lie_subalgebra.ideal_in_normalizer - theorem lie_subalgebra.le_normalizer - theorem lie_subalgebra.le_normalizer_of_ideal - theorem lie_subalgebra.lie_mem_sup_of_mem_normalizer - theorem lie_subalgebra.mem_normalizer_iff' - theorem lie_subalgebra.mem_normalizer_iff - def lie_subalgebra.normalizer - theorem lie_subalgebra.normalizer_eq_self_iff Added src/algebra/lie/centralizer.lean + theorem lie_subalgebra.coe_centralizer_eq_normalizer + theorem lie_subalgebra.exists_nested_lie_ideal_of_le_normalizer + theorem lie_subalgebra.ideal_in_normalizer + theorem lie_subalgebra.le_normalizer + theorem lie_subalgebra.lie_mem_sup_of_mem_normalizer + theorem lie_subalgebra.mem_normalizer_iff' + theorem lie_subalgebra.mem_normalizer_iff + def lie_subalgebra.normalizer + theorem lie_subalgebra.normalizer_eq_self_iff + def lie_submodule.centralizer + theorem lie_submodule.centralizer_bot_eq_max_triv_submodule + theorem lie_submodule.centralizer_inf + theorem lie_submodule.comap_centralizer + theorem lie_submodule.gc_top_lie_centralizer + theorem lie_submodule.le_centralizer + theorem lie_submodule.mem_centralizer + theorem lie_submodule.monotone_centalizer + theorem lie_submodule.top_lie_le_iff_le_centralizer Modified src/algebra/lie/engel.lean Modified src/algebra/lie/ideal_operations.lean + theorem lie_submodule.lie_le_iff Modified src/algebra/lie/nilpotent.lean + theorem lie_module.is_nilpotent_iff + theorem lie_module.is_nilpotent_iff_exists_ucs_eq_top + theorem lie_submodule.gc_lcs_ucs + theorem lie_submodule.is_nilpotent_iff_exists_self_le_ucs + theorem lie_submodule.lcs_add_le_iff + theorem lie_submodule.lcs_le_iff + def lie_submodule.ucs + theorem lie_submodule.ucs_comap_incl + theorem lie_submodule.ucs_eq_self_of_centralizer_eq_self + theorem lie_submodule.ucs_eq_top_iff + theorem lie_submodule.ucs_le_of_centralizer_eq_self + theorem lie_submodule.ucs_mono + theorem lie_submodule.ucs_succ + theorem lie_submodule.ucs_zero Modified src/algebra/lie/submodule.lean + theorem lie_submodule.comap_incl_eq_top 2022-06-08 09:31:34 ffad43d golf(*): `λ _, default` → `default` (#14608) ESTIMATED CHANGES Modified src/computability/turing_machine.lean Modified src/data/array/lemmas.lean Modified src/data/finset/basic.lean Modified src/data/holor.lean +/- def holor +/- def holor_index Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/pfunctor/univariate/M.lean Modified src/data/pfunctor/univariate/basic.lean Modified src/data/prod/tprod.lean Modified src/data/qpf/multivariate/constructions/sigma.lean Modified src/data/setoid/partition.lean Modified src/data/vector/basic.lean Modified src/group_theory/sylow.lean Modified src/logic/basic.lean Modified src/logic/embedding.lean Modified src/logic/equiv/basic.lean Modified src/logic/unique.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/order/jordan_holder.lean Modified src/order/omega_complete_partial_order.lean Modified src/topology/continuous_function/basic.lean Modified src/topology/vector_bundle/basic.lean Modified test/lint_coe_t.lean +/- def int_to_a 2022-06-08 09:31:33 60454dd feat(algebra/order/monoid): `zero_le_one'` lemma with explicit type argument (#14594) ESTIMATED CHANGES Modified src/algebra/geom_sum.lean Modified src/algebra/order/monoid.lean + theorem zero_le_one' +/- theorem zero_le_one Modified src/analysis/specific_limits/basic.lean Modified src/data/int/basic.lean Modified src/topology/algebra/order/floor.lean Modified src/topology/homotopy/basic.lean Modified src/topology/path_connected.lean 2022-06-08 09:31:32 f40cd3c feat(topology/algebra/order/basic): in a second-countable linear order, only countably many points are isolated to the right (#14564) This makes it possible to remove a useless `densely_ordered` assumption in a lemma in `borel_space`. ESTIMATED CHANGES Modified src/data/set/basic.lean - def set.unique_empty Modified src/data/set/countable.lean + theorem set.countable.of_subsingleton Modified src/data/set/finite.lean + theorem set.finite.of_subsingleton Modified src/measure_theory/constructions/borel_space.lean +/- theorem measurable_set_of_mem_nhds_within_Ioi +/- theorem measurable_set_of_mem_nhds_within_Ioi_aux Modified src/measure_theory/integral/set_to_l1.lean Modified src/topology/algebra/order/basic.lean + theorem countable_of_isolated_left + theorem countable_of_isolated_right + theorem set.pairwise_disjoint.countable_of_Ioo Modified src/topology/separation.lean + theorem topological_space.is_topological_basis.exists_mem_of_ne 2022-06-08 09:31:31 a20032a feat(group_theory/sylow): The index of a sylow subgroup is indivisible by the prime (#14518) This PR adds a lemma stating that the index of a sylow subgroup is indivisible by the prime. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem not_dvd_index_sylow' + theorem not_dvd_index_sylow +/- def sylow.comap_of_injective +/- theorem sylow.stabilizer_eq_normalizer 2022-06-08 09:31:30 54236f5 feat(topology/continuous_function/compact): `cstar_ring` instance on `C(α, β)` when `α` is compact (#14437) We define the star operation on `C(α, β)` by applying `β`'s star operation pointwise. In the case when `α` is compact, then `C(α, β)` has a norm, and we show that it is a `cstar_ring`. ESTIMATED CHANGES Modified src/topology/algebra/star.lean + def star_continuous_map Modified src/topology/continuous_function/algebra.lean + theorem continuous_map.coe_star + theorem continuous_map.star_apply Modified src/topology/continuous_function/compact.lean + theorem bounded_continuous_function.mk_of_compact_star 2022-06-08 07:33:27 e39af18 chore(data/finset): remove duplicated lemma (#14607) The lemma `ssubset_iff_exists_insert_subset` was added in #11248 but is just a duplicate of the `ssubset_iff` lemma a few lines earlier in the file. It's only used once. ESTIMATED CHANGES Modified src/combinatorics/set_family/lym.lean Modified src/data/finset/basic.lean - theorem finset.ssubset_iff_exists_insert_subset 2022-06-08 00:23:16 9d04844 feat(data/int/basic): Sum of units casework lemma (#14557) This PR adds a casework lemma for when the sum of two units equals the sum of two units. I needed this lemma for irreducibility of x^n-x-1. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.is_unit_add_is_unit_eq_is_unit_add_is_unit 2022-06-07 22:31:45 759516c chore(ring_theory/dedekind_domain/ideal): speed up a proof (#14590) ... which causes recurring timeout at irrelevant places, see https://github.com/leanprover-community/mathlib/pull/14585#issuecomment-1148222373 and referenced Zulip discussion. Feel free to push golfs that remains fast (1-2s)! ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean 2022-06-07 21:09:01 905374c feat(special_functions/gamma): better convergence bounds (#14496) Use the stronger form of FTC-2 added #14147 to strengthen some results about the gamma function. ESTIMATED CHANGES Modified src/analysis/special_functions/gamma.lean +/- def complex.Gamma +/- theorem complex.Gamma_aux_recurrence1 +/- theorem complex.Gamma_aux_recurrence2 +/- theorem complex.Gamma_eq_Gamma_aux +/- theorem complex.Gamma_eq_integral +/- theorem complex.Gamma_integral_add_one +/- theorem complex.Gamma_integral_convergent +/- theorem complex.partial_Gamma_add_one +/- theorem complex.tendsto_partial_Gamma +/- theorem real.Gamma_integral_convergent 2022-06-07 17:43:24 cfa447e chore(logic/hydra): tweak docs + minor golf (#14579) ESTIMATED CHANGES Modified src/logic/hydra.lean 2022-06-07 13:32:20 43f1af9 refactor(topology/continuous_function/basic): rename `map_specialization` (#14565) Rename `continuous_map.map_specialization` to `continuous_map.map_specializes` to align with the name of the relation. ESTIMATED CHANGES Modified src/algebraic_geometry/stalks.lean Modified src/topology/continuous_function/basic.lean - theorem continuous_map.map_specialization + theorem continuous_map.map_specializes Modified src/topology/sheaves/stalks.lean 2022-06-07 12:37:21 544fdc0 chore(ring_theory/integral_closure): fix dot notation (#14589) ESTIMATED CHANGES Modified src/number_theory/function_field.lean Modified src/number_theory/number_field.lean Modified src/ring_theory/integral_closure.lean + theorem algebra.is_integral.is_field_iff_is_field - theorem is_integral.is_field_iff_is_field 2022-06-07 11:40:32 6906627 refactor(algebra/squarefree): split out `nat` part to new file `data/nat/squarefree` (#14577) As discussed in this Zulip [thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/squarefree.2C.20is_prime_pow.2C.20and.20factorization) ESTIMATED CHANGES Modified archive/100-theorems-list/81_sum_of_prime_reciprocals_diverges.lean Modified src/algebra/squarefree.lean - theorem nat.divisors_filter_squarefree - def nat.min_sq_fac - def nat.min_sq_fac_aux - theorem nat.min_sq_fac_aux_has_prop - theorem nat.min_sq_fac_dvd - theorem nat.min_sq_fac_has_prop - theorem nat.min_sq_fac_le_of_dvd - theorem nat.min_sq_fac_prime - def nat.min_sq_fac_prop - theorem nat.min_sq_fac_prop_div - theorem nat.sq_mul_squarefree - theorem nat.sq_mul_squarefree_of_pos' - theorem nat.sq_mul_squarefree_of_pos - theorem nat.squarefree.ext_iff - theorem nat.squarefree.factorization_le_one - theorem nat.squarefree_and_prime_pow_iff_prime - theorem nat.squarefree_iff_factorization_le_one - theorem nat.squarefree_iff_min_sq_fac - theorem nat.squarefree_iff_nodup_factors - theorem nat.squarefree_iff_prime_squarefree - theorem nat.squarefree_mul - theorem nat.squarefree_of_factorization_le_one - theorem nat.squarefree_pow_iff - theorem nat.squarefree_two - theorem nat.sum_divisors_filter_squarefree - theorem tactic.norm_num.not_squarefree_mul - theorem tactic.norm_num.squarefree_bit10 - theorem tactic.norm_num.squarefree_bit1 - def tactic.norm_num.squarefree_helper - theorem tactic.norm_num.squarefree_helper_0 - theorem tactic.norm_num.squarefree_helper_1 - theorem tactic.norm_num.squarefree_helper_2 - theorem tactic.norm_num.squarefree_helper_3 - theorem tactic.norm_num.squarefree_helper_4 Added src/data/nat/squarefree.lean + theorem nat.divisors_filter_squarefree + def nat.min_sq_fac + def nat.min_sq_fac_aux + theorem nat.min_sq_fac_aux_has_prop + theorem nat.min_sq_fac_dvd + theorem nat.min_sq_fac_has_prop + theorem nat.min_sq_fac_le_of_dvd + theorem nat.min_sq_fac_prime + def nat.min_sq_fac_prop + theorem nat.min_sq_fac_prop_div + theorem nat.sq_mul_squarefree + theorem nat.sq_mul_squarefree_of_pos' + theorem nat.sq_mul_squarefree_of_pos + theorem nat.squarefree.ext_iff + theorem nat.squarefree.factorization_le_one + theorem nat.squarefree_and_prime_pow_iff_prime + theorem nat.squarefree_iff_factorization_le_one + theorem nat.squarefree_iff_min_sq_fac + theorem nat.squarefree_iff_nodup_factors + theorem nat.squarefree_iff_prime_squarefree + theorem nat.squarefree_mul + theorem nat.squarefree_of_factorization_le_one + theorem nat.squarefree_pow_iff + theorem nat.squarefree_two + theorem nat.sum_divisors_filter_squarefree + theorem tactic.norm_num.not_squarefree_mul + theorem tactic.norm_num.squarefree_bit10 + theorem tactic.norm_num.squarefree_bit1 + def tactic.norm_num.squarefree_helper + theorem tactic.norm_num.squarefree_helper_0 + theorem tactic.norm_num.squarefree_helper_1 + theorem tactic.norm_num.squarefree_helper_2 + theorem tactic.norm_num.squarefree_helper_3 + theorem tactic.norm_num.squarefree_helper_4 Modified src/number_theory/arithmetic_function.lean Modified test/norm_num_ext.lean 2022-06-07 07:06:14 4a4cd6d feat(topology/metric_space/metrizable): assume `regular_space` (#14586) ESTIMATED CHANGES Modified src/topology/metric_space/metrizable.lean - theorem topological_space.metrizable_space_of_normal_second_countable + theorem topological_space.metrizable_space_of_regular_second_countable 2022-06-07 01:29:01 de648fd chore(set_theory/game/basic): spacing tweaks + fix docstring typo (#14580) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean +/- def pgame.to_left_moves_mul +/- def pgame.to_right_moves_mul 2022-06-06 22:44:27 6ad1a55 feat(set_theory/game/pgame): induction on left/right moves of add/mul (#14345) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean +/- theorem pgame.left_moves_mul_cases +/- theorem pgame.right_moves_mul_cases Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/nim.lean Modified src/set_theory/game/pgame.lean +/- theorem pgame.left_moves_add_cases +/- theorem pgame.right_moves_add_cases 2022-06-06 20:46:31 c7a1319 feat(measure_theory/measure/measure_space): add `interval_oc_ae_eq_interval` (#14566) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.interval_oc_ae_eq_interval 2022-06-06 20:46:30 2c89306 chore(geometry/manifold/charted_space): make `M` an explicit argument (#14562) ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/partition_of_unity.lean 2022-06-06 20:46:29 d0b7ecc refactor(analysis/asymptotics): rename `is_O.join` to `is_O.sup` (#14558) * rename `is_*.join` to `is_*.sup`; * add `iff` versions. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean - theorem asymptotics.is_O.join + theorem asymptotics.is_O.sup + theorem asymptotics.is_O_sup - theorem asymptotics.is_O_with.join' - theorem asymptotics.is_O_with.join + theorem asymptotics.is_O_with.sup' + theorem asymptotics.is_O_with.sup - theorem asymptotics.is_o.join + theorem asymptotics.is_o.sup + theorem asymptotics.is_o_sup Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/phragmen_lindelof.lean 2022-06-06 20:46:28 2b7e72b feat(order/liminf_limsup): add a few lemmas (#14554) * add `is_bounded_under.mono_le`, `is_bounded_under.mono_ge`; * add `order_iso.is_bounded_under_le_comp`, `order_iso.is_bounded_under_ge_comp`; * add `is_bounded_under_le_inv`, `is_bounded_under_le_inv`, and additive versions; * rename `is_bounded_under_sup` and `is_bounded_under_inf` to `is_bounded_under.sup` and `is_bounded_under.inf`; * add `iff` versions under names `is_bounded_under_le_sup` and `is_bounded_under_ge_inf`; * add `is_bounded_under_le_abs`. ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.is_bounded_under.inf + theorem filter.is_bounded_under.mono_ge + theorem filter.is_bounded_under.mono_le + theorem filter.is_bounded_under.sup + theorem filter.is_bounded_under_ge_inf + theorem filter.is_bounded_under_ge_inv - theorem filter.is_bounded_under_inf + theorem filter.is_bounded_under_le_abs + theorem filter.is_bounded_under_le_inv + theorem filter.is_bounded_under_le_sup - theorem filter.is_bounded_under_sup + theorem order_iso.is_bounded_under_ge_comp + theorem order_iso.is_bounded_under_le_comp 2022-06-06 20:46:27 029a955 refactor(../metric_space/baire): add baire_space class and instances (#14547) * Add a `baire_space` class containing the Baire property (a countable intersection of open dense sets is dense). * The Baire category theorem for complete metric spaces becomes an instance of `baire_space`. * Previous consequences of the Baire property use `baire_space` as an hypothesis, instead of `pseudo_emetric_space` `complete_space`. * Add an instance of `baire_space` for locally compact t2 spaces, in effect extending all the consequences of the Baire property to locally compact spaces. ESTIMATED CHANGES Modified src/topology/metric_space/baire.lean +/- theorem dense_Inter_of_open_nat +/- theorem dense_of_mem_residual +/- theorem mem_residual Modified src/topology/sets/compacts.lean + theorem exists_positive_compacts_subset 2022-06-06 20:46:26 d28aa2c feat(analysis/normed_space/banach): closed graph theorem (#14265) ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean + theorem continuous_linear_map.coe_fn_of_is_closed_graph + theorem continuous_linear_map.coe_fn_of_seq_closed_graph + theorem continuous_linear_map.coe_of_is_closed_graph + theorem continuous_linear_map.coe_of_seq_closed_graph + def continuous_linear_map.of_is_closed_graph + def continuous_linear_map.of_seq_closed_graph + theorem linear_map.continuous_of_is_closed_graph + theorem linear_map.continuous_of_seq_closed_graph 2022-06-06 18:41:09 7b7da89 feat(algebra/order/*): typeclass for `0 ≤ 1` (#14510) With this new typeclass, lemmas such as `zero_le_two` and `one_le_two` can be generalized to require just a few typeclasses for notation, `zero_add_class`, and some `covariant` class. ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean - theorem Nxzmod_2.zero_le_one Modified src/algebra/geom_sum.lean Modified src/algebra/group_power/lemmas.lean Modified src/algebra/order/monoid.lean + theorem one_le_two' + theorem one_le_two + theorem zero_le_one + theorem zero_le_two Modified src/algebra/order/ring.lean - theorem one_le_two - theorem zero_le_one - theorem zero_le_two Modified src/algebra/order/with_zero.lean - theorem zero_le_one' Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric/inverse.lean Modified src/analysis/specific_limits/basic.lean Modified src/category_theory/preadditive/schur.lean Modified src/data/int/basic.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/probability/strong_law.lean Modified src/ring_theory/valuation/integers.lean Modified src/set_theory/game/pgame.lean - theorem pgame.zero_le_one Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.zero_le_one Modified src/topology/algebra/order/floor.lean Modified src/topology/homotopy/basic.lean Modified src/topology/path_connected.lean 2022-06-06 14:27:28 abbc7f6 feat(measure_theory/measure/finite_measure_weak_convergence): Prove one implication of portmanteau theorem, convergence implies a limsup condition for measures of closed sets. (#14116) This PR contains the proof of one implication of portmanteau theorem characterizing weak convergence: it is shown that weak convergence implies that for any closed set the limsup of measures is at most the limit measure. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_const_lt_top + theorem measure_theory.set_lintegral_const_lt_top Modified src/measure_theory/integral/set_integral.lean + theorem measure_le_lintegral_thickened_indicator + theorem measure_le_lintegral_thickened_indicator_aux Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem measure_theory.finite_measure.limsup_measure_closed_le_of_tendsto + theorem measure_theory.finite_measure.tendsto_lintegral_nn_filter_of_le_const + theorem measure_theory.finite_measure.tendsto_lintegral_nn_of_le_const + theorem measure_theory.finite_measure.tendsto_test_against_nn_filter_of_le_const + theorem measure_theory.finite_measure.tendsto_test_against_nn_of_le_const + theorem measure_theory.measure_of_cont_bdd_of_tendsto_filter_indicator + theorem measure_theory.measure_of_cont_bdd_of_tendsto_indicator + theorem measure_theory.tendsto_lintegral_thickened_indicator_of_is_closed Modified src/topology/metric_space/thickened_indicator.lean + theorem indicator_le_thickened_indicator + theorem indicator_le_thickened_indicator_aux 2022-06-06 13:48:54 d6477a8 feat(analysis/convex/krein_milman): The Krein-Milman theorem (#8112) This PR proves the Krein-Milman lemma and the Krein-Milman theorem. ESTIMATED CHANGES Modified src/analysis/convex/exposed.lean Added src/analysis/convex/krein_milman.lean + theorem closure_convex_hull_extreme_points + theorem is_compact.has_extreme_point 2022-06-06 12:19:21 d490ad1 move(set_theory/ordinal/cantor_normal_form): move `CNF` to a new file (#14563) We move the API for the Cantor Normal Form to a new file, in preparation for an API expansion. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean - def ordinal.CNF - theorem ordinal.CNF_foldr - theorem ordinal.CNF_fst_le - theorem ordinal.CNF_fst_le_log - theorem ordinal.CNF_lt_snd - theorem ordinal.CNF_ne_zero - theorem ordinal.CNF_pairwise - theorem ordinal.CNF_rec_ne_zero - theorem ordinal.CNF_rec_zero - theorem ordinal.CNF_snd_lt - theorem ordinal.CNF_sorted - theorem ordinal.CNF_zero - theorem ordinal.one_CNF - theorem ordinal.zero_CNF Added src/set_theory/ordinal/cantor_normal_form.lean + def ordinal.CNF + theorem ordinal.CNF_foldr + theorem ordinal.CNF_fst_le + theorem ordinal.CNF_fst_le_log + theorem ordinal.CNF_lt_snd + theorem ordinal.CNF_ne_zero + theorem ordinal.CNF_pairwise + theorem ordinal.CNF_rec_ne_zero + theorem ordinal.CNF_rec_zero + theorem ordinal.CNF_snd_lt + theorem ordinal.CNF_sorted + theorem ordinal.CNF_zero + theorem ordinal.one_CNF + theorem ordinal.zero_CNF 2022-06-06 10:35:42 0f5ea39 feat(order/antichain, order/minimal): some antichain lemmas (#14507) This PR adds a few lemmas about antichains, including their images under complementation and order isomorphisms. ESTIMATED CHANGES Modified src/order/antichain.lean + theorem is_antichain.image_compl + theorem is_antichain.image_embedding + theorem is_antichain.image_embedding_iff + theorem is_antichain.image_iso + theorem is_antichain.image_iso_iff + theorem is_antichain.image_rel_embedding + theorem is_antichain.image_rel_embedding_iff + theorem is_antichain.image_rel_iso + theorem is_antichain.image_rel_iso_iff + theorem is_antichain.preimage_compl + theorem is_antichain.preimage_embedding + theorem is_antichain.preimage_iso + theorem is_antichain.preimage_iso_iff + theorem is_antichain.preimage_rel_embedding + theorem is_antichain.preimage_rel_iso + theorem is_antichain.to_dual + theorem is_antichain.to_dual_iff Modified src/order/minimal.lean + theorem is_antichain.max_lower_set_of + theorem is_antichain.min_upper_set_of 2022-06-06 09:16:32 d88ecd5 chore(linear_algebra/std_basis): minor golfs (#14552) ESTIMATED CHANGES Modified src/linear_algebra/std_basis.lean 2022-06-06 07:26:33 789af09 feat(algebra/char_p): add two helper lemmas about the cast of the characteristics being zero (#14464) - `(ring_char R : R) = 0` and - If there exists a positive `n` lifting to zero, then the characteristics is positive. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem ring_char.nat.cast_ring_char 2022-06-05 20:50:27 769a934 feat(set_theory/*) `cardinal.min` → `Inf` (#13410) We discard `cardinal.min` in favor of `Inf` (the original definition is really just `infi`). Note: `lift_min'` is renamed to `lift_min`, as the name clash no longer exists. For consistency, `lift_max'` is renamed to `lift_max` and `lift_max` is renamed to `lift_umax_eq`. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean Modified src/model_theory/encoding.lean Modified src/model_theory/skolem.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.Inf_empty - theorem cardinal.le_min + theorem cardinal.lift_Inf - theorem cardinal.lift_max' +/- theorem cardinal.lift_max - theorem cardinal.lift_min' +/- theorem cardinal.lift_min + theorem cardinal.lift_monotone + theorem cardinal.lift_strict_mono + theorem cardinal.lift_umax_eq - theorem cardinal.min_eq - theorem cardinal.min_le +/- theorem cardinal.sup_eq_zero Modified src/set_theory/cardinal/cofinality.lean +/- def order.cof +/- theorem order.cof_le + theorem order.cof_nonempty +/- theorem ordinal.lift_cof - theorem rel_iso.cof.aux - theorem rel_iso.cof + theorem rel_iso.cof_eq + theorem rel_iso.cof_eq_lift + theorem rel_iso.cof_le + theorem rel_iso.cof_le_lift +/- def strict_order.cof + theorem strict_order.cof_nonempty Modified src/set_theory/cardinal/schroeder_bernstein.lean +/- theorem function.embedding.min_injective +/- theorem function.embedding.total Modified src/set_theory/ordinal/basic.lean 2022-06-05 19:28:46 736b4e5 feat(data/nat/factorization): Lemma on zero-ness of factorization (#14560) Sad naming is sad. [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/) ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.factorization_eq_zero_iff' 2022-06-05 14:52:20 043fa29 feat(src/analysis/normed_space): various improvements for continuous bilinear maps (#14539) * Add `simps` to `arrow_congrSL` * `continuous_linear_map.flip (compSL F E H σ₂₁ σ₁₄)` takes almost 5 seconds to elaborate, but when giving the argument `(F →SL[σ₂₄] H)` for `G` explicitly, this goes down to 1 second. * Reorder arguments of `is_bounded_bilinear_map_comp` * Use `continuous_linear_map` results to prove `is_bounded_bilinear_map` results. * Make arguments to `comp_continuous_multilinear_mapL` explicit * Add `continuous[_on].clm_comp`, `cont_diff[_on].clm_comp` and `cont_diff.comp_cont_diff_on(₂|₃)` ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff.clm_comp + theorem cont_diff.comp_cont_diff_on₂ + theorem cont_diff.comp_cont_diff_on₃ +/- theorem cont_diff_at.continuous_linear_map_comp + theorem cont_diff_on.clm_comp +/- theorem cont_diff_on.continuous_linear_map_comp Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem continuous.clm_comp + theorem continuous_on.clm_comp Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous.clm_comp_const + theorem continuous.const_clm_comp 2022-06-05 12:08:46 d9e72ff feat(analysis/normed_space/hahn-banach/separation): Eidelheit's theorem (#14460) Prove Eidelheit's theorem as a corollary to the geometric Hahn-Banach. ESTIMATED CHANGES Modified src/analysis/normed_space/hahn_banach/separation.lean + theorem Inter_halfspaces_eq 2022-06-05 07:36:59 b6395b3 refactor(set_theory/*): change `omega` to `aleph_0` + golf (#14467) This PR does two things: - we change `cardinal.omega` to `cardinal.aleph_0` and introduce the notation `ℵ₀`. - we golf many proofs throughout ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/algebra/algebraic_card.lean + theorem algebraic.aleph_0_le_cardinal_mk_of_char_zero +/- theorem algebraic.cardinal_mk_le_max +/- theorem algebraic.cardinal_mk_le_mul - theorem algebraic.omega_le_cardinal_mk_of_char_zero Modified src/algebra/quaternion.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/computability/encoding.lean + theorem computability.encoding.card_le_aleph_0 - theorem computability.encoding.card_le_omega + theorem computability.fin_encoding.card_le_aleph_0 - theorem computability.fin_encoding.card_le_omega Modified src/data/W/cardinal.lean + theorem W_type.cardinal_mk_le_max_aleph_0_of_fintype - theorem W_type.cardinal_mk_le_max_omega_of_fintype Modified src/data/complex/cardinality.lean Modified src/data/mv_polynomial/cardinal.lean Modified src/data/polynomial/cardinal.lean +/- theorem polynomial.cardinal_mk_le_max Modified src/data/rat/denumerable.lean +/- theorem cardinal.mk_rat Modified src/data/real/cardinality.lean Modified src/field_theory/cardinality.lean Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/finiteness.lean + theorem is_noetherian.dim_lt_aleph_0 - theorem is_noetherian.dim_lt_omega + theorem is_noetherian.iff_dim_lt_aleph_0 - theorem is_noetherian.iff_dim_lt_omega Modified src/field_theory/fixed.lean Modified src/field_theory/is_alg_closed/classification.lean +/- theorem algebra.is_algebraic.cardinal_mk_le_max + theorem is_alg_closed.cardinal_eq_cardinal_transcendence_basis_of_aleph_0_lt - theorem is_alg_closed.cardinal_eq_cardinal_transcendence_basis_of_omega_lt Modified src/group_theory/index.lean Modified src/group_theory/schur_zassenhaus.lean Modified src/linear_algebra/dimension.lean + theorem basis.finite_index_of_dim_lt_aleph_0 - theorem basis.finite_index_of_dim_lt_omega + theorem basis.finite_of_vector_space_index_of_dim_lt_aleph_0 - theorem basis.finite_of_vector_space_index_of_dim_lt_omega + theorem basis.nonempty_fintype_index_of_dim_lt_aleph_0 - theorem basis.nonempty_fintype_index_of_dim_lt_omega Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.lt_aleph_0_of_linear_independent - theorem finite_dimensional.lt_omega_of_linear_independent Modified src/linear_algebra/finsupp_vector_space.lean + theorem cardinal_lt_aleph_0_of_finite_dimensional - theorem cardinal_lt_omega_of_finite_dimensional Modified src/linear_algebra/free_module/finite/rank.lean + theorem module.free.rank_lt_aleph_0 - theorem module.free.rank_lt_omega Modified src/measure_theory/card_measurable_space.lean Modified src/model_theory/basic.lean + theorem first_order.language.card_functions_le_aleph_0 - theorem first_order.language.card_functions_le_omega + theorem first_order.language.card_le_aleph_0 - theorem first_order.language.card_le_omega +/- theorem first_order.language.encodable.countable +/- theorem first_order.language.encodable.countable_functions Modified src/model_theory/encoding.lean +/- theorem first_order.language.term.card_le + theorem first_order.language.term.card_le_aleph_0 - theorem first_order.language.term.card_le_omega +/- theorem first_order.language.term.card_sigma Modified src/model_theory/satisfiability.lean Modified src/model_theory/semantics.lean Modified src/model_theory/skolem.lean Modified src/model_theory/substructures.lean Modified src/ring_theory/localization/cardinality.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.add_le_aleph_0 - theorem cardinal.add_le_omega + theorem cardinal.add_lt_aleph_0 + theorem cardinal.add_lt_aleph_0_iff - theorem cardinal.add_lt_omega - theorem cardinal.add_lt_omega_iff + def cardinal.aleph_0 + theorem cardinal.aleph_0_add_aleph_0 + theorem cardinal.aleph_0_le + theorem cardinal.aleph_0_le_add_iff + theorem cardinal.aleph_0_le_lift + theorem cardinal.aleph_0_le_mk + theorem cardinal.aleph_0_le_mul_iff + theorem cardinal.aleph_0_mul_aleph_0 + theorem cardinal.aleph_0_ne_zero + theorem cardinal.aleph_0_pos +/- theorem cardinal.card_le_of +/- theorem cardinal.card_le_of_finset + theorem cardinal.cast_to_nat_of_aleph_0_le + theorem cardinal.cast_to_nat_of_lt_aleph_0 - theorem cardinal.cast_to_nat_of_lt_omega - theorem cardinal.cast_to_nat_of_omega_le +/- theorem cardinal.denumerable_iff +/- theorem cardinal.encodable_iff + theorem cardinal.finset_card_lt_aleph_0 - theorem cardinal.finset_card_lt_omega +/- theorem cardinal.infinite_iff + theorem cardinal.lift_aleph_0 + theorem cardinal.lift_le_aleph_0 - theorem cardinal.lift_le_omega - theorem cardinal.lift_omega + theorem cardinal.lt_aleph_0 + theorem cardinal.lt_aleph_0_iff_finite + theorem cardinal.lt_aleph_0_iff_fintype + theorem cardinal.lt_aleph_0_of_fintype - theorem cardinal.lt_omega - theorem cardinal.lt_omega_iff_finite - theorem cardinal.lt_omega_iff_fintype - theorem cardinal.lt_omega_of_fintype +/- theorem cardinal.mk_denumerable +/- theorem cardinal.mk_int + theorem cardinal.mk_le_aleph_0 - theorem cardinal.mk_le_omega +/- theorem cardinal.mk_nat +/- theorem cardinal.mk_pnat + theorem cardinal.mk_set_le_aleph_0 - theorem cardinal.mk_set_le_omega + theorem cardinal.mk_subtype_le_aleph_0 - theorem cardinal.mk_subtype_le_omega +/- theorem cardinal.mk_to_enat_of_infinite +/- theorem cardinal.mk_to_nat_of_infinite + theorem cardinal.mk_union_le_aleph_0 - theorem cardinal.mk_union_le_omega + theorem cardinal.mul_lt_aleph_0 + theorem cardinal.mul_lt_aleph_0_iff + theorem cardinal.mul_lt_aleph_0_iff_of_ne_zero - theorem cardinal.mul_lt_omega - theorem cardinal.mul_lt_omega_iff - theorem cardinal.mul_lt_omega_iff_of_ne_zero + theorem cardinal.nat_lt_aleph_0 - theorem cardinal.nat_lt_omega + theorem cardinal.nsmul_lt_aleph_0_iff + theorem cardinal.nsmul_lt_aleph_0_iff_of_ne_zero - theorem cardinal.nsmul_lt_omega_iff - theorem cardinal.nsmul_lt_omega_iff_of_ne_zero - def cardinal.omega - theorem cardinal.omega_add_omega - theorem cardinal.omega_le - theorem cardinal.omega_le_add_iff - theorem cardinal.omega_le_lift - theorem cardinal.omega_le_mk - theorem cardinal.omega_le_mul_iff - theorem cardinal.omega_mul_omega - theorem cardinal.omega_ne_zero - theorem cardinal.omega_pos + theorem cardinal.one_le_aleph_0 + theorem cardinal.one_lt_aleph_0 - theorem cardinal.one_lt_omega +/- theorem cardinal.one_to_nat + theorem cardinal.power_lt_aleph_0 - theorem cardinal.power_lt_omega + theorem cardinal.to_enat_apply_of_aleph_0_le + theorem cardinal.to_enat_apply_of_lt_aleph_0 - theorem cardinal.to_enat_apply_of_lt_omega - theorem cardinal.to_enat_apply_of_omega_le +/- theorem cardinal.to_enat_cast + theorem cardinal.to_nat_add_of_lt_aleph_0 - theorem cardinal.to_nat_add_of_lt_omega + theorem cardinal.to_nat_apply_of_aleph_0_le + theorem cardinal.to_nat_apply_of_lt_aleph_0 - theorem cardinal.to_nat_apply_of_lt_omega - theorem cardinal.to_nat_apply_of_omega_le +/- theorem cardinal.to_nat_cast + theorem cardinal.to_nat_le_iff_le_of_lt_aleph_0 - theorem cardinal.to_nat_le_iff_le_of_lt_omega + theorem cardinal.to_nat_le_of_le_of_lt_aleph_0 - theorem cardinal.to_nat_le_of_le_of_lt_omega + theorem cardinal.to_nat_lt_iff_lt_of_lt_aleph_0 - theorem cardinal.to_nat_lt_iff_lt_of_lt_omega + theorem cardinal.to_nat_lt_of_lt_of_lt_aleph_0 - theorem cardinal.to_nat_lt_of_lt_of_lt_omega +/- theorem cardinal.zero_to_nat Modified src/set_theory/cardinal/cofinality.lean +/- theorem cardinal.deriv_lt_ord +/- theorem cardinal.is_inaccessible.mk + theorem cardinal.is_limit.aleph_0_le - theorem cardinal.is_limit.omega_le + theorem cardinal.is_limit_aleph_0 - theorem cardinal.is_limit_omega + theorem cardinal.is_regular.aleph_0_le - theorem cardinal.is_regular.omega_le +/- theorem cardinal.is_regular_aleph'_succ + theorem cardinal.is_regular_aleph_0 - theorem cardinal.is_regular_omega +/- theorem cardinal.is_regular_succ + theorem cardinal.is_strong_limit_aleph_0 - theorem cardinal.is_strong_limit_omega +/- theorem cardinal.lt_cof_power +/- theorem cardinal.lt_power_cof +/- theorem cardinal.nfp_lt_ord_of_is_regular + theorem ordinal.aleph_0_le_cof +/- theorem ordinal.cof_omega +/- theorem ordinal.infinite_pigeonhole +/- theorem ordinal.nfp_bfamily_lt_ord +/- theorem ordinal.nfp_bfamily_lt_ord_lift +/- theorem ordinal.nfp_family_lt_ord +/- theorem ordinal.nfp_family_lt_ord_lift +/- theorem ordinal.nfp_lt_ord - theorem ordinal.omega_le_cof Modified src/set_theory/cardinal/continuum.lean + theorem cardinal.aleph_0_add_continuum + theorem cardinal.aleph_0_le_continuum + theorem cardinal.aleph_0_lt_continuum + theorem cardinal.aleph_0_mul_continuum + theorem cardinal.aleph_0_power_aleph_0 +/- def cardinal.continuum + theorem cardinal.continuum_add_aleph_0 - theorem cardinal.continuum_add_omega + theorem cardinal.continuum_mul_aleph_0 +/- theorem cardinal.continuum_mul_nat - theorem cardinal.continuum_mul_omega + theorem cardinal.continuum_power_aleph_0 - theorem cardinal.continuum_power_omega +/- theorem cardinal.lift_continuum +/- theorem cardinal.nat_lt_continuum +/- theorem cardinal.nat_mul_continuum + theorem cardinal.nat_power_aleph_0 - theorem cardinal.nat_power_omega - theorem cardinal.omega_add_continuum - theorem cardinal.omega_le_continuum - theorem cardinal.omega_lt_continuum - theorem cardinal.omega_mul_continuum - theorem cardinal.omega_power_omega + theorem cardinal.two_power_aleph_0 - theorem cardinal.two_power_omega Modified src/set_theory/cardinal/divisibility.lean + theorem cardinal.dvd_of_le_of_aleph_0_le - theorem cardinal.dvd_of_le_of_omega_le +/- theorem cardinal.is_prime_iff +/- theorem cardinal.is_prime_pow_iff + theorem cardinal.not_irreducible_of_aleph_0_le - theorem cardinal.not_irreducible_of_omega_le + theorem cardinal.prime_of_aleph_0_le - theorem cardinal.prime_of_omega_le Modified src/set_theory/cardinal/ordinal.lean +/- theorem cardinal.add_eq_left +/- theorem cardinal.add_eq_left_iff +/- theorem cardinal.add_eq_max' +/- theorem cardinal.add_eq_max +/- theorem cardinal.add_eq_right +/- theorem cardinal.add_eq_right_iff +/- theorem cardinal.add_eq_self +/- theorem cardinal.add_le_max +/- theorem cardinal.add_le_of_le +/- theorem cardinal.add_lt_of_lt +/- theorem cardinal.add_one_eq +/- theorem cardinal.aleph'_aleph_idx +/- theorem cardinal.aleph'_le +/- theorem cardinal.aleph'_le_of_limit +/- theorem cardinal.aleph'_lt +/- theorem cardinal.aleph'_omega +/- theorem cardinal.aleph'_succ +/- def cardinal.aleph + theorem cardinal.aleph_0_le_aleph' + theorem cardinal.aleph_0_le_aleph + theorem cardinal.aleph_0_le_bit0 + theorem cardinal.aleph_0_le_bit1 + theorem cardinal.aleph_0_lt_aleph_one + theorem cardinal.aleph_0_mul_aleph + theorem cardinal.aleph_0_mul_eq + theorem cardinal.aleph_0_mul_mk_eq +/- theorem cardinal.aleph_idx_aleph' +/- theorem cardinal.aleph_le +/- theorem cardinal.aleph_lt + theorem cardinal.aleph_mul_aleph_0 - theorem cardinal.aleph_mul_omega +/- theorem cardinal.aleph_succ +/- theorem cardinal.aleph_zero +/- theorem cardinal.bit0_eq_self + theorem cardinal.bit0_lt_aleph_0 +/- theorem cardinal.bit0_lt_bit1 - theorem cardinal.bit0_lt_omega +/- theorem cardinal.bit1_eq_self_iff +/- theorem cardinal.bit1_le_bit0 + theorem cardinal.bit1_lt_aleph_0 - theorem cardinal.bit1_lt_omega +/- theorem cardinal.eq_aleph_of_eq_card_ord + theorem cardinal.eq_of_add_eq_of_aleph_0_le - theorem cardinal.eq_of_add_eq_of_omega_le +/- theorem cardinal.exists_aleph + theorem cardinal.mk_list_eq_aleph_0 + theorem cardinal.mk_list_eq_max_mk_aleph_0 - theorem cardinal.mk_list_eq_max_mk_omega - theorem cardinal.mk_list_eq_omega +/- theorem cardinal.mk_list_le_max + theorem cardinal.mk_mul_aleph_0_eq - theorem cardinal.mk_mul_omega_eq + theorem cardinal.mul_aleph_0_eq +/- theorem cardinal.mul_eq_left +/- theorem cardinal.mul_eq_left_iff +/- theorem cardinal.mul_eq_max' +/- theorem cardinal.mul_eq_max + theorem cardinal.mul_eq_max_of_aleph_0_le_left + theorem cardinal.mul_eq_max_of_aleph_0_le_right - theorem cardinal.mul_eq_max_of_omega_le_left - theorem cardinal.mul_eq_max_of_omega_le_right +/- theorem cardinal.mul_eq_right +/- theorem cardinal.mul_eq_self +/- theorem cardinal.mul_le_max + theorem cardinal.mul_le_max_of_aleph_0_le_left - theorem cardinal.mul_le_max_of_omega_le_left +/- theorem cardinal.mul_lt_of_lt - theorem cardinal.mul_omega_eq +/- theorem cardinal.nat_power_eq - theorem cardinal.omega_le_aleph' - theorem cardinal.omega_le_aleph - theorem cardinal.omega_le_bit0 - theorem cardinal.omega_le_bit1 - theorem cardinal.omega_lt_aleph_one - theorem cardinal.omega_mul_aleph - theorem cardinal.omega_mul_eq - theorem cardinal.omega_mul_mk_eq - theorem cardinal.one_le_one +/- theorem cardinal.ord_card_unbounded' +/- theorem cardinal.ord_is_limit +/- theorem cardinal.pow_eq +/- theorem cardinal.pow_le +/- theorem cardinal.power_eq_two_power +/- theorem cardinal.power_nat_eq +/- theorem cardinal.power_nat_le +/- theorem cardinal.power_nat_le_max +/- theorem cardinal.power_self_eq + theorem cardinal.powerlt_aleph_0 + theorem cardinal.powerlt_aleph_0_le - theorem cardinal.powerlt_omega - theorem cardinal.powerlt_omega_le +/- theorem cardinal.principal_add_ord + theorem cardinal.succ_aleph_0 - theorem cardinal.succ_omega +/- theorem cardinal.type_cardinal Modified src/set_theory/game/short.lean Modified src/set_theory/ordinal/arithmetic.lean + theorem cardinal.add_one_of_aleph_0_le - theorem cardinal.add_one_of_omega_le + theorem cardinal.ord_aleph_0 - theorem cardinal.ord_omega +/- theorem ordinal.add_le_of_limit +/- theorem ordinal.div_nonempty +/- theorem ordinal.is_limit_iff_omega_dvd +/- theorem ordinal.lt_mul_of_limit +/- theorem ordinal.lt_omega +/- theorem ordinal.mul_le_of_limit +/- theorem ordinal.nat_lt_limit +/- theorem ordinal.nat_lt_omega +/- theorem ordinal.omega_is_limit +/- theorem ordinal.omega_le +/- theorem ordinal.omega_le_of_is_limit +/- theorem ordinal.omega_ne_zero +/- theorem ordinal.omega_pos +/- theorem ordinal.one_add_of_omega_le +/- theorem ordinal.one_add_omega +/- theorem ordinal.one_lt_omega +/- def ordinal.pred +/- theorem ordinal.sub_nonempty +/- theorem ordinal.sup_add_nat +/- theorem ordinal.sup_mul_nat +/- theorem ordinal.sup_nat_cast +/- theorem ordinal.sup_opow_nat Modified src/set_theory/ordinal/basic.lean +/- theorem cardinal.mk_ordinal_out +/- theorem ordinal.card_omega +/- theorem ordinal.lift_omega +/- def ordinal.univ +/- theorem ordinal.univ_id Modified src/set_theory/ordinal/notation.lean +/- theorem onote.repr_opow_aux₁ Modified src/topology/metric_space/gromov_hausdorff.lean 2022-06-05 04:57:10 8651b70 chore(set_theory/cardinal/cofinality): golf + fix spacing (#14509) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean 2022-06-05 02:47:09 10f4572 refactor(group_theory/group_action/defs): rename has_faithful_scalar (#14515) This is the first scalar -> smul renaming transition. Discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/scalar.20smul.20naming.20discrepancy ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/algebra/basic.lean +/- theorem mul_semiring_action.to_alg_equiv_injective +/- theorem mul_semiring_action.to_alg_hom_injective Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/group_ring_action.lean +/- theorem to_ring_hom_injective Modified src/algebra/hom/aut.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/equiv.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/analysis/normed_space/M_structure.lean +/- theorem is_Lprojection.coe_bot +/- theorem is_Lprojection.coe_inf +/- theorem is_Lprojection.coe_sdiff +/- theorem is_Lprojection.coe_sup +/- theorem is_Lprojection.coe_top +/- theorem is_Lprojection.commute +/- theorem is_Lprojection.distrib_lattice_lemma +/- theorem is_Lprojection.join +/- theorem is_Lprojection.le_def +/- theorem is_Lprojection.mul Modified src/data/finsupp/basic.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/polynomial/basic.lean Modified src/field_theory/fixed.lean Modified src/group_theory/group_action/defs.lean +/- theorem smul_left_injective' Modified src/group_theory/group_action/group.lean +/- theorem mul_action.to_perm_injective Modified src/group_theory/group_action/opposite.lean Modified src/group_theory/group_action/pi.lean - theorem pi.has_faithful_scalar_at + theorem pi.has_faithful_smul_at Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/units.lean Modified src/group_theory/perm/subgroup.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/operations.lean Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean Modified src/topology/algebra/module/basic.lean 2022-06-05 01:29:35 157013d feat(set_theory/cardinal/cofinality): weaker definition for regular cardinals (#14433) We weaken `c.ord.cof = c` to `c ≤ c.ord.cof` in the definition of regular cardinals, in order to slightly simplify proofs. The lemma `is_regular.cof_eq` shows that this leads to an equivalent definition. ESTIMATED CHANGES Modified src/measure_theory/card_measurable_space.lean Modified src/set_theory/cardinal/cofinality.lean +/- theorem cardinal.is_inaccessible.mk +/- theorem ordinal.cof_ord_le 2022-06-04 21:21:39 741f4de feat(data/fin/tuple/monotone): new file (#14483) ESTIMATED CHANGES Added src/data/fin/tuple/monotone.lean + theorem antitone.vec_cons + theorem antitone_vec_cons + theorem lift_fun_vec_cons + theorem monotone.vec_cons + theorem monotone_vec_cons + theorem strict_anti.vec_cons + theorem strict_anti_vec_cons + theorem strict_mono.vec_cons + theorem strict_mono_vec_cons 2022-06-04 21:21:38 f65b160 feat(set_theory/cardinal/cofinality): basic lemmas on limit cardinals (#14439) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean + theorem cardinal.is_limit.ne_zero + theorem cardinal.is_limit.succ_lt + theorem cardinal.is_strong_limit.ne_zero + theorem cardinal.is_strong_limit.two_power_lt 2022-06-04 19:44:08 d136cd5 chore(data/pi/lex): turn `pi.lex.linear_order` into an instance (#14389) * Use `[is_well_order ι (<)]` instead of `(wf : well_founded ((<) : ι → ι → Prop))`. This way `pi.lex.linear_order` can be an instance. * Add `pi.lex.order_bot`/`pi.lex.order_top`/`pi.lex.bounded_order`. ESTIMATED CHANGES Modified src/data/pi/lex.lean + theorem pi.is_trichotomous_lex +/- theorem pi.lex.le_of_forall_le + theorem pi.lex.le_of_of_lex_le + theorem pi.to_lex_monotone 2022-06-04 19:44:07 9749297 feat(measure_theory/integral/interval_integral): integrability of nonnegative derivatives on open intervals (#14147) Shows that derivatives of continuous functions are integrable when nonnegative. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean +/- theorem integral_rpow + theorem interval_integral.interval_integrable_rpow' Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.integrable_on_Ioc_of_interval_integral_norm_bounded + theorem measure_theory.integrable_on_Ioc_of_interval_integral_norm_bounded_left + theorem measure_theory.integrable_on_Ioc_of_interval_integral_norm_bounded_right Modified src/measure_theory/integral/interval_integral.lean + theorem integrable_on_Icc_iff_integrable_on_Ioc' + theorem integrable_on_Icc_iff_integrable_on_Ioc + theorem integrable_on_Icc_iff_integrable_on_Ioo + theorem integrable_on_Ioc_iff_integrable_on_Ioo' + theorem integrable_on_Ioc_iff_integrable_on_Ioo + theorem interval_integrable.comp_mul_left + theorem interval_integrable.iff_comp_neg + theorem interval_integrable_iff' + theorem interval_integrable_iff_integrable_Icc_of_le - theorem interval_integral.integrable_on_Icc_iff_integrable_on_Ioc' - theorem interval_integral.integrable_on_Icc_iff_integrable_on_Ioc + theorem interval_integral.integrable_on_deriv_of_nonneg + theorem interval_integral.integrable_on_deriv_right_of_nonneg - theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le_real' + theorem interval_integral.interval_integrable_deriv_of_nonneg - theorem interval_integral.interval_integrable_iff_integrable_Icc_of_le +/- theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le + theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le_Ico 2022-06-04 17:34:23 93fb534 refactor(topology/vector_bundle): split file (#14535) Also: * Rename `pullback` -> `topological_vector_bundle.pullback` * Use `delta_instance` instead of `local attribute [reducible]` * Change module doc * Remove transitive import ESTIMATED CHANGES Modified src/geometry/manifold/tangent_bundle.lean Renamed src/topology/vector_bundle.lean to src/topology/vector_bundle/basic.lean - theorem inducing_pullback_total_space_embedding - theorem pullback.continuous_lift - theorem pullback.continuous_proj - theorem pullback.continuous_total_space_mk - def pullback_topology - theorem topological_vector_bundle.prod.inducing_diag - theorem topological_vector_bundle.trivialization.base_set_prod - theorem topological_vector_bundle.trivialization.continuous_linear_equiv_at_prod - theorem topological_vector_bundle.trivialization.prod.continuous_inv_fun - theorem topological_vector_bundle.trivialization.prod.continuous_to_fun - def topological_vector_bundle.trivialization.prod.inv_fun' - theorem topological_vector_bundle.trivialization.prod.left_inv - theorem topological_vector_bundle.trivialization.prod.right_inv - def topological_vector_bundle.trivialization.prod.to_fun' - def topological_vector_bundle.trivialization.prod - theorem topological_vector_bundle.trivialization.prod_apply - theorem topological_vector_bundle.trivialization.prod_symm_apply - def topological_vector_bundle.trivialization.pullback Added src/topology/vector_bundle/prod.lean + theorem topological_vector_bundle.prod.inducing_diag + theorem topological_vector_bundle.trivialization.base_set_prod + theorem topological_vector_bundle.trivialization.continuous_linear_equiv_at_prod + theorem topological_vector_bundle.trivialization.prod.continuous_inv_fun + theorem topological_vector_bundle.trivialization.prod.continuous_to_fun + def topological_vector_bundle.trivialization.prod.inv_fun' + theorem topological_vector_bundle.trivialization.prod.left_inv + theorem topological_vector_bundle.trivialization.prod.right_inv + def topological_vector_bundle.trivialization.prod.to_fun' + def topological_vector_bundle.trivialization.prod + theorem topological_vector_bundle.trivialization.prod_apply + theorem topological_vector_bundle.trivialization.prod_symm_apply Added src/topology/vector_bundle/pullback.lean + theorem inducing_pullback_total_space_embedding + theorem pullback.continuous_lift + theorem pullback.continuous_proj + theorem pullback.continuous_total_space_mk + def pullback_topology + def topological_vector_bundle.trivialization.pullback 2022-06-04 17:34:22 3103a89 feat(analysis/special_functions/exp): a lemma about `exp (f x) =O[l] const _ _` (#14524) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O_const_left_iff_pos_le_norm Modified src/analysis/special_functions/exp.lean + theorem real.is_O_one_exp_comp 2022-06-04 17:34:21 19b5786 feat(tactic/set): fix a bug (#14488) We make the behaviour of `tactic.interactive.set` closer to that of `tactic.interactive.let`, this should fix the following issue reported in https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/set.20bug.3F/near/284471523: ```lean import ring_theory.adjoin.basic example {R S : Type*} [comm_ring R] [comm_ring S] [algebra R S] (x : S): false := begin let y : algebra.adjoin R ({x} : set S) := ⟨x, algebra.self_mem_adjoin_singleton R x⟩, -- works set y : algebra.adjoin R ({x} : set S) := ⟨x, algebra.self_mem_adjoin_singleton R x⟩, -- error sorry end ``` This is related to [lean#555 ](https://github.com/leanprover-community/lean/pull/555) I also fix two completely unrelated docstrings (where the list syntax created two lists instead of one) as I wouldn't want to separately add them to CI... ESTIMATED CHANGES Modified src/algebra/order/lattice_group.lean Modified src/data/nat/prime.lean Modified src/tactic/interactive.lean Modified test/set.lean + inductive foo 2022-06-04 17:34:20 a869df9 feat(analysis/asymptotics/asymptotics): generalize `is_*.inv_rev` (#14486) Use weaker assumption `∀ᶠ x in l, f x = 0 → g x = 0` instead of `∀ᶠ x in l, f x ≠ 0`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean Modified src/measure_theory/integral/circle_integral.lean 2022-06-04 17:34:19 8a6a793 refactor(data/fin/basic): reformulate `fin.strict_mono_iff_lt_succ` (#14482) Use `fin.succ_cast` and `fin.succ`. This way we lose the case `n = 0` but the statement looks more natural in other cases. Also add versions for `monotone`, `antitone`, and `strict_anti`. ESTIMATED CHANGES Modified src/combinatorics/composition.lean Modified src/data/fin/basic.lean + theorem fin.antitone_iff_succ_le + theorem fin.lift_fun_iff_succ + theorem fin.monotone_iff_le_succ + theorem fin.strict_anti_iff_succ_lt +/- theorem fin.strict_mono_iff_lt_succ Modified src/order/jordan_holder.lean 2022-06-04 17:34:18 cab5a45 refactor(order/directed): use `(≥)` instead of `swap (≤)` (#14474) ESTIMATED CHANGES Modified src/analysis/convex/quasiconvex.lean +/- theorem quasiconcave_on.convex Modified src/category_theory/filtered.lean Modified src/order/directed.lean +/- theorem exists_le_le +/- theorem exists_lt_of_directed_ge +/- theorem is_bot_iff_is_min +/- theorem is_bot_or_exists_lt Modified src/order/ideal.lean +/- theorem order.ideal.inter_nonempty 2022-06-04 17:34:17 b5973ba feat(measure_theory/measure/measure_space): there exists a ball of positive measure (#14449) Motivated by #12933 ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.exists_pos_ball + theorem measure_theory.exists_pos_measure_of_cover + theorem measure_theory.exists_pos_preimage_ball 2022-06-04 15:25:58 cfcc3a1 chore(data/finsupp/basic): make arguments explicit (#14551) This follow the pattern that arguments to an `=` lemma should be explicit if they're not implied by other arguments. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/grading.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.single_add +/- theorem finsupp.single_eq_pi_single +/- theorem finsupp.single_eq_update +/- theorem finsupp.single_neg +/- theorem finsupp.single_sub +/- theorem finsupp.single_zero +/- theorem finsupp.support_single_ne_zero Modified src/data/finsupp/multiset.lean Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.C_add Modified src/data/mv_polynomial/variables.lean Modified src/data/polynomial/basic.lean Modified src/group_theory/free_abelian_group_finsupp.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/std_basis.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/polynomial/homogeneous.lean Modified src/ring_theory/polynomial/symmetric.lean 2022-06-04 15:25:56 b949240 feat(algebra/{lie/subalgebra,module/submodule/pointwise}): submodules and lie subalgebras form canonically ordered additive monoids under addition (#14529) We can't actually make these instances because they result in loops for `simp`. The `le_iff_exists_sup` lemma is probably not very useful for much beyond these new instances, but it matches `le_iff_exists_add`. ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean + def lie_subalgebra.canonically_ordered_add_monoid Modified src/algebra/module/submodule/pointwise.lean + def submodule.canonically_ordered_add_monoid Modified src/order/lattice.lean + theorem le_iff_exists_sup Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/nilpotent.lean 2022-06-04 15:25:56 83c1cd8 feat(set_theory/cardinal/cofinality): `ω` is a strong limit cardinal (#14436) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean + theorem cardinal.is_limit_omega + theorem cardinal.is_strong_limit_omega 2022-06-04 15:25:55 0746194 feat(set_theory/cardinal/cofinality): limit cardinal is at least `ω` (#14432) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean + theorem cardinal.is_limit.omega_le 2022-06-04 15:25:54 15726ee move(set_theory/{schroeder_bernstein → cardinal/schroeder_bernstein}): move file (#14426) Schroeder-Bernstein is ultimately the statement that cardinals are a total order, so it should go in that folder. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean Renamed src/set_theory/schroeder_bernstein.lean to src/set_theory/cardinal/schroeder_bernstein.lean 2022-06-04 15:25:53 1f196cb feat(data/list/nodup): Add `list.nodup_iff` (#14371) Add `list.nodup_iff` and two helper lemmas `list.nth_le_eq_iff` and `list.some_nth_le_eq` ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_le_eq_iff + theorem list.some_nth_le_eq Modified src/data/list/nodup.lean + theorem list.nodup_iff_nth_ne_nth 2022-06-04 13:17:06 aa7d90b doc(set_theory/ordinal/natural_ops): mention alternate names (#14546) ESTIMATED CHANGES Modified src/set_theory/ordinal/natural_ops.lean 2022-06-04 13:17:05 8ef2c02 chore(order/bounded_order): move `order_dual` instances up, use them to golf lemmas (#14544) I only golf lemmas and `Prop`-valued instances to be sure that I don't add `order_dual`s to the statements. ESTIMATED CHANGES Modified src/order/bounded_order.lean +/- theorem not_is_max_bot - theorem of_dual_bot - theorem of_dual_top + theorem order_dual.of_dual_bot + theorem order_dual.of_dual_top + theorem order_dual.to_dual_bot + theorem order_dual.to_dual_top - theorem to_dual_bot - theorem to_dual_top +/- theorem with_top.not_top_le_coe 2022-06-04 13:17:04 5002452 refactor(topology): move code around (#14525) Create a new file `topology/inseparable` and more the definitions of `specializes` and `inseparable` to this file. This is a preparation to a larger refactor of these definitions. ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + theorem continuous_map.map_specialization Added src/topology/inseparable.lean + theorem inseparable.map + def inseparable + theorem inseparable_iff_closed + theorem inseparable_iff_closure + theorem inseparable_iff_nhds_eq + theorem inseparable_iff_specializes_and + theorem specialization_order.monotone_of_continuous + def specialization_preorder + theorem specializes.map + theorem specializes.trans + def specializes + theorem specializes_def + theorem specializes_iff_closure_subset + theorem specializes_iff_forall_closed + theorem specializes_iff_forall_open + theorem specializes_refl + theorem specializes_rfl + theorem subtype_inseparable_iff Modified src/topology/separation.lean - theorem inseparable.map - def inseparable - theorem inseparable_iff_closed - theorem inseparable_iff_closure - theorem inseparable_iff_nhds_eq + def specialization_order + theorem specializes.eq + theorem specializes_antisymm + theorem specializes_iff_eq - theorem subtype_inseparable_iff Modified src/topology/sober.lean - theorem continuous_map.map_specialization - theorem inseparable_iff_specializes_and - theorem specialization_order.monotone_of_continuous - def specialization_order - def specialization_preorder - theorem specializes.eq - theorem specializes.map - theorem specializes.trans - def specializes - theorem specializes_antisymm - theorem specializes_def - theorem specializes_iff_closure_subset - theorem specializes_iff_eq - theorem specializes_iff_forall_closed - theorem specializes_iff_forall_open - theorem specializes_refl - theorem specializes_rfl 2022-06-04 13:17:03 66b618d perf(measure_theory/probability_mass_function/monad): speed up proof (#14519) This causes a deterministic timeout in another PR. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/monad.lean 2022-06-04 13:17:02 3f26dfe feat(data/int/basic): Units are either equal or negatives of each other (#14517) This PR adds a lemma stating that units in the integers are either equal or negatives of each other. I have found this lemma to be useful for casework. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.is_unit_eq_or_eq_neg 2022-06-04 13:17:01 b332507 feat(data/int/basic): Forward direction of `is_unit_iff_nat_abs_eq` (#14516) This PR adds the forward direction of `is_unit_iff_nat_abs_eq` as a separate lemma. This is useful since you often have `is_unit n` as a hypothesis, and `is_unit_iff_nat_abs_eq.mp hn` is a bit of a mouthful. ESTIMATED CHANGES Modified src/data/int/basic.lean 2022-06-04 13:17:00 2a9be5b feat(analysis/special_functions): lemmas about filter `map`/`comap` (#14513) * add `comap_inf_principal_range` and `comap_nhds_within_range`; * add `@[simp]` to `real.comap_exp_nhds_within_Ioi_zero`; * add `real.comap_exp_nhds_zero`, `complex.comap_exp_comap_abs_at_top`, `complex.comap_exp_nhds_zero`, `complex.comap_exp_nhds_within_zero`, and `complex.tendsto_exp_nhds_zero_iff`; * add `complex.map_exp_comap_re_at_bot` and `complex.map_exp_comap_re_at_top`; * add `comap_norm_nhds_zero` and `complex.comap_abs_nhds_zero`. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.comap_abs_nhds_zero Modified src/analysis/normed/group/basic.lean + theorem comap_norm_nhds_zero Modified src/analysis/special_functions/complex/log.lean + theorem complex.map_exp_comap_re_at_bot + theorem complex.map_exp_comap_re_at_top Modified src/analysis/special_functions/exp.lean + theorem complex.comap_exp_comap_abs_at_top + theorem complex.comap_exp_nhds_within_zero + theorem complex.comap_exp_nhds_zero + theorem complex.tendsto_exp_nhds_zero_iff +/- theorem real.comap_exp_nhds_within_Ioi_zero + theorem real.comap_exp_nhds_zero Modified src/order/filter/basic.lean + theorem filter.comap_inf_principal_range Modified src/topology/continuous_on.lean + theorem comap_nhds_within_range 2022-06-04 13:16:59 0e943b1 feat(order/boolean_algebra, set/basic): some compl lemmas (#14508) Added a few lemmas about complementation, and rephrased `compl_compl` and `mem_compl_image` to apply in `boolean_algebra` rather than `set (set _ ))`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.compl_compl_image +/- theorem set.mem_compl_image + theorem set.preimage_compl_eq_image_compl Modified src/order/boolean_algebra.lean + theorem compl_eq_comm + theorem disjoint_iff_le_compl_left + theorem disjoint_iff_le_compl_right + theorem eq_compl_comm 2022-06-04 13:16:58 27c4241 feat(set_theory/ordinal/arithmetic): `has_exists_add_of_le` instance for `ordinal` (#14499) ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean 2022-06-04 11:12:53 7c57af9 feat(order/bounds): Bounds on `set.image2` (#14306) `set.image2` analogues to the `set.image` lemmas. ESTIMATED CHANGES Modified src/order/bounds.lean + theorem bdd_above.bdd_above_image2_of_bdd_below + theorem bdd_above.bdd_below_image2_of_bdd_above + theorem bdd_above.image2 + theorem bdd_above.image2_bdd_below + theorem bdd_below.bdd_above_image2_of_bdd_above + theorem bdd_below.bdd_below_image2_of_bdd_above + theorem bdd_below.image2 + theorem bdd_below.image2_bdd_above + theorem image2_lower_bounds_lower_bounds_subset + theorem image2_lower_bounds_lower_bounds_subset_lower_bounds_image2 + theorem image2_lower_bounds_upper_bounds_subset_lower_bounds_image2 + theorem image2_lower_bounds_upper_bounds_subset_upper_bounds_image2 + theorem image2_upper_bounds_lower_bounds_subset_lower_bounds_image2 + theorem image2_upper_bounds_lower_bounds_subset_upper_bounds_image2 + theorem image2_upper_bounds_upper_bounds_subset + theorem image2_upper_bounds_upper_bounds_subset_upper_bounds_image2 + theorem is_greatest.image2 + theorem is_greatest.is_greatest_image2_of_is_least + theorem is_greatest.is_least_image2 + theorem is_greatest.is_least_image2_of_is_least + theorem is_least.image2 + theorem is_least.is_greatest_image2 + theorem is_least.is_greatest_image2_of_is_greatest + theorem is_least.is_least_image2_of_is_greatest + theorem mem_lower_bounds_image2 + theorem mem_lower_bounds_image2_of_mem_lower_bounds_of_mem_lower_bounds + theorem mem_lower_bounds_image2_of_mem_lower_bounds_of_mem_upper_bounds + theorem mem_lower_bounds_image2_of_mem_upper_bounds + theorem mem_upper_bounds_image2 + theorem mem_upper_bounds_image2_of_mem_lower_bounds + theorem mem_upper_bounds_image2_of_mem_upper_bounds_of_mem_lower_bounds + theorem mem_upper_bounds_image2_of_mem_upper_bounds_of_mem_upper_bounds 2022-06-04 08:30:21 85fffda feat(order/conditionally_complete_lattice,data/real/nnreal): add 2 lemmas (#14545) Add `cInf_univ` and `nnreal.Inf_empty`. ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.Inf_empty Modified src/order/conditionally_complete_lattice.lean + theorem cInf_univ 2022-06-04 06:32:56 72ac40e feat(data/multiset/basic): add some lemmas (#14421) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.countp_nsmul + theorem multiset.map_eq_cons + theorem multiset.map_surjective_of_surjective + theorem multiset.rel.countp_eq + theorem multiset.rel.trans 2022-06-04 04:55:08 a418945 chore(set_theory/surreal/basic): golf (#14168) We also add some basic lemmas for simplifying the definition of `numeric` when either a game's left or right moves are empty. ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.numeric_of_is_empty + theorem pgame.numeric_of_is_empty_left_moves + theorem pgame.numeric_of_is_empty_right_moves +/- theorem pgame.numeric_one +/- theorem pgame.numeric_zero +/- def surreal.mk 2022-06-04 04:16:45 e1b3351 feat(set_theory/game/pgame): Add dot notation on many lemmas (#14149) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/nim.lean +/- theorem pgame.grundy_value_star +/- theorem pgame.grundy_value_zero Modified src/set_theory/game/pgame.lean + theorem has_le.le.not_lf + theorem pgame.equiv.ge + theorem pgame.equiv.le +/- theorem pgame.equiv_refl +/- theorem pgame.equiv_rfl - theorem pgame.equiv_symm - theorem pgame.equiv_trans + theorem pgame.lf.not_equiv' + theorem pgame.lf.not_equiv + theorem pgame.lf.not_le + theorem pgame.lf.not_lt +/- theorem pgame.lf_irrefl +/- theorem pgame.lf_of_fuzzy +/- theorem pgame.lf_of_lt Modified src/set_theory/game/winner.lean Modified src/set_theory/surreal/basic.lean +/- theorem pgame.le_of_lf +/- theorem pgame.lt_of_lf + theorem pgame.lt_or_equiv_or_gt 2022-06-03 22:33:16 0098286 feat(set_theory/ordinal/natural_ops): define natural addition (#14291) We define the natural addition operation on ordinals. We prove the basic properties, like commutativity, associativity, and cancellativity. We also provide the type synonym `nat_ordinal` for ordinals with natural operations, which allows us to take full advantage of this rich algebraic structure. ESTIMATED CHANGES Added src/set_theory/ordinal/natural_ops.lean + theorem nat_ordinal.add_one_eq_succ + theorem nat_ordinal.induction + theorem nat_ordinal.lt_wf + theorem nat_ordinal.succ_def + def nat_ordinal.to_ordinal + theorem nat_ordinal.to_ordinal_cast_nat + theorem nat_ordinal.to_ordinal_eq_one + theorem nat_ordinal.to_ordinal_eq_zero + theorem nat_ordinal.to_ordinal_max + theorem nat_ordinal.to_ordinal_min + theorem nat_ordinal.to_ordinal_one + theorem nat_ordinal.to_ordinal_symm_eq + theorem nat_ordinal.to_ordinal_to_nat_ordinal + theorem nat_ordinal.to_ordinal_zero + def nat_ordinal + theorem ordinal.add_le_nadd + theorem ordinal.blsub_nadd_of_mono + theorem ordinal.le_of_nadd_le_nadd_left + theorem ordinal.le_of_nadd_le_nadd_right + theorem ordinal.lt_nadd_iff + theorem ordinal.lt_of_nadd_lt_nadd_left + theorem ordinal.lt_of_nadd_lt_nadd_right + theorem ordinal.nadd_assoc + theorem ordinal.nadd_comm + theorem ordinal.nadd_def + theorem ordinal.nadd_le_iff + theorem ordinal.nadd_le_nadd_iff_left + theorem ordinal.nadd_le_nadd_iff_right + theorem ordinal.nadd_le_nadd_left + theorem ordinal.nadd_le_nadd_right + theorem ordinal.nadd_left_cancel + theorem ordinal.nadd_left_cancel_iff + theorem ordinal.nadd_lt_nadd_iff_left + theorem ordinal.nadd_lt_nadd_iff_right + theorem ordinal.nadd_lt_nadd_left + theorem ordinal.nadd_lt_nadd_right + theorem ordinal.nadd_nat + theorem ordinal.nadd_one + theorem ordinal.nadd_right_cancel + theorem ordinal.nadd_right_cancel_iff + theorem ordinal.nadd_succ + theorem ordinal.nadd_zero + theorem ordinal.nat_nadd + theorem ordinal.one_nadd + theorem ordinal.succ_nadd + def ordinal.to_nat_ordinal + theorem ordinal.to_nat_ordinal_cast_nat + theorem ordinal.to_nat_ordinal_eq_one + theorem ordinal.to_nat_ordinal_eq_zero + theorem ordinal.to_nat_ordinal_max + theorem ordinal.to_nat_ordinal_min + theorem ordinal.to_nat_ordinal_one + theorem ordinal.to_nat_ordinal_symm_eq + theorem ordinal.to_nat_ordinal_to_ordinal + theorem ordinal.to_nat_ordinal_zero + theorem ordinal.zero_nadd 2022-06-03 16:16:11 d63246c feat(analysis/calculus/fderiv_measurable): the right derivative is measurable (#14527) We already know that the full Fréchet derivative is measurable. In this PR, we follow the same proof to show that the right derivative of a function defined on the real line is also measurable (the target space may be any complete vector space). ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_mem_iff + theorem deriv_within_Ioi_eq_Ici + theorem deriv_within_mem_iff + theorem differentiable_within_at_Ioi_iff_Ici + theorem has_deriv_at_filter_iff_is_o + theorem has_deriv_at_iff_is_o + theorem has_deriv_within_at_iff_is_o Modified src/analysis/calculus/fderiv.lean + theorem fderiv_within_mem_iff Modified src/analysis/calculus/fderiv_measurable.lean + theorem ae_measurable_deriv_within_Ici + theorem ae_measurable_deriv_within_Ioi + theorem ae_strongly_measurable_deriv_within_Ici + theorem ae_strongly_measurable_deriv_within_Ioi + theorem measurable_deriv_within_Ici + theorem measurable_deriv_within_Ioi + theorem measurable_set_of_differentiable_within_at_Ici + theorem measurable_set_of_differentiable_within_at_Ici_of_is_complete + theorem measurable_set_of_differentiable_within_at_Ioi + def right_deriv_measurable_aux.A + theorem right_deriv_measurable_aux.A_mem_nhds_within_Ioi + theorem right_deriv_measurable_aux.A_mono + def right_deriv_measurable_aux.B + theorem right_deriv_measurable_aux.B_mem_nhds_within_Ioi + def right_deriv_measurable_aux.D + theorem right_deriv_measurable_aux.D_subset_differentiable_set + theorem right_deriv_measurable_aux.differentiable_set_eq_D + theorem right_deriv_measurable_aux.differentiable_set_subset_D + theorem right_deriv_measurable_aux.le_of_mem_A + theorem right_deriv_measurable_aux.measurable_set_B + theorem right_deriv_measurable_aux.mem_A_of_differentiable + theorem right_deriv_measurable_aux.norm_sub_le_of_mem_A + theorem strongly_measurable_deriv_within_Ici + theorem strongly_measurable_deriv_within_Ioi Modified src/measure_theory/constructions/borel_space.lean + theorem measurable_set_of_mem_nhds_within_Ioi + theorem measurable_set_of_mem_nhds_within_Ioi_aux 2022-06-03 16:16:10 2a21a86 refactor(algebra/order/ring): turn `sq_le_sq` into an `iff` (#14511) * `sq_le_sq` and `sq_lt_sq` are now `iff` lemmas; * drop `abs_le_abs_of_sq_le_sq` and `abs_lt_abs_of_sq_lt_sq`. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean - theorem abs_le_abs_of_sq_le_sq - theorem abs_lt_abs_of_sq_lt_sq +/- theorem sq_le_sq +/- theorem sq_lt_sq Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/special_functions/bernstein.lean + theorem bernstein_approximation.δ_pos Modified src/number_theory/modular.lean 2022-06-03 14:08:37 fa22603 docs(order/boolean_algebra): typo in generalized boolean algebra doc (#14536) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean 2022-06-03 12:27:32 6ca5910 feat(measure_theory/integral/lebesgue): approximate a function by a finite integral function in a sigma-finite measure space. (#14528) If `L < ∫⁻ x, f x ∂μ`, then there exists a measurable function `g ≤ f` (even a simple function) with finite integral and `L < ∫⁻ x, g x ∂μ`, if the measure is sigma-finite. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.exists_lt_lintegral_simple_func_of_lt_lintegral + theorem measure_theory.simple_func.exists_lt_lintegral_simple_func_of_lt_lintegral Modified src/measure_theory/measure/regular.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.exists_lt_add_of_lt_add 2022-06-03 10:31:17 bec8b65 feat(analysis/calculus/tangent_cone): unique differentiability of open interval at endpoint (#14530) We show that, if a point belongs to the closure of a convex set with nonempty interior, then it is a point of unique differentiability. We apply this to the specific situation of `Ioi` and `Iio`. ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean + theorem mem_tangent_cone_of_open_segment_subset + theorem unique_diff_within_at_Iio + theorem unique_diff_within_at_Ioi + theorem unique_diff_within_at_convex 2022-06-03 10:31:16 705160e feat(algebra/char_zero): add a lemma `ring_hom.injective_nat` (#14414) Note that there is a lemma `ring_hom.injective_int`. ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem ring_hom.injective_nat 2022-06-03 10:31:15 d2dcb74 feat(data/polynomial/eval): reduce assumptions, add a lemma (#14391) Note that there is a lemma `mv_polynomial.support_map_of_injective`. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.support_map_of_injective +/- theorem polynomial.support_map_subset 2022-06-03 10:31:14 c9d69a4 feat(topology/algebra/module/finite_dimension): all linear maps from a finite dimensional T2 TVS are continuous (#13460) Summary of the changes : - generalize a bunch of results from `analysis/normed_space/finite_dimension` (main ones are : `continuous_equiv_fun_basis`, `linear_map.continuous_of_finite_dimensional`, and related constructions like `linear_map.to_continuous_linear_map`) to arbitrary TVSs, and move them to a new file `topology/algebra/module/finite_dimension` - generalize `linear_map.continuous_iff_is_closed_ker` to arbitrary TVSs, and move it from `analysis/normed_space/operator_norm` to the new file - as needed by the generalizations, add lemma `unique_topology_of_t2` : if `𝕜` is a nondiscrete normed field, any T2 topology on `𝕜` which makes it a topological vector space over itself (with the norm topology) is *equal* to the norm topology - finally, change `pi_eq_sum_univ` to take any `decidable_eq` instance (not just the classical ones), and fix later uses ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean - theorem continuous_equiv_fun_basis - theorem continuous_linear_map.coe_to_continuous_linear_equiv_of_det_ne_zero - def continuous_linear_map.to_continuous_linear_equiv_of_det_ne_zero - theorem continuous_linear_map.to_continuous_linear_equiv_of_det_ne_zero_apply - theorem linear_equiv.coe_to_continuous_linear_equiv' - theorem linear_equiv.coe_to_continuous_linear_equiv - theorem linear_equiv.coe_to_continuous_linear_equiv_symm' - theorem linear_equiv.coe_to_continuous_linear_equiv_symm - def linear_equiv.to_continuous_linear_equiv - theorem linear_equiv.to_linear_equiv_to_continuous_linear_equiv - theorem linear_equiv.to_linear_equiv_to_continuous_linear_equiv_symm - theorem linear_map.coe_to_continuous_linear_map' - theorem linear_map.coe_to_continuous_linear_map - theorem linear_map.coe_to_continuous_linear_map_symm - theorem linear_map.continuous_of_finite_dimensional - theorem linear_map.continuous_on_pi - def linear_map.to_continuous_linear_map Modified src/analysis/normed_space/operator_norm.lean - theorem linear_map.continuous_iff_is_closed_ker Modified src/linear_algebra/basic.lean +/- theorem linear_map.pi_apply_eq_sum_univ +/- theorem pi_eq_sum_univ Modified src/linear_algebra/matrix/adjugate.lean Modified src/ring_theory/ideal/quotient.lean Added src/topology/algebra/module/finite_dimension.lean + theorem continuous_equiv_fun_basis + theorem continuous_linear_map.coe_to_continuous_linear_equiv_of_det_ne_zero + def continuous_linear_map.to_continuous_linear_equiv_of_det_ne_zero + theorem continuous_linear_map.to_continuous_linear_equiv_of_det_ne_zero_apply + theorem linear_equiv.coe_to_continuous_linear_equiv' + theorem linear_equiv.coe_to_continuous_linear_equiv + theorem linear_equiv.coe_to_continuous_linear_equiv_symm' + theorem linear_equiv.coe_to_continuous_linear_equiv_symm + def linear_equiv.to_continuous_linear_equiv + theorem linear_equiv.to_linear_equiv_to_continuous_linear_equiv + theorem linear_equiv.to_linear_equiv_to_continuous_linear_equiv_symm + theorem linear_map.coe_to_continuous_linear_map' + theorem linear_map.coe_to_continuous_linear_map + theorem linear_map.coe_to_continuous_linear_map_symm + theorem linear_map.continuous_iff_is_closed_ker + theorem linear_map.continuous_of_finite_dimensional + theorem linear_map.continuous_of_is_closed_ker + theorem linear_map.continuous_on_pi + def linear_map.to_continuous_linear_map + theorem unique_topology_of_t2 2022-06-03 08:57:19 31cbfbb feat(linear_algebra/basis): repr_support_of_mem_span (#14504) This lemma states that if a vector is in the span of a subset of the basis vectors, only this subset of basis vectors will be used in its `repr` representation. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.repr_support_subset_of_mem_span 2022-06-03 07:58:59 2b69bb4 feat(analysis/complex/upper_half_plane): extend action on upper half plane to GL_pos (#12415) This extends the action on the upper half plane from `SL_2` to `GL_pos`, ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane.lean + theorem upper_half_plane.SL_neg_smul + theorem upper_half_plane.SL_on_GL_pos_smul_apply +/- theorem upper_half_plane.coe_smul +/- def upper_half_plane.denom + theorem upper_half_plane.denom_apply +/- theorem upper_half_plane.denom_cocycle +/- theorem upper_half_plane.denom_ne_zero +/- theorem upper_half_plane.im_smul +/- theorem upper_half_plane.im_smul_eq_div_norm_sq +/- theorem upper_half_plane.mul_smul' +/- theorem upper_half_plane.neg_smul +/- theorem upper_half_plane.norm_sq_denom_ne_zero +/- theorem upper_half_plane.norm_sq_denom_pos +/- def upper_half_plane.num +/- theorem upper_half_plane.re_smul + theorem upper_half_plane.sl_moeb +/- def upper_half_plane.smul_aux' +/- theorem upper_half_plane.smul_aux'_im +/- def upper_half_plane.smul_aux + theorem upper_half_plane.special_linear_group.im_smul_eq_div_norm_sq + theorem upper_half_plane.subgroup_moeb + theorem upper_half_plane.subgroup_on_GL_pos_smul_apply + theorem upper_half_plane.subgroup_on_SL_apply + theorem upper_half_plane.subgroup_to_sl_moeb Modified src/number_theory/modular.lean +/- theorem modular_group.coe_T_zpow_smul_eq - theorem modular_group.coe_smul - theorem modular_group.denom_apply - theorem modular_group.im_smul - theorem modular_group.im_smul_eq_div_norm_sq - theorem modular_group.neg_smul - theorem modular_group.re_smul - theorem modular_group.smul_coe 2022-06-02 21:38:24 1a1895c feat(data/nat/basic): add lemmas about `nat.bit_cases_on` (#14481) Also drop `nat.bit_cases` (was the same definition with a different order of arguments). ESTIMATED CHANGES Modified src/data/nat/basic.lean - def nat.bit_cases + theorem nat.bit_cases_on_bit0 + theorem nat.bit_cases_on_bit1 + theorem nat.bit_cases_on_bit + theorem nat.bit_cases_on_inj + theorem nat.bit_cases_on_injective 2022-06-02 19:38:29 ade30c3 feat(data/int/basic): Lemmas for when a square equals 1 (#14501) This PR adds two lemmas for when a square equals one. The `lt` lemma will be useful for irreducibility of x^n-x-1. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.sq_eq_one_of_sq_le_three + theorem int.sq_eq_one_of_sq_lt_four 2022-06-02 19:38:28 e443331 refactor(field_theory/normal): generalize `lift_normal` and `restrict_normal` (#14450) This generalization seems useful. The example I have in mind is restricting a map `ϕ : E →ₐ[F] (algebraic_closure E)` to a map `ϕ : E →ₐ[F] E` when E/F is normal. Coauthored by @mariainesdff ESTIMATED CHANGES Modified src/field_theory/normal.lean +/- theorem alg_equiv.lift_normal_commutes +/- theorem alg_equiv.restrict_lift_normal +/- def alg_equiv.restrict_normal_hom +/- theorem alg_equiv.restrict_normal_hom_surjective +/- theorem alg_hom.lift_normal_commutes +/- theorem alg_hom.restrict_lift_normal + def alg_hom.restrict_normal' +/- theorem is_solvable_of_is_scalar_tower 2022-06-02 17:31:51 ae02583 refactor(data/set/finite): protect `set.finite` (#14344) This change will make it so that it does not conflict with a top-level `finite` that will be added to complement `infinite`. ESTIMATED CHANGES Modified roadmap/topology/shrinking_lemma.lean Modified src/algebra/big_operators/finprod.lean +/- theorem mul_finprod_cond_ne Modified src/algebra/star/pointwise.lean +/- theorem set.finite.star Modified src/analysis/convex/combination.lean +/- theorem set.finite.convex_hull_eq +/- theorem set.finite.convex_hull_eq_image Modified src/analysis/convex/topology.lean +/- theorem set.finite.compact_convex_hull +/- theorem set.finite.is_closed_convex_hull Modified src/data/polynomial/ring_division.lean Modified src/data/set/countable.lean +/- theorem set.finite.countable Modified src/data/set/finite.lean +/- theorem set.exists_max_image +/- theorem set.exists_min_image +/- theorem set.finite.bdd_above_bUnion +/- theorem set.finite.bdd_below_bUnion +/- theorem set.finite.fin_embedding +/- theorem set.finite.finite_subsets +/- theorem set.finite.inf_of_left +/- theorem set.finite.inf_of_right +/- theorem set.finite.map +/- theorem set.finite.of_diff +/- theorem set.finite.sUnion +/- theorem set.finite.sup +/- inductive set.finite +/- theorem set.finite_is_bot +/- theorem set.finite_is_top +/- theorem set.finite_le_nat +/- theorem set.finite_lt_nat +/- theorem set.finite_mem_finset +/- theorem set.finite_option +/- theorem set.finite_range_const +/- theorem set.finite_range_ite +/- theorem set.finite_subset_Union +/- theorem set.subsingleton.finite Modified src/data/set/pointwise.lean +/- theorem set.finite.inv +/- theorem set.finite.mul +/- theorem set.finite.smul +/- theorem set.finite.smul_set +/- theorem set.finite.vsub Modified src/linear_algebra/finite_dimensional.lean +/- theorem finrank_span_le_card +/- theorem finrank_span_set_eq_card Modified src/linear_algebra/linear_independent.lean Modified src/measure_theory/integral/integrable_on.lean +/- theorem measure_theory.integrable_on_finite_Union Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean +/- theorem set.finite.measurable_set +/- theorem set.finite.measurable_set_bInter +/- theorem set.finite.measurable_set_bUnion +/- theorem set.finite.measurable_set_sInter +/- theorem set.finite.measurable_set_sUnion Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.count_apply_finite Modified src/measure_theory/measure/measure_space_def.lean +/- theorem measure_theory.measure_bUnion_lt_top Modified src/measure_theory/measure/null_measurable.lean +/- theorem set.finite.null_measurable_set_bInter +/- theorem set.finite.null_measurable_set_bUnion +/- theorem set.finite.null_measurable_set_sInter +/- theorem set.finite.null_measurable_set_sUnion Modified src/model_theory/finitely_generated.lean +/- theorem first_order.language.substructure.fg_closure Modified src/order/conditionally_complete_lattice.lean +/- theorem set.finite.cSup_lt_iff +/- theorem set.finite.lt_cInf_iff +/- theorem set.nonempty.cInf_mem +/- theorem set.nonempty.cSup_mem Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean +/- theorem filter.bInter_mem +/- theorem filter.infi_principal_finite +/- theorem filter.mem_infi_of_Inter +/- theorem filter.sInter_mem Modified src/order/filter/cofinite.lean +/- theorem filter.mem_cofinite Modified src/order/filter/pi.lean +/- theorem filter.pi_mem_pi +/- theorem filter.pi_mem_pi_iff Modified src/order/filter/ultrafilter.lean +/- theorem ultrafilter.finite_bUnion_mem_iff +/- theorem ultrafilter.finite_sUnion_mem_iff Modified src/order/locally_finite.lean +/- theorem set.finite_Icc +/- theorem set.finite_Ici +/- theorem set.finite_Ico +/- theorem set.finite_Iic +/- theorem set.finite_Iio +/- theorem set.finite_Ioc +/- theorem set.finite_Ioi +/- theorem set.finite_Ioo Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/noetherian.lean +/- theorem submodule.fg_span Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.lt_omega_iff_finite Modified src/topology/G_delta.lean +/- theorem set.finite.is_Gδ +/- theorem set.finite.is_Gδ_compl Modified src/topology/bases.lean +/- theorem set.finite.is_separable Modified src/topology/basic.lean +/- theorem is_closed_bUnion +/- theorem is_open_bInter +/- theorem is_open_sInter Modified src/topology/bornology/basic.lean +/- theorem bornology.is_bounded_bUnion +/- theorem bornology.is_bounded_sUnion +/- theorem bornology.is_cobounded_bInter +/- theorem bornology.is_cobounded_sInter Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/metric_space/basic.lean +/- theorem metric.bounded_bUnion +/- theorem metric.bounded_of_finite Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_dimension.lean +/- theorem dimH_finite Modified src/topology/metric_space/metric_separated.lean +/- theorem is_metric_separated.finite_Union_left_iff +/- theorem is_metric_separated.finite_Union_right_iff Modified src/topology/metric_space/metrizable.lean Modified src/topology/metric_space/shrinking_lemma.lean +/- theorem exists_Union_ball_eq_radius_lt Modified src/topology/partition_of_unity.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/shrinking_lemma.lean +/- theorem exists_Union_eq_closed_subset +/- theorem exists_Union_eq_closure_subset Modified src/topology/subset_properties.lean +/- theorem set.finite.compact_bUnion +/- theorem set.finite.is_compact Modified src/topology/uniform_space/cauchy.lean 2022-06-02 17:31:49 28031a8 feat(number_theory/factorization): evaluating arithmetic functions at prime powers (#13817) ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean Modified src/data/int/cast.lean + theorem int.cast_ite Modified src/data/list/dedup.lean + theorem list.repeat_dedup Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.card_distinct_factors_apply_prime + theorem nat.arithmetic_function.card_distinct_factors_apply_prime_pow + theorem nat.arithmetic_function.card_distinct_factors_one + theorem nat.arithmetic_function.card_factors_apply_prime + theorem nat.arithmetic_function.card_factors_apply_prime_pow +/- theorem nat.arithmetic_function.coe_zeta_mul_coe_moebius + theorem nat.arithmetic_function.int_coe_mul + theorem nat.arithmetic_function.int_coe_one + theorem nat.arithmetic_function.is_multiplicative_one + theorem nat.arithmetic_function.moebius_apply_is_prime_pow_not_prime +/- theorem nat.arithmetic_function.moebius_apply_of_squarefree + theorem nat.arithmetic_function.moebius_apply_one + theorem nat.arithmetic_function.moebius_apply_prime + theorem nat.arithmetic_function.moebius_apply_prime_pow +/- theorem nat.arithmetic_function.moebius_eq_zero_of_not_squarefree + theorem nat.arithmetic_function.mul_apply_one + theorem nat.arithmetic_function.nat_coe_mul + theorem nat.arithmetic_function.nat_coe_one + theorem nat.arithmetic_function.one_apply +/- theorem nat.arithmetic_function.one_apply_ne +/- theorem nat.arithmetic_function.one_one + theorem nat.arithmetic_function.pow_zero_eq_zeta +/- theorem nat.arithmetic_function.sigma_one_apply + theorem nat.arithmetic_function.sigma_zero_apply + theorem nat.arithmetic_function.sigma_zero_apply_prime_pow 2022-06-02 15:58:16 0575db0 feat(topology/vector_bundle): define some useful linear maps globally (#14484) * Define `pretrivialization.symmₗ`, `pretrivialization.linear_map_at`, `trivialization.symmL`, `trivialization.continuous_linear_map_at` * These are globally-defined (continuous) linear maps. They are linear equivalences on `e.base_set`, but it is useful to define these globally. They are defined as `0` outside `e.base_set` * These are convenient to define the vector bundle of continuous linear maps. ESTIMATED CHANGES Modified src/topology/continuous_on.lean + theorem continuous_if_const Modified src/topology/vector_bundle.lean + theorem topological_vector_bundle.pretrivialization.coe_linear_map_at + theorem topological_vector_bundle.pretrivialization.coe_linear_map_at_of_mem + theorem topological_vector_bundle.pretrivialization.coe_symm_of_not_mem + theorem topological_vector_bundle.pretrivialization.linear_map_at_apply + theorem topological_vector_bundle.pretrivialization.linear_map_at_def_of_mem + theorem topological_vector_bundle.pretrivialization.linear_map_at_def_of_not_mem + theorem topological_vector_bundle.pretrivialization.linear_map_at_eq_zero + theorem topological_vector_bundle.pretrivialization.linear_map_at_symmₗ + theorem topological_vector_bundle.pretrivialization.symmₗ_linear_map_at + theorem topological_vector_bundle.trivialization.coe_continuous_linear_equiv_at_eq + theorem topological_vector_bundle.trivialization.coe_linear_map_at + theorem topological_vector_bundle.trivialization.coe_linear_map_at_of_mem + theorem topological_vector_bundle.trivialization.coe_symmₗ +/- def topological_vector_bundle.trivialization.continuous_linear_equiv_at + def topological_vector_bundle.trivialization.continuous_linear_map_at + theorem topological_vector_bundle.trivialization.continuous_linear_map_at_symmL + theorem topological_vector_bundle.trivialization.linear_equiv_at_apply + theorem topological_vector_bundle.trivialization.linear_equiv_at_symm_apply + theorem topological_vector_bundle.trivialization.linear_map_at_apply + theorem topological_vector_bundle.trivialization.linear_map_at_def_of_mem + theorem topological_vector_bundle.trivialization.linear_map_at_def_of_not_mem + theorem topological_vector_bundle.trivialization.linear_map_at_symmₗ + def topological_vector_bundle.trivialization.symmL + theorem topological_vector_bundle.trivialization.symmL_continuous_linear_map_at + theorem topological_vector_bundle.trivialization.symm_continuous_linear_equiv_at_eq + theorem topological_vector_bundle.trivialization.symmₗ_linear_map_at 2022-06-02 15:58:15 c5f8d78 doc(set_theory/cardinal/cofinality): add myself as author (#14469) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean 2022-06-02 15:58:14 4bd8c85 feat(category_theory/limits): is_kernel_of_comp (#14409) From LTE. Also rename `lift_comp_ι` to `lift_ι` for consistency with the general `has_limit` versions. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/equalizers.lean - theorem category_theory.limits.cofork.is_colimit.π_comp_desc + theorem category_theory.limits.cofork.is_colimit.π_desc - theorem category_theory.limits.fork.is_limit.lift_comp_ι + theorem category_theory.limits.fork.is_limit.lift_ι Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.is_cokernel_of_comp + def category_theory.limits.is_kernel_of_comp Modified src/category_theory/monad/monadicity.lean 2022-06-02 15:58:13 2941590 feat(linear_algebra/matrix): Spectral theorem for matrices (#14231) ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem euclidean_space.inner_eq_star_dot_product Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.equiv_apply' +/- theorem pi_Lp.equiv_apply + theorem pi_Lp.equiv_symm_apply' +/- theorem pi_Lp.equiv_symm_apply Modified src/linear_algebra/matrix/basis.lean + theorem basis_to_matrix_basis_fun_mul + theorem basis_to_matrix_mul + theorem mul_basis_to_matrix Added src/linear_algebra/matrix/hermitian.lean + theorem matrix.conj_transpose_map + theorem matrix.is_hermitian.add + theorem matrix.is_hermitian.apply + theorem matrix.is_hermitian.conj_transpose + theorem matrix.is_hermitian.eq + theorem matrix.is_hermitian.ext + theorem matrix.is_hermitian.ext_iff + theorem matrix.is_hermitian.from_blocks + theorem matrix.is_hermitian.map + theorem matrix.is_hermitian.minor + theorem matrix.is_hermitian.neg + theorem matrix.is_hermitian.sub + theorem matrix.is_hermitian.transpose + def matrix.is_hermitian + theorem matrix.is_hermitian_add_transpose_self + theorem matrix.is_hermitian_diagonal + theorem matrix.is_hermitian_from_blocks_iff + theorem matrix.is_hermitian_iff_is_self_adjoint + theorem matrix.is_hermitian_mul_conj_transpose_self + theorem matrix.is_hermitian_one + theorem matrix.is_hermitian_transpose_add_self + theorem matrix.is_hermitian_transpose_mul_self + theorem matrix.is_hermitian_zero Added src/linear_algebra/matrix/spectrum.lean + theorem matrix.is_hermitian.eigenvector_matrix_mul_inv + theorem matrix.is_hermitian.spectral_theorem Modified src/linear_algebra/matrix/to_lin.lean +/- theorem matrix.mul_vec_std_basis + theorem matrix.mul_vec_std_basis_apply 2022-06-02 13:48:11 4e1eeeb feat(tactic/linear_combination): allow combinations of arbitrary proofs (#14229) This changes the syntax of `linear_combination` so that the combination is expressed using arithmetic operation. Credit to @digama0 for the parser. See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2313979.20arbitrary.20proof.20terms.20in.20.60linear_combination.60) for more details. ESTIMATED CHANGES Modified archive/100-theorems-list/37_solution_of_cubic.lean Modified archive/imo/imo2001_q6.lean Modified archive/imo/imo2008_q3.lean Modified archive/imo/imo2008_q4.lean Modified src/algebra/quadratic_discriminant.lean Modified src/data/polynomial/identities.lean Modified src/meta/expr.lean Modified src/number_theory/fermat4.lean Modified src/ring_theory/polynomial/chebyshev.lean Modified src/ring_theory/witt_vector/discrete_valuation_ring.lean Modified src/ring_theory/witt_vector/isocrystal.lean Modified src/tactic/linear_combination.lean Modified test/linear_combination.lean 2022-06-02 09:08:42 57885b4 feat(topological_space/vector_bundle): reformulate linearity condition (#14485) * Reformulate the linearity condition on (pre)trivializations of vector bundles using `total_space_mk`. Note: it is definitionally equal to the previous definition, but without using the coercion. * Make one argument of `e.linear` implicit * Simplify the proof of linearity of the product of vector bundles ESTIMATED CHANGES Modified src/topology/vector_bundle.lean - theorem topological_vector_bundle.pretrivialization.linear 2022-06-01 23:57:04 c414df7 feat(tactic/linear_combination): allow arbitrary proof terms (#13979) This extends `linear_combination` to allow arbitrary proof terms of equalities instead of just local hypotheses. ```lean constants (qc : ℚ) (hqc : qc = 2*qc) example (a b : ℚ) (h : ∀ p q : ℚ, p = q) : 3*a + qc = 3*b + 2*qc := by linear_combination (h a b, 3) (hqc) ``` This changes the syntax of `linear_combination` in the case where no coefficient is provided and it defaults to 1. A space-separated list of pexprs won't parse, since there's an ambiguity in `h1 h2` between an application or two arguments. So this case now requres parentheses around the argument: `linear_combination (h1, 3) (h2)` Does anyone object to this syntax change? ESTIMATED CHANGES Modified archive/imo/imo2008_q4.lean Modified src/algebra/quadratic_discriminant.lean Modified src/number_theory/fermat4.lean Modified src/tactic/linear_combination.lean Modified test/linear_combination.lean 2022-06-01 20:32:56 12ad63e feat(order/conditionally_complete_lattice): Map `Inf` by monotone function (#14118) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem monotone.map_Inf + theorem monotone_on.map_Inf 2022-06-01 17:27:02 9600f4f feat(order/filter/bases): view a filter as a *bundled* filter basis (#14506) We already have `filter.basis_sets` which says that the elements of a filter are a basis of itself (in the `has_basis` sense), but we don't have the fact that they form a filter basis (in the `filter_basis` sense), and `x ∈ f.basis_sets.is_basis.filter_basis` is not defeq to `x ∈ f` ESTIMATED CHANGES Modified src/order/filter/bases.lean + def filter.as_basis + theorem filter.as_basis_filter 2022-06-01 17:27:01 0950ba3 refactor(topology/separation): rename `indistinguishable` to `inseparable` (#14401) * Replace `indistinguishable` by `inseparable` in the definition and lemma names. The word "indistinguishable" is too generic. * Rename `t0_space_iff_distinguishable` to `t0_space_iff_not_inseparable` because the name `t0_space_iff_separable` is misleading, slightly golf the proof. * Add `t0_space_iff_nhds_injective`, `nhds_injective`, reorder lemmas around these two. ESTIMATED CHANGES Modified src/algebraic_geometry/properties.lean Modified src/topology/maps.lean Modified src/topology/metric_space/basic.lean - theorem metric.indistinguishable_iff + theorem metric.inseparable_iff Modified src/topology/metric_space/emetric_space.lean - theorem emetric.indistinguishable_iff + theorem emetric.inseparable_iff Modified src/topology/separation.lean - theorem indistinguishable.eq - theorem indistinguishable.map - def indistinguishable - theorem indistinguishable_iff_closed - theorem indistinguishable_iff_closure - theorem indistinguishable_iff_nhds_eq + theorem inseparable.eq + theorem inseparable.map + def inseparable + theorem inseparable_iff_closed + theorem inseparable_iff_closure + theorem inseparable_iff_nhds_eq + theorem nhds_injective - theorem subtype_indistinguishable_iff + theorem subtype_inseparable_iff - theorem t0_space_iff_distinguishable - theorem t0_space_iff_indistinguishable + theorem t0_space_iff_inseparable + theorem t0_space_iff_nhds_injective + theorem t0_space_iff_not_inseparable Modified src/topology/sets/opens.lean Modified src/topology/sober.lean - theorem indistinguishable_iff_specializes_and + theorem inseparable_iff_specializes_and 2022-06-01 17:27:00 9b3ea03 feat(data/bundle): make arguments to proj and total_space_mk implicit (#14359) I will wait for a later PR to (maybe) fix the reducibility/simp of these declarations. ESTIMATED CHANGES Modified src/data/bundle.lean - def bundle.proj +/- theorem bundle.sigma_mk_eq_total_space_mk +/- theorem bundle.to_total_space_coe +/- theorem bundle.total_space.eta + def bundle.total_space.proj +/- theorem bundle.total_space.proj_mk +/- def bundle.total_space_mk Modified src/geometry/manifold/cont_mdiff.lean Modified src/topology/fiber_bundle.lean +/- theorem topological_fiber_bundle_core.continuous_total_space_mk +/- def topological_fiber_bundle_core.proj Modified src/topology/vector_bundle.lean +/- theorem topological_vector_bundle.continuous_proj +/- theorem topological_vector_bundle.continuous_total_space_mk +/- theorem topological_vector_bundle.pretrivialization.coe_fst' +/- theorem topological_vector_bundle.pretrivialization.coe_fst +/- theorem topological_vector_bundle.pretrivialization.mem_source +/- theorem topological_vector_bundle.pretrivialization.mk_proj_snd' +/- theorem topological_vector_bundle.pretrivialization.mk_proj_snd +/- theorem topological_vector_bundle.pretrivialization.proj_symm_apply - theorem topological_vector_bundle.pretrivialization.symm_coe_fst' + theorem topological_vector_bundle.pretrivialization.symm_coe_proj +/- theorem topological_vector_bundle.trivialization.apply_symm_apply' +/- theorem topological_vector_bundle.trivialization.coe_fst' +/- theorem topological_vector_bundle.trivialization.coe_fst +/- theorem topological_vector_bundle.trivialization.mem_source +/- theorem topological_vector_bundle.trivialization.mk_proj_snd' +/- theorem topological_vector_bundle.trivialization.mk_proj_snd +/- theorem topological_vector_bundle.trivialization.prod.continuous_to_fun +/- theorem topological_vector_bundle.trivialization.proj_symm_apply' - theorem topological_vector_bundle.trivialization.symm_coe_fst' + theorem topological_vector_bundle.trivialization.symm_coe_proj +/- def topological_vector_bundle_core.proj 2022-06-01 15:09:46 dba797a feat(order/liminf_limsup): composition `g ∘ f` is bounded iff `f` is bounded (#14479) * If `g` is a monotone function that tends to infinity at infinity, then a filter is bounded from above under `g ∘ f` iff it is bounded under `f`, similarly for antitone functions and/or filter bounded from below. * A filter is bounded from above under `real.exp ∘ f` iff it is is bounded from above under `f`. * Use `monotone` in `real.exp_monotone`. * Add `@[mono]` to `real.exp_strict_mono`. ESTIMATED CHANGES Modified src/analysis/special_functions/exp.lean + theorem real.is_bounded_under_ge_exp_comp + theorem real.is_bounded_under_le_exp_comp Modified src/data/complex/exponential.lean +/- theorem real.exp_eq_one_iff +/- theorem real.exp_monotone +/- theorem real.exp_strict_mono Modified src/order/liminf_limsup.lean + theorem antitone.is_bounded_under_ge_comp + theorem antitone.is_bounded_under_le_comp +/- theorem galois_connection.l_limsup_le + theorem monotone.is_bounded_under_ge_comp + theorem monotone.is_bounded_under_le_comp 2022-06-01 15:09:45 047db39 feat(algebra/char_p/basic): add lemma `ring_char.char_ne_zero_of_finite` (#14454) This adds the fact that a finite (not necessarily associative) ring cannot have characteristic zero. See [this topic on Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Statements.20about.20finite.20rings). ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem char_p.ring_char_ne_zero_of_fintype +/- theorem char_p_of_prime_pow_injective 2022-06-01 15:09:44 df057e3 feat(measure_theory/integral/lebesgue): integral over finite and countable sets (#14447) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_countable +/- theorem measure_theory.lintegral_encodable + theorem measure_theory.lintegral_finset + theorem measure_theory.lintegral_fintype + theorem measure_theory.lintegral_insert + theorem measure_theory.lintegral_singleton' + theorem measure_theory.lintegral_singleton + theorem measure_theory.lintegral_unique 2022-06-01 15:09:43 f0216ff refactor(combinatorics/simple_graph/basic): rename induced embedding on complete graphs (#14404) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean - def simple_graph.embedding.complete_graph.of_embedding Modified src/combinatorics/simple_graph/coloring.lean 2022-06-01 15:09:42 0a0a60c feat(data/set/finite,order/*): generalize some lemmas from sets to (co)frames (#14394) * generalize `set.Union_inter_of_monotone` to an `order.frame`; * add dual versions, both for `(co)frame`s and sets; * same for `set.Union_Inter_of_monotone`. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem infi_supr_of_antitone + theorem infi_supr_of_monotone + theorem set.Inter_Union_of_antitone + theorem set.Inter_Union_of_monotone + theorem set.Union_Inter_of_antitone +/- theorem set.Union_Inter_of_monotone + theorem set.finite.infi_bsupr_of_antitone + theorem set.finite.infi_bsupr_of_monotone + theorem set.finite.supr_binfi_of_antitone + theorem set.finite.supr_binfi_of_monotone + theorem supr_infi_of_antitone + theorem supr_infi_of_monotone Modified src/data/set/lattice.lean + theorem set.Inter_union_of_antitone + theorem set.Inter_union_of_monotone + theorem set.Union_inter_of_antitone +/- theorem set.Union_inter_of_monotone Modified src/order/complete_boolean_algebra.lean + theorem infi_sup_of_antitone + theorem infi_sup_of_monotone + theorem supr_inf_of_antitone + theorem supr_inf_of_monotone Modified src/order/complete_lattice.lean + theorem infi_sup_infi_le + theorem le_supr_inf_supr + theorem supr_infi_le_infi_supr 2022-06-01 15:09:41 892f889 feat(data/matrix/basic): lemmas about mul_vec and single (#13835) We seem to be proving variants of the same statement over and over again; this introduces a new lemma that we can use to prove all these variants trivially in term mode. The new lemmas are: * `matrix.mul_vec_single` * `matrix.single_vec_mul` * `matrix.diagonal_mul_vec_single` * `matrix.single_vec_mul_diagonal` A lot of the proofs got shorter by avoiding `ext` which invokes a more powerful lemma than we actually need. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.diagonal_mul_vec_single + theorem matrix.mul_vec_single + theorem matrix.single_vec_mul + theorem matrix.single_vec_mul_diagonal Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/std_basis.lean 2022-06-01 13:00:47 f359d55 feat(analysis/asymptotics/asymptotics): generalize `is_O.smul` etc (#14487) Allow `(k₁ : α → 𝕜) (k₂ : α → 𝕜')` instead of `(k₁ k₂ : α → 𝕜)`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean +/- theorem asymptotics.is_O.smul +/- theorem asymptotics.is_O.smul_is_o +/- theorem asymptotics.is_O_with.smul +/- theorem asymptotics.is_o.smul +/- theorem asymptotics.is_o.smul_is_O 2022-06-01 13:00:46 4f1c8cf feat(algebra/order/group): helper lemma `0 ≤ a + |a|` (#14457) Helper lemma for integers and absolute values. ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem add_abs_nonneg 2022-06-01 12:13:54 f4fe790 feat(topology/vector_bundle): redefine continuous coordinate change (#14462) * For any two trivializations, we define the coordinate change between the two trivializations: continous linear automorphism of `F`, defined by composing one trivialization with the inverse of the other. This is defined for any point in the intersection of their base sets, and we define it to be the identity function outside this set. * Redefine `topological_vector_bundle`: we now require that this coordinate change between any two trivializations is continuous on the intersection of their base sets. * Redefine `topological_vector_prebundle` with the existence of a continuous linear coordinate change function. * Simplify the proofs that the coordinate change function is continuous for constructions on vector bundles. ESTIMATED CHANGES Modified src/topology/vector_bundle.lean - theorem topological_vector_bundle.continuous_on_coord_change - def topological_vector_bundle.coord_change - theorem topological_vector_bundle.mem_source_trivialization_at +/- def topological_vector_bundle.pretrivialization.linear_equiv_at - theorem topological_vector_bundle.trans_eq_coord_change + theorem topological_vector_bundle.trivial_topological_vector_bundle.trivialization.coord_change +/- def topological_vector_bundle.trivial_topological_vector_bundle.trivialization +/- theorem topological_vector_bundle.trivial_topological_vector_bundle.trivialization_source +/- theorem topological_vector_bundle.trivial_topological_vector_bundle.trivialization_target + theorem topological_vector_bundle.trivialization.coe_coord_change +/- theorem topological_vector_bundle.trivialization.comp_continuous_linear_equiv_at_eq_coord_change + def topological_vector_bundle.trivialization.coord_change + theorem topological_vector_bundle.trivialization.coord_change_apply' + theorem topological_vector_bundle.trivialization.coord_change_apply + theorem topological_vector_bundle.trivialization.coord_change_symm_apply + def topological_vector_bundle.trivialization.linear_equiv_at + theorem topological_vector_bundle.trivialization.mk_coord_change + theorem topological_vector_bundle_core.local_triv_coord_change_eq + theorem topological_vector_bundle_core.local_triv_symm_apply + theorem topological_vector_prebundle.continuous_on_coord_change + def topological_vector_prebundle.coord_change + theorem topological_vector_prebundle.coord_change_apply + theorem topological_vector_prebundle.mk_coord_change 2022-06-01 09:59:02 60371b8 refactor(topology/metric_space/lipschitz): use `function.End` (#14502) This way we avoid dependency on `category_theory`. ESTIMATED CHANGES Modified src/topology/metric_space/lipschitz.lean 2022-06-01 09:59:01 7d71343 chore(topology/algebra/uniform_field): Wrap in namespace (#14498) Put everything in `topology.algebra.uniform_field` in the `uniform_space.completion` namespace. ESTIMATED CHANGES Modified src/number_theory/function_field.lean Modified src/ring_theory/dedekind_domain/adic_valuation.lean Modified src/topology/algebra/uniform_field.lean - theorem coe_inv - theorem continuous_hat_inv - def hat_inv - theorem hat_inv_extends - theorem mul_hat_inv_cancel + theorem uniform_space.completion.coe_inv + theorem uniform_space.completion.continuous_hat_inv + def uniform_space.completion.hat_inv + theorem uniform_space.completion.hat_inv_extends + theorem uniform_space.completion.mul_hat_inv_cancel 2022-06-01 09:18:43 2a0f474 feat(analysis/normed_space/star/character_space): compactness of the character space of a normed algebra (#14135) This PR puts a `compact_space` instance on `character_space 𝕜 A` for a normed algebra `A` using the Banach-Alaoglu theorem. This is a key step in developing the continuous functional calculus. ESTIMATED CHANGES Added src/analysis/normed_space/algebra.lean + theorem weak_dual.character_space.norm_one Modified src/analysis/normed_space/weak_dual.lean + theorem weak_dual.to_normed_dual_apply Modified src/topology/algebra/module/character_space.lean + theorem weak_dual.character_space.eq_set_map_one_map_mul + theorem weak_dual.character_space.is_closed 2022-06-01 01:59:39 6b18362 feat(data/zmod/quotient): More API for `orbit_zpowers_equiv` (#14181) This PR adds another `symm_apply` API lemma for `orbit_zpowers_equiv`, taking `(k : ℤ)` rather than `(k : zmod (minimal_period ((•) a) b))`. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean + theorem add_action.orbit_zmultiples_equiv_symm_apply' + theorem mul_action.orbit_zpowers_equiv_symm_apply' +/- theorem mul_action.orbit_zpowers_equiv_symm_apply Modified src/dynamics/periodic_pts.lean + theorem mul_action.pow_smul_mod_minimal_period + theorem mul_action.zpow_smul_mod_minimal_period 2022-05-31 22:07:31 bdf3e97 chore(data/polynomial/laurent): remove unused case distinction (#14490) ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean 2022-05-31 20:07:53 26a62b0 fix(topology/algebra/module/multilinear): initialize simps projections (#14495) * `continuous_multilinear_map.smul_right` has a `simps` attribute, causing the generation of the simps projections for `continuous_multilinear_map`, but without specific support for apply. We now initialize the simps projections correctly. * This fixes an error in the sphere eversion project ESTIMATED CHANGES Modified src/topology/algebra/module/multilinear.lean + def continuous_multilinear_map.simps.apply +/- def continuous_multilinear_map.smul_right - theorem continuous_multilinear_map.smul_right_apply 2022-05-31 20:07:51 9dc4b8e feat(algebra/group_power/basic): `a^2 = b^2 ↔ a = b ∨ a = -b` (#14431) Generalize `a ^ 2 = 1 ↔ a = 1 ∨ a = -1` to `ring` + `no_zero_divisors` and prove `a ^ 2 = b ^ 2 ↔ a = b ∨ a = -b` under `comm_ring` + `no_zero_divisors`. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem eq_or_eq_neg_of_sq_eq_sq + theorem sq_eq_one_iff + theorem sq_eq_sq_iff_eq_or_eq_neg + theorem sq_ne_one_iff +/- theorem sq_sub_sq - theorem units.eq_or_eq_neg_of_sq_eq_sq Modified src/algebra/group_power/order.lean - theorem sq_eq_one_iff - theorem sq_ne_one_iff Modified src/number_theory/legendre_symbol/quadratic_char.lean 2022-05-31 18:03:22 8e522f8 feat(algebra/order/monoid): Missing `has_exists_mul_of_le` instances (#14476) Add a few `has_exists_mul_of_le` instances, generalize `has_exists_mul_of_le` to `has_le` + `has_mul`. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean Modified src/algebra/order/pi.lean 2022-05-31 13:49:17 e0b2ad8 chore(algebra/lie/quotient): golf some instances (#14480) ESTIMATED CHANGES Modified src/algebra/lie/quotient.lean - def lie_submodule.quotient.action_as_endo_map_bracket +/- theorem lie_submodule.quotient.is_quotient_mk 2022-05-31 13:49:16 806f673 feat(algebra/star): star_single, star_update (#14477) ESTIMATED CHANGES Modified src/algebra/star/pi.lean + theorem function.update_star + theorem pi.single_star 2022-05-31 11:57:57 3e79ce4 chore(combinatorics/simple_graph/basic): remove unnecessary lemma (#14468) This lemma was added in #11371 for the Lean version bump, since the more powerful congr lemmas revealed a bug in fintype instances that were finally corrected in #14136. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean - theorem simple_graph.mem_neighbor_set' 2022-05-31 11:57:56 1eb7339 feat(topology/algebra/group): add `continuous_of_continuous_at_one` (#14451) This lemma is more general than `uniform_continuous_of_continuous_at_one` because it allows the codomain to be a monoid. ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean Modified src/topology/algebra/group.lean + theorem continuous_of_continuous_at_one Modified src/topology/algebra/uniform_group.lean +/- theorem uniform_continuous_of_continuous_at_one 2022-05-31 11:57:55 0f3e083 feat(algebra/algebra/basic): relax typeclass assumptions (#14415) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem no_zero_smul_divisors.algebra_map_injective +/- theorem no_zero_smul_divisors.iff_algebra_map_injective 2022-05-31 11:57:54 346174e feat(data/polynomial/laurent): a Laurent polynomial can be multiplied by a power of `X` to "become" a polynomial (#14106) This PR proves two versions of the result mentioned in the title, one involving multiplying by a non-negative power of `T`, the other usable as an induction principle. ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean + theorem laurent_polynomial.T_sub + theorem laurent_polynomial.exists_T_pow + theorem laurent_polynomial.induction_on_mul_T + theorem laurent_polynomial.reduce_to_polynomial_of_mul_T 2022-05-31 09:48:05 87fbbd1 chore(analysis/asymptotics): golf 2 proofs (#14473) Don't go back and forth between `∈ l` and `∀ᶠ l`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean 2022-05-31 09:48:04 9e9cc57 feat(analysis/asymptotics/asymptotics): add `is_O_const_iff` (#14472) * use `f =ᶠ[l] 0` instead of `∀ᶠ x in l, f x = 0` in `is_{O_with,O,o}_zero_right_iff`; * generalize these lemmas from `0` in a `normed_group` to `0` in a `semi_normed_group`; * add `is_O.is_bounded_under_le`, `is_O_const_of_ne`, and `is_O_const_iff`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O.is_bounded_under_le + theorem asymptotics.is_O_const_iff + theorem asymptotics.is_O_const_of_ne +/- theorem asymptotics.is_O_zero_right_iff 2022-05-31 09:48:03 615baba feat(order/monotone): prove `nat.exists_strict_mono` etc (#14435) * add `nat.exists_strict_mono`, `nat.exists_strict_anti`, `int.exists_strict_mono`, and `int.exists_strict_anti`; * move `set.Iic.no_min_order` and `set.Ici.no_max_order` to `data.set.intervals.basic`; * add `set.Iio.no_min_order` and `set.Ioi.no_max_order`; * add `no_max_order.infinite` and `no_min_order.infinite`, use them in the proofs; * rename `set.Ixx.infinite` to `set.Ixx_infinite`; * add `set.Ixx.infinite` - lemmas and instances about `infinite`, not `set.infinite`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/infinite.lean + theorem no_max_order.infinite + theorem no_min_order.infinite +/- theorem set.Icc.infinite + theorem set.Icc_infinite - theorem set.Ici.infinite + theorem set.Ici_infinite +/- theorem set.Ico.infinite + theorem set.Ico_infinite - theorem set.Iic.infinite + theorem set.Iic_infinite - theorem set.Iio.infinite + theorem set.Iio_infinite +/- theorem set.Ioc.infinite + theorem set.Ioc_infinite - theorem set.Ioi.infinite + theorem set.Ioi_infinite +/- theorem set.Ioo.infinite + theorem set.Ioo_infinite Modified src/order/lattice_intervals.lean Modified src/order/monotone.lean + theorem int.exists_strict_anti + theorem int.exists_strict_mono + theorem nat.exists_strict_anti' + theorem nat.exists_strict_anti + theorem nat.exists_strict_mono' + theorem nat.exists_strict_mono 2022-05-31 09:48:01 cafeaa3 feat(data/set/lattice): add lemmas about unions over natural numbers (#14393) * Add `Union`/`Inter` versions of lemmas like `supr_ge_eq_supr_nat_add`. * Make some arguments explicit. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem antitone.Inter_nat_add + theorem monotone.Union_nat_add + theorem set.Inter_ge_eq_Inter_nat_add + theorem set.Union_Inter_ge_nat_add + theorem set.Union_ge_eq_Union_nat_add + theorem set.inter_Inter_nat_succ + theorem set.union_Union_nat_succ Modified src/order/complete_lattice.lean + theorem antitone.infi_nat_add +/- theorem infi_ge_eq_infi_nat_add +/- theorem supr_ge_eq_supr_nat_add 2022-05-31 09:48:00 7127048 feat(data/polynomial/*): `support_binomial` and `support_trinomial` lemmas (#14385) This PR adds lemmas for the support of binomials and trinomials. The trinomial lemmas will be helpful for irreducibility of x^n-x-1. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.support_binomial' + theorem polynomial.support_trinomial' Modified src/data/polynomial/coeff.lean + theorem polynomial.card_support_binomial + theorem polynomial.card_support_trinomial + theorem polynomial.support_binomial + theorem polynomial.support_trinomial 2022-05-31 09:47:59 8315ad0 refactor(group_theory/sylow): Move basic API earlier in the file (#14367) This PR moves some basic sylow API to earlier in the file, so that it can be used earlier. ESTIMATED CHANGES Modified src/group_theory/sylow.lean +/- theorem sylow.coe_comap_of_injective +/- theorem sylow.coe_comap_of_ker_is_p_group +/- theorem sylow.coe_subtype +/- def sylow.comap_of_injective +/- def sylow.comap_of_ker_is_p_group +/- def sylow.subtype 2022-05-31 09:47:58 111ce5b feat(group_theory/subgroup/basic): `comap_le_comap` lemmas (#14365) This PR adds some `comap_le_comap` lemmas. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.comap_le_comap_of_le_range + theorem subgroup.comap_le_comap_of_surjective + theorem subgroup.comap_lt_comap_of_surjective 2022-05-31 09:47:57 1b49d48 refactor(group_theory/order_of_element): Remove coercion in `order_eq_card_zpowers` (#14364) This PR removes a coercion in `order_eq_card_zpowers`. ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean +/- theorem order_eq_card_zpowers Modified src/group_theory/specific_groups/cyclic.lean 2022-05-31 09:47:56 6531c72 chore(algebra/algebra/restrict_scalars): put a right action on restricted scalars (#13996) This provides `module Rᵐᵒᵖ (restrict_scalars R S M)` in terms of a `module Sᵐᵒᵖ M` action, by sending `Rᵐᵒᵖ` to `Sᵐᵒᵖ` through `algebra_map R S`. This means that `restrict_scalars R S M` now works for right-modules and bi-modules in addition to left-modules. This will become important if we change `algebra R A` to require `A` to be an `R`-bimodule, as otherwise `restrict_scalars R S A` would no longer be an algebra. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2313996.20right.20actions.20on.20restrict_scalars/near/282045994) ESTIMATED CHANGES Modified src/algebra/algebra/restrict_scalars.lean +/- def restrict_scalars.lsmul 2022-05-31 08:02:43 876cb64 feat({group,ring}_theory/sub{monoid,group,semiring,ring}): the action by the center is commutative (#14362) None of these `smul_comm_class` instances carry data, so they cannot form diamonds. This action is used to golf the proofs in `quadratic_form.associated`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/center.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean 2022-05-30 23:53:46 6633283 fix(tactic/norm_num): fix ge unfolding bug (#14425) As reported on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/bug.20in.20norm_num.20handling.20of.20ge.3F). ESTIMATED CHANGES Modified src/tactic/norm_num.lean + theorem norm_num.ge_intro + theorem norm_num.gt_intro Modified test/norm_num.lean 2022-05-30 22:37:30 e7cc0eb feat(group_theory/perm/cycle): improve doc and namespace for cauchy's theorem (#14471) Fix a few things in the module docstring, remove namespace, add an additive version and add docstrings for Cauchy's theorem. https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Existence.20of.20elements.20of.20order.20p.20in.20a.20group/near/284399583 ESTIMATED CHANGES Modified src/group_theory/p_group.lean Modified src/group_theory/perm/cycle/type.lean - theorem equiv.perm.exists_prime_order_of_dvd_card + theorem exists_prime_add_order_of_dvd_card + theorem exists_prime_order_of_dvd_card 2022-05-30 17:48:15 ba22440 feat(set_theory/cardinal/cofinality): use `bounded` and `unbounded` (#14438) We change `∀ a, ∃ b ∈ s, ¬ r b a` to its def-eq predicate `unbounded r s`, and similarly for `bounded r s`. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean +/- theorem ordinal.cof_eq +/- theorem ordinal.cof_type_le +/- theorem ordinal.le_cof_type +/- theorem ordinal.lt_cof_type 2022-05-30 17:48:15 1de757e feat(data/fin/basic): add `iff`lemmas about `nontrivial`/`subsingleton` (#14390) ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.nontrivial_iff_two_le + theorem fin.subsingleton_iff_le_one Modified src/logic/nontrivial.lean + theorem not_nontrivial 2022-05-30 17:10:32 1791ed3 chore(ring_theory/polynomial/vieta): generalize universe (#14411) ESTIMATED CHANGES Modified src/ring_theory/polynomial/vieta.lean 2022-05-30 17:10:31 08c1412 feat(set_theory/game/pgame): `lt_or_equiv_or_gf` (#14407) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.lt_or_equiv_or_gf 2022-05-30 16:30:46 59a1a50 chore(analysis/normed_space/pi_Lp): add `pi_Lp.linear_equiv` (#14380) This is just a more bundled version of the `pi_Lp.equiv` we already have. Also adds two missing simp lemmas about `pi_Lp.equiv`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem pi_Lp.equiv_single + theorem pi_Lp.equiv_symm_single Modified src/analysis/normed_space/pi_Lp.lean 2022-05-30 13:47:58 01af73a feat(alegbra/homology/short_exact/abelian.lean): Right split exact sequences + case of modules (#14376) A right split short exact sequence in an abelian category is split. Also, in the case of the Module category, a version fully expressed in terms of modules and linear maps is provided. ESTIMATED CHANGES Modified src/algebra/category/Module/biproducts.lean Modified src/algebra/homology/short_exact/abelian.lean + def category_theory.right_split.splitting + def category_theory.splitting.mk'' 2022-05-30 12:53:32 3641bf9 refactor(algebraic_topology/*): use rw instead of erw where possible (#14320) ESTIMATED CHANGES Modified src/algebraic_topology/alternating_face_map_complex.lean Modified src/algebraic_topology/cech_nerve.lean Modified src/algebraic_topology/dold_kan/homotopies.lean Modified src/algebraic_topology/simplex_category.lean Modified src/algebraic_topology/simplicial_object.lean 2022-05-30 11:01:47 af70f8e feat(number_theory/bernoulli_polynomials): Added some lemmas (#14282) Have added some lemmas regarding rearrangements of sums and evaluations of Bernoulli polynomials. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.eval_monomial_one_add_sub Modified src/number_theory/bernoulli_polynomials.lean + theorem polynomial.bernoulli_eq_sub_sum + theorem polynomial.bernoulli_eval_one_add + theorem polynomial.bernoulli_succ_eval + theorem polynomial.sum_range_pow_eq_bernoulli_sub 2022-05-30 04:06:04 475f18b refactor(analysis/asymptotics): make `is_o`/`is_O` work with `calc` (#14129) Reorder arguments of `is_O_with`/`is_O`/`is_o` as well as `trans` lemmas so that they work with `calc`. Also adds `f =O[l] g` notation. Fixes #2273 ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean +/- theorem formal_multilinear_series.le_radius_of_is_O Modified src/analysis/asymptotics/asymptotic_equivalent.lean +/- theorem asymptotics.is_equivalent.add_is_o +/- theorem asymptotics.is_equivalent.is_O +/- theorem asymptotics.is_equivalent.is_O_symm +/- theorem asymptotics.is_equivalent.is_o +/- def asymptotics.is_equivalent +/- theorem asymptotics.is_equivalent_zero_iff_is_O_zero +/- theorem asymptotics.is_o.is_equivalent Modified src/analysis/asymptotics/asymptotics.lean +/- theorem asymptotics.bound_of_is_O_cofinite +/- theorem asymptotics.bound_of_is_O_nat_at_top +/- theorem asymptotics.is_O.add +/- theorem asymptotics.is_O.add_is_o +/- theorem asymptotics.is_O.bound +/- theorem asymptotics.is_O.comp_tendsto +/- theorem asymptotics.is_O.congr' +/- theorem asymptotics.is_O.congr +/- theorem asymptotics.is_O.congr_left +/- theorem asymptotics.is_O.congr_of_sub +/- theorem asymptotics.is_O.congr_right +/- theorem asymptotics.is_O.const_mul_left +/- theorem asymptotics.is_O.const_mul_right' +/- theorem asymptotics.is_O.const_mul_right +/- theorem asymptotics.is_O.eq_zero_imp +/- theorem asymptotics.is_O.eventually_mul_div_cancel +/- theorem asymptotics.is_O.exists_mem_basis +/- theorem asymptotics.is_O.exists_nonneg +/- theorem asymptotics.is_O.exists_pos +/- theorem asymptotics.is_O.inv_rev +/- theorem asymptotics.is_O.is_O_with +/- theorem asymptotics.is_O.join +/- theorem asymptotics.is_O.mono +/- theorem asymptotics.is_O.mul +/- theorem asymptotics.is_O.of_bound +/- theorem asymptotics.is_O.of_const_mul_right +/- theorem asymptotics.is_O.pow +/- theorem asymptotics.is_O.prod_left +/- theorem asymptotics.is_O.prod_left_fst +/- theorem asymptotics.is_O.prod_left_snd +/- theorem asymptotics.is_O.prod_rightl +/- theorem asymptotics.is_O.prod_rightr +/- theorem asymptotics.is_O.smul +/- theorem asymptotics.is_O.smul_is_o +/- theorem asymptotics.is_O.sub +/- theorem asymptotics.is_O.sum +/- theorem asymptotics.is_O.symm +/- theorem asymptotics.is_O.trans + theorem asymptotics.is_O.trans_eventually_eq +/- theorem asymptotics.is_O.trans_is_o +/- theorem asymptotics.is_O.trans_le +/- theorem asymptotics.is_O.trans_tendsto +/- theorem asymptotics.is_O.trans_tendsto_nhds +/- theorem asymptotics.is_O.triangle +/- def asymptotics.is_O +/- theorem asymptotics.is_O_bot +/- theorem asymptotics.is_O_comm +/- theorem asymptotics.is_O_congr +/- theorem asymptotics.is_O_const_mul_self +/- theorem asymptotics.is_O_const_one +/- theorem asymptotics.is_O_fst_prod' +/- theorem asymptotics.is_O_fst_prod +/- theorem asymptotics.is_O_iff +/- theorem asymptotics.is_O_iff_eventually +/- theorem asymptotics.is_O_iff_eventually_is_O_with +/- theorem asymptotics.is_O_iff_is_O_with +/- theorem asymptotics.is_O_map +/- theorem asymptotics.is_O_neg_left +/- theorem asymptotics.is_O_neg_right +/- theorem asymptotics.is_O_norm_left +/- theorem asymptotics.is_O_norm_norm +/- theorem asymptotics.is_O_norm_right +/- theorem asymptotics.is_O_of_le' +/- theorem asymptotics.is_O_of_le +/- theorem asymptotics.is_O_of_subsingleton +/- theorem asymptotics.is_O_principal +/- theorem asymptotics.is_O_prod_left +/- theorem asymptotics.is_O_pure +/- theorem asymptotics.is_O_refl +/- theorem asymptotics.is_O_refl_left +/- theorem asymptotics.is_O_snd_prod' +/- theorem asymptotics.is_O_snd_prod +/- theorem asymptotics.is_O_top +/- theorem asymptotics.is_O_with.add +/- theorem asymptotics.is_O_with.add_is_o +/- theorem asymptotics.is_O_with.comp_tendsto +/- theorem asymptotics.is_O_with.congr' +/- theorem asymptotics.is_O_with.congr +/- theorem asymptotics.is_O_with.congr_const +/- theorem asymptotics.is_O_with.congr_left +/- theorem asymptotics.is_O_with.congr_right +/- theorem asymptotics.is_O_with.const_mul_left +/- theorem asymptotics.is_O_with.const_smul_left +/- theorem asymptotics.is_O_with.eq_zero_imp +/- theorem asymptotics.is_O_with.eventually_mul_div_cancel +/- theorem asymptotics.is_O_with.exists_eq_mul +/- theorem asymptotics.is_O_with.exists_nonneg +/- theorem asymptotics.is_O_with.exists_pos +/- theorem asymptotics.is_O_with.inv_rev +/- theorem asymptotics.is_O_with.is_O +/- theorem asymptotics.is_O_with.join' +/- theorem asymptotics.is_O_with.join +/- theorem asymptotics.is_O_with.mono +/- theorem asymptotics.is_O_with.pow' +/- theorem asymptotics.is_O_with.pow +/- theorem asymptotics.is_O_with.prod_left +/- theorem asymptotics.is_O_with.prod_left_fst +/- theorem asymptotics.is_O_with.prod_left_same +/- theorem asymptotics.is_O_with.prod_left_snd +/- theorem asymptotics.is_O_with.prod_rightl +/- theorem asymptotics.is_O_with.prod_rightr +/- theorem asymptotics.is_O_with.right_le_add_of_lt_1 +/- theorem asymptotics.is_O_with.right_le_sub_of_lt_1 +/- theorem asymptotics.is_O_with.smul +/- theorem asymptotics.is_O_with.sub +/- theorem asymptotics.is_O_with.sub_is_o +/- theorem asymptotics.is_O_with.sum +/- theorem asymptotics.is_O_with.symm +/- theorem asymptotics.is_O_with.trans +/- theorem asymptotics.is_O_with.trans_is_o +/- theorem asymptotics.is_O_with.trans_le +/- theorem asymptotics.is_O_with.triangle +/- theorem asymptotics.is_O_with.weaken +/- def asymptotics.is_O_with +/- theorem asymptotics.is_O_with_bot +/- theorem asymptotics.is_O_with_congr +/- theorem asymptotics.is_O_with_const_one +/- theorem asymptotics.is_O_with_fst_prod +/- theorem asymptotics.is_O_with_iff +/- theorem asymptotics.is_O_with_neg_left +/- theorem asymptotics.is_O_with_neg_right +/- theorem asymptotics.is_O_with_norm_left +/- theorem asymptotics.is_O_with_norm_norm +/- theorem asymptotics.is_O_with_norm_right +/- theorem asymptotics.is_O_with_of_le' +/- theorem asymptotics.is_O_with_of_le +/- theorem asymptotics.is_O_with_pure +/- theorem asymptotics.is_O_with_refl +/- theorem asymptotics.is_O_with_snd_prod +/- theorem asymptotics.is_O_with_top +/- theorem asymptotics.is_O_with_zero' +/- theorem asymptotics.is_O_with_zero +/- theorem asymptotics.is_O_zero +/- theorem asymptotics.is_O_zero_right_iff +/- theorem asymptotics.is_o.add +/- theorem asymptotics.is_o.add_add +/- theorem asymptotics.is_o.add_is_O +/- theorem asymptotics.is_o.add_is_O_with +/- theorem asymptotics.is_o.comp_tendsto +/- theorem asymptotics.is_o.congr' +/- theorem asymptotics.is_o.congr +/- theorem asymptotics.is_o.congr_left +/- theorem asymptotics.is_o.congr_of_sub +/- theorem asymptotics.is_o.congr_right +/- theorem asymptotics.is_o.const_mul_left +/- theorem asymptotics.is_o.const_mul_right' +/- theorem asymptotics.is_o.const_mul_right +/- theorem asymptotics.is_o.def' +/- theorem asymptotics.is_o.def +/- theorem asymptotics.is_o.eventually_mul_div_cancel +/- theorem asymptotics.is_o.inv_rev +/- theorem asymptotics.is_o.is_O +/- theorem asymptotics.is_o.is_O_with +/- theorem asymptotics.is_o.join +/- theorem asymptotics.is_o.mono +/- theorem asymptotics.is_o.mul +/- theorem asymptotics.is_o.mul_is_O +/- theorem asymptotics.is_o.of_const_mul_right +/- theorem asymptotics.is_o.pow +/- theorem asymptotics.is_o.prod_left +/- theorem asymptotics.is_o.prod_left_fst +/- theorem asymptotics.is_o.prod_left_snd +/- theorem asymptotics.is_o.prod_rightl +/- theorem asymptotics.is_o.prod_rightr +/- theorem asymptotics.is_o.right_is_O_add +/- theorem asymptotics.is_o.right_is_O_sub +/- theorem asymptotics.is_o.smul +/- theorem asymptotics.is_o.smul_is_O +/- theorem asymptotics.is_o.sub +/- theorem asymptotics.is_o.sum +/- theorem asymptotics.is_o.symm +/- theorem asymptotics.is_o.tendsto_div_nhds_zero +/- theorem asymptotics.is_o.trans + theorem asymptotics.is_o.trans_eventually_eq +/- theorem asymptotics.is_o.trans_is_O +/- theorem asymptotics.is_o.trans_is_O_with +/- theorem asymptotics.is_o.trans_le +/- theorem asymptotics.is_o.trans_tendsto +/- theorem asymptotics.is_o.triangle +/- def asymptotics.is_o +/- theorem asymptotics.is_o_bot +/- theorem asymptotics.is_o_comm +/- theorem asymptotics.is_o_congr +/- theorem asymptotics.is_o_const_id_at_bot +/- theorem asymptotics.is_o_const_id_at_top +/- theorem asymptotics.is_o_const_id_comap_norm_at_top +/- theorem asymptotics.is_o_const_smul_left +/- theorem asymptotics.is_o_iff +/- theorem asymptotics.is_o_iff_forall_is_O_with +/- theorem asymptotics.is_o_iff_tendsto' +/- theorem asymptotics.is_o_iff_tendsto +/- theorem asymptotics.is_o_map +/- theorem asymptotics.is_o_neg_left +/- theorem asymptotics.is_o_neg_right +/- theorem asymptotics.is_o_norm_left +/- theorem asymptotics.is_o_norm_norm +/- theorem asymptotics.is_o_norm_right +/- theorem asymptotics.is_o_of_subsingleton +/- theorem asymptotics.is_o_one_iff +/- theorem asymptotics.is_o_prod_left +/- theorem asymptotics.is_o_pure +/- theorem asymptotics.is_o_refl_left +/- theorem asymptotics.is_o_top +/- theorem asymptotics.is_o_zero + theorem filter.eventually_eq.trans_is_O + theorem filter.eventually_eq.trans_is_o Modified src/analysis/asymptotics/specific_asymptotics.lean +/- theorem filter.tendsto.cesaro Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/complex/phragmen_lindelof.lean Modified src/analysis/complex/removable_singularity.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_equiv.is_O_comp +/- theorem continuous_linear_equiv.is_O_comp_rev +/- theorem continuous_linear_equiv.is_O_sub +/- theorem continuous_linear_equiv.is_O_sub_rev +/- theorem continuous_linear_map.is_O_id +/- theorem continuous_linear_map.is_O_with_id Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/units.lean +/- theorem normed_ring.inverse_add_norm +/- theorem normed_ring.inverse_one_sub_norm Modified src/analysis/special_functions/exp.lean +/- theorem real.is_o_pow_exp_at_top Modified src/analysis/special_functions/gamma.lean - theorem dGamma_integrand_is_O_at_top + theorem dGamma_integrand_is_o_at_top - theorem real.Gamma_integrand_is_O + theorem real.Gamma_integrand_is_o Modified src/analysis/special_functions/log/basic.lean +/- theorem real.is_o_log_id_at_top +/- theorem real.is_o_pow_log_id_at_top Modified src/analysis/special_functions/non_integrable.lean Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/pow.lean +/- theorem asymptotics.is_O.rpow +/- theorem asymptotics.is_O_with.rpow +/- theorem asymptotics.is_o.rpow +/- theorem is_o_log_rpow_at_top +/- theorem is_o_rpow_exp_at_top Modified src/analysis/specific_limits/normed.lean Modified src/combinatorics/additive/salem_spencer.lean +/- theorem roth_number_nat_is_O_id Modified src/measure_theory/integral/exp_decay.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/set_integral.lean Modified src/probability/strong_law.lean 2022-05-29 17:50:03 55f32da feat(topology/vector_bundle): the pullback of a vector bundle is a vector bundle (#8545) We construct the pullback bundle of a vector bundle. * Co-authored by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> * Co-authored by: Floris van Doorn * Co-authored by: Sebastien Gouezel ESTIMATED CHANGES Modified src/data/bundle.lean + def bundle.pullback.lift + theorem bundle.pullback.lift_mk + theorem bundle.pullback.proj_lift + def bundle.pullback + def bundle.pullback_total_space_embedding + theorem bundle.pullback_total_space_embedding_snd +/- def bundle.trivial.proj_snd Modified src/logic/equiv/local_equiv.lean + theorem local_equiv.eq_symm_apply Modified src/logic/is_empty.lean Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.eq_symm_apply Modified src/topology/order.lean + theorem continuous_empty_function Modified src/topology/vector_bundle.lean + theorem inducing_pullback_total_space_embedding + theorem pullback.continuous_lift + theorem pullback.continuous_proj + theorem pullback.continuous_total_space_mk + def pullback_topology + theorem topological_vector_bundle.trivialization.open_target + def topological_vector_bundle.trivialization.pullback 2022-05-29 15:46:51 938eeeb feat(algebra/group/with_one): add a recursor and a `no_zero_divisors` instance (#14434) ESTIMATED CHANGES Modified src/algebra/group/with_one.lean + def with_one.rec_one_coe 2022-05-29 13:40:03 b673ed8 feat(analysis/normed_space): Geometric Hahn Banach theorems (#7288) This proves a range of variants of the Hahn-Banach separation theorems. ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified src/analysis/normed_space/dual.lean Renamed src/analysis/normed_space/hahn_banach.lean to src/analysis/normed_space/hahn_banach/extension.lean Added src/analysis/normed_space/hahn_banach/separation.lean + theorem geometric_hahn_banach_closed_compact + theorem geometric_hahn_banach_closed_point + theorem geometric_hahn_banach_compact_closed + theorem geometric_hahn_banach_open + theorem geometric_hahn_banach_open_open + theorem geometric_hahn_banach_open_point + theorem geometric_hahn_banach_point_closed + theorem geometric_hahn_banach_point_open + theorem geometric_hahn_banach_point_point + theorem separate_convex_open_set Modified src/data/set/pointwise.lean 2022-05-29 11:50:46 98b7637 feat(category_theory/limits): monos have images (#14186) Turning on an instance for `has_image` for any monomorphism. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean +/- theorem category_theory.limits.image.ext Modified src/category_theory/subobject/limits.lean + theorem category_theory.limits.image_subobject_mono 2022-05-29 11:13:23 8d13a2d feat(algebra/order/rearrangement): Equality case of the Rearrangement Inequality (#13245) This PR deduces the cases of equality and strict inequality of the Rearrangement Inequality as a corollary to the existing statement of the rearrangement inequality. ESTIMATED CHANGES Modified src/algebra/order/rearrangement.lean + theorem antivary.sum_mul_eq_sum_comp_perm_mul_iff + theorem antivary.sum_mul_eq_sum_mul_comp_perm_iff + theorem antivary.sum_mul_lt_sum_comp_perm_mul_iff + theorem antivary.sum_mul_lt_sum_mul_comp_perm_iff + theorem antivary.sum_smul_eq_sum_comp_perm_smul_iff + theorem antivary.sum_smul_eq_sum_smul_comp_perm_iff + theorem antivary.sum_smul_lt_sum_comp_perm_smul_iff + theorem antivary.sum_smul_lt_sum_smul_comp_perm_iff + theorem antivary_on.sum_mul_eq_sum_comp_perm_mul_iff + theorem antivary_on.sum_mul_eq_sum_mul_comp_perm_iff + theorem antivary_on.sum_mul_lt_sum_comp_perm_mul_iff + theorem antivary_on.sum_mul_lt_sum_mul_comp_perm_iff + theorem antivary_on.sum_smul_eq_sum_comp_perm_smul_iff + theorem antivary_on.sum_smul_eq_sum_smul_comp_perm_iff + theorem antivary_on.sum_smul_lt_sum_comp_perm_smul_iff + theorem antivary_on.sum_smul_lt_sum_smul_comp_perm_iff + theorem monovary.sum_comp_perm_mul_eq_sum_mul_iff + theorem monovary.sum_comp_perm_mul_lt_sum_mul_iff + theorem monovary.sum_comp_perm_smul_eq_sum_smul_iff + theorem monovary.sum_comp_perm_smul_lt_sum_smul_iff + theorem monovary.sum_mul_comp_perm_eq_sum_mul_iff + theorem monovary.sum_mul_comp_perm_lt_sum_mul_iff + theorem monovary.sum_smul_comp_perm_eq_sum_smul_iff + theorem monovary.sum_smul_comp_perm_lt_sum_smul_iff + theorem monovary_on.sum_comp_perm_mul_eq_sum_mul_iff + theorem monovary_on.sum_comp_perm_mul_lt_sum_mul_iff + theorem monovary_on.sum_comp_perm_smul_eq_sum_smul_iff + theorem monovary_on.sum_comp_perm_smul_lt_sum_smul_iff + theorem monovary_on.sum_mul_comp_perm_eq_sum_mul_iff + theorem monovary_on.sum_mul_comp_perm_lt_sum_mul_iff + theorem monovary_on.sum_smul_comp_perm_eq_sum_smul_iff + theorem monovary_on.sum_smul_comp_perm_lt_sum_smul_iff Modified src/order/monovary.lean + theorem antivary_on_to_dual_left + theorem antivary_on_to_dual_right + theorem antivary_to_dual_left + theorem antivary_to_dual_right + theorem monovary_on_to_dual_left + theorem monovary_on_to_dual_right + theorem monovary_to_dual_left + theorem monovary_to_dual_right 2022-05-29 09:04:36 6b936a9 feat(data/set/basic): simp-normal form for `↥{x | p x}` (#14441) We make `{x // p x}` the simp-normal form for `↥{x | p x}`. We also rewrite some lemmas to use the former instead of the latter. ESTIMATED CHANGES Modified archive/imo/imo1987_q1.lean Modified src/algebra/algebraic_card.lean +/- theorem algebraic.cardinal_mk_le_max +/- theorem algebraic.cardinal_mk_le_mul +/- theorem algebraic.cardinal_mk_le_of_infinite Modified src/data/set/basic.lean + theorem set.coe_eq_subtype + theorem set.coe_set_of - theorem set.set_coe_eq_subtype Modified src/set_theory/cardinal/basic.lean + theorem cardinal.mk_subtype_le_omega Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/cardinal/ordinal.lean Modified src/tactic/subtype_instance.lean 2022-05-29 01:31:29 3e58d9c feat(data/nat/enat): `is_well_order` instance for `enat` (#14416) ESTIMATED CHANGES Modified src/data/nat/enat.lean +/- theorem enat.lt_wf 2022-05-28 20:10:48 ad2baee feat(topology/separation): `t0_space` and `t1_space` for `α × β` and `Π i, α i` (#14418) ESTIMATED CHANGES Modified src/analysis/normed_space/pi_Lp.lean Modified src/data/set/prod.lean + theorem set.univ_pi_singleton Modified src/topology/separation.lean + theorem indistinguishable.map + theorem t0_space_iff_indistinguishable 2022-05-28 17:52:57 f13e5df refactor(set_theory/*) rename `wf` lemmas to `lt_wf` (#14417) This is done for consistency with the rest of `mathlib` (`nat.lt_wf`, `enat.lt_wf`, `finset.lt_wf`, ...) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean Modified src/set_theory/cardinal/ordinal.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean + theorem ordinal.lt_wf - theorem ordinal.wf Modified src/set_theory/ordinal/notation.lean + theorem nonote.lt_wf - theorem nonote.wf 2022-05-28 17:52:56 762fc15 feat(set_theory/ordinal/arithmetic): Add missing instances for `ordinal` (#14128) We add the following instances: - `monoid_with_zero ordinal` - `no_zero_divisors ordinal` - `is_left_distrib_class ordinal` - `contravariant_class ordinal ordinal (swap (+)) (<)` - `is_antisymm ordinal (∣)` ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.dvd_add - theorem ordinal.dvd_zero - theorem ordinal.lt_of_add_lt_add_right - theorem ordinal.mul_add - theorem ordinal.mul_add_one - theorem ordinal.mul_eq_zero_iff - theorem ordinal.mul_one_add +/- theorem ordinal.mul_succ - theorem ordinal.mul_two - theorem ordinal.mul_zero - theorem ordinal.one_dvd +/- theorem ordinal.succ_zero - theorem ordinal.zero_dvd - theorem ordinal.zero_mul Modified src/set_theory/ordinal/basic.lean Modified src/set_theory/ordinal/fixed_point.lean Modified src/set_theory/ordinal/notation.lean - theorem onote.mul_zero - theorem onote.zero_mul 2022-05-28 17:52:55 3280d00 feat(algebra/order/monoid_lemmas_zero_lt): add some lemmas assuming `mul_zero_class` `partial_order`, remove primes (#14060) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean - theorem zero_lt.le_mul_of_le_of_one_le' - theorem zero_lt.le_mul_of_one_le_left' +/- theorem zero_lt.le_mul_of_one_le_left - theorem zero_lt.le_mul_of_one_le_of_le' - theorem zero_lt.le_mul_of_one_le_right' +/- theorem zero_lt.le_mul_of_one_le_right - theorem zero_lt.le_of_le_mul_of_le_one_left' - theorem zero_lt.le_of_mul_le_of_one_le_left' - theorem zero_lt.le_of_mul_le_of_one_le_right' - theorem zero_lt.left.mul_le_one_of_le_of_le' - theorem zero_lt.left.one_le_mul_of_le_of_le' - theorem zero_lt.lt_of_mul_lt_mul_left'' + theorem zero_lt.lt_of_mul_lt_mul_left - theorem zero_lt.lt_of_mul_lt_mul_right'' + theorem zero_lt.lt_of_mul_lt_mul_right + theorem zero_lt.mul_eq_mul_iff_eq_and_eq' + theorem zero_lt.mul_eq_mul_iff_eq_and_eq - theorem zero_lt.mul_le_mul_left'' + theorem zero_lt.mul_le_mul_left - theorem zero_lt.mul_le_mul_right'' + theorem zero_lt.mul_le_mul_right - theorem zero_lt.mul_le_of_le_of_le_one' - theorem zero_lt.mul_le_of_le_one_left' +/- theorem zero_lt.mul_le_of_le_one_left - theorem zero_lt.mul_le_of_le_one_of_le' - theorem zero_lt.mul_le_of_le_one_right' +/- theorem zero_lt.mul_le_of_le_one_right + theorem zero_lt.mul_left_cancel_iff + theorem zero_lt.mul_right_cancel_iff + theorem zero_lt.preorder.le_mul_of_le_mul_left + theorem zero_lt.preorder.le_mul_of_le_mul_right + theorem zero_lt.preorder.le_mul_of_le_of_one_le + theorem zero_lt.preorder.le_mul_of_one_le_left + theorem zero_lt.preorder.le_mul_of_one_le_of_le + theorem zero_lt.preorder.le_mul_of_one_le_right + theorem zero_lt.preorder.le_of_le_mul_of_le_one_left + theorem zero_lt.preorder.le_of_mul_le_of_one_le_left + theorem zero_lt.preorder.le_of_mul_le_of_one_le_right + theorem zero_lt.preorder.left.mul_le_one_of_le_of_le' + theorem zero_lt.preorder.left.one_le_mul_of_le_of_le + theorem zero_lt.preorder.mul_le_mul_of_le_of_le' + theorem zero_lt.preorder.mul_le_mul_of_le_of_le + theorem zero_lt.preorder.mul_le_of_le_of_le_one + theorem zero_lt.preorder.mul_le_of_le_one_left + theorem zero_lt.preorder.mul_le_of_le_one_of_le + theorem zero_lt.preorder.mul_le_of_le_one_right + theorem zero_lt.preorder.mul_le_of_mul_le_left + theorem zero_lt.preorder.mul_le_of_mul_le_right + theorem zero_lt.preorder.right.mul_le_one_of_le_of_le + theorem zero_lt.preorder.right.one_le_mul_of_le_of_le - theorem zero_lt.right.mul_le_one_of_le_of_le' - theorem zero_lt.right.one_le_mul_of_le_of_le' 2022-05-28 15:49:21 1e46532 feat(measure_theory/integral/lebesgue): `lintegral_add` holds if 1 function is measurable (#14278) * for any function `f` there exists a measurable function `g ≤ f` with the same Lebesgue integral; * prove `∫⁻ a, f a + g a ∂μ = ∫⁻ a, f a ∂μ + ∫⁻ a, g a ∂μ` assuming **one** of the functions is (a.e.-)measurable; split `lintegral_add` into two lemmas `lintegral_add_(left|right)`; * prove `∫⁻ a, f a ∂μ + ∫⁻ a, g a ∂μ ≤ ∫⁻ a, f a + g a ∂μ` for any `f`, `g`; * prove a version of Markov's inequality for `μ {x | f x + ε ≤ g x}` with possibly non-measurable `f`; * prove `f ≤ᵐ[μ] g → ∫⁻ x, f x ∂μ ≠ ∞ → ∫⁻ x, g x ∂μ ≤ ∫⁻ x, f x ∂μ → f =ᵐ[μ] g` for an a.e.-measurable function `f`; * drop one measurability assumption in `lintegral_sub` and `lintegral_sub_le`; * add `lintegral_strict_mono_of_ae_le_of_frequently_ae_lt`, a version of `lintegral_strict_mono_of_ae_le_of_ae_lt_on`; * drop one measurability assumption in `lintegral_strict_mono_of_ae_le_of_ae_lt_on`, `lintegral_strict_mono`, and `set_lintegral_strict_mono`; * prove `with_density_add` assuming measurability of one of the functions; replace it with `with_density_add_(left|right)`; * drop measurability assumptions here and there in `mean_inequalities`. ESTIMATED CHANGES Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.integrable.add' - theorem measure_theory.lintegral_nnnorm_add + theorem measure_theory.lintegral_nnnorm_add_left + theorem measure_theory.lintegral_nnnorm_add_right Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.ae_eq_of_ae_le_of_lintegral_le + theorem measure_theory.exists_measurable_le_lintegral_eq + theorem measure_theory.le_lintegral_add - theorem measure_theory.lintegral_add' - theorem measure_theory.lintegral_add + theorem measure_theory.lintegral_add_aux + theorem measure_theory.lintegral_add_left' + theorem measure_theory.lintegral_add_left + theorem measure_theory.lintegral_add_mul_meas_add_le_le_lintegral + theorem measure_theory.lintegral_add_right' + theorem measure_theory.lintegral_add_right + theorem measure_theory.lintegral_finset_sum' + theorem measure_theory.lintegral_indicator₀ + theorem measure_theory.lintegral_strict_mono_of_ae_le_of_frequently_ae_lt +/- theorem measure_theory.lintegral_sub +/- theorem measure_theory.lintegral_sub_le +/- theorem measure_theory.lintegral_zero +/- theorem measure_theory.lintegral_zero_fun - theorem measure_theory.with_density_add + theorem measure_theory.with_density_add_left + theorem measure_theory.with_density_add_right Modified src/measure_theory/integral/mean_inequalities.lean +/- theorem ennreal.ae_eq_zero_of_lintegral_rpow_eq_zero +/- theorem ennreal.lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/probability/integration.lean 2022-05-28 15:49:19 249f107 feat(algebra/order/monoid_lemmas): remove duplicates, add missing lemmas, fix inconsistencies (#13494) Changes in the order: `mul_lt_mul'''` has asymmetric typeclass assumptions. So I did the following 3 changes. Rename `mul_lt_mul'''` to `left.mul_lt_mul` Make an alias `mul_lt_mul'''` of `mul_lt_mul_of_lt_of_lt` Add `right.mul_lt_mul` Move `le_mul_of_one_le_left'` and `mul_le_of_le_one_left'` together with similar lemmas. Move `lt_mul_of_one_lt_left'` together with similar lemmas. Add `mul_lt_of_lt_one_right'` and `mul_lt_of_lt_one_left'`. These are analogs of other lemmas. Following are changes of lemmas of the form `b ≤ c → a ≤ 1 → b * a ≤ c`, `b ≤ c → 1 ≤ a → b ≤ c * a`, `a ≤ 1 → b ≤ c → a * b ≤ c` and `1 ≤ a → b ≤ c → b ≤ a * c`. With the following changes, these 4 sections will be very similar. For `b ≤ c → a ≤ 1 → b * a ≤ c`: Remove `alias mul_le_of_le_of_le_one ← mul_le_one'`. This naming is not consistent with `left.mul_lt_one`. Add `mul_lt_of_lt_of_lt_one'`. Add `left.mul_le_one`. Add `left.mul_lt_one_of_le_of_lt`. Add `left.mul_lt_one_of_lt_of_le`. Add `left.mul_lt_one'`. For `b ≤ c → 1 ≤ a → b ≤ c * a`: Rename `le_mul_of_le_of_le_one` to `le_mul_of_le_of_one_le`. Remove `lt_mul_of_lt_of_one_le'`. It's exactly the same as `lt_mul_of_lt_of_one_le`. Rename `one_le_mul_right` to `left.one_le_mul`. Rename `one_le_mul` to `left.one_le_mul`. Rename `one_lt_mul_of_lt_of_le'` to `left.one_lt_mul_of_lt_of_le'`. Add `left.one_lt_mul`. Rename `one_lt_mul'` to `left.one_lt_mul'`. For `a ≤ 1 → b ≤ c → a * b ≤ c`: Add `mul_lt_of_lt_one_of_lt'`. Add `right.mul_le_one`. Add `right.mul_lt_one_of_lt_of_le`. Add `right.mul_lt_one'`. For `1 ≤ a → b ≤ c → b ≤ a * c`: Rename `lt_mul_of_one_lt_of_lt` to `lt_mul_of_one_lt_of_lt'`. Add `lt_mul_of_one_lt_of_lt`. Add `right.one_lt_mul_of_lt_of_le`. Rename `one_lt_mul_of_le_of_lt'` to `right.one_lt_mul_of_le_of_lt`. Add `right.one_lt_mul'`. Then create aliases for all `left` lemmas in these 4 sections. Rename `mul_eq_mul_iff_eq_and_eq` to `left.mul_eq_mul_iff_eq_and_eq`. Add `right.mul_eq_mul_iff_eq_and_eq`. Make an alias `mul_eq_mul_iff_eq_and_eq` of `left.mul_eq_mul_iff_eq_and_eq`. Same for additive version. However, the implicit parameter inconsistency has not been resolved. It affects too many files. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/monoid_lemmas.lean - theorem le_mul_of_le_of_le_one +/- theorem le_mul_of_one_le_right' + theorem left.mul_eq_mul_iff_eq_and_eq + theorem left.mul_le_one + theorem left.mul_lt_mul + theorem left.mul_lt_one' + theorem left.mul_lt_one_of_le_of_lt + theorem left.mul_lt_one_of_lt_of_le + theorem left.one_le_mul + theorem left.one_lt_mul' + theorem left.one_lt_mul + theorem left.one_lt_mul_of_le_of_lt + theorem left.one_lt_mul_of_lt_of_le - theorem lt_mul_of_lt_of_one_le' + theorem lt_mul_of_one_lt_of_lt' +/- theorem lt_mul_of_one_lt_of_lt +/- theorem lt_mul_of_one_lt_right' - theorem mul_eq_mul_iff_eq_and_eq +/- theorem mul_le_of_le_one_right' - theorem mul_lt_mul''' + theorem mul_lt_of_lt_of_lt_one' + theorem mul_lt_of_lt_one_left' + theorem mul_lt_of_lt_one_of_lt' + theorem mul_lt_of_lt_one_right' - theorem one_le_mul - theorem one_le_mul_right - theorem one_lt_mul' - theorem one_lt_mul_of_le_of_lt' - theorem one_lt_mul_of_lt_of_le' + theorem right.mul_eq_mul_iff_eq_and_eq + theorem right.mul_le_one + theorem right.mul_lt_mul + theorem right.mul_lt_one' + theorem right.mul_lt_one_of_le_of_lt + theorem right.mul_lt_one_of_lt_of_le + theorem right.one_lt_mul' + theorem right.one_lt_mul_of_le_of_lt + theorem right.one_lt_mul_of_lt_of_le Modified src/combinatorics/additive/salem_spencer.lean Modified src/number_theory/primes_congruent_one.lean Modified src/set_theory/ordinal/principal.lean 2022-05-28 13:51:33 2ce8482 feat(computability/regular_expressions): add power operator (#14261) We can't make `regular_expression` a monoid, but we can put a power operator on it that's compatible with the power operator on languages. ESTIMATED CHANGES Modified src/computability/regular_expressions.lean + theorem regular_expression.matches_pow 2022-05-28 13:51:32 8a0e712 feat(category_theory/monoidal/discrete): simps (#14259) This is a minuscule change, but it appears to work both on `master` and in the [shift functor refactor](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/trouble.20in.20.60shift_functor.60.20land) I'm aspiring towards, so I'm shipping it off for CI. ESTIMATED CHANGES Modified src/category_theory/monoidal/discrete.lean 2022-05-28 13:51:31 dcd5ebd feat({data/{finset,set},order/filter}/pointwise): More lemmas (#14216) Lemmas about `s ^ n`, `0 * s` and `1 ∈ s / t`. Other changes: * `finset.mul_card_le` → `finset.card_mul_le` * `finset.card_image_eq_iff_inj_on` → `finset.card_image_iff`. * `zero_smul_subset` → `zero_smul_set_subset` * Reorder lemmas slightly * Add an explicit argument to `finset.coe_smul_finset` * Remove an explicit argument to `set.empty` ESTIMATED CHANGES Modified src/analysis/convex/gauge.lean Modified src/data/finset/basic.lean Modified src/data/finset/card.lean - theorem finset.card_image_eq_iff_inj_on + theorem finset.card_image_iff Modified src/data/finset/interval.lean Modified src/data/finset/n_ary.lean + theorem finset.card_image₂_iff + theorem finset.image₂_singleton_left' Modified src/data/finset/pointwise.lean + theorem finset.card_mul_iff + theorem finset.card_mul_le + theorem finset.empty_pow + theorem finset.image_div + theorem finset.image_mul +/- theorem finset.image_one - theorem finset.mul_card_le + theorem finset.mul_univ_of_one_mem + theorem finset.nonempty.one_mem_div + theorem finset.nonempty.subset_one_iff + theorem finset.not_one_mem_div_iff + theorem finset.one_mem_div_iff + theorem finset.pow_mem_pow + theorem finset.pow_subset_pow + theorem finset.pow_subset_pow_of_one_mem + theorem finset.subset_mul_left + theorem finset.subset_mul_right + theorem finset.subset_one_iff_eq + theorem finset.univ_mul_of_one_mem + theorem finset.univ_mul_univ + theorem finset.univ_pow Modified src/data/set/pointwise.lean + theorem set.div_zero_subset +/- theorem set.empty_pow + theorem set.image_div +/- theorem set.image_mul + theorem set.mul_univ_of_one_mem + theorem set.mul_zero_subset + theorem set.nonempty.div_zero + theorem set.nonempty.mul_zero + theorem set.nonempty.one_mem_div + theorem set.nonempty.smul_zero + theorem set.nonempty.zero_div + theorem set.nonempty.zero_mul + theorem set.nonempty.zero_smul + theorem set.not_one_mem_div_iff + theorem set.nsmul_univ + theorem set.one_mem_div_iff + theorem set.pow_subset_pow_of_one_mem + theorem set.preimage_div_preimage_subset +/- theorem set.preimage_mul_preimage_subset +/- theorem set.smul_mem_smul_set_iff + theorem set.smul_zero_subset + theorem set.univ_mul_of_one_mem + theorem set.univ_pow + theorem set.zero_div_subset + theorem set.zero_mul_subset + theorem set.zero_smul_set_subset +/- theorem set.zero_smul_subset Modified src/measure_theory/measure/haar.lean Modified src/order/filter/basic.lean +/- theorem filter.le_def + theorem filter.le_map_iff + theorem filter.ne_bot.not_disjoint + theorem filter.ne_bot.of_map + theorem filter.not_disjoint_self_iff Modified src/order/filter/pointwise.lean + theorem filter.bot_pow + theorem filter.mem_mul - theorem filter.mem_mul_iff + theorem filter.mul_top_of_one_le + theorem filter.ne_bot.div_zero_nonneg + theorem filter.ne_bot.mul_zero_nonneg + theorem filter.ne_bot.of_smul_filter + theorem filter.ne_bot.one_le_div + theorem filter.ne_bot.smul_zero_nonneg + theorem filter.ne_bot.zero_div_nonneg + theorem filter.ne_bot.zero_mul_nonneg + theorem filter.ne_bot.zero_smul_nonneg + theorem filter.not_one_le_div_iff + theorem filter.nsmul_top + theorem filter.top_mul_of_one_le + theorem filter.top_mul_top + theorem filter.top_pow + theorem filter.zero_smul_filter + theorem filter.zero_smul_filter_nonpos Modified src/ring_theory/chain_of_divisors.lean 2022-05-28 11:42:59 15fe782 doc(set_theory/lists): fix typo (#14427) ESTIMATED CHANGES Modified src/set_theory/lists.lean 2022-05-28 11:42:58 d0efbcb feat(model_theory/elementary_maps): Elementary maps respect all (bounded) formulas (#14252) Generalizes `elementary_embedding.map_formula` to more classes of formula. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.inclusion_eq_id Modified src/model_theory/elementary_maps.lean + theorem first_order.language.elementary_embedding.Theory_model_iff + theorem first_order.language.elementary_embedding.map_bounded_formula +/- theorem first_order.language.elementary_embedding.map_formula + theorem first_order.language.elementary_embedding.map_sentence 2022-05-28 11:42:57 599240f refactor(order/bounds): general cleanup (#14127) Apart from golfing, this PR does the following: Add the following theorems (which are immediate from the non-self counterparts): - `monotone_on.mem_upper_bounds_image_self` - `monotone_on.mem_lower_bounds_image_self` - `antitone_on.mem_upper_bounds_image_self` - `antitone_on.mem_lower_bounds_image_self` Remove the following theorems (as they're just `mem_X_bounds_image` under unnecessarily stronger assumptions): - `monotone_on.is_lub_image_le` - `monotone_on.le_is_glb_image` - `antitone_on.is_lub_image_le` - `antitone_on.le_is_glb_image` - `monotone.is_lub_image_le` - `monotone.le_is_glb_image` - `antitone.is_lub_image_le` - `antitone.le_is_glb_image` Remove a redundant argument `s ⊆ t` from the following (the old theorems follow immediately from the new ones and `monotone_on.mono`): - `monotone_on.map_is_greatest` - `monotone_on.map_is_least` - `antitone_on.map_is_greatest` - `antitone_on.map_is_least` ESTIMATED CHANGES Modified src/order/bounds.lean +/- theorem antitone.image_lower_bounds_subset_upper_bounds_image +/- theorem antitone.image_upper_bounds_subset_lower_bounds_image - theorem antitone.is_lub_image_le - theorem antitone.le_is_glb_image +/- theorem antitone.map_bdd_above +/- theorem antitone.map_bdd_below +/- theorem antitone.map_is_greatest +/- theorem antitone.map_is_least +/- theorem antitone.mem_lower_bounds_image +/- theorem antitone.mem_upper_bounds_image - theorem antitone_on.is_lub_image_le - theorem antitone_on.le_is_glb_image +/- theorem antitone_on.map_is_greatest +/- theorem antitone_on.map_is_least +/- theorem antitone_on.mem_lower_bounds_image + theorem antitone_on.mem_lower_bounds_image_self +/- theorem antitone_on.mem_upper_bounds_image + theorem antitone_on.mem_upper_bounds_image_self +/- theorem monotone.image_lower_bounds_subset_lower_bounds_image +/- theorem monotone.image_upper_bounds_subset_upper_bounds_image - theorem monotone.is_lub_image_le - theorem monotone.le_is_glb_image +/- theorem monotone.map_bdd_above +/- theorem monotone.map_bdd_below +/- theorem monotone.mem_lower_bounds_image +/- theorem monotone.mem_upper_bounds_image +/- theorem monotone_on.image_upper_bounds_subset_upper_bounds_image - theorem monotone_on.is_lub_image_le - theorem monotone_on.le_is_glb_image +/- theorem monotone_on.map_is_greatest +/- theorem monotone_on.map_is_least + theorem monotone_on.mem_lower_bounds_image_self + theorem monotone_on.mem_upper_bounds_image_self Modified src/order/galois_connection.lean 2022-05-28 10:25:26 bb90598 feat(set_theory/ordinal/basic): Turn various lemmas into `simp` (#14075) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean +/- theorem ordinal.card_typein +/- theorem ordinal.enum_inj +/- theorem ordinal.enum_le_enum' +/- theorem ordinal.enum_le_enum +/- theorem ordinal.typein_inj 2022-05-28 05:34:51 dccab1c feat(algebra/ring/basic): Generalize theorems on distributivity (#14140) Many theorems assuming full distributivity only need left or right distributivity. We remedy this by making new `left_distrib_class` and `right_distrib_class` classes. The main motivation here is to generalize various theorems on ordinals, like [ordinal.mul_add](https://leanprover-community.github.io/mathlib_docs/set_theory/ordinal/arithmetic.html#ordinal.mul_add). ESTIMATED CHANGES Modified src/algebra/ring/basic.lean +/- theorem add_one_mul +/- theorem bit0_eq_two_mul +/- theorem distrib_three_right +/- theorem dvd_add +/- theorem left_distrib +/- theorem mul_add_one +/- theorem mul_one_add +/- theorem mul_two +/- theorem one_add_mul +/- theorem one_add_one_eq_two +/- theorem right_distrib +/- theorem two_mul Modified src/algebra/ring/boolean_ring.lean Modified src/algebra/ring/opposite.lean Modified src/data/num/lemmas.lean Modified src/ring_theory/coprime/lemmas.lean Modified src/tactic/omega/eq_elim.lean 2022-05-28 04:03:23 15b7e53 refactor(set_theory/cardinal/*): `cardinal.succ` → `order.succ` (#14273) ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/set_theory/cardinal/basic.lean - theorem cardinal.le_of_lt_succ - theorem cardinal.le_succ - theorem cardinal.lt_succ - theorem cardinal.lt_succ_iff +/- theorem cardinal.powerlt_succ - def cardinal.succ + theorem cardinal.succ_def - theorem cardinal.succ_le_iff - theorem cardinal.succ_le_of_lt - theorem cardinal.succ_nonempty +/- theorem cardinal.succ_pos +/- theorem cardinal.succ_zero Modified src/set_theory/cardinal/cofinality.lean +/- theorem cardinal.is_regular_aleph_succ +/- theorem order.cof_le Modified src/set_theory/cardinal/continuum.lean Modified src/set_theory/cardinal/ordinal.lean +/- theorem cardinal.aleph'_succ +/- theorem cardinal.aleph_succ Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.bmex_lt_ord_succ_card +/- theorem ordinal.mex_lt_ord_succ_mk Modified src/set_theory/ordinal/basic.lean +/- theorem cardinal.lt_ord_succ_card 2022-05-28 00:43:54 5eb68b5 feat(data/polynomial/mirror): `nat_degree` and `nat_trailing_degree` of `p * p.mirror` (#14397) This PR adds lemmas for the `nat_degree` and `nat_trailing_degree` of `p * p.mirror`. These lemmas tell you that you can recover `p.nat_degree` and `p.nat_trailing_degree` from `p * p.mirror`, which will be useful for irreducibility of x^n-x-1. ESTIMATED CHANGES Modified src/data/polynomial/mirror.lean + theorem polynomial.nat_degree_mul_mirror + theorem polynomial.nat_trailing_degree_mul_mirror 2022-05-27 23:26:09 a08d179 refactor(set_theory/ordinal/*): `ordinal.succ` → `order.succ` (#14243) We inline the definition of `ordinal.succ` in the `succ_order` instance. This allows us to comfortably use all of the theorems about `order.succ` to our advantage. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean +/- theorem cardinal.is_regular_aleph'_succ +/- theorem cardinal.is_regular_aleph_succ Modified src/set_theory/cardinal/ordinal.lean +/- theorem cardinal.aleph'_succ +/- theorem cardinal.aleph_succ Modified src/set_theory/game/birthday.lean Modified src/set_theory/ordinal/arithmetic.lean +/- theorem ordinal.blsub_const +/- theorem ordinal.blsub_le_bsup_succ +/- theorem ordinal.blsub_one +/- theorem ordinal.bsup_id_limit +/- theorem ordinal.is_normal.eq_iff_zero_and_succ +/- def ordinal.lsub +/- theorem ordinal.lsub_const +/- theorem ordinal.lsub_unique +/- theorem ordinal.mul_add_one +/- theorem ordinal.mul_one_add +/- theorem ordinal.mul_succ - theorem ordinal.succ_inj - theorem ordinal.succ_le_succ +/- theorem ordinal.succ_lt_of_is_limit +/- theorem ordinal.succ_lt_of_not_succ - theorem ordinal.succ_lt_succ +/- theorem ordinal.succ_one +/- theorem ordinal.succ_zero +/- theorem ordinal.sup_eq_lsub +/- theorem ordinal.sup_succ_eq_lsub +/- theorem ordinal.sup_succ_le_lsub Modified src/set_theory/ordinal/basic.lean + theorem ordinal.add_one_eq_succ +/- theorem ordinal.le_enum_succ - theorem ordinal.lt_succ - theorem ordinal.lt_succ_self - def ordinal.succ - theorem ordinal.succ_eq_add_one - theorem ordinal.succ_le - theorem ordinal.succ_ne_self Modified src/set_theory/ordinal/fixed_point.lean Modified src/set_theory/ordinal/notation.lean Modified src/set_theory/ordinal/principal.lean Modified src/set_theory/ordinal/topology.lean 2022-05-27 21:20:28 9919539 feat(category_theory): more API for isomorphisms (#14420) ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean + theorem category_theory.comp_inv_eq_id + theorem category_theory.inv_comp_eq_id + theorem category_theory.is_iso_of_comp_hom_eq_id + theorem category_theory.is_iso_of_hom_comp_eq_id + theorem category_theory.iso.comp_inv_eq_id + theorem category_theory.iso.inv_comp_eq_id 2022-05-27 21:20:27 533cbf4 feat(data/int/{cast, char_zero}): relax typeclass assumptions (#14413) ESTIMATED CHANGES Modified src/data/int/cast.lean +/- theorem int.cast_bit0 +/- theorem int.cast_bit1 +/- theorem int.cast_comm +/- theorem int.cast_commute +/- theorem int.cast_four +/- theorem int.cast_mul +/- def int.cast_ring_hom +/- theorem int.cast_three +/- theorem int.cast_two +/- theorem int.coe_cast_ring_hom +/- theorem int.commute_cast +/- theorem ring_hom.ext_int Modified src/data/int/char_zero.lean +/- theorem ring_hom.injective_int 2022-05-27 19:20:34 f598e58 feat(topology/vector_bundle): do not require topology on the fibers for topological_vector_prebundle (#14377) * Separated from branch `vb-hom` ESTIMATED CHANGES Modified src/topology/vector_bundle.lean + def topological_vector_prebundle.fiber_topology + theorem topological_vector_prebundle.inducing_total_space_mk - theorem topological_vector_prebundle.inducing_total_space_mk_of_inducing_comp 2022-05-27 19:20:33 a94ae0c feat(data/list/min_max): add le_max_of_le, min_le_of_le (#14340) ESTIMATED CHANGES Modified src/data/list/min_max.lean + theorem list.le_max_of_le + theorem list.min_le_of_le 2022-05-27 19:20:32 41ca601 feat(analysis/convolution): The convolution of two functions (#13540) * Define the convolution of two functions. * Prove that when one of the functions has compact support and is `C^n` and the other function is locally integrable, the convolution is `C^n`. * Compute the total derivative of the convolution (when one of the functions has compact support). * Prove that when taking the convolution with functions that "tend to the Dirac delta function", the convolution tends to the original function. * From the sphere eversion project. ESTIMATED CHANGES Modified src/analysis/convolution.lean + theorem bdd_above.continuous_convolution_left_of_integrable + theorem bdd_above.continuous_convolution_right_of_integrable + theorem cont_diff_bump_of_inner.convolution_eq_right + theorem cont_diff_bump_of_inner.convolution_tendsto_right' + theorem cont_diff_bump_of_inner.convolution_tendsto_right + theorem cont_diff_bump_of_inner.dist_normed_convolution_le + theorem cont_diff_bump_of_inner.normed_convolution_eq_right + theorem convolution_assoc + theorem convolution_congr + theorem convolution_def + theorem convolution_eq_right' + theorem convolution_eq_swap + theorem convolution_exists.add_distrib + theorem convolution_exists.distrib_add + theorem convolution_exists_at.add_distrib + theorem convolution_exists_at.distrib_add + theorem convolution_flip + theorem convolution_lmul + theorem convolution_lmul_swap + theorem convolution_lsmul + theorem convolution_lsmul_swap + theorem convolution_precompR_apply + theorem convolution_smul + theorem convolution_tendsto_right + theorem convolution_zero + theorem dist_convolution_le' + theorem dist_convolution_le + theorem has_compact_support.cont_diff_convolution_left + theorem has_compact_support.cont_diff_convolution_right + theorem has_compact_support.continuous_convolution_left + theorem has_compact_support.continuous_convolution_left_of_integrable + theorem has_compact_support.continuous_convolution_right + theorem has_compact_support.continuous_convolution_right_of_integrable + theorem has_compact_support.convolution + theorem has_compact_support.has_deriv_at_convolution_left + theorem has_compact_support.has_deriv_at_convolution_right + theorem has_compact_support.has_fderiv_at_convolution_left + theorem has_compact_support.has_fderiv_at_convolution_right + theorem measure_theory.integrable.integrable_convolution + theorem smul_convolution + theorem support_convolution_subset + theorem support_convolution_subset_swap + theorem zero_convolution Modified src/measure_theory/integral/set_integral.lean 2022-05-27 19:20:31 baad002 feat(analysis/complex/phragmen_lindelof): Phragmen-Lindelöf principle for some shapes (#13178) Prove Phragmen-Lindelöf principle - in a horizontal strip; - in a vertical strip; - in a coordinate quadrant; - in the right half-plane (a few versions). ESTIMATED CHANGES Modified src/analysis/complex/abs_max.lean + theorem complex.norm_eq_norm_of_is_max_on_of_ball_subset - theorem complex.norm_eq_norm_of_is_max_on_of_closed_ball_subset Added src/analysis/complex/phragmen_lindelof.lean + theorem phragmen_lindelof.eq_on_horizontal_strip + theorem phragmen_lindelof.eq_on_quadrant_I + theorem phragmen_lindelof.eq_on_quadrant_II + theorem phragmen_lindelof.eq_on_quadrant_III + theorem phragmen_lindelof.eq_on_quadrant_IV + theorem phragmen_lindelof.eq_on_right_half_plane_of_superexponential_decay + theorem phragmen_lindelof.eq_on_vertical_strip + theorem phragmen_lindelof.eq_zero_on_horizontal_strip + theorem phragmen_lindelof.eq_zero_on_quadrant_I + theorem phragmen_lindelof.eq_zero_on_quadrant_II + theorem phragmen_lindelof.eq_zero_on_quadrant_III + theorem phragmen_lindelof.eq_zero_on_quadrant_IV + theorem phragmen_lindelof.eq_zero_on_right_half_plane_of_superexponential_decay + theorem phragmen_lindelof.eq_zero_on_vertical_strip + theorem phragmen_lindelof.horizontal_strip + theorem phragmen_lindelof.is_O_sub_exp_exp + theorem phragmen_lindelof.is_O_sub_exp_rpow + theorem phragmen_lindelof.quadrant_I + theorem phragmen_lindelof.quadrant_II + theorem phragmen_lindelof.quadrant_III + theorem phragmen_lindelof.quadrant_IV + theorem phragmen_lindelof.right_half_plane_of_bounded_on_real + theorem phragmen_lindelof.right_half_plane_of_tendsto_zero_on_real + theorem phragmen_lindelof.vertical_strip 2022-05-27 17:41:19 1ccb7f0 feat(model_theory/syntax, semantics): Lemmas about relabeling variables (#14225) Proves lemmas about relabeling variables in terms and formulas Defines `first_order.language.bounded_formula.to_formula`, which turns turns all of the extra variables of a `bounded_formula` into free variables. ESTIMATED CHANGES Modified src/logic/equiv/fin.lean + theorem fin_sum_fin_equiv_symm_last Modified src/model_theory/semantics.lean + theorem first_order.language.bounded_formula.realize_to_formula Modified src/model_theory/syntax.lean +/- def first_order.language.bounded_formula.cast_le +/- def first_order.language.bounded_formula.relabel +/- def first_order.language.bounded_formula.relabel_aux + theorem first_order.language.bounded_formula.relabel_aux_sum_inl + theorem first_order.language.bounded_formula.relabel_sum_inl + def first_order.language.bounded_formula.to_formula + theorem first_order.language.term.relabel_id + theorem first_order.language.term.relabel_relabel 2022-05-27 17:02:33 4b9e57b feat(model_theory/satisfiability): Upward Löwenheim–Skolem (#13982) `first_order.language.Theory.exists_elementary_embedding_card_eq` proves the Upward Löwenheim–Skolem Theorem: every infinite `L`-structure `M` elementarily embeds into an `L`-structure of a given cardinality if that cardinality is larger than the cardinalities of `L` and `M`. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/model_theory/satisfiability.lean + theorem first_order.language.Theory.exists_elementary_embedding_card_eq Modified src/model_theory/skolem.lean +/- theorem first_order.language.exists_elementary_substructure_card_eq 2022-05-27 08:53:16 25f75c4 chore(filter/pointwise): protect filter.has_involutive_inv (#14398) ESTIMATED CHANGES Modified src/order/filter/pointwise.lean - def filter.has_involutive_inv 2022-05-27 08:04:40 2a9b0f8 chore(ring_theory/artinian): clarify left/right -ness in doc strings (#14396) ESTIMATED CHANGES Modified src/ring_theory/artinian.lean 2022-05-27 05:12:29 841aef2 feat(algebraic_topology): the nerve of a category (#14304) ESTIMATED CHANGES Added src/algebraic_topology/nerve.lean + def category_theory.nerve + def category_theory.nerve_functor Modified src/algebraic_topology/simplex_category.lean + def simplex_category.to_Cat 2022-05-27 04:25:55 bae0229 feat(category_theory/monoidal/subcategory): full monoidal subcategories (#14311) We use a type synonym for `{X : C // P X}` when `C` is a monoidal category and the property `P` is closed under the monoidal unit and tensor product so that `full_monoidal_subcategory` can be made an instance. ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean Modified src/category_theory/monoidal/category.lean - def category_theory.monoidal_category.full_monoidal_subcategory Added src/category_theory/monoidal/subcategory.lean + def category_theory.monoidal_category.full_braided_subcategory.map + def category_theory.monoidal_category.full_braided_subcategory_inclusion + def category_theory.monoidal_category.full_monoidal_subcategory.map + def category_theory.monoidal_category.full_monoidal_subcategory_inclusion 2022-05-27 02:02:29 48d831a feat(order/bounded_order): define `with_bot.map` and `with_top.map` (#14163) Also define `monotone.with_bot` etc. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean Modified src/algebra/order/ring.lean Modified src/logic/embedding.lean + def function.embedding.option_map Modified src/order/bounded_order.lean + def with_bot.map +/- theorem with_bot.map_bot +/- theorem with_bot.map_coe + def with_top.map +/- theorem with_top.map_coe +/- theorem with_top.map_top Modified src/order/hom/basic.lean 2022-05-26 22:13:11 8dd4619 feat(combinatorics/simple_graph/connectivity): deleting edges outside a walk (#14110) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.walk.is_path.to_delete_edges + theorem simple_graph.walk.map_is_path_iff_of_injective + theorem simple_graph.walk.map_to_delete_edges_eq + def simple_graph.walk.to_delete_edge + def simple_graph.walk.to_delete_edges 2022-05-26 20:25:47 27791f9 feat(data/real/nnreal): add mul csupr/cinfi lemmas (#13936) ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean + theorem div_le_div_left₀ + theorem mul_le_mul_left₀ + def order_iso.mul_left₀' + theorem order_iso.mul_left₀'_symm + def order_iso.mul_right₀' + theorem order_iso.mul_right₀'_symm Modified src/data/real/basic.lean + theorem real.infi_of_not_bdd_below + theorem real.supr_of_not_bdd_above Modified src/data/real/nnreal.lean + theorem nnreal.Sup_of_not_bdd_above + theorem nnreal.infi_const_zero + theorem nnreal.infi_empty + theorem nnreal.infi_mul + theorem nnreal.le_infi_mul + theorem nnreal.le_infi_mul_infi + theorem nnreal.le_mul_infi + theorem nnreal.le_to_nnreal_of_coe_le + theorem nnreal.mul_infi + theorem nnreal.mul_supr + theorem nnreal.mul_supr_le + theorem nnreal.supr_div + theorem nnreal.supr_mul + theorem nnreal.supr_mul_le + theorem nnreal.supr_mul_supr_le + theorem nnreal.supr_of_not_bdd_above Modified src/data/set/pointwise.lean + theorem set.inv_range + theorem set.smul_set_range 2022-05-26 18:17:05 525cc65 feat(order/rel_classes): Reflexive relation from irreflexive and viceversa (#13411) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean 2022-05-26 15:16:47 b2973b1 feat(logic/function/basic): add `function.const_injective` (#14388) Add `function.const_injective` and `function.const_inj`. ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.const_inj + theorem function.const_injective 2022-05-26 15:16:46 d3b155b chore(data/stream/defs): add spaces around infix operators (#14386) ESTIMATED CHANGES Modified src/data/stream/defs.lean 2022-05-26 15:16:44 034cf66 chore(set_theory/ordinal/topology): add `variables` block (#14369) We rename a bunch of variables, but don't fundamentally change any proof. ESTIMATED CHANGES Modified src/set_theory/ordinal/topology.lean +/- theorem ordinal.enum_ord_is_normal_iff_is_closed +/- theorem ordinal.is_closed_iff_bsup +/- theorem ordinal.is_closed_iff_sup +/- theorem ordinal.is_limit_of_mem_frontier +/- theorem ordinal.is_open_iff +/- theorem ordinal.is_open_singleton_iff +/- theorem ordinal.mem_closed_iff_bsup +/- theorem ordinal.mem_closed_iff_sup +/- theorem ordinal.mem_closure_iff_bsup +/- theorem ordinal.mem_closure_iff_sup 2022-05-26 15:16:39 be34b95 feat(topology/separation): split some proofs (#14337) ESTIMATED CHANGES Modified src/topology/separation.lean + theorem minimal_nonempty_closed_subsingleton + theorem minimal_nonempty_open_subsingleton 2022-05-26 13:56:36 70e784d feat(data/polynomial/*): `(p * q).trailing_degree = p.trailing_degree + q.trailing_degree` (#14384) We already had a `nat_trailing_degree_mul` lemma, but this PR does things properly, following the analogous results for `degree`. In particular, we now have some useful intermediate results that do not assume `no_zero_divisors`. ESTIMATED CHANGES Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.coeff_mul_nat_trailing_degree_add_nat_trailing_degree + theorem polynomial.nat_trailing_degree_mul' + theorem polynomial.nat_trailing_degree_mul + theorem polynomial.trailing_degree_mul' Modified src/data/polynomial/mirror.lean Modified src/data/polynomial/ring_division.lean - theorem polynomial.nat_trailing_degree_mul + theorem polynomial.trailing_degree_mul 2022-05-26 11:04:30 5aeafaa feat(algebra/order/monoid): add `le_iff_exists_mul'` (#14387) Add a version of `le_iff_exists_mul'`/`le_iff_exists_add'`, versions of `le_iff_exists_mul`/`le_iff_exists_add` with multiplication on the other side. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem le_iff_exists_mul' 2022-05-26 09:28:23 acd0509 feat(order/succ_pred/interval_succ): new file (#14294) Add 2 lemmas about `set.Ioc (f x) (f (order.succ x))`, where `f` is a monotone function. ESTIMATED CHANGES Modified src/order/succ_pred/basic.lean + theorem order.Ico_succ_right_eq_insert_of_not_is_max + theorem order.Iio_succ_eq_insert_of_not_is_max + theorem order.Ioo_succ_right_eq_insert_of_not_is_max Added src/order/succ_pred/interval_succ.lean + theorem antitone.pairwise_disjoint_on_Ico_pred + theorem antitone.pairwise_disjoint_on_Ico_succ + theorem antitone.pairwise_disjoint_on_Ioc_pred + theorem antitone.pairwise_disjoint_on_Ioc_succ + theorem antitone.pairwise_disjoint_on_Ioo_pred + theorem antitone.pairwise_disjoint_on_Ioo_succ + theorem monotone.bUnion_Ico_Ioc_map_succ + theorem monotone.pairwise_disjoint_on_Ico_pred + theorem monotone.pairwise_disjoint_on_Ico_succ + theorem monotone.pairwise_disjoint_on_Ioc_pred + theorem monotone.pairwise_disjoint_on_Ioc_succ + theorem monotone.pairwise_disjoint_on_Ioo_pred + theorem monotone.pairwise_disjoint_on_Ioo_succ 2022-05-26 05:56:29 4bf1b02 feat(category_theory/limits): products give pullback squares (#14327) Follow-up to #14220 ESTIMATED CHANGES Modified src/category_theory/limits/constructions/binary_products.lean Modified src/category_theory/limits/shapes/comm_sq.lean + theorem category_theory.is_pullback.of_has_binary_product' + theorem category_theory.is_pullback.of_has_binary_product + theorem category_theory.is_pullback.of_is_product + theorem category_theory.is_pushout.of_has_binary_coproduct' + theorem category_theory.is_pushout.of_has_binary_coproduct + theorem category_theory.is_pushout.of_is_coproduct 2022-05-26 02:20:40 634bef9 feat(topology/continuous_function/stone_weierstrass): generalize the complex Stone-Weierstrass theorem to is_R_or_C fields (#14374) This PR generalizes the complex Stone-Weierstrass theorem to hold for an `is_R_or_C` field. ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.continuous_abs + theorem is_R_or_C.continuous_norm_sq Modified src/topology/continuous_function/stone_weierstrass.lean +/- def continuous_map.conj_invariant_subalgebra +/- theorem continuous_map.mem_conj_invariant_subalgebra - theorem continuous_map.subalgebra_complex_topological_closure_eq_top_of_separates_points + theorem continuous_map.subalgebra_is_R_or_C_topological_closure_eq_top_of_separates_points - theorem subalgebra.separates_points.complex_to_real + theorem subalgebra.separates_points.is_R_or_C_to_real 2022-05-25 20:40:47 c5b3de8 refactor(data/polynomial/*): Make `support_C_mul_X_pow` match `support_monomial` (#14119) This PR makes `support_C_mul_X_pow` match `support_monomial`. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.support_C_mul_X_pow' + theorem polynomial.support_C_mul_X_pow +/- theorem polynomial.support_monomial Modified src/data/polynomial/coeff.lean - theorem polynomial.support_C_mul_X_pow' - theorem polynomial.support_mul_X_pow Modified src/data/polynomial/degree/definitions.lean - theorem polynomial.support_C_mul_X_pow - theorem polynomial.support_C_mul_X_pow_nonzero Modified src/data/polynomial/degree/trailing_degree.lean Modified src/ring_theory/polynomial/content.lean 2022-05-25 19:08:50 dc0fadd feat(linear_algebra/prod): define the graph of a linear map (#14266) ESTIMATED CHANGES Modified src/linear_algebra/prod.lean + def linear_map.graph + theorem linear_map.graph_eq_ker_coprod + theorem linear_map.graph_eq_range_prod + theorem linear_map.mem_graph_iff 2022-05-25 19:08:49 fae32b6 refactor(analysis/normed_space/M_structure): generalize to arbitrary faithful actions (#14222) This follows up from a comment in review of #12173 The motivation here is to allow `X →L[𝕜] X`, `X →+ X`, and other weaker or stronger endomorphisms to also be used This also tides up a few proof names and some poorly-rendering LaTeX ESTIMATED CHANGES Modified src/analysis/normed_space/M_structure.lean +/- theorem is_Lprojection.Lcomplement +/- theorem is_Lprojection.Lcomplement_iff +/- theorem is_Lprojection.coe_bot +/- theorem is_Lprojection.coe_compl +/- theorem is_Lprojection.coe_inf +/- theorem is_Lprojection.coe_one +/- theorem is_Lprojection.coe_sdiff +/- theorem is_Lprojection.coe_sup +/- theorem is_Lprojection.coe_top +/- theorem is_Lprojection.coe_zero +/- theorem is_Lprojection.commute + theorem is_Lprojection.compl_mul - theorem is_Lprojection.compl_mul_left - theorem is_Lprojection.compl_orthog +/- theorem is_Lprojection.distrib_lattice_lemma +/- theorem is_Lprojection.join +/- theorem is_Lprojection.le_def +/- theorem is_Lprojection.mul + theorem is_Lprojection.mul_compl_self +/- structure is_Lprojection +/- structure is_Mprojection 2022-05-25 17:33:44 189e5d1 feat(data/polynomial/degree/trailing_degree): The trailing degree of a product is at least the sum of the trailing degrees (#14253) This PR adds lemmas for `nat_trailing_degree` analogous to `degree_mul_le` and `nat_degree_mul_le`. ESTIMATED CHANGES Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.le_nat_trailing_degree_mul + theorem polynomial.le_trailing_degree_mul 2022-05-25 14:21:08 7e1c126 move(group_theory/perm/cycle/*): A cycle folder (#14285) Move: * `group_theory.perm.cycles` → `group_theory.perm.cycle.basic` * `group_theory.perm.cycle_type` → `group_theory.perm.cycle.type` * `group_theory.perm.concrete_cycle` → `group_theory.perm.cycle.concrete` ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean Modified src/group_theory/p_group.lean Renamed src/group_theory/perm/cycles.lean to src/group_theory/perm/cycle/basic.lean Renamed src/group_theory/perm/concrete_cycle.lean to src/group_theory/perm/cycle/concrete.lean Renamed src/group_theory/perm/cycle_type.lean to src/group_theory/perm/cycle/type.lean Modified src/group_theory/perm/fin.lean 2022-05-25 10:28:06 ba1c3f3 feat(data/int/log): integer logarithms of linearly ordered fields (#13913) Notably, this provides a way to find the position of the most significant digit of a decimal expansion ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem int.ceil_one + theorem nat.ceil_one + theorem nat.floor_le_one_of_le_one + theorem nat.floor_lt_one + theorem nat.lt_one_of_floor_lt_one Modified src/analysis/special_functions/log/base.lean + theorem real.ceil_logb_nat_cast + theorem real.floor_logb_nat_cast Added src/data/int/log.lean + def int.clog + theorem int.clog_inv + theorem int.clog_mono_right + theorem int.clog_nat_cast + theorem int.clog_of_left_le_one + theorem int.clog_of_one_le_right + theorem int.clog_of_right_le_one + theorem int.clog_of_right_le_zero + theorem int.clog_one_right + theorem int.clog_zero_right + theorem int.clog_zpow + def int.clog_zpow_gi + theorem int.le_zpow_iff_clog_le + def int.log + theorem int.log_inv + theorem int.log_mono_right + theorem int.log_nat_cast + theorem int.log_of_left_le_one + theorem int.log_of_one_le_right + theorem int.log_of_right_le_one + theorem int.log_of_right_le_zero + theorem int.log_one_right + theorem int.log_zero_right + theorem int.log_zpow + theorem int.lt_zpow_iff_log_lt + theorem int.lt_zpow_succ_log_self + theorem int.neg_clog_inv_eq_log + theorem int.neg_log_inv_eq_clog + theorem int.self_le_zpow_clog + theorem int.zpow_le_iff_le_log + def int.zpow_log_gi + theorem int.zpow_log_le_self + theorem int.zpow_lt_iff_lt_clog + theorem int.zpow_pred_clog_lt_self 2022-05-25 09:48:16 f8d5c64 feat(topology/vector_bundle): use trivialization.symm to simplify the product of vector bundles (#14361) ESTIMATED CHANGES Modified src/topology/vector_bundle.lean +/- def topological_vector_bundle.pretrivialization.linear_equiv_at +/- def topological_vector_bundle.trivialization.continuous_linear_equiv_at - theorem topological_vector_bundle.trivialization.continuous_linear_equiv_at_apply - theorem topological_vector_bundle.trivialization.prod.inv_fun'_apply +/- theorem topological_vector_bundle.trivialization.prod_symm_apply 2022-05-25 08:59:21 660918b feat(measure_theory/function/conditional_expectation): Conditional expectation of an indicator (#14058) The main lemma is this: ```lean lemma condexp_indicator (hf_int : integrable f μ) (hs : measurable_set[m] s) : μ[s.indicator f | m] =ᵐ[μ] s.indicator (μ[f | m]) ``` We also use it to prove that if two sigma algebras are "equal under an event", then the conditional expectations with respect to those two sigma algebras are equal under the same event. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.ae_strongly_measurable'.ae_strongly_measurable'_of_measurable_space_le_on + theorem measure_theory.condexp_L1_congr_ae + theorem measure_theory.condexp_ae_eq_restrict_of_measurable_space_eq_on + theorem measure_theory.condexp_ae_eq_restrict_zero + theorem measure_theory.condexp_congr_ae + theorem measure_theory.condexp_indicator + theorem measure_theory.condexp_indicator_aux Modified src/measure_theory/function/strongly_measurable.lean + theorem measure_theory.strongly_measurable.strongly_measurable_in_set + theorem measure_theory.strongly_measurable.strongly_measurable_of_measurable_space_le_on Modified src/measure_theory/measure/measure_space.lean + theorem ae_eq_restrict_iff_indicator_ae_eq + theorem indicator_ae_eq_of_restrict_compl_ae_eq_zero + theorem indicator_ae_eq_zero_of_restrict_ae_eq_zero 2022-05-25 07:01:43 5da3731 feat(measure_theory/integral): add formulas for average over an interval (#14132) ESTIMATED CHANGES Added src/measure_theory/integral/interval_average.lean + theorem interval_average_eq + theorem interval_average_eq_div + theorem interval_average_symm 2022-05-25 02:04:38 c1e2121 feat(data/set/finite): set priority for fintype_insert' and document (#14363) This follows up with some review comments for #14136. ESTIMATED CHANGES Modified src/data/set/finite.lean 2022-05-25 00:18:41 f582298 feat(group_theory/subgroup/basic): `zpowers_eq_bot` (#14366) This PR adds a lemma `zpowers_eq_bot`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.zpowers_eq_bot 2022-05-24 19:56:59 ebb5206 chore(set_theory/surreal/basic): clarify some proofs (#14356) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean 2022-05-24 19:56:58 cdaa6d2 refactor(analysis/normed_space/pi_Lp): golf some instances (#14339) * drop `pi_Lp.emetric_aux`; * use `T₀` to get `(e)metric_space` from `pseudo_(e)metric_space`; * restate `pi_Lp.(anti)lipschitz_with_equiv` with correct `pseudo_emetric_space` instances; while they're defeq, it's better not to leak auxiliary instances unless necessary. ESTIMATED CHANGES Modified src/analysis/normed_space/pi_Lp.lean +/- theorem pi_Lp.antilipschitz_with_equiv + theorem pi_Lp.antilipschitz_with_equiv_aux +/- theorem pi_Lp.edist_eq - def pi_Lp.emetric_aux +/- theorem pi_Lp.lipschitz_with_equiv + theorem pi_Lp.lipschitz_with_equiv_aux 2022-05-24 19:02:02 23f30a3 fix(topology/vector_bundle): squeeze simp, remove non-terminal simp (#14357) For some reason I had to mention `trivialization.coe_coe` explicitly, even though it is in `mfld_simps` (maybe because another simp lemma would otherwise apply first?) ESTIMATED CHANGES Modified src/topology/vector_bundle.lean 2022-05-24 16:46:14 88f8de3 feat(topology/local_homeomorph): define helper definition (#14360) * Define `homeomorph.trans_local_homeomorph` and `local_homeomorph.trans_homeomorph`. They are equal to `local_homeomorph.trans`, but with better definitional behavior for `source` and `target`. * Define similar operations for `local_equiv`. * Use this to improve the definitional behavior of [`topological_fiber_bundle.trivialization.trans_fiber_homeomorph`](https://leanprover-community.github.io/mathlib_docs/find/topological_fiber_bundle.trivialization.trans_fiber_homeomorph) * Also use `@[simps]` to generate a couple of extra simp-lemmas. ESTIMATED CHANGES Modified src/logic/equiv/local_equiv.lean +/- def equiv.to_local_equiv - theorem equiv.to_local_equiv_coe - theorem equiv.to_local_equiv_source - theorem equiv.to_local_equiv_symm_coe - theorem equiv.to_local_equiv_target + def equiv.trans_local_equiv + theorem equiv.trans_local_equiv_eq_trans +/- def local_equiv.copy +/- def local_equiv.disjoint_union +/- def local_equiv.is_image.restr - theorem local_equiv.pi_coe - theorem local_equiv.pi_symm +/- def local_equiv.piecewise + def local_equiv.trans_equiv + theorem local_equiv.trans_equiv_eq_trans Modified src/topology/fiber_bundle.lean Modified src/topology/homeomorph.lean + theorem homeomorph.coe_symm_to_equiv Modified src/topology/local_homeomorph.lean +/- def homeomorph.to_local_homeomorph - theorem homeomorph.to_local_homeomorph_coe_symm + def homeomorph.trans_local_homeomorph + theorem homeomorph.trans_local_homeomorph_eq_trans + theorem local_homeomorph.to_local_equiv_injective + theorem local_homeomorph.trans_equiv_eq_trans + def local_homeomorph.trans_homeomorph 2022-05-24 16:46:12 483b54f refactor(logic/equiv/set): open set namespace (#14355) ESTIMATED CHANGES Modified src/logic/equiv/set.lean +/- theorem equiv.apply_of_injective_symm +/- theorem equiv.range_eq_univ 2022-05-24 16:46:11 ec8587f chore(data/list/forall2): fix incorrect docstring (#14276) The previous docstring was false, this corrects the definition. ESTIMATED CHANGES Modified src/data/list/forall2.lean 2022-05-24 15:53:41 73a6125 feat(linear_algebra/bilinear_form): generalize scalar instances, fix diamonds (#14358) This fixes the zsmul and nsmul diamonds, makes sub definitionally better, and makes the scalar instance apply more generally. This also adds `linear_map.comp_bilin_form`. These changes bring the API more in line with `quadratic_form`. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean +/- theorem bilin_form.add_apply + theorem bilin_form.coe_add + def bilin_form.coe_fn_add_monoid_hom + theorem bilin_form.coe_injective + theorem bilin_form.coe_neg + theorem bilin_form.coe_smul + theorem bilin_form.coe_sub + theorem bilin_form.coe_zero +/- theorem bilin_form.neg_apply +/- theorem bilin_form.smul_apply + theorem bilin_form.sub_apply +/- theorem bilin_form.zero_apply + def linear_map.comp_bilin_form 2022-05-24 14:54:33 28f7172 refactor(algebra/direct_sum/basic): use the new polymorphic subobject API (#14341) This doesn't let us deduplicate the lattice lemmas, but does eliminate the duplicate instances and definitions! This merges: * `direct_sum.add_submonoid_is_internal`, `direct_sum.add_subgroup_is_internal`, `direct_sum.submodule_is_internal` into `direct_sum.is_internal` * `direct_sum.add_submonoid_coe`, `direct_sum.add_subgroup_coe` into `direct_sum.coe_add_monoid_hom` * `direct_sum.add_submonoid_coe_ring_hom`, `direct_sum.add_subgroup_coe_ring_hom` into `direct_sum.coe_ring_hom` * `add_submonoid.gsemiring`, `add_subgroup.gsemiring`, `submodule.gsemiring` into `set_like.gsemiring` * `add_submonoid.gcomm_semiring`, `add_subgroup.gcomm_semiring`, `submodule.gcomm_semiring` into `set_like.gcomm_semiring` Renames * `direct_sum.submodule_coe` into `direct_sum.coe_linear_map` * `direct_sum.submodule_coe_alg_hom` into `direct_sum.coe_alg_hom And adds: * `set_like.gnon_unital_non_assoc_semiring`, now that it doesn't need to be repeated three times! A large number of related lemmas are also renamed to match the new definition names. This was what originally motivated the `set_like` typeclass; thanks to @Vierkantor for doing the subobject follow up I never got around to! ESTIMATED CHANGES Modified counterexamples/direct_sum_is_internal.lean +/- theorem with_sign.not_internal Modified counterexamples/homogeneous_prime_not_prime.lean Modified docs/undergrad.yaml Modified src/algebra/direct_sum/basic.lean - def direct_sum.add_subgroup_coe - theorem direct_sum.add_subgroup_coe_of - theorem direct_sum.add_subgroup_is_internal.to_add_submonoid - def direct_sum.add_subgroup_is_internal - def direct_sum.add_submonoid_coe - theorem direct_sum.add_submonoid_coe_of - theorem direct_sum.add_submonoid_is_internal.supr_eq_top - def direct_sum.add_submonoid_is_internal + theorem direct_sum.coe_add_monoid_hom_of - theorem direct_sum.coe_of_add_subgroup_apply - theorem direct_sum.coe_of_add_submonoid_apply + theorem direct_sum.coe_of_apply + theorem direct_sum.is_internal.add_submonoid_supr_eq_top + def direct_sum.is_internal Modified src/algebra/direct_sum/internal.lean + def direct_sum.coe_alg_hom + theorem direct_sum.coe_alg_hom_of + theorem direct_sum.coe_mul_apply - theorem direct_sum.coe_mul_apply_add_subgroup - theorem direct_sum.coe_mul_apply_add_submonoid - theorem direct_sum.coe_mul_apply_submodule + def direct_sum.coe_ring_hom + theorem direct_sum.coe_ring_hom_of - def direct_sum.subgroup_coe_ring_hom - theorem direct_sum.subgroup_coe_ring_hom_of - def direct_sum.submodule_coe_alg_hom - theorem direct_sum.submodule_coe_alg_hom_of - def direct_sum.submonoid_coe_ring_hom - theorem direct_sum.submonoid_coe_ring_hom_of Modified src/algebra/direct_sum/module.lean - theorem direct_sum.add_subgroup_is_internal.independent - theorem direct_sum.add_submonoid_is_internal.independent + def direct_sum.coe_linear_map + theorem direct_sum.coe_linear_map_of - theorem direct_sum.coe_of_submodule_apply + theorem direct_sum.is_internal.add_subgroup_independent + theorem direct_sum.is_internal.add_submonoid_independent + theorem direct_sum.is_internal.collected_basis_coe + theorem direct_sum.is_internal.collected_basis_mem + theorem direct_sum.is_internal.is_compl + theorem direct_sum.is_internal.submodule_independent + theorem direct_sum.is_internal.submodule_supr_eq_top + theorem direct_sum.is_internal_submodule_iff_independent_and_supr_eq_top + theorem direct_sum.is_internal_submodule_iff_is_compl + theorem direct_sum.is_internal_submodule_of_independent_of_supr_eq_top - def direct_sum.submodule_coe - theorem direct_sum.submodule_coe_of - theorem direct_sum.submodule_is_internal.collected_basis_coe - theorem direct_sum.submodule_is_internal.collected_basis_mem - theorem direct_sum.submodule_is_internal.independent - theorem direct_sum.submodule_is_internal.is_compl - theorem direct_sum.submodule_is_internal.supr_eq_top - theorem direct_sum.submodule_is_internal.to_add_subgroup - theorem direct_sum.submodule_is_internal.to_add_submonoid - def direct_sum.submodule_is_internal - theorem direct_sum.submodule_is_internal_iff_independent_and_supr_eq_top - theorem direct_sum.submodule_is_internal_iff_is_compl - theorem direct_sum.submodule_is_internal_of_independent_of_supr_eq_top Modified src/algebra/graded_monoid.lean Modified src/algebra/module/torsion.lean Modified src/algebra/monoid_algebra/grading.lean +/- theorem add_monoid_algebra.grade.is_internal +/- theorem add_monoid_algebra.grade_by.is_internal Modified src/analysis/inner_product_space/basic.lean + theorem direct_sum.is_internal.collected_basis_orthonormal - theorem direct_sum.submodule_is_internal.collected_basis_orthonormal Modified src/analysis/inner_product_space/pi_L2.lean + def direct_sum.is_internal.isometry_L2_of_orthogonal_family + theorem direct_sum.is_internal.isometry_L2_of_orthogonal_family_symm_apply - def direct_sum.submodule_is_internal.isometry_L2_of_orthogonal_family - theorem direct_sum.submodule_is_internal.isometry_L2_of_orthogonal_family_symm_apply Modified src/analysis/inner_product_space/projection.lean + def direct_sum.is_internal.sigma_orthonormal_basis_index_equiv + def direct_sum.is_internal.subordinate_orthonormal_basis + def direct_sum.is_internal.subordinate_orthonormal_basis_index + theorem direct_sum.is_internal.subordinate_orthonormal_basis_orthonormal + theorem direct_sum.is_internal.subordinate_orthonormal_basis_subordinate - def direct_sum.submodule_is_internal.sigma_orthonormal_basis_index_equiv - def direct_sum.submodule_is_internal.subordinate_orthonormal_basis - def direct_sum.submodule_is_internal.subordinate_orthonormal_basis_index - theorem direct_sum.submodule_is_internal.subordinate_orthonormal_basis_orthonormal - theorem direct_sum.submodule_is_internal.subordinate_orthonormal_basis_subordinate + theorem orthogonal_family.is_internal_iff + theorem orthogonal_family.is_internal_iff_of_is_complete - theorem orthogonal_family.submodule_is_internal_iff - theorem orthogonal_family.submodule_is_internal_iff_of_is_complete Modified src/analysis/inner_product_space/spectrum.lean + theorem inner_product_space.is_self_adjoint.direct_sum_is_internal - theorem inner_product_space.is_self_adjoint.direct_sum_submodule_is_internal Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/linear_algebra/exterior_algebra/grading.lean Modified src/linear_algebra/tensor_algebra/grading.lean Modified src/ring_theory/graded_algebra/basic.lean - theorem graded_algebra.is_internal Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean Modified src/ring_theory/graded_algebra/radical.lean 2022-05-24 14:17:37 a07493a feat(analysis/convolution): the predicate `convolution_exists` (#13541) * This PR defines the predicate that a convolution exists. * This is not that interesting by itself, but it is a preparation for #13540 * I'm using the full module doc for the convolution file, even though not everything promised in the module doc is in this PR. * From the sphere eversion project ESTIMATED CHANGES Added src/analysis/convolution.lean + theorem bdd_above.convolution_exists_at' + theorem bdd_above.convolution_exists_at + theorem continuous.convolution_integrand_fst + def convolution_exists + theorem convolution_exists_at.integrable + theorem convolution_exists_at.integrable_swap + def convolution_exists_at + theorem convolution_exists_at_flip + theorem convolution_exists_at_iff_integrable_swap + theorem has_compact_support.convolution_exists_at + theorem has_compact_support.convolution_exists_left + theorem has_compact_support.convolution_exists_left_of_continuous_right + theorem has_compact_support.convolution_exists_right + theorem has_compact_support.convolution_exists_right_of_continuous_left + theorem has_compact_support.convolution_integrand_bound_left + theorem has_compact_support.convolution_integrand_bound_right + theorem measure_theory.ae_strongly_measurable.convolution_integrand' + theorem measure_theory.ae_strongly_measurable.convolution_integrand + theorem measure_theory.ae_strongly_measurable.convolution_integrand_snd' + theorem measure_theory.ae_strongly_measurable.convolution_integrand_snd + theorem measure_theory.ae_strongly_measurable.convolution_integrand_swap_snd' + theorem measure_theory.ae_strongly_measurable.convolution_integrand_swap_snd + theorem measure_theory.integrable.ae_convolution_exists + theorem measure_theory.integrable.convolution_integrand 2022-05-24 12:33:08 dc22d65 doc(100.yaml): add Law of Large Numbers (#14353) ESTIMATED CHANGES Modified docs/100.yaml 2022-05-24 12:33:07 9d193c5 feat(category_theory/comm_sq): functors mapping pullback/pushout squares (#14351) ``` lemma map_is_pullback [preserves_limit (cospan h i) F] (s : is_pullback f g h i) : is_pullback (F.map f) (F.map g) (F.map h) (F.map i) := ... ``` ESTIMATED CHANGES Modified src/category_theory/limits/shapes/comm_sq.lean + def category_theory.comm_sq.cocone + def category_theory.comm_sq.cone + theorem category_theory.comm_sq.flip + theorem category_theory.comm_sq.of_arrow + structure category_theory.comm_sq + theorem category_theory.functor.map_comm_sq + theorem category_theory.functor.map_is_pullback + theorem category_theory.functor.map_is_pushout + def category_theory.is_pullback.cone + theorem category_theory.is_pullback.flip + def category_theory.is_pullback.iso_pullback + theorem category_theory.is_pullback.iso_pullback_hom_fst + theorem category_theory.is_pullback.iso_pullback_hom_snd + theorem category_theory.is_pullback.iso_pullback_inv_fst + theorem category_theory.is_pullback.iso_pullback_inv_snd + theorem category_theory.is_pullback.of_bot + theorem category_theory.is_pullback.of_has_pullback + theorem category_theory.is_pullback.of_is_limit' + theorem category_theory.is_pullback.of_is_limit + theorem category_theory.is_pullback.of_iso_pullback + theorem category_theory.is_pullback.of_right + theorem category_theory.is_pullback.paste_horiz + theorem category_theory.is_pullback.paste_vert + theorem category_theory.is_pullback.zero_left + theorem category_theory.is_pullback.zero_top + structure category_theory.is_pullback + def category_theory.is_pushout.cocone + theorem category_theory.is_pushout.flip + theorem category_theory.is_pushout.inl_iso_pushout_hom + theorem category_theory.is_pushout.inl_iso_pushout_inv + theorem category_theory.is_pushout.inr_iso_pushout_hom + theorem category_theory.is_pushout.inr_iso_pushout_inv + def category_theory.is_pushout.iso_pushout + theorem category_theory.is_pushout.of_bot + theorem category_theory.is_pushout.of_has_pushout + theorem category_theory.is_pushout.of_is_colimit' + theorem category_theory.is_pushout.of_is_colimit + theorem category_theory.is_pushout.of_iso_pushout + theorem category_theory.is_pushout.of_right + theorem category_theory.is_pushout.paste_horiz + theorem category_theory.is_pushout.paste_vert + theorem category_theory.is_pushout.zero_bot + theorem category_theory.is_pushout.zero_right + structure category_theory.is_pushout - theorem category_theory.limits.comm_sq.flip - theorem category_theory.limits.comm_sq.of_arrow - structure category_theory.limits.comm_sq - def category_theory.limits.is_pullback.cone - theorem category_theory.limits.is_pullback.flip - theorem category_theory.limits.is_pullback.of_bot - theorem category_theory.limits.is_pullback.of_has_pullback - theorem category_theory.limits.is_pullback.of_is_limit - theorem category_theory.limits.is_pullback.of_right - theorem category_theory.limits.is_pullback.paste_horiz - theorem category_theory.limits.is_pullback.paste_vert - theorem category_theory.limits.is_pullback.zero_left - theorem category_theory.limits.is_pullback.zero_top - structure category_theory.limits.is_pullback - def category_theory.limits.is_pushout.cocone - theorem category_theory.limits.is_pushout.flip - theorem category_theory.limits.is_pushout.of_bot - theorem category_theory.limits.is_pushout.of_has_pushout - theorem category_theory.limits.is_pushout.of_is_colimit - theorem category_theory.limits.is_pushout.of_right - theorem category_theory.limits.is_pushout.paste_horiz - theorem category_theory.limits.is_pushout.paste_vert - theorem category_theory.limits.is_pushout.zero_bot - theorem category_theory.limits.is_pushout.zero_right - structure category_theory.limits.is_pushout Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.walking_cospan.ext + def category_theory.limits.walking_span.ext 2022-05-24 12:33:06 53a70a0 feat(linear_algebra/tensor_power): Add notation for tensor powers, and a definition of multiplication (#14196) This file introduces the notation `⨂[R]^n M` for `tensor_power R n M`, which in turn is an abbreviation for `⨂[R] i : fin n, M`. The proof that this multiplication forms a semiring will come in a later PR (#10255). ESTIMATED CHANGES Added src/linear_algebra/tensor_power.lean + theorem tensor_power.ghas_mul_def + theorem tensor_power.ghas_one_def + def tensor_power.mul_equiv 2022-05-24 12:33:05 8e3deff feat(representation_theory/invariants): average_map is a projection onto the subspace of invariants (#14167) ESTIMATED CHANGES Modified src/linear_algebra/projection.lean +/- def linear_map.is_proj.cod_restrict +/- theorem linear_map.is_proj.cod_restrict_apply +/- theorem linear_map.is_proj.cod_restrict_apply_cod +/- theorem linear_map.is_proj.cod_restrict_ker +/- structure linear_map.is_proj +/- theorem linear_map.is_proj_iff_idempotent Modified src/representation_theory/invariants.lean + theorem representation.is_proj_average_map 2022-05-24 10:24:08 893f480 feat(group_theory/index): Lemmas for when `relindex` divides `index` (#14314) This PR adds two lemmas for when `relindex` divides `index`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.relindex_dvd_index_of_le + theorem subgroup.relindex_dvd_index_of_normal 2022-05-24 10:24:07 65f1f8e feat(linear_algebra/quadratic_form/isometry): extract from `linear_algebra/quadratic_form/basic` (#14305) 150 lines seems worthy of its own file, especially if this grows `fun_like` boilerplate in future. No lemmas have been renamed or proofs changed. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/quadratic_form/basic.lean - theorem quadratic_form.equivalent.refl - theorem quadratic_form.equivalent.symm - theorem quadratic_form.equivalent.trans - def quadratic_form.equivalent - theorem quadratic_form.equivalent_weighted_sum_squares - theorem quadratic_form.equivalent_weighted_sum_squares_units_of_nondegenerate' - theorem quadratic_form.isometry.coe_to_linear_equiv - theorem quadratic_form.isometry.map_app - def quadratic_form.isometry.refl - def quadratic_form.isometry.symm - theorem quadratic_form.isometry.to_linear_equiv_eq_coe - def quadratic_form.isometry.trans - structure quadratic_form.isometry - def quadratic_form.isometry_of_comp_linear_equiv Modified src/linear_algebra/quadratic_form/complex.lean Added src/linear_algebra/quadratic_form/isometry.lean + theorem quadratic_form.equivalent.refl + theorem quadratic_form.equivalent.symm + theorem quadratic_form.equivalent.trans + def quadratic_form.equivalent + theorem quadratic_form.equivalent_weighted_sum_squares + theorem quadratic_form.equivalent_weighted_sum_squares_units_of_nondegenerate' + theorem quadratic_form.isometry.coe_to_linear_equiv + theorem quadratic_form.isometry.map_app + def quadratic_form.isometry.refl + def quadratic_form.isometry.symm + theorem quadratic_form.isometry.to_linear_equiv_eq_coe + def quadratic_form.isometry.trans + structure quadratic_form.isometry + def quadratic_form.isometry_of_comp_linear_equiv Modified src/linear_algebra/quadratic_form/prod.lean Modified src/linear_algebra/quadratic_form/real.lean 2022-05-24 10:24:06 9870d13 chore(order/bounded_order): Golf `disjoint` API (#14194) Reorder lemmas and golf. Lemma additions: * `disjoint.eq_bot_of_ge` * `is_compl.of_dual` * `is_compl_to_dual_iff` * `is_compl_of_dual_iff` Lemma deletions: * `eq_bot_of_disjoint_absorbs`: This is an unhelpful combination of `disjoint.eq_bot_of_ge` and `sup_eq_left` * `inf_eq_bot_iff_le_compl`: This is a worse version of `is_compl.disjoint_left_iff` Lemma renames: * `is_compl.to_order_dual` → `is_compl.dual` ESTIMATED CHANGES Modified src/order/bounded_order.lean +/- theorem disjoint.comm +/- theorem disjoint.eq_bot + theorem disjoint.eq_bot_of_ge +/- theorem disjoint.eq_bot_of_le +/- theorem disjoint.inf_left' +/- theorem disjoint.inf_left +/- theorem disjoint.inf_right' +/- theorem disjoint.inf_right +/- theorem disjoint.left_le_of_le_sup_left +/- theorem disjoint.left_le_of_le_sup_right +/- theorem disjoint.mono +/- theorem disjoint.mono_left +/- theorem disjoint.mono_right +/- theorem disjoint.ne +/- theorem disjoint.of_disjoint_inf_of_le' +/- theorem disjoint.of_disjoint_inf_of_le +/- theorem disjoint.symm +/- theorem disjoint_assoc +/- theorem disjoint_bot_left +/- theorem disjoint_bot_right +/- theorem disjoint_iff +/- theorem disjoint_self - theorem eq_bot_of_disjoint_absorbs +/- theorem eq_bot_of_is_compl_top +/- theorem eq_bot_of_top_is_compl +/- theorem eq_top_of_bot_is_compl +/- theorem eq_top_of_is_compl_bot - theorem inf_eq_bot_iff_le_compl + theorem is_compl.dual +/- theorem is_compl.left_le_iff + theorem is_compl.of_dual +/- theorem is_compl.of_eq - theorem is_compl.to_order_dual +/- theorem is_compl_bot_top + theorem is_compl_of_dual_iff + theorem is_compl_to_dual_iff +/- theorem is_compl_top_bot +/- theorem max_bot_left +/- theorem max_bot_right +/- theorem max_top_left +/- theorem max_top_right +/- theorem min_bot_left +/- theorem min_bot_right +/- theorem min_top_left +/- theorem min_top_right Modified src/ring_theory/artinian.lean Modified src/ring_theory/noetherian.lean 2022-05-24 08:19:34 533c67b feat(analysis/sum_integral_comparisons): Comparison lemmas between finite sums and integrals (#13179) In this pull request we target the following lemmas: ```lean lemma antitone_on.integral_le_sum {x₀ : ℝ} {a : ℕ} {f : ℝ → ℝ} (hf : antitone_on f (Icc x₀ (x₀ + a))) : ∫ x in x₀..(x₀ + a), f x ≤ ∑ i in finset.range a, f (x₀ + i) lemma antitone_on.sum_le_integral {x₀ : ℝ} {a : ℕ} {f : ℝ → ℝ} (hf : antitone_on f (Icc x₀ (x₀ + a))) : ∑ i in finset.range a, f (x₀ + i + 1) ≤ ∫ x in x₀..(x₀ + a), f x := ``` as well as their `monotone_on` equivalents. These lemmas are critical to many analytic facts, specifically because it so often is the way that error terms end up getting computed. ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem antitone.inv + theorem antitone_on.inv + theorem monotone.inv + theorem monotone_on.inv + theorem strict_anti.inv + theorem strict_anti_on.inv + theorem strict_mono.inv + theorem strict_mono_on.inv Modified src/analysis/special_functions/integrals.lean + theorem integral_const_on_unit_interval Added src/analysis/sum_integral_comparisons.lean + theorem antitone_on.integral_le_sum + theorem antitone_on.integral_le_sum_Ico + theorem antitone_on.sum_le_integral + theorem antitone_on.sum_le_integral_Ico + theorem monotone_on.integral_le_sum + theorem monotone_on.integral_le_sum_Ico + theorem monotone_on.sum_le_integral + theorem monotone_on.sum_le_integral_Ico 2022-05-24 07:08:08 93df724 feat(measure_theory/integral/integral_eq_improper): Covering finite intervals by finite intervals (#13514) Currently, the ability to prove facts about improper integrals only allows for at least one infinite endpoint. However, it is a common need to work with functions that blow up at an end point (e.g., x^r on [0, 1] for r in (-1, 0)). As a step toward allowing that, we introduce `ae_cover`s that allow exhausting finite intervals by finite intervals. Partially addresses: #12666 ESTIMATED CHANGES Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.ae_cover_Icc_of_Icc + theorem measure_theory.ae_cover_Icc_of_Ico + theorem measure_theory.ae_cover_Icc_of_Ioc + theorem measure_theory.ae_cover_Icc_of_Ioo + theorem measure_theory.ae_cover_Ico_of_Icc + theorem measure_theory.ae_cover_Ico_of_Ico + theorem measure_theory.ae_cover_Ico_of_Ioc + theorem measure_theory.ae_cover_Ico_of_Ioo + theorem measure_theory.ae_cover_Ioc_of_Icc + theorem measure_theory.ae_cover_Ioc_of_Ico + theorem measure_theory.ae_cover_Ioc_of_Ioc + theorem measure_theory.ae_cover_Ioc_of_Ioo + theorem measure_theory.ae_cover_Ioo_of_Icc + theorem measure_theory.ae_cover_Ioo_of_Ico + theorem measure_theory.ae_cover_Ioo_of_Ioc + theorem measure_theory.ae_cover_Ioo_of_Ioo Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_restrict_congr_set + theorem measure_theory.ae_restrict_of_ae_eq_of_ae_restrict Modified src/topology/algebra/order/basic.lean + theorem eventually_ge_nhds + theorem eventually_gt_nhds + theorem eventually_le_nhds + theorem eventually_lt_nhds 2022-05-24 06:28:33 0973ad4 feat(probability/strong_law): the strong law of large numbers (#13690) We prove the almost sure version of the strong law of large numbers: given an iid sequence of integrable random variables `X_i`, then `(\sum_{i < n} X_i)/n` converges almost surely to `E(X)`. We follow Etemadi's proof, which only requires pairwise independence instead of full independence. ESTIMATED CHANGES Modified docs/references.bib Modified docs/undergrad.yaml Added src/probability/strong_law.lean + theorem measure_theory.ae_strongly_measurable.integrable_truncation + theorem measure_theory.ae_strongly_measurable.mem_ℒp_truncation + theorem measure_theory.ae_strongly_measurable.truncation + theorem probability_theory.abs_truncation_le_abs_self + theorem probability_theory.abs_truncation_le_bound + theorem probability_theory.ident_distrib.truncation + theorem probability_theory.integral_truncation_eq_interval_integral + theorem probability_theory.integral_truncation_eq_interval_integral_of_nonneg + theorem probability_theory.integral_truncation_le_integral_of_nonneg + theorem probability_theory.moment_truncation_eq_interval_integral + theorem probability_theory.moment_truncation_eq_interval_integral_of_nonneg + theorem probability_theory.strong_law_ae + theorem probability_theory.strong_law_aux1 + theorem probability_theory.strong_law_aux2 + theorem probability_theory.strong_law_aux3 + theorem probability_theory.strong_law_aux4 + theorem probability_theory.strong_law_aux5 + theorem probability_theory.strong_law_aux6 + theorem probability_theory.strong_law_aux7 + theorem probability_theory.sum_prob_mem_Ioc_le + theorem probability_theory.sum_variance_truncation_le + theorem probability_theory.tendsto_integral_truncation + def probability_theory.truncation + theorem probability_theory.truncation_eq_of_nonneg + theorem probability_theory.truncation_eq_self + theorem probability_theory.truncation_nonneg + theorem probability_theory.truncation_zero + theorem probability_theory.tsum_prob_mem_Ioi_lt_top 2022-05-24 05:19:10 0d14ee8 feat(field_theory/finite/galois_field): Finite fields are Galois (#14290) This PR also generalizes a section of `field_theory/finite/basic` from `[char_p K p]` to `[algebra (zmod p) K]`. This is indeed a generalization, due to the presence of the instance `zmod.algebra`. ESTIMATED CHANGES Modified src/algebra/char_p/algebra.lean + theorem char_p_of_injective_algebra_map' Modified src/field_theory/finite/basic.lean Modified src/field_theory/finite/galois_field.lean 2022-05-24 03:06:12 179ae9e feat(category_theory/preadditive): hom orthogonal families (#13871) A family of objects in a category with zero morphisms is "hom orthogonal" if the only morphism between distinct objects is the zero morphism. We show that in any category with zero morphisms and finite biproducts, a morphism between biproducts drawn from a hom orthogonal family `s : ι → C` can be decomposed into a block diagonal matrix with entries in the endomorphism rings of the `s i`. When the category is preadditive, this decomposition is an additive equivalence, and intertwines composition and matrix multiplication. When the category is `R`-linear, the decomposition is an `R`-linear equivalence. If every object in the hom orthogonal family has an endomorphism ring with invariant basis number (e.g. if each object in the family is simple, so its endomorphism ring is a division ring, or otherwise if each endomorphism ring is commutative), then decompositions of an object as a biproduct of the family have uniquely defined multiplicities. We state this as: ``` lemma hom_orthogonal.equiv_of_iso (o : hom_orthogonal s) {f : α → ι} {g : β → ι} (i : ⨁ (λ a, s (f a)) ≅ ⨁ (λ b, s (g b))) : ∃ e : α ≃ β, ∀ a, g (e a) = f a ``` This is preliminary to defining semisimple categories. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_congr_set Modified src/category_theory/linear/default.lean Added src/category_theory/preadditive/hom_orthogonal.lean + theorem category_theory.hom_orthogonal.eq_zero + theorem category_theory.hom_orthogonal.equiv_of_iso + def category_theory.hom_orthogonal.matrix_decomposition + def category_theory.hom_orthogonal.matrix_decomposition_add_equiv + theorem category_theory.hom_orthogonal.matrix_decomposition_comp + theorem category_theory.hom_orthogonal.matrix_decomposition_id + def category_theory.hom_orthogonal.matrix_decomposition_linear_equiv + def category_theory.hom_orthogonal 2022-05-24 01:48:51 c340170 chore(set_theory/ordinal/*): improve autogenerated instance names for `o.out.α` (#14342) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean 2022-05-24 00:02:28 10f415a feat(set_theory/game/basic): mul_cases lemmas (#14343) These are the multiplicative analogs for `{left/right}_moves_add_cases`. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + theorem pgame.left_moves_mul_cases + theorem pgame.right_moves_mul_cases 2022-05-23 23:25:06 dc36333 feat(set_theory/surreal/basic): ordinals are numeric (#14325) ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean Modified src/set_theory/surreal/basic.lean + theorem pgame.numeric_to_pgame 2022-05-23 22:05:46 59ef070 feat(ring_theory/unique_factorization_domain): misc lemmas on factors (#14333) Two little lemmas on the set of factors which I needed for #12287. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.dvd_of_mem_factors + theorem unique_factorization_monoid.ne_zero_of_mem_factors 2022-05-23 20:34:27 3f0a2bb feat(set_theory/cardinal/basic): Inline instances (#14130) We inline some instances, thus avoiding redundant lemmas. We also clean up the code somewhat. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean +/- theorem cardinal.pow_cast_right Modified src/set_theory/cardinal/ordinal.lean + theorem cardinal.mul_eq_max_of_omega_le_right 2022-05-23 17:51:44 b3ff79a feat(topology/uniform_space/uniform_convergence): Uniform Cauchy sequences (#14003) A sequence of functions `f_n` is pointwise Cauchy if `∀x ∀ε ∃N ∀(m, n) > N` we have `|f_m x - f_n x| < ε`. A sequence of functions is _uniformly_ Cauchy if `∀ε ∃N ∀(m, n) > N ∀x` we have `|f_m x - f_n x| < ε`. As a sequence of functions is pointwise Cauchy if (and when the underlying space is complete, only if) the sequence converges, a sequence of functions is uniformly Cauchy if (and when the underlying space is complete, only if) the sequence uniformly converges. (Note that the parenthetical is not directly covered by this commit, but is an easy consequence of two of its lemmas.) This notion is commonly used to bootstrap convergence into uniform convergence. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.uniform_cauchy_seq_on_iff Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_uniformly_on.uniform_cauchy_seq_on + theorem uniform_cauchy_seq_on.tendsto_uniformly_on_of_tendsto + def uniform_cauchy_seq_on 2022-05-23 16:11:41 dab06b6 refactor(topology/sequences): rename some `sequential_` to `seq_` (#14318) ## Rename * `sequential_closure` → `seq_closure`, similarly rename lemmas; * `sequentially_continuous` → `seq_continuous`, similarly rename lemmas; * `is_seq_closed_of_is_closed` → `is_closed.is_seq_closed`; * `mem_of_is_seq_closed` → `is_seq_closed.mem_of_tendsto`; * `continuous.to_sequentially_continuous` → `continuous.seq_continuous`; ## Remove * `mem_of_is_closed_sequential`: was a weaker version of `is_closed.mem_of_tendsto`; ## Add * `is_seq_closed.is_closed`; * `seq_continuous.continuous`; ESTIMATED CHANGES Modified src/topology/sequences.lean - theorem continuous.to_sequentially_continuous + theorem continuous_iff_seq_continuous - theorem continuous_iff_sequentially_continuous + theorem is_closed.is_seq_closed + theorem is_seq_closed.mem_of_tendsto +/- def is_seq_closed - theorem is_seq_closed_of_is_closed - theorem mem_of_is_closed_sequential - theorem mem_of_is_seq_closed + def seq_closure + theorem seq_closure_subset_closure + def seq_continuous - def sequential_closure - theorem sequential_closure_subset_closure - def sequentially_continuous + theorem subset_seq_closure - theorem subset_sequential_closure 2022-05-23 16:11:40 bbf5776 feat(group_theory/sylow): The number of sylow subgroups is indivisible by p (#14313) A corollary of Sylow's third theorem is that the number of sylow subgroups is indivisible by p. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem not_dvd_card_sylow 2022-05-23 16:11:39 7a6d850 feat(probability/stopping): measurability of comparisons of stopping times (#14061) Among other related results, prove that `{x | τ x ≤ π x}` is measurable with respect to the sigma algebras generated by each of the two stopping times involved. ESTIMATED CHANGES Modified src/measure_theory/group/arithmetic.lean + theorem measurable_set_eq_fun_of_encodable Modified src/probability/stopping.lean + theorem measure_theory.is_stopping_time.measurable_set_eq_stopping_time + theorem measure_theory.is_stopping_time.measurable_set_eq_stopping_time_of_encodable + theorem measure_theory.is_stopping_time.measurable_set_inter_le_iff + theorem measure_theory.is_stopping_time.measurable_set_le_stopping_time + theorem measure_theory.is_stopping_time.measurable_set_min_const_iff + theorem measure_theory.is_stopping_time.measurable_set_stopping_time_le + theorem measure_theory.is_stopping_time.measurable_space_le' +/- theorem measure_theory.is_stopping_time.measurable_space_le + theorem measure_theory.is_stopping_time.measurable_space_le_of_encodable + theorem measure_theory.is_stopping_time.measurable_space_min_const 2022-05-23 14:09:34 8df8968 feat(data/set/function): add `monotone_on.monotone` etc (#14301) ESTIMATED CHANGES Modified src/data/set/function.lean 2022-05-23 14:09:33 33262e0 feat(ring_theory/power_series): Added lemmas regarding rescale (#14283) Added lemmas `rescale_mk`, `rescale_mul` and `rescale_rescale`. ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.rescale_mk + theorem power_series.rescale_mul + theorem power_series.rescale_rescale 2022-05-23 14:09:32 15e8bc4 feat(topology/vector_bundle): define pretrivialization.symm (#14192) * Also adds some other useful lemmas about (pre)trivializations * This splits out the part of #8545 that is unrelated to pullbacks - Co-authored by Nicolo Cavalleri ESTIMATED CHANGES Modified src/data/bundle.lean + theorem bundle.coe_snd + theorem bundle.sigma_mk_eq_total_space_mk +/- theorem bundle.to_total_space_coe + theorem bundle.total_space.eta + theorem bundle.total_space.mk_cast + theorem bundle.total_space.proj_mk Modified src/topology/fiber_bundle.lean Modified src/topology/vector_bundle.lean + theorem topological_vector_bundle.continuous_total_space_mk + theorem topological_vector_bundle.pretrivialization.apply_mk_symm + theorem topological_vector_bundle.pretrivialization.apply_symm_apply' + theorem topological_vector_bundle.pretrivialization.apply_symm_apply + theorem topological_vector_bundle.pretrivialization.coe_coe + theorem topological_vector_bundle.pretrivialization.coe_coe_fst + theorem topological_vector_bundle.pretrivialization.coe_fst' + theorem topological_vector_bundle.pretrivialization.coe_fst + theorem topological_vector_bundle.pretrivialization.coe_mem_source + theorem topological_vector_bundle.pretrivialization.linear + def topological_vector_bundle.pretrivialization.linear_equiv_at + theorem topological_vector_bundle.pretrivialization.mem_source + theorem topological_vector_bundle.pretrivialization.mem_target + theorem topological_vector_bundle.pretrivialization.mk_mem_target + theorem topological_vector_bundle.pretrivialization.mk_proj_snd' + theorem topological_vector_bundle.pretrivialization.mk_proj_snd + theorem topological_vector_bundle.pretrivialization.mk_symm + theorem topological_vector_bundle.pretrivialization.preimage_symm_proj_base_set + theorem topological_vector_bundle.pretrivialization.proj_symm_apply' + theorem topological_vector_bundle.pretrivialization.proj_symm_apply + theorem topological_vector_bundle.pretrivialization.symm_apply + theorem topological_vector_bundle.pretrivialization.symm_apply_apply + theorem topological_vector_bundle.pretrivialization.symm_apply_apply_mk + theorem topological_vector_bundle.pretrivialization.symm_apply_mk_proj + theorem topological_vector_bundle.pretrivialization.symm_apply_of_not_mem + theorem topological_vector_bundle.pretrivialization.symm_coe_fst' + theorem topological_vector_bundle.pretrivialization.symm_proj_apply + theorem topological_vector_bundle.trivialization.apply_mk_symm + theorem topological_vector_bundle.trivialization.apply_symm_apply' + theorem topological_vector_bundle.trivialization.apply_symm_apply +/- theorem topological_vector_bundle.trivialization.coe_coe + theorem topological_vector_bundle.trivialization.coe_coe_fst + theorem topological_vector_bundle.trivialization.coe_fst' +/- theorem topological_vector_bundle.trivialization.coe_fst + theorem topological_vector_bundle.trivialization.coe_mem_source + theorem topological_vector_bundle.trivialization.continuous_on_symm + theorem topological_vector_bundle.trivialization.map_target +/- theorem topological_vector_bundle.trivialization.mem_source + theorem topological_vector_bundle.trivialization.mem_target + theorem topological_vector_bundle.trivialization.mk_mem_target + theorem topological_vector_bundle.trivialization.mk_proj_snd' + theorem topological_vector_bundle.trivialization.mk_proj_snd + theorem topological_vector_bundle.trivialization.mk_symm + theorem topological_vector_bundle.trivialization.proj_symm_apply' + theorem topological_vector_bundle.trivialization.proj_symm_apply + theorem topological_vector_bundle.trivialization.source_inter_preimage_target_inter + theorem topological_vector_bundle.trivialization.symm_apply + theorem topological_vector_bundle.trivialization.symm_apply_apply + theorem topological_vector_bundle.trivialization.symm_apply_apply_mk + theorem topological_vector_bundle.trivialization.symm_apply_of_not_mem + theorem topological_vector_bundle.trivialization.symm_coe_fst' + theorem topological_vector_bundle.trivialization.symm_proj_apply +/- def topological_vector_bundle.trivialization.to_pretrivialization 2022-05-23 12:13:01 2b35fc7 refactor(data/set/finite): reorganize and put emphasis on fintype instances (#14136) I went through `data/set/finite` and reorganized it by rough topic (and moved some lemmas to their proper homes; closes #11177). Two important parts of this module are (1) `fintype` instances for various set constructions and (2) ways to create `set.finite` terms. This change puts the module closer to following a design where the `set.finite` terms are created in a formulaic way from the `fintype` instances. One tool for this is a `set.finite_of_fintype` constructor, which lets typeclass inference do most of the work. Included in this commit is changing `set.infinite` to be protected so that it does not conflict with `infinite`. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified src/analysis/locally_convex/weak_dual.lean Modified src/combinatorics/configuration.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/strongly_regular.lean Modified src/data/fintype/basic.lean + theorem fintype.card_compl_eq_card_compl + theorem fintype.card_subtype_compl + def set.decidable_mem_of_fintype + theorem set.to_finset_diff + theorem set.to_finset_insert + theorem set.to_finset_inter + theorem set.to_finset_ne_eq_erase +/- theorem set.to_finset_range + theorem set.to_finset_singleton + theorem set.to_finset_union +/- theorem set.to_finset_univ Modified src/data/nat/nth.lean Modified src/data/set/finite.lean +/- theorem finset.finite_to_set - theorem fintype.card_compl_eq_card_compl - theorem fintype.card_subtype_compl - theorem set.card_fintype_insert' + theorem set.card_fintype_insert_of_not_mem - def set.decidable_mem_of_fintype +/- theorem set.eq_finite_Union_of_finite_subset_Union + theorem set.finite.bUnion' +/- theorem set.finite.bUnion +/- theorem set.finite.bind +/- theorem set.finite.coe_sort_to_finset +/- theorem set.finite.coe_to_finset +/- theorem set.finite.dependent_image + theorem set.finite.diff +/- theorem set.finite.dinduction_on +/- theorem set.finite.exists_finset +/- theorem set.finite.exists_finset_coe +/- theorem set.finite.exists_lt_map_eq_of_range_subset +/- theorem set.finite.fin_param +/- theorem set.finite.image2 +/- theorem set.finite.image +/- theorem set.finite.induction_on +/- theorem set.finite.infinite_compl +/- theorem set.finite.insert +/- theorem set.finite.inter_of_left +/- theorem set.finite.inter_of_right +/- theorem set.finite.map +/- theorem set.finite.mem_to_finset + theorem set.finite.nonempty_to_finset +/- theorem set.finite.of_diff + theorem set.finite.of_finite_image +/- theorem set.finite.of_fintype +/- theorem set.finite.of_preimage +/- theorem set.finite.prod +/- theorem set.finite.sInter +/- theorem set.finite.sUnion + theorem set.finite.sep +/- theorem set.finite.seq' +/- theorem set.finite.seq +/- theorem set.finite.subset - theorem set.finite.to_finset.nonempty +/- theorem set.finite.to_finset_inj + theorem set.finite.to_finset_insert +/- theorem set.finite.to_finset_mono +/- theorem set.finite.to_finset_strict_mono +/- theorem set.finite.union +/- theorem set.finite_Union +/- theorem set.finite_def +/- theorem set.finite_empty +/- theorem set.finite_empty_to_finset +/- theorem set.finite_le_nat +/- theorem set.finite_lt_nat +/- theorem set.finite_mem_finset - theorem set.finite_of_finite_image + theorem set.finite_of_fintype +/- theorem set.finite_option +/- theorem set.finite_pure +/- theorem set.finite_range +/- theorem set.finite_singleton +/- theorem set.finite_to_finset_eq_empty_iff +/- theorem set.finite_union +/- theorem set.finite_univ +/- def set.fintype_bUnion - def set.fintype_insert' + def set.fintype_insert_of_mem + def set.fintype_insert_of_not_mem +/- theorem set.infinite.diff +/- theorem set.infinite.exists_nat_lt +/- theorem set.infinite.exists_subset_card_eq +/- theorem set.infinite.to_subtype - def set.infinite +/- theorem set.infinite_coe_iff +/- theorem set.infinite_of_finite_compl +/- theorem set.infinite_of_injective_forall_mem +/- theorem set.infinite_range_of_injective +/- theorem set.infinite_union +/- theorem set.infinite_univ +/- theorem set.infinite_univ_iff - theorem set.insert_to_finset + def set.nat.fintype_Iio +/- theorem set.not_infinite - theorem set.subset_iff_to_finset_subset +/- theorem set.subset_to_finset_iff - theorem set.to_finset_insert - theorem set.to_finset_inter - theorem set.to_finset_ne_eq_erase - theorem set.to_finset_sdiff - theorem set.to_finset_singleton - theorem set.to_finset_union Modified src/data/set/intervals/infinite.lean +/- theorem set.Icc.infinite +/- theorem set.Ici.infinite +/- theorem set.Ico.infinite +/- theorem set.Iic.infinite +/- theorem set.Iio.infinite +/- theorem set.Ioc.infinite +/- theorem set.Ioi.infinite +/- theorem set.Ioo.infinite Modified src/logic/equiv/fintype.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/hahn_series.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_paracompact.lean Modified src/topology/subset_properties.lean 2022-05-23 10:20:39 34e450b chore(linear_algebra/quadratic_form/basic): Reorder lemmas (#14326) This moves the `fun_like` lemmas up to the top of the file next to the `coe_to_fun` instance, and condenses some sections containing only one lemma. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form/basic.lean 2022-05-23 10:20:38 275dd0f feat(algebra/ne_zero): add helper methods (#14286) Also golfs the inspiration for one of these, and cleans up some code around the area. ESTIMATED CHANGES Modified src/algebra/ne_zero.lean + theorem eq_zero_or_ne_zero +/- theorem ne_zero.of_injective + theorem ne_zero.pos +/- theorem ne_zero.trans Modified src/data/zmod/basic.lean 2022-05-23 10:20:35 15f49ae feat(linear_algebra/tensor_algebra/basic): add `tensor_algebra.tprod` (#14197) This is related to `exterior_power.ι_multi`. Note the new import caused a proof to time out, so I squeezed the simps into term mode. ESTIMATED CHANGES Modified src/linear_algebra/exterior_algebra/basic.lean +/- def exterior_algebra.ι_multi Modified src/linear_algebra/tensor_algebra/basic.lean + def tensor_algebra.tprod + theorem tensor_algebra.tprod_apply 2022-05-23 09:19:36 9288a2d feat(linear_algebra/affine_space/affine_equiv): extra lemmas and docstrings (#14319) I was struggling to find this definition, so added some more lemmas and a docstring. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.const_vadd_add + def affine_equiv.const_vadd_hom + theorem affine_equiv.const_vadd_nsmul + theorem affine_equiv.const_vadd_symm + theorem affine_equiv.const_vadd_zero + theorem affine_equiv.const_vadd_zsmul 2022-05-23 08:30:52 aa6dc57 chore(measure_theory/function/l1_space): drop `integrable.sub'` (#14309) It used to have weaker TC assumptions than `integrable.sub` but now it's just a weaker version of it. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean - theorem measure_theory.integrable.sub' 2022-05-23 07:50:19 2962eab feat(linear_algebra/trace): trace of transpose map (#13897) ESTIMATED CHANGES Modified src/linear_algebra/contraction.lean + theorem transpose_dual_tensor_hom Modified src/linear_algebra/trace.lean + theorem linear_map.trace_transpose' + theorem linear_map.trace_transpose 2022-05-23 06:53:49 b5128b8 feat(category_theory/limits): pullback squares (#14220) Per [zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/pushout.20of.20biprod.2Efst.20and.20biprod.2Esnd.20is.20zero). ESTIMATED CHANGES Added src/category_theory/limits/shapes/comm_sq.lean + theorem category_theory.limits.comm_sq.flip + theorem category_theory.limits.comm_sq.of_arrow + structure category_theory.limits.comm_sq + def category_theory.limits.is_pullback.cone + theorem category_theory.limits.is_pullback.flip + theorem category_theory.limits.is_pullback.of_bot + theorem category_theory.limits.is_pullback.of_has_pullback + theorem category_theory.limits.is_pullback.of_is_limit + theorem category_theory.limits.is_pullback.of_right + theorem category_theory.limits.is_pullback.paste_horiz + theorem category_theory.limits.is_pullback.paste_vert + theorem category_theory.limits.is_pullback.zero_left + theorem category_theory.limits.is_pullback.zero_top + structure category_theory.limits.is_pullback + def category_theory.limits.is_pushout.cocone + theorem category_theory.limits.is_pushout.flip + theorem category_theory.limits.is_pushout.of_bot + theorem category_theory.limits.is_pushout.of_has_pushout + theorem category_theory.limits.is_pushout.of_is_colimit + theorem category_theory.limits.is_pushout.of_right + theorem category_theory.limits.is_pushout.paste_horiz + theorem category_theory.limits.is_pushout.paste_vert + theorem category_theory.limits.is_pushout.zero_bot + theorem category_theory.limits.is_pushout.zero_right + structure category_theory.limits.is_pushout Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.pullback_cone.condition_one + def category_theory.limits.pullback_cone.ext + theorem category_theory.limits.pushout_cocone.condition_zero + def category_theory.limits.pushout_cocone.ext 2022-05-23 04:06:58 94644b7 chore(scripts): update nolints.txt (#14321) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-05-23 01:49:47 542d06a feat(measure_theory): use `pseudo_metrizable_space` instead of `metrizable_space` (#14310) ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.comp_measurable_to_germ Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/function/strongly_measurable.lean +/- theorem ae_measurable.ae_strongly_measurable +/- theorem ae_strongly_measurable_Union_iff +/- theorem ae_strongly_measurable_add_measure_iff +/- theorem ae_strongly_measurable_id +/- theorem ae_strongly_measurable_iff_ae_measurable +/- theorem ae_strongly_measurable_union_iff +/- theorem exists_strongly_measurable_limit_of_tendsto_ae +/- theorem measurable.strongly_measurable +/- theorem measure_theory.ae_strongly_measurable.add_measure +/- theorem measure_theory.ae_strongly_measurable.measurable_mk +/- theorem measure_theory.ae_strongly_measurable.sum_measure +/- theorem strongly_measurable_id Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/integral_eq_improper.lean +/- theorem measure_theory.ae_cover.ae_strongly_measurable 2022-05-23 01:49:46 c100004 refactor(category_theory/shift_functor): improve defeq of inverse (#14300) ESTIMATED CHANGES Modified src/category_theory/shift.lean + theorem category_theory.shift_functor_inv 2022-05-23 01:49:45 56de25e chore(topology/separation): golf some proofs (#14279) * extract `minimal_nonempty_closed_eq_singleton` out of the proof of `is_closed.exists_closed_singleton`; * replace `exists_open_singleton_of_open_finset` with `exists_open_singleton_of_open_finite`, extract `minimal_nonempty_open_eq_singleton` out of its proof. * add `exists_is_open_xor_mem`, an alias for `t0_space.t0`. ESTIMATED CHANGES Modified src/topology/separation.lean + theorem exists_is_open_xor_mem +/- theorem exists_open_singleton_of_fintype + theorem exists_open_singleton_of_open_finite - theorem exists_open_singleton_of_open_finset + theorem minimal_nonempty_closed_eq_singleton + theorem minimal_nonempty_open_eq_singleton 2022-05-23 01:49:44 01eda9a feat(topology/instances/ennreal): golf, add lemmas about `supr_add_supr` (#14274) * add `ennreal.bsupr_add'` etc that deal with `{ι : Sort*} {p : ι → Prop}` instead of `{ι : Type*} {s : set ι}`; * golf some proofs by reusing more powerful generic lemmas; * add `ennreal.supr_add_supr_le`, `ennreal.bsupr_add_bsupr_le`, and `ennreal.bsupr_add_bsupr_le'`. ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem ennreal.add_bsupr' + theorem ennreal.add_bsupr +/- theorem ennreal.add_supr + theorem ennreal.bsupr_add' + theorem ennreal.bsupr_add_bsupr_le' + theorem ennreal.bsupr_add_bsupr_le + theorem ennreal.supr_add_supr_le 2022-05-23 01:49:43 9861db0 feat(logic/hydra): termination of a hydra game (#14190) + The added file logic/hydra.lean deals with the following version of the hydra game: each head of the hydra is labelled by an element in a type `α`, and when you cut off one head with label `a`, it grows back an arbitrary but finite number of heads, all labelled by elements smaller than `a` with respect to a well-founded relation `r` on `α`. We show that no matter how (in what order) you choose cut off the heads, the game always terminates, i.e. all heads will eventually be cut off. The proof follows https://mathoverflow.net/a/229084/3332, and the notion of `fibration` and the `game_add` relation on the product of two types arise in the proof. + The results is used to show the well-foundedness of the intricate induction used to show that multiplication of games is well-defined on surreals, see [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Well-founded.20recursion.20for.20pgames/near/282379832). + One lemma `add_singleton_eq_iff` is added to data/multiset/basic. + `acc.trans_gen` is added, closing [a comment](https://github.com/leanprover-community/lean/pull/713/files#r867394835) at lean#713. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.add_singleton_eq_iff Added src/logic/hydra.lean + theorem acc.cut_expand + theorem acc.game_add + theorem acc.of_downward_closed + theorem acc.of_fibration + theorem relation.acc_of_singleton + def relation.cut_expand + theorem relation.cut_expand_fibration + theorem relation.cut_expand_iff + def relation.fibration + inductive relation.game_add + theorem relation.game_add_le_lex + theorem relation.rprod_le_trans_gen_game_add + theorem well_founded.cut_expand + theorem well_founded.game_add Modified src/logic/relation.lean + theorem acc.trans_gen 2022-05-23 01:49:42 8304b95 refactor(algebra/big_operators/*): Generalize to division monoids (#14189) Generalize big operators lemmas to `division_comm_monoid`. Rename `comm_group.inv_monoid_hom` to `inv_monoid_hom` because it is not about`comm_group` anymore and we do not use classes as namespaces. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_div_distrib +/- theorem finset.prod_erase_eq_div - theorem finset.prod_inv_distrib' +/- theorem finset.prod_inv_distrib +/- theorem finset.prod_sdiff_div_prod_sdiff +/- theorem finset.prod_sdiff_eq_div +/- theorem finset.prod_zpow +/- theorem finset.sum_range_sub_of_monotone - theorem finset.sum_sub_distrib Modified src/algebra/big_operators/finprod.lean +/- theorem finprod_div_distrib - theorem finprod_div_distrib₀ +/- theorem finprod_inv_distrib - theorem finprod_inv_distrib₀ +/- theorem finprod_mem_div_distrib - theorem finprod_mem_div_distrib₀ +/- theorem finprod_mem_inv_distrib - theorem finprod_mem_inv_distrib₀ Modified src/algebra/big_operators/multiset.lean - theorem multiset.coe_inv_monoid_hom - theorem multiset.prod_map_div₀ +/- theorem multiset.prod_map_inv' +/- theorem multiset.prod_map_inv - theorem multiset.prod_map_inv₀ - theorem multiset.prod_map_zpow₀ Modified src/algebra/hom/equiv.lean +/- def mul_equiv.inv + theorem mul_equiv.inv_symm - def mul_equiv.inv₀ - theorem mul_equiv.inv₀_symm Modified src/algebra/hom/freiman.lean Modified src/algebra/hom/group.lean + theorem coe_inv_monoid_hom - def comm_group.inv_monoid_hom + def inv_monoid_hom + theorem inv_monoid_hom_apply Modified src/algebra/support.lean +/- theorem function.mul_support_div - theorem function.mul_support_group_div +/- theorem function.mul_support_inv' +/- theorem function.mul_support_inv - theorem function.mul_support_inv₀ +/- theorem function.mul_support_mul_inv Modified src/analysis/specific_limits/basic.lean Modified src/data/dfinsupp/basic.lean Modified src/data/real/pi/wallis.lean Modified src/field_theory/splitting_field.lean Modified src/topology/algebra/continuous_monoid_hom.lean 2022-05-23 01:49:41 16a5286 feat(order/atoms): add lemmas (#14162) ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/order/atoms.lean - theorem eq_bot_or_eq_of_le_atom - theorem eq_top_or_eq_of_coatom_le + theorem is_atom.Iic_eq + theorem is_atom.le_iff + theorem is_atom.lt_iff +/- def is_atom +/- theorem is_atom_dual_iff_is_coatom + theorem is_coatom.Ici_eq + theorem is_coatom.le_iff + theorem is_coatom.lt_iff +/- def is_coatom +/- theorem is_coatom_dual_iff_is_atom Modified src/order/compactly_generated.lean Modified src/order/partition/finpartition.lean 2022-05-22 23:41:38 4cdde79 chore(set_theory/game/ordinal): minor golfing (#14317) We open the `pgame` namespace to save a few characters. We also very slightly golf the proof of `to_pgame_le`. ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean 2022-05-22 23:41:37 005df45 feat(topology/metric_space): use weaker TC assumptions (#14316) Assume `t0_space` instead of `separated_space` in `metric.of_t0_pseudo_metric_space` and `emetric.of_t0_pseudo_emetric_space` (both definition used to have `t2` in their names). ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean +/- theorem norm_eq_zero_iff' +/- theorem norm_le_zero_iff' +/- theorem norm_pos_iff' Modified src/topology/metric_space/basic.lean + theorem metric.indistinguishable_iff + def metric.of_t0_pseudo_metric_space - def metric.of_t2_pseudo_metric_space Modified src/topology/metric_space/emetric_space.lean + theorem emetric.indistinguishable_iff + def emetric.of_t0_pseudo_emetric_space - def emetric_of_t2_pseudo_emetric_space 2022-05-22 23:41:36 9e9a2c9 feat(algebra/ring/basic): add `no_zero_divisors.to_cancel_comm_monoid_with_zero` (#14302) This already existed as `is_domain.to_cancel_comm_monoid_with_zero` with overly strong assumptions. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + def no_zero_divisors.to_cancel_comm_monoid_with_zero 2022-05-22 23:41:35 dcb3cb1 chore(logic/equiv/set): golf definition (#14284) I've no idea which name is better; for now, let's at least not implement the same function twice. ESTIMATED CHANGES Modified src/logic/equiv/set.lean 2022-05-22 23:41:34 60897e3 refactor(set_theory/game/nim): `0 ≈ nim 0` → `nim 0 ≈ 0` (#14270) We invert the directions of a few simple equivalences/relabellings to a more natural order (simpler on the RHS). ESTIMATED CHANGES Modified src/set_theory/game/nim.lean +/- theorem pgame.grundy_value_star +/- theorem pgame.grundy_value_zero +/- theorem pgame.nim.nim_one_equiv +/- theorem pgame.nim.nim_zero_equiv +/- def pgame.nim.nim_zero_relabelling 2022-05-22 23:41:33 5a24374 doc(set_theory/game/basic): improve docs (#14268) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean 2022-05-22 23:41:32 cef5898 chore(linear_algebra): generalize conversion between matrices and bilinear forms to semirings (#14263) Only one lemma was moved (`dual_distrib_apply`), none were renamed, and no proofs were meaningfully changed. Section markers were shuffled around, and some variables exchanged for variables with weaker typeclass assumptions. A few other things have been generalized to semiring at the same time; `linear_map.trace` and `linear_map.smul_rightₗ` ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Modified src/linear_algebra/bilinear_form.lean +/- theorem bilin_form.ext_basis +/- theorem bilin_form.is_pair_self_adjoint_equiv +/- theorem bilin_form.sum_repr_mul_repr_mul Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/dual.lean +/- def submodule.dual_annihilator Modified src/linear_algebra/matrix/basis.lean +/- theorem basis.to_matrix_is_unit_smul +/- theorem basis.to_matrix_units_smul Modified src/linear_algebra/matrix/bilinear_form.lean +/- theorem bilin_form.mul_to_matrix' +/- theorem bilin_form.mul_to_matrix'_mul +/- theorem bilin_form.mul_to_matrix +/- theorem bilin_form.mul_to_matrix_mul +/- def bilin_form.to_matrix' +/- theorem bilin_form.to_matrix'_apply +/- theorem bilin_form.to_matrix'_comp +/- theorem bilin_form.to_matrix'_comp_left +/- theorem bilin_form.to_matrix'_comp_right +/- theorem bilin_form.to_matrix'_mul +/- theorem bilin_form.to_matrix'_to_bilin' +/- theorem bilin_form.to_matrix_apply +/- theorem bilin_form.to_matrix_aux_std_basis +/- theorem bilin_form.to_matrix_comp_left +/- theorem bilin_form.to_matrix_comp_right +/- theorem bilin_form.to_matrix_mul +/- theorem bilin_form.to_matrix_mul_basis_to_matrix +/- theorem bilin_form.to_matrix_to_bilin +/- theorem bilinear_form.to_matrix_aux_eq +/- theorem matrix.nondegenerate_to_bilin'_iff_nondegenerate_to_bilin +/- def matrix.to_bilin' +/- theorem matrix.to_bilin'_apply' +/- theorem matrix.to_bilin'_apply +/- theorem matrix.to_bilin'_aux_eq +/- theorem matrix.to_bilin'_comp +/- theorem matrix.to_bilin'_std_basis +/- theorem matrix.to_bilin'_to_matrix' +/- theorem matrix.to_bilin_apply +/- theorem matrix.to_bilin_comp +/- theorem matrix.to_bilin_to_matrix +/- theorem to_bilin'_aux_to_matrix_aux Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/trace.lean Modified src/topology/algebra/module/basic.lean 2022-05-22 23:41:31 e09e877 refactor(set_theory/cardinal/cofinality): infer arguments (#14251) We make one of the arguments in `cof_type_le` and `lt_cof_type` implicit. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean +/- theorem ordinal.cof_type_le +/- theorem ordinal.lt_cof_type 2022-05-22 23:41:30 d946573 chore(data/matrix/basic): add `matrix.star_mul_vec` and `matrix.star_vec_mul` (#14248) This also generalizes some nearby typeclasses. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.mul_vec_conj_transpose +/- theorem matrix.mul_vec_mul_vec + theorem matrix.star_mul_vec + theorem matrix.star_vec_mul + theorem matrix.vec_mul_conj_transpose +/- theorem matrix.vec_mul_vec_mul 2022-05-22 23:41:29 684587b feat(set_theory/game/pgame): `add_lf_add_of_lf_of_le` (#14150) This generalizes the previously existing `add_lf_add` on `numeric` games. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.add_lf_add_of_le_of_lf + theorem pgame.add_lf_add_of_lf_of_le Modified src/set_theory/surreal/basic.lean - theorem pgame.add_lf_add 2022-05-22 22:57:28 b7952ee refactor(category_theory/shift): remove opaque_eq_to_iso (#14262) It seems `opaque_eq_to_iso` was only needed because we had over-eager simp lemmas. After #14260, it is easy to remove. ESTIMATED CHANGES Modified src/category_theory/differential_object.lean Modified src/category_theory/shift.lean - theorem category_theory.map_opaque_eq_to_iso_comp_app - def category_theory.opaque_eq_to_iso - theorem category_theory.opaque_eq_to_iso_inv - theorem category_theory.opaque_eq_to_iso_symm Modified src/category_theory/triangulated/rotate.lean 2022-05-22 21:01:20 178456f feat(set_theory/surreal/basic): definition of `≤` and `<` on numeric games (#14169) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.le_iff_forall_lt + theorem pgame.le_of_forall_lt + theorem pgame.lt_def + theorem pgame.lt_iff_forall_le + theorem pgame.lt_of_forall_le 2022-05-22 18:33:19 fe2b5ab feat(set_theory/game/pgame): instances for empty moves of addition (#14297) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-05-22 17:01:21 1b7e918 chore(algebra/geom_sum): rename to odd.geom_sum_pos (#14264) allowing dot notation :) ESTIMATED CHANGES Modified src/algebra/geom_sum.lean - theorem geom_sum_pos_of_odd + theorem odd.geom_sum_pos 2022-05-22 16:14:11 eb8994b feat(measure_theory): use more `[(pseudo_)metrizable_space]` (#14232) * Use `[metrizable_space α]` or `[pseudo_metrizable_space α]` assumptions in some lemmas, replace `tendsto_metric` with `tendsto_metrizable` in the names of these lemmas. * Drop `measurable_of_tendsto_metric'` and `measurable_of_tendsto_metric` in favor of `measurable_of_tendsto_metrizable'` and `measurable_of_tendsto_metrizable`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean - theorem ae_measurable_of_tendsto_metric_ae' - theorem ae_measurable_of_tendsto_metric_ae + theorem ae_measurable_of_tendsto_metrizable_ae' + theorem ae_measurable_of_tendsto_metrizable_ae +/- theorem ae_measurable_of_unif_approx - theorem measurable_limit_of_tendsto_metric_ae + theorem measurable_limit_of_tendsto_metrizable_ae - theorem measurable_of_tendsto_metric' - theorem measurable_of_tendsto_metric - theorem measurable_of_tendsto_metric_ae +/- theorem measurable_of_tendsto_metrizable' +/- theorem measurable_of_tendsto_metrizable + theorem measurable_of_tendsto_metrizable_ae +/- theorem tendsto_measure_cthickening_of_is_compact Modified src/measure_theory/function/convergence_in_measure.lean Modified src/measure_theory/function/strongly_measurable.lean 2022-05-22 14:41:20 eae0510 feat(category_theory/natural_isomorphism): a simp lemma cancelling inverses (#14299) I am not super happy to be adding lemmas like this, because it feels like better designed simp normal forms (or something else) could just avoid the need. However my efforts to think about this keep getting stuck on the shift functor hole we're in, and this lemma is useful in the meantime to dig my way out of it. :-) ESTIMATED CHANGES Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.inv_map_inv_app 2022-05-22 14:41:19 e4a8db1 feat(data/real/ennreal): lemmas about unions and intersections (#14296) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.Inter_Ici_coe_nat + theorem ennreal.Inter_Ioi_coe_nat + theorem ennreal.Union_Icc_coe_nat + theorem ennreal.Union_Ico_coe_nat + theorem ennreal.Union_Iic_coe_nat + theorem ennreal.Union_Iio_coe_nat + theorem ennreal.Union_Ioc_coe_nat + theorem ennreal.Union_Ioo_coe_nat 2022-05-22 14:41:17 a836c6d refactor(category_theory): remove some simp lemmas about eq_to_hom (#14260) The simp lemma `eq_to_hom_map : F.map (eq_to_hom p) = eq_to_hom (congr_arg F.obj p)` is rather dangerous, but after it has fired it's much harder to see the functor `F` (e.g. to use naturality of a natural transformation). This PR removes `@[simp]` from that lemma, at the expense of having a few `local attribute [simp]`s, and adding it explicitly to simp sets. On the upside, we also get to *remove* some `simp [-eq_to_hom_map]`s. I'm hoping also to soon be able to remove `opaque_eq_to_hom`, as it was introduced to avoid the problem this simp lemma was causing. The PR is part of an effort to solve some problems identified on [zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/trouble.20in.20.60shift_functor.60.20land). ESTIMATED CHANGES Modified src/algebra/homology/additive.lean Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/presheafed_space/gluing.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/Cat/limit.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/eq_to_hom.lean +/- theorem category_theory.eq_to_hom_map +/- theorem category_theory.eq_to_iso_map Modified src/category_theory/functor/flat.lean Modified src/category_theory/grothendieck.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/monoidal/CommMon_.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/preadditive/Mat.lean Modified src/category_theory/shift.lean Modified src/category_theory/structured_arrow.lean Modified src/category_theory/triangulated/rotate.lean Modified src/category_theory/yoneda.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/sheaves/sheaf_condition/sites.lean 2022-05-22 12:23:13 0386c3b refactor(order/filter/lift): reformulate `lift_infi` etc (#14138) * add `monotone.of_map_inf` and `monotone.of_map_sup`; * add `filter.lift_infi_le`: this inequality doesn't need any assumptions; * reformulate `filter.lift_infi` and `filter.lift'_infi` using `g (s ∩ t) = g s ⊓ g t` instead of `g s ⊓ g t = g (s ∩ t)`; * rename `filter.lift_infi'` to `filter.lift_infi_of_directed`, use `g (s ∩ t) = g s ⊓ g t`; * add `filter.lift_infi_of_map_univ` and `filter.lift'_infi_of_map_univ`. ESTIMATED CHANGES Modified src/order/filter/lift.lean +/- theorem filter.lift'_inf +/- theorem filter.lift'_infi + theorem filter.lift'_infi_of_map_univ - theorem filter.lift_infi' +/- theorem filter.lift_infi + theorem filter.lift_infi_le + theorem filter.lift_infi_of_directed + theorem filter.lift_infi_of_map_univ Modified src/order/filter/small_sets.lean Modified src/order/lattice.lean + theorem monotone.of_map_inf + theorem monotone.of_map_sup Modified src/topology/uniform_space/basic.lean 2022-05-22 11:09:06 d036d3c feat(probability/stopping): prove measurability of the stopped value (#14062) ESTIMATED CHANGES Modified src/probability/stopping.lean + theorem measure_theory.measurable_stopped_value +/- theorem measure_theory.prog_measurable.adapted_stopped_process +/- theorem measure_theory.prog_measurable.stopped_process +/- theorem measure_theory.prog_measurable.strongly_measurable_stopped_process +/- theorem measure_theory.prog_measurable_min_stopping_time + theorem measure_theory.strongly_measurable_stopped_value_of_le 2022-05-22 11:09:05 49b68e8 feat(analysis/convex/uniform): Uniformly convex spaces (#13480) Define uniformly convex spaces and prove the implications `inner_product_space ℝ E → uniform_convex_space E` and `uniform_convex_space E → strict_convex_space ℝ E`. ESTIMATED CHANGES Added src/analysis/convex/uniform.lean + theorem exists_forall_closed_ball_dist_add_le_two_mul_sub + theorem exists_forall_closed_ball_dist_add_le_two_sub + theorem exists_forall_sphere_dist_add_le_two_sub Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed/group/basic.lean + theorem norm_add₃_le + theorem norm_sub_pos_iff 2022-05-22 09:27:57 ac00603 feat(measure_theory/measure/measure_space): add some `null_measurable_set` lemmas (#14293) Add `measure_bUnion₀`, `measure_sUnion₀`, and `measure_bUnion_finset₀`. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_Union₀ + theorem measure_theory.lintegral_bUnion + theorem measure_theory.lintegral_bUnion_finset + theorem measure_theory.lintegral_bUnion_finset₀ + theorem measure_theory.lintegral_bUnion₀ Modified src/measure_theory/measure/ae_disjoint.lean - theorem disjoint.ae_disjoint Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure_bUnion_finset + theorem measure_theory.measure_bUnion_finset₀ + theorem measure_theory.measure_bUnion₀ + theorem measure_theory.measure_sUnion₀ 2022-05-22 09:27:56 726b9ce feat(set_theory/ordinal/arithmetic): Lemmas about `bsup o.succ f` on a monotone function (#14289) ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.blsub_succ_of_mono + theorem ordinal.bsup_succ_of_mono 2022-05-22 09:27:55 e99ff88 feat(measure_theory): add `restrict_inter_add_diff` and `lintegral_inter_add_diff` (#14280) * add `measure_theory.measure.restrict_inter_add_diff` and `measure_theory.lintegral_inter_add_diff`; * drop one measurability assumption in `measure_theory.lintegral_union`; * add `measure_theory.lintegral_max` and `measure_theory.set_lintegral_max`; * drop `measure_theory.measure.lebesgue_decomposition.max_measurable_le`: use `set_lintegral_max` instead. ESTIMATED CHANGES Modified src/measure_theory/decomposition/lebesgue.lean - theorem measure_theory.measure.lebesgue_decomposition.max_measurable_le Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_inter_add_diff + theorem measure_theory.lintegral_max +/- theorem measure_theory.lintegral_union + theorem measure_theory.set_lintegral_max Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.restrict_inter_add_diff + theorem measure_theory.measure.restrict_inter_add_diff₀ 2022-05-22 09:27:53 2d9f791 feat(order/filter): add lemmas about filter.has_antitone_basis (#14131) * add `filter.has_antitone_basis.comp_mono` and `filter.has_antitone_basis.comp_strict_mono`; * add `filter.has_antitone_basis.subbasis_with_rel`; * generalize `filter.has_basis.exists_antitone_subbasis` to `ι : Sort*`. * add a missing docstring. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.has_antitone_basis.comp_mono + theorem filter.has_antitone_basis.comp_strict_mono + theorem filter.has_antitone_basis.subbasis_with_rel Modified src/order/filter/bases.lean 2022-05-22 09:27:53 52df6ab refactor(category_theory): remove all decidability instances (#14046) Make the category theory library thoroughly classical: mostly this is ceasing carrying around decidability instances for the indexing types of biproducts, and for the object and morphism types in `fin_category`. It appears there was no real payoff: the category theory library is already extremely non-constructive. As I was running into occasional problems providing decidability instances (when writing construction involving reindexing biproducts), it seems easiest to just remove this vestigial constructiveness from the category theory library. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean +/- def AddCommGroup.biproduct_iso_pi +/- theorem AddCommGroup.biproduct_iso_pi_inv_comp_π Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/biproducts.lean +/- def Module.biproduct_iso_pi +/- theorem Module.biproduct_iso_pi_inv_comp_π Modified src/category_theory/closed/ideal.lean Modified src/category_theory/fin_category.lean Modified src/category_theory/idempotents/biproducts.lean +/- def category_theory.idempotents.karoubi.biproducts.bicone Modified src/category_theory/limits/bicones.lean +/- def category_theory.bicone_mk Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/constructions/over/products.lean Modified src/category_theory/limits/lattice.lean +/- theorem category_theory.limits.complete_lattice.finite_coproduct_eq_finset_sup +/- theorem category_theory.limits.complete_lattice.finite_product_eq_finset_inf Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/preserves/shapes/biproducts.lean Modified src/category_theory/limits/shapes/biproducts.lean +/- theorem category_theory.limits.biproduct.from_subtype_π +/- theorem category_theory.limits.biproduct.ι_to_subtype +/- theorem category_theory.limits.biproduct.ι_π Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/zero_morphisms.lean Modified src/category_theory/monoidal/preadditive.lean +/- def category_theory.left_distributor +/- theorem category_theory.left_distributor_assoc +/- theorem category_theory.left_distributor_hom +/- theorem category_theory.left_distributor_inv +/- def category_theory.right_distributor +/- theorem category_theory.right_distributor_assoc +/- theorem category_theory.right_distributor_hom +/- theorem category_theory.right_distributor_inv Modified src/category_theory/preadditive/Mat.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/preadditive/injective.lean Modified src/category_theory/preadditive/projective.lean Modified src/representation_theory/Action.lean 2022-05-22 08:40:44 37647bf feat(measure_theory/constructions/borel_space): add `norm_cast` lemmas (#14295) ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem ae_measurable_coe_nnreal_ennreal_iff + theorem ae_measurable_coe_nnreal_real_iff +/- theorem measurable_coe_nnreal_ennreal_iff + theorem measurable_coe_nnreal_real_iff 2022-05-22 06:29:42 9b8588a chore(algebra/order/ring): golf `mul_le_one` (#14245) golf `mul_le_one` ESTIMATED CHANGES Modified src/algebra/order/ring.lean 2022-05-22 06:29:41 49ce967 feat(ring_theory/valuation/basic): notation for `with_zero (multiplicative ℤ)` (#14064) And likewise for `with_zero (multiplicative ℕ)` ESTIMATED CHANGES Modified src/number_theory/function_field.lean +/- def function_field.infty_valuation +/- def function_field.infty_valuation_def +/- def function_field.infty_valued_Fqt Modified src/ring_theory/dedekind_domain/adic_valuation.lean +/- def is_dedekind_domain.height_one_spectrum.adic_valued +/- def is_dedekind_domain.height_one_spectrum.int_valuation +/- def is_dedekind_domain.height_one_spectrum.int_valuation_def +/- def is_dedekind_domain.height_one_spectrum.valuation Modified src/ring_theory/valuation/basic.lean 2022-05-22 04:22:45 a8a211f feat(order/lattice): add `left_lt_inf` etc (#14152) * add `left_lt_sup`, `right_lt_sup`, `left_or_right_lt_sup`, and their `inf` counterparts; * generalize `is_top_or_exists_gt` and `is_bot_or_exists_lt` to directed orders, replacing `forall_le_or_exists_lt_inf` and `forall_le_or_exists_lt_sup`; * generalize `exists_lt_of_sup` and `exists_lt_of_inf` to directed orders, rename them to `exists_lt_of_directed_le` and `exists_lt_of_directed_ge`. ESTIMATED CHANGES Modified src/order/directed.lean + theorem exists_lt_of_directed_ge + theorem exists_lt_of_directed_le + theorem is_bot_or_exists_lt + theorem is_top_or_exists_gt Modified src/order/lattice.lean - theorem exists_lt_of_inf - theorem exists_lt_of_sup - theorem forall_le_or_exists_lt_inf - theorem forall_le_or_exists_lt_sup + theorem inf_lt_left + theorem inf_lt_left_or_right + theorem inf_lt_right + theorem left_lt_sup + theorem left_or_right_lt_sup + theorem right_lt_sup Modified src/order/max.lean - theorem is_bot_or_exists_lt - theorem is_top_or_exists_gt Modified src/topology/algebra/order/liminf_limsup.lean 2022-05-22 01:40:48 d8b6f76 feat(set_theory/game/birthday): More basic birthdays (#14287) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean + theorem pgame.birthday_half + theorem pgame.birthday_star Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.succ_one 2022-05-21 11:38:54 f04684f chore(data/set/pointwise): Move into the `set` namespace (#14281) A bunch of lemmas about scalar multiplications of sets were dumped in root namespace for some reason. The lemmas moved to `set.*` are: * `zero_smul_set` * `zero_smul_subset` * `subsingleton_zero_smul_set` * `zero_mem_smul_set` * `zero_mem_smul_iff` * `zero_mem_smul_set_iff` * `smul_add_set` * `smul_mem_smul_set_iff` * `mem_smul_set_iff_inv_smul_mem` * `mem_inv_smul_set_iff` * `preimage_smul` * `preimage_smul_inv` * `set_smul_subset_set_smul_iff` * `set_smul_subset_iff` * `subset_set_smul_iff` * `smul_mem_smul_set_iff₀` * `mem_smul_set_iff_inv_smul_mem₀` * `mem_inv_smul_set_iff₀` * `preimage_smul₀` * `preimage_smul_inv₀` * `set_smul_subset_set_smul_iff₀` * `set_smul_subset_iff₀` * `subset_set_smul_iff₀` * `smul_univ₀` * `smul_set_univ₀` ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean Modified src/data/set/pointwise.lean - theorem mem_inv_smul_set_iff - theorem mem_inv_smul_set_iff₀ - theorem mem_smul_set_iff_inv_smul_mem - theorem mem_smul_set_iff_inv_smul_mem₀ - theorem preimage_smul - theorem preimage_smul_inv - theorem preimage_smul_inv₀ - theorem preimage_smul₀ + theorem set.mem_inv_smul_set_iff + theorem set.mem_inv_smul_set_iff₀ + theorem set.mem_smul_set_iff_inv_smul_mem + theorem set.mem_smul_set_iff_inv_smul_mem₀ + theorem set.preimage_smul + theorem set.preimage_smul_inv + theorem set.preimage_smul_inv₀ + theorem set.preimage_smul₀ + theorem set.set_smul_subset_iff + theorem set.set_smul_subset_iff₀ + theorem set.set_smul_subset_set_smul_iff + theorem set.set_smul_subset_set_smul_iff₀ + theorem set.smul_mem_smul_set_iff + theorem set.smul_mem_smul_set_iff₀ + theorem set.smul_set_univ₀ + theorem set.smul_univ₀ + theorem set.subset_set_smul_iff + theorem set.subset_set_smul_iff₀ + theorem set.subsingleton_zero_smul_set + theorem set.zero_mem_smul_iff + theorem set.zero_mem_smul_set + theorem set.zero_mem_smul_set_iff + theorem set.zero_smul_set + theorem set.zero_smul_subset - theorem set_smul_subset_iff - theorem set_smul_subset_iff₀ - theorem set_smul_subset_set_smul_iff - theorem set_smul_subset_set_smul_iff₀ - theorem smul_mem_smul_set_iff - theorem smul_mem_smul_set_iff₀ - theorem smul_set_univ₀ - theorem smul_univ₀ - theorem subset_set_smul_iff - theorem subset_set_smul_iff₀ - theorem subsingleton_zero_smul_set - theorem zero_mem_smul_iff - theorem zero_mem_smul_set - theorem zero_mem_smul_set_iff - theorem zero_smul_set - theorem zero_smul_subset Modified src/group_theory/free_product.lean Modified src/group_theory/subgroup/pointwise.lean Modified src/group_theory/submonoid/pointwise.lean Modified src/ring_theory/subring/pointwise.lean Modified src/ring_theory/subsemiring/pointwise.lean 2022-05-21 08:14:04 fc19a4e feat({data/finset,order/filter}/pointwise): Multiplicative action on pointwise monoids (#14214) `mul_action`, `distrib_mul_action`, `mul_distrib_mul_action` instances for `finset` and `filter`. Also delete `set.smul_add_set` because `smul_add` proves it. ESTIMATED CHANGES Modified src/data/finset/n_ary.lean +/- theorem finset.image₂_singleton_left Modified src/data/finset/pointwise.lean +/- theorem finset.coe_smul_finset Modified src/data/set/pointwise.lean - theorem smul_add_set Modified src/measure_theory/function/jacobian.lean Modified src/order/filter/pointwise.lean 2022-05-21 06:32:31 eaa771f chore(tactic/cancel_denoms): remove an unused have (#14269) ESTIMATED CHANGES Modified src/tactic/cancel_denoms.lean 2022-05-21 03:17:39 d787d49 feat(algebra/big_operators): add `finset.prod_comm'` (#14257) * add a "dependent" version of `finset.prod_comm`; * use it to prove the original lemma; * slightly generalize `exists_eq_right_right` and `exists_eq_right_right'`; * add two `simps` attributes. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_comm' Modified src/logic/basic.lean Modified src/logic/embedding.lean +/- def function.embedding.sectl +/- def function.embedding.sectr 2022-05-21 00:59:53 3fc6fbb feat(algebra/divisibility): `is_refl` and `is_trans` instances for divisibility (#14240) ESTIMATED CHANGES Modified src/algebra/divisibility.lean +/- theorem dvd_refl +/- theorem dvd_rfl +/- theorem one_dvd 2022-05-21 00:22:23 0e095f0 feat(data/polynomial/mirror): `mirror` is injective (#14254) This PR adds an `inj` lemma for `mirror`. ESTIMATED CHANGES Modified src/data/polynomial/mirror.lean + theorem polynomial.mirror_inj 2022-05-20 23:44:35 d217e1d feat(set_theory/game/pgame): `sub_self_equiv` (#14272) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.sub_self_equiv 2022-05-20 18:26:01 a6b90be refactor(set_theory/cardinal/*): add `succ_order` instance, rename `succ` lemmas (#14244) We rename the lemmas on `cardinal.succ` to better match those from `succ_order`. - `succ_le` → `succ_le_iff` - `lt_succ` → `lt_succ_iff` - `lt_succ_self` → `lt_succ` We also add `succ_le_of_lt` and `le_of_lt_succ`. ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.le_of_lt_succ + theorem cardinal.le_succ +/- theorem cardinal.lt_succ + theorem cardinal.lt_succ_iff - theorem cardinal.lt_succ_self - theorem cardinal.succ_le + theorem cardinal.succ_le_iff + theorem cardinal.succ_le_of_lt +/- theorem cardinal.succ_nonempty +/- theorem cardinal.succ_pos Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/cardinal/continuum.lean Modified src/set_theory/cardinal/ordinal.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean 2022-05-20 17:46:23 113f7e4 feat(linear_algebra/trace): trace of projection maps (#14165) This is proved under the `field` assumption instead of the finite free module assumptions generally used to talk about the trace because we need the submodules `p` and `f.ker` to also be free and finite. - [x] depends on: #13872 ESTIMATED CHANGES Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/trace.lean + theorem linear_map.is_proj.trace + theorem linear_map.trace_id 2022-05-20 16:36:21 1983e40 feat(data/zmod/basic): If the orbit is finite, then the minimal period is positive (#14201) This PR adds an instance stating that if the orbit is finite, then the minimal period is positive. The instance is needed for an explicit computation that involves a product indexed by `zmod (minimal_period ((•) a) b)`. ESTIMATED CHANGES Modified src/data/zmod/basic.lean Modified src/data/zmod/quotient.lean 2022-05-20 15:32:16 846ed9f chore(measure_theory/integral/lebesgue): golf some proofs (#14256) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean 2022-05-20 13:34:14 180d975 feat(set_theory/game/pgame): Tweak `pgame.add` API (#13611) We modify the API for `pgame.add` as follows: - `left_moves_add` and `right_moves_add` are turned from type equivalences into type equalities. - The former equivalences are prefixed with `to_` and inverted. We also golf a few theorems and make some parameters explicit. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/nim.lean Modified src/set_theory/game/pgame.lean - def pgame.add +/- theorem pgame.add_move_left_inl +/- theorem pgame.add_move_left_inr +/- theorem pgame.add_move_right_inl +/- theorem pgame.add_move_right_inr + theorem pgame.left_moves_add - def pgame.left_moves_add + theorem pgame.left_moves_add_cases + theorem pgame.right_moves_add - def pgame.right_moves_add + theorem pgame.right_moves_add_cases + def pgame.to_left_moves_add + def pgame.to_right_moves_add Modified src/set_theory/surreal/basic.lean 2022-05-20 11:17:03 1483eca feat(algebra/algebra/operations): add right induction principles for power membership (#14219) We already had the left-induction principles. There's probably some clever trick to get these via `mul_opposite`, but I'm not sure if it's worth the effort. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/linear_algebra/exterior_algebra/grading.lean Modified src/linear_algebra/tensor_algebra/grading.lean 2022-05-20 06:26:14 1e011e3 feat(linear_algebra/trace): trace of prod_map (#13872) In this PR I prove that the trace is additive under `prod_map`, i.e. that `trace (prod_map f g) = trace f + trace g`. ESTIMATED CHANGES Modified src/linear_algebra/contraction.lean + theorem dual_tensor_hom_prod_map_zero + theorem zero_prod_map_dual_tensor_hom Modified src/linear_algebra/trace.lean + theorem linear_map.trace_prod_map' + theorem linear_map.trace_prod_map 2022-05-20 04:06:08 735fbe0 chore(scripts): update nolints.txt (#14255) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2022-05-20 01:48:36 a5878bb feat(data/polynomial/mirror): `mirror_eq_iff` (#14238) This PR adds a lemma stating that `p.mirror = q ↔ p = q.mirror`. ESTIMATED CHANGES Modified src/data/polynomial/mirror.lean + theorem polynomial.mirror_eq_iff +/- theorem polynomial.mirror_eq_zero + theorem polynomial.mirror_involutive +/- theorem polynomial.mirror_leading_coeff +/- theorem polynomial.mirror_trailing_coeff 2022-05-20 00:16:04 c9c9fa1 refactor(category_theory/discrete): make discrete irreducible (#13762) ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean + theorem AddCommGroup.biprod_iso_prod_inv_comp_fst + theorem AddCommGroup.biprod_iso_prod_inv_comp_snd +/- def AddCommGroup.has_limit.lift - theorem AddCommGroup.has_limit.lift_apply +/- def AddCommGroup.has_limit.product_limit_cone Modified src/algebra/category/Module/biproducts.lean +/- def Module.has_limit.lift - theorem Module.has_limit.lift_apply +/- def Module.has_limit.product_limit_cone Modified src/algebra/category/Module/products.lean Modified src/algebra/category/Ring/constructions.lean Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/algebraic_geometry/open_immersion.lean +/- theorem algebraic_geometry.SheafedSpace.is_open_immersion.image_preimage_is_empty Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_topology/fundamental_groupoid/product.lean Modified src/category_theory/adjunction/comma.lean Modified src/category_theory/adjunction/evaluation.lean Modified src/category_theory/adjunction/over.lean Modified src/category_theory/bicategory/coherence.lean + theorem category_theory.free_bicategory.preinclusion_map₂ Modified src/category_theory/bicategory/locally_discrete.lean + theorem category_theory.locally_discrete.eq_of_hom +/- def category_theory.locally_discrete Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/Groupoid.lean - def category_theory.Groupoid.pi_limit_cone +/- def category_theory.Groupoid.pi_limit_fan + def category_theory.Groupoid.pi_limit_fan_is_limit Modified src/category_theory/discrete_category.lean +/- theorem category_theory.discrete.eq_of_hom + def category_theory.discrete.eq_to_hom' + def category_theory.discrete.eq_to_hom + def category_theory.discrete.eq_to_iso' + def category_theory.discrete.eq_to_iso +/- theorem category_theory.discrete.id_def + theorem category_theory.discrete.mk_as +/- def category_theory.discrete.nat_iso_functor - theorem category_theory.discrete.nat_iso_hom_app - theorem category_theory.discrete.nat_iso_inv_app - theorem category_theory.discrete.nat_trans_app + structure category_theory.discrete - def category_theory.discrete + def category_theory.discrete_equiv Modified src/category_theory/elements.lean Modified src/category_theory/fin_category.lean Modified src/category_theory/functor/flat.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/grothendieck.lean Modified src/category_theory/is_connected.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/constructions/binary_products.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/constructions/over/products.lean Modified src/category_theory/limits/final.lean Modified src/category_theory/limits/kan_extension.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/preserves/shapes/biproducts.lean Modified src/category_theory/limits/preserves/shapes/products.lean Modified src/category_theory/limits/presheaf.lean Modified src/category_theory/limits/punit.lean Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.binary_cofan.inl +/- def category_theory.limits.binary_cofan.inr +/- def category_theory.limits.binary_fan.fst +/- def category_theory.limits.binary_fan.snd +/- def category_theory.limits.map_pair +/- def category_theory.limits.map_pair_iso +/- theorem category_theory.limits.map_pair_left +/- theorem category_theory.limits.map_pair_right + def category_theory.limits.pair_function + theorem category_theory.limits.pair_function_left + theorem category_theory.limits.pair_function_right +/- theorem category_theory.limits.pair_obj_left +/- theorem category_theory.limits.pair_obj_right Modified src/category_theory/limits/shapes/biproducts.lean +/- def category_theory.limits.bicone.to_binary_bicone +/- def category_theory.limits.bicone.to_binary_bicone_is_bilimit +/- def category_theory.limits.bicone.to_binary_bicone_is_colimit +/- def category_theory.limits.bicone.to_binary_bicone_is_limit + theorem category_theory.limits.bicone.to_cocone_X + theorem category_theory.limits.bicone.to_cocone_ι_app + theorem category_theory.limits.bicone.to_cone_X + theorem category_theory.limits.bicone.to_cone_π_app +/- def category_theory.limits.binary_bicone.to_bicone Modified src/category_theory/limits/shapes/disjoint_coproduct.lean Modified src/category_theory/limits/shapes/multiequalizer.lean Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.fan.proj + theorem category_theory.limits.fan_mk_proj + theorem category_theory.limits.has_products_of_limit_fans + def category_theory.limits.mk_fan_limit Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/limits/shapes/zero_objects.lean Modified src/category_theory/limits/small_complete.lean Modified src/category_theory/monoidal/CommMon_.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/discrete.lean Modified src/category_theory/monoidal/free/coherence.lean + theorem category_theory.free_monoidal_category.discrete_functor_map_eq_id + theorem category_theory.free_monoidal_category.discrete_functor_obj_eq_as +/- def category_theory.free_monoidal_category.normalize_obj +/- theorem category_theory.free_monoidal_category.normalize_obj_tensor +/- theorem category_theory.free_monoidal_category.normalize_obj_unitor Modified src/category_theory/monoidal/of_chosen_finite_products.lean Modified src/category_theory/opposites.lean + def category_theory.iso_op_equiv Modified src/category_theory/over.lean +/- theorem category_theory.over.over_right +/- theorem category_theory.under.under_left Modified src/category_theory/pempty.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/injective.lean Modified src/category_theory/preadditive/projective.lean Modified src/category_theory/punit.lean Modified src/category_theory/shift.lean +/- theorem category_theory.has_shift.shift_obj_obj +/- def category_theory.opaque_eq_to_iso +/- def category_theory.shift_functor Modified src/category_theory/simple.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/structured_arrow.lean +/- def category_theory.costructured_arrow.mk +/- theorem category_theory.costructured_arrow.mk_right +/- def category_theory.structured_arrow.mk +/- theorem category_theory.structured_arrow.mk_left Modified src/category_theory/subterminal.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/topology/category/Top/limits.lean Modified src/topology/gluing.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean +/- theorem Top.presheaf.sheaf_condition_equalizer_products.res_π Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified src/topology/sheaves/sheaf_condition/sites.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/stalks.lean 2022-05-19 19:16:16 5cf7a1c feat (algebra/group/prod): Showing that embed_product is injective (#14247) Proves that `embed_product` is injective. ESTIMATED CHANGES Modified src/algebra/group/prod.lean + theorem units.embed_product_injective 2022-05-19 19:16:15 3c6f16c feat(algebra/group/conj): instances + misc (#13943) ESTIMATED CHANGES Modified src/algebra/group/conj.lean + theorem is_conj_comm Modified src/group_theory/commuting_probability.lean +/- theorem card_comm_eq_card_conj_classes_mul_card 2022-05-19 17:11:59 c8f2a1f chore(*) : `zero_dvd_iff.1` → `eq_zero_of_zero_dvd` (#14241) We already had a name for this theorem, so we might as well use it. ESTIMATED CHANGES Modified src/algebra/divisibility.lean Modified src/algebra/gcd_monoid/basic.lean Modified src/data/nat/totient.lean Modified src/group_theory/specific_groups/cyclic.lean 2022-05-19 17:11:58 ffe7002 feat(topology/locally_constant): Characteristic functions on clopen sets are locally constant (#11708) Gives an API for characteristic functions on clopen sets, `char_fn`, which are locally constant functions. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.indicator_eq_one_iff_mem + theorem set.indicator_eq_zero_iff_not_mem + theorem set.indicator_one_inj Modified src/topology/locally_constant/algebra.lean + theorem locally_constant.char_fn_eq_one + theorem locally_constant.char_fn_eq_zero + theorem locally_constant.char_fn_inj + theorem locally_constant.coe_char_fn Modified src/topology/locally_constant/basic.lean + theorem locally_constant.mul_indicator_apply_eq_if + theorem locally_constant.mul_indicator_of_mem + theorem locally_constant.mul_indicator_of_not_mem 2022-05-19 16:29:55 d403cad chore(linear_algebra/quadratic_form/basic): remove redundant fields (#14246) This renames `quadratic_form.mk_left` to `quadratic_form.mk` by removing the redundant fields in the structure, as the proof of `mk_left` didn't actually use the fact the ring was commutative as it claimed to in the docstring. The only reason we could possibly want these is if addition were non-commutative, which seems extremely unlikely. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form/basic.lean - def quadratic_form.mk_left 2022-05-19 14:21:27 218d66a doc(tactic/lint/type_classes): Fix small typo (#14242) ESTIMATED CHANGES Modified src/tactic/lint/type_classes.lean 2022-05-19 12:28:20 e29d911 feat(group_theory/quotient_group): properties of quotients of homomorphisms and equivalences (#13046) Add `id`, `comp` for quotients of homomorphisms and `refl`, `symm`, `trans` for quotients of equivalences. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean +/- def quotient_group.equiv_quotient_zpow_of_equiv + theorem quotient_group.equiv_quotient_zpow_of_equiv_refl + theorem quotient_group.equiv_quotient_zpow_of_equiv_symm + theorem quotient_group.equiv_quotient_zpow_of_equiv_trans +/- def quotient_group.hom_quotient_zpow_of_hom + theorem quotient_group.hom_quotient_zpow_of_hom_comp + theorem quotient_group.hom_quotient_zpow_of_hom_comp_of_right_inverse + theorem quotient_group.hom_quotient_zpow_of_hom_id - theorem quotient_group.hom_quotient_zpow_of_hom_right_inverse 2022-05-19 10:20:40 18624ef feat(order/complete_lattice): add `Sup_diff_singleton_bot` etc (#14205) * add `Sup_diff_singleton_bot` and `Inf_diff_singleton_top`; * add `set.sUnion_diff_singleton_empty` and `set.sInter_diff_singleton_univ`. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.sInter_diff_singleton_univ + theorem set.sUnion_diff_singleton_empty Modified src/order/complete_lattice.lean + theorem Inf_diff_singleton_top + theorem Sup_diff_singleton_bot 2022-05-19 09:41:31 6906b6f feat(analysis/normed_space/pi_Lp): add missing nnnorm lemmas (#14221) This renames `pi_Lp.dist` to `pi_Lp.dist_eq` and `pi_Lp.edist` to `pi_Lp.edist_eq` to match `pi_Lp.norm_eq`. The `nndist` version of these lemmas is new. The `pi_Lp.norm_eq_of_L2` lemma was not stated at the correct generality, and has been moved to an earlier file where doing so is easier. The `nnnorm` version of this lemma is new. Also replaces some `∀` binders with `Π` to match the pretty-printer, and tidies some whitespace. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem euclidean_space.nnnorm_eq - theorem pi_Lp.norm_eq_of_L2 Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.dist_eq + theorem pi_Lp.edist_eq + theorem pi_Lp.nndist_eq + theorem pi_Lp.nnnorm_eq_of_L2 + theorem pi_Lp.norm_eq_of_L2 2022-05-19 05:25:12 ea3009f docs(category_theory/*): the last missing module docs (#14237) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/basic.lean 2022-05-19 03:48:08 923a14d chore(scripts): update nolints.txt (#14239) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2022-05-19 01:41:46 83285b2 refactor(set_theory/game/pgame): Rename `le_def_lf` → `le_iff_forall_lf` (#14206) One-sided variants of these have also been introduced. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/nim.lean Modified src/set_theory/game/pgame.lean - theorem pgame.le_def_lf + theorem pgame.le_iff_forall_lf + theorem pgame.le_of_forall_lf - theorem pgame.lf_def_le + theorem pgame.lf_iff_forall_le + theorem pgame.lf_of_forall_le Modified src/set_theory/surreal/basic.lean Modified src/set_theory/surreal/dyadic.lean 2022-05-19 00:34:01 cc74bcb feat(topology/algebra/module/basic): add `continuous_linear_map.apply_module` (#14223) This matches `linear_map.apply_module`, but additionally provides `has_continuous_const_smul`. This also adds the missing `continuous_linear_map.semiring` and `continuous_linear_map.monoid_with_zero` instances. ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean + def continuous_linear_map.to_linear_map_ring_hom 2022-05-18 23:17:05 76f9f45 feat(category_theory/limits): (co/bi)products over types with a unique term (#14191) ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.biproduct_unique_iso + def category_theory.limits.limit_bicone_of_unique Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.colimit_cocone_of_unique + def category_theory.limits.coproduct_unique_iso + def category_theory.limits.limit_cone_of_unique + def category_theory.limits.product_unique_iso 2022-05-18 22:19:04 c42cff1 doc(deprecated/*): all deprecated files now lint (#14233) I am happy to remove some nolints for you. ESTIMATED CHANGES Modified src/deprecated/group.lean Modified src/deprecated/subfield.lean Modified src/deprecated/subring.lean 2022-05-18 22:19:03 a5f4cf5 fix(algebra/ring_quot): fix a diamond in the int-smul action (#14226) We already handle the `nsmul` diamond correctly in the lines above ESTIMATED CHANGES Modified src/algebra/ring_quot.lean 2022-05-18 20:08:39 32700f5 refactor(*): `insert_singleton` → `pair` (#14210) We rename various theorems with `insert_singleton` in the name to the more sensible and searchable `pair`. We also golf `finset.pair_comm`. ESTIMATED CHANGES Modified src/data/finset/basic.lean - theorem finset.insert_singleton_comm - theorem finset.insert_singleton_self_eq + theorem finset.pair_comm + theorem finset.pair_self_eq Modified src/geometry/euclidean/basic.lean - theorem euclidean_geometry.cospherical_insert_singleton + theorem euclidean_geometry.cospherical_pair Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/monge_point.lean - theorem affine.simplex.affine_span_insert_singleton_eq_altitude_iff + theorem affine.simplex.affine_span_pair_eq_altitude_iff Modified src/group_theory/perm/support.lean Modified src/linear_algebra/affine_space/combination.lean - theorem finset.centroid_insert_singleton - theorem finset.centroid_insert_singleton_fin + theorem finset.centroid_pair + theorem finset.centroid_pair_fin Modified src/linear_algebra/affine_space/finite_dimensional.lean - theorem collinear_insert_singleton + theorem collinear_pair Modified src/number_theory/divisors.lean 2022-05-18 20:08:38 5fe43a9 feat(linear_algebra/trace): trace of tensor_products and hom_tensor_hom is an equivalence (#13728) ESTIMATED CHANGES Modified src/linear_algebra/contraction.lean + theorem dual_tensor_hom_equiv_of_basis_symm_cancel_left + theorem dual_tensor_hom_equiv_of_basis_symm_cancel_right + def hom_tensor_hom_equiv + theorem hom_tensor_hom_equiv_apply + theorem hom_tensor_hom_equiv_to_linear_map + theorem ltensor_hom_equiv_hom_ltensor_apply + theorem ltensor_hom_equiv_hom_ltensor_to_linear_map + theorem map_dual_tensor_hom + theorem rtensor_hom_equiv_hom_rtensor_apply + theorem rtensor_hom_equiv_hom_rtensor_to_linear_map Modified src/linear_algebra/tensor_product.lean + def tensor_product.ltensor_hom_to_hom_ltensor + theorem tensor_product.ltensor_hom_to_hom_ltensor_apply + def tensor_product.rtensor_hom_to_hom_rtensor + theorem tensor_product.rtensor_hom_to_hom_rtensor_apply Modified src/linear_algebra/trace.lean + theorem linear_map.trace_tensor_product' + theorem linear_map.trace_tensor_product 2022-05-18 18:01:54 259c951 doc(src/deprecated/*): add module docstrings (#14224) Although we don't ever import them now, I add module docstrings for a couple of deprecated files to make the linter happier. I also attempt to unify the style in the docstrings of all the deprecated files. ESTIMATED CHANGES Modified src/deprecated/group.lean Modified src/deprecated/ring.lean Modified src/deprecated/subfield.lean Modified src/deprecated/subgroup.lean Modified src/deprecated/submonoid.lean Modified src/deprecated/subring.lean 2022-05-18 18:01:53 4f31117 feat(data/set/basic): add `set.subset_range_iff_exists_image_eq` and `set.range_image` (#14203) * add `set.subset_range_iff_exists_image_eq` and `set.range_image`; * use the former to golf `set.can_lift` (name fixed from `set.set.can_lift`); * golf `set.exists_eq_singleton_iff_nonempty_subsingleton`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_image + theorem set.subset_range_iff_exists_image_eq 2022-05-18 16:04:05 470ddbd chore(analysis,topology): add missing ulift instances (#14217) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem ulift.algebra_map_eq + theorem ulift.down_algebra_map Modified src/analysis/normed/group/basic.lean + theorem ulift.nnnorm_def + theorem ulift.nnnorm_up + theorem ulift.norm_def + theorem ulift.norm_up Modified src/analysis/normed/normed_field.lean Modified src/analysis/normed_space/basic.lean Modified src/topology/metric_space/basic.lean + theorem ulift.dist_eq + theorem ulift.dist_up_up + theorem ulift.nndist_eq + theorem ulift.nndist_up_up Modified src/topology/metric_space/emetric_space.lean + theorem ulift.edist_eq + theorem ulift.edist_up_up 2022-05-18 16:04:04 503970d chore(data/fintype/basic): Better `fin` lemmas (#14200) Turn `finset.image` into `finset.map` and `insert` into `finset.cons` in the three lemmas relating `univ : finset (fin (n + 1))` and `univ : finset (fin n)`. Golf proofs involving the related big operators lemmas. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_empty + theorem finset.prod_of_empty Modified src/algebra/big_operators/fin.lean + theorem fin.prod_cons +/- theorem fin.prod_univ_succ_above Modified src/data/fin/tuple/nat_antidiagonal.lean Modified src/data/fintype/basic.lean Modified src/linear_algebra/linear_independent.lean 2022-05-18 16:04:03 c38ab35 feat(analysis/convex/combination): The convex hull of `s + t` (#14160) `convex_hull` distributes over pointwise addition of sets and commutes with pointwise scalar multiplication. Also delete `linear_map.image_convex_hull` because it duplicates `linear_map.convex_hull_image`. ESTIMATED CHANGES Modified src/analysis/convex/combination.lean + theorem convex_hull_add +/- theorem convex_hull_prod + theorem convex_hull_sub + theorem mk_mem_convex_hull_prod Modified src/analysis/convex/hull.lean +/- theorem convex.convex_hull_eq + theorem convex.convex_hull_subset_iff + theorem convex_hull_eq_Inter + theorem convex_hull_neg + theorem convex_hull_smul - theorem is_linear_map.image_convex_hull - theorem linear_map.image_convex_hull + theorem mem_convex_hull_iff 2022-05-18 14:08:52 cfedf1d feat(ring_theory/ideal/operations.lean): lemmas about coprime ideals (#14176) Generalises some lemmas from `ring_theory/coprime/lemmas.lean` to the case of non-principal ideals. ESTIMATED CHANGES Modified src/linear_algebra/dfinsupp.lean + theorem submodule.mem_supr_finset_iff_exists_sum Added src/ring_theory/coprime/ideal.lean + theorem ideal.supr_infi_eq_top_iff_pairwise Modified src/ring_theory/ideal/operations.lean + theorem ideal.infi_sup_eq_top + theorem ideal.mul_sup_eq_of_coprime_left + theorem ideal.mul_sup_eq_of_coprime_right + theorem ideal.pow_sup_eq_top + theorem ideal.pow_sup_pow_eq_top + theorem ideal.prod_sup_eq_top + theorem ideal.sup_infi_eq_top + theorem ideal.sup_mul_eq_of_coprime_left + theorem ideal.sup_mul_eq_of_coprime_right + theorem ideal.sup_pow_eq_top + theorem ideal.sup_prod_eq_top 2022-05-18 14:08:51 2c2d515 refactor(data/list/min_max): Generalise `list.argmin`/`list.argmax` to preorders (#13221) This PR generalises the contents of the `data/list/min_max` file from a `linear_order` down to a `preorder` with decidable `<`. Note that for this to work out, I have had to change the structure of the auxiliary function `argmax₂` to now mean `option.cases_on a (some b) (λ c, if f c < f b then some b else some c)`. This is because in the case of a preorder, `argmax₂` would perform the swap in the absence of the `≤` relation, which would result in a semi-random shuffle that doesn't look very `maximal`. ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean Modified src/data/list/min_max.lean + def list.arg_aux + theorem list.arg_aux_self +/- def list.argmax +/- theorem list.argmax_eq_none +/- theorem list.argmax_eq_some_iff +/- theorem list.argmax_mem +/- theorem list.argmax_singleton - theorem list.argmax_two_self - def list.argmax₂ +/- def list.argmin +/- theorem list.argmin_eq_none +/- theorem list.argmin_eq_some_iff - theorem list.argmin_le_of_mem +/- theorem list.argmin_mem + theorem list.foldl_arg_aux_eq_none - theorem list.foldl_argmax₂_eq_none + theorem list.foldr_max_of_ne_nil + theorem list.foldr_min_of_ne_nil +/- theorem list.index_of_argmax +/- theorem list.index_of_argmin - theorem list.le_argmax_of_mem +/- theorem list.le_maximum_of_mem' +/- theorem list.le_maximum_of_mem + theorem list.le_min_of_forall_le - theorem list.le_min_of_le_forall +/- theorem list.le_minimum_of_mem' + theorem list.le_of_mem_argmax + theorem list.le_of_mem_argmin +/- theorem list.max_le_of_forall_le - theorem list.max_nat_le_of_forall_le - theorem list.maximum_eq_coe_foldr_max_of_ne_nil +/- theorem list.maximum_eq_coe_iff - theorem list.maximum_nat_eq_coe_foldr_max_of_ne_nil +/- theorem list.mem_argmax_iff +/- theorem list.mem_argmin_iff - theorem list.minimum_eq_coe_foldr_min_of_ne_nil +/- theorem list.minimum_eq_coe_iff +/- theorem list.minimum_le_of_mem + theorem list.minimum_not_lt_of_mem + theorem list.not_lt_maximum_of_mem' + theorem list.not_lt_maximum_of_mem + theorem list.not_lt_minimum_of_mem' + theorem list.not_lt_of_mem_argmax + theorem list.not_lt_of_mem_argmin + theorem list.not_of_mem_foldl_arg_aux 2022-05-18 13:10:54 54773fc feat(topology/algebra/module/multilinear): add `continuous_multilinear_map.smul_right` (#14218) See https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Question.20about.20.60formal_multilinear_series.60 for one use case ESTIMATED CHANGES Modified src/topology/algebra/module/multilinear.lean + def continuous_multilinear_map.smul_right + theorem continuous_multilinear_map.smul_right_apply 2022-05-18 12:02:21 9dc9c3e feat(logic/lemmas): Distributivity of `if then else` (#14146) Distributivity laws for `dite` and `ite`. ESTIMATED CHANGES Added src/logic/lemmas.lean + theorem dite_dite_distrib_left + theorem dite_dite_distrib_right + theorem dite_ite_distrib_left + theorem dite_ite_distrib_right + theorem ite_dite_distrib_left + theorem ite_dite_distrib_right + theorem ite_ite_distrib_left + theorem ite_ite_distrib_right 2022-05-18 10:31:07 ae6a7c3 feat(linear_algebra/multilinear/finite_dimensional): generalize to finite and free (#14199) This also renames some `free` and `finite` instances which had garbage names. ESTIMATED CHANGES Modified src/linear_algebra/free_module/basic.lean Modified src/linear_algebra/free_module/finite/basic.lean Modified src/linear_algebra/multilinear/finite_dimensional.lean Modified src/ring_theory/noetherian.lean - theorem ring.is_noetherian_of_zero_eq_one 2022-05-18 07:53:52 59facea chore(data/multiset/basic): `∅` → `0` (#14211) It's preferred to use `0` instead of `∅` throughout the multiset API. ESTIMATED CHANGES Modified src/data/multiset/basic.lean +/- theorem multiset.pair_comm 2022-05-18 04:57:17 d08f734 chore(measure_theory/function/strongly_measurable): golf some proofs (#14209) ESTIMATED CHANGES Modified src/measure_theory/function/strongly_measurable.lean 2022-05-18 02:51:15 50696a8 chore(data/multiset/basic): Inline instances (#14208) We inline various protected theorems into the `ordered_cancel_add_comm_monoid` instance. We also declare `covariant_class` and `contravariant_class` instances, which make further theorems redundant. ESTIMATED CHANGES Modified src/data/multiset/basic.lean 2022-05-18 02:13:32 9f6f605 feat(data/polynomial/mirror): Central coefficient of `p * p.mirror` (#14096) This PR adds a lemma `(p * p.mirror).coeff (p.nat_degree + p.nat_trailing_degree) = p.sum (λ n, (^ 2))`. I also rearranged the file by assumptions on the ring `R`. ESTIMATED CHANGES Modified src/data/polynomial/mirror.lean + theorem polynomial.coeff_mul_mirror +/- theorem polynomial.irreducible_of_mirror +/- theorem polynomial.mirror_mul_of_domain +/- theorem polynomial.mirror_neg +/- theorem polynomial.mirror_smul 2022-05-18 01:20:31 f48cbb1 feat(category_theory/limits): reindexing (co/bi)products (#14193) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.biproduct.reindex Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.pi.reindex + theorem category_theory.limits.pi.reindex_hom_π + theorem category_theory.limits.pi.reindex_inv_π + def category_theory.limits.sigma.reindex + theorem category_theory.limits.sigma.ι_reindex_hom + theorem category_theory.limits.sigma.ι_reindex_inv 2022-05-17 23:22:58 ca5930d feat(data/multiset/basic): `pair_comm` (#14207) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.pair_comm 2022-05-17 23:22:57 6b291d7 feat(analysis/special_functions/trigonometric/arctan): add `real.range_arctan` (#14204) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/arctan.lean + theorem real.range_arctan 2022-05-17 23:22:56 632fef3 feat(analysis/normed_space/M_structure): Define L-projections, show they form a Boolean algebra (#12173) A continuous projection P on a normed space X is said to be an L-projection if, for all `x` in `X`, ``` ∥x∥ = ∥P x∥ + ∥(1-P) x∥. ``` The range of an L-projection is said to be an L-summand of X. A continuous projection P on a normed space X is said to be an M-projection if, for all `x` in `X`, ``` ∥x∥ = max(∥P x∥,∥(1-P) x∥). ``` The range of an M-projection is said to be an M-summand of X. The L-projections and M-projections form Boolean algebras. When X is a Banach space, the Boolean algebra of L-projections is complete. Let `X` be a normed space with dual `X^*`. A closed subspace `M` of `X` is said to be an M-ideal if the topological annihilator `M^∘` is an L-summand of `X^*`. M-ideal, M-summands and L-summands were introduced by Alfsen and Effros to study the structure of general Banach spaces. When `A` is a JB*-triple, the M-ideals of `A` are exactly the norm-closed ideals of `A`. When `A` is a JBW*-triple with predual `X`, the M-summands of `A` are exactly the weak*-closed ideals, and their pre-duals can be identified with the L-summands of `X`. In the special case when `A` is a C*-algebra, the M-ideals are exactly the norm-closed two-sided ideals of `A`, when `A` is also a W*-algebra the M-summands are exactly the weak*-closed two-sided ideals of `A`. This initial PR limits itself to showing that the L-projections form a Boolean algebra. The approach followed is based on that used in `measure_theory.measurable_space`. The equivalent result for M-projections can be established by a similar argument or by a duality result (to be established). However, I thought it best to seek feedback before proceeding further. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/ring/idempotents.lean Added src/analysis/normed_space/M_structure.lean + theorem is_Lprojection.Lcomplement + theorem is_Lprojection.Lcomplement_iff + theorem is_Lprojection.coe_bot + theorem is_Lprojection.coe_compl + theorem is_Lprojection.coe_inf + theorem is_Lprojection.coe_one + theorem is_Lprojection.coe_sdiff + theorem is_Lprojection.coe_sup + theorem is_Lprojection.coe_top + theorem is_Lprojection.coe_zero + theorem is_Lprojection.commute + theorem is_Lprojection.compl_mul_left + theorem is_Lprojection.compl_orthog + theorem is_Lprojection.distrib_lattice_lemma + theorem is_Lprojection.join + theorem is_Lprojection.le_def + theorem is_Lprojection.mul + structure is_Lprojection + structure is_Mprojection 2022-05-17 21:17:37 0afb90b refactor(algebra/parity): Generalize to division monoids (#14187) Generalize lemmas about `is_square`, `even` and `odd`. Improve dot notation. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean +/- def mul_equiv.inv' Modified src/algebra/parity.lean +/- theorem even.add_odd +/- theorem even.neg_one_zpow +/- theorem even.neg_zpow + theorem even.tsub - theorem even.tsub_even +/- theorem even_abs + theorem is_square.div - theorem is_square.div_is_square + theorem is_square.mul - theorem is_square.mul_is_square +/- def is_square +/- theorem is_square_iff_exists_sq +/- theorem is_square_inv +/- theorem is_square_mul_self +/- theorem is_square_op_iff +/- theorem odd.add_odd + theorem odd.map + theorem odd.mul - theorem odd.mul_odd +/- theorem odd_abs +/- theorem odd_neg - theorem ring_hom.odd Modified src/analysis/convex/specific_functions.lean 2022-05-17 20:04:43 2158193 feat(topology/instances/matrix): add topological/continuous instances (#14202) For completeness, `has_continuous_add` and `topological_add_group` instances are added to matrices, as pi types already have these. Additionally, `has_continuous_const_smul` and `has_continuous_smul` matrix instances have been made more generic, allowing differing index types. ESTIMATED CHANGES Modified src/topology/instances/matrix.lean 2022-05-17 18:49:25 1f0f981 chore(linear_algebra/multilinear/basic): move finite-dimensionality to a new file (#14198) `linear_algebra.matrix.to_lin` pulls in a lot of imports that appear to slow things down considerably in downstream files. The proof is moved without modification. ESTIMATED CHANGES Modified src/linear_algebra/matrix/charpoly/minpoly.lean Modified src/linear_algebra/multilinear/basic.lean Added src/linear_algebra/multilinear/finite_dimensional.lean 2022-05-17 17:18:53 ae6f59d feat(analysis/locally_convex/with_seminorms): pull back `with_seminorms` along a linear inducing (#13549) This show that, if `f : E -> F` is linear and the topology on `F` is induced by a family of seminorms `p`, then the topology induced on `E` through `f` is induced by the seminorms `(p i) ∘ f`. - [x] depends on: #13547 ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean + theorem inducing.with_seminorms + theorem linear_map.with_seminorms_induced + def seminorm_family.comp + theorem seminorm_family.comp_apply + theorem seminorm_family.finset_sup_comp 2022-05-17 17:18:52 ba38b47 feat(group_theory/perm/list): Add missing `form_perm` lemmas (#13218) ESTIMATED CHANGES Modified src/group_theory/perm/list.lean + theorem list.form_perm_mem_iff_mem + theorem list.mem_of_form_perm_apply_mem + theorem list.mem_of_form_perm_apply_ne 2022-05-17 15:35:00 da201ad chore(set_theory/ordinal/{basic, arithmetic}): Inline instances (#14076) We inline various definition in the `ordinal` instances, thus avoiding protected (or unprotected!) definitions that are only used once. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean Modified src/set_theory/ordinal/arithmetic.lean - def ordinal.opow + theorem ordinal.opow_def - def ordinal.sub Modified src/set_theory/ordinal/basic.lean - theorem ordinal.le_total - def ordinal.lt Modified src/set_theory/ordinal/notation.lean +/- theorem nonote.repr_opow 2022-05-17 15:34:59 600d8ea feat(topology/metric_space): define a pseudo metrizable space (#14053) * define `topological_space.pseudo_metrizable_space`; * copy API from `topological_space.metrizable_space`; * add `pi` instances; * use `X`, `Y` instead of `α`, `β`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + def inducing.comap_pseudo_metric_space + def pseudo_metric_space.replace_topology + theorem pseudo_metric_space.replace_topology_eq Modified src/topology/metric_space/metrizable.lean +/- theorem embedding.metrizable_space + theorem inducing.pseudo_metrizable_space 2022-05-17 15:34:57 e2eea55 feat(algebra/homology): short exact sequences (#14009) Migrating from LTE. (This is all Johan and Andrew's work, I think, I just tidied up some.) Please feel free to push changes directly without consulting me. :-) ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Added src/algebra/homology/short_exact/abelian.lean + theorem category_theory.is_iso_of_short_exact_of_is_iso_of_is_iso + def category_theory.left_split.splitting + def category_theory.splitting.mk' Added src/algebra/homology/short_exact/preadditive.lean + theorem category_theory.exact_inl_snd + theorem category_theory.exact_inr_fst + theorem category_theory.exact_of_split + theorem category_theory.left_split.short_exact + structure category_theory.left_split + theorem category_theory.right_split.short_exact + structure category_theory.right_split + structure category_theory.short_exact + theorem category_theory.split.exact + theorem category_theory.split.left_split + theorem category_theory.split.map + theorem category_theory.split.right_split + theorem category_theory.split.short_exact + structure category_theory.split + theorem category_theory.splitting.comp_eq_zero + theorem category_theory.splitting.inl_comp_iso_eq + theorem category_theory.splitting.inr_iso_inv + theorem category_theory.splitting.iso_comp_eq_snd + theorem category_theory.splitting.iso_hom_fst + def category_theory.splitting.retraction + theorem category_theory.splitting.retraction_ι_eq_id_sub + def category_theory.splitting.section + theorem category_theory.splitting.section_retraction + theorem category_theory.splitting.section_π + theorem category_theory.splitting.short_exact + theorem category_theory.splitting.split + theorem category_theory.splitting.split_add + def category_theory.splitting.splitting_of_is_iso_zero + theorem category_theory.splitting.splittings_comm + theorem category_theory.splitting.ι_retraction + theorem category_theory.splitting.π_section_eq_id_sub + structure category_theory.splitting Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.iso_biprod_zero + def category_theory.limits.iso_zero_biprod Modified src/category_theory/limits/shapes/zero_objects.lean 2022-05-17 13:06:20 3d27911 feat(data/zmod/quotient): The minimal period equals the cardinality of the orbit (#14183) This PR adds a lemma stating that `minimal_period ((•) a) b = card (orbit (zpowers a) b)`. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean + theorem mul_action.minimal_period_eq_card +/- theorem mul_action.orbit_zpowers_equiv_symm_apply 2022-05-17 13:06:19 3c87882 feat(number_theory/arithmetic_function): map a multiplicative function across a product (#14180) ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime.symmetric Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.is_multiplicative.map_prod 2022-05-17 13:06:18 beee9ec feat(data/complex): real part of sum (#14177) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.im_sum +/- theorem complex.of_real_prod +/- theorem complex.of_real_sum + theorem complex.re_sum 2022-05-17 13:06:17 d3e3eb8 chore(algebra/monoid_algebra): clean up some bad decidable arguments (#14175) Some of these statements contained classical decidable instances rather than generalized ones. By removing `open_locale classical`, these become easy to find. ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/algebra/monoid_algebra/basic.lean +/- theorem add_monoid_algebra.mul_apply +/- theorem add_monoid_algebra.support_mul +/- theorem monoid_algebra.mul_apply +/- theorem monoid_algebra.support_mul Modified src/data/polynomial/basic.lean 2022-05-17 13:06:16 7db6ca9 test({data/{finset,set},order/filter}/pointwise): Ensure priority of the `ℕ` and `ℤ` actions (#14166) Each of `set`, `finset`, `filter` creates (non propeq) diamonds with the fundamental `ℕ` and `ℤ` actions because of instances of the form `has_scalar α β → has_scalar α (set β)`. For example, `{2, 3}^2` could well be `{4, 9}` or `{4, 6, 9}`. The instances involved are all too important to be discarded, so we decide to live with the diamonds but give priority to the `ℕ` and `ℤ` actions. The reasoning for the priority is that those can't easily be spelled out, while the derived actions can. For example, `s.image ((•) 2)` easily replaces `2 • s`. Incidentally, additive combinatorics uses extensively the `ℕ` action. This PR adds both a library note and tests to ensure this stays the case. It also fixes the additive `set` and `filter` versions, which were not conforming to the test. ESTIMATED CHANGES Modified src/data/finset/pointwise.lean Modified src/data/set/pointwise.lean Modified src/order/filter/pointwise.lean Added test/pointwise_nsmul.lean 2022-05-17 13:06:14 f33b084 feat(topology/separation): generalize a lemma (#14154) * generalize `nhds_eq_nhds_iff` from a `[t1_space α]` to a `[t0_space α]`; * relate `indistinguishable` to `nhds`. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem nhds_def' Modified src/topology/separation.lean +/- theorem indistinguishable.eq +/- theorem indistinguishable_iff_closed +/- theorem indistinguishable_iff_closure + theorem indistinguishable_iff_nhds_eq +/- theorem nhds_eq_nhds_iff 2022-05-17 13:06:13 65bf134 split(algebra/hom/ring): Split off `algebra.ring.basic` (#14144) Move `non_unital_ring_hom` and `ring_hom` to a new file `algebra.hom.ring`. Crediting * Amelia for #1305 * Jireh for #13430 ESTIMATED CHANGES Modified src/algebra/field/basic.lean Modified src/algebra/group_power/basic.lean Added src/algebra/hom/ring.lean + theorem add_monoid_hom.coe_add_monoid_hom_mk_ring_hom_of_mul_self_of_two_ne_zero + theorem add_monoid_hom.coe_fn_mk_ring_hom_of_mul_self_of_two_ne_zero + def add_monoid_hom.mk_ring_hom_of_mul_self_of_two_ne_zero + theorem map_bit1 + theorem non_unital_ring_hom.cancel_left + theorem non_unital_ring_hom.cancel_right + theorem non_unital_ring_hom.coe_add_monoid_hom_id + theorem non_unital_ring_hom.coe_add_monoid_hom_injective + theorem non_unital_ring_hom.coe_add_monoid_hom_mk + theorem non_unital_ring_hom.coe_coe + theorem non_unital_ring_hom.coe_comp + theorem non_unital_ring_hom.coe_comp_add_monoid_hom + theorem non_unital_ring_hom.coe_comp_mul_hom + theorem non_unital_ring_hom.coe_mk + theorem non_unital_ring_hom.coe_mul + theorem non_unital_ring_hom.coe_mul_hom_id + theorem non_unital_ring_hom.coe_mul_hom_injective + theorem non_unital_ring_hom.coe_mul_hom_mk + theorem non_unital_ring_hom.coe_one + theorem non_unital_ring_hom.coe_to_add_monoid_hom + theorem non_unital_ring_hom.coe_to_mul_hom + theorem non_unital_ring_hom.coe_zero + def non_unital_ring_hom.comp + theorem non_unital_ring_hom.comp_apply + theorem non_unital_ring_hom.comp_assoc + theorem non_unital_ring_hom.comp_id + theorem non_unital_ring_hom.comp_zero + theorem non_unital_ring_hom.ext + theorem non_unital_ring_hom.ext_iff + theorem non_unital_ring_hom.id_apply + theorem non_unital_ring_hom.id_comp + theorem non_unital_ring_hom.mk_coe + theorem non_unital_ring_hom.mul_def + theorem non_unital_ring_hom.one_def + theorem non_unital_ring_hom.to_fun_eq_coe + theorem non_unital_ring_hom.zero_apply + theorem non_unital_ring_hom.zero_comp + structure non_unital_ring_hom + theorem ring_hom.cancel_left + theorem ring_hom.cancel_right + theorem ring_hom.codomain_trivial_iff_map_one_eq_zero + theorem ring_hom.codomain_trivial_iff_range_eq_singleton_zero + theorem ring_hom.codomain_trivial_iff_range_trivial + theorem ring_hom.coe_add_monoid_hom + theorem ring_hom.coe_add_monoid_hom_id + theorem ring_hom.coe_add_monoid_hom_injective + theorem ring_hom.coe_add_monoid_hom_mk + theorem ring_hom.coe_coe + theorem ring_hom.coe_comp + theorem ring_hom.coe_inj + theorem ring_hom.coe_mk + theorem ring_hom.coe_monoid_hom + theorem ring_hom.coe_monoid_hom_id + theorem ring_hom.coe_monoid_hom_injective + theorem ring_hom.coe_monoid_hom_mk + theorem ring_hom.coe_mul + theorem ring_hom.coe_one + def ring_hom.comp + theorem ring_hom.comp_apply + theorem ring_hom.comp_assoc + theorem ring_hom.comp_id + theorem ring_hom.congr_arg + theorem ring_hom.congr_fun + def ring_hom.copy + theorem ring_hom.domain_nontrivial + theorem ring_hom.ext + theorem ring_hom.ext_iff + def ring_hom.id + theorem ring_hom.id_apply + theorem ring_hom.id_comp + theorem ring_hom.is_unit_map + theorem ring_hom.map_one_ne_zero + def ring_hom.mk' + theorem ring_hom.mk_coe + theorem ring_hom.mul_def + theorem ring_hom.one_def + theorem ring_hom.to_add_monoid_hom_eq_coe + theorem ring_hom.to_fun_eq_coe + theorem ring_hom.to_monoid_hom_eq_coe + theorem ring_hom.to_monoid_with_zero_hom_eq_coe + structure ring_hom Modified src/algebra/ring/basic.lean - theorem add_monoid_hom.coe_add_monoid_hom_mk_ring_hom_of_mul_self_of_two_ne_zero - theorem add_monoid_hom.coe_fn_mk_ring_hom_of_mul_self_of_two_ne_zero - def add_monoid_hom.mk_ring_hom_of_mul_self_of_two_ne_zero - theorem map_bit1 - theorem non_unital_ring_hom.cancel_left - theorem non_unital_ring_hom.cancel_right - theorem non_unital_ring_hom.coe_add_monoid_hom_id - theorem non_unital_ring_hom.coe_add_monoid_hom_injective - theorem non_unital_ring_hom.coe_add_monoid_hom_mk - theorem non_unital_ring_hom.coe_coe - theorem non_unital_ring_hom.coe_comp - theorem non_unital_ring_hom.coe_comp_add_monoid_hom - theorem non_unital_ring_hom.coe_comp_mul_hom - theorem non_unital_ring_hom.coe_mk - theorem non_unital_ring_hom.coe_mul - theorem non_unital_ring_hom.coe_mul_hom_id - theorem non_unital_ring_hom.coe_mul_hom_injective - theorem non_unital_ring_hom.coe_mul_hom_mk - theorem non_unital_ring_hom.coe_one - theorem non_unital_ring_hom.coe_to_add_monoid_hom - theorem non_unital_ring_hom.coe_to_mul_hom - theorem non_unital_ring_hom.coe_zero - def non_unital_ring_hom.comp - theorem non_unital_ring_hom.comp_apply - theorem non_unital_ring_hom.comp_assoc - theorem non_unital_ring_hom.comp_id - theorem non_unital_ring_hom.comp_zero - theorem non_unital_ring_hom.ext - theorem non_unital_ring_hom.ext_iff - theorem non_unital_ring_hom.id_apply - theorem non_unital_ring_hom.id_comp - theorem non_unital_ring_hom.mk_coe - theorem non_unital_ring_hom.mul_def - theorem non_unital_ring_hom.one_def - theorem non_unital_ring_hom.to_fun_eq_coe - theorem non_unital_ring_hom.zero_apply - theorem non_unital_ring_hom.zero_comp - structure non_unital_ring_hom - theorem ring_hom.cancel_left - theorem ring_hom.cancel_right - theorem ring_hom.codomain_trivial_iff_map_one_eq_zero - theorem ring_hom.codomain_trivial_iff_range_eq_singleton_zero - theorem ring_hom.codomain_trivial_iff_range_trivial - theorem ring_hom.coe_add_monoid_hom - theorem ring_hom.coe_add_monoid_hom_id - theorem ring_hom.coe_add_monoid_hom_injective - theorem ring_hom.coe_add_monoid_hom_mk - theorem ring_hom.coe_coe - theorem ring_hom.coe_comp - theorem ring_hom.coe_inj - theorem ring_hom.coe_mk - theorem ring_hom.coe_monoid_hom - theorem ring_hom.coe_monoid_hom_id - theorem ring_hom.coe_monoid_hom_injective - theorem ring_hom.coe_monoid_hom_mk - theorem ring_hom.coe_mul - theorem ring_hom.coe_one - def ring_hom.comp - theorem ring_hom.comp_apply - theorem ring_hom.comp_assoc - theorem ring_hom.comp_id - theorem ring_hom.congr_arg - theorem ring_hom.congr_fun - def ring_hom.copy - theorem ring_hom.domain_nontrivial - theorem ring_hom.ext - theorem ring_hom.ext_iff - def ring_hom.id - theorem ring_hom.id_apply - theorem ring_hom.id_comp - theorem ring_hom.is_unit_map - theorem ring_hom.map_dvd - theorem ring_hom.map_one_ne_zero - def ring_hom.mk' - theorem ring_hom.mk_coe - theorem ring_hom.mul_def - theorem ring_hom.one_def - theorem ring_hom.to_add_monoid_hom_eq_coe - theorem ring_hom.to_fun_eq_coe - theorem ring_hom.to_monoid_hom_eq_coe - theorem ring_hom.to_monoid_with_zero_hom_eq_coe - structure ring_hom +/- theorem two_dvd_bit0 Modified src/algebra/ring/opposite.lean Modified src/algebra/ring/pi.lean Modified src/data/nat/cast.lean Modified src/deprecated/group.lean 2022-05-17 13:06:12 4ae5e7a feat(data/polynomial/laurent): laurent polynomials are a module over polynomials (#14121) This PR only introduces the instance `module R[X] R[T;T⁻¹]`. I isolated it from the rest, since I want to give special attention to whether there might be any issues declaring it a global instance and whether it should be localized or even simply a def. Edit: Eric seems happy with this instance! ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean 2022-05-17 13:06:11 46c42cc refactor(algebra/geom_sum): remove definition (#14120) There's no need to have a separate definition `geom_sum := ∑ i in range n, x ^ i`. Instead it's better to just write the lemmas about the sum itself: that way `simp` lemmas fire "in the wild", without needing to rewrite expression in terms of `geom_sum` manually. ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean Modified docs/100.yaml Modified src/algebra/geom_sum.lean - def geom_sum - theorem geom_sum_def +/- theorem geom_sum_one +/- theorem geom_sum_pos +/- theorem geom_sum_succ' +/- theorem geom_sum_succ +/- theorem geom_sum_two +/- theorem geom_sum_zero - def geom_sum₂ - theorem geom_sum₂_def - theorem geom_sum₂_one +/- theorem geom_sum₂_with_one - theorem geom_sum₂_zero +/- theorem neg_one_geom_sum +/- theorem one_geom_sum +/- theorem zero_geom_sum Modified src/analysis/normed_space/units.lean Modified src/analysis/special_functions/log/deriv.lean Modified src/analysis/specific_limits/basic.lean Modified src/analysis/specific_limits/normed.lean Modified src/combinatorics/colex.lean Modified src/data/complex/exponential.lean Modified src/data/polynomial/eval.lean +/- theorem polynomial.eval_geom_sum Modified src/data/real/pi/leibniz.lean Modified src/linear_algebra/adic_completion.lean Modified src/number_theory/bernoulli.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean Modified src/ring_theory/polynomial/eisenstein.lean 2022-05-17 11:00:13 2370d10 chore(algebra/order/monoid): golf an instance (#14184) Move two instances below to reuse a proof. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean 2022-05-17 03:48:46 f1c08cd chore(scripts): update nolints.txt (#14185) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-05-17 00:02:01 737784e refactor(algebra/{group_power/{basic,lemmas},group_with_zero/power}): Generalize lemmas to division monoids (#14102) Generalize `group` and `group_with_zero` lemmas about `zpow` to `division_monoid`. Lemmas are renamed because one of the `group` or `group_with_zero` name has to go. It's just a matter of removing the suffixed `₀`. Lemma renames ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/field_power.lean - theorem zpow_bit0_neg Modified src/algebra/group/basic.lean + theorem bit0_neg Modified src/algebra/group_power/basic.lean - theorem commute.mul_zpow + theorem div_pow +/- theorem div_zpow +/- theorem inv_pow +/- theorem inv_pow_sub + theorem inv_zpow' +/- theorem inv_zpow +/- theorem mul_zpow +/- theorem mul_zpow_neg_one + theorem one_div_pow + theorem one_div_zpow +/- theorem one_zpow +/- theorem pow_inv_comm +/- theorem pow_sub +/- def zpow_group_hom +/- theorem zpow_neg Modified src/algebra/group_power/lemmas.lean + theorem zpow_bit0' +/- theorem zpow_bit0 + theorem zpow_bit0_neg +/- theorem zpow_mul' +/- theorem zpow_mul +/- theorem zpow_mul_comm Modified src/algebra/group_with_zero/power.lean - theorem commute.mul_zpow₀ - theorem div_pow - theorem div_zpow₀ - theorem inv_pow₀ - theorem inv_zpow' - theorem inv_zpow₀ - theorem mul_zpow_neg_one₀ - theorem mul_zpow₀ - theorem one_div_pow - theorem one_div_zpow - theorem one_zpow₀ - theorem zpow_bit0' - theorem zpow_bit0₀ - def zpow_group_hom₀ - theorem zpow_mul₀' - theorem zpow_mul₀ - theorem zpow_neg_one₀ - theorem zpow_neg₀ Modified src/algebra/order/archimedean.lean Modified src/algebra/parity.lean +/- theorem even.neg_one_zpow +/- theorem odd.neg_one_zpow Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/complex/liouville.lean Modified src/analysis/fourier.lean Modified src/analysis/hofer.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/specific_limits/floor_pow.lean Modified src/analysis/specific_limits/normed.lean Modified src/data/complex/exponential.lean Modified src/data/real/ennreal.lean Modified src/field_theory/perfect_closure.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/number_theory/liouville/liouville_constant.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/probability/variance.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/metric_space/pi_nat.lean 2022-05-16 16:38:19 89f2760 feat(number_theory/legendre_symbol/*): move characters on `zmod n` to new file, add API, improve a proof (#14178) This is another "administrative" PR with the goal to have a better file structure. It moves the section `quad_char_mod_p` from `quadratic_char.lean` to a new file `zmod_char.lean`. It also adds some API lemmas for `χ₈` and `χ₈'` (which will be useful when dealing with the value of quadratic characters at 2 and -2), and I have used the opportunity to shorten the proof of `χ₄_eq_neg_one_pow`. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/quadratic_char.lean - def zmod.χ₄ - theorem zmod.χ₄_eq_neg_one_pow - theorem zmod.χ₄_int_eq_if_mod_four - theorem zmod.χ₄_nat_eq_if_mod_four - def zmod.χ₈' - def zmod.χ₈ Added src/number_theory/legendre_symbol/zmod_char.lean + def zmod.χ₄ + theorem zmod.χ₄_eq_neg_one_pow + theorem zmod.χ₄_int_eq_if_mod_four + theorem zmod.χ₄_nat_eq_if_mod_four + theorem zmod.χ₄_trichotomy + def zmod.χ₈' + theorem zmod.χ₈'_eq_χ₄_mul_χ₈ + theorem zmod.χ₈'_int_eq_if_mod_eight + theorem zmod.χ₈'_int_eq_χ₄_mul_χ₈ + theorem zmod.χ₈'_nat_eq_if_mod_eight + theorem zmod.χ₈'_trichotomy + def zmod.χ₈ + theorem zmod.χ₈_int_eq_if_mod_eight + theorem zmod.χ₈_nat_eq_if_mod_eight + theorem zmod.χ₈_trichotomy 2022-05-16 15:52:19 93dca41 chore(geometry/manifold/algebra/left_invariant_derivation): golf some proofs (#14172) The `simp only` had a bunch of lemmas that weren't used. ESTIMATED CHANGES Modified src/geometry/manifold/algebra/left_invariant_derivation.lean 2022-05-16 13:42:53 4586a97 refactor(data/pi/lex): Use `lex`, provide notation (#14164) Delete `pilex ι β` in favor of `lex (Π i, β i)` which we provide `Πₗ i, β i` notation for. ESTIMATED CHANGES Modified src/combinatorics/colex.lean Modified src/data/list/lex.lean Modified src/data/pi/lex.lean + theorem pi.lex.le_of_forall_le - def pi.lex + theorem pi.of_lex_apply + theorem pi.to_lex_apply - theorem pilex.le_of_forall_le - def pilex Modified src/data/prod/lex.lean Modified src/data/psigma/order.lean Modified src/data/sigma/order.lean 2022-05-16 13:42:52 009669c feat(data/bool/basic): Kaminski's equation (#14159) `bool.apply_apply_apply : ∀ (f : bool → bool) (x : bool), f (f (f x)) = f x` ESTIMATED CHANGES Modified src/data/bool/basic.lean + theorem bool.apply_apply_apply 2022-05-16 13:42:51 909b673 split(data/set/semiring): Split off `data.set.pointwise` (#14145) Move `set_semiring` to a new file `data.set.semiring`. Crediting Floris for #3240 ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/data/set/pointwise.lean - theorem set.down_ssubset_down - theorem set.down_subset_down - def set.image_hom - theorem set.up_le_up - theorem set.up_lt_up Added src/data/set/semiring.lean + theorem set_semiring.down_ssubset_down + theorem set_semiring.down_subset_down + def set_semiring.image_hom + theorem set_semiring.up_le_up + theorem set_semiring.up_lt_up 2022-05-16 13:42:49 a9e74ab feat(order/filter/at_top_bot): use weaker TC assumptions, add lemmas (#14105) * add `filter.eventually_gt_of_tendsto_at_top`, `filter.eventually_ne_at_bot`, `filter.eventually_lt_of_tendsto_at_bot`; * generalize `filter.eventually_ne_of_tendsto_at_top` and `filter.eventually_ne_of_tendsto_at_bot` from nontrivial ordered (semi)rings to preorders with no maximal/minimal elements. ESTIMATED CHANGES Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/normed/group/basic.lean Modified src/order/filter/at_top_bot.lean + theorem filter.eventually_ne_at_bot - theorem filter.eventually_ne_of_tendsto_at_bot - theorem filter.eventually_ne_of_tendsto_at_top + theorem filter.tendsto.eventually_ge_at_top + theorem filter.tendsto.eventually_gt_at_top + theorem filter.tendsto.eventually_le_at_bot + theorem filter.tendsto.eventually_lt_at_bot + theorem filter.tendsto.eventually_ne_at_bot + theorem filter.tendsto.eventually_ne_at_top 2022-05-16 11:34:45 844a4f7 refactor(algebra/hom/group): Generalize `map_inv` to division monoids (#14134) A minor change with unexpected instance synthesis breakage. A good deal of dot notation on `monoid_hom.map_inv` breaks, along with a few uses of `map_inv`. Expliciting the type fixes them all, but this is still quite concerning. ESTIMATED CHANGES Modified src/algebra/group/ext.lean Modified src/algebra/hom/equiv.lean - theorem units.coe_inv Modified src/algebra/hom/group.lean +/- theorem map_div' +/- theorem map_div +/- theorem map_inv +/- theorem map_mul_inv +/- theorem map_zpow +/- theorem map_zsmul Modified src/algebra/hom/units.lean + theorem units.coe_inv +/- theorem units.coe_zpow Modified src/analysis/normed/group/hom_completion.lean Modified src/category_theory/linear/linear_functor.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/functor_category.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean 2022-05-16 11:34:44 90659cb fix(tactic/core): Make the `classical` tactic behave like `open_locale classical` (#14122) This renames the existing `classical` tactic to `classical!`, and adds a new `classical` tactic that is equivalent to `open_locale classical`. Comparing the effects of these: ```lean import tactic.interactive import tactic.localized -- this uses the noncomputable instance noncomputable def foo : decidable_eq ℕ := λ m n, begin classical!, apply_instance, end def bar : decidable_eq ℕ := λ m n, begin classical, apply_instance, end section open_locale classical def baz : decidable_eq ℕ := λ m n, by apply_instance end example : baz = bar := rfl ``` In a few places `classical` was actually just being used as a `resetI`. Only a very small number of uses of `classical` actually needed the more aggressive `classical!` (there are roughtly 500 uses in total); while a number of `congr`s can be eliminated with this change. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/category_theory/category/PartialFun.lean Modified src/combinatorics/hall/basic.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/combinatorics/simple_graph/inc_matrix.lean Modified src/data/fintype/basic.lean Modified src/data/set/pointwise.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/free_product.lean Modified src/group_theory/order_of_element.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/tactic/tauto.lean 2022-05-16 09:19:06 df64e5e chore(set_theory/game/pgame): minor golf (#14171) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-05-16 09:19:05 f4c67ee chore(group_theory/specific_groups/cyclic): golf `card_order_of_eq_totient_aux₁` and `card_order_of_eq_totient_aux₂` (#14161) Re-writing the proofs of `card_order_of_eq_totient_aux₁` and `card_order_of_eq_totient_aux₂` to use the new `sum_totient` introduced in #14007, and golfing them. ESTIMATED CHANGES Modified src/group_theory/specific_groups/cyclic.lean 2022-05-16 09:19:04 a5975e7 feat(data/int/basic): add theorem `int.div_mod_unique` (#14158) add the `int` version of `div_mod_unique`. ESTIMATED CHANGES Modified src/data/int/basic.lean 2022-05-16 09:19:03 f7a7c27 chore(ring_theory/ideal/local_ring): golf some proofs, add missing lemma (#14157) ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem units.eq_iff_inv_mul +/- theorem units.inv_eq_of_mul_eq_one_right Modified src/ring_theory/ideal/local_ring.lean 2022-05-16 09:19:01 55b31e0 feat(data/zmod/quotient): `orbit (zpowers a) b` is a cycle of order `minimal_period ((•) a) b` (#14124) This PR applies the orbit-stabilizer theorem to the action of a cyclic subgroup. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean + theorem mul_action.orbit_zpowers_equiv_symm_apply 2022-05-16 09:19:00 bc7a201 feat(*): Pointwise monoids have distributive negations (#14114) More instances of `has_distrib_neg`: * `function.injective.has_distrib_neg`, `function.surjective.has_distrib_neg` * `add_opposite`, `mul_opposite` * `set`, `finset`, `filter` ESTIMATED CHANGES Modified src/algebra/ring/basic.lean Modified src/algebra/star/unitary.lean Modified src/data/finset/n_ary.lean + theorem finset.image₂_distrib_subset_left + theorem finset.image₂_distrib_subset_right Modified src/data/finset/pointwise.lean + theorem finset.add_mul_subset + theorem finset.mul_add_subset Modified src/data/set/basic.lean + theorem set.image2_distrib_subset_left + theorem set.image2_distrib_subset_right Modified src/data/set/pointwise.lean + theorem set.add_mul_subset + theorem set.mul_add_subset Modified src/linear_algebra/general_linear_group.lean +/- theorem matrix.GL_pos.coe_neg + theorem matrix.GL_pos.coe_neg_GL Modified src/linear_algebra/special_linear_group.lean +/- theorem matrix.special_linear_group.coe_int_neg +/- theorem matrix.special_linear_group.coe_neg Modified src/order/filter/n_ary.lean + theorem filter.map₂_distrib_le_left + theorem filter.map₂_distrib_le_right Modified src/order/filter/pointwise.lean + theorem filter.add_mul_subset + theorem filter.mul_add_subset 2022-05-16 09:18:59 f0db51d feat(algebra/module): morphism classes for (semi)linear maps (#13939) This PR introduces morphism classes corresponding to `mul_action_hom`, `distrib_mul_action_hom`, `mul_semiring_action_hom` and `linear_map`. Most of the new generic results work smoothly, only `simp` seems to have trouble applying `map_smulₛₗ`. I expect this requires another fix in the elaborator along the lines of [lean#659](https://github.com/leanprover-community/lean/pull/659). For now we can just keep around the specialized `simp` lemmas `linear_map.map_smulₛₗ` and `linear_equiv.map_smulₛₗ`. The other changes are either making `map_smul` protected where it conflicts, or helping the elaborator unfold some definitions that previously were helped by the specific `map_smul` lemma suggesting the type. Thanks to @dupuisf for updating and making this branch compile! Co-Authored-By: Frédéric Dupuis ESTIMATED CHANGES Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/hom/group_action.lean +/- theorem distrib_mul_action_hom.ext +/- theorem distrib_mul_action_hom.ext_iff - theorem distrib_mul_action_hom.map_add - theorem distrib_mul_action_hom.map_neg - theorem distrib_mul_action_hom.map_smul - theorem distrib_mul_action_hom.map_sub - theorem distrib_mul_action_hom.map_zero +/- theorem mul_action_hom.ext +/- theorem mul_action_hom.ext_iff - theorem mul_action_hom.map_smul +/- theorem mul_semiring_action_hom.ext +/- theorem mul_semiring_action_hom.ext_iff - theorem mul_semiring_action_hom.map_add - theorem mul_semiring_action_hom.map_mul - theorem mul_semiring_action_hom.map_neg - theorem mul_semiring_action_hom.map_one - theorem mul_semiring_action_hom.map_smul - theorem mul_semiring_action_hom.map_sub - theorem mul_semiring_action_hom.map_zero Modified src/algebra/module/equiv.lean - theorem linear_equiv.map_smulₛₗ Modified src/algebra/module/linear_map.lean - theorem linear_map.map_smul - theorem linear_map.map_smul_inv - theorem linear_map.map_smulₛₗ + def linear_map_class + theorem semilinear_map_class.map_smul_inv Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/lax_milgram.lean Modified src/analysis/locally_convex/weak_dual.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/bilinear_map.lean Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/multilinear/basic.lean - theorem multilinear_map.map_smul Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/trace.lean Modified src/measure_theory/group/measure.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/measure_space.lean - theorem measure_theory.measure.map_smul 2022-05-16 08:42:11 0d76285 doc(set_theory/surreal/basic): update docs (#14170) We remove an incorrect remark about the order relations on `pgame`, and reference the branch on which the proof of surreal multiplication is being worked on. ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean 2022-05-15 19:05:27 4cf2016 feat(order/cover): Covering elements are unique (#14156) In a linear order, there's at most one element covering `a` and at most one element being covered by `a`. ESTIMATED CHANGES Modified src/order/cover.lean + theorem covby.ge_of_gt + theorem covby.le_of_lt + theorem covby.unique_left + theorem covby.unique_right + theorem wcovby.ge_of_gt + theorem wcovby.le_of_lt 2022-05-15 16:12:50 00e80a6 feat (group_theory/perm/cycles): Add missing `is_cycle` lemma (#13219) Add `is_cycle.pow_eq_pow_iff`, which extends `is_cycle.pow_eq_one_iff`. ESTIMATED CHANGES Modified src/group_theory/perm/cycles.lean +/- theorem equiv.perm.is_cycle.pow_eq_one_iff + theorem equiv.perm.is_cycle.pow_eq_pow_iff 2022-05-15 14:04:27 c109105 chore(logic/equiv): golf equiv.subtype_equiv (#14125) The naming is a bit all over the place, but I will fix this in a later PR. ESTIMATED CHANGES Modified src/logic/equiv/basic.lean 2022-05-15 14:04:26 843240b feat(linear_algebra/matrix): invariant basis number for matrices (#13845) This PR shows that invertible matrices over a ring with invariant basis number are square. ESTIMATED CHANGES Modified src/linear_algebra/invariant_basis_number.lean Added src/linear_algebra/matrix/invariant_basis_number.lean + theorem matrix.square_of_invertible Modified src/linear_algebra/matrix/to_lin.lean 2022-05-15 14:04:26 f9f64f3 move(data/prod/*): A `prod` folder (#13771) Create folder `data.prod.` to hold `prod` files and related types. Precisely: * `data.prod` → `data.prod.basic` * `data.pprod` → `data.prod.pprod` * `data.tprod` → `data.prod.tprod` * `order.lexicographic` → `data.prod.lex` ESTIMATED CHANGES Modified src/algebra/order/rearrangement.lean Modified src/combinatorics/colex.lean Modified src/data/fin/tuple/sort.lean Modified src/data/list/lex.lean Modified src/data/pi/algebra.lean Renamed src/data/prod.lean to src/data/prod/basic.lean Renamed src/order/lexicographic.lean to src/data/prod/lex.lean Renamed src/data/pprod.lean to src/data/prod/pprod.lean Renamed src/data/tprod.lean to src/data/prod/tprod.lean Modified src/data/psigma/order.lean Modified src/data/sigma/lex.lean Modified src/data/sigma/order.lean Modified src/logic/embedding.lean Modified src/logic/equiv/basic.lean Modified src/logic/nontrivial.lean Modified src/measure_theory/measurable_space.lean Modified src/order/basic.lean Modified src/order/filter/bases.lean Modified src/tactic/core.lean Modified src/tactic/linarith/preprocessing.lean 2022-05-15 11:58:06 a74298d chore(order/lattice): reflow, golf (#14151) ESTIMATED CHANGES Modified src/order/lattice.lean +/- theorem inf_le_inf_left +/- theorem inf_le_inf_right +/- theorem inf_left_comm +/- theorem inf_left_idem +/- theorem inf_left_right_swap +/- theorem inf_right_comm +/- theorem inf_right_idem +/- theorem le_of_inf_eq 2022-05-15 08:37:51 5c954e1 chore(order/conditionally_complete_lattice): General cleanup (#13319) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean +/- theorem cInf_eq_of_forall_ge_of_forall_gt_exists_lt +/- theorem cInf_le_cInf +/- theorem cInf_le_of_le +/- theorem cInf_lt_of_lt +/- theorem cSup_eq_of_forall_le_of_forall_lt_exists_gt +/- theorem cSup_eq_of_is_forall_le_of_forall_le_imp_ge +/- theorem cSup_inter_le +/- theorem cSup_le +/- theorem cSup_le_cSup +/- theorem cSup_le_iff +/- theorem csupr_const +/- theorem csupr_le +/- theorem exists_lt_of_cInf_lt +/- theorem exists_lt_of_cinfi_lt +/- theorem exists_lt_of_lt_cSup +/- theorem exists_lt_of_lt_csupr +/- theorem le_cInf +/- theorem le_cInf_iff +/- theorem le_cInf_inter +/- theorem le_cSup_of_le +/- theorem le_cinfi +/- theorem lt_cSup_of_lt +/- theorem with_top.coe_Inf +/- theorem with_top.coe_Sup 2022-05-15 01:31:14 b8d8a5e refactor(set_theory/game/*): Fix bad notation `<` on (pre-)games (#13963) Our current definition for `<` on pre-games is, in the wider mathematical literature, referred to as `⧏` (less or fuzzy to). Conversely, what's usually referred to by `<` coincides with the relation we get from `preorder pgame` (which the current API avoids using at all). We rename `<` to `⧏`, and add the basic API for both the new `<` and `⧏` relations. This allows us to define new instances on `pgame` and `game` that we couldn't before. We also take the opportunity to add some basic API on the fuzzy relation `∥`. See the [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Surreal.20numbers/near/281094687). ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + theorem game.add_lf_add_left + theorem game.add_lf_add_right + def game.fuzzy - theorem game.le_antisymm - theorem game.le_refl - theorem game.le_rfl - theorem game.le_trans + def game.lf - theorem game.lt_or_eq_of_le +/- theorem game.not_le + theorem game.not_lf - theorem game.not_lt - def game.ordered_add_comm_group - def game.partial_order Modified src/set_theory/game/birthday.lean Modified src/set_theory/game/impartial.lean +/- theorem pgame.impartial.first_wins_symm' +/- theorem pgame.impartial.first_wins_symm + theorem pgame.impartial.lf_zero_iff - theorem pgame.impartial.lt_zero_iff + theorem pgame.impartial.nonneg + theorem pgame.impartial.nonpos Modified src/set_theory/game/nim.lean Modified src/set_theory/game/ordinal.lean + theorem ordinal.to_pgame_lf + theorem ordinal.to_pgame_lf_iff Modified src/set_theory/game/pgame.lean + theorem pgame.add_lf_add_left + theorem pgame.add_lf_add_right + theorem pgame.equiv.is_empty + theorem pgame.equiv.not_fuzzy' + theorem pgame.equiv.not_fuzzy +/- theorem pgame.equiv_rfl + theorem pgame.fuzzy.not_equiv' + theorem pgame.fuzzy.not_equiv + theorem pgame.fuzzy.swap + theorem pgame.fuzzy.swap_iff + def pgame.fuzzy + theorem pgame.fuzzy_congr + theorem pgame.fuzzy_congr_imp + theorem pgame.fuzzy_congr_left + theorem pgame.fuzzy_congr_right + theorem pgame.fuzzy_irrefl + theorem pgame.fuzzy_of_equiv_of_fuzzy + theorem pgame.fuzzy_of_fuzzy_of_equiv + theorem pgame.half_add_half_equiv_one +/- theorem pgame.le_congr + theorem pgame.le_congr_imp + theorem pgame.le_congr_left + theorem pgame.le_congr_right + theorem pgame.le_def_lf - theorem pgame.le_def_lt - theorem pgame.le_iff_neg_ge + def pgame.le_lf - def pgame.le_lt +/- theorem pgame.le_of_equiv_of_le +/- theorem pgame.le_of_le_of_equiv + theorem pgame.le_or_gf - theorem pgame.le_trans - theorem pgame.le_trans_aux +/- theorem pgame.le_zero - theorem pgame.le_zero_iff_zero_le_neg + theorem pgame.le_zero_lf + def pgame.lf + theorem pgame.lf_congr + theorem pgame.lf_congr_imp + theorem pgame.lf_congr_left + theorem pgame.lf_congr_right + theorem pgame.lf_def + theorem pgame.lf_def_le + theorem pgame.lf_iff_lt_or_fuzzy + theorem pgame.lf_iff_sub_zero_lf + theorem pgame.lf_irrefl + theorem pgame.lf_mk + theorem pgame.lf_mk_of_le + theorem pgame.lf_move_right + theorem pgame.lf_move_right_of_le + theorem pgame.lf_of_equiv_of_lf + theorem pgame.lf_of_fuzzy + theorem pgame.lf_of_le_mk + theorem pgame.lf_of_le_move_left + theorem pgame.lf_of_le_of_lf + theorem pgame.lf_of_lf_of_equiv + theorem pgame.lf_of_lf_of_le + theorem pgame.lf_of_lf_of_lt + theorem pgame.lf_of_lt + theorem pgame.lf_of_lt_of_lf + theorem pgame.lf_of_mk_le + theorem pgame.lf_of_move_right_le + theorem pgame.lf_or_equiv_of_le + theorem pgame.lf_or_equiv_or_gf + theorem pgame.lf_zero + theorem pgame.lf_zero_le + theorem pgame.lt_congr_imp + theorem pgame.lt_congr_left + theorem pgame.lt_congr_right - theorem pgame.lt_def - theorem pgame.lt_def_le + theorem pgame.lt_iff_le_and_lf - theorem pgame.lt_iff_neg_gt - theorem pgame.lt_mk - theorem pgame.lt_mk_of_le - theorem pgame.lt_move_right - theorem pgame.lt_move_right_of_le +/- theorem pgame.lt_of_equiv_of_lt - theorem pgame.lt_of_le_mk - theorem pgame.lt_of_le_move_left + theorem pgame.lt_of_le_of_lf - theorem pgame.lt_of_le_of_lt +/- theorem pgame.lt_of_lt_of_equiv - theorem pgame.lt_of_lt_of_le - theorem pgame.lt_of_mk_le - theorem pgame.lt_of_move_right_le - theorem pgame.lt_or_equiv_of_le - theorem pgame.lt_or_equiv_or_gt + theorem pgame.lt_or_equiv_or_gt_or_fuzzy + theorem pgame.lt_or_fuzzy_of_lf - theorem pgame.lt_zero + theorem pgame.mk_lf + theorem pgame.mk_lf_mk + theorem pgame.mk_lf_of_le - theorem pgame.mk_lt - theorem pgame.mk_lt_mk - theorem pgame.mk_lt_of_le + theorem pgame.move_left_lf + theorem pgame.move_left_lf_of_le - theorem pgame.move_left_lt - theorem pgame.move_left_lt_of_le + theorem pgame.neg_le_iff + theorem pgame.neg_le_zero_iff + theorem pgame.neg_lf_iff + theorem pgame.neg_lf_zero_iff + theorem pgame.neg_lt_iff + theorem pgame.neg_lt_zero_iff + theorem pgame.not_fuzzy_of_ge + theorem pgame.not_fuzzy_of_le - theorem pgame.not_le + theorem pgame.not_lf - theorem pgame.not_lt + theorem pgame.star_fuzzy_zero - theorem pgame.star_lt_zero +/- theorem pgame.zero_le - theorem pgame.zero_le_iff_neg_le_zero + theorem pgame.zero_le_lf + theorem pgame.zero_le_neg_iff +/- theorem pgame.zero_le_one + theorem pgame.zero_lf + theorem pgame.zero_lf_le + theorem pgame.zero_lf_neg_iff + theorem pgame.zero_lf_one - theorem pgame.zero_lt + theorem pgame.zero_lt_neg_iff - theorem pgame.zero_lt_star Modified src/set_theory/game/short.lean + def pgame.le_lf_decidable - def pgame.le_lt_decidable Modified src/set_theory/game/winner.lean +/- def pgame.first_loses +/- def pgame.first_wins +/- theorem pgame.first_wins_of_equiv_iff +/- def pgame.left_wins +/- theorem pgame.left_wins_of_equiv_iff +/- theorem pgame.one_left_wins +/- def pgame.right_wins +/- theorem pgame.right_wins_of_equiv_iff +/- theorem pgame.star_first_wins +/- theorem pgame.winner_cases +/- theorem pgame.zero_first_loses Modified src/set_theory/surreal/basic.lean + theorem pgame.add_lf_add - theorem pgame.add_lt_add - theorem pgame.half_add_half_equiv_one + theorem pgame.le_of_lf - theorem pgame.le_of_lt + theorem pgame.lf_asymm + theorem pgame.lf_iff_lt - theorem pgame.lt_asymm - theorem pgame.lt_iff_le_not_le + theorem pgame.lt_of_lf - theorem pgame.lt_trans' - theorem pgame.lt_trans + theorem pgame.not_fuzzy +/- theorem pgame.numeric.le_move_right + theorem pgame.numeric.lt_move_right +/- theorem pgame.numeric.move_left_le + theorem pgame.numeric.move_left_lt Modified src/set_theory/surreal/dyadic.lean 2022-05-14 23:44:35 1f00800 feat(linear_algebra/projection) : projections are conjugate to prod_map id 0 (#13802) ESTIMATED CHANGES Modified src/linear_algebra/projection.lean + def linear_map.is_proj.cod_restrict + theorem linear_map.is_proj.cod_restrict_apply + theorem linear_map.is_proj.cod_restrict_apply_cod + theorem linear_map.is_proj.cod_restrict_ker + theorem linear_map.is_proj.eq_conj_prod_map' + theorem linear_map.is_proj.eq_conj_prod_map + theorem linear_map.is_proj.is_compl + structure linear_map.is_proj + theorem linear_map.is_proj_iff_idempotent 2022-05-14 22:46:42 e738612 feat(analysis/special_functions/exp_deriv): generalize some lemmas about `complex.exp`, remove `*.cexp_real` (#13579) Now we can use `*.cexp` instead of some previous `*.cexp_real` lemmas. - [x] depends on: #13575 ESTIMATED CHANGES Modified src/analysis/special_functions/exp_deriv.lean +/- theorem complex.cont_diff_exp +/- theorem complex.differentiable_at_exp +/- theorem complex.differentiable_exp +/- theorem cont_diff.cexp +/- theorem cont_diff_at.cexp +/- theorem cont_diff_on.cexp +/- theorem cont_diff_within_at.cexp +/- theorem deriv_cexp +/- theorem deriv_within_cexp +/- theorem differentiable.cexp +/- theorem differentiable_at.cexp +/- theorem differentiable_on.cexp +/- theorem differentiable_within_at.cexp - theorem has_deriv_at.cexp_real - theorem has_deriv_within_at.cexp_real - theorem has_strict_deriv_at.cexp_real Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/integral/circle_integral.lean 2022-05-14 17:09:34 570db88 feat(category_theory): missing comp_ite lemma (#14143) We already have `comp_dite`. ESTIMATED CHANGES Modified src/category_theory/category/basic.lean + theorem category_theory.comp_ite + theorem category_theory.ite_comp 2022-05-14 17:09:33 ad5edeb feat(algebra/big_operators): prod_ite_irrel (#14142) A few missing lemams in `big_operators/basic.lean`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_dite_irrel + theorem finset.prod_erase_eq_div + theorem finset.prod_ite_irrel + theorem finset.prod_sdiff_eq_div 2022-05-14 17:09:32 05997bd chore(set_theory/ordinal/{basic, arithmetic}): Remove redundant `function` namespace (#14133) ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean +/- theorem not_injective_of_ordinal +/- theorem not_surjective_of_ordinal Modified src/set_theory/ordinal/basic.lean 2022-05-14 17:09:31 9d022d7 doc(data/real/sqrt): Fix typo in described theorem (#14126) The previous statement was not true. e.g. sqrt 4 <= 3 does not imply 4 * 4 <= 3 ESTIMATED CHANGES Modified src/data/real/sqrt.lean 2022-05-14 17:09:30 4125b9a chore(category_theory/*): move some elementwise lemmas earlier (#13998) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/category/Ring/basic.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/properties.lean Modified src/analysis/normed/group/SemiNormedGroup.lean Modified src/category_theory/concrete_category/basic.lean - theorem category_theory.coe_hom_inv_id - theorem category_theory.coe_inv_hom_id Modified src/category_theory/concrete_category/elementwise.lean Added src/category_theory/elementwise.lean Modified src/ring_theory/ideal/local_ring.lean Modified src/topology/category/Top/basic.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean Modified src/topology/sheaves/stalks.lean 2022-05-14 15:50:40 c992b04 feat(set_theory/cardinal/cofinality): Cofinality of `nfp` and `deriv` (#12556) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean + theorem cardinal.deriv_bfamily_lt_ord + theorem cardinal.deriv_bfamily_lt_ord_lift + theorem cardinal.deriv_family_lt_ord + theorem cardinal.deriv_family_lt_ord_lift + theorem cardinal.deriv_lt_ord + theorem cardinal.nfp_bfamily_lt_ord_lift_of_is_regular + theorem cardinal.nfp_bfamily_lt_ord_of_is_regular + theorem cardinal.nfp_family_lt_ord_lift_of_is_regular + theorem cardinal.nfp_family_lt_ord_of_is_regular + theorem cardinal.nfp_lt_ord_of_is_regular + theorem ordinal.nfp_bfamily_lt_ord + theorem ordinal.nfp_bfamily_lt_ord_lift + theorem ordinal.nfp_family_lt_ord + theorem ordinal.nfp_family_lt_ord_lift + theorem ordinal.nfp_lt_ord 2022-05-14 12:48:56 6d4c202 feat(analysis/specific_limits/floor_pow): auxiliary results on series involving floors of powers (#13850) ESTIMATED CHANGES Added src/analysis/specific_limits/floor_pow.lean + theorem mul_pow_le_nat_floor_pow + theorem sum_div_nat_floor_pow_sq_le_div_sq + theorem sum_div_pow_sq_le_div_sq + theorem tendsto_div_of_monotone_of_exists_subseq_tendsto_div + theorem tendsto_div_of_monotone_of_tendsto_div_floor_pow 2022-05-14 10:51:28 ba9d551 chore(algebra/invertible): minor golf (#14141) ESTIMATED CHANGES Modified src/algebra/invertible.lean +/- theorem inv_of_inv_of +/- theorem inv_of_mul +/- theorem nonempty_invertible_iff_is_unit 2022-05-14 08:16:18 79bc06b feat(linear_algebra/matrix/to_lin): equivalence via right multiplication (#13870) A very partial generalization of `linear_algebra/matrix/to_lin` to non-commutative rings. This is far from a complete refactor of the file; it just adds enough for what I need in representation theory immediately. I've left an extensive note explaining what should be done in a later refactor, but I don't want to have to do this all at once. See discussion on [zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/matrices). ESTIMATED CHANGES Modified src/linear_algebra/matrix/to_lin.lean + def linear_map.to_matrix_right' +/- def matrix.mul_vec_lin - theorem matrix.mul_vec_lin_apply + def matrix.to_linear_equiv_right'_of_inv + def matrix.to_linear_map_right' + theorem matrix.to_linear_map_right'_apply + theorem matrix.to_linear_map_right'_mul + theorem matrix.to_linear_map_right'_mul_apply + theorem matrix.to_linear_map_right'_one + def matrix.vec_mul_linear + theorem matrix.vec_mul_std_basis 2022-05-14 07:28:44 21a71de chore(*): use notation instead of `set.*` (#14139) ESTIMATED CHANGES Modified src/computability/language.lean Modified src/data/real/ereal.lean +/- def ereal.ne_top_bot_equiv_real Modified src/group_theory/free_product.lean Modified src/measure_theory/measure/measure_space.lean Modified src/topology/instances/ereal.lean +/- theorem ereal.continuous_on_to_real +/- def ereal.ne_bot_top_homeomorph_real 2022-05-14 05:39:32 3824493 refactor(group_theory/free_abelian_group): Make proofs more robust (#14089) Reduce the API breakage by proving `distrib (free_abelian_group α)` and `has_distrib_neg (free_abelian_group α)` earlier. Protect lemmas to avoid shadowing the root ones. ESTIMATED CHANGES Modified src/group_theory/free_abelian_group.lean + theorem free_abelian_group.lift_neg' - theorem free_abelian_group.map_add - theorem free_abelian_group.map_neg - theorem free_abelian_group.map_sub - theorem free_abelian_group.map_zero +/- theorem free_abelian_group.mul_def +/- theorem free_abelian_group.of_mul_of 2022-05-14 05:02:33 9f5b328 feat(.github/workflows): restore merge_conflicts action, running on cron (#14137) ESTIMATED CHANGES Added .github/workflows/merge_conflicts.yml 2022-05-13 16:35:43 b7e20ca feat(data/polynomial/degree/definitions): two more `nat_degree_le` lemmas (#14098) This PR is similar to #14095. It proves the `le` version of `nat_degree_X_pow` and `nat_degree_monomial`. These lemmas are analogous to the existing `nat_degree_X_le` and `nat_degree_C_mul_X_pow_le`. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.nat_degree_X_pow_le +/- theorem polynomial.nat_degree_monomial + theorem polynomial.nat_degree_monomial_le 2022-05-13 15:42:07 6b7fa7a feat(data/nat/totient): add `totient_div_of_dvd` and golf `sum_totient` (#14007) Add lemma `totient_div_of_dvd`: for `d ∣ n`, the totient of `n/d` equals the number of values `k < n` such that `gcd n k = d`. Use this to golf `sum_totient`, now stated in terms of `divisors`. This proof follows that of Theorem 2.2 in Apostol (1976) Introduction to Analytic Number Theory. Adapt the proof of `nth_roots_one_eq_bUnion_primitive_roots'` to use the new `sum_totient`. Re-prove the original statement of `sum_totient` for compatibility with uses in `group_theory/specific_groups/cyclic` — may delete this if those uses can be adapted to the new statement. ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.sum_totient' +/- theorem nat.sum_totient + theorem nat.totient_div_of_dvd Modified src/group_theory/specific_groups/cyclic.lean Modified src/ring_theory/roots_of_unity.lean 2022-05-13 13:23:57 55cd104 feat(archive/imo/imo1975_q1): Add the formalization of IMO 1975 Q1 (#13047) ESTIMATED CHANGES Added archive/imo/imo1975_q1.lean + theorem IMO_1975_Q1 2022-05-13 09:53:49 caa1352 feat(data/zmod/quotient): Multiplicative version of `zmultiples_quotient_stabilizer_equiv` (#13948) This PR adds a multiplicative version of `zmultiples_quotient_stabilizer_equiv`. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean + theorem mul_action.zpowers_quotient_stabilizer_equiv_symm_apply 2022-05-13 09:53:48 03da681 feat(representation_theory): fdRep k G, the category of finite dim representations of G (#13740) We verify that this inherits the rigid monoidal structure from `FinVect G` when `G` is a group. ESTIMATED CHANGES Modified src/representation_theory/Action.lean Added src/representation_theory/fdRep.lean + def fdRep.of + def fdRep 2022-05-13 07:38:22 6a48b38 feat(topology/uniform_space): lemmas about `s ○ s ○ ... ○ s ⊆ t` (#14051) ESTIMATED CHANGES Modified src/order/filter/small_sets.lean + theorem filter.eventually_small_sets_subset Modified src/topology/uniform_space/basic.lean + theorem eventually_uniformity_comp_subset + theorem eventually_uniformity_iterate_comp_subset + theorem left_subset_comp_rel + theorem right_subset_comp_rel +/- theorem subset_comp_self + theorem subset_iterate_comp_rel + theorem symmetric_rel.mk_mem_comm 2022-05-13 05:13:49 3185c25 feat(data/list/{count,perm},data/multiset/basic): countp and count lemmas (#14108) ESTIMATED CHANGES Modified src/data/list/count.lean + theorem list.count_eq_zero + theorem list.countp_cons + theorem list.countp_eq_zero Modified src/data/list/perm.lean + theorem list.countp_eq_countp_filter_add + theorem list.filter_append_perm + theorem list.perm.countp_congr Modified src/data/multiset/basic.lean + theorem multiset.card_eq_countp_add_countp + theorem multiset.count_eq_card + theorem multiset.count_le_card + theorem multiset.countp_congr + theorem multiset.countp_eq_card + theorem multiset.countp_eq_countp_filter_add + theorem multiset.countp_eq_zero + theorem multiset.countp_false + theorem multiset.countp_le_card + theorem multiset.countp_true 2022-05-13 05:13:48 23a2205 chore(data/real/ennreal): tidy some proofs (#14101) ESTIMATED CHANGES Modified src/data/real/ennreal.lean 2022-05-13 05:13:47 7b7af48 feat(set_theory/ordinal/basic): Order isomorphism between `o.out.α` and `set.Iio o` (#14074) This strengthens the previously existing equivalence. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean Modified src/set_theory/game/ordinal.lean Modified src/set_theory/ordinal/arithmetic.lean Modified src/set_theory/ordinal/basic.lean + def ordinal.enum_iso - def ordinal.typein_iso 2022-05-13 05:13:46 26f4112 feat(topology/uniform_space/separation): add `filter.has_basis.mem_separation_rel` (#14050) * add `filter.has_basis.mem_separation_rel`; * add `filter.has_basis.forall_mem_mem`, use it in `filter.has_basis.sInter_sets`; * replace two remaining `lift' powerset` with `small_sets`. ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.forall_mem_mem Modified src/order/filter/small_sets.lean Modified src/topology/uniform_space/separation.lean + theorem filter.has_basis.mem_separation_rel 2022-05-13 05:13:45 a2e671b feat(number_theory/von_mangoldt): simple bounds on von mangoldt function (#14033) From the unit fractions project. More interesting bounds such as the chebyshev bounds coming soon, but for now here are some easy upper and lower bounds. ESTIMATED CHANGES Modified src/number_theory/von_mangoldt.lean + theorem nat.arithmetic_function.von_mangoldt_eq_zero_iff + theorem nat.arithmetic_function.von_mangoldt_le_log + theorem nat.arithmetic_function.von_mangoldt_ne_zero_iff + theorem nat.arithmetic_function.von_mangoldt_pos_iff 2022-05-13 05:13:44 644cae5 feat(set_theory/cardinal/cofinality): Move fundamental sequence results to namespace (#14020) We put most results about fundamental sequences in the `is_fundamental_sequence` namespace. We also take the opportunity to add a simple missing theorem, `ord_cof`. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean +/- theorem ordinal.is_fundamental_sequence.blsub_eq - theorem ordinal.is_fundamental_sequence.cof_eq + theorem ordinal.is_fundamental_sequence.id_of_le_cof - theorem ordinal.is_fundamental_sequence.monotone + theorem ordinal.is_fundamental_sequence.ord_cof - theorem ordinal.is_fundamental_sequence.strict_mono +/- theorem ordinal.is_fundamental_sequence.trans - theorem ordinal.is_fundamental_sequence_id_of_le_cof - theorem ordinal.is_fundamental_sequence_succ - theorem ordinal.is_fundamental_sequence_zero 2022-05-13 02:53:51 c53285a feat(order/filter/lift): drop an unneeded assumption (#14117) Drop `monotone _` assumptions in `filter.comap_lift_eq` and `filter.comap_lift'_eq`. ESTIMATED CHANGES Modified src/order/filter/lift.lean +/- theorem filter.comap_lift'_eq +/- theorem filter.comap_lift_eq Modified src/order/filter/small_sets.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2022-05-13 02:53:50 85124af chore(algebra/order/field): fill in TODO for inv anti lemmas (#14112) ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem inv_pow_anti + theorem inv_pow_le_inv_pow_of_le + theorem inv_pow_lt_inv_pow_of_lt + theorem inv_pow_strict_anti + theorem inv_strict_anti_on 2022-05-13 02:53:49 462b950 chore(algebra/order/field): fill in missing lemma (#14111) We had `inv_le_inv` and its backward direction, this fills in the backward direction for `inv_lt_inv`. ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem inv_lt_inv_of_lt 2022-05-13 02:53:48 f617862 feat(data/polynomial/degree/lemmas): two lemmas about `nat_degree`s of sums (#14100) Suppose that `f, g` are polynomials. If both `nat_degree (f + g)` and `nat_degree` of one of them are bounded by `n`, then `nat_degree` of the other is also bounded by `n`. ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.nat_degree_add_le_iff_left + theorem polynomial.nat_degree_add_le_iff_right 2022-05-13 02:53:47 de418aa feat(topology/basic): add lemmas like `closure s \ interior s = frontier s` (#14086) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem closure_diff_frontier + theorem closure_diff_interior + theorem self_diff_frontier 2022-05-13 02:53:46 15f6b52 feat(data/set/prod): add `prod_self_{s,}subset_prod_self` (#14084) ESTIMATED CHANGES Modified src/data/set/prod.lean + theorem set.prod_self_ssubset_prod_self + theorem set.prod_self_subset_prod_self 2022-05-13 02:53:45 1474996 feat(topology/basic): add `nhds_basis_closeds` (#14083) * add `nhds_basis_closeds`; * golf 2 proofs; * move `topological_space.seq_tendsto_iff` to `topology.basic`, rename it to `tendsto_at_top_nhds`. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem nhds_basis_closeds +/- theorem nhds_basis_opens + theorem tendsto_at_top_nhds Modified src/topology/sequences.lean - theorem topological_space.seq_tendsto_iff 2022-05-13 02:53:44 bb97a64 feat(topology/order): add `nhds_true` and `nhds_false` (#14082) ESTIMATED CHANGES Modified src/topology/order.lean + theorem nhds_false + theorem nhds_true 2022-05-13 02:53:43 bd5914f perf(field_theory/primitive_element): declare auxiliary function `noncomputable!` (#14071) The declaration `roots_of_min_poly_pi_type` is computable and gets compiled by Lean. Unfortunately, compilation takes about 2-3s on my machine and times out under #11759 (with timeouts disabled, it takes about 11s on that branch). Since the parameters are all elements of noncomputable types and its only use is a noncomputable `fintype` instance, nobody will care if we explicitly make it computable, and it saves a lot of compilation time. See also this Zulip thread on `noncomputable!` fixing mysterious timeouts: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Timeout/near/278494746 ESTIMATED CHANGES Modified src/field_theory/primitive_element.lean - def field.roots_of_min_poly_pi_type 2022-05-13 02:53:42 c4c279e feat(data/real/nnreal): add `nnreal.le_infi_add_infi` and other lemmas (#14048) * add `nnreal.coe_two`, `nnreal.le_infi_add_infi`, `nnreal.half_le_self`; * generalize `le_cinfi_mul_cinfi`, `csupr_mul_csupr_le`, and their additive versions to allow two different index types. ESTIMATED CHANGES Modified src/data/real/basic.lean Modified src/data/real/nnreal.lean + theorem nnreal.half_le_self + theorem nnreal.le_infi_add_infi Modified src/order/conditionally_complete_lattice.lean 2022-05-13 01:22:31 a945b18 feat(linear_algebra/tensor_product): tensor_product.map is bilinear in its two arguments (#13608) ESTIMATED CHANGES Modified src/linear_algebra/dual.lean + def tensor_product.dual_distrib + theorem tensor_product.dual_distrib_apply + def tensor_product.dual_distrib_equiv + def tensor_product.dual_distrib_inv_of_basis + theorem tensor_product.dual_distrib_inv_of_basis_apply Modified src/linear_algebra/tensor_product.lean + def tensor_product.hom_tensor_hom_map + theorem tensor_product.hom_tensor_hom_map_apply + theorem tensor_product.map_add_left + theorem tensor_product.map_add_right + def tensor_product.map_bilinear + theorem tensor_product.map_bilinear_apply + theorem tensor_product.map_smul_left + theorem tensor_product.map_smul_right + theorem tensor_product.smul_tmul_smul Modified src/ring_theory/tensor_product.lean + def module.End_tensor_End_alg_hom + theorem module.End_tensor_End_alg_hom_apply 2022-05-12 20:54:24 17102ae feat(algebra/big_operators/basic): add `sum_erase_lt_of_pos` (#14066) `sum_erase_lt_of_pos (hd : d ∈ s) (hdf : 0 < f d) : ∑ (m : ℕ) in s.erase d, f m < ∑ (m : ℕ) in s, f m` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.sum_erase_lt_of_pos 2022-05-12 20:54:23 86d58ae feat(data/nat/factorization): three lemmas on the components of factorizations (#14031) `pow_factorization_le : p ^ (n.factorization) p ≤ n` `div_pow_factorization_ne_zero : n / p ^ (n.factorization) p ≠ 0` `not_dvd_div_pow_factorization : ¬p ∣ n / p ^ (n.factorization) p` Prompted by [this question](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/prime.20factorisation) in Zulip ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.div_pow_factorization_ne_zero + theorem nat.not_dvd_div_pow_factorization + theorem nat.pow_factorization_le 2022-05-12 20:54:22 3c1ced3 feat(data/nat/basic): four lemmas on nat and int division (#13991) `lt_div_iff_mul_lt (hnd : d ∣ n) : a < n / d ↔ d * a < n` `div_left_inj (hda : d ∣ a) (hdb : d ∣ b) : a / d = b / d ↔ a = b` (for `ℕ` and `ℤ`) `div_lt_div_of_lt_of_dvd (hdb : d ∣ b) (h : a < b) : a / d < b / d` ESTIMATED CHANGES Modified src/data/int/basic.lean Modified src/data/nat/basic.lean + theorem nat.div_lt_div_of_lt_of_dvd 2022-05-12 19:34:26 4b3988a feat(data/sym/sym2): simp lemma for quotient.eq (#14113) ESTIMATED CHANGES Modified src/data/sym/sym2.lean + theorem sym2.rel_iff 2022-05-12 19:34:25 3d03098 doc(data/matrix/basic): Clarify docstring (#14109) ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2022-05-12 18:30:47 27e7f7a feat(number_theory/divisors): add `filter_dvd_eq_proper_divisors` (#14049) Adds `filter_dvd_eq_proper_divisors` and golfs `filter_dvd_eq_divisors` and a few other lemmas ESTIMATED CHANGES Modified src/number_theory/divisors.lean +/- theorem nat.filter_dvd_eq_divisors + theorem nat.filter_dvd_eq_proper_divisors +/- theorem nat.mem_divisors 2022-05-12 17:54:58 3b18573 doc(tactic/rewrite_search/explain): Fix documentation-breaking docstring (#14107) This currently renders as ![image](https://user-images.githubusercontent.com/425260/168125021-06ef8851-55a6-4629-b437-7c38a1df7b05.png) ESTIMATED CHANGES Modified src/tactic/rewrite_search/explain.lean 2022-05-12 16:23:39 0e834df chore(data/nat/multiplicity): simplify proof (#14103) ESTIMATED CHANGES Modified src/data/nat/multiplicity.lean +/- theorem nat.prime.multiplicity_le_multiplicity_choose_add 2022-05-12 16:23:38 0509c9c fix(analysis/special_functions/pow): fix norm_num extension (#14099) As [reported on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/kernel.20slow.20to.20accept.20refl.20proof/near/282043840). ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean +/- theorem norm_num.rpow_pos Modified test/norm_num_ext.lean 2022-05-12 16:23:37 c8edd60 chore(data/polynomial/ring_division): golf a few proofs (#14097) * add `polynomial.finite_set_of_is_root`; * use it to golf a few proofs. ESTIMATED CHANGES Modified src/analysis/special_functions/polynomials.lean +/- theorem polynomial.eventually_no_roots Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.eq_of_infinite_eval_eq +/- theorem polynomial.eq_zero_of_infinite_is_root + theorem polynomial.finite_set_of_is_root 2022-05-12 16:23:36 6cf6e8c chore(order/filter/basic): golf a few proofs (#14078) * golf the proof of `mem_generate_iff` by using `sInter_mem`; * use `set.inj_on` in the statement of `filter.eq_of_map_eq_map_inj'`; * golf the proofs of `filter.map_inj` and `filter.comap_ne_bot_iff`. ESTIMATED CHANGES Modified src/order/filter/basic.lean 2022-05-12 14:24:07 9b41e4e feat(data/polynomial/laurent): add truncation from Laurent polynomials to polynomials (#14085) We introduce the truncation of a Laurent polynomial `f`. It returns a polynomial whose support is exactly the non-negative support of `f`. We use it to prove injectivity of the inclusion of polynomials in Laurent polynomials. I also plan to use the results in this PR to prove that any Laurent polynomials is obtain from a polynomial by dividing by a power of the variable. ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean + theorem laurent_polynomial.left_inverse_trunc_to_laurent + def laurent_polynomial.trunc + theorem laurent_polynomial.trunc_C_mul_T + theorem polynomial.to_laurent_inj + theorem polynomial.to_laurent_injective + theorem polynomial.trunc_to_laurent 2022-05-12 14:24:06 fa4c036 chore(order/complete_lattice,data/set/lattice): move `Sup_sUnion` (#14077) * move `Sup_sUnion` and `Inf_sUnion` to `data.set.lattice`; * golf a few proofs. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem Inf_sUnion + theorem Sup_sUnion Modified src/order/complete_lattice.lean - theorem Inf_sUnion - theorem Sup_sUnion 2022-05-12 12:10:19 bada932 feat(data/multiset/basic): `erase_singleton` (#14094) Add `multiset.erase_singleton` which is analogous to the existing [finset.erase_singleton](https://leanprover-community.github.io/mathlib_docs/data/finset/basic.html#finset.erase_singleton). ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.erase_singleton 2022-05-12 12:10:18 55671be chore(set_theory/zfc): use `derive` for some instances (#14079) Also use `has_compl` instead of `has_neg`. ESTIMATED CHANGES Modified src/set_theory/zfc.lean 2022-05-12 12:10:17 d9e623c feat(algebra/*): Division monoid instances for `with_zero` and `mul_opposite` (#14073) A few missing instances of `division_monoid` and friends. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem inv_comp_inv Modified src/algebra/group/opposite.lean Modified src/algebra/group/with_one.lean +/- theorem with_zero.coe_inv +/- theorem with_zero.inv_zero 2022-05-12 12:10:16 c57cfc6 feat({data/{finset,set},order/filter}/pointwise): Pointwise monoids are division monoids (#13900) `α` is a `division_monoid` implies that `set α`, `finset α`, `filter α` are too. The core result needed for this is that `s` is a unit in `set α`/`finset α`/`filter α` if and only if it is equal to `{u}`/`{u}`/`pure u` for some unit `u : α`. ESTIMATED CHANGES Modified src/data/finset/pointwise.lean + theorem finset.coe_singleton_monoid_hom + theorem finset.coe_singleton_mul_hom + theorem finset.coe_singleton_one_hom - theorem finset.coe_zpow' +/- theorem finset.coe_zpow + theorem finset.is_unit_coe + theorem finset.is_unit_iff + theorem finset.is_unit_iff_singleton + theorem finset.is_unit_singleton + def finset.singleton_monoid_hom + theorem finset.singleton_monoid_hom_apply + def finset.singleton_mul_hom + theorem finset.singleton_mul_hom_apply + def finset.singleton_one_hom + theorem finset.singleton_one_hom_apply Modified src/data/set/pointwise.lean + theorem set.coe_singleton_monoid_hom + theorem set.coe_singleton_mul_hom + theorem set.coe_singleton_one_hom + theorem set.is_unit_iff + theorem set.is_unit_iff_singleton + theorem set.is_unit_singleton + def set.singleton_monoid_hom + theorem set.singleton_monoid_hom_apply +/- def set.singleton_mul_hom + theorem set.singleton_mul_hom_apply + def set.singleton_one_hom Modified src/order/filter/pointwise.lean + theorem filter.coe_pure_monoid_hom + theorem filter.coe_pure_mul_hom + theorem filter.coe_pure_one_hom + theorem filter.is_unit_iff + theorem filter.is_unit_iff_singleton + theorem filter.is_unit_pure + def filter.pure_monoid_hom + theorem filter.pure_monoid_hom_apply + def filter.pure_mul_hom + theorem filter.pure_mul_hom_apply + def filter.pure_one_hom + theorem filter.pure_one_hom_apply Modified src/order/filter/ultrafilter.lean +/- theorem filter.mem_iff_ultrafilter Modified src/topology/algebra/group.lean 2022-05-12 10:27:03 c2e87de feat(data/polynomial/degree/definitions): if `r ≠ 0`, then `(monomial i r).nat_degree = i` (#14095) Add a lemma analogous to `nat_degree_C_mul_X_pow` and `nat_degree_C_mul_X`. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.nat_degree_monomial_eq 2022-05-12 10:27:02 5927330 refactor(combinatorics/simple_graph/basic): relax `edge_finset` typeclasses (#14091) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean +/- def simple_graph.edge_finset + theorem simple_graph.edge_finset_card +/- theorem simple_graph.edge_set_univ_card +/- theorem simple_graph.mem_edge_finset 2022-05-12 10:27:01 41afd8c feat(analysis/special_functions/pow): asymptotics for real powers and log (#14088) From the unit fractions project. ESTIMATED CHANGES Modified src/analysis/special_functions/log/basic.lean + theorem real.is_o_log_id_at_top +/- theorem real.is_o_pow_log_id_at_top Modified src/analysis/special_functions/pow.lean + theorem asymptotics.is_O.rpow + theorem asymptotics.is_O_with.rpow + theorem asymptotics.is_o.rpow + theorem is_o_log_rpow_at_top + theorem is_o_log_rpow_rpow_at_top 2022-05-12 08:45:52 1c8ce7e feat(data/complex): real exponential bounds (#14087) Bounds on the real exponential function near 1, derived from the complex versions. ESTIMATED CHANGES Modified src/data/complex/exponential.lean +/- theorem complex.abs_exp + theorem real.abs_exp_sub_one_le + theorem real.abs_exp_sub_one_sub_id_le 2022-05-12 08:45:51 b6d1028 chore(topology/sequences): golf a few proofs (#14081) ESTIMATED CHANGES Modified src/topology/sequences.lean +/- theorem seq_compact.lebesgue_number_lemma_of_metric +/- theorem tendsto_subseq_of_bounded +/- theorem tendsto_subseq_of_frequently_bounded 2022-05-12 08:45:50 7c4c90f feat(category_theory/noetherian): nonzero artinian objects have simple subobjects (#13972) # Artinian and noetherian categories An artinian category is a category in which objects do not have infinite decreasing sequences of subobjects. A noetherian category is a category in which objects do not have infinite increasing sequences of subobjects. We show that any nonzero artinian object has a simple subobject. ## Future work The Jordan-Hölder theorem, following https://stacks.math.columbia.edu/tag/0FCK. ESTIMATED CHANGES Added src/category_theory/noetherian.lean + theorem category_theory.exists_simple_subobject Modified src/category_theory/simple.lean + theorem category_theory.subobject_simple_iff_is_atom Modified src/category_theory/subobject/lattice.lean + theorem category_theory.subobject.nontrivial_of_not_is_zero + def category_theory.subobject.subobject_order_iso 2022-05-12 08:45:49 fd98cf1 chore(ring_theory/unique_factorization_domain): golf (#13820) + Shorten the proof of `exists_irreducible_factor` using `well_founded.has_min` instead of `well_founded.fix`. + Remove use of `simp` in `induction_on_irreducible`; now a pure term-mode proof except for the classical instance. + Change the proof of `not_unit_iff_exists_factors_eq` (just added in [#13682](https://github.com/leanprover-community/mathlib/pull/13682)) to use induction. The new proof doesn't require the `multiset.prod_erase` introduced in [#13682](https://github.com/leanprover-community/mathlib/pull/13682), but is about as complex as the old one, so I might change it back if reviewers prefer. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean 2022-05-12 08:45:48 0c26348 feat(data/finsupp/basic): `finsupp.comap_domain` is an `add_monoid_hom` (#13783) This is the version of `map_domain.add_monoid_hom` for `comap_domain`. I plan to use it for the inclusion of polynomials in Laurent polynomials (#13415). I also fixed a typo in a doc-string. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + def finsupp.comap_domain.add_monoid_hom + theorem finsupp.comap_domain_add + theorem finsupp.comap_domain_add_of_injective + theorem finsupp.comap_domain_single + theorem finsupp.comap_domain_smul + theorem finsupp.comap_domain_smul_of_injective + theorem finsupp.comap_domain_zero +/- theorem finsupp.map_domain_comap_domain 2022-05-12 07:44:21 a966557 chore(analysis/special_functions/pow): golf a proof (#14093) * move `real.abs_rpow_of_nonneg` up; * use it to golf a line in `real.abs_rpow_le_abs_rpow`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean 2022-05-12 00:05:58 4977fd9 feat(ring_theory/finiteness): tensor product of two finite modules is finite (#13733) Removes [finite_dimensional_tensor_product](https://leanprover-community.github.io/mathlib_docs/linear_algebra/tensor_product_basis.html#finite_dimensional_tensor_product) since it's now proved by `infer_instance`. ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.map₂_mk_top_top_eq_top Modified src/linear_algebra/tensor_product_basis.lean Modified src/ring_theory/finiteness.lean 2022-05-11 20:41:58 d4884c0 feat(analysis/asymptotics): use weaker TC assumptions (#14080) Merge `is_o.trans` with `is_o.trans'`: both lemmas previously took one `semi_normed_group` argument on the primed type (corresponding to the primed function), but now only assume `has_norm` on all three types. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean - theorem asymptotics.is_o.trans' +/- theorem asymptotics.is_o.trans 2022-05-11 18:53:31 0302cfd chore(measure_theory/function/conditional_expectation): change the definition of condexp and its notation (#14010) Before this PR, the conditional expectation `condexp` was defined using an argument `(hm : m ≤ m0)`. This changes the definition to take only `m`, and assigns the default value 0 if we don't have `m ≤ m0`. The notation for `condexp m μ f` is simplified to `μ[f|m]`. The change makes the proofs of the condexp API longer, but no change is needed to lemmas outside of that file. See the file `martingale.lean`: the notation is now simpler, but otherwise little else changes besides removing the now unused argument `[sigma_finite_filtration μ ℱ]` from many lemmas. Also add an instance `is_finite_measure.sigma_finite_filtration`: we had a lemma with both `is_finite_measure` and `sigma_finite_filtration` arguments, but the first one implies the other. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean +/- def measure_theory.condexp +/- theorem measure_theory.condexp_ae_eq_condexp_L1 +/- theorem measure_theory.condexp_ae_eq_condexp_L1_clm +/- theorem measure_theory.condexp_condexp_of_le +/- theorem measure_theory.condexp_const +/- theorem measure_theory.condexp_neg + theorem measure_theory.condexp_of_not_le + theorem measure_theory.condexp_of_not_sigma_finite + theorem measure_theory.condexp_of_sigma_finite +/- theorem measure_theory.condexp_of_strongly_measurable +/- theorem measure_theory.condexp_smul +/- theorem measure_theory.condexp_undef +/- theorem measure_theory.condexp_zero +/- theorem measure_theory.integrable_condexp +/- theorem measure_theory.integral_condexp +/- theorem measure_theory.rn_deriv_ae_eq_condexp +/- theorem measure_theory.set_integral_condexp +/- theorem measure_theory.strongly_measurable_condexp Modified src/probability/martingale.lean +/- theorem measure_theory.martingale.set_integral_eq +/- def measure_theory.martingale +/- theorem measure_theory.martingale_zero +/- theorem measure_theory.submartingale.expected_stopped_value_mono +/- theorem measure_theory.submartingale.set_integral_le +/- def measure_theory.submartingale +/- theorem measure_theory.supermartingale.set_integral_le +/- def measure_theory.supermartingale Modified src/probability/notation.lean Modified src/probability/stopping.lean 2022-05-11 15:02:00 7a3ae97 feat(data/polynomial/laurent): add inductions for Laurent polynomials (#14005) This PR introduces two induction principles for Laurent polynomials and uses them to show that `T` commutes with everything. ESTIMATED CHANGES Modified src/data/polynomial/laurent.lean + theorem laurent_polynomial.T_mul + theorem laurent_polynomial.commute_T 2022-05-11 14:23:17 483affa feat(measure_theory/integral/interval_integral): add lemma `interval_integrable.sum` (#14069) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integrable.sum 2022-05-11 08:00:03 83bc3b9 chore(algebra/module/submodule*): replace underscores in file names with a folder (#14063) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/module/default.lean Renamed src/algebra/module/submodule.lean to src/algebra/module/submodule/basic.lean Renamed src/algebra/module/submodule_bilinear.lean to src/algebra/module/submodule/bilinear.lean Renamed src/algebra/module/submodule_lattice.lean to src/algebra/module/submodule/lattice.lean Renamed src/algebra/module/submodule_pointwise.lean to src/algebra/module/submodule/pointwise.lean Modified src/linear_algebra/basic.lean Modified src/topology/algebra/nonarchimedean/bases.lean Modified test/import_order_timeout.lean 2022-05-11 08:00:02 ba60237 chore(field_theory/adjoin): clarify and speed up proof (#14041) This PR turns a couple of refls into `simp` lemmas. Apart from being clearer now, this also speeds up the proof significantly in #11759 (where the elaborator chooses the wrong subexpression to unfold first). Elaboration time changed stayed about the same at about 300-350ms on master, and went from timeout to about 300ms on #11759. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.bot_equiv_symm + theorem intermediate_field.coe_algebra_map_over_bot 2022-05-11 08:00:01 b75113a chore(set_theory/game/ordinal): Remove redundant namespaces (#14039) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean 2022-05-11 06:01:29 4231b68 feat(data/list): add a few lemmas (#14047) * add `list.reverse_surjective` and `list.reverse_bijective`; * add `list.chain_iff_forall₂`, `list.chain_append_singleton_iff_forall₂`, and `list.all₂_zip_with`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.reverse_bijective +/- theorem list.reverse_injective +/- theorem list.reverse_involutive + theorem list.reverse_surjective Modified src/data/list/chain.lean + theorem list.chain_append_singleton_iff_forall₂ + theorem list.chain_iff_forall₂ Modified src/data/list/zip.lean + theorem list.all₂_zip_with 2022-05-10 19:04:38 df9683c feat(topology/algebra/infinite_sum): lemmas about `mul_opposite` (#13674) ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean + theorem exp_op + theorem exp_unop Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.op + theorem has_sum.unop + theorem has_sum_op + theorem has_sum_unop + theorem summable.op + theorem summable.unop + theorem summable_op + theorem summable_unop + theorem tsum_op + theorem tsum_unop 2022-05-10 17:00:25 3ea573e refactor(algebra/{group,group_with_zero/basic): Delete lemmas generalized to division monoids (#14042) Delete the `group` and `group_with_zero` lemmas which have been made one-liners in #14000. Lemmas are renamed because * one of the `group` or `group_with_zero` name has to go * the new API should have a consistent naming convention Lemma renames ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified archive/imo/imo2006_q3.lean Modified src/algebra/add_torsor.lean Modified src/algebra/big_operators/multiset.lean Modified src/algebra/field/basic.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/basic.lean +/- theorem div_div - theorem div_div_assoc_swap +/- theorem div_div_div_comm + theorem div_div_div_eq + theorem div_div_eq_mul_div - theorem div_eq_inv_mul' + theorem div_eq_inv_mul +/- theorem div_inv_eq_mul +/- theorem div_mul + theorem div_mul_comm +/- theorem div_mul_div_comm +/- theorem div_mul_eq_div_div +/- theorem div_mul_eq_div_div_swap + theorem div_mul_eq_div_mul_one_div - theorem div_mul_eq_mul_div' + theorem div_mul_eq_mul_div +/- theorem div_ne_one_of_ne - theorem div_one' + theorem div_one - theorem div_right_comm' + theorem div_right_comm - theorem division_comm_monoid.div_div - theorem division_comm_monoid.div_div_div_comm - theorem division_comm_monoid.div_div_div_eq - theorem division_comm_monoid.div_eq_inv_mul - theorem division_comm_monoid.div_mul - theorem division_comm_monoid.div_mul_comm - theorem division_comm_monoid.div_mul_div_comm - theorem division_comm_monoid.div_mul_eq_div_div - theorem division_comm_monoid.div_mul_eq_div_mul_one_div - theorem division_comm_monoid.div_mul_eq_mul_div - theorem division_comm_monoid.div_right_comm - theorem division_comm_monoid.inv_div_inv - theorem division_comm_monoid.inv_inv_div_inv - theorem division_comm_monoid.inv_mul' - theorem division_comm_monoid.inv_mul_eq_div - theorem division_comm_monoid.mul_comm_div - theorem division_comm_monoid.mul_div_left_comm - theorem division_comm_monoid.mul_div_mul_comm - theorem division_comm_monoid.mul_div_right_comm - theorem division_comm_monoid.mul_inv - theorem division_comm_monoid.one_div_mul_one_div - theorem division_monoid.div_div_eq_mul_div - theorem division_monoid.div_inv_eq_mul - theorem division_monoid.div_mul_eq_div_div_swap - theorem division_monoid.div_ne_one_of_ne - theorem division_monoid.div_one - theorem division_monoid.eq_inv_of_mul_eq_one_left - theorem division_monoid.eq_inv_of_mul_eq_one_right - theorem division_monoid.eq_of_div_eq_one - theorem division_monoid.eq_of_one_div_eq_one_div - theorem division_monoid.eq_one_div_of_mul_eq_one_left - theorem division_monoid.eq_one_div_of_mul_eq_one_right - theorem division_monoid.inv_div - theorem division_monoid.inv_div_left - theorem division_monoid.inv_eq_of_mul_eq_one_left - theorem division_monoid.inv_eq_one - theorem division_monoid.inv_ne_one - theorem division_monoid.inv_one - theorem division_monoid.one_div_div - theorem division_monoid.one_div_mul_one_div_rev - theorem division_monoid.one_div_one - theorem division_monoid.one_div_one_div - theorem division_monoid.one_eq_inv - theorem eq_inv_of_mul_eq_one + theorem eq_inv_of_mul_eq_one_left + theorem eq_inv_of_mul_eq_one_right - theorem eq_of_div_eq_one' + theorem eq_of_div_eq_one + theorem eq_of_one_div_eq_one_div + theorem eq_one_div_of_mul_eq_one_left + theorem eq_one_div_of_mul_eq_one_right +/- theorem inv_div' + theorem inv_div +/- theorem inv_div_inv + theorem inv_div_left + theorem inv_eq_of_mul_eq_one_left +/- theorem inv_eq_one +/- theorem inv_inv_div_inv +/- theorem inv_mul' +/- theorem inv_mul_eq_div +/- theorem inv_ne_one + theorem inv_one + theorem mul_comm_div +/- theorem mul_div +/- theorem mul_div_cancel''' - theorem mul_div_comm' +/- theorem mul_div_left_comm + theorem mul_div_mul_comm + theorem mul_div_right_comm +/- theorem mul_inv + theorem one_div_div + theorem one_div_mul_one_div + theorem one_div_mul_one_div_rev + theorem one_div_one + theorem one_div_one_div +/- theorem one_eq_inv - theorem one_inv Modified src/algebra/group/defs.lean - theorem inv_eq_of_mul_eq_one Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group/units.lean - theorem units.inv_eq_of_mul_eq_one + theorem units.inv_eq_of_mul_eq_one_right Modified src/algebra/group_power/basic.lean Modified src/algebra/group_with_zero/basic.lean - theorem div_div_div_comm₀ - theorem div_div_div_div_eq - theorem div_div_eq_div_mul - theorem div_div_eq_mul_div - theorem div_eq_inv_mul - theorem div_mul_comm' - theorem div_mul_div_comm₀ - theorem div_mul_eq_div_mul_one_div - theorem div_mul_eq_mul_div - theorem div_mul_eq_mul_div_comm - theorem div_one - theorem div_right_comm - theorem eq_inv_of_mul_left_eq_one - theorem eq_inv_of_mul_right_eq_one - theorem eq_of_div_eq_one - theorem eq_of_one_div_eq_one_div - theorem eq_one_div_of_mul_eq_one - theorem eq_one_div_of_mul_eq_one_left - theorem inv_div - theorem inv_div_left - theorem inv_eq_one₀ - theorem inv_one - theorem mul_comm_div' - theorem mul_div_comm - theorem mul_div_right_comm +/- theorem mul_eq_mul_of_div_eq_div - theorem mul_inv_rev₀ - theorem mul_inv₀ - theorem one_div_div - theorem one_div_mul_one_div - theorem one_div_mul_one_div_rev - theorem one_div_one - theorem one_div_one_div Modified src/algebra/group_with_zero/power.lean Modified src/algebra/hom/equiv.lean Modified src/algebra/hom/group.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/order/field.lean Modified src/algebra/order/lattice_group.lean +/- theorem lattice_ordered_comm_group.neg_one Modified src/algebra/ring/basic.lean Modified src/algebra/smul_with_zero.lean Modified src/algebra/star/chsh.lean +/- theorem tsirelson_inequality.sqrt_two_inv_mul_self Modified src/algebra/star/module.lean Modified src/algebra/star/unitary.lean Modified src/algebra/support.lean Modified src/algebraic_topology/fundamental_groupoid/basic.lean Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/box_integral/box/subbox_induction.lean Modified src/analysis/box_integral/partition/subbox_induction.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/complex/circle.lean Modified src/analysis/complex/liouville.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/gauge.lean Modified src/analysis/convex/strict_convex_space.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/pointwise.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/pow_deriv.lean Modified src/analysis/special_functions/trigonometric/arctan.lean Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/analysis/specific_limits/basic.lean Modified src/analysis/specific_limits/normed.lean Modified src/data/complex/exponential.lean Modified src/data/list/big_operators.lean Modified src/data/nat/modeq.lean Modified src/data/nat/totient.lean Modified src/data/polynomial/field_division.lean Modified src/data/rat/cast.lean Modified src/data/rat/order.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean - theorem ennreal.eq_inv_of_mul_eq_one + theorem ennreal.eq_inv_of_mul_eq_one_left Modified src/data/real/hyperreal.lean Modified src/data/real/nnreal.lean Modified src/data/real/pi/bounds.lean Modified src/data/real/pi/wallis.lean Modified src/data/set/pointwise.lean Modified src/deprecated/group.lean - theorem is_add_group_hom.map_sub + theorem is_group_hom.map_div Modified src/deprecated/subfield.lean Modified src/deprecated/subgroup.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/minpoly.lean Modified src/field_theory/ratfunc.lean Modified src/field_theory/subfield.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/oriented_angle.lean Modified src/geometry/euclidean/triangle.lean Modified src/group_theory/complement.lean Modified src/group_theory/group_action/conj_act.lean Modified src/group_theory/group_action/defs.lean Modified src/group_theory/group_action/group.lean Modified src/group_theory/nielsen_schreier.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/schreier.lean Modified src/group_theory/schur_zassenhaus.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/inverses.lean Modified src/group_theory/submonoid/pointwise.lean Modified src/group_theory/transfer.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/linear_algebra/affine_space/slope.lean Modified src/linear_algebra/alternating.lean +/- theorem alternating_map.map_swap Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/quadratic_form/real.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/mean_inequalities.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/class_number/admissible_abs.lean Modified src/number_theory/liouville/liouville_constant.lean Modified src/number_theory/liouville/liouville_with.lean Modified src/number_theory/padics/hensel.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/probability/cond_count.lean Modified src/representation_theory/basic.lean Modified src/ring_theory/dedekind_domain/ideal.lean + theorem fractional_ideal.inv_one - theorem fractional_ideal.one_inv Modified src/ring_theory/derivation.lean Modified src/ring_theory/fractional_ideal.lean - theorem fractional_ideal.eq_one_div_of_mul_eq_one + theorem fractional_ideal.eq_one_div_of_mul_eq_one_right Modified src/ring_theory/polynomial/eisenstein.lean Modified src/ring_theory/power_series/basic.lean + theorem mv_power_series.inv_one - theorem mv_power_series.one_inv + theorem power_series.inv_one - theorem power_series.one_inv Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/valuation/valuation_ring.lean Modified src/tactic/abel.lean +/- theorem tactic.abel.unfold_sub Modified src/tactic/cancel_denoms.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/valued_field.lean Modified src/topology/path_connected.lean Modified test/integration.lean 2022-05-10 11:03:33 e689611 chore({data/{finset,set},order/filter}/pointwise): Reorganize files (#14021) Order the three files more similarly. The idea is to order things as: * Arithmetic notation typeclasses, and lemmas that don't depend on algebraic structure for them: * `0` and `1` * `-` and `⁻¹` * `+` and `*` * `-` and `/` * monoid-like instances, interleaved with the corresponding lemmas (some of them are used for the instances themselves, and more will be in the future) * `•` * `-ᵥ` * scalar instances ESTIMATED CHANGES Modified src/data/finset/pointwise.lean +/- theorem finset.coe_pow +/- theorem finset.image_mul_right' +/- theorem finset.image_mul_right +/- theorem finset.preimage_mul_left_one' +/- theorem finset.preimage_mul_left_one +/- theorem finset.preimage_mul_right_one' +/- theorem finset.preimage_mul_right_one Modified src/data/set/pointwise.lean +/- theorem set.Inter_inv +/- theorem set.Union_inv +/- theorem set.compl_inv +/- theorem set.empty_pow +/- def set.fintype_mul +/- theorem set.image_mul_left' +/- theorem set.image_mul_left +/- theorem set.image_mul_right' +/- theorem set.image_mul_right +/- theorem set.inter_inv +/- theorem set.inv_preimage +/- theorem set.mem_inv +/- theorem set.mul_univ +/- theorem set.pow_mem_pow +/- theorem set.pow_subset_pow +/- theorem set.preimage_mul_left_one' +/- theorem set.preimage_mul_left_one +/- theorem set.preimage_mul_left_singleton +/- theorem set.preimage_mul_right_one' +/- theorem set.preimage_mul_right_one +/- theorem set.preimage_mul_right_singleton - def set.singleton_hom +/- theorem set.subset_mul_left +/- theorem set.subset_mul_right +/- theorem set.union_inv +/- theorem set.univ_mul +/- theorem set.univ_mul_univ Modified src/order/filter/pointwise.lean +/- theorem filter.comap_mul_comap_le +/- theorem filter.map_inv' + theorem filter.pow_mem_pow +/- theorem filter.tendsto.div_div +/- theorem filter.tendsto.inv_inv 2022-05-10 11:03:32 45d2b52 chore(analysis/normed_space/basic): reorder the `restrict_scalars` definitions (#13995) This also update the docstrings to make `normed_space.restrict_scalars` even scarier. The instances here themselves haven't actually changed. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean 2022-05-10 11:03:31 91489ac feat(algebra/module/submodule_bilinear): add `submodule.map₂`, generalizing `submodule.has_mul` (#13709) The motivation here is to be able to talk about combinations of submodules under other bilinear maps, such as the tensor product. This unifies the definitions of and lemmas about `submodule.has_mul` and `submodule.has_scalar'`. The lemmas about `submodule.map₂` are copied verbatim from those for `mul`, and then adjusted slightly replacing `mul_zero` with `linear_map.map_zero` etc. I've then replaced the lemmas about `smul` with the `map₂` proofs where possible. The lemmas about finiteness weren't possible to copy this way, as the proofs about `finset` multiplication are not generalized in a similar way. Someone else can copy these in a future PR. This also adds `set.image2_eq_Union` to match `set.image_eq_Union`, and removes `submodule.union_eq_smul_set` which is neither about submodules nor about `union`, and instead is really just a copy of `set.image_eq_Union` ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean +/- theorem submodule.bot_mul +/- theorem submodule.mul_bot +/- theorem submodule.mul_le +/- theorem submodule.mul_le_mul +/- theorem submodule.mul_le_mul_left +/- theorem submodule.mul_le_mul_right +/- theorem submodule.mul_mem_mul +/- theorem submodule.mul_sup +/- theorem submodule.span_mul_span +/- theorem submodule.sup_mul Added src/algebra/module/submodule_bilinear.lean + theorem submodule.apply_mem_map₂ + theorem submodule.image2_subset_map₂ + def submodule.map₂ + theorem submodule.map₂_bot_left + theorem submodule.map₂_bot_right + theorem submodule.map₂_eq_span_image2 + theorem submodule.map₂_le + theorem submodule.map₂_le_map₂ + theorem submodule.map₂_le_map₂_left + theorem submodule.map₂_le_map₂_right + theorem submodule.map₂_span_span + theorem submodule.map₂_sup_left + theorem submodule.map₂_sup_right + theorem submodule.map₂_supr_left + theorem submodule.map₂_supr_right Modified src/data/set/lattice.lean + theorem set.image2_eq_Union Modified src/ring_theory/henselian.lean Modified src/ring_theory/ideal/operations.lean +/- theorem submodule.bot_smul +/- theorem submodule.smul_bot +/- theorem submodule.smul_le +/- theorem submodule.smul_mem_smul +/- theorem submodule.smul_mono +/- theorem submodule.smul_mono_left +/- theorem submodule.smul_mono_right +/- theorem submodule.smul_sup +/- theorem submodule.span_smul_eq +/- theorem submodule.sup_smul - theorem submodule.union_eq_smul_set Modified src/ring_theory/noetherian.lean + theorem submodule.fg.map₂ +/- theorem submodule.fg.mul 2022-05-10 08:56:43 34f29db feat(topology/algebra/group): Division is an open map (#14028) A few missing lemmas about division in topological groups. ESTIMATED CHANGES Modified src/topology/algebra/group.lean +/- theorem inv_closure +/- theorem is_closed.inv + theorem is_closed_map_div_left + theorem is_closed_map_inv +/- theorem is_compact.inv + theorem is_open.closure_div +/- theorem is_open.closure_mul + theorem is_open.div_closure + theorem is_open.div_left + theorem is_open.div_right +/- theorem is_open.inv +/- theorem is_open.mul_closure +/- theorem is_open.mul_left +/- theorem is_open.mul_right + theorem is_open_map_div_left + theorem is_open_map_inv +/- theorem nhds_translation_div + theorem subset_interior_div + theorem subset_interior_div_left + theorem subset_interior_div_right +/- theorem subset_interior_mul +/- theorem subset_interior_mul_left +/- theorem subset_interior_mul_right 2022-05-10 08:56:42 c892622 move(order/synonym): Group `order_dual` and `lex` (#13769) Move `to_dual`, `of_dual`, `to_lex`, `of_lex` to a new file `order.synonym`. This does not change the import tree, because `order.lexicographic` had slightly higher imports than `order.order_dual`, but those weren't used for `lex` itself. ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean Modified src/algebra/order/group.lean Modified src/algebra/order/rearrangement.lean Modified src/analysis/convex/function.lean Modified src/data/finset/lattice.lean Modified src/data/psigma/order.lean Modified src/data/sigma/order.lean Modified src/data/sum/order.lean Modified src/group_theory/group_action/fixing_subgroup.lean Modified src/order/compare.lean Modified src/order/galois_connection.lean Modified src/order/lexicographic.lean - def lex - def of_lex - theorem of_lex_inj - theorem of_lex_symm_eq - theorem of_lex_to_lex - def to_lex - theorem to_lex_inj - theorem to_lex_of_lex - theorem to_lex_symm_eq Modified src/order/max.lean Deleted src/order/order_dual.lean - theorem order_dual.le_to_dual - theorem order_dual.lt_to_dual - def order_dual.of_dual - theorem order_dual.of_dual_inj - theorem order_dual.of_dual_le_of_dual - theorem order_dual.of_dual_lt_of_dual - theorem order_dual.of_dual_symm_eq - theorem order_dual.of_dual_to_dual - def order_dual.to_dual - theorem order_dual.to_dual_inj - theorem order_dual.to_dual_le - theorem order_dual.to_dual_le_to_dual - theorem order_dual.to_dual_lt - theorem order_dual.to_dual_lt_to_dual - theorem order_dual.to_dual_of_dual - theorem order_dual.to_dual_symm_eq Added src/order/synonym.lean + def lex + def of_lex + theorem of_lex_inj + theorem of_lex_symm_eq + theorem of_lex_to_lex + theorem order_dual.le_to_dual + theorem order_dual.lt_to_dual + def order_dual.of_dual + theorem order_dual.of_dual_inj + theorem order_dual.of_dual_le_of_dual + theorem order_dual.of_dual_lt_of_dual + theorem order_dual.of_dual_symm_eq + theorem order_dual.of_dual_to_dual + def order_dual.to_dual + theorem order_dual.to_dual_inj + theorem order_dual.to_dual_le + theorem order_dual.to_dual_le_to_dual + theorem order_dual.to_dual_lt + theorem order_dual.to_dual_lt_to_dual + theorem order_dual.to_dual_of_dual + theorem order_dual.to_dual_symm_eq + def to_lex + theorem to_lex_inj + theorem to_lex_of_lex + theorem to_lex_symm_eq 2022-05-10 08:02:09 37c691f feat(analysis/convex/*): Convexity and subtraction (#14015) Now that we have a fair bit more pointwise operations on `set`, a few results can be (re)written using them. For example, existing lemmas about `add` and `neg` can be combined to give lemmas about `sub`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem convex.affine_image - theorem convex.neg_preimage +/- theorem convex.sub +/- theorem convex.translate + theorem convex.vadd Modified src/analysis/convex/function.lean + theorem concave_on.add_strict_concave_on + theorem concave_on.sub + theorem concave_on.sub_strict_convex_on + theorem convex_on.add_strict_convex_on + theorem convex_on.sub + theorem convex_on.sub_strict_concave_on + theorem strict_concave_on.add_concave_on + theorem strict_concave_on.sub + theorem strict_concave_on.sub_convex_on + theorem strict_convex_on.add_convex_on + theorem strict_convex_on.sub + theorem strict_convex_on.sub_concave_on Modified src/analysis/convex/star.lean +/- theorem star_convex.neg - theorem star_convex.neg_preimage + theorem star_convex.sub' +/- theorem star_convex.sub Modified src/analysis/convex/strict.lean +/- theorem strict_convex.neg - theorem strict_convex.neg_preimage + theorem strict_convex.sub 2022-05-10 05:20:28 5650366 chore(.github/workflows): disable merge conflicts bot for now (#14057) ESTIMATED CHANGES Deleted .github/workflows/merge_conflicts.yml 2022-05-10 05:20:27 153b20f chore(scripts): update nolints.txt (#14056) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-05-10 05:20:26 b17070d fix(data/real/ennreal): style and golfing (#14055) ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_inv_two +/- theorem ennreal.inv_one +/- theorem ennreal.mul_left_mono +/- theorem ennreal.mul_right_mono 2022-05-10 05:20:26 87069e9 chore(ring_theory/hahn_series): golf a proof (#14054) ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean 2022-05-10 03:35:32 c5e0299 feat(group_theory/subsemigroup/{center, centralizer}): define center and centralizer as subsemigroups (#13627) This defines the center and centralizers for semigroups. This is necessary so that we can do the same for non-unital semirings. - [x] depends on: #12112 - [x] depends on: #13903 ESTIMATED CHANGES Modified src/group_theory/submonoid/center.lean + theorem add_submonoid.center_to_add_subsemigroup + theorem submonoid.center_to_subsemigroup Modified src/group_theory/submonoid/centralizer.lean + theorem add_submonoid.centralizer_to_add_subsemigroup + theorem submonoid.centralizer_to_subsemigroup Modified src/group_theory/subsemigroup/center.lean + def subsemigroup.center + theorem subsemigroup.center_eq_top + theorem subsemigroup.coe_center + theorem subsemigroup.mem_center_iff Modified src/group_theory/subsemigroup/centralizer.lean + def subsemigroup.centralizer + theorem subsemigroup.centralizer_le + theorem subsemigroup.centralizer_univ + theorem subsemigroup.coe_centralizer + theorem subsemigroup.mem_centralizer_iff 2022-05-09 20:46:25 260d5ce feat(model_theory/semantics): Realizing restricted terms and formulas (#14014) Shows that realizing a restricted term or formula gives the same value as the unrestricted version. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.inclusion_comp_inclusion Modified src/model_theory/semantics.lean + theorem first_order.language.bounded_formula.realize_restrict_free_var + theorem first_order.language.term.realize_restrict_var + theorem first_order.language.term.realize_restrict_var_left 2022-05-09 16:57:31 98f2779 refactor(number_theory/legendre_symbol/*): move section `general` from `quadratic_char.lean` into new file `auxiliary.lean` (#14027) This is a purely administrative step (in preparation of adding more files that may need some of the auxiliary results). We move the collection of auxiliary results that constitute `section general` of `quadratic_char.lean` to a new file `auxiliary.lean` (and change the `import`s of `quadratic_char.lean` accordingly). This new file is meant as a temporary place for these auxiliary results; when the refactor of `quadratic_reciprocity` is finished, they will be moved to appropriate files in mathlib. ESTIMATED CHANGES Added src/number_theory/legendre_symbol/auxiliary.lean + theorem finite_field.even_card_iff_char_two + theorem finite_field.even_card_of_char_two + theorem finite_field.exists_nonsquare + theorem finite_field.is_square_iff + theorem finite_field.is_square_of_char_two + theorem finite_field.neg_ne_self_of_char_ne_two + theorem finite_field.neg_one_ne_one_of_char_ne_two + theorem finite_field.odd_card_of_char_ne_two + theorem finite_field.pow_dichotomy + theorem finite_field.unit_is_square_iff + theorem is_square_of_char_two' + theorem nat.odd_mod_four_iff Modified src/number_theory/legendre_symbol/quadratic_char.lean - theorem finite_field.even_card_iff_char_two - theorem finite_field.even_card_of_char_two - theorem finite_field.exists_nonsquare - theorem finite_field.is_square_iff - theorem finite_field.is_square_of_char_two - theorem finite_field.neg_ne_self_of_char_ne_two - theorem finite_field.neg_one_ne_one_of_char_ne_two - theorem finite_field.odd_card_of_char_ne_two - theorem finite_field.pow_dichotomy - theorem finite_field.unit_is_square_iff - theorem is_square_of_char_two' - theorem nat.odd_mod_four_iff 2022-05-09 14:40:50 31af0e8 feat(model_theory/satisfiability): Definition of categorical theories (#14038) Defines that a first-order theory is `κ`-categorical when all models of cardinality `κ` are isomorphic. Shows that all theories in the empty language are `κ`-categorical for all cardinals `κ`. ESTIMATED CHANGES Modified src/model_theory/satisfiability.lean + def cardinal.categorical + theorem cardinal.empty_Theory_categorical 2022-05-09 14:40:49 5d8b432 feat(model_theory/language_map): Cardinality of languages with constants (#13981) `first_order.language.card_with_constants` shows that the cardinality of `L[[A]]` is `L.card + # A`. ESTIMATED CHANGES Modified src/logic/equiv/basic.lean + def equiv.sigma_nat_succ Modified src/model_theory/basic.lean + theorem first_order.language.card_mk₂ + theorem first_order.language.constants_mk₂ + theorem first_order.sequence₂.lift_mk + theorem first_order.sequence₂.sum_card +/- def first_order.sequence₂ Modified src/model_theory/bundled.lean Modified src/model_theory/language_map.lean + theorem first_order.language.card_constants_on + theorem first_order.language.card_with_constants +/- def first_order.language.constants_on +/- theorem first_order.language.constants_on_constants - def first_order.language.constants_on_functions Modified src/model_theory/substructures.lean Modified src/set_theory/cardinal/basic.lean + theorem cardinal.sum_nat_eq_add_sum_succ 2022-05-09 14:40:47 4eb76a7 refactor(set_theory/ordinal/arithmetic): Rename theorems to match `nat.log` API (#12733) We match the API for `ordinal.log` with that of `nat.log`. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.le_log +/- def ordinal.log - theorem ordinal.log_le_log - theorem ordinal.log_lt + theorem ordinal.log_mono_right - theorem ordinal.log_not_one_lt + theorem ordinal.log_of_left_le_one + theorem ordinal.log_of_not_one_lt_left - theorem ordinal.log_one + theorem ordinal.log_one_left + theorem ordinal.log_one_right - theorem ordinal.log_zero + theorem ordinal.log_zero_left + theorem ordinal.log_zero_right + theorem ordinal.lt_opow_iff_log_lt - theorem ordinal.lt_opow_succ_log + theorem ordinal.lt_opow_succ_log_self +/- theorem ordinal.mod_opow_log_lt_self + theorem ordinal.opow_le_iff_le_log - theorem ordinal.opow_log_le + theorem ordinal.opow_log_le_self +/- theorem ordinal.opow_mul_add_pos + theorem ordinal.zero_le_one Modified src/set_theory/ordinal/principal.lean 2022-05-09 12:58:30 00cec55 feat(linear_algebra/affine_space/independent): add characterisation of affine independence for modules (#14043) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/combination.lean + theorem finset.weighted_vsub_eq_linear_combination Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent_iff 2022-05-09 12:58:29 1fef515 chore(analysis/normed_space/basic): add short-circuit instance to obtain module structure over reals (#14013) ESTIMATED CHANGES Modified src/algebra/module/pi.lean 2022-05-09 12:58:28 4da939b feat(probability_theory/cond_count): use the counting measure to describe probability in the elementary sense (#13484) ESTIMATED CHANGES Added src/probability/cond_count.lean + def probability_theory.cond_count + theorem probability_theory.cond_count_add_compl_eq + theorem probability_theory.cond_count_compl + theorem probability_theory.cond_count_disjoint_union + theorem probability_theory.cond_count_empty + theorem probability_theory.cond_count_empty_meas + theorem probability_theory.cond_count_eq_one_of + theorem probability_theory.cond_count_eq_zero_iff + theorem probability_theory.cond_count_inter' + theorem probability_theory.cond_count_inter + theorem probability_theory.cond_count_inter_self + theorem probability_theory.cond_count_is_probability_measure + theorem probability_theory.cond_count_self + theorem probability_theory.cond_count_singleton + theorem probability_theory.cond_count_union + theorem probability_theory.cond_count_univ + theorem probability_theory.finite_of_cond_count_ne_zero + theorem probability_theory.pred_true_of_cond_count_eq_one Modified src/probability/conditional.lean + theorem probability_theory.cond_add_cond_compl_eq +/- theorem probability_theory.cond_apply + theorem probability_theory.cond_cond_eq_cond_inter' +/- theorem probability_theory.cond_cond_eq_cond_inter + theorem probability_theory.cond_empty +/- theorem probability_theory.cond_eq_inv_mul_cond_mul + theorem probability_theory.cond_inter_self + theorem probability_theory.cond_mul_eq_inter' +/- theorem probability_theory.cond_mul_eq_inter +/- theorem probability_theory.cond_pos_of_inter_ne_zero 2022-05-09 12:18:53 5397ac0 chore(ring_theory/hahn_series): remove redundant instances (#14045) Both of these instances can be proved `by apply_instance` ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean 2022-05-09 11:26:03 c43486e feat(category_theory/limits): allow (co)limits over lower universes in algebraic categories (#13990) I'm concerned about the new universe annotations required in places. It was not so impossible to add them when proofs broke, but the proofs might have been hard to construct in the first place .... ESTIMATED CHANGES Modified src/algebra/category/Algebra/limits.lean +/- def Algebra.has_limits.limit_cone +/- def Algebra.has_limits.limit_cone_is_limit +/- def Algebra.limit_π_alg_hom +/- def Algebra.sections_subalgebra Modified src/algebra/category/FinVect/limits.lean Modified src/algebra/category/Group/filtered_colimits.lean +/- def CommGroup.filtered_colimits.G +/- def Group.filtered_colimits.G Modified src/algebra/category/Group/limits.lean +/- def AddCommGroup.kernel_iso_ker +/- def CommGroup.forget₂_CommMon_preserves_limits_aux +/- def CommGroup.limit_cone +/- def CommGroup.limit_cone_is_limit +/- def Group.limit_cone +/- def Group.limit_cone_is_limit Modified src/algebra/category/Module/basic.lean +/- theorem Module.coe_of Modified src/algebra/category/Module/filtered_colimits.lean Modified src/algebra/category/Module/limits.lean +/- def Module.forget₂_AddCommGroup_preserves_limits_aux +/- def Module.has_limits.limit_cone +/- def Module.has_limits.limit_cone_is_limit +/- def Module.sections_submodule Modified src/algebra/category/Module/products.lean Modified src/algebra/category/Mon/filtered_colimits.lean +/- def CommMon.filtered_colimits.M +/- def Mon.filtered_colimits.M Modified src/algebra/category/Mon/limits.lean +/- def CommMon.limit_cone +/- def CommMon.limit_cone_is_limit +/- def Mon.has_limits.limit_cone +/- def Mon.has_limits.limit_cone_is_limit +/- def Mon.limit_π_monoid_hom +/- def Mon.sections_submonoid Modified src/algebra/category/Ring/filtered_colimits.lean +/- def SemiRing.filtered_colimits.R Modified src/algebra/category/Ring/limits.lean +/- def CommRing.forget₂_CommSemiRing_preserves_limits_aux +/- def CommRing.limit_cone +/- def CommRing.limit_cone_is_limit +/- def CommSemiRing.limit_cone +/- def CommSemiRing.limit_cone_is_limit +/- def Ring.forget₂_AddCommGroup_preserves_limits_aux +/- def Ring.limit_cone +/- def Ring.limit_cone_is_limit +/- def Ring.sections_subring +/- def SemiRing.forget₂_AddCommMon_preserves_limits_aux +/- def SemiRing.forget₂_Mon_preserves_limits_aux +/- def SemiRing.has_limits.limit_cone +/- def SemiRing.has_limits.limit_cone_is_limit +/- def SemiRing.limit_π_ring_hom +/- def SemiRing.sections_subsemiring Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/algebraic_topology/fundamental_groupoid/product.lean Modified src/category_theory/category/Cat/limit.lean Modified src/category_theory/limits/concrete_category.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/final.lean Modified src/category_theory/limits/preserves/filtered.lean Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.colimit.w_apply' +/- theorem category_theory.limits.types.colimit.w_apply + theorem category_theory.limits.types.colimit.ι_desc_apply' +/- theorem category_theory.limits.types.colimit.ι_desc_apply + theorem category_theory.limits.types.colimit.ι_map_apply' +/- theorem category_theory.limits.types.colimit.ι_map_apply +/- def category_theory.limits.types.colimit_cocone +/- def category_theory.limits.types.colimit_cocone_is_colimit +/- theorem category_theory.limits.types.colimit_eq +/- def category_theory.limits.types.colimit_equiv_quot +/- theorem category_theory.limits.types.colimit_equiv_quot_apply +/- theorem category_theory.limits.types.colimit_equiv_quot_symm_apply +/- def category_theory.limits.types.is_limit_equiv_sections +/- theorem category_theory.limits.types.jointly_surjective' +/- theorem category_theory.limits.types.jointly_surjective + theorem category_theory.limits.types.limit.lift_π_apply' +/- theorem category_theory.limits.types.limit.lift_π_apply + theorem category_theory.limits.types.limit.map_π_apply' +/- theorem category_theory.limits.types.limit.map_π_apply +/- def category_theory.limits.types.limit.mk + theorem category_theory.limits.types.limit.w_apply' +/- theorem category_theory.limits.types.limit.w_apply + theorem category_theory.limits.types.limit.π_mk' +/- theorem category_theory.limits.types.limit.π_mk +/- def category_theory.limits.types.limit_cone +/- def category_theory.limits.types.limit_cone_is_limit +/- def category_theory.limits.types.limit_equiv_sections +/- theorem category_theory.limits.types.limit_equiv_sections_apply + theorem category_theory.limits.types.limit_equiv_sections_symm_apply' +/- theorem category_theory.limits.types.limit_equiv_sections_symm_apply + theorem category_theory.limits.types.limit_ext' +/- theorem category_theory.limits.types.limit_ext + theorem category_theory.limits.types.limit_ext_iff' +/- theorem category_theory.limits.types.limit_ext_iff +/- def category_theory.limits.types.quot.rel +/- def category_theory.limits.types.quot Modified src/category_theory/sites/sheaf_of_types.lean Modified src/topology/category/CompHaus/default.lean +/- def CompHaus.limit_cone +/- def CompHaus.limit_cone_is_limit Modified src/topology/category/Profinite/cofiltered_limit.lean Modified src/topology/category/Profinite/default.lean Modified src/topology/category/Top/limits.lean +/- theorem Top.coinduced_of_is_colimit +/- def Top.colimit_cocone +/- def Top.colimit_cocone_is_colimit +/- theorem Top.colimit_is_open_iff +/- theorem Top.colimit_topology +/- theorem Top.induced_of_is_limit +/- def Top.limit_cone +/- def Top.limit_cone_infi +/- def Top.limit_cone_infi_is_limit +/- def Top.limit_cone_is_limit +/- theorem Top.limit_topology +/- def Top.pi_fan +/- def Top.pi_fan_is_limit +/- def Top.pi_iso_pi +/- theorem Top.pi_iso_pi_hom_apply +/- theorem Top.pi_iso_pi_inv_π +/- theorem Top.pi_iso_pi_inv_π_apply +/- def Top.pi_π +/- def Top.sigma_cofan +/- def Top.sigma_cofan_is_colimit +/- def Top.sigma_iso_sigma +/- theorem Top.sigma_iso_sigma_hom_ι +/- theorem Top.sigma_iso_sigma_hom_ι_apply +/- theorem Top.sigma_iso_sigma_inv_apply +/- def Top.sigma_ι Modified src/topology/gluing.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/stalks.lean 2022-05-09 11:25:59 ad244dd feat(ring_theory/dedekind_domain/adic_valuation): extend valuation (#13462) We extend the `v`-adic valuation on a Dedekind domain `R` to its field of fractions `K` and prove some basic properties. We define the completion of `K` with respect to this valuation, as well as its ring of integers, and provide some topological instances. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/adic_valuation.lean + def is_dedekind_domain.height_one_spectrum.adic_completion + def is_dedekind_domain.height_one_spectrum.adic_completion_integers + def is_dedekind_domain.height_one_spectrum.adic_valued + theorem is_dedekind_domain.height_one_spectrum.adic_valued_apply + def is_dedekind_domain.height_one_spectrum.valuation + theorem is_dedekind_domain.height_one_spectrum.valuation_def + theorem is_dedekind_domain.height_one_spectrum.valuation_exists_uniformizer + theorem is_dedekind_domain.height_one_spectrum.valuation_le_one + theorem is_dedekind_domain.height_one_spectrum.valuation_lt_one_iff_dvd + theorem is_dedekind_domain.height_one_spectrum.valuation_of_algebra_map + theorem is_dedekind_domain.height_one_spectrum.valuation_of_mk' + theorem is_dedekind_domain.height_one_spectrum.valuation_uniformizer_ne_zero + theorem is_dedekind_domain.height_one_spectrum.valued_adic_completion_def 2022-05-09 09:20:59 fc64096 feat(topology/algebra/infinite_sum): summable on subtype iff (#14032) A summable version of the `has_sum` lemma previously (the `tsum` version is already present) ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem summable_subtype_iff_indicator 2022-05-09 09:20:58 d55a654 feat(order/*): Order constructions under `to_dual`/`of_dual` (#13788) A few missing lemmas about `of_dual` and `to_dual`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.map_of_dual_max + theorem finset.map_of_dual_min + theorem finset.map_to_dual_max + theorem finset.map_to_dual_min - theorem finset.max'_eq_of_dual_min' - theorem finset.min'_eq_of_dual_max' + theorem finset.of_dual_inf' + theorem finset.of_dual_inf + theorem finset.of_dual_max' - theorem finset.of_dual_max_eq_min_of_dual + theorem finset.of_dual_min' - theorem finset.of_dual_min_eq_max_of_dual + theorem finset.of_dual_sup' + theorem finset.of_dual_sup + theorem finset.to_dual_inf' + theorem finset.to_dual_inf + theorem finset.to_dual_max' + theorem finset.to_dual_min' + theorem finset.to_dual_sup' + theorem finset.to_dual_sup Modified src/order/boolean_algebra.lean + theorem of_dual_compl + theorem to_dual_compl Modified src/order/bounded_order.lean + theorem of_dual_bot + theorem of_dual_top + theorem to_dual_bot + theorem to_dual_top Modified src/order/lattice.lean + theorem of_dual_inf + theorem of_dual_max + theorem of_dual_min + theorem of_dual_sup + theorem to_dual_inf + theorem to_dual_max + theorem to_dual_min + theorem to_dual_sup 2022-05-09 09:20:56 1d9d573 feat(algebra/order/monoid_lemmas_zero_lt): add some lemmas assuming `has_mul` `has_zero` `preorder` (#13296) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.le_mul_of_le_mul_left + theorem zero_lt.le_mul_of_le_mul_right + theorem zero_lt.lt_mul_of_lt_mul_left + theorem zero_lt.lt_mul_of_lt_mul_right + theorem zero_lt.mul_le_mul_of_le_of_le' + theorem zero_lt.mul_le_mul_of_le_of_le + theorem zero_lt.mul_le_of_mul_le_left + theorem zero_lt.mul_le_of_mul_le_right + theorem zero_lt.mul_lt_mul_of_le_of_lt' + theorem zero_lt.mul_lt_mul_of_le_of_lt + theorem zero_lt.mul_lt_mul_of_lt_of_le' + theorem zero_lt.mul_lt_mul_of_lt_of_le + theorem zero_lt.mul_lt_mul_of_lt_of_lt' + theorem zero_lt.mul_lt_mul_of_lt_of_lt + theorem zero_lt.mul_lt_of_mul_lt_left + theorem zero_lt.mul_lt_of_mul_lt_right 2022-05-09 08:31:21 b38aee4 feat(analysis/special_functions): differentiability of Gamma function (#13000) Third instalment of my Gamma-function project (following #12917 and #13156). This PR adds the proof that the Gamma function is complex-analytic, away from the poles at non-positive integers. ESTIMATED CHANGES Modified src/analysis/special_functions/gamma.lean + theorem complex.differentiable_at_Gamma + theorem complex.differentiable_at_Gamma_aux + theorem complex.has_deriv_at_Gamma_integral + theorem dGamma_integral_abs_convergent + def dGamma_integrand + theorem dGamma_integrand_is_O_at_top + def dGamma_integrand_real + theorem loc_unif_bound_dGamma_integrand +/- theorem real.Gamma_integrand_is_O Modified src/analysis/special_functions/log/basic.lean + theorem real.abs_log_mul_self_lt Modified src/analysis/special_functions/pow.lean + theorem real.abs_log_mul_self_rpow_lt 2022-05-09 06:03:23 bf8db9b feat(analysis/normed_space/matrix_exponential): lemmas about the matrix exponential (#13520) This checks off "Matrix Exponential" from the undergrad TODO list, by providing the majority of the "obvious" statements about matrices over a real normed algebra. Combining this PR with what is already in mathlib, we have: * `exp 0 = 1` * `exp (A + B) = exp A * exp B` when `A` and `B` commute * `exp (n • A) = exp A ^ n` * `exp (z • A) = exp A ^ z` * `exp (-A) = (exp A)⁻¹` * `exp (U * D * ↑(U⁻¹)) = U * exp D * ↑(U⁻¹)` * `exp Aᵀ = (exp A)ᵀ` * `exp Aᴴ = (exp A)ᴴ` * `A * exp B = exp B * A` if `A * B = B * A` * `exp (diagonal v) = diagonal (exp v)` * `exp (block_diagonal v) = block_diagonal (exp v)` * `exp (block_diagonal' v) = block_diagonal' (exp v)` Still missing are: * `det (exp A) = exp (trace A)` * `exp A` can be written a weighted sum of powers of `A : matrix n n R` less than `fintype.card n` (an extension of [`matrix.pow_eq_aeval_mod_charpoly`](https://leanprover-community.github.io/mathlib_docs/linear_algebra/matrix/charpoly/coeff.html#matrix.pow_eq_aeval_mod_charpoly)) The proofs in this PR may seem small, but they had a substantial dependency chain: https://github.com/leanprover-community/mathlib/projects/16. It turns out that there's always more missing glue than you think there is. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/normed_space/exponential.lean Added src/analysis/normed_space/matrix_exponential.lean + theorem matrix.exp_add_of_commute + theorem matrix.exp_block_diagonal' + theorem matrix.exp_block_diagonal + theorem matrix.exp_conj' + theorem matrix.exp_conj + theorem matrix.exp_conj_transpose + theorem matrix.exp_diagonal + theorem matrix.exp_neg + theorem matrix.exp_nsmul + theorem matrix.exp_sum_of_commute + theorem matrix.exp_transpose + theorem matrix.exp_units_conj' + theorem matrix.exp_units_conj + theorem matrix.exp_zsmul + theorem matrix.is_unit_exp 2022-05-09 02:37:50 77c86ba rename(imo/imo1972_b2 → imo/imo1972_q5): Fix file name (#14037) ESTIMATED CHANGES Renamed archive/imo/imo1972_b2.lean to archive/imo/imo1972_q5.lean 2022-05-09 02:37:49 8412f1f feat(representation_theory/invariants): invariants of `lin_hom` are representation morphisms (#14012) ESTIMATED CHANGES Modified src/representation_theory/invariants.lean + def representation.lin_hom.invariants_equiv_Rep_hom + theorem representation.lin_hom.mem_invariants_iff_comm 2022-05-09 02:37:47 594ceda feat(analysis/normed_space/exponential): Generalize `field` lemmas to `division_ring` (#13997) This generalizes the lemmas about `exp 𝕂 𝕂` to lemmas about `exp 𝕂 𝔸` where `𝔸` is a `division_ring`. This moves the lemmas down to the appropriate division_ring sections, and replaces the word `field` with `div` in their names, since `division_ring` is a mouthful, and really the name reflects the use of `/` in the definition. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean +/- theorem exp_continuous + theorem exp_eq_tsum_div - theorem exp_eq_tsum_field + theorem exp_series_apply_eq_div' + theorem exp_series_apply_eq_div - theorem exp_series_apply_eq_field' - theorem exp_series_apply_eq_field + theorem exp_series_div_has_sum_exp + theorem exp_series_div_has_sum_exp_of_mem_ball + theorem exp_series_div_summable + theorem exp_series_div_summable_of_mem_ball - theorem exp_series_field_has_sum_exp - theorem exp_series_field_has_sum_exp_of_mem_ball - theorem exp_series_field_summable - theorem exp_series_field_summable_of_mem_ball + theorem exp_series_sum_eq_div - theorem exp_series_sum_eq_field + theorem norm_exp_series_div_summable + theorem norm_exp_series_div_summable_of_mem_ball - theorem norm_exp_series_field_summable - theorem norm_exp_series_field_summable_of_mem_ball Modified src/analysis/special_functions/exponential.lean Modified src/analysis/specific_limits/normed.lean Modified src/combinatorics/derangements/exponential.lean 2022-05-09 02:37:47 afec1d7 fix(tactics/alias): Make docstring calculation available to to_additive (#13968) PR #13944 fixed the docstrings for iff-style aliases, but because of code duplication I added in #13330 this did not apply to aliases introduced by `to_additive`. This fixes that. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/tactic/alias.lean 2022-05-09 02:37:45 34b61e3 chore(algebra/regular/*): generalisation linter (#13955) ESTIMATED CHANGES Modified src/algebra/regular/basic.lean Modified src/algebra/regular/smul.lean +/- theorem is_smul_regular.mul +/- theorem is_smul_regular.mul_and_mul_iff +/- theorem is_smul_regular.mul_iff_right +/- theorem is_smul_regular.of_mul 2022-05-09 02:37:44 5253153 feat(algebra/category/Module/basic): `iso.hom_congr`agrees with `linear_equiv.arrow_congr` (#13954) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean + theorem Module.iso.conj_eq_conj + theorem Module.iso.hom_congr_eq_arrow_congr 2022-05-09 02:37:43 4f386e6 feat(set_theory/pgame/birthday): Birthdays of ordinals (#13714) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean + theorem pgame.le_birthday + theorem pgame.neg_birthday + theorem pgame.neg_birthday_le + theorem pgame.to_pgame_birthday Modified src/set_theory/game/ordinal.lean 2022-05-09 02:37:42 1e8f381 feat(algebraic_topology/dold_kan): defining some null homotopic maps (#13085) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/homology/complex_shape.lean + theorem complex_shape.down'_mk + theorem complex_shape.down_mk Added src/algebraic_topology/dold_kan/homotopies.lean + def algebraic_topology.dold_kan.Hσ + theorem algebraic_topology.dold_kan.Hσ_eq_zero + def algebraic_topology.dold_kan.c + theorem algebraic_topology.dold_kan.c_mk + theorem algebraic_topology.dold_kan.cs_down_0_not_rel_left + def algebraic_topology.dold_kan.homotopy_Hσ_to_zero + def algebraic_topology.dold_kan.hσ' + theorem algebraic_topology.dold_kan.hσ'_eq + theorem algebraic_topology.dold_kan.hσ'_eq_zero + theorem algebraic_topology.dold_kan.hσ'_naturality + def algebraic_topology.dold_kan.hσ + theorem algebraic_topology.dold_kan.map_Hσ + theorem algebraic_topology.dold_kan.map_hσ' + def algebraic_topology.dold_kan.nat_trans_Hσ Added src/algebraic_topology/dold_kan/notations.lean 2022-05-09 00:34:40 bf6e13b refactor(algebra/{group,group_with_zero/basic): Generalize lemmas to division monoids (#14000) Generalize `group` and `group_with_zero` lemmas to `division_monoid`. We do not actually delete the original lemmas but make them one-liners from the new ones. The next PR will then delete the old lemmas and perform the renames in all files. Lemmas are renamed because * one of the `group` or `group_with_zero` name has to go * the new API should have a consistent naming convention Pre-emptive lemma renames ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/group/basic.lean +/- theorem div_div +/- theorem div_div_assoc_swap +/- theorem div_div_div_comm +/- theorem div_eq_div_mul_div +/- theorem div_eq_inv_mul' + theorem div_eq_mul_one_div +/- theorem div_inv_eq_mul +/- theorem div_mul +/- theorem div_ne_one_of_ne +/- theorem div_one' + theorem division_comm_monoid.div_div + theorem division_comm_monoid.div_div_div_comm + theorem division_comm_monoid.div_div_div_eq + theorem division_comm_monoid.div_eq_inv_mul + theorem division_comm_monoid.div_mul + theorem division_comm_monoid.div_mul_comm + theorem division_comm_monoid.div_mul_div_comm + theorem division_comm_monoid.div_mul_eq_div_div + theorem division_comm_monoid.div_mul_eq_div_mul_one_div + theorem division_comm_monoid.div_mul_eq_mul_div + theorem division_comm_monoid.div_right_comm + theorem division_comm_monoid.inv_div_inv + theorem division_comm_monoid.inv_inv_div_inv + theorem division_comm_monoid.inv_mul' + theorem division_comm_monoid.inv_mul_eq_div + theorem division_comm_monoid.mul_comm_div + theorem division_comm_monoid.mul_div_left_comm + theorem division_comm_monoid.mul_div_mul_comm + theorem division_comm_monoid.mul_div_right_comm + theorem division_comm_monoid.mul_inv + theorem division_comm_monoid.one_div_mul_one_div + theorem division_monoid.div_div_eq_mul_div + theorem division_monoid.div_inv_eq_mul + theorem division_monoid.div_mul_eq_div_div_swap + theorem division_monoid.div_ne_one_of_ne + theorem division_monoid.div_one + theorem division_monoid.eq_inv_of_mul_eq_one_left + theorem division_monoid.eq_inv_of_mul_eq_one_right + theorem division_monoid.eq_of_div_eq_one + theorem division_monoid.eq_of_one_div_eq_one_div + theorem division_monoid.eq_one_div_of_mul_eq_one_left + theorem division_monoid.eq_one_div_of_mul_eq_one_right + theorem division_monoid.inv_div + theorem division_monoid.inv_div_left + theorem division_monoid.inv_eq_of_mul_eq_one_left + theorem division_monoid.inv_eq_one + theorem division_monoid.inv_ne_one + theorem division_monoid.inv_one + theorem division_monoid.one_div_div + theorem division_monoid.one_div_mul_one_div_rev + theorem division_monoid.one_div_one + theorem division_monoid.one_div_one_div + theorem division_monoid.one_eq_inv +/- theorem eq_inv_of_mul_eq_one +/- theorem eq_of_div_eq_one' +/- theorem inv_div' +/- theorem inv_div_inv +/- theorem inv_eq_one +/- theorem inv_inv_div_inv +/- theorem inv_mul' +/- theorem inv_mul_eq_div +/- theorem inv_ne_one +/- theorem left_inverse_inv +/- theorem mul_inv +/- theorem one_eq_inv +/- theorem one_inv + theorem right_inverse_inv Modified src/algebra/group/defs.lean + theorem inv_eq_of_mul_eq_one_right Modified src/algebra/group_with_zero/basic.lean +/- theorem div_eq_inv_mul - theorem div_eq_mul_one_div +/- theorem div_one +/- theorem eq_inv_of_mul_left_eq_one +/- theorem eq_inv_of_mul_right_eq_one +/- theorem eq_of_div_eq_one +/- theorem eq_of_one_div_eq_one_div +/- theorem eq_one_div_of_mul_eq_one +/- theorem eq_one_div_of_mul_eq_one_left +/- theorem inv_div +/- theorem inv_div_left +/- theorem inv_eq_one₀ +/- theorem inv_one +/- theorem mul_comm_div' +/- theorem mul_inv_rev₀ +/- theorem mul_inv₀ +/- theorem one_div_div +/- theorem one_div_one +/- theorem one_div_one_div Modified src/analysis/special_functions/trigonometric/complex.lean 2022-05-08 19:06:53 449ba97 refactor(data/nat/log): Golf + improved theorem names (#14019) Other than golfing and moving a few things around, our main changes are: - rename `log_le_log_of_le` to `log_mono_right`, analogous renames elsewhere. - add `lt_pow_iff_log_lt` and a `clog` analog. ESTIMATED CHANGES Modified src/data/nat/choose/central.lean Modified src/data/nat/digits.lean Modified src/data/nat/log.lean + theorem nat.clog_anti_left - theorem nat.clog_le_clog_of_le - theorem nat.clog_le_clog_of_left_ge + theorem nat.clog_mono_right +/- theorem nat.le_pow_iff_clog_le + theorem nat.log_anti_left - theorem nat.log_eq_zero - theorem nat.log_le_log_of_le - theorem nat.log_le_log_of_left_ge + theorem nat.log_mono_right +/- theorem nat.log_monotone +/- theorem nat.log_of_left_le_one +/- theorem nat.log_of_lt +/- theorem nat.log_one_left +/- theorem nat.log_zero_left + theorem nat.lt_pow_iff_log_lt +/- theorem nat.pow_le_iff_le_log + theorem nat.pow_lt_iff_lt_clog Modified src/data/nat/multiplicity.lean 2022-05-08 18:01:58 163ef61 feat(topology/algebra/infinite_sum): add `tsum_star` (#13999) These lemmas names are copied from `tsum_neg` and friends. As a result, `star_exp` can be golfed and generalized. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean +/- theorem star_exp Modified src/analysis/normed_space/star/exponential.lean Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.star + theorem summable.of_star + theorem summable.star + theorem summable_star_iff' + theorem summable_star_iff + theorem tsum_star 2022-05-08 18:01:58 dd16a83 fix(topology/algebra/module/weak_dual): fix namespace issue, add a few extra lemmas (#13407) This PR fixes a namespace issue in `weak_dual`, to ensure lemmas with names like `eval_continuous` are appropriately namespaced. Also, lemmas about continuity of the evaluation map have been copied from `weak_bilin` to `weak_dual`. ESTIMATED CHANGES Modified src/analysis/locally_convex/polar.lean Modified src/analysis/normed_space/weak_dual.lean Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/topology/algebra/module/weak_dual.lean - theorem bilin_embedding - theorem coe_fn_continuous - theorem continuous_of_continuous_eval - theorem eval_continuous - theorem tendsto_iff_forall_eval_tendsto + theorem weak_bilin.coe_fn_continuous + theorem weak_bilin.continuous_of_continuous_eval + theorem weak_bilin.embedding + theorem weak_bilin.eval_continuous + theorem weak_bilin.tendsto_iff_forall_eval_tendsto + theorem weak_dual.coe_fn_continuous + theorem weak_dual.continuous_of_continuous_eval + theorem weak_dual.eval_continuous 2022-05-08 16:31:29 69c07a4 feat(linear_algebra/linear_pmap): `mk_span_singleton` of the same point (#14029) One more lemma about `mk_span_singleton'` and slightly better lemma names. ESTIMATED CHANGES Modified src/linear_algebra/dual.lean Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.mk_span_singleton'_apply + theorem linear_pmap.mk_span_singleton'_apply_self - theorem linear_pmap.mk_span_singleton_apply' +/- theorem linear_pmap.mk_span_singleton_apply 2022-05-08 16:31:28 6a5d17e feat(measure_theory/integral): a few more integral lemmas (#14025) ESTIMATED CHANGES Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integrable.trans_iterate_Ico + theorem interval_integral.sum_integral_adjacent_intervals_Ico Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.of_real_set_integral_one + theorem measure_theory.of_real_set_integral_one_of_measure_ne_top 2022-05-08 15:55:36 e330694 feat(analysis/p_series): explicit bounds on sums of the form 1/j^2 (#13851) ESTIMATED CHANGES Modified src/analysis/p_series.lean + theorem sum_Ioc_inv_sq_le_sub + theorem sum_Ioo_inv_sq_le 2022-05-08 14:02:33 79ffb55 chore(algebra/category/CommRing=>Ring): rename (#14022) This folder was originally named `algebra/category/CommRing/` because it only handled the commutative case. That's largely no longer the case, so we should rename the folder. ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/category/Algebra/limits.lean Modified src/algebra/category/BoolRing.lean Deleted src/algebra/category/CommRing/default.lean Renamed src/algebra/category/CommRing/adjunctions.lean to src/algebra/category/Ring/adjunctions.lean Renamed src/algebra/category/CommRing/basic.lean to src/algebra/category/Ring/basic.lean Renamed src/algebra/category/CommRing/colimits.lean to src/algebra/category/Ring/colimits.lean Renamed src/algebra/category/CommRing/constructions.lean to src/algebra/category/Ring/constructions.lean Added src/algebra/category/Ring/default.lean Renamed src/algebra/category/CommRing/filtered_colimits.lean to src/algebra/category/Ring/filtered_colimits.lean Renamed src/algebra/category/CommRing/instances.lean to src/algebra/category/Ring/instances.lean Renamed src/algebra/category/CommRing/limits.lean to src/algebra/category/Ring/limits.lean Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean Modified src/algebraic_geometry/open_immersion.lean Modified src/algebraic_geometry/properties.lean Modified src/algebraic_geometry/ringed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/ring_theory/ideal/local_ring.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/stalks.lean 2022-05-08 12:55:28 3478a2a feat(probability/ident_distrib): identically distributed random variables (#14024) ESTIMATED CHANGES Added src/probability/ident_distrib.lean + theorem probability_theory.ident_distrib.ae_mem_snd + theorem probability_theory.ident_distrib.ae_snd + theorem probability_theory.ident_distrib.ae_strongly_measurable_fst + theorem probability_theory.ident_distrib.ae_strongly_measurable_iff + theorem probability_theory.ident_distrib.ae_strongly_measurable_snd + theorem probability_theory.ident_distrib.const_div + theorem probability_theory.ident_distrib.const_mul + theorem probability_theory.ident_distrib.div_const + theorem probability_theory.ident_distrib.ess_sup_eq + theorem probability_theory.ident_distrib.integrable_iff + theorem probability_theory.ident_distrib.integrable_snd + theorem probability_theory.ident_distrib.integral_eq + theorem probability_theory.ident_distrib.lintegral_eq + theorem probability_theory.ident_distrib.measure_mem_eq + theorem probability_theory.ident_distrib.mem_ℒp_iff + theorem probability_theory.ident_distrib.mem_ℒp_snd + theorem probability_theory.ident_distrib.mul_const + theorem probability_theory.ident_distrib.snorm_eq + theorem probability_theory.ident_distrib.variance_eq + structure probability_theory.ident_distrib 2022-05-08 06:24:13 0c64b3d feat(algebra/category/Module): biproducts (#13908) Following the same pattern for `AddCommGroup`, create the instance for biproducts in` Module R`, and check they are isomorphic to the usual construction. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean + theorem AddCommGroup.binary_product_limit_cone_cone_π_app_left + theorem AddCommGroup.binary_product_limit_cone_cone_π_app_right +/- def AddCommGroup.biproduct_iso_pi + theorem AddCommGroup.biproduct_iso_pi_inv_comp_π +/- def AddCommGroup.has_limit.product_limit_cone Added src/algebra/category/Module/biproducts.lean + def Module.binary_product_limit_cone + theorem Module.binary_product_limit_cone_cone_π_app_left + theorem Module.binary_product_limit_cone_cone_π_app_right + def Module.biprod_iso_prod + theorem Module.biprod_iso_prod_inv_comp_fst + theorem Module.biprod_iso_prod_inv_comp_snd + def Module.biproduct_iso_pi + theorem Module.biproduct_iso_pi_inv_comp_π + def Module.has_limit.lift + theorem Module.has_limit.lift_apply + def Module.has_limit.product_limit_cone 2022-05-08 04:50:21 ce0dc83 feat(set_theory/ordinal/basic): Supremum indexed over an empty / unique type (#13735) This PR contains the following changes: - The lemmas `sup_unique`, `bsup_one`, `lsub_unique`, `blsub_one`. - `congr` lemmas for `bsup` and `blsub` - Arguments like `o = 0` are removed as the `congr` lemmas now handle this. - `a + 1` is changed to `a.succ` in some lemmas (for better rewriting). ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean Modified src/set_theory/game/birthday.lean Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.blsub_congr +/- theorem ordinal.blsub_const + theorem ordinal.blsub_one +/- theorem ordinal.blsub_zero + theorem ordinal.bsup_congr + theorem ordinal.bsup_one +/- theorem ordinal.bsup_zero +/- theorem ordinal.lsub_const +/- theorem ordinal.lsub_empty + theorem ordinal.lsub_unique +/- theorem ordinal.sup_const +/- theorem ordinal.sup_empty + theorem ordinal.sup_unique 2022-05-07 22:21:48 3a0eb4b chore(logic/relation): Dot notation on `well_founded.trans_gen` (#14016) ESTIMATED CHANGES Modified src/logic/relation.lean - theorem relation.well_founded.trans_gen + theorem well_founded.trans_gen Modified src/set_theory/game/pgame.lean +/- theorem pgame.wf_subsequent 2022-05-07 22:21:47 e190225 feat(data/rat/meta_defs, meta/expr): rat.to_pexpr and int.to_pexpr (#14002) ESTIMATED CHANGES Modified src/data/rat/meta_defs.lean Modified src/meta/expr.lean 2022-05-07 20:15:08 e0dd300 feat(algebra/{invertible + group_power/lemmas}): taking `inv_of` (⅟_) is injective (#14011) Besides the lemma stated in the description, I also made explicit an argument that was implicit in a different lemma and swapped the arguments of `invertible_unique` in order to get the typeclass assumptions before some non-typeclass assumptions. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/inv_of_inj) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/algebra/invertible.lean + theorem inv_of_inj +/- theorem inv_of_inv_of +/- theorem invertible_unique 2022-05-07 15:50:10 0e494af chore(order/*): Less `order_dual` abuse (#14008) Sanitize uses of `order_dual` by inserting the required `of_dual` and `to_dual` instead of type-ascripting. Also remove some uses which were not necessary. Those dated from the time where we did not have antitone functions. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean +/- def decreasing_sequence + theorem strict_anti_sequence_of_cubes - theorem strict_mono_sequence_of_cubes Modified src/algebra/order/field.lean + theorem one_div_pow_anti - theorem one_div_pow_mono + theorem one_div_pow_strict_anti - theorem one_div_pow_strict_mono Modified src/analysis/convex/quasiconvex.lean +/- theorem quasiconcave_on.dual +/- theorem quasiconvex_on.dual +/- theorem quasilinear_on.dual Modified src/data/finset/lattice.lean + theorem finset.le_inf'_iff Modified src/number_theory/liouville/liouville_constant.lean Modified src/order/compare.lean + theorem of_dual_compares_of_dual - theorem order_dual.dual_compares + theorem to_dual_compares_to_dual Modified src/order/galois_connection.lean +/- def galois_coinsertion.dual +/- def galois_coinsertion.of_dual +/- structure galois_coinsertion +/- def galois_insertion.dual +/- def galois_insertion.of_dual Modified src/order/monotone.lean Modified src/order/ord_continuous.lean 2022-05-07 15:50:09 5166765 chore(order/filter/pointwise): Better definitional unfolding (#13941) Tweak pointwise operation definitions to make them easier to work with: * `1` is now `pure 1` instead of `principal 1`. This changes defeq. * Binary operations unfold to the set operation instead exposing a bare `set.image2` (`obtain ⟨t₁, t₂, h₁, h₂, h⟩ : s ∈ f * g` now gives `h : t₁ * t₂ ⊆ s` instead of `h : set.image2 (*) t₁ t₂ ⊆ s`. This does not change defeq. ESTIMATED CHANGES Modified src/order/filter/pointwise.lean +/- theorem filter.eventually_one +/- theorem filter.le_one_iff +/- theorem filter.mem_one +/- theorem filter.one_mem_one + theorem filter.one_ne_bot +/- theorem filter.principal_one +/- theorem filter.pure_one 2022-05-07 11:59:00 cf65daf feat(probability/variance): define the variance of a random variable, prove its basic properties (#13912) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/probability/integration.lean +/- theorem probability_theory.indep_fun.integrable_mul + theorem probability_theory.indep_fun.integral_mul_of_integrable' Added src/probability/variance.lean + theorem probability_theory.indep_fun.variance_add + theorem probability_theory.indep_fun.variance_sum + theorem probability_theory.meas_ge_le_variance_div_sq + def probability_theory.variance + theorem probability_theory.variance_def' + theorem probability_theory.variance_le_expectation_sq + theorem probability_theory.variance_mul + theorem probability_theory.variance_nonneg + theorem probability_theory.variance_smul' + theorem probability_theory.variance_smul + theorem probability_theory.variance_zero 2022-05-07 09:57:54 c247622 feat(group_theory/group_action/units): simp lemma for scalar action of `is_unit.unit h` (#14006) ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem units.smul_mk0 Modified src/group_theory/group_action/units.lean + theorem units.smul_is_unit Modified src/ring_theory/witt_vector/isocrystal.lean 2022-05-07 09:57:53 9134a8e feat(combinatorics/simple_graph/hasse): Hasse diagram and path graph (#13959) Define the Hasse diagram of an order and the path graph on `n` vertices as the Hasse diagram of `fin n`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean - theorem simple_graph.irrefl Modified src/combinatorics/simple_graph/connectivity.lean Added src/combinatorics/simple_graph/hasse.lean + def simple_graph.hasse + theorem simple_graph.hasse_adj + def simple_graph.hasse_dual_iso + theorem simple_graph.hasse_dual_iso_apply + theorem simple_graph.hasse_dual_iso_symm_apply + theorem simple_graph.hasse_preconnected_of_pred + theorem simple_graph.hasse_preconnected_of_succ + def simple_graph.path_graph + theorem simple_graph.path_graph_connected + theorem simple_graph.path_graph_preconnected 2022-05-07 09:57:51 b2aa27e feat(analysis/calculus/deriv): generalize some lemmas (#13575) The types of scalar and codomain can be different now. For example, these lemmas can be used for `f : ℝ → ℂ` `f' : ℝ →L[ℝ] ℂ` now. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem has_deriv_at.comp_has_fderiv_at +/- theorem has_deriv_at.comp_has_fderiv_within_at +/- theorem has_deriv_at_filter.comp_has_fderiv_at_filter +/- theorem has_deriv_within_at.comp_has_fderiv_within_at +/- theorem has_strict_deriv_at.comp_has_strict_fderiv_at 2022-05-07 08:20:10 f8bc097 feat(algebra/module/linear_map): `Rᵐᵒᵖ` is isomorphic to `module.End R R` (#13931) This PR adds the canonical (semi)ring isomorphism from `Rᵐᵒᵖ` to `module.End R R` for a (semi)ring `R`, given by the right multiplication. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_map.ext_ring_op + def module.module_End_self + def module.module_End_self_op 2022-05-07 07:07:16 559f58b feat(order/filter): add a few lemmas (#13985) * weaken assumptions of `filter.has_antitone_basis.tendsto` from `[semilattice_sup ι] [nonempty ι]` to `[preorder ι]`; * add `filter.has_antitone_basis.tendsto`, `filter.has_antitone_basis.mem`, `filter.has_antitone_basis.tendsto_small_sets`. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.has_antitone_basis.eventually_subset - theorem filter.has_antitone_basis.tendsto Modified src/order/filter/bases.lean Modified src/order/filter/small_sets.lean + theorem filter.has_antitone_basis.tendsto_small_sets 2022-05-07 04:45:56 ca1375a refactor(algebra/order/monoid_lemmas): reorder the file (#13492) Just like in `algebra/order/monoid_lemmas_zero_lt`, sort by algebraic assumptions and order assumptions first, then put similar lemmas together. It would be simpler to find duplicates, missing lemmas, and inconsistencies. (There are so many!) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean +/- def contravariant.to_left_cancel_semigroup +/- def contravariant.to_right_cancel_semigroup +/- theorem exists_square_le +/- theorem le_mul_of_le_mul_left +/- theorem le_mul_of_le_mul_right +/- theorem le_mul_of_le_of_one_le +/- theorem le_mul_of_one_le_left' +/- theorem le_mul_of_one_le_right' +/- theorem le_of_le_mul_of_le_one_left +/- theorem le_of_le_mul_of_le_one_right +/- theorem le_of_mul_le_of_one_le_left +/- theorem le_of_mul_le_of_one_le_right +/- theorem lt_mul_of_lt_mul_left +/- theorem lt_mul_of_lt_mul_right +/- theorem lt_mul_of_lt_of_one_le' +/- theorem lt_mul_of_lt_of_one_lt' +/- theorem lt_mul_of_one_le_of_lt +/- theorem lt_mul_of_one_lt_of_lt +/- theorem lt_of_lt_mul_of_le_one_left +/- theorem lt_of_lt_mul_of_le_one_right +/- theorem lt_of_mul_lt_of_one_le_left +/- theorem lt_of_mul_lt_of_one_le_right +/- theorem mul_eq_mul_iff_eq_and_eq +/- theorem mul_eq_one_iff' +/- theorem mul_le_mul' +/- theorem mul_le_mul_left' +/- theorem mul_le_mul_three +/- theorem mul_le_of_le_one_left' +/- theorem mul_le_of_le_one_right' +/- theorem mul_le_of_mul_le_left +/- theorem mul_le_of_mul_le_right +/- theorem mul_left_cancel'' +/- theorem mul_lt_mul''' +/- theorem mul_lt_mul_left' +/- theorem mul_lt_mul_of_le_of_lt +/- theorem mul_lt_mul_of_lt_of_le +/- theorem mul_lt_mul_of_lt_of_lt +/- theorem mul_lt_of_le_of_lt_one +/- theorem mul_lt_of_mul_lt_left +/- theorem mul_lt_of_mul_lt_right +/- theorem mul_right_cancel'' +/- theorem one_le_mul_right +/- theorem one_lt_mul' +/- theorem one_lt_mul_of_le_of_lt' +/- theorem one_lt_mul_of_lt_of_le' 2022-05-07 04:10:25 5789c63 chore(scripts): update nolints.txt (#14004) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-05-07 00:43:46 275dabf feat(order/atoms): is_atomic_of_order_bot_lt_well_founded (#13967) ESTIMATED CHANGES Modified src/order/atoms.lean + theorem is_atomic_of_order_bot_well_founded_lt + theorem is_coatomic_of_order_top_gt_well_founded 2022-05-06 20:39:04 dcd452d feat(analysis/locally_convex/with_seminorms): characterization of the topology induced by seminorms in terms of `𝓝 0` (#13547) This shows that a topology is induced by the family of seminorms `p` iff `𝓝 0 = ⨅ i, (𝓝 0).comap (p i)`, which allows to use the extensive filter and topology library (see e.g. #13549). ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean + theorem seminorm_family.filter_eq_infi + theorem seminorm_family.with_seminorms_iff_nhds_eq_infi Modified src/analysis/seminorm.lean + theorem seminorm.ball_zero_eq_preimage_ball 2022-05-06 19:31:54 10721ba feat(topology/algebra/module/basic): basic topological properties of quotient modules (#13433) More precisely, we prove that : * if `M` is a topological module and `S` is a submodule of `M`, then `M ⧸ S` is a topological module * furthermore, if `S` is closed, then `M ⧸ S` is regular (hence T2) - [x] depends on: #13278 - [x] depends on: #13401 ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean + theorem submodule.is_open_map_mkq 2022-05-06 18:45:20 8f116f4 feat(ring_theory/localization): generalize lemmas from `comm_ring` to `comm_semiring` (#13994) This PR does not add new stuffs, but removes several subtractions from the proofs. ESTIMATED CHANGES Modified src/ring_theory/localization/at_prime.lean + theorem is_localization.at_prime.nontrivial +/- theorem localization.local_ring_hom_comp Modified src/ring_theory/localization/away.lean +/- def is_localization.away Modified src/ring_theory/localization/ideal.lean 2022-05-06 18:45:19 27e105d chore(analysis/normed_space/exponential): Make the `𝔸` argument implicit (#13986) `exp 𝕂 𝔸` is now just `exp 𝕂`. This also renames two lemmas that refer to this argument in their name to no longer do so. In a few places we have to add type annotations where they weren't needed before, but nowhere do we need to resort to `@`. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean +/- theorem commute.exp +/- theorem commute.exp_left +/- theorem commute.exp_right +/- theorem exp_add +/- theorem exp_eq_exp +/- theorem exp_eq_tsum +/- theorem exp_neg +/- theorem exp_series_field_has_sum_exp +/- theorem exp_series_has_sum_exp' +/- theorem exp_series_has_sum_exp +/- theorem exp_zero +/- theorem exp_zsmul +/- theorem exp_ℝ_ℂ_eq_exp_ℂ_ℂ +/- theorem inv_of_exp +/- theorem is_unit_exp +/- theorem map_exp +/- theorem prod.fst_exp +/- theorem prod.snd_exp +/- theorem ring.inverse_exp Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/star/exponential.lean Modified src/analysis/normed_space/star/spectrum.lean Modified src/analysis/special_functions/exponential.lean + theorem complex.exp_eq_exp_ℂ - theorem complex.exp_eq_exp_ℂ_ℂ +/- theorem has_deriv_at_exp +/- theorem has_strict_deriv_at_exp +/- theorem has_strict_deriv_at_exp_zero + theorem real.exp_eq_exp_ℝ - theorem real.exp_eq_exp_ℝ_ℝ Modified src/combinatorics/derangements/exponential.lean 2022-05-06 18:45:18 eea16dc feat(number_theory/legendre_symbol/*): add results on value at -1 (#13978) This PR adds code expressing the value of the quadratic character at -1 of a finite field of odd characteristic as χ₄ applied to the cardinality of the field. This is then also done for the Legendre symbol. Additional changes: * two helper lemmas `odd_mod_four` and `finite_field.even_card_of_char_two` that are needed * some API lemmas for χ₄ * write `euler_criterion` and `exists_sq_eq_neg_one_iff` in terms of `is_square`; simplify the proof of the latter using the general result for quadratic characters ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean Modified src/number_theory/legendre_symbol/quadratic_char.lean + theorem char.is_square_neg_one_iff + theorem char.quadratic_char_neg_one + theorem finite_field.even_card_iff_char_two + theorem finite_field.even_card_of_char_two + theorem nat.odd_mod_four_iff + theorem zmod.χ₄_eq_neg_one_pow + theorem zmod.χ₄_int_eq_if_mod_four + theorem zmod.χ₄_nat_eq_if_mod_four Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean +/- theorem zmod.exists_sq_eq_neg_one_iff + theorem zmod.legendre_sym_neg_one Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-05-06 18:45:17 dfe1897 feat(data/polynomial/laurent): laurent polynomials -- defs and some API (#13784) I broke off the initial part of #13415 into this initial segment, leaving the rest of the PR as depending on this one. ESTIMATED CHANGES Added src/data/polynomial/laurent.lean + def laurent_polynomial.C + theorem laurent_polynomial.C_eq_algebra_map + def laurent_polynomial.T + theorem laurent_polynomial.T_add + theorem laurent_polynomial.T_pow + theorem laurent_polynomial.T_zero + theorem laurent_polynomial.algebra_map_apply + theorem laurent_polynomial.inv_of_T + theorem laurent_polynomial.is_unit_T + theorem laurent_polynomial.mul_T_assoc + theorem laurent_polynomial.single_eq_C + theorem laurent_polynomial.single_eq_C_mul_T + theorem laurent_polynomial.single_zero_one_eq_one + def laurent_polynomial + def polynomial.to_laurent + theorem polynomial.to_laurent_C + theorem polynomial.to_laurent_C_mul_T + theorem polynomial.to_laurent_C_mul_X_pow + theorem polynomial.to_laurent_C_mul_eq + theorem polynomial.to_laurent_X + theorem polynomial.to_laurent_X_pow + def polynomial.to_laurent_alg + theorem polynomial.to_laurent_alg_apply + theorem polynomial.to_laurent_apply + theorem polynomial.to_laurent_one 2022-05-06 16:39:40 58d83ed feat(tactic/lint/misc): adding a linter that flags iffs with explicit variables on both sides (#11606) ESTIMATED CHANGES Modified src/tactic/lint/default.lean Modified src/tactic/lint/misc.lean 2022-05-06 15:42:43 863a167 docs(ring_theory/localization/ideal): fix an unused name (#13992) ESTIMATED CHANGES Modified src/ring_theory/localization/ideal.lean 2022-05-06 15:42:42 db5c2a6 chore(data/zmod/basic.lean): change order of arguments of `zmod.nat_cast_mod` for consistency (#13988) As discussed [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60zmod.2Enat_cast_mod.60.20vs.20.60zmod.2Eint_cast_mod.60), this changes the order of arguments in `zmod.nat_cast_mod` to be compatible with `zmod.int_cast_mod`. ESTIMATED CHANGES Modified src/data/zmod/basic.lean +/- theorem zmod.nat_cast_mod Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-05-06 15:42:40 40bedd6 refactor(set_theory/game/pgame): Remove `pgame.omega` (#13960) This barely had any API to begin with. Thanks to `ordinal.to_pgame`, it is now entirely redundant. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean - def pgame.omega Modified src/set_theory/game/winner.lean - theorem pgame.omega_left_wins Modified src/set_theory/surreal/basic.lean - theorem pgame.numeric_omega 2022-05-06 15:42:39 c9f5cee feat(set_theory/game/pgame): Add remark on relabelings (#13732) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-05-06 14:58:58 ba627bc feat(measure_theory/function/conditional_expectation): induction over Lp functions which are strongly measurable wrt a sub-sigma-algebra (#13129) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.Lp.induction_strongly_measurable + theorem measure_theory.Lp.induction_strongly_measurable_aux +/- theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_indicator + theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_to_Lp + theorem measure_theory.mem_ℒp.induction_strongly_measurable Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.to_Lp_congr Modified src/order/filter/indicator_function.lean + theorem filter.eventually_eq.support 2022-05-06 12:51:04 fe0c4cd docs(data/polynomial/algebra_map): fix a typo in a doc-string (#13989) The doc-string talks about `comm_ring`, while the lemma uses `comm_semiring`. I aligned the two to the weaker one! ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean 2022-05-06 12:51:03 f6c030f feat(linear_algebra/matrix/nonsingular_inverse): inverse of a diagonal matrix is diagonal (#13827) The main results are `is_unit (diagonal v) ↔ is_unit v` and `(diagonal v)⁻¹ = diagonal (ring.inverse v)`. This also generalizes `invertible.map` to `monoid_hom_class`. ESTIMATED CHANGES Modified src/algebra/invertible.lean +/- def invertible.map Modified src/data/mv_polynomial/invertible.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean + def matrix.diagonal_invertible + def matrix.diagonal_invertible_equiv_invertible + theorem matrix.inv_diagonal + theorem matrix.inv_of_diagonal_eq + def matrix.invertible_of_diagonal_invertible + theorem matrix.is_unit_diagonal Modified src/ring_theory/algebra_tower.lean 2022-05-06 12:03:00 e4d3d33 feat(probability/stopping): add properties of the measurable space generated by a stopping time (#13909) - add lemmas stating that various sets are measurable with respect to that space - describe the sigma algebra generated by the minimum of two stopping times - use the results to generalize `is_stopping_time.measurable_set_eq_const` from nat to first countable linear orders and rename it to `is_stopping_time.measurable_space_eq'` to have a name similar to `is_stopping_time.measurable_set_eq`. ESTIMATED CHANGES Modified src/probability/martingale.lean Modified src/probability/stopping.lean - theorem measure_theory.adapted.measurable_stopped_process_of_nat + theorem measure_theory.adapted.strongly_measurable_stopped_process_of_nat + theorem measure_theory.is_stopping_time.le_measurable_space_of_const_le - theorem measure_theory.is_stopping_time.measurable - theorem measure_theory.is_stopping_time.measurable_set - theorem measure_theory.is_stopping_time.measurable_set_eq_const + theorem measure_theory.is_stopping_time.measurable_set_inter_eq_iff + theorem measure_theory.is_stopping_time.measurable_set_inter_le - theorem measure_theory.is_stopping_time.measurable_set_le + theorem measure_theory.is_stopping_time.measurable_set_min_iff + theorem measure_theory.is_stopping_time.measurable_space_const +/- theorem measure_theory.is_stopping_time.measurable_space_le + theorem measure_theory.is_stopping_time.measurable_space_le_of_le_const + theorem measure_theory.is_stopping_time.measurable_space_min +/- theorem measure_theory.is_stopping_time_const - theorem measure_theory.prog_measurable.measurable_stopped_process + theorem measure_theory.prog_measurable.strongly_measurable_stopped_process 2022-05-06 10:42:54 f033937 feat(topology/algebra/monoid): add missing `has_continuous_const_smul` instances (#13987) This makes an argument to `exp` redundant. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean Modified src/topology/algebra/monoid.lean Modified src/topology/continuous_function/locally_constant.lean 2022-05-06 10:42:53 97c4d4e feat(analysis/asymptotics/asymptotics): add `is_O.exists_mem_basis` (#13973) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O.exists_mem_basis 2022-05-06 10:07:19 d989305 feat(algebra/order/monoid_lemmas_zero_lt): add some lemmas assuming `mul_zero_class` `partial_order` / `linear_order` (#13377) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.left.mul_nonneg + theorem zero_lt.left.neg_of_mul_neg_left + theorem zero_lt.left.neg_of_mul_neg_right + theorem zero_lt.mul_le_mul_left'' + theorem zero_lt.mul_le_mul_right'' + theorem zero_lt.mul_nonpos_of_nonneg_of_nonpos + theorem zero_lt.mul_nonpos_of_nonpos_of_nonneg + theorem zero_lt.neg_iff_neg_of_mul_pos + theorem zero_lt.neg_of_mul_pos_left + theorem zero_lt.neg_of_mul_pos_right + theorem zero_lt.pos_and_pos_or_neg_and_neg_of_mul_pos + theorem zero_lt.pos_iff_pos_of_mul_pos + theorem zero_lt.pos_of_mul_pos_left + theorem zero_lt.pos_of_mul_pos_right + theorem zero_lt.right.mul_nonneg + theorem zero_lt.right.neg_of_mul_neg_left + theorem zero_lt.right.neg_of_mul_neg_right 2022-05-06 10:07:18 1675b78 feat(algebra/order/monoid_lemmas_zero_lt): add some lemmas assuming `mul_zero_one_class` `partial_order` (#13375) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.le_of_le_mul_of_le_one_left' + theorem zero_lt.le_of_le_mul_of_le_one_right' + theorem zero_lt.le_of_mul_le_of_one_le_left' + theorem zero_lt.le_of_mul_le_of_one_le_right' 2022-05-06 09:15:39 95413e2 feat(measure_theory/group/*): various lemmas about invariant measures (#13539) * Make the `measurable_equiv` argument to `measure_preserving.symm` explicit. This argument is cannot always be deduced from the other explicit arguments (which can be seen form the changes in `src/measure_theory/constructions/pi.lean`). * From the sphere eversion project * Required for convolutions ESTIMATED CHANGES Modified src/analysis/complex/cauchy_integral.lean Modified src/dynamics/ergodic/measure_preserving.lean +/- theorem measure_theory.measure_preserving.symm Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean + theorem measure_theory.ae_strongly_measurable.fst + theorem measure_theory.ae_strongly_measurable.snd + theorem measure_theory.quasi_measure_preserving.prod_of_left + theorem measure_theory.quasi_measure_preserving.prod_of_right Modified src/measure_theory/function/strongly_measurable.lean + theorem continuous_linear_map.ae_strongly_measurable_comp₂ - theorem measure_theory.ae_strongly_measurable.ae_strongly_measurable_comp₂ + theorem measure_theory.ae_strongly_measurable.comp_measurable' Modified src/measure_theory/group/arithmetic.lean + theorem measurable_div_const' Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/group/integration.lean + theorem measure_theory.integrable_comp_div_left + theorem measure_theory.integral_div_right_eq_self + theorem measure_theory.integral_smul_eq_self + theorem measure_theory.lintegral_div_right_eq_self Modified src/measure_theory/group/measurable_equiv.lean + def measurable_equiv.div_left + def measurable_equiv.div_right Modified src/measure_theory/group/measure.lean +/- theorem measure_theory.forall_measure_preimage_mul_iff +/- theorem measure_theory.forall_measure_preimage_mul_right_iff + theorem measure_theory.map_div_right_ae + theorem measure_theory.map_mul_left_ae + theorem measure_theory.map_mul_right_ae + theorem measure_theory.measure.map_div_left_ae + theorem measure_theory.measure_preserving_mul_left + theorem measure_theory.measure_preserving_mul_right Modified src/measure_theory/group/prod.lean + theorem measure_theory.absolutely_continuous_map_div_left + theorem measure_theory.absolutely_continuous_map_inv + theorem measure_theory.absolutely_continuous_map_mul_right +/- theorem measure_theory.absolutely_continuous_of_is_mul_left_invariant +/- theorem measure_theory.ae_measure_preimage_mul_right_lt_top +/- theorem measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero +/- theorem measure_theory.lintegral_lintegral_mul_inv + theorem measure_theory.map_div_left_absolutely_continuous + theorem measure_theory.map_inv_absolutely_continuous + theorem measure_theory.map_mul_right_absolutely_continuous +/- theorem measure_theory.map_prod_inv_mul_eq_swap +/- theorem measure_theory.map_prod_mul_inv_eq +/- theorem measure_theory.measurable_measure_mul_right +/- theorem measure_theory.measure_eq_div_smul +/- theorem measure_theory.measure_inv_null +/- theorem measure_theory.measure_lintegral_div_measure +/- theorem measure_theory.measure_mul_lintegral_eq +/- theorem measure_theory.measure_mul_measure_eq +/- theorem measure_theory.measure_mul_right_ne_zero +/- theorem measure_theory.measure_mul_right_null + theorem measure_theory.quasi_measure_preserving_div + theorem measure_theory.quasi_measure_preserving_div_left +/- theorem measure_theory.quasi_measure_preserving_inv + theorem measure_theory.quasi_measure_preserving_mul_right Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/torus_integral.lean Modified src/measure_theory/measure/complex_lebesgue.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean + theorem measurable_equiv.map_ae 2022-05-06 06:39:57 ebac9f0 feat(analysis/special_functions/trigonometric): add a lemma (#13975) Add a lemma needed for #13178 ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem apply_abs_le_mul_of_one_le' + theorem apply_abs_le_mul_of_one_le Modified src/analysis/special_functions/trigonometric/basic.lean + theorem complex.abs_exp_mul_exp_add_exp_neg_le_of_abs_im_le 2022-05-06 06:03:17 faf1690 feat(model_theory/*): Any theory with infinite models has arbitrarily large models (#13980) Defines the theory `distinct_constants_theory`, indicating that a set of constants are distinct. Uses that theory to show that any theory with an infinite model has models of arbitrarily large cardinality. ESTIMATED CHANGES Modified src/model_theory/bundled.lean + theorem first_order.language.Theory.Model.carrier_eq_coe +/- def first_order.language.Theory.Model.reduct Modified src/model_theory/language_map.lean Modified src/model_theory/satisfiability.lean + theorem first_order.language.Theory.exists_large_model_of_infinite_model + theorem first_order.language.Theory.is_satisfiable_union_distinct_constants_theory_of_card_le + theorem first_order.language.Theory.is_satisfiable_union_distinct_constants_theory_of_infinite Modified src/model_theory/semantics.lean +/- theorem first_order.language.Theory.model.mono + theorem first_order.language.Theory.model.union +/- theorem first_order.language.Theory.model_iff_subset_complete_theory +/- theorem first_order.language.Theory.model_singleton_iff + theorem first_order.language.Theory.model_union_iff + theorem first_order.language.card_le_of_model_distinct_constants_theory + theorem first_order.language.model_distinct_constants_theory Modified src/model_theory/syntax.lean + theorem first_order.language.directed_distinct_constants_theory + def first_order.language.distinct_constants_theory + theorem first_order.language.distinct_constants_theory_eq_Union + theorem first_order.language.monotone_distinct_constants_theory 2022-05-06 01:59:37 f0eded9 chore(algebra/ring/idempotents): golf iff_eq_zero_or_one (#13977) ESTIMATED CHANGES Modified src/algebra/ring/idempotents.lean 2022-05-05 23:51:54 151933d feat(algebra/group/defs): Division monoids (#13860) Introduce what I call division monoids. Those are monoids `α` with a pseudo-inverse `⁻¹ : α → α ` and a pseudo-division `/ : α → α → α` respecting: * `a / b = a * b⁻¹` * `a⁻¹⁻¹ = a` * `(a * b)⁻¹ = b⁻¹ * a⁻¹` * `a * b = 1 → a⁻¹ = b` This made-up algebraic structure has two uses: * Deduplicate lemmas between `group` and `group_with_zero`. Almost all lemmas which are literally duplicated (same conclusion, same assumptions except for `group` vs `group_with_zero`) generalize to division monoids. * Give access to lemmas for pointwise operations: `set α`, `finset α`, `filter α`, `submonoid α`, `subgroup α`, etc... all are division monoids when `α` is. In some sense, they are very close to being groups, the only obstruction being that `s / s ≠ 1` in general. Hence any identity which is true in a group/group with zero is also true in those pointwise monoids, if no cancellation is involved. ESTIMATED CHANGES Modified src/algebra/group/basic.lean - theorem inv_mul_cancel_right - theorem mul_inv_cancel_left - theorem mul_inv_rev Modified src/algebra/group/defs.lean +/- theorem div_eq_mul_inv +/- theorem inv_eq_of_mul_eq_one +/- theorem inv_inv +/- theorem inv_mul_cancel_left + theorem inv_mul_cancel_right + theorem mul_inv_cancel_left +/- theorem mul_inv_cancel_right + theorem mul_inv_rev Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/pi.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group_with_zero/basic.lean Modified src/analysis/complex/liouville.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/number_theory/bernoulli.lean 2022-05-05 22:29:30 c62dfe6 feat(model_theory/skolem): Downward Löwenheim–Skolem (#13723) Proves the Downward Löwenheim–Skolem theorem: If `s` is a set in an `L`-structure `M` and `κ` an infinite cardinal such that `max (# s, L.card) ≤ κ` and `κ ≤ # M`, then `M` has an elementary substructure containing `s` of cardinality `κ`. ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.card_functions_sum + theorem first_order.language.card_relations_sum + theorem first_order.language.card_sum Modified src/model_theory/skolem.lean + theorem first_order.language.card_functions_sum_skolem₁ + theorem first_order.language.card_functions_sum_skolem₁_le + theorem first_order.language.exists_elementary_substructure_card_eq +/- def first_order.language.skolem₁ +/- theorem first_order.language.substructure.coe_sort_elementary_skolem₁_reduct +/- theorem first_order.language.substructure.skolem₁_reduct_is_elementary Modified src/model_theory/syntax.lean 2022-05-05 20:53:20 91cc3f0 feat(linear_algebra/basic): ker of a linear map equals ker of the corresponding group hom (#13858) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.ker_to_add_subgroup + theorem linear_map.ker_to_add_submonoid + theorem linear_map.range_to_add_subgroup + theorem linear_map.range_to_add_submonoid 2022-05-05 19:41:55 c12536a fix(gitpod): correct command name (#13976) `leanpkg config` doesn't exist, it's `leanpkg configure`. @b-mehta tricked me in https://github.com/leanprover-community/mathlib/pull/13949#issuecomment-1117589670 ESTIMATED CHANGES Modified .gitpod.yml 2022-05-05 17:30:45 73e5dad feat(analysis/special_functions/exp): add limits of `exp z` as `re z → ±∞` (#13974) ESTIMATED CHANGES Modified src/analysis/special_functions/exp.lean + theorem complex.tendsto_exp_comap_re_at_bot + theorem complex.tendsto_exp_comap_re_at_bot_nhds_within + theorem complex.tendsto_exp_comap_re_at_top 2022-05-05 16:19:12 54af9e9 fix(topology/algebra/infinite_sum): `tsum_neg` doesn't need `summable` (#13950) Both sides are 0 in the not-summable case. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean +/- theorem tsum_neg 2022-05-05 14:55:41 ec44f45 feat(data/matrix/basic): even more lemmas about `conj_transpose` and `smul` (#13970) It turns out none of the lemmas in the previous #13938 were the ones I needed. ESTIMATED CHANGES Modified src/algebra/star/module.lean + theorem star_int_cast_smul + theorem star_inv_int_cast_smul + theorem star_inv_nat_cast_smul + theorem star_nat_cast_smul + theorem star_rat_cast_smul Modified src/data/matrix/basic.lean + theorem matrix.conj_transpose_int_cast_smul + theorem matrix.conj_transpose_inv_int_cast_smul + theorem matrix.conj_transpose_inv_nat_cast_smul + theorem matrix.conj_transpose_nat_cast_smul + theorem matrix.conj_transpose_rat_cast_smul 2022-05-05 13:11:01 420fabf chore(analysis/normed_space/exponential): replace `1/x` with `x⁻¹` (#13971) Note that `one_div` makes `⁻¹` the simp-normal form. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean +/- theorem exp_eq_tsum +/- theorem exp_series_apply_eq +/- theorem exp_series_has_sum_exp' +/- theorem exp_series_sum_eq +/- theorem exp_series_summable' +/- theorem norm_exp_series_summable' Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/special_functions/exponential.lean 2022-05-05 13:11:00 03f5ac9 feat(category_theory/simple): simple_iff_subobject_is_simple_order (#13969) ESTIMATED CHANGES Modified src/algebra/category/Module/simple.lean + theorem simple_iff_is_simple_module Modified src/category_theory/limits/shapes/zero_morphisms.lean + def category_theory.limits.iso_zero_of_epi_eq_zero + def category_theory.limits.iso_zero_of_mono_eq_zero Modified src/category_theory/simple.lean + theorem category_theory.simple_iff_subobject_is_simple_order + theorem category_theory.simple_of_is_simple_order_subobject Modified src/category_theory/subobject/factor_thru.lean + theorem category_theory.subobject.factor_thru_mk_self + theorem category_theory.subobject.mk_factors_self Modified src/category_theory/subobject/lattice.lean + theorem category_theory.subobject.mk_eq_bot_iff_zero 2022-05-05 13:10:59 929c901 refactor(ring_theory/*): Remove unnecessary commutativity assumptions (#13966) This replaces `[comm_ring R]` or `[comm_semiring R]` with `[ring R]` or `[semiring R]`, without changing any proofs. ESTIMATED CHANGES Modified src/ring_theory/artinian.lean +/- theorem is_artinian_ring_of_ring_equiv +/- theorem is_artinian_ring_of_surjective Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.maximal_of_no_maximal Modified src/ring_theory/noetherian.lean +/- theorem is_noetherian_ring_iff_ideal_fg +/- theorem is_noetherian_ring_of_ring_equiv +/- theorem is_noetherian_ring_of_surjective +/- theorem submodule.fg_restrict_scalars 2022-05-05 13:10:58 8e0ab16 feat(polynomial/cyclotomic/basic): ɸ_pⁱ irreducible → ɸ_pʲ irreducible for j ≤ i (#13952) ESTIMATED CHANGES Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/primitive_roots.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean +/- theorem polynomial.cyclotomic_irreducible_of_irreducible_pow + theorem polynomial.cyclotomic_irreducible_pow_of_irreducible_pow 2022-05-05 11:55:59 057e028 feat(linear_algebra/finite_dimensional): surjective_of_nonzero_of_finrank_eq_one (#13961) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem surjective_of_nonzero_of_finrank_eq_one 2022-05-05 11:55:58 da06587 feat(linear_algebra): A-linear maps between finite dimensional vector spaces over k are finite dimensional (#13934) ESTIMATED CHANGES Added src/algebra/module/algebra.lean + def linear_map.restrict_scalars_linear_map Modified src/linear_algebra/matrix/to_lin.lean 2022-05-05 09:52:28 4dfbcac feat({data/{finset,set},order/filter}/pointwise): More basic API (#13899) More basic lemmas about pointwise operations on `set`/`finset`/`filter`. Also make the three APIs more consistent with each other. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.image_inter_subset Modified src/data/finset/pointwise.lean + theorem finset.div_eq_empty + theorem finset.div_inter_subset + theorem finset.div_nonempty - theorem finset.div_nonempty_iff + theorem finset.div_subset_div_left + theorem finset.div_subset_div_right + theorem finset.div_subset_iff + theorem finset.div_union + theorem finset.inter_div_subset + theorem finset.inter_mul_subset + theorem finset.inter_smul_subset + theorem finset.inter_vsub_subset + theorem finset.mul_eq_empty + theorem finset.mul_inter_subset + theorem finset.mul_nonempty - theorem finset.mul_nonempty_iff + theorem finset.mul_subset_iff + theorem finset.mul_subset_mul_left + theorem finset.mul_subset_mul_right + theorem finset.mul_union + theorem finset.nonempty.of_div_left + theorem finset.nonempty.of_div_right + theorem finset.nonempty.of_mul_left + theorem finset.nonempty.of_mul_right + theorem finset.nonempty.of_smul_left + theorem finset.nonempty.of_smul_right + theorem finset.nonempty.of_vsub_left + theorem finset.nonempty.of_vsub_right +/- theorem finset.singleton_div_singleton +/- theorem finset.singleton_mul_singleton +/- theorem finset.singleton_smul +/- theorem finset.singleton_smul_singleton +/- theorem finset.singleton_vsub_singleton + theorem finset.smul_eq_empty + theorem finset.smul_finset_eq_empty + theorem finset.smul_finset_inter_subset + theorem finset.smul_finset_nonempty - theorem finset.smul_finset_nonempty_iff + theorem finset.smul_finset_union + theorem finset.smul_inter_subset +/- theorem finset.smul_nonempty_iff +/- theorem finset.smul_singleton + theorem finset.smul_subset_iff + theorem finset.smul_subset_smul_left + theorem finset.smul_subset_smul_right + theorem finset.smul_union +/- theorem finset.subset_vsub + theorem finset.union_div + theorem finset.union_mul + theorem finset.union_smul + theorem finset.union_vsub + theorem finset.vsub_eq_empty + theorem finset.vsub_inter_subset + theorem finset.vsub_nonempty - theorem finset.vsub_nonempty_iff + theorem finset.vsub_subset_iff + theorem finset.vsub_subset_vsub_left + theorem finset.vsub_subset_vsub_right + theorem finset.vsub_union Modified src/data/set/basic.lean + theorem set.nonempty.of_image2_left + theorem set.nonempty.of_image2_right + theorem set.nonempty.subset_singleton_iff Modified src/data/set/pointwise.lean +/- theorem set.Union_div +/- theorem set.Union_div_left_image +/- theorem set.Union_div_right_image +/- theorem set.Union_mul +/- theorem set.Union_mul_left_image +/- theorem set.Union_mul_right_image +/- theorem set.Union_smul +/- theorem set.Union_smul_left_image +/- theorem set.Union_smul_right_image +/- theorem set.div_Union + theorem set.div_eq_empty +/- theorem set.div_inter_subset +/- theorem set.div_mem_div + theorem set.div_nonempty +/- theorem set.div_subset_div +/- theorem set.div_subset_div_left +/- theorem set.div_subset_div_right + theorem set.div_subset_iff +/- theorem set.image_one +/- theorem set.inter_div_subset +/- theorem set.inter_mul_subset +/- theorem set.inter_smul_subset +/- theorem set.mem_one - theorem set.mem_smul_of_mem +/- theorem set.mul_Union + theorem set.mul_eq_empty +/- theorem set.mul_inter_subset +/- theorem set.mul_mem_mul + theorem set.mul_nonempty + theorem set.mul_subset_iff +/- theorem set.mul_subset_mul +/- theorem set.mul_subset_mul_left +/- theorem set.mul_subset_mul_right + theorem set.nonempty.div + theorem set.nonempty.of_div_left + theorem set.nonempty.of_div_right + theorem set.nonempty.of_mul_left + theorem set.nonempty.of_mul_right + theorem set.nonempty.of_smul_left + theorem set.nonempty.of_smul_right + theorem set.nonempty.of_vsub_left + theorem set.nonempty.of_vsub_right + theorem set.nonempty.subset_one_iff +/- theorem set.one_mem_one +/- theorem set.one_nonempty +/- theorem set.one_subset +/- theorem set.singleton_div_singleton +/- theorem set.singleton_mul_singleton +/- theorem set.singleton_one +/- theorem set.singleton_smul_singleton +/- theorem set.smul_Union + theorem set.smul_eq_empty +/- theorem set.smul_inter_subset +/- theorem set.smul_mem_smul +/- theorem set.smul_mem_smul_set + theorem set.smul_nonempty + theorem set.smul_set_eq_empty + theorem set.smul_set_nonempty +/- theorem set.smul_subset_smul +/- theorem set.smul_subset_smul_left +/- theorem set.smul_subset_smul_right + theorem set.subset_one_iff_eq + theorem set.vsub_eq_empty + theorem set.vsub_nonempty +/- theorem set.vsub_subset_iff +/- theorem set.vsub_subset_vsub +/- theorem set.vsub_subset_vsub_left +/- theorem set.vsub_subset_vsub_right Modified src/order/filter/n_ary.lean + theorem filter.ne_bot.of_map₂_left + theorem filter.ne_bot.of_map₂_right Modified src/order/filter/pointwise.lean + theorem filter.div_pure + theorem filter.inv_eq_bot_iff + theorem filter.inv_pure + theorem filter.mul_pure + theorem filter.ne_bot.of_div_left + theorem filter.ne_bot.of_div_right + theorem filter.ne_bot.of_mul_left + theorem filter.ne_bot.of_mul_right + theorem filter.ne_bot.of_smul_left + theorem filter.ne_bot.of_smul_right + theorem filter.ne_bot.of_vsub_left + theorem filter.ne_bot.of_vsub_right + theorem filter.pure_div + theorem filter.pure_div_pure + theorem filter.pure_mul + theorem filter.pure_mul_pure + theorem filter.pure_smul + theorem filter.pure_smul_pure + theorem filter.pure_vsub + theorem filter.pure_vsub_pure + theorem filter.smul_pure + theorem filter.vsub_pure Modified src/topology/algebra/filter_basis.lean 2022-05-05 07:41:38 f820671 ci(gitpod): do not rerun get-cache if a workspace is reloaded (#13949) Instead, only run it at workspace start. This prevents it clobbering local builds created with `lean --make src` or similar. I have no idea why the `. /home/gitpod/.profile` line is there, so I've left it to run in the same phase as before. ESTIMATED CHANGES Modified .gitpod.yml 2022-05-05 07:41:37 6970129 chore(algebra/group/units): add a lemma about is_unit on a coerced unit (#13947) ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem is_unit.unit_of_coe_units 2022-05-05 07:41:36 bd944fe chore(linear_algebra/free_module): fix name in doc (#13942) ESTIMATED CHANGES Modified src/linear_algebra/free_module/basic.lean 2022-05-05 07:41:35 4f7603c chore(data/matrix/basic): add more lemmas about `conj_transpose` and `smul` (#13938) Unfortunately the `star_module` typeclass is of no help here; see [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Is.20star_module.20sensible.20for.20non-commutative.20rings.3F/near/257272767) for some discussion. In the meantime, this adds the lemmas for the most frequent special cases. ESTIMATED CHANGES Modified src/algebra/star/basic.lean +/- theorem star_nsmul +/- theorem star_zsmul Modified src/algebra/star/module.lean + theorem star_rat_smul Modified src/data/matrix/basic.lean + theorem matrix.conj_transpose_nsmul + theorem matrix.conj_transpose_rat_smul +/- theorem matrix.conj_transpose_smul + theorem matrix.conj_transpose_smul_non_comm + theorem matrix.conj_transpose_smul_self + theorem matrix.conj_transpose_zsmul 2022-05-05 07:41:33 7eacca3 feat(analysis/normed/normed_field): limit of `∥a * x∥` as `∥x∥ → ∞` (#13819) These lemmas should use `bornology.cobounded` but we don't have an instance `pseudo_metric_space α -> bornology α` yet. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem filter.tendsto_neg_cobounded Modified src/analysis/normed/normed_field.lean + theorem filter.tendsto_mul_left_cobounded + theorem filter.tendsto_mul_right_cobounded 2022-05-05 05:36:23 03fbe7d Update CODE_OF_CONDUCT.md (#13965) deleted one character (duplicate space) ESTIMATED CHANGES Modified CODE_OF_CONDUCT.md 2022-05-05 05:36:22 63875ea chore(scripts): update nolints.txt (#13964) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-05-05 05:36:21 116435d feat(tactic/alias): fix alias docstrings for implications from iffs (#13944) Now they say for instance: ```lean le_inv_mul_of_mul_le : ∀ {α : Type u} [_inst_1 : group α] [_inst_2 : has_le α] [_inst_3 : covariant_class α α has_mul.mul has_le.le] {a b c : α}, a * b ≤ c → b ≤ a⁻¹ * c **Alias** of the reverse direction of `le_inv_mul_iff_mul_le`. ``` https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60alias.60.20issue.20in.20algebra.2Eorder.2Egroup/near/281158569 ESTIMATED CHANGES Modified src/tactic/alias.lean 2022-05-05 05:36:20 524793d feat(representation_theory): Action V G is rigid whenever V is (#13738) ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/representation_theory/Action.lean + def Action.functor_category_monoidal_equivalence 2022-05-05 05:36:19 b1da074 feat(data/sum/basic): Shortcuts for the ternary sum of types (#13678) Define `sum3.in₀`, `sum3.in₁`, `sum3.in₂`, shortcut patterns for pattern-matching on a ternary sum of types. ESTIMATED CHANGES Modified src/data/sum/basic.lean + def sum3.in₀ + def sum3.in₁ + def sum3.in₂ 2022-05-05 03:36:27 0c9b726 feat(algebra/group/{pi, opposite}): add missing pi and opposite defs for `mul_hom` (#13956) The declaration names and the contents of these definitions are all copied from the corresponding ones for `monoid_hom`. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean + def add_hom.mul_op + def add_hom.mul_unop + def mul_hom.from_opposite + def mul_hom.op + def mul_hom.to_opposite + def mul_hom.unop Modified src/algebra/group/pi.lean + def mul_hom.coe_fn + def pi.const_mul_hom + def pi.eval_mul_hom 2022-05-05 02:21:58 5078119 feat(data/matrix/block): add `matrix.block_diag` and `matrix.block_diag'` (#13918) `matrix.block_diag` is to `matrix.block_diagonal` as `matrix.diag` is to `matrix.diagonal`. As well as the basic arithmetic lemmas and bundling, this also adds continuity lemmas. These definitions are primarily an auxiliary construction to prove `matrix.tsum_block_diagonal`, and `matrix.tsum_block_diagonal'`, which are really the main goal of this PR. ESTIMATED CHANGES Modified src/data/matrix/block.lean + def matrix.block_diag' + theorem matrix.block_diag'_add + def matrix.block_diag'_add_monoid_hom + theorem matrix.block_diag'_block_diagonal' + theorem matrix.block_diag'_conj_transpose + theorem matrix.block_diag'_diagonal + theorem matrix.block_diag'_map + theorem matrix.block_diag'_neg + theorem matrix.block_diag'_one + theorem matrix.block_diag'_smul + theorem matrix.block_diag'_sub + theorem matrix.block_diag'_transpose + theorem matrix.block_diag'_zero + def matrix.block_diag + theorem matrix.block_diag_add + def matrix.block_diag_add_monoid_hom + theorem matrix.block_diag_block_diagonal + theorem matrix.block_diag_conj_transpose + theorem matrix.block_diag_diagonal + theorem matrix.block_diag_map + theorem matrix.block_diag_neg + theorem matrix.block_diag_one + theorem matrix.block_diag_smul + theorem matrix.block_diag_sub + theorem matrix.block_diag_transpose + theorem matrix.block_diag_zero Modified src/topology/instances/matrix.lean + theorem continuous.matrix_block_diag' + theorem continuous.matrix_block_diag + theorem has_sum.matrix_block_diag' + theorem has_sum.matrix_block_diag + theorem matrix.block_diagonal'_tsum + theorem matrix.block_diagonal_tsum + theorem summable.matrix_block_diag' + theorem summable.matrix_block_diag +/- theorem summable.matrix_block_diagonal' + theorem summable_matrix_block_diagonal' + theorem summable_matrix_block_diagonal 2022-05-05 02:21:58 50fd3d6 feat(analysis/special_functions/log/monotone): add lemmas (#13848) Adds a few lemmas regarding tonality of `log x / x ^ a`, and puts them in a new file, along with previous results. ESTIMATED CHANGES Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/complex/log.lean Renamed src/analysis/special_functions/logb.lean to src/analysis/special_functions/log/base.lean Renamed src/analysis/special_functions/log.lean to src/analysis/special_functions/log/basic.lean - theorem real.log_div_self_antitone_on Renamed src/analysis/special_functions/log_deriv.lean to src/analysis/special_functions/log/deriv.lean Added src/analysis/special_functions/log/monotone.lean + theorem real.log_div_self_antitone_on + theorem real.log_div_self_rpow_antitone_on + theorem real.log_div_sqrt_antitone_on + theorem real.log_mul_self_monotone_on Modified src/analysis/special_functions/pow_deriv.lean Modified src/data/complex/exponential_bounds.lean Modified src/number_theory/von_mangoldt.lean Modified test/differentiable.lean 2022-05-05 00:25:32 1e18935 docs(algebra/ring/opposite): fix docstring for `ring_hom.from_opposite` (#13957) ESTIMATED CHANGES Modified src/algebra/ring/opposite.lean 2022-05-05 00:25:31 3650936 feat(representation_theory/Action): lemma about isomorphisms in `Action G V` (#13951) ESTIMATED CHANGES Modified src/representation_theory/Action.lean + theorem Action.iso.conj_ρ 2022-05-05 00:25:30 9b245e2 feat(analysis/convex/integral): drop an assumption, add a version (#13920) * add `convex.set_average_mem_closure`; * drop `is_closed s` assumption in `convex.average_mem_interior_of_set`; * add `ae_eq_const_or_norm_average_lt_of_norm_le_const`, a version of `ae_eq_const_or_norm_integral_lt_of_norm_le_const` for average. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean + theorem ae_eq_const_or_norm_average_lt_of_norm_le_const + theorem convex.set_average_mem_closure 2022-05-04 22:19:39 f8c303e refactor(order/filter/pointwise): Localize instances (#13898) Localize pointwise `filter` instances into the `pointwise` locale, as is done for `set` and `finset`. ESTIMATED CHANGES Modified src/order/filter/pointwise.lean + def filter.has_involutive_inv 2022-05-04 22:19:38 627f81b feat(group_theory/order_of_element): The index-th power lands in the subgroup (#13890) The PR adds a lemma stating `g ^ index H ∈ H`. I had to restate `G` to avoid the fintype assumption on `G`. ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem subgroup.pow_index_mem 2022-05-04 22:19:37 5696275 feat(data/list/big_operators): add `list.sublist.prod_le_prod'` etc (#13879) * add `list.forall₂.prod_le_prod'`, `list.sublist.prod_le_prod'`, and `list.sublist_forall₂.prod_le_prod'`; * add their additive versions; * upgrade `list.forall₂_same` to an `iff`. ESTIMATED CHANGES Modified src/data/list/big_operators.lean + theorem list.forall₂.prod_le_prod' + theorem list.sublist.prod_le_prod' + theorem list.sublist_forall₂.prod_le_prod' Modified src/data/list/forall2.lean +/- theorem list.forall₂_eq_eq_eq +/- theorem list.forall₂_same Modified src/data/multiset/powerset.lean Modified src/order/well_founded_set.lean 2022-05-04 20:04:22 9503f73 feat(linear_algebra/dual): dual of a finite free module is finite free (#13896) ESTIMATED CHANGES Modified src/linear_algebra/dual.lean 2022-05-04 20:04:21 eb1a566 refactor(set_theory/game/ordinal): Improve API (#13878) We change our former equivalence `o.out.α ≃ o.to_pgame.left_moves` to an equivalence `{o' // o' < o} ≃ o.to_pgame.left_moves`. This makes two proofs much simpler. We also add a simple missing lemma, `to_pgame_equiv_iff`. ESTIMATED CHANGES Modified src/set_theory/game/ordinal.lean - def ordinal.to_left_moves_to_pgame + theorem ordinal.to_left_moves_to_pgame_symm_lt + theorem ordinal.to_pgame_equiv_iff + theorem ordinal.to_pgame_move_left' +/- theorem ordinal.to_pgame_move_left 2022-05-04 20:04:20 28568bd feat(set_theory/game/nim): Add basic API (#13857) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean +/- theorem pgame.nim.exists_move_left_eq +/- theorem pgame.nim.exists_ordinal_move_left_eq + theorem pgame.nim.left_moves_nim + theorem pgame.nim.move_left_nim' + theorem pgame.nim.move_left_nim + theorem pgame.nim.move_left_nim_heq + theorem pgame.nim.move_right_nim' + theorem pgame.nim.move_right_nim + theorem pgame.nim.move_right_nim_heq + theorem pgame.nim.neg_nim + theorem pgame.nim.right_moves_nim + theorem pgame.nim.to_left_moves_nim_symm_lt + theorem pgame.nim.to_right_moves_nim_symm_lt 2022-05-04 20:04:19 a80e568 feat(logic/equiv/set): equivalences between all preimages gives an equivalence of domains (#13853) ESTIMATED CHANGES Modified src/data/fintype/card.lean Modified src/group_theory/coset.lean Modified src/group_theory/group_action/basic.lean Modified src/group_theory/p_group.lean Modified src/logic/equiv/basic.lean + def equiv.of_fiber_equiv + theorem equiv.of_fiber_equiv_map + def equiv.sigma_fiber_equiv - def equiv.sigma_preimage_equiv + def equiv.sigma_subtype_fiber_equiv + def equiv.sigma_subtype_fiber_equiv_subtype - def equiv.sigma_subtype_preimage_equiv - def equiv.sigma_subtype_preimage_equiv_subtype Modified src/logic/equiv/set.lean + def equiv.of_preimage_equiv + theorem equiv.of_preimage_equiv_map + def equiv.sigma_preimage_equiv Modified src/logic/small.lean Modified src/set_theory/cardinal/basic.lean 2022-05-04 20:04:18 edf6cef feat(set_theory/game/nim): `nim 0` is a relabelling of `0` and `nim 1` is a relabelling of `star` (#13846) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean + theorem pgame.grundy_value_star +/- theorem pgame.grundy_value_zero + theorem pgame.nim.nim_one_equiv + theorem pgame.nim.nim_zero_equiv + def pgame.nim.nim_zero_relabelling Modified src/set_theory/ordinal/arithmetic.lean + theorem ordinal.one_out_eq + theorem ordinal.typein_one_out +/- theorem ordinal.zero_lt_one 2022-05-04 20:04:17 fd8474f feat(algebra/ring/idempotents): Introduce idempotents (#13830) ESTIMATED CHANGES Added src/algebra/ring/idempotents.lean + theorem is_idempotent_elem.coe_compl + theorem is_idempotent_elem.coe_one + theorem is_idempotent_elem.coe_zero + theorem is_idempotent_elem.compl_compl + theorem is_idempotent_elem.eq + theorem is_idempotent_elem.iff_eq_one + theorem is_idempotent_elem.iff_eq_zero_or_one + theorem is_idempotent_elem.mul_of_commute + theorem is_idempotent_elem.of_is_idempotent + theorem is_idempotent_elem.one + theorem is_idempotent_elem.one_compl + theorem is_idempotent_elem.one_sub + theorem is_idempotent_elem.one_sub_iff + theorem is_idempotent_elem.pow + theorem is_idempotent_elem.pow_succ_eq + theorem is_idempotent_elem.zero + theorem is_idempotent_elem.zero_compl + def is_idempotent_elem 2022-05-04 20:04:15 91c0ef8 feat(analysis/normed_space/weak_dual): add the rest of Banach-Alaoglu theorem (#9862) The second of two parts to add the Banach-Alaoglu theorem about the compactness of the closed unit ball (and more generally polar sets of neighborhoods of the origin) of the dual of a normed space in the weak-star topology. This second half is about the embedding of the weak dual of a normed space into a (big) product of the ground fields, and the required compactness statements from Tychonoff's theorem. In particular it contains the actual Banach-Alaoglu theorem. Co-Authored-By: Yury Kudryashov ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.is_closed_image_coe_closed_ball + theorem continuous_linear_map.is_closed_image_coe_of_bounded_of_weak_closed + theorem continuous_linear_map.is_compact_closure_image_coe_of_bounded + theorem continuous_linear_map.is_compact_image_coe_closed_ball + theorem continuous_linear_map.is_compact_image_coe_of_bounded_of_closed_image + theorem continuous_linear_map.is_compact_image_coe_of_bounded_of_weak_closed + theorem continuous_linear_map.is_weak_closed_closed_ball Modified src/analysis/normed_space/weak_dual.lean + theorem normed_space.dual.coe_to_weak_dual + theorem normed_space.dual.is_closed_image_polar_of_mem_nhds +/- def normed_space.dual.to_weak_dual +/- theorem normed_space.dual.to_weak_dual_continuous - theorem weak_dual.coe_to_fun_eq_normed_coe_to_fun + theorem weak_dual.coe_to_normed_dual + theorem weak_dual.is_closed_closed_ball + theorem weak_dual.is_closed_image_coe_of_bounded_of_closed + theorem weak_dual.is_closed_image_polar_of_mem_nhds + theorem weak_dual.is_closed_polar + theorem weak_dual.is_compact_closed_ball + theorem weak_dual.is_compact_of_bounded_of_closed + theorem weak_dual.is_compact_polar + def weak_dual.polar + theorem weak_dual.polar_def - theorem weak_dual.to_normed_dual.preimage_closed_unit_ball +/- def weak_dual.to_normed_dual +/- theorem weak_dual.to_normed_dual_eq_iff Modified src/topology/algebra/module/weak_dual.lean Modified src/topology/maps.lean + theorem inducing.is_closed_iff' Modified src/topology/order.lean + theorem is_closed_induced_iff' 2022-05-04 17:58:32 90d6f27 ci(workflows/dependent-issues): run once every 15 mins, instead of on every merged PR (#13940) ESTIMATED CHANGES Modified .github/workflows/dependent-issues.yml 2022-05-04 17:58:30 aabcd89 chore(analysis/analytic_composition): weaken some typeclass arguments (#13924) There's no need to do a long computation to show the multilinear_map is bounded, when continuity follows directly from the definition. This deletes `comp_along_composition_aux`, and moves the lemmas about the norm of `comp_along_composition` further down the file so as to get the lemmas with weaker typeclass requirements out of the way first. The norm proofs are essentially unchanged. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean - def continuous_multilinear_map.comp_along_composition_aux - theorem continuous_multilinear_map.comp_along_composition_aux_bound + theorem formal_multilinear_series.comp_along_composition_bound Modified src/analysis/normed_space/indicator_function.lean 2022-05-04 17:58:29 209bb5d feat(set_theory/game/{pgame, basic}): Add more order lemmas (#13807) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + theorem game.lt_or_eq_of_le Modified src/set_theory/game/pgame.lean + theorem pgame.lt_or_equiv_of_le + theorem pgame.lt_or_equiv_or_gt 2022-05-04 17:58:28 3152982 feat(representation/Rep): linear structures (#13782) Make `Rep k G` a `k`-linear (and `k`-linear monoidal) category. ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean Modified src/category_theory/linear/default.lean Added src/category_theory/linear/functor_category.lean + def category_theory.nat_trans.app_linear_map + theorem category_theory.nat_trans.app_smul Added src/category_theory/monoidal/linear.lean Modified src/category_theory/monoidal/transport.lean Modified src/category_theory/preadditive/functor_category.lean Modified src/representation_theory/Action.lean + theorem Action.add_hom + theorem Action.associator_hom_hom + theorem Action.associator_inv_hom +/- def Action.forget_braided + theorem Action.left_unitor_hom_hom + theorem Action.left_unitor_inv_hom + theorem Action.neg_hom + theorem Action.right_unitor_hom_hom + theorem Action.right_unitor_inv_hom + theorem Action.smul_hom + theorem Action.tensor_V + theorem Action.tensor_hom + theorem Action.tensor_rho + theorem Action.zero_hom Modified src/representation_theory/Rep.lean 2022-05-04 17:58:27 0009ffb refactor(linear_algebra/charpoly): split file to reduce imports (#13778) While working on representation theory I was annoyed to find that essentially all of field theory was being transitively imported (causing lots of unnecessary recompilation). This improves the situation slightly. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified src/linear_algebra/charpoly/basic.lean Modified src/linear_algebra/matrix/charpoly/coeff.lean - theorem charpoly_left_mul_matrix - theorem finite_field.matrix.charpoly_pow_card - theorem finite_field.trace_pow_card - theorem matrix.is_integral - theorem matrix.minpoly_dvd_charpoly - theorem zmod.charpoly_pow_card - theorem zmod.trace_pow_card Added src/linear_algebra/matrix/charpoly/finite_field.lean + theorem finite_field.matrix.charpoly_pow_card + theorem finite_field.trace_pow_card + theorem zmod.charpoly_pow_card + theorem zmod.trace_pow_card Added src/linear_algebra/matrix/charpoly/minpoly.lean + theorem charpoly_left_mul_matrix + theorem matrix.is_integral + theorem matrix.minpoly_dvd_charpoly Modified src/ring_theory/norm.lean Modified src/ring_theory/trace.lean 2022-05-04 17:58:26 dd4590a refactor(algebra/restrict_scalars): remove global instance on module_orig (#13759) The global instance was conceptually wrong, unnecessary (after avoiding a hack in algebra/lie/base_change.lean), and wreaking havoc in #13713. ESTIMATED CHANGES Modified src/algebra/algebra/restrict_scalars.lean + def restrict_scalars.add_equiv + theorem restrict_scalars.add_equiv_map_smul - def restrict_scalars.alg_equiv - def restrict_scalars.linear_equiv - theorem restrict_scalars.linear_equiv_map_smul + def restrict_scalars.lsmul + def restrict_scalars.module_orig + def restrict_scalars.ring_equiv + theorem restrict_scalars.ring_equiv_algebra_map + theorem restrict_scalars.ring_equiv_map_smul Modified src/algebra/lie/base_change.lean Modified src/analysis/normed_space/basic.lean + def module.restrict_scalars.normed_space_orig Modified src/analysis/normed_space/extend.lean Modified src/ring_theory/algebra_tower.lean - theorem algebra.adjoin_algebra_map' 2022-05-04 17:58:24 abcd601 fix(src/tactic/alias): Teach `get_alias_target` about `alias f ↔ a b` (#13742) the `get_alias_target` function in `alias.lean` is used by the `to_additive` command to add the “Alias of …” docstring when creating an additive version of an existing alias (this was #13330). But `get_alias_target` did not work for `alias f ↔ a b`. This fixes it by extending the `alias_attr` map to not just store whether a defintion is an alias, but also what it is an alias of. Much more principled than trying to reconstruct the alias target from the RHS of the alias definition. Note that `alias` currently says “Alias of `foo_iff`” even though it’s really an alias of `foo_iff.mp`. This is an existing bug, not fixed in this PR – the effect is just that this “bug” will uniformly apply to additive lemmas as well. Hopefully will get rid of plenty of nolint.txt entries, and create better docs. Also improve the test file for the linter significantly. ESTIMATED CHANGES Modified src/algebra/parity.lean Modified src/tactic/alias.lean Modified test/lint_to_additive_doc.lean + def a_one_iff_b_one - def no_to_additive + def without_to_additive 2022-05-04 15:53:31 0038a04 feat(data/int/cast): int cast division lemmas (#13929) Adds lemmas for passing int cast through division, and renames the nat versions from `nat.cast_dvd` to `nat.cast_div`. Also some golf. ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem nat.cast_div_char_zero - theorem nat.cast_dvd_char_zero Modified src/data/int/cast.lean + theorem int.cast_div Modified src/data/int/char_zero.lean + theorem int.cast_div_char_zero Modified src/data/nat/cast.lean + theorem nat.cast_div - theorem nat.cast_dvd Modified src/data/nat/totient.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/von_mangoldt.lean Modified src/ring_theory/discriminant.lean Modified src/ring_theory/power_series/well_known.lean 2022-05-04 15:53:30 4602370 feat(set_theory/game/birthday): More basic lemmas on birthdays (#13729) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean + theorem pgame.birthday_add_zero + theorem pgame.birthday_one + theorem pgame.birthday_zero_add Modified src/set_theory/game/pgame.lean + theorem pgame.nat_one 2022-05-04 15:53:29 60ad844 feat(group_theory/complement): API lemmas relating `range_mem_transversals` and `to_equiv` (#13694) This PR adds an API lemma relating `range_mem_left_transversals` (the main way of constructing left transversals) and `mem_left_transversals.to_equiv` (one of the main constructions from left transversals), and a similar lemma relating the right versions. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.mem_left_transversals.to_equiv_apply + theorem subgroup.mem_right_transversals.to_equiv_apply 2022-05-04 15:53:28 923ae0b feat(group_theory/free_group): is_free_group via `free_group X ≃* G` (#13633) The previous definition of the `is_free_group` class was defined via the universal property of free groups, which is intellectually pleasing, but technically annoying, due to the universe problems of quantifying over “all other groups” in the definition. To work around them, many definitions had to be duplicated. This changes the definition of `is_free_group` to contain an isomorphism between the `free_group` over the generator and `G`. It also moves this class into `free_group.lean`, so that it can be found more easily. Relevant Zulip thread: A previous attempt at reforming `is_free_group` to unbundle the set of generators (`is_freely_generated_by G X`) is on branch `joachim/is_freely_generated_by`, but it wasn't very elegant to use in some places. ESTIMATED CHANGES Modified src/group_theory/free_product.lean Modified src/group_theory/is_free_group.lean - theorem is_free_group.ext_hom' +/- theorem is_free_group.ext_hom - def is_free_group.lift' - theorem is_free_group.lift'_of +/- def is_free_group.lift - theorem is_free_group.lift_eq_free_group_lift +/- theorem is_free_group.lift_of + theorem is_free_group.lift_symm_apply + def is_free_group.of +/- theorem is_free_group.of_eq_free_group_of + def is_free_group.of_lift +/- def is_free_group.of_mul_equiv + def is_free_group.of_unique_lift +/- def is_free_group.to_free_group +/- theorem is_free_group.unique_lift Modified src/group_theory/nielsen_schreier.lean +/- def is_free_groupoid.spanning_tree.End_is_free 2022-05-04 15:53:27 552a470 feat(number_theory/cyclotomic/rat): the ring of integers of cyclotomic fields. (#13585) We compute the ring of integers of a `p ^ n`-th cyclotomic extension of `ℚ`. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean + theorem is_cyclotomic_extension.singleton_one Modified src/number_theory/cyclotomic/discriminant.lean + theorem is_cyclotomic_extension.discr_prime_pow + theorem is_cyclotomic_extension.discr_prime_pow_eq_unit_mul_pow + theorem is_cyclotomic_extension.discr_prime_pow_ne_two' Added src/number_theory/cyclotomic/rat.lean + theorem is_cyclotomic_extension.rat.cyclotomic_ring_is_integral_closure_of_prime + theorem is_cyclotomic_extension.rat.cyclotomic_ring_is_integral_closure_of_prime_pow + theorem is_cyclotomic_extension.rat.discr_odd_prime' + theorem is_cyclotomic_extension.rat.discr_prime_pow' + theorem is_cyclotomic_extension.rat.discr_prime_pow_eq_unit_mul_pow' + theorem is_cyclotomic_extension.rat.discr_prime_pow_ne_two' + theorem is_cyclotomic_extension.rat.is_integral_closure_adjoing_singleton_of_prime + theorem is_cyclotomic_extension.rat.is_integral_closure_adjoing_singleton_of_prime_pow Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic_irreducible_of_irreducible_pow 2022-05-04 15:53:26 e716139 feat(algebra/homology/Module): API for complexes of modules (#12622) API for homological complexes in `Module R`. ESTIMATED CHANGES Modified src/algebra/category/Module/kernels.lean + theorem Module.cokernel_π_ext Modified src/algebra/category/Module/subobject.lean + theorem Module.cokernel_π_image_subobject_ext + theorem Module.to_kernel_subobject_arrow Added src/algebra/homology/Module.lean + theorem Module.cycles_ext + theorem Module.cycles_map_to_cycles + theorem Module.homology_ext' + theorem Module.homology_ext + def Module.to_cycles + def Module.to_homology Modified src/algebra/homology/homology.lean +/- theorem cycles_map_arrow - theorem homological_complex.boundaries_to_cycles_arrow +/- def homological_complex.cycles - theorem homological_complex.cycles_arrow_d_from Modified src/category_theory/limits/concrete_category.lean + theorem category_theory.limits.cokernel_funext 2022-05-04 15:53:24 a7c5097 feat(set_theory/cardinal/cofinality): Cofinality of normal functions (#12384) If `f` is normal and `a` is limit, then `cof (f a) = cof a`. We use this to golf `cof_add` from 24 lines down to 6. ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean + theorem ordinal.aleph'_cof + theorem ordinal.aleph_cof + theorem ordinal.cof_ne_zero + theorem ordinal.is_normal.cof_eq + theorem ordinal.is_normal.cof_le 2022-05-04 15:53:23 d565adb feat(analysis/convex/topology): Separating by convex sets (#11458) When `s` is compact, `t` is closed and both are convex, we can find disjoint open convex sets containing `s` and `t`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem convex.neg +/- theorem convex_Inter + theorem convex_Inter₂ Modified src/analysis/convex/topology.lean + theorem convex.cthickening + theorem convex.thickening +/- theorem convex_on_dist +/- theorem convex_on_norm + theorem disjoint.exists_open_convexes Modified src/topology/metric_space/hausdorff_distance.lean + theorem disjoint.exists_cthickenings + theorem disjoint.exists_thickenings + theorem emetric.exists_pos_forall_le_edist 2022-05-04 14:57:36 32320a1 feat(measure_theory/integral/lebesgue): speed up a proof (#13946) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean 2022-05-04 11:10:47 ceca8d7 fix(ring_theory/polynomial/basic): fix unexpected change of an implicit parameter (#13935) Fix unexpected change of an implicit parameter in the previous PR(#13800). Fix docstring. ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean +/- def polynomial.degree_lt_equiv 2022-05-04 11:10:46 53c79d5 feat(linear_algebra/span): add `finite_span_is_compact_element` (#13901) This PR adds `finite_span_is_compact_element`, which extends `singleton_span_is_compact_element` to the spans of finite subsets. This will be useful e.g. when proving the existence of a maximal submodule of a finitely generated module. ESTIMATED CHANGES Modified src/linear_algebra/span.lean + theorem submodule.finite_span_is_compact_element + theorem submodule.finset_span_is_compact_element 2022-05-04 11:10:45 a057441 feat(order/basic): Notation for `order_dual` (#13798) Define `αᵒᵈ` as notation for `order_dual α` and replace current uses. [Zulip poll](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Notation.20for.20order_dual/near/280629129) ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/big_operators/order.lean Modified src/algebra/bounds.lean Modified src/algebra/group_power/order.lean +/- theorem pow_le_one' +/- theorem pow_lt_one' Modified src/algebra/indicator_function.lean Modified src/algebra/order/archimedean.lean Modified src/algebra/order/field.lean Modified src/algebra/order/group.lean +/- def order_iso.inv Modified src/algebra/order/module.lean +/- def order_iso.smul_left_dual Modified src/algebra/order/monoid.lean Modified src/algebra/order/ring.lean Modified src/algebra/order/smul.lean +/- theorem order_dual.of_dual_smul Modified src/algebra/order/with_zero.lean Modified src/algebra/support.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean +/- theorem prime_spectrum.gc +/- theorem prime_spectrum.gc_set Modified src/algebraic_geometry/projective_spectrum/topology.lean Modified src/analysis/box_integral/partition/filter.lean +/- def box_integral.integration_params.equiv_prod +/- def box_integral.integration_params.iso_prod Modified src/analysis/convex/basic.lean +/- theorem convex_Ici +/- theorem convex_Ioi Modified src/analysis/convex/extrema.lean Modified src/analysis/convex/function.lean Modified src/analysis/convex/jensen.lean Modified src/analysis/convex/quasiconvex.lean Modified src/analysis/convex/strict.lean +/- theorem strict_convex_Ici Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/combinatorics/pigeonhole.lean Modified src/data/fin/basic.lean +/- def order_iso.fin_equiv Modified src/data/fin/tuple/basic.lean Modified src/data/finset/lattice.lean +/- theorem finset.inf'_const +/- theorem finset.inf'_le +/- theorem finset.inf'_le_iff +/- theorem finset.inf'_lt_iff +/- theorem finset.inf_eq_infi +/- theorem finset.inf_id_eq_Inf +/- theorem finset.inf_top +/- theorem finset.infi_option_to_finset +/- theorem finset.le_inf' +/- theorem finset.lt_inf'_iff +/- theorem finset.lt_min'_iff +/- theorem finset.mem_of_min +/- theorem finset.min'_eq_inf' +/- theorem infi_eq_infi_finset Modified src/data/finset/locally_finite.lean Modified src/data/finset/pi_induction.lean Modified src/data/finset/sigma.lean Modified src/data/fintype/basic.lean +/- theorem fintype.card_order_dual Modified src/data/list/big_operators.lean Modified src/data/list/min_max.lean +/- def list.argmin +/- theorem list.le_min_of_le_forall +/- theorem list.minimum_eq_coe_foldr_min_of_ne_nil Modified src/data/nat/lattice.lean Modified src/data/nat/pairing.lean Modified src/data/ordmap/ordset.lean +/- theorem ordnode.bounded.dual_iff +/- theorem ordnode.valid'.dual +/- theorem ordnode.valid'.dual_iff +/- theorem ordnode.valid.dual +/- theorem ordnode.valid.dual_iff Modified src/data/real/ennreal.lean +/- def order_iso.inv_ennreal Modified src/data/real/ereal.lean +/- def ereal.neg_order_iso Modified src/data/set/finite.lean Modified src/data/set/function.lean Modified src/data/set/intervals/basic.lean +/- theorem set.Iic_subset_Iic Modified src/data/set/intervals/infinite.lean +/- theorem set.Ioi.infinite Modified src/data/set/intervals/pi.lean Modified src/data/set/intervals/with_bot_top.lean +/- theorem with_bot.range_coe Modified src/data/sum/order.lean +/- def order_iso.sum_dual_distrib +/- def order_iso.sum_lex_dual_antidistrib Modified src/field_theory/galois.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/linear_algebra/basic.lean +/- def linear_map.iterate_range Modified src/linear_algebra/prod.lean +/- def linear_map.tunnel Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/ess_sup.lean Modified src/measure_theory/function/locally_integrable.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/lattice.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.Ioi_ae_eq_Ici' Modified src/measure_theory/pi_system.lean Modified src/order/antisymmetrization.lean Modified src/order/atoms.lean +/- theorem is_atomic_dual_iff_is_coatomic +/- theorem is_atomistic_dual_iff_is_coatomistic +/- theorem is_coatomic_dual_iff_is_atomic +/- theorem is_coatomistic_dual_iff_is_atomistic Modified src/order/basic.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded.lean Modified src/order/bounded_order.lean Modified src/order/bounds.lean +/- theorem exists_glb_Ioi +/- theorem is_glb_Ioi +/- theorem is_least_singleton +/- theorem is_lub_empty +/- theorem le_glb_Ioi +/- theorem lower_bounds_empty +/- theorem not_bdd_below_iff' +/- theorem order_iso.lower_bounds_image Modified src/order/category/BoolAlg.lean Modified src/order/category/BoundedDistribLattice.lean Modified src/order/category/BoundedLattice.lean Modified src/order/category/BoundedOrder.lean Modified src/order/category/CompleteLattice.lean Modified src/order/category/DistribLattice.lean Modified src/order/category/FinBoolAlg.lean Modified src/order/category/FinPartialOrder.lean Modified src/order/category/Lattice.lean +/- def Lattice.dual Modified src/order/category/LinearOrder.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/category/PartialOrder.lean Modified src/order/category/Preorder.lean Modified src/order/category/Semilattice.lean Modified src/order/circular.lean Modified src/order/compare.lean Modified src/order/complete_boolean_algebra.lean +/- theorem Inf_sup_eq +/- theorem infi_sup_eq +/- theorem sup_Inf_eq +/- theorem sup_infi_eq Modified src/order/complete_lattice.lean +/- theorem Inf_eq_bot +/- theorem Inf_eq_infi' +/- theorem Inf_eq_infi +/- theorem Inf_image' +/- theorem Inf_sUnion +/- theorem Sup_eq_bot +/- theorem Sup_image +/- theorem inf_eq_infi +/- theorem infi_bool_eq +/- theorem infi_comm +/- theorem infi_of_empty +/- theorem infi_top +/- theorem le_Inf_inter +/- theorem supr_and +/- theorem supr_bot +/- theorem supr_const Modified src/order/concept.lean +/- def concept.swap_equiv Modified src/order/conditionally_complete_lattice.lean +/- theorem cinfi_const +/- theorem cinfi_set Modified src/order/cover.lean +/- theorem of_dual_covby_of_dual_iff +/- theorem of_dual_wcovby_of_dual_iff Modified src/order/directed.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.at_bot_Iio_eq +/- theorem filter.at_bot_basis' +/- theorem filter.at_bot_basis Modified src/order/filter/basic.lean Modified src/order/filter/cofinite.lean Modified src/order/filter/extr.lean +/- theorem is_min_on.infi_eq Modified src/order/fixed_points.lean +/- theorem order_hom.gfp_gfp Modified src/order/grade.lean +/- theorem grade_of_dual Modified src/order/hom/basic.lean +/- def order_hom.dual_iso +/- theorem order_hom.symm_dual_comp +/- def order_iso.compl +/- def order_iso.dual_dual +/- theorem order_iso.dual_dual_symm_apply Modified src/order/hom/bounded.lean +/- theorem bot_hom.symm_dual_comp +/- theorem bounded_order_hom.symm_dual_comp +/- theorem top_hom.symm_dual_comp Modified src/order/hom/complete_lattice.lean +/- theorem Inf_hom.symm_dual_comp +/- theorem Sup_hom.symm_dual_comp +/- theorem complete_lattice_hom.symm_dual_comp Modified src/order/hom/lattice.lean +/- theorem bounded_lattice_hom.symm_dual_comp +/- theorem inf_hom.symm_dual_comp +/- theorem inf_top_hom.symm_dual_comp +/- theorem lattice_hom.symm_dual_comp +/- def sup_bot_hom.dual +/- theorem sup_bot_hom.symm_dual_comp +/- theorem sup_hom.symm_dual_comp Modified src/order/iterate.lean Modified src/order/lattice.lean +/- theorem inf_assoc +/- theorem inf_comm +/- theorem inf_idem +/- theorem inf_ind +/- theorem inf_le_iff +/- theorem inf_lt_iff +/- theorem le_inf_iff +/- theorem lt_inf_iff Modified src/order/liminf_limsup.lean Modified src/order/locally_finite.lean Modified src/order/max.lean +/- theorem is_bot_of_dual_iff +/- theorem is_bot_or_exists_lt +/- theorem is_max_of_dual_iff +/- theorem is_min_of_dual_iff +/- theorem is_top_of_dual_iff Modified src/order/min_max.lean +/- theorem max_cases +/- theorem max_eq_iff +/- theorem max_lt_max_left_iff +/- theorem max_lt_max_right_iff +/- theorem min_lt_min Modified src/order/modular_lattice.lean Modified src/order/monotone.lean +/- theorem antitone_nat_of_succ_le +/- theorem strict_anti_nat_of_succ_lt +/- theorem strict_mono_nat_of_lt_succ Modified src/order/order_dual.lean +/- theorem order_dual.le_to_dual +/- theorem order_dual.lt_to_dual +/- def order_dual.of_dual +/- theorem order_dual.of_dual_inj +/- theorem order_dual.of_dual_le_of_dual +/- theorem order_dual.of_dual_lt_of_dual +/- def order_dual.to_dual +/- theorem order_dual.to_dual_inj +/- theorem order_dual.to_dual_le +/- theorem order_dual.to_dual_le_to_dual +/- theorem order_dual.to_dual_lt +/- theorem order_dual.to_dual_lt_to_dual +/- theorem order_dual.to_dual_of_dual Modified src/order/pfilter.lean Modified src/order/rel_classes.lean Modified src/order/rel_iso.lean Modified src/order/succ_pred/basic.lean +/- theorem order.le_pred_iff_eq_bot +/- theorem order.pred_lt_iff_ne_bot Modified src/order/succ_pred/relation.lean Modified src/order/upper_lower.lean +/- theorem is_lower_set_preimage_to_dual_iff +/- theorem is_upper_set_preimage_to_dual_iff +/- def upper_set.Ici_Sup_hom +/- def upper_set.Ici_sup_hom Modified src/order/well_founded.lean Modified src/order/well_founded_set.lean +/- theorem set.is_wf_iff_no_descending_seq Modified src/order/zorn.lean Modified src/ring_theory/artinian.lean +/- theorem is_artinian.monotone_stabilizes Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/valuation/basic.lean +/- def add_valuation.valuation +/- def add_valuation Modified src/ring_theory/valuation/valuation_subring.lean +/- def valuation_subring.prime_spectrum_order_equiv Modified src/topology/algebra/order/basic.lean +/- theorem closure_Iio' +/- theorem disjoint_nhds_at_bot +/- theorem frontier_Ici_subset +/- theorem inf_nhds_at_bot Modified src/topology/algebra/order/compact.lean +/- theorem is_compact.Sup_mem Modified src/topology/algebra/order/extend_from.lean Modified src/topology/algebra/order/intermediate_value.lean Modified src/topology/algebra/order/left_right.lean Modified src/topology/algebra/order/liminf_limsup.lean +/- theorem Liminf_nhds +/- theorem is_bounded_ge_nhds Modified src/topology/algebra/order/monotone_continuity.lean Modified src/topology/algebra/order/monotone_convergence.lean +/- theorem tendsto_at_bot_csupr +/- theorem tendsto_at_bot_is_lub +/- theorem tendsto_at_top_cinfi +/- theorem tendsto_at_top_is_glb Modified src/topology/continuous_function/ordered.lean Modified src/topology/local_extr.lean Modified src/topology/order.lean Modified src/topology/order/lattice.lean Modified src/topology/semicontinuous.lean 2022-05-04 11:10:44 402e564 feat(linear_algebra/prod): linear version of prod_map (#13751) ESTIMATED CHANGES Modified src/linear_algebra/prod.lean + theorem linear_map.prod_map_add + def linear_map.prod_map_alg_hom + def linear_map.prod_map_linear - def linear_map.prod_map_monoid_hom + def linear_map.prod_map_ring_hom + theorem linear_map.prod_map_smul + theorem linear_map.prod_map_zero 2022-05-04 11:10:43 e1f00bc feat(order/well_founded): Well founded relations are asymmetric and irreflexive (#13692) ESTIMATED CHANGES Modified src/order/well_founded.lean + theorem well_founded.not_gt_of_lt 2022-05-04 11:10:42 6c7b880 feat(algebra/module/torsion): torsion ideal, decomposition lemma (#13414) Defines the torsion ideal of an element in a module, and also shows a decomposition lemma for torsion modules. ESTIMATED CHANGES Modified src/algebra/module/torsion.lean + theorem ideal.quotient.torsion_by_eq_span_singleton + theorem mem_torsion_of_iff + def module.is_torsion_by_set.has_scalar + theorem module.is_torsion_by_set.mk_smul + def module.is_torsion_by_set.module + def module.is_torsion_by_set + theorem quot_torsion_of_equiv_span_singleton_apply_mk + theorem submodule.is_torsion'_powers_iff + theorem submodule.is_torsion_by_set_iff_is_torsion_by_span + theorem submodule.is_torsion_by_set_iff_torsion_by_set_eq_top + theorem submodule.is_torsion_by_singleton_iff + theorem submodule.is_torsion_by_span_singleton_iff + theorem submodule.mem_torsion_by_set_iff + theorem submodule.supr_torsion_by_eq_torsion_by_prod +/- theorem submodule.torsion_by.mk_smul + theorem submodule.torsion_by_independent + theorem submodule.torsion_by_le_torsion_by_of_dvd + theorem submodule.torsion_by_one + theorem submodule.torsion_by_set.mk_smul + def submodule.torsion_by_set + theorem submodule.torsion_by_set_eq_torsion_by_span + theorem submodule.torsion_by_set_is_torsion_by_set + theorem submodule.torsion_by_set_le_torsion_by_set_of_subset + theorem submodule.torsion_by_set_torsion_by_set_eq_top + theorem submodule.torsion_by_singleton_eq + theorem submodule.torsion_by_span_singleton_eq + theorem submodule.torsion_by_univ + theorem submodule.torsion_is_internal + def torsion_of Modified src/ring_theory/coprime/lemmas.lean +/- theorem exists_sum_eq_one_iff_pairwise_coprime' +/- theorem exists_sum_eq_one_iff_pairwise_coprime +/- theorem pairwise_coprime_iff_coprime_prod 2022-05-04 11:10:40 e24f7f7 move(set_theory/ordinal/{arithmetic → fixed_points}): Move `nfp` (#13315) That way, it belong with the other functions about fixed points. ESTIMATED CHANGES Modified src/set_theory/ordinal/arithmetic.lean - theorem ordinal.add_eq_right_iff_mul_omega_le - theorem ordinal.add_le_right_iff_mul_omega_le - def ordinal.deriv - theorem ordinal.deriv_add_eq_mul_omega_add - theorem ordinal.deriv_eq_enum_fp - theorem ordinal.deriv_eq_id_of_nfp_eq_id - theorem ordinal.deriv_is_normal - theorem ordinal.deriv_limit - theorem ordinal.deriv_mul_eq_opow_omega_mul - theorem ordinal.deriv_mul_zero - theorem ordinal.deriv_succ - theorem ordinal.deriv_zero - theorem ordinal.eq_zero_or_opow_omega_le_of_mul_eq_right - theorem ordinal.is_normal.apply_eq_self_iff_deriv - theorem ordinal.is_normal.deriv_fp - theorem ordinal.is_normal.le_iff_deriv - theorem ordinal.is_normal.le_nfp - theorem ordinal.is_normal.nfp_fp - theorem ordinal.is_normal.nfp_le_fp - theorem ordinal.is_normal.nfp_unbounded - theorem ordinal.iterate_le_nfp - theorem ordinal.le_nfp_self - theorem ordinal.lt_nfp - theorem ordinal.mul_eq_right_iff_opow_omega_dvd - theorem ordinal.mul_le_right_iff_opow_omega_dvd - def ordinal.nfp - theorem ordinal.nfp_add_eq_mul_omega - theorem ordinal.nfp_add_zero - theorem ordinal.nfp_eq_self - theorem ordinal.nfp_le - theorem ordinal.nfp_le_iff - theorem ordinal.nfp_mul_eq_opow_omega - theorem ordinal.nfp_mul_one - theorem ordinal.nfp_mul_opow_omega_add - theorem ordinal.nfp_mul_zero - theorem ordinal.nfp_zero_mul Modified src/set_theory/ordinal/fixed_point.lean + theorem ordinal.add_eq_right_iff_mul_omega_le + theorem ordinal.add_le_right_iff_mul_omega_le + theorem ordinal.apply_le_nfp_bfamily + def ordinal.deriv + theorem ordinal.deriv_add_eq_mul_omega_add + theorem ordinal.deriv_eq_deriv_family + theorem ordinal.deriv_eq_enum_ord + theorem ordinal.deriv_eq_id_of_nfp_eq_id + theorem ordinal.deriv_id_of_nfp_id + theorem ordinal.deriv_is_normal + theorem ordinal.deriv_limit + theorem ordinal.deriv_mul_eq_opow_omega_mul + theorem ordinal.deriv_mul_zero + theorem ordinal.deriv_succ + theorem ordinal.deriv_zero + theorem ordinal.eq_zero_or_opow_omega_le_of_mul_eq_right + theorem ordinal.fp_unbounded + theorem ordinal.is_normal.apply_le_nfp + theorem ordinal.is_normal.apply_lt_nfp + theorem ordinal.is_normal.deriv_fp + theorem ordinal.is_normal.fp_iff_deriv + theorem ordinal.is_normal.le_iff_deriv + theorem ordinal.is_normal.nfp_fp + theorem ordinal.is_normal.nfp_le_apply + theorem ordinal.iterate_le_nfp + theorem ordinal.le_nfp +/- theorem ordinal.le_nfp_bfamily + theorem ordinal.le_nfp_family + theorem ordinal.lt_nfp + theorem ordinal.mul_eq_right_iff_opow_omega_dvd + theorem ordinal.mul_le_right_iff_opow_omega_dvd + def ordinal.nfp + theorem ordinal.nfp_add_eq_mul_omega + theorem ordinal.nfp_add_zero + theorem ordinal.nfp_eq_nfp_family + theorem ordinal.nfp_eq_self + theorem ordinal.nfp_id + theorem ordinal.nfp_le + theorem ordinal.nfp_le_fp + theorem ordinal.nfp_le_iff + theorem ordinal.nfp_monotone + theorem ordinal.nfp_mul_eq_opow_omega + theorem ordinal.nfp_mul_one + theorem ordinal.nfp_mul_opow_omega_add + theorem ordinal.nfp_mul_zero + theorem ordinal.nfp_zero_mul - theorem ordinal.self_le_nfp_bfamily - theorem ordinal.self_le_nfp_family + theorem ordinal.sup_iterate_eq_nfp Modified src/set_theory/ordinal/principal.lean 2022-05-04 07:51:01 1a86249 feat(measure_theory/function/l1_space): add `integrable_smul_measure` (#13922) * add `integrable_smul_measure`, an `iff` version of `integrable.smul_measure`; * add `integrable_average`, an `iff` version of `integrable.to_average`. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable_average + theorem measure_theory.integrable_smul_measure 2022-05-04 07:51:00 af4c6c8 chore(ring_theory/polynomial/basic): golf polynomial_not_is_field (#13919) ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean 2022-05-04 07:50:59 d0efe25 feat(data/finset/prod): diag of union (#13916) Lemmas about diag and off diag in relation to simple finset constructions. ESTIMATED CHANGES Modified src/data/finset/prod.lean + theorem finset.diag_insert + theorem finset.diag_singleton + theorem finset.diag_union + theorem finset.off_diag_insert + theorem finset.off_diag_singleton + theorem finset.off_diag_union + theorem finset.product_sdiff_diag + theorem finset.product_sdiff_off_diag 2022-05-04 07:50:58 098ab17 feat(category_theory/simple): nonzero morphisms to/from a simple are epi/mono (#13905) ESTIMATED CHANGES Modified src/category_theory/preadditive/schur.lean + theorem category_theory.mono_of_nonzero_from_simple Modified src/category_theory/simple.lean + theorem category_theory.epi_of_nonzero_to_simple 2022-05-04 07:50:57 455393d refactor(group_theory/{submonoid, subsemigroup}/{center, centralizer}): move set.center and set.centralizer into subsemigroup (#13903) This moves `set.center` and `set.centralizer` (the center and centralizers for a magma) into `group_theory/subsemigroup/{center, centralizer}` so that we can define the center and centralizers for semigroups in #13627. ESTIMATED CHANGES Modified src/group_theory/submonoid/center.lean - theorem set.add_mem_center - def set.center - theorem set.center_eq_univ - theorem set.center_units_eq - theorem set.center_units_subset - theorem set.div_mem_center - theorem set.div_mem_center₀ - theorem set.inv_mem_center - theorem set.inv_mem_center₀ - theorem set.mem_center_iff - theorem set.mul_mem_center - theorem set.neg_mem_center - theorem set.one_mem_center - theorem set.subset_center_units - theorem set.zero_mem_center Modified src/group_theory/submonoid/centralizer.lean - theorem set.add_mem_centralizer - def set.centralizer - theorem set.centralizer_eq_univ - theorem set.centralizer_subset - theorem set.centralizer_univ - theorem set.div_mem_centralizer - theorem set.div_mem_centralizer₀ - theorem set.inv_mem_centralizer - theorem set.inv_mem_centralizer₀ - theorem set.mem_centralizer_iff - theorem set.mul_mem_centralizer - theorem set.neg_mem_centralizer - theorem set.one_mem_centralizer - theorem set.zero_mem_centralizer Added src/group_theory/subsemigroup/center.lean + theorem set.add_mem_center + def set.center + theorem set.center_eq_univ + theorem set.center_units_eq + theorem set.center_units_subset + theorem set.div_mem_center + theorem set.div_mem_center₀ + theorem set.inv_mem_center + theorem set.inv_mem_center₀ + theorem set.mem_center_iff + theorem set.mul_mem_center + theorem set.neg_mem_center + theorem set.one_mem_center + theorem set.subset_center_units + theorem set.zero_mem_center Added src/group_theory/subsemigroup/centralizer.lean + theorem set.add_mem_centralizer + def set.centralizer + theorem set.centralizer_eq_univ + theorem set.centralizer_subset + theorem set.centralizer_univ + theorem set.div_mem_centralizer + theorem set.div_mem_centralizer₀ + theorem set.inv_mem_centralizer + theorem set.inv_mem_centralizer₀ + theorem set.mem_centralizer_iff + theorem set.mul_mem_centralizer + theorem set.neg_mem_centralizer + theorem set.one_mem_centralizer + theorem set.zero_mem_centralizer 2022-05-04 07:50:55 e6b8499 feat(ring_theory/valuation/valuation_subring): Adds some equivalent conditions for equivalence of valuations (#13895) ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean + theorem valuation.is_equiv_iff_val_eq_one + theorem valuation.is_equiv_iff_val_le_one + theorem valuation.map_add_eq_of_lt_left + theorem valuation.map_add_eq_of_lt_right Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation.is_equiv_iff_valuation_subring + theorem valuation.is_equiv_valuation_valuation_subring + theorem valuation.mem_valuation_subring_iff + def valuation.valuation_subring + theorem valuation_subring.valuation_subring_valuation 2022-05-04 07:50:54 6d37006 feat(data/list/basic): add `list.cons_diff` (#13892) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.cons_diff + theorem list.cons_diff_of_mem + theorem list.cons_diff_of_not_mem 2022-05-04 07:50:53 269bc85 feat(analysis/matrix): add `frobenius_norm_conj_transpose` (#13883) This also moves the existing lemmas about the elementwise norm to the same file. ESTIMATED CHANGES Modified src/analysis/matrix.lean + theorem matrix.frobenius_nnnorm_conj_transpose + theorem matrix.frobenius_norm_conj_transpose + theorem matrix.nnnorm_conj_transpose + theorem matrix.norm_conj_transpose Modified src/analysis/normed_space/star/matrix.lean - theorem matrix.nnnorm_conj_transpose - theorem matrix.norm_conj_transpose 2022-05-04 07:50:52 d537897 feat(category_theory/simple): simple objects are indecomposable (#13882) Remarkably tedious. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.indecomposable + theorem category_theory.limits.biprod.is_iso_inl_iff_id_eq_fst_comp_inl Modified src/category_theory/limits/shapes/zero_morphisms.lean + theorem category_theory.limits.is_zero.eq_zero_of_src + theorem category_theory.limits.is_zero.eq_zero_of_tgt + theorem category_theory.limits.is_zero.iff_id_eq_zero + theorem category_theory.limits.is_zero.iff_split_epi_eq_zero + theorem category_theory.limits.is_zero.iff_split_mono_eq_zero + theorem category_theory.limits.is_zero.of_epi + theorem category_theory.limits.is_zero.of_epi_eq_zero + theorem category_theory.limits.is_zero.of_epi_zero + theorem category_theory.limits.is_zero.of_mono + theorem category_theory.limits.is_zero.of_mono_eq_zero + theorem category_theory.limits.is_zero.of_mono_zero Modified src/category_theory/simple.lean + theorem category_theory.biprod.is_iso_inl_iff_is_zero + theorem category_theory.indecomposable_of_simple + theorem category_theory.simple.not_is_zero + theorem category_theory.simple.of_iso 2022-05-04 07:50:51 1afdaf9 feat(linear_algebra/trace): more general versions of `trace_mul_comm` and `trace_conj` (#13874) ESTIMATED CHANGES Modified src/linear_algebra/bilinear_map.lean + theorem linear_map.lcomp_apply' + theorem linear_map.llcomp_apply' Modified src/linear_algebra/contraction.lean + theorem comp_dual_tensor_hom Modified src/linear_algebra/trace.lean + theorem linear_map.trace_comp_comm' + theorem linear_map.trace_comp_comm +/- theorem linear_map.trace_conj' + theorem linear_map.trace_eq_contract_apply 2022-05-04 07:50:50 517aa8b feat(topology/algebra/star): continuity of `star` (#13855) This adds the obvious instances for `pi`, `prod`, `units`, `mul_opposite`, `real`, `complex`, `is_R_or_C`, and `matrix`. We already had a `continuous_star` lemma, but it had stronger typeclass assumptions. This resolves multiple TODO comments. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean +/- theorem complex.continuous_conj Modified src/analysis/normed_space/star/basic.lean - theorem continuous.star - theorem continuous_at.star - theorem continuous_at_star - theorem continuous_on.star - theorem continuous_on_star - theorem continuous_star - theorem continuous_within_at.star - theorem continuous_within_at_star - theorem filter.tendsto.star - theorem tendsto_star Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.continuous_conj Added src/topology/algebra/star.lean + theorem continuous.star + theorem continuous_at.star + theorem continuous_at_star + theorem continuous_on.star + theorem continuous_on_star + theorem continuous_within_at.star + theorem continuous_within_at_star + theorem filter.tendsto.star + theorem tendsto_star Modified src/topology/continuous_function/zero_at_infty.lean Modified src/topology/instances/matrix.lean + theorem continuous.matrix_conj_transpose + theorem has_sum.matrix_conj_transpose + theorem matrix.conj_transpose_tsum + theorem summable.matrix_conj_transpose + theorem summable_matrix_conj_transpose Modified src/topology/instances/real.lean 2022-05-04 07:50:49 35c8980 feat(analysis/asymptotics/specific_asymptotics): Cesaro averaging preserves convergence (#13825) ESTIMATED CHANGES Modified src/analysis/asymptotics/specific_asymptotics.lean + theorem asymptotics.is_o.sum_range + theorem asymptotics.is_o_sum_range_of_tendsto_zero + theorem filter.tendsto.cesaro + theorem filter.tendsto.cesaro_smul 2022-05-04 07:50:48 6e00330 feat(algebra/squarefree): relate squarefree on naturals to factorization (#13816) Also moves `nat.two_le_iff` higher up the hierarchy since it's an elementary lemma and give it a more appropriate type. The lemma `squarefree_iff_prime_sq_not_dvd` has been deleted because it's a duplicate of a lemma which is already earlier in the same file. ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem nat.squarefree.ext_iff + theorem nat.squarefree.factorization_le_one + theorem nat.squarefree_and_prime_pow_iff_prime + theorem nat.squarefree_iff_factorization_le_one - theorem nat.squarefree_iff_prime_sq_not_dvd + theorem nat.squarefree_of_factorization_le_one + theorem nat.squarefree_pow_iff Modified src/data/nat/basic.lean + theorem nat.two_le_iff Modified src/data/nat/factorization.lean + theorem nat.dvd_of_factorization_pos + theorem nat.prime.dvd_iff_one_le_factorization Modified src/data/nat/prime.lean - theorem nat.two_le_iff 2022-05-04 07:50:47 ba4bf54 feat(set_theory/game/pgame): Add more congr lemmas (#13808) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.add_congr_left + theorem pgame.add_congr_right +/- theorem pgame.equiv_refl + theorem pgame.equiv_rfl + theorem pgame.sub_congr_left + theorem pgame.sub_congr_right 2022-05-04 07:50:46 85657f1 feat(algebra/category/FinVect): has finite limits (#13793) ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean + def FinVect.of Added src/algebra/category/FinVect/limits.lean + def FinVect.forget₂_creates_limit Added src/algebra/category/Module/products.lean + theorem Module.pi_iso_pi_hom_ker_subtype + theorem Module.pi_iso_pi_inv_kernel_ι + def Module.product_cone + def Module.product_cone_is_limit Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean + def category_theory.limits.colimit_cocone_of_coequalizer_and_coproduct + def category_theory.limits.colimit_quotient_coproduct + def category_theory.limits.limit_cone_of_equalizer_and_product + def category_theory.limits.limit_subobject_product Modified src/linear_algebra/finite_dimensional.lean 2022-05-04 07:50:45 e3d38ed feat(algebra/hom/non_unital_alg): some constructions for `prod` (#13785) ESTIMATED CHANGES Modified src/algebra/hom/non_unital_alg.lean + theorem non_unital_alg_hom.coe_inl + theorem non_unital_alg_hom.coe_inr + theorem non_unital_alg_hom.coe_prod + def non_unital_alg_hom.fst + theorem non_unital_alg_hom.fst_prod + def non_unital_alg_hom.inl + theorem non_unital_alg_hom.inl_apply + def non_unital_alg_hom.inr + theorem non_unital_alg_hom.inr_apply + def non_unital_alg_hom.prod + def non_unital_alg_hom.prod_equiv + theorem non_unital_alg_hom.prod_fst_snd + def non_unital_alg_hom.snd + theorem non_unital_alg_hom.snd_prod 2022-05-04 07:50:44 9015d2a refactor(set_theory/game/pgame): Redefine `subsequent` (#13752) We redefine `subsequent` as `trans_gen is_option`. This gives a much nicer induction principle than the previous one, and allows us to immediately prove well-foundedness. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean - theorem pgame.subsequent.left_move + theorem pgame.subsequent.mk_left + theorem pgame.subsequent.mk_right + theorem pgame.subsequent.move_left + theorem pgame.subsequent.move_right - theorem pgame.subsequent.right_move + theorem pgame.subsequent.trans + def pgame.subsequent - inductive pgame.subsequent +/- theorem pgame.wf_subsequent 2022-05-04 07:50:43 b337b92 feat(model_theory/satisfiability): A union of a directed family of satisfiable theories is satisfiable (#13750) Proves `first_order.language.Theory.is_satisfiable_directed_union_iff` - the union of a directed family of theories is satisfiable if and only if all of the theories in the family are satisfiable. ESTIMATED CHANGES Modified src/model_theory/satisfiability.lean + theorem first_order.language.Theory.is_satisfiable_directed_union_iff 2022-05-04 07:50:40 51d8167 feat(model_theory/elementary_maps): The elementary diagram of a structure (#13724) Defines the elementary diagram of a structure - the theory consisting of all sentences with parameters it satisfies. Defines the canonical elementary embedding of a structure into any model of its elementary diagram. ESTIMATED CHANGES Modified src/model_theory/elementary_maps.lean + def first_order.language.elementary_diagram + def first_order.language.elementary_embedding.of_models_elementary_diagram Modified src/model_theory/language_map.lean 2022-05-04 07:50:39 319d502 refactor(linear_algebra/*): more generalisations (#13668) Many further generalisations from `field` to `division_ring` in the linear algebra library. This PR changes some proofs; it's not just relaxing hypotheses. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + def equiv.finsupp_unique +/- theorem finsupp.unique_ext_iff Modified src/linear_algebra/affine_space/basis.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/finite_dimensional.lean +/- theorem finite_dimensional.finrank_map_subtype_eq 2022-05-04 07:50:38 36c5faa feat(set_theory/game/pgame): Tweak `pgame.mul` API (#13651) We modify the API for `pgame.mul` in two ways: - `left_moves_mul` and `right_moves_mul` are turned from type equivalences into type equalities. - The former equivalences are prefixed with `to_` and inverted. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean + theorem pgame.left_moves_mul - def pgame.left_moves_mul + theorem pgame.right_moves_mul - def pgame.right_moves_mul + def pgame.to_left_moves_mul + def pgame.to_right_moves_mul 2022-05-04 07:50:37 bd23639 feat(topology/bornology): add more instances (#13621) ESTIMATED CHANGES Added src/topology/bornology/constructions.lean + theorem bornology.cobounded_pi + theorem bornology.cobounded_prod + theorem bornology.forall_is_bounded_image_eval_iff + def bornology.induced + theorem bornology.is_bounded.fst_of_prod + theorem bornology.is_bounded.pi + theorem bornology.is_bounded.prod + theorem bornology.is_bounded.snd_of_prod + theorem bornology.is_bounded_image_fst_and_snd + theorem bornology.is_bounded_image_subtype_coe + theorem bornology.is_bounded_induced + theorem bornology.is_bounded_pi + theorem bornology.is_bounded_pi_of_nonempty + theorem bornology.is_bounded_prod + theorem bornology.is_bounded_prod_of_nonempty + theorem bornology.is_bounded_prod_self + theorem bounded_space_coe_set_iff + theorem bounded_space_induced_iff + theorem bounded_space_subtype_iff 2022-05-04 07:50:35 2402b4d feat(set_theory/game/pgame): Tweak `pgame.neg` API (#13617) We modify the API for `pgame.neg` in various ways: - `left_moves_neg` and `right_moves_neg` are turned from type equivalences into type equalities. - The former equivalences are prefixed with `to_` and inverted. We also golf a few theorems. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean + theorem pgame.left_moves_neg - def pgame.left_moves_neg - theorem pgame.move_left_left_moves_neg_symm + theorem pgame.move_left_neg' + theorem pgame.move_left_neg + theorem pgame.move_left_neg_symm' + theorem pgame.move_left_neg_symm - theorem pgame.move_left_right_moves_neg - theorem pgame.move_right_left_moves_neg + theorem pgame.move_right_neg' + theorem pgame.move_right_neg + theorem pgame.move_right_neg_symm' + theorem pgame.move_right_neg_symm - theorem pgame.move_right_right_moves_neg_symm + theorem pgame.right_moves_neg - def pgame.right_moves_neg + def pgame.to_left_moves_neg + def pgame.to_right_moves_neg 2022-05-04 06:42:38 58de2a0 chore(analysis): use nnnorm notation everywhere (#13930) This was done with a series of ad-hoc regular expressions, then cleaned up by hand. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/radius_liminf.lean +/- theorem formal_multilinear_series.radius_eq_liminf Modified src/analysis/calculus/inverse.lean Modified src/analysis/normed/group/hom.lean +/- def add_monoid_hom.mk_normed_group_hom' Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/enorm.lean +/- theorem enorm.map_smul Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/indicator_function.lean Modified src/analysis/normed_space/linear_isometry.lean +/- theorem linear_isometry.nnnorm_map +/- theorem linear_isometry_equiv.nnnorm_map Modified src/analysis/normed_space/multilinear.lean +/- theorem continuous_multilinear_map.le_of_op_nnnorm_le +/- theorem continuous_multilinear_map.le_op_nnnorm Modified src/analysis/normed_space/operator_norm.lean Modified src/measure_theory/constructions/borel_space.lean +/- theorem measurable.nnnorm +/- theorem measurable_ennnorm Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.lintegral_nnnorm_zero Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/simple_func_dense_lp.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/integral/set_to_l1.lean 2022-05-04 06:42:36 6f3426c chore(number_theory/legendre_symbol/quadratic_char): golf some proofs (#13926) ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/quadratic_char.lean 2022-05-04 06:42:35 171825a chore(algebra/order/floor): missing simp lemmas on floor of nat and int (#13904) ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem int.ceil_int + theorem int.floor_int + theorem int.fract_int + theorem nat.ceil_int + theorem nat.ceil_nat + theorem nat.floor_int + theorem nat.floor_nat 2022-05-04 05:51:33 4d0b630 feat(category_theory/bicategory/coherence_tactic): coherence tactic for bicategories (#13417) This PR extends the coherence tactic for monoidal categories #13125 to bicategories. The setup is the same as for monoidal case except for the following : we normalize 2-morphisms before running the coherence tactic. This normalization is achieved by the set of simp lemmas in `whisker_simps` defined in `coherence_tactic.lean`. As a test of the tactic in the real world, I have proved several properties of adjunction in bicategories in #13418. Unfortunately some proofs cause timeout, so it seems that we need to speed up the coherence tactic in the future. ESTIMATED CHANGES Added src/category_theory/bicategory/coherence_tactic.lean + def category_theory.bicategory.bicategorical_comp + theorem category_theory.bicategory.bicategorical_comp_refl + def category_theory.bicategory.bicategorical_iso + def category_theory.bicategory.bicategorical_iso_comp + theorem tactic.bicategory.coherence.assoc_lift_hom₂ Modified src/category_theory/monoidal/coherence.lean Modified src/category_theory/monoidal/internal/types.lean Modified test/coherence.lean 2022-05-04 05:16:36 c1f329d feat(data/zmod/quotient): The quotient `/stab(b)` is cyclic of order `minimal_period ((+ᵥ) a) b` (#13722) This PR adds an isomorphism stating that the quotient `/stab(b)` is cyclic of order `minimal_period ((+ᵥ) a) b`. There is also a multiplicative version, but it is easily proved from the additive version, so I'll PR the multiplicative version afterwards. ESTIMATED CHANGES Modified src/data/zmod/quotient.lean + theorem add_action.zmultiples_quotient_stabilizer_equiv_symm_apply 2022-05-04 04:20:31 a2a873f chore(scripts): update nolints.txt (#13932) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-05-04 01:08:00 dd58438 feat(set_theory/game/short): Birthday of short games (#13875) We prove that a short game has a finite birthday. We also clean up the file somewhat. ESTIMATED CHANGES Modified src/set_theory/game/short.lean + def pgame.short.of_is_empty + theorem pgame.short_birthday - def pgame.short_of_equiv_empty 2022-05-04 00:13:27 fc3de19 feat(ring_theory/ideal/local_ring): generalize lemmas to semirings (#13471) What is essentially new is the proof of `local_ring.of_surjective` and `local_ring.is_unit_or_is_unit_of_is_unit_add`. - I changed the definition of local ring to `local_ring.of_is_unit_or_is_unit_of_add_one`, which is reminiscent of the definition before the recent change in #13341. The equivalence of the previous definition is essentially given by `local_ring.is_unit_or_is_unit_of_is_unit_add`. The choice of the definition is insignificant here because they are all equivalent, but I think the choice here is better for the default constructor because this condition is "weaker" than e.g. `local_ring.of_non_units_add` in some sense. - The proof of `local_ring.of_surjective` needs `[is_local_ring_hom f]`, which was not necessary for commutative rings in the previous proof. So the new version here is not a genuine generalization of the previous version. The previous version was renamed to `local_ring.of_surjective'`. ESTIMATED CHANGES Modified src/logic/equiv/transfer_instance.lean Modified src/number_theory/padics/padic_integers.lean Modified src/ring_theory/ideal/local_ring.lean + theorem local_ring.is_unit_or_is_unit_of_is_unit_add + theorem local_ring.nonunits_add + theorem local_ring.of_is_unit_or_is_unit_of_is_unit_add + theorem local_ring.of_nonunits_add + theorem local_ring.of_surjective' +/- theorem local_ring.of_surjective Modified src/ring_theory/localization/at_prime.lean 2022-05-03 23:37:38 6c0580a fix(.docker/*): update elan URL (#13928) These are hopefully the last occurrences of the URL that was breaking things earlier today. cf. #13906 ESTIMATED CHANGES Modified .docker/debian/lean/Dockerfile Modified .docker/gitpod/mathlib/Dockerfile 2022-05-03 22:34:05 fd65159 feat(topology/metric_space/basic): golf, avoid unfold (#13923) * Don't use `unfold` in `nnreal.pseudo_metric_space`. * Golf some proofs. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean 2022-05-03 21:57:27 de07131 feat(measure_theory/integral/torus_integral): torus integral and its properties (#12892) Define a generalized torus map and prove some basic properties. Define the torus integral and the integrability of functions on a generalized torus, and prove lemmas about them. ESTIMATED CHANGES Modified src/measure_theory/integral/circle_integral.lean + theorem circle_integral_def_Icc + theorem circle_map_zero Added src/measure_theory/integral/torus_integral.lean + theorem norm_torus_integral_le_of_norm_le_const + theorem torus_integrable.function_integrable + theorem torus_integrable.torus_integrable_const + theorem torus_integrable.torus_integrable_zero_radius + def torus_integrable + def torus_integral + theorem torus_integral_add + theorem torus_integral_const_mul + theorem torus_integral_dim0 + theorem torus_integral_dim1 + theorem torus_integral_neg + theorem torus_integral_radius_zero + theorem torus_integral_smul + theorem torus_integral_sub + theorem torus_integral_succ + theorem torus_integral_succ_above + def torus_map + theorem torus_map_eq_center_iff + theorem torus_map_sub_center + theorem torus_map_zero_radius 2022-05-03 20:33:18 9c0dfcd doc(order/countable_dense_linear_order): Fix minor mistake (#13921) I wrongfully removed some instances of the word "linear" in #12928. This is in fact used as a hypothesis. ESTIMATED CHANGES Modified src/order/countable_dense_linear_order.lean 2022-05-03 19:18:51 5cfb8db refactor(ring_theory/jacobson_ideal): generalize lemmas to non-commutative rings (#13865) The main change here is that the order of multiplication has been adjusted slightly in `mem_jacobson_iff`and `exists_mul_sub_mem_of_sub_one_mem_jacobson`. In the commutative case this doesn't matter anyway. All the other changes are just moving lemmas between sections, the statements of no lemmas other than those two have been changed. No lemmas have been added or removed. The lemmas about `is_unit` and quotients don't generalize as easily, so I've not attempted to touch those; that would require some mathematical insight, which is out of scope for this PR! ESTIMATED CHANGES Modified src/ring_theory/jacobson_ideal.lean +/- theorem ideal.is_primary_of_is_maximal_radical +/- theorem ideal.mem_jacobson_iff Modified src/ring_theory/nakayama.lean 2022-05-03 18:19:54 16157f2 chore(topology/continuous_function/bounded): generalize from `normed_*` to `semi_normed_*` (#13915) Every single lemma in this file generalized, apart from the ones that transferred a `normed_*` instance which obviously need the stronger assumption. `dist_zero_of_empty` was the only lemma that actually needed reproving from scratch, all the other affected proofs are just split between two instances. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean +/- theorem bounded_continuous_function.arzela_ascoli +/- theorem bounded_continuous_function.equicontinuous_of_continuity_modulus +/- def bounded_continuous_function.of_normed_group +/- structure bounded_continuous_function 2022-05-03 18:19:53 bd1d935 feat(number_theory/legendre_symbol/): add some lemmas (#13831) This adds essentially two lemmas on quadratic characters: * `quadratic_char_neg_one_iff_not_is_square`, which says that the quadratic character takes the value `-1` exactly on non-squares, and * `quadratic_char_number_of_sqrts`. which says that the number of square roots of `a : F` is `quadratic_char F a + 1`. It also adds the corresponding statements, `legendre_sym_eq_neg_one_iff` and `legendre_sym_number_of_sqrts`, for the Legendre symbol. ESTIMATED CHANGES Modified src/number_theory/legendre_symbol/quadratic_char.lean + theorem char.quadratic_char_card_sqrts + theorem char.quadratic_char_eq_neg_one_iff_not_one + theorem char.quadratic_char_neg_one_iff_not_is_square + theorem finite_field.neg_ne_self_of_char_ne_two Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean + theorem zmod.legendre_sym_card_sqrts + theorem zmod.legendre_sym_eq_neg_one_iff + theorem zmod.legendre_sym_eq_neg_one_iff_not_one 2022-05-03 16:29:01 7d28753 chore(normed_space/weak_dual): generalize `normed_group` to `semi_normed_group` (#13914) This almost halves the time this file takes to build, and is more general too. ESTIMATED CHANGES Modified src/analysis/normed_space/weak_dual.lean 2022-05-03 16:29:00 8688753 feat(set_theory/game/basic): Inline instances (#13813) We also add a few missing instances. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean - def game.add - theorem game.add_assoc - theorem game.add_comm - theorem game.add_left_neg - theorem game.add_zero - def game.game_partial_order - def game.le - def game.lt - def game.neg +/- theorem game.not_le + theorem game.not_lt + def game.ordered_add_comm_group - def game.ordered_add_comm_group_game + def game.partial_order - theorem game.zero_add - def pgame.mul 2022-05-03 16:28:59 5c433d0 feat(algebra/big_operators/basic): `prod_list_count` and `prod_list_count_of_subset` (#13370) Add `prod_list_count (l : list α) : l.prod = ∏ x in l.to_finset, (x ^ (l.count x))` and `prod_list_count_of_subset (l : list α) (s : finset α) (hs : l.to_finset ⊆ s) : l.prod = ∏ x in s, x ^ (l.count x)` as counterparts of `prod_multiset_count` and `prod_multiset_count_of_subset` (whose proofs are then golfed using the new lemmas). ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_list_count + theorem finset.prod_list_count_of_subset + theorem finset.prod_list_map_count 2022-05-03 14:29:31 40b5952 doc(analysis/matrix): fix broken LaTeX (#13910) ESTIMATED CHANGES Modified src/analysis/matrix.lean 2022-05-03 14:29:30 1c4d2b7 feat(linear_algebra/matrix/trace): add `trace_conj_transpose` (#13888) ESTIMATED CHANGES Modified src/linear_algebra/matrix/trace.lean + theorem matrix.trace_conj_transpose 2022-05-03 14:29:29 0f8d7a9 feat(order/omega_complete_partial_order): make `continuous_hom.prod.apply` continuous (#13833) Previous it was defined as `apply : (α →𝒄 β) × α →o β` and the comment said that it would make sense to define it as a continuous function, but we need an instance for `α →𝒄 β` first. But then let’s just define that instance first, and then define `apply : (α →𝒄 β) × α →𝒄 β` as you would expect. Also rephrases `lemma ωSup_ωSup` differently now that `apply` is continuous. ESTIMATED CHANGES Modified src/order/omega_complete_partial_order.lean +/- def omega_complete_partial_order.continuous_hom.prod.apply + theorem omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup - theorem omega_complete_partial_order.continuous_hom.ωSup_ωSup + theorem prod.ωSup_zip 2022-05-03 14:29:28 475a533 feat(topology/algebra/module/basic): A continuous linear functional is open (#13829) ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean + theorem continuous_linear_map.exists_ne_zero 2022-05-03 14:29:27 4cea0a8 move(data/pi/*): Group `pi` files (#13826) Move `data.pi` to `data.pi.algebra` and `order.pilex` to `data.pi.lex`. ESTIMATED CHANGES Modified src/algebra/group/pi.lean Modified src/algebra/hom/equiv.lean Modified src/algebra/ring/basic.lean Modified src/data/fin/tuple/basic.lean Renamed src/data/pi.lean to src/data/pi/algebra.lean Renamed src/order/pilex.lean to src/data/pi/lex.lean 2022-05-03 14:29:25 8a5b4a7 feat(analysis/special_functions/complex/arg): lemmas about `arg z` and `±(π / 2)` (#13821) ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.abs_arg_le_pi_div_two_iff + theorem complex.arg_le_pi_div_two_iff + theorem complex.neg_pi_div_two_le_arg_iff 2022-05-03 14:29:24 2f38ccb chore(data/matrix/basic): add lemmas about powers of matrices (#13815) Shows that: * natural powers commute with `transpose`, `conj_transpose`, `diagonal`, `block_diagonal`, and `block_diagonal'`. * integer powers commute with `transpose`, and `conj_transpose`. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.conj_transpose_list_prod + theorem matrix.conj_transpose_pow +/- def matrix.conj_transpose_ring_equiv + theorem matrix.diagonal_pow + theorem matrix.map_injective + theorem matrix.transpose_pow Modified src/data/matrix/block.lean + theorem matrix.block_diagonal'_pow + theorem matrix.block_diagonal_pow Modified src/linear_algebra/matrix/zpow.lean + theorem matrix.conj_transpose_zpow + theorem matrix.transpose_zpow 2022-05-03 14:29:24 36b5341 feat(ring_theory/polynomial/basic): reduce assumptions, golf (#13800) There is some reorder, so the diff is a bit large. Sorry for that. ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean +/- theorem ideal.is_fg_degree_le +/- def polynomial.degree_lt_equiv +/- theorem polynomial.map_restriction +/- theorem polynomial.monic.geom_sum' +/- theorem polynomial.monic.geom_sum +/- theorem polynomial.monic_geom_sum_X 2022-05-03 14:29:22 6d2788c feat(analysis/calculus/cont_diff): cont_diff_succ_iff_fderiv_apply (#13797) * Prove that a map is `C^(n+1)` iff it is differentiable and all its directional derivatives in all points are `C^n`. * Also some supporting lemmas about `continuous_linear_equiv`. * We only manage to prove this when the domain is finite dimensional. * Prove one direction of `cont_diff_on_succ_iff_fderiv_within` with fewer assumptions * From the sphere eversion project Co-authored by: Patrick Massot [patrick.massot@u-psud.fr](mailto:patrick.massot@u-psud.fr) Co-authored by: Oliver Nash [github@olivernash.org](mailto:github@olivernash.org) ESTIMATED CHANGES Modified src/algebra/module/equiv.lean +/- theorem linear_equiv.symm_trans_apply + theorem linear_equiv.trans_symm Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff_clm_apply + theorem cont_diff_on_clm_apply + theorem cont_diff_on_succ_iff_fderiv_apply + theorem cont_diff_on_succ_of_fderiv_apply + theorem cont_diff_on_succ_of_fderiv_within + theorem cont_diff_succ_iff_fderiv_apply Modified src/analysis/normed_space/finite_dimension.lean + theorem continuous_clm_apply + def continuous_linear_equiv.pi_ring + theorem continuous_on_clm_apply Modified src/analysis/normed_space/operator_norm.lean + def continuous_linear_equiv.arrow_congr + def continuous_linear_equiv.arrow_congrSL Modified src/topology/algebra/module/basic.lean 2022-05-03 14:29:21 234b3df feat(analysis/normed_space): lemmas about continuous bilinear maps (#13522) * Define `continuous_linear_map.map_sub₂` and friends, similar to the lemmas for `linear_map`. * Rename `continuous_linear_map.map_add₂` to `continuous_linear_map.map_add_add` * Two comments refer to `continuous.comp₂`, which will be added in #13423 (but there is otherwise no dependency on this PR). * Define `precompR` and `precompL`, which will be used to compute the derivative of a convolution. * From the sphere eversion project * Required for convolutions ESTIMATED CHANGES Modified src/analysis/analytic/linear.lean Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem continuous_linear_map.continuous₂ + theorem continuous_linear_map.map_add₂ + theorem continuous_linear_map.map_neg₂ + theorem continuous_linear_map.map_smul₂ + theorem continuous_linear_map.map_smulₛₗ₂ + theorem continuous_linear_map.map_sub₂ + theorem continuous_linear_map.map_zero₂ Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.dist_le_op_norm + theorem continuous_linear_map.map_add_add - theorem continuous_linear_map.map_add₂ + theorem continuous_linear_map.nndist_le_op_nnnorm + def continuous_linear_map.precompL + def continuous_linear_map.precompR Modified src/measure_theory/function/strongly_measurable.lean + theorem measure_theory.ae_strongly_measurable.ae_strongly_measurable_comp₂ 2022-05-03 12:18:57 3b971a7 feat(data/zmod/basic): Add `zmod.cast_sub_one` (#13889) This PR adds `zmod.cast_sub_one`, an analog of `fin.coe_sub_one`. Unfortunately, the proof is a bit long. But maybe it can be golfed? ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.cast_sub_one 2022-05-03 12:18:56 78c86e1 chore(data/nat/totient): golf three lemmas (#13886) Golf the proofs of `totient_le`, `totient_lt`, and `totient_pos` ESTIMATED CHANGES Modified src/data/nat/totient.lean 2022-05-03 12:18:55 9f818ce feat(set_theory/ordinal_basic): `o.out.α` is equivalent to the ordinals below `o` (#13876) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean 2022-05-03 12:18:54 82b9c42 feat(set_theory/game/nim): Mark many lemmas as `simp` (#13844) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean - theorem pgame.equiv_iff_grundy_value_eq +/- theorem pgame.equiv_nim_grundy_value - theorem pgame.equiv_nim_iff_grundy_value_eq - theorem pgame.equiv_zero_iff_grundy_value +/- theorem pgame.grundy_value_def + theorem pgame.grundy_value_eq_iff_equiv + theorem pgame.grundy_value_eq_iff_equiv_nim + theorem pgame.grundy_value_iff_equiv_zero +/- theorem pgame.grundy_value_nim_add_nim +/- theorem pgame.grundy_value_zero +/- theorem pgame.nim.equiv_iff_eq +/- theorem pgame.nim.sum_first_loses_iff_eq +/- theorem pgame.nim.sum_first_wins_iff_neq +/- theorem pgame.nim.zero_first_loses 2022-05-03 12:18:53 e104992 chore(order/*): Replace total partial orders by linear orders (#13839) `partial_order α` + `is_total α (≤)` has no more theorems than `linear_order α` but is nonetheless used in some places. This replaces those uses by `linear_order α` or `complete_linear_order α`. Also make implicit one argument of `finset.lt_inf'_iff` and friends. ESTIMATED CHANGES Modified src/analysis/locally_convex/weak_dual.lean Modified src/data/finset/lattice.lean +/- theorem finset.comp_inf_eq_inf_comp_of_is_total +/- theorem finset.comp_sup_eq_sup_comp_of_is_total +/- theorem finset.exists_mem_eq_inf' +/- theorem finset.exists_mem_eq_inf +/- theorem finset.exists_mem_eq_sup' +/- theorem finset.exists_mem_eq_sup +/- theorem finset.inf'_le_iff +/- theorem finset.inf'_lt_iff - theorem finset.inf_le_iff - theorem finset.inf_lt_iff - theorem finset.le_inf'_iff +/- theorem finset.le_sup'_iff - theorem finset.le_sup_iff +/- theorem finset.lt_inf'_iff - theorem finset.lt_inf_iff +/- theorem finset.lt_sup'_iff - theorem finset.lt_sup_iff +/- theorem finset.sup'_lt_iff - theorem finset.sup_lt_iff Modified src/data/real/nnreal.lean Modified src/data/set/intervals/basic.lean +/- theorem set.Icc_bot_top +/- theorem set.Ici_top +/- theorem set.Iic_bot +/- theorem set.Iio_inter_Iio +/- theorem set.Ioc_inter_Ioi +/- theorem set.Ioi_inter_Ioi Modified src/order/complete_lattice.lean Modified src/order/lattice.lean +/- theorem antitone.map_inf +/- theorem antitone.map_sup +/- theorem inf_eq_min +/- theorem inf_ind +/- theorem inf_le_iff + theorem inf_lt_iff +/- theorem le_sup_iff +/- theorem lt_inf_iff +/- theorem lt_sup_iff +/- theorem monotone.map_inf +/- theorem monotone.map_sup +/- theorem sup_eq_max +/- theorem sup_ind +/- theorem sup_lt_iff Modified src/order/min_max.lean +/- theorem le_max_iff +/- theorem lt_max_iff +/- theorem lt_min_iff +/- theorem max_lt_iff + theorem max_lt_max_left_iff + theorem max_lt_max_right_iff +/- theorem min_le_iff +/- theorem min_lt_iff + theorem min_lt_min_left_iff + theorem min_lt_min_right_iff Modified src/order/omega_complete_partial_order.lean +/- theorem complete_lattice.inf_continuous' +/- theorem complete_lattice.inf_continuous Modified src/topology/algebra/order/basic.lean +/- theorem nhds_bot_basis +/- theorem nhds_bot_basis_Iic +/- theorem nhds_top_basis +/- theorem nhds_top_basis_Ici 2022-05-03 12:18:52 f6cb9be fix(data/complex/basic): make complex addition computable again (#13837) This was fixed once before in #8166 (5f2358c43b769b334f3986a96565e606fe5bccec), but a new noncomputable shortcut appears if your file has more imports. ESTIMATED CHANGES Modified src/data/complex/basic.lean 2022-05-03 12:18:51 b07c0f7 feat(set_theory/game/basic): Add `le_rfl` on games (#13814) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean +/- theorem game.le_refl + theorem game.le_rfl 2022-05-03 12:18:50 72816f9 feat(data/real/nnreal): add `nnreal.forall` and `nnreal.exists` (#13774) ESTIMATED CHANGES Modified src/data/real/nnreal.lean 2022-05-03 12:18:49 7931ba4 feat(order/conditionally_complete_lattice): Simp theorems (#13756) We remove `supr_unit` and `infi_unit` since, thanks to #13741, they can be proven by `simp`. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean +/- theorem infi_unique - theorem infi_unit +/- theorem supr_unique - theorem supr_unit 2022-05-03 11:43:28 65cad41 chore(.github/workflows): use separate secret token for dependent issues (#13902) ESTIMATED CHANGES Modified .github/workflows/dependent-issues.yml 2022-05-03 11:03:24 1c39267 ci(elan): update dead repository URLs (#13906) `Kha/elan` is redirected by github to `leanprover/elan`, but seemingly with a cache that is delayed. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/install.20elan.20fails.20in.20CI/near/280981154) ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2022-05-02 21:37:01 ca1551c feat(data/finset/n_ary): Binary image of finsets (#13718) Define `finset.image₂`, the binary map of finsets. Golf `data.finset.pointwise` using it. ESTIMATED CHANGES Added src/data/finset/n_ary.lean + theorem finset.card_image₂ + theorem finset.card_image₂_le + theorem finset.coe_image₂ + theorem finset.forall_image₂_iff + theorem finset.image_image₂ + theorem finset.image_image₂_antidistrib + theorem finset.image_image₂_antidistrib_left + theorem finset.image_image₂_antidistrib_right + theorem finset.image_image₂_distrib + theorem finset.image_image₂_distrib_left + theorem finset.image_image₂_distrib_right + theorem finset.image_image₂_right_anticomm + theorem finset.image_image₂_right_comm + theorem finset.image_subset_image₂_left + theorem finset.image_subset_image₂_right + def finset.image₂ + theorem finset.image₂_assoc + theorem finset.image₂_comm + theorem finset.image₂_congr' + theorem finset.image₂_congr + theorem finset.image₂_empty_left + theorem finset.image₂_empty_right + theorem finset.image₂_eq_empty_iff + theorem finset.image₂_image_left + theorem finset.image₂_image_left_anticomm + theorem finset.image₂_image_left_comm + theorem finset.image₂_image_right + theorem finset.image₂_inter_subset_left + theorem finset.image₂_inter_subset_right + theorem finset.image₂_left + theorem finset.image₂_left_comm + theorem finset.image₂_nonempty_iff + theorem finset.image₂_right + theorem finset.image₂_right_comm + theorem finset.image₂_singleton + theorem finset.image₂_singleton_left + theorem finset.image₂_singleton_right + theorem finset.image₂_subset + theorem finset.image₂_subset_iff + theorem finset.image₂_subset_left + theorem finset.image₂_subset_right + theorem finset.image₂_swap + theorem finset.image₂_union_left + theorem finset.image₂_union_right + theorem finset.mem_image₂ + theorem finset.mem_image₂_iff + theorem finset.mem_image₂_of_mem + theorem finset.nonempty.image₂ + theorem finset.nonempty.of_image₂_left + theorem finset.nonempty.of_image₂_right + theorem finset.subset_image₂ Modified src/data/finset/pointwise.lean +/- theorem finset.coe_div +/- theorem finset.coe_mul +/- theorem finset.coe_vsub +/- theorem finset.div_card_le +/- theorem finset.div_empty +/- theorem finset.div_mem_div +/- theorem finset.div_singleton +/- theorem finset.div_subset_div +/- theorem finset.empty_div +/- theorem finset.empty_mul +/- theorem finset.empty_smul +/- theorem finset.empty_vsub +/- theorem finset.image_vsub_product +/- theorem finset.mem_div +/- theorem finset.mem_mul +/- theorem finset.mem_smul +/- theorem finset.mem_vsub +/- theorem finset.mul_card_le +/- theorem finset.mul_empty +/- theorem finset.mul_mem_mul +/- theorem finset.mul_singleton +/- theorem finset.mul_subset_mul + theorem finset.nonempty.div + theorem finset.nonempty.mul +/- theorem finset.nonempty.smul +/- theorem finset.nonempty.vsub +/- theorem finset.singleton_div +/- theorem finset.singleton_div_singleton +/- theorem finset.singleton_mul +/- theorem finset.singleton_mul_singleton +/- theorem finset.singleton_smul +/- theorem finset.singleton_vsub_singleton +/- theorem finset.smul_card_le +/- theorem finset.smul_empty +/- theorem finset.smul_finset_mem_smul_finset +/- theorem finset.smul_mem_smul +/- theorem finset.smul_nonempty_iff +/- theorem finset.smul_singleton +/- theorem finset.smul_subset_smul +/- theorem finset.subset_div +/- theorem finset.subset_mul +/- theorem finset.subset_smul +/- theorem finset.subset_vsub +/- theorem finset.vsub_card_le +/- theorem finset.vsub_def +/- theorem finset.vsub_empty +/- theorem finset.vsub_mem_vsub +/- theorem finset.vsub_nonempty_iff +/- theorem finset.vsub_subset_vsub Modified src/order/filter/n_ary.lean 2022-05-02 20:22:14 1741207 feat(analysis/normed_space/exponential): `Aeᴮ = eᴮA` if `AB = BA` (#13881) This commit shows that the exponenential commutes if the exponent does. This generalizes a previous weaker result. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean +/- theorem commute.exp + theorem commute.exp_left + theorem commute.exp_right Modified src/topology/algebra/infinite_sum.lean + theorem commute.tsum_left + theorem commute.tsum_right 2022-05-02 19:32:06 c44091f feat(data/zmod/basic): Generalize `zmod.card` (#13887) This PR generalizes `zmod.card` from assuming `[fact (0 < n)]` to assuming `[fintype (zmod n)]`. Note that the latter was already part of the statement, but was previously deduced from the instance `instance fintype : Π (n : ℕ) [fact (0 < n)], fintype (zmod n)` on line 80. ESTIMATED CHANGES Modified src/data/zmod/basic.lean +/- theorem zmod.card 2022-05-02 19:32:04 2b0aeda feat(measure/function/l*_space): a sample of useful lemmas on L^p spaces (#13823) Used in #13690 ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.abs + theorem measure_theory.integrable.const_mul' - theorem measure_theory.integrable.max_zero - theorem measure_theory.integrable.min_zero + theorem measure_theory.integrable.mul_const' + theorem measure_theory.integrable.neg_part + theorem measure_theory.integrable.pos_part + theorem measure_theory.integrable_finset_sum' + theorem measure_theory.mem_ℒp.integrable_norm_rpow' + theorem measure_theory.mem_ℒp.integrable_norm_rpow Modified src/measure_theory/function/l2_space.lean + theorem measure_theory.mem_ℒp.integrable_sq + theorem measure_theory.mem_ℒp_two_iff_integrable_sq + theorem measure_theory.mem_ℒp_two_iff_integrable_sq_norm Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.neg_part + theorem measure_theory.mem_ℒp.norm_rpow_div + theorem measure_theory.mem_ℒp.pos_part +/- def measure_theory.mem_ℒp + theorem measure_theory.mem_ℒp_finset_sum' + theorem measure_theory.mem_ℒp_norm_rpow_iff + theorem measure_theory.mem_ℒp_top_const Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.mem_ℒp.snorm_eq_integral_rpow_norm Modified src/measure_theory/measure/ae_measurable.lean + theorem ae_measurable.map_map_of_ae_measurable Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.is_probability_measure_map Modified src/probability/integration.lean 2022-05-02 17:28:50 aa921ef docs(set_theory/game/pgame): Fix note on `pgame` (#13880) We never actually quotient by extensionality. What we quotient by is game equivalence. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-05-02 17:28:49 0606d7c feat(set_theory/game/pgame): Negative of `of_lists` (#13868) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.neg_of_lists 2022-05-02 17:28:48 3e2f214 feat(logic/basic): Generalize `congr_fun_heq` (#13867) The lemma holds for arbitrary heterogeneous equalities, not only that given by casts. ESTIMATED CHANGES Modified src/logic/basic.lean - theorem congr_fun_heq + theorem congr_heq Modified src/set_theory/game/ordinal.lean 2022-05-02 17:28:47 785f62c feat(algebra/star/prod): elementwise `star` operator (#13856) The lemmas and instances this provides are inspired by `algebra/star/pi`, and appear in the same order. We should have these instances anyway for completness, but the motivation is to make it easy to talk about the continuity of `star` on `units R` via the `units.embed_product_star` lemma. ESTIMATED CHANGES Added src/algebra/star/prod.lean + theorem prod.fst_star + theorem prod.snd_star + theorem prod.star_def + theorem units.embed_product_star 2022-05-02 17:28:46 206a5f7 feat(measure_theory/integral/bochner): Add a rewrite lemma saying the ennreal coercion of an integral of a nonnegative function equals the lintegral of the ennreal coercion of the function. (#13701) This PR adds a rewrite lemma `of_real_integral_eq_lintegral_of_real` that is very similar to `lintegral_coe_eq_integral`, but for nonnegative real-valued functions instead of nnreal-valued functions. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.of_real_integral_eq_lintegral_of_real 2022-05-02 17:28:45 917b527 feat(topology/metric_space/thickened_indicator): Add definition and lemmas about thickened indicators. (#13481) Add thickened indicators, to be used for the proof of the portmanteau theorem. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.div_le_div Modified src/topology/instances/ennreal.lean Added src/topology/metric_space/thickened_indicator.lean + theorem continuous_thickened_indicator_aux + theorem thickened_indicator.coe_fn_eq_comp + def thickened_indicator + def thickened_indicator_aux + theorem thickened_indicator_aux_closure_eq + theorem thickened_indicator_aux_le_one + theorem thickened_indicator_aux_lt_top + theorem thickened_indicator_aux_mono + theorem thickened_indicator_aux_one + theorem thickened_indicator_aux_one_of_mem_closure + theorem thickened_indicator_aux_subset + theorem thickened_indicator_aux_tendsto_indicator_closure + theorem thickened_indicator_aux_zero + theorem thickened_indicator_le_one + theorem thickened_indicator_mono + theorem thickened_indicator_one + theorem thickened_indicator_one_of_mem_closure + theorem thickened_indicator_subset + theorem thickened_indicator_tendsto_indicator_closure + theorem thickened_indicator_zero 2022-05-02 15:58:17 af11e15 feat(algebra/big_operators/finprod): add lemma `finprod_eq_prod_of_mul_support_to_finset_subset'` (#13801) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_eq_finset_prod_of_mul_support_subset 2022-05-02 15:58:16 65843cd feat(analysis/matrix): provide a normed_algebra structure on matrices (#13518) This is one of the final pieces needed to defining the matrix exponential. It would be nice to show: ```lean lemma l1_linf_norm_to_matrix [nondiscrete_normed_field R] [decidable_eq n] (f : (n → R) →L[R] (m → R)) : ∥linear_map.to_matrix' (↑f : (n → R) →ₗ[R] (m → R))∥ = ∥f∥ := ``` but its not clear to me under what generality it holds. ESTIMATED CHANGES Modified src/analysis/matrix.lean + theorem matrix.linfty_op_nnnorm_col + theorem matrix.linfty_op_nnnorm_def + theorem matrix.linfty_op_nnnorm_diagonal + theorem matrix.linfty_op_nnnorm_mul + theorem matrix.linfty_op_nnnorm_mul_vec + theorem matrix.linfty_op_nnnorm_row + theorem matrix.linfty_op_norm_col + theorem matrix.linfty_op_norm_def + theorem matrix.linfty_op_norm_diagonal + theorem matrix.linfty_op_norm_mul + theorem matrix.linfty_op_norm_mul_vec + theorem matrix.linfty_op_norm_row 2022-05-02 15:58:14 90418df feat(linear_algebra/finite_dimensional): `finite_dimensional_iff_of_rank_eq_nsmul` (#13357) If `V` has a dimension that is a scalar multiple of the dimension of `W`, then `V` is finite dimensional iff `W` is. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.finite_dimensional_iff_of_rank_eq_nsmul Modified src/set_theory/cardinal/basic.lean + theorem cardinal.nsmul_lt_omega_iff + theorem cardinal.nsmul_lt_omega_iff_of_ne_zero 2022-05-02 15:58:14 64bc02c feat(ring_theory/dedekind_domain): Chinese remainder theorem for Dedekind domains (#13067) The general Chinese remainder theorem states `R / I` is isomorphic to a product of `R / (P i ^ e i)`, where `P i` are comaximal, i.e. `P i + P j = 1` for `i ≠ j`, and the infimum of all `P i` is `I`. In a Dedekind domain the theorem can be stated in a more friendly way, namely that the `P i` are the factors (in the sense of a unique factorization domain) of `I`. This PR provides two ways of doing so, and includes some more lemmas on the ideals in a Dedekind domain. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean + theorem ideal.coprime_of_no_prime_ge + theorem ideal.count_normalized_factors_eq + theorem ideal.is_prime.mul_mem_pow + theorem ideal.le_mul_of_no_prime_factors + theorem ideal.le_of_pow_le_prime + theorem ideal.pow_le_prime_iff + theorem ideal.prod_le_prime + theorem is_dedekind_domain.inf_prime_pow_eq_prod + theorem is_dedekind_domain.quotient_equiv_pi_factors_mk + theorem ring.dimension_le_one.prime_le_prime_iff_eq 2022-05-02 13:45:11 384a7a3 chore(.github/workflows/merge_conflicts.yaml): use separate token (#13884) ESTIMATED CHANGES Modified .github/workflows/merge_conflicts.yml 2022-05-02 13:45:10 ad2e936 feat(topology/homeomorph): add `(co)map_cocompact` (#13861) Also rename `filter.comap_cocompact` to `filter.comap_cocompact_le`. ESTIMATED CHANGES Modified src/number_theory/modular.lean Modified src/topology/homeomorph.lean + theorem homeomorph.comap_cocompact + theorem homeomorph.map_cocompact Modified src/topology/subset_properties.lean - theorem filter.comap_cocompact + theorem filter.comap_cocompact_le 2022-05-02 13:45:09 dbc0339 feat(category_theory/limits/shapes/types): explicit isos (#13854) Requested on Zulip. https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Relating.20the.20categorical.20product.20and.20the.20normal.20product ESTIMATED CHANGES Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.binary_coproduct_iso_inl_comp_hom + theorem category_theory.limits.types.binary_coproduct_iso_inl_comp_inv + theorem category_theory.limits.types.binary_coproduct_iso_inr_comp_hom + theorem category_theory.limits.types.binary_coproduct_iso_inr_comp_inv + theorem category_theory.limits.types.binary_product_iso_hom_comp_fst + theorem category_theory.limits.types.binary_product_iso_hom_comp_snd + theorem category_theory.limits.types.binary_product_iso_inv_comp_fst + theorem category_theory.limits.types.binary_product_iso_inv_comp_snd + theorem category_theory.limits.types.coequalizer_iso_quot_comp_inv + theorem category_theory.limits.types.coequalizer_iso_π_comp_hom + theorem category_theory.limits.types.coproduct_iso_mk_comp_inv + theorem category_theory.limits.types.coproduct_iso_ι_comp_hom + theorem category_theory.limits.types.equalizer_iso_hom_comp_subtype + theorem category_theory.limits.types.equalizer_iso_inv_comp_ι + def category_theory.limits.types.initial_colimit_cocone - def category_theory.limits.types.initial_limit_cone + theorem category_theory.limits.types.product_iso_hom_comp_eval + theorem category_theory.limits.types.product_iso_inv_comp_π 2022-05-02 13:45:08 9d3db53 feat(category_theory/preadditive): End X is a division_ring or field when X is simple (#13849) Consequences of Schur's lemma ESTIMATED CHANGES Modified src/category_theory/preadditive/schur.lean + def category_theory.field_End_of_finite_dimensional +/- theorem category_theory.is_iso_iff_nonzero 2022-05-02 13:45:07 e5b48f9 chore(model_theory/basic): golf `countable_empty` (#13836) ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.empty_card 2022-05-02 13:45:06 4fe734d fix(algebra/indicator_function): add missing decidable instances to lemma statements (#13834) This keeps the definition of `set.indicator` as non-computable, but ensures that when lemmas are applied they generalize to any decidable instances. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean +/- theorem set.comp_mul_indicator - def set.indicator - def set.mul_indicator +/- theorem set.mul_indicator_apply - def set.mul_indicator_hom +/- theorem set.piecewise_eq_mul_indicator Modified src/combinatorics/simple_graph/inc_matrix.lean - def simple_graph.inc_matrix Modified src/geometry/euclidean/circumcenter.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.simple_func.integral_eq_sum_filter +/- theorem measure_theory.simple_func.integral_eq_sum_of_subset Modified src/measure_theory/probability_mass_function/monad.lean Modified src/topology/instances/ennreal.lean 2022-05-02 13:45:04 cf5fa84 feat(analysis/normed_space/add_torsor_bases): add lemma `smooth_barycentric_coord` (#13764) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean + theorem smooth_barycentric_coord 2022-05-02 13:45:03 4113e00 feat(linear_algebra/affine_space/basis): add lemma `affine_basis.linear_combination_coord_eq_self` (#13763) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basis.lean + theorem affine_basis.linear_combination_coord_eq_self 2022-05-02 13:45:02 b063c28 fix(src/tactic/alias): Support `alias foo ↔ ..` as documented (#13743) the current code and the single(!) use of this feature work only if you write `alias foo ↔ . .` which is very odd. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean Modified src/tactic/alias.lean 2022-05-02 13:45:01 3fde082 refactor(topology/algebra/order): reorganize, simplify proofs (#13716) * Prove `has_compact_mul_support.is_compact_range` * Simplify the proof of `continuous.exists_forall_le_of_has_compact_mul_support` and `continuous.bdd_below_range_of_has_compact_mul_support` using `has_compact_mul_support.is_compact_range`. * Reorder `topology.algebra.order.basic` so that `is_compact.bdd_below` and friends are together with all results about `order_closed_topology`. * Move `continuous.bdd_below_range_of_has_compact_mul_support` (and dual) to `topology.algebra.order.basic` ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.range_subset_insert_image_mul_support Modified src/topology/algebra/order/basic.lean + theorem continuous.bdd_above_range_of_has_compact_mul_support + theorem continuous.bdd_below_range_of_has_compact_mul_support +/- theorem is_compact.bdd_above +/- theorem is_compact.bdd_above_image +/- theorem is_compact.bdd_below +/- theorem is_compact.bdd_below_image Modified src/topology/algebra/order/compact.lean - theorem continuous.bdd_above_range_of_has_compact_mul_support - theorem continuous.bdd_below_range_of_has_compact_mul_support Modified src/topology/support.lean + theorem has_compact_mul_support.is_compact_range + theorem range_eq_image_mul_tsupport_or + theorem range_subset_insert_image_mul_tsupport 2022-05-02 13:45:00 52a454a feat(category_theory/limits): pushouts and pullbacks in the opposite category (#13495) This PR adds duality isomorphisms for the categories `wide_pushout_shape`, `wide_pullback_shape`, `walking_span`, `walking_cospan` and produce pullbacks/pushouts in the opposite category when pushouts/pullbacks exist. ESTIMATED CHANGES Modified src/category_theory/limits/opposites.lean + theorem category_theory.limits.has_pullbacks_opposite + theorem category_theory.limits.has_pushouts_opposite Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.walking_cospan_op_equiv + def category_theory.limits.walking_span_op_equiv Modified src/category_theory/limits/shapes/wide_pullbacks.lean + def category_theory.limits.wide_pullback_shape_op + def category_theory.limits.wide_pullback_shape_op_equiv + def category_theory.limits.wide_pullback_shape_op_map + def category_theory.limits.wide_pullback_shape_op_unop + def category_theory.limits.wide_pullback_shape_unop + def category_theory.limits.wide_pullback_shape_unop_op + def category_theory.limits.wide_pushout_shape_op + def category_theory.limits.wide_pushout_shape_op_equiv + def category_theory.limits.wide_pushout_shape_op_map + def category_theory.limits.wide_pushout_shape_op_unop + def category_theory.limits.wide_pushout_shape_unop + def category_theory.limits.wide_pushout_shape_unop_op 2022-05-02 11:44:57 61d5d30 feat(group_theory/group_action/basic): A multiplicative action induces an additive action of the additive group (#13780) `mul_action M α` induces `add_action (additive M) α`. ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean + theorem additive.of_mul_vadd + theorem multiplicative.of_add_smul 2022-05-02 11:44:56 320df45 refactor(linear_algebra/trace): unbundle `matrix.trace` (#13712) These extra type arguments are annoying to work with in many cases, especially when Lean doesn't have any information to infer the mostly-irrelevant `R` argument from. This came up while trying to work with `continuous.matrix_trace`, which is annoying to use for that reason. The old bundled version is still available as `matrix.trace_linear_map`. The cost of this change is that we have to copy across the usual set of obvious lemmas about additive maps; but we already do this for `diagonal`, `transpose` etc anyway. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/combinatorics/simple_graph/adj_matrix.lean +/- theorem simple_graph.trace_adj_matrix Modified src/data/matrix/basic.lean + theorem matrix.diag_list_sum + theorem matrix.diag_multiset_sum + theorem matrix.diag_sum Modified src/data/matrix/basis.lean + theorem matrix.std_basis_matrix.trace_eq +/- theorem matrix.std_basis_matrix.trace_zero Modified src/data/matrix/hadamard.lean +/- theorem matrix.sum_hadamard_eq Modified src/linear_algebra/matrix/charpoly/coeff.lean +/- theorem zmod.trace_pow_card Modified src/linear_algebra/matrix/trace.lean +/- def matrix.trace + theorem matrix.trace_add + def matrix.trace_add_monoid_hom - theorem matrix.trace_apply +/- theorem matrix.trace_col_mul_row - theorem matrix.trace_diag +/- theorem matrix.trace_fin_one +/- theorem matrix.trace_fin_three +/- theorem matrix.trace_fin_two +/- theorem matrix.trace_fin_zero + def matrix.trace_linear_map + theorem matrix.trace_list_sum +/- theorem matrix.trace_mul_comm +/- theorem matrix.trace_mul_cycle' +/- theorem matrix.trace_mul_cycle + theorem matrix.trace_multiset_sum + theorem matrix.trace_neg +/- theorem matrix.trace_one + theorem matrix.trace_smul + theorem matrix.trace_sub + theorem matrix.trace_sum +/- theorem matrix.trace_transpose +/- theorem matrix.trace_transpose_mul + theorem matrix.trace_zero Modified src/linear_algebra/trace.lean Modified src/ring_theory/trace.lean Modified src/topology/instances/matrix.lean +/- theorem continuous.matrix_trace 2022-05-02 11:44:55 a627569 feat(category_theory/monoidal): adjunctions in rigid categories (#13707) We construct the bijection on hom-sets `(Yᘁ ⊗ X ⟶ Z) ≃ (X ⟶ Y ⊗ Z)` given by "pulling the string on the left" down or up, using right duals in a right rigid category. As consequences, we show that a left rigid category is monoidal closed (it seems our lefts and rights have got mixed up!!), and that functors from a groupoid to a rigid category is again a rigid category. ESTIMATED CHANGES Modified src/algebra/category/FinVect.lean Modified src/category_theory/monoidal/coherence.lean + theorem tactic.coherence.insert_id_lhs + theorem tactic.coherence.insert_id_rhs Renamed src/category_theory/monoidal/rigid.lean to src/category_theory/monoidal/rigid/basic.lean + theorem category_theory.coevaluation_comp_left_adjoint_mate + theorem category_theory.coevaluation_comp_right_adjoint_mate + theorem category_theory.left_adjoint_mate_comp_evaluation + theorem category_theory.right_adjoint_mate_comp_evaluation + def category_theory.tensor_left_adjunction + def category_theory.tensor_left_hom_equiv + theorem category_theory.tensor_left_hom_equiv_id_tensor_comp_evaluation + theorem category_theory.tensor_left_hom_equiv_naturality + theorem category_theory.tensor_left_hom_equiv_symm_coevaluation_comp_id_tensor + theorem category_theory.tensor_left_hom_equiv_symm_coevaluation_comp_tensor_id + theorem category_theory.tensor_left_hom_equiv_symm_naturality + theorem category_theory.tensor_left_hom_equiv_tensor + theorem category_theory.tensor_left_hom_equiv_tensor_id_comp_evaluation + def category_theory.tensor_right_adjunction + def category_theory.tensor_right_hom_equiv + theorem category_theory.tensor_right_hom_equiv_id_tensor_comp_evaluation + theorem category_theory.tensor_right_hom_equiv_naturality + theorem category_theory.tensor_right_hom_equiv_symm_coevaluation_comp_id_tensor + theorem category_theory.tensor_right_hom_equiv_symm_coevaluation_comp_tensor_id + theorem category_theory.tensor_right_hom_equiv_symm_naturality + theorem category_theory.tensor_right_hom_equiv_tensor + theorem category_theory.tensor_right_hom_equiv_tensor_id_comp_evaluation Added src/category_theory/monoidal/rigid/functor_category.lean Modified src/category_theory/monoidal/rigid/of_equivalence.lean 2022-05-02 09:54:04 fe44576 feat(probability/martingale): the optional stopping theorem (#13630) We prove the optional stopping theorem (also known as the fair game theorem). This is number 62 on Freek 100 theorems. ESTIMATED CHANGES Modified docs/100.yaml Modified src/algebra/indicator_function.lean + theorem set.mul_indicator_mul_compl_eq_piecewise Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.ae_le_trim_iff + theorem measure_theory.ae_le_trim_of_strongly_measurable Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_piecewise Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_le_of_ae_le_trim + theorem measure_theory.ae_of_ae_trim Modified src/probability/martingale.lean + theorem measure_theory.submartingale_iff_expected_stopped_value_mono + theorem measure_theory.submartingale_of_expected_stopped_value_mono + theorem measure_theory.submartingale_of_set_integral_le Modified src/probability/stopping.lean + theorem measure_theory.is_stopping_time.add + theorem measure_theory.is_stopping_time.add_const_nat + theorem measure_theory.is_stopping_time.piecewise_of_le + theorem measure_theory.is_stopping_time_piecewise_const + theorem measure_theory.stopped_value_const + theorem measure_theory.stopped_value_piecewise_const' + theorem measure_theory.stopped_value_piecewise_const 2022-05-02 06:04:17 db0b495 chore(category_theory/limits/cones): avoid a timeout from @[simps] (#13877) This was causing a timeout on another branch. ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean 2022-05-02 06:04:16 67c0e13 doc(data/polynomial/basic): Remove references to `polynomial.norm2` (#13847) `polynomial.norm2` was never added to mathlib. ESTIMATED CHANGES Modified src/data/polynomial/mirror.lean 2022-05-02 06:04:15 03ed4c7 move(topology/algebra/floor_ring → order/floor): Move topological properties of `⌊x⌋` and `⌈x⌉` (#13824) Those belong in an order folder. ESTIMATED CHANGES Modified src/measure_theory/integral/periodic.lean Renamed src/topology/algebra/floor_ring.lean to src/topology/algebra/order/floor.lean 2022-05-02 06:04:14 aaa167c feat(linear_algebra/matrix/adjugate): `adjugate` of a diagonal matrix is diagonal (#13818) This proof is a bit ugly... ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.diagonal_update_column_single + theorem matrix.diagonal_update_row_single Modified src/linear_algebra/matrix/adjugate.lean + theorem matrix.adjugate_diagonal 2022-05-02 06:04:13 34bbec6 feat(logic/equiv/local_equiv): add `forall_mem_target`/`exists_mem_target` (#13805) ESTIMATED CHANGES Modified src/logic/equiv/local_equiv.lean + theorem local_equiv.exists_mem_target + theorem local_equiv.forall_mem_target 2022-05-02 06:04:12 179b6c0 feat(logic/equiv/local_equiv): add inhabited instances (#13804) ESTIMATED CHANGES Modified src/logic/equiv/local_equiv.lean 2022-05-02 06:04:11 c1f8ac5 feat(order/zorn): add Zorn lemma on a preorder (#13803) ESTIMATED CHANGES Modified src/order/chain.lean + theorem is_chain.mono_rel Modified src/order/zorn.lean +/- theorem zorn_nonempty_partial_order + theorem zorn_nonempty_preorder + theorem zorn_nonempty_preorder₀ +/- theorem zorn_partial_order +/- theorem zorn_partial_order₀ + theorem zorn_preorder + theorem zorn_preorder₀ 2022-05-02 06:04:10 925c473 chore(analysis/normed_space/add_torsor): make coefficients explicit in lemmas about eventual dilations (#13796) For an example of why we should do this, see: https://github.com/leanprover-community/sphere-eversion/blob/19c461c9fba484090ff0af6f0c0204c623f63713/src/loops/surrounding.lean#L176 ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean 2022-05-02 06:04:09 90b1ddb feat(linear_algebra/finite_dimensional): of_injective (#13792) ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.of_injective + theorem finite_dimensional.of_surjective 2022-05-02 06:04:08 0587eb1 feat(data/zmod/basic): Variant of `zmod.val_int_cast` (#13781) This PR adds a variant of `zmod.val_int_cast` avoiding the characteristic assumption. ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.coe_int_cast 2022-05-02 06:04:07 fd4188d feat(data/zmod/basic): `zmod 0` is infinite (#13779) This PR adds an instance stating that `zmod 0` is infinite. ESTIMATED CHANGES Modified src/data/zmod/basic.lean 2022-05-02 06:04:06 5c91490 refactor(field_theory/separable): move content about polynomial.expand earlier (#13776) There were some definitions about polynomial.expand buried in the middle of `field_theory.separable` for no good reason. No changes to content, just moves stuff to an earlier file. ESTIMATED CHANGES Added src/data/polynomial/expand.lean + theorem polynomial.coe_expand + theorem polynomial.coeff_contract + theorem polynomial.coeff_expand + theorem polynomial.coeff_expand_mul' + theorem polynomial.coeff_expand_mul + theorem polynomial.contract_expand + theorem polynomial.derivative_expand + theorem polynomial.expand_C + theorem polynomial.expand_X + theorem polynomial.expand_char + theorem polynomial.expand_contract + theorem polynomial.expand_eq_C + theorem polynomial.expand_eq_sum + theorem polynomial.expand_eq_zero + theorem polynomial.expand_eval + theorem polynomial.expand_expand + theorem polynomial.expand_inj + theorem polynomial.expand_injective + theorem polynomial.expand_monomial + theorem polynomial.expand_mul + theorem polynomial.expand_one + theorem polynomial.expand_pow + theorem polynomial.expand_zero + theorem polynomial.is_local_ring_hom_expand + theorem polynomial.map_expand + theorem polynomial.map_expand_pow_char + theorem polynomial.monic.expand + theorem polynomial.nat_degree_expand + theorem polynomial.of_irreducible_expand + theorem polynomial.of_irreducible_expand_pow Modified src/field_theory/finite/basic.lean Modified src/field_theory/separable.lean - theorem polynomial.coe_expand - theorem polynomial.coeff_contract - theorem polynomial.coeff_expand - theorem polynomial.coeff_expand_mul' - theorem polynomial.coeff_expand_mul - theorem polynomial.contract_expand - theorem polynomial.derivative_expand - theorem polynomial.expand_C - theorem polynomial.expand_X - theorem polynomial.expand_char - theorem polynomial.expand_contract - theorem polynomial.expand_eq_C - theorem polynomial.expand_eq_sum - theorem polynomial.expand_eq_zero - theorem polynomial.expand_eval - theorem polynomial.expand_expand - theorem polynomial.expand_inj - theorem polynomial.expand_injective - theorem polynomial.expand_monomial - theorem polynomial.expand_mul - theorem polynomial.expand_one - theorem polynomial.expand_pow - theorem polynomial.expand_zero - theorem polynomial.is_local_ring_hom_expand - theorem polynomial.map_expand - theorem polynomial.map_expand_pow_char - theorem polynomial.monic.expand - theorem polynomial.nat_degree_expand - theorem polynomial.of_irreducible_expand - theorem polynomial.of_irreducible_expand_pow Modified src/ring_theory/algebraic.lean 2022-05-02 06:04:05 000cae1 feat(representation_theory): Rep k G is symmetric monoidal (#13685) ESTIMATED CHANGES Modified src/representation_theory/Action.lean + def Action.forget_braided +/- def Action.forget_monoidal Modified src/representation_theory/Rep.lean 2022-05-02 06:04:04 1e38549 feat(analysis/matrix): define the frobenius norm on matrices (#13497) ESTIMATED CHANGES Modified src/analysis/matrix.lean + theorem matrix.frobenius_nnnorm_col + theorem matrix.frobenius_nnnorm_def + theorem matrix.frobenius_nnnorm_diagonal + theorem matrix.frobenius_nnnorm_map_eq + theorem matrix.frobenius_nnnorm_mul + theorem matrix.frobenius_nnnorm_one + theorem matrix.frobenius_nnnorm_row + theorem matrix.frobenius_nnnorm_transpose + theorem matrix.frobenius_norm_col + theorem matrix.frobenius_norm_def + theorem matrix.frobenius_norm_diagonal + theorem matrix.frobenius_norm_map_eq + theorem matrix.frobenius_norm_mul + theorem matrix.frobenius_norm_row + theorem matrix.frobenius_norm_transpose + def matrix.frobenius_normed_algebra + def matrix.frobenius_normed_group + def matrix.frobenius_normed_ring + def matrix.frobenius_normed_space + def matrix.frobenius_semi_normed_group + theorem matrix.nnnorm_entry_le_entrywise_sup_nnnorm - theorem matrix.nnnorm_entry_le_entrywise_sup_nnorm 2022-05-02 05:27:14 3d946a3 chore(algebraic_geometry/AffineScheme): Speed up `Spec` (#13866) `simps` take 38s in local and does not seem to generate any useful lemma. ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean 2022-05-02 04:39:58 523adb3 feat(set_theory/game/nim): Birthday of `nim` (#13873) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean + theorem pgame.nim.nim_birthday 2022-05-02 04:39:57 039543c refactor(set_theory/game/pgame): Simpler definition for `star` (#13869) This new definition gives marginally easier proofs for the basic lemmas, and avoids use of the quite incomplete `of_lists` API. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean +/- def pgame.star +/- theorem pgame.star_left_moves +/- theorem pgame.star_move_left +/- theorem pgame.star_move_right +/- theorem pgame.star_right_moves 2022-05-02 04:39:56 26e24c7 feat(set_theory/surreal/basic): `<` is transitive on numeric games (#13812) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.lt_trans' + theorem pgame.lt_trans 2022-05-02 02:37:54 922717e chore(logic/function/basic): don't unfold set in cantor (#13822) This uses `set_of` and `mem` consistently instead of using application everywhere, since `f` has type `A -> set A` instead of `A -> A -> Prop`. (Arguably, it could just be stated for `A -> A -> Prop` instead though.) ESTIMATED CHANGES Modified src/logic/function/basic.lean +/- theorem function.cantor_injective 2022-05-02 01:07:34 afc0700 feat(linear_algebra/tensor_product): define tensor_tensor_tensor_assoc (#13864) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + def tensor_product.tensor_tensor_tensor_assoc + theorem tensor_product.tensor_tensor_tensor_assoc_symm_tmul + theorem tensor_product.tensor_tensor_tensor_assoc_tmul 2022-05-01 21:51:02 b236cb2 chore(set_theory/surreal/basic): Inline instances (#13811) We inline various definitions used only for instances. We also remove the redundant lemma `not_le` (which is more generally true on preorders). ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean - def surreal.add - def surreal.le - def surreal.lt - def surreal.neg - theorem surreal.not_le 2022-05-01 21:16:30 f0930c8 feat(set_theory/pgame/impartial): `star` is impartial (#13842) ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean + theorem pgame.neg_star 2022-05-01 18:53:38 071cb55 feat(data/set/function): missing mono lemmas (#13863) ESTIMATED CHANGES Modified src/data/set/function.lean + theorem antitone_on.mono + theorem monotone_on.mono + theorem strict_anti_on.mono + theorem strict_mono_on.mono 2022-05-01 12:36:26 9e7c80f docs(*): Wrap some links in < … > (#13852) I noticed that many docs say See https://stacks.math.columbia.edu/tag/001T. and the our documentation will include the final `.` in the URL, causing the URL to not work. This tries to fix some of these instances. I intentionally applied this to some URLs ending with a space, because it does not hurt to be explicit, and the next contributor cargo-culting the URL is more likely to get this right. Obligatory xkcd reference: https://xkcd.com/208/ ESTIMATED CHANGES Modified CODE_OF_CONDUCT.md Modified src/algebraic_geometry/ringed_space.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/images.lean Modified src/category_theory/abelian/transfer.lean Modified src/category_theory/additive/basic.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/basic.lean Modified src/category_theory/category/preorder.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/essential_image.lean Modified src/category_theory/filtered.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/functor/basic.lean Modified src/category_theory/functor/fully_faithful.lean Modified src/category_theory/is_connected.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/final.lean Modified src/category_theory/limits/is_limit.lean Modified src/category_theory/limits/presheaf.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/opposites.lean Modified src/category_theory/over.lean Modified src/category_theory/products/basic.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/sites/canonical.lean Modified src/category_theory/sites/cover_lifting.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/plus.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/sheaf.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/triangulated/basic.lean Modified src/category_theory/triangulated/pretriangulated.lean Modified src/category_theory/types.lean Modified src/category_theory/yoneda.lean Modified src/topology/category/Top/limits.lean Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/sheafify.lean Modified src/topology/tietze_extension.lean 2022-05-01 05:59:37 232c15e feat(set_theory/game/pgame): Add missing basic API (#13744) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.half_left_moves +/- theorem pgame.half_move_left +/- theorem pgame.half_move_right + theorem pgame.half_right_moves + theorem pgame.le_zero_of_is_empty_left_moves + theorem pgame.left_moves_of_lists +/- def pgame.of_lists + theorem pgame.of_lists_move_left' + theorem pgame.of_lists_move_left + theorem pgame.of_lists_move_right' + theorem pgame.of_lists_move_right +/- theorem pgame.one_left_moves +/- theorem pgame.one_move_left +/- theorem pgame.one_right_moves + theorem pgame.right_moves_of_lists +/- def pgame.star + theorem pgame.star_left_moves + theorem pgame.star_move_left + theorem pgame.star_move_right + theorem pgame.star_right_moves + def pgame.to_of_lists_left_moves + def pgame.to_of_lists_right_moves + theorem pgame.zero_le_of_is_empty_right_moves + theorem pgame.zero_le_one +/- theorem pgame.zero_left_moves +/- theorem pgame.zero_lt_one +/- theorem pgame.zero_right_moves 2022-05-01 03:35:34 51b1e11 feat(set_theory/game/impartial): Relabelling of impartial game is impartial (#13843) ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean + theorem pgame.impartial.impartial_congr 2022-05-01 03:00:28 4b92515 chore(set_theory/game/impartial): golf (#13841) ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean 2022-04-30 20:50:46 49342e3 feat(set_theory/cardinal/basic): Add `simp` lemmas on `cardinal.sum` (#13838) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.lift_sum + theorem cardinal.sum_add_distrib' 2022-04-30 16:49:17 0420dd8 chore(measure_theory/measurable_space_def): make measurable_space arguments implicit (#13832) ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean +/- theorem measurable_fst +/- theorem measurable_snd Modified src/measure_theory/measurable_space_def.lean +/- theorem measurable.comp +/- theorem measurable.le +/- theorem measurable_const +/- theorem measurable_id' +/- theorem measurable_id Modified src/probability/stopping.lean 2022-04-30 11:26:15 26310e7 feat(algebra/*): a sample of easy useful lemmas (#13696) Lemmas needed for #13690 ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean + theorem finset.prod_Ioc_consecutive + theorem finset.prod_Ioc_succ_top Modified src/algebra/geom_sum.lean + theorem geom_sum_Ico_le_of_lt_one Modified src/algebra/group_power/basic.lean + theorem add_sq' + theorem sub_sq' Modified src/algebra/order/floor.lean + theorem nat.one_le_floor_iff Modified src/algebra/order/group.lean + theorem neg_abs_le_neg Modified src/data/finset/locally_finite.lean + theorem finset.Ioc_union_Ioc_eq_Ioc Modified src/data/nat/interval.lean + theorem nat.Ioc_succ_singleton 2022-04-30 10:51:30 1c3ab8c feat(probability/notations): fix some notations, add a new one (#13828) ESTIMATED CHANGES Modified src/probability/notation.lean 2022-04-30 05:24:54 9141960 feat(model_theory/syntax): Free variables (#13529) Defines `term.var_finset` and `bounded_formula.free_var_finset` to consist of all (free) variables used in a term or formula. Defines `term.restrict_var` and `bounded_formula.restrict_free_var` to restrict formulas to sets of their variables. ESTIMATED CHANGES Modified src/model_theory/syntax.lean + def first_order.language.bounded_formula.free_var_finset + def first_order.language.bounded_formula.restrict_free_var + def first_order.language.term.restrict_var + def first_order.language.term.restrict_var_left + def first_order.language.term.var_finset + def first_order.language.term.var_finset_left 2022-04-30 02:26:48 bb45687 feat(model_theory/syntax, semantics): Substitution of variables in terms and formulas (#13632) Defines `first_order.language.term.subst` and `first_order.language.bounded_formula.subst`, which substitute free variables in terms and formulas with terms. ESTIMATED CHANGES Modified src/model_theory/semantics.lean +/- theorem first_order.language.bounded_formula.realize_all_lift_at_one_self + theorem first_order.language.bounded_formula.realize_subst + theorem first_order.language.bounded_formula.realize_subst_aux + theorem first_order.language.term.realize_subst Modified src/model_theory/syntax.lean + def first_order.language.bounded_formula.subst + def first_order.language.term.subst 2022-04-29 22:22:48 a34ee7b chore(set_theory/game/basic): golf proof (#13810) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean 2022-04-29 22:22:48 24bc2e1 feat(set_theory/surreal/basic): add `pgame.numeric.left_lt_right` (#13809) Also compress some trivial proofs into a single line ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.numeric.left_lt_right 2022-04-29 22:22:47 a70166a feat(ring_theory): factorize a non-unit into irreducible factors without multiplying a unit (#13682) Used in https://proofassistants.stackexchange.com/a/1312/93. Also adds simp lemma `multiset.prod_erase` used in the main proof and the auto-generated additive version, which is immediately analogous to [list.prod_erase](https://leanprover-community.github.io/mathlib_docs/data/list/big_operators.html#list.prod_erase). Also removes some extraneous namespace prefix. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean +/- theorem multiset.prod_eq_foldr + theorem multiset.prod_erase Modified src/ring_theory/unique_factorization_domain.lean + theorem wf_dvd_monoid.not_unit_iff_exists_factors_eq 2022-04-29 20:31:27 059c8eb chore(set_theory/game/basic): fix a single space (#13806) ESTIMATED CHANGES Modified src/set_theory/game/basic.lean 2022-04-29 20:31:26 8910228 chore(data/polynomial): use dot notation for sub lemmas (#13799) To match the additive versions ESTIMATED CHANGES Modified src/data/polynomial/monic.lean + theorem polynomial.monic.sub_of_left + theorem polynomial.monic.sub_of_right - theorem polynomial.monic_sub_of_left - theorem polynomial.monic_sub_of_right Modified src/ring_theory/power_basis.lean 2022-04-29 20:31:25 e56b8fe feat(model_theory/graph): First-order language and theory of graphs (#13720) Defines `first_order.language.graph`, the language of graphs Defines `first_order.Theory.simple_graph`, the theory of simple graphs Produces models of the theory of simple graphs from simple graphs and vice versa. ESTIMATED CHANGES Added src/model_theory/graph.lean + theorem first_order.language.Structure_simple_graph_of_structure + theorem first_order.language.Theory.simple_graph_is_satisfiable + theorem first_order.language.Theory.simple_graph_model_iff + def first_order.language.adj + def first_order.language.simple_graph_of_structure + def simple_graph.Structure + theorem simple_graph.simple_graph_of_structure Modified src/model_theory/order.lean 2022-04-29 20:31:23 1d4ed4a chore(topology/algebra/valuation): use forgetful inheritance pattern for valued fields (#13691) This allows us to solve a `uniform_space` diamond problem that arises when extending valuations to the completion of a valued field. More precisely, the main goal of this PR is to make the following work: ```lean import topology.algebra.valued_field example {K Γ₀ : Type*} [field K] [linear_ordered_comm_group_with_zero Γ₀] [valued K Γ₀] : uniform_space.completion.uniform_space K = valued.to_uniform_space := rfl ``` ESTIMATED CHANGES Modified src/number_theory/function_field.lean +/- def function_field.Fqt_infty - theorem function_field.infty_valued_Fqt.completable_top_field - theorem function_field.infty_valued_Fqt.separated_space - theorem function_field.infty_valued_Fqt.topological_division_ring - def function_field.infty_valued_Fqt.topological_space - theorem function_field.infty_valued_Fqt.uniform_add_group - def function_field.infty_valued_Fqt.uniform_space Modified src/topology/algebra/uniform_group.lean - theorem topological_group.separated_iff_one_closed - theorem topological_group.separated_of_one_sep + theorem topological_group.t2_space_iff_one_closed + theorem topological_group.t2_space_of_one_sep Modified src/topology/algebra/valuation.lean + theorem valuation.subgroups_basis + theorem valued.has_basis_nhds_zero + theorem valued.has_basis_uniformity + def valued.mk' - theorem valued.subgroups_basis + theorem valued.to_uniform_space_eq Modified src/topology/algebra/valued_field.lean + theorem valued.closure_coe_completion_v_lt +/- theorem valued.continuous_extension +/- theorem valued.extension_extends Modified src/topology/algebra/with_zero_topology.lean + theorem linear_ordered_comm_group_with_zero.singleton_mem_nhds_of_ne_zero Modified src/topology/dense_embedding.lean + theorem filter.has_basis.has_basis_of_dense_inducing 2022-04-29 20:31:22 90bd6f5 feat(model_theory/encoding): A bound on the number of bounded formulas (#13616) Gives an encoding `first_order.language.bounded_formula.encoding` of bounded formulas as lists. Uses the encoding to bound the number of bounded formulas with `first_order.language.bounded_formula.card_le`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.drop_sizeof_le Modified src/model_theory/encoding.lean + theorem first_order.language.bounded_formula.card_le + def first_order.language.bounded_formula.list_decode + theorem first_order.language.bounded_formula.list_decode_encode_list + def first_order.language.bounded_formula.list_encode + theorem first_order.language.bounded_formula.list_encode_sigma_injective + def first_order.language.bounded_formula.sigma_all + def first_order.language.bounded_formula.sigma_imp + theorem first_order.language.term.card_sigma 2022-04-29 20:31:21 9ce5e95 feat(model_theory/syntax, semantics): A theory of infinite structures (#13580) Defines `first_order.language.infinite_theory`, a theory of infinite structures Adjusts the API of the theory of nonempty structures to match ESTIMATED CHANGES Modified src/model_theory/elementary_maps.lean Modified src/model_theory/semantics.lean - theorem first_order.language.Theory.model_nonempty_iff + theorem first_order.language.bounded_formula.realize_foldr_inf + theorem first_order.language.bounded_formula.realize_foldr_sup + theorem first_order.language.model_infinite_theory_iff + theorem first_order.language.model_nonempty_theory_iff + theorem first_order.language.sentence.realize_card_ge - theorem first_order.language.sentence.realize_nonempty Modified src/model_theory/syntax.lean + def first_order.language.infinite_theory + def first_order.language.nonempty_theory 2022-04-29 20:31:20 812518d feat(model_theory/semantics, satisfiability): Complete Theories (#13558) Defines `first_order.language.Theory.is_complete`, indicating that a theory is complete. Defines `first_order.language.complete_theory`, the complete theory of a structure. Shows that the complete theory of a structure is complete. ESTIMATED CHANGES Modified src/model_theory/satisfiability.lean + def first_order.language.Theory.is_complete + theorem first_order.language.Theory.models_sentence_of_mem + theorem first_order.language.complete_theory.is_complete + theorem first_order.language.complete_theory.is_satisfiable + theorem first_order.language.complete_theory.mem_or_not_mem Modified src/model_theory/semantics.lean + theorem first_order.language.Theory.model_iff_subset_complete_theory + def first_order.language.complete_theory + theorem first_order.language.realize_iff_of_model_complete_theory + theorem first_order.language.sentence.realize_not 2022-04-29 20:31:19 812e17f feat(analysis/normed_space/pointwise): Addition of balls (#13381) Adding two balls yields another ball. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem dist_neg +/- theorem dist_neg_neg + theorem edist_neg +/- theorem edist_neg_neg Modified src/analysis/normed/group/pointwise.lean + theorem add_ball + theorem add_ball_zero + theorem ball_add +/- theorem ball_add_singleton + theorem ball_add_zero + theorem ball_sub + theorem ball_sub_singleton + theorem ball_sub_zero +/- theorem ball_zero_add_singleton + theorem ball_zero_sub_singleton +/- theorem bounded_iff_exists_norm_le +/- theorem closed_ball_add_singleton + theorem closed_ball_sub_singleton +/- theorem closed_ball_zero_add_singleton + theorem closed_ball_zero_sub_singleton + theorem inf_edist_neg + theorem inf_edist_neg_neg + theorem is_compact.add_closed_ball + theorem is_compact.add_closed_ball_zero + theorem is_compact.closed_ball_add + theorem is_compact.closed_ball_sub + theorem is_compact.closed_ball_zero_add + theorem is_compact.closed_ball_zero_sub - theorem is_compact.cthickening_eq_add_closed_ball + theorem is_compact.sub_closed_ball + theorem is_compact.sub_closed_ball_zero +/- theorem metric.bounded.add +/- theorem metric.bounded.exists_pos_norm_le + theorem metric.bounded.neg + theorem metric.bounded.sub + theorem neg_ball + theorem neg_closed_ball + theorem neg_cthickening + theorem neg_thickening +/- theorem singleton_add_ball +/- theorem singleton_add_ball_zero +/- theorem singleton_add_closed_ball +/- theorem singleton_add_closed_ball_zero + theorem singleton_sub_ball + theorem singleton_sub_ball_zero + theorem singleton_sub_closed_ball + theorem singleton_sub_closed_ball_zero + theorem sub_ball + theorem sub_ball_zero + theorem vadd_ball_zero + theorem vadd_closed_ball_zero Modified src/analysis/normed_space/pointwise.lean + theorem ball_add_ball + theorem ball_add_closed_ball + theorem ball_sub_ball + theorem ball_sub_closed_ball + theorem closed_ball_add_ball + theorem closed_ball_add_closed_ball + theorem closed_ball_sub_ball + theorem closed_ball_sub_closed_ball + theorem cthickening_ball + theorem cthickening_closed_ball + theorem thickening_ball + theorem thickening_closed_ball - theorem vadd_ball_zero - theorem vadd_closed_ball_zero Modified src/data/set/pointwise.lean +/- theorem set.inv_singleton Modified src/measure_theory/function/jacobian.lean 2022-04-29 18:38:48 a54db9a feat(data/finset/basic): A finset that's a subset of a `directed` union is contained in one element (#13727) Proves `directed.exists_mem_subset_of_finset_subset_bUnion` Renames `finset.exists_mem_subset_of_subset_bUnion_of_directed_on` to `directed_on.exists_mem_subset_of_finset_subset_bUnion` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem directed.exists_mem_subset_of_finset_subset_bUnion + theorem directed_on.exists_mem_subset_of_finset_subset_bUnion - theorem finset.exists_mem_subset_of_subset_bUnion_of_directed_on Modified src/linear_algebra/linear_independent.lean 2022-04-29 17:28:05 8624f6d chore(analysis/normed/group/basic): add `nnnorm_sum_le_of_le` (#13795) This is to match `norm_sum_le_of_le`. Also tidies up the coercion syntax a little in `pi.semi_normed_group`. The definition is syntactically identical, just with fewer unecessary type annotations. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem nnnorm_sum_le_of_le 2022-04-29 17:28:03 8360f2c feat(model_theory/language_map, bundled): Reducts of structures (#13745) Defines `first_order.language.Lhom.reduct` which pulls a structure back along a language map. Defines `first_order.language.Theory.Model.reduct` which sends a model of `(φ.on_Theory T)` to its reduct as a model of `T`. ESTIMATED CHANGES Modified src/model_theory/bundled.lean + def first_order.language.Theory.Model.reduct Modified src/model_theory/language_map.lean + def first_order.language.Lhom.reduct 2022-04-29 15:59:00 50c3028 chore(analysis/normed_space/operator_norm): move `continuous_linear_map.op_norm_lsmul` into the correct section (#13790) This was in the "seminorm" section but was about regular norms. Also relaxes some other typeclasses in the file. This file is still a mess with regards to assuming `nondiscrete_normed_field` when `normed_field` is enough, but that would require substantially more movement within the file. This cleans up after #13165 and #13538 ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.op_norm_lsmul + theorem continuous_linear_map.op_norm_lsmul_apply_le +/- theorem continuous_linear_map.to_span_singleton_smul' 2022-04-29 15:58:59 64b3576 feat(ring_theory/valuation/extend_to_localization): Extending valuations to localizations. (#13610) ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean + theorem valuation.comap_apply Added src/ring_theory/valuation/extend_to_localization.lean + def valuation.extend_to_localization + theorem valuation.extend_to_localization_apply_map_apply 2022-04-29 14:39:20 fe2917a feat(number_theory/primes_congruent_one): attempt to golf (#13787) As suggested in the reviews of #12595 we try to golf the proof using the bound proved there. This doesn't end up being as much of a golf as hoped due to annoying edge cases, but seems conceptually simpler. ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean Modified src/number_theory/primes_congruent_one.lean +/- theorem nat.exists_prime_ge_modeq_one +/- theorem nat.frequently_at_top_modeq_one +/- theorem nat.infinite_set_of_prime_modeq_one 2022-04-29 14:39:18 a3beb62 feat(analysis/*): a sample of easy useful lemmas (#13697) Lemmas needed for #13690 ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/special_functions/pow.lean +/- theorem complex.cpow_int_cast +/- theorem complex.cpow_nat_cast + theorem complex.cpow_two + theorem ennreal.rpow_two + theorem nnreal.rpow_two + theorem real.rpow_two Modified src/analysis/specific_limits/basic.lean + theorem tendsto_nat_ceil_div_at_top + theorem tendsto_nat_floor_at_top + theorem tendsto_nat_floor_div_at_top Modified src/data/real/ennreal.lean + theorem ennreal.one_le_two Modified src/topology/algebra/group.lean + theorem tendsto_div_nhds_one_iff 2022-04-29 14:39:17 7373832 chore(analysis/convex): move `convex_on_norm`, change API (#13631) * Move `convex_on_norm` from `specific_functions` to `topology`, use it to golf the proof of `convex_on_dist`. * The old `convex_on_norm` is now called `convex_on_univ_norm`. The new `convex_on_norm` is about convexity on any convex set. * Add `convex_on_univ_dist` and make `s : set E` an implicit argument in `convex_on_dist`. This way APIs about convexity of norm and distance agree. ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean - theorem convex_on_norm Modified src/analysis/convex/topology.lean +/- theorem convex_on_dist + theorem convex_on_norm + theorem convex_on_univ_dist + theorem convex_on_univ_norm 2022-04-29 14:39:15 ce79a27 feat(analysis/normed_space/pi_Lp): add lemmas about `pi_Lp.equiv` (#13569) Most of these are trivial `dsimp` lemmas, but they also let us talk about the norm of constant vectors. ESTIMATED CHANGES Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.equiv_add + theorem pi_Lp.equiv_apply + theorem pi_Lp.equiv_neg + theorem pi_Lp.equiv_smul + theorem pi_Lp.equiv_sub + theorem pi_Lp.equiv_symm_add + theorem pi_Lp.equiv_symm_apply + theorem pi_Lp.equiv_symm_neg + theorem pi_Lp.equiv_symm_smul + theorem pi_Lp.equiv_symm_sub + theorem pi_Lp.equiv_symm_zero + theorem pi_Lp.equiv_zero + theorem pi_Lp.nnnorm_equiv_symm_const + theorem pi_Lp.nnnorm_equiv_symm_one + theorem pi_Lp.norm_equiv_symm_const + theorem pi_Lp.norm_equiv_symm_one + theorem pi_Lp.zero_apply 2022-04-29 14:39:14 e561264 feat(algebra/order/monoid_lemmas_zero_lt): add instances (#13376) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean 2022-04-29 12:25:32 58552fe feat(set_theory/cardinal/basic): cardinality of a powerset (#13786) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.mk_powerset 2022-04-29 12:25:31 b2e0a2d feat(group_theory/subgroup/basic): `inclusion` lemmas (#13754) A few lemmas for `set.inclusion`, `subgroup.inclusion`, `subalgebra.inclusion`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean + theorem subalgebra.inclusion_mk +/- theorem subalgebra.inclusion_right Modified src/data/set/basic.lean +/- theorem set.coe_inclusion +/- def set.inclusion +/- theorem set.inclusion_inclusion +/- theorem set.inclusion_injective + theorem set.inclusion_mk +/- theorem set.inclusion_right +/- theorem set.inclusion_self +/- theorem set.range_inclusion Modified src/group_theory/subgroup/basic.lean + theorem subgroup_class.inclusion_inclusion + theorem subgroup_class.inclusion_mk + theorem subgroup_class.inclusion_right + theorem subgroup_class.inclusion_self 2022-04-29 12:25:30 8eb2564 feat(topology/instances/matrix): add `matrix` lemmas about `tsum` (#13677) This adds lemmas about how `tsum` interacts with `diagonal` and `transpose`, along with the helper `summable` and `has_sum` lemmas. This also moves `topology/algebra/matrix` to `topology/instances/matrix`, since that seems to align better with how other types are handled. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/topology/algebra/infinite_sum.lean Renamed src/topology/algebra/matrix.lean to src/topology/instances/matrix.lean + theorem continuous_matrix_diag + theorem has_sum.matrix_block_diagonal' + theorem has_sum.matrix_block_diagonal + theorem has_sum.matrix_diag + theorem has_sum.matrix_diagonal + theorem has_sum.matrix_transpose + theorem matrix.diagonal_tsum + theorem matrix.transpose_tsum + theorem summable.matrix_block_diagonal' + theorem summable.matrix_block_diagonal + theorem summable.matrix_diag + theorem summable.matrix_diagonal + theorem summable.matrix_transpose + theorem summable_matrix_diagonal + theorem summable_matrix_transpose 2022-04-29 11:14:10 889e956 chore(analysis/asymptotics/asymptotics): relax `normed_group` to `semi_normed_group` in lemmas (#13642) This file already uses `E` vs `E'` for `has_norm` vs `normed_group`. This adds an `E''` to this naming scheme for `normed_group`, and repurposes `E'` to `semi_normed_group`. The majority of the lemmas in this file generalize without any additional work. I've not attempted to relax the assumptions on lemmas where any proofs would have to change. Most of them would need their assumptions changing from `c ≠ 0` to `∥c∥ ≠ 0`, which is likely to be annoying. In one place this results in dot notation breaking as the typeclass can no longer be found by unification. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean +/- theorem asymptotics.bound_of_is_O_cofinite +/- theorem asymptotics.bound_of_is_O_nat_at_top +/- theorem asymptotics.is_O.eq_zero_imp +/- theorem asymptotics.is_O.trans_tendsto +/- theorem asymptotics.is_O.trans_tendsto_nhds +/- theorem asymptotics.is_O_cofinite_iff +/- theorem asymptotics.is_O_const_const +/- theorem asymptotics.is_O_const_const_iff +/- theorem asymptotics.is_O_const_of_tendsto +/- theorem asymptotics.is_O_nat_at_top_iff +/- theorem asymptotics.is_O_one_nat_at_top_iff +/- theorem asymptotics.is_O_one_of_tendsto +/- theorem asymptotics.is_O_pure +/- theorem asymptotics.is_O_with.eq_zero_imp +/- theorem asymptotics.is_O_with_const_const +/- theorem asymptotics.is_O_zero_right_iff +/- theorem asymptotics.is_o.trans_tendsto +/- theorem asymptotics.is_o_const_const_iff +/- theorem asymptotics.is_o_const_id_at_bot +/- theorem asymptotics.is_o_const_id_at_top +/- theorem asymptotics.is_o_const_id_comap_norm_at_top +/- theorem asymptotics.is_o_const_iff +/- theorem asymptotics.is_o_const_iff_is_o_one +/- theorem asymptotics.is_o_const_left +/- theorem asymptotics.is_o_const_left_of_ne +/- theorem asymptotics.is_o_id_const +/- theorem asymptotics.is_o_one_iff +/- theorem asymptotics.is_o_pure +/- theorem asymptotics.is_o_top Modified src/analysis/normed_space/units.lean 2022-04-29 09:31:57 aab0b2d feat(algebra/algebra/basic): add some lemmas about `subsemiring` and `algebra_map` (#13767) These are analogs of `algebra_map_of_subring`, `coe_algebra_map_of_subring` and `algebra_map_of_subring_apply`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.algebra_map_of_subsemiring + theorem algebra.algebra_map_of_subsemiring_apply + theorem algebra.coe_algebra_map_of_subsemiring 2022-04-29 08:26:15 8abfb3b feat(representation_theory/Rep): Rep k G is abelian (#13689) ESTIMATED CHANGES Modified src/category_theory/abelian/functor_category.lean Modified src/category_theory/abelian/transfer.lean + def category_theory.abelian_of_equivalence Modified src/category_theory/limits/shapes/functor_category.lean Modified src/representation_theory/Action.lean + def Action.abelian_aux Modified src/representation_theory/Rep.lean 2022-04-29 06:35:27 bc65b7c feat(data/list/basic): add `list.range_map` (#13777) * add `list.range_map` and `list.range_map_coe`; * add `submonoid.closure_eq_image_prod` and `add_submonoid.closure_eq_image_prod`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.range_map + theorem list.range_map_coe Modified src/group_theory/submonoid/membership.lean + theorem submonoid.closure_eq_image_prod 2022-04-29 06:35:26 992e26f feat(topology/algebra/affine): a sufficiently small dilation of a point in the interior of a set lands in the interior (#13766) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem vadd_vsub_eq_sub_vsub + theorem vsub_ne_zero Modified src/analysis/normed/group/basic.lean + theorem ball_eq + theorem normed_group.nhds_basis_norm_lt + theorem normed_group.nhds_zero_basis_norm_lt Modified src/analysis/normed_space/add_torsor.lean +/- theorem affine_subspace.is_closed_direction_iff +/- theorem antilipschitz_with_line_map + theorem eventually_homothety_image_subset_of_finite_subset_interior + theorem eventually_homothety_mem_of_mem_interior 2022-04-29 06:35:25 b4cad37 chore(ring_theory/mv_polynomial/basic): golf (#13765) ESTIMATED CHANGES Modified src/ring_theory/mv_polynomial/basic.lean 2022-04-29 06:35:24 5c1ee35 feat(set_theory/game/pgame): `x - 0 = x + 0` (#13731) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.sub_zero 2022-04-29 04:24:26 7170b66 chore(scripts): update nolints.txt (#13775) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-29 04:24:25 ead85e6 chore(*/equiv): add simp to refl_apply and trans_apply where missing (#13760) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem alg_equiv.trans_apply Modified src/algebra/hom/equiv.lean Modified src/linear_algebra/affine_space/affine_equiv.lean +/- theorem affine_equiv.refl_apply Modified src/order/hom/basic.lean +/- theorem order_iso.refl_apply +/- theorem order_iso.trans_apply 2022-04-29 04:24:24 e294500 feat(category_theory/monoidal): transport rigid structure over an equivalence (#13736) ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.hom_inv_id_tensor' + theorem category_theory.monoidal_category.inv_hom_id_tensor' + theorem category_theory.monoidal_category.tensor_hom_inv_id' + theorem category_theory.monoidal_category.tensor_inv_hom_id' Modified src/category_theory/monoidal/rigid.lean + def category_theory.exact_pairing_congr + def category_theory.exact_pairing_congr_left + def category_theory.exact_pairing_congr_right Added src/category_theory/monoidal/rigid/of_equivalence.lean + def category_theory.exact_pairing_of_faithful + def category_theory.exact_pairing_of_fully_faithful + def category_theory.has_left_dual_of_equivalence + def category_theory.has_right_dual_of_equivalence + def category_theory.left_rigid_category_of_equivalence + def category_theory.right_rigid_category_of_equivalence + def category_theory.rigid_category_of_equivalence 2022-04-29 04:24:23 ccb9d64 feat(category_theory/braiding): pull back a braiding along a faithful functor (#13684) I intend to use this to define the braiding/symmetry on `Rep k G` using the existing braiding/symmetry on `Module k`. ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/functor/fully_faithful.lean +/- theorem category_theory.functor.map_injective +/- theorem category_theory.functor.map_iso_injective +/- def category_theory.functor.preimage + def category_theory.functor.preimage_iso + theorem category_theory.functor.preimage_iso_map_iso - def category_theory.preimage_iso - theorem category_theory.preimage_iso_hom - theorem category_theory.preimage_iso_inv - theorem category_theory.preimage_iso_map_iso Modified src/category_theory/monoidal/braided.lean + def category_theory.braided_category_of_faithful + def category_theory.braided_category_of_fully_faithful + def category_theory.symmetric_category_of_faithful Modified src/category_theory/subobject/mono_over.lean Modified src/category_theory/yoneda.lean 2022-04-29 03:48:10 8edb3d1 feat(representation_theory/Rep): the category of representations (#13683) We define `Rep k G`, the category of `k`-linear representations of a monoid `G`. Happily, by abstract nonsense we get that this has (co)limits and a monoidal structure for free. This should play well with the new design for representations in #13573. ESTIMATED CHANGES Added src/representation_theory/Action.lean + def Action.Action_punit_equivalence + theorem Action.comp_hom + def Action.forget + def Action.forget_monoidal + def Action.functor_category_equivalence.counit_iso + def Action.functor_category_equivalence.functor + def Action.functor_category_equivalence.inverse + def Action.functor_category_equivalence.unit_iso + def Action.functor_category_equivalence + def Action.functor_category_equivalence_comp_evaluation + def Action.hom.comp + def Action.hom.id + structure Action.hom + theorem Action.id_hom + def Action.mk_iso + def Action.res + def Action.res_comp + def Action.res_id + def Action.trivial + def Action.ρ_Aut + theorem Action.ρ_one + structure Action + def category_theory.functor.map_Action Added src/representation_theory/Rep.lean + def Rep.of + def Rep 2022-04-29 00:29:56 11a4a74 feat(ring_theory/localization/basic): generalize to semiring (#13459) The main ingredient of this PR is the definition of `is_localization.lift` that works for semirings. The previous definition uses `ring_hom.mk'` that essentially states that `f 0 = 0` follows from other conditions. This does not holds for semirings. Instead, this PR defines the localization of monoid with zero, and uses this to define `is_localization.lift`. - I think definitions around `localization_with_zero_map` might be ad hoc, and any suggestions for improvement are welcome! - I plan to further generalize the localization API for semirings. This needs generalization of other ring theory stuff such as `local_ring` and `is_domain` (generalizing `local_ring` is partially done in #13341). ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean + theorem localization.lift_on_zero + theorem localization.mk_zero +/- theorem submonoid.localization_map.lift_left_inverse + theorem submonoid.localization_map.sec_zero_fst + def submonoid.localization_with_zero_map.to_monoid_with_zero_hom + structure submonoid.localization_with_zero_map Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization/basic.lean + theorem is_localization.lift_spec_mul_add +/- theorem is_localization.map_comp_map +/- theorem is_localization.map_map + theorem is_localization.mk'_add_eq_iff_add_mul_eq_mul + theorem is_localization.mul_add_inv_left +/- def is_localization.to_localization_map + def is_localization.to_localization_with_zero_map - theorem localization.lift_on_zero +/- theorem localization.mk_nat_cast - theorem localization.mk_zero 2022-04-28 22:42:55 214e2f1 chore(set_theory/surreal/basic): Allow dot notation on `pgame.numeric` (#13768) Rename `numeric_neg`/`numeric_add` to `numeric.add`/`numeric.neg`. Prove `numeric.sub` in passing. ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.numeric.add + theorem pgame.numeric.neg + theorem pgame.numeric.sub - theorem pgame.numeric_add - theorem pgame.numeric_neg 2022-04-28 21:23:33 ccd3774 chore(ring_theory/*): dot notation for `submodule.fg` and `subalgebra.fg` (#13737) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean Modified src/ring_theory/adjoin/fg.lean + theorem subalgebra.fg.map + theorem subalgebra.fg.prod - theorem subalgebra.fg_map - theorem subalgebra.fg_prod Modified src/ring_theory/finiteness.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean + theorem submodule.fg.mul + theorem submodule.fg.pow + theorem submodule.fg.prod + theorem submodule.fg.sup - theorem submodule.fg_mul - theorem submodule.fg_pow - theorem submodule.fg_prod - theorem submodule.fg_sup 2022-04-28 21:23:32 220d4b8 doc(order/filter/small_sets): fix in doc (#13648) ESTIMATED CHANGES Modified src/order/filter/small_sets.lean 2022-04-28 20:49:01 c096a33 feat(set_theory/game/birthday): Game birthday is zero iff empty (#13715) ESTIMATED CHANGES Modified src/set_theory/game/birthday.lean + theorem pgame.birthday_eq_zero 2022-04-28 19:47:12 8a32fdf feat(cyclotomic/eval): (q - 1) ^ totient n < |ϕₙ(q)| (#12595) Originally from the Wedderburn PR, but generalized to include an exponent. ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/eval.lean + theorem polynomial.cyclotomic_eval_lt_sub_one_pow_totient + theorem polynomial.cyclotomic_nonneg + theorem polynomial.cyclotomic_pos' + theorem polynomial.cyclotomic_pos_and_nonneg + theorem polynomial.sub_one_lt_nat_abs_cyclotomic_eval + theorem polynomial.sub_one_pow_totient_lt_cyclotomic_eval 2022-04-28 17:35:20 0d3f8a7 feat(ring_theory/submonoid/membership): generalize a few lemmas to `mul_mem_class` (#13748) This generalizes lemmas relating to the additive closure of a multiplicative monoid so that they also apply to multiplicative semigroups using `mul_mem_class` ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean + theorem mul_mem_class.mul_left_mem_add_closure + theorem mul_mem_class.mul_mem_add_closure + theorem mul_mem_class.mul_right_mem_add_closure - theorem submonoid.mul_left_mem_add_closure - theorem submonoid.mul_mem_add_closure - theorem submonoid.mul_right_mem_add_closure Modified src/ring_theory/subsemiring/basic.lean 2022-04-28 15:47:51 c5bf480 fix(group_theory/subsemigroup/basic): change `mul_one_class` to `has_mul` (#13747) ESTIMATED CHANGES Modified src/group_theory/subsemigroup/basic.lean 2022-04-28 13:52:30 1c92dfd chore(*/equiv): missing refl_symm lemmas (#13761) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.refl_symm Modified src/algebra/hom/equiv.lean + theorem mul_equiv.refl_symm Modified src/algebra/lie/basic.lean + theorem lie_equiv.refl_symm 2022-04-28 08:07:58 0cb20fc feat(set_theory/ordinal/basic): `max a 0 = a` (#13734) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean + theorem ordinal.max_eq_zero + theorem ordinal.max_zero_left + theorem ordinal.max_zero_right 2022-04-28 08:07:57 98e7848 feat(set_theory/game/pgame): Right moves of nat game are empty (#13730) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-04-28 07:28:19 a0af147 feat(set_theory/game/pgame): An empty game is a relabelling of `0` (#13753) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + def pgame.relabelling.is_empty 2022-04-27 23:52:26 e89510c fix(ring_theory/subsemiring/basic): make `inclusion` a `ring_hom`, not a `monoid_hom` (#13746) ESTIMATED CHANGES Modified src/ring_theory/subsemiring/basic.lean +/- def subsemiring.inclusion 2022-04-27 20:32:15 60bb071 feat(logic/unit): Make `punit.star` simp normal form of `default : punit` (#13741) ESTIMATED CHANGES Modified src/logic/unique.lean + theorem punit.default_eq_star 2022-04-27 15:34:59 dc589c8 fix(topology/bornology): turn `bounded_space` into a `mixin` (#13615) Otherwise, we would need `bounded_pseudo_metric_space`, `bounded_metric_space` etc. Also add `set.finite.is_bounded`, `bornology.is_bounded.all`, and `bornology.is_bounded_univ`. ESTIMATED CHANGES Modified src/topology/bornology/basic.lean + theorem bornology.cobounded_eq_bot + theorem bornology.cobounded_eq_bot_iff + theorem bornology.is_bounded.all +/- theorem bornology.is_bounded_compl_iff + theorem bornology.is_bounded_univ + theorem bornology.is_cobounded.all +/- theorem bornology.is_cobounded_compl_iff + theorem set.finite.is_bounded 2022-04-27 14:57:36 d399744 feat(measure_theory/measure/finite_measure_weak_convergence): define the topology of weak convergence of measures and prove some lemmas about it. (#9943) This PR has the definition of the topology of weak convergence ("convergence in law" / "convergence in distribution") on `finite_measure _` and on `probability_measure _`. ESTIMATED CHANGES Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem measure_theory.finite_measure.coe_to_weak_dual_bcnn + theorem measure_theory.finite_measure.continuous_test_against_nn_eval + theorem measure_theory.finite_measure.tendsto_iff_forall_lintegral_tendsto + theorem measure_theory.finite_measure.tendsto_iff_forall_test_against_nn_tendsto + theorem measure_theory.finite_measure.tendsto_iff_weak_star_tendsto + def measure_theory.finite_measure.to_weak_dual_bcnn + theorem measure_theory.finite_measure.to_weak_dual_bcnn_apply + theorem measure_theory.finite_measure.to_weak_dual_bcnn_continuous - def measure_theory.finite_measure.to_weak_dual_bounded_continuous_nnreal + theorem measure_theory.probability_measure.coe_to_weak_dual_bcnn + theorem measure_theory.probability_measure.continuous_test_against_nn_eval + theorem measure_theory.probability_measure.tendsto_iff_forall_lintegral_tendsto + theorem measure_theory.probability_measure.tendsto_nhds_iff_to_finite_measures_tendsto_nhds - def measure_theory.probability_measure.test_against_nn - theorem measure_theory.probability_measure.test_against_nn_coe_eq - theorem measure_theory.probability_measure.test_against_nn_const - theorem measure_theory.probability_measure.test_against_nn_mono + theorem measure_theory.probability_measure.to_finite_measure_continuous + theorem measure_theory.probability_measure.to_finite_measure_embedding - theorem measure_theory.probability_measure.to_finite_measure_test_against_nn_eq_test_against_nn + def measure_theory.probability_measure.to_weak_dual_bcnn + theorem measure_theory.probability_measure.to_weak_dual_bcnn_apply + theorem measure_theory.probability_measure.to_weak_dual_bcnn_continuous - def measure_theory.probability_measure.to_weak_dual_bounded_continuous_nnreal Modified src/topology/algebra/module/weak_dual.lean + theorem tendsto_iff_forall_eval_tendsto_top_dual_pairing 2022-04-27 10:54:41 ccefda0 perf(representation_theory/basic): speed up `representation.lin_hom` by a factor of 20 (#13739) `ext` was over-expanding, and the `simp`s were not all squeezed. This is causing timeouts in other PRs. ESTIMATED CHANGES Modified src/representation_theory/basic.lean 2022-04-27 07:01:45 5ac5c92 feat(combinatorics/simple_graph/regularity/uniform): Witnesses of non-uniformity (#13155) Provide ways to pick witnesses of non-uniformity. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/regularity/uniform.lean +/- theorem finpartition.bot_is_uniform + theorem finpartition.is_uniform.mono +/- theorem finpartition.non_uniforms_bot + theorem finpartition.non_uniforms_mono + theorem finpartition.nonuniform_witness_mem_nonuniform_witnesses + theorem simple_graph.left_nonuniform_witnesses_card + theorem simple_graph.left_nonuniform_witnesses_subset + theorem simple_graph.nonuniform_witness_card_le + theorem simple_graph.nonuniform_witness_spec + theorem simple_graph.nonuniform_witness_subset + theorem simple_graph.nonuniform_witnesses_spec + theorem simple_graph.not_is_uniform_iff + theorem simple_graph.right_nonuniform_witnesses_card + theorem simple_graph.right_nonuniform_witnesses_subset 2022-04-27 02:01:16 cb2b02f feat(representation_theory/basic): representation theory without scalar actions (#13573) This PR rewrites the files `representation_theory/basic` and `representation_theory/invariants` so that they avoid making use of scalar actions. It also includes the new definitions and lemmas of PR #13502 written with this new approach. ESTIMATED CHANGES Modified src/representation_theory/basic.lean + theorem representation.as_algebra_hom_of + theorem representation.as_group_hom_apply - theorem representation.as_module_apply +/- theorem representation.char_conj + theorem representation.char_mul_comm +/- theorem representation.char_one + def representation.dual + theorem representation.dual_apply + def representation.lin_hom + theorem representation.lin_hom_apply - theorem representation.of_smul + def representation.tprod + theorem representation.tprod_apply + def representation.trivial + theorem representation.trivial_def + def representation Modified src/representation_theory/invariants.lean + theorem group_algebra.average_def + theorem group_algebra.mul_average_left + theorem group_algebra.mul_average_right - theorem representation.average_def + theorem representation.average_map_id + theorem representation.average_map_invariant - theorem representation.invariants'_carrier +/- theorem representation.mem_invariants - theorem representation.mul_average_left - theorem representation.mul_average_right - theorem representation.smul_average_id - theorem representation.smul_average_invariant 2022-04-27 00:04:48 79e309b feat(set_theory/game/pgame): Define `is_option` relation (#13700) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.is_option.mk_left + theorem pgame.is_option.mk_right + inductive pgame.is_option + theorem pgame.wf_is_option 2022-04-26 22:05:34 48997d7 fix(data/set/basic): fix name of `has_mem.mem.out` (#13721) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem has_mem.mem.out - theorem set.has_mem.mem.out 2022-04-26 20:19:00 b00a7f8 refactor(number_theory/padics/padic_norm): split file (#13576) This PR splits the initial part of the `padic_norm.lean` file that defines p-adic valuations into a new file called `padic_val.lean`. This split makes sense to me since it seems most files importing this don't actually use the norm, so those files can build more in parallel. It also seems like a good organizational change: This way people can look at the files in this directory and see immediately where the valuation is defined, and people looking for the definition of `padic_norm` in `padic_norm.lean` don't have to scroll. ESTIMATED CHANGES Modified src/algebra/gcd_monoid/nat.lean Modified src/group_theory/exponent.lean Modified src/number_theory/padics/padic_norm.lean - theorem dvd_of_one_le_padic_val_nat - theorem one_le_padic_val_nat_of_dvd - theorem padic_val_int.eq_zero_of_not_dvd - theorem padic_val_int.mul - theorem padic_val_int.of_nat - theorem padic_val_int.of_ne_one_ne_zero - theorem padic_val_int.self - def padic_val_int - theorem padic_val_int_dvd - theorem padic_val_int_dvd_iff - theorem padic_val_int_mul_eq_succ - theorem padic_val_int_self - theorem padic_val_nat.eq_zero_of_not_dvd - theorem padic_val_nat.self - def padic_val_nat - theorem padic_val_nat_def - theorem padic_val_nat_dvd_iff - theorem padic_val_nat_eq_factorization - theorem padic_val_nat_primes - theorem padic_val_nat_self - theorem padic_val_rat.finite_int_prime_iff - theorem padic_val_rat.le_padic_val_rat_add_of_le - theorem padic_val_rat.min_le_padic_val_rat_add - theorem padic_val_rat.multiplicity_sub_multiplicity - theorem padic_val_rat.of_int - theorem padic_val_rat.of_int_multiplicity - theorem padic_val_rat.of_nat - theorem padic_val_rat.padic_val_rat_le_padic_val_rat_iff - theorem padic_val_rat.self - theorem padic_val_rat.sum_pos_of_pos - def padic_val_rat - theorem padic_val_rat_of_nat - theorem pow_padic_val_nat_dvd - theorem pow_succ_padic_val_nat_not_dvd - theorem prod_pow_prime_padic_val_nat - theorem range_pow_padic_val_nat_subset_divisors' - theorem range_pow_padic_val_nat_subset_divisors - theorem zero_le_padic_val_rat_of_nat Added src/number_theory/padics/padic_val.lean + theorem dvd_of_one_le_padic_val_nat + theorem one_le_padic_val_nat_of_dvd + theorem padic_val_int.eq_zero_of_not_dvd + theorem padic_val_int.mul + theorem padic_val_int.of_nat + theorem padic_val_int.of_ne_one_ne_zero + theorem padic_val_int.self + def padic_val_int + theorem padic_val_int_dvd + theorem padic_val_int_dvd_iff + theorem padic_val_int_mul_eq_succ + theorem padic_val_int_self + theorem padic_val_nat.eq_zero_of_not_dvd + theorem padic_val_nat.self + def padic_val_nat + theorem padic_val_nat_def + theorem padic_val_nat_dvd_iff + theorem padic_val_nat_eq_factorization + theorem padic_val_nat_primes + theorem padic_val_nat_self + theorem padic_val_rat.finite_int_prime_iff + theorem padic_val_rat.le_padic_val_rat_add_of_le + theorem padic_val_rat.min_le_padic_val_rat_add + theorem padic_val_rat.multiplicity_sub_multiplicity + theorem padic_val_rat.of_int + theorem padic_val_rat.of_int_multiplicity + theorem padic_val_rat.of_nat + theorem padic_val_rat.padic_val_rat_le_padic_val_rat_iff + theorem padic_val_rat.self + theorem padic_val_rat.sum_pos_of_pos + def padic_val_rat + theorem padic_val_rat_of_nat + theorem pow_padic_val_nat_dvd + theorem pow_succ_padic_val_nat_not_dvd + theorem prod_pow_prime_padic_val_nat + theorem range_pow_padic_val_nat_subset_divisors' + theorem range_pow_padic_val_nat_subset_divisors + theorem zero_le_padic_val_rat_of_nat Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2022-04-26 18:41:44 de79a76 chore(topology/continuous_function/zero_at_infty): add `is_central_scalar` instance (#13710) ESTIMATED CHANGES Modified src/topology/continuous_function/zero_at_infty.lean 2022-04-26 18:41:43 76de6f7 feat(group_theory/subsemigroup/operations): port from submonoid (#12112) Taken from `group_theory.submonoid.operations`, trying to keep as much API as possible ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean Modified src/group_theory/submonoid/operations.lean - theorem submonoid_class.coe_mul - theorem submonoid_class.mk_mul_mk - theorem submonoid_class.mul_def Added src/group_theory/subsemigroup/operations.lean + def add_subsemigroup.to_subsemigroup' + theorem add_subsemigroup.to_subsemigroup'_closure + def add_subsemigroup.to_subsemigroup + theorem add_subsemigroup.to_subsemigroup_closure + def mul_equiv.of_left_inverse + def mul_equiv.subsemigroup_congr + def mul_equiv.subsemigroup_map + def mul_hom.cod_srestrict + theorem mul_hom.coe_srange + theorem mul_hom.coe_srange_restrict + theorem mul_hom.map_mclosure + theorem mul_hom.map_srange + theorem mul_hom.mclosure_preimage_le + theorem mul_hom.mem_srange + theorem mul_hom.prod_map_comap_prod' + def mul_hom.srange + theorem mul_hom.srange_eq_map + def mul_hom.srange_restrict + theorem mul_hom.srange_restrict_surjective + theorem mul_hom.srange_top_iff_surjective + theorem mul_hom.srange_top_of_surjective + def mul_hom.srestrict + theorem mul_hom.srestrict_apply + def mul_hom.subsemigroup_comap + def mul_hom.subsemigroup_map + theorem mul_hom.subsemigroup_map_surjective + theorem mul_mem_class.coe_mul + theorem mul_mem_class.coe_subtype + theorem mul_mem_class.mk_mul_mk + theorem mul_mem_class.mul_def + def mul_mem_class.subtype + theorem subsemigroup.apply_coe_mem_map + theorem subsemigroup.bot_prod_bot + theorem subsemigroup.closure_closure_coe_preimage + theorem subsemigroup.coe_comap + theorem subsemigroup.coe_equiv_map_of_injective_apply + theorem subsemigroup.coe_map + theorem subsemigroup.coe_prod + def subsemigroup.comap + theorem subsemigroup.comap_comap + theorem subsemigroup.comap_equiv_eq_map_symm + theorem subsemigroup.comap_id + theorem subsemigroup.comap_inf + theorem subsemigroup.comap_inf_map_of_injective + theorem subsemigroup.comap_infi + theorem subsemigroup.comap_infi_map_of_injective + theorem subsemigroup.comap_injective_of_surjective + theorem subsemigroup.comap_le_comap_iff_of_surjective + theorem subsemigroup.comap_map_comap + theorem subsemigroup.comap_map_eq_of_injective + theorem subsemigroup.comap_strict_mono_of_surjective + theorem subsemigroup.comap_sup_map_of_injective + theorem subsemigroup.comap_supr_map_of_injective + theorem subsemigroup.comap_surjective_of_injective + theorem subsemigroup.comap_top + theorem subsemigroup.eq_top_iff' + theorem subsemigroup.gc_map_comap + def subsemigroup.gci_map_comap + def subsemigroup.gi_map_comap + def subsemigroup.inclusion + theorem subsemigroup.le_comap_map + theorem subsemigroup.le_comap_of_map_le + theorem subsemigroup.le_prod_iff + def subsemigroup.map + theorem subsemigroup.map_bot + theorem subsemigroup.map_comap_eq_of_surjective + theorem subsemigroup.map_comap_le + theorem subsemigroup.map_comap_map + theorem subsemigroup.map_equiv_eq_comap_symm + theorem subsemigroup.map_equiv_top + theorem subsemigroup.map_id + theorem subsemigroup.map_inf_comap_of_surjective + theorem subsemigroup.map_infi_comap_of_surjective + theorem subsemigroup.map_injective_of_injective + theorem subsemigroup.map_le_iff_le_comap + theorem subsemigroup.map_le_map_iff_of_injective + theorem subsemigroup.map_le_of_le_comap + theorem subsemigroup.map_map + theorem subsemigroup.map_strict_mono_of_injective + theorem subsemigroup.map_sup + theorem subsemigroup.map_sup_comap_of_surjective + theorem subsemigroup.map_supr + theorem subsemigroup.map_supr_comap_of_surjective + theorem subsemigroup.map_surjective_of_surjective + theorem subsemigroup.mem_comap + theorem subsemigroup.mem_map + theorem subsemigroup.mem_map_equiv + theorem subsemigroup.mem_map_iff_mem + theorem subsemigroup.mem_map_of_mem + theorem subsemigroup.mem_prod + theorem subsemigroup.monotone_comap + theorem subsemigroup.monotone_map + def subsemigroup.prod + theorem subsemigroup.prod_eq_top_iff + def subsemigroup.prod_equiv + theorem subsemigroup.prod_mono + theorem subsemigroup.prod_top + theorem subsemigroup.range_subtype + theorem subsemigroup.srange_fst + theorem subsemigroup.srange_snd + def subsemigroup.to_add_subsemigroup' + theorem subsemigroup.to_add_subsemigroup'_closure + def subsemigroup.to_add_subsemigroup + theorem subsemigroup.to_add_subsemigroup_closure + def subsemigroup.top_equiv + theorem subsemigroup.top_equiv_to_mul_hom + theorem subsemigroup.top_prod + theorem subsemigroup.top_prod_top 2022-04-26 17:50:15 560d1a7 chore(topology/continuous_function/continuous_map): add missing instances for `continuous_map` (#13717) This adds instances related to the ring variants, i.e., non-unital, non-associative (semi)rings. To avoid introducing accidental diamonds, this also changes how the existing instances are constructed, such that they now go through the `function.injective.*` definitions. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean 2022-04-26 17:50:14 325dbc8 refactor(number_theory/legendre_symbol/quadratic_reciprocity.lean): change definition of legendre_sym, simplify proofs, add lemmas (#13667) This changes the definition of `legendre_sym` to use `quadratic_char`. The proof of some of the statements can then be simplified by using the corresponding statements for quadratic characters. Some new API lemmas are added, including the fact that the Legendre symbol is multiplicative, Also, a few `simps` are squeezed in `.../quadratic_char.lean`. ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.ring_char_zmod_n Modified src/number_theory/legendre_symbol/quadratic_char.lean +/- theorem char.quadratic_char_sq_one - theorem finite_field.unit_is_sqare_iff + theorem finite_field.unit_is_square_iff Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean +/- def zmod.legendre_sym +/- theorem zmod.legendre_sym_eq_one_or_neg_one +/- theorem zmod.legendre_sym_eq_zero_iff + def zmod.legendre_sym_hom + theorem zmod.legendre_sym_mod + theorem zmod.legendre_sym_mul + theorem zmod.legendre_sym_one + theorem zmod.legendre_sym_sq_one' + theorem zmod.legendre_sym_sq_one + theorem zmod.legendre_sym_zero 2022-04-26 15:51:40 8b14d48 feat(logic/relation): Transitive closure of well-founded relation is well-founded (#13698) ESTIMATED CHANGES Modified src/logic/relation.lean + theorem relation.well_founded.trans_gen 2022-04-26 13:36:55 e77dbe0 doc(data/list/*): Fix file links (#13711) They were linking to `data.list.data.list.defs`. ESTIMATED CHANGES Modified src/data/list/count.lean Modified src/data/list/join.lean Modified src/data/list/prod_sigma.lean Modified src/order/category/BoundedDistribLattice.lean 2022-04-26 13:36:53 bfa0ba5 feat(analysis/normed_space/pointwise): The closure of a thickening (#13708) Prove `closure (thickening δ s) = cthickening δ s` and golf "thickening a thickening" lemmas. ESTIMATED CHANGES Modified src/analysis/normed_space/pointwise.lean + theorem closure_thickening 2022-04-26 13:36:52 e6c6764 feat(logic/relation): Add missing instances (#13704) ESTIMATED CHANGES Modified src/logic/relation.lean 2022-04-26 13:36:51 3d5e5ee feat(data/list/*): Miscellaneous lemmas (#13577) A few lemmas about `list.chain`, `list.pairwise`. Also rename `list.chain_of_pairwise` to `list.pairwise.chain` for dot notation. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.set_of_mem_cons Modified src/data/list/chain.lean - theorem list.chain_of_pairwise Modified src/data/list/cycle.lean Modified src/data/list/pairwise.lean + theorem list.pairwise.forall_of_forall_of_flip Modified src/logic/basic.lean + theorem congr_fun₂ + theorem congr_fun₃ + theorem funext₂ + theorem funext₃ Modified src/logic/relation.lean + theorem flip_eq_iff + theorem swap_eq_iff + theorem symmetric.flip_eq + theorem symmetric.swap_eq 2022-04-26 11:29:38 c83488b feat(topology/order/priestley): Priestley spaces (#12044) Define `priestley_space`, a Prop-valued mixin for an ordered topological space to respect Priestley's separation axiom. ESTIMATED CHANGES Modified src/order/basic.lean + theorem ne.not_le_or_not_le Added src/topology/order/priestley.lean + theorem exists_clopen_lower_of_not_le + theorem exists_clopen_upper_of_not_le + theorem exists_clopen_upper_or_lower_of_ne 2022-04-26 09:51:42 b0efdbb feat(algebra/module/linear_map) : cancel_right and cancel_left for linear_maps (#13703) ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_map.cancel_left + theorem linear_map.cancel_right 2022-04-26 09:51:41 5172448 feat(set_theory/game/pgame): Conway induction on games (#13699) This is a more convenient restatement of the induction principle of the type. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + def pgame.move_rec_on 2022-04-26 09:51:40 4c6b373 feat(group_theory/subgroup/basic): `zpowers_le` (#13693) This PR adds a lemma `zpowers_le : zpowers g ≤ H ↔ g ∈ H`. I also fixed the `to_additive` name of a lemma from a previous PR. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.zpowers_le 2022-04-26 09:51:39 b94ea15 refactor(linear_algebra/matrix/trace): unbundle `matrix.diag` (#13687) The bundling makes it awkward to work with, as the base ring has to be specified even though it doesn't affect the computation. This brings it in line with `matrix.diagonal`. The bundled version is now available as `matrix.diag_linear_map`. This adds a handful of missing lemmas about `diag` inspired by those about `diagonal`; almost all of which are just `rfl`. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified src/analysis/matrix.lean Modified src/data/matrix/basic.lean + def matrix.diag + theorem matrix.diag_add + def matrix.diag_add_monoid_hom + theorem matrix.diag_col_mul_row + theorem matrix.diag_conj_transpose + theorem matrix.diag_diagonal + def matrix.diag_linear_map + theorem matrix.diag_map + theorem matrix.diag_minor + theorem matrix.diag_neg + theorem matrix.diag_one + theorem matrix.diag_smul + theorem matrix.diag_sub + theorem matrix.diag_transpose + theorem matrix.diag_zero +/- theorem matrix.diagonal_apply_eq +/- theorem matrix.diagonal_apply_ne' +/- theorem matrix.diagonal_apply_ne +/- theorem matrix.one_apply_eq Modified src/data/matrix/basis.lean +/- theorem matrix.std_basis_matrix.diag_same +/- theorem matrix.std_basis_matrix.diag_zero Modified src/linear_algebra/matrix/is_diag.lean + theorem matrix.is_diag.diagonal_diag - theorem matrix.is_diag.exists_diagonal + theorem matrix.is_diag_iff_diagonal_diag - theorem matrix.is_diag_iff_exists_diagonal Modified src/linear_algebra/matrix/trace.lean - def matrix.diag - theorem matrix.diag_apply - theorem matrix.diag_col_mul_row - theorem matrix.diag_one - theorem matrix.diag_transpose +/- theorem matrix.trace_diag Modified src/topology/algebra/matrix.lean +/- theorem continuous.matrix_diag 2022-04-26 07:55:34 6ae00ad chore(tactic/field_simp): fix docstring (#13695) ESTIMATED CHANGES Modified src/tactic/field_simp.lean 2022-04-26 07:55:33 a02f11f feat(algebra/ring/equiv): generalize `ring_equiv` material to allow for non-unital rings (#13626) ESTIMATED CHANGES Modified src/algebra/hom/equiv.lean +/- theorem mul_equiv.Pi_congr_right_refl +/- def mul_equiv.arrow_congr Modified src/algebra/ring/equiv.lean + def add_equiv.to_ring_equiv +/- def mul_equiv.to_ring_equiv +/- theorem ring_equiv.Pi_congr_right_refl + theorem ring_equiv.coe_non_unital_ring_hom_inj_iff +/- theorem ring_equiv.coe_of_bijective + theorem ring_equiv.coe_to_non_unital_ring_hom +/- theorem ring_equiv.of_bijective_apply + def ring_equiv.of_hom_inv' +/- def ring_equiv.of_hom_inv - theorem ring_equiv.of_hom_inv_apply - theorem ring_equiv.of_hom_inv_symm_apply + theorem ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply + theorem ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom + def ring_equiv.to_non_unital_ring_hom + theorem ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply + theorem ring_equiv.to_non_unital_ring_hom_commutes + theorem ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom + theorem ring_equiv.to_non_unital_ring_hom_eq_coe + theorem ring_equiv.to_non_unital_ring_hom_injective + theorem ring_equiv.to_non_unital_ring_hom_refl + theorem ring_equiv.to_non_unital_ring_hom_trans Modified src/data/polynomial/eval.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/valuation/valuation_ring.lean 2022-04-26 07:55:32 1b1ae61 feat(analysis/normed_space/pointwise): Thickening a thickening (#13380) In a real normed space, thickening twice is the same as thickening once. ESTIMATED CHANGES Modified src/analysis/normed_space/pointwise.lean + theorem cthickening_cthickening + theorem cthickening_thickening + theorem inf_edist_cthickening + theorem inf_edist_thickening + theorem thickening_cthickening + theorem thickening_thickening Modified src/data/real/ennreal.lean + theorem ennreal.le_sub_of_add_le_left + theorem ennreal.le_sub_of_add_le_right + theorem ennreal.of_real_sub Modified src/topology/metric_space/basic.lean + theorem edist_le_of_real + theorem edist_lt_of_real Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.cthickening_cthickening_subset + theorem metric.cthickening_thickening_subset + theorem metric.thickening_cthickening_subset + theorem metric.thickening_thickening_subset 2022-04-26 07:21:28 093b583 feat(set_theory/game/pgame): `ordinal.to_pgame` (#13628) We define the canonical map from ordinals to pre-games and prove it's an order embedding. ESTIMATED CHANGES Added src/set_theory/game/ordinal.lean + def ordinal.to_left_moves_to_pgame + theorem ordinal.to_pgame_def + theorem ordinal.to_pgame_injective + theorem ordinal.to_pgame_le + theorem ordinal.to_pgame_le_iff + theorem ordinal.to_pgame_left_moves + theorem ordinal.to_pgame_lt + theorem ordinal.to_pgame_lt_iff + theorem ordinal.to_pgame_move_left + theorem ordinal.to_pgame_move_left_heq + theorem ordinal.to_pgame_right_moves 2022-04-26 04:54:38 bf67d47 chore(scripts): update nolints.txt (#13706) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2022-04-26 04:54:37 748ea79 feat(order/filter/basic): more lemmas about `filter.comap` (#13619) * add `set.compl_def`, `set.finite_image_fst_and_snd_iff`, and `set.forall_finite_image_eval_iff`; * add `filter.coext`, an extensionality lemma that is more useful for "cofilters"; * rename `filter.eventually_comap'` to `filter.eventually.comap`; * add `filter.mem_comap'`, `filter.mem_comap_iff_compl`, and `filter.compl_mem_comap`; * add `filter.compl_mem_coprod`, replace `filter.compl_mem_Coprod_iff` with a simpler `filter.compl_mem_Coprod`; * add `filter.map_top`; * use new lemmas to golf some proofs. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.compl_def Modified src/data/set/finite.lean + theorem set.finite_image_fst_and_snd_iff + theorem set.forall_finite_image_eval_iff Modified src/order/filter/basic.lean + theorem filter.compl_mem_comap + theorem filter.compl_mem_coprod + theorem filter.eventually.comap - theorem filter.eventually_comap' +/- theorem filter.eventually_comap +/- theorem filter.frequently_comap + theorem filter.map_top + theorem filter.mem_comap' + theorem filter.mem_comap_iff_compl Modified src/order/filter/cofinite.lean Modified src/order/filter/pi.lean + theorem filter.compl_mem_Coprod - theorem filter.compl_mem_Coprod_iff Modified src/topology/algebra/order/intermediate_value.lean Modified src/topology/subset_properties.lean 2022-04-26 02:57:32 4de6527 feat(algebra/ring/basic): define non-unital commutative (semi)rings (#13476) This adds the classes of non-unital commutative (semi)rings. These are necessary to talk about, for example, non-unital commutative C∗-algebras such as `C₀(X, ℂ)` which are vital for the continuous functional calculus. In addition, we weaken many type class assumptions in `algebra/ring/basic` to `non_unital_non_assoc_ring`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/order/ring.lean Modified src/algebra/ring/basic.lean +/- theorem is_regular_iff_ne_zero' Modified src/algebra/ring/boolean_ring.lean + def generalized_boolean_algebra.to_non_unital_comm_ring - def generalized_boolean_algebra.to_non_unital_ring Modified src/algebra/ring/equiv.lean Modified src/algebra/ring/opposite.lean Modified src/algebra/ring/pi.lean Modified src/algebra/ring/prod.lean Modified src/algebra/ring/ulift.lean Modified src/data/finsupp/pointwise.lean Modified src/data/set/pointwise.lean Modified src/logic/equiv/transfer_instance.lean Modified src/ring_theory/hahn_series.lean Modified src/topology/continuous_function/zero_at_infty.lean Modified src/topology/locally_constant/algebra.lean 2022-04-26 01:09:50 24a8bb9 feat(order/well-founded): Remove redundant arguments (#13702) All of these are inferred as `{α : Type*}` (as opposed to `{α : Sort*}`), and there is already a `variables {α : Type*}` at the top of the file. ESTIMATED CHANGES Modified src/order/well_founded.lean +/- theorem well_founded.min_mem +/- theorem well_founded.not_lt_min +/- theorem well_founded.well_founded_iff_has_min 2022-04-25 23:11:10 438b39a feat(set_theory/cardinal/basic): Distributivity of `cardinal.sum` and + (#13643) `cardinal.sum_add_distrib` shows that `cardinal.sum` distributes over +. ESTIMATED CHANGES Modified src/logic/equiv/basic.lean + def equiv.sigma_sum_distrib Modified src/set_theory/cardinal/basic.lean + theorem cardinal.sum_add_distrib 2022-04-25 19:25:37 8f604aa feat(data/nat/totient): totient equals one iff (#13688) ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.totient_eq_one_iff 2022-04-25 17:22:45 4e50b68 feat(category_theory/abelian): if D is abelian so is C ⥤ D (#13686) Needed for LTE, and also useful to show `Rep k G` is abelian. ESTIMATED CHANGES Added src/category_theory/abelian/functor_category.lean + theorem category_theory.abelian.functor_category.coimage_image_comparison_app' + theorem category_theory.abelian.functor_category.coimage_image_comparison_app + def category_theory.abelian.functor_category.coimage_obj_iso + def category_theory.abelian.functor_category.image_obj_iso Modified src/category_theory/limits/preserves/shapes/kernels.lean - theorem category_theory.limits.preserves_cokernel.iso_hom + theorem category_theory.limits.preserves_cokernel.iso_inv Added src/category_theory/limits/shapes/functor_category.lean Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel.map_iso + def category_theory.limits.kernel.map_iso 2022-04-25 17:22:44 43e84cd feat(data/fin/succ_pred): `fin` is an archimedean succ/pred order (#12792) ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean Modified src/data/fin/basic.lean + theorem fin.coe_fin_one + theorem fin.coe_neg_one + theorem fin.coe_sub_one + def order_iso.fin_equiv + theorem order_iso.fin_equiv_apply + theorem order_iso.fin_equiv_symm_apply Added src/data/fin/succ_pred.lean + theorem fin.pred_apply + theorem fin.pred_eq + theorem fin.succ_apply + theorem fin.succ_eq Modified src/data/fintype/basic.lean - theorem fintype.linear_order.is_well_order + theorem fintype.linear_order.is_well_order_gt + theorem fintype.linear_order.is_well_order_lt - theorem fintype.preorder.well_founded + theorem fintype.preorder.well_founded_gt + theorem fintype.preorder.well_founded_lt Modified src/order/rel_classes.lean Modified src/order/succ_pred/basic.lean + def pred_order.of_core + def succ_order.of_core Modified src/set_theory/ordinal/basic.lean 2022-04-25 15:23:31 4481a56 feat(algebra/group_power/order): Add sq_zero_iff (#13670) Tiny lemma that seems to be missing. Should this be a simp lemma? ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem sq_eq_zero_iff 2022-04-25 15:23:30 e2f5696 feat(analysis/normed_space/exponential): add `pi.exp_apply` (#13488) The statement is a bit weird, but this structure is useful because it allows us to push `exp` through `matrix.diagonal` and into its elements. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean + theorem function.update_exp + theorem pi.exp_apply + theorem pi.exp_def 2022-04-25 15:23:29 85075bc refactor(category_theory/monoidal): rearrange simp lemmas to work better with coherence (#13409) Change the direction of some simp lemma for monoidal categories, and remove some unused lemmas. This PR is effectively a "no-op": no substantial changes to proofs. However, it should enable making `coherence` more powerful soon (following suggestions of @yuma-mizuno)! ESTIMATED CHANGES Modified src/category_theory/monoidal/End.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/category.lean - theorem category_theory.monoidal_category.left_unitor_inv_comp_tensor - theorem category_theory.monoidal_category.right_unitor_inv_comp_tensor +/- theorem category_theory.monoidal_category.tensor_left_iff +/- theorem category_theory.monoidal_category.tensor_right_iff - theorem category_theory.monoidal_category.triangle_assoc_comp_left Modified src/category_theory/monoidal/center.lean Modified src/category_theory/monoidal/free/coherence.lean Modified src/category_theory/monoidal/opposite.lean Modified src/category_theory/monoidal/transport.lean 2022-04-25 15:23:28 9f75d75 feat(analysis/convex/measure): a convex set is null-measurable (#13138) ESTIMATED CHANGES Added src/analysis/convex/measure.lean + theorem convex.add_haar_frontier Modified src/analysis/convex/topology.lean + theorem convex.closure_subset_image_homothety_interior_of_one_lt Modified src/data/set/basic.lean + theorem subtype.preimage_coe_inter_self Modified src/topology/continuous_on.lean + theorem frontier_inter_open_inter 2022-04-25 15:23:27 2c15ce1 feat(data/nat/choose): add facts about the multiplicity of primes in the factorisation of central binomial coefficients (#9925) A number of bounds on the multiplicity of primes in the factorisation of central binomial coefficients. These are of interest because they form part of the proof of Bertrand's postulate. ESTIMATED CHANGES Modified src/data/nat/choose/central.lean + theorem nat.padic_val_nat_central_binom_le + theorem nat.padic_val_nat_central_binom_of_large_eq_zero + theorem nat.padic_val_nat_central_binom_of_large_le_one 2022-04-25 13:21:34 2825f35 feat(data/set/prod): add `set.eval_image_pi_subset` (#13613) Also reorder lemmas like `fst_image_prod_subset` so that simpler lemmas go first. ESTIMATED CHANGES Modified src/data/set/prod.lean + theorem set.eval_image_pi_subset + theorem set.eval_image_univ_pi_subset 2022-04-25 13:21:32 14b0e32 chore(data/finsupp/fin): golf some proofs (#13607) ESTIMATED CHANGES Modified src/data/finsupp/fin.lean 2022-04-25 13:21:31 b7538a3 feat(algebra/periodic): add lemmas `periodic.prod`, `periodic.smul`, `antiperiodic.smul` (#13496) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem finset.periodic_prod + theorem function.antiperiodic.smul + theorem function.periodic.smul + theorem list.periodic_prod + theorem multiset.periodic_prod 2022-04-25 11:19:25 4bfae3d feat(set_theory/game/pgame): remove nolint (#13680) We remove `@[nolint has_inhabited_instance]` from `left_moves` and `right_moves` by providing the appropriate instances for `star`. ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean +/- def pgame.left_moves +/- def pgame.right_moves 2022-04-25 11:19:24 9e8d107 feat(dynamics/periodic_pts): `pow_smul_eq_iff_minimal_period_dvd` (#13676) This PR adds a lemma `pow_smul_eq_iff_minimal_period_dvd`, along with additive and integer versions. ESTIMATED CHANGES Modified src/dynamics/periodic_pts.lean + theorem mul_action.pow_smul_eq_iff_minimal_period_dvd + theorem mul_action.zpow_smul_eq_iff_minimal_period_dvd 2022-04-25 11:19:22 7231172 feat(topology/algebra): actions on the opposite type are continuous (#13671) This also adds the missing `t2_space` instance. ESTIMATED CHANGES Modified src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/constructions.lean Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/uniform_mul_action.lean +/- theorem uniform_continuous.const_smul 2022-04-25 11:19:21 ed10ba2 feat(ring_theory/witt_vector/frobenius): add `witt_vector.frobenius_equiv` (#13666) This promotes the bijection to an equivalence with an explicit inverse ESTIMATED CHANGES Modified src/ring_theory/witt_vector/frobenius.lean + def witt_vector.frobenius_equiv Modified src/ring_theory/witt_vector/frobenius_fraction_field.lean Modified src/ring_theory/witt_vector/isocrystal.lean +/- def witt_vector.fraction_ring.frobenius 2022-04-25 11:19:20 6d3ca07 feat(data/zmod/basic): `-1 : zmod n` lifts to `n - 1` (#13665) This PR adds a lemma stating that `-1 : zmod n` lifts to `n - 1 : R` for any ring `R`. The proof is surprisingly painful, but maybe someone can find a nicer way? ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.cast_neg_one + theorem zmod.val_neg_one 2022-04-25 11:19:19 ad0a3e6 feat(dynamics/periodic_pts): Iteration is injective below the period (#13660) This PR adds `iterate_injective_of_lt_minimal_period`, generalizing `pow_injective_of_lt_order_of`. ESTIMATED CHANGES Modified src/dynamics/periodic_pts.lean + theorem function.iterate_injective_of_lt_minimal_period + theorem function.iterate_minimal_period Modified src/group_theory/order_of_element.lean - theorem pow_injective_aux 2022-04-25 10:43:44 6710d65 feat(analysis/complex/roots_of_unity): arg of a primitive root (#13583) ESTIMATED CHANGES Modified src/analysis/complex/roots_of_unity.lean + theorem is_primitive_root.arg 2022-04-25 08:04:59 b35ed40 feat(algebra/order/hom/ring): There's at most one hom between linear ordered fields (#13601) There is at most one ring homomorphism from a linear ordered field to an archimedean linear ordered field. Also generalize `map_rat_cast` to take in `ring_hom_class`. ESTIMATED CHANGES Modified src/algebra/order/hom/ring.lean + theorem order_ring_hom.subsingleton + theorem order_ring_iso.subsingleton_left + theorem order_ring_iso.subsingleton_right + theorem order_ring_iso.symm_bijective + theorem order_ring_iso.to_order_ring_hom_injective Modified src/algebra/star/basic.lean Modified src/data/complex/basic.lean +/- theorem complex.of_real_rat_cast Modified src/data/complex/is_R_or_C.lean Modified src/data/rat/cast.lean + theorem map_rat_cast - theorem ring_hom.map_rat_cast Modified src/ring_theory/algebraic.lean 2022-04-25 08:04:57 d795ea4 feat(number_theory/legendre_symbol/quadratic_reciprocity): Alternate forms of `exists_sq_eq_neg_one` (#13594) Also, renamed `exists_sq_eq_neg_one_iff_mod_four_ne_three` to `exists_sq_eq_neg_one` for consistency with `exists_sq_eq_two` and for convenience. ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean + theorem zmod.exists_sq_eq_neg_one_iff - theorem zmod.exists_sq_eq_neg_one_iff_mod_four_ne_three + theorem zmod.mod_four_ne_three_of_sq_eq_neg_one + theorem zmod.mod_four_ne_three_of_sq_eq_neg_sq' + theorem zmod.mod_four_ne_three_of_sq_eq_neg_sq Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-04-25 08:04:56 e251ef7 feat(logic/basic): `congr_fun` for heterogeneous equality (#13591) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem congr_fun_heq 2022-04-25 08:04:55 e059fdf feat(algebra/big_operators/basic): mk0_prod (#13582) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem units.mk0_prod 2022-04-25 08:04:54 f02c784 feat(special_functions/gamma): recurrence relation for Gamma function (#13156) ESTIMATED CHANGES Modified src/analysis/special_functions/gamma.lean + def complex.Gamma + theorem complex.Gamma_add_one + theorem complex.Gamma_aux_recurrence1 + theorem complex.Gamma_aux_recurrence2 + theorem complex.Gamma_eq_Gamma_aux + theorem complex.Gamma_eq_integral +/- def complex.Gamma_integral + theorem complex.Gamma_integral_add_one + theorem complex.Gamma_nat_eq_factorial + def complex.partial_Gamma + theorem complex.partial_Gamma_add_one + theorem complex.tendsto_partial_Gamma 2022-04-25 06:24:12 ef3769d feat(group_theory/subgroup/basic): Cyclic subgroups are commutative (#13663) This PR adds an instance stating that the cyclic subgroups `zpowers g` are commutative. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean 2022-04-25 06:24:11 b0fe3cd feat(order/filter): add `filter.coprod_bot` etc (#13662) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.bot_coprod + theorem filter.bot_coprod_bot + theorem filter.coprod_bot Modified src/order/filter/pi.lean + theorem filter.Coprod_bot' + theorem filter.Coprod_bot + theorem filter.Coprod_eq_bot_iff' + theorem filter.Coprod_eq_bot_iff 2022-04-25 06:24:10 feb9aed feat(group_theory/group_action/basic): More API for `quotient_action` (#13661) This PR adds a couple more API lemmas for `quotient_action`. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.quotient.coe_smul_out' + theorem mul_action.quotient.mk_smul_out' +/- theorem mul_action.quotient.smul_coe +/- theorem mul_action.quotient.smul_mk 2022-04-25 06:24:09 46563c5 refactor(analysis/convex/basic): rewrite a few proofs (#13658) * prove that a closed segment is the union of the corresponding open segment and the endpoints; * use this lemma to golf some proofs; * make the "field" argument of `mem_open_segment_of_ne_left_right` implicit. * use section variables. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem insert_endpoints_open_segment +/- theorem mem_open_segment_iff_div +/- theorem mem_open_segment_of_ne_left_right +/- theorem mem_segment_iff_div +/- theorem mem_segment_iff_same_ray +/- theorem open_segment_subset_iff_segment_subset Modified src/analysis/convex/extreme.lean 2022-04-25 06:24:07 7d64215 chore(analysis/convex/topology): generalize a few lemmas (#13656) This way they work for `𝕜 = ℚ` too. ESTIMATED CHANGES Modified src/analysis/convex/topology.lean +/- theorem convex.add_smul_mem_interior' +/- theorem convex.add_smul_mem_interior +/- theorem convex.add_smul_sub_mem_interior' +/- theorem convex.add_smul_sub_mem_interior +/- theorem convex.combo_closure_interior_mem_interior +/- theorem convex.combo_closure_interior_subset_interior +/- theorem convex.combo_interior_closure_mem_interior +/- theorem convex.combo_interior_closure_subset_interior +/- theorem convex.combo_interior_self_mem_interior +/- theorem convex.combo_interior_self_subset_interior +/- theorem convex.combo_self_interior_mem_interior +/- theorem convex.combo_self_interior_subset_interior +/- theorem convex.open_segment_closure_interior_subset_interior +/- theorem convex.open_segment_interior_closure_subset_interior +/- theorem convex.open_segment_interior_self_subset_interior +/- theorem convex.open_segment_self_interior_subset_interior 2022-04-25 06:24:04 c24f1f2 chore(number_theory/padics/*): tidy some proofs (#13652) ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/padic_numbers.lean 2022-04-25 06:24:00 962bfcd chore(field_theory/finite/polynomial): tidy + remove nolints (#13645) Some of these definitions only make full sense over a field (for example the indicator function can be nonsensical in non-field rings) but there's also no reason not to define them more generally. This removes all `nolint`s related to this file, and all of the generalisation linter suggestions too. ESTIMATED CHANGES Modified src/field_theory/finite/polynomial.lean +/- def mv_polynomial.R +/- theorem mv_polynomial.dim_R +/- theorem mv_polynomial.eq_zero_of_eval_eq_zero +/- def mv_polynomial.evalᵢ +/- def mv_polynomial.evalₗ - theorem mv_polynomial.evalₗ_apply +/- theorem mv_polynomial.expand_zmod +/- theorem mv_polynomial.finrank_R +/- theorem mv_polynomial.frobenius_zmod +/- def mv_polynomial.indicator +/- theorem mv_polynomial.ker_evalₗ +/- theorem mv_polynomial.range_evalᵢ 2022-04-25 06:24:00 b6a4be4 chore(ring_theory/witt_vector/isocrystal): speed up the proof (#13644) to remove a timeout in #13459 ESTIMATED CHANGES Modified src/ring_theory/witt_vector/isocrystal.lean 2022-04-25 06:23:59 9c861e3 feat(topology/algebra/matrix): `matrix.block_diagonal` is continuous (#13641) `continuous.if_const` isn't suitable for the primed `matrix.block_diagonal'` case, as the `if` is dependent. ESTIMATED CHANGES Modified src/topology/algebra/matrix.lean + theorem continuous.matrix_block_diagonal' + theorem continuous.matrix_block_diagonal + theorem continuous.matrix_from_blocks 2022-04-25 06:23:58 b1b2cab feat(group_theory/complement): The range of a section `G ⧸ H → G` is a transversal (#13623) This PR adds left and right versions of the statement that the range of a section `G ⧸ H → G` is a transversal. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.range_mem_left_transversals + theorem subgroup.range_mem_right_transversals 2022-04-25 06:23:57 6cbf986 refactor(group_theory/schur_zassenhaus): Golf proof of abelian case (#13622) This PR golfs the proof of the abelian case of Schur-Zassenhaus by switching from a nonstandard definition of the difference of two left transversals to the definition used in `transfer.lean`. ESTIMATED CHANGES Modified src/group_theory/schur_zassenhaus.lean - theorem subgroup.diff_inv - theorem subgroup.diff_mul_diff - theorem subgroup.diff_self + theorem subgroup.eq_one_of_smul_eq_one +/- theorem subgroup.exists_smul_eq +/- theorem subgroup.is_complement'_stabilizer_of_coprime +/- def subgroup.quotient_diff + theorem subgroup.smul_diff' - theorem subgroup.smul_diff + theorem subgroup.smul_diff_smul' - theorem subgroup.smul_diff_smul - theorem subgroup.smul_left_injective 2022-04-25 06:23:56 b6c8c0d refactor(linear_algebra/quotient): Use the same quotient relation as add_subgroup (#13620) This means that the quotient by `p` and `p.to_add_subgroup` are defeq as types, and the instances defined on them are defeq too. This removes a TODO comment by Mario; I can only assume it resolves it in the right direction ESTIMATED CHANGES Modified src/algebra/char_p/quotient.lean Modified src/algebra/lie/quotient.lean Modified src/algebra/module/torsion.lean Modified src/algebra/ring_quot.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/linear_algebra/quotient.lean + theorem submodule.quotient_rel_r_def Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/ideal/quotient.lean Modified src/ring_theory/valuation/basic.lean Modified src/topology/algebra/uniform_ring.lean 2022-04-25 06:23:55 91b8084 chore(analysis/normed_space/finite_dimension): extract some lemmas from existentials (#13600) A few proofs in this file prove an existential where a stronger statement in terms of the witness exists. This: * Removes `basis.sup_norm_le_norm` and replaces it with the more general statement `pi.sum_norm_apply_le_norm` * Renames `basis.op_norm_le` to `basis.exists_op_norm_le` * Creates a new `basis.op_norm_le` stated without the existential * Adds the `nnnorm` version of some `norm` lemmas. In some cases it's easier to prove these first, and derive the `norm` versions from them. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem pi.sum_nnnorm_apply_le_nnnorm + theorem pi.sum_norm_apply_le_norm Modified src/analysis/normed_space/finite_dimension.lean + theorem basis.exists_op_nnnorm_le + theorem basis.exists_op_norm_le + theorem basis.op_nnnorm_le +/- theorem basis.op_norm_le - theorem basis.sup_norm_le_norm Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_nnnorm_eq_of_bounds + theorem continuous_linear_map.op_nnnorm_le_bound + theorem continuous_linear_map.op_nnnorm_le_of_lipschitz + theorem continuous_linear_map.op_nnnorm_prod 2022-04-25 05:10:33 070c21b chore(data/matrix): generalisation linter (#13655) ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.col_mul_vec +/- theorem matrix.col_vec_mul +/- theorem matrix.conj_transpose_mul +/- theorem matrix.conj_transpose_neg +/- theorem matrix.conj_transpose_smul +/- theorem matrix.conj_transpose_zero +/- theorem matrix.diagonal_conj_transpose +/- theorem matrix.dot_product_comm +/- theorem matrix.minor_mul +/- theorem matrix.minor_mul_equiv +/- theorem matrix.minor_mul_transpose_minor +/- theorem matrix.minor_smul +/- theorem matrix.minor_zero +/- theorem matrix.mul_minor_one +/- theorem matrix.mul_vec_smul +/- theorem matrix.one_minor_mul +/- theorem matrix.row_mul_vec +/- theorem matrix.row_vec_mul +/- theorem matrix.star_mul +/- theorem matrix.transpose_mul +/- def matrix.transpose_ring_equiv +/- theorem matrix.vec_mul_smul +/- theorem matrix.vec_mul_vec_eq +/- theorem ring_hom.map_dot_product +/- theorem ring_hom.map_mul_vec +/- theorem ring_hom.map_vec_mul 2022-04-25 04:29:05 df4066c refactor(order/ideal): Make `order.ideal` extend `lower_set` (#13070) * Redefine `order.ideal` to extend `lower_set`. * `set_like` instance * Get rid of `order.ideal.ideal_Inter_nonempty` in favor of `order_bot` * Make arguments to `order.ideal.sup_mem` semi-implicit * Reorder sections according to typeclass assumptions (some were outdated since Yakov's `order_bot`/`order_top` refactor) ESTIMATED CHANGES Modified src/order/ideal.lean - theorem order.ideal.Inf_le - theorem order.ideal.Inter_nonempty +/- theorem order.ideal.bot_mem + theorem order.ideal.carrier_eq_coe +/- theorem order.ideal.coe_Inf + theorem order.ideal.coe_inf - theorem order.ideal.coe_inj - theorem order.ideal.coe_injective + theorem order.ideal.coe_ssubset_coe + theorem order.ideal.coe_subset_coe + theorem order.ideal.coe_sup + theorem order.ideal.coe_to_lower_set +/- theorem order.ideal.coe_top +/- theorem order.ideal.ext - theorem order.ideal.ext_iff - theorem order.ideal.ideal_Inter_nonempty.all_Inter_nonempty - theorem order.ideal.ideal_Inter_nonempty.all_bInter_nonempty - theorem order.ideal.ideal_Inter_nonempty.exists_all_mem - theorem order.ideal.ideal_Inter_nonempty_iff - theorem order.ideal.ideal_Inter_nonempty_of_exists_all_mem - theorem order.ideal.is_glb_Inf +/- theorem order.ideal.is_proper.ne_top - theorem order.ideal.le_Inf +/- theorem order.ideal.mem_Inf - theorem order.ideal.mem_coe +/- theorem order.ideal.mem_compl_of_ge +/- def order.ideal.principal + theorem order.ideal.principal_bot + theorem order.ideal.principal_top +/- theorem order.ideal.sup_mem + theorem order.ideal.to_lower_set_injective +/- theorem order.ideal.top_of_top_mem + theorem order.ideal.top_to_lower_set +/- structure order.ideal Modified src/order/pfilter.lean +/- theorem order.pfilter.ext +/- theorem order.pfilter.inf_mem +/- theorem order.pfilter.mem_of_le +/- theorem order.pfilter.top_mem Modified src/order/prime_ideal.lean 2022-04-25 03:54:20 d4d5b6d chore(scripts): update nolints.txt (#13679) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2022-04-25 03:54:18 65edf25 feat(set_theory/game/pgame): `x.move_left i < x` and variants (#13654) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.lt_mk + theorem pgame.lt_move_right + theorem pgame.mk_lt + theorem pgame.move_left_lt Modified src/set_theory/surreal/basic.lean - theorem pgame.numeric.lt_move_right - theorem pgame.numeric.move_left_lt Modified src/set_theory/surreal/dyadic.lean 2022-04-25 01:54:43 454b884 chore(topology/metric_space/basic): golf an instance (#13664) Golf the proof of `prod.pseudo_metric_space_max` using `pseudo_emetric_space.to_pseudo_metric_space_of_dist`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean 2022-04-25 01:54:42 9101c48 docs(number_theory/sum_two_squares): Update docs (#13593) We add a remark for an alternate name for the theorem, and a todo note for a generalization of it. ESTIMATED CHANGES Modified src/number_theory/sum_two_squares.lean +/- theorem nat.prime.sq_add_sq 2022-04-25 01:54:41 045fc44 docs(tactic/algebra): Module docstring (#13571) Write the module docstring. ESTIMATED CHANGES Modified src/tactic/algebra.lean 2022-04-25 00:39:20 54d1ddd feat(algebra/polynomial/big_operators): add a lemma, reduce assumptions, golf (#13264) ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean + theorem polynomial.degree_list_prod +/- theorem polynomial.nat_degree_multiset_prod Modified src/data/polynomial/degree/definitions.lean 2022-04-24 20:37:26 0d16bb4 refactor(*): migrate from `filter.lift' _ powerset` to `filter.small_sets` (#13673) ESTIMATED CHANGES Modified src/analysis/special_functions/non_integrable.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measurable_space.lean - theorem filter.eventually.exists_measurable_mem_of_lift' + theorem filter.eventually.exists_measurable_mem_of_small_sets Modified src/measure_theory/measure/measure_space.lean Modified src/order/filter/interval.lean Modified src/order/filter/lift.lean - theorem filter.eventually_lift'_powerset' - theorem filter.eventually_lift'_powerset - theorem filter.eventually_lift'_powerset_eventually - theorem filter.eventually_lift'_powerset_forall - theorem filter.lift'_inf_powerset - theorem filter.lift'_infi_powerset - theorem filter.tendsto_lift'_powerset_mono Modified src/order/filter/small_sets.lean + theorem filter.comap_small_sets + theorem filter.eventually_small_sets' + theorem filter.eventually_small_sets + theorem filter.eventually_small_sets_eventually + theorem filter.eventually_small_sets_forall +/- theorem filter.has_basis.small_sets +/- theorem filter.has_basis_small_sets + theorem filter.monotone_small_sets +/- def filter.small_sets + theorem filter.small_sets_bot + theorem filter.small_sets_comap + theorem filter.small_sets_inf + theorem filter.small_sets_infi + theorem filter.small_sets_principal + theorem filter.small_sets_top + theorem filter.tendsto.small_sets_mono +/- theorem filter.tendsto_small_sets_iff Modified src/topology/algebra/order/basic.lean Modified src/topology/metric_space/hausdorff_dimension.lean +/- theorem bsupr_limsup_dimH +/- theorem supr_limsup_dimH 2022-04-24 17:23:52 53a484e chore(order/filter/small_sets): redefine, golf (#13672) The new definition is defeq to the old one. ESTIMATED CHANGES Modified src/order/filter/small_sets.lean +/- def filter.small_sets 2022-04-24 13:05:30 42b9cdf feat(data/quot): Decidability of `quotient.lift` and friends (#13589) and make `antisymmetrization.linear_order` computable. ESTIMATED CHANGES Modified src/data/quot.lean Modified src/order/antisymmetrization.lean 2022-04-24 11:06:15 63da426 refactor(linear_algebra/dimension): further generalisations to division_ring (#13657) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/dimension.lean +/- theorem rank_zero 2022-04-24 08:21:40 8126255 feat(set_theory/surreal/basic): Definitional characterization of `numeric` (#13653) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean + theorem pgame.numeric_def 2022-04-24 06:52:55 e006f38 feat(algebra/hom/iterate): Iterating an action (#13659) This PR adds `smul_iterate`, generalizing `mul_left_iterate` and `mul_right_iterate`. ESTIMATED CHANGES Modified src/algebra/hom/iterate.lean + theorem smul_iterate 2022-04-24 04:20:58 b8b8bf3 refactor(category_theory/monoidal): prove coherence lemmas by coherence (#13406) Now that we have a basic monoidal coherence tactic, we can replace some boring proofs of particular coherence lemmas with `by coherence`. I've also simply deleted a few lemmas which are not actually used elsewhere in mathlib, and can be proved `by coherence`. ESTIMATED CHANGES Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/category.lean - theorem category_theory.monoidal_category.id_tensor_right_unitor_inv - theorem category_theory.monoidal_category.left_unitor_inv_tensor_id - theorem category_theory.monoidal_category.left_unitor_tensor' - theorem category_theory.monoidal_category.left_unitor_tensor - theorem category_theory.monoidal_category.left_unitor_tensor_inv' - theorem category_theory.monoidal_category.left_unitor_tensor_inv - theorem category_theory.monoidal_category.pentagon_comp_id_tensor - theorem category_theory.monoidal_category.pentagon_hom_inv - theorem category_theory.monoidal_category.pentagon_inv_hom - theorem category_theory.monoidal_category.pentagon_inv_inv_hom - theorem category_theory.monoidal_category.triangle_assoc_comp_right_inv - theorem category_theory.monoidal_category.unitors_equal - theorem category_theory.monoidal_category.unitors_inv_equal Added src/category_theory/monoidal/coherence_lemmas.lean + theorem category_theory.monoidal_category.id_tensor_right_unitor_inv + theorem category_theory.monoidal_category.left_unitor_inv_tensor_id + theorem category_theory.monoidal_category.left_unitor_tensor' + theorem category_theory.monoidal_category.left_unitor_tensor + theorem category_theory.monoidal_category.left_unitor_tensor_inv + theorem category_theory.monoidal_category.pentagon_hom_inv + theorem category_theory.monoidal_category.pentagon_inv_hom + theorem category_theory.monoidal_category.pentagon_inv_inv_hom + theorem category_theory.monoidal_category.triangle_assoc_comp_right_inv + theorem category_theory.monoidal_category.unitors_equal + theorem category_theory.monoidal_category.unitors_inv_equal Modified src/category_theory/monoidal/rigid.lean 2022-04-24 02:22:31 92ca136 feat(set_theory/game/pgame): Birthdays of pre-games (#13636) ESTIMATED CHANGES Added src/set_theory/game/birthday.lean + theorem pgame.birthday_def + theorem pgame.birthday_move_left_lt + theorem pgame.birthday_move_right_lt + theorem pgame.birthday_zero + theorem pgame.lt_birthday_iff + theorem pgame.relabelling.birthday_congr 2022-04-24 02:22:30 5998b49 chore(order/filter/basic): golf 2 proofs (#13614) ESTIMATED CHANGES Modified src/order/filter/basic.lean 2022-04-24 02:22:28 946f253 chore(set_theory/game/pgame): Cleanup (#13612) We remove redundant parentheses, and make arguments explicit when they can't be inferred. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean +/- theorem pgame.add_left_neg_equiv +/- theorem pgame.add_left_neg_le_zero +/- theorem pgame.add_right_neg_equiv +/- theorem pgame.add_right_neg_le_zero +/- theorem pgame.zero_le_add_left_neg +/- theorem pgame.zero_le_add_right_neg Modified src/set_theory/surreal/basic.lean 2022-04-24 02:22:27 b0552c1 docs(tactic/lint/default): Module docstring (#13570) Write the module docstring. ESTIMATED CHANGES Modified src/tactic/lint/default.lean 2022-04-24 00:36:50 2d0ff32 chore(algebra/*): move function instances (#13650) These should have been much earlier, but I put them in their current places to avoid large build times in what was an already large refactor. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/group_theory/group_action/pi.lean Modified src/linear_algebra/pi.lean 2022-04-23 22:43:27 cc406db feat(algebra/ring/basic): generalisation linter suggestions (#13649) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean +/- theorem is_regular_of_ne_zero' +/- theorem pred_ne_self +/- theorem succ_ne_self 2022-04-23 22:43:26 1abfde6 chore(group_theory/exponent): generalise (#13647) Generalises a few lemmas to not require cancellativity. ESTIMATED CHANGES Modified src/group_theory/exponent.lean 2022-04-23 22:43:25 34b1cfd feat(set_theory/game/pgame): Strengthen `move_{left/right}_mk` (#13646) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean +/- theorem pgame.move_left_mk +/- theorem pgame.move_right_mk 2022-04-23 22:43:24 44a05db fix(topology/algebra/matrix): correct a lemma name (#13640) ESTIMATED CHANGES Modified src/topology/algebra/matrix.lean + theorem continuous.matrix_diagonal - theorem continuous_matrix.diagonal 2022-04-23 21:10:27 09eb35f feat(data/part): add get_or_else_of_dom (#13588) Adds a lemma ESTIMATED CHANGES Modified src/data/part.lean + theorem part.get_or_else_of_dom + theorem part.get_or_else_of_not_dom + theorem part.not_none_dom + theorem part.some_dom 2022-04-23 09:50:22 afd8a52 feat(order/hom/basic): add simp lemmas for `strict_mono.order_iso` and friends (#13606) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/order/hom/basic.lean + theorem strict_mono.coe_order_iso_of_surjective +/- def strict_mono.order_iso_of_right_inverse + theorem strict_mono.order_iso_of_surjective_self_symm_apply + theorem strict_mono.order_iso_of_surjective_symm_apply_self 2022-04-23 05:39:49 8c262da chore(analysis/normed_space/ray): golf (#13629) Golf 2 proofs ESTIMATED CHANGES Modified src/analysis/normed_space/ray.lean 2022-04-23 05:39:48 4ad7dc9 chore(algebra/ring/equiv): protect ring equiv lemmas for big operators (#13624) ESTIMATED CHANGES Modified src/algebra/ring/equiv.lean - theorem ring_equiv.map_list_prod - theorem ring_equiv.map_list_sum - theorem ring_equiv.map_multiset_prod - theorem ring_equiv.map_multiset_sum - theorem ring_equiv.map_prod - theorem ring_equiv.map_sum - theorem ring_equiv.unop_map_list_prod 2022-04-23 05:39:47 fe435de feat(algebra/algebra/basic,analysis/normed_space/basic): The zero ring is a (normed) algebra (#13618) This instance probably isn't very useful, but it's nice to have in the docs as an example of what `normed_algebra` permits. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.algebra_map_punit Modified src/analysis/normed_space/basic.lean 2022-04-23 05:39:45 0bea7a0 feat(set_theory/pgame): Lemmas about order and left/right moves (#13590) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean + theorem pgame.lt_move_right_of_le + theorem pgame.lt_of_le_move_left + theorem pgame.lt_of_move_right_le + theorem pgame.move_left_lt_of_le 2022-04-23 04:08:28 26b2d72 feat(set_theory/game/pgame): Empty instances (#13635) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean 2022-04-23 04:08:27 94f970a feat(linear_algebra/basic): add a simp lemma for comp_right (#13625) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.comp_right_apply 2022-04-23 04:08:26 b62b531 doc(analysis/normed_space/basic): Explain how to use non-unital normed algebras (#13605) [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/.E2.9C.94.20Is.20the.20zero.20algebra.20normed.3F/near/279555566) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean 2022-04-23 03:26:36 79ea30c chore(scripts): update nolints.txt (#13637) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-22 23:37:56 9923362 doc(measure_theory): add some missing `to_additive` docstrings (#13456) ESTIMATED CHANGES Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/group/integration.lean Modified src/measure_theory/group/measure.lean 2022-04-22 22:31:59 976c544 feat(algebra/order/archimedean): Comparing with rationals determines the order (#13602) In a linear ordered field, if `q < x → q ≤ y` for all `q : ℚ`, then `x ≤ y`, and similar results. ESTIMATED CHANGES Modified src/algebra/order/archimedean.lean + theorem eq_of_forall_lt_rat_iff_lt + theorem eq_of_forall_rat_lt_iff_lt + theorem le_of_forall_lt_rat_imp_le + theorem le_of_forall_rat_lt_imp_le 2022-04-22 22:31:58 b98bd41 feat(topology/uniform_space/matrix): Add the uniform_space structure on matrices (#13534) ESTIMATED CHANGES Added src/topology/uniform_space/matrix.lean + theorem matrix.uniform_continuous + theorem matrix.uniformity 2022-04-22 20:06:20 4547076 chore(*): use zero_lt_two/two_ne_zero lemmas more (#13609) ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem mul_self_ne_zero + theorem zero_ne_mul_self Modified src/analysis/normed_space/star/spectrum.lean Modified src/data/nat/modeq.lean Modified src/data/nat/sqrt.lean Modified src/number_theory/fermat4.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/pythagorean_triples.lean 2022-04-22 20:06:19 9eb3858 feat(combinatorics/pigeonhole): Pigeons in linear commutative rings (#13308) Duplicate almost all the pigeonhole principle API to work in `linear_ordered_comm_ring`s. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem finset.cast_card Modified src/combinatorics/pigeonhole.lean + theorem finset.exists_card_fiber_le_of_card_le_nsmul + theorem finset.exists_card_fiber_lt_of_card_lt_nsmul + theorem finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to + theorem finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to + theorem fintype.exists_card_fiber_le_of_card_le_nsmul + theorem fintype.exists_card_fiber_lt_of_card_lt_nsmul + theorem fintype.exists_le_card_fiber_of_nsmul_le_card + theorem fintype.exists_lt_card_fiber_of_nsmul_lt_card 2022-04-22 20:06:18 7be21e0 feat(topology/algebra/group): quotient by a closed subgroup is regular (#13278) ESTIMATED CHANGES Modified src/topology/algebra/group.lean +/- theorem topological_group.t2_space 2022-04-22 20:06:16 ad3e667 feat(order/chain): Flags (#13089) Define the type of maximal chains, aka flags, of an order. ESTIMATED CHANGES Modified src/data/set/pairwise.lean + theorem reflexive.set_pairwise_iff + theorem set.pairwise_iff_of_refl Modified src/order/chain.lean + theorem flag.bot_mem + theorem flag.chain_le + theorem flag.chain_lt + theorem flag.coe_mk + theorem flag.ext + theorem flag.mem_coe_iff + theorem flag.mk_coe + theorem flag.top_mem + structure flag + theorem is_max_chain.bot_mem + theorem is_max_chain.top_mem 2022-04-22 18:15:50 9c3cb72 feat(data/int/basic): Add unit lemmas (#13565) This PR adds a few more unit lemmas, and cleans up some of the proofs. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean - theorem int.units_sq Modified src/data/int/basic.lean + theorem int.is_unit_mul_self + theorem int.is_unit_sq +/- theorem int.units_inv_eq_self + theorem int.units_sq 2022-04-22 18:15:49 695e0b7 feat(analysis/convex/strict_convex_space): Verify strict convexity from fixed scalars (#13548) Prove that `∀ x y : E, ∥x∥ ≤ 1 → ∥y∥ ≤ 1 → x ≠ y → ∥a • x + b • y∥ < 1` for **fixed** `a` and `b` is enough for `E` to be a strictly convex space. ESTIMATED CHANGES Modified src/analysis/convex/strict_convex_space.lean + theorem strict_convex_space.of_norm_add_lt + theorem strict_convex_space.of_norm_add_lt_aux 2022-04-22 18:15:48 2e83d61 feat(topology/metric_space/hausdorff_distance): Thickening the closure (#13515) `thickening δ (closure s) = thickening δ s` and other simple lemmas. Also rename `inf_edist_le_inf_edist_of_subset` to `inf_edist_anti` and make arguments to `mem_thickening_iff` implicit. ESTIMATED CHANGES Modified src/data/real/ennreal.lean Modified src/data/set/lattice.lean + theorem infi_Union + theorem supr_Union Modified src/topology/metric_space/hausdorff_distance.lean + theorem emetric.inf_edist_Union + theorem emetric.inf_edist_anti + theorem emetric.inf_edist_le_edist_add_inf_edist - theorem emetric.inf_edist_le_inf_edist_of_subset + theorem metric.cthickening_closure + theorem metric.cthickening_union + theorem metric.inf_edist_le_inf_edist_cthickening_add + theorem metric.inf_edist_le_inf_edist_thickening_add + theorem metric.mem_cthickening_iff +/- theorem metric.mem_thickening_iff + theorem metric.mem_thickening_iff_inf_edist_lt + theorem metric.thickening_Union + theorem metric.thickening_closure + theorem metric.thickening_of_nonpos + theorem metric.thickening_union 2022-04-22 15:16:45 355d68a chore(ring_theory/roots_of_unity): primitive roots are not zero (#13587) ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean 2022-04-22 15:16:44 79ac4c8 chore(data/polynomial/degree/definitions): simplify sum_fin, degree_C_le (#13564) ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.nat_degree_lt_iff_degree_lt Modified src/order/bounded_order.lean + theorem with_bot.get_or_else_bot_lt_iff 2022-04-22 15:16:42 a74df9b feat(number_theory/legendre_symbol): add file quadratic_char.lean (#13503) This adds the file `quadratic_char.lean` in `number_theory/legendre_symbol/`. This file contains (apart from some more general stuff on finite fields that is useful for what is done in the file) the definition of the quadratic character on a finite field `F` (with values in the integers) and a number of statements of properties. It also defines quadratic characters on `zmod 4` and `zmod 8` that will be useful for the supplements to the law of quadratic reciprocity. ESTIMATED CHANGES Modified src/algebra/parity.lean + theorem is_square_zero Added src/number_theory/legendre_symbol/quadratic_char.lean + def char.quadratic_char + theorem char.quadratic_char_dichotomy + theorem char.quadratic_char_eq_one_of_char_two + theorem char.quadratic_char_eq_pow_of_char_ne_two + theorem char.quadratic_char_eq_zero_iff + theorem char.quadratic_char_exists_neg_one + def char.quadratic_char_hom + theorem char.quadratic_char_mul + theorem char.quadratic_char_one + theorem char.quadratic_char_one_iff_is_square + theorem char.quadratic_char_sq_one' + theorem char.quadratic_char_sq_one + theorem char.quadratic_char_sum_zero + theorem char.quadratic_char_zero + theorem finite_field.exists_nonsquare + theorem finite_field.is_square_iff + theorem finite_field.is_square_of_char_two + theorem finite_field.neg_one_ne_one_of_char_ne_two + theorem finite_field.odd_card_of_char_ne_two + theorem finite_field.pow_dichotomy + theorem finite_field.unit_is_sqare_iff + theorem is_square_of_char_two' + def zmod.χ₄ + def zmod.χ₈' + def zmod.χ₈ 2022-04-22 12:15:36 631890b chore(data/rat/basic): tidy some proofs (#13603) ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.mk_ne_zero 2022-04-22 12:15:35 f7dac5e feat(logic/basic): add `auto_param.out` and `opt_param.out` (#13599) ESTIMATED CHANGES Modified src/logic/basic.lean + def auto_param.out + def opt_param.out 2022-04-22 12:15:34 6729cca feat(set_theory/game/pgame): simp + private (#13596) ESTIMATED CHANGES Modified src/set_theory/game/pgame.lean +/- theorem pgame.not_le - theorem pgame.not_le_lt +/- theorem pgame.not_lt 2022-04-22 12:15:32 62205c2 refactor(data/nat/factorization): Infer arguments (#13595) ESTIMATED CHANGES Modified src/data/nat/factorization.lean +/- theorem nat.dvd_iff_div_factorization_eq_tsub +/- theorem nat.factorization_eq_zero_of_non_prime 2022-04-22 11:41:15 9abfff3 chore(analysis/inner_product_space/lax_milgram): tidy some proofs (#13604) ESTIMATED CHANGES Modified src/analysis/inner_product_space/lax_milgram.lean 2022-04-22 08:34:36 3d24b09 feat(algebra/ring/basic): define non-unital ring homs (#13430) This defines a new bundled hom type and associated class for non-unital (even non-associative) (semi)rings. The associated notation introduced for these homs is `α →ₙ+* β` to parallel the `ring_hom` notation `α →+* β`, where `ₙ` stands for "non-unital". ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem non_unital_ring_hom.cancel_left + theorem non_unital_ring_hom.cancel_right + theorem non_unital_ring_hom.coe_add_monoid_hom_id + theorem non_unital_ring_hom.coe_add_monoid_hom_injective + theorem non_unital_ring_hom.coe_add_monoid_hom_mk + theorem non_unital_ring_hom.coe_coe + theorem non_unital_ring_hom.coe_comp + theorem non_unital_ring_hom.coe_comp_add_monoid_hom + theorem non_unital_ring_hom.coe_comp_mul_hom + theorem non_unital_ring_hom.coe_mk + theorem non_unital_ring_hom.coe_mul + theorem non_unital_ring_hom.coe_mul_hom_id + theorem non_unital_ring_hom.coe_mul_hom_injective + theorem non_unital_ring_hom.coe_mul_hom_mk + theorem non_unital_ring_hom.coe_one + theorem non_unital_ring_hom.coe_to_add_monoid_hom + theorem non_unital_ring_hom.coe_to_mul_hom + theorem non_unital_ring_hom.coe_zero + def non_unital_ring_hom.comp + theorem non_unital_ring_hom.comp_apply + theorem non_unital_ring_hom.comp_assoc + theorem non_unital_ring_hom.comp_id + theorem non_unital_ring_hom.comp_zero + theorem non_unital_ring_hom.ext + theorem non_unital_ring_hom.ext_iff + theorem non_unital_ring_hom.id_apply + theorem non_unital_ring_hom.id_comp + theorem non_unital_ring_hom.mk_coe + theorem non_unital_ring_hom.mul_def + theorem non_unital_ring_hom.one_def + theorem non_unital_ring_hom.to_fun_eq_coe + theorem non_unital_ring_hom.zero_apply + theorem non_unital_ring_hom.zero_comp + structure non_unital_ring_hom 2022-04-22 06:47:42 394dec3 feat(order/filter/small_sets): define the filter of small sets (#13467) * Main author is @PatrickMassot * From the sphere eversion project * Required for convolutions Co-authored by: Patrick Massot ESTIMATED CHANGES Added src/order/filter/small_sets.lean + theorem filter.has_basis.small_sets + theorem filter.has_basis_small_sets + def filter.small_sets + theorem filter.small_sets_eq_generate + theorem filter.tendsto_small_sets_iff 2022-04-22 06:47:41 9db5916 fix(data/fintype/basic): fix `fintype_of_option_equiv` (#13466) A type is a `fintype` if its successor (using `option`) is a `fintype` This fixes an error introduced in #13086. ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- def fintype_of_option_equiv 2022-04-22 06:47:40 0d77f29 feat(analysis/calculus/specific_functions): define normed bump functions (#13463) * Normed bump functions have integral 1 w.r.t. the specified measure. * Also add a few more properties of bump functions, including its smoothness in all arguments (including midpoint and the two radii). * From the sphere eversion project * Required for convolutions ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean + theorem cont_diff.cont_diff_bump + theorem cont_diff_bump_of_inner.cont_diff_normed + theorem cont_diff_bump_of_inner.continuous_normed + theorem cont_diff_bump_of_inner.has_compact_support_normed + theorem cont_diff_bump_of_inner.integral_normed + theorem cont_diff_bump_of_inner.integral_normed_smul + theorem cont_diff_bump_of_inner.integral_pos + theorem cont_diff_bump_of_inner.nonneg' + theorem cont_diff_bump_of_inner.nonneg_normed + theorem cont_diff_bump_of_inner.normed_def + theorem cont_diff_bump_of_inner.normed_neg + theorem cont_diff_bump_of_inner.normed_sub + theorem cont_diff_bump_of_inner.support_normed_eq + theorem cont_diff_bump_of_inner.tsupport_eq + theorem cont_diff_bump_of_inner.tsupport_normed_eq Modified src/analysis/normed/group/basic.lean + theorem dist_self_sub_left + theorem dist_self_sub_right Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.div_const Modified src/order/cover.lean + theorem covby.Iio_eq + theorem covby.Ioi_eq Modified src/topology/algebra/order/basic.lean + theorem continuous_at.eventually_lt + theorem tendsto.eventually_lt 2022-04-22 06:47:39 06a6044 feat(analysis/normed_space/exponential): Weaken typeclass requirements (#13444) This allows the exponential to be defined independently of a choice of norm. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/formal_multilinear_series.lean +/- theorem formal_multilinear_series.remove_zero_coeff_succ +/- theorem formal_multilinear_series.remove_zero_coeff_zero +/- theorem formal_multilinear_series.remove_zero_of_pos +/- def formal_multilinear_series Modified src/analysis/normed_space/exponential.lean +/- theorem exp_eq_tsum_field +/- theorem exp_series_apply_eq_field' +/- theorem exp_series_apply_eq_field +/- theorem exp_series_sum_eq_field +/- theorem exp_zero Modified src/analysis/normed_space/multilinear.lean 2022-04-22 04:34:08 2b902eb chore(scripts): update nolints.txt (#13597) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-22 04:34:07 79bc6ad feat(data/mv_polynomial/equiv): API for `mv_polynomial.fin_succ_equiv` (#10812) This PR provides API for `mv_polynomial.fin_succ_equiv`: coefficients, degree, coefficientes of coefficients, degree_of of coefficients, etc. To state and prove these lemmas I had to define `cons` and `tail` for maps `fin (n+1) →₀ M` and prove the usual properties for these. I'm not sure if this is necessary or the correct approach to do this. ESTIMATED CHANGES Added src/data/finsupp/fin.lean + def finsupp.cons + theorem finsupp.cons_ne_zero_iff + theorem finsupp.cons_ne_zero_of_left + theorem finsupp.cons_ne_zero_of_right + theorem finsupp.cons_succ + theorem finsupp.cons_tail + theorem finsupp.cons_zero + theorem finsupp.cons_zero_zero + def finsupp.tail + theorem finsupp.tail_apply + theorem finsupp.tail_cons Modified src/data/mv_polynomial/equiv.lean + theorem mv_polynomial.coeff_eval_eq_eval_coeff + theorem mv_polynomial.degree_fin_succ_equiv + theorem mv_polynomial.degree_of_coeff_fin_succ_equiv + theorem mv_polynomial.eval_eq_eval_mv_eval' +/- def mv_polynomial.fin_succ_equiv + theorem mv_polynomial.fin_succ_equiv_X_succ + theorem mv_polynomial.fin_succ_equiv_X_zero +/- theorem mv_polynomial.fin_succ_equiv_apply + theorem mv_polynomial.fin_succ_equiv_coeff_coeff +/- theorem mv_polynomial.fin_succ_equiv_eq + theorem mv_polynomial.fin_succ_equiv_support' + theorem mv_polynomial.fin_succ_equiv_support + theorem mv_polynomial.nat_degree_fin_succ_equiv + theorem mv_polynomial.support_coeff_fin_succ_equiv + theorem mv_polynomial.support_fin_succ_equiv_nonempty 2022-04-22 01:34:22 17d2424 feat(polynomial/cyclotomic): `eval_apply` (#13586) ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic.eval_apply 2022-04-22 01:34:21 40fc58c feat(data/quot): `quotient.out` is injective (#13584) ESTIMATED CHANGES Modified src/data/quot.lean + theorem quotient.out_injective 2022-04-22 01:34:20 821e7c8 doc(category_theory/limits/has_limits): fix two docstrings (#13581) ESTIMATED CHANGES Modified src/category_theory/limits/has_limits.lean 2022-04-22 01:34:19 7b92db7 chore(set_theory/cardinal/basic): Fix spacing (#13562) ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean 2022-04-22 01:34:17 1da12b5 fix(analysis/normed_space/basic): allow the zero ring to be a normed algebra (#13544) This replaces `norm_algebra_map_eq : ∀ x : 𝕜, ∥algebra_map 𝕜 𝕜' x∥ = ∥x∥` with `norm_smul_le : ∀ (r : 𝕜) (x : 𝕜'), ∥r • x∥ ≤ ∥r∥ * ∥x∥` in `normed_algebra`. With this change, `normed_algebra` means nothing more than "a normed module that is also an algebra", which seems to be the only notion actually used in mathlib anyway. In practice, this change really just removes any constraints on `∥1∥`. The old meaning of `[normed_algebra R A]` is now achieved with `[normed_algebra R A] [norm_one_class A]`. As a result, lemmas like `normed_algebra.norm_one_class` and `normed_algebra.nontrivial` have been removed, as they no longer make sense now that the two typeclasses are entirely orthogonal. Notably this means that the following `normed_algebra` instances hold more generally than before: * `continuous_linear_map.to_normed_algebra` * `pi.normed_algebra` * `bounded_continuous_function.normed_algebra` * `continuous_map.normed_algebra` * Instances not yet in mathlib: * Matrices under the `L1-L_inf` norm are a normed algebra even if the matrix is empty * Matrices under the frobenius norm are a normed algebra (note `∥(1 : matrix n n 𝕜')∥ = \sqrt (fintype.card n)` with that norm) This last one is the original motivation for this PR; otherwise every lemma about a matrix exponential has to case on whether the matrices are empty. It is possible that some of the `[norm_one_class A]`s added in `spectrum.lean` are unnecessary; however, the assumptions are no stronger than they were before, and I'm not interested in trying to generalize them as part of this PR. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Is.20the.20zero.20algebra.20normed.3F/near/279515954) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Modified src/analysis/normed/normed_field.lean + theorem norm_one_class.nontrivial + theorem units.nnnorm_pos - theorem units.nnorm_pos Modified src/analysis/normed_space/basic.lean +/- def algebra_map_clm +/- theorem algebra_map_clm_coe +/- theorem algebra_map_clm_to_linear_map +/- theorem algebra_map_isometry + theorem nnnorm_algebra_map' + theorem nnnorm_algebra_map - theorem nnorm_algebra_map_eq + theorem norm_algebra_map' + theorem norm_algebra_map - theorem norm_algebra_map_eq - theorem normed_algebra.nontrivial - theorem normed_algebra.norm_one - theorem normed_algebra.norm_one_class - theorem normed_algebra.zero_ne_one Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.coe_lmul_rightₗᵢ +/- theorem continuous_linear_map.coe_lmulₗᵢ +/- def continuous_linear_map.lmul_rightₗᵢ +/- def continuous_linear_map.lmulₗᵢ +/- theorem continuous_linear_map.op_norm_lmul +/- theorem continuous_linear_map.op_norm_lmul_apply + theorem continuous_linear_map.op_norm_lmul_apply_le +/- theorem continuous_linear_map.op_norm_lmul_right +/- theorem continuous_linear_map.op_norm_lmul_right_apply + theorem continuous_linear_map.op_norm_lmul_right_apply_le Modified src/analysis/normed_space/spectrum.lean +/- theorem alg_hom.continuous +/- def alg_hom.to_continuous_linear_map +/- theorem spectrum.is_bounded +/- theorem spectrum.is_compact +/- theorem spectrum.mem_resolvent_of_norm_lt +/- theorem spectrum.norm_le_norm_of_mem +/- theorem spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectral_radius +/- theorem spectrum.pow_norm_pow_one_div_tendsto_nhds_spectral_radius +/- theorem spectrum.spectral_radius_le_nnnorm +/- theorem spectrum.spectral_radius_le_pow_nnnorm_pow_one_div +/- theorem spectrum.subset_closed_ball_norm Modified src/analysis/normed_space/star/spectrum.lean +/- theorem spectral_radius_eq_nnnorm_of_self_adjoint +/- theorem spectral_radius_eq_nnnorm_of_star_normal Modified src/analysis/quaternion.lean + theorem quaternion.nnnorm_coe - theorem quaternion.nnorm_coe Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/primitive_roots.lean Modified src/ring_theory/norm.lean - theorem algebra.norm_algebra_map Modified src/ring_theory/polynomial/eisenstein.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/compact.lean 2022-04-22 01:34:16 77236cd refactor(category_theory): make has_zero_object a Prop (#13517) ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Group/zero.lean + theorem CommGroup.is_zero_of_subsingleton + theorem Group.is_zero_of_subsingleton Modified src/algebra/category/Module/basic.lean + theorem Module.is_zero_of_subsingleton Modified src/algebra/homology/augment.lean Modified src/algebra/homology/homological_complex.lean + theorem homological_complex.is_zero_zero Modified src/algebra/homology/single.lean Modified src/analysis/normed/group/SemiNormedGroup.lean + theorem SemiNormedGroup.is_zero_of_subsingleton + theorem SemiNormedGroup₁.is_zero_of_subsingleton Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/right_derived.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/functor/left_derived.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/limits/shapes/biproducts.lean - def category_theory.limits.has_zero_object_of_has_finite_biproducts Modified src/category_theory/limits/shapes/zero_morphisms.lean + theorem category_theory.functor.zero_obj - theorem category_theory.limits.has_zero_object.functor.zero_map - theorem category_theory.limits.has_zero_object.functor.zero_obj + theorem category_theory.limits.has_zero_object_of_has_initial_object - def category_theory.limits.has_zero_object_of_has_initial_object + theorem category_theory.limits.has_zero_object_of_has_terminal_object - def category_theory.limits.has_zero_object_of_has_terminal_object + theorem category_theory.limits.is_zero.map + theorem category_theory.zero_map Modified src/category_theory/limits/shapes/zero_objects.lean + theorem category_theory.functor.is_zero + theorem category_theory.functor.is_zero_iff + theorem category_theory.iso.is_zero_iff - def category_theory.limits.has_zero_object.is_zero.iso_zero - theorem category_theory.limits.has_zero_object.is_zero_zero + theorem category_theory.limits.is_zero.has_zero_object + def category_theory.limits.is_zero.iso_zero + theorem category_theory.limits.is_zero.obj + theorem category_theory.limits.is_zero_zero - theorem category_theory.limits.iso.is_zero_iff 2022-04-22 01:34:15 dced133 feat(group_theory/group_action/basic): Right multiplication satisfies the `quotient_action` axiom (#13475) This PR adds a `quotient_action` instance for right multiplication. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean 2022-04-22 01:34:14 bb9d1c5 chore(*): remove `subst` when not necessary (#13453) Where possible, this replaces `subst` with `obtain rfl` (which is equivalent to `have` and then `subst`, golfing a line). This also tidies some non-terminal `simp`s. ESTIMATED CHANGES Modified archive/imo/imo1960_q1.lean Modified src/algebra/homology/additive.lean Modified src/algebraic_geometry/ringed_space.lean Modified src/algebraic_topology/simplex_category.lean Modified src/analysis/box_integral/integrability.lean Modified src/analysis/normed/group/quotient.lean Modified src/analysis/normed_space/multilinear.lean Modified src/category_theory/category/basic.lean +/- theorem category_theory.cancel_epi Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/limits/shapes/strict_initial.lean Modified src/control/applicative.lean Modified src/control/lawful_fix.lean +/- theorem part.fix.le_f_of_mem_approx Modified src/data/buffer/parser/basic.lean Modified src/data/dfinsupp/basic.lean Modified src/data/fin/tuple/basic.lean Modified src/data/fin_enum.lean Modified src/data/hash_map.lean Modified src/data/int/basic.lean Modified src/data/list/forall2.lean Modified src/data/list/pairwise.lean Modified src/data/list/permutation.lean Modified src/data/list/sort.lean Modified src/data/multiset/pi.lean Modified src/data/nat/gcd.lean Modified src/data/nat/pow.lean Modified src/data/ordmap/ordset.lean Modified src/data/pfunctor/univariate/M.lean +/- theorem pfunctor.M.is_path_cons' +/- theorem pfunctor.M.is_path_cons Modified src/data/rat/basic.lean Modified src/data/rbtree/insert.lean Modified src/data/real/irrational.lean Modified src/data/set/basic.lean Modified src/data/set/function.lean Modified src/data/sigma/basic.lean Modified src/field_theory/adjoin.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/linear_pmap.lean Modified src/logic/relator.lean Modified src/order/complete_lattice.lean Modified src/order/order_iso_nat.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series/basic.lean Modified src/set_theory/ordinal/basic.lean Modified src/set_theory/ordinal/notation.lean Modified src/set_theory/zfc.lean +/- theorem Set.pair_inj Modified src/topology/homotopy/path.lean Modified src/topology/sets/opens.lean Modified src/topology/uniform_space/compact_separated.lean 2022-04-21 23:36:55 afb4392 feat(linear_algebra/prod): two lemmas about prod_map (#13572) ESTIMATED CHANGES Modified src/linear_algebra/prod.lean + theorem linear_map.prod_map_comp + theorem linear_map.prod_map_id + def linear_map.prod_map_monoid_hom + theorem linear_map.prod_map_mul + theorem linear_map.prod_map_one 2022-04-21 23:36:54 d444a27 feat(group_theory/transfer): Define the transfer homomorphism (#13446) This PR adds a definition of the transfer homomorphism. ESTIMATED CHANGES Added src/group_theory/transfer.lean + theorem monoid_hom.transfer_def + theorem subgroup.left_transversals.diff_inv + theorem subgroup.left_transversals.diff_mul_diff + theorem subgroup.left_transversals.diff_self + theorem subgroup.left_transversals.smul_diff_smul 2022-04-21 23:36:53 b1a1ece feat(ring_theory/valuation/valuation_subring): The order structure on valuation subrings of a field (#13429) This PR shows that for a valuation subring `R` of a field `K`, the coarsenings of `R` are in (anti)ordered bijections with the prime ideals of `R`. As a corollary, the collection of such coarsenings is totally ordered. ESTIMATED CHANGES Modified src/algebra/hom/units.lean Added src/ring_theory/localization/as_subring.lean + theorem localization.map_is_unit_of_le + def localization.map_to_fraction_ring + theorem localization.map_to_fraction_ring_apply + theorem localization.mem_range_map_to_fraction_ring_iff + theorem localization.subalgebra.mem_range_map_to_fraction_ring_iff_of_field + def localization.subalgebra.of_field + def localization.subalgebra Modified src/ring_theory/valuation/valuation_subring.lean + theorem valuation_subring.add_mem + def valuation_subring.ideal_of_le + theorem valuation_subring.ideal_of_le_le_of_le + theorem valuation_subring.ideal_of_le_of_prime + def valuation_subring.inclusion + theorem valuation_subring.le_of_prime + def valuation_subring.map_of_le + theorem valuation_subring.map_of_le_comp_valuation + theorem valuation_subring.map_of_le_valuation_apply + theorem valuation_subring.mem_of_subring +/- theorem valuation_subring.mem_of_valuation_le_one + theorem valuation_subring.monotone_map_of_le + theorem valuation_subring.mul_mem + theorem valuation_subring.neg_mem + def valuation_subring.of_le + def valuation_subring.of_prime + theorem valuation_subring.of_prime_ideal_of_le + theorem valuation_subring.of_prime_le_of_le + theorem valuation_subring.of_prime_valuation_eq_one_iff_mem_prime_compl + def valuation_subring.of_subring + theorem valuation_subring.one_mem + def valuation_subring.prime_spectrum_equiv + def valuation_subring.prime_spectrum_order_equiv + def valuation_subring.subtype +/- def valuation_subring.valuation + theorem valuation_subring.valuation_eq_one_iff + theorem valuation_subring.valuation_lt_one_iff + theorem valuation_subring.valuation_lt_one_or_eq_one + theorem valuation_subring.valuation_unit + def valuation_subring.value_group + theorem valuation_subring.zero_mem 2022-04-21 23:36:51 1e76b9e feat(topology/constructions): more convenient lemmas (#13423) * Define `continuous.fst'` and friends and `continuous.comp₂` and friends for convenience (and to help with elaborator issues) * Cleanup in `topology/constructions` * Define `set.preimage_inl_image_inr` and `set.preimage_inr_image_inl` and prove the `range` versions in terms of these. This required reordering some lemmas (moving general lemmas about `range` above the lemmas of interactions with `range` and specific functions). * From the sphere eversion project ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.preimage_inl_image_inr + theorem set.preimage_inr_image_inl +/- theorem set.range_const_subset Modified src/topology/constructions.lean + theorem continuous.comp₂ + theorem continuous.comp₃ + theorem continuous.comp₄ + theorem continuous.fst' +/- theorem continuous.prod.mk + theorem continuous.prod.mk_left + theorem continuous.snd' + theorem continuous_at.fst'' + theorem continuous_at.fst' + theorem continuous_at.snd'' + theorem continuous_at.snd' +/- theorem embedding_graph 2022-04-21 23:36:50 63ee558 feat(algebra/big_operators): split products and sums over fin (a+b) (#13291) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_on_sum Modified src/algebra/big_operators/fin.lean + theorem fin.prod_congr' + theorem fin.prod_trunc + theorem fin.prod_univ_add 2022-04-21 23:36:49 4d7683b feat(group_theory/torsion): torsion-free groups and quotients by torsion subgroups (#13173) ESTIMATED CHANGES Modified src/group_theory/torsion.lean + theorem is_torsion.not_torsion_free + theorem is_torsion_free.not_torsion + theorem is_torsion_free.prod + theorem is_torsion_free.quotient_torsion + theorem is_torsion_free.subgroup + def monoid.is_torsion_free + theorem monoid.not_is_torsion_free_iff + theorem monoid.not_is_torsion_iff 2022-04-21 23:36:48 e728cfd feat(order/grade): Graded orders (#11308) Define graded orders. To be the most general, we use `is_min`/`is_max` rather than `order_bot`/`order_top`. A grade is a function that respects the covering relation and eventually minimality/maximality. ESTIMATED CHANGES Modified docs/references.bib Modified src/data/fin/basic.lean + theorem fin.coe_strict_mono Modified src/data/int/basic.lean + theorem int.coe_nat_strict_mono Modified src/data/int/succ_pred.lean + theorem nat.cast_int_covby_iff Modified src/data/nat/succ_pred.lean + theorem fin.coe_covby_iff Added src/order/grade.lean + theorem covby_iff_lt_covby_grade + def grade + theorem grade_bot + def grade_bounded_order.lift_left + def grade_bounded_order.lift_right + theorem grade_covby_grade_iff + theorem grade_eq_grade_iff + theorem grade_injective + theorem grade_le_grade_iff + theorem grade_lt_grade_iff + def grade_max_order.lift_left + def grade_max_order.lift_right + def grade_min_order.fin_to_nat + def grade_min_order.lift_left + def grade_min_order.lift_right + theorem grade_mono + theorem grade_ne_grade_iff + theorem grade_of_dual + def grade_order.fin_to_nat + def grade_order.lift_left + def grade_order.lift_right + theorem grade_self + theorem grade_strict_mono + theorem grade_to_dual + theorem grade_top + theorem is_max_grade_iff + theorem is_min_grade_iff 2022-04-21 23:36:46 8110ab9 feat(number_theory/modular): fundamental domain part 2 (#8985) This completes the argument that the standard open domain `{z : |z|>1, |\Re(z)|<1/2}` is a fundamental domain for the action of `SL(2,\Z)` on `\H`. The first PR (#8611) showed that every point in the upper half plane has a representative inside its closure, and here we show that representatives in the open domain are unique. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem pow_four_le_pow_two_of_pow_two_le Modified src/algebra/order/group.lean + theorem abs_add' Modified src/analysis/complex/upper_half_plane.lean + theorem upper_half_plane.c_mul_im_sq_le_norm_sq_denom Modified src/data/int/basic.lean + theorem int.eq_one_or_neg_one_of_mul_eq_one' + theorem int.eq_one_or_neg_one_of_mul_eq_one + theorem int.one_le_abs Modified src/data/int/cast.lean +/- theorem int.cast_abs + theorem int.cast_four + theorem int.cast_le_neg_one_of_neg +/- theorem int.cast_max +/- theorem int.cast_min +/- theorem int.cast_nat_abs + theorem int.cast_one_le_of_pos + theorem int.cast_three + theorem int.nneg_mul_add_sq_of_abs_le_one Modified src/number_theory/modular.lean - def modular_group.T' + theorem modular_group.abs_c_le_one + theorem modular_group.abs_two_mul_re_lt_one_of_mem_fdo + theorem modular_group.c_eq_zero + theorem modular_group.coe_S + theorem modular_group.coe_T + theorem modular_group.coe_T_inv + theorem modular_group.coe_T_zpow + theorem modular_group.coe_T_zpow_smul_eq +/- theorem modular_group.coe_smul +/- theorem modular_group.denom_apply + theorem modular_group.eq_smul_self_of_mem_fdo_mem_fdo + theorem modular_group.eq_zero_of_mem_fdo_of_T_zpow_mem_fdo + theorem modular_group.exists_eq_T_zpow_of_c_eq_zero +/- theorem modular_group.exists_max_im +/- theorem modular_group.exists_row_one_eq_and_min_re + theorem modular_group.exists_smul_mem_fd - theorem modular_group.exists_smul_mem_fundamental_domain + def modular_group.fd + def modular_group.fdo - def modular_group.fundamental_domain + theorem modular_group.g_eq_of_c_eq_one +/- theorem modular_group.im_lt_im_S_smul +/- theorem modular_group.im_smul +/- theorem modular_group.im_smul_eq_div_norm_sq - theorem modular_group.lc_row0_apply' +/- theorem modular_group.neg_smul + theorem modular_group.norm_sq_S_smul_lt_one + theorem modular_group.one_lt_norm_sq_T_zpow_smul +/- theorem modular_group.re_smul +/- theorem modular_group.smul_coe +/- theorem modular_group.smul_eq_lc_row0_add +/- theorem modular_group.tendsto_abs_re_smul +/- theorem modular_group.tendsto_norm_sq_coprime_pair + theorem modular_group.three_lt_four_mul_im_sq_of_mem_fdo 2022-04-21 20:30:58 ba556a7 chore(algebra/algebra/spectrum): lemmas about the zero ring (#13568) ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem spectrum.of_subsingleton + theorem spectrum.resolvent_set_of_subsingleton 2022-04-21 20:30:57 8145333 ci(gitpod): update leanproject version (#13567) ESTIMATED CHANGES Modified .docker/gitpod/mathlib/Dockerfile 2022-04-21 20:30:56 aeef727 chore(set_theory/ordinal/basic): Small style tweaks (#13561) ESTIMATED CHANGES Modified src/set_theory/ordinal/basic.lean +/- theorem ordinal.type_lt 2022-04-21 20:30:55 efab188 refactor(group_theory/{submonoid, subsemigroup}/basic): move `mul_mem_class` (#13559) This moves `mul_mem_class` (and `add_mem_class`) from `group_theory/submonoid/basic` to `group_theory/subsemigroup/basic` so that `subsemigroup` can be an instance. We then protect `subsemigroup.mul_mem`. In addition, we add an induction principle for binary predicates to better parallel `group_theory/submonoid/basic`. ESTIMATED CHANGES Modified src/group_theory/submonoid/basic.lean Modified src/group_theory/subsemigroup/basic.lean + theorem subsemigroup.closure_induction₂ - theorem subsemigroup.mul_mem 2022-04-21 20:30:54 afe1421 feat(data/nat/pow): add theorem `nat.pow_mod` (#13551) Add theorem that states `∀ (a b n : ℕ) : a ^ b % n = (a % n) ^ b % n`. ESTIMATED CHANGES Modified src/data/nat/pow.lean + theorem nat.pow_mod 2022-04-21 20:30:53 090e59d feat(analysis/normed_space/operator_norm): norm of `lsmul` (#13538) * From the sphere eversion project * Required for convolutions ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_lsmul + theorem continuous_linear_map.op_norm_lsmul_le 2022-04-21 20:30:51 8430aae feat(algebra/group_power/lemmas): More lemmas through `to_additive` (#13537) Use `to_additive` to generate a bunch of old `nsmul`/`zsmul` lemmas from new `pow`/`zpow` ones. Also protect `nat.nsmul_eq_mul` as it should have been. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem commute.self_zpow +/- theorem commute.zpow_left +/- theorem commute.zpow_right +/- theorem commute.zpow_self +/- theorem commute.zpow_zpow_self +/- theorem semiconj_by.zpow_right Modified src/algebra/group_power/lemmas.lean +/- theorem abs_add_eq_add_abs_iff +/- theorem abs_add_eq_add_abs_le +/- theorem abs_nsmul +/- theorem abs_zsmul +/- theorem commute.cast_int_mul_cast_int_mul +/- theorem commute.cast_int_mul_right +/- theorem commute.self_cast_int_mul +/- theorem commute.self_cast_int_mul_cast_int_mul +/- theorem commute.self_cast_nat_mul +/- theorem commute.self_cast_nat_mul_cast_nat_mul - theorem nsmul_le_nsmul_iff - theorem nsmul_lt_nsmul_iff + theorem one_lt_zpow' + theorem zpow_eq_zpow_iff' + theorem zpow_le_zpow' + theorem zpow_le_zpow + theorem zpow_le_zpow_iff' + theorem zpow_le_zpow_iff + theorem zpow_left_inj + theorem zpow_left_injective + theorem zpow_lt_zpow' + theorem zpow_lt_zpow + theorem zpow_lt_zpow_iff' + theorem zpow_lt_zpow_iff + theorem zpow_mono_left + theorem zpow_mono_right + theorem zpow_strict_mono_left + theorem zpow_strict_mono_right - theorem zsmul_eq_zsmul_iff' - theorem zsmul_le_zsmul' - theorem zsmul_le_zsmul - theorem zsmul_le_zsmul_iff' - theorem zsmul_le_zsmul_iff - theorem zsmul_lt_zsmul' - theorem zsmul_lt_zsmul - theorem zsmul_lt_zsmul_iff' - theorem zsmul_lt_zsmul_iff - theorem zsmul_mono_left - theorem zsmul_mono_right +/- theorem zsmul_one - theorem zsmul_pos - theorem zsmul_right_inj - theorem zsmul_right_injective - theorem zsmul_strict_mono_left - theorem zsmul_strict_mono_right Modified src/algebra/group_power/order.lean + theorem pow_le_pow_iff' + theorem pow_lt_pow_iff' + theorem pow_strict_mono_left Modified src/data/nat/basic.lean - theorem nat.nsmul_eq_mul Modified src/data/nat/periodic.lean 2022-04-21 20:30:50 08323cd feat(data/real/ennreal): `tsub` lemmas (#13525) Inherit lemmas about subtraction on `ℝ≥0∞` from `algebra.order.sub`. Generalize `add_le_cancellable.tsub_lt_self` in passing. New `ennreal` lemmas ESTIMATED CHANGES Modified src/algebra/order/sub.lean +/- theorem tsub_lt_self Modified src/data/real/ennreal.lean +/- theorem ennreal.add_div - theorem ennreal.add_sub_self' - theorem ennreal.add_sub_self Modified src/measure_theory/measure/regular.lean Modified src/topology/instances/ennreal.lean 2022-04-21 20:30:49 3a06179 refactor(category_theory): reverse simp lemmas about (co)forks (#13519) Makes `fork.ι` instead of `t.π.app zero` so that we avoid any unnecessary references to `walking_parallel_pair` in (co)fork homs. This induces quite a lot of changes in other files, but I think it's worth the pain. The PR also changes `fork.is_limit.mk` to avoid stating redundant morphisms. ESTIMATED CHANGES Modified src/algebra/category/Module/kernels.lean Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean + def SemiNormedGroup.fork - def SemiNormedGroup.parallel_pair_cone Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/idempotents/basic.lean Modified src/category_theory/limits/preserves/shapes/equalizers.lean Modified src/category_theory/limits/preserves/shapes/kernels.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/equalizers.lean +/- def category_theory.limits.cocone_of_split_epi + theorem category_theory.limits.cocone_of_split_epi_π +/- theorem category_theory.limits.coequalizer.π_of_eq + theorem category_theory.limits.cofork.app_one_eq_π + theorem category_theory.limits.cofork.app_zero_eq_comp_π_left + theorem category_theory.limits.cofork.app_zero_eq_comp_π_right + theorem category_theory.limits.cofork.is_colimit.π_comp_desc - theorem category_theory.limits.cofork.is_colimit.π_desc_of_π - theorem category_theory.limits.cofork.left_app_one - theorem category_theory.limits.cofork.right_app_one +/- def category_theory.limits.cofork.π - theorem category_theory.limits.cofork.π_eq_app_one +/- theorem category_theory.limits.cofork.π_of_π +/- def category_theory.limits.cone_of_split_mono + theorem category_theory.limits.cone_of_split_mono_ι + theorem category_theory.limits.epi_of_is_colimit_cofork - theorem category_theory.limits.epi_of_is_colimit_parallel_pair + theorem category_theory.limits.fork.app_one_eq_ι_comp_left + theorem category_theory.limits.fork.app_one_eq_ι_comp_right + theorem category_theory.limits.fork.app_zero_eq_ι - theorem category_theory.limits.fork.app_zero_left - theorem category_theory.limits.fork.app_zero_right +/- theorem category_theory.limits.fork.equalizer_ext + theorem category_theory.limits.fork.hom_comp_ι + theorem category_theory.limits.fork.is_limit.lift_comp_ι - theorem category_theory.limits.fork.is_limit.lift_of_ι_ι +/- def category_theory.limits.fork.ι - theorem category_theory.limits.fork.ι_eq_app_zero +/- theorem category_theory.limits.fork.ι_of_ι + theorem category_theory.limits.fork.π_comp_hom +/- theorem category_theory.limits.is_iso_colimit_cocone_parallel_pair_of_eq +/- theorem category_theory.limits.is_iso_colimit_cocone_parallel_pair_of_self +/- theorem category_theory.limits.is_iso_limit_cocone_parallel_pair_of_epi +/- theorem category_theory.limits.is_iso_limit_cone_parallel_pair_of_epi +/- theorem category_theory.limits.is_iso_limit_cone_parallel_pair_of_eq +/- theorem category_theory.limits.is_iso_limit_cone_parallel_pair_of_self + theorem category_theory.limits.mono_of_is_limit_fork - theorem category_theory.limits.mono_of_is_limit_parallel_pair Modified src/category_theory/limits/shapes/kernel_pair.lean Modified src/category_theory/limits/shapes/kernels.lean +/- def category_theory.limits.cokernel.is_colimit_cocone_zero_cocone - def category_theory.limits.cokernel.zero_cocone + def category_theory.limits.cokernel.zero_cokernel_cofork - theorem category_theory.limits.cokernel_cofork.app_zero +/- theorem category_theory.limits.cokernel_cofork.condition + theorem category_theory.limits.cokernel_cofork.π_eq_zero +/- def category_theory.limits.kernel.is_limit_cone_zero_cone - def category_theory.limits.kernel.zero_cone + def category_theory.limits.kernel.zero_kernel_fork Modified src/category_theory/limits/shapes/multiequalizer.lean +/- theorem category_theory.limits.multicofork.condition +/- theorem category_theory.limits.multicofork.snd_app_right - theorem category_theory.limits.multicofork.to_sigma_cofork_ι_app_one - theorem category_theory.limits.multicofork.to_sigma_cofork_ι_app_zero + theorem category_theory.limits.multicofork.to_sigma_cofork_π +/- theorem category_theory.limits.multicofork.π_eq_app_right + theorem category_theory.limits.multifork.app_left_eq_ι - theorem category_theory.limits.multifork.app_left_fst - theorem category_theory.limits.multifork.app_left_snd + theorem category_theory.limits.multifork.app_right_eq_ι_comp_fst + theorem category_theory.limits.multifork.app_right_eq_ι_comp_snd + theorem category_theory.limits.multifork.hom_comp_ι +/- theorem category_theory.limits.multifork.pi_condition +/- theorem category_theory.limits.multifork.to_pi_fork_π_app_zero +/- def category_theory.limits.multifork.ι - theorem category_theory.limits.multifork.ι_eq_app_left Modified src/category_theory/limits/shapes/normal_mono/equalizers.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/split_coequalizer.lean + theorem category_theory.is_split_coequalizer.as_cofork_π Modified src/category_theory/monad/coequalizer.lean + theorem category_theory.monad.beck_coequalizer_desc + theorem category_theory.monad.beck_cofork_π Modified src/category_theory/monad/monadicity.lean + theorem category_theory.monad.monadicity_internal.unit_cofork_π Modified src/category_theory/preadditive/default.lean Modified src/category_theory/sites/limits.lean Modified src/category_theory/sites/sheaf.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2022-04-21 17:29:16 b7cba57 chore(set_theory/game/*): Protect ambiguous lemmas (#13557) Protect `pgame.neg_zero` and inline `pgame.add_le_add_left` and friends into `covariant_class` instances. ESTIMATED CHANGES Modified src/set_theory/game/basic.lean - theorem game.add_le_add_left Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/pgame.lean - theorem pgame.add_le_add_left - theorem pgame.add_le_add_right - theorem pgame.add_lt_add_left - theorem pgame.add_lt_add_right - theorem pgame.neg_neg - theorem pgame.neg_zero - def pgame.relabelling.restricted: + def pgame.relabelling.restricted - theorem pgame.zero_lt_half Modified src/set_theory/surreal/basic.lean Modified src/set_theory/surreal/dyadic.lean 2022-04-21 17:29:14 b6c96ef feat(combinatorics/simple_graph/clique): Clique-free graphs (#13552) ... and the finset of cliques of a finite graph. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/clique.lean + def simple_graph.clique_finset + theorem simple_graph.clique_finset_eq_empty_iff + theorem simple_graph.clique_finset_mono + theorem simple_graph.clique_free.anti + theorem simple_graph.clique_free.mono + def simple_graph.clique_free + theorem simple_graph.clique_free_bot + theorem simple_graph.is_3_clique_iff + theorem simple_graph.is_3_clique_triple_iff + def simple_graph.is_clique - structure simple_graph.is_clique + theorem simple_graph.is_clique_bot_iff +/- theorem simple_graph.is_clique_iff +/- structure simple_graph.is_n_clique + theorem simple_graph.is_n_clique_bot_iff + theorem simple_graph.mem_clique_finset_iff Modified src/data/set/pairwise.lean + theorem set.pairwise_bot_iff 2022-04-21 17:29:13 e49ac91 feat(analysis/calculus/cont_diff): add more prod lemmas (#13521) * Add `cont_diff.fst`, `cont_diff.comp₂`, `cont_diff_prod_mk_left` and many variants. * From the sphere eversion project * Required for convolutions * PR #13423 is similar for continuity ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean +/- theorem cont_diff.comp_cont_diff_at + theorem cont_diff.comp₂ + theorem cont_diff.comp₃ +/- theorem cont_diff.cont_diff_at +/- theorem cont_diff.cont_diff_on +/- theorem cont_diff.cont_diff_within_at +/- theorem cont_diff.continuous +/- theorem cont_diff.differentiable + theorem cont_diff.fst' + theorem cont_diff.fst +/- theorem cont_diff.of_le + theorem cont_diff.of_succ + theorem cont_diff.one_of_succ + theorem cont_diff.snd' + theorem cont_diff.snd +/- theorem cont_diff_all_iff_nat + theorem cont_diff_apply + theorem cont_diff_apply_apply + theorem cont_diff_at.fst'' + theorem cont_diff_at.fst' + theorem cont_diff_at.fst + theorem cont_diff_at.snd'' + theorem cont_diff_at.snd' + theorem cont_diff_at.snd +/- theorem cont_diff_at_fst +/- theorem cont_diff_at_snd +/- theorem cont_diff_at_zero +/- theorem cont_diff_iff_cont_diff_at + theorem cont_diff_on.fst + theorem cont_diff_on.snd +/- theorem cont_diff_on_fst +/- theorem cont_diff_on_snd +/- theorem cont_diff_on_univ + theorem cont_diff_prod_mk_left + theorem cont_diff_prod_mk_right +/- theorem cont_diff_top +/- theorem cont_diff_zero Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at_prod_mk_left + theorem has_fderiv_at_prod_mk_right 2022-04-21 17:29:12 62b3333 chore(algebra/star/chsh): `repeat`ed golf (#13499) Instead of having a real Gröbner tactic, we can leverage a loop of `ring, simp` to reach a goal. ESTIMATED CHANGES Modified src/algebra/star/chsh.lean + theorem CHSH_id 2022-04-21 17:29:11 777d1ec feat(measure_theory/measure/measure_space): add some lemmas for the counting measure (#13485) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.count_apply_eq_top +/- theorem measure_theory.measure.count_apply_lt_top + theorem measure_theory.measure.count_empty + theorem measure_theory.measure.count_eq_zero_iff + theorem measure_theory.measure.count_ne_zero + theorem measure_theory.measure.count_singleton + theorem measure_theory.measure.empty_of_count_eq_zero 2022-04-21 17:29:10 6490ee3 feat(topology/instances/ennreal): Add lemmas about continuity of ennreal subtraction. (#13448) `ennreal` does not have continuous `sub`. This PR adds `ennreal.continuous_on_sub` and related lemmas, which give the continuity of the subtraction in more restricted/specialized setups. ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem ennreal.continuous_nnreal_sub + theorem ennreal.continuous_on_sub + theorem ennreal.continuous_on_sub_left + theorem ennreal.continuous_sub_left + theorem ennreal.continuous_sub_right 2022-04-21 15:20:01 91cbe46 feat(algebra/monoid_algebra/basic): lifts of (add_)monoid_algebras (#13382) We show that homomorphisms of the grading (add) monoids of (add) monoid algebras lift to ring/algebra homs of the algebras themselves. This PR is preparation for introducing Laurent polynomials (see [adomani_laurent_polynomials](https://github.com/leanprover-community/mathlib/tree/adomani_laurent_polynomials), file `data/polynomial/laurent` for a preliminary version). [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Laurent.20polynomials) ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + def add_monoid_algebra.map_domain_alg_hom + theorem add_monoid_algebra.map_domain_algebra_map + def add_monoid_algebra.map_domain_non_unital_alg_hom + def add_monoid_algebra.map_domain_ring_hom + def monoid_algebra.map_domain_alg_hom + theorem monoid_algebra.map_domain_algebra_map + def monoid_algebra.map_domain_non_unital_alg_hom + def monoid_algebra.map_domain_ring_hom +/- theorem monoid_algebra.ring_hom_ext' +/- theorem monoid_algebra.ring_hom_ext +/- def monoid_algebra.single_one_ring_hom 2022-04-21 15:19:59 8044794 feat(topology/algebra/module/basic): continuous linear maps are automatically uniformly continuous (#13276) Generalize `continuous_linear_map.uniform_continuous`, `continuous_linear_equiv.uniform_embedding` and `linear_equiv.uniform_embedding` form `normed_space`s to `uniform_add_group`s and move them to `topology/algebra/module/basic`. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_equiv.uniform_embedding +/- theorem continuous_linear_map.homothety_norm +/- theorem continuous_linear_map.op_norm_zero_iff - theorem linear_equiv.uniform_embedding +/- theorem linear_isometry.norm_to_continuous_linear_map +/- theorem linear_isometry.norm_to_continuous_linear_map_comp +/- theorem linear_map.bound_of_shell Modified src/topology/algebra/module/basic.lean Modified src/topology/uniform_space/uniform_embedding.lean + theorem equiv.uniform_embedding 2022-04-21 15:19:58 79abf67 fix(tactic/apply_rules): separate single rules and attribute names in syntax (#13227) @hrmacbeth reported an issue with `apply_rules` [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/monotonicity.2Eattr.20with.20apply_rules). It boiled down to `apply_rules` not properly distinguishing between attribute names, the names of `user_attribute` declarations, and the names of normal declarations. There's an example of using `apply_rules` with attributes in the docs: ```lean @[user_attribute] meta def mono_rules : user_attribute := { name := `mono_rules, descr := "lemmas usable to prove monotonicity" } local attribute [mono_rules] add_le_add example (a b c d : α) : a + b ≤ c + d := begin apply_rules mono_rules, -- takes action end ``` but this only worked by coincidence because the attribute name and the name of the `user_attribute` declaration were the same. With this change, expressions and names of attributes are now separated: the latter are specified after `with`. The call above becomes `apply_rules with mono_rules`. This mirrors the syntax of `simp`. Note that this feature was only used in meta code in mathlib. The example from Zulip (modified for proper syntax) still doesn't work with my change: ```lean import tactic.monotonicity variables {α : Type*} [linear_ordered_add_comm_group α] example (a b c d : α) : a + b ≤ c + d := begin apply_rules with mono, end ``` but it seems to fail because the `mono` rules cause `apply_rules` to loop -- that is, the rule set is getting applied correctly. ESTIMATED CHANGES Modified src/measure_theory/tactic.lean Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/topology/tactic.lean Modified test/apply_rules.lean 2022-04-21 15:19:56 e8b581a feat(order/countable_dense_linear_order): Relax conditions of `embedding_from_countable_to_dense` (#12928) We prove that any countable order embeds in any nontrivial dense order. We also slightly golf the rest of the file. ESTIMATED CHANGES Modified src/order/countable_dense_linear_order.lean + theorem order.embedding_from_countable_to_dense - def order.embedding_from_countable_to_dense + theorem order.iso_of_countable_dense - def order.iso_of_countable_dense 2022-04-21 12:10:04 0f9edf9 feat(data/set/[basic|prod]): make `×ˢ` bind more strongly, and define `mem.out` (#13422) * This means that `×ˢ` does not behave the same as `∪` or `∩` around `⁻¹'` or `''`, but I think that is fine. * From the sphere eversion project ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.has_mem.mem.out + theorem set.mem_set_of +/- theorem set.mem_set_of_eq +/- theorem set.nmem_set_of_eq Modified src/data/set/pointwise.lean +/- theorem set.image_div_prod +/- theorem set.image_mul_prod +/- theorem set.image_smul_prod +/- theorem set.image_vsub_prod Modified src/data/set/prod.lean +/- theorem set.fst_image_prod +/- theorem set.fst_image_prod_subset +/- theorem set.image_prod +/- theorem set.image_swap_prod +/- theorem set.mk_preimage_prod_left +/- theorem set.mk_preimage_prod_left_eq_empty +/- theorem set.mk_preimage_prod_right +/- theorem set.mk_preimage_prod_right_eq_empty +/- theorem set.preimage_swap_prod +/- theorem set.prod_eq_empty_iff +/- theorem set.prod_subset_iff +/- theorem set.snd_image_prod +/- theorem set.snd_image_prod_subset Modified src/logic/equiv/fin.lean Modified src/logic/equiv/set.lean +/- theorem equiv.prod_comm_image Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measurable_space.lean Modified src/order/filter/basic.lean Modified src/topology/uniform_space/uniform_embedding.lean 2022-04-21 12:10:02 c956647 feat(order/basic): Simple shortcut lemmas (#13421) Add convenience lemmas to make the API a bit more symmetric and easier to translate between `transitive` and `is_trans`. Also rename `_ge'` to `_le` in lemmas and fix the `is_max_` aliases. ESTIMATED CHANGES Modified src/algebra/order/floor.lean +/- theorem nat.lt_of_floor_lt Modified src/algebra/parity.lean Modified src/analysis/special_functions/pow.lean Modified src/data/real/hyperreal.lean Modified src/group_theory/subgroup/basic.lean Modified src/order/basic.lean +/- theorem eq.not_gt +/- theorem eq.not_lt - theorem eq.trans_le +/- theorem ge_antisymm +/- theorem ge_iff_le +/- theorem gt_iff_lt - theorem has_le.le.trans_eq + theorem le_of_eq_of_le' + theorem le_of_eq_of_le + theorem le_of_le_of_eq' + theorem le_of_le_of_eq +/- theorem le_rfl + theorem le_trans' - theorem lt_iff_not_ge' + theorem lt_iff_not_le + theorem lt_of_eq_of_lt' + theorem lt_of_eq_of_lt + theorem lt_of_le_of_lt' + theorem lt_of_le_of_ne' + theorem lt_of_lt_of_eq' + theorem lt_of_lt_of_eq + theorem lt_of_lt_of_le' - theorem lt_of_not_ge' + theorem lt_of_not_le +/- theorem lt_self_iff_false + theorem lt_trans' + theorem ne.lt_of_le' + theorem ne.lt_of_le Modified src/order/bounded.lean Modified src/order/bounded_order.lean Modified src/order/rel_classes.lean + theorem of_eq + theorem transitive_ge + theorem transitive_gt + theorem transitive_le + theorem transitive_lt + theorem transitive_of_trans Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/basic.lean Modified test/finish4.lean 2022-04-21 12:10:00 22c4291 chore(number_theory/dioph): Cleanup (#13403) Clean up, including: * Move prerequisites to the correct files * Make equalities in `poly` operations defeq * Remove defeq abuse around `set` * Slightly golf proofs by tweaking explicitness of lemma arguments Renames ESTIMATED CHANGES Modified src/control/traversable/instances.lean Modified src/data/int/basic.lean + theorem int.eq_nat_abs_iff_mul_eq_zero Modified src/data/list/basic.lean + theorem list.all₂.imp + theorem list.all₂_cons + theorem list.all₂_iff_forall + theorem list.all₂_map_iff Modified src/data/list/defs.lean + def list.all₂ Modified src/data/option/basic.lean + def option.cons + theorem option.cons_none_some Modified src/number_theory/dioph.lean +/- theorem dioph.abs_poly_dioph +/- theorem dioph.add_dioph - theorem dioph.and_dioph +/- theorem dioph.dioph_comp2 +/- theorem dioph.dioph_comp +/- def dioph.dioph_fn +/- theorem dioph.dioph_fn_comp2 +/- theorem dioph.dioph_fn_comp +/- theorem dioph.dioph_fn_compn +/- theorem dioph.dioph_fn_vec +/- theorem dioph.dioph_fn_vec_comp1 + theorem dioph.dioph_list.all₂ - theorem dioph.dioph_list_all +/- def dioph.dioph_pfun +/- theorem dioph.dioph_pfun_vec +/- theorem dioph.div_dioph +/- theorem dioph.dvd_dioph +/- theorem dioph.eq_dioph +/- theorem dioph.ex1_dioph +/- theorem dioph.ex_dioph +/- theorem dioph.ext +/- theorem dioph.inject_dummies + theorem dioph.inter +/- theorem dioph.le_dioph +/- theorem dioph.lt_dioph +/- theorem dioph.mod_dioph +/- theorem dioph.modeq_dioph +/- theorem dioph.mul_dioph +/- theorem dioph.ne_dioph +/- theorem dioph.of_no_dummies - theorem dioph.or_dioph +/- theorem dioph.pell_dioph +/- theorem dioph.pow_dioph +/- theorem dioph.proj_dioph +/- theorem dioph.proj_dioph_of_nat +/- theorem dioph.reindex_dioph +/- theorem dioph.reindex_dioph_fn +/- theorem dioph.sub_dioph + theorem dioph.union +/- theorem dioph.xn_dioph - theorem int.eq_nat_abs_iff_mul + theorem is_poly.add + theorem is_poly.neg +/- inductive is_poly - theorem list_all.imp - def list_all - theorem list_all_congr - theorem list_all_cons - theorem list_all_iff_forall - theorem list_all_map - def option.cons - theorem option.cons_head_tail - def poly.add + theorem poly.add_apply - theorem poly.add_eval + theorem poly.coe_add + theorem poly.coe_mul + theorem poly.coe_neg + theorem poly.coe_one + theorem poly.coe_sub + theorem poly.coe_zero + theorem poly.const_apply - theorem poly.const_eval +/- theorem poly.ext - theorem poly.isp + def poly.map + theorem poly.map_apply - def poly.mul + theorem poly.mul_apply - theorem poly.mul_eval - def poly.neg + theorem poly.neg_apply - theorem poly.neg_eval - def poly.one + theorem poly.one_apply - theorem poly.one_eval + theorem poly.proj_apply - theorem poly.proj_eval - def poly.remap - theorem poly.remap_eval - def poly.sub + theorem poly.sub_apply - theorem poly.sub_eval - def poly.subst - theorem poly.subst_eval +/- theorem poly.sumsq_eq_zero +/- theorem poly.sumsq_nonneg - def poly.zero + theorem poly.zero_apply - theorem poly.zero_eval - def sum.join 2022-04-21 12:09:59 e5f8236 feat(analysis/normed_space/exponential): ring homomorphisms are preserved by the exponential (#13402) The new results here are: * `prod.fst_exp` * `prod.snd_exp` * `exp_units_conj` * `exp_conj` * `map_exp` * `map_exp_of_mem_ball` This last lemma does all the heavy lifting, and also lets us golf `algebra_map_exp_comm`. This doesn't bother to duplicate the rest of these lemmas for the `*_of_mem_ball` version, since the proofs are trivial and those lemmas probably wouldn't be used. This also generalizes some of the lemmas about infinite sums to work with `add_monoid_hom_class`. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean + theorem exp_conj' + theorem exp_conj + theorem exp_smul + theorem exp_units_conj' + theorem exp_units_conj + theorem map_exp + theorem map_exp_of_mem_ball + theorem prod.fst_exp + theorem prod.snd_exp Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean 2022-04-21 12:09:58 0821eef feat(algebraic_geometry/projective_spectrum): degree zero part of a localized ring (#13398) If we have a graded ring A and some element f of A, the the localised ring A away from f has a degree zero part. This construction is useful because proj locally is spec of degree zero part of some localised ring. Perhaps this ring belongs to some other file or different name, suggestions are very welcome ESTIMATED CHANGES Added src/algebraic_geometry/projective_spectrum/scheme.lean + def algebraic_geometry.degree_zero_part.deg + theorem algebraic_geometry.degree_zero_part.eq + theorem algebraic_geometry.degree_zero_part.mul_val + def algebraic_geometry.degree_zero_part.num + theorem algebraic_geometry.degree_zero_part.num_mem + def algebraic_geometry.degree_zero_part 2022-04-21 12:09:57 f1091b3 feat(set_theory/cardinal): A set of cardinals is small iff it's bounded (#13373) We move `mk_subtype_le` and `mk_set_le` earlier within the file in order to better accomodate for the new result, `bdd_above_iff_small`. We need this result right above the `Sup` stuff, as we'll make heavy use of it in a following refactor for `cardinal.sup`. ESTIMATED CHANGES Modified src/set_theory/cardinal/basic.lean + theorem cardinal.bdd_above_iff_small +/- theorem cardinal.mk_set_le Modified src/set_theory/ordinal/basic.lean 2022-04-21 12:09:56 c30131f feat(data/polynomial/{derivative, iterated_deriv}): reduce assumptions (#13368) ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean - theorem polynomial.derivative_C_mul +/- theorem polynomial.derivative_smul +/- theorem polynomial.iterate_derivative_smul Modified src/data/polynomial/iterated_deriv.lean +/- theorem polynomial.iterated_deriv_smul 2022-04-21 12:09:55 761801f feat(algebra/monoid_algebra/grading): Use the new graded_algebra API (#13360) This removes `to_grades_by` and `of_grades_by`, and prefers `graded_algebra.decompose` as the canonical spelling. This might undo some of the performance improvements in #13169, but it's not clear where to apply the analogous changes here, or whether they're really needed any more anyway, ESTIMATED CHANGES Modified src/algebra/monoid_algebra/grading.lean + def add_monoid_algebra.decompose_aux + theorem add_monoid_algebra.decompose_aux_coe + theorem add_monoid_algebra.decompose_aux_eq_decompose + theorem add_monoid_algebra.decompose_aux_single - def add_monoid_algebra.equiv_grades - def add_monoid_algebra.equiv_grades_by + theorem add_monoid_algebra.grade.decompose_single + theorem add_monoid_algebra.grades_by.decompose_single - def add_monoid_algebra.of_grades - def add_monoid_algebra.of_grades_by - theorem add_monoid_algebra.of_grades_by_comp_to_grades_by - theorem add_monoid_algebra.of_grades_by_of - theorem add_monoid_algebra.of_grades_by_to_grades_by - theorem add_monoid_algebra.of_grades_comp_to_grades - theorem add_monoid_algebra.of_grades_of - theorem add_monoid_algebra.of_grades_to_grades +/- theorem add_monoid_algebra.single_mem_grade_by - def add_monoid_algebra.to_grades - def add_monoid_algebra.to_grades_by - theorem add_monoid_algebra.to_grades_by_coe - theorem add_monoid_algebra.to_grades_by_comp_of_grades_by - theorem add_monoid_algebra.to_grades_by_of_grades_by - theorem add_monoid_algebra.to_grades_by_single' - theorem add_monoid_algebra.to_grades_by_single - theorem add_monoid_algebra.to_grades_coe - theorem add_monoid_algebra.to_grades_comp_of_grades - theorem add_monoid_algebra.to_grades_of_grades - theorem add_monoid_algebra.to_grades_single 2022-04-21 12:09:54 5c2088e feat(algebra/group/to_additive): let @[to_additive] mimic alias’s docstrings (#13330) many of our `nolint.txt` entires are due to code of this shape: @[to_additive add_foo] lemma foo := .. /- no docstring -/ alias foo <- bar attribute [to_additive add_bar] bar where now `bar` has a docstring (from `alias`), but `bar_add` does not. This PR makes `to_additive` detect that `bar` is an alias, and unless an explicit docstring is passed to `to_additive`, creates an “alias of add_foo” docstring. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/data/buffer/parser/basic.lean Modified src/tactic/alias.lean Modified test/lint_to_additive_doc.lean 2022-04-21 12:09:53 7d61199 feat(set_theory/cofinality): Basic fundamental sequences (#13326) ESTIMATED CHANGES Modified src/set_theory/cardinal/cofinality.lean + theorem ordinal.is_fundamental_sequence_id_of_le_cof + theorem ordinal.is_fundamental_sequence_succ + theorem ordinal.is_fundamental_sequence_zero 2022-04-21 12:09:51 ba455ea feat(special_functions/pow): continuity of real to complex power (#13244) Some lemmas excised from my Gamma-function project. The main result is that for a complex `s` with `re s > 0`, the function `(λ x, x ^ s : ℝ → ℂ)` is continuous on all of `ℝ`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem complex.continuous_at_cpow_const_of_re_pos + theorem complex.continuous_at_cpow_of_re_pos + theorem complex.continuous_of_real_cpow_const + theorem complex.of_real_cpow_of_nonpos Modified src/data/complex/basic.lean + theorem complex.not_lt_iff + theorem complex.not_lt_zero_iff 2022-04-21 12:09:50 cf3b996 feat(group_theory/torsion): extension closedness, and torsion scalars in modules (#13172) Co-authored by: Alex J. Best ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem is_of_fin_order.apply - theorem is_of_fin_order.quotient +/- theorem is_of_fin_order_iff_coe + theorem monoid_hom.is_of_fin_order Modified src/group_theory/torsion.lean + theorem add_monoid.is_torsion.module_of_fintype + theorem add_monoid.is_torsion.module_of_torsion +/- theorem exponent_exists.is_torsion + theorem is_torsion.extension_closed + theorem is_torsion.of_surjective - theorem is_torsion.quotient_group + theorem is_torsion.quotient_iff 2022-04-21 12:09:49 82ef19a feat(category_theory/path_category): canonical quotient of a path category (#13159) ESTIMATED CHANGES Modified src/category_theory/path_category.lean + theorem category_theory.compose_path_comp' + theorem category_theory.compose_path_id + theorem category_theory.compose_path_to_path + def category_theory.path_composition + def category_theory.paths_hom_rel + def category_theory.quotient_paths_equiv + def category_theory.quotient_paths_to + def category_theory.to_quotient_paths Modified src/category_theory/quotient.lean + theorem category_theory.quotient.comp_closure.of 2022-04-21 12:09:48 8261501 refactor(number_theory/padics/padic_norm): Switch nat and rat definitions (#12454) Switches the order in which `padic_val_nat` and `padic_val_rat` are defined. This PR has also expanded to add `padic_val_int` and some API lemmas for that. ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean +/- theorem dvd_of_one_le_padic_val_nat + theorem padic_val_int.eq_zero_of_not_dvd + theorem padic_val_int.mul + theorem padic_val_int.of_nat + theorem padic_val_int.of_ne_one_ne_zero + theorem padic_val_int.self + def padic_val_int + theorem padic_val_int_dvd + theorem padic_val_int_dvd_iff + theorem padic_val_int_mul_eq_succ + theorem padic_val_int_self + theorem padic_val_nat.eq_zero_of_not_dvd + theorem padic_val_nat.self +/- theorem padic_val_nat_def + theorem padic_val_nat_dvd_iff - theorem padic_val_nat_of_not_dvd - theorem padic_val_nat_one - theorem padic_val_nat_zero + theorem padic_val_rat.multiplicity_sub_multiplicity + theorem padic_val_rat.of_int + theorem padic_val_rat.of_int_multiplicity + theorem padic_val_rat.of_nat - theorem padic_val_rat.padic_val_rat_of_int - theorem padic_val_rat.padic_val_rat_self + theorem padic_val_rat.self - theorem padic_val_rat_def +/- theorem padic_val_rat_of_nat +/- theorem zero_le_padic_val_rat_of_nat Modified src/number_theory/padics/padic_numbers.lean 2022-04-21 11:02:58 21bbe90 feat(analysis/normed): more lemmas about the sup norm on pi types and matrices (#13536) For now we name the matrix lemmas as `matrix.norm_*` and `matrix.nnnorm_*` to match `matrix.norm_le_iff` and `matrix.nnnorm_le_iff`. We should consider renaming these in future to indicate which norm they refer to, but should probably deal with agreeing on a name in a separate PR. ESTIMATED CHANGES Modified src/analysis/matrix.lean + theorem matrix.nnnorm_col + theorem matrix.nnnorm_diagonal + theorem matrix.nnnorm_map_eq + theorem matrix.nnnorm_row + theorem matrix.nnnorm_transpose + theorem matrix.norm_col + theorem matrix.norm_diagonal + theorem matrix.norm_map_eq + theorem matrix.norm_row + theorem matrix.norm_transpose Modified src/analysis/normed/group/basic.lean + theorem pi.nnnorm_def + theorem pi.norm_def Modified src/analysis/normed/normed_field.lean Modified src/analysis/normed_space/star/matrix.lean - theorem matrix.entrywise_sup_norm_star_eq_norm + theorem matrix.nnnorm_conj_transpose + theorem matrix.norm_conj_transpose 2022-04-21 11:02:57 b87e193 fix(category_theory/monoidal): improve hygiene in coherence tactic (#13507) ESTIMATED CHANGES Modified src/category_theory/monoidal/coherence.lean 2022-04-21 11:02:56 9f22a36 feat(src/number_theory/cyclotomic/discriminant): add discr_prime_pow_ne_two (#13465) We add `discr_prime_pow_ne_two`, the discriminant of the `p^n`-th cyclotomic field. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/discriminant.lean + theorem is_cyclotomic_extension.discr_prime_pow_ne_two Modified src/number_theory/cyclotomic/primitive_roots.lean + theorem is_primitive_root.pow_sub_one_norm_prime_pow_of_one_le 2022-04-21 08:48:23 16ecb3d chore(algebra/group/type_tags): missing simp lemmas (#13553) To have `simps` generate these in an appropriate form, this inserts explicits coercions between the type synonyms. ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean +/- def add_monoid_hom.to_multiplicative'' +/- def add_monoid_hom.to_multiplicative' +/- def add_monoid_hom.to_multiplicative +/- def monoid_hom.to_additive'' +/- def monoid_hom.to_additive' +/- def monoid_hom.to_additive 2022-04-21 08:48:22 839f508 feat(measure_theory): allow measurability to prove ae_strongly_measurable (#13427) Adds `measurable.ae_strongly_measurable` to the `measurability` list ESTIMATED CHANGES Modified src/measure_theory/tactic.lean 2022-04-21 06:55:01 6012c21 refactor(algebra/hom/group): generalize a few lemmas to `monoid_hom_class` (#13447) This generalizes a few lemmas to `monoid_hom_class` from `monoid_hom`. In particular, `monoid_hom.injective_iff` has been generalized and renamed to `injective_iff_map_eq_one`. This also deletes `add_monoid_hom.injective_iff`, `ring_hom.injective_iff` and `alg_hom.injective_iff`. All of these are superseded by the generically applicable `injective_iff_map_eq_zero`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_hom.injective_iff Modified src/algebra/field/basic.lean Modified src/algebra/group/ext.lean Modified src/algebra/hom/group.lean + theorem injective_iff_map_eq_one' + theorem injective_iff_map_eq_one + theorem map_div' +/- theorem monoid_hom.eq_on_inv - theorem monoid_hom.injective_iff' - theorem monoid_hom.injective_iff - theorem monoid_hom.map_div' +/- theorem monoid_hom.map_exists_left_inv +/- theorem monoid_hom.map_exists_right_inv - theorem monoid_hom.map_mul_eq_one Modified src/algebra/module/basic.lean Modified src/algebra/ring/basic.lean - theorem ring_hom.injective_iff' - theorem ring_hom.injective_iff Modified src/algebraic_geometry/function_field.lean Modified src/algebraic_geometry/properties.lean Modified src/data/polynomial/eval.lean Modified src/data/zmod/basic.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/ratfunc.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/free_product.lean Modified src/group_theory/perm/basic.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/matrix/charpoly/coeff.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/function_field.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/dedekind_domain/integral_closure.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/polynomial/eisenstein.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/roots_of_unity.lean Modified test/import_order_timeout.lean 2022-04-21 03:36:38 e0f78ab chore(data/list/cycle): Add basic `simp` lemmas + minor golfing (#13533) ESTIMATED CHANGES Modified src/data/list/cycle.lean + theorem cycle.card_to_multiset +/- def cycle.nil +/- theorem cycle.nil_to_multiset + theorem cycle.to_finset_eq_nil + theorem cycle.to_finset_to_multiset + theorem cycle.to_multiset_eq_nil Modified src/data/multiset/basic.lean +/- theorem multiset.coe_eq_zero 2022-04-21 03:36:36 2f1a4af feat(algebra/hom/non_unital_alg): introduce notation for non-unital algebra homomorphisms (#13470) This introduces the notation `A →ₙₐ[R] B` for `non_unital_alg_hom R A B` to mirror that of `non_unital_ring_hom R S` as `R →ₙ+* S` from #13430. Here, the `ₙ` stands for "non-unital". ESTIMATED CHANGES Modified src/algebra/algebra/unitization.lean +/- def unitization.lift Modified src/algebra/free_non_unital_non_assoc_algebra.lean +/- theorem free_non_unital_non_assoc_algebra.hom_ext +/- def free_non_unital_non_assoc_algebra.lift +/- theorem free_non_unital_non_assoc_algebra.lift_comp_of +/- theorem free_non_unital_non_assoc_algebra.lift_symm_apply Modified src/algebra/hom/non_unital_alg.lean +/- def alg_hom.to_non_unital_alg_hom +/- theorem non_unital_alg_hom.coe_comp +/- theorem non_unital_alg_hom.coe_distrib_mul_action_hom_mk +/- theorem non_unital_alg_hom.coe_inverse +/- theorem non_unital_alg_hom.coe_mul_hom_mk +/- theorem non_unital_alg_hom.coe_one +/- theorem non_unital_alg_hom.coe_to_distrib_mul_action_hom +/- theorem non_unital_alg_hom.coe_to_mul_hom +/- theorem non_unital_alg_hom.coe_zero +/- def non_unital_alg_hom.comp +/- theorem non_unital_alg_hom.comp_apply +/- theorem non_unital_alg_hom.congr_fun +/- theorem non_unital_alg_hom.ext +/- theorem non_unital_alg_hom.ext_iff +/- def non_unital_alg_hom.inverse +/- theorem non_unital_alg_hom.map_add +/- theorem non_unital_alg_hom.map_mul +/- theorem non_unital_alg_hom.map_smul +/- theorem non_unital_alg_hom.map_zero +/- theorem non_unital_alg_hom.mk_coe +/- theorem non_unital_alg_hom.one_apply +/- theorem non_unital_alg_hom.to_distrib_mul_action_hom_eq_coe +/- theorem non_unital_alg_hom.to_distrib_mul_action_hom_injective +/- theorem non_unital_alg_hom.to_fun_eq_coe +/- theorem non_unital_alg_hom.to_mul_hom_eq_coe +/- theorem non_unital_alg_hom.to_mul_hom_injective +/- theorem non_unital_alg_hom.zero_apply Modified src/algebra/lie/free.lean +/- def free_lie_algebra.mk Modified src/algebra/lie/non_unital_non_assoc_algebra.lean +/- def lie_hom.to_non_unital_alg_hom Modified src/algebra/monoid_algebra/basic.lean Modified src/topology/algebra/module/character_space.lean +/- def weak_dual.character_space.to_non_unital_alg_hom Modified src/topology/continuous_function/zero_at_infty.lean 2022-04-21 01:41:41 c93b99f chore(algebra/group/defs): Declare `field_simps` attribute earlier (#13543) Declaring `field_simps` earlier make the relevant lemmas taggable as they are declared. ESTIMATED CHANGES Modified src/algebra/field/basic.lean Modified src/algebra/group/basic.lean Modified src/algebra/group/defs.lean Modified src/algebra/group_with_zero/basic.lean 2022-04-20 22:44:21 b2518be feat(analysis/normed/normed_field): add `one_le_(nn)norm_one` for nontrivial normed rings (#13556) ESTIMATED CHANGES Modified src/analysis/normed/normed_field.lean + theorem one_le_nnnorm_one + theorem one_le_norm_one 2022-04-20 22:44:20 81c8f31 refactor(analysis/calculus/cont_diff): reorder the file (#13468) * There are no functional changes in this PR (except the order of implicit arguments in some lemmas) * This PR tries to move `cont_diff.comp` above some other lemmas. In a follow-up PR I will use this to add lemmas like `cont_diff.fst` which requires `cont_diff.comp`, but after this PR we can add it near `cont_diff_fst`. * We also add `{m n : with_top ℕ}` as variables, so that we don't have to repeat this in every lemma ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean +/- theorem cont_diff.add +/- theorem cont_diff.comp +/- theorem cont_diff.comp_cont_diff_on +/- theorem cont_diff.comp_continuous_linear_map +/- theorem cont_diff.cont_diff_at +/- theorem cont_diff.cont_diff_fderiv_apply +/- theorem cont_diff.cont_diff_on +/- theorem cont_diff.cont_diff_within_at +/- theorem cont_diff.continuous +/- theorem cont_diff.continuous_deriv +/- theorem cont_diff.continuous_fderiv +/- theorem cont_diff.continuous_fderiv_apply +/- theorem cont_diff.continuous_linear_map_comp +/- theorem cont_diff.differentiable +/- theorem cont_diff.mul +/- theorem cont_diff.neg +/- theorem cont_diff.of_le +/- theorem cont_diff.pow +/- theorem cont_diff.prod +/- theorem cont_diff.prod_map +/- theorem cont_diff.smul +/- theorem cont_diff.sub +/- theorem cont_diff_add +/- theorem cont_diff_at.add +/- theorem cont_diff_at.comp +/- theorem cont_diff_at.congr_of_eventually_eq +/- theorem cont_diff_at.cont_diff_within_at +/- theorem cont_diff_at.continuous_at +/- theorem cont_diff_at.continuous_linear_map_comp +/- theorem cont_diff_at.differentiable_at +/- theorem cont_diff_at.has_strict_deriv_at +/- theorem cont_diff_at.has_strict_fderiv_at +/- theorem cont_diff_at.mul +/- theorem cont_diff_at.neg +/- theorem cont_diff_at.of_le +/- theorem cont_diff_at.pow +/- theorem cont_diff_at.prod +/- theorem cont_diff_at.smul +/- theorem cont_diff_at.sub +/- theorem cont_diff_at_const +/- theorem cont_diff_at_fst +/- theorem cont_diff_at_id +/- theorem cont_diff_at_map_inverse +/- theorem cont_diff_at_of_subsingleton +/- theorem cont_diff_at_ring_inverse +/- theorem cont_diff_at_snd +/- theorem cont_diff_const +/- theorem cont_diff_fst +/- theorem cont_diff_id +/- theorem cont_diff_iff_cont_diff_at +/- theorem cont_diff_iff_continuous_differentiable +/- theorem cont_diff_mul +/- theorem cont_diff_neg +/- theorem cont_diff_of_differentiable_iterated_fderiv +/- theorem cont_diff_of_subsingleton +/- theorem cont_diff_on.add +/- theorem cont_diff_on.comp_continuous_linear_map +/- theorem cont_diff_on.congr +/- theorem cont_diff_on.congr_mono +/- theorem cont_diff_on.cont_diff_within_at +/- theorem cont_diff_on.continuous_linear_map_comp +/- theorem cont_diff_on.continuous_on +/- theorem cont_diff_on.continuous_on_deriv_of_open +/- theorem cont_diff_on.continuous_on_deriv_within +/- theorem cont_diff_on.continuous_on_fderiv_of_open +/- theorem cont_diff_on.continuous_on_fderiv_within +/- theorem cont_diff_on.continuous_on_iterated_fderiv_within +/- theorem cont_diff_on.deriv_of_open +/- theorem cont_diff_on.deriv_within +/- theorem cont_diff_on.differentiable_on +/- theorem cont_diff_on.differentiable_on_iterated_fderiv_within +/- theorem cont_diff_on.fderiv_of_open +/- theorem cont_diff_on.fderiv_within +/- theorem cont_diff_on.ftaylor_series_within +/- theorem cont_diff_on.mono +/- theorem cont_diff_on.mul +/- theorem cont_diff_on.neg +/- theorem cont_diff_on.of_le +/- theorem cont_diff_on.pow +/- theorem cont_diff_on.prod +/- theorem cont_diff_on.smul +/- theorem cont_diff_on.sub +/- theorem cont_diff_on_congr +/- theorem cont_diff_on_const +/- theorem cont_diff_on_fst +/- theorem cont_diff_on_id +/- theorem cont_diff_on_iff_continuous_on_differentiable_on +/- theorem cont_diff_on_iff_forall_nat_le +/- theorem cont_diff_on_iff_ftaylor_series +/- theorem cont_diff_on_of_continuous_on_differentiable_on +/- theorem cont_diff_on_of_differentiable_on +/- theorem cont_diff_on_of_locally_cont_diff_on +/- theorem cont_diff_on_of_subsingleton +/- theorem cont_diff_on_snd +/- theorem cont_diff_on_univ +/- theorem cont_diff_smul +/- theorem cont_diff_snd +/- theorem cont_diff_within_at.add +/- theorem cont_diff_within_at.comp' +/- theorem cont_diff_within_at.comp_continuous_linear_map +/- theorem cont_diff_within_at.congr' +/- theorem cont_diff_within_at.congr +/- theorem cont_diff_within_at.congr_nhds +/- theorem cont_diff_within_at.congr_of_eventually_eq' +/- theorem cont_diff_within_at.congr_of_eventually_eq +/- theorem cont_diff_within_at.cont_diff_at +/- theorem cont_diff_within_at.cont_diff_on +/- theorem cont_diff_within_at.continuous_linear_map_comp +/- theorem cont_diff_within_at.continuous_within_at +/- theorem cont_diff_within_at.differentiable_within_at' +/- theorem cont_diff_within_at.differentiable_within_at +/- theorem cont_diff_within_at.mono +/- theorem cont_diff_within_at.mono_of_mem +/- theorem cont_diff_within_at.mul +/- theorem cont_diff_within_at.neg +/- theorem cont_diff_within_at.of_le +/- theorem cont_diff_within_at.pow +/- theorem cont_diff_within_at.prod +/- theorem cont_diff_within_at.smul +/- theorem cont_diff_within_at.sub +/- theorem cont_diff_within_at_congr_nhds +/- theorem cont_diff_within_at_const +/- theorem cont_diff_within_at_fst +/- theorem cont_diff_within_at_id +/- theorem cont_diff_within_at_iff_forall_nat_le +/- theorem cont_diff_within_at_inter' +/- theorem cont_diff_within_at_inter +/- theorem cont_diff_within_at_of_subsingleton +/- theorem cont_diff_within_at_snd +/- theorem cont_diff_within_at_univ +/- theorem cont_diff_zero_fun +/- theorem continuous_linear_equiv.cont_diff +/- theorem continuous_linear_equiv.cont_diff_on_comp_iff +/- theorem continuous_linear_equiv.cont_diff_within_at_comp_iff +/- theorem continuous_linear_map.cont_diff +/- theorem filter.eventually_eq.cont_diff_within_at_iff +/- theorem has_ftaylor_series_up_to.continuous +/- theorem has_ftaylor_series_up_to.differentiable +/- theorem has_ftaylor_series_up_to.has_fderiv_at +/- theorem has_ftaylor_series_up_to.has_ftaylor_series_up_to_on +/- theorem has_ftaylor_series_up_to.of_le +/- theorem has_ftaylor_series_up_to.zero_eq' +/- theorem has_ftaylor_series_up_to_on.comp_continuous_linear_map +/- theorem has_ftaylor_series_up_to_on.congr +/- theorem has_ftaylor_series_up_to_on.continuous_linear_map_comp +/- theorem has_ftaylor_series_up_to_on.continuous_on +/- theorem has_ftaylor_series_up_to_on.differentiable_at +/- theorem has_ftaylor_series_up_to_on.differentiable_on +/- theorem has_ftaylor_series_up_to_on.eq_ftaylor_series_of_unique_diff_on +/- theorem has_ftaylor_series_up_to_on.eventually_has_fderiv_at +/- theorem has_ftaylor_series_up_to_on.has_fderiv_at +/- theorem has_ftaylor_series_up_to_on.has_fderiv_within_at +/- theorem has_ftaylor_series_up_to_on.mono +/- theorem has_ftaylor_series_up_to_on.of_le +/- theorem has_ftaylor_series_up_to_on.prod +/- theorem has_ftaylor_series_up_to_on.zero_eq' +/- theorem has_ftaylor_series_up_to_on_univ_iff +/- theorem is_bounded_bilinear_map.cont_diff +/- theorem is_bounded_linear_map.cont_diff +/- theorem linear_isometry.cont_diff +/- theorem linear_isometry_equiv.cont_diff +/- theorem local_homeomorph.cont_diff_at_symm +/- theorem local_homeomorph.cont_diff_at_symm_deriv 2022-04-20 21:15:06 b86b927 move(set_theory/*): Organize in folders (#13530) Create folders `cardinal`, `ordinal` and `game`. Most files under `set_theory` belong to a least one of them. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/algebra/quaternion.lean Modified src/category_theory/limits/small_complete.lean Modified src/combinatorics/configuration.lean Modified src/computability/encoding.lean Modified src/data/W/cardinal.lean Modified src/data/nat/count.lean Modified src/data/rat/denumerable.lean Modified src/data/real/cardinality.lean Modified src/field_theory/cardinality.lean Modified src/group_theory/free_product.lean Modified src/group_theory/index.lean Modified src/group_theory/solvable.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/linear_independent.lean Modified src/measure_theory/card_measurable_space.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/model_theory/basic.lean Modified src/model_theory/encoding.lean Modified src/ring_theory/localization/cardinality.lean Renamed src/set_theory/cardinal.lean to src/set_theory/cardinal/basic.lean Renamed src/set_theory/cofinality.lean to src/set_theory/cardinal/cofinality.lean Renamed src/set_theory/continuum.lean to src/set_theory/cardinal/continuum.lean Renamed src/set_theory/cardinal_divisibility.lean to src/set_theory/cardinal/divisibility.lean Renamed src/set_theory/fincard.lean to src/set_theory/cardinal/finite.lean Renamed src/set_theory/cardinal_ordinal.lean to src/set_theory/cardinal/ordinal.lean Renamed src/set_theory/game.lean to src/set_theory/game/basic.lean Modified src/set_theory/game/nim.lean Renamed src/set_theory/pgame.lean to src/set_theory/game/pgame.lean Modified src/set_theory/game/short.lean Modified src/set_theory/game/winner.lean Renamed src/set_theory/ordinal_arithmetic.lean to src/set_theory/ordinal/arithmetic.lean Renamed src/set_theory/ordinal.lean to src/set_theory/ordinal/basic.lean Renamed src/set_theory/fixed_points.lean to src/set_theory/ordinal/fixed_point.lean Renamed src/set_theory/ordinal_notation.lean to src/set_theory/ordinal/notation.lean Renamed src/set_theory/principal.lean to src/set_theory/ordinal/principal.lean Renamed src/set_theory/ordinal_topology.lean to src/set_theory/ordinal/topology.lean Modified src/set_theory/surreal/basic.lean Modified src/topology/metric_space/emetric_paracompact.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/partition_of_unity.lean 2022-04-20 20:40:18 741d285 chore(number_theory/zsqrtd/basic): simplify le_total proof (#13555) ESTIMATED CHANGES Modified src/number_theory/zsqrtd/basic.lean 2022-04-20 18:42:11 9d6d8c2 feat(group_theory/perm/basic): Iterating a permutation is the same as taking a power (#13554) ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + theorem equiv.perm.iterate_eq_pow +/- theorem equiv.perm.zpow_apply_comm 2022-04-20 18:42:10 27a8328 feat(data/real/sqrt): `sqrt x < y ↔ x < y^2` (#13546) Prove `real.sqrt_lt_iff` and generalize `real.lt_sqrt`. ESTIMATED CHANGES Modified src/data/complex/basic.lean Modified src/data/real/sqrt.lean +/- theorem real.le_sqrt' +/- theorem real.lt_sqrt +/- theorem real.sq_lt + theorem real.sqrt_lt' + theorem real.sqrt_lt 2022-04-20 18:42:09 242d687 feat(algebra/hom/group and *): introduce `mul_hom M N` notation `M →ₙ* N` (#13526) The discussion and poll related to this new notation can be found in this [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/ring_hom.20notation.20and.20friends/near/279313301) ESTIMATED CHANGES Modified src/algebra/category/Semigroup/basic.lean +/- def Magma.of_hom +/- theorem Magma.of_hom_apply +/- def Semigroup.of_hom +/- theorem Semigroup.of_hom_apply Modified src/algebra/divisibility.lean +/- theorem mul_hom.map_dvd Modified src/algebra/free.lean +/- def free_magma.lift +/- theorem free_magma.lift_aux_unique Modified src/algebra/group/pi.lean +/- def mul_hom.single Modified src/algebra/group/prod.lean +/- theorem mul_hom.coe_prod +/- def mul_hom.coprod +/- def mul_hom.fst +/- theorem mul_hom.fst_comp_prod +/- theorem mul_hom.prod_apply +/- theorem mul_hom.prod_comp_prod_map +/- def mul_hom.prod_map +/- theorem mul_hom.prod_unique +/- def mul_hom.snd +/- theorem mul_hom.snd_comp_prod +/- def mul_mul_hom Modified src/algebra/group/with_one.lean +/- def with_one.coe_mul_hom +/- def with_one.lift +/- def with_one.map +/- theorem with_one.map_coe +/- theorem with_one.map_comp +/- theorem with_one.map_map Modified src/algebra/hom/equiv.lean +/- structure mul_equiv +/- def mul_hom.inverse Modified src/algebra/hom/group.lean +/- theorem mul_hom.coe_inj +/- theorem mul_hom.ext +/- theorem mul_hom.ext_iff +/- def mul_hom.id +/- theorem mul_hom.to_fun_eq_coe Modified src/algebra/hom/non_unital_alg.lean Modified src/algebra/monoid_algebra/basic.lean +/- def add_monoid_algebra.of_magma +/- def monoid_algebra.of_magma Modified src/algebra/order/absolute_value.lean Modified src/data/fintype/basic.lean Modified src/data/set/pointwise.lean +/- def set.singleton_mul_hom Modified src/group_theory/group_action/prod.lean Modified src/group_theory/subsemigroup/basic.lean +/- def mul_hom.eq_mlocus +/- theorem mul_hom.eq_of_eq_on_mdense +/- theorem mul_hom.eq_of_eq_on_mtop +/- theorem mul_hom.eq_on_mclosure Modified src/tactic/simps.lean Modified src/topology/algebra/group.lean +/- def nhds_mul_hom Modified src/topology/continuous_function/zero_at_infty.lean 2022-04-20 17:09:57 7bfaa5c feat(group_theory/schreier): Schreier's lemma in terms of `group.fg` and `group.rank` (#13361) This PR adds statements of Schreier's lemma in terms of `group.fg` and `group.rank`. ESTIMATED CHANGES Modified src/group_theory/schreier.lean + theorem subgroup.exists_finset_card_le_mul + theorem subgroup.fg_of_index_ne_zero + theorem subgroup.rank_le_index_mul_rank 2022-04-20 17:09:56 b0805a5 feat(linear_algebra/trace): dual_tensor_hom is an equivalence + basis-free characterization of the trace (#10372) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.single_smul + theorem finsupp.sum_univ_single' + theorem finsupp.sum_univ_single Modified src/data/matrix/basis.lean + theorem matrix.std_basis_matrix.diag_same Modified src/linear_algebra/contraction.lean + theorem dual_tensor_hom_equiv_of_basis_to_linear_map + theorem to_matrix_dual_tensor_hom Modified src/linear_algebra/dual.lean + theorem basis.sum_dual_apply_smul_coord Modified src/linear_algebra/tensor_product_basis.lean + theorem basis.tensor_product_apply' + theorem basis.tensor_product_apply Modified src/linear_algebra/trace.lean + theorem linear_map.trace_eq_contract' + theorem linear_map.trace_eq_contract + theorem linear_map.trace_eq_contract_of_basis' + theorem linear_map.trace_eq_contract_of_basis Modified src/representation_theory/basic.lean +/- theorem representation.char_one 2022-04-20 16:01:13 311ca72 feat(order/filter/basic): allow functions between different types in lemmas about [co]map by a constant function (#13542) ESTIMATED CHANGES Modified src/order/filter/basic.lean +/- theorem filter.comap_const_of_mem +/- theorem filter.comap_const_of_not_mem +/- theorem filter.map_const 2022-04-20 14:05:05 d79f6f3 feat(data/finset/basic): simp `to_finset_eq_empty` (#13531) ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem multiset.to_finset_eq_empty 2022-04-20 12:56:15 8ba7df8 feat(topology/algebra/algebra): ℚ-scalar multiplication is continuous (#13458) ESTIMATED CHANGES Modified src/topology/algebra/algebra.lean 2022-04-20 10:38:26 a3a166b chore(model_theory/encoding): Improve the encoding of terms (#13532) Makes it so that the encoding of terms no longer requires the assumption `inhabited (L.term A)`. Adjusts following lemmas to use the `encoding` API more directly. ESTIMATED CHANGES Modified src/model_theory/encoding.lean +/- theorem first_order.language.term.card_le +/- def first_order.language.term.list_decode +/- theorem first_order.language.term.list_decode_encode_list Modified src/model_theory/substructures.lean 2022-04-20 10:38:25 d9a8d6e feat(topology/separation): Finite sets in T2 spaces (#12845) We prove the following theorem: given a finite set in a T2 space, one can choose an open set around each point so that these are pairwise disjoint. ESTIMATED CHANGES Modified src/topology/separation.lean + theorem t2_separation_finset 2022-04-20 10:04:20 8d351dc feat(analysis/inner_product_space/gram_schmidt_ortho): Gram-Schmidt Orthogonalization and Orthonormalization (#12857) Formalize Gram-Schmidt Orthogonalization and Orthonormalization ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/analysis/inner_product_space/gram_schmidt_ortho.lean + theorem gram_schmidt_def' + theorem gram_schmidt_def + theorem gram_schmidt_ne_zero' + theorem gram_schmidt_ne_zero + theorem gram_schmidt_normed_unit_length' + theorem gram_schmidt_normed_unit_length + theorem gram_schmidt_orthogonal + theorem gram_schmidt_orthonormal + theorem gram_schmidt_pairwise_orthogonal + theorem gram_schmidt_zero + theorem span_gram_schmidt 2022-04-20 08:56:47 92f6eb6 chore(algebra/big_operators/fin): golf finset.prod_range (#13535) ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean 2022-04-19 23:26:34 71b470f chore(analysis/normed_space/star): make an argument explicit (#13523) ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean +/- theorem nnnorm_star Modified src/analysis/normed_space/star/matrix.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/zero_at_infty.lean 2022-04-19 20:26:49 5038a4a feat(*): `op_op_op_comm` lemmas (#13528) A handful of lemmas of the form `op (op a b) (op c d) = op (op a c) (op b d)`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem div_div_div_comm Modified src/algebra/group_with_zero/basic.lean + theorem div_div_div_comm₀ Modified src/group_theory/group_action/defs.lean + theorem smul_smul_smul_comm Modified src/order/symm_diff.lean + theorem symm_diff_left_comm + theorem symm_diff_right_comm + theorem symm_diff_symm_diff_symm_diff_comm 2022-04-19 20:26:48 cf5aea0 chore(data/real/nnreal): add commuted version of `nnreal.mul_finset_sup` (#13512) Also make the argument explicit ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.finset_sup_mul +/- theorem nnreal.mul_finset_sup + theorem nnreal.sup_mul 2022-04-19 20:26:47 094b1f5 chore(*/matrix): order `m` and `n` alphabetically (#13510) In a few places this also reorders `(n) [fintype n] (m) [fintype m]` to `(m n) [fintype m] [fintype n]` which seems to be where we prefer to put typeclasses. ESTIMATED CHANGES Modified src/analysis/matrix.lean +/- theorem matrix.nnnorm_entry_le_entrywise_sup_nnorm +/- theorem matrix.nnnorm_le_iff +/- theorem matrix.nnnorm_lt_iff +/- theorem matrix.norm_entry_le_entrywise_sup_norm +/- theorem matrix.norm_le_iff +/- theorem matrix.norm_lt_iff Modified src/data/matrix/basic.lean +/- theorem matrix.map_update_column +/- theorem matrix.map_update_row +/- theorem matrix.minor_mul_transpose_minor +/- def matrix.update_column +/- theorem matrix.update_column_apply +/- theorem matrix.update_column_conj_transpose +/- theorem matrix.update_column_ne +/- theorem matrix.update_column_self +/- theorem matrix.update_column_subsingleton +/- theorem matrix.update_column_transpose +/- def matrix.update_row +/- theorem matrix.update_row_apply +/- theorem matrix.update_row_conj_transpose +/- theorem matrix.update_row_ne +/- theorem matrix.update_row_self +/- theorem matrix.update_row_subsingleton +/- theorem matrix.update_row_transpose +/- theorem matrix.vec_mul_smul Modified src/data/matrix/basis.lean +/- theorem matrix.matrix_eq_sum_std_basis Modified src/linear_algebra/free_module/basic.lean Modified src/linear_algebra/free_module/finite/rank.lean +/- theorem module.free.finrank_matrix Modified src/linear_algebra/free_module/rank.lean +/- theorem module.free.rank_matrix'' +/- theorem module.free.rank_matrix' +/- theorem module.free.rank_matrix Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/std_basis.lean Modified src/topology/algebra/matrix.lean +/- theorem continuous.matrix_map +/- theorem continuous.matrix_transpose 2022-04-19 19:41:21 3ac979a feat(analysis/calculus/specific_functions): trivial extra lemmas (#13516) ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean 2022-04-19 17:41:07 70759ef feat(analysis): lemmas about nnnorm and nndist (#13498) Most of these lemmas follow trivially from the `norm` versions. This is far from exhaustive. Additionally: * `nnreal.coe_supr` and `nnreal.coe_infi` are added * The old `is_primitive_root.nnnorm_eq_one` is renamed to `is_primitive_root.norm'_eq_one` as it was not about `nnnorm` at all. The unprimed name is already taken in reference to `algebra.norm`. * `parallelogram_law_with_norm_real` is removed since it's syntactically identical to `parallelogram_law_with_norm ℝ` and also not used anywhere. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.conj_cle_nnorm + theorem complex.im_clm_nnnorm + theorem complex.nndist_conj_comm + theorem complex.nndist_conj_conj + theorem complex.of_real_clm_nnnorm + theorem complex.re_clm_nnnorm Modified src/analysis/complex/roots_of_unity.lean + theorem is_primitive_root.norm'_eq_one Modified src/analysis/inner_product_space/basic.lean + theorem nnnorm_inner_le_nnnorm + theorem parallelogram_law_with_nnnorm +/- theorem parallelogram_law_with_norm - theorem parallelogram_law_with_norm_real Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/matrix.lean + theorem matrix.nnnorm_entry_le_entrywise_sup_nnorm + theorem matrix.nnnorm_le_iff + theorem matrix.nnnorm_lt_iff Modified src/analysis/normed/group/basic.lean + theorem coe_comp_nnnorm + theorem lipschitz_with_one_nnnorm + theorem nnnorm_le_add_nnnorm_add + theorem nnnorm_le_insert' + theorem nnnorm_le_insert + theorem nnnorm_le_pi_nnnorm + theorem pi_nnnorm_le_iff + theorem pi_nnnorm_lt_iff Modified src/analysis/normed/normed_field.lean + theorem finset.nnnorm_prod_le' + theorem finset.nnnorm_prod_le + theorem list.nnnorm_prod_le' + theorem list.nnnorm_prod_le + theorem units.nnorm_pos Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.nnnorm_def + theorem continuous_linear_map.op_nnnorm_comp_le Modified src/analysis/normed_space/pi_Lp.lean + theorem pi_Lp.nnnorm_eq Modified src/analysis/normed_space/star/basic.lean + theorem nnnorm_star Modified src/analysis/quaternion.lean + theorem quaternion.nnorm_coe Modified src/data/real/nnreal.lean +/- theorem nnreal.coe_Inf +/- theorem nnreal.coe_Sup + theorem nnreal.coe_image + theorem nnreal.coe_infi + theorem nnreal.coe_supr Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.nndist_coe_le_nndist + theorem bounded_continuous_function.nndist_eq + theorem bounded_continuous_function.nndist_eq_supr + theorem bounded_continuous_function.nndist_le_two_nnnorm + theorem bounded_continuous_function.nndist_set_exists + theorem bounded_continuous_function.nnnorm_coe_le_nnnorm + theorem bounded_continuous_function.nnnorm_const_eq + theorem bounded_continuous_function.nnnorm_const_le + theorem bounded_continuous_function.nnnorm_def + theorem bounded_continuous_function.nnnorm_eq_supr_nnnorm + theorem bounded_continuous_function.nnnorm_le Modified src/topology/metric_space/isometry.lean + theorem isometry.nndist_eq 2022-04-19 15:52:32 f06dca7 feat(data/int/basic): add lemma `int.abs_le_one_iff` (#13513) Also renaming `int.eq_zero_iff_abs_lt_one`. The proof is due to @Ruben-VandeVelde Discussed on Zulip [here](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Integers.20of.20norm.20at.20most.20one) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.abs_le_one_iff + theorem int.abs_lt_one_iff - theorem int.eq_zero_iff_abs_lt_one 2022-04-19 15:52:31 634eab1 feat(category_theory/limits): add characteristic predicate for zero objects (#13511) ESTIMATED CHANGES Modified src/algebra/category/Group/zero.lean Modified src/analysis/normed/group/SemiNormedGroup.lean Modified src/category_theory/closed/zero.lean Modified src/category_theory/limits/preserves/shapes/zero.lean Modified src/category_theory/limits/shapes/default.lean Renamed src/category_theory/limits/shapes/zero.lean to src/category_theory/limits/shapes/zero_morphisms.lean - theorem category_theory.limits.has_zero_object.from_zero_ext - theorem category_theory.limits.has_zero_object.to_zero_ext - def category_theory.limits.has_zero_object.zero_is_initial - def category_theory.limits.has_zero_object.zero_is_terminal - def category_theory.limits.has_zero_object.zero_iso_initial - def category_theory.limits.has_zero_object.zero_iso_is_initial - def category_theory.limits.has_zero_object.zero_iso_is_terminal - def category_theory.limits.has_zero_object.zero_iso_terminal + def category_theory.limits.is_zero.has_zero_morphisms Added src/category_theory/limits/shapes/zero_objects.lean + theorem category_theory.limits.has_zero_object.from_zero_ext + def category_theory.limits.has_zero_object.is_zero.iso_zero + theorem category_theory.limits.has_zero_object.is_zero_zero + theorem category_theory.limits.has_zero_object.to_zero_ext + def category_theory.limits.has_zero_object.zero_is_initial + def category_theory.limits.has_zero_object.zero_is_terminal + def category_theory.limits.has_zero_object.zero_iso_initial + def category_theory.limits.has_zero_object.zero_iso_is_initial + def category_theory.limits.has_zero_object.zero_iso_is_terminal + def category_theory.limits.has_zero_object.zero_iso_terminal + theorem category_theory.limits.is_zero.eq_from + theorem category_theory.limits.is_zero.eq_of_src + theorem category_theory.limits.is_zero.eq_of_tgt + theorem category_theory.limits.is_zero.eq_to + theorem category_theory.limits.is_zero.from_eq + def category_theory.limits.is_zero.iso + def category_theory.limits.is_zero.iso_is_initial + def category_theory.limits.is_zero.iso_is_terminal + theorem category_theory.limits.is_zero.of_iso + theorem category_theory.limits.is_zero.to_eq + structure category_theory.limits.is_zero + theorem category_theory.limits.iso.is_zero_iff Modified src/category_theory/simple.lean 2022-04-19 14:04:47 5dc8c1c feat(order/filter/n_ary): Add lemma equating map₂ to map on the product (#13490) Proof that map₂ is the image of the corresponding function `α × β → γ`. Discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/filter.20map.E2.82.82.20as.20map ESTIMATED CHANGES Modified src/order/filter/n_ary.lean + theorem filter.map_prod_eq_map₂' + theorem filter.map_prod_eq_map₂ 2022-04-19 14:04:46 8fa3263 fix(analysis/locally_convex/balanced_hull_core): minimize import (#13450) I'm doing this because I need to have `balanced_hull_core` before `normed_space.finite_dimensional` and this little change seems to be enough for that, but I think at some point we'll need to move lemmas so that normed_spaces come as late as possible ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean 2022-04-19 14:04:45 ba6a985 feat(order/cover): define `wcovby` (#13424) * This defines the reflexive closure of `covby`, which I call `wcovby` ("weakly covered by") * This is useful, since some results about `covby` still hold for `wcovby`. * Use `wcovby` in the proofs of the properties for `covby`. * Also define `wcovby_insert` (the motivating example, since I really want `(wcovby_insert _ _).eq_or_eq`) ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean + theorem set.ord_connected_image + theorem set.ord_connected_range Modified src/order/cover.lean +/- theorem apply_covby_apply_iff + theorem apply_wcovby_apply_iff +/- theorem covby.image +/- theorem covby.of_image + theorem covby_iff_wcovby_and_lt + theorem covby_iff_wcovby_and_ne + theorem covby_iff_wcovby_and_not_le + theorem not_wcovby_iff + theorem of_dual_wcovby_of_dual_iff + theorem set.covby_insert + theorem set.ord_connected.apply_covby_apply_iff + theorem set.ord_connected.apply_wcovby_apply_iff + theorem set.wcovby_insert + theorem to_dual_wcovby_to_dual_iff + theorem wcovby.Icc_eq + theorem wcovby.Ico_subset + theorem wcovby.Ioc_subset + theorem wcovby.Ioo_eq + theorem wcovby.covby_of_lt + theorem wcovby.covby_of_ne + theorem wcovby.covby_of_not_le + theorem wcovby.eq_or_eq + theorem wcovby.image + theorem wcovby.le + theorem wcovby.le_and_le_iff + theorem wcovby.of_image + theorem wcovby.refl + theorem wcovby.rfl + theorem wcovby.wcovby_iff_le + def wcovby + theorem wcovby_iff_covby_or_eq + theorem wcovby_iff_covby_or_le_and_le + theorem wcovby_of_eq_or_eq + theorem wcovby_of_le_of_le Modified src/order/succ_pred/basic.lean + theorem order.pred_wcovby + theorem order.wcovby_succ 2022-04-19 14:04:44 8f7e10b refactor(group_theory/group_action/big_operators): extract to a new file (#13340) `basic` is a misleading name, as `group_action.basic` imports a lot of things. For now I'm not renaming it, but I've adding a skeletal docstring. Splitting out the big operator lemmas allows access to big operators before modules and quotients. This also performs a drive-by generalization of the typeclasses on `smul_cancel_of_non_zero_divisor`. Authorship is from #1910 ESTIMATED CHANGES Modified src/algebra/hom/group_action.lean - def mul_action_hom.to_quotient - theorem mul_action_hom.to_quotient_apply Modified src/algebra/module/basic.lean Modified src/data/dfinsupp/interval.lean Modified src/data/finset/finsupp.lean Modified src/group_theory/group_action/basic.lean - theorem finset.smul_prod - theorem finset.smul_sum - theorem list.smul_prod - theorem list.smul_sum + def mul_action_hom.to_quotient + theorem mul_action_hom.to_quotient_apply - theorem multiset.smul_prod - theorem multiset.smul_sum +/- theorem smul_cancel_of_non_zero_divisor Added src/group_theory/group_action/big_operators.lean + theorem finset.smul_prod + theorem finset.smul_sum + theorem list.smul_prod + theorem list.smul_sum + theorem multiset.smul_prod + theorem multiset.smul_sum 2022-04-19 12:11:00 3e78c23 fix(algebra/hom/units): better defeq in `is_unit.lift_right` (#13508) … and fix a timeout introduced by this change and remove some extraneous parentheses there. ESTIMATED CHANGES Modified src/algebra/hom/units.lean Modified src/algebraic_geometry/structure_sheaf.lean 2022-04-19 10:05:03 5a4bae1 feat(algebra/*/basic): add trivial lemmas (#13416) These save you from having to fiddle with `mul_one` when you want to rewrite them the other way, or allow easier commutativity rewrites. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem mul_rotate' + theorem mul_rotate Modified src/algebra/ring/basic.lean + theorem add_one_mul + theorem mul_add_one + theorem mul_one_add + theorem mul_one_sub + theorem mul_sub_one + theorem one_add_mul + theorem one_sub_mul + theorem sub_one_mul 2022-04-19 08:07:49 9202b6d feat(order/succ_pred/basic): Intervals and `succ`/`pred` (#13486) Relate `order.succ`, `order.pred` and `set.Ixx`. ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean Modified src/data/set/basic.lean - theorem set.insert_inter + theorem set.insert_inter_distrib +/- theorem set.insert_inter_of_mem +/- theorem set.insert_inter_of_not_mem + theorem set.insert_union_distrib + theorem set.inter_insert_of_mem + theorem set.inter_insert_of_not_mem Modified src/data/set/intervals/basic.lean + theorem set.Ico_insert_right + theorem set.Iic_inter_Ici + theorem set.Iic_inter_Ioi + theorem set.Iio_insert + theorem set.Iio_inter_Ici + theorem set.Iio_inter_Ioi + theorem set.Ioc_insert_left + theorem set.Ioi_insert + theorem set.Ioo_insert_left + theorem set.Ioo_insert_right Modified src/data/set/intervals/ord_connected.lean Modified src/logic/basic.lean + theorem and_and_distrib_left + theorem and_and_distrib_right + theorem or_or_distrib_left + theorem or_or_distrib_right Modified src/order/succ_pred/basic.lean + theorem order.Icc_pred_left + theorem order.Icc_pred_right + theorem order.Icc_pred_right_of_not_is_min + theorem order.Icc_succ_left + theorem order.Icc_succ_left_of_not_is_max + theorem order.Icc_succ_right + theorem order.Ici_pred +/- theorem order.Ici_succ + theorem order.Ico_pred_left + theorem order.Ico_pred_right_eq_insert + theorem order.Ico_succ_left + theorem order.Ico_succ_left_of_not_is_max + theorem order.Ico_succ_right + theorem order.Ico_succ_right_eq_insert + theorem order.Ico_succ_right_of_not_is_max +/- theorem order.Iic_pred + theorem order.Iic_succ +/- theorem order.Iio_succ + theorem order.Iio_succ_eq_insert + theorem order.Ioc_pred_left + theorem order.Ioc_pred_left_of_not_is_min + theorem order.Ioc_pred_right + theorem order.Ioc_pred_right_of_not_is_min + theorem order.Ioc_succ_right +/- theorem order.Ioi_pred + theorem order.Ioi_pred_eq_insert + theorem order.Ioo_pred_left + theorem order.Ioo_pred_left_of_not_is_min + theorem order.Ioo_pred_right_eq_insert + theorem order.Ioo_succ_right + theorem order.Ioo_succ_right_eq_insert + theorem order.Ioo_succ_right_of_not_is_max - theorem order.le_pred_iff_lt_or_eq + theorem order.le_succ_iff_eq_or_le - theorem order.le_succ_iff_lt_or_eq + theorem order.lt_succ_iff_eq_or_lt + theorem order.lt_succ_iff_eq_or_lt_of_not_is_max - theorem order.lt_succ_iff_lt_or_eq + theorem order.pred_le_iff_eq_or_le + theorem order.pred_lt_iff_eq_or_lt + theorem order.pred_lt_iff_eq_or_lt_of_not_is_min - theorem order.pred_lt_iff_lt_or_eq 2022-04-19 06:50:55 d19e8cb chore(docs): don't use deprecated is_subring (#13505) ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml 2022-04-19 05:04:57 828ef48 fix(category_theory/monoidal): increase class search depth in coherence tactic (#13413) There were two places, not just one, where the class search depth needs to be increased. ESTIMATED CHANGES Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/coherence.lean 2022-04-19 03:39:47 fb44330 feat(data/matrix/block): `matrix.block_diagonal` is a ring homomorphism (#13489) This is one of the steps on the path to showing that the matrix exponential of a block diagonal matrix is a block diagonal matrix of the exponents of the blocks. As well as adding the new bundled homomorphisms, this generalizes the typeclasses in this file and tidies up the order of arguments. Finally, this protects some `map_*` lemmas to prevent clashes with the global lemmas of the same name. ESTIMATED CHANGES Modified src/data/matrix/basic.lean - theorem matrix.map_add - theorem matrix.map_sub - theorem matrix.map_zero Modified src/data/matrix/block.lean +/- def matrix.block_diagonal' +/- theorem matrix.block_diagonal'_add + def matrix.block_diagonal'_add_monoid_hom +/- theorem matrix.block_diagonal'_apply +/- theorem matrix.block_diagonal'_apply_eq +/- theorem matrix.block_diagonal'_apply_ne +/- theorem matrix.block_diagonal'_conj_transpose +/- theorem matrix.block_diagonal'_diagonal +/- theorem matrix.block_diagonal'_map +/- theorem matrix.block_diagonal'_mul +/- theorem matrix.block_diagonal'_neg + def matrix.block_diagonal'_ring_hom +/- theorem matrix.block_diagonal'_sub +/- theorem matrix.block_diagonal'_transpose +/- def matrix.block_diagonal +/- theorem matrix.block_diagonal_add + def matrix.block_diagonal_add_monoid_hom +/- theorem matrix.block_diagonal_apply +/- theorem matrix.block_diagonal_apply_eq +/- theorem matrix.block_diagonal_apply_ne +/- theorem matrix.block_diagonal_map +/- theorem matrix.block_diagonal_mul +/- theorem matrix.block_diagonal_neg + def matrix.block_diagonal_ring_hom +/- theorem matrix.block_diagonal_smul +/- theorem matrix.block_diagonal_sub +/- theorem matrix.block_diagonal_transpose +/- theorem matrix.from_blocks_add +/- theorem matrix.from_blocks_diagonal +/- theorem matrix.from_blocks_multiply +/- theorem matrix.from_blocks_one +/- theorem matrix.from_blocks_smul 2022-04-19 01:03:57 eb22ba4 chore(algebra/monoid_algebra/basic): use the homomorphism typeclasses (#13389) This replaces `mul_hom` with `mul_hom_class` and `add_hom` with `add_hom_class`. Also adds two trivial lemmas, `monoid_algebra.map_domain_one` and `add_monoid_algebra.map_domain_one`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean +/- theorem add_monoid_algebra.map_domain_mul + theorem add_monoid_algebra.map_domain_one + theorem monoid_algebra.map_domain_one 2022-04-18 20:47:04 37d02d3 chore(ring_theory/hahn_series, topology/locally_constant/algebra): add missing `non_unital_non_assoc_ring` instances (#13504) ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean Modified src/topology/locally_constant/algebra.lean 2022-04-18 19:11:39 3c20253 chore(algebra/ring/{pi, prod}): fix errors in `ring_hom` for `pi` and `prod`. (#13501) Looks like some things were incorrectly changed when copied from the corresponding `monoid_hom` files. ESTIMATED CHANGES Modified src/algebra/ring/pi.lean Modified src/algebra/ring/prod.lean +/- theorem ring_hom.prod_comp_prod_map +/- def ring_hom.prod_map 2022-04-18 19:11:38 b54591f chore(analysis/normed_space/finite_dimension): golf a proof (#13491) These `letI`s just made this proof convoluted, the instances were not needed. Without them, we don't even need the import. Similarly, the `classical` was the cause of the need for the `congr`. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean 2022-04-18 19:11:37 fd08afe chore(data/nat/factorization): golf `dvd_iff_prime_pow_dvd_dvd` (#13473) Golfing the edge-case proof added in https://github.com/leanprover-community/mathlib/pull/13316 ESTIMATED CHANGES Modified src/data/nat/factorization.lean 2022-04-18 17:14:07 d89160b feat(order/bounded_order): Strictly monotone functions preserve maximality (#13434) Prove `f a = f ⊤ ↔ a = ⊤` and `f a = f ⊥ ↔ a = ⊥` for strictly monotone/antitone functions. Also fix `is_max.eq_top` and friends and delete `eq_top_of_maximal` (which accidentally survived the last refactor). ESTIMATED CHANGES Modified src/logic/basic.lean + theorem iff.not_left + theorem iff.not_right Modified src/order/bounded_order.lean - theorem eq_top_of_maximal + theorem not_bot_lt_iff + theorem not_lt_top_iff + theorem strict_anti.apply_eq_bot_iff + theorem strict_anti.apply_eq_top_iff + theorem strict_mono.apply_eq_bot_iff + theorem strict_mono.apply_eq_top_iff Modified src/order/monotone.lean + theorem strict_anti.is_max_of_apply + theorem strict_anti.is_min_of_apply + theorem strict_mono.is_max_of_apply + theorem strict_mono.is_min_of_apply 2022-04-18 17:14:06 5c75390 feat(data/real/ennreal): Order properties of addition (#13371) Inherit algebraic order lemmas from `with_top`. Also protect `ennreal.add_lt_add_iff_left` and `ennreal.add_lt_add_iff_right`, as they should have been. ESTIMATED CHANGES Modified src/data/real/ennreal.lean - theorem ennreal.add_lt_add_iff_left - theorem ennreal.add_lt_add_iff_right - theorem ennreal.add_lt_add_left - theorem ennreal.add_lt_add_right - theorem ennreal.le_of_add_le_add_left - theorem ennreal.le_of_add_le_add_right Modified src/measure_theory/integral/lebesgue.lean Modified src/order/filter/ennreal.lean 2022-04-18 17:14:05 546618e feat(order/upper_lower): Principal upper/lower sets (#13069) Define `upper_set.Ici` and `lower_set.Iic`. Also add membership lemmas for the lattice operations. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Ici_Sup + theorem set.Ici_supr + theorem set.Ici_supr₂ + theorem set.Iic_Inf + theorem set.Iic_infi + theorem set.Iic_infi₂ Modified src/order/upper_lower.lean + theorem is_lower_set_Iic + theorem is_lower_set_Iio + theorem is_upper_set_Ici + theorem is_upper_set_Ioi + def lower_set.Iic + theorem lower_set.Iic_Inf + def lower_set.Iic_Inf_hom + theorem lower_set.Iic_Inf_hom_apply + theorem lower_set.Iic_inf + def lower_set.Iic_inf_hom + theorem lower_set.Iic_inf_hom_apply + theorem lower_set.Iic_infi + theorem lower_set.Iic_infi₂ + theorem lower_set.Iic_top + def lower_set.Iio + theorem lower_set.Iio_bot + theorem lower_set.Ioi_le_Ici + theorem lower_set.coe_Iic + theorem lower_set.coe_Iic_Inf_hom + theorem lower_set.coe_Iic_inf_hom + theorem lower_set.coe_Iio + theorem lower_set.mem_Iic_iff + theorem lower_set.mem_Iio_iff + theorem lower_set.mem_Inf_iff + theorem lower_set.mem_Sup_iff + theorem lower_set.mem_inf_iff + theorem lower_set.mem_infi_iff + theorem lower_set.mem_infi₂_iff + theorem lower_set.mem_sup_iff + theorem lower_set.mem_supr_iff + theorem lower_set.mem_supr₂_iff + theorem lower_set.mem_top + theorem lower_set.not_mem_bot + def upper_set.Ici + theorem upper_set.Ici_Sup + def upper_set.Ici_Sup_hom + theorem upper_set.Ici_Sup_hom_apply + theorem upper_set.Ici_sup + def upper_set.Ici_sup_hom + theorem upper_set.Ici_sup_hom_apply + theorem upper_set.Ici_supr + theorem upper_set.Ici_supr₂ + theorem upper_set.Ici_top + def upper_set.Ioi + theorem upper_set.Ioi_bot + theorem upper_set.Ioi_le_Ici + theorem upper_set.coe_Ici + theorem upper_set.coe_Ioi + theorem upper_set.mem_Ici_iff + theorem upper_set.mem_Inf_iff + theorem upper_set.mem_Ioi_iff + theorem upper_set.mem_Sup_iff + theorem upper_set.mem_inf_iff + theorem upper_set.mem_infi_iff + theorem upper_set.mem_infi₂_iff + theorem upper_set.mem_sup_iff + theorem upper_set.mem_supr_iff + theorem upper_set.mem_supr₂_iff + theorem upper_set.mem_top + theorem upper_set.not_mem_bot 2022-04-18 15:45:35 d790b4b feat(set_theory/cardinal): `lt_omega_of_fintype` (#13365) ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/data/W/cardinal.lean Modified src/data/mv_polynomial/cardinal.lean Modified src/data/polynomial/cardinal.lean Modified src/field_theory/is_alg_closed/classification.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/set_theory/cardinal.lean + theorem cardinal.lt_omega_of_fintype 2022-04-18 10:31:05 e18ea79 feat(number_theory/legendre_symbol/quadratic_reciprocity): replace `[fact (p % 2 = 1)]` arguments by `(p ≠ 2)` (#13474) This removes implicit arguments of the form `[fact (p % 2 = 1)]` and replaces them by explicit arguments `(hp : p ≠ 2)`. (See the short discussion on April 9 in [this topic](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Quadratic.20Hilbert.20symbol.20over.20.E2.84.9A).) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.mod_two_eq_one_iff_ne_two Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean +/- theorem zmod.eisenstein_lemma +/- theorem zmod.exists_sq_eq_prime_iff_of_mod_four_eq_one +/- theorem zmod.exists_sq_eq_two_iff +/- theorem zmod.gauss_lemma +/- theorem zmod.legendre_sym_two +/- theorem zmod.quadratic_reciprocity 2022-04-18 05:37:15 82348a6 feat(computability/partrec_code): add eval prec helpers (#11945) A few helpers to clarify the definition of `eval`. ESTIMATED CHANGES Modified src/computability/partrec_code.lean + theorem nat.partrec.code.eval_prec_succ + theorem nat.partrec.code.eval_prec_zero 2022-04-18 03:41:36 279b7f3 chore(scripts): update nolints.txt (#13493) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-17 15:18:45 e6322c6 feat(analysis/convex): golf some proofs (#13451) ESTIMATED CHANGES Modified src/algebra/order/smul.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/convex/topology.lean Modified src/data/real/cardinality.lean Modified src/data/set/intervals/image_preimage.lean - theorem set.image_inv_Ioo_0_left + theorem set.inv_Ioi + theorem set.inv_Ioo_0_left Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.homothety_mul_apply 2022-04-17 15:18:44 b90e770 feat(data/fin/tuple/nat_antidiagonal): add `list.nat.antidiagonal_tuple_pairwise_pi_lex` (#13339) This proof feels a little clumsy, but maybe that's unavoidable. ESTIMATED CHANGES Modified src/data/fin/tuple/nat_antidiagonal.lean + theorem finset.nat.antidiagonal_tuple_zero_right + theorem list.nat.antidiagonal_tuple_pairwise_pi_lex + theorem list.nat.antidiagonal_tuple_zero_right + theorem multiset.nat.antidiagonal_tuple_zero_right 2022-04-17 13:47:06 9380977 chore(algebra/big_operators/fin): moving lemmas (#13331) This PR moves lemmas about products and sums over `fin n` from `data/fintype/card.lean` to `algebra/big_operators/fin.lean`. ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean + theorem fin.prod_const + theorem fin.prod_of_fn + theorem fin.prod_univ_cast_succ + theorem fin.prod_univ_def + theorem fin.prod_univ_one + theorem fin.prod_univ_succ + theorem fin.prod_univ_succ_above + theorem fin.prod_univ_two + theorem fin.prod_univ_zero + theorem fin.sum_const + theorem fin.sum_pow_mul_eq_add_pow + theorem finset.prod_range + theorem list.alternating_prod_eq_finset_prod + theorem list.alternating_sum_eq_finset_sum + theorem list.prod_of_fn + theorem list.prod_take_of_fn Modified src/algebraic_topology/alternating_face_map_complex.lean Modified src/combinatorics/composition.lean Modified src/data/fintype/card.lean - theorem fin.prod_const - theorem fin.prod_of_fn - theorem fin.prod_univ_cast_succ - theorem fin.prod_univ_def - theorem fin.prod_univ_one - theorem fin.prod_univ_succ - theorem fin.prod_univ_succ_above - theorem fin.prod_univ_two - theorem fin.prod_univ_zero - theorem fin.sum_const - theorem fin.sum_pow_mul_eq_add_pow - theorem finset.prod_range - theorem list.alternating_prod_eq_finset_prod - theorem list.alternating_sum_eq_finset_sum - theorem list.prod_of_fn - theorem list.prod_take_of_fn Modified src/data/matrix/notation.lean 2022-04-17 12:41:22 7c7f351 feat(topology/[separation, homeomorph]): separation properties are topological invariants (#13401) ESTIMATED CHANGES Modified src/topology/homeomorph.lean Modified src/topology/separation.lean + theorem t1_space_of_injective_of_continuous 2022-04-17 10:27:47 49e41eb feat(topology/algebra/order): extreme value thm for a function continuous on a closed set (#13348) ESTIMATED CHANGES Modified src/topology/algebra/order/compact.lean + theorem continuous_on.exists_forall_ge' + theorem continuous_on.exists_forall_le' 2022-04-17 03:57:45 f4f46cd chore(scripts): update nolints.txt (#13482) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-16 19:28:42 d4fda04 feat(data/finsupp/basic): add a few lemmas, mostly about `finsupp.filter` (#13457) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.filter_eq_self_iff + theorem finsupp.filter_eq_zero_iff +/- theorem finsupp.filter_single_of_neg +/- theorem finsupp.filter_single_of_pos + theorem finsupp.prod_div_prod_filter + theorem finsupp.prod_filter_index + theorem finsupp.prod_filter_mul_prod_filter_not + theorem finsupp.single_apply_ne_zero 2022-04-16 17:33:14 96667b5 chore(number_theory/*): Weaken assumptions (#13443) Follow @alexjbest's generalization linter to weaken typeclass assumptions in number theory. ESTIMATED CHANGES Modified src/number_theory/arithmetic_function.lean +/- theorem nat.arithmetic_function.coe_moebius_mul_coe_zeta +/- theorem nat.arithmetic_function.sum_eq_iff_sum_mul_moebius_eq Modified src/number_theory/class_number/admissible_card_pow_degree.lean +/- theorem polynomial.exists_approx_polynomial_aux +/- theorem polynomial.exists_eq_polynomial Modified src/number_theory/class_number/finite.lean +/- theorem class_group.norm_lt Modified src/number_theory/liouville/basic.lean +/- theorem liouville.exists_one_le_pow_mul_dist Modified src/number_theory/padics/ring_homs.lean +/- theorem padic_int.to_zmod_pow_eq_iff_ext Modified src/number_theory/zsqrtd/basic.lean +/- theorem zsqrtd.hom_ext 2022-04-16 17:33:13 018e9b5 chore(order/bounded_order): Match the `with_bot` and `with_top` API (#13419) The API for `with_top` and the API for `with_bot` somehow evolved independently from each other, which created frustating disparity in lemmas and argument implicitness. This synchronizes everything (including the layout), generalize a few lemmas from `preorder`/`partial_order` to `has_le`/`has_lt`, and removes the duplicated `is_total (with_bot α) (≤)`/`is_total (with_top α) (≤)` instances. ESTIMATED CHANGES Modified src/algebra/cubic_discriminant.lean Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/box_integral/partition/split.lean Modified src/linear_algebra/lagrange.lean Modified src/order/bounded_order.lean +/- theorem with_bot.bot_lt_coe +/- theorem with_bot.bot_ne_coe +/- theorem with_bot.coe_eq_coe +/- theorem with_bot.coe_le +/- theorem with_bot.coe_le_coe + theorem with_bot.coe_le_iff +/- theorem with_bot.coe_lt_coe +/- theorem with_bot.coe_ne_bot +/- theorem with_bot.coe_unbot + theorem with_bot.le_coe_iff + theorem with_bot.lt_coe_iff + theorem with_bot.lt_iff_exists_coe + theorem with_bot.lt_iff_exists_coe_btwn +/- theorem with_bot.ne_bot_iff_exists + theorem with_bot.none_le +/- theorem with_bot.none_lt_some +/- theorem with_bot.not_coe_le_bot +/- theorem with_bot.not_lt_none +/- theorem with_bot.some_le_some +/- theorem with_bot.some_lt_some +/- theorem with_bot.unbot_coe + theorem with_bot.well_founded_gt +/- theorem with_bot.well_founded_lt +/- theorem with_top.coe_eq_coe +/- theorem with_top.coe_le_coe +/- theorem with_top.coe_le_iff +/- theorem with_top.coe_lt_coe +/- theorem with_top.coe_lt_iff +/- theorem with_top.coe_lt_top +/- theorem with_top.coe_max +/- theorem with_top.coe_min +/- theorem with_top.coe_ne_top +/- theorem with_top.coe_untop +/- theorem with_top.le_coe +/- theorem with_top.le_coe_iff +/- theorem with_top.le_none +/- theorem with_top.lt_iff_exists_coe +/- theorem with_top.lt_iff_exists_coe_btwn +/- theorem with_top.ne_top_iff_exists +/- theorem with_top.not_none_lt +/- theorem with_top.not_top_le_coe +/- theorem with_top.some_le_some +/- theorem with_top.some_lt_none +/- theorem with_top.some_lt_some +/- theorem with_top.top_ne_coe + theorem with_top.well_founded_gt +/- theorem with_top.well_founded_lt 2022-04-16 17:33:12 8decd4b chore(logic/encodable/basic): Rename `encodable` instances (#13396) The instances were called `encodable.foo` instead of `foo.encodable` as the naming convention preconizes. ESTIMATED CHANGES Modified src/algebra/algebraic_card.lean Modified src/analysis/box_integral/partition/measure.lean Modified src/computability/encoding.lean Modified src/data/W/basic.lean Modified src/data/rat/denumerable.lean Modified src/data/set/countable.lean Modified src/data/tprod.lean Modified src/logic/encodable/basic.lean Modified src/logic/equiv/list.lean - def encodable.trunc_encodable_of_fintype + def fintype.trunc_encodable Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/model_theory/basic.lean Modified src/model_theory/encoding.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/topology/bases.lean Modified src/topology/metric_space/basic.lean 2022-04-16 17:33:11 91a43e7 feat(algebra/order/monoid): Co/contravariant classes for `with_bot`/`with_top` (#13369) Add the `covariant_class (with_bot α) (with_bot α) (+) (≤)` and `contravariant_class (with_bot α) (with_bot α) (+) (<)` instances, as well as the lemmas that `covariant_class (with_bot α) (with_bot α) (+) (<)` and `contravariant_class (with_bot α) (with_bot α) (+) (≤)` almost hold. On the way, match the APIs for `with_bot`/`with_top` by adding missing lemmas. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean +/- theorem with_bot.add_bot + theorem with_bot.add_coe_eq_bot_iff +/- theorem with_bot.add_eq_bot + theorem with_bot.add_eq_coe - theorem with_bot.add_lt_add_iff_left - theorem with_bot.add_lt_add_iff_right + theorem with_bot.add_ne_bot +/- theorem with_bot.bot_add + theorem with_bot.bot_lt_add +/- theorem with_bot.coe_add + theorem with_bot.coe_add_eq_bot_iff +/- theorem with_bot.coe_bit0 +/- theorem with_bot.coe_bit1 +/- theorem with_top.add_coe_eq_top_iff +/- theorem with_top.add_eq_coe +/- theorem with_top.add_eq_top - theorem with_top.add_lt_add_iff_left - theorem with_top.add_lt_add_iff_right +/- theorem with_top.add_lt_top + theorem with_top.add_ne_top +/- theorem with_top.add_top +/- theorem with_top.coe_add +/- theorem with_top.coe_add_eq_top_iff +/- theorem with_top.coe_bit0 +/- theorem with_top.coe_bit1 +/- theorem with_top.top_add +/- theorem with_zero.to_mul_bot_le +/- theorem with_zero.to_mul_bot_lt +/- theorem with_zero.to_mul_bot_strict_mono Modified src/topology/instances/ereal.lean 2022-04-16 16:18:59 874dde5 feat(data/polynomial/eval): generalize smul lemmas (#13479) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean +/- theorem polynomial.eval_smul + theorem polynomial.smul_comp Modified src/topology/continuous_function/polynomial.lean 2022-04-16 14:27:42 010f09e feat(data/polynomial/taylor): add `taylor_alg_hom` (#13477) ESTIMATED CHANGES Modified src/data/polynomial/taylor.lean + def polynomial.taylor_alg_hom 2022-04-16 12:38:45 f7430cd feat(data/polynomial/eval): add `protected` on some lemmas about `polynomial.map` (#13478) These clash with global lemmas. ESTIMATED CHANGES Modified src/algebra/polynomial/group_ring_action.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/eval.lean - theorem polynomial.map_add - theorem polynomial.map_mul - theorem polynomial.map_neg - theorem polynomial.map_one - theorem polynomial.map_sub - theorem polynomial.map_zero Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/lifts.lean Modified src/data/polynomial/ring_division.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/gauss_lemma.lean 2022-04-16 05:39:36 862a585 feat(topology/stone_cech): add stone_cech_hom_ext (#13472) The universal property that characterises the Stone–Čech compactification of a topological space X is that any function from X to a compact Hausdorff space extends uniquely to a continuous function on βX. Existence is already provided by `unique_stone_cech_extend`, but it seems that the uniqueness lemma was intentionally omitted previously. Easy, but probably worth being explicit about. ESTIMATED CHANGES Modified src/topology/stone_cech.lean + theorem stone_cech_hom_ext 2022-04-15 20:29:48 449e06a feat(algebraic_topology/fundamental_groupoid/fundamental_group): add type checker helpers for convertings paths to/from elements of fundamental group (#13182) This pr adds the following helper functions for converting paths to and from elements of the fundamental group: - `to_arrow`: converts element of the fundamental group to an arrow in the fundamental groupoid - `to_path`: converts element of the fundamental group to a (quotient of homotopic) path in the space - `from_arrow`: constructs an element of the fundamental group from a self-arrow in the fundamental groupoid - `from_path`: constructs an element of the fundamental group from a (quotient of homotopic) path in the space These parallel the similarly named functions for the fundamental group [here](https://github.com/leanprover-community/mathlib/blob/743ed5d1dd54fffd65e3a7f3522e4a4e85472964/src/algebraic_topology/fundamental_groupoid/basic.lean#L339-L355). They will prove helpful in doing computations with the fundamental group later e.g. for the disk, circle, etc. ESTIMATED CHANGES Modified src/algebraic_topology/fundamental_groupoid/fundamental_group.lean + def fundamental_group.from_arrow + def fundamental_group.from_path + def fundamental_group.to_arrow + def fundamental_group.to_path 2022-04-15 17:50:17 c988c62 chore(number_theory/function_field): fix typo (#13464) ESTIMATED CHANGES Modified src/number_theory/function_field.lean 2022-04-15 17:50:16 fbff76b refactor(number_theory/legendre_symbol/): move Gauss/Eisenstein lemma code to separate file (#13449) In preparation of further changes to number_theory/legendre_symbol/quadratic_reciprocity, this takes most of the code dealing with the lemmas of Gauss and Eisenstein out of quadratic_reciprocity.lean into a new file gauss_eisenstein_lemmas.lean. Since I am not planning to do much (if anything) to this part of the code and it is rather involved and slows down Lean when I'm editing quadratic_reciprocity.lean, it makes sense to separate this code from the remainder of the file. ESTIMATED CHANGES Added src/number_theory/legendre_symbol/gauss_eisenstein_lemmas.lean + theorem legendre_symbol.Ico_map_val_min_abs_nat_abs_eq_Ico_map_id + theorem legendre_symbol.div_eq_filter_card + theorem legendre_symbol.eisenstein_lemma_aux + theorem legendre_symbol.gauss_lemma_aux + theorem legendre_symbol.sum_mul_div_add_sum_mul_div_eq_mul + theorem zmod.prod_Ico_one_prime + theorem zmod.wilsons_lemma Modified src/number_theory/legendre_symbol/quadratic_reciprocity.lean - theorem Ico_map_val_min_abs_nat_abs_eq_Ico_map_id - theorem div_eq_filter_card - theorem zmod.prod_Ico_one_prime - theorem zmod.wilsons_lemma 2022-04-15 17:09:01 0c2d68a feat(data/sym/sym2): mem_map/mem_congr/map_id' (#13437) Additional simplification lemmas, one to address non-simp-normal-form. (Also did a few proof simplifications.) ESTIMATED CHANGES Modified src/data/sym/sym2.lean +/- theorem sym2.map_comp + theorem sym2.map_congr + theorem sym2.map_id' +/- theorem sym2.map_id + theorem sym2.mem_map 2022-04-15 15:03:07 d6c1cf1 feat(analysis/normed_space/pointwise): Balls disjointness (#13379) Two balls in a real normed space are disjoint iff the sum of their radii is less than the distance between their centers. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem convex.combo_self Modified src/algebra/order/ring.lean + theorem mul_lt_of_lt_one_left + theorem mul_lt_of_lt_one_right Modified src/analysis/convex/basic.lean - theorem convex.combo_self Modified src/analysis/normed_space/pointwise.lean + theorem disjoint_ball_ball_iff + theorem disjoint_ball_closed_ball_iff + theorem disjoint_closed_ball_ball_iff + theorem disjoint_closed_ball_closed_ball_iff + theorem exists_dist_eq + theorem exists_dist_le_le + theorem exists_dist_le_lt + theorem exists_dist_lt_le + theorem exists_dist_lt_lt Modified src/topology/metric_space/basic.lean +/- theorem metric.ball_disjoint_ball + theorem metric.ball_disjoint_closed_ball +/- theorem metric.closed_ball_disjoint_ball +/- theorem metric.closed_ball_disjoint_closed_ball 2022-04-15 15:03:06 2194eef chore(ring_theory/ideal/local_ring): generalize to semirings (#13341) ESTIMATED CHANGES Modified src/logic/equiv/transfer_instance.lean Modified src/number_theory/padics/padic_integers.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean Modified src/ring_theory/ideal/local_ring.lean +/- theorem is_local_ring_hom_of_comp +/- theorem is_unit_map_iff +/- theorem is_unit_of_map_unit - theorem local_of_nonunits_ideal - theorem local_of_surjective - theorem local_of_unique_max_ideal - theorem local_of_unique_nonzero_prime +/- theorem local_ring.is_unit_of_mem_nonunits_one_sub_self +/- theorem local_ring.is_unit_or_is_unit_one_sub_self +/- theorem local_ring.ker_eq_maximal_ideal +/- theorem local_ring.maximal_ideal_unique +/- theorem local_ring.mem_maximal_ideal - theorem local_ring.nonunits_add + theorem local_ring.of_is_unit_or_is_unit_one_sub_self + theorem local_ring.of_surjective + theorem local_ring.of_unique_max_ideal + theorem local_ring.of_unique_nonzero_prime + theorem map_mem_nonunits_iff +/- theorem map_nonunit +/- theorem of_irreducible_map +/- theorem ring_hom.domain_local_ring Modified src/ring_theory/localization/at_prime.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/valuation/valuation_ring.lean 2022-04-15 15:03:05 c65bebb feat(number_theory/padics/padic_numbers): add padic.add_valuation (#12939) We define the p-adic additive valuation on `Q_[p]`, as an `add_valuation` with values in `with_top Z`. ESTIMATED CHANGES Modified src/number_theory/padics/padic_numbers.lean + theorem padic.add_valuation.apply + theorem padic.add_valuation.map_add + theorem padic.add_valuation.map_mul + theorem padic.add_valuation.map_one + theorem padic.add_valuation.map_zero + def padic.add_valuation + def padic.add_valuation_def + theorem padic.valuation_map_add + theorem padic.valuation_map_mul 2022-04-15 13:10:57 bbbea1c chore(*): clean up unnecessary uses of nat.cases_on (#13454) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_with_zero/power.lean Modified src/algebra/homology/augment.lean Modified src/data/int/basic.lean Modified src/data/list/rotate.lean +/- theorem list.rotate_nil Modified src/data/nat/basic.lean Modified src/data/nat/log.lean Modified src/data/polynomial/inductions.lean Modified src/group_theory/specific_groups/dihedral.lean Modified src/group_theory/specific_groups/quaternion.lean Modified src/logic/equiv/fin.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/set_theory/surreal/dyadic.lean 2022-04-15 11:12:38 ebc8b44 feat(analysis/normed_space/basic): `pi` and `prod` are `normed_algebra`s (#13442) Note that over an empty index type, `pi` is not a normed_algebra since it is trivial as a ring. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnorm_algebra_map_eq Modified src/measure_theory/measure/haar_lebesgue.lean 2022-04-15 10:39:09 d13f291 feat(group_theory/group_action/conj_act): conjugation by the units of a monoid (#13439) I suspect we can make this even more general in future by introducing a compatibility typeclass, but this is good enough for me for now. This also adds a stronger typeclass for the existing action of `conj_act K` where `K` is a `division_ring`. ESTIMATED CHANGES Modified src/group_theory/group_action/conj_act.lean +/- theorem conj_act.of_conj_act_zero +/- theorem conj_act.to_conj_act_zero + theorem conj_act.units_smul_def 2022-04-15 09:02:46 dd51529 feat(combinatorics/simple_graph/subgraph): delete_edges (#13306) Construct a subgraph from another by deleting edges. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/subgraph.lean - def simple_graph.subgraph.coe + theorem simple_graph.subgraph.coe_delete_edges_eq + theorem simple_graph.subgraph.coe_delete_edges_le + def simple_graph.subgraph.delete_edges + theorem simple_graph.subgraph.delete_edges_adj + theorem simple_graph.subgraph.delete_edges_coe_eq + theorem simple_graph.subgraph.delete_edges_delete_edges + theorem simple_graph.subgraph.delete_edges_empty_eq + theorem simple_graph.subgraph.delete_edges_inter_edge_set_left_eq + theorem simple_graph.subgraph.delete_edges_inter_edge_set_right_eq + theorem simple_graph.subgraph.delete_edges_le + theorem simple_graph.subgraph.delete_edges_le_of_le + theorem simple_graph.subgraph.delete_edges_spanning_coe_eq + theorem simple_graph.subgraph.delete_edges_verts - def simple_graph.subgraph.spanning_coe + theorem simple_graph.subgraph.spanning_coe_delete_edges_le 2022-04-15 04:32:08 d6a46b7 chore(scripts): update nolints.txt (#13455) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-15 03:41:29 6a5764b chore(analysis/normed_space/multilinear): use notation (#13452) * use notation `A [×n]→L[𝕜] B`; * use `A → B` instead of `Π x : A, B`. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean +/- def continuous_multilinear_map.restr 2022-04-15 02:47:13 d81cedb feat(topology/algebra/module/multilinear): relax requirements for `continuous_multilinear_map.mk_pi_algebra` (#13426) `continuous_multilinear_map.mk_pi_algebra` and `continuous_multilinear_map.mk_pi_algebra_fin` do not need a norm on either the algebra or base ring; all they need is a topology on the algebra compatible with multiplication. The much weaker typeclasses cause some elaboration issues in a few places, as the normed space can no longer be found by unification. Adding a non-dependent version of `continuous_multilinear_map.has_op_norm` largely resolves this, although a few API proofs about `mk_pi_algebra` and `mk_pi_algebra_fin` end up quite underscore heavy. This is the first step in being able to define `exp` without first choosing a `norm`. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean - theorem continuous_multilinear_map.mk_pi_algebra_apply - theorem continuous_multilinear_map.mk_pi_algebra_fin_apply Modified src/topology/algebra/module/multilinear.lean + theorem continuous_multilinear_map.mk_pi_algebra_apply + theorem continuous_multilinear_map.mk_pi_algebra_fin_apply 2022-04-14 20:31:11 1506335 chore(number_theory/zsqrtd/*): Missing docstrings and cleanups (#13445) Add docstrings to `gaussian_int` and `zsqrtd.norm` and inline definitions which did not have a docstring nor deserved one. ESTIMATED CHANGES Modified src/number_theory/pell.lean Modified src/number_theory/zsqrtd/basic.lean - def zsqrtd.add +/- theorem zsqrtd.add_def +/- theorem zsqrtd.add_im +/- theorem zsqrtd.add_re +/- theorem zsqrtd.bit0_im +/- theorem zsqrtd.bit0_re +/- theorem zsqrtd.bit1_re +/- def zsqrtd.conj +/- theorem zsqrtd.conj_im +/- theorem zsqrtd.conj_neg +/- theorem zsqrtd.conj_re - theorem zsqrtd.le_refl - def zsqrtd.mul +/- theorem zsqrtd.mul_im +/- theorem zsqrtd.mul_re - def zsqrtd.neg +/- theorem zsqrtd.neg_im +/- theorem zsqrtd.neg_re + theorem zsqrtd.nonneg.add - theorem zsqrtd.nonneg_add - def zsqrtd.one - def zsqrtd.zero Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-04-14 17:32:49 cbf3062 feat(combinatorics/simple_graph/connectivity): define connected components (#12766) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + def simple_graph.connected_component + def simple_graph.connected_component_mk + theorem simple_graph.preconnected.subsingleton_connected_component +/- def simple_graph.subgraph.connected 2022-04-14 15:31:41 251bd84 feat(group_theory/subgroup/basic): One more `mem_normalizer_iff` lemma (#13395) This PR golfs `mem_normalizer_iff'` and adds `mem_normalizer_iff''`. There are not so easy to deduce from each other, so it's nice to have these variations available. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.mem_normalizer_iff'' +/- theorem subgroup.mem_normalizer_iff' 2022-04-14 15:31:40 8bbc5ac feat(combinatorics/additive/salem_spencer): Salem-Spencer sets under images (#13279) A set `s` is Salem-Spencer iff its image under an injective Freiman hom is. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_pair Modified src/algebra/hom/freiman.lean + theorem map_mul_map_eq_map_mul_map Modified src/combinatorics/additive/salem_spencer.lean + theorem mul_salem_spencer.image + theorem mul_salem_spencer.of_image Modified src/data/multiset/basic.lean + theorem multiset.card_pair 2022-04-14 14:09:05 fecdd4b feat(measure_theory/card_measurable_space): `generate_measurable_rec s` gives precisely the generated sigma-algebra (#12462) ESTIMATED CHANGES Modified src/measure_theory/card_measurable_space.lean + theorem measurable_space.Union_mem_generate_measurable_rec - theorem measurable_space.cardinal_Union_generate_measurable_rec_le +/- theorem measurable_space.cardinal_measurable_set_le_continuum + theorem measurable_space.compl_mem_generate_measurable_rec + theorem measurable_space.empty_mem_generate_measurable_rec + theorem measurable_space.generate_measurable_eq_rec + theorem measurable_space.generate_measurable_rec_subset - theorem measurable_space.generate_measurable_subset_rec + theorem measurable_space.self_subset_generate_measurable_rec Modified src/set_theory/cardinal_ordinal.lean 2022-04-14 13:04:58 adfe9c7 feat(topology/algebra/order/compact): Sup is continuous (#13347) * Prove that the `Sup` of a binary function over a compact set is continuous in the second variable * Some other lemmas about `Sup` * Move and generalize `is_compact.bdd_[above|below]_image` * from the sphere eversion project ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean + theorem is_compact.bdd_above_image + theorem is_compact.bdd_below_image Modified src/topology/algebra/order/compact.lean + theorem is_compact.Sup_lt_iff_of_continuous - theorem is_compact.bdd_above_image - theorem is_compact.bdd_below_image + theorem is_compact.continuous_Inf + theorem is_compact.continuous_Sup + theorem is_compact.exists_Inf_image_eq_and_le + theorem is_compact.exists_Sup_image_eq_and_ge + theorem is_compact.lt_Inf_iff_of_continuous 2022-04-14 11:12:39 936eb7e feat(analysis/normed_space/finite_dimension): a finite dimensional affine subspace is closed (#13440) ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean + theorem affine_subspace.is_closed_direction_iff Modified src/analysis/normed_space/finite_dimension.lean + theorem affine_equiv.coe_to_homeomorph_of_finite_dimensional + theorem affine_equiv.coe_to_homeomorph_of_finite_dimensional_symm + theorem affine_equiv.continuous_of_finite_dimensional + def affine_equiv.to_homeomorph_of_finite_dimensional +/- theorem affine_map.continuous_of_finite_dimensional + theorem affine_subspace.closed_of_finite_dimensional 2022-04-14 11:12:38 9631a91 feat(ring_theory/multiplicity): int.nat_abs (#13420) Spinning off of #12454 ESTIMATED CHANGES Modified src/ring_theory/multiplicity.lean + theorem multiplicity.int.nat_abs 2022-04-14 11:12:37 88ba31c feat(measure_theory/constructions/pi): more `measure_preserving` lemmas (#13404) * Reformulate `map_pi_equiv_pi_subtype_prod` in terms of `measure_preserving`. * Add more equivalences (bare equivalences, order isomorphisms, and measurable equivalences) on pi types. ESTIMATED CHANGES Modified src/logic/equiv/fin.lean + def equiv.pi_fin_succ_above_equiv + def order_iso.pi_fin_succ_above_iso Modified src/logic/equiv/set.lean + theorem equiv.preimage_pi_equiv_pi_subtype_prod_symm_pi Modified src/measure_theory/constructions/pi.lean - theorem measure_theory.measure.map_pi_equiv_pi_subtype_prod - theorem measure_theory.measure.map_pi_equiv_pi_subtype_prod_symm + theorem measure_theory.measure_preserving_pi_equiv_pi_subtype_prod + theorem measure_theory.measure_preserving_pi_fin_succ_above_equiv + theorem measure_theory.volume_preserving_pi_equiv_pi_subtype_prod + theorem measure_theory.volume_preserving_pi_fin_succ_above_equiv Modified src/measure_theory/measurable_space.lean + def measurable_equiv.pi_equiv_pi_subtype_prod + def measurable_equiv.pi_fin_succ_above_equiv Modified src/measure_theory/measure/lebesgue.lean - theorem real.map_transvection_volume_pi + theorem real.volume_preserving_transvection_struct 2022-04-14 11:12:36 dd34ffa refactor(group_theory/schur_zassenhaus): Golf using `is_complement'_stabilizer` (#13392) This PR golfs the proof of the abelian case of Schur-Zassenhaus using the new lemma `is_complement'_stabilizer`. ESTIMATED CHANGES Modified src/group_theory/schur_zassenhaus.lean +/- theorem subgroup.is_complement'_stabilizer_of_coprime 2022-04-14 11:12:35 15b764d feat(group_theory/complement): Add more API for the action on left transversals (#13363) This PR adds more API for the action on left transversals. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.smul_apply_eq_smul_apply_inv_smul + theorem subgroup.smul_to_equiv Modified src/group_theory/schur_zassenhaus.lean - theorem subgroup.smul_symm_apply_eq_mul_symm_apply_inv_smul 2022-04-14 11:12:34 769ec8c feat(group_theory/group_action/basic): Right multiplication satisfies the `quotient_action` axiom (#13362) This PR adds an instance stating that the right multiplication action of `H.normalizer.opposite` on `G` satisfies the `quotient_action` axiom. In particular, we automatically get the induced action of `H.normalizer.opposite` on `G ⧸ H`, so we can delete the existing instance. (Technically, the existing instance was stated in terms of `H.normalizerᵐᵒᵖ`, but I think `H.normalizer.opposite` is a more natural way to write it). ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean - theorem mul_action.quotient'.smul_coe - theorem mul_action.quotient'.smul_mk 2022-04-14 11:12:33 3676f11 chore(order/complete_lattice): General cleanup (#13323) ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- theorem Inf_eq_bot +/- theorem Inf_eq_of_forall_ge_of_forall_gt_exists_lt +/- theorem Inf_eq_top +/- theorem Inf_le_iff +/- theorem Sup_eq_bot +/- theorem Sup_eq_top +/- theorem Sup_le +/- theorem Sup_le_iff +/- theorem inf_infi +/- theorem infi_const +/- theorem infi_eq_bot +/- theorem infi_inf +/- theorem infi_infi_eq_left +/- theorem infi_infi_eq_right +/- theorem infi_le_iff +/- theorem infi_sigma +/- theorem infi_subtype +/- theorem le_Inf +/- theorem le_Inf_iff +/- theorem le_infi_comp +/- theorem monotone_Inf_of_monotone +/- theorem monotone_Sup_of_monotone +/- theorem supr_comp_le +/- theorem supr_const +/- theorem supr_eq_top +/- theorem supr_sigma +/- theorem supr_supr_eq_left +/- theorem supr_supr_eq_right +/- theorem supr_union 2022-04-14 11:12:32 7bb1081 feat(category_theory): turn a split mono with cokernel into a biproduct (#13184) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.binary_bicone_of_split_epi_of_kernel + def category_theory.limits.binary_bicone_of_split_mono_of_cokernel + def category_theory.limits.is_bilimit_binary_bicone_of_split_epi_of_kernel + def category_theory.limits.is_bilimit_binary_bicone_of_split_mono_of_cokernel Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/kernels.lean +/- def category_theory.limits.cokernel_epi_comp +/- def category_theory.limits.is_cokernel_epi_comp + theorem category_theory.limits.is_cokernel_epi_comp_desc +/- def category_theory.limits.is_kernel_comp_mono + theorem category_theory.limits.is_kernel_comp_mono_lift Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.cokernel_cofork_of_cofork_of_π + theorem category_theory.preadditive.cokernel_cofork_of_cofork_π + theorem category_theory.preadditive.is_colimit_cofork_of_cokernel_cofork_desc + theorem category_theory.preadditive.is_limit_fork_of_kernel_fork_lift + theorem category_theory.preadditive.kernel_fork_of_fork_of_ι + theorem category_theory.preadditive.kernel_fork_of_fork_ι 2022-04-14 10:16:39 2693ab5 feat(number_theory/legendre_symbol): add directory legendre_symbol and move quadratic_reciprocity.lean into it (#13441) In preparation of adding more code in a structured way, this sets up a new directory `legendre_symbol` below `number_theory` and moves the file `quadratic_reciprocity.lean` there. The imports in `src/number_theory/zsqrtd/gaussian_int.lean` and `archive/imo/imp2008_q3.lean` are changed accordingly. ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean Renamed src/number_theory/quadratic_reciprocity.lean to src/number_theory/legendre_symbol/quadratic_reciprocity.lean Modified src/number_theory/zsqrtd/gaussian_int.lean 2022-04-14 10:16:38 eb2780b feat(topology/unit_interval): add lemmas (#13344) * also change the statement of `unit_interval.mul_mem` * from the sphere eversion project ESTIMATED CHANGES Modified src/topology/unit_interval.lean + theorem unit_interval.div_mem + theorem unit_interval.fract_mem +/- theorem unit_interval.mul_mem + theorem unit_interval.one_mem +/- def unit_interval.symm + theorem unit_interval.zero_mem 2022-04-14 08:29:02 87f8076 chore(data/nat/factorial): tidy (#13436) I noticed this file had non-terminal simps, so I tidied it a little whilst removing them. ESTIMATED CHANGES Modified src/data/nat/factorial/basic.lean 2022-04-14 08:29:00 dac4f18 feat(data/mv_polynomial): add support_X_pow (#13435) A simple lemma to match the `polynomial` API from flt-regular ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.support_X_pow 2022-04-14 08:28:58 1378eab feat(complex/roots_of_unity): extensionality (#13431) Primitive roots are equal iff their arguments are equal. Adds some useful specialisations, too. ESTIMATED CHANGES Modified src/analysis/complex/roots_of_unity.lean + theorem is_primitive_root.arg_eq_pi_iff + theorem is_primitive_root.arg_eq_zero_iff + theorem is_primitive_root.arg_ext 2022-04-14 06:30:11 2249a24 chore(*): suggestions from the generalisation linter (#13092) Prompted by zulip discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/An.20example.20of.20why.20formalization.20is.20useful These are the "reasonable" suggestions from @alexjbest's generalisation linter up to `algebra.group.basic`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean +/- theorem left_inverse_inv Modified src/order/basic.lean +/- theorem eq.not_gt +/- theorem eq.not_lt 2022-04-14 03:43:29 a565471 chore(scripts): update nolints.txt (#13438) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-14 02:07:07 b62626e feat(complex/arg): arg_eq_zero_iff (#13432) ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_eq_zero_iff 2022-04-13 23:29:58 0765994 chore(order/category/Preorder): reduce imports (#13301) Because `punit_instances` comes at the very end of the algebraic import hierarchy, we were requiring the entire algebraic hierarchy before we could begin compiling the theory of categorical limits. This tweak substantially reduces the import dependencies. ESTIMATED CHANGES Modified src/analysis/normed/group/SemiNormedGroup.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/category/preorder.lean - def category_theory.Preorder_to_Cat Modified src/category_theory/differential_object.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/shift.lean Modified src/category_theory/subobject/basic.lean Modified src/category_theory/triangulated/basic.lean Modified src/order/category/Preorder.lean + def Preorder_to_Cat 2022-04-13 22:15:36 6f401ac feat(data/polynomial/*): suggestions from the generalization linter (#13342) ESTIMATED CHANGES Modified src/data/complex/exponential.lean +/- theorem is_cau_geo_series Modified src/data/polynomial/algebra_map.lean +/- theorem polynomial.eval₂_algebra_map_X Modified src/data/polynomial/cancel_leads.lean Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.sum_fin Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean - theorem polynomial.sum_fin Modified src/data/polynomial/eval.lean +/- theorem polynomial.support_map_subset Modified src/data/polynomial/field_division.lean +/- theorem polynomial.degree_map +/- theorem polynomial.leading_coeff_map +/- theorem polynomial.monic_map_iff +/- theorem polynomial.nat_degree_map Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/monic.lean Modified src/data/polynomial/reverse.lean +/- theorem polynomial.reverse_mul_of_domain +/- theorem polynomial.trailing_coeff_mul Modified src/data/polynomial/ring_division.lean 2022-04-13 18:43:15 76c969b chore(algebra/polynomial/big_operators): drop some nontrivial assumptions (#13428) ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean +/- theorem polynomial.nat_degree_multiset_prod +/- theorem polynomial.nat_degree_multiset_prod_of_monic +/- theorem polynomial.nat_degree_prod +/- theorem polynomial.nat_degree_prod_of_monic 2022-04-13 17:31:46 da13598 feat(model_theory/encoding): Bundled encoding of terms (#13226) Bundles `term.list_encode` and `term.list_decode` into a `computability.encoding` ESTIMATED CHANGES Modified src/model_theory/encoding.lean +/- theorem first_order.language.term.card_le +/- def first_order.language.term.list_encode Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.mk_list_eq_max_mk_omega 2022-04-13 16:27:43 9913860 feat(ring_theory/tensor_product): add assoc for tensor product as an algebra homomorphism (#13309) By speeding up a commented out def, this goes from from ~100s to ~7s on my machine . ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean + theorem algebra.tensor_product.assoc_tmul 2022-04-13 10:56:42 0c3f75b feat(analysis/normed_space/basic): normed division algebras over ℝ are also normed algebras over ℚ (#13384) This results shows that `algebra_rat` respects the norm in ` ℝ`-algebras that respect the norm. The new instance carries no new data, as the norm and algebra structure are already defined elsewhere. Probably there is a weaker requirement for compatibility, but I have no idea what it is, and the weakening can come later. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean 2022-04-13 10:56:41 50ff59a feat(model_theory/skolem, satisfiability): A weak Downward Loewenheim Skolem (#13141) Defines a language and structure with built-in Skolem functions for a particular language Proves a weak form of Downward Loewenheim Skolem: every structure has a small (in the universe sense) elementary substructure Shows that `T` having a model in any universe implies `T.is_satisfiable`. ESTIMATED CHANGES Modified src/model_theory/bundled.lean Modified src/model_theory/language_map.lean Modified src/model_theory/satisfiability.lean +/- theorem first_order.language.Theory.model.is_satisfiable Modified src/model_theory/semantics.lean Added src/model_theory/skolem.lean + theorem first_order.language.exists_small_elementary_substructure + def first_order.language.skolem₁ + theorem first_order.language.substructure.coe_sort_elementary_skolem₁_reduct + theorem first_order.language.substructure.skolem₁_reduct_is_elementary 2022-04-13 10:56:40 647aa5b feat(model_theory/fraisse): Defines ultrahomogeneous structures, fixes Fraïssé limit definition (#12994) Defines ultrahomogeneous structures Fixes the definition of a Fraïssé limit to require ultrahomogeneity Completes the characterization of when a class is the age of a countable structure. ESTIMATED CHANGES Modified src/model_theory/fraisse.lean + theorem first_order.language.age.nonempty - theorem first_order.language.age_fraisse_limit + theorem first_order.language.exists_countable_is_age_of_iff + theorem first_order.language.is_fraisse_limit.is_fraisse + structure first_order.language.is_fraisse_limit + theorem first_order.language.is_ultrahomogeneous.age_is_fraisse + theorem first_order.language.is_ultrahomogeneous.amalgamation_age + def first_order.language.is_ultrahomogeneous 2022-04-13 08:59:52 6f59d77 feat(order/bounded_order): Basic API for `subtype.order_bot` and `subtype.order_top` (#12904) A few `simp` lemmas that were needed for `subtype.order_bot` and `subtype.order_top`. ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem subtype.coe_eq_bot_iff + theorem subtype.coe_eq_top_iff + theorem subtype.mk_eq_bot_iff + theorem subtype.mk_eq_top_iff 2022-04-13 07:30:42 5b8bb9b feat(category_theory/monoidal): define monoidal structure on the category of monoids in a braided monoidal category (#13122) Building on the preliminary work from the previous PRs, we finally show that monoids in a braided monoidal category form a monoidal category. ESTIMATED CHANGES Modified src/category_theory/monoidal/Mon_.lean + theorem Mon_.Mon_tensor_mul_assoc + theorem Mon_.Mon_tensor_mul_one + theorem Mon_.Mon_tensor_one_mul + def Mon_.iso_of_iso + theorem Mon_.mul_associator + theorem Mon_.mul_left_unitor + theorem Mon_.mul_right_unitor + theorem Mon_.one_associator + theorem Mon_.one_left_unitor + theorem Mon_.one_right_unitor Modified src/category_theory/monoidal/braided.lean 2022-04-13 04:14:04 1de6ce9 chore(scripts): update nolints.txt (#13408) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-13 04:14:03 b0bd771 fix(combinatorics/simple_graph/connectivity): correctly generalized variables (#13405) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean 2022-04-13 04:14:02 917fc96 refactor(set_theory/cofinality): Normalize names (#13400) We rename lemmas of the form `is_regular (foo x)` to `is_regular_foo` instead of `foo_is_regular`. ESTIMATED CHANGES Modified src/set_theory/cofinality.lean - theorem cardinal.aleph'_succ_is_regular - theorem cardinal.aleph_succ_is_regular - theorem cardinal.cof_is_regular + theorem cardinal.is_regular_aleph'_succ + theorem cardinal.is_regular_aleph_succ + theorem cardinal.is_regular_cof + theorem cardinal.is_regular_omega + theorem cardinal.is_regular_succ - theorem cardinal.omega_is_regular - theorem cardinal.succ_is_regular 2022-04-13 02:38:14 ac7a356 chore(set_theory/*): Fix lint (#13399) Add missing docstrings and `inhabited` instances or a `nolint` when an `inhabited` instance isn't reasonable. ESTIMATED CHANGES Modified src/set_theory/cofinality.lean Modified src/set_theory/game.lean Modified src/set_theory/pgame.lean +/- def pgame.left_moves +/- def pgame.right_moves Modified src/set_theory/zfc.lean +/- def pSet.type 2022-04-13 02:38:13 8c9ee31 feat(order/conditionally_complete_lattice): Add `le_cSup_iff` (#13321) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem cInf_le_iff + theorem le_cSup_iff' + theorem le_cSup_iff 2022-04-13 00:37:31 fb94880 refactor(category_theory/shift): tighten scope of local attribute [reducible] (#13335) In all the files dealing with shifts on categories, we have a sprinkling of `local attribute [reducible]`, without which we get somewhat mysterious errors. However with them, we produce some very fragile proof states (recently I was upset to see that shifting by `(0 : A)` and shifting by the tensor unit in `discrete A` were not definitionally commuting...). I've been attempting to refactor this part of the library so we just never need to use `local attribute [reducible]`, in the hope of making these problems go away. Having failed so far, this PR simply tightens the scopes of these local attributes as narrowly as possible (or in cases removes them entirely), so it is clearer exactly what is relying on them to work. ESTIMATED CHANGES Modified src/category_theory/differential_object.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/shift.lean Modified src/category_theory/triangulated/rotate.lean 2022-04-12 23:52:20 f496ef4 feat(computability/{language/regular_expressions): Map along a function (#13197) Define `language.map` and `regular_expression.map`. ESTIMATED CHANGES Modified src/computability/language.lean + def language.map + theorem language.map_id + theorem language.map_map + theorem language.map_star Modified src/computability/regular_expressions.lean + def regular_expression.map + theorem regular_expression.map_id + theorem regular_expression.map_map +/- def regular_expression.matches + theorem regular_expression.matches_map 2022-04-12 23:00:49 7ece83e feat(topology/homotopy): Add definition of contractible spaces (#12731) ESTIMATED CHANGES Added src/topology/homotopy/contractible.lean + theorem continuous_map.nullhomotopic.comp_left + theorem continuous_map.nullhomotopic.comp_right + def continuous_map.nullhomotopic + theorem continuous_map.nullhomotopic_of_constant + theorem contractible_iff_id_nullhomotopic + theorem id_nullhomotopic 2022-04-12 22:12:37 94a52c4 feat(category_theory/monoidal): prove that in a braided monoidal category unitors and associators are monoidal natural transformations (#13121) This PR contains proofs of lemmas that are used in the stacked PR to define a monoidal structure on the category of monoids in a braided monoidal category. The lemmas can be summarised by saying that in a braided monoidal category unitors and associators are monoidal natural transformations. Note that for these statements to make sense we would need to define monoidal functors that are sources and targets of these monoidal natural transformations. For example, the morphisms `(α_ X Y Z).hom` are the components of a monoidal natural transformation ``` (tensor.prod (𝟭 C)) ⊗⋙ tensor ⟶ Α_ ⊗⋙ ((𝟭 C).prod tensor) ⊗⋙ tensor ``` where `Α_ : monoidal_functor ((C × C) × C) (C × (C × C))` is the associator functor given by `λ X, (X.1.1, (X.1.2, X.2))` on objects. I didn't define the functor `Α_`. (The easiest way would be to build it up using `prod'` we have already defined from `fst` and `snd`, which we would need to define as monoidal functors.) Instead, I stated and proved the commutative diagram that expresses the monoidality of the above transformation. Ditto for unitors. Please let me know if you'd like me to define all the required functors and monoidal natural transformations. The monoidal natural transformations themselves are not used in the proof that the category of monoids in a braided monoidal category is monoidal and only provide meaningful names to the lemmas that are used in the proof. ESTIMATED CHANGES Modified src/category_theory/monoidal/braided.lean + theorem category_theory.associator_monoidal + theorem category_theory.associator_monoidal_aux + theorem category_theory.left_unitor_monoidal + theorem category_theory.right_unitor_monoidal 2022-04-12 20:53:45 78ea75a feat(order/filter/cofinite): add lemmas, golf (#13394) * add `filter.comap_le_cofinite`, `function.injective.comap_cofinite_eq`, and `filter.has_basis.coprod`; * rename `at_top_le_cofinite` to `filter.at_top_le_cofinite`; * golf `filter.coprod_cofinite` and `filter.Coprod_cofinite`, move them below `filter.comap_cofinite_le`; ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.coprod Modified src/order/filter/cofinite.lean - theorem at_top_le_cofinite +/- theorem filter.Coprod_cofinite + theorem filter.at_top_le_cofinite + theorem filter.comap_cofinite_le +/- theorem filter.coprod_cofinite +/- theorem filter.eventually_cofinite_ne +/- theorem filter.le_cofinite_iff_compl_singleton_mem + theorem filter.le_cofinite_iff_eventually_ne +/- theorem filter.tendsto.exists_forall_ge +/- theorem filter.tendsto.exists_forall_le +/- theorem filter.tendsto.exists_within_forall_ge +/- theorem finset.eventually_cofinite_nmem + theorem function.injective.comap_cofinite_eq +/- theorem function.injective.tendsto_cofinite +/- theorem set.finite.compl_mem_cofinite +/- theorem set.finite.eventually_cofinite_nmem +/- theorem set.infinite_iff_frequently_cofinite 2022-04-12 20:08:54 da4ec7e feat(ring_theory/valuation/valuation_subring): Valuation subrings of a field (#12741) ESTIMATED CHANGES Added src/ring_theory/valuation/valuation_subring.lean + theorem valuation_subring.algebra_map_apply + theorem valuation_subring.ext + theorem valuation_subring.le_top + theorem valuation_subring.mem_carrier + theorem valuation_subring.mem_of_valuation_le_one + theorem valuation_subring.mem_or_inv_mem + theorem valuation_subring.mem_to_subring + theorem valuation_subring.mem_top + def valuation_subring.valuation + theorem valuation_subring.valuation_eq_iff + theorem valuation_subring.valuation_le_iff + theorem valuation_subring.valuation_le_one + theorem valuation_subring.valuation_le_one_iff + theorem valuation_subring.valuation_surjective + structure valuation_subring 2022-04-12 18:28:33 e72f275 feat(number_theory/qudratic_reciprocity): change type of `a` in API lemmas to `int` (#13393) This is step 2 in the overhaul of number_theory/qudratic_reciprocity. The only changes are that the argument `a` is now of type `int` rather than `nat` in a bunch of statements. This is more natural, since the corresponding (now second) argument of `legendre_symnbol` is of type `int`; it therefore makes the API lemmas more easily useable. ESTIMATED CHANGES Modified src/number_theory/quadratic_reciprocity.lean +/- theorem zmod.gauss_lemma +/- theorem zmod.legendre_sym_eq_one_iff +/- theorem zmod.legendre_sym_eq_one_or_neg_one +/- theorem zmod.legendre_sym_eq_pow +/- theorem zmod.legendre_sym_eq_zero_iff 2022-04-12 18:28:32 3bbb847 chore(*): remove instance arguments that are inferrable from earlier (#13386) Some lemmas have typeclass arguments that are in fact inferrable from the earlier ones, at least when everything is Prop valued this is unecessary so we clean up a few cases as they likely stem from typos or library changes. - `src/field_theory/finiteness.lean` it wasn't known at the time (#7644) that a division ring was noetherian, but now it is (#7661) - `src/category_theory/simple.lean` any abelian category has all cokernels so no need to assume it seperately - `src/analysis/convex/extreme.lean` assumed `linear_ordered_field` and `no_smul_zero_divisors` which is unnecessary, we take this as a sign that this and a couple of other convexity results should be generalized to densely ordered linear ordered rings (of which there are examples that are not fields) cc @YaelDillies ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem left_mem_open_segment_iff +/- theorem right_mem_open_segment_iff Modified src/analysis/convex/extreme.lean +/- theorem mem_extreme_points_iff_forall_segment Modified src/analysis/inner_product_space/projection.lean Modified src/category_theory/simple.lean Modified src/field_theory/finiteness.lean Modified src/linear_algebra/finite_dimensional.lean 2022-04-12 18:28:30 116ac71 feat(analysis/normed_space/exponential): exponentials of negations, scalar actions, and sums (#13036) The new lemmas are: * `exp_invertible_of_mem_ball` * `exp_invertible` * `is_unit_exp_of_mem_ball` * `is_unit_exp` * `ring.inverse_exp` * `exp_neg_of_mem_ball` * `exp_neg` * `exp_sum_of_commute` * `exp_sum` * `exp_nsmul` * `exp_zsmul` I don't know enough about the radius of convergence of `exp` to know if `exp_nsmul` holds more generally under extra conditions. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem edist_add_left + theorem edist_add_right + theorem edist_neg_neg + theorem edist_sub_left + theorem edist_sub_right Modified src/analysis/normed_space/exponential.lean + theorem commute.exp +/- theorem exp_add_of_commute + theorem exp_neg + theorem exp_neg_of_mem_ball + theorem exp_nsmul + theorem exp_sum + theorem exp_sum_of_commute +/- theorem exp_zero + theorem exp_zsmul + theorem inv_of_exp + theorem inv_of_exp_of_mem_ball + theorem is_unit_exp + theorem is_unit_exp_of_mem_ball + theorem ring.inverse_exp 2022-04-12 17:21:31 949021d feat(ring_theory/algebraic): Rational numbers are algebraic (#13367) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean + theorem is_algebraic_int + theorem is_algebraic_rat 2022-04-12 17:21:10 c994ab3 feat(category_theory/monoidal): define a monoidal structure on the tensor product functor of a braided monoidal category (#13150) Given a braided monoidal category `C`, equip its tensor product functor, viewed as a functor from `C × C` to `C` with a strength that turns it into a monoidal functor. See #13033 for a discussion of the motivation of this definition. (This PR replaces #13034 which was accidentally closed.) ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/monoidal/braided.lean + theorem category_theory.left_unitor_inv_braiding + theorem category_theory.right_unitor_inv_braiding + theorem category_theory.tensor_associativity + theorem category_theory.tensor_associativity_aux + theorem category_theory.tensor_left_unitality + def category_theory.tensor_monoidal + theorem category_theory.tensor_right_unitality + def category_theory.tensor_μ + theorem category_theory.tensor_μ_def₁ + theorem category_theory.tensor_μ_def₂ + theorem category_theory.tensor_μ_natural Modified src/category_theory/monoidal/category.lean +/- def category_theory.monoidal_category.tensor 2022-04-12 15:33:18 4c0a274 doc(model_theory/order): typo in docstrings (#13390) ESTIMATED CHANGES Modified src/model_theory/order.lean 2022-04-12 15:33:16 0c8b808 fix(measure_theory/function/lp_space): fix an instance diamond in `measure_theory.Lp.has_edist` (#13388) This also changes the definition of `edist` to something definitionally nicer ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean 2022-04-12 15:33:15 c21561a feat(algebra/direct_sum): Reindexing direct sums (#13076) Lemmas to reindex direct sums, as well as to rewrite direct sums over an option or sigma type. ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean + def direct_sum.equiv_congr_left + theorem direct_sum.equiv_congr_left_apply + theorem direct_sum.sigma_curry_apply + theorem direct_sum.sigma_uncurry_apply Modified src/algebra/direct_sum/module.lean + def direct_sum.lequiv_congr_left + theorem direct_sum.lequiv_congr_left_apply + theorem direct_sum.sigma_lcurry_apply + theorem direct_sum.sigma_luncurry_apply Modified src/data/dfinsupp/basic.lean + def dfinsupp.comap_domain'[Π + theorem dfinsupp.comap_domain'_add + theorem dfinsupp.comap_domain'_apply + theorem dfinsupp.comap_domain'_smul + theorem dfinsupp.comap_domain'_zero + theorem dfinsupp.comap_domain_add + theorem dfinsupp.comap_domain_apply + theorem dfinsupp.comap_domain_smul + theorem dfinsupp.comap_domain_zero + def dfinsupp.equiv_congr_left + theorem dfinsupp.equiv_prod_dfinsupp_add + theorem dfinsupp.equiv_prod_dfinsupp_smul + def dfinsupp.extend_with + theorem dfinsupp.extend_with_none + theorem dfinsupp.extend_with_some + theorem dfinsupp.sigma_curry_add + theorem dfinsupp.sigma_curry_apply + theorem dfinsupp.sigma_curry_smul + theorem dfinsupp.sigma_curry_zero + theorem dfinsupp.sigma_uncurry_add + theorem dfinsupp.sigma_uncurry_apply + theorem dfinsupp.sigma_uncurry_smul + theorem dfinsupp.sigma_uncurry_zero 2022-04-12 13:28:12 745099b chore(*/parity): Generalize lemmas and clarify names (#13268) Generalizations ESTIMATED CHANGES Modified src/algebra/geom_sum.lean Modified src/algebra/group_power/basic.lean + theorem neg_one_sq +/- theorem neg_sq Modified src/algebra/order/sub.lean + theorem tsub_add_tsub_comm Modified src/algebra/parity.lean + theorem even.neg_one_pow + theorem even.neg_one_zpow + theorem even.neg_pow + theorem even.neg_zpow +/- theorem even.sub_odd + theorem even.tsub_even - theorem even.zpow_neg - theorem even.zpow_nonneg + theorem even_iff_exists_bit0 +/- theorem is_square.map +/- theorem is_square_sq +/- theorem odd.neg + theorem odd.neg_one_pow + theorem odd.neg_one_zpow + theorem odd.neg_pow + theorem odd.neg_zpow +/- theorem odd.sub_even +/- theorem odd.sub_odd - theorem odd.zpow_nonneg +/- theorem odd_bit1 + theorem odd_iff_exists_bit1 Modified src/analysis/convex/specific_functions.lean Modified src/data/int/parity.lean Modified src/data/nat/digits.lean Modified src/data/nat/parity.lean - theorem nat.even.sub_even - theorem nat.neg_one_pow_eq_one_iff_even - theorem nat.neg_one_pow_of_even - theorem nat.neg_one_pow_of_odd - theorem nat.neg_one_sq + theorem neg_one_pow_eq_one_iff_even Modified src/group_theory/specific_groups/alternating.lean Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/special_linear_group.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/primitive_roots.lean 2022-04-12 12:36:48 4b45a71 feat(counterexamples/pseudoelement): add counterexample to uniqueness in category_theory.abelian.pseudoelement.pseudo_pullback (#13387) Borceux claims that the pseudoelement constructed in `category_theory.abelian.pseudoelement.pseudo_pullback` is unique. We show here that this claim is false. ESTIMATED CHANGES Added counterexamples/pseudoelement.lean + theorem category_theory.abelian.pseudoelement.exist_ne_and_fst_eq_fst_and_snd_eq_snd + theorem category_theory.abelian.pseudoelement.fst_mk_x_eq_fst_mk_y + theorem category_theory.abelian.pseudoelement.fst_x_pseudo_eq_fst_y + theorem category_theory.abelian.pseudoelement.mk_x_ne_mk_y + theorem category_theory.abelian.pseudoelement.snd_mk_x_eq_snd_mk_y + theorem category_theory.abelian.pseudoelement.snd_x_pseudo_eq_snd_y + def category_theory.abelian.pseudoelement.x + theorem category_theory.abelian.pseudoelement.x_not_pseudo_eq + def category_theory.abelian.pseudoelement.y Modified src/category_theory/abelian/pseudoelements.lean + theorem category_theory.abelian.pseudoelement.Module.eq_range_of_pseudoequal 2022-04-12 12:36:47 73ec5b2 chore(category_theory/closed/monoidal): correct error in doc string (#13385) Sorry, should have done this immediately when @b-mehta pointed out my mistake. ESTIMATED CHANGES Modified src/category_theory/closed/monoidal.lean 2022-04-12 12:36:46 ef8e256 feat(number_theory/cyclotomic): alg-closed fields are cyclotomic extensions over themselves (#13366) ESTIMATED CHANGES Modified archive/100-theorems-list/37_solution_of_cubic.lean Modified src/number_theory/cyclotomic/basic.lean + theorem is_alg_closed.is_cyclotomic_extension Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem is_primitive_root.is_root_cyclotomic - theorem polynomial.is_root_cyclotomic 2022-04-12 11:56:25 5534e24 chore(category_theory/preadditive/biproducts): Speed up `biprod.column_nonzero_of_iso` (#13383) From 76s down to 2s. The decidability synthesis in `by_contradiction` is stupidly expensive. ESTIMATED CHANGES Modified src/category_theory/preadditive/biproducts.lean 2022-04-12 11:56:24 4bcc532 refactor(control/fold): don't use is_monoid_hom (#13350) ESTIMATED CHANGES Modified src/control/fold.lean +/- def monoid.foldl.of_free_monoid +/- def monoid.foldr.of_free_monoid +/- def monoid.mfoldl.of_free_monoid +/- def monoid.mfoldr.of_free_monoid - theorem traversable.fold_foldl - theorem traversable.fold_foldr - theorem traversable.fold_mfoldl - theorem traversable.fold_mfoldr - theorem traversable.free.map.is_monoid_hom +/- def traversable.free.map +/- def traversable.map_fold - theorem traversable.mfoldl.unop_of_free_monoid 2022-04-12 10:40:32 8b27c45 feat(order/filter/pointwise): Missing pointwise operations (#13170) Define inversion/negation, division/subtraction, scalar multiplication/addition, scaling/translation, scalar subtraction of filters using the new `filter.map₂`. Golf the existing API. ESTIMATED CHANGES Modified src/order/filter/pointwise.lean + theorem filter.bot_div + theorem filter.bot_mul + theorem filter.bot_smul + theorem filter.bot_vsub + theorem filter.div_bot + theorem filter.div_eq_bot_iff + theorem filter.div_mem_div + theorem filter.div_ne_bot_iff + theorem filter.eventually_one + theorem filter.inv_mem_inv + theorem filter.le_mul_iff + theorem filter.le_one_iff + theorem filter.le_smul_iff + theorem filter.le_vsub_iff + theorem filter.map_inv' + theorem filter.map_smul + theorem filter.map₂_div + theorem filter.map₂_mul + theorem filter.map₂_smul + theorem filter.map₂_vsub + theorem filter.mem_div + theorem filter.mem_inv - theorem filter.mem_mul + theorem filter.mem_mul_iff +/- theorem filter.mem_one + theorem filter.mem_smul + theorem filter.mem_smul_filter + theorem filter.mem_vsub + theorem filter.mul_bot + theorem filter.mul_eq_bot_iff +/- theorem filter.mul_mem_mul + theorem filter.mul_ne_bot_iff + theorem filter.ne_bot.div + theorem filter.ne_bot.inv +/- theorem filter.ne_bot.mul + theorem filter.ne_bot.smul + theorem filter.ne_bot.smul_filter + theorem filter.ne_bot.vsub + theorem filter.ne_bot_inv_iff +/- theorem filter.one_mem_one + theorem filter.principal_one + theorem filter.pure_one + theorem filter.smul_bot + theorem filter.smul_eq_bot_iff + theorem filter.smul_filter_bot + theorem filter.smul_filter_eq_bot_iff + theorem filter.smul_filter_le_smul_filter + theorem filter.smul_filter_ne_bot_iff + theorem filter.smul_le_smul + theorem filter.smul_le_smul_left + theorem filter.smul_le_smul_right + theorem filter.smul_mem_smul + theorem filter.smul_ne_bot_iff + theorem filter.smul_set_mem_smul_filter + theorem filter.tendsto.div_div + theorem filter.tendsto.inv_inv + theorem filter.tendsto_one + theorem filter.vsub_bot + theorem filter.vsub_eq_bot_iff + theorem filter.vsub_le_vsub + theorem filter.vsub_le_vsub_left + theorem filter.vsub_le_vsub_right + theorem filter.vsub_mem_vsub + theorem filter.vsub_ne_bot_iff Modified src/topology/algebra/filter_basis.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/order/basic.lean - theorem filter.map_neg + theorem filter.map_neg_eq_comap_neg 2022-04-12 08:46:24 9984960 fix(counterexamples): typo in module docstring (#13378) ESTIMATED CHANGES Modified counterexamples/homogeneous_prime_not_prime.lean 2022-04-12 08:46:23 36bafae feat(topology/bornology/basic): review (#13374) * add lemmas; * upgrade some implications to `iff`s. ESTIMATED CHANGES Modified src/topology/bornology/basic.lean +/- theorem bornology.is_bounded.subset +/- theorem bornology.is_bounded.union +/- def bornology.is_bounded +/- theorem bornology.is_bounded_Union +/- theorem bornology.is_bounded_bUnion + theorem bornology.is_bounded_bUnion_finset +/- theorem bornology.is_bounded_sUnion +/- theorem bornology.is_bounded_singleton + theorem bornology.is_bounded_union + theorem bornology.is_cobounded.inter + theorem bornology.is_cobounded.superset + theorem bornology.is_cobounded_Inter + theorem bornology.is_cobounded_bInter + theorem bornology.is_cobounded_bInter_finset + theorem bornology.is_cobounded_inter + theorem bornology.is_cobounded_sInter + theorem bornology.is_cobounded_univ +/- theorem bornology.sUnion_bounded_univ 2022-04-12 08:46:23 d065fd4 feat(ring_theory/ideal): generalize `x mod I ∈ J mod I ↔ x ∈ J` (#13358) We already had a lemma like this assuming `I ≤ J`, and we can drop the assumption if we instead change the RHS to `x ∈ J \sup I`. This also golfs the proof of the original `mem_quotient_iff_mem`. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.mem_quotient_iff_mem + theorem ideal.mem_quotient_iff_mem_sup 2022-04-12 08:46:22 c883519 feat(ring_theory/unique_factorization_domain): `factors x = normalized_factors x` (#13356) If the group of units is trivial, an arbitrary choice of factors is exactly the unique set of normalized factors. I made this a `simp` lemma in this direction because `normalized_factors` has a stronger specification than `factors`. I believe currently we actually know less about `normalized_factors` than `factors`, so if it proves too inconvenient I can also remove the `@[simp]`. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.factors_eq_normalized_factors 2022-04-12 08:46:20 85588f8 feat(data/multiset): lemmas on intersecting a multiset with `repeat x n` (#13355) Intersecting a multiset `s` with `repeat x n` gives `repeat x (min n (s.count x))`. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.inter_repeat + theorem multiset.repeat_inter 2022-04-12 08:46:19 f7fe7dd refactor(ring_theory/free_comm_ring): don't use is_ring_hom (#13352) ESTIMATED CHANGES Modified src/ring_theory/free_comm_ring.lean - def free_ring.of' 2022-04-12 08:46:19 fd53ce0 feat(order/filter/at_top_bot): add more `disjoint` lemmas (#13351) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.Iic_mem_at_bot + theorem filter.disjoint_at_bot_at_top + theorem filter.disjoint_at_bot_principal_Ici + theorem filter.disjoint_at_bot_principal_Ioi + theorem filter.disjoint_at_top_at_bot + theorem filter.disjoint_at_top_principal_Iic + theorem filter.disjoint_at_top_principal_Iio 2022-04-12 08:46:18 708e2de chore(group_theory/free_abelian_group): remove is_add_monoid_hom (#13349) ESTIMATED CHANGES Modified src/group_theory/free_abelian_group.lean - theorem free_abelian_group.is_add_group_hom_lift' - theorem free_abelian_group.is_add_group_hom_seq + def free_abelian_group.seq_add_group_hom 2022-04-12 08:46:17 333e4be feat(algebra/group/basic|topology/connected): add two lemmas (#13345) * from the sphere eversion project ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem mul_div_left_comm Modified src/topology/connected.lean + theorem is_connected_univ 2022-04-12 08:46:16 56d6399 chore(set_theory/cardinal): Golf `mk_le_mk_mul_of_mk_preimage_le` (#13329) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean 2022-04-12 08:46:15 670735f feat(model_theory/order): The theory of dense linear orders without endpoints (#13253) Defines the theory of dense linear orders without endpoints ESTIMATED CHANGES Modified src/model_theory/order.lean +/- def first_order.language.is_ordered_structure + theorem first_order.language.is_ordered_structure_iff + theorem first_order.language.order_Lhom_le_symb + theorem first_order.language.realize_densely_ordered + theorem first_order.language.realize_densely_ordered_iff + theorem first_order.language.realize_no_bot_order + theorem first_order.language.realize_no_bot_order_iff + theorem first_order.language.realize_no_top_order + theorem first_order.language.realize_no_top_order_iff + theorem first_order.language.rel_map_le_symb + def first_order.language.term.lt + theorem first_order.language.term.realize_le + theorem first_order.language.term.realize_lt 2022-04-12 08:46:14 34853a9 feat(topology/algebra/algebra): define the topological subalgebra generated by an element (#13093) This defines the topological subalgebra generated by a single element `x : A` of an algebra `A` as the topological closure of `algebra.adjoin R {x}`, and show it is commutative. I called it `algebra.elemental_algebra`; if someone knows if this actually has a name in the literature, or just has a better idea for the name, let me know! ESTIMATED CHANGES Modified src/ring_theory/adjoin/basic.lean + theorem algebra.self_mem_adjoin_singleton Modified src/topology/algebra/algebra.lean + def algebra.elemental_algebra + theorem algebra.self_mem_elemental_algebra +/- def subalgebra.comm_ring_topological_closure 2022-04-12 08:46:12 ed919b6 feat(algebra/algebraic_card): Cardinality of algebraic numbers (#12869) We prove the following result: the cardinality of algebraic numbers under an R-algebra is at most `# polynomial R * ω`. ESTIMATED CHANGES Added src/algebra/algebraic_card.lean + theorem algebraic.cardinal_mk_le_max + theorem algebraic.cardinal_mk_le_mul + theorem algebraic.cardinal_mk_le_of_infinite + theorem algebraic.cardinal_mk_lift_le_max + theorem algebraic.cardinal_mk_lift_le_mul + theorem algebraic.cardinal_mk_lift_le_of_infinite + theorem algebraic.cardinal_mk_of_encodable_of_char_zero + theorem algebraic.countable_of_encodable + theorem algebraic.omega_le_cardinal_mk_of_char_zero 2022-04-12 08:46:11 6bc2bd6 feat(algebraic_geometry/projective_spectrum): Proj as a locally ringed space (#12773) This pr is about proving that Proj with its structure sheaf is a locally ringed space ESTIMATED CHANGES Modified src/algebraic_geometry/projective_spectrum/structure_sheaf.lean + def algebraic_geometry.Proj.stalk_iso' + def algebraic_geometry.Proj.to_LocallyRingedSpace + def algebraic_geometry.Proj.to_SheafedSpace + theorem algebraic_geometry.germ_comp_stalk_to_fiber_ring_hom + theorem algebraic_geometry.homogeneous_localization.mem_basic_open + def algebraic_geometry.homogeneous_localization_to_stalk + def algebraic_geometry.open_to_localization + theorem algebraic_geometry.res_apply + def algebraic_geometry.section_in_basic_open + def algebraic_geometry.stalk_to_fiber_ring_hom + theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ' + theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ 2022-04-12 08:46:10 72e1a9e feat(ring_theory/valuation/valuation_ring): Valuation rings and their associated valuation. (#12719) This PR defines a class `valuation_ring`, stating that an integral domain is a valuation ring. We also show that valuation rings induce valuations on their fraction fields, that valuation rings are local, and that their lattice of ideals is totally ordered. ESTIMATED CHANGES Added src/ring_theory/valuation/valuation_ring.lean + theorem valuation_ring.coe_equiv_integer_apply + theorem valuation_ring.mem_integer_iff + theorem valuation_ring.of_integers + theorem valuation_ring.range_algebra_map_eq + def valuation_ring.valuation + def valuation_ring.value_group Modified src/ring_theory/witt_vector/discrete_valuation_ring.lean + theorem witt_vector.discrete_valuation_ring 2022-04-12 07:55:03 b889567 feat(data/complex/basic): add a few lemmas (#13354) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.I_mul_im + theorem complex.I_mul_re + theorem complex.abs_im_lt_abs + theorem complex.abs_re_lt_abs + theorem complex.mul_I_im + theorem complex.mul_I_re 2022-04-12 05:57:50 0783742 chore(*): more assumptions to lemmas that are removable (#13364) This time I look at assumptions that are actually provable by simp from the earlier assumptions (fortunately there are only a couple of these), and one more from the review of #13316 that was slightly too nontrivial to be found automatically. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean +/- theorem nnreal.rpow_lt_one Modified src/data/nat/log.lean +/- theorem nat.lt_pow_succ_log_self Modified src/ring_theory/adjoin/basic.lean 2022-04-12 05:57:49 56f6c8e chore(algebra/big_operators/intervals): Move and golf sum_range_sub_sum_range (#13359) Move sum_range_sub_sum_range to a better file. Also implemented the golf demonstrated in this paper https://arxiv.org/pdf/2202.01344.pdf from @spolu. ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean + theorem finset.prod_Ico_eq_div + theorem finset.prod_range_sub_prod_range - theorem finset.sum_Ico_eq_sub Modified src/data/complex/exponential.lean - theorem sum_range_sub_sum_range 2022-04-12 05:57:48 603db27 feat(topology/metric_space/basic): some lemmas about dist (#13343) from the sphere eversion project ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem dist_self_add_left + theorem dist_self_add_right Modified src/topology/metric_space/basic.lean +/- theorem ball_prod_same +/- theorem closed_ball_prod_same + theorem dist_prod_same_left + theorem dist_prod_same_right +/- theorem prod.dist_eq 2022-04-12 05:24:39 cbea7e1 feat(algebra/order/monoid_lemmas_zero_lt): add some lemmas assuming `mul_one_class` `preorder` (#13299) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.le_of_le_mul_of_le_one_left + theorem zero_lt.le_of_le_mul_of_le_one_right + theorem zero_lt.le_of_mul_le_of_one_le_left + theorem zero_lt.le_of_mul_le_of_one_le_right + theorem zero_lt.lt_of_lt_mul_of_le_one_left + theorem zero_lt.lt_of_lt_mul_of_le_one_right + theorem zero_lt.lt_of_mul_lt_of_one_le_left + theorem zero_lt.lt_of_mul_lt_of_one_le_right 2022-04-12 05:24:38 e3db2e7 feat(group_theory/complement): Criterion for complementary subgroups (#13292) This lemma gives a criterion for a stabilizer subgroup to be a complementary subgroup. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.is_complement'_stabilizer 2022-04-12 03:21:18 fdd68d9 fix(category_theory/elements): speed up `groupoid_of_elements` (#13372) from 14.5s to 6s It's [reported](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Quadratic.20Hilbert.20symbol.20over.20.E2.84.9A/near/278592167) that this is causing timeouts in recent bors batches. ESTIMATED CHANGES Modified src/category_theory/elements.lean 2022-04-12 03:21:17 bf1b813 chore(algebra/module/basic): generalize to add_monoid_hom_class (#13346) I need some of these lemmas for `ring_hom`. Additionally, this: * removes `map_nat_module_smul` (duplicate of `map_nsmul`) and `map_int_module_smul` (duplicate of `map_zsmul`) * renames `map_rat_module_smul` to `map_rat_smul` for brevity. * adds the lemmas `inv_nat_cast_smul_comm` and `inv_int_cast_smul_comm`. * Swaps the order of the arguments to `map_zsmul` and `map_nsmul` to align with the usual rules (`to_additive` emitted them in the wrong order) ESTIMATED CHANGES Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebra/hom/group.lean + theorem map_nsmul +/- theorem map_pow + theorem map_zsmul Modified src/algebra/module/basic.lean - theorem add_monoid_hom.map_int_cast_smul - theorem add_monoid_hom.map_int_module_smul - theorem add_monoid_hom.map_inv_int_cast_smul - theorem add_monoid_hom.map_inv_nat_cast_smul - theorem add_monoid_hom.map_nat_cast_smul - theorem add_monoid_hom.map_nat_module_smul - theorem add_monoid_hom.map_rat_cast_smul - theorem add_monoid_hom.map_rat_module_smul + theorem inv_int_cast_smul_comm + theorem inv_nat_cast_smul_comm + theorem map_int_cast_smul + theorem map_inv_int_cast_smul + theorem map_inv_nat_cast_smul + theorem map_nat_cast_smul + theorem map_rat_cast_smul + theorem map_rat_smul Modified src/algebra/module/linear_map.lean Modified src/category_theory/preadditive/default.lean Modified src/group_theory/free_abelian_group.lean Modified src/topology/instances/real_vector_space.lean 2022-04-12 03:21:16 955cb8e feat(data/list/basic): add a theorem about last and append (#13336) When `ys` is not empty, we can conclude that `last (xs ++ ys)` is `last ys`. ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.last_append + theorem list.last_append_singleton Modified src/data/list/cycle.lean 2022-04-12 03:21:15 10a3faa feat(algebra/order/monoid_lemmas_zero_lt): add lemmas assuming `mul_zero_class` `preorder` (#13297) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.left.mul_pos + theorem zero_lt.mul_neg_of_neg_of_pos + theorem zero_lt.mul_neg_of_pos_of_neg + theorem zero_lt.right.mul_pos 2022-04-12 03:21:14 fe1c78a feat(data/polynomial/algebra_map): remove some lemmas about `aeval`, add `protected` on `polynomial.map_list_prod` (#13294) Remove `aeval_sum` which is a duplicate of `map_sum`. Remove `aeval_prod` which is a duplicate of `map_prod`. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean - theorem polynomial.aeval_prod - theorem polynomial.aeval_sum Modified src/data/polynomial/eval.lean - theorem polynomial.map_list_prod 2022-04-12 03:21:13 483b7df feat(analysis/convex/strict_convex_space): Ray characterization of `∥x - y∥` (#13293) `∥x - y∥ = |∥x∥ - ∥y∥|` if and only if `x` and `y` are on the same ray. ESTIMATED CHANGES Modified src/analysis/complex/arg.lean +/- theorem complex.abs_add_eq +/- theorem complex.abs_add_eq_iff +/- theorem complex.abs_sub_eq + theorem complex.abs_sub_eq_iff +/- theorem complex.same_ray_iff +/- theorem complex.same_ray_of_arg_eq Modified src/analysis/convex/strict_convex_space.lean + theorem abs_lt_norm_sub_of_not_same_ray + theorem lt_norm_sub_of_not_same_ray + theorem not_same_ray_iff_abs_lt_norm_sub + theorem same_ray_iff_norm_sub 2022-04-12 03:21:12 f1c98ba feat(topology/uniform_space/uniform_convergence_topology): define the uniform structure of uniform convergence (#13073) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem inf_uniformity' + theorem infi_uniformity' + theorem le_iff_uniform_continuous_id Added src/topology/uniform_space/uniform_convergence_topology.lean + theorem uniform_convergence.t2_space + theorem uniform_convergence.uniform_continuous_eval + theorem uniform_convergence_on.t2_space_of_covering + theorem uniform_convergence_on.uniform_continuous_eval_of_mem 2022-04-12 01:13:15 7ba9c3f feat(order/basic): More order instances for `subtype` (#13134) Add the `has_le`, `has_lt`, `decidable_le`, `decidable_lt`, `bounded_order` instances. Incorporating the `decidable_le` and `decidable_lt` instances into the `linear_order` one breaks some defeqs with `ite`/`dite`. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean Modified src/data/pnat/basic.lean Modified src/order/basic.lean +/- theorem subtype.coe_le_coe +/- theorem subtype.coe_lt_coe +/- theorem subtype.mk_le_mk +/- theorem subtype.mk_lt_mk Modified src/order/bounded_order.lean + theorem subtype.coe_bot + theorem subtype.coe_top + theorem subtype.mk_bot + theorem subtype.mk_top 2022-04-11 23:09:24 0453d60 feat(algebraic_geometry/projective_spectrum): structure sheaf of Proj of graded ring (#13072) Construct the structure sheaf of Proj of a graded algebra. ESTIMATED CHANGES Added src/algebraic_geometry/projective_spectrum/structure_sheaf.lean + def algebraic_geometry.projective_spectrum.Proj.structure_sheaf + def algebraic_geometry.projective_spectrum.structure_sheaf.is_fraction + def algebraic_geometry.projective_spectrum.structure_sheaf.is_fraction_prelocal + def algebraic_geometry.projective_spectrum.structure_sheaf.is_locally_fraction + theorem algebraic_geometry.projective_spectrum.structure_sheaf.section_subring.add_mem' + theorem algebraic_geometry.projective_spectrum.structure_sheaf.section_subring.mul_mem' + theorem algebraic_geometry.projective_spectrum.structure_sheaf.section_subring.neg_mem' + theorem algebraic_geometry.projective_spectrum.structure_sheaf.section_subring.one_mem' + theorem algebraic_geometry.projective_spectrum.structure_sheaf.section_subring.zero_mem' + def algebraic_geometry.projective_spectrum.structure_sheaf.sections_subring + def algebraic_geometry.projective_spectrum.structure_sheaf.structure_presheaf_comp_forget + def algebraic_geometry.projective_spectrum.structure_sheaf.structure_presheaf_in_CommRing + def algebraic_geometry.projective_spectrum.structure_sheaf.structure_sheaf_in_Type Modified src/algebraic_geometry/projective_spectrum/topology.lean + def projective_spectrum.Top 2022-04-11 23:09:23 f94cd0f feat(analysis/normed/normed_field): Pi types form a normed ring (#12912) ESTIMATED CHANGES Modified src/analysis/normed/normed_field.lean Modified src/data/finset/lattice.lean + theorem finset.inf'_mul_le_mul_inf'_of_nonneg + theorem finset.mul_inf_le_inf_mul_of_nonneg + theorem finset.sup'_mul_le_mul_sup'_of_nonneg + theorem finset.sup_mul_le_mul_sup_of_nonneg 2022-04-11 20:58:27 887f933 feat(data/fin/tuple/nat_antidiagonal): add an equiv and some TODO comments. (#13338) This follows on from #13031, and: * Adds the tuple version of an antidiagonal equiv * Makes some arguments implicit * Adds some comments to tie together `finset.nat.antidiagonal_tuple` with the `cut` definition used in one of the 100 Freek problems. ESTIMATED CHANGES Modified archive/100-theorems-list/45_partition.lean + theorem cut_univ_fin_eq_antidiagonal_tuple Modified src/data/fin/tuple/nat_antidiagonal.lean +/- theorem finset.nat.mem_antidiagonal_tuple + def finset.nat.sigma_antidiagonal_tuple_equiv_tuple +/- theorem list.nat.mem_antidiagonal_tuple +/- theorem multiset.nat.mem_antidiagonal_tuple 2022-04-11 20:58:26 455bc65 chore(representation_theory/invariants): clean up some simps (#13337) ESTIMATED CHANGES Modified src/representation_theory/invariants.lean +/- theorem representation.smul_average_id 2022-04-11 20:58:25 e8339bd feat(category_theory/fully_faithful): nat_trans_of_comp_fully_faithful (#13327) I added `nat_iso_of_comp_fully_faithful` in an earlier PR, but left out the more basic construction. ESTIMATED CHANGES Modified src/category_theory/functor/fully_faithful.lean +/- def category_theory.nat_iso_of_comp_fully_faithful + theorem category_theory.nat_iso_of_comp_fully_faithful_hom + theorem category_theory.nat_iso_of_comp_fully_faithful_inv + def category_theory.nat_trans_of_comp_fully_faithful 2022-04-11 20:58:24 4a07054 chore(*): remove numerous edge cases from lemmas (#13316) This PR uses the same methodology as #10774 to use a linter to remove edge case assumptions from lemmas when the result is easy to prove without the assumption. These are assumptions things like: n \ne 0, 0 < n, p \ne \top, nontrivial R, nonempty R. Removing these unneeded assumptions makes such lemmas easier to apply, and lets us golf a few other proofs along the way. The file with the most changes is `src/ring_theory/unique_factorization_domain.lean` where the linter inspired me to allow trivial monoids in many places. The code I used to find these is in the branch [https://github.com/leanprover-community/mathlib/tree/alexjbest/simple_edge_cases_linter](https://github.com/leanprover-community/mathlib/tree/alexjbest/simple_edge_cases_linter?rgh-link-date=2021-12-13T23%3A53%3A31Z) ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean +/- theorem finset.sum_range_by_parts Modified src/algebra/order/ring.lean Modified src/algebra/order/with_zero.lean +/- theorem mul_inv_le_of_le_mul Modified src/algebra/polynomial/big_operators.lean +/- theorem polynomial.multiset_prod_X_sub_C_coeff_card_pred +/- theorem polynomial.prod_X_sub_C_coeff_card_pred Modified src/analysis/specific_limits/normed.lean Modified src/data/nat/factorization.lean +/- theorem nat.dvd_iff_prime_pow_dvd_dvd Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/mirror.lean Modified src/data/rat/basic.lean +/- theorem rat.exists_eq_mul_div_num_and_eq_mul_div_denom +/- theorem rat.num_denom_mk Modified src/data/rat/floor.lean Modified src/data/zmod/basic.lean +/- theorem zmod.neg_eq_self_mod_two Modified src/field_theory/minpoly.lean +/- theorem minpoly.eq_X_sub_C_of_algebra_map_inj Modified src/field_theory/ratfunc.lean +/- theorem ratfunc.int_degree_add_le +/- theorem ratfunc.num_div + theorem ratfunc.num_div_dvd' +/- theorem ratfunc.num_div_dvd Modified src/linear_algebra/matrix/charpoly/coeff.lean +/- theorem finite_field.trace_pow_card +/- theorem zmod.trace_pow_card Modified src/measure_theory/constructions/pi.lean +/- theorem measure_theory.pi_premeasure_pi' +/- theorem measure_theory.pi_premeasure_pi_eval Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/function_field.lean Modified src/number_theory/padics/padic_norm.lean Modified src/ring_theory/chain_of_divisors.lean Modified src/ring_theory/dedekind_domain/ideal.lean +/- theorem irreducible_pow_sup_of_le Modified src/ring_theory/unique_factorization_domain.lean +/- theorem associates.coprime_iff_inf_one +/- theorem associates.count_le_count_of_factors_le +/- theorem associates.count_le_count_of_le +/- theorem associates.count_mul +/- theorem associates.count_mul_of_coprime' +/- theorem associates.count_mul_of_coprime +/- theorem associates.count_of_coprime +/- theorem associates.dvd_count_of_dvd_count_mul +/- theorem associates.factors_le +/- theorem associates.factors_mono +/- theorem associates.factors_mul +/- theorem associates.le_of_count_ne_zero +/- theorem associates.sup_mul_inf 2022-04-11 20:58:23 a839f4d feat(number_theory/quadratic_reciprocity): change order of arguments … (#13311) …in legendre_sym This is the first step in a major overhaul of the contents of number_theory/quadratic_reciprocity. As a first step, the order of the arguments `a` and `p` to `legendre_sym` is swapped, based on a [poll](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Quadratic.20Hilbert.20symbol.20over.20.E2.84.9A) on Zulip. ESTIMATED CHANGES Modified src/number_theory/quadratic_reciprocity.lean +/- def zmod.legendre_sym +/- theorem zmod.legendre_sym_eq_one_or_neg_one +/- theorem zmod.legendre_sym_eq_pow +/- theorem zmod.legendre_sym_eq_zero_iff +/- theorem zmod.legendre_sym_two 2022-04-11 20:58:22 4e1102a feat(probability/integration): characterize indep_fun by expected product of comp (#13270) This is the third PR into probability/integration, to characterize independence by the expected product of compositions. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.inter_indicator_one Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_indicator_one Modified src/probability/integration.lean + theorem probability_theory.indep_fun_iff_integral_comp_mul 2022-04-11 18:49:41 a521a32 feat(data/set/basic): Missing `set.image_perm` (#13242) ESTIMATED CHANGES Modified src/data/finset/basic.lean Modified src/data/set/basic.lean + theorem set.image_perm 2022-04-11 18:49:39 dee4958 feat(computability/*): Automata lemmas (#13194) A bunch of missing API for `language`, `regular_expression`, `DFA`, `NFA`, `ε_NFA`. ESTIMATED CHANGES Modified src/computability/DFA.lean +/- def DFA.eval + theorem DFA.eval_append_singleton + theorem DFA.eval_from_append_singleton + theorem DFA.eval_from_nil + theorem DFA.eval_from_singleton + theorem DFA.eval_nil + theorem DFA.eval_singleton Modified src/computability/NFA.lean +/- def NFA.eval + theorem NFA.eval_append_singleton + theorem NFA.eval_from_append_singleton + theorem NFA.eval_from_nil + theorem NFA.eval_from_singleton + theorem NFA.eval_nil + theorem NFA.eval_singleton +/- theorem NFA.mem_step_set +/- def NFA.step_set + theorem NFA.step_set_empty Modified src/computability/epsilon_NFA.lean + theorem ε_NFA.accept_one + theorem ε_NFA.accept_zero +/- def ε_NFA.accepts + theorem ε_NFA.eval_append_singleton + theorem ε_NFA.eval_from_append_singleton + theorem ε_NFA.eval_from_empty + theorem ε_NFA.eval_from_nil + theorem ε_NFA.eval_from_singleton + theorem ε_NFA.eval_nil + theorem ε_NFA.eval_singleton + theorem ε_NFA.mem_step_set_iff + theorem ε_NFA.start_one + theorem ε_NFA.start_zero + theorem ε_NFA.step_one +/- def ε_NFA.step_set + theorem ε_NFA.step_set_empty + theorem ε_NFA.step_zero + theorem ε_NFA.subset_ε_closure +/- inductive ε_NFA.ε_closure + theorem ε_NFA.ε_closure_empty + theorem ε_NFA.ε_closure_univ Modified src/computability/language.lean + theorem language.append_mem_mul + theorem language.join_mem_star +/- theorem language.mem_add +/- theorem language.mem_mul +/- theorem language.mem_one +/- theorem language.mem_star +/- theorem language.nil_mem_one + theorem language.nil_mem_star Modified src/computability/regular_expressions.lean + theorem regular_expression.deriv_add + theorem regular_expression.deriv_char_of_ne + theorem regular_expression.deriv_char_self + theorem regular_expression.deriv_one + theorem regular_expression.deriv_star + theorem regular_expression.deriv_zero + theorem regular_expression.matches_add - theorem regular_expression.matches_add_def + theorem regular_expression.matches_char + theorem regular_expression.matches_epsilon - theorem regular_expression.matches_epsilon_def + theorem regular_expression.matches_mul - theorem regular_expression.matches_mul_def + theorem regular_expression.matches_star - theorem regular_expression.matches_star_def + theorem regular_expression.matches_zero - theorem regular_expression.matches_zero_def Modified src/data/set/basic.lean + theorem set.eq_empty_of_forall_not_mem 2022-04-11 18:49:38 77ae091 feat(number_theory/cyclotomic/primitive_roots): add `pow_sub_one_norm_prime_pow_ne_two` (#13152) We add `pow_sub_one_norm_prime_pow_ne_two`, that computes the norm of `ζ ^ (p ^ s) - 1`, where `ζ` is a primitive `p ^ (k + 1)`-th root of unity. This will be used to compute the discriminant of the `p ^ n`-th cyclotomic field. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/primitive_roots.lean +/- theorem is_cyclotomic_extension.prime_ne_two_norm_zeta_sub_one + theorem is_cyclotomic_extension.prime_ne_two_pow_norm_zeta_pow_sub_one +/- theorem is_cyclotomic_extension.prime_ne_two_pow_norm_zeta_sub_one + theorem is_primitive_root.pow_sub_one_norm_prime_ne_two + theorem is_primitive_root.pow_sub_one_norm_prime_pow_ne_two + theorem is_primitive_root.pow_sub_one_norm_two - theorem is_primitive_root.sub_one_norm_pow_two +/- theorem is_primitive_root.sub_one_norm_prime +/- theorem is_primitive_root.sub_one_norm_prime_ne_two + theorem is_primitive_root.sub_one_norm_two Modified src/ring_theory/roots_of_unity.lean - theorem is_primitive_root.coe_subgroup_iff + theorem is_primitive_root.coe_submonoid_class_iff 2022-04-11 18:49:37 04250c8 feat(measure_theory/measure/haar): Add the Steinhaus Theorem (#12932) This PR proves the [Steinhaus Theorem](https://en.wikipedia.org/wiki/Steinhaus_theorem) in any locally compact group with a Haar measure. ESTIMATED CHANGES Modified src/measure_theory/measure/haar.lean + theorem measure_theory.measure.div_mem_nhds_one_of_haar_pos 2022-04-11 18:49:35 cea5e4b feat(data/sign): the sign function (#12835) ESTIMATED CHANGES Added src/data/sign.lean + def sign + theorem sign_apply + theorem sign_eq_zero_iff + def sign_hom + theorem sign_ne_zero + theorem sign_neg + theorem sign_pos + def sign_type.cast + theorem sign_type.cast_eq_coe + def sign_type.cast_hom + theorem sign_type.coe_neg_one + theorem sign_type.coe_one + theorem sign_type.coe_zero + def sign_type.fin3_equiv + inductive sign_type.le + def sign_type.mul + theorem sign_type.neg_eq_neg_one + theorem sign_type.pos_eq_one + theorem sign_type.zero_eq_zero + inductive sign_type + theorem sign_zero 2022-04-11 16:38:59 695a2b6 feat(combinatorics/simple_graph/connectivity): induced maps on walks and paths (#13310) Every graph homomorphism gives an induced map on walks. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + def simple_graph.hom.map_dart + theorem simple_graph.hom.map_dart_apply Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.path.map_embedding_injective + theorem simple_graph.path.map_injective + theorem simple_graph.walk.darts_map + theorem simple_graph.walk.edges_map + theorem simple_graph.walk.length_map + theorem simple_graph.walk.map_append + theorem simple_graph.walk.map_cons + theorem simple_graph.walk.map_injective_of_injective + theorem simple_graph.walk.map_is_path_of_injective + theorem simple_graph.walk.map_nil + theorem simple_graph.walk.reverse_map + theorem simple_graph.walk.support_map 2022-04-11 16:38:58 a447dae chore(category_theory/*): reduce imports (#13305) An unnecessary import of `tactic.monotonicity` earlier in the hierarchy was pulling in quite a lot. A few compensatory imports are needed later. ESTIMATED CHANGES Modified src/algebra/category/Semigroup/basic.lean Modified src/category_theory/essential_image.lean Modified src/category_theory/functor/basic.lean 2022-04-11 16:38:57 5e8d6bb feat(combinatorics/simple_graph/{connectivity,adj_matrix}): powers of adjacency matrix (#13304) The number of walks of length-n between two vertices is given by the corresponding entry of the n-th power of the adjacency matrix. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/adj_matrix.lean + theorem simple_graph.adj_matrix_pow_apply_eq_card_walk Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.card_set_walk_length_eq + theorem simple_graph.coe_finset_walk_length_eq + def simple_graph.finset_walk_length + theorem simple_graph.set_walk_length_succ_eq + theorem simple_graph.set_walk_length_to_finset_eq + theorem simple_graph.set_walk_length_zero_eq_of_ne + theorem simple_graph.set_walk_self_length_zero_eq + theorem simple_graph.walk.length_eq_of_mem_finset_walk_length + theorem simple_graph.walk.length_eq_zero_iff 2022-04-11 16:38:56 bfd5384 chore(category_theory): switch ulift and filtered in import hierarchy (#13302) Many files require `ulift` but not `filtered`, so `ulift` should be lower in the import hierarchy. This avoids needing all of `data/` up to `data/fintype/basic` before we can start defining categorical limits. ESTIMATED CHANGES Modified src/category_theory/category/ulift.lean Modified src/category_theory/filtered.lean 2022-04-11 16:38:55 dcb6c86 feat(measure_theory/function/uniform_integrable): Equivalent condition for uniformly integrable in the probability sense (#12955) A sequence of functions is uniformly integrable in the probability sense if and only if `∀ ε : ℝ, 0 < ε → ∃ C : ℝ≥0, ∀ i, snorm ({x | C ≤ ∥f i x∥₊}.indicator (f i)) p μ ≤ ennreal.of_real ε`. ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem lt_two_mul_self Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.snorm_indicator_ge_of_bdd_below Modified src/measure_theory/function/uniform_integrable.lean + theorem measure_theory.uniform_integrable.spec + theorem measure_theory.uniform_integrable_iff Modified src/order/filter/indicator_function.lean + theorem filter.eventually_eq.indicator + theorem filter.eventually_eq.indicator_zero 2022-04-11 16:38:54 797c713 feat(ring_theory/coprime/lemmas): alternative characterisations of pairwise coprimeness (#12911) This provides two condtions equivalent to pairwise coprimeness : * each term is coprime to the product of all others * 1 can be obtained as a linear combination of all products with one term missing. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.pairwise_cons' + theorem finset.pairwise_cons + theorem finset.pairwise_subtype_iff_pairwise_finset' + theorem finset.pairwise_subtype_iff_pairwise_finset Modified src/ring_theory/coprime/lemmas.lean + theorem exists_sum_eq_one_iff_pairwise_coprime' + theorem exists_sum_eq_one_iff_pairwise_coprime + theorem pairwise_coprime_iff_coprime_prod 2022-04-11 14:08:55 67d6097 feat(data/option/basic): add `option.coe_get` (#13081) Adds lemma `coe_get {o : option α} (h : o.is_some) : ((option.get h : α) : option α) = o` Extracted from @huynhtrankhanh's https://github.com/leanprover-community/mathlib/pull/11162, moved here to a separate PR ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.coe_get 2022-04-11 11:52:38 4139824 refactor(category_theory/differential_object): simp only -> simp_rw (#13333) This is extremely minor; I replace a `simp only` with a `simp_rw`. This proof is apparently rather fragile with respect to some other changes I'm trying to make, and I worked out the correct `simp_rw` sequence while debugging. May as well preserve it for posterity, or at least until next time I make it break. ESTIMATED CHANGES Modified src/category_theory/differential_object.lean 2022-04-11 11:52:37 c7e76bc chore(category_theory/monoidal/discrete): typo in to_additive name (#13332) ESTIMATED CHANGES Modified src/category_theory/monoidal/discrete.lean 2022-04-11 11:52:36 d405955 feat(analysis/complex/re_im_topology): add `metric.bounded.re_prod_im` (#13324) Also add `complex.mem_re_prod_im`. ESTIMATED CHANGES Modified src/analysis/complex/re_im_topology.lean +/- theorem is_closed.re_prod_im +/- theorem is_open.re_prod_im + theorem metric.bounded.re_prod_im Modified src/data/complex/basic.lean + theorem complex.mem_re_prod_im 2022-04-11 11:52:34 ebbe763 feat(measure_theory/constructions/borel_space): a set with `μ (∂ s) = 0` is null measurable (#13322) ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem closure_ae_eq_of_null_frontier + theorem interior_ae_eq_of_null_frontier - theorem measure_closure_of_null_bdry + theorem measure_closure_of_null_frontier - theorem measure_interior_of_null_bdry + theorem measure_interior_of_null_frontier + theorem null_measurable_set_of_null_frontier 2022-04-11 11:52:33 7e69148 feat(order/conditionally_complete_lattice): Make `cSup_empty` a `simp` lemma (#13318) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean +/- theorem cSup_empty +/- theorem csupr_of_empty 2022-04-11 11:52:32 159855d feat(set_theory/ordinal_arithmetic): `is_normal.monotone` (#13314) We introduce a convenient abbreviation for `is_normal.strict_mono.monotone`. ESTIMATED CHANGES Modified src/set_theory/fixed_points.lean Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.is_normal.monotone 2022-04-11 11:52:31 c5b83f0 doc(combinatorics/simple_graph/basic): mention half-edge synonym for darts (#13312) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2022-04-11 11:52:30 722c0df feat(category_theory/nat_iso): add simp lemmas (#13303) ESTIMATED CHANGES Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.naturality_1' + theorem category_theory.nat_iso.naturality_2' 2022-04-11 11:52:29 f7e862f feat(analysis/special_functions/pow): `z ^ w` is continuous in `(z, w)` at `(0, w)` if `0 < re w` (#13288) Also add a few supporting lemmas. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem complex.abs_cpow_le + theorem complex.abs_cpow_of_ne_zero + theorem complex.continuous_at_cpow_zero_of_re_pos 2022-04-11 11:52:28 57682ff feat(data/complex/is_R_or_C): add `polynomial.of_real_eval` (#13287) ESTIMATED CHANGES Modified src/data/complex/is_R_or_C.lean + theorem polynomial.of_real_eval 2022-04-11 11:52:27 577df07 feat(analysis/asymptotics): add a few versions of `c=o(x)` as `x→∞` (#13286) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_o_const_id_at_bot + theorem asymptotics.is_o_const_id_at_top + theorem asymptotics.is_o_const_id_comap_norm_at_top 2022-04-11 11:52:26 171e2aa feat(group_theory/group_action/basic): A `quotient_action` induces an action on left cosets (#13283) A `quotient_action` induces an action on left cosets. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean +/- theorem mul_action.quotient.smul_coe +/- theorem mul_action.quotient.smul_mk Modified src/linear_algebra/alternating.lean 2022-04-11 11:52:25 65b5dd8 feat(group_theory/transversal): A `quotient_action` induces an action on left transversals (#13282) A `quotient_action` induces an action on left transversals. Once #13283 is merged, I'll PR some more API generalizing the existing lemma `smul_symm_apply_eq_mul_symm_apply_inv_smul`. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.smul_to_fun Modified src/group_theory/schur_zassenhaus.lean 2022-04-11 11:52:24 2eba524 chore(topology/algebra/uniform_group): use morphism classes (#13273) ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean +/- theorem uniform_continuous_monoid_hom_of_continuous + theorem uniform_continuous_of_continuous_at_one +/- theorem uniform_continuous_of_tendsto_one +/- theorem uniform_group.uniform_continuous_iff_open_ker 2022-04-11 11:52:23 2b80d4a feat(topology/order): if `e` is an equiv, `induced e.symm = coinduced e` (#13272) ESTIMATED CHANGES Modified src/topology/order.lean + theorem equiv.coinduced_symm + theorem equiv.induced_symm 2022-04-11 11:52:21 c160083 feat(algebra/big_operators): `norm_num` plugin for list/multiset/finset prod/sum (#13005) This PR provides a plugin for the `norm_num` tactic that can evaluate finite sums and products, over lists, multisets and finsets. `simp` could already handle some of these operations, but `norm_num` is overall much more suited to dealing with larger numerical operations such as arising from large sums. I implemented the tactic as a `norm_num` plugin since it's intended to deal with numbers. I'm happy to make it its own tactic (`norm_bigop`?) if you feel this is outside of the `norm_num` scope. Similarly, I could also make a separate tactic for the parts that rewrite a list/multiset/finset into a sequence of `list.cons`es. ESTIMATED CHANGES Added src/algebra/big_operators/norm_num.lean + theorem tactic.norm_num.finset.eval_prod_of_list + theorem tactic.norm_num.finset.insert_eq_coe_list_cons + theorem tactic.norm_num.finset.insert_eq_coe_list_of_mem + theorem tactic.norm_num.list.cons_congr + theorem tactic.norm_num.list.map_congr + theorem tactic.norm_num.list.map_cons_congr + theorem tactic.norm_num.list.not_mem_cons + theorem tactic.norm_num.list.prod_congr + theorem tactic.norm_num.list.prod_cons_congr + theorem tactic.norm_num.multiset.cons_congr + theorem tactic.norm_num.multiset.map_congr + theorem tactic.norm_num.multiset.prod_congr Modified src/tactic/core.lean Modified test/norm_num_ext.lean 2022-04-11 09:27:57 e5bd941 feat(scripts): make style lint script more robust to lines starting with spaces (#13317) Currently some banned commands aren't caught if the line is indented. Because of this I previously snuck in a `set_option pp.all true` by accident ESTIMATED CHANGES Modified scripts/lint-style.py Modified src/group_theory/order_of_element.lean 2022-04-11 09:27:56 cd616e0 feat(analysis/special_functions/pow): more versions of `x ^ k = o(exp(b * x))` (#13285) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem is_o_pow_exp_pos_mul_at_top + theorem is_o_rpow_exp_at_top + theorem is_o_rpow_exp_pos_mul_at_top + theorem is_o_zpow_exp_pos_mul_at_top 2022-04-11 09:27:54 706905c fix(algebra/indicator_function): fix name of `mul_indicator_eq_one_iff` (#13284) It is about `≠`, so call it `mul_indicator_ne_one_iff`/`indicator_ne_zero_iff`. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.mul_indicator_apply_ne_one - theorem set.mul_indicator_eq_one_iff Modified src/measure_theory/measure/measure_space_def.lean Modified src/measure_theory/probability_mass_function/constructions.lean +/- theorem pmf.mem_support_filter_iff 2022-04-11 09:27:53 ff507a3 feat(model_theory/basic): Structures over the empty language (#13281) Any type is a first-order structure over the empty language. Any function, embedding, or equiv is a first-order hom, embedding or equiv over the empty language. ESTIMATED CHANGES Modified src/model_theory/basic.lean + def embedding.empty + def equiv.empty +/- def first_order.language.embedding.to_hom + theorem first_order.language.empty.nonempty_embedding_iff + theorem first_order.language.empty.nonempty_equiv_iff +/- def first_order.language.equiv.to_embedding +/- def first_order.language.equiv.to_hom + def first_order.language.hom_class.to_hom + def first_order.language.strong_hom_class.to_embedding + def first_order.language.strong_hom_class.to_equiv + def function.empty_hom Modified src/model_theory/language_map.lean +/- def first_order.language.constants_on 2022-04-11 09:27:52 fe17fee feat(topology/algebra/uniform_group): a subgroup of a uniform group is a uniform group (#13277) ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean 2022-04-11 09:27:50 6f428ed feat(group_theory/schreier): Finset version of Schreier's lemma (#13274) This PR adds a finset version of Schreier's lemma, getting closer to a statement in terms of `group.fg` and `group.rank`. ESTIMATED CHANGES Modified src/group_theory/schreier.lean + theorem subgroup.closure_mul_image_eq_top' 2022-04-11 09:27:48 102311e fix(algebra/module/basic,group_theory/group_action/defs): generalize nat and int smul_comm_class instances (#13174) The `add_group.int_smul_with_zero` instance appears to be new, everything else is moved and has `[semiring R] [add_comm_monoid M] [module R M]` relaxed to `[monoid R] [add_monoid M] [distrib_mul_action R M]`, with the variables renamed to match the destination file. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean Modified src/algebra/module/basic.lean Modified src/algebra/smul_with_zero.lean Modified src/group_theory/group_action/defs.lean Modified src/linear_algebra/tensor_product.lean Modified src/tactic/abel.lean 2022-04-11 04:32:07 4d27ecf refactor(order/conditionally_complete_lattice): `csupr_le_csupr` → `csupr_mono` (#13320) For consistency with `supr_mono` and `infi_mono` ESTIMATED CHANGES Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/order/conditionally_complete_lattice.lean - theorem cinfi_le_cinfi + theorem cinfi_mono - theorem csupr_le_csupr + theorem csupr_mono Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2022-04-11 02:03:03 6f9cb03 chore(*): make more transitive relations available to calc (#12860) Fixed as many possible declarations to have the correct argument order, as per [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/calc.20with.20.60.E2.89.83*.60). Golfed some random ones while I was at it. ESTIMATED CHANGES Modified src/algebra/divisibility.lean +/- theorem dvd_trans Modified src/analysis/asymptotics/asymptotic_equivalent.lean +/- theorem asymptotics.is_equivalent.trans +/- def asymptotics.is_equivalent Modified src/analysis/convex/extreme.lean Modified src/analysis/special_functions/polynomials.lean Modified src/combinatorics/colex.lean +/- theorem colex.le_trans +/- theorem colex.lt_trans Modified src/computability/tm_computable.lean +/- def turing.evals_to_in_time.trans Modified src/computability/turing_machine.lean Modified src/data/list/rotate.lean +/- theorem list.is_rotated.trans Modified src/data/set/basic.lean +/- theorem set.mem_of_mem_of_subset +/- theorem set.subset.trans Modified src/data/sym/sym2.lean +/- theorem sym2.rel.trans Modified src/logic/equiv/basic.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integrable.trans Modified src/measure_theory/measure/vector_measure.lean +/- theorem measure_theory.vector_measure.absolutely_continuous.trans Modified src/order/filter/basic.lean +/- theorem filter.eventually_eq.trans Modified src/order/ideal.lean +/- theorem order.ideal.mem_of_mem_of_le Modified src/order/rel_classes.lean +/- theorem ssubset_trans +/- theorem subset_trans Added test/calc.lean 2022-04-11 00:55:09 a85958c chore(measure_theory/mconstructions/prod): Speed up `finite_spanning_sets_in.prod` (#13325) Disable the computability check on `measure_theory.measure.finite_spanning_sets_in.prod` because it was taking 20s of compilation. ESTIMATED CHANGES Modified src/measure_theory/constructions/prod.lean - def measure_theory.measure.finite_spanning_sets_in.prod 2022-04-11 00:55:08 a2d09b2 feat(topology/algebra/order): add `le_on_closure` (#13290) ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean + theorem le_on_closure 2022-04-10 23:04:54 e5ae099 chore(topology/uniform_space/basic): golf a proof (#13289) Rewrite a proof using tactic mode and golf it. ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean 2022-04-10 23:04:53 8491021 chore(algebra/invertible): generalise typeclasses (#13275) ESTIMATED CHANGES Modified src/algebra/invertible.lean +/- theorem inv_of_neg +/- theorem inv_of_two_add_inv_of_two +/- def invertible_neg Modified src/algebra/ne_zero.lean 2022-04-10 23:04:52 4ded5ca fix(field_theory/galois): update docstring (#13188) ESTIMATED CHANGES Modified src/field_theory/galois.lean 2022-04-10 23:04:51 be22d07 feat(data/sym/basic): some basic lemmas in preparation for stars and bars (#12479) Some lemmas extracted from @huynhtrankhanh's #11162, moved here to a separate PR ESTIMATED CHANGES Modified src/data/sym/basic.lean + def sym.attach + theorem sym.attach_cons + theorem sym.attach_map_coe + theorem sym.attach_mk + theorem sym.attach_nil + theorem sym.coe_attach + theorem sym.coe_cons + theorem sym.coe_erase + theorem sym.coe_inj + theorem sym.coe_injective + theorem sym.coe_map +/- def sym.cons' +/- def sym.cons +/- theorem sym.cons_equiv_eq_equiv_cons +/- theorem sym.cons_erase +/- def sym.equiv_congr + theorem sym.erase_cons_head + theorem sym.erase_mk +/- def sym.map + theorem sym.map_congr +/- theorem sym.map_cons + theorem sym.map_id' +/- theorem sym.map_id + theorem sym.map_injective + theorem sym.map_mk +/- theorem sym.map_zero + theorem sym.mem_attach +/- theorem sym.mem_map + theorem sym.mem_mk + def sym.mk +/- def sym.sym' +/- def sym.sym_equiv_sym' +/- def sym +/- def vector.perm.is_setoid 2022-04-10 23:04:50 609eb59 feat(set_theory/cofinality): Every ordinal has a fundamental sequence (#12317) ESTIMATED CHANGES Modified src/set_theory/cofinality.lean +/- theorem ordinal.cof_cof + theorem ordinal.exists_fundamental_sequence + theorem ordinal.is_fundamental_sequence.blsub_eq + theorem ordinal.is_fundamental_sequence.cof_eq + theorem ordinal.is_fundamental_sequence.monotone + theorem ordinal.is_fundamental_sequence.strict_mono + theorem ordinal.is_fundamental_sequence.trans + def ordinal.is_fundamental_sequence 2022-04-10 21:57:11 5bf5740 chore(category_theory/fin_category): Speed up `as_type_equiv_obj_as_type` (#13298) Rename `obj_as_type_equiv_as_type` to `as_type_equiv_obj_as_type` (likely a typo). Use `equivalence.mk` instead of `equivalence.mk'` to build it and split the functors to separate definitions to tag them with `@[simps]` and make `dsimp` go further. On my machine, this cuts down the compile time from 41s to 3s. ESTIMATED CHANGES Modified src/category_theory/fin_category.lean - def category_theory.fin_category.obj_as_type_equiv_as_type 2022-04-10 20:28:46 60ccf8f feat(linear_algebra): add `adjoint_pair` from `bilinear_form` (#13203) Copying the definition and theorem about adjoint pairs from `bilinear_form` to `sesquilinear_form`. Defines the composition of two linear maps with a bilinear map to form a new bilinear map, which was missing from the `bilinear_map` API. We also use the new definition of adjoint pairs in `analysis/inner_product_space/adjoint`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean - theorem continuous_linear_map.is_adjoint_pair + theorem continuous_linear_map.is_adjoint_pair_inner - theorem linear_map.is_adjoint_pair + theorem linear_map.is_adjoint_pair_inner Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.comp_inj - theorem bilin_form.comp_injective Modified src/linear_algebra/bilinear_map.lean + def linear_map.compl₁₂ + theorem linear_map.compl₁₂_apply + theorem linear_map.compl₁₂_inj Modified src/linear_algebra/sesquilinear_form.lean + theorem linear_map.is_adjoint_pair.add + theorem linear_map.is_adjoint_pair.comp + theorem linear_map.is_adjoint_pair.mul + theorem linear_map.is_adjoint_pair.smul + theorem linear_map.is_adjoint_pair.sub + def linear_map.is_adjoint_pair + theorem linear_map.is_adjoint_pair_id + theorem linear_map.is_adjoint_pair_iff_comp_eq_compl₂ + theorem linear_map.is_adjoint_pair_zero + def linear_map.is_pair_self_adjoint + theorem linear_map.is_pair_self_adjoint_equiv + def linear_map.is_pair_self_adjoint_submodule + def linear_map.is_skew_adjoint + theorem linear_map.is_skew_adjoint_iff_neg_self_adjoint + theorem linear_map.mem_is_pair_self_adjoint_submodule + theorem linear_map.mem_self_adjoint_submodule + theorem linear_map.mem_skew_adjoint_submodule + def linear_map.self_adjoint_submodule + def linear_map.skew_adjoint_submodule 2022-04-10 20:28:45 a30cba4 feat(set_theory/cardinal_ordinal): Simp lemmas for `mk` (#13119) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.add_eq_max' + theorem cardinal.add_mk_eq_max' + theorem cardinal.add_mk_eq_max + theorem cardinal.mk_add_one_eq + theorem cardinal.mk_mul_omega_eq + theorem cardinal.mul_mk_eq_max + theorem cardinal.omega_mul_mk_eq 2022-04-10 19:34:23 965f46d feat(category_theory/monoidal): coherence tactic (#13125) This is an alternative to #12697 (although this one does not handle bicategories!) From the docstring: ``` Use the coherence theorem for monoidal categories to solve equations in a monoidal equation, where the two sides only differ by replacing strings of "structural" morphisms with different strings with the same source and target. That is, `coherence` can handle goals of the form `a ≫ f ≫ b ≫ g ≫ c = a' ≫ f ≫ b' ≫ g ≫ c'` where `a = a'`, `b = b'`, and `c = c'` can be proved using `coherence1`. ``` This PR additionally provides a "composition up to unitors+associators" operation, so you can write ``` example {U V W X Y : C} (f : U ⟶ V ⊗ (W ⊗ X)) (g : (V ⊗ W) ⊗ X ⟶ Y) : U ⟶ Y := f ⊗≫ g ``` ESTIMATED CHANGES Modified src/category_theory/monoidal/center.lean Added src/category_theory/monoidal/coherence.lean + def category_theory.monoidal_category.monoidal_comp + theorem category_theory.monoidal_category.monoidal_comp_refl + def category_theory.monoidal_category.monoidal_iso + def category_theory.monoidal_category.monoidal_iso_comp + theorem tactic.coherence.assoc_lift_hom Modified src/category_theory/monoidal/rigid.lean Added test/coherence.lean 2022-04-10 19:34:22 0bc2aa9 feat(data/fin/tuple/nat_antidiagonal): add `antidiagonal_tuple` (#13031) ESTIMATED CHANGES Added src/data/fin/tuple/nat_antidiagonal.lean + def finset.nat.antidiagonal_tuple + theorem finset.nat.antidiagonal_tuple_one + theorem finset.nat.antidiagonal_tuple_two + theorem finset.nat.antidiagonal_tuple_zero_succ + theorem finset.nat.antidiagonal_tuple_zero_zero + theorem finset.nat.mem_antidiagonal_tuple + def list.nat.antidiagonal_tuple + theorem list.nat.antidiagonal_tuple_one + theorem list.nat.antidiagonal_tuple_two + theorem list.nat.antidiagonal_tuple_zero_succ + theorem list.nat.antidiagonal_tuple_zero_zero + theorem list.nat.mem_antidiagonal_tuple + theorem list.nat.nodup_antidiagonal_tuple + def multiset.nat.antidiagonal_tuple + theorem multiset.nat.antidiagonal_tuple_one + theorem multiset.nat.antidiagonal_tuple_two + theorem multiset.nat.antidiagonal_tuple_zero_succ + theorem multiset.nat.antidiagonal_tuple_zero_zero + theorem multiset.nat.mem_antidiagonal_tuple + theorem multiset.nat.nodup_antidiagonal_tuple 2022-04-10 15:57:49 6d0984d doc(README): improve documentation on how to contribute (#13116) Create a new contributing section which highlights the basic steps on how to start contributing to mathlib ESTIMATED CHANGES Modified README.md 2022-04-10 13:49:42 6368956 counterexample(counterexamples/char_p_zero_ne_char_zero.lean): `char_p R 0` and `char_zero R` need not coincide (#13080) Following the [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F), this counterexample formalizes a `semiring R` for which `char_p R 0` holds, but `char_zero R` does not. See #13075 for the PR that lead to this example. ESTIMATED CHANGES Added counterexamples/char_p_zero_ne_char_zero.lean + theorem add_one_eq_one + theorem with_zero_unit_char_p_zero + theorem with_zero_unit_not_char_zero Modified src/algebra/char_p/basic.lean Modified src/algebra/char_zero.lean 2022-04-10 12:36:58 83225b3 feat(order/monovary): Add missing `monovary` lemmas (#13243) Add lemmas for postcomposing monovarying functions with monotone/antitone functions. Protect lemmas that needed it. Fix typos. ESTIMATED CHANGES Modified src/order/monovary.lean + theorem antivary.comp_antitone_left + theorem antivary.comp_monotone_left +/- theorem antivary.dual +/- theorem antivary.dual_left +/- theorem antivary.dual_right + theorem antivary_on.comp_antitone_on_left + theorem antivary_on.comp_antitone_on_right + theorem antivary_on.comp_monotone_on_left + theorem antivary_on.comp_monotone_on_right + theorem antivary_on.comp_right +/- theorem antivary_on.dual +/- theorem antivary_on.dual_left +/- theorem antivary_on.dual_right + theorem antivary_on.empty + theorem monovary.comp_antitone_left + theorem monovary.comp_monotone_left +/- theorem monovary.dual +/- theorem monovary.dual_left +/- theorem monovary.dual_right + theorem monovary_on.comp_antitone_on_left + theorem monovary_on.comp_antitone_on_right + theorem monovary_on.comp_monotone_on_left + theorem monovary_on.comp_monotone_on_right + theorem monovary_on.comp_right +/- theorem monovary_on.dual +/- theorem monovary_on.dual_left +/- theorem monovary_on.dual_right + theorem monovary_on.empty +/- theorem monovary_on_self - theorem subsingleton.antivary - theorem subsingleton.antivary_on - theorem subsingleton.monovary - theorem subsingleton.monovary_on 2022-04-10 12:36:57 32cc868 feat(measure_theory/measure/measure_space): let measure.map work with ae_measurable functions (#13241) Currently, `measure.map f μ` is zero if `f` is not measurable. This means that one can not say that two integrable random variables `X` and `Y` have the same distribution by requiring `measure.map X μ = measure.map Y μ`, as `X` or `Y` might not be measurable. We adjust the definition of `measure.map` to also work with almost everywhere measurable functions. This means that many results in the library that were only true for measurable functions become true for ae measurable functions. We generalize some of the existing code to this more general setting. ESTIMATED CHANGES Modified src/dynamics/ergodic/measure_preserving.lean Modified src/measure_theory/constructions/borel_space.lean +/- theorem continuous.ae_measurable Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/function/ess_sup.lean +/- theorem ess_sup_comp_le_ess_sup_map_measure +/- theorem ess_sup_map_measure +/- theorem ess_sup_map_measure_of_measurable Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.comp_ae_measurable Modified src/measure_theory/function/lp_space.lean +/- theorem measure_theory.mem_ℒp_map_measure_iff +/- theorem measure_theory.snorm_map_measure Modified src/measure_theory/function/strongly_measurable.lean + theorem measure_theory.ae_strongly_measurable.comp_ae_measurable Modified src/measure_theory/group/integration.lean Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.integral_map Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/ae_measurable.lean + theorem ae_measurable.comp_ae_measurable +/- theorem ae_measurable.comp_measurable + theorem measure_theory.measure.map_mono_of_ae_measurable + theorem measure_theory.measure.restrict_map_of_ae_measurable Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.ae_eq_comp' +/- theorem measure_theory.ae_eq_comp +/- theorem measure_theory.ae_map_iff +/- theorem measure_theory.ae_of_ae_map - theorem measure_theory.ae_smul_measure_iff + theorem measure_theory.measure.ae_smul_measure_iff +/- theorem measure_theory.measure.le_map_apply +/- def measure_theory.measure.map +/- theorem measure_theory.measure.map_add +/- theorem measure_theory.measure.map_apply + theorem measure_theory.measure.map_apply_of_ae_measurable + theorem measure_theory.measure.map_congr +/- theorem measure_theory.measure.map_mono + theorem measure_theory.measure.map_of_not_ae_measurable - theorem measure_theory.measure.map_of_not_measurable +/- theorem measure_theory.measure.map_smul +/- theorem measure_theory.measure.map_to_outer_measure +/- theorem measure_theory.measure.map_zero - theorem measure_theory.measure.mapₗ_apply + theorem measure_theory.measure.mapₗ_apply_of_measurable + theorem measure_theory.measure.mapₗ_congr + theorem measure_theory.measure.mapₗ_mk_apply_of_ae_measurable +/- theorem measure_theory.measure.preimage_null_of_map_null +/- theorem measure_theory.measure.tendsto_ae_map +/- theorem measure_theory.mem_ae_map_iff +/- theorem measure_theory.mem_ae_of_mem_ae_map +/- theorem measure_theory.sigma_finite.of_map Modified src/measure_theory/measure/regular.lean Modified src/order/filter/basic.lean + theorem filter.eventually_eq.preimage Modified src/probability/density.lean 2022-04-10 09:05:10 ef51d23 feat(category_theory/shift): restricting shift functors to a subcategory (#13265) Given a family of endomorphisms of `C` which are interwined by a fully faithful `F : C ⥤ D` with shift functors on `D`, we can promote that family to shift functors on `C`. For LTE. ESTIMATED CHANGES Modified src/category_theory/functor/fully_faithful.lean + def category_theory.nat_iso_of_comp_fully_faithful Modified src/category_theory/shift.lean + def category_theory.has_shift_of_fully_faithful + def category_theory.has_shift_of_fully_faithful_comm 2022-04-10 09:05:09 c916b64 feat(ring_theory/polynomial/opposites + data/{polynomial/basic + finsupp/basic}): move `op_ring_equiv` to a new file + lemmas (#13162) This PR moves the isomorphism `R[X]ᵐᵒᵖ ≃+* Rᵐᵒᵖ[X]` to a new file `ring_theory.polynomial.opposites`. I also proved some basic lemmas about the equivalence. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.support_map_range_of_injective Modified src/data/polynomial/basic.lean - def polynomial.op_ring_equiv Added src/ring_theory/polynomial/opposites.lean + theorem polynomial.coeff_op_ring_equiv + theorem polynomial.leading_coeff_op_ring_equiv + theorem polynomial.nat_degree_op_ring_equiv + def polynomial.op_ring_equiv + theorem polynomial.op_ring_equiv_op_C + theorem polynomial.op_ring_equiv_op_C_mul_X_pow + theorem polynomial.op_ring_equiv_op_X + theorem polynomial.op_ring_equiv_op_monomial + theorem polynomial.op_ring_equiv_symm_C + theorem polynomial.op_ring_equiv_symm_C_mul_X_pow + theorem polynomial.op_ring_equiv_symm_X + theorem polynomial.op_ring_equiv_symm_monomial + theorem polynomial.support_op_ring_equiv 2022-04-10 09:05:08 d70e26b feat(analysis/convex/topology): improve some lemmas (#13136) Replace some `s` with `closure s` in the LHS of `⊆` in some lemmas. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/convex/integral.lean Modified src/analysis/convex/strict_convex_space.lean Modified src/analysis/convex/topology.lean + theorem convex.add_smul_mem_interior' + theorem convex.add_smul_sub_mem_interior' - theorem convex.closure + theorem convex.closure_subset_interior_image_homothety_of_one_lt + theorem convex.combo_closure_interior_mem_interior + theorem convex.combo_closure_interior_subset_interior + theorem convex.combo_interior_closure_mem_interior + theorem convex.combo_interior_closure_subset_interior + theorem convex.combo_interior_self_mem_interior - theorem convex.combo_mem_interior_left - theorem convex.combo_mem_interior_right + theorem convex.combo_self_interior_mem_interior - theorem convex.interior - theorem convex.is_path_connected + theorem convex.open_segment_closure_interior_subset_interior + theorem convex.open_segment_interior_closure_subset_interior + theorem convex.open_segment_interior_self_subset_interior + theorem convex.open_segment_self_interior_subset_interior - theorem convex.open_segment_subset_interior_left - theorem convex.open_segment_subset_interior_right +/- theorem convex.subset_interior_image_homothety_of_one_lt - theorem topological_add_group.path_connected 2022-04-10 06:43:20 208ebd4 feat(algebra/order/monoid_lemmas_zero_lt): port some lemmas from `algebra.order.monoid_lemmas` (#12961) Although the names of these lemmas are from `algebra.order.monoid_lemmas`, many of the lemmas in `algebra.order.monoid_lemmas` have incorrect names, and some others may not be appropriate. Also, many lemmas are missing in `algebra.order.monoid_lemmas`. It may be necessary to make some renames and additions. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.exists_square_le' + theorem zero_lt.exists_square_le + theorem zero_lt.le_mul_iff_one_le_left + theorem zero_lt.le_mul_iff_one_le_right + theorem zero_lt.le_mul_of_le_of_one_le' + theorem zero_lt.le_mul_of_le_of_one_le + theorem zero_lt.le_mul_of_one_le_left' + theorem zero_lt.le_mul_of_one_le_left + theorem zero_lt.le_mul_of_one_le_of_le' + theorem zero_lt.le_mul_of_one_le_of_le + theorem zero_lt.le_mul_of_one_le_right' + theorem zero_lt.le_mul_of_one_le_right + theorem zero_lt.left.mul_le_one_of_le_of_le' + theorem zero_lt.left.mul_le_one_of_le_of_le + theorem zero_lt.left.mul_lt_one_of_le_of_lt + theorem zero_lt.left.mul_lt_one_of_lt_of_le + theorem zero_lt.left.mul_lt_one_of_lt_of_lt + theorem zero_lt.left.one_le_mul_of_le_of_le' + theorem zero_lt.left.one_le_mul_of_le_of_le + theorem zero_lt.left.one_lt_mul_of_le_of_lt + theorem zero_lt.left.one_lt_mul_of_lt_of_le + theorem zero_lt.left.one_lt_mul_of_lt_of_lt + theorem zero_lt.lt_mul_iff_one_lt_left + theorem zero_lt.lt_mul_iff_one_lt_right + theorem zero_lt.lt_mul_of_le_of_one_lt + theorem zero_lt.lt_mul_of_lt_of_one_le + theorem zero_lt.lt_mul_of_lt_of_one_lt + theorem zero_lt.lt_mul_of_one_le_of_lt + theorem zero_lt.lt_mul_of_one_lt_of_le + theorem zero_lt.lt_mul_of_one_lt_of_lt + theorem zero_lt.mul_le_iff_le_one_left + theorem zero_lt.mul_le_iff_le_one_right +/- theorem zero_lt.mul_le_mul_left' + theorem zero_lt.mul_le_of_le_of_le_one' + theorem zero_lt.mul_le_of_le_of_le_one + theorem zero_lt.mul_le_of_le_one_left' + theorem zero_lt.mul_le_of_le_one_left + theorem zero_lt.mul_le_of_le_one_of_le' + theorem zero_lt.mul_le_of_le_one_of_le + theorem zero_lt.mul_le_of_le_one_right' + theorem zero_lt.mul_le_of_le_one_right + theorem zero_lt.mul_lt_iff_lt_one_left + theorem zero_lt.mul_lt_iff_lt_one_right +/- theorem zero_lt.mul_lt_mul_left' + theorem zero_lt.mul_lt_of_le_of_lt_one + theorem zero_lt.mul_lt_of_le_one_of_lt + theorem zero_lt.mul_lt_of_lt_of_le_one + theorem zero_lt.mul_lt_of_lt_of_lt_one + theorem zero_lt.mul_lt_of_lt_one_of_le + theorem zero_lt.mul_lt_of_lt_one_of_lt + theorem zero_lt.right.mul_le_one_of_le_of_le' + theorem zero_lt.right.mul_le_one_of_le_of_le + theorem zero_lt.right.mul_lt_one_of_le_of_lt + theorem zero_lt.right.mul_lt_one_of_lt_of_le + theorem zero_lt.right.mul_lt_one_of_lt_of_lt + theorem zero_lt.right.one_le_mul_of_le_of_le' + theorem zero_lt.right.one_le_mul_of_le_of_le + theorem zero_lt.right.one_lt_mul_of_le_of_lt + theorem zero_lt.right.one_lt_mul_of_lt_of_le + theorem zero_lt.right.one_lt_mul_of_lt_of_lt 2022-04-10 06:43:19 00980d9 feat(group_theory/free_product): The ping pong lemma for free groups (#12916) We already have the ping-pong-lemma for free products; phrasing it for free groups is a (potentially) useful corollary, and brings us on-par with the Wikipedia page. Again, we state it as a lemma that gives a criteria for when `lift` is injective. ESTIMATED CHANGES Modified src/data/int/basic.lean Modified src/group_theory/free_product.lean + theorem free_group.injective_lift_of_ping_pong + def free_group_equiv_free_product 2022-04-10 06:43:18 dfc1b4c feat(topology/algebra/module/character_space): Introduce the character space of an algebra (#12838) The character space of a topological algebra is the subset of elements of the weak dual that are also algebra homomorphisms. This space is used in the Gelfand transform, which gives an isomorphism between a commutative C⋆-algebra and continuous functions on the character space of the algebra. This, in turn, is used to construct the continuous functional calculus on C⋆-algebras. ESTIMATED CHANGES Added src/topology/algebra/module/character_space.lean + theorem weak_dual.character_space.apply_mem_spectrum + theorem weak_dual.character_space.coe_apply + theorem weak_dual.character_space.continuous + theorem weak_dual.character_space.map_add + theorem weak_dual.character_space.map_mul + theorem weak_dual.character_space.map_one + theorem weak_dual.character_space.map_smul + theorem weak_dual.character_space.map_zero + def weak_dual.character_space.to_alg_hom + def weak_dual.character_space.to_clm + theorem weak_dual.character_space.to_clm_apply + def weak_dual.character_space.to_non_unital_alg_hom + def weak_dual.character_space Modified src/topology/algebra/module/weak_dual.lean 2022-04-10 06:43:17 55baab3 feat(field_theory/krull_topology): added fintype_alg_hom (#12777) ESTIMATED CHANGES Modified src/field_theory/minpoly.lean + theorem minpoly.ne_zero_of_finite_field_extension Modified src/field_theory/primitive_element.lean + theorem field.aux_inj_roots_of_min_poly + def field.roots_of_min_poly_pi_type 2022-04-10 06:10:08 36fceb9 feat(data/list/cycle): Define `cycle.chain` analog to `list.chain` (#12970) We define `cycle.chain`, which means that a relation holds in all adjacent elements in a cyclic list. We then show that for `r` a transitive relation, `cycle.chain r l` is equivalent to `r` holding for all pairs of elements in `l`. ESTIMATED CHANGES Modified src/data/list/cycle.lean + theorem cycle.chain.nil + def cycle.chain + theorem cycle.chain_coe_cons + theorem cycle.chain_iff_pairwise + theorem cycle.chain_map + theorem cycle.chain_ne_nil + theorem cycle.chain_of_pairwise + theorem cycle.chain_singleton + theorem cycle.coe_cons_eq_coe_append + theorem cycle.coe_to_finset + theorem cycle.forall_eq_of_chain 2022-04-10 04:05:20 de0aea4 feat(topology/uniform_space/uniform_convergence): add lemma `tendsto_locally_uniformly_iff_forall_tendsto` (#13201) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.forall_in_swap Modified src/order/filter/basic.lean + theorem filter.forall_in_swap Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_locally_uniformly_iff_forall_tendsto + theorem tendsto_uniformly.tendsto_at 2022-04-10 04:05:19 26729d6 chore(ring_theory/polynomial/basic): Generalize `polynomial.degree_lt_equiv` to commutative rings (#13190) This is a minor PR to generalise degree_lt_equiv to comm_ring. Its restriction to field appears to be an oversight. ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean +/- def polynomial.degree_lt_equiv 2022-04-10 04:05:18 2ff12ea feat(linear_algebra/bilinear_form): generalize from is_symm to is_refl (#13181) Generalize some lemmas that assumed symmetric bilinear forms to reflexive bilinear forms (which is more general) and update docstring (before the condition 'symmetric' was not mentioned) ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/sesquilinear_form.lean + theorem linear_map.is_refl.dom_restrict_refl + theorem linear_map.is_refl.flip_is_refl_iff + theorem linear_map.is_refl.ker_eq_bot_iff_ker_flip_eq_bot + theorem linear_map.is_refl.ker_flip_eq_bot + theorem linear_map.is_refl.nondegenerate_of_separating_left + theorem linear_map.is_refl.nondegenerate_of_separating_right - theorem linear_map.is_symm.nondegenerate_of_separating_left - theorem linear_map.is_symm.nondegenerate_of_separating_right 2022-04-10 01:48:20 8b8f46e feat(analysis/complex/arg): link same_ray and complex.arg (#12764) ESTIMATED CHANGES Added src/analysis/complex/arg.lean + theorem complex.abs_add_eq + theorem complex.abs_add_eq_iff + theorem complex.abs_sub_eq + theorem complex.same_ray_iff + theorem complex.same_ray_of_arg_eq Modified src/linear_algebra/ray.lean +/- theorem same_ray.zero_left +/- theorem same_ray.zero_right 2022-04-10 01:48:19 7eff233 feat(set_theory/cofinality): Golf and extend existing results relating `cof` to `sup` and `bsup` (#12321) ESTIMATED CHANGES Modified src/set_theory/cofinality.lean + theorem cardinal.blsub_lt_ord_lift_of_is_regular + theorem cardinal.blsub_lt_ord_of_is_regular + theorem cardinal.bsup_lt_ord_lift_of_is_regular + theorem cardinal.bsup_lt_ord_of_is_regular + theorem cardinal.lsub_lt_ord_lift_of_is_regular + theorem cardinal.lsub_lt_ord_of_is_regular + theorem cardinal.sum_lt_lift_of_is_regular +/- theorem cardinal.sum_lt_of_is_regular + theorem cardinal.sup_lt_lift_of_is_regular +/- theorem cardinal.sup_lt_of_is_regular + theorem cardinal.sup_lt_ord_lift_of_is_regular +/- theorem cardinal.sup_lt_ord_of_is_regular + theorem ordinal.blsub_lt_ord + theorem ordinal.blsub_lt_ord_lift + theorem ordinal.bsup_lt_ord + theorem ordinal.bsup_lt_ord_lift + theorem ordinal.cof_blsub_le_lift +/- theorem ordinal.cof_bsup_le +/- theorem ordinal.cof_bsup_le_lift + theorem ordinal.cof_lsub_le_lift +/- theorem ordinal.cof_sup_le +/- theorem ordinal.cof_sup_le_lift + theorem ordinal.lsub_lt_ord + theorem ordinal.lsub_lt_ord_lift +/- theorem ordinal.sup_lt + theorem ordinal.sup_lt_lift +/- theorem ordinal.sup_lt_ord + theorem ordinal.sup_lt_ord_lift 2022-04-10 01:48:17 c2d870e feat(set_theory/{ordinal_arithmetic, fixed_points}): Next fixed point of families (#12200) We define the next common fixed point of a family of normal ordinal functions. We prove these fixed points to be unbounded, and that their enumerator functions are normal. ESTIMATED CHANGES Added src/set_theory/fixed_points.lean + theorem ordinal.apply_le_nfp_family + theorem ordinal.apply_lt_nfp_bfamily + theorem ordinal.apply_lt_nfp_family + theorem ordinal.apply_lt_nfp_family_iff + def ordinal.deriv_bfamily + theorem ordinal.deriv_bfamily_eq_deriv_family + theorem ordinal.deriv_bfamily_eq_enum_ord + theorem ordinal.deriv_bfamily_fp + theorem ordinal.deriv_bfamily_is_normal + def ordinal.deriv_family + theorem ordinal.deriv_family_eq_enum_ord + theorem ordinal.deriv_family_fp + theorem ordinal.deriv_family_is_normal + theorem ordinal.deriv_family_limit + theorem ordinal.deriv_family_succ + theorem ordinal.deriv_family_zero + theorem ordinal.foldr_le_nfp_bfamily + theorem ordinal.foldr_le_nfp_family + theorem ordinal.fp_bfamily_unbounded + theorem ordinal.fp_family_unbounded + theorem ordinal.fp_iff_deriv_bfamily + theorem ordinal.fp_iff_deriv_family + theorem ordinal.le_iff_deriv_bfamily + theorem ordinal.le_iff_deriv_family + theorem ordinal.le_nfp_bfamily + theorem ordinal.lt_nfp_bfamily + theorem ordinal.lt_nfp_family + def ordinal.nfp_bfamily + theorem ordinal.nfp_bfamily_eq_nfp_family + theorem ordinal.nfp_bfamily_eq_self + theorem ordinal.nfp_bfamily_fp + theorem ordinal.nfp_bfamily_le + theorem ordinal.nfp_bfamily_le_apply + theorem ordinal.nfp_bfamily_le_fp + theorem ordinal.nfp_bfamily_le_iff + theorem ordinal.nfp_bfamily_monotone + def ordinal.nfp_family + theorem ordinal.nfp_family_eq_self + theorem ordinal.nfp_family_eq_sup + theorem ordinal.nfp_family_fp + theorem ordinal.nfp_family_le + theorem ordinal.nfp_family_le_apply + theorem ordinal.nfp_family_le_fp + theorem ordinal.nfp_family_le_iff + theorem ordinal.nfp_family_monotone + theorem ordinal.self_le_nfp_bfamily + theorem ordinal.self_le_nfp_family 2022-04-10 01:48:16 b2c707c feat(group_theory): use generic `subobject_class` lemmas (#11758) This subobject class refactor PR follows up from #11750 by moving the `{zero,one,add,mul,...}_mem_class` lemmas to the root namespace and marking the previous `sub{monoid,group,module,algebra,...}.{zero,one,add,mul,...}_mem` lemmas as `protected`. This is the second part of #11545 to be split off. I made the subobject parameter to the `_mem` lemmas implicit if it appears in the hypotheses, e.g. ```lean lemma mul_mem {S M : Type*} [monoid M] [set_like S M] [submonoid_class S M] {s : S} {x y : M} (hx : x ∈ s) (hy : y ∈ s) : x * y ∈ s ``` instead of having `(s : S)` explicit. The generic `_mem` lemmas are not namespaced, so there is no dot notation that requires `s` to be explicit. Also there were already a couple of instances for the same operator where `s` was implicit and others where `s` was explicit, so some change was needed. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/subalgebra/basic.lean - theorem subalgebra.add_mem - theorem subalgebra.coe_add - theorem subalgebra.coe_eq_one - theorem subalgebra.coe_eq_zero - theorem subalgebra.coe_int_mem - theorem subalgebra.coe_mul - theorem subalgebra.coe_nat_mem - theorem subalgebra.coe_neg - theorem subalgebra.coe_one - theorem subalgebra.coe_pow - theorem subalgebra.coe_sub - theorem subalgebra.coe_zero - theorem subalgebra.list_prod_mem - theorem subalgebra.list_sum_mem - theorem subalgebra.mul_mem - theorem subalgebra.multiset_prod_mem - theorem subalgebra.multiset_sum_mem - theorem subalgebra.neg_mem - theorem subalgebra.nsmul_mem - theorem subalgebra.one_mem - theorem subalgebra.pow_mem - theorem subalgebra.prod_mem - theorem subalgebra.sub_mem - theorem subalgebra.sum_mem - theorem subalgebra.zero_mem - theorem subalgebra.zsmul_mem Modified src/algebra/algebra/subalgebra/pointwise.lean Modified src/algebra/algebra/tower.lean Modified src/algebra/direct_sum/internal.lean Modified src/algebra/lie/cartan_subalgebra.lean Modified src/algebra/lie/subalgebra.lean - theorem lie_subalgebra.add_mem - theorem lie_subalgebra.neg_mem_iff - theorem lie_subalgebra.sub_mem - theorem lie_subalgebra.zero_mem Modified src/algebra/lie/submodule.lean - theorem lie_submodule.zero_mem Modified src/algebra/module/submodule.lean - theorem submodule.add_mem - theorem submodule.add_mem_iff_left - theorem submodule.add_mem_iff_right - theorem submodule.coe_neg - theorem submodule.coe_sub - theorem submodule.neg_mem - theorem submodule.neg_mem_iff - theorem submodule.sub_mem - theorem submodule.sum_mem - theorem submodule.zero_mem Modified src/algebra/module/submodule_lattice.lean Modified src/algebra/star/unitary.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/data/dfinsupp/basic.lean - theorem add_submonoid.dfinsupp_sum_add_hom_mem + theorem dfinsupp_prod_mem + theorem dfinsupp_sum_add_hom_mem - theorem submonoid.dfinsupp_prod_mem Modified src/data/finsupp/basic.lean - theorem submonoid.finsupp_prod_mem + theorem submonoid_class.finsupp_prod_mem Modified src/data/set/pointwise.lean Modified src/deprecated/subgroup.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/intermediate_field.lean - theorem intermediate_field.add_mem - theorem intermediate_field.coe_add - theorem intermediate_field.coe_int_mem - theorem intermediate_field.coe_inv - theorem intermediate_field.coe_mul - theorem intermediate_field.coe_neg - theorem intermediate_field.coe_one - theorem intermediate_field.coe_pow - theorem intermediate_field.coe_zero - theorem intermediate_field.div_mem - theorem intermediate_field.inv_mem - theorem intermediate_field.list_prod_mem - theorem intermediate_field.list_sum_mem - theorem intermediate_field.mul_mem - theorem intermediate_field.multiset_prod_mem - theorem intermediate_field.multiset_sum_mem - theorem intermediate_field.neg_mem - theorem intermediate_field.one_mem - theorem intermediate_field.pow_mem - theorem intermediate_field.prod_mem - theorem intermediate_field.sub_mem - theorem intermediate_field.sum_mem - theorem intermediate_field.zero_mem - theorem intermediate_field.zsmul_mem Modified src/field_theory/primitive_element.lean Modified src/field_theory/subfield.lean - theorem subfield.add_mem - theorem subfield.coe_int_mem - theorem subfield.div_mem - theorem subfield.inv_mem - theorem subfield.list_prod_mem - theorem subfield.list_sum_mem - theorem subfield.mul_mem - theorem subfield.multiset_prod_mem - theorem subfield.multiset_sum_mem - theorem subfield.neg_mem - theorem subfield.one_mem - theorem subfield.pow_mem - theorem subfield.prod_mem - theorem subfield.sub_mem - theorem subfield.sum_mem - theorem subfield.zero_mem - theorem subfield.zsmul_mem Modified src/group_theory/coset.lean Modified src/group_theory/nilpotent.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/group_theory/subgroup/basic.lean + theorem div_mem + theorem div_mem_comm_iff + theorem exists_inv_mem_iff_exists_mem + theorem inv_coe_set + theorem inv_mem_iff + theorem mul_mem_cancel_left + theorem mul_mem_cancel_right - theorem subgroup.div_mem - theorem subgroup.div_mem_comm_iff - theorem subgroup.exists_inv_mem_iff_exists_mem - theorem subgroup.inv_coe_set - theorem subgroup.inv_mem - theorem subgroup.inv_mem_iff - theorem subgroup.list_prod_mem - theorem subgroup.mul_mem - theorem subgroup.mul_mem_cancel_left - theorem subgroup.mul_mem_cancel_right - theorem subgroup.multiset_prod_mem - theorem subgroup.one_mem - theorem subgroup.pow_mem - theorem subgroup.prod_mem - theorem subgroup.zpow_mem - theorem subgroup_class.div_mem - theorem subgroup_class.div_mem_comm_iff - theorem subgroup_class.exists_inv_mem_iff_exists_mem - theorem subgroup_class.inv_coe_set - theorem subgroup_class.inv_mem_iff - theorem subgroup_class.mul_mem_cancel_left - theorem subgroup_class.mul_mem_cancel_right - theorem subgroup_class.zpow_mem + theorem zpow_mem Modified src/group_theory/submonoid/basic.lean - theorem submonoid.mul_mem - theorem submonoid.one_mem Modified src/group_theory/submonoid/membership.lean + theorem list_prod_mem + theorem multiset_prod_mem + theorem prod_mem - theorem submonoid_class.list_prod_mem - theorem submonoid_class.multiset_prod_mem - theorem submonoid_class.prod_mem Modified src/group_theory/submonoid/operations.lean - theorem submonoid.pow_mem Modified src/group_theory/submonoid/pointwise.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean - theorem submodule.finsupp_sum_mem Modified src/linear_algebra/linear_independent.lean +/- def linear_independent.total_equiv Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/prod.lean Modified src/linear_algebra/quotient.lean Modified src/linear_algebra/span.lean Modified src/linear_algebra/std_basis.lean Modified src/ring_theory/adjoin/fg.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/graded_algebra/homogeneous_localization.lean Modified src/ring_theory/ideal/basic.lean - theorem ideal.add_mem_iff_left - theorem ideal.add_mem_iff_right - theorem ideal.neg_mem_iff Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/subring/basic.lean + theorem coe_int_mem - theorem subring.add_mem - theorem subring.coe_int_mem +/- theorem subring.coe_pow - theorem subring.list_prod_mem - theorem subring.list_sum_mem - theorem subring.mul_mem - theorem subring.multiset_prod_mem - theorem subring.multiset_sum_mem - theorem subring.neg_mem - theorem subring.one_mem - theorem subring.pow_mem - theorem subring.prod_mem - theorem subring.sub_mem - theorem subring.sum_mem - theorem subring.zero_mem - theorem subring.zsmul_mem - theorem subring_class.coe_int_mem Modified src/ring_theory/subsemiring/basic.lean + theorem coe_nat_mem - theorem subsemiring.add_mem - theorem subsemiring.coe_nat_mem - theorem subsemiring.list_sum_mem - theorem subsemiring.mul_mem - theorem subsemiring.multiset_prod_mem - theorem subsemiring.multiset_sum_mem - theorem subsemiring.nsmul_mem - theorem subsemiring.one_mem - theorem subsemiring.pow_mem - theorem subsemiring.prod_mem - theorem subsemiring.sum_mem - theorem subsemiring.zero_mem - theorem subsemiring_class.coe_nat_mem 2022-04-10 01:48:15 d133874 feat(representation_theory/basic): basics of group representation theory (#11207) Some basic lemmas about group representations and some theory regarding the subspace of fixed points of a representation. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + theorem monoid_algebra.smul_of + def monoid_algebra.submodule_of_smul_mem Added src/representation_theory/basic.lean + theorem representation.as_algebra_hom_def + theorem representation.as_algebra_hom_single + def representation.as_group_hom + theorem representation.as_module_apply + theorem representation.char_conj + theorem representation.char_one + theorem representation.of_smul Added src/representation_theory/invariants.lean + theorem representation.average_def + theorem representation.invariants'_carrier + def representation.invariants + theorem representation.invariants_eq_inter + theorem representation.mem_invariants + theorem representation.mul_average_left + theorem representation.mul_average_right + theorem representation.smul_average_id + theorem representation.smul_average_invariant 2022-04-10 01:48:14 3fe5c93 feat(algebra/ring/boolean_ring): Turning a Boolean algebra into a Boolean ring (#6476) Define `as_boolring`, a type synonym to turn a Boolean algebra into a Boolean ring and show that `as_boolring` and `as_boolalg` are "inverse" to each other. ESTIMATED CHANGES Modified src/algebra/category/BoolRing.lean Modified src/algebra/ring/boolean_ring.lean + def as_boolring + def boolean_algebra.to_boolean_ring + theorem bounded_lattice_hom.as_boolring_comp + theorem bounded_lattice_hom.as_boolring_id + def generalized_boolean_algebra.to_non_unital_ring + theorem of_boolalg_compl + theorem of_boolalg_mul_of_boolalg_eq_left_iff + theorem of_boolalg_sdiff + theorem of_boolalg_symm_diff + def of_boolring + theorem of_boolring_add + theorem of_boolring_inj + theorem of_boolring_le_of_boolring_iff + theorem of_boolring_mul + theorem of_boolring_neg + theorem of_boolring_one + theorem of_boolring_sub + theorem of_boolring_symm_eq + theorem of_boolring_to_boolring + theorem of_boolring_zero + def order_iso.as_boolalg_as_boolring + def ring_equiv.as_boolring_as_boolalg + theorem to_boolalg_add +/- theorem to_boolalg_add_add_mul + def to_boolring + theorem to_boolring_bot + theorem to_boolring_inf + theorem to_boolring_inj + theorem to_boolring_of_boolring + theorem to_boolring_symm_diff + theorem to_boolring_symm_eq + theorem to_boolring_top Modified src/order/hom/lattice.lean + theorem disjoint.map + theorem is_compl.map + theorem map_compl + theorem map_sdiff + theorem map_symm_diff 2022-04-10 01:48:13 9495b8c feat(data/set/intervals/with_bot_top): lemmas about `I??` and `with_top/bot` (#4273) Prove theorems about (pre)images of intervals under `coe : α → with_top α` and `coe : α → with_bot α`. ESTIMATED CHANGES Added src/data/set/intervals/with_bot_top.lean + theorem with_bot.image_coe_Icc + theorem with_bot.image_coe_Ici + theorem with_bot.image_coe_Ico + theorem with_bot.image_coe_Iic + theorem with_bot.image_coe_Iio + theorem with_bot.image_coe_Ioc + theorem with_bot.image_coe_Ioi + theorem with_bot.image_coe_Ioo + theorem with_bot.preimage_coe_Icc + theorem with_bot.preimage_coe_Ici + theorem with_bot.preimage_coe_Ico + theorem with_bot.preimage_coe_Iic + theorem with_bot.preimage_coe_Iio + theorem with_bot.preimage_coe_Ioc + theorem with_bot.preimage_coe_Ioc_bot + theorem with_bot.preimage_coe_Ioi + theorem with_bot.preimage_coe_Ioi_bot + theorem with_bot.preimage_coe_Ioo + theorem with_bot.preimage_coe_Ioo_bot + theorem with_bot.preimage_coe_bot + theorem with_bot.range_coe + theorem with_top.image_coe_Icc + theorem with_top.image_coe_Ici + theorem with_top.image_coe_Ico + theorem with_top.image_coe_Iic + theorem with_top.image_coe_Iio + theorem with_top.image_coe_Ioc + theorem with_top.image_coe_Ioi + theorem with_top.image_coe_Ioo + theorem with_top.preimage_coe_Icc + theorem with_top.preimage_coe_Ici + theorem with_top.preimage_coe_Ico + theorem with_top.preimage_coe_Ico_top + theorem with_top.preimage_coe_Iic + theorem with_top.preimage_coe_Iio + theorem with_top.preimage_coe_Iio_top + theorem with_top.preimage_coe_Ioc + theorem with_top.preimage_coe_Ioi + theorem with_top.preimage_coe_Ioo + theorem with_top.preimage_coe_Ioo_top + theorem with_top.preimage_coe_top + theorem with_top.range_coe 2022-04-09 23:54:02 e4f93e6 feat(group_theory/solvable): Golf some proofs (#13271) This PR uses `solvable_of_ker_le_range` to golf some proofs. ESTIMATED CHANGES Modified src/group_theory/solvable.lean 2022-04-09 23:54:01 b7f7c4a feat(combinatorics/simple_graph/clique): Cliques (#12982) Define cliques. ESTIMATED CHANGES Added src/combinatorics/simple_graph/clique.lean + theorem simple_graph.is_clique.mono + theorem simple_graph.is_clique.subset + structure simple_graph.is_clique + theorem simple_graph.is_clique_iff + theorem simple_graph.is_n_clique.mono + structure simple_graph.is_n_clique + theorem simple_graph.is_n_clique_iff Modified src/data/finset/pairwise.lean 2022-04-09 22:07:41 e690875 chore(ring_theory/roots_of_unity): generalise (#13261) ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.eq_neg_one_of_two_right +/- theorem is_primitive_root.mem_roots_of_unity +/- theorem is_primitive_root.pow +/- theorem roots_of_unity.coe_pow 2022-04-09 22:07:40 3879621 feat(combinatorics/additive/salem_spencer): The sphere does not contain arithmetic progressions (#13259) Prove that the frontier of a strictly convex closed set is Salem-Spencer. For this we need * simple lemmas about `same_ray`. This involves renaming `same_ray.exists_right_eq_smul`/`same_ray.exists_left_eq_smul` to `same_ray.exists_nonneg_left`/`same_ray.exists_nonneg_right`. * that the norm in a real normed space is injective on rays. * that the midpoint of two points of equal norm has smaller norm, in a strictly convex space ESTIMATED CHANGES Modified src/analysis/convex/strict.lean Modified src/analysis/convex/strict_convex_space.lean + theorem norm_midpoint_lt_iff + theorem not_same_ray_iff_norm_add_lt Modified src/analysis/normed_space/ray.lean + theorem norm_inj_on_ray_left + theorem norm_inj_on_ray_right + theorem not_same_ray_iff_of_norm_eq +/- theorem same_ray_iff_inv_norm_smul_eq +/- theorem same_ray_iff_inv_norm_smul_eq_of_ne +/- theorem same_ray_iff_norm_smul_eq + theorem same_ray_iff_of_norm_eq Modified src/combinatorics/additive/salem_spencer.lean + theorem add_salem_spencer_frontier + theorem add_salem_spencer_sphere Modified src/linear_algebra/ray.lean - theorem same_ray.exists_left_eq_smul + theorem same_ray.exists_nonneg_left + theorem same_ray.exists_nonneg_right + theorem same_ray.exists_pos_left + theorem same_ray.exists_pos_right - theorem same_ray.exists_right_eq_smul Modified src/topology/basic.lean + theorem is_closed.frontier_subset 2022-04-09 22:07:39 b3a0f85 feat(group_theory/coset): Fintype instance for quotient by the right relation (#13257) This PR adds a fintype instance for the quotient by the right relation. ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem quotient_group.card_quotient_right_rel 2022-04-09 22:07:38 e3a8ef1 feat(algebra/algebra/*): generalise (#13252) Some generalisations straight from Alex's generalisation linter, with some care about how to place them. Some `algebra` lemmas are weakened to semirings, allowing us to talk about ℕ-algebras much more easily. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem algebra.mem_algebra_map_submonoid_of_mem +/- theorem ring_hom.map_rat_algebra_map Modified src/algebra/algebra/operations.lean +/- theorem submodule.mem_span_mul_finite_of_mem_span_mul Modified src/algebra/algebra/spectrum.lean - theorem is_unit.smul_sub_iff_sub_inv_smul +/- theorem spectrum.exists_mem_of_not_is_unit_aeval_prod Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/algebra/tower.lean Modified src/algebra/algebra/unitization.lean +/- theorem unitization.coe_add +/- theorem unitization.coe_mul +/- theorem unitization.coe_mul_inl +/- theorem unitization.inl_mul_coe Modified src/group_theory/group_action/group.lean + theorem is_unit.smul_sub_iff_sub_inv_smul +/- theorem is_unit_smul_iff 2022-04-09 22:07:37 1480161 feat(group_theory/group_action/basic): Left multiplication satisfies the `quotient_action` axiom (#13249) This PR adds an instance `quotient_action α H`, meaning that left multiplication satisfies the `quotient_action` axiom. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean 2022-04-09 22:07:36 22b7d21 feat(analysis/normed*): if `f → 0` and `g` is bounded, then `f * g → 0` (#13248) Also drop `is_bounded_under_of_tendsto`: it's just `h.norm.is_bounded_under_le`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/normed/group/basic.lean + theorem filter.tendsto.op_zero_is_bounded_under_le' + theorem filter.tendsto.op_zero_is_bounded_under_le - theorem is_bounded_under_of_tendsto Modified src/analysis/normed/normed_field.lean + theorem filter.is_bounded_under_le.mul_tendsto_zero + theorem filter.tendsto.zero_mul_is_bounded_under_le Modified src/analysis/normed_space/basic.lean + theorem filter.is_bounded_under.smul_tendsto_zero + theorem filter.tendsto.zero_smul_is_bounded_under_le 2022-04-09 22:07:35 4c4e5e8 feat(analysis/locally_convex): every totally bounded set is von Neumann bounded (#13204) Add one lemma and some cleanups of previous PR. ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean Modified src/analysis/locally_convex/basic.lean +/- theorem absorbs.add +/- theorem absorbs_empty Modified src/analysis/locally_convex/bounded.lean + theorem totally_bounded.is_vonN_bounded 2022-04-09 19:44:54 cc65716 refactor(analysis/complex): replace `diff_on_int_cont` with `diff_cont_on_cl` (#13148) Use "differentiable on a set and continuous on its closure" instead of "continuous on a set and differentiable on its interior". There are a few reasons to prefer the latter: * it has better "composition" lemma; * it allows us to talk about functions that are, e.g., differentiable on `{z : ℂ | abs z < 1 ∧ (re z < 0 ∨ im z ≠ 0)}` and continuous on the closed unit disk. Also generalize `eq_on_of_eq_on_frontier` from a compact set to a bounded set (so that it works, e.g., for the unit ball in a Banach space). This PR does not move the file `diff_on_int_cont` to make the diff more readable; the file will be moved in another PR. ESTIMATED CHANGES Modified src/analysis/calculus/diff_on_int_cont.lean + theorem diff_cont_on_cl.add + theorem diff_cont_on_cl.add_const + theorem diff_cont_on_cl.comp + theorem diff_cont_on_cl.const_add + theorem diff_cont_on_cl.const_smul + theorem diff_cont_on_cl.const_sub + theorem diff_cont_on_cl.continuous_on_ball + theorem diff_cont_on_cl.differentiable_at' + theorem diff_cont_on_cl.inv + theorem diff_cont_on_cl.mk_ball + theorem diff_cont_on_cl.neg + theorem diff_cont_on_cl.smul + theorem diff_cont_on_cl.smul_const + theorem diff_cont_on_cl.sub + theorem diff_cont_on_cl.sub_const + structure diff_cont_on_cl + theorem diff_cont_on_cl_const + theorem diff_cont_on_cl_univ - theorem diff_on_int_cont.add - theorem diff_on_int_cont.add_const - theorem diff_on_int_cont.comp - theorem diff_on_int_cont.const_add - theorem diff_on_int_cont.const_smul - theorem diff_on_int_cont.const_sub - theorem diff_on_int_cont.differentiable_at' - theorem diff_on_int_cont.differentiable_on_ball - theorem diff_on_int_cont.inv - theorem diff_on_int_cont.mk_ball - theorem diff_on_int_cont.neg - theorem diff_on_int_cont.smul - theorem diff_on_int_cont.smul_const - theorem diff_on_int_cont.sub - theorem diff_on_int_cont.sub_const - structure diff_on_int_cont - theorem diff_on_int_cont_const - theorem diff_on_int_cont_open - theorem diff_on_int_cont_univ + theorem differentiable.comp_diff_cont_on_cl - theorem differentiable.comp_diff_on_int_cont + theorem differentiable.diff_cont_on_cl - theorem differentiable.diff_on_int_cont - theorem differentiable_on.comp_diff_on_int_cont + theorem differentiable_on.diff_cont_on_cl - theorem differentiable_on.diff_on_int_cont + theorem is_closed.diff_cont_on_cl_iff Modified src/analysis/complex/abs_max.lean + theorem complex.eq_on_closure_of_eq_on_frontier +/- theorem complex.eq_on_of_eq_on_frontier +/- theorem complex.exists_mem_frontier_is_max_on_norm +/- theorem complex.norm_le_of_forall_mem_frontier_norm_le +/- theorem complex.norm_max_aux₂ Modified src/analysis/complex/cauchy_integral.lean + theorem diff_cont_on_cl.circle_integral_sub_inv_smul + theorem diff_cont_on_cl.has_fpower_series_on_ball - theorem diff_on_int_cont.circle_integral_sub_inv_smul - theorem diff_on_int_cont.has_fpower_series_on_ball Modified src/analysis/complex/liouville.lean +/- theorem complex.deriv_eq_smul_circle_integral Modified src/analysis/complex/schwarz.lean Modified src/analysis/normed_space/add_torsor.lean + theorem antilipschitz_with_line_map Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.ball_inf_dist_compl_subset + theorem metric.ball_inf_dist_subset_compl 2022-04-09 19:44:52 57f382a feat(order/bounds): Boundedness of monotone/antitone functions (#13079) ESTIMATED CHANGES Modified src/order/bounds.lean + theorem antitone_on.image_lower_bounds_subset_upper_bounds_image + theorem antitone_on.image_upper_bounds_subset_lower_bounds_image + theorem antitone_on.is_lub_image_le + theorem antitone_on.le_is_glb_image + theorem antitone_on.map_bdd_above + theorem antitone_on.map_bdd_below + theorem antitone_on.map_is_greatest + theorem antitone_on.map_is_least + theorem antitone_on.mem_lower_bounds_image + theorem antitone_on.mem_upper_bounds_image + theorem monotone_on.image_lower_bounds_subset_lower_bounds_image + theorem monotone_on.image_upper_bounds_subset_upper_bounds_image + theorem monotone_on.is_lub_image_le + theorem monotone_on.le_is_glb_image + theorem monotone_on.map_bdd_above + theorem monotone_on.map_bdd_below + theorem monotone_on.map_is_greatest + theorem monotone_on.map_is_least + theorem monotone_on.mem_lower_bounds_image + theorem monotone_on.mem_upper_bounds_image 2022-04-09 19:44:50 0dde2cb feat(data/list/chain): Lemma for `chain r a (list.range n.succ)` (#12990) ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain'_append_cons_cons Modified src/data/list/range.lean + theorem list.chain'_range_succ + theorem list.chain_range_succ Modified src/data/nat/basic.lean + theorem nat.exists_lt_succ + theorem nat.forall_lt_succ 2022-04-09 17:28:10 bc140d2 feat(data/polynomial/degree/lemmas): add some lemmas and rename some lemmas (#13235) rename `nat_degree_mul_C_eq_of_no_zero_divisors` to `nat_degree_mul_C` rename `nat_degree_C_mul_eq_of_no_zero_divisors` to `nat_degree_C_mul` ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.degree_C_mul + theorem polynomial.degree_mul_C + theorem polynomial.nat_degree_C_mul - theorem polynomial.nat_degree_C_mul_eq_of_no_zero_divisors + theorem polynomial.nat_degree_mul_C - theorem polynomial.nat_degree_mul_C_eq_of_no_zero_divisors 2022-04-09 17:28:09 f8467aa feat(data/polynomial/eval): add some lemmas for `eval₂` (#13234) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean +/- theorem polynomial.eval₂_comp + theorem polynomial.eval₂_finset_prod +/- theorem polynomial.eval₂_hom + theorem polynomial.eval₂_list_prod + theorem polynomial.eval₂_list_sum + theorem polynomial.eval₂_multiset_prod + theorem polynomial.eval₂_multiset_sum 2022-04-09 17:28:08 25d28c8 feat(group_theory/schreier): Add version of Schreier's lemma (#13231) This PR adds a version of Schreier's lemma of the form `closure (_ : set H) = ⊤`, as opposed to `closure (_ : set G) = H`. This is closer to saying that `H` is finitely generated. I also fiddled with the names a bit. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/group_theory/schreier.lean - theorem subgroup.closure_mul_eq - theorem subgroup.closure_mul_eq_top + theorem subgroup.closure_mul_image_eq + theorem subgroup.closure_mul_image_eq_top + theorem subgroup.closure_mul_image_mul_eq_top 2022-04-09 17:28:06 d831478 feat(computability/encoding): Bounds on cardinality from an encoding (#13224) Generalizes universe variables for `computability.encoding` Uses a `computability.encoding` to bound the cardinality of a type ESTIMATED CHANGES Modified src/computability/encoding.lean + theorem computability.encoding.card_le_card_list + theorem computability.encoding.card_le_omega + theorem computability.encoding.encode_injective +/- structure computability.encoding + theorem computability.fin_encoding.card_le_omega +/- structure computability.fin_encoding 2022-04-09 17:28:05 6abb6de feat(category_theory/bicategory): monoidal categories are single object bicategories (#13157) ESTIMATED CHANGES Added src/category_theory/bicategory/End.lean + def category_theory.End_monoidal Modified src/category_theory/bicategory/basic.lean Added src/category_theory/bicategory/single_obj.lean + def category_theory.monoidal_single_obj.End_monoidal_star_functor + def category_theory.monoidal_single_obj.End_monoidal_star_functor_is_equivalence + def category_theory.monoidal_single_obj 2022-04-09 17:28:04 823699f feat(linear_algebra/general_linear_group): Add some lemmas about SL to GL_pos coercions. (#12393) ESTIMATED CHANGES Modified src/linear_algebra/general_linear_group.lean + theorem matrix.special_linear_group.coe_GL_pos_coe_GL_coe_matrix + theorem matrix.special_linear_group.coe_GL_pos_neg + theorem matrix.special_linear_group.coe_to_GL_det + theorem matrix.special_linear_group.coe_to_GL_pos_to_GL_det 2022-04-09 15:37:04 d42f6a8 chore(algebra/associated): golf irreducible_iff_prime_iff (#13267) ESTIMATED CHANGES Modified src/algebra/associated.lean 2022-04-09 15:37:03 348b41d chore(archive/imo/imo1994_q1): tidy a bit (#13266) ESTIMATED CHANGES Modified archive/imo/imo1994_q1.lean 2022-04-09 15:37:02 1d9d153 chore(algebraic_geometry/pullbacks): replaced some simps by simp onlys (#13258) This PR optimizes the file `algebraic_geometry/pullbacks` by replacing some calls to `simp` by `simp only [⋯]`. This file has a high [`sec/LOC` ratio](https://mathlib-bench.limperg.de/commit/5e98dc1cc915d3226ea293c118d2ff657b48b0dc) and is not very short, which makes it a good candidate for such optimizations attempts. On my machine, these changes reduced the compile time from 2m30s to 1m20s. ESTIMATED CHANGES Modified src/algebraic_geometry/pullbacks.lean 2022-04-09 15:37:01 8c7e8a4 feat(group_theory/commutator): The commutator subgroup is characteristic (#13255) This PR adds instances stating that the commutator subgroup is characteristic. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Modified src/group_theory/commutator.lean 2022-04-09 15:37:00 d23fd6f refactor(group_theory/solvable): Golf and move `solvable_of_ker_le_range` (#13254) This PR moves `solvable_of_ker_le_range` to earlier in the file so that it can be used to golf the proofs of `solvable_of_solvable_injective` and `solvable_of_surjective`. ESTIMATED CHANGES Modified src/group_theory/solvable.lean 2022-04-09 15:02:56 f24918e refactor(group_theory/solvable): Golf some proofs (#13256) This PR golfs some proofs in `group_theory/solvable.lean`. ESTIMATED CHANGES Modified src/group_theory/solvable.lean 2022-04-09 12:31:00 d6ff44e feat(category_theory/faithful): map_iso_injective (#13263) ESTIMATED CHANGES Modified src/category_theory/functor/fully_faithful.lean - theorem category_theory.equiv_of_fully_faithful_apply - theorem category_theory.equiv_of_fully_faithful_symm_apply + theorem category_theory.functor.map_iso_injective + def category_theory.iso_equiv_of_fully_faithful 2022-04-09 10:39:57 7a0513d feat(data/nat/*): generalize typeclass assumptions (#13260) ESTIMATED CHANGES Modified src/data/nat/cast.lean +/- theorem map_nat_cast' Modified src/data/nat/parity.lean 2022-04-09 07:19:58 f5ee47b feat(category_theory/triangulated): upgrade map_triangle to a functor (#13262) Useful for LTE. ESTIMATED CHANGES Modified src/category_theory/triangulated/pretriangulated.lean +/- def category_theory.triangulated.pretriangulated.triangulated_functor.map_triangle + def category_theory.triangulated.pretriangulated.triangulated_functor_struct.id +/- def category_theory.triangulated.pretriangulated.triangulated_functor_struct.map_triangle Modified src/category_theory/triangulated/rotate.lean +/- def category_theory.triangulated.from_inv_rotate_rotate +/- def category_theory.triangulated.from_rotate_inv_rotate +/- def category_theory.triangulated.inv_rot_comp_rot +/- def category_theory.triangulated.inv_rot_comp_rot_hom +/- def category_theory.triangulated.inv_rot_comp_rot_inv +/- def category_theory.triangulated.inv_rotate +/- def category_theory.triangulated.rot_comp_inv_rot +/- def category_theory.triangulated.rot_comp_inv_rot_hom +/- def category_theory.triangulated.rot_comp_inv_rot_inv +/- def category_theory.triangulated.rotate +/- def category_theory.triangulated.to_inv_rotate_rotate +/- def category_theory.triangulated.to_rotate_inv_rotate 2022-04-09 06:37:15 a98a26b chore(measure_theory): move lemmas about `ae_measurable` to a new file (#13246) ESTIMATED CHANGES Modified src/dynamics/ergodic/measure_preserving.lean Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/lattice.lean Added src/measure_theory/measure/ae_measurable.lean + theorem ae_measurable.add_measure + theorem ae_measurable.ae_inf_principal_eq_mk + theorem ae_measurable.ae_mem_imp_eq_mk + theorem ae_measurable.comp_measurable' + theorem ae_measurable.comp_measurable + theorem ae_measurable.exists_ae_eq_range_subset + theorem ae_measurable.indicator + theorem ae_measurable.mono_measure + theorem ae_measurable.mono_set + theorem ae_measurable.prod_mk + theorem ae_measurable.restrict + theorem ae_measurable.smul_measure + theorem ae_measurable.subtype_mk + theorem ae_measurable.sum_measure + theorem ae_measurable_Union_iff + theorem ae_measurable_add_measure_iff + theorem ae_measurable_iff_measurable + theorem ae_measurable_indicator_iff + theorem ae_measurable_interval_oc_iff + theorem ae_measurable_map_equiv_iff + theorem ae_measurable_of_ae_measurable_trim + theorem ae_measurable_of_subsingleton_codomain + theorem ae_measurable_one + theorem ae_measurable_restrict_iff_comap_subtype + theorem ae_measurable_restrict_of_measurable_subtype + theorem ae_measurable_smul_measure_iff + theorem ae_measurable_sum_measure_iff + theorem ae_measurable_union_iff + theorem ae_measurable_zero_measure + theorem measurable_embedding.ae_measurable_comp_iff + theorem measurable_embedding.ae_measurable_map_iff + theorem subsingleton.ae_measurable Modified src/measure_theory/measure/measure_space.lean - theorem ae_measurable.add_measure - theorem ae_measurable.ae_inf_principal_eq_mk - theorem ae_measurable.ae_mem_imp_eq_mk - theorem ae_measurable.comp_measurable' - theorem ae_measurable.comp_measurable - theorem ae_measurable.exists_ae_eq_range_subset - theorem ae_measurable.indicator - theorem ae_measurable.mono_measure - theorem ae_measurable.mono_set - theorem ae_measurable.prod_mk - theorem ae_measurable.restrict - theorem ae_measurable.smul_measure - theorem ae_measurable.subtype_mk - theorem ae_measurable.sum_measure - theorem ae_measurable_Union_iff - theorem ae_measurable_add_measure_iff - theorem ae_measurable_iff_measurable - theorem ae_measurable_indicator_iff - theorem ae_measurable_interval_oc_iff - theorem ae_measurable_map_equiv_iff - theorem ae_measurable_of_ae_measurable_trim - theorem ae_measurable_of_subsingleton_codomain - theorem ae_measurable_one - theorem ae_measurable_restrict_iff_comap_subtype - theorem ae_measurable_restrict_of_measurable_subtype - theorem ae_measurable_smul_measure_iff - theorem ae_measurable_sum_measure_iff - theorem ae_measurable_union_iff - theorem ae_measurable_zero_measure - theorem measurable_embedding.ae_measurable_comp_iff - theorem measurable_embedding.ae_measurable_map_iff - theorem subsingleton.ae_measurable 2022-04-09 05:46:44 59cf367 chore(analysis/special_functions/pow): golf a proof (#13247) `complex.continuous_at_cpow_const` follows from `complex.continuous_at_cpow`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean 2022-04-09 00:02:05 2a04ec0 feat(data/list/big_operators): More lemmas about alternating product (#13195) A few more lemmas about `list.alternating_prod` and `list.alternating_sum` and a proof that 11 divides even length base 10 palindromes. Also rename `palindrome` to `list.palindrome` (as it should have been). ESTIMATED CHANGES Modified src/data/list/big_operators.lean + theorem list.alternating_prod_append + theorem list.alternating_prod_cons' + theorem list.alternating_prod_cons + theorem list.alternating_prod_cons_cons' +/- theorem list.alternating_prod_cons_cons +/- theorem list.alternating_prod_nil + theorem list.alternating_prod_reverse +/- theorem list.alternating_prod_singleton - theorem list.alternating_sum_cons_cons Modified src/data/list/palindrome.lean + theorem list.palindrome.append_reverse + theorem list.palindrome.iff_reverse_eq + theorem list.palindrome.of_reverse_eq + theorem list.palindrome.reverse_eq + inductive list.palindrome - theorem palindrome.append_reverse - theorem palindrome.iff_reverse_eq - theorem palindrome.of_reverse_eq - theorem palindrome.reverse_eq - inductive palindrome Modified src/data/nat/digits.lean +/- theorem nat.eleven_dvd_iff + theorem nat.eleven_dvd_of_palindrome 2022-04-08 21:51:39 485d648 feat(algebra/big_operators): some big operator lemmas (#13066) Note that `prod_coe_sort` is essentially `prod_finset_coe` restated with the relatively new `finset.has_coe_to_sort`. I can also place `prod_finset_coe` with `prod_coe_sort` if we prefer. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_coe_sort + theorem finset.prod_coe_sort_eq_attach - theorem fintype.prod_finset_coe Modified src/data/finset/basic.lean + theorem finset.erase_insert_eq_erase Modified src/measure_theory/measure/measure_space.lean 2022-04-08 17:20:39 9498bea feat(group_theory/group_action/fixing_subgroup): add lemmas about fixing_subgroup (#13202) - pull back here the definition of fixing_subgroup and fixing_submonoid from field_theory.galois - add lemmas about fixing_subgroup or fixing_submonoid in the context of mul_action - add Galois connection relating it with fixed_points. ESTIMATED CHANGES Modified src/field_theory/galois.lean - def fixing_subgroup - def fixing_submonoid Modified src/field_theory/krull_topology.lean + theorem intermediate_field.mem_fixing_subgroup_iff - theorem mem_fixing_subgroup_iff Added src/group_theory/group_action/fixing_subgroup.lean + theorem fixed_points_antitone + theorem fixed_points_subgroup_antitone + theorem fixed_points_subgroup_sup + theorem fixed_points_subgroup_supr + theorem fixed_points_submonoid_sup + theorem fixed_points_submonoid_supr + def fixing_subgroup + theorem fixing_subgroup_Union + theorem fixing_subgroup_antitone + theorem fixing_subgroup_fixed_points_gc + theorem fixing_subgroup_union + def fixing_submonoid + theorem fixing_submonoid_Union + theorem fixing_submonoid_antitone + theorem fixing_submonoid_fixed_points_gc + theorem fixing_submonoid_union + theorem mem_fixing_subgroup_iff + theorem mem_fixing_submonoid_iff 2022-04-08 15:41:02 ed266e5 feat(category_theory/limits/terminal): limit of the constant terminal functor (#13238) Needed in LTE. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.colimit_const_initial + def category_theory.limits.limit_const_terminal + theorem category_theory.limits.limit_const_terminal_inv_π + theorem category_theory.limits.ι_colimit_const_initial_hom 2022-04-08 15:41:01 afa9be2 feat(category_theory/limits/pullbacks): missing simp lemmas (#13237) Absence noted in LTE. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean +/- theorem category_theory.limits.cospan_comp_iso_app_left +/- theorem category_theory.limits.cospan_comp_iso_app_one +/- theorem category_theory.limits.cospan_comp_iso_app_right + theorem category_theory.limits.cospan_comp_iso_hom_app_left + theorem category_theory.limits.cospan_comp_iso_hom_app_one + theorem category_theory.limits.cospan_comp_iso_hom_app_right + theorem category_theory.limits.cospan_comp_iso_inv_app_left + theorem category_theory.limits.cospan_comp_iso_inv_app_one + theorem category_theory.limits.cospan_comp_iso_inv_app_right +/- theorem category_theory.limits.cospan_ext_app_left +/- theorem category_theory.limits.cospan_ext_app_one +/- theorem category_theory.limits.cospan_ext_app_right + theorem category_theory.limits.cospan_ext_hom_app_left + theorem category_theory.limits.cospan_ext_hom_app_one + theorem category_theory.limits.cospan_ext_hom_app_right + theorem category_theory.limits.cospan_ext_inv_app_left + theorem category_theory.limits.cospan_ext_inv_app_one + theorem category_theory.limits.cospan_ext_inv_app_right +/- theorem category_theory.limits.span_comp_iso_app_left +/- theorem category_theory.limits.span_comp_iso_app_right +/- theorem category_theory.limits.span_comp_iso_app_zero + theorem category_theory.limits.span_comp_iso_hom_app_left + theorem category_theory.limits.span_comp_iso_hom_app_right + theorem category_theory.limits.span_comp_iso_hom_app_zero + theorem category_theory.limits.span_comp_iso_inv_app_left + theorem category_theory.limits.span_comp_iso_inv_app_right + theorem category_theory.limits.span_comp_iso_inv_app_zero +/- theorem category_theory.limits.span_ext_app_left +/- theorem category_theory.limits.span_ext_app_one +/- theorem category_theory.limits.span_ext_app_right + theorem category_theory.limits.span_ext_hom_app_left + theorem category_theory.limits.span_ext_hom_app_right + theorem category_theory.limits.span_ext_hom_app_zero + theorem category_theory.limits.span_ext_inv_app_left + theorem category_theory.limits.span_ext_inv_app_right + theorem category_theory.limits.span_ext_inv_app_zero 2022-04-08 15:40:59 0521344 feat(analysis/locally_convex/basic): add lemmas about finite unions for absorbs (#13236) - Lemma for absorbing sets and addition - Two Lemmas for absorbing sets as finite unions (set.finite and finset variant) - Lemma for absorbent sets absorb finite sets. ESTIMATED CHANGES Modified src/analysis/locally_convex/basic.lean + theorem absorbent.absorbs_finite + theorem absorbs.add + theorem absorbs_Union_finset + theorem set.finite.absorbs_Union 2022-04-08 15:40:58 0831e4f feat(data/polynomial/degree/definitions): add `degree_monoid_hom` (#13233) It will be used to simplify the proof of some lemmas. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + def polynomial.degree_monoid_hom 2022-04-08 13:45:44 f5d4fa1 feat(data/fintype/basic): add `fintype_of_{equiv,option}` (#13086) `fintype_of_option_equiv` was extracted from @huynhtrankhanh's https://github.com/leanprover-community/mathlib/pull/11162, moved here to a separate PR. The split into `fintype_of_option` and `fintype_of_equiv` is based on a comment on that PR by @jcommelin. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + def fintype_of_option + def fintype_of_option_equiv 2022-04-08 13:45:43 d96e17d feat(data/multiset/basic): add `map_le_map_iff` and `map_embedding` (#13082) Adds lemmas `map_le_map_iff : s.map f ≤ t.map f ↔ s ≤ t` and `map_embedding : multiset α ↪o multiset β` for embedding `f`. Extracted from @huynhtrankhanh's #11162, moved here to a separate PR ESTIMATED CHANGES Modified src/data/multiset/basic.lean + def multiset.map_embedding + theorem multiset.map_le_map_iff 2022-04-08 13:45:41 5acaeaf chore(computability/language): Golf (#13039) Golf the `semiring` instance using the `set.image2` API, add half missing docstring. ESTIMATED CHANGES Modified src/computability/language.lean +/- theorem language.mem_one +/- theorem language.mul_def + theorem language.nil_mem_one + theorem language.not_mem_zero 2022-04-08 13:45:40 2569ad5 feat(data/set/intervals/basic): An open interval of a dense order has no maximum/minimum (#12924) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean 2022-04-08 12:12:47 91ce04d chore(model_theory/encoding): Move the encoding for terms to its own file (#13223) Moves the declarations about encodings and cardinality of terms to their own file, `model_theory/encoding` ESTIMATED CHANGES Added src/model_theory/encoding.lean + theorem first_order.language.term.card_le + theorem first_order.language.term.card_le_omega + def first_order.language.term.list_decode + theorem first_order.language.term.list_decode_encode_list + def first_order.language.term.list_encode + theorem first_order.language.term.list_encode_injective Modified src/model_theory/substructures.lean Modified src/model_theory/syntax.lean - theorem first_order.language.term.card_le - theorem first_order.language.term.card_le_omega - def first_order.language.term.list_decode - theorem first_order.language.term.list_decode_encode_list - def first_order.language.term.list_encode - theorem first_order.language.term.list_encode_injective 2022-04-08 12:12:46 ed68854 feat(model_theory/*): Theory of nonempty structures and bundling elementary substructures (#13118) Defines a sentence and theory to indicate a structure is nonempty Defines a map to turn elementary substructures of a bundled model into bundled models ESTIMATED CHANGES Modified src/model_theory/bundled.lean + def first_order.language.elementary_substructure.to_Model Modified src/model_theory/elementary_maps.lean + theorem first_order.language.elementary_substructure.Theory_model_iff + theorem first_order.language.elementary_substructure.realize_sentence Modified src/model_theory/semantics.lean + theorem first_order.language.Theory.model_nonempty_iff + theorem first_order.language.sentence.realize_nonempty Modified src/model_theory/syntax.lean 2022-04-08 12:12:45 710fe04 feat(model_theory/order): Defines ordered languages and structures (#13088) Defines ordered languages and ordered structures Defines the theories of pre-, partial, and linear orders, shows they are modeled by the respective structures. ESTIMATED CHANGES Added src/model_theory/order.lean + def first_order.language.is_ordered_structure + def first_order.language.order_Lhom + theorem first_order.language.order_Lhom_order + def first_order.language.term.le 2022-04-08 12:12:44 7340720 feat(group_theory/group_action/basic): Add typeclass for actions that descend to the quotient (#12999) Part of #12848. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean 2022-04-08 11:40:03 851b320 feat(ring_theory/localization): b is linear independent over R iff l.i. over `Frac(R)` (#13041) ESTIMATED CHANGES Added src/ring_theory/localization/module.lean + theorem linear_independent.iff_fraction_ring + theorem linear_independent.localization 2022-04-08 07:42:13 7d41715 feat(archive/imo/imo2008_q3): golf (#13232) ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean 2022-04-08 07:42:12 e85dc17 feat(group_theory/subgroup/basic): The centralizer of a characteristic subgroup is characteristic (#13230) This PR proves that the centralizer of a characteristic subgroup is characteristic. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean 2022-04-08 07:42:10 95ebbad refactor(group_theory/commutator): Move `commutator_le_map_commutator` (#13229) `commutator_le_map_commutator` is a general lemma about commutators, so it should be moved from `solvable.lean` to `commutator.lean`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean + theorem subgroup.commutator_le_map_commutator Modified src/group_theory/solvable.lean - theorem commutator_le_map_commutator 2022-04-08 07:42:09 1a4203a feat(group_theory/coset): Right cosets are in bijection with left cosets (#13228) Right cosets are in bijection with left cosets. This came up in some work involving right transversals. ESTIMATED CHANGES Modified src/group_theory/coset.lean + def quotient_group.quotient_right_rel_equiv_quotient_left_rel 2022-04-08 07:42:08 499a4a8 feat(group_theory/index): `fintype_of_index_ne_zero` (#13225) This PR adds `fintype_of_index_ne_zero`. ESTIMATED CHANGES Modified src/group_theory/index.lean 2022-04-08 06:14:18 ccf3e37 feat(ring_theory/unique_factorization_domain): alternative specification for `count (normalized_factors x)` (#13161) `count_normalized_factors_eq` specifies the number of times an irreducible factor `p` appears in `normalized_factors x`, namely the number of times it divides `x`. This is often easier to work with than going through `multiplicity` since this way we avoid coercing to `enat`. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.count_normalized_factors_eq 2022-04-08 06:14:17 0c424e9 refactor(analysis/normed_space/conformal_linear_map): redefine (#13143) Use equality of bundled maps instead of coercions to functions in the definition of `is_conformal_map`. Also golf some proofs. ESTIMATED CHANGES Modified src/analysis/calculus/conformal/normed_space.lean + theorem subsingleton.conformal_at Modified src/analysis/complex/conformal.lean +/- theorem is_conformal_map_complex_linear Modified src/analysis/complex/real_deriv.lean +/- theorem differentiable_at.conformal_at Modified src/analysis/inner_product_space/conformal_linear_map.lean +/- theorem is_conformal_map_iff Modified src/analysis/normed_space/conformal_linear_map.lean +/- theorem is_conformal_map.comp - theorem is_conformal_map.injective + theorem is_conformal_map.smul +/- theorem is_conformal_map_const_smul +/- theorem is_conformal_map_of_subsingleton - theorem linear_isometry.is_conformal_map Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.coe_mk + theorem linear_isometry.id_to_continuous_linear_map 2022-04-08 06:14:16 036fc99 feat(topology/uniform_space/uniform_convergence): add `tendsto_uniformly_iff_seq_tendsto_uniformly` (#13128) For countably generated filters, uniform convergence is equivalent to uniform convergence of sub-sequences. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.eventually_iff_seq_eventually Modified src/order/filter/bases.lean + theorem filter.has_antitone_basis.prod Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_uniformly_iff_seq_tendsto_uniformly + theorem tendsto_uniformly_on.seq_tendsto_uniformly_on + theorem tendsto_uniformly_on_iff_seq_tendsto_uniformly_on + theorem tendsto_uniformly_on_of_seq_tendsto_uniformly_on 2022-04-08 06:14:15 ab60244 feat(model_theory/basic,bundled): Structures induced by equivalences (#13124) Defines `equiv.induced_Structure`, a structure on the codomain of a bijection that makes the bijection an isomorphism. Defines maps on bundled models to shift them along bijections and up and down universes. ESTIMATED CHANGES Modified src/model_theory/basic.lean + def equiv.induced_Structure + def equiv.induced_Structure_equiv Modified src/model_theory/bundled.lean + def first_order.language.Theory.Model.equiv_induced + def first_order.language.Theory.Model.ulift Modified src/model_theory/semantics.lean + theorem first_order.language.equiv.Theory_model +/- theorem first_order.language.equiv.realize_bounded_formula +/- theorem first_order.language.equiv.realize_formula + theorem first_order.language.equiv.realize_sentence 2022-04-08 05:13:45 9f3e7fb feat(category_theory/limits): further API for commuting limits (#13215) Needed for LTE. ESTIMATED CHANGES Modified src/category_theory/functor/currying.lean + def category_theory.uncurry_obj_flip Modified src/category_theory/limits/fubini.lean + def category_theory.limits.limit_flip_comp_lim_iso_limit_comp_lim + theorem category_theory.limits.limit_flip_comp_lim_iso_limit_comp_lim_hom_π_π + theorem category_theory.limits.limit_flip_comp_lim_iso_limit_comp_lim_inv_π_π Modified src/category_theory/limits/has_limits.lean + theorem category_theory.limits.has_colimit.iso_of_nat_iso_inv_desc + theorem category_theory.limits.has_colimit.iso_of_nat_iso_ι_inv + theorem category_theory.limits.has_limit.iso_of_nat_iso_inv_π + theorem category_theory.limits.has_limit.lift_iso_of_nat_iso_inv Modified src/category_theory/limits/is_limit.lean + theorem category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso_inv_desc + theorem category_theory.limits.is_limit.lift_comp_cone_points_iso_of_nat_iso_inv 2022-04-08 02:06:33 5e98dc1 feat(topology/continuous_function/zero_at_infty): add more instances for zero_at_infty_continuous_map and establish C₀ functorial properties (#13196) This adds more instances for the type `C₀(α, β)` of continuous functions vanishing at infinity. Notably, these new instances include its non-unital ring, normed space and star structures, culminating with `cstar_ring` when `β` is a `cstar_ring` which is also a `topological_ring`. In addition, this establishes functorial properties of `C₀(-, β)` for various choices of algebraic categories involving `β`. The domain of these (contravariant) functors is the category of topological spaces with cocompact continuous maps, and the functor applied to a cocompact map is given by pre-composition. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/cocompact_map.lean Modified src/topology/continuous_function/zero_at_infty.lean + theorem zero_at_infty_continuous_map.coe_comp_to_continuous_fun + theorem zero_at_infty_continuous_map.coe_star + theorem zero_at_infty_continuous_map.coe_to_bcf_add_monoid_hom + def zero_at_infty_continuous_map.comp + def zero_at_infty_continuous_map.comp_add_monoid_hom + theorem zero_at_infty_continuous_map.comp_assoc + theorem zero_at_infty_continuous_map.comp_id + def zero_at_infty_continuous_map.comp_linear_map + def zero_at_infty_continuous_map.comp_mul_hom + def zero_at_infty_continuous_map.comp_non_unital_alg_hom + theorem zero_at_infty_continuous_map.norm_to_bcf_eq_norm + theorem zero_at_infty_continuous_map.star_apply + def zero_at_infty_continuous_map.to_bcf_add_monoid_hom + theorem zero_at_infty_continuous_map.to_bcf_injective - theorem zero_at_infty_continuous_map.to_bounded_continuous_function_injective + theorem zero_at_infty_continuous_map.zero_comp 2022-04-08 00:26:57 0719b36 feat(category_theory/limits/shapes): isomorphisms of (co)spans (#13216) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.cospan_comp_iso + theorem category_theory.limits.cospan_comp_iso_app_left + theorem category_theory.limits.cospan_comp_iso_app_one + theorem category_theory.limits.cospan_comp_iso_app_right + def category_theory.limits.cospan_ext + theorem category_theory.limits.cospan_ext_app_left + theorem category_theory.limits.cospan_ext_app_one + theorem category_theory.limits.cospan_ext_app_right + def category_theory.limits.span_comp_iso + theorem category_theory.limits.span_comp_iso_app_left + theorem category_theory.limits.span_comp_iso_app_right + theorem category_theory.limits.span_comp_iso_app_zero + def category_theory.limits.span_ext + theorem category_theory.limits.span_ext_app_left + theorem category_theory.limits.span_ext_app_one + theorem category_theory.limits.span_ext_app_right 2022-04-08 00:26:56 b897115 chore(algebra/associated): generalisation linter (#13108) ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associates.bot_eq_one +/- theorem associates.mk_injective +/- theorem associates.mk_one +/- theorem dvd_not_unit.is_unit_of_irreducible_right +/- theorem dvd_not_unit.not_unit +/- theorem dvd_not_unit_of_dvd_not_unit_associated +/- theorem not_irreducible_of_not_unit_dvd_not_unit 2022-04-07 22:31:46 cae5164 chore(algebra/order/{monoid,ring}): missing typeclasses about `*` and `+` on `order_dual` (#13004) ESTIMATED CHANGES Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/ring.lean 2022-04-07 20:32:53 02a2560 feat(analysis/normed_space/add_torsor_bases): add `convex.interior_nonempty_iff_affine_span_eq_top` (#13220) Generalize `interior_convex_hull_nonempty_iff_aff_span_eq_top` to any convex set, not necessarily written as the convex hull of a set. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean + theorem convex.interior_nonempty_iff_affine_span_eq_top 2022-04-07 20:32:52 0f4d0ae feat(data/polynomial/identities): golf using `linear_combination` (#13212) ESTIMATED CHANGES Modified src/data/polynomial/identities.lean 2022-04-07 20:32:51 3b04f48 feat(number_theory/fermat4): golf using `linear_combination` (#13211) ESTIMATED CHANGES Modified src/number_theory/fermat4.lean 2022-04-07 20:32:50 82d1e9f feat(algebra/quadratic_discriminant): golf using `linear_combination` (#13210) ESTIMATED CHANGES Modified src/algebra/quadratic_discriminant.lean 2022-04-07 18:41:47 4ff75f5 refactor(category_theory/bicategory): set simp-normal form for 2-morphisms (#13185) ## Problem The definition of bicategories contains the following axioms: ```lean associator_naturality_left : ∀ {f f' : a ⟶ b} (η : f ⟶ f') (g : b ⟶ c) (h : c ⟶ d), (η ▷ g) ▷ h ≫ (α_ f' g h).hom = (α_ f g h).hom ≫ η ▷ (g ≫ h) associator_naturality_middle : ∀ (f : a ⟶ b) {g g' : b ⟶ c} (η : g ⟶ g') (h : c ⟶ d), (f ◁ η) ▷ h ≫ (α_ f g' h).hom = (α_ f g h).hom ≫ f ◁ (η ▷ h) associator_naturality_right : ∀ (f : a ⟶ b) (g : b ⟶ c) {h h' : c ⟶ d} (η : h ⟶ h'), (f ≫ g) ◁ η ≫ (α_ f g h').hom = (α_ f g h).hom ≫ f ◁ (g ◁ η) left_unitor_naturality : ∀ {f g : a ⟶ b} (η : f ⟶ g), 𝟙 a ◁ η ≫ (λ_ g).hom = (λ_ f).hom ≫ η right_unitor_naturality : ∀ {f g : a ⟶ b} (η : f ⟶ g) : η ▷ 𝟙 b ≫ (ρ_ g).hom = (ρ_ f).hom ≫ η ``` By using these axioms, we can see that, for example, 2-morphisms `(f₁ ≫ f₂) ◁ (f₃ ◁ (η ▷ (f₄ ≫ f₅)))` and `f₁ ◁ ((𝟙_ ≫ f₂ ≫ f₃) ◁ ((η ▷ f₄) ▷ f₅))` are equal up to some associators and unitors. The problem is that the proof of this fact requires tedious rewriting. We should insert appropriate associators and unitors, and then rewrite using the above axioms manually. This tedious rewriting is also a problem when we use the (forthcoming) `coherence` tactic (bicategorical version of #13125), which only works if the non-structural 2-morphisms in the LHS and the RHS are the same. ## Main change The main proposal of this PR is to introduce a normal form of such 2-morphisms, and put simp attributes to suitable lemmas in order to rewrite any 2-morphism into the normal form. For example, the normal form of the previouse example is `f₁ ◁ (f₂ ◁ (f₃ ◁ ((η ▷ f₄) ▷ f₅)))`. The precise definition of the normal form can be found in the docs in `basic.lean` file. The new simp lemmas introduced in this PR are the following: ```lean whisker_right_comp : ∀ {f f' : a ⟶ b} (η : f ⟶ f') (g : b ⟶ c) (h : c ⟶ d), η ▷ (g ≫ h) = (α_ f g h).inv ≫ η ▷ g ▷ h ≫ (α_ f' g h).hom whisker_assoc : ∀ (f : a ⟶ b) {g g' : b ⟶ c} (η : g ⟶ g') (h : c ⟶ d), (f ◁ η) ▷ h = (α_ f g h).hom ≫ f ◁ (η ▷ h) ≫ (α_ f g' h).inv comp_whisker_left : ∀ (f : a ⟶ b) (g : b ⟶ c) {h h' : c ⟶ d} (η : h ⟶ h'), (f ≫ g) ◁ η = (α_ f g h).hom ≫ f ◁ g ◁ η ≫ (α_ f g h').inv id_whisker_left : ∀ {f g : a ⟶ b} (η : f ⟶ g), 𝟙 a ◁ η = (λ_ f).hom ≫ η ≫ (λ_ g).inv whisker_right_id : ∀ {f g : a ⟶ b} (η : f ⟶ g), η ▷ 𝟙 b = (ρ_ f).hom ≫ η ≫ (ρ_ g).inv ``` Logically, these are equivalent to the five axioms presented above. The point is that these equalities have the definite simplification direction. ## Improvement Some proofs that had been based on tedious rewriting are now automated. For example, the conditions in `oplax_nat_trans.id`, `oplax_nat_trans.comp`, and several functions in `functor_bicategory.lean` are now proved by `tidy`. ## Specific changes - The new simp lemmas `whisker_right_comp` etc. actually have been included in the definition of bicategories instead of `associate_naturality_left` etc. so that the latter lemmas are proved in later of the file just by `simp`. - The precedence of the whiskering notations "infixr ` ◁ `:70" and "infixr ` ◁ `:70" have been changed into "infixr ` ◁ `:81" and "infixr ` ◁ `:81", which is now higher than that of the composition `≫`. This setting is consistent with the normal form introduced in this PR in the sence that an expression is in normal form only if it has the minimal number of parentheses in this setting. For example, the normal form `f₁ ◁ (f₂ ◁ (f₃ ◁ ((η ▷ f₄) ▷ f₅)))` can be written as `f₁ ◁ f₂ ◁ f₃ ◁ η ▷ f₄ ▷ f₅`. - The unneeded parentheses caused by the precedence change have been removed. - The lemmas `whisker_right_id` and `whisker_right_comp` have been renamed to `id_whisker_right` and `comp_whisker_right` since these are more consistent with the notation. Note that the name `whisker_right_id` and `whisker_right_comp` are now used for the two of the five simp lemmas presented above. - The lemmas in `basic.lean` have been rearranged to be more logically consistent. ## Future work I would like to apply a similar strategy for monoidal categories. ESTIMATED CHANGES Modified src/category_theory/bicategory/basic.lean - theorem category_theory.bicategory.associator_conjugation_left - theorem category_theory.bicategory.associator_conjugation_middle - theorem category_theory.bicategory.associator_conjugation_right - theorem category_theory.bicategory.associator_inv_conjugation_left - theorem category_theory.bicategory.associator_inv_conjugation_middle - theorem category_theory.bicategory.associator_inv_conjugation_right + theorem category_theory.bicategory.associator_naturality_left + theorem category_theory.bicategory.associator_naturality_middle + theorem category_theory.bicategory.associator_naturality_right + theorem category_theory.bicategory.comp_whisker_left_symm + theorem category_theory.bicategory.id_whisker_left_symm - theorem category_theory.bicategory.left_unitor_comp' - theorem category_theory.bicategory.left_unitor_comp_inv' - theorem category_theory.bicategory.left_unitor_conjugation +/- theorem category_theory.bicategory.left_unitor_inv_naturality + theorem category_theory.bicategory.left_unitor_naturality - theorem category_theory.bicategory.right_unitor_conjugation +/- theorem category_theory.bicategory.right_unitor_inv_naturality + theorem category_theory.bicategory.right_unitor_naturality + theorem category_theory.bicategory.whisker_assoc_symm + theorem category_theory.bicategory.whisker_right_comp_symm + theorem category_theory.bicategory.whisker_right_id_symm Modified src/category_theory/bicategory/coherence.lean + theorem category_theory.free_bicategory.preinclusion_obj Modified src/category_theory/bicategory/free.lean Modified src/category_theory/bicategory/functor.lean Modified src/category_theory/bicategory/functor_bicategory.lean Modified src/category_theory/bicategory/natural_transformation.lean Modified src/category_theory/bicategory/strict.lean 2022-04-07 18:41:46 44c31d8 feat(data/finset/basic): add `map_injective` and `sigma_equiv_option_of_inhabited` (#13083) Adds `map_injective (f : α ↪ β) : injective (map f) := (map_embedding f).injective` and `sigma_equiv_option_of_inhabited [inhabited α] : Σ (β : Type u), α ≃ option β`. Extracted from @huynhtrankhanh's https://github.com/leanprover-community/mathlib/pull/11162, moved here to a separate PR ESTIMATED CHANGES Modified src/data/finset/basic.lean + def equiv.sigma_equiv_option_of_inhabited + theorem finset.map_injective 2022-04-07 18:41:45 9d786ce feat(topology/metric/basic): construct a bornology from metric axioms and add it to the pseudo metric structure (#12078) Every metric structure naturally gives rise to a bornology where the bounded sets are precisely the metric bounded sets. The eventual goal will be to replace the existing `metric.bounded` with one defined in terms of the bornology, so we need to construct the bornology first, as we do here. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/number_theory/modular.lean Modified src/topology/metric_space/basic.lean + def bornology.of_dist 2022-04-07 16:53:29 2d2d09c feat(data/nat/gcd): added gcd_mul_of_dvd_coprime (#12989) Added gcd_mul_of_dvd_coprime lemma to gcd.lean. ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.gcd_mul_of_coprime_of_dvd 2022-04-07 16:20:47 733aed5 chore(group_theory/index): Add `to_additive` (#13191) This PR adds `to_additive` to the rest of `group_theory/index.lean`. ESTIMATED CHANGES 2022-04-07 16:20:46 c522e3b feat(data/polynomial/basic): add simp lemmas X_mul_C and X_pow_mul_C (#13163) These lemmas are direct applications of `X_mul` and `X_pow_mul`. However, their more general version cannot be `simp` lemmas since they form loops. These versions do not, since they involve an explicit `C`. I golfed slightly a proof in `linear_algebra.eigenspace` since it was timing out. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/polynomial.20op_C/near/277703846) ESTIMATED CHANGES 2022-04-07 16:20:44 6a0524f feat(category_theory/monoidal): upgrades for monoidal equivalences (#13158) (Recall that a "monoidal equivalence" is a functor which is separately monoidal, and an equivalence. This PR completes the work required to see this is the same as having a monoidal inverse, up to monoidal units and counits.) * Shows that the unit and counit of a monoidal equivalence have a natural monoidal structure. * Previously, when transporting a monoidal structure across a (non-monoidal) equivalence, we constructed directly the monoidal strength on the inverse functor. In the meantime, @b-mehta has provided a general construction for the monoidal strength on the inverse of any monoidal equivalence, so now we use that. The proofs of `monoidal_unit` and `monoidal_counit` in `category_theory/monoidal/natural_transformation.lean` are quite ugly. If anyone would like to golf these that would be lovely! :-) ESTIMATED CHANGES 2022-04-07 16:20:43 d7ad7d3 feat(set_theory/cardinal): Upper bound on domain from upper bound on fibers (#13147) A uniform upper bound on fibers gives an upper bound on the domain. ESTIMATED CHANGES 2022-04-07 16:20:41 47a3cd2 feat(probability/integration): Bochner integral of the product of independent functions (#13140) This is limited to real-valued functions, which is not very satisfactory but it is not clear (to me) what the most general version of each of those lemmas would be. ESTIMATED CHANGES 2022-04-07 16:20:40 ab1bf0f feat(algebra/order/monoid): add eq_one_or_one_lt (#13131) Needed in LTE. ESTIMATED CHANGES 2022-04-07 16:20:39 7c04f36 feat(group_theory/schreier): prove Schreier's lemma (#13019) This PR adds a proof of Schreier's lemma. ESTIMATED CHANGES 2022-04-07 16:20:37 315bff3 feat(archive/100-theorems-list/37_solution_of_cubic): golf (#13012) Express one of the lemmas for the solution of the cubic as a giant `linear_combination` calculation. ESTIMATED CHANGES 2022-04-07 14:25:29 c4f3869 chore(order/symm_diff): Change the symmetric difference notation (#13217) The notation for `symm_diff` was `Δ` (`\D`, `\GD`, `\Delta`). It now is `∆` (`\increment`). ESTIMATED CHANGES Modified src/combinatorics/colex.lean Modified src/data/mv_polynomial/basic.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/measurable_space_def.lean Modified src/order/imp.lean +/- theorem lattice.compl_biimp +/- theorem lattice.compl_symm_diff Modified src/order/symm_diff.lean +/- theorem bot_symm_diff +/- theorem compl_symm_diff +/- theorem compl_symm_diff_self +/- theorem disjoint.symm_diff_eq_sup +/- theorem disjoint_symm_diff_inf +/- theorem inf_symm_diff_distrib_left +/- theorem inf_symm_diff_distrib_right +/- theorem inf_symm_diff_symm_diff +/- theorem is_compl.symm_diff_eq_top +/- theorem sdiff_symm_diff' +/- theorem sdiff_symm_diff +/- theorem sdiff_symm_diff_self +/- theorem sup_sdiff_symm_diff +/- theorem symm_diff_assoc +/- theorem symm_diff_bot +/- theorem symm_diff_comm +/- theorem symm_diff_compl_self +/- theorem symm_diff_eq +/- theorem symm_diff_eq_bot +/- theorem symm_diff_eq_left +/- theorem symm_diff_eq_right +/- theorem symm_diff_eq_sup +/- theorem symm_diff_eq_sup_sdiff_inf +/- theorem symm_diff_eq_top_iff +/- theorem symm_diff_eq_xor +/- theorem symm_diff_le_sup +/- theorem symm_diff_left_inj +/- theorem symm_diff_right_inj +/- theorem symm_diff_sdiff +/- theorem symm_diff_sdiff_left +/- theorem symm_diff_sdiff_right +/- theorem symm_diff_self +/- theorem symm_diff_symm_diff_inf +/- theorem symm_diff_symm_diff_self' +/- theorem symm_diff_symm_diff_self +/- theorem symm_diff_top +/- theorem top_symm_diff 2022-04-07 14:25:16 ac5188d chore(algebra/char_p/{basic + algebra}): weaken assumptions for char_p_to_char_zero (#13214) The assumptions for lemma `char_p_to_char_zero` can be weakened, without changing the proof. Since the weakening breaks up one typeclass assumption into two, when the lemma was applied with `@`, I inserted an extra `_`. This happens twice: once in the file where the lemma is, and once in a separate file. ESTIMATED CHANGES Modified src/algebra/char_p/algebra.lean Modified src/algebra/char_p/basic.lean +/- theorem char_p.char_p_to_char_zero 2022-04-07 14:25:13 321d159 feat(algebra/order/monoid): generalize, convert to `to_additive` and iff of `lt_or_lt_of_mul_lt_mul` (#13192) I converted a lemma showing `m + n < a + b → m < a ∨ n < b` to the `to_additive` version of a lemma showing `m * n < a * b → m < a ∨ n < b`. I also added a lemma showing `m * n < a * b ↔ m < a ∨ n < b` and its `to_additive` version. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean - theorem lt_or_lt_of_add_lt_add + theorem lt_or_lt_of_mul_lt_mul + theorem mul_lt_mul_iff_of_le_of_le 2022-04-07 12:26:52 506ad31 feat(order/monotone): simp lemmas for monotonicity in dual orders (#13207) Add 4 lemmas of the kind `antitone_to_dual_comp_iff` Add their variants for `antitone_on` Add their strict variants ESTIMATED CHANGES Modified src/logic/basic.lean + theorem forall₂_swap + def function.swap₂ Modified src/order/monotone.lean + theorem antitone_comp_of_dual_iff + theorem antitone_on_comp_of_dual_iff + theorem antitone_on_to_dual_comp_iff + theorem antitone_to_dual_comp_iff + theorem monotone_comp_of_dual_iff + theorem monotone_on_comp_of_dual_iff + theorem monotone_on_to_dual_comp_iff + theorem monotone_to_dual_comp_iff + theorem strict_anti_comp_of_dual_iff + theorem strict_anti_on_comp_of_dual_iff + theorem strict_anti_on_to_dual_comp_iff + theorem strict_anti_to_dual_comp_iff + theorem strict_mono_comp_of_dual_iff + theorem strict_mono_on_comp_of_dual_iff + theorem strict_mono_on_to_dual_comp_iff + theorem strict_mono_to_dual_comp_iff 2022-04-07 11:44:37 be147af feat(ring_theory/graded_algebra/homogeneous_localization): homogeneous localization ring is local (#13071) showed that `local_ring (homogeneous_localization 𝒜 x)` from prime ideal `x` ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/homogeneous_localization.lean + theorem homogeneous_localization.is_unit_iff_is_unit_val + theorem homogeneous_localization.val_mk' 2022-04-07 10:39:20 3e4bf5d feat(order/symm_diff): More symmetric difference lemmas (#13133) A few more `symm_diff` lemmas. ESTIMATED CHANGES 2022-04-07 07:05:52 faa7e52 chore(group_theory/index): Add `to_additive` (#13191) This PR adds `to_additive` to the rest of `group_theory/index.lean`. ESTIMATED CHANGES Modified src/group_theory/coset.lean Modified src/group_theory/index.lean +/- theorem subgroup.index_eq_one +/- theorem subgroup.index_inf_le +/- theorem subgroup.index_inf_ne_zero +/- theorem subgroup.index_ne_zero_of_fintype +/- theorem subgroup.inf_relindex_left +/- theorem subgroup.inf_relindex_right +/- theorem subgroup.relindex_dvd_of_le_left +/- theorem subgroup.relindex_eq_relindex_sup +/- theorem subgroup.relindex_inf_le +/- theorem subgroup.relindex_inf_ne_zero +/- theorem subgroup.relindex_le_of_le_left +/- theorem subgroup.relindex_le_of_le_right +/- theorem subgroup.relindex_mul_index +/- theorem subgroup.relindex_mul_relindex +/- theorem subgroup.relindex_ne_zero_trans 2022-04-07 07:05:50 45a8f6c feat(data/polynomial/basic): add simp lemmas X_mul_C and X_pow_mul_C (#13163) These lemmas are direct applications of `X_mul` and `X_pow_mul`. However, their more general version cannot be `simp` lemmas since they form loops. These versions do not, since they involve an explicit `C`. I golfed slightly a proof in `linear_algebra.eigenspace` since it was timing out. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/polynomial.20op_C/near/277703846) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.X_mul_C + theorem polynomial.X_pow_mul_C + theorem polynomial.X_pow_mul_assoc_C Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/matrix/polynomial.lean 2022-04-07 07:05:49 d047eb4 feat(category_theory/monoidal): upgrades for monoidal equivalences (#13158) (Recall that a "monoidal equivalence" is a functor which is separately monoidal, and an equivalence. This PR completes the work required to see this is the same as having a monoidal inverse, up to monoidal units and counits.) * Shows that the unit and counit of a monoidal equivalence have a natural monoidal structure. * Previously, when transporting a monoidal structure across a (non-monoidal) equivalence, we constructed directly the monoidal strength on the inverse functor. In the meantime, @b-mehta has provided a general construction for the monoidal strength on the inverse of any monoidal equivalence, so now we use that. The proofs of `monoidal_unit` and `monoidal_counit` in `category_theory/monoidal/natural_transformation.lean` are quite ugly. If anyone would like to golf these that would be lovely! :-) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + theorem category_theory.equivalence.as_equivalence_to_adjunction_counit + theorem category_theory.equivalence.as_equivalence_to_adjunction_unit Modified src/category_theory/monoidal/functor.lean - theorem category_theory.monoidal_inverse_to_functor Modified src/category_theory/monoidal/natural_transformation.lean + def category_theory.monoidal_counit + def category_theory.monoidal_unit Modified src/category_theory/monoidal/transport.lean - def category_theory.monoidal.lax_from_transported 2022-04-07 07:05:48 91db821 feat(set_theory/cardinal): Upper bound on domain from upper bound on fibers (#13147) A uniform upper bound on fibers gives an upper bound on the domain. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.mk_le_mk_mul_of_mk_preimage_le 2022-04-07 07:05:46 409f5f2 feat(probability/integration): Bochner integral of the product of independent functions (#13140) This is limited to real-valued functions, which is not very satisfactory but it is not clear (to me) what the most general version of each of those lemmas would be. ESTIMATED CHANGES Modified src/probability/integration.lean + theorem probability_theory.indep_fun.integrable_mul + theorem probability_theory.indep_fun.integral_mul_of_integrable + theorem probability_theory.indep_fun.integral_mul_of_nonneg + theorem probability_theory.lintegral_mul_eq_lintegral_mul_lintegral_of_indep_fun' +/- theorem probability_theory.lintegral_mul_eq_lintegral_mul_lintegral_of_indep_fun +/- theorem probability_theory.lintegral_mul_indicator_eq_lintegral_mul_lintegral_indicator 2022-04-07 07:05:45 fabad7e feat(order/symm_diff): More symmetric difference lemmas (#13133) A few more `symm_diff` lemmas. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem eq_of_sdiff_eq_sdiff + theorem inf_sdiff_distrib_left + theorem inf_sdiff_distrib_right + theorem inf_sdiff_right_comm + theorem sdiff_eq_comm + theorem sdiff_eq_symm + theorem sdiff_sdiff_eq_sdiff_sup + theorem sdiff_sdiff_le + theorem sdiff_sup_sdiff_cancel - theorem sdiff_symm Modified src/order/lattice.lean + theorem inf_inf_distrib_left + theorem inf_inf_distrib_right + theorem sup_sup_distrib_left + theorem sup_sup_distrib_right Modified src/order/symm_diff.lean - theorem disjoint.disjoint_symm_diff_of_disjoint + theorem inf_symm_diff_distrib_left + theorem inf_symm_diff_distrib_right + theorem inf_symm_diff_symm_diff + theorem sup_sdiff_symm_diff + theorem symm_diff_symm_diff_inf 2022-04-07 07:05:44 2a74d4e feat(algebra/order/monoid): add eq_one_or_one_lt (#13131) Needed in LTE. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem eq_one_or_one_lt 2022-04-07 07:05:40 9eff8cb feat(group_theory/schreier): prove Schreier's lemma (#13019) This PR adds a proof of Schreier's lemma. ESTIMATED CHANGES Modified docs/overview.yaml Added src/group_theory/schreier.lean + theorem subgroup.closure_mul_eq + theorem subgroup.closure_mul_eq_top 2022-04-07 07:05:37 45e4e62 feat(archive/100-theorems-list/37_solution_of_cubic): golf (#13012) Express one of the lemmas for the solution of the cubic as a giant `linear_combination` calculation. ESTIMATED CHANGES Modified archive/100-theorems-list/37_solution_of_cubic.lean 2022-04-07 06:05:46 f0ee4c8 feat(topology/metric_space): the product of bounded sets is bounded (#13176) Also add an `iff` version. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/lipschitz.lean + theorem metric.bounded.left_of_prod + theorem metric.bounded.right_of_prod + theorem metric.bounded_prod + theorem metric.bounded_prod_of_nonempty 2022-04-07 00:57:22 05820c5 feat(archive/imo/imo2008_q4): golf using `linear_combination` (#13209) ESTIMATED CHANGES Modified archive/imo/imo2008_q4.lean 2022-04-07 00:24:49 c4ced3a feat(archive/imo/imo2005_q6): golf using `field_simp` (#13206) ESTIMATED CHANGES Modified archive/imo/imo2005_q3.lean 2022-04-06 23:45:15 cc28054 feat(archive/imo/imo2001_q6): golf using `linear_combination` (#13205) ESTIMATED CHANGES Modified archive/imo/imo2001_q6.lean 2022-04-06 15:26:14 06bdd8b feat(geometry/manifold/tangent_bundle): adapt the definition to the new vector bundle definition (#13199) Also a few tweaks to simplify the defeq behavior of tangent spaces. ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff.lean + def tangent_bundle.zero_section Modified src/geometry/manifold/tangent_bundle.lean + theorem basic_smooth_vector_bundle_core.coord_change_continuous + theorem basic_smooth_vector_bundle_core.coord_change_smooth +/- def tangent_bundle.proj +/- def tangent_bundle +/- def tangent_space 2022-04-06 12:59:06 138448a feat(algebra/parity): introduce `is_square` and, via `to_additive`, also `even` (#13037) This PR continues the refactor began in #12882. Now that most of the the even/odd lemmas are in the same file, I changed the definition of `even` to become the `to_additive` version of `is_square`. The reason for the large number of files touched is that the definition of `even` actually changed, from being of the form `2 * n` to being of the form `n + n`. Thus, I inserted appropriate `two_mul`s and `even_iff_two_dvd`s in a few places where the defeq to the divisibility by 2 was exploited. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/even.2Fodd) ESTIMATED CHANGES Modified archive/100-theorems-list/45_partition.lean Modified archive/100-theorems-list/70_perfect_numbers.lean Modified archive/imo/imo2013_q1.lean Modified src/algebra/parity.lean - theorem add_monoid_hom.even - theorem even.add_even - theorem even.sub_even - def even +/- theorem even_abs + theorem even_iff_exists_two_mul +/- theorem even_iff_two_dvd - theorem even_neg +/- theorem even_neg_two +/- theorem even_two +/- theorem even_two_mul - theorem even_zero + theorem is_square.div_is_square + theorem is_square.map + theorem is_square.mul_is_square + def is_square + theorem is_square_iff_exists_sq + theorem is_square_inv + theorem is_square_mul_self + theorem is_square_one + theorem is_square_op_iff + theorem is_square_sq +/- theorem odd_abs Modified src/algebra/periodic.lean Modified src/analysis/convex/specific_functions.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/combinatorics/simple_graph/matching.lean Modified src/data/int/parity.lean +/- theorem int.div_two_mul_two_of_even +/- theorem int.two_mul_div_two_of_even Modified src/data/nat/parity.lean +/- theorem nat.div_two_mul_two_of_even +/- theorem nat.two_mul_div_two_of_even Modified src/group_theory/specific_groups/alternating.lean Modified src/number_theory/number_field.lean +/- theorem int.not_is_field Modified src/number_theory/primorial.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2022-04-06 06:48:08 6930ad5 feat(topology/continuous_function/zero_at_infty): add the type of continuous functions vanishing at infinity (#12907) This adds the type of of continuous functions vanishing at infinity (`zero_at_infty`) with the localized notation `C₀(α, β)` (we also allow `α →C₀ β` but the former has higher priority). This type is defined when `α` and `β` are topological spaces and `β` has a zero element. Elements of this type are continuous functions `f` with the additional property that `tendsto f (cocompact α) (𝓝 0)`. Here we attempt to follow closely the recent hom refactor and so we also create the type class `zero_at_infty_continuous_map_class`. Various algebraic structures are instantiated on `C₀(α, β)` when corresponding structures exist on `β`. When `β` is a metric space, there is a natural inclusion `zero_at_infty_continuous_map.to_bcf : C₀(α, β) → α →ᵇ β`, which induces a metric space structure on `C₀(α, β)`, and the range of this map is closed. Therefore, when `β` is complete, `α →ᵇ β` is complete, and hence so is `C₀(α, β)`. - [x] depends on: #12894 ESTIMATED CHANGES Added src/topology/continuous_function/zero_at_infty.lean + theorem zero_at_infty_continuous_map.add_apply + theorem zero_at_infty_continuous_map.bounded_image + theorem zero_at_infty_continuous_map.bounded_range + theorem zero_at_infty_continuous_map.closed_range_to_bcf + theorem zero_at_infty_continuous_map.coe_add + theorem zero_at_infty_continuous_map.coe_mul + theorem zero_at_infty_continuous_map.coe_neg + theorem zero_at_infty_continuous_map.coe_nsmul_rec + theorem zero_at_infty_continuous_map.coe_smul + theorem zero_at_infty_continuous_map.coe_sub + theorem zero_at_infty_continuous_map.coe_to_continuous_fun + theorem zero_at_infty_continuous_map.coe_zero + theorem zero_at_infty_continuous_map.coe_zsmul_rec + def zero_at_infty_continuous_map.continuous_map.lift_zero_at_infty + theorem zero_at_infty_continuous_map.dist_to_bcf_eq_dist + theorem zero_at_infty_continuous_map.eq_of_empty + theorem zero_at_infty_continuous_map.ext + theorem zero_at_infty_continuous_map.isometry_to_bcf + theorem zero_at_infty_continuous_map.mul_apply + theorem zero_at_infty_continuous_map.neg_apply + theorem zero_at_infty_continuous_map.smul_apply + theorem zero_at_infty_continuous_map.sub_apply + theorem zero_at_infty_continuous_map.tendsto_iff_tendsto_uniformly + def zero_at_infty_continuous_map.to_bcf + theorem zero_at_infty_continuous_map.to_bounded_continuous_function_injective + theorem zero_at_infty_continuous_map.zero_apply + def zero_at_infty_continuous_map.zero_at_infty_continuous_map_class.of_compact + structure zero_at_infty_continuous_map Modified src/topology/subset_properties.lean + theorem filter.cocompact_eq_bot 2022-04-06 03:42:41 2841aad chore(scripts): update nolints.txt (#13193) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-04-06 01:48:21 2e8d269 feat(data/nat/factorization): Generalize natural factorization recursors. (#12973) Switches `rec_on_prime_pow` precondition to allow use of `0 < n`, and strengthens correspondingly `rec_on_pos_prime_pos_coprime` and `rec_on_prime_coprime`. ESTIMATED CHANGES Modified src/data/nat/factorization.lean Modified src/data/nat/gcd.lean +/- theorem nat.coprime_pow_left_iff +/- theorem nat.coprime_pow_right_iff Modified src/number_theory/von_mangoldt.lean 2022-04-05 23:46:08 2504a2b chore(data/list/basic): remove axiom of choice assumption in some lemmas (#13189) ESTIMATED CHANGES Modified src/data/list/basic.lean 2022-04-05 21:26:16 a841361 refactor(topology/vector_bundle): redefine (#13175) The definition of topological vector bundle in #4658 was (inadvertently) a nonstandard definition, which agreed in finite dimension with the usual definition but not in infinite dimension. Specifically, it omitted the compatibility condition that for a vector bundle over `B` with model fibre `F`, the transition function `B → F ≃L[R] F` associated to any pair of trivializations be continuous, with respect to to the norm topology on `F →L[R] F`. (The transition function is automatically continuous with respect to the topology of pointwise convergence, which is why this works in finite dimension. The discrepancy between these conditions in infinite dimension turns out to be a [classic](https://mathoverflow.net/questions/4943/vector-bundle-with-non-smoothly-varying-transition-functions/4997#4997) [gotcha](https://mathoverflow.net/questions/54550/the-third-axiom-in-the-definition-of-infinite-dimensional-vector-bundles-why/54706#54706).) We refactor to add this compatibility condition to the definition of topological vector bundle, and to verify this condition in the existing examples of topological vector bundles (construction via a cocycle, direct sum of vector bundles, tangent bundle). ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem differentiable_within_at.antimono + theorem fderiv_within_subset' + theorem has_fderiv_within_at.antimono Modified src/data/set/prod.lean + theorem set.prod_eq_iff_eq Modified src/geometry/manifold/tangent_bundle.lean Modified src/topology/vector_bundle.lean + def continuous_transitions + theorem topological_vector_bundle.continuous_on_coord_change + def topological_vector_bundle.coord_change + theorem topological_vector_bundle.trans_eq_coord_change + theorem topological_vector_bundle.trivial_topological_vector_bundle.trivialization_source + theorem topological_vector_bundle.trivial_topological_vector_bundle.trivialization_target + theorem topological_vector_bundle.trivialization.comp_continuous_linear_equiv_at_eq_coord_change +/- theorem topological_vector_bundle.trivialization.prod_apply 2022-04-05 19:36:21 7ec52a1 chore(algebraic_topology/simplex_category): removed ulift (#13183) ESTIMATED CHANGES Modified src/algebraic_topology/alternating_face_map_complex.lean +/- theorem algebraic_topology.map_alternating_face_map_complex Modified src/algebraic_topology/simplex_category.lean +/- def simplex_category.const +/- theorem simplex_category.const_comp +/- theorem simplex_category.epi_iff_surjective +/- theorem simplex_category.eq_id_of_epi +/- theorem simplex_category.eq_id_of_is_iso +/- theorem simplex_category.eq_id_of_mono +/- theorem simplex_category.ext +/- def simplex_category.hom.comp +/- theorem simplex_category.hom.ext +/- def simplex_category.hom.id +/- def simplex_category.hom.mk +/- theorem simplex_category.hom.mk_to_order_hom +/- theorem simplex_category.hom.mk_to_order_hom_apply +/- def simplex_category.hom.to_order_hom +/- theorem simplex_category.hom.to_order_hom_mk +/- theorem simplex_category.is_iso_of_bijective +/- def simplex_category.is_skeleton_of +/- theorem simplex_category.iso_eq_iso_refl +/- def simplex_category.len +/- theorem simplex_category.len_le_of_epi +/- theorem simplex_category.len_le_of_mono +/- def simplex_category.mk +/- theorem simplex_category.mk_len +/- theorem simplex_category.mono_iff_injective +/- def simplex_category.order_iso_of_iso +/- theorem simplex_category.skeletal +/- def simplex_category.skeletal_functor +/- def simplex_category.truncated.inclusion +/- def simplex_category.truncated +/- def simplex_category Modified src/algebraic_topology/simplicial_object.lean +/- def category_theory.cosimplicial_object.augmented.whiskering +/- def category_theory.cosimplicial_object.augmented.whiskering_obj +/- def category_theory.cosimplicial_object.truncated.whiskering +/- def category_theory.cosimplicial_object.truncated +/- def category_theory.cosimplicial_object.whiskering +/- def category_theory.cosimplicial_object +/- def category_theory.simplicial_object.augmented.whiskering +/- def category_theory.simplicial_object.augmented.whiskering_obj +/- def category_theory.simplicial_object.truncated.whiskering +/- def category_theory.simplicial_object.truncated +/- def category_theory.simplicial_object.whiskering +/- def category_theory.simplicial_object 2022-04-05 19:36:20 960abb5 chore(algebra/monoid_algebra/grading): fix slow elaboration (#13169) There were a couple of lemmas in this file taking multiple seconds to elaborate. Apart from `squeeze_dsimps`, the main change in this PR is to help the elaborator unfold certain definitions (that it originally did unfold, but only after multiple seconds of trying to unfold other things), by replacing proofs with `by simpa only [some_unfolding_lemma] using the_original_proof`. The main alternative I discovered for the `simpa` changes was to strategically mark certain definitions irreducible. Those definitions needed to be unfolded in other places in this file, and it's less obviously connected to the source of the slowness: we might keep around the `local attribute [irreducible]` lines even if it's not needed after a refactor. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Slow.20defeqs.20in.20.60algebra.2Fmonoid_algebra.2Fgrading.2Elean.60 ESTIMATED CHANGES Modified src/algebra/monoid_algebra/grading.lean 2022-04-05 19:36:19 d34cbcf refactor(algebra/homology, category_theory/*): declassify exactness (#13153) Having `exact` be a class was very often somewhat inconvenient, so many lemmas took it as a normal argument while many others had it as a typeclass argument. This PR removes this inconsistency by downgrading `exact` to a structure. We lose very little by doing this, and using typeclass inference as a Prolog-like "automatic theorem prover" is rarely a good idea anyway. ESTIMATED CHANGES Modified src/algebra/homology/exact.lean +/- theorem category_theory.comp_eq_zero_of_exact + structure category_theory.exact + theorem category_theory.exact_comp_hom_inv_comp + theorem category_theory.exact_comp_inv_hom_comp +/- theorem category_theory.exact_comp_mono +/- theorem category_theory.exact_epi_comp + theorem category_theory.exact_epi_zero + theorem category_theory.exact_of_zero + theorem category_theory.exact_zero_mono +/- theorem category_theory.fork_ι_comp_cofork_π - theorem category_theory.functor.exact_of_exact_map' +/- theorem category_theory.kernel_comp_cokernel +/- theorem category_theory.kernel_subobject_arrow_eq_zero_of_exact_zero_left +/- theorem category_theory.kernel_ι_eq_zero_of_exact_zero_left Modified src/category_theory/abelian/diagram_lemmas/four.lean Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.exact.op + theorem category_theory.abelian.exact.unop +/- def category_theory.abelian.is_colimit_coimage +/- def category_theory.abelian.is_colimit_image +/- def category_theory.abelian.is_limit_image' +/- def category_theory.abelian.is_limit_image Modified src/category_theory/abelian/homology.lean Modified src/category_theory/abelian/injective_resolution.lean Modified src/category_theory/abelian/pseudoelements.lean +/- theorem category_theory.abelian.pseudoelement.pseudo_exact_of_exact Modified src/category_theory/abelian/right_derived.lean Modified src/category_theory/preadditive/injective.lean +/- def category_theory.injective.exact.desc Modified src/category_theory/preadditive/injective_resolution.lean + theorem category_theory.InjectiveResolution.complex_d_comp + theorem category_theory.InjectiveResolution.ι_f_zero_comp_complex_d Modified src/category_theory/preadditive/projective.lean Modified src/category_theory/preadditive/projective_resolution.lean + theorem category_theory.ProjectiveResolution.complex_d_comp_π_f_zero + theorem category_theory.ProjectiveResolution.complex_d_succ_comp 2022-04-05 19:36:18 427aae3 chore(algebra/*): generalisation linter (replacing ring with non_assoc_ring) (#13106) ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/big_operators/pi.lean +/- theorem ring_hom.functions_ext Modified src/algebra/big_operators/ring.lean Modified src/algebra/char_zero.lean Modified src/algebra/group_power/lemmas.lean +/- theorem bit0_mul +/- theorem bit1_mul +/- theorem mul_bit0 +/- theorem mul_bit1 +/- theorem nsmul_eq_mul' +/- theorem nsmul_eq_mul +/- theorem zsmul_eq_mul Modified src/algebra/ring/equiv.lean Modified src/ring_theory/subring/basic.lean 2022-04-05 19:00:50 e510b20 feat(group_theory/index): Index of intersection (#13186) This PR adds `relindex_inf_le` and `index_inf_le`, which are companion lemmas to `relindex_inf_ne_zero` and `index_inf_ne_zero`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.index_inf_le + theorem subgroup.relindex_inf_le 2022-04-05 16:22:19 cf131e1 feat(data/complex/exponential): add `real.cos_abs` (#13177) ESTIMATED CHANGES Modified src/data/complex/exponential.lean + theorem real.cos_abs 2022-04-05 16:22:18 b011b0e feat(ring_theory/unique_factorization_domain): The only divisors of prime powers are prime powers. (#12799) The only divisors of prime powers are prime powers in the associates monoid of an UFD. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem associates.count_eq_zero_of_ne + theorem associates.count_factors_eq_find_of_dvd_pow + theorem associates.count_le_count_of_factors_le + theorem associates.count_le_count_of_le + theorem associates.eq_pow_count_factors_of_dvd_pow + theorem associates.eq_pow_find_of_dvd_irreducible_pow 2022-04-05 14:51:10 fd1861c fix(tactic/ring): `ring_nf` should descend into subexpressions (#12430) Since the lambda passed to `ext_simp_core` was returning `ff`, this means the simplifier didn't descend into subexpressions, so `ring_nf` only tried to use the Horner normal form if the head symbol of the goal/hypothesis was `+`, `*`, `-` or `^`. In particular, since there are no such operations on `Sort`, `ring_nf` was exactly equivalent to `simp only [horner.equations._eqn_1, add_zero, one_mul, pow_one, neg_mul, add_neg_eq_sub]`. Toggling the return value means `ring_nf` will try to simplify all subexpressions, including the left hand side and right hand side of an equality. @alexjbest discovered the MWE included in `test/ring.lean` while trying to use `ring_nf` to simplify a complicated expression. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean Modified src/data/zmod/basic.lean Modified src/tactic/ring.lean Modified test/ring.lean 2022-04-05 12:54:02 91dd3b1 chore(ring_theory/integral_domain): dedup, tidy (#13180) ESTIMATED CHANGES Modified src/field_theory/finite/basic.lean Modified src/ring_theory/integral_domain.lean - def field_of_is_domain 2022-04-05 12:54:00 da132ec feat(*): define subobject classes from submonoid up to subfield (#11750) The next part of my big refactoring plans: subobject classes in the same style as morphism classes. This PR introduces the following subclasses of `set_like`: * `one_mem_class`, `zero_mem_class`, `mul_mem_class`, `add_mem_class`, `inv_mem_class`, `neg_mem_class` * `submonoid_class`, `add_submonoid_class` * `subgroup_class`, `add_subgroup_class` * `subsemiring_class`, `subring_class`, `subfield_class` The main purpose of this refactor is that we can replace the wide variety of lemmas like `{add_submonoid,add_subgroup,subring,subfield,submodule,subwhatever}.{prod,sum}_mem` with a single `prod_mem` lemma that is generic over all types `B` that extend `submonoid`: ```lean @[to_additive] lemma prod_mem {M : Type*} [comm_monoid M] [set_like B M] [submonoid_class B M] {ι : Type*} {t : finset ι} {f : ι → M} (h : ∀c ∈ t, f c ∈ S) : ∏ c in t, f c ∈ S ``` ## API changes * When you extend a `struct subobject`, make sure to create a corresponding `subobject_class` instance. ## Upcoming PRs This PR splits out the first part of #11545, namely defining the subobject classes. I am planning these follow-up PRs for further parts of #11545: - [ ] make the subobject consistently implicit in `{add,mul}_mem` #11758 - [ ] remove duplicate instances like `subgroup.to_group` (replaced by the `subgroup_class.to_subgroup` instances that are added by this PR) #11759 - [ ] further deduplication such as `finsupp_sum_mem` ## Subclassing `set_like` Contrary to mathlib's typical subclass pattern, we don't extend `set_like`, but take a `set_like` instance parameter: ```lean class one_mem_class (S : Type*) (M : out_param $ Type*) [has_one M] [set_like S M] := (one_mem : ∀ (s : S), (1 : M) ∈ s) ``` instead of: ```lean class one_mem_class (S : Type*) (M : out_param $ Type*) [has_one M] extends set_like S M := (one_mem : ∀ (s : S), (1 : M) ∈ s) ``` The main reason is that this avoids some big defeq checks when typechecking e.g. `x * y : s`, where `s : S` and `[comm_group G] [subgroup_class S G]`. Namely, the type `coe_sort s` could be given by `subgroup_class → @@submonoid_class _ _ (comm_group.to_group.to_monoid) → set_like → has_coe_to_sort` or by `subgroup_class → @@submonoid_class _ _ (comm_group.to_comm_monoid.to_monoid) → set_like → has_coe_to_sort`. When checking that `has_mul` on the first type is the same as `has_mul` on the second type, those two inheritance paths are unified many times over ([sometimes exponentially many](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Why.20is.20.60int.2Ecast_abs.60.20so.20slow.3F/near/266945077)). So it's important to keep the size of types small, and therefore we avoid `extends`-based inheritance. ## Defeq fixes Adding instances like `subgroup_class.to_group` means that there are now two (defeq) group instances for `subgroup`. This makes some code more fragile, until we can replace `subgroup.to_group` with its more generic form in a follow-up PR. Especially when taking subgroups of subgroups I needed to help the elaborator in a few places. These should be minimally invasive for other uses of the code. ## Timeout fixes Some of the leaf files started timing out, so I made a couple of fixes. Generally these can be classed as: * `squeeze_simps` * Give inheritance `subX_class S M` → `X s` (where `s : S`) a lower prority than `Y s` → `X s` so that `subY_class S M` → `Y s` → `X s` is preferred over `subY_class S M` → `subX_class S M` → `X s`. This addresses slow unifications when `x : s`, `s` is a submonoid of `t`, which is itself a subgroup of `G`: existing code expects to go `subgroup → group → monoid`, which got changed to `subgroup_class → submonoid_class → monoid`; when this kind of unification issue appears in your type this results in slow unification. By tweaking the priorities, we help the elaborator find our preferred instance, avoiding the big defeq checks. (The real fix should of course be to fix the unifier so it doesn't become exponential in these kinds of cases.) * Split a long proof with duplication into smaller parts. This was basically my last resort. I decided to bump the limit for the `fails_quickly` linter for `measure_theory.Lp_meas.complete_space`, which apparently just barely goes over this limit now. The time difference was about 10%-20% for that specific instance. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/algebra/module/submodule.lean +/- theorem submodule.neg_mem Modified src/analysis/inner_product_space/l2_space.lean Modified src/field_theory/galois.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/subfield.lean Modified src/group_theory/subgroup/basic.lean + theorem subgroup_class.coe_div + theorem subgroup_class.coe_inclusion + theorem subgroup_class.coe_inv + theorem subgroup_class.coe_pow + theorem subgroup_class.coe_subtype + theorem subgroup_class.coe_zpow + theorem subgroup_class.div_mem + theorem subgroup_class.div_mem_comm_iff + theorem subgroup_class.exists_inv_mem_iff_exists_mem + def subgroup_class.inclusion + theorem subgroup_class.inv_coe_set + theorem subgroup_class.inv_mem_iff + theorem subgroup_class.mul_mem_cancel_left + theorem subgroup_class.mul_mem_cancel_right + def subgroup_class.subtype + theorem subgroup_class.subtype_comp_inclusion + theorem subgroup_class.zpow_mem Modified src/group_theory/submonoid/basic.lean + theorem pow_mem Modified src/group_theory/submonoid/membership.lean +/- theorem submonoid.coe_list_prod +/- theorem submonoid.list_prod_mem + theorem submonoid_class.coe_finset_prod + theorem submonoid_class.coe_list_prod + theorem submonoid_class.coe_multiset_prod + theorem submonoid_class.list_prod_mem + theorem submonoid_class.multiset_prod_mem + theorem submonoid_class.prod_mem Modified src/group_theory/submonoid/operations.lean + theorem submonoid_class.coe_eq_one + theorem submonoid_class.coe_mul + theorem submonoid_class.coe_one + theorem submonoid_class.coe_pow + theorem submonoid_class.coe_subtype + theorem submonoid_class.mk_mul_mk + theorem submonoid_class.mk_pow + theorem submonoid_class.mul_def + theorem submonoid_class.one_def + def submonoid_class.subtype Modified src/group_theory/sylow.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/bochner.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/subring/basic.lean + theorem subring_class.coe_int_cast + theorem subring_class.coe_int_mem + theorem subring_class.coe_nat_cast + theorem subring_class.coe_subtype + def subring_class.subtype Modified src/ring_theory/subsemiring/basic.lean + theorem subsemiring_class.coe_nat_mem + theorem subsemiring_class.coe_pow + theorem subsemiring_class.coe_subtype + def subsemiring_class.subtype Modified src/ring_theory/trace.lean Modified src/tactic/lint/type_classes.lean 2022-04-05 11:06:01 220f71b refactor(data/polynomial/basic): overhaul all the misnamed `to_finsupp` lemmas (#13139) `zero_to_finsupp` was the statement `of_finsupp 0 = 0`, which doesn't match the name at all. This change: * Renames all those lemmas to `of_finsupp_` * Changes the direction of `add_to_finsupp` to be `of_finsupp_add`, so the statement is now `of_finsupp (a + b) = _` * Adds the missing `to_finsupp_` lemmas * Uses the new lemmas to golf the semiring and ring instances The renames include: * `zero_to_finsupp` → `of_finsupp_zero` * `one_to_finsupp` → `of_finsupp_one` * `add_to_finsupp` → `of_finsupp_add` (direction reversed) * `neg_to_finsupp` → `of_finsupp_neg` (direction reversed) * `mul_to_finsupp` → `of_finsupp_mul` (direction reversed) * `smul_to_finsupp` → `of_finsupp_smul` (direction reversed) * `sum_to_finsupp` → `of_finsupp_sum` (direction reversed) * `to_finsupp_iso_monomial` → `to_finsupp_monomial` * `to_finsupp_iso_symm_single` → `of_finsupp_single` * `eval₂_to_finsupp_eq_lift_nc` → `eval₂_of_finsupp` The new lemmas include: * `of_finsupp_sub` * `of_finsupp_pow` * `of_finsupp_erase` * `of_finsupp_algebra_map` * `of_finsupp_eq_zero` * `of_finsupp_eq_one` * `to_finsupp_zero` * `to_finsupp_one` * `to_finsupp_add` * `to_finsupp_neg` * `to_finsupp_sub` * `to_finsupp_mul` * `to_finsupp_pow` * `to_finsupp_erase` * `to_finsupp_algebra_map` * `to_finsupp_eq_zero` * `to_finsupp_eq_one` * `to_finsupp_C` Note that by marking things like `support` and `coeff` as `@[simp]`, they behave as if they were `support_of_finsupp` or `coeff_of_finsupp` lemma. By making `coeff` pattern match fewer arguments, we encourage it to apply more keenly. Neither lemma will fire unless our expression contains `polynomial.of_finsupp`. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.of_finsupp_algebra_map + theorem polynomial.to_finsupp_algebra_map Modified src/data/polynomial/basic.lean - theorem polynomial.add_to_finsupp +/- def polynomial.coeff - theorem polynomial.mul_to_finsupp - theorem polynomial.neg_to_finsupp + theorem polynomial.of_finsupp_add + theorem polynomial.of_finsupp_eq_one + theorem polynomial.of_finsupp_eq_zero + theorem polynomial.of_finsupp_erase + theorem polynomial.of_finsupp_inj + theorem polynomial.of_finsupp_mul + theorem polynomial.of_finsupp_neg + theorem polynomial.of_finsupp_one + theorem polynomial.of_finsupp_pow + theorem polynomial.of_finsupp_single + theorem polynomial.of_finsupp_smul + theorem polynomial.of_finsupp_sub + theorem polynomial.of_finsupp_sum + theorem polynomial.of_finsupp_zero - theorem polynomial.one_to_finsupp - theorem polynomial.smul_to_finsupp - theorem polynomial.sum_to_finsupp + theorem polynomial.support_of_finsupp + theorem polynomial.to_finsupp_C + theorem polynomial.to_finsupp_add + theorem polynomial.to_finsupp_eq_one + theorem polynomial.to_finsupp_eq_zero + theorem polynomial.to_finsupp_erase + theorem polynomial.to_finsupp_inj + theorem polynomial.to_finsupp_injective - theorem polynomial.to_finsupp_iso_monomial - theorem polynomial.to_finsupp_iso_symm_single + theorem polynomial.to_finsupp_monomial + theorem polynomial.to_finsupp_mul + theorem polynomial.to_finsupp_neg + theorem polynomial.to_finsupp_one + theorem polynomial.to_finsupp_pow + theorem polynomial.to_finsupp_smul + theorem polynomial.to_finsupp_sub + theorem polynomial.to_finsupp_sum + theorem polynomial.to_finsupp_zero - theorem polynomial.zero_to_finsupp Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_of_finsupp - theorem polynomial.eval₂_to_finsupp_eq_lift_nc Modified src/data/polynomial/monomial.lean Modified src/data/polynomial/reverse.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/polynomial/basic.lean 2022-04-05 11:06:00 c108ed4 feat(topology/algebra): add several lemmas (#13135) * add `closure_smul`, `interior_smul`, and `closure_smul₀`; * add `is_open.mul_closure` and `is_open.closure_mul`. ESTIMATED CHANGES Modified src/topology/algebra/const_mul_action.lean + theorem closure_smul + theorem closure_smul₀ +/- def homeomorph.smul + theorem interior_smul Modified src/topology/algebra/group.lean + theorem is_open.closure_mul + theorem is_open.mul_closure 2022-04-05 11:05:59 bb4099b feat(analysis/normed/normed_field): add abs_le_floor_nnreal_iff (#13130) From LTE. ESTIMATED CHANGES Modified src/analysis/normed/normed_field.lean + theorem int.abs_le_floor_nnreal_iff 2022-04-05 11:05:57 c7626b7 feat(analysis/calculus/fderiv_analytic): an analytic function is smooth (#13127) This basic fact was missing from the library, but all the nontrivial maths were already there, we are just adding the necessary glue. Also, replace `ac_refl` by `ring` in several proofs (to go down from 30s to 4s in one proof, for instance). I wonder if we should ban `ac_refl` from mathlib currently. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + def analytic_on + theorem continuous_linear_map.comp_analytic_on + theorem continuous_linear_map.comp_has_fpower_series_on_ball + theorem formal_multilinear_series.radius_le_radius_continuous_linear_map_comp + theorem has_fpower_series_on_ball.analytic_on + theorem has_fpower_series_on_ball.comp_sub + theorem has_fpower_series_on_ball.congr Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/cont_diff.lean + theorem iterated_fderiv_within_of_is_open Modified src/analysis/calculus/fderiv_analytic.lean + theorem analytic_on.cont_diff_on + theorem analytic_on.deriv + theorem analytic_on.differentiable_on + theorem analytic_on.fderiv + theorem analytic_on.iterated_deriv + theorem analytic_on.iterated_fderiv - theorem has_fpower_series_at.fderiv + theorem has_fpower_series_at.fderiv_eq + theorem has_fpower_series_on_ball.fderiv + theorem has_fpower_series_on_ball.fderiv_eq + theorem has_fpower_series_on_ball.has_fderiv_at Modified src/analysis/calculus/formal_multilinear_series.lean + def continuous_linear_map.comp_formal_multilinear_series + theorem continuous_linear_map.comp_formal_multilinear_series_apply' + theorem continuous_linear_map.comp_formal_multilinear_series_apply 2022-04-05 11:05:56 cbbaef5 chore(algebra/field_power): generalisation linter (#13107) @alexjbest, this one is slightly more interesting, as the generalisation linter detected that two lemmas were stated incorrectly! ESTIMATED CHANGES Modified src/algebra/field_power.lean - theorem zpow_eq_zero_iff +/- theorem zpow_two_nonneg +/- theorem zpow_two_pos_of_ne_zero Modified src/algebra/group_with_zero/power.lean + theorem zpow_eq_zero_iff 2022-04-05 11:05:55 225d1ce refactor(combinatorics/hall/finite): small simplifications and readability improvements (#13091) ESTIMATED CHANGES Modified src/combinatorics/hall/finite.lean +/- theorem hall_marriage_theorem.hall_hard_inductive - theorem hall_marriage_theorem.hall_hard_inductive_step - theorem hall_marriage_theorem.hall_hard_inductive_zero 2022-04-05 09:11:51 9ff42fd feat(topology/fiber_bundle): lemmas about `e.symm.trans e'` (#13168) ESTIMATED CHANGES Modified src/topology/fiber_bundle.lean + theorem topological_fiber_bundle.pretrivialization.symm_trans_source_eq + theorem topological_fiber_bundle.pretrivialization.symm_trans_symm + theorem topological_fiber_bundle.pretrivialization.symm_trans_target_eq + theorem topological_fiber_bundle.trivialization.symm_trans_source_eq + theorem topological_fiber_bundle.trivialization.symm_trans_target_eq 2022-04-05 09:11:50 01a424b feat(analysis): continuous_linear_map.prod_mapL (#13165) From the sphere eversion project, Co-authored by Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous.prod_mapL + theorem continuous.prod_map_equivL + def continuous_linear_map.prod_mapL + theorem continuous_linear_map.prod_mapL_apply + theorem continuous_on.prod_mapL + theorem continuous_on.prod_map_equivL 2022-04-05 09:11:49 0e26022 feat(group_theory/complement): Existence of transversals (#13016) This PR constructs transversals containing a specified element. This will be useful for Schreier's lemma (which requires a transversal containing the identity element). ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.exists_left_transversal + theorem subgroup.exists_right_transversal 2022-04-05 09:11:48 63feb1b feat(group_theory/index): Add `relindex_le_of_le_left` and `relindex_le_of_le_right` (#13015) This PR adds `relindex_le_of_le_left` and `relindex_le_of_le_right`, which are companion lemmas to `relindex_eq_zero_of_le_left` and `relindex_eq_zero_of_le_right`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.relindex_le_of_le_left + theorem subgroup.relindex_le_of_le_right 2022-04-05 09:11:47 ea1917b feat(algebra/group/to_additive + algebra/regular/basic): add to_additive for `is_regular` (#12930) This PR add the `to_additive` attribute to most lemmas in the file `algebra.regular.basic`. I also added `to_additive` support for this: `to_additive` converts * `is_regular` to `is_add_regular`; * `is_left_regular` to `is_add_left_regular`; * `is_right_regular` to `is_add_right_regular`. ~~Currently, `to_additive` converts `regular` to `add_regular`. This means that, for instance, `is_left_regular` becomes `is_left_add_regular`.~~ ~~I have a slight preference for `is_add_left_regular/is_add_right_regular`, but I am not able to achieve this automatically.~~ ~~EDIT: actually, the command~~ ``` git ls-files | xargs grep -A1 "to\_additive" | grep -B1 regular ``` ~~reveals more name changed by `to_additive` that require more thought.~~ ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/algebra/regular/basic.lean + structure is_add_regular +/- theorem mul_is_left_regular_iff +/- theorem mul_is_right_regular_iff Modified src/group_theory/group_action/opposite.lean 2022-04-05 08:08:57 21c48e1 doc(topology/algebra/*): explanation of relation between `uniform_group` and `topological_group` (#13151) Adding some comments on how to use `uniform_group` and `topological_group`. ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/uniform_group.lean 2022-04-05 05:20:37 429c6e3 chore(topology/algebra/infinite_sum): weaken from equiv to surjective (#13164) ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean - theorem equiv.summable_iff_of_has_sum_iff - theorem equiv.tsum_eq_tsum_of_has_sum_iff_has_sum + theorem function.surjective.summable_iff_of_has_sum_iff + theorem function.surjective.tsum_eq_tsum_of_has_sum_iff_has_sum 2022-04-05 05:20:36 4c83474 chore(model_theory/basic): Fix namespace on notation for first-order maps (#13145) Removes projection notation from the definition of notation for first-order maps ESTIMATED CHANGES Modified src/model_theory/basic.lean Modified src/model_theory/elementary_maps.lean 2022-04-05 03:53:18 41cd2f8 chore(data/fin/tuple/basic): lemmas about `cons` (#13027) ESTIMATED CHANGES Modified src/data/fin/tuple/basic.lean + theorem fin.cons_eq_cons + def fin.cons_induction + theorem fin.cons_induction_cons + theorem fin.cons_injective2 + theorem fin.cons_left_injective + theorem fin.cons_right_injective 2022-04-04 23:36:07 4eee8bc chore(order/complete_lattice): Generalize `⨆`/`⨅` lemmas to dependent families (#13154) The "bounded supremum" and "bounded infimum" are both instances of nested `⨆`/`⨅`. But they only apply when the inner one runs over a predicate `p : ι → Prop`, and the function couldn't depend on `p`. This generalizes to `κ : ι → Sort*` and allows dependence on `κ i`. The lemmas are renamed from `bsupr`/`binfi` to `supr₂`/`infi₂` to show that they are more general. Some lemmas were missing between `⨆` and `⨅` or between `⨆`/`⨅` and nested `⨆`/`⨅`, so I'm adding them as well. Renames ESTIMATED CHANGES Modified src/analysis/box_integral/partition/filter.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/seminorm.lean Modified src/data/dfinsupp/basic.lean Modified src/data/real/ennreal.lean Modified src/data/set/lattice.lean +/- theorem set.Inter_congr +/- theorem set.Inter_subset +/- theorem set.Union_congr +/- theorem set.subset_Union Modified src/data/set/pairwise.lean Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/clifford_algebra/grading.lean Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/span.lean + theorem submodule.span_Union₂ Modified src/linear_algebra/std_basis.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/integral/lebesgue.lean - theorem measure_theory.le_infi2_lintegral + theorem measure_theory.le_infi₂_lintegral - theorem measure_theory.supr2_lintegral_le + theorem measure_theory.supr₂_lintegral_le Modified src/measure_theory/measure/content.lean +/- theorem measure_theory.content.inner_content_mono' Modified src/measure_theory/measure/giry_monad.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/null_measurable.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean +/- theorem stieltjes_function.length_mono Modified src/order/closure.lean - theorem closure_operator.closure_bsupr_closure +/- theorem closure_operator.closure_supr_closure + theorem closure_operator.closure_supr₂_closure +/- theorem lower_adjoint.closure_Union_closure + theorem lower_adjoint.closure_Union₂_closure - theorem lower_adjoint.closure_bUnion_closure - theorem lower_adjoint.closure_bsupr_closure +/- theorem lower_adjoint.closure_supr_closure + theorem lower_adjoint.closure_supr₂_closure Modified src/order/compactly_generated.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean +/- theorem Inf_Prop_eq +/- theorem Inf_eq_infi' +/- theorem Inf_eq_infi +/- theorem Inf_image' +/- theorem Inf_image +/- theorem Inf_lt_iff +/- theorem Inf_range + theorem Inf_sUnion +/- theorem Inf_sup_le_infi_sup +/- theorem Sup_Prop_eq +/- theorem Sup_eq_supr' +/- theorem Sup_eq_supr +/- theorem Sup_image' +/- theorem Sup_image +/- theorem Sup_range +/- theorem Sup_sUnion + theorem antitone.le_map_Inf + theorem antitone.le_map_infi + theorem antitone.le_map_infi₂ + theorem antitone.map_Sup_le + theorem antitone.map_supr_le + theorem antitone.map_supr₂_le - theorem binfi_le - theorem binfi_le_binfi - theorem binfi_le_of_le + theorem binfi_mono - theorem bsupr_le - theorem bsupr_le_bsupr' - theorem bsupr_le_bsupr - theorem bsupr_le_supr + theorem bsupr_mono +/- theorem function.surjective.infi_comp + theorem function.surjective.infi_congr +/- theorem function.surjective.supr_comp +/- theorem infi_Prop_eq +/- theorem infi_and +/- theorem infi_comm +/- theorem infi_congr +/- theorem infi_congr_Prop + theorem infi_const_mono +/- theorem infi_eq_top +/- theorem infi_exists +/- theorem infi_le' +/- theorem infi_le - theorem infi_le_binfi - theorem infi_le_infi2 - theorem infi_le_infi - theorem infi_le_infi_const + theorem infi_le_infi₂ +/- theorem infi_le_of_le +/- theorem infi_lt_iff + theorem infi_mono' + theorem infi_mono +/- theorem infi_range' +/- theorem infi_range +/- theorem infi_top +/- theorem infi_true + theorem infi₂_eq_top + theorem infi₂_le + theorem infi₂_le_of_le + theorem infi₂_mono' + theorem infi₂_mono +/- theorem is_glb.infi_eq +/- theorem is_glb_Inf +/- theorem is_glb_infi +/- theorem is_lub.supr_eq +/- theorem is_lub_Sup +/- theorem is_lub_supr - theorem le_binfi - theorem le_bsupr - theorem le_bsupr_of_le +/- theorem le_infi +/- theorem le_infi_iff + theorem le_infi₂ + theorem le_infi₂_iff +/- theorem le_supr' +/- theorem le_supr +/- theorem le_supr_of_le + theorem le_supr₂ + theorem le_supr₂_of_le +/- theorem lt_Sup_iff + theorem lt_infi_iff +/- theorem lt_supr_iff - theorem monotone.le_map_supr2 + theorem monotone.le_map_supr₂ - theorem monotone.map_infi2_le + theorem monotone.map_infi₂_le +/- theorem sup_Inf_le_infi_sup +/- theorem supr_Prop_eq +/- theorem supr_and +/- theorem supr_bot +/- theorem supr_comm +/- theorem supr_congr +/- theorem supr_congr_Prop + theorem supr_const_mono +/- theorem supr_eq_bot +/- theorem supr_exists +/- theorem supr_inf_le_Sup_inf +/- theorem supr_inf_le_inf_Sup +/- theorem supr_le +/- theorem supr_le_iff - theorem supr_le_supr2 - theorem supr_le_supr - theorem supr_le_supr_const +/- theorem supr_lt_iff + theorem supr_mono' + theorem supr_mono +/- theorem supr_range' +/- theorem supr_range +/- theorem supr_true + theorem supr₂_eq_bot + theorem supr₂_le + theorem supr₂_le_iff + theorem supr₂_le_supr + theorem supr₂_mono' + theorem supr₂_mono Modified src/order/filter/basic.lean Modified src/order/filter/lift.lean +/- theorem filter.lift_mono' Modified src/order/filter/pi.lean +/- theorem filter.pi_mono Modified src/order/hom/order.lean Modified src/order/liminf_limsup.lean Modified src/order/partial_sups.lean Modified src/order/succ_pred/basic.lean Modified src/order/sup_indep.lean Modified src/probability/stopping.lean Modified src/topology/algebra/order/basic.lean Modified src/topology/algebra/order/monotone_convergence.lean Modified src/topology/bases.lean Modified src/topology/compact_open.lean Modified src/topology/fiber_bundle.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/ereal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/metric_space/hausdorff_dimension.lean Modified src/topology/metric_space/hausdorff_distance.lean +/- theorem emetric.inf_edist_le_edist_of_mem Modified src/topology/order.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/compact_separated.lean 2022-04-04 20:06:50 bae79d0 chore(number_theory/cyclotomic/discriminant): golf `repr_pow_is_integral` a little (#13167) Using nice mathlib tactics instead of doing boilerplate tasks by hand to reduce the verbosity. ESTIMATED CHANGES Modified src/ring_theory/adjoin/power_basis.lean 2022-04-04 20:06:48 a925d1d chore(topology/algebra/module/basic): add continuous_linear_map.copy (#13166) As suggested by the fun_like docs ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean 2022-04-04 18:23:21 05e2fc0 chore(order/*): generalisation linter (#13105) ESTIMATED CHANGES Modified src/order/atoms.lean +/- theorem set.is_simple_order_Ici_iff_is_coatom +/- theorem set.is_simple_order_Iic_iff_is_atom Modified src/order/conditionally_complete_lattice.lean Modified src/order/lattice_intervals.lean +/- theorem set.Ici.coe_bot +/- theorem set.Iic.coe_top Modified src/order/modular_lattice.lean Modified src/order/order_iso_nat.lean 2022-04-04 16:21:07 fe21f5d feat(group_theory/torsion): define torsion subgroups and show they're torsion (#12769) Also tidy up some linter errors and docstring for the module. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/group_theory/torsion.lean + theorem comm_monoid.torsion.is_torsion + def comm_monoid.torsion + theorem monoid.is_torsion.torsion_eq_top + def monoid.is_torsion.torsion_mul_equiv + def torsion.of_torsion + def torsion + theorem torsion_eq_torsion_submonoid 2022-04-04 16:21:06 2108284 refactor(order/succ_order/basic): Use `is_min`/`is_max` (#12597) Reformulate the `succ a ≤ a` and `a ≤ pred a` conditions to use `is_max` and `is_min`. This simplifies the proofs. Change namespaces from `succ_order` and `pred_order` to `order`. Lemma renames ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean Modified src/data/int/succ_pred.lean + theorem int.pred_eq_pred +/- theorem int.pred_iterate + theorem int.succ_eq_succ +/- theorem int.succ_iterate Modified src/data/nat/succ_pred.lean + theorem nat.pred_eq_pred +/- theorem nat.pred_iterate + theorem nat.succ_eq_succ +/- theorem nat.succ_iterate Modified src/order/bounded_order.lean + theorem not_is_bot_iff_ne_bot + theorem not_is_max_bot + theorem not_is_max_iff_ne_top + theorem not_is_min_iff_ne_bot + theorem not_is_min_top + theorem not_is_top_iff_ne_top + theorem with_bot.not_coe_le_bot +/- theorem with_top.not_top_le_coe Modified src/order/max.lean + theorem not_is_max_of_lt + theorem not_is_min_of_lt Modified src/order/succ_pred/basic.lean +/- theorem covby.succ_eq - theorem covby_iff_pred_eq - theorem covby_iff_succ_eq + theorem order.Ici_succ + theorem order.Ici_succ_of_not_is_max + theorem order.Iic_pred + theorem order.Iic_pred_of_not_is_min + theorem order.Iio_succ + theorem order.Iio_succ_of_not_is_max + theorem order.Ioi_pred + theorem order.Ioi_pred_of_not_is_min + theorem order.bot_lt_succ + theorem order.covby_succ + theorem order.covby_succ_of_not_is_max + theorem order.le_le_succ_iff + theorem order.le_of_lt_succ + theorem order.le_of_pred_lt + theorem order.le_pred_iff + theorem order.le_pred_iff_eq_bot + theorem order.le_pred_iff_is_min + theorem order.le_pred_iff_lt_or_eq + theorem order.le_pred_iff_of_not_is_min + theorem order.le_pred_of_lt + theorem order.le_succ + theorem order.le_succ_iff_lt_or_eq + theorem order.lt_succ + theorem order.lt_succ_iff + theorem order.lt_succ_iff_lt_or_eq + theorem order.lt_succ_iff_ne_top + theorem order.lt_succ_iff_not_is_max + theorem order.lt_succ_iff_of_not_is_max + theorem order.max_of_succ_le + theorem order.min_of_le_pred + def order.pred + theorem order.pred_bot + theorem order.pred_covby + theorem order.pred_covby_of_not_is_min + theorem order.pred_eq_iff_covby + theorem order.pred_eq_iff_is_min + theorem order.pred_eq_pred_iff + theorem order.pred_eq_supr + theorem order.pred_injective + theorem order.pred_le + theorem order.pred_le_le_iff + theorem order.pred_le_pred + theorem order.pred_le_pred_iff + theorem order.pred_lt + theorem order.pred_lt_iff + theorem order.pred_lt_iff_lt_or_eq + theorem order.pred_lt_iff_ne_bot + theorem order.pred_lt_iff_not_is_min + theorem order.pred_lt_iff_of_not_is_min + theorem order.pred_lt_pred_iff + theorem order.pred_lt_top + theorem order.pred_mono + theorem order.pred_ne_pred_iff + theorem order.pred_ne_top + theorem order.pred_strict_mono + theorem order.pred_succ + theorem order.pred_succ_of_not_is_max + def order.succ + theorem order.succ_eq_iff_covby + theorem order.succ_eq_iff_is_max + theorem order.succ_eq_infi + theorem order.succ_eq_succ_iff + theorem order.succ_injective + theorem order.succ_le_iff + theorem order.succ_le_iff_eq_top + theorem order.succ_le_iff_is_max + theorem order.succ_le_iff_of_not_is_max + theorem order.succ_le_of_lt + theorem order.succ_le_succ + theorem order.succ_le_succ_iff + theorem order.succ_lt_succ_iff + theorem order.succ_mono + theorem order.succ_ne_bot + theorem order.succ_ne_succ_iff + theorem order.succ_pred + theorem order.succ_pred_of_not_is_min + theorem order.succ_strict_mono + theorem order.succ_top - theorem pred_order.Ici_eq_Ioi_pred' - theorem pred_order.Ici_eq_Ioi_pred - theorem pred_order.Iio_eq_Iic_pred' - theorem pred_order.Iio_eq_Iic_pred - theorem pred_order.le_pred_iff - theorem pred_order.le_pred_iff_eq_bot - theorem pred_order.le_pred_iff_lt_or_eq - theorem pred_order.le_pred_iff_of_not_is_min +/- def pred_order.of_le_pred_iff +/- def pred_order.of_le_pred_iff_of_pred_le_pred - theorem pred_order.pred_bot - theorem pred_order.pred_covby - theorem pred_order.pred_covby_of_nonempty_Iio - theorem pred_order.pred_eq_pred_iff - theorem pred_order.pred_eq_supr - theorem pred_order.pred_injective - theorem pred_order.pred_le_le_iff - theorem pred_order.pred_le_pred - theorem pred_order.pred_le_pred_iff - theorem pred_order.pred_lt - theorem pred_order.pred_lt_iff - theorem pred_order.pred_lt_iff_lt_or_eq - theorem pred_order.pred_lt_iff_ne_bot - theorem pred_order.pred_lt_iff_of_not_is_min - theorem pred_order.pred_lt_of_not_is_min - theorem pred_order.pred_lt_of_not_minimal - theorem pred_order.pred_lt_pred_iff - theorem pred_order.pred_lt_top - theorem pred_order.pred_mono - theorem pred_order.pred_ne_pred_iff - theorem pred_order.pred_ne_top - theorem pred_order.pred_strict_mono - theorem pred_succ - theorem pred_succ_of_nonempty_Ioi - theorem succ_order.Iic_eq_Iio_succ' - theorem succ_order.Iic_eq_Iio_succ - theorem succ_order.Ioi_eq_Ici_succ' - theorem succ_order.Ioi_eq_Ici_succ - theorem succ_order.bot_lt_succ - theorem succ_order.covby_succ - theorem succ_order.covby_succ_of_nonempty_Ioi - theorem succ_order.le_le_succ_iff - theorem succ_order.le_succ_iff_lt_or_eq - theorem succ_order.lt_succ - theorem succ_order.lt_succ_iff - theorem succ_order.lt_succ_iff_lt_or_eq - theorem succ_order.lt_succ_iff_ne_top - theorem succ_order.lt_succ_iff_of_not_is_max - theorem succ_order.lt_succ_of_not_is_max - theorem succ_order.lt_succ_of_not_maximal +/- def succ_order.of_succ_le_iff +/- def succ_order.of_succ_le_iff_of_le_lt_succ - theorem succ_order.succ_eq_infi - theorem succ_order.succ_eq_succ_iff - theorem succ_order.succ_injective - theorem succ_order.succ_le_iff - theorem succ_order.succ_le_iff_eq_top - theorem succ_order.succ_le_iff_of_not_is_max - theorem succ_order.succ_le_succ - theorem succ_order.succ_le_succ_iff - theorem succ_order.succ_lt_succ_iff - theorem succ_order.succ_mono - theorem succ_order.succ_ne_bot - theorem succ_order.succ_ne_succ_iff - theorem succ_order.succ_strict_mono - theorem succ_order.succ_top - theorem succ_pred - theorem succ_pred_of_nonempty_Iio Modified src/order/succ_pred/relation.lean Modified src/probability/stopping.lean Modified src/topology/connected.lean Modified src/topology/instances/discrete.lean 2022-04-04 14:28:18 f55d352 feat(order/filter/n_ary): Binary and ternary maps of filters (#13062) Define `filter.map₂` and `filter.map₃`, the binary and ternary maps of filters. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.image_subset_image2_left + theorem set.image_subset_image2_right Added src/order/filter/n_ary.lean + theorem filter.image2_mem_map₂ + theorem filter.le_map₂_iff + theorem filter.map_map₂ + theorem filter.map_map₂_antidistrib + theorem filter.map_map₂_antidistrib_left + theorem filter.map_map₂_antidistrib_right + theorem filter.map_map₂_distrib + theorem filter.map_map₂_distrib_left + theorem filter.map_map₂_distrib_right + theorem filter.map_map₂_right_anticomm + theorem filter.map_map₂_right_comm + def filter.map₂ + theorem filter.map₂_assoc + theorem filter.map₂_bot_left + theorem filter.map₂_bot_right + theorem filter.map₂_comm + theorem filter.map₂_eq_bot_iff + theorem filter.map₂_inf_subset_left + theorem filter.map₂_inf_subset_right + theorem filter.map₂_left + theorem filter.map₂_left_comm + theorem filter.map₂_map_left + theorem filter.map₂_map_left_anticomm + theorem filter.map₂_map_left_comm + theorem filter.map₂_map_right + theorem filter.map₂_map₂_left + theorem filter.map₂_map₂_right + theorem filter.map₂_mono + theorem filter.map₂_mono_left + theorem filter.map₂_mono_right + theorem filter.map₂_ne_bot_iff + theorem filter.map₂_pure + theorem filter.map₂_pure_left + theorem filter.map₂_pure_right + theorem filter.map₂_right + theorem filter.map₂_right_comm + theorem filter.map₂_sup_left + theorem filter.map₂_sup_right + theorem filter.map₂_swap + def filter.map₃ + theorem filter.mem_map₂_iff + theorem filter.ne_bot.map₂ 2022-04-04 09:32:39 b189be7 feat(algebra/big_operators): add `commute.*_sum_{left,right}` lemmas (#13035) This moves the existing `prod_commute` lemmas into the `commute` namespace for discoverabiliy, and adds the swapped variants. This also fixes an issue where lemmas about `add_commute` were misnamed using `commute`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem commute.sum_left + theorem commute.sum_right Modified src/algebra/big_operators/multiset.lean + theorem commute.multiset_sum_left + theorem commute.multiset_sum_right Modified src/data/finset/noncomm_prod.lean Modified src/data/list/big_operators.lean + theorem commute.list_prod_left + theorem commute.list_prod_right + theorem commute.list_sum_left + theorem commute.list_sum_right - theorem list.prod_commute 2022-04-04 08:56:24 19448a9 refactor(group_theory/schur_zassenhaus): Some golfing (#13017) This PR uses `mem_left_transversals.to_equiv` to golf the start of `schur_zassenhaus.lean`. ESTIMATED CHANGES Modified src/group_theory/schur_zassenhaus.lean 2022-04-04 08:23:22 0cb9407 chore(measure_theory/function/locally_integrable): fix typo (#13160) ESTIMATED CHANGES Modified src/measure_theory/function/locally_integrable.lean - theorem measure_theory.locally_integrable.ae_measurable + theorem measure_theory.locally_integrable.ae_strongly_measurable 2022-04-04 06:48:14 6dde651 feat(algebra/quaternion): Cardinality of quaternion algebras (#12891) ESTIMATED CHANGES Modified src/algebra/quaternion.lean + theorem cardinal.mk_quaternion + theorem cardinal.mk_quaternion_algebra + theorem cardinal.mk_quaternion_algebra_of_infinite + theorem cardinal.mk_quaternion_of_infinite + theorem cardinal.mk_univ_quaternion + theorem cardinal.mk_univ_quaternion_algebra + theorem cardinal.mk_univ_quaternion_algebra_of_infinite + theorem cardinal.mk_univ_quaternion_of_infinite + def quaternion.equiv_prod + def quaternion_algebra.equiv_prod 2022-04-04 06:15:27 8cb151f feat(number_theory/cyclotomic/discriminant): add discr_zeta_eq_discr_zeta_sub_one (#12710) We add `discr_zeta_eq_discr_zeta_sub_one`: the discriminant of the power basis given by a primitive root of unity `ζ` is the same as the discriminant of the power basis given by `ζ - 1`. from flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/discriminant.lean + theorem is_primitive_root.discr_zeta_eq_discr_zeta_sub_one Modified src/number_theory/cyclotomic/gal.lean Modified src/ring_theory/adjoin/power_basis.lean + theorem power_basis.repr_gen_pow_is_integral + theorem power_basis.repr_mul_is_integral + theorem power_basis.repr_pow_is_integral + theorem power_basis.to_matrix_is_integral 2022-04-03 17:52:03 61e18ae fix(data/polynomial/basic): op_ring_equiv docstring (#13132) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean 2022-04-03 16:42:11 36e1cdf feat(topology/uniform_space/basic): constructing a `uniform_space.core` from a filter basis for the uniformity (#13065) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + def uniform_space.core.mk_of_basis 2022-04-03 11:32:25 1212818 feat(category_theory/abelian): transferring "abelian-ness" across a functor (#13059) If `C` is an additive category, `D` is an abelian category, we have `F : C ⥤ D` `G : D ⥤ C` (both preserving zero morphisms), `G` is left exact (that is, preserves finite limits), and further we have `adj : G ⊣ F` and `i : F ⋙ G ≅ 𝟭 C`, then `C` is also abelian. See https://stacks.math.columbia.edu/tag/03A3 ESTIMATED CHANGES Added src/category_theory/abelian/transfer.lean + def category_theory.abelian_of_adjunction.coimage_iso_image + def category_theory.abelian_of_adjunction.coimage_iso_image_aux + theorem category_theory.abelian_of_adjunction.coimage_iso_image_hom + def category_theory.abelian_of_adjunction.cokernel_iso + theorem category_theory.abelian_of_adjunction.has_cokernels + theorem category_theory.abelian_of_adjunction.has_kernels + def category_theory.abelian_of_adjunction Modified src/category_theory/limits/preserves/shapes/kernels.lean 2022-04-03 09:48:57 6e26cff feat(analysis/special_functions): add the Gamma function (#12917) ESTIMATED CHANGES Added src/analysis/special_functions/gamma.lean + def complex.Gamma_integral + theorem complex.Gamma_integral_convergent + theorem complex.Gamma_integral_of_real + theorem complex.Gamma_integral_one + theorem integral_exp_neg_Ioi + def real.Gamma_integral + theorem real.Gamma_integral_convergent + theorem real.Gamma_integral_one + theorem real.Gamma_integrand_is_O 2022-04-03 06:44:02 6e5ca7d chore(*): Bump to Lean 3.42.1 (#13146) ESTIMATED CHANGES Modified leanpkg.toml 2022-04-03 06:44:01 d6731a4 docs(data/polynomial/basic): Remove commutative from doc-module (#13144) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean 2022-04-03 04:50:50 4f14d4d chore(topology/vector_bundle): split long proof (#13142) The construction of the direct sum of two vector bundles is on the verge of timing out, and an upcoming refactor will push it over the edge. Split it pre-emptively. ESTIMATED CHANGES Modified src/topology/vector_bundle.lean + theorem topological_vector_bundle.trivialization.prod.continuous_inv_fun + theorem topological_vector_bundle.trivialization.prod.continuous_to_fun + theorem topological_vector_bundle.trivialization.prod.left_inv + theorem topological_vector_bundle.trivialization.prod.right_inv 2022-04-03 04:50:49 410e3d0 feat(logic/small, model_theory/*): Smallness of vectors, lists, terms, and substructures (#13123) Provides instances of `small` on vectors, lists, terms, and `substructure.closure`. ESTIMATED CHANGES Modified src/logic/small.lean Modified src/model_theory/substructures.lean Modified src/model_theory/syntax.lean 2022-04-03 04:50:48 2d22b5d chore(algebra/*): generalisation linter (#13109) ESTIMATED CHANGES Modified src/algebra/group/conj.lean Modified src/algebra/group_power/order.lean Modified src/algebra/indicator_function.lean +/- theorem monoid_hom.map_mul_indicator Modified src/algebra/invertible.lean +/- theorem nonzero_of_invertible Modified src/algebra/module/basic.lean +/- theorem add_monoid_hom.map_int_module_smul +/- theorem add_monoid_hom.map_nat_module_smul Modified src/algebra/support.lean +/- theorem function.mul_support_mul 2022-04-03 04:50:47 d33ea7b chore(ring_theory/polynomial/pochhammer): make semiring implicit in a lemma that I just moved (#13077) Moving lemma `pochhammer_succ_eval` to reduce typeclass assumptions (#13024), the `semiring` became accidentally explicit. Since one of the explicit arguments of the lemma is a term in the semiring, I changed the `semiring` to being implicit. The neighbouring lemmas do not involve terms in their respective semiring, which is why the semiring is explicit throughout the section. ESTIMATED CHANGES Modified src/ring_theory/polynomial/pochhammer.lean +/- theorem pochhammer_succ_eval 2022-04-03 04:50:46 955e95a feat(logic/function/basic): add some more API for `injective2` (#13074) Note that the new `.left` and `.right` lemmas are weaker than the original ones, but the original lemmas were pretty much useless anyway, as `hf.left h` was the same as `(hf h).left`. ESTIMATED CHANGES Modified src/logic/function/basic.lean +/- theorem function.injective2.eq_iff + theorem function.injective2.left' + theorem function.injective2.right' 2022-04-03 03:07:24 ef7298d chore(data/nat/gcd): move nat.coprime.mul_add_mul_ne_mul (#13022) I'm not sure if it will be useful elsewhere, but this seems like a better place for it anyway. ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime.mul_add_mul_ne_mul Modified src/number_theory/frobenius_number.lean - theorem nat.coprime.mul_add_mul_ne_mul 2022-04-03 02:04:00 e1eb0bd feat(algebra/algebra/unitization): add star structure for the unitization of a non-unital algebra (#13120) The unitization of an algebra has a natural star structure when the underlying scalar ring and non-unital algebra have suitably interacting star structures. ESTIMATED CHANGES Modified src/algebra/algebra/unitization.lean + theorem unitization.coe_star + theorem unitization.fst_star + theorem unitization.inl_star + theorem unitization.snd_star 2022-04-03 00:36:47 e41208d feat(category_theory/monoidal): define monoidal structures on cartesian products of monoidal categories, (lax) monoidal functors and monoidal natural transformations (#13033) This PR contains (fairly straightforward) definitions / proofs of the following facts: - Cartesian product of monoidal categories is a monoidal category. - Cartesian product of (lax) monoidal functors is a (lax) monoidal functor. - Cartesian product of monoidal natural transformations is a monoidal natural transformation. These are prerequisites to defining a monoidal category structure on the category of monoids in a braided monoidal category (with the approach that I've chosen). In particular, the first bullet point above is a prerequisite to endowing the tensor product functor, viewed as a functor from `C × C` to `C`, where `C` is a braided monoidal category, with a strength that turns it into a monoidal functor (stacked PR). This fits as follows into the general strategy for defining a monoidal category structure on the category of monoids in a braided monoidal category `C`, at least conceptually: first, define a monoidal category structure on the category of lax monoidal functors into `C`, and then transport this structure to the category `Mon_ C` of monoids along the equivalence between `Mon_ C` and the category `lax_monoid_functor (discrete punit) C`. All, not necessarily lax monoidal functors into `C` form a monoidal category with "pointwise" tensor product. The tensor product of two lax monoidal functors equals the composition of their cartesian product, which is lax monoidal, with the tensor product on`C`, which is monoidal if `C` is braided. This gives a way to define a tensor product of two lax monoidal functors. The details still need to be fleshed out. ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.prod_monoidal_left_unitor_hom_fst + theorem category_theory.monoidal_category.prod_monoidal_left_unitor_hom_snd + theorem category_theory.monoidal_category.prod_monoidal_left_unitor_inv_fst + theorem category_theory.monoidal_category.prod_monoidal_left_unitor_inv_snd + theorem category_theory.monoidal_category.prod_monoidal_right_unitor_hom_fst + theorem category_theory.monoidal_category.prod_monoidal_right_unitor_hom_snd + theorem category_theory.monoidal_category.prod_monoidal_right_unitor_inv_fst + theorem category_theory.monoidal_category.prod_monoidal_right_unitor_inv_snd Modified src/category_theory/monoidal/functor.lean + def category_theory.lax_monoidal_functor.prod' + theorem category_theory.lax_monoidal_functor.prod'_to_functor + theorem category_theory.lax_monoidal_functor.prod'_ε + theorem category_theory.lax_monoidal_functor.prod'_μ + def category_theory.lax_monoidal_functor.prod + def category_theory.monoidal_functor.diag + def category_theory.monoidal_functor.prod' + theorem category_theory.monoidal_functor.prod'_to_lax_monoidal_functor + def category_theory.monoidal_functor.prod Modified src/category_theory/monoidal/natural_transformation.lean + def category_theory.monoidal_nat_trans.prod Modified src/category_theory/products/basic.lean + def category_theory.functor.diag + theorem category_theory.functor.diag_map + theorem category_theory.functor.diag_obj + theorem category_theory.is_iso_prod_iff + def category_theory.iso.prod 2022-04-02 23:29:08 bb5e598 feat(set_theory/cardinal_ordinal): Add `simp` lemmas for `aleph` (#13056) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.aleph_add_aleph + theorem cardinal.aleph_mul_aleph + theorem cardinal.aleph_mul_omega + theorem cardinal.max_aleph_eq + theorem cardinal.omega_mul_aleph 2022-04-02 22:23:30 d4b40c3 feat(measure_theory/measure/haar_lebesgue): measure of an affine subspace is zero (#13137) * Additive Haar measure of an affine subspace of a finite dimensional real vector space is zero. * Additive Haar measure of the image of a set `s` under `homothety x r` is equal to `|r ^ d| * μ s`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.coe_eq_bot_iff + theorem affine_subspace.coe_eq_univ_iff + theorem affine_subspace.eq_bot_or_nonempty + theorem affine_subspace.nonempty_iff_ne_bot Modified src/measure_theory/measure/haar_lebesgue.lean + theorem measure_theory.measure.add_haar_affine_subspace + theorem measure_theory.measure.add_haar_image_homothety 2022-04-02 22:23:29 7617942 feat(order/filter/basic): add `filter.eventually_{eq,le}.prod_map` (#13103) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_eq.prod_map + theorem filter.eventually_le.prod_map 2022-04-02 19:43:29 a29bd58 feat(algebra/regular/basic): add lemma commute.is_regular_iff (#13104) This lemma shows that an element that commutes with every element is regular if and only if it is left regular. ESTIMATED CHANGES Modified src/algebra/regular/basic.lean + theorem commute.is_regular_iff + theorem is_left_regular.right_of_commute 2022-04-02 16:29:33 8e476fa chore(topology/vector_bundle): use continuous-linear rather than linear in core construction (#13053) The `vector_bundle_core` construction builds a vector bundle from a cocycle, the data of which are an open cover and a choice of transition function between any two elements of the cover. Currently, for base `B` and model fibre `F`, the transition function has type `ι → ι → B → (F →ₗ[R] F)`. This PR changes it to type `ι → ι → B → (F →L[R] F)`. This is no loss of generality since there already were other conditions which forced the transition function to be continuous-linear on each fibre. Of course, it is a potential loss of convenience since the proof obligation for continuity now occurs upfront. The change is needed because in the vector bundle refactor to come, the further condition will be imposed that each transition function `B → (F →L[R] F)` is continuous; stating this requires a topology on `F →L[R] F`. ESTIMATED CHANGES Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/tangent_bundle.lean Modified src/topology/vector_bundle.lean 2022-04-02 15:55:20 cf6f27e refactor(topology/{fiber_bundle, vector_bundle}): make trivializations data rather than an existential (#13052) Previously, the construction `topological_vector_bundle` was a mixin requiring the _existence_ of a suitable trivialization at each point. Change this to a class with data: a choice of trivialization at each point. This has no effect on the mathematics, but it is necessary for the forthcoming refactor in which a further condition is imposed on the mutual compatibility of the trivializations. Furthermore, attach to `topological_vector_bundle` and to two other constructions `topological_fiber_prebundle`, `topological_vector_prebundle` a further piece of data: an atlas of "good" trivializations. This is not really mathematically necessary, since you could always take the atlas of "good" trivializations to be simply the set of canonical trivializations at each point in the manifold. But sometimes one naturally has this larger "good" class and it's convenient to be able to access it. The `charted_space` definition in the manifolds library does something similar. ESTIMATED CHANGES Modified src/topology/fiber_bundle.lean + theorem topological_fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas - theorem topological_fiber_prebundle.continuous_symm_pretrivialization_at + theorem topological_fiber_prebundle.is_open_source - theorem topological_fiber_prebundle.is_open_source_pretrivialization_at + theorem topological_fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter - theorem topological_fiber_prebundle.is_open_target_pretrivialization_at_inter - def topological_fiber_prebundle.trivialization_at + def topological_fiber_prebundle.trivialization_of_mem_pretrivialization_atlas Modified src/topology/vector_bundle.lean - theorem topological_vector_bundle.mem_base_set_trivialization_at - def topological_vector_bundle.trivialization_at + theorem topological_vector_bundle_core.coe_coord_change - theorem topological_vector_bundle_core.coe_cord_change + def topological_vector_prebundle.to_topological_vector_bundle - theorem topological_vector_prebundle.to_topological_vector_bundle - def topological_vector_prebundle.trivialization_at + def topological_vector_prebundle.trivialization_of_mem_pretrivialization_atlas 2022-04-02 13:47:28 3164b1a feat(probability/independence): two lemmas on indep_fun (#13126) These two lemmas show that `indep_fun` is preserved under composition by measurable maps and under a.e. equality. ESTIMATED CHANGES Modified src/probability/independence.lean + theorem probability_theory.indep_fun.ae_eq + theorem probability_theory.indep_fun.comp 2022-04-02 13:47:26 1d5b99b feat(group_theory/free_product): add (m)range_eq_supr (#12956) and lemmas leading to it as inspired by the corresponding lemmas from `free_groups.lean`. As suggested by @ocfnash, polish the free group lemmas a bit as well. ESTIMATED CHANGES Modified src/group_theory/free_group.lean - theorem free_group.closure_subset + theorem free_group.lift.range_le - theorem free_group.lift.range_subset Modified src/group_theory/free_product.lean + theorem free_product.lift_mrange_le + theorem free_product.lift_range_le + theorem free_product.mrange_eq_supr + theorem free_product.range_eq_supr 2022-04-02 11:56:22 7df5907 chore(algebra/order/ring): generalisation linter (#13096) ESTIMATED CHANGES Modified src/algebra/order/ring.lean +/- theorem add_one_le_two_mul +/- theorem with_bot.bot_lt_mul +/- theorem with_top.mul_lt_top 2022-04-02 01:59:06 607f4f8 feat(model_theory/semantics): A simp lemma for `Theory.model` (#13117) Defines `Theory.model_iff` to make it easier to show when a structure models a theory. ESTIMATED CHANGES Modified src/model_theory/semantics.lean + theorem first_order.language.Theory.model_iff + theorem first_order.language.Theory.model_singleton_iff 2022-04-01 22:20:38 6dad5f8 feat(topology/bornology/basic): alternate way of defining a bornology by its bounded set (#13064) More precisely, this defines an alternative to https://leanprover-community.github.io/mathlib_docs/topology/bornology/basic.html#bornology.of_bounded (which is renamed `bornology.of_bounded'`) which expresses the covering condition as containing the singletons, and factors the old version trough it to have a simpler proof. Note : I chose to add a prime to the old constructor because it's now defined in terms of the new one, so defeq works better this way (i.e lemma about the new constructor can be used whenever the old one is used). ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean Modified src/order/filter/cofinite.lean + theorem filter.le_cofinite_iff_compl_singleton_mem Modified src/topology/bornology/basic.lean + theorem bornology.is_bounded_singleton + def bornology.of_bounded' 2022-04-01 22:20:36 6cf5dc5 feat(topology/support): add lemma `locally_finite.exists_finset_nhd_mul_support_subset` (#13006) When using a partition of unity to glue together a family of functions, this lemma allows us to pass to a finite family in the neighbourhood of any point. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.subset_coe_filter_of_subset_forall Modified src/topology/partition_of_unity.lean + theorem partition_of_unity.exists_finset_nhd_support_subset +/- def partition_of_unity.is_subordinate Modified src/topology/support.lean + theorem locally_finite.exists_finset_nhd_mul_support_subset 2022-04-01 20:35:06 912f195 feat(dynamics/periodic_pts): Lemma about periodic point from periodic point of iterate (#12940) ESTIMATED CHANGES Modified src/dynamics/periodic_pts.lean + theorem function.is_periodic_pt_of_mem_periodic_pts_of_is_periodic_pt_iterate 2022-04-01 19:21:53 196a48c feat(set_theory/ordinal_arithmetic): Coefficients of Cantor Normal Form (#12681) We prove all coefficients of the base-b expansion of an ordinal are less than `b`. We also tweak the parameters of various other theorems. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- def ordinal.CNF +/- theorem ordinal.CNF_fst_le +/- theorem ordinal.CNF_fst_le_log + theorem ordinal.CNF_lt_snd +/- theorem ordinal.CNF_pairwise +/- theorem ordinal.CNF_snd_lt +/- theorem ordinal.CNF_sorted +/- theorem ordinal.one_CNF 2022-04-01 17:02:37 a3c753c feat(topology/[subset_properties, separation]): bornologies for filter.co[closed_]compact (#12927) ESTIMATED CHANGES Modified src/topology/separation.lean + theorem bornology.relatively_compact.is_bounded_iff + def bornology.relatively_compact + theorem bornology.relatively_compact_eq_in_compact + theorem filter.coclosed_compact_le_cofinite Modified src/topology/subset_properties.lean + theorem bornology.in_compact.is_bounded_iff + def bornology.in_compact + theorem is_compact.compl_mem_coclosed_compact_of_is_closed 2022-04-01 16:30:59 e8ef744 docs(probability/martingale): missing word (#13113) ESTIMATED CHANGES Modified src/probability/martingale.lean 2022-04-01 16:30:58 b365371 feat(model_theory/syntax,semantics): Sentences for binary relation properties (#13087) Defines sentences for basic properties of binary relations Proves that realizing these sentences is equivalent to properties in the binary relation library ESTIMATED CHANGES Modified src/model_theory/semantics.lean + theorem first_order.language.relations.realize_antisymmetric + theorem first_order.language.relations.realize_irreflexive + theorem first_order.language.relations.realize_reflexive + theorem first_order.language.relations.realize_symmetric + theorem first_order.language.relations.realize_total + theorem first_order.language.relations.realize_transitive Modified src/model_theory/syntax.lean 2022-04-01 12:39:38 342a4b0 feat(data/polynomial/coeff): add `char_zero` instance on polynomials (#13075) Besides adding the instance, I also added a warning on the difference between `char_zero R` and `char_p R 0` for general semirings. An example showing the difference is in #13080. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean Modified src/algebra/char_zero.lean Modified src/data/polynomial/coeff.lean 2022-04-01 12:39:37 89275df feat(topology/algebra/uniform_group): add characterization of total boundedness (#12808) The main result is `totally_bounded_iff_subset_finite_Union_nhds_one`. We prove it for noncommutative groups, which involves taking opposites. Add `uniform_group` instance for the opposite group. Adds several helper lemmas for * (co-)map of opposites applied to neighborhood filter * filter basis of uniformity in a uniform group in terms of neighborhood basis at identity Simplified proofs for `totally_bounded_of_forall_symm` and `totally_bounded.closure`. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean + theorem mul_opposite.op_div + theorem mul_opposite.unop_div Modified src/topology/algebra/constructions.lean + theorem mul_opposite.comap_op_nhds + theorem mul_opposite.comap_unop_nhds + theorem mul_opposite.map_op_nhds + theorem mul_opposite.map_unop_nhds Modified src/topology/algebra/uniform_group.lean + theorem filter.has_basis.uniformity_of_nhds_one + theorem filter.has_basis.uniformity_of_nhds_one_inv_mul + theorem filter.has_basis.uniformity_of_nhds_one_inv_mul_swapped + theorem filter.has_basis.uniformity_of_nhds_one_swapped + theorem totally_bounded_iff_subset_finite_Union_nhds_one + theorem uniformity_eq_comap_inv_mul_nhds_one + theorem uniformity_eq_comap_inv_mul_nhds_one_swapped + theorem uniformity_eq_comap_nhds_one_swapped Modified src/topology/uniform_space/basic.lean + theorem comap_swap_uniformity + theorem comap_uniformity_mul_opposite Modified src/topology/uniform_space/cauchy.lean + theorem filter.has_basis.totally_bounded_iff - theorem is_compact.totally_bounded + theorem totally_bounded.exists_subset 2022-04-01 10:46:51 c61f7e8 chore(model_theory/elementary_maps): Fix Tarski-Vaught Test (#13102) Fixes the assumption of the Tarski-Vaught test. ESTIMATED CHANGES Modified src/model_theory/elementary_maps.lean 2022-04-01 10:46:50 e6a0a26 chore(algebra/order/*): generalisation linter (#13098) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean +/- theorem with_bot.add_bot +/- theorem with_bot.add_eq_bot +/- theorem with_bot.bot_add +/- theorem with_bot.coe_add +/- theorem with_bot.coe_bit0 +/- theorem with_bot.coe_bit1 +/- theorem with_zero.coe_le_coe +/- theorem with_zero.coe_lt_coe Modified src/algebra/order/monoid_lemmas.lean +/- theorem mul_left_cancel'' +/- theorem mul_right_cancel'' 2022-04-01 10:46:48 8a51798 chore(order/*): generalisation linter (#13097) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean Modified src/order/bounded_order.lean +/- theorem with_top.coe_le_iff +/- theorem with_top.lt_iff_exists_coe Modified src/order/galois_connection.lean +/- theorem galois_coinsertion.strict_mono_l 2022-04-01 10:46:47 0e95cad chore(algebra/group_power/basic): generalisation linter (#13095) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem eq_or_eq_neg_of_sq_eq_sq +/- theorem of_add_zsmul +/- theorem of_mul_zpow +/- theorem units.eq_or_eq_neg_of_sq_eq_sq 2022-04-01 10:46:46 6652766 chore(algebra/ring/basic): generalisation linter (#13094) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean +/- theorem boole_mul +/- theorem commute.bit1_left +/- theorem commute.bit1_right +/- theorem distrib_three_right +/- theorem is_left_regular_of_non_zero_divisor +/- theorem is_right_regular_of_non_zero_divisor +/- theorem mul_boole 2022-04-01 10:46:45 e326fe6 feat(model_theory/basic,language_map): More about `language.mk₂` (#13090) Provides instances on `language.mk₂` Defines `first_order.language.Lhom.mk₂`, a constructor for maps from languages built with `language.mk₂`. ESTIMATED CHANGES Modified src/model_theory/basic.lean Modified src/model_theory/language_map.lean + theorem first_order.language.Lhom.mk₂_funext 2022-04-01 08:58:07 873f268 chore(group_theory/group_action/*): generalisation linter (#13100) ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean Modified src/group_theory/group_action/defs.lean +/- theorem mul_smul_one Modified src/group_theory/group_action/opposite.lean Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/sub_mul_action.lean 2022-04-01 07:06:11 3a0c034 chore(algebra/*): generalisation linter (#13099) ESTIMATED CHANGES Modified src/algebra/group/prod.lean +/- theorem prod.fst_div +/- theorem prod.mk_div_mk +/- theorem prod.snd_div +/- theorem prod.swap_div Modified src/algebra/hom/group.lean +/- theorem monoid_hom.mul_comp +/- theorem monoid_with_zero_hom.to_monoid_hom_injective +/- theorem monoid_with_zero_hom.to_zero_hom_injective +/- theorem mul_hom.mul_comp Modified src/algebra/hom/group_instances.lean +/- def monoid_hom.compl₂ +/- theorem monoid_hom.compl₂_apply 2022-04-01 03:39:04 9728396 chore(scripts): update nolints.txt (#13101) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-31 23:56:26 2b92d08 feat(model_theory/elementary_maps): The Tarski-Vaught test (#12919) Proves the Tarski-Vaught test for elementary embeddings and substructures. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.cast_add_zero Modified src/model_theory/elementary_maps.lean + theorem first_order.language.embedding.is_elementary_of_exists + def first_order.language.embedding.to_elementary_embedding + theorem first_order.language.substructure.is_elementary_of_exists + def first_order.language.substructure.to_elementary_substructure Modified src/model_theory/semantics.lean + theorem first_order.language.formula.realize_relabel_sum_inr 2022-03-31 17:21:48 de50389 split(order/chain): Split off `order.zorn` (#13060) Split `order.zorn` into two files, one about chains, the other one about Zorn's lemma. ESTIMATED CHANGES Added src/order/chain.lean + theorem chain_closure.is_chain + theorem chain_closure.succ_fixpoint + theorem chain_closure.succ_fixpoint_iff + theorem chain_closure.total + inductive chain_closure + theorem chain_closure_empty + theorem chain_closure_max_chain + theorem is_chain.directed_on + theorem is_chain.image + theorem is_chain.insert + theorem is_chain.mono + theorem is_chain.succ + theorem is_chain.super_chain_succ_chain + theorem is_chain.symm + theorem is_chain.total + def is_chain + theorem is_chain_empty + theorem is_chain_of_trichotomous + theorem is_chain_univ_iff + theorem is_max_chain.is_chain + theorem is_max_chain.not_super_chain + def is_max_chain + def max_chain + theorem max_chain_spec + theorem set.subsingleton.is_chain + theorem subset_succ_chain + def succ_chain + theorem succ_chain_spec + def super_chain Modified src/order/zorn.lean - theorem chain_closure.is_chain - theorem chain_closure.succ_fixpoint - theorem chain_closure.succ_fixpoint_iff - inductive chain_closure - theorem chain_closure_empty - theorem chain_closure_max_chain - theorem chain_closure_total - theorem is_chain.directed - theorem is_chain.directed_on - theorem is_chain.image - theorem is_chain.insert - theorem is_chain.mono - theorem is_chain.succ - theorem is_chain.super_chain_succ_chain - theorem is_chain.symm - theorem is_chain.total - def is_chain - theorem is_chain_empty - theorem is_chain_of_trichotomous - theorem is_chain_univ_iff - theorem is_max_chain.is_chain - theorem is_max_chain.not_super_chain - def is_max_chain - def max_chain - theorem max_chain_spec - theorem set.subsingleton.is_chain - def succ_chain - theorem succ_increasing - theorem succ_spec - def super_chain 2022-03-31 16:09:24 13e08bf feat(model_theory/*): Constructors for low-arity languages and structures (#12960) Defines `first_order.language.mk₂` to make it easier to define a language with at-most-binary symbols. Defines `first_order.language.Structure.mk₂` to make it easier to define a structure in a language defined with `first_order.language₂`. Defines `first_order.language.functions.apply₁` and `first_order.language.functions.apply₂` to make it easier to construct terms using low-arity function symbols. Defines `first_order.language.relations.formula₁` and `first_order.language.relations.formula₂` to make it easier to construct formulas using low-arity relation symbols. ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.Structure.fun_map_apply₀ + theorem first_order.language.Structure.fun_map_apply₁ + theorem first_order.language.Structure.fun_map_apply₂ + theorem first_order.language.Structure.rel_map_apply₁ + theorem first_order.language.Structure.rel_map_apply₂ + def first_order.language.fun_map₂ + def first_order.language.rel_map₂ + def first_order.sequence₂ Modified src/model_theory/semantics.lean + theorem first_order.language.bounded_formula.realize_rel₁ + theorem first_order.language.bounded_formula.realize_rel₂ + theorem first_order.language.formula.realize_rel₁ + theorem first_order.language.formula.realize_rel₂ + theorem first_order.language.term.realize_functions_apply₁ + theorem first_order.language.term.realize_functions_apply₂ Modified src/model_theory/syntax.lean + def first_order.language.functions.apply₁ + def first_order.language.functions.apply₂ + def first_order.language.relations.bounded_formula₁ + def first_order.language.relations.bounded_formula₂ + def first_order.language.relations.formula₁ + def first_order.language.relations.formula₂ 2022-03-31 16:09:23 f1ae620 feat(model_theory/bundled, satisfiability): Bundled models (#12945) Defines `Theory.Model`, a type of nonempty bundled models of a particular theory. Refactors satisfiability in terms of bundled models. ESTIMATED CHANGES Modified src/model_theory/basic.lean + def first_order.language.trivial_unit_structure Modified src/model_theory/bundled.lean + theorem first_order.language.Theory.Model.coe_of + def first_order.language.Theory.Model.of + structure first_order.language.Theory.Model + theorem first_order.language.Theory.coe_of + def first_order.language.Theory.model.bundled Modified src/model_theory/satisfiability.lean - def first_order.language.Theory.is_satisfiable.some_model +/- def first_order.language.Theory.is_satisfiable - theorem first_order.language.Theory.semantically_equivalent.some_model_realize_bd_iff - theorem first_order.language.Theory.semantically_equivalent.some_model_realize_iff Modified src/model_theory/semantics.lean Modified src/model_theory/ultraproducts.lean 2022-03-31 15:26:34 2861d4e feat(combinatorics/simple_graph/connectivity): walk constructor patterns with explicit vertices (#13078) This saves a couple underscores, letting you write `walk.cons' _ v _ h p` instead of `@walk.cons _ _ _ v _ h p` when you want that middle vertex in a pattern. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + def simple_graph.walk.cons' + def simple_graph.walk.nil' 2022-03-31 14:15:57 25ef4f0 feat(topology/algebra/matrix): more continuity lemmas for matrices (#13009) This should cover all the definitions in `data/matrix/basic`, and also picks out a few notable definitions (`det`, `trace`, `adjugate`, `cramer`, `inv`) from other files. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/topology/algebra/matrix.lean + theorem continuous.matrix_adjugate + theorem continuous.matrix_col + theorem continuous.matrix_cramer + theorem continuous.matrix_det + theorem continuous.matrix_diag + theorem continuous.matrix_dot_product + theorem continuous.matrix_elem + theorem continuous.matrix_map + theorem continuous.matrix_minor + theorem continuous.matrix_mul + theorem continuous.matrix_mul_vec + theorem continuous.matrix_reindex + theorem continuous.matrix_row + theorem continuous.matrix_trace + theorem continuous.matrix_transpose + theorem continuous.matrix_update_column + theorem continuous.matrix_update_row + theorem continuous.matrix_vec_mul + theorem continuous.matrix_vec_mul_vec + theorem continuous_at_matrix_inv - theorem continuous_det + theorem continuous_matrix.diagonal + theorem continuous_matrix Modified src/topology/continuous_on.lean + theorem continuous.if_const 2022-03-31 13:42:09 0f6eec6 feat(ring_theory/polynomial/pochhammer): generalize a proof from `comm_semiring` to `semiring` (#13024) This PR is similar to #13018. Lemma `pochhammer_succ_eval` was already proven with a commutativity assumption. I generalized the proof to `semiring` by introducing a helper lemma. I still feel that this is harder than I would like it to be: `pochhammer` "is" a polynomial in `ℕ[X]` and all these commutativity assumptions are satisfied, since `ℕ[X]` is commutative. ESTIMATED CHANGES Modified src/ring_theory/polynomial/pochhammer.lean 2022-03-31 13:00:33 1b42223 feat(analysis/locally_convex): the topology of weak duals is locally convex (#12623) ESTIMATED CHANGES Added src/analysis/locally_convex/weak_dual.lean + theorem linear_map.coe_to_seminorm + theorem linear_map.has_basis_weak_bilin + def linear_map.to_seminorm + theorem linear_map.to_seminorm_apply + theorem linear_map.to_seminorm_ball_zero + theorem linear_map.to_seminorm_comp + def linear_map.to_seminorm_family + theorem linear_map.to_seminorm_family_apply Modified src/topology/algebra/module/weak_dual.lean 2022-03-31 12:28:09 6405a6a feat(analysis/locally_convex): closed balanced sets are a basis of the topology (#12786) We prove some topological properties of the balanced core. ESTIMATED CHANGES Modified src/analysis/locally_convex/balanced_core_hull.lean + theorem balanced_core_emptyset + theorem balanced_core_is_closed + theorem balanced_core_mem_nhds_zero + theorem nhds_basis_closed_balanced + theorem subset_balanced_core 2022-03-31 10:35:37 7833dbe lint(algebra/*): fix some lint errors (#13058) * add some docstrings to additive versions; * make `with_zero.ordered_add_comm_monoid` reducible. ESTIMATED CHANGES Modified src/algebra/group/semiconj.lean Modified src/algebra/hom/equiv.lean +/- theorem mul_equiv.apply_symm_apply +/- theorem mul_equiv.symm_apply_apply Modified src/algebra/order/monoid.lean Modified src/topology/metric_space/emetric_space.lean 2022-03-31 08:43:56 ba9ead0 feat(order/sup_indep): lemmas about `pairwise` and `set.pairwise` (#12590) The `disjoint` lemmas can now be stated in terms of these two `pairwise` definitions. This wasn't previously possible as these definitions were not yet imported. This also adds the `iff` versions of these lemmas, and a docstring tying them all together. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean Modified src/order/complete_boolean_algebra.lean + theorem Sup_disjoint_iff + theorem disjoint_Sup_iff Modified src/order/sup_indep.lean - theorem complete_lattice.independent.disjoint + theorem complete_lattice.independent.pairwise_disjoint + theorem complete_lattice.independent_iff_pairwise_disjoint - theorem complete_lattice.set_independent.disjoint + theorem complete_lattice.set_independent.pairwise_disjoint + theorem complete_lattice.set_independent_iff_pairwise_disjoint 2022-03-31 06:51:20 81c5d17 chore(algebra/order/monoid_lemmas): remove exactly same lemmas (#13068) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean - theorem left.mul_lt_one_of_lt_of_lt_one +/- theorem mul_lt_of_lt_of_lt_one +/- theorem mul_lt_of_lt_one_of_lt - theorem right.mul_lt_one_of_lt_of_lt_one 2022-03-31 06:51:19 7a37490 feat(ring_theory/polynomial/pochhammer): add a binomial like recursion for pochhammer (#13018) This PR proves the identity `pochhammer R n + n * (pochhammer R (n - 1)).comp (X + 1) = (pochhammer R n).comp (X + 1)` analogous to the additive recursion for binomial coefficients. For the proof, first we prove the result for a `comm_semiring` as `pochhammer_add_pochhammer_aux`. Next, we apply this identity in the general case. If someone has any idea of how to make the maths statement: it suffices to show this identity for pochhammer symbols in the commutative case, I would be *very* happy to know! ESTIMATED CHANGES Modified src/ring_theory/polynomial/pochhammer.lean + theorem pochhammer_succ_comp_X_add_one 2022-03-31 06:51:18 290f440 feat(order/category/Semilattice): The categories of semilattices (#12890) Define `SemilatticeSup` and `SemilatticeInf`, the categories of finitary supremum lattices and finitary infimum lattices. ESTIMATED CHANGES Modified src/order/category/BoundedLattice.lean + theorem BoundedLattice.coe_forget_to_BoundedOrder + theorem BoundedLattice.coe_forget_to_Lattice + theorem BoundedLattice.coe_forget_to_SemilatticeInf + theorem BoundedLattice.coe_forget_to_SemilatticeSup + theorem BoundedLattice.forget_SemilatticeInf_PartialOrder_eq_forget_BoundedOrder_PartialOrder + theorem BoundedLattice.forget_SemilatticeSup_PartialOrder_eq_forget_BoundedOrder_PartialOrder + theorem BoundedLattice_dual_comp_forget_to_SemilatticeInf + theorem BoundedLattice_dual_comp_forget_to_SemilatticeSup Added src/order/category/Semilattice.lean + theorem SemilatticeInf.coe_forget_to_PartialOrder + theorem SemilatticeInf.coe_of + def SemilatticeInf.dual + def SemilatticeInf.iso.mk + def SemilatticeInf.of + structure SemilatticeInf + theorem SemilatticeInf_dual_comp_forget_to_PartialOrder + theorem SemilatticeSup.coe_forget_to_PartialOrder + theorem SemilatticeSup.coe_of + def SemilatticeSup.dual + def SemilatticeSup.iso.mk + def SemilatticeSup.of + structure SemilatticeSup + theorem SemilatticeSup_dual_comp_forget_to_PartialOrder + def SemilatticeSup_equiv_SemilatticeInf 2022-03-31 06:51:17 760f1b2 refactor(*): rename `topological_ring` to `topological_semiring` and introduce a new `topological_ring` extending `has_continuous_neg` (#12864) Following the discussion in this [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/continuous.20maps.20vanishing.20at.20infinity/near/275553306), this renames `topological_ring` to `topological_semiring` throughout the library and weakens the typeclass assumptions from `semiring` to `non_unital_non_assoc_semiring`. Moreover, it introduces a new `topological_ring` class which takes a type class parameter of `non_unital_non_assoc_ring` and extends `topological_semiring` and `has_continuous_neg`. In the case of *unital* (semi)rings (even non-associative), the type class `topological_semiring` is sufficient to capture the notion of `topological_ring` because negation is just multiplication by `-1`. Therefore, those working with unital (semi)rings can proceed with the small change of using `topological_semiring` instead of `topological_ring`. The primary reason for the distinction is to weaken the type class assumptions to allow for non-unital rings, in which case `has_continuous_neg` must be explicitly assumed. - [x] depends on: #12748 ESTIMATED CHANGES Modified src/analysis/normed/normed_field.lean Modified src/geometry/manifold/algebra/structures.lean - theorem topological_ring_of_smooth + theorem topological_semiring_of_smooth Modified src/topology/algebra/algebra.lean +/- theorem continuous_algebra_map +/- theorem continuous_algebra_map_iff_smul +/- theorem has_continuous_smul_of_algebra_map Modified src/topology/algebra/field.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/algebra/ring.lean + theorem topological_semiring.has_continuous_neg_of_mul + theorem topological_semiring.to_topological_ring Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/locally_constant.lean Modified src/topology/continuous_function/polynomial.lean Modified src/topology/instances/nnreal.lean 2022-03-31 06:19:33 c2339ca feat(algebraic_topology): map_alternating_face_map_complex (#13028) In this PR, we obtain a compatibility `map_alternating_face_map_complex` of the construction of the alternating face map complex functor with respect to additive functors between preadditive categories. ESTIMATED CHANGES Modified src/algebraic_topology/alternating_face_map_complex.lean + theorem algebraic_topology.map_alternating_face_map_complex 2022-03-31 02:41:53 8a21316 feat(combinatorics/simple_graph/regularity/bound): Numerical bounds for Szemerédi's regularity lemma (#12962) Define the constants appearing in Szemerédi's regularity lemma and prove a bunch of numerical facts about them. ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem le_div_self Added src/combinatorics/simple_graph/regularity/bound.lean + theorem szemeredi_regularity.a_add_one_le_four_pow_parts_card + theorem szemeredi_regularity.bound_pos + theorem szemeredi_regularity.card_aux₁ + theorem szemeredi_regularity.card_aux₂ + theorem szemeredi_regularity.coe_m_add_one_pos + theorem szemeredi_regularity.eps_pos + theorem szemeredi_regularity.eps_pow_five_pos + theorem szemeredi_regularity.four_pow_pos + theorem szemeredi_regularity.hundred_div_ε_pow_five_le_m + theorem szemeredi_regularity.hundred_le_m + theorem szemeredi_regularity.hundred_lt_pow_initial_bound_mul + theorem szemeredi_regularity.initial_bound_le_bound + theorem szemeredi_regularity.initial_bound_pos + theorem szemeredi_regularity.le_bound + theorem szemeredi_regularity.le_initial_bound + theorem szemeredi_regularity.le_step_bound + theorem szemeredi_regularity.m_coe_pos + theorem szemeredi_regularity.m_pos + theorem szemeredi_regularity.one_le_m_coe + theorem szemeredi_regularity.pow_mul_m_le_card_part + theorem szemeredi_regularity.seven_le_initial_bound + def szemeredi_regularity.step_bound + theorem szemeredi_regularity.step_bound_mono + theorem szemeredi_regularity.step_bound_pos_iff Modified src/order/partition/equipartition.lean + theorem finpartition.is_equipartition.card_parts_eq_average 2022-03-31 02:10:17 299984b feat(combinatorics/simple_graph/uniform): Graph uniformity and uniform partitions (#12957) Define uniformity of a pair of vertices in a graph and uniformity of a partition of vertices of a graph. ESTIMATED CHANGES Added src/combinatorics/simple_graph/regularity/uniform.lean + theorem finpartition.bot_is_uniform + def finpartition.is_uniform + theorem finpartition.is_uniform_of_empty + theorem finpartition.is_uniform_one + theorem finpartition.mk_mem_non_uniforms_iff + theorem finpartition.non_uniforms_bot + theorem finpartition.nonempty_of_not_uniform + theorem simple_graph.is_uniform.mono + theorem simple_graph.is_uniform.symm + def simple_graph.is_uniform + theorem simple_graph.is_uniform_comm + theorem simple_graph.is_uniform_one + theorem simple_graph.is_uniform_singleton + theorem simple_graph.not_is_uniform_zero 2022-03-31 00:12:51 47b1d78 feat(linear_algebra/matrix): any matrix power can be expressed as sums of powers `0 ≤ k < fintype.card n` (#12983) I'm not familiar enough with the polynomial API to know if we can neatly state a similar result for negative powers. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean Modified src/linear_algebra/charpoly/basic.lean + theorem linear_map.aeval_eq_aeval_mod_charpoly + theorem linear_map.pow_eq_aeval_mod_charpoly Modified src/linear_algebra/matrix/charpoly/basic.lean Modified src/linear_algebra/matrix/charpoly/coeff.lean + theorem matrix.aeval_eq_aeval_mod_charpoly + theorem matrix.pow_eq_aeval_mod_charpoly 2022-03-30 17:30:25 fc35cb3 chore(data/finset/card): add `card_disj_union` (#13061) ESTIMATED CHANGES Modified src/data/finset/card.lean + theorem finset.card_disj_union 2022-03-30 16:05:51 7f450cb feat(topology/sets/order): Clopen upper sets (#12670) Define `clopen_upper_set`, the type of clopen upper sets of an ordered topological space. ESTIMATED CHANGES Added src/topology/sets/order.lean + theorem clopen_upper_set.clopen + theorem clopen_upper_set.coe_bot + theorem clopen_upper_set.coe_inf + theorem clopen_upper_set.coe_mk + theorem clopen_upper_set.coe_sup + theorem clopen_upper_set.coe_top + def clopen_upper_set.to_upper_set + theorem clopen_upper_set.upper + structure clopen_upper_set 2022-03-30 13:52:41 518e81a feat(topology): add lemmas about `frontier` (#13054) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem frontier_closure_subset + theorem frontier_interior_subset Modified src/topology/connected.lean + theorem frontier_eq_empty_iff + theorem nonempty_frontier_iff Modified src/topology/subset_properties.lean + theorem is_clopen_iff_frontier_eq_empty 2022-03-30 13:52:39 de62b06 chore(data/set/pointwise): Golf using `set.image2` API (#13051) Add some more `set.image2` API and demonstrate use by golfing all relevant `data.set.pointwise` declarations. Other additions ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Modified src/algebra/opposites.lean Modified src/data/set/basic.lean +/- theorem set.image2_assoc + theorem set.image2_image_left_anticomm + theorem set.image2_image_left_comm +/- theorem set.image2_left_comm +/- theorem set.image2_right_comm + theorem set.image_comm + theorem set.image_image2_antidistrib + theorem set.image_image2_antidistrib_left + theorem set.image_image2_antidistrib_right +/- theorem set.image_image2_distrib +/- theorem set.image_image2_distrib_left +/- theorem set.image_image2_distrib_right + theorem set.image_image2_right_anticomm + theorem set.image_image2_right_comm Modified src/data/set/pointwise.lean +/- theorem set.Inter_inv +/- theorem set.Union_inv +/- theorem set.compl_inv +/- theorem set.finite.inv +/- theorem set.finite.mul + theorem set.finite.smul +/- theorem set.finite.smul_set +/- theorem set.image_inv +/- theorem set.image_mul + theorem set.image_op_inv +/- theorem set.image_op_mul +/- theorem set.inter_inv +/- theorem set.inv_empty +/- theorem set.inv_mem_inv +/- theorem set.inv_preimage +/- theorem set.inv_singleton +/- theorem set.inv_subset +/- theorem set.inv_subset_inv +/- theorem set.inv_univ +/- theorem set.mem_inv +/- theorem set.nonempty.inv +/- theorem set.nonempty.mul + theorem set.nonempty.smul + theorem set.nonempty.smul_set + theorem set.nonempty.vsub +/- theorem set.nonempty_inv +/- theorem set.union_inv 2022-03-30 13:52:38 25e8730 feat(analysis/special_functions/pow): abs value of real to complex power (#13048) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem complex.abs_cpow_eq_rpow_re_of_nonneg + theorem complex.abs_cpow_eq_rpow_re_of_pos 2022-03-30 13:52:37 33a323c feat(data/fin): lemmas about ordering and cons (#13044) This marks a few extra facts `simp`, since the analogous facts are `simp` for `nat`. ESTIMATED CHANGES Modified archive/imo/imo1994_q1.lean Modified src/data/fin/basic.lean + theorem fin.not_lt_zero +/- theorem fin.zero_le Modified src/data/fin/tuple/basic.lean + theorem fin.cons_le_cons + theorem fin.pi_lex_lt_cons_cons 2022-03-30 13:52:33 644a848 fix(tactic/generalize_proofs): instantiate mvars (#13025) Reported on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/generalize_proofs.20failed/near/276965359). ESTIMATED CHANGES Modified src/tactic/generalize_proofs.lean Modified test/generalize_proofs.lean 2022-03-30 13:52:32 af3911c feat(data/polynomial/erase_lead): add two erase_lead lemmas (#12910) The two lemmas show that removing the leading term from the sum of two polynomials of unequal `nat_degree` is the same as removing the leading term of the one of larger `nat_degree` and adding. The second lemma could be proved with `by rw [add_comm, erase_lead_add_of_nat_degree_lt_left pq, add_comm]`, but I preferred copying the same strategy as the previous one, to avoid interdependencies. ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean + theorem polynomial.erase_lead_add_of_nat_degree_lt_left + theorem polynomial.erase_lead_add_of_nat_degree_lt_right 2022-03-30 13:52:30 e31f031 feat(analysis/locally_convex): polar sets for dualities (#12849) Define the absolute polar for a duality and prove easy properties such as * `linear_map.polar_eq_Inter`: The polar as an intersection. * `linear_map.subset_bipolar`: The polar is a subset of the bipolar. * `linear_map.polar_weak_closed`: The polar is closed in the weak topology induced by `B.flip`. Moreover, the corresponding lemmas are removed in the normed space setting as they all follow directly from the general case. ESTIMATED CHANGES Added src/analysis/locally_convex/polar.lean + def linear_map.polar + theorem linear_map.polar_Union + theorem linear_map.polar_antitone + theorem linear_map.polar_empty + theorem linear_map.polar_eq_Inter + theorem linear_map.polar_gc + theorem linear_map.polar_mem + theorem linear_map.polar_mem_iff + theorem linear_map.polar_union + theorem linear_map.polar_univ + theorem linear_map.polar_weak_closed + theorem linear_map.polar_zero + theorem linear_map.subset_bipolar + theorem linear_map.tripolar_eq_polar + theorem linear_map.zero_mem_polar Modified src/analysis/normed_space/dual.lean - theorem bounded_polar_of_mem_nhds_zero - theorem closed_ball_inv_subset_polar_closed_ball - theorem is_closed_polar + theorem normed_space.bounded_polar_of_mem_nhds_zero + theorem normed_space.closed_ball_inv_subset_polar_closed_ball + def normed_space.dual_pairing + theorem normed_space.dual_pairing_apply + theorem normed_space.dual_pairing_separating_left + theorem normed_space.is_closed_polar + theorem normed_space.mem_polar_iff + def normed_space.polar + theorem normed_space.polar_ball_subset_closed_ball_div + theorem normed_space.polar_closed_ball + theorem normed_space.polar_closure + theorem normed_space.polar_univ + theorem normed_space.smul_mem_polar - def polar - theorem polar_Union - theorem polar_antitone - theorem polar_ball_subset_closed_ball_div - theorem polar_closed_ball - theorem polar_closure - theorem polar_empty - theorem polar_eq_Inter - theorem polar_gc - theorem polar_union - theorem polar_univ - theorem polar_zero - theorem smul_mem_polar - theorem zero_mem_polar Modified src/analysis/normed_space/weak_dual.lean - theorem weak_dual.is_closed_polar - def weak_dual.polar 2022-03-30 11:47:45 f13ee54 chore(*): sort out some to_additive and simp orderings (#13038) - To additive should always come after simp, unless the linter complains. - Also make to_additive transfer the `protected` attribute for consistency. ESTIMATED CHANGES Modified src/algebra/group/pi.lean Modified src/algebra/group/to_additive.lean Modified src/data/finset/noncomm_prod.lean Modified src/data/part.lean 2022-03-30 11:47:44 37a8a0b feat(ring_theory/graded_algebra): define homogeneous localisation (#12784) This pr defines `homogeneous_localization`. For `x` in projective spectrum of `A`, homogeneous localisation at `x` is the subring of $$A_x$$ containing `a/b` where `a` and `b` have the same degree. This construction is mainly used in constructing structure sheaf of Proj of a graded ring ESTIMATED CHANGES Added src/ring_theory/graded_algebra/homogeneous_localization.lean + theorem homogeneous_localization.add_val + def homogeneous_localization.deg + def homogeneous_localization.denom + theorem homogeneous_localization.denom_mem + theorem homogeneous_localization.denom_not_mem + theorem homogeneous_localization.eq_num_div_denom + theorem homogeneous_localization.ext_iff_val + theorem homogeneous_localization.mul_val + theorem homogeneous_localization.neg_val + def homogeneous_localization.num + theorem homogeneous_localization.num_denom_same_deg.deg_add + theorem homogeneous_localization.num_denom_same_deg.deg_mul + theorem homogeneous_localization.num_denom_same_deg.deg_neg + theorem homogeneous_localization.num_denom_same_deg.deg_one + theorem homogeneous_localization.num_denom_same_deg.deg_pow + theorem homogeneous_localization.num_denom_same_deg.deg_smul + theorem homogeneous_localization.num_denom_same_deg.deg_zero + theorem homogeneous_localization.num_denom_same_deg.denom_add + theorem homogeneous_localization.num_denom_same_deg.denom_mul + theorem homogeneous_localization.num_denom_same_deg.denom_neg + theorem homogeneous_localization.num_denom_same_deg.denom_one + theorem homogeneous_localization.num_denom_same_deg.denom_pow + theorem homogeneous_localization.num_denom_same_deg.denom_smul + theorem homogeneous_localization.num_denom_same_deg.denom_zero + def homogeneous_localization.num_denom_same_deg.embedding + theorem homogeneous_localization.num_denom_same_deg.ext + theorem homogeneous_localization.num_denom_same_deg.num_add + theorem homogeneous_localization.num_denom_same_deg.num_mul + theorem homogeneous_localization.num_denom_same_deg.num_neg + theorem homogeneous_localization.num_denom_same_deg.num_one + theorem homogeneous_localization.num_denom_same_deg.num_pow + theorem homogeneous_localization.num_denom_same_deg.num_smul + theorem homogeneous_localization.num_denom_same_deg.num_zero + structure homogeneous_localization.num_denom_same_deg + theorem homogeneous_localization.num_mem + theorem homogeneous_localization.one_eq + theorem homogeneous_localization.one_val + theorem homogeneous_localization.pow_val + theorem homogeneous_localization.smul_val + theorem homogeneous_localization.sub_val + def homogeneous_localization.val + theorem homogeneous_localization.val_injective + theorem homogeneous_localization.zero_eq + theorem homogeneous_localization.zero_val + def homogeneous_localization 2022-03-30 09:48:05 cdd1703 feat(algebra/associates): add two instances and a lemma about the order on the monoid of associates of a monoid (#12863) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.is_unit_iff_eq_bot 2022-03-30 03:51:16 cd51f0d fix(data/fintype/basic): generalize fintype instance for fintype.card_coe (#13055) ESTIMATED CHANGES Modified src/combinatorics/hall/finite.lean Modified src/data/fintype/basic.lean +/- theorem fintype.card_coe 2022-03-30 03:51:14 f2fd6db chore(*): removing some `by { dunfold .., apply_instance }` proofs (#13050) Replaces the proofs `by { dunfold .., apply_instance }` by the exact term that is outputted by `show_term`. ESTIMATED CHANGES Modified src/linear_algebra/dual.lean Modified src/topology/sheaves/limits.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean 2022-03-30 03:19:42 ca3bb9e chore(scripts): update nolints.txt (#13057) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-30 02:20:22 fc75855 feat(measure_theory/*): refactor integral to allow non second-countable target space (#12942) Currently, the Bochner integral in mathlib only allows second-countable target spaces. This is an issue, since many constructions in spectral theory require integrals, and spaces of operators are typically not second-countable. The most general definition of the Bochner integral requires functions that may take values in non second-countable spaces, but which are still pointwise limits of a sequence of simple functions (so-called strongly measurable functions) -- equivalently, they are measurable and with second-countable range. This PR refactors the Bochner integral, working with strongly measurable functions (or rather, almost everywhere strongly measurable functions, i.e., functions which coincide almost everywhere with a strongly measurable function). There are some prerequisistes (topological facts, and a good enough theory of almost everywhere strongly measurable functions) that have been PRed separately, but the remaining part of the change has to be done in one PR, as once one changes the basic definition of the integral one has to change all the files that depend on it. Once the change is done, in many files the fix is just to remove `[measurable_space E] [borel_space E] [second_countable_topology E]` to make the linter happy, and see that everything still compiles. (Well, sometimes it is also much more painful, of course :-). For end users using `integrable`, nothing has to be changed, but if you need to prove integrability by hand, instead of checking `ae_measurable` you need to check `ae_strongly_measurable`. In second-countable spaces, the two of them are equivalent (and you can use `ae_strongly_measurable.ae_measurable` and `ae_measurable.ae_strongly_measurable` to go between the two of them). The main changes are the following: * change `ae_eq_fun` to base it on equivalence classes of ae strongly measurable functions * fix everything that depends on this definition, including lp_space, set_to_L1, the Bochner integral and conditional expectation * fix everything that depends on these, notably complex analysis (removing second-countability and measurability assumptions all over the place) * A notion that involves a measurable function taking values in a normed space should probably better be rephrased in terms of strongly_measurable or ae_strongly_measurable. So, change a few definitions like `measurable_at_filter` (to `strongly_measurable_at_filter`) or `martingale`. ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/box_integral/integrability.lean +/- theorem measure_theory.integrable_on.has_box_integral Modified src/analysis/calculus/fderiv_measurable.lean + theorem ae_strongly_measurable_deriv + theorem strongly_measurable_deriv Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/calculus/parametric_interval_integral.lean Modified src/analysis/complex/abs_max.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/complex/liouville.lean +/- theorem complex.deriv_eq_smul_circle_integral Modified src/analysis/complex/removable_singularity.lean Modified src/analysis/convex/integral.lean Modified src/analysis/fourier.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/star/spectrum.lean +/- theorem spectral_radius_eq_nnnorm_of_self_adjoint +/- theorem spectral_radius_eq_nnnorm_of_star_normal Modified src/analysis/special_functions/non_integrable.lean Modified src/measure_theory/constructions/prod.lean - theorem ae_measurable.integral_prod_right' - theorem ae_measurable.prod_mk_left - theorem measurable.integral_prod_left' - theorem measurable.integral_prod_left - theorem measurable.integral_prod_right' - theorem measurable.integral_prod_right +/- theorem measurable_set_integrable + theorem measure_theory.ae_strongly_measurable.integral_prod_right' + theorem measure_theory.ae_strongly_measurable.prod_mk_left + theorem measure_theory.ae_strongly_measurable.prod_swap +/- theorem measure_theory.has_finite_integral_prod_iff' +/- theorem measure_theory.has_finite_integral_prod_iff +/- theorem measure_theory.integrable_prod_iff' +/- theorem measure_theory.integrable_prod_iff + theorem measure_theory.strongly_measurable.integral_prod_left' + theorem measure_theory.strongly_measurable.integral_prod_left + theorem measure_theory.strongly_measurable.integral_prod_right' + theorem measure_theory.strongly_measurable.integral_prod_right Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/radon_nikodym.lean Modified src/measure_theory/function/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.coe_fn_comp + theorem measure_theory.ae_eq_fun.coe_fn_comp_measurable +/- theorem measure_theory.ae_eq_fun.coe_fn_comp₂ + theorem measure_theory.ae_eq_fun.coe_fn_comp₂_measurable +/- theorem measure_theory.ae_eq_fun.coe_fn_inf +/- theorem measure_theory.ae_eq_fun.coe_fn_sup +/- def measure_theory.ae_eq_fun.comp +/- theorem measure_theory.ae_eq_fun.comp_eq_mk + def measure_theory.ae_eq_fun.comp_measurable + theorem measure_theory.ae_eq_fun.comp_measurable_eq_mk + theorem measure_theory.ae_eq_fun.comp_measurable_mk + theorem measure_theory.ae_eq_fun.comp_measurable_to_germ +/- theorem measure_theory.ae_eq_fun.comp_mk +/- theorem measure_theory.ae_eq_fun.comp_to_germ +/- def measure_theory.ae_eq_fun.comp₂ +/- theorem measure_theory.ae_eq_fun.comp₂_eq_mk +/- theorem measure_theory.ae_eq_fun.comp₂_eq_pair + def measure_theory.ae_eq_fun.comp₂_measurable + theorem measure_theory.ae_eq_fun.comp₂_measurable_eq_mk + theorem measure_theory.ae_eq_fun.comp₂_measurable_eq_pair + theorem measure_theory.ae_eq_fun.comp₂_measurable_mk_mk + theorem measure_theory.ae_eq_fun.comp₂_measurable_to_germ +/- theorem measure_theory.ae_eq_fun.comp₂_mk_mk +/- theorem measure_theory.ae_eq_fun.comp₂_to_germ +/- def measure_theory.ae_eq_fun.const +/- theorem measure_theory.ae_eq_fun.induction_on₂ +/- theorem measure_theory.ae_eq_fun.induction_on₃ +/- def measure_theory.ae_eq_fun.mk +/- theorem measure_theory.ae_eq_fun.mk_coe_fn +/- theorem measure_theory.ae_eq_fun.mk_div +/- theorem measure_theory.ae_eq_fun.mk_mul_mk +/- theorem measure_theory.ae_eq_fun.smul_mk +/- def measure_theory.measure.ae_eq_setoid Modified src/measure_theory/function/ae_eq_of_integral.lean +/- theorem measure_theory.ae_eq_zero_of_forall_dual + theorem measure_theory.ae_eq_zero_of_forall_dual_of_is_separable - theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_finite_measure_of_measurable + theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_finite_measure_of_strongly_measurable Modified src/measure_theory/function/conditional_expectation.lean - theorem measure_theory.Lp_meas.ae_measurable' + theorem measure_theory.Lp_meas.ae_strongly_measurable' +/- def measure_theory.Lp_meas - theorem measure_theory.ae_eq_trim_iff_of_ae_measurable' + theorem measure_theory.ae_eq_trim_iff_of_ae_strongly_measurable' - theorem measure_theory.ae_measurable'.add - theorem measure_theory.ae_measurable'.ae_eq_mk - theorem measure_theory.ae_measurable'.congr - theorem measure_theory.ae_measurable'.const_inner - theorem measure_theory.ae_measurable'.const_smul - theorem measure_theory.ae_measurable'.measurable_comp - theorem measure_theory.ae_measurable'.measurable_mk - def measure_theory.ae_measurable'.mk - theorem measure_theory.ae_measurable'.neg - theorem measure_theory.ae_measurable'.sub - def measure_theory.ae_measurable' - theorem measure_theory.ae_measurable'_condexp_L1 - theorem measure_theory.ae_measurable'_condexp_L1_clm - theorem measure_theory.ae_measurable'_condexp_L2 - theorem measure_theory.ae_measurable'_condexp_ind - theorem measure_theory.ae_measurable'_condexp_ind_smul - theorem measure_theory.ae_measurable'_of_ae_measurable'_trim + theorem measure_theory.ae_strongly_measurable'.add + theorem measure_theory.ae_strongly_measurable'.ae_eq_mk + theorem measure_theory.ae_strongly_measurable'.congr + theorem measure_theory.ae_strongly_measurable'.const_inner + theorem measure_theory.ae_strongly_measurable'.const_smul + theorem measure_theory.ae_strongly_measurable'.continuous_comp + def measure_theory.ae_strongly_measurable'.mk + theorem measure_theory.ae_strongly_measurable'.neg + theorem measure_theory.ae_strongly_measurable'.strongly_measurable_mk + theorem measure_theory.ae_strongly_measurable'.sub + def measure_theory.ae_strongly_measurable' + theorem measure_theory.ae_strongly_measurable'_condexp_L1 + theorem measure_theory.ae_strongly_measurable'_condexp_L1_clm + theorem measure_theory.ae_strongly_measurable'_condexp_L2 + theorem measure_theory.ae_strongly_measurable'_condexp_ind + theorem measure_theory.ae_strongly_measurable'_condexp_ind_smul + theorem measure_theory.ae_strongly_measurable'_of_ae_strongly_measurable'_trim - theorem measure_theory.condexp_L1_clm_of_ae_measurable' + theorem measure_theory.condexp_L1_clm_of_ae_strongly_measurable' - theorem measure_theory.condexp_L1_of_ae_measurable' + theorem measure_theory.condexp_L1_of_ae_strongly_measurable' - theorem measure_theory.condexp_of_measurable + theorem measure_theory.condexp_of_strongly_measurable +/- theorem measure_theory.inner_condexp_L2_eq_inner_fun - theorem measure_theory.is_closed_ae_measurable' + theorem measure_theory.is_closed_ae_strongly_measurable' - theorem measure_theory.is_complete_ae_measurable' + theorem measure_theory.is_complete_ae_strongly_measurable' - theorem measure_theory.measurable.ae_measurable' - theorem measure_theory.measurable_condexp - theorem measure_theory.mem_Lp_meas_iff_ae_measurable' + theorem measure_theory.mem_Lp_meas_iff_ae_strongly_measurable' +/- theorem measure_theory.mem_Lp_meas_self - theorem measure_theory.mem_Lp_meas_subgroup_iff_ae_measurable' + theorem measure_theory.mem_Lp_meas_subgroup_iff_ae_strongly_measurable' +/- theorem measure_theory.norm_condexp_L2_le_one + theorem measure_theory.strongly_measurable.ae_strongly_measurable' + theorem measure_theory.strongly_measurable_condexp Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/convergence_in_measure.lean +/- theorem measure_theory.tendsto_in_measure_of_tendsto_Lp +/- theorem measure_theory.tendsto_in_measure_of_tendsto_ae - theorem measure_theory.tendsto_in_measure_of_tendsto_ae_of_measurable + theorem measure_theory.tendsto_in_measure_of_tendsto_ae_of_strongly_measurable +/- theorem measure_theory.tendsto_in_measure_of_tendsto_snorm - theorem measure_theory.tendsto_in_measure_of_tendsto_snorm_of_measurable + theorem measure_theory.tendsto_in_measure_of_tendsto_snorm_of_strongly_measurable Modified src/measure_theory/function/egorov.lean Modified src/measure_theory/function/jacobian.lean Modified src/measure_theory/function/l1_space.lean +/- theorem measurable_embedding.integrable_map_iff +/- theorem measure_theory.L1.ae_measurable_coe_fn + theorem measure_theory.L1.ae_strongly_measurable_coe_fn +/- theorem measure_theory.L1.measurable_coe_fn + theorem measure_theory.L1.strongly_measurable_coe_fn +/- theorem measure_theory.ae_eq_fun.integrable_mk +/- theorem measure_theory.integrable.add' +/- theorem measure_theory.integrable.add +/- theorem measure_theory.integrable.ae_measurable + theorem measure_theory.integrable.ae_strongly_measurable +/- theorem measure_theory.integrable.comp_measurable +/- theorem measure_theory.integrable.congr' +/- theorem measure_theory.integrable.max_zero +/- theorem measure_theory.integrable.min_zero +/- theorem measure_theory.integrable.mono' +/- theorem measure_theory.integrable.mono +/- theorem measure_theory.integrable.neg +/- theorem measure_theory.integrable.norm +/- theorem measure_theory.integrable.prod_mk +/- theorem measure_theory.integrable.smul +/- theorem measure_theory.integrable.sub' +/- theorem measure_theory.integrable.sub +/- theorem measure_theory.integrable.trim +/- theorem measure_theory.integrable_congr' +/- theorem measure_theory.integrable_finset_sum +/- theorem measure_theory.integrable_map_measure +/- theorem measure_theory.integrable_neg_iff +/- theorem measure_theory.integrable_norm_iff +/- theorem measure_theory.integrable_of_forall_fin_meas_le' +/- theorem measure_theory.integrable_of_norm_sub_le +/- theorem measure_theory.integrable_smul_iff +/- theorem measure_theory.lintegral_edist_lt_top +/- theorem measure_theory.lintegral_edist_triangle +/- theorem measure_theory.lintegral_nnnorm_add +/- theorem measure_theory.lipschitz_with.integrable_comp_iff_of_antilipschitz +/- theorem measure_theory.measure_preserving.integrable_comp +/- theorem measure_theory.mem_ℒp.integrable +/- theorem measure_theory.tendsto_lintegral_norm_of_dominated_convergence Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/locally_integrable.lean Modified src/measure_theory/function/lp_order.lean Modified src/measure_theory/function/lp_space.lean +/- theorem bounded_continuous_function.coe_fn_to_Lp +/- theorem bounded_continuous_function.range_to_Lp +/- def bounded_continuous_function.to_Lp +/- theorem bounded_continuous_function.to_Lp_norm_le +/- theorem continuous_linear_map.smul_comp_Lp +/- theorem continuous_linear_map.smul_comp_LpL_apply +/- theorem continuous_map.coe_fn_to_Lp +/- theorem continuous_map.coe_to_Lp +/- theorem continuous_map.range_to_Lp +/- def continuous_map.to_Lp +/- theorem continuous_map.to_Lp_comp_to_continuous_map +/- theorem continuous_map.to_Lp_def +/- theorem measurable_embedding.mem_ℒp_map_measure_iff +/- theorem measurable_equiv.mem_ℒp_map_measure_iff +/- theorem measure_theory.Lp.cauchy_tendsto_of_tendsto +/- theorem measure_theory.Lp.mem_Lp_of_ae_le +/- theorem measure_theory.Lp.mem_Lp_of_ae_le_mul +/- theorem measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul +/- theorem measure_theory.Lp.norm_le_norm_of_ae_le +/- theorem measure_theory.Lp.snorm'_lim_le_liminf_snorm' +/- theorem measure_theory.Lp.snorm_lim_le_liminf_snorm +/- def measure_theory.Lp +/- theorem measure_theory.ae_eq_zero_of_snorm'_eq_zero +/- theorem measure_theory.ess_sup_trim +/- theorem measure_theory.limsup_trim +/- theorem measure_theory.meas_ge_le_mul_pow_snorm - theorem measure_theory.mem_ℒp.ae_measurable + theorem measure_theory.mem_ℒp.ae_strongly_measurable +/- theorem measure_theory.mem_ℒp.congr_norm +/- theorem measure_theory.mem_ℒp.const_mul +/- theorem measure_theory.mem_ℒp.const_smul +/- theorem measure_theory.mem_ℒp.norm_rpow +/- theorem measure_theory.mem_ℒp.of_bound +/- theorem measure_theory.mem_ℒp.of_le +/- theorem measure_theory.mem_ℒp.of_le_mul +/- theorem measure_theory.mem_ℒp_congr_norm +/- theorem measure_theory.mem_ℒp_map_measure_iff +/- theorem measure_theory.mem_ℒp_norm_iff +/- theorem measure_theory.mem_ℒp_top_of_bound - theorem measure_theory.mem_ℒp_zero_iff_ae_measurable + theorem measure_theory.mem_ℒp_zero_iff_ae_strongly_measurable +/- theorem measure_theory.snorm'_add_le +/- theorem measure_theory.snorm'_add_lt_top_of_le_one +/- theorem measure_theory.snorm'_eq_zero_iff +/- theorem measure_theory.snorm'_smul_le_mul_snorm' +/- theorem measure_theory.snorm'_trim +/- theorem measure_theory.snorm_add_le +/- theorem measure_theory.snorm_eq_zero_iff +/- theorem measure_theory.snorm_ess_sup_map_measure +/- theorem measure_theory.snorm_ess_sup_trim +/- theorem measure_theory.snorm_map_measure +/- theorem measure_theory.snorm_sub_le +/- theorem measure_theory.snorm_trim +/- theorem measure_theory.snorm_trim_ae Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/function/simple_func_dense_lp.lean + theorem measure_theory.simple_func.integrable_approx_on_range - theorem measure_theory.simple_func.integrable_approx_on_univ +/- theorem measure_theory.simple_func.integrable_pair + theorem measure_theory.simple_func.mem_ℒp_approx_on_range - theorem measure_theory.simple_func.mem_ℒp_approx_on_univ + theorem measure_theory.simple_func.tendsto_approx_on_range_L1_nnnorm + theorem measure_theory.simple_func.tendsto_approx_on_range_Lp + theorem measure_theory.simple_func.tendsto_approx_on_range_Lp_snorm - theorem measure_theory.simple_func.tendsto_approx_on_univ_L1_nnnorm - theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp - theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp_snorm Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/function/strongly_measurable_lp.lean - theorem measure_theory.mem_ℒp.fin_strongly_measurable_of_measurable + theorem measure_theory.mem_ℒp.fin_strongly_measurable_of_strongly_measurable Modified src/measure_theory/function/uniform_integrable.lean +/- theorem measure_theory.tendsto_Lp_of_tendsto_ae +/- theorem measure_theory.tendsto_Lp_of_tendsto_ae_of_meas +/- theorem measure_theory.tendsto_Lp_of_tendsto_in_measure +/- theorem measure_theory.tendsto_in_measure_iff_tendsto_Lp +/- theorem measure_theory.unif_integrable_of' +/- theorem measure_theory.unif_integrable_of +/- theorem measure_theory.unif_integrable_of_tendsto_Lp - theorem measure_theory.uniform_integrable.measurable +/- theorem measure_theory.uniform_integrable.mem_ℒp + theorem measure_theory.uniform_integrable.strongly_measurable +/- theorem measure_theory.uniform_integrable.unif_integrable +/- def measure_theory.uniform_integrable +/- theorem measure_theory.uniform_integrable_zero_meas Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/group/integration.lean Modified src/measure_theory/integral/average.lean Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.L1.simple_func.integral_smul +/- theorem measure_theory.ae_eq_trim_iff - theorem measure_theory.ae_eq_trim_of_measurable + theorem measure_theory.ae_eq_trim_of_strongly_measurable +/- theorem measure_theory.integral_dirac' +/- theorem measure_theory.integral_eq_lintegral_of_nonneg_ae - theorem measure_theory.integral_map_of_measurable + theorem measure_theory.integral_map_of_strongly_measurable - theorem measure_theory.integral_non_ae_measurable + theorem measure_theory.integral_non_ae_strongly_measurable +/- theorem measure_theory.integral_norm_eq_lintegral_nnnorm +/- theorem measure_theory.integral_smul +/- theorem measure_theory.integral_trim +/- theorem measure_theory.integral_trim_ae +/- theorem measure_theory.of_real_integral_norm_eq_lintegral_nnnorm +/- theorem measure_theory.tendsto_integral_approx_on_of_measurable + theorem measure_theory.tendsto_integral_approx_on_of_measurable_of_range_subset - theorem measure_theory.tendsto_integral_approx_on_univ_of_measurable Modified src/measure_theory/integral/circle_integral.lean +/- theorem circle_integrable.add +/- theorem circle_integrable.neg +/- theorem circle_integrable.out +/- theorem circle_integrable_iff +/- theorem continuous_on.circle_integrable' +/- theorem continuous_on.circle_integrable Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/exp_decay.lean +/- theorem exp_neg_integrable_on_Ioi Modified src/measure_theory/integral/integrable_on.lean - theorem ae_measurable.measurable_at_filter_of_mem + theorem ae_strongly_measurable.strongly_measurable_at_filter_of_mem + theorem continuous.strongly_measurable_at_filter + theorem continuous_at.strongly_measurable_at_filter + theorem continuous_on.ae_strongly_measurable + theorem continuous_on.ae_strongly_measurable_of_is_separable + theorem continuous_on.integrable_at_nhds_within_of_is_separable + theorem continuous_on.strongly_measurable_at_filter + theorem continuous_on.strongly_measurable_at_filter_nhds_within - theorem measurable_at_bot - def measurable_at_filter +/- theorem measure_theory.integrable_indicator_const_Lp +/- theorem measure_theory.integrable_on_Lp_of_measure_ne_top +/- theorem measure_theory.integrable_on_singleton_iff + theorem strongly_measurable_at_bot + def strongly_measurable_at_filter Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.ae_cover.ae_strongly_measurable Modified src/measure_theory/integral/interval_integral.lean +/- theorem continuous.interval_integrable +/- theorem continuous_on.interval_integrable +/- theorem continuous_on.interval_integrable_of_Icc +/- theorem interval_integrable.add +/- theorem interval_integrable.mono_fun +/- theorem interval_integrable.neg +/- theorem interval_integrable.norm +/- theorem interval_integrable.smul +/- theorem interval_integrable.sub - theorem interval_integral.integral_non_ae_measurable - theorem interval_integral.integral_non_ae_measurable_of_le + theorem interval_integral.integral_non_ae_strongly_measurable + theorem interval_integral.integral_non_ae_strongly_measurable_of_le +/- theorem interval_integral.interval_integrable_iff_integrable_Icc_of_le +/- theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/integral/set_integral.lean - theorem continuous.measurable_at_filter - theorem continuous_at.measurable_at_filter - theorem continuous_on.measurable_at_filter - theorem continuous_on.measurable_at_filter_nhds_within +/- theorem measure_theory.integral_norm_eq_pos_sub_neg +/- theorem measure_theory.set_integral_eq_zero_of_forall_eq_zero +/- theorem measure_theory.set_integral_le_nonneg +/- theorem measure_theory.set_integral_nonpos_le +/- theorem measure_theory.set_integral_union_eq_left Modified src/measure_theory/integral/set_to_l1.lean +/- theorem measure_theory.L1.simple_func.norm_eq_sum_mul +/- theorem measure_theory.L1.simple_func.set_to_L1s_smul +/- theorem measure_theory.continuous_L1_to_L1 - theorem measure_theory.set_to_fun_non_ae_measurable + theorem measure_theory.set_to_fun_non_ae_strongly_measurable +/- theorem measure_theory.set_to_fun_smul +/- theorem measure_theory.simple_func.set_to_simple_func_mono +/- theorem measure_theory.simple_func.set_to_simple_func_nonneg' +/- theorem measure_theory.simple_func.set_to_simple_func_smul Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measure/with_density_vector_measure.lean Modified src/probability/density.lean Modified src/probability/martingale.lean - theorem measure_theory.martingale.measurable + theorem measure_theory.martingale.strongly_measurable - theorem measure_theory.submartingale.measurable + theorem measure_theory.submartingale.strongly_measurable - theorem measure_theory.supermartingale.measurable + theorem measure_theory.supermartingale.strongly_measurable Modified src/probability/stopping.lean +/- theorem measure_theory.adapted.add +/- theorem measure_theory.adapted.measurable_stopped_process_of_nat +/- theorem measure_theory.adapted.neg +/- theorem measure_theory.adapted.prog_measurable_of_continuous +/- theorem measure_theory.adapted.prog_measurable_of_nat +/- theorem measure_theory.adapted.smul +/- theorem measure_theory.adapted.stopped_process_of_nat +/- theorem measure_theory.filtration.adapted_natural +/- def measure_theory.filtration.natural +/- theorem measure_theory.prog_measurable_of_tendsto' +/- theorem measure_theory.prog_measurable_of_tendsto Modified src/topology/metric_space/basic.lean 2022-03-30 02:20:21 d28a163 feat(linear_algebra/dual): define the algebraic dual pairing (#12827) We define the pairing of algebraic dual and show that it is nondegenerate. ESTIMATED CHANGES Modified src/linear_algebra/dual.lean + theorem linear_map.dual_pairing_nondegenerate + def module.dual_pairing + theorem module.dual_pairing_apply Modified src/linear_algebra/sesquilinear_form.lean 2022-03-30 00:29:28 c594e2b feat(algebra/ring/basic): neg_zero for distrib_neg (#13049) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem neg_zero' 2022-03-30 00:29:27 b446c49 feat(set_theory/cardinal): bit lemmas for exponentiation (#13010) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.power_bit0 + theorem cardinal.power_bit1 2022-03-30 00:29:26 92b29c7 fix(tactic/norm_num): make norm_num user command match norm_num better (#12667) Corrects some issues with the `#norm_num` user command that prevented it from fully normalizing expressions. Also, adds `expr.norm_num`. ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2022-03-29 23:57:24 523d177 feat(combinatorics/simple_graph/regularity/energy): Energy of a partition (#12958) Define the energy of a partition. ESTIMATED CHANGES Added src/combinatorics/simple_graph/regularity/energy.lean + def finpartition.energy + theorem finpartition.energy_le_one + theorem finpartition.energy_nonneg 2022-03-29 23:24:55 50903f0 feat(algebra/algebra/unitization): define unitization of a non-unital algebra (#12601) Given a non-unital `R`-algebra `A` (given via the type classes `[non_unital_ring A] [module R A] [smul_comm_class R A A] [is_scalar_tower R A A]`) we construct the minimal unital `R`-algebra containing `A` as an ideal. This object `unitization R A` is a type synonym for `R × A` on which we place a different multiplicative structure, namely, `(r₁, a₁) * (r₂, a₂) = (r₁ * r₂, r₁ • a₂ + r₂ • a₁ + a₁ * a₂)` where the multiplicative identity is `(1, 0)`. ESTIMATED CHANGES Added src/algebra/algebra/unitization.lean + theorem unitization.alg_hom_ext' + theorem unitization.alg_hom_ext + theorem unitization.algebra_map_eq_inl + theorem unitization.algebra_map_eq_inl_comp + theorem unitization.algebra_map_eq_inl_hom + theorem unitization.algebra_map_eq_inl_ring_hom_comp + theorem unitization.coe_add + def unitization.coe_hom + theorem unitization.coe_injective + theorem unitization.coe_mul + theorem unitization.coe_mul_inl + theorem unitization.coe_neg + def unitization.coe_non_unital_alg_hom + theorem unitization.coe_smul + theorem unitization.coe_zero + theorem unitization.ext + def unitization.fst + theorem unitization.fst_add + theorem unitization.fst_coe + def unitization.fst_hom + theorem unitization.fst_inl + theorem unitization.fst_mul + theorem unitization.fst_neg + theorem unitization.fst_one + theorem unitization.fst_smul + theorem unitization.fst_zero + theorem unitization.ind + def unitization.inl + theorem unitization.inl_add + theorem unitization.inl_fst_add_coe_snd_eq + theorem unitization.inl_injective + theorem unitization.inl_mul + theorem unitization.inl_mul_coe + theorem unitization.inl_mul_inl + theorem unitization.inl_neg + theorem unitization.inl_one + def unitization.inl_ring_hom + theorem unitization.inl_smul + theorem unitization.inl_zero + def unitization.lift + theorem unitization.lift_symm_apply + theorem unitization.linear_map_ext + def unitization.snd + theorem unitization.snd_add + theorem unitization.snd_coe + def unitization.snd_hom + theorem unitization.snd_inl + theorem unitization.snd_mul + theorem unitization.snd_neg + theorem unitization.snd_one + theorem unitization.snd_smul + theorem unitization.snd_zero + def unitization 2022-03-29 20:37:44 119eb05 chore(ring_theory/valuation/basic): fix valuation_apply (#13045) Follow-up to #12914. ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean +/- theorem add_valuation.valuation_apply 2022-03-29 20:37:43 e4c6449 feat(algebra/module): `sub_mem_iff_left` and `sub_mem_iff_right` (#13043) Since it's a bit of a hassle to rewrite `add_mem_iff_left` and `add_mem_iff_right` to subtraction, I made a new pair of lemmas. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.sub_mem_iff_left + theorem submodule.sub_mem_iff_right 2022-03-29 20:37:42 9aec6df feat(algebra/algebra/tower): `span A s = span R s` if `R → A` is surjective (#13042) ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean + theorem algebra.coe_span_eq_span_of_surjective + theorem algebra.span_restrict_scalars_eq_span_of_surjective 2022-03-29 18:32:04 d3684bc feat(category_theory/abelian): constructor in terms of coimage-image comparison (#12972) The "stacks constructor" for an abelian category, following https://stacks.math.columbia.edu/tag/0109. I also factored out the canonical morphism from the abelian coimage to the abelian image (which exists whether or not the category is abelian), and reformulated `abelian.coimage_iso_image` in terms of an `is_iso` instance for this morphism. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean - theorem category_theory.abelian.full_image_factorisation + theorem category_theory.abelian.of_coimage_image_comparison_is_iso.has_images + def category_theory.abelian.of_coimage_image_comparison_is_iso.image_factorisation + def category_theory.abelian.of_coimage_image_comparison_is_iso.image_mono_factorisation + theorem category_theory.abelian.of_coimage_image_comparison_is_iso.image_mono_factorisation_e' + def category_theory.abelian.of_coimage_image_comparison_is_iso.normal_epi_category + def category_theory.abelian.of_coimage_image_comparison_is_iso.normal_mono_category + def category_theory.abelian.of_coimage_image_comparison_is_iso Modified src/category_theory/abelian/exact.lean Modified src/category_theory/abelian/images.lean + def category_theory.abelian.coimage_image_comparison' + def category_theory.abelian.coimage_image_comparison + theorem category_theory.abelian.coimage_image_comparison_eq_coimage_image_comparison' + theorem category_theory.abelian.coimage_image_factorisation Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.has_zero_object_of_has_finite_biproducts Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.mono_factorisation.kernel_ι_comp Modified src/data/fin/basic.lean + def fin.elim0' 2022-03-29 17:44:57 e92ecff feat(algebra/direct_sum/module): link `direct_sum.submodule_is_internal` to `is_compl` (#12671) This is then used to show the even and odd components of a clifford algebra are complementary. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean + theorem direct_sum.submodule_is_internal.is_compl + theorem direct_sum.submodule_is_internal_iff_is_compl Modified src/linear_algebra/clifford_algebra/grading.lean + theorem clifford_algebra.even_odd_is_compl 2022-03-29 17:11:21 90f0bee chore(analysis/normed_space/exponential): fix lemma names in docstrings (#13032) ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean 2022-03-29 14:38:00 993d576 chore(data/list/pairwise): add `pairwise_bind` (#13030) ESTIMATED CHANGES Modified src/data/list/pairwise.lean + theorem list.pairwise_bind 2022-03-29 14:37:59 8999813 chore(data/list): two lemmas about bind (#13029) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.bind_congr Modified src/data/list/join.lean + theorem list.bind_eq_nil 2022-03-29 14:37:58 cedf022 feat(ring_theory/valuation/basic): add add_valuation.valuation (#12914) ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean + def add_valuation.valuation + theorem add_valuation.valuation_apply 2022-03-29 13:10:46 84b8b0d chore(topology/vector_bundle): fix timeout by optimizing proof (#13026) This PR speeds up a big and slow definition using `simp only` and `convert` → `refine`. This declaration seems to be on the edge of timing out and some other changes like #11750 tripped it up. Time saved if I run it with timeouts disabled: * master 14.8s → 6.3s * #11750 14.2s → 6.12s ESTIMATED CHANGES Modified src/topology/vector_bundle.lean 2022-03-29 13:10:45 d5fee32 chore(algebra/field_power): slightly simplify proof of min_le_of_zpow_le_max (#13023) ESTIMATED CHANGES Modified src/algebra/field_power.lean 2022-03-29 13:10:44 541c80d feat(group_theory/index): Golf proof of `relindex_eq_zero_of_le_left` (#13014) This PR uses `relindex_dvd_of_le_left` to golf the proof of `relindex_eq_zero_of_le_left`. ESTIMATED CHANGES Modified src/group_theory/index.lean 2022-03-29 13:10:43 e109c8f feat(topology): basis for `𝓤 C(α, β)` and convergence of a series of `f : C(α, β)` (#11229) * add `filter.has_basis.compact_convergence_uniformity`; * add a few facts about `compacts X`; * add `summable_of_locally_summable_norm`. ESTIMATED CHANGES Modified src/topology/continuous_function/compact.lean + theorem continuous_map.summable_of_locally_summable_norm Modified src/topology/sets/compacts.lean Modified src/topology/uniform_space/compact_convergence.lean + theorem continuous_map.has_basis_compact_convergence_uniformity_aux + theorem filter.has_basis.compact_convergence_uniformity 2022-03-29 11:26:23 66509e1 feat(data/polynomial/div): `a - b ∣ p.eval a - p.eval b` (#13021) ESTIMATED CHANGES Modified src/data/polynomial/div.lean + theorem polynomial.sub_dvd_eval_sub 2022-03-29 11:26:22 111d3a4 chore(data/polynomial/eval): golf two proofs involving evals (#13020) I shortened two proofs involving `eval/eval₂/comp`. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean 2022-03-29 11:26:21 b87c267 feat(topology/algebra/group): add small topology lemma (#12931) Adds a small topology lemma by splitting `compact_open_separated_mul` into `compact_open_separated_mul_left/right`, which was useful in my proof of `Steinhaus theorem` (see #12932), as in a non-abelian group, the current version was not sufficient. ESTIMATED CHANGES Modified src/algebra/ring/opposite.lean Modified src/data/set/pointwise.lean + theorem set.image_op_mul Modified src/measure_theory/measure/haar.lean Modified src/topology/algebra/group.lean - theorem compact_open_separated_mul + theorem compact_open_separated_mul_left + theorem compact_open_separated_mul_right Modified src/topology/algebra/ring.lean 2022-03-29 09:36:12 89c8112 feat(topology/algebra/monoid): `finprod` is eventually equal to `finset.prod` (#13013) Motivated by https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Using.20partitions.20of.20unity ESTIMATED CHANGES Modified src/geometry/manifold/algebra/monoid.lean Modified src/topology/algebra/monoid.lean + theorem finprod_eventually_eq_prod + theorem locally_finite.exists_finset_mul_support 2022-03-29 09:36:11 545c265 feat(data/polynomial/derivative): if `p` is a polynomial, then `p.derivative.nat_degree ≤ p.nat_degree - 1` (#12948) I also golfed the proof that `p.derivative.nat_degree ≤ p.nat_degree`. ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean +/- theorem polynomial.nat_degree_derivative_le 2022-03-29 09:36:10 4bf4d9d feat(ring_theory/dedekind_domain/adic_valuation): add adic valuation on a Dedekind domain (#12712) Given a Dedekind domain R of Krull dimension 1 and a maximal ideal v of R, we define the v-adic valuation on R and prove some of its properties, including the existence of uniformizers. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem with_zero.le_max_iff + theorem with_zero.min_le_iff Added src/ring_theory/dedekind_domain/adic_valuation.lean + theorem is_dedekind_domain.height_one_spectrum.int_valuation.le_max_iff_min_le + theorem is_dedekind_domain.height_one_spectrum.int_valuation.map_add_le_max' + theorem is_dedekind_domain.height_one_spectrum.int_valuation.map_mul' + theorem is_dedekind_domain.height_one_spectrum.int_valuation.map_one' + theorem is_dedekind_domain.height_one_spectrum.int_valuation.map_zero' + def is_dedekind_domain.height_one_spectrum.int_valuation + def is_dedekind_domain.height_one_spectrum.int_valuation_def + theorem is_dedekind_domain.height_one_spectrum.int_valuation_def_if_neg + theorem is_dedekind_domain.height_one_spectrum.int_valuation_def_if_pos + theorem is_dedekind_domain.height_one_spectrum.int_valuation_exists_uniformizer + theorem is_dedekind_domain.height_one_spectrum.int_valuation_le_one + theorem is_dedekind_domain.height_one_spectrum.int_valuation_le_pow_iff_dvd + theorem is_dedekind_domain.height_one_spectrum.int_valuation_lt_one_iff_dvd + theorem is_dedekind_domain.height_one_spectrum.int_valuation_ne_zero' + theorem is_dedekind_domain.height_one_spectrum.int_valuation_ne_zero + theorem is_dedekind_domain.height_one_spectrum.int_valuation_zero_le Modified src/ring_theory/dedekind_domain/ideal.lean + theorem associates.le_singleton_iff - theorem is_dedekind_domain.height_one_spectrum.associates.irreducible + theorem is_dedekind_domain.height_one_spectrum.associates_irreducible Modified src/ring_theory/ideal/operations.lean + theorem associates.mk_ne_zero' 2022-03-29 09:36:08 1ffd04c feat(analysis/locally_convex): add balanced hull and core (#12537) ESTIMATED CHANGES Added src/analysis/locally_convex/balanced_core_hull.lean + theorem balanced.hull_subset_of_subset + theorem balanced.subset_core_of_subset + def balanced_core + def balanced_core_aux + theorem balanced_core_aux_balanced + theorem balanced_core_aux_empty + theorem balanced_core_aux_maximal + theorem balanced_core_aux_mem_iff + theorem balanced_core_aux_subset + theorem balanced_core_balanced + theorem balanced_core_eq_Inter + theorem balanced_core_mem_iff + theorem balanced_core_nonempty_iff + theorem balanced_core_subset + theorem balanced_core_subset_balanced_core_aux + theorem balanced_core_zero_mem + theorem balanced_hull.balanced + def balanced_hull + theorem balanced_hull_mem_iff + theorem smul_balanced_core_subset + theorem subset_balanced_hull 2022-03-29 07:35:13 0f92307 feat(data/list/chain): Simp lemma for `chain r a (l ++ b :: c :: m)` (#12969) ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain_append_cons_cons 2022-03-29 07:35:12 1cdbc35 feat(order/hom/bounded): an order_iso maps top to top and bot to bot (#12862) ESTIMATED CHANGES Modified src/order/hom/bounded.lean + theorem map_eq_bot_iff + theorem map_eq_top_iff 2022-03-29 07:35:11 b535c2d feat(algebra/homology): three lemmas on homological complexes (#12742) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean + theorem chain_complex.map_chain_complex_of Modified src/algebra/homology/differential_object.lean + theorem homological_complex.eq_to_hom_f' - theorem homological_complex.eq_to_hom_f Modified src/algebra/homology/homological_complex.lean + theorem homological_complex.eq_to_hom_f + theorem homological_complex.ext 2022-03-29 07:35:09 1084cee feat(category_theory/bicategory/coherence): prove the coherence theorem for bicategories (#12155) ESTIMATED CHANGES Added src/category_theory/bicategory/coherence.lean + def category_theory.free_bicategory.inclusion + def category_theory.free_bicategory.inclusion_map_comp_aux + def category_theory.free_bicategory.inclusion_path + def category_theory.free_bicategory.inclusion_path_aux + def category_theory.free_bicategory.normalize + def category_theory.free_bicategory.normalize_aux + theorem category_theory.free_bicategory.normalize_aux_congr + theorem category_theory.free_bicategory.normalize_aux_nil_comp + def category_theory.free_bicategory.normalize_equiv + def category_theory.free_bicategory.normalize_iso + theorem category_theory.free_bicategory.normalize_naturality + def category_theory.free_bicategory.normalize_unit_iso + def category_theory.free_bicategory.preinclusion Modified src/category_theory/bicategory/free.lean +/- theorem category_theory.free_bicategory.comp_def +/- theorem category_theory.free_bicategory.id_def Modified src/category_theory/bicategory/locally_discrete.lean Modified src/category_theory/eq_to_hom.lean + theorem category_theory.dcongr_arg 2022-03-29 07:35:08 7b8b8f1 feat(set_theory/ordinal_arithmetic): Characterize principal multiplicative ordinals (#11701) Two lemmas were renamed in the process: - `mul_lt_omega` → `principal_mul_omega` - `opow_omega` → `principal_opow_omega` Various others were moved to `principal.lean`. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.mul_lt_omega - theorem ordinal.mul_lt_omega_opow - theorem ordinal.mul_omega - theorem ordinal.mul_omega_dvd + theorem ordinal.mul_two - theorem ordinal.opow_lt_omega - theorem ordinal.opow_omega +/- theorem ordinal.sup_opow_nat Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/principal.lean + theorem ordinal.mul_eq_opow_log_succ + theorem ordinal.mul_lt_omega_opow + theorem ordinal.mul_omega + theorem ordinal.mul_omega_dvd + theorem ordinal.mul_omega_opow_opow + theorem ordinal.opow_omega - theorem ordinal.opow_principal_add_is_principal_add + theorem ordinal.opow_principal_add_of_principal_add + theorem ordinal.principal_add_iff_zero_or_omega_opow - theorem ordinal.principal_add_iff_zero_or_omega_power + theorem ordinal.principal_add_of_principal_mul + theorem ordinal.principal_add_of_principal_mul_opow + theorem ordinal.principal_mul_iff_le_two_or_omega_opow_opow + theorem ordinal.principal_mul_iff_mul_left_eq + theorem ordinal.principal_mul_is_limit + theorem ordinal.principal_mul_of_le_two + theorem ordinal.principal_mul_omega + theorem ordinal.principal_mul_omega_opow_opow + theorem ordinal.principal_mul_one + theorem ordinal.principal_mul_two + theorem ordinal.principal_opow_omega 2022-03-29 05:57:42 ce3cece feat(measure_theory/constructions/borel_space): add `borelize` tactic (#12844) ESTIMATED CHANGES Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/box_integral/integrability.lean Modified src/analysis/complex/abs_max.lean Modified src/analysis/complex/liouville.lean Modified src/analysis/complex/removable_singularity.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/metric_space/hausdorff_dimension.lean 2022-03-29 05:57:41 5fb7b7b feat(set_theory/{ordinal_arithmetic, game/nim}): Minimum excluded ordinal (#12659) We define `mex` and `bmex`, and use the former to golf the proof of Sprague-Grundy. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean - theorem cardinal.mk_ordinal_out Modified src/set_theory/game/nim.lean +/- theorem pgame.grundy_value_nim_add_nim - def pgame.nonmoves - theorem pgame.nonmoves_nonempty Modified src/set_theory/ordinal.lean + theorem cardinal.mk_ordinal_out Modified src/set_theory/ordinal_arithmetic.lean + def ordinal.bmex + theorem ordinal.bmex_le_blsub + theorem ordinal.bmex_le_of_ne + theorem ordinal.bmex_lt_ord_succ_card + theorem ordinal.bmex_monotone + theorem ordinal.bmex_not_mem_brange + theorem ordinal.exists_of_lt_bmex + theorem ordinal.exists_of_lt_mex - theorem ordinal.lsub_nmem_range + theorem ordinal.lsub_not_mem_range + def ordinal.mex + theorem ordinal.mex_le_lsub + theorem ordinal.mex_le_of_ne + theorem ordinal.mex_lt_ord_succ_mk + theorem ordinal.mex_monotone + theorem ordinal.mex_not_mem_range + theorem ordinal.ne_bmex + theorem ordinal.ne_mex + theorem ordinal.nonempty_compl_range 2022-03-29 04:19:18 5fcad21 feat(number_theory/frobenius_number): Frobenius numbers (#9729) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.mem_closure_pair Modified src/group_theory/submonoid/membership.lean + theorem submonoid.mem_closure_pair Added src/number_theory/frobenius_number.lean + def is_frobenius_number + theorem is_frobenius_number_pair + theorem nat.coprime.mul_add_mul_ne_mul 2022-03-28 23:54:09 7fea719 feat(data/set/basic): Laws for n-ary image (#13011) Prove left/right commutativity, distributivity of `set.image2` in the style of `set.image2_assoc`. Also add `forall₃_imp` and `Exists₃.imp`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.image2_comm + theorem set.image2_eq_empty_iff + theorem set.image2_left_comm + theorem set.image2_nonempty_iff + theorem set.image2_right_comm + theorem set.image3_mono + theorem set.image_image2_distrib + theorem set.image_image2_distrib_left + theorem set.image_image2_distrib_right +/- theorem set.nonempty.image2 Modified src/logic/basic.lean +/- theorem Exists.imp +/- theorem Exists₂.imp + theorem Exists₃.imp +/- theorem exists₂_congr +/- theorem forall_imp +/- theorem forall₂_imp + theorem forall₃_imp 2022-03-28 23:54:08 9480029 chore(data/{nat,int,rat}/cast): add bundled version of `cast_id` lemmas (#13001) ESTIMATED CHANGES Modified src/data/int/cast.lean + theorem int.cast_add_hom_int + theorem int.cast_ring_hom_int Modified src/data/nat/cast.lean + theorem nat.cast_ring_hom_nat + theorem ring_hom.eq_nat_cast' Modified src/data/rat/cast.lean + theorem rat.cast_hom_rat 2022-03-28 23:54:07 8c9dee1 feat(algebra/field_power): add min_le_of_zpow_le_max (#12915) ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem min_le_of_zpow_le_max 2022-03-28 22:26:18 223d9a1 feat(group_theory/quotient_group): maps of quotients by powers of integers induced by group homomorphisms (#12811) ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + def quotient_group.equiv_quotient_zpow_of_equiv + def quotient_group.hom_quotient_zpow_of_hom + theorem quotient_group.hom_quotient_zpow_of_hom_right_inverse 2022-03-28 22:26:16 1a2182c feat(group_theory/complement): Transversals as functions (#12732) This PR adds interpretations of transversals as functions mapping elements of `G` to the chosen coset representative. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.mem_left_transversals.inv_mul_to_fun_mem + theorem subgroup.mem_left_transversals.inv_to_fun_mul_mem + theorem subgroup.mem_left_transversals.mk'_to_equiv + theorem subgroup.mem_right_transversals.mk'_to_equiv + theorem subgroup.mem_right_transversals.mul_inv_to_fun_mem + theorem subgroup.mem_right_transversals.to_fun_mul_inv_mem 2022-03-28 20:38:27 40b142e chore(analysis/*): move matrix definitions into their own file and generalize (#13007) This makes it much easier to relax the typeclasses as needed. `norm_matrix_le_iff` has been renamed to `matrix.norm_le_iff`, the rest of the lemmas have just had their typeclass arguments weakened. No proofs have changed. The `matrix.normed_space` instance is now of the form `normed_space R (matrix n m α)` instead of `normed_space α (matrix n m α)`. ESTIMATED CHANGES Added src/analysis/matrix.lean + theorem matrix.norm_entry_le_entrywise_sup_norm + theorem matrix.norm_le_iff + theorem matrix.norm_lt_iff Modified src/analysis/normed/normed_field.lean - def matrix.normed_group - def matrix.semi_normed_group - theorem norm_matrix_le_iff - theorem norm_matrix_lt_iff Modified src/analysis/normed_space/basic.lean - theorem matrix.norm_entry_le_entrywise_sup_norm - def matrix.normed_space Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/star/basic.lean - theorem matrix.entrywise_sup_norm_star_eq_norm Modified src/analysis/normed_space/star/matrix.lean + theorem matrix.entrywise_sup_norm_star_eq_norm Modified src/number_theory/modular.lean 2022-03-28 20:38:26 ea97ca6 feat(group_theory/group_action): add `commute.smul_{left,right}[_iff]` lemmas (#13003) `(r • a) * b = b * (r • a)` follows trivially from `smul_mul_assoc` and `mul_smul_comm` ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean + theorem commute.smul_left + theorem commute.smul_right Modified src/group_theory/group_action/group.lean + theorem commute.smul_left_iff + theorem commute.smul_left_iff₀ + theorem commute.smul_right_iff + theorem commute.smul_right_iff₀ 2022-03-28 20:38:25 261a195 feat(group_theory/group_action/opposite): Add `smul_eq_mul_unop` (#12995) This PR adds a simp-lemma `smul_eq_mul_unop`, similar to `op_smul_eq_mul` and `smul_eq_mul`. ESTIMATED CHANGES Modified src/group_theory/group_action/opposite.lean + theorem mul_opposite.smul_eq_mul_unop +/- theorem op_smul_eq_mul 2022-03-28 16:49:23 6fe0c3b refactor(algebra/group/to_additive + files containing even/odd): move many lemmas involving even/odd to the same file (#12882) This is the first step in refactoring the definition of `even` to be the `to_additive` of `square`. This PR simply gathers together many (though not all) lemmas that involve `even` or `odd` in their assumptions. The choice of which lemmas to migrate to the file `algebra.parity` was dictated mostly by whether importing `algebra.parity` in the current home would create a cyclic import. The only change that is not a simple shift from a file to another one is the addition in `to_additive` for support to change `square` in a multiplicative name to `even` in an additive name. The change to the test file `test.ring` is due to the fact that the definition of `odd` was no longer imported by the file. ESTIMATED CHANGES Modified src/algebra/field_power.lean - theorem abs_zpow_bit0 - theorem even.abs_zpow - theorem even.zpow_abs - theorem even.zpow_neg - theorem even.zpow_nonneg - theorem even.zpow_pos - theorem odd.zpow_neg - theorem odd.zpow_nonneg - theorem odd.zpow_nonpos - theorem odd.zpow_pos - theorem zpow_bit0_abs Modified src/algebra/group/to_additive.lean Modified src/algebra/group_power/lemmas.lean - theorem even.pow_abs - theorem even.pow_nonneg - theorem even.pow_pos - theorem even.pow_pos_iff - theorem odd.pow_neg - theorem odd.pow_neg_iff - theorem odd.pow_nonneg_iff - theorem odd.pow_nonpos - theorem odd.pow_nonpos_iff - theorem odd.pow_pos_iff - theorem odd.strict_mono_pow - theorem pow_bit0_abs Modified src/algebra/order/ring.lean - theorem even_abs - theorem odd_abs Modified src/algebra/parity.lean + theorem abs_zpow_bit0 + theorem even.abs_zpow + theorem even.pow_abs + theorem even.pow_nonneg + theorem even.pow_pos + theorem even.pow_pos_iff + theorem even.zpow_abs + theorem even.zpow_neg + theorem even.zpow_nonneg + theorem even.zpow_pos + def even + theorem even_abs + theorem even_bit0 + theorem even_iff_two_dvd + theorem even_neg + theorem fintype.card_fin_even + theorem odd.neg + theorem odd.pow_neg + theorem odd.pow_neg_iff + theorem odd.pow_nonneg_iff + theorem odd.pow_nonpos + theorem odd.pow_nonpos_iff + theorem odd.pow_pos_iff + theorem odd.strict_mono_pow + theorem odd.zpow_neg + theorem odd.zpow_nonneg + theorem odd.zpow_nonpos + theorem odd.zpow_pos + def odd + theorem odd_abs + theorem odd_bit1 + theorem odd_neg + theorem pow_bit0_abs + theorem range_two_mul + theorem range_two_mul_add_one + theorem zpow_bit0_abs Modified src/algebra/ring/basic.lean - def even - theorem even_bit0 - theorem even_iff_two_dvd - theorem even_neg - theorem odd.neg - def odd - theorem odd_bit1 - theorem odd_neg - theorem range_two_mul - theorem range_two_mul_add_one Modified src/data/fintype/basic.lean - theorem fintype.card_fin_even Modified src/data/nat/prime.lean Modified test/ring.lean 2022-03-28 16:49:22 958f6b0 refactor(measure_theory/group/fundamental_domain): allow `null_measurable_set`s (#12005) ESTIMATED CHANGES Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.image_of_equiv + theorem measure_theory.is_fundamental_domain.lintegral_eq_tsum - theorem measure_theory.is_fundamental_domain.measurable_set_smul +/- theorem measure_theory.is_fundamental_domain.mk' +/- theorem measure_theory.is_fundamental_domain.null_measurable_set_smul +/- theorem measure_theory.is_fundamental_domain.pairwise_ae_disjoint_of_ac + theorem measure_theory.is_fundamental_domain.preimage_of_equiv + theorem measure_theory.is_fundamental_domain.restrict_restrict + theorem measure_theory.is_fundamental_domain.smul + theorem measure_theory.is_fundamental_domain.smul_of_comm + theorem measure_theory.is_fundamental_domain.sum_restrict Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/measure/haar_quotient.lean - theorem measure_theory.is_fundamental_domain.smul 2022-03-28 15:03:16 abaabc8 chore(algebra/group_power/lemmas): turn `[zn]smul` lemmas into instances (#13002) This adds new instances such that: * `mul_[zn]smul_assoc` is `←smul_mul_assoc` * `mul_[zn]smul_left` is `←mul_smul_comm` This also makes `noncomm_ring` slightly smarter, and able to handle scalar actions by `nat`. Thanks to Christopher, this generalizes these instances to non-associative and non-unital rings. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean - theorem mul_nsmul_assoc - theorem mul_nsmul_left - theorem mul_zsmul_assoc - theorem mul_zsmul_left Modified src/tactic/noncomm_ring.lean Modified test/noncomm_ring.lean 2022-03-28 15:03:14 0e1387b feat(category_theory): the category of small categories has all small limits (#12979) ESTIMATED CHANGES Modified src/category_theory/category/Cat.lean + theorem category_theory.Cat.comp_map + theorem category_theory.Cat.comp_obj + theorem category_theory.Cat.id_map Added src/category_theory/category/Cat/limit.lean + def category_theory.Cat.has_limits.hom_diagram + def category_theory.Cat.has_limits.limit_cone + def category_theory.Cat.has_limits.limit_cone_X + def category_theory.Cat.has_limits.limit_cone_is_limit + def category_theory.Cat.has_limits.limit_cone_lift + theorem category_theory.Cat.has_limits.limit_π_hom_diagram_eq_to_hom Modified src/category_theory/grothendieck.lean 2022-03-28 15:03:13 31e5ae2 feat(data/list/cycle): Define the empty cycle (#12967) Also clean the file up somewhat, and add various `simp` lemmas. ESTIMATED CHANGES Modified src/data/list/cycle.lean + theorem cycle.coe_eq_nil + theorem cycle.coe_nil + theorem cycle.coe_to_multiset + theorem cycle.empty_eq + theorem cycle.induction_on +/- theorem cycle.length_coe + theorem cycle.length_nil +/- theorem cycle.length_nontrivial +/- theorem cycle.length_reverse +/- theorem cycle.length_subsingleton_iff + theorem cycle.lists_coe + theorem cycle.lists_nil + theorem cycle.map_coe + theorem cycle.map_eq_nil + theorem cycle.map_nil +/- theorem cycle.mem_coe_iff +/- theorem cycle.mem_lists_iff_coe_eq +/- theorem cycle.mem_reverse_iff +/- theorem cycle.mk'_eq_coe +/- theorem cycle.mk_eq_coe +/- theorem cycle.next_mem + def cycle.nil + theorem cycle.nil_to_finset + theorem cycle.nil_to_multiset +/- theorem cycle.nodup.nontrivial_iff +/- theorem cycle.nodup_coe_iff + theorem cycle.nodup_nil +/- theorem cycle.nodup_reverse_iff +/- theorem cycle.nontrivial_reverse_iff + theorem cycle.not_mem_nil +/- theorem cycle.prev_mem +/- theorem cycle.reverse_coe + theorem cycle.reverse_nil +/- theorem cycle.reverse_reverse +/- theorem cycle.subsingleton.nodup + theorem cycle.subsingleton_nil +/- theorem cycle.subsingleton_reverse_iff 2022-03-28 14:30:41 0c6f0c2 feat(ring_theory/dedekind_domain/ideal): add lemmas about sup of ideal with irreducible (#12859) These results were originally in #9345. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean + theorem irreducible_pow_sup + theorem irreducible_pow_sup_of_ge + theorem irreducible_pow_sup_of_le +/- theorem prod_normalized_factors_eq_self 2022-03-28 11:39:00 4ee988d chore(algebra/homology/homotopy): cleanup (#12998) Correcting a name and some whitespace. ESTIMATED CHANGES Modified src/algebra/homology/homotopy.lean +/- def homotopy.add + theorem prev_d_comp_right - theorem to_prev'_comp_right 2022-03-28 11:38:59 eba31b5 feat(algebra/homology): some elementwise lemmas (#12997) ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean Modified src/algebra/homology/image_to_kernel.lean Modified src/category_theory/concrete_category/elementwise.lean Modified src/category_theory/subobject/basic.lean Modified src/category_theory/subobject/limits.lean 2022-03-28 11:38:58 dacf049 feat(algebra/*): coe_to_equiv_symm simp lemmas (#12996) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.to_equiv_eq_coe Modified src/algebra/hom/equiv.lean +/- theorem mul_equiv.coe_to_equiv + theorem mul_equiv.to_equiv_eq_coe Modified src/algebra/module/equiv.lean + theorem linear_equiv.coe_to_equiv_symm Modified src/group_theory/commensurable.lean 2022-03-28 11:38:57 f0c15be feat(measure_theory/functions/strongly_measurable): almost everywhere strongly measurable functions (#12985) A function is almost everywhere strongly measurable if it is almost everywhere the pointwise limit of a sequence of simple functions. These are the functions that can be integrated in the most general version of the Bochner integral. As a prerequisite for the refactor of the Bochner integral, we define almost strongly measurable functions and build a comprehensive API for them, gathering in the file `strongly_measurable.lean` all facts that will be needed for the refactor. The API does not claim to be complete, but it is already pretty big. ESTIMATED CHANGES Modified src/measure_theory/function/strongly_measurable.lean + theorem ae_measurable.ae_strongly_measurable + theorem ae_strongly_measurable_Union_iff + theorem ae_strongly_measurable_add_measure_iff + theorem ae_strongly_measurable_congr + theorem ae_strongly_measurable_const_smul_iff + theorem ae_strongly_measurable_const_smul_iff₀ + theorem ae_strongly_measurable_id + theorem ae_strongly_measurable_iff_ae_measurable + theorem ae_strongly_measurable_iff_ae_measurable_separable + theorem ae_strongly_measurable_indicator_iff + theorem ae_strongly_measurable_of_ae_strongly_measurable_trim + theorem ae_strongly_measurable_of_tendsto_ae + theorem ae_strongly_measurable_smul_const_iff + theorem ae_strongly_measurable_sum_measure_iff + theorem ae_strongly_measurable_union_iff + theorem ae_strongly_measurable_with_density_iff + theorem continuous.ae_strongly_measurable + theorem continuous.comp_ae_strongly_measurable + theorem continuous.comp_strongly_measurable + theorem continuous.strongly_measurable + theorem embedding.ae_strongly_measurable_comp_iff + theorem embedding.comp_strongly_measurable_iff + theorem exists_strongly_measurable_limit_of_tendsto_ae + theorem finset.ae_strongly_measurable_prod' + theorem finset.ae_strongly_measurable_prod + theorem finset.strongly_measurable_prod' + theorem finset.strongly_measurable_prod + theorem list.ae_strongly_measurable_prod' + theorem list.ae_strongly_measurable_prod + theorem list.strongly_measurable_prod' + theorem list.strongly_measurable_prod + theorem measurable.ae_strongly_measurable +/- theorem measurable.strongly_measurable + theorem measurable_embedding.ae_strongly_measurable_map_iff + theorem measurable_embedding.exists_strongly_measurable_extend + theorem measurable_embedding.strongly_measurable_extend + theorem measure_theory.ae_measurable_zero_measure + theorem measure_theory.ae_strongly_measurable.add_measure + theorem measure_theory.ae_strongly_measurable.ae_eq_mk + theorem measure_theory.ae_strongly_measurable.ae_mem_imp_eq_mk + theorem measure_theory.ae_strongly_measurable.apply_continuous_linear_map + theorem measure_theory.ae_strongly_measurable.comp_measurable + theorem measure_theory.ae_strongly_measurable.congr + theorem measure_theory.ae_strongly_measurable.is_separable_ae_range + theorem measure_theory.ae_strongly_measurable.measurable_mk + theorem measure_theory.ae_strongly_measurable.mono_measure + theorem measure_theory.ae_strongly_measurable.mono_set + theorem measure_theory.ae_strongly_measurable.smul_measure + theorem measure_theory.ae_strongly_measurable.strongly_measurable_mk + theorem measure_theory.ae_strongly_measurable.sum_measure + def measure_theory.ae_strongly_measurable + theorem measure_theory.ae_strongly_measurable_const + theorem measure_theory.ae_strongly_measurable_one +/- theorem measure_theory.measurable_uncurry_of_continuous_of_measurable + theorem measure_theory.measure_preserving.ae_strongly_measurable_comp_iff + theorem measure_theory.simple_func.ae_strongly_measurable + theorem measure_theory.strongly_measurable.ae_strongly_measurable + theorem measure_theory.strongly_measurable.comp_measurable + theorem measure_theory.strongly_measurable.const_mul + theorem measure_theory.strongly_measurable.is_separable_range + theorem measure_theory.strongly_measurable.measurable_set_eq_fun + theorem measure_theory.strongly_measurable.measurable_set_le + theorem measure_theory.strongly_measurable.measurable_set_lt + theorem measure_theory.strongly_measurable.measurable_set_mul_support + theorem measure_theory.strongly_measurable.mul_const + theorem measure_theory.strongly_measurable.of_uncurry_left + theorem measure_theory.strongly_measurable.of_uncurry_right + theorem measure_theory.strongly_measurable.separable_space_range_union_singleton + theorem measure_theory.strongly_measurable_const' - theorem measure_theory.strongly_measurable_id - theorem measure_theory.strongly_measurable_iff_measurable + theorem measure_theory.strongly_measurable_of_is_empty + theorem measure_theory.strongly_measurable_one + theorem measure_theory.strongly_measurable_uncurry_of_continuous_of_strongly_measurable + theorem measure_theory.subsingleton.ae_strongly_measurable' + theorem measure_theory.subsingleton.ae_strongly_measurable + theorem measure_theory.subsingleton.strongly_measurable' +/- theorem measure_theory.subsingleton.strongly_measurable + theorem multiset.ae_strongly_measurable_prod' + theorem multiset.ae_strongly_measurable_prod + theorem multiset.strongly_measurable_prod' + theorem multiset.strongly_measurable_prod + theorem strongly_measurable.apply_continuous_linear_map + theorem strongly_measurable_const_smul_iff + theorem strongly_measurable_const_smul_iff₀ + theorem strongly_measurable_id + theorem strongly_measurable_iff_measurable + theorem strongly_measurable_iff_measurable_separable + theorem strongly_measurable_of_restrict_of_restrict_compl + theorem strongly_measurable_of_strongly_measurable_union_cover + theorem strongly_measurable_of_tendsto Modified src/probability/stopping.lean +/- theorem measure_theory.adapted.prog_measurable_of_continuous 2022-03-28 11:38:56 fd2c6c4 chore(data/polynomial/ring_division): remove nontrivial assumptions (#12984) Additionally, this removes: * some `polynomial.monic` assumptions that can be handled by casing instead * the explicit `R` argument from `is_field.to_field R hR` ESTIMATED CHANGES Modified src/algebra/field/basic.lean + theorem is_field.nontrivial + theorem not_is_field_of_subsingleton Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/data/polynomial/basic.lean + theorem polynomial.nontrivial_iff Modified src/data/polynomial/div.lean +/- theorem polynomial.not_is_field +/- theorem polynomial.sum_mod_by_monic_coeff Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.add_mod_by_monic +/- theorem polynomial.mod_by_monic_eq_of_dvd_sub +/- def polynomial.mod_by_monic_hom +/- theorem polynomial.smul_mod_by_monic Modified src/field_theory/cardinality.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/ring_theory/adjoin_root.lean +/- theorem adjoin_root.mk_left_inverse +/- theorem adjoin_root.mk_surjective +/- def adjoin_root.mod_by_monic_hom +/- theorem adjoin_root.mod_by_monic_hom_mk +/- def adjoin_root.power_basis' +/- def adjoin_root.power_basis_aux' Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/polynomial/basic.lean +/- theorem polynomial.ker_mod_by_monic_hom +/- theorem polynomial.mem_ker_mod_by_monic Modified src/ring_theory/principal_ideal_domain.lean 2022-03-28 11:38:55 c0421e7 feat({ring_theory,group_theory}/localization): add some small lemmas for localisation API (#12861) Add the following: * `sub_mk`: a/b - c/d = (ad - bc)/(bd) * `mk_pow`: (a/b)^n = a^n/b^n * `mk_int_cast`, `mk_nat_cast`: m = m/1 for integer/natural number m. ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean + theorem localization.mk_pow Modified src/ring_theory/localization/basic.lean + theorem localization.mk_algebra_map + theorem localization.mk_int_cast + theorem localization.mk_nat_cast + theorem localization.sub_mk 2022-03-28 11:38:54 1ebb206 feat(ring_theory/localization): lemmas about `Frac(R)`-spans (#12425) A couple of lemmas relating spans in the localization of `R` to spans in `R` itself. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean + theorem submodule.map_mem_span_algebra_map_image + theorem submodule.span_algebra_map_image + theorem submodule.span_algebra_map_image_of_tower Modified src/ring_theory/localization/integral.lean + theorem is_fraction_ring.ideal_span_singleton_map_subset Modified src/ring_theory/localization/submodule.lean + theorem is_localization.mem_span_iff + theorem is_localization.mem_span_map 2022-03-28 09:53:37 e48f2e8 doc(data/polynomial/field_division): fix broken docstring links (#12981) ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean 2022-03-28 09:53:36 d31410a doc({linear_algebra,matrix}/charpoly): add crosslinks (#12980) This way someone coming from `undergrad.yaml` has an easy way to jump between the two statements. ESTIMATED CHANGES Modified src/linear_algebra/charpoly/basic.lean Modified src/linear_algebra/matrix/charpoly/basic.lean 2022-03-28 09:53:35 597cbf1 feat(topology/continuous_on): add `set.maps_to.closure_of_continuous_on` (#12975) ESTIMATED CHANGES Modified src/topology/continuous_on.lean + theorem set.maps_to.closure_of_continuous_on + theorem set.maps_to.closure_of_continuous_within_at 2022-03-28 09:53:34 ff72aa2 feat(data/list/big_operators): add multiplicative versions (#12966) * add `list.length_pos_of_one_lt_prod`, generate `list.length_pos_of_sum_pos` using `to_additive`; * add `list.length_pos_of_prod_lt_one` and its additive version. ESTIMATED CHANGES Modified src/data/list/big_operators.lean + theorem list.length_pos_of_one_lt_prod + theorem list.length_pos_of_prod_lt_one - theorem list.length_pos_of_sum_pos 2022-03-28 09:53:33 443c239 feat(data/polynomial/ring_division): `mem_root_set_iff` (#12963) ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.mem_root_set_iff' + theorem polynomial.mem_root_set_iff 2022-03-28 09:53:31 162d83f chore(data/matrix/basic): square matrices over a non-unital ring form a non-unital ring (#12913) ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.conj_transpose_neg 2022-03-28 09:53:30 c030dd2 feat(set_theory/cardinal): `cardinal.to_nat` is order-preserving on finite cardinals (#12763) This PR proves that `cardinal.to_nat` is order-preserving on finite cardinals. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.to_nat_le_iff_le_of_lt_omega + theorem cardinal.to_nat_le_of_le_of_lt_omega + theorem cardinal.to_nat_lt_iff_lt_of_lt_omega + theorem cardinal.to_nat_lt_of_lt_of_lt_omega 2022-03-28 09:53:29 2873b7a feat(set_theory/cofinality): Lemmas relating `cof` to `lsub` and `blsub` (#12316) ESTIMATED CHANGES Modified src/set_theory/cofinality.lean + theorem ordinal.cof_blsub_le + theorem ordinal.cof_lsub_le + theorem ordinal.exists_blsub_cof + theorem ordinal.exists_lsub_cof + theorem ordinal.le_cof_iff_blsub + theorem ordinal.le_cof_iff_lsub + theorem ordinal.ord_cof_le 2022-03-28 09:53:28 b7d6b3a feat(topology/continuous/algebra) : giving `C(α, M)` a `has_continuous_mul` and a `has_continuous_smul` structure (#11261) Here, `α` is a locally compact space. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean 2022-03-28 08:03:19 7711012 feat(order/hom/*): equivalences mapping morphisms to their dual (#12888) Add missing `whatever_hom.dual` equivalences. ESTIMATED CHANGES Modified src/order/hom/basic.lean + theorem order_hom.dual_comp + theorem order_hom.dual_id + theorem order_hom.symm_dual_comp + theorem order_hom.symm_dual_id Modified src/order/hom/bounded.lean + theorem bot_hom.dual_comp + theorem bot_hom.dual_id + theorem bot_hom.symm_dual_comp + theorem bot_hom.symm_dual_id + theorem bounded_order_hom.dual_comp + theorem bounded_order_hom.dual_id + theorem bounded_order_hom.symm_dual_comp + theorem bounded_order_hom.symm_dual_id + theorem top_hom.dual_comp + theorem top_hom.dual_id + theorem top_hom.symm_dual_comp + theorem top_hom.symm_dual_id Modified src/order/hom/complete_lattice.lean + theorem Inf_hom.dual_comp + theorem Inf_hom.dual_id + theorem Inf_hom.symm_dual_comp + theorem Inf_hom.symm_dual_id + theorem Sup_hom.dual_comp + theorem Sup_hom.dual_id + theorem Sup_hom.symm_dual_comp + theorem Sup_hom.symm_dual_id + theorem complete_lattice_hom.dual_comp + theorem complete_lattice_hom.dual_id + theorem complete_lattice_hom.symm_dual_comp + theorem complete_lattice_hom.symm_dual_id Modified src/order/hom/lattice.lean + theorem bounded_lattice_hom.dual_comp + theorem bounded_lattice_hom.dual_id + theorem bounded_lattice_hom.symm_dual_comp + theorem bounded_lattice_hom.symm_dual_id + theorem inf_hom.dual_comp + theorem inf_hom.dual_id + theorem inf_hom.symm_dual_comp + theorem inf_hom.symm_dual_id + theorem inf_top_hom.dual_comp + theorem inf_top_hom.dual_id + theorem inf_top_hom.symm_dual_comp + theorem inf_top_hom.symm_dual_id + theorem lattice_hom.dual_comp + theorem lattice_hom.dual_id + theorem lattice_hom.symm_dual_comp + theorem lattice_hom.symm_dual_id + def sup_bot_hom.dual + theorem sup_bot_hom.dual_comp + theorem sup_bot_hom.dual_id + theorem sup_bot_hom.symm_dual_comp + theorem sup_bot_hom.symm_dual_id + theorem sup_hom.dual_comp + theorem sup_hom.dual_id + theorem sup_hom.symm_dual_comp + theorem sup_hom.symm_dual_id 2022-03-28 06:13:19 587af99 chore(test/matrix): clean up an unused argument (#12986) these aren't caught by linters as examples don't generate declarations ESTIMATED CHANGES Modified test/matrix.lean 2022-03-28 06:13:17 562bbf5 feat(measure_theory/measure): add some simp lemmas, golf (#12974) * add `top_add`, `add_top`, `sub_top`, `zero_sub`, `sub_self`; * golf the proof of `restrict_sub_eq_restrict_sub_restrict`. ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.add_top + theorem measure_theory.measure.top_add Modified src/measure_theory/measure/sub.lean + theorem measure_theory.measure.sub_le_of_le_add + theorem measure_theory.measure.sub_self + theorem measure_theory.measure.sub_top + theorem measure_theory.measure.zero_sub 2022-03-28 06:13:16 4b05a42 feat(data/list/pairwise): `pairwise_of_forall_mem_list` (#12968) A relation holds pairwise on a list when it does on any two of its elements. ESTIMATED CHANGES Modified src/data/list/pairwise.lean + theorem list.pairwise_of_forall_mem_list 2022-03-28 06:13:15 73a9c27 chore(analysis/analytic/basic): golf (#12965) Golf a 1-line proof, drop an unneeded assumption. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean +/- theorem has_fpower_series_on_ball.sum 2022-03-28 06:13:14 33afea8 feat(analysis/normed_space): generalize some lemmas (#12959) * add `metric.closed_ball_zero'`, a version of `metric.closed_ball_zero` for a pseudo metric space; * merge `metric.closed_ball_inf_dist_compl_subset_closure'` with `metric.closed_ball_inf_dist_compl_subset_closure`, drop an unneeded assumption `s ≠ univ`; * assume `r ≠ 0` instead of `0 < r` in `closure_ball`, `frontier_ball`, and `euclidean.closure_ball`. ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/complex/abs_max.lean Modified src/analysis/inner_product_space/euclidean_dist.lean +/- theorem euclidean.closure_ball Modified src/analysis/normed_space/basic.lean +/- theorem closure_ball +/- theorem frontier_ball Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/riesz_lemma.lean - theorem metric.closed_ball_inf_dist_compl_subset_closure' +/- theorem metric.closed_ball_inf_dist_compl_subset_closure Modified src/topology/metric_space/basic.lean + theorem metric.closed_ball_zero' +/- theorem metric.mem_of_closed' 2022-03-28 06:13:12 c65d807 feat(data/polynomial/erase_lead + data/polynomial/reverse): rename an old lemma, add a stronger one (#12909) Taking advantage of nat-subtraction in edge cases, a lemma that previously proved `x ≤ y` actually holds with `x ≤ y - 1`. Thus, I renamed the old lemma to `original_name_aux` and `original_name` is now the name of the new lemma. Since this lemma was used in a different file, I used the `_aux` name in the other file. Note that the `_aux` lemma is currently an ingredient in the proof of the stronger lemma. It may be possible to have a simple direct proof of the stronger one that avoids using the `_aux` lemma, but I have not given this any thought. ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean +/- theorem polynomial.erase_lead_nat_degree_le + theorem polynomial.erase_lead_nat_degree_le_aux Modified src/data/polynomial/reverse.lean 2022-03-28 06:13:11 7a1e0f2 feat(analysis/inner_product_space): an inner product space is strictly convex (#12790) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean 2022-03-28 05:04:36 1e72d86 chore(data/polynomial/degree/lemmas + data/polynomial/ring_division): move lemmas, reduce assumptions, golf (#12858) This PR takes advantage of the reduced assumptions that are a consequence of #12854. Again, I moved two lemmas from their current location to a different file, where the typeclass assumptions make more sense, ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.leading_coeff_comp + theorem polynomial.nat_degree_comp Modified src/data/polynomial/eval.lean Modified src/data/polynomial/ring_division.lean - theorem polynomial.leading_coeff_comp - theorem polynomial.nat_degree_comp 2022-03-27 19:56:25 e5cd2ea feat(analysis/von_neumann): concrete and abstract definitions of a von Neumann algebra (#12329) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean + theorem set.algebra_map_mem_centralizer + def subalgebra.centralizer + theorem subalgebra.centralizer_le + theorem subalgebra.centralizer_univ + theorem subalgebra.coe_centralizer + theorem subalgebra.mem_centralizer_iff Added src/algebra/star/subalgebra.lean + def star_subalgebra.centralizer + theorem star_subalgebra.centralizer_le + theorem star_subalgebra.coe_centralizer + theorem star_subalgebra.mem_centralizer_iff + structure star_subalgebra Modified src/analysis/inner_product_space/adjoint.lean Added src/analysis/von_neumann_algebra/basic.lean + structure von_neumann_algebra Modified src/group_theory/submonoid/basic.lean Modified src/group_theory/submonoid/centralizer.lean + theorem submonoid.centralizer_le - theorem submonoid.centralizer_subset +/- theorem submonoid.coe_centralizer Modified src/ring_theory/subsemiring/basic.lean + def subsemiring.centralizer + theorem subsemiring.centralizer_le + theorem subsemiring.centralizer_to_submonoid + theorem subsemiring.centralizer_univ + theorem subsemiring.coe_centralizer + theorem subsemiring.mem_centralizer_iff 2022-03-27 15:52:15 1494a9b feat(data/zmod/basic): add `int_coe_eq_int_coe_iff_dvd_sub` (#12944) This adds the following API lemma. ``` lemma int_coe_eq_int_coe_iff_dvd_sub (a b : ℤ) (c : ℕ) : (a : zmod c) = ↑b ↔ ↑c ∣ b-a ``` extending the already present version with b = 0. [(Zulip discussion)](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Missing.20zmod.20lemma.3F) ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.int_coe_eq_int_coe_iff_dvd_sub 2022-03-27 10:05:55 d620ad3 feat(measure_theory/measure/measure_space): remove measurable_set assumption in ae_measurable.subtype_mk (#12978) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem ae_measurable.exists_ae_eq_range_subset +/- theorem ae_measurable.subtype_mk 2022-03-27 04:09:23 2c6df07 chore(model_theory/*): Split up big model theory files (#12918) Splits up `model_theory/basic` into `model_theory/basic`, `model_theory/language_maps`, and `model_theory/bundled`. Splits up `model_theory/terms_and_formulas` into `model_theory/syntax`, `model_theory/semantics`, and `model_theory/satisfiability`. Adds to the module docs of these files. ESTIMATED CHANGES Modified src/model_theory/basic.lean - def first_order.language.Lequiv.add_empty_constants - structure first_order.language.Lequiv - def first_order.language.Lhom.add_constants - def first_order.language.Lhom.comp - theorem first_order.language.Lhom.comp_assoc - theorem first_order.language.Lhom.comp_id - theorem first_order.language.Lhom.comp_sum_elim - def first_order.language.Lhom.constants_on_map - theorem first_order.language.Lhom.id_comp - theorem first_order.language.Lhom.map_constants_comp_sum_inl - theorem first_order.language.Lhom.sum_elim_comp_inl - theorem first_order.language.Lhom.sum_elim_comp_inr - theorem first_order.language.Lhom.sum_elim_inl_inr - def first_order.language.Lhom.sum_map - theorem first_order.language.Lhom.sum_map_comp_inl - theorem first_order.language.Lhom.sum_map_comp_inr - structure first_order.language.Lhom - def first_order.language.Lhom_with_constants - def first_order.language.Lhom_with_constants_map - theorem first_order.language.coe_con - def first_order.language.constants_on.Structure - def first_order.language.constants_on - theorem first_order.language.constants_on_constants - def first_order.language.constants_on_functions - theorem first_order.language.constants_on_map_is_expansion_on - def first_order.language.with_constants Added src/model_theory/bundled.lean Modified src/model_theory/definability.lean Modified src/model_theory/elementary_maps.lean Modified src/model_theory/fraisse.lean Added src/model_theory/language_map.lean + def first_order.language.Lequiv.add_empty_constants + structure first_order.language.Lequiv + def first_order.language.Lhom.add_constants + def first_order.language.Lhom.comp + theorem first_order.language.Lhom.comp_assoc + theorem first_order.language.Lhom.comp_id + theorem first_order.language.Lhom.comp_sum_elim + def first_order.language.Lhom.constants_on_map + theorem first_order.language.Lhom.id_comp + theorem first_order.language.Lhom.map_constants_comp_sum_inl + theorem first_order.language.Lhom.sum_elim_comp_inl + theorem first_order.language.Lhom.sum_elim_comp_inr + theorem first_order.language.Lhom.sum_elim_inl_inr + def first_order.language.Lhom.sum_map + theorem first_order.language.Lhom.sum_map_comp_inl + theorem first_order.language.Lhom.sum_map_comp_inr + structure first_order.language.Lhom + def first_order.language.Lhom_with_constants + def first_order.language.Lhom_with_constants_map + theorem first_order.language.coe_con + def first_order.language.constants_on.Structure + def first_order.language.constants_on + theorem first_order.language.constants_on_constants + def first_order.language.constants_on_functions + theorem first_order.language.constants_on_map_is_expansion_on + def first_order.language.with_constants Modified src/model_theory/quotients.lean Added src/model_theory/satisfiability.lean + def first_order.language.Theory.is_finitely_satisfiable + theorem first_order.language.Theory.is_satisfiable.is_finitely_satisfiable + theorem first_order.language.Theory.is_satisfiable.mono + def first_order.language.Theory.is_satisfiable.some_model + def first_order.language.Theory.is_satisfiable + theorem first_order.language.Theory.is_satisfiable_iff_is_finitely_satisfiable + theorem first_order.language.Theory.model.is_satisfiable + def first_order.language.Theory.models_bounded_formula + theorem first_order.language.Theory.models_formula_iff + theorem first_order.language.Theory.models_sentence_iff + theorem first_order.language.Theory.semantically_equivalent.realize_bd_iff + theorem first_order.language.Theory.semantically_equivalent.realize_iff + theorem first_order.language.Theory.semantically_equivalent.refl + theorem first_order.language.Theory.semantically_equivalent.some_model_realize_bd_iff + theorem first_order.language.Theory.semantically_equivalent.some_model_realize_iff + theorem first_order.language.Theory.semantically_equivalent.symm + theorem first_order.language.Theory.semantically_equivalent.trans + def first_order.language.Theory.semantically_equivalent + def first_order.language.Theory.semantically_equivalent_setoid + theorem first_order.language.bounded_formula.all_semantically_equivalent_not_ex_not + theorem first_order.language.bounded_formula.ex_semantically_equivalent_not_all_not + theorem first_order.language.bounded_formula.imp_semantically_equivalent_not_sup + theorem first_order.language.bounded_formula.induction_on_all_ex + theorem first_order.language.bounded_formula.induction_on_exists_not + theorem first_order.language.bounded_formula.inf_semantically_equivalent_not_sup_not + theorem first_order.language.bounded_formula.is_qf.induction_on_inf_not + theorem first_order.language.bounded_formula.is_qf.induction_on_sup_not + theorem first_order.language.bounded_formula.semantically_equivalent_all_lift_at + theorem first_order.language.bounded_formula.semantically_equivalent_not_not + theorem first_order.language.bounded_formula.semantically_equivalent_to_prenex + theorem first_order.language.bounded_formula.sup_semantically_equivalent_not_inf_not + theorem first_order.language.formula.imp_semantically_equivalent_not_sup + theorem first_order.language.formula.inf_semantically_equivalent_not_sup_not + theorem first_order.language.formula.semantically_equivalent_not_not + theorem first_order.language.formula.sup_semantically_equivalent_not_inf_not Added src/model_theory/semantics.lean + theorem first_order.language.Lhom.on_Theory_model + theorem first_order.language.Lhom.realize_on_bounded_formula + theorem first_order.language.Lhom.realize_on_formula + theorem first_order.language.Lhom.realize_on_sentence + theorem first_order.language.Lhom.realize_on_term + theorem first_order.language.Lhom.set_of_realize_on_formula + theorem first_order.language.Theory.model.mono + theorem first_order.language.Theory.realize_sentence_of_mem + def first_order.language.bounded_formula.realize + theorem first_order.language.bounded_formula.realize_all + theorem first_order.language.bounded_formula.realize_all_lift_at_one_self + theorem first_order.language.bounded_formula.realize_alls + theorem first_order.language.bounded_formula.realize_bd_equal + theorem first_order.language.bounded_formula.realize_bot + theorem first_order.language.bounded_formula.realize_cast_le_of_eq + theorem first_order.language.bounded_formula.realize_ex + theorem first_order.language.bounded_formula.realize_exs + theorem first_order.language.bounded_formula.realize_iff + theorem first_order.language.bounded_formula.realize_imp + theorem first_order.language.bounded_formula.realize_inf + theorem first_order.language.bounded_formula.realize_lift_at + theorem first_order.language.bounded_formula.realize_lift_at_one + theorem first_order.language.bounded_formula.realize_lift_at_one_self + theorem first_order.language.bounded_formula.realize_not + theorem first_order.language.bounded_formula.realize_rel + theorem first_order.language.bounded_formula.realize_relabel + theorem first_order.language.bounded_formula.realize_sup + theorem first_order.language.bounded_formula.realize_to_prenex + theorem first_order.language.bounded_formula.realize_to_prenex_imp + theorem first_order.language.bounded_formula.realize_to_prenex_imp_right + theorem first_order.language.bounded_formula.realize_top + theorem first_order.language.embedding.realize_term + theorem first_order.language.equiv.realize_bounded_formula + theorem first_order.language.equiv.realize_formula + theorem first_order.language.equiv.realize_term + def first_order.language.formula.realize + theorem first_order.language.formula.realize_bot + theorem first_order.language.formula.realize_equal + theorem first_order.language.formula.realize_graph + theorem first_order.language.formula.realize_iff + theorem first_order.language.formula.realize_imp + theorem first_order.language.formula.realize_inf + theorem first_order.language.formula.realize_not + theorem first_order.language.formula.realize_rel + theorem first_order.language.formula.realize_relabel + theorem first_order.language.formula.realize_sup + theorem first_order.language.formula.realize_top + theorem first_order.language.hom.realize_term + def first_order.language.sentence.realize + def first_order.language.term.realize + theorem first_order.language.term.realize_con + theorem first_order.language.term.realize_constants + theorem first_order.language.term.realize_lift_at + theorem first_order.language.term.realize_relabel Modified src/model_theory/substructures.lean Added src/model_theory/syntax.lean + def first_order.language.Lequiv.on_bounded_formula + theorem first_order.language.Lequiv.on_bounded_formula_symm + def first_order.language.Lequiv.on_formula + theorem first_order.language.Lequiv.on_formula_apply + theorem first_order.language.Lequiv.on_formula_symm + def first_order.language.Lequiv.on_sentence + def first_order.language.Lequiv.on_term + theorem first_order.language.Lhom.comp_on_bounded_formula + theorem first_order.language.Lhom.comp_on_term + theorem first_order.language.Lhom.id_on_bounded_formula + theorem first_order.language.Lhom.id_on_term + theorem first_order.language.Lhom.mem_on_Theory + def first_order.language.Lhom.on_Theory + def first_order.language.Lhom.on_bounded_formula + def first_order.language.Lhom.on_formula + def first_order.language.Lhom.on_sentence + def first_order.language.Lhom.on_term + def first_order.language.Theory + def first_order.language.bounded_formula.alls + def first_order.language.bounded_formula.cast_le + def first_order.language.bounded_formula.exs + theorem first_order.language.bounded_formula.is_atomic.cast_le + theorem first_order.language.bounded_formula.is_atomic.is_prenex + theorem first_order.language.bounded_formula.is_atomic.is_qf + theorem first_order.language.bounded_formula.is_atomic.lift_at + theorem first_order.language.bounded_formula.is_atomic.relabel + inductive first_order.language.bounded_formula.is_atomic + theorem first_order.language.bounded_formula.is_prenex.cast_le + theorem first_order.language.bounded_formula.is_prenex.induction_on_all_not + theorem first_order.language.bounded_formula.is_prenex.lift_at + theorem first_order.language.bounded_formula.is_prenex.relabel + inductive first_order.language.bounded_formula.is_prenex + theorem first_order.language.bounded_formula.is_prenex_to_prenex_imp + theorem first_order.language.bounded_formula.is_prenex_to_prenex_imp_right + theorem first_order.language.bounded_formula.is_qf.cast_le + theorem first_order.language.bounded_formula.is_qf.is_prenex + theorem first_order.language.bounded_formula.is_qf.lift_at + theorem first_order.language.bounded_formula.is_qf.not + theorem first_order.language.bounded_formula.is_qf.relabel + theorem first_order.language.bounded_formula.is_qf.to_prenex_imp + theorem first_order.language.bounded_formula.is_qf.to_prenex_imp_right + inductive first_order.language.bounded_formula.is_qf + theorem first_order.language.bounded_formula.is_qf_bot + def first_order.language.bounded_formula.lift_at + theorem first_order.language.bounded_formula.not_all_is_atomic + theorem first_order.language.bounded_formula.not_all_is_qf + theorem first_order.language.bounded_formula.not_ex_is_atomic + theorem first_order.language.bounded_formula.not_ex_is_qf + def first_order.language.bounded_formula.relabel + def first_order.language.bounded_formula.relabel_aux + theorem first_order.language.bounded_formula.sum_elim_comp_relabel_aux + def first_order.language.bounded_formula.to_prenex + def first_order.language.bounded_formula.to_prenex_imp + def first_order.language.bounded_formula.to_prenex_imp_right + theorem first_order.language.bounded_formula.to_prenex_is_prenex + inductive first_order.language.bounded_formula + def first_order.language.constants.term + def first_order.language.formula.graph + theorem first_order.language.formula.is_atomic_graph + def first_order.language.formula.relabel + def first_order.language.formula + def first_order.language.relations.bounded_formula + def first_order.language.relations.formula + def first_order.language.sentence + def first_order.language.term.bd_equal + theorem first_order.language.term.card_le + theorem first_order.language.term.card_le_omega + def first_order.language.term.equal + def first_order.language.term.lift_at + def first_order.language.term.list_decode + theorem first_order.language.term.list_decode_encode_list + def first_order.language.term.list_encode + theorem first_order.language.term.list_encode_injective + def first_order.language.term.relabel + inductive first_order.language.term Deleted src/model_theory/terms_and_formulas.lean - def first_order.language.Lequiv.on_bounded_formula - theorem first_order.language.Lequiv.on_bounded_formula_symm - def first_order.language.Lequiv.on_formula - theorem first_order.language.Lequiv.on_formula_apply - theorem first_order.language.Lequiv.on_formula_symm - def first_order.language.Lequiv.on_sentence - def first_order.language.Lequiv.on_term - theorem first_order.language.Lhom.comp_on_bounded_formula - theorem first_order.language.Lhom.comp_on_term - theorem first_order.language.Lhom.id_on_bounded_formula - theorem first_order.language.Lhom.id_on_term - theorem first_order.language.Lhom.mem_on_Theory - def first_order.language.Lhom.on_Theory - theorem first_order.language.Lhom.on_Theory_model - def first_order.language.Lhom.on_bounded_formula - def first_order.language.Lhom.on_formula - def first_order.language.Lhom.on_sentence - def first_order.language.Lhom.on_term - theorem first_order.language.Lhom.realize_on_bounded_formula - theorem first_order.language.Lhom.realize_on_formula - theorem first_order.language.Lhom.realize_on_sentence - theorem first_order.language.Lhom.realize_on_term - theorem first_order.language.Lhom.set_of_realize_on_formula - def first_order.language.Theory.is_finitely_satisfiable - theorem first_order.language.Theory.is_satisfiable.is_finitely_satisfiable - theorem first_order.language.Theory.is_satisfiable.mono - def first_order.language.Theory.is_satisfiable.some_model - def first_order.language.Theory.is_satisfiable - theorem first_order.language.Theory.model.is_satisfiable - theorem first_order.language.Theory.model.mono - def first_order.language.Theory.models_bounded_formula - theorem first_order.language.Theory.models_formula_iff - theorem first_order.language.Theory.models_sentence_iff - theorem first_order.language.Theory.realize_sentence_of_mem - theorem first_order.language.Theory.semantically_equivalent.realize_bd_iff - theorem first_order.language.Theory.semantically_equivalent.realize_iff - theorem first_order.language.Theory.semantically_equivalent.refl - theorem first_order.language.Theory.semantically_equivalent.some_model_realize_bd_iff - theorem first_order.language.Theory.semantically_equivalent.some_model_realize_iff - theorem first_order.language.Theory.semantically_equivalent.symm - theorem first_order.language.Theory.semantically_equivalent.trans - def first_order.language.Theory.semantically_equivalent - def first_order.language.Theory.semantically_equivalent_setoid - def first_order.language.Theory - theorem first_order.language.bounded_formula.all_semantically_equivalent_not_ex_not - def first_order.language.bounded_formula.alls - def first_order.language.bounded_formula.cast_le - theorem first_order.language.bounded_formula.ex_semantically_equivalent_not_all_not - def first_order.language.bounded_formula.exs - theorem first_order.language.bounded_formula.imp_semantically_equivalent_not_sup - theorem first_order.language.bounded_formula.induction_on_all_ex - theorem first_order.language.bounded_formula.induction_on_exists_not - theorem first_order.language.bounded_formula.inf_semantically_equivalent_not_sup_not - theorem first_order.language.bounded_formula.is_atomic.cast_le - theorem first_order.language.bounded_formula.is_atomic.is_prenex - theorem first_order.language.bounded_formula.is_atomic.is_qf - theorem first_order.language.bounded_formula.is_atomic.lift_at - theorem first_order.language.bounded_formula.is_atomic.relabel - inductive first_order.language.bounded_formula.is_atomic - theorem first_order.language.bounded_formula.is_prenex.cast_le - theorem first_order.language.bounded_formula.is_prenex.induction_on_all_not - theorem first_order.language.bounded_formula.is_prenex.lift_at - theorem first_order.language.bounded_formula.is_prenex.relabel - inductive first_order.language.bounded_formula.is_prenex - theorem first_order.language.bounded_formula.is_prenex_to_prenex_imp - theorem first_order.language.bounded_formula.is_prenex_to_prenex_imp_right - theorem first_order.language.bounded_formula.is_qf.cast_le - theorem first_order.language.bounded_formula.is_qf.induction_on_inf_not - theorem first_order.language.bounded_formula.is_qf.induction_on_sup_not - theorem first_order.language.bounded_formula.is_qf.is_prenex - theorem first_order.language.bounded_formula.is_qf.lift_at - theorem first_order.language.bounded_formula.is_qf.not - theorem first_order.language.bounded_formula.is_qf.relabel - theorem first_order.language.bounded_formula.is_qf.to_prenex_imp - theorem first_order.language.bounded_formula.is_qf.to_prenex_imp_right - inductive first_order.language.bounded_formula.is_qf - theorem first_order.language.bounded_formula.is_qf_bot - def first_order.language.bounded_formula.lift_at - theorem first_order.language.bounded_formula.not_all_is_atomic - theorem first_order.language.bounded_formula.not_all_is_qf - theorem first_order.language.bounded_formula.not_ex_is_atomic - theorem first_order.language.bounded_formula.not_ex_is_qf - def first_order.language.bounded_formula.realize - theorem first_order.language.bounded_formula.realize_all - theorem first_order.language.bounded_formula.realize_all_lift_at_one_self - theorem first_order.language.bounded_formula.realize_alls - theorem first_order.language.bounded_formula.realize_bd_equal - theorem first_order.language.bounded_formula.realize_bot - theorem first_order.language.bounded_formula.realize_cast_le_of_eq - theorem first_order.language.bounded_formula.realize_ex - theorem first_order.language.bounded_formula.realize_exs - theorem first_order.language.bounded_formula.realize_iff - theorem first_order.language.bounded_formula.realize_imp - theorem first_order.language.bounded_formula.realize_inf - theorem first_order.language.bounded_formula.realize_lift_at - theorem first_order.language.bounded_formula.realize_lift_at_one - theorem first_order.language.bounded_formula.realize_lift_at_one_self - theorem first_order.language.bounded_formula.realize_not - theorem first_order.language.bounded_formula.realize_rel - theorem first_order.language.bounded_formula.realize_relabel - theorem first_order.language.bounded_formula.realize_sup - theorem first_order.language.bounded_formula.realize_to_prenex - theorem first_order.language.bounded_formula.realize_to_prenex_imp - theorem first_order.language.bounded_formula.realize_to_prenex_imp_right - theorem first_order.language.bounded_formula.realize_top - def first_order.language.bounded_formula.relabel - def first_order.language.bounded_formula.relabel_aux - theorem first_order.language.bounded_formula.semantically_equivalent_all_lift_at - theorem first_order.language.bounded_formula.semantically_equivalent_not_not - theorem first_order.language.bounded_formula.semantically_equivalent_to_prenex - theorem first_order.language.bounded_formula.sum_elim_comp_relabel_aux - theorem first_order.language.bounded_formula.sup_semantically_equivalent_not_inf_not - def first_order.language.bounded_formula.to_prenex - def first_order.language.bounded_formula.to_prenex_imp - def first_order.language.bounded_formula.to_prenex_imp_right - theorem first_order.language.bounded_formula.to_prenex_is_prenex - inductive first_order.language.bounded_formula - def first_order.language.constants.term - theorem first_order.language.embedding.realize_term - theorem first_order.language.equiv.realize_bounded_formula - theorem first_order.language.equiv.realize_formula - theorem first_order.language.equiv.realize_term - def first_order.language.formula.graph - theorem first_order.language.formula.imp_semantically_equivalent_not_sup - theorem first_order.language.formula.inf_semantically_equivalent_not_sup_not - theorem first_order.language.formula.is_atomic_graph - def first_order.language.formula.realize - theorem first_order.language.formula.realize_bot - theorem first_order.language.formula.realize_equal - theorem first_order.language.formula.realize_graph - theorem first_order.language.formula.realize_iff - theorem first_order.language.formula.realize_imp - theorem first_order.language.formula.realize_inf - theorem first_order.language.formula.realize_not - theorem first_order.language.formula.realize_rel - theorem first_order.language.formula.realize_relabel - theorem first_order.language.formula.realize_sup - theorem first_order.language.formula.realize_top - def first_order.language.formula.relabel - theorem first_order.language.formula.semantically_equivalent_not_not - theorem first_order.language.formula.sup_semantically_equivalent_not_inf_not - def first_order.language.formula - theorem first_order.language.hom.realize_term - def first_order.language.relations.bounded_formula - def first_order.language.relations.formula - def first_order.language.sentence.realize - def first_order.language.sentence - def first_order.language.term.bd_equal - theorem first_order.language.term.card_le - theorem first_order.language.term.card_le_omega - def first_order.language.term.equal - def first_order.language.term.lift_at - def first_order.language.term.list_decode - theorem first_order.language.term.list_decode_encode_list - def first_order.language.term.list_encode - theorem first_order.language.term.list_encode_injective - def first_order.language.term.realize - theorem first_order.language.term.realize_con - theorem first_order.language.term.realize_constants - theorem first_order.language.term.realize_lift_at - theorem first_order.language.term.realize_relabel - def first_order.language.term.relabel - inductive first_order.language.term Modified src/model_theory/ultraproducts.lean - theorem first_order.language.Theory.is_satisfiable_iff_is_finitely_satisfiable 2022-03-27 03:34:03 57a5fd7 chore(scripts): update nolints.txt (#12971) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-27 00:27:34 664247f chore(data/set/intervals/ord_connected): Golf proof (#12923) ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean 2022-03-27 00:27:33 05ef694 refactor(topology/instances/ennreal): make `ennreal` an instance of `has_continuous_inv` (#12806) Prior to the type class `has_continuous_inv`, `ennreal` had to have it's own hand-rolled `ennreal.continuous_inv` statement. This replaces it with a `has_continuous_inv` instance. - [x] depends on: #12748 ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/instances/ennreal.lean 2022-03-26 23:54:12 caf6f19 refactor(category_theory/abelian): deduplicate definitions of (co)image (#12902) Previously we made two separate definitions of the abelian (co)image, as `kernel (cokernel.π f)` / `cokernel (kernel.ι f)`, once for `non_preadditive_abelian C` and once for `abelian C`. This duplication wasn't really necessary, and this PR unifies them. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean +/- def category_theory.abelian.coimage_iso_image' +/- def category_theory.abelian.coimage_iso_image + def category_theory.abelian.coimage_strong_epi_mono_factorisation - def category_theory.abelian.coimages.coimage_strong_epi_mono_factorisation - theorem category_theory.abelian.coimages.comp_coimage_π_eq_zero + theorem category_theory.abelian.comp_coimage_π_eq_zero +/- theorem category_theory.abelian.full_image_factorisation +/- def category_theory.abelian.image_iso_image + def category_theory.abelian.image_strong_epi_mono_factorisation + theorem category_theory.abelian.image_ι_comp_eq_zero - def category_theory.abelian.images.image_strong_epi_mono_factorisation - theorem category_theory.abelian.images.image_ι_comp_eq_zero Modified src/category_theory/abelian/exact.lean +/- def category_theory.abelian.is_colimit_coimage +/- def category_theory.abelian.is_colimit_image Added src/category_theory/abelian/images.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/abelian/pseudoelements.lean 2022-03-26 23:17:46 f5a9d0a feat(ring_theory/polynomial/eisenstein): add cyclotomic_prime_pow_comp_X_add_one_is_eisenstein_at (#12707) We add `cyclotomic_prime_pow_comp_X_add_one_is_eisenstein_at`. From flt-regular ESTIMATED CHANGES Modified src/ring_theory/polynomial/eisenstein.lean + theorem cyclotomic_prime_pow_comp_X_add_one_is_eisenstein_at + theorem polynomial.monic.is_eisenstein_at_of_mem_of_not_mem + theorem polynomial.monic.leading_coeff_not_mem 2022-03-26 21:16:08 7b93889 refactor(data/list/basic): Remove many redundant hypotheses (#12950) Many theorems about `last` required arguments proving that certain things were not equal to `nil`, when in fact this was always the case. These hypotheses have been removed and replaced with the corresponding proofs. ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.last_append +/- theorem list.last_concat +/- theorem list.last_cons_cons +/- theorem list.last_singleton Modified src/data/nat/digits.lean 2022-03-26 21:16:07 e63e332 feat(algebra/ring/basic): all non-zero elements in a non-trivial ring with no non-zero zero divisors are regular (#12947) Besides what the PR description says, I also golfed two earlier proofs. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem is_regular_iff_ne_zero' 2022-03-26 21:16:06 b30f25c fix(data/set/prod): fix the way `×ˢ` associates (#12943) Previously `s ×ˢ t ×ˢ u` was an element of `set ((α × β) × γ)` instead of `set (α × β × γ) = set (α × (β × γ))`. ESTIMATED CHANGES Modified src/data/set/prod.lean 2022-03-26 21:16:05 cc8c90d chore(data/equiv): split and move to `logic/equiv` (#12929) Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Rearranging.20files.20in.20.60data.2F.60 This PR rearranges files in `data/equiv/` by 1) moving bundled isomorphisms to a relevant subfolder of `algebra/`; 2) moving `denumerable` and `encodable` to `logic/`; 3) moving the remainder of `data/equiv/` to `logic/equiv/`. The commits of this PR correspond to those steps. In particular, the following files were moved: * `data/equiv/module.lean` → `algebra/module/equiv.lean` * `data/equiv/mul_add.lean` → `algebra/hom/equiv.lean` * `data/equiv/mul_add_aut.lean` → `algebra/hom/aut.lean` * `data/equiv/ring.lean` → `algebra/ring/equiv.lean` * `data/equiv/ring_aut.lean` → `algebra/ring/aut.lean` * `data/equiv/denumerable.lean` → `logic/denumerable.lean` * `data/equiv/encodable/*.lean` → `logic/encodable/basic.lean logic/encodable/lattice.lean logic/encodable/small.lean` * `data/equiv/*.lean` to: `logic/equiv/basic.lean logic/equiv/fin.lean logic/equiv/functor.lean logic/equiv/local_equiv.lean logic/equiv/option.lean logic/equiv/transfer_instance.lean logic/equiv/embedding.lean logic/equiv/fintype.lean logic/equiv/list.lean logic/equiv/nat.lean logic/equiv/set.lean` ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/field_power.lean Modified src/algebra/free.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/opposite.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_ring_action.lean Renamed src/data/equiv/mul_add_aut.lean to src/algebra/hom/aut.lean Renamed src/data/equiv/mul_add.lean to src/algebra/hom/equiv.lean Modified src/algebra/lie/basic.lean Renamed src/data/equiv/module.lean to src/algebra/module/equiv.lean Modified src/algebra/module/opposites.lean Modified src/algebra/module/submodule.lean Modified src/algebra/module/ulift.lean Modified src/algebra/opposites.lean Modified src/algebra/order/hom/ring.lean Modified src/algebra/order/monoid.lean Modified src/algebra/quandle.lean Modified src/algebra/quaternion.lean Renamed src/data/equiv/ring_aut.lean to src/algebra/ring/aut.lean Modified src/algebra/ring/comp_typeclasses.lean Renamed src/data/equiv/ring.lean to src/algebra/ring/equiv.lean Modified src/algebra/ring/prod.lean Modified src/algebra/ring/ulift.lean Modified src/algebra/star/basic.lean Modified src/algebra/star/module.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/analysis/analytic/basic.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/functor/fully_faithful.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/preadditive/opposite.lean Modified src/category_theory/types.lean Modified src/combinatorics/derangements/basic.lean Modified src/computability/primrec.lean Modified src/control/equiv_functor.lean Modified src/control/monad/basic.lean Modified src/control/monad/writer.lean Modified src/control/traversable/equiv.lean Modified src/control/uliftable.lean Modified src/data/W/basic.lean Modified src/data/erased.lean Modified src/data/finsupp/to_dfinsupp.lean Modified src/data/fintype/card_embedding.lean Modified src/data/matrix/basic.lean Modified src/data/mv_polynomial/equiv.lean Modified src/data/nat/enat.lean Modified src/data/opposite.lean Modified src/data/part.lean Modified src/data/rat/basic.lean Modified src/data/set/countable.lean Modified src/data/ulift.lean Modified src/deprecated/group.lean Modified src/field_theory/cardinality.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/perfect_closure.lean Modified src/group_theory/congruence.lean Modified src/group_theory/free_abelian_group_finsupp.lean Modified src/group_theory/group_action/group.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/fin.lean Modified src/group_theory/perm/option.lean Modified src/group_theory/semidirect_product.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/pi.lean Renamed src/data/equiv/denumerable.lean to src/logic/denumerable.lean Modified src/logic/embedding.lean Renamed src/data/equiv/encodable/basic.lean to src/logic/encodable/basic.lean Renamed src/data/equiv/encodable/lattice.lean to src/logic/encodable/lattice.lean Renamed src/data/equiv/encodable/small.lean to src/logic/encodable/small.lean Renamed src/data/equiv/basic.lean to src/logic/equiv/basic.lean Renamed src/data/equiv/embedding.lean to src/logic/equiv/embedding.lean Renamed src/data/equiv/fin.lean to src/logic/equiv/fin.lean Renamed src/data/equiv/fintype.lean to src/logic/equiv/fintype.lean Renamed src/data/equiv/functor.lean to src/logic/equiv/functor.lean Renamed src/data/equiv/list.lean to src/logic/equiv/list.lean Renamed src/data/equiv/local_equiv.lean to src/logic/equiv/local_equiv.lean Renamed src/data/equiv/nat.lean to src/logic/equiv/nat.lean Renamed src/data/equiv/option.lean to src/logic/equiv/option.lean Renamed src/data/equiv/set.lean to src/logic/equiv/set.lean Renamed src/data/equiv/transfer_instance.lean to src/logic/equiv/transfer_instance.lean Modified src/logic/small.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/pi_system.lean Modified src/model_theory/basic.lean Modified src/model_theory/definability.lean Modified src/model_theory/terms_and_formulas.lean Modified src/order/hom/basic.lean Modified src/order/ideal.lean Modified src/order/jordan_holder.lean Modified src/order/lexicographic.lean Modified src/order/order_dual.lean Modified src/order/order_iso_nat.lean Modified src/order/rel_iso.lean Modified src/order/semiconj_Sup.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/local_properties.lean Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/localization/integral.lean Modified src/ring_theory/ring_invo.lean Modified src/ring_theory/subsemiring/basic.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/norm_swap.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/homeomorph.lean Modified src/topology/local_homeomorph.lean Modified test/norm_swap.lean Modified test/semilinear.lean Modified test/simp_result.lean 2022-03-26 20:22:51 434a938 feat(analysis/convex/strict_convex_space): Strictly convex spaces (#11794) Define `strictly_convex_space`, a `Prop`-valued mixin to state that a normed space is strictly convex. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean + theorem ae_eq_const_or_norm_integral_lt_of_norm_le_const - theorem strict_convex.ae_eq_const_or_norm_integral_lt_of_norm_le_const Modified src/analysis/convex/strict.lean Added src/analysis/convex/strict_convex_space.lean + theorem combo_mem_ball_of_ne + theorem dist_add_dist_eq_iff + theorem norm_add_lt_of_not_same_ray + theorem norm_combo_lt_of_ne + theorem open_segment_subset_ball_of_ne + theorem same_ray_iff_norm_add + theorem strict_convex_closed_ball + theorem strict_convex_space.of_norm_add + theorem strict_convex_space.of_strict_convex_closed_unit_ball Modified src/analysis/convex/topology.lean + theorem dist_add_dist_of_mem_segment Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed_space/basic.lean + theorem inv_norm_smul_mem_closed_unit_ball 2022-03-26 19:19:53 1f11f3f chore(order/filter/basic): rename using the zero subscript convention for groups with zero (#12952) ESTIMATED CHANGES Modified src/order/filter/basic.lean - theorem filter.eventually_eq.div' +/- theorem filter.eventually_eq.div - theorem filter.eventually_eq.sub 2022-03-26 18:24:35 a491055 chore(measure_theory/integral/lebesgue): extend to ae_measurable (#12953) ESTIMATED CHANGES Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.lintegral_eq_top_of_measure_eq_top_pos +/- theorem measure_theory.lintegral_trim +/- theorem measure_theory.meas_ge_le_lintegral_div + theorem measure_theory.mul_meas_ge_le_lintegral₀ + theorem measure_theory.simple_func.apply_mk + theorem measure_theory.simple_func.extend_apply' + def measure_theory.simple_func.of_is_empty +/- theorem measure_theory.univ_le_of_forall_fin_meas_le 2022-03-26 14:15:19 cb2797e feat(measure_theory/constructions/borel_space): drop a countability assumption (#12954) ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean +/- theorem ae_measurable_of_tendsto_metric_ae + theorem measurable_of_tendsto_metrizable' + theorem measurable_of_tendsto_metrizable 2022-03-26 12:20:15 b7d9166 chore(measure_theory/measure/lebesgue): delete leftovers (#12951) ESTIMATED CHANGES Modified src/measure_theory/measure/lebesgue.lean 2022-03-26 12:20:14 1111482 feat(topology/bases): separable subsets of topological spaces (#12936) ESTIMATED CHANGES Modified src/topology/bases.lean + theorem set.countable.is_separable + theorem set.finite.is_separable + theorem topological_space.is_separable.closure + theorem topological_space.is_separable.image + theorem topological_space.is_separable.mono + theorem topological_space.is_separable.union + def topological_space.is_separable + theorem topological_space.is_separable_Union + theorem topological_space.is_separable_of_separable_space + theorem topological_space.is_separable_of_separable_space_subtype + theorem topological_space.is_separable_univ_iff + theorem topological_space.separable_space_of_dense_range Modified src/topology/constructions.lean + theorem embedding.cod_restrict + theorem inducing.cod_restrict Modified src/topology/metric_space/basic.lean + theorem continuous_on.is_separable_image + theorem is_compact.is_separable + theorem metric.dense_iff + theorem metric.dense_range_iff +/- theorem metric.mem_closure_iff +/- theorem metric.mem_closure_range_iff +/- theorem metric.mem_closure_range_iff_nat +/- theorem metric.mem_of_closed' + theorem topological_space.is_separable.separable_space 2022-03-26 12:20:13 f68536e feat(topology/constructions): continuity of uncurried functions when the first factor is discrete (#12935) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.map_pure_prod Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/constructions.lean + theorem continuous_uncurry_of_discrete_topology 2022-03-26 12:20:12 5e449c2 feat(algebra/is_prime_pow): add `is_prime_pow_iff_factorization_single` (#12167) Adds lemma `is_prime_pow_iff_factorization_single : is_prime_pow n ↔ ∃ p k : ℕ, 0 < k ∧ n.factorization = finsupp.single p k` Also adds `pow_of_factorization_single` to `data/nat/factorization` ESTIMATED CHANGES Modified src/algebra/is_prime_pow.lean + theorem is_prime_pow_iff_card_support_factorization_eq_one + theorem is_prime_pow_iff_factorization_eq_single Modified src/data/nat/factorization.lean + theorem nat.eq_pow_of_factorization_eq_single 2022-03-26 10:30:31 023a783 feat(logic/nontrivial): `exists_pair_lt` (#12925) ESTIMATED CHANGES Modified src/logic/nontrivial.lean + theorem exists_pair_lt + theorem nontrivial_iff_lt 2022-03-26 10:30:30 c51f4f1 feat(set_theory/cardinal_ordinal): `κ ^ n = κ` for infinite cardinals (#12922) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.pow_eq + theorem cardinal.power_nat_eq +/- theorem cardinal.power_nat_le 2022-03-26 09:35:33 9d26041 feat(topology/instances/ennreal): add `ennreal.has_sum_to_real` (#12926) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem ennreal.has_sum_to_real 2022-03-26 03:28:38 b83bd25 feat(linear_algebra/sesquilinear_form): add nondegenerate (#12683) Defines nondegenerate sesquilinear forms as left and right separating sesquilinear forms. ESTIMATED CHANGES Modified src/linear_algebra/sesquilinear_form.lean + theorem linear_map.flip_nondegenerate + theorem linear_map.flip_separating_left + theorem linear_map.flip_separating_right + theorem linear_map.is_Ortho.nondegenerate_of_not_is_ortho_basis_self + theorem linear_map.is_Ortho.not_is_ortho_basis_self_of_separating_left + theorem linear_map.is_Ortho.not_is_ortho_basis_self_of_separating_right + theorem linear_map.is_Ortho.separating_left_of_not_is_ortho_basis_self + theorem linear_map.is_Ortho.separating_right_iff_not_is_ortho_basis_self + theorem linear_map.is_symm.nondegenerate_of_separating_left + theorem linear_map.is_symm.nondegenerate_of_separating_right + def linear_map.nondegenerate + theorem linear_map.nondegenerate_restrict_of_disjoint_orthogonal + def linear_map.separating_left + theorem linear_map.separating_left_iff_ker_eq_bot + theorem linear_map.separating_left_iff_linear_nontrivial + def linear_map.separating_right + theorem linear_map.separating_right_iff_flip_ker_eq_bot + theorem linear_map.separating_right_iff_linear_flip_nontrivial 2022-03-26 02:58:15 17b621c chore(scripts): update nolints.txt (#12946) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-25 19:43:25 b6d246a feat(topology/continuous_function/cocompact_maps): add the type of cocompact continuous maps (#12938) This adds the type of cocompact continuous maps, which are those functions `f : α → β` for which `tendsto f (cocompact α) (cocompact β)`. These maps are of interest primarily because of their connection with continuous functions vanishing at infinity (#12907). In particular, if `f : α → β` is a cocompact continuous map and `g : β →C₀ γ` is a continuous function which vanishes at infinity, then `g ∘ f : α →C₀ γ`. These are also related to quasi-compact maps (continuous maps for which preimages of compact sets are compact) and proper maps (continuous maps which are universally closed), neither of which are currently defined in mathlib. In particular, quasi-compact maps are cocompact continuous maps, and when the codomain is Hausdorff the converse holds also. Under some additional assumptions, both of these are also equivalent to being a proper map. ESTIMATED CHANGES Added src/topology/continuous_function/cocompact_map.lean + theorem cocompact_map.coe_comp + theorem cocompact_map.coe_id + theorem cocompact_map.coe_mk + theorem cocompact_map.coe_to_continuous_fun + def cocompact_map.comp + theorem cocompact_map.comp_apply + theorem cocompact_map.comp_assoc + theorem cocompact_map.comp_id + theorem cocompact_map.compact_preimage + theorem cocompact_map.ext + theorem cocompact_map.id_comp + theorem cocompact_map.tendsto_of_forall_preimage + structure cocompact_map 2022-03-25 18:48:49 221796a feat(topology/metric_space/metrizable): define and use a metrizable typeclass (#12934) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/metrizable.lean + theorem embedding.metrizable_space + theorem topological_space.metrizable_space_of_normal_second_countable 2022-03-25 17:53:43 5925650 chore(nnreal): rename lemmas based on real.to_nnreal when they mention of_real (#12937) Many lemma using `real.to_nnreal` mention `of_real` in their names. This PR tries to make things more coherent. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean Modified src/data/real/sqrt.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean + theorem continuous_real_to_nnreal - theorem nnreal.continuous_of_real - theorem nnreal.has_sum_of_real_of_nonneg + theorem nnreal.has_sum_real_to_nnreal_of_nonneg - theorem nnreal.tendsto_of_real + theorem nnreal.tendsto_real_to_nnreal 2022-03-25 11:39:22 2143571 feat(topology/category/Born): The category of bornologies (#12045) Define `Born`, the category of bornological spaces with bounded maps. ESTIMATED CHANGES Added src/topology/category/Born.lean + def Born.of + def Born 2022-03-25 09:33:50 172f317 move(algebra/hom/*): Move group hom files together (#12647) Move * `algebra.group.freiman` to `algebra.hom.freiman` * `algebra.group.hom` to `algebra.hom.basic` * `algebra.group.hom_instances` to `algebra.hom.instances` * `algebra.group.units_hom` to `algebra.hom.units` * `algebra.group_action_hom` to `algebra.hom.group_action` * `algebra.iterate_hom` to `algebra.hom.iterate` * `algebra.non_unital_alg_hom` to `algebra.hom.non_unital_alg` ESTIMATED CHANGES Modified src/algebra/algebra/bilinear.lean Modified src/algebra/char_p/basic.lean Modified src/algebra/free.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/default.lean Modified src/algebra/group/ext.lean Modified src/algebra/group/pi.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group_with_zero/basic.lean Renamed src/algebra/group/freiman.lean to src/algebra/hom/freiman.lean Renamed src/algebra/group/hom.lean to src/algebra/hom/group.lean Renamed src/algebra/group_action_hom.lean to src/algebra/hom/group_action.lean Renamed src/algebra/group/hom_instances.lean to src/algebra/hom/group_instances.lean Renamed src/algebra/iterate_hom.lean to src/algebra/hom/iterate.lean Renamed src/algebra/non_unital_alg_hom.lean to src/algebra/hom/non_unital_alg.lean Renamed src/algebra/group/units_hom.lean to src/algebra/hom/units.lean Modified src/algebra/lie/non_unital_non_assoc_algebra.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/order/hom/monoid.lean Modified src/algebra/polynomial/group_ring_action.lean Modified src/algebra/regular/pow.lean Modified src/category_theory/monoidal/discrete.lean Modified src/category_theory/preadditive/default.lean Modified src/data/finsupp/basic.lean Modified src/data/polynomial/derivative.lean Modified src/deprecated/group.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/perfect_closure.lean Modified src/group_theory/group_action/defs.lean Modified src/group_theory/group_action/sub_mul_action.lean Modified src/group_theory/order_of_element.lean Modified src/topology/algebra/group_completion.lean Modified test/simps.lean 2022-03-25 09:03:06 351c32f docs(docs/undergrad): Update TODO list (#12752) Update `undergrad` with the latest additions to mathlib. ESTIMATED CHANGES Modified docs/undergrad.yaml 2022-03-25 02:56:04 9ee02c6 feat(data/pfun): Remove unneeded assumption from pfun.fix_induction (#12920) Removed a hypothesis from `pfun.fix_induction`. Note that it was two "layers" deep, so this is actually a strengthening. The original can be recovered by ```lean /-- A recursion principle for `pfun.fix`. -/ @[elab_as_eliminator] def fix_induction_original {f : α →. β ⊕ α} {b : β} {C : α → Sort*} {a : α} (h : b ∈ f.fix a) (H : ∀ a', b ∈ f.fix a' → (∀ a'', /- this hypothesis was removed -/ b ∈ f.fix a'' → sum.inr a'' ∈ f a' → C a'') → C a') : C a := by { apply fix_induction h, intros, apply H; tauto, } ``` Note that `eval_induction` copies this syntax, so the same argument was removed there as well. This allows for some simplifications of other parts of the code. Unfortunately, it was hard to figure out what was going on in the very dense parts of `tm_to_partrec.lean` and `partrec.lean`. I mostly just mechanically removed the hypotheses that were unnecessarily being supplied, and then checked if that caused some variable to be unused and removed that etc. But I cannot tell if this allows for greater simplifications. I also extracted two lemmas `fix_fwd` and `fix_stop` that I thought would be useful on their own. ESTIMATED CHANGES Modified src/computability/partrec.lean Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean Modified src/data/pfun.lean + theorem pfun.fix_fwd + theorem pfun.fix_stop 2022-03-25 00:37:21 3dd8e4d feat(order/category/FinBoolAlg): The category of finite Boolean algebras (#12906) Define `FinBoolAlg`, the category of finite Boolean algebras. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.preimage_sInter Modified src/order/category/BoolAlg.lean + theorem BoolAlg.coe_to_BoundedDistribLattice Added src/order/category/FinBoolAlg.lean + theorem FinBoolAlg.coe_of + theorem FinBoolAlg.coe_to_BoolAlg + def FinBoolAlg.dual + def FinBoolAlg.dual_equiv + def FinBoolAlg.iso.mk + def FinBoolAlg.of + structure FinBoolAlg + def Fintype_to_FinBoolAlg_op Modified src/order/category/FinPartialOrder.lean + theorem FinPartialOrder.coe_to_PartialOrder Modified src/order/hom/complete_lattice.lean + theorem complete_lattice_hom.coe_set_preimage + def complete_lattice_hom.set_preimage + theorem complete_lattice_hom.set_preimage_apply + theorem complete_lattice_hom.set_preimage_comp + theorem complete_lattice_hom.set_preimage_id 2022-03-25 00:06:09 7ec1a31 fix(combinatorics/simple_graph/density): correct name in docstring (#12921) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/density.lean 2022-03-24 22:53:04 352ecfe feat(combinatorics/simple_graph/{connectivity,metric}): `connected` and `dist` (#12574) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.connected.set_univ_walk_nonempty + structure simple_graph.connected + theorem simple_graph.preconnected.set_univ_walk_nonempty + def simple_graph.preconnected + def simple_graph.reachable + theorem simple_graph.reachable_iff_nonempty_univ + theorem simple_graph.reachable_iff_refl_trans_gen + theorem simple_graph.reachable_is_equivalence + def simple_graph.reachable_setoid + def simple_graph.subgraph.connected + theorem simple_graph.walk.eq_of_length_eq_zero + theorem simple_graph.walk.exists_length_eq_zero_iff +/- structure simple_graph.walk.is_cycle +/- theorem simple_graph.walk.is_cycle_def Added src/combinatorics/simple_graph/metric.lean + theorem simple_graph.connected.dist_eq_zero_iff + theorem simple_graph.connected.dist_triangle + theorem simple_graph.connected.exists_walk_of_dist + theorem simple_graph.connected.pos_dist_of_ne + def simple_graph.dist + theorem simple_graph.dist_comm + theorem simple_graph.dist_comm_aux + theorem simple_graph.dist_eq_zero_iff_eq_or_not_reachable + theorem simple_graph.dist_eq_zero_of_not_reachable + theorem simple_graph.dist_le + theorem simple_graph.dist_self + theorem simple_graph.nonempty_of_pos_dist + theorem simple_graph.reachable.dist_eq_zero_iff + theorem simple_graph.reachable.exists_walk_of_dist + theorem simple_graph.reachable.pos_dist_of_ne 2022-03-24 17:30:47 2891e1b feat(algebra/category/BoolRing): The category of Boolean rings (#12905) Define `BoolRing`, the category of Boolean rings. ESTIMATED CHANGES Added src/algebra/category/BoolRing.lean + theorem BoolRing.coe_of + def BoolRing.iso.mk + def BoolRing.of + def BoolRing Modified src/algebra/punit_instances.lean +/- theorem punit.div_eq +/- theorem punit.inv_eq Modified src/algebra/ring/boolean_ring.lean + def as_boolalg - def boolean_ring.has_bot - def boolean_ring.has_sdiff +/- def boolean_ring.has_sup - theorem boolean_ring.inf_inf_sdiff - theorem boolean_ring.sup_inf_sdiff + def of_boolalg + theorem of_boolalg_bot + theorem of_boolalg_inf + theorem of_boolalg_inj + theorem of_boolalg_sup + theorem of_boolalg_symm_eq + theorem of_boolalg_to_boolalg + theorem of_boolalg_top + theorem ring_hom.as_boolalg_comp + theorem ring_hom.as_boolalg_id + def to_boolalg + theorem to_boolalg_add_add_mul + theorem to_boolalg_inj + theorem to_boolalg_mul + theorem to_boolalg_of_boolalg + theorem to_boolalg_one + theorem to_boolalg_symm_eq + theorem to_boolalg_zero 2022-03-24 17:30:46 f53b239 feat(model_theory/fraisse): Construct Fraïssé limits (#12138) Constructs Fraïssé limits (nonuniquely) ESTIMATED CHANGES Modified docs/references.bib Modified src/model_theory/direct_limit.lean + theorem first_order.language.direct_limit.cg + theorem first_order.language.directed_system.coe_nat_le_rec + def first_order.language.directed_system.nat_le_rec Modified src/model_theory/finitely_generated.lean Modified src/model_theory/fraisse.lean + theorem first_order.language.Structure.fg.mem_age_of_equiv + theorem first_order.language.age_direct_limit + theorem first_order.language.age_fraisse_limit + theorem first_order.language.embedding.age_subset_age + theorem first_order.language.equiv.age_eq_age + theorem first_order.language.exists_cg_is_age_of + theorem first_order.language.hereditary.is_equiv_invariant_of_fg 2022-03-24 16:39:34 6ac7c18 feat(combinatorics/simple_graph/density): Edge density (#12431) Define the number and density of edges of a relation and of a simple graph between two finsets. ESTIMATED CHANGES Added src/combinatorics/simple_graph/density.lean + theorem rel.card_interedges_add_card_interedges_compl + theorem rel.card_interedges_comm + theorem rel.card_interedges_le_mul + def rel.edge_density + theorem rel.edge_density_add_edge_density_compl + theorem rel.edge_density_comm + theorem rel.edge_density_empty_left + theorem rel.edge_density_empty_right + theorem rel.edge_density_le_one + theorem rel.edge_density_nonneg + def rel.interedges + theorem rel.interedges_bUnion + theorem rel.interedges_bUnion_left + theorem rel.interedges_bUnion_right + theorem rel.interedges_disjoint_left + theorem rel.interedges_disjoint_right + theorem rel.interedges_empty_left + theorem rel.interedges_mono + theorem rel.mem_interedges_iff + theorem rel.mk_mem_interedges_comm + theorem rel.mk_mem_interedges_iff + theorem rel.swap_mem_interedges_iff + theorem simple_graph.card_interedges_add_card_interedges_compl + theorem simple_graph.card_interedges_div_card + theorem simple_graph.card_interedges_le_mul + def simple_graph.edge_density + theorem simple_graph.edge_density_add_edge_density_compl + theorem simple_graph.edge_density_comm + theorem simple_graph.edge_density_def + theorem simple_graph.edge_density_empty_left + theorem simple_graph.edge_density_empty_right + theorem simple_graph.edge_density_le_one + theorem simple_graph.edge_density_nonneg + def simple_graph.interedges + theorem simple_graph.interedges_bUnion + theorem simple_graph.interedges_bUnion_left + theorem simple_graph.interedges_bUnion_right + theorem simple_graph.interedges_def + theorem simple_graph.interedges_disjoint_left + theorem simple_graph.interedges_disjoint_right + theorem simple_graph.interedges_empty_left + theorem simple_graph.interedges_mono + theorem simple_graph.mem_interedges_iff + theorem simple_graph.mk_mem_interedges_comm + theorem simple_graph.mk_mem_interedges_iff + theorem simple_graph.swap_mem_interedges_iff 2022-03-24 14:49:21 7302e11 feat(algebra/module/torsion): define torsion submodules (#12027) This file defines the a-torsion and torsion submodules for a R-module M and gives some basic properties. (The ultimate goal I'm working on is to classify the finitely-generated modules over a PID). ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem exists_npow_eq_one_of_zpow_eq_one Added src/algebra/module/torsion.lean + theorem add_monoid.is_torsion_iff_is_torsion_int + theorem add_monoid.is_torsion_iff_is_torsion_nat + def module.is_torsion' + def module.is_torsion + def module.is_torsion_by + theorem submodule.coe_torsion_eq_annihilator_ne_bot + theorem submodule.is_torsion'_iff_torsion'_eq_top + theorem submodule.is_torsion_by_iff_torsion_by_eq_top + theorem submodule.mem_torsion'_iff + theorem submodule.mem_torsion_by_iff + theorem submodule.mem_torsion_iff + theorem submodule.no_zero_smul_divisors_iff_torsion_eq_bot + theorem submodule.quotient_torsion.torsion_eq_bot + theorem submodule.smul_coe_torsion_by + theorem submodule.smul_torsion_by + def submodule.torsion' + theorem submodule.torsion'_is_torsion' + theorem submodule.torsion'_torsion'_eq_top + def submodule.torsion + theorem submodule.torsion_by.mk_smul + def submodule.torsion_by + theorem submodule.torsion_by_is_torsion_by + theorem submodule.torsion_by_torsion_by_eq_top + theorem submodule.torsion_is_torsion + theorem submodule.torsion_torsion_eq_top 2022-03-24 13:01:54 c7745b3 chore(order/zorn): Review (#12175) Lemma renames ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/inner_product_space/basic.lean Modified src/data/set/pairwise.lean + theorem set.pairwise.insert + theorem set.pairwise.insert_of_symmetric Modified src/field_theory/adjoin.lean +/- theorem intermediate_field.lifts.exists_max_three +/- theorem intermediate_field.lifts.exists_max_two +/- theorem intermediate_field.lifts.exists_upper_bound +/- def intermediate_field.lifts.upper_bound_intermediate_field Modified src/field_theory/is_alg_closed/basic.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/linear_independent.lean Modified src/measure_theory/covering/vitali.lean Modified src/order/compactly_generated.lean Modified src/order/extension.lean Modified src/order/filter/ultrafilter.lean Modified src/order/zorn.lean + theorem chain_closure.is_chain + theorem chain_closure.succ_fixpoint + theorem chain_closure.succ_fixpoint_iff + inductive chain_closure + theorem chain_closure_empty + theorem chain_closure_max_chain + theorem chain_closure_total - theorem directed_of_chain + theorem exists_maximal_of_chains_bounded + theorem exists_maximal_of_nonempty_chains_bounded + theorem is_chain.directed + theorem is_chain.directed_on + theorem is_chain.exists_max_chain + theorem is_chain.image + theorem is_chain.insert + theorem is_chain.mono + theorem is_chain.succ + theorem is_chain.super_chain_succ_chain + theorem is_chain.symm + theorem is_chain.total + def is_chain + theorem is_chain_empty + theorem is_chain_of_trichotomous + theorem is_chain_univ_iff + theorem is_max_chain.is_chain + theorem is_max_chain.not_super_chain + def is_max_chain + def max_chain + theorem max_chain_spec - theorem set.subsingleton.chain + theorem set.subsingleton.is_chain + def succ_chain + theorem succ_increasing + theorem succ_spec + def super_chain - theorem zorn.chain.directed_on - theorem zorn.chain.image - theorem zorn.chain.max_chain_of_chain - theorem zorn.chain.mono - theorem zorn.chain.symm - theorem zorn.chain.total - theorem zorn.chain.total_of_refl - def zorn.chain - theorem zorn.chain_chain_closure - inductive zorn.chain_closure - theorem zorn.chain_closure_closure - theorem zorn.chain_closure_empty - theorem zorn.chain_closure_succ_fixpoint - theorem zorn.chain_closure_succ_fixpoint_iff - theorem zorn.chain_closure_total - theorem zorn.chain_empty - theorem zorn.chain_insert - theorem zorn.chain_of_trichotomous - theorem zorn.chain_succ - theorem zorn.chain_univ_iff - theorem zorn.exists_maximal_of_chains_bounded - theorem zorn.exists_maximal_of_nonempty_chains_bounded - def zorn.is_max_chain - def zorn.max_chain - theorem zorn.max_chain_spec - def zorn.succ_chain - theorem zorn.succ_increasing - theorem zorn.succ_spec - def zorn.super_chain - theorem zorn.super_of_not_max - theorem zorn.zorn_nonempty_partial_order - theorem zorn.zorn_nonempty_partial_order₀ - theorem zorn.zorn_partial_order - theorem zorn.zorn_partial_order₀ - theorem zorn.zorn_subset - theorem zorn.zorn_subset_nonempty - theorem zorn.zorn_superset - theorem zorn.zorn_superset_nonempty + theorem zorn_nonempty_partial_order + theorem zorn_nonempty_partial_order₀ + theorem zorn_partial_order + theorem zorn_partial_order₀ + theorem zorn_subset + theorem zorn_subset_nonempty + theorem zorn_superset + theorem zorn_superset_nonempty Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/ideal/operations.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/topology/algebra/semigroup.lean Modified src/topology/shrinking_lemma.lean +/- theorem shrinking_lemma.partial_refinement.apply_eq_of_chain +/- def shrinking_lemma.partial_refinement.chain_Sup +/- theorem shrinking_lemma.partial_refinement.find_apply_of_mem +/- theorem shrinking_lemma.partial_refinement.le_chain_Sup Modified src/topology/subset_properties.lean 2022-03-24 12:01:35 7c48d65 feat(topology/algebra/group): define `has_continuous_inv` and `has_continuous_neg` type classes (#12748) This creates the `has_continuous_inv` and `has_continuous_neg` type classes. The `has_continuous_neg` class will be helpful for generalizing `topological_ring` to the setting of `non_unital_non_assoc_semiring`s (see [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/continuous.20maps.20vanishing.20at.20infinity)). In addition, `ennreal` can have a `has_continuous_inv` instance. ESTIMATED CHANGES Modified src/topology/algebra/field.lean Modified src/topology/algebra/group.lean + theorem has_continuous_inv_Inf + theorem has_continuous_inv_inf + theorem has_continuous_inv_infi + theorem is_closed_set_of_map_inv +/- theorem is_compact.inv + theorem topological_group.continuous_conj' + theorem topological_group.continuous_conj_prod Modified src/topology/continuous_function/algebra.lean 2022-03-24 10:12:39 eabc619 feat(ring_theory/polynomial): mv_polynomial over UFD is UFD (#12866) ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/associated.lean + theorem comap_prime + theorem mul_equiv.prime_iff Modified src/algebra/divisibility.lean + theorem map_dvd +/- theorem monoid_hom.map_dvd +/- theorem mul_hom.map_dvd Modified src/algebra/ring/basic.lean +/- theorem ring_hom.map_dvd Modified src/data/mv_polynomial/rename.lean + theorem mv_polynomial.exists_finset_rename₂ + def mv_polynomial.kill_compl + theorem mv_polynomial.kill_compl_comp_rename + theorem mv_polynomial.kill_compl_rename_app Modified src/ring_theory/polynomial/basic.lean + theorem mv_polynomial.prime_C_iff + theorem mv_polynomial.prime_rename_iff + theorem polynomial.prime_C_iff Modified src/ring_theory/unique_factorization_domain.lean + theorem mul_equiv.unique_factorization_monoid + theorem mul_equiv.unique_factorization_monoid_iff 2022-03-24 10:12:38 db76064 feat(*): facts about degrees/multiplicites of derivatives (#12856) For `t` an `n`th repeated root of `p`, we prove that it is an `n-1`th repeated root of `p'` (and tidy the section around this). We also sharpen the theorem stating that `deg p' < deg p`. ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean + theorem polynomial.derivative_of_nat_degree_zero +/- theorem polynomial.nat_degree_derivative_lt Modified src/data/polynomial/field_division.lean + theorem polynomial.derivative_root_multiplicity_of_root + theorem polynomial.root_multiplicity_sub_one_le_derivative_root_multiplicity +/- theorem polynomial.roots_normalize Modified src/field_theory/separable.lean 2022-03-24 10:12:37 355645e chore(data/polynomial/*): delete, rename and move lemmas (#12852) - Replace `eval_eq_finset_sum` and `eval_eq_finset_sum'` with `eval_eq_sum_range` and `eval_eq_sum_range'` which are consistent with `eval₂_eq_sum_range`, `eval₂_eq_sum_range'` `eval_eq_finset_sum`, `eval_eq_finset_sum'`. Notice that the type of `eval_eq_sum_range'` is different, but this lemma has not been used anywhere in mathlib. - Move the lemma `C_eq_int_cast` from `data/polynomial/degree/definitions.lean` to `data/polynomial/basic.lean`. `C_eq_nat_cast` was already here. ESTIMATED CHANGES Modified src/analysis/special_functions/polynomials.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean + theorem polynomial.C_eq_int_cast Modified src/data/polynomial/degree/definitions.lean - theorem polynomial.C_eq_int_cast Modified src/data/polynomial/eval.lean - theorem polynomial.eval_eq_finset_sum' - theorem polynomial.eval_eq_finset_sum + theorem polynomial.eval_eq_sum_range' + theorem polynomial.eval_eq_sum_range Modified src/data/polynomial/mirror.lean Modified src/ring_theory/polynomial/eisenstein.lean 2022-03-24 10:12:36 c1fb0ed feat(algebra/associated): generalize nat.prime_mul_iff (#12850) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem irreducible_is_unit_mul + theorem irreducible_mul_iff + theorem irreducible_mul_is_unit + theorem irreducible_mul_units + theorem irreducible_units_mul Modified src/data/nat/prime.lean 2022-03-24 10:12:35 a5a0d23 feat(data/list/basic): nth_le+filter lemmas (#12836) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_singleton + theorem list.nth_le_cons + theorem list.nth_le_cons_aux 2022-03-24 10:12:34 892e611 feat(model_theory/*): Facts about countability of first-order structures (#12819) Shows that in a countable language, a structure is countably generated if and only if it is countable. ESTIMATED CHANGES Modified src/data/equiv/encodable/basic.lean Modified src/model_theory/basic.lean + def first_order.language.card + theorem first_order.language.card_eq_card_functions_add_card_relations + theorem first_order.language.card_functions_le_omega + theorem first_order.language.card_le_omega + theorem first_order.language.encodable.countable + theorem first_order.language.encodable.countable_functions Modified src/model_theory/finitely_generated.lean + theorem first_order.language.Structure.cg_iff_countable +/- theorem first_order.language.substructure.cg_closure + theorem first_order.language.substructure.cg_iff_countable Modified src/model_theory/substructures.lean + theorem set.countable.substructure_closure Modified src/model_theory/terms_and_formulas.lean + theorem first_order.language.term.card_le_omega 2022-03-24 10:12:32 e6c6f00 feat(number_theory/arithmetic_function): The moebius function is multiplicative (#12796) A fundamental property of the moebius function is that it is multiplicative, which allows many facts about Euler products to be expressed ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem nat.squarefree_mul + theorem squarefree.ne_zero + theorem squarefree.of_mul_left + theorem squarefree.of_mul_right Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.is_multiplicative.iff_ne_zero + theorem nat.arithmetic_function.is_multiplicative_moebius 2022-03-24 10:12:31 0faebd2 chore(fintype/card_embedding): generalize instances (#12775) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.card_compl_set + theorem fintype.card_range + theorem set.to_finset_compl Modified src/data/fintype/card_embedding.lean +/- theorem fintype.card_embedding_eq +/- theorem fintype.card_embedding_eq_of_infinite +/- theorem fintype.card_embedding_eq_of_unique Modified src/data/set/finite.lean - theorem set.to_finset_compl Modified src/logic/embedding.lean + def function.embedding.option_embedding_equiv 2022-03-24 10:12:30 0427430 feat(number_theory/function_field): add completion with respect to place at infinity (#12715) ESTIMATED CHANGES Modified src/number_theory/function_field.lean + def function_field.Fqt_infty + theorem function_field.infty_valued_Fqt.completable_top_field + theorem function_field.infty_valued_Fqt.def + theorem function_field.infty_valued_Fqt.separated_space + theorem function_field.infty_valued_Fqt.topological_division_ring + def function_field.infty_valued_Fqt.topological_space + theorem function_field.infty_valued_Fqt.uniform_add_group + def function_field.infty_valued_Fqt.uniform_space + def function_field.infty_valued_Fqt + theorem function_field.valued_Fqt_infty.def 2022-03-24 09:09:50 ca93096 feat(topology/nhds_set): add `has_basis_nhds_set` (#12908) Also add `nhds_set_union`. ESTIMATED CHANGES Modified src/topology/nhds_set.lean + theorem has_basis_nhds_set + theorem nhds_set_union 2022-03-24 07:09:35 399ce38 feat(measure_theory/integral): continuous functions with exponential decay are integrable (#12539) ESTIMATED CHANGES Added src/measure_theory/integral/exp_decay.lean + theorem exp_neg_integrable_on_Ioi + theorem integrable_of_is_O_exp_neg + theorem integral_exp_neg_le 2022-03-24 05:18:39 df34816 feat(ring_theory/principal_ideal_domain): add some irreducible lemmas (#12903) ESTIMATED CHANGES Modified src/ring_theory/principal_ideal_domain.lean + theorem irreducible.coprime_or_dvd + theorem irreducible.coprime_pow_of_not_dvd + theorem irreducible.dvd_iff_not_coprime 2022-03-24 05:18:38 a978115 refactor(category_theory/abelian): trivial generalisations (#12897) Trivial generalisations of some facts in `category_theory/abelian/non_preadditive.lean`. They are true more generally, and this refactor will make it easier to do some other clean-up I'd like to perform on abelian categories. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean - theorem category_theory.abelian.epi_of_zero_cokernel - theorem category_theory.abelian.mono_of_zero_kernel Modified src/category_theory/abelian/non_preadditive.lean - theorem category_theory.non_preadditive_abelian.epi_of_zero_cancel - theorem category_theory.non_preadditive_abelian.epi_of_zero_cokernel - theorem category_theory.non_preadditive_abelian.has_colimit_parallel_pair - theorem category_theory.non_preadditive_abelian.has_limit_parallel_pair - theorem category_theory.non_preadditive_abelian.mono_of_cancel_zero - theorem category_theory.non_preadditive_abelian.mono_of_zero_kernel - theorem category_theory.non_preadditive_abelian.pullback_of_mono - theorem category_theory.non_preadditive_abelian.pushout_of_epi - def category_theory.non_preadditive_abelian.zero_cokernel_of_zero_cancel - def category_theory.non_preadditive_abelian.zero_kernel_of_cancel_zero Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.zero_cokernel_of_zero_cancel + def category_theory.limits.zero_kernel_of_cancel_zero Renamed src/category_theory/limits/shapes/normal_mono.lean to src/category_theory/limits/shapes/normal_mono/basic.lean Added src/category_theory/limits/shapes/normal_mono/equalizers.lean + theorem category_theory.normal_epi_category.has_colimit_parallel_pair + theorem category_theory.normal_epi_category.mono_of_cancel_zero + theorem category_theory.normal_epi_category.mono_of_zero_kernel + theorem category_theory.normal_epi_category.pushout_of_epi + theorem category_theory.normal_mono_category.epi_of_zero_cancel + theorem category_theory.normal_mono_category.epi_of_zero_cokernel + theorem category_theory.normal_mono_category.has_limit_parallel_pair + theorem category_theory.normal_mono_category.pullback_of_mono 2022-03-24 05:18:37 d4e27d0 chore(topology/separation): move a lemma, golf (#12896) * move `t0_space_of_injective_of_continuous` up; * add `embedding.t0_space`, use it for `subtype.t0_space`. ESTIMATED CHANGES Modified src/topology/separation.lean +/- theorem t0_space_of_injective_of_continuous 2022-03-24 05:18:35 e968b6d feat(topology/continuous_function/bounded): add `bounded_continuous_function.tendsto_iff_tendsto_uniformly` (#12894) This establishes that convergence in the metric on bounded continuous functions is equivalent to uniform convergence of the respective functions. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.tendsto_iff_tendsto_uniformly 2022-03-24 05:18:34 a370cf0 chore(data/set/intervals): golf, rename (#12893) * rename `set.mem_Ioo_or_eq_endpoints_of_mem_Icc` → `set.eq_endpoints_or_mem_Ioo_of_mem_Icc`; * rename `set.mem_Ioo_or_eq_left_of_mem_Ico` → `set.eq_left_or_mem_Ioo_of_mem_Ico`; * rename `set.mem_Ioo_or_eq_right_of_mem_Ioc` → `set.eq_right_or_mem_Ioo_of_mem_Ioc`; * golf the proofs of these lemmas. The new names better reflect the order of terms in `or`. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.eq_endpoints_or_mem_Ioo_of_mem_Icc + theorem set.eq_left_or_mem_Ioo_of_mem_Ico + theorem set.eq_right_or_mem_Ioo_of_mem_Ioc - theorem set.mem_Ioo_or_eq_endpoints_of_mem_Icc - theorem set.mem_Ioo_or_eq_left_of_mem_Ico - theorem set.mem_Ioo_or_eq_right_of_mem_Ioc Modified src/data/set/intervals/surj_on.lean Modified src/topology/algebra/order/extend_from.lean 2022-03-24 05:18:33 5ef365a feat(topology/separation): generalize tendsto_const_nhds_iff to t1_space (#12883) I noticed this when working on the sphere eversion project ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean Modified src/order/filter/basic.lean + theorem filter.map_const Modified src/topology/separation.lean + theorem pure_le_nhds_iff +/- theorem tendsto_const_nhds_iff 2022-03-24 05:18:32 6696bdd docs(data/set/pairwise): Explain preference for `s.pairwise_disjoint id` (#12878) ... over `s.pairwise disjoint`. ESTIMATED CHANGES Modified src/data/set/pairwise.lean 2022-03-24 05:18:31 30449be feat(data/complex/is_R_or_C): generalize `is_R_or_C.proper_space_span_singleton` to all finite dimensional submodules (#12877) Also goes on to show that finite supremums of finite_dimensional submodules are finite-dimensional. ESTIMATED CHANGES Modified src/data/complex/is_R_or_C.lean Modified src/linear_algebra/finite_dimensional.lean 2022-03-24 05:18:30 debdd90 feat(tactic/ext): support rintro patterns in `ext` (#12875) The change is actually quite simple, since `rintro_pat*` has approximately the same type as `rcases_pat*`. ESTIMATED CHANGES Modified src/tactic/congr.lean Modified src/tactic/ext.lean Modified test/ext.lean 2022-03-24 05:18:29 8e50164 chore(data/int/basic): remove some `eq.mpr`s from `int.induction_on'` (#12873) ESTIMATED CHANGES Modified src/data/int/basic.lean 2022-03-24 05:18:27 ae69578 fix(ring_theory/algebraic): Make `is_transcendental_of_subsingleton` fully general (#12870) I mistyped a single letter. ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean +/- theorem is_transcendental_of_subsingleton 2022-03-24 05:18:26 706a824 feat(data/{nat, real}/sqrt): Some simple facts about square roots (#12851) Prove that sqrt 1 = 1 in the natural numbers and an order relationship between real and natural square roots. ESTIMATED CHANGES Modified src/data/nat/sqrt.lean + theorem nat.sqrt_one Modified src/data/real/sqrt.lean + theorem real.nat_sqrt_le_real_sqrt + theorem real.real_sqrt_le_nat_sqrt_succ 2022-03-24 05:18:25 ec434b7 feat(group_theory/order_of_element): finite orderness is closed under mul (#12750) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem commute.is_of_fin_order_mul + theorem is_of_fin_order.inv + theorem is_of_fin_order.mul - theorem is_of_fin_order_inv + theorem order_of_pos_iff 2022-03-24 05:18:24 c705d41 feat(analysis/locally_convex): characterize the natural bornology in terms of seminorms (#12721) Add four lemmas: * `is_vonN_bounded_basis_iff`: it suffices to check boundedness for a basis * `seminorm_family.has_basis`: the basis sets form a basis of the topology * `is_bounded_iff_finset_seminorm_bounded`: a set is von Neumann bounded iff it is bounded for all finite suprema of seminorms * `is_bounded_iff_seminorm_bounded`: a set is von Neumann bounded iff it is bounded for each seminorm Also make the set argument in `seminorm_family.basis_sets_iff` implicit. ESTIMATED CHANGES Modified src/analysis/locally_convex/bounded.lean + theorem filter.has_basis.is_vonN_bounded_basis_iff Modified src/analysis/locally_convex/with_seminorms.lean + theorem bornology.is_vonN_bounded_iff_finset_seminorm_bounded + theorem bornology.is_vonN_bounded_iff_seminorm_bounded +/- theorem seminorm_family.basis_sets_iff + theorem seminorm_family.has_basis 2022-03-24 05:18:23 cbd1e98 chore(algebra/category/*): simp lemmas for of_hom (#12638) ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean + theorem Algebra.of_hom_apply Modified src/algebra/category/CommRing/basic.lean + theorem CommRing.of_hom_apply + theorem CommSemiRing.of_hom_apply + theorem Ring.of_hom_apply + theorem SemiRing.of_hom_apply Modified src/algebra/category/Group/basic.lean + theorem CommGroup.of_hom_apply + theorem Group.of_hom_apply Modified src/algebra/category/Module/basic.lean + theorem Module.of_hom_apply Modified src/algebra/category/Mon/basic.lean + theorem Mon.of_hom_apply Modified src/algebra/category/Semigroup/basic.lean + theorem Magma.of_hom_apply + theorem Semigroup.of_hom_apply 2022-03-24 04:46:31 7967128 feat(data/complex/basic): `#ℂ = 𝔠` (#12871) ESTIMATED CHANGES Added src/data/complex/cardinality.lean + theorem mk_complex + theorem mk_univ_complex + theorem not_countable_complex 2022-03-23 23:02:08 584ae9d chore(data/{lists,multiset}/*): More dot notation (#12876) Rename many `list` and `multiset` lemmas to make them eligible to dot notation. Also add a few aliases to `↔` lemmas for even more dot notation. Renames ESTIMATED CHANGES Modified src/algebra/squarefree.lean Modified src/combinatorics/simple_graph/connectivity.lean Modified src/data/equiv/list.lean Modified src/data/fin_enum.lean Modified src/data/finset/basic.lean +/- def finset.erase +/- def finset.filter +/- theorem finset.image_val_of_inj_on +/- theorem finset.insert_def +/- def finset.map +/- theorem finset.not_mem_erase Modified src/data/finset/fin.lean Modified src/data/finset/noncomm_prod.lean Modified src/data/finset/option.lean Modified src/data/finset/pi.lean Modified src/data/finset/powerset.lean Modified src/data/finset/prod.lean Modified src/data/finset/sigma.lean Modified src/data/fintype/basic.lean Modified src/data/hash_map.lean Modified src/data/list/alist.lean +/- def alist.erase +/- theorem alist.keys_erase Modified src/data/list/cycle.lean Modified src/data/list/nat_antidiagonal.lean Modified src/data/list/nodup.lean - theorem list.diff_eq_filter_of_nodup - theorem list.mem_diff_iff_of_nodup - theorem list.mem_erase_iff_of_nodup - theorem list.mem_erase_of_nodup + theorem list.nodup.append + theorem list.nodup.diff + theorem list.nodup.diff_eq_filter + theorem list.nodup.erase + theorem list.nodup.erase_eq_filter + theorem list.nodup.filter + theorem list.nodup.insert + theorem list.nodup.inter + theorem list.nodup.map_on + theorem list.nodup.mem_diff_iff + theorem list.nodup.mem_erase_iff + theorem list.nodup.not_mem + theorem list.nodup.not_mem_erase + theorem list.nodup.of_append_left + theorem list.nodup.of_append_right + theorem list.nodup.of_cons + theorem list.nodup.of_map + theorem list.nodup.pmap + theorem list.nodup.sigma + theorem list.nodup.union - theorem list.nodup_append_of_nodup - theorem list.nodup_concat - theorem list.nodup_cons_of_nodup - theorem list.nodup_diff - theorem list.nodup_erase_eq_filter - theorem list.nodup_erase_of_nodup - theorem list.nodup_filter - theorem list.nodup_filter_map - theorem list.nodup_insert - theorem list.nodup_inter_of_nodup - theorem list.nodup_map - theorem list.nodup_map_on - theorem list.nodup_of_nodup_append_left - theorem list.nodup_of_nodup_append_right - theorem list.nodup_of_nodup_cons - theorem list.nodup_of_nodup_map - theorem list.nodup_of_sublist - theorem list.nodup_pmap - theorem list.nodup_product - theorem list.nodup_sigma +/- theorem list.nodup_singleton +/- theorem list.nodup_sublists_len - theorem list.nodup_union - theorem list.nodup_update_nth - theorem list.not_mem_of_nodup_cons +/- theorem list.not_nodup_cons_of_mem Modified src/data/list/pairwise.lean - theorem list.forall_of_forall_of_pairwise - theorem list.forall_of_pairwise +/- theorem list.pairwise.and + theorem list.pairwise.filter + theorem list.pairwise.filter_map + theorem list.pairwise.forall + theorem list.pairwise.forall_of_forall +/- theorem list.pairwise.imp +/- theorem list.pairwise.imp₂ + theorem list.pairwise.map + theorem list.pairwise.of_cons + theorem list.pairwise.of_map +/- theorem list.pairwise.set_pairwise + theorem list.pairwise.sublists' + theorem list.pairwise_and_iff - theorem list.pairwise_filter_map_of_pairwise - theorem list.pairwise_filter_of_pairwise - theorem list.pairwise_map_of_pairwise - theorem list.pairwise_of_pairwise_cons - theorem list.pairwise_of_pairwise_map - theorem list.pairwise_of_sublist - theorem list.pairwise_sublists' +/- theorem list.pw_filter_idempotent +/- theorem list.rel_of_pairwise_cons Modified src/data/list/perm.lean - theorem list.subperm_of_subset_nodup Modified src/data/list/range.lean Modified src/data/list/sigma.lean - theorem list.kerase_nodupkeys - theorem list.kunion_nodupkeys - theorem list.nodup_of_nodupkeys + theorem list.nodupkeys.kerase + theorem list.nodupkeys.kunion + theorem list.nodupkeys.sublist - theorem list.nodupkeys_of_sublist Modified src/data/list/sort.lean + theorem list.sorted.of_cons - theorem list.sorted_of_sorted_cons Modified src/data/multiset/dedup.lean Modified src/data/multiset/finset_ops.lean + theorem multiset.nodup.ndinsert + theorem multiset.nodup.ndinter + theorem multiset.nodup.ndunion - theorem multiset.nodup_ndinsert - theorem multiset.nodup_ndinter - theorem multiset.nodup_ndunion Modified src/data/multiset/locally_finite.lean Modified src/data/multiset/nodup.lean - theorem multiset.forall_of_pairwise - theorem multiset.mem_erase_iff_of_nodup - theorem multiset.mem_erase_of_nodup + theorem multiset.nodup.add_iff + theorem multiset.nodup.cons + theorem multiset.nodup.erase + theorem multiset.nodup.erase_eq_filter + theorem multiset.nodup.ext + theorem multiset.nodup.filter + theorem multiset.nodup.inter_left + theorem multiset.nodup.inter_right + theorem multiset.nodup.map + theorem multiset.nodup.map_on + theorem multiset.nodup.mem_erase_iff + theorem multiset.nodup.not_mem + theorem multiset.nodup.not_mem_erase + theorem multiset.nodup.of_cons + theorem multiset.nodup.of_map + theorem multiset.nodup.pmap - theorem multiset.nodup_add_of_nodup - theorem multiset.nodup_cons_of_nodup - theorem multiset.nodup_erase_eq_filter - theorem multiset.nodup_erase_of_nodup - theorem multiset.nodup_ext - theorem multiset.nodup_filter - theorem multiset.nodup_filter_map - theorem multiset.nodup_inter_left - theorem multiset.nodup_inter_right - theorem multiset.nodup_map - theorem multiset.nodup_map_on - theorem multiset.nodup_of_nodup_cons - theorem multiset.nodup_of_nodup_map - theorem multiset.nodup_pmap - theorem multiset.nodup_powerset_len - theorem multiset.nodup_product - theorem multiset.nodup_sigma - theorem multiset.not_mem_of_nodup_cons + theorem multiset.pairwise.forall - theorem multiset.pairwise_of_nodup Modified src/data/multiset/pi.lean - theorem multiset.nodup_pi Modified src/data/multiset/sum.lean Modified src/data/set/finite.lean Modified src/data/tprod.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/list.lean Modified src/ring_theory/discriminant.lean Modified src/testing/slim_check/functions.lean 2022-03-23 21:13:19 e620519 feat(order/hom/*): more superclass instances for `order_iso_class` (#12889) * Weaken hypotheses on `order_hom_class` and some subclasses * Add more instances deriving specific order hom classes from `order_iso_class` ESTIMATED CHANGES Modified src/order/hom/basic.lean +/- def order_hom_class Modified src/order/hom/bounded.lean Modified src/order/hom/complete_lattice.lean Modified src/order/hom/lattice.lean 2022-03-23 21:13:18 3b8d217 refactor(order/upper_lower): Use `⨆` rather than `Sup` (#12644) Turn `Sup (coe '' S)` into `⋃ s ∈ S, ↑s` and other similar changes. This greatly simplifies the proofs. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/order/upper_lower.lean + theorem lower_set.carrier_eq_coe +/- theorem lower_set.coe_Inf +/- theorem lower_set.coe_Sup +/- theorem lower_set.coe_infi +/- theorem lower_set.coe_infi₂ +/- theorem lower_set.coe_supr +/- theorem lower_set.coe_supr₂ + theorem lower_set.mem_compl_iff + theorem upper_set.carrier_eq_coe +/- theorem upper_set.coe_Inf +/- theorem upper_set.coe_Sup +/- theorem upper_set.coe_infi +/- theorem upper_set.coe_infi₂ +/- theorem upper_set.coe_supr +/- theorem upper_set.coe_supr₂ + theorem upper_set.mem_compl_iff Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean + theorem homogeneous_ideal.coe_bot + theorem homogeneous_ideal.coe_inf + theorem homogeneous_ideal.coe_sup - theorem homogeneous_ideal.coe_supr + theorem homogeneous_ideal.coe_top +/- theorem homogeneous_ideal.to_ideal_infi + theorem homogeneous_ideal.to_ideal_infi₂ + theorem homogeneous_ideal.to_ideal_supr + theorem homogeneous_ideal.to_ideal_supr₂ +/- theorem ideal.is_homogeneous.Sup + theorem ideal.is_homogeneous.infi₂ + theorem ideal.is_homogeneous.supr₂ Modified src/ring_theory/graded_algebra/radical.lean 2022-03-23 20:36:51 cd94287 feat(category_theory/abelian): right derived functor in abelian category with enough injectives (#12810) This pr shows that in an abelian category with enough injectives, if a functor preserves finite limits, then the zeroth right derived functor is naturally isomorphic to itself. Dual to #12403 ↔️ ESTIMATED CHANGES Modified src/category_theory/abelian/right_derived.lean + theorem category_theory.abelian.functor.exact_of_map_injective_resolution + theorem category_theory.abelian.functor.preserves_exact_of_preserves_finite_limits_of_mono + def category_theory.abelian.functor.right_derived_zero_iso_self + def category_theory.abelian.functor.right_derived_zero_to_self_app + theorem category_theory.abelian.functor.right_derived_zero_to_self_app_comp_inv + def category_theory.abelian.functor.right_derived_zero_to_self_app_inv + theorem category_theory.abelian.functor.right_derived_zero_to_self_app_inv_comp + def category_theory.abelian.functor.right_derived_zero_to_self_app_iso + theorem category_theory.abelian.functor.right_derived_zero_to_self_natural 2022-03-23 20:36:49 84a438e refactor(algebraic_geometry/*): rename structure sheaf to `Spec.structure_sheaf` (#12785) Following [this Zulip message](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Rename.20.60structure_sheaf.60.20to.20.60Spec.2Estructure_sheaf.60/near/275649595), this pr renames `structure_sheaf` to `Spec.structure_sheaf` ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/structure_sheaf.lean + def algebraic_geometry.Spec.structure_sheaf - def algebraic_geometry.structure_sheaf 2022-03-23 12:35:46 16fb8e2 chore(model_theory/terms_and_formulas): `realize_to_prenex` (#12884) Proves that `phi.to_prenex` has the same realization in a nonempty structure as the original formula `phi` directly, rather than using `semantically_equivalent`. ESTIMATED CHANGES Modified src/model_theory/terms_and_formulas.lean - theorem first_order.language.bounded_formula.imp_semantically_equivalent_to_prenex_imp - theorem first_order.language.bounded_formula.imp_semantically_equivalent_to_prenex_imp_right + theorem first_order.language.bounded_formula.realize_to_prenex + theorem first_order.language.bounded_formula.realize_to_prenex_imp + theorem first_order.language.bounded_formula.realize_to_prenex_imp_right 2022-03-23 12:35:45 64472d7 feat(ring_theory/polynomial/basic): the isomorphism between `R[a]/I[a]` and `(R/I[X])/(f mod I)` for `a` a root of polynomial `f` and `I` and ideal of `R` (#12646) This PR defines the isomorphism between the ring `R[a]/I[a]` and the ring `(R/I[X])/(f mod I)` for `a` a root of the polynomial `f` with coefficients in `R` and `I` an ideal of `R`. This is useful for proving the Dedekind-Kummer Theorem. ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean + def adjoin_root.polynomial.quot_quot_equiv_comm + theorem adjoin_root.polynomial.quot_quot_equiv_comm_mk_mk + theorem adjoin_root.quot_adjoin_root_equiv_quot_polynomial_quot_mk_of + def adjoin_root.quot_map_C_map_span_mk_equiv_quot_map_C_quot_map_span_mk + theorem adjoin_root.quot_map_C_map_span_mk_equiv_quot_map_C_quot_map_span_mk_mk + def adjoin_root.quot_map_of_equiv + def adjoin_root.quot_map_of_equiv_quot_map_C_map_span_mk + theorem adjoin_root.quot_map_of_equiv_quot_map_C_map_span_mk_mk Modified src/ring_theory/ideal/operations.lean + theorem ideal.quotient_equiv_mk + theorem ideal.quotient_equiv_symm_mk 2022-03-23 10:41:04 9126310 chore(docs/references): Remove duplicate key (#12901) and clean up the rest while I'm at it. ESTIMATED CHANGES Modified docs/references.bib 2022-03-23 10:41:02 2308b53 feat(model_theory/terms_and_formulas): Make `Theory.model` a class (#12867) Makes `Theory.model` a class ESTIMATED CHANGES Modified src/model_theory/elementary_maps.lean Modified src/model_theory/terms_and_formulas.lean - theorem first_order.language.Theory.is_satisfiable.some_model_models +/- theorem first_order.language.Theory.model.mono - def first_order.language.Theory.model +/- def first_order.language.Theory.models_bounded_formula +/- theorem first_order.language.Theory.models_formula_iff +/- theorem first_order.language.Theory.models_sentence_iff + theorem first_order.language.Theory.realize_sentence_of_mem +/- theorem first_order.language.Theory.semantically_equivalent.refl +/- theorem first_order.language.Theory.semantically_equivalent.symm +/- theorem first_order.language.Theory.semantically_equivalent.trans Modified src/model_theory/ultraproducts.lean 2022-03-23 10:08:10 92f2669 feat(algebra/homology/quasi_iso): 2-out-of-3 property (#12898) ESTIMATED CHANGES Modified src/algebra/homology/quasi_iso.lean + theorem quasi_iso_of_comp_left + theorem quasi_iso_of_comp_right 2022-03-23 08:42:10 11a365d feat(linear_algebra/matrix): add variants of the existing `det_units_conj` lemmas (#12881) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean - theorem matrix.det_conj + theorem matrix.det_conj_of_mul_eq_one Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.coe_units_inv + theorem matrix.det_conj' + theorem matrix.det_conj Modified src/linear_algebra/matrix/zpow.lean + theorem matrix.coe_units_zpow - theorem matrix.units.coe_inv'' - theorem matrix.units.coe_zpow 2022-03-23 00:37:13 c60bfca chore(data/nat/prime): golf nat.dvd_prime_pow (#12886) ESTIMATED CHANGES Modified src/data/nat/prime.lean 2022-03-22 22:13:57 d711d2a feat(set_theory/ordinal): Small iff cardinality less than `cardinal.univ` (#12887) Characterizes when a type is small in terms of its cardinality ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem cardinal.small_iff_lift_mk_lt_univ Modified src/set_theory/ordinal_arithmetic.lean 2022-03-22 20:22:10 3838b85 feat(model_theory/*): Language equivalences (#12837) Defines equivalences between first-order languages ESTIMATED CHANGES Modified src/model_theory/basic.lean + def first_order.language.Lequiv.add_empty_constants + structure first_order.language.Lequiv +/- def first_order.language.Lhom.comp + theorem first_order.language.Lhom.comp_assoc +/- theorem first_order.language.Lhom.comp_id + theorem first_order.language.Lhom.comp_sum_elim +/- theorem first_order.language.Lhom.id_comp + theorem first_order.language.Lhom.map_constants_comp_sum_inl - theorem first_order.language.Lhom.map_constants_comp_with_constants - def first_order.language.Lhom.sum_elim + theorem first_order.language.Lhom.sum_elim_comp_inl + theorem first_order.language.Lhom.sum_elim_comp_inr + theorem first_order.language.Lhom.sum_elim_inl_inr +/- def first_order.language.Lhom.sum_map + theorem first_order.language.Lhom.sum_map_comp_inl + theorem first_order.language.Lhom.sum_map_comp_inr - def first_order.language.Lhom_trim_empty_constants +/- def first_order.language.Lhom_with_constants Modified src/model_theory/definability.lean Modified src/model_theory/terms_and_formulas.lean + def first_order.language.Lequiv.on_bounded_formula + theorem first_order.language.Lequiv.on_bounded_formula_symm + def first_order.language.Lequiv.on_formula + theorem first_order.language.Lequiv.on_formula_apply + theorem first_order.language.Lequiv.on_formula_symm + def first_order.language.Lequiv.on_sentence + def first_order.language.Lequiv.on_term + theorem first_order.language.Lhom.comp_on_bounded_formula + theorem first_order.language.Lhom.comp_on_term + theorem first_order.language.Lhom.id_on_bounded_formula + theorem first_order.language.Lhom.id_on_term +/- def first_order.language.Lhom.on_bounded_formula +/- def first_order.language.Lhom.on_formula +/- def first_order.language.Lhom.on_term +/- theorem first_order.language.Lhom.realize_on_term + theorem first_order.language.Lhom.set_of_realize_on_formula 2022-03-22 20:22:09 f7905f0 feat(order/concept): Concept lattices (#12286) Define `concept`, the type of concepts of a relation, and prove it forms a complete lattice. ESTIMATED CHANGES Modified docs/references.bib Added src/order/concept.lean + theorem concept.Inf_fst + theorem concept.Inf_snd + theorem concept.Sup_fst + theorem concept.Sup_snd + theorem concept.bot_fst + theorem concept.bot_snd + theorem concept.ext' + theorem concept.ext + theorem concept.fst_injective + theorem concept.fst_ssubset_fst_iff + theorem concept.fst_subset_fst_iff + theorem concept.inf_fst + theorem concept.inf_snd + theorem concept.snd_injective + theorem concept.snd_ssubset_snd_iff + theorem concept.snd_subset_snd_iff + theorem concept.strict_anti_snd + theorem concept.strict_mono_fst + theorem concept.sup_fst + theorem concept.sup_snd + def concept.swap + def concept.swap_equiv + theorem concept.swap_le_swap_iff + theorem concept.swap_lt_swap_iff + theorem concept.swap_swap + theorem concept.top_fst + theorem concept.top_snd + structure concept + def extent_closure + theorem extent_closure_Union + theorem extent_closure_Union₂ + theorem extent_closure_anti + theorem extent_closure_empty + theorem extent_closure_intent_closure_extent_closure + theorem extent_closure_swap + theorem extent_closure_union + theorem gc_intent_closure_extent_closure + def intent_closure + theorem intent_closure_Union + theorem intent_closure_Union₂ + theorem intent_closure_anti + theorem intent_closure_empty + theorem intent_closure_extent_closure_intent_closure + theorem intent_closure_swap + theorem intent_closure_union + theorem subset_extent_closure_intent_closure + theorem subset_intent_closure_extent_closure + theorem subset_intent_closure_iff_subset_extent_closure 2022-03-22 20:22:08 b226b4b feat(*): `has_repr` instances for `option`-like types (#11282) This provides the `has_repr` instance for `with_bot α`, `with_top α`, `with_zero α`, `with_one α`, `alexandroff α`. ESTIMATED CHANGES Modified src/algebra/group/with_one.lean Modified src/order/bounded_order.lean Modified src/topology/alexandroff.lean 2022-03-22 19:50:36 980185a feat(algebra/{group,module}/ulift): Missing `ulift` instances (#12879) Add a few missing algebraic instances for `ulift` and golf a few existing ones. ESTIMATED CHANGES Modified src/algebra/group/ulift.lean Modified src/algebra/module/ulift.lean 2022-03-22 14:24:51 6a55ba8 feat(algebra/subalgebra/basic): Missing scalar instances (#12874) Add missing scalar instances for `submonoid`, `subsemiring`, `subring`, `subalgebra`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean +/- theorem subalgebra.smul_def Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.smul_def Modified src/ring_theory/subring/basic.lean +/- theorem subring.smul_def Modified src/ring_theory/subsemiring/basic.lean +/- theorem subsemiring.smul_def 2022-03-22 14:24:49 5215940 feat(order/filter/basic): `filter` is a `coframe` (#12872) Provide the `coframe (filter α)` instance and remove now duplicated lemmas. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean Modified src/order/filter/basic.lean - theorem filter.binfi_sup_left - theorem filter.binfi_sup_right - theorem filter.infi_sup_left - theorem filter.infi_sup_right 2022-03-22 14:24:48 1f47016 refactor(order/hom/complete_lattice): Fix the definition of `frame_hom` (#12855) I misread "preserves finite meet" as "preserves binary meet", meaning that currently a `frame_hom` does not have to preserve `⊤` (subtly, preserving arbitrary join does not imply that either). This fixes my mistake. ESTIMATED CHANGES Modified src/order/hom/complete_lattice.lean - def complete_lattice_hom.to_Inf_hom + def complete_lattice_hom.to_Sup_hom - theorem frame_hom.bot_apply - theorem frame_hom.coe_bot +/- def frame_hom.to_lattice_hom +/- structure frame_hom Modified src/topology/sets/opens.lean 2022-03-22 12:35:31 d586195 feat(data/finset/pointwise): Missing operations (#12865) Define `-s`, `s⁻¹`, `s - t`, `s / t`, `s +ᵥ t`, `s • t`, `s -ᵥ t`, `a • s`, `a +ᵥ s` for `s`, `t` finsets, `a` scalar. Provide a bare API following what is already there for `s + t`, `s * t`. ESTIMATED CHANGES Modified src/data/finset/pointwise.lean + theorem finset.card_inv + theorem finset.card_inv_le + theorem finset.coe_div + theorem finset.coe_inv +/- theorem finset.coe_pow + theorem finset.coe_smul + theorem finset.coe_smul_finset + theorem finset.coe_vsub + theorem finset.coe_zpow' + theorem finset.coe_zpow + theorem finset.div_card_le + theorem finset.div_def + theorem finset.div_empty + theorem finset.div_mem_div + theorem finset.div_nonempty_iff + theorem finset.div_singleton + theorem finset.div_subset_div + theorem finset.div_zero_subset + theorem finset.empty_div + theorem finset.empty_smul + theorem finset.empty_vsub + theorem finset.image_div_prod + theorem finset.image_inv + theorem finset.image_smul + theorem finset.image_smul_product + theorem finset.image_vsub_product + theorem finset.inv_def + theorem finset.inv_empty + theorem finset.inv_mem_inv + theorem finset.inv_nonempty_iff + theorem finset.inv_singleton + theorem finset.inv_subset_inv + theorem finset.mem_div + theorem finset.mem_inv + theorem finset.mem_smul + theorem finset.mem_smul_finset + theorem finset.mem_vsub +/- theorem finset.mul_card_le + theorem finset.nonempty.div_zero + theorem finset.nonempty.smul + theorem finset.nonempty.smul_finset + theorem finset.nonempty.vsub + theorem finset.nonempty.zero_div + theorem finset.preimage_inv + theorem finset.singleton_div + theorem finset.singleton_div_singleton + theorem finset.singleton_smul + theorem finset.singleton_smul_singleton + theorem finset.singleton_vsub + theorem finset.singleton_vsub_singleton + theorem finset.smul_card_le + theorem finset.smul_def + theorem finset.smul_empty + theorem finset.smul_finset_card_le + theorem finset.smul_finset_def + theorem finset.smul_finset_empty + theorem finset.smul_finset_mem_smul_finset + theorem finset.smul_finset_nonempty_iff + theorem finset.smul_finset_singleton + theorem finset.smul_finset_subset_smul_finset + theorem finset.smul_mem_smul + theorem finset.smul_nonempty_iff + theorem finset.smul_singleton + theorem finset.smul_subset_smul + theorem finset.subset_div + theorem finset.subset_smul + theorem finset.subset_vsub + theorem finset.vsub_card_le + theorem finset.vsub_def + theorem finset.vsub_empty + theorem finset.vsub_mem_vsub + theorem finset.vsub_nonempty_iff + theorem finset.vsub_singleton + theorem finset.vsub_subset_vsub + theorem finset.zero_div_subset Modified src/data/set/pointwise.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/ring_theory/polynomial/eisenstein.lean 2022-03-22 09:42:58 28eb06f feat(analysis/calculus): define `diff_on_int_cont` (#12688) ESTIMATED CHANGES Added src/analysis/calculus/diff_on_int_cont.lean + theorem diff_on_int_cont.add + theorem diff_on_int_cont.add_const + theorem diff_on_int_cont.comp + theorem diff_on_int_cont.const_add + theorem diff_on_int_cont.const_smul + theorem diff_on_int_cont.const_sub + theorem diff_on_int_cont.differentiable_at' + theorem diff_on_int_cont.differentiable_on_ball + theorem diff_on_int_cont.inv + theorem diff_on_int_cont.mk_ball + theorem diff_on_int_cont.neg + theorem diff_on_int_cont.smul + theorem diff_on_int_cont.smul_const + theorem diff_on_int_cont.sub + theorem diff_on_int_cont.sub_const + structure diff_on_int_cont + theorem diff_on_int_cont_const + theorem diff_on_int_cont_open + theorem diff_on_int_cont_univ + theorem differentiable.comp_diff_on_int_cont + theorem differentiable.diff_on_int_cont + theorem differentiable_on.comp_diff_on_int_cont + theorem differentiable_on.diff_on_int_cont Modified src/analysis/complex/abs_max.lean +/- theorem complex.norm_max_aux₂ Modified src/analysis/complex/cauchy_integral.lean - theorem complex.circle_integral_sub_inv_smul_of_continuous_on_of_differentiable_on - theorem complex.circle_integral_sub_inv_smul_of_differentiable_on - theorem complex.has_fpower_series_on_ball_of_continuous_on_of_differentiable_on + theorem diff_on_int_cont.circle_integral_sub_inv_smul + theorem diff_on_int_cont.has_fpower_series_on_ball + theorem differentiable_on.circle_integral_sub_inv_smul Modified src/analysis/complex/liouville.lean Modified src/analysis/complex/schwarz.lean 2022-03-22 09:42:57 5826b2f feat(topology/order/hom/esakia): Esakia morphisms (#12241) Define pseudo-epimorphisms and Esakia morphisms following the hom refactor. ESTIMATED CHANGES Modified src/order/hom/lattice.lean Added src/topology/order/hom/esakia.lean + theorem esakia_hom.cancel_left + theorem esakia_hom.cancel_right + theorem esakia_hom.coe_comp + theorem esakia_hom.coe_comp_continuous_order_hom + theorem esakia_hom.coe_comp_pseudo_epimorphism + theorem esakia_hom.coe_id + theorem esakia_hom.coe_id_continuous_order_hom + theorem esakia_hom.coe_id_pseudo_epimorphism + def esakia_hom.comp + theorem esakia_hom.comp_apply + theorem esakia_hom.comp_assoc + theorem esakia_hom.comp_id + theorem esakia_hom.ext + theorem esakia_hom.id_apply + theorem esakia_hom.id_comp + theorem esakia_hom.to_fun_eq_coe + def esakia_hom.to_pseudo_epimorphism + structure esakia_hom + theorem pseudo_epimorphism.cancel_left + theorem pseudo_epimorphism.cancel_right + theorem pseudo_epimorphism.coe_comp + theorem pseudo_epimorphism.coe_comp_order_hom + theorem pseudo_epimorphism.coe_id + theorem pseudo_epimorphism.coe_id_order_hom + def pseudo_epimorphism.comp + theorem pseudo_epimorphism.comp_apply + theorem pseudo_epimorphism.comp_assoc + theorem pseudo_epimorphism.comp_id + theorem pseudo_epimorphism.ext + theorem pseudo_epimorphism.id_apply + theorem pseudo_epimorphism.id_comp + theorem pseudo_epimorphism.to_fun_eq_coe + structure pseudo_epimorphism 2022-03-22 08:35:26 41d291c feat(algebra/big_operators/associated): generalize prod_primes_dvd (#12740) ESTIMATED CHANGES Modified src/algebra/big_operators/associated.lean + theorem finset.prod_primes_dvd + theorem multiset.prod_primes_dvd Modified src/number_theory/primorial.lean - theorem prod_primes_dvd 2022-03-22 08:03:55 3ce4161 refactor(measure_theory/integral): restrict interval integrals to real intervals (#12754) This way `∫ x in 0 .. 1, (1 : real)` means what it should, not `∫ x : nat in 0 .. 1, (1 : real)`. ESTIMATED CHANGES Modified src/analysis/calculus/parametric_interval_integral.lean +/- theorem interval_integral.has_deriv_at_integral_of_dominated_loc_of_deriv_le +/- theorem interval_integral.has_deriv_at_integral_of_dominated_loc_of_lip +/- theorem interval_integral.has_fderiv_at_integral_of_dominated_loc_of_lip +/- theorem interval_integral.has_fderiv_at_integral_of_dominated_of_fderiv_le Modified src/measure_theory/integral/integral_eq_improper.lean +/- theorem measure_theory.integrable_of_interval_integral_norm_bounded +/- theorem measure_theory.integrable_of_interval_integral_norm_tendsto +/- theorem measure_theory.integrable_on_Iic_of_interval_integral_norm_bounded +/- theorem measure_theory.integrable_on_Iic_of_interval_integral_norm_tendsto +/- theorem measure_theory.integrable_on_Ioi_of_interval_integral_norm_bounded +/- theorem measure_theory.integrable_on_Ioi_of_interval_integral_norm_tendsto +/- theorem measure_theory.interval_integral_tendsto_integral +/- theorem measure_theory.interval_integral_tendsto_integral_Iic +/- theorem measure_theory.interval_integral_tendsto_integral_Ioi Modified src/measure_theory/integral/interval_integral.lean +/- theorem antitone.interval_integrable +/- theorem antitone_on.interval_integrable +/- theorem filter.tendsto.eventually_interval_integrable +/- theorem filter.tendsto.eventually_interval_integrable_ae +/- theorem interval_integrable.abs +/- theorem interval_integrable.continuous_on_mul +/- theorem interval_integrable.def +/- theorem interval_integrable.mono +/- theorem interval_integrable.mono_fun' +/- theorem interval_integrable.mono_fun +/- theorem interval_integrable.mono_measure +/- theorem interval_integrable.mono_set +/- theorem interval_integrable.mono_set_ae +/- theorem interval_integrable.mul_continuous_on +/- theorem interval_integrable.trans_iterate +/- def interval_integrable +/- theorem interval_integrable_const +/- theorem interval_integrable_const_iff +/- theorem interval_integrable_iff +/- theorem interval_integrable_iff_integrable_Ioc_of_le +/- theorem interval_integral.FTC_filter.finite_at_inner +/- theorem interval_integral.abs_integral_eq_abs_integral_interval_oc +/- theorem interval_integral.continuous_of_dominated_interval +/- theorem interval_integral.continuous_on_primitive +/- theorem interval_integral.continuous_on_primitive_Icc +/- theorem interval_integral.continuous_on_primitive_interval' +/- theorem interval_integral.continuous_on_primitive_interval +/- theorem interval_integral.continuous_on_primitive_interval_left +/- theorem interval_integral.continuous_primitive +/- theorem interval_integral.continuous_within_at_primitive +/- theorem interval_integral.integral_cases +/- theorem interval_integral.integral_congr +/- theorem interval_integral.integral_congr_ae' +/- theorem interval_integral.integral_congr_ae +/- theorem interval_integral.integral_const +/- theorem interval_integral.integral_const_mul +/- theorem interval_integral.integral_div +/- theorem interval_integral.integral_eq_integral_of_support_subset +/- theorem interval_integral.integral_finset_sum +/- theorem interval_integral.integral_indicator +/- theorem interval_integral.integral_mono_on +/- theorem interval_integral.integral_mul_const +/- theorem interval_integral.integral_nonneg +/- theorem interval_integral.integral_smul_const +/- theorem interval_integral.integral_zero_ae +/- theorem interval_integral.interval_integral_eq_integral_interval_oc +/- theorem interval_integral.norm_integral_eq_norm_integral_Ioc +/- theorem interval_integral.norm_integral_min_max +/- theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le +/- theorem interval_integral.sum_integral_adjacent_intervals +/- def interval_integral +/- theorem measure_theory.integrable.continuous_primitive +/- theorem measure_theory.integrable.interval_integrable +/- theorem measure_theory.integrable_on.interval_integrable +/- theorem monotone.interval_integrable +/- theorem monotone_on.interval_integrable 2022-03-22 06:15:55 b0f585c feat(combinatorics/simple_graph/inc_matrix): Incidence matrix (#10867) Define the incidence matrix of a simple graph and prove the basics, including some stuff about matrix multiplication. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ite_and_mul_zero Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.card_incidence_finset_eq_degree - theorem simple_graph.incidence_set_inter_incidence_set + theorem simple_graph.incidence_set_inter_incidence_set_of_adj + theorem simple_graph.incidence_set_inter_incidence_set_of_not_adj Added src/combinatorics/simple_graph/inc_matrix.lean + def simple_graph.inc_matrix + theorem simple_graph.inc_matrix_apply' + theorem simple_graph.inc_matrix_apply + theorem simple_graph.inc_matrix_apply_eq_one_iff + theorem simple_graph.inc_matrix_apply_eq_zero_iff + theorem simple_graph.inc_matrix_apply_mul_inc_matrix_apply + theorem simple_graph.inc_matrix_apply_mul_inc_matrix_apply_of_not_adj + theorem simple_graph.inc_matrix_mul_transpose + theorem simple_graph.inc_matrix_mul_transpose_apply_of_adj + theorem simple_graph.inc_matrix_mul_transpose_diag + theorem simple_graph.inc_matrix_of_mem_incidence_set + theorem simple_graph.inc_matrix_of_not_mem_incidence_set + theorem simple_graph.inc_matrix_transpose_mul_diag + theorem simple_graph.sum_inc_matrix_apply + theorem simple_graph.sum_inc_matrix_apply_of_mem_edge_set + theorem simple_graph.sum_inc_matrix_apply_of_not_mem_edge_set Modified src/data/finset/card.lean + theorem finset.card_doubleton Modified src/data/fintype/basic.lean + theorem finset.coe_filter_univ + theorem set.filter_mem_univ_eq_to_finset Modified src/linear_algebra/affine_space/combination.lean 2022-03-22 03:26:17 01eb653 chore(scripts): update nolints.txt (#12868) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-22 01:36:27 e51377f feat(logic/basic): `ulift.down` is injective (#12824) We also make the arguments to `plift.down_inj` inferred. ESTIMATED CHANGES Modified src/logic/basic.lean +/- theorem plift.down_inj + theorem plift.down_injective + theorem ulift.down_inj + theorem ulift.down_injective 2022-03-22 00:37:25 d71e06c feat(topology/algebra/monoid): construct a unit from limits of units and their inverses (#12760) ESTIMATED CHANGES Modified src/topology/algebra/monoid.lean + def filter.tendsto.units 2022-03-21 20:08:03 f9dc84e feat(topology/continuous_function/units): basic results about units in `C(α, β)` (#12687) This establishes a few facts about units in `C(α, β)` including the equivalence `C(α, βˣ) ≃ C(α, β)ˣ`. Moreover, when `β` is a complete normed field, we show that the spectrum of `f : C(α, β)` is precisely `set.range f`. ESTIMATED CHANGES Added src/topology/continuous_function/units.lean + theorem continuous_map.is_unit_iff_forall_is_unit + theorem continuous_map.is_unit_iff_forall_ne_zero + theorem continuous_map.spectrum_eq_range + def continuous_map.units_lift + theorem normed_ring.is_unit_unit_continuous 2022-03-21 19:25:50 8001ea5 feat(category_theory/abelian): right derived functor (#12841) This pr dualises derived.lean. Right derived functor and natural transformation between right derived functors and related lemmas are formalised. The docs string currently contains more than what is in this file, but everything else will come shortly after. ESTIMATED CHANGES Modified src/category_theory/abelian/ext.lean Renamed src/category_theory/abelian/derived.lean to src/category_theory/abelian/left_derived.lean Added src/category_theory/abelian/right_derived.lean + def category_theory.functor.right_derived + theorem category_theory.functor.right_derived_map_eq + def category_theory.functor.right_derived_obj_injective_succ + def category_theory.functor.right_derived_obj_injective_zero + def category_theory.functor.right_derived_obj_iso + def category_theory.nat_trans.right_derived + theorem category_theory.nat_trans.right_derived_comp + theorem category_theory.nat_trans.right_derived_eq + theorem category_theory.nat_trans.right_derived_id Renamed src/category_theory/functor/derived.lean to src/category_theory/functor/left_derived.lean Modified src/category_theory/monoidal/tor.lean 2022-03-21 18:05:19 25ec622 feat(data/polynomial/eval + data/polynomial/ring_division): move a lemma and remove assumptions (#12854) A lemma about composition of polynomials assumed `comm_ring` and `is_domain`. The new version assumes `semiring`. I golfed slightly the original proof: it may very well be that a shorter proof is available! I also moved the lemma, since it seems better for this lemma to appear in the file where the definition of `comp` appears. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.coeff_comp_degree_mul_degree Modified src/data/polynomial/ring_division.lean - theorem polynomial.coeff_comp_degree_mul_degree 2022-03-21 18:05:18 fd4a034 refactor(analysis/locally_convex/with_seminorms): use abbreviations to allow for dot notation (#12846) ESTIMATED CHANGES Modified src/analysis/locally_convex/with_seminorms.lean +/- theorem seminorm.continuous_from_bounded - def seminorm_add_group_filter_basis - def seminorm_basis_zero - theorem seminorm_basis_zero_add - theorem seminorm_basis_zero_iff - theorem seminorm_basis_zero_intersect - theorem seminorm_basis_zero_mem - theorem seminorm_basis_zero_neg - theorem seminorm_basis_zero_nonempty - theorem seminorm_basis_zero_singleton_mem - theorem seminorm_basis_zero_smul - theorem seminorm_basis_zero_smul_left - theorem seminorm_basis_zero_smul_right - theorem seminorm_basis_zero_zero + def seminorm_family.basis_sets + theorem seminorm_family.basis_sets_add + theorem seminorm_family.basis_sets_iff + theorem seminorm_family.basis_sets_intersect + theorem seminorm_family.basis_sets_mem + theorem seminorm_family.basis_sets_neg + theorem seminorm_family.basis_sets_nonempty + theorem seminorm_family.basis_sets_singleton_mem + theorem seminorm_family.basis_sets_smul + theorem seminorm_family.basis_sets_smul_left + theorem seminorm_family.basis_sets_smul_right + theorem seminorm_family.basis_sets_zero + theorem seminorm_family.to_locally_convex_space + theorem seminorm_family.with_seminorms_eq + theorem seminorm_family.with_seminorms_of_has_basis + theorem seminorm_family.with_seminorms_of_nhds + def seminorm_family - def seminorm_module_filter_basis - theorem with_seminorms.to_locally_convex_space - theorem with_seminorms_eq - theorem with_seminorms_of_has_basis - theorem with_seminorms_of_nhds 2022-03-21 16:35:37 a2e4802 feat(model_theory/fraisse): Defines Fraïssé classes (#12817) Defines the age of a structure (Mostly) characterizes the ages of countable structures Defines Fraïssé classes ESTIMATED CHANGES Modified src/model_theory/basic.lean Modified src/model_theory/finitely_generated.lean + theorem first_order.language.Structure.fg.cg + theorem first_order.language.substructure.cg.sup - theorem first_order.language.substructure.cg_sup + theorem first_order.language.substructure.fg.sup - theorem first_order.language.substructure.fg_sup Added src/model_theory/fraisse.lean + theorem first_order.language.age.countable_quotient + theorem first_order.language.age.hereditary + theorem first_order.language.age.is_equiv_invariant + theorem first_order.language.age.joint_embedding + def first_order.language.age + def first_order.language.amalgamation + def first_order.language.hereditary + def first_order.language.joint_embedding 2022-03-21 16:35:35 1b787d6 feat(linear_algebra/span): generalize span_singleton_smul_eq (#12736) ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/projective_space/basic.lean Modified src/linear_algebra/span.lean + theorem submodule.span_singleton_group_smul_eq +/- theorem submodule.span_singleton_smul_eq +/- theorem submodule.span_singleton_smul_le 2022-03-21 16:35:34 df299a1 docs(order/filter/basic): fix docstring of generate (#12734) ESTIMATED CHANGES Modified src/order/filter/basic.lean 2022-03-21 16:35:33 09750eb feat(measure_theory/function/uniform_integrable): add API for uniform integrability in the probability sense (#12678) Uniform integrability in probability theory is commonly defined as the uniform existence of a number for which the expectation of the random variables restricted on the set for which they are greater than said number is arbitrarily small. We have defined it in mathlib, on the other hand, as uniform integrability in the measure theory sense + existence of a uniform bound of the Lp norms. This PR proves the first definition implies the second while a later PR will deal with the reverse direction. ESTIMATED CHANGES Modified src/measure_theory/function/uniform_integrable.lean +/- theorem measure_theory.tendsto_Lp_of_tendsto_in_measure +/- theorem measure_theory.tendsto_in_measure_iff_tendsto_Lp +/- theorem measure_theory.unif_integrable_congr_ae + theorem measure_theory.unif_integrable_of' + theorem measure_theory.unif_integrable_of +/- theorem measure_theory.unif_integrable_of_tendsto_Lp + theorem measure_theory.unif_integrable_zero_meas + theorem measure_theory.uniform_integrable.ae_eq + theorem measure_theory.uniform_integrable_congr_ae + theorem measure_theory.uniform_integrable_const + theorem measure_theory.uniform_integrable_fintype + theorem measure_theory.uniform_integrable_of + theorem measure_theory.uniform_integrable_subsingleton + theorem measure_theory.uniform_integrable_zero_meas Modified src/measure_theory/measure/measure_space.lean + theorem indicator_meas_zero 2022-03-21 16:35:32 715f984 feat(model_theory/terms_and_formulas): Prenex Normal Form (#12558) Defines `first_order.language.bounded_formula.to_prenex`, a function which takes a formula and outputs an equivalent formula in prenex normal form. Proves inductive principles based on the fact that every formula is equivalent to one in prenex normal form. ESTIMATED CHANGES Modified src/data/fin/tuple/basic.lean + theorem fin.snoc_comp_cast_succ Modified src/model_theory/terms_and_formulas.lean + theorem first_order.language.Theory.semantically_equivalent.refl + theorem first_order.language.Theory.semantically_equivalent.symm + theorem first_order.language.Theory.semantically_equivalent.trans + theorem first_order.language.bounded_formula.all_semantically_equivalent_not_ex_not + theorem first_order.language.bounded_formula.ex_semantically_equivalent_not_all_not + theorem first_order.language.bounded_formula.imp_semantically_equivalent_to_prenex_imp + theorem first_order.language.bounded_formula.imp_semantically_equivalent_to_prenex_imp_right + theorem first_order.language.bounded_formula.induction_on_all_ex + theorem first_order.language.bounded_formula.induction_on_exists_not + theorem first_order.language.bounded_formula.is_atomic.cast_le + theorem first_order.language.bounded_formula.is_atomic.lift_at + theorem first_order.language.bounded_formula.is_prenex.cast_le + theorem first_order.language.bounded_formula.is_prenex.lift_at + theorem first_order.language.bounded_formula.is_prenex_to_prenex_imp + theorem first_order.language.bounded_formula.is_prenex_to_prenex_imp_right + theorem first_order.language.bounded_formula.is_qf.cast_le + theorem first_order.language.bounded_formula.is_qf.lift_at + theorem first_order.language.bounded_formula.is_qf.to_prenex_imp + theorem first_order.language.bounded_formula.is_qf.to_prenex_imp_right + theorem first_order.language.bounded_formula.not_all_is_atomic + theorem first_order.language.bounded_formula.not_all_is_qf + theorem first_order.language.bounded_formula.not_ex_is_atomic + theorem first_order.language.bounded_formula.not_ex_is_qf + theorem first_order.language.bounded_formula.semantically_equivalent_to_prenex + def first_order.language.bounded_formula.to_prenex + def first_order.language.bounded_formula.to_prenex_imp + def first_order.language.bounded_formula.to_prenex_imp_right + theorem first_order.language.bounded_formula.to_prenex_is_prenex + theorem first_order.language.formula.is_atomic_graph 2022-03-21 14:42:55 091f27e chore(order/{complete_lattice,sup_indep}): move `complete_lattice.independent` (#12588) Putting this here means that in future we can talk about `pairwise_disjoint` at the same time, which was previously defined downstream of `complete_lattice.independent`. This commit only moves existing declarations and adjusts module docstrings. The new authorship comes from #5971 and #7199, which predate this file. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean Modified src/order/compactly_generated.lean Modified src/order/complete_lattice.lean - theorem complete_lattice.independent.comp - theorem complete_lattice.independent.disjoint - theorem complete_lattice.independent.disjoint_bsupr - theorem complete_lattice.independent.map_order_iso - theorem complete_lattice.independent.mono - def complete_lattice.independent - theorem complete_lattice.independent_def'' - theorem complete_lattice.independent_def' - theorem complete_lattice.independent_def - theorem complete_lattice.independent_empty - theorem complete_lattice.independent_map_order_iso_iff - theorem complete_lattice.independent_pair - theorem complete_lattice.independent_pempty - theorem complete_lattice.set_independent.disjoint - theorem complete_lattice.set_independent.disjoint_Sup - theorem complete_lattice.set_independent.mono - def complete_lattice.set_independent - theorem complete_lattice.set_independent_empty - theorem complete_lattice.set_independent_iff - theorem complete_lattice.set_independent_pair Modified src/order/sup_indep.lean + theorem complete_lattice.independent.comp + theorem complete_lattice.independent.disjoint + theorem complete_lattice.independent.disjoint_bsupr + theorem complete_lattice.independent.map_order_iso + theorem complete_lattice.independent.mono + def complete_lattice.independent + theorem complete_lattice.independent_def'' + theorem complete_lattice.independent_def' + theorem complete_lattice.independent_def + theorem complete_lattice.independent_empty + theorem complete_lattice.independent_map_order_iso_iff + theorem complete_lattice.independent_pair + theorem complete_lattice.independent_pempty + theorem complete_lattice.set_independent.disjoint + theorem complete_lattice.set_independent.disjoint_Sup + theorem complete_lattice.set_independent.mono + def complete_lattice.set_independent + theorem complete_lattice.set_independent_empty + theorem complete_lattice.set_independent_iff + theorem complete_lattice.set_independent_pair 2022-03-21 12:46:46 135c574 feat(model_theory/definability): Definability lemmas (#12262) Proves several lemmas to work with definability over different parameter sets. Shows that definability is closed under projection. ESTIMATED CHANGES Modified src/model_theory/definability.lean + theorem set.definable.image_comp + theorem set.definable.image_comp_embedding + theorem set.definable.image_comp_sum_inl_fin + theorem set.definable.map_expansion + theorem set.definable.mono + theorem set.definable_iff_empty_definable_with_params + theorem set.empty_definable_iff + theorem set.fin.coe_cast_add_zero Modified src/model_theory/terms_and_formulas.lean +/- def first_order.language.Lhom.on_bounded_formula +/- def first_order.language.Lhom.on_formula +/- def first_order.language.Lhom.on_term 2022-03-21 11:08:42 86055c5 split(data/{finset,set}/pointwise): Split off `algebra.pointwise` (#12831) Split `algebra.pointwise` into * `data.set.pointwise`: Pointwise operations on `set` * `data.finset.pointwise`: Pointwise operations on `finset` I'm crediting * The same people for `data.set.pointwise` * Floris for #3541 ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Modified src/algebra/algebra/operations.lean Modified src/algebra/bounds.lean Modified src/algebra/module/pointwise_pi.lean Modified src/algebra/order/module.lean Modified src/algebra/star/pointwise.lean Modified src/data/dfinsupp/interval.lean Modified src/data/finset/finsupp.lean Added src/data/finset/pointwise.lean + theorem finset.coe_mul + theorem finset.coe_one + theorem finset.coe_pow + theorem finset.empty_mul + theorem finset.image_mul_left' + theorem finset.image_mul_left + theorem finset.image_mul_prod + theorem finset.image_mul_right' + theorem finset.image_mul_right + theorem finset.image_one + theorem finset.mem_mul + theorem finset.mem_one + theorem finset.mul_card_le + theorem finset.mul_def + theorem finset.mul_empty + theorem finset.mul_mem_mul + theorem finset.mul_nonempty_iff + theorem finset.mul_singleton + theorem finset.mul_subset_mul + theorem finset.mul_zero_subset + theorem finset.nonempty.mul_zero + theorem finset.nonempty.zero_mul + theorem finset.one_mem_one + theorem finset.one_nonempty + theorem finset.one_subset + theorem finset.preimage_mul_left_one' + theorem finset.preimage_mul_left_one + theorem finset.preimage_mul_left_singleton + theorem finset.preimage_mul_right_one' + theorem finset.preimage_mul_right_one + theorem finset.preimage_mul_right_singleton + theorem finset.singleton_mul + theorem finset.singleton_mul_singleton + theorem finset.singleton_one + theorem finset.subset_mul + theorem finset.zero_mul_subset Modified src/data/real/pointwise.lean Modified src/data/set/intervals/image_preimage.lean Renamed src/algebra/pointwise.lean to src/data/set/pointwise.lean - theorem finset.coe_mul - theorem finset.coe_one - theorem finset.coe_pow - theorem finset.empty_mul - theorem finset.image_mul_left' - theorem finset.image_mul_left - theorem finset.image_mul_prod - theorem finset.image_mul_right' - theorem finset.image_mul_right - theorem finset.image_one - theorem finset.mem_mul - theorem finset.mem_one - theorem finset.mul_card_le - theorem finset.mul_def - theorem finset.mul_empty - theorem finset.mul_mem_mul - theorem finset.mul_nonempty_iff - theorem finset.mul_singleton - theorem finset.mul_subset_mul - theorem finset.mul_zero_subset - theorem finset.nonempty.mul_zero - theorem finset.nonempty.zero_mul - theorem finset.one_mem_one - theorem finset.one_nonempty - theorem finset.one_subset - theorem finset.preimage_mul_left_one' - theorem finset.preimage_mul_left_one - theorem finset.preimage_mul_left_singleton - theorem finset.preimage_mul_right_one' - theorem finset.preimage_mul_right_one - theorem finset.preimage_mul_right_singleton - theorem finset.singleton_mul - theorem finset.singleton_mul_singleton - theorem finset.singleton_one - theorem finset.singleton_zero_mul - theorem finset.subset_mul - theorem finset.zero_mul_subset Modified src/group_theory/order_of_element.lean Modified src/group_theory/submonoid/pointwise.lean Modified src/order/filter/pointwise.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/subsemiring/pointwise.lean Modified src/topology/algebra/monoid.lean 2022-03-21 09:13:23 8161ba2 feat(model_theory/ultraproducts): Ultraproducts and the Compactness Theorem (#12531) Defines `filter.product`, a dependent version of `filter.germ`. Defines a structure on an ultraproduct (a `filter.product` with respect to an ultrafilter). Proves Łoś's Theorem, characterizing when an ultraproduct realizes a formula. Proves the Compactness theorem with ultraproducts. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/model_theory/quotients.lean Modified src/model_theory/terms_and_formulas.lean - def first_order.language.realize_sentence + def first_order.language.sentence.realize Added src/model_theory/ultraproducts.lean + theorem first_order.language.Theory.is_satisfiable_iff_is_finitely_satisfiable + theorem first_order.language.ultraproduct.bounded_formula_realize_cast + theorem first_order.language.ultraproduct.fun_map_cast + theorem first_order.language.ultraproduct.realize_formula_cast + theorem first_order.language.ultraproduct.sentence_realize + theorem first_order.language.ultraproduct.term_realize_cast Modified src/order/filter/germ.lean + def filter.product + def filter.product_setoid 2022-03-21 07:40:25 8e9abe3 feat(measure_theory/constructions/borel_space): generalize a lemma (#12843) Generalize `measurable_limit_of_tendsto_metric_ae` from `at_top : filter ℕ` to any countably generated filter on a nonempty type. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean +/- theorem measurable_limit_of_tendsto_metric_ae 2022-03-21 05:51:55 d902c22 chore(category/abelian/derived): shorten proof (#12847) ESTIMATED CHANGES Modified src/category_theory/abelian/derived.lean 2022-03-21 05:51:54 395019e feat(algebra/homology/additive): dualise statement of chain complex to cochain complex (#12840) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean + def cochain_complex.single₀_map_homological_complex + theorem cochain_complex.single₀_map_homological_complex_hom_app_succ + theorem cochain_complex.single₀_map_homological_complex_hom_app_zero + theorem cochain_complex.single₀_map_homological_complex_inv_app_succ + theorem cochain_complex.single₀_map_homological_complex_inv_app_zero 2022-03-21 05:51:53 69d3d16 feat(polynomial/derivative): tidy+new theorems (#12833) Adds `iterate_derivative_eq_zero` and strengthens other results. New theorems: `iterate_derivative_eq_zero`, `nat_degree_derivative_le` Deleted: `derivative_lhom` - it is one already. Misc: Turn a docstring into a comment Everything else only got moved around + golfed, in order to weaken assumptions. ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean - def polynomial.derivative_lhom - theorem polynomial.derivative_lhom_coe +/- theorem polynomial.derivative_neg +/- theorem polynomial.derivative_sub + theorem polynomial.iterate_derivative_eq_zero +/- theorem polynomial.iterate_derivative_neg +/- theorem polynomial.iterate_derivative_sub + theorem polynomial.nat_degree_derivative_le +/- theorem polynomial.nat_degree_eq_zero_of_derivative_eq_zero Modified src/ring_theory/polynomial/bernstein.lean 2022-03-21 05:51:52 06017e0 feat(order/compare): add 4 dot notation lemmas (#12832) ESTIMATED CHANGES Modified src/order/compare.lean + theorem eq.cmp_eq_eq' + theorem eq.cmp_eq_eq + theorem has_lt.lt.cmp_eq_gt + theorem has_lt.lt.cmp_eq_lt 2022-03-21 05:51:51 f5987b2 chore(data/real/basic): tweak lemmas about `of_cauchy` (#12829) These lemmas are about `real.of_cauchy` not `real.cauchy`, as their name suggests. This also flips the direction of some of the lemmas to be consistent with the zero and one lemmas. Finally, this adds the lemmas about `real.cauchy` that are missing. ESTIMATED CHANGES Modified src/data/real/basic.lean - theorem real.add_cauchy + theorem real.cauchy_add + theorem real.cauchy_inv + theorem real.cauchy_mul + theorem real.cauchy_neg + theorem real.cauchy_one + theorem real.cauchy_zero - theorem real.inv_cauchy +/- theorem real.mk_add +/- theorem real.mk_mul +/- theorem real.mk_neg +/- theorem real.mk_one +/- theorem real.mk_zero - theorem real.mul_cauchy - theorem real.neg_cauchy + theorem real.of_cauchy_add + theorem real.of_cauchy_inv + theorem real.of_cauchy_mul + theorem real.of_cauchy_neg + theorem real.of_cauchy_one + theorem real.of_cauchy_zero - theorem real.one_cauchy - theorem real.zero_cauchy 2022-03-21 05:51:50 772c776 feat(ring_theory/algebraic): Added basic lemmas + golf (#12820) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean +/- theorem is_algebraic_algebra_map +/- theorem is_algebraic_algebra_map_of_is_algebraic + theorem is_algebraic_nat + theorem is_algebraic_one + theorem is_algebraic_zero +/- theorem is_integral.is_algebraic + theorem is_transcendental_of_subsingleton 2022-03-21 05:20:44 60af3bd feat(data/rat/denumerable): Make `mk_rat` into a simp lemma (#12821) ESTIMATED CHANGES Modified src/data/rat/denumerable.lean +/- theorem cardinal.mk_rat 2022-03-20 20:14:43 656f749 feat(analysis/locally_convex): define von Neumann boundedness (#12449) Define the von Neumann boundedness and show elementary properties, including that it defines a bornology. ESTIMATED CHANGES Added src/analysis/locally_convex/bounded.lean + theorem bornology.is_bounded_iff_is_vonN_bounded + theorem bornology.is_vonN_bounded.of_topological_space_le + theorem bornology.is_vonN_bounded.subset + theorem bornology.is_vonN_bounded.union + def bornology.is_vonN_bounded + theorem bornology.is_vonN_bounded_covers + theorem bornology.is_vonN_bounded_empty + theorem bornology.is_vonN_bounded_iff + theorem bornology.is_vonN_bounded_singleton + def bornology.vonN_bornology Modified src/topology/bornology/basic.lean + theorem bornology.is_bounded_of_bounded_iff + theorem bornology.is_cobounded_of_bounded_iff 2022-03-20 15:25:50 9502db1 refactor(group_theory/group_action/basic): Golf definition of action on cosets (#12823) This PR golfs the definition of the left-multiplication action on left cosets. I deleted `mul_left_cosets` since it's the same as `•` and has no API. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean - def mul_action.mul_left_cosets 2022-03-20 12:26:39 f2fa1cf feat(category_theory/abelian/*): add some missing lemmas (#12839) ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.kernel.lift.inv Modified src/category_theory/abelian/homology.lean + theorem homology.map_ι 2022-03-20 00:39:53 cdd0572 chore(ring_theory/algebraic): fix typo + golf (#12834) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean 2022-03-19 23:35:59 6abfb1d feat(analysis/normed_space/spectrum): Prove the Gelfand-Mazur theorem (#12787) **Gelfand-Mazur theorem** For a complex Banach division algebra, the natural `algebra_map ℂ A` is an algebra isomorphism whose inverse is given by selecting the (unique) element of `spectrum ℂ a`. - [x] depends on: #12132 ESTIMATED CHANGES Modified src/analysis/normed_space/spectrum.lean + theorem spectrum.algebra_map_eq_of_mem 2022-03-19 21:04:04 cd012fb chore(ring_theory/ideal): use `ideal.mul_mem_left` instead of `submodule.smul_mem` (#12830) In one place this saves one rewrite. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/basic.lean 2022-03-19 19:33:01 f120076 feat(category_theory): (co)equalizers and (co)kernels when composing with monos/epis (#12828) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.has_coequalizer_epi_comp + theorem category_theory.limits.has_equalizer_comp_mono + def category_theory.limits.is_coequalizer_epi_comp + def category_theory.limits.is_equalizer_comp_mono Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.is_cokernel_epi_comp + def category_theory.limits.is_kernel_comp_mono 2022-03-19 19:33:00 49cd1cc refactor(analysis/seminorm): move topology induced by seminorms to its own file (#12826) Besides the copy and paste I removed the namespace `seminorm` from most parts (it is still there for the boundedness definitions and statements) and updated the module docstrings. No real code has changed. ESTIMATED CHANGES Added src/analysis/locally_convex/with_seminorms.lean + theorem normed_space.to_locally_convex_space' + theorem seminorm.const_is_bounded + theorem seminorm.cont_normed_space_to_with_seminorms + theorem seminorm.cont_with_seminorms_normed_space + theorem seminorm.continuous_from_bounded + def seminorm.is_bounded + theorem seminorm.is_bounded_const + theorem seminorm.is_bounded_sup + def seminorm_add_group_filter_basis + def seminorm_basis_zero + theorem seminorm_basis_zero_add + theorem seminorm_basis_zero_iff + theorem seminorm_basis_zero_intersect + theorem seminorm_basis_zero_mem + theorem seminorm_basis_zero_neg + theorem seminorm_basis_zero_nonempty + theorem seminorm_basis_zero_singleton_mem + theorem seminorm_basis_zero_smul + theorem seminorm_basis_zero_smul_left + theorem seminorm_basis_zero_smul_right + theorem seminorm_basis_zero_zero + def seminorm_module_filter_basis + theorem with_seminorms.to_locally_convex_space + theorem with_seminorms_eq + theorem with_seminorms_of_has_basis + theorem with_seminorms_of_nhds Modified src/analysis/seminorm.lean - theorem normed_space.to_locally_convex_space' - theorem seminorm.const_is_bounded - theorem seminorm.cont_normed_space_to_with_seminorms - theorem seminorm.cont_with_seminorms_normed_space - theorem seminorm.continuous_from_bounded - def seminorm.is_bounded - theorem seminorm.is_bounded_const - theorem seminorm.is_bounded_sup - def seminorm.seminorm_add_group_filter_basis - def seminorm.seminorm_basis_zero - theorem seminorm.seminorm_basis_zero_add - theorem seminorm.seminorm_basis_zero_iff - theorem seminorm.seminorm_basis_zero_intersect - theorem seminorm.seminorm_basis_zero_mem - theorem seminorm.seminorm_basis_zero_neg - theorem seminorm.seminorm_basis_zero_nonempty - theorem seminorm.seminorm_basis_zero_singleton_mem - theorem seminorm.seminorm_basis_zero_smul - theorem seminorm.seminorm_basis_zero_smul_left - theorem seminorm.seminorm_basis_zero_smul_right - theorem seminorm.seminorm_basis_zero_zero - def seminorm.seminorm_module_filter_basis - theorem seminorm.with_seminorms.to_locally_convex_space - theorem seminorm.with_seminorms_eq - theorem seminorm.with_seminorms_of_has_basis - theorem seminorm.with_seminorms_of_nhds 2022-03-19 19:32:59 2660d16 feat(group_theory/group_action/basic): Right action of normalizer on left cosets (#12822) This PR adds the right action of the normalizer on left cosets. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.quotient'.smul_coe + theorem mul_action.quotient'.smul_mk 2022-03-19 17:43:23 48eacc6 chore(*): update to lean 3.42.0c (#12818) ESTIMATED CHANGES Modified leanpkg.toml Modified src/tactic/interactive.lean Modified test/induction.lean + def less_than.lt_lte - theorem less_than.lt_lte Modified test/lint.lean - theorem foo3 Modified test/lint_to_additive_doc.lean + def bar - theorem bar + def baz - theorem baz + def foo - theorem foo + def no_to_additive - theorem no_to_additive + def quux - theorem quux Modified test/local_cache.lean 2022-03-19 14:49:29 42dcf35 chore(algebra/char_p/exp_char): golf char_eq_exp_char_iff (#12825) ESTIMATED CHANGES Modified src/algebra/char_p/exp_char.lean 2022-03-19 11:33:35 3ba1c02 feat(group_theory/subgroup/basic): Alternate version of `mem_normalizer_iff` (#12814) This PR adds an alternate version of `mem_normalizer_iff`, in terms of commuting rather than conjugation. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.mem_normalizer_iff' 2022-03-19 11:33:34 52b9b36 feat(ring_theory/fractional_ideal): fractional ideal is one if and only if ideal is one (#12813) ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_ideal_eq_one_iff +/- theorem fractional_ideal.coe_ideal_eq_zero_iff +/- theorem fractional_ideal.coe_ideal_injective +/- theorem fractional_ideal.coe_ideal_ne_zero +/- theorem fractional_ideal.coe_ideal_ne_zero_iff 2022-03-19 11:33:33 245b614 chore(measure_theory/measure): move subtraction to a new file (#12809) ESTIMATED CHANGES Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean - theorem measure_theory.measure.restrict_sub_eq_restrict_sub_restrict - theorem measure_theory.measure.sub_add_cancel_of_le - theorem measure_theory.measure.sub_apply - theorem measure_theory.measure.sub_apply_eq_zero_of_restrict_le_restrict - theorem measure_theory.measure.sub_def - theorem measure_theory.measure.sub_eq_zero_of_le - theorem measure_theory.measure.sub_le Added src/measure_theory/measure/sub.lean + theorem measure_theory.measure.restrict_sub_eq_restrict_sub_restrict + theorem measure_theory.measure.sub_add_cancel_of_le + theorem measure_theory.measure.sub_apply + theorem measure_theory.measure.sub_apply_eq_zero_of_restrict_le_restrict + theorem measure_theory.measure.sub_def + theorem measure_theory.measure.sub_eq_zero_of_le + theorem measure_theory.measure.sub_le 2022-03-19 11:33:32 dae6155 chore(number_theory/primorial): golf a proof (#12807) Use a new lemma to golf a proof. ESTIMATED CHANGES Modified src/number_theory/primorial.lean 2022-03-19 11:33:31 1d18309 feat(linear_algebra/determinant): no need for `is_domain` (#12805) Nontriviality is all that was actually used, and in some cases the statement is already vacuous in the trivial case. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean +/- def equiv_of_pi_lequiv_pi +/- theorem linear_equiv.det_mul_det_symm +/- theorem linear_equiv.det_symm_mul_det +/- theorem linear_equiv.is_unit_det' +/- theorem linear_map.is_unit_det +/- theorem matrix.det_comm' +/- theorem matrix.det_conj +/- def matrix.index_equiv_of_inv Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/linear_algebra/orientation.lean +/- theorem basis.map_orientation_eq_det_inv_smul Modified src/ring_theory/norm.lean +/- theorem algebra.norm_eq_zero_iff_of_basis +/- theorem algebra.norm_ne_zero_iff_of_basis Modified src/topology/algebra/module/basic.lean 2022-03-19 11:33:30 ef69547 feat(group_theory/finiteness): Define the minimum number of generators (#12765) The PR adds a definition of the minimum number of generators, which will be needed for a statement of Schreier's lemma. ESTIMATED CHANGES Modified src/group_theory/finiteness.lean + theorem group.fg_iff' + def group.rank + theorem group.rank_le + theorem group.rank_spec 2022-03-19 09:56:20 ee4472b feat(group_theory/group_action/embedding): group actions apply on the codomain of embeddings (#12798) ESTIMATED CHANGES Added src/group_theory/group_action/embedding.lean + theorem function.embedding.coe_smul + theorem function.embedding.smul_apply + theorem function.embedding.smul_def 2022-03-19 09:56:19 c9fc9bf refactor(order/filter/pointwise): Cleanup (#12789) * Reduce typeclass assumptions from `monoid` to `has_mul` * Turn lemmas into instances * Use hom classes rather than concrete hom types * Golf ESTIMATED CHANGES Modified src/algebra/pointwise.lean +/- theorem set.image_mul +/- theorem set.preimage_mul_preimage_subset Modified src/order/filter/pointwise.lean +/- theorem filter.comap_mul_comap_le +/- def filter.map_monoid_hom +/- theorem filter.mem_mul +/- theorem filter.mem_one +/- theorem filter.mul_mem_mul +/- theorem filter.ne_bot.mul + theorem filter.one_mem_one +/- theorem filter.tendsto.mul_mul Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean 2022-03-19 09:56:18 2b6b9ff feat(category_theory/abelian/derived): add left_derived_zero_iso_self (#12403) We add `left_derived_zero_iso_self`: the natural isomorphism `(F.left_derived 0) ≅ F` if `preserves_finite_colimits F`. From lean-liquid ESTIMATED CHANGES Modified src/algebra/homology/exact.lean + theorem category_theory.preadditive.exact_of_iso_of_exact' Added src/category_theory/abelian/derived.lean + theorem category_theory.abelian.functor.exact_of_map_projective_resolution + def category_theory.abelian.functor.left_derived_zero_iso_self + def category_theory.abelian.functor.left_derived_zero_to_self_app + theorem category_theory.abelian.functor.left_derived_zero_to_self_app_comp_inv + def category_theory.abelian.functor.left_derived_zero_to_self_app_inv + theorem category_theory.abelian.functor.left_derived_zero_to_self_app_inv_comp + def category_theory.abelian.functor.left_derived_zero_to_self_app_iso + theorem category_theory.abelian.functor.left_derived_zero_to_self_natural + theorem category_theory.abelian.functor.preserves_exact_of_preserves_finite_colimits_of_epi Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.cokernel.desc.inv 2022-03-19 08:22:18 4c60258 chore(ring_theory/dedekind_domain/ideal): golf (#12737) ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_to_equiv + theorem ring_equiv.to_equiv_eq_coe Modified src/ring_theory/dedekind_domain/ideal.lean 2022-03-19 03:04:31 128c096 chore(scripts): update nolints.txt (#12816) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-19 01:22:50 7764c60 feat(*/sort): sorting empty sets/singletons (#12801) ESTIMATED CHANGES Modified src/data/finset/sort.lean + theorem finset.sort_empty + theorem finset.sort_singleton Modified src/data/list/sort.lean + theorem list.merge_sort_nil + theorem list.merge_sort_singleton Modified src/data/multiset/sort.lean + theorem multiset.sort_singleton + theorem multiset.sort_zero 2022-03-18 21:54:51 d04fff9 feat(topology/{order,separation}): several lemmas from an old branch (#12794) * add `mem_nhds_discrete`; * replace the proof of `is_open_implies_is_open_iff` by `iff.rfl`; * add lemmas about `separated`. ESTIMATED CHANGES Modified src/topology/order.lean + theorem mem_nhds_discrete Modified src/topology/separation.lean + theorem separated.disjoint_closure_left + theorem separated.disjoint_closure_right + theorem separated.mono + theorem separated.preimage 2022-03-18 20:21:42 7f1ba1a feat(algebra/char_p/two): add `simp` attribute to some lemmas involving characteristic two identities (#12800) I hope that these `simp` attributes will make working with `char_p R 2` smooth! I felt clumsy with this section, so hopefully this is an improvement. ESTIMATED CHANGES Modified src/algebra/char_p/two.lean +/- theorem char_two.add_self_eq_zero + theorem char_two.bit0_apply_eq_zero +/- theorem char_two.bit0_eq_zero + theorem char_two.bit1_apply_eq_one +/- theorem char_two.bit1_eq_one +/- theorem char_two.neg_eq +/- theorem char_two.sub_eq_add 2022-03-18 20:21:41 e282089 feat(linear_algebra/sesquilinear_form): preliminary results for nondegeneracy (#12269) Several lemmas needed to define nondegenerate bilinear forms and show that the canonical pairing of the algebraic dual is nondegenerate. Add domain restriction of bilinear maps in the second component and in both compenents. Some type-class generalizations for symmetric, alternating, and reflexive sesquilinear forms. ESTIMATED CHANGES Modified src/algebra/quandle.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/bilinear_map.lean + theorem linear_map.congr_fun₂ + def linear_map.dom_restrict₁₂ + theorem linear_map.dom_restrict₁₂_apply + def linear_map.dom_restrict₂ + theorem linear_map.dom_restrict₂_apply + theorem linear_map.ext_basis + theorem linear_map.flip_flip + theorem linear_map.sum_repr_mul_repr_mul Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.mk_span_singleton_apply' Modified src/linear_algebra/matrix/bilinear_form.lean Modified src/linear_algebra/sesquilinear_form.lean +/- def linear_map.is_Ortho +/- theorem linear_map.is_Ortho_def + theorem linear_map.is_Ortho_flip + theorem linear_map.is_alt_iff_eq_neg_flip +/- theorem linear_map.is_ortho_def + theorem linear_map.is_ortho_flip + theorem linear_map.is_symm.dom_restrict_symm +/- theorem linear_map.is_symm.is_refl +/- theorem linear_map.is_symm.ortho_comm +/- def linear_map.is_symm + theorem linear_map.is_symm_iff_eq_flip 2022-03-18 20:21:40 076490a feat(group_theory/nilpotent): the is_nilpotent_of_finite_tfae theorem (#11835) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem is_nilpotent_of_finite_tfae 2022-03-18 20:21:38 8c89ae6 feat(ring_theory/unique_factorization_domain): some lemmas relating shapes of factorisations (#9345) Given elements `a`, `b` in a `unique_factorization_monoid`, if there is an order-preserving bijection between the sets of factors of `associates.mk a` and `associates.mk b` then the prime factorisations of `a` and `b` have the same shape. ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.is_atom_iff + theorem dvd_prime_pow Modified src/algebra/squarefree.lean + theorem multiplicity.finite_prime_left Added src/ring_theory/chain_of_divisors.lean + theorem divisor_chain.card_subset_divisors_le_length_of_chain + theorem divisor_chain.element_of_chain_eq_pow_second_of_chain + theorem divisor_chain.element_of_chain_not_is_unit_of_index_ne_zero + theorem divisor_chain.eq_pow_second_of_chain_of_has_chain + theorem divisor_chain.eq_second_of_chain_of_prime_dvd + theorem divisor_chain.exists_chain_of_prime_pow + theorem divisor_chain.first_of_chain_is_unit + theorem divisor_chain.is_prime_pow_of_has_chain + theorem divisor_chain.second_of_chain_is_irreducible + theorem multiplicity_prime_le_multiplicity_image_by_factor_order_iso + theorem pow_image_of_prime_by_factor_order_iso_dvd Modified src/ring_theory/ideal/operations.lean + theorem ideal.comap_le_comap_iff_of_surjective Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.exists_associated_prime_pow_of_unique_normalized_factor + theorem unique_factorization_monoid.normalized_factors_of_irreducible_pow 2022-03-18 18:32:32 0c52d3b doc(src/tactic/doc_commands): typo “between” → “better” (#12804) ESTIMATED CHANGES Modified src/tactic/doc_commands.lean 2022-03-18 18:32:31 d3703fe doc(archive/100-theorems-list/9_area_of_a_circle): fix `×` (#12803) this file used to have the category theory `\cross` as opposed to `\x` ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean 2022-03-18 18:32:30 f4e7f82 chore(model_theory/definability): Change variable order in definability (#12802) Changes `first_order.language.definable` and `first_order.language.definable_set` to `set.definable` and `set.definable_set`. Makes `set.definable` a `def` rather than a `structure`. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/model_theory/definability.lean - theorem first_order.language.definable.compl - theorem first_order.language.definable.image_comp_equiv - theorem first_order.language.definable.inter - theorem first_order.language.definable.preimage_comp - theorem first_order.language.definable.sdiff - theorem first_order.language.definable.union - structure first_order.language.definable - theorem first_order.language.definable_empty - theorem first_order.language.definable_finset_bInter - theorem first_order.language.definable_finset_bUnion - theorem first_order.language.definable_finset_inf - theorem first_order.language.definable_finset_sup +/- def first_order.language.definable_set - theorem first_order.language.definable_univ - def first_order.language.definable₁ - def first_order.language.definable₂ + theorem set.definable.compl + theorem set.definable.image_comp_equiv + theorem set.definable.inter + theorem set.definable.preimage_comp + theorem set.definable.sdiff + theorem set.definable.union + def set.definable + theorem set.definable_empty + theorem set.definable_finset_bInter + theorem set.definable_finset_bUnion + theorem set.definable_finset_inf + theorem set.definable_finset_sup + theorem set.definable_univ + def set.definable₁ + def set.definable₂ 2022-03-18 18:32:29 f6e85fc feat(order/rel_iso): Add `subrel` instances (#12758) ESTIMATED CHANGES Modified src/order/rel_iso.lean 2022-03-18 18:32:28 fdd7e98 feat(set_theory/*): Redefine `sup f` as `supr f` (#12657) ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/linear_algebra/dimension.lean Modified src/measure_theory/card_measurable_space.lean Modified src/set_theory/cardinal.lean + theorem cardinal.bdd_above_range - theorem cardinal.nonempty_sup +/- theorem cardinal.sup_le + theorem cardinal.sup_le_iff Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.Sup_eq_bsup + theorem ordinal.Sup_eq_sup + theorem ordinal.bdd_above_range +/- theorem ordinal.blsub_le + theorem ordinal.blsub_le_iff +/- theorem ordinal.bsup_le + theorem ordinal.bsup_le_iff +/- theorem ordinal.lsub_le + theorem ordinal.lsub_le_iff - theorem ordinal.lt_sup_of_ne_sup + theorem ordinal.ne_sup_iff_lt_sup +/- theorem ordinal.nfp_le + theorem ordinal.nfp_le_iff +/- theorem ordinal.sup_le + theorem ordinal.sup_le_iff - theorem ordinal.sup_nonempty Modified src/set_theory/ordinal_topology.lean Modified src/set_theory/principal.lean 2022-03-18 18:32:27 290ad75 feat(model_theory/terms_and_formulas): Atomic, Quantifier-Free, and Prenex Formulas (#12557) Provides a few induction principles for formulas Defines atomic formulas with `first_order.language.bounded_formula.is_atomic` Defines quantifier-free formulas with `first_order.language.bounded_formula.is_qf` Defines `first_order.language.bounded_formula.is_prenex` indicating that a formula is in prenex normal form. ESTIMATED CHANGES Modified src/model_theory/terms_and_formulas.lean + theorem first_order.language.bounded_formula.is_atomic.is_prenex + theorem first_order.language.bounded_formula.is_atomic.is_qf + theorem first_order.language.bounded_formula.is_atomic.relabel + inductive first_order.language.bounded_formula.is_atomic + theorem first_order.language.bounded_formula.is_prenex.induction_on_all_not + theorem first_order.language.bounded_formula.is_prenex.relabel + inductive first_order.language.bounded_formula.is_prenex + theorem first_order.language.bounded_formula.is_qf.induction_on_inf_not + theorem first_order.language.bounded_formula.is_qf.induction_on_sup_not + theorem first_order.language.bounded_formula.is_qf.is_prenex + theorem first_order.language.bounded_formula.is_qf.not + theorem first_order.language.bounded_formula.is_qf.relabel + inductive first_order.language.bounded_formula.is_qf + theorem first_order.language.bounded_formula.is_qf_bot 2022-03-18 18:32:25 d17ecf9 feat(category_theory/abelian) : injective resolutions of an object in a category with enough injectives (#12545) This pr dualises `src/category_theory/preadditive/projective_resolution.lean`. But since half of the file requires `abelian` assumption, I moved it to `src/category_theory/abelian/*`. The reason it needs `abelian` assumption is because I want class inference to deduce `exact f g` from `exact g.op f.op`. ESTIMATED CHANGES Modified src/category_theory/abelian/injective_resolution.lean + def category_theory.InjectiveResolution.of + def category_theory.InjectiveResolution.of_cocomplex + theorem category_theory.exact_f_d + def category_theory.injective_resolution.desc + def category_theory.injective_resolution.ι + def category_theory.injective_resolution + def category_theory.injective_resolutions 2022-03-18 16:51:05 80b8d19 feat(model_theory/terms_and_formulas): Language maps act on terms, formulas, sentences, and theories (#12609) Defines the action of language maps on terms, formulas, sentences, and theories Shows that said action commutes with realization ESTIMATED CHANGES Modified src/model_theory/terms_and_formulas.lean + theorem first_order.language.Lhom.mem_on_Theory + def first_order.language.Lhom.on_Theory + theorem first_order.language.Lhom.on_Theory_model + def first_order.language.Lhom.on_bounded_formula + def first_order.language.Lhom.on_formula + def first_order.language.Lhom.on_sentence + def first_order.language.Lhom.on_term + theorem first_order.language.Lhom.realize_on_bounded_formula + theorem first_order.language.Lhom.realize_on_formula + theorem first_order.language.Lhom.realize_on_sentence + theorem first_order.language.Lhom.realize_on_term 2022-03-18 16:51:04 bf690dd feat(archive/100-theorems-list): add proof of thm 81 (#7274) ESTIMATED CHANGES Added archive/100-theorems-list/81_sum_of_prime_reciprocals_diverges.lean + theorem card_le_mul_sum + theorem card_le_two_pow + theorem card_le_two_pow_mul_sqrt + theorem range_sdiff_eq_bUnion + theorem real.tendsto_sum_one_div_prime_at_top + theorem sum_lt_half_of_not_tendsto Modified docs/100.yaml Modified src/data/finset/card.lean + theorem finset.card_sdiff_add_card_eq_card 2022-03-18 15:25:55 b49bc77 feat(data/nat/prime): add two lemmas with nat.primes, mul and dvd (#12780) These lemmas are close to available lemmas, but I could not actually find them. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.dvd_iff_eq + theorem nat.prime_mul_iff 2022-03-18 14:52:26 5a547aa fix(ring_theory/power_series/basic): remove duplicate instance (#12744) ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean 2022-03-18 14:52:25 14ee5e0 feat(number_theory/arithmetic_function): add eq of multiplicative functions (#12689) To show that two multiplicative functions are equal, it suffices to show that they are equal on prime powers. This is a commonly used strategy when two functions are known to be multiplicative (e.g., they're both Dirichlet convolutions of simpler multiplicative functions). This will be used in several ongoing commits to prove asymptotics for squarefree numbers. ESTIMATED CHANGES Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.is_multiplicative.eq_iff_eq_on_prime_powers 2022-03-18 13:10:58 ee8db20 feat(measure_theory/group/action): add `null_measurable_set.smul` (#12793) Also add `null_measurable_set.preimage` and `ae_disjoint.preimage`. ESTIMATED CHANGES Modified src/measure_theory/group/action.lean + theorem measure_theory.null_measurable_set.smul Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_disjoint.preimage + theorem measure_theory.null_measurable_set.preimage 2022-03-18 13:10:57 2541387 refactor(data/list/big_operators): review API (#12782) * merge `prod_monoid` into `big_operators`; * review typeclass assumptions in some lemmas; * use `to_additive` in more lemmas. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/graded_monoid.lean Modified src/data/list/big_operators.lean + theorem list.eq_of_prod_take_eq - theorem list.eq_of_sum_take_eq + theorem list.exists_le_of_prod_le' - theorem list.exists_le_of_sum_le + theorem list.exists_lt_of_prod_lt' - theorem list.exists_lt_of_sum_lt + theorem list.monotone_prod_take - theorem list.monotone_sum_take +/- theorem list.one_le_prod_of_one_le + theorem list.pow_card_le_prod + theorem list.prod_commute +/- theorem list.prod_eq_one_iff + theorem list.prod_eq_pow_card + theorem list.prod_le_pow_card + theorem list.prod_le_prod' + theorem list.prod_lt_prod' + theorem list.prod_lt_prod_of_ne_nil + theorem list.prod_repeat +/- theorem list.sum_map_mul_left +/- theorem list.sum_map_mul_right Deleted src/data/list/prod_monoid.lean - theorem list.prod_commute - theorem list.prod_eq_pow_card - theorem list.prod_le_pow_card - theorem list.prod_repeat 2022-03-18 13:10:56 241d63d chore(algebraic_geometry/prime_spectrum/basic): remove TODO (#12768) Sober topological spaces has been defined and it has been proven (in this file) that prime spectrum is sober ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean 2022-03-18 12:36:36 cfa7f6a feat(group_theory/index): Intersection of finite index subgroups (#12776) This PR proves that if `H` and `K` are of finite index in `L`, then so is `H ⊓ K`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.index_inf_ne_zero + theorem subgroup.relindex_inf_ne_zero 2022-03-18 10:11:28 5ecd27a refactor(topology/algebra/field): make `topological_division_ring` extend `has_continuous_inv₀` (#12778) Topological division ring had been rolling its own `continuous_inv` field which was almost identical to the `continuous_at_inv₀` field of `has_continuous_inv₀`. Here we refactor so that `topological_division_ring` extends `has_continuous_inv₀` instead. - [x] depends on: #12770 ESTIMATED CHANGES Modified src/topology/algebra/field.lean Modified src/topology/algebra/uniform_field.lean Modified src/topology/algebra/valued_field.lean 2022-03-18 01:33:57 a7cad67 doc(overview): some additions to the Analysis section (#12791) ESTIMATED CHANGES Modified docs/overview.yaml 2022-03-18 00:28:28 a32d58b feat(analysis/*): generalize `set_smul_mem_nhds_zero` to topological vector spaces (#12779) The lemma holds for arbitrary topological vector spaces and has nothing to do with normed spaces. ESTIMATED CHANGES Modified src/analysis/normed_space/pointwise.lean - theorem set_smul_mem_nhds_zero - theorem set_smul_mem_nhds_zero_iff Modified src/topology/algebra/const_mul_action.lean + theorem set_smul_mem_nhds_smul + theorem set_smul_mem_nhds_smul_iff + theorem set_smul_mem_nhds_zero_iff 2022-03-18 00:28:27 adcfc58 chore(data/matrix/block): Do not print `matrix.from_blocks` with dot notation (#12774) `A.from_blocks B C D` is weird and asymmetric compared to `from_blocks A B C D`. In future we might want to introduce notation. ESTIMATED CHANGES Modified src/data/matrix/block.lean 2022-03-17 22:40:49 cf8c5ff feat(algebra/pointwise): Subtraction/division of sets (#12694) Define pointwise subtraction/division on `set`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.Inter_div_subset + theorem set.Inter₂_div_subset + theorem set.Union_div + theorem set.Union_div_left_image + theorem set.Union_div_right_image + theorem set.Union₂_div + theorem set.div_Inter_subset + theorem set.div_Inter₂_subset + theorem set.div_Union + theorem set.div_Union₂ + theorem set.div_empty + theorem set.div_inter_subset + theorem set.div_mem_div + theorem set.div_singleton + theorem set.div_subset_div + theorem set.div_subset_div_left + theorem set.div_subset_div_right + theorem set.div_union + theorem set.empty_div + theorem set.image2_div + theorem set.image_div_prod + theorem set.inter_div_subset + theorem set.mem_div + theorem set.singleton_div + theorem set.singleton_div_singleton + theorem set.union_div 2022-03-17 22:40:48 32e5b6b feat(model_theory/terms_and_formulas): Casting and lifting terms and formulas (#12467) Defines `bounded_formula.cast_le`, which maps the `fin`-indexed variables with `fin.cast_le` Defines `term.lift_at` and `bounded_formula.lift_at`, which raise `fin`-indexed variables above a certain threshold ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.add_nat_one + theorem fin.cast_cast_succ + theorem fin.cast_last + theorem fin.cast_le_of_eq + theorem fin.cast_zero Modified src/data/sum/basic.lean + theorem sum.elim_comp_map Modified src/model_theory/terms_and_formulas.lean + def first_order.language.bounded_formula.cast_le + def first_order.language.bounded_formula.lift_at + theorem first_order.language.bounded_formula.realize_all_lift_at_one_self + theorem first_order.language.bounded_formula.realize_cast_le_of_eq + theorem first_order.language.bounded_formula.realize_lift_at + theorem first_order.language.bounded_formula.realize_lift_at_one + theorem first_order.language.bounded_formula.realize_lift_at_one_self + theorem first_order.language.bounded_formula.semantically_equivalent_all_lift_at + def first_order.language.term.lift_at + theorem first_order.language.term.realize_lift_at 2022-03-17 22:40:47 a26dfc4 feat(analysis/normed_space/basic): add `normed_division_ring` (#12132) This defines normed division rings and generalizes some of the lemmas that applied to normed fields instead to normed division rings. This breaks one `ac_refl`; although this could be resolved by using `simp only {canonize_instances := tt}` first, it's easier to just tweak the proof. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/normed/normed_field.lean Modified src/analysis/quaternion.lean - theorem quaternion.norm_mul 2022-03-17 18:31:29 2cb5edb chore(topology/algebra/group_with_zero): mark `has_continuous_inv₀` as a `Prop` (#12770) Since the type was not explicitly given, Lean marked this as a `Type`. ESTIMATED CHANGES Modified src/topology/algebra/group_with_zero.lean 2022-03-17 18:31:28 3e6e34e feat(linear_algebra/matrix): The Weinstein–Aronszajn identity (#12767) Notably this includes the proof of the determinant of a block matrix, which we didn't seem to have in the general case. This also renames some of the lemmas about determinants of block matrices, and adds some missing API for `inv_of` on matrices. There's some discussion at https://math.stackexchange.com/q/4105846/1896 about whether this name is appropriate, and whether it should be called "Sylvester's determinant theorem" instead. ESTIMATED CHANGES Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_from_blocks_zero₁₂ + theorem matrix.det_from_blocks_zero₂₁ - theorem matrix.det_one_add_col_mul_row - theorem matrix.lower_two_block_triangular_det - theorem matrix.upper_two_block_triangular_det Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.det_from_blocks_one₁₁ + theorem matrix.det_from_blocks_one₂₂ + theorem matrix.det_from_blocks₁₁ + theorem matrix.det_from_blocks₂₂ + theorem matrix.det_mul_add_one_comm + theorem matrix.det_one_add_col_mul_row + theorem matrix.det_one_add_mul_comm + theorem matrix.det_one_sub_mul_comm 2022-03-17 18:31:27 6bfbb49 docs(algebra/order/floor): Update floor_semiring docs to reflect it's just an ordered_semiring (#12756) The docs say that `floor_semiring` is a linear ordered semiring, but it is only an `ordered_semiring` in the code. Change the docs to reflect this fact. ESTIMATED CHANGES Modified src/algebra/order/floor.lean 2022-03-17 18:31:26 ca80c8b feat(data/nat/sqrt_norm_num): norm_num extension for sqrt (#12735) Inspired by https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/2.20is.20not.20a.20square . The norm_num extension has to go in a separate file from `data.nat.sqrt` because `data.nat.sqrt` is a dependency of `norm_num`. ESTIMATED CHANGES Modified src/data/nat/prime.lean Added src/data/nat/sqrt_norm_num.lean + theorem norm_num.is_sqrt Modified test/norm_num_ext.lean 2022-03-17 18:31:25 e944a99 feat(algebraic_geometry/projective_spectrum) : lemmas about `vanishing_ideal` and `zero_locus` (#12730) This pr mimics the corresponding construction in `Spec`; other than `projective_spectrum.basic_open_eq_union_of_projection` everything else is a direct copy. ESTIMATED CHANGES Modified src/algebraic_geometry/projective_spectrum/topology.lean + theorem projective_spectrum.as_ideal_le_as_ideal + theorem projective_spectrum.as_ideal_lt_as_ideal + def projective_spectrum.basic_open + theorem projective_spectrum.basic_open_eq_union_of_projection + theorem projective_spectrum.basic_open_eq_zero_locus_compl + theorem projective_spectrum.basic_open_mul + theorem projective_spectrum.basic_open_mul_le_left + theorem projective_spectrum.basic_open_mul_le_right + theorem projective_spectrum.basic_open_one + theorem projective_spectrum.basic_open_pow + theorem projective_spectrum.basic_open_zero + theorem projective_spectrum.gc_homogeneous_ideal + theorem projective_spectrum.gc_ideal + theorem projective_spectrum.gc_set + theorem projective_spectrum.homogeneous_ideal_le_vanishing_ideal_zero_locus + theorem projective_spectrum.ideal_le_vanishing_ideal_zero_locus + theorem projective_spectrum.is_closed_iff_zero_locus + theorem projective_spectrum.is_closed_zero_locus + theorem projective_spectrum.is_open_basic_open + theorem projective_spectrum.is_open_iff + theorem projective_spectrum.is_topological_basis_basic_opens + theorem projective_spectrum.le_iff_mem_closure + theorem projective_spectrum.mem_basic_open + theorem projective_spectrum.mem_coe_basic_open + theorem projective_spectrum.mem_compl_zero_locus_iff_not_mem + theorem projective_spectrum.subset_vanishing_ideal_zero_locus + theorem projective_spectrum.subset_zero_locus_iff_subset_vanishing_ideal + theorem projective_spectrum.subset_zero_locus_vanishing_ideal + theorem projective_spectrum.sup_vanishing_ideal_le + theorem projective_spectrum.union_zero_locus + theorem projective_spectrum.vanishing_ideal_Union + theorem projective_spectrum.vanishing_ideal_anti_mono + theorem projective_spectrum.vanishing_ideal_closure + theorem projective_spectrum.vanishing_ideal_union + theorem projective_spectrum.vanishing_ideal_univ + theorem projective_spectrum.zero_locus_Union + theorem projective_spectrum.zero_locus_anti_mono + theorem projective_spectrum.zero_locus_anti_mono_homogeneous_ideal + theorem projective_spectrum.zero_locus_anti_mono_ideal + theorem projective_spectrum.zero_locus_bUnion + theorem projective_spectrum.zero_locus_bot + theorem projective_spectrum.zero_locus_empty + theorem projective_spectrum.zero_locus_empty_of_one_mem + theorem projective_spectrum.zero_locus_inf + theorem projective_spectrum.zero_locus_mul_homogeneous_ideal + theorem projective_spectrum.zero_locus_mul_ideal + theorem projective_spectrum.zero_locus_singleton_mul + theorem projective_spectrum.zero_locus_singleton_one + theorem projective_spectrum.zero_locus_singleton_pow + theorem projective_spectrum.zero_locus_singleton_zero + theorem projective_spectrum.zero_locus_sup_homogeneous_ideal + theorem projective_spectrum.zero_locus_sup_ideal + theorem projective_spectrum.zero_locus_supr_homogeneous_ideal + theorem projective_spectrum.zero_locus_supr_ideal + theorem projective_spectrum.zero_locus_union + theorem projective_spectrum.zero_locus_univ + theorem projective_spectrum.zero_locus_vanishing_ideal_eq_closure 2022-03-17 17:30:04 a1bdadd chore(topology/metric_space/hausdorff_distance): move two lemmas (#12771) Remove the dependence of `topology/metric_space/hausdorff_distance` on `analysis.normed_space.basic`, by moving out two lemmas. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/riesz_lemma.lean + theorem metric.closed_ball_inf_dist_compl_subset_closure' + theorem metric.closed_ball_inf_dist_compl_subset_closure Modified src/topology/metric_space/hausdorff_distance.lean - theorem metric.closed_ball_inf_dist_compl_subset_closure' - theorem metric.closed_ball_inf_dist_compl_subset_closure Modified src/topology/metric_space/pi_nat.lean Modified src/topology/metric_space/polish.lean 2022-03-17 11:06:31 11b2f36 feat(algebraic_topology/fundamental_groupoid): Fundamental groupoid of punit (#12757) Proves the equivalence of the fundamental groupoid of punit and punit ESTIMATED CHANGES Added src/algebraic_topology/fundamental_groupoid/punit.lean + def fundamental_groupoid.punit_equiv_discrete_punit 2022-03-17 11:06:30 cd196a8 feat(group_theory/order_of_element): 1 is finite order, as is g⁻¹ (#12749) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem is_of_fin_order_inv + theorem is_of_fin_order_inv_iff + theorem is_of_fin_order_one 2022-03-17 11:06:29 c9c4f40 chore(topology/compact_open): remove `continuous_map.ev`, and rename related lemmas to `eval'` (#12738) This: * Eliminates `continuous_map.ev α β` in favor of `(λ p : C(α, β) × α, p.1 p.2)`, as this unifies better and does not require lean to unfold `ev` at the right time. * Renames `continuous_map.continuous_evalx` to `continuous_map.continuous_eval_const` to match the `smul_const`-style names. * Renames `continuous_map.continuous_ev` to `continuous_map.continuous_eval'` to match `continuous_map.continuous_eval`. * Renames `continuous_map.continuous_ev₁` to `continuous_map.continuous_eval_const'`. * Adds `continuous_map.continuous_coe'` to match `continuous_map.continuous_coe`. * Golfs some nearby lemmas. The unprimed lemma names have the same statement but different typeclasses, so the `ev` lemmas have taken the primed name. See [this zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Evaluation.20of.20continuous.20functions.20is.20continuous/near/275502201) for discussion about whether one set of lemmas can be removed. ESTIMATED CHANGES Modified src/analysis/ODE/picard_lindelof.lean Modified src/topology/compact_open.lean +/- def continuous_map.coev + theorem continuous_map.continuous_coe' - theorem continuous_map.continuous_ev + theorem continuous_map.continuous_eval' + theorem continuous_map.continuous_eval_const' - theorem continuous_map.continuous_ev₁ - def continuous_map.ev Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.continuous_eval_const - theorem bounded_continuous_function.continuous_evalx Modified src/topology/continuous_function/compact.lean + theorem continuous_map.continuous_eval_const - theorem continuous_map.continuous_evalx Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2022-03-17 11:06:28 a6158f1 feat(group_theory/subgroup/basic): One-sided closure induction lemmas (#12725) This PR adds one-sided closure induction lemmas, which I will need for Schreier's lemma. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.closure_induction_left + theorem subgroup.closure_induction_right Modified src/group_theory/submonoid/membership.lean + theorem submonoid.closure_induction_left + theorem submonoid.closure_induction_right 2022-03-17 11:06:27 b1bf390 feat(number_theory/function_field): the ring of integers of a function field is not a field (#12705) ESTIMATED CHANGES Modified src/data/polynomial/div.lean + theorem polynomial.not_is_field Modified src/number_theory/function_field.lean + theorem algebra_map_injective + theorem function_field.ring_of_integers.algebra_map_injective + theorem function_field.ring_of_integers.not_is_field 2022-03-17 10:35:37 c3ecf00 feat(group_theory/sylow): direct product of sylow groups if all normal (#11778) ESTIMATED CHANGES Modified src/group_theory/noncomm_pi_coprod.lean Modified src/group_theory/sylow.lean + def sylow.direct_product_of_normal 2022-03-17 09:56:23 31391dc feat(model_theory/basic, elementary_maps): Uses `fun_like` approach for first-order maps (#12755) Introduces classes `hom_class`, `strong_hom_class` to describe classes of first-order maps. ESTIMATED CHANGES Modified src/model_theory/basic.lean +/- structure first_order.language.embedding + theorem first_order.language.equiv.bijective +/- theorem first_order.language.equiv.coe_injective +/- theorem first_order.language.equiv.injective + theorem first_order.language.equiv.surjective - theorem first_order.language.hom.coe_injective + theorem first_order.language.hom_class.map_constants + def first_order.language.hom_class.strong_hom_class_of_is_algebraic Modified src/model_theory/elementary_maps.lean +/- theorem first_order.language.elementary_embedding.coe_injective 2022-03-17 08:18:32 9d7a664 feat(algebra/parity + *): generalize lemmas about parity (#12761) I moved more even/odd lemmas from nat/int to general semirings/rings. Some files that explicitly used the nat/int namespace were changed along the way. ESTIMATED CHANGES Modified src/algebra/geom_sum.lean Modified src/algebra/parity.lean + theorem add_monoid_hom.even +/- theorem even.add_even +/- theorem even.add_odd + theorem even.mul_left + theorem even.mul_right + theorem even.pow_of_ne_zero + theorem even.sub_even + theorem even.sub_odd + theorem even_neg_two + theorem even_two + theorem even_two_mul + theorem even_zero +/- theorem odd.add_even +/- theorem odd.add_odd + theorem odd.mul_odd + theorem odd.pow + theorem odd.sub_even + theorem odd.sub_odd + theorem odd_neg_one + theorem odd_one + theorem odd_two_mul_add_one + theorem ring_hom.odd Modified src/analysis/convex/specific_functions.lean Modified src/data/int/parity.lean - theorem int.even.mul_left - theorem int.even.mul_right - theorem int.even.sub_even - theorem int.even.sub_odd - theorem int.even_bit0 - theorem int.even_zero - theorem int.odd.mul - theorem int.odd.sub_even - theorem int.odd.sub_odd Modified src/data/nat/parity.lean - theorem nat.even.mul_left - theorem nat.even.mul_right - theorem nat.even_bit0 - theorem nat.even_zero - theorem nat.odd.mul Modified src/number_theory/cyclotomic/discriminant.lean 2022-03-17 07:17:48 3ba25ea feat(topology/algebra/const_mul_action): add is_closed smul lemmas (#12747) ESTIMATED CHANGES Modified src/topology/algebra/const_mul_action.lean + theorem is_closed.smul_of_ne_zero + theorem is_closed.smul₀ 2022-03-17 07:17:46 87ab09c feat(category_theory/abelian/injective_resolution): homotopy between descents of morphism and two injective resolutions (#12743) This pr contains the following * `category_theory.InjectiveResolution.desc_homotopy`: Any two descents of the same morphism are homotopic. * `category_theory.InjectiveResolution.homotopy_equiv`: Any two injective resolutions of the same object are homotopically equivalent. ESTIMATED CHANGES Modified src/category_theory/abelian/injective_resolution.lean + def category_theory.InjectiveResolution.desc_comp_homotopy + def category_theory.InjectiveResolution.desc_homotopy + def category_theory.InjectiveResolution.desc_homotopy_zero + def category_theory.InjectiveResolution.desc_homotopy_zero_one + def category_theory.InjectiveResolution.desc_homotopy_zero_succ + def category_theory.InjectiveResolution.desc_homotopy_zero_zero + def category_theory.InjectiveResolution.desc_id_homotopy + def category_theory.InjectiveResolution.homotopy_equiv + theorem category_theory.InjectiveResolution.homotopy_equiv_hom_ι + theorem category_theory.InjectiveResolution.homotopy_equiv_inv_ι 2022-03-17 06:22:26 7000efb refactor(analysis/specific_limits): split into two files (#12759) Split the 1200-line file `analysis.specific_limits` into two: - `analysis.specific_limits.normed` imports `normed_space` and covers limits in normed rings/fields - `analysis.specific_limits.basic` imports only topology, and is still a bit of a grab-bag, covering limits in metric spaces, ordered rings, `ennreal`, etc. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/box_integral/box/subbox_induction.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/hofer.lean Modified src/analysis/normed/group/hom.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/units.lean Added src/analysis/specific_limits/basic.lean + theorem aux_has_sum_of_le_geometric + theorem cauchy_seq_of_edist_le_geometric + theorem cauchy_seq_of_edist_le_geometric_two + theorem cauchy_seq_of_le_geometric + theorem cauchy_seq_of_le_geometric_two + theorem dist_le_of_le_geometric_of_tendsto + theorem dist_le_of_le_geometric_of_tendsto₀ + theorem dist_le_of_le_geometric_two_of_tendsto + theorem dist_le_of_le_geometric_two_of_tendsto₀ + theorem edist_le_of_edist_le_geometric_of_tendsto + theorem edist_le_of_edist_le_geometric_of_tendsto₀ + theorem edist_le_of_edist_le_geometric_two_of_tendsto + theorem edist_le_of_edist_le_geometric_two_of_tendsto₀: + theorem ennreal.exists_pos_sum_of_encodable' + theorem ennreal.exists_pos_sum_of_encodable + theorem ennreal.exists_pos_tsum_mul_lt_of_encodable + theorem ennreal.tendsto_pow_at_top_nhds_0_of_lt_1 + theorem ennreal.tsum_geometric + theorem factorial_tendsto_at_top + theorem geom_le + theorem geom_lt + theorem has_sum_geometric_of_lt_1 + theorem has_sum_geometric_two' + theorem has_sum_geometric_two + theorem le_geom + theorem lt_geom + theorem nat.tendsto_pow_at_top_at_top_of_one_lt + theorem nnreal.exists_pos_sum_of_encodable + theorem nnreal.has_sum_geometric + theorem nnreal.summable_geometric + theorem nnreal.tendsto_const_div_at_top_nhds_0_nat + theorem nnreal.tendsto_inverse_at_top_nhds_0_nat + theorem nnreal.tendsto_pow_at_top_nhds_0_of_lt_1 + def pos_sum_of_encodable + theorem set.countable.exists_pos_forall_sum_le + theorem set.countable.exists_pos_has_sum_le + theorem sum_geometric_two_le + theorem summable_geometric_of_lt_1 + theorem summable_geometric_two' + theorem summable_geometric_two + theorem summable_geometric_two_encode + theorem summable_one_div_pow_of_le + theorem tendsto_add_one_pow_at_top_at_top_of_pos + theorem tendsto_at_top_of_geom_le + theorem tendsto_const_div_at_top_nhds_0_nat + theorem tendsto_factorial_div_pow_self_at_top + theorem tendsto_inverse_at_top_nhds_0_nat + theorem tendsto_nat_ceil_mul_div_at_top + theorem tendsto_nat_floor_mul_div_at_top + theorem tendsto_one_div_add_at_top_nhds_0_nat + theorem tendsto_pow_at_top_at_top_of_one_lt + theorem tendsto_pow_at_top_nhds_0_of_lt_1 + theorem tendsto_pow_at_top_nhds_within_0_of_lt_1 + theorem tsum_geometric_inv_two + theorem tsum_geometric_inv_two_ge + theorem tsum_geometric_nnreal + theorem tsum_geometric_of_lt_1 + theorem tsum_geometric_two' + theorem tsum_geometric_two + theorem uniformity_basis_dist_pow_of_lt_1 Renamed src/analysis/specific_limits.lean to src/analysis/specific_limits/normed.lean - theorem aux_has_sum_of_le_geometric - theorem cauchy_seq_of_edist_le_geometric - theorem cauchy_seq_of_edist_le_geometric_two - theorem cauchy_seq_of_le_geometric - theorem cauchy_seq_of_le_geometric_two - theorem dist_le_of_le_geometric_of_tendsto - theorem dist_le_of_le_geometric_of_tendsto₀ - theorem dist_le_of_le_geometric_two_of_tendsto - theorem dist_le_of_le_geometric_two_of_tendsto₀ - theorem edist_le_of_edist_le_geometric_of_tendsto - theorem edist_le_of_edist_le_geometric_of_tendsto₀ - theorem edist_le_of_edist_le_geometric_two_of_tendsto - theorem edist_le_of_edist_le_geometric_two_of_tendsto₀: - theorem ennreal.exists_pos_sum_of_encodable' - theorem ennreal.exists_pos_sum_of_encodable - theorem ennreal.exists_pos_tsum_mul_lt_of_encodable - theorem ennreal.tendsto_pow_at_top_nhds_0_of_lt_1 - theorem ennreal.tsum_geometric - theorem factorial_tendsto_at_top - theorem geom_le - theorem geom_lt - theorem has_sum_geometric_of_lt_1 - theorem has_sum_geometric_two' - theorem has_sum_geometric_two - theorem le_geom - theorem lt_geom - theorem nat.tendsto_pow_at_top_at_top_of_one_lt - theorem nnreal.exists_pos_sum_of_encodable - theorem nnreal.has_sum_geometric - theorem nnreal.summable_geometric - theorem nnreal.tendsto_const_div_at_top_nhds_0_nat - theorem nnreal.tendsto_inverse_at_top_nhds_0_nat - theorem nnreal.tendsto_pow_at_top_nhds_0_of_lt_1 - def pos_sum_of_encodable - theorem set.countable.exists_pos_forall_sum_le - theorem set.countable.exists_pos_has_sum_le - theorem sum_geometric_two_le - theorem summable_geometric_of_lt_1 - theorem summable_geometric_two' - theorem summable_geometric_two - theorem summable_geometric_two_encode - theorem summable_one_div_pow_of_le - theorem tendsto_add_one_pow_at_top_at_top_of_pos - theorem tendsto_at_top_of_geom_le - theorem tendsto_const_div_at_top_nhds_0_nat - theorem tendsto_factorial_div_pow_self_at_top - theorem tendsto_inverse_at_top_nhds_0_nat - theorem tendsto_nat_ceil_mul_div_at_top - theorem tendsto_nat_floor_mul_div_at_top - theorem tendsto_one_div_add_at_top_nhds_0_nat - theorem tendsto_pow_at_top_at_top_of_one_lt - theorem tendsto_pow_at_top_nhds_0_of_lt_1 - theorem tendsto_pow_at_top_nhds_within_0_of_lt_1 - theorem tsum_geometric_inv_two - theorem tsum_geometric_inv_two_ge - theorem tsum_geometric_nnreal - theorem tsum_geometric_of_lt_1 - theorem tsum_geometric_two' - theorem tsum_geometric_two - theorem uniformity_basis_dist_pow_of_lt_1 Modified src/data/real/cardinality.lean Modified src/data/real/hyperreal.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/number_theory/padics/hensel.lean Modified src/topology/instances/rat_lemmas.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/hausdorff_distance.lean 2022-03-17 05:18:53 877f2e7 refactor(linear_algebra/ray): redefine `same_ray` to allow zero vectors (#12618) In a strictly convex space, the new definition is equivalent to the fact that the triangle inequality becomes an equality. The old definition was only used for nonzero vectors in `mathlib`. Also make the definition of `ray_vector` semireducible so that `ray_vector.setoid` can be an instance. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem mem_segment_iff_same_ray + theorem same_ray_of_mem_segment +/- theorem segment_same Added src/analysis/normed_space/ray.lean + theorem same_ray.norm_add + theorem same_ray.norm_smul_eq + theorem same_ray.norm_sub + theorem same_ray_iff_inv_norm_smul_eq + theorem same_ray_iff_inv_norm_smul_eq_of_ne + theorem same_ray_iff_norm_smul_eq Modified src/linear_algebra/orientation.lean +/- theorem basis.map_orientation_eq_det_inv_smul +/- def orientation.map +/- theorem orientation.map_apply +/- theorem orientation.map_refl +/- theorem orientation.map_symm +/- def orientation Modified src/linear_algebra/ray.lean + theorem eq_zero_of_same_ray_neg_smul_right +/- theorem eq_zero_of_same_ray_self_neg +/- theorem equiv_iff_same_ray - theorem equivalence_same_ray +/- theorem module.ray.ind +/- def module.ray.map +/- theorem module.ray.map_apply +/- theorem module.ray.map_refl +/- theorem module.ray.map_symm +/- theorem module.ray.ne_neg_self + theorem module.ray.neg_units_smul +/- def module.ray.some_ray_vector +/- theorem module.ray.some_ray_vector_ray +/- def module.ray.some_vector +/- theorem module.ray.some_vector_ne_zero +/- theorem module.ray.some_vector_ray +/- theorem module.ray.units_smul_of_neg +/- theorem module.ray.units_smul_of_pos +/- def module.ray + theorem neg_ray_of_ne_zero +/- theorem ray_eq_iff - theorem ray_neg +/- theorem ray_pos_smul +/- theorem ray_vector.coe_neg +/- theorem ray_vector.equiv_neg_iff +/- def ray_vector.map_linear_equiv - def ray_vector.same_ray_setoid +/- def ray_vector + theorem same_ray.add_left + theorem same_ray.add_right + theorem same_ray.exists_eq_smul + theorem same_ray.exists_eq_smul_add + theorem same_ray.exists_left_eq_smul + theorem same_ray.exists_pos + theorem same_ray.exists_right_eq_smul +/- theorem same_ray.map - theorem same_ray.neg + theorem same_ray.nonneg_smul_left + theorem same_ray.nonneg_smul_right + theorem same_ray.of_subsingleton' + theorem same_ray.of_subsingleton +/- theorem same_ray.pos_smul_left +/- theorem same_ray.pos_smul_right +/- theorem same_ray.refl +/- theorem same_ray.smul +/- theorem same_ray.symm +/- theorem same_ray.trans + theorem same_ray.zero_left + theorem same_ray.zero_right +/- theorem same_ray_comm - theorem same_ray_iff_mem_orbit +/- theorem same_ray_map_iff +/- theorem same_ray_neg_iff +/- theorem same_ray_neg_smul_left_iff + theorem same_ray_neg_smul_left_iff_of_ne +/- theorem same_ray_neg_smul_right_iff + theorem same_ray_neg_smul_right_iff_of_ne +/- theorem same_ray_neg_swap + theorem same_ray_nonneg_smul_left + theorem same_ray_nonneg_smul_right +/- theorem same_ray_pos_smul_left +/- theorem same_ray_pos_smul_right - def same_ray_setoid - theorem same_ray_setoid_eq_orbit_rel +/- theorem same_ray_smul_left_iff + theorem same_ray_smul_left_iff_of_ne +/- theorem same_ray_smul_right_iff + theorem same_ray_smul_right_iff_of_ne 2022-03-17 04:20:16 e547058 docs(algebraic_topology/fundamental_groupoid/induced_maps): fix diagram rendering (#12745) ESTIMATED CHANGES Modified src/algebraic_topology/fundamental_groupoid/induced_maps.lean 2022-03-17 03:03:56 d1e1304 feat(combinatorics/simple_graph/connectivity): API for get_vert (#12604) From my Formalising Mathematics 2022 course. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.walk.adj_get_vert_succ + theorem simple_graph.walk.get_vert_length + theorem simple_graph.walk.get_vert_of_length_le + theorem simple_graph.walk.get_vert_zero 2022-03-17 01:38:15 192819b feat(category_theory/punit): A groupoid is equivalent to punit iff it has a unique arrow between any two objects (#12726) In terms of topology, when this is used with the fundamental groupoid, it means that a space is simply connected (we still need to define this) if and only if any two paths between the same points are homotopic, and contractible spaces are simply connected. ESTIMATED CHANGES Modified src/category_theory/groupoid.lean + def category_theory.groupoid.of_hom_unique Modified src/category_theory/punit.lean + theorem category_theory.equiv_punit_iff_unique 2022-03-17 01:38:15 3a0532a feat(topology/homotopy/fundamental_group): prove fundamental group is independent of basepoint in path-connected spaces (#12234) Adds definition of fundamental group and proves fundamental group independent of basepoint choice in path-connected spaces. ESTIMATED CHANGES Added src/algebraic_topology/fundamental_groupoid/fundamental_group.lean + def fundamental_group.fundamental_group_mul_equiv_of_path + def fundamental_group.fundamental_group_mul_equiv_of_path_connected + def fundamental_group Modified src/category_theory/endomorphism.lean + theorem category_theory.Aut.Aut_mul_def + def category_theory.Aut.Aut_mul_equiv_of_iso 2022-03-16 23:51:43 4d350b9 chore(*): move code, golf (#12753) * move `pow_pos` and `pow_nonneg` to `algebra.order.ring`; * use the former to golf `has_pos pnat nat`; * fix formatting. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean - theorem pow_nonneg - theorem pow_pos Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/order/group.lean Modified src/algebra/order/ring.lean + theorem pow_nonneg + theorem pow_pos Modified src/data/pnat/basic.lean 2022-03-16 21:17:30 b3abae5 chore(category_theory/preadditive/projective_resolution): some minor golf (#12739) ESTIMATED CHANGES Modified src/category_theory/preadditive/projective_resolution.lean 2022-03-16 21:17:29 b24372f feat(model_theory/basic, terms_and_formulas): Helper functions for constant symbols (#12722) Defines a function `language.con` from `A` to constants of the language `L[[A]]`. Changes the coercion of a constant to a term to a function `language.constants.term`. Proves `simp` lemmas for interpretation of constant symbols and realization of constant terms. ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.coe_con Modified src/model_theory/terms_and_formulas.lean + def first_order.language.constants.term + theorem first_order.language.term.realize_con + theorem first_order.language.term.realize_constants 2022-03-16 21:17:26 3b91c32 feat(group_theory/subgroup/basic): `map_le_map_iff_of_injective` for `subtype` (#12713) This PR adds the special case of `map_le_map_iff_of_injective` when the group homomorphism is `subtype`. This is useful when working with nested subgroups. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.map_subtype_le_map_subtype 2022-03-16 19:40:36 c459d2b feat(algebra/algebra/basic,data/matrix/basic): resolve a TODO about `alg_hom.map_smul_of_tower` (#12684) It turns out that this lemma doesn't actually help in the place I claimed it would, so I added the lemma that does help too. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.map_smul_of_tower Modified src/data/matrix/basic.lean + theorem matrix.map_op_smul' + theorem matrix.map_smul' Modified src/linear_algebra/matrix/adjugate.lean 2022-03-16 19:40:35 6a71007 feat(group_theory/quotient_group) finiteness of groups for sequences of homomorphisms (#12660) ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup/basic.lean + theorem subgroup.inclusion_injective 2022-03-16 18:34:52 2e9985e feat(topology/algebra/order/basic): f ≤ᶠ[l] g implies limit of f ≤ limit of g (#12727) There are several implications of the form `eventually_*_of_tendsto_*`, which involve the order relationships between the limit of a function and other constants. What appears to be missing are reverse implications: If two functions are eventually ordered, then their limits respect the order. This is lemma will be used in further work on the asymptotics of squarefree numbers ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean 2022-03-16 15:39:29 693a3ac feat(number_theory/cyclotomic/basic): add is_primitive_root.adjoin (#12716) We add `is_cyclotomic_extension.is_primitive_root.adjoin`. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean + theorem is_primitive_root.adjoin_is_cyclotomic_extension Modified src/number_theory/cyclotomic/primitive_roots.lean 2022-03-16 13:40:39 b8faf13 feat(data/finset/basic): add finset.filter_eq_self (#12717) and an epsilon of cleanup from flt-regular ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.filter_eq_empty_iff + theorem finset.filter_eq_self +/- theorem finset.monotone_filter_left 2022-03-16 13:40:38 d495afd feat(category_theory/abelian/injective_resolution): descents of a morphism (#12703) This pr dualise `src/category_theory/preadditive/projective_resolution.lean`. The reason that it is moved to `abelian` folder is because we want `exact f g` from `exact g.op f.op` instance. This pr is splitted from #12545. This pr contains the following: Given `I : InjectiveResolution X` and `J : InjectiveResolution Y`, any morphism `X ⟶ Y` admits a descent to a chain map `J.cocomplex ⟶ I.cocomplex`. It is a descent in the sense that `I.ι` intertwine the descent and the original morphism, see `category_theory.InjectiveResolution.desc_commutes`. (Docstring contains more than what is currently in the file, but everything else will come soon) ESTIMATED CHANGES Added src/category_theory/abelian/injective_resolution.lean + def category_theory.InjectiveResolution.desc + theorem category_theory.InjectiveResolution.desc_commutes + def category_theory.InjectiveResolution.desc_f_one + theorem category_theory.InjectiveResolution.desc_f_one_zero_comm + def category_theory.InjectiveResolution.desc_f_succ + def category_theory.InjectiveResolution.desc_f_zero 2022-03-16 13:40:36 f21a760 feat(measure_theory/function/jacobian): change of variable formula in integrals in higher dimension (#12492) Let `μ` be a Lebesgue measure on a finite-dimensional real vector space, `s` a measurable set, and `f` a function which is differentiable and injective on `s`. Then `∫ x in f '' s, g x ∂μ = ∫ x in s, |(f' x).det| • g (f x) ∂μ`. (There is also a version for the Lebesgue integral, i.e., for `ennreal`-valued functions). ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + theorem continuous_linear_map.coe_to_continuous_linear_equiv_of_det_ne_zero + def continuous_linear_map.to_continuous_linear_equiv_of_det_ne_zero + theorem continuous_linear_map.to_continuous_linear_equiv_of_det_ne_zero_apply Added src/measure_theory/function/jacobian.lean + theorem approximates_linear_on.norm_fderiv_sub_le + theorem exists_closed_cover_approximates_linear_on_of_has_fderiv_within_at + theorem exists_partition_approximates_linear_on_of_has_fderiv_within_at + theorem measure_theory.add_haar_image_eq_zero_of_det_fderiv_within_eq_zero + theorem measure_theory.add_haar_image_eq_zero_of_det_fderiv_within_eq_zero_aux + theorem measure_theory.add_haar_image_eq_zero_of_differentiable_on_of_add_haar_eq_zero + theorem measure_theory.add_haar_image_le_lintegral_abs_det_fderiv + theorem measure_theory.add_haar_image_le_lintegral_abs_det_fderiv_aux1 + theorem measure_theory.add_haar_image_le_lintegral_abs_det_fderiv_aux2 + theorem measure_theory.add_haar_image_le_mul_of_det_lt + theorem measure_theory.ae_measurable_fderiv_within + theorem measure_theory.ae_measurable_of_real_abs_det_fderiv_within + theorem measure_theory.ae_measurable_to_nnreal_abs_det_fderiv_within + theorem measure_theory.integrable_on_image_iff_integrable_on_abs_det_fderiv_smul + theorem measure_theory.integral_image_eq_integral_abs_det_fderiv_smul + theorem measure_theory.lintegral_abs_det_fderiv_eq_add_haar_image + theorem measure_theory.lintegral_abs_det_fderiv_le_add_haar_image + theorem measure_theory.lintegral_abs_det_fderiv_le_add_haar_image_aux1 + theorem measure_theory.lintegral_abs_det_fderiv_le_add_haar_image_aux2 + theorem measure_theory.lintegral_image_eq_lintegral_abs_det_fderiv_mul + theorem measure_theory.map_with_density_abs_det_fderiv_eq_add_haar + theorem measure_theory.measurable_embedding_of_fderiv_within + theorem measure_theory.measurable_image_of_fderiv_within + theorem measure_theory.mul_le_add_haar_image_of_lt_det + theorem measure_theory.restrict_map_with_density_abs_det_fderiv_eq_add_haar Modified src/topology/algebra/module/basic.lean + theorem continuous_linear_equiv.det_coe_symm 2022-03-16 11:53:36 0964573 feat(set_theory/cardinal): Lift `min` and `max` (#12518) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.lift_max' + theorem cardinal.lift_min' 2022-03-16 11:53:35 717b11e feat(group_theory/noncomm_pi_coprod): homomorphism from pi monoids or groups (#11744) ESTIMATED CHANGES Added src/group_theory/noncomm_pi_coprod.lean + theorem monoid_hom.independent_range_of_coprime_order + theorem monoid_hom.injective_noncomm_pi_coprod_of_independent + def monoid_hom.noncomm_pi_coprod + def monoid_hom.noncomm_pi_coprod_equiv + theorem monoid_hom.noncomm_pi_coprod_mrange + theorem monoid_hom.noncomm_pi_coprod_mul_single + theorem monoid_hom.noncomm_pi_coprod_range + theorem subgroup.commute_subtype_of_commute + theorem subgroup.independent_of_coprime_order + theorem subgroup.injective_noncomm_pi_coprod_of_independent + def subgroup.noncomm_pi_coprod + theorem subgroup.noncomm_pi_coprod_mul_single + theorem subgroup.noncomm_pi_coprod_range Modified src/group_theory/order_of_element.lean + theorem order_of_inv + theorem order_of_map_dvd Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.eq_one_of_noncomm_prod_eq_one_of_independent 2022-03-16 10:05:27 a50de33 docs(algebra/group/hom): fix typo (#12723) ESTIMATED CHANGES Modified src/algebra/group/hom.lean 2022-03-16 10:05:26 35bb571 chore(number_theory/primorial): speed up some proofs (#12714) ESTIMATED CHANGES Modified src/number_theory/primorial.lean 2022-03-16 10:05:25 a8bfcfe feat(algebraic_geometry/projective_spectrum): basic definitions of projective spectrum (#12635) This pr contains the basic definitions of projective spectrum of a graded ring: - projective spectrum - zero locus - vanishing ideal ESTIMATED CHANGES Added src/algebraic_geometry/projective_spectrum/topology.lean + def projective_spectrum.as_homogeneous_ideal + theorem projective_spectrum.as_homogeneous_ideal_def + theorem projective_spectrum.coe_vanishing_ideal + theorem projective_spectrum.ext + theorem projective_spectrum.mem_vanishing_ideal + theorem projective_spectrum.mem_zero_locus + theorem projective_spectrum.subset_zero_locus_iff_le_vanishing_ideal + def projective_spectrum.vanishing_ideal + theorem projective_spectrum.vanishing_ideal_singleton + def projective_spectrum.zero_locus + theorem projective_spectrum.zero_locus_span + def projective_spectrum 2022-03-16 10:05:24 a7a2f9d feat(data/nat/fib): norm_num plugin for fib (#12463) ESTIMATED CHANGES Modified src/data/nat/fib.lean + def norm_num.is_fib_aux + theorem norm_num.is_fib_aux_bit0 + theorem norm_num.is_fib_aux_bit0_done + theorem norm_num.is_fib_aux_bit1 + theorem norm_num.is_fib_aux_bit1_done + theorem norm_num.is_fib_aux_one Modified test/norm_num_ext.lean 2022-03-16 10:05:23 500a1d3 feat(data/pnat/find): port over `nat.find` API (#12413) Didn't port `pnat.find_add` because I got lost in the proof. ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.le_one_iff + theorem pnat.lt_add_left + theorem pnat.lt_add_right + theorem pnat.not_lt_one Added src/data/pnat/find.lean + theorem pnat.find_comp_succ + theorem pnat.find_eq_iff + theorem pnat.find_eq_one + theorem pnat.find_le + theorem pnat.find_le_iff + theorem pnat.find_lt_iff + theorem pnat.find_mono + theorem pnat.le_find_iff + theorem pnat.lt_find_iff + theorem pnat.one_le_find 2022-03-16 10:05:22 bbc66b5 feat(group_theory/subsemigroup/basic): subsemigroups (#12111) Port over submonoid implementation to a generalization: subsemigroups. Implement submonoids via extends using old_structure_cmd, since that is what subsemirings do. Copy over the attribution from submonoids because the content is almost unchanged. The submonoid file hasn't been changed, so no proofs rely on the subsemigroups proofs. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean Modified src/deprecated/submonoid.lean +/- theorem submonoid.is_submonoid +/- def submonoid.of Modified src/field_theory/subfield.lean Modified src/group_theory/free_product.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/basic.lean +/- structure add_submonoid +/- structure submonoid Modified src/group_theory/submonoid/pointwise.lean Added src/group_theory/subsemigroup/basic.lean + structure add_subsemigroup + theorem mul_hom.coe_of_mdense + def mul_hom.eq_mlocus + theorem mul_hom.eq_of_eq_on_mdense + theorem mul_hom.eq_of_eq_on_mtop + theorem mul_hom.eq_on_mclosure + def mul_hom.of_mdense + def subsemigroup.closure + theorem subsemigroup.closure_Union + theorem subsemigroup.closure_empty + theorem subsemigroup.closure_eq + theorem subsemigroup.closure_eq_of_le + theorem subsemigroup.closure_induction' + theorem subsemigroup.closure_induction + theorem subsemigroup.closure_le + theorem subsemigroup.closure_mono + theorem subsemigroup.closure_singleton_le_iff_mem + theorem subsemigroup.closure_union + theorem subsemigroup.closure_univ + theorem subsemigroup.coe_Inf + theorem subsemigroup.coe_bot + theorem subsemigroup.coe_copy + theorem subsemigroup.coe_inf + theorem subsemigroup.coe_infi + theorem subsemigroup.coe_set_mk + theorem subsemigroup.coe_top + theorem subsemigroup.copy_eq + theorem subsemigroup.dense_induction + theorem subsemigroup.ext + theorem subsemigroup.mem_Inf + theorem subsemigroup.mem_carrier + theorem subsemigroup.mem_closure + theorem subsemigroup.mem_inf + theorem subsemigroup.mem_infi + theorem subsemigroup.mem_mk + theorem subsemigroup.mem_supr + theorem subsemigroup.mem_top + theorem subsemigroup.mk_le_mk + theorem subsemigroup.mul_mem + theorem subsemigroup.not_mem_bot + theorem subsemigroup.not_mem_of_not_mem_closure + def subsemigroup.simps.coe + theorem subsemigroup.subset_closure + theorem subsemigroup.subsingleton_of_subsingleton + theorem subsemigroup.supr_eq_closure + structure subsemigroup Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/span.lean Modified src/ring_theory/class_group.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean 2022-03-16 08:21:55 50691e5 chore(measure_theory/function): split files strongly_measurable and simple_func_dense (#12711) The files `strongly_measurable` and `simple_func_dense` contain general results, and results pertaining to the `L^p` space. We move the results regarding `L^p` to new files, to make sure that the main parts of the files can be imported earlier in the hierarchy. This is needed for a forthcoming integral refactor. ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/simple_func_dense.lean - theorem measure_theory.L1.simple_func.to_Lp_one_eq_to_L1 - theorem measure_theory.Lp.induction - theorem measure_theory.Lp.simple_func.add_to_simple_func - theorem measure_theory.Lp.simple_func.coe_coe - theorem measure_theory.Lp.simple_func.coe_fn_le - theorem measure_theory.Lp.simple_func.coe_fn_nonneg - theorem measure_theory.Lp.simple_func.coe_fn_zero - theorem measure_theory.Lp.simple_func.coe_indicator_const - def measure_theory.Lp.simple_func.coe_simple_func_nonneg_to_Lp_nonneg - theorem measure_theory.Lp.simple_func.coe_smul - def measure_theory.Lp.simple_func.coe_to_Lp - theorem measure_theory.Lp.simple_func.dense_range_coe_simple_func_nonneg_to_Lp_nonneg - theorem measure_theory.Lp.simple_func.exists_simple_func_nonneg_ae_eq - def measure_theory.Lp.simple_func.indicator_const - theorem measure_theory.Lp.simple_func.neg_to_simple_func - theorem measure_theory.Lp.simple_func.norm_to_Lp - theorem measure_theory.Lp.simple_func.norm_to_simple_func - theorem measure_theory.Lp.simple_func.smul_to_simple_func - theorem measure_theory.Lp.simple_func.sub_to_simple_func - def measure_theory.Lp.simple_func.to_Lp - theorem measure_theory.Lp.simple_func.to_Lp_add - theorem measure_theory.Lp.simple_func.to_Lp_eq_mk - theorem measure_theory.Lp.simple_func.to_Lp_eq_to_Lp - theorem measure_theory.Lp.simple_func.to_Lp_neg - theorem measure_theory.Lp.simple_func.to_Lp_smul - theorem measure_theory.Lp.simple_func.to_Lp_sub - theorem measure_theory.Lp.simple_func.to_Lp_to_simple_func - theorem measure_theory.Lp.simple_func.to_Lp_zero - def measure_theory.Lp.simple_func.to_simple_func - theorem measure_theory.Lp.simple_func.to_simple_func_eq_to_fun - theorem measure_theory.Lp.simple_func.to_simple_func_indicator_const - theorem measure_theory.Lp.simple_func.to_simple_func_to_Lp - theorem measure_theory.Lp.simple_func.zero_to_simple_func - def measure_theory.Lp.simple_func - theorem measure_theory.integrable.induction - theorem measure_theory.mem_ℒp.induction - theorem measure_theory.simple_func.exists_forall_norm_le - theorem measure_theory.simple_func.fin_meas_supp.integrable - theorem measure_theory.simple_func.integrable_approx_on - theorem measure_theory.simple_func.integrable_approx_on_univ - theorem measure_theory.simple_func.integrable_iff - theorem measure_theory.simple_func.integrable_iff_fin_meas_supp - theorem measure_theory.simple_func.integrable_of_is_finite_measure - theorem measure_theory.simple_func.integrable_pair - theorem measure_theory.simple_func.measure_lt_top_of_mem_ℒp_indicator - theorem measure_theory.simple_func.measure_preimage_lt_top_of_integrable - theorem measure_theory.simple_func.measure_preimage_lt_top_of_mem_ℒp - theorem measure_theory.simple_func.measure_support_lt_top - theorem measure_theory.simple_func.measure_support_lt_top_of_integrable - theorem measure_theory.simple_func.measure_support_lt_top_of_mem_ℒp - theorem measure_theory.simple_func.mem_ℒp_approx_on - theorem measure_theory.simple_func.mem_ℒp_approx_on_univ - theorem measure_theory.simple_func.mem_ℒp_iff - theorem measure_theory.simple_func.mem_ℒp_iff_fin_meas_supp - theorem measure_theory.simple_func.mem_ℒp_iff_integrable - theorem measure_theory.simple_func.mem_ℒp_of_finite_measure_preimage - theorem measure_theory.simple_func.mem_ℒp_of_is_finite_measure - theorem measure_theory.simple_func.mem_ℒp_top - theorem measure_theory.simple_func.mem_ℒp_zero - theorem measure_theory.simple_func.nnnorm_approx_on_le - theorem measure_theory.simple_func.norm_approx_on_y₀_le - theorem measure_theory.simple_func.norm_approx_on_zero_le - theorem measure_theory.simple_func.tendsto_approx_on_L1_nnnorm - theorem measure_theory.simple_func.tendsto_approx_on_Lp_snorm - theorem measure_theory.simple_func.tendsto_approx_on_univ_L1_nnnorm - theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp - theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp_snorm Added src/measure_theory/function/simple_func_dense_lp.lean + theorem measure_theory.L1.simple_func.to_Lp_one_eq_to_L1 + theorem measure_theory.Lp.induction + theorem measure_theory.Lp.simple_func.add_to_simple_func + theorem measure_theory.Lp.simple_func.coe_coe + theorem measure_theory.Lp.simple_func.coe_fn_le + theorem measure_theory.Lp.simple_func.coe_fn_nonneg + theorem measure_theory.Lp.simple_func.coe_fn_zero + theorem measure_theory.Lp.simple_func.coe_indicator_const + def measure_theory.Lp.simple_func.coe_simple_func_nonneg_to_Lp_nonneg + theorem measure_theory.Lp.simple_func.coe_smul + def measure_theory.Lp.simple_func.coe_to_Lp + theorem measure_theory.Lp.simple_func.dense_range_coe_simple_func_nonneg_to_Lp_nonneg + theorem measure_theory.Lp.simple_func.exists_simple_func_nonneg_ae_eq + def measure_theory.Lp.simple_func.indicator_const + theorem measure_theory.Lp.simple_func.neg_to_simple_func + theorem measure_theory.Lp.simple_func.norm_to_Lp + theorem measure_theory.Lp.simple_func.norm_to_simple_func + theorem measure_theory.Lp.simple_func.smul_to_simple_func + theorem measure_theory.Lp.simple_func.sub_to_simple_func + def measure_theory.Lp.simple_func.to_Lp + theorem measure_theory.Lp.simple_func.to_Lp_add + theorem measure_theory.Lp.simple_func.to_Lp_eq_mk + theorem measure_theory.Lp.simple_func.to_Lp_eq_to_Lp + theorem measure_theory.Lp.simple_func.to_Lp_neg + theorem measure_theory.Lp.simple_func.to_Lp_smul + theorem measure_theory.Lp.simple_func.to_Lp_sub + theorem measure_theory.Lp.simple_func.to_Lp_to_simple_func + theorem measure_theory.Lp.simple_func.to_Lp_zero + def measure_theory.Lp.simple_func.to_simple_func + theorem measure_theory.Lp.simple_func.to_simple_func_eq_to_fun + theorem measure_theory.Lp.simple_func.to_simple_func_indicator_const + theorem measure_theory.Lp.simple_func.to_simple_func_to_Lp + theorem measure_theory.Lp.simple_func.zero_to_simple_func + def measure_theory.Lp.simple_func + theorem measure_theory.integrable.induction + theorem measure_theory.mem_ℒp.induction + theorem measure_theory.simple_func.exists_forall_norm_le + theorem measure_theory.simple_func.fin_meas_supp.integrable + theorem measure_theory.simple_func.integrable_approx_on + theorem measure_theory.simple_func.integrable_approx_on_univ + theorem measure_theory.simple_func.integrable_iff + theorem measure_theory.simple_func.integrable_iff_fin_meas_supp + theorem measure_theory.simple_func.integrable_of_is_finite_measure + theorem measure_theory.simple_func.integrable_pair + theorem measure_theory.simple_func.measure_lt_top_of_mem_ℒp_indicator + theorem measure_theory.simple_func.measure_preimage_lt_top_of_integrable + theorem measure_theory.simple_func.measure_preimage_lt_top_of_mem_ℒp + theorem measure_theory.simple_func.measure_support_lt_top + theorem measure_theory.simple_func.measure_support_lt_top_of_integrable + theorem measure_theory.simple_func.measure_support_lt_top_of_mem_ℒp + theorem measure_theory.simple_func.mem_ℒp_approx_on + theorem measure_theory.simple_func.mem_ℒp_approx_on_univ + theorem measure_theory.simple_func.mem_ℒp_iff + theorem measure_theory.simple_func.mem_ℒp_iff_fin_meas_supp + theorem measure_theory.simple_func.mem_ℒp_iff_integrable + theorem measure_theory.simple_func.mem_ℒp_of_finite_measure_preimage + theorem measure_theory.simple_func.mem_ℒp_of_is_finite_measure + theorem measure_theory.simple_func.mem_ℒp_top + theorem measure_theory.simple_func.mem_ℒp_zero + theorem measure_theory.simple_func.nnnorm_approx_on_le + theorem measure_theory.simple_func.norm_approx_on_y₀_le + theorem measure_theory.simple_func.norm_approx_on_zero_le + theorem measure_theory.simple_func.tendsto_approx_on_L1_nnnorm + theorem measure_theory.simple_func.tendsto_approx_on_Lp_snorm + theorem measure_theory.simple_func.tendsto_approx_on_univ_L1_nnnorm + theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp + theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp_snorm Modified src/measure_theory/function/strongly_measurable.lean - theorem measure_theory.Lp.fin_strongly_measurable - theorem measure_theory.integrable.ae_fin_strongly_measurable - theorem measure_theory.mem_ℒp.ae_fin_strongly_measurable - theorem measure_theory.mem_ℒp.fin_strongly_measurable_of_measurable Added src/measure_theory/function/strongly_measurable_lp.lean + theorem measure_theory.Lp.fin_strongly_measurable + theorem measure_theory.integrable.ae_fin_strongly_measurable + theorem measure_theory.mem_ℒp.ae_fin_strongly_measurable + theorem measure_theory.mem_ℒp.fin_strongly_measurable_of_measurable Modified src/measure_theory/integral/set_to_l1.lean 2022-03-16 08:21:54 ba6c84d feat(ring_theory/fractional_ideal): two span_singleton lemmas (#12656) ESTIMATED CHANGES Modified src/linear_algebra/span.lean + theorem submodule.span_singleton_eq_span_singleton Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.span_singleton_eq_span_singleton + theorem fractional_ideal.span_singleton_pow 2022-03-16 08:21:53 17c74f1 feat(algebra/group_power/order): add le_pow (#12436) Added a new theorem so that library search will find it. ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem le_self_pow 2022-03-16 08:21:52 91f98e8 feat(topology/bornology/hom): Locally bounded maps (#12046) Define `locally_bounded_map`, the type of locally bounded maps between two bornologies. ESTIMATED CHANGES Modified src/topology/bornology/basic.lean + theorem bornology.comap_cobounded_le_iff +/- theorem bornology.is_bounded_compl_iff +/- theorem bornology.is_bounded_empty + theorem bornology.is_cobounded_compl_iff Added src/topology/bornology/hom.lean + theorem is_bounded.image + theorem locally_bounded_map.cancel_left + theorem locally_bounded_map.cancel_right + theorem locally_bounded_map.coe_comp + theorem locally_bounded_map.coe_id + theorem locally_bounded_map.coe_of_map_bounded + def locally_bounded_map.comp + theorem locally_bounded_map.comp_apply + theorem locally_bounded_map.comp_assoc + theorem locally_bounded_map.comp_id + theorem locally_bounded_map.ext + theorem locally_bounded_map.id_apply + theorem locally_bounded_map.id_comp + def locally_bounded_map.of_map_bounded + theorem locally_bounded_map.of_map_bounded_apply + theorem locally_bounded_map.to_fun_eq_coe + structure locally_bounded_map 2022-03-16 08:21:51 68033a2 feat(set_theory/ordinal_arithmetic): A set of ordinals is bounded above iff it's small (#11870) ESTIMATED CHANGES Modified src/logic/small.lean + theorem small_subset Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.bdd_above_iff_small + theorem ordinal.le_sup_shrink_equiv + theorem ordinal.small_Iio + theorem ordinal.sup_eq_Sup 2022-03-16 07:51:24 a452bfa feat(analysis/seminorm): three simple lemmas about balls (#12720) The lemmas are in preparation to characterize the natural bornology in terms of seminorms in LCTVSs. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.ball_eq_emptyset + theorem seminorm.ball_zero_absorbs_ball_zero + theorem seminorm.smul_ball_zero 2022-03-16 05:24:58 1f1289f feat(algebra/parity + data/{int, nat}/parity): parity lemmas for general semirings (#12718) This PR proves some general facts about adding even/odd elements in a semiring, thus removing the need to proving the same results for `nat` and `int`. ESTIMATED CHANGES Added src/algebra/parity.lean + theorem even.add_even + theorem even.add_odd + theorem odd.add_even + theorem odd.add_odd Modified src/data/int/parity.lean - theorem int.even.add_even - theorem int.even.add_odd - theorem int.odd.add_even - theorem int.odd.add_odd Modified src/data/nat/parity.lean - theorem nat.even.add_even - theorem nat.even.add_odd - theorem nat.odd.add_even - theorem nat.odd.add_odd 2022-03-16 03:13:34 cbd6173 chore(scripts): update nolints.txt (#12728) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-16 00:32:33 45061f3 chore(data/equiv/basic): use `option.elim` and `sum.elim` (#12724) We have these functions, why not use them? ESTIMATED CHANGES Modified src/data/equiv/basic.lean 2022-03-15 18:38:06 b622d4d chore(algebra/associated): move prime_dvd_prime_iff_eq (#12706) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem prime_dvd_prime_iff_eq Modified src/data/list/prime.lean - theorem prime_dvd_prime_iff_eq 2022-03-15 16:38:31 7ed4f2c feat(group_theory/submonoid/operations): monoids are isomorphic to themselves as submonoids (#12658) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/basic.lean - def algebra.top_equiv + def subalgebra.top_equiv Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/semisimple.lean Modified src/algebra/lie/solvable.lean Modified src/algebra/lie/submodule.lean + def lie_ideal.top_equiv + theorem lie_ideal.top_equiv_apply - def lie_ideal.top_equiv_self - theorem lie_ideal.top_equiv_self_apply + def lie_subalgebra.top_equiv + theorem lie_subalgebra.top_equiv_apply - def lie_subalgebra.top_equiv_self - theorem lie_subalgebra.top_equiv_self_apply Modified src/algebra/module/submodule_lattice.lean + def submodule.top_equiv - def submodule.top_equiv_self Modified src/field_theory/adjoin.lean Modified src/group_theory/subgroup/basic.lean + def subgroup.top_equiv Modified src/group_theory/submonoid/operations.lean + def submonoid.top_equiv + theorem submonoid.top_equiv_to_monoid_hom Modified src/number_theory/cyclotomic/primitive_roots.lean Modified src/ring_theory/adjoin/power_basis.lean 2022-03-15 15:20:21 375419f feat(algebra/algebra/subalgebra/pointwise): lemmas about `*` and `to_submodule` (#12695) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra/pointwise.lean +/- theorem subalgebra.mul_self + theorem subalgebra.mul_to_submodule + theorem subalgebra.mul_to_submodule_le 2022-03-15 14:10:30 7582e14 feat(linear_algebra/matrix/determinant): special case of the matrix determinant lemma (#12682) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_one_add_col_mul_row + theorem matrix.lower_two_block_triangular_det +/- theorem matrix.upper_two_block_triangular_det 2022-03-15 14:10:28 9c09965 feat(algebra/big_operators/finprod): finite product of power is power of finite product (#12655) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_pow 2022-03-15 13:39:45 88a5978 doc(algebra/hierarchy_design): fix my name (#12674) ESTIMATED CHANGES Modified src/algebra/hierarchy_design.lean 2022-03-15 11:51:47 530f008 feat(linear_algebra/matrix/nonsingular_inverse): Add `matrix.list_prod_inv_reverse` (#12691) ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.list_prod_inv_reverse 2022-03-15 11:51:46 7a02c9e fix(set_theory/ordinal_arithmetic): remove redundant hypothesis from `CNF_rec` (#12680) The hypothesis in question was a theorem that could be deduced. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.CNF_aux +/- theorem ordinal.CNF_fst_le_log +/- theorem ordinal.CNF_pairwise +/- theorem ordinal.CNF_snd_lt +/- theorem ordinal.CNF_sorted + theorem ordinal.mod_opow_log_lt_self +/- theorem ordinal.one_CNF 2022-03-15 11:51:45 a3b39c6 feat(linear_algebra/clifford_algebra/conjugation): add lemmas showing interaction between `involute` and `even_odd` (#12672) Often the even and odd submodules are defined in terms of involution, but this strategy doesn't actually work in characteristic two. ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean + theorem set_like.has_graded_one.algebra_map_mem Modified src/linear_algebra/clifford_algebra/conjugation.lean + theorem clifford_algebra.involute_eq_of_mem_even + theorem clifford_algebra.involute_eq_of_mem_odd Modified src/linear_algebra/clifford_algebra/grading.lean + theorem clifford_algebra.even_induction + theorem clifford_algebra.even_odd_induction + theorem clifford_algebra.odd_induction + theorem clifford_algebra.ι_mul_ι_mem_even_odd_zero 2022-03-15 11:51:44 48ffeb7 feat(group_theory/finiteness): quotient of fg is fg (#12652) ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem quotient_group.mk_surjective Modified src/group_theory/finiteness.lean + theorem group.fg_of_surjective Modified src/group_theory/quotient_group.lean + theorem quotient_group.mk'_surjective - theorem quotient_group.subgroup_eq_top_of_subsingleton Modified src/group_theory/submonoid/operations.lean + theorem monoid_hom.mrange_restrict_surjective +/- theorem submonoid.bot_or_exists_ne_one +/- theorem submonoid.bot_or_nontrivial 2022-03-15 11:10:28 a98202b chore(category_theory/preadditive/projective_resolution): typo (#12702) ESTIMATED CHANGES Modified src/category_theory/preadditive/projective_resolution.lean 2022-03-15 11:10:27 eefa425 perf(analysis/convec/topology): remove topological_add_group.path_connected instance (#12675) The linter was right in #10011 and `topological_add_group.path_connected` should not be an instance, because it creates enormous TC subproblems (turn on `pp.all` to get an idea of what's going on). Apparently the instance isn't even used in mathlib. ESTIMATED CHANGES Modified src/analysis/convex/topology.lean + theorem topological_add_group.path_connected 2022-03-15 11:10:26 5b90340 feat(model_theory/terms_and_formulas): Notation for terms and formulas from Flypitch (#12630) Introduces some notation, localized to `first_order`, to make typing explicit terms and formulas easier. ESTIMATED CHANGES Modified src/model_theory/terms_and_formulas.lean 2022-03-15 10:32:43 d199eb9 feat(ring_theory/graded_algebra/homogeneous_ideal): refactor `homogeneous_ideal` as a structure extending ideals (#12673) We refactored `homogeneous_ideal` as a structure extending ideals so that we can define a `set_like (homogeneous_ideal \McA) A` instance. ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean - theorem homogeneous_ideal.coe_Inf - theorem homogeneous_ideal.coe_Sup - theorem homogeneous_ideal.coe_add - theorem homogeneous_ideal.coe_bot - theorem homogeneous_ideal.coe_inf - theorem homogeneous_ideal.coe_infi - theorem homogeneous_ideal.coe_irrelevant - theorem homogeneous_ideal.coe_mul - theorem homogeneous_ideal.coe_sup - theorem homogeneous_ideal.coe_top +/- theorem homogeneous_ideal.eq_bot_iff +/- theorem homogeneous_ideal.eq_top_iff + theorem homogeneous_ideal.ext - theorem homogeneous_ideal.homogeneous_core_coe_eq_self - theorem homogeneous_ideal.homogeneous_hull_coe_eq_self + theorem homogeneous_ideal.homogeneous_hull_to_ideal_eq_self + theorem homogeneous_ideal.is_homogeneous + theorem homogeneous_ideal.mem_iff + def homogeneous_ideal.to_ideal + theorem homogeneous_ideal.to_ideal_Inf + theorem homogeneous_ideal.to_ideal_Sup + theorem homogeneous_ideal.to_ideal_add + theorem homogeneous_ideal.to_ideal_bot + theorem homogeneous_ideal.to_ideal_homogeneous_core_eq_self + theorem homogeneous_ideal.to_ideal_inf + theorem homogeneous_ideal.to_ideal_infi + theorem homogeneous_ideal.to_ideal_injective + theorem homogeneous_ideal.to_ideal_irrelevant + theorem homogeneous_ideal.to_ideal_mul + theorem homogeneous_ideal.to_ideal_sup + theorem homogeneous_ideal.to_ideal_top + structure homogeneous_ideal - def homogeneous_ideal - theorem ideal.coe_homogeneous_core_le - theorem ideal.coe_homogeneous_hull_eq_supr +/- theorem ideal.homogeneous_core.gc +/- def ideal.homogeneous_core.gi +/- theorem ideal.homogeneous_hull.gc +/- def ideal.homogeneous_hull.gi - theorem ideal.is_homogeneous.coe_homogeneous_core_eq_self - theorem ideal.is_homogeneous.homogeneous_hull_eq_self +/- theorem ideal.is_homogeneous.iff_eq + theorem ideal.is_homogeneous.to_ideal_homogeneous_core_eq_self + theorem ideal.is_homogeneous.to_ideal_homogeneous_hull_eq_self - theorem ideal.le_coe_homogeneous_hull + theorem ideal.le_to_ideal_homogeneous_hull + theorem ideal.to_ideal_homogeneous_core_le + theorem ideal.to_ideal_homogeneous_hull_eq_supr Modified src/ring_theory/graded_algebra/radical.lean 2022-03-15 10:32:41 061d04b feat(category_theory/monoidal): distribute tensor over direct sum (#12626) This is preliminary to the monoidal structure on chain complexes. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + theorem category_theory.limits.is_bilimit.binary_total + theorem category_theory.limits.is_bilimit.total Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.dite_tensor + theorem category_theory.monoidal_category.tensor_dite Modified src/category_theory/monoidal/preadditive.lean + def category_theory.left_distributor + theorem category_theory.left_distributor_assoc + theorem category_theory.left_distributor_hom + theorem category_theory.left_distributor_inv + theorem category_theory.left_distributor_right_distributor_assoc + def category_theory.right_distributor + theorem category_theory.right_distributor_assoc + theorem category_theory.right_distributor_hom + theorem category_theory.right_distributor_inv + theorem category_theory.sum_tensor + theorem category_theory.tensor_sum 2022-03-15 10:02:26 078b213 chore(category_theory/abelian/projective): fix typo (#12701) ESTIMATED CHANGES Modified src/category_theory/abelian/projective.lean 2022-03-15 08:11:54 92e6759 fix(category_theory/bicategory): remove spaces before closing parentheses (#12700) ESTIMATED CHANGES Modified src/category_theory/bicategory/basic.lean 2022-03-15 08:11:53 0bd6dc2 chore(measure_theory): move and rename some lemmas (#12699) * move `ae_interval_oc_iff`, `ae_measurable_interval_oc_iff`, and `ae_interval_oc_iff'` to `measure_theory.measure.measure_space`, rename `ae_interval_oc_iff'` to `ae_restrict_interval_oc_iff`; * add lemmas about `ae` and union of sets. ESTIMATED CHANGES Modified src/data/set/intervals/unordered_interval.lean + theorem set.interval_oc_eq_union Modified src/measure_theory/integral/interval_integral.lean - theorem ae_interval_oc_iff' - theorem ae_interval_oc_iff - theorem ae_measurable_interval_oc_iff Modified src/measure_theory/measure/measure_space.lean + theorem ae_measurable_interval_oc_iff + theorem ae_measurable_union_iff + theorem measure_theory.ae_interval_oc_iff + theorem measure_theory.ae_restrict_Union_eq + theorem measure_theory.ae_restrict_interval_oc_eq + theorem measure_theory.ae_restrict_interval_oc_iff + theorem measure_theory.ae_restrict_union_eq 2022-03-15 08:11:52 4b562f8 doc(data/equiv/encodable): +2 docstrings (#12698) ESTIMATED CHANGES Modified src/data/equiv/encodable/basic.lean 2022-03-15 08:11:51 a3e0c85 chore(cyclotomic/gal): update todo (#12693) this mentioned a non-existing old solution which got superseded by `is_primitive_root.power_basis`, but is still not the right solution in the long term ESTIMATED CHANGES Modified src/number_theory/cyclotomic/gal.lean 2022-03-15 08:11:50 77395f1 chore(algebra/module/basic): Move the scalar action earlier (#12690) This is prep work for golfing some of the instances. This also adjust the variables slightly to be in a more sensible order. ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean +/- theorem continuous_linear_map.coe_smul' +/- theorem continuous_linear_map.coe_smul +/- theorem continuous_linear_map.smul_apply 2022-03-15 08:11:49 025fe7c feat(group_theory/abelianization): An application of the three subgroups lemma (#12677) This PR uses the three subgroups lemma to prove that `⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ subgroup.center G`. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean + theorem commutator_centralizer_commutator_le_center 2022-03-15 08:11:48 b7978f3 chore(analysis/seminorm): Weaken typeclasses on `convex` and `locally_convex` lemmas (#12645) Generalize type-classes `normed_linearly_ordered_field` to `normed_field` (otherwise it would not work over complex numbers). ESTIMATED CHANGES Modified src/analysis/seminorm.lean 2022-03-15 08:11:47 53f6d68 feat(category_theory/preadditive) : definition of injective resolution (#12641) This pr is splitted from #12545. This pr contains the definition of: - `InjectiveResolution`; - `has_injective_resolution` and `has_injective_resolutions`; - injective object has injective resolution. ESTIMATED CHANGES Added src/category_theory/preadditive/injective_resolution.lean + def category_theory.InjectiveResolution.self + theorem category_theory.InjectiveResolution.ι_f_succ + structure category_theory.InjectiveResolution 2022-03-15 08:11:46 585d641 refactor(linear_algebra/basic): split file (#12637) `linear_algebra.basic` has become a 2800 line monster, with lots of imports. This is some further work on splitting it into smaller pieces, by extracting everything about (or needing) `span` to `linear_algebra.span`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/module/submodule_pointwise.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/linear_algebra/basic.lean - def linear_equiv.coord - theorem linear_equiv.coord_self - theorem linear_equiv.ker_to_span_singleton - def linear_equiv.to_span_nonzero_singleton - theorem linear_equiv.to_span_nonzero_singleton_one - theorem linear_map.eq_on_span' - theorem linear_map.eq_on_span - theorem linear_map.ext_on - theorem linear_map.ext_on_range - theorem linear_map.map_eq_top_iff - theorem linear_map.map_injective - theorem linear_map.map_le_map_iff' - theorem linear_map.span_singleton_eq_range - theorem linear_map.span_singleton_sup_ker_eq_top - def linear_map.to_span_singleton - theorem linear_map.to_span_singleton_one - theorem submodule.apply_mem_span_image_of_mem_span - theorem submodule.coe_scott_continuous - theorem submodule.coe_sup - theorem submodule.coe_supr_of_chain - theorem submodule.coe_supr_of_directed - theorem submodule.comap_map_eq - theorem submodule.comap_map_eq_self - theorem submodule.disjoint_span_singleton' - theorem submodule.disjoint_span_singleton - theorem submodule.le_span_singleton_iff - theorem submodule.lt_sup_iff_not_mem - theorem submodule.map_span - theorem submodule.map_span_le - theorem submodule.map_subtype_span_singleton - theorem submodule.mem_Sup_of_directed - theorem submodule.mem_prod - theorem submodule.mem_span - theorem submodule.mem_span_finite_of_mem_span - theorem submodule.mem_span_insert' - theorem submodule.mem_span_insert - theorem submodule.mem_span_singleton - theorem submodule.mem_span_singleton_self - theorem submodule.mem_span_singleton_trans - theorem submodule.mem_sup' - theorem submodule.mem_sup - theorem submodule.mem_supr - theorem submodule.mem_supr_of_chain - theorem submodule.mem_supr_of_directed - theorem submodule.nontrivial_span_singleton - theorem submodule.not_mem_span_of_apply_not_mem_span_image - def submodule.prod - theorem submodule.prod_bot - theorem submodule.prod_coe - theorem submodule.prod_inf_prod - theorem submodule.prod_mono - theorem submodule.prod_sup_prod - theorem submodule.prod_top - theorem submodule.singleton_span_is_compact_element - def submodule.span - theorem submodule.span_Union - theorem submodule.span_attach_bUnion - theorem submodule.span_coe_eq_restrict_scalars - theorem submodule.span_empty - theorem submodule.span_eq - theorem submodule.span_eq_bot - theorem submodule.span_eq_of_le - theorem submodule.span_eq_supr_of_singleton_spans - theorem submodule.span_image - theorem submodule.span_induction' - theorem submodule.span_induction - theorem submodule.span_insert - theorem submodule.span_insert_eq_span - theorem submodule.span_insert_zero - theorem submodule.span_int_eq - theorem submodule.span_int_eq_add_subgroup_closure - theorem submodule.span_le - theorem submodule.span_le_restrict_scalars - theorem submodule.span_mono - theorem submodule.span_nat_eq - theorem submodule.span_nat_eq_add_submonoid_closure - theorem submodule.span_neg - theorem submodule.span_preimage_le - theorem submodule.span_prod_le - theorem submodule.span_singleton_eq_bot - theorem submodule.span_singleton_eq_range - theorem submodule.span_singleton_eq_top_iff - theorem submodule.span_singleton_le_iff_mem - theorem submodule.span_singleton_smul_eq - theorem submodule.span_singleton_smul_le - theorem submodule.span_smul_eq_of_is_unit - theorem submodule.span_smul_le - theorem submodule.span_span - theorem submodule.span_span_coe_preimage - theorem submodule.span_span_of_tower - theorem submodule.span_subset_span - theorem submodule.span_sup - theorem submodule.span_union - theorem submodule.span_univ - theorem submodule.span_zero - theorem submodule.span_zero_singleton - theorem submodule.subset_span - theorem submodule.subset_span_trans - theorem submodule.sup_span - theorem submodule.sup_to_add_subgroup - theorem submodule.sup_to_add_submonoid - theorem submodule.supr_eq_span - theorem submodule.supr_induction' - theorem submodule.supr_induction - theorem submodule.supr_to_add_submonoid Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/prod.lean Modified src/linear_algebra/quotient.lean Added src/linear_algebra/span.lean + def linear_equiv.coord + theorem linear_equiv.coord_self + def linear_equiv.to_span_nonzero_singleton + theorem linear_equiv.to_span_nonzero_singleton_one + theorem linear_map.eq_on_span' + theorem linear_map.eq_on_span + theorem linear_map.ext_on + theorem linear_map.ext_on_range + theorem linear_map.ker_to_span_singleton + theorem linear_map.map_eq_top_iff + theorem linear_map.map_injective + theorem linear_map.map_le_map_iff' + theorem linear_map.span_singleton_eq_range + theorem linear_map.span_singleton_sup_ker_eq_top + def linear_map.to_span_singleton + theorem linear_map.to_span_singleton_one + theorem submodule.apply_mem_span_image_of_mem_span + theorem submodule.coe_scott_continuous + theorem submodule.coe_sup + theorem submodule.coe_supr_of_chain + theorem submodule.coe_supr_of_directed + theorem submodule.comap_map_eq + theorem submodule.comap_map_eq_self + theorem submodule.disjoint_span_singleton' + theorem submodule.disjoint_span_singleton + theorem submodule.le_span_singleton_iff + theorem submodule.lt_sup_iff_not_mem + theorem submodule.map_span + theorem submodule.map_span_le + theorem submodule.map_subtype_span_singleton + theorem submodule.mem_Sup_of_directed + theorem submodule.mem_prod + theorem submodule.mem_span + theorem submodule.mem_span_finite_of_mem_span + theorem submodule.mem_span_insert' + theorem submodule.mem_span_insert + theorem submodule.mem_span_singleton + theorem submodule.mem_span_singleton_self + theorem submodule.mem_span_singleton_trans + theorem submodule.mem_sup' + theorem submodule.mem_sup + theorem submodule.mem_supr + theorem submodule.mem_supr_of_chain + theorem submodule.mem_supr_of_directed + theorem submodule.nontrivial_span_singleton + theorem submodule.not_mem_span_of_apply_not_mem_span_image + def submodule.prod + theorem submodule.prod_bot + theorem submodule.prod_coe + theorem submodule.prod_inf_prod + theorem submodule.prod_mono + theorem submodule.prod_sup_prod + theorem submodule.prod_top + theorem submodule.singleton_span_is_compact_element + def submodule.span + theorem submodule.span_Union + theorem submodule.span_attach_bUnion + theorem submodule.span_coe_eq_restrict_scalars + theorem submodule.span_empty + theorem submodule.span_eq + theorem submodule.span_eq_bot + theorem submodule.span_eq_of_le + theorem submodule.span_eq_supr_of_singleton_spans + theorem submodule.span_image + theorem submodule.span_induction' + theorem submodule.span_induction + theorem submodule.span_insert + theorem submodule.span_insert_eq_span + theorem submodule.span_insert_zero + theorem submodule.span_int_eq + theorem submodule.span_int_eq_add_subgroup_closure + theorem submodule.span_le + theorem submodule.span_le_restrict_scalars + theorem submodule.span_mono + theorem submodule.span_nat_eq + theorem submodule.span_nat_eq_add_submonoid_closure + theorem submodule.span_neg + theorem submodule.span_preimage_le + theorem submodule.span_prod_le + theorem submodule.span_singleton_eq_bot + theorem submodule.span_singleton_eq_range + theorem submodule.span_singleton_eq_top_iff + theorem submodule.span_singleton_le_iff_mem + theorem submodule.span_singleton_smul_eq + theorem submodule.span_singleton_smul_le + theorem submodule.span_smul_eq_of_is_unit + theorem submodule.span_smul_le + theorem submodule.span_span + theorem submodule.span_span_coe_preimage + theorem submodule.span_span_of_tower + theorem submodule.span_subset_span + theorem submodule.span_sup + theorem submodule.span_union + theorem submodule.span_univ + theorem submodule.span_zero + theorem submodule.span_zero_singleton + theorem submodule.subset_span + theorem submodule.subset_span_trans + theorem submodule.sup_span + theorem submodule.sup_to_add_subgroup + theorem submodule.sup_to_add_submonoid + theorem submodule.supr_eq_span + theorem submodule.supr_induction' + theorem submodule.supr_induction + theorem submodule.supr_to_add_submonoid Modified src/linear_algebra/tensor_product.lean Modified src/ring_theory/simple_module.lean Modified src/ring_theory/witt_vector/isocrystal.lean 2022-03-15 06:38:19 2ad9b39 feat(algebra/associated): add irreducible.not_dvd_one (#12686) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem irreducible.not_dvd_one Modified src/data/nat/prime.lean +/- theorem nat.prime.not_dvd_one 2022-03-15 03:40:54 6d63c9b chore(scripts): update nolints.txt (#12696) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2022-03-15 03:40:53 0fd9e30 feat(set_theory/ordinal_arithmetic): `smul` coincides with `mul` (#12692) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.smul_eq_mul 2022-03-15 03:05:43 f337856 feat(algebra/category): show categorical image in Module agrees with range (#12605) This just follows the existing code for the same fact in `AddCommGroup`. This PR is preparing for a better API for homological calculations in `Module R`. ESTIMATED CHANGES Added src/algebra/category/Module/images.lean + def Module.factor_thru_image + theorem Module.image.fac + theorem Module.image.lift_fac + def Module.image.ι + def Module.image + theorem Module.image_iso_range_hom_subtype + theorem Module.image_iso_range_inv_image_ι + def Module.mono_factorisation 2022-03-15 00:51:24 1148717 chore(set_theory/ordinal_arithmetic): `well_founded` → `wf` (#12615) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-03-14 20:38:51 8d2e887 feat(number_theory/function_field): add place at infinity (#12245) ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.nat_degree_sub_eq_of_prod_eq Modified src/field_theory/ratfunc.lean + theorem ratfunc.X_ne_zero + def ratfunc.int_degree + theorem ratfunc.int_degree_C + theorem ratfunc.int_degree_X + theorem ratfunc.int_degree_add + theorem ratfunc.int_degree_add_le + theorem ratfunc.int_degree_mul + theorem ratfunc.int_degree_neg + theorem ratfunc.int_degree_one + theorem ratfunc.int_degree_polynomial + theorem ratfunc.int_degree_zero + theorem ratfunc.nat_degree_num_mul_right_sub_nat_degree_denom_mul_left_eq_int_degree + theorem ratfunc.num_denom_neg + theorem ratfunc.num_mul_denom_add_denom_mul_num_ne_zero Modified src/number_theory/function_field.lean + theorem function_field.infty_valuation.C + theorem function_field.infty_valuation.X + theorem function_field.infty_valuation.map_add_le_max' + theorem function_field.infty_valuation.map_mul' + theorem function_field.infty_valuation.map_one' + theorem function_field.infty_valuation.map_zero' + theorem function_field.infty_valuation.polynomial + def function_field.infty_valuation + theorem function_field.infty_valuation_apply + def function_field.infty_valuation_def + theorem function_field.infty_valuation_of_nonzero 2022-03-14 18:58:33 c1c61d4 feat(data/W/constructions): add constructions of W types (#12292) Here I write the naturals and lists as W-types and show that the definitions are equivalent. Any other interesting examples I should add? ESTIMATED CHANGES Modified src/data/W/basic.lean Added src/data/W/constructions.lean + def W_type.equiv_list + def W_type.equiv_nat + theorem W_type.left_inv_list + theorem W_type.left_inv_nat + inductive W_type.list_α + def W_type.list_α_equiv_punit_sum + def W_type.list_β + inductive W_type.nat_α + def W_type.nat_α_equiv_punit_sum_punit + def W_type.nat_β + def W_type.of_list + def W_type.of_nat + theorem W_type.right_inv_list + theorem W_type.right_inv_nat + def W_type.to_list + def W_type.to_nat 2022-03-14 17:36:38 2e56210 chore(analysis/complex/upper_half_plane): don't use `abbreviation` (#12679) Some day we should add Poincaré metric as a `metric_space` instance on `upper_half_plane`. In the meantime, make sure that Lean doesn't use `subtype` instances for `uniform_space` and/or `metric_space`. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane.lean +/- def upper_half_plane 2022-03-14 15:48:03 28775ce feat(tactic/interactive): guard_{hyp,target}_mod_implicit (#12668) This adds two new tactics `guard_hyp_mod_implicit` and `guard_target_mod_implicit`, with the same syntax as `guard_hyp` and `guard_target`. While the `guard_*` tactics check for syntax equality, the `guard_*_mod_implicit` tactics check for definitional equality with the `none` transparency ESTIMATED CHANGES Modified src/tactic/interactive.lean Added test/mod_implicit.lean 2022-03-14 13:59:47 d8ef1de feat(topology/separation): add t2_space_iff (#12628) From my formalising mathematics 22 course ESTIMATED CHANGES Modified src/topology/separation.lean 2022-03-14 13:59:46 5242a7f feat(data/list/infix): add lemmas and instances (#12511) ESTIMATED CHANGES Modified src/data/list/infix.lean - theorem list.infix.length_le + theorem list.infix_cons_iff + theorem list.is_infix.length_le + theorem list.is_prefix.length_le + theorem list.is_suffix.length_le + theorem list.reverse_infix 2022-03-14 13:59:45 df3792f refactor(data/set): generalize `set.restrict` and take set argument first in both `set.restrict` and `subtype.restrict` (#12510) Generalizes `set.restrict` to Pi types and makes both this function and `subtype.restrict` take the restricting index set before the Pi type to restrict, which makes taking the image/preimage of a set of Pi types easier (`s.restrict '' pis` is shorter than `(λ p, set.restrict p s) '' pis` -- I'd argue that this is the more common case than taking the image of a set of restricting sets on a single Pi type). Changed uses of `set.restrict` to use dot notation where possible. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/category_theory/limits/shapes/biproducts.lean +/- def category_theory.limits.biproduct.from_subtype +/- def category_theory.limits.biproduct.to_subtype Modified src/data/set/function.lean +/- theorem set.inj_on_iff_injective +/- theorem set.range_restrict +/- def set.restrict +/- theorem set.restrict_apply +/- theorem set.surj_on_iff_surjective Modified src/data/subtype.lean +/- def subtype.restrict +/- theorem subtype.restrict_def Modified src/group_theory/complement.lean Modified src/measure_theory/measurable_space.lean Modified src/topology/fiber_bundle.lean +/- def topological_fiber_bundle.pretrivialization.set_symm Modified src/topology/local_homeomorph.lean 2022-03-14 13:59:43 c1edbec feat(set_theory/ordinal_topology): Basic results on the order topology of ordinals (#11861) We link together various notions about ordinals to their topological counterparts. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.is_normal.sup Added src/set_theory/ordinal_topology.lean + theorem ordinal.enum_ord_is_normal_iff_is_closed + theorem ordinal.is_closed_iff_bsup + theorem ordinal.is_closed_iff_sup + theorem ordinal.is_limit_of_mem_frontier + theorem ordinal.is_normal_iff_strict_mono_and_continuous + theorem ordinal.is_open_iff + theorem ordinal.is_open_singleton_iff + theorem ordinal.mem_closed_iff_bsup + theorem ordinal.mem_closed_iff_sup + theorem ordinal.mem_closure_iff_bsup + theorem ordinal.mem_closure_iff_sup 2022-03-14 12:19:21 09ea7fb feat(data/finset/noncomm_prod): finite pi lemmas (#12291) including a few helpers ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.mul_single_apply_commute + theorem pi.mul_single_commute Modified src/data/finset/noncomm_prod.lean + theorem finset.noncomm_prod_eq_pow_card + theorem finset.noncomm_prod_map + theorem finset.noncomm_prod_mul_single + theorem monoid_hom.pi_ext + theorem multiset.nocomm_prod_map_aux + theorem multiset.noncomm_prod_eq_pow_card + theorem multiset.noncomm_prod_map 2022-03-14 11:12:21 fc882ff chore(ci): update trepplein to version 1.1 (#12669) New upstream release, fixing some performance issues. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2022-03-14 11:12:20 abb8e5d feat(set_theory/principal): If `a` isn't additive principal, it's the sum of two smaller ordinals (#12664) ESTIMATED CHANGES Modified src/set_theory/principal.lean + theorem ordinal.exists_lt_add_of_not_principal_add + theorem ordinal.principal_add_iff_add_lt_ne_self 2022-03-14 11:12:19 cc6e2eb feat(group_theory/commutator): The three subgroups lemma (#12634) This PR proves the three subgroups lemma: If `⁅⁅H₂, H₃⁆, H₁⁆ = ⊥` and `⁅⁅H₃, H₁⁆, H₂⁆ = ⊥`, then `⁅⁅H₁, H₂⁆, H₃⁆ = ⊥`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean + theorem subgroup.commutator_commutator_eq_bot_of_rotate 2022-03-14 11:12:18 6a51706 chore(topology/homotopy): Move more algebraic-flavored content about fundamental groupoid to algebraic_topology folder (#12631) Moved: - `topology/homotopy/fundamental_groupoid.lean` to `algebraic_topology/fundamental_groupoid/basic.lean` - the second half of `topology/homotopy/product.lean`, dealing with `fundamental_groupoid_functor` preserving products, to `algebraic_topology/fundamental_groupoid/product.lean` - `topology/homotopy/induced_maps.lean` to `algebraic_topology/fundamental_groupoid/induced_maps.lean` ESTIMATED CHANGES Renamed src/topology/homotopy/fundamental_groupoid.lean to src/algebraic_topology/fundamental_groupoid/basic.lean Renamed src/topology/homotopy/induced_maps.lean to src/algebraic_topology/fundamental_groupoid/induced_maps.lean Added src/algebraic_topology/fundamental_groupoid/product.lean + def fundamental_groupoid_functor.cone_discrete_comp + theorem fundamental_groupoid_functor.cone_discrete_comp_obj_map_cone + def fundamental_groupoid_functor.pi_Top_to_pi_cone + def fundamental_groupoid_functor.pi_iso + def fundamental_groupoid_functor.pi_to_pi_Top + def fundamental_groupoid_functor.preserves_product + def fundamental_groupoid_functor.prod_iso + def fundamental_groupoid_functor.prod_to_prod_Top + theorem fundamental_groupoid_functor.prod_to_prod_Top_map + def fundamental_groupoid_functor.proj + def fundamental_groupoid_functor.proj_left + theorem fundamental_groupoid_functor.proj_left_map + theorem fundamental_groupoid_functor.proj_map + def fundamental_groupoid_functor.proj_right + theorem fundamental_groupoid_functor.proj_right_map Modified src/topology/homotopy/product.lean - def fundamental_groupoid_functor.cone_discrete_comp - theorem fundamental_groupoid_functor.cone_discrete_comp_obj_map_cone - def fundamental_groupoid_functor.pi_Top_to_pi_cone - def fundamental_groupoid_functor.pi_iso - def fundamental_groupoid_functor.pi_to_pi_Top - def fundamental_groupoid_functor.preserves_product - def fundamental_groupoid_functor.prod_iso - def fundamental_groupoid_functor.prod_to_prod_Top - theorem fundamental_groupoid_functor.prod_to_prod_Top_map - def fundamental_groupoid_functor.proj - def fundamental_groupoid_functor.proj_left - theorem fundamental_groupoid_functor.proj_left_map - theorem fundamental_groupoid_functor.proj_map - def fundamental_groupoid_functor.proj_right - theorem fundamental_groupoid_functor.proj_right_map 2022-03-14 09:29:31 a2544de chore(algebra/category/Module): simp lemmas for monoidal closed (#12608) I'm worried by the fact that I can't express the coercions here without using `@`. They do turn up in the wild, however! ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean + theorem Module.monoidal_closed_curry + theorem Module.monoidal_closed_uncurry 2022-03-14 09:29:29 31e60c8 feat(set_theory/{ordinal, ordinal_arithmetic}): Add various instances for `o.out.α` (#12508) ESTIMATED CHANGES Modified src/measure_theory/card_measurable_space.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/ordinal.lean + theorem ordinal.enum_le_enum' + theorem ordinal.enum_zero_eq_bot + theorem ordinal.enum_zero_le' + theorem ordinal.enum_zero_le + theorem ordinal.le_enum_succ + theorem ordinal.lt_succ + def ordinal.out_order_bot_of_pos + theorem ordinal.typein_le_typein' Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.enum_succ_eq_top - theorem ordinal.has_succ_of_is_limit + theorem ordinal.has_succ_of_type_succ_lt - theorem ordinal.lt_succ + theorem ordinal.out_no_max_of_succ_lt 2022-03-14 09:29:27 1f428f3 feat(data/list/basic): Split and intercalate are inverses (#12466) Show that split and intercalate are inverses of each other (under suitable conditions) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.intercalate_split_on + theorem list.modify_head_modify_head + theorem list.split_on_intercalate +/- theorem list.split_on_p_aux_eq + theorem list.split_on_p_aux_ne_nil +/- theorem list.split_on_p_aux_nil + theorem list.split_on_p_aux_spec + theorem list.split_on_p_cons + theorem list.split_on_p_eq_single + theorem list.split_on_p_first + theorem list.split_on_p_ne_nil + theorem list.split_on_p_nil +/- theorem list.split_on_p_spec 2022-03-14 09:29:26 cd001b2 feat(category_theory/bicategory/free): define free bicategories (#11998) ESTIMATED CHANGES Added src/category_theory/bicategory/free.lean + theorem category_theory.free_bicategory.comp_def + inductive category_theory.free_bicategory.hom + inductive category_theory.free_bicategory.hom₂ + theorem category_theory.free_bicategory.id_def + def category_theory.free_bicategory.lift + def category_theory.free_bicategory.lift_hom + theorem category_theory.free_bicategory.lift_hom_comp + theorem category_theory.free_bicategory.lift_hom_id + def category_theory.free_bicategory.lift_hom₂ + theorem category_theory.free_bicategory.lift_hom₂_congr + theorem category_theory.free_bicategory.mk_associator_hom + theorem category_theory.free_bicategory.mk_associator_inv + theorem category_theory.free_bicategory.mk_id + theorem category_theory.free_bicategory.mk_left_unitor_hom + theorem category_theory.free_bicategory.mk_left_unitor_inv + theorem category_theory.free_bicategory.mk_right_unitor_hom + theorem category_theory.free_bicategory.mk_right_unitor_inv + theorem category_theory.free_bicategory.mk_vcomp + theorem category_theory.free_bicategory.mk_whisker_left + theorem category_theory.free_bicategory.mk_whisker_right + def category_theory.free_bicategory.of + inductive category_theory.free_bicategory.rel + def category_theory.free_bicategory 2022-03-14 08:31:44 520f204 feat(analysis/seminorm): add lemmas for inequalities and `finset.sup` (#12650) These lemmas are not lean-trivial since seminorms map to the `real` and not to `nnreal`. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.finset_sup_apply_le + theorem seminorm.finset_sup_apply_lt 2022-03-14 08:31:43 0f3bfda feat(analysis/complex/schwarz): some versions of the Schwarz lemma (#12633) ESTIMATED CHANGES Modified src/analysis/calculus/dslope.lean + theorem continuous_linear_map.dslope_comp Modified src/analysis/complex/removable_singularity.lean Added src/analysis/complex/schwarz.lean + theorem complex.abs_deriv_le_div_of_maps_to_ball + theorem complex.abs_deriv_le_one_of_maps_to_ball + theorem complex.abs_le_abs_of_maps_to_ball_self + theorem complex.dist_le_dist_of_maps_to_ball_self + theorem complex.dist_le_div_mul_dist_of_maps_to_ball + theorem complex.norm_deriv_le_div_of_maps_to_ball + theorem complex.norm_dslope_le_div_of_maps_to_ball + theorem complex.schwarz_aux Modified src/linear_algebra/affine_space/slope.lean + theorem affine_map.slope_comp + theorem linear_map.slope_comp 2022-03-14 08:31:42 c2368be feat(topology/hom/open): Continuous open maps (#12406) Define `continuous_open_map`, the type of continuous opens maps between two topological spaces, and `continuous_open_map_class`, its companion hom class. ESTIMATED CHANGES Added src/topology/hom/open.lean + theorem continuous_open_map.cancel_left + theorem continuous_open_map.cancel_right + theorem continuous_open_map.coe_comp + theorem continuous_open_map.coe_id + def continuous_open_map.comp + theorem continuous_open_map.comp_apply + theorem continuous_open_map.comp_assoc + theorem continuous_open_map.comp_id + theorem continuous_open_map.ext + theorem continuous_open_map.id_apply + theorem continuous_open_map.id_comp + theorem continuous_open_map.to_fun_eq_coe + structure continuous_open_map 2022-03-14 07:05:57 7b7fea5 refactor(set_theory/cardinal_ordinal): `aleph_is_principal_aleph` → `principal_add_aleph` (#12663) This matches the naming scheme used throughout `set_theory/principal.lean`. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean - theorem cardinal.aleph_is_principal_add - theorem cardinal.ord_is_principal_add + theorem cardinal.principal_add_aleph + theorem cardinal.principal_add_ord 2022-03-14 07:05:56 6ebb378 feat(set_theory/ordinal): `ord 1 = 1` (#12662) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem cardinal.ord_one 2022-03-14 07:05:55 18ba395 feat(algebra/support) support of power is subset of support (#12654) ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.mul_support_pow 2022-03-14 07:05:54 6b3b567 chore(topology/algebra/group_with_zero): fix docstring for has_continuous_inv0 (#12653) ESTIMATED CHANGES Modified src/topology/algebra/group_with_zero.lean Modified src/topology/instances/nnreal.lean 2022-03-14 07:05:53 1f5950a feat(analysis/seminorm): add lemmas for `with_seminorms` (#12649) Two helper lemmas that make it easier to generate an instance for `with_seminorms`. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.with_seminorms_of_has_basis + theorem seminorm.with_seminorms_of_nhds 2022-03-14 07:05:51 b6fa3be move(topology/sets/*): Move topological types of sets together (#12648) Move * `topology.opens` to `topology.sets.opens` * `topology.compacts` to `topology.sets.closeds` and `topology.sets.compacts` `closeds` and `clopens` go into `topology.sets.closeds` and `compacts`, `nonempty_compacts`, `positive_compacts` and `compact_opens` go into `topology.sets.compacts`. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/category_theory/sites/spaces.lean Modified src/measure_theory/measure/content.lean Modified src/order/category/Frame.lean Modified src/topology/alexandroff.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/category/Top/opens.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/kuratowski.lean Added src/topology/sets/closeds.lean + theorem topological_space.clopens.clopen + theorem topological_space.clopens.coe_bot + theorem topological_space.clopens.coe_compl + theorem topological_space.clopens.coe_inf + theorem topological_space.clopens.coe_mk + theorem topological_space.clopens.coe_sdiff + theorem topological_space.clopens.coe_sup + theorem topological_space.clopens.coe_top + def topological_space.clopens.to_opens + structure topological_space.clopens + theorem topological_space.closeds.closed + theorem topological_space.closeds.coe_bot + theorem topological_space.closeds.coe_inf + theorem topological_space.closeds.coe_mk + theorem topological_space.closeds.coe_sup + theorem topological_space.closeds.coe_top + structure topological_space.closeds Renamed src/topology/compacts.lean to src/topology/sets/compacts.lean - theorem topological_space.clopens.clopen - theorem topological_space.clopens.coe_bot - theorem topological_space.clopens.coe_compl - theorem topological_space.clopens.coe_inf - theorem topological_space.clopens.coe_mk - theorem topological_space.clopens.coe_sdiff - theorem topological_space.clopens.coe_sup - theorem topological_space.clopens.coe_top - def topological_space.clopens.to_opens - structure topological_space.clopens - theorem topological_space.closeds.closed - theorem topological_space.closeds.coe_bot - theorem topological_space.closeds.coe_inf - theorem topological_space.closeds.coe_mk - theorem topological_space.closeds.coe_sup - theorem topological_space.closeds.coe_top - structure topological_space.closeds Renamed src/topology/opens.lean to src/topology/sets/opens.lean 2022-03-14 07:05:50 778dfd5 chore(analysis/locally_convex/basic): generalize lemmas and add simple lemmas (#12643) Gerenalize all 'simple' lemmas for `absorb` and `absorbent` to the type-class `[semi_normed_ring 𝕜] [has_scalar 𝕜 E]`. Additionally, add the lemmas `absorbs_empty`, `balanced_mem` and `zero_singleton_balanced`. ESTIMATED CHANGES Modified src/analysis/locally_convex/basic.lean + theorem absorbs_empty + theorem balanced_mem + theorem zero_singleton_balanced 2022-03-14 07:05:49 f8d947c add endofunctor.algebra (#12642) This is the second attempt at the following outdated pull request: https://github.com/leanprover-community/mathlib/pull/12295 The original post: In this PR I define algebras of endofunctors, make the forgetful functor to the ambient category, and show that initial algebras have isomorphisms as their structure maps. This is mostly taken from `monad.algebra`. ESTIMATED CHANGES Added src/category_theory/endofunctor/algebra.lean + theorem category_theory.endofunctor.algebra.comp_eq_comp + theorem category_theory.endofunctor.algebra.comp_f + def category_theory.endofunctor.algebra.equiv_of_nat_iso + def category_theory.endofunctor.algebra.forget + def category_theory.endofunctor.algebra.functor_of_nat_trans + def category_theory.endofunctor.algebra.functor_of_nat_trans_comp + def category_theory.endofunctor.algebra.functor_of_nat_trans_eq + def category_theory.endofunctor.algebra.functor_of_nat_trans_id + def category_theory.endofunctor.algebra.hom.comp + def category_theory.endofunctor.algebra.hom.id + structure category_theory.endofunctor.algebra.hom + theorem category_theory.endofunctor.algebra.id_eq_id + theorem category_theory.endofunctor.algebra.id_f + theorem category_theory.endofunctor.algebra.initial.left_inv' + theorem category_theory.endofunctor.algebra.initial.left_inv + theorem category_theory.endofunctor.algebra.initial.right_inv + def category_theory.endofunctor.algebra.initial.str_inv + theorem category_theory.endofunctor.algebra.initial.str_is_iso + def category_theory.endofunctor.algebra.iso_mk + theorem category_theory.endofunctor.algebra.iso_of_iso + structure category_theory.endofunctor.algebra 2022-03-14 05:19:50 174f1da refactor(set_theory/ordinal_arithmetic): Turn various results into simp lemmas (#12661) In order to do this, we had to change the direction of various equalities. ESTIMATED CHANGES Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.blsub_eq_lsub' +/- theorem ordinal.blsub_eq_lsub + theorem ordinal.bsup_eq_blsub +/- theorem ordinal.bsup_eq_sup' +/- theorem ordinal.bsup_eq_sup +/- theorem ordinal.lsub_eq_blsub' +/- theorem ordinal.lsub_eq_blsub +/- theorem ordinal.sup_eq_bsup' +/- theorem ordinal.sup_eq_bsup + theorem ordinal.sup_eq_lsub 2022-03-14 05:19:49 ad0988b docs(algebra/*): Add docstrings to additive lemmas (#12578) Many additive lemmas had no docstrings while their multiplicative counterparts had. This adds them in all files under `algebra`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_ite_eq' - theorem finset.sum_comp Modified src/algebra/big_operators/finprod.lean +/- theorem exists_ne_one_of_finprod_mem_ne_one +/- theorem finprod_comp +/- theorem finprod_div_distrib +/- theorem finprod_emb_domain' +/- theorem finprod_eq_of_bijective +/- theorem finprod_induction +/- theorem finprod_mem_Union +/- theorem finprod_mem_bUnion +/- theorem finprod_mem_comm +/- theorem finprod_mem_div_distrib +/- theorem finprod_mem_dvd +/- theorem finprod_mem_empty +/- theorem finprod_mem_eq_of_bij_on +/- theorem finprod_mem_finset_product' +/- theorem finprod_mem_finset_product +/- theorem finprod_mem_image' +/- theorem finprod_mem_image - theorem finprod_mem_induction +/- theorem finprod_mem_insert' +/- theorem finprod_mem_insert +/- theorem finprod_mem_insert_of_eq_one_if_not_mem +/- theorem finprod_mem_insert_one +/- theorem finprod_mem_mul_diff' +/- theorem finprod_mem_mul_diff +/- theorem finprod_mem_mul_distrib' +/- theorem finprod_mem_mul_distrib +/- theorem finprod_mem_of_eq_on_one +/- theorem finprod_mem_one +/- theorem finprod_mem_pair +/- theorem finprod_mem_range' +/- theorem finprod_mem_range +/- theorem finprod_mem_sUnion +/- theorem finprod_mem_singleton +/- theorem finprod_mem_union'' +/- theorem finprod_mem_union' +/- theorem finprod_mem_union - theorem finprod_mem_union_inter' +/- theorem finprod_mem_union_inter +/- theorem finprod_mul_distrib +/- theorem finsum_mul +/- theorem finsum_smul +/- theorem monoid_hom.map_finprod_mem' +/- theorem monoid_hom.map_finprod_mem +/- theorem mul_finsum +/- theorem nonempty_of_finprod_mem_ne_one Modified src/algebra/big_operators/nat_antidiagonal.lean Modified src/algebra/big_operators/ring.lean Modified src/algebra/category/Group/limits.lean Modified src/algebra/category/Mon/limits.lean Modified src/algebra/group/commute.lean +/- theorem commute.mul_left +/- theorem commute.mul_right Modified src/algebra/group/freiman.lean Modified src/algebra/group/hom.lean +/- theorem map_div Modified src/algebra/group/semiconj.lean +/- theorem semiconj_by.conj_mk +/- theorem semiconj_by.mul_left +/- theorem semiconj_by.mul_right +/- theorem semiconj_by.units_inv_right +/- theorem semiconj_by.units_inv_symm_left Modified src/algebra/group/units.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/indicator_function.lean +/- theorem set.mem_of_mul_indicator_ne_one +/- theorem set.prod_mul_indicator_subset Modified src/algebra/order/group.lean +/- theorem abs_eq_sup_inv Modified src/algebra/order/hom/monoid.lean Modified src/algebra/order/lattice_group.lean - theorem lattice_ordered_comm_group.m_abs_abs + theorem lattice_ordered_comm_group.mabs_mabs Modified src/algebra/order/monoid_lemmas.lean Modified src/algebra/pointwise.lean 2022-03-14 04:48:58 580e1d9 feat(analysis/inner_product_space/pi_L2): `linear_isometry.extend` (#12192) Let `S` be a subspace of a finite-dimensional inner product space `V`. A linear isometry mapping `S` into `V` can be extended to a full isometry of `V`. Note that this is false if we remove the finite-dimensional hypothesis; consider the shift operator (0, x_2, x_3, ...) to (x_2, x_3, x_4, ...). I hope that the naming choice is consistent. Combining the two `simp only` blocks in `linear_isometry.extend_apply` results in a timeout, but they seem to work okay split up. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem linear_isometry.extend_apply 2022-03-14 02:40:00 3751ec6 feat(measure_theory/group/fundamental_domain): ess_sup_measure_restrict (#12603) If `f` is invariant under the action of a countable group `G`, and `μ` is a `G`-invariant measure with a fundamental domain `s`, then the `ess_sup` of `f` restricted to `s` is the same as that of `f` on all of its domain. ESTIMATED CHANGES Modified src/measure_theory/function/ess_sup.lean + theorem ess_sup_eq_Inf + theorem ess_sup_mono_measure' Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.ess_sup_measure_restrict + theorem measure_theory.is_fundamental_domain.measure_zero_of_invariant 2022-03-13 14:52:04 223e742 feat(analysis/*/{exponential, spectrum}): spectrum of a selfadjoint element is real (#12417) This provides several properties of the exponential function and uses it to prove that for `𝕜 = ℝ` or `𝕜 = ℂ`, `exp 𝕜 𝕜` maps the spectrum of `a : A` (where `A` is a `𝕜`-algebra) into the spectrum of `exp 𝕜 A a`. In addition, `exp ℂ A (I • a)` is unitary when `a` is selfadjoint. Consequently, the spectrum of a selfadjoint element is real. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + def algebra_map_clm + theorem algebra_map_clm_coe + theorem algebra_map_clm_to_linear_map Modified src/analysis/normed_space/exponential.lean + theorem algebra_map_exp_comm + theorem algebra_map_exp_comm_of_mem_ball + theorem star_exp Modified src/analysis/normed_space/spectrum.lean + theorem spectrum.exp_mem_exp Added src/analysis/normed_space/star/exponential.lean + theorem commute.exp_unitary + theorem commute.exp_unitary_add + theorem self_adjoint.exp_i_smul_unitary Modified src/analysis/normed_space/star/spectrum.lean + theorem self_adjoint.coe_re_map_spectrum' + theorem self_adjoint.coe_re_map_spectrum + theorem self_adjoint.mem_spectrum_eq_re' + theorem self_adjoint.mem_spectrum_eq_re +/- theorem spectral_radius_eq_nnnorm_of_self_adjoint +/- theorem spectral_radius_eq_nnnorm_of_star_normal 2022-03-13 13:32:14 7d34f78 chore(algebra/algebra/subalgebra): reduce imports (#12636) Splitting a file, and reducing imports. No change in contents. ESTIMATED CHANGES Renamed src/algebra/algebra/subalgebra.lean to src/algebra/algebra/subalgebra/basic.lean - theorem subalgebra.coe_pointwise_smul - theorem subalgebra.mul_self - theorem subalgebra.pointwise_smul_to_submodule - theorem subalgebra.pointwise_smul_to_subring - theorem subalgebra.pointwise_smul_to_subsemiring - theorem subalgebra.smul_mem_pointwise_smul Added src/algebra/algebra/subalgebra/pointwise.lean + theorem subalgebra.coe_pointwise_smul + theorem subalgebra.mul_self + theorem subalgebra.pointwise_smul_to_submodule + theorem subalgebra.pointwise_smul_to_subring + theorem subalgebra.pointwise_smul_to_subsemiring + theorem subalgebra.smul_mem_pointwise_smul Modified src/algebra/algebra/tower.lean Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/direct_sum/internal.lean Modified src/algebra/free_algebra.lean Modified src/algebra/lie/of_associative.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/tensor_algebra/basic.lean Modified src/ring_theory/adjoin/basic.lean Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/polynomial/symmetric.lean Modified src/topology/algebra/algebra.lean Modified src/topology/continuous_function/algebra.lean 2022-03-13 07:59:44 daa257f feat(analysis/normed_space/star/basic): `matrix.entrywise_sup_norm_star_eq_norm` (#12201) This is precisely the statement needed for a `normed_star_monoid` instance on matrices using the entrywise sup norm. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem matrix.norm_entry_le_entrywise_sup_norm Modified src/analysis/normed_space/star/basic.lean + theorem matrix.entrywise_sup_norm_star_eq_norm 2022-03-13 04:14:17 73530b5 feat(algebra/algebra/spectrum): prove spectral inclusion for algebra homomorphisms (#12573) If `φ : A →ₐ[R] B` is an `R`-algebra homomorphism, then for any `a : A`, `spectrum R (φ a) ⊆ spectrum R a`. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem alg_hom.mem_resolvent_set_apply + theorem alg_hom.spectrum_apply_subset 2022-03-13 00:04:24 9f1f8c1 feat(ring_theory/graded_algebra/homogeneous_ideal): definition of irrelevant ideal of a graded algebra (#12548) For an `ℕ`-graded ring `⨁ᵢ 𝒜ᵢ`, the irrelevant ideal refers to `⨁_{i>0} 𝒜ᵢ`. This construction is used in the Proj construction in algebraic geometry. ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/basic.lean + def graded_algebra.proj_zero_ring_hom Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean + theorem homogeneous_ideal.coe_irrelevant + def homogeneous_ideal.irrelevant + theorem homogeneous_ideal.mem_irrelevant_iff 2022-03-12 21:08:56 5b36941 feat(data/list/basic): Stronger form of `fold_fixed` (#12613) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.foldl_fixed' +/- theorem list.foldl_fixed + theorem list.foldr_fixed' +/- theorem list.foldr_fixed 2022-03-12 19:48:16 3da03b9 refactor(group_theory/commutator): Use variables and rearrange lemmas (#12629) This PR adds variables, and rearranges some of the lemmas (moving the lemmas about normal subgroups to a separate section). ESTIMATED CHANGES Modified src/group_theory/commutator.lean +/- theorem subgroup.commutator_bot_left +/- theorem subgroup.commutator_bot_right +/- theorem subgroup.commutator_comm +/- theorem subgroup.commutator_comm_le +/- theorem subgroup.commutator_def' +/- theorem subgroup.commutator_eq_bot_iff_le_centralizer +/- theorem subgroup.commutator_le +/- theorem subgroup.commutator_le_inf +/- theorem subgroup.commutator_le_left +/- theorem subgroup.commutator_le_right +/- theorem subgroup.commutator_mem_commutator +/- theorem subgroup.commutator_mono +/- theorem subgroup.commutator_prod_prod +/- theorem subgroup.map_commutator 2022-03-12 18:01:22 23269bf feat(category_theory/preadditive/Mat): ring version (#12617) ESTIMATED CHANGES Modified src/category_theory/preadditive/Mat.lean + theorem category_theory.Mat.comp_apply + theorem category_theory.Mat.comp_def + def category_theory.Mat.equivalence_single_obj + def category_theory.Mat.equivalence_single_obj_inverse + theorem category_theory.Mat.id_apply + theorem category_theory.Mat.id_apply_of_ne + theorem category_theory.Mat.id_apply_self + theorem category_theory.Mat.id_def + def category_theory.Mat 2022-03-12 18:01:21 707df2c feat(model_theory/definability): Definability with parameters (#12611) Extends the definition of definable sets to include a parameter set. Defines shorthands is_definable₁ and is_definable₂ for 1- and 2-dimensional definable sets. ESTIMATED CHANGES Modified src/model_theory/definability.lean + theorem first_order.language.definable.compl + theorem first_order.language.definable.image_comp_equiv + theorem first_order.language.definable.inter + theorem first_order.language.definable.preimage_comp + theorem first_order.language.definable.sdiff + theorem first_order.language.definable.union + structure first_order.language.definable + theorem first_order.language.definable_empty + theorem first_order.language.definable_finset_bInter + theorem first_order.language.definable_finset_bUnion + theorem first_order.language.definable_finset_inf + theorem first_order.language.definable_finset_sup +/- theorem first_order.language.definable_set.coe_bot +/- theorem first_order.language.definable_set.coe_compl +/- theorem first_order.language.definable_set.coe_inf +/- theorem first_order.language.definable_set.coe_sup +/- theorem first_order.language.definable_set.coe_top +/- theorem first_order.language.definable_set.le_iff +/- theorem first_order.language.definable_set.mem_compl +/- theorem first_order.language.definable_set.mem_inf +/- theorem first_order.language.definable_set.mem_sup +/- theorem first_order.language.definable_set.mem_top +/- theorem first_order.language.definable_set.not_mem_bot +/- def first_order.language.definable_set + theorem first_order.language.definable_univ + def first_order.language.definable₁ + def first_order.language.definable₂ - theorem first_order.language.is_definable.compl - theorem first_order.language.is_definable.inter - theorem first_order.language.is_definable.sdiff - theorem first_order.language.is_definable.union - structure first_order.language.is_definable - theorem first_order.language.is_definable_empty - theorem first_order.language.is_definable_univ 2022-03-12 18:01:20 9293174 feat(algebra/category/Module): monoidal_preadditive (#12607) ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean Modified src/category_theory/monoidal/preadditive.lean 2022-03-12 18:01:19 e4ea2bc feat(topology/algebra/continuous_monoid_hom): Define the Pontryagin dual (#12602) This PR adds the definition of the Pontryagin dual. We're still missing the locally compact instance. I thought I could get it from `closed_embedding (to_continuous_map : continuous_monoid_hom A B → C(A, B))`, but actually `C(A, B)` is almost never locally compact. ESTIMATED CHANGES Modified src/topology/algebra/continuous_monoid_hom.lean + def pontryagin_dual 2022-03-12 18:01:18 5a9fb92 feat(topology/category/Locale): The category of locales (#12580) Define `Locale`, the category of locales, as the opposite of `Frame`. ESTIMATED CHANGES Modified src/order/category/Frame.lean + def Top_op_to_Frame Added src/topology/category/Locale.lean + theorem Locale.coe_of + def Locale.of + def Locale + def Top_to_Locale Modified src/topology/opens.lean + theorem topological_space.opens.comap_injective 2022-03-12 18:01:17 96bae07 feat(order/complete_lattice): add `complete_lattice.independent_pair` (#12565) This makes `complete_lattice.independent` easier to work with in the degenerate case. ESTIMATED CHANGES Modified counterexamples/direct_sum_is_internal.lean Modified src/data/set/basic.lean + theorem set.insert_diff_eq_singleton Modified src/order/complete_lattice.lean + theorem complete_lattice.independent_pair + theorem complete_lattice.set_independent_pair 2022-03-12 16:17:42 7e5ac6a chore(analysis/convex/strict): Reduce typeclass assumptions, golf (#12627) Move lemmas around so they are stated with the correct generality. Restate theorems using pointwise operations. Golf proofs. Fix typos in docstrings. ESTIMATED CHANGES Modified src/analysis/convex/strict.lean +/- theorem strict_convex.add +/- theorem strict_convex.add_left +/- theorem strict_convex.add_right +/- theorem strict_convex.affinity +/- theorem strict_convex.linear_image +/- theorem strict_convex.smul + theorem strict_convex.vadd 2022-03-12 16:17:41 22bdc8e feat(order/upper_lower): Upper/lower sets (#12189) Define upper and lower sets both as unbundled predicates and as bundled types. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean + theorem compl_Inf' +/- theorem compl_Inf + theorem compl_Sup' +/- theorem compl_Sup Added src/order/upper_lower.lean + theorem is_lower_set.compl + theorem is_lower_set.inter + theorem is_lower_set.union + def is_lower_set + theorem is_lower_set_Inter + theorem is_lower_set_Inter₂ + theorem is_lower_set_Union + theorem is_lower_set_Union₂ + theorem is_lower_set_empty + theorem is_lower_set_preimage_of_dual_iff + theorem is_lower_set_preimage_to_dual_iff + theorem is_lower_set_sInter + theorem is_lower_set_sUnion + theorem is_lower_set_univ + theorem is_upper_set.compl + theorem is_upper_set.inter + theorem is_upper_set.union + def is_upper_set + theorem is_upper_set_Inter + theorem is_upper_set_Inter₂ + theorem is_upper_set_Union + theorem is_upper_set_Union₂ + theorem is_upper_set_empty + theorem is_upper_set_preimage_of_dual_iff + theorem is_upper_set_preimage_to_dual_iff + theorem is_upper_set_sInter + theorem is_upper_set_sUnion + theorem is_upper_set_univ + theorem lower_set.coe_Inf + theorem lower_set.coe_Sup + theorem lower_set.coe_bot + theorem lower_set.coe_compl + theorem lower_set.coe_inf + theorem lower_set.coe_infi + theorem lower_set.coe_infi₂ + theorem lower_set.coe_sup + theorem lower_set.coe_supr + theorem lower_set.coe_supr₂ + theorem lower_set.coe_top + def lower_set.compl + theorem lower_set.compl_compl + theorem lower_set.compl_infi₂ + theorem lower_set.compl_supr₂ + theorem lower_set.ext + structure lower_set + theorem upper_set.coe_Inf + theorem upper_set.coe_Sup + theorem upper_set.coe_bot + theorem upper_set.coe_compl + theorem upper_set.coe_inf + theorem upper_set.coe_infi + theorem upper_set.coe_infi₂ + theorem upper_set.coe_sup + theorem upper_set.coe_supr + theorem upper_set.coe_supr₂ + theorem upper_set.coe_top + def upper_set.compl + theorem upper_set.compl_compl + theorem upper_set.compl_infi₂ + theorem upper_set.compl_supr₂ + theorem upper_set.ext + structure upper_set 2022-03-12 15:43:41 dc4e5cb chore(analysis): move lemmas around (#12621) * move `smul_unit_ball` to `analysis.normed_space.pointwise`, rename it to `smul_unit_ball_of_pos`; * reorder lemmas in `analysis.normed_space.pointwise`; * add `vadd_ball_zero`, `vadd_closed_ball_zero`, `smul_unit`, `affinity_unit_ball`, `affinity_unit_closed_ball`. ESTIMATED CHANGES Modified src/analysis/convex/gauge.lean - theorem smul_unit_ball Modified src/analysis/normed_space/pointwise.lean + theorem affinity_unit_ball + theorem affinity_unit_closed_ball +/- theorem normed_space.sphere_nonempty + theorem smul_closed_unit_ball + theorem smul_closed_unit_ball_of_nonneg +/- theorem smul_sphere + theorem smul_unit_ball + theorem smul_unit_ball_of_pos + theorem vadd_ball_zero + theorem vadd_closed_ball_zero 2022-03-12 14:08:13 7257ee7 chore(data/nat/prime): restate card_multiples without finset.sep (#12625) As suggested by Eric Wieser in #12592. ESTIMATED CHANGES Modified src/data/nat/prime.lean +/- theorem card_multiples 2022-03-12 14:08:12 a63b99c chore(category_theory/closed/monoidal): fix notation (#12612) Previously the `C` in the internal hom arrow ` ⟶[C] ` was hardcoded, which wasn't very useful! I've also reduced the precedence slightly, so we now require more parentheses, but I think these are less confusing rather than more so it is a good side effect? ESTIMATED CHANGES Modified src/category_theory/closed/monoidal.lean +/- def category_theory.monoidal_closed.curry +/- theorem category_theory.monoidal_closed.curry_eq_iff +/- theorem category_theory.monoidal_closed.curry_injective +/- theorem category_theory.monoidal_closed.curry_uncurry +/- theorem category_theory.monoidal_closed.eq_curry_iff +/- theorem category_theory.monoidal_closed.hom_equiv_symm_apply_eq +/- def category_theory.monoidal_closed.uncurry +/- theorem category_theory.monoidal_closed.uncurry_eq +/- theorem category_theory.monoidal_closed.uncurry_injective +/- theorem category_theory.monoidal_closed.uncurry_natural_left +/- theorem category_theory.monoidal_closed.uncurry_natural_right 2022-03-12 14:08:11 956f3db chore(category_theory/limits): correct lemma names (#12606) ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.kernel_comparison_comp_ι - theorem category_theory.limits.kernel_comparison_comp_π - theorem category_theory.limits.ι_comp_cokernel_comparison + theorem category_theory.limits.π_comp_cokernel_comparison 2022-03-12 14:08:10 9456a74 feat(group_theory/commutator): Prove `commutator_eq_bot_iff_le_centralizer` (#12598) This lemma is needed for the three subgroups lemma. ESTIMATED CHANGES Modified src/group_theory/commutator.lean + theorem subgroup.commutator_eq_bot_iff_le_centralizer 2022-03-12 14:08:09 b9ab27b feat(group_theory/subgroup/basic): add eq_one_of_noncomm_prod_eq_one_of_independent (#12525) `finset.noncomm_prod` is “injective” in `f` if `f` maps into independent subgroups. It generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.eq_one_of_noncomm_prod_eq_one_of_independent 2022-03-12 13:35:45 b21c1c9 split(analysis/locally_convex/basic): Split off `analysis.seminorm` (#12624) Move `balanced`, `absorbs`, `absorbent` to a new file. For `analysis.seminorm`, I'm crediting * Jean for #4827 * myself for * #9097 * #11487 * Moritz for * #11329 * #11414 * #11477 For `analysis.locally_convex.basic`, I'm crediting * Jean for #4827 * Bhavik for * #7358 * #9097 * myself for * #9097 * #10999 * #11487 ESTIMATED CHANGES Added src/analysis/locally_convex/basic.lean + theorem absorbent.absorbs + theorem absorbent.subset + theorem absorbent.zero_mem + def absorbent + theorem absorbent_iff_forall_absorbs_singleton + theorem absorbent_iff_nonneg_lt + theorem absorbent_nhds_zero + theorem absorbent_univ + theorem absorbs.inter + theorem absorbs.mono + theorem absorbs.mono_left + theorem absorbs.mono_right + theorem absorbs.union + def absorbs + theorem absorbs_inter + theorem absorbs_union + theorem absorbs_zero_iff + theorem balanced.absorbs_self + theorem balanced.add + theorem balanced.closure + theorem balanced.inter + theorem balanced.interior + theorem balanced.smul + theorem balanced.smul_eq + theorem balanced.smul_mono + theorem balanced.subset_smul + theorem balanced.union + def balanced + theorem balanced_univ + theorem balanced_zero_union_interior Modified src/analysis/seminorm.lean - theorem absorbent.absorbs - theorem absorbent.subset - theorem absorbent.zero_mem - def absorbent - theorem absorbent_iff_forall_absorbs_singleton - theorem absorbent_iff_nonneg_lt - theorem absorbent_nhds_zero - theorem absorbent_univ - theorem absorbs.inter - theorem absorbs.mono - theorem absorbs.mono_left - theorem absorbs.mono_right - theorem absorbs.union - def absorbs - theorem absorbs_inter - theorem absorbs_union - theorem absorbs_zero_iff - theorem balanced.absorbs_self - theorem balanced.add - theorem balanced.closure - theorem balanced.inter - theorem balanced.interior - theorem balanced.smul - theorem balanced.smul_eq - theorem balanced.smul_mono - theorem balanced.subset_smul - theorem balanced.union - def balanced - theorem balanced_univ - theorem balanced_zero_union_interior 2022-03-12 11:37:20 a4187fe chore(algebra/category/Module): remove unnecessary universe restriction (#12610) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean +/- def Module.of_hom 2022-03-12 11:37:19 31d28c6 fix(src/algebra/big_operators/multiset): unify prod_le_pow_card and prod_le_of_forall_le (#12589) using the name `prod_le_pow_card` as per https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/duplicate.20lemmas but use the phrasing of prod_le_of_forall_le with non-implicit `multiset`, as that is how it is used. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean - theorem multiset.prod_le_of_forall_le +/- theorem multiset.prod_le_pow_card Modified src/algebra/big_operators/order.lean - theorem finset.le_prod_of_forall_le + theorem finset.pow_card_le_prod - theorem finset.prod_le_of_forall_le + theorem finset.prod_le_pow_card Modified src/algebra/polynomial/big_operators.lean Modified src/combinatorics/double_counting.lean Modified src/data/list/prod_monoid.lean - theorem list.prod_le_of_forall_le + theorem list.prod_le_pow_card Modified src/linear_algebra/matrix/polynomial.lean 2022-03-12 11:06:34 2241588 feat(topology/homotopy): Homotopic maps induce naturally isomorphic functors between fundamental groupoid (#11595) ESTIMATED CHANGES Modified src/category_theory/category/Groupoid.lean + theorem category_theory.Groupoid.id_to_functor Modified src/topology/homotopy/fundamental_groupoid.lean + theorem fundamental_groupoid.map_eq Added src/topology/homotopy/induced_maps.lean + theorem continuous_map.homotopy.apply_one_path + theorem continuous_map.homotopy.apply_zero_path + def continuous_map.homotopy.diagonal_path' + def continuous_map.homotopy.diagonal_path + theorem continuous_map.homotopy.eq_diag_path + theorem continuous_map.homotopy.eq_path_of_eq_image + theorem continuous_map.homotopy.eval_at_eq + def continuous_map.homotopy.hcast + theorem continuous_map.homotopy.hcast_def + theorem continuous_map.homotopy.heq_path_of_eq_image + def continuous_map.homotopy.prod_to_prod_Top_I + theorem continuous_map.homotopy.ulift_apply + def continuous_map.homotopy.ulift_map + def fundamental_groupoid_functor.equiv_of_homotopy_equiv + def fundamental_groupoid_functor.homotopic_maps_nat_iso + def unit_interval.path01 + def unit_interval.uhpath01 + def unit_interval.upath01 Modified src/topology/homotopy/path.lean + def continuous_map.homotopy.eval_at + theorem path.homotopic.hpath_hext Modified src/topology/homotopy/product.lean + theorem fundamental_groupoid_functor.prod_to_prod_Top_map 2022-03-12 09:57:54 5f3f70f doc(category_theory/monoidal/rigid): noting future work (#12620) ESTIMATED CHANGES Modified src/category_theory/monoidal/rigid.lean 2022-03-12 09:57:53 3d41a5b refactor(group_theory/commutator): Golf proof of `commutator_mono` (#12619) This PR golfs the proof of `commutator_mono` by using `commutator_le` rather than `closure_mono`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean 2022-03-12 09:57:52 72c6979 refactor(set_theory/ordinal_arithmetic): remove dot notation (#12614) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.enum_ord.strict_mono + theorem ordinal.enum_ord_strict_mono 2022-03-12 08:36:18 3aaa564 refactor(group_theory/commutator): Golf proof of `commutator_comm` (#12600) This PR golfs the proof of `commutator_comm`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean + theorem subgroup.commutator_comm_le 2022-03-12 05:57:32 1463f59 fix(tactic/suggest): fixing `library_search` (#12616) Further enhancing `library_search` search possibilities for 'ne' and 'not eq' Related: https://github.com/leanprover-community/mathlib/pull/11742 ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean + structure test.library_search.foo 2022-03-12 05:57:31 e8d0cac feat(analysis/inner_product_space/adjoint): gram lemmas (#12139) The gram operator is a self-adjoint, positive operator. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem linear_map.im_inner_adjoint_mul_self_eq_zero + theorem linear_map.is_self_adjoint_adjoint_mul_self + theorem linear_map.re_inner_adjoint_mul_self_nonneg 2022-03-12 04:22:20 1eaf499 feat(group_theory/subgroup/basic): {multiset_,}noncomm_prod_mem (#12523) and same for submonoids. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.multiset_noncomm_prod_mem + theorem subgroup.noncomm_prod_mem Modified src/group_theory/submonoid/membership.lean + theorem submonoid.multiset_noncomm_prod_mem + theorem submonoid.noncomm_prod_mem 2022-03-12 04:22:19 6ee6203 feat(counterexample) : a homogeneous ideal that is not prime but homogeneously prime (#12485) For graded rings, if the indexing set is nice, then a homogeneous ideal `I` is prime if and only if it is homogeneously prime, i.e. product of two homogeneous elements being in `I` implying at least one of them is in `I`. This fact is in `src/ring_theory/graded_algebra/radical.lean`. This counter example is meant to show that "nice condition" at least needs to include cancellation property by exhibiting an ideal in Zmod4^2 graded by a two element set being homogeneously prime but not prime. In #12277, Eric suggests that this counter example is worth pr-ing, so here is the pr. ESTIMATED CHANGES Added counterexamples/homogeneous_prime_not_prime.lean + def counterexample_not_prime_but_homogeneous_prime.I + theorem counterexample_not_prime_but_homogeneous_prime.I_is_homogeneous + theorem counterexample_not_prime_but_homogeneous_prime.I_not_prime + def counterexample_not_prime_but_homogeneous_prime.grading.decompose + theorem counterexample_not_prime_but_homogeneous_prime.grading.left_inv + theorem counterexample_not_prime_but_homogeneous_prime.grading.mul_mem + theorem counterexample_not_prime_but_homogeneous_prime.grading.one_mem + theorem counterexample_not_prime_but_homogeneous_prime.grading.right_inv + def counterexample_not_prime_but_homogeneous_prime.grading + theorem counterexample_not_prime_but_homogeneous_prime.homogeneous_mem_or_mem + def counterexample_not_prime_but_homogeneous_prime.submodule_o + def counterexample_not_prime_but_homogeneous_prime.submodule_z + def counterexample_not_prime_but_homogeneous_prime.two Modified src/ring_theory/graded_algebra/radical.lean 2022-03-12 02:28:54 2e7483d refactor(group_theory/commutator): Move and golf `commutator_le` (#12599) This PR golfs `commutator_le` and moves it earlier in the file so that it can be used earlier. This PR will conflict with #12600, so don't merge them simultaneously (bors d+ might be better). ESTIMATED CHANGES Modified src/group_theory/commutator.lean +/- theorem subgroup.commutator_le Modified src/group_theory/nilpotent.lean 2022-03-12 02:28:53 09d0f02 chore({category_theory,order}/category/*): Missing `dsimp` lemmas (#12593) Add the `dsimp` lemmas stating `↥(of α) = α `. Also rename the few `to_dual` functors to `dual` to match the other files. ESTIMATED CHANGES Modified src/category_theory/category/Bipointed.lean + theorem Bipointed.coe_of Modified src/category_theory/category/PartialFun.lean + theorem PartialFun.coe_of Modified src/category_theory/category/Pointed.lean + theorem Pointed.coe_of Modified src/category_theory/category/Twop.lean + theorem Twop.coe_of + theorem Twop.coe_to_Bipointed Modified src/order/category/BoolAlg.lean + theorem BoolAlg.coe_of Modified src/order/category/BoundedLattice.lean + theorem BoundedLattice.coe_of Modified src/order/category/BoundedOrder.lean + theorem BoundedOrder.coe_of Modified src/order/category/CompleteLattice.lean + theorem CompleteLattice.coe_of Modified src/order/category/DistribLattice.lean + theorem DistribLattice.coe_of Modified src/order/category/FinPartialOrder.lean + theorem FinPartialOrder.coe_of Modified src/order/category/Frame.lean + theorem Frame.coe_of Modified src/order/category/Lattice.lean + theorem Lattice.coe_of Modified src/order/category/LinearOrder.lean + theorem LinearOrder.coe_of Modified src/order/category/NonemptyFinLinOrd.lean + theorem NonemptyFinLinOrd.coe_of + def NonemptyFinLinOrd.dual - def NonemptyFinLinOrd.to_dual + theorem NonemptyFinLinOrd_dual_comp_forget_to_LinearOrder - theorem NonemptyFinLinOrd_dual_equiv_comp_forget_to_LinearOrder Modified src/order/category/PartialOrder.lean + theorem PartialOrder.coe_of + def PartialOrder.dual - def PartialOrder.to_dual + theorem PartialOrder_dual_comp_forget_to_Preorder - theorem PartialOrder_to_dual_comp_forget_to_Preorder Modified src/order/category/Preorder.lean + theorem Preorder.coe_of + def Preorder.dual - def Preorder.to_dual Modified src/order/category/omega_complete_partial_order.lean + theorem ωCPO.coe_of 2022-03-12 02:28:52 4e302f5 feat(data/nat): add card_multiples (#12592) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem card_multiples 2022-03-12 02:28:51 222faed feat(algebra/group/units_hom): make `is_unit.map` work on `monoid_hom_class` (#12577) `ring_hom.is_unit_map` and `mv_power_series.is_unit_constant_coeff` are now redundant, but to keep this diff small I've left them around. ESTIMATED CHANGES Modified src/algebra/group/units_hom.lean +/- theorem is_unit.map Modified src/algebra/ring/basic.lean Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/ring_division.lean Modified src/group_theory/monoid_localization.lean Modified src/ring_theory/ideal/local_ring.lean Modified src/ring_theory/localization/away.lean Modified src/ring_theory/localization/localization_localization.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/power_series/basic.lean 2022-03-12 02:28:50 8364980 feat(category_theory): interderivability of kernel and equalizers in preadditive cats (#12576) ESTIMATED CHANGES Modified src/category_theory/idempotents/basic.lean Modified src/category_theory/preadditive/default.lean + def category_theory.preadditive.cofork_of_cokernel_cofork + def category_theory.preadditive.cokernel_cofork_of_cofork + def category_theory.preadditive.fork_of_kernel_fork + theorem category_theory.preadditive.has_coequalizer_of_has_cokernel + theorem category_theory.preadditive.has_cokernel_of_has_coequalizer - theorem category_theory.preadditive.has_colimit_parallel_pair + theorem category_theory.preadditive.has_equalizer_of_has_kernel +/- theorem category_theory.preadditive.has_kernel_of_has_equalizer - theorem category_theory.preadditive.has_limit_parallel_pair + def category_theory.preadditive.is_colimit_cofork_of_cokernel_cofork + def category_theory.preadditive.is_colimit_cokernel_cofork_of_cofork + def category_theory.preadditive.is_limit_fork_of_kernel_fork + def category_theory.preadditive.is_limit_kernel_fork_of_fork + def category_theory.preadditive.kernel_fork_of_fork 2022-03-11 23:40:59 c0a51cf chore(*): update to 3.41.0c (#12591) ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/monoid_algebra/to_direct_sum.lean + def add_monoid_algebra_add_equiv_direct_sum + def add_monoid_algebra_alg_equiv_direct_sum + def add_monoid_algebra_ring_equiv_direct_sum Modified src/analysis/convex/cone.lean + def set.inner_dual_cone Modified src/analysis/normed_space/continuous_affine_map.lean + def continuous_affine_map.to_const_prod_continuous_linear_map Modified src/analysis/normed_space/linear_isometry.lean + def linear_isometry_equiv.prod_assoc Modified src/control/lawful_fix.lean Modified src/data/complex/is_R_or_C.lean + def is_R_or_C.conj_ae + def is_R_or_C.im_lm + def is_R_or_C.re_lm Modified src/data/finsupp/to_dfinsupp.lean + def finsupp_add_equiv_dfinsupp + def finsupp_lequiv_dfinsupp Modified src/data/real/ennreal.lean + def ennreal.of_nnreal_hom Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/measure/haar_lebesgue.lean + def topological_space.positive_compacts.Icc01 + def topological_space.positive_compacts.pi_Icc01 Modified src/model_theory/direct_limit.lean + def first_order.language.direct_limit.lift + def first_order.language.direct_limit.of Modified src/ring_theory/polynomial/homogeneous.lean + def mv_polynomial.homogeneous_submodule Modified src/ring_theory/witt_vector/teichmuller.lean + def witt_vector.teichmuller Modified src/tactic/slim_check.lean Modified src/topology/category/Compactum.lean + def Compactum_to_CompHaus.iso_of_topological_space 2022-03-11 21:59:23 e7db193 feat(algebra/module): add `module.nontrivial` (#12594) ESTIMATED CHANGES Modified src/algebra/module/basic.lean - theorem module.subsingleton 2022-03-11 19:18:32 5856c0c feat(data/finset/noncomm_prod): add noncomm_prod_mul_distrib (#12524) The non-commutative version of `finset.sum_union`. ESTIMATED CHANGES Modified src/data/finset/noncomm_prod.lean + theorem finset.noncomm_prod_mul_distrib + theorem finset.noncomm_prod_mul_distrib_aux 2022-03-11 19:18:31 dc5f7fb feat(set_theory/ordinal_arithmetic): Further theorems on normal functions (#12484) We prove various theorems giving more convenient characterizations of normal functions. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.bsup_eq_blsub_of_lt_succ_limit + theorem ordinal.is_normal_iff_lt_succ_and_blsub_eq + theorem ordinal.is_normal_iff_lt_succ_and_bsup_eq + theorem ordinal.is_normal_iff_strict_mono_limit 2022-03-11 19:18:30 e3ad468 feat(data/list/prod_monoid): add prod_eq_pow_card (#12473) ESTIMATED CHANGES Modified src/data/list/prod_monoid.lean + theorem list.prod_eq_pow_card 2022-03-11 17:31:10 7dcba96 feat(order/monotone): Folds of monotone functions are monotone (#12581) ESTIMATED CHANGES Modified src/order/monotone.lean + theorem list.foldl_monotone + theorem list.foldl_strict_mono + theorem list.foldr_monotone + theorem list.foldr_strict_mono 2022-03-11 17:31:09 3dcc168 feat(linear_algebra/projective_space/basic): The projectivization of a vector space. (#12438) This provides the initial definitions for the projective space associated to a vector space. Future work: - Linear subspaces of projective spaces, connection with subspaces of the vector space, etc. - The incidence geometry structure of a projective space. - The fundamental theorem of projective geometry. I will tag this PR as RFC for now. If you see something missing from this *initial* PR, please let me know! ESTIMATED CHANGES Added src/linear_algebra/projective_space/basic.lean + def projectivization.equiv_submodule + theorem projectivization.exists_smul_eq_mk_rep + theorem projectivization.finrank_submodule + theorem projectivization.ind + def projectivization.map + theorem projectivization.map_comp + theorem projectivization.map_id + theorem projectivization.map_injective + def projectivization.mk'' + theorem projectivization.mk''_submodule + def projectivization.mk' + theorem projectivization.mk'_eq_mk + def projectivization.mk + theorem projectivization.mk_eq_mk_iff + theorem projectivization.mk_rep + theorem projectivization.rep_nonzero + theorem projectivization.submodule_eq + theorem projectivization.submodule_injective + theorem projectivization.submodule_mk'' + theorem projectivization.submodule_mk + def projectivization + def projectivization_setoid 2022-03-11 16:25:21 003701f feat(model_theory/substructures): Facts about substructures (#12258) Shows that `closure L s` can be viewed as the set of realizations of terms over `s`. Bounds the cardinality of `closure L s` by the cardinality of the type of terms. Characterizes `closure L[[A]] s`. ESTIMATED CHANGES Modified src/model_theory/substructures.lean + theorem first_order.language.Lhom.coe_substructure_reduct + theorem first_order.language.Lhom.mem_substructure_reduct + def first_order.language.Lhom.substructure_reduct + theorem first_order.language.substructure.closure_with_constants_eq + theorem first_order.language.substructure.coe_closure_eq_range_term_realize + theorem first_order.language.substructure.coe_with_constants +/- theorem first_order.language.substructure.constants_mem + theorem first_order.language.substructure.lift_card_closure_le + theorem first_order.language.substructure.lift_card_closure_le_card_term + theorem first_order.language.substructure.mem_closure_iff_exists_term + theorem first_order.language.substructure.mem_with_constants + theorem first_order.language.substructure.reduct_with_constants + theorem first_order.language.substructure.subset_closure_with_constants + def first_order.language.substructure.with_constants + theorem first_order.language.term.realize_mem 2022-03-11 16:25:19 d6f337d feat(set_theory/ordinal_arithmetic): The derivative of multiplication (#12202) We prove that for `0 < a`, `deriv ((*) a) b = a ^ ω * b`. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.deriv_eq_id_of_nfp_eq_id + theorem ordinal.deriv_mul_eq_opow_omega_mul + theorem ordinal.deriv_mul_zero + theorem ordinal.eq_zero_or_opow_omega_le_of_mul_eq_right - theorem ordinal.le_opow_self + theorem ordinal.left_le_opow + theorem ordinal.mul_eq_right_iff_opow_omega_dvd + theorem ordinal.mul_le_right_iff_opow_omega_dvd + theorem ordinal.nfp_mul_eq_opow_omega + theorem ordinal.nfp_mul_one + theorem ordinal.nfp_mul_opow_omega_add + theorem ordinal.nfp_mul_zero + theorem ordinal.nfp_zero_mul + theorem ordinal.opow_one_add + theorem ordinal.right_le_opow 2022-03-11 13:44:08 e6fef39 feat(algebra/order/monoid): add `with_zero.canonically_linear_ordered_add_monoid` (#12568) This also removes some non-terminal `simp`s in nearby proofs ESTIMATED CHANGES Modified src/algebra/order/monoid.lean 2022-03-11 13:44:07 12786d0 feat(order/sup_indep): add `finset.sup_indep_pair` (#12549) This is used to provide simp lemmas about `sup_indep` on `bool` and `fin 2`. ESTIMATED CHANGES Modified src/order/sup_indep.lean + theorem complete_lattice.independent_iff_sup_indep_univ + theorem finset.sup_indep_pair + theorem finset.sup_indep_univ_bool + theorem finset.sup_indep_univ_fin_two 2022-03-11 13:44:06 4dc4dc8 chore(topology/algebra/module/basic): cleanup variables and coercions (#12542) Having the "simple" variables in the lemmas statements rather than globally makes it easier to move lemmas around in future. This also mean lemmas like `coe_comp` can have their arguments in a better order, as it's easier to customize the argument order at the declaration. This also replaces a lot of `(_ : M₁ → M₂)`s with `⇑_` for brevity in lemma statements. No lemmas statements (other than argument reorders) or proofs have changed. ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean +/- theorem continuous_linear_equiv.coe_coe +/- theorem continuous_linear_equiv.coe_refl' +/- theorem continuous_linear_map.add_apply +/- theorem continuous_linear_map.apply_ker +/- theorem continuous_linear_map.coe_add' +/- theorem continuous_linear_map.coe_add +/- theorem continuous_linear_map.coe_coe +/- theorem continuous_linear_map.coe_comp' +/- theorem continuous_linear_map.coe_comp +/- theorem continuous_linear_map.coe_fst' +/- theorem continuous_linear_map.coe_fst +/- theorem continuous_linear_map.coe_id' +/- theorem continuous_linear_map.coe_neg' +/- theorem continuous_linear_map.coe_neg +/- theorem continuous_linear_map.coe_smul' +/- theorem continuous_linear_map.coe_smul +/- theorem continuous_linear_map.coe_snd' +/- theorem continuous_linear_map.coe_snd +/- theorem continuous_linear_map.coe_sub' +/- theorem continuous_linear_map.coe_sub +/- theorem continuous_linear_map.coe_zero' +/- theorem continuous_linear_map.comp_id +/- theorem continuous_linear_map.comp_smul +/- theorem continuous_linear_map.comp_smulₛₗ +/- theorem continuous_linear_map.id_apply +/- theorem continuous_linear_map.id_comp +/- theorem continuous_linear_map.image_smul_set +/- theorem continuous_linear_map.image_smul_setₛₗ +/- theorem continuous_linear_map.is_closed_ker +/- theorem continuous_linear_map.ker_coe +/- theorem continuous_linear_map.map_smulₛₗ +/- theorem continuous_linear_map.neg_apply +/- theorem continuous_linear_map.one_apply +/- theorem continuous_linear_map.preimage_smul_set +/- theorem continuous_linear_map.preimage_smul_setₛₗ +/- theorem continuous_linear_map.range_coe +/- theorem continuous_linear_map.range_prod_eq +/- theorem continuous_linear_map.smul_apply +/- theorem continuous_linear_map.smul_comp +/- theorem continuous_linear_map.sub_apply' +/- theorem continuous_linear_map.sub_apply +/- theorem continuous_linear_map.zero_apply +/- theorem continuous_linear_map.zero_comp 2022-03-11 10:13:17 02e0ab2 refactor(group_theory/commutator): Golf some proofs (#12586) This PR golfs the proofs of some lemmas in `commutator.lean`. I also renamed `bot_commutator` and `commutator_bot` to `commutator_bot_left` and `commutator_bot_right`, since "bot_commutator" didn't sound right to me (you would say "the commutator of H and K", not "H commutator K"), but I can revert to the old name if you want. ESTIMATED CHANGES Modified src/group_theory/commutator.lean - theorem subgroup.bot_commutator - theorem subgroup.commutator_bot + theorem subgroup.commutator_bot_left + theorem subgroup.commutator_bot_right +/- theorem subgroup.commutator_le_inf +/- theorem subgroup.commutator_le_left +/- theorem subgroup.commutator_le_right Modified src/group_theory/solvable.lean 2022-03-11 10:13:16 d9a774e feat(order/hom): `prod.swap` as an `order_iso` (#12585) ESTIMATED CHANGES Modified src/order/basic.lean + theorem prod.swap_le_swap + theorem prod.swap_lt_swap Modified src/order/hom/basic.lean + theorem order_iso.coe_prod_comm + def order_iso.prod_comm + theorem order_iso.prod_comm_symm 2022-03-11 08:22:26 840a042 feat(data/list/basic): Miscellaneous `fold` lemmas (#12579) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.foldl_combinator_K + theorem list.foldl_fixed + theorem list.foldr_fixed Modified src/logic/function/iterate.lean + theorem list.foldl_const + theorem list.foldr_const 2022-03-11 08:22:25 1a581ed refactor(group_theory/solvable): Golf proof (#12552) This PR golfs the proof of insolvability of S_5, using the new commutator notation. ESTIMATED CHANGES Modified src/group_theory/solvable.lean 2022-03-11 08:22:24 1326aa7 feat(analysis/special_functions): limit of x^s * exp(-x) for s real (#12540) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem tendsto_exp_div_rpow_at_top + theorem tendsto_exp_mul_div_rpow_at_top + theorem tendsto_rpow_mul_exp_neg_mul_at_top_nhds_0 2022-03-11 08:22:23 e553f8a refactor(algebra/group/to_additive): monadic code cosmetics (#12527) as suggested by @kmill and @eric-wieser, but the merge was faster Also improve test file. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified test/lint_to_additive_doc.lean + theorem no_to_additive 2022-03-11 08:22:22 47b1ddf feat(data/setoid/partition): Relate `setoid.is_partition` and `finpartition` (#12459) Add two functions that relate `setoid.is_partition` and `finpartition`: * `setoid.is_partition.partition` * `finpartition.is_partition_parts` Meanwhile add some lemmas related to `finset.sup` and `finset.inf` in data/finset/lattice. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.inf_id_set_eq_sInter + theorem finset.inf_set_eq_bInter + theorem finset.sup_id_set_eq_sUnion + theorem finset.sup_set_eq_bUnion Modified src/data/setoid/partition.lean + theorem finpartition.is_partition_parts + def setoid.is_partition.finpartition Modified src/order/well_founded_set.lean 2022-03-11 06:44:16 115f8c7 fix(probability): remove unused argument from `cond_cond_eq_cond_inter` (#12583) This was a property that we already derived within the proof itself from conditionable intersection (I think I forgot to remove this when I made the PR). ESTIMATED CHANGES Modified src/probability/conditional.lean 2022-03-11 06:44:15 3061d18 feat(data/nat/{nth,prime}): add facts about primes (#12560) Gives `{p | prime p}.infinite` as well as `infinite_of_not_bdd_above` lemma. Also gives simp lemmas for `prime_counting'`. ESTIMATED CHANGES Modified src/data/nat/nth.lean + theorem nat.nth_injective_of_infinite Modified src/data/nat/prime.lean + theorem nat.infinite_set_of_prime + theorem nat.not_bdd_above_set_of_prime Modified src/data/set/finite.lean + theorem set.infinite_of_not_bdd_above + theorem set.infinite_of_not_bdd_below Modified src/number_theory/prime_counting.lean + theorem nat.prime_counting'_nth_eq + theorem nat.prime_nth_prime 2022-03-11 06:44:14 de4d14c feat(group_theory/commutator): Add some basic lemmas (#12554) This PR adds lemmas adds some basic lemmas about when the commutator is trivial. ESTIMATED CHANGES Modified src/group_theory/commutator.lean + theorem commutator_element_eq_one_iff_commute + theorem commutator_element_eq_one_iff_mul_comm + theorem commutator_element_one_left + theorem commutator_element_one_right + theorem commute.commutator_eq 2022-03-11 06:12:11 355472d refactor(group_theory/commutator): Golf proof of `commutator_mem_commutator` (#12584) This PR golfs the proof of `commutator_mem_commutator`, and moves it earlier in the file so that it can be used earlier. ESTIMATED CHANGES Modified src/group_theory/commutator.lean +/- theorem subgroup.commutator_mem_commutator 2022-03-11 02:38:57 b5a26d0 feat(data/list/basic): Lists over empty type are `unique` (#12582) ESTIMATED CHANGES Modified src/data/list/basic.lean + def list.unique_of_is_empty 2022-03-10 23:44:36 f0dd6e9 refactor(group_theory/commutator): Use commutators in `commutator_le` (#12572) This PR golfs the proof of `commutator_le`, and uses the new commutator notation. ESTIMATED CHANGES Modified src/group_theory/commutator.lean 2022-03-10 23:12:24 6c04fcf refactor(group_theory/commutator): Use commutator notation in `commutator_normal` (#12575) This PR uses the new commutator notation in the proof of `commutator_normal`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean 2022-03-10 21:17:59 84cbbc9 feat(algebra/group/to_additive + a few more files): make `to_additive` convert `unit` to `add_unit` (#12564) This likely involves removing names that match autogenerated names. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/algebra/group/units.lean +/- theorem is_unit_iff_exists_inv' +/- theorem is_unit_iff_exists_inv +/- theorem is_unit_of_mul_eq_one Modified src/data/equiv/mul_add.lean +/- theorem coe_to_units Modified src/group_theory/congruence.lean +/- def con.lift_on_units Modified src/group_theory/order_of_element.lean 2022-03-10 19:33:06 869ef84 feat(data/zmod/basic): some lemmas about coercions (#12571) The names here are in line with `zmod.nat_coe_zmod_eq_zero_iff_dvd` and `zmod.int_coe_zmod_eq_zero_iff_dvd` a few lines above. ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.int_coe_zmod_eq_iff + theorem zmod.nat_coe_zmod_eq_iff + theorem zmod.val_int_cast 2022-03-10 19:33:05 6fdb1d5 chore(*): clear up some excessive by statements (#12570) Delete some `by` (and similar commands that do nothing, such as - `by by blah` - `by begin blah end` - `{ by blah }` - `begin { blah } end` Also clean up the proof of `monic.map` and `nat_degree_div_by_monic` a bit. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/algebra/lie/nilpotent.lean Modified src/category_theory/adjunction/whiskering.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/monic.lean Modified src/field_theory/separable.lean Modified src/group_theory/exponent.lean +/- theorem monoid.exponent_eq_zero_iff Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/measure_theory/function/simple_func_dense.lean Modified src/number_theory/padics/padic_norm.lean Modified src/order/filter/ennreal.lean Modified src/order/jordan_holder.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2022-03-10 19:33:04 45c22c0 feat(field_theory/is_alg_closed/basic): add `is_alg_closed.infinite` (#12566) An algebraically closed field is infinite, because if it is finite then `x^(n+1) - 1` is a separable polynomial (where `n` is the cardinality of the field). ESTIMATED CHANGES Modified src/field_theory/is_alg_closed/basic.lean 2022-03-10 19:33:02 0e93816 feat(tactic/norm_num_command): add user command to run norm_num on an expression (#12550) For example, ``` #norm_num 2^100 % 10 -- 6 ``` ESTIMATED CHANGES Modified src/tactic/norm_num.lean 2022-03-10 17:46:10 f654a86 chore(*): remove lines claiming to introduce variables (#12569) They don't. ESTIMATED CHANGES Modified src/analysis/complex/real_deriv.lean Modified src/data/equiv/option.lean Modified src/group_theory/order_of_element.lean Modified src/order/antisymmetrization.lean 2022-03-10 15:58:20 4a59a4d chore(order/galois_connection): Make lifting instances reducible (#12559) and provide `infi₂` and `supr₂` versions of the lemmas. ESTIMATED CHANGES Modified src/order/galois_connection.lean +/- theorem galois_connection.l_Sup +/- theorem galois_connection.l_supr + theorem galois_connection.l_supr₂ +/- theorem galois_connection.u_Inf +/- theorem galois_connection.u_infi + theorem galois_connection.u_infi₂ 2022-03-10 15:28:09 788ccf0 chore(cardinal_divisibility): tiny golf (#12567) ESTIMATED CHANGES Modified src/set_theory/cardinal_divisibility.lean 2022-03-10 13:16:05 cd111e9 feat(data/equiv/mul_add): add to_additive attribute to `group.is_unit` (#12563) Unless something breaks, this PR does nothing else! ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean 2022-03-10 10:38:55 41f5c17 chore(set_theory/ordinal_arithmetic): Make auxiliary result private (#12562) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.CNF_pairwise_aux 2022-03-10 10:08:31 4048a9b chore(measure_theory/function/convergence_in_measure): golf proof with Borel-Cantelli (#12551) ESTIMATED CHANGES Modified src/measure_theory/function/convergence_in_measure.lean 2022-03-10 09:02:58 d56a9bc feat(set_theory/ordinal_arithmetic): `add_eq_zero_iff`, `mul_eq_zero_iff` (#12561) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.add_eq_zero_iff + theorem ordinal.left_eq_zero_of_add_eq_zero + theorem ordinal.mul_eq_zero_iff + theorem ordinal.right_eq_zero_of_add_eq_zero 2022-03-10 09:02:56 1e560a6 refactor(group_theory/commutator): Generalize `map_commutator_element` (#12555) This PR generalizes `map_commutator_element` from `monoid_hom_class F G G` to `monoid_hom_class F G G'`. ESTIMATED CHANGES Modified src/group_theory/commutator.lean +/- theorem map_commutator_element 2022-03-10 07:37:11 24e3b5f refactor(topology/opens): Turn `opens.gi` into a Galois coinsertion (#12547) `topological_space.opens.gi` is currently a `galois_insertion` between `order_dual (opens α)` and `order_dual (set α)`. This turns it into the sensible thing, namely a `galois_coinsertion` between `opens α` and `set α`. ESTIMATED CHANGES Modified src/topology/opens.lean +/- theorem topological_space.opens.ext +/- theorem topological_space.opens.ext_iff +/- def topological_space.opens.gi - theorem topological_space.opens.gi_choice_val +/- theorem topological_space.opens.le_def 2022-03-10 07:37:10 0fd9929 feat(group_theory/double_cosets): definition of double cosets and some basic lemmas. (#9490) This contains the definition of double cosets and some basic lemmas about them, such as "the whole group is the disjoint union of its double cosets" and relationship to usual group quotients. ESTIMATED CHANGES Added src/group_theory/double_coset.lean + theorem doset.bot_rel_eq_left_rel + theorem doset.disjoint_out' + theorem doset.doset_eq_of_mem + theorem doset.doset_union_left_coset + theorem doset.doset_union_right_coset + theorem doset.eq + theorem doset.eq_of_not_disjoint + theorem doset.left_bot_eq_left_quot + theorem doset.mem_doset + theorem doset.mem_doset_of_not_disjoint + theorem doset.mem_doset_self + def doset.mk + theorem doset.mk_eq_of_doset_eq + theorem doset.mk_out'_eq_mul + theorem doset.out_eq' + def doset.quot_to_doset + def doset.quotient + theorem doset.rel_bot_eq_right_group_rel + theorem doset.rel_iff + theorem doset.right_bot_eq_right_quot + def doset.setoid + theorem doset.union_quot_to_doset + def doset Modified src/group_theory/subgroup/pointwise.lean + theorem subgroup.singleton_mul_subgroup + theorem subgroup.subgroup_mul_singleton 2022-03-10 06:34:47 750ca95 chore(linear_algebra/affine_space/affine_map): golf using the injective APIs (#12543) The extra whitespace means this isn't actually any shorter by number of lines, but it does eliminate 12 trivial proofs. Again, the `has_scalar` instance has been hoisted from lower down the file, so that we have the `nat` and `int` actions available when we create the `add_comm_group` structure. Previously we just built the same `has_scalar` structure three times. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean +/- theorem affine_map.coe_smul 2022-03-10 06:34:46 8836a42 fix(linear_algebra/quadratic_form/basic): align diamonds in the nat- and int- action (#12541) This also provides `fun_like` and `zero_hom_class` instances. The `has_scalar` code has been moved unchanged from further down in the file. This change makes `coe_fn_sub` eligible for `dsimp`, since it can now be proved by `rfl`. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form/basic.lean +/- theorem quadratic_form.coe_fn_sub +/- theorem quadratic_form.congr_fun +/- theorem quadratic_form.ext +/- theorem quadratic_form.ext_iff +/- theorem quadratic_form.sub_apply - theorem quadratic_form.to_fun_eq_apply + theorem quadratic_form.to_fun_eq_coe 2022-03-10 06:34:44 9e28852 feat(field_theory/krull_topology): added krull_topology_totally_disconnected (#12398) ESTIMATED CHANGES Modified src/field_theory/krull_topology.lean + theorem intermediate_field.fixing_subgroup_is_closed +/- theorem krull_topology_t2 + theorem krull_topology_totally_disconnected - theorem subgroup.is_open_of_one_mem_interior Modified src/topology/algebra/open_subgroup.lean +/- theorem subgroup.is_open_mono + theorem subgroup.is_open_of_one_mem_interior Modified src/topology/connected.lean + theorem is_totally_disconnected_of_clopen_set 2022-03-10 05:29:37 bab039f feat(topology/opens): The frame of opens of a topological space (#12546) Provide the `frame` instance for `opens α` and strengthen `opens.comap` from `order_hom` to `frame_hom`. ESTIMATED CHANGES Modified src/topology/algebra/order/basic.lean Modified src/topology/opens.lean - theorem topological_space.opens.Sup_s + theorem topological_space.opens.coe_Sup +/- theorem topological_space.opens.coe_inf +/- def topological_space.opens.comap +/- theorem topological_space.opens.comap_id +/- theorem topological_space.opens.comap_mono 2022-03-10 05:29:36 9c2f6eb feat(category_theory/abelian/exact): `exact g.op f.op` (#12456) This pr is about `exact g.op f.op` from `exact f g` in an abelian category; this pr is taken from liquid tensor experiment. I believe the original author is @adamtopaz. ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.exact.op_iff + theorem category_theory.abelian.exact.unop_iff + theorem category_theory.abelian.is_equivalence.exact_iff Modified src/category_theory/abelian/opposite.lean + theorem category_theory.cokernel.π_op + theorem category_theory.cokernel.π_unop + theorem category_theory.kernel.ι_op + theorem category_theory.kernel.ι_unop Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.is_iso.comp_left_eq_zero + theorem category_theory.preadditive.is_iso.comp_right_eq_zero 2022-03-10 04:56:21 ef25c4c refactor(group_theory/commutator): Rename `commutator_containment` to `commutator_mem_commutator` (#12553) This PR renames `commutator_containment` to `commutator_mem_commutator`, uses the new commutator notation, and makes the subgroups implicit. ESTIMATED CHANGES Modified src/group_theory/commutator.lean - theorem subgroup.commutator_containment + theorem subgroup.commutator_mem_commutator Modified src/group_theory/nilpotent.lean Modified src/group_theory/solvable.lean 2022-03-09 13:59:57 9facd19 doc(combinatorics/simple_graph/basic): fix typo (#12544) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2022-03-09 11:28:18 0d6fb8a chore(analysis/complex/upper_half_plane): use `coe` instead of `coe_fn` (#12532) This matches the approach used by other files working with `special_linear_group`. ESTIMATED CHANGES Modified src/analysis/complex/upper_half_plane.lean +/- def upper_half_plane.denom +/- def upper_half_plane.num 2022-03-09 11:28:17 c4a3413 chore(data/polynomial): use dot notation for monic lemmas (#12530) As discussed in #12447 - Use the notation throughout the library - Also deleted `ne_zero_of_monic` as it was a duplicate of `monic.ne_zero` it seems. - Cleaned up a small proof here and there too. ESTIMATED CHANGES Modified src/data/polynomial/div.lean Modified src/data/polynomial/lifts.lean +/- theorem polynomial.lifts_and_degree_eq_and_monic Modified src/data/polynomial/monic.lean - theorem polynomial.degree_map_of_monic + theorem polynomial.monic.add_of_left + theorem polynomial.monic.add_of_right + theorem polynomial.monic.degree_map + theorem polynomial.monic.map + theorem polynomial.monic.mul + theorem polynomial.monic.nat_degree_map + theorem polynomial.monic.pow +/- theorem polynomial.monic_C_mul_of_mul_leading_coeff_eq_one - theorem polynomial.monic_add_of_left - theorem polynomial.monic_add_of_right - theorem polynomial.monic_map - theorem polynomial.monic_mul +/- theorem polynomial.monic_mul_C_of_leading_coeff_mul_eq_one - theorem polynomial.monic_pow - theorem polynomial.nat_degree_map_of_monic - theorem polynomial.ne_zero_of_monic Modified src/data/polynomial/ring_division.lean Modified src/field_theory/minpoly.lean Modified src/field_theory/splitting_field.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/eisenstein.lean Modified src/ring_theory/power_basis.lean Modified src/ring_theory/trace.lean 2022-03-09 09:05:27 55d1f3e chore(set_theory/cardinal): `min` → `Inf` (#12517) Various definitions are awkwardly stated in terms of minima of subtypes. We instead rewrite them as infima and golf them. Further, we protect `cardinal.min` to avoid confusion with `linear_order.min`. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean +/- theorem cardinal.le_min +/- theorem cardinal.le_sup +/- theorem cardinal.lift_min - def cardinal.min +/- theorem cardinal.min_eq +/- theorem cardinal.min_le + theorem cardinal.nonempty_sup + theorem cardinal.succ_nonempty +/- def cardinal.sup 2022-03-09 05:46:45 5d405e2 chore(linear_algebra/alternating): golf using injective APIs (#12536) To do this, we have to move the has_scalar instance higher up in the file. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean 2022-03-09 05:46:44 bc9dda8 chore(algebra/module/linear_map): golf using injective APIs (#12535) To do this, we have to move the `has_scalar` instance higher up in the file. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean 2022-03-09 05:46:43 94e9bb5 chore(data/{finsupp,dfinsupp}/basic): use the injective APIs (#12534) This also fixes a scalar diamond in the `nat` and `int` actions on `dfinsupp`. The diamond did not exist for `finsupp`. ESTIMATED CHANGES Modified src/data/dfinsupp/basic.lean + theorem dfinsupp.coe_nsmul + theorem dfinsupp.coe_zsmul + theorem dfinsupp.nsmul_apply + theorem dfinsupp.zsmul_apply Modified src/data/finsupp/basic.lean Modified src/data/finsupp/pointwise.lean 2022-03-09 05:46:41 b8d176e chore(real/cau_seq_completion): put class in Prop (#12533) ESTIMATED CHANGES Modified src/data/complex/basic.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq_completion.lean 2022-03-09 04:04:18 1f6a2e9 chore(scripts): update nolints.txt (#12538) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2022-03-09 00:50:46 2a3ecad feat(data/equiv/basic): lemmas about composition with equivalences (#10693) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.comp_symm_eq + theorem equiv.eq_comp_symm + theorem equiv.eq_symm_comp + theorem equiv.symm_comp_eq Modified src/data/equiv/module.lean + theorem linear_equiv.comp_symm_eq + theorem linear_equiv.comp_to_linear_map_symm_eq + theorem linear_equiv.eq_comp_symm + theorem linear_equiv.eq_comp_to_linear_map_symm + theorem linear_equiv.eq_symm_comp + theorem linear_equiv.eq_to_linear_map_symm_comp + theorem linear_equiv.symm_comp_eq + theorem linear_equiv.to_linear_map_symm_comp_eq Modified src/data/equiv/mul_add.lean + theorem mul_equiv.comp_symm_eq + theorem mul_equiv.eq_comp_symm + theorem mul_equiv.eq_symm_comp + theorem mul_equiv.symm_comp_eq 2022-03-08 21:42:52 d69cda1 chore(order/well_founded_set): golf two proofs (#12529) ESTIMATED CHANGES Modified src/order/well_founded_set.lean 2022-03-08 21:42:51 709a3b7 feat(set_theory/cardinal_ordinal): `#(list α) ≤ max ω (#α)` (#12519) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.mk_list_eq_omega + theorem cardinal.mk_list_le_max 2022-03-08 17:53:50 feb24fb feat(topology/vector_bundle): direct sum of topological vector bundles (#12512) ESTIMATED CHANGES Modified src/data/bundle.lean Modified src/topology/maps.lean Modified src/topology/vector_bundle.lean + theorem topological_vector_bundle.continuous_proj + theorem topological_vector_bundle.prod.inducing_diag + theorem topological_vector_bundle.trivialization.apply_eq_prod_continuous_linear_equiv_at + theorem topological_vector_bundle.trivialization.base_set_prod + theorem topological_vector_bundle.trivialization.continuous_linear_equiv_at_prod + def topological_vector_bundle.trivialization.prod.inv_fun' + theorem topological_vector_bundle.trivialization.prod.inv_fun'_apply + def topological_vector_bundle.trivialization.prod.to_fun' + def topological_vector_bundle.trivialization.prod + theorem topological_vector_bundle.trivialization.prod_apply + theorem topological_vector_bundle.trivialization.prod_symm_apply + theorem topological_vector_bundle.trivialization.symm_apply_eq_mk_continuous_linear_equiv_at_symm 2022-03-08 17:53:49 1d67b07 feat(category_theory): cases in which (co)equalizers are split monos (epis) (#12498) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.cofork.is_colimit.π_desc_of_π + theorem category_theory.limits.fork.is_limit.lift_of_ι_ι + def category_theory.limits.split_epi_of_coequalizer + def category_theory.limits.split_epi_of_idempotent_coequalizer + def category_theory.limits.split_epi_of_idempotent_of_is_colimit_cofork + def category_theory.limits.split_mono_of_equalizer + def category_theory.limits.split_mono_of_idempotent_equalizer + def category_theory.limits.split_mono_of_idempotent_of_is_limit_fork 2022-03-08 17:53:47 b4572d1 feat(algebra/order/hom/ring): Ordered ring isomorphisms (#12158) Define `order_ring_iso`, the type of ordered ring isomorphisms, along with its typeclass `order_ring_iso_class`. ESTIMATED CHANGES Modified src/algebra/order/hom/ring.lean +/- structure order_ring_hom + theorem order_ring_iso.coe_mk + theorem order_ring_iso.coe_order_iso_refl + theorem order_ring_iso.coe_ring_equiv_refl + theorem order_ring_iso.coe_to_order_iso + theorem order_ring_iso.coe_to_order_ring_hom + theorem order_ring_iso.coe_to_order_ring_hom_refl + theorem order_ring_iso.coe_to_ring_equiv + theorem order_ring_iso.ext + theorem order_ring_iso.mk_coe + theorem order_ring_iso.refl_apply + theorem order_ring_iso.self_trans_symm + def order_ring_iso.simps.symm_apply + theorem order_ring_iso.symm_symm + theorem order_ring_iso.symm_trans_self + theorem order_ring_iso.to_fun_eq_coe + def order_ring_iso.to_order_iso + theorem order_ring_iso.to_order_iso_eq_coe + def order_ring_iso.to_order_ring_hom + theorem order_ring_iso.to_order_ring_hom_eq_coe + theorem order_ring_iso.to_ring_equiv_eq_coe + theorem order_ring_iso.trans_apply + structure order_ring_iso Modified src/order/hom/basic.lean + theorem le_map_inv_iff + theorem lt_map_inv_iff + theorem map_inv_le_iff + theorem map_inv_lt_iff + theorem map_lt_map_iff 2022-03-08 15:58:18 4ad5c5a feat(data/finset/noncomm_prod): add noncomm_prod_commute (#12521) adding `list.prod_commute`, `multiset.noncomm_prod_commute` and `finset.noncomm_prod_commute`. ESTIMATED CHANGES Modified src/data/finset/noncomm_prod.lean + theorem finset.noncomm_prod_commute + theorem multiset.noncomm_prod_commute Modified src/data/list/prod_monoid.lean + theorem list.prod_commute 2022-03-08 15:58:16 fac5ffe feat(group_theory/subgroup/basic): disjoint_iff_mul_eq_one (#12505) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.disjoint_def' + theorem subgroup.disjoint_def + theorem subgroup.disjoint_iff_mul_eq_one Modified src/group_theory/submonoid/basic.lean + theorem submonoid.disjoint_def' + theorem submonoid.disjoint_def 2022-03-08 15:58:15 1597e9a feat(set_theory/ordinal_arithmetic): prove `enum_ord_le_of_subset` (#12199) I also used this as an excuse to remove a trivial theorem and some awkward dot notation. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - def ordinal.enum_ord.order_iso - theorem ordinal.enum_ord.surjective + theorem ordinal.enum_ord_le_of_subset + def ordinal.enum_ord_order_iso + theorem ordinal.enum_ord_surjective - theorem ordinal.enum_ord_zero_le 2022-03-08 14:29:38 ab6a892 feat(data/finset/noncomm_prod): add noncomm_prod_congr (#12520) ESTIMATED CHANGES Modified src/data/finset/noncomm_prod.lean + theorem finset.noncomm_prod_congr 2022-03-08 14:29:36 c0ba4d6 feat(ring_theory/polynomial/eisenstein): add cyclotomic_comp_X_add_one_is_eisenstein_at (#12447) We add `cyclotomic_comp_X_add_one_is_eisenstein_at`: `(cyclotomic p ℤ).comp (X + 1)` is Eisenstein at `p`. From flt-regular ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.mul_X_injective + theorem polynomial.mul_X_pow_injective Modified src/field_theory/minpoly.lean + theorem minpoly.add_algebra_map - theorem minpoly.minpoly_add_algebra_map - theorem minpoly.minpoly_sub_algebra_map + theorem minpoly.sub_algebra_map Modified src/number_theory/cyclotomic/primitive_roots.lean + theorem is_primitive_root.minpoly_sub_one_eq_cyclotomic_comp Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.geom_sum_X_comp_X_add_one_eq_sum + theorem polynomial.monic.geom_sum' + theorem polynomial.monic.geom_sum + theorem polynomial.monic_geom_sum_X Modified src/ring_theory/polynomial/eisenstein.lean + theorem cyclotomic_comp_X_add_one_is_eisenstein_at 2022-03-08 12:44:00 94cbfad chore(algebra/*): move some lemmas about is_unit from associated.lean (#12526) There doesn't seem to be any reason for them to live there. ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem dvd_and_not_dvd_iff - theorem is_unit_iff_dvd_one - theorem is_unit_iff_forall_dvd - theorem is_unit_of_dvd_one - theorem is_unit_of_dvd_unit - theorem not_is_unit_of_not_is_unit_dvd - theorem pow_dvd_pow_iff Modified src/algebra/divisibility.lean + theorem dvd_and_not_dvd_iff + theorem is_unit_iff_dvd_one + theorem is_unit_iff_forall_dvd + theorem is_unit_of_dvd_one + theorem is_unit_of_dvd_unit + theorem not_is_unit_of_not_is_unit_dvd Modified src/algebra/group_power/basic.lean + theorem pow_dvd_pow_iff 2022-03-08 12:43:59 9c13d62 feat(data/int/gcd): add gcd_pos_iff (#12522) ESTIMATED CHANGES Modified src/data/int/gcd.lean + theorem int.gcd_pos_iff 2022-03-08 12:43:58 6dd3249 feat(set_theory/ordinal_arithmetic): `brange_const` (#12483) This is the `brange` analog to `set.range_const`. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.brange_const 2022-03-08 10:54:20 0798037 refactor(algebra/group/inj_surj): add npow and zpow to all definitions (#12126) Currently, we have a small handful of helpers to construct algebraic structures via pushforwards and pullbacks that preserve `has_pow` and `has_scalar` instances (added in #10152 and #10832): * `function.{inj,surj}ective.add_monoid_smul` * `function.{inj,surj}ective.monoid_pow` * `function.{inj,surj}ective.sub_neg_monoid_smul` * `function.{inj,surj}ective.div_inv_monoid_smul` * `function.{inj,surj}ective.add_group_smul` * `function.{inj,surj}ective.group_pow` Predating these, we have a very large collection of helpers that construct new `has_pow` and `has_scalar` instances, for all the above and also for every other one-argument algebraic structure (`comm_monoid`, `ring`, `linear_ordered_field`, ...). This puts the user in an awkward position; either: 1. They are unaware of the complexity here, and use `add_monoid_smul` and `add_comm_monoid` within the same file, which create two nonequal scalar instances. 2. They use only the large collection, and don't get definitional control of `has_scalar` and `has_pow`, which can cause typeclass diamonds with generic `has_scalar` instances. 3. They use only the small handful of helpers (which requires remembering which ones are safe to use), and have to remember to manually construct `add_comm_monoid` as `{..add_comm_semigroup, ..add_monoid}`. If they screw up and construct it as `{..add_comm_semigroup, ..add_zero_class}`, then they're in the same position as (1) without knowing it. This change converts every helper in the large collection to _also_ preserve scalar and power instances; as a result, these pullback and pushforward helpers once again no longer construct any new data. As a result, all these helpers now take `nsmul`, `zsmul`, `npow`, and `zpow` arguments as necessary, to indicate that these operations are preserved by the function in question. As a result of this change, all existing callers are now expected to have a `has_pow` or `has_scalar` implementation available ahead of time. In many cases the `has_scalar` instances already exist as a more general case, and maybe just need reordering within the file. Sometimes the general case of `has_scalar` is stated in a way that isn't general enough to describe `int` and `nat`. In these cases and the `has_pow` cases, we define new instance manually. Grepping reveals a rough summary of the new instances: ```lean instance : has_pow (A 0) ℕ instance has_nsmul : has_scalar ℕ (C ⟶ D) instance has_zsmul : has_scalar ℤ (C ⟶ D) instance has_nsmul : has_scalar ℕ (M →ₗ⁅R,L⁆ N) instance has_zsmul : has_scalar ℤ (M →ₗ⁅R,L⁆ N) instance has_nsmul : has_scalar ℕ {x : α // 0 ≤ x} instance has_pow : α // 0 ≤ x} ℕ instance : has_scalar R (ι →ᵇᵃ[I₀] M) instance has_nat_scalar : has_scalar ℕ (normed_group_hom V₁ V₂) instance has_int_scalar : has_scalar ℤ (normed_group_hom V₁ V₂) instance : has_pow ℕ+ ℕ instance subfield.has_zpow : has_pow s ℤ instance has_nat_scalar : has_scalar ℕ (left_invariant_derivation I G) instance has_int_scalar : has_scalar ℤ (left_invariant_derivation I G) instance add_subgroup.has_nsmul : has_scalar ℕ H instance subgroup.has_npow : has_pow H ℕ instance add_subgroup.has_zsmul : has_scalar ℤ H instance subgroup.has_zpow : has_pow H ℤ instance add_submonoid.has_nsmul : has_scalar ℕ S instance submonoid.has_pow : has_pow S ℕ instance : has_pow (special_linear_group n R) ℕ instance : has_pow (α →ₘ[μ] γ) ℕ instance has_int_pow : has_pow (α →ₘ[μ] γ) ℤ instance : div_inv_monoid (α →ₘ[μ] γ) instance has_nat_pow : has_pow (α →ₛ β) ℕ instance has_int_pow : has_pow (α →ₛ β) ℤ instance has_nat_pow : has_pow (germ l G) ℕ instance has_int_pow : has_pow (germ l G) ℤ instance : has_scalar ℕ (fractional_ideal S P) instance has_nat_scalar : has_scalar ℕ (𝕎 R) instance has_int_scalar : has_scalar ℤ (𝕎 R) instance has_nat_pow : has_pow (𝕎 R) ℕ instance has_nat_scalar : has_scalar ℕ (truncated_witt_vector p n R) instance has_int_scalar : has_scalar ℤ (truncated_witt_vector p n R) instance has_nat_pow : has_pow (truncated_witt_vector p n R) ℕ instance has_nat_scalar : has_scalar ℕ (α →ᵇ β) instance has_int_scalar : has_scalar ℤ (α →ᵇ β) instance has_nat_pow : has_pow (α →ᵇ R) ℕ ``` ESTIMATED CHANGES Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.of_zero_pow Modified src/algebra/field/basic.lean Modified src/algebra/graded_monoid.lean + theorem graded_monoid.mk_zero_pow Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/opposite.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/homology/additive.lean + theorem homological_complex.nsmul_f_apply + theorem homological_complex.zsmul_f_apply Modified src/algebra/lie/basic.lean + theorem lie_module_hom.coe_nsmul + theorem lie_module_hom.coe_zsmul + theorem lie_module_hom.nsmul_apply + theorem lie_module_hom.zsmul_apply Modified src/algebra/lie/free.lean Modified src/algebra/module/submodule.lean Modified src/algebra/order/field.lean Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/nonneg.lean + theorem nonneg.mk_pow + theorem nonneg.nsmul_mk Modified src/algebra/order/ring.lean Modified src/algebra/order/with_zero.lean Modified src/algebra/pointwise.lean +/- theorem finset.coe_mul + theorem finset.coe_one + theorem finset.coe_pow Modified src/algebra/ring/basic.lean Modified src/algebra/star/self_adjoint.lean Modified src/algebra/symmetrized.lean Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/normed/group/hom.lean + theorem normed_group_hom.coe_nsmul + theorem normed_group_hom.coe_zsmul + theorem normed_group_hom.nsmul_apply + theorem normed_group_hom.zsmul_apply Modified src/analysis/seminorm.lean Modified src/data/equiv/transfer_instance.lean + theorem equiv.pow_def Modified src/data/pnat/basic.lean Modified src/data/pnat/prime.lean Modified src/data/real/nnreal.lean Modified src/field_theory/subfield.lean + theorem subfield.zpow_mem Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/group_theory/congruence.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.coe_pow +/- theorem subgroup.coe_zpow Modified src/group_theory/submonoid/membership.lean - theorem submonoid.coe_pow - theorem submonoid.pow_mem Modified src/group_theory/submonoid/operations.lean + theorem submonoid.coe_pow + theorem submonoid.pow_mem Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/special_linear_group.lean + theorem matrix.special_linear_group.coe_pow Modified src/measure_theory/function/ae_eq_fun.lean + theorem measure_theory.ae_eq_fun.coe_fn_pow + theorem measure_theory.ae_eq_fun.coe_fn_zpow + theorem measure_theory.ae_eq_fun.mk_pow + theorem measure_theory.ae_eq_fun.mk_zpow + theorem measure_theory.ae_eq_fun.pow_to_germ + theorem measure_theory.ae_eq_fun.zpow_to_germ Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.coe_pow + theorem measure_theory.simple_func.coe_zpow + theorem measure_theory.simple_func.pow_apply + theorem measure_theory.simple_func.zpow_apply Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/vector_measure.lean +/- theorem measure_theory.vector_measure.add_apply Modified src/number_theory/cyclotomic/gal.lean Modified src/order/filter/germ.lean + theorem filter.germ.coe_pow + theorem filter.germ.coe_zpow Modified src/ring_theory/dedekind_domain/ideal.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_nsmul + theorem is_fractional.nsmul Modified src/ring_theory/subring/basic.lean +/- theorem subring.coe_pow Modified src/ring_theory/subsemiring/basic.lean Modified src/ring_theory/witt_vector/basic.lean + theorem witt_vector.map_fun.nsmul + theorem witt_vector.map_fun.pow + theorem witt_vector.map_fun.zsmul Modified src/ring_theory/witt_vector/defs.lean + theorem witt_vector.constant_coeff_witt_nsmul + theorem witt_vector.constant_coeff_witt_zsmul + theorem witt_vector.nsmul_coeff + theorem witt_vector.pow_coeff + def witt_vector.witt_nsmul + theorem witt_vector.witt_nsmul_vars + def witt_vector.witt_pow + theorem witt_vector.witt_pow_vars + def witt_vector.witt_zsmul + theorem witt_vector.witt_zsmul_vars + theorem witt_vector.zsmul_coeff Modified src/ring_theory/witt_vector/identities.lean Modified src/ring_theory/witt_vector/init_tail.lean + theorem witt_vector.init_nsmul + theorem witt_vector.init_pow + theorem witt_vector.init_zsmul Modified src/ring_theory/witt_vector/truncated.lean + theorem witt_vector.truncate_fun_nsmul + theorem witt_vector.truncate_fun_pow + theorem witt_vector.truncate_fun_zsmul Modified src/topology/algebra/continuous_affine_map.lean Modified src/topology/algebra/module/multilinear.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_npow_rec + theorem bounded_continuous_function.coe_nsmul + theorem bounded_continuous_function.coe_nsmul_rec + theorem bounded_continuous_function.coe_pow + theorem bounded_continuous_function.coe_zsmul + theorem bounded_continuous_function.coe_zsmul_rec + theorem bounded_continuous_function.nsmul_apply + theorem bounded_continuous_function.pow_apply + theorem bounded_continuous_function.zsmul_apply 2022-03-08 08:31:06 b4a7ad6 chore(field_theory/laurent): drop unused 'have'. (#12516) ESTIMATED CHANGES Modified src/field_theory/laurent.lean 2022-03-08 08:31:05 dc093e9 chore(combinatorics/configuration): don't use classical.some in a proof (#12515) ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2022-03-08 08:31:04 ffa6e6d feat(set_theory/cardinal): `sum_le_sup_lift` (#12513) This is a universe-polymorphic version of `sum_le_sup`. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.sum_le_sup_lift 2022-03-08 08:31:03 43cb3ff fix(ring_theory/ideal/operations): fix a name and dot notation (#12507) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean - theorem ideal.is_primary.to_is_prime + theorem ideal.is_prime.is_primary 2022-03-08 08:31:02 b2377ea feat(measure_theory/measure/finite_measure_weak_convergence): generalize scalar action (#12503) This means the smul lemmas also work for `nsmul`. ESTIMATED CHANGES Modified src/measure_theory/measure/finite_measure_weak_convergence.lean +/- theorem measure_theory.finite_measure.coe_fn_smul +/- theorem measure_theory.finite_measure.coe_smul +/- theorem measure_theory.finite_measure.test_against_nn_smul 2022-03-08 08:31:00 65095fe doc(order/succ_pred/basic): fix typo (#12501) ESTIMATED CHANGES Modified src/order/succ_pred/basic.lean 2022-03-08 08:30:59 47182da feat(algebra/group/to_additive): add to_additive doc string linter (#12487) it is an easy mistake to add a docstring to a lemma with `to_additive` without also passing a string to `to_additive`. This linter checks for that, and suggests to add a doc string when needed. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/group/to_additive.lean Modified src/tactic/lint/default.lean Added test/lint_to_additive_doc.lean + theorem bar + theorem baz + theorem foo + theorem quux 2022-03-08 08:30:58 ccdcce1 chore(set_theory/game/nim): General golfing (#12471) We make use of various relatively new theorems on ordinals to simplify various proofs, or otherwise clean up the file. ESTIMATED CHANGES Modified src/set_theory/game/nim.lean +/- theorem pgame.nim.exists_move_left_eq - theorem pgame.nim.nim_wf_lemma +/- theorem pgame.nim.non_zero_first_wins +/- theorem pgame.nonmoves_nonempty Modified src/set_theory/ordinal.lean 2022-03-08 08:30:57 b3fba03 feat(algebra/homology/homotopy) : `mk_coinductive` (#12457) `mk_coinductive` is the dual version of `mk_inductive` in the same file. `mk_inductive` is to build homotopy of chain complexes inductively and `mk_coinductive` is to build homotopy of cochain complexes inductively. ESTIMATED CHANGES Modified src/algebra/homology/homotopy.lean + theorem homotopy.d_next_cochain_complex + def homotopy.mk_coinductive + def homotopy.mk_coinductive_aux₁ + def homotopy.mk_coinductive_aux₂ + theorem homotopy.mk_coinductive_aux₃ + theorem homotopy.prev_d_succ_cochain_complex + theorem homotopy.prev_d_zero_cochain_complex 2022-03-08 07:26:43 14997d0 feat(analysis/normed_space): allow non-unital C^* rings (#12327) ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean Modified src/topology/continuous_function/bounded.lean 2022-03-08 06:08:39 74746bd chore(counterexamples/canonically_ordered_comm_semiring_two_mul): golf (#12504) ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean + def ex_L.L_subsemiring 2022-03-07 22:59:51 5f6d30e chore(*): move `has_scalar` instances before `add_comm_monoid` instances (#12502) This makes it easier for us to set `nsmul` and `zsmul` in future. ESTIMATED CHANGES Modified src/linear_algebra/multilinear/basic.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/topology/algebra/module/multilinear.lean 2022-03-07 21:31:06 e409a90 feat(measure_theory/integral/periodic.lean): add lemma `function.periodic.tendsto_at_bot_interval_integral_of_pos'` (#12500) Partner of `function.periodic.tendsto_at_top_interval_integral_of_pos'` (I probably should have included this in #12488) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/order/floor.lean Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.interval_integral_pos_of_pos Modified src/measure_theory/integral/periodic.lean + theorem function.periodic.integral_le_Sup_add_zsmul_of_pos + theorem function.periodic.tendsto_at_bot_interval_integral_of_pos' + theorem function.periodic.tendsto_at_bot_interval_integral_of_pos 2022-03-07 21:31:04 390554d feat(ring_theory/coprime/basic): lemmas about multiplying by units (#12480) ESTIMATED CHANGES Modified src/ring_theory/coprime/basic.lean + theorem is_coprime_group_smul + theorem is_coprime_group_smul_left + theorem is_coprime_group_smul_right + theorem is_coprime_mul_unit_left + theorem is_coprime_mul_unit_left_left + theorem is_coprime_mul_unit_left_right + theorem is_coprime_mul_unit_right + theorem is_coprime_mul_unit_right_left + theorem is_coprime_mul_unit_right_right 2022-03-07 21:31:03 9728bd2 chore(number_theory/number_field): golf `int.not_is_field` (#12451) Golfed proof of number_theory.number_field.int.not_is_field Co-authored by: David Ang Co-authored by: Eric Rodriguez Co-authored by: Violeta Hernández ESTIMATED CHANGES Modified src/number_theory/number_field.lean +/- theorem int.not_is_field 2022-03-07 19:47:38 1b4ee53 feat(algebra/associated): add pow_not_prime (#12493) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem of_irreducible_pow + theorem pow_not_prime 2022-03-07 19:47:36 f28023e feat(measure_theory/function/uniform_integrable): Uniform integrability and Vitali convergence theorem (#12408) This PR defines uniform integrability (both in the measure theory sense as well as the probability theory sense) and proves the Vitali convergence theorem which establishes a relation between convergence in measure and uniform integrability with convergence in Lp. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.rpow_one_div_le_iff Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.norm_rpow Added src/measure_theory/function/uniform_integrable.lean + theorem measure_theory.mem_ℒp.integral_indicator_norm_ge_le + theorem measure_theory.mem_ℒp.integral_indicator_norm_ge_nonneg_le + theorem measure_theory.mem_ℒp.integral_indicator_norm_ge_nonneg_le_of_meas + theorem measure_theory.mem_ℒp.snorm_ess_sup_indicator_norm_ge_eq_zero + theorem measure_theory.mem_ℒp.snorm_indicator_le' + theorem measure_theory.mem_ℒp.snorm_indicator_le + theorem measure_theory.mem_ℒp.snorm_indicator_le_of_meas + theorem measure_theory.mem_ℒp.snorm_indicator_norm_ge_le + theorem measure_theory.mem_ℒp.snorm_indicator_norm_ge_pos_le + theorem measure_theory.snorm_indicator_le_of_bound + theorem measure_theory.snorm_sub_le_of_dist_bdd + theorem measure_theory.tendsto_Lp_of_tendsto_ae + theorem measure_theory.tendsto_Lp_of_tendsto_ae_of_meas + theorem measure_theory.tendsto_Lp_of_tendsto_in_measure + theorem measure_theory.tendsto_in_measure_iff_tendsto_Lp + theorem measure_theory.tendsto_indicator_ge + def measure_theory.unif_integrable + theorem measure_theory.unif_integrable_congr_ae + theorem measure_theory.unif_integrable_const + theorem measure_theory.unif_integrable_fin + theorem measure_theory.unif_integrable_fintype + theorem measure_theory.unif_integrable_of_tendsto_Lp + theorem measure_theory.unif_integrable_of_tendsto_Lp_zero + theorem measure_theory.unif_integrable_subsingleton + theorem measure_theory.uniform_integrable.measurable + theorem measure_theory.uniform_integrable.mem_ℒp + theorem measure_theory.uniform_integrable.unif_integrable + def measure_theory.uniform_integrable Modified src/measure_theory/measure/measure_space.lean + theorem filter.eventually_eq.restrict Modified src/order/filter/at_top_bot.lean + theorem filter.exists_seq_forall_of_frequently + theorem filter.frequently_iff_seq_frequently + theorem filter.not_tendsto_iff_exists_frequently_nmem + theorem filter.subseq_forall_of_frequently + theorem filter.tendsto_iff_forall_eventually_mem + theorem filter.tendsto_of_subseq_tendsto 2022-03-07 19:47:34 1ee91a5 feat(probability_theory/stopping): define progressively measurable processes (#11350) * Define progressively measurable processes (`prog_measurable`), which is the correct strengthening of `adapted` to get that the stopped process is also progressively measurable. * Prove that an adapted continuous process is progressively measurable. For discrete time processes, progressively measurable is equivalent to `adapted` . This PR also changes some measurable_space arguments in `measurable_space.lean` from typeclass arguments to implicit. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/strongly_measurable.lean + theorem measure_theory.measurable_uncurry_of_continuous_of_measurable Modified src/measure_theory/measurable_space.lean +/- theorem measurable.prod_mk +/- theorem measurable.sum_elim +/- theorem measurable_from_prod_encodable +/- theorem measurable_fst +/- theorem measurable_inl +/- theorem measurable_inr +/- theorem measurable_prod +/- theorem measurable_snd + def measurable_space.prod +/- theorem measurable_sum +/- theorem measurable_swap +/- theorem measurable_swap_iff +/- theorem measurable_to_encodable Modified src/probability/stopping.lean +/- theorem measure_theory.adapted.add + theorem measure_theory.adapted.measurable_stopped_process_of_nat +/- theorem measure_theory.adapted.neg + theorem measure_theory.adapted.prog_measurable_of_continuous + theorem measure_theory.adapted.prog_measurable_of_nat +/- theorem measure_theory.adapted.smul - theorem measure_theory.adapted.stopped_process + theorem measure_theory.adapted.stopped_process_of_nat +/- theorem measure_theory.integrable_stopped_process +/- theorem measure_theory.integrable_stopped_value - theorem measure_theory.is_stopping_time.max - theorem measure_theory.is_stopping_time.min - theorem measure_theory.measurable_stopped_process +/- theorem measure_theory.mem_ℒp_stopped_process +/- theorem measure_theory.mem_ℒp_stopped_value + theorem measure_theory.prog_measurable.adapted_stopped_process + theorem measure_theory.prog_measurable.measurable_stopped_process + theorem measure_theory.prog_measurable.stopped_process + def measure_theory.prog_measurable + theorem measure_theory.prog_measurable_const + theorem measure_theory.prog_measurable_min_stopping_time + theorem measure_theory.prog_measurable_of_tendsto' + theorem measure_theory.prog_measurable_of_tendsto 2022-03-07 18:31:04 e871be2 feat(data/real/nnreal): floor_semiring instance (#12495) [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60nat.2Eceil.60.20on.20.60nnreal.60.20.3F/near/274353230) ESTIMATED CHANGES Modified src/algebra/order/floor.lean Modified src/algebra/order/nonneg.lean + theorem nonneg.nat_ceil_coe + theorem nonneg.nat_floor_coe Modified src/data/real/nnreal.lean 2022-03-07 18:31:03 8d2ffb8 feat(category_theory): (co)kernels of biproduct projection and inclusion (#12394) add kernels and cokernels of biproduct projections and inclusions ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.biprod.fst_kernel_fork + theorem category_theory.limits.biprod.fst_kernel_fork_ι + def category_theory.limits.biprod.inl_cokernel_fork + theorem category_theory.limits.biprod.inl_cokernel_fork_π + def category_theory.limits.biprod.inr_cokernel_fork + theorem category_theory.limits.biprod.inr_cokernel_fork_π + def category_theory.limits.biprod.is_cokernel_inl_cokernel_fork + def category_theory.limits.biprod.is_cokernel_inr_cokernel_fork + def category_theory.limits.biprod.is_kernel_fst_kernel_fork + def category_theory.limits.biprod.is_kernel_snd_kernel_fork + def category_theory.limits.biprod.snd_kernel_fork + theorem category_theory.limits.biprod.snd_kernel_fork_ι + def category_theory.limits.biproduct.from_subtype + theorem category_theory.limits.biproduct.from_subtype_eq_lift + theorem category_theory.limits.biproduct.from_subtype_to_subtype + theorem category_theory.limits.biproduct.from_subtype_π + theorem category_theory.limits.biproduct.from_subtype_π_subtype + def category_theory.limits.biproduct.is_colimit_to_subtype + def category_theory.limits.biproduct.is_limit_from_subtype +/- theorem category_theory.limits.biproduct.lift_map +/- def category_theory.limits.biproduct.map' +/- def category_theory.limits.biproduct.map +/- theorem category_theory.limits.biproduct.map_desc +/- theorem category_theory.limits.biproduct.map_eq_map' +/- def category_theory.limits.biproduct.map_iso +/- theorem category_theory.limits.biproduct.map_π + def category_theory.limits.biproduct.to_subtype + theorem category_theory.limits.biproduct.to_subtype_eq_desc + theorem category_theory.limits.biproduct.to_subtype_from_subtype + theorem category_theory.limits.biproduct.to_subtype_π + theorem category_theory.limits.biproduct.ι_from_subtype +/- theorem category_theory.limits.biproduct.ι_map + theorem category_theory.limits.biproduct.ι_to_subtype + theorem category_theory.limits.biproduct.ι_to_subtype_subtype 2022-03-07 18:01:16 85a415e docs(overview): Add overview of model theory (#12496) Adds a subsection on model theory to the mathlib overview. ESTIMATED CHANGES Modified docs/overview.yaml 2022-03-07 16:01:41 3c3c3bc fix(tactic/interactive): use non-interactive admit tactic (#12489) In a future release of Lean 3, the interactive admit tactic will take an additional argument. ESTIMATED CHANGES Modified src/tactic/interactive.lean 2022-03-07 16:01:39 5f2a6ac feat(measure_theory/integral/periodic): further properties of periodic integrals (#12488) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem int.fract_div_mul_self_add_zsmul_eq + theorem int.fract_div_mul_self_mem_Ico Modified src/measure_theory/integral/periodic.lean + theorem function.periodic.Inf_add_zsmul_le_integral_of_pos +/- theorem function.periodic.interval_integral_add_eq + theorem function.periodic.interval_integral_add_eq_add +/- theorem function.periodic.interval_integral_add_eq_of_pos + theorem function.periodic.interval_integral_add_zsmul_eq + theorem function.periodic.tendsto_at_top_interval_integral_of_pos' + theorem function.periodic.tendsto_at_top_interval_integral_of_pos +/- theorem is_add_fundamental_domain_Ioc Modified src/topology/algebra/order/compact.lean + theorem continuous_on.Inf_image_Icc_le +/- theorem continuous_on.image_Icc +/- theorem continuous_on.image_interval +/- theorem continuous_on.image_interval_eq_Icc + theorem continuous_on.le_Sup_image_Icc 2022-03-07 16:01:38 c95ce52 fix(number_theory/modular): prefer `coe` over `coe_fn` in lemma statements (#12445) This file is already full of `↑ₘ`s (aka coercions to matrix), we may as well use them uniformly. ESTIMATED CHANGES Modified src/number_theory/modular.lean 2022-03-07 14:11:59 f451e09 chore(algebra/order/{group,monoid}): trivial lemma about arithmetic on `with_top` and `with_bot` (#12491) ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem with_top.coe_neg Modified src/algebra/order/monoid.lean + theorem with_bot.coe_eq_one - theorem with_bot.coe_eq_zero - theorem with_bot.coe_zero 2022-03-07 14:11:57 65ac316 chore(algebra/order/nonneg): add `nonneg.coe_nat_cast` (#12490) ESTIMATED CHANGES Modified src/algebra/order/nonneg.lean 2022-03-07 14:11:56 16b6766 feat(analysis/normed_space): non-unital normed rings (#12326) On the way to allowing non-unital C^*-algebras. ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/normed/normed_field.lean 2022-03-07 14:11:55 9ed4366 feat(category_theory/limits): limit preservation properties of functor.left_op and similar (#12168) ESTIMATED CHANGES Added src/category_theory/limits/preserves/opposites.lean + def category_theory.limits.perserves_colimits_op + def category_theory.limits.preserves_colimit_left_op + def category_theory.limits.preserves_colimit_op + def category_theory.limits.preserves_colimit_right_op + def category_theory.limits.preserves_colimit_unop + def category_theory.limits.preserves_colimits_left_op + def category_theory.limits.preserves_colimits_of_shape_left_op + def category_theory.limits.preserves_colimits_of_shape_op + def category_theory.limits.preserves_colimits_of_shape_right_op + def category_theory.limits.preserves_colimits_of_shape_unop + def category_theory.limits.preserves_colimits_right_op + def category_theory.limits.preserves_colimits_unop + def category_theory.limits.preserves_finite_colimits_left_op + def category_theory.limits.preserves_finite_colimits_op + def category_theory.limits.preserves_finite_colimits_right_op + def category_theory.limits.preserves_finite_colimits_unop + def category_theory.limits.preserves_finite_limits_left_op + def category_theory.limits.preserves_finite_limits_op + def category_theory.limits.preserves_finite_limits_right_op + def category_theory.limits.preserves_finite_limits_unop + def category_theory.limits.preserves_limit_left_op + def category_theory.limits.preserves_limit_op + def category_theory.limits.preserves_limit_right_op + def category_theory.limits.preserves_limit_unop + def category_theory.limits.preserves_limits_left_op + def category_theory.limits.preserves_limits_of_shape_left_op + def category_theory.limits.preserves_limits_of_shape_op + def category_theory.limits.preserves_limits_of_shape_right_op + def category_theory.limits.preserves_limits_of_shape_unop + def category_theory.limits.preserves_limits_op + def category_theory.limits.preserves_limits_right_op + def category_theory.limits.preserves_limits_unop 2022-03-07 12:17:08 900ce6f chore(data/equiv/basic): rename `involutive.to_equiv` to `to_perm` (#12486) ESTIMATED CHANGES Modified src/algebra/quandle.lean Modified src/algebra/star/basic.lean Modified src/data/equiv/basic.lean +/- def equiv.perm + theorem function.involutive.coe_to_perm - def function.involutive.to_equiv + def function.involutive.to_perm + theorem function.involutive.to_perm_involutive + theorem function.involutive.to_perm_symm Modified src/data/equiv/module.lean Modified src/data/equiv/mul_add.lean 2022-03-07 10:15:48 eb46e7e feat(algebra/group/to_additive): let to_additive turn `pow` into `nsmul` (#12477) The naming convention for `npow` in lemma names is `pow`, so let’s teach `to_additive` about it. A fair number of lemmas now no longer need an explicit additive name. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/multiset.lean Modified src/algebra/group/hom.lean +/- theorem map_pow Modified src/algebra/group/pi.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group_power/basic.lean +/- theorem inv_pow Modified src/algebra/group_power/order.lean Modified src/algebra/iterate_hom.lean Modified src/algebra/pointwise.lean Modified src/group_theory/exponent.lean Modified src/group_theory/order_of_element.lean +/- theorem pow_eq_mod_card Modified src/group_theory/submonoid/membership.lean +/- theorem submonoid.coe_pow +/- theorem submonoid.pow_mem Modified src/number_theory/divisors.lean Modified src/topology/algebra/monoid.lean Modified src/topology/continuous_function/algebra.lean +/- theorem continuous_map.pow_comp 2022-03-07 10:15:47 d704f27 refactor(set_theory/*): `o.out.r` → `<` (#12468) We declare a `linear_order` instance on `o.out.α`, for `o : ordinal`, with `<` def-eq to `o.out.r`. This will improve code clarity and will allow us to state theorems about specific ordinals as ordered structures. ESTIMATED CHANGES Modified src/measure_theory/card_measurable_space.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/game/nim.lean + def ordinal.out' - def ordinal.out - theorem ordinal.type_out' +/- theorem pgame.nim.nim_wf_lemma Modified src/set_theory/ordinal.lean +/- theorem cardinal.card_typein_out_lt +/- def ordinal.initial_seg_out +/- def ordinal.principal_seg_out +/- def ordinal.rel_iso_out +/- theorem ordinal.type_lt + theorem ordinal.type_lt_iff - theorem ordinal.type_out +/- theorem ordinal.typein_lt_self Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.lsub_typein +/- theorem ordinal.sup_typein_succ Modified src/set_theory/principal.lean 2022-03-07 10:15:46 9dd8ec1 feat(analysis/normed/group/hom): add a module instance (#12465) ESTIMATED CHANGES Modified src/analysis/normed/group/hom.lean + theorem normed_group_hom.coe_smul + theorem normed_group_hom.smul_apply 2022-03-07 10:15:45 0b86bb8 feat(measure_theory/group/arithmetic): actions by int and nat are measurable (#12464) The `has_measurable_smul₂` proofs are essentially copied from the analogous proofs for `has_measurable_pow`, after golfing them. ESTIMATED CHANGES Modified src/measure_theory/group/arithmetic.lean 2022-03-07 10:15:43 3f353db feat(data/nat/basic): add one_le_div_iff (#12461) Couldn't find these. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.div_lt_one_iff + theorem nat.one_le_div_iff 2022-03-07 10:15:42 2675b5c feat(measure_theory/constructions/polish): injective images of Borel sets in Polish spaces are Borel (#12448) We prove several fundamental results on the Borel sigma-algebra in Polish spaces, notably: * Lusin separation theorem: disjoint analytic sets can be separated via Borel sets * Lusin-Souslin theorem: a continuous injective image of a Borel set in a Polish space is Borel * An injective measurable map on a Polish space is a measurable embedding, i.e., it maps measurable sets to measurable sets ESTIMATED CHANGES Modified docs/references.bib Added src/measure_theory/constructions/polish.lean + theorem continuous.measurable_embedding + theorem continuous_on.measurable_embedding + theorem is_closed.analytic_set + theorem is_closed.measurable_set_image_of_continuous_on_inj_on + theorem is_open.analytic_set_image + theorem measurable.exists_continuous + theorem measurable.measurable_embedding + theorem measurable_set.analytic_set + theorem measurable_set.image_of_continuous_on_inj_on + theorem measurable_set.image_of_measurable_inj_on + theorem measurable_set.is_clopenable + theorem measure_theory.analytic_set.Inter + theorem measure_theory.analytic_set.Union + theorem measure_theory.analytic_set.image_of_continuous + theorem measure_theory.analytic_set.image_of_continuous_on + theorem measure_theory.analytic_set.measurably_separable + def measure_theory.analytic_set + theorem measure_theory.analytic_set_empty + theorem measure_theory.analytic_set_iff_exists_polish_space_range + theorem measure_theory.analytic_set_range_of_polish_space + theorem measure_theory.is_clopenable_iff_measurable_set + theorem measure_theory.measurable_set_range_of_continuous_injective + theorem measure_theory.measurably_separable.Union + def measure_theory.measurably_separable + theorem measure_theory.measurably_separable_range_of_disjoint 2022-03-07 10:15:41 3778353 feat(set_theory/ordinal_arithmetic): `enum_ord univ = id` (#12391) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.enum_ord_range + theorem ordinal.enum_ord_univ + theorem ordinal.range_enum_ord 2022-03-07 10:15:40 313f405 feat(category_theory/*): preserves biproducts implies additive (#12014) ESTIMATED CHANGES Added src/category_theory/limits/preserves/shapes/biproducts.lean + def category_theory.functor.map_bicone + def category_theory.functor.map_binary_bicone + def category_theory.functor.map_biprod + theorem category_theory.functor.map_biprod_hom + theorem category_theory.functor.map_biprod_inv + def category_theory.functor.map_biproduct + theorem category_theory.functor.map_biproduct_hom + theorem category_theory.functor.map_biproduct_inv + theorem category_theory.limits.biprod.lift_map_biprod + theorem category_theory.limits.biprod.map_biprod_hom_desc + theorem category_theory.limits.biprod.map_biprod_inv_map_desc + theorem category_theory.limits.biprod.map_lift_map_biprod + theorem category_theory.limits.biproduct.map_biproduct_hom_desc + theorem category_theory.limits.biproduct.map_biproduct_inv_map_desc + theorem category_theory.limits.biproduct.map_lift_map_biprod + def category_theory.limits.is_bilimit_of_preserves + def category_theory.limits.is_binary_bilimit_of_preserves + def category_theory.limits.preserves_binary_biproduct_of_preserves_binary_coproduct + def category_theory.limits.preserves_binary_biproduct_of_preserves_binary_product + def category_theory.limits.preserves_binary_biproduct_of_preserves_biproduct + def category_theory.limits.preserves_binary_biproducts_of_preserves_binary_coproducts + def category_theory.limits.preserves_binary_biproducts_of_preserves_binary_products + def category_theory.limits.preserves_binary_biproducts_of_preserves_biproducts + def category_theory.limits.preserves_binary_coproduct_of_preserves_binary_biproduct + def category_theory.limits.preserves_binary_coproducts_of_preserves_binary_biproducts + def category_theory.limits.preserves_binary_product_of_preserves_binary_biproduct + def category_theory.limits.preserves_binary_products_of_preserves_binary_biproducts + def category_theory.limits.preserves_biproduct_of_preserves_coproduct + def category_theory.limits.preserves_biproduct_of_preserves_product + def category_theory.limits.preserves_biproducts_of_shape_of_preserves_coproducts_of_shape + def category_theory.limits.preserves_biproducts_of_shape_of_preserves_products_of_shape + def category_theory.limits.preserves_coproduct_of_preserves_biproduct + def category_theory.limits.preserves_coproducts_of_shape_of_preserves_biproducts_of_shape + def category_theory.limits.preserves_product_of_preserves_biproduct + def category_theory.limits.preserves_products_of_shape_of_preserves_biproducts_of_shape Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/preadditive/Mat.lean Modified src/category_theory/preadditive/additive_functor.lean + theorem category_theory.functor.additive_of_preserves_binary_biproducts - def category_theory.functor.map_biproduct 2022-03-07 10:15:38 f063d0c feat(geometry/manifold/tangent_bundle): the `tangent_bundle` is a `topological_vector_bundle` (#8295) ESTIMATED CHANGES Modified src/geometry/manifold/cont_mdiff.lean - theorem basic_smooth_bundle_core.cont_mdiff_at_proj - theorem basic_smooth_bundle_core.cont_mdiff_on_proj - theorem basic_smooth_bundle_core.cont_mdiff_proj - theorem basic_smooth_bundle_core.cont_mdiff_within_at_proj - theorem basic_smooth_bundle_core.smooth_at_proj - theorem basic_smooth_bundle_core.smooth_const_section - theorem basic_smooth_bundle_core.smooth_on_proj - theorem basic_smooth_bundle_core.smooth_proj - theorem basic_smooth_bundle_core.smooth_within_at_proj + theorem basic_smooth_vector_bundle_core.cont_mdiff_at_proj + theorem basic_smooth_vector_bundle_core.cont_mdiff_on_proj + theorem basic_smooth_vector_bundle_core.cont_mdiff_proj + theorem basic_smooth_vector_bundle_core.cont_mdiff_within_at_proj + theorem basic_smooth_vector_bundle_core.smooth_at_proj + theorem basic_smooth_vector_bundle_core.smooth_const_section + theorem basic_smooth_vector_bundle_core.smooth_on_proj + theorem basic_smooth_vector_bundle_core.smooth_proj + theorem basic_smooth_vector_bundle_core.smooth_within_at_proj - def tangent_bundle.zero_section Modified src/geometry/manifold/mfderiv.lean Renamed src/geometry/manifold/basic_smooth_bundle.lean to src/geometry/manifold/tangent_bundle.lean - theorem basic_smooth_bundle_core.base_set - def basic_smooth_bundle_core.chart - theorem basic_smooth_bundle_core.chart_source - theorem basic_smooth_bundle_core.chart_target - theorem basic_smooth_bundle_core.coe_chart_at_fst - theorem basic_smooth_bundle_core.coe_chart_at_symm_fst - theorem basic_smooth_bundle_core.mem_atlas_iff - theorem basic_smooth_bundle_core.mem_chart_source_iff - theorem basic_smooth_bundle_core.mem_chart_target_iff - def basic_smooth_bundle_core.to_topological_fiber_bundle_core - structure basic_smooth_bundle_core + theorem basic_smooth_vector_bundle_core.base_set + def basic_smooth_vector_bundle_core.chart + theorem basic_smooth_vector_bundle_core.chart_source + theorem basic_smooth_vector_bundle_core.chart_target + theorem basic_smooth_vector_bundle_core.coe_chart_at_fst + theorem basic_smooth_vector_bundle_core.coe_chart_at_symm_fst + theorem basic_smooth_vector_bundle_core.mem_atlas_iff + theorem basic_smooth_vector_bundle_core.mem_chart_source_iff + theorem basic_smooth_vector_bundle_core.mem_chart_target_iff + theorem basic_smooth_vector_bundle_core.target + def basic_smooth_vector_bundle_core.to_topological_vector_bundle_core + structure basic_smooth_vector_bundle_core +/- def tangent_bundle +/- def tangent_bundle_core +/- def tangent_space - def trivial_basic_smooth_bundle_core + def trivial_basic_smooth_vector_bundle_core Modified src/topology/vector_bundle.lean + theorem topological_vector_bundle_core.base_set_at + theorem topological_vector_bundle_core.local_triv_apply + theorem topological_vector_bundle_core.local_triv_at_def + theorem topological_vector_bundle_core.local_triv_symm_fst + theorem topological_vector_bundle_core.mem_local_triv_at_base_set +/- theorem topological_vector_bundle_core.mem_local_triv_source + theorem topological_vector_bundle_core.mem_local_triv_target +/- theorem topological_vector_bundle_core.mem_source_at + def topological_vector_bundle_core.total_space + def trivial_topological_vector_bundle_core 2022-03-07 08:10:23 a19f6c6 doc(algebra/group/to_additive): `to_additive` and docstring interaction (#12476) ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean 2022-03-06 21:54:59 92ef3c5 feat(ring_theory/graded_algebra/radical) : radical of homogeneous ideal is homogeneous (#12277) This pr contains the following results about homogeneous ideals. * `ideal.is_homogeneous.is_prime_iff`: for any `I : ideal A`, if `I` is homogeneous, then `I` is prime if and only if `I` is homogeneously prime, i.e. `I ≠ ⊤` and if `x, y` are homogeneous elements such that `x * y ∈ I`, then at least one of `x,y` is in `I`. * `ideal.is_prime.homogeneous_core`: for any `I : ideal A`, if `I` is prime, then `I.homogeneous_core 𝒜` (i.e. the largest homogeneous ideal contained in `I`) is also prime. * `ideal.is_homogeneous.radical`: for any `I : ideal A`, if `I` is homogeneous, then the radical of `I` is homogeneous as well. * `homogeneous_ideal.radical`: for any `I : homogeneous_ideal 𝒜`, `I.radical` is the the radical of `I` as a `homogeneous_ideal 𝒜` ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/homogeneous_ideal.lean + theorem ideal.mem_homogeneous_core_of_is_homogeneous_of_mem Added src/ring_theory/graded_algebra/radical.lean + theorem homogeneous_ideal.coe_radical + def homogeneous_ideal.radical + theorem ideal.is_homogeneous.is_prime_iff + theorem ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem + theorem ideal.is_homogeneous.radical + theorem ideal.is_homogeneous.radical_eq + theorem ideal.is_prime.homogeneous_core 2022-03-06 18:41:38 40602e6 chore(set_theory/cardinal_divisibility): add instance unique (units cardinal) (#12458) ESTIMATED CHANGES Modified src/set_theory/cardinal_divisibility.lean 2022-03-06 15:36:29 6696187 chore(set_theory/ordinal_arithmetic): Reorder theorems (#12475) It makes more sense for `is_normal.bsup_eq` and `is_normal.blsub_eq` to be together. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-03-06 15:06:27 0a6efe0 feat(analysis/normed_space/star/spectrum): prove the spectral radius of a star normal element is its norm (#12249) In a C⋆-algebra over ℂ, the spectral radius of any star normal element is its norm. This extends the corresponding result for selfadjoint elements. - [x] depends on: #12211 - [x] depends on: #11991 ESTIMATED CHANGES Modified src/analysis/normed_space/star/spectrum.lean - theorem self_adjoint.coe_spectral_radius_eq_nnnorm + theorem spectral_radius_eq_nnnorm_of_star_normal 2022-03-06 11:52:53 28c902d fix(algebra/group/pi): Fix apply-simp-lemmas for monoid_hom.single (#12474) so that the simp-normal form really is `pi.mul_single`. While adjusting related lemmas in `group_theory.subgroup.basic`, add a few missing `to_additive` attributes. ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem monoid_hom.single_apply + theorem one_hom.single_apply Modified src/group_theory/subgroup/basic.lean + theorem subgroup.mul_single_mem_pi + theorem subgroup.pi_mem_of_mul_single_mem + theorem subgroup.pi_mem_of_mul_single_mem_aux - theorem subgroup.pi_mem_of_single_mem - theorem subgroup.pi_mem_of_single_mem_aux - theorem subgroup.single_mem_pi 2022-03-06 07:44:42 64d953a refactor(set_theory/ordinal): `enum_lt` → `enum_lt_enum` (#12469) That way, the theorem name matches that of `enum_le_enum`, `typein_lt_typein`, and `typein_le_typein`. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean - theorem ordinal.enum_lt + theorem ordinal.enum_lt_enum Modified src/set_theory/ordinal_arithmetic.lean 2022-03-06 07:44:41 d61ebab feat(category_theory/abelian): (co)kernels in terms of exact sequences (#12460) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.comp_epi_desc + def category_theory.abelian.epi_desc + def category_theory.abelian.mono_lift + theorem category_theory.abelian.mono_lift_comp Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.exact_of_is_cokernel + theorem category_theory.abelian.exact_of_is_kernel + def category_theory.abelian.is_colimit_of_exact_of_epi + def category_theory.abelian.is_limit_of_exact_of_mono 2022-03-06 07:44:40 b7808a9 chore(set_theory/ordinal_arithmetic): Golf `lsub_typein` and `blsub_id` (#12203) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.blsub_id +/- theorem ordinal.bsup_id_limit +/- theorem ordinal.bsup_id_succ +/- theorem ordinal.lsub_typein +/- theorem ordinal.sup_typein_succ 2022-03-06 07:44:39 b4d007f feat(category_theory/limits): transport is_limit along F.left_op and similar (#12166) ESTIMATED CHANGES Modified src/category_theory/limits/opposites.lean +/- theorem category_theory.limits.has_colimit_of_has_limit_left_op +/- theorem category_theory.limits.has_limit_of_has_colimit_left_op + def category_theory.limits.is_colimit_cocone_left_op_of_cone + def category_theory.limits.is_colimit_cocone_of_cone_left_op + def category_theory.limits.is_colimit_cocone_of_cone_right_op + def category_theory.limits.is_colimit_cocone_right_op_of_cone + def category_theory.limits.is_colimit_cocone_unop_of_cone + def category_theory.limits.is_colimit_cone_of_cocone_unop + def category_theory.limits.is_colimit_cone_op + def category_theory.limits.is_colimit_cone_unop + def category_theory.limits.is_limit_cocone_op + def category_theory.limits.is_limit_cocone_unop + def category_theory.limits.is_limit_cone_left_op_of_cocone + def category_theory.limits.is_limit_cone_of_cocone_left_op + def category_theory.limits.is_limit_cone_of_cocone_right_op + def category_theory.limits.is_limit_cone_of_cocone_unop + def category_theory.limits.is_limit_cone_right_op_of_cocone + def category_theory.limits.is_limit_cone_unop_of_cocone 2022-03-06 07:44:38 371b48a feal(category_theory/bicategory/functor): define pseudofunctors (#11992) This PR defines pseudofunctors between bicategories. We provide two constructors (`mk_of_oplax` and `mk_of_oplax'`) that construct pseudofunctors from oplax functors whose `map_id` and `map_comp` are isomorphisms. The constructor `mk_of_oplax` uses `iso` to describe isomorphisms, while `mk_of_oplax'` uses `is_iso`. ESTIMATED CHANGES Modified src/category_theory/bicategory/functor.lean +/- def category_theory.oplax_functor.comp +/- def category_theory.oplax_functor.id + structure category_theory.oplax_functor.pseudo_core + theorem category_theory.oplax_functor.to_prelax_eq_coe +/- theorem category_theory.oplax_functor.to_prelax_functor_map +/- theorem category_theory.oplax_functor.to_prelax_functor_map₂ +/- theorem category_theory.oplax_functor.to_prelax_functor_obj +/- structure category_theory.oplax_functor +/- def category_theory.prelax_functor.comp +/- def category_theory.prelax_functor.id + theorem category_theory.prelax_functor.to_prefunctor_eq_coe +/- theorem category_theory.prelax_functor.to_prefunctor_map +/- theorem category_theory.prelax_functor.to_prefunctor_obj +/- structure category_theory.prelax_functor + def category_theory.pseudofunctor.comp + def category_theory.pseudofunctor.id + def category_theory.pseudofunctor.map_functor + def category_theory.pseudofunctor.map₂_associator_aux + def category_theory.pseudofunctor.mk_of_oplax' + def category_theory.pseudofunctor.mk_of_oplax + def category_theory.pseudofunctor.to_oplax + theorem category_theory.pseudofunctor.to_oplax_eq_coe + theorem category_theory.pseudofunctor.to_oplax_map + theorem category_theory.pseudofunctor.to_oplax_map_comp + theorem category_theory.pseudofunctor.to_oplax_map_id + theorem category_theory.pseudofunctor.to_oplax_map₂ + theorem category_theory.pseudofunctor.to_oplax_obj + theorem category_theory.pseudofunctor.to_prelax_functor_eq_coe + theorem category_theory.pseudofunctor.to_prelax_functor_map + theorem category_theory.pseudofunctor.to_prelax_functor_map₂ + theorem category_theory.pseudofunctor.to_prelax_functor_obj + structure category_theory.pseudofunctor 2022-03-06 07:11:07 62e7d35 feat(category_theory/limits): uniqueness of preadditive structures (#12342) ESTIMATED CHANGES Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/limits/shapes/biproducts.lean +/- theorem category_theory.limits.bicone_ι_π_self + theorem category_theory.limits.biprod.add_eq_lift_desc_id + theorem category_theory.limits.biprod.add_eq_lift_id_desc 2022-03-05 17:38:12 974d23c feat(data/polynomial/monic): add monic_of_mul_monic_left/right (#12446) Also clean up variables that are defined in the section. From https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60geom_sum.20.28X.20.20n.29.60.20is.20monic/near/274130839 ESTIMATED CHANGES Modified src/data/polynomial/monic.lean +/- theorem polynomial.monic.as_sum + theorem polynomial.monic.of_mul_monic_left + theorem polynomial.monic.of_mul_monic_right +/- theorem polynomial.monic_add_of_left +/- theorem polynomial.monic_add_of_right 2022-03-05 16:13:55 e542154 feat(category_theory/full_subcategory): full_subcategory.map and full_subcategory.lift (#12335) ESTIMATED CHANGES Modified src/category_theory/full_subcategory.lean + theorem category_theory.full_subcategory.inclusion_map_lift_map + theorem category_theory.full_subcategory.inclusion_obj_lift_obj + def category_theory.full_subcategory.lift + def category_theory.full_subcategory.lift_comp_inclusion + theorem category_theory.full_subcategory.lift_comp_map + def category_theory.full_subcategory.map + theorem category_theory.full_subcategory.map_inclusion Modified src/category_theory/functor/fully_faithful.lean + def category_theory.full.of_comp_faithful_iso 2022-03-05 16:13:54 51adf3a feat(model_theory/terms_and_formulas): Using a list encoding, bounds the number of terms (#12276) Defines `term.list_encode` and `term.list_decode`, which turn terms into lists, and reads off lists as lists of terms. Bounds the number of terms by the number of allowed symbols + omega. ESTIMATED CHANGES Modified src/model_theory/terms_and_formulas.lean + theorem first_order.language.term.card_le + def first_order.language.term.list_decode + theorem first_order.language.term.list_decode_encode_list + def first_order.language.term.list_encode + theorem first_order.language.term.list_encode_injective 2022-03-05 15:19:46 92b27e1 feat(category_theory/discrete_category): generalize universes for comp_nat_iso_discrete (#12340) ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean +/- def category_theory.discrete.comp_nat_iso_discrete 2022-03-05 15:19:45 4ecd92a feat(category_theory/abelian): faithful functors reflect exact sequences (#12071) ESTIMATED CHANGES Modified src/algebra/homology/exact.lean + theorem category_theory.functor.exact_of_exact_map' + theorem category_theory.functor.exact_of_exact_map +/- theorem category_theory.mono_iff_exact_zero_left Modified src/category_theory/abelian/exact.lean Modified src/category_theory/limits/preserves/shapes/zero.lean + theorem category_theory.functor.map_eq_zero_iff + theorem category_theory.functor.zero_of_map_zero 2022-03-05 13:15:02 fa6b16e feat(data/nat/prime): add nat.eq_two_pow_or_exists_odd_prime_and_dvd (#12395) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.eq_prime_pow_of_unique_prime_dvd + theorem nat.eq_two_pow_or_exists_odd_prime_and_dvd + theorem nat.prime.eq_two_or_odd' 2022-03-05 13:15:01 8b91390 feat(order/hom/basic): add `order_iso.with_{top,bot}_congr` (#12264) This adds: * `with_bot.to_dual_top` * `with_top.to_dual_bot` * `order_iso.with_top_congr` * `order_iso.with_bot_congr` ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.map_coe' + theorem option.map_coe Modified src/order/bounded_order.lean + theorem with_bot.map_bot + theorem with_bot.map_coe + theorem with_top.map_coe + theorem with_top.map_top Modified src/order/hom/basic.lean + def order_iso.with_bot_congr + theorem order_iso.with_bot_congr_refl + theorem order_iso.with_bot_congr_symm + theorem order_iso.with_bot_congr_trans + def order_iso.with_top_congr + theorem order_iso.with_top_congr_refl + theorem order_iso.with_top_congr_symm + theorem order_iso.with_top_congr_trans + theorem with_bot.to_dual_top_coe + theorem with_bot.to_dual_top_symm_coe + theorem with_top.to_dual_bot_coe + theorem with_top.to_dual_bot_symm_coe 2022-03-05 12:17:39 2840532 doc(topology/uniform_space/cauchy): fix typo (#12453) ESTIMATED CHANGES Modified src/topology/uniform_space/cauchy.lean 2022-03-05 10:56:08 bda091d feat(measure_theory/card_measurable_space): cardinality of generated sigma-algebras (#12422) If a sigma-algebra is generated by a set of sets `s` whose cardinality is at most the continuum, then the sigma-algebra satisfies the same cardinality bound. ESTIMATED CHANGES Added src/measure_theory/card_measurable_space.lean + theorem measurable_space.cardinal_Union_generate_measurable_rec_le + theorem measurable_space.cardinal_generate_measurable_le + theorem measurable_space.cardinal_generate_measurable_le_continuum + theorem measurable_space.cardinal_generate_measurable_rec_le + theorem measurable_space.cardinal_measurable_set_le + theorem measurable_space.cardinal_measurable_set_le_continuum + def measurable_space.generate_measurable_rec + theorem measurable_space.generate_measurable_subset_rec Modified src/set_theory/cardinal.lean +/- theorem cardinal.power_le_power_left + theorem cardinal.self_le_power Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.add_le_of_le + theorem cardinal.omega_lt_aleph_one Modified src/set_theory/cofinality.lean + theorem cardinal.is_regular_aleph_one Modified src/set_theory/continuum.lean + theorem cardinal.aleph_one_le_continuum Modified src/set_theory/ordinal.lean 2022-03-05 09:10:31 93451af feat(order/category/BoolAlg): The category of Boolean algebras (#12452) Define `BoolAlg`, the category of Boolean algebras with bounded lattice homs. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean Added src/order/category/BoolAlg.lean + def BoolAlg.dual + def BoolAlg.dual_equiv + def BoolAlg.iso.mk + def BoolAlg.of + def BoolAlg.to_BoundedDistribLattice + def BoolAlg + theorem BoolAlg_dual_comp_forget_to_BoundedDistribLattice 2022-03-05 09:10:30 f5b885b feat(linear_algebra/clifford_algebra/conjugation): reverse and involute are grade-preserving (#12373) This shows that various submodules are preserved under `submodule.map` by `reverse` or `involute`. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/conjugation.lean + theorem clifford_algebra.even_odd_comap_involute + theorem clifford_algebra.even_odd_comap_reverse + theorem clifford_algebra.even_odd_map_involute + theorem clifford_algebra.even_odd_map_reverse + theorem clifford_algebra.involute_mem_even_odd_iff + theorem clifford_algebra.reverse_mem_even_odd_iff + theorem clifford_algebra.submodule_comap_mul_reverse + theorem clifford_algebra.submodule_comap_pow_reverse + theorem clifford_algebra.submodule_map_involute_eq_comap + theorem clifford_algebra.submodule_map_mul_reverse + theorem clifford_algebra.submodule_map_pow_reverse + theorem clifford_algebra.submodule_map_reverse_eq_comap Modified src/linear_algebra/clifford_algebra/grading.lean + theorem clifford_algebra.ι_mem_even_odd_one 2022-03-05 08:41:18 ac28ddf feat(data/nat/fib): add bit0/bit1 lemmas and fast_fib (#12444) This provides lemmas that let `simp` calculate `fib` from the bit0/bit1 numeral representation. (This isn't intended to be for speed, although it does evaluate things reasonably quick.) ```lean lemma foo : fib 64 = 10610209857723 := begin norm_num [fib_bit0, fib_bit1, fib_bit0_succ, fib_bit1_succ], end ``` These are then used to show that `fast_fib` computes `fib`. ESTIMATED CHANGES Modified src/data/nat/fib.lean + def nat.fast_fib + def nat.fast_fib_aux + theorem nat.fast_fib_aux_bit_ff + theorem nat.fast_fib_aux_bit_tt + theorem nat.fast_fib_aux_eq + theorem nat.fast_fib_eq + theorem nat.fib_add_two_sub_fib_add_one + theorem nat.fib_bit0 + theorem nat.fib_bit0_succ + theorem nat.fib_bit1 + theorem nat.fib_bit1_succ + theorem nat.fib_two_mul + theorem nat.fib_two_mul_add_one 2022-03-05 06:05:25 36a528d feat(set_theory/ordinal_arithmetic): `add_le_of_forall_add_lt` (#12315) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.add_le_of_forall_add_lt 2022-03-05 03:06:09 b0d9462 feat(category_theory/preadditive/injective) : more basic properties and morphisms about injective objects (#12450) This pr dualises the rest of `projective.lean` ESTIMATED CHANGES Modified src/category_theory/preadditive/injective.lean + def category_theory.injective.d + theorem category_theory.injective.exact.comp_desc + def category_theory.injective.exact.desc + def category_theory.injective.syzygies + def category_theory.injective.under + def category_theory.injective.ι 2022-03-05 03:06:08 fdf43f1 feat(category_theory/closed): generalize some material from cartesian closed categories to closed monoidal categories (#12386) No new content, just moving some trivially generalisable material about cartesian closed categories to closed monoidal categories. I've defined `ihom` for internal hom, and made `exp` an abbreviation for it in the cartesian closed case. A few other definitions similarly become abbreviations. I've left the `⟹` arrow for the internal hom in the cartesian closed case, and added `⟶[C]` for the general internal hom. ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean Modified src/category_theory/closed/cartesian.lean +/- theorem category_theory.cartesian_closed.curry_eq +/- theorem category_theory.cartesian_closed.curry_id_eq_coev +/- theorem category_theory.cartesian_closed.uncurry_eq +/- theorem category_theory.cartesian_closed.uncurry_id_eq_ev - def category_theory.coev - theorem category_theory.coev_ev - theorem category_theory.coev_naturality - def category_theory.ev - theorem category_theory.ev_coev - theorem category_theory.ev_naturality +/- def category_theory.exp.adjunction + def category_theory.exp.coev + theorem category_theory.exp.coev_ev + def category_theory.exp.ev + theorem category_theory.exp.ev_coev +/- def category_theory.exp - theorem category_theory.exp_adjunction_counit - theorem category_theory.exp_adjunction_unit Modified src/category_theory/closed/functor.lean Modified src/category_theory/closed/ideal.lean Modified src/category_theory/closed/monoidal.lean + def category_theory.ihom.adjunction + def category_theory.ihom.coev + theorem category_theory.ihom.coev_ev + theorem category_theory.ihom.coev_naturality + def category_theory.ihom.ev + theorem category_theory.ihom.ev_coev + theorem category_theory.ihom.ev_naturality + theorem category_theory.ihom.ihom_adjunction_counit + theorem category_theory.ihom.ihom_adjunction_unit + def category_theory.ihom + theorem category_theory.monoidal_closed.coev_app_comp_pre_app + def category_theory.monoidal_closed.curry + theorem category_theory.monoidal_closed.curry_eq + theorem category_theory.monoidal_closed.curry_eq_iff + theorem category_theory.monoidal_closed.curry_id_eq_coev + theorem category_theory.monoidal_closed.curry_injective + theorem category_theory.monoidal_closed.curry_natural_left + theorem category_theory.monoidal_closed.curry_natural_right + theorem category_theory.monoidal_closed.curry_uncurry + theorem category_theory.monoidal_closed.eq_curry_iff + theorem category_theory.monoidal_closed.hom_equiv_apply_eq + theorem category_theory.monoidal_closed.hom_equiv_symm_apply_eq + theorem category_theory.monoidal_closed.id_tensor_pre_app_comp_ev + def category_theory.monoidal_closed.internal_hom + def category_theory.monoidal_closed.pre + theorem category_theory.monoidal_closed.pre_id + theorem category_theory.monoidal_closed.pre_map + def category_theory.monoidal_closed.uncurry + theorem category_theory.monoidal_closed.uncurry_curry + theorem category_theory.monoidal_closed.uncurry_eq + theorem category_theory.monoidal_closed.uncurry_id_eq_ev + theorem category_theory.monoidal_closed.uncurry_injective + theorem category_theory.monoidal_closed.uncurry_natural_left + theorem category_theory.monoidal_closed.uncurry_natural_right + theorem category_theory.monoidal_closed.uncurry_pre + def category_theory.tensor_closed +/- def category_theory.unit_closed Modified src/category_theory/closed/types.lean 2022-03-05 01:51:47 45d235e feat(analysis/normed_space/star/matrix): `entrywise_sup_norm_bound_of_unitary` (#12255) The entrywise sup norm of a unitary matrix is at most 1. I suspect there is a simpler proof! ESTIMATED CHANGES Added src/analysis/normed_space/star/matrix.lean + theorem entry_norm_bound_of_unitary + theorem entrywise_sup_norm_bound_of_unitary 2022-03-05 01:51:46 1755911 feat(topology/compacts): The types of clopens and of compact opens (#11966) Define `clopens` and ` compact_opens`, the types of clopens and of compact open sets of a topological space. ESTIMATED CHANGES Modified src/topology/compacts.lean + theorem topological_space.clopens.clopen + theorem topological_space.clopens.coe_bot + theorem topological_space.clopens.coe_compl + theorem topological_space.clopens.coe_inf + theorem topological_space.clopens.coe_mk + theorem topological_space.clopens.coe_sdiff + theorem topological_space.clopens.coe_sup + theorem topological_space.clopens.coe_top + def topological_space.clopens.to_opens + structure topological_space.clopens + theorem topological_space.compact_opens.coe_bot + theorem topological_space.compact_opens.coe_compl + theorem topological_space.compact_opens.coe_inf + theorem topological_space.compact_opens.coe_map + theorem topological_space.compact_opens.coe_mk + theorem topological_space.compact_opens.coe_sdiff + theorem topological_space.compact_opens.coe_sup + theorem topological_space.compact_opens.coe_top + theorem topological_space.compact_opens.compact + def topological_space.compact_opens.map + def topological_space.compact_opens.to_clopens + def topological_space.compact_opens.to_opens + theorem topological_space.compact_opens.«open» + structure topological_space.compact_opens 2022-03-05 00:00:54 8e1da4e feat(ring_theory/adjoin/basic): if a set of elements of a subobject commute, its closure/adjoin is also commutative (#12231) We show that if a set of elements of a subobject commute, its closure/adjoin is also commutative The subobjects include (additive) submonoids, (additive) subgroups, subsemirings, subrings, and subalgebras. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + def subgroup.closure_comm_group_of_comm + theorem subgroup.closure_induction₂ Modified src/group_theory/submonoid/basic.lean + theorem submonoid.closure_induction₂ Modified src/group_theory/submonoid/membership.lean + def submonoid.closure_comm_monoid_of_comm Modified src/ring_theory/adjoin/basic.lean + def algebra.adjoin_comm_ring_of_comm + def algebra.adjoin_comm_semiring_of_comm + theorem algebra.adjoin_induction₂ Modified src/ring_theory/subring/basic.lean + def subring.closure_comm_ring_of_comm + theorem subring.closure_induction₂ Modified src/ring_theory/subsemiring/basic.lean + def subsemiring.closure_comm_semiring_of_comm + theorem subsemiring.closure_induction₂ 2022-03-04 21:44:21 3ac971b feat(order/category/Frame): The category of frames (#12363) Define `Frame`, the category of frames with frame homomorphisms. ESTIMATED CHANGES Added src/order/category/Frame.lean + def Frame.hom + def Frame.iso.mk + def Frame.of + def Frame 2022-03-04 21:44:20 ee4be2d feat(ring_theory/simple_module): Simple modules as simple objects in the Module category (#11927) A simple module is a simple object in the Module category. From there it should be easy to write an alternative proof of Schur's lemma for modules using category theory (using the work already done in category_theory/preadditive/schur.lean). The other direction (a simple object in the Module category is a simple module) hasn't been proved yet. ESTIMATED CHANGES Modified src/algebra/category/Module/epi_mono.lean + def Module.unique_of_epi_zero Added src/algebra/category/Module/simple.lean Modified src/data/pi.lean + def unique_of_surjective_one Modified src/logic/unique.lean + def function.surjective.unique_of_surjective_const 2022-03-04 21:44:19 a07cf6b feat(ring_theory/polynomial/homogeneous) : add lemma `homogeneous_component_homogeneous_polynomial` (#10113) add the following lemma ```lean lemma homogeneous_component_homogeneous_polynomial (m n : ℕ) (p : mv_polynomial σ R) (h : p ∈ homogeneous_submodule σ R n) : homogeneous_component m p = if m = n then p else 0 ``` ESTIMATED CHANGES Modified src/ring_theory/polynomial/homogeneous.lean + theorem mv_polynomial.homogeneous_component_homogeneous_polynomial 2022-03-04 19:43:16 34d8ff1 feat(topology/algebra/weak_dual): generalize to weak topologies for arbitrary dualities (#12284) ESTIMATED CHANGES Modified src/analysis/normed_space/weak_dual.lean Modified src/topology/algebra/module/weak_dual.lean + theorem bilin_embedding + theorem coe_fn_continuous + theorem continuous_of_continuous_eval + theorem dual_pairing_apply + theorem eval_continuous + theorem tendsto_iff_forall_eval_tendsto + def top_dual_pairing + def weak_bilin - theorem weak_dual.coe_fn_continuous - theorem weak_dual.coe_fn_embedding - theorem weak_dual.continuous_of_continuous_eval - theorem weak_dual.eval_continuous - theorem weak_dual.tendsto_iff_forall_eval_tendsto +/- def weak_dual + def weak_space 2022-03-04 19:43:15 89654c0 feat(data/equiv/{mul_add,ring}): Coercions to types of morphisms from their `_class` (#12243) Add missing coercions to `α ≃+ β`, `α ≃* β`, `α ≃+* β` from `add_equiv_class`, `mul_equiv_class`, `ring_equiv_class`. ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean Modified src/data/equiv/ring.lean 2022-03-04 17:34:12 30d63cd feat(field_theory/cardinality): a cardinal can have a field structure iff it is a prime power (#12442) ESTIMATED CHANGES Modified src/field_theory/cardinality.lean + theorem field.nonempty_iff 2022-03-04 17:34:11 858002b feat(algebra/char_zero): cast(_pow)_eq_one (#12429) ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem nat.cast_eq_one + theorem nat.cast_ne_one + theorem nat.cast_pow_eq_one 2022-03-04 17:34:10 a54dd9e feat(order/category/BoundedDistribLattice): The category of bounded distributive lattices (#12347) Define `BoundedDistribLattice`, the category of bounded distributive lattices with bounded lattice homomorphisms. ESTIMATED CHANGES Added src/order/category/BoundedDistribLattice.lean + theorem BoundedDistribLattice.coe_of + theorem BoundedDistribLattice.coe_to_BoundedLattice + def BoundedDistribLattice.dual + def BoundedDistribLattice.dual_equiv + theorem BoundedDistribLattice.forget_BoundedLattice_Lattice_eq_forget_DistribLattice_Lattice + def BoundedDistribLattice.iso.mk + def BoundedDistribLattice.of + def BoundedDistribLattice.to_BoundedLattice + structure BoundedDistribLattice + theorem BoundedDistribLattice_dual_comp_forget_to_DistribLattice Modified src/order/category/DistribLattice.lean 2022-03-04 17:34:09 fab59cb feat(set_theory/cofinality): `cof_eq_Inf_lsub` (#12314) This much nicer characterization of cofinality will allow us to prove various theorems relating it to `lsub` and `blsub`. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.mk_ordinal_out Modified src/set_theory/cofinality.lean + theorem ordinal.cof_eq_Inf_lsub + theorem ordinal.cof_lsub_def_nonempty 2022-03-04 17:34:07 efd9a16 refactor(group_theory/commutator): Define commutators of subgroups in terms of commutators of elements (#12309) This PR defines commutators of elements of groups. (This is one of the several orthogonal changes from https://github.com/leanprover-community/mathlib/pull/12134) ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem commutator_element_def Modified src/group_theory/abelianization.lean +/- theorem commutator_eq_closure Modified src/group_theory/commutator.lean + theorem commutator_element_inv + theorem conjugate_commutator_element + theorem map_commutator_element Modified src/group_theory/nilpotent.lean Modified src/tactic/group.lean Modified test/group.lean - def commutator3 - def commutator 2022-03-04 17:34:06 35b835a feat(data/set/sigma): Indexed sum of sets (#12305) Define `set.sigma`, the sum of a family of sets indexed by a set. ESTIMATED CHANGES Modified src/data/finset/sigma.lean + theorem finset.coe_sigma Added src/data/set/sigma.lean + theorem set.empty_sigma + theorem set.exists_sigma_iff + theorem set.forall_sigma_iff + theorem set.fst_image_sigma + theorem set.fst_image_sigma_subset + theorem set.image_sigma_mk_subset_sigma_left + theorem set.image_sigma_mk_subset_sigma_right + theorem set.insert_sigma + theorem set.mem_sigma_iff + theorem set.mk_mem_sigma + theorem set.mk_preimage_sigma + theorem set.mk_preimage_sigma_eq_empty + theorem set.mk_preimage_sigma_eq_if + theorem set.mk_preimage_sigma_fn_eq_if + theorem set.mk_sigma_iff + theorem set.nonempty.sigma_fst + theorem set.nonempty.sigma_snd + theorem set.preimage_sigma_map_sigma + theorem set.sigma_diff_sigma + theorem set.sigma_empty + theorem set.sigma_eq_empty_iff + theorem set.sigma_insert + theorem set.sigma_inter_sigma + theorem set.sigma_mono + theorem set.sigma_nonempty_iff + theorem set.sigma_preimage_eq + theorem set.sigma_preimage_left + theorem set.sigma_preimage_right + theorem set.sigma_singleton + theorem set.sigma_subset_iff + theorem set.sigma_subset_preimage_fst + theorem set.sigma_union + theorem set.sigma_univ + theorem set.sigma_univ_range_eq + theorem set.singleton_sigma + theorem set.singleton_sigma_singleton + theorem set.union_sigma + theorem set.univ_sigma_univ Modified src/logic/basic.lean +/- theorem imp_iff_not_or + theorem imp_iff_or_not +/- theorem not_or_of_imp + theorem or_not_of_imp 2022-03-04 17:34:05 ed63386 feat(category_theory/preadditive/injective) : definition of injective objects in a category (#11921) This pr contains definition of injective objects and some useful instances. ESTIMATED CHANGES Added src/category_theory/preadditive/injective.lean + theorem category_theory.injective.comp_factor_thru + def category_theory.injective.factor_thru + theorem category_theory.injective.iso_iff + theorem category_theory.injective.of_iso + structure category_theory.injective_presentation 2022-03-04 17:34:04 a8629a5 refactor(tactic/interactive): use 1-indexing in work_on_goal (#11813) Backporting the change in https://github.com/leanprover-community/mathlib4/pull/178 to make `work_on_goal` 1-indexed. See also: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/.60work_on_goal.60.20vs.20.60swap.60 ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/algebra/algebra/operations.lean Modified src/combinatorics/hales_jewett.lean Modified src/data/mv_polynomial/variables.lean Modified src/group_theory/submonoid/pointwise.lean Modified src/linear_algebra/alternating.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/tactic/chain.lean Modified src/tactic/interactive.lean Modified test/swap_var.lean Modified test/tidy.lean 2022-03-04 15:24:38 0ec8e6a feat(algebra/algebra/operations): more lemmas about `mul_opposite` (#12441) Naturally the lemmas I left out of the previous PR, notably `map_unop_mul` and `map_unop_pow`, are the ones I actually needed. This also improves the `simps` lemmas on `submodule.equiv_opposite`, which were previously garbage as `simps` didn't unfold `ring_equiv.symm` properly. At any rate, the only reason it was defined that way was because the lemmas in this PR were missing. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.comap_op_mul + theorem submodule.comap_op_pow + theorem submodule.map_unop_mul + theorem submodule.map_unop_pow 2022-03-04 15:24:37 31cb3c1 chore(algebra/group_with_zero/basic): generalize `units.exists_iff_ne_zero` to arbitrary propositions (#12439) This adds a more powerful version of this lemma that allows an existential to be replaced with one over the underlying group with zero. The naming matches `subtype.exists` and `subtype.exists'`, while the trailing zero matches `units.mk0`. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem units.exists0' + theorem units.exists0 2022-03-04 15:24:36 6e94c53 feat(complex/basic): nnnorm coercions (#12428) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.nnnorm_eq_one_of_pow_eq_one + theorem complex.nnnorm_int + theorem complex.nnnorm_nat + theorem complex.nnnorm_real + theorem complex.norm_eq_one_of_pow_eq_one Modified src/analysis/complex/roots_of_unity.lean + theorem is_primitive_root.nnnorm_eq_one 2022-03-04 15:24:34 dc95d02 feat(order/filter/archimedean): add lemmas about convergence to ±∞ for archimedean rings / groups. (#12427) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/order/filter/archimedean.lean + theorem filter.tendsto.at_bot_mul_const' + theorem filter.tendsto.at_bot_mul_neg_const' + theorem filter.tendsto.at_bot_zsmul_const + theorem filter.tendsto.at_bot_zsmul_neg_const +/- theorem filter.tendsto.at_top_mul_const' + theorem filter.tendsto.at_top_mul_neg_const' + theorem filter.tendsto.at_top_nsmul_const + theorem filter.tendsto.at_top_nsmul_neg_const + theorem filter.tendsto.at_top_zsmul_const + theorem filter.tendsto.at_top_zsmul_neg_const +/- theorem filter.tendsto.const_mul_at_top' Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto_at_bot_iff_tends_to_neg_at_top + theorem filter.tendsto_at_top_iff_tends_to_neg_at_bot 2022-03-04 15:24:33 e41303d feat(category_theory/limits/shapes): preserving (co)kernels (#12419) This is work towards showing that homology is a lax monoidal functor. ESTIMATED CHANGES Modified src/category_theory/limits/is_limit.lean + def category_theory.limits.is_colimit.equiv_of_nat_iso_of_iso + def category_theory.limits.is_limit.equiv_of_nat_iso_of_iso Modified src/category_theory/limits/preserves/shapes/equalizers.lean Added src/category_theory/limits/preserves/shapes/kernels.lean + def category_theory.limits.is_colimit_cofork_map_of_is_colimit' + def category_theory.limits.is_colimit_map_cocone_cofork_equiv' + def category_theory.limits.is_colimit_of_has_cokernel_of_preserves_colimit + def category_theory.limits.is_limit_fork_map_of_is_limit' + def category_theory.limits.is_limit_map_cone_fork_equiv' + def category_theory.limits.is_limit_of_has_kernel_of_preserves_limit + def category_theory.limits.preserves_cokernel.iso + theorem category_theory.limits.preserves_cokernel.iso_hom + def category_theory.limits.preserves_cokernel.of_iso_comparison + def category_theory.limits.preserves_kernel.iso + theorem category_theory.limits.preserves_kernel.iso_hom + def category_theory.limits.preserves_kernel.of_iso_comparison Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.parallel_pair.ext Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel_comparison + theorem category_theory.limits.cokernel_comparison_map_desc + def category_theory.limits.cokernel_is_cokernel + def category_theory.limits.kernel_comparison + theorem category_theory.limits.kernel_comparison_comp_π + def category_theory.limits.kernel_is_kernel + theorem category_theory.limits.map_lift_kernel_comparison + theorem category_theory.limits.ι_comp_cokernel_comparison 2022-03-04 14:03:56 2d6c52a feat(topology/metric_space/polish): definition and basic properties of polish spaces (#12437) A topological space is Polish if its topology is second-countable and there exists a compatible complete metric. This is the class of spaces that is well-behaved with respect to measure theory. In this PR, we establish basic (and not so basic) properties of Polish spaces. ESTIMATED CHANGES Modified src/topology/metric_space/isometry.lean + theorem embedding.to_isometry + theorem uniform_embedding.to_isometry Added src/topology/metric_space/polish.lean + theorem closed_embedding.polish_space + theorem complete_polish_space_metric + theorem equiv.polish_space_induced + theorem is_closed.is_clopenable + theorem is_closed.polish_space + theorem is_open.is_clopenable + theorem is_open.polish_space + def polish_space.aux_copy + def polish_space.complete_copy + def polish_space.complete_copy_id_homeo + def polish_space.complete_copy_metric_space + theorem polish_space.complete_space_complete_copy + theorem polish_space.dist_complete_copy_eq + theorem polish_space.dist_le_dist_complete_copy + theorem polish_space.exists_nat_nat_continuous_surjective + theorem polish_space.exists_polish_space_forall_le + def polish_space.has_dist_complete_copy + theorem polish_space.is_clopenable.Union + theorem polish_space.is_clopenable.compl + def polish_space.is_clopenable + def polish_space_metric + def upgrade_polish_space 2022-03-04 14:03:54 0a3d144 chore(topology/algebra/uniform_mul_action): add `has_uniform_continuous_const_smul.op` (#12434) This matches `has_continuous_const_smul.op` and other similar lemmas. With this in place, we can state `is_central_scalar` on `completion`s. ESTIMATED CHANGES Modified src/topology/algebra/uniform_mul_action.lean 2022-03-04 14:03:53 cac9242 chore(analysis/complex/basic): golf `norm_rat/int/int_of_nonneg` (#12433) While looking at PR #12428, I found some easy golfing of some lemmas (featuring my first-ever use of `single_pass`! :smile: ). ESTIMATED CHANGES Modified src/analysis/complex/basic.lean 2022-03-04 14:03:51 173f161 feat(set_theory/ordinal_arithmetic): `bsup` / `blsub` of function composition (#12381) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.blsub_comp + theorem ordinal.bsup_comp 2022-03-04 12:39:06 a721700 chore(algebra/algebra/operations): add missing `@[elab_as_eliminator]` on recursors (#12440) `refine submodule.pow_induction_on' _ _ _ _ h` struggles without this attribute ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/linear_algebra/exterior_algebra/grading.lean Modified src/linear_algebra/tensor_algebra/grading.lean 2022-03-04 12:39:04 4a416bc feat(set_theory/ordinal_arithmetic): `is_normal.blsub_eq` (#12379) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.is_normal.blsub_eq 2022-03-04 12:39:03 b144460 feat(number_theory/cyclotomic/primitive_roots): generalize norm_eq_one (#12359) We generalize `norm_eq_one`, that now computes the norm of any primitive `n`-th root of unity if `n ≠ 2`. We modify the assumption, that is still verified in the main case of interest `K = ℚ`. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/cyclotomic/primitive_roots.lean +/- theorem is_cyclotomic_extension.norm_zeta_eq_one + theorem is_primitive_root.norm_eq_neg_one_pow +/- theorem is_primitive_root.norm_eq_one + theorem is_primitive_root.norm_eq_one_of_linearly_ordered + theorem is_primitive_root.norm_of_cyclotomic_irreducible - theorem is_primitive_root.prime_ne_two_pow_sub_one_norm +/- theorem is_primitive_root.sub_one_norm_pow_two + theorem is_primitive_root.sub_one_norm_prime_ne_two 2022-03-04 12:39:02 53dc7ca feat(linear_algebra/basic): some basic lemmas about dfinsupp.sum (#12214) Two basic lemmas about dfinsupp.sum that could be useful (I needed them for another project) ESTIMATED CHANGES Modified src/data/dfinsupp/basic.lean + theorem dfinsupp.prod_eq_one + theorem dfinsupp.smul_sum 2022-03-04 09:26:44 052d027 refactor(algebra/category/Group/basic): Avoid data shuffle in `mul_equiv.to_Group_iso` (#12407) Change the definition of `mul_equiv.to_Group_iso` from `{X Y : Type*} [group X] [group Y] (e : X ≃* Y) : Group.of X ≅ Group.of Y` to `{X Y : Group} (e : X ≃* Y) : X ≅ Y`. Not making `X` and `Y` into `Group`s on the fly avoids rebundling them when they already are `Group`s, which breaks definitional equality. ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean +/- def mul_equiv.to_CommGroup_iso +/- def mul_equiv.to_Group_iso +/- def mul_equiv_iso_CommGroup_iso +/- def mul_equiv_iso_Group_iso 2022-03-04 09:26:43 0666dd5 feat(order/bounded): The universal set is unbounded (#12390) ESTIMATED CHANGES Modified src/order/bounded.lean + theorem set.unbounded_ge_univ + theorem set.unbounded_gt_univ + theorem set.unbounded_le_univ + theorem set.unbounded_lt_univ 2022-03-04 09:26:42 09c66fa feat(counterexamples/seminorm_lattice_not_distrib): The lattice of seminorms is not distributive. (#12099) A counterexample showing the lattice of seminorms is not distributive ESTIMATED CHANGES Added counterexamples/seminorm_lattice_not_distrib.lean + theorem seminorm_not_distrib.eq_one + theorem seminorm_not_distrib.not_distrib 2022-03-04 08:56:10 82a142d feat(algebra/category): Module R is monoidal closed for comm_ring R (#12387) ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean + def Module.monoidal_closed_hom_equiv 2022-03-04 07:06:13 e96cf5e feat(data/nat/gcd): add coprime_prod_left and coprime_prod_right (#12268) ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime_prod_left + theorem nat.coprime_prod_right 2022-03-03 23:56:18 40524f1 feat(algebra/star/self_adjoint): define normal elements of a star monoid (#11991) In this PR, we define the normal elements of a star monoid, i.e. those elements `x` that commute with `star x`. This is defined as the prop type class `is_star_normal`. This was formalized as part of the semilinear maps paper. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean + theorem self_adjoint.is_star_normal_of_mem + theorem skew_adjoint.is_star_normal_of_mem + theorem star_comm_self' 2022-03-03 23:15:44 544f45b refactor(linear_algebra/bilinear_form): split off matrix part (#12435) The bilinear form file is way too large. The part that concerns matrices is not depended on by the general theory, and belongs in its own file. ESTIMATED CHANGES Modified src/algebra/lie/skew_adjoint.lean Modified src/linear_algebra/bilinear_form.lean - theorem basis.equiv_fun_symm_std_basis - theorem bilin_form.mul_to_matrix' - theorem bilin_form.mul_to_matrix'_mul - theorem bilin_form.mul_to_matrix - theorem bilin_form.mul_to_matrix_mul - theorem bilin_form.nondegenerate.to_matrix' - theorem bilin_form.nondegenerate.to_matrix - theorem bilin_form.nondegenerate_iff_det_ne_zero - theorem bilin_form.nondegenerate_of_det_ne_zero - theorem bilin_form.nondegenerate_to_bilin'_iff_det_ne_zero - theorem bilin_form.nondegenerate_to_bilin'_of_det_ne_zero' - theorem bilin_form.nondegenerate_to_matrix'_iff - theorem bilin_form.nondegenerate_to_matrix_iff - def bilin_form.to_matrix' - theorem bilin_form.to_matrix'_apply - theorem bilin_form.to_matrix'_comp - theorem bilin_form.to_matrix'_comp_left - theorem bilin_form.to_matrix'_comp_right - theorem bilin_form.to_matrix'_mul - theorem bilin_form.to_matrix'_symm - theorem bilin_form.to_matrix'_to_bilin' - theorem bilin_form.to_matrix_apply - def bilin_form.to_matrix_aux - theorem bilin_form.to_matrix_aux_std_basis - theorem bilin_form.to_matrix_basis_fun - theorem bilin_form.to_matrix_comp - theorem bilin_form.to_matrix_comp_left - theorem bilin_form.to_matrix_comp_right - theorem bilin_form.to_matrix_mul - theorem bilin_form.to_matrix_mul_basis_to_matrix - theorem bilin_form.to_matrix_symm - theorem bilin_form.to_matrix_to_bilin - theorem bilinear_form.to_matrix_aux_eq - theorem is_adjoint_pair_to_bilin' - theorem is_adjoint_pair_to_bilin - def matrix.is_adjoint_pair - theorem matrix.is_adjoint_pair_equiv - def matrix.is_self_adjoint - def matrix.is_skew_adjoint - theorem matrix.nondegenerate.to_bilin' - theorem matrix.nondegenerate.to_bilin - theorem matrix.nondegenerate_to_bilin'_iff - theorem matrix.nondegenerate_to_bilin'_iff_nondegenerate_to_bilin - theorem matrix.nondegenerate_to_bilin_iff - def matrix.to_bilin' - theorem matrix.to_bilin'_apply' - theorem matrix.to_bilin'_apply - def matrix.to_bilin'_aux - theorem matrix.to_bilin'_aux_eq - theorem matrix.to_bilin'_aux_std_basis - theorem matrix.to_bilin'_comp - theorem matrix.to_bilin'_std_basis - theorem matrix.to_bilin'_symm - theorem matrix.to_bilin'_to_matrix' - theorem matrix.to_bilin_apply - theorem matrix.to_bilin_basis_fun - theorem matrix.to_bilin_comp - theorem matrix.to_bilin_symm - theorem matrix.to_bilin_to_matrix - theorem mem_pair_self_adjoint_matrices_submodule - theorem mem_self_adjoint_matrices_submodule - theorem mem_skew_adjoint_matrices_submodule - def pair_self_adjoint_matrices_submodule - def self_adjoint_matrices_submodule - def skew_adjoint_matrices_submodule - theorem to_bilin'_aux_to_matrix_aux Added src/linear_algebra/matrix/bilinear_form.lean + theorem basis.equiv_fun_symm_std_basis + theorem bilin_form.mul_to_matrix' + theorem bilin_form.mul_to_matrix'_mul + theorem bilin_form.mul_to_matrix + theorem bilin_form.mul_to_matrix_mul + theorem bilin_form.nondegenerate.to_matrix' + theorem bilin_form.nondegenerate.to_matrix + theorem bilin_form.nondegenerate_iff_det_ne_zero + theorem bilin_form.nondegenerate_of_det_ne_zero + theorem bilin_form.nondegenerate_to_bilin'_iff_det_ne_zero + theorem bilin_form.nondegenerate_to_bilin'_of_det_ne_zero' + theorem bilin_form.nondegenerate_to_matrix'_iff + theorem bilin_form.nondegenerate_to_matrix_iff + def bilin_form.to_matrix' + theorem bilin_form.to_matrix'_apply + theorem bilin_form.to_matrix'_comp + theorem bilin_form.to_matrix'_comp_left + theorem bilin_form.to_matrix'_comp_right + theorem bilin_form.to_matrix'_mul + theorem bilin_form.to_matrix'_symm + theorem bilin_form.to_matrix'_to_bilin' + theorem bilin_form.to_matrix_apply + def bilin_form.to_matrix_aux + theorem bilin_form.to_matrix_aux_std_basis + theorem bilin_form.to_matrix_basis_fun + theorem bilin_form.to_matrix_comp + theorem bilin_form.to_matrix_comp_left + theorem bilin_form.to_matrix_comp_right + theorem bilin_form.to_matrix_mul + theorem bilin_form.to_matrix_mul_basis_to_matrix + theorem bilin_form.to_matrix_symm + theorem bilin_form.to_matrix_to_bilin + theorem bilinear_form.to_matrix_aux_eq + theorem is_adjoint_pair_to_bilin' + theorem is_adjoint_pair_to_bilin + def matrix.is_adjoint_pair + theorem matrix.is_adjoint_pair_equiv + def matrix.is_self_adjoint + def matrix.is_skew_adjoint + theorem matrix.nondegenerate.to_bilin' + theorem matrix.nondegenerate.to_bilin + theorem matrix.nondegenerate_to_bilin'_iff + theorem matrix.nondegenerate_to_bilin'_iff_nondegenerate_to_bilin + theorem matrix.nondegenerate_to_bilin_iff + def matrix.to_bilin' + theorem matrix.to_bilin'_apply' + theorem matrix.to_bilin'_apply + def matrix.to_bilin'_aux + theorem matrix.to_bilin'_aux_eq + theorem matrix.to_bilin'_aux_std_basis + theorem matrix.to_bilin'_comp + theorem matrix.to_bilin'_std_basis + theorem matrix.to_bilin'_symm + theorem matrix.to_bilin'_to_matrix' + theorem matrix.to_bilin_apply + theorem matrix.to_bilin_basis_fun + theorem matrix.to_bilin_comp + theorem matrix.to_bilin_symm + theorem matrix.to_bilin_to_matrix + theorem mem_pair_self_adjoint_matrices_submodule + theorem mem_self_adjoint_matrices_submodule + theorem mem_skew_adjoint_matrices_submodule + def pair_self_adjoint_matrices_submodule + def self_adjoint_matrices_submodule + def skew_adjoint_matrices_submodule + theorem to_bilin'_aux_to_matrix_aux Modified src/linear_algebra/quadratic_form/basic.lean Modified src/ring_theory/trace.lean 2022-03-03 21:32:01 5371338 feat(group_theory/torsion): all torsion monoids are groups (#12432) ESTIMATED CHANGES Modified src/group_theory/torsion.lean 2022-03-03 21:32:00 1af53ff feat(polynomial/cyclotomic): some divisibility results (#12426) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.not_mem_sdiff_of_not_mem_left Modified src/data/polynomial/eval.lean + theorem polynomial.map_dvd Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.X_pow_sub_one_mul_cyclotomic_dvd_X_pow_sub_one_of_dvd + theorem polynomial.X_pow_sub_one_mul_prod_cyclotomic_eq_X_pow_sub_one_of_dvd + theorem polynomial.cyclotomic_dvd_geom_sum_of_dvd 2022-03-03 21:31:59 54c286d feat(data/{nat,int,rat}/cast, algebra/star/basic): lemmas about `star` on casts (#12418) This also includes lemmas about `mul_opposite` on casts which are used to prove the star lemmas. The new lemmas are: * `star_nat_cast` * `star_int_cast` * `star_rat_cast` * `op_nat_cast` * `op_int_cast` * `op_rat_cast` * `unop_nat_cast` * `unop_int_cast` * `unop_rat_cast` ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem star_int_cast + theorem star_nat_cast + theorem star_rat_cast Modified src/data/int/cast.lean + theorem mul_opposite.op_int_cast + theorem mul_opposite.unop_int_cast Modified src/data/nat/cast.lean + theorem mul_opposite.op_nat_cast + theorem mul_opposite.unop_nat_cast Modified src/data/rat/cast.lean + theorem mul_opposite.op_rat_cast + theorem mul_opposite.unop_rat_cast 2022-03-03 21:31:57 9deac65 feat(ring_theory/ideal): more lemmas on ideals multiplied with submodules (#12401) These are, like #12178, split off from #12287 ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem submodule.exists_sum_of_mem_ideal_smul_span + theorem submodule.mem_smul_span + theorem submodule.smul_comap_le_comap_smul 2022-03-03 21:31:56 2fc2d1b feat(linear_algebra/clifford_algebra): lemmas about mapping submodules (#12399) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.range_neg Modified src/linear_algebra/clifford_algebra/basic.lean + theorem clifford_algebra.ι_range_map_lift + theorem clifford_algebra.ι_range_map_map Modified src/linear_algebra/clifford_algebra/conjugation.lean + def clifford_algebra.involute_equiv + def clifford_algebra.reverse_equiv + theorem clifford_algebra.ι_range_comap_involute + theorem clifford_algebra.ι_range_comap_reverse + theorem clifford_algebra.ι_range_map_involute + theorem clifford_algebra.ι_range_map_reverse 2022-03-03 21:31:55 e84c1a9 chore(linear_algebra/general_linear_group): replace coe_fn with coe in lemma statements (#12397) This way, all the lemmas are expressed in terms of `↑` and not `⇑`. This matches the approach used in `special_linear_group`. ESTIMATED CHANGES Modified src/linear_algebra/general_linear_group.lean + theorem matrix.GL_pos.coe_neg + theorem matrix.GL_pos.coe_neg_apply - theorem matrix.GL_pos_coe_neg - theorem matrix.GL_pos_neg_elt +/- theorem matrix.general_linear_group.coe_fn_eq_coe 2022-03-03 21:31:54 4503732 feat(field_theory/cardinality): cardinality of fields & localizations (#12285) ESTIMATED CHANGES Added src/field_theory/cardinality.lean + theorem fintype.is_prime_pow_card_of_field + theorem fintype.nonempty_field_iff + theorem fintype.not_is_field_of_card_not_prime_pow + theorem infinite.nonempty_field Modified src/ring_theory/localization/basic.lean + def is_localization.unique_of_zero_mem Added src/ring_theory/localization/cardinality.lean + theorem is_localization.algebra_map_surjective_of_fintype + theorem is_localization.card + theorem is_localization.card_le 2022-03-03 21:31:52 2c0fa82 feat(group_theory/free_product): the 🏓-lemma (#12210) The Ping-Pong-Lemma. If a group action of `G` on `X` so that the `H i` acts in a specific way on disjoint subsets `X i` we can prove that `lift f` is injective, and thus the image of `lift f` is isomorphic to the free product of the `H i`. Often the Ping-Pong-Lemma is stated with regard to subgroups `H i` that generate the whole group; we generalize to arbitrary group homomorphisms `f i : H i →* G` and do not require the group to be generated by the images. Usually the Ping-Pong-Lemma requires that one group `H i` has at least three elements. This condition is only needed if `# ι = 2`, and we accept `3 ≤ # ι` as an alternative. ESTIMATED CHANGES Modified src/group_theory/free_product.lean + theorem free_product.empty_of_word_prod_eq_one + theorem free_product.lift_injective_of_ping_pong: + theorem free_product.lift_word_ping_pong + theorem free_product.lift_word_prod_nontrivial_of_head_card + theorem free_product.lift_word_prod_nontrivial_of_head_eq_last + theorem free_product.lift_word_prod_nontrivial_of_not_empty + theorem free_product.lift_word_prod_nontrivial_of_other_i + theorem free_product.neword.append_head + theorem free_product.neword.append_last + theorem free_product.neword.append_prod + def free_product.neword.head + def free_product.neword.inv + theorem free_product.neword.inv_head + theorem free_product.neword.inv_last + theorem free_product.neword.inv_prod + def free_product.neword.last + def free_product.neword.mul_head + theorem free_product.neword.mul_head_head + theorem free_product.neword.mul_head_prod + theorem free_product.neword.of_word + def free_product.neword.prod + theorem free_product.neword.prod_singleton + def free_product.neword.replace_head + theorem free_product.neword.replace_head_head + theorem free_product.neword.singleton_head + theorem free_product.neword.singleton_last + def free_product.neword.to_list + theorem free_product.neword.to_list_head' + theorem free_product.neword.to_list_last' + theorem free_product.neword.to_list_ne_nil + def free_product.neword.to_word + inductive free_product.neword + theorem free_product.word.prod_empty - theorem free_product.word.prod_nil 2022-03-03 21:31:51 f549c10 feat(set_theory/cardinal_divisibility): add lemmas about divisibility in the cardinals (#12197) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.omega_le_mul_iff Added src/set_theory/cardinal_divisibility.lean + theorem cardinal.dvd_of_le_of_omega_le + theorem cardinal.is_prime_iff + theorem cardinal.is_prime_pow_iff + theorem cardinal.is_unit_iff + theorem cardinal.le_of_dvd + theorem cardinal.nat_coe_dvd_iff + theorem cardinal.nat_is_prime_iff + theorem cardinal.not_irreducible_of_omega_le + theorem cardinal.prime_of_omega_le Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.mul_eq_max' 2022-03-03 21:31:50 2a05bb3 feat(ring_theory/witt_vector): classify 1d isocrystals (#12041) To show an application of semilinear maps that are not linear or conjugate-linear, we formalized the one-dimensional version of a theorem by Dieudonné and Manin classifying the isocrystals over an algebraically closed field with positive characteristic. This work is described in a recent draft from @dupuisf , @hrmacbeth , and myself: https://arxiv.org/abs/2202.05360 ESTIMATED CHANGES Modified docs/references.bib Modified src/linear_algebra/basic.lean +/- def linear_equiv.smul_of_ne_zero Added src/ring_theory/witt_vector/frobenius_fraction_field.lean + theorem witt_vector.exists_frobenius_solution_fraction_ring + theorem witt_vector.frobenius_frobenius_rotation + def witt_vector.frobenius_rotation + theorem witt_vector.frobenius_rotation_nonzero + def witt_vector.recursion_base.solution + theorem witt_vector.recursion_base.solution_nonzero + theorem witt_vector.recursion_base.solution_pow + theorem witt_vector.recursion_base.solution_spec' + theorem witt_vector.recursion_base.solution_spec + theorem witt_vector.recursion_main.root_exists + def witt_vector.recursion_main.succ_nth_defining_poly + theorem witt_vector.recursion_main.succ_nth_defining_poly_degree + def witt_vector.recursion_main.succ_nth_val + theorem witt_vector.recursion_main.succ_nth_val_spec' + theorem witt_vector.recursion_main.succ_nth_val_spec Added src/ring_theory/witt_vector/isocrystal.lean + def witt_vector.fraction_ring.frobenius + def witt_vector.fraction_ring.frobenius_ring_hom + def witt_vector.fraction_ring.module + def witt_vector.isocrystal.frobenius + theorem witt_vector.isocrystal_classification + structure witt_vector.isocrystal_equiv + structure witt_vector.isocrystal_hom + theorem witt_vector.standard_one_dim_isocrystal.frobenius_apply + def witt_vector.standard_one_dim_isocrystal 2022-03-03 19:28:04 066ffdb chore(algebra/*): provide `non_assoc_ring` instances (#12414) ESTIMATED CHANGES Modified src/algebra/direct_sum/ring.lean Modified src/algebra/graded_monoid.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/symmetrized.lean 2022-03-03 19:28:03 5d0960b feat(data/int/basic): add three lemmas about ints, nats and int_nat_abs (#12380) [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/int.2Eto_nat_eq_zero) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.coe_nat_nonpos_iff + theorem int.to_nat_eq_zero + theorem int.to_nat_neg_nat 2022-03-03 19:28:02 cdb69d5 fix(data/set/function): do not use reducible (#12377) Reducible should only be used if the definition if it occurs as an explicit argument in a type class and must reduce during type class search, or if it is a type that should inherit instances. Propositions should only be reducible if they are trivial variants (`<` and `>` for example). These reducible attributes here will cause issues in Lean 4. In Lean 4, the simplifier unfold reducible definitions in simp lemmas. This means that tagging an `inj_on`-theorem with `@[simp]` creates the simp lemma `?a = ?b` (i.e. match anything). ESTIMATED CHANGES Modified src/data/set/function.lean +/- def set.bij_on +/- def set.inj_on +/- def set.inv_on +/- def set.left_inv_on +/- def set.maps_to +/- def set.surj_on Modified src/logic/function/basic.lean +/- def function.injective2 2022-03-03 19:28:00 363b7cd feat(algebra/ring/basic): generalize lemmas about differences of squares to non-commutative rings (#12366) This copies `mul_self_sub_mul_self` and `mul_self_eq_mul_self_iff` to the `commute` namespace, and reproves the existing lemmas in terms of the new commute lemmas. As a result, the requirements on `mul_self_sub_one` and `mul_self_eq_one_iff` and `units.inv_eq_self_iff` can be weakened from `comm_ring` to `non_unital_non_assoc_ring` or `ring`. This also replaces a few `is_domain`s with the weaker `no_zero_divisors`, since the lemmas are being moved anyway. In practice this just removes the nontriviality requirements. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem commute.mul_self_eq_mul_self_iff + theorem commute.mul_self_sub_mul_self_eq' + theorem commute.mul_self_sub_mul_self_eq +/- theorem mul_self_eq_mul_self_iff +/- theorem mul_self_eq_one_iff +/- theorem mul_self_sub_mul_self +/- theorem mul_self_sub_one +/- theorem units.inv_eq_self_iff 2022-03-03 19:27:59 e823109 chore(algebra/{group,group_with_zero}/basic): rename `div_mul_div` and `div_mul_comm` (#12365) The new name, `div_mul_div_comm` is consistent with `mul_mul_mul_comm`. Obviously this renames the additive versions too. ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean Modified src/algebra/group/basic.lean - theorem div_mul_comm + theorem div_mul_div_comm Modified src/algebra/group/prod.lean Modified src/algebra/group_with_zero/basic.lean - theorem div_mul_div + theorem div_mul_div_comm₀ Modified src/algebra/order/lattice_group.lean Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/analysis/specific_limits.lean Modified src/data/nat/basic.lean - theorem nat.div_mul_div + theorem nat.div_mul_div_comm Modified src/data/nat/prime.lean Modified src/deprecated/subfield.lean Modified src/field_theory/ratfunc.lean Modified src/field_theory/subfield.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/measure_theory/integral/mean_inequalities.lean Modified src/number_theory/cyclotomic/discriminant.lean Modified src/number_theory/liouville/liouville_with.lean 2022-03-03 19:27:58 ca7346d feat(combinatorics/simple_graph/connectivity): add walk.darts (#12360) Darts can be more convenient than edges when working with walks since they keep track of orientation. This adds the list of darts along a walk and uses this to define and prove things about edges along a walk. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.dart.edge_comp_symm + def simple_graph.dart.fst + def simple_graph.dart.snd + def simple_graph.dart_adj + theorem simple_graph.dart_edge_eq_mk_iff' + theorem simple_graph.dart_edge_eq_mk_iff Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.walk.chain'_adj_support + theorem simple_graph.walk.chain'_dart_adj_darts +/- theorem simple_graph.walk.chain_adj_support - theorem simple_graph.walk.chain_adj_support_aux + theorem simple_graph.walk.chain_dart_adj_darts + theorem simple_graph.walk.cons_map_snd_darts + theorem simple_graph.walk.dart_fst_mem_support_of_mem_darts + theorem simple_graph.walk.dart_snd_mem_support_of_mem_darts + def simple_graph.walk.darts + theorem simple_graph.walk.darts_append + theorem simple_graph.walk.darts_bypass_subset + theorem simple_graph.walk.darts_cons + theorem simple_graph.walk.darts_drop_until_subset + theorem simple_graph.walk.darts_nil + theorem simple_graph.walk.darts_nodup_of_support_nodup + theorem simple_graph.walk.darts_reverse + theorem simple_graph.walk.darts_take_until_subset + theorem simple_graph.walk.darts_to_path_subset +/- def simple_graph.walk.edges +/- theorem simple_graph.walk.edges_subset_edge_set + theorem simple_graph.walk.length_darts + theorem simple_graph.walk.map_fst_darts + theorem simple_graph.walk.map_fst_darts_append + theorem simple_graph.walk.map_snd_darts +/- theorem simple_graph.walk.mem_support_of_mem_edges + theorem simple_graph.walk.rotate_darts 2022-03-03 19:27:57 3b0111b feat(field_theory/minpoly): add minpoly_add_algebra_map and minpoly_sub_algebra_map (#12357) We add minpoly_add_algebra_map and minpoly_sub_algebra_map: the minimal polynomial of x ± a. From flt-regular ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.monic.comp + theorem polynomial.monic.comp_X_add_C + theorem polynomial.monic.comp_X_sub_C Modified src/field_theory/minpoly.lean + theorem minpoly.minpoly_add_algebra_map + theorem minpoly.minpoly_sub_algebra_map 2022-03-03 19:27:56 301a266 feat(number_theory/cyclotomic/primitive_roots): add is_primitive_root.sub_one_power_basis (#12356) We add `is_primitive_root.sub_one_power_basis`, the power basis of a cyclotomic extension given by `ζ - 1`, where `ζ ` is a primitive root of unity. From flt-regular. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/primitive_roots.lean + theorem is_primitive_root.power_basis_gen_mem_adjoin_zeta_sub_one Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/power_basis.lean + theorem power_basis.adjoin_eq_top_of_gen_mem_adjoin + theorem power_basis.adjoin_gen_eq_top 2022-03-03 19:27:55 78b323b feat(analysis/special_functions/trigonometric): inequality `tan x > x` (#12352) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/arctan_deriv.lean Modified src/analysis/special_functions/trigonometric/basic.lean - theorem real.sin_gt_sub_cube - theorem real.sin_lt Added src/analysis/special_functions/trigonometric/bounds.lean + theorem real.deriv_tan_sub_id + theorem real.lt_tan + theorem real.sin_gt_sub_cube + theorem real.sin_lt Modified src/data/real/pi/bounds.lean 2022-03-03 19:27:53 d0816c0 feat(analysis/calculus): support and cont_diff (#11976) * Add some lemmas about the support of the (f)derivative of a function * Add some equivalences for `cont_diff` ESTIMATED CHANGES Modified src/analysis/calculus/cont_diff.lean + theorem cont_diff.continuous_deriv + theorem cont_diff_at_one_iff + theorem cont_diff_one_iff_deriv + theorem cont_diff_one_iff_fderiv + theorem cont_diff_top_iff_deriv Modified src/analysis/calculus/deriv.lean + theorem deriv_eq + theorem has_compact_support.deriv + theorem support_deriv_subset Modified src/analysis/calculus/fderiv.lean + theorem fderiv_eq + theorem has_compact_support.fderiv + theorem support_fderiv_subset Modified src/data/set/lattice.lean + theorem set.antitone_bforall 2022-03-03 17:48:13 16d48d7 feat(algebra/star/basic + analysis/normed_space/star/basic): add two eq_zero/ne_zero lemmas (#12412) Added two lemmas about elements being zero or non-zero. Golf a proof. ESTIMATED CHANGES Modified src/algebra/star/basic.lean +/- theorem star_div + theorem star_eq_zero + theorem star_ne_zero Modified src/analysis/normed_space/star/basic.lean 2022-03-03 17:48:12 3fa09c2 feat(algebra/homology/homotopy): compatibilities of null_homotopic_map with composition and additive functors (#12392) ESTIMATED CHANGES Modified src/algebra/homology/homotopy.lean + theorem homotopy.comp_null_homotopic_map' + theorem homotopy.comp_null_homotopic_map + theorem homotopy.map_null_homotopic_map' + theorem homotopy.map_null_homotopic_map + theorem homotopy.null_homotopic_map'_comp +/- theorem homotopy.null_homotopic_map'_f_eq_zero + theorem homotopy.null_homotopic_map_comp +/- theorem homotopy.null_homotopic_map_f_eq_zero 2022-03-03 17:48:10 0da2d1d feat(ring_theory/polynomial/eisenstein): add mem_adjoin_of_smul_prime_pow_smul_of_minpoly_is_eiseinstein_at (#12371) We add `mem_adjoin_of_smul_prime_pow_smul_of_minpoly_is_eiseinstein_at`: let `K` be the field of fraction of an integrally closed domain `R` and let `L` be a separable extension of `K`, generated by an integral power basis `B` such that the minimal polynomial of `B.gen` is Eisenstein at `p`. Given `z : L` integral over `R`, if `p ^ n • z ∈ adjoin R {B.gen}`, then `z ∈ adjoin R {B.gen}`. Together with `algebra.discr_mul_is_integral_mem_adjoin` this result often allows to compute the ring of integers of `L`. From flt-regular ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem no_zero_smul_divisors.trans Modified src/data/finset/basic.lean + theorem finset.disjoint_range_add_left_embedding + theorem finset.disjoint_range_add_right_embedding Modified src/ring_theory/polynomial/eisenstein.lean + theorem mem_adjoin_of_dvd_coeff_of_dvd_aeval + theorem mem_adjoin_of_smul_prime_pow_smul_of_minpoly_is_eiseinstein_at + theorem mem_adjoin_of_smul_prime_smul_of_minpoly_is_eiseinstein_at 2022-03-03 17:48:08 b0cf3d7 feat(algebra/algebra/subalgebra): add a helper to promote submodules to subalgebras (#12368) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.to_submodule_to_subalgebra + theorem submodule.coe_to_subalgebra + theorem submodule.mem_to_subalgebra + def submodule.to_subalgebra + theorem submodule.to_subalgebra_mk + theorem submodule.to_subalgebra_to_submodule 2022-03-03 17:48:05 ba998da feat(algebra/order/monoid_lemmas_zero_lt): more lemmas using `pos_mul` and friends (#12355) This PR continues the `order` refactor. The added lemmas are the `\le` analogues of the `<` lemmas that are already present. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.le_of_mul_le_mul_left' + theorem zero_lt.le_of_mul_le_mul_right' + theorem zero_lt.lt_of_mul_lt_mul_left'' + theorem zero_lt.lt_of_mul_lt_mul_right'' + theorem zero_lt.mul_le_mul_iff_left + theorem zero_lt.mul_le_mul_iff_right + theorem zero_lt.mul_le_mul_left' + theorem zero_lt.mul_le_mul_right' 2022-03-03 17:48:03 5159a8f feat(simplex_category): various epi/mono lemmas (#11924) ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean + theorem simplex_category.eq_comp_δ_of_not_surjective' + theorem simplex_category.eq_comp_δ_of_not_surjective + theorem simplex_category.eq_id_of_epi + theorem simplex_category.eq_id_of_is_iso + theorem simplex_category.eq_id_of_mono + theorem simplex_category.eq_δ_of_mono + theorem simplex_category.eq_σ_comp_of_not_injective' + theorem simplex_category.eq_σ_comp_of_not_injective + theorem simplex_category.eq_σ_of_epi + theorem simplex_category.is_iso_of_bijective + theorem simplex_category.iso_eq_iso_refl + def simplex_category.order_iso_of_iso Modified src/data/fin/basic.lean + theorem fin.cast_succ_lt_iff_succ_le 2022-03-03 16:19:52 f41897d feat(dynamics/fixed_points/basic): Fixed points are a subset of the range (#12423) ESTIMATED CHANGES Modified src/dynamics/fixed_points/basic.lean + theorem function.fixed_points_subset_range 2022-03-03 16:19:50 4edf36d feat(data/nat/fib): sum of initial fragment of the Fibonacci sequence is one less than a Fibonacci number (#12416) ESTIMATED CHANGES Modified src/data/nat/fib.lean + theorem nat.fib_succ_eq_succ_sum 2022-03-03 16:19:49 59bf454 refactor(measure_theory): enable dot notation for measure.map (#12350) Refactor to allow for using dot notation with `measure.map` (was previously not possible because it was bundled as a linear map). Mirrors `measure.restrict` wrapper implementation for `measure.restrictₗ`. ESTIMATED CHANGES Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/group/measure.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measurable_embedding.ae_map_iff +/- theorem measurable_embedding.map_apply +/- theorem measurable_embedding.map_comap +/- theorem measurable_equiv.map_apply_eq_iff_map_symm_apply_eq +/- theorem measurable_equiv.map_map_symm +/- theorem measurable_equiv.map_symm_map +/- theorem measurable_equiv.restrict_map +/- theorem measure_theory.ae_of_ae_map +/- theorem measure_theory.measure.le_map_apply +/- def measure_theory.measure.map + theorem measure_theory.measure.map_add +/- theorem measure_theory.measure.map_mono + theorem measure_theory.measure.map_smul + theorem measure_theory.measure.map_zero + def measure_theory.measure.mapₗ + theorem measure_theory.measure.mapₗ_apply +/- theorem measure_theory.measure.quasi_measure_preserving.ae_map_le +/- theorem measure_theory.measure.tendsto_ae_map +/- theorem measure_theory.mem_ae_of_mem_ae_map 2022-03-03 16:19:48 c504585 fix(number_theory/number_field): make ring_of_integers_algebra not an instance (#12331) This issue has caused problems for at least two of Kevin's PhD students; it is better to remove it for now or disable it temporarily. c.f. https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/diamond.20for.20monoid.20instance.20on.20ideals ESTIMATED CHANGES Modified src/number_theory/number_field.lean + def number_field.ring_of_integers_algebra 2022-03-03 16:19:47 0ac3f9d feat(category_theory/preadditive): the category of additive functors (#12330) ESTIMATED CHANGES Modified src/category_theory/preadditive/additive_functor.lean + def category_theory.AdditiveFunctor.forget + theorem category_theory.AdditiveFunctor.forget_map + theorem category_theory.AdditiveFunctor.forget_obj + theorem category_theory.AdditiveFunctor.forget_obj_of + def category_theory.AdditiveFunctor.of + theorem category_theory.AdditiveFunctor.of_fst + def category_theory.AdditiveFunctor 2022-03-03 16:19:46 691722a feat(set_theory/ordinal): `enum` is injective (#12319) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.enum_inj 2022-03-03 16:19:45 18f53db feat(topology/metric_space/pi_nat): metric structure on product spaces (#12220) We endow the spaces `Π (n : ℕ), E n` or `Π (i : ι), E i` with various distances (not registered as instances), and use these to show that these spaces retract on their closed subsets. ESTIMATED CHANGES Added src/topology/metric_space/pi_nat.lean + theorem exists_nat_nat_continuous_surjective_of_complete_space + theorem pi_countable.dist_eq_tsum + theorem pi_countable.dist_le_dist_pi_of_dist_lt + theorem pi_countable.dist_summable + theorem pi_countable.min_dist_le_dist_pi + theorem pi_nat.Union_cylinder_update + theorem pi_nat.apply_eq_of_dist_lt + theorem pi_nat.apply_eq_of_lt_first_diff + theorem pi_nat.apply_first_diff_ne + def pi_nat.cylinder + theorem pi_nat.cylinder_anti + theorem pi_nat.cylinder_eq_cylinder_of_le_first_diff + theorem pi_nat.cylinder_eq_pi + theorem pi_nat.cylinder_longest_prefix_eq_of_longest_prefix_lt_first_diff + theorem pi_nat.cylinder_zero + theorem pi_nat.disjoint_cylinder_of_longest_prefix_lt + theorem pi_nat.dist_eq_of_ne + theorem pi_nat.dist_triangle_nonarch + theorem pi_nat.exists_disjoint_cylinder + theorem pi_nat.exists_lipschitz_retraction_of_is_closed + theorem pi_nat.exists_retraction_of_is_closed + theorem pi_nat.exists_retraction_subtype_of_is_closed + def pi_nat.first_diff + theorem pi_nat.first_diff_comm + theorem pi_nat.first_diff_le_longest_prefix + theorem pi_nat.first_diff_lt_shortest_prefix_diff + theorem pi_nat.inter_cylinder_longest_prefix_nonempty + theorem pi_nat.is_open_iff_dist + theorem pi_nat.is_topological_basis_cylinders + theorem pi_nat.lipschitz_with_one_iff_forall_dist_image_le_of_mem_cylinder + def pi_nat.longest_prefix + theorem pi_nat.mem_cylinder_comm + theorem pi_nat.mem_cylinder_first_diff + theorem pi_nat.mem_cylinder_iff + theorem pi_nat.mem_cylinder_iff_dist_le + theorem pi_nat.mem_cylinder_iff_eq + theorem pi_nat.mem_cylinder_iff_le_first_diff + def pi_nat.metric_space_nat_nat + theorem pi_nat.min_first_diff_le + theorem pi_nat.self_mem_cylinder + def pi_nat.shortest_prefix_diff + theorem pi_nat.shortest_prefix_diff_pos + theorem pi_nat.update_mem_cylinder 2022-03-03 14:50:37 8053f56 feat(ring_theory/dedekind_domain): strengthen `exist_integer_multiples` (#12184) Let `J ≠ ⊤` be an ideal in a Dedekind domain `A`, and `f ≠ 0` a finite collection of elements of `K = Frac(A)`, then we can multiply the elements of `f` by some `a : K` to find a collection of elements of `A` that is not completely contained in `J`. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean + theorem ideal.exist_integer_multiples_not_mem Modified src/ring_theory/fractional_ideal.lean + def fractional_ideal.span_finset + theorem fractional_ideal.span_finset_eq_zero + theorem fractional_ideal.span_finset_ne_zero 2022-03-03 14:50:36 4dec7b5 feat(ring_theory/ideal): `(I : ideal R) • (⊤ : submodule R M)` (#12178) Two useful lemmas on the submodule spanned by `I`-scalar multiples. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.smul_top_eq_map + theorem submodule.map_le_smul_top 2022-03-03 13:01:44 26d9d38 feat(number_theory): padic.complete_space instance (#12424) ESTIMATED CHANGES Modified src/number_theory/padics/padic_numbers.lean 2022-03-03 13:01:43 bf203b9 docs(set_theory/cofinality): Fix cofinality definition (#12421) The condition is `a ≤ b`, not `¬(b > a)`. ESTIMATED CHANGES Modified src/set_theory/cofinality.lean 2022-03-03 13:01:42 02cad2c feat(data/complex/basic): add abs_hom (#12409) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.abs_prod 2022-03-03 13:01:40 bc35902 chore(algebra/group/hom): more generic `f x ≠ 1` lemmas (#12404) * `map_ne_{one,zero}_iff` is the `not_congr` version of `map_eq_one_iff`, which was previously only available for `mul_equiv_class` * `ne_{one,zero}_of_map` is one direction of `map_ne_{one,zero}_iff` that doesn't assume injectivity ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem map_ne_one_iff + theorem ne_one_of_map Modified src/data/equiv/mul_add.lean 2022-03-03 13:01:39 ca0ff3a feat(algebra/algebra/spectrum): show the star and spectrum operations commute (#12351) This establishes the identity `(σ a)⋆ = σ a⋆` for any `a : A` where `A` is a star ring and a star module over a star add monoid `R`. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem spectrum.star_mem_resolvent_set_iff 2022-03-03 13:01:38 f7a6fe9 feat(set_theory/cofinality): Prove simple theorems on regular cardinals (#12328) ESTIMATED CHANGES Modified src/set_theory/cofinality.lean + theorem cardinal.aleph'_succ_is_regular + theorem cardinal.aleph_succ_is_regular + theorem cardinal.is_regular.cof_eq + theorem cardinal.is_regular.omega_le 2022-03-03 11:09:23 16ad25c chore(analysis/normed_space/star/basic): golf a proof (#12420) Shorten a proof using ext. ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean 2022-03-03 11:09:21 228ab96 feat(data/list/destutter): add `list.destutter` to remove chained duplicates (#11934) ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.destutter' + def list.destutter Added src/data/list/destutter.lean + theorem list.destutter'_cons + theorem list.destutter'_cons_neg + theorem list.destutter'_cons_pos + theorem list.destutter'_eq_self_iff + theorem list.destutter'_is_chain' + theorem list.destutter'_is_chain + theorem list.destutter'_ne_nil + theorem list.destutter'_nil + theorem list.destutter'_of_chain + theorem list.destutter'_singleton + theorem list.destutter'_sublist + theorem list.destutter_cons' + theorem list.destutter_cons_cons + theorem list.destutter_eq_nil + theorem list.destutter_eq_self_iff + theorem list.destutter_idem + theorem list.destutter_is_chain' + theorem list.destutter_nil + theorem list.destutter_of_chain' + theorem list.destutter_pair + theorem list.destutter_singleton + theorem list.destutter_sublist + theorem list.mem_destutter' 2022-03-03 09:29:13 46b9d05 feat(data/part): Lemmas for get on binary function instances (#12194) A variety of lemmas such as `mul_get_eq` for `part`. ESTIMATED CHANGES Modified src/data/part.lean + theorem part.append_get_eq + theorem part.div_get_eq + theorem part.inter_get_eq + theorem part.left_dom_of_append_dom + theorem part.left_dom_of_div_dom + theorem part.left_dom_of_inter_dom + theorem part.left_dom_of_mod_dom + theorem part.left_dom_of_mul_dom + theorem part.left_dom_of_sdiff_dom + theorem part.left_dom_of_union_dom + theorem part.mod_get_eq + theorem part.mul_get_eq + theorem part.right_dom_of_append_dom + theorem part.right_dom_of_div_dom + theorem part.right_dom_of_inter_dom + theorem part.right_dom_of_mod_dom + theorem part.right_dom_of_mul_dom + theorem part.right_dom_of_sdiff_dom + theorem part.right_dom_of_union_dom + theorem part.sdiff_get_eq + theorem part.union_get_eq 2022-03-03 07:35:45 9f721ba chore(logic/function/basic): add function.ne_iff (#12288) ESTIMATED CHANGES Modified src/data/fun_like/basic.lean + theorem fun_like.ne_iff Modified src/logic/function/basic.lean +/- theorem function.funext_iff + theorem function.ne_iff 2022-03-03 00:08:38 9deeddb feat(algebra/algebra/operations): `submodule.map_pow` and opposite lemmas (#12374) To prove `map_pow`, we add `submodule.map_hom` to match the very-recently-added `ideal.map_hom`. The opposite lemmas can be used to extend these results for maps that reverse multiplication, by factoring them into an `alg_hom` into the opposite type composed with `mul_opposite.op`. `(↑(op_linear_equiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ)` is really a mouthful, but the elaborator can't seem to work out the type any other way, and `.to_linear_map` appears not to be the preferred form for `simp` lemmas. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.comap_op_one + theorem submodule.comap_unop_mul + theorem submodule.comap_unop_one + theorem submodule.comap_unop_pow + def submodule.equiv_opposite - theorem submodule.map_div + def submodule.map_hom - theorem submodule.map_mul + theorem submodule.map_op_mul + theorem submodule.map_op_one + theorem submodule.map_op_pow + theorem submodule.map_unop_one 2022-03-02 22:17:15 6f74d3c chore(algebra/ring/basic): generalize lemmas to non-associative rings (#12411) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean +/- theorem ring_hom.injective_iff' +/- theorem ring_hom.injective_iff +/- def ring_hom.mk' 2022-03-02 21:08:47 ce26d75 refactor(analysis/normed_space/basic): split into normed_space and ../normed/normed_field (#12410) Splits off the sections about normed rings and fields of the file `analysis/normed_space/basic` into a new file `analysis/normed/normed_field`. ESTIMATED CHANGES Added src/analysis/normed/normed_field.lean + theorem eventually_norm_pow_le + theorem finset.norm_prod_le' + theorem finset.norm_prod_le + theorem int.norm_cast_rat + theorem int.norm_cast_real + theorem int.norm_eq_abs + theorem list.norm_prod_le' + theorem list.norm_prod_le + def matrix.normed_group + def matrix.semi_normed_group + theorem mul_left_bound + theorem mul_right_bound + theorem nnnorm_div + def nnnorm_hom + theorem nnnorm_inv + theorem nnnorm_mul + theorem nnnorm_mul_le + theorem nnnorm_norm + theorem nnnorm_nsmul_le + theorem nnnorm_one + theorem nnnorm_pow + theorem nnnorm_pow_le' + theorem nnnorm_pow_le + theorem nnnorm_prod + theorem nnnorm_zpow + theorem nnnorm_zsmul_le + theorem nnreal.coe_nat_abs + theorem nnreal.nnnorm_eq + theorem nnreal.norm_eq + theorem norm_div + def norm_hom + theorem norm_inv + theorem norm_matrix_le_iff + theorem norm_matrix_lt_iff + theorem norm_mul + theorem norm_mul_le + theorem norm_norm + theorem norm_nsmul_le + theorem norm_pow + theorem norm_pow_le' + theorem norm_pow_le + theorem norm_prod + theorem norm_zpow + theorem norm_zsmul_le + theorem normed_field.exists_lt_norm + theorem normed_field.exists_norm_lt + theorem normed_field.exists_norm_lt_one + theorem normed_field.exists_one_lt_norm + theorem normed_field.nhds_within_is_unit_ne_bot + theorem normed_field.punctured_nhds_ne_bot + theorem normed_group.tendsto_at_top' + theorem normed_group.tendsto_at_top + theorem rat.norm_cast_real + theorem real.ennnorm_eq_of_real + theorem real.nnnorm_coe_nat + theorem real.nnnorm_of_nonneg + theorem real.nnnorm_two + theorem real.norm_coe_nat + theorem real.norm_of_nonneg + theorem real.norm_of_nonpos + theorem real.norm_two + theorem real.of_real_le_ennnorm + theorem summable.mul_norm + theorem summable.mul_of_nonneg + theorem summable_mul_of_summable_norm + theorem summable_norm_sum_mul_antidiagonal_of_summable_norm + theorem summable_norm_sum_mul_range_of_summable_norm + theorem tsum_mul_tsum_eq_tsum_sum_antidiagonal_of_summable_norm + theorem tsum_mul_tsum_eq_tsum_sum_range_of_summable_norm + theorem tsum_mul_tsum_of_summable_norm + theorem units.norm_pos Modified src/analysis/normed_space/basic.lean - theorem eventually_norm_pow_le - theorem finset.norm_prod_le' - theorem finset.norm_prod_le - theorem int.norm_cast_rat - theorem int.norm_cast_real - theorem int.norm_eq_abs - theorem list.norm_prod_le' - theorem list.norm_prod_le - def matrix.normed_group - def matrix.semi_normed_group - theorem mul_left_bound - theorem mul_right_bound - theorem nnnorm_div - def nnnorm_hom - theorem nnnorm_inv - theorem nnnorm_mul - theorem nnnorm_mul_le - theorem nnnorm_norm - theorem nnnorm_nsmul_le - theorem nnnorm_one - theorem nnnorm_pow - theorem nnnorm_pow_le' - theorem nnnorm_pow_le - theorem nnnorm_prod - theorem nnnorm_zpow - theorem nnnorm_zsmul_le - theorem nnreal.coe_nat_abs - theorem nnreal.nnnorm_eq - theorem nnreal.norm_eq - theorem norm_div - def norm_hom - theorem norm_inv - theorem norm_matrix_le_iff - theorem norm_matrix_lt_iff - theorem norm_mul - theorem norm_mul_le - theorem norm_norm - theorem norm_nsmul_le - theorem norm_pow - theorem norm_pow_le' - theorem norm_pow_le - theorem norm_prod - theorem norm_zpow - theorem norm_zsmul_le - theorem normed_field.exists_lt_norm - theorem normed_field.exists_norm_lt - theorem normed_field.exists_norm_lt_one - theorem normed_field.exists_one_lt_norm - theorem normed_field.nhds_within_is_unit_ne_bot - theorem normed_field.punctured_nhds_ne_bot - theorem normed_group.tendsto_at_top' - theorem normed_group.tendsto_at_top - theorem rat.norm_cast_real - theorem real.ennnorm_eq_of_real - theorem real.nnnorm_coe_nat - theorem real.nnnorm_of_nonneg - theorem real.nnnorm_two - theorem real.norm_coe_nat - theorem real.norm_of_nonneg - theorem real.norm_of_nonpos - theorem real.norm_two - theorem real.of_real_le_ennnorm - theorem summable.mul_norm - theorem summable.mul_of_nonneg - theorem summable_mul_of_summable_norm - theorem summable_norm_sum_mul_antidiagonal_of_summable_norm - theorem summable_norm_sum_mul_range_of_summable_norm - theorem tsum_mul_tsum_eq_tsum_sum_antidiagonal_of_summable_norm - theorem tsum_mul_tsum_eq_tsum_sum_range_of_summable_norm - theorem tsum_mul_tsum_of_summable_norm - theorem units.norm_pos 2022-03-02 20:03:20 423328e chore(probability/independence): change to set notation and `measurable_set` (#12400) ESTIMATED CHANGES Modified src/measure_theory/measurable_space_def.lean Modified src/probability/independence.lean 2022-03-02 18:33:51 a283e17 feat(algebra/module/submodule_pointwise): pointwise negation (#12405) We already have pointwise negation on `add_submonoid`s (from #10451), this extends it to `submodules`. The lemmas are all copies of the add_submonoid lemmas, except for two new lemmas: * `submodule.neg_to_add_submonoid` * `submodule.neg_eq_self`, which isn't true for `add_submonoid`s Finally, we provide a `has_distrib_neg` instance; even though the negation is not cancellative, it does distribute over multiplication as expected. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/module/submodule_pointwise.lean + theorem submodule.closure_neg + theorem submodule.coe_set_neg + theorem submodule.mem_neg + theorem submodule.neg_bot + theorem submodule.neg_eq_self + theorem submodule.neg_inf + theorem submodule.neg_infi + theorem submodule.neg_le + theorem submodule.neg_le_neg + def submodule.neg_order_iso + theorem submodule.neg_sup + theorem submodule.neg_supr + theorem submodule.neg_to_add_submonoid + theorem submodule.neg_top 2022-03-02 17:49:08 90e2957 chore(measure_theory/function/egorov): rename `uniform_integrability` file to `egorov` (#12402) ESTIMATED CHANGES Modified src/measure_theory/function/convergence_in_measure.lean Renamed src/measure_theory/function/uniform_integrable.lean to src/measure_theory/function/egorov.lean 2022-03-02 14:31:45 7959d98 feat(linear_algebra/matrix.determinant): add `matrix.det_neg` (#12396) ESTIMATED CHANGES Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_neg + theorem matrix.det_neg_eq_smul +/- theorem matrix.det_smul + theorem matrix.det_smul_of_tower 2022-03-02 14:31:43 c96fb62 refactor(group_theory/*): Rename `general_commutator.lean` to `commutator.lean` (#12388) Followup to #12308. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Renamed src/group_theory/general_commutator.lean to src/group_theory/commutator.lean Modified src/group_theory/nilpotent.lean Modified src/group_theory/solvable.lean 2022-03-02 14:31:41 d00cbee feat(algebra/big_operators/basic): prod_dvd_prod_of_subset (#12383) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_dvd_prod_of_subset 2022-03-02 14:31:40 22ddf9a feat(ring_theory/ideal): `map f (I^n) = (map f I)^n` (#12370) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + def ideal.map_hom 2022-03-02 12:52:29 4e8d8f2 feat(ring_theory/unique_factorization_domain): factors of `p^k` (#12369) This is a relatively trivial application of existing lemmas, but the result is a particularly nice shape that I felt worth to add to the library. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem irreducible.normalized_factors_pow 2022-03-02 12:52:28 f191f52 chore(algebra/big_operators): generalize `map_prod` to `monoid_hom_class` (#12354) This PR generalizes the following lemmas to `(add_)monoid_hom_class`: * `map_prod`, `map_sum` * `map_multiset_prod`, `map_multiset_sum` * `map_list_prod`, `map_list_sum` * `map_finsupp_prod`, `map_finsupp_sum` I haven't removed any of the existing specialized, namespaced versions of these lemmas yet, but I have marked them as `protected` and added a docstring saying to use the generic version instead. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem map_prod - theorem monoid_hom.map_prod - theorem mul_equiv.map_prod - theorem ring_hom.map_list_prod - theorem ring_hom.map_list_sum - theorem ring_hom.map_multiset_prod - theorem ring_hom.map_multiset_sum - theorem ring_hom.map_prod - theorem ring_hom.map_sum - theorem ring_hom.unop_map_list_prod Modified src/algebra/big_operators/multiset.lean + theorem map_multiset_prod - theorem monoid_hom.map_multiset_prod +/- theorem multiset.prod_hom' +/- theorem multiset.prod_hom Modified src/algebra/polynomial/big_operators.lean +/- theorem polynomial.multiset_prod_X_sub_C_next_coeff +/- theorem polynomial.prod_X_sub_C_next_coeff Modified src/data/finsupp/basic.lean + theorem map_finsupp_prod - theorem monoid_hom.map_finsupp_prod - theorem mul_equiv.map_finsupp_prod - theorem ring_hom.map_finsupp_prod - theorem ring_hom.map_finsupp_sum Modified src/data/list/big_operators.lean +/- theorem list.prod_hom +/- theorem list.prod_map_hom + theorem map_list_prod - theorem monoid_hom.map_list_prod - theorem monoid_hom.unop_map_list_prod + theorem unop_map_list_prod Modified src/data/polynomial/eval.lean - theorem polynomial.map_multiset_prod - theorem polynomial.map_prod - theorem polynomial.map_sum Modified src/field_theory/splitting_field.lean Modified src/order/filter/basic.lean - theorem filter.map_prod Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/topology/list.lean 2022-03-02 10:22:02 20d9541 chore(ring_theory/localization): `localization_map_bijective` rename & `field` instance version (#12375) ESTIMATED CHANGES Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization/basic.lean + theorem field.localization_map_bijective + theorem is_field.localization_map_bijective - theorem localization_map_bijective_of_field 2022-03-02 09:30:27 35086a1 feat(probability): define conditional probability and add basic related theorems (#12344) Add the definition of conditional probability as a scaled restricted measure and prove Bayes' Theorem and other basic theorems. ESTIMATED CHANGES Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.outer_measure.pos_of_subset_ne_zero Added src/probability/conditional.lean + def probability_theory.cond + theorem probability_theory.cond_apply + theorem probability_theory.cond_cond_eq_cond_inter + theorem probability_theory.cond_eq_inv_mul_cond_mul + theorem probability_theory.cond_is_probability_measure + theorem probability_theory.cond_mul_eq_inter + theorem probability_theory.cond_pos_of_inter_ne_zero + theorem probability_theory.cond_univ + theorem probability_theory.inter_pos_of_cond_ne_zero 2022-03-02 07:46:20 1eebec5 perf(data/fintype/basic): speed up mem_of_mem_perms_of_list (#12389) This single theorem was taking twice as long as everything else in the file put together, and it was easy to fix. ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2022-03-02 07:46:19 9daa233 doc(*): fix broken markdown links (#12385) Some urls to nLab were also weird, so I replaced it with less weird ones. The `MM91` reference was presumably intended to reference `MM92`. ESTIMATED CHANGES Modified src/algebra/group/freiman.lean Modified src/category_theory/category/PartialFun.lean Modified src/category_theory/category/Twop.lean Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/spaces.lean Modified src/data/nat/sqrt.lean Modified src/data/two_pointing.lean Modified src/order/category/DistribLattice.lean Modified src/order/category/Lattice.lean Modified src/order/complete_boolean_algebra.lean 2022-03-02 07:46:18 b77ff23 feat(algebra/ring): add non-unital and non-associative rings (#12300) Following up on #11124. The longer term goal is to develop C^* algebras, where non-unital algebras are an essential part of the theory. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean Modified src/algebra/ring/opposite.lean Modified src/algebra/ring/pi.lean Modified src/algebra/ring/prod.lean Modified src/algebra/ring/ulift.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/finsupp/pointwise.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/splitting_field.lean Modified src/number_theory/padics/padic_integers.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/witt_vector/discrete_valuation_ring.lean 2022-03-02 06:23:49 fefe359 feat(set_theory/principal): prove theorems about additive principal ordinals (#11704) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.aleph_is_principal_add + theorem cardinal.ord_is_principal_add Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.add_absorp - theorem ordinal.add_absorp_iff - theorem ordinal.add_lt_omega - theorem ordinal.add_lt_omega_opow - theorem ordinal.add_omega - theorem ordinal.add_omega_opow - theorem ordinal.mul_omega_opow_opow Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/principal.lean + theorem ordinal.add_absorp + theorem ordinal.add_omega + theorem ordinal.add_omega_opow + theorem ordinal.mul_principal_add_is_principal_add + theorem ordinal.opow_principal_add_is_principal_add + theorem ordinal.principal_add_iff_add_left_eq_self + theorem ordinal.principal_add_iff_zero_or_omega_power + theorem ordinal.principal_add_is_limit + theorem ordinal.principal_add_of_le_one + theorem ordinal.principal_add_omega + theorem ordinal.principal_add_omega_opow + theorem ordinal.principal_add_one 2022-03-02 04:09:19 a9902d5 feat(algebra/divisibility): generalise basic facts to semigroups (#12325) ESTIMATED CHANGES Modified src/algebra/divisibility.lean Modified src/algebra/gcd_monoid/basic.lean +/- theorem dvd_lcm_left +/- theorem dvd_lcm_right Modified src/number_theory/padics/ring_homs.lean 2022-03-02 02:44:42 cc9de07 feat(algebra/star): replace star_monoid with star_semigroup (#12299) In preparation for allowing non-unital C^* algebras, replace star_monoid with star_semigroup. ESTIMATED CHANGES Modified src/algebra/star/basic.lean +/- theorem is_unit.star +/- theorem is_unit_star +/- theorem star_div +/- theorem star_inv +/- theorem star_inv_of - def star_monoid_of_comm +/- theorem star_mul' +/- def star_mul_aut +/- def star_mul_equiv +/- theorem star_mul_self_nonneg' +/- theorem star_mul_self_nonneg +/- theorem star_one +/- theorem star_pow +/- theorem star_prod +/- def star_ring_equiv + def star_semigroup_of_comm +/- theorem star_zpow Modified src/algebra/star/chsh.lean +/- structure is_CHSH_tuple Modified src/algebra/star/free.lean Modified src/algebra/star/module.lean Modified src/algebra/star/pi.lean Modified src/algebra/star/pointwise.lean Modified src/algebra/star/unitary.lean +/- def unitary Modified src/analysis/inner_product_space/adjoint.lean Modified src/data/matrix/basic.lean +/- theorem matrix.conj_transpose_smul 2022-03-01 23:58:42 4ba9098 feat(algebra/euclidean_domain,data/int/basic): dvd_div_of_mul_dvd (#12382) We have a separate `int` and `euclidean_domain` version as `euclidean_domain` isn't pulled in by `int.basic`. ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.dvd_div_of_mul_dvd Modified src/data/int/basic.lean + theorem int.div_dvd_of_dvd - theorem int.div_dvd_of_ne_zero_dvd + theorem int.dvd_div_of_mul_dvd 2022-03-01 22:20:43 269280a feat(topology/bornology/basic): Define bornology (#12036) This defines bornologies and provides the basic API. A bornology on a type is a filter consisting of cobounded sets which contains the cofinite sets; bounded sets are then complements of cobounded sets. This is equivalent to the usual formulation in terms of bounded sets, but provides access to mathlib's large filter library. We provide the relevant API for bounded sets. ESTIMATED CHANGES Modified docs/references.bib Added src/topology/bornology/basic.lean + def bornology.cofinite + theorem bornology.ext_iff' + theorem bornology.ext_iff_is_bounded + theorem bornology.is_bounded.subset + theorem bornology.is_bounded.union + def bornology.is_bounded + theorem bornology.is_bounded_Union + theorem bornology.is_bounded_bUnion + theorem bornology.is_bounded_compl_iff + theorem bornology.is_bounded_def + theorem bornology.is_bounded_empty + theorem bornology.is_bounded_sUnion + def bornology.is_cobounded + theorem bornology.is_cobounded_def + def bornology.of_bounded + theorem bornology.sUnion_bounded_univ 2022-03-01 20:54:12 5c2fa35 chore(topology/algebra/valuation): add universe (#11962) ESTIMATED CHANGES Modified src/topology/algebra/valuation.lean +/- theorem valued.loc_const +/- theorem valued.subgroups_basis Modified src/topology/algebra/valued_field.lean +/- theorem valued.continuous_extension +/- theorem valued.continuous_valuation +/- theorem valued.extension_extends 2022-03-01 19:12:01 818c81f feat(ring_theory/integral_domain): finite integral domain is a field (#12376) We don't yet have Wedderburn's little theorem (on my todo list), so adding some weaker versions to tide us over. ESTIMATED CHANGES Modified src/ring_theory/integral_domain.lean - def division_ring_of_is_domain + def fintype.division_ring_of_is_domain + def fintype.field_of_domain + def fintype.group_with_zero_of_cancel + theorem fintype.is_field_of_domain - def group_with_zero_of_fintype 2022-03-01 19:11:59 130e07d chore(algebra/group/prod): `prod.swap` commutes with arithmetic (#12367) This also adds some missing `div` lemmas using `to_additive`. ESTIMATED CHANGES Modified src/algebra/group/prod.lean + theorem prod.fst_div - theorem prod.fst_sub + theorem prod.mk_div_mk - theorem prod.mk_sub_mk + theorem prod.snd_div - theorem prod.snd_sub + theorem prod.swap_div + theorem prod.swap_inv + theorem prod.swap_mul + theorem prod.swap_one Modified src/group_theory/group_action/prod.lean + theorem prod.smul_swap 2022-03-01 17:25:51 5e36e12 feat(category_theory/abelian/homology): Adds API for homology mimicking that of (co)kernels. (#12171) ESTIMATED CHANGES Added src/category_theory/abelian/homology.lean + def category_theory.abelian.homology_c + def category_theory.abelian.homology_c_to_k + def category_theory.abelian.homology_k + theorem homology.condition_ι + theorem homology.condition_π' + def homology.desc' + theorem homology.hom_from_ext + theorem homology.hom_to_ext + def homology.lift + theorem homology.lift_ι + theorem homology.map_eq_desc'_lift_left + theorem homology.map_eq_desc'_lift_right + theorem homology.map_eq_lift_desc'_left + theorem homology.map_eq_lift_desc'_right + def homology.ι + def homology.π' + theorem homology.π'_desc' + theorem homology.π'_eq_π + theorem homology.π'_map + theorem homology.π'_ι + def homology_iso_kernel_desc Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.cokernel_iso_of_eq_hom_comp_desc + theorem category_theory.limits.cokernel_iso_of_eq_inv_comp_desc + theorem category_theory.limits.kernel_iso_of_eq_hom_comp_ι + theorem category_theory.limits.kernel_iso_of_eq_inv_comp_ι + theorem category_theory.limits.lift_comp_kernel_iso_of_eq_hom + theorem category_theory.limits.lift_comp_kernel_iso_of_eq_inv + theorem category_theory.limits.π_comp_cokernel_iso_of_eq_hom + theorem category_theory.limits.π_comp_cokernel_iso_of_eq_inv 2022-03-01 17:25:49 b45657f feat(algebra/algebra/spectrum, analysis/normed_space/spectrum): prove the spectrum of any element in a complex Banach algebra is nonempty (#12115) This establishes that the spectrum of any element in a (nontrivial) complex Banach algebra is nonempty. The nontrivial assumption is necessary, as otherwise the only element is invertible. In addition, we establish some properties of the resolvent function; in particular, it tends to zero at infinity. - [x] depends on: #12095 ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean +/- theorem is_unit.smul_sub_iff_sub_inv_smul + theorem spectrum.is_unit_resolvent + theorem spectrum.units_smul_resolvent + theorem spectrum.units_smul_resolvent_self Modified src/analysis/normed_space/spectrum.lean + theorem spectrum.nonempty + theorem spectrum.norm_resolvent_le_forall 2022-03-01 17:25:48 29c84f7 feat(combinatorics/set_family/lym): Lubell-Yamamoto-Meshalkin inequalities (#11248) This proves the two local LYM inequalities, the LYM inequality and Sperner's theorem. ESTIMATED CHANGES Added src/combinatorics/set_family/lym.lean + theorem finset.card_div_choose_le_card_shadow_div_choose + theorem finset.card_mul_le_card_shadow_mul + def finset.falling + theorem finset.falling_zero_subset + theorem finset.le_card_falling_div_choose + theorem finset.mem_falling + theorem finset.sized_falling + theorem finset.slice_subset_falling + theorem finset.slice_union_shadow_falling_succ + theorem finset.sum_card_slice_div_choose_le_one + theorem is_antichain.disjoint_slice_shadow_falling + theorem is_antichain.sperner Modified src/combinatorics/set_family/shadow.lean + theorem finset.shadow_singleton_empty + theorem finset.sized_shadow_iff Modified src/data/finset/basic.lean + theorem finset.ssubset_iff_exists_insert_subset + theorem finset.ssubset_iff_exists_subset_erase Modified src/data/fintype/basic.lean + theorem finset.insert_inj_on' 2022-03-01 15:29:36 3007f24 chore(*): use `*_*_*_comm` where possible (#12372) These lemmas are quite helpful when proving `map_add` type statements; hopefully people will remember them more if they see them used in a few more places. ESTIMATED CHANGES Modified src/data/num/lemmas.lean Modified src/group_theory/free_abelian_group.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/prod.lean Modified src/tactic/omega/eq_elim.lean 2022-03-01 15:29:35 3fb051d feat(field_theory/krull_topology): added krull_topology_t2 (#11973) ESTIMATED CHANGES Modified src/data/fun_like/basic.lean + theorem fun_like.exists_ne Modified src/field_theory/krull_topology.lean + theorem intermediate_field.fixing_subgroup_is_open + theorem krull_topology_t2 + theorem subgroup.is_open_of_one_mem_interior 2022-03-01 14:22:58 5a56e46 chore(data/polynomial/monic): remove useless lemma (#12364) There is a `nontrivial` version of this lemma (`ne_zero_of_monic`) which actually has uses in the library, unlike this deleted lemma. We also tidy the proof of the lemma below. ESTIMATED CHANGES Modified src/data/polynomial/monic.lean - theorem polynomial.ne_zero_of_monic_of_zero_ne_one 2022-03-01 14:22:57 a4e936c chore(category_theory/idempotents) replaced "idempotence" by "idem" (#12362) ESTIMATED CHANGES Modified src/category_theory/idempotents/basic.lean + theorem category_theory.idempotents.idem_of_id_sub_idem - theorem category_theory.idempotents.idempotence_of_id_sub_idempotent Modified src/category_theory/idempotents/biproducts.lean Modified src/category_theory/idempotents/functor_categories.lean Modified src/category_theory/idempotents/karoubi.lean +/- def category_theory.idempotents.karoubi.decomp_id_i +/- theorem category_theory.idempotents.karoubi.id_eq +/- structure category_theory.idempotents.karoubi Modified src/category_theory/idempotents/karoubi_karoubi.lean 2022-03-01 10:36:01 1f39ada feat(linear_algebra): generalize `linear_equiv.finrank_eq` to rings (#12358) Since `finrank` doesn't assume the module is actually a vector space, neither should the statement that linear equivalences preserve it. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean +/- theorem linear_equiv.finrank_eq +/- theorem linear_equiv.finrank_map_eq 2022-03-01 07:35:56 c223a81 feat(measure_theory/function/locally_integrable): define locally integrable (#12216) * Define the locally integrable predicate * Move all results about integrability on compact sets to a new file * Rename some lemmas from `integrable_on_compact` -> `locally_integrable`, if appropriate. * Weaken some type-class assumptions (also on `is_compact_interval`) * Simplify proof of `continuous.integrable_of_has_compact_support` * Rename variables in moved lemmas to sensible names ESTIMATED CHANGES Added src/measure_theory/function/locally_integrable.lean + theorem antitone.locally_integrable + theorem antitone_on.integrable_on_compact + theorem continuous.integrable_of_has_compact_support + theorem continuous.integrable_on_Icc + theorem continuous.integrable_on_Ioc + theorem continuous.integrable_on_interval + theorem continuous.integrable_on_interval_oc + theorem continuous.locally_integrable + theorem continuous_on.integrable_on_Icc + theorem continuous_on.integrable_on_compact + theorem continuous_on.integrable_on_interval + theorem is_compact.integrable_on_of_nhds_within + theorem measure_theory.integrable.locally_integrable + theorem measure_theory.integrable_on.continuous_on_mul + theorem measure_theory.integrable_on.continuous_on_mul_of_subset + theorem measure_theory.integrable_on.mul_continuous_on + theorem measure_theory.integrable_on.mul_continuous_on_of_subset + theorem measure_theory.locally_integrable.ae_measurable + def measure_theory.locally_integrable + theorem measure_theory.locally_integrable_iff + theorem monotone.locally_integrable + theorem monotone_on.integrable_on_compact Modified src/measure_theory/integral/integrable_on.lean - theorem antitone.integrable_on_compact - theorem antitone_on.integrable_on_compact - theorem continuous.integrable_of_has_compact_support - theorem continuous.integrable_on_Icc - theorem continuous.integrable_on_Ioc - theorem continuous.integrable_on_compact - theorem continuous.integrable_on_interval - theorem continuous.integrable_on_interval_oc - theorem continuous_on.integrable_on_Icc - theorem continuous_on.integrable_on_compact - theorem continuous_on.integrable_on_interval - theorem is_compact.integrable_on_of_nhds_within - theorem measure_theory.integrable_on.continuous_on_mul - theorem measure_theory.integrable_on.continuous_on_mul_of_subset - theorem measure_theory.integrable_on.mul_continuous_on - theorem measure_theory.integrable_on.mul_continuous_on_of_subset + theorem measure_theory.integrable_on_iff_integable_of_support_subset - theorem monotone.integrable_on_compact - theorem monotone_on.integrable_on_compact Modified src/measure_theory/integral/interval_integral.lean Modified src/topology/algebra/order/compact.lean +/- theorem is_compact_interval Modified test/monotonicity.lean 2022-03-01 02:55:33 cd98967 feat(order/category/CompleteLattice): The category of complete lattices (#12348) Define `CompleteLattice`, the category of complete lattices with complete lattice homomorphisms. ESTIMATED CHANGES Added src/order/category/CompleteLattice.lean + def CompleteLattice.dual + def CompleteLattice.dual_equiv + def CompleteLattice.iso.mk + def CompleteLattice.of + def CompleteLattice + theorem CompleteLattice_dual_comp_forget_to_BoundedLattice Modified src/order/hom/complete_lattice.lean + def complete_lattice_hom.to_bounded_lattice_hom 2022-03-01 02:55:33 37885e8 feat(category_theory/idempotents): biproducts in idempotent completions (#12333) ESTIMATED CHANGES Added src/category_theory/idempotents/biproducts.lean + def category_theory.idempotents.karoubi.biproducts.bicone + def category_theory.idempotents.karoubi.complement + def category_theory.idempotents.karoubi.decomposition + theorem category_theory.idempotents.karoubi.karoubi_has_finite_biproducts 2022-03-01 01:31:29 73dd4b5 refactor(category_theory/functor): a folder for concepts directly related to functors (#12346) ESTIMATED CHANGES Modified docs/tutorial/category_theory/intro.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/category_theory/abelian/ext.lean Modified src/category_theory/adjunction/reflective.lean Modified src/category_theory/comma.lean Modified src/category_theory/concrete_category/reflects_isomorphisms.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/full_subcategory.lean Renamed src/category_theory/functor.lean to src/category_theory/functor/basic.lean Renamed src/category_theory/functor_category.lean to src/category_theory/functor/category.lean Renamed src/category_theory/const.lean to src/category_theory/functor/const.lean Renamed src/category_theory/currying.lean to src/category_theory/functor/currying.lean Added src/category_theory/functor/default.lean Renamed src/category_theory/derived.lean to src/category_theory/functor/derived.lean Renamed src/category_theory/flat_functors.lean to src/category_theory/functor/flat.lean Renamed src/category_theory/fully_faithful.lean to src/category_theory/functor/fully_faithful.lean Renamed src/category_theory/functorial.lean to src/category_theory/functor/functorial.lean Renamed src/category_theory/hom_functor.lean to src/category_theory/functor/hom.lean Renamed src/category_theory/reflects_isomorphisms.lean to src/category_theory/functor/reflects_isomorphisms.lean Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/fubini.lean Modified src/category_theory/limits/is_limit.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/basic.lean Modified src/category_theory/monoidal/center.lean Modified src/category_theory/monoidal/functor_category.lean Modified src/category_theory/monoidal/functorial.lean Modified src/category_theory/monoidal/tor.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/over.lean Modified src/category_theory/punit.lean Modified src/category_theory/sigma/basic.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/category_theory/subobject/mono_over.lean Modified src/category_theory/thin.lean Modified src/category_theory/types.lean Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean 2022-02-28 16:08:55 456898c feat(data/finsupp/basic): Version of `finsupp.prod_add_index` with weaker premises (#11353) A simpler proof of `finsupp.prod_add_index : (f + g).prod h = f.prod h * g.prod h` with weaker premises. Specifically, this only requires: * `[add_zero_class M]` rather than `[add_comm_monoid M]` * `h_zero : ∀ a ∈ f.support ∪ g.support, h a 0 = 1` rather than `h_zero : ∀a, h a 0 = 1`. * `h_add : ∀ (a ∈ f.support ∪ g.support) b₁ b₂, h a (b₁ + b₂) = h a b₁ * h a b₂` rather than `h_add : ∀ a b₁ b₂, h a (b₁ + b₂) = h a b₁ * h a b₂` (thanks to Anne Baanen for spotting this weakening). The original version has been retained and re-named to `finsupp.prod_add_index'`, since in some places this is more convenient to use. (There was already a lemma called `prod_add_index'` which appears not to have been used anywhere. This has been renamed to `prod_hom_add_index`.) Discussed in this Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Variant.20of.20finsupp.2Eprod_add_index.3F ESTIMATED CHANGES Modified src/algebra/big_operators/finsupp.lean Modified src/data/finsupp/basic.lean +/- def finsupp.lift_add_hom +/- theorem finsupp.prod_add_index' +/- theorem finsupp.prod_add_index + theorem finsupp.prod_hom_add_index - theorem finsupp.sum_add_index' + theorem finsupp.sum_hom_add_index Modified src/data/finsupp/multiset.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/nat/factorization.lean Modified src/data/polynomial/basic.lean 2022-02-28 12:46:18 1447c40 refactor(group_theory/general_commutator): Rename `general_commutator` to `subgroup.commutator` (#12308) This PR renames `general_commutator` to `subgroup.commutator`. I'll change the file name in a followup PR, so that this PR is easier to review. (This is one of the several orthogonal changes from https://github.com/leanprover-community/mathlib/pull/12134) ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Modified src/group_theory/general_commutator.lean - theorem bot_general_commutator - theorem general_commutator_bot - theorem general_commutator_comm - theorem general_commutator_containment - theorem general_commutator_def' - theorem general_commutator_def - theorem general_commutator_le - theorem general_commutator_le_inf - theorem general_commutator_le_left - theorem general_commutator_le_right - theorem general_commutator_mono - theorem general_commutator_pi_pi_le - theorem general_commutator_pi_pi_of_fintype - theorem general_commutator_prod_prod - theorem map_general_commutator + theorem subgroup.bot_commutator + theorem subgroup.commutator_bot + theorem subgroup.commutator_comm + theorem subgroup.commutator_containment + theorem subgroup.commutator_def' + theorem subgroup.commutator_def + theorem subgroup.commutator_le + theorem subgroup.commutator_le_inf + theorem subgroup.commutator_le_left + theorem subgroup.commutator_le_right + theorem subgroup.commutator_mono + theorem subgroup.commutator_pi_pi_le + theorem subgroup.commutator_pi_pi_of_fintype + theorem subgroup.commutator_prod_prod + theorem subgroup.map_commutator Modified src/group_theory/nilpotent.lean Modified src/group_theory/solvable.lean 2022-02-28 12:46:17 92cbcc3 chore(algebra): move star_ring structure on free_algebra (#12297) There's no need to have `algebra.star.basic` imported transitively into pretty much everything, just to put the `star_ring` structure on `free_algebra`, so I've moved this construction to its own file. (I was changing definitions in `algebra.star.basic` to allow for more non-unital structures, it recompiling was very painful because of this transitive dependence.) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean - theorem free_algebra.star_algebra_map - def free_algebra.star_hom - theorem free_algebra.star_ι Modified src/algebra/free_monoid.lean - theorem free_monoid.star_of - theorem free_monoid.star_one Modified src/algebra/module/linear_map.lean Added src/algebra/star/free.lean + theorem free_algebra.star_algebra_map + def free_algebra.star_hom + theorem free_algebra.star_ι + theorem free_monoid.star_of + theorem free_monoid.star_one Modified src/data/nat/factorization.lean 2022-02-28 12:46:16 9c71c0f feat(algebra/monoid_algebra/basic): add monomial_hom (#12283) Just adding one definition ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + def add_monoid_algebra.single_hom + def monoid_algebra.single_hom 2022-02-28 12:46:15 c7498d0 feat(algebra/{group/with_one,order/monoid}): equivs for `with_zero` and `with_one` (#12275) This provides: * `add_equiv.with_zero_congr : α ≃+ β → with_zero α ≃+ with_zero β` * `mul_equiv.with_one_congr : α ≃* β → with_one α ≃* with_one β` * `with_zero.to_mul_bot : with_zero (multiplicative α) ≃* multiplicative (with_bot α)` [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/with_zero.20.28multiplicative.20A.29.20.E2.89.83*.20multiplicative.20.28with_bot.20A.29/near/272980650) ESTIMATED CHANGES Modified src/algebra/group/with_one.lean + def mul_equiv.with_one_congr + theorem mul_equiv.with_one_congr_refl + theorem mul_equiv.with_one_congr_symm + theorem mul_equiv.with_one_congr_trans + theorem with_one.map_coe +/- theorem with_one.map_comp + theorem with_one.map_map Modified src/algebra/order/monoid.lean - def with_zero.ordered_add_comm_monoid + def with_zero.to_mul_bot + theorem with_zero.to_mul_bot_coe + theorem with_zero.to_mul_bot_coe_of_add + theorem with_zero.to_mul_bot_le + theorem with_zero.to_mul_bot_lt + theorem with_zero.to_mul_bot_strict_mono + theorem with_zero.to_mul_bot_symm_bot + theorem with_zero.to_mul_bot_zero 2022-02-28 12:46:14 474aecb doc(algebra,data/fun_like): small morphism documentation improvements (#11642) * The `fun_like` docs talked about a `to_fun` class, this doesn't exist (anymore). * Warn that `{one,mul,monoid,monoid_with_zero}_hom.{congr_fun,congr_arg,coe_inj,ext_iff}` has been superseded by `fun_like`. Thanks to @YaelDillies for pointing out these issues. ESTIMATED CHANGES Modified src/algebra/group/hom.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/ring/basic.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/seminorm.lean Modified src/data/fun_like/basic.lean Modified src/ring_theory/derivation.lean 2022-02-28 12:16:38 33c0a1c feat(ring_theory/dedekind_domain/ideal): add height_one_spectrum (#12244) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean + theorem is_dedekind_domain.height_one_spectrum.associates.irreducible + theorem is_dedekind_domain.height_one_spectrum.irreducible + theorem is_dedekind_domain.height_one_spectrum.prime + structure is_dedekind_domain.height_one_spectrum 2022-02-28 10:33:37 200c254 feat(algebra/algebra,data/equiv/ring): `{ring,alg}_equiv.Pi_congr_right` (#12289) We extend `{add,mul}_equiv.Pi_congr_right` to rings and algebras. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60ring_equiv.2EPi_congr_right.60 ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.Pi_congr_right + theorem alg_equiv.Pi_congr_right_refl + theorem alg_equiv.Pi_congr_right_symm + theorem alg_equiv.Pi_congr_right_trans Modified src/data/equiv/ring.lean + def ring_equiv.Pi_congr_right + theorem ring_equiv.Pi_congr_right_refl + theorem ring_equiv.Pi_congr_right_symm + theorem ring_equiv.Pi_congr_right_trans 2022-02-28 10:33:35 e700d56 feat(ring_theory/polynomial/eisenstein): add a technical lemma (#11839) A technical lemma about Eiseinstein minimal polynomials. From flt-regular ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem prime.dvd_of_pow_dvd_pow_mul_pow_of_square_not_dvd Modified src/data/nat/basic.lean + theorem nat.le_add_pred_of_pos Modified src/data/polynomial/monic.lean + theorem polynomial.degree_map_of_monic + theorem polynomial.nat_degree_map_of_monic Modified src/ring_theory/integral_closure.lean + theorem is_integral_smul Modified src/ring_theory/polynomial/eisenstein.lean + theorem dvd_coeff_zero_of_aeval_eq_prime_smul_of_minpoly_is_eiseinstein_at 2022-02-28 10:33:34 770a7ce feat(measure_theory/function/convergence_in_measure): Define convergence in measure (#11774) This PR defines convergence in measure and proves some properties about them. In particular, we prove that - convergence a.e. in a finite measure space implies convergence in measure - convergence in measure implies there exists a subsequence that converges a.e. - convergence in Lp implies convergence in measure ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/specific_limits.lean + theorem tsum_geometric_inv_two + theorem tsum_geometric_inv_two_ge Modified src/measure_theory/constructions/borel_space.lean + theorem ae_measurable_of_tendsto_metric_ae' +/- theorem ae_measurable_of_tendsto_metric_ae Added src/measure_theory/function/convergence_in_measure.lean + theorem measure_theory.exists_seq_tendsto_ae.exists_nat_measure_lt_two_inv + def measure_theory.exists_seq_tendsto_ae.seq_tendsto_ae_seq + def measure_theory.exists_seq_tendsto_ae.seq_tendsto_ae_seq_aux + theorem measure_theory.exists_seq_tendsto_ae.seq_tendsto_ae_seq_spec + theorem measure_theory.exists_seq_tendsto_ae.seq_tendsto_ae_seq_strict_mono + theorem measure_theory.exists_seq_tendsto_ae.seq_tendsto_ae_seq_succ + theorem measure_theory.tendsto_in_measure.ae_measurable + theorem measure_theory.tendsto_in_measure.congr_left + theorem measure_theory.tendsto_in_measure.congr_right + theorem measure_theory.tendsto_in_measure.exists_seq_tendsto_ae' + theorem measure_theory.tendsto_in_measure.exists_seq_tendsto_ae + theorem measure_theory.tendsto_in_measure.exists_seq_tendsto_in_measure_at_top + def measure_theory.tendsto_in_measure + theorem measure_theory.tendsto_in_measure_iff_norm + theorem measure_theory.tendsto_in_measure_of_tendsto_Lp + theorem measure_theory.tendsto_in_measure_of_tendsto_ae + theorem measure_theory.tendsto_in_measure_of_tendsto_ae_of_measurable + theorem measure_theory.tendsto_in_measure_of_tendsto_snorm + theorem measure_theory.tendsto_in_measure_of_tendsto_snorm_of_measurable + theorem measure_theory.tendsto_in_measure_of_tendsto_snorm_of_ne_top + theorem measure_theory.tendsto_in_measure_of_tendsto_snorm_top Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/topology/instances/ennreal.lean 2022-02-28 10:33:33 b25bad7 feat(archive/100-theorems-list): Partition theorem (#4259) A proof of Euler's partition theorem, from the Freek list. The proof is sorry-free but currently unpleasant, and some parts don't belong in `archive/`, so WIP for now. ESTIMATED CHANGES Added archive/100-theorems-list/45_partition.lean + theorem coeff_indicator + theorem coeff_indicator_neg + theorem coeff_indicator_pos + theorem coeff_prod_range + theorem constant_coeff_indicator + def cut + theorem cut_empty_succ + theorem cut_equiv_antidiag + theorem cut_insert + theorem cut_zero + theorem distinct_gf_prop + def indicator_series + theorem mem_cut + def mk_odd + theorem num_series' + theorem odd_gf_prop + def partial_distinct_gf + theorem partial_distinct_gf_prop + theorem partial_gf_prop + def partial_odd_gf + theorem partial_odd_gf_prop + theorem partition_theorem + theorem same_coeffs + theorem same_gf + theorem two_series Modified docs/100.yaml Modified src/algebra/big_operators/basic.lean + theorem finset.mem_sum Modified src/data/list/nat_antidiagonal.lean 2022-02-28 09:09:20 dc72624 chore(measure_theory/function/strongly_measurable): remove useless no_zero_divisors assumption (#12353) ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.support_mul_subset_left + theorem function.support_mul_subset_right Modified src/measure_theory/function/strongly_measurable.lean 2022-02-28 08:31:53 58c20c1 feat(measure_theory/group): add measures invariant under inversion/negation (#11954) * Define measures invariant under `inv` or `neg` * Prove lemmas about measures invariant under `inv` similar to the lemmas about measures invariant under `mul` * Also provide more `pi` instances in `arithmetic`. * Rename some `integral_zero...` lemmas to `integral_eq_zero...` * Reformulate `pi.is_mul_left_invariant_volume` using nondependent functions, so that type class inference can find it for `ι → ℝ`) * Add some more integration lemmas, also for multiplication ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.comp_measurable Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/group/integration.lean + theorem measure_theory.integrable.comp_div_left + theorem measure_theory.integrable.comp_div_right + theorem measure_theory.integrable.comp_inv + theorem measure_theory.integrable.comp_mul_left + theorem measure_theory.integrable.comp_mul_right + theorem measure_theory.integral_div_left_eq_self + theorem measure_theory.integral_eq_zero_of_mul_left_eq_neg + theorem measure_theory.integral_eq_zero_of_mul_right_eq_neg + theorem measure_theory.integral_inv_eq_self - theorem measure_theory.integral_zero_of_mul_left_eq_neg - theorem measure_theory.integral_zero_of_mul_right_eq_neg Modified src/measure_theory/group/measure.lean + theorem measure_theory.map_div_right_eq_self + theorem measure_theory.measure.inv_eq_self + theorem measure_theory.measure.map_div_left_eq_self + theorem measure_theory.measure.map_inv_eq_self + theorem measure_theory.measure.map_mul_right_inv_eq_self + theorem measure_theory.measure.measure_inv + theorem measure_theory.measure.measure_preimage_inv Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.integral_norm_eq_lintegral_nnnorm Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/lebesgue.lean - theorem real.map_volume_neg Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.map_id' 2022-02-28 02:34:22 f3a04ed feat(group_theory/subgroup/basic): Centralizer subgroup (#11946) This PR defines the centralizer subgroup, and provides a few basic lemmas. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + def subgroup.centralizer + theorem subgroup.centralizer_top + theorem subgroup.mem_centralizer_iff + theorem subgroup.mem_centralizer_iff_commutator_eq_one Added src/group_theory/submonoid/centralizer.lean + theorem set.add_mem_centralizer + def set.centralizer + theorem set.centralizer_eq_univ + theorem set.centralizer_subset + theorem set.centralizer_univ + theorem set.div_mem_centralizer + theorem set.div_mem_centralizer₀ + theorem set.inv_mem_centralizer + theorem set.inv_mem_centralizer₀ + theorem set.mem_centralizer_iff + theorem set.mul_mem_centralizer + theorem set.neg_mem_centralizer + theorem set.one_mem_centralizer + theorem set.zero_mem_centralizer + def submonoid.centralizer + theorem submonoid.centralizer_subset + theorem submonoid.centralizer_univ + theorem submonoid.coe_centralizer + theorem submonoid.mem_centralizer_iff 2022-02-27 23:09:46 2f86b49 doc(data/set_like/basic): tidy up docstring (#12337) Hopefully this makes the docstring slightly clearer. ESTIMATED CHANGES Modified src/data/set_like/basic.lean 2022-02-27 23:09:45 dfacfd3 chore(linear_algebra/basic): make `linear_map.id_coe` elegible for `dsimp` (#12334) `dsimp` only considers lemmas which _are_ proved by `rfl`, not ones that just _could_ be. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- theorem linear_map.id_coe Modified src/linear_algebra/finsupp.lean 2022-02-27 22:39:10 f322fa0 refactor(group_theory/solvable): Delete duplicate lemma (#12307) `map_commutator_eq_commutator_map` is a duplicate of `map_general_commutator`. (This is one of the several orthogonal changes from #12134) ESTIMATED CHANGES Modified src/group_theory/solvable.lean - theorem map_commutator_eq_commutator_map 2022-02-27 22:00:44 7f52f94 feat(analysis/complex): maximum modulus principle (#12050) ESTIMATED CHANGES Added src/analysis/complex/abs_max.lean + theorem complex.eq_on_of_eq_on_frontier + theorem complex.exists_mem_frontier_is_max_on_norm + theorem complex.is_open_set_of_mem_nhds_and_is_max_on_norm + theorem complex.norm_eq_norm_of_is_max_on_of_closed_ball_subset + theorem complex.norm_eq_on_closed_ball_of_is_max_on + theorem complex.norm_eventually_eq_of_is_local_max + theorem complex.norm_le_of_forall_mem_frontier_norm_le + theorem complex.norm_max_aux₁ + theorem complex.norm_max_aux₂ + theorem complex.norm_max_aux₃ 2022-02-27 21:28:31 b5faa34 feat(analysis/complex/liouville): prove Liouville's theorem (#12095) ESTIMATED CHANGES Added src/analysis/complex/liouville.lean + theorem complex.deriv_eq_smul_circle_integral + theorem complex.liouville_theorem_aux + theorem complex.norm_deriv_le_aux + theorem complex.norm_deriv_le_of_forall_mem_sphere_norm_le + theorem differentiable.apply_eq_apply_of_bounded + theorem differentiable.exists_const_forall_eq_of_bounded + theorem differentiable.exists_eq_const_of_bounded 2022-02-27 20:07:58 a5ffb9b feat(analysis/special_functions): little o behaviour of exp/log at infinity (#11840) from the unit-fractions project ESTIMATED CHANGES Modified src/analysis/special_functions/exp.lean + theorem real.is_o_pow_exp_at_top +/- theorem real.tendsto_div_pow_mul_exp_add_at_top +/- theorem real.tendsto_mul_exp_add_div_pow_at_top Modified src/analysis/special_functions/log.lean + theorem real.is_o_pow_log_id_at_top + theorem real.tendsto_pow_log_div_mul_add_at_top Modified src/analysis/special_functions/pow.lean 2022-02-27 16:32:35 c4cf451 fix(catgory_theory/limits): fix a typo (#12341) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/shapes/zero.lean 2022-02-27 16:04:10 8ef4331 feat(ring_theory/witt_vector): Witt vectors are a DVR (#12213) This PR adds two connected files. `mul_coeff.lean` adds an auxiliary result that's used in a few places in #12041 . One of these places is in `discrete_valuation_ring.lean`, which shows that Witt vectors over a perfect field form a DVR. ESTIMATED CHANGES Added src/ring_theory/witt_vector/discrete_valuation_ring.lean + theorem witt_vector.coe_mk_unit + theorem witt_vector.exists_eq_pow_p_mul' + theorem witt_vector.exists_eq_pow_p_mul + theorem witt_vector.irreducible + theorem witt_vector.is_unit_of_coeff_zero_ne_zero + def witt_vector.mk_unit + def witt_vector.succ_nth_val_units Modified src/ring_theory/witt_vector/identities.lean + theorem witt_vector.coeff_p + theorem witt_vector.coeff_p_one + theorem witt_vector.coeff_p_zero Added src/ring_theory/witt_vector/mul_coeff.lean + theorem witt_vector.mul_poly_of_interest_aux1 + theorem witt_vector.mul_poly_of_interest_aux2 + theorem witt_vector.mul_poly_of_interest_aux3 + theorem witt_vector.mul_poly_of_interest_aux4 + theorem witt_vector.mul_poly_of_interest_aux5 + theorem witt_vector.mul_poly_of_interest_vars + theorem witt_vector.nth_mul_coeff' + theorem witt_vector.nth_mul_coeff + def witt_vector.nth_remainder + theorem witt_vector.nth_remainder_spec + theorem witt_vector.peval_poly_of_interest' + theorem witt_vector.peval_poly_of_interest + def witt_vector.poly_of_interest + theorem witt_vector.poly_of_interest_vars + theorem witt_vector.poly_of_interest_vars_eq + def witt_vector.remainder + theorem witt_vector.remainder_vars + def witt_vector.witt_poly_prod + def witt_vector.witt_poly_prod_remainder + theorem witt_vector.witt_poly_prod_remainder_vars + theorem witt_vector.witt_poly_prod_vars 2022-02-27 15:35:55 1dfb38d doc(imo*,algebra/continued_fractions/computation): change \minus to - (#12338) Change around 14 instances of a non-standard minus to `-`. ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified archive/imo/imo2005_q4.lean Modified archive/imo/imo2011_q5.lean Modified archive/imo/imo2019_q4.lean Modified src/algebra/continued_fractions/computation/basic.lean 2022-02-27 14:12:55 00a3d02 feat(geometry/euclidean/oriented_angle): oriented angles with respect to an orientation (#12236) Add definitions and lemmas for oriented angles defined to take an orientation, instead of an orthonormal basis, as an argument. These are the versions intended to be used by most users when working with oriented angles between vectors, instead of users needing to deal with a choice of basis. Apart from the last five lemmas that relate angles and rotations for different orientations or relate them explicitly to the definitions with respect to a basis, everything is deduced directly from the corresponding lemma that takes an orthonormal basis as an argument. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/oriented_angle.lean + theorem orientation.det_rotation + theorem orientation.eq_iff_norm_eq_and_oangle_eq_zero + theorem orientation.eq_iff_norm_eq_of_oangle_eq_zero + theorem orientation.eq_iff_oangle_eq_zero_of_norm_eq + theorem orientation.eq_rotation_self_iff + theorem orientation.eq_rotation_self_iff_angle_eq_zero + theorem orientation.exists_linear_isometry_equiv_eq_of_det_pos + theorem orientation.linear_equiv_det_rotation + def orientation.oangle + theorem orientation.oangle_add + theorem orientation.oangle_add_cyc3 + theorem orientation.oangle_add_cyc3_neg_left + theorem orientation.oangle_add_cyc3_neg_right + theorem orientation.oangle_add_oangle_rev + theorem orientation.oangle_add_oangle_rev_neg_left + theorem orientation.oangle_add_oangle_rev_neg_right + theorem orientation.oangle_add_swap + theorem orientation.oangle_eq_basis_oangle + theorem orientation.oangle_eq_iff_eq_norm_div_norm_smul_rotation_of_ne_zero + theorem orientation.oangle_eq_iff_eq_norm_div_norm_smul_rotation_or_eq_zero + theorem orientation.oangle_eq_iff_eq_pos_smul_rotation_of_ne_zero + theorem orientation.oangle_eq_iff_eq_pos_smul_rotation_or_eq_zero + theorem orientation.oangle_eq_pi_sub_two_zsmul_oangle_sub_of_norm_eq + theorem orientation.oangle_eq_two_zsmul_oangle_sub_of_norm_eq + theorem orientation.oangle_eq_two_zsmul_oangle_sub_of_norm_eq_real + theorem orientation.oangle_map + theorem orientation.oangle_neg_left + theorem orientation.oangle_neg_left_eq_neg_right + theorem orientation.oangle_neg_neg + theorem orientation.oangle_neg_orientation_eq_neg + theorem orientation.oangle_neg_right + theorem orientation.oangle_neg_self_left + theorem orientation.oangle_neg_self_right + theorem orientation.oangle_rev + theorem orientation.oangle_rotation + theorem orientation.oangle_rotation_left + theorem orientation.oangle_rotation_oangle_left + theorem orientation.oangle_rotation_oangle_right + theorem orientation.oangle_rotation_right + theorem orientation.oangle_rotation_self_left + theorem orientation.oangle_rotation_self_right + theorem orientation.oangle_self + theorem orientation.oangle_smul_left_of_neg + theorem orientation.oangle_smul_left_of_pos + theorem orientation.oangle_smul_left_self_of_nonneg + theorem orientation.oangle_smul_right_of_neg + theorem orientation.oangle_smul_right_of_pos + theorem orientation.oangle_smul_right_self_of_nonneg + theorem orientation.oangle_smul_smul_self_of_nonneg + theorem orientation.oangle_sub_eq_oangle_sub_rev_of_norm_eq + theorem orientation.oangle_sub_left + theorem orientation.oangle_sub_right + theorem orientation.oangle_zero_left + theorem orientation.oangle_zero_right + def orientation.rotation + theorem orientation.rotation_eq_basis_rotation + theorem orientation.rotation_eq_self_iff + theorem orientation.rotation_eq_self_iff_angle_eq_zero + theorem orientation.rotation_neg_orientation_eq_neg + theorem orientation.rotation_oangle_eq_iff_norm_eq + theorem orientation.rotation_pi + theorem orientation.rotation_symm + theorem orientation.rotation_trans + theorem orientation.rotation_zero + theorem orientation.two_zsmul_oangle_neg_left + theorem orientation.two_zsmul_oangle_neg_right + theorem orientation.two_zsmul_oangle_neg_self_left + theorem orientation.two_zsmul_oangle_neg_self_right + theorem orientation.two_zsmul_oangle_smul_left_of_ne_zero + theorem orientation.two_zsmul_oangle_smul_left_self + theorem orientation.two_zsmul_oangle_smul_right_of_ne_zero + theorem orientation.two_zsmul_oangle_smul_right_self + theorem orientation.two_zsmul_oangle_smul_smul_self + theorem orientation.two_zsmul_oangle_sub_eq_two_zsmul_oangle_sub_of_norm_eq 2022-02-27 10:57:38 77e76ee feat(data/list/basic): add last'_append and head'_append_of_ne_nil (#12221) we already have `head'_append` and `last'_append_of_ne_nil`, and users might expect a symmetric API. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.head'_append_of_ne_nil + theorem list.last'_append 2022-02-27 09:13:42 b1c2d70 feat(logic/function/basic): not_surjective_Type (#12311) ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.not_surjective_Type 2022-02-27 08:45:41 7ae0b36 chore(category_theory/idempotents): minor suggestions (#12303) @joelriou, here are some minor suggestions on your earlier Karoubi envelope work (I wasn't around when the PR went through.) The two separate suggestions are some typos, and dropping some unnecessary proofs. ESTIMATED CHANGES Modified src/category_theory/idempotents/basic.lean Modified src/category_theory/idempotents/karoubi.lean 2022-02-27 06:00:11 07374a2 feat(set_theory/cardinal): add three_le (#12225) ESTIMATED CHANGES Modified src/data/finset/card.lean + theorem finset.le_card_sdiff Modified src/set_theory/cardinal.lean + theorem cardinal.exists_not_mem_of_length_le + theorem cardinal.three_le 2022-02-27 04:07:15 86d686c feat(category_theory/category/Groupoid): Add coercion to sort (#12324) Use coercion to type instead of `.α` ESTIMATED CHANGES Modified src/category_theory/category/Groupoid.lean + theorem category_theory.Groupoid.coe_of Modified src/topology/homotopy/fundamental_groupoid.lean +/- def fundamental_groupoid.from_top +/- def fundamental_groupoid.to_path +/- def fundamental_groupoid.to_top Modified src/topology/homotopy/product.lean +/- def fundamental_groupoid_functor.pi_iso +/- def fundamental_groupoid_functor.pi_to_pi_Top +/- def fundamental_groupoid_functor.prod_iso +/- def fundamental_groupoid_functor.prod_to_prod_Top +/- def fundamental_groupoid_functor.proj +/- def fundamental_groupoid_functor.proj_left +/- theorem fundamental_groupoid_functor.proj_left_map +/- theorem fundamental_groupoid_functor.proj_map +/- def fundamental_groupoid_functor.proj_right +/- theorem fundamental_groupoid_functor.proj_right_map 2022-02-27 04:07:14 907e5ba fix(set_theory/ordinal_arithmetic): Fix universes (#12320) `lsub_le_of_range_subset` and `lsub_eq_of_range_eq` should have had 3 universes, but they had only two. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-02-27 04:07:13 906a88b feat(data/quot): primed quotient funcs on `mk` (#12204) ESTIMATED CHANGES Modified src/data/quot.lean + theorem quotient.map'_mk 2022-02-27 02:45:05 4afb8d2 feat(set_theory/ordinal_arithmetic): Added missing theorems for `lsub` and `blsub` (#12318) These are the analogs of `lt_sup` and `lt_bsup`, respectively. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.lt_blsub_iff + theorem ordinal.lt_lsub_iff 2022-02-27 02:45:04 bb9539c chore(set_theory/ordinal): Minor golf in `card` (#12298) This was suggested by @b-mehta. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean 2022-02-27 02:45:02 b4f87d9 feat(analysis/normed_space): add `normed_space 𝕜 (uniform_space.completion E)` (#12148) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem lipschitz_with_smul Added src/analysis/normed_space/completion.lean + theorem uniform_space.completion.coe_to_complL + theorem uniform_space.completion.coe_to_complₗᵢ + theorem uniform_space.completion.norm_to_complL + def uniform_space.completion.to_complL + def uniform_space.completion.to_complₗᵢ Added src/topology/algebra/uniform_mul_action.lean + theorem uniform_continuous.const_smul + theorem uniform_space.completion.coe_smul Modified src/topology/uniform_space/completion.lean + theorem uniform_space.completion.ext' 2022-02-27 01:14:05 abf5dfc refactor(category_theory/eq_to_hom): conjugation by eq_to_hom same as heq (#12025) Xu Junyan provided this lemma for showing that `heq` gives the same as conjugation by `eq_to_hom` for equality of functor maps. I refactored `hext` using this result. Then I added a bunch of lemmas for how `heq` interacts with composition of functors and `functor.map` applied to composition of morphisms ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean + theorem category_theory.functor.conj_eq_to_hom_iff_heq + theorem category_theory.functor.hcongr_hom + theorem category_theory.functor.map_comp_heq' + theorem category_theory.functor.map_comp_heq + theorem category_theory.functor.postcomp_map_heq' + theorem category_theory.functor.postcomp_map_heq + theorem category_theory.functor.precomp_map_heq 2022-02-27 01:14:04 1fe9708 feat(group_theory/nilpotent): is_nilpotent_of_product_of_sylow_group (#11834) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem is_nilpotent_of_product_of_sylow_group +/- theorem is_p_group.is_nilpotent + theorem nilpotent_of_mul_equiv 2022-02-26 23:31:58 add068d chore(linear_algebra/orientation): split into 2 files (#12302) Move parts that don't need multilinear maps to a new file. ESTIMATED CHANGES Modified src/linear_algebra/orientation.lean - theorem eq_zero_of_same_ray_self_neg - theorem equiv_iff_same_ray - theorem equivalence_same_ray - theorem module.ray.ind - theorem module.ray.linear_equiv_smul_eq_map - def module.ray.map - theorem module.ray.map_apply - theorem module.ray.map_refl - theorem module.ray.map_symm - theorem module.ray.ne_neg_self - def module.ray.some_ray_vector - theorem module.ray.some_ray_vector_ray - def module.ray.some_vector - theorem module.ray.some_vector_ne_zero - theorem module.ray.some_vector_ray - theorem module.ray.units_smul_of_neg - theorem module.ray.units_smul_of_pos - def module.ray - theorem ray_eq_iff - theorem ray_neg - theorem ray_pos_smul - theorem ray_vector.coe_neg - theorem ray_vector.equiv_neg_iff - def ray_vector.map_linear_equiv - def ray_vector.same_ray_setoid - def ray_vector - theorem same_ray.map - theorem same_ray.neg - theorem same_ray.pos_smul_left - theorem same_ray.pos_smul_right - theorem same_ray.refl - theorem same_ray.smul - theorem same_ray.symm - theorem same_ray.trans - def same_ray - theorem same_ray_comm - theorem same_ray_iff_mem_orbit - theorem same_ray_map_iff - theorem same_ray_neg_iff - theorem same_ray_neg_smul_left_iff - theorem same_ray_neg_smul_right_iff - theorem same_ray_neg_swap - theorem same_ray_of_mem_orbit - theorem same_ray_pos_smul_left - theorem same_ray_pos_smul_right - def same_ray_setoid - theorem same_ray_setoid_eq_orbit_rel - theorem same_ray_smul_left_iff - theorem same_ray_smul_right_iff - theorem smul_ray_of_ne_zero - theorem units_inv_smul - theorem units_smul_eq_neg_iff - theorem units_smul_eq_self_iff Added src/linear_algebra/ray.lean + theorem eq_zero_of_same_ray_self_neg + theorem equiv_iff_same_ray + theorem equivalence_same_ray + theorem module.ray.ind + theorem module.ray.linear_equiv_smul_eq_map + def module.ray.map + theorem module.ray.map_apply + theorem module.ray.map_refl + theorem module.ray.map_symm + theorem module.ray.ne_neg_self + def module.ray.some_ray_vector + theorem module.ray.some_ray_vector_ray + def module.ray.some_vector + theorem module.ray.some_vector_ne_zero + theorem module.ray.some_vector_ray + theorem module.ray.units_smul_of_neg + theorem module.ray.units_smul_of_pos + def module.ray + theorem ray_eq_iff + theorem ray_neg + theorem ray_pos_smul + theorem ray_vector.coe_neg + theorem ray_vector.equiv_neg_iff + def ray_vector.map_linear_equiv + def ray_vector.same_ray_setoid + def ray_vector + theorem same_ray.map + theorem same_ray.neg + theorem same_ray.pos_smul_left + theorem same_ray.pos_smul_right + theorem same_ray.refl + theorem same_ray.smul + theorem same_ray.symm + theorem same_ray.trans + def same_ray + theorem same_ray_comm + theorem same_ray_iff_mem_orbit + theorem same_ray_map_iff + theorem same_ray_neg_iff + theorem same_ray_neg_smul_left_iff + theorem same_ray_neg_smul_right_iff + theorem same_ray_neg_swap + theorem same_ray_of_mem_orbit + theorem same_ray_pos_smul_left + theorem same_ray_pos_smul_right + def same_ray_setoid + theorem same_ray_setoid_eq_orbit_rel + theorem same_ray_smul_left_iff + theorem same_ray_smul_right_iff + theorem smul_ray_of_ne_zero + theorem units_inv_smul + theorem units_smul_eq_neg_iff + theorem units_smul_eq_self_iff 2022-02-26 23:31:57 188b371 feat(algebra/category/GroupWithZero): The category of groups with zero (#12278) Define `GroupWithZero`, the category of groups with zero with monoid with zero homs. ESTIMATED CHANGES Added src/algebra/category/GroupWithZero.lean + def GroupWithZero.iso.mk + def GroupWithZero.of + def GroupWithZero Modified src/data/equiv/mul_add.lean 2022-02-26 23:31:55 163d1a6 feat(category_theory/idempotents): idempotent completeness and functor categories (#12270) ESTIMATED CHANGES Added src/category_theory/idempotents/functor_categories.lean + def category_theory.idempotents.karoubi_functor_category_embedding.map + def category_theory.idempotents.karoubi_functor_category_embedding.obj + def category_theory.idempotents.karoubi_functor_category_embedding + theorem category_theory.idempotents.to_karoubi_comp_karoubi_functor_category_embedding Added src/category_theory/idempotents/simplicial_object.lean 2022-02-26 23:31:53 817b4c4 feat(order/category/BoundedLattice): The category of bounded lattices (#12257) Define `BoundedLattice`, the category of bounded lattices with bounded lattice homs. ESTIMATED CHANGES Added src/order/category/BoundedLattice.lean + def BoundedLattice.dual + def BoundedLattice.dual_equiv + theorem BoundedLattice.forget_Lattice_PartialOrder_eq_forget_BoundedOrder_PartialOrder + def BoundedLattice.iso.mk + def BoundedLattice.of + structure BoundedLattice + theorem BoundedLattice_dual_comp_forget_to_BoundedOrder + theorem BoundedLattice_dual_comp_forget_to_Lattice Modified src/order/hom/lattice.lean 2022-02-26 22:03:39 3d8c22f refactor(topology/compact_open): Remove `locally_compact_space` hypothesis in `continuous_map.t2_space` (#12306) This PR removes the `locally_compact_space` hypothesis in `continuous_map.t2_space`, at the cost of a longer proof. ESTIMATED CHANGES Modified src/topology/algebra/continuous_monoid_hom.lean Modified src/topology/compact_open.lean 2022-02-26 20:55:45 4cf0e60 feat(category_theory/limits): generalize has_biproduct.of_has_product (#12116) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.bicone_is_bilimit_of_colimit_cocone_of_is_colimit + def category_theory.limits.bicone_is_bilimit_of_limit_cone_of_is_limit + theorem category_theory.limits.binary_bicone.binary_cofan_inl_to_cocone + theorem category_theory.limits.binary_bicone.binary_cofan_inr_to_cocone + theorem category_theory.limits.binary_bicone.binary_fan_fst_to_cone + theorem category_theory.limits.binary_bicone.binary_fan_snd_to_cone + def category_theory.limits.binary_bicone.of_colimit_cocone + def category_theory.limits.binary_bicone.of_limit_cone + def category_theory.limits.binary_bicone_is_bilimit_of_colimit_cocone_of_is_colimit + def category_theory.limits.binary_bicone_is_bilimit_of_limit_cone_of_is_limit + theorem category_theory.limits.fst_of_is_colimit +/- theorem category_theory.limits.has_biproduct.of_has_coproduct +/- theorem category_theory.limits.has_biproduct.of_has_product + theorem category_theory.limits.inl_of_is_limit + theorem category_theory.limits.inr_of_is_limit + def category_theory.limits.is_bilimit_of_is_colimit + def category_theory.limits.is_bilimit_of_is_limit + def category_theory.limits.is_bilimit_of_total + def category_theory.limits.is_binary_bilimit_of_is_colimit + def category_theory.limits.is_binary_bilimit_of_is_limit + def category_theory.limits.is_binary_bilimit_of_total + theorem category_theory.limits.snd_of_is_colimit 2022-02-26 20:55:44 09ba530 feat(category_theory/limits): biproducts are unique up to iso (#12114) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + theorem category_theory.limits.biprod.cone_point_unique_up_to_iso_hom + theorem category_theory.limits.biprod.cone_point_unique_up_to_iso_inv + def category_theory.limits.biprod.unique_up_to_iso + theorem category_theory.limits.biproduct.cone_point_unique_up_to_iso_hom + theorem category_theory.limits.biproduct.cone_point_unique_up_to_iso_inv + def category_theory.limits.biproduct.unique_up_to_iso 2022-02-26 20:23:50 fe6ea3e feat(analysis/convex/integral): strict Jensen's inequality (#11552) ESTIMATED CHANGES Modified src/analysis/convex/integral.lean + theorem convex.average_mem_interior_of_set + theorem measure_theory.integrable.ae_eq_const_or_exists_average_ne_compl + theorem strict_concave_on.ae_eq_const_or_lt_map_average + theorem strict_convex.ae_eq_const_or_average_mem_interior + theorem strict_convex.ae_eq_const_or_norm_integral_lt_of_norm_le_const + theorem strict_convex_on.ae_eq_const_or_map_average_lt 2022-02-26 19:39:04 c8150cc feat(analysis/normed_space/add_torsor): `dist` and `line_map` (#12265) Add a few lemmas about the distance between `line_map p₁ p₂ c₁` and `line_map p₁ p₂ c₂`. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean + theorem dist_left_line_map + theorem dist_line_map_left + theorem dist_line_map_line_map + theorem dist_line_map_right + theorem dist_right_line_map + theorem lipschitz_with_line_map 2022-02-26 16:53:59 3b49fe2 feat(algebra/star/pointwise, algebra/star/basic): add pointwise star, and a few convenience lemmas (#12290) This adds a star operation to sets in the pointwise locale and establishes the basic properties. The names and proofs were taken from the corresponding ones for `inv`. A few extras were added. ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem eq_star_iff_eq_star + theorem eq_star_of_eq_star + theorem star_eq_iff_star_eq Added src/algebra/star/pointwise.lean + theorem set.Inter_star + theorem set.Union_star + theorem set.compl_star + theorem set.finite.star + theorem set.image_star + theorem set.inter_star + theorem set.mem_star + theorem set.nonempty.star + theorem set.nonempty_star + theorem set.star_empty + theorem set.star_mem_star + theorem set.star_preimage + theorem set.star_singleton + theorem set.star_subset + theorem set.star_subset_star + theorem set.star_univ + theorem set.union_star 2022-02-26 16:18:11 87fc3ea feat(analysis/normed_space/star/spectrum): prove the spectrum of a unitary element in a C*-algebra is a subset of the unit sphere (#12238) The spectrum of a unitary element in a C*-algebra is a subset of the unit sphere in the scalar field. This will be used to show that the spectrum of selfadjoint elements is real-valued. ESTIMATED CHANGES Modified src/analysis/normed_space/star/spectrum.lean + theorem spectrum.subset_circle_of_unitary + theorem unitary.spectrum_subset_circle 2022-02-26 13:23:26 0f1bc2c feat(topology,analysis): any function is continuous/differentiable on a subsingleton (#12293) Also add supporting lemmas about `is_o`/`is_O` and the `pure` filter and drop an unneeded assumption in `asymptotics.is_o_const_const_iff`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O_const_const_iff + theorem asymptotics.is_O_pure + theorem asymptotics.is_O_with_pure +/- theorem asymptotics.is_o_const_const_iff + theorem asymptotics.is_o_pure Modified src/analysis/calculus/fderiv.lean + theorem differentiable_on_empty + theorem differentiable_on_singleton +/- theorem has_fderiv_at_of_subsingleton + theorem has_fderiv_within_at_singleton + theorem set.subsingleton.differentiable_on Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/topology/continuous_on.lean + theorem continuous_on_singleton + theorem set.subsingleton.continuous_on 2022-02-26 11:40:32 bfc0584 refactor(topology,analysis): use `maps_to` in lemmas like `continuous_on.comp` (#12294) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/basic.lean Modified src/data/set/function.lean +/- theorem set.maps_to.mono + theorem set.maps_to.mono_left + theorem set.maps_to.mono_right Modified src/dynamics/omega_limit.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem model_with_corners.continuous_on_symm Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/topology/continuous_on.lean Modified src/topology/fiber_bundle.lean 2022-02-26 11:03:49 d2d6f17 feat(analysis/inner_product_space/spectrum): `has_eigenvalue_eigenvalues` (#12304) similar to the existing `has_eigenvector_eigenvector_basis` ESTIMATED CHANGES Modified src/analysis/inner_product_space/spectrum.lean + theorem inner_product_space.is_self_adjoint.has_eigenvalue_eigenvalues 2022-02-26 03:29:04 d6a8e5d feat(topology/compact_open): `simp`-lemmas for `compact_open.gen` (#12267) This PR adds some basic `simp`-lemmas for `compact_open.gen`. ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.gen_empty + theorem continuous_map.gen_inter + theorem continuous_map.gen_union + theorem continuous_map.gen_univ 2022-02-26 03:29:03 7201c3b feat(category_theory/limits): more opposite-related transformations of cones (#12165) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocone_of_cone_right_op + def category_theory.limits.cocone_of_cone_unop + def category_theory.limits.cocone_right_op_of_cone + def category_theory.limits.cocone_unop_of_cone + def category_theory.limits.cone_of_cocone_right_op + def category_theory.limits.cone_of_cocone_unop + def category_theory.limits.cone_right_op_of_cocone + def category_theory.limits.cone_unop_of_cocone Modified src/category_theory/limits/opposites.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2022-02-26 02:44:14 43fb516 doc(analysis/normed_space): fixed normed_star_monoid doc-string (#12296) ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean 2022-02-25 22:23:16 05d8188 feat(group_theory/torsion): define torsion groups (#11850) I grepped for torsion group and didn't find anything -- hopefully adding this makes sense here. ESTIMATED CHANGES Modified src/group_theory/exponent.lean +/- theorem monoid.exponent_eq_zero_iff + theorem monoid.exponent_exists_iff_ne_zero Modified src/group_theory/order_of_element.lean + theorem is_of_fin_order.quotient + theorem is_of_fin_order_iff_coe Added src/group_theory/torsion.lean + theorem exponent_exists.is_torsion + theorem is_torsion.exponent_exists + theorem is_torsion.quotient_group + theorem is_torsion.subgroup + theorem is_torsion_of_fintype + def monoid.is_torsion 2022-02-25 20:13:56 3cc9ac4 feat(analysis/normed_space/finite_dimension): add a lemma about `inf_dist` (#12282) Add a version of `exists_mem_frontier_inf_dist_compl_eq_dist` for a compact set in a real normed space. This version does not assume that the ambient space is finite dimensional. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean +/- theorem finite_dimensional_of_is_compact_closed_ball + theorem finite_dimensional_of_is_compact_closed_ball₀ + theorem is_compact.exists_mem_frontier_inf_dist_compl_eq_dist Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.inf_dist_zero_of_mem_closure 2022-02-25 18:50:04 c127fc3 chore(measure_theory/decomposition/lebesgue): tidy a proof (#12274) There's no need to go through `set_integral_re_add_im` when all we need is `integral_re`. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem is_R_or_C.im_eq_complex_im + theorem is_R_or_C.re_eq_complex_re Modified src/measure_theory/decomposition/lebesgue.lean 2022-02-25 16:56:48 6653544 feat(topology/algebra/order/extr): extr on closure (#12281) Prove `is_max_on.closure` etc ESTIMATED CHANGES Added src/topology/algebra/order/extr_closure.lean 2022-02-25 10:18:16 8c485a4 feat(order/filter/extr): add `is_*_on.comp_maps_to` (#12280) ESTIMATED CHANGES Modified src/order/filter/extr.lean + theorem is_extr_on.comp_maps_to + theorem is_max_on.comp_maps_to + theorem is_min_on.comp_maps_to 2022-02-25 07:39:47 c1443d6 feat(ring_theory/localization): random lemmata for edge cases (#12146) ESTIMATED CHANGES Modified src/logic/unique.lean + theorem unique.bijective Modified src/ring_theory/localization/basic.lean Modified src/ring_theory/localization/fraction_ring.lean 2022-02-25 07:07:50 dae1dfe feat(topology/spectral/hom): Spectral maps (#12228) Define spectral maps in three ways: * `is_spectral_map`, the unbundled predicate * `spectral_map`, the bundled type * `spectral_map_class`, the hom class The design for `is_spectral_map` matches `continuous`. The design for `spectral_map` and `spectral_map_class` follows the hom refactor. ESTIMATED CHANGES Added src/topology/spectral/hom.lean + theorem is_compact.preimage_of_open + theorem is_spectral_map.comp + theorem is_spectral_map.continuous + structure is_spectral_map + theorem is_spectral_map_id + theorem spectral_map.cancel_left + theorem spectral_map.cancel_right + theorem spectral_map.coe_comp + theorem spectral_map.coe_comp_continuous_map + theorem spectral_map.coe_id + def spectral_map.comp + theorem spectral_map.comp_apply + theorem spectral_map.comp_assoc + theorem spectral_map.comp_id + theorem spectral_map.ext + theorem spectral_map.id_apply + theorem spectral_map.id_comp + def spectral_map.to_continuous_map + theorem spectral_map.to_fun_eq_coe + structure spectral_map 2022-02-25 05:25:18 f2fdef6 feat(order/partition/equipartition): Equipartitions (#12023) Define `finpartition.is_equipartition`, a predicate for saying that the parts of a `finpartition` of a `finset` are all the same size up to a difference of `1`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton_of_subset_singleton Modified src/data/set/equitable.lean + theorem finset.equitable_on.le + theorem finset.equitable_on.le_add_one +/- theorem finset.equitable_on_iff +/- theorem finset.equitable_on_iff_le_le_add_one Added src/order/partition/equipartition.lean + theorem finpartition.bot_is_equipartition + theorem finpartition.indiscrete_is_equipartition + theorem finpartition.is_equipartition.average_le_card_part + theorem finpartition.is_equipartition.card_part_le_average_add_one + def finpartition.is_equipartition + theorem finpartition.is_equipartition_iff_card_parts_eq_average + theorem finpartition.top_is_equipartition + theorem set.subsingleton.is_equipartition Modified src/order/partition/finpartition.lean + theorem finpartition.parts_top_subset + theorem finpartition.parts_top_subsingleton 2022-02-25 03:05:10 605ea9f feat(algebra/symmetrized): Define the symmetrization of a ring (#11399) A commutative multiplication on a real or complex space can be constructed from any multiplication by "symmetrisation" i.e ``` a∘b = 1/2(ab+ba). ``` The approach taken here is inspired by `algebra.opposites`. Previously submitted as part of #11073. Will be used in https://github.com/leanprover-community/mathlib/pull/11401 ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/symmetrized.lean + theorem sym_alg.inv_of_sym + theorem sym_alg.mul_comm + theorem sym_alg.mul_def + def sym_alg.sym + theorem sym_alg.sym_add + theorem sym_alg.sym_bijective + theorem sym_alg.sym_comp_unsym + theorem sym_alg.sym_eq_one_iff + def sym_alg.sym_equiv + theorem sym_alg.sym_inj + theorem sym_alg.sym_injective + theorem sym_alg.sym_inv + theorem sym_alg.sym_mul_self + theorem sym_alg.sym_mul_sym + theorem sym_alg.sym_ne_one_iff + theorem sym_alg.sym_neg + theorem sym_alg.sym_one + theorem sym_alg.sym_smul + theorem sym_alg.sym_sub + theorem sym_alg.sym_surjective + theorem sym_alg.sym_unsym + def sym_alg.unsym + theorem sym_alg.unsym_add + theorem sym_alg.unsym_bijective + theorem sym_alg.unsym_comp_sym + theorem sym_alg.unsym_eq_one_iff + theorem sym_alg.unsym_inj + theorem sym_alg.unsym_injective + theorem sym_alg.unsym_inv + theorem sym_alg.unsym_mul + theorem sym_alg.unsym_mul_self + theorem sym_alg.unsym_ne_one_iff + theorem sym_alg.unsym_neg + theorem sym_alg.unsym_one + theorem sym_alg.unsym_smul + theorem sym_alg.unsym_sub + theorem sym_alg.unsym_surjective + theorem sym_alg.unsym_sym + def sym_alg 2022-02-24 20:01:42 f7518db chore(topology/continuous_function/bounded): add an is_central_scalar instance (#12272) This is only possible very recently now that `𝕜ᵐᵒᵖ` has a metric space instance. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean 2022-02-24 20:01:41 feb5473 chore(*): update to 3.40.0c (#12212) ESTIMATED CHANGES Modified leanpkg.toml Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/combinatorics/configuration.lean 2022-02-24 18:24:37 d3d3701 feat(analysis/mean_inequalities): AM and GM are equal on a constant tuple (#12179) The converse is also true, but I have not gotten around to proving it. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem real.arith_mean_weighted_of_constant + theorem real.geom_mean_eq_arith_mean_weighted_of_constant + theorem real.geom_mean_weighted_of_constant Modified src/analysis/special_functions/pow.lean +/- theorem real.rpow_add' +/- theorem real.rpow_add + theorem real.rpow_add_of_nonneg + theorem real.rpow_sum_of_nonneg + theorem real.rpow_sum_of_pos Modified src/data/finset/basic.lean + theorem finset.filter_nonempty_iff + theorem finset.forall_mem_cons + theorem finset.mem_of_mem_filter 2022-02-24 16:20:33 d620395 feat(topology/algebra/group): homeomorphisms for div (#12251) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + def homeomorph.div_left + def homeomorph.div_right 2022-02-24 16:20:32 ed9f73c feat(order/conditionally_complete_lattice.lean): two new lemmas (#12250) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem cinfi_set_le + theorem le_csupr_set 2022-02-24 14:39:01 0840629 test(instance_diamonds): verify that restrict_scalars produces no diamonds on the complex numbers (#12273) There is already a comment on `complex.module` that indicates an intentional solution to this diamond. ESTIMATED CHANGES Modified test/instance_diamonds.lean 2022-02-24 14:38:59 a0d2c43 feat(algebra/punit_instances): mul_semiring_action (#12271) The timeouts mentioned in the file appear to no longer occur. ESTIMATED CHANGES Modified src/algebra/punit_instances.lean 2022-02-24 14:38:57 9dca6f4 feat(topology/metric_space/lipschitz): add `set.maps_to` lemmas (#12266) ESTIMATED CHANGES Modified src/topology/metric_space/lipschitz.lean +/- theorem lipschitz_with.bounded_image +/- theorem lipschitz_with.diam_image_le + theorem lipschitz_with.dist_le_mul_of_le + theorem lipschitz_with.dist_lt_mul_of_lt + theorem lipschitz_with.edist_le_mul_of_le + theorem lipschitz_with.edist_lt_mul_of_lt + theorem lipschitz_with.maps_to_ball + theorem lipschitz_with.maps_to_closed_ball + theorem lipschitz_with.maps_to_emetric_ball + theorem lipschitz_with.maps_to_emetric_closed_ball +/- theorem lipschitz_with.nndist_le 2022-02-24 14:38:55 d011bf2 chore(measure_theory/function/uniform_integrable): replace `ℕ` by a type verifying enough assumptions (#12242) This PR does not generalize the results of the `uniform_integrable` file much, but using a generic type instead of `ℕ` makes clear where we need assumptions like `encodable`. ESTIMATED CHANGES Modified src/measure_theory/function/uniform_integrable.lean +/- theorem measure_theory.egorov.measure_inter_not_convergent_seq_eq_zero +/- theorem measure_theory.egorov.measure_not_convergent_seq_tendsto_zero +/- theorem measure_theory.egorov.mem_not_convergent_seq_iff +/- def measure_theory.egorov.not_convergent_seq +/- theorem measure_theory.egorov.not_convergent_seq_antitone +/- theorem measure_theory.egorov.not_convergent_seq_measurable_set 2022-02-24 14:38:54 34cfcd0 feat(probability/stopping): generalize `is_stopping_time.measurable_set_lt` and variants beyond `ℕ` (#12240) The lemma `is_stopping_time.measurable_set_lt` and the similar results for gt, ge and eq were written for stopping times with value in nat. We generalize those results to linear orders with the order topology. ESTIMATED CHANGES Modified src/order/bounds.lean + theorem exists_glb_Ioi + theorem exists_lub_Iio + theorem glb_Ioi_eq_self_or_Ioi_eq_Ici + theorem le_glb_Ioi + theorem lub_Iio_eq_self_or_Iio_eq_Iic + theorem lub_Iio_le Modified src/probability/stopping.lean + theorem measure_theory.filtration.const_apply +/- theorem measure_theory.is_stopping_time.add_const +/- theorem measure_theory.is_stopping_time.measurable_set_eq +/- theorem measure_theory.is_stopping_time.measurable_set_eq_le +/- theorem measure_theory.is_stopping_time.measurable_set_ge + theorem measure_theory.is_stopping_time.measurable_set_gt +/- theorem measure_theory.is_stopping_time.measurable_set_le +/- theorem measure_theory.is_stopping_time.measurable_set_lt +/- theorem measure_theory.is_stopping_time.measurable_set_lt_le + theorem measure_theory.is_stopping_time.measurable_set_lt_of_is_lub + theorem measure_theory.is_stopping_time.measurable_set_lt_of_pred +/- def measure_theory.is_stopping_time +/- theorem measure_theory.is_stopping_time_const +/- theorem measure_theory.is_stopping_time_of_measurable_set_eq +/- theorem measure_theory.measurable_set_of_filtration 2022-02-24 12:56:59 79887c9 feat(measure_theory/group/prod): generalize topological groups to measurable groups (#11933) * This fixes the gap in `[Halmos]` that I mentioned in `measure_theory.group.prod` * Thanks to @sgouezel for giving me the proof to fill that gap. * A text proof to fill the gap is [here](https://math.stackexchange.com/a/4387664/463377) ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.mul_indicator_image Modified src/measure_theory/group/measure.lean Modified src/measure_theory/group/prod.lean + theorem measure_theory.absolutely_continuous_of_is_mul_left_invariant + theorem measure_theory.ae_measure_preimage_mul_right_lt_top + theorem measure_theory.ae_measure_preimage_mul_right_lt_top_of_ne_zero + theorem measure_theory.measure_eq_div_smul +/- theorem measure_theory.measure_lintegral_div_measure + theorem measure_theory.measure_mul_lintegral_eq +/- theorem measure_theory.measure_mul_measure_eq Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/measure_space.lean + theorem measurable_equiv.sigma_finite_map + theorem measure_theory.ae_of_forall_measure_lt_top_ae_restrict' 2022-02-24 12:56:58 8429ec9 feat(topology/vector_bundle): `topological_vector_prebundle` (#8154) In this PR we implement a new standard construction for topological vector bundles: namely a structure that permits to define a vector bundle when trivializations are given as local equivalences but there is not yet a topology on the total space. The total space is hence given a topology in such a way that there is a vector bundle structure for which the local equivalences are also local homeomorphism and hence local trivializations. ESTIMATED CHANGES Modified src/data/bundle.lean +/- def bundle.proj Modified src/data/set/function.lean + theorem set.restrict_comp_cod_restrict Modified src/topology/constructions.lean + theorem continuous.cod_restrict + theorem inducing.of_cod_restrict + theorem inducing_coe Modified src/topology/fiber_bundle.lean Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.continuous_iff_continuous_comp_left Modified src/topology/vector_bundle.lean + structure topological_vector_bundle.pretrivialization + def topological_vector_bundle.trivialization.to_pretrivialization + theorem topological_vector_prebundle.continuous_total_space_mk + theorem topological_vector_prebundle.inducing_total_space_mk_of_inducing_comp + theorem topological_vector_prebundle.mem_trivialization_at_source + def topological_vector_prebundle.to_topological_fiber_prebundle + theorem topological_vector_prebundle.to_topological_vector_bundle + theorem topological_vector_prebundle.total_space_mk_preimage_source + def topological_vector_prebundle.total_space_topology + def topological_vector_prebundle.trivialization_at + structure topological_vector_prebundle 2022-02-24 11:57:32 76b1e01 feat(data/equiv/option): option_congr (#12263) This is a universe-polymorphic version of the existing `equiv_functor.map_equiv option`. ESTIMATED CHANGES Modified src/combinatorics/derangements/basic.lean Modified src/data/equiv/option.lean + def equiv.option_congr + theorem equiv.option_congr_eq_equiv_function_map_equiv + theorem equiv.option_congr_injective + theorem equiv.option_congr_refl + theorem equiv.option_congr_symm + theorem equiv.option_congr_trans - theorem equiv.remove_none_map_equiv + theorem equiv.remove_none_option_congr Modified src/group_theory/perm/option.lean + theorem equiv.option_congr_one + theorem equiv.option_congr_sign + theorem equiv.option_congr_swap - theorem equiv_functor.map_equiv_option_injective - theorem equiv_functor.option.map_none - theorem equiv_functor.option.sign - theorem map_equiv_option_one - theorem map_equiv_option_refl - theorem map_equiv_option_swap 2022-02-24 11:57:31 b8b1b57 chore(geometry/euclidean): split repetitive proof (#12209) This PR is part of the subobject refactor #11545, fixing a timeout caused by some expensive defeq checks. I introduce a new definition `simplex.orthogonal_projection_span s := orthogonal_projection (affine_span ℝ (set.range s.points))`, and extract a couple of its properties from (repetitive) parts of proofs in `circumcenter.lean`, especially `eq_or_eq_reflection_of_dist_eq`. This makes the latter proof noticeably faster, especially after commit #11750. ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean + theorem affine.simplex.coe_orthogonal_projection_vadd_smul_vsub_orthogonal_projection + theorem affine.simplex.dist_circumcenter_sq_eq_sq_sub_circumradius + theorem affine.simplex.dist_sq_eq_dist_orthogonal_projection_sq_add_dist_orthogonal_projection_sq + def affine.simplex.orthogonal_projection_span + theorem affine.simplex.orthogonal_projection_vadd_smul_vsub_orthogonal_projection 2022-02-24 10:42:14 3d97cfb feat(ring_theory/ideal,dedekind_domain): lemmas on `I ≤ I^e` and `I < I^e` (#12185) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain/ideal.lean + theorem ideal.exists_mem_pow_not_mem_pow_succ + theorem ideal.pow_lt_self + theorem ideal.strict_anti_pow Modified src/ring_theory/ideal/operations.lean + theorem ideal.pow_le_self 2022-02-24 08:26:23 9eb78a3 feat(measure_theory/function/ae_eq_fun): generalize scalar actions (#12248) This provides a more general `has_scalar` instance, along with `mul_action`, `distrib_mul_action`, `module`, `is_scalar_tower`, `smul_comm_class`, and `is_central_scalar` instances. ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_fun.lean + def measure_theory.ae_eq_fun.to_germ_monoid_hom 2022-02-24 04:27:02 f6a7ad9 feat(measure_theory/integral/average): define `measure_theory.average` (#12128) And use it to formulate Jensen's inequality. Also add Jensen's inequality for concave functions. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean + theorem concave_on.average_mem_hypograph + theorem concave_on.le_map_average + theorem concave_on.le_map_integral + theorem concave_on.le_map_set_average + theorem concave_on.set_average_mem_hypograph + theorem convex.average_mem + theorem convex.set_average_mem - theorem convex.smul_integral_mem + theorem convex_on.average_mem_epigraph + theorem convex_on.map_average_le + theorem convex_on.map_set_average_le - theorem convex_on.map_smul_integral_le + theorem convex_on.set_average_mem_epigraph Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.to_average Added src/measure_theory/integral/average.lean + theorem measure_theory.average_add_measure + theorem measure_theory.average_congr + theorem measure_theory.average_def' + theorem measure_theory.average_def + theorem measure_theory.average_eq_integral + theorem measure_theory.average_mem_open_segment_compl_self + theorem measure_theory.average_neg + theorem measure_theory.average_pair + theorem measure_theory.average_union + theorem measure_theory.average_union_mem_open_segment + theorem measure_theory.average_union_mem_segment + theorem measure_theory.average_zero + theorem measure_theory.average_zero_measure + theorem measure_theory.measure_smul_average + theorem measure_theory.measure_smul_set_average + theorem measure_theory.set_average_eq Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.tendsto_integral_approx_on_of_measurable Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.is_probability_measure_smul 2022-02-24 03:44:56 f3ee462 chore(category_theory/adjunction/opposites): Forgotten `category_theory` namespace (#12256) The forgotten `category_theory` namespace means that dot notation doesn't work on `category_theory.adjunction`. ESTIMATED CHANGES Modified src/category_theory/adjunction/opposites.lean - def adjunction.adjoint_of_op_adjoint_op - def adjunction.adjoint_of_unop_adjoint_unop - def adjunction.adjoint_op_of_adjoint_unop - def adjunction.adjoint_unop_of_adjoint_op - theorem adjunction.hom_equiv_left_adjoint_uniq_hom_app - theorem adjunction.hom_equiv_symm_right_adjoint_uniq_hom_app - def adjunction.left_adjoint_uniq - theorem adjunction.left_adjoint_uniq_hom_app_counit - theorem adjunction.left_adjoint_uniq_hom_counit - theorem adjunction.left_adjoint_uniq_inv_app - theorem adjunction.left_adjoint_uniq_refl - theorem adjunction.left_adjoint_uniq_trans - theorem adjunction.left_adjoint_uniq_trans_app - def adjunction.left_adjoints_coyoneda_equiv - def adjunction.nat_iso_of_left_adjoint_nat_iso - def adjunction.nat_iso_of_right_adjoint_nat_iso - def adjunction.op_adjoint_of_unop_adjoint - def adjunction.op_adjoint_op_of_adjoint - def adjunction.right_adjoint_uniq - theorem adjunction.right_adjoint_uniq_hom_app_counit - theorem adjunction.right_adjoint_uniq_hom_counit - theorem adjunction.right_adjoint_uniq_inv_app - theorem adjunction.right_adjoint_uniq_refl - theorem adjunction.right_adjoint_uniq_trans - theorem adjunction.right_adjoint_uniq_trans_app - theorem adjunction.unit_left_adjoint_uniq_hom - theorem adjunction.unit_left_adjoint_uniq_hom_app - theorem adjunction.unit_right_adjoint_uniq_hom - theorem adjunction.unit_right_adjoint_uniq_hom_app - def adjunction.unop_adjoint_of_op_adjoint - def adjunction.unop_adjoint_unop_of_adjoint + def category_theory.adjunction.adjoint_of_op_adjoint_op + def category_theory.adjunction.adjoint_of_unop_adjoint_unop + def category_theory.adjunction.adjoint_op_of_adjoint_unop + def category_theory.adjunction.adjoint_unop_of_adjoint_op + theorem category_theory.adjunction.hom_equiv_left_adjoint_uniq_hom_app + theorem category_theory.adjunction.hom_equiv_symm_right_adjoint_uniq_hom_app + def category_theory.adjunction.left_adjoint_uniq + theorem category_theory.adjunction.left_adjoint_uniq_hom_app_counit + theorem category_theory.adjunction.left_adjoint_uniq_hom_counit + theorem category_theory.adjunction.left_adjoint_uniq_inv_app + theorem category_theory.adjunction.left_adjoint_uniq_refl + theorem category_theory.adjunction.left_adjoint_uniq_trans + theorem category_theory.adjunction.left_adjoint_uniq_trans_app + def category_theory.adjunction.left_adjoints_coyoneda_equiv + def category_theory.adjunction.nat_iso_of_left_adjoint_nat_iso + def category_theory.adjunction.nat_iso_of_right_adjoint_nat_iso + def category_theory.adjunction.op_adjoint_of_unop_adjoint + def category_theory.adjunction.op_adjoint_op_of_adjoint + def category_theory.adjunction.right_adjoint_uniq + theorem category_theory.adjunction.right_adjoint_uniq_hom_app_counit + theorem category_theory.adjunction.right_adjoint_uniq_hom_counit + theorem category_theory.adjunction.right_adjoint_uniq_inv_app + theorem category_theory.adjunction.right_adjoint_uniq_refl + theorem category_theory.adjunction.right_adjoint_uniq_trans + theorem category_theory.adjunction.right_adjoint_uniq_trans_app + theorem category_theory.adjunction.unit_left_adjoint_uniq_hom + theorem category_theory.adjunction.unit_left_adjoint_uniq_hom_app + theorem category_theory.adjunction.unit_right_adjoint_uniq_hom + theorem category_theory.adjunction.unit_right_adjoint_uniq_hom_app + def category_theory.adjunction.unop_adjoint_of_op_adjoint + def category_theory.adjunction.unop_adjoint_unop_of_adjoint 2022-02-24 02:51:27 ed55593 feat(topology/metric_space/basic): add a few lemmas (#12259) Add `ne_of_mem_sphere`, `subsingleton_closed_ball`, and `metric.subsingleton_sphere`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.ne_of_mem_sphere + theorem metric.subsingleton_closed_ball + theorem metric.subsingleton_sphere 2022-02-24 01:18:43 158550d feat(algebra/module/basic): add `smul_right_inj` (#12252) Also golf the proof of `smul_right_injective` by reusing `add_monoid_hom.injective_iff`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem smul_right_inj 2022-02-24 01:18:42 2939c77 feat(topology/metric_space): multiplicative opposites inherit the same `(pseudo_?)(e?)metric` and `uniform_space` (#12120) This puts the "obvious" metric on the opposite type such that `dist (op x) (op y) = dist x y`. This also merges `subtype.pseudo_dist_eq` and `subtype.dist_eq` as the latter was a special case of the former. ESTIMATED CHANGES Modified src/measure_theory/function/simple_func_dense.lean Modified src/topology/metric_space/algebra.lean Modified src/topology/metric_space/basic.lean + theorem mul_opposite.dist_op + theorem mul_opposite.dist_unop + theorem mul_opposite.nndist_op + theorem mul_opposite.nndist_unop + theorem subtype.nndist_eq - theorem subtype.pseudo_dist_eq Modified src/topology/metric_space/emetric_space.lean + theorem mul_opposite.edist_op + theorem mul_opposite.edist_unop Modified src/topology/uniform_space/basic.lean + theorem mul_opposite.uniform_continuous_op + theorem mul_opposite.uniform_continuous_unop + theorem uniformity_mul_opposite 2022-02-24 00:25:00 890338d feat(analysis/normed_space/basic): use weaker assumptions (#12260) Assume `r ≠ 0` instead of `0 < r` in `interior_closed_ball` and `frontier_closed_ball`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem frontier_closed_ball +/- theorem interior_closed_ball 2022-02-24 00:24:57 620af85 refactor(topology/instances): put `ℕ`, `ℤ`, and `ℚ` in separate files (#12207) The goal here is to make `metric_space ℕ` and `metric_space ℤ` available earlier, so that I can state `has_bounded_smul ℕ A` somewhere reasonable. No lemmas have been added, deleted, or changed here - they've just been moved out of `topology/instances/real` and into `topology/instances/{nat,int,rat,real}`. The resulting import structure is: * `rat_lemmas` → `rat` * `rat` → {`real`, `int`, `nat`} * `real` → {`int`} * `nat` → {`int`} ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Added src/topology/instances/int.lean + theorem int.ball_eq_Ioo + theorem int.closed_ball_eq_Icc + theorem int.closed_embedding_coe_real + theorem int.cocompact_eq + theorem int.cofinite_eq + theorem int.dist_cast_real + theorem int.dist_eq + theorem int.pairwise_one_le_dist + theorem int.preimage_ball + theorem int.preimage_closed_ball + theorem int.uniform_embedding_coe_real Added src/topology/instances/nat.lean + theorem nat.closed_ball_eq_Icc + theorem nat.closed_embedding_coe_real + theorem nat.dist_cast_real + theorem nat.dist_coe_int + theorem nat.dist_eq + theorem nat.pairwise_one_le_dist + theorem nat.preimage_ball + theorem nat.preimage_closed_ball + theorem nat.uniform_embedding_coe_real Added src/topology/instances/rat.lean + theorem int.closed_embedding_coe_rat + theorem int.dist_cast_rat + theorem int.uniform_embedding_coe_rat + theorem nat.closed_embedding_coe_rat + theorem nat.dist_cast_rat + theorem nat.uniform_embedding_coe_rat + theorem rat.continuous_coe_real + theorem rat.continuous_mul + theorem rat.dense_embedding_coe_real + theorem rat.dist_cast + theorem rat.dist_eq + theorem rat.embedding_coe_real + theorem rat.totally_bounded_Icc + theorem rat.uniform_continuous_abs + theorem rat.uniform_continuous_add + theorem rat.uniform_continuous_coe_real + theorem rat.uniform_continuous_neg + theorem rat.uniform_embedding_coe_real Modified src/topology/instances/real.lean - theorem int.ball_eq_Ioo - theorem int.closed_ball_eq_Icc - theorem int.closed_embedding_coe_rat - theorem int.closed_embedding_coe_real - theorem int.cocompact_eq - theorem int.cofinite_eq - theorem int.dist_cast_rat - theorem int.dist_cast_real - theorem int.dist_eq - theorem int.pairwise_one_le_dist - theorem int.preimage_ball - theorem int.preimage_closed_ball - theorem int.uniform_embedding_coe_rat - theorem int.uniform_embedding_coe_real - theorem nat.closed_ball_eq_Icc - theorem nat.closed_embedding_coe_rat - theorem nat.closed_embedding_coe_real - theorem nat.dist_cast_rat - theorem nat.dist_cast_real - theorem nat.dist_coe_int - theorem nat.dist_eq - theorem nat.pairwise_one_le_dist - theorem nat.preimage_ball - theorem nat.preimage_closed_ball - theorem nat.uniform_embedding_coe_rat - theorem nat.uniform_embedding_coe_real - theorem rat.continuous_coe_real - theorem rat.continuous_mul - theorem rat.dense_embedding_coe_real - theorem rat.dist_cast - theorem rat.dist_eq - theorem rat.embedding_coe_real - theorem rat.totally_bounded_Icc - theorem rat.uniform_continuous_abs - theorem rat.uniform_continuous_add - theorem rat.uniform_continuous_coe_real - theorem rat.uniform_continuous_neg - theorem rat.uniform_embedding_coe_real Modified src/topology/instances/real_vector_space.lean Modified src/topology/uniform_space/compare_reals.lean 2022-02-23 22:56:45 eae6ae3 feat(algebra/associated): add decidable instances (#12230) Makes equality and divisibility decidable in `associates`, given that divisibility is decidable in the general case. ESTIMATED CHANGES Modified src/algebra/associated.lean 2022-02-23 21:42:45 2c74921 feat(data/pfun): A new induction on pfun.fix (#12109) A new lemma that lets you prove predicates given `b ∈ f.fix a` if `f` preserves the predicate, and it holds for values which `f` maps to `b`. ESTIMATED CHANGES Modified src/data/pfun.lean + def pfun.fix_induction' 2022-02-23 20:58:29 9b333b2 feat(topology/algebra/continuous_monoid_hom): `to_continuous_map` is a `closed_embedding` (#12217) This PR proves that `to_continuous_map : continuous_monoid_hom A B → C(A, B)` is a `closed_embedding`. This will be useful for showing that the Pontryagin dual is locally compact. ESTIMATED CHANGES Modified src/topology/algebra/continuous_monoid_hom.lean + theorem continuous_monoid_hom.is_closed_embedding 2022-02-23 17:43:01 f04ad9a feat(analysis/normed_space/star/spectrum): prove the spectral radius of a selfadjoint element in a C*-algebra is its norm. (#12211) This establishes that the spectral radius of a selfadjoint element in a C*-algebra is its (nn)norm using the Gelfand formula for the spectral radius. The same theorem for normal elements can be proven using this once normal elements are defined in mathlib. ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean + theorem cstar_ring.nnnorm_star_mul_self + theorem nnnorm_pow_two_pow_of_self_adjoint + theorem self_adjoint.nnnorm_pow_two_pow Added src/analysis/normed_space/star/spectrum.lean + theorem self_adjoint.coe_spectral_radius_eq_nnnorm + theorem spectral_radius_eq_nnnorm_of_self_adjoint 2022-02-23 16:03:57 b72cca4 chore(geometry/manifold/algebra/smooth_functions): golf module instance (#12247) ESTIMATED CHANGES Modified src/geometry/manifold/algebra/smooth_functions.lean 2022-02-23 16:03:56 3e2df83 docs(order/order_iso_nat): Added note on `exists_increasing_or_nonincreasing_subseq` (#12239) ESTIMATED CHANGES Modified src/order/order_iso_nat.lean 2022-02-23 16:03:55 162d060 feat(measure_theory/function/strongly_measurable): more basic properties of `strongly_measurable` (#12164) ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.support_const_smul_of_ne_zero Modified src/measure_theory/constructions/borel_space.lean + theorem measurable_of_tendsto_ennreal' + theorem measurable_of_tendsto_ennreal Modified src/measure_theory/function/strongly_measurable.lean + theorem measure_theory.ae_fin_strongly_measurable.ae_eq_mk + theorem measure_theory.ae_fin_strongly_measurable.fin_strongly_measurable_mk + theorem measure_theory.ae_fin_strongly_measurable_zero +/- theorem measure_theory.fin_strongly_measurable.ae_fin_strongly_measurable +/- theorem measure_theory.fin_strongly_measurable.exists_set_sigma_finite + theorem measure_theory.fin_strongly_measurable_zero + theorem measure_theory.simple_func.strongly_measurable +/- def measure_theory.strongly_measurable.approx + theorem measure_theory.strongly_measurable_const + theorem measure_theory.strongly_measurable_id Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.coe_inf + theorem measure_theory.simple_func.coe_sup 2022-02-23 16:03:54 3fe20d4 feat(ring_theory/localization): add mk' lemmas (#12081) ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean Modified src/ring_theory/localization/basic.lean + theorem is_localization.mk'_zero + theorem is_localization.ne_zero_of_mk'_ne_zero Modified src/ring_theory/localization/fraction_ring.lean + theorem is_fraction_ring.mk'_eq_one_iff_eq + theorem is_fraction_ring.mk'_eq_zero_iff_eq_zero 2022-02-23 14:40:03 0d5bed0 feat(ring_theory/graded_algebra): definitions and basic operations of homogeneous ideal (#10784) This defines homogeneous ideals (`homogeneous_ideal`) of a graded algebra. ESTIMATED CHANGES Modified src/algebra/graded_monoid.lean + theorem set_like.is_homogeneous_coe Added src/ring_theory/graded_algebra/homogeneous_ideal.lean + theorem homogeneous_ideal.coe_Inf + theorem homogeneous_ideal.coe_Sup + theorem homogeneous_ideal.coe_add + theorem homogeneous_ideal.coe_bot + theorem homogeneous_ideal.coe_inf + theorem homogeneous_ideal.coe_infi + theorem homogeneous_ideal.coe_mul + theorem homogeneous_ideal.coe_sup + theorem homogeneous_ideal.coe_supr + theorem homogeneous_ideal.coe_top + theorem homogeneous_ideal.eq_bot_iff + theorem homogeneous_ideal.eq_top_iff + theorem homogeneous_ideal.homogeneous_core_coe_eq_self + theorem homogeneous_ideal.homogeneous_hull_coe_eq_self + def homogeneous_ideal + theorem ideal.coe_homogeneous_core_le + theorem ideal.coe_homogeneous_hull_eq_supr + def ideal.homogeneous_core' + theorem ideal.homogeneous_core'_eq_Sup + theorem ideal.homogeneous_core'_le + theorem ideal.homogeneous_core'_mono + theorem ideal.homogeneous_core.gc + def ideal.homogeneous_core.gi + def ideal.homogeneous_core + theorem ideal.homogeneous_core_eq_Sup + theorem ideal.homogeneous_core_mono + theorem ideal.homogeneous_hull.gc + def ideal.homogeneous_hull.gi + def ideal.homogeneous_hull + theorem ideal.homogeneous_hull_eq_Inf + theorem ideal.homogeneous_hull_eq_supr + theorem ideal.homogeneous_hull_mono + theorem ideal.is_homogeneous.Inf + theorem ideal.is_homogeneous.Sup + theorem ideal.is_homogeneous.bot + theorem ideal.is_homogeneous.coe_homogeneous_core_eq_self + theorem ideal.is_homogeneous.homogeneous_hull_eq_self + theorem ideal.is_homogeneous.iff_eq + theorem ideal.is_homogeneous.iff_exists + theorem ideal.is_homogeneous.inf + theorem ideal.is_homogeneous.mul + theorem ideal.is_homogeneous.sup + theorem ideal.is_homogeneous.top + def ideal.is_homogeneous + theorem ideal.is_homogeneous_iff_forall_subset + theorem ideal.is_homogeneous_iff_subset_Inter + theorem ideal.is_homogeneous_span + theorem ideal.le_coe_homogeneous_hull + theorem ideal.mul_homogeneous_element_mem_of_mem Modified src/ring_theory/ideal/basic.lean + theorem ideal.mem_span + theorem ideal.span_Union + theorem ideal.span_empty + theorem ideal.span_union + theorem ideal.span_univ + theorem ideal.sum_mem 2022-02-23 13:18:22 e167efa chore(topology/instances/rat): rename to rat_lemmas (#12246) This is to make room for the changes in #12207, which claim `topology.instances.rat` for more basic results. This has to be in a separate commit to keep the history reasonable. ESTIMATED CHANGES Renamed src/topology/instances/rat.lean to src/topology/instances/rat_lemmas.lean 2022-02-23 13:18:20 c526789 feat(set_theory/ordinal_arithmetic): `is_normal.eq_iff_zero_and_succ` (#12222) Two normal functions are equal iff they're equal at `0` and successor ordinals. This is used for a few lemmas in #12202. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.is_normal.eq_iff_zero_and_succ 2022-02-23 13:18:19 7de8137 feat(topology/order/hom): Continuous order homomorphisms (#12012) Define continuous monotone functions, aka continuous order homomorphisms, aka Priestley homomorphisms, with notation `α →Co β`. ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean Added src/topology/order/hom/basic.lean + theorem continuous_order_hom.cancel_left + theorem continuous_order_hom.cancel_right + theorem continuous_order_hom.coe_comp + theorem continuous_order_hom.coe_id + def continuous_order_hom.comp + theorem continuous_order_hom.comp_apply + theorem continuous_order_hom.comp_assoc + theorem continuous_order_hom.comp_id + theorem continuous_order_hom.ext + theorem continuous_order_hom.id_apply + theorem continuous_order_hom.id_comp + def continuous_order_hom.to_continuous_map + theorem continuous_order_hom.to_fun_eq_coe + structure continuous_order_hom 2022-02-23 12:32:53 b0fbd91 feat(measure_theory/measure): generalize scalar actions (#12187) As a result of this change, many smul lemmas now also apply to `nat` and `nnreal`, which allows some lemmas to be removed. ESTIMATED CHANGES Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem ae_measurable.smul_measure +/- theorem measure_theory.ae_smul_measure - theorem measure_theory.measure.coe_nnreal_smul +/- theorem measure_theory.measure.coe_smul +/- theorem measure_theory.measure.smul_apply +/- theorem measure_theory.measure.smul_to_outer_measure Modified src/measure_theory/measure/outer_measure.lean + def measure_theory.outer_measure.coe_fn_add_monoid_hom +/- theorem measure_theory.outer_measure.coe_smul +/- theorem measure_theory.outer_measure.smul_apply +/- theorem measure_theory.outer_measure.smul_supr +/- theorem measure_theory.outer_measure.trim_smul Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/probability/independence.lean 2022-02-23 12:32:52 d01b55f split(analysis/functional/gauge): Split off `analysis.seminorm` (#12054) Move the Minkowski functional to a new file `analysis.convex.gauge`. ESTIMATED CHANGES Added src/analysis/convex/gauge.lean + theorem absorbent.gauge_set_nonempty + theorem balanced.star_convex + theorem convex.gauge_le + theorem exists_lt_of_gauge_lt + def gauge + theorem gauge_add_le + theorem gauge_ball + theorem gauge_def' + theorem gauge_def + theorem gauge_empty + theorem gauge_le_eq + theorem gauge_le_of_mem + theorem gauge_le_one_of_mem + theorem gauge_lt_eq' + theorem gauge_lt_eq + theorem gauge_lt_of_mem_smul + theorem gauge_lt_one_eq_self_of_open + theorem gauge_lt_one_of_mem_of_open + theorem gauge_lt_one_subset_self + theorem gauge_mono + theorem gauge_neg + theorem gauge_nonneg + theorem gauge_of_subset_zero + def gauge_seminorm + theorem gauge_seminorm_lt_one_of_open + theorem gauge_smul + theorem gauge_smul_left + theorem gauge_smul_left_of_nonneg + theorem gauge_smul_of_nonneg + theorem gauge_unit_ball + theorem gauge_zero' + theorem gauge_zero + theorem interior_subset_gauge_lt_one + theorem le_gauge_of_not_mem + theorem mul_gauge_le_norm + theorem one_le_gauge_of_not_mem + theorem self_subset_gauge_le_one + theorem seminorm.gauge_seminorm_ball + theorem smul_unit_ball Modified src/analysis/seminorm.lean - theorem absorbent.gauge_set_nonempty - theorem balanced.star_convex - theorem convex.gauge_le - theorem exists_lt_of_gauge_lt - def gauge - theorem gauge_add_le - theorem gauge_ball - theorem gauge_def' - theorem gauge_def - theorem gauge_empty - theorem gauge_le_eq - theorem gauge_le_of_mem - theorem gauge_le_one_of_mem - theorem gauge_lt_eq' - theorem gauge_lt_eq - theorem gauge_lt_of_mem_smul - theorem gauge_lt_one_eq_self_of_open - theorem gauge_lt_one_of_mem_of_open - theorem gauge_lt_one_subset_self - theorem gauge_mono - theorem gauge_neg - theorem gauge_nonneg - theorem gauge_of_subset_zero - def gauge_seminorm - theorem gauge_seminorm_lt_one_of_open - theorem gauge_smul - theorem gauge_smul_left - theorem gauge_smul_left_of_nonneg - theorem gauge_smul_of_nonneg - theorem gauge_unit_ball - theorem gauge_zero' - theorem gauge_zero - theorem interior_subset_gauge_lt_one - theorem le_gauge_of_not_mem - theorem mul_gauge_le_norm - theorem one_le_gauge_of_not_mem - theorem self_subset_gauge_le_one - theorem seminorm.gauge_seminorm_ball - theorem smul_unit_ball 2022-02-23 10:50:57 6179707 feat(ring_theory/unique_factorization_domain): add count_self (#12074) ESTIMATED CHANGES Modified src/data/multiset/basic.lean +/- theorem multiset.count_singleton_self Modified src/ring_theory/unique_factorization_domain.lean + theorem associates.count_self + theorem associates.factors_self 2022-02-23 10:50:56 6f1d90d feat(algebra/order/monoid_lemmas_gt_zero): introduce the type of positive elements and prove some lemmas (#11833) This PR continues the `order` refactor. Here I start working with the type of positive elements of a type with zero and lt. Combining `covariant_` and `contravariant_classes` where the "acting" type is the type of positive elements, we can formulate the condition that "multiplication by positive elements is monotone" and variants. I also prove some initial lemmas, just to give a flavour of the API. More such lemmas will come in subsequent PRs (see for instance #11782 for a few more lemmas). After that, I will start simplifying existing lemmas, by weakening their assumptions. ESTIMATED CHANGES Added src/algebra/order/monoid_lemmas_zero_lt.lean + theorem zero_lt.lt_of_mul_lt_mul_left' + theorem zero_lt.lt_of_mul_lt_mul_right' + theorem zero_lt.mul_lt_mul_iff_left + theorem zero_lt.mul_lt_mul_iff_right + theorem zero_lt.mul_lt_mul_left' + theorem zero_lt.mul_lt_mul_right' + def zero_lt.mul_pos_mono + def zero_lt.mul_pos_mono_rev + def zero_lt.mul_pos_reflect_lt + def zero_lt.mul_pos_strict_mono + def zero_lt.pos_mul_mono + def zero_lt.pos_mul_mono_rev + def zero_lt.pos_mul_reflect_lt + def zero_lt.pos_mul_strict_mono 2022-02-23 09:39:52 3e77124 refactor(topology/{separation,subset_properties}): use `set.subsingleton` (#12232) Use `set.subsingleton s` instead of `_root_.subsingleton s` in `is_preirreducible_iff_subsingleton` and `is_preirreducible_of_subsingleton`, rename the latter to `set.subsingleton.is_preirreducible`. ESTIMATED CHANGES Modified src/topology/separation.lean Modified src/topology/sober.lean Modified src/topology/subset_properties.lean - theorem is_preirreducible_of_subsingleton + theorem set.subsingleton.is_preirreducible 2022-02-23 09:39:50 dc9b8be feat(analysis/normed_space/linear_isometry): add lemmas to `linear_isometry_equiv` (#12218) Added two API lemmas to `linear_isometry_equiv` that I need elsewhere. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.trans_apply 2022-02-23 09:39:49 f44ed74 feat(ring_theory/ideal/over): `S/p` is noetherian over `R/p` if `S` is over `R` (#12183) ESTIMATED CHANGES Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/ideal/quotient.lean + theorem ideal.quotient.subsingleton_iff 2022-02-23 08:16:08 515eefa fix(algebra/star/basic): more type classes that should be props (#12235) ESTIMATED CHANGES Modified src/algebra/star/basic.lean 2022-02-23 08:16:07 98bcabb feat(group_theory/perm): add lemmas for cycles of permutations (#11955) `nodup_powers_of_cycle_of` : shows that the the iterates of an element in the support give rise to a nodup list `cycle_is_cycle_of` : asserts that a given cycle c in `f. cycle_factors_finset` is `f.cycle_of a` if c a \neq a `equiv.perm.sign_of_cycle_type` : new formula for the sign of a permutations in terms of its cycle_type — It is simpler to use (just uses number of cycles and size of support) than the earlier lemma which is renamed as equiv.perm.sign_of_cycle_type' (it could be deleted). I made one modification to make the file compile, but I need to check compatibility with the other ones. ESTIMATED CHANGES Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.sign_of_cycle_type' +/- theorem equiv.perm.sign_of_cycle_type Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.cycle_is_cycle_of + theorem equiv.perm.is_cycle_cycle_of_iff Modified src/group_theory/specific_groups/alternating.lean 2022-02-23 07:46:35 0eed60e feat(number_theory/cyclotomic/discriminant): discriminant of a p-th cyclotomic field (#11804) We compute the discriminant of a p-th cyclotomic field. From flt-regular. - [x] depends on: #11786 ESTIMATED CHANGES Added src/number_theory/cyclotomic/discriminant.lean + theorem is_cyclotomic_extension.discr_odd_prime Modified src/number_theory/cyclotomic/primitive_roots.lean - theorem is_cyclotomic_extension.is_prime_pow.norm_zeta_sub_one + theorem is_cyclotomic_extension.is_prime_pow_norm_zeta_sub_one - theorem is_cyclotomic_extension.prime_ne_two.norm_zeta_sub_one + theorem is_cyclotomic_extension.prime_ne_two_norm_zeta_sub_one - theorem is_cyclotomic_extension.prime_ne_two_pow.norm_zeta_sub_one + theorem is_cyclotomic_extension.prime_ne_two_pow_norm_zeta_sub_one - theorem is_cyclotomic_extension.two_pow.norm_zeta_sub_one + theorem is_cyclotomic_extension.two_pow_norm_zeta_sub_one - theorem is_primitive_root.prime_ne_two_pow.sub_one_norm + theorem is_primitive_root.prime_ne_two_pow_sub_one_norm - theorem is_primitive_root.sub_one_norm.is_prime_pow - theorem is_primitive_root.sub_one_norm.pow_two - theorem is_primitive_root.sub_one_norm.prime + theorem is_primitive_root.sub_one_norm_is_prime_pow + theorem is_primitive_root.sub_one_norm_pow_two + theorem is_primitive_root.sub_one_norm_prime Modified src/ring_theory/discriminant.lean + theorem algebra.discr_power_basis_eq_norm + theorem algebra.discr_power_basis_eq_prod'' + theorem algebra.discr_power_basis_eq_prod' - theorem algebra.of_power_basis_eq_norm - theorem algebra.of_power_basis_eq_prod'' - theorem algebra.of_power_basis_eq_prod' Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic_prime_pow_mul_X_pow_sub_one 2022-02-23 05:24:19 257bddf feat(algebra/algebra/spectrum): add spectral mapping for inverses (#12219) Given a unit `a` in an algebra `A` over a field `𝕜`, the equality `(spectrum 𝕜 a)⁻¹ = spectrum 𝕜 a⁻¹` holds. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem spectrum.inv_mem_iff + theorem spectrum.inv_mem_resolvent_set + theorem spectrum.ne_zero_of_mem_of_unit + theorem spectrum.zero_mem_resolvent_set_of_unit 2022-02-23 04:31:26 e77675d fix(analysis/normed_space/star/basic): make prop type classes props (#12233) The type classes `normed_star_monoid` and `cstar_ring` are now properly declared as prop. ESTIMATED CHANGES Modified src/analysis/normed_space/star/basic.lean 2022-02-23 04:01:36 264dd7f feat(model_theory/basic): Language operations (#12129) Defines language homomorphisms with `first_order.language.Lhom` Defines the sum of two languages with `first_order.language.sum` Defines `first_order.language.with_constants`, a language with added constants, abbreviated `L[[A]]`. Defines a `L[[A]].Structure` on `M` when `A : set M`. (Some of this code comes from the Flypitch project) ESTIMATED CHANGES Modified src/model_theory/basic.lean + def first_order.language.Lhom.add_constants + def first_order.language.Lhom.comp + theorem first_order.language.Lhom.comp_id + def first_order.language.Lhom.constants_on_map + theorem first_order.language.Lhom.id_comp + theorem first_order.language.Lhom.map_constants_comp_with_constants + def first_order.language.Lhom.sum_elim + def first_order.language.Lhom.sum_map + structure first_order.language.Lhom + def first_order.language.Lhom_trim_empty_constants + def first_order.language.Lhom_with_constants + def first_order.language.Lhom_with_constants_map - def first_order.language.const + def first_order.language.constants_on.Structure + def first_order.language.constants_on + theorem first_order.language.constants_on_constants + def first_order.language.constants_on_functions + theorem first_order.language.constants_on_map_is_expansion_on - theorem first_order.language.embedding.map_const + theorem first_order.language.embedding.map_constants - theorem first_order.language.equiv.map_const + theorem first_order.language.equiv.map_constants - theorem first_order.language.fun_map_eq_coe_const + theorem first_order.language.fun_map_eq_coe_constants + theorem first_order.language.fun_map_sum_inl + theorem first_order.language.fun_map_sum_inr - theorem first_order.language.hom.map_const + theorem first_order.language.hom.map_constants +/- theorem first_order.language.nonempty_of_nonempty_constants + theorem first_order.language.rel_map_sum_inl + theorem first_order.language.rel_map_sum_inr + def first_order.language.symbols + def first_order.language.with_constants Modified src/model_theory/elementary_maps.lean - theorem first_order.language.elementary_embedding.map_const + theorem first_order.language.elementary_embedding.map_constants Modified src/model_theory/substructures.lean - theorem first_order.language.substructure.const_mem + theorem first_order.language.substructure.constants_mem Modified src/model_theory/terms_and_formulas.lean 2022-02-23 00:45:57 7cc4eb9 doc(number_theory/padics/*): typo in references (#12229) Fix typos in a reference. ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/padic_numbers.lean 2022-02-23 00:45:56 4238868 chore(analysis): rename times_cont_diff (#12227) This replaces `times_cont_diff` by `cont_diff` everywhere, and the same for `times_cont_mdiff`. There is no change at all in content. See https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/times_cont_diff.20name ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/group/to_additive.lean Modified src/analysis/calculus/affine_map.lean + theorem continuous_affine_map.cont_diff - theorem continuous_affine_map.times_cont_diff Renamed src/analysis/calculus/times_cont_diff.lean to src/analysis/calculus/cont_diff.lean + theorem cont_diff.add + theorem cont_diff.comp + theorem cont_diff.comp_cont_diff_at + theorem cont_diff.comp_cont_diff_on + theorem cont_diff.comp_cont_diff_within_at + theorem cont_diff.comp_continuous_linear_map + theorem cont_diff.cont_diff_at + theorem cont_diff.cont_diff_fderiv_apply + theorem cont_diff.cont_diff_on + theorem cont_diff.cont_diff_within_at + theorem cont_diff.continuous + theorem cont_diff.continuous_fderiv + theorem cont_diff.continuous_fderiv_apply + theorem cont_diff.continuous_linear_map_comp + theorem cont_diff.differentiable + theorem cont_diff.div + theorem cont_diff.div_const + theorem cont_diff.has_strict_deriv_at + theorem cont_diff.has_strict_fderiv_at + theorem cont_diff.inv + theorem cont_diff.mul + theorem cont_diff.neg + theorem cont_diff.of_le + theorem cont_diff.pow + theorem cont_diff.prod + theorem cont_diff.prod_map + theorem cont_diff.restrict_scalars + theorem cont_diff.smul + theorem cont_diff.sub + theorem cont_diff.sum + theorem cont_diff_add + theorem cont_diff_all_iff_nat + theorem cont_diff_at.add + theorem cont_diff_at.comp + theorem cont_diff_at.comp_cont_diff_within_at + theorem cont_diff_at.congr_of_eventually_eq + theorem cont_diff_at.cont_diff_within_at + theorem cont_diff_at.continuous_at + theorem cont_diff_at.continuous_linear_map_comp + theorem cont_diff_at.differentiable_at + theorem cont_diff_at.div + theorem cont_diff_at.div_const + theorem cont_diff_at.exists_lipschitz_on_with + theorem cont_diff_at.exists_lipschitz_on_with_of_nnnorm_lt + theorem cont_diff_at.has_strict_deriv_at' + theorem cont_diff_at.has_strict_deriv_at + theorem cont_diff_at.has_strict_fderiv_at' + theorem cont_diff_at.has_strict_fderiv_at + theorem cont_diff_at.inv + theorem cont_diff_at.mul + theorem cont_diff_at.neg + theorem cont_diff_at.of_le + theorem cont_diff_at.pow + theorem cont_diff_at.prod + theorem cont_diff_at.prod_map' + theorem cont_diff_at.prod_map + theorem cont_diff_at.restrict_scalars + theorem cont_diff_at.smul + theorem cont_diff_at.sub + theorem cont_diff_at.sum + def cont_diff_at + theorem cont_diff_at_const + theorem cont_diff_at_fst + theorem cont_diff_at_id + theorem cont_diff_at_inv + theorem cont_diff_at_map_inverse + theorem cont_diff_at_of_subsingleton + theorem cont_diff_at_pi + theorem cont_diff_at_ring_inverse + theorem cont_diff_at_snd + theorem cont_diff_at_succ_iff_has_fderiv_at + theorem cont_diff_at_top + theorem cont_diff_at_zero + theorem cont_diff_const + theorem cont_diff_fst + theorem cont_diff_id + theorem cont_diff_iff_cont_diff_at + theorem cont_diff_iff_continuous_differentiable + theorem cont_diff_mul + theorem cont_diff_neg + theorem cont_diff_of_differentiable_iterated_fderiv + theorem cont_diff_of_subsingleton + theorem cont_diff_on.add + theorem cont_diff_on.comp' + theorem cont_diff_on.comp + theorem cont_diff_on.comp_continuous_linear_map + theorem cont_diff_on.congr + theorem cont_diff_on.congr_mono + theorem cont_diff_on.cont_diff_within_at + theorem cont_diff_on.continuous_linear_map_comp + theorem cont_diff_on.continuous_on + theorem cont_diff_on.continuous_on_deriv_of_open + theorem cont_diff_on.continuous_on_deriv_within + theorem cont_diff_on.continuous_on_fderiv_of_open + theorem cont_diff_on.continuous_on_fderiv_within + theorem cont_diff_on.continuous_on_fderiv_within_apply + theorem cont_diff_on.continuous_on_iterated_fderiv_within + theorem cont_diff_on.deriv_of_open + theorem cont_diff_on.deriv_within + theorem cont_diff_on.differentiable_on + theorem cont_diff_on.differentiable_on_iterated_fderiv_within + theorem cont_diff_on.div + theorem cont_diff_on.div_const + theorem cont_diff_on.fderiv_of_open + theorem cont_diff_on.fderiv_within + theorem cont_diff_on.ftaylor_series_within + theorem cont_diff_on.inv + theorem cont_diff_on.mono + theorem cont_diff_on.mul + theorem cont_diff_on.neg + theorem cont_diff_on.of_le + theorem cont_diff_on.pow + theorem cont_diff_on.prod + theorem cont_diff_on.prod_map + theorem cont_diff_on.restrict_scalars + theorem cont_diff_on.smul + theorem cont_diff_on.sub + theorem cont_diff_on.sum + theorem cont_diff_on_all_iff_nat + theorem cont_diff_on_congr + theorem cont_diff_on_const + theorem cont_diff_on_fderiv_within_apply + theorem cont_diff_on_fst + theorem cont_diff_on_id + theorem cont_diff_on_iff_continuous_on_differentiable_on + theorem cont_diff_on_iff_forall_nat_le + theorem cont_diff_on_iff_ftaylor_series + theorem cont_diff_on_inv + theorem cont_diff_on_of_continuous_on_differentiable_on + theorem cont_diff_on_of_differentiable_on + theorem cont_diff_on_of_locally_cont_diff_on + theorem cont_diff_on_of_subsingleton + theorem cont_diff_on_pi + theorem cont_diff_on_snd + theorem cont_diff_on_succ_iff_deriv_of_open + theorem cont_diff_on_succ_iff_deriv_within + theorem cont_diff_on_succ_iff_fderiv_of_open + theorem cont_diff_on_succ_iff_fderiv_within + theorem cont_diff_on_succ_iff_has_fderiv_within_at + theorem cont_diff_on_top + theorem cont_diff_on_top_iff_deriv_of_open + theorem cont_diff_on_top_iff_deriv_within + theorem cont_diff_on_top_iff_fderiv_of_open + theorem cont_diff_on_top_iff_fderiv_within + theorem cont_diff_on_univ + theorem cont_diff_on_zero + theorem cont_diff_pi + theorem cont_diff_prod_assoc + theorem cont_diff_prod_assoc_symm + theorem cont_diff_smul + theorem cont_diff_snd + theorem cont_diff_succ_iff_deriv + theorem cont_diff_succ_iff_fderiv + theorem cont_diff_top + theorem cont_diff_top_iff_fderiv + theorem cont_diff_within_at.add + theorem cont_diff_within_at.comp' + theorem cont_diff_within_at.comp + theorem cont_diff_within_at.comp_continuous_linear_map + theorem cont_diff_within_at.congr' + theorem cont_diff_within_at.congr + theorem cont_diff_within_at.congr_nhds + theorem cont_diff_within_at.congr_of_eventually_eq' + theorem cont_diff_within_at.congr_of_eventually_eq + theorem cont_diff_within_at.cont_diff_at + theorem cont_diff_within_at.cont_diff_on + theorem cont_diff_within_at.continuous_linear_map_comp + theorem cont_diff_within_at.continuous_within_at + theorem cont_diff_within_at.differentiable_within_at' + theorem cont_diff_within_at.differentiable_within_at + theorem cont_diff_within_at.div + theorem cont_diff_within_at.div_const + theorem cont_diff_within_at.exists_lipschitz_on_with + theorem cont_diff_within_at.inv + theorem cont_diff_within_at.mono + theorem cont_diff_within_at.mono_of_mem + theorem cont_diff_within_at.mul + theorem cont_diff_within_at.neg + theorem cont_diff_within_at.of_le + theorem cont_diff_within_at.pow + theorem cont_diff_within_at.prod + theorem cont_diff_within_at.prod_map' + theorem cont_diff_within_at.prod_map + theorem cont_diff_within_at.restrict_scalars + theorem cont_diff_within_at.smul + theorem cont_diff_within_at.sub + theorem cont_diff_within_at.sum + def cont_diff_within_at + theorem cont_diff_within_at_congr_nhds + theorem cont_diff_within_at_const + theorem cont_diff_within_at_fst + theorem cont_diff_within_at_id + theorem cont_diff_within_at_iff_forall_nat_le + theorem cont_diff_within_at_inter' + theorem cont_diff_within_at_inter + theorem cont_diff_within_at_nat + theorem cont_diff_within_at_of_subsingleton + theorem cont_diff_within_at_pi + theorem cont_diff_within_at_snd + theorem cont_diff_within_at_succ_iff_has_fderiv_within_at + theorem cont_diff_within_at_top + theorem cont_diff_within_at_univ + theorem cont_diff_within_at_zero + theorem cont_diff_zero + theorem cont_diff_zero_fun + theorem continuous_linear_equiv.comp_cont_diff_on_iff + theorem continuous_linear_equiv.comp_cont_diff_within_at_iff - theorem continuous_linear_equiv.comp_times_cont_diff_on_iff - theorem continuous_linear_equiv.comp_times_cont_diff_within_at_iff + theorem continuous_linear_equiv.cont_diff + theorem continuous_linear_equiv.cont_diff_on_comp_iff + theorem continuous_linear_equiv.cont_diff_within_at_comp_iff - theorem continuous_linear_equiv.times_cont_diff - theorem continuous_linear_equiv.times_cont_diff_on_comp_iff - theorem continuous_linear_equiv.times_cont_diff_within_at_comp_iff + theorem continuous_linear_map.cont_diff - theorem continuous_linear_map.times_cont_diff + theorem filter.eventually_eq.cont_diff_within_at_iff - theorem filter.eventually_eq.times_cont_diff_within_at_iff + theorem is_bounded_bilinear_map.cont_diff - theorem is_bounded_bilinear_map.times_cont_diff + theorem is_bounded_linear_map.cont_diff - theorem is_bounded_linear_map.times_cont_diff + theorem linear_isometry.cont_diff - theorem linear_isometry.times_cont_diff + theorem linear_isometry_equiv.cont_diff - theorem linear_isometry_equiv.times_cont_diff + theorem local_homeomorph.cont_diff_at_symm + theorem local_homeomorph.cont_diff_at_symm_deriv - theorem local_homeomorph.times_cont_diff_at_symm - theorem local_homeomorph.times_cont_diff_at_symm_deriv - theorem times_cont_diff.add - theorem times_cont_diff.comp - theorem times_cont_diff.comp_continuous_linear_map - theorem times_cont_diff.comp_times_cont_diff_at - theorem times_cont_diff.comp_times_cont_diff_on - theorem times_cont_diff.comp_times_cont_diff_within_at - theorem times_cont_diff.continuous - theorem times_cont_diff.continuous_fderiv - theorem times_cont_diff.continuous_fderiv_apply - theorem times_cont_diff.continuous_linear_map_comp - theorem times_cont_diff.differentiable - theorem times_cont_diff.div - theorem times_cont_diff.div_const - theorem times_cont_diff.has_strict_deriv_at - theorem times_cont_diff.has_strict_fderiv_at - theorem times_cont_diff.inv - theorem times_cont_diff.mul - theorem times_cont_diff.neg - theorem times_cont_diff.of_le - theorem times_cont_diff.pow - theorem times_cont_diff.prod - theorem times_cont_diff.prod_map - theorem times_cont_diff.restrict_scalars - theorem times_cont_diff.smul - theorem times_cont_diff.sub - theorem times_cont_diff.sum - theorem times_cont_diff.times_cont_diff_at - theorem times_cont_diff.times_cont_diff_fderiv_apply - theorem times_cont_diff.times_cont_diff_on - theorem times_cont_diff.times_cont_diff_within_at - theorem times_cont_diff_add - theorem times_cont_diff_all_iff_nat - theorem times_cont_diff_at.add - theorem times_cont_diff_at.comp - theorem times_cont_diff_at.comp_times_cont_diff_within_at - theorem times_cont_diff_at.congr_of_eventually_eq - theorem times_cont_diff_at.continuous_at - theorem times_cont_diff_at.continuous_linear_map_comp - theorem times_cont_diff_at.differentiable_at - theorem times_cont_diff_at.div - theorem times_cont_diff_at.div_const - theorem times_cont_diff_at.exists_lipschitz_on_with - theorem times_cont_diff_at.exists_lipschitz_on_with_of_nnnorm_lt - theorem times_cont_diff_at.has_strict_deriv_at' - theorem times_cont_diff_at.has_strict_deriv_at - theorem times_cont_diff_at.has_strict_fderiv_at' - theorem times_cont_diff_at.has_strict_fderiv_at - theorem times_cont_diff_at.inv - theorem times_cont_diff_at.mul - theorem times_cont_diff_at.neg - theorem times_cont_diff_at.of_le - theorem times_cont_diff_at.pow - theorem times_cont_diff_at.prod - theorem times_cont_diff_at.prod_map' - theorem times_cont_diff_at.prod_map - theorem times_cont_diff_at.restrict_scalars - theorem times_cont_diff_at.smul - theorem times_cont_diff_at.sub - theorem times_cont_diff_at.sum - theorem times_cont_diff_at.times_cont_diff_within_at - def times_cont_diff_at - theorem times_cont_diff_at_const - theorem times_cont_diff_at_fst - theorem times_cont_diff_at_id - theorem times_cont_diff_at_inv - theorem times_cont_diff_at_map_inverse - theorem times_cont_diff_at_of_subsingleton - theorem times_cont_diff_at_pi - theorem times_cont_diff_at_ring_inverse - theorem times_cont_diff_at_snd - theorem times_cont_diff_at_succ_iff_has_fderiv_at - theorem times_cont_diff_at_top - theorem times_cont_diff_at_zero - theorem times_cont_diff_const - theorem times_cont_diff_fst - theorem times_cont_diff_id - theorem times_cont_diff_iff_continuous_differentiable - theorem times_cont_diff_iff_times_cont_diff_at - theorem times_cont_diff_mul - theorem times_cont_diff_neg - theorem times_cont_diff_of_differentiable_iterated_fderiv - theorem times_cont_diff_of_subsingleton - theorem times_cont_diff_on.add - theorem times_cont_diff_on.comp' - theorem times_cont_diff_on.comp - theorem times_cont_diff_on.comp_continuous_linear_map - theorem times_cont_diff_on.congr - theorem times_cont_diff_on.congr_mono - theorem times_cont_diff_on.continuous_linear_map_comp - theorem times_cont_diff_on.continuous_on - theorem times_cont_diff_on.continuous_on_deriv_of_open - theorem times_cont_diff_on.continuous_on_deriv_within - theorem times_cont_diff_on.continuous_on_fderiv_of_open - theorem times_cont_diff_on.continuous_on_fderiv_within - theorem times_cont_diff_on.continuous_on_fderiv_within_apply - theorem times_cont_diff_on.continuous_on_iterated_fderiv_within - theorem times_cont_diff_on.deriv_of_open - theorem times_cont_diff_on.deriv_within - theorem times_cont_diff_on.differentiable_on - theorem times_cont_diff_on.differentiable_on_iterated_fderiv_within - theorem times_cont_diff_on.div - theorem times_cont_diff_on.div_const - theorem times_cont_diff_on.fderiv_of_open - theorem times_cont_diff_on.fderiv_within - theorem times_cont_diff_on.ftaylor_series_within - theorem times_cont_diff_on.inv - theorem times_cont_diff_on.mono - theorem times_cont_diff_on.mul - theorem times_cont_diff_on.neg - theorem times_cont_diff_on.of_le - theorem times_cont_diff_on.pow - theorem times_cont_diff_on.prod - theorem times_cont_diff_on.prod_map - theorem times_cont_diff_on.restrict_scalars - theorem times_cont_diff_on.smul - theorem times_cont_diff_on.sub - theorem times_cont_diff_on.sum - theorem times_cont_diff_on.times_cont_diff_within_at - theorem times_cont_diff_on_all_iff_nat - theorem times_cont_diff_on_congr - theorem times_cont_diff_on_const - theorem times_cont_diff_on_fderiv_within_apply - theorem times_cont_diff_on_fst - theorem times_cont_diff_on_id - theorem times_cont_diff_on_iff_continuous_on_differentiable_on - theorem times_cont_diff_on_iff_forall_nat_le - theorem times_cont_diff_on_iff_ftaylor_series - theorem times_cont_diff_on_inv - theorem times_cont_diff_on_of_continuous_on_differentiable_on - theorem times_cont_diff_on_of_differentiable_on - theorem times_cont_diff_on_of_locally_times_cont_diff_on - theorem times_cont_diff_on_of_subsingleton - theorem times_cont_diff_on_pi - theorem times_cont_diff_on_snd - theorem times_cont_diff_on_succ_iff_deriv_of_open - theorem times_cont_diff_on_succ_iff_deriv_within - theorem times_cont_diff_on_succ_iff_fderiv_of_open - theorem times_cont_diff_on_succ_iff_fderiv_within - theorem times_cont_diff_on_succ_iff_has_fderiv_within_at - theorem times_cont_diff_on_top - theorem times_cont_diff_on_top_iff_deriv_of_open - theorem times_cont_diff_on_top_iff_deriv_within - theorem times_cont_diff_on_top_iff_fderiv_of_open - theorem times_cont_diff_on_top_iff_fderiv_within - theorem times_cont_diff_on_univ - theorem times_cont_diff_on_zero - theorem times_cont_diff_pi - theorem times_cont_diff_prod_assoc - theorem times_cont_diff_prod_assoc_symm - theorem times_cont_diff_smul - theorem times_cont_diff_snd - theorem times_cont_diff_succ_iff_deriv - theorem times_cont_diff_succ_iff_fderiv - theorem times_cont_diff_top - theorem times_cont_diff_top_iff_fderiv - theorem times_cont_diff_within_at.add - theorem times_cont_diff_within_at.comp' - theorem times_cont_diff_within_at.comp - theorem times_cont_diff_within_at.comp_continuous_linear_map - theorem times_cont_diff_within_at.congr' - theorem times_cont_diff_within_at.congr - theorem times_cont_diff_within_at.congr_nhds - theorem times_cont_diff_within_at.congr_of_eventually_eq' - theorem times_cont_diff_within_at.congr_of_eventually_eq - theorem times_cont_diff_within_at.continuous_linear_map_comp - theorem times_cont_diff_within_at.continuous_within_at - theorem times_cont_diff_within_at.differentiable_within_at' - theorem times_cont_diff_within_at.differentiable_within_at - theorem times_cont_diff_within_at.div - theorem times_cont_diff_within_at.div_const - theorem times_cont_diff_within_at.exists_lipschitz_on_with - theorem times_cont_diff_within_at.inv - theorem times_cont_diff_within_at.mono - theorem times_cont_diff_within_at.mono_of_mem - theorem times_cont_diff_within_at.mul - theorem times_cont_diff_within_at.neg - theorem times_cont_diff_within_at.of_le - theorem times_cont_diff_within_at.pow - theorem times_cont_diff_within_at.prod - theorem times_cont_diff_within_at.prod_map' - theorem times_cont_diff_within_at.prod_map - theorem times_cont_diff_within_at.restrict_scalars - theorem times_cont_diff_within_at.smul - theorem times_cont_diff_within_at.sub - theorem times_cont_diff_within_at.sum - theorem times_cont_diff_within_at.times_cont_diff_at - theorem times_cont_diff_within_at.times_cont_diff_on - def times_cont_diff_within_at - theorem times_cont_diff_within_at_congr_nhds - theorem times_cont_diff_within_at_const - theorem times_cont_diff_within_at_fst - theorem times_cont_diff_within_at_id - theorem times_cont_diff_within_at_iff_forall_nat_le - theorem times_cont_diff_within_at_inter' - theorem times_cont_diff_within_at_inter - theorem times_cont_diff_within_at_nat - theorem times_cont_diff_within_at_of_subsingleton - theorem times_cont_diff_within_at_pi - theorem times_cont_diff_within_at_snd - theorem times_cont_diff_within_at_succ_iff_has_fderiv_within_at - theorem times_cont_diff_within_at_top - theorem times_cont_diff_within_at_univ - theorem times_cont_diff_within_at_zero - theorem times_cont_diff_zero - theorem times_cont_diff_zero_fun Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/calculus/inverse.lean + theorem cont_diff_at.image_mem_to_local_homeomorph_target + def cont_diff_at.local_inverse + theorem cont_diff_at.local_inverse_apply_image + theorem cont_diff_at.mem_to_local_homeomorph_source + def cont_diff_at.to_local_homeomorph + theorem cont_diff_at.to_local_homeomorph_coe + theorem cont_diff_at.to_local_inverse - theorem times_cont_diff_at.image_mem_to_local_homeomorph_target - def times_cont_diff_at.local_inverse - theorem times_cont_diff_at.local_inverse_apply_image - theorem times_cont_diff_at.mem_to_local_homeomorph_source - def times_cont_diff_at.to_local_homeomorph - theorem times_cont_diff_at.to_local_homeomorph_coe - theorem times_cont_diff_at.to_local_inverse Modified src/analysis/calculus/iterated_deriv.lean + theorem cont_diff.continuous_iterated_deriv + theorem cont_diff.differentiable_iterated_deriv + theorem cont_diff_iff_iterated_deriv + theorem cont_diff_of_differentiable_iterated_deriv + theorem cont_diff_on.continuous_on_iterated_deriv_within + theorem cont_diff_on.differentiable_on_iterated_deriv_within + theorem cont_diff_on_iff_continuous_on_differentiable_on_deriv + theorem cont_diff_on_of_continuous_on_differentiable_on_deriv + theorem cont_diff_on_of_differentiable_on_deriv - theorem times_cont_diff.continuous_iterated_deriv - theorem times_cont_diff.differentiable_iterated_deriv - theorem times_cont_diff_iff_iterated_deriv - theorem times_cont_diff_of_differentiable_iterated_deriv - theorem times_cont_diff_on.continuous_on_iterated_deriv_within - theorem times_cont_diff_on.differentiable_on_iterated_deriv_within - theorem times_cont_diff_on_iff_continuous_on_differentiable_on_deriv - theorem times_cont_diff_on_of_continuous_on_differentiable_on_deriv - theorem times_cont_diff_on_of_differentiable_on_deriv Modified src/analysis/calculus/specific_functions.lean + theorem cont_diff_bump.R_pos + theorem cont_diff_bump.coe_eq_comp + theorem cont_diff_bump.eventually_eq_one + theorem cont_diff_bump.eventually_eq_one_of_mem_ball + theorem cont_diff_bump.exists_closure_subset + theorem cont_diff_bump.exists_tsupport_subset + theorem cont_diff_bump.le_one + theorem cont_diff_bump.lt_one_of_lt_dist + theorem cont_diff_bump.nonneg + theorem cont_diff_bump.one_of_mem_closed_ball + theorem cont_diff_bump.pos_of_mem_ball + theorem cont_diff_bump.support_eq + def cont_diff_bump.to_fun + theorem cont_diff_bump.tsupport_eq + theorem cont_diff_bump.zero_of_le_dist + structure cont_diff_bump + theorem cont_diff_bump_of_inner.R_pos + theorem cont_diff_bump_of_inner.eventually_eq_one + theorem cont_diff_bump_of_inner.eventually_eq_one_of_mem_ball + theorem cont_diff_bump_of_inner.le_one + theorem cont_diff_bump_of_inner.lt_one_of_lt_dist + theorem cont_diff_bump_of_inner.nonneg + theorem cont_diff_bump_of_inner.one_of_mem_closed_ball + theorem cont_diff_bump_of_inner.pos_of_mem_ball + theorem cont_diff_bump_of_inner.support_eq + def cont_diff_bump_of_inner.to_fun + theorem cont_diff_bump_of_inner.zero_of_le_dist + structure cont_diff_bump_of_inner + theorem exists_cont_diff_bump_function_of_mem_nhds - theorem exists_times_cont_diff_bump_function_of_mem_nhds - theorem times_cont_diff_bump.R_pos - theorem times_cont_diff_bump.coe_eq_comp - theorem times_cont_diff_bump.eventually_eq_one - theorem times_cont_diff_bump.eventually_eq_one_of_mem_ball - theorem times_cont_diff_bump.exists_closure_subset - theorem times_cont_diff_bump.exists_tsupport_subset - theorem times_cont_diff_bump.le_one - theorem times_cont_diff_bump.lt_one_of_lt_dist - theorem times_cont_diff_bump.nonneg - theorem times_cont_diff_bump.one_of_mem_closed_ball - theorem times_cont_diff_bump.pos_of_mem_ball - theorem times_cont_diff_bump.support_eq - def times_cont_diff_bump.to_fun - theorem times_cont_diff_bump.tsupport_eq - theorem times_cont_diff_bump.zero_of_le_dist - structure times_cont_diff_bump - theorem times_cont_diff_bump_of_inner.R_pos - theorem times_cont_diff_bump_of_inner.eventually_eq_one - theorem times_cont_diff_bump_of_inner.eventually_eq_one_of_mem_ball - theorem times_cont_diff_bump_of_inner.le_one - theorem times_cont_diff_bump_of_inner.lt_one_of_lt_dist - theorem times_cont_diff_bump_of_inner.nonneg - theorem times_cont_diff_bump_of_inner.one_of_mem_closed_ball - theorem times_cont_diff_bump_of_inner.pos_of_mem_ball - theorem times_cont_diff_bump_of_inner.support_eq - def times_cont_diff_bump_of_inner.to_fun - theorem times_cont_diff_bump_of_inner.zero_of_le_dist - structure times_cont_diff_bump_of_inner Modified src/analysis/complex/real_deriv.lean + theorem cont_diff.real_of_complex + theorem cont_diff_at.real_of_complex - theorem times_cont_diff.real_of_complex - theorem times_cont_diff_at.real_of_complex Modified src/analysis/inner_product_space/calculus.lean + theorem cont_diff.dist + theorem cont_diff.inner + theorem cont_diff.norm + theorem cont_diff.norm_sq + theorem cont_diff_at.dist + theorem cont_diff_at.inner + theorem cont_diff_at.norm + theorem cont_diff_at.norm_sq + theorem cont_diff_at_inner + theorem cont_diff_at_norm + theorem cont_diff_inner + theorem cont_diff_norm_sq + theorem cont_diff_on.dist + theorem cont_diff_on.inner + theorem cont_diff_on.norm + theorem cont_diff_on.norm_sq + theorem cont_diff_within_at.dist + theorem cont_diff_within_at.inner + theorem cont_diff_within_at.norm + theorem cont_diff_within_at.norm_sq - theorem times_cont_diff.dist - theorem times_cont_diff.inner - theorem times_cont_diff.norm - theorem times_cont_diff.norm_sq - theorem times_cont_diff_at.dist - theorem times_cont_diff_at.inner - theorem times_cont_diff_at.norm - theorem times_cont_diff_at.norm_sq - theorem times_cont_diff_at_inner - theorem times_cont_diff_at_norm - theorem times_cont_diff_inner - theorem times_cont_diff_norm_sq - theorem times_cont_diff_on.dist - theorem times_cont_diff_on.inner - theorem times_cont_diff_on.norm - theorem times_cont_diff_on.norm_sq - theorem times_cont_diff_within_at.dist - theorem times_cont_diff_within_at.inner - theorem times_cont_diff_within_at.norm - theorem times_cont_diff_within_at.norm_sq Modified src/analysis/inner_product_space/euclidean_dist.lean + theorem cont_diff.euclidean_dist - theorem times_cont_diff.euclidean_dist Modified src/analysis/special_functions/complex/log_deriv.lean + theorem complex.cont_diff_at_log - theorem complex.times_cont_diff_at_log Modified src/analysis/special_functions/exp_deriv.lean + theorem complex.cont_diff_exp - theorem complex.times_cont_diff_exp + theorem cont_diff.cexp + theorem cont_diff.exp + theorem cont_diff_at.cexp + theorem cont_diff_at.exp + theorem cont_diff_on.cexp + theorem cont_diff_on.exp + theorem cont_diff_within_at.cexp + theorem cont_diff_within_at.exp + theorem real.cont_diff_exp - theorem real.times_cont_diff_exp - theorem times_cont_diff.cexp - theorem times_cont_diff.exp - theorem times_cont_diff_at.cexp - theorem times_cont_diff_at.exp - theorem times_cont_diff_on.cexp - theorem times_cont_diff_on.exp - theorem times_cont_diff_within_at.cexp - theorem times_cont_diff_within_at.exp Modified src/analysis/special_functions/log_deriv.lean + theorem cont_diff.log + theorem cont_diff_at.log + theorem cont_diff_on.log + theorem cont_diff_within_at.log + theorem real.cont_diff_at_log + theorem real.cont_diff_on_log - theorem real.times_cont_diff_at_log - theorem real.times_cont_diff_on_log - theorem times_cont_diff.log - theorem times_cont_diff_at.log - theorem times_cont_diff_on.log - theorem times_cont_diff_within_at.log Modified src/analysis/special_functions/pow_deriv.lean + theorem cont_diff.rpow + theorem cont_diff.rpow_const_of_le + theorem cont_diff.rpow_const_of_ne + theorem cont_diff_at.rpow + theorem cont_diff_at.rpow_const_of_le + theorem cont_diff_at.rpow_const_of_ne + theorem cont_diff_on.rpow + theorem cont_diff_on.rpow_const_of_le + theorem cont_diff_on.rpow_const_of_ne + theorem cont_diff_within_at.rpow + theorem cont_diff_within_at.rpow_const_of_le + theorem cont_diff_within_at.rpow_const_of_ne + theorem real.cont_diff_at_rpow_const + theorem real.cont_diff_at_rpow_const_of_le + theorem real.cont_diff_at_rpow_const_of_ne + theorem real.cont_diff_at_rpow_of_ne + theorem real.cont_diff_rpow_const_of_le - theorem real.times_cont_diff_at_rpow_const - theorem real.times_cont_diff_at_rpow_const_of_le - theorem real.times_cont_diff_at_rpow_const_of_ne - theorem real.times_cont_diff_at_rpow_of_ne - theorem real.times_cont_diff_rpow_const_of_le - theorem times_cont_diff.rpow - theorem times_cont_diff.rpow_const_of_le - theorem times_cont_diff.rpow_const_of_ne - theorem times_cont_diff_at.rpow - theorem times_cont_diff_at.rpow_const_of_le - theorem times_cont_diff_at.rpow_const_of_ne - theorem times_cont_diff_on.rpow - theorem times_cont_diff_on.rpow_const_of_le - theorem times_cont_diff_on.rpow_const_of_ne - theorem times_cont_diff_within_at.rpow - theorem times_cont_diff_within_at.rpow_const_of_le - theorem times_cont_diff_within_at.rpow_const_of_ne Modified src/analysis/special_functions/sqrt.lean + theorem cont_diff.sqrt + theorem cont_diff_at.sqrt + theorem cont_diff_on.sqrt + theorem cont_diff_within_at.sqrt + theorem real.cont_diff_at_sqrt - theorem real.times_cont_diff_at_sqrt - theorem times_cont_diff.sqrt - theorem times_cont_diff_at.sqrt - theorem times_cont_diff_on.sqrt - theorem times_cont_diff_within_at.sqrt Modified src/analysis/special_functions/trigonometric/arctan_deriv.lean + theorem cont_diff.arctan + theorem cont_diff_at.arctan + theorem cont_diff_on.arctan + theorem cont_diff_within_at.arctan + theorem real.cont_diff_arctan + theorem real.cont_diff_at_tan - theorem real.times_cont_diff_arctan - theorem real.times_cont_diff_at_tan - theorem times_cont_diff.arctan - theorem times_cont_diff_at.arctan - theorem times_cont_diff_on.arctan - theorem times_cont_diff_within_at.arctan Modified src/analysis/special_functions/trigonometric/complex_deriv.lean + theorem complex.cont_diff_at_tan - theorem complex.times_cont_diff_at_tan Modified src/analysis/special_functions/trigonometric/deriv.lean + theorem complex.cont_diff_cos + theorem complex.cont_diff_cosh + theorem complex.cont_diff_sin + theorem complex.cont_diff_sinh - theorem complex.times_cont_diff_cos - theorem complex.times_cont_diff_cosh - theorem complex.times_cont_diff_sin - theorem complex.times_cont_diff_sinh + theorem cont_diff.ccos + theorem cont_diff.ccosh + theorem cont_diff.cos + theorem cont_diff.cosh + theorem cont_diff.csin + theorem cont_diff.csinh + theorem cont_diff.sin + theorem cont_diff.sinh + theorem cont_diff_at.ccos + theorem cont_diff_at.ccosh + theorem cont_diff_at.cos + theorem cont_diff_at.cosh + theorem cont_diff_at.csin + theorem cont_diff_at.csinh + theorem cont_diff_at.sin + theorem cont_diff_at.sinh + theorem cont_diff_on.ccos + theorem cont_diff_on.ccosh + theorem cont_diff_on.cos + theorem cont_diff_on.cosh + theorem cont_diff_on.csin + theorem cont_diff_on.csinh + theorem cont_diff_on.sin + theorem cont_diff_on.sinh + theorem cont_diff_within_at.ccos + theorem cont_diff_within_at.ccosh + theorem cont_diff_within_at.cos + theorem cont_diff_within_at.cosh + theorem cont_diff_within_at.csin + theorem cont_diff_within_at.csinh + theorem cont_diff_within_at.sin + theorem cont_diff_within_at.sinh + theorem real.cont_diff_cos + theorem real.cont_diff_cosh + theorem real.cont_diff_sin + theorem real.cont_diff_sinh - theorem real.times_cont_diff_cos - theorem real.times_cont_diff_cosh - theorem real.times_cont_diff_sin - theorem real.times_cont_diff_sinh - theorem times_cont_diff.ccos - theorem times_cont_diff.ccosh - theorem times_cont_diff.cos - theorem times_cont_diff.cosh - theorem times_cont_diff.csin - theorem times_cont_diff.csinh - theorem times_cont_diff.sin - theorem times_cont_diff.sinh - theorem times_cont_diff_at.ccos - theorem times_cont_diff_at.ccosh - theorem times_cont_diff_at.cos - theorem times_cont_diff_at.cosh - theorem times_cont_diff_at.csin - theorem times_cont_diff_at.csinh - theorem times_cont_diff_at.sin - theorem times_cont_diff_at.sinh - theorem times_cont_diff_on.ccos - theorem times_cont_diff_on.ccosh - theorem times_cont_diff_on.cos - theorem times_cont_diff_on.cosh - theorem times_cont_diff_on.csin - theorem times_cont_diff_on.csinh - theorem times_cont_diff_on.sin - theorem times_cont_diff_on.sinh - theorem times_cont_diff_within_at.ccos - theorem times_cont_diff_within_at.ccosh - theorem times_cont_diff_within_at.cos - theorem times_cont_diff_within_at.cosh - theorem times_cont_diff_within_at.csin - theorem times_cont_diff_within_at.csinh - theorem times_cont_diff_within_at.sin - theorem times_cont_diff_within_at.sinh Modified src/analysis/special_functions/trigonometric/inverse_deriv.lean + theorem real.cont_diff_at_arccos + theorem real.cont_diff_at_arccos_iff + theorem real.cont_diff_at_arcsin + theorem real.cont_diff_at_arcsin_iff + theorem real.cont_diff_on_arccos + theorem real.cont_diff_on_arcsin - theorem real.times_cont_diff_at_arccos - theorem real.times_cont_diff_at_arccos_iff - theorem real.times_cont_diff_at_arcsin - theorem real.times_cont_diff_at_arcsin_iff - theorem real.times_cont_diff_on_arccos - theorem real.times_cont_diff_on_arcsin Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/algebra/structures.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/bump_function.lean +/- theorem smooth_bump_function.R_pos +/- structure smooth_bump_function Renamed src/geometry/manifold/times_cont_mdiff.lean to src/geometry/manifold/cont_mdiff.lean + theorem basic_smooth_bundle_core.cont_mdiff_at_proj + theorem basic_smooth_bundle_core.cont_mdiff_on_proj + theorem basic_smooth_bundle_core.cont_mdiff_proj + theorem basic_smooth_bundle_core.cont_mdiff_within_at_proj - theorem basic_smooth_bundle_core.times_cont_mdiff_at_proj - theorem basic_smooth_bundle_core.times_cont_mdiff_on_proj - theorem basic_smooth_bundle_core.times_cont_mdiff_proj - theorem basic_smooth_bundle_core.times_cont_mdiff_within_at_proj + theorem cont_diff_within_at_local_invariant_prop + theorem cont_diff_within_at_local_invariant_prop_id + theorem cont_diff_within_at_local_invariant_prop_mono + def cont_diff_within_at_prop + theorem cont_mdiff.comp + theorem cont_mdiff.comp_cont_mdiff_on + theorem cont_mdiff.cont_mdiff_at + theorem cont_mdiff.cont_mdiff_on + theorem cont_mdiff.cont_mdiff_tangent_map + theorem cont_mdiff.continuous + theorem cont_mdiff.continuous_tangent_map + theorem cont_mdiff.mdifferentiable + theorem cont_mdiff.of_le + theorem cont_mdiff.of_succ + theorem cont_mdiff.prod_map + theorem cont_mdiff.prod_mk + theorem cont_mdiff.prod_mk_space + theorem cont_mdiff.smooth + def cont_mdiff + theorem cont_mdiff_at.comp + theorem cont_mdiff_at.comp_cont_mdiff_within_at + theorem cont_mdiff_at.congr_of_eventually_eq + theorem cont_mdiff_at.cont_mdiff_within_at + theorem cont_mdiff_at.continuous_at + theorem cont_mdiff_at.mdifferentiable_at + theorem cont_mdiff_at.of_le + theorem cont_mdiff_at.of_succ + theorem cont_mdiff_at.prod_map' + theorem cont_mdiff_at.prod_map + theorem cont_mdiff_at.prod_mk + theorem cont_mdiff_at.prod_mk_space + theorem cont_mdiff_at.smooth_at + def cont_mdiff_at + theorem cont_mdiff_at_const + theorem cont_mdiff_at_ext_chart_at' + theorem cont_mdiff_at_ext_chart_at + theorem cont_mdiff_at_fst + theorem cont_mdiff_at_id + theorem cont_mdiff_at_iff_cont_diff_at + theorem cont_mdiff_at_iff_cont_mdiff_on_nhds + theorem cont_mdiff_at_one + theorem cont_mdiff_at_pi_space + theorem cont_mdiff_at_snd + theorem cont_mdiff_at_top + theorem cont_mdiff_const + theorem cont_mdiff_fst + theorem cont_mdiff_id + theorem cont_mdiff_iff + theorem cont_mdiff_iff_cont_diff + theorem cont_mdiff_iff_target + theorem cont_mdiff_of_locally_cont_mdiff_on + theorem cont_mdiff_of_support + theorem cont_mdiff_on.comp' + theorem cont_mdiff_on.comp + theorem cont_mdiff_on.congr + theorem cont_mdiff_on.cont_mdiff_on_tangent_map_within + theorem cont_mdiff_on.cont_mdiff_on_tangent_map_within_aux + theorem cont_mdiff_on.continuous_on + theorem cont_mdiff_on.continuous_on_tangent_map_within + theorem cont_mdiff_on.continuous_on_tangent_map_within_aux + theorem cont_mdiff_on.mdifferentiable_on + theorem cont_mdiff_on.mono + theorem cont_mdiff_on.of_le + theorem cont_mdiff_on.of_succ + theorem cont_mdiff_on.prod_map + theorem cont_mdiff_on.prod_mk + theorem cont_mdiff_on.prod_mk_space + theorem cont_mdiff_on.smooth_on + def cont_mdiff_on + theorem cont_mdiff_on_chart + theorem cont_mdiff_on_chart_symm + theorem cont_mdiff_on_congr + theorem cont_mdiff_on_const + theorem cont_mdiff_on_ext_chart_at + theorem cont_mdiff_on_fst + theorem cont_mdiff_on_id + theorem cont_mdiff_on_iff + theorem cont_mdiff_on_iff_cont_diff_on + theorem cont_mdiff_on_iff_target + theorem cont_mdiff_on_of_locally_cont_mdiff_on + theorem cont_mdiff_on_of_mem_maximal_atlas + theorem cont_mdiff_on_one + theorem cont_mdiff_on_pi_space + theorem cont_mdiff_on_snd + theorem cont_mdiff_on_symm_of_mem_maximal_atlas + theorem cont_mdiff_on_top + theorem cont_mdiff_on_univ + theorem cont_mdiff_one + theorem cont_mdiff_pi_space + theorem cont_mdiff_snd + theorem cont_mdiff_top + theorem cont_mdiff_within_at.comp' + theorem cont_mdiff_within_at.comp + theorem cont_mdiff_within_at.congr + theorem cont_mdiff_within_at.congr_of_eventually_eq + theorem cont_mdiff_within_at.cont_mdiff_at + theorem cont_mdiff_within_at.continuous_within_at + theorem cont_mdiff_within_at.mdifferentiable_within_at + theorem cont_mdiff_within_at.mono + theorem cont_mdiff_within_at.of_le + theorem cont_mdiff_within_at.of_succ + theorem cont_mdiff_within_at.prod_map' + theorem cont_mdiff_within_at.prod_map + theorem cont_mdiff_within_at.prod_mk + theorem cont_mdiff_within_at.prod_mk_space + theorem cont_mdiff_within_at.smooth_within_at + def cont_mdiff_within_at + theorem cont_mdiff_within_at_congr + theorem cont_mdiff_within_at_const + theorem cont_mdiff_within_at_fst + theorem cont_mdiff_within_at_id + theorem cont_mdiff_within_at_iff'' + theorem cont_mdiff_within_at_iff' + theorem cont_mdiff_within_at_iff + theorem cont_mdiff_within_at_iff_cont_diff_within_at + theorem cont_mdiff_within_at_iff_cont_mdiff_on_nhds + theorem cont_mdiff_within_at_iff_nat + theorem cont_mdiff_within_at_iff_target + theorem cont_mdiff_within_at_inter' + theorem cont_mdiff_within_at_inter + theorem cont_mdiff_within_at_one + theorem cont_mdiff_within_at_pi_space + theorem cont_mdiff_within_at_snd + theorem cont_mdiff_within_at_top + theorem cont_mdiff_within_at_univ + theorem continuous_linear_map.cont_mdiff - theorem continuous_linear_map.times_cont_mdiff + theorem filter.eventually_eq.cont_mdiff_at_iff + theorem filter.eventually_eq.cont_mdiff_within_at_iff - theorem filter.eventually_eq.times_cont_mdiff_at_iff - theorem filter.eventually_eq.times_cont_mdiff_within_at_iff + theorem smooth.cont_mdiff - theorem smooth.times_cont_mdiff +/- def smooth + theorem smooth_at.cont_mdiff_at - theorem smooth_at.times_cont_mdiff_at +/- def smooth_at +/- theorem smooth_at_id +/- theorem smooth_const +/- theorem smooth_id + theorem smooth_on.cont_mdiff_on - theorem smooth_on.times_cont_mdiff_on +/- def smooth_on +/- theorem smooth_on_id + theorem smooth_within_at.cont_mdiff_within_at - theorem smooth_within_at.times_cont_mdiff_within_at +/- theorem smooth_within_at_id + theorem tangent_bundle.cont_mdiff_at_proj + theorem tangent_bundle.cont_mdiff_on_proj + theorem tangent_bundle.cont_mdiff_proj + theorem tangent_bundle.cont_mdiff_within_at_proj - theorem tangent_bundle.times_cont_mdiff_at_proj - theorem tangent_bundle.times_cont_mdiff_on_proj - theorem tangent_bundle.times_cont_mdiff_proj - theorem tangent_bundle.times_cont_mdiff_within_at_proj - theorem times_cont_diff_within_at_local_invariant_prop - theorem times_cont_diff_within_at_local_invariant_prop_id - theorem times_cont_diff_within_at_local_invariant_prop_mono - def times_cont_diff_within_at_prop - theorem times_cont_mdiff.comp - theorem times_cont_mdiff.comp_times_cont_mdiff_on - theorem times_cont_mdiff.continuous - theorem times_cont_mdiff.continuous_tangent_map - theorem times_cont_mdiff.mdifferentiable - theorem times_cont_mdiff.of_le - theorem times_cont_mdiff.of_succ - theorem times_cont_mdiff.prod_map - theorem times_cont_mdiff.prod_mk - theorem times_cont_mdiff.prod_mk_space - theorem times_cont_mdiff.smooth - theorem times_cont_mdiff.times_cont_mdiff_at - theorem times_cont_mdiff.times_cont_mdiff_on - theorem times_cont_mdiff.times_cont_mdiff_tangent_map - def times_cont_mdiff - theorem times_cont_mdiff_at.comp - theorem times_cont_mdiff_at.comp_times_cont_mdiff_within_at - theorem times_cont_mdiff_at.congr_of_eventually_eq - theorem times_cont_mdiff_at.continuous_at - theorem times_cont_mdiff_at.mdifferentiable_at - theorem times_cont_mdiff_at.of_le - theorem times_cont_mdiff_at.of_succ - theorem times_cont_mdiff_at.prod_map' - theorem times_cont_mdiff_at.prod_map - theorem times_cont_mdiff_at.prod_mk - theorem times_cont_mdiff_at.prod_mk_space - theorem times_cont_mdiff_at.smooth_at - theorem times_cont_mdiff_at.times_cont_mdiff_within_at - def times_cont_mdiff_at - theorem times_cont_mdiff_at_const - theorem times_cont_mdiff_at_ext_chart_at' - theorem times_cont_mdiff_at_ext_chart_at - theorem times_cont_mdiff_at_fst - theorem times_cont_mdiff_at_id - theorem times_cont_mdiff_at_iff_times_cont_diff_at - theorem times_cont_mdiff_at_iff_times_cont_mdiff_on_nhds - theorem times_cont_mdiff_at_one - theorem times_cont_mdiff_at_pi_space - theorem times_cont_mdiff_at_snd - theorem times_cont_mdiff_at_top - theorem times_cont_mdiff_const - theorem times_cont_mdiff_fst - theorem times_cont_mdiff_id - theorem times_cont_mdiff_iff - theorem times_cont_mdiff_iff_target - theorem times_cont_mdiff_iff_times_cont_diff - theorem times_cont_mdiff_of_locally_times_cont_mdiff_on - theorem times_cont_mdiff_of_support - theorem times_cont_mdiff_on.comp' - theorem times_cont_mdiff_on.comp - theorem times_cont_mdiff_on.congr - theorem times_cont_mdiff_on.continuous_on - theorem times_cont_mdiff_on.continuous_on_tangent_map_within - theorem times_cont_mdiff_on.continuous_on_tangent_map_within_aux - theorem times_cont_mdiff_on.mdifferentiable_on - theorem times_cont_mdiff_on.mono - theorem times_cont_mdiff_on.of_le - theorem times_cont_mdiff_on.of_succ - theorem times_cont_mdiff_on.prod_map - theorem times_cont_mdiff_on.prod_mk - theorem times_cont_mdiff_on.prod_mk_space - theorem times_cont_mdiff_on.smooth_on - theorem times_cont_mdiff_on.times_cont_mdiff_on_tangent_map_within - theorem times_cont_mdiff_on.times_cont_mdiff_on_tangent_map_within_aux - def times_cont_mdiff_on - theorem times_cont_mdiff_on_chart - theorem times_cont_mdiff_on_chart_symm - theorem times_cont_mdiff_on_congr - theorem times_cont_mdiff_on_const - theorem times_cont_mdiff_on_ext_chart_at - theorem times_cont_mdiff_on_fst - theorem times_cont_mdiff_on_id - theorem times_cont_mdiff_on_iff - theorem times_cont_mdiff_on_iff_target - theorem times_cont_mdiff_on_iff_times_cont_diff_on - theorem times_cont_mdiff_on_of_locally_times_cont_mdiff_on - theorem times_cont_mdiff_on_of_mem_maximal_atlas - theorem times_cont_mdiff_on_one - theorem times_cont_mdiff_on_pi_space - theorem times_cont_mdiff_on_snd - theorem times_cont_mdiff_on_symm_of_mem_maximal_atlas - theorem times_cont_mdiff_on_top - theorem times_cont_mdiff_on_univ - theorem times_cont_mdiff_one - theorem times_cont_mdiff_pi_space - theorem times_cont_mdiff_snd - theorem times_cont_mdiff_top - theorem times_cont_mdiff_within_at.comp' - theorem times_cont_mdiff_within_at.comp - theorem times_cont_mdiff_within_at.congr - theorem times_cont_mdiff_within_at.congr_of_eventually_eq - theorem times_cont_mdiff_within_at.continuous_within_at - theorem times_cont_mdiff_within_at.mdifferentiable_within_at - theorem times_cont_mdiff_within_at.mono - theorem times_cont_mdiff_within_at.of_le - theorem times_cont_mdiff_within_at.of_succ - theorem times_cont_mdiff_within_at.prod_map' - theorem times_cont_mdiff_within_at.prod_map - theorem times_cont_mdiff_within_at.prod_mk - theorem times_cont_mdiff_within_at.prod_mk_space - theorem times_cont_mdiff_within_at.smooth_within_at - theorem times_cont_mdiff_within_at.times_cont_mdiff_at - def times_cont_mdiff_within_at - theorem times_cont_mdiff_within_at_congr - theorem times_cont_mdiff_within_at_const - theorem times_cont_mdiff_within_at_fst - theorem times_cont_mdiff_within_at_id - theorem times_cont_mdiff_within_at_iff'' - theorem times_cont_mdiff_within_at_iff' - theorem times_cont_mdiff_within_at_iff - theorem times_cont_mdiff_within_at_iff_nat - theorem times_cont_mdiff_within_at_iff_target - theorem times_cont_mdiff_within_at_iff_times_cont_diff_within_at - theorem times_cont_mdiff_within_at_iff_times_cont_mdiff_on_nhds - theorem times_cont_mdiff_within_at_inter' - theorem times_cont_mdiff_within_at_inter - theorem times_cont_mdiff_within_at_one - theorem times_cont_mdiff_within_at_pi_space - theorem times_cont_mdiff_within_at_snd - theorem times_cont_mdiff_within_at_top - theorem times_cont_mdiff_within_at_univ Renamed src/geometry/manifold/times_cont_mdiff_map.lean to src/geometry/manifold/cont_mdiff_map.lean + theorem cont_mdiff_map.coe_fn_mk + theorem cont_mdiff_map.coe_inj + def cont_mdiff_map.comp + theorem cont_mdiff_map.comp_apply + def cont_mdiff_map.const + theorem cont_mdiff_map.ext + def cont_mdiff_map.id + structure cont_mdiff_map +/- def smooth_map - theorem times_cont_mdiff_map.coe_fn_mk - theorem times_cont_mdiff_map.coe_inj - def times_cont_mdiff_map.comp - theorem times_cont_mdiff_map.comp_apply - def times_cont_mdiff_map.const - theorem times_cont_mdiff_map.ext - def times_cont_mdiff_map.id - structure times_cont_mdiff_map Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean + theorem diffeomorph.cont_mdiff_at_comp_diffeomorph_iff + theorem diffeomorph.cont_mdiff_at_diffeomorph_comp_iff + theorem diffeomorph.cont_mdiff_at_trans_diffeomorph_left + theorem diffeomorph.cont_mdiff_at_trans_diffeomorph_right + theorem diffeomorph.cont_mdiff_comp_diffeomorph_iff + theorem diffeomorph.cont_mdiff_diffeomorph_comp_iff + theorem diffeomorph.cont_mdiff_on_comp_diffeomorph_iff + theorem diffeomorph.cont_mdiff_on_diffeomorph_comp_iff + theorem diffeomorph.cont_mdiff_on_trans_diffeomorph_left + theorem diffeomorph.cont_mdiff_on_trans_diffeomorph_right + theorem diffeomorph.cont_mdiff_trans_diffeomorph_left + theorem diffeomorph.cont_mdiff_trans_diffeomorph_right + theorem diffeomorph.cont_mdiff_within_at_comp_diffeomorph_iff + theorem diffeomorph.cont_mdiff_within_at_diffeomorph_comp_iff + theorem diffeomorph.cont_mdiff_within_at_trans_diffeomorph_left + theorem diffeomorph.cont_mdiff_within_at_trans_diffeomorph_right - theorem diffeomorph.times_cont_mdiff_at_comp_diffeomorph_iff - theorem diffeomorph.times_cont_mdiff_at_diffeomorph_comp_iff - theorem diffeomorph.times_cont_mdiff_at_trans_diffeomorph_left - theorem diffeomorph.times_cont_mdiff_at_trans_diffeomorph_right - theorem diffeomorph.times_cont_mdiff_comp_diffeomorph_iff - theorem diffeomorph.times_cont_mdiff_diffeomorph_comp_iff - theorem diffeomorph.times_cont_mdiff_on_comp_diffeomorph_iff - theorem diffeomorph.times_cont_mdiff_on_diffeomorph_comp_iff - theorem diffeomorph.times_cont_mdiff_on_trans_diffeomorph_left - theorem diffeomorph.times_cont_mdiff_on_trans_diffeomorph_right - theorem diffeomorph.times_cont_mdiff_trans_diffeomorph_left - theorem diffeomorph.times_cont_mdiff_trans_diffeomorph_right - theorem diffeomorph.times_cont_mdiff_within_at_comp_diffeomorph_iff - theorem diffeomorph.times_cont_mdiff_within_at_diffeomorph_comp_iff - theorem diffeomorph.times_cont_mdiff_within_at_trans_diffeomorph_left - theorem diffeomorph.times_cont_mdiff_within_at_trans_diffeomorph_right Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/instances/sphere.lean + theorem cont_diff_on_stereo_to_fun + theorem cont_diff_stereo_inv_fun_aux + theorem cont_mdiff.cod_restrict_sphere + theorem cont_mdiff_coe_sphere + theorem cont_mdiff_exp_map_circle + theorem cont_mdiff_neg_sphere - theorem times_cont_diff_on_stereo_to_fun - theorem times_cont_diff_stereo_inv_fun_aux - theorem times_cont_mdiff.cod_restrict_sphere - theorem times_cont_mdiff_coe_sphere - theorem times_cont_mdiff_exp_map_circle - theorem times_cont_mdiff_neg_sphere Modified src/geometry/manifold/instances/units_of_normed_algebra.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean + def cont_diff_groupoid + theorem cont_diff_groupoid_le + theorem cont_diff_groupoid_prod + theorem cont_diff_groupoid_zero_eq + theorem of_set_mem_cont_diff_groupoid - theorem of_set_mem_times_cont_diff_groupoid +/- def smooth_manifold_with_corners.maximal_atlas + theorem smooth_manifold_with_corners_of_cont_diff_on - theorem smooth_manifold_with_corners_of_times_cont_diff_on + theorem symm_trans_mem_cont_diff_groupoid - theorem symm_trans_mem_times_cont_diff_groupoid - def times_cont_diff_groupoid - theorem times_cont_diff_groupoid_le - theorem times_cont_diff_groupoid_prod - theorem times_cont_diff_groupoid_zero_eq Modified src/geometry/manifold/whitney_embedding.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/topology/metric_space/hausdorff_dimension.lean + theorem cont_diff.dense_compl_range_of_finrank_lt_finrank + theorem cont_diff.dimH_range_le + theorem cont_diff_on.dense_compl_image_of_dimH_lt_finrank + theorem cont_diff_on.dimH_image_le - theorem times_cont_diff.dense_compl_range_of_finrank_lt_finrank - theorem times_cont_diff.dimH_range_le - theorem times_cont_diff_on.dense_compl_image_of_dimH_lt_finrank - theorem times_cont_diff_on.dimH_image_le 2022-02-23 00:45:54 541a1a0 refactor(combinatorics/simple_graph/{basic,degree_sum}): move darts from degree_sum to basic (#12195) This also changes `simple_graph.dart` to extend `prod`, so that darts are even closer to being an ordered pair. Since this touches the module docstrings, they are updated to use fully qualified names. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.adj.symm + def simple_graph.dart.edge + theorem simple_graph.dart.edge_mem + theorem simple_graph.dart.edge_mk + theorem simple_graph.dart.edge_symm + def simple_graph.dart.symm + theorem simple_graph.dart.symm_involutive + theorem simple_graph.dart.symm_mk + theorem simple_graph.dart.symm_ne + theorem simple_graph.dart.symm_symm + structure simple_graph.dart + theorem simple_graph.dart_edge_eq_iff + def simple_graph.dart_of_neighbor_set + theorem simple_graph.dart_of_neighbor_set_injective Modified src/combinatorics/simple_graph/degree_sum.lean - def simple_graph.dart.edge - theorem simple_graph.dart.edge_mem - def simple_graph.dart.rev - theorem simple_graph.dart.rev_edge - theorem simple_graph.dart.rev_involutive - theorem simple_graph.dart.rev_ne - theorem simple_graph.dart.rev_rev - structure simple_graph.dart - theorem simple_graph.dart_edge_eq_iff - def simple_graph.dart_of_neighbor_set - theorem simple_graph.dart_of_neighbor_set_injective Modified src/data/sym/sym2.lean + theorem sym2.mk_eq_mk_iff + theorem sym2.mk_prod_swap_eq 2022-02-23 00:45:53 f6ec999 feat(ring_theory/localization): add a fintype instance (#12150) ESTIMATED CHANGES Modified src/ring_theory/localization/basic.lean 2022-02-22 22:49:03 e89222a feat(algebra/module,linear_algebra): some `restrict_scalars` lemmas (#12181) * add `linear_map.coe_restrict_scalars` (demoting `linear_map.restrict_scalars_apply` from `simp` lemma) * add `submodule.restrict_scalars_eq_top_iff` ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_map.coe_restrict_scalars + theorem linear_map.restrict_scalars_apply Modified src/algebra/module/submodule_lattice.lean + theorem submodule.restrict_scalars_eq_bot_iff + theorem submodule.restrict_scalars_eq_top_iff 2022-02-22 22:49:02 2ab3e2f feat(algebra/group/{hom,prod}): has_mul and mul_hom.prod (#12110) Ported over from `monoid_hom`. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem mul_hom.comp_mul + theorem mul_hom.mul_apply + theorem mul_hom.mul_comp Modified src/algebra/group/pi.lean + theorem mul_hom.coe_mul Modified src/algebra/group/prod.lean + theorem mul_hom.coe_fst + theorem mul_hom.coe_prod + theorem mul_hom.coe_prod_map + theorem mul_hom.coe_snd + theorem mul_hom.comp_coprod + def mul_hom.coprod + theorem mul_hom.coprod_apply + def mul_hom.fst + theorem mul_hom.fst_comp_prod + theorem mul_hom.prod_apply + theorem mul_hom.prod_comp_prod_map + def mul_hom.prod_map + theorem mul_hom.prod_map_def + theorem mul_hom.prod_unique + def mul_hom.snd + theorem mul_hom.snd_comp_prod 2022-02-22 22:49:01 18d1bdf feat(topology/algebra/group): add subgroup lemmas (#12026) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem inv_mem_connected_component_one + theorem mul_mem_connected_component_one + def subgroup.connected_component_of_one + theorem subgroup.is_normal_topological_closure + theorem topological_group.continuous_conj 2022-02-22 22:49:00 b60b790 feat(topology/algebra/group): add continuity lemmas (#11975) ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean + theorem uniform_group.uniform_continuous_iff_open_ker 2022-02-22 21:10:39 64c8d21 feat(set_theory/ordinal): `Inf_empty` (#12226) The docs mention that `Inf Ø` is defined as `0`. We prove that this is indeed the case. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.Inf_empty 2022-02-22 21:10:38 d990681 docs(set_theory/ordinal): Remove mention of `omin` from docs (#12224) #11867 replaced `omin` by `Inf`. We remove all mentions of it from the docs. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean 2022-02-22 21:10:37 f7b6f42 feat(set_theory/ordinal_arithmetic): `out_nonempty_iff_ne_zero` (#12223) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.out_nonempty_iff_ne_zero 2022-02-22 21:10:36 e50ebde chore(analysis/specific_limits): simplify proof of `cauchy_series_of_le_geometric` (#12215) This lemma is identical to the one above except over `range (n + 1)` instead of `range n`. Perhaps it could be removed entirely? I'm not sure what the policy is on breaking changes. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean 2022-02-22 21:10:34 48ddfd5 chore(linear_algebra/basic): golf `linear_equiv.smul_of_unit` (#12190) This already exists more generally as `distrib_mul_action.to_linear_equiv`. The name is probably more discoverable and it needs fewer arguments, so I've left it around for now. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finite_dimensional.lean 2022-02-22 20:21:17 6bb8f22 refactor(model_theory/terms_and_formulas): Improvements to basics of first-order formulas (#12091) Improves the simp set of lemmas related to `realize_bounded_formula` and `realize_formula`, so that they simplify higher-level definitions directly, and keep bounded formulas and formulas separate. Generalizes relabelling of bounded formulas. Defines `close_with_exists` and `close_with_forall` to quantify bounded formulas into closed formulas. Defines `bd_iff` and `iff`. ESTIMATED CHANGES Modified src/model_theory/basic.lean Modified src/model_theory/definability.lean Modified src/model_theory/direct_limit.lean Modified src/model_theory/elementary_maps.lean +/- theorem first_order.language.elementary_embedding.map_formula - theorem first_order.language.realize_bounded_formula_top +/- theorem first_order.language.realize_term_substructure + theorem first_order.language.substructure.realize_bounded_formula_top + theorem first_order.language.substructure.realize_formula_top Modified src/model_theory/quotients.lean - theorem first_order.language.realize_term_quotient_mk + theorem first_order.language.term.realize_quotient_mk Modified src/model_theory/terms_and_formulas.lean - theorem first_order.language.Theory.imp_semantically_equivalent_not_sup - theorem first_order.language.Theory.inf_semantically_equivalent_not_sup_not +/- def first_order.language.Theory.is_finitely_satisfiable +/- theorem first_order.language.Theory.is_satisfiable.is_finitely_satisfiable +/- theorem first_order.language.Theory.is_satisfiable.mono +/- def first_order.language.Theory.is_satisfiable.some_model +/- theorem first_order.language.Theory.is_satisfiable.some_model_models +/- def first_order.language.Theory.is_satisfiable +/- theorem first_order.language.Theory.model.is_satisfiable +/- def first_order.language.Theory.models_bounded_formula +/- theorem first_order.language.Theory.models_formula_iff +/- theorem first_order.language.Theory.models_sentence_iff + theorem first_order.language.Theory.semantically_equivalent.realize_bd_iff - theorem first_order.language.Theory.semantically_equivalent.realize_eq + theorem first_order.language.Theory.semantically_equivalent.realize_iff + theorem first_order.language.Theory.semantically_equivalent.some_model_realize_bd_iff - theorem first_order.language.Theory.semantically_equivalent.some_model_realize_eq + theorem first_order.language.Theory.semantically_equivalent.some_model_realize_iff - theorem first_order.language.Theory.semantically_equivalent_not_not - theorem first_order.language.Theory.sup_semantically_equivalent_not_inf_not - def first_order.language.bd_not + def first_order.language.bounded_formula.alls + def first_order.language.bounded_formula.exs + theorem first_order.language.bounded_formula.imp_semantically_equivalent_not_sup + theorem first_order.language.bounded_formula.inf_semantically_equivalent_not_sup_not + def first_order.language.bounded_formula.realize + theorem first_order.language.bounded_formula.realize_all + theorem first_order.language.bounded_formula.realize_alls + theorem first_order.language.bounded_formula.realize_bd_equal + theorem first_order.language.bounded_formula.realize_bot + theorem first_order.language.bounded_formula.realize_ex + theorem first_order.language.bounded_formula.realize_exs + theorem first_order.language.bounded_formula.realize_iff + theorem first_order.language.bounded_formula.realize_imp + theorem first_order.language.bounded_formula.realize_inf + theorem first_order.language.bounded_formula.realize_not + theorem first_order.language.bounded_formula.realize_rel + theorem first_order.language.bounded_formula.realize_relabel + theorem first_order.language.bounded_formula.realize_sup + theorem first_order.language.bounded_formula.realize_top +/- def first_order.language.bounded_formula.relabel + def first_order.language.bounded_formula.relabel_aux + theorem first_order.language.bounded_formula.semantically_equivalent_not_not + theorem first_order.language.bounded_formula.sum_elim_comp_relabel_aux + theorem first_order.language.bounded_formula.sup_semantically_equivalent_not_inf_not +/- inductive first_order.language.bounded_formula +/- theorem first_order.language.embedding.realize_term +/- theorem first_order.language.equiv.realize_bounded_formula + theorem first_order.language.equiv.realize_formula +/- theorem first_order.language.equiv.realize_term - def first_order.language.formula.equal + theorem first_order.language.formula.imp_semantically_equivalent_not_sup + theorem first_order.language.formula.inf_semantically_equivalent_not_sup_not + def first_order.language.formula.realize + theorem first_order.language.formula.realize_bot + theorem first_order.language.formula.realize_equal + theorem first_order.language.formula.realize_graph + theorem first_order.language.formula.realize_iff + theorem first_order.language.formula.realize_imp + theorem first_order.language.formula.realize_inf + theorem first_order.language.formula.realize_not + theorem first_order.language.formula.realize_rel + theorem first_order.language.formula.realize_relabel + theorem first_order.language.formula.realize_sup + theorem first_order.language.formula.realize_top + def first_order.language.formula.relabel + theorem first_order.language.formula.semantically_equivalent_not_not + theorem first_order.language.formula.sup_semantically_equivalent_not_inf_not +/- def first_order.language.formula +/- theorem first_order.language.hom.realize_term - def first_order.language.realize_bounded_formula - theorem first_order.language.realize_bounded_formula_relabel - theorem first_order.language.realize_equal - def first_order.language.realize_formula - theorem first_order.language.realize_formula_equiv - theorem first_order.language.realize_formula_relabel - theorem first_order.language.realize_graph - theorem first_order.language.realize_imp - theorem first_order.language.realize_inf - theorem first_order.language.realize_not - def first_order.language.realize_term - theorem first_order.language.realize_term_relabel + def first_order.language.relations.bounded_formula + def first_order.language.relations.formula +/- def first_order.language.sentence + def first_order.language.term.bd_equal + def first_order.language.term.equal + def first_order.language.term.realize + theorem first_order.language.term.realize_relabel +/- def first_order.language.term.relabel +/- inductive first_order.language.term 2022-02-22 18:15:35 d054fca feat(/analysis/inner_product_space/pi_L2): `inner_matrix_row_row` (#12177) The inner product between rows/columns of matrices. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem inner_matrix_col_col + theorem inner_matrix_row_row 2022-02-22 18:15:34 d0c37a1 feat(analysis/inner_product_space/adjoint): is_self_adjoint_iff_inner… (#12113) …_map_self_real A linear operator on a complex inner product space is self-adjoint precisely when ⟪T v, v⟫ is real for all v. I am interested in learning style improvements! ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem inner_map_polarization' + theorem inner_product_space.is_self_adjoint_iff_inner_map_self_real 2022-02-22 18:15:32 8f16001 chore(*): rename `erase_dup` to `dedup` (#12057) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/gcd_monoid/multiset.lean + theorem multiset.gcd_dedup - theorem multiset.gcd_erase_dup + theorem multiset.lcm_dedup - theorem multiset.lcm_erase_dup Modified src/algebra/squarefree.lean Modified src/data/fin_enum.lean Modified src/data/finset/basic.lean + theorem finset.dedup_eq_self - theorem finset.erase_dup_eq_self +/- theorem finset.image_val +/- theorem finset.insert_val' +/- theorem list.mem_to_finset + theorem list.to_finset_eq_iff_perm_dedup - theorem list.to_finset_eq_iff_perm_erase_dup +/- theorem list.to_finset_val +/- theorem multiset.mem_to_finset +/- def multiset.to_finset +/- theorem multiset.to_finset_val Modified src/data/finset/card.lean +/- theorem list.card_to_finset +/- theorem multiset.card_to_finset +/- theorem multiset.to_finset_card_le Modified src/data/finset/noncomm_prod.lean Modified src/data/finset/pi.lean Modified src/data/list/alist.lean Added src/data/list/dedup.lean + theorem list.dedup_append + theorem list.dedup_cons_of_mem' + theorem list.dedup_cons_of_mem + theorem list.dedup_cons_of_not_mem' + theorem list.dedup_cons_of_not_mem + theorem list.dedup_eq_self + theorem list.dedup_idempotent + theorem list.dedup_nil + theorem list.dedup_sublist + theorem list.dedup_subset + theorem list.mem_dedup + theorem list.nodup_dedup + theorem list.subset_dedup Modified src/data/list/default.lean Modified src/data/list/defs.lean + def list.dedup - def list.erase_dup Deleted src/data/list/erase_dup.lean - theorem list.erase_dup_append - theorem list.erase_dup_cons_of_mem' - theorem list.erase_dup_cons_of_mem - theorem list.erase_dup_cons_of_not_mem' - theorem list.erase_dup_cons_of_not_mem - theorem list.erase_dup_eq_self - theorem list.erase_dup_idempotent - theorem list.erase_dup_nil - theorem list.erase_dup_sublist - theorem list.erase_dup_subset - theorem list.mem_erase_dup - theorem list.nodup_erase_dup - theorem list.subset_erase_dup Modified src/data/list/perm.lean + theorem list.perm.dedup - theorem list.perm.erase_dup Modified src/data/list/sigma.lean + def list.dedupkeys + theorem list.dedupkeys_cons - def list.erase_dupkeys - theorem list.erase_dupkeys_cons + theorem list.lookup_dedupkeys - theorem list.lookup_erase_dupkeys + theorem list.nodupkeys_dedupkeys - theorem list.nodupkeys_erase_dupkeys + theorem list.sizeof_dedupkeys - theorem list.sizeof_erase_dupkeys Added src/data/multiset/dedup.lean + theorem multiset.coe_dedup + def multiset.dedup + theorem multiset.dedup_cons_of_mem + theorem multiset.dedup_cons_of_not_mem + theorem multiset.dedup_eq_self + theorem multiset.dedup_eq_zero + theorem multiset.dedup_ext + theorem multiset.dedup_le + theorem multiset.dedup_map_dedup_eq + theorem multiset.dedup_nsmul + theorem multiset.dedup_singleton + theorem multiset.dedup_subset' + theorem multiset.dedup_subset + theorem multiset.dedup_zero + theorem multiset.le_dedup + theorem multiset.mem_dedup + theorem multiset.nodup.le_dedup_iff_le + theorem multiset.nodup.le_nsmul_iff_le + theorem multiset.nodup_dedup + theorem multiset.subset_dedup' + theorem multiset.subset_dedup Modified src/data/multiset/default.lean Deleted src/data/multiset/erase_dup.lean - theorem multiset.coe_erase_dup - def multiset.erase_dup - theorem multiset.erase_dup_cons_of_mem - theorem multiset.erase_dup_cons_of_not_mem - theorem multiset.erase_dup_eq_self - theorem multiset.erase_dup_eq_zero - theorem multiset.erase_dup_ext - theorem multiset.erase_dup_le - theorem multiset.erase_dup_map_erase_dup_eq - theorem multiset.erase_dup_nsmul - theorem multiset.erase_dup_singleton - theorem multiset.erase_dup_subset' - theorem multiset.erase_dup_subset - theorem multiset.erase_dup_zero - theorem multiset.le_erase_dup - theorem multiset.mem_erase_dup - theorem multiset.nodup.le_erase_dup_iff_le - theorem multiset.nodup.le_nsmul_iff_le - theorem multiset.nodup_erase_dup - theorem multiset.subset_erase_dup' - theorem multiset.subset_erase_dup Modified src/data/multiset/finset_ops.lean + theorem multiset.dedup_add + theorem multiset.dedup_cons - theorem multiset.erase_dup_add - theorem multiset.erase_dup_cons Modified src/data/multiset/fold.lean + theorem multiset.fold_dedup_idem - theorem multiset.fold_erase_dup_idem + theorem multiset.le_smul_dedup - theorem multiset.le_smul_erase_dup Modified src/data/multiset/lattice.lean + theorem multiset.inf_dedup - theorem multiset.inf_erase_dup + theorem multiset.sup_dedup - theorem multiset.sup_erase_dup Modified src/data/multiset/locally_finite.lean Modified src/data/nat/interval.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/perm/concrete_cycle.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/list.lean Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/trace.lean Modified src/tactic/core.lean Modified src/tactic/simps.lean Modified src/tactic/where.lean Modified src/testing/slim_check/functions.lean 2022-02-22 18:15:31 35ef770 refactor(topology/compacts): Turn into structures, use `set_like`, cleanup (#12035) * Change `closeds`, `compacts`, `nonempty_compacts`, `positive_compacts` from `subtype` to `structure` * Use `set_like` * Add missing instances * the `lattice` and `bounded_order` instances for `closeds` * the `bounded_order` instance for `compacts` * the `semilattice_sup` and `order_top` instances for `nonempty_compacts` * the `inhabited`, `semilattice_sup` and `order_top` instances for `positive_compacts` * kill `positive_compacts_univ` in favor of `⊤` using the new `order_top` instance * rename `nonempty_positive_compacts` to `positive_compacts.nonempty` * sectioning the file ESTIMATED CHANGES Modified src/analysis/fourier.lean +/- def haar_circle Modified src/measure_theory/measure/content.lean +/- def measure_theory.content.inner_content +/- theorem measure_theory.content.inner_content_le +/- theorem measure_theory.content.le_inner_content +/- theorem measure_theory.content.le_outer_measure_compacts +/- theorem measure_theory.content.mono +/- theorem measure_theory.content.outer_measure_interior_compacts +/- theorem measure_theory.content.sup_disjoint Modified src/measure_theory/measure/haar.lean +/- theorem measure_theory.measure.haar.chaar_mem_haar_product +/- theorem measure_theory.measure.haar.chaar_mono +/- theorem measure_theory.measure.haar.chaar_self +/- theorem measure_theory.measure.haar.haar_content_self +/- def measure_theory.measure.haar.prehaar +/- theorem measure_theory.measure.haar.prehaar_empty +/- theorem measure_theory.measure.haar.prehaar_mem_haar_product +/- def measure_theory.measure.haar +/- theorem measure_theory.measure.haar_measure_self Modified src/measure_theory/measure/haar_lebesgue.lean - def topological_space.positive_compacts.Icc01 - def topological_space.positive_compacts.pi_Icc01 Modified src/measure_theory/measure/haar_quotient.lean Modified src/topology/algebra/group.lean Modified src/topology/compacts.lean + theorem topological_space.closeds.closed + theorem topological_space.closeds.coe_bot + theorem topological_space.closeds.coe_inf + theorem topological_space.closeds.coe_mk + theorem topological_space.closeds.coe_sup + theorem topological_space.closeds.coe_top + structure topological_space.closeds - def topological_space.closeds - theorem topological_space.compacts.bot_val + theorem topological_space.compacts.coe_bot + theorem topological_space.compacts.coe_finset_sup + theorem topological_space.compacts.coe_inf + theorem topological_space.compacts.coe_map + theorem topological_space.compacts.coe_mk + theorem topological_space.compacts.coe_sup + theorem topological_space.compacts.coe_top + theorem topological_space.compacts.compact - theorem topological_space.compacts.finset_sup_val - theorem topological_space.compacts.map_val - theorem topological_space.compacts.sup_val + structure topological_space.compacts - def topological_space.compacts + theorem topological_space.nonempty_compacts.coe_mk + theorem topological_space.nonempty_compacts.coe_sup + theorem topological_space.nonempty_compacts.coe_top + theorem topological_space.nonempty_compacts.compact +/- def topological_space.nonempty_compacts.to_closeds + structure topological_space.nonempty_compacts - def topological_space.nonempty_compacts + theorem topological_space.positive_compacts.coe_mk + theorem topological_space.positive_compacts.coe_sup + theorem topological_space.positive_compacts.coe_top + theorem topological_space.positive_compacts.compact + theorem topological_space.positive_compacts.interior_nonempty + def topological_space.positive_compacts.to_nonempty_compacts - def topological_space.positive_compacts: + structure topological_space.positive_compacts - def topological_space.positive_compacts_univ - theorem topological_space.positive_compacts_univ_val Modified src/topology/metric_space/closeds.lean +/- theorem emetric.closeds.edist_eq +/- theorem metric.lipschitz_inf_dist +/- theorem metric.lipschitz_inf_dist_set Modified src/topology/metric_space/gromov_hausdorff.lean + def Gromov_Hausdorff.GH_space.rep +/- theorem Gromov_Hausdorff.GH_space.to_GH_space_rep +/- theorem Gromov_Hausdorff.dist_GH_dist +/- theorem Gromov_Hausdorff.eq_to_GH_space Modified src/topology/metric_space/kuratowski.lean 2022-02-22 15:16:21 71da192 chore(ring_theory/graded_algebra/basic): remove commutativity requirement (#12208) This wasn't used ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/basic.lean 2022-02-22 15:16:20 f0401b9 chore(ring_theory): split `localization.lean` and `dedekind_domain.lean` (#12206) These files were rather long and had hundreds-deep dependency graphs. I split them into smaller files with less imports, so that they are easier to build and modify. Proof nothing was lost: ```bash $ cat src/ring_theory/localization/*.lean | sort | comm -23 <(sort src/ring_theory/localization.lean) - | grep -E 'lemma|theorem|def|instance|class' $ cat src/ring_theory/dedekind_domain/*.lean | sort | comm -23 <(sort src/ring_theory/dedekind_domain.lean) - | grep -E 'lemma|theorem|def|instance|class' giving three equivalent definitions (TODO: and shows that they are equivalent). ``` Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Splitting.20.60localization.2Elean.60.20and.20.60dedekind_domain.2Elean ESTIMATED CHANGES Modified src/algebra/category/CommRing/instances.lean Modified src/algebra/char_p/algebra.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/field_theory/ratfunc.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/function_field.lean Modified src/number_theory/number_field.lean Modified src/ring_theory/class_group.lean Added src/ring_theory/dedekind_domain/basic.lean + theorem is_dedekind_domain_iff + theorem ring.dimension_le_one.integral_closure + theorem ring.dimension_le_one.is_integral_closure + theorem ring.dimension_le_one.principal_ideal_ring + def ring.dimension_le_one Added src/ring_theory/dedekind_domain/dvr.lean + structure is_dedekind_domain_dvr Renamed src/ring_theory/dedekind_domain.lean to src/ring_theory/dedekind_domain/ideal.lean - theorem exists_integral_multiples - theorem finite_dimensional.exists_is_basis_integral - theorem integral_closure.is_dedekind_domain - theorem integral_closure.is_noetherian_ring - theorem integral_closure_le_span_dual_basis - structure is_dedekind_domain_dvr - theorem is_dedekind_domain_iff - theorem is_integral_closure.is_dedekind_domain - theorem is_integral_closure.is_noetherian_ring - theorem is_integral_closure.range_le_span_dual_basis - theorem ring.dimension_le_one.integral_closure - theorem ring.dimension_le_one.is_integral_closure - theorem ring.dimension_le_one.principal_ideal_ring - def ring.dimension_le_one Added src/ring_theory/dedekind_domain/integral_closure.lean + theorem exists_integral_multiples + theorem finite_dimensional.exists_is_basis_integral + theorem integral_closure.is_dedekind_domain + theorem integral_closure.is_noetherian_ring + theorem integral_closure_le_span_dual_basis + theorem is_integral_closure.is_dedekind_domain + theorem is_integral_closure.is_noetherian_ring + theorem is_integral_closure.range_le_span_dual_basis Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/integrally_closed.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/laurent_series.lean Modified src/ring_theory/local_properties.lean Deleted src/ring_theory/localization.lean - theorem algebra_map_mk' - theorem fraction_ring.mk_eq_div - def fraction_ring - def ideal.prime_compl - theorem integral_closure.is_fraction_ring_of_algebraic - theorem integral_closure.is_fraction_ring_of_finite_extension - theorem is_fraction_ring.coe_submodule_injective - theorem is_fraction_ring.coe_submodule_is_principal - theorem is_fraction_ring.coe_submodule_le_coe_submodule - theorem is_fraction_ring.coe_submodule_strict_mono - theorem is_fraction_ring.comap_is_algebraic_iff - theorem is_fraction_ring.div_surjective - theorem is_fraction_ring.eq_zero_of_num_eq_zero - theorem is_fraction_ring.exists_reduced_fraction - theorem is_fraction_ring.integer_normalization_eq_zero_iff - theorem is_fraction_ring.is_algebraic_iff' - theorem is_fraction_ring.is_algebraic_iff - theorem is_fraction_ring.is_fraction_ring_iff_of_base_ring_equiv - theorem is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization - theorem is_fraction_ring.is_fraction_ring_of_is_localization - theorem is_fraction_ring.is_integer_of_is_unit_denom - theorem is_fraction_ring.is_unit_denom_of_num_eq_zero - theorem is_fraction_ring.is_unit_map_of_injective - theorem is_fraction_ring.lift_algebra_map - theorem is_fraction_ring.lift_mk' - theorem is_fraction_ring.mk'_eq_div - theorem is_fraction_ring.mk'_mk_eq_div - theorem is_fraction_ring.mk'_num_denom - theorem is_fraction_ring.nontrivial - theorem is_fraction_ring.num_denom_reduced - theorem is_fraction_ring.num_mul_denom_eq_num_iff_eq' - theorem is_fraction_ring.num_mul_denom_eq_num_iff_eq - theorem is_fraction_ring.num_mul_denom_eq_num_mul_denom_iff_eq - theorem is_fraction_ring.to_map_eq_zero_iff - def is_fraction_ring - theorem is_integral_closure.is_fraction_ring_of_algebraic - theorem is_integral_closure.is_fraction_ring_of_finite_extension - theorem is_integral_localization' - theorem is_integral_localization - theorem is_integral_localization_at_leading_coeff - theorem is_localization.alg_equiv_mk' - theorem is_localization.alg_equiv_symm_mk' - def is_localization.at_one - theorem is_localization.at_prime.is_unit_mk'_iff - theorem is_localization.at_prime.is_unit_to_map_iff - theorem is_localization.at_prime.local_ring - theorem is_localization.at_prime.mk'_mem_maximal_iff - theorem is_localization.at_prime.to_map_mem_maximal_iff - def is_localization.at_unit - def is_localization.at_units - theorem is_localization.away.away_map.lift_comp - theorem is_localization.away.away_map.lift_eq - def is_localization.away.map - def is_localization.away - def is_localization.coe_submodule - theorem is_localization.coe_submodule_bot - theorem is_localization.coe_submodule_fg - theorem is_localization.coe_submodule_injective - theorem is_localization.coe_submodule_is_principal - theorem is_localization.coe_submodule_le_coe_submodule - theorem is_localization.coe_submodule_mono - theorem is_localization.coe_submodule_mul - theorem is_localization.coe_submodule_span - theorem is_localization.coe_submodule_span_singleton - theorem is_localization.coe_submodule_strict_mono - theorem is_localization.coe_submodule_sup - theorem is_localization.coe_submodule_top - theorem is_localization.coeff_integer_normalization_mem_support - theorem is_localization.coeff_integer_normalization_of_not_mem_support - theorem is_localization.comap_map_of_is_prime_disjoint - def is_localization.common_denom - def is_localization.common_denom_of_finset - theorem is_localization.eq_iff_eq - theorem is_localization.eq_mk'_iff_mul_eq - theorem is_localization.eq_of_eq - theorem is_localization.eq_zero_of_fst_eq_zero - def is_localization.equiv_inv_submonoid - theorem is_localization.exist_integer_multiples - theorem is_localization.exist_integer_multiples_of_finset - theorem is_localization.exist_integer_multiples_of_fintype - theorem is_localization.exists_integer_multiple' - theorem is_localization.exists_integer_multiple - theorem is_localization.finite_type_of_monoid_fg - def is_localization.finset_integer_multiple - theorem is_localization.finset_integer_multiple_image - def is_localization.integer_multiple - theorem is_localization.integer_normalization_aeval_eq_zero - theorem is_localization.integer_normalization_coeff - theorem is_localization.integer_normalization_eval₂_eq_zero - theorem is_localization.integer_normalization_map_to_map - theorem is_localization.integer_normalization_spec - def is_localization.inv_submonoid - theorem is_localization.is_domain_localization - theorem is_localization.is_domain_of_le_non_zero_divisors - def is_localization.is_integer - theorem is_localization.is_integer_add - theorem is_localization.is_integer_mul - theorem is_localization.is_integer_one - theorem is_localization.is_integer_smul - theorem is_localization.is_integer_zero - theorem is_localization.is_localization_iff_of_alg_equiv - theorem is_localization.is_localization_iff_of_base_ring_equiv - theorem is_localization.is_localization_iff_of_ring_equiv - theorem is_localization.is_localization_is_localization_at_prime_is_localization - theorem is_localization.is_localization_of_alg_equiv - theorem is_localization.is_localization_of_base_ring_equiv - theorem is_localization.is_localization_of_is_exists_mul_mem - theorem is_localization.is_localization_of_submonoid_le - theorem is_localization.is_noetherian_ring - theorem is_localization.is_prime_iff_is_prime_disjoint - theorem is_localization.is_prime_of_is_prime_disjoint - theorem is_localization.is_unit_comp - theorem is_localization.lift_comp - theorem is_localization.lift_eq - theorem is_localization.lift_eq_iff - theorem is_localization.lift_id - theorem is_localization.lift_injective_iff - theorem is_localization.lift_mk' - theorem is_localization.lift_mk'_spec - theorem is_localization.lift_of_comp - theorem is_localization.lift_surjective_iff - theorem is_localization.lift_unique - def is_localization.localization_algebra_of_submonoid_le - theorem is_localization.localization_is_scalar_tower_of_submonoid_le - def is_localization.localization_localization_at_prime_iso_localization - theorem is_localization.localization_localization_eq_iff_exists - theorem is_localization.localization_localization_is_localization - theorem is_localization.localization_localization_is_localization_of_has_all_units - theorem is_localization.localization_localization_map_units - def is_localization.localization_localization_submodule - theorem is_localization.localization_localization_surj - theorem is_localization.map_comap - theorem is_localization.map_comp - theorem is_localization.map_comp_map - theorem is_localization.map_eq - theorem is_localization.map_eq_zero_iff - theorem is_localization.map_id - theorem is_localization.map_injective_of_injective - theorem is_localization.map_integer_multiple - theorem is_localization.map_left_cancel - theorem is_localization.map_map - theorem is_localization.map_mk' - theorem is_localization.map_non_zero_divisors_le - theorem is_localization.map_right_cancel - theorem is_localization.map_smul - theorem is_localization.map_unique - theorem is_localization.mem_coe_submodule - theorem is_localization.mem_inv_submonoid_iff_exists_mk' - theorem is_localization.mem_localization_localization_submodule - theorem is_localization.mem_map_algebra_map_iff - theorem is_localization.mk'_add - theorem is_localization.mk'_eq_iff_eq - theorem is_localization.mk'_eq_iff_eq_mul - theorem is_localization.mk'_eq_iff_mk'_eq - theorem is_localization.mk'_eq_mul_mk'_one - theorem is_localization.mk'_eq_of_eq - theorem is_localization.mk'_eq_zero_iff - theorem is_localization.mk'_mem_iff - theorem is_localization.mk'_mul - theorem is_localization.mk'_mul_cancel_left - theorem is_localization.mk'_mul_cancel_right - theorem is_localization.mk'_mul_mk'_eq_one' - theorem is_localization.mk'_mul_mk'_eq_one - theorem is_localization.mk'_one - theorem is_localization.mk'_sec - theorem is_localization.mk'_self'' - theorem is_localization.mk'_self' - theorem is_localization.mk'_self - theorem is_localization.mk'_spec' - theorem is_localization.mk'_spec'_mk - theorem is_localization.mk'_spec - theorem is_localization.mk'_spec_mk - theorem is_localization.mk'_surjective - theorem is_localization.monoid_hom_ext - theorem is_localization.mul_mk'_eq_mk'_of_mul - theorem is_localization.mul_to_inv_submonoid - theorem is_localization.non_zero_divisors_le_comap - theorem is_localization.of_le - def is_localization.order_embedding - def is_localization.order_iso_of_prime - theorem is_localization.ring_equiv_of_ring_equiv_eq - theorem is_localization.ring_equiv_of_ring_equiv_eq_map - theorem is_localization.ring_equiv_of_ring_equiv_mk' - theorem is_localization.ring_hom_ext - theorem is_localization.sec_spec' - theorem is_localization.sec_spec - theorem is_localization.smul_to_inv_submonoid - theorem is_localization.span_inv_submonoid - theorem is_localization.submonoid_map_le_is_unit - theorem is_localization.surj' - theorem is_localization.surjective_quotient_map_of_maximal_of_localization - def is_localization.to_inv_submonoid - theorem is_localization.to_inv_submonoid_eq_mk' - theorem is_localization.to_inv_submonoid_mul - theorem is_localization.to_inv_submonoid_surjective - def is_localization.to_localization_map - theorem is_localization.to_localization_map_sec - theorem is_localization.to_localization_map_to_map - theorem is_localization.to_localization_map_to_map_apply - theorem is_localization.to_map_eq_zero_iff - theorem localization.add_mk - theorem localization.add_mk_self - theorem localization.alg_equiv_mk' - theorem localization.alg_equiv_mk - theorem localization.alg_equiv_symm_mk' - theorem localization.alg_equiv_symm_mk - theorem localization.at_prime.comap_maximal_ideal - theorem localization.at_prime.map_eq_maximal_ideal - def localization.away_lift - def localization.away_map - theorem localization.le_comap_prime_compl_iff - theorem localization.lift_on_zero - theorem localization.local_ring_hom_comp - theorem localization.local_ring_hom_id - theorem localization.local_ring_hom_mk' - theorem localization.local_ring_hom_to_map - theorem localization.local_ring_hom_unique - theorem localization.mk_eq_mk' - theorem localization.mk_eq_mk'_apply - theorem localization.mk_one_eq_algebra_map - theorem localization.mk_zero - theorem localization.monoid_of_eq_algebra_map - theorem localization.neg_mk - theorem localization.to_localization_map_eq_monoid_of - theorem localization_algebra_injective - theorem localization_map_bijective_of_field - theorem ring_hom.is_integral_elem_localization_at_leading_coeff Added src/ring_theory/localization/at_prime.lean + def ideal.prime_compl + theorem is_localization.at_prime.is_unit_mk'_iff + theorem is_localization.at_prime.is_unit_to_map_iff + theorem is_localization.at_prime.local_ring + theorem is_localization.at_prime.mk'_mem_maximal_iff + theorem is_localization.at_prime.to_map_mem_maximal_iff + theorem localization.at_prime.comap_maximal_ideal + theorem localization.at_prime.map_eq_maximal_ideal + theorem localization.le_comap_prime_compl_iff + theorem localization.local_ring_hom_comp + theorem localization.local_ring_hom_id + theorem localization.local_ring_hom_mk' + theorem localization.local_ring_hom_to_map + theorem localization.local_ring_hom_unique Added src/ring_theory/localization/away.lean + def is_localization.at_one + def is_localization.at_unit + def is_localization.at_units + theorem is_localization.away.away_map.lift_comp + theorem is_localization.away.away_map.lift_eq + def is_localization.away.map + def is_localization.away + def localization.away_lift + def localization.away_map Added src/ring_theory/localization/basic.lean + theorem algebra_map_mk' + theorem is_localization.alg_equiv_mk' + theorem is_localization.alg_equiv_symm_mk' + theorem is_localization.eq_iff_eq + theorem is_localization.eq_mk'_iff_mul_eq + theorem is_localization.eq_of_eq + theorem is_localization.eq_zero_of_fst_eq_zero + theorem is_localization.is_domain_localization + theorem is_localization.is_domain_of_le_non_zero_divisors + theorem is_localization.is_localization_iff_of_alg_equiv + theorem is_localization.is_localization_iff_of_base_ring_equiv + theorem is_localization.is_localization_iff_of_ring_equiv + theorem is_localization.is_localization_of_alg_equiv + theorem is_localization.is_localization_of_base_ring_equiv + theorem is_localization.is_unit_comp + theorem is_localization.lift_comp + theorem is_localization.lift_eq + theorem is_localization.lift_eq_iff + theorem is_localization.lift_id + theorem is_localization.lift_injective_iff + theorem is_localization.lift_mk' + theorem is_localization.lift_mk'_spec + theorem is_localization.lift_of_comp + theorem is_localization.lift_surjective_iff + theorem is_localization.lift_unique + theorem is_localization.map_comp + theorem is_localization.map_comp_map + theorem is_localization.map_eq + theorem is_localization.map_eq_zero_iff + theorem is_localization.map_id + theorem is_localization.map_injective_of_injective + theorem is_localization.map_left_cancel + theorem is_localization.map_map + theorem is_localization.map_mk' + theorem is_localization.map_non_zero_divisors_le + theorem is_localization.map_right_cancel + theorem is_localization.map_smul + theorem is_localization.map_unique + theorem is_localization.mk'_add + theorem is_localization.mk'_eq_iff_eq + theorem is_localization.mk'_eq_iff_eq_mul + theorem is_localization.mk'_eq_iff_mk'_eq + theorem is_localization.mk'_eq_mul_mk'_one + theorem is_localization.mk'_eq_of_eq + theorem is_localization.mk'_eq_zero_iff + theorem is_localization.mk'_mem_iff + theorem is_localization.mk'_mul + theorem is_localization.mk'_mul_cancel_left + theorem is_localization.mk'_mul_cancel_right + theorem is_localization.mk'_mul_mk'_eq_one' + theorem is_localization.mk'_mul_mk'_eq_one + theorem is_localization.mk'_one + theorem is_localization.mk'_sec + theorem is_localization.mk'_self'' + theorem is_localization.mk'_self' + theorem is_localization.mk'_self + theorem is_localization.mk'_spec' + theorem is_localization.mk'_spec'_mk + theorem is_localization.mk'_spec + theorem is_localization.mk'_spec_mk + theorem is_localization.mk'_surjective + theorem is_localization.monoid_hom_ext + theorem is_localization.mul_mk'_eq_mk'_of_mul + theorem is_localization.non_zero_divisors_le_comap + theorem is_localization.of_le + theorem is_localization.ring_equiv_of_ring_equiv_eq + theorem is_localization.ring_equiv_of_ring_equiv_eq_map + theorem is_localization.ring_equiv_of_ring_equiv_mk' + theorem is_localization.ring_hom_ext + theorem is_localization.sec_spec' + theorem is_localization.sec_spec + def is_localization.to_localization_map + theorem is_localization.to_localization_map_sec + theorem is_localization.to_localization_map_to_map + theorem is_localization.to_localization_map_to_map_apply + theorem is_localization.to_map_eq_zero_iff + theorem localization.add_mk + theorem localization.add_mk_self + theorem localization.alg_equiv_mk' + theorem localization.alg_equiv_mk + theorem localization.alg_equiv_symm_mk' + theorem localization.alg_equiv_symm_mk + theorem localization.lift_on_zero + theorem localization.mk_eq_mk' + theorem localization.mk_eq_mk'_apply + theorem localization.mk_one_eq_algebra_map + theorem localization.mk_zero + theorem localization.monoid_of_eq_algebra_map + theorem localization.neg_mk + theorem localization.to_localization_map_eq_monoid_of + theorem localization_algebra_injective + theorem localization_map_bijective_of_field Added src/ring_theory/localization/fraction_ring.lean + theorem fraction_ring.mk_eq_div + def fraction_ring + theorem is_fraction_ring.div_surjective + theorem is_fraction_ring.is_fraction_ring_iff_of_base_ring_equiv + theorem is_fraction_ring.is_unit_map_of_injective + theorem is_fraction_ring.lift_algebra_map + theorem is_fraction_ring.lift_mk' + theorem is_fraction_ring.mk'_eq_div + theorem is_fraction_ring.mk'_mk_eq_div + theorem is_fraction_ring.nontrivial + theorem is_fraction_ring.to_map_eq_zero_iff + def is_fraction_ring Added src/ring_theory/localization/ideal.lean + theorem is_localization.comap_map_of_is_prime_disjoint + theorem is_localization.is_prime_iff_is_prime_disjoint + theorem is_localization.is_prime_of_is_prime_disjoint + theorem is_localization.map_comap + theorem is_localization.mem_map_algebra_map_iff + def is_localization.order_embedding + def is_localization.order_iso_of_prime + theorem is_localization.surjective_quotient_map_of_maximal_of_localization Added src/ring_theory/localization/integer.lean + def is_localization.common_denom + def is_localization.common_denom_of_finset + theorem is_localization.exist_integer_multiples + theorem is_localization.exist_integer_multiples_of_finset + theorem is_localization.exist_integer_multiples_of_fintype + theorem is_localization.exists_integer_multiple' + theorem is_localization.exists_integer_multiple + def is_localization.finset_integer_multiple + theorem is_localization.finset_integer_multiple_image + def is_localization.integer_multiple + def is_localization.is_integer + theorem is_localization.is_integer_add + theorem is_localization.is_integer_mul + theorem is_localization.is_integer_one + theorem is_localization.is_integer_smul + theorem is_localization.is_integer_zero + theorem is_localization.map_integer_multiple Added src/ring_theory/localization/integral.lean + theorem integral_closure.is_fraction_ring_of_algebraic + theorem integral_closure.is_fraction_ring_of_finite_extension + theorem is_fraction_ring.comap_is_algebraic_iff + theorem is_fraction_ring.integer_normalization_eq_zero_iff + theorem is_fraction_ring.is_algebraic_iff' + theorem is_fraction_ring.is_algebraic_iff + theorem is_integral_closure.is_fraction_ring_of_algebraic + theorem is_integral_closure.is_fraction_ring_of_finite_extension + theorem is_integral_localization' + theorem is_integral_localization + theorem is_integral_localization_at_leading_coeff + theorem is_localization.coeff_integer_normalization_mem_support + theorem is_localization.coeff_integer_normalization_of_not_mem_support + theorem is_localization.integer_normalization_aeval_eq_zero + theorem is_localization.integer_normalization_coeff + theorem is_localization.integer_normalization_eval₂_eq_zero + theorem is_localization.integer_normalization_map_to_map + theorem is_localization.integer_normalization_spec + theorem ring_hom.is_integral_elem_localization_at_leading_coeff Added src/ring_theory/localization/inv_submonoid.lean + def is_localization.equiv_inv_submonoid + theorem is_localization.finite_type_of_monoid_fg + def is_localization.inv_submonoid + theorem is_localization.mem_inv_submonoid_iff_exists_mk' + theorem is_localization.mul_to_inv_submonoid + theorem is_localization.smul_to_inv_submonoid + theorem is_localization.span_inv_submonoid + theorem is_localization.submonoid_map_le_is_unit + theorem is_localization.surj' + def is_localization.to_inv_submonoid + theorem is_localization.to_inv_submonoid_eq_mk' + theorem is_localization.to_inv_submonoid_mul + theorem is_localization.to_inv_submonoid_surjective Added src/ring_theory/localization/localization_localization.lean + theorem is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization + theorem is_fraction_ring.is_fraction_ring_of_is_localization + theorem is_localization.is_localization_is_localization_at_prime_is_localization + theorem is_localization.is_localization_of_is_exists_mul_mem + theorem is_localization.is_localization_of_submonoid_le + def is_localization.localization_algebra_of_submonoid_le + theorem is_localization.localization_is_scalar_tower_of_submonoid_le + def is_localization.localization_localization_at_prime_iso_localization + theorem is_localization.localization_localization_eq_iff_exists + theorem is_localization.localization_localization_is_localization + theorem is_localization.localization_localization_is_localization_of_has_all_units + theorem is_localization.localization_localization_map_units + def is_localization.localization_localization_submodule + theorem is_localization.localization_localization_surj + theorem is_localization.mem_localization_localization_submodule Added src/ring_theory/localization/num_denom.lean + theorem is_fraction_ring.eq_zero_of_num_eq_zero + theorem is_fraction_ring.exists_reduced_fraction + theorem is_fraction_ring.is_integer_of_is_unit_denom + theorem is_fraction_ring.is_unit_denom_of_num_eq_zero + theorem is_fraction_ring.mk'_num_denom + theorem is_fraction_ring.num_denom_reduced + theorem is_fraction_ring.num_mul_denom_eq_num_iff_eq' + theorem is_fraction_ring.num_mul_denom_eq_num_iff_eq + theorem is_fraction_ring.num_mul_denom_eq_num_mul_denom_iff_eq Added src/ring_theory/localization/submodule.lean + theorem is_fraction_ring.coe_submodule_injective + theorem is_fraction_ring.coe_submodule_is_principal + theorem is_fraction_ring.coe_submodule_le_coe_submodule + theorem is_fraction_ring.coe_submodule_strict_mono + def is_localization.coe_submodule + theorem is_localization.coe_submodule_bot + theorem is_localization.coe_submodule_fg + theorem is_localization.coe_submodule_injective + theorem is_localization.coe_submodule_is_principal + theorem is_localization.coe_submodule_le_coe_submodule + theorem is_localization.coe_submodule_mono + theorem is_localization.coe_submodule_mul + theorem is_localization.coe_submodule_span + theorem is_localization.coe_submodule_span_singleton + theorem is_localization.coe_submodule_strict_mono + theorem is_localization.coe_submodule_sup + theorem is_localization.coe_submodule_top + theorem is_localization.is_noetherian_ring + theorem is_localization.mem_coe_submodule Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/set_theory/surreal/dyadic.lean Modified src/topology/algebra/localization.lean 2022-02-22 15:16:19 deb5046 feat(mv_polynomial/basic): monomial_eq_monomial_iff (#12198) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.monomial_eq_monomial_iff 2022-02-22 15:16:18 8b09b0e feat(measure_theory/group/arithmetic): add `has_measurable_smul.op` and `has_measurable_smul₂.op` (#12196) This matches the naming of `has_continuous_smul.op`. ESTIMATED CHANGES Modified src/measure_theory/group/arithmetic.lean 2022-02-22 15:16:17 79c5de9 feat(ring_theory/ideal/operations): remove unneeded assumptions from `smul_induction_on` (#12193) ESTIMATED CHANGES Modified src/linear_algebra/adic_completion.lean Modified src/ring_theory/ideal/operations.lean 2022-02-22 15:16:15 f6d397f feat(order/hom/basic): `order_iso_class` (#12157) Define `order_iso_class`, following the hom refactor. Also add a few missing lemmas. ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/linear_algebra/basic.lean - theorem linear_map.map_le_map_iff Modified src/linear_algebra/quotient.lean Modified src/order/hom/basic.lean + theorem order_iso.ext + theorem order_iso.to_fun_eq_coe 2022-02-22 15:16:14 4c6b0de feat(topology/bases): disjoint unions of second-countable spaces are second-countable (#12061) ESTIMATED CHANGES Modified src/topology/bases.lean + theorem is_topological_basis_singletons + theorem topological_space.is_topological_basis.is_open_iff + theorem topological_space.is_topological_basis.sigma + theorem topological_space.is_topological_basis.sum Modified src/topology/constructions.lean + theorem closed_embedding_inl + theorem closed_embedding_inr + theorem is_closed_range_inl + theorem is_closed_range_inr Modified src/topology/continuous_on.lean + theorem continuous_on.mono_dom + theorem continuous_on.mono_rng Modified src/topology/homeomorph.lean + def equiv.to_homeomorph_of_inducing Modified src/topology/order.lean + theorem continuous_id_of_le 2022-02-22 13:18:00 8413f07 feat(topology/support): define topological support and compactly supported functions (#11923) * Also add some variants of the extreme value theorem. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/analysis/calculus/specific_functions.lean - theorem times_cont_diff_bump.closure_support_eq - theorem times_cont_diff_bump.compact_closure_support - theorem times_cont_diff_bump.exists_closure_support_subset + theorem times_cont_diff_bump.exists_tsupport_subset + theorem times_cont_diff_bump.tsupport_eq Modified src/analysis/normed/group/basic.lean + theorem continuous.bounded_above_of_compact_support + theorem has_compact_support_norm_iff Modified src/geometry/manifold/bump_function.lean - theorem smooth_bump_function.closure_support_mem_nhds - theorem smooth_bump_function.closure_support_subset_chart_at_source - theorem smooth_bump_function.closure_support_subset_ext_chart_at_source - theorem smooth_bump_function.closure_support_subset_symm_image_closed_ball - theorem smooth_bump_function.compact_closure_support - theorem smooth_bump_function.nhds_basis_closure_support + theorem smooth_bump_function.nhds_basis_tsupport + theorem smooth_bump_function.tsupport_mem_nhds + theorem smooth_bump_function.tsupport_subset_chart_at_source + theorem smooth_bump_function.tsupport_subset_ext_chart_at_source + theorem smooth_bump_function.tsupport_subset_symm_image_closed_ball Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/measure_theory/integral/integrable_on.lean - theorem continuous.integrable_of_compact_closure_support + theorem continuous.integrable_of_has_compact_support Modified src/topology/algebra/order/compact.lean + theorem continuous.bdd_above_range_of_has_compact_mul_support + theorem continuous.bdd_below_range_of_has_compact_mul_support + theorem continuous.exists_forall_ge' + theorem continuous.exists_forall_ge_of_has_compact_mul_support + theorem continuous.exists_forall_le' +/- theorem continuous.exists_forall_le + theorem continuous.exists_forall_le_of_has_compact_mul_support + theorem is_compact.bdd_above_image + theorem is_compact.bdd_below_image Modified src/topology/homeomorph.lean + theorem has_compact_mul_support.comp_homeomorph Modified src/topology/partition_of_unity.lean Added src/topology/support.lean + theorem exists_compact_iff_has_compact_mul_support + theorem has_compact_mul_support.comp_closed_embedding + theorem has_compact_mul_support.comp_left + theorem has_compact_mul_support.comp₂_left + theorem has_compact_mul_support.intro + theorem has_compact_mul_support.is_compact + theorem has_compact_mul_support.mono' + theorem has_compact_mul_support.mono + theorem has_compact_mul_support.mul + def has_compact_mul_support + theorem has_compact_mul_support_comp_left + theorem has_compact_mul_support_def + theorem has_compact_mul_support_iff_eventually_eq + theorem has_compact_support.mul_left + theorem has_compact_support.mul_right + theorem has_compact_support.smul_left' + theorem has_compact_support.smul_left + theorem has_compact_support.smul_right + theorem image_eq_zero_of_nmem_mul_tsupport + theorem is_closed_mul_tsupport + def mul_tsupport + theorem mul_tsupport_eq_empty_iff + theorem not_mem_closure_mul_support_iff_eventually_eq + theorem subset_mul_tsupport 2022-02-22 10:50:40 80591d6 feat(order/hom/lattice): Finitary join-/meet-preserving maps (#12149) Define `sup_bot_hom`, `inf_top_hom` and their associated class. ESTIMATED CHANGES Modified src/order/bounded_order.lean + def bounded_order.lift + def order_bot.lift + def order_top.lift Modified src/order/complete_lattice.lean - def bounded_order.lift - def order_bot.lift - def order_top.lift Modified src/order/hom/lattice.lean + def bounded_lattice_hom.to_inf_top_hom + def bounded_lattice_hom.to_sup_bot_hom + theorem inf_hom.bot_apply + theorem inf_hom.coe_bot + theorem inf_hom.coe_top + theorem inf_hom.top_apply + theorem inf_top_hom.cancel_left + theorem inf_top_hom.cancel_right + theorem inf_top_hom.coe_comp + theorem inf_top_hom.coe_id + theorem inf_top_hom.coe_inf + theorem inf_top_hom.coe_top + def inf_top_hom.comp + theorem inf_top_hom.comp_apply + theorem inf_top_hom.comp_assoc + theorem inf_top_hom.comp_id + theorem inf_top_hom.ext + theorem inf_top_hom.id_apply + theorem inf_top_hom.id_comp + theorem inf_top_hom.inf_apply + theorem inf_top_hom.to_fun_eq_coe + def inf_top_hom.to_top_hom + theorem inf_top_hom.top_apply + structure inf_top_hom + theorem map_finset_inf + theorem map_finset_sup + theorem sup_bot_hom.bot_apply + theorem sup_bot_hom.cancel_left + theorem sup_bot_hom.cancel_right + theorem sup_bot_hom.coe_bot + theorem sup_bot_hom.coe_comp + theorem sup_bot_hom.coe_id + theorem sup_bot_hom.coe_sup + def sup_bot_hom.comp + theorem sup_bot_hom.comp_apply + theorem sup_bot_hom.comp_assoc + theorem sup_bot_hom.comp_id + theorem sup_bot_hom.ext + theorem sup_bot_hom.id_apply + theorem sup_bot_hom.id_comp + theorem sup_bot_hom.sup_apply + def sup_bot_hom.to_bot_hom + theorem sup_bot_hom.to_fun_eq_coe + structure sup_bot_hom + theorem sup_hom.bot_apply + theorem sup_hom.coe_bot + theorem sup_hom.coe_top +/- theorem sup_hom.sup_apply + theorem sup_hom.top_apply 2022-02-22 10:50:39 68efb10 refactor(topology/*): Hom classes for continuous maps/homs (#11909) Add * `continuous_map_class` * `bounded_continuous_map_class` * `continuous_monoid_hom_class` * `continuous_add_monoid_hom_class` * `continuous_map.homotopy_class` to follow the `fun_like` design. Deprecate lemmas accordingly. Also rename a few fields to match the convention in the rest of the library. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean +/- theorem prime_spectrum.comap_id Modified src/topology/algebra/continuous_monoid_hom.lean +/- def continuous_monoid_hom.mk' + def continuous_monoid_hom.to_continuous_map + theorem continuous_monoid_hom.to_continuous_map_injective +/- structure continuous_monoid_hom Modified src/topology/category/CompHaus/default.lean Modified src/topology/compact_open.lean +/- theorem continuous_map.coe_const' +/- theorem continuous_map.continuous_const' Modified src/topology/continuous_function/algebra.lean +/- theorem continuous_map.coe_mul +/- theorem continuous_map.coe_one +/- theorem continuous_map.one_comp Modified src/topology/continuous_function/basic.lean + theorem continuous_map.cancel_left + theorem continuous_map.cancel_right + theorem continuous_map.coe_comp + theorem continuous_map.coe_const + theorem continuous_map.coe_id +/- theorem continuous_map.comp_apply + theorem continuous_map.comp_assoc - theorem continuous_map.comp_coe + theorem continuous_map.comp_const +/- theorem continuous_map.comp_id +/- def continuous_map.const +/- theorem continuous_map.const_apply - theorem continuous_map.const_coe + theorem continuous_map.const_comp +/- theorem continuous_map.continuous_set_coe +/- theorem continuous_map.ext - theorem continuous_map.ext_iff - def continuous_map.id +/- theorem continuous_map.id_apply - theorem continuous_map.id_coe +/- theorem continuous_map.id_comp +/- structure continuous_map + theorem map_continuous_at + theorem map_continuous_within_at Modified src/topology/continuous_function/bounded.lean - theorem bounded_continuous_function.coe_injective +/- theorem bounded_continuous_function.ext - theorem bounded_continuous_function.ext_iff +/- theorem bounded_continuous_function.forall_coe_one_iff_one +/- def bounded_continuous_function.restrict Modified src/topology/continuous_function/polynomial.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/homotopy/basic.lean +/- theorem continuous_map.homotopy.apply_one +/- theorem continuous_map.homotopy.apply_zero - theorem continuous_map.homotopy.coe_fn_injective +/- theorem continuous_map.homotopy.ext +/- theorem continuous_map.homotopy_with.apply_one +/- theorem continuous_map.homotopy_with.apply_zero Modified src/topology/homotopy/equiv.lean Modified src/topology/homotopy/fundamental_groupoid.lean Modified src/topology/homotopy/path.lean Modified src/topology/homotopy/product.lean +/- def continuous_map.homotopy.pi Modified src/topology/opens.lean +/- theorem topological_space.opens.comap_id Modified src/topology/tietze_extension.lean 2022-02-22 10:50:38 247943a feat(analysis/seminorm): add inf (#11791) Define the infimum of seminorms. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.inf_apply + theorem seminorm.le_insert' + theorem seminorm.le_insert + theorem seminorm.smul_inf Modified src/order/conditionally_complete_lattice.lean + theorem csupr_mul_csupr_le + theorem csupr_mul_le + theorem le_cinfi_mul + theorem le_cinfi_mul_cinfi + theorem le_mul_cinfi + theorem mul_csupr_le 2022-02-22 10:10:32 9a7ed8c chore(algebra/lie/engel): speed up proof of Engel's theorem slightly (#12205) Local measurements using `set_option profiler true` are noisy but indicate that this speeds up elaboration of `lie_algebra.is_engelian_of_is_noetherian` by about 20% from about 10s to about 8s. ESTIMATED CHANGES Modified src/algebra/lie/engel.lean 2022-02-22 03:09:07 cb45da2 feat(category_theory/limits): is_bilimit (#12108) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + structure category_theory.limits.bicone.is_bilimit + def category_theory.limits.bicone.of_colimit_cocone + def category_theory.limits.bicone.of_limit_cone + def category_theory.limits.bicone.to_binary_bicone_is_bilimit +/- def category_theory.limits.bicone.to_binary_bicone_is_colimit +/- def category_theory.limits.bicone.to_binary_bicone_is_limit + theorem category_theory.limits.bicone.ι_of_is_limit + theorem category_theory.limits.bicone.π_of_is_colimit +/- theorem category_theory.limits.bicone_ι_π_ne + structure category_theory.limits.binary_bicone.is_bilimit + def category_theory.limits.binary_bicone.to_bicone + def category_theory.limits.binary_bicone.to_bicone_is_bilimit + def category_theory.limits.binary_bicone.to_bicone_is_colimit + def category_theory.limits.binary_bicone.to_bicone_is_limit + def category_theory.limits.binary_biproduct.is_bilimit + def category_theory.limits.biproduct.is_bilimit 2022-02-22 00:37:45 e16e093 feat(analysis/specific_limits): dirichlet and alternating series tests (#11908) Adds [Dirichlet's test](https://en.wikipedia.org/wiki/Dirichlet%27s_test) along with the [alternating series test](https://en.wikipedia.org/wiki/Alternating_series_test) as a special case of the former. For the curious, [Nick Bingham's course notes](https://www.ma.imperial.ac.uk/~bin06/M2PM3-Complex-Analysis/m2pm3abeldir.pdf) give some more context on Dirichlet's test. It's somewhat obscure. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/big_operators/intervals.lean Modified src/analysis/normed/group/infinite_sum.lean + theorem cauchy_seq_range_of_norm_bounded Modified src/analysis/specific_limits.lean + theorem antitone.cauchy_seq_alternating_series_of_tendsto_zero + theorem antitone.cauchy_seq_series_mul_of_tendsto_zero_of_bounded + theorem antitone.tendsto_alternating_series_of_tendsto_zero + theorem monotone.cauchy_seq_alternating_series_of_tendsto_zero + theorem monotone.cauchy_seq_series_mul_of_tendsto_zero_of_bounded + theorem monotone.tendsto_alternating_series_of_tendsto_zero + theorem norm_sum_neg_one_pow_le Modified src/topology/uniform_space/cauchy.lean +/- def sequentially_complete.set_seq 2022-02-21 23:46:54 d77e91f perf(geometry/euclidean): speed up proof on the edge of timing out (#12191) ESTIMATED CHANGES Modified src/geometry/euclidean/oriented_angle.lean 2022-02-21 23:46:53 22464cf feat(analysis/normed_space/basic): `norm_matrix_lt_iff` (#12151) A strict variant of `norm_matrix_le_iff`, using `pi_norm_lt_iff` ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem norm_matrix_lt_iff 2022-02-21 22:53:11 eb5c5ed feat(measure_theory/integral/set_integral): Bochner integral with respect to a measure with density (#12123) This PR shows that `∫ a, g a ∂(μ.with_density (λ x, f x)) = ∫ a, f a • g a ∂μ`. (This fact is already available for the Lebesgue integral, not for the Bochner integral.) ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem continuous_on.measurable_piecewise Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable_with_density_iff_integrable_coe_smul + theorem measure_theory.integrable_with_density_iff_integrable_coe_smul₀ +/- theorem measure_theory.integrable_with_density_iff_integrable_smul + theorem measure_theory.integrable_with_density_iff_integrable_smul₀ + theorem measure_theory.mem_ℒ1_smul_of_L1_with_density + theorem measure_theory.with_density_smul_li_apply Modified src/measure_theory/group/measure.lean Modified src/measure_theory/integral/set_integral.lean + theorem integral_with_density_eq_integral_smul + theorem integral_with_density_eq_integral_smul₀ + theorem set_integral_with_density_eq_set_integral_smul + theorem set_integral_with_density_eq_set_integral_smul₀ 2022-02-21 22:24:46 8aa26b2 feat(tactic/linear_combination): improve error messages and degenerate case (#12062) This threads the expected type of the combination from the target throughout the tactic call. If no hypotheses are given to combine, the behavior is effectively to just call the normalization tactic. closes #11990 ESTIMATED CHANGES Modified src/tactic/linear_combination.lean Modified test/linear_combination.lean 2022-02-21 21:06:38 2971f3d feat(algebra/star/self_adjoint): remove commutativity hypothesis from `has_pow (self_adjoint R)` (#12188) This was put in the wrong section. Powers of selfadjoint elements are still selfadjoint. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean 2022-02-21 21:06:37 a607820 feat(category_theory/equivalence): if two functors F and G are isomorphic, F is an equivalence iff G is (#12162) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean + def category_theory.is_equivalence.cancel_comp_left + def category_theory.is_equivalence.cancel_comp_right + def category_theory.is_equivalence.equiv_of_iso + def category_theory.is_equivalence.of_iso + theorem category_theory.is_equivalence.of_iso_refl + theorem category_theory.is_equivalence.of_iso_trans 2022-02-21 21:06:35 9a17b55 feat(analysis/normed_space/basic): `norm_entry_le_entrywise_sup_norm` (#12159) The entries of a matrix are at most the entrywise sup norm. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem matrix.norm_entry_le_entrywise_sup_norm 2022-02-21 19:14:30 1cfbcc6 feat(algebra/ring/ulift): add a `field` instance (#12141) ESTIMATED CHANGES Modified src/algebra/group/ulift.lean Modified src/algebra/ring/ulift.lean 2022-02-21 16:41:40 e3d3681 feat(analysis/inner_product_space/spectrum): `pos_nonneg_eigenvalues` (#12161) If T is a positive self-adjoint operator, then its eigenvalues are nonnegative. Maybe there should be a definition of "positive operator", and maybe this should be generalized. Guidance appreciated! ESTIMATED CHANGES Modified src/analysis/inner_product_space/spectrum.lean + theorem eigenvalue_nonneg_of_nonneg + theorem eigenvalue_pos_of_pos + theorem inner_product_apply_eigenvector 2022-02-21 15:30:08 02dc6f2 feat(probability/stopping): filtrations are a complete lattice (#12169) ESTIMATED CHANGES Modified src/probability/stopping.lean - def measure_theory.const_filtration + theorem measure_theory.filtration.Inf_def + theorem measure_theory.filtration.Sup_def + theorem measure_theory.filtration.coe_fn_inf + theorem measure_theory.filtration.coe_fn_sup + def measure_theory.filtration.const 2022-02-21 15:30:07 9ed7179 refactor(*): move normed field lemmas into root namespace (#12163) This takes the normed field lemmas given in `analysis.normed_space.basic` and moves them from the `normed_field` namespace into the root namespace. This PR moves these lemmas and definitions: `norm_mul`, `nnnorm_mul`, `norm_hom`, `nnnorm_hom`, `norm_pow`, `nnnorm_pow`, `norm_prod`, `nnnorm_prod`, `norm_div`, `nnnorm_div`, `norm_inv`, `nnnorm_inv`, `norm_zpow`, `nnnorm_zpow`. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/asymptotics/specific_asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/complex/conformal.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean + theorem nnnorm_div + def nnnorm_hom + theorem nnnorm_inv + theorem nnnorm_mul + theorem nnnorm_pow + theorem nnnorm_prod + theorem nnnorm_zpow + theorem norm_div + def norm_hom + theorem norm_inv + theorem norm_mul + theorem norm_pow + theorem norm_prod + theorem norm_zpow - theorem normed_field.nnnorm_div - def normed_field.nnnorm_hom - theorem normed_field.nnnorm_inv - theorem normed_field.nnnorm_mul - theorem normed_field.nnnorm_pow - theorem normed_field.nnnorm_prod - theorem normed_field.nnnorm_zpow - theorem normed_field.norm_div - def normed_field.norm_hom - theorem normed_field.norm_inv - theorem normed_field.norm_mul - theorem normed_field.norm_pow - theorem normed_field.norm_prod - theorem normed_field.norm_zpow Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/extend.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/ordered.lean Modified src/analysis/normed_space/pointwise.lean Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/normed_space/star/basic.lean Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/exp_deriv.lean Modified src/analysis/special_functions/trigonometric/complex_deriv.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/is_R_or_C.lean Modified src/number_theory/padics/hensel.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/topology/metric_space/cau_seq_filter.lean 2022-02-21 15:30:06 95d22b5 feat(geometry/euclidean/oriented_angle): oriented angles and rotations (#12106) Define oriented angles and rotations in a real inner product space, with respect to a choice of orthonormal basis indexed by `fin 2`, and prove various lemmas about them, including that the definition depends only on the orientation associated with the basis, and geometrical results such as pons asinorum, "angle at center of a circle equals twice angle at circumference" and "angles in same segment are equal" / "opposite angles of a cyclic quadrilateral add to π" (these last two being the same result for oriented angles mod π). ESTIMATED CHANGES Added src/geometry/euclidean/oriented_angle.lean + def orthonormal.conj_lie + theorem orthonormal.conj_lie_symm + theorem orthonormal.det_conj_lie + theorem orthonormal.det_rotation + theorem orthonormal.eq_iff_norm_eq_and_oangle_eq_zero + theorem orthonormal.eq_iff_norm_eq_of_oangle_eq_zero + theorem orthonormal.eq_iff_oangle_eq_zero_of_norm_eq + theorem orthonormal.eq_rotation_self_iff + theorem orthonormal.eq_rotation_self_iff_angle_eq_zero + theorem orthonormal.exists_linear_isometry_equiv_eq + theorem orthonormal.exists_linear_isometry_equiv_eq_of_det_neg + theorem orthonormal.exists_linear_isometry_equiv_eq_of_det_pos + theorem orthonormal.exists_linear_isometry_equiv_map_eq_of_orientation_eq + theorem orthonormal.exists_linear_isometry_equiv_map_eq_of_orientation_eq_neg + theorem orthonormal.linear_equiv_det_conj_lie + theorem orthonormal.linear_equiv_det_rotation + def orthonormal.oangle + theorem orthonormal.oangle_add + theorem orthonormal.oangle_add_cyc3 + theorem orthonormal.oangle_add_cyc3_neg_left + theorem orthonormal.oangle_add_cyc3_neg_right + theorem orthonormal.oangle_add_oangle_rev + theorem orthonormal.oangle_add_oangle_rev_neg_left + theorem orthonormal.oangle_add_oangle_rev_neg_right + theorem orthonormal.oangle_add_swap + theorem orthonormal.oangle_conj_lie + theorem orthonormal.oangle_eq_iff_eq_norm_div_norm_smul_rotation_of_ne_zero + theorem orthonormal.oangle_eq_iff_eq_norm_div_norm_smul_rotation_or_eq_zero + theorem orthonormal.oangle_eq_iff_eq_pos_smul_rotation_of_ne_zero + theorem orthonormal.oangle_eq_iff_eq_pos_smul_rotation_or_eq_zero + theorem orthonormal.oangle_eq_neg_of_orientation_eq_neg + theorem orthonormal.oangle_eq_of_orientation_eq + theorem orthonormal.oangle_eq_pi_sub_two_zsmul_oangle_sub_of_norm_eq + theorem orthonormal.oangle_eq_two_zsmul_oangle_sub_of_norm_eq + theorem orthonormal.oangle_eq_two_zsmul_oangle_sub_of_norm_eq_real + theorem orthonormal.oangle_map + theorem orthonormal.oangle_neg_left + theorem orthonormal.oangle_neg_left_eq_neg_right + theorem orthonormal.oangle_neg_neg + theorem orthonormal.oangle_neg_right + theorem orthonormal.oangle_neg_self_left + theorem orthonormal.oangle_neg_self_right + theorem orthonormal.oangle_rev + theorem orthonormal.oangle_rotation + theorem orthonormal.oangle_rotation_left + theorem orthonormal.oangle_rotation_oangle_left + theorem orthonormal.oangle_rotation_oangle_right + theorem orthonormal.oangle_rotation_right + theorem orthonormal.oangle_rotation_self_left + theorem orthonormal.oangle_rotation_self_right + theorem orthonormal.oangle_self + theorem orthonormal.oangle_smul_left_of_neg + theorem orthonormal.oangle_smul_left_of_pos + theorem orthonormal.oangle_smul_left_self_of_nonneg + theorem orthonormal.oangle_smul_right_of_neg + theorem orthonormal.oangle_smul_right_of_pos + theorem orthonormal.oangle_smul_right_self_of_nonneg + theorem orthonormal.oangle_smul_smul_self_of_nonneg + theorem orthonormal.oangle_sub_eq_oangle_sub_rev_of_norm_eq + theorem orthonormal.oangle_sub_left + theorem orthonormal.oangle_sub_right + theorem orthonormal.oangle_zero_left + theorem orthonormal.oangle_zero_right + def orthonormal.rotation + theorem orthonormal.rotation_eq_of_orientation_eq + theorem orthonormal.rotation_eq_rotation_neg_of_orientation_eq_neg + theorem orthonormal.rotation_eq_self_iff + theorem orthonormal.rotation_eq_self_iff_angle_eq_zero + theorem orthonormal.rotation_oangle_eq_iff_norm_eq + theorem orthonormal.rotation_pi + theorem orthonormal.rotation_symm + theorem orthonormal.rotation_trans + theorem orthonormal.rotation_zero + theorem orthonormal.two_zsmul_oangle_neg_left + theorem orthonormal.two_zsmul_oangle_neg_right + theorem orthonormal.two_zsmul_oangle_neg_self_left + theorem orthonormal.two_zsmul_oangle_neg_self_right + theorem orthonormal.two_zsmul_oangle_smul_left_of_ne_zero + theorem orthonormal.two_zsmul_oangle_smul_left_self + theorem orthonormal.two_zsmul_oangle_smul_right_of_ne_zero + theorem orthonormal.two_zsmul_oangle_smul_right_self + theorem orthonormal.two_zsmul_oangle_smul_smul_self + theorem orthonormal.two_zsmul_oangle_sub_eq_two_zsmul_oangle_sub_of_norm_eq 2022-02-21 15:30:04 6db1577 feat(category_theory/preadditive): separators in preadditive categories (#11884) ESTIMATED CHANGES Modified src/category_theory/generator.lean +/- theorem category_theory.is_codetecting_op_iff +/- theorem category_theory.is_codetector_def +/- theorem category_theory.is_codetector_iff_reflects_isomorphisms_yoneda_obj +/- theorem category_theory.is_coseparator_def +/- theorem category_theory.is_coseparator_iff_faithful_yoneda_obj +/- theorem category_theory.is_detecting_iff_is_separating +/- theorem category_theory.is_detecting_op_iff +/- theorem category_theory.is_detecting_unop_iff +/- theorem category_theory.is_detector_def +/- theorem category_theory.is_detector_iff_reflects_isomorphisms_coyoneda_obj +/- theorem category_theory.is_separating_op_iff +/- theorem category_theory.is_separator_def +/- theorem category_theory.is_separator_iff_faithful_coyoneda_obj Added src/category_theory/preadditive/generator.lean + theorem category_theory.is_coseparator_iff_faithful_preadditive_yoneda + theorem category_theory.is_coseparator_iff_faithful_preadditive_yoneda_obj + theorem category_theory.is_separator_iff_faithful_preadditive_coyoneda + theorem category_theory.is_separator_iff_faithful_preadditive_coyoneda_obj + theorem category_theory.preadditive.is_coseparating_iff + theorem category_theory.preadditive.is_coseparator_iff + theorem category_theory.preadditive.is_separating_iff + theorem category_theory.preadditive.is_separator_iff 2022-02-21 13:33:45 3ad7395 chore(topology/algebra/infinite_sum): reference Cauchy criterion in docs (#12172) ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean 2022-02-21 13:33:44 634dfc8 feat(order/*): Missing order lifting instances (#12154) Add a few missing pullbacks of order instances. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean Modified src/order/complete_boolean_algebra.lean +/- theorem binfi_sup_eq +/- theorem sup_binfi_eq Modified src/order/complete_lattice.lean + def bounded_order.lift + def order_bot.lift + def order_top.lift 2022-02-21 13:33:43 2f33463 feat(group_theory/free_product): is_free_group_free_product_of_is_free_group (#12125) ESTIMATED CHANGES Modified src/group_theory/free_product.lean 2022-02-21 11:38:07 7c6678a doc(topology/dense_embedding): fix markdown (#12180) Right now it just renders as "γ -f→ α g↓ ↓e δ -h→ β" ESTIMATED CHANGES Modified src/topology/dense_embedding.lean 2022-02-21 11:38:06 f66a5dd chore(data/set/basic): add a few lemmas and a `@[simp]` attribute (#12176) * rename `set.exists_eq_singleton_iff_nonempty_unique_mem` to `set.exists_eq_singleton_iff_nonempty_subsingleton`, use `set.subsingleton` in the statement; * add `@[simp]` to `set.subset_compl_singleton_iff`; * add `set.diff_diff_right_self`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.diff_diff_right_self + theorem set.exists_eq_singleton_iff_nonempty_subsingleton - theorem set.exists_eq_singleton_iff_nonempty_unique_mem +/- theorem set.subset_compl_singleton_iff Modified src/group_theory/complement.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean 2022-02-21 11:38:05 0eb5e2d feat(topology/algebra): if a subobject is commutative, then so is its topological closure (#12170) We prove that if a submonoid (or subgroup, subsemiring, subring, subalgebra, and the additive versions where applicable) is commutative, then so is its topological closure. ESTIMATED CHANGES Modified src/topology/algebra/algebra.lean + def subalgebra.comm_ring_topological_closure + def subalgebra.comm_semiring_topological_closure Modified src/topology/algebra/group.lean + def subgroup.comm_group_topological_closure Modified src/topology/algebra/monoid.lean + def submonoid.comm_monoid_topological_closure Modified src/topology/algebra/ring.lean + def subring.comm_ring_topological_closure + def subsemiring.comm_semiring_topological_closure 2022-02-21 11:38:04 56dbb60 feat(category_theory/opposites): nat_trans.remove_unop (#12147) ESTIMATED CHANGES Modified src/category_theory/opposites.lean + theorem category_theory.nat_trans.remove_left_op_id + theorem category_theory.nat_trans.remove_right_op_id + theorem category_theory.nat_trans.remove_unop_id 2022-02-21 11:38:02 b3b5e35 chore(data/nat/prime): slightly golf proof of mem_factors (#12143) ESTIMATED CHANGES Modified src/data/nat/prime.lean 2022-02-21 11:38:01 afcc7e7 feat(data/nat/prime): move nat.prime_iff_prime_int; add int.prime_two/three (#12133) I found it useful to have these results with somewhat lighter imports. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem int.prime_three + theorem int.prime_two + theorem nat.prime_iff_prime_int Modified src/ring_theory/int/basic.lean - theorem nat.prime_iff_prime_int 2022-02-21 11:38:00 37019db feat(topology/algebra/{group,monoid}): nat and int scalar multiplication is continuous (#12124) These instances allow a diamond to appear in the scalar action on `continuous_affine_map`s, which we fix at the same time. ESTIMATED CHANGES Modified src/topology/algebra/continuous_affine_map.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/continuous_function/algebra.lean +/- theorem continuous_map.pow_comp 2022-02-21 11:37:58 72252b3 feat(analysis/inner_product_space/projection): norm_sq_eq_sum_norm_sq… (#12096) …_projection The Pythagorean theorem for an orthogonal projection onto a submodule S. I am sure that there are some style changes that could/should be made! ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem norm_sq_eq_add_norm_sq_projection 2022-02-21 11:37:57 271c323 feat(order/filter): prod_assoc (#12002) map (prod_assoc α β γ) ((f ×ᶠ g) ×ᶠ h) = f ×ᶠ (g ×ᶠ h) with two tiny supporting lemmas ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.comp_equiv + theorem filter.has_basis.comp_of_surjective + theorem filter.prod_assoc Modified src/order/filter/basic.lean + theorem filter.comap_equiv_symm + theorem filter.map_equiv_symm 2022-02-21 11:37:56 d8d2f54 feat(group_theory/nilpotent): n-ary products of nilpotent group (#11829) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem is_nilpotent_pi_of_bounded_class + theorem lower_central_series_pi_le + theorem lower_central_series_pi_of_fintype + theorem nilpotency_class_pi 2022-02-21 10:14:55 e966efc chore(topology/constructions): golf a proof (#12174) ESTIMATED CHANGES Modified src/topology/constructions.lean 2022-02-21 10:14:54 d0fa7a8 chore(category_theory/limits): make fin_category_opposite an instance (#12153) ESTIMATED CHANGES Modified src/category_theory/fin_category.lean - def category_theory.fin_category_opposite Modified src/category_theory/limits/opposites.lean 2022-02-21 09:47:15 b04851f chore(tactic): fix tactic doc tags (#12131) ESTIMATED CHANGES Modified src/tactic/linear_combination.lean Modified src/tactic/rewrite_search/frontend.lean 2022-02-21 08:48:32 8b93d3a feat(measure_theory/function/lp_space): generalize some `integrable` lemmas to `mem_ℒp` (#11231) I would like to define integrable as `mem_ℒp` for `p = 1` and remove the `has_finite_integral` prop. But first we need to generalize everything we have about `integrable` to `mem_ℒp`. This is one step towards that goal. ESTIMATED CHANGES Modified src/measure_theory/function/ess_sup.lean + theorem ess_sup_comp_le_ess_sup_map_measure + theorem ess_sup_map_measure + theorem ess_sup_map_measure_of_measurable + theorem measurable_embedding.ess_sup_map_measure Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/lp_space.lean + theorem measurable_embedding.mem_ℒp_map_measure_iff + theorem measurable_embedding.snorm_ess_sup_map_measure + theorem measurable_embedding.snorm_map_measure + theorem measurable_equiv.mem_ℒp_map_measure_iff + theorem measure_theory.mem_ℒp.left_of_add_measure + theorem measure_theory.mem_ℒp.right_of_add_measure + theorem measure_theory.mem_ℒp.smul_measure + theorem measure_theory.mem_ℒp_map_measure_iff + theorem measure_theory.snorm_ess_sup_map_measure + theorem measure_theory.snorm_le_add_measure_left + theorem measure_theory.snorm_le_add_measure_right + theorem measure_theory.snorm_map_measure + theorem measure_theory.snorm_one_add_measure 2022-02-21 08:00:52 e60e1f2 feat(data/real/pointwise): mul distributes over `infi` and `supr` (#12105) ESTIMATED CHANGES Modified src/data/real/pointwise.lean + theorem real.infi_mul_of_nonneg + theorem real.infi_mul_of_nonpos + theorem real.mul_infi_of_nonneg + theorem real.mul_infi_of_nonpos + theorem real.mul_supr_of_nonneg + theorem real.mul_supr_of_nonpos + theorem real.smul_infi_of_nonneg + theorem real.smul_infi_of_nonpos + theorem real.smul_supr_of_nonneg + theorem real.smul_supr_of_nonpos + theorem real.supr_mul_of_nonneg + theorem real.supr_mul_of_nonpos 2022-02-21 00:51:52 6298a43 feat(analysis/seminorm): smul_sup (#12103) The `have : real.smul_max` local proof doesn't feel very general, so I've left it as a `have` rather than promoting it to a lemma. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.smul_sup + theorem seminorm.sup_apply 2022-02-21 00:51:51 6ecd7ab feat(topology/continuous_function/bounded): generalize scalar action (#12098) This also makes the scalar action computable ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean 2022-02-20 23:53:46 6ae1b70 feat(topology/uniform_space/cauchy): add `cauchy_seq.comp_injective` (#11986) API changes: - add `filter.at_top_le_cofinite`; - add `function.injective.nat_tendsto_at_top`; - add `cauchy_seq.comp_injective`, `function.bijective.cauchy_seq_comp_iff`. ESTIMATED CHANGES Modified src/order/filter/cofinite.lean + theorem at_top_le_cofinite + theorem function.injective.nat_tendsto_at_top +/- theorem function.injective.tendsto_cofinite Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq.comp_injective + theorem function.bijective.cauchy_seq_comp_iff 2022-02-20 22:01:51 7e1ef9f feat(ring_theory/witt_vector): assorted facts about Witt vectors over char p rings (#12093) ESTIMATED CHANGES Modified src/ring_theory/witt_vector/frobenius.lean + theorem witt_vector.frobenius_bijective Modified src/ring_theory/witt_vector/identities.lean + theorem witt_vector.fraction_ring.p_nonzero + theorem witt_vector.p_nonzero 2022-02-20 14:25:15 334fb89 feat(algebra/order/ring): add three_ne_zero and four_ne_zero (#12142) ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem four_ne_zero + theorem three_ne_zero 2022-02-20 09:43:13 6c6e142 chore(data/nat/factorization): Reorder lemmas and some minor golfing (#12144) Some minor housework on this file, reordering and regrouping lemmas, adding and editing a few docstrings and section headers, and golfing a few proofs. ESTIMATED CHANGES Modified src/data/nat/factorization.lean +/- theorem nat.pos_of_mem_factorization +/- theorem nat.prime_of_mem_factorization - def nat.rec_on_pos_prime_coprime + def nat.rec_on_pos_prime_pos_coprime 2022-02-20 01:22:26 55c9cff chore(data/nat/prime): slightly weaken assumption in nat.exists_prime_and_dvd (#12156) It is vacuously true for zero, as everything divides zero. ESTIMATED CHANGES Modified src/algebra/squarefree.lean Modified src/data/nat/prime.lean +/- theorem nat.exists_prime_and_dvd Modified src/data/pnat/prime.lean +/- theorem pnat.exists_prime_and_dvd Modified src/ring_theory/int/basic.lean +/- theorem int.exists_prime_and_dvd 2022-02-20 00:00:55 fa603fe feat(order/category/FinPartialOrder): The category of finite partial orders (#11997) Define `FinPartialOrder`, the category of finite partial orders with monotone functions. ESTIMATED CHANGES Added src/order/category/FinPartialOrder.lean + def FinPartialOrder.dual + def FinPartialOrder.dual_equiv + def FinPartialOrder.iso.mk + def FinPartialOrder.of + structure FinPartialOrder + theorem FinPartialOrder_dual_comp_forget_to_PartialOrder 2022-02-19 22:26:11 5611533 feat(analysis/normed_space/star/complex): real and imaginary part of an element of a star module (#11811) We introduce the real and imaginary parts of an element of a star module, and show that elements of the type can be decomposed into these two parts in the obvious way. ESTIMATED CHANGES Modified src/algebra/invertible.lean + theorem inv_of_two_add_inv_of_two Modified src/algebra/module/basic.lean + theorem inv_of_two_smul_add_inv_of_two_smul Modified src/algebra/star/module.lean + def self_adjoint.submodule + def self_adjoint_part + def skew_adjoint.submodule + def skew_adjoint_part + def star_module.decompose_prod_adjoint + theorem star_module.self_adjoint_part_add_skew_adjoint_part Modified src/analysis/normed_space/exponential.lean Added src/analysis/normed_space/star/complex.lean + def star_module.mul_neg_I_lin + theorem star_module.re_add_im Modified src/analysis/special_functions/exponential.lean Modified src/data/complex/basic.lean + theorem complex.conj_inv +/- theorem complex.star_def Modified src/data/complex/is_R_or_C.lean - theorem is_R_or_C.char_zero_R_or_C + theorem is_R_or_C.conj_inv + theorem is_R_or_C.star_def Modified src/data/complex/module.lean 2022-02-19 21:14:08 3777543 feat(category_theory/isomorphism): two lemmas is_iso.of_iso_comp_left/right on isomorphisms (#12056) ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean + theorem category_theory.is_iso.of_is_iso_comp_left + theorem category_theory.is_iso.of_is_iso_comp_right + theorem category_theory.is_iso.of_is_iso_fac_left + theorem category_theory.is_iso.of_is_iso_fac_right 2022-02-19 19:27:37 bc63071 feat(algebra/is_prime_pow): dot notation for nat.prime (#12145) ESTIMATED CHANGES Modified src/algebra/is_prime_pow.lean + theorem nat.prime.is_prime_pow 2022-02-19 19:27:36 628e8fb doc(group_theory/coset): Mention "Lagrange's theorem" (#12137) Suggested here: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.E2.9C.94.20Lagrange's.20Theorem.20.28Group.20theory.29/near/272469211 ESTIMATED CHANGES Modified src/group_theory/coset.lean 2022-02-19 18:23:35 e88badb feat(analysis/inner_product_space/pi_L2): Orthonormal basis (#12060) Added the structure orthonormal_basis and basic associated API Renamed the previous definition orthonormal_basis in analysis/inner_product_space/projection to std_orthonormal_basis ESTIMATED CHANGES Modified src/analysis/inner_product_space/orientation.lean Modified src/analysis/inner_product_space/pi_L2.lean - theorem basis.coe_isometry_euclidean_of_orthonormal - theorem basis.coe_isometry_euclidean_of_orthonormal_symm + theorem basis.coe_to_orthonormal_basis + theorem basis.coe_to_orthonormal_basis_repr + theorem basis.coe_to_orthonormal_basis_repr_symm - def basis.isometry_euclidean_of_orthonormal + theorem basis.to_basis_to_orthonormal_basis + def basis.to_orthonormal_basis + theorem euclidean_space.inner_single_left + theorem euclidean_space.inner_single_right + def euclidean_space.single + theorem euclidean_space.single_apply + structure orthonormal_basis Modified src/analysis/inner_product_space/projection.lean - theorem coe_orthonormal_basis + theorem coe_std_orthonormal_basis - def fin_orthonormal_basis - theorem fin_orthonormal_basis_orthonormal + def fin_std_orthonormal_basis + theorem fin_std_orthonormal_basis_orthonormal - def orthonormal_basis - theorem orthonormal_basis_orthonormal + def std_orthonormal_basis + theorem std_orthonormal_basis_orthonormal Modified src/analysis/inner_product_space/spectrum.lean Modified src/linear_algebra/basis.lean + theorem basis.of_equiv_fun_equiv_fun 2022-02-19 07:54:42 518b5d2 chore(topology/bases): golf a proof (#12127) Also add `function.injective_iff_pairwise_ne`. ESTIMATED CHANGES Modified src/data/set/pairwise.lean + theorem function.injective_iff_pairwise_ne Modified src/topology/bases.lean Modified src/topology/dense_embedding.lean - theorem dense_inducing.preconnected_space 2022-02-18 21:46:45 213e2ed feat(algebra/group/pi): add pi.nsmul_apply (#12122) via to_additive ESTIMATED CHANGES Modified src/algebra/group/pi.lean +/- theorem pi.pow_apply 2022-02-18 21:46:43 b3d0944 feat(tactic/swap_var): name juggling, a weaker wlog (#12006) ESTIMATED CHANGES Added src/tactic/swap_var.lean Added test/swap_var.lean 2022-02-18 19:52:47 5f46dd0 fix(category_theory/limits): improve inaccurate docstrings (#12130) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean 2022-02-18 19:52:46 7b6c407 feat(number_theory/divisors): add `prod_div_divisors` and `sum_div_divisors` (#12087) Adds lemma `prod_div_divisors : ∏ d in n.divisors, f (n/d) = n.divisors.prod f` and `sum_div_divisors`. Also proves `image_div_divisors_eq_divisors : image (λ (x : ℕ), n / x) n.divisors = n.divisors` and `div_eq_iff_eq_of_dvd_dvd : n / x = n / y ↔ x = y` (where `n ≠ 0` and `x ∣ n` and `y ∣ n`) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.div_eq_iff_eq_of_dvd_dvd Modified src/number_theory/divisors.lean + theorem nat.image_div_divisors_eq_divisors + theorem nat.prod_div_divisors 2022-02-18 19:52:44 33179f7 refactor(topology/metric_space/completion): change namespace (#12077) Move lemmas about metric on `uniform_space.completion` from `metric.completion` namespace to `uniform_space.completion`. ESTIMATED CHANGES Modified src/analysis/normed/group/completion.lean Modified src/topology/metric_space/completion.lean - theorem metric.completion.coe_isometry + theorem uniform_space.completion.coe_isometry Modified src/topology/metric_space/gromov_hausdorff.lean 2022-02-18 19:52:43 18c3e3f feat(data/nat/fib): add that `fib` is sum of `nat.choose` along antidiagonal (#12063) ESTIMATED CHANGES Modified src/data/nat/fib.lean + theorem nat.fib_succ_eq_sum_choose 2022-02-18 19:21:11 ffc2bdf refactor(group_theory/abelianization): Define `commutator` in terms of `general_commutator` (#11949) It seems reasonable to define `commutator` in terms of `general_commutator`. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean + theorem commutator_def + theorem commutator_eq_closure + theorem commutator_eq_normal_closure Modified src/group_theory/nilpotent.lean +/- theorem lower_central_series_one Modified src/group_theory/solvable.lean - theorem commutator_def' - theorem general_commutator_eq_commutator 2022-02-18 18:09:38 018c728 refactor(ring_theory/fractional_ideal): rename lemmas for dot notation, add coe_pow (#12080) This replaces `fractional_ideal.fractional_mul` with `is_fractional.mul` and likewise for the other operations. The bundling was a distraction for the content of the lemmas anyway. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_pow - theorem fractional_ideal.fractional_inf - theorem fractional_ideal.fractional_map - theorem fractional_ideal.fractional_mul - theorem fractional_ideal.fractional_sup + theorem is_fractional.div_of_nonzero + theorem is_fractional.inf_right + theorem is_fractional.map + theorem is_fractional.mul + theorem is_fractional.pow + theorem is_fractional.sup 2022-02-18 18:09:37 bcf8a6e feat(ring_theory/fractional_ideal): add coe_ideal lemmas (#12073) ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_ideal_finprod + theorem fractional_ideal.coe_ideal_pow 2022-02-18 16:58:17 98643bc feat(algebra/big_operators/intervals): summation by parts (#11814) Add the "summation by parts" identity over intervals of natural numbers, as well as some helper lemmas. ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean + theorem finset.prod_Ico_add' + theorem finset.prod_Ico_div_bot + theorem finset.prod_Ico_succ_div_top + theorem finset.prod_range_succ_div_prod + theorem finset.prod_range_succ_div_top - theorem finset.sum_Ico_add + theorem finset.sum_Ico_by_parts + theorem finset.sum_range_by_parts 2022-02-18 15:07:45 3ca16d0 feat(data/equiv): define `ring_equiv_class` (#11977) This PR applies the morphism class pattern to `ring_equiv`, producing a new `ring_equiv_class` extending `mul_equiv_class` and `add_equiv_class`. It also provides a `ring_equiv_class` instance for `alg_equiv`s. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_equiv.bijective +/- theorem alg_equiv.ext - theorem alg_equiv.ext_iff - theorem alg_equiv.injective - theorem alg_equiv.map_add - theorem alg_equiv.map_mul - theorem alg_equiv.map_neg - theorem alg_equiv.map_one - theorem alg_equiv.map_pow - theorem alg_equiv.map_sub - theorem alg_equiv.map_zero - theorem alg_equiv.surjective Modified src/algebra/ring/basic.lean + theorem ring_hom.coe_coe Modified src/data/equiv/ring.lean +/- theorem ring_equiv.ext - theorem ring_equiv.ext_iff - theorem ring_equiv.map_add - theorem ring_equiv.map_eq_one_iff - theorem ring_equiv.map_eq_zero_iff - theorem ring_equiv.map_mul +/- theorem ring_equiv.map_ne_one_iff +/- theorem ring_equiv.map_ne_zero_iff - theorem ring_equiv.map_neg - theorem ring_equiv.map_one - theorem ring_equiv.map_pow - theorem ring_equiv.map_sub - theorem ring_equiv.map_zero Modified src/data/mv_polynomial/equiv.lean Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/finiteness.lean 2022-02-18 14:37:42 223f149 chore(algebra/star/self_adjoint): extract a lemma from `has_scalar` (#12121) ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean + theorem self_adjoint.smul_mem + theorem skew_adjoint.smul_mem 2022-02-18 13:41:21 aed97e0 doc(analysis/normed/group/basic): add docstring explaining the "insert" name (#12100) ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean 2022-02-18 12:57:33 3e6439c fix(category_theory/limits/shapes/images): make class a Prop (#12119) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean 2022-02-18 11:05:58 33b4e73 refactor(topology/algebra): reorder imports (#12089) * move `mul_opposite.topological_space` and `units.topological_space` to a new file; * import `mul_action` in `monoid`, not vice versa. With this order of imports, we can reuse results about `has_continuous_smul` in lemmas about topological monoids. ESTIMATED CHANGES Modified src/analysis/convex/strict.lean Added src/topology/algebra/constructions.lean + theorem mul_opposite.continuous_op + theorem mul_opposite.continuous_unop + def mul_opposite.op_homeomorph + theorem units.continuous_coe + theorem units.continuous_embed_product Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean - theorem mul_opposite.continuous_op - theorem mul_opposite.continuous_unop - theorem units.continuous_coe - theorem units.continuous_embed_product Modified src/topology/algebra/mul_action.lean 2022-02-18 07:37:58 77f264f feat(data/finset/basic): add lemma `filter_eq_empty_iff` (#12104) Add `filter_eq_empty_iff : (s.filter p = ∅) ↔ ∀ x ∈ s, ¬ p x` We already have the right-to-left direction of this in `filter_false_of_mem`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.filter_eq_empty_iff 2022-02-18 05:49:20 bb1b56c feat(algebra/indicator_function): smul lemmas for functions (#12059) And a few basic lemmas in `set/basic`. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.indicator_const_smul + theorem set.indicator_const_smul_apply +/- theorem set.indicator_smul +/- theorem set.indicator_smul_apply Modified src/analysis/box_integral/integrability.lean Modified src/data/finsupp/basic.lean Modified src/data/set/basic.lean + theorem set.compl_range_inl + theorem set.compl_range_inr Modified src/logic/nonempty.lean + theorem function.surjective.nonempty 2022-02-18 04:52:16 17b3357 feat(topology/algebra): generalize `has_continuous_smul` arguments to `has_continuous_const_smul` (#11999) This changes the majority of the downstream call-sites of the `const_smul` lemmas to only need the weaker typeclass. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/convex/strict.lean +/- theorem strict_convex.affinity +/- theorem strict_convex.smul Modified src/analysis/convex/topology.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.prodₗᵢ Modified src/dynamics/minimal.lean +/- theorem is_compact.exists_finite_cover_smul +/- theorem is_minimal_iff_closed_smul_invariant Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/measure_theory/group/action.lean Modified src/measure_theory/measure/complex.lean Modified src/measure_theory/measure/vector_measure.lean +/- theorem measure_theory.vector_measure.absolutely_continuous.smul +/- theorem measure_theory.vector_measure.mutually_singular.smul_left +/- theorem measure_theory.vector_measure.mutually_singular.smul_right Modified src/topology/algebra/affine.lean Modified src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/module/multilinear.lean Modified src/topology/algebra/module/weak_dual.lean Modified src/topology/continuous_function/locally_constant.lean +/- def locally_constant.to_continuous_map_alg_hom +/- def locally_constant.to_continuous_map_linear_map 2022-02-18 02:05:51 b757206 feat(linear_algebra/finite_dimensional): finrank_range_of_inj (#12067) The dimensions of the domain and range of an injective linear map are equal. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean +/- theorem linear_equiv.finrank_eq +/- theorem linear_equiv.finrank_map_eq + theorem linear_map.finrank_range_of_inj 2022-02-18 00:52:54 59a183a feat(data/finset/locally_finite): add Ico_subset_Ico_union_Ico (#11710) This lemma extends the result for `set`s to `finset`s. ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean + theorem finset.Ico_subset_Ico_union_Ico 2022-02-17 22:59:24 e93996c feat(topology/instances/discrete): instances for the discrete topology (#11349) Prove `first_countable_topology`, `second_countable_topology` and `order_topology` for the discrete topology under appropriate conditions like `encodable`, or being a linear order with `pred` and `succ`. These instances give in particular `second_countable_topology ℕ` and `order_topology ℕ` ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.is_countably_generated_pure Modified src/order/succ_pred/basic.lean + theorem pred_order.Ici_eq_Ioi_pred' + theorem pred_order.Ici_eq_Ioi_pred + theorem pred_order.Iio_eq_Iic_pred' + theorem pred_order.Iio_eq_Iic_pred + theorem pred_order.le_pred_iff_of_not_is_min + theorem pred_order.pred_lt_iff_of_not_is_min + theorem pred_order.pred_lt_of_not_is_min + theorem succ_order.Iic_eq_Iio_succ' + theorem succ_order.Iic_eq_Iio_succ + theorem succ_order.Ioi_eq_Ici_succ' + theorem succ_order.Ioi_eq_Ici_succ + theorem succ_order.lt_succ_iff_of_not_is_max + theorem succ_order.lt_succ_of_not_is_max + theorem succ_order.succ_le_iff_of_not_is_max Modified src/topology/bases.lean Added src/topology/instances/discrete.lean Modified src/topology/order.lean + theorem topological_space.is_open_generate_from_of_mem 2022-02-17 21:50:25 6089f08 feat(data/nat/totient): add Euler's product formula for totient function (#11332) Proving four versions of Euler's product formula for the totient function `φ`: * `totient_eq_prod_factorization : φ n = n.factorization.prod (λ p k, p ^ (k - 1) * (p - 1))` * `totient_mul_prod_factors : φ n * ∏ p in n.factors.to_finset, p = n * ∏ p in n.factors.to_finset, (p - 1)` * `totient_eq_div_factors_mul : φ n = n / (∏ p in n.factors.to_finset, p) * (∏ p in n.factors.to_finset, (p - 1))` * `totient_eq_mul_prod_factors : (φ n : ℚ) = n * ∏ p in n.factors.to_finset, (1 - p⁻¹)` ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.prod_factorization_eq_prod_factors Modified src/data/nat/prime.lean + theorem nat.pos_of_mem_factors Modified src/data/nat/totient.lean + theorem nat.totient_eq_div_factors_mul + theorem nat.totient_eq_mul_prod_factors + theorem nat.totient_eq_prod_factorization + theorem nat.totient_mul_prod_factors 2022-02-17 21:06:46 19534b2 feat(analysis/inner_product_space/basic) : `inner_map_self_eq_zero` (#12065) The main result here is: If ⟪T x, x⟫_C = 0 for all x, then T = 0. The proof uses a polarization identity. Note that this is false with R in place of C. I am confident that my use of ring_nf is not optimal, but I hope to learn from the cleanup process! ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem inner_map_polarization + theorem inner_map_self_eq_zero 2022-02-17 22:00:06+01:00 8b6901b Revert "feat(category_theory/limits): is_bilimit" This reverts commit 8edfa75d79ad70c88dbae01ab6166dd8b1fd2ba0. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean - structure category_theory.limits.bicone.is_bilimit - def category_theory.limits.bicone.of_colimit_cocone - def category_theory.limits.bicone.of_limit_cone - def category_theory.limits.bicone.to_binary_bicone_is_bilimit +/- def category_theory.limits.bicone.to_binary_bicone_is_colimit +/- def category_theory.limits.bicone.to_binary_bicone_is_limit - theorem category_theory.limits.bicone.ι_of_is_limit - theorem category_theory.limits.bicone.π_of_is_colimit +/- theorem category_theory.limits.bicone_ι_π_ne - structure category_theory.limits.binary_bicone.is_bilimit - def category_theory.limits.binary_bicone.to_bicone - def category_theory.limits.binary_bicone.to_bicone_is_bilimit - def category_theory.limits.binary_bicone.to_bicone_is_colimit - def category_theory.limits.binary_bicone.to_bicone_is_limit - def category_theory.limits.binary_biproduct.is_bilimit - def category_theory.limits.biproduct.is_bilimit 2022-02-17 21:56:42+01:00 8edfa75 feat(category_theory/limits): is_bilimit ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean + structure category_theory.limits.bicone.is_bilimit + def category_theory.limits.bicone.of_colimit_cocone + def category_theory.limits.bicone.of_limit_cone + def category_theory.limits.bicone.to_binary_bicone_is_bilimit +/- def category_theory.limits.bicone.to_binary_bicone_is_colimit +/- def category_theory.limits.bicone.to_binary_bicone_is_limit + theorem category_theory.limits.bicone.ι_of_is_limit + theorem category_theory.limits.bicone.π_of_is_colimit +/- theorem category_theory.limits.bicone_ι_π_ne + structure category_theory.limits.binary_bicone.is_bilimit + def category_theory.limits.binary_bicone.to_bicone + def category_theory.limits.binary_bicone.to_bicone_is_bilimit + def category_theory.limits.binary_bicone.to_bicone_is_colimit + def category_theory.limits.binary_bicone.to_bicone_is_limit + def category_theory.limits.binary_biproduct.is_bilimit + def category_theory.limits.biproduct.is_bilimit 2022-02-17 19:35:15 aacc36c feat(group_theory/commensurable): Definition and lemmas about commensurability. (#9545) This defines commensurability for subgroups, proves this defines a transitive relation and then defines the commensurator subgroup. In doing so it also needs some lemmas about indices of subgroups and the definition of the conjugate of a subgroup by an element of the parent group. ESTIMATED CHANGES Added src/group_theory/commensurable.lean + theorem commensurable.comm + theorem commensurable.commensurable_conj + theorem commensurable.commensurable_inv + def commensurable.commensurator' + theorem commensurable.commensurator'_mem_iff + def commensurable.commensurator + theorem commensurable.commensurator_mem_iff + theorem commensurable.eq + theorem commensurable.equivalence + def commensurable.quot_conj_equiv + theorem commensurable.symm + theorem commensurable.trans + def commensurable 2022-02-17 18:46:15 8575f59 feat(category_theory/limits): preservation of zero morphisms (#12068) ESTIMATED CHANGES Modified src/category_theory/differential_object.lean Added src/category_theory/limits/preserves/shapes/zero.lean + def category_theory.functor.map_zero_object + theorem category_theory.functor.preserves_zero_morphisms_of_map_zero_object Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.initial_iso_is_initial + def category_theory.limits.terminal_iso_is_terminal Modified src/category_theory/limits/shapes/zero.lean - theorem category_theory.limits.equivalence_preserves_zero_morphisms + def category_theory.limits.has_zero_object.zero_iso_initial + theorem category_theory.limits.has_zero_object.zero_iso_initial_hom + theorem category_theory.limits.has_zero_object.zero_iso_initial_inv + def category_theory.limits.has_zero_object.zero_iso_is_initial + theorem category_theory.limits.has_zero_object.zero_iso_is_initial_hom + theorem category_theory.limits.has_zero_object.zero_iso_is_initial_inv + def category_theory.limits.has_zero_object.zero_iso_is_terminal + theorem category_theory.limits.has_zero_object.zero_iso_is_terminal_hom + theorem category_theory.limits.has_zero_object.zero_iso_is_terminal_inv + def category_theory.limits.has_zero_object.zero_iso_terminal + theorem category_theory.limits.has_zero_object.zero_iso_terminal_hom + theorem category_theory.limits.has_zero_object.zero_iso_terminal_inv - theorem category_theory.limits.is_equivalence_preserves_zero_morphisms Modified src/category_theory/preadditive/additive_functor.lean - theorem category_theory.functor.map_zero - def category_theory.functor.map_zero_object Modified src/category_theory/shift.lean 2022-02-17 17:02:32 c9e8c64 chore(*): update to lean 3.39.2c (#12102) ESTIMATED CHANGES Modified leanpkg.toml 2022-02-17 17:02:31 dcb2826 feat(order/filter/basic): add eventually_eq.(smul/const_smul/sup/inf) (#12101) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_eq.const_smul + theorem filter.eventually_eq.inf + theorem filter.eventually_eq.smul + theorem filter.eventually_eq.sup 2022-02-17 15:34:44 307711e feat(group_theory/general_commutator): subgroup.pi commutes with the general_commutator (#11825) ESTIMATED CHANGES Modified src/group_theory/general_commutator.lean + theorem general_commutator_pi_pi_le + theorem general_commutator_pi_pi_of_fintype Modified src/group_theory/subgroup/basic.lean + theorem subgroup.le_pi_iff + theorem subgroup.pi_eq_bot_iff + theorem subgroup.pi_le_iff + theorem subgroup.pi_mem_of_single_mem + theorem subgroup.pi_mem_of_single_mem_aux + theorem subgroup.single_mem_pi 2022-02-17 13:10:49 b54f44f feat(data/matrix/notation): expansions of matrix multiplication for 2x2 and 3x3 (#12088) A clever way to generalize this would be to make a recursivedefinition of `mul` and `one` that's defeq to the desired `![...]` result and prove that's equal to the usual definition, but that doesn't help with actually writing the lemma statement, which is the tedious bit. ESTIMATED CHANGES Modified src/data/matrix/notation.lean + theorem matrix.mul_fin_three + theorem matrix.mul_fin_two + theorem matrix.one_fin_three + theorem matrix.one_fin_two 2022-02-17 12:16:09 eb8d58d fix(topology/algebra/basic): remove duplicate lemma (#12097) This lemma duplicates the lemma of the same name in the root namespace, and should not be in this namespace in the first place. The other half of #12072, now that the dependent PR is merged. ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean - theorem continuous_linear_map.continuous.zsmul - theorem continuous_linear_map.continuous_zsmul 2022-02-17 12:16:07 4afd667 feat(measure_theory/integral): add `integral_sum_measure` (#12090) Also add supporting lemmas about finite and infinite sums of measures. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean - theorem integrable_zero_measure + theorem measure_theory.integrable_finset_sum_measure + theorem measure_theory.integrable_zero_measure Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.pairwise_ae_disjoint_of_ac Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.has_sum_integral_measure + theorem measure_theory.integral_finset_sum_measure + theorem measure_theory.integral_sum_measure + theorem measure_theory.nndist_integral_add_measure_le_lintegral Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.has_sum_lintegral_measure + theorem measure_theory.lintegral_finset_sum_measure Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.has_sum_integral_Union_ae - theorem measure_theory.has_sum_integral_Union_of_null_inter + theorem measure_theory.integral_Union_ae - theorem measure_theory.integral_Union_of_null_inter Modified src/measure_theory/measure/measure_space.lean + def measure_theory.measure.coe_add_hom + theorem measure_theory.measure.coe_finset_sum + theorem measure_theory.measure.finset_sum_apply + theorem measure_theory.measure.sum_add_sum_compl + theorem measure_theory.measure.sum_coe_finset + theorem measure_theory.measure.sum_fintype 2022-02-17 11:20:26 20cf3ca feat(ring_theory/discriminant): add discr_eq_discr_of_to_matrix_coeff_is_integral (#11994) We add `discr_eq_discr_of_to_matrix_coeff_is_integral`: if `b` and `b'` are `ℚ`-basis of a number field `K` such that `∀ i j, is_integral ℤ (b.to_matrix b' i j)` and `∀ i j, is_integral ℤ (b'.to_matrix b i j` then `discr ℚ b = discr ℚ b'`. ESTIMATED CHANGES Modified src/linear_algebra/matrix/basis.lean + theorem basis.to_matrix_map_vec_mul Modified src/ring_theory/discriminant.lean + theorem algebra.discr_eq_discr_of_to_matrix_coeff_is_integral + theorem algebra.discr_reindex Modified src/ring_theory/trace.lean + theorem algebra.trace_matrix_reindex 2022-02-17 10:43:57 614758e feat(order/category/DistribLattice): The category of distributive lattices (#12092) Define `DistribLattice`, the category of distributive lattices. ESTIMATED CHANGES Added src/order/category/DistribLattice.lean + def DistribLattice.dual + def DistribLattice.dual_equiv + def DistribLattice.iso.mk + def DistribLattice.of + def DistribLattice + theorem DistribLattice_dual_comp_forget_to_Lattice Modified src/order/category/Lattice.lean 2022-02-17 10:00:32 58a3720 feat(analysis/inner_product_space/pi_L2): `complex.isometry_of_orthonormal` (#11970) Add a definition for the isometry between `ℂ` and a two-dimensional real inner product space given by a basis, and an associated `simp` lemma for how this relates to `basis.map`. This definition is just the composition of two existing definitions, `complex.isometry_euclidean` and (the inverse of) `basis.isometry_euclidean_of_orthonormal`. However, it's still useful to have it as a single definition when using it to define and prove basic properties of oriented angles (in an oriented two-dimensional real inner product space), to keep definitions and terms in proofs simpler and to avoid tactics such as `simp` or `rw` rearranging things inside this definition when not wanted (almost everything just needs to use some isometry between these two spaces without caring about the details of how it's defined, so it seems best to use a single `def` for this isometry, and on the rare occasions where the details of how it's defined matter, prove specific lemmas about the required properties). ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + def complex.isometry_of_orthonormal + theorem complex.isometry_of_orthonormal_apply + theorem complex.isometry_of_orthonormal_symm_apply + theorem complex.map_isometry_of_orthonormal 2022-02-17 07:43:58 a355d88 feat(topology/metric_space/gluing): metric space structure on sigma types (#11965) We define a (noncanonical) metric space structure on sigma types (aka arbitrary disjoint unions), as follows. Each piece is isometrically embedded in the union, while for `x` and `y` in different pieces their distance is `dist x x0 + 1 + dist y0 y`, where `x0` and `y0` are basepoints in the respective parts. This is *not* registered as an instance. This definition was already there for sum types (aka disjoint union of two pieces). We also fix this existing definition to avoid `inhabited` assumptions. ESTIMATED CHANGES Modified src/topology/metric_space/gluing.lean + theorem metric.isometry_inl + theorem metric.isometry_inr - theorem metric.isometry_on_inl - theorem metric.isometry_on_inr + theorem metric.sigma.dist_ne + theorem metric.sigma.dist_same + theorem metric.sigma.fst_eq_of_dist_lt_one + def metric.sigma.has_dist + theorem metric.sigma.isometry_mk + theorem metric.sigma.one_le_dist_of_ne +/- theorem metric.sum.dist_eq_glue_dist Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/uniform_space/cauchy.lean + theorem is_complete_Union_separated 2022-02-17 06:05:54 09960ea feat(algebra/group_power/basic): `two_zsmul` (#12094) Mark `zpow_two` with `@[to_additive two_zsmul]`. I see no apparent reason for this result not to use `to_additive`, and I found I had a use for the additive version. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean 2022-02-17 05:32:27 1831d85 feat(category_theory/limits): Preserves epi of preserves pushout. (#12084) ESTIMATED CHANGES Modified src/category_theory/limits/constructions/epi_mono.lean + theorem category_theory.reflects_epi 2022-02-17 00:34:41 84f12be chore(algebra/star/self_adjoint): improve definitional unfolding of pow and div (#12085) ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean + theorem self_adjoint.coe_div +/- theorem self_adjoint.coe_inv +/- theorem self_adjoint.coe_mul +/- theorem self_adjoint.coe_one + theorem self_adjoint.coe_pow + theorem self_adjoint.coe_zpow 2022-02-17 00:34:40 834fd30 feat(topology/continuous_function/algebra): generalize algebra instances (#12055) This adds: * some missing instances in the algebra hierarchy (`comm_semigroup`, `mul_one_class`, `mul_zero_class`, `monoid_with_zero`, `comm_monoid_with_zero`, `comm_semiring`). * finer-grained scalar action instances, notably none of which require `topological_space R` any more, as they only need `has_continuous_const_smul R M` instead of `has_continuous_smul R M`. * continuity lemmas about `zpow` on groups and `zsmul` on additive groups (copied directly from the lemmas about `pow` on monoids), which are used to avoid diamonds in the int-action. In order to make room for these, the lemmas about `zpow` on groups with zero have been renamed to `zpow₀`, which is consistent with how the similar clash with `inv` is solved. * a few lemmas about `mk_of_compact` since an existing proof was broken by `refl` closing the goal earlier than before. ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/analysis/special_functions/integrals.lean Modified src/analysis/specific_limits.lean Modified src/measure_theory/integral/circle_integral.lean Modified src/topology/algebra/group.lean + theorem continuous.zpow + theorem continuous_at.zpow + theorem continuous_at_zpow + theorem continuous_on.zpow + theorem continuous_on_zpow + theorem continuous_within_at.zpow + theorem continuous_zpow + theorem filter.tendsto.zpow Modified src/topology/algebra/group_with_zero.lean - theorem continuous.zpow + theorem continuous.zpow₀ - theorem continuous_at.zpow + theorem continuous_at.zpow₀ - theorem continuous_at_zpow + theorem continuous_at_zpow₀ - theorem continuous_on.zpow + theorem continuous_on.zpow₀ - theorem continuous_on_zpow + theorem continuous_on_zpow₀ - theorem continuous_within_at.zpow + theorem continuous_within_at.zpow₀ - theorem filter.tendsto.zpow + theorem filter.tendsto.zpow₀ Modified src/topology/category/Top/basic.lean Modified src/topology/category/Top/limits.lean Modified src/topology/continuous_function/algebra.lean +/- theorem continuous_map.coe_div +/- theorem continuous_map.coe_inv +/- theorem continuous_map.coe_one +/- theorem continuous_map.coe_pow +/- theorem continuous_map.coe_smul + theorem continuous_map.coe_zpow +/- theorem continuous_map.div_comp +/- theorem continuous_map.inv_comp +/- theorem continuous_map.mul_comp +/- theorem continuous_map.one_comp +/- theorem continuous_map.pow_comp +/- theorem continuous_map.smul_apply +/- theorem continuous_map.smul_comp + theorem continuous_map.zpow_comp Modified src/topology/continuous_function/basic.lean - theorem continuous_map.coe_inj + theorem continuous_map.coe_injective Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.mk_of_compact_add + theorem bounded_continuous_function.mk_of_compact_neg + theorem bounded_continuous_function.mk_of_compact_one + theorem bounded_continuous_function.mk_of_compact_sub Modified src/topology/continuous_function/compact.lean Modified src/topology/tietze_extension.lean 2022-02-17 00:34:39 27df8a0 feat(topology/instances/rat): some facts about topology on `rat` (#11832) * `ℚ` is a totally disconnected space; * `cocompact ℚ` is not a countably generated filter; * hence, `alexandroff ℚ` is not a first countable topological space. ESTIMATED CHANGES Modified src/topology/dense_embedding.lean + theorem dense_inducing.interior_compact_eq_empty Added src/topology/instances/rat.lean + theorem rat.dense_compl_compact + theorem rat.interior_compact_eq_empty + theorem rat.not_countably_generated_cocompact + theorem rat.not_countably_generated_nhds_infty_alexandroff + theorem rat.not_first_countable_topology_alexandroff + theorem rat.not_second_countable_topology_alexandroff 2022-02-16 22:44:23 7dae87f feat(topology/metric_space/basic): ext lemmas for metric spaces (#12070) Also add a few results in `metric_space.basic`: * A decreasing intersection of closed sets with diameter tending to `0` is nonempty in a complete space * new constructions of metric spaces by pulling back structures (and adjusting definitional equalities) * fixing `metric_space empty` and `metric_space punit` to make sure the uniform structure is definitionally the right one. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eq_top_of_ne_bot Modified src/topology/metric_space/basic.lean + theorem cauchy_seq_of_le_tendsto_0' + theorem dense.exists_dist_lt + theorem dense_range.exists_dist_lt + def embedding.comap_metric_space + theorem is_complete.nonempty_Inter_of_nonempty_bInter + theorem metric.nonempty_Inter_of_nonempty_bInter + theorem metric_space.ext + def metric_space.replace_topology + theorem metric_space.replace_topology_eq + theorem metric_space.replace_uniformity_eq + theorem pseudo_metric_space.ext + theorem pseudo_metric_space.replace_uniformity_eq +/- def uniform_embedding.comap_metric_space Modified src/topology/uniform_space/basic.lean 2022-02-16 22:44:22 5db1ae4 feat(analysis/specific_limits): useful specializations of some lemmas (#12069) ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem pow_le_pow_iff Modified src/analysis/normed/group/basic.lean + theorem antilipschitz_with.le_mul_norm_sub Modified src/analysis/specific_limits.lean + theorem summable_geometric_two_encode + theorem tendsto_pow_const_mul_const_pow_of_lt_one + theorem tendsto_self_mul_const_pow_of_abs_lt_one + theorem tendsto_self_mul_const_pow_of_lt_one 2022-02-16 22:44:21 1bf4181 feat(data/equiv/{basic,mul_equiv)}: add Pi_subsingleton (#12040) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.Pi_subsingleton Modified src/data/equiv/mul_add.lean + def mul_equiv.Pi_subsingleton 2022-02-16 22:44:20 b2aaece feat(field_theory/is_alg_closed): alg closed and char p implies perfect (#12037) ESTIMATED CHANGES Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/perfect_closure.lean 2022-02-16 21:09:23 bd67e85 feat(algebra/char_p/basic): add ring_char_of_prime_eq_zero (#12024) The characteristic of a ring is `p` if `p` is a prime and `p = 0` in the ring. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem char_p.ring_char_of_prime_eq_zero 2022-02-16 21:09:22 0fe91d0 feat(data/part): Instance lemmas (#12001) Lemmas about `part` instances, proved by `tidy` ESTIMATED CHANGES Modified src/data/part.lean + theorem part.append_mem_append + theorem part.div_mem_div + theorem part.inter_mem_inter + theorem part.inv_mem_inv + theorem part.inv_some + theorem part.mod_mem_mod + theorem part.mul_mem_mul + theorem part.one_mem_one + theorem part.sdiff_mem_sdiff + theorem part.some_append_some + theorem part.some_div_some + theorem part.some_inter_some + theorem part.some_mod_some + theorem part.some_mul_some + theorem part.some_sdiff_some + theorem part.some_union_some + theorem part.union_mem_union 2022-02-16 19:16:09 b395a67 chore(data/finsupp/pointwise): golf using injective lemmas (#12086) ESTIMATED CHANGES Modified src/data/finsupp/pointwise.lean + theorem finsupp.coe_mul - theorem finsupp.coe_pointwise_module + theorem finsupp.coe_pointwise_smul 2022-02-16 19:16:08 0ab9b5f chore(topology/continuous_function/bounded): golf algebra instances (#12082) Using the `function.injective.*` lemmas saves a lot of proofs. This also adds a few missing lemmas about `one` that were already present for `zero`. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_one - theorem bounded_continuous_function.coe_zero + theorem bounded_continuous_function.forall_coe_one_iff_one - theorem bounded_continuous_function.forall_coe_zero_iff_zero + theorem bounded_continuous_function.one_comp_continuous - theorem bounded_continuous_function.zero_comp_continuous 2022-02-16 19:16:06 d86ce02 chore(ring_theory/fractional_ideal): golf (#12076) ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_inf + theorem fractional_ideal.coe_sup 2022-02-16 19:16:04 15c6eee feat(logic/basic): Better congruence lemmas for `or`, `or_or_or_comm` (#12004) Prove `or_congr_left` and `or_congr_right` and rename the existing `or_congr_left`/`or_congr_right` to `or_congr_left'`/`or_congr_right'` to match the `and` lemmas. Also prove `or_rotate`, `or.rotate`, `or_or_or_comm` based on `and` again. ESTIMATED CHANGES Modified src/data/fin/basic.lean Modified src/data/set/basic.lean Modified src/logic/basic.lean + theorem Exists₂.imp +/- theorem and.rotate + theorem and_rotate + theorem forall₂_imp + theorem or.rotate + theorem or_congr_left' +/- theorem or_congr_left + theorem or_congr_right' +/- theorem or_congr_right + theorem or_or_or_comm + theorem or_rotate 2022-02-16 19:16:03 5e3d465 feat(category_theory/category/PartialFun): The category of types with partial functions (#11866) Define `PartialFun`, the category of types with partial functions, and show its equivalence with `Pointed`. ESTIMATED CHANGES Added src/category_theory/category/PartialFun.lean + def PartialFun.iso.mk + def PartialFun.of + def PartialFun + def Pointed_to_PartialFun + def Type_to_PartialFun Modified src/category_theory/category/Pointed.lean + def Pointed.iso.mk Modified src/data/subtype.lean +/- theorem exists_eq_subtype_mk_iff +/- theorem exists_subtype_mk_eq_iff + theorem subtype.coe_inj +/- theorem subtype.coe_injective + theorem subtype.val_inj +/- theorem subtype.val_injective 2022-02-16 17:16:29 3c78d00 docs(group_theory/semidirect_product): fix typo in module docs (#12083) ESTIMATED CHANGES Modified src/group_theory/semidirect_product.lean 2022-02-16 17:16:27 3107a83 feat(algebra/char_p/basic): Generalize `frobenius_inj`. (#12079) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean +/- theorem frobenius_inj 2022-02-16 17:16:26 0eb160a feat(data/finset/basic): When `insert` is injective and other lemmas (#11982) * `insert`/`cons` lemmas for `finset` and `multiset` * `has_ssubset` instance for `multiset` * `finset.sdiff_nonempty` * `disjoint.of_image_finset`, `finset.disjoint_image`, `finset.disjoint_map` * `finset.exists_eq_insert_iff` * `mem` lemmas * change `pred` to `- 1` into the statement of `finset.card_erase_of_mem` ESTIMATED CHANGES Modified src/combinatorics/derangements/finite.lean Modified src/combinatorics/set_family/shadow.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/data/finset/basic.lean + theorem disjoint.forall_ne_finset + theorem disjoint.of_image_finset + theorem finset.cons_subset + theorem finset.disjoint_image + theorem finset.disjoint_map + theorem finset.eq_of_not_mem_of_mem_insert + theorem finset.insert_inj + theorem finset.insert_inj_on + theorem finset.sdiff_nonempty + theorem finset.ssubset_cons + theorem finset.ssubset_iff_exists_cons_subset + theorem finset.subset_cons Modified src/data/finset/card.lean +/- theorem finset.card_eq_succ +/- theorem finset.card_erase_eq_ite +/- theorem finset.card_erase_of_mem + theorem finset.exists_eq_insert_iff Modified src/data/finset/powerset.lean Modified src/data/multiset/basic.lean + theorem multiset.cons_subset_cons + theorem multiset.ssubset_cons + theorem multiset.subset_cons Modified src/data/nat/totient.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/set/basic.lean + theorem set.eq_of_not_mem_of_mem_insert + theorem set.insert_inj +/- theorem set.mem_of_mem_insert_of_ne Modified src/data/set/finite.lean Modified src/data/set/function.lean + theorem function.insert_inj_on Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/lagrange.lean Modified src/logic/basic.lean + theorem has_mem.mem.ne_of_not_mem' + theorem has_mem.mem.ne_of_not_mem + theorem ne_of_mem_of_not_mem' +/- theorem ne_of_mem_of_not_mem 2022-02-16 17:16:25 6bcb12c feat(order/antisymmetrization): Turning a preorder into a partial order (#11728) Define `antisymmetrization`, the quotient of a preorder by the "less than both ways" relation. This effectively turns a preorder into a partial order, and this operation is functorial as shown by the new `Preorder_to_PartialOrder`. ESTIMATED CHANGES Modified src/data/quot.lean Added src/order/antisymmetrization.lean + theorem antisymm_rel.image + def antisymm_rel.setoid + theorem antisymm_rel.symm + theorem antisymm_rel.trans + def antisymm_rel + theorem antisymm_rel_iff_eq + theorem antisymm_rel_refl + theorem antisymm_rel_swap + def antisymmetrization + theorem of_antisymmetrization_le_of_antisymmetrization_iff + theorem of_antisymmetrization_lt_of_antisymmetrization_iff + theorem order_hom.antisymmetrization_apply + theorem order_hom.antisymmetrization_apply_mk + theorem order_hom.coe_antisymmetrization + def order_hom.to_antisymmetrization + def order_iso.dual_antisymmetrization + theorem order_iso.dual_antisymmetrization_apply + theorem order_iso.dual_antisymmetrization_symm_apply + def to_antisymmetrization + theorem to_antisymmetrization_le_to_antisymmetrization_iff + theorem to_antisymmetrization_lt_to_antisymmetrization_iff + theorem to_antisymmetrization_mono + theorem to_antisymmetrization_of_antisymmetrization Modified src/order/category/PartialOrder.lean + def Preorder_to_PartialOrder + def Preorder_to_PartialOrder_comp_to_dual_iso_to_dual_comp_Preorder_to_PartialOrder + def Preorder_to_PartialOrder_forget_adjunction Modified src/order/rel_classes.lean +/- theorem antisymm' + theorem antisymm_iff 2022-02-16 16:11:48 8a286af chore(topology/algebra/mul_action): rename type variables (#12020) ESTIMATED CHANGES Modified src/topology/algebra/mul_action.lean +/- theorem filter.tendsto.smul +/- theorem filter.tendsto.smul_const +/- theorem has_continuous_smul_Inf +/- theorem has_continuous_smul_inf +/- theorem has_continuous_smul_infi 2022-02-16 14:23:54 e815675 chore(topology/algebra/module/basic): remove two duplicate lemmas (#12072) `continuous_linear_map.continuous_nsmul` is nothing to do with `continuous_linear_map`s, and is the same as `continuous_nsmul`, but the latter doesn't require commutativity. There is no reason to keep the former. This lemma was added in #7084, but probably got missed due to how large that PR had to be. We can't remove `continuous_linear_map.continuous_zsmul` until #12055 is merged, as there is currently no `continuous_zsmul` in the root namespace. ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean - theorem continuous_linear_map.continuous.nsmul - theorem continuous_linear_map.continuous_nsmul 2022-02-16 14:23:53 a26d17f feat(mv_polynomial/supported): restrict_to_vars (#12043) ESTIMATED CHANGES Modified src/data/mv_polynomial/supported.lean + theorem mv_polynomial.exists_restrict_to_vars 2022-02-16 14:23:52 62297cf feat(analysis/complex/cauchy_integral, analysis/analytic/basic): entire functions have power series with infinite radius of convergence (#11948) This proves that a formal multilinear series `p` which represents a function `f : 𝕜 → E` on a ball of every positive radius, then `p` represents `f` on a ball of infinite radius. Consequently, it is shown that if `f : ℂ → E` is differentiable everywhere, then `cauchy_power_series f z R` represents `f` as a power series centered at `z` in the entirety of `ℂ`, regardless of `R` (assuming `0 < R`). - [x] depends on: #11896 ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem has_fpower_series_on_ball.r_eq_top_of_exists Modified src/analysis/complex/cauchy_integral.lean 2022-02-16 13:36:23 22fdf47 chore(linear_algebra/affine_space/affine_map,topology/algebra/continuous_affine_map): generalized scalar instances (#11978) The main result here is that `distrib_mul_action`s are available on affine maps to a module, inherited from their codomain. This fixes a diamond in the `int`-action that was already present for `int`-affine maps, and prevents the new `nat`-action introducing a diamond. This also removes the requirement for `R` to be a `topological_space` in the scalar action for `continuous_affine_map` by using `has_continuous_const_smul` instead of `has_continuous_smul`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean +/- theorem affine_map.coe_smul +/- theorem affine_map.smul_linear +/- def affine_map.to_const_prod_linear_map Modified src/topology/algebra/continuous_affine_map.lean +/- theorem continuous_affine_map.coe_smul +/- theorem continuous_affine_map.smul_apply 2022-02-16 11:53:41 32beebb feat(algebra/order/monoid): add simp lemmas (#12030) ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem additive.of_mul_le + theorem additive.of_mul_lt + theorem additive.to_mul_le + theorem additive.to_mul_lt + theorem multiplicative.of_add_le + theorem multiplicative.of_add_lt + theorem multiplicative.to_add_le + theorem multiplicative.to_add_lt 2022-02-16 11:53:40 7542119 refactor(algebra/group/basic): add extra typeclasses for negation (#11960) The new typeclasses are: * `has_involutive_inv R`, stating that `(r⁻¹)⁻¹ = r` (instances: `group`, `group_with_zero`, `ennreal`, `set`, `submonoid`) * `has_involutive_neg R`, stating that `- -r = r` (instances: `add_group`, `ereal`, `module.ray`, `ray_vector`, `set`, `add_submonoid`, `jordan_decomposition`) * `has_distrib_neg R`, stating that `-a * b = a * -b = -(a * b)` (instances: `ring`, `units`, `unitary`, `special_linear_group`, `GL_pos`) While the original motivation only concerned the two `neg` typeclasses, the `to_additive` machinery forced the introduction of `has_involutive_inv`, which turned out to be used in more places than expected. Adding these typeclases removes a large number of specialized `units R` lemmas as the lemmas about `R` now match themselves. A surprising number of lemmas elsewhere in the library can also be removed. The removed lemmas are: * Lemmas about `units` (replaced by `units.has_distrib_neg`): * `units.neg_one_pow_eq_or` * `units.neg_pow` * `units.neg_pow_bit0` * `units.neg_pow_bit1` * `units.neg_sq` * `units.neg_inv` (now `inv_neg'` for arbitrary groups with distributive negation) * `units.neg_neg` * `units.neg_mul` * `units.mul_neg` * `units.neg_mul_eq_neg_mul` * `units.neg_mul_eq_mul_neg` * `units.neg_mul_neg` * `units.neg_eq_neg_one_mul` * `units.mul_neg_one` * `units.neg_one_mul` * `semiconj_by.units_neg_right` * `semiconj_by.units_neg_right_iff` * `semiconj_by.units_neg_left` * `semiconj_by.units_neg_left_iff` * `semiconj_by.units_neg_one_right` * `semiconj_by.units_neg_one_left` * `commute.units_neg_right` * `commute.units_neg_right_iff` * `commute.units_neg_left` * `commute.units_neg_left_iff` * `commute.units_neg_one_right` * `commute.units_neg_one_left` * Lemmas about groups with zero (replaced by `group_with_zero.to_has_involutive_neg`): * `inv_inv₀` * `inv_involutive₀` * `inv_injective₀` * `inv_eq_iff` (now shared with the `inv_eq_iff_inv_eq` group lemma) * `eq_inv_iff` (now shared with the `eq_inv_iff_eq_inv` group lemma) * `equiv.inv₀` * `measurable_equiv.inv₀` * Lemmas about `ereal` (replaced by `ereal.has_involutive_neg`): * `ereal.neg_neg` * `ereal.neg_inj` * `ereal.neg_eq_neg_iff` * `ereal.neg_eq_iff_neg_eq` * Lemmas about `ennreal` (replaced by `ennreal.has_involutive_inv`): * `ereal.inv_inv` * `ereal.inv_involutive` * `ereal.inv_bijective` * `ereal.inv_eq_inv` * Other lemmas: * `ray_vector.neg_neg` * `module.ray.neg_neg` * `module.ray.neg_involutive` * `module.ray.eq_neg_iff_eq_neg` * `set.inv_inv` * `set.neg_neg` * `submonoid.inv_inv` * `add_submonoid.neg_neg` As a bonus, this provides the group `unitary R` with a negation operator and all the lemmas listed for `units` above. For now this doesn't attempt to unify `units.neg_smul` and `neg_smul`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean +/- theorem inv_eq_iff_inv_eq +/- theorem inv_inj Modified src/algebra/group/defs.lean Modified src/algebra/group_power/basic.lean - theorem units.neg_one_pow_eq_or - theorem units.neg_pow - theorem units.neg_pow_bit0 - theorem units.neg_pow_bit1 - theorem units.neg_sq Modified src/algebra/group_with_zero/basic.lean - theorem eq_inv_iff - theorem inv_eq_iff - theorem inv_injective₀ - theorem inv_inj₀ - theorem inv_involutive₀ - theorem inv_inv₀ Modified src/algebra/group_with_zero/power.lean Modified src/algebra/order/field.lean Modified src/algebra/order/with_zero.lean Modified src/algebra/periodic.lean Modified src/algebra/pointwise.lean +/- theorem set.finite.inv +/- theorem set.image_inv +/- theorem set.inv_mem_inv +/- theorem set.inv_singleton +/- theorem set.inv_subset +/- theorem set.inv_subset_inv +/- theorem set.nonempty.inv +/- theorem set.nonempty_inv Modified src/algebra/quandle.lean Modified src/algebra/ring/basic.lean - theorem commute.units_neg_left - theorem commute.units_neg_left_iff - theorem commute.units_neg_one_left - theorem commute.units_neg_one_right - theorem commute.units_neg_right - theorem commute.units_neg_right_iff + theorem inv_neg' - theorem semiconj_by.units_neg_left - theorem semiconj_by.units_neg_left_iff - theorem semiconj_by.units_neg_one_left - theorem semiconj_by.units_neg_one_right - theorem semiconj_by.units_neg_right - theorem semiconj_by.units_neg_right_iff - theorem units.mul_neg_one - theorem units.neg_mul_eq_mul_neg - theorem units.neg_mul_eq_neg_mul - theorem units.neg_one_mul Modified src/algebra/star/unitary.lean + theorem unitary.coe_neg Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/log_deriv.lean Modified src/analysis/specific_limits.lean Modified src/data/equiv/mul_add.lean - theorem equiv.inv_symm₀ Modified src/data/real/conjugate_exponents.lean Modified src/data/real/ennreal.lean - theorem ennreal.inv_bijective - theorem ennreal.inv_eq_inv - theorem ennreal.inv_inv - theorem ennreal.inv_involutive Modified src/data/real/ereal.lean - theorem ereal.neg_eq_iff_neg_eq - theorem ereal.neg_eq_neg_iff - theorem ereal.neg_inj Modified src/data/real/golden_ratio.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.inv_epsilon_eq_omega Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean Modified src/data/set/intervals/image_preimage.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/ratfunc.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/pointwise.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/orientation.lean - theorem module.ray.neg_involutive Modified src/linear_algebra/special_linear_group.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/group/measurable_equiv.lean +/- def measurable_equiv.inv - def measurable_equiv.inv₀ +/- theorem measurable_equiv.symm_inv - theorem measurable_equiv.symm_inv₀ Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/mean_inequalities.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/number_theory/l_series.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/tactic/norm_num.lean Modified src/topology/instances/ennreal.lean 2022-02-16 11:53:38 d24792c feat(model_theory/terms_and_formulas): Define satisfiability and semantic equivalence of formulas (#11928) Defines satisfiability of theories Provides a default model of a satisfiable theory Defines semantic (logical) equivalence of formulas ESTIMATED CHANGES Modified src/model_theory/basic.lean - def first_order.language.empty + theorem first_order.language.nonempty_of_nonempty_constants Modified src/model_theory/definability.lean Modified src/model_theory/terms_and_formulas.lean + theorem first_order.language.Theory.imp_semantically_equivalent_not_sup + theorem first_order.language.Theory.inf_semantically_equivalent_not_sup_not + def first_order.language.Theory.is_finitely_satisfiable + theorem first_order.language.Theory.is_satisfiable.is_finitely_satisfiable + theorem first_order.language.Theory.is_satisfiable.mono + def first_order.language.Theory.is_satisfiable.some_model + theorem first_order.language.Theory.is_satisfiable.some_model_models + def first_order.language.Theory.is_satisfiable + theorem first_order.language.Theory.model.is_satisfiable + theorem first_order.language.Theory.model.mono + def first_order.language.Theory.model + def first_order.language.Theory.models_bounded_formula + theorem first_order.language.Theory.models_formula_iff + theorem first_order.language.Theory.models_sentence_iff + theorem first_order.language.Theory.semantically_equivalent.realize_eq + theorem first_order.language.Theory.semantically_equivalent.some_model_realize_eq + def first_order.language.Theory.semantically_equivalent + theorem first_order.language.Theory.semantically_equivalent_not_not + def first_order.language.Theory.semantically_equivalent_setoid + theorem first_order.language.Theory.sup_semantically_equivalent_not_inf_not + def first_order.language.Theory +/- def first_order.language.bd_not + theorem first_order.language.realize_imp + theorem first_order.language.realize_inf - def first_order.language.theory 2022-02-16 11:19:27 6dfb24c feat(algebra/star/self_adjoint): define skew-adjoint elements of a star additive group (#12013) This defines the skew-adjoint elements of a star additive group, as the additive subgroup that satisfies `star x = -x`. The development is analogous to that of `self_adjoint`. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean + theorem skew_adjoint.bit0_mem + theorem skew_adjoint.coe_smul + theorem skew_adjoint.conjugate' + theorem skew_adjoint.conjugate + theorem skew_adjoint.mem_iff + theorem skew_adjoint.star_coe_eq + def skew_adjoint 2022-02-16 09:30:11 06e6b35 feat(analysis/special_functions/trigonometric/angle): `coe_pi_add_coe_pi` (#12064) Add another `simp` lemma to those expressing in different ways that 2π is zero as a `real.angle`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.coe_pi_add_coe_pi 2022-02-16 07:45:37 daf2989 feat(algebra/big_operators): formula for product of sums to n+1 (#12042) ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean + theorem finset.sum_range_succ_mul_sum_range_succ 2022-02-16 07:16:02 6a09cd0 chore(topology/uniform_space): use weaker TC assumptions (#12066) We don't need `[uniform_space β]` to prove `uniform_space.completion.ext`. ESTIMATED CHANGES Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/completion.lean +/- theorem uniform_space.completion.ext 2022-02-15 20:57:33 eeb2956 feat(topology/algebra): relax some `Type*` assumptions to `Sort*` (#12058) When working on #11720 I forgot that we have to deal with Prop-indexed infimums quite often, so this PR fixes that. ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/mul_action.lean 2022-02-15 19:34:16 b0fe972 feat (analysis/normed_space/spectrum): prove Gelfand's formula for the spectral radius (#11916) This establishes Gelfand's formula for the spectral radius in a complex Banach algebra `A`, namely that the sequence of n-th roots of the norms of n-th powers of any element tends to its spectral radius. Some results which hold in more generality concerning the function `z ↦ ring.inverse (1 - z • a)` are also given. In particular, this function is differentiable on the disk with radius the reciprocal of the spectral radius, and it has a power series on the ball with radius equal to the reciprocal of the norm of `a : A`. Currently, the version of Gelfand's formula which appears here includes an assumption that `A` is second countable, which won't hold in general unless `A` is separable. This is not a true (i.e., mathematical) limitation, but a consequence of the current implementation of Bochner integrals in mathlib (which are an essential feature in the proof of Gelfand's formula because of its use of the Cauchy integral formula). When Bochner integrals are refactored, this type class assumption can be dropped. - [x] depends on: #11869 - [x] depends on: #11896 - [x] depends on: #11915 ESTIMATED CHANGES Modified src/analysis/normed_space/spectrum.lean + theorem spectrum.differentiable_on_inverse_one_sub_smul + theorem spectrum.has_fpower_series_on_ball_inverse_one_sub_smul + theorem spectrum.is_unit_one_sub_smul_of_lt_inv_radius + theorem spectrum.limsup_pow_nnnorm_pow_one_div_le_spectral_radius + theorem spectrum.mem_resolvent_set_of_spectral_radius_lt + theorem spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectral_radius + theorem spectrum.pow_norm_pow_one_div_tendsto_nhds_spectral_radius 2022-02-15 19:34:15 d76ac2e feat(category_theory): separators and detectors (#11880) ESTIMATED CHANGES Modified src/category_theory/balanced.lean + theorem category_theory.balanced_opposite Added src/category_theory/generator.lean + theorem category_theory.groupoid_of_is_codetecting_empty + theorem category_theory.groupoid_of_is_detecting_empty + theorem category_theory.is_codetecting.is_coseparating + theorem category_theory.is_codetecting.mono + def category_theory.is_codetecting + theorem category_theory.is_codetecting_empty_of_groupoid + theorem category_theory.is_codetecting_iff_is_coseparating + theorem category_theory.is_codetecting_op_iff + theorem category_theory.is_codetecting_unop_iff + theorem category_theory.is_codetector.def + theorem category_theory.is_codetector.is_coseparator + def category_theory.is_codetector + theorem category_theory.is_codetector_def + theorem category_theory.is_codetector_iff_reflects_isomorphisms_yoneda_obj + theorem category_theory.is_codetector_op_iff + theorem category_theory.is_codetector_unop_iff + theorem category_theory.is_coseparating.is_codetecting + theorem category_theory.is_coseparating.mono + def category_theory.is_coseparating + theorem category_theory.is_coseparating_empty_of_thin + theorem category_theory.is_coseparating_op_iff + theorem category_theory.is_coseparating_unop_iff + theorem category_theory.is_coseparator.def + def category_theory.is_coseparator + theorem category_theory.is_coseparator_def + theorem category_theory.is_coseparator_iff_faithful_yoneda_obj + theorem category_theory.is_coseparator_op_iff + theorem category_theory.is_coseparator_unop_iff + theorem category_theory.is_cospearator.is_codetector + theorem category_theory.is_detecting.is_separating + theorem category_theory.is_detecting.mono + def category_theory.is_detecting + theorem category_theory.is_detecting_empty_of_groupoid + theorem category_theory.is_detecting_iff_is_separating + theorem category_theory.is_detecting_op_iff + theorem category_theory.is_detecting_unop_iff + theorem category_theory.is_detector.def + theorem category_theory.is_detector.is_separator + def category_theory.is_detector + theorem category_theory.is_detector_def + theorem category_theory.is_detector_iff_reflects_isomorphisms_coyoneda_obj + theorem category_theory.is_detector_op_iff + theorem category_theory.is_detector_unop_iff + theorem category_theory.is_separating.is_detecting + theorem category_theory.is_separating.mono + def category_theory.is_separating + theorem category_theory.is_separating_empty_of_thin + theorem category_theory.is_separating_op_iff + theorem category_theory.is_separating_unop_iff + theorem category_theory.is_separator.def + theorem category_theory.is_separator.is_detector + def category_theory.is_separator + theorem category_theory.is_separator_def + theorem category_theory.is_separator_iff_faithful_coyoneda_obj + theorem category_theory.is_separator_op_iff + theorem category_theory.is_separator_unop_iff + theorem category_theory.thin_of_is_coseparating_empty + theorem category_theory.thin_of_is_separating_empty Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/opposites.lean + theorem category_theory.is_iso_op_iff + theorem category_theory.is_iso_unop_iff +/- theorem category_theory.op_inv + theorem category_theory.unop_inv 2022-02-15 19:04:10 ff2c9dc feat(combinatorics/simple_graph/connectivity): add functions to split walks and to create paths (#11095) This is chunk 3 of #8737. Introduces `take_until` and `drop_until` to split walks at a vertex, `rotate` to rotate cycles, and `to_path` to remove internal redundancy from a walk to create a path with the same endpoints. This also defines a bundled `path` type for `is_path` since `G.path u v` is a useful type. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + def simple_graph.path + def simple_graph.walk.bypass + theorem simple_graph.walk.bypass_is_path + theorem simple_graph.walk.count_edges_take_until_le_one + theorem simple_graph.walk.count_support_take_until_eq_one + def simple_graph.walk.drop_until + theorem simple_graph.walk.edges_bypass_subset + theorem simple_graph.walk.edges_drop_until_subset + theorem simple_graph.walk.edges_take_until_subset + theorem simple_graph.walk.edges_to_path_subset + theorem simple_graph.walk.is_circuit.rotate + theorem simple_graph.walk.is_cycle.rotate + theorem simple_graph.walk.is_path.drop_until + theorem simple_graph.walk.is_path.take_until + theorem simple_graph.walk.is_trail.drop_until + theorem simple_graph.walk.is_trail.rotate + theorem simple_graph.walk.is_trail.take_until + theorem simple_graph.walk.length_bypass_le + theorem simple_graph.walk.length_drop_until_le + theorem simple_graph.walk.length_take_until_le + theorem simple_graph.walk.mem_support_nil_iff + def simple_graph.walk.rotate + theorem simple_graph.walk.rotate_edges + theorem simple_graph.walk.support_bypass_subset + theorem simple_graph.walk.support_drop_until_subset + theorem simple_graph.walk.support_rotate + theorem simple_graph.walk.support_take_until_subset + theorem simple_graph.walk.support_to_path_subset + theorem simple_graph.walk.take_spec + def simple_graph.walk.take_until + def simple_graph.walk.to_path 2022-02-15 17:47:31 5027b28 move(data/nat/choose/bounds): Move from `combinatorics.choose.bounds` (#12051) This file fits better with all other files about `nat.choose`. My bad for originally proposing it goes alone under `combinatorics`. ESTIMATED CHANGES Renamed src/combinatorics/choose/bounds.lean to src/data/nat/choose/bounds.lean 2022-02-15 17:47:30 52aaf17 feat(data/{list,multiset,finset}/nat_antidiagonal): add lemmas to remove elements from head and tail of antidiagonal (#12028) Also lowered `finset.nat.map_swap_antidiagonal` down to `list` through `multiset`. ESTIMATED CHANGES Modified src/data/finset/nat_antidiagonal.lean + theorem finset.nat.antidiagonal_succ' + theorem finset.nat.antidiagonal_succ_succ' Modified src/data/list/nat_antidiagonal.lean + theorem list.nat.antidiagonal_succ' + theorem list.nat.antidiagonal_succ_succ' + theorem list.nat.map_swap_antidiagonal Modified src/data/multiset/nat_antidiagonal.lean + theorem multiset.nat.antidiagonal_succ' + theorem multiset.nat.antidiagonal_succ_succ' + theorem multiset.nat.map_swap_antidiagonal 2022-02-15 15:53:29 c0c673a feat(data/equiv,logic/embedding): add `can_lift` instances (#12049) ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- theorem equiv.of_bijective_apply_symm_apply +/- theorem equiv.of_bijective_symm_apply_apply Modified src/logic/embedding.lean 2022-02-15 15:52:59 c686fcc feat(analysis/specific_limits): add `tendsto_zero_smul_of_tendsto_zero_of_bounded` (#12039) ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem normed_field.tendsto_zero_smul_of_tendsto_zero_of_bounded 2022-02-15 15:52:56 6e64492 feat(ring_theory/multiplicity): Equality of `factorization`, `multiplicity`, and `padic_val_nat` (#12033) Proves `multiplicity_eq_factorization : multiplicity p n = n.factorization p` for prime `p` and `n ≠ 0` and uses this to golf the proof of `padic_val_nat_eq_factorization : padic_val_nat p n = n.factorization p`. ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean +/- theorem padic_val_nat_eq_factorization Modified src/ring_theory/multiplicity.lean + theorem multiplicity_eq_factorization 2022-02-15 15:52:53 9307f5b feat(topology/order/lattice): add a consequence of the continuity of sup/inf (#12003) Prove this lemma and its `inf` counterpart: ```lean lemma filter.tendsto.sup_right_nhds {ι β} [topological_space β] [has_sup β] [has_continuous_sup β] {l : filter ι} {f g : ι → β} {x y : β} (hf : tendsto f l (𝓝 x)) (hg : tendsto g l (𝓝 y)) : tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) ``` The name is `sup_right_nhds` because `sup` already exists, and is about a supremum over the filters on the left in the tendsto. The proofs of `tendsto_prod_iff'` and `prod.tendsto_iff` were written by Patrick Massot. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.tendsto_prod_iff' Modified src/topology/constructions.lean + theorem prod.tendsto_iff Modified src/topology/order/lattice.lean + theorem filter.tendsto.inf_right_nhds' + theorem filter.tendsto.inf_right_nhds + theorem filter.tendsto.sup_right_nhds' + theorem filter.tendsto.sup_right_nhds 2022-02-15 15:52:52 60b77a7 feat(analysis/special_functions/complex/circle): `real.angle.exp_map_circle` lemmas (#11969) Add four more `simp` lemmas about `real.angle.exp_map_circle`: `exp_map_circle_zero`, `exp_map_circle_neg`, `exp_map_circle_add` and `arg_exp_map_circle`. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/circle.lean + theorem real.angle.arg_exp_map_circle + theorem real.angle.exp_map_circle_add + theorem real.angle.exp_map_circle_neg + theorem real.angle.exp_map_circle_zero 2022-02-15 15:52:49 0c33309 feat(number_theory/zsqrtd/basic): add some lemmas (#11964) ESTIMATED CHANGES Modified src/number_theory/zsqrtd/basic.lean + theorem zsqrtd.coe_int_dvd_coe_int +/- theorem zsqrtd.coe_int_dvd_iff + theorem zsqrtd.coprime_of_dvd_coprime + theorem zsqrtd.exists_coprime_of_gcd_pos + theorem zsqrtd.gcd_eq_zero_iff + theorem zsqrtd.gcd_pos_iff + theorem zsqrtd.smul_im + theorem zsqrtd.smul_re 2022-02-15 15:52:48 3d1354c feat(set_theory/ordinal_arithmetic): Suprema of functions with the same range are equal (#11910) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.blsub_eq_of_brange_eq + theorem ordinal.blsub_le_of_brange_subset + def ordinal.brange + theorem ordinal.brange_bfamily_of_family' + theorem ordinal.brange_bfamily_of_family + theorem ordinal.bsup_eq_of_brange_eq + theorem ordinal.bsup_le_of_brange_subset + theorem ordinal.lsub_eq_of_range_eq + theorem ordinal.lsub_le_of_range_subset + theorem ordinal.mem_brange + theorem ordinal.mem_brange_self + theorem ordinal.range_family_of_bfamily' + theorem ordinal.range_family_of_bfamily + theorem ordinal.sup_eq_of_range_eq +/- theorem ordinal.sup_eq_sup + theorem ordinal.sup_le_of_range_subset 2022-02-15 15:52:46 721bace refactor(set_theory/ordinal_arithmetic): `omin` → `Inf` (#11867) We remove the redundant `omin` in favor of `Inf`. We also introduce a `conditionally_complete_linear_order_bot` instance on `cardinals`, and golf a particularly messy proof. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + def cardinal.min + def cardinal.out_mk_equiv + def cardinal.powerlt + def cardinal.succ + def cardinal.sup + def cardinal.to_enat + def cardinal.to_nat Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.ord_aleph'_eq_enum_card +/- theorem cardinal.ord_aleph_eq_enum_card Modified src/set_theory/game/nim.lean Modified src/set_theory/ordinal.lean - theorem ordinal.Inf_eq_omin - theorem ordinal.Inf_mem - theorem ordinal.le_omin - theorem ordinal.not_lt_omin - def ordinal.omin - theorem ordinal.omin_le - theorem ordinal.omin_mem Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.blsub_le_enum_ord +/- theorem ordinal.deriv_eq_enum_fp +/- theorem ordinal.div_def + theorem ordinal.div_nonempty +/- theorem ordinal.div_zero +/- def ordinal.enum_ord.order_iso +/- theorem ordinal.enum_ord.strict_mono +/- theorem ordinal.enum_ord.surjective +/- def ordinal.enum_ord - theorem ordinal.enum_ord_def'_H + theorem ordinal.enum_ord_def'_nonempty - theorem ordinal.enum_ord_def_H + theorem ordinal.enum_ord_def_nonempty +/- theorem ordinal.enum_ord_mem +/- theorem ordinal.enum_ord_range + theorem ordinal.enum_ord_succ_le + theorem ordinal.enum_ord_zero + theorem ordinal.enum_ord_zero_le +/- theorem ordinal.eq_enum_ord +/- theorem ordinal.log_def + theorem ordinal.log_nonempty + theorem ordinal.sub_nonempty +/- theorem ordinal.succ_log_def +/- def ordinal.sup + theorem ordinal.sup_nonempty 2022-02-15 15:52:45 9acc1d4 feat(model_theory/finitely_generated): Finitely generated and countably generated (sub)structures (#11857) Defines `substructure.fg` and `Structure.fg` to indicate when (sub)structures are finitely generated Defines `substructure.cg` and `Structure.cg` to indicate when (sub)structures are countably generated ESTIMATED CHANGES Added src/model_theory/finitely_generated.lean + theorem first_order.language.Structure.cg.map_of_surjective + theorem first_order.language.Structure.cg.range + theorem first_order.language.Structure.cg_def + theorem first_order.language.Structure.cg_iff + theorem first_order.language.Structure.fg.map_of_surjective + theorem first_order.language.Structure.fg.range + theorem first_order.language.Structure.fg_def + theorem first_order.language.Structure.fg_iff + theorem first_order.language.equiv.cg_iff + theorem first_order.language.equiv.fg_iff + theorem first_order.language.substructure.cg.map + theorem first_order.language.substructure.cg.of_map_embedding + def first_order.language.substructure.cg + theorem first_order.language.substructure.cg_bot + theorem first_order.language.substructure.cg_closure + theorem first_order.language.substructure.cg_closure_singleton + theorem first_order.language.substructure.cg_def + theorem first_order.language.substructure.cg_iff_Structure_cg + theorem first_order.language.substructure.cg_iff_empty_or_exists_nat_generating_family + theorem first_order.language.substructure.cg_sup + theorem first_order.language.substructure.fg.cg + theorem first_order.language.substructure.fg.map + theorem first_order.language.substructure.fg.of_map_embedding + def first_order.language.substructure.fg + theorem first_order.language.substructure.fg_bot + theorem first_order.language.substructure.fg_closure + theorem first_order.language.substructure.fg_closure_singleton + theorem first_order.language.substructure.fg_def + theorem first_order.language.substructure.fg_iff_Structure_fg + theorem first_order.language.substructure.fg_iff_exists_fin_generating_family + theorem first_order.language.substructure.fg_sup 2022-02-15 15:52:44 41dd6d8 feat(data/nat/modeq): add modeq and dvd lemmas from Apostol Chapter 5 (#11787) Various lemmas about `modeq` from Chapter 5 of Apostol (1976) Introduction to Analytic Number Theory: * `mul_left_iff` and `mul_right_iff`: Apostol, Theorem 5.3 * `dvd_iff_of_modeq_of_dvd`: Apostol, Theorem 5.5 * `gcd_eq_of_modeq`: Apostol, Theorem 5.6 * `eq_of_modeq_of_abs_lt`: Apostol, Theorem 5.7 * `modeq_cancel_left_div_gcd`: Apostol, Theorem 5.4; plus other cancellation lemmas following from this. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.eq_zero_of_abs_lt_dvd Modified src/data/nat/modeq.lean + theorem nat.modeq.dvd_iff_of_modeq_of_dvd + theorem nat.modeq.eq_of_modeq_of_abs_lt + theorem nat.modeq.gcd_eq_of_modeq + theorem nat.modeq.modeq_cancel_left_div_gcd' + theorem nat.modeq.modeq_cancel_left_div_gcd + theorem nat.modeq.modeq_cancel_left_of_coprime + theorem nat.modeq.modeq_cancel_right_div_gcd' + theorem nat.modeq.modeq_cancel_right_div_gcd + theorem nat.modeq.modeq_cancel_right_of_coprime 2022-02-15 14:39:56 b0508f3 feat(topology/uniform/uniform_embedding): a sum of two complete spaces is complete (#11971) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem discrete_topology_of_discrete_uniformity +/- def uniform_space.replace_topology Modified src/topology/uniform_space/uniform_embedding.lean + def embedding.comap_uniform_space + theorem embedding.to_uniform_embedding + theorem uniform_embedding_inl + theorem uniform_embedding_inr 2022-02-15 14:39:55 77ca1ed feat(order/category/Lattice): The category of lattices (#11968) Define `Lattice`, the category of lattices with lattice homs. ESTIMATED CHANGES Modified src/category_theory/concrete_category/bundled_hom.lean Added src/order/category/Lattice.lean + def Lattice.dual + def Lattice.dual_equiv + def Lattice.iso.mk + def Lattice.of + def Lattice + theorem Lattice_dual_comp_forget_to_PartialOrder Modified src/order/category/LinearOrder.lean + def LinearOrder.dual - def LinearOrder.to_dual + theorem LinearOrder_dual_comp_forget_to_Lattice - theorem LinearOrder_dual_equiv_comp_forget_to_PartialOrder Modified src/order/hom/lattice.lean 2022-02-15 12:59:13 5bcffd9 feat(number_theory/cyclotomic/zeta): add lemmas (#11786) Lemmas about the norm of `ζ - 1`. From flt-regular. - [x] depends on: #11941 ESTIMATED CHANGES Modified src/number_theory/cyclotomic/primitive_roots.lean + theorem is_cyclotomic_extension.is_prime_pow.norm_zeta_sub_one + theorem is_cyclotomic_extension.norm_zeta_eq_one + theorem is_cyclotomic_extension.prime_ne_two.norm_zeta_sub_one + theorem is_cyclotomic_extension.prime_ne_two_pow.norm_zeta_sub_one + theorem is_cyclotomic_extension.two_pow.norm_zeta_sub_one + theorem is_primitive_root.prime_ne_two_pow.sub_one_norm + theorem is_primitive_root.sub_one_norm.is_prime_pow + theorem is_primitive_root.sub_one_norm.pow_two + theorem is_primitive_root.sub_one_norm.prime +/- theorem is_primitive_root.sub_one_norm_eq_eval_cyclotomic 2022-02-15 12:59:12 a2d7b55 feat(order/complete_boolean_algebra): Frames (#11709) Define the order theoretic `order.frame` and `order.coframe` and insert them between `complete_lattice` and `complete_distrib_lattice`. ESTIMATED CHANGES Modified docs/references.bib Modified src/data/set/prod.lean + theorem set.image_prod_mk_subset_prod_left + theorem set.image_prod_mk_subset_prod_right Modified src/order/complete_boolean_algebra.lean +/- theorem Sup_inf_Sup +/- theorem Sup_inf_eq + theorem binfi_sup_binfi + theorem bsupr_inf_bsupr +/- theorem bsupr_inf_eq +/- theorem inf_Sup_eq +/- theorem inf_bsupr_eq +/- theorem inf_supr_eq + theorem infi_sup_infi +/- theorem supr_inf_eq + theorem supr_inf_supr Modified src/order/copy.lean + def coframe.copy + def frame.copy 2022-02-15 12:30:09 440e6b3 feat(topology/algebra/module/locally_convex): define locally convex spaces (#11859) ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem normed_space.to_locally_convex_space' + theorem seminorm.with_seminorms.to_locally_convex_space Added src/topology/algebra/module/locally_convex.lean + theorem locally_convex_space.convex_basis_zero + theorem locally_convex_space.of_bases + theorem locally_convex_space.of_basis_zero + theorem locally_convex_space_iff + theorem locally_convex_space_iff_exists_convex_subset + theorem locally_convex_space_iff_exists_convex_subset_zero + theorem locally_convex_space_iff_zero 2022-02-15 11:12:39 c5578f9 feat(group_theory/nilpotent): products of nilpotent groups (#11827) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem lower_central_series_prod + theorem nilpotency_class_prod 2022-02-15 08:27:11 f12b3d9 feat(topology/algebra): weaken typeclasses to only require `has_continuous_const_smul` (#11995) This changes all the continuity-based `const_smul` lemmas to only require `has_continuous_const_smul` rather than `has_continuous_smul`. It does not attempt to propagate the changes out of this file. Four new instances are added in `const_mul_action.lean` for `has_continuous_const_smul`: `mul_opposite`, `prod`, `pi`, and `units`; all copied from the corresponding `has_continuous_smul` instance in `mul_action.lean`. Presumably these lemmas existed before this typeclass did. At any rate, the connection was less obvious until the rename a few days ago in #11940. ESTIMATED CHANGES Modified src/topology/algebra/const_mul_action.lean + theorem continuous.const_smul + theorem continuous_at.const_smul + theorem continuous_at_const_smul_iff + theorem continuous_at_const_smul_iff₀ + theorem continuous_const_smul_iff + theorem continuous_const_smul_iff₀ + theorem continuous_on.const_smul + theorem continuous_on_const_smul_iff + theorem continuous_on_const_smul_iff₀ + theorem continuous_within_at.const_smul + theorem continuous_within_at_const_smul_iff + theorem continuous_within_at_const_smul_iff₀ + theorem filter.tendsto.const_smul +/- def homeomorph.smul - def homeomorph.vadd + theorem interior_smul₀ + theorem is_closed.smul + theorem is_closed_map_smul + theorem is_closed_map_smul_of_ne_zero + theorem is_closed_map_smul₀ + theorem is_open.smul + theorem is_open.smul₀ + theorem is_open_map_smul + theorem is_open_map_smul₀ + theorem is_unit.continuous_at_const_smul_iff + theorem is_unit.continuous_const_smul_iff + theorem is_unit.continuous_on_const_smul_iff + theorem is_unit.continuous_within_at_const_smul_iff + theorem is_unit.is_closed_map_smul + theorem is_unit.is_open_map_smul + theorem is_unit.tendsto_const_smul_iff + theorem smul_closure_orbit_subset + theorem smul_closure_subset + theorem tendsto_const_smul_iff + theorem tendsto_const_smul_iff₀ Modified src/topology/algebra/mul_action.lean - theorem continuous.const_smul - theorem continuous_at.const_smul - theorem continuous_at_const_smul_iff - theorem continuous_at_const_smul_iff₀ - theorem continuous_const_smul_iff - theorem continuous_const_smul_iff₀ - theorem continuous_on.const_smul - theorem continuous_on_const_smul_iff - theorem continuous_on_const_smul_iff₀ - theorem continuous_within_at.const_smul - theorem continuous_within_at_const_smul_iff - theorem continuous_within_at_const_smul_iff₀ - theorem filter.tendsto.const_smul - theorem interior_smul₀ - theorem is_closed.smul - theorem is_closed_map_smul - theorem is_closed_map_smul_of_ne_zero - theorem is_closed_map_smul₀ - theorem is_open.smul - theorem is_open.smul₀ - theorem is_open_map_smul - theorem is_open_map_smul₀ - theorem is_unit.continuous_at_const_smul_iff - theorem is_unit.continuous_const_smul_iff - theorem is_unit.continuous_on_const_smul_iff - theorem is_unit.continuous_within_at_const_smul_iff - theorem is_unit.is_closed_map_smul - theorem is_unit.is_open_map_smul - theorem is_unit.tendsto_const_smul_iff - theorem smul_closure_orbit_subset - theorem smul_closure_subset - theorem tendsto_const_smul_iff - theorem tendsto_const_smul_iff₀ 2022-02-15 06:34:35 f1334b9 chore(category_theory/triangulated/rotate): optimizing some proofs (#12031) Removes some non-terminal `simp`s; replaces some `simp`s by `simp only [...]` and `rw`. Compilation time dropped from 1m40s to 1m05s on my machine. ESTIMATED CHANGES Modified src/category_theory/triangulated/rotate.lean 2022-02-15 05:21:51 4c76eac chore(probability_theory/*): Rename folder (#11989) Rename `probability_theory` to `probability`. ESTIMATED CHANGES Renamed src/probability_theory/density.lean to src/probability/density.lean Renamed src/probability_theory/independence.lean to src/probability/independence.lean Renamed src/probability_theory/integration.lean to src/probability/integration.lean Renamed src/probability_theory/martingale.lean to src/probability/martingale.lean Renamed src/probability_theory/notation.lean to src/probability/notation.lean Renamed src/probability_theory/stopping.lean to src/probability/stopping.lean 2022-02-15 02:51:23 430faa9 chore(scripts): update nolints.txt (#12048) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2022-02-15 02:21:36 a1283d0 feat(analysis/inner_product_space/adjoint): `is_self_adjoint_iff_eq_a… (#12047) …djoint` A self-adjoint linear map is equal to its adjoint. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem linear_map.is_self_adjoint_iff_eq_adjoint 2022-02-15 01:27:49 92ac8ff feat(analysis/special_functions/complex/arg): `arg_coe_angle_eq_iff` (#12017) Add a lemma that `arg` of two numbers coerced to `real.angle` is equal if and only if `arg` is equal. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_coe_angle_eq_iff 2022-02-14 23:41:27 5dc720d chore(number_theory/padics/padic_norm): golf `prod_pow_prime_padic_val_nat` (#12034) A todo comment said "this proof can probably be golfed with `factorization` stuff"; it turns out that indeed it can be. :) ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean 2022-02-14 21:58:15 f9bac45 chore(category_theory/linear/yoneda): Removing some slow uses of `obviously` (#11979) Providing explicit proofs for `map_id'` and `map_comp'` rather than leaving them for `obviously` (and hence `tidy`) to fill in. Suggested by Kevin Buzzard in [this Zulip comment](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60tidy.60.20in.20mathlib.20proofs/near/271474418). (These are temporary changes until `obviously` can be tweaked to do this more quickly) ESTIMATED CHANGES Modified src/category_theory/linear/yoneda.lean 2022-02-14 21:58:14 efdce09 refactor(topology/constructions): turn `cofinite_topology` into a type synonym (#11967) Instead of `cofinite_topology α : topological_space α`, define `cofinite_topology α := α` with an instance `topological_space (cofinite_topology α) := (old definition)`. This way we can talk about cofinite topology without using `@` all over the place. Also move `homeo_of_equiv_compact_to_t2.t1_counterexample` to `topology.alexandroff` and prove it for `alexandroff ℕ` and `cofinite_topology (alexandroff ℕ)`. ESTIMATED CHANGES Modified src/topology/alexandroff.lean + theorem alexandroff.not_continuous_cofinite_topology_of_symm + theorem continuous.homeo_of_equiv_compact_to_t2.t1_counterexample Modified src/topology/constructions.lean + theorem cofinite_topology.is_closed_iff + theorem cofinite_topology.is_open_iff' + theorem cofinite_topology.is_open_iff + theorem cofinite_topology.mem_nhds_iff + theorem cofinite_topology.nhds_eq + def cofinite_topology.of +/- def cofinite_topology - theorem mem_nhds_cofinite - theorem nhds_cofinite Modified src/topology/homeomorph.lean - theorem continuous.homeo_of_equiv_compact_to_t2.t1_counterexample Modified src/topology/separation.lean + theorem cofinite_topology.continuous_of + theorem t1_space_iff_continuous_cofinite_of - theorem t1_space_iff_le_cofinite +/- theorem t1_space_tfae 2022-02-14 21:58:13 ec11e5f feat(algebra/covariant_and_contravariant): covariance and monotonicity (#11815) Some simple lemmas about monotonicity and covariant operators. Proves things like `monotone f → monotone (λ n, f (3 + n))` by library search. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean + theorem antitone.covariant_of_const' + theorem antitone.covariant_of_const + theorem covariant.monotone_of_const + theorem monotone.covariant_of_const' + theorem monotone.covariant_of_const 2022-02-14 20:17:46 4ba8334 doc(number_theory/cyclotomic/gal): fix typo (#12038) ESTIMATED CHANGES Modified src/number_theory/cyclotomic/gal.lean 2022-02-14 20:17:44 263833c feat(data/nat/factorization): add `le_of_mem_factorization` (#12032) `le_of_mem_factors`: every factor of `n` is `≤ n` `le_of_mem_factorization`: everything in `n.factorization.support` is `≤ n` ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.le_of_mem_factorization Modified src/data/nat/prime.lean + theorem nat.le_of_mem_factors 2022-02-14 20:17:42 1a3c069 chore(data/equiv/set): more lemmas about prod (#12022) Note we don't need the `symm` lemmas for `prod.comm`, since `prod.comm` is involutive ESTIMATED CHANGES Modified src/data/equiv/set.lean + theorem equiv.prod_assoc_image + theorem equiv.prod_assoc_symm_image + theorem equiv.prod_assoc_symm_preimage + theorem equiv.prod_comm_image + theorem equiv.prod_comm_preimage 2022-02-14 18:40:35 583ea58 feat(data/list/big_operators): add `list.prod_map_mul` (#12029) This is an analogue of the corresponding lemma `multiset.prod_map_mul`. ESTIMATED CHANGES Modified src/data/list/big_operators.lean + theorem list.prod_map_mul 2022-02-14 14:46:55 199e8ca feat(algebra/star/self_adjoint): generalize scalar action instances (#12021) The `distrib_mul_action` instance did not require the underlying space to be a module. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean +/- theorem self_adjoint.coe_smul 2022-02-14 14:46:54 5166aaa feat(analysis/normed_space/linear_isometry): `trans_one`, `one_trans`, `refl_mul`, `mul_refl` (#12016) Add variants of the `linear_isometry_equiv.trans_refl` and `linear_isometry_equiv.refl_trans` `simp` lemmas where `refl` is given as `1`. (`one_def` isn't a `simp` lemma in either direction, since either `refl` or `1` could be the appropriate simplest form depending on the context, but it seems clear these expressions involving `trans` with `1` are still appropriate to simplify.) Also add corresponding `refl_mul` and `mul_refl`. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.mul_refl + theorem linear_isometry_equiv.one_trans + theorem linear_isometry_equiv.refl_mul + theorem linear_isometry_equiv.trans_one 2022-02-14 12:13:11 d33792e feat(data/nat/factorization): add lemma `factorization_gcd` (#11605) For positive `a` and `b`, `(gcd a b).factorization = a.factorization ⊓ b.factorization`; i.e. the power of prime `p` in `gcd a b` is the minimum of its powers in `a` and `b`. This is Theorem 1.12 in Apostol (1976) Introduction to Analytic Number Theory. ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.factorization_gcd 2022-02-14 10:22:27 132ea05 docs(computability/partrec_code): add docs (#11929) ESTIMATED CHANGES Modified src/computability/partrec_code.lean 2022-02-14 10:22:26 dce5dd4 feat(order/well_founded, set_theory/ordinal_arithmetic): `eq_strict_mono_iff_eq_range` (#11882) Two strict monotonic functions with well-founded domains are equal iff their ranges are. We use this to golf `eq_enum_ord`. ESTIMATED CHANGES Modified src/order/well_founded.lean + theorem well_founded.eq_strict_mono_iff_eq_range Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.eq_enum_ord 2022-02-14 08:41:45 a87d431 feat(topology/algebra): add `@[to_additive]` to some lemmas (#12018) * rename `embed_product` to `units.embed_product`, add `add_units.embed_product`; * add additive versions to lemmas about topology on `units M`; * add `add_opposite.topological_space` and `add_opposite.has_continuous_add`; * move `continuous_op` and `continuous_unop` to the `mul_opposite` namespace, add additive versions. ESTIMATED CHANGES Modified src/algebra/group/prod.lean - def embed_product + def units.embed_product Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean - theorem continuous_op - theorem continuous_unop + theorem mul_opposite.continuous_op + theorem mul_opposite.continuous_unop +/- theorem units.continuous_coe +/- theorem units.continuous_embed_product Modified src/topology/algebra/mul_action.lean 2022-02-14 08:04:35 2ceacc1 feat(measure_theory/measure): more lemmas about `null_measurable_set`s (#12019) ESTIMATED CHANGES Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.null_measurable_set_smul Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.restrict_Union_ae + theorem measure_theory.measure.restrict_apply₀' + theorem measure_theory.measure.restrict_restrict₀' + theorem measure_theory.measure.restrict_restrict₀ 2022-02-14 07:20:08 25ebf41 chore(analysis): move some code (#12008) Move the code that doesn't rely on `normed_space` from `analysis.normed_space.add_torsor` to `analysis.normed.group.add_torsor`. ESTIMATED CHANGES Added src/analysis/normed/group/add_torsor.lean + theorem continuous.vsub + theorem continuous_at.vsub + theorem continuous_vsub + theorem continuous_within_at.vsub + theorem dist_eq_norm_vsub + theorem dist_vadd_cancel_left + theorem dist_vadd_cancel_right + theorem dist_vadd_left + theorem dist_vadd_right + theorem dist_vadd_vadd_le + theorem dist_vsub_cancel_left + theorem dist_vsub_cancel_right + theorem dist_vsub_vsub_le + theorem edist_vadd_vadd_le + theorem edist_vsub_vsub_le + theorem filter.tendsto.line_map + theorem filter.tendsto.midpoint + theorem filter.tendsto.vsub + def isometric.const_vadd + def isometric.const_vsub + def isometric.vadd_const + theorem lipschitz_with.vadd + theorem lipschitz_with.vsub + def metric_space_of_normed_group_of_add_torsor + theorem nndist_vadd_vadd_le + theorem nndist_vsub_vsub_le + def pseudo_metric_space_of_normed_group_of_add_torsor + theorem uniform_continuous_vadd + theorem uniform_continuous_vsub + theorem vadd_ball + theorem vadd_closed_ball + theorem vadd_sphere Modified src/analysis/normed_space/add_torsor.lean - theorem continuous.vsub - theorem continuous_at.vsub - theorem continuous_vsub - theorem continuous_within_at.vsub - theorem dist_eq_norm_vsub - theorem dist_vadd_cancel_left - theorem dist_vadd_cancel_right - theorem dist_vadd_left - theorem dist_vadd_right - theorem dist_vadd_vadd_le - theorem dist_vsub_cancel_left - theorem dist_vsub_cancel_right - theorem dist_vsub_vsub_le - theorem edist_vadd_vadd_le - theorem edist_vsub_vsub_le - theorem filter.tendsto.line_map - theorem filter.tendsto.midpoint - theorem filter.tendsto.vsub - def isometric.const_vadd - def isometric.const_vsub - def isometric.vadd_const - theorem lipschitz_with.vadd - theorem lipschitz_with.vsub - def metric_space_of_normed_group_of_add_torsor - theorem nndist_vadd_vadd_le - theorem nndist_vsub_vsub_le - def pseudo_metric_space_of_normed_group_of_add_torsor - theorem uniform_continuous_vadd - theorem uniform_continuous_vsub - theorem vadd_ball - theorem vadd_closed_ball - theorem vadd_sphere 2022-02-14 06:18:50 26fd61c feat(analysis/complex/isometry): `rotation_trans` (#12015) Add a `simp` lemma about the composition of two rotations. ESTIMATED CHANGES Modified src/analysis/complex/isometry.lean + theorem rotation_trans 2022-02-14 06:18:49 77dfac2 feat(order/filter/bases): basis of infimum of filters (#11855) ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis_infi Modified src/order/filter/pi.lean + theorem filter.has_basis_pi 2022-02-14 04:42:39 6550cba feat(order/partition/finpartition): Finite partitions (#9795) This defines finite partitions along with quite a few constructions, ESTIMATED CHANGES Modified src/data/finset/lattice.lean +/- theorem finset.disjoint_sup_left +/- theorem finset.disjoint_sup_right +/- theorem finset.inf_sup_distrib_left +/- theorem finset.inf_sup_distrib_right +/- theorem finset.sup_inf_distrib_left +/- theorem finset.sup_inf_distrib_right Modified src/data/finset/prod.lean + theorem finset.mk_mem_product Modified src/data/set/pairwise.lean + theorem set.pairwise_disjoint.eq_of_le Modified src/data/setoid/partition.lean Added src/order/partition/finpartition.lean + def finpartition.atomise + theorem finpartition.atomise_empty + def finpartition.avoid + theorem finpartition.bUnion_filter_atomise + theorem finpartition.bUnion_parts + def finpartition.bind + theorem finpartition.card_atomise_le + theorem finpartition.card_bind + theorem finpartition.card_bot + theorem finpartition.card_extend + theorem finpartition.card_mono + theorem finpartition.card_parts_le_card + def finpartition.copy + theorem finpartition.default_eq_empty + theorem finpartition.exists_le_of_le + theorem finpartition.exists_mem + def finpartition.extend + def finpartition.indiscrete + theorem finpartition.mem_atomise + theorem finpartition.mem_bind + theorem finpartition.mem_bot_iff + theorem finpartition.ne_bot + theorem finpartition.nonempty_of_mem_parts + def finpartition.of_erase + def finpartition.of_subset + theorem finpartition.parts_bot + theorem finpartition.parts_eq_empty_iff + theorem finpartition.parts_inf + theorem finpartition.parts_nonempty + theorem finpartition.parts_nonempty_iff + theorem finpartition.sum_card_parts + structure finpartition + def is_atom.unique_finpartition Modified src/order/sup_indep.lean 2022-02-13 20:36:13 f91a32d feat(data/nat/factorization): add lemma `prod_prime_factors_dvd` (#11572) For all `n : ℕ`, the product of the set of prime factors of `n` divides `n`, i.e. `(∏ (p : ℕ) in n.factors.to_finset, p) ∣ n` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem multiset.to_finset_prod_dvd_prod Modified src/data/nat/factorization.lean + theorem nat.prod_prime_factors_dvd 2022-02-13 17:37:37 b08dc17 chore(number_theory/dioph): fix docs (#12011) ESTIMATED CHANGES Modified src/number_theory/dioph.lean 2022-02-12 22:55:33 af1355c chore(measure_theory/integral/lebesgue): use to_additive when declaring instances and basic lemmas about simple functions (#12000) I also grouped similar lemmas together and added one or two missing ones. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean - theorem measure_theory.simple_func.add_apply - theorem measure_theory.simple_func.add_eq_map₂ - theorem measure_theory.simple_func.coe_add + theorem measure_theory.simple_func.coe_div + theorem measure_theory.simple_func.coe_inv +/- theorem measure_theory.simple_func.coe_mul - theorem measure_theory.simple_func.coe_neg + theorem measure_theory.simple_func.coe_one - theorem measure_theory.simple_func.coe_sub - theorem measure_theory.simple_func.coe_zero + theorem measure_theory.simple_func.const_one - theorem measure_theory.simple_func.const_zero + theorem measure_theory.simple_func.div_apply + theorem measure_theory.simple_func.inf_apply + theorem measure_theory.simple_func.inv_apply - theorem measure_theory.simple_func.map_add + theorem measure_theory.simple_func.map_mul +/- theorem measure_theory.simple_func.mul_apply +/- theorem measure_theory.simple_func.mul_eq_map₂ + theorem measure_theory.simple_func.range_one - theorem measure_theory.simple_func.range_zero - theorem measure_theory.simple_func.sub_apply +/- theorem measure_theory.simple_func.sup_eq_map₂ 2022-02-12 21:57:51 4b217ea chore(topology/algebra): rename file to match renamed lemmas (#11996) #11940 renamed the lemmas from `continuous_smul₂` to `continuous_const_smul`, so this renames the file from `mul_action2` to `const_mul_action` accordingly. ESTIMATED CHANGES Renamed src/topology/algebra/mul_action2.lean to src/topology/algebra/const_mul_action.lean Modified src/topology/algebra/mul_action.lean 2022-02-12 19:33:32 4a4a3a9 chore(data/finset/basic): Golf and compress (#11987) * Move the `lattice` instance earlier so that it can be used to prove lemmas * Golf proofs * Compress statements within the style guidelines ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem equiv.finset_congr_refl +/- theorem equiv.finset_congr_symm +/- theorem finset.bUnion_congr +/- theorem finset.bUnion_mono +/- theorem finset.bUnion_singleton_eq_self +/- theorem finset.bUnion_subset_bUnion_of_subset_left +/- theorem finset.coe_eq_empty +/- theorem finset.coe_to_list +/- def finset.cons +/- theorem finset.cons_subset_cons +/- theorem finset.cons_val +/- theorem finset.disj_union_eq_union +/- theorem finset.disjoint_bUnion_left +/- theorem finset.disjoint_bUnion_right +/- theorem finset.disjoint_filter +/- theorem finset.disjoint_filter_filter +/- theorem finset.disjoint_iff_disjoint_coe +/- theorem finset.disjoint_iff_inter_eq_empty +/- theorem finset.disjoint_iff_ne +/- theorem finset.disjoint_insert_left +/- theorem finset.disjoint_insert_right +/- theorem finset.disjoint_left +/- theorem finset.disjoint_of_subset_left +/- theorem finset.disjoint_of_subset_right +/- theorem finset.disjoint_right +/- theorem finset.disjoint_sdiff +/- theorem finset.disjoint_self_iff_empty +/- theorem finset.disjoint_singleton +/- theorem finset.disjoint_singleton_left +/- theorem finset.disjoint_singleton_right +/- theorem finset.disjoint_union_left +/- theorem finset.disjoint_union_right +/- theorem finset.disjoint_val +/- theorem finset.empty_inter +/- theorem finset.empty_sdiff +/- theorem finset.eq_empty_of_forall_not_mem +/- theorem finset.eq_of_mem_of_not_mem_erase +/- theorem finset.eq_of_mem_singleton +/- theorem finset.erase_inj +/- theorem finset.erase_inj_on +/- theorem finset.exists_mem_insert +/- theorem finset.filter_eq +/- theorem finset.filter_ne' +/- theorem finset.filter_ne +/- theorem finset.forall_mem_insert +/- theorem finset.forall_mem_union +/- theorem finset.image_id +/- theorem finset.image_inter +/- theorem finset.image_subset_iff +/- theorem finset.inf_eq_inter +/- theorem finset.insert_eq_of_mem +/- theorem finset.insert_sdiff_of_mem +/- theorem finset.insert_subset +/- theorem finset.insert_union_distrib +/- theorem finset.inter_empty +/- theorem finset.inter_eq_left_iff_subset +/- theorem finset.inter_eq_right_iff_subset +/- theorem finset.inter_sdiff +/- theorem finset.inter_self +/- theorem finset.inter_subset_inter_left +/- theorem finset.inter_subset_inter_right +/- theorem finset.inter_val +/- theorem finset.left_eq_union_iff_subset +/- theorem finset.map_insert +/- theorem finset.map_subtype_subset +/- theorem finset.mem_bUnion +/- theorem finset.mem_cons +/- theorem finset.mem_cons_self +/- theorem finset.mem_erase_of_ne_of_mem +/- theorem finset.mem_image_const +/- theorem finset.mem_image_const_self +/- theorem finset.mem_insert +/- theorem finset.mem_insert_of_mem +/- theorem finset.mem_map' +/- theorem finset.mem_map_equiv +/- theorem finset.mem_map_of_mem +/- theorem finset.mem_of_mem_erase +/- theorem finset.mem_of_mem_insert_of_ne +/- theorem finset.mem_range_le +/- theorem finset.mem_union +/- theorem finset.mem_union_left +/- theorem finset.mem_union_right +/- theorem finset.mk_cons +/- theorem finset.monotone_filter_left +/- theorem finset.ne_insert_of_not_mem +/- theorem finset.ne_of_mem_erase +/- theorem finset.nonempty.bUnion - theorem finset.nonempty.image +/- theorem finset.nonempty.image_iff +/- theorem finset.nonempty_cons +/- theorem finset.not_disjoint_iff +/- theorem finset.not_mem_union +/- def finset.piecewise +/- theorem finset.piecewise_coe +/- theorem finset.piecewise_empty +/- theorem finset.piecewise_eq_of_mem +/- theorem finset.piecewise_insert +/- theorem finset.piecewise_insert_of_ne +/- theorem finset.piecewise_insert_self +/- theorem finset.range_add_one +/- theorem finset.right_eq_union_iff_subset +/- theorem finset.sdiff_disjoint +/- theorem finset.sdiff_empty +/- theorem finset.sdiff_eq_self +/- theorem finset.sdiff_eq_self_iff_disjoint +/- theorem finset.sdiff_eq_self_of_disjoint +/- theorem finset.sdiff_erase +/- theorem finset.sdiff_idem +/- theorem finset.sdiff_insert_of_not_mem +/- theorem finset.sdiff_inter_distrib_right +/- theorem finset.sdiff_inter_self +/- theorem finset.sdiff_inter_self_left +/- theorem finset.sdiff_inter_self_right +/- theorem finset.sdiff_sdiff_self_left +/- theorem finset.sdiff_self +/- theorem finset.sdiff_ssubset +/- theorem finset.sdiff_subset +/- theorem finset.sdiff_subset_sdiff +/- theorem finset.sdiff_union_distrib +/- theorem finset.sdiff_union_inter +/- theorem finset.singleton_subset_iff +/- theorem finset.singleton_subset_set_iff +/- theorem finset.ssubset_iff +/- theorem finset.ssubset_insert +/- theorem finset.subset_bUnion_of_mem +/- theorem finset.subset_image_iff +/- theorem finset.subset_insert +/- theorem finset.subset_inter +/- theorem finset.subset_inter_iff + theorem finset.subset_singleton_iff' +/- theorem finset.sup_eq_union +/- theorem finset.to_list_empty +/- theorem finset.union_assoc +/- theorem finset.union_comm +/- theorem finset.union_eq_left_iff_subset +/- theorem finset.union_eq_right_iff_subset +/- theorem finset.union_idempotent +/- theorem finset.union_left_comm +/- theorem finset.union_right_comm +/- theorem finset.union_sdiff_distrib +/- theorem finset.union_sdiff_of_subset +/- theorem finset.union_sdiff_self +/- theorem finset.union_subset +/- theorem finset.union_subset_iff +/- theorem finset.union_subset_left +/- theorem finset.union_subset_right +/- theorem finset.union_subset_union +/- theorem finset.union_val +/- theorem finset.union_val_nd +/- theorem finset.val_le_iff_val_subset +/- theorem function.injective.mem_finset_image +/- theorem list.disjoint_to_finset_iff_disjoint +/- theorem list.mem_to_finset +/- theorem list.perm_of_nodup_nodup_to_finset_eq +/- theorem list.to_finset.ext +/- theorem list.to_finset_append +/- theorem list.to_finset_cons +/- theorem list.to_finset_eq +/- theorem list.to_finset_eq_empty_iff +/- theorem list.to_finset_eq_iff_perm_erase_dup +/- theorem list.to_finset_eq_of_perm +/- theorem list.to_finset_nil +/- theorem list.to_finset_repeat_of_ne_zero +/- theorem list.to_finset_reverse +/- theorem multiset.mem_to_finset +/- theorem multiset.to_finset_add +/- theorem multiset.to_finset_inter +/- theorem multiset.to_finset_singleton +/- theorem multiset.to_finset_subset +/- theorem multiset.to_finset_union +/- theorem multiset.to_finset_zero 2022-02-12 18:45:31 5f70cd9 chore(measure_theory/function/ae_eq_fun): replace topological assumptions by measurability assumptions (#11981) Since the introduction of the `has_measurable_*` typeclasses, the topological assumptions in that file are only used to derive the measurability assumptions. This PR removes that step. ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_fun.lean 2022-02-12 17:23:47 b72300f feat(group_theory/sylow): all max groups normal imply sylow normal (#11841) ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.normal_of_all_max_subgroups_normal 2022-02-12 16:17:52 06e7f76 feat(analysis/analytic/basic): add uniqueness results for power series (#11896) This establishes that if a function has two power series representations on balls of positive radius, then the corresponding formal multilinear series are equal; this is only for the one-dimensional case (i.e., for functions from the scalar field). Consequently, one may exchange the radius of convergence between these power series. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem asymptotics.is_O.continuous_multilinear_map_apply_eq_zero + theorem has_fpower_series_at.apply_eq_zero + theorem has_fpower_series_at.eq_formal_multilinear_series + theorem has_fpower_series_at.eq_zero + theorem has_fpower_series_on_ball.exchange_radius 2022-02-12 09:20:49 91cc4ae feat(order/category/BoundedOrder): The category of bounded orders (#11961) Define `BoundedOrder`, the category of bounded orders with bounded order homs along with its forgetful functors to `PartialOrder` and `Bipointed`. ESTIMATED CHANGES Added src/order/category/BoundedOrder.lean + def BoundedOrder.dual + def BoundedOrder.dual_equiv + def BoundedOrder.iso.mk + def BoundedOrder.of + structure BoundedOrder + theorem BoundedOrder_dual_comp_forget_to_Bipointed + theorem BoundedOrder_dual_comp_forget_to_PartialOrder Modified src/order/category/PartialOrder.lean - theorem PartialOrder_dual_equiv_comp_forget_to_Preorder + theorem PartialOrder_to_dual_comp_forget_to_Preorder Modified src/order/hom/bounded.lean 2022-02-12 08:07:28 1b5f8c2 chore(topology/algebra/ordered/*): Rename folder (#11988) Rename `topology.algebra.ordered` to `topology.algebra.order` to match `order`, `algebra.order`, `topology.order`. ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/convex/strict.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed_space/lp_space.lean Modified src/analysis/special_functions/trigonometric/inverse.lean Modified src/data/real/sqrt.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/infinite_sum.lean Renamed src/topology/algebra/ordered/basic.lean to src/topology/algebra/order/basic.lean Renamed src/topology/algebra/ordered/compact.lean to src/topology/algebra/order/compact.lean Renamed src/topology/algebra/ordered/extend_from.lean to src/topology/algebra/order/extend_from.lean Renamed src/topology/algebra/ordered/intermediate_value.lean to src/topology/algebra/order/intermediate_value.lean Renamed src/topology/algebra/ordered/left_right.lean to src/topology/algebra/order/left_right.lean Renamed src/topology/algebra/ordered/liminf_limsup.lean to src/topology/algebra/order/liminf_limsup.lean Renamed src/topology/algebra/ordered/monotone_continuity.lean to src/topology/algebra/order/monotone_continuity.lean Renamed src/topology/algebra/ordered/monotone_convergence.lean to src/topology/algebra/order/monotone_convergence.lean Renamed src/topology/algebra/ordered/proj_Icc.lean to src/topology/algebra/order/proj_Icc.lean Modified src/topology/algebra/with_zero_topology.lean Modified src/topology/continuous_function/ordered.lean Modified src/topology/fiber_bundle.lean Modified src/topology/homotopy/basic.lean Modified src/topology/instances/ereal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/order/lattice.lean Modified src/topology/path_connected.lean Modified src/topology/tietze_extension.lean 2022-02-12 08:07:27 7bebee6 chore(category_theory/monad/equiv_mon): Removing some slow uses of `obviously` (#11980) Providing explicit proofs for various fields rather than leaving them for `obviously` (and hence `tidy`) to fill in. Follow-up to this suggestion by Kevin Buzzard in [this Zulip comment](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60tidy.60.20in.20mathlib.20proofs/near/271474418). (These are temporary changes until `obviously` can be tweaked to do this more quickly) ESTIMATED CHANGES Modified src/category_theory/monad/equiv_mon.lean 2022-02-12 08:07:25 71e9006 chore(topology/algebra/module/multilinear): relax typeclass arguments (#11972) Previously `module R' (continuous_multilinear_map A M₁ M₂)` required `algebra R' A`, but now it only requires `smul_comm_class A R' M₂`. The old instance required (modulo argument reordering): ```lean def continuous_multilinear_map.module {ι : Type v} {M₁ : ι → Type w₁} {M₂ : Type w₂} [decidable_eq ι] [Π i, add_comm_monoid (M₁ i)] [add_comm_monoid M₂] [Π i, topological_space (M₁ i)] [topological_space M₂] [has_continuous_add M₂] {R' : Type u_1} {A : Type u_2} [comm_semiring R'] [semiring A] [topological_space R'] [Π i, module A (M₁ i)] [module A M₂] [module R' M₂] [has_continuous_smul R' M₂] [algebra R' A] [is_scalar_tower R' A M₂] : module R' (continuous_multilinear_map A M₁ M₂) ``` while the new one requires ```lean def continuous_multilinear_map.module {ι : Type v} {M₁ : ι → Type w₁} {M₂ : Type w₂} [decidable_eq ι] [Π i, add_comm_monoid (M₁ i)] [add_comm_monoid M₂] [Π i, topological_space (M₁ i)] [topological_space M₂] [has_continuous_add M₂] {R' : Type u_1} {A : Type u_2} [semiring R'] [semiring A] [topological_space R'] -- note: `R'` not commutative any more [Π i, module A (M₁ i)] [module A M₂] [module R' M₂] [has_continuous_smul R' M₂] [smul_comm_class A R' M₂] : -- note: `R'` needs no action at all on `A` module R' (continuous_multilinear_map A M₁ M₂) ``` This change also adds intermediate `mul_action` and `distrib_mul_action` instances which apply in weaker situations. As a result of this weakening, the typeclass arguments to `continuous_multilinear_map.to_normed_space` can also be weakened, and a weird instance workaround can be removed. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/multilinear.lean Modified src/topology/algebra/module/multilinear.lean + theorem continuous_multilinear_map.to_multilinear_map_zero 2022-02-12 08:07:23 822244f refactor(measure_theory/group/basic): rename and split (#11952) * Rename `measure_theory/group/basic` -> `measure_theory/group/measure`. It was not the bottom file in this folder in the import hierarchy (arithmetic is below it). * Split off some results to `measure_theory/group/integration`. This reduces imports in some files, and makes the organization more clear. Furthermore, I will add some integrability results and more integrals in a follow-up PR. * Prove a general instance `pi.is_mul_left_invariant` * Remove lemmas specifically about `volume` on `real` in favor on the general lemmas. ```lean real.map_volume_add_left -> map_add_left_eq_self real.map_volume_pi_add_left -> map_add_left_eq_self real.volume_preimage_add_left -> measure_preimage_add real.volume_pi_preimage_add_left -> measure_preimage_add real.map_volume_add_right -> map_add_right_eq_self real.volume_preimage_add_right -> measure_preimage_add_right ``` ESTIMATED CHANGES Modified src/analysis/box_integral/integrability.lean Modified src/analysis/fourier.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/group/arithmetic.lean Added src/measure_theory/group/integration.lean + theorem measure_theory.integral_mul_left_eq_self + theorem measure_theory.integral_mul_right_eq_self + theorem measure_theory.integral_zero_of_mul_left_eq_neg + theorem measure_theory.integral_zero_of_mul_right_eq_neg + theorem measure_theory.lintegral_eq_zero_of_is_mul_left_invariant + theorem measure_theory.lintegral_mul_left_eq_self + theorem measure_theory.lintegral_mul_right_eq_self Renamed src/measure_theory/group/basic.lean to src/measure_theory/group/measure.lean - theorem measure_theory.lintegral_eq_zero_of_is_mul_left_invariant - theorem measure_theory.lintegral_mul_left_eq_self - theorem measure_theory.lintegral_mul_right_eq_self Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/bochner.lean - theorem measure_theory.integral_mul_left_eq_self - theorem measure_theory.integral_mul_right_eq_self - theorem measure_theory.integral_zero_of_mul_left_eq_neg - theorem measure_theory.integral_zero_of_mul_right_eq_neg Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/periodic.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/lebesgue.lean - theorem real.map_volume_add_left - theorem real.map_volume_add_right - theorem real.map_volume_pi_add_left - theorem real.volume_pi_preimage_add_left - theorem real.volume_preimage_add_left - theorem real.volume_preimage_add_right Modified src/number_theory/liouville/measure.lean 2022-02-12 07:11:55 60d3233 feat(topology/instances/real): metric space structure on nat (#11963) Mostly copied from the already existing int version. ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem nat.preimage_Icc + theorem nat.preimage_Ici + theorem nat.preimage_Ico + theorem nat.preimage_Iic + theorem nat.preimage_Iio + theorem nat.preimage_Ioc + theorem nat.preimage_Ioi + theorem nat.preimage_Ioo Modified src/topology/instances/real.lean + theorem nat.closed_ball_eq_Icc + theorem nat.closed_embedding_coe_rat + theorem nat.closed_embedding_coe_real + theorem nat.dist_cast_rat + theorem nat.dist_cast_real + theorem nat.dist_coe_int + theorem nat.dist_eq + theorem nat.pairwise_one_le_dist + theorem nat.preimage_ball + theorem nat.preimage_closed_ball + theorem nat.uniform_embedding_coe_rat + theorem nat.uniform_embedding_coe_real 2022-02-12 02:46:24 dff8393 feat(tactic/lint): add unprintable tactic linter (#11725) This linter will banish the recurring issue of tactics for which `param_desc` fails, leaving a nasty error message in hovers. ESTIMATED CHANGES Modified src/ring_theory/witt_vector/init_tail.lean Modified src/tactic/interactive.lean Modified src/tactic/itauto.lean Modified src/tactic/linear_combination.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/misc.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/push_neg.lean Modified src/tactic/squeeze.lean 2022-02-12 00:03:02 227293b feat(category_theory/category/Twop): The category of two-pointed types (#11844) Define `Twop`, the category of two-pointed types. Also add `Pointed_to_Bipointed` and remove the erroneous TODOs. ESTIMATED CHANGES Modified src/category_theory/category/Bipointed.lean + def Pointed_to_Bipointed + def Pointed_to_Bipointed_comp_Bipointed_to_Pointed_fst + def Pointed_to_Bipointed_comp_Bipointed_to_Pointed_snd - theorem Pointed_to_Bipointed_fst_comp + theorem Pointed_to_Bipointed_fst_comp_swap - theorem Pointed_to_Bipointed_snd_comp + theorem Pointed_to_Bipointed_snd_comp_swap Modified src/category_theory/category/Pointed.lean Added src/category_theory/category/Twop.lean + def Pointed_to_Twop_fst + theorem Pointed_to_Twop_fst_comp_forget_to_Bipointed + theorem Pointed_to_Twop_fst_comp_swap + def Pointed_to_Twop_fst_forget_comp_Bipointed_to_Pointed_fst_adjunction + def Pointed_to_Twop_snd + theorem Pointed_to_Twop_snd_comp_forget_to_Bipointed + theorem Pointed_to_Twop_snd_comp_swap + def Pointed_to_Twop_snd_forget_comp_Bipointed_to_Pointed_snd_adjunction + def Twop.of + def Twop.swap + def Twop.swap_equiv + theorem Twop.swap_equiv_symm + def Twop.to_Bipointed + structure Twop + theorem Twop_swap_comp_forget_to_Bipointed 2022-02-11 21:25:20 788240c chore(order/cover): Rename `covers` to `covby` (#11984) This matches the way it is written. `a ⋖ b` means that `b` covers `a`, that is `a` is covered by `b`. ESTIMATED CHANGES Modified src/order/atoms.lean + theorem bot_covby_iff + theorem bot_covby_top - theorem bot_covers_iff - theorem bot_covers_top + theorem covby_top_iff - theorem covers_top_iff Modified src/order/cover.lean + theorem apply_covby_apply_iff - theorem apply_covers_apply_iff + theorem covby.Icc_eq + theorem covby.Ico_eq + theorem covby.Ioc_eq + theorem covby.Ioo_eq + theorem covby.image + theorem covby.le + theorem covby.lt + theorem covby.ne' + theorem covby.of_image + def covby - theorem covers.Icc_eq - theorem covers.Ico_eq - theorem covers.Ioc_eq - theorem covers.Ioo_eq - theorem covers.image - theorem covers.le - theorem covers.lt - theorem covers.ne' - theorem covers.of_image - def covers + theorem densely_ordered_iff_forall_not_covby - theorem densely_ordered_iff_forall_not_covers + theorem not_covby + theorem not_covby_iff - theorem not_covers - theorem not_covers_iff + theorem of_dual_covby_of_dual_iff - theorem of_dual_covers_of_dual_iff + theorem to_dual_covby_to_dual_iff - theorem to_dual_covers_to_dual_iff Modified src/order/succ_pred/basic.lean + theorem covby.pred_eq + theorem covby.succ_eq + theorem covby_iff_pred_eq + theorem covby_iff_succ_eq - theorem covers.pred_eq - theorem covers.succ_eq - theorem covers_iff_pred_eq - theorem covers_iff_succ_eq + theorem pred_order.pred_covby + theorem pred_order.pred_covby_of_nonempty_Iio - theorem pred_order.pred_covers - theorem pred_order.pred_covers_of_nonempty_Iio +/- theorem pred_succ + theorem succ_order.covby_succ + theorem succ_order.covby_succ_of_nonempty_Ioi - theorem succ_order.covers_succ - theorem succ_order.covers_succ_of_nonempty_Ioi +/- theorem succ_pred 2022-02-11 19:49:06 3fcb738 doc(data/finset/basic): correct some function names (#11983) ESTIMATED CHANGES Modified src/data/finset/basic.lean 2022-02-11 19:49:04 515ce79 refactor(data/nat/factorization): Use factorization instead of factors.count (#11384) Refactor to use `factorization` over `factors.count`, and adjust lemmas to be stated in terms of the former instead. ESTIMATED CHANGES Modified src/algebra/is_prime_pow.lean Modified src/data/nat/factorization.lean - theorem nat.div_factorization_eq_tsub_of_dvd + theorem nat.dvd_of_mem_factorization + theorem nat.eq_of_factorization_eq + theorem nat.factorization_div - theorem nat.factorization_eq_count + theorem nat.factorization_eq_of_coprime_left + theorem nat.factorization_eq_of_coprime_right + theorem nat.factorization_le_factorization_mul_left + theorem nat.factorization_le_factorization_mul_right + theorem nat.factorization_mul_apply_of_coprime +/- theorem nat.factorization_pow +/- theorem nat.factorization_zero + theorem nat.factors_count_eq +/- theorem nat.pow_factorization_dvd + theorem nat.pow_succ_factorization_not_dvd + theorem nat.prime.factorization_pos_of_dvd +/- theorem nat.prime.factorization_pow + def nat.rec_on_mul + def nat.rec_on_pos_prime_coprime + def nat.rec_on_prime_coprime + def nat.rec_on_prime_pow +/- theorem nat.support_factorization Deleted src/data/nat/mul_ind.lean - def nat.rec_on_mul - def nat.rec_on_pos_prime_coprime - def nat.rec_on_prime_coprime - def nat.rec_on_prime_pow Modified src/data/nat/prime.lean - theorem nat.count_factors_mul_of_coprime - theorem nat.count_factors_mul_of_pos - theorem nat.eq_of_count_factors_eq +/- theorem nat.eq_of_perm_factors - theorem nat.factors_count_eq_of_coprime_left - theorem nat.factors_count_eq_of_coprime_right - theorem nat.factors_count_pow - theorem nat.le_factors_count_mul_left - theorem nat.le_factors_count_mul_right +/- theorem nat.mem_factors_iff_dvd +/- theorem nat.mem_factors_mul_left +/- theorem nat.mem_factors_mul_of_coprime +/- theorem nat.mem_factors_mul_right + theorem nat.perm_factors_mul - theorem nat.perm_factors_mul_of_pos - theorem nat.pow_factors_count_dvd +/- theorem nat.prod_factors Modified src/data/pnat/factors.lean Modified src/group_theory/exponent.lean + theorem nat.prime.exists_order_of_eq_pow_factorization_exponent - theorem nat.prime.exists_order_of_eq_pow_padic_val_nat_exponent Modified src/group_theory/p_group.lean Modified src/group_theory/sylow.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/padics/padic_norm.lean + theorem padic_val_nat_eq_factorization - theorem padic_val_nat_eq_factors_count Modified src/ring_theory/int/basic.lean 2022-02-11 18:25:43 da76d21 feat(measure_theory/measure/haar_quotient): Pushforward of Haar measure is Haar (#11593) For `G` a topological group with discrete subgroup `Γ`, the pushforward to the coset space `G ⧸ Γ` of the restriction of a both left- and right-invariant measure on `G` to a fundamental domain `𝓕` is a `G`-invariant measure on `G ⧸ Γ`. When `Γ` is normal (and under other certain suitable conditions), we show that this measure is the Haar measure on the quotient group `G ⧸ Γ`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + def subgroup.opposite + def subgroup.opposite_equiv + theorem subgroup.smul_opposite_image_mul_preimage + theorem subgroup.smul_opposite_mul Modified src/measure_theory/group/arithmetic.lean + theorem measurable_mul_op + theorem measurable_mul_unop - theorem measurable_op - theorem measurable_unop Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.measure_set_eq Added src/measure_theory/measure/haar_quotient.lean + theorem measure_theory.is_fundamental_domain.is_mul_left_invariant_map + theorem measure_theory.is_fundamental_domain.map_restrict_quotient + theorem measure_theory.is_fundamental_domain.smul + theorem measure_theory.is_fundamental_domain.smul_invariant_measure_map + theorem subgroup.smul_invariant_measure 2022-02-11 15:45:40 edefc11 feat(number_theory/number_field/basic) : the ring of integers of a number field is not a field (#11956) ESTIMATED CHANGES Modified src/data/int/char_zero.lean + theorem ring_hom.injective_int Modified src/number_theory/number_field.lean + theorem int.not_is_field + theorem number_field.ring_of_integers.not_is_field 2022-02-11 13:10:47 1b78b4d feat(measure_theory/function/ae_eq_of_integral): remove a few unnecessary `@` (#11974) Those `@` were necessary at the time, but `measurable_set.inter` changed and they can now be removed. ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_of_integral.lean 2022-02-11 13:10:46 114752c fix(algebra/monoid_algebra/basic): remove an instance that forms a diamond (#11918) This turns `monoid_algebra.comap_distrib_mul_action_self` from an instance to a def. This also adds some tests to prove that this diamond exists. Note that this diamond is not just non-defeq, it's also just plain not equal. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Schur's.20lemma/near/270990004) ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + def monoid_algebra.comap_distrib_mul_action_self Modified src/data/finsupp/basic.lean Modified test/instance_diamonds.lean 2022-02-11 11:23:57 492393b feat(model_theory/direct_limit): Direct limits of first-order structures (#11789) Constructs the direct limit of a directed system of first-order embeddings ESTIMATED CHANGES Modified src/data/fintype/order.lean + theorem directed.fintype_le + theorem fintype.bdd_above_range + theorem fintype.exists_le Modified src/data/quot.lean + theorem quotient.lift_comp_mk Added src/model_theory/direct_limit.lean + theorem first_order.language.direct_limit.comp_unify + theorem first_order.language.direct_limit.equiv_iff + theorem first_order.language.direct_limit.exists_of + theorem first_order.language.direct_limit.exists_quotient_mk_sigma_mk_eq + theorem first_order.language.direct_limit.exists_unify_eq + theorem first_order.language.direct_limit.fun_map_equiv_unify + theorem first_order.language.direct_limit.fun_map_quotient_mk_sigma_mk + theorem first_order.language.direct_limit.fun_map_unify_equiv + theorem first_order.language.direct_limit.lift_of + theorem first_order.language.direct_limit.lift_quotient_mk_sigma_mk + theorem first_order.language.direct_limit.lift_unique + theorem first_order.language.direct_limit.of_apply + theorem first_order.language.direct_limit.of_f + theorem first_order.language.direct_limit.rel_map_equiv_unify + theorem first_order.language.direct_limit.rel_map_quotient_mk_sigma_mk + theorem first_order.language.direct_limit.rel_map_unify_equiv + def first_order.language.direct_limit.setoid + def first_order.language.direct_limit.unify + theorem first_order.language.direct_limit.unify_sigma_mk_self + def first_order.language.direct_limit + theorem first_order.language.directed_system.map_map + theorem first_order.language.directed_system.map_self Modified src/model_theory/quotients.lean + theorem first_order.language.rel_map_quotient_mk 2022-02-11 07:37:33 024aef0 feat(data/pi): provide `pi.mul_single` (#11849) the additive version was previously called `pi.single`, to this requires refactoring existing code. ESTIMATED CHANGES Modified src/algebra/group/pi.lean - def add_monoid_hom.single + def monoid_hom.single + def one_hom.single + theorem pi.mul_single_inv + theorem pi.mul_single_mul - theorem pi.single_add + theorem pi.single_div - theorem pi.single_neg - theorem pi.single_sub + theorem pi.update_eq_div_mul_single - theorem pi.update_eq_sub_add_single - def zero_hom.single Modified src/algebra/group/to_additive.lean Modified src/data/pi.lean + theorem pi.apply_mul_single + theorem pi.apply_mul_single₂ - theorem pi.apply_single - theorem pi.apply_single₂ + def pi.mul_single + theorem pi.mul_single_apply + theorem pi.mul_single_comm + theorem pi.mul_single_eq_of_ne' + theorem pi.mul_single_eq_of_ne + theorem pi.mul_single_eq_same + theorem pi.mul_single_inj + theorem pi.mul_single_injective + theorem pi.mul_single_one + theorem pi.mul_single_op + theorem pi.mul_single_op₂ - def pi.single - theorem pi.single_apply - theorem pi.single_comm - theorem pi.single_eq_of_ne' - theorem pi.single_eq_of_ne - theorem pi.single_eq_same - theorem pi.single_inj - theorem pi.single_injective - theorem pi.single_op - theorem pi.single_op₂ - theorem pi.single_zero + theorem subsingleton.pi_mul_single_eq - theorem subsingleton.pi_single_eq 2022-02-11 03:15:15 8c60a92 fix(ring_theory/algebraic): prove a diamond exists and remove the instances (#11935) It seems nothing used these instances anyway. ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean + def polynomial.has_scalar_pi Modified test/instance_diamonds.lean 2022-02-11 01:36:55 fbfdff7 chore(data/real/ennreal, topology/instances/ennreal): change name of the order isomorphism for `inv` (#11959) On [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/naming.20defs/near/271228611) it was decided that the name should be changed from `ennreal.inv_order_iso` to `order_iso.inv_ennreal` in order to better accord with the rest of the library. ESTIMATED CHANGES Modified src/data/real/ennreal.lean - def ennreal.inv_order_iso - theorem ennreal.inv_order_iso_symm_apply + def order_iso.inv_ennreal + theorem order_iso.inv_ennreal_symm_apply Modified src/topology/instances/ennreal.lean 2022-02-11 01:36:54 ae14f6a chore(algebra/star): generalize star_bit0, add star_inv_of (#11951) ESTIMATED CHANGES Modified src/algebra/star/basic.lean +/- theorem star_bit0 +/- theorem star_bit1 + theorem star_inv_of 2022-02-11 01:36:53 0227820 feat(topology/algebra/group): added (right/left)_coset_(open/closed) (#11876) Added lemmas saying that, in a topological group, cosets of an open (resp. closed) set are open (resp. closed). ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem is_closed.left_coset + theorem is_closed.right_coset + theorem is_open.left_coset + theorem is_open.right_coset 2022-02-11 01:36:52 7351358 refactor(order/well_founded, set_theory/ordinal_arithmetic): Fix namespace in `self_le_of_strict_mono` (#11871) This places `self_le_of_strict_mono` in the `well_founded` namespace. We also rename `is_normal.le_self` to `is_normal.self_le` . ESTIMATED CHANGES Modified src/order/well_founded.lean - theorem function.well_founded.self_le_of_strict_mono + theorem well_founded.self_le_of_strict_mono Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.is_normal.le_self + theorem ordinal.is_normal.self_le Modified src/set_theory/principal.lean 2022-02-10 23:42:58 4a5728f chore(number_theory/cyclotomic/zeta): generalize to primitive roots (#11941) This was done as `(zeta p ℤ ℤ[ζₚ] : ℚ(ζₚ)) = zeta p ℚ ℚ(ζₚ)` is independent of Lean's type theory. Allows far more flexibility with results. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/gal.lean - theorem is_cyclotomic_extension.aut_to_pow_injective + theorem is_cyclotomic_extension.from_zeta_aut_spec + theorem is_primitive_root.aut_to_pow_injective - theorem is_primitive_root.from_zeta_aut_spec Added src/number_theory/cyclotomic/primitive_roots.lean + theorem is_cyclotomic_extension.finrank + theorem is_cyclotomic_extension.zeta_pow + theorem is_cyclotomic_extension.zeta_primitive_root + theorem is_cyclotomic_extension.zeta_spec' + theorem is_cyclotomic_extension.zeta_spec + theorem is_primitive_root.norm_eq_one + theorem is_primitive_root.sub_one_norm_eq_eval_cyclotomic Deleted src/number_theory/cyclotomic/zeta.lean - theorem is_cyclotomic_extension.finrank - theorem is_cyclotomic_extension.norm_zeta_eq_one - theorem is_cyclotomic_extension.norm_zeta_sub_one_eq_eval_cyclotomic - def is_cyclotomic_extension.zeta.embeddings_equiv_primitive_roots - def is_cyclotomic_extension.zeta.power_basis - theorem is_cyclotomic_extension.zeta.power_basis_gen_minpoly - def is_cyclotomic_extension.zeta - theorem is_cyclotomic_extension.zeta_minpoly - theorem is_cyclotomic_extension.zeta_pow - theorem is_cyclotomic_extension.zeta_primitive_root - theorem is_cyclotomic_extension.zeta_spec' - theorem is_cyclotomic_extension.zeta_spec 2022-02-10 23:42:56 d487230 feat(algebra/big_operators): add prod_multiset_count_of_subset (#11919) Inspired by #4259. Co-Authored-By: Bhavik Mehta ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_multiset_count_of_subset 2022-02-10 20:44:00 fb41da9 feat(algebra/module/basic): turn implications into iffs (#11937) * Turn the following implications into `iff`, rename them accordingly, and make the type arguments explicit (`M` has to be explicit when using it in `rw`, otherwise one will have unsolved type-class arguments) ``` eq_zero_of_two_nsmul_eq_zero -> two_nsmul_eq_zero eq_zero_of_eq_neg -> self_eq_neg ne_neg_of_ne_zero -> self_ne_neg ``` * Also add two variants * Generalize `ne_neg_iff_ne_zero` to work in modules over a ring ESTIMATED CHANGES Modified src/algebra/module/basic.lean - theorem eq_zero_of_eq_neg - theorem eq_zero_of_two_nsmul_eq_zero - theorem ne_neg_of_ne_zero + theorem neg_eq_self + theorem neg_ne_self + theorem self_eq_neg + theorem self_ne_neg + theorem two_nsmul_eq_zero Modified src/analysis/normed_space/basic.lean Modified src/measure_theory/integral/bochner.lean 2022-02-10 20:43:58 0929387 feat(group_theory/group_action/defs): add ext attributes (#11936) This adds `ext` attributes to `has_scalar`, `mul_action`, `distrib_mul_action`, `mul_distrib_mul_action`, and `module`. The `ext` and `ext_iff` lemmas were eventually generated by `category_theory/preadditive/schur.lean` anyway - we may as well generate them much earlier. The generated lemmas are slightly uglier than the `module_ext` we already have, but it doesn't really seem worth the trouble of writing out the "nice" versions when the `ext` tactic cleans up the mess for us anyway. ESTIMATED CHANGES Modified src/algebra/group/defs.lean Modified src/algebra/module/basic.lean + theorem module.ext' - theorem module_ext Modified src/category_theory/preadditive/schur.lean Modified src/group_theory/group_action/defs.lean Modified src/number_theory/number_field.lean 2022-02-10 20:43:57 007d660 feat(analysis/inner_product_space/pi_L2): `map_isometry_euclidean_of_orthonormal` (#11907) Add a lemma giving the result of `isometry_euclidean_of_orthonormal` when applied to an orthonormal basis obtained from another orthonormal basis with `basis.map`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean + theorem basis.map_isometry_euclidean_of_orthonormal 2022-02-10 20:43:56 923923f feat(analysis/special_functions/complex/arg): `arg_mul`, `arg_div` lemmas (#11903) Add lemmas about `(arg (x * y) : real.angle)` and `(arg (x / y) : real.angle)`, along with preparatory lemmas that are like those such as `arg_mul_cos_add_sin_mul_I` but either don't require the real argument to be in `Ioc (-π) π` or that take a `real.angle` argument. I didn't add any lemmas about `arg (x * y)` or `arg (x / y)` as a real; if such lemmas prove useful in future, it might make sense to deduce them from the `real.angle` versions. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_cos_add_sin_mul_I_coe_angle + theorem complex.arg_cos_add_sin_mul_I_eq_mul_fract + theorem complex.arg_cos_add_sin_mul_I_sub + theorem complex.arg_div_coe_angle + theorem complex.arg_mul_coe_angle + theorem complex.arg_mul_cos_add_sin_mul_I_coe_angle + theorem complex.arg_mul_cos_add_sin_mul_I_eq_mul_fract + theorem complex.arg_mul_cos_add_sin_mul_I_sub 2022-02-10 20:43:55 1141703 feat(group_theory/group_action/sub_mul_action): orbit and stabilizer lemmas (#11899) Feat: add lemmas for stabilizer and orbit for sub_mul_action ESTIMATED CHANGES Modified src/group_theory/group_action/sub_mul_action.lean + theorem sub_mul_action.coe_image_orbit + theorem sub_mul_action.stabilizer_of_sub_mul.submonoid + theorem sub_mul_action.stabilizer_of_sub_mul 2022-02-10 18:46:21 de70722 chore(algebra/punit_instances): all actions on punit are central (#11953) ESTIMATED CHANGES Modified src/algebra/punit_instances.lean 2022-02-10 18:46:20 779d836 feat(category_theory): variants of Yoneda are fully faithful (#11950) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean + theorem Module.forget₂_map + theorem Module.forget₂_obj + theorem Module.forget₂_obj_Module_of Modified src/category_theory/linear/yoneda.lean Modified src/category_theory/preadditive/yoneda.lean Modified src/category_theory/whiskering.lean 2022-02-10 18:46:19 8012445 feat(group_theory/subgroup/basic): `subgroup.map_le_map_iff_of_injective` (#11947) If `f` is injective, then `H.map f ≤ K.map f ↔ H ≤ K`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.map_le_map_iff_of_injective 2022-02-10 18:46:18 c28dc84 feat(topology/subset_properties): more facts about compact sets (#11939) * add `tendsto.is_compact_insert_range_of_cocompact`, `tendsto.is_compact_insert_range_of_cofinite`, and `tendsto.is_compact_insert_range`; * reuse the former in `alexandroff.compact_space`; * rename `finite_of_is_compact_of_discrete` to `is_compact.finite_of_discrete`, add `is_compact_iff_finite`; * add `cocompact_le_cofinite`, `cocompact_eq_cofinite`; * add `int.cofinite_eq`, add `@[simp]` to `nat.cofinite_eq`; * add `set.insert_none_range_some`; * move `is_compact.image_of_continuous_on` and `is_compact_image` up; ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.insert_none_range_some Modified src/topology/alexandroff.lean Modified src/topology/instances/real.lean + theorem int.cofinite_eq Modified src/topology/locally_constant/basic.lean Modified src/topology/subset_properties.lean + theorem filter.cocompact_eq_cofinite + theorem filter.cocompact_le_cofinite + theorem filter.tendsto.is_compact_insert_range + theorem filter.tendsto.is_compact_insert_range_of_cocompact + theorem filter.tendsto.is_compact_insert_range_of_cofinite - theorem finite_of_is_compact_of_discrete + theorem is_compact.finite_of_discrete + theorem is_compact_iff_finite + theorem nat.cocompact_eq 2022-02-10 17:14:10 45ab382 chore(field_theory/galois): make `intermediate_field.fixing_subgroup_equiv` computable (#11938) This also golfs and generalizes some results to reuse infrastructure from elsewhere. In particular, this generalizes: * `intermediate_field.fixed_field` to `fixed_points.intermediate_field`, where the latter matches the API of `fixed_points.subfield` * `intermediate_field.fixing_subgroup` to `fixing_subgroup` and `fixing_submonoid` This removes `open_locale classical` in favor of ensuring the lemmas take in the necessary decidable / fintype arguments. ESTIMATED CHANGES Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean + def fixed_points.intermediate_field + def fixing_subgroup + def fixing_submonoid +/- theorem intermediate_field.finrank_fixed_field_eq_card +/- theorem is_galois.card_fixing_subgroup_eq_finrank Modified src/field_theory/krull_topology.lean 2022-02-10 13:11:46 a86277a feat(category_theory/limits): epi equalizer implies equal (#11873) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.eq_of_epi_equalizer + theorem category_theory.limits.eq_of_epi_fork_ι + theorem category_theory.limits.eq_of_mono_coequalizer + theorem category_theory.limits.eq_of_mono_cofork_π 2022-02-10 13:11:45 20ef909 feat(data/part): add instances (#11868) Add common instances for `part \alpha` to be inherited from `\alpha`. Spun off of #11046 ESTIMATED CHANGES Modified src/computability/halting.lean Modified src/data/part.lean 2022-02-10 13:11:42 3b9dc08 feat(analysis/complex): add the Cauchy-Goursat theorem for an annulus (#11864) ESTIMATED CHANGES Modified src/analysis/complex/cauchy_integral.lean + theorem complex.circle_integral_eq_of_differentiable_on_annulus_off_countable Modified src/measure_theory/integral/circle_integral.lean + theorem circle_integral.integral_sub_inv_smul_sub_smul + theorem set.countable.preimage_circle_map Modified src/measure_theory/measure/measure_space.lean + theorem set.countable.ae_not_mem 2022-02-10 13:11:41 efa3157 feat(order/conditionally_complete_lattice): `cInf_le` variant without redundant assumption (#11863) We prove `cInf_le'` on a `conditionally_complete_linear_order_bot`. We no longer need the boundedness assumption. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem cInf_le' + theorem le_cInf_iff'' 2022-02-10 13:11:40 66d9cc1 feat(number_theory/cyclotomic/gal): the Galois group of K(ζₙ) (#11808) from flt-regular! ESTIMATED CHANGES Added src/number_theory/cyclotomic/gal.lean + theorem is_cyclotomic_extension.aut_to_pow_injective + theorem is_primitive_root.from_zeta_aut_spec Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.aut_to_pow_spec 2022-02-10 13:11:39 1373d54 feat(group_theory/nilpotent): add nilpotent implies normalizer condition (#11586) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem normalizer_condition_of_is_nilpotent Modified src/group_theory/subgroup/basic.lean + theorem subgroup.map_top_of_surjective 2022-02-10 13:11:37 c3f6fce feat(algebra/group_power/basic): add lemmas about pow and neg on units (#11447) In future we might want to add a typeclass for monoids with a well-behaved negation operator to avoid needing to repeat these lemmas. Such a typeclass would also apply to the `unitary` submonoid too. ESTIMATED CHANGES Modified src/algebra/group/units_hom.lean + theorem units.coe_pow + theorem units.coe_zpow Modified src/algebra/group_power/basic.lean + theorem units.eq_or_eq_neg_of_sq_eq_sq + theorem units.neg_one_pow_eq_or + theorem units.neg_pow + theorem units.neg_pow_bit0 + theorem units.neg_pow_bit1 + theorem units.neg_sq Modified src/algebra/group_power/lemmas.lean - theorem units.coe_pow - theorem units.coe_zpow Modified src/algebra/ring/basic.lean + theorem commute.units_neg_left + theorem commute.units_neg_left_iff + theorem commute.units_neg_one_left + theorem commute.units_neg_one_right + theorem commute.units_neg_right + theorem commute.units_neg_right_iff + theorem semiconj_by.units_neg_left + theorem semiconj_by.units_neg_left_iff + theorem semiconj_by.units_neg_one_left + theorem semiconj_by.units_neg_one_right + theorem semiconj_by.units_neg_right + theorem semiconj_by.units_neg_right_iff + theorem units.mul_neg_one + theorem units.neg_mul_eq_mul_neg + theorem units.neg_mul_eq_neg_mul + theorem units.neg_one_mul 2022-02-10 13:11:36 c3d8782 feat(category_theory/bicategory/functor_bicategory): bicategory structure on oplax functors (#11405) This PR defines a bicategory structure on the oplax functors between bicategories. ESTIMATED CHANGES Added src/category_theory/bicategory/functor_bicategory.lean + def category_theory.oplax_nat_trans.associator + def category_theory.oplax_nat_trans.left_unitor + def category_theory.oplax_nat_trans.right_unitor + def category_theory.oplax_nat_trans.whisker_left + def category_theory.oplax_nat_trans.whisker_right 2022-02-10 10:46:35 da164c6 feat (category_theory/karoubi_karoubi) : idempotence of karoubi (#11931) In this file, we construct the equivalence of categories `karoubi_karoubi.equivalence C : karoubi C ≌ karoubi (karoubi C)` for any category `C`. ESTIMATED CHANGES Added src/category_theory/idempotents/karoubi_karoubi.lean + def category_theory.idempotents.karoubi_karoubi.counit_iso + def category_theory.idempotents.karoubi_karoubi.equivalence + def category_theory.idempotents.karoubi_karoubi.inverse + def category_theory.idempotents.karoubi_karoubi.unit_iso 2022-02-10 10:46:34 0490977 feat(algebra/lie/engel): add proof of Engel's theorem (#11922) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/lie/cartan_subalgebra.lean + theorem lie_subalgebra.lie_mem_sup_of_mem_normalizer Added src/algebra/lie/engel.lean + theorem function.surjective.is_engelian + theorem lie_algebra.exists_engelian_lie_subalgebra_of_lt_normalizer + def lie_algebra.is_engelian + theorem lie_algebra.is_engelian_of_is_noetherian + theorem lie_algebra.is_engelian_of_subsingleton + theorem lie_algebra.is_nilpotent_iff_forall + theorem lie_equiv.is_engelian_iff + theorem lie_module.is_nilpotent_iff_forall + theorem lie_submodule.exists_smul_add_of_span_sup_eq_top + theorem lie_submodule.is_nilpotent_of_is_nilpotent_span_sup_eq_top + theorem lie_submodule.lcs_le_lcs_of_is_nilpotent_span_sup_eq_top + theorem lie_submodule.lie_top_eq_of_span_sup_eq_top Modified src/algebra/lie/of_associative.lean + theorem lie_subalgebra.to_endomorphism_eq + theorem lie_subalgebra.to_endomorphism_mk + theorem lie_submodule.coe_map_to_endomorphism_le Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.subsingleton_bot Modified src/algebra/module/submodule.lean + theorem submodule.injective_subtype Modified src/linear_algebra/basic.lean + theorem submodule.span_sup + theorem submodule.sup_span 2022-02-10 10:46:32 f32fda7 feat(set_theory/ordinal_arithmetic): More `lsub` and `blsub` lemmas (#11848) We prove variants of `sup_typein`, which serve as analogs for `blsub_id`. We also prove `sup_eq_lsub_or_sup_succ_eq_lsub`, which combines `sup_le_lsub` and `lsub_le_sup_succ`. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.blsub_id + theorem ordinal.bsup_eq_blsub_or_succ_bsup_eq_blsub - theorem ordinal.bsup_id + theorem ordinal.bsup_id_limit + theorem ordinal.bsup_id_succ + theorem ordinal.lsub_typein + theorem ordinal.sup_eq_lsub_or_sup_succ_eq_lsub + theorem ordinal.sup_typein_limit + theorem ordinal.sup_typein_succ 2022-02-10 10:46:31 b7360f9 feat(group_theory/general_commutator): subgroup.prod commutes with the general_commutator (#11818) ESTIMATED CHANGES Modified src/group_theory/general_commutator.lean + theorem general_commutator_prod_prod + theorem map_general_commutator 2022-02-10 10:46:28 6afaf36 feat(algebra/order/hom/ring): Ordered semiring/ring homomorphisms (#11634) Define `order_ring_hom` with notation `→+*o` along with its hom class. ESTIMATED CHANGES Modified src/algebra/order/hom/monoid.lean +/- structure order_add_monoid_hom +/- structure order_monoid_hom +/- theorem order_monoid_with_zero_hom.coe_monoid_with_zero_hom +/- theorem order_monoid_with_zero_hom.coe_order_monoid_hom +/- structure order_monoid_with_zero_hom Added src/algebra/order/hom/ring.lean + theorem order_ring_hom.cancel_left + theorem order_ring_hom.cancel_right + theorem order_ring_hom.coe_coe_order_add_monoid_hom + theorem order_ring_hom.coe_coe_order_monoid_with_zero_hom + theorem order_ring_hom.coe_coe_ring_hom + theorem order_ring_hom.coe_comp + theorem order_ring_hom.coe_id + theorem order_ring_hom.coe_order_add_monoid_hom_apply + theorem order_ring_hom.coe_order_add_monoid_hom_id + theorem order_ring_hom.coe_order_monoid_with_zero_hom_apply + theorem order_ring_hom.coe_order_monoid_with_zero_hom_id + theorem order_ring_hom.coe_ring_hom_apply + theorem order_ring_hom.coe_ring_hom_id + theorem order_ring_hom.comp_apply + theorem order_ring_hom.comp_assoc + theorem order_ring_hom.comp_id + theorem order_ring_hom.ext + theorem order_ring_hom.id_apply + theorem order_ring_hom.id_comp + theorem order_ring_hom.to_fun_eq_coe + def order_ring_hom.to_order_add_monoid_hom + theorem order_ring_hom.to_order_add_monoid_hom_eq_coe + def order_ring_hom.to_order_monoid_with_zero_hom + theorem order_ring_hom.to_order_monoid_with_zero_hom_eq_coe + theorem order_ring_hom.to_ring_hom_eq_coe + structure order_ring_hom Modified src/algebra/ring/basic.lean + def ring_hom.copy 2022-02-10 09:27:23 8f5fd26 feat(data/nat/factorization): bijection between positive nats and finsupps over primes (#11440) Proof that for any finsupp `f : ℕ →₀ ℕ` whose support is in the primes, `f = (f.prod pow).factorization`, and hence that the positive natural numbers are bijective with finsupps `ℕ →₀ ℕ` with support in the primes. ESTIMATED CHANGES Modified src/algebra/big_operators/finsupp.lean + theorem nat.prod_pow_pos_of_zero_not_mem_support Modified src/data/nat/factorization.lean + theorem nat.eq_factorization_iff + def nat.factorization_equiv + theorem nat.factorization_equiv_apply + theorem nat.factorization_equiv_inv_apply + theorem nat.prod_pow_factorization_eq_self 2022-02-10 09:27:22 0aa0bc8 feat(set_theory/ordinal_arithmetic): The derivative of addition (#11270) We prove that the derivative of `(+) a` evaluated at `b` is given by `a * ω + b`. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.add_eq_right_iff_mul_omega_le + theorem ordinal.add_le_right_iff_mul_omega_le + theorem ordinal.deriv_add_eq_mul_omega_add +/- def ordinal.family_of_bfamily +/- theorem ordinal.family_of_bfamily_enum + theorem ordinal.is_normal.apply_eq_self_iff_deriv +/- theorem ordinal.is_normal.deriv_fp - theorem ordinal.is_normal.fp_iff_deriv' - theorem ordinal.is_normal.fp_iff_deriv + theorem ordinal.is_normal.le_iff_deriv + theorem ordinal.is_normal.le_iff_eq +/- theorem ordinal.is_normal.le_nfp +/- theorem ordinal.is_normal.nfp_fp - theorem ordinal.is_normal.nfp_le +/- theorem ordinal.is_normal.nfp_le_fp + theorem ordinal.mul_one_add + theorem ordinal.nfp_add_eq_mul_omega + theorem ordinal.nfp_add_zero +/- theorem ordinal.nfp_eq_self +/- theorem ordinal.sup_add_nat +/- theorem ordinal.sup_mul_nat +/- theorem ordinal.sup_nat_cast 2022-02-10 08:34:06 e60ca6b feat(data/real/ennreal): `inv` is an `order_iso` to the order dual and lemmas for `supr, infi` (#11869) Establishes that `inv` is an order isomorphism to the order dual. We then provide some convenience lemmas which guarantee that `inv` switches `supr` and `infi` and hence also switches `limsup` and `liminf`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + def ennreal.inv_order_iso + theorem ennreal.inv_order_iso_symm_apply Modified src/topology/instances/ennreal.lean + theorem ennreal.inv_liminf + theorem ennreal.inv_limsup + theorem ennreal.inv_map_infi + theorem ennreal.inv_map_supr 2022-02-10 08:34:05 b7e72ea feat(measure_theory/probability_mass_function): Measure calculations for additional pmf constructions (#11858) This PR adds calculations of the measures of sets under various `pmf` constructions. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/constructions.lean + theorem pmf.mem_support_uniform_of_fintype - theorem pmf.mem_support_uniform_of_fintype_iff +/- theorem pmf.support_uniform_of_fintype + theorem pmf.to_measure_map_apply + theorem pmf.to_measure_of_finset_apply + theorem pmf.to_measure_of_fintype_apply + theorem pmf.to_measure_of_multiset_apply + theorem pmf.to_measure_uniform_of_finset_apply + theorem pmf.to_measure_uniform_of_fintype_apply + theorem pmf.to_outer_measure_map_apply + theorem pmf.to_outer_measure_of_finset_apply + theorem pmf.to_outer_measure_of_fintype_apply + theorem pmf.to_outer_measure_of_multiset_apply + theorem pmf.to_outer_measure_uniform_of_finset_apply + theorem pmf.to_outer_measure_uniform_of_fintype_apply Modified src/measure_theory/probability_mass_function/monad.lean +/- theorem pmf.to_measure_bind_apply +/- theorem pmf.to_measure_bind_on_support_apply +/- theorem pmf.to_measure_pure_apply +/- theorem pmf.to_outer_measure_bind_apply +/- theorem pmf.to_outer_measure_bind_on_support_apply +/- theorem pmf.to_outer_measure_pure_apply 2022-02-10 08:04:04 e9a1893 chore(tactic/default): import `linear_combination` (#11942) ESTIMATED CHANGES Modified src/tactic/default.lean 2022-02-10 03:40:32 ea0e458 refactor(topology/algebra/mul_action2): rename type classes (#11940) Rename `has_continuous_smul₂` and `has_continuous_vadd₂` to `has_continuous_const_smul` and `has_continuous_const_vadd`, respectively. ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/mul_action2.lean +/- theorem is_open_map_quotient_mk_mul 2022-02-09 23:10:35 4e8d8fa feat(order/hom/bounded): Bounded order homomorphisms (#11806) Define `bounded_order_hom` in `order.hom.bounded` and move `top_hom`, `bot_hom` there. ESTIMATED CHANGES Modified src/order/hom/basic.lean Added src/order/hom/bounded.lean + theorem bot_hom.bot_apply + theorem bot_hom.cancel_left + theorem bot_hom.cancel_right + theorem bot_hom.coe_bot + theorem bot_hom.coe_comp + theorem bot_hom.coe_id + theorem bot_hom.coe_inf + theorem bot_hom.coe_sup + def bot_hom.comp + theorem bot_hom.comp_apply + theorem bot_hom.comp_assoc + theorem bot_hom.comp_id + theorem bot_hom.ext + theorem bot_hom.id_apply + theorem bot_hom.id_comp + theorem bot_hom.inf_apply + theorem bot_hom.sup_apply + theorem bot_hom.to_fun_eq_coe + structure bot_hom + theorem bounded_order_hom.cancel_left + theorem bounded_order_hom.cancel_right + theorem bounded_order_hom.coe_comp + theorem bounded_order_hom.coe_comp_bot_hom + theorem bounded_order_hom.coe_comp_order_hom + theorem bounded_order_hom.coe_comp_top_hom + theorem bounded_order_hom.coe_id + def bounded_order_hom.comp + theorem bounded_order_hom.comp_apply + theorem bounded_order_hom.comp_assoc + theorem bounded_order_hom.comp_id + theorem bounded_order_hom.ext + theorem bounded_order_hom.id_apply + theorem bounded_order_hom.id_comp + def bounded_order_hom.to_bot_hom + theorem bounded_order_hom.to_fun_eq_coe + def bounded_order_hom.to_top_hom + structure bounded_order_hom + theorem top_hom.cancel_left + theorem top_hom.cancel_right + theorem top_hom.coe_comp + theorem top_hom.coe_id + theorem top_hom.coe_inf + theorem top_hom.coe_sup + theorem top_hom.coe_top + def top_hom.comp + theorem top_hom.comp_apply + theorem top_hom.comp_assoc + theorem top_hom.comp_id + theorem top_hom.ext + theorem top_hom.id_apply + theorem top_hom.id_comp + theorem top_hom.inf_apply + theorem top_hom.sup_apply + theorem top_hom.to_fun_eq_coe + theorem top_hom.top_apply + structure top_hom Modified src/order/hom/lattice.lean - theorem bot_hom.bot_apply - theorem bot_hom.cancel_left - theorem bot_hom.cancel_right - theorem bot_hom.coe_bot - theorem bot_hom.coe_comp - theorem bot_hom.coe_id - theorem bot_hom.coe_inf - theorem bot_hom.coe_sup - def bot_hom.comp - theorem bot_hom.comp_apply - theorem bot_hom.comp_assoc - theorem bot_hom.comp_id - theorem bot_hom.ext - theorem bot_hom.id_apply - theorem bot_hom.id_comp - theorem bot_hom.inf_apply - theorem bot_hom.sup_apply - theorem bot_hom.to_fun_eq_coe - structure bot_hom - def bounded_lattice_hom.to_bot_hom + def bounded_lattice_hom.to_bounded_order_hom - def bounded_lattice_hom.to_top_hom +/- theorem inf_hom.cancel_left +/- theorem inf_hom.cancel_right +/- theorem lattice_hom.cancel_left +/- theorem lattice_hom.cancel_right +/- theorem sup_hom.cancel_left +/- theorem sup_hom.cancel_right - theorem top_hom.cancel_left - theorem top_hom.cancel_right - theorem top_hom.coe_comp - theorem top_hom.coe_id - theorem top_hom.coe_inf - theorem top_hom.coe_sup - theorem top_hom.coe_top - def top_hom.comp - theorem top_hom.comp_apply - theorem top_hom.comp_assoc - theorem top_hom.comp_id - theorem top_hom.ext - theorem top_hom.id_apply - theorem top_hom.id_comp - theorem top_hom.inf_apply - theorem top_hom.sup_apply - theorem top_hom.to_fun_eq_coe - theorem top_hom.top_apply - structure top_hom 2022-02-09 21:35:24 4691159 doc(algebra/group/hom_instances): Fix spellings (#11943) Fixes spelling mistakes introduced by #11843 ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean 2022-02-09 20:38:41 352e064 feat(topology/uniform_space/cauchy): add a few lemmas (#11912) ESTIMATED CHANGES Modified src/topology/uniform_space/cauchy.lean + theorem cauchy.ultrafilter_of + theorem complete_space_iff_ultrafilter - theorem is_compact.is_complete + theorem is_complete_iff_cluster_pt + theorem is_complete_iff_ultrafilter' + theorem is_complete_iff_ultrafilter 2022-02-09 18:57:12 2b9aca7 feat(topology): a few more results about compact sets (#11905) * Also a few lemmas about sets and `mul_support`. ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.disjoint_mul_support_iff + theorem function.mul_support_disjoint_iff Modified src/data/set/basic.lean + theorem set.compl_ne_univ + theorem set.not_mem_compl_iff Modified src/topology/algebra/group.lean + theorem is_compact.inv Modified src/topology/algebra/monoid.lean + theorem is_compact.mul Modified src/topology/separation.lean + theorem exists_compact_superset_iff 2022-02-09 18:57:10 b8fb8e5 feat(set_theory/ordinal_arithmetic): `le_one_iff` (#11847) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.le_one_iff 2022-02-09 18:57:09 2726e23 feat(algebra.group.hom_instances): Define left and right multiplication operators (#11843) Defines left and right multiplication operators on non unital, non associative semirings. Suggested by @ocfnash for #11073 ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean + def add_monoid.End.mul_left + def add_monoid.End.mul_right 2022-02-09 17:14:15 5008de8 feat(order): some properties about monotone predicates (#11904) * We prove that some predicates are monotone/antitone w.r.t. some order. The proofs are all trivial. * We prove 2 `iff` statements depending on the hypothesis that a certain predicate is (anti)mono: `exists_ge_and_iff_exists` and `filter.exists_mem_and_iff`) * The former is used to prove `bdd_above_iff_exists_ge`, the latter will be used in a later PR. ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem antitone.ball + theorem antitone.forall + theorem antitone_le + theorem antitone_lt + theorem exists_ge_and_iff_exists + theorem exists_le_and_iff_exists + theorem monotone.ball + theorem monotone.forall + theorem monotone_le + theorem monotone_lt Modified src/order/bounds.lean + theorem bdd_above.exists_ge + theorem bdd_above_def + theorem bdd_above_iff_exists_ge + theorem bdd_below.exists_le + theorem bdd_below_def + theorem bdd_below_iff_exists_le Modified src/order/filter/basic.lean + theorem filter.exists_mem_and_iff Modified src/topology/continuous_on.lean + theorem antitone_continuous_on 2022-02-09 17:14:14 d3cdcd8 feat(order/filter/basic): add lemma `le_prod_map_fst_snd` (#11901) A lemma relating filters on products and the filter-product of the projections. This lemma is particularly useful when proving the continuity of a function on a product space using filters. Discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Some.20missing.20prod.20stuff ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.le_prod_map_fst_snd 2022-02-09 17:14:12 9648ce2 chore(data/pi): add pi.prod and use elsewhere (#11877) `pi.prod` is the function that underlies `add_monoid_hom.prod`, `linear_map.prod`, etc. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Some.20missing.20prod.20stuff/near/270851797) ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/big_operators/basic.lean + theorem monoid_hom.coe_finset_prod - theorem monoid_hom.coe_prod Modified src/algebra/direct_sum/ring.lean Modified src/algebra/group/prod.lean + theorem monoid_hom.coe_prod Modified src/algebra/triv_sq_zero_ext.lean Modified src/data/dfinsupp/basic.lean Modified src/data/finsupp/basic.lean Modified src/data/pi.lean + theorem pi.prod_fst_snd + theorem pi.prod_snd_fst Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/prod.lean + theorem linear_map.coe_prod Modified src/topology/algebra/group.lean 2022-02-09 15:50:47 ca2450f feat(order/atoms): finite orders are (co)atomic (#11930) ESTIMATED CHANGES Modified src/order/atoms.lean Modified src/order/minimal.lean 2022-02-09 14:10:33 c882753 chore(algebra/tropical/basic): remove 3 instances (#11920) The three removed instances are * `covariant_swap_add` (exists since addition is commutative and the non-swapped version is proved); * `covariant_add_lt` (as is, this is a copy of `covariant_add` -- judging from the name, it could have been intended to have a `(<)`, but with `(<)` it is false, see below); * `covariant_swap_add_lt` (exists since addition is commutative and the non-swapped version is proved). Here is a proof that the second instance with `(<)` is false: ```lean lemma not_cov_lt : ¬ covariant_class (tropical ℕ) (tropical ℕ) (+) (<) := begin refine λ h, (lt_irrefl (trop 0) _), cases h, have : trop 0 < trop 1 := show 0 < 1, from zero_lt_one, calc trop 0 = trop 0 + trop 0 : (trop 0).add_self.symm ... < trop 0 + trop 1 : h _ this ... = trop 0 : add_eq_left this.le, end ``` ESTIMATED CHANGES Modified src/algebra/tropical/basic.lean 2022-02-09 11:36:35 fea68aa chore(data/fintype/basic): documenting elaboration bug (#11247) Simplifying an expression and documenting an elaboration bug that it was avoiding. ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- theorem set.to_finset_univ 2022-02-09 09:56:15 3aa5b8a refactor(algebra/ring/basic): rename lemmas about `a*(-b)` and `(-a)*b` (#11925) This renames: * `(- a) * b = - (a * b)` from `neg_mul_eq_neg_mul_symm` to `neg_mul` * `a * (-b) = - (a * b)` from `mul_neg_eq_neg_mul_symm` to `mul_neg` The new names are much easier to find when compared with `sub_mul`, `mul_sub` etc, and match the existing namespaced names under `units` and `matrix`. This also replaces rewrites by `← neg_mul_eq_neg_mul` with `neg_mul` and rewrites by `← neg_mul_eq_mul_neg` with `mul_neg`. To avoid clashes, the names in the `matrix` namespace are now `protected`. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/mul_neg.2C.20neg_mul/near/233638226) ESTIMATED CHANGES Modified src/algebra/field/basic.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/order/field.lean Modified src/algebra/order/ring.lean Modified src/algebra/quaternion.lean Modified src/algebra/quaternion_basis.lean Modified src/algebra/ring/basic.lean + theorem mul_neg - theorem mul_neg_eq_neg_mul_symm + theorem neg_mul - theorem neg_mul_eq_neg_mul_symm Modified src/algebra/star/chsh.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/algebraic_topology/alternating_face_map_complex.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/cone.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/normed_space/extend.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/special_functions/complex/log.lean Modified src/analysis/special_functions/integrals.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/int/modeq.lean Modified src/data/matrix/basic.lean - theorem matrix.mul_neg - theorem matrix.neg_mul Modified src/data/polynomial/field_division.lean Modified src/data/rat/basic.lean Modified src/field_theory/ratfunc.lean Modified src/geometry/euclidean/triangle.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/specific_groups/quaternion.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/orientation.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/modular.lean Modified src/number_theory/pell.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/ring_theory/coprime/basic.lean Modified src/ring_theory/henselian.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/power_series/basic.lean Modified src/tactic/noncomm_ring.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/ring.lean Modified src/topology/continuous_function/polynomial.lean Modified test/matrix.lean 2022-02-09 08:51:48 4e17e08 feat(data/complex/basic): re-im set product (#11770) `set.re_im_prod s t` (notation: `s ×ℂ t`) is the product of a set on the real axis and a set on the imaginary axis of the complex plane. ESTIMATED CHANGES Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/complex/re_im_topology.lean - theorem complex.closure_preimage_re_inter_preimage_im + theorem complex.closure_re_prod_im - theorem complex.frontier_preimage_re_inter_preimage_im + theorem complex.frontier_re_prod_im - theorem complex.interior_preimage_re_inter_preimage_im + theorem complex.interior_re_prod_im +/- theorem is_open.re_prod_im Modified src/data/complex/basic.lean + def set.re_prod_im 2022-02-09 07:16:44 78c3975 feat(category_theory/pseudoabelian/basic): basic facts and contructions about pseudoabelian categories (#11817) ESTIMATED CHANGES Added src/category_theory/idempotents/basic.lean + theorem category_theory.idempotents.equivalence.is_idempotent_complete + theorem category_theory.idempotents.idempotence_of_id_sub_idempotent + theorem category_theory.idempotents.is_idempotent_complete_iff_has_equalizer_of_id_and_idempotent + theorem category_theory.idempotents.is_idempotent_complete_iff_idempotents_have_kernels + theorem category_theory.idempotents.is_idempotent_complete_iff_of_equivalence + theorem category_theory.idempotents.is_idempotent_complete_iff_opposite + theorem category_theory.idempotents.is_idempotent_complete_of_is_idempotent_complete_opposite + theorem category_theory.idempotents.split_iff_of_iso + theorem category_theory.idempotents.split_imp_of_iso Added src/category_theory/idempotents/karoubi.lean + theorem category_theory.idempotents.karoubi.coe_X + theorem category_theory.idempotents.karoubi.coe_p + theorem category_theory.idempotents.karoubi.comp + theorem category_theory.idempotents.karoubi.comp_p + theorem category_theory.idempotents.karoubi.comp_proof + theorem category_theory.idempotents.karoubi.decomp_id + def category_theory.idempotents.karoubi.decomp_id_i + theorem category_theory.idempotents.karoubi.decomp_id_i_naturality + theorem category_theory.idempotents.karoubi.decomp_id_i_to_karoubi + def category_theory.idempotents.karoubi.decomp_id_p + theorem category_theory.idempotents.karoubi.decomp_id_p_naturality + theorem category_theory.idempotents.karoubi.decomp_id_p_to_karoubi + theorem category_theory.idempotents.karoubi.decomp_p + theorem category_theory.idempotents.karoubi.eq_to_hom_f + theorem category_theory.idempotents.karoubi.ext + structure category_theory.idempotents.karoubi.hom + theorem category_theory.idempotents.karoubi.hom_eq_zero_iff + theorem category_theory.idempotents.karoubi.hom_ext + theorem category_theory.idempotents.karoubi.id_eq + def category_theory.idempotents.karoubi.inclusion_hom + theorem category_theory.idempotents.karoubi.p_comm + theorem category_theory.idempotents.karoubi.p_comp + theorem category_theory.idempotents.karoubi.sum_hom + structure category_theory.idempotents.karoubi + def category_theory.idempotents.to_karoubi + def category_theory.idempotents.to_karoubi_is_equivalence Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.has_kernel_of_has_equalizer 2022-02-08 22:14:40 56db7ed feat(analysis/normed_space/basic): add lemmas `nnnorm_mul_le` and `nnnorm_pow_succ_le` (#11915) Adds two convenience lemmas for `nnnorm`, submultiplicativity of `nnnorm` for semi-normed rings and the corresponding extension to powers. We only allow successors so as not to incur the `norm_one_class` type class constraint. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnnorm_mul_le + theorem nnnorm_pow_le' + theorem nnnorm_pow_le +/- theorem norm_pow_le' +/- theorem norm_pow_le 2022-02-08 21:07:37 a3d6b43 feat(topology/algebra/uniform_group): `cauchy_seq.const_mul` and friends (#11917) A Cauchy sequence multiplied by a constant (including `-1`) remains a Cauchy sequence. ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean + theorem cauchy_seq.const_mul + theorem cauchy_seq.inv + theorem cauchy_seq.mul_const Modified src/topology/uniform_space/cauchy.lean +/- theorem cauchy_seq_const 2022-02-08 19:01:57 4545e31 feat(model_theory/substructures): More operations on substructures (#11906) Defines the substructure `first_order.language.hom.range`. Defines the homomorphisms `first_order.language.hom.dom_restrict` and `first_order.language.hom.cod_restrict`, and the embeddings `first_order.language.embedding.dom_restrict`, `first_order.language.embedding.cod_restrict` which restrict the domain or codomain of a first-order hom or embedding to a substructure. Defines the embedding `first_order.language.substructure.inclusion` between nested substructures. ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.embedding.comp_to_hom Modified src/model_theory/substructures.lean + def first_order.language.embedding.cod_restrict + theorem first_order.language.embedding.cod_restrict_apply + theorem first_order.language.embedding.comp_cod_restrict + def first_order.language.embedding.dom_restrict + theorem first_order.language.embedding.dom_restrict_apply + theorem first_order.language.embedding.equiv_range_apply + theorem first_order.language.embedding.substructure_equiv_map_apply + theorem first_order.language.embedding.subtype_comp_cod_restrict + theorem first_order.language.equiv.to_hom_range + def first_order.language.hom.cod_restrict + theorem first_order.language.hom.comp_cod_restrict + def first_order.language.hom.dom_restrict + theorem first_order.language.hom.map_le_range + theorem first_order.language.hom.mem_range + theorem first_order.language.hom.mem_range_self + def first_order.language.hom.range + theorem first_order.language.hom.range_coe + theorem first_order.language.hom.range_comp + theorem first_order.language.hom.range_comp_le_range + theorem first_order.language.hom.range_eq_map + theorem first_order.language.hom.range_eq_top + theorem first_order.language.hom.range_id + theorem first_order.language.hom.range_le_iff_comap + theorem first_order.language.hom.subtype_comp_cod_restrict + theorem first_order.language.substructure.closure_image + theorem first_order.language.substructure.coe_inclusion + def first_order.language.substructure.inclusion + theorem first_order.language.substructure.map_closure + theorem first_order.language.substructure.range_subtype 2022-02-08 17:19:13 1ae8304 chore(*): update to lean 3.39.1c (#11926) ESTIMATED CHANGES Modified leanpkg.toml 2022-02-08 13:50:04 b1269b0 chore(algebra/order/ring): add a few aliases (#11911) Add aliases `one_pos`, `two_pos`, `three_pos`, and `four_pos`. We used to have (some of) these lemmas. They were removed during one of cleanups but it doesn't hurt to have aliases. ESTIMATED CHANGES Modified src/algebra/order/ring.lean Modified src/data/list/basic.lean 2022-02-08 12:43:42 85d9f21 feat(*): localized `R[X]` notation for `polynomial R` (#11895) I did not change `polynomial (complex_term_here taking args)` in many places because I thought it would be more confusing. Also, in some files that prove things about polynomials incidentally, I also did not include the notation and change the files. ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified src/algebra/algebra/spectrum.lean +/- theorem spectrum.exists_mem_of_not_is_unit_aeval_prod +/- theorem spectrum.map_polynomial_aeval_of_degree_pos +/- theorem spectrum.map_polynomial_aeval_of_nonempty +/- theorem spectrum.subset_polynomial_aeval Modified src/algebra/cubic_discriminant.lean +/- def cubic.equiv +/- def cubic.to_poly Modified src/algebra/linear_recurrence.lean +/- def linear_recurrence.char_poly Modified src/algebra/polynomial/big_operators.lean +/- theorem polynomial.coeff_list_prod_of_nat_degree_le +/- theorem polynomial.coeff_prod_of_nat_degree_le +/- theorem polynomial.degree_list_prod_le +/- theorem polynomial.degree_list_sum_le +/- theorem polynomial.nat_degree_list_prod_le +/- theorem polynomial.nat_degree_list_sum_le +/- theorem polynomial.nat_degree_multiset_prod +/- theorem polynomial.nat_degree_multiset_sum_le +/- theorem polynomial.nat_degree_sum_le Modified src/algebra/polynomial/group_ring_action.lean +/- theorem polynomial.eval_smul' +/- theorem polynomial.smul_X +/- theorem polynomial.smul_eval +/- theorem polynomial.smul_eval_smul Modified src/algebraic_geometry/prime_spectrum/is_open_comap_C.lean +/- theorem algebraic_geometry.polynomial.comap_C_mem_image_of_Df Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/local_extr.lean +/- theorem polynomial.card_root_set_le_derivative Modified src/analysis/special_functions/polynomials.lean Modified src/data/mv_polynomial/equiv.lean +/- def mv_polynomial.option_equiv_right +/- def mv_polynomial.punit_alg_equiv Modified src/data/polynomial/algebra_map.lean +/- theorem polynomial.adjoin_X +/- def polynomial.aeval +/- theorem polynomial.aeval_X +/- theorem polynomial.aeval_X_left +/- theorem polynomial.aeval_X_pow +/- theorem polynomial.aeval_alg_equiv_apply +/- theorem polynomial.aeval_alg_hom_apply +/- theorem polynomial.aeval_algebra_map_apply +/- theorem polynomial.aeval_def +/- theorem polynomial.aeval_eq_sum_range' +/- theorem polynomial.aeval_eq_sum_range +/- theorem polynomial.aeval_fn_apply +/- theorem polynomial.aeval_nat_cast +/- theorem polynomial.aeval_one +/- theorem polynomial.aeval_sum +/- def polynomial.aeval_tower +/- theorem polynomial.aeval_tower_comp_C +/- theorem polynomial.aeval_zero +/- theorem polynomial.alg_hom_ext +/- theorem polynomial.coeff_zero_eq_aeval_zero' +/- theorem polynomial.coeff_zero_eq_aeval_zero +/- theorem polynomial.dvd_term_of_dvd_eval_of_dvd_terms +/- theorem polynomial.dvd_term_of_is_root_of_dvd_terms +/- theorem polynomial.eval_mul_X_sub_C +/- theorem polynomial.eval_unique +/- theorem polynomial.eval₂_int_cast_ring_hom_X +/- theorem polynomial.is_root_of_aeval_algebra_map_eq_zero +/- def polynomial.to_finsupp_iso_alg Modified src/data/polynomial/basic.lean +/- def polynomial.C +/- theorem polynomial.C_eq_nat_cast +/- def polynomial.X +/- theorem polynomial.X_ne_zero +/- theorem polynomial.add_hom_ext' +/- theorem polynomial.add_hom_ext +/- theorem polynomial.add_to_finsupp +/- def polynomial.coeff +/- theorem polynomial.coeff_X +/- theorem polynomial.coeff_X_of_ne_one +/- theorem polynomial.coeff_X_one +/- theorem polynomial.coeff_X_zero +/- theorem polynomial.coeff_erase +/- theorem polynomial.coeff_neg +/- theorem polynomial.coeff_one_zero +/- theorem polynomial.coeff_sub +/- theorem polynomial.coeff_update +/- theorem polynomial.coeff_update_apply +/- theorem polynomial.coeff_update_ne +/- theorem polynomial.coeff_update_same +/- theorem polynomial.coeff_zero +/- theorem polynomial.commute_X +/- theorem polynomial.commute_X_pow +/- theorem polynomial.eq_zero_of_eq_zero +/- theorem polynomial.erase_ne +/- theorem polynomial.erase_same +/- theorem polynomial.erase_zero +/- theorem polynomial.exists_iff_exists_finsupp +/- theorem polynomial.ext +/- theorem polynomial.ext_iff +/- theorem polynomial.forall_iff_forall_finsupp +/- theorem polynomial.lhom_ext' +/- def polynomial.monomial +/- theorem polynomial.monomial_add_erase +/- def polynomial.monomial_fun +/- theorem polynomial.mul_to_finsupp +/- theorem polynomial.nat_cast_mul +/- theorem polynomial.neg_to_finsupp +/- theorem polynomial.one_to_finsupp +/- def polynomial.op_ring_equiv +/- def polynomial.sum +/- theorem polynomial.sum_add' +/- theorem polynomial.sum_add +/- theorem polynomial.sum_add_index +/- theorem polynomial.sum_def +/- theorem polynomial.sum_eq_of_subset +/- theorem polynomial.sum_smul_index +/- def polynomial.support +/- theorem polynomial.support_X +/- theorem polynomial.support_X_empty +/- theorem polynomial.support_X_pow +/- theorem polynomial.support_erase +/- theorem polynomial.support_neg +/- theorem polynomial.support_update +/- theorem polynomial.support_update_ne_zero +/- theorem polynomial.support_update_zero +/- theorem polynomial.support_zero +/- def polynomial.to_finsupp_iso +/- def polynomial.update +/- theorem polynomial.update_zero_eq_erase +/- theorem polynomial.zero_to_finsupp Modified src/data/polynomial/cancel_leads.lean +/- def polynomial.cancel_leads +/- theorem polynomial.dvd_cancel_leads_of_dvd_of_dvd Modified src/data/polynomial/cardinal.lean +/- theorem polynomial.cardinal_mk_le_max Modified src/data/polynomial/coeff.lean +/- theorem polynomial.C_dvd_iff_dvd_coeff +/- theorem polynomial.C_mul' +/- theorem polynomial.coeff_C_mul +/- theorem polynomial.coeff_C_mul_X +/- theorem polynomial.coeff_X_mul +/- theorem polynomial.coeff_X_mul_zero +/- theorem polynomial.coeff_X_pow_mul' +/- theorem polynomial.coeff_X_pow_mul +/- theorem polynomial.coeff_add +/- theorem polynomial.coeff_bit0_mul +/- theorem polynomial.coeff_bit1_mul +/- theorem polynomial.coeff_mul +/- theorem polynomial.coeff_mul_C +/- theorem polynomial.coeff_mul_X +/- theorem polynomial.coeff_mul_X_pow' +/- theorem polynomial.coeff_mul_X_pow +/- theorem polynomial.coeff_mul_X_zero +/- theorem polynomial.coeff_one +/- theorem polynomial.coeff_smul +/- theorem polynomial.coeff_sum +/- theorem polynomial.finset_sum_coeff +/- def polynomial.lcoeff +/- theorem polynomial.lcoeff_apply +/- theorem polynomial.mul_X_pow_eq_zero +/- theorem polynomial.mul_coeff_zero +/- theorem polynomial.support_smul +/- theorem polynomial.update_eq_add_sub_coeff Modified src/data/polynomial/degree/card_pow_degree.lean +/- theorem polynomial.card_pow_degree_apply +/- theorem polynomial.card_pow_degree_nonzero +/- theorem polynomial.card_pow_degree_zero Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.as_sum_range' +/- theorem polynomial.as_sum_range +/- theorem polynomial.as_sum_range_C_mul_X_pow +/- theorem polynomial.as_sum_support +/- theorem polynomial.as_sum_support_C_mul_X_pow +/- theorem polynomial.card_supp_le_succ_nat_degree +/- theorem polynomial.coeff_eq_zero_of_nat_degree_lt +/- theorem polynomial.coeff_mul_X_sub_C +/- theorem polynomial.coeff_mul_degree_add_degree +/- theorem polynomial.coeff_nat_degree_succ_eq_zero +/- theorem polynomial.coeff_pow_mul_nat_degree +/- def polynomial.degree +/- theorem polynomial.degree_X +/- theorem polynomial.degree_X_le +/- theorem polynomial.degree_X_pow +/- theorem polynomial.degree_X_pow_le +/- theorem polynomial.degree_add_le +/- theorem polynomial.degree_add_le_of_degree_le +/- theorem polynomial.degree_eq_iff_nat_degree_eq +/- theorem polynomial.degree_eq_iff_nat_degree_eq_of_pos +/- theorem polynomial.degree_erase_le +/- theorem polynomial.degree_le_iff_coeff_zero +/- theorem polynomial.degree_lt_iff_coeff_zero +/- theorem polynomial.degree_lt_wf +/- theorem polynomial.degree_mono +/- theorem polynomial.degree_mul_le +/- theorem polynomial.degree_neg +/- theorem polynomial.degree_one +/- theorem polynomial.degree_one_le +/- theorem polynomial.degree_pow +/- theorem polynomial.degree_pow_le +/- theorem polynomial.degree_smul_le +/- theorem polynomial.degree_sub_le +/- theorem polynomial.degree_sum_le +/- theorem polynomial.degree_update_le +/- theorem polynomial.degree_zero +/- theorem polynomial.ite_le_nat_degree_coeff +/- def polynomial.leading_coeff +/- theorem polynomial.leading_coeff_X +/- theorem polynomial.leading_coeff_X_pow +/- def polynomial.leading_coeff_hom +/- theorem polynomial.leading_coeff_hom_apply +/- theorem polynomial.leading_coeff_monic_mul +/- theorem polynomial.leading_coeff_mul +/- theorem polynomial.leading_coeff_mul_X +/- theorem polynomial.leading_coeff_mul_X_pow +/- theorem polynomial.leading_coeff_mul_monic +/- theorem polynomial.leading_coeff_one +/- theorem polynomial.leading_coeff_pow +/- theorem polynomial.leading_coeff_zero +/- theorem polynomial.monic.coeff_nat_degree +/- theorem polynomial.monic.leading_coeff +/- theorem polynomial.monic.ne_zero +/- theorem polynomial.monic.ne_zero_of_ne +/- def polynomial.monic +/- theorem polynomial.monic_X +/- theorem polynomial.monic_X_pow +/- theorem polynomial.monic_of_subsingleton +/- theorem polynomial.monic_one +/- def polynomial.nat_degree +/- theorem polynomial.nat_degree_X +/- theorem polynomial.nat_degree_X_le +/- theorem polynomial.nat_degree_X_pow +/- theorem polynomial.nat_degree_add_le +/- theorem polynomial.nat_degree_add_le_of_degree_le +/- theorem polynomial.nat_degree_eq_of_degree_eq +/- theorem polynomial.nat_degree_eq_of_degree_eq_some +/- theorem polynomial.nat_degree_int_cast +/- theorem polynomial.nat_degree_le_nat_degree +/- theorem polynomial.nat_degree_mul_le +/- theorem polynomial.nat_degree_nat_cast +/- theorem polynomial.nat_degree_neg +/- theorem polynomial.nat_degree_one +/- theorem polynomial.nat_degree_pow_le +/- theorem polynomial.nat_degree_smul_le +/- theorem polynomial.nat_degree_zero +/- def polynomial.next_coeff +/- theorem polynomial.next_coeff_of_pos_nat_degree +/- theorem polynomial.not_is_unit_X +/- theorem polynomial.subsingleton_of_monic_zero +/- theorem polynomial.sum_over_range' +/- theorem polynomial.sum_over_range +/- theorem polynomial.zero_le_degree_iff Modified src/data/polynomial/degree/lemmas.lean +/- theorem polynomial.coe_lt_degree +/- theorem polynomial.degree_pos_of_eval₂_root +/- theorem polynomial.degree_pos_of_root +/- theorem polynomial.degree_sum_eq_of_disjoint +/- theorem polynomial.nat_degree_C_mul_le +/- theorem polynomial.nat_degree_add_coeff_mul +/- theorem polynomial.nat_degree_mul_C_le +/- theorem polynomial.nat_degree_pos_of_eval₂_root +/- theorem polynomial.nat_degree_sum_eq_of_disjoint Modified src/data/polynomial/degree/trailing_degree.lean +/- theorem polynomial.coeff_eq_zero_of_lt_nat_trailing_degree +/- theorem polynomial.coeff_nat_trailing_degree_pred_eq_zero +/- theorem polynomial.le_trailing_degree_X +/- def polynomial.nat_trailing_degree +/- theorem polynomial.nat_trailing_degree_X +/- theorem polynomial.nat_trailing_degree_X_le +/- theorem polynomial.nat_trailing_degree_eq_of_trailing_degree_eq +/- theorem polynomial.nat_trailing_degree_eq_of_trailing_degree_eq_some +/- theorem polynomial.nat_trailing_degree_int_cast +/- theorem polynomial.nat_trailing_degree_le_nat_degree +/- theorem polynomial.nat_trailing_degree_mul_X_pow +/- theorem polynomial.nat_trailing_degree_nat_cast +/- theorem polynomial.nat_trailing_degree_neg +/- theorem polynomial.nat_trailing_degree_one +/- theorem polynomial.nat_trailing_degree_zero +/- def polynomial.next_coeff_up +/- theorem polynomial.next_coeff_up_of_pos_nat_trailing_degree +/- def polynomial.trailing_coeff +/- theorem polynomial.trailing_coeff_zero +/- def polynomial.trailing_degree +/- theorem polynomial.trailing_degree_X +/- theorem polynomial.trailing_degree_eq_iff_nat_trailing_degree_eq +/- theorem polynomial.trailing_degree_eq_iff_nat_trailing_degree_eq_of_pos +/- theorem polynomial.trailing_degree_neg +/- theorem polynomial.trailing_degree_one +/- theorem polynomial.trailing_degree_one_le +/- theorem polynomial.trailing_degree_zero +/- theorem polynomial.trailing_monic.trailing_coeff +/- def polynomial.trailing_monic Modified src/data/polynomial/denoms_clearable.lean +/- theorem denoms_clearable.add +/- def denoms_clearable +/- theorem one_le_pow_mul_abs_eval_div Modified src/data/polynomial/derivative.lean +/- theorem polynomial.coeff_derivative +/- theorem polynomial.degree_derivative_eq +/- theorem polynomial.degree_derivative_le +/- theorem polynomial.degree_derivative_lt +/- def polynomial.derivative +/- theorem polynomial.derivative_C_mul +/- theorem polynomial.derivative_X +/- theorem polynomial.derivative_add +/- theorem polynomial.derivative_apply +/- theorem polynomial.derivative_bit0 +/- theorem polynomial.derivative_bit1 +/- theorem polynomial.derivative_cast_nat +/- theorem polynomial.derivative_comp +/- theorem polynomial.derivative_comp_one_sub_X +/- theorem polynomial.derivative_eval +/- theorem polynomial.derivative_eval₂_C +/- def polynomial.derivative_lhom +/- theorem polynomial.derivative_map +/- theorem polynomial.derivative_mul +/- theorem polynomial.derivative_neg +/- theorem polynomial.derivative_one +/- theorem polynomial.derivative_pow +/- theorem polynomial.derivative_pow_succ +/- theorem polynomial.derivative_prod +/- theorem polynomial.derivative_smul +/- theorem polynomial.derivative_sub +/- theorem polynomial.derivative_sum +/- theorem polynomial.derivative_zero +/- theorem polynomial.iterate_derivative_C_mul +/- theorem polynomial.iterate_derivative_add +/- theorem polynomial.iterate_derivative_cast_nat_mul +/- theorem polynomial.iterate_derivative_comp_one_sub_X +/- theorem polynomial.iterate_derivative_map +/- theorem polynomial.iterate_derivative_neg +/- theorem polynomial.iterate_derivative_smul +/- theorem polynomial.iterate_derivative_sub +/- theorem polynomial.iterate_derivative_zero +/- theorem polynomial.mem_support_derivative +/- theorem polynomial.nat_degree_derivative_lt +/- theorem polynomial.of_mem_support_derivative Modified src/data/polynomial/div.lean +/- theorem polynomial.X_dvd_iff +/- def polynomial.decidable_dvd_monic +/- theorem polynomial.degree_div_by_monic_le +/- theorem polynomial.degree_div_by_monic_lt +/- theorem polynomial.degree_mod_by_monic_le +/- theorem polynomial.degree_mod_by_monic_lt +/- def polynomial.div_by_monic +/- theorem polynomial.div_by_monic_eq_of_not_monic +/- theorem polynomial.div_by_monic_one +/- theorem polynomial.div_by_monic_zero +/- theorem polynomial.div_mod_by_monic_unique +/- theorem polynomial.map_dvd_map +/- def polynomial.mod_by_monic +/- theorem polynomial.mod_by_monic_X +/- theorem polynomial.mod_by_monic_X_sub_C_eq_C_eval +/- theorem polynomial.mod_by_monic_add_div +/- theorem polynomial.mod_by_monic_eq_of_not_monic +/- theorem polynomial.mod_by_monic_eq_sub_mul_div +/- theorem polynomial.mod_by_monic_one +/- theorem polynomial.mod_by_monic_zero +/- theorem polynomial.nat_degree_div_by_monic +/- theorem polynomial.pow_root_multiplicity_dvd +/- def polynomial.root_multiplicity +/- theorem polynomial.root_multiplicity_eq_multiplicity +/- theorem polynomial.root_multiplicity_eq_zero +/- theorem polynomial.root_multiplicity_pos +/- theorem polynomial.zero_div_by_monic +/- theorem polynomial.zero_mod_by_monic Modified src/data/polynomial/erase_lead.lean +/- def polynomial.erase_lead +/- theorem polynomial.erase_lead_X +/- theorem polynomial.erase_lead_X_pow +/- theorem polynomial.erase_lead_add_C_mul_X_pow +/- theorem polynomial.erase_lead_add_monomial_nat_degree_leading_coeff +/- theorem polynomial.erase_lead_nat_degree_lt_or_erase_lead_eq_zero +/- theorem polynomial.erase_lead_support +/- theorem polynomial.erase_lead_zero +/- theorem polynomial.induction_with_nat_degree_le +/- theorem polynomial.self_sub_C_mul_X_pow +/- theorem polynomial.self_sub_monomial_nat_degree_leading_coeff Modified src/data/polynomial/eval.lean +/- theorem polynomial.bit0_comp +/- theorem polynomial.bit1_comp +/- theorem polynomial.cast_int_comp +/- theorem polynomial.coe_eval_ring_hom +/- theorem polynomial.coeff_zero_eq_eval_zero +/- def polynomial.comp +/- theorem polynomial.comp_assoc +/- def polynomial.comp_ring_hom +/- theorem polynomial.comp_zero +/- theorem polynomial.degree_map_le +/- def polynomial.eval +/- theorem polynomial.eval_eq_finset_sum' +/- theorem polynomial.eval_eq_finset_sum +/- theorem polynomial.eval_finset_sum +/- theorem polynomial.eval_int_cast +/- theorem polynomial.eval_list_prod +/- theorem polynomial.eval_multiset_prod +/- theorem polynomial.eval_nat_cast +/- theorem polynomial.eval_nat_cast_map +/- theorem polynomial.eval_nat_cast_mul +/- theorem polynomial.eval_neg +/- theorem polynomial.eval_one +/- theorem polynomial.eval_one_map +/- theorem polynomial.eval_prod +/- def polynomial.eval_ring_hom +/- theorem polynomial.eval_smul +/- theorem polynomial.eval_sub +/- theorem polynomial.eval_sum +/- theorem polynomial.eval_zero +/- theorem polynomial.eval_zero_map +/- def polynomial.eval₂ +/- def polynomial.eval₂_add_monoid_hom +/- theorem polynomial.eval₂_eq_sum_range' +/- theorem polynomial.eval₂_finset_sum +/- theorem polynomial.eval₂_list_prod_noncomm +/- theorem polynomial.eval₂_mul_eq_zero_of_left +/- theorem polynomial.eval₂_mul_eq_zero_of_right +/- theorem polynomial.eval₂_nat_cast +/- theorem polynomial.eval₂_one +/- def polynomial.eval₂_ring_hom' +/- def polynomial.eval₂_ring_hom +/- theorem polynomial.eval₂_smul +/- theorem polynomial.eval₂_sum +/- theorem polynomial.eval₂_zero +/- theorem polynomial.is_root.dvd +/- theorem polynomial.is_root.map +/- theorem polynomial.is_root.of_map +/- def polynomial.is_root +/- theorem polynomial.is_root_map_iff +/- def polynomial.leval +/- def polynomial.map +/- theorem polynomial.map_comp +/- def polynomial.map_equiv +/- theorem polynomial.map_list_prod +/- theorem polynomial.map_multiset_prod +/- theorem polynomial.map_one +/- theorem polynomial.map_prod +/- def polynomial.map_ring_hom +/- theorem polynomial.map_ring_hom_id +/- theorem polynomial.map_sum +/- theorem polynomial.map_zero +/- theorem polynomial.mem_map_srange +/- theorem polynomial.mul_comp +/- theorem polynomial.nat_cast_comp +/- theorem polynomial.nat_cast_mul_comp +/- theorem polynomial.nat_degree_map_le +/- theorem polynomial.one_comp +/- theorem polynomial.pow_comp +/- theorem polynomial.prod_comp +/- theorem polynomial.root_mul_left_of_is_root +/- theorem polynomial.root_mul_right_of_is_root +/- theorem polynomial.support_map_subset +/- theorem polynomial.zero_comp +/- theorem polynomial.zero_is_root_of_coeff_zero_eq_zero Modified src/data/polynomial/field_division.lean +/- theorem polynomial.coe_norm_unit +/- theorem polynomial.coe_norm_unit_of_ne_zero +/- theorem polynomial.coeff_inv_units +/- theorem polynomial.degree_div_le +/- theorem polynomial.degree_map +/- theorem polynomial.degree_mul_leading_coeff_inv +/- def polynomial.div +/- theorem polynomial.div_by_monic_eq_div +/- theorem polynomial.eval_gcd_eq_zero +/- theorem polynomial.eval₂_gcd_eq_zero +/- theorem polynomial.irreducible_of_monic +/- theorem polynomial.is_root_gcd_iff_is_root_left_right +/- theorem polynomial.leading_coeff_normalize +/- theorem polynomial.map_dvd_map' +/- def polynomial.mod +/- theorem polynomial.mod_X_sub_C_eq_C_eval +/- theorem polynomial.mod_by_monic_eq_mod +/- theorem polynomial.monic.normalize_eq_self +/- theorem polynomial.monic_map_iff +/- theorem polynomial.prod_multiset_X_sub_C_dvd +/- theorem polynomial.prod_multiset_root_eq_finset_root +/- theorem polynomial.root_gcd_iff_root_left_right +/- theorem polynomial.root_left_of_root_gcd +/- theorem polynomial.root_right_of_root_gcd +/- theorem polynomial.roots_C_mul +/- theorem polynomial.roots_normalize Modified src/data/polynomial/hasse_deriv.lean +/- def polynomial.hasse_deriv +/- theorem polynomial.hasse_deriv_X +/- theorem polynomial.hasse_deriv_apply_one +/- theorem polynomial.hasse_deriv_eq_zero_of_lt_nat_degree +/- theorem polynomial.hasse_deriv_mul +/- theorem polynomial.nat_degree_hasse_deriv +/- theorem polynomial.nat_degree_hasse_deriv_le Modified src/data/polynomial/identities.lean +/- def polynomial.binom_expansion +/- def polynomial.eval_sub_factor Modified src/data/polynomial/induction.lean +/- theorem polynomial.coeff_monomial_mul +/- theorem polynomial.coeff_monomial_zero_mul +/- theorem polynomial.coeff_mul_monomial +/- theorem polynomial.coeff_mul_monomial_zero +/- theorem polynomial.sum_C_mul_X_eq +/- theorem polynomial.sum_monomial_eq Modified src/data/polynomial/inductions.lean +/- def polynomial.div_X +/- theorem polynomial.div_X_mul_X_add +/- theorem polynomial.nat_degree_ne_zero_induction_on Modified src/data/polynomial/integral_normalization.lean +/- theorem polynomial.integral_normalization_aeval_eq_zero +/- theorem polynomial.integral_normalization_coeff +/- theorem polynomial.integral_normalization_coeff_degree +/- theorem polynomial.integral_normalization_coeff_nat_degree +/- theorem polynomial.integral_normalization_coeff_ne_degree +/- theorem polynomial.integral_normalization_eval₂_eq_zero +/- theorem polynomial.integral_normalization_support +/- theorem polynomial.monic_integral_normalization +/- theorem polynomial.support_integral_normalization Modified src/data/polynomial/iterated_deriv.lean +/- def polynomial.iterated_deriv +/- theorem polynomial.iterated_deriv_X +/- theorem polynomial.iterated_deriv_X_one +/- theorem polynomial.iterated_deriv_X_zero +/- theorem polynomial.iterated_deriv_one +/- theorem polynomial.iterated_deriv_one_zero +/- theorem polynomial.iterated_deriv_zero_left Modified src/data/polynomial/lifts.lean +/- theorem polynomial.X_mem_lifts +/- theorem polynomial.X_pow_mem_lifts +/- theorem polynomial.base_mul_mem_lifts +/- theorem polynomial.erase_mem_lifts +/- def polynomial.lifts +/- theorem polynomial.lifts_and_degree_eq_and_monic +/- theorem polynomial.lifts_iff_coeff_lifts +/- theorem polynomial.lifts_iff_lifts_ring +/- theorem polynomial.lifts_iff_ring_hom_srange +/- theorem polynomial.lifts_iff_set_range +/- def polynomial.lifts_ring +/- theorem polynomial.map_alg_eq_map +/- theorem polynomial.mem_lifts +/- theorem polynomial.mem_lifts_and_degree_eq +/- theorem polynomial.smul_mem_lifts Modified src/data/polynomial/mirror.lean +/- theorem polynomial.irreducible_of_mirror +/- theorem polynomial.mirror_X +/- theorem polynomial.mirror_mul_of_domain +/- theorem polynomial.mirror_neg +/- theorem polynomial.mirror_smul +/- theorem polynomial.mirror_zero Modified src/data/polynomial/monic.lean +/- theorem polynomial.degree_map_eq_of_injective +/- theorem polynomial.is_unit_leading_coeff_mul_left_eq_zero_iff +/- theorem polynomial.is_unit_leading_coeff_mul_right_eq_zero_iff +/- theorem polynomial.leading_coeff_map' +/- theorem polynomial.leading_coeff_of_injective +/- theorem polynomial.monic.as_sum +/- theorem polynomial.monic.degree_le_zero_iff_eq_one +/- theorem polynomial.monic.degree_mul_comm +/- theorem polynomial.monic.is_regular +/- theorem polynomial.monic.mul_left_eq_zero_iff +/- theorem polynomial.monic.mul_left_ne_zero +/- theorem polynomial.monic.mul_nat_degree_lt_iff +/- theorem polynomial.monic.mul_right_eq_zero_iff +/- theorem polynomial.monic.mul_right_ne_zero +/- theorem polynomial.monic.nat_degree_eq_zero_iff_eq_one +/- theorem polynomial.monic.nat_degree_mul' +/- theorem polynomial.monic.nat_degree_mul +/- theorem polynomial.monic.nat_degree_mul_comm +/- theorem polynomial.monic.next_coeff_mul +/- theorem polynomial.monic.next_coeff_multiset_prod +/- theorem polynomial.monic.next_coeff_prod +/- theorem polynomial.monic_add_of_left +/- theorem polynomial.monic_add_of_right +/- theorem polynomial.monic_multiset_prod_of_monic +/- theorem polynomial.monic_of_injective +/- theorem polynomial.monic_prod_of_monic +/- theorem polynomial.monic_sub_of_left +/- theorem polynomial.monic_sub_of_right +/- theorem polynomial.nat_degree_map_eq_of_injective +/- theorem polynomial.next_coeff_map +/- theorem polynomial.not_monic_zero Modified src/data/polynomial/monomial.lean +/- theorem polynomial.card_support_le_one_iff_monomial +/- theorem polynomial.ring_hom_ext' +/- theorem polynomial.ring_hom_ext Modified src/data/polynomial/reverse.lean +/- theorem polynomial.coeff_one_reverse +/- theorem polynomial.coeff_reflect +/- theorem polynomial.coeff_reverse +/- theorem polynomial.coeff_zero_reverse +/- theorem polynomial.eval₂_reflect_eq_zero_iff +/- theorem polynomial.eval₂_reflect_mul_pow +/- theorem polynomial.eval₂_reverse_eq_zero_iff +/- theorem polynomial.eval₂_reverse_mul_pow +/- theorem polynomial.nat_degree_eq_reverse_nat_degree_add_nat_trailing_degree +/- theorem polynomial.reflect_C_mul +/- theorem polynomial.reflect_add +/- theorem polynomial.reflect_eq_zero_iff +/- theorem polynomial.reflect_monomial +/- theorem polynomial.reflect_neg +/- theorem polynomial.reflect_sub +/- theorem polynomial.reflect_support +/- theorem polynomial.reflect_zero +/- theorem polynomial.reverse_leading_coeff +/- theorem polynomial.reverse_mul +/- theorem polynomial.reverse_mul_of_domain +/- theorem polynomial.reverse_nat_degree +/- theorem polynomial.reverse_nat_degree_le +/- theorem polynomial.reverse_nat_trailing_degree +/- theorem polynomial.reverse_neg +/- theorem polynomial.reverse_trailing_coeff +/- theorem polynomial.reverse_zero +/- theorem polynomial.trailing_coeff_mul Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.card_le_degree_of_subset_roots +/- theorem polynomial.card_roots' +/- theorem polynomial.card_roots_sub_C' +/- theorem polynomial.card_roots_sub_C +/- theorem polynomial.coeff_coe_units_zero_ne_zero +/- theorem polynomial.count_roots +/- theorem polynomial.degree_coe_units +/- theorem polynomial.degree_le_mul_left +/- theorem polynomial.degree_pos_of_aeval_root +/- theorem polynomial.exists_max_root +/- theorem polynomial.exists_min_root +/- theorem polynomial.exists_multiset_roots +/- theorem polynomial.funext +/- theorem polynomial.irreducible_X +/- theorem polynomial.is_unit_iff +/- theorem polynomial.leading_coeff_div_by_monic_X_sub_C +/- theorem polynomial.mem_roots_sub_C +/- theorem polynomial.mod_by_monic_eq_of_dvd_sub +/- theorem polynomial.monic.irreducible_of_irreducible_map +/- theorem polynomial.nat_degree_coe_units +/- theorem polynomial.nat_degree_le_of_dvd +/- theorem polynomial.nat_degree_pos_of_aeval_root +/- theorem polynomial.nat_degree_pow +/- theorem polynomial.prime_X +/- theorem polynomial.root_multiplicity_add +/- theorem polynomial.root_multiplicity_mul +/- theorem polynomial.root_multiplicity_of_dvd +/- def polynomial.root_set +/- theorem polynomial.root_set_def +/- theorem polynomial.root_set_finite +/- theorem polynomial.roots_list_prod +/- theorem polynomial.roots_mul +/- theorem polynomial.roots_multiset_prod +/- theorem polynomial.roots_one +/- theorem polynomial.roots_prod +/- theorem polynomial.roots_smul_nonzero +/- theorem polynomial.roots_zero +/- theorem polynomial.units_coeff_zero_smul +/- theorem polynomial.zero_of_eval_zero Modified src/data/polynomial/taylor.lean +/- theorem polynomial.eq_zero_of_hasse_deriv_eq_zero +/- theorem polynomial.nat_degree_taylor +/- theorem polynomial.sum_taylor_eq +/- def polynomial.taylor +/- theorem polynomial.taylor_eval +/- theorem polynomial.taylor_eval_sub +/- theorem polynomial.taylor_mul +/- theorem polynomial.taylor_one +/- theorem polynomial.taylor_taylor +/- theorem polynomial.taylor_zero Modified src/field_theory/abel_ruffini.lean +/- theorem gal_X_is_solvable +/- theorem gal_X_pow_is_solvable +/- theorem gal_X_pow_sub_one_is_solvable +/- theorem gal_is_solvable_of_splits +/- theorem gal_is_solvable_tower +/- theorem gal_mul_is_solvable +/- theorem gal_one_is_solvable +/- theorem gal_prod_is_solvable +/- theorem gal_zero_is_solvable +/- theorem solvable_by_rad.is_solvable' Modified src/field_theory/adjoin.lean +/- theorem power_basis.equiv_adjoin_simple_aeval +/- theorem power_basis.equiv_adjoin_simple_symm_aeval Modified src/field_theory/finite/basic.lean +/- theorem finite_field.X_pow_card_sub_X_ne_zero +/- theorem finite_field.card_image_polynomial_eval +/- theorem finite_field.exists_root_sum_quadratic +/- theorem finite_field.expand_card +/- theorem finite_field.roots_X_pow_card_sub_X Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/galois.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean +/- theorem algebraic_closure.adjoin_monic.exists_root Modified src/field_theory/is_alg_closed/basic.lean +/- theorem is_alg_closed.degree_eq_one_of_irreducible +/- theorem is_alg_closed.exists_root +/- theorem is_alg_closed.of_exists_root +/- theorem is_alg_closed.roots_eq_zero_iff Modified src/field_theory/is_alg_closed/classification.lean Modified src/field_theory/laurent.lean +/- theorem ratfunc.laurent_aux_of_fraction_ring_mk +/- theorem ratfunc.taylor_mem_non_zero_divisors Modified src/field_theory/minpoly.lean +/- theorem minpoly.aeval_ne_zero_of_dvd_not_unit_minpoly +/- theorem minpoly.dvd +/- theorem minpoly.eq_of_irreducible +/- theorem minpoly.min +/- theorem minpoly.unique Modified src/field_theory/normal.lean +/- theorem normal.of_is_splitting_field Modified src/field_theory/polynomial_galois_group.lean +/- theorem polynomial.gal.card_complex_roots_eq_card_real_add_card_not_gal_inv +/- theorem polynomial.gal.mul_splits_in_splitting_field_of_mul +/- theorem polynomial.gal.splits_ℚ_ℂ Modified src/field_theory/primitive_element.lean +/- theorem field.primitive_element_inf_aux_exists_c Modified src/field_theory/ratfunc.lean +/- def ratfunc.X +/- theorem ratfunc.algebra_map_apply +/- theorem ratfunc.algebra_map_eq_zero_iff +/- theorem ratfunc.algebra_map_injective +/- theorem ratfunc.algebra_map_ne_zero +/- theorem ratfunc.coe_map_alg_hom_eq_coe_map +/- theorem ratfunc.coe_map_ring_hom_eq_coe_map +/- def ratfunc.denom +/- theorem ratfunc.denom_algebra_map +/- theorem ratfunc.denom_div +/- theorem ratfunc.denom_div_dvd +/- theorem ratfunc.denom_dvd +/- theorem ratfunc.div_smul +/- theorem ratfunc.eval_algebra_map +/- theorem ratfunc.lift_alg_hom_apply +/- theorem ratfunc.lift_alg_hom_apply_div +/- theorem ratfunc.lift_alg_hom_apply_of_fraction_ring_mk +/- theorem ratfunc.lift_alg_hom_injective +/- def ratfunc.lift_monoid_with_zero_hom +/- theorem ratfunc.lift_monoid_with_zero_hom_apply_of_fraction_ring_mk +/- theorem ratfunc.lift_monoid_with_zero_hom_injective +/- theorem ratfunc.lift_on'_div +/- theorem ratfunc.lift_on'_mk +/- theorem ratfunc.lift_on_condition_of_lift_on'_condition +/- theorem ratfunc.lift_on_div +/- theorem ratfunc.lift_on_mk +/- theorem ratfunc.lift_on_of_fraction_ring_mk +/- def ratfunc.lift_ring_hom +/- theorem ratfunc.lift_ring_hom_apply_of_fraction_ring_mk +/- theorem ratfunc.lift_ring_hom_injective +/- def ratfunc.map +/- def ratfunc.map_alg_hom +/- theorem ratfunc.map_apply_of_fraction_ring_mk +/- theorem ratfunc.map_denom_ne_zero +/- theorem ratfunc.map_injective +/- def ratfunc.map_ring_hom +/- theorem ratfunc.mk_coe_def +/- theorem ratfunc.mk_def_of_mem +/- theorem ratfunc.mk_def_of_ne +/- theorem ratfunc.mk_eq_div' +/- theorem ratfunc.mk_eq_div +/- theorem ratfunc.mk_eq_localization_mk +/- theorem ratfunc.mk_eq_mk +/- theorem ratfunc.mk_one' +/- theorem ratfunc.mk_one +/- theorem ratfunc.mk_smul +/- theorem ratfunc.mk_zero +/- def ratfunc.num +/- theorem ratfunc.num_algebra_map +/- def ratfunc.num_denom +/- theorem ratfunc.num_denom_div +/- theorem ratfunc.num_div +/- theorem ratfunc.num_div_dvd +/- theorem ratfunc.num_dvd +/- theorem ratfunc.num_mul_eq_mul_denom_iff +/- theorem ratfunc.of_fraction_ring_add +/- theorem ratfunc.of_fraction_ring_algebra_map +/- theorem ratfunc.of_fraction_ring_div +/- theorem ratfunc.of_fraction_ring_inv +/- theorem ratfunc.of_fraction_ring_mk' +/- theorem ratfunc.of_fraction_ring_mul +/- theorem ratfunc.of_fraction_ring_neg +/- theorem ratfunc.of_fraction_ring_smul +/- theorem ratfunc.of_fraction_ring_sub +/- def ratfunc.to_fraction_ring_ring_equiv +/- theorem ratfunc.to_fraction_ring_smul Modified src/field_theory/separable.lean +/- theorem irreducible.separable +/- theorem polynomial.card_root_set_eq_nat_degree +/- theorem polynomial.coe_expand +/- theorem polynomial.coeff_contract +/- theorem polynomial.coeff_expand +/- theorem polynomial.coeff_expand_mul' +/- theorem polynomial.coeff_expand_mul +/- theorem polynomial.contract_expand +/- theorem polynomial.count_roots_le_one +/- theorem polynomial.derivative_expand +/- theorem polynomial.eq_X_sub_C_of_separable_of_root_eq +/- theorem polynomial.exists_separable_of_irreducible +/- theorem polynomial.expand_char +/- theorem polynomial.expand_contract +/- theorem polynomial.expand_eq_C +/- theorem polynomial.expand_eq_sum +/- theorem polynomial.expand_eq_zero +/- theorem polynomial.expand_eval +/- theorem polynomial.expand_expand +/- theorem polynomial.expand_inj +/- theorem polynomial.expand_mul +/- theorem polynomial.expand_one +/- theorem polynomial.expand_pow +/- theorem polynomial.expand_zero +/- theorem polynomial.is_unit_of_self_mul_dvd_separable +/- theorem polynomial.is_unit_or_eq_zero_of_separable_expand +/- theorem polynomial.map_expand +/- theorem polynomial.map_expand_pow_char +/- theorem polynomial.monic.expand +/- theorem polynomial.multiplicity_le_one_of_separable +/- theorem polynomial.nat_degree_expand +/- theorem polynomial.nodup_roots +/- theorem polynomial.not_separable_zero +/- theorem polynomial.of_irreducible_expand +/- theorem polynomial.of_irreducible_expand_pow +/- theorem polynomial.root_multiplicity_le_one_of_separable +/- theorem polynomial.separable.is_coprime +/- theorem polynomial.separable.map +/- theorem polynomial.separable.mul +/- theorem polynomial.separable.of_dvd +/- theorem polynomial.separable.of_mul_left +/- theorem polynomial.separable.of_mul_right +/- theorem polynomial.separable.of_pow' +/- theorem polynomial.separable.of_pow +/- theorem polynomial.separable.squarefree +/- def polynomial.separable +/- theorem polynomial.separable_X +/- theorem polynomial.separable_def' +/- theorem polynomial.separable_def +/- theorem polynomial.separable_gcd_left +/- theorem polynomial.separable_gcd_right +/- theorem polynomial.separable_iff_derivative_ne_zero +/- theorem polynomial.separable_map +/- theorem polynomial.separable_of_subsingleton +/- theorem polynomial.separable_one +/- theorem polynomial.separable_or +/- theorem polynomial.separable_prod' +/- theorem polynomial.separable_prod +/- theorem polynomial.unique_separable_of_irreducible Modified src/field_theory/separable_degree.lean +/- def polynomial.has_separable_contraction.contraction +/- theorem polynomial.has_separable_contraction.eq_degree +/- def polynomial.has_separable_contraction +/- def polynomial.is_separable_contraction Modified src/field_theory/splitting_field.lean +/- theorem polynomial.X_sub_C_mul_remove_factor +/- theorem polynomial.aeval_root_derivative_of_splits +/- theorem polynomial.degree_eq_card_roots +/- theorem polynomial.degree_eq_one_of_irreducible_of_splits +/- theorem polynomial.eq_X_sub_C_of_splits_of_single_root +/- theorem polynomial.eq_prod_roots_of_monic_of_splits_id +/- theorem polynomial.eq_prod_roots_of_splits +/- theorem polynomial.eq_prod_roots_of_splits_id +/- theorem polynomial.exists_multiset_of_splits +/- theorem polynomial.exists_root_of_splits +/- def polynomial.factor +/- theorem polynomial.factor_dvd_of_degree_ne_zero +/- theorem polynomial.factor_dvd_of_nat_degree_ne_zero +/- theorem polynomial.factor_dvd_of_not_is_unit +/- def polynomial.is_splitting_field.alg_equiv +/- theorem polynomial.is_splitting_field.finite_dimensional +/- def polynomial.is_splitting_field.lift +/- theorem polynomial.is_splitting_field.mul +/- theorem polynomial.is_splitting_field.splits_iff +/- theorem polynomial.map_root_of_splits +/- theorem polynomial.nat_degree_eq_card_roots +/- theorem polynomial.nat_degree_remove_factor' +/- theorem polynomial.nat_degree_remove_factor +/- theorem polynomial.prod_roots_eq_coeff_zero_of_monic_of_split +/- def polynomial.remove_factor +/- def polynomial.root_of_splits +/- theorem polynomial.roots_map +/- def polynomial.splits +/- theorem polynomial.splits_comp_of_splits +/- theorem polynomial.splits_id_iff_splits +/- theorem polynomial.splits_iff_card_roots +/- theorem polynomial.splits_iff_exists_multiset +/- theorem polynomial.splits_map_iff +/- theorem polynomial.splits_mul +/- theorem polynomial.splits_mul_iff +/- theorem polynomial.splits_of_degree_eq_one +/- theorem polynomial.splits_of_degree_le_one +/- theorem polynomial.splits_of_exists_multiset +/- theorem polynomial.splits_of_is_unit +/- theorem polynomial.splits_of_nat_degree_eq_one +/- theorem polynomial.splits_of_nat_degree_le_one +/- theorem polynomial.splits_of_splits_gcd_left +/- theorem polynomial.splits_of_splits_gcd_right +/- theorem polynomial.splits_of_splits_id +/- theorem polynomial.splits_of_splits_mul +/- theorem polynomial.splits_of_splits_of_dvd +/- theorem polynomial.splits_pow +/- theorem polynomial.splits_prod +/- theorem polynomial.splits_prod_iff +/- theorem polynomial.splits_zero +/- def polynomial.splitting_field +/- theorem polynomial.splitting_field_aux.algebra_map_succ +/- theorem polynomial.splitting_field_aux.succ +/- def polynomial.splitting_field_aux +/- theorem polynomial.sum_roots_eq_next_coeff_of_monic_of_split Modified src/linear_algebra/charpoly/basic.lean +/- def linear_map.charpoly Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/lagrange.lean +/- def lagrange.basis +/- theorem lagrange.eq_interpolate +/- theorem lagrange.eq_interpolate_of_eval_eq +/- theorem lagrange.eq_of_eval_eq +/- theorem lagrange.eq_zero_of_eval_eq_zero +/- def lagrange.interpolate Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/charpoly/basic.lean +/- def charmatrix +/- def matrix.charpoly Modified src/linear_algebra/matrix/charpoly/coeff.lean +/- theorem matrix.eval_det +/- theorem matrix.mat_poly_equiv_eval Modified src/linear_algebra/matrix/polynomial.lean Modified src/linear_algebra/smodeq.lean Modified src/number_theory/bernoulli_polynomials.lean +/- def polynomial.bernoulli Modified src/number_theory/class_number/admissible_card_pow_degree.lean +/- theorem polynomial.card_pow_degree_anti_archimedean +/- theorem polynomial.exists_approx_polynomial +/- theorem polynomial.exists_eq_polynomial Modified src/number_theory/class_number/function_field.lean Modified src/number_theory/function_field.lean +/- def function_field.ring_of_integers Modified src/ring_theory/adjoin_root.lean +/- theorem adjoin_root.aeval_eq +/- def adjoin_root.equiv +/- theorem adjoin_root.eval₂_root +/- theorem adjoin_root.is_root_root +/- theorem adjoin_root.lift_hom_eq_alg_hom +/- theorem adjoin_root.lift_hom_mk +/- theorem adjoin_root.lift_mk +/- def adjoin_root.mk +/- theorem adjoin_root.mk_eq_mk +/- theorem adjoin_root.mod_by_monic_hom_mk +/- def adjoin_root Modified src/ring_theory/algebraic.lean +/- theorem inv_eq_of_aeval_div_X_ne_zero +/- theorem inv_eq_of_root_of_coeff_zero_ne_zero +/- theorem subalgebra.inv_mem_of_root_of_coeff_zero_ne_zero Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/eisenstein_criterion.lean +/- theorem polynomial.eisenstein_criterion_aux.is_unit_of_nat_degree_eq_zero_of_forall_dvd_is_unit +/- theorem polynomial.eisenstein_criterion_aux.map_eq_C_mul_X_pow_of_forall_coeff_mem +/- theorem polynomial.irreducible_of_eisenstein_criterion Modified src/ring_theory/finiteness.lean +/- theorem module_polynomial_of_endo.is_scalar_tower +/- def module_polynomial_of_endo Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/hahn_series.lean +/- theorem polynomial.algebra_map_hahn_series_apply Modified src/ring_theory/henselian.lean Modified src/ring_theory/ideal/over.lean +/- theorem ideal.coeff_zero_mem_comap_of_root_mem +/- theorem ideal.coeff_zero_mem_comap_of_root_mem_of_eval_mem +/- theorem ideal.exists_nonzero_mem_of_ne_bot +/- theorem ideal.injective_quotient_le_comap_map +/- theorem ideal.quotient_mk_maps_eq Modified src/ring_theory/integral_closure.lean +/- theorem is_integral_trans_aux +/- theorem leading_coeff_smul_normalize_scale_roots +/- def normalize_scale_roots Modified src/ring_theory/jacobson.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/laurent_series.lean + theorem power_series.coe_neg + theorem power_series.coe_sub Modified src/ring_theory/localization.lean +/- theorem is_fraction_ring.integer_normalization_eq_zero_iff +/- theorem is_integral_localization_at_leading_coeff +/- theorem is_localization.coeff_integer_normalization_mem_support +/- theorem is_localization.coeff_integer_normalization_of_not_mem_support +/- theorem is_localization.integer_normalization_coeff +/- theorem is_localization.integer_normalization_eval₂_eq_zero +/- theorem is_localization.integer_normalization_map_to_map +/- theorem is_localization.integer_normalization_spec Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/polynomial/basic.lean +/- def ideal.degree_le +/- theorem ideal.eq_zero_of_polynomial_mem_map_range +/- theorem ideal.mem_map_C_iff +/- def ideal.of_polynomial +/- theorem ideal.polynomial_mem_ideal_of_coeff_mem_ideal +/- theorem ideal.polynomial_not_is_field +/- theorem ideal.polynomial_quotient_equiv_quotient_polynomial_map_mk +/- theorem ideal.polynomial_quotient_equiv_quotient_polynomial_symm_mk +/- theorem polynomial.coeff_mem_frange +/- theorem polynomial.coeff_of_subring +/- theorem polynomial.coeff_restriction' +/- theorem polynomial.coeff_restriction +/- def polynomial.degree_le +/- def polynomial.degree_lt +/- theorem polynomial.degree_restriction +/- theorem polynomial.eval₂_restriction +/- def polynomial.frange +/- theorem polynomial.frange_of_subring +/- theorem polynomial.frange_one +/- theorem polynomial.frange_zero +/- theorem polynomial.map_restriction +/- theorem polynomial.mem_degree_le +/- theorem polynomial.mem_degree_lt +/- theorem polynomial.mem_frange_iff +/- theorem polynomial.mem_ker_mod_by_monic +/- theorem polynomial.monic_restriction +/- theorem polynomial.nat_degree_restriction +/- def polynomial.of_subring +/- def polynomial.restriction +/- theorem polynomial.restriction_one +/- theorem polynomial.restriction_zero +/- theorem polynomial.sup_ker_aeval_le_ker_aeval_mul +/- theorem polynomial.support_restriction +/- def polynomial.to_subring +/- theorem polynomial.to_subring_one +/- theorem polynomial.to_subring_zero Modified src/ring_theory/polynomial/bernstein.lean +/- def bernstein_polynomial Modified src/ring_theory/polynomial/chebyshev.lean Modified src/ring_theory/polynomial/content.lean +/- theorem polynomial.C_content_dvd +/- def polynomial.content +/- theorem polynomial.content_C_mul +/- theorem polynomial.content_X +/- theorem polynomial.content_X_mul +/- theorem polynomial.content_X_pow +/- theorem polynomial.content_dvd_coeff +/- theorem polynomial.content_eq_gcd_leading_coeff_content_erase_lead +/- theorem polynomial.content_eq_gcd_range_of_lt +/- theorem polynomial.content_eq_gcd_range_succ +/- theorem polynomial.content_eq_zero_iff +/- theorem polynomial.content_mul +/- theorem polynomial.content_mul_aux +/- theorem polynomial.content_one +/- theorem polynomial.content_prim_part +/- theorem polynomial.content_zero +/- theorem polynomial.degree_gcd_le_left +/- theorem polynomial.degree_gcd_le_right +/- theorem polynomial.dvd_content_iff_C_dvd +/- theorem polynomial.eq_C_content_mul_prim_part +/- theorem polynomial.exists_primitive_lcm_of_is_primitive +/- theorem polynomial.gcd_content_eq_of_dvd_sub +/- theorem polynomial.is_primitive.content_eq_one +/- theorem polynomial.is_primitive.dvd_prim_part_iff_dvd +/- theorem polynomial.is_primitive.is_primitive_of_dvd +/- theorem polynomial.is_primitive.mul +/- theorem polynomial.is_primitive.ne_zero +/- theorem polynomial.is_primitive.prim_part_eq +/- def polynomial.is_primitive +/- theorem polynomial.is_primitive_iff_content_eq_one +/- theorem polynomial.is_primitive_iff_is_unit_of_C_dvd +/- theorem polynomial.is_primitive_one +/- theorem polynomial.is_primitive_prim_part +/- theorem polynomial.monic.is_primitive +/- theorem polynomial.nat_degree_prim_part +/- theorem polynomial.normalize_content +/- def polynomial.prim_part +/- theorem polynomial.prim_part_dvd +/- theorem polynomial.prim_part_mul +/- theorem polynomial.prim_part_ne_zero +/- theorem polynomial.prim_part_zero Modified src/ring_theory/polynomial/cyclotomic/basic.lean +/- def polynomial.cyclotomic' +/- def polynomial.cyclotomic +/- theorem polynomial.int_cyclotomic_unique Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/eisenstein.lean +/- structure polynomial.is_eisenstein_at +/- structure polynomial.is_weakly_eisenstein_at Modified src/ring_theory/polynomial/gauss_lemma.lean +/- theorem polynomial.is_primitive.dvd_iff_fraction_map_dvd_fraction_map +/- theorem polynomial.is_primitive.dvd_of_fraction_map_dvd_fraction_map +/- theorem polynomial.is_primitive.int.dvd_iff_map_cast_dvd_map_cast +/- theorem polynomial.is_primitive.is_unit_iff_is_unit_map Modified src/ring_theory/polynomial/pochhammer.lean +/- theorem polynomial.mul_X_add_nat_cast_comp Modified src/ring_theory/polynomial/rational_root.lean +/- theorem denom_dvd_of_is_root +/- theorem is_integer_of_is_root_of_monic +/- theorem num_dvd_of_is_root +/- theorem scale_roots_aeval_eq_zero_of_aeval_mk'_eq_zero Modified src/ring_theory/polynomial/scale_roots.lean +/- theorem coeff_scale_roots +/- theorem coeff_scale_roots_nat_degree +/- theorem degree_scale_roots +/- theorem monic_scale_roots_iff +/- theorem nat_degree_scale_roots +/- theorem scale_roots_aeval_eq_zero +/- theorem scale_roots_eval₂_eq_zero +/- theorem scale_roots_ne_zero +/- theorem support_scale_roots_eq +/- theorem support_scale_roots_le Modified src/ring_theory/polynomial/tower.lean +/- theorem is_scalar_tower.aeval_apply +/- theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero +/- theorem is_scalar_tower.algebra_map_aeval +/- theorem subalgebra.aeval_coe Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/polynomial_algebra.lean +/- theorem mat_poly_equiv_smul_one +/- def poly_equiv_tensor.equiv +/- def poly_equiv_tensor.inv_fun +/- theorem poly_equiv_tensor.left_inv +/- theorem poly_equiv_tensor.right_inv +/- def poly_equiv_tensor.to_fun_alg_hom +/- theorem poly_equiv_tensor.to_fun_alg_hom_apply_tmul +/- def poly_equiv_tensor.to_fun_bilinear +/- theorem poly_equiv_tensor.to_fun_bilinear_apply_eq_sum +/- def poly_equiv_tensor.to_fun_linear +/- theorem poly_equiv_tensor.to_fun_linear_mul_tmul_mul +/- theorem poly_equiv_tensor.to_fun_linear_mul_tmul_mul_aux_2 +/- theorem poly_equiv_tensor.to_fun_linear_tmul_apply +/- def poly_equiv_tensor +/- theorem poly_equiv_tensor_apply +/- theorem poly_equiv_tensor_symm_apply_tmul Modified src/ring_theory/power_basis.lean +/- theorem power_basis.dim_le_degree_of_root +/- theorem power_basis.dim_le_nat_degree_of_root +/- theorem power_basis.nat_degree_lt_nat_degree Modified src/ring_theory/power_series/basic.lean +/- theorem mv_power_series.map_X +/- theorem polynomial.coe_injective +/- theorem polynomial.coe_one +/- def polynomial.coe_to_power_series.alg_hom +/- def polynomial.coe_to_power_series.ring_hom +/- theorem polynomial.coe_zero +/- theorem power_series.algebra_map_apply' +/- def power_series.trunc Modified src/ring_theory/roots_of_unity.lean Modified src/topology/algebra/polynomial.lean +/- theorem polynomial.exists_forall_norm_le +/- theorem polynomial.tendsto_norm_at_top Modified src/topology/continuous_function/polynomial.lean +/- theorem polynomial.aeval_continuous_map_apply +/- def polynomial.to_continuous_map +/- def polynomial.to_continuous_map_alg_hom +/- def polynomial.to_continuous_map_on +/- def polynomial.to_continuous_map_on_alg_hom Modified test/differentiable.lean Modified test/instance_diamonds.lean Modified test/library_search/ring_theory.lean 2022-02-08 09:20:10 5932581 feat(group_theory/submonoid/operations): prod_le_iff and le_prod_iff, also for groups and modules (#11898) ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.to_add_subgroup_le + theorem submodule.to_add_submonoid_le Modified src/group_theory/subgroup/basic.lean + theorem subgroup.le_prod_iff + theorem subgroup.map_one_eq_bot + theorem subgroup.prod_eq_bot_iff + theorem subgroup.prod_le_iff Modified src/group_theory/submonoid/operations.lean + theorem monoid_hom.mker_inl + theorem monoid_hom.mker_inr + theorem submonoid.le_prod_iff + theorem submonoid.prod_eq_bot_iff + theorem submonoid.prod_eq_top_iff + theorem submonoid.prod_le_iff Modified src/linear_algebra/prod.lean + theorem submodule.le_prod_iff + theorem submodule.prod_eq_bot_iff + theorem submodule.prod_eq_top_iff + theorem submodule.prod_le_iff Modified src/order/galois_connection.lean + theorem galois_connection.le_iff_le 2022-02-08 08:51:03 2b68801 refactor(number_theory/bernoulli_polynomials): improve names (#11805) Cleanup the bernoulli_polynomials file ESTIMATED CHANGES Modified src/number_theory/bernoulli_polynomials.lean - theorem bernoulli_poly.bernoulli_poly_eval_one - theorem bernoulli_poly.bernoulli_poly_eval_zero - theorem bernoulli_poly.bernoulli_poly_zero - theorem bernoulli_poly.exp_bernoulli_poly' - theorem bernoulli_poly.sum_bernoulli_poly - def bernoulli_poly - theorem bernoulli_poly_def + def polynomial.bernoulli + theorem polynomial.bernoulli_def + theorem polynomial.bernoulli_eval_one + theorem polynomial.bernoulli_eval_zero + theorem polynomial.bernoulli_generating_function + theorem polynomial.bernoulli_zero + theorem polynomial.sum_bernoulli 2022-02-08 04:53:51 1077eb3 feat(analysis/complex): a few lemmas about `dist` and `conj` (#11913) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.dist_conj_comm + theorem complex.dist_conj_conj + theorem complex.dist_conj_self + theorem complex.dist_self_conj 2022-02-07 20:25:46 36d3b68 feat(linear_algebra/basis): `basis.map_equiv_fun` (#11888) Add a `simp` lemma about the effect of `equiv_fun` for a basis obtained with `basis.map`. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.map_equiv_fun 2022-02-07 19:33:57 f94b0b3 style(analysis/special_functions/trigonometric/angle): make types of `sin` and `cos` explicit (#11902) Give the types of the results of `real.angle.sin` and `real.angle.cos` explicitly, as requested by @eric-wieser in #11887. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean +/- def real.angle.cos +/- def real.angle.sin 2022-02-07 19:33:56 9ceb3c2 feat(topology/sheaf_condition): connect sheaves on sites and on spaces without has_products (#11706) As an application of #11692, show that the is_sheaf_opens_le_cover sheaf condition on spaces is equivalent to is_sheaf on sites, thereby connecting sheaves on sites and on spaces without the value category has_products for the first time. (@justus-springer: you might want to take a look so as to determine whether and which of your work in #9609 should be deprecated.) This could be seen as a step towards refactoring sheaves on spaces through sheaves on sites. - [x] depends on: #11692 ESTIMATED CHANGES Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean + def Top.presheaf.generate_equivalence_opens_le + def Top.presheaf.is_limit_opens_le_equiv_generate₁ + def Top.presheaf.is_limit_opens_le_equiv_generate₂ + theorem Top.presheaf.is_sheaf_sites_iff_is_sheaf_opens_le_cover + def Top.presheaf.whisker_iso_map_generate_cocone Modified src/topology/sheaves/sheaf_condition/sites.lean + theorem Top.presheaf.covering_presieve_eq_self + def Top.presheaf.presieve_of_covering_aux 2022-02-07 17:28:22 436966c chore(data/finsupp/basic): generalize comap_mul_action (#11900) This new definition is propoitionally equal to the old one in the presence of `[group G]` (all the previous `lemma`s continue to apply), but generalizes to `[monoid G]`. This also removes `finsupp.comap_distrib_mul_action_self` as there is no need to have this as a separate definition. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean Modified src/data/finsupp/basic.lean - def finsupp.comap_distrib_mul_action_self +/- theorem finsupp.comap_smul_apply + theorem finsupp.comap_smul_def +/- theorem finsupp.comap_smul_single Modified src/group_theory/group_action/defs.lean + theorem comp_smul_left + theorem one_smul_eq_id 2022-02-07 17:28:21 7b91f00 feat(algebra/big_operators/basic): add multiset.prod_sum (#11885) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem multiset.prod_sum 2022-02-07 15:42:07 02c9d69 feat(analysis/inner_product_space/basic): `orthonormal.map_linear_isometry_equiv` (#11893) Add a variant of `orthonormal.comp_linear_isometry_equiv` for the case of an orthonormal basis mapped with `basis.map`. If in future we get a bundled type of orthonormal bases with its own `map` operation, this would no longer be a separate lemma, but until then it's useful. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem orthonormal.map_linear_isometry_equiv 2022-02-07 15:42:06 c61ea33 feat(analysis/complex/isometry): `rotation_symm` (#11891) Add a `simp` lemma that the inverse of `rotation` is rotation by the inverse angle. ESTIMATED CHANGES Modified src/analysis/complex/isometry.lean + theorem rotation_symm 2022-02-07 15:42:04 2364a09 feat(analysis/complex/circle): `exp_map_circle_neg` (#11889) Add the lemma `exp_map_circle_neg`, similar to other lemmas for `exp_map_circle` that are already present. ESTIMATED CHANGES Modified src/analysis/complex/circle.lean + theorem exp_map_circle_neg 2022-02-07 15:42:03 99215e3 feat(analysis/special_functions/trigonometric/angle): `sin`, `cos` (#11887) Add definitions of `sin` and `cos` that act on a `real.angle`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + def real.angle.cos + theorem real.angle.cos_coe + def real.angle.sin + theorem real.angle.sin_coe 2022-02-07 15:42:01 98ef84e feat(analysis/special_functions/trigonometric/angle): `induction_on` (#11886) Add `real.angle.induction_on`, for use in deducing results for `real.angle` from those for `ℝ`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean 2022-02-07 15:42:00 26179cc feat(data/list): add some lemmas. (#11879) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_length_eq_length Modified src/data/list/count.lean + theorem list.count_eq_length + theorem list.countp_eq_length 2022-02-07 15:41:58 dcbb59c feat(category_theory/limits): is_limit.exists_unique (#11875) Yet another restatement of the limit property which is occasionally useful. ESTIMATED CHANGES Modified src/category_theory/limits/has_limits.lean + theorem category_theory.limits.colimit.exists_unique + theorem category_theory.limits.limit.exists_unique Modified src/category_theory/limits/is_limit.lean + theorem category_theory.limits.is_colimit.exists_unique + def category_theory.limits.is_colimit.of_exists_unique + theorem category_theory.limits.is_limit.exists_unique + def category_theory.limits.is_limit.of_exists_unique Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.coequalizer.exists_unique + theorem category_theory.limits.cofork.is_colimit.exists_unique + def category_theory.limits.cofork.is_colimit.of_exists_unique + theorem category_theory.limits.equalizer.exists_unique + theorem category_theory.limits.fork.is_limit.exists_unique + def category_theory.limits.fork.is_limit.of_exists_unique 2022-02-07 15:41:57 556483f feat(category_theory/limits): (co)equalizers in the opposite category (#11874) ESTIMATED CHANGES Modified src/category_theory/limits/opposites.lean + theorem category_theory.limits.has_coequalizers_opposite + theorem category_theory.limits.has_equalizers_opposite 2022-02-07 15:41:55 7a2a546 feat(data/set/opposite): the opposite of a set (#11860) ESTIMATED CHANGES Added src/data/set/opposite.lean + theorem set.mem_op + theorem set.mem_unop + def set.op_equiv + theorem set.op_mem_op + theorem set.op_unop + theorem set.singleton_op + theorem set.singleton_op_unop + theorem set.singleton_unop + theorem set.singleton_unop_op + theorem set.unop_mem_unop + theorem set.unop_op 2022-02-07 15:41:54 0354e56 feat(order/complete_lattice): infi_le_iff (#11810) Add missing lemma `infi_le_iff {s : ι → α} : infi s ≤ a ↔ (∀ b, (∀ i, b ≤ s i) → b ≤ a)` Also take the opportunity to restate `Inf_le_iff` to restore consistency with `le_Sup_iff` that was broken in #10607 and move `le_supr_iff` close to `le_Sup_iff` and remove a couple of unneeded parentheses. ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- theorem Sup_le_iff + theorem infi_le_iff +/- theorem le_Sup_iff +/- theorem le_supr_iff +/- theorem supr_le_iff 2022-02-07 14:32:55 a2f3f55 chore(algebra/monoid_algebra): generalize lift_nc (#11881) The g argument does not need to be a bundled morphism here in the definition. Instead, we require it be a bundled morphism only in the downstream lemmas, using the new typeclass machinery ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean +/- def add_monoid_algebra.lift_nc +/- theorem add_monoid_algebra.lift_nc_mul +/- theorem add_monoid_algebra.lift_nc_one +/- theorem add_monoid_algebra.lift_nc_single +/- def monoid_algebra.lift_nc +/- theorem monoid_algebra.lift_nc_mul +/- theorem monoid_algebra.lift_nc_one +/- theorem monoid_algebra.lift_nc_single 2022-02-07 12:33:08 04b9d28 feat(data/pfun): Composition of partial functions (#11865) Define * `pfun.id`: The identity as a partial function * `pfun.comp`: Composition of partial functions * `pfun.to_subtype`: Restrict the codomain of a function to a subtype and make it partial ESTIMATED CHANGES Modified src/data/part.lean + theorem part.bind_to_option + theorem part.dom.of_bind + theorem part.elim_to_option + theorem part.mem_mk_iff +/- theorem part.some_inj + theorem part.some_injective + theorem part.to_option_eq_none_iff Modified src/data/pfun.lean + theorem part.bind_comp + theorem pfun.bind_apply + theorem pfun.coe_comp + theorem pfun.coe_id + theorem pfun.coe_injective + def pfun.comp + theorem pfun.comp_apply + theorem pfun.comp_assoc + theorem pfun.comp_id + theorem pfun.dom_coe + theorem pfun.dom_comp + theorem pfun.dom_to_subtype + theorem pfun.dom_to_subtype_apply_iff +/- def pfun.fn + theorem pfun.fn_apply + theorem pfun.id_apply + theorem pfun.id_comp +/- theorem pfun.mem_core +/- theorem pfun.mem_dom +/- theorem pfun.mem_preimage + theorem pfun.mem_to_subtype_iff + theorem pfun.preimage_comp + def pfun.to_subtype + theorem pfun.to_subtype_apply Modified src/data/subtype.lean + theorem exists_eq_subtype_mk_iff + theorem exists_subtype_mk_eq_iff 2022-02-07 11:17:01 0090891 chore(model_theory/*): Split up model_theory/basic (#11846) Splits model_theory/basic into separate files: basic, substructures, terms_and_formulas, definability, quotients Improves documentation throughout ESTIMATED CHANGES Modified src/model_theory/basic.lean - def first_order.language.bd_not - def first_order.language.bounded_formula.relabel - inductive first_order.language.bounded_formula - theorem first_order.language.closed_under.Inf - theorem first_order.language.closed_under.inf - theorem first_order.language.closed_under.inter - def first_order.language.closed_under - theorem first_order.language.closed_under_univ - theorem first_order.language.definable_set.coe_bot - theorem first_order.language.definable_set.coe_compl - theorem first_order.language.definable_set.coe_inf - theorem first_order.language.definable_set.coe_sup - theorem first_order.language.definable_set.coe_top - theorem first_order.language.definable_set.le_iff - theorem first_order.language.definable_set.mem_compl - theorem first_order.language.definable_set.mem_inf - theorem first_order.language.definable_set.mem_sup - theorem first_order.language.definable_set.mem_top - theorem first_order.language.definable_set.not_mem_bot - def first_order.language.definable_set - theorem first_order.language.embedding.realize_term - theorem first_order.language.equiv.realize_bounded_formula - theorem first_order.language.equiv.realize_term - def first_order.language.formula.equal - def first_order.language.formula.graph - def first_order.language.formula - theorem first_order.language.fun_map_quotient_mk - def first_order.language.hom.eq_locus - theorem first_order.language.hom.eq_of_eq_on_dense - theorem first_order.language.hom.eq_of_eq_on_top - theorem first_order.language.hom.eq_on_closure - theorem first_order.language.hom.realize_term - theorem first_order.language.is_definable.compl - theorem first_order.language.is_definable.inter - theorem first_order.language.is_definable.sdiff - theorem first_order.language.is_definable.union - structure first_order.language.is_definable - theorem first_order.language.is_definable_empty - theorem first_order.language.is_definable_univ - def first_order.language.realize_bounded_formula - theorem first_order.language.realize_bounded_formula_relabel - theorem first_order.language.realize_bounded_formula_top - theorem first_order.language.realize_equal - def first_order.language.realize_formula - theorem first_order.language.realize_formula_equiv - theorem first_order.language.realize_formula_relabel - theorem first_order.language.realize_graph - theorem first_order.language.realize_not - def first_order.language.realize_sentence - def first_order.language.realize_term - theorem first_order.language.realize_term_quotient_mk - theorem first_order.language.realize_term_relabel - theorem first_order.language.realize_term_substructure - def first_order.language.sentence - theorem first_order.language.substructure.apply_coe_mem_map - theorem first_order.language.substructure.closed - def first_order.language.substructure.closure - theorem first_order.language.substructure.closure_Union - theorem first_order.language.substructure.closure_empty - theorem first_order.language.substructure.closure_eq - theorem first_order.language.substructure.closure_eq_of_le - theorem first_order.language.substructure.closure_induction' - theorem first_order.language.substructure.closure_induction - theorem first_order.language.substructure.closure_le - theorem first_order.language.substructure.closure_mono - theorem first_order.language.substructure.closure_union - theorem first_order.language.substructure.closure_univ - theorem first_order.language.substructure.coe_Inf - theorem first_order.language.substructure.coe_copy - theorem first_order.language.substructure.coe_inf - theorem first_order.language.substructure.coe_infi - theorem first_order.language.substructure.coe_subtype - theorem first_order.language.substructure.coe_top - theorem first_order.language.substructure.coe_top_equiv - def first_order.language.substructure.comap - theorem first_order.language.substructure.comap_comap - theorem first_order.language.substructure.comap_id - theorem first_order.language.substructure.comap_inf - theorem first_order.language.substructure.comap_inf_map_of_injective - theorem first_order.language.substructure.comap_infi - theorem first_order.language.substructure.comap_infi_map_of_injective - theorem first_order.language.substructure.comap_injective_of_surjective - theorem first_order.language.substructure.comap_le_comap_iff_of_surjective - theorem first_order.language.substructure.comap_map_comap - theorem first_order.language.substructure.comap_map_eq_of_injective - theorem first_order.language.substructure.comap_strict_mono_of_surjective - theorem first_order.language.substructure.comap_sup_map_of_injective - theorem first_order.language.substructure.comap_supr_map_of_injective - theorem first_order.language.substructure.comap_surjective_of_injective - theorem first_order.language.substructure.comap_top - theorem first_order.language.substructure.const_mem - theorem first_order.language.substructure.copy_eq - theorem first_order.language.substructure.dense_induction - theorem first_order.language.substructure.ext - theorem first_order.language.substructure.gc_map_comap - def first_order.language.substructure.gci_map_comap - def first_order.language.substructure.gi_map_comap - theorem first_order.language.substructure.le_comap_map - theorem first_order.language.substructure.le_comap_of_map_le - def first_order.language.substructure.map - theorem first_order.language.substructure.map_bot - theorem first_order.language.substructure.map_comap_eq_of_surjective - theorem first_order.language.substructure.map_comap_le - theorem first_order.language.substructure.map_comap_map - theorem first_order.language.substructure.map_id - theorem first_order.language.substructure.map_inf_comap_of_surjective - theorem first_order.language.substructure.map_infi_comap_of_surjective - theorem first_order.language.substructure.map_injective_of_injective - theorem first_order.language.substructure.map_le_iff_le_comap - theorem first_order.language.substructure.map_le_map_iff_of_injective - theorem first_order.language.substructure.map_le_of_le_comap - theorem first_order.language.substructure.map_map - theorem first_order.language.substructure.map_strict_mono_of_injective - theorem first_order.language.substructure.map_sup - theorem first_order.language.substructure.map_sup_comap_of_surjective - theorem first_order.language.substructure.map_supr - theorem first_order.language.substructure.map_supr_comap_of_surjective - theorem first_order.language.substructure.map_surjective_of_surjective - theorem first_order.language.substructure.mem_Inf - theorem first_order.language.substructure.mem_carrier - theorem first_order.language.substructure.mem_closure - theorem first_order.language.substructure.mem_comap - theorem first_order.language.substructure.mem_inf - theorem first_order.language.substructure.mem_infi - theorem first_order.language.substructure.mem_map - theorem first_order.language.substructure.mem_map_of_mem - theorem first_order.language.substructure.mem_top - theorem first_order.language.substructure.monotone_comap - theorem first_order.language.substructure.monotone_map - theorem first_order.language.substructure.not_mem_of_not_mem_closure - def first_order.language.substructure.simps.coe - theorem first_order.language.substructure.subset_closure - def first_order.language.substructure.subtype - def first_order.language.substructure.top_equiv - structure first_order.language.substructure - def first_order.language.term.relabel - inductive first_order.language.term - def first_order.language.theory Added src/model_theory/definability.lean + theorem first_order.language.definable_set.coe_bot + theorem first_order.language.definable_set.coe_compl + theorem first_order.language.definable_set.coe_inf + theorem first_order.language.definable_set.coe_sup + theorem first_order.language.definable_set.coe_top + theorem first_order.language.definable_set.le_iff + theorem first_order.language.definable_set.mem_compl + theorem first_order.language.definable_set.mem_inf + theorem first_order.language.definable_set.mem_sup + theorem first_order.language.definable_set.mem_top + theorem first_order.language.definable_set.not_mem_bot + def first_order.language.definable_set + theorem first_order.language.is_definable.compl + theorem first_order.language.is_definable.inter + theorem first_order.language.is_definable.sdiff + theorem first_order.language.is_definable.union + structure first_order.language.is_definable + theorem first_order.language.is_definable_empty + theorem first_order.language.is_definable_univ Modified src/model_theory/elementary_maps.lean + theorem first_order.language.realize_bounded_formula_top + theorem first_order.language.realize_term_substructure Added src/model_theory/quotients.lean + theorem first_order.language.fun_map_quotient_mk + theorem first_order.language.realize_term_quotient_mk Added src/model_theory/substructures.lean + theorem first_order.language.closed_under.Inf + theorem first_order.language.closed_under.inf + theorem first_order.language.closed_under.inter + def first_order.language.closed_under + theorem first_order.language.closed_under_univ + def first_order.language.hom.eq_locus + theorem first_order.language.hom.eq_of_eq_on_dense + theorem first_order.language.hom.eq_of_eq_on_top + theorem first_order.language.hom.eq_on_closure + theorem first_order.language.substructure.apply_coe_mem_map + theorem first_order.language.substructure.closed + def first_order.language.substructure.closure + theorem first_order.language.substructure.closure_Union + theorem first_order.language.substructure.closure_empty + theorem first_order.language.substructure.closure_eq + theorem first_order.language.substructure.closure_eq_of_le + theorem first_order.language.substructure.closure_induction' + theorem first_order.language.substructure.closure_induction + theorem first_order.language.substructure.closure_le + theorem first_order.language.substructure.closure_mono + theorem first_order.language.substructure.closure_union + theorem first_order.language.substructure.closure_univ + theorem first_order.language.substructure.coe_Inf + theorem first_order.language.substructure.coe_copy + theorem first_order.language.substructure.coe_inf + theorem first_order.language.substructure.coe_infi + theorem first_order.language.substructure.coe_subtype + theorem first_order.language.substructure.coe_top + theorem first_order.language.substructure.coe_top_equiv + def first_order.language.substructure.comap + theorem first_order.language.substructure.comap_comap + theorem first_order.language.substructure.comap_id + theorem first_order.language.substructure.comap_inf + theorem first_order.language.substructure.comap_inf_map_of_injective + theorem first_order.language.substructure.comap_infi + theorem first_order.language.substructure.comap_infi_map_of_injective + theorem first_order.language.substructure.comap_injective_of_surjective + theorem first_order.language.substructure.comap_le_comap_iff_of_surjective + theorem first_order.language.substructure.comap_map_comap + theorem first_order.language.substructure.comap_map_eq_of_injective + theorem first_order.language.substructure.comap_strict_mono_of_surjective + theorem first_order.language.substructure.comap_sup_map_of_injective + theorem first_order.language.substructure.comap_supr_map_of_injective + theorem first_order.language.substructure.comap_surjective_of_injective + theorem first_order.language.substructure.comap_top + theorem first_order.language.substructure.const_mem + theorem first_order.language.substructure.copy_eq + theorem first_order.language.substructure.dense_induction + theorem first_order.language.substructure.ext + theorem first_order.language.substructure.gc_map_comap + def first_order.language.substructure.gci_map_comap + def first_order.language.substructure.gi_map_comap + theorem first_order.language.substructure.le_comap_map + theorem first_order.language.substructure.le_comap_of_map_le + def first_order.language.substructure.map + theorem first_order.language.substructure.map_bot + theorem first_order.language.substructure.map_comap_eq_of_surjective + theorem first_order.language.substructure.map_comap_le + theorem first_order.language.substructure.map_comap_map + theorem first_order.language.substructure.map_id + theorem first_order.language.substructure.map_inf_comap_of_surjective + theorem first_order.language.substructure.map_infi_comap_of_surjective + theorem first_order.language.substructure.map_injective_of_injective + theorem first_order.language.substructure.map_le_iff_le_comap + theorem first_order.language.substructure.map_le_map_iff_of_injective + theorem first_order.language.substructure.map_le_of_le_comap + theorem first_order.language.substructure.map_map + theorem first_order.language.substructure.map_strict_mono_of_injective + theorem first_order.language.substructure.map_sup + theorem first_order.language.substructure.map_sup_comap_of_surjective + theorem first_order.language.substructure.map_supr + theorem first_order.language.substructure.map_supr_comap_of_surjective + theorem first_order.language.substructure.map_surjective_of_surjective + theorem first_order.language.substructure.mem_Inf + theorem first_order.language.substructure.mem_carrier + theorem first_order.language.substructure.mem_closure + theorem first_order.language.substructure.mem_comap + theorem first_order.language.substructure.mem_inf + theorem first_order.language.substructure.mem_infi + theorem first_order.language.substructure.mem_map + theorem first_order.language.substructure.mem_map_of_mem + theorem first_order.language.substructure.mem_top + theorem first_order.language.substructure.monotone_comap + theorem first_order.language.substructure.monotone_map + theorem first_order.language.substructure.not_mem_of_not_mem_closure + def first_order.language.substructure.simps.coe + theorem first_order.language.substructure.subset_closure + def first_order.language.substructure.subtype + def first_order.language.substructure.top_equiv + structure first_order.language.substructure Added src/model_theory/terms_and_formulas.lean + def first_order.language.bd_not + def first_order.language.bounded_formula.relabel + inductive first_order.language.bounded_formula + theorem first_order.language.embedding.realize_term + theorem first_order.language.equiv.realize_bounded_formula + theorem first_order.language.equiv.realize_term + def first_order.language.formula.equal + def first_order.language.formula.graph + def first_order.language.formula + theorem first_order.language.hom.realize_term + def first_order.language.realize_bounded_formula + theorem first_order.language.realize_bounded_formula_relabel + theorem first_order.language.realize_equal + def first_order.language.realize_formula + theorem first_order.language.realize_formula_equiv + theorem first_order.language.realize_formula_relabel + theorem first_order.language.realize_graph + theorem first_order.language.realize_not + def first_order.language.realize_sentence + def first_order.language.realize_term + theorem first_order.language.realize_term_relabel + def first_order.language.sentence + def first_order.language.term.relabel + inductive first_order.language.term + def first_order.language.theory 2022-02-07 10:17:41 3c70566 feat(analysis/normed_space/linear_isometry): `symm_trans` (#11892) Add a `simp` lemma `linear_isometry_equiv.symm_trans`, like `coe_symm_trans` but without a coercion involved. `coe_symm_trans` can then be proved by `simp`, so stops being a `simp` lemma itself. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean +/- theorem linear_isometry_equiv.coe_symm_trans + theorem linear_isometry_equiv.symm_trans 2022-02-07 08:33:33 b1b09eb refactor(data/quot): Make more `setoid` arguments implicit (#11824) Currently, not all of the `quotient` API can be used with non-instance setoids. This fixes it by making a few `setoid` arguments explicit rather than instances. ESTIMATED CHANGES Modified src/data/quot.lean +/- theorem quotient.out_equiv_out +/- theorem quotient.out_inj Modified src/group_theory/schur_zassenhaus.lean 2022-02-07 03:57:45 25297ec feat(analysis/complex/basic): `conj_lie_symm` (#11890) Add a `simp` lemma that the inverse of `conj_lie` is `conj_lie`. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.conj_lie_symm 2022-02-06 19:03:43 e18972b feat(set_theory/ordinal_arithmetic): Suprema of empty families (#11872) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.blsub_eq_zero + theorem ordinal.blsub_zero + theorem ordinal.bsup_zero + theorem ordinal.lsub_empty - theorem ordinal.lsub_eq_zero + theorem ordinal.sup_empty 2022-02-06 07:25:14 24ebc5c feat(group_theory/sylow): the cardinality of a sylow group (#11776) ESTIMATED CHANGES Modified src/algebra/is_prime_pow.lean Modified src/data/nat/factorization.lean + theorem nat.prime.pow_dvd_iff_dvd_pow_factorization + theorem nat.prime.pow_dvd_iff_le_factorization - theorem nat.prime_pow_dvd_iff_le_factorization Modified src/group_theory/sylow.lean + theorem sylow.card_eq_multiplicity 2022-02-06 01:53:58 4148990 feat(set_theory/ordinal_arithmetic): Suprema and least strict upper bounds of constant families (#11862) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.blsub_const + theorem ordinal.bsup_const + theorem ordinal.lsub_const + theorem ordinal.sup_const 2022-02-05 21:22:39 6787a8d feat(category_theory): a hierarchy of balanced categories (#11856) ESTIMATED CHANGES Modified src/algebra/category/Group/abelian.lean Modified src/algebra/category/Module/abelian.lean Modified src/category_theory/abelian/basic.lean - theorem category_theory.abelian.is_iso_of_mono_of_epi - theorem category_theory.abelian.strong_epi_of_epi - theorem category_theory.abelian.strong_mono_of_mono Modified src/category_theory/abelian/non_preadditive.lean - theorem category_theory.non_preadditive_abelian.is_iso_of_mono_of_epi - theorem category_theory.non_preadditive_abelian.strong_epi_of_epi Modified src/category_theory/abelian/opposite.lean Added src/category_theory/balanced.lean + theorem category_theory.is_iso_iff_mono_and_epi + theorem category_theory.is_iso_of_mono_of_epi Modified src/category_theory/epi_mono.lean + def category_theory.split_epi_of_epi + def category_theory.split_mono_of_mono Modified src/category_theory/limits/shapes/normal_mono.lean + def category_theory.normal_epi_of_epi + def category_theory.normal_mono_of_mono Modified src/category_theory/limits/shapes/regular_mono.lean + def category_theory.regular_epi_of_epi + def category_theory.regular_mono_of_mono Modified src/category_theory/limits/shapes/strong_epi.lean + theorem category_theory.strong_epi_of_epi + theorem category_theory.strong_mono_of_mono Modified src/category_theory/simple.lean Modified src/category_theory/types.lean + theorem category_theory.injective_of_mono + theorem category_theory.surjective_of_epi 2022-02-05 19:40:29 0f9c153 feat(algebra/cubic_discriminant): basics of cubic polynomials and their discriminants (#11483) ESTIMATED CHANGES Added src/algebra/cubic_discriminant.lean + theorem cubic.a_of_eq + theorem cubic.b_eq_three_roots + theorem cubic.b_of_eq + theorem cubic.c_eq_three_roots + theorem cubic.c_of_eq + theorem cubic.card_roots_le + theorem cubic.card_roots_of_disc_ne_zero + theorem cubic.coeff_gt_three + theorem cubic.coeff_one + theorem cubic.coeff_three + theorem cubic.coeff_two + theorem cubic.coeff_zero + theorem cubic.d_eq_three_roots + theorem cubic.d_of_eq + theorem cubic.degree + theorem cubic.degree_of_a_b_c_eq_zero + theorem cubic.degree_of_a_b_eq_zero + theorem cubic.degree_of_a_eq_zero + theorem cubic.degree_of_zero + def cubic.disc + theorem cubic.disc_eq_prod_three_roots + theorem cubic.disc_ne_zero_iff_roots_ne + theorem cubic.disc_ne_zero_iff_roots_nodup + theorem cubic.eq_prod_three_roots + theorem cubic.eq_sum_three_roots + theorem cubic.eq_zero_iff + def cubic.equiv + theorem cubic.leading_coeff + theorem cubic.leading_coeff_of_a_b_c_eq_zero + theorem cubic.leading_coeff_of_a_b_eq_zero + theorem cubic.leading_coeff_of_a_eq_zero + def cubic.map + theorem cubic.map_roots + theorem cubic.map_to_poly + theorem cubic.mem_roots_iff + theorem cubic.ne_zero + theorem cubic.ne_zero_of_a_ne_zero + theorem cubic.ne_zero_of_b_ne_zero + theorem cubic.ne_zero_of_c_ne_zero + theorem cubic.ne_zero_of_d_ne_zero + theorem cubic.of_a_b_c_eq_zero + theorem cubic.of_a_b_eq_zero + theorem cubic.of_a_eq_zero + theorem cubic.of_zero + def cubic.roots + theorem cubic.splits_iff_card_roots + theorem cubic.splits_iff_roots_eq_three + def cubic.to_poly + theorem cubic.to_poly_injective + theorem cubic.zero + structure cubic Modified src/data/polynomial/coeff.lean +/- theorem polynomial.coeff_C_mul_X + theorem polynomial.coeff_C_mul_X_pow Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.degree_C_lt + theorem polynomial.degree_C_lt_degree_C_mul_X + theorem polynomial.degree_C_mul_X + theorem polynomial.degree_add_le_of_degree_le + theorem polynomial.degree_cubic + theorem polynomial.degree_cubic_le + theorem polynomial.degree_cubic_lt + theorem polynomial.degree_linear + theorem polynomial.degree_linear_le + theorem polynomial.degree_linear_lt + theorem polynomial.degree_linear_lt_degree_C_mul_X_sq + theorem polynomial.degree_quadratic + theorem polynomial.degree_quadratic_le + theorem polynomial.degree_quadratic_lt + theorem polynomial.degree_quadratic_lt_degree_C_mul_X_cb + theorem polynomial.leading_coeff_C_mul_X - theorem polynomial.leading_coeff_C_mul_X_add_C + theorem polynomial.leading_coeff_cubic + theorem polynomial.leading_coeff_linear + theorem polynomial.leading_coeff_quadratic + theorem polynomial.nat_degree_add_le_of_degree_le + theorem polynomial.nat_degree_cubic + theorem polynomial.nat_degree_cubic_le + theorem polynomial.nat_degree_linear + theorem polynomial.nat_degree_linear_le + theorem polynomial.nat_degree_quadratic + theorem polynomial.nat_degree_quadratic_le Modified src/data/polynomial/eval.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/power_series/basic.lean - theorem power_series.coeff_C_mul_X + theorem power_series.coeff_C_mul_X_pow 2022-02-05 17:59:51 39b1262 feat(algebra/lie/nilpotent): nilpotency of Lie modules depends only on the Lie subalgebra of linear endomorphisms (#11853) ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean + theorem lie_algebra.is_nilpotent_range_ad_iff + theorem lie_hom.is_nilpotent_range + theorem lie_module.coe_lcs_range_to_endomorphism_eq + theorem lie_module.is_nilpotent_range_to_endomorphism_iff 2022-02-05 17:59:49 b9d19ed feat(algebra/lie/nilpotent): nilpotency of Lie modules is preserved under surjective morphisms (#11852) ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean + theorem equiv.lie_module_is_nilpotent_iff + theorem function.surjective.lie_module_is_nilpotent + theorem function.surjective.lie_module_lcs_map_eq + theorem lie_module.is_nilpotent_of_top_iff 2022-02-05 17:59:47 9fcd1f2 feat(algebra/lie/nilpotent): add lemma `lie_module.coe_lower_central_series_ideal_le` (#11851) ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean + theorem lie_module.coe_lower_central_series_ideal_le 2022-02-05 17:31:04 df7c217 feat(algebra/lie/nilpotent): add definition `lie_ideal.lcs` (#11854) This is extremely useful when proving a generalised version of Engel's lemma. ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean + theorem lie_ideal.coe_lcs_eq + def lie_ideal.lcs + theorem lie_ideal.lcs_succ + theorem lie_ideal.lcs_top + theorem lie_ideal.lcs_zero 2022-02-05 09:52:03 9969321 feat(measure_theory/probability_mass_function): Lemmas connecting `pmf.support` and `pmf.to_measure` (#11842) Add lemmas relating the support of a `pmf` to the measures of sets under the induced measure. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/basic.lean +/- theorem pmf.to_measure_apply' +/- theorem pmf.to_measure_apply + theorem pmf.to_measure_apply_eq_of_inter_support_eq + theorem pmf.to_measure_apply_eq_one_iff +/- theorem pmf.to_measure_apply_eq_to_outer_measure_apply +/- theorem pmf.to_measure_apply_finset +/- theorem pmf.to_measure_apply_fintype + theorem pmf.to_measure_apply_inter_support +/- theorem pmf.to_measure_apply_of_finite + theorem pmf.to_measure_mono +/- theorem pmf.to_outer_measure_apply' +/- theorem pmf.to_outer_measure_apply + theorem pmf.to_outer_measure_apply_eq_of_inter_support_eq + theorem pmf.to_outer_measure_apply_eq_one_iff +/- theorem pmf.to_outer_measure_apply_eq_zero_iff +/- theorem pmf.to_outer_measure_apply_finset +/- theorem pmf.to_outer_measure_apply_fintype + theorem pmf.to_outer_measure_apply_inter_support +/- theorem pmf.to_outer_measure_apply_le_to_measure_apply + theorem pmf.to_outer_measure_mono 2022-02-05 09:52:01 612ca40 feat(data/finset): erase is empty iff (#11838) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.erase_eq_empty_iff 2022-02-05 09:52:00 31f5688 refactor(ring_theory/valuation/basic): `fun_like` design for `valuation` (#11830) Introduce `valuation_class`, the companion typeclass to `valuation`. Deprecate lemmas. Rename the field from `map_add'` to `map_add_le_max'` to avoid confusion with the eponymous field from `add_hom`. ESTIMATED CHANGES Modified src/ring_theory/perfection.lean Modified src/ring_theory/valuation/basic.lean +/- theorem valuation.coe_coe +/- theorem valuation.ext +/- theorem valuation.ext_iff +/- theorem valuation.map_add + theorem valuation.to_fun_eq_coe Modified src/topology/algebra/valued_field.lean 2022-02-05 09:51:59 e78563c feat(ring_theory/power_series): reindex trunc of a power series to truncate below index n (#10891) Currently the definition of truncation of a univariate and multivariate power series truncates above the index, that is if we truncate a power series $\sum a_i x^i$ at index `n` the term $a_n x^n$ is included. This makes it impossible to truncate the first monomial $x^0$ away as it is included with the smallest possible value of n, which causes some issues in applications (imagine if you could only pop elements of lists if the result was non-empty!). ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean +/- theorem mv_power_series.trunc_C +/- theorem mv_power_series.trunc_one +/- theorem power_series.trunc_C +/- theorem power_series.trunc_one 2022-02-05 08:16:33 6b4e269 chore(data/fintype/basic): rename some instances (#11845) Rename instances from `infinite.multiset.infinite` etc to `multiset.infinite` etc; rename `infinite.set.infinite` to `infinite.set` to avoid name clash. Also add `option.infinite`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2022-02-05 05:19:33 b0d9761 feat(ring_theory/hahn_series): add a map to power series and dickson's lemma (#11836) Add a ring equivalence between `hahn_series` and `mv_power_series` as discussed in https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/induction.20on.20an.20index.20type/near/269463528. This required adding some partially well ordered lemmas that it seems go under the name Dickson's lemma. This may be independently useful, a constructive version of this has been used in other provers, especially in connection to Grobner basis and commutative algebra type material. ESTIMATED CHANGES Added src/data/finsupp/pwo.lean + theorem finsupp.is_pwo Modified src/order/well_founded_set.lean + theorem pi.is_pwo + theorem set.is_pwo.mono Modified src/ring_theory/hahn_series.lean + theorem hahn_series.coeff_to_mv_power_series + theorem hahn_series.coeff_to_mv_power_series_symm + def hahn_series.to_mv_power_series 2022-02-04 23:34:38 bd7d034 feat(ring_theory/nilpotent): add lemma `module.End.is_nilpotent_mapq` (#11831) Together with the other lemmas necessary for its proof. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.le_comap_pow_of_le_comap Modified src/linear_algebra/quotient.lean + theorem submodule.mapq_comp + theorem submodule.mapq_id + theorem submodule.mapq_pow + theorem submodule.mapq_zero Modified src/ring_theory/nilpotent.lean + theorem module.End.is_nilpotent.mapq 2022-02-04 22:50:46 b905eb6 fix(group_theory/nilpotent): don’t unnecessarily `open_locale classical` (#11779) h/t @pechersky for noticing ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean 2022-02-04 21:12:18 b3b32c8 feat(algebra/lie/quotient): first isomorphism theorem for morphisms of Lie algebras (#11826) ESTIMATED CHANGES Modified src/algebra/lie/quotient.lean 2022-02-04 21:12:17 292bf34 feat(algebra/lie/ideal_operations): add lemma `lie_ideal_oper_eq_linear_span'` (#11823) It is useful to have this alternate form in situations where we have a hypothesis like `h : I = J` since we can then rewrite using `h` after applying this lemma. An (admittedly brief) scan of the existing applications of `lie_ideal_oper_eq_linear_span` indicates that it's worth keeping both forms for convenience but I'm happy to dig deeper into this if requested. ESTIMATED CHANGES Modified src/algebra/lie/ideal_operations.lean + theorem lie_submodule.lie_ideal_oper_eq_linear_span' 2022-02-04 21:12:16 fa20482 feat(linear_algebra/basic): add minor lemmas, tweak `simp` attributes (#11822) ESTIMATED CHANGES Modified src/algebra/module/submodule.lean +/- theorem submodule.coe_subtype +/- theorem submodule.subtype_apply Modified src/linear_algebra/basic.lean +/- theorem submodule.comap_id + theorem submodule.map_subtype_range_of_le + theorem submodule.map_subtype_span_singleton +/- theorem submodule.span_singleton_le_iff_mem 2022-02-04 21:12:15 247504c feat(algebra/lie/cartan_subalgebra): add lemma `lie_subalgebra.exists_nested_lie_ideal_of_le_normalizer` (#11820) ESTIMATED CHANGES Modified src/algebra/lie/cartan_subalgebra.lean + theorem lie_subalgebra.exists_nested_lie_ideal_of_le_normalizer +/- theorem lie_subalgebra.ideal_in_normalizer 2022-02-04 21:12:13 a2fd0bd feat(algebra/lie/basic): define pull back of a Lie module along a morphism of Lie algebras. (#11819) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + def lie_module.comp_lie_hom + def lie_ring_module.comp_lie_hom + theorem lie_ring_module.comp_lie_hom_apply 2022-02-04 21:12:12 2e7efe9 refactor(set_theory/ordinal_arithmetic): Change `α → Prop` to `set α` (#11816) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.is_normal.le_set' +/- theorem ordinal.is_normal.le_set +/- theorem ordinal.is_normal.sup 2022-02-04 21:12:11 a741585 chore(algebra/group): make `coe_norm_subgroup` and `submodule.norm_coe` consistent (#11427) The `simp` lemmas for norms in a subgroup and in a submodule disagreed: the first inserted a coercion to the larger group, the second deleted the coercion. Currently this is not a big deal, but it will become a real issue when defining `add_subgroup_class`. I want to make them consistent by pointing them in the same direction. The consensus in the [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Simp.20normal.20form.3A.20coe_norm_subgroup.2C.20submodule.2Enorm_coe) suggests `simp` should insert a coercion here, so I went with that. After making the changes, a few places need extra `simp [submodule.coe_norm]` on the local hypotheses, but nothing major. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem add_subgroup.coe_norm + theorem add_subgroup.norm_coe - theorem coe_norm_subgroup + theorem submodule.coe_norm +/- theorem submodule.norm_coe - theorem submodule.norm_mk Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/function/simple_func_dense.lean 2022-02-04 20:39:46 c3273aa feat(algebra/lie/subalgebra): add `lie_subalgebra.equiv_of_le` and `lie_subalgebra.equiv_range_of_injective` (#11828) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Modified src/algebra/lie/subalgebra.lean + theorem lie_hom.equiv_range_of_injective_apply + theorem lie_subalgebra.coe_of_le + theorem lie_subalgebra.equiv_of_le_apply 2022-02-04 18:53:26 3c00e5d fix(algebra/Module/colimits): Change `comm_ring` to `ring`. (#11837) ... despite the well-known fact that all rings are commutative. ESTIMATED CHANGES Modified src/algebra/category/Module/colimits.lean 2022-02-04 18:53:25 5b3cd4a refactor(analysis/normed_space/add_torsor): Kill `seminormed_add_torsor` (#11795) Delete `normed_add_torsor` in favor of the equivalent `seminormed_add_torsor` and rename `seminormed_add_torsor` to `normed_add_torsor`. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean +/- theorem dist_eq_norm_vsub Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/geometry/euclidean/basic.lean 2022-02-04 18:53:24 aaaeeae feat(category_theory/category/{Pointed,Bipointed}): The categories of pointed/bipointed types (#11777) Define * `Pointed`, the category of pointed types * `Bipointed`, the category of bipointed types * the forgetful functors from `Bipointed` to `Pointed` and from `Pointed` to `Type*` * `Type_to_Pointed`, the functor from `Type*` to `Pointed` induced by `option` * `Bipointed.swap_equiv` the equivalence between `Bipointed` and itself induced by `prod.swap` both ways. ESTIMATED CHANGES Added src/category_theory/category/Bipointed.lean + def Bipointed.hom.comp + def Bipointed.hom.id + def Bipointed.of + def Bipointed.swap + def Bipointed.swap_equiv + theorem Bipointed.swap_equiv_symm + structure Bipointed + def Bipointed_to_Pointed_fst + theorem Bipointed_to_Pointed_fst_comp_forget + def Bipointed_to_Pointed_snd + theorem Bipointed_to_Pointed_snd_comp_forget + def Pointed_to_Bipointed_fst + def Pointed_to_Bipointed_fst_Bipointed_to_Pointed_fst_adjunction + theorem Pointed_to_Bipointed_fst_comp + def Pointed_to_Bipointed_snd + def Pointed_to_Bipointed_snd_Bipointed_to_Pointed_snd_adjunction + theorem Pointed_to_Bipointed_snd_comp + theorem swap_comp_Bipointed_to_Pointed_fst + theorem swap_comp_Bipointed_to_Pointed_snd Added src/category_theory/category/Pointed.lean + def Pointed.hom.comp + def Pointed.hom.id + def Pointed.of + structure Pointed + def Type_to_Pointed + def Type_to_Pointed_forget_adjunction 2022-02-04 17:10:26 cedcf07 chore(*): update to lean 3.39.0c (#11821) ESTIMATED CHANGES Modified leanpkg.toml Modified src/tactic/rewrite.lean + def tactic.id_tag.assoc_proof 2022-02-04 08:58:31 049a1b2 feat(group_theory/subgroup/basic): add pi subgroups (#11801) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.coe_pi + theorem subgroup.mem_pi + def subgroup.pi + theorem subgroup.pi_bot + theorem subgroup.pi_empty + theorem subgroup.pi_top + def submonoid.pi 2022-02-04 06:54:32 46c48d7 feat(logic/basic): add projection notation for iff (#11803) ESTIMATED CHANGES Modified src/data/set/basic.lean Modified src/logic/basic.lean +/- theorem and_congr_left' +/- theorem and_congr_right' + theorem iff.and + theorem iff.iff + theorem iff.imp + theorem iff.not + theorem iff.or +/- theorem or_congr_left +/- theorem or_congr_right Modified src/tactic/lint/misc.lean 2022-02-04 02:33:18 553cb9c fix(algebra/category/Module/colimits): Add some additional instances with permuted universe parameters (#11812) ESTIMATED CHANGES Modified src/algebra/category/Module/colimits.lean 2022-02-04 02:33:17 4cfc30e chore(*): use le_rfl instead of le_refl _ (#11797) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/big_operators/order.lean Modified src/algebra/direct_limit.lean Modified src/algebra/indicator_function.lean Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/submodule.lean Modified src/algebra/order/archimedean.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/pi.lean Modified src/algebra/order/ring.lean Modified src/algebra/order/with_zero.lean Modified src/algebra/tropical/basic.lean Modified src/algebraic_topology/simplex_category.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed/group/infinite_sum.lean Modified src/analysis/normed/group/quotient.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/sites/closed.lean Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/subobject/basic.lean Modified src/combinatorics/composition.lean Modified src/computability/language.lean Modified src/computability/partrec_code.lean Modified src/computability/turing_machine.lean Modified src/control/lawful_fix.lean Modified src/data/W/basic.lean Modified src/data/W/cardinal.lean Modified src/data/analysis/filter.lean Modified src/data/buffer/parser/basic.lean Modified src/data/complex/exponential.lean Modified src/data/finset/lattice.lean Modified src/data/fintype/basic.lean Modified src/data/int/basic.lean Modified src/data/list/min_max.lean Modified src/data/list/rotate.lean Modified src/data/multiset/finset_ops.lean Modified src/data/multiset/lattice.lean Modified src/data/mv_polynomial/cardinal.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean Modified src/data/nat/choose/basic.lean Modified src/data/nat/enat.lean Modified src/data/nat/factorial/basic.lean Modified src/data/nat/lattice.lean Modified src/data/nat/pow.lean Modified src/data/nat/prime.lean Modified src/data/ordmap/ordnode.lean Modified src/data/ordmap/ordset.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/inductions.lean Modified src/data/polynomial/reverse.lean Modified src/data/rbtree/basic.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/real/ennreal.lean Modified src/data/real/ereal.lean Modified src/data/real/pi/bounds.lean Modified src/data/real/pi/wallis.lean Modified src/data/real/sqrt.lean Modified src/data/set/intervals/disjoint.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/galois.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/splitting_field.lean Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/group_theory/perm/support.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/isomorphisms.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/quotient.lean Modified src/linear_algebra/std_basis.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/giry_monad.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/measure_theory/pi_system.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/padics/hensel.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/number_theory/primorial.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/order/atoms.lean Modified src/order/bounded_order.lean Modified src/order/closure.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/filter/extr.lean Modified src/order/filter/indicator_function.lean Modified src/order/filter/lift.lean Modified src/order/filter/ultrafilter.lean Modified src/order/galois_connection.lean Modified src/order/lattice.lean Modified src/order/liminf_limsup.lean Modified src/order/modular_lattice.lean Modified src/order/monotone.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/partial_sups.lean Modified src/order/pilex.lean Modified src/order/well_founded_set.lean Modified src/order/zorn.lean Modified src/probability_theory/stopping.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/nakayama.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/basic.lean +/- theorem add_valuation.supp_quot_supp +/- theorem valuation.supp_quot_supp Modified src/set_theory/cardinal.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/testing/slim_check/sampleable.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/intermediate_value.lean Modified src/topology/algebra/ordered/monotone_convergence.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/instances/ennreal.lean Modified src/topology/list.lean Modified src/topology/local_extr.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/order.lean Modified src/topology/path_connected.lean Modified src/topology/semicontinuous.lean Modified src/topology/separation.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/stone_cech.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/vector_bundle.lean Modified test/apply.lean Modified test/monotonicity.lean 2022-02-04 02:03:42 6dcad02 feat(linear_algebra/lagrange): Add recurrence formula for Lagrange polynomials (#11762) I have also changed `interpolate` to take in a function `f : F → F` instead of `f : s → F`, since this makes the statement of the theorem nicer. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/lagrange.lean + theorem lagrange.basis_singleton_self + theorem lagrange.degree_interpolate_erase + theorem lagrange.eq_interpolate_of_eval_eq +/- theorem lagrange.eval_interpolate + theorem lagrange.interpolate_eq_interpolate_erase_add + theorem lagrange.interpolate_eq_of_eval_eq + theorem lagrange.interpolate_singleton +/- def lagrange.linterpolate 2022-02-03 23:36:11 853192c feat(topology/algebra): Inf and inducing preserve compatibility with algebraic structure (#11720) This partly duplicates @mariainesdff 's work on group topologies, but I'm using an unbundled approach which avoids defining a new `X_topology` structure for each interesting X. ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem topological_group_Inf + theorem topological_group_induced + theorem topological_group_inf + theorem topological_group_infi Modified src/topology/algebra/module/basic.lean + theorem has_continuous_smul_induced Modified src/topology/algebra/monoid.lean + theorem has_continuous_mul_Inf + theorem has_continuous_mul_induced + theorem has_continuous_mul_inf + theorem has_continuous_mul_infi Modified src/topology/algebra/mul_action.lean + theorem has_continuous_smul_Inf + theorem has_continuous_smul_inf + theorem has_continuous_smul_infi 2022-02-03 18:39:52 30a731c fix(algebra/category/Module/colimits): generalize universes (#11802) ESTIMATED CHANGES Modified src/algebra/category/Module/colimits.lean +/- theorem Module.colimits.cocone_naturality_components +/- def Module.colimits.colimit_type 2022-02-03 18:39:51 f2be0d2 feat(polynomial/cyclotomic): irreducible cyclotomic polynomials are minimal polynomials (#11796) from flt-regular ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem is_primitive_root.minpoly_dvd_cyclotomic + theorem is_primitive_root.minpoly_eq_cyclotomic_of_irreducible - theorem minpoly_dvd_cyclotomic 2022-02-03 16:59:03 2c5f36c feat(data/finset/sort): an order embedding from fin (#11800) Given a set `s` of at least `k` element in a linear order, there is an order embedding from `fin k` whose image is contained in `s`. ESTIMATED CHANGES Modified src/data/finset/sort.lean + def finset.order_emb_of_card_le + theorem finset.order_emb_of_card_le_mem 2022-02-03 16:59:01 25f0406 fix(topology/connected): typos in docstrings (#11798) As pointed out by @YaelDillies ESTIMATED CHANGES Modified src/topology/connected.lean 2022-02-03 15:03:19 a4d9581 feat(algebra/group_power/order): add pow_bit0_pos_iff (#11785) ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem pow_bit0_pos_iff + theorem sq_pos_iff 2022-02-03 14:17:31 324d845 feat(field_theory/krull_topology): defined Krull topology on Galois groups (#11780) ESTIMATED CHANGES Added src/field_theory/krull_topology.lean + theorem finite_dimensional_sup + def finite_exts + def fixed_by_finite + def gal_basis + def gal_group_basis + theorem intermediate_field.finite_dimensional_bot + theorem intermediate_field.fixing_subgroup.antimono + theorem intermediate_field.fixing_subgroup.bot + theorem intermediate_field.map_id + theorem intermediate_field.map_mono + theorem mem_fixing_subgroup_iff + theorem mem_gal_basis_iff + theorem top_fixed_by_finite 2022-02-03 12:53:15 d6e1c55 chore(data/polynomial/monic): dedup `degree_map` (#11792) ESTIMATED CHANGES Modified src/data/polynomial/monic.lean - theorem polynomial.degree_map' - theorem polynomial.nat_degree_map' + theorem polynomial.nat_degree_map_eq_of_injective Modified src/field_theory/splitting_field.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/polynomial/gauss_lemma.lean 2022-02-03 12:53:14 2f4f8ad feat(set_theory/principal): Principal ordinals are unbounded (#11755) Amazingly, this theorem requires no conditions on the operation. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.is_normal.lt_nfp + theorem ordinal.lt_nfp Modified src/set_theory/principal.lean + def ordinal.blsub₂ + theorem ordinal.lt_blsub₂ + theorem ordinal.principal_nfp_blsub₂ + theorem ordinal.unbounded_principal 2022-02-03 12:12:38 50ee3d5 feat(ring_theory/roots_of_unity): coe_injective (#11793) from flt-regular ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem roots_of_unity.coe_injective 2022-02-03 11:20:19 934f182 feat(field_theory/is_alg_closed/classification): Classify algebraically closed fields (#9370) The main results here are that two algebraically closed fields with the same characteristic and the same cardinality of transcendence basis are isomorphic. The consequence of this is that two uncountable algebraically closed fields of the same cardinality and characteristic are isomorphic. This has applications in model theory, in particular the Lefschetz principle https://proofwiki.org/wiki/Lefschetz_Principle_(First-Order) ESTIMATED CHANGES Added src/field_theory/is_alg_closed/classification.lean + theorem algebra.is_algebraic.cardinal_mk_le_max + theorem algebra.is_algebraic.cardinal_mk_le_sigma_polynomial + theorem is_alg_closed.cardinal_eq_cardinal_transcendence_basis_of_omega_lt + theorem is_alg_closed.cardinal_le_max_transcendence_basis + def is_alg_closed.equiv_of_transcendence_basis + theorem is_alg_closed.is_alg_closure_of_transcendence_basis + theorem is_alg_closed.ring_equiv_of_cardinal_eq_of_char_eq + theorem is_alg_closed.ring_equiv_of_cardinal_eq_of_char_zero 2022-02-03 10:20:39 e39f617 feat(category_theory/linear): compatibility of linear Yoneda (#11784) ESTIMATED CHANGES Modified src/category_theory/linear/yoneda.lean + def category_theory.linear_coyoneda + theorem category_theory.whiskering_linear_coyoneda + theorem category_theory.whiskering_linear_coyoneda₂ + theorem category_theory.whiskering_linear_yoneda + theorem category_theory.whiskering_linear_yoneda₂ 2022-02-03 10:20:38 e61ce5d chore(category_theory/limits): dualize strong_epi (#11783) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.strong_mono_of_mono Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/strong_epi.lean + theorem category_theory.is_iso_of_epi_of_strong_mono + theorem category_theory.strong_mono_comp + theorem category_theory.strong_mono_of_strong_mono 2022-02-03 10:20:37 93f2bdc feat(topology/algebra/ordered/monotone_convergence): add `antitone.{ge,le}_of_tendsto` (#11754) ESTIMATED CHANGES Modified src/topology/algebra/ordered/monotone_convergence.lean + theorem antitone.ge_of_tendsto + theorem antitone.le_of_tendsto 2022-02-03 09:25:26 a483158 feat(topology/algebra/group): continuity of action of a group on its own coset space (#11772) Given a subgroup `Γ` of a topological group `G`, there is an induced scalar action of `G` on the coset space `G ⧸ Γ`, and there is also an induced topology on `G ⧸ Γ`. We prove that this action is continuous in each variable, and, if the group `G` is locally compact, also jointly continuous. ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem quotient_group.continuous_smul₁ Modified src/topology/algebra/group_completion.lean Modified src/topology/compact_open.lean + theorem quotient_map.continuous_lift_prod_left + theorem quotient_map.continuous_lift_prod_right 2022-02-03 04:55:55 1816378 chore(*): golf `by_contra, push_neg` to `by_contra'` (#11768) ESTIMATED CHANGES Modified archive/imo/imo1972_b2.lean Modified archive/imo/imo2008_q4.lean Modified archive/imo/imo2013_q5.lean Modified counterexamples/phillips.lean Modified src/algebra/big_operators/finprod.lean Modified src/algebraic_topology/simplex_category.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/specific_limits.lean Modified src/combinatorics/composition.lean Modified src/data/fintype/basic.lean Modified src/data/nat/nth.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space_def.lean Modified src/number_theory/class_number/finite.lean Modified src/order/extension.lean Modified src/order/well_founded.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/witt_vector/domain.lean Modified src/topology/algebra/ordered/liminf_limsup.lean Modified src/topology/metric_space/emetric_paracompact.lean 2022-02-03 04:21:08 89a3c07 feat(field_theory/laurent): Laurent expansions of rational functions (#11199) Also provide more API for `ratfunc`, lifting homomorphisms of (polynomial to polynomial) to (ratfunc to ratfunc). ESTIMATED CHANGES Added src/field_theory/laurent.lean + def ratfunc.laurent + theorem ratfunc.laurent_C + theorem ratfunc.laurent_X + theorem ratfunc.laurent_algebra_map + theorem ratfunc.laurent_at_zero + def ratfunc.laurent_aux + theorem ratfunc.laurent_aux_algebra_map + theorem ratfunc.laurent_aux_div + theorem ratfunc.laurent_aux_of_fraction_ring_mk + theorem ratfunc.laurent_div + theorem ratfunc.laurent_injective + theorem ratfunc.laurent_laurent + theorem ratfunc.taylor_mem_non_zero_divisors Modified src/field_theory/ratfunc.lean + theorem ratfunc.coe_map_alg_hom_eq_coe_map + theorem ratfunc.coe_map_ring_hom_eq_coe_map +/- theorem ratfunc.div_smul +/- theorem ratfunc.lift_alg_hom_injective +/- def ratfunc.lift_monoid_with_zero_hom +/- theorem ratfunc.lift_monoid_with_zero_hom_apply_of_fraction_ring_mk +/- theorem ratfunc.lift_monoid_with_zero_hom_injective +/- def ratfunc.lift_ring_hom +/- theorem ratfunc.lift_ring_hom_apply_of_fraction_ring_mk +/- theorem ratfunc.lift_ring_hom_injective + def ratfunc.map + def ratfunc.map_alg_hom + theorem ratfunc.map_apply + theorem ratfunc.map_apply_div + theorem ratfunc.map_apply_div_ne_zero + theorem ratfunc.map_apply_of_fraction_ring_mk + theorem ratfunc.map_injective + def ratfunc.map_ring_hom Modified src/ring_theory/hahn_series.lean + theorem hahn_series.single_eq_zero_iff 2022-02-02 21:05:56 7f3590b feat(field_theory/minpoly): add a nontriviality lemma (#11781) ESTIMATED CHANGES Modified src/field_theory/minpoly.lean + theorem minpoly.subsingleton 2022-02-02 20:04:39 cdad110 feat(tactic/equiv_rw): enhancing 'equiv_rw' (#11730) Expands the `equiv_rw` API by: * Making it accept a list of equivalences instead of a single one, if intended * Allowing multiple targets (closes #2891) Extra: some optimizations. ESTIMATED CHANGES Modified src/ring_theory/witt_vector/truncated.lean Modified src/tactic/equiv_rw.lean Modified src/topology/continuous_function/compact.lean Modified test/equiv_rw.lean 2022-02-02 16:48:16 41811cd feat(number_theory): von Mangoldt function (#11727) Defines the von Mangoldt function ESTIMATED CHANGES Modified src/algebra/is_prime_pow.lean + theorem is_prime_pow_pow_iff + theorem nat.coprime.is_prime_pow_dvd_mul + theorem nat.disjoint_divisors_filter_prime_pow + theorem nat.mul_divisors_filter_prime_pow Modified src/number_theory/divisors.lean + theorem nat.prod_divisors_antidiagonal' + theorem nat.prod_divisors_antidiagonal Added src/number_theory/von_mangoldt.lean + theorem nat.arithmetic_function.log_apply + theorem nat.arithmetic_function.log_mul_moebius_eq_von_mangoldt + theorem nat.arithmetic_function.moebius_mul_log_eq_von_mangoldt + theorem nat.arithmetic_function.sum_moebius_mul_log_eq + theorem nat.arithmetic_function.von_mangoldt_apply + theorem nat.arithmetic_function.von_mangoldt_apply_one + theorem nat.arithmetic_function.von_mangoldt_apply_pow + theorem nat.arithmetic_function.von_mangoldt_apply_prime + theorem nat.arithmetic_function.von_mangoldt_mul_zeta + theorem nat.arithmetic_function.von_mangoldt_nonneg + theorem nat.arithmetic_function.von_mangoldt_sum + theorem nat.arithmetic_function.zeta_mul_von_mangoldt 2022-02-02 16:48:15 c235c61 refactor(set_theory/ordinal_arithmetic): Simpler `bsup` definition (#11386) We also simplify some existing proofs. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- def ordinal.bsup + theorem ordinal.comp_bfamily_of_family' + theorem ordinal.comp_bfamily_of_family + theorem ordinal.comp_family_of_bfamily' + theorem ordinal.comp_family_of_bfamily +/- theorem ordinal.lsub_eq_lsub +/- theorem ordinal.sup_eq_sup 2022-02-02 16:48:14 4d0b398 feat(topology/connected): Connectedness of unions of sets (#10005) * Add multiple results about when unions of sets are (pre)connected. In particular, the union of connected sets indexed by `ℕ` such that each set intersects the next is connected. * Remove some `set.` prefixes in the file * There are two minor fixes in other files, presumably caused by the fact that they now import `order.succ_pred` * Co-authored by Floris van Doorn fpvdoorn@gmail.com ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean Modified src/data/real/cardinality.lean Modified src/data/set/lattice.lean + theorem set.nonempty_bUnion Modified src/topology/connected.lean + theorem is_connected.Union_of_chain + theorem is_connected.Union_of_refl_trans_gen + theorem is_connected.bUnion_of_chain + theorem is_connected.bUnion_of_refl_trans_gen +/- theorem is_connected.subset_closure + theorem is_preconnected.Union_of_chain + theorem is_preconnected.Union_of_refl_trans_gen + theorem is_preconnected.bUnion_of_chain + theorem is_preconnected.bUnion_of_refl_trans_gen + theorem is_preconnected.sUnion_directed + theorem is_preconnected.union' 2022-02-02 14:51:44 d6c002c feat(group_theory/p_group): finite p-groups with different p have coprime orders (#11775) ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.coprime_card_of_ne 2022-02-02 14:51:43 307a456 refactor(set_theory/ordinal): Add `covariant_class` instances for ordinal addition and multiplication (#11678) This replaces the old `add_le_add_left`, `add_le_add_right`, `mul_le_mul_left`, `mul_le_mul_right` theorems. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/ordinal.lean - theorem ordinal.add_le_add_left - theorem ordinal.add_le_add_right Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.add_le_add_iff_left - theorem ordinal.add_lt_add_iff_left - theorem ordinal.mul_le_mul - theorem ordinal.mul_le_mul_left - theorem ordinal.mul_le_mul_right Modified src/set_theory/ordinal_notation.lean 2022-02-02 14:51:42 cd1d839 feat(order/rel_classes): Unbundled typeclass to state that two relations are the non strict and strict versions (#11381) This defines a Prop-valued mixin `is_nonstrict_strict_order α r s` to state `s a b ↔ r a b ∧ ¬ r b a`. The idea is to allow dot notation for lemmas about the interaction of `⊆` and `⊂` (which currently do not have a `preorder`-like typeclass). Dot notation on each of them is already possible thanks to unbundled relation classes (which allow to state lemmas for both `set` and `finset`). ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.ssubset_def +/- theorem finset.subset_def - theorem finset.subset_of_eq Modified src/data/set/basic.lean - theorem has_ssubset.ssubset.asymm - theorem has_ssubset.ssubset.trans - theorem has_subset.subset.antisymm - theorem has_subset.subset.trans - theorem set.eq_or_ssubset_of_subset +/- theorem set.ssubset_def - theorem set.ssubset_iff_subset_ne - theorem set.ssubset_of_ssubset_of_subset - theorem set.ssubset_of_subset_of_ssubset +/- theorem set.subset_def Modified src/order/rel_classes.lean + theorem antisymm' + theorem antisymm_of' + theorem eq_or_ssubset_of_subset + theorem ne_of_irrefl' +/- theorem ne_of_irrefl + theorem ne_of_not_subset + theorem ne_of_not_superset + theorem ne_of_ssubset + theorem ne_of_ssuperset + theorem not_ssubset_of_subset + theorem not_subset_of_ssubset + theorem right_iff_left_not_left + theorem right_iff_left_not_left_of + theorem ssubset_asymm + theorem ssubset_iff_subset_ne + theorem ssubset_iff_subset_not_subset + theorem ssubset_irrefl + theorem ssubset_irrfl + theorem ssubset_of_ne_of_subset + theorem ssubset_of_ssubset_of_subset + theorem ssubset_of_subset_not_subset + theorem ssubset_of_subset_of_ne + theorem ssubset_of_subset_of_ssubset + theorem ssubset_or_eq_of_subset + theorem ssubset_trans + theorem subset_antisymm + theorem subset_antisymm_iff + theorem subset_iff_ssubset_or_eq + theorem subset_of_eq + theorem subset_of_ssubset + theorem subset_refl + theorem subset_rfl + theorem subset_trans + theorem superset_antisymm + theorem superset_antisymm_iff + theorem superset_of_eq 2022-02-02 13:59:38 d002769 refactor(ring_theory): clean up `algebraic_iff_integral` (#11773) The definitions `is_algebraic_iff_integral`, `is_algebraic_iff_integral'` and `algebra.is_algebraic_of_finite` have always been annoying me, so I decided to fix that: * The name `is_algebraic_iff_integral'` doesn't explain how it differs from `is_algebraic_iff_integral` (namely that the whole algebra is algebraic, rather than one element), so I renamed it to `algebra.is_algebraic_iff_integral`. * The two `is_algebraic_iff_integral` lemmas have an unnecessarily explicit parameter `K`, so I made that implicit * `is_algebraic_of_finite` has no explicit parameters (so we always have to use type ascriptions), so I made them explicit * Half of the usages of `is_algebraic_of_finite` are of the form `is_algebraic_iff_integral.mp is_algebraic_of_finite`, even though `is_algebraic_of_finite` is proved as `is_algebraic_iff_integral.mpr (some_proof_that_it_is_integral)`, so I split it up into a part showing it is integral, that we can use directly. As a result, I was able to golf a few proofs. ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/number_field.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebraic.lean + theorem algebra.is_integral_of_finite - theorem is_algebraic_iff_is_integral' Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/localization.lean 2022-02-02 13:59:37 07d6d17 refactor(field_theory/is_alg_closed/basic): Generalize alg closures to commutative rings (#11703) ESTIMATED CHANGES Modified src/field_theory/is_alg_closed/basic.lean +/- theorem is_alg_closure.equiv_of_equiv_algebra_map +/- theorem is_alg_closure.equiv_of_equiv_comp_algebra_map +/- theorem is_alg_closure.equiv_of_equiv_symm_algebra_map +/- theorem is_alg_closure.equiv_of_equiv_symm_comp_algebra_map Modified src/ring_theory/localization.lean 2022-02-02 12:30:43 4db1f96 chore(algebra/ne_zero): revert transitivity changes (#11760) The `trans` methods were a disaster for `flt-regular` - this reverts them unless a better solution can be found. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/zeta.lean +/- theorem is_cyclotomic_extension.zeta_primitive_root 2022-02-02 12:30:42 6c6fbe6 feat(group_theory/subgroup/basic): normalizer condition implies max subgroups normal (#11597) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.normalizer_condition.normal_of_coatom 2022-02-02 10:56:10 1ed19a9 feat(group_theory/nilpotent): p-groups are nilpotent (#11726) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.induction_subsingleton_or_nontrivial Modified src/group_theory/nilpotent.lean + theorem is_p_group.is_nilpotent + theorem of_quotient_center_nilpotent 2022-02-02 10:56:09 c1d2860 feat(measure_theory/probability_mass_function): Measures of sets under `pmf` monad operations (#11613) This PR adds explicit formulas for the measures of sets under `pmf.pure`, `pmf.bind`, and `pmf.bind_on_support`. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/monad.lean +/- theorem pmf.bind_bind +/- theorem pmf.bind_pure +/- theorem pmf.coe_bind_apply +/- theorem pmf.pure_bind + theorem pmf.to_measure_bind_apply + theorem pmf.to_measure_bind_on_support_apply + theorem pmf.to_measure_pure_apply + theorem pmf.to_outer_measure_bind_apply + theorem pmf.to_outer_measure_bind_on_support_apply + theorem pmf.to_outer_measure_pure_apply 2022-02-02 10:56:08 a687cbf feat(field_theory/intermediate_field, ring_theory/.., algebra/algebra… (#11168) If `E` is an subsemiring/subring/subalgebra/intermediate_field and e is an equivalence of the larger semiring/ring/algebra/field, then e induces an equivalence from E to E.map e. We define this equivalence. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + def alg_equiv.subalgebra_map Modified src/field_theory/intermediate_field.lean + def intermediate_field.intermediate_field_map Modified src/ring_theory/subring/basic.lean + def ring_equiv.subring_map Modified src/ring_theory/subsemiring/basic.lean + def ring_equiv.subsemiring_map 2022-02-02 08:53:09 d5d5784 chore(ring_theory/power_basis): add `simps` (#11766) for flt-regular ESTIMATED CHANGES Modified src/ring_theory/power_basis.lean 2022-02-02 08:53:07 2fdc151 refactor(power_series/basic): generalize order to semirings (#11765) There are still some TODOs about generalizing statements downstream of this file. ESTIMATED CHANGES Modified src/data/finset/nat_antidiagonal.lean + theorem finset.nat.filter_fst_eq_antidiagonal + theorem finset.nat.filter_snd_eq_antidiagonal Modified src/ring_theory/power_series/basic.lean + theorem power_series.X_pow_order_dvd +/- theorem power_series.coeff_of_lt_order +/- theorem power_series.coeff_order + theorem power_series.exists_coeff_ne_zero_iff_ne_zero +/- def power_series.order + theorem power_series.order_eq_multiplicity_X + theorem power_series.order_finite_iff_ne_zero - theorem power_series.order_finite_of_coeff_ne_zero +/- theorem power_series.order_le +/- theorem power_series.order_zero 2022-02-02 08:53:06 a32b0d3 feat(group_theory/p_group): p-groups with different p are disjoint (#11752) ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.disjoint_of_ne 2022-02-02 08:53:04 664b5be feat(group_theory/subgroup/basic): add commute_of_normal_of_disjoint (#11751) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.commute_of_normal_of_disjoint 2022-02-02 08:53:03 a6d70aa feat(order/category/*): `order_dual` as an equivalence of categories (#11743) For `whatever` a category of orders, define * `whatever.iso_of_order_iso`: Turns an order isomorphism into an equivalence of objects inside `whatever` * `whatever.to_dual`: `order_dual` as a functor from `whatever` to itself * `whatever.dual_equiv`: The equivalence of categories between `whatever` and itself induced by `order_dual` both ways * `order_iso.dual_dual`: The order isomorphism between `α` and `order_dual (order_dual α)` ESTIMATED CHANGES Modified src/data/fin/basic.lean Modified src/data/fintype/basic.lean + theorem fintype.card_lex + theorem fintype.card_order_dual Modified src/order/category/LinearOrder.lean + def LinearOrder.dual_equiv + def LinearOrder.iso.mk + def LinearOrder.to_dual + theorem LinearOrder_dual_equiv_comp_forget_to_PartialOrder Modified src/order/category/NonemptyFinLinOrd.lean + def NonemptyFinLinOrd.dual_equiv + def NonemptyFinLinOrd.iso.mk + def NonemptyFinLinOrd.to_dual + theorem NonemptyFinLinOrd_dual_equiv_comp_forget_to_LinearOrder Modified src/order/category/PartialOrder.lean + def PartialOrder.dual_equiv + def PartialOrder.iso.mk + def PartialOrder.to_dual + theorem PartialOrder_dual_equiv_comp_forget_to_Preorder Modified src/order/category/Preorder.lean + def Preorder.dual_equiv + def Preorder.iso.mk + def Preorder.to_dual Modified src/order/hom/basic.lean + theorem order_iso.coe_dual_dual + theorem order_iso.coe_dual_dual_symm + def order_iso.dual_dual + theorem order_iso.dual_dual_apply + theorem order_iso.dual_dual_symm_apply 2022-02-02 07:21:06 400dbb3 refactor(ring_theory/non_zero_divisors): use fun_like (#11764) ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/laurent_series.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/non_zero_divisors.lean + theorem map_le_non_zero_divisors_of_injective + theorem map_mem_non_zero_divisors + theorem map_ne_zero_of_mem_non_zero_divisors + theorem mem_non_zero_divisors_of_ne_zero - theorem monoid_with_zero_hom.map_le_non_zero_divisors_of_injective - theorem monoid_with_zero_hom.map_mem_non_zero_divisors - theorem monoid_with_zero_hom.map_ne_zero_of_mem_non_zero_divisors + theorem non_zero_divisors_le_comap_non_zero_divisors_of_injective - theorem ring_hom.map_le_non_zero_divisors_of_injective - theorem ring_hom.map_mem_non_zero_divisors - theorem ring_hom.map_ne_zero_of_mem_non_zero_divisors Modified src/ring_theory/polynomial/scale_roots.lean 2022-02-02 07:21:05 c8fd7e3 chore(measure_theory/covering/besicovitch): Weaker import (#11763) We relax the `set_theory.cardinal_ordinal` import to the weaker `set_theory.ordinal_arithmetic` import. We also fix some trivial spacing issues in the docs. ESTIMATED CHANGES Modified src/measure_theory/covering/besicovitch.lean 2022-02-02 07:21:04 a18680a chore(topology/continuous_function/ordered): split from `continuous_function/basic` (#11761) Split material about orders out from `continuous_function/basic`, to move that file lower down the import hierarchy. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/basic.lean - def continuous_map.Icc_extend - def continuous_map.abs - theorem continuous_map.abs_apply - theorem continuous_map.coe_Icc_extend - theorem continuous_map.inf'_apply - theorem continuous_map.inf'_coe - theorem continuous_map.inf_apply - theorem continuous_map.inf_coe - theorem continuous_map.le_def - theorem continuous_map.lt_def - theorem continuous_map.sup'_apply - theorem continuous_map.sup'_coe - theorem continuous_map.sup_apply - theorem continuous_map.sup_coe Added src/topology/continuous_function/ordered.lean + def continuous_map.Icc_extend + def continuous_map.abs + theorem continuous_map.abs_apply + theorem continuous_map.coe_Icc_extend + theorem continuous_map.inf'_apply + theorem continuous_map.inf'_coe + theorem continuous_map.inf_apply + theorem continuous_map.inf_coe + theorem continuous_map.le_def + theorem continuous_map.lt_def + theorem continuous_map.sup'_apply + theorem continuous_map.sup'_coe + theorem continuous_map.sup_apply + theorem continuous_map.sup_coe Modified src/topology/homotopy/basic.lean 2022-02-02 07:21:03 366fd9b feat(analysis/special_functions): show (2 / π) * x ≤ sin x (#11724) I wasn't entirely sure where to put this - trigonometric/basic is too high on the import graph but here seems to work. This is a fairly weak inequality but it can sometimes turn out to be useful, and is important enough to be named! ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/complex.lean + theorem real.le_sin_mul + theorem real.lt_sin_mul + theorem real.mul_le_sin + theorem real.mul_lt_sin 2022-02-02 07:21:01 5c4c1c0 feat(topology/homotopy): Fundamental groupoid preserves products (#11459) ESTIMATED CHANGES Modified src/category_theory/category/Groupoid.lean + theorem category_theory.Groupoid.hom_to_functor + theorem category_theory.Groupoid.pi_iso_pi_hom_π + def category_theory.Groupoid.pi_limit_cone + def category_theory.Groupoid.pi_limit_fan Modified src/category_theory/discrete_category.lean + def category_theory.discrete.comp_nat_iso_discrete Modified src/category_theory/groupoid.lean Modified src/category_theory/pi/basic.lean + theorem category_theory.functor.eq_to_hom_proj + def category_theory.functor.pi' + theorem category_theory.functor.pi'_eval + theorem category_theory.functor.pi_ext Modified src/category_theory/products/basic.lean + def category_theory.functor.prod' Modified src/topology/homotopy/fundamental_groupoid.lean +/- theorem fundamental_groupoid.comp_eq + def fundamental_groupoid.from_path + def fundamental_groupoid.from_top + theorem fundamental_groupoid.id_eq_path_refl + def fundamental_groupoid.to_path + def fundamental_groupoid.to_top Modified src/topology/homotopy/product.lean + def fundamental_groupoid_functor.cone_discrete_comp + theorem fundamental_groupoid_functor.cone_discrete_comp_obj_map_cone + def fundamental_groupoid_functor.pi_Top_to_pi_cone + def fundamental_groupoid_functor.pi_iso + def fundamental_groupoid_functor.pi_to_pi_Top + def fundamental_groupoid_functor.preserves_product + def fundamental_groupoid_functor.prod_iso + def fundamental_groupoid_functor.prod_to_prod_Top + def fundamental_groupoid_functor.proj + def fundamental_groupoid_functor.proj_left + theorem fundamental_groupoid_functor.proj_left_map + theorem fundamental_groupoid_functor.proj_map + def fundamental_groupoid_functor.proj_right + theorem fundamental_groupoid_functor.proj_right_map 2022-02-02 06:20:40 fa86370 chore(*): Golfed some random theorems (#11769) ESTIMATED CHANGES Modified src/algebraic_geometry/properties.lean Modified src/category_theory/simple.lean Modified src/data/nat/log.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/topology/subset_properties.lean 2022-02-02 05:25:14 8ef783b feat(measure_theory/measure): drop more `measurable_set` args (#11547) Most notably, in `measure_Union_eq_supr`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean - theorem bsupr_measure_Iic Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_eq_of_subset_of_measure_ge + theorem measure_theory.bsupr_measure_Iic +/- theorem measure_theory.measure.ext_iff_of_Union_eq_univ +/- theorem measure_theory.measure.ext_iff_of_sUnion_eq_univ +/- theorem measure_theory.measure.restrict_Union_congr +/- theorem measure_theory.measure.restrict_bUnion_congr +/- theorem measure_theory.measure.restrict_finset_bUnion_congr +/- theorem measure_theory.measure.restrict_sUnion_congr +/- theorem measure_theory.measure.restrict_union_congr + theorem measure_theory.measure_Union_congr_of_subset +/- theorem measure_theory.measure_Union_eq_supr + theorem measure_theory.measure_Union_to_measurable + theorem measure_theory.measure_add_diff + theorem measure_theory.measure_bUnion_to_measurable + theorem measure_theory.measure_diff' + theorem measure_theory.measure_to_measurable_union + theorem measure_theory.measure_union_congr_of_subset + theorem measure_theory.measure_union_to_measurable +/- theorem measure_theory.tendsto_measure_Union Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.exists_measurable_superset₂ Modified src/measure_theory/measure/regular.lean +/- theorem measure_theory.measure.inner_regular.is_compact_is_closed +/- theorem measure_theory.measure.inner_regular.of_pseudo_emetric_space Modified src/topology/metric_space/hausdorff_distance.lean 2022-02-02 02:57:46 d68b480 chore(linear_algebra): remove `bilinear_map` from imports in `pi` (#11767) Remove `bilinear_map` from imports in `pi` ESTIMATED CHANGES Modified src/linear_algebra/pi.lean 2022-02-01 20:41:27 343cbd9 feat(sites/sheaf): simple sheaf condition in terms of limit (#11692) + Given a presheaf on a site, construct a simple cone for each sieve. The sheaf condition is equivalent to all these cones being limit cones for all covering sieves of the Grothendieck topology. This is made possible by a series of work that mostly removed universe restrictions on limits. + Given a sieve over X : C, the diagram of its associated cone is a functor from the full subcategory of the over category C/X consisting of the arrows in the sieve, constructed from the canonical cocone over `forget : over X ⥤ C` with cone point X, which is only now added to mathlib. This cone is simpler than the multifork cone in [`is_sheaf_iff_multifork`](https://leanprover-community.github.io/mathlib_docs/category_theory/sites/sheaf.html#category_theory.presheaf.is_sheaf_iff_multifork). The underlying type of this full subcategory is equivalent to [`grothendieck_topology.cover.arrow`](https://leanprover-community.github.io/mathlib_docs/category_theory/sites/grothendieck.html#category_theory.grothendieck_topology.cover.arrow). + This limit sheaf condition might be more convenient to use to do sheafification, which has been done by @adamtopaz using the multifork cone before universes are sufficiently generalized for limits, though I haven't thought about it in detail. It may not be worth refactoring sheafification in terms of this sheaf condition, but we might consider using this if we ever want to do sheafification for more general (e.g. non-concrete) value categories. #11706 is another application. This is based on a [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/universe.20restriction.20on.20limit/near/260732627) with @adamtopaz. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.is_initial_equiv_unique + def category_theory.limits.is_terminal_equiv_unique Modified src/category_theory/over.lean + def category_theory.over.forget_cocone + def category_theory.under.forget_cone Modified src/category_theory/sites/sheaf.lean + def category_theory.presheaf.cones_equiv_sieve_compatible_family + def category_theory.presheaf.hom_equiv_amalgamation + theorem category_theory.presheaf.is_limit_iff_is_sheaf_for + theorem category_theory.presheaf.is_limit_iff_is_sheaf_for_presieve + theorem category_theory.presheaf.is_separated_iff_subsingleton + theorem category_theory.presheaf.is_sheaf_iff_is_limit + theorem category_theory.presheaf.is_sheaf_iff_is_limit_pretopology + theorem category_theory.presheaf.subsingleton_iff_is_separated_for + def category_theory.presieve.family_of_elements.sieve_compatible.cone Modified src/category_theory/sites/sheaf_of_types.lean +/- theorem category_theory.presieve.family_of_elements.compatible.sieve_extend Modified src/category_theory/sites/sieves.lean + def category_theory.presieve.cocone + def category_theory.presieve.diagram Modified src/category_theory/sites/spaces.lean + theorem opens.pretopology_of_grothendieck Modified src/logic/unique.lean + theorem unique_iff_exists_unique + theorem unique_subtype_iff_exists_unique 2022-02-01 18:24:10 ec61182 feat(algebra/group_power): relate square equality and absolute value equality (#11683) ESTIMATED CHANGES Modified src/algebra/group_power/order.lean + theorem one_le_sq_iff_one_le_abs + theorem one_lt_sq_iff_one_lt_abs + theorem sq_eq_one_iff + theorem sq_eq_sq_iff_abs_eq_abs + theorem sq_le_one_iff_abs_le_one + theorem sq_lt_one_iff_abs_lt_one +/- theorem sq_lt_sq + theorem sq_ne_one_iff Modified src/analysis/inner_product_space/basic.lean 2022-02-01 12:46:25 23e0e29 chore(*): register global fact instances (#11749) We register globally some fact instances which are necessary for integration or euclidean spaces. And also the fact that 2 and 3 are prime. See https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/euclidean_space.20error/near/269992165 ESTIMATED CHANGES Modified src/algebra/char_p/two.lean Modified src/analysis/fourier.lean Modified src/analysis/inner_product_space/l2_space.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/spectrum.lean Modified src/analysis/normed_space/pi_Lp.lean - theorem fact_one_le_one_real - theorem fact_one_le_two_real Modified src/data/nat/prime.lean - theorem nat.fact_prime_three - theorem nat.fact_prime_two Modified src/data/real/ennreal.lean - theorem fact_one_le_one_ennreal - theorem fact_one_le_top_ennreal - theorem fact_one_le_two_ennreal Modified src/geometry/manifold/instances/real.lean Modified src/group_theory/order_of_element.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/kuratowski.lean 2022-02-01 11:04:30 2508cbd feat(model_theory/basic.lean): Elementary embeddings and elementary substructures (#11089) Defines elementary embeddings between structures Defines when substructures are elementary Provides lemmas about preservation of realizations of terms and formulas under various maps ESTIMATED CHANGES Modified src/model_theory/basic.lean + def first_order.language.bounded_formula.relabel + theorem first_order.language.embedding.realize_term + structure first_order.language.embedding + theorem first_order.language.equiv.apply_symm_apply + theorem first_order.language.equiv.realize_bounded_formula + theorem first_order.language.equiv.realize_term + theorem first_order.language.equiv.symm_apply_apply + structure first_order.language.equiv + def first_order.language.formula.equal + def first_order.language.formula.graph + theorem first_order.language.hom.realize_term + structure first_order.language.hom + theorem first_order.language.realize_bounded_formula_relabel + theorem first_order.language.realize_bounded_formula_top + theorem first_order.language.realize_equal + theorem first_order.language.realize_formula_equiv + theorem first_order.language.realize_formula_relabel + theorem first_order.language.realize_graph + theorem first_order.language.realize_term_relabel + theorem first_order.language.realize_term_substructure + theorem first_order.language.substructure.coe_top_equiv + def first_order.language.substructure.top_equiv + def first_order.language.term.relabel Added src/model_theory/elementary_maps.lean + theorem first_order.language.elementary_embedding.coe_injective + theorem first_order.language.elementary_embedding.coe_to_embedding + theorem first_order.language.elementary_embedding.coe_to_hom + def first_order.language.elementary_embedding.comp + theorem first_order.language.elementary_embedding.comp_apply + theorem first_order.language.elementary_embedding.comp_assoc + theorem first_order.language.elementary_embedding.ext + theorem first_order.language.elementary_embedding.ext_iff + theorem first_order.language.elementary_embedding.injective + theorem first_order.language.elementary_embedding.map_const + theorem first_order.language.elementary_embedding.map_formula + theorem first_order.language.elementary_embedding.map_fun + theorem first_order.language.elementary_embedding.map_rel + def first_order.language.elementary_embedding.refl + theorem first_order.language.elementary_embedding.refl_apply + def first_order.language.elementary_embedding.to_embedding + theorem first_order.language.elementary_embedding.to_embedding_to_hom + def first_order.language.elementary_embedding.to_hom + structure first_order.language.elementary_embedding + theorem first_order.language.elementary_substructure.coe_subtype + theorem first_order.language.elementary_substructure.coe_top + theorem first_order.language.elementary_substructure.is_elementary + theorem first_order.language.elementary_substructure.mem_top + def first_order.language.elementary_substructure.subtype + structure first_order.language.elementary_substructure + theorem first_order.language.equiv.coe_to_elementary_embedding + def first_order.language.equiv.to_elementary_embedding + theorem first_order.language.equiv.to_elementary_embedding_to_embedding + def first_order.language.substructure.is_elementary 2022-02-01 10:02:45 94a700f chore(set_theory/ordinal_arithmetic): Remove redundant explicit argument (#11757) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-02-01 10:02:44 ca2a99d feat(set_theory/ordinal_arithmetic): Normal functions evaluated at `ω` (#11687) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.eq_zero_or_pos Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.is_normal.apply_omega + theorem ordinal.sup_add_nat + theorem ordinal.sup_mul_nat + theorem ordinal.sup_nat_cast + theorem ordinal.sup_opow_nat 2022-02-01 09:01:20 cbad62c feat(set_theory/{ordinal_arithmetic, cardinal_ordinal}): Ordinals aren't a small type (#11756) We substantially golf and extend some results previously in `cardinal_ordinal.lean`. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean - theorem not_injective_of_ordinal - theorem not_injective_of_ordinal_of_small Modified src/set_theory/ordinal_arithmetic.lean + theorem not_injective_of_ordinal + theorem not_injective_of_ordinal_of_small + theorem not_small_ordinal + theorem not_surjective_of_ordinal + theorem not_surjective_of_ordinal_of_small + theorem ordinal.lsub_nmem_range 2022-02-01 08:32:51 30dcd70 feat(number_theory/cyclotomic/zeta): add lemmas (#11753) Various lemmas about `zeta`. From flt-regular. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean +/- theorem is_cyclotomic_extension.finite_dimensional + theorem is_cyclotomic_extension.is_galois Modified src/number_theory/cyclotomic/zeta.lean + theorem is_cyclotomic_extension.finrank + theorem is_cyclotomic_extension.norm_zeta_eq_one + theorem is_cyclotomic_extension.norm_zeta_sub_one_eq_eval_cyclotomic +/- def is_cyclotomic_extension.zeta.embeddings_equiv_primitive_roots +/- theorem is_cyclotomic_extension.zeta_minpoly + theorem is_cyclotomic_extension.zeta_pow +/- theorem is_cyclotomic_extension.zeta_primitive_root 2022-02-01 07:42:44 350ba8d feat(data/two_pointing): Two pointings of a type (#11648) Define `two_pointing α` as the type of two pointings of `α`. This is a Type-valued structure version of `nontrivial`. ESTIMATED CHANGES Added src/data/two_pointing.lean + theorem two_pointing.Prop_fst + theorem two_pointing.Prop_snd + theorem two_pointing.bool_fst + theorem two_pointing.bool_snd + theorem two_pointing.nonempty_two_pointing_iff + def two_pointing.pi + theorem two_pointing.pi_fst + theorem two_pointing.pi_snd + def two_pointing.prod + theorem two_pointing.prod_fst + theorem two_pointing.prod_snd + theorem two_pointing.snd_ne_fst + theorem two_pointing.sum_fst + theorem two_pointing.sum_snd + def two_pointing.swap + theorem two_pointing.swap_fst + theorem two_pointing.swap_snd + theorem two_pointing.swap_swap + theorem two_pointing.to_nontrivial + structure two_pointing 2022-02-01 06:40:21 5582d84 feat(ring_theory/localization): fraction rings of algebraic extensions are algebraic (#11717) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean +/- theorem is_algebraic_algebra_map + theorem is_algebraic_algebra_map_of_is_algebraic + theorem is_algebraic_of_larger_base + theorem is_algebraic_of_larger_base_of_injective +/- theorem is_integral.is_algebraic Modified src/ring_theory/localization.lean + theorem is_fraction_ring.is_algebraic_iff' 2022-02-01 02:13:10 4b9f048 feat(set_theory/principal): Define `principal` ordinals (#11679) An ordinal `o` is said to be principal or indecomposable under an operation when the set of ordinals less than it is closed under that operation. In standard mathematical usage, this term is almost exclusively used for additive and multiplicative principal ordinals. For simplicity, we break usual convention and regard 0 as principal. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.nfp_le Added src/set_theory/principal.lean + theorem ordinal.nfp_le_of_principal + theorem ordinal.op_eq_self_of_principal + theorem ordinal.principal.iterate_lt + def ordinal.principal + theorem ordinal.principal_iff_principal_swap + theorem ordinal.principal_one_iff + theorem ordinal.principal_zero 2022-02-01 00:59:42 e37daad feat(linear_algebra/sesquilinear_form): Add orthogonality properties (#10992) Generalize lemmas about orthogonality from bilinear forms to sesquilinear forms. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_map.lean +/- theorem linear_map.map_smul₂ Modified src/linear_algebra/sesquilinear_form.lean + def linear_map.is_Ortho + theorem linear_map.is_Ortho_def +/- def linear_map.is_alt + theorem linear_map.is_compl_span_singleton_orthogonal +/- def linear_map.is_ortho +/- theorem linear_map.is_ortho_def +/- theorem linear_map.is_ortho_zero_left +/- theorem linear_map.is_ortho_zero_right +/- def linear_map.is_refl +/- theorem linear_map.is_symm.is_refl +/- theorem linear_map.is_symm.ortho_comm + theorem linear_map.linear_independent_of_is_Ortho +/- theorem linear_map.ortho_smul_left +/- theorem linear_map.ortho_smul_right + theorem linear_map.orthogonal_span_singleton_eq_to_lin_ker + theorem linear_map.span_singleton_inf_orthogonal_eq_bot + theorem linear_map.span_singleton_sup_orthogonal_eq_top + theorem submodule.le_orthogonal_bilin_orthogonal_bilin + theorem submodule.mem_orthogonal_bilin_iff + def submodule.orthogonal_bilin + theorem submodule.orthogonal_bilin_le 2022-02-01 00:08:19 b52cb02 feat(analysis/special_functions/{log, pow}): add log_base (#11246) Adds `real.logb`, the log base `b` of `x`, defined as `log x / log b`. Proves that this is related to `real.rpow`. ESTIMATED CHANGES Modified src/analysis/special_functions/log.lean +/- theorem real.log_le_log Added src/analysis/special_functions/logb.lean + theorem real.eq_one_of_pos_of_logb_eq_zero + theorem real.eq_one_of_pos_of_logb_eq_zero_of_base_lt_one + theorem real.le_logb_iff_rpow_le + theorem real.le_logb_iff_rpow_le_of_base_lt_one + theorem real.log_div_log + theorem real.logb_abs + theorem real.logb_div + theorem real.logb_eq_zero + theorem real.logb_inj_on_pos + theorem real.logb_inj_on_pos_of_base_lt_one + theorem real.logb_inv + theorem real.logb_le_iff_le_rpow + theorem real.logb_le_iff_le_rpow_of_base_lt_one + theorem real.logb_le_logb + theorem real.logb_le_logb_of_base_lt_one + theorem real.logb_lt_iff_lt_rpow + theorem real.logb_lt_iff_lt_rpow_of_base_lt_one + theorem real.logb_lt_logb + theorem real.logb_lt_logb_iff + theorem real.logb_lt_logb_iff_of_base_lt_one + theorem real.logb_lt_logb_of_base_lt_one + theorem real.logb_mul + theorem real.logb_ne_zero_of_pos_of_ne_one + theorem real.logb_ne_zero_of_pos_of_ne_one_of_base_lt_one + theorem real.logb_neg + theorem real.logb_neg_eq_logb + theorem real.logb_neg_iff + theorem real.logb_neg_iff_of_base_lt_one + theorem real.logb_neg_of_base_lt_one + theorem real.logb_nonneg + theorem real.logb_nonneg_iff + theorem real.logb_nonneg_iff_of_base_lt_one + theorem real.logb_nonneg_of_base_lt_one + theorem real.logb_nonpos + theorem real.logb_nonpos_iff' + theorem real.logb_nonpos_iff + theorem real.logb_nonpos_iff_of_base_lt_one + theorem real.logb_one + theorem real.logb_pos + theorem real.logb_pos_iff + theorem real.logb_pos_iff_of_base_lt_one + theorem real.logb_pos_of_base_lt_one + theorem real.logb_prod + theorem real.logb_rpow + theorem real.logb_surjective + theorem real.logb_zero + theorem real.lt_logb_iff_rpow_lt + theorem real.lt_logb_iff_rpow_lt_of_base_lt_one + theorem real.range_logb + theorem real.rpow_logb + theorem real.rpow_logb_eq_abs + theorem real.rpow_logb_of_neg + theorem real.strict_anti_on_logb + theorem real.strict_anti_on_logb_of_base_lt_one + theorem real.strict_mono_on_logb + theorem real.strict_mono_on_logb_of_base_lt_one + theorem real.surj_on_logb' + theorem real.surj_on_logb + theorem real.tendsto_logb_at_top + theorem real.tendsto_logb_at_top_of_base_lt_one Modified src/analysis/special_functions/pow.lean + theorem real.rpow_le_rpow_left_iff + theorem real.rpow_le_rpow_left_iff_of_base_lt_one + theorem real.rpow_lt_rpow_left_iff + theorem real.rpow_lt_rpow_left_iff_of_base_lt_one 2022-01-31 22:22:23 731d93b feat(group_theory/sylow): the normalizer is self-normalizing (#11638) with hat tip to Thomas Browning for a proof on Zuplip. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.normal_of_normalizer_condition + theorem sylow.normal_of_normalizer_normal + theorem sylow.normalizer_normalizer 2022-01-31 22:22:22 5964343 feat(data/equiv): define `mul_equiv_class` (#10760) This PR defines a class of types of multiplicative (additive) equivalences, along the lines of #9888. ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean - theorem add_equiv.map_sub +/- theorem mul_equiv.ext +/- theorem mul_equiv.ext_iff - theorem mul_equiv.map_eq_one_iff - theorem mul_equiv.map_inv - theorem mul_equiv.map_mul - theorem mul_equiv.map_one + theorem mul_equiv_class.map_eq_one_iff + theorem mul_equiv_class.map_ne_one_iff Modified src/data/fun_like/basic.lean + theorem fun_like.coe_eq_coe_fn 2022-01-31 20:42:48 a0bb6ea feat(algebraic_geometry): Open covers of the fibred product. (#11733) ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.open_cover.copy + def algebraic_geometry.Scheme.open_cover.pushforward_iso + def algebraic_geometry.Scheme.open_cover_of_is_iso Modified src/algebraic_geometry/pullbacks.lean + def algebraic_geometry.Scheme.pullback.open_cover_of_base' + def algebraic_geometry.Scheme.pullback.open_cover_of_base + def algebraic_geometry.Scheme.pullback.open_cover_of_left + def algebraic_geometry.Scheme.pullback.open_cover_of_right 2022-01-31 20:42:46 6130e57 feat(topology/metric_space/basic): add some lemmas about spheres (#11719) ESTIMATED CHANGES Modified src/analysis/normed_space/is_R_or_C.lean + theorem normed_space.sphere_nonempty_is_R_or_C Modified src/topology/metric_space/basic.lean + theorem metric.bounded_sphere + theorem metric.sphere_eq_empty_of_subsingleton + theorem metric.sphere_is_empty_of_subsingleton 2022-01-31 20:42:45 ca17a18 feat(algebra/pointwise): introduce `canonically_ordered_comm_semiring` on `set_semiring` ... (#11580) ... assuming multiplication is commutative (there is no `canonically_ordered_`~~comm~~`_semiring` structure). Also prove the relevant `no_zero_divisors` and `covariant_class` properties of addition and multiplication. ESTIMATED CHANGES Modified src/algebra/pointwise.lean 2022-01-31 20:42:43 719b7b0 feat(set_theory/ordinal_arithmetic, set_theory/cardinal_ordinal): `deriv` and `aleph` are enumerators (#10987) We prove `deriv_eq_enum_fp`, `ord_aleph'_eq_enum_card`, and `ord_aleph_eq_enum_card`. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.eq_aleph'_of_eq_card_ord + theorem cardinal.eq_aleph_of_eq_card_ord + theorem cardinal.ord_aleph'_eq_enum_card + theorem cardinal.ord_aleph_eq_enum_card + theorem cardinal.ord_card_unbounded' + theorem cardinal.ord_card_unbounded Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.deriv_eq_enum_fp +/- theorem ordinal.deriv_limit + theorem ordinal.is_normal.fp_iff_deriv' +/- theorem ordinal.is_normal.fp_iff_deriv +/- theorem ordinal.is_normal.le_nfp +/- theorem ordinal.is_normal.lt_nfp + theorem ordinal.is_normal.nfp_unbounded 2022-01-31 19:55:53 750f53c feat(analysis/seminorm): define the topology induced by a family of seminorms (#11604) Define the topology induced by a single seminorm and by a family of seminorms and show that boundedness of linear maps implies continuity. ESTIMATED CHANGES Modified src/analysis/seminorm.lean +/- theorem seminorm.ball_finset_sup +/- theorem seminorm.ball_finset_sup_eq_Inter + theorem seminorm.ball_smul + theorem seminorm.const_is_bounded + theorem seminorm.cont_normed_space_to_with_seminorms + theorem seminorm.cont_with_seminorms_normed_space + theorem seminorm.continuous_from_bounded + theorem seminorm.finset_sup_le_sum + def seminorm.is_bounded + theorem seminorm.is_bounded_const + theorem seminorm.is_bounded_sup + def seminorm.pullback + def seminorm.seminorm_add_group_filter_basis + def seminorm.seminorm_basis_zero + theorem seminorm.seminorm_basis_zero_add + theorem seminorm.seminorm_basis_zero_iff + theorem seminorm.seminorm_basis_zero_intersect + theorem seminorm.seminorm_basis_zero_mem + theorem seminorm.seminorm_basis_zero_neg + theorem seminorm.seminorm_basis_zero_nonempty + theorem seminorm.seminorm_basis_zero_singleton_mem + theorem seminorm.seminorm_basis_zero_smul + theorem seminorm.seminorm_basis_zero_smul_left + theorem seminorm.seminorm_basis_zero_smul_right + theorem seminorm.seminorm_basis_zero_zero + def seminorm.seminorm_module_filter_basis + theorem seminorm.smul_le_smul + theorem seminorm.with_seminorms_eq 2022-01-31 15:42:13 ccbb848 feat(set_theory/ordinal_arithmetic): `lt_add_of_limit` (#11748) Both `lt_mul_of_limit` and `lt_opow_of_limit` already existed, so this exclusion is odd to say the least. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.lt_add_of_limit 2022-01-31 15:42:12 c0be8dc feat(model_theory/basic): define quotient structures (#11747) Defines prestructures and quotient structures ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.fun_map_quotient_mk + theorem first_order.language.realize_term_quotient_mk 2022-01-31 15:42:10 792d3e5 feat(group_theory/order_of_element): pow_eq_pow_iff_modeq (#11737) From flt-regular. ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem pow_eq_one_iff_modeq + theorem pow_eq_pow_iff_modeq 2022-01-31 15:42:09 76b2a0e feat(group_theory/nilpotent): abelian iff nilpotency class ≤ 1 (#11718) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem comm_group.nilpotency_class_le_one + def comm_group_of_nilpotency_class Modified src/group_theory/subgroup/basic.lean + theorem comm_group.center_eq_top + def group.comm_group_of_center_eq_top 2022-01-31 15:42:08 ff02774 feat(algebra/squarefree): norm_num extension for squarefree (#11666) Adds two methods for computing `squarefree`: an improved algorithm for VM computation of squarefreedom via the `min_sq_fac` function, and a proof procedure which follows the same evaluation strategy as a `norm_num` extension. ESTIMATED CHANGES Modified src/algebra/squarefree.lean + def nat.min_sq_fac + def nat.min_sq_fac_aux + theorem nat.min_sq_fac_aux_has_prop + theorem nat.min_sq_fac_dvd + theorem nat.min_sq_fac_has_prop + theorem nat.min_sq_fac_le_of_dvd + theorem nat.min_sq_fac_prime + def nat.min_sq_fac_prop + theorem nat.min_sq_fac_prop_div + theorem nat.squarefree_iff_min_sq_fac + theorem nat.squarefree_iff_prime_squarefree + theorem nat.squarefree_two + theorem tactic.norm_num.not_squarefree_mul + theorem tactic.norm_num.squarefree_bit10 + theorem tactic.norm_num.squarefree_bit1 + def tactic.norm_num.squarefree_helper + theorem tactic.norm_num.squarefree_helper_0 + theorem tactic.norm_num.squarefree_helper_1 + theorem tactic.norm_num.squarefree_helper_2 + theorem tactic.norm_num.squarefree_helper_3 + theorem tactic.norm_num.squarefree_helper_4 Modified src/data/nat/prime.lean +/- theorem nat.min_fac_aux_has_prop + theorem nat.min_fac_lemma Modified test/norm_num_ext.lean 2022-01-31 15:42:06 c04daaf feat(measure_theory): typeclass for measures positive on nonempty opens (#11652) Add a typeclass for measures positive on nonempty opens, migrate `is(_add?)_haar_measure` to this API. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem continuous.is_open_pos_measure_map Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/group/basic.lean - theorem is_open.haar_pos + theorem measure_theory.is_open_pos_measure_of_mul_left_invariant_of_compact + theorem measure_theory.is_open_pos_measure_of_mul_left_invariant_of_regular - theorem measure_theory.measure.haar_pos_of_nonempty_interior - theorem measure_theory.measure_pos_of_is_open_of_is_mul_left_invariant - theorem measure_theory.null_iff_empty_of_is_mul_left_invariant Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/haar_lebesgue.lean - theorem measure_theory.measure.add_haar_ball_pos - theorem measure_theory.measure.add_haar_closed_ball_pos Added src/measure_theory/measure/open_pos.lean + theorem continuous.ae_eq_iff_eq + theorem emetric.measure_ball_pos + theorem emetric.measure_closed_ball_pos + theorem has_le.le.is_open_pos_measure + theorem is_open.eq_empty_of_measure_zero + theorem is_open.measure_eq_zero_iff + theorem is_open.measure_ne_zero + theorem is_open.measure_pos + theorem is_open.measure_pos_iff + theorem measure_theory.measure.eq_of_ae_eq + theorem measure_theory.measure.eq_on_Icc_of_ae_eq + theorem measure_theory.measure.eq_on_Ico_of_ae_eq + theorem measure_theory.measure.eq_on_Ioc_of_ae_eq + theorem measure_theory.measure.eq_on_Ioo_of_ae_eq + theorem measure_theory.measure.eq_on_of_ae_eq + theorem measure_theory.measure.eq_on_open_of_ae_eq + theorem measure_theory.measure.interior_eq_empty_of_null + theorem measure_theory.measure.is_open_pos_measure_smul + theorem measure_theory.measure.measure_Iio_pos + theorem measure_theory.measure.measure_Ioi_pos + theorem measure_theory.measure.measure_Ioo_eq_zero + theorem measure_theory.measure.measure_Ioo_pos + theorem measure_theory.measure.measure_pos_of_mem_nhds + theorem measure_theory.measure.measure_pos_of_nonempty_interior + theorem metric.measure_ball_pos + theorem metric.measure_closed_ball_pos Modified src/topology/algebra/ordered/basic.lean + theorem Ico_subset_closure_interior + theorem Ioc_subset_closure_interior + theorem Ioo_subset_closure_interior + theorem closure_interior_Icc Modified src/topology/separation.lean + theorem set.eq_on.of_subset_closure 2022-01-31 15:42:05 d6440a8 feat(group_theory/nilpotent): add lemmas about `G / center G` (#11592) in particular its nilpotency class and an induction principle based on that. ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem comap_upper_central_series_quotient_center + theorem nilpotency_class_eq_quotient_center_plus_one + theorem nilpotency_class_quotient_center + theorem nilpotency_class_zero_iff_subsingleton + theorem nilpotent_center_quotient_ind Modified src/group_theory/quotient_group.lean + theorem quotient_group.comap_comap_center 2022-01-31 15:42:04 06bb5b6 feat(topology/nhds_set): define neighborhoods of a set (#11520) * Co-authored by @PatrickMassot * From the sphere eversion project ESTIMATED CHANGES Modified src/topology/basic.lean + theorem interior_eq_univ + theorem is_open.mem_nhds_iff + theorem subset_interior_iff Added src/topology/nhds_set.lean + theorem is_open.mem_nhds_set + theorem mem_nhds_set_empty + theorem mem_nhds_set_iff_exists + theorem mem_nhds_set_iff_forall + theorem mem_nhds_set_interior + theorem monotone_nhds_set + def nhds_set + theorem nhds_set_empty + theorem nhds_set_singleton + theorem nhds_set_univ + theorem subset_interior_iff_mem_nhds_set + theorem union_mem_nhds_set Modified src/topology/separation.lean + theorem compl_singleton_mem_nhds_iff + theorem compl_singleton_mem_nhds_set_iff + theorem injective_nhds_set + theorem nhds_le_nhds_set + theorem nhds_set_inj_iff + theorem nhds_set_le_iff + theorem strict_mono_nhds_set 2022-01-31 15:42:02 366d13e feat(scripts/lint_style): Add a check for unfreeze_local_instances (#11509) ESTIMATED CHANGES Modified scripts/lint-style.py Modified src/tactic/choose.lean 2022-01-31 14:14:34 ada43f0 feat(order/hom/complete_lattice): Complete lattice homomorphisms (#11741) Define frame homs and complete lattice homs using the `fun_like` along with weaker homomorphisms that only preserve `Sup`, `Inf`. ESTIMATED CHANGES Added src/order/hom/complete_lattice.lean + theorem Inf_hom.cancel_left + theorem Inf_hom.cancel_right + theorem Inf_hom.coe_comp + theorem Inf_hom.coe_id + theorem Inf_hom.coe_top + def Inf_hom.comp + theorem Inf_hom.comp_apply + theorem Inf_hom.comp_assoc + theorem Inf_hom.comp_id + theorem Inf_hom.ext + theorem Inf_hom.id_apply + theorem Inf_hom.id_comp + theorem Inf_hom.to_fun_eq_coe + theorem Inf_hom.top_apply + structure Inf_hom + theorem Sup_hom.bot_apply + theorem Sup_hom.cancel_left + theorem Sup_hom.cancel_right + theorem Sup_hom.coe_bot + theorem Sup_hom.coe_comp + theorem Sup_hom.coe_id + def Sup_hom.comp + theorem Sup_hom.comp_apply + theorem Sup_hom.comp_assoc + theorem Sup_hom.comp_id + theorem Sup_hom.ext + theorem Sup_hom.id_apply + theorem Sup_hom.id_comp + theorem Sup_hom.to_fun_eq_coe + structure Sup_hom + theorem complete_lattice_hom.cancel_left + theorem complete_lattice_hom.cancel_right + theorem complete_lattice_hom.coe_comp + theorem complete_lattice_hom.coe_id + def complete_lattice_hom.comp + theorem complete_lattice_hom.comp_apply + theorem complete_lattice_hom.comp_assoc + theorem complete_lattice_hom.comp_id + theorem complete_lattice_hom.ext + theorem complete_lattice_hom.id_apply + theorem complete_lattice_hom.id_comp + def complete_lattice_hom.to_Inf_hom + theorem complete_lattice_hom.to_fun_eq_coe + structure complete_lattice_hom + theorem frame_hom.bot_apply + theorem frame_hom.cancel_left + theorem frame_hom.cancel_right + theorem frame_hom.coe_bot + theorem frame_hom.coe_comp + theorem frame_hom.coe_id + def frame_hom.comp + theorem frame_hom.comp_apply + theorem frame_hom.comp_assoc + theorem frame_hom.comp_id + theorem frame_hom.ext + theorem frame_hom.id_apply + theorem frame_hom.id_comp + theorem frame_hom.to_fun_eq_coe + def frame_hom.to_lattice_hom + structure frame_hom + theorem map_infi + theorem map_infi₂ + theorem map_supr + theorem map_supr₂ 2022-01-31 14:14:32 08fed82 feat(category_theory/preadditive): the Yoneda embedding for preadditive categories (#11740) ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean + theorem category_theory.End.smul_left + theorem category_theory.End.smul_right Modified src/category_theory/preadditive/default.lean Modified src/category_theory/preadditive/opposite.lean Added src/category_theory/preadditive/yoneda.lean + def category_theory.preadditive_coyoneda + def category_theory.preadditive_coyoneda_obj + def category_theory.preadditive_yoneda + def category_theory.preadditive_yoneda_obj + theorem category_theory.whiskering_preadditive_coyoneda + theorem category_theory.whiskering_preadditive_yoneda 2022-01-31 14:14:30 323287e feat(data/polynomial/reverse): lemmas about evaluating reversed polynomials (#11705) ESTIMATED CHANGES Modified src/data/polynomial/reverse.lean + theorem polynomial.eval₂_reflect_eq_zero_iff + theorem polynomial.eval₂_reflect_mul_pow + theorem polynomial.eval₂_reverse_eq_zero_iff + theorem polynomial.eval₂_reverse_mul_pow + theorem polynomial.reflect_C + theorem polynomial.rev_at_zero 2022-01-31 14:14:27 bb2b58e feat(data/{nat,int}/parity): add division lemmas (#11570) Add lemmas of the form `even n → n / 2 * 2 = n` and `odd n → n / 2 * 2 + 1 = n` ESTIMATED CHANGES Modified src/data/int/parity.lean + theorem int.add_one_div_two_mul_two_of_odd + theorem int.div_two_mul_two_add_one_of_odd + theorem int.div_two_mul_two_of_even + theorem int.two_mul_div_two_add_one_of_odd + theorem int.two_mul_div_two_of_even + theorem int.two_mul_div_two_of_odd Modified src/data/nat/parity.lean + theorem nat.div_two_mul_two_add_one_of_odd + theorem nat.div_two_mul_two_of_even + theorem nat.one_add_div_two_mul_two_of_odd + theorem nat.two_mul_div_two_add_one_of_odd + theorem nat.two_mul_div_two_of_even 2022-01-31 14:14:26 6e016d2 feat(linear_algebra/{tensor,exterior,clifford}_algebra): these algebras are graded by powers of the submodules of their generators (#11542) This shows that: * The tensor and exterior algebras are `nat`-graded algebras, with each grade `n` corresponding to the submodule `(ι R).range ^ n` * The clifford algebra is a superalgebra (`zmod 2`-graded algebra), with even and odd grades corresponding to even and odd powers of the submodule `(ι Q).range` Eventually we'll also want to show that the tensor algebra is also graded with pieces in `pi_tensor_prod`, but that's a job for another time. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/direct_sum/internal.lean + theorem submodule.supr_eq_to_submodule_range Added src/linear_algebra/clifford_algebra/grading.lean + def clifford_algebra.even_odd + theorem clifford_algebra.even_odd_mul_le + def clifford_algebra.graded_algebra.ι + theorem clifford_algebra.graded_algebra.ι_apply + theorem clifford_algebra.graded_algebra.ι_sq_scalar + theorem clifford_algebra.one_le_even_odd_zero + theorem clifford_algebra.range_ι_le_even_odd_one + theorem clifford_algebra.supr_ι_range_eq_top Added src/linear_algebra/exterior_algebra/grading.lean + def exterior_algebra.graded_algebra.ι + theorem exterior_algebra.graded_algebra.ι_apply + theorem exterior_algebra.graded_algebra.ι_sq_zero Added src/linear_algebra/tensor_algebra/grading.lean + def tensor_algebra.graded_algebra.ι + theorem tensor_algebra.graded_algebra.ι_apply 2022-01-31 12:36:17 45cfb25 refactor(order/bounded_order): Use `is_min`/`is_max` (#11408) Golf `order.bounded_order` and `data.set.basic` using `is_min`/`is_max`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.subsingleton_is_bot +/- theorem set.subsingleton_is_top Modified src/data/set/intervals/basic.lean - theorem is_bot.Iic_eq - theorem is_bot.Iio_eq + theorem is_max.Ici_eq + theorem is_max.Ioi_eq + theorem is_min.Iic_eq + theorem is_min.Iio_eq - theorem is_top.Ici_eq - theorem is_top.Ioi_eq +/- theorem set.Ici_top +/- theorem set.Iic_bot +/- theorem set.Iio_bot +/- theorem set.Ioi_top Modified src/order/atoms.lean + theorem is_simple_order.eq_bot_of_lt + theorem is_simple_order.eq_top_of_lt Modified src/order/basic.lean + theorem eq_or_gt_of_le Modified src/order/bounded_order.lean +/- theorem bot_le + theorem bot_lt_top +/- theorem eq_bot_or_bot_lt +/- theorem is_bot_bot +/- theorem is_bot_iff_eq_bot + theorem is_max_iff_eq_top + theorem is_max_top + theorem is_min_bot + theorem is_min_iff_eq_bot +/- theorem is_top_iff_eq_top +/- theorem is_top_top +/- theorem le_top +/- theorem not_lt_bot +/- theorem not_top_lt +/- theorem top_ne_bot Modified src/order/max.lean - theorem is_bot.unique - theorem is_top.unique 2022-01-31 11:21:34 2e1d8d6 feat(ring_theory/roots_of_unity): `fun_like` support (#11735) - feat(ring_theory/roots_of_unity): ring_hom_class - oops these could've been monoid homs from the start ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.map_iff_of_injective +/- theorem is_primitive_root.map_of_injective +/- theorem is_primitive_root.of_map_of_injective + theorem map_root_of_unity_eq_pow_self + def restrict_roots_of_unity + theorem restrict_roots_of_unity_coe_apply - theorem ring_hom.map_root_of_unity_eq_pow_self - def ring_hom.restrict_roots_of_unity - theorem ring_hom.restrict_roots_of_unity_coe_apply 2022-01-31 11:21:33 406719e feat(order/hom/lattice): Composition of lattice homs (#11676) Define `top_hom.comp`, `bot_hom.comp`, `sup_hom.comp`, `inf_hom.comp`, `lattice_hom.comp`, `bounded_lattice_hom.comp`, `order_hom.to_lattice_hom`. ESTIMATED CHANGES Modified src/order/hom/lattice.lean + theorem bot_hom.cancel_left + theorem bot_hom.cancel_right + theorem bot_hom.coe_comp + def bot_hom.comp + theorem bot_hom.comp_apply + theorem bot_hom.comp_assoc + theorem bot_hom.comp_id + theorem bot_hom.id_comp + theorem bounded_lattice_hom.cancel_left + theorem bounded_lattice_hom.cancel_right + theorem bounded_lattice_hom.coe_comp + theorem bounded_lattice_hom.coe_comp_inf_hom + theorem bounded_lattice_hom.coe_comp_lattice_hom + theorem bounded_lattice_hom.coe_comp_sup_hom + def bounded_lattice_hom.comp + theorem bounded_lattice_hom.comp_apply + theorem bounded_lattice_hom.comp_assoc + theorem bounded_lattice_hom.comp_id + theorem bounded_lattice_hom.id_comp + theorem inf_hom.cancel_left + theorem inf_hom.cancel_right + theorem inf_hom.coe_comp + def inf_hom.comp + theorem inf_hom.comp_apply + theorem inf_hom.comp_assoc + theorem inf_hom.comp_id + theorem inf_hom.id_comp + theorem lattice_hom.cancel_left + theorem lattice_hom.cancel_right + theorem lattice_hom.coe_comp + theorem lattice_hom.coe_comp_inf_hom + theorem lattice_hom.coe_comp_sup_hom + def lattice_hom.comp + theorem lattice_hom.comp_apply + theorem lattice_hom.comp_assoc + theorem lattice_hom.comp_id + theorem lattice_hom.id_comp + theorem order_hom_class.coe_to_lattice_hom + def order_hom_class.to_lattice_hom + theorem order_hom_class.to_lattice_hom_apply + def order_hom_class.to_lattice_hom_class + theorem sup_hom.cancel_left + theorem sup_hom.cancel_right + theorem sup_hom.coe_comp + def sup_hom.comp + theorem sup_hom.comp_apply + theorem sup_hom.comp_assoc + theorem sup_hom.comp_id + theorem sup_hom.id_comp + theorem top_hom.cancel_left + theorem top_hom.cancel_right + theorem top_hom.coe_comp + def top_hom.comp + theorem top_hom.comp_apply + theorem top_hom.comp_assoc + theorem top_hom.comp_id + theorem top_hom.id_comp 2022-01-31 09:46:30 16274f6 chore(analysis/inner_product_space/lax_milgram): docs fixes (#11745) A couple of corrections, and a couple of additions of namespaces to docstrings so that they get hyperlinks when docgen is run. ESTIMATED CHANGES Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/lax_milgram.lean 2022-01-31 09:46:29 4388743 feat(algebra/algebra/basic): add 1-related lemmas for `aut` (#11738) from flt-regular ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.one_apply +/- def alg_equiv.refl 2022-01-31 09:46:28 7468d8d feat(measure_theory/integral/lebesgue): weaken assumptions for with_density lemmas (#11711) We state more precise versions of some lemmas about the measure `μ.with_density f`, making it possible to remove some assumptions down the road. For instance, the lemma ```lean integrable g (μ.with_density f) ↔ integrable (λ x, g x * (f x).to_real) μ ``` currently requires the measurability of `g`, while we can completely remove it with the new lemmas. We also make `lintegral` irreducible. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem ae_measurable_of_unif_approx Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.coe_to_nnreal_ae_eq + theorem measure_theory.integrable_with_density_iff_integrable_smul' + theorem measure_theory.integrable_with_density_iff_integrable_smul Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.ae_measurable_with_density_ennreal_iff + theorem measure_theory.ae_measurable_with_density_iff + theorem measure_theory.ae_with_density_iff + theorem measure_theory.ae_with_density_iff_ae_restrict +/- def measure_theory.lintegral +/- theorem measure_theory.lintegral_map' +/- theorem measure_theory.lintegral_map + theorem measure_theory.lintegral_map_le + theorem measure_theory.lintegral_with_density_eq_lintegral_mul_non_measurable + theorem measure_theory.lintegral_with_density_eq_lintegral_mul_non_measurable₀ + theorem measure_theory.lintegral_with_density_eq_lintegral_mul₀' + theorem measure_theory.lintegral_with_density_eq_lintegral_mul₀ + theorem measure_theory.lintegral_with_density_le_lintegral_mul + theorem measure_theory.set_lintegral_with_density_eq_set_lintegral_mul_non_measurable + theorem measure_theory.set_lintegral_with_density_eq_set_lintegral_mul_non_measurable₀ + theorem measure_theory.supr_lintegral_measurable_le_eq_lintegral + theorem measure_theory.with_density_apply_eq_zero + theorem measure_theory.with_density_congr_ae Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.ae_of_ae_restrict_of_ae_restrict_compl Modified src/probability_theory/density.lean 2022-01-31 09:46:27 0c0ab69 feat(topology/algebra/continuous_monoid_hom): Add `topological_group` instance (#11707) This PR proves that continuous monoid homs form a topological group. ESTIMATED CHANGES Modified src/topology/algebra/continuous_monoid_hom.lean + theorem continuous_monoid_hom.is_embedding + theorem continuous_monoid_hom.is_inducing 2022-01-31 09:46:26 b3ad3f2 feat(data/set/lattice): review (#11672) * generalize `set.Union_coe_set` and `set.Inter_coe_set` to dependent functions; * add `bInter_Union`, `sUnion_Union`; * drop `sUnion_bUnion`, `sInter_bUnion`. ESTIMATED CHANGES Modified src/data/set/lattice.lean +/- theorem set.Inter_coe_set +/- theorem set.Union_coe_set + theorem set.bInter_Union - theorem set.sInter_bUnion + theorem set.sUnion_Union - theorem set.sUnion_bUnion Modified src/order/filter/basic.lean Modified src/topology/metric_space/baire.lean Modified src/topology/paracompact.lean 2022-01-31 09:17:53 6319a23 feat(number_theory/cyclotomic): simplify `ne_zero`s (#11715) For flt-regular. ESTIMATED CHANGES Modified src/algebra/ne_zero.lean +/- theorem ne_zero.of_no_zero_smul_divisors + theorem ne_zero.trans Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/cyclotomic/zeta.lean 2022-01-31 07:25:05 8a67cf5 feat(ring_theory/roots_of_unity): turn `is_primitive_root` into a member of `roots_of_unity` (#11739) from flt-regular ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + def is_primitive_root.to_roots_of_unity 2022-01-31 00:40:09 50cdb95 fix(tactic/suggest): make `library_search` aware of definition of `ne` (#11742) `library_search` wasn't including results like `¬ a = b` to solve goals like `a ≠ b` and vice-versa. Closes #3428 ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean 2022-01-30 23:01:38 07735b8 fix(tactic/squeeze_simp): "match failed" when `simp` works (#11659) Closes #11196. ESTIMATED CHANGES Modified src/tactic/squeeze.lean Modified test/squeeze.lean + theorem asda + theorem pnat.asda 2022-01-30 18:57:22 b0fc10a chore(ring_theory/polynomial/chebyshev): simplify argument using new `linear_combination` tactic (#11736) cc @agoldb10 @robertylewis ESTIMATED CHANGES Modified src/ring_theory/polynomial/chebyshev.lean 2022-01-30 15:41:10 97f61df feat(group_theory/sylow): preimages of sylow groups (#11722) ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.coe_comap_of_injective + theorem sylow.coe_comap_of_ker_is_p_group + theorem sylow.coe_subtype + def sylow.comap_of_injective + def sylow.comap_of_ker_is_p_group + def sylow.subtype 2022-01-30 14:09:00 02c720e chore(*): Rename `prod_dvd_prod` (#11734) In #11693 I introduced the counterpart for `multiset` of `finset.prod_dvd_prod`. It makes sense for these to have the same name, but there's already a different lemma called `multiset.prod_dvd_prod`, so the new lemma was named `multiset.prod_dvd_prod_of_dvd` instead. As discussed with @riccardobrasca and @ericrbg at #11693, this PR brings the names of the two counterpart lemmas into alignment, and also renames `multiset.prod_dvd_prod` to something more informative. Renaming as follows: `multiset.prod_dvd_prod` to `multiset.prod_dvd_prod_of_le` `finset.prod_dvd_prod` to `finset.prod_dvd_prod_of_dvd` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean - theorem finset.prod_dvd_prod + theorem finset.prod_dvd_prod_of_dvd Modified src/algebra/big_operators/multiset.lean - theorem multiset.prod_dvd_prod + theorem multiset.prod_dvd_prod_of_le Modified src/algebra/squarefree.lean Modified src/ring_theory/unique_factorization_domain.lean 2022-01-30 11:14:54 a248bef feat(data/pnat/basic): 0 < n as a fact (#11729) ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.fact_pos 2022-01-30 10:31:37 dde904e chore(ring_theory/localization) weaken hypothesis from field to comm_ring (#11713) also making `B` an explicit argument ESTIMATED CHANGES Modified src/number_theory/class_number/finite.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/localization.lean +/- theorem is_fraction_ring.comap_is_algebraic_iff +/- theorem is_fraction_ring.is_algebraic_iff 2022-01-30 09:39:36 1ea49d0 feat(tactic/linear_combination): add tactic for combining equations (#11646) This new tactic attempts to prove a target equation by creating a linear combination of a list of equalities. The name of this tactic is currently `linear_combination`, but I am open to other possible names. An example of how to use this tactic is shown below: ``` example (x y : ℤ) (h1 : x*y + 2*x = 1) (h2 : x = y) : x*y = -2*y + 1 := by linear_combination (h1, 1) (h2, -2) ``` ESTIMATED CHANGES Added src/tactic/linear_combination.lean + theorem linear_combo.all_on_left_equiv + theorem linear_combo.left_minus_right + theorem linear_combo.left_mul_both_sides + theorem linear_combo.replace_eq_expr + theorem linear_combo.sum_two_equations Added test/linear_combination.lean 2022-01-30 07:28:22 73e45c6 chore(analysis/normed_space/star): create new folder for normed star rings (#11732) This PR moves the file `analysis/normed_space/star.lean` to the new folder `analysis/normed_space/star` (where it of course becomes `basic.lean`). I expect a lot of material about C*-algebras to land in this folder in the (hopefully) near future. ESTIMATED CHANGES Modified src/analysis/inner_product_space/dual.lean Renamed src/analysis/normed_space/star.lean to src/analysis/normed_space/star/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/topology/continuous_function/bounded.lean 2022-01-30 05:38:03 09d4f48 chore(measure_theory/function/conditional_expectation): fix typo (#11731) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean 2022-01-30 00:12:37 af1290c feat(field_theory/ratfunc): rational functions as Laurent series (#11276) ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean + theorem ratfunc.algebra_map_apply + theorem ratfunc.algebra_map_apply_div + theorem ratfunc.coe_C + theorem ratfunc.coe_X + theorem ratfunc.coe_add + def ratfunc.coe_alg_hom + theorem ratfunc.coe_apply + theorem ratfunc.coe_def + theorem ratfunc.coe_div + theorem ratfunc.coe_injective + theorem ratfunc.coe_mul + theorem ratfunc.coe_num_denom + theorem ratfunc.coe_one + theorem ratfunc.coe_smul + theorem ratfunc.coe_zero + theorem ratfunc.div_smul + def ratfunc.lift_alg_hom + theorem ratfunc.lift_alg_hom_apply + theorem ratfunc.lift_alg_hom_apply_div + theorem ratfunc.lift_alg_hom_apply_of_fraction_ring_mk + theorem ratfunc.lift_alg_hom_injective + def ratfunc.lift_monoid_with_zero_hom + theorem ratfunc.lift_monoid_with_zero_hom_apply + theorem ratfunc.lift_monoid_with_zero_hom_apply_div + theorem ratfunc.lift_monoid_with_zero_hom_apply_of_fraction_ring_mk + theorem ratfunc.lift_monoid_with_zero_hom_injective + def ratfunc.lift_ring_hom + theorem ratfunc.lift_ring_hom_apply + theorem ratfunc.lift_ring_hom_apply_div + theorem ratfunc.lift_ring_hom_apply_of_fraction_ring_mk + theorem ratfunc.lift_ring_hom_injective + theorem ratfunc.map_denom_ne_zero + theorem ratfunc.smul_eq_C_mul + theorem ratfunc.smul_eq_C_smul Modified src/ring_theory/euclidean_domain.lean + theorem gcd_ne_zero_of_left + theorem gcd_ne_zero_of_right Modified src/ring_theory/hahn_series.lean + theorem hahn_series.algebra_map_apply' + theorem polynomial.algebra_map_hahn_series_apply + theorem polynomial.algebra_map_hahn_series_injective Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series/basic.lean 2022-01-29 21:10:10 ff35218 feat(analysis/convex/topology): add lemmas (#11615) ESTIMATED CHANGES Modified src/analysis/convex/topology.lean + theorem convex.combo_interior_self_subset_interior + theorem convex.combo_mem_interior_left + theorem convex.combo_mem_interior_right + theorem convex.combo_self_interior_subset_interior + theorem convex.open_segment_subset_interior_left + theorem convex.open_segment_subset_interior_right Modified src/topology/algebra/group.lean +/- theorem is_open.mul_left Modified src/topology/algebra/ordered/basic.lean + theorem is_closed.epigraph + theorem is_closed.hypograph 2022-01-29 20:28:18 4085363 feat(number_theory/prime_counting): The prime counting function (#9080) With an eye to implementing [this proof](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.238002/near/251178921), I am adding a file to define the prime counting function and prove a simple upper bound on it. ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.Ico_filter_coprime_le + theorem nat.filter_coprime_Ico_eq_totient +/- def nat.totient +/- theorem nat.totient_eq_card_coprime Added src/number_theory/prime_counting.lean + theorem nat.monotone_prime_counting' + theorem nat.monotone_prime_counting + def nat.prime_counting' + theorem nat.prime_counting'_add_le + def nat.prime_counting Modified src/set_theory/fincard.lean - def nat.card +/- theorem nat.card_eq_fintype_card +/- theorem nat.card_eq_zero_of_infinite 2022-01-29 19:47:13 74250a0 chore(representation_theory/maschke): remove recover (#11721) ESTIMATED CHANGES Modified src/representation_theory/maschke.lean 2022-01-29 14:01:52 49b8b91 feat(data/fintype/order): `bool` is a boolean algebra (#11694) Provide the `boolean_algebra` instance for `bool` and use the machinery from `data.fintype.order` to deduce `complete_boolean_algebra bool` and `complete_linear_order bool`. ESTIMATED CHANGES Modified src/data/bool/basic.lean + theorem bool.band_bnot_self + theorem bool.bnot_band_self + theorem bool.bnot_bor_self + theorem bool.bor_bnot_self Modified src/data/fintype/order.lean Modified src/order/boolean_algebra.lean Modified src/order/lattice.lean 2022-01-29 03:47:21 fc4e471 feat(measure_theory/group/basic): make is_[add|mul]_[left|right]_invariant classes (#11655) * Simplify the definitions of these classes * Generalize many results about topological groups to measurable groups (still to do in `group/prod`) * Simplify some proofs * Make function argument of `integral_mul_[left|right]_eq_self` explicit (otherwise it is hard to apply this lemma in case the function is not a variable) ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/measure_theory/group/basic.lean + theorem measure_theory.forall_measure_preimage_mul_iff + theorem measure_theory.forall_measure_preimage_mul_right_iff - theorem measure_theory.is_mul_left_invariant.inv - theorem measure_theory.is_mul_left_invariant.measure_lt_top_of_is_compact' - theorem measure_theory.is_mul_left_invariant.measure_lt_top_of_is_compact - theorem measure_theory.is_mul_left_invariant.measure_ne_zero_iff_nonempty - theorem measure_theory.is_mul_left_invariant.measure_pos_iff_nonempty - theorem measure_theory.is_mul_left_invariant.measure_pos_of_is_open - theorem measure_theory.is_mul_left_invariant.measure_preimage_mul - theorem measure_theory.is_mul_left_invariant.null_iff - theorem measure_theory.is_mul_left_invariant.null_iff_empty - theorem measure_theory.is_mul_left_invariant.smul - def measure_theory.is_mul_left_invariant - theorem measure_theory.is_mul_left_invariant_inv - theorem measure_theory.is_mul_right_invariant.inv - theorem measure_theory.is_mul_right_invariant.smul - def measure_theory.is_mul_right_invariant - theorem measure_theory.is_mul_right_invariant_inv +/- theorem measure_theory.lintegral_eq_zero_of_is_mul_left_invariant +/- theorem measure_theory.lintegral_mul_left_eq_self +/- theorem measure_theory.lintegral_mul_right_eq_self + theorem measure_theory.map_mul_left_eq_self + theorem measure_theory.map_mul_right_eq_self - theorem measure_theory.measure.haar_preimage_mul - theorem measure_theory.measure.haar_preimage_mul_right +/- theorem measure_theory.measure.inv_apply - theorem measure_theory.measure.is_mul_left_invariant_haar - theorem measure_theory.measure.map_mul_left_eq_self - theorem measure_theory.measure.map_mul_right_eq_self + theorem measure_theory.measure_lt_top_of_is_compact_of_is_mul_left_invariant' + theorem measure_theory.measure_lt_top_of_is_compact_of_is_mul_left_invariant + theorem measure_theory.measure_ne_zero_iff_nonempty_of_is_mul_left_invariant + theorem measure_theory.measure_pos_iff_nonempty_of_is_mul_left_invariant + theorem measure_theory.measure_pos_of_is_open_of_is_mul_left_invariant + theorem measure_theory.measure_preimage_mul + theorem measure_theory.measure_preimage_mul_right + theorem measure_theory.null_iff_empty_of_is_mul_left_invariant + theorem measure_theory.null_iff_of_is_mul_left_invariant +/- theorem measure_theory.regular_inv_iff Modified src/measure_theory/group/prod.lean +/- theorem measure_theory.lintegral_lintegral_mul_inv +/- theorem measure_theory.map_prod_inv_mul_eq +/- theorem measure_theory.map_prod_inv_mul_eq_swap +/- theorem measure_theory.map_prod_mul_eq +/- theorem measure_theory.map_prod_mul_eq_swap +/- theorem measure_theory.map_prod_mul_inv_eq +/- theorem measure_theory.measure_inv_null +/- theorem measure_theory.measure_lintegral_div_measure +/- theorem measure_theory.measure_mul_measure_eq +/- theorem measure_theory.measure_mul_right_ne_zero +/- theorem measure_theory.measure_mul_right_null +/- theorem measure_theory.quasi_measure_preserving_inv Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.integral_mul_left_eq_self +/- theorem measure_theory.integral_mul_right_eq_self +/- theorem measure_theory.integral_zero_of_mul_left_eq_neg +/- theorem measure_theory.integral_zero_of_mul_right_eq_neg Modified src/measure_theory/measure/haar.lean +/- theorem measure_theory.measure.haar_measure_unique - theorem measure_theory.measure.is_mul_left_invariant_haar_measure +/- theorem measure_theory.measure.regular_of_is_mul_left_invariant Modified src/measure_theory/measure/haar_lebesgue.lean - theorem measure_theory.is_add_left_invariant_real_volume - theorem measure_theory.is_add_left_invariant_real_volume_pi 2022-01-29 01:17:00 44105f8 feat(analysis/inner_product_space): proof of the Lax Milgram theorem (#11491) My work on the Lax Milgram theorem, as suggested by @hrmacbeth. Done following the [slides from Peter Howard (Texas A&M University)](https://www.math.tamu.edu/~phoward/m612/s20/elliptic2.pdf). Closes #10213. ESTIMATED CHANGES Modified docs/references.bib Modified docs/undergrad.yaml Modified src/analysis/inner_product_space/dual.lean + def inner_product_space.continuous_linear_map_of_bilin + theorem inner_product_space.continuous_linear_map_of_bilin_apply + theorem inner_product_space.unique_continuous_linear_map_of_bilin Added src/analysis/inner_product_space/lax_milgram.lean + theorem is_coercive.antilipschitz + theorem is_coercive.bounded_below + theorem is_coercive.closed_range + def is_coercive.continuous_linear_equiv_of_bilin + theorem is_coercive.continuous_linear_equiv_of_bilin_apply + theorem is_coercive.ker_eq_bot + theorem is_coercive.range_eq_top + theorem is_coercive.unique_continuous_linear_equiv_of_bilin Modified src/analysis/normed_space/operator_norm.lean + def is_coercive 2022-01-29 00:33:42 f51d6bf chore(ring_theory/polynomial/tower): weaken comm_semiring hypothesis to semiring (#11712) …to semiring ESTIMATED CHANGES Modified src/ring_theory/polynomial/tower.lean 2022-01-29 00:04:55 601ea91 feat(data/nat/mul_ind): generalise rec_on_prime to assume positivity (#11714) This makes the multiplicative induction principles slightly stronger, as the coprimality part can assume the given values are positive. ESTIMATED CHANGES Modified src/data/nat/factorization.lean Modified src/data/nat/mul_ind.lean 2022-01-28 16:51:38 d58ce5a feat(number_theory/cyclotomic/zeta): add is_cyclotomic_extension.zeta (#11695) We add `is_cyclotomic_extension.zeta n A B`: any primitive `n`-th root of unity in a cyclotomic extension. From flt-regular. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean Added src/number_theory/cyclotomic/zeta.lean + def is_cyclotomic_extension.zeta.embeddings_equiv_primitive_roots + def is_cyclotomic_extension.zeta.power_basis + theorem is_cyclotomic_extension.zeta.power_basis_gen_minpoly + def is_cyclotomic_extension.zeta + theorem is_cyclotomic_extension.zeta_minpoly + theorem is_cyclotomic_extension.zeta_primitive_root + theorem is_cyclotomic_extension.zeta_spec' + theorem is_cyclotomic_extension.zeta_spec 2022-01-28 16:51:36 02c3146 feat(analysis/complex): removable singularity theorem (#11686) ESTIMATED CHANGES Added src/analysis/complex/removable_singularity.lean + theorem complex.analytic_at_of_differentiable_on_punctured_nhds_of_continuous_at + theorem complex.differentiable_on_compl_singleton_and_continuous_at_iff + theorem complex.differentiable_on_dslope + theorem complex.differentiable_on_update_lim_insert_of_is_o + theorem complex.differentiable_on_update_lim_of_bdd_above + theorem complex.differentiable_on_update_lim_of_is_o + theorem complex.tendsto_lim_of_differentiable_on_punctured_nhds_of_bounded_under + theorem complex.tendsto_lim_of_differentiable_on_punctured_nhds_of_is_o 2022-01-28 16:51:34 7e8cb75 refactor(algebra/linear_ordered_comm_group_with_zero, *): mostly take advantage of the new classes for `linear_ordered_comm_group_with_zero` (#7645) This PR continues the refactor of the `ordered` hierarchy, begun in #7371. In this iteration, I weakened the assumptions of the lemmas in `ordered_group`. The bulk of the changes are in the two files * `algebra/ordered_monoid_lemmas` * `algebra/ordered_group` while the remaining files have been edited mostly to accommodate for name/assumption changes. I have tried to be careful to maintain the **exact** assumptions of each one of the `norm_num` and `linarith` lemmas. For this reason, some lemmas have a proof that is simply an application of a lemma with weaker assumptions. The end result is that no lemma whose proof involved a call to `norm_num` or `linarith` broke. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem has_mul.to_covariant_class_left + theorem has_mul.to_covariant_class_right Modified src/algebra/order/with_zero.lean + theorem left.one_le_pow_of_le + theorem left.pow_lt_one_iff + theorem left.pow_lt_one_of_lt + theorem pow_le_pow_of_le + theorem right.one_le_pow_of_le + theorem right.pow_le_one_of_le + theorem right.pow_lt_one_iff + theorem right.pow_lt_one_of_lt Modified src/data/nat/cast.lean Modified src/data/real/ereal.lean 2022-01-28 15:19:21 dddf6eb feat(data/fintype/order): More and better instances (#11702) In a fintype, this allows to promote * `distrib_lattice` to `complete_distrib_lattice` * `boolean_algebra` to `complete_boolean_algebra` Also strengthen * `fintype.to_order_bot` * `fintype.to_order_top` * `fintype.to_bounded_order` * `complete_linear_order.to_conditionally_complete_linear_order_bot` ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.inf_sup_distrib_left + theorem finset.inf_sup_distrib_right + theorem finset.sup_inf_distrib_left + theorem finset.sup_inf_distrib_right Modified src/data/fintype/order.lean +/- def fintype.to_bounded_order +/- def fintype.to_order_bot +/- def fintype.to_order_top Modified src/order/conditionally_complete_lattice.lean 2022-01-28 15:19:20 6ca08e8 feat(algebra/ne_zero): add `coe_trans` instance (#11700) This is super-useful for `flt_regular`, meaning we don't have to write all of our lemmata as `ne_zero ((n : ℕ) : R)`. ESTIMATED CHANGES 2022-01-28 15:19:19 de27bfc feat(algebra/big_operators/{basic,multiset}): two `multiset.prod` lemmas (#11693) Two lemmas suggested by Riccardo Brasca on #11572: `to_finset_prod_dvd_prod`: `S.to_finset.prod id ∣ S.prod` `prod_dvd_prod_of_dvd`: For any `S : multiset α`, if `∀ a ∈ S, g1 a ∣ g2 a` then `S.prod g1 ∣ S.prod g2` (a counterpart to `finset.prod_dvd_prod`) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem multiset.to_finset_prod_dvd_prod Modified src/algebra/big_operators/multiset.lean + theorem multiset.prod_dvd_prod_of_dvd 2022-01-28 15:19:17 c50a60d feat(analysis/convex/specific_functions): sin is strictly concave (#11688) ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean + theorem strict_concave_on_cos_Icc + theorem strict_concave_on_sin_Icc 2022-01-28 15:19:16 92c64c4 feat(group_theory/nilpotent): add upper_central_series_eq_top_iff_nilpotency_class_le (#11670) and the analogue for the lower central series. ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem lower_central_series_eq_bot_iff_nilpotency_class_le + theorem upper_central_series_eq_top_iff_nilpotency_class_le 2022-01-28 15:19:15 7a485b1 feat(topology/continuous_function/algebra): `C(α, β)` is a topological group (#11665) This PR proves that `C(α, β)` is a topological group. I had to borrow the fix from #11229 to avoid a diamond. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/compact.lean + theorem continuous_map.uniform_embedding_equiv_bounded_of_compact + theorem continuous_map.uniform_inducing_equiv_bounded_of_compact 2022-01-28 15:19:14 113ab32 feat(ring_theory/power_series/basic): API about inv (#11617) Also rename protected lemmas `mul_inv` to `mul_inv_cancel` `inv_mul` to `inv_mul_cancel` ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean Modified src/ring_theory/power_series/basic.lean + theorem mv_power_series.C_inv + theorem mv_power_series.X_inv + theorem mv_power_series.one_inv + theorem mv_power_series.smul_eq_C_mul + theorem mv_power_series.smul_inv + theorem mv_power_series.zero_inv + theorem polynomial.constant_coeff_coe + theorem power_series.C_inv + theorem power_series.X_inv + theorem power_series.one_inv + theorem power_series.smul_eq_C_mul + theorem power_series.smul_inv + theorem power_series.zero_inv 2022-01-28 15:19:13 36dd6a6 feat(algebra/squarefree): squarefree iff no square irreducible divisors (#11544) ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem irreducible_sq_not_dvd_iff_eq_zero_and_no_irreducibles_or_squarefree + theorem nat.squarefree_iff_prime_sq_not_dvd + theorem squarefree_iff_irreducible_sq_not_dvd_of_exists_irreducible + theorem squarefree_iff_irreducible_sq_not_dvd_of_ne_zero 2022-01-28 15:19:11 fb9c5d3 feat(cyclotomic/basic): diverse roots of unity lemmas (#11473) From flt-regular. ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic.roots_eq_primitive_roots_val + theorem polynomial.cyclotomic.roots_to_finset_eq_primitive_roots +/- theorem polynomial.is_root_cyclotomic +/- theorem polynomial.is_root_cyclotomic_iff + theorem polynomial.is_root_of_unity_of_root_cyclotomic + theorem polynomial.roots_cyclotomic_nodup 2022-01-28 15:19:10 91a1afb feat(algebraic_geometry): The function field is the fraction field of stalks (#11129) ESTIMATED CHANGES Modified src/algebraic_geometry/function_field.lean + theorem algebraic_geometry.function_field_is_fraction_ring_of_is_affine_open + theorem algebraic_geometry.generic_point_eq_bot_of_affine + theorem algebraic_geometry.generic_point_eq_of_is_open_immersion + theorem algebraic_geometry.is_affine_open.prime_ideal_of_generic_point 2022-01-28 15:19:08 0b6330d feat(data/finsupp/interval): Finitely supported functions to a locally finite order are locally finite (#10930) ... when the codomain itself is locally finite. This allows getting rid of `finsupp.Iic_finset`. ESTIMATED CHANGES Modified src/data/finsupp/antidiagonal.lean - def finsupp.Iic_finset - theorem finsupp.coe_Iic_finset - theorem finsupp.finite_le_nat - theorem finsupp.finite_lt_nat - theorem finsupp.mem_Iic_finset Added src/data/finsupp/interval.lean + theorem finsupp.card_Icc + theorem finsupp.card_Ico + theorem finsupp.card_Ioc + theorem finsupp.card_Ioo + theorem finsupp.mem_range_Icc_apply_iff + theorem finsupp.mem_range_singleton_apply_iff + def finsupp.range_Icc + def finsupp.range_singleton Modified src/ring_theory/power_series/basic.lean 2022-01-28 13:31:09 445be96 fix(tactic/squeeze): `squeeze_simp` providing invalid suggestions (#11696) `squeeze_simp` was previously permuting the lemmas passed to `simp`, which caused failures in cases where the lemma order mattered. The fix is to ensure that `squeeze_simp` does not change the order of passed lemmas. Closes #3097 ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/squeeze.lean Modified test/squeeze.lean + def a + def b + def c + def f + theorem k + theorem l 2022-01-28 13:31:08 3837abc feat(data/list/*): subperm_singleton_iff (#11680) ESTIMATED CHANGES Modified src/data/list/count.lean +/- theorem list.count_pos + theorem list.one_le_count_iff_mem Modified src/data/list/perm.lean + theorem list.subperm_singleton_iff 2022-01-28 13:31:06 1e44add feat(order/filter/countable_Inter): review (#11673) - drop `_sets` in more names; - add `filter.of_countable_Inter` and instances for `filter.map`/`filter.comap`; - add docs. ESTIMATED CHANGES Modified src/order/filter/countable_Inter.lean + theorem countable_Inter_mem - theorem countable_Inter_mem_sets + theorem countable_sInter_mem - theorem countable_sInter_mem_sets + theorem filter.mem_of_countable_Inter + def filter.of_countable_Inter 2022-01-28 13:31:05 680733c feat(order/hom/basic): `compl` as a dual order isomorphism (#11630) ESTIMATED CHANGES Modified src/order/hom/basic.lean + theorem compl_antitone + theorem compl_strict_anti + def order_iso.compl 2022-01-28 13:31:04 ff241e1 feat(order/max): Predicate for minimal/maximal elements, typeclass for orders without bottoms (#11618) This defines * `is_min`: Predicate for a minimal element * `is_max`: Predicate for a maximal element * `no_bot_order`: Predicate for an order without bottoms * `no_top_order`: Predicate for an order without tops ESTIMATED CHANGES Modified src/order/directed.lean + theorem is_bot_iff_is_min + theorem is_top_iff_is_max Modified src/order/max.lean + theorem is_bot.mono - theorem is_bot.to_dual + theorem is_bot_of_dual_iff + theorem is_bot_to_dual_iff + theorem is_max.mono + theorem is_max.not_lt + def is_max + theorem is_max_iff_forall_not_lt + theorem is_max_of_dual_iff + theorem is_max_to_dual_iff + theorem is_min.mono + theorem is_min.not_lt + def is_min + theorem is_min_iff_forall_not_lt + theorem is_min_of_dual_iff + theorem is_min_to_dual_iff + theorem is_top.mono - theorem is_top.to_dual +/- theorem is_top.unique + theorem is_top_of_dual_iff + theorem is_top_to_dual_iff +/- theorem not_is_bot + theorem not_is_max + theorem not_is_max_iff + theorem not_is_min + theorem not_is_min_iff +/- theorem not_is_top Modified src/order/order_dual.lean 2022-01-28 13:31:02 2fa5977 feat(category_theory/bicategory/natural_transformation): define oplax natural transformations (#11404) This PR define oplax natural transformations between oplax functors. We give a composition and a category structure on oplax natural transformations. ESTIMATED CHANGES Added src/category_theory/bicategory/natural_transformation.lean + def category_theory.oplax_nat_trans.id + def category_theory.oplax_nat_trans.modification.id + def category_theory.oplax_nat_trans.modification.vcomp + theorem category_theory.oplax_nat_trans.modification.whisker_left_naturality + theorem category_theory.oplax_nat_trans.modification.whisker_right_naturality + structure category_theory.oplax_nat_trans.modification + def category_theory.oplax_nat_trans.modification_iso.of_components + def category_theory.oplax_nat_trans.vcomp + theorem category_theory.oplax_nat_trans.whisker_left_naturality_comp + theorem category_theory.oplax_nat_trans.whisker_left_naturality_id + theorem category_theory.oplax_nat_trans.whisker_left_naturality_naturality + theorem category_theory.oplax_nat_trans.whisker_right_naturality_comp + theorem category_theory.oplax_nat_trans.whisker_right_naturality_id + theorem category_theory.oplax_nat_trans.whisker_right_naturality_naturality + structure category_theory.oplax_nat_trans 2022-01-28 13:31:00 b9db169 chore(order/locally_finite): fill in finset interval API (#11338) A bunch of statements about finset intervals, mimicking the set interval API and mostly proved using it. `simp` attributes are chosen as they were for sets. Also some golf. ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean + theorem finset.Icc_diff_Ico_self + theorem finset.Icc_diff_Ioc_self + theorem finset.Icc_diff_Ioo_self + theorem finset.Icc_diff_both + theorem finset.Icc_eq_cons_Ico + theorem finset.Icc_eq_cons_Ioc +/- theorem finset.Icc_erase_left +/- theorem finset.Icc_erase_right + theorem finset.Icc_ssubset_Icc_left + theorem finset.Icc_ssubset_Icc_right + theorem finset.Icc_subset_Icc + theorem finset.Icc_subset_Icc_iff + theorem finset.Icc_subset_Icc_left + theorem finset.Icc_subset_Icc_right + theorem finset.Icc_subset_Ici_self + theorem finset.Icc_subset_Ico_iff + theorem finset.Icc_subset_Ico_right + theorem finset.Icc_subset_Iic_self + theorem finset.Icc_subset_Ioc_iff + theorem finset.Icc_subset_Ioo_iff + theorem finset.Ici_eq_cons_Ioi + theorem finset.Ici_erase + theorem finset.Ico_diff_Ioo_self + theorem finset.Ico_erase_left +/- theorem finset.Ico_filter_le_of_right_le +/- theorem finset.Ico_filter_lt_of_le_left +/- theorem finset.Ico_filter_lt_of_le_right +/- theorem finset.Ico_filter_lt_of_right_le +/- theorem finset.Ico_insert_right +/- theorem finset.Ico_self + theorem finset.Ico_subset_Icc_self + theorem finset.Ico_subset_Ici_self + theorem finset.Ico_subset_Ico + theorem finset.Ico_subset_Ico_left + theorem finset.Ico_subset_Ico_right + theorem finset.Ico_subset_Iic_self + theorem finset.Ico_subset_Iio_self + theorem finset.Ico_subset_Ioo_left + theorem finset.Iic_eq_cons_Iio + theorem finset.Iic_erase + theorem finset.Iio_insert + theorem finset.Iio_subset_Iic_self + theorem finset.Ioc_diff_Ioo_self + theorem finset.Ioc_erase_right + theorem finset.Ioc_insert_left +/- theorem finset.Ioc_self + theorem finset.Ioc_subset_Icc_self + theorem finset.Ioc_subset_Ici_self + theorem finset.Ioc_subset_Iic_self + theorem finset.Ioc_subset_Ioc + theorem finset.Ioc_subset_Ioc_left + theorem finset.Ioc_subset_Ioc_right + theorem finset.Ioc_subset_Ioi_self + theorem finset.Ioc_subset_Ioo_right + theorem finset.Ioi_insert + theorem finset.Ioi_subset_Ici_self +/- theorem finset.Ioo_insert_left + theorem finset.Ioo_insert_right +/- theorem finset.Ioo_self + theorem finset.Ioo_subset_Icc_self + theorem finset.Ioo_subset_Ici_self + theorem finset.Ioo_subset_Ico_self + theorem finset.Ioo_subset_Iic_self + theorem finset.Ioo_subset_Iio_self + theorem finset.Ioo_subset_Ioc_self + theorem finset.Ioo_subset_Ioi_self + theorem finset.Ioo_subset_Ioo + theorem finset.Ioo_subset_Ioo_left + theorem finset.Ioo_subset_Ioo_right + theorem finset.card_Ioo_eq_card_Ioc_sub_one +/- theorem finset.filter_ge_eq_Iic +/- theorem finset.filter_gt_eq_Iio +/- theorem finset.filter_le_eq_Ici +/- theorem finset.filter_le_le_eq_Icc +/- theorem finset.filter_le_lt_eq_Ico +/- theorem finset.filter_lt_eq_Ioi +/- theorem finset.filter_lt_le_eq_Ioc +/- theorem finset.filter_lt_lt_eq_Ioo +/- theorem finset.image_add_right_Icc +/- theorem finset.image_add_right_Ico +/- theorem finset.image_add_right_Ioc +/- theorem finset.image_add_right_Ioo +/- theorem finset.left_mem_Icc +/- theorem finset.left_mem_Ico +/- theorem finset.right_mem_Icc +/- theorem finset.right_mem_Ioc +/- def set.fintype_of_mem_bounds Modified src/order/locally_finite.lean - theorem finset.Ico_subset_Ico +/- theorem finset.coe_Icc +/- theorem finset.coe_Ico +/- theorem finset.coe_Ioc +/- theorem finset.coe_Ioo +/- theorem finset.mem_Icc +/- theorem finset.mem_Ici +/- theorem finset.mem_Ico +/- theorem finset.mem_Iic +/- theorem finset.mem_Iio +/- theorem finset.mem_Ioc +/- theorem finset.mem_Ioi +/- theorem finset.mem_Ioo 2022-01-28 13:03:39 924aab1 feat(ring_theory/polynomial/eisenstein): add miscellaneous results about Eisenstein polynomials (#11697) Miscellaneous results about Eisenstein polynomials From flt-regular. ESTIMATED CHANGES Added src/ring_theory/polynomial/eisenstein.lean + theorem polynomial.is_eisenstein_at.coeff_mem + theorem polynomial.is_eisenstein_at.irreducible + theorem polynomial.is_eisenstein_at.is_weakly_eisenstein_at + structure polynomial.is_eisenstein_at + theorem polynomial.is_weakly_eisenstein_at.exists_mem_adjoin_mul_eq_pow_nat_degree + theorem polynomial.is_weakly_eisenstein_at.exists_mem_adjoin_mul_eq_pow_nat_degree_le + theorem polynomial.is_weakly_eisenstein_at.map + theorem polynomial.is_weakly_eisenstein_at.pow_nat_degree_le_of_aeval_zero_of_monic_mem_map + theorem polynomial.is_weakly_eisenstein_at.pow_nat_degree_le_of_root_of_monic_mem + structure polynomial.is_weakly_eisenstein_at 2022-01-28 11:11:22 e290b29 feat(data/quot): add subsingleton instances (#11668) ESTIMATED CHANGES Modified src/data/quot.lean 2022-01-28 08:38:09 bf347f9 feat(algebraic_geometry): Fiber products of schemes (#10605) ESTIMATED CHANGES Modified src/algebraic_geometry/gluing.lean + theorem algebraic_geometry.Scheme.open_cover.hom_ext Modified src/algebraic_geometry/pullbacks.lean + theorem algebraic_geometry.Scheme.pullback.affine_affine_has_pullback + def algebraic_geometry.Scheme.pullback.glued_is_limit + theorem algebraic_geometry.Scheme.pullback.has_pullback_of_cover + theorem algebraic_geometry.Scheme.pullback.lift_comp_ι + def algebraic_geometry.Scheme.pullback.pullback_fst_ι_to_V + theorem algebraic_geometry.Scheme.pullback.pullback_fst_ι_to_V_fst + theorem algebraic_geometry.Scheme.pullback.pullback_fst_ι_to_V_snd + def algebraic_geometry.Scheme.pullback.pullback_p1_iso + theorem algebraic_geometry.Scheme.pullback.pullback_p1_iso_hom_fst + theorem algebraic_geometry.Scheme.pullback.pullback_p1_iso_hom_snd + theorem algebraic_geometry.Scheme.pullback.pullback_p1_iso_hom_ι + theorem algebraic_geometry.Scheme.pullback.pullback_p1_iso_inv_fst + theorem algebraic_geometry.Scheme.pullback.pullback_p1_iso_inv_snd 2022-01-28 07:26:07 67dcdef feat(data/mv_polynomial/derivation): derivations of `mv_polynomial`s (#9145) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean Added src/data/mv_polynomial/derivation.lean + theorem mv_polynomial.derivation_C + theorem mv_polynomial.derivation_C_mul + theorem mv_polynomial.derivation_eq_of_forall_mem_vars + theorem mv_polynomial.derivation_eq_on_supported + theorem mv_polynomial.derivation_eq_zero_of_forall_mem_vars + theorem mv_polynomial.derivation_ext + theorem mv_polynomial.leibniz_iff_X + def mv_polynomial.mk_derivation + theorem mv_polynomial.mk_derivation_X + def mv_polynomial.mk_derivation_equiv + theorem mv_polynomial.mk_derivation_monomial + def mv_polynomial.mk_derivationₗ + theorem mv_polynomial.mk_derivationₗ_C + theorem mv_polynomial.mk_derivationₗ_X + theorem mv_polynomial.mk_derivationₗ_monomial Modified src/data/mv_polynomial/pderiv.lean +/- def mv_polynomial.pderiv +/- theorem mv_polynomial.pderiv_C +/- theorem mv_polynomial.pderiv_C_mul +/- theorem mv_polynomial.pderiv_X + theorem mv_polynomial.pderiv_X_of_ne +/- theorem mv_polynomial.pderiv_X_self +/- theorem mv_polynomial.pderiv_monomial - theorem mv_polynomial.pderiv_monomial_mul - theorem mv_polynomial.pderiv_nat_cast - theorem mv_polynomial.pderiv_pow Modified src/ring_theory/derivation.lean + theorem derivation.map_sum Modified src/ring_theory/polynomial/bernstein.lean 2022-01-28 06:58:36 6687cf1 feat(group_theory/sylow): `fintype (sylow p H)` from `fintype (sylow p G)` (#11664) If the number of Sylow `p`-subgroups of `G` is finite, then the number of Sylow `p`-subgroups of `H` is finite. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.ker_is_p_group_of_injective Modified src/group_theory/sylow.lean + theorem sylow.exists_comap_eq_of_injective + theorem sylow.exists_comap_eq_of_ker_is_p_group + theorem sylow.exists_comap_subtype_eq 2022-01-28 03:07:32 f5d63f9 feat(topology/category/Compactum): forget creates limits (#11690) Will likely be used in LTE. ESTIMATED CHANGES Modified src/topology/category/Compactum.lean + def Compactum_to_CompHaus_comp_forget 2022-01-28 00:40:24 24cfb88 chore(set_theory/ordinal_arithmetic): Golf some instances of `lt_irrefl _ h` down to `h.false` (#11699) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-01-28 00:40:23 bac0f55 chore(order/conditionally_complete_lattice): move code to a new file (#11698) This is the first step towards adding a `complete_lattice` instance for `Icc`/`interval`. ESTIMATED CHANGES Modified src/algebra/order/nonneg.lean Added src/order/complete_lattice_intervals.lean + theorem Inf_within_of_ord_connected + theorem Sup_within_of_ord_connected + theorem subset_Inf_def + theorem subset_Inf_of_within + theorem subset_Sup_def + theorem subset_Sup_of_within Modified src/order/conditionally_complete_lattice.lean - theorem Inf_within_of_ord_connected - theorem Sup_within_of_ord_connected - theorem subset_Inf_def - theorem subset_Inf_of_within - theorem subset_Sup_def - theorem subset_Sup_of_within Modified src/topology/algebra/ordered/intermediate_value.lean 2022-01-27 23:05:41 21cea47 feat(analysis/special_functions/log): log of natural power (#11685) The rpow versions are already present, but the natural/integer versions can also be very helpful (eg for squares). ESTIMATED CHANGES Modified src/analysis/special_functions/log.lean + theorem real.log_pow + theorem real.log_zpow 2022-01-27 23:05:40 79e6cb0 feat(order/succ_pred/relation): `succ`/`pred` inductions on relations (#11518) * Rename file `order.succ_pred` -> `order.succ_pred.basic` * Generalize induction principles `succ.rec` and `pred.rec`, make the argument order more "induction-like" and add the attribute `@[elab_as_eliminator]` * Proof properties about `refl_trans_gen` and `trans_gen` in a `is_succ_archimedean` order. * Proof some monotonicity properties of closure operations. ESTIMATED CHANGES Modified src/data/int/succ_pred.lean Modified src/data/nat/succ_pred.lean Modified src/logic/relation.lean + theorem relation.refl_gen.mono +/- theorem relation.refl_gen.to_refl_trans_gen + theorem relation.refl_trans_gen.swap + theorem relation.refl_trans_gen_swap + theorem relation.trans_gen.mono + theorem relation.trans_gen.swap + theorem relation.trans_gen_swap Renamed src/order/succ_pred.lean to src/order/succ_pred/basic.lean +/- theorem pred.rec +/- theorem succ.rec Added src/order/succ_pred/relation.lean + theorem refl_trans_gen_of_pred + theorem refl_trans_gen_of_pred_of_ge + theorem refl_trans_gen_of_pred_of_le + theorem refl_trans_gen_of_succ + theorem refl_trans_gen_of_succ_of_ge + theorem refl_trans_gen_of_succ_of_le + theorem trans_gen_of_pred_of_gt + theorem trans_gen_of_pred_of_lt + theorem trans_gen_of_pred_of_ne + theorem trans_gen_of_pred_of_reflexive + theorem trans_gen_of_succ_of_gt + theorem trans_gen_of_succ_of_lt + theorem trans_gen_of_succ_of_ne + theorem trans_gen_of_succ_of_reflexive Modified src/set_theory/ordinal.lean 2022-01-27 23:05:38 0a721cc feat(data/nat): a predicate for prime powers (#11313) Adds a predicate for prime powers, in preparation for defining the von Mangoldt function. cc @stuart-presnell since you might be needing this material soon, and @jcommelin if you have thoughts about generalising this to rings/UFDs? ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associated.of_pow_associated_of_prime' + theorem associated.of_pow_associated_of_prime Added src/algebra/is_prime_pow.lean + theorem eq_of_prime_pow_eq' + theorem eq_of_prime_pow_eq + theorem is_prime_pow.dvd + theorem is_prime_pow.min_fac_pow_factorization_eq + theorem is_prime_pow.ne_one + theorem is_prime_pow.ne_zero + theorem is_prime_pow.one_lt + theorem is_prime_pow.pos + theorem is_prime_pow.pow + theorem is_prime_pow.two_le + def is_prime_pow + theorem is_prime_pow_def + theorem is_prime_pow_iff_min_fac_pow_factorization_eq + theorem is_prime_pow_iff_pow_succ + theorem is_prime_pow_iff_unique_prime_dvd + theorem is_prime_pow_nat_iff + theorem is_prime_pow_nat_iff_bounded + theorem is_prime_pow_of_min_fac_pow_factorization_eq + theorem not_is_prime_pow_one + theorem not_is_prime_pow_zero + theorem prime.is_prime_pow Modified src/algebra/ne_zero.lean Modified src/number_theory/cyclotomic/basic.lean 2022-01-27 22:03:42 7458476 chore(set_theory/ordinal_arithmetic): golf proof into term mode (#11691) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-01-27 20:16:32 02c08d9 doc(polynomial/eval): why map_ring_hom can't replace map (#11537) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean 2022-01-27 10:01:14 05e1845 feat(archive/100-theorems-list): add proof of the solution of the cubic (#11635) Gives solution to the cubic equation, based on the cardano's formula. The base field should have cube root of unity and characteristic neither 2 nor 3. ESTIMATED CHANGES Added archive/100-theorems-list/37_solution_of_cubic.lean + theorem cube_root_of_unity_sum + theorem cubic_basic_eq_zero_iff + theorem cubic_eq_zero_iff + theorem cubic_eq_zero_iff_of_p_eq_zero + theorem cubic_monic_eq_zero_iff Modified docs/100.yaml 2022-01-27 05:30:47 0844597 feat(set_theory/ordinal_arithmetic): Update header (#11681) Added definitions from my previous PRs, and made myself an author. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2022-01-27 01:40:11 a6ace8c feat(set_theory/ordinal_arithmetic): Proved `sup_eq_lsub_iff_lt_sup` (#11660) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.bsup_eq_blsub + theorem ordinal.bsup_eq_blsub_iff_lt_bsup + theorem ordinal.bsup_eq_blsub_iff_succ - theorem ordinal.sup_eq_lsub + theorem ordinal.sup_eq_lsub_iff_lt_sup + theorem ordinal.sup_eq_lsub_iff_succ 2022-01-26 23:35:18 92ee748 chore(analysis/complex/cauchy_integral): use `dslope` to golf a proof (#11675) ESTIMATED CHANGES Modified src/analysis/complex/cauchy_integral.lean 2022-01-26 23:35:16 a1e1ffd feat(order/filter): +1 version of `mem_inf_principal` (#11674) ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem disjoint_assoc Modified src/order/filter/basic.lean + theorem filter.mem_inf_principal' 2022-01-26 23:35:15 52e9fd5 chore(*): don't use tactic internal lemmas in proofs (#11641) Some lemmas that are intended as internals to a tactic get picked up by library search and end up in proofs. We replace a few of these tactic lemma uses with actual library lemmas which should be more maintainable, de-coupling tactic internals from the actual library. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/data/nat/totient.lean Modified src/data/real/pi/leibniz.lean Modified src/data/set/lattice.lean Modified src/field_theory/splitting_field.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/set_to_l1.lean Modified test/induction.lean 2022-01-26 22:45:31 577e3a2 chore(topology/algebra/uniform_group): Remove newline after docstring (#11671) Yael pointed out that #11662 added an erroneous newline after a docstring. This PR removes that newline. ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean 2022-01-26 20:52:57 946454a feat(data/nat/factorization): various theorems on factorization and division (#11663) ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.div_factorization_eq_tsub_of_dvd + theorem nat.dvd_iff_div_factorization_eq_tsub + theorem nat.dvd_iff_prime_pow_dvd_dvd + theorem nat.exists_factorization_lt_of_lt + theorem nat.factorization_eq_zero_of_non_prime + theorem nat.pow_factorization_dvd + theorem nat.prime_pow_dvd_iff_le_factorization 2022-01-26 20:14:54 97e01cd feat(group_theory/free_abelian_group_finsupp): various equiv.of_free_*_group lemmas (#11469) Namely `equiv.of_free_abelian_group_linear_equiv`, `equiv.of_free_abelian_group_equiv` and `equiv.of_free_group_equiv` ESTIMATED CHANGES Modified src/group_theory/free_abelian_group_finsupp.lean + def free_abelian_group.equiv.of_free_abelian_group_equiv + def free_abelian_group.equiv.of_free_abelian_group_linear_equiv + def free_abelian_group.equiv.of_free_group_equiv + def free_abelian_group.equiv.of_is_free_group_equiv Modified src/group_theory/free_group.lean 2022-01-26 17:10:48 8fbc009 feat(data/{dfinsupp,finsupp}/basic): `fun_like` instances for `Π₀ i, α i` and `ι →₀ α` (#11667) This provides the `fun_like` instances for `finsupp` and `dfinsupp` and deprecates the lemmas that are now provided by the `fun_like` API. ESTIMATED CHANGES Modified src/data/dfinsupp/basic.lean +/- theorem dfinsupp.coe_fn_injective +/- theorem dfinsupp.ext +/- theorem dfinsupp.ext_iff Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_fn_inj +/- theorem finsupp.coe_fn_injective +/- theorem finsupp.congr_fun +/- theorem finsupp.ext +/- theorem finsupp.ext_iff 2022-01-26 17:10:46 c447a31 feat(algebraic_geometry): Stalk is localization of affine open. (#11640) ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean + theorem category_theory.iso.CommRing_iso_to_ring_equiv_symm_to_ring_hom + theorem category_theory.iso.CommRing_iso_to_ring_equiv_to_ring_hom Modified src/algebraic_geometry/AffineScheme.lean + theorem algebraic_geometry.is_affine_open.from_Spec_prime_ideal_of + theorem algebraic_geometry.is_affine_open.is_localization_stalk + theorem algebraic_geometry.is_affine_open.is_localization_stalk_aux + def algebraic_geometry.is_affine_open.prime_ideal_of Modified src/algebraic_geometry/Scheme.lean + theorem algebraic_geometry.Scheme.app_eq + theorem algebraic_geometry.Scheme.id_app + theorem algebraic_geometry.Scheme.id_coe_base + theorem algebraic_geometry.Scheme.id_val_base + theorem algebraic_geometry.Scheme.inv_val_c_app Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/properties.lean + theorem algebraic_geometry.is_integral_of_is_affine_is_domain + theorem algebraic_geometry.is_reduced_of_is_affine_is_reduced + theorem algebraic_geometry.reduce_to_affine_nbhd Modified src/ring_theory/localization.lean + theorem is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization + theorem is_fraction_ring.is_fraction_ring_of_is_localization + theorem is_fraction_ring.nontrivial + theorem is_localization.map_non_zero_divisors_le + theorem is_localization.mk'_eq_zero_iff + theorem is_localization.non_zero_divisors_le_comap Modified src/topology/category/Top/opens.lean + theorem topological_space.opens.adjunction_counit_app_self Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.stalk_open_algebra_map 2022-01-26 15:22:43 b8fcac5 feat(data/nat/basic): three small `dvd_iff...` lemmas (#11669) Three biconditionals for proving `d ∣ n` ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.dvd_iff_div_mul_eq + theorem nat.dvd_iff_dvd_dvd + theorem nat.dvd_iff_le_div_mul 2022-01-26 13:30:01 c5a8a81 refactor(topology/algebra/uniform_group): Use `to_additive`. (#11662) This PR refactors `topology/algebra/uniform_group` to use `to_additive`. ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/uniform_group.lean - theorem add_monoid_hom.uniform_continuous_of_continuous_at_zero - theorem cauchy_seq.add + theorem cauchy_seq.mul +/- theorem group_separation_rel + theorem monoid_hom.uniform_continuous_of_continuous_at_one + theorem tendsto_div_comap_self - theorem tendsto_sub_comap_self - theorem to_uniform_space_eq - theorem topological_add_group.separated_iff_zero_closed - theorem topological_add_group.separated_of_zero_sep - theorem topological_add_group_is_uniform + theorem topological_group.separated_iff_one_closed + theorem topological_group.separated_of_one_sep + theorem topological_group_is_uniform - theorem uniform_add_group.mk' - theorem uniform_continuous.add + theorem uniform_continuous.div + theorem uniform_continuous.inv + theorem uniform_continuous.mul - theorem uniform_continuous.neg - theorem uniform_continuous.sub - theorem uniform_continuous_add + theorem uniform_continuous_div + theorem uniform_continuous_inv + theorem uniform_continuous_monoid_hom_of_continuous + theorem uniform_continuous_mul - theorem uniform_continuous_neg - theorem uniform_continuous_of_continuous + theorem uniform_continuous_of_tendsto_one - theorem uniform_continuous_of_tendsto_zero - theorem uniform_continuous_sub - theorem uniform_embedding_translate + theorem uniform_embedding_translate_mul + theorem uniform_group.mk' + theorem uniform_group.to_uniform_space_eq + theorem uniformity_eq_comap_nhds_one' + theorem uniformity_eq_comap_nhds_one - theorem uniformity_eq_comap_nhds_zero' - theorem uniformity_eq_comap_nhds_zero - theorem uniformity_translate + theorem uniformity_translate_mul Modified src/topology/algebra/uniform_ring.lean 2022-01-26 13:30:00 5472f0a feat(group_theory/subgroup/basic): add lemmas related to map, comap, normalizer (#11637) which are useful when `H < K < G` and one needs to move from `subgroup G` to `subgroup K` ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.comap_subtype Modified src/group_theory/subgroup/basic.lean + theorem subgroup.comap_normalizer_eq_of_injective_of_le_range + theorem subgroup.comap_subtype_normalizer_eq + theorem subgroup.comap_subtype_self_eq_top 2022-01-26 13:29:59 2b25723 feat(group_theory/sylow): add characteristic_of_normal (#11636) A normal sylow subgroup is characteristic. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.characteristic_of_normal + theorem sylow.smul_eq_of_normal + theorem sylow.subsingleton_of_normal 2022-01-26 13:29:58 1a72f88 feat(analysis/inner_product_space/basic): isometries and orthonormal families (#11631) Add various lemmas and definitions about the action of isometries on orthonormal families of vectors. An isometry preserves the property of being orthonormal; a linear map sending an orthonormal basis to an orthonormal family is a linear isometry, and a linear equiv sending an orthonormal basis to an orthonormal family is a linear isometry equiv. A definition `orthonormal.equiv` is provided that uses `basis.equiv` to provide a linear isometry equiv mapping a given orthonormal basis to another given orthonormal basis, and lemmas are provided analogous to those for `basis.equiv` (`orthonormal.map_equiv` isn't a `simp` lemma because `simp` can prove it). ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem linear_equiv.coe_isometry_of_orthonormal + def linear_equiv.isometry_of_orthonormal + theorem linear_equiv.isometry_of_orthonormal_to_linear_equiv + theorem linear_map.coe_isometry_of_orthonormal + def linear_map.isometry_of_orthonormal + theorem linear_map.isometry_of_orthonormal_to_linear_map + theorem orthonormal.comp_linear_isometry + theorem orthonormal.comp_linear_isometry_equiv + def orthonormal.equiv + theorem orthonormal.equiv_apply + theorem orthonormal.equiv_refl + theorem orthonormal.equiv_symm + theorem orthonormal.equiv_to_linear_equiv + theorem orthonormal.equiv_trans + theorem orthonormal.map_equiv 2022-01-26 13:29:57 631f339 feat(measure_theory/measure/haar_lebesgue): a density point for closed balls is a density point for rescalings of arbitrary sets (#11620) Consider a point `x` in a finite-dimensional real vector space with a Haar measure, at which a set `s` has density one, with respect to closed balls (i.e., a Lebesgue density point of `s`). Then `s` has also density one at `x` with respect to any measurable set `t`: the proportion of points in `s` belonging to a rescaled copy `{x} + r • t` of `t` tends to one as `r` tends to zero. In particular, `s ∩ ({x} + r • t)` is nonempty for small enough `r`. ESTIMATED CHANGES Modified src/measure_theory/measure/haar_lebesgue.lean + theorem measure_theory.measure.add_haar_ball_mul + theorem measure_theory.measure.add_haar_ball_mul_of_pos + theorem measure_theory.measure.add_haar_closed_ball_mul + theorem measure_theory.measure.add_haar_closed_ball_mul_of_pos + theorem measure_theory.measure.add_haar_singleton_add_smul_div_singleton_add_smul + theorem measure_theory.measure.eventually_nonempty_inter_smul_of_density_one + theorem measure_theory.measure.tendsto_add_haar_inter_smul_one_of_density_one + theorem measure_theory.measure.tendsto_add_haar_inter_smul_one_of_density_one_aux + theorem measure_theory.measure.tendsto_add_haar_inter_smul_zero_of_density_zero + theorem measure_theory.measure.tendsto_add_haar_inter_smul_zero_of_density_zero_aux1 + theorem measure_theory.measure.tendsto_add_haar_inter_smul_zero_of_density_zero_aux2 Modified src/topology/metric_space/basic.lean + theorem metric.Union_inter_closed_ball_nat 2022-01-26 13:29:54 590b5eb feat(analysis/seminorm): The norm as a seminorm, balanced and absorbent lemmas (#11487) This * defines `norm_seminorm`, the norm as a seminorm. This is useful to translate seminorm lemmas to norm lemmas * proves many lemmas about `balanced`, `absorbs`, `absorbent` * generalizes many lemmas about the aforementioned predicates. In particular, `one_le_gauge_of_not_mem` now takes `(star_convex ℝ 0 s) (absorbs ℝ s {x})` instead of `(convex ℝ s) ((0 : E) ∈ s) (is_open s)`. The new `star_convex` lemmas justify that it's a generalization. * proves `star_convex_zero_iff` * proves `ne_zero_of_norm_ne_zero` and friends * makes `x` implicit in `convex.star_convex` * renames `balanced.univ` to `balanced_univ` ESTIMATED CHANGES Modified src/algebra/smul_with_zero.lean + theorem smul_inv₀ Modified src/analysis/complex/circle.lean + theorem ne_zero_of_mem_circle - theorem nonzero_of_mem_circle Modified src/analysis/convex/star.lean + theorem convex.star_convex + theorem star_convex_zero_iff Modified src/analysis/fourier.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/normed/group/basic.lean + theorem ne_zero_of_mem_sphere + theorem ne_zero_of_mem_unit_sphere + theorem ne_zero_of_nnnorm_ne_zero + theorem ne_zero_of_norm_ne_zero - theorem ne_zero_of_norm_pos + theorem nnnorm_ne_zero_iff - theorem nonzero_of_mem_sphere - theorem nonzero_of_mem_unit_sphere + theorem norm_ne_zero_iff Modified src/analysis/normed_space/basic.lean +/- theorem ne_neg_of_mem_sphere Modified src/analysis/normed_space/spectrum.lean Modified src/analysis/seminorm.lean + theorem absorbent.absorbs + theorem absorbent.zero_mem + theorem absorbent_ball + theorem absorbent_ball_zero + theorem absorbent_univ + theorem absorbs.inter + theorem absorbs.mono + theorem absorbs.mono_left + theorem absorbs.mono_right + theorem absorbs.union + theorem absorbs_inter + theorem absorbs_union + theorem absorbs_zero_iff + theorem balanced.smul_mono + theorem balanced.star_convex - theorem balanced.univ + theorem balanced_ball_zero + theorem balanced_univ +/- theorem balanced_zero_union_interior + theorem ball_norm_seminorm + theorem coe_norm_seminorm + theorem convex.gauge_le - theorem convex.gauge_le_one +/- theorem exists_lt_of_gauge_lt + theorem gauge_ball + theorem gauge_empty + theorem gauge_le_eq +/- theorem gauge_le_of_mem - theorem gauge_le_one_eq' - theorem gauge_le_one_eq + theorem gauge_lt_eq' + theorem gauge_lt_eq + theorem gauge_lt_of_mem_smul - theorem gauge_lt_one_eq' - theorem gauge_lt_one_eq +/- theorem gauge_lt_one_eq_self_of_open +/- theorem gauge_lt_one_of_mem_of_open + theorem gauge_mono + theorem gauge_of_subset_zero +/- def gauge_seminorm + theorem gauge_seminorm_lt_one_of_open + theorem gauge_smul_left + theorem gauge_smul_left_of_nonneg + theorem gauge_unit_ball + theorem gauge_zero' + theorem le_gauge_of_not_mem + theorem mul_gauge_le_norm + def norm_seminorm +/- theorem one_le_gauge_of_not_mem - theorem seminorm.absorbent_ball - theorem seminorm.absorbent_ball_zero +/- theorem seminorm.balanced_ball_zero - theorem seminorm.gauge_ball +/- theorem seminorm.mem_ball + theorem smul_unit_ball Modified src/geometry/manifold/instances/sphere.lean 2022-01-26 13:29:53 573ca83 feat(analysis/seminorm): add some lemmas for seminorm balls (#11471) Add some lemmas for seminorm balls. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.ball_add_ball_subset + theorem seminorm.ball_antitone + theorem seminorm.ball_mono + theorem seminorm.ball_smul_ball + theorem seminorm.neg_ball + theorem seminorm.smul_ball_preimage 2022-01-26 13:29:52 07d8ca6 feat(combinatorics/configuration): Formula for cardinality of a projective plane (#11462) This PR proves the formula for the cardinality of a projective plane in terms of the order. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.projective_plane.card_lines + theorem configuration.projective_plane.card_points 2022-01-26 11:53:03 7f0f3f1 feat(algebra/order/hom/monoid): Ordered monoid/group homomorphisms (#11633) Define * `order_add_monoid_hom` with notation `→+o` * `order_monoid_hom` with notation `→*o` * `order_monoid_with_zero_hom` with notation `→*₀o` and their corresponding hom classes. Also add a few missing API lemmas in `algebra.group.hom` and `order.hom.basic`. ESTIMATED CHANGES Modified src/algebra/group/hom.lean Added src/algebra/order/hom/monoid.lean + structure order_add_monoid_hom + theorem order_monoid_hom.cancel_left + theorem order_monoid_hom.cancel_right + theorem order_monoid_hom.coe_comp + theorem order_monoid_hom.coe_comp_monoid_hom + theorem order_monoid_hom.coe_comp_order_hom + theorem order_monoid_hom.coe_id + theorem order_monoid_hom.coe_mk + theorem order_monoid_hom.coe_monoid_hom + theorem order_monoid_hom.coe_mul + theorem order_monoid_hom.coe_one + theorem order_monoid_hom.coe_order_hom + def order_monoid_hom.comp + theorem order_monoid_hom.comp_apply + theorem order_monoid_hom.comp_assoc + theorem order_monoid_hom.comp_id + theorem order_monoid_hom.comp_mul + theorem order_monoid_hom.comp_one + theorem order_monoid_hom.ext + theorem order_monoid_hom.id_comp + def order_monoid_hom.mk' + theorem order_monoid_hom.mk_coe + theorem order_monoid_hom.mul_apply + theorem order_monoid_hom.mul_comp + theorem order_monoid_hom.one_apply + theorem order_monoid_hom.one_comp + theorem order_monoid_hom.to_fun_eq_coe + theorem order_monoid_hom.to_monoid_hom_eq_coe + theorem order_monoid_hom.to_monoid_hom_injective + def order_monoid_hom.to_order_hom + theorem order_monoid_hom.to_order_hom_eq_coe + theorem order_monoid_hom.to_order_hom_injective + structure order_monoid_hom + theorem order_monoid_with_zero_hom.cancel_left + theorem order_monoid_with_zero_hom.cancel_right + theorem order_monoid_with_zero_hom.coe_comp + theorem order_monoid_with_zero_hom.coe_comp_monoid_with_zero_hom + theorem order_monoid_with_zero_hom.coe_comp_order_monoid_hom + theorem order_monoid_with_zero_hom.coe_id + theorem order_monoid_with_zero_hom.coe_mk + theorem order_monoid_with_zero_hom.coe_monoid_with_zero_hom + theorem order_monoid_with_zero_hom.coe_mul + theorem order_monoid_with_zero_hom.coe_order_monoid_hom + def order_monoid_with_zero_hom.comp + theorem order_monoid_with_zero_hom.comp_apply + theorem order_monoid_with_zero_hom.comp_assoc + theorem order_monoid_with_zero_hom.comp_id + theorem order_monoid_with_zero_hom.comp_mul + theorem order_monoid_with_zero_hom.ext + theorem order_monoid_with_zero_hom.id_comp + theorem order_monoid_with_zero_hom.mk_coe + theorem order_monoid_with_zero_hom.mul_apply + theorem order_monoid_with_zero_hom.mul_comp + theorem order_monoid_with_zero_hom.to_fun_eq_coe + theorem order_monoid_with_zero_hom.to_monoid_with_zero_hom_eq_coe + theorem order_monoid_with_zero_hom.to_monoid_with_zero_hom_injective + def order_monoid_with_zero_hom.to_order_monoid_hom + theorem order_monoid_with_zero_hom.to_order_monoid_hom_eq_coe + theorem order_monoid_with_zero_hom.to_order_monoid_hom_injective + structure order_monoid_with_zero_hom Modified src/order/hom/basic.lean 2022-01-26 11:25:56 20aae83 feat(order/hom/lattice): Lattice homomorphisms (#11610) This defines (bounded) lattice homomorphisms using the `fun_like` along with weaker homomorphisms that only preserve `sup`, `inf`, `top`, `bot`. ESTIMATED CHANGES Added src/order/hom/lattice.lean + theorem bot_hom.bot_apply + theorem bot_hom.coe_bot + theorem bot_hom.coe_id + theorem bot_hom.coe_inf + theorem bot_hom.coe_sup + theorem bot_hom.ext + theorem bot_hom.id_apply + theorem bot_hom.inf_apply + theorem bot_hom.sup_apply + theorem bot_hom.to_fun_eq_coe + structure bot_hom + theorem bounded_lattice_hom.coe_id + theorem bounded_lattice_hom.ext + theorem bounded_lattice_hom.id_apply + def bounded_lattice_hom.to_bot_hom + theorem bounded_lattice_hom.to_fun_eq_coe + def bounded_lattice_hom.to_top_hom + structure bounded_lattice_hom + theorem inf_hom.coe_const + theorem inf_hom.coe_id + theorem inf_hom.coe_inf + def inf_hom.const + theorem inf_hom.const_apply + theorem inf_hom.ext + theorem inf_hom.id_apply + theorem inf_hom.inf_apply + theorem inf_hom.to_fun_eq_coe + structure inf_hom + theorem lattice_hom.coe_id + theorem lattice_hom.ext + theorem lattice_hom.id_apply + theorem lattice_hom.to_fun_eq_coe + def lattice_hom.to_inf_hom + structure lattice_hom + theorem sup_hom.coe_const + theorem sup_hom.coe_id + theorem sup_hom.coe_sup + def sup_hom.const + theorem sup_hom.const_apply + theorem sup_hom.ext + theorem sup_hom.id_apply + theorem sup_hom.sup_apply + theorem sup_hom.to_fun_eq_coe + structure sup_hom + theorem top_hom.coe_id + theorem top_hom.coe_inf + theorem top_hom.coe_sup + theorem top_hom.coe_top + theorem top_hom.ext + theorem top_hom.id_apply + theorem top_hom.inf_apply + theorem top_hom.sup_apply + theorem top_hom.to_fun_eq_coe + theorem top_hom.top_apply + structure top_hom 2022-01-26 10:04:22 09c6ce8 feat(group_theory/subgroup/basic): add normalizer_condition definition (#11587) and an equivalent formula that is a bit easier to work with. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + def normalizer_condition + theorem normalizer_condition_iff_only_full_group_self_normalizing 2022-01-26 09:10:25 c294e4b feat(topology/*): replace some `a < b` assumptions with `a ≠ b` (#11650) ESTIMATED CHANGES Modified src/analysis/box_integral/box/basic.lean + theorem box_integral.box.lower_ne_upper Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/topology/algebra/ordered/basic.lean +/- theorem closure_Ico +/- theorem closure_Ioc +/- theorem closure_Ioo Modified src/topology/algebra/ordered/extend_from.lean 2022-01-25 23:46:56 20a461f feat(algebra/big_operators/order): The size of a finset of disjoint finsets is less than the size of its union (#11654) Prove `card_le_card_bUnion`, its corollary `card_le_card_bUnion_add_card_fiber` where we drop the nonemptiness condition in exchange of a `+` card of the fiber of `∅` on the RHS, and its useful special case `card_le_card_bUnion_add_one`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.card_le_card_bUnion + theorem finset.card_le_card_bUnion_add_card_fiber + theorem finset.card_le_card_bUnion_add_one 2022-01-25 22:24:52 b237af5 refactor(set_theory/ordinal_arithmetic): Rename `lsub_le_iff_lt` to `lsub_le` (#11661) This way, it directly corresponds to `sup_le`. Ditto for `blsub_le_iff_lt`. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.blsub_le - theorem ordinal.blsub_le_iff_lt + theorem ordinal.lsub_le - theorem ordinal.lsub_le_iff_lt 2022-01-25 22:24:51 b0a1812 chore(data/buffer/parser/numeral): fix backticks (#11658) ESTIMATED CHANGES Modified src/data/buffer/parser/numeral.lean 2022-01-25 22:24:50 033dd3c feat(analysis/special_functions/complex/circle): `real.angle.exp_map_circle` (#11627) Add a version of `exp_map_circle` that applies to a `real.angle` argument. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/circle.lean + theorem real.angle.exp_map_circle_coe 2022-01-25 22:24:49 f5b11ad feat(algebra/lie/{nilpotent,of_associative}): a representation of an associative algebra gives a representation of a Lie algebra (#11558) The lemma `lie_algebra.non_trivial_center_of_is_nilpotent` is unrelated. ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean + theorem lie_algebra.non_trivial_center_of_is_nilpotent Modified src/algebra/lie/of_associative.lean + theorem lie_eq_smul + def lie_module.of_associative_module + theorem lie_module.to_endomorphism_module_End + def lie_ring_module.of_associative_module Modified src/algebra/module/linear_map.lean 2022-01-25 20:59:08 99608cc feat(group_theory/sub{monoid,group}, linear_algebra/basic): add `supr_induction` for `submonoid`, `add_submonoid`, `subgroup`, `add_subgroup`, and `submodule` (#11556) This also adds dependent versions, which match the style of the dependent versions of `submodule.span_induction` and `submonoid.closure_induction` in #11555. Primarily it's the group and module versions that are useful here, as they remove the inv and smul obligations that would appear if using `closure_induction` or `span_induction`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.mem_supr_of_mem + theorem subgroup.supr_eq_closure + theorem subgroup.supr_induction' + theorem subgroup.supr_induction Modified src/group_theory/submonoid/membership.lean +/- theorem submonoid.mem_supr_of_mem + theorem submonoid.supr_induction' + theorem submonoid.supr_induction Modified src/linear_algebra/basic.lean + theorem submodule.supr_induction' + theorem submodule.supr_induction 2022-01-25 20:59:07 25d1341 feat(group_theory/sub{monoid,group}, linear_algebra/basic): remove specialization to subtypes from dependent recursors (#11555) The following recursors (the first of which was added in #4984) are more generally applicable than to subtypes alone: * `submonoid.closure_induction'` * `add_submonoid.closure_induction'` * `subgroup.closure_induction'` * `add_subgroup.closure_induction'` * `submodule.span_induction'` Now that these live right next to their non-dependent version, there is little need to repeat the docstring. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.closure_induction' Modified src/group_theory/submonoid/basic.lean + theorem submonoid.closure_induction' Modified src/group_theory/submonoid/operations.lean - theorem submonoid.closure_induction' Modified src/linear_algebra/basic.lean +/- theorem submodule.span_induction' Modified src/model_theory/basic.lean +/- theorem first_order.language.substructure.closure_induction' 2022-01-25 20:59:06 7e09827 feat(analysis/inner_product_space/adjoint): matrix and linear map adjoints agree (#11551) ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem matrix.conj_transpose_eq_adjoint 2022-01-25 20:59:04 84f2e93 feat(group_theory/free_abelian_group): add free_abelian_group.basis (#11465) Although a statement about `free_abelian_group`, it lives in `free_abelian_group_finsupp` because it uses the isomorphism between `free_abelian_group X` and `X →₀ ℤ` ESTIMATED CHANGES Modified src/group_theory/free_abelian_group_finsupp.lean 2022-01-25 19:51:28 009cec0 feat(set_theory/cardinal_ordinal): Aleph is positive (#11657) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.aleph'_pos + theorem cardinal.aleph_pos 2022-01-25 17:30:28 6184db1 feat(topology/algebra/mul_action2): quotient by a properly discontinuous group action is t2 (#10465) We prove that the quotient of a Hausdorff (t2) locally compact space by a properly discontinuous group action is itself Hausdorff. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.image_inter_image_iff + theorem mul_action.quotient_preimage_image_eq_union_mul Modified src/topology/algebra/mul_action.lean Added src/topology/algebra/mul_action2.lean + def homeomorph.smul + def homeomorph.vadd + theorem is_open_map_quotient_mk_mul Modified src/topology/separation.lean + theorem t2_separation_compact_nhds + theorem t2_separation_nhds + theorem t2_space_iff_nhds Modified src/topology/subset_properties.lean + theorem local_compact_nhds 2022-01-25 13:19:58 4d761f4 feat(algebra/group/hom): Notation for `monoid_with_zero_hom` (#11632) Introduce notation `→*₀` for `monoid_with_zero_hom` and use it everywhere. ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean +/- def normalize Modified src/algebra/group/hom.lean +/- theorem monoid_with_zero_hom.cancel_left +/- theorem monoid_with_zero_hom.cancel_right +/- theorem monoid_with_zero_hom.comp_apply +/- theorem monoid_with_zero_hom.congr_arg +/- theorem monoid_with_zero_hom.congr_fun +/- theorem monoid_with_zero_hom.ext +/- theorem monoid_with_zero_hom.ext_iff +/- def monoid_with_zero_hom.id +/- theorem monoid_with_zero_hom.mk_coe Modified src/algebra/group/prod.lean +/- def div_monoid_with_zero_hom +/- def mul_monoid_with_zero_hom Modified src/algebra/group_with_zero/basic.lean +/- def inv_monoid_with_zero_hom Modified src/algebra/group_with_zero/power.lean Modified src/algebra/order/absolute_value.lean +/- def absolute_value.to_monoid_with_zero_hom +/- def is_absolute_value.abv_hom Modified src/algebra/order/field.lean +/- theorem abs_div +/- theorem abs_inv Modified src/algebra/order/ring.lean +/- def abs_hom Modified src/algebra/quaternion.lean +/- def quaternion.norm_sq Modified src/algebra/ring/basic.lean Modified src/algebra/smul_with_zero.lean +/- def mul_action_with_zero.comp_hom Modified src/analysis/normed_space/basic.lean +/- theorem normed_field.nnnorm_div +/- def normed_field.nnnorm_hom +/- theorem normed_field.norm_div +/- def normed_field.norm_hom +/- theorem normed_field.norm_inv +/- theorem normed_field.norm_zpow Modified src/data/complex/basic.lean +/- def complex.norm_sq Modified src/data/complex/is_R_or_C.lean +/- def is_R_or_C.norm_sq Modified src/data/fintype/basic.lean Modified src/data/int/cast.lean +/- theorem monoid_with_zero_hom.ext_int' +/- theorem monoid_with_zero_hom.ext_int Modified src/data/nat/cast.lean Modified src/data/rat/cast.lean +/- theorem monoid_with_zero_hom.ext_rat +/- theorem monoid_with_zero_hom.ext_rat_on_pnat Modified src/data/real/nnreal.lean Modified src/data/real/sqrt.lean Modified src/ring_theory/non_zero_divisors.lean +/- theorem monoid_with_zero_hom.map_le_non_zero_divisors_of_injective +/- theorem monoid_with_zero_hom.map_ne_zero_of_mem_non_zero_divisors Modified src/ring_theory/valuation/basic.lean +/- theorem valuation.coe_coe +/- theorem valuation.is_equiv.map +/- def valuation.map +/- structure valuation 2022-01-25 12:25:39 1b3da83 feat(combinatorics/simple_graph/coloring): add inequalities from embeddings (#11548) Also add a lemma that the chromatic number of an infinite complete graph is zero (i.e., it needs infinitely many colors), as suggested by @arthurpaulino. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/coloring.lean - theorem simple_graph.chromatic_number_complete_graph - theorem simple_graph.chromatic_number_le_of_forall_imp - theorem simple_graph.chromatic_number_le_of_le_colorable + theorem simple_graph.chromatic_number_pos + theorem simple_graph.chromatic_number_top + theorem simple_graph.chromatic_number_top_eq_zero_of_infinite + theorem simple_graph.colorable.chromatic_number_le_of_forall_imp + theorem simple_graph.colorable.chromatic_number_mono + theorem simple_graph.colorable.chromatic_number_mono_of_embedding + theorem simple_graph.colorable.mono + theorem simple_graph.colorable.mono_left + theorem simple_graph.colorable.of_embedding - theorem simple_graph.colorable.of_le + theorem simple_graph.colorable_of_chromatic_number_pos - theorem simple_graph.colorable_of_le_colorable - theorem simple_graph.zero_lt_chromatic_number Modified src/combinatorics/simple_graph/partition.lean 2022-01-25 12:25:38 158c0ea feat(group_theory/abelianization): add abelianization_of_comm_group (#11467) ESTIMATED CHANGES Modified src/group_theory/abelianization.lean + def abelianization.equiv_of_comm 2022-01-25 10:49:34 494f719 feat(data/fun_like): define `embedding_like` and `equiv_like` (#10759) These extend `fun_like` with a proof of injectivity resp. an inverse. The number of new generic lemmas is quite low at the moment, so their use is more in defining derived classes such as `mul_equiv_class`. ESTIMATED CHANGES Modified src/algebra/group/freiman.lean Modified src/algebra/group/hom.lean Modified src/data/equiv/basic.lean +/- theorem equiv.apply_eq_iff_eq +/- theorem equiv.bijective_comp +/- theorem equiv.coe_fn_injective +/- theorem equiv.comp_bijective +/- theorem equiv.comp_injective +/- theorem equiv.comp_surjective +/- theorem equiv.ext +/- theorem equiv.ext_iff +/- theorem equiv.injective_comp +/- theorem equiv.surjective_comp Renamed src/data/fun_like.lean to src/data/fun_like/basic.lean Added src/data/fun_like/embedding.lean + structure cooler_embedding + theorem do_something + theorem embedding_like.apply_eq_iff_eq + theorem embedding_like.comp_injective + theorem map_cool + theorem map_op Added src/data/fun_like/equiv.lean + structure cooler_iso + theorem do_something + theorem equiv_like.apply_eq_iff_eq + theorem equiv_like.bijective_comp + theorem equiv_like.comp_bijective + theorem equiv_like.comp_injective + theorem equiv_like.comp_surjective + theorem equiv_like.injective_comp + theorem equiv_like.inv_injective + theorem equiv_like.surjective_comp + theorem map_cool Modified src/logic/embedding.lean +/- theorem function.embedding.apply_eq_iff_eq +/- theorem function.embedding.coe_injective +/- theorem function.embedding.ext +/- theorem function.embedding.ext_iff Modified src/order/rel_iso.lean 2022-01-25 10:04:17 6b32241 feat(model_theory/basic): Terms, formulas, and definable sets (#11067) Defines first-order terms, formulas, sentences and theories Defines the boolean algebra of definable sets (Several of these definitions are based on those from the flypitch project.) ESTIMATED CHANGES Modified src/model_theory/basic.lean + def first_order.language.bd_not + inductive first_order.language.bounded_formula + theorem first_order.language.definable_set.coe_bot + theorem first_order.language.definable_set.coe_compl + theorem first_order.language.definable_set.coe_inf + theorem first_order.language.definable_set.coe_sup + theorem first_order.language.definable_set.coe_top + theorem first_order.language.definable_set.le_iff + theorem first_order.language.definable_set.mem_compl + theorem first_order.language.definable_set.mem_inf + theorem first_order.language.definable_set.mem_sup + theorem first_order.language.definable_set.mem_top + theorem first_order.language.definable_set.not_mem_bot + def first_order.language.definable_set + def first_order.language.formula + theorem first_order.language.is_definable.compl + theorem first_order.language.is_definable.inter + theorem first_order.language.is_definable.sdiff + theorem first_order.language.is_definable.union + structure first_order.language.is_definable + theorem first_order.language.is_definable_empty + theorem first_order.language.is_definable_univ + def first_order.language.realize_bounded_formula + def first_order.language.realize_formula + theorem first_order.language.realize_not + def first_order.language.realize_sentence + def first_order.language.realize_term + def first_order.language.sentence + inductive first_order.language.term + def first_order.language.theory 2022-01-25 08:35:58 4883d11 feat(README.md): add Kyle Miller as new maintainer (#11653) ESTIMATED CHANGES Modified README.md 2022-01-25 07:42:56 bf71feb feat(number_theory/quadratic_reciprocity): generalise legendre_sym to allow integer first argument (#11573) Talking about the legendre symbol of -1 mod p is quite natural, so we generalize to include this case. So far in a minimal way without changing any existing lemmas ESTIMATED CHANGES Modified src/number_theory/quadratic_reciprocity.lean +/- def zmod.legendre_sym 2022-01-25 07:15:51 f7a597a feat(group_theory/nilpotent): add nilpotency_class inequalities (#11585) Every theorem that proves `nilpotency G'` (e.g. for subgroups, images, preimages) should be accompanied by a lemma relating their `nilpotency_class`, so add thse lmmeas for subgroups and preimages. Also add nilpotency lemmas for surjective homomorphisms and quotions, including nilpotency_class lemmas. ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean +/- theorem is_nilpotent_of_ker_le_center + theorem lower_central_series_nilpotency_class + theorem nilpotency_class_le_of_ker_le_center + theorem nilpotency_class_le_of_surjective + theorem nilpotency_class_quotient_le + theorem nilpotent_of_surjective + theorem subgroup.nilpotency_class_le + theorem upper_central_series_nilpotency_class 2022-01-25 06:08:03 f278663 feat(README.md): add Frédéric Dupuis as new maintainer (#11651) ESTIMATED CHANGES Modified README.md 2022-01-25 05:11:24 b3cd0e6 chore(order/filter, *): enhancing `filter_upwards` tactic (#11624) ESTIMATED CHANGES Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/convex/integral.lean Modified src/analysis/fourier.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/pointwise.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/special_functions/complex/arg.lean Modified src/analysis/special_functions/exponential.lean Modified src/analysis/special_functions/non_integrable.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/analysis/special_functions/trigonometric/inverse_deriv.lean Modified src/analysis/specific_limits.lean Modified src/analysis/subadditive.lean Modified src/dynamics/ergodic/conservative.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/covering/vitali_family.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/function/ae_measurable_order.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_order.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/order/filter/archimedean.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/basic.lean Modified src/order/filter/pi.lean Modified src/order/liminf_limsup.lean Modified src/probability_theory/martingale.lean Modified src/topology/G_delta.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/ordered/monotone_continuity.lean Modified src/topology/basic.lean Modified src/topology/category/Compactum.lean Modified src/topology/dense_embedding.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/partition_of_unity.lean Modified src/topology/semicontinuous.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/urysohns_lemma.lean 2022-01-25 03:33:34 8cc2ff4 refactor(order/{bounded, rel_classes}): Moved `bounded` into the `set` namespace (#11594) As per the [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/bounded.2Emono). Closes #11589. ESTIMATED CHANGES Modified src/order/bounded.lean - theorem bounded.mono - theorem bounded.rel_mono - theorem bounded_ge_Icc - theorem bounded_ge_Ici - theorem bounded_ge_Ico - theorem bounded_ge_Ioc - theorem bounded_ge_Ioi - theorem bounded_ge_Ioo - theorem bounded_ge_iff_bounded_gt - theorem bounded_ge_inter_ge - theorem bounded_ge_inter_gt - theorem bounded_ge_inter_not_ge - theorem bounded_ge_of_bounded_gt - theorem bounded_gt_Icc - theorem bounded_gt_Ici - theorem bounded_gt_Ico - theorem bounded_gt_Ioc - theorem bounded_gt_Ioi - theorem bounded_gt_Ioo - theorem bounded_gt_inter_ge - theorem bounded_gt_inter_gt - theorem bounded_gt_inter_not_gt - theorem bounded_inter_not - theorem bounded_le_Icc - theorem bounded_le_Ico - theorem bounded_le_Iic - theorem bounded_le_Iio - theorem bounded_le_Ioc - theorem bounded_le_Ioo - theorem bounded_le_iff_bounded_lt - theorem bounded_le_inter_le - theorem bounded_le_inter_lt - theorem bounded_le_inter_not_le - theorem bounded_le_of_bounded_lt - theorem bounded_lt_Icc - theorem bounded_lt_Ico - theorem bounded_lt_Iic - theorem bounded_lt_Iio - theorem bounded_lt_Ioc - theorem bounded_lt_Ioo - theorem bounded_lt_inter_le - theorem bounded_lt_inter_lt - theorem bounded_lt_inter_not_lt - theorem bounded_self + theorem set.bounded.mono + theorem set.bounded.rel_mono + theorem set.bounded_ge_Icc + theorem set.bounded_ge_Ici + theorem set.bounded_ge_Ico + theorem set.bounded_ge_Ioc + theorem set.bounded_ge_Ioi + theorem set.bounded_ge_Ioo + theorem set.bounded_ge_iff_bounded_gt + theorem set.bounded_ge_inter_ge + theorem set.bounded_ge_inter_gt + theorem set.bounded_ge_inter_not_ge + theorem set.bounded_ge_of_bounded_gt + theorem set.bounded_gt_Icc + theorem set.bounded_gt_Ici + theorem set.bounded_gt_Ico + theorem set.bounded_gt_Ioc + theorem set.bounded_gt_Ioi + theorem set.bounded_gt_Ioo + theorem set.bounded_gt_inter_ge + theorem set.bounded_gt_inter_gt + theorem set.bounded_gt_inter_not_gt + theorem set.bounded_inter_not + theorem set.bounded_le_Icc + theorem set.bounded_le_Ico + theorem set.bounded_le_Iic + theorem set.bounded_le_Iio + theorem set.bounded_le_Ioc + theorem set.bounded_le_Ioo + theorem set.bounded_le_iff_bounded_lt + theorem set.bounded_le_inter_le + theorem set.bounded_le_inter_lt + theorem set.bounded_le_inter_not_le + theorem set.bounded_le_of_bounded_lt + theorem set.bounded_lt_Icc + theorem set.bounded_lt_Ico + theorem set.bounded_lt_Iic + theorem set.bounded_lt_Iio + theorem set.bounded_lt_Ioc + theorem set.bounded_lt_Ioo + theorem set.bounded_lt_inter_le + theorem set.bounded_lt_inter_lt + theorem set.bounded_lt_inter_not_lt + theorem set.bounded_self + theorem set.unbounded.mono + theorem set.unbounded.rel_mono + theorem set.unbounded_ge_iff + theorem set.unbounded_ge_iff_unbounded_inter_ge + theorem set.unbounded_ge_inter_gt + theorem set.unbounded_ge_inter_not_ge + theorem set.unbounded_ge_of_forall_exists_gt + theorem set.unbounded_gt_iff + theorem set.unbounded_gt_iff_unbounded_ge + theorem set.unbounded_gt_inter_gt + theorem set.unbounded_gt_inter_not_gt + theorem set.unbounded_gt_of_forall_exists_ge + theorem set.unbounded_gt_of_unbounded_ge + theorem set.unbounded_inter_ge + theorem set.unbounded_inter_not + theorem set.unbounded_le_Ici + theorem set.unbounded_le_Ioi + theorem set.unbounded_le_iff + theorem set.unbounded_le_inter_le + theorem set.unbounded_le_inter_lt + theorem set.unbounded_le_inter_not_le + theorem set.unbounded_le_of_forall_exists_lt + theorem set.unbounded_lt_Ici + theorem set.unbounded_lt_Ioi + theorem set.unbounded_lt_iff + theorem set.unbounded_lt_iff_unbounded_le + theorem set.unbounded_lt_inter_le + theorem set.unbounded_lt_inter_lt + theorem set.unbounded_lt_inter_not_lt + theorem set.unbounded_lt_of_forall_exists_le + theorem set.unbounded_lt_of_unbounded_le - theorem unbounded.mono - theorem unbounded.rel_mono - theorem unbounded_ge_iff - theorem unbounded_ge_iff_unbounded_inter_ge - theorem unbounded_ge_inter_gt - theorem unbounded_ge_inter_not_ge - theorem unbounded_ge_of_forall_exists_gt - theorem unbounded_gt_iff - theorem unbounded_gt_iff_unbounded_ge - theorem unbounded_gt_inter_gt - theorem unbounded_gt_inter_not_gt - theorem unbounded_gt_of_forall_exists_ge - theorem unbounded_gt_of_unbounded_ge - theorem unbounded_inter_ge - theorem unbounded_inter_not - theorem unbounded_le_Ici - theorem unbounded_le_Ioi - theorem unbounded_le_iff - theorem unbounded_le_inter_le - theorem unbounded_le_inter_lt - theorem unbounded_le_inter_not_le - theorem unbounded_le_of_forall_exists_lt - theorem unbounded_lt_Ici - theorem unbounded_lt_Ioi - theorem unbounded_lt_iff - theorem unbounded_lt_iff_unbounded_le - theorem unbounded_lt_inter_le - theorem unbounded_lt_inter_lt - theorem unbounded_lt_inter_not_lt - theorem unbounded_lt_of_forall_exists_le - theorem unbounded_lt_of_unbounded_le Modified src/order/rel_classes.lean - def bounded - theorem not_bounded_iff - theorem not_unbounded_iff + def set.bounded + theorem set.not_bounded_iff + theorem set.not_unbounded_iff + def set.unbounded - def unbounded 2022-01-25 03:33:32 b834415 chore(topology/metric_space/gromov_hausdorff): Golf some theorems (#11591) ESTIMATED CHANGES Modified src/topology/metric_space/gromov_hausdorff.lean 2022-01-25 03:33:31 88479be feat(algebra/big_operators/basic): add lemma `finset.prod_dvd_prod` (#11521) For any `S : finset α`, if `∀ a ∈ S, g1 a ∣ g2 a` then `S.prod g1 ∣ S.prod g2`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_dvd_prod 2022-01-25 01:56:07 4f5d6ac refactor(tactic/interactive): rename tactic.interactive.triv to tactic.interactive.trivial' (#11643) The difference between `tactic.interactive.trivial` and `tactic.interactive.triv` is that the latter expands only reducible constants; the first uses `tactic.triv` and the latter uses `tactic.triv'`. This name change is to improve consistency. Also (slipping in a new feature) add `tactic.interactive.triv`, which is the old `tactic.interactive.triv` but does not run `contradiction`. This is useful for teaching. ESTIMATED CHANGES Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/data/qpf/multivariate/constructions/fix.lean Modified src/tactic/interactive.lean 2022-01-24 22:53:51 0d172ba feat(README.md): add Riccardo Brasca as new maintainer (#11647) Add myself as new maintainer and test my superpowers :) ESTIMATED CHANGES Modified README.md 2022-01-24 22:53:50 12fde09 feat(data/finset/finsupp): Finitely supported product of finsets (#11639) Define * `finsupp.indicator`: Similar to `finsupp.on_finset` except that it only requires a partially defined function. This is more compatible with `finset.pi`. * `finset.finsupp : finset ι → (ι → finset α) → finset (ι →₀ α)`: Finitely supported product of finsets. * `finsupp.pi : (ι →₀ finset α) → finset (ι →₀ α)`: The set of finitely supported functions whose `i`-th value lies in the `i`-th of a given `finset`-valued `finsupp`. ESTIMATED CHANGES Added src/data/finset/finsupp.lean + theorem finset.card_finsupp + theorem finset.mem_finsupp_iff + theorem finset.mem_finsupp_iff_of_support_subset + theorem finsupp.card_pi + theorem finsupp.mem_pi + def finsupp.pi Modified src/data/finsupp/basic.lean +/- def finsupp.emb_domain.add_monoid_hom +/- def finsupp.map_domain_embedding +/- def finsupp.zip_with Added src/data/finsupp/indicator.lean + def finsupp.indicator + theorem finsupp.indicator_apply + theorem finsupp.indicator_injective + theorem finsupp.indicator_of_mem + theorem finsupp.indicator_of_not_mem + theorem finsupp.support_indicator_subset 2022-01-24 21:01:29 32052b8 chore(ci): remove working directory on self-hosted (#11645) Mathlib now takes several gigabytes to build. This addresses some of the space issues on the CI machines. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2022-01-24 21:01:26 511aa35 feat(algebra/pointwise): add partial order to `set_semiring` (#11567) This PR introduces the natural inclusion order on sets on `set_semiring`. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Ordered.20semirings) ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.down_ssubset_down + theorem set.down_subset_down - def set.set_semiring + theorem set.up_le_up + theorem set.up_lt_up 2022-01-24 21:01:25 9e799a0 feat(algebra/pointwise): Scalar multiplication lemmas (#11486) This proves a bunch of lemmas about pointwise scalar multiplication of sets, moves `has_vsub` to `algebra.group.defs` and pointwise `vsub` lemmas to `algebra.pointwise`. I'm also adding a few sections because having `{s t : set α}` is nice for multiplication but not for scalar multiplication. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean - theorem set.empty_vsub - theorem set.finite.vadd - theorem set.finite.vsub - theorem set.mem_vsub - theorem set.set_vadd_singleton - theorem set.singleton_vsub - theorem set.vadd_subset_vadd - theorem set.vsub_empty - theorem set.vsub_mem_vsub - theorem set.vsub_self_mono - theorem set.vsub_singleton - theorem set.vsub_subset_iff - theorem set.vsub_subset_vsub Modified src/algebra/group/defs.lean Modified src/algebra/pointwise.lean +/- theorem mem_inv_smul_set_iff₀ +/- theorem mem_smul_set_iff_inv_smul_mem₀ +/- theorem preimage_smul_inv₀ +/- theorem preimage_smul₀ + theorem set.Inter_mul_subset + theorem set.Inter_smul_subset + theorem set.Inter_vsub_subset + theorem set.Inter₂_mul_subset + theorem set.Inter₂_smul_subset + theorem set.Inter₂_vsub_subset +/- theorem set.Union_mul +/- theorem set.Union_mul_left_image +/- theorem set.Union_mul_right_image + theorem set.Union_smul + theorem set.Union_smul_left_image + theorem set.Union_smul_right_image + theorem set.Union_vsub + theorem set.Union_vsub_left_image + theorem set.Union_vsub_right_image + theorem set.Union₂_mul + theorem set.Union₂_smul + theorem set.Union₂_vsub +/- theorem set.empty_mul + theorem set.empty_smul + theorem set.empty_vsub + theorem set.finite.smul_set + theorem set.finite.vsub +/- theorem set.image2_mul +/- theorem set.image2_smul + theorem set.image2_vsub +/- theorem set.image_mul_left +/- theorem set.image_mul_prod +/- theorem set.image_mul_right' +/- theorem set.image_mul_right +/- theorem set.image_one +/- theorem set.image_smul +/- theorem set.image_smul_prod + theorem set.image_vsub_prod + theorem set.inter_mul_subset + theorem set.inter_smul_subset + theorem set.inter_vsub_subset +/- theorem set.mem_mul +/- theorem set.mem_one +/- theorem set.mem_smul +/- theorem set.mem_smul_of_mem +/- theorem set.mem_smul_set + theorem set.mem_vsub + theorem set.mul_Inter_subset + theorem set.mul_Inter₂_subset +/- theorem set.mul_Union + theorem set.mul_Union₂ +/- theorem set.mul_empty + theorem set.mul_inter_subset +/- theorem set.mul_mem_mul +/- theorem set.mul_singleton +/- theorem set.mul_subset_mul +/- theorem set.mul_subset_mul_left +/- theorem set.mul_subset_mul_right +/- theorem set.mul_union + theorem set.mul_univ + theorem set.neg_smul_set +/- theorem set.one_mem_one +/- theorem set.one_nonempty +/- theorem set.one_subset +/- theorem set.preimage_mul_left_one +/- theorem set.preimage_mul_right_one' +/- theorem set.preimage_mul_right_one +/- theorem set.range_smul_range +/- theorem set.singleton_mul +/- def set.singleton_mul_hom +/- theorem set.singleton_mul_singleton +/- theorem set.singleton_one +/- theorem set.singleton_smul + theorem set.singleton_smul_singleton + theorem set.singleton_vsub + theorem set.singleton_vsub_singleton + theorem set.smul_Inter_subset + theorem set.smul_Inter₂_subset + theorem set.smul_Union + theorem set.smul_Union₂ + theorem set.smul_empty + theorem set.smul_inter_subset + theorem set.smul_mem_smul +/- theorem set.smul_mem_smul_set + theorem set.smul_set_Inter_subset + theorem set.smul_set_Inter₂_subset + theorem set.smul_set_Union + theorem set.smul_set_Union₂ +/- theorem set.smul_set_empty +/- theorem set.smul_set_inter_subset +/- theorem set.smul_set_mono + theorem set.smul_set_neg + theorem set.smul_set_singleton +/- theorem set.smul_set_union + theorem set.smul_set_univ +/- theorem set.smul_singleton + theorem set.smul_subset_iff + theorem set.smul_subset_smul + theorem set.smul_subset_smul_left + theorem set.smul_subset_smul_right + theorem set.smul_union + theorem set.smul_univ + theorem set.subset_mul_left + theorem set.subset_mul_right +/- theorem set.union_mul + theorem set.union_smul + theorem set.union_vsub + theorem set.univ_mul + theorem set.vsub_Inter_subset + theorem set.vsub_Inter₂_subset + theorem set.vsub_Union + theorem set.vsub_Union₂ + theorem set.vsub_empty + theorem set.vsub_inter_subset + theorem set.vsub_mem_vsub + theorem set.vsub_self_mono + theorem set.vsub_singleton + theorem set.vsub_subset_iff + theorem set.vsub_subset_vsub + theorem set.vsub_subset_vsub_left + theorem set.vsub_subset_vsub_right + theorem set.vsub_union +/- theorem set_smul_subset_iff₀ +/- theorem set_smul_subset_set_smul_iff₀ +/- theorem smul_mem_smul_set_iff₀ + theorem smul_set_univ₀ + theorem smul_univ₀ +/- theorem subset_set_smul_iff₀ +/- theorem subsingleton_zero_smul_set + theorem zero_mem_smul_iff + theorem zero_mem_smul_set + theorem zero_mem_smul_set_iff +/- theorem zero_smul_set +/- theorem zero_smul_subset Modified src/analysis/convex/star.lean 2022-01-24 20:18:07 6aea8ac chore(probability_theory/stopping): fix names in documentation (#11644) ESTIMATED CHANGES Modified src/probability_theory/stopping.lean 2022-01-24 18:04:16 1bbed96 doc(tactic/interactive): mention triv uses contradiction (#11502) Adding the fact that `triv` tries `contradiction` to the docstring for `triv`. ESTIMATED CHANGES Modified src/tactic/interactive.lean 2022-01-24 16:03:59 eccd8dd feat(algebra/lie/nilpotent): generalise lower central series to start with given Lie submodule (#11625) The advantage of this approach is that we can regard the terms of the lower central series of a Lie submodule as Lie submodules of the enclosing Lie module. In particular, this is useful when considering the lower central series of a Lie ideal. ESTIMATED CHANGES Modified src/algebra/lie/ideal_operations.lean + theorem lie_submodule.comap_bracket_eq + theorem lie_submodule.comap_map_eq + theorem lie_submodule.le_comap_map +/- theorem lie_submodule.map_bracket_eq + theorem lie_submodule.map_comap_eq + theorem lie_submodule.map_comap_incl + theorem lie_submodule.map_comap_le Modified src/algebra/lie/nilpotent.lean +/- def lie_module.lower_central_series +/- theorem lie_module.lower_central_series_succ + def lie_submodule.lcs + theorem lie_submodule.lcs_le_self + theorem lie_submodule.lcs_succ + theorem lie_submodule.lcs_zero + theorem lie_submodule.lower_central_series_eq_lcs_comap + theorem lie_submodule.lower_central_series_map_eq_lcs Modified src/algebra/lie/submodule.lean + theorem lie_module_hom.ker_coe_submodule + theorem lie_module_hom.ker_eq_bot + theorem lie_submodule.coe_submodule_comap + theorem lie_submodule.comap_incl_self + theorem lie_submodule.incl_coe + theorem lie_submodule.ker_incl + theorem lie_submodule.range_incl 2022-01-24 16:03:56 a631839 feat(analysis/special_functions/pow): add nnreal variant of rpow_pos (#11619) This matches the lemma for ennreal. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem nnreal.rpow_pos 2022-01-24 16:03:55 155c330 feat(analysis/convex/{basic,function}): add lemmas, golf (#11608) * add `segment_subset_iff`, `open_segment_subset_iff`, use them to golf some proofs; * add `mem_segment_iff_div`, `mem_open_segment_iff_div`, use the former in the proof of `convex_iff_div`; * move the proof of `mpr` in `convex_on_iff_convex_epigraph` to a new lemma; * prove that the strict epigraph of a convex function include the open segment provided that one of the endpoints is in the strong epigraph and the other is in the epigraph; use it in the proof of `convex_on.convex_strict_epigraph`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem convex.linear_image + theorem mem_open_segment_iff_div + theorem mem_segment_iff_div + theorem open_segment_subset_iff + theorem segment_subset_iff Modified src/analysis/convex/function.lean + theorem concave_on.open_segment_subset_strict_hypograph + theorem concave_on_of_convex_hypograph + theorem convex_on.open_segment_subset_strict_epigraph + theorem convex_on_of_convex_epigraph Modified src/analysis/convex/strict.lean 2022-01-24 16:03:53 a52ce83 feat(combinatorics/configuration): The order of a projective plane is at least 2 (#11550) This PR proves that the order of a projective plane is strictly larger than 1. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.projective_plane.one_lt_order + theorem configuration.projective_plane.two_lt_line_count + theorem configuration.projective_plane.two_lt_point_count 2022-01-24 16:03:52 9150268 feat (algebraic_geometry): Constructions of fibred products of schemes (#11450) This is the first half of the PRs about constructing fibred products of schemes, where we construct all the relevant schemes and morphisms but yet to show that they are actually fibred products. ESTIMATED CHANGES Added src/algebraic_geometry/pullbacks.lean + def algebraic_geometry.Scheme.pullback.V + theorem algebraic_geometry.Scheme.pullback.cocycle + theorem algebraic_geometry.Scheme.pullback.cocycle_fst_fst_fst + theorem algebraic_geometry.Scheme.pullback.cocycle_fst_fst_snd + theorem algebraic_geometry.Scheme.pullback.cocycle_fst_snd + theorem algebraic_geometry.Scheme.pullback.cocycle_snd_fst_fst + theorem algebraic_geometry.Scheme.pullback.cocycle_snd_fst_snd + theorem algebraic_geometry.Scheme.pullback.cocycle_snd_snd + def algebraic_geometry.Scheme.pullback.fV + def algebraic_geometry.Scheme.pullback.glued_lift + theorem algebraic_geometry.Scheme.pullback.glued_lift_p1 + theorem algebraic_geometry.Scheme.pullback.glued_lift_p2 + def algebraic_geometry.Scheme.pullback.glued_lift_pullback_map + theorem algebraic_geometry.Scheme.pullback.glued_lift_pullback_map_fst + theorem algebraic_geometry.Scheme.pullback.glued_lift_pullback_map_snd + def algebraic_geometry.Scheme.pullback.gluing + def algebraic_geometry.Scheme.pullback.p1 + def algebraic_geometry.Scheme.pullback.p2 + theorem algebraic_geometry.Scheme.pullback.p_comm + def algebraic_geometry.Scheme.pullback.t' + theorem algebraic_geometry.Scheme.pullback.t'_fst_fst_fst + theorem algebraic_geometry.Scheme.pullback.t'_fst_fst_snd + theorem algebraic_geometry.Scheme.pullback.t'_fst_snd + theorem algebraic_geometry.Scheme.pullback.t'_snd_fst_fst + theorem algebraic_geometry.Scheme.pullback.t'_snd_fst_snd + theorem algebraic_geometry.Scheme.pullback.t'_snd_snd + def algebraic_geometry.Scheme.pullback.t + theorem algebraic_geometry.Scheme.pullback.t_fst_fst + theorem algebraic_geometry.Scheme.pullback.t_fst_snd + theorem algebraic_geometry.Scheme.pullback.t_id + theorem algebraic_geometry.Scheme.pullback.t_snd 2022-01-24 14:20:36 4a6709b feat(data/{int,nat}/gcd): add `nat.gcd_greatest` (#11611) Add lemma characterising `gcd` in `ℕ`, counterpart of `int.gcd_greatest`. Also add shorter proof of `int.gcd_greatest`. ESTIMATED CHANGES Modified src/data/int/gcd.lean Modified src/data/nat/gcd.lean + theorem nat.gcd_greatest 2022-01-24 14:20:33 bc2f73f feat(topology/uniform_space/uniform_convergence): Product of `tendsto_uniformly` (#11562) This PR adds lemmas `tendsto_uniformly_on.prod` and `tendsto_uniformly.prod`. ESTIMATED CHANGES Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_uniformly.prod + theorem tendsto_uniformly.prod_map + theorem tendsto_uniformly_on.prod + theorem tendsto_uniformly_on.prod_map 2022-01-24 12:47:20 f99af7d chore(data/set/lattice): Generalize more `⋃`/`⋂` lemmas to dependent families (#11516) The "bounded union" and "bounded intersection" are both instances of nested `⋃`/`⋂`. But they only apply when the inner one runs over a predicate `p : ι → Prop`, and the resulting set couldn't depend on `p`. This generalizes to `κ : ι → Sort*` and allows dependence on `κ i`. The lemmas are renamed from `bUnion`/`bInter` to `Union₂`/`Inter₂` to show that they are more general. Some generalizations lead to unification problems, so I've kept the `b` version around. Some lemmas were missing between `⋃` and `⋂` or between `⋃`/`⋂` and nested `⋃`/`⋂`, so I'm adding them as well. Renames ESTIMATED CHANGES Modified src/algebra/module/submodule_lattice.lean Modified src/analysis/box_integral/partition/basic.lean +/- theorem box_integral.prepartition.Union_subset Modified src/analysis/box_integral/partition/tagged.lean +/- theorem box_integral.tagged_prepartition.Union_subset Modified src/analysis/convex/simplicial_complex/basic.lean Modified src/analysis/normed_space/weak_dual.lean Modified src/analysis/seminorm.lean Modified src/data/set/accumulate.lean Modified src/data/set/intervals/disjoint.lean Modified src/data/set/lattice.lean +/- theorem set.Inter_congr + theorem set.Inter_congr_of_surjective + theorem set.Inter_mono' + theorem set.Inter_mono - theorem set.Inter_subset_Inter2 - theorem set.Inter_subset_Inter + theorem set.Inter_subset_Inter₂ +/- theorem set.Inter_subset_of_subset + theorem set.Inter₂_congr + theorem set.Inter₂_eq_empty_iff + theorem set.Inter₂_mono' + theorem set.Inter₂_mono + theorem set.Inter₂_subset +/- theorem set.Union_Inter_subset +/- theorem set.Union_congr + theorem set.Union_congr_of_surjective + theorem set.Union_mono' + theorem set.Union_mono +/- theorem set.Union_prod_const +/- theorem set.Union_range_eq_Union + theorem set.Union_set_of +/- theorem set.Union_subset - theorem set.Union_subset_Union2 - theorem set.Union_subset_Union +/- theorem set.Union_subset_iff + theorem set.Union₂_congr + theorem set.Union₂_eq_univ_iff + theorem set.Union₂_inter + theorem set.Union₂_mono' + theorem set.Union₂_mono + theorem set.Union₂_prod_const + theorem set.Union₂_subset + theorem set.Union₂_subset_Union + theorem set.Union₂_subset_iff - theorem set.bInter_congr - theorem set.bInter_eq_empty_iff - theorem set.bInter_mono' +/- theorem set.bInter_mono - theorem set.bUnion_congr - theorem set.bUnion_eq_univ_iff - theorem set.bUnion_inter +/- theorem set.bUnion_mono - theorem set.bUnion_prod_const - theorem set.bUnion_subset - theorem set.bUnion_subset_Union - theorem set.bUnion_subset_bUnion + theorem set.compl_Inter₂ + theorem set.compl_Union₂ - theorem set.compl_bInter - theorem set.compl_bUnion + theorem set.image2_Inter_subset_left + theorem set.image2_Inter_subset_right + theorem set.image2_Inter₂_subset_left + theorem set.image2_Inter₂_subset_right + theorem set.image2_Union₂_left + theorem set.image2_Union₂_right + theorem set.image_Inter₂_subset + theorem set.image_Union₂ - theorem set.image_bInter_subset - theorem set.image_bUnion + theorem set.inter_Union₂ - theorem set.inter_bUnion + theorem set.maps_to_Inter₂ + theorem set.maps_to_Inter₂_Inter₂ + theorem set.maps_to_Union₂ + theorem set.maps_to_Union₂_Union₂ - theorem set.maps_to_bInter - theorem set.maps_to_bInter_bInter - theorem set.maps_to_bUnion - theorem set.maps_to_bUnion_bUnion +/- theorem set.mem_Inter +/- theorem set.mem_Inter_of_mem +/- theorem set.mem_Inter₂ + theorem set.mem_Inter₂_of_mem +/- theorem set.mem_Union + theorem set.mem_Union_of_mem +/- theorem set.mem_Union₂ + theorem set.mem_Union₂_of_mem + theorem set.nonempty_Inter₂ - theorem set.nonempty_bInter +/- theorem set.preimage_Inter + theorem set.preimage_Inter₂ +/- theorem set.preimage_Union + theorem set.preimage_Union₂ - theorem set.preimage_bInter - theorem set.preimage_bUnion +/- theorem set.prod_Union + theorem set.prod_Union₂ - theorem set.prod_bUnion +/- theorem set.subset_Inter_iff + theorem set.subset_Inter₂ + theorem set.subset_Inter₂_iff + theorem set.subset_Union_of_subset + theorem set.subset_Union₂ - theorem set.subset_bInter - theorem set.subset_subset_Union + theorem set.surj_on_Union₂ + theorem set.surj_on_Union₂_Union₂ - theorem set.surj_on_bUnion - theorem set.surj_on_bUnion_bUnion +/- theorem set.union_distrib_Inter_left +/- theorem set.union_distrib_Inter_right + theorem set.union_distrib_Inter₂_left + theorem set.union_distrib_Inter₂_right - theorem set.union_distrib_bInter_left - theorem set.union_distrib_bInter_right Modified src/data/set/pairwise.lean Modified src/deprecated/subgroup.lean Modified src/dynamics/ergodic/conservative.lean Modified src/dynamics/omega_limit.lean Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/linear_independent.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/function/uniform_integrable.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/number_theory/liouville/residual.lean Modified src/order/compactly_generated.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/filter/pi.lean Modified src/ring_theory/algebraic_independent.lean Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/ideal/operations.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/topology/G_delta.lean Modified src/topology/algebra/group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean + theorem interior_Inter₂_subset - theorem interior_bInter_subset Modified src/topology/connected.lean Modified src/topology/continuous_on.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/hausdorff_dimension.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/shrinking_lemma.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/shrinking_lemma.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_convergence.lean 2022-01-24 12:18:54 ee36571 feat(algebra/lie/cartan_subalgebra): add self-normalizing characterisation for Lie subalgebra (#11598) ESTIMATED CHANGES Modified src/algebra/lie/cartan_subalgebra.lean + theorem lie_subalgebra.mem_normalizer_iff' + theorem lie_subalgebra.normalizer_eq_self_iff Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.neg_mem_iff Modified src/algebra/lie/submodule.lean + theorem lie_submodule.mk_eq_zero + theorem lie_submodule.to_submodule_eq_coe 2022-01-24 11:34:45 dac4f40 feat(analysis/normed_space/linear_isometry): `to_linear_equiv_trans` (#11628) Add a lemma relating `trans` for `linear_isometry_equiv` and `linear_equiv`. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.to_linear_equiv_trans 2022-01-24 11:34:44 ed90301 feat(group_theory/commuting_probability): Commuting probability inequalities (#11564) This PR adds some inequalities for the commuting probability. ESTIMATED CHANGES Modified src/group_theory/commuting_probability.lean + theorem inv_card_commutator_le_comm_prob + theorem subgroup.comm_prob_quotient_le + theorem subgroup.comm_prob_subgroup_le 2022-01-24 10:02:38 9ef7f6b feat(linear_algebra/orientation): `eq_neg_iff_eq_neg` (#11629) Add two more `module.ray` lemmas about negation. ESTIMATED CHANGES Modified src/linear_algebra/orientation.lean + theorem module.ray.neg_involutive 2022-01-24 10:02:37 7ddb9a3 refactor(order/ideal): Generalize definition and lemmas (#11421) * Generalize the `order_top` instance to `[nonempty P] [is_directed P (≤)]`. * Delete `order.ideal.ideal_inter_nonempty` in favor of the equivalent condition `is_directed P (swap (≤))`. * Delete `order.ideal.sup`/`order.ideal.inf` in favor of a direct instance declaration. * Generalize defs/lemmas from `preorder` to `has_le` or `partial_order` to `preorder`. * Two more `is_directed` lemmas and instances for `order_bot` and `order_top`. ESTIMATED CHANGES Modified src/order/atoms.lean +/- def is_atom +/- def is_coatom Modified src/order/directed.lean + theorem directed_id_iff - theorem directed_id_iff_is_directed + theorem directed_on_univ + theorem directed_on_univ_iff Modified src/order/ideal.lean +/- theorem is_coatom.is_maximal +/- theorem is_coatom.is_proper +/- theorem order.ideal.bot_mem + theorem order.ideal.coe_inj + theorem order.ideal.coe_injective +/- theorem order.ideal.coe_top +/- theorem order.ideal.eq_sup_of_le_sup - theorem order.ideal.ext'_iff +/- theorem order.ideal.ext + theorem order.ideal.ext_iff - theorem order.ideal.ext_set_eq - def order.ideal.inf +/- theorem order.ideal.inter_nonempty - theorem order.ideal.is_ideal +/- theorem order.ideal.is_maximal.is_coatom' +/- theorem order.ideal.is_maximal.is_coatom +/- theorem order.ideal.is_maximal_iff_is_coatom +/- theorem order.ideal.is_proper.ne_top +/- theorem order.ideal.is_proper.top_not_mem +/- theorem order.ideal.is_proper_iff_ne_top +/- theorem order.ideal.is_proper_of_ne_top +/- theorem order.ideal.mem_inf +/- theorem order.ideal.mem_principal +/- theorem order.ideal.mem_sup - def order.ideal.sup - theorem order.ideal.sup_le - theorem order.ideal.top_of_mem_top + theorem order.ideal.top_of_top_mem +/- structure order.ideal +/- def order.is_ideal.to_ideal +/- structure order.is_ideal +/- theorem order.mem_ideal_of_cofinals 2022-01-24 10:02:36 9becbc7 feat(algebra/order/rearrangement) : Rearrangement Inequality (#10861) A range of variants of the rearrangement inequality. This is stated with scalar multiplication of a linear ring over an additive linear group, rather than having everything be in a linear ring. We couldn't find general statements of the rearrangement inequality in the literature, but this very much seems like an improvement. ESTIMATED CHANGES Added src/algebra/order/rearrangement.lean + theorem antivary.sum_mul_le_sum_comp_perm_mul + theorem antivary.sum_mul_le_sum_mul_comp_perm + theorem antivary.sum_smul_le_sum_comp_perm_smul + theorem antivary.sum_smul_le_sum_smul_comp_perm + theorem antivary_on.sum_mul_le_sum_comp_perm_mul + theorem antivary_on.sum_mul_le_sum_mul_comp_perm + theorem antivary_on.sum_smul_le_sum_comp_perm_smul + theorem antivary_on.sum_smul_le_sum_smul_comp_perm + theorem monovary.sum_comp_perm_mul_le_sum_mul + theorem monovary.sum_comp_perm_smul_le_sum_smul + theorem monovary.sum_mul_comp_perm_le_sum_mul + theorem monovary.sum_smul_comp_perm_le_sum_smul + theorem monovary_on.sum_comp_perm_mul_le_sum_mul + theorem monovary_on.sum_comp_perm_smul_le_sum_smul + theorem monovary_on.sum_mul_comp_perm_le_sum_mul + theorem monovary_on.sum_smul_comp_perm_le_sum_smul Modified src/order/monovary.lean 2022-01-24 07:24:57 8c64be0 chore(category_theory/abelian): Moved more stuff into `pseudoelement` locale (#11621) The `ext` lemma triggers unwantedly in lots of places. ESTIMATED CHANGES Modified src/category_theory/abelian/diagram_lemmas/four.lean Modified src/category_theory/abelian/pseudoelements.lean +/- theorem category_theory.abelian.pseudoelement.zero_morphism_ext' +/- theorem category_theory.abelian.pseudoelement.zero_morphism_ext 2022-01-24 05:54:29 8f73b07 feat(set_theory/surreal/dyadic): define add_monoid_hom structure on dyadic map (#11052) The proof is mechanical and mostly requires unraveling definitions. The above map cannot be extended to ring morphism as so far there's not multiplication structure on surreal numbers. ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean + theorem submonoid.log_mul +/- theorem submonoid.log_pow_eq_self + theorem submonoid.pow_apply Modified src/ring_theory/localization.lean + theorem localization.lift_on_zero Modified src/set_theory/surreal/dyadic.lean +/- def surreal.dyadic_map + theorem surreal.dyadic_map_apply + theorem surreal.dyadic_map_apply_pow 2022-01-24 03:52:26 32cd278 feat(analysis/asymptotics): add a few lemmas (#11623) * rename `is_o.tendsto_0` to `is_o.tendsto_div_nhds_zero`, add `is_o.tendsto_inv_smul_nhds_zero`; * add `is_o_const_left` and `filter.is_bounded_under.is_o_sub_self_inv`. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/asymptotics/asymptotics.lean - theorem asymptotics.is_o.tendsto_0 + theorem asymptotics.is_o.tendsto_div_nhds_zero + theorem asymptotics.is_o.tendsto_inv_smul_nhds_zero + theorem asymptotics.is_o_const_left + theorem asymptotics.is_o_const_left_of_ne +/- theorem filter.is_bounded_under.is_O_const Modified src/analysis/asymptotics/specific_asymptotics.lean + theorem filter.is_bounded_under.is_o_sub_self_inv Modified src/analysis/normed/group/basic.lean + theorem tendsto_norm_sub_self_punctured_nhds Modified src/analysis/normed_space/units.lean Modified src/analysis/specific_limits.lean 2022-01-24 02:18:18 095c46c feat(linear_algebra/basis): `reindex_refl` (#11626) Add a `simp` lemma about applying `basis.reindex` with `equiv.refl`. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.reindex_refl 2022-01-23 15:43:45 5449ffa feat(data/nat/prime): factors of non-prime powers (#11546) Adds the result `pow_factors_to_finset`, fills in `factors_mul_to_finset_of_coprime` for the sake of completion, and adjusts statements to take `ne_zero` rather than pos assumptions. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem list.to_finset.ext + theorem list.to_finset.ext_iff Modified src/data/nat/factorization.lean + theorem nat.factorization_mul_support - theorem nat.factorization_mul_support_of_pos Modified src/data/nat/prime.lean +/- theorem nat.coprime_factors_disjoint - theorem nat.factors_mul_of_coprime - theorem nat.factors_mul_of_pos + theorem nat.factors_mul_to_finset + theorem nat.factors_mul_to_finset_of_coprime +/- theorem nat.mem_factors + theorem nat.mem_factors_mul + theorem nat.mem_factors_mul_of_coprime - theorem nat.mem_factors_mul_of_pos + theorem nat.pow_factors_to_finset + theorem nat.pow_succ_factors_to_finset +/- theorem nat.prime_pow_prime_divisor Modified src/group_theory/p_group.lean 2022-01-23 13:55:13 59ef8ce feat(measure_theory/measure): assorted lemmas (#11612) * add `ae_disjoint_compl_left/right`; * deduce `restrict_to_measurable` and `restrict_to_measurable_of_sigma_finite` from @sgouezel 's lemmas about measures of intersections; * add `ae_restrict_mem₀`; * add `ae_eq_univ`. ESTIMATED CHANGES Modified src/measure_theory/measure/ae_disjoint.lean + theorem measure_theory.ae_disjoint_compl_left + theorem measure_theory.ae_disjoint_compl_right Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.ae_restrict_iff' +/- theorem measure_theory.ae_restrict_mem + theorem measure_theory.ae_restrict_mem₀ + theorem measure_theory.measure.restrict_to_measurable + theorem measure_theory.measure.restrict_to_measurable_of_sigma_finite Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.ae_eq_univ 2022-01-23 10:59:21 d0f392e feat(analysis/calculus/inverse): a map which approximates a linear map on a set admits a nice global extension (#11568) And several other results on maps that are well approximated by linear maps on some subset of the space (not necessarily open). ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean + theorem approximates_linear_on.approximates_linear_on_iff_lipschitz_on_with + theorem approximates_linear_on.exists_homeomorph_extension +/- theorem approximates_linear_on.open_image + def approximates_linear_on.to_homeomorph + theorem approximates_linear_on.to_inv + theorem approximates_linear_on_empty Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.antilipschitz_of_bound + theorem continuous_linear_map.bound_of_antilipschitz Modified src/order/filter/at_top_bot.lean + theorem filter.Ici_mem_at_top Modified src/topology/metric_space/basic.lean + theorem metric.forall_of_forall_mem_ball + theorem metric.forall_of_forall_mem_closed_ball 2022-01-23 07:44:41 b1ad301 feat(number_theory/cyclotomic/basic): add missing lemmas (#11451) We add some missing lemmas about cyclotomic extensions. From flt-regular. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean + theorem cyclotomic_ring.eq_adjoin_primitive_root + theorem is_cyclotomic_extension.adjoin_primitive_root_eq_top + theorem is_cyclotomic_extension.adjoin_roots_cyclotomic_eq_adjoin_root_cyclotomic 2022-01-23 03:26:11 9a517cf chore(analysis/normed/group/completion): fix attribution (#11614) This code was written by @jcommelin in #6189 but somehow acquired my name during a refactor (#10055). I don't think I've ever touched it! ESTIMATED CHANGES Modified src/analysis/normed/group/completion.lean 2022-01-23 02:45:45 2babfeb chore(data/complex/is_R_or_C): squeeze simps (#11251) This PR squeezes most of the simps in `is_R_or_C`, and updates the module docstring. ESTIMATED CHANGES Modified src/analysis/normed_space/is_R_or_C.lean +/- theorem is_R_or_C.norm_coe_norm Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.I_im' +/- theorem is_R_or_C.I_im +/- theorem is_R_or_C.I_mul_re +/- theorem is_R_or_C.I_re +/- theorem is_R_or_C.I_to_real +/- theorem is_R_or_C.abs_abs +/- theorem is_R_or_C.abs_cast_nat +/- theorem is_R_or_C.abs_conj +/- theorem is_R_or_C.abs_div +/- theorem is_R_or_C.abs_eq_zero +/- theorem is_R_or_C.abs_inv +/- theorem is_R_or_C.abs_mul +/- theorem is_R_or_C.abs_neg +/- theorem is_R_or_C.abs_one +/- theorem is_R_or_C.abs_pos +/- theorem is_R_or_C.abs_to_real +/- theorem is_R_or_C.abs_two +/- theorem is_R_or_C.abs_zero +/- theorem is_R_or_C.bit0_im +/- theorem is_R_or_C.bit0_re +/- theorem is_R_or_C.bit1_im +/- theorem is_R_or_C.bit1_re +/- theorem is_R_or_C.conj_I +/- theorem is_R_or_C.conj_ae_coe +/- theorem is_R_or_C.conj_bit0 +/- theorem is_R_or_C.conj_bit1 +/- theorem is_R_or_C.conj_cle_apply +/- theorem is_R_or_C.conj_cle_coe +/- theorem is_R_or_C.conj_cle_norm +/- theorem is_R_or_C.conj_eq_re_sub_im +/- theorem is_R_or_C.conj_im +/- theorem is_R_or_C.conj_lie_apply +/- theorem is_R_or_C.conj_neg_I +/- theorem is_R_or_C.conj_of_real +/- theorem is_R_or_C.conj_re +/- theorem is_R_or_C.conj_smul +/- theorem is_R_or_C.conj_to_real +/- theorem is_R_or_C.div_I +/- theorem is_R_or_C.im_clm_apply +/- theorem is_R_or_C.im_clm_coe +/- theorem is_R_or_C.im_lm_coe +/- theorem is_R_or_C.im_to_real +/- theorem is_R_or_C.int_cast_im +/- theorem is_R_or_C.int_cast_re +/- theorem is_R_or_C.inv_I +/- theorem is_R_or_C.inv_im +/- theorem is_R_or_C.inv_re +/- theorem is_R_or_C.mul_im +/- theorem is_R_or_C.mul_re +/- theorem is_R_or_C.nat_cast_im +/- theorem is_R_or_C.nat_cast_re +/- theorem is_R_or_C.norm_conj +/- theorem is_R_or_C.norm_eq_abs +/- theorem is_R_or_C.norm_sq_conj +/- theorem is_R_or_C.norm_sq_div +/- theorem is_R_or_C.norm_sq_eq_zero +/- theorem is_R_or_C.norm_sq_inv +/- theorem is_R_or_C.norm_sq_mul +/- theorem is_R_or_C.norm_sq_neg +/- theorem is_R_or_C.norm_sq_of_real +/- theorem is_R_or_C.norm_sq_one +/- theorem is_R_or_C.norm_sq_pos +/- theorem is_R_or_C.norm_sq_sub +/- theorem is_R_or_C.norm_sq_to_real +/- theorem is_R_or_C.norm_sq_zero +/- theorem is_R_or_C.of_real_add +/- theorem is_R_or_C.of_real_am_coe +/- theorem is_R_or_C.of_real_bit0 +/- theorem is_R_or_C.of_real_bit1 +/- theorem is_R_or_C.of_real_clm_apply +/- theorem is_R_or_C.of_real_clm_coe +/- theorem is_R_or_C.of_real_clm_norm +/- theorem is_R_or_C.of_real_div +/- theorem is_R_or_C.of_real_eq_zero +/- theorem is_R_or_C.of_real_finsupp_prod +/- theorem is_R_or_C.of_real_finsupp_sum +/- theorem is_R_or_C.of_real_im +/- theorem is_R_or_C.of_real_int_cast +/- theorem is_R_or_C.of_real_inv +/- theorem is_R_or_C.of_real_li_apply +/- theorem is_R_or_C.of_real_mul +/- theorem is_R_or_C.of_real_mul_im +/- theorem is_R_or_C.of_real_mul_re +/- theorem is_R_or_C.of_real_nat_cast +/- theorem is_R_or_C.of_real_neg +/- theorem is_R_or_C.of_real_one +/- theorem is_R_or_C.of_real_pow +/- theorem is_R_or_C.of_real_prod +/- theorem is_R_or_C.of_real_rat_cast +/- theorem is_R_or_C.of_real_re +/- theorem is_R_or_C.of_real_smul +/- theorem is_R_or_C.of_real_sub +/- theorem is_R_or_C.of_real_sum +/- theorem is_R_or_C.of_real_zero +/- theorem is_R_or_C.of_real_zpow +/- theorem is_R_or_C.one_im +/- theorem is_R_or_C.one_re +/- theorem is_R_or_C.rat_cast_im +/- theorem is_R_or_C.rat_cast_re +/- theorem is_R_or_C.re_add_im +/- theorem is_R_or_C.re_clm_apply +/- theorem is_R_or_C.re_clm_coe +/- theorem is_R_or_C.re_clm_norm +/- theorem is_R_or_C.re_lm_coe +/- theorem is_R_or_C.re_to_real +/- theorem is_R_or_C.smul_im +/- theorem is_R_or_C.smul_re +/- theorem is_R_or_C.zero_re' 2022-01-22 23:39:48 84dbe7b feat(measure_theory/covering): Lebesgue density points (#11554) We show in the general context of differentiation of measures that `μ (s ∩ a) / μ a` converges, when `a` shrinks towards a point `x`, to `1` for almost every `x` in `s`, and to `0` for almost every point outside of `s`. In other words, almost every point of `s` is a Lebesgue density points of `s`. Of course, this requires assumptions on allowed sets `a`. We state this in the general context of Vitali families. We also give easier to use versions in spaces with the Besicovitch property (e.g., final dimensional real vector spaces), where one can take for `a` the closed balls centered at `x`. ESTIMATED CHANGES Modified src/measure_theory/covering/besicovitch.lean + theorem besicovitch.ae_tendsto_measure_inter_div + theorem besicovitch.ae_tendsto_measure_inter_div_of_measurable_set + theorem besicovitch.ae_tendsto_rn_deriv +/- theorem besicovitch.exists_disjoint_closed_ball_covering_ae +/- theorem besicovitch.exists_disjoint_closed_ball_covering_ae_aux + theorem besicovitch.tendsto_filter_at Modified src/measure_theory/covering/differentiation.lean + theorem vitali_family.ae_tendsto_measure_inter_div + theorem vitali_family.ae_tendsto_measure_inter_div_of_measurable_set Modified src/measure_theory/covering/vitali_family.lean + theorem vitali_family.eventually_filter_at_measurable_set Modified src/measure_theory/decomposition/lebesgue.lean + theorem measure_theory.measure.rn_deriv_restrict Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.with_density_indicator_one 2022-01-22 22:28:56 a196f9b chore(measure_theory/probability_mass_function): Move pmf monad operations into a seperate file (#11579) This PR moves the `pure`, `bind`, and `bind_on_support` operations on `pmf` into a new `probability_mass_function/monad.lean` file. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/basic.lean - def pmf.bind - theorem pmf.bind_apply - theorem pmf.bind_bind - theorem pmf.bind_comm - theorem pmf.bind_pure - theorem pmf.coe_bind_apply - theorem pmf.mem_support_bind_iff - theorem pmf.mem_support_pure_iff: - def pmf.pure - theorem pmf.pure_apply - theorem pmf.pure_bind - theorem pmf.support_bind - theorem pmf.support_pure Modified src/measure_theory/probability_mass_function/constructions.lean - def pmf.bind_on_support - theorem pmf.bind_on_support_apply - theorem pmf.bind_on_support_bind_on_support - theorem pmf.bind_on_support_comm - theorem pmf.bind_on_support_eq_bind - theorem pmf.bind_on_support_eq_zero_iff - theorem pmf.bind_on_support_pure - theorem pmf.coe_bind_on_support_apply - theorem pmf.mem_support_bind_on_support_iff - theorem pmf.pure_bind_on_support - theorem pmf.support_bind_on_support Added src/measure_theory/probability_mass_function/monad.lean + def pmf.bind + theorem pmf.bind_apply + theorem pmf.bind_bind + theorem pmf.bind_comm + def pmf.bind_on_support + theorem pmf.bind_on_support_apply + theorem pmf.bind_on_support_bind_on_support + theorem pmf.bind_on_support_comm + theorem pmf.bind_on_support_eq_bind + theorem pmf.bind_on_support_eq_zero_iff + theorem pmf.bind_on_support_pure + theorem pmf.bind_pure + theorem pmf.coe_bind_apply + theorem pmf.coe_bind_on_support_apply + theorem pmf.mem_support_bind_iff + theorem pmf.mem_support_bind_on_support_iff + theorem pmf.mem_support_pure_iff: + def pmf.pure + theorem pmf.pure_apply + theorem pmf.pure_bind + theorem pmf.pure_bind_on_support + theorem pmf.support_bind + theorem pmf.support_bind_on_support + theorem pmf.support_pure 2022-01-22 22:28:55 31db25b feat(topology/instances/ennreal): continuity of subtraction on ennreal (#11527) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.mul_inv Modified src/data/real/nnreal.lean + theorem nnreal.inv_lt_inv + theorem nnreal.inv_lt_inv_iff Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_sub 2022-01-22 20:53:55 159d9ac split(order/max): Split off `order.basic` (#11603) This moves `is_bot`, `is_top`, `no_min_order`, `no_max_order` to a new file `order.max`. ESTIMATED CHANGES Modified src/order/basic.lean - theorem exists_gt - theorem exists_lt - theorem is_bot.unique - def is_bot - theorem is_bot_or_exists_lt - theorem is_top.unique - def is_top - theorem is_top_or_exists_gt - theorem not_is_bot - theorem not_is_top Modified src/order/bounded_order.lean Added src/order/max.lean + theorem is_bot.to_dual + theorem is_bot.unique + def is_bot + theorem is_bot_or_exists_lt + theorem is_top.to_dual + theorem is_top.unique + def is_top + theorem is_top_or_exists_gt + theorem not_is_bot + theorem not_is_top Modified src/order/order_dual.lean - theorem is_bot.to_dual - theorem is_top.to_dual 2022-01-22 20:00:08 5080d64 feat(topology): add a few lemmas (#11607) * add `homeomorph.preimage_interior`, `homeomorph.image_interior`, reorder lemmas; * add `is_open.smul₀` and `interior_smul₀`. ESTIMATED CHANGES Modified src/topology/algebra/mul_action.lean + theorem interior_smul₀ + theorem is_open.smul₀ Modified src/topology/homeomorph.lean + theorem homeomorph.image_interior + theorem homeomorph.preimage_interior 2022-01-22 18:38:06 bd3b892 move(order/hom/order): Move from `order.hom.lattice` (#11601) Rename `order.hom.lattice` into `order.hom.order` to make space for lattice homomorphisms, as opposed to the lattice of order homomorphisms. ESTIMATED CHANGES Modified src/order/fixed_points.lean Renamed src/order/hom/lattice.lean to src/order/hom/order.lean Modified src/order/omega_complete_partial_order.lean 2022-01-22 18:38:05 206b56e doc(group_theory.quotient_group): Fix typos in main statement list (#11581) This now matches the docstring for the declaration in question. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean 2022-01-22 18:38:03 155cf1d feat(group_theory/abelianization): add mul_equiv.abelianization_congr (#11466) ESTIMATED CHANGES Modified src/group_theory/abelianization.lean + theorem abelianization.lift_of + def abelianization.map + theorem abelianization.map_comp + theorem abelianization.map_id + theorem abelianization.map_map_apply + theorem abelianization.map_of + theorem abelianization.mk_eq_of + theorem abelianization_congr_of + theorem abelianization_congr_refl + theorem abelianization_congr_symm + theorem abelianization_congr_trans + def mul_equiv.abelianization_congr 2022-01-22 18:05:24 7ba08d3 fix(category_theory/triangulated): Fix definition of pretriangulated (#11596) The original definition unfolds to `(T₁ : triangle C) (T₁ ∈ distinguished_triangles) (T₂ : triangle C) (T₁ : triangle C) (e : T₁ ≅ T₂)`, where the two `T₁` are referring to different triangles. ESTIMATED CHANGES Modified src/category_theory/triangulated/pretriangulated.lean 2022-01-22 17:00:41 d1b5165 chore(group_theory/nilpotent): golf some proofs (#11599) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean 2022-01-22 16:18:02 fbf3c64 chore(analysis/normed_space/star): golf some lemmas (#11600) ESTIMATED CHANGES Modified src/analysis/normed_space/star.lean 2022-01-22 13:06:18 504e1f6 feat(group_theory.nilpotent): add *_central_series_one G 1 = … simp lemmas (#11584) analogously to the existing `_zero` lemmas ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem lower_central_series_one + theorem upper_central_series_one 2022-01-22 13:06:17 b630b8c feat(order/antichain): Strong antichains (#11400) This introduces a predicate `is_strong_antichain` to state that a set is a strong antichain with respect to a relation. `s` is a strong (upward) antichain wrt `r` if for all `a ≠ b` in `s` there is some `c` such that `¬ r a c` or `¬ r b c`. A strong downward antichain of the swapped relation. ESTIMATED CHANGES Modified src/data/set/pairwise.lean Modified src/order/antichain.lean - theorem is_antichain.eq_of_related' - theorem is_antichain.eq_of_related + theorem is_strong_antichain.eq + theorem is_strong_antichain.image + theorem is_strong_antichain.mono + theorem is_strong_antichain.preimage + theorem is_strong_antichain.swap + def is_strong_antichain + theorem is_strong_antichain_insert + theorem set.subsingleton.is_strong_antichain Modified src/order/minimal.lean Modified src/order/well_founded_set.lean 2022-01-22 12:01:38 0ca7795 feat(algebra/algebra/operations): remove two hypotheses from `submodule.mul_induction_on` (#11533) `h0 : C 0` followed trivially from `hm 0 _ 0 _`. `hs : ∀ (r : R) x, C x → C (r • x)` follows nontrivially from an analogy to the `add_submonoid` case. This also adds: * a `pow_induction` variant. * primed variants for when the motive depends on the proof term (such as the proof field in a subtype) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.mul_to_add_submonoid Modified src/ring_theory/fractional_ideal.lean 2022-01-21 23:07:46 5e9c0a5 feat(group_theory/subgroup/basic): add center_le_normalizer (#11590) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.center_le_normalizer 2022-01-21 22:19:47 d99f2fd chore(analysis/normed/group/basic): merge `norm` and `semi_norm` lemmas on `prod` and `pi` (#11492) `norm` and `semi_norm` are the same operator, so there is no need to have two sets of lemmas. As a result the elaborator needs a few hints for some applications of the `pi` lemmas, but this is par for the course for pi typeclass instances anyway. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/normed/group/basic.lean +/- theorem norm_le_pi_norm - theorem pi_nnsemi_norm_const +/- theorem pi_norm_le_iff +/- theorem pi_norm_lt_iff - theorem pi_semi_norm_const - theorem pi_semi_norm_le_iff - theorem pi_semi_norm_lt_iff - theorem prod.nnsemi_norm_def - theorem prod.semi_norm_def - theorem semi_norm_fst_le - theorem semi_norm_le_pi_norm - theorem semi_norm_prod_le_iff - theorem semi_norm_snd_le Modified src/analysis/normed_space/basic.lean + theorem norm_matrix_le_iff - theorem semi_norm_matrix_le_iff Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean 2022-01-21 21:34:00 0653975 chore(category_theory/sites): Generalize universes for the comparison lemma. (#11588) ESTIMATED CHANGES Modified src/category_theory/limits/kan_extension.lean Modified src/category_theory/sites/cover_lifting.lean Modified src/category_theory/sites/dense_subsite.lean 2022-01-21 19:30:19 049d2ac feat(analysis/fourier): Fourier series for functions in L2; Parseval's identity (#11320) ESTIMATED CHANGES Modified docs/100.yaml Modified docs/undergrad.yaml Modified src/analysis/fourier.lean + theorem coe_fn_fourier_Lp + theorem coe_fourier_series + def fourier_series + theorem fourier_series_repr + theorem has_sum_fourier_series + theorem tsum_sq_fourier_series_repr 2022-01-21 15:40:51 9c39019 refactor(src/order/bounded): Invert iff direction (#11582) That way, `unbounded_gt_iff_unbounded_ge` corresponds to `unbounded_lt_iff_unbounded_le`. ESTIMATED CHANGES Modified src/order/bounded.lean - theorem unbounded_ge_iff_unbounded_gt + theorem unbounded_gt_iff_unbounded_ge 2022-01-21 10:54:30 ca79513 feat(order/bounded): Proved many lemmas about bounded and unbounded sets (#11179) These include more convenient characterizations of unboundedness in preorders and linear orders, and many results about bounded intervals and initial segments. ESTIMATED CHANGES Added src/order/bounded.lean + theorem bounded.mono + theorem bounded.rel_mono + theorem bounded_ge_Icc + theorem bounded_ge_Ici + theorem bounded_ge_Ico + theorem bounded_ge_Ioc + theorem bounded_ge_Ioi + theorem bounded_ge_Ioo + theorem bounded_ge_iff_bounded_gt + theorem bounded_ge_inter_ge + theorem bounded_ge_inter_gt + theorem bounded_ge_inter_not_ge + theorem bounded_ge_of_bounded_gt + theorem bounded_gt_Icc + theorem bounded_gt_Ici + theorem bounded_gt_Ico + theorem bounded_gt_Ioc + theorem bounded_gt_Ioi + theorem bounded_gt_Ioo + theorem bounded_gt_inter_ge + theorem bounded_gt_inter_gt + theorem bounded_gt_inter_not_gt + theorem bounded_inter_not + theorem bounded_le_Icc + theorem bounded_le_Ico + theorem bounded_le_Iic + theorem bounded_le_Iio + theorem bounded_le_Ioc + theorem bounded_le_Ioo + theorem bounded_le_iff_bounded_lt + theorem bounded_le_inter_le + theorem bounded_le_inter_lt + theorem bounded_le_inter_not_le + theorem bounded_le_of_bounded_lt + theorem bounded_lt_Icc + theorem bounded_lt_Ico + theorem bounded_lt_Iic + theorem bounded_lt_Iio + theorem bounded_lt_Ioc + theorem bounded_lt_Ioo + theorem bounded_lt_inter_le + theorem bounded_lt_inter_lt + theorem bounded_lt_inter_not_lt + theorem bounded_self + theorem unbounded.mono + theorem unbounded.rel_mono + theorem unbounded_ge_iff + theorem unbounded_ge_iff_unbounded_gt + theorem unbounded_ge_iff_unbounded_inter_ge + theorem unbounded_ge_inter_gt + theorem unbounded_ge_inter_not_ge + theorem unbounded_ge_of_forall_exists_gt + theorem unbounded_gt_iff + theorem unbounded_gt_inter_gt + theorem unbounded_gt_inter_not_gt + theorem unbounded_gt_of_forall_exists_ge + theorem unbounded_gt_of_unbounded_ge + theorem unbounded_inter_ge + theorem unbounded_inter_not + theorem unbounded_le_Ici + theorem unbounded_le_Ioi + theorem unbounded_le_iff + theorem unbounded_le_inter_le + theorem unbounded_le_inter_lt + theorem unbounded_le_inter_not_le + theorem unbounded_le_of_forall_exists_lt + theorem unbounded_lt_Ici + theorem unbounded_lt_Ioi + theorem unbounded_lt_iff + theorem unbounded_lt_iff_unbounded_le + theorem unbounded_lt_inter_le + theorem unbounded_lt_inter_lt + theorem unbounded_lt_inter_not_lt + theorem unbounded_lt_of_forall_exists_le + theorem unbounded_lt_of_unbounded_le Modified src/order/lattice.lean + theorem inf_lt_of_left_lt + theorem inf_lt_of_right_lt + theorem lt_sup_of_lt_left + theorem lt_sup_of_lt_right Modified src/order/rel_classes.lean +/- def bounded 2022-01-21 04:46:35 884d813 chore(analysis/inner_product_space/dual): remove unneeded `complete_space` assumption in four lemmas (#11578) We remove the `[complete_space E]` assumption in four lemmas. ESTIMATED CHANGES Modified src/analysis/inner_product_space/dual.lean 2022-01-21 03:07:37 80e072e feat(data/finset/basic): random golf (#11576) ESTIMATED CHANGES Modified src/data/finset/basic.lean 2022-01-21 00:16:10 d71cab9 feat(analysis/seminorm): add composition with linear maps (#11477) This PR defines the composition of seminorms with linear maps and shows that composition is monotone and calculates the seminorm ball of the composition. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.add_comp + theorem seminorm.ball_comp + theorem seminorm.coe_comp + def seminorm.comp + theorem seminorm.comp_apply + theorem seminorm.comp_comp + theorem seminorm.comp_id + theorem seminorm.comp_mono + theorem seminorm.comp_smul + theorem seminorm.comp_smul_apply + theorem seminorm.comp_triangle + theorem seminorm.comp_zero + theorem seminorm.smul_comp + theorem seminorm.zero_apply + theorem seminorm.zero_comp 2022-01-20 22:45:37 6c97821 feat(group_theory/submonoid/pointwise): add pointwise multiplication to `add_submonoid`s (#11522) ESTIMATED CHANGES Modified src/group_theory/submonoid/pointwise.lean + theorem add_submonoid.bot_mul + theorem add_submonoid.closure_mul_closure + theorem add_submonoid.mul_bot + theorem add_submonoid.mul_le + theorem add_submonoid.mul_le_mul + theorem add_submonoid.mul_le_mul_left + theorem add_submonoid.mul_le_mul_right + theorem add_submonoid.mul_mem_mul + theorem add_submonoid.mul_subset_mul 2022-01-20 19:35:50 adadd4a feat(measure_theory/function/lp_space): some variations of Markov's inequality formulated using `snorm` (#11478) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.Lp.meas_ge_le_mul_pow_norm + theorem measure_theory.Lp.mul_meas_ge_le_pow_norm' + theorem measure_theory.Lp.mul_meas_ge_le_pow_norm + theorem measure_theory.Lp.pow_mul_meas_ge_le_norm + theorem measure_theory.meas_ge_le_mul_pow_snorm + theorem measure_theory.mul_meas_ge_le_pow_snorm' + theorem measure_theory.mul_meas_ge_le_pow_snorm + theorem measure_theory.pow_mul_meas_ge_le_snorm 2022-01-20 18:13:27 8c9074f chore(*): Remove tactic.unfreeze_local_instances (#11507) ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/semisimple.lean Modified src/algebra/lie/solvable.lean Modified src/algebraic_geometry/properties.lean Modified src/analysis/normed_space/lp_space.lean Modified src/combinatorics/hall/finite.lean Modified src/data/real/ennreal.lean Modified src/group_theory/solvable.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/local_properties.lean Modified src/topology/category/Top/limits.lean 2022-01-20 17:46:05 dfca2b0 feat(data/sym/sym2): add lemma that eq from distinct common members (#11563) Two terms of type `sym2 a` are equal if one can find two distinct elements of type `a` that are members of both. ESTIMATED CHANGES Modified src/data/sym/sym2.lean + theorem sym2.eq_of_ne_mem 2022-01-20 16:52:21 b87449a feat(group_theory/nilpotent): Add equality theorems for nilpotency class (#11540) the nilpotency class can be defined as the length of the upper central series, the lower central series, or as the shortest length across all ascending or descending series. In order to use the equivalence proofs between the various definition of nilpotency in these lemmas, I had to reorder them to put the `∃n` in front. ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem is_ascending_rev_series_of_is_descending + theorem is_decending_rev_series_of_is_ascending + theorem least_ascending_central_series_length_eq_nilpotency_class + theorem least_descending_central_series_length_eq_nilpotency_class + theorem lower_central_series_length_eq_nilpotency_class 2022-01-20 16:01:23 b5e542d feat(measure_theory/measurable_space): defining a measurable function on countably many pieces (#11532) Also, remove `open_locale classical` in this file and add decidability assumptions where needed. And add a few isolated useful lemmas. ESTIMATED CHANGES Modified src/measure_theory/group/basic.lean Modified src/measure_theory/measurable_space.lean + theorem exists_measurable_piecewise_nat + theorem measurable.find + def measurable_equiv.pi_measurable_equiv_tprod +/- theorem measurable_find +/- theorem measurable_find_greatest' +/- theorem measurable_find_greatest +/- theorem measurable_from_prod_encodable +/- theorem measurable_set_pi_of_nonempty +/- theorem measurable_tprod_elim' +/- theorem measurable_tprod_elim +/- theorem measurable_update Modified src/measure_theory/measure/haar.lean 2022-01-20 15:29:30 1d762c7 feat(ring_theory/{norm.lean, trace.lean}): improve two statements. (#11569) These statement are more precise. From flt-regular. ESTIMATED CHANGES Modified src/ring_theory/norm.lean Modified src/ring_theory/trace.lean 2022-01-20 11:33:03 447928c feat(topology/uniform_space/uniform_convergence): Composition on the left (#11560) Composing on the left by a uniformly continuous function preserves uniform convergence. ESTIMATED CHANGES Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_uniformly.comp' + theorem tendsto_uniformly_on.comp' 2022-01-20 10:32:33 5a40c33 feat(analysis/inner_product_space/l2): a Hilbert space is isometrically isomorphic to `ℓ²` (#11255) Define `orthogonal_family.linear_isometry_equiv`: the isometric isomorphism of a Hilbert space `E` with a Hilbert sum of a family of Hilbert spaces `G i`, induced by individual isometries of each `G i` into `E` whose images are orthogonal and span a dense subset of `E`. Define a Hilbert basis of `E` to be an isometric isomorphism of `E` with `ℓ²(ι, 𝕜)`, the Hilbert sum of `ι` copies of `𝕜`. Prove that an orthonormal family of vectors in `E` whose span is dense in `E` has an associated Hilbert basis. Prove that every Hilbert space admit a Hilbert basis. Delete three lemmas `maximal_orthonormal_iff_dense_span`, `exists_subset_is_orthonormal_dense_span`, `exists_is_orthonormal_dense_span` which previously expressed this existence theorem in a more awkward way (before the definition `ℓ²(ι, 𝕜)` was available). ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/inner_product_space/l2_space.lean + theorem exists_hilbert_basis + structure hilbert_basis + theorem lp.inner_single_left + theorem lp.inner_single_right + theorem orthonormal.exists_hilbert_basis_extension Modified src/analysis/inner_product_space/projection.lean - theorem exists_is_orthonormal_dense_span - theorem exists_subset_is_orthonormal_dense_span - theorem maximal_orthonormal_iff_dense_span Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.coe_of_surjective 2022-01-20 08:57:41 53650a0 feat(*): lemmas about `disjoint` on `set`s and `filter`s (#11549) ESTIMATED CHANGES Modified src/data/set/function.lean Modified src/data/set/lattice.lean + theorem disjoint.ne_of_mem + theorem set.disjoint_iff_forall_ne Modified src/order/filter/basic.lean + theorem filter.disjoint_comap + theorem filter.disjoint_map Modified src/topology/basic.lean + theorem disjoint.closure_left + theorem disjoint.closure_right 2022-01-20 07:43:43 e96e55d feat(analysis/normed_space/finite_dimension): extending partially defined Lipschitz functions (#11530) Any Lipschitz function on a subset of a metric space, into a finite-dimensional real vector space, can be extended to a globally defined Lipschitz function (up to worsening slightly the Lipschitz constant). ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + theorem linear_equiv.coe_to_continuous_linear_equiv' + theorem linear_equiv.coe_to_continuous_linear_equiv + theorem linear_equiv.coe_to_continuous_linear_equiv_symm' + theorem linear_equiv.coe_to_continuous_linear_equiv_symm +/- def linear_equiv.to_continuous_linear_equiv + theorem linear_equiv.to_linear_equiv_to_continuous_linear_equiv + theorem linear_equiv.to_linear_equiv_to_continuous_linear_equiv_symm + def lipschitz_extension_constant + theorem lipschitz_extension_constant_pos + theorem lipschitz_on_with.extend_finite_dimension Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/topology/metric_space/lipschitz.lean +/- theorem continuous_at_of_locally_lipschitz + theorem lipschitz_on_with.extend_pi + theorem lipschitz_on_with.extend_real + theorem lipschitz_with.comp_lipschitz_on_with 2022-01-20 02:36:41 0a8848a chore(topology/uniform_space/uniform_convergence): Golf some proofs (#11561) This PR golfs a couple proofs. ESTIMATED CHANGES Modified src/topology/uniform_space/uniform_convergence.lean 2022-01-20 00:11:03 656372c doc(group_theory/free_group): fix linkify (#11565) ESTIMATED CHANGES Modified src/group_theory/free_group.lean 2022-01-19 22:49:35 0bb4272 chore(*): to_additive related cleanup (#11559) A few to_additive related cleanups * Move measurability before to_additive to avoid having to manually do it later (or forget). * Ensure anything tagged to_additive, mono has the additive version also mono'd * Move simp before to_additive ESTIMATED CHANGES Modified src/algebra/order/lattice_group.lean Modified src/algebra/pointwise.lean Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/measurable_space.lean +/- theorem measurable_set_mul_support 2022-01-19 19:16:21 7ee41aa feat(data/finsupp/basic): lemmas about map domain with only inj_on hypotheses (#11484) Also a lemma `sum_update_add` expressing the sum of an update in a monoid in terms of the original sum and the value of the update. And golf `map_domain_smul`. From flt-regular. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.map_domain_apply' + theorem finsupp.map_domain_inj_on + theorem finsupp.map_domain_support_of_inj_on + theorem finsupp.sum_update_add 2022-01-19 17:41:05 bbd0f76 chore(*): clean up comment strings in docstrings (#11557) The syntax for these was wrong and showed up in doc-gen output unintentionally e.g. https://leanprover-community.github.io/mathlib_docs/algebra/group/opposite.html#add_monoid_hom.op ESTIMATED CHANGES Modified src/algebra/category/Mon/filtered_colimits.lean Modified src/algebra/group/opposite.lean Modified src/algebra/opposites.lean Modified src/group_theory/order_of_element.lean Modified src/measure_theory/group/fundamental_domain.lean Modified src/topology/algebra/monoid.lean 2022-01-19 16:05:57 a90f969 feat(data/finset/slice): More `finset.slice` and antichain lemmas (#11397) Also move `finset.coe_bUnion` to a more sensible location. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.coe_bUnion Modified src/data/finset/slice.lean + theorem finset.bUnion_slice +/- theorem finset.pairwise_disjoint_slice + theorem finset.sum_card_slice + theorem set.sized.empty_mem_iff + theorem set.sized.subsingleton' + theorem set.sized.univ_mem_iff + theorem set.sized_Union + theorem set.sized_Union₂ + theorem set.sized_powerset_len Modified src/data/set/basic.lean + theorem set.subsingleton_of_forall_eq Modified src/data/set/finite.lean - theorem finset.coe_bUnion Modified src/order/antichain.lean + theorem is_antichain.bot_mem_iff + theorem is_antichain.greatest_iff + theorem is_antichain.least_iff + theorem is_antichain.top_mem_iff + theorem is_antichain_and_greatest_iff + theorem is_antichain_and_least_iff + theorem is_antichain_singleton + theorem is_greatest.antichain_iff + theorem is_least.antichain_iff +/- theorem set.subsingleton.is_antichain Modified src/order/bounds.lean + theorem bot_mem_lower_bounds + theorem is_greatest_top_iff + theorem is_least_bot_iff + theorem top_mem_upper_bounds 2022-01-19 15:39:30 c72e709 feat(data/sum/interval): The disjoint sum of two locally finite orders is locally finite (#11351) This proves `locally_finite_order (α ⊕ β)` where `α` and `β` are locally finite themselves. ESTIMATED CHANGES Added src/data/sum/interval.lean + theorem finset.inl_mem_sum_lift₂ + theorem finset.inr_mem_sum_lift₂ + theorem finset.mem_sum_lift₂ + def finset.sum_lift₂ + theorem finset.sum_lift₂_eq_empty + theorem finset.sum_lift₂_mono + theorem finset.sum_lift₂_nonempty + theorem sum.Icc_inl_inl + theorem sum.Icc_inl_inr + theorem sum.Icc_inr_inl + theorem sum.Icc_inr_inr + theorem sum.Ico_inl_inl + theorem sum.Ico_inl_inr + theorem sum.Ico_inr_inl + theorem sum.Ico_inr_inr + theorem sum.Ioc_inl_inl + theorem sum.Ioc_inl_inr + theorem sum.Ioc_inr_inl + theorem sum.Ioc_inr_inr + theorem sum.Ioo_inl_inl + theorem sum.Ioo_inl_inr + theorem sum.Ioo_inr_inl + theorem sum.Ioo_inr_inr 2022-01-19 13:06:48 dbf59ba feat(algebra/roots_of_unity): basic constructor (#11504) from flt-regular ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem roots_of_unity.coe_mk_of_pow_eq + def roots_of_unity.mk_of_pow_eq 2022-01-19 11:58:04 7ddaf10 chore(algebra/algebra): algebra_map_int_eq (#11474) from flt-regular ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra_map_int_eq Modified src/data/polynomial/algebra_map.lean - theorem polynomial.eval₂_algebra_map_int_X + theorem polynomial.eval₂_int_cast_ring_hom_X - theorem polynomial.ring_hom_eval₂_algebra_map_int + theorem polynomial.ring_hom_eval₂_cast_int_ring_hom 2022-01-19 10:24:24 4ad74ae chore(algebra/order/sub): Generalize to `preorder` and `add_comm_semigroup` (#11463) This generalizes a bunch of lemmas from `partial_order` to `preorder` and from `add_comm_monoid` to `add_comm_semigroup`. It also adds `tsub_tsub_le_tsub_add : a - (b - c) ≤ a - b + c`. ESTIMATED CHANGES Modified src/algebra/order/sub.lean +/- theorem le_add_tsub' +/- theorem le_add_tsub_swap + theorem tsub_tsub_le_tsub_add 2022-01-19 06:53:49 1cfb97d feat(analysis/normed/group/pointwise): the closed thickening of a compact set is the addition of a closed ball. (#11528) ESTIMATED CHANGES Modified src/analysis/normed/group/pointwise.lean + theorem is_compact.cthickening_eq_add_closed_ball Modified src/topology/metric_space/hausdorff_distance.lean + theorem is_compact.cthickening_eq_bUnion_closed_ball + theorem metric.closed_ball_subset_cthickening + theorem metric.closed_ball_subset_cthickening_singleton + theorem metric.cthickening_singleton + theorem metric.thickening_singleton 2022-01-19 06:53:48 ff9b757 feat(category_theory/bicategory/locally_discrete): define locally discrete bicategory (#11402) This PR defines the locally discrete bicategory on a category. ESTIMATED CHANGES Added src/category_theory/bicategory/locally_discrete.lean + def category_theory.functor.to_oplax_functor + def category_theory.locally_discrete Modified src/category_theory/bicategory/strict.lean + theorem category_theory.bicategory.eq_to_hom_whisker_right + theorem category_theory.bicategory.whisker_left_eq_to_hom 2022-01-18 21:06:28 6dd6525 feat(measure_theory/measure/measure_space): better definition of to_measurable (#11529) Currently, `to_measurable μ t` picks a measurable superset of `t` with the same measure. When the measure of `t` is infinite, it is most often useless. This PR adjusts the definition so that, in the case of sigma-finite spaces, `to_measurable μ t` has good properties even when `t` has infinite measure. ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.is_locally_finite_measure_of_is_finite_measure_on_compacts + theorem measure_theory.measure.exists_subset_measure_lt_top + theorem measure_theory.measure.measure_to_measurable_inter_of_sigma_finite + theorem measure_theory.nonempty_inter_of_measure_lt_add' + theorem measure_theory.nonempty_inter_of_measure_lt_add Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.ae_eq_set_inter + theorem measure_theory.ae_le_set_inter +/- def measure_theory.to_measurable 2022-01-18 20:38:47 de53f9c feat(data/nat/factorization): add two convenience lemmas (#11543) Adds convenience lemmas `prime_of_mem_factorization` and `pos_of_mem_factorization`. Also adds a different proof of `factorization_prod_pow_eq_self` that doesn't depend on `multiplicative_factorization` and so can appear earlier in the file. ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.pos_of_mem_factorization + theorem nat.prime_of_mem_factorization 2022-01-18 17:08:36 5a1cbe3 feat(linear_algebra,algebra,group_theory): miscellaneous lemmas linking some additive monoid and module operations (#11525) This adds: * `submodule.map_to_add_submonoid` * `submodule.sup_to_add_submonoid` * `submodule.supr_to_add_submonoid` As well as some missing `add_submonoid` lemmas copied from the `submodule` API: * `add_submonoid.closure_singleton_le_iff_mem` * `add_submonoid.mem_supr` * `add_submonoid.supr_eq_closure` Finally, it generalizes some indices in `supr` and `infi` lemmas from `Type*` to `Sort*`. This is pre-work for removing a redundant hypothesis from `submodule.mul_induction_on`. ESTIMATED CHANGES Modified src/algebra/algebra/bilinear.lean + theorem algebra.lmul_left_to_add_monoid_hom + theorem algebra.lmul_right_to_add_monoid_hom Modified src/group_theory/submonoid/basic.lean + theorem submonoid.closure_singleton_le_iff_mem + theorem submonoid.mem_supr + theorem submonoid.supr_eq_closure Modified src/linear_algebra/basic.lean +/- theorem linear_map.infi_invariant +/- theorem submodule.comap_infi_map_of_injective +/- theorem submodule.comap_supr_map_of_injective +/- theorem submodule.map_infi_comap_of_surjective +/- theorem submodule.map_supr_comap_of_sujective + theorem submodule.map_to_add_submonoid + theorem submodule.sup_to_add_subgroup + theorem submodule.sup_to_add_submonoid + theorem submodule.supr_to_add_submonoid 2022-01-18 16:08:17 a0ff65d feat(ring_theory/norm): add is_integral_norm (#11489) We add `is_integral_norm`. From flt-regular ESTIMATED CHANGES Modified src/ring_theory/norm.lean + theorem algebra.is_integral_norm + theorem algebra.norm_eq_prod_roots +/- theorem algebra.prod_embeddings_eq_finrank_pow + theorem intermediate_field.adjoin_simple.norm_gen_eq_one + theorem intermediate_field.adjoin_simple.norm_gen_eq_prod_roots 2022-01-18 15:13:28 6f23973 feat(ring_theory/graded_algebra/basic): add a helper for construction from an alg hom (#11541) Most graded algebras are already equipped with some kind of universal property which gives an easy way to build such an `alg_hom`. This lemma makes it easier to discharge the associated proof obligations to show that this alg hom forms a decomposition. This also relaxes a `ring` argument to `semiring`. ESTIMATED CHANGES Modified src/ring_theory/graded_algebra/basic.lean + def graded_algebra.of_alg_hom 2022-01-18 12:22:37 496a744 feat(measure_theory): generalize `null_of_locally_null` to `outer_measure`, add versions (#11535) * generalize `null_of_locally_null`; * don't intersect with `s` twice; * add a contraposed version; * golf. ESTIMATED CHANGES Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.exists_mem_forall_mem_nhds_within_pos_measure + theorem measure_theory.exists_ne_forall_mem_nhds_pos_measure_preimage +/- theorem measure_theory.null_of_locally_null Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.outer_measure.exists_mem_forall_mem_nhds_within_pos + theorem measure_theory.outer_measure.null_of_locally_null Modified src/topology/metric_space/basic.lean + theorem metric.diam_le_of_subset_closed_ball 2022-01-18 12:22:35 be9a5de feat(topology/separation): add `t1_space_tfae` (#11534) Also add some lemmas about `filter.disjoint`. ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.disjoint_principal_left + theorem filter.disjoint_principal_principal + theorem filter.disjoint_principal_right + theorem filter.disjoint_pure_pure + theorem filter.has_basis.disjoint_basis_iff - theorem filter.inf_eq_bot_iff - theorem filter.le_iff_forall_disjoint_principal_compl - theorem filter.mem_iff_disjoint_principal_compl Modified src/order/filter/basic.lean + theorem filter.inf_eq_bot_iff Modified src/topology/algebra/ordered/basic.lean Modified src/topology/separation.lean + theorem disjoint_nhds_pure + theorem disjoint_pure_nhds - theorem finite.is_closed - theorem t1_iff_exists_open - theorem t1_space_antimono + theorem t1_space_antitone + theorem t1_space_iff_disjoint_nhds_pure + theorem t1_space_iff_disjoint_pure_nhds + theorem t1_space_iff_exists_open + theorem t1_space_tfae 2022-01-18 12:22:34 135a92d feat(data/set): two simple lemmas (#11531) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem disjoint.image + theorem set.inj_on.image_inter Modified src/data/set/pairwise.lean + theorem pairwise_disjoint.mono Modified src/measure_theory/measure/haar_lebesgue.lean 2022-01-18 12:22:32 5bbc187 feat(algebra/lie/nilpotent): a non-trivial nilpotent Lie module has non-trivial maximal trivial submodule (#11515) The main result is `lie_module.nontrivial_max_triv_of_is_nilpotent` ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean + theorem lie_module.le_max_triv_iff_bracket_eq_bot Modified src/algebra/lie/ideal_operations.lean + theorem lie_submodule.lie_eq_bot_iff Modified src/algebra/lie/nilpotent.lean + theorem lie_module.antitone_lower_central_series + theorem lie_module.lower_central_series_last_le_max_triv + theorem lie_module.nilpotency_length_eq_succ_iff + theorem lie_module.nilpotency_length_eq_zero_iff + theorem lie_module.nontrivial_lower_central_series_last + theorem lie_module.nontrivial_max_triv_of_is_nilpotent Modified src/algebra/lie/submodule.lean + theorem lie_submodule.lie_span_eq_bot_iff + theorem lie_submodule.nontrivial_iff_ne_bot Modified src/data/set/basic.lean + theorem set.nontrivial_mono 2022-01-18 10:53:40 a0da4f1 feat(algebra/big_operators/basic): Reindexing a product with a permutation (#11344) This proves `(∏ x in s, f (σ x)) = ∏ x in s, f x` for a permutation `σ`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem equiv.perm.prod_comp' + theorem equiv.perm.prod_comp Modified src/data/finset/basic.lean + theorem finset.map_perm Modified src/data/finset/card.lean + theorem finset.map_eq_of_subset Modified src/linear_algebra/matrix/determinant.lean Modified src/number_theory/sum_four_squares.lean 2022-01-18 09:14:43 8d5caba chore(order/bounded_order): golf (#11538) ESTIMATED CHANGES Modified src/order/bounded_order.lean +/- theorem bot_lt_iff_ne_bot +/- theorem bot_unique +/- theorem eq_bot_iff +/- theorem eq_bot_mono +/- theorem eq_bot_of_minimal +/- theorem eq_bot_or_bot_lt +/- theorem eq_top_iff +/- theorem eq_top_mono +/- theorem eq_top_or_lt_top +/- theorem le_bot_iff +/- theorem ne_bot_of_gt +/- theorem ne_bot_of_le_ne_bot +/- theorem ne_top_of_le_ne_top +/- theorem ne_top_of_lt +/- theorem top_le_iff +/- theorem top_unique 2022-01-18 09:14:41 a217b9c feat(measure_theory): drop some `measurable_set` assumptions (#11536) * make `exists_subordinate_pairwise_disjoint` work for `null_measurable_set`s; * use `ae_disjoint` in `measure_Union₀`, drop `measure_Union_of_null_inter`; * prove `measure_inter_add_diff` for `null_measurable_set`s; * drop some `measurable_set` assumptions in `measure_union`, `measure_diff`, etc; * golf. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/radon_nikodym.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/group/fundamental_domain.lean Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.weighted_smul_union' Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/set_integral.lean +/- theorem measure_theory.integral_diff +/- theorem measure_theory.integral_union +/- theorem measure_theory.integral_union_ae Modified src/measure_theory/measure/ae_disjoint.lean + theorem measure_theory.ae_disjoint.diff_ae_eq_left + theorem measure_theory.ae_disjoint.diff_ae_eq_right + theorem measure_theory.ae_disjoint.measure_diff_left + theorem measure_theory.ae_disjoint.measure_diff_right Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/measure_space.lean - theorem measure_theory.exists_subordinate_pairwise_disjoint + theorem measure_theory.measure.restrict_union' +/- theorem measure_theory.measure.restrict_union + theorem measure_theory.measure.restrict_union_add_inter' + theorem measure_theory.measure.restrict_union_add_inter₀ - theorem measure_theory.measure.restrict_union_apply + theorem measure_theory.measure.restrict_union₀ - theorem measure_theory.measure_Union_of_null_inter +/- theorem measure_theory.measure_diff + theorem measure_theory.measure_diff_add_inter +/- theorem measure_theory.measure_diff_le_iff_le_add +/- theorem measure_theory.measure_diff_lt_of_lt_add +/- theorem measure_theory.measure_eq_measure_of_null_diff + theorem measure_theory.measure_union' +/- theorem measure_theory.measure_union Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.diff_null_ae_eq_self Modified src/measure_theory/measure/null_measurable.lean + theorem measure_theory.exists_subordinate_pairwise_disjoint + theorem measure_theory.measure_inter_add_diff₀ + theorem measure_theory.measure_union_add_inter₀' + theorem measure_theory.measure_union_add_inter₀ + theorem measure_theory.measure_union₀' +/- theorem measure_theory.measure_union₀ + theorem measure_theory.measure_union₀_aux Modified src/measure_theory/measure/regular.lean +/- theorem measurable_set.exists_is_closed_lt_add +/- theorem measurable_set.exists_is_compact_lt_add +/- theorem measurable_set.exists_is_open_diff_lt +/- theorem measurable_set.exists_lt_is_compact_of_ne_top +/- theorem measurable_set.measure_eq_supr_is_closed_of_ne_top +/- theorem measurable_set.measure_eq_supr_is_compact_of_ne_top +/- theorem measure_theory.measure.inner_regular.measurable_set_of_open +/- theorem measure_theory.measure.regular.inner_regular_measurable +/- theorem measure_theory.measure.weakly_regular.inner_regular_measurable Modified src/measure_theory/measure/stieltjes.lean 2022-01-18 09:14:39 f23c00f chore(algebra/order/ring): move lemmas about invertible into a new file (#11511) The motivation here is to eventually be able to use the `one_pow` lemma in `algebra.group.units`. This is one very small step in that direction. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Added src/algebra/order/invertible.lean + theorem inv_of_le_one + theorem inv_of_lt_zero + theorem inv_of_nonneg + theorem inv_of_nonpos + theorem inv_of_pos Modified src/algebra/order/ring.lean - theorem inv_of_le_one - theorem inv_of_lt_zero - theorem inv_of_nonneg - theorem inv_of_nonpos - theorem inv_of_pos Modified src/analysis/convex/basic.lean Modified src/linear_algebra/affine_space/ordered.lean 2022-01-18 07:45:51 01fa7f5 feat(data/fintype/basic): `one_lt_card_iff` and `two_lt_card_iff` (#11524) This PR adds `one_lt_card_iff` and `two_lt_card_iff`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.one_lt_card_iff + theorem fintype.two_lt_card_iff 2022-01-18 07:09:41 e895c8f chore(cone_category): generalize universes (#11539) ESTIMATED CHANGES Modified src/category_theory/limits/cone_category.lean +/- def category_theory.limits.is_colimit.of_preserves_cocone_initial +/- def category_theory.limits.is_colimit.of_reflects_cocone_initial +/- def category_theory.limits.is_limit.of_preserves_cone_terminal +/- def category_theory.limits.is_limit.of_reflects_cone_terminal 2022-01-18 03:54:41 813a191 chore(logic/basic): Make higher `forall_congr`/`exists_congr` lemmas dependent (#11490) Currently, `forall₂_congr` and friends take as arguments non dependent propositions like `p q : α → β → Prop`. This prevents them being useful virtually anywhere as most often foralls are nested like `∀ a, a ∈ s → ...` and `a ∈ s` depends on `a`. This PR turns them into `Π a, β a → Prop` (and similar for higher arities). As a bonus, it adds the `5`-ary version and golfs all occurrences of nested `forall_congr`s. ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/box_integral/basic.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/star.lean Modified src/analysis/normed/group/quotient.lean Modified src/category_theory/sites/sheaf.lean Modified src/combinatorics/additive/salem_spencer.lean Modified src/data/multiset/basic.lean Modified src/data/set/function.lean Modified src/data/set/prod.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/logic/basic.lean +/- theorem exists₂_congr +/- theorem exists₃_congr +/- theorem exists₄_congr + theorem exists₅_congr +/- theorem forall₂_congr +/- theorem forall₃_congr +/- theorem forall₄_congr + theorem forall₅_congr Modified src/measure_theory/group/basic.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/order/complete_lattice.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/filter/lift.lean Modified src/order/sup_indep.lean Modified src/ring_theory/local_properties.lean Modified src/topology/algebra/mul_action.lean +/- theorem continuous_on_const_smul_iff Modified src/topology/algebra/uniform_group.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/basic.lean Modified src/topology/separation.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/compact_convergence.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_convergence.lean 2022-01-18 00:10:59 99e9036 chore(algebra/algebra/subalgebra): lemmas about top and injectivity (#11514) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem algebra.to_submodule_eq_top + theorem algebra.to_subring_eq_top + theorem algebra.to_subsemiring_eq_top + theorem algebra.top_to_subring + theorem subalgebra.to_subring_inj + theorem subalgebra.to_subring_injective + theorem subalgebra.to_subsemiring_inj + theorem subalgebra.to_subsemiring_injective 2022-01-17 23:42:43 1e4da8d refactor(linear_algebra/{tensor,exterior}_algebra): convert to a directory (#11513) These files can be quite slow, so it's useful to be able to add new definitions and lemmas in standalone files, rather than in the same file. There are a number of open PRs of mine that make this move as part of a new feature, so let's just move them pre-emptively. ESTIMATED CHANGES Modified src/algebra/lie/universal_enveloping.lean Modified src/linear_algebra/clifford_algebra/basic.lean Renamed src/linear_algebra/exterior_algebra.lean to src/linear_algebra/exterior_algebra/basic.lean Renamed src/linear_algebra/tensor_algebra.lean to src/linear_algebra/tensor_algebra/basic.lean Modified test/free_algebra.lean 2022-01-17 22:39:19 5b36c86 feat(analysis/normed_space/finite_dimension): the determinant is continuous on the space of continuous linear maps (#11526) ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + theorem continuous_linear_map.continuous_det Modified src/linear_algebra/determinant.lean + theorem linear_equiv.coe_of_is_unit_det Modified src/topology/algebra/module/basic.lean 2022-01-17 22:11:44 4072512 feat(src/group_theory/nilpotent): solvable_of_nilpotent (#11512) following the proof on ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem derived_le_lower_central 2022-01-17 21:04:13 274b530 feat(data/equiv/basic): add `add_equiv.to_int_linear_equiv` (#11456) as written by @adamtopaz on [zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/injections.20to.20equiv/near/268038978) ESTIMATED CHANGES Modified src/data/equiv/module.lean + theorem add_equiv.coe_to_int_linear_equiv + theorem add_equiv.coe_to_linear_equiv + theorem add_equiv.coe_to_linear_equiv_symm + theorem add_equiv.coe_to_nat_linear_equiv + def add_equiv.to_int_linear_equiv + theorem add_equiv.to_int_linear_equiv_refl + theorem add_equiv.to_int_linear_equiv_symm + theorem add_equiv.to_int_linear_equiv_to_add_equiv + theorem add_equiv.to_int_linear_equiv_trans + def add_equiv.to_linear_equiv + def add_equiv.to_nat_linear_equiv + theorem add_equiv.to_nat_linear_equiv_refl + theorem add_equiv.to_nat_linear_equiv_symm + theorem add_equiv.to_nat_linear_equiv_to_add_equiv + theorem add_equiv.to_nat_linear_equiv_trans + theorem linear_equiv.to_add_equiv_to_int_linear_equiv + theorem linear_equiv.to_add_equiv_to_nat_linear_equiv Modified src/linear_algebra/basic.lean - theorem add_equiv.coe_to_linear_equiv - theorem add_equiv.coe_to_linear_equiv_symm - def add_equiv.to_linear_equiv 2022-01-17 19:54:14 1fbef63 feat(order/filter): add two lemmas (#11519) Two easy lemmas (from the sphere eversion project) and some minor style changes. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.eventually_ne_at_top Modified src/order/filter/basic.lean + theorem filter.diff_mem +/- theorem filter.inter_mem +/- theorem filter.inter_mem_iff +/- theorem filter.mem_of_superset 2022-01-17 19:54:13 e096b99 refactor(set_theory/ordinal_arithmetic): Rename `power` to `opow` (#11279) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.add_lt_omega_opow - theorem ordinal.add_lt_omega_power + theorem ordinal.add_omega_opow - theorem ordinal.add_omega_power + theorem ordinal.le_opow_self - theorem ordinal.le_power_self + theorem ordinal.log_opow + theorem ordinal.log_opow_mul_add - theorem ordinal.log_power - theorem ordinal.log_power_mul_add + theorem ordinal.lt_opow_of_limit + theorem ordinal.lt_opow_succ_log - theorem ordinal.lt_power_of_limit - theorem ordinal.lt_power_succ_log + theorem ordinal.mul_lt_omega_opow - theorem ordinal.mul_lt_omega_power + theorem ordinal.mul_omega_opow_opow - theorem ordinal.mul_omega_power_power + theorem ordinal.nat_cast_opow - theorem ordinal.nat_cast_power + theorem ordinal.one_opow - theorem ordinal.one_power + def ordinal.opow + theorem ordinal.opow_add + theorem ordinal.opow_dvd_opow + theorem ordinal.opow_dvd_opow_iff + theorem ordinal.opow_is_limit + theorem ordinal.opow_is_limit_left + theorem ordinal.opow_is_normal + theorem ordinal.opow_le_of_limit + theorem ordinal.opow_le_opow_iff_right + theorem ordinal.opow_le_opow_left + theorem ordinal.opow_le_opow_right + theorem ordinal.opow_limit + theorem ordinal.opow_log_le + theorem ordinal.opow_lt_omega + theorem ordinal.opow_lt_opow_iff_right + theorem ordinal.opow_lt_opow_left_of_succ + theorem ordinal.opow_mul + theorem ordinal.opow_mul_add_lt_opow_mul_succ + theorem ordinal.opow_mul_add_lt_opow_succ + theorem ordinal.opow_mul_add_pos + theorem ordinal.opow_ne_zero + theorem ordinal.opow_omega + theorem ordinal.opow_one + theorem ordinal.opow_pos + theorem ordinal.opow_right_inj + theorem ordinal.opow_succ + theorem ordinal.opow_zero - def ordinal.power - theorem ordinal.power_add - theorem ordinal.power_dvd_power - theorem ordinal.power_dvd_power_iff - theorem ordinal.power_is_limit - theorem ordinal.power_is_limit_left - theorem ordinal.power_is_normal - theorem ordinal.power_le_of_limit - theorem ordinal.power_le_power_iff_right - theorem ordinal.power_le_power_left - theorem ordinal.power_le_power_right - theorem ordinal.power_limit - theorem ordinal.power_log_le - theorem ordinal.power_lt_omega - theorem ordinal.power_lt_power_iff_right - theorem ordinal.power_lt_power_left_of_succ - theorem ordinal.power_mul - theorem ordinal.power_mul_add_lt_power_mul_succ - theorem ordinal.power_mul_add_lt_power_succ - theorem ordinal.power_mul_add_pos - theorem ordinal.power_ne_zero - theorem ordinal.power_omega - theorem ordinal.power_one - theorem ordinal.power_pos - theorem ordinal.power_right_inj - theorem ordinal.power_succ - theorem ordinal.power_zero + theorem ordinal.zero_opow' + theorem ordinal.zero_opow - theorem ordinal.zero_power' - theorem ordinal.zero_power Modified src/set_theory/ordinal_notation.lean + def nonote.opow - def nonote.power + theorem nonote.repr_opow - theorem nonote.repr_power + theorem onote.NF.of_dvd_omega_opow - theorem onote.NF.of_dvd_omega_power + def onote.opow + def onote.opow_aux + theorem onote.opow_def - def onote.power - def onote.power_aux - theorem onote.power_def + theorem onote.repr_opow + theorem onote.repr_opow_aux₁ + theorem onote.repr_opow_aux₂ - theorem onote.repr_power - theorem onote.repr_power_aux₁ - theorem onote.repr_power_aux₂ + theorem onote.scale_opow_aux - theorem onote.scale_power_aux 2022-01-17 19:08:49 2a8a01b chore(measure_theory/integral/bochner): use set_to_fun lemmas to prove integral properties (#10717) ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.weighted_smul_nonneg + theorem measure_theory.weighted_smul_smul_measure 2022-01-17 15:56:24 905871f feat(analysis/normed_space/spectrum): an algebra homomorphism into the base field is bounded (#11494) We prove basic facts about `φ : A →ₐ[𝕜] 𝕜` when `A` is a Banach algebra, namely that `φ` maps elements of `A` to their spectrum, and that `φ` is bounded. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem alg_hom.apply_mem_spectrum Modified src/analysis/normed_space/spectrum.lean + theorem alg_hom.continuous + def alg_hom.to_continuous_linear_map + theorem alg_hom.to_continuous_linear_map_norm Modified src/ring_theory/ideal/operations.lean + theorem ring_hom.ker_ne_top 2022-01-17 15:10:20 4e31396 feat(measure_theory/measure): define `ae_disjoint` (#11500) I am going to migrate most `disjoint` assumptions to `ae_disjoint`. ESTIMATED CHANGES Added src/measure_theory/measure/ae_disjoint.lean + theorem disjoint.ae_disjoint + theorem measure_theory.ae_disjoint.Union_left_iff + theorem measure_theory.ae_disjoint.Union_right_iff + theorem measure_theory.ae_disjoint.exists_disjoint_diff + theorem measure_theory.ae_disjoint.mono + theorem measure_theory.ae_disjoint.mono_ae + theorem measure_theory.ae_disjoint.of_null_left + theorem measure_theory.ae_disjoint.of_null_right + theorem measure_theory.ae_disjoint.union_left + theorem measure_theory.ae_disjoint.union_left_iff + theorem measure_theory.ae_disjoint.union_right + theorem measure_theory.ae_disjoint.union_right_iff + def measure_theory.ae_disjoint + theorem measure_theory.exists_null_pairwise_disjoint_diff Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.measure_mono_null_ae 2022-01-17 14:43:23 50bdb29 feat(analysis/complex/cauchy_integral): review docs, add versions without `off_countable` (#11417) ESTIMATED CHANGES Modified src/analysis/complex/cauchy_integral.lean + theorem complex.circle_integral_sub_inv_smul_of_continuous_on_of_differentiable_on + theorem complex.circle_integral_sub_inv_smul_of_differentiable_on + theorem complex.has_fpower_series_on_ball_of_continuous_on_of_differentiable_on + theorem complex.integral_boundary_rect_eq_zero_of_continuous_on_of_differentiable_on + theorem complex.integral_boundary_rect_eq_zero_of_differentiable_on + theorem complex.integral_boundary_rect_of_continuous_on_of_has_fderiv_at_real + theorem complex.integral_boundary_rect_of_differentiable_on_real + theorem complex.integral_boundary_rect_of_has_fderiv_at_real_off_countable - theorem complex.integral_boundary_rect_of_has_fderiv_within_at_real_off_countable Modified src/analysis/complex/re_im_topology.lean + theorem is_closed.re_prod_im + theorem is_open.re_prod_im 2022-01-17 11:46:31 391bd21 doc(src/data/equiv/transfer_instances): nontrivial, not nonzero (#11508) small docs typo, it seems. ESTIMATED CHANGES Modified src/data/equiv/transfer_instance.lean 2022-01-17 10:14:51 6b475a4 feat(data/finset/basic): `finset.two_lt_card` (#11505) This PR adds lemmas `finset.two_lt_card` and `finset.two_lt_card_iff`, similar to `finset.one_lt_card` and `finset.one_lt_card_iff`. These lemmas are also similar to `finset.card_eq_three`. ESTIMATED CHANGES Modified src/data/finset/card.lean + theorem finset.two_lt_card + theorem finset.two_lt_card_iff 2022-01-17 10:14:50 079fb16 feat(analysis/special_functions/complex/arg): `arg_neg` lemmas (#11503) Add lemmas about the value of `arg (-x)`: one each for positive and negative sign of `x.im`, two `iff` lemmas saying exactly when it's equal to `arg x - π` or `arg x + π`, and a simpler lemma giving the value of `(arg (-x) : real.angle)` for any nonzero `x`. These replace the previous lemmas `arg_eq_arg_neg_add_pi_of_im_nonneg_of_re_neg` and `arg_eq_arg_neg_sub_pi_of_im_neg_of_re_neg`, which are strictly less general (they have a hypothesis `x.re < 0` that's not needed unless the imaginary part is 0). Those two lemmas are unused in current mathlib (they were used in the proof of `cos_arg` before the golfing in #10365) and it seems reasonable to me to replace them with the more general lemmas. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean - theorem complex.arg_eq_arg_neg_add_pi_of_im_nonneg_of_re_neg - theorem complex.arg_eq_arg_neg_sub_pi_of_im_neg_of_re_neg + theorem complex.arg_neg_coe_angle + theorem complex.arg_neg_eq_arg_add_pi_iff + theorem complex.arg_neg_eq_arg_add_pi_of_im_neg + theorem complex.arg_neg_eq_arg_sub_pi_iff + theorem complex.arg_neg_eq_arg_sub_pi_of_im_pos 2022-01-17 10:14:49 1c56a8d feat(order/well_founded_set): Antichains in a partial well order are finite (#11286) and when the relation is reflexive and symmetric, it's actually an equivalent condition. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite.exists_lt_map_eq_of_range_subset Modified src/order/well_founded_set.lean +/- theorem finset.partially_well_ordered_on + theorem is_antichain.finite_of_partially_well_ordered_on + theorem is_antichain.partially_well_ordered_on_iff + theorem set.finite.partially_well_ordered_on + theorem set.partially_well_ordered_on_iff_finite_antichains 2022-01-17 08:42:46 0d5bfd7 feat(*): add a few lemmas about `function.extend` (#11498) I'm going to use `function.extend` as another way to get from `[encodable ι] (s : ι → set α)` to `t : ℕ → set α` in measure theory. ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.apply_extend Modified src/order/complete_lattice.lean + theorem supr_extend_bot Modified src/order/directed.lean + theorem directed.extend_bot 2022-01-17 08:42:45 9b70cc6 feat(data/equiv/encodable): add a few lemmas (#11497) * add `simp` lemmas `encodable.encode_inj` and `encodable.decode₂_encode`; * add `encodable.decode₂_eq_some`; * avoid non-final `simp` in the proof of `encodable.Union_decode₂_disjoint_on`. ESTIMATED CHANGES Modified src/data/equiv/encodable/basic.lean + theorem encodable.decode₂_encode + theorem encodable.decode₂_eq_some + theorem encodable.encode_inj Modified src/data/equiv/encodable/lattice.lean 2022-01-17 08:42:44 ac76eb3 feat(algebra/star/unitary): lemmas about group_with_zero (#11493) ESTIMATED CHANGES Modified src/algebra/star/unitary.lean + theorem unitary.coe_div + theorem unitary.coe_inv + theorem unitary.coe_zpow + theorem unitary.mem_iff + theorem unitary.mem_iff_self_mul_star + theorem unitary.mem_iff_star_mul_self + def unitary.to_units + theorem unitary.to_units_injective 2022-01-17 08:42:43 a88ae0c refactor(data/set/lattice): Generalize `mem_bUnion_iff` and `mem_bInter_iff` to dependent families (#11485) They're now called `mem_Union₂` and `mem_Inter₂`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/algebra/module/submodule_lattice.lean Modified src/algebra/support.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/analysis/box_integral/partition/basic.lean +/- theorem box_integral.prepartition.mem_Union Modified src/analysis/box_integral/partition/split.lean Modified src/analysis/box_integral/partition/tagged.lean +/- theorem box_integral.tagged_prepartition.disj_union_boxes +/- theorem box_integral.tagged_prepartition.mem_Union Modified src/analysis/convex/cone.lean +/- theorem convex_cone.mem_Inf Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/simplicial_complex/basic.lean +/- theorem geometry.simplicial_complex.mem_space_iff Modified src/data/finset/basic.lean Modified src/data/semiquot.lean Modified src/data/set/accumulate.lean Modified src/data/set/lattice.lean + theorem set.mem_Inter₂ + theorem set.mem_Union₂ - theorem set.mem_bInter_iff - theorem set.mem_bUnion_iff' - theorem set.mem_bUnion_iff Modified src/data/set/pairwise.lean Modified src/dynamics/ergodic/conservative.lean Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.mem_Inf Modified src/group_theory/submonoid/basic.lean +/- theorem submonoid.mem_Inf Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/basic.lean +/- theorem submodule.mem_span Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/vitali.lean Modified src/model_theory/basic.lean +/- theorem first_order.language.substructure.mem_Inf Modified src/order/filter/basic.lean Modified src/order/ideal.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/subring/basic.lean +/- theorem subring.mem_Inf Modified src/ring_theory/subsemiring/basic.lean +/- theorem subsemiring.mem_Inf Modified src/topology/algebra/ordered/basic.lean Modified src/topology/compact_open.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/paracompact.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/shrinking_lemma.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean 2022-01-17 07:55:11 83eff32 feat(topology/metric_space): more lemmas about disjoint balls (#11506) * drop unused lemmas `metric.ball_disjoint` and `metric.ball_disjoint_same`; the former was a duplicate of `metric.ball_disjoint_ball`; * add `metric.closed_ball_disjoint_ball`, `metric.closed_ball_disjoint_closed_ball`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean - theorem metric.ball_disjoint - theorem metric.ball_disjoint_same + theorem metric.closed_ball_disjoint_ball + theorem metric.closed_ball_disjoint_closed_ball 2022-01-17 07:55:09 2f342b8 feat(measure_theory): generalize some lemmas to `outer_measure` (#11501) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.measure_union_eq_top_iff +/- theorem measure_theory.measure_union_lt_top_iff +/- theorem measure_theory.measure_union_null_iff Modified src/measure_theory/measure/outer_measure.lean +/- theorem measure_theory.outer_measure.Union_null + theorem measure_theory.outer_measure.Union_null_iff + theorem measure_theory.outer_measure.bUnion_null_iff + theorem measure_theory.outer_measure.mono_null + theorem measure_theory.outer_measure.sUnion_null_iff + theorem measure_theory.outer_measure.univ_eq_zero_iff 2022-01-17 07:20:57 43bbaee feat(measure_theory/measure): add lemmas, drop `measurable_set` assumptions (#11499) * `restrict_eq_self` no longer requires measurability of either set; * `restrict_apply_self` no longer requires measurability of the set; * add `restrict_apply_superset` and `restrict_restrict_of_subset` ; * add `restrict_restrict'` that assumes measurability of the other set, drop one `measurable_set` assumption in `restrict_comm`; * drop measurability assumptions in `restrict_congr_mono`. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.restrict_apply_self + theorem measure_theory.measure.restrict_apply_superset +/- theorem measure_theory.measure.restrict_comm +/- theorem measure_theory.measure.restrict_congr_mono - theorem measure_theory.measure.restrict_eq_self' +/- theorem measure_theory.measure.restrict_eq_self + theorem measure_theory.measure.restrict_restrict' + theorem measure_theory.measure.restrict_restrict_of_subset 2022-01-17 00:42:46 6d19eba feat(*): add to_sub* lemmas for `map`, `fg` (#11480) From flt-regular. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.map_to_submodule + theorem subalgebra.map_to_subsemiring Modified src/ring_theory/noetherian.lean + theorem subalgebra.fg_bot_to_submodule 2022-01-16 23:52:06 4ed7316 feat(analysis/special_functions/pow): tendsto rpow lemma for ennreals (#11475) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean +/- theorem ennreal.continuous_rpow_const + theorem filter.tendsto.ennrpow_const 2022-01-16 23:11:56 2c2338e chore(data/complex/basic): add of_real_eq_one (#11496) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.of_real_eq_one + theorem complex.of_real_ne_one 2022-01-16 23:11:54 1f6bbf9 feat(analysis/special_functions/complex/arg): `arg_conj`, `arg_inv` lemmas (#11479) Add lemmas giving the values of `arg (conj x)` and `arg x⁻¹`, both for `arg` as a real number and `arg` coerced to `real.angle` (the latter function being better behaved because it avoids case distinctions around getting a result into the interval (-π, π]). ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_conj + theorem complex.arg_conj_coe_angle + theorem complex.arg_inv + theorem complex.arg_inv_coe_angle 2022-01-16 22:44:43 f4b93c8 feat(analysis/special_functions/trigonometric/angle): more 2π = 0 lemmas (#11482) Add some more lemmas useful for manipulation of `real.angle` expressions. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.sub_coe_pi_eq_add_coe_pi + theorem real.angle.two_nsmul_coe_pi + theorem real.angle.two_zsmul_coe_pi 2022-01-16 22:07:26 ed57bdd feat(number_field): notation for 𝓞 K, an algebra & ∈ 𝓞 K iff (#11476) From flt-regular. ESTIMATED CHANGES Modified src/number_theory/number_field.lean + theorem number_field.mem_ring_of_integers +/- theorem number_field.ring_of_integers.is_integral_coe 2022-01-16 21:15:07 5f5bcd8 feat(order/filter/ultrafilter): add some comap_inf_principal lemmas (#11495) ...in the setting of ultrafilters These lemmas are useful to prove e.g. that the continuous image of a compact set is compact in the setting of convergence spaces. ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean + theorem ultrafilter.comap_inf_principal_ne_bot_of_image_mem + theorem ultrafilter.eq_of_le + theorem ultrafilter.of_comap_inf_principal_eq_of_map + theorem ultrafilter.of_comap_inf_principal_mem 2022-01-16 15:00:06 d7f8f58 feat(algebra/star/unitary): (re)define unitary elements of a star monoid (#11457) This PR defines `unitary R` for a star monoid `R` as the submonoid containing the elements that satisfy both `star U * U = 1` and `U * star U = 1`. We show basic properties (i.e. that this forms a group) and show that they preserve the norm when `R` is a C* ring. Note that this replaces `unitary_submonoid`, which only included the condition `star U * U = 1` -- see [the discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/unitary.20submonoid) on Zulip. ESTIMATED CHANGES Modified src/algebra/star/self_adjoint.lean Added src/algebra/star/unitary.lean + theorem unitary.coe_mul_star_self + theorem unitary.coe_star + theorem unitary.coe_star_mul_self + theorem unitary.mul_star_self + theorem unitary.mul_star_self_of_mem + theorem unitary.star_eq_inv' + theorem unitary.star_eq_inv + theorem unitary.star_mem + theorem unitary.star_mem_iff + theorem unitary.star_mul_self + theorem unitary.star_mul_self_of_mem + def unitary Modified src/analysis/normed_space/star.lean + theorem cstar_ring.norm_coe_unitary + theorem cstar_ring.norm_coe_unitary_mul + theorem cstar_ring.norm_mem_unitary_mul + theorem cstar_ring.norm_mul_coe_unitary + theorem cstar_ring.norm_mul_mem_unitary + theorem cstar_ring.norm_of_mem_unitary + theorem cstar_ring.norm_unitary_smul Modified src/linear_algebra/unitary_group.lean +/- theorem matrix.unitary_group.star_mul_self +/- def matrix.unitary_group - theorem matrix.unitary_submonoid.star_mem - theorem matrix.unitary_submonoid.star_mem_iff - def unitary_submonoid 2022-01-16 15:00:04 1d1f384 feat(analysis/calculus/dslope): define dslope (#11432) ESTIMATED CHANGES Added src/analysis/calculus/dslope.lean + theorem continuous_at.of_dslope + theorem continuous_at_dslope_of_ne + theorem continuous_at_dslope_same + theorem continuous_on.of_dslope + theorem continuous_on_dslope + theorem continuous_within_at.of_dslope + theorem continuous_within_at_dslope_of_ne + theorem differentiable_at.of_dslope + theorem differentiable_at_dslope_of_ne + theorem differentiable_on.of_dslope + theorem differentiable_on_dslope_of_nmem + theorem differentiable_within_at.of_dslope + theorem differentiable_within_at_dslope_of_ne + theorem dslope_eventually_eq_slope_of_ne + theorem dslope_eventually_eq_slope_punctured_nhds + theorem dslope_of_ne + theorem dslope_same + theorem dslope_sub_smul + theorem dslope_sub_smul_of_ne + theorem eq_on_dslope_slope + theorem eq_on_dslope_sub_smul + theorem sub_smul_dslope 2022-01-16 13:30:27 1aee8a8 chore(*): Put `simp` attribute before `to_additive` (#11488) A few lemmas were tagged in the wrong order. As tags are applied from left to right, `@[to_additive, simp]` only marks the multiplicative lemma as `simp`. The correct order is thus `@[simp, to_additive]`. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean +/- theorem mul_opposite.commute_op +/- theorem mul_opposite.commute_unop Modified src/algebra/order/lattice_group.lean Modified src/group_theory/submonoid/inverses.lean +/- theorem submonoid.from_left_inv_eq_inv +/- theorem submonoid.from_left_inv_left_inv_equiv_symm +/- theorem submonoid.from_left_inv_one +/- theorem submonoid.left_inv_equiv_symm_eq_inv +/- theorem submonoid.left_inv_equiv_symm_from_left_inv +/- theorem submonoid.left_inv_equiv_symm_mul +/- theorem submonoid.mul_left_inv_equiv_symm 2022-01-16 13:30:25 02a4775 refactor(analysis/normed_space): merge `normed_space` and `semi_normed_space` (#8218) There are no theorems which are true for `[normed_group M] [normed_space R M]` but not `[normed_group M] [semi_normed_space R M]`; so there is about as much value to the `semi_normed_space` / `normed_space` distinction as there was between `module` / `semimodule`. Since we eliminated `semimodule`, we should eliminte `semi_normed_space` too. This relaxes the typeclass arguments of `normed_space` to make it a drop-in replacement for `semi_normed_space`; or viewed another way, this removes `normed_space` and renames `semi_normed_space` to replace it. This does the same thing to `normed_algebra` and `seminormed_algebra`, but these are hardly used anyway. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/semi_normed_space.20vs.20normed_space/near/245089933) As with any typeclass refactor, this randomly breaks elaboration in a few places; presumably, it was able to unify arguments from one particular typeclass path, but not from another. To fix this, some type ascriptions have to be added where previously none were needed. In a few rare cases, the elaborator gets so confused that we have to enter tactic mode to produce a term. This isn't really a new problem - this PR just makes these issues all visible at once, whereas normally we'd only run into one or two at a time. Optimistically Lean 4 will fix all this, but we won't really know until we try. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/basic.lean +/- theorem closure_ball +/- theorem dist_smul +/- theorem frontier_ball +/- theorem frontier_closed_ball +/- def homeomorph_unit_ball +/- theorem interior_closed_ball +/- theorem nndist_smul +/- theorem nnnorm_smul +/- theorem norm_smul +/- theorem norm_smul_of_nonneg - def semi_normed_space.restrict_scalars Modified src/analysis/normed_space/conformal_linear_map.lean Modified src/analysis/normed_space/dual.lean +/- theorem polar_univ Modified src/analysis/normed_space/extend.lean +/- theorem continuous_linear_map.extend_to_𝕜'_apply +/- theorem norm_bound Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.op_norm_smul_le +/- theorem continuous_linear_map.to_span_singleton_smul' Modified src/analysis/normed_space/pi_Lp.lean Modified src/analysis/normed_space/pointwise.lean Modified src/analysis/seminorm.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/integral/set_to_l1.lean +/- theorem measure_theory.dominated_fin_meas_additive.smul +/- theorem measure_theory.simple_func.set_to_simple_func_smul_left' +/- theorem measure_theory.simple_func.set_to_simple_func_smul_left Modified src/number_theory/modular.lean Modified src/topology/metric_space/hausdorff_distance.lean 2022-01-16 13:03:59 d60541c feat(analysis/seminorm): Add `has_add` and `has_scalar nnreal` (#11414) Add instances of `has_add` and `has_scalar nnreal` type classes for `seminorm`. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.add_apply + theorem seminorm.coe_add + def seminorm.coe_fn_add_monoid_hom + theorem seminorm.coe_fn_add_monoid_hom_injective + theorem seminorm.coe_smul + theorem seminorm.smul_apply 2022-01-16 09:33:17 3fb5b82 feat(algebra/star/basic): change `star_ring_aut` (notably, complex conjugation) from `ring_equiv` to `ring_hom` and make type argument explicit (#11418) Change the underlying object notated by `conj` from ```lean def star_ring_aut [comm_semiring R] [star_ring R] : ring_aut R := ``` to ```lean def star_ring_end [comm_semiring R] [star_ring R] : R →+* R := ``` and also make the `R` argument explicit. These two changes allow the notation for conjugate-linear maps, `E →ₗ⋆[R] F` and variants, to pretty-print, see https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Pretty.20printer.20omits.20notation This is a partial reversion of #9640, in which complex conjugation was upgraded from `ring_hom` to `ring_equiv`. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean Modified src/algebra/star/basic.lean - theorem star_ring_aut_apply - theorem star_ring_aut_self_apply + def star_ring_end + theorem star_ring_end_apply + theorem star_ring_end_self_apply Modified src/analysis/complex/circle.lean +/- theorem coe_inv_circle_eq_conj Modified src/analysis/complex/isometry.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/star.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/equiv/module.lean Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/number_theory/modular.lean Modified src/topology/algebra/module/basic.lean 2022-01-15 21:32:40 1a29adc feat(measure_theory/integral): weaker assumptions on Ioi integrability (#11090) To show a function is integrable given an `ae_cover` it suffices to show boundedness along a filter, not necessarily convergence. This PR adds these generalisations, and uses them to show the older convergence versions. ESTIMATED CHANGES Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.ae_cover.integrable_of_integral_bounded_of_nonneg_ae + theorem measure_theory.ae_cover.integrable_of_integral_norm_bounded + theorem measure_theory.ae_cover.integrable_of_lintegral_nnnorm_bounded' + theorem measure_theory.ae_cover.integrable_of_lintegral_nnnorm_bounded + theorem measure_theory.integrable_of_interval_integral_norm_bounded + theorem measure_theory.integrable_on_Iic_of_interval_integral_norm_bounded + theorem measure_theory.integrable_on_Ioi_of_interval_integral_norm_bounded 2022-01-15 20:09:30 1f266d6 feat(data/pnat/basic): `succ_nat_pred` (#11455) ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.nat_pred_add_one + theorem pnat.nat_pred_eq_pred + theorem pnat.one_add_nat_pred 2022-01-15 18:38:48 0b4f07f feat(data/set/basic): add singleton_injective (#11464) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.singleton_injective 2022-01-15 17:32:48 37cf695 feat(measure_theory/integral/set_to_l1): monotonicity properties of set_to_fun (#10714) We prove that in a `normed_lattice_add_comm_group`, if `T` is such that `0 ≤ T s x` for `0 ≤ x`, then `set_to_fun μ T` verifies - `set_to_fun_mono_left (h : ∀ s x, T' s x ≤ T'' s x) : set_to_fun μ T' hT' f ≤ set_to_fun μ T'' hT'' f` - `set_to_fun_nonneg (hf : 0 ≤ᵐ[μ] f) : 0 ≤ set_to_fun μ T hT f` - `set_to_fun_mono (hfg : f ≤ᵐ[μ] g) : set_to_fun μ T hT f ≤ set_to_fun μ T hT g` ESTIMATED CHANGES Added src/measure_theory/function/lp_order.lean + theorem measure_theory.Lp.coe_fn_le + theorem measure_theory.Lp.coe_fn_nonneg Modified src/measure_theory/function/simple_func_dense.lean + theorem measure_theory.Lp.simple_func.coe_fn_le + theorem measure_theory.Lp.simple_func.coe_fn_nonneg + theorem measure_theory.Lp.simple_func.coe_fn_zero + def measure_theory.Lp.simple_func.coe_simple_func_nonneg_to_Lp_nonneg + theorem measure_theory.Lp.simple_func.dense_range_coe_simple_func_nonneg_to_Lp_nonneg + theorem measure_theory.Lp.simple_func.exists_simple_func_nonneg_ae_eq Modified src/measure_theory/integral/set_to_l1.lean + theorem measure_theory.L1.set_to_L1_mono + theorem measure_theory.L1.set_to_L1_mono_left' + theorem measure_theory.L1.set_to_L1_mono_left + theorem measure_theory.L1.set_to_L1_nonneg + theorem measure_theory.L1.simple_func.set_to_L1s_clm_mono + theorem measure_theory.L1.simple_func.set_to_L1s_clm_mono_left' + theorem measure_theory.L1.simple_func.set_to_L1s_clm_mono_left + theorem measure_theory.L1.simple_func.set_to_L1s_clm_nonneg + theorem measure_theory.L1.simple_func.set_to_L1s_mono + theorem measure_theory.L1.simple_func.set_to_L1s_mono_left' + theorem measure_theory.L1.simple_func.set_to_L1s_mono_left + theorem measure_theory.L1.simple_func.set_to_L1s_nonneg + theorem measure_theory.set_to_fun_mono + theorem measure_theory.set_to_fun_mono_left' + theorem measure_theory.set_to_fun_mono_left + theorem measure_theory.set_to_fun_nonneg +/- theorem measure_theory.simple_func.set_to_simple_func_mono + theorem measure_theory.simple_func.set_to_simple_func_mono_left' + theorem measure_theory.simple_func.set_to_simple_func_mono_left + theorem measure_theory.simple_func.set_to_simple_func_nonneg' + theorem measure_theory.simple_func.set_to_simple_func_nonneg 2022-01-15 15:30:16 51c5a40 feat(analysis/special_functions/trigonometric/angle): `neg_coe_pi` (#11460) Add the lemma that `-π` and `π` are the same `real.angle` (angle mod 2π). ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.neg_coe_pi 2022-01-15 14:19:28 ce62dbc feat(algebra/star/self_adjoint): module instance on self-adjoint elements of a star algebra (#11322) We put a module instance on `self_adjoint A`, where `A` is a `[star_module R A]` and `R` has a trivial star operation. A new typeclass `[has_trivial_star R]` is created for this purpose with an instance on `ℝ`. This allows us to express the fact that e.g. the space of complex Hermitian matrices is a real vector space. ESTIMATED CHANGES Modified src/algebra/star/basic.lean Modified src/algebra/star/self_adjoint.lean + theorem self_adjoint.coe_smul Modified src/data/real/basic.lean 2022-01-15 10:42:41 0d1d4c9 feat(data/finset/basic): strengthen `finset.nonempty.cons_induction` (#11452) This change makes it strong enough to be used in three other lemmas. ESTIMATED CHANGES Modified src/analysis/seminorm.lean Modified src/data/finset/basic.lean +/- theorem finset.nonempty.cons_induction Modified src/data/finset/lattice.lean Modified src/data/real/ennreal.lean 2022-01-15 09:16:04 ff19c95 chore(algebra/group_power/basic): collect together ring lemmas (#11446) This reorders the lemmas so that all the ring and comm_ring lemmas can be put in a single section. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem eq_or_eq_neg_of_sq_eq_sq +/- theorem mul_neg_one_pow_eq_zero_iff +/- theorem neg_one_pow_eq_or +/- theorem neg_one_pow_mul_eq_zero_iff +/- theorem neg_pow +/- theorem neg_pow_bit0 +/- theorem neg_pow_bit1 +/- theorem neg_sq +/- theorem of_mul_pow +/- theorem sq_sub_sq +/- theorem sub_sq 2022-01-15 07:39:52 df2d70d refactor(analysis/inner_product_space/basic): generalize `orthogonal_family` from submodules to maps (#11254) The old definition of `orthogonal_family` was a predicate on `V : ι → submodule 𝕜 E`, a family of submodules of an inner product space `E`; the new definition is a predicate on ```lean {G : ι → Type*} [Π i, inner_product_space 𝕜 (G i)] (V : Π i, G i →ₗᵢ[𝕜] E) ``` a family of inner product spaces and (injective, generally not surjective) isometries of these inner product spaces into `E`. The new definition subsumes the old definition, but also applies more cleanly to orthonormal sets of vectors. An orthonormal set `{v : ι → E}` of vectors in `E` induces an `orthogonal_family` of the new style with `G i` chosen to be `𝕜`, for each `i`, and `V i : G i →ₗᵢ[𝕜] E` the map from `𝕜` to the span of `v i` in `E`. In #11255 we write down the induced isometry from the l2 space `lp G 2` into `E` induced by "summing" all the isometries in an orthogonal family. This works for either the old definition or the new definition. But with the old definition, an orthonormal set of vectors induces an isometry from the weird l2 space `lp (λ i, span 𝕜 (v i)) 2` into `E`, whereas with the new definition it induces an isometry from the standard l2 space `lp (λ i, 𝕜) 2` into `E`. This is much more elegant! ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem dfinsupp.inner_sum + theorem dfinsupp.sum_inner +/- theorem direct_sum.submodule_is_internal.collected_basis_orthonormal +/- theorem orthogonal_family.eq_ite +/- theorem orthogonal_family.independent +/- theorem orthogonal_family.inner_right_dfinsupp +/- theorem orthogonal_family.inner_right_fintype +/- theorem orthogonal_family.inner_sum +/- theorem orthogonal_family.norm_sq_diff_sum +/- theorem orthogonal_family.norm_sum +/- theorem orthogonal_family.orthonormal_sigma_orthonormal +/- theorem orthogonal_family.summable_iff_norm_sq_summable +/- def orthogonal_family + theorem orthonormal.orthogonal_family Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/spectrum.lean +/- theorem inner_product_space.is_self_adjoint.orthogonal_family_eigenspaces' +/- theorem inner_product_space.is_self_adjoint.orthogonal_family_eigenspaces Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.map_neg Modified src/analysis/normed_space/operator_norm.lean + theorem linear_isometry.coe_to_span_singleton + def linear_isometry.to_span_singleton + theorem linear_isometry.to_span_singleton_apply 2022-01-15 02:46:13 fa41b7a feat(topology/algebra/uniform_group): Condition for uniform convergence (#11391) This PR adds a lemma regarding uniform convergence on a topological group `G`, placed right after the construction of the `uniform_space` structure on `G`. ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean + theorem topological_group.tendsto_locally_uniformly_iff + theorem topological_group.tendsto_locally_uniformly_on_iff + theorem topological_group.tendsto_uniformly_iff + theorem topological_group.tendsto_uniformly_on_iff 2022-01-14 21:29:54 323e388 feat(algebraic_geometry): More lemmas about affine schemes and basic open sets (#11449) ESTIMATED CHANGES Modified src/algebraic_geometry/AffineScheme.lean + theorem algebraic_geometry.Scheme.Spec_map_presheaf_map_eq_to_hom + theorem algebraic_geometry.Scheme.map_prime_spectrum_basic_open_of_affine + theorem algebraic_geometry.is_affine_open.Spec_Γ_identity_hom_app_from_Spec + theorem algebraic_geometry.is_affine_open.basic_open_is_affine + def algebraic_geometry.is_affine_open.from_Spec + theorem algebraic_geometry.is_affine_open.from_Spec_app_eq + theorem algebraic_geometry.is_affine_open.from_Spec_base_preimage + theorem algebraic_geometry.is_affine_open.from_Spec_image_top + theorem algebraic_geometry.is_affine_open.from_Spec_range + theorem algebraic_geometry.is_affine_open.is_compact + theorem algebraic_geometry.is_basis_basic_open Modified src/algebraic_geometry/Scheme.lean +/- theorem algebraic_geometry.Scheme.basic_open_res +/- theorem algebraic_geometry.Scheme.basic_open_res_eq + theorem algebraic_geometry.Scheme.basic_open_subset + theorem algebraic_geometry.Scheme.comp_coe_base + theorem algebraic_geometry.Scheme.comp_val + theorem algebraic_geometry.Scheme.comp_val_base 2022-01-14 19:02:35 f770d6e feat(topology/separation): generalize two lemmas (#11454) ESTIMATED CHANGES Modified src/topology/separation.lean +/- theorem nhds_eq_nhds_iff +/- theorem nhds_le_nhds_iff 2022-01-14 19:02:34 d54375e feat(data/nat/totient): `totient_even` (#11436) ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.totient_even 2022-01-14 17:47:21 49079c1 feat(data/finsupp/basic): add `finset_sum_apply` and `coe_fn_add_hom` (#11423) `finset_sum_apply`: Given a family of functions `f i : α → ℕ` indexed over `S : finset ι`, the sum of this family over `S` is a function `α → ℕ` whose value at `p : α` is `∑ (i : ι) in S, (f i) p` `coe_fn_add_monoid_hom`: Coercion from a `finsupp` to a function type is an `add_monoid_hom`. Proved by Alex J. Best ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.coe_finset_sum + theorem finsupp.coe_sum + theorem finsupp.finset_sum_apply 2022-01-14 17:47:19 757eaf4 chore(analysis/calculus/{deriv,mean_value}): use `slope` (#11419) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/special_functions/log_deriv.lean Modified src/linear_algebra/affine_space/slope.lean + theorem slope_fun_def Modified src/measure_theory/integral/interval_integral.lean 2022-01-14 17:47:18 653fe45 feat(analysis/seminorm): `semilattice_sup` on seminorms and lemmas about `ball` (#11329) Define `bot` and the the binary `sup` on seminorms, and some lemmas about the supremum of a finite number of seminorms. Shows that the unit ball of the supremum is given by the intersection of the unit balls. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem seminorm.ball_bot + theorem seminorm.ball_finset_sup' + theorem seminorm.ball_finset_sup + theorem seminorm.ball_finset_sup_eq_Inter + theorem seminorm.ball_sup + theorem seminorm.ball_zero' + theorem seminorm.bot_eq_zero + theorem seminorm.coe_bot + theorem seminorm.coe_sup + theorem seminorm.coe_zero +/- theorem seminorm.ext + theorem seminorm.finset_sup_apply + theorem seminorm.le_def + theorem seminorm.lt_def 2022-01-14 16:49:58 2ce607e Docs typo in set_theory/cardinal: Wrong type product symbol (#11453) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean 2022-01-14 15:12:25 d8aed79 chore(analysis/inner_product_space/projection): Speedup `linear_isometry_equiv.reflections_generate_dim_aux` (#11443) This takes it from around 17s to around 6s on my machine. IMO using `e * f` instead of `f.trans e` makes this proof a little easier to follow, as then we don't have to translate between the two different spellings mid proof (and `prod` uses the `*` spelling internally) ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem reflection_inv + theorem reflection_mul_reflection Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.mul_def + theorem linear_isometry.one_def + theorem linear_isometry_equiv.inv_def + theorem linear_isometry_equiv.mul_def + theorem linear_isometry_equiv.one_def 2022-01-14 15:12:24 22a9f2e feat(algebra/field/basic): `div_neg_self`, `neg_div_self` (#11438) I think these two lemmas are useful as `simp` lemmas, but they don't seem to be there already. ESTIMATED CHANGES Modified src/algebra/field/basic.lean + theorem div_neg_self + theorem neg_div_self 2022-01-14 14:12:17 201aeaa chore(algebra/char_p): ring_char.eq is better in the other direction, with instances, and explicit arguments (#11439) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean +/- theorem ring_char.eq +/- theorem ring_char.eq_zero 2022-01-14 13:04:30 011a599 feat(algebraic_geometry): Gluing morphisms from an open cover. (#11441) ESTIMATED CHANGES Modified src/algebraic_geometry/gluing.lean + def algebraic_geometry.Scheme.glue_data.open_cover + def algebraic_geometry.Scheme.open_cover.from_glued + theorem algebraic_geometry.Scheme.open_cover.from_glued_injective + theorem algebraic_geometry.Scheme.open_cover.from_glued_open_embedding + theorem algebraic_geometry.Scheme.open_cover.from_glued_open_map + def algebraic_geometry.Scheme.open_cover.glue_morphisms + def algebraic_geometry.Scheme.open_cover.glued_cover + theorem algebraic_geometry.Scheme.open_cover.glued_cover_cocycle + theorem algebraic_geometry.Scheme.open_cover.glued_cover_cocycle_fst + theorem algebraic_geometry.Scheme.open_cover.glued_cover_cocycle_snd + def algebraic_geometry.Scheme.open_cover.glued_cover_t' + theorem algebraic_geometry.Scheme.open_cover.glued_cover_t'_fst_fst + theorem algebraic_geometry.Scheme.open_cover.glued_cover_t'_fst_snd + theorem algebraic_geometry.Scheme.open_cover.glued_cover_t'_snd_fst + theorem algebraic_geometry.Scheme.open_cover.glued_cover_t'_snd_snd + theorem algebraic_geometry.Scheme.open_cover.ι_from_glued + theorem algebraic_geometry.Scheme.open_cover.ι_glue_morphisms 2022-01-14 10:58:50 44351a9 chore(analysis/complex/circle): add to_units and golf (#11435) ESTIMATED CHANGES Modified src/analysis/complex/circle.lean + def circle.to_units Modified src/analysis/complex/isometry.lean - def rotation_aux 2022-01-14 10:58:49 38eb719 feat(data/matrix/notation): relax typeclass assumptions (#11429) ESTIMATED CHANGES Modified src/data/matrix/notation.lean +/- theorem matrix.smul_vec2 +/- theorem matrix.smul_vec3 Modified src/linear_algebra/cross_product.lean 2022-01-14 10:58:47 a861839 feat(ring_theory/discriminant): add discr_mul_is_integral_mem_adjoin (#11396) We add `discr_mul_is_integral_mem_adjoin`: let `K` be the fraction field of an integrally closed domain `R` and let `L` be a finite separable extension of `K`. Let `B : power_basis K L` be such that `is_integral R B.gen`. Then for all `z : L` that are integral over `R`, we have `(discr K B.basis) • z ∈ adjoin R ({B.gen} : set L)`. From flt-regular. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.aeval_coe + theorem intermediate_field.coe_is_integral_iff + theorem intermediate_field.coe_prod + theorem intermediate_field.coe_sum Modified src/ring_theory/discriminant.lean +/- theorem algebra.discr_eq_det_embeddings_matrix_reindex_pow_two + theorem algebra.discr_is_integral + theorem algebra.discr_is_unit_of_basis + theorem algebra.discr_mul_is_integral_mem_adjoin +/- theorem algebra.discr_not_zero_of_basis +/- theorem algebra.discr_power_basis_eq_prod +/- theorem algebra.of_power_basis_eq_norm +/- theorem algebra.of_power_basis_eq_prod'' +/- theorem algebra.of_power_basis_eq_prod' Modified src/ring_theory/integral_closure.lean + theorem adjoin_le_integral_closure + theorem is_integral.det Modified src/ring_theory/trace.lean + theorem algebra.trace_matrix_of_basis_mul_vec 2022-01-14 10:07:46 5a6c13b feat(algebraic_geometry/open_immersion): Operations on open covers. (#11442) ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.open_cover.finite_subcover + def algebraic_geometry.Scheme.open_cover.pullback_cover 2022-01-14 10:07:44 e286012 feat(algebra/ne_zero): `pos_of_ne_zero_coe` (#11437) ESTIMATED CHANGES Modified src/algebra/ne_zero.lean + theorem ne_zero.not_char_dvd - theorem ne_zero.not_dvd_char + theorem ne_zero.pos_of_ne_zero_coe Modified src/ring_theory/polynomial/cyclotomic/basic.lean 2022-01-14 10:07:43 021baae feat(analysis/normed_space/linear_isometry): coercion injectivity lemmas and add_monoid_hom_class (#11434) This also registers `linear_isometry` and `linear_isometry_equiv` with `add_monoid_hom_class`. I found myself wanting one of these while squeezing a simp, so may as well have all of them now. ESTIMATED CHANGES Modified src/analysis/complex/isometry.lean - theorem linear_isometry_equiv.congr_fun Modified src/analysis/normed_space/linear_isometry.lean - theorem linear_isometry.coe_fn_injective + theorem linear_isometry.coe_injective + theorem linear_isometry.to_continuous_linear_map_inj + theorem linear_isometry.to_continuous_linear_map_injective + theorem linear_isometry.to_linear_map_inj + theorem linear_isometry_equiv.coe_injective + theorem linear_isometry_equiv.to_continuous_linear_equiv_inj + theorem linear_isometry_equiv.to_continuous_linear_equiv_injective + theorem linear_isometry_equiv.to_homeomorph_inj + theorem linear_isometry_equiv.to_homeomorph_injective + theorem linear_isometry_equiv.to_isometric_inj + theorem linear_isometry_equiv.to_isometric_injective + theorem linear_isometry_equiv.to_linear_equiv_inj + theorem linear_isometry_equiv.to_linear_isometry_inj + theorem linear_isometry_equiv.to_linear_isometry_injective 2022-01-14 10:07:42 61054f7 feat(topology): some improvements (#11424) * Prove a better version of `continuous_on.comp_fract`. Rename `continuous_on.comp_fract` -> `continuous_on.comp_fract''`. * Rename `finset.closure_Union` -> `finset.closure_bUnion` * Add `continuous.congr` and `continuous.subtype_coe` ESTIMATED CHANGES Modified src/topology/algebra/floor_ring.lean + theorem continuous_on.comp_fract'' +/- theorem continuous_on.comp_fract' +/- theorem continuous_on.comp_fract Modified src/topology/basic.lean + theorem continuous.congr - theorem finset.closure_Union + theorem finset.closure_bUnion Modified src/topology/constructions.lean + theorem continuous.subtype_coe 2022-01-14 08:37:20 3c1740a feat(combinatorics/configuration): Define the order of a projective plane (#11430) This PR defines the order of a projective plane, and proves a couple lemmas. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.projective_plane.dual.order + theorem configuration.projective_plane.line_count_eq + theorem configuration.projective_plane.point_count_eq 2022-01-14 08:37:18 5a3abca feat(topology/subset_properties): some compactness properties (#11425) * Add some lemmas about the existence of compact sets * Add `is_compact.eventually_forall_of_forall_eventually` * Some cleanup in `topology/subset_properties` and `topology/separation` ESTIMATED CHANGES Modified src/topology/separation.lean + theorem exists_compact_between + theorem exists_open_between_and_is_compact_closure + theorem exists_open_superset_and_is_compact_closure Modified src/topology/subset_properties.lean +/- theorem compact_Union +/- theorem compact_space.elim_nhds_subcover +/- theorem compact_space_of_finite_subfamily_closed +/- theorem continuous_on.preimage_clopen_of_clopen +/- theorem finset.compact_bUnion +/- theorem is_clopen_bInter +/- theorem is_clopen_bUnion +/- theorem is_compact.elim_finite_subcover_image + theorem is_compact.eventually_forall_of_forall_eventually +/- def is_compact +/- theorem is_irreducible.image +/- theorem is_preirreducible.image +/- theorem is_preirreducible.preimage +/- theorem set.finite.compact_bUnion 2022-01-14 08:37:17 feaf6f5 feat(algebraic_geometry): lemmas about basic opens in schemes (#11393) ESTIMATED CHANGES Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean + theorem algebraic_geometry.Γ_Spec.adjunction_unit_app_app_top Modified src/algebraic_geometry/Scheme.lean + def algebraic_geometry.Scheme.basic_open + theorem algebraic_geometry.Scheme.basic_open_mul + theorem algebraic_geometry.Scheme.basic_open_of_is_unit + theorem algebraic_geometry.Scheme.basic_open_res + theorem algebraic_geometry.Scheme.basic_open_res_eq + theorem algebraic_geometry.Scheme.basic_open_zero + theorem algebraic_geometry.Scheme.comp_val_c_app + theorem algebraic_geometry.Scheme.congr_app + theorem algebraic_geometry.Scheme.mem_basic_open + theorem algebraic_geometry.Scheme.mem_basic_open_top + theorem algebraic_geometry.Scheme.preimage_basic_open' + theorem algebraic_geometry.Scheme.preimage_basic_open + theorem algebraic_geometry.basic_open_eq_of_affine' + theorem algebraic_geometry.basic_open_eq_of_affine Modified src/algebraic_geometry/Spec.lean +/- def algebraic_geometry.Spec_Γ_identity Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/properties.lean - theorem algebraic_geometry.basic_open_eq_of_affine' - theorem algebraic_geometry.basic_open_eq_of_affine Modified src/algebraic_geometry/ringed_space.lean + theorem algebraic_geometry.RingedSpace.basic_open_mul + theorem algebraic_geometry.RingedSpace.basic_open_of_is_unit +/- theorem algebraic_geometry.RingedSpace.basic_open_res + theorem algebraic_geometry.RingedSpace.basic_open_res_eq Modified src/algebraic_geometry/sheafed_space.lean Modified src/topology/category/Top/opens.lean + theorem topological_space.opens.inclusion_map_eq_top + theorem topological_space.opens.open_embedding_obj_top 2022-01-14 08:37:16 85accb8 feat(data/{multiset,finset}/sum): Disjoint sum of multisets/finsets (#11355) This defines the disjoint union of two multisets/finsets as `multiset (α ⊕ β)`/`finset (α ⊕ β)`. ESTIMATED CHANGES Added src/data/finset/sum.lean + theorem finset.card_disj_sum + def finset.disj_sum + theorem finset.disj_sum_empty + theorem finset.disj_sum_mono + theorem finset.disj_sum_mono_left + theorem finset.disj_sum_mono_right + theorem finset.disj_sum_ssubset_disj_sum_of_ssubset_of_subset + theorem finset.disj_sum_ssubset_disj_sum_of_subset_of_ssubset + theorem finset.disj_sum_strict_mono_left + theorem finset.disj_sum_strict_mono_right + theorem finset.empty_disj_sum + theorem finset.inl_mem_disj_sum + theorem finset.inr_mem_disj_sum + theorem finset.mem_disj_sum + theorem finset.val_disj_sum Modified src/data/multiset/basic.lean + theorem multiset.map_lt_map + theorem multiset.map_mono + theorem multiset.map_strict_mono Added src/data/multiset/sum.lean + theorem multiset.card_disj_sum + def multiset.disj_sum + theorem multiset.disj_sum_lt_disj_sum_of_le_of_lt + theorem multiset.disj_sum_lt_disj_sum_of_lt_of_le + theorem multiset.disj_sum_mono + theorem multiset.disj_sum_mono_left + theorem multiset.disj_sum_mono_right + theorem multiset.disj_sum_strict_mono_left + theorem multiset.disj_sum_strict_mono_right + theorem multiset.disj_sum_zero + theorem multiset.inl_mem_disj_sum + theorem multiset.inr_mem_disj_sum + theorem multiset.mem_disj_sum + theorem multiset.zero_disj_sum Modified src/logic/basic.lean + theorem or_iff_left + theorem or_iff_right 2022-01-14 08:37:15 9a94993 feat(analysis/inner_product_space/l2): Inner product space structure on `l2` (#11315) ESTIMATED CHANGES Added src/analysis/inner_product_space/l2_space.lean + theorem lp.has_sum_inner + theorem lp.inner_eq_tsum + theorem lp.summable_inner Modified src/analysis/normed_space/lp_space.lean 2022-01-14 08:37:14 fb2b1a0 fix(algebra/star/basic): redefine `star_ordered_ring` (#11213) This PR redefines `star_ordered_ring` to remove the `ordered_semiring` assumption, which includes undesirable axioms such as `∀ (a b c : α), a < b → 0 < c → c * a < c * b`. See the discussion on Zulip [here](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Star.20ordered.20ring). ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem star_mul_self_nonneg' +/- theorem star_mul_self_nonneg Modified src/data/complex/basic.lean Modified src/data/real/basic.lean Modified src/data/real/sqrt.lean 2022-01-14 06:59:50 60c77d4 feat(tactic/lint): include linter name in github output (#11413) ESTIMATED CHANGES Modified src/tactic/lint/frontend.lean 2022-01-14 06:28:53 d248447 feat(algebraic_geometry): Gluing schemes (#11431) ESTIMATED CHANGES Added src/algebraic_geometry/gluing.lean + def algebraic_geometry.Scheme.glue_data.V_pullback_cone + def algebraic_geometry.Scheme.glue_data.V_pullback_cone_is_limit + theorem algebraic_geometry.Scheme.glue_data.glue_condition + def algebraic_geometry.Scheme.glue_data.glued + def algebraic_geometry.Scheme.glue_data.glued_Scheme + theorem algebraic_geometry.Scheme.glue_data.is_open_iff + def algebraic_geometry.Scheme.glue_data.iso_LocallyRingedSpace + def algebraic_geometry.Scheme.glue_data.iso_carrier + def algebraic_geometry.Scheme.glue_data.rel + def algebraic_geometry.Scheme.glue_data.to_LocallyRingedSpace_glue_data + def algebraic_geometry.Scheme.glue_data.ι + theorem algebraic_geometry.Scheme.glue_data.ι_eq_iff + theorem algebraic_geometry.Scheme.glue_data.ι_iso_LocallyRingedSpace_inv + theorem algebraic_geometry.Scheme.glue_data.ι_iso_carrier_inv + theorem algebraic_geometry.Scheme.glue_data.ι_jointly_surjective + structure algebraic_geometry.Scheme.glue_data Modified src/algebraic_geometry/presheafed_space.lean + theorem algebraic_geometry.PresheafedSpace.coe_to_fun_eq Modified src/algebraic_geometry/presheafed_space/gluing.lean + def algebraic_geometry.LocallyRingedSpace.glue_data.V_pullback_cone_is_limit + def algebraic_geometry.LocallyRingedSpace.glue_data.iso_SheafedSpace + def algebraic_geometry.LocallyRingedSpace.glue_data.to_SheafedSpace_glue_data + theorem algebraic_geometry.LocallyRingedSpace.glue_data.ι_iso_SheafedSpace_inv + theorem algebraic_geometry.LocallyRingedSpace.glue_data.ι_jointly_surjective + structure algebraic_geometry.LocallyRingedSpace.glue_data - theorem algebraic_geometry.PresheafedSpace.coe_to_fun_eq + def algebraic_geometry.PresheafedSpace.glue_data.V_pullback_cone_is_limit + theorem algebraic_geometry.PresheafedSpace.glue_data.ι_jointly_surjective + def algebraic_geometry.SheafedSpace.glue_data.V_pullback_cone_is_limit + def algebraic_geometry.SheafedSpace.glue_data.iso_PresheafedSpace + def algebraic_geometry.SheafedSpace.glue_data.to_PresheafedSpace_glue_data + theorem algebraic_geometry.SheafedSpace.glue_data.ι_iso_PresheafedSpace_inv + theorem algebraic_geometry.SheafedSpace.glue_data.ι_jointly_surjective + structure algebraic_geometry.SheafedSpace.glue_data 2022-01-13 23:16:00 48fd9f2 chore(data/list/big_operators): rename vars, reorder lemmas (#11433) * use better variable names; * move lemmas to proper sections; * relax `[comm_semiring R]` to `[semiring R]` in `dvd_sum`. ESTIMATED CHANGES Modified src/data/list/big_operators.lean +/- theorem list.all_one_of_le_one_le_of_prod_eq_one +/- theorem list.dvd_prod +/- theorem list.dvd_sum +/- theorem list.eq_of_sum_take_eq +/- theorem list.exists_le_of_sum_le +/- theorem list.exists_lt_of_sum_lt +/- theorem list.head_mul_tail_prod_of_ne_nil +/- theorem list.length_pos_of_prod_ne_one +/- theorem list.length_pos_of_sum_pos +/- theorem list.monotone_sum_take +/- theorem list.nth_zero_mul_tail_prod +/- theorem list.one_le_prod_of_one_le +/- theorem list.one_lt_prod_of_one_lt +/- theorem list.prod_eq_one_iff +/- theorem list.prod_eq_zero +/- theorem list.prod_eq_zero_iff +/- theorem list.prod_erase +/- theorem list.prod_hom +/- theorem list.prod_hom_rel +/- theorem list.prod_hom₂ +/- theorem list.prod_inv +/- theorem list.prod_inv_reverse +/- theorem list.prod_is_unit +/- theorem list.prod_join +/- theorem list.prod_map_hom +/- theorem list.prod_ne_zero +/- theorem list.prod_nil +/- theorem list.prod_pos +/- theorem list.prod_reverse_noncomm +/- theorem list.prod_update_nth' +/- theorem list.prod_update_nth +/- theorem list.single_le_prod +/- theorem list.sum_le_foldr_max +/- theorem list.sum_map_mul_left +/- theorem list.sum_map_mul_right +/- theorem monoid_hom.map_list_prod +/- theorem monoid_hom.unop_map_list_prod +/- theorem mul_opposite.op_list_prod +/- theorem mul_opposite.unop_list_prod 2022-01-13 21:10:22 e830348 feat(set_theory/ordinal_arithmetic): Families of ordinals (#11278) This PR introduces some API to convert from `ι → β` indexed families to `Π o < b, β` indexed families. This simplifies and contextualizes some existing results. ESTIMATED CHANGES Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal_arithmetic.lean + def ordinal.bfamily_of_family' + theorem ordinal.bfamily_of_family'_typein + def ordinal.bfamily_of_family + theorem ordinal.bfamily_of_family_typein + theorem ordinal.blsub_eq_blsub + theorem ordinal.blsub_eq_lsub' +/- theorem ordinal.blsub_eq_lsub + theorem ordinal.bsup_eq_bsup + theorem ordinal.bsup_eq_sup' +/- theorem ordinal.bsup_eq_sup - theorem ordinal.bsup_type + def ordinal.family_of_bfamily' + theorem ordinal.family_of_bfamily'_enum + def ordinal.family_of_bfamily + theorem ordinal.family_of_bfamily_enum + theorem ordinal.lsub_eq_blsub' +/- theorem ordinal.lsub_eq_blsub + theorem ordinal.lsub_eq_lsub + theorem ordinal.sup_eq_bsup' +/- theorem ordinal.sup_eq_bsup + theorem ordinal.sup_eq_sup 2022-01-13 20:16:58 6fa2e46 feat(algebra/lie/nilpotent): central extensions of nilpotent Lie modules / algebras are nilpotent (#11422) The main result is `lie_algebra.nilpotent_of_nilpotent_quotient`. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean + theorem lie_module.ideal_oper_max_triv_submodule_eq_bot Modified src/algebra/lie/basic.lean + theorem lie_module_hom.coe_id + def lie_module_hom.id + theorem lie_module_hom.id_apply Modified src/algebra/lie/ideal_operations.lean + theorem lie_submodule.map_bracket_eq Modified src/algebra/lie/nilpotent.lean + theorem coe_lower_central_series_ideal_quot_eq + theorem lie_algebra.nilpotent_of_nilpotent_quotient - theorem lie_ideal.lower_central_series_map_le + theorem lie_ideal.map_lower_central_series_le + theorem lie_module.map_lower_central_series_le + theorem lie_module.nilpotent_of_nilpotent_quotient Modified src/algebra/lie/quotient.lean + theorem lie_submodule.quotient.map_mk'_eq_bot_le + theorem lie_submodule.quotient.mk'_ker + theorem lie_submodule.quotient.mk_eq_zero Modified src/algebra/lie/submodule.lean + theorem lie_module_hom.comp_ker_incl + def lie_module_hom.ker + theorem lie_module_hom.ker_id + theorem lie_module_hom.le_ker_iff_map + theorem lie_module_hom.mem_ker +/- theorem lie_subalgebra.coe_to_lie_submodule +/- theorem lie_subalgebra.exists_lie_ideal_coe_eq_iff +/- theorem lie_subalgebra.exists_nested_lie_ideal_coe_eq_iff +/- theorem lie_subalgebra.mem_to_lie_submodule +/- def lie_subalgebra.to_lie_submodule + theorem lie_submodule.coe_submodule_map 2022-01-13 19:34:18 432e85e feat(analysis/normed_space/linear_isometry): add congr_arg and congr_fun (#11428) Two trivial lemmas that are missing from this bundled morphism but present on most others. Turns out I didn't actually need these in the branch I created them in, but we should have them anyway. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean 2022-01-13 19:34:17 8a13846 feat(analysis/mean_inequalities): Hölder's inequality for infinite sums (#11314) State a few versions of Hölder's inequality for infinite sums. The specific forms of the inequality chosen are parallel to those for Minkowski's inequality in #10984. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem nnreal.Lp_add_le_tsum' + theorem nnreal.inner_le_Lp_mul_Lq_has_sum + theorem nnreal.inner_le_Lp_mul_Lq_tsum' + theorem nnreal.inner_le_Lp_mul_Lq_tsum + theorem nnreal.summable_Lp_add + theorem nnreal.summable_mul_of_Lp_Lq + theorem real.Lp_add_le_tsum_of_nonneg' + theorem real.inner_le_Lp_mul_Lq_has_sum_of_nonneg + theorem real.inner_le_Lp_mul_Lq_tsum_of_nonneg' + theorem real.inner_le_Lp_mul_Lq_tsum_of_nonneg + theorem real.summable_Lp_add_of_nonneg + theorem real.summable_mul_of_Lp_Lq_of_nonneg Modified src/analysis/normed_space/lp_space.lean 2022-01-13 17:57:13 0504425 feat(analysis/inner_product_space/basic): criterion for summability (#11224) In a complete inner product space `E`, a family `f` of mutually-orthogonal elements of `E` is summable, if and only if `(λ i, ∥f i∥ ^ 2)` is summable. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_sdiff_div_prod_sdiff Modified src/algebra/big_operators/order.lean + theorem finset.abs_sum_of_nonneg' + theorem finset.abs_sum_of_nonneg + theorem finset.one_le_prod'' + theorem finset.one_le_prod' Modified src/analysis/inner_product_space/basic.lean + theorem orthogonal_family.inner_sum + theorem orthogonal_family.norm_sq_diff_sum + theorem orthogonal_family.norm_sum + theorem orthogonal_family.summable_iff_norm_sq_summable 2022-01-13 17:19:26 6446ba8 feat(ring_theory/{trace,norm}): add trace_gen_eq_next_coeff_minpoly and norm_gen_eq_coeff_zero_minpoly (#11420) We add `trace_gen_eq_next_coeff_minpoly` and `norm_gen_eq_coeff_zero_minpoly`. From flt-regular. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem polynomial.prod_roots_eq_coeff_zero_of_monic_of_split + theorem polynomial.sum_roots_eq_next_coeff_of_monic_of_split Modified src/ring_theory/norm.lean - theorem algebra.norm_gen_eq_prod_roots + theorem algebra.power_basis.norm_gen_eq_coeff_zero_minpoly + theorem algebra.power_basis.norm_gen_eq_prod_roots Modified src/ring_theory/trace.lean + theorem power_basis.trace_gen_eq_next_coeff_minpoly 2022-01-13 16:52:43 ea9f964 fix(analysis/calculus/fderiv_symmetric): speed up tactic block from 3.6s to 180ms (#11426) The timings are measured for the single small begin/end block. The proof as a whole is still around 7.6s, down from 11s. The fault here was likely the `convert`, which presumably spent a lot of time trying to unify typeclass arguments. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_symmetric.lean 2022-01-13 16:52:42 0f79668 feat(measure_theory/function/uniform_integrable): Egorov's theorem (#11328) This PR proves Egorov's theorem which is necessary for the Vitali convergence theorem which is vital for the martingale convergence theorems. ESTIMATED CHANGES Added src/measure_theory/function/uniform_integrable.lean + def measure_theory.egorov.Union_not_convergent_seq + theorem measure_theory.egorov.Union_not_convergent_seq_measurable_set + theorem measure_theory.egorov.Union_not_convergent_seq_subset + theorem measure_theory.egorov.exists_not_convergent_seq_lt + theorem measure_theory.egorov.measure_Union_not_convergent_seq + theorem measure_theory.egorov.measure_inter_not_convergent_seq_eq_zero + theorem measure_theory.egorov.measure_not_convergent_seq_tendsto_zero + theorem measure_theory.egorov.mem_not_convergent_seq_iff + def measure_theory.egorov.not_convergent_seq + theorem measure_theory.egorov.not_convergent_seq_antitone + def measure_theory.egorov.not_convergent_seq_lt_index + theorem measure_theory.egorov.not_convergent_seq_lt_index_spec + theorem measure_theory.egorov.not_convergent_seq_measurable_set + theorem measure_theory.egorov.tendsto_uniformly_on_diff_Union_not_convergent_seq + theorem measure_theory.tendsto_uniformly_on_of_ae_tendsto' + theorem measure_theory.tendsto_uniformly_on_of_ae_tendsto 2022-01-13 15:18:51 a16a5b5 chore(order/lattice_intervals): review (#11416) * use `@[reducible] protected def`; * add `is_least.order_bot` and `is_greatest.order_top`, use them; * weaken TC assumptions on `set.Ici.bounded_order` and `set.Iic.bounded_order`. ESTIMATED CHANGES Modified src/order/bounds.lean + def is_greatest.order_top + def is_least.order_bot Modified src/order/conditionally_complete_lattice.lean + theorem cInf_pair + theorem cSup_pair Modified src/order/lattice_intervals.lean - def set.Icc.bounded_order - def set.Icc.order_bot - def set.Icc.order_top - def set.Ico.order_bot - def set.Ioc.order_top 2022-01-13 12:25:21 cd4f5c4 feat(linear_algebra/{cross_product,vectors}): cross product (#11181) Defines the cross product for R^3 and gives localized notation for that and the dot product. Was https://github.com/leanprover-community/mathlib/pull/10959 ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/data/matrix/notation.lean + theorem matrix.smul_vec2 + theorem matrix.smul_vec3 + theorem matrix.vec2_add + theorem matrix.vec2_dot_product' + theorem matrix.vec2_dot_product + theorem matrix.vec2_eq + theorem matrix.vec3_add + theorem matrix.vec3_dot_product' + theorem matrix.vec3_dot_product + theorem matrix.vec3_eq Added src/linear_algebra/cross_product.lean + def cross.lie_ring + theorem cross_anticomm' + theorem cross_anticomm + theorem cross_apply + theorem cross_cross + theorem cross_dot_cross + def cross_product + theorem cross_self + theorem dot_cross_self + theorem dot_self_cross + theorem jacobi_cross + theorem leibniz_cross + theorem triple_product_eq_det + theorem triple_product_permutation 2022-01-13 12:25:20 799cdbb feat(data/nat/periodic): periodic functions for nat (#10888) Adds a lemma saying that the cardinality of an Ico of length `a` filtered over a periodic predicate of period `a` is the same as the cardinality of `range a` filtered over that predicate. ESTIMATED CHANGES Modified src/data/int/interval.lean + theorem int.image_Ico_mod Modified src/data/nat/interval.lean + theorem nat.image_Ico_mod + theorem nat.mod_inj_on_Ico + theorem nat.multiset_Ico_map_mod Added src/data/nat/periodic.lean + theorem function.periodic.map_mod_nat + theorem nat.filter_Ico_card_eq_of_periodic + theorem nat.filter_multiset_Ico_card_eq_of_periodic + theorem nat.periodic_coprime + theorem nat.periodic_gcd + theorem nat.periodic_mod 2022-01-13 12:25:18 6609204 feat(algebraic_geometry): Gluing presheafed spaces (#10269) ESTIMATED CHANGES Added src/algebraic_geometry/presheafed_space/gluing.lean + theorem algebraic_geometry.PresheafedSpace.coe_to_fun_eq + def algebraic_geometry.PresheafedSpace.glue_data.diagram_over_open + def algebraic_geometry.PresheafedSpace.glue_data.diagram_over_open_π + theorem algebraic_geometry.PresheafedSpace.glue_data.f_inv_app_f_app + def algebraic_geometry.PresheafedSpace.glue_data.opens_image_preimage_map + theorem algebraic_geometry.PresheafedSpace.glue_data.opens_image_preimage_map_app' + theorem algebraic_geometry.PresheafedSpace.glue_data.opens_image_preimage_map_app + theorem algebraic_geometry.PresheafedSpace.glue_data.opens_image_preimage_map_app_assoc + theorem algebraic_geometry.PresheafedSpace.glue_data.pullback_base + theorem algebraic_geometry.PresheafedSpace.glue_data.snd_inv_app_t_app' + theorem algebraic_geometry.PresheafedSpace.glue_data.snd_inv_app_t_app + def algebraic_geometry.PresheafedSpace.glue_data.to_Top_glue_data + theorem algebraic_geometry.PresheafedSpace.glue_data.ι_image_preimage_eq + def algebraic_geometry.PresheafedSpace.glue_data.ι_inv_app + theorem algebraic_geometry.PresheafedSpace.glue_data.ι_inv_app_π + def algebraic_geometry.PresheafedSpace.glue_data.ι_inv_app_π_app + def algebraic_geometry.PresheafedSpace.glue_data.ι_inv_app_π_eq_map + theorem algebraic_geometry.PresheafedSpace.glue_data.ι_open_embedding + theorem algebraic_geometry.PresheafedSpace.glue_data.π_ι_inv_app_eq_id + theorem algebraic_geometry.PresheafedSpace.glue_data.π_ι_inv_app_π + structure algebraic_geometry.PresheafedSpace.glue_data Modified src/topology/category/Top/limits.lean + theorem Top.pullback_fst_image_snd_preimage + theorem Top.pullback_snd_image_fst_preimage 2022-01-13 07:08:20 e6db245 chore(ring_theory/roots_of_unity): change argument order (#11415) this is for easier dot notation in situations such as `refine`. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.map_of_injective +/- theorem is_primitive_root.of_map_of_injective 2022-01-13 07:08:19 0c84456 feat(order,data/set/intervals): lemmas about `is_bot`/`is_top` (#11412) * add `is_top.Iic_eq`, `is_bot.Ici_eq`, `is_top.Ioi_eq`, `is_bot.Iio_eq`, `set.Ioi_top`, `set.Iio_bot`; * rename `set.Ici_singleton_of_top` and `set.Iic_singleton_of_bot` to `is_top.Ici_eq` and `is_bot.Iic_eq`; * add `is_top_or_exists_gt`, `is_bot_or_exists_lt`, `is_top_top`, and `is_bot_bot`; * add `is_top.to_dual` and `is_bot.to_dual`; * add `set.empty_ssubset`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.empty_ssubset Modified src/data/set/intervals/basic.lean + theorem is_bot.Ici_eq + theorem is_bot.Iic_eq + theorem is_bot.Iio_eq + theorem is_top.Ici_eq + theorem is_top.Iic_eq + theorem is_top.Ioi_eq +/- theorem set.Ici_bot - theorem set.Ici_singleton_of_top +/- theorem set.Iic_inter_Ioc_of_le - theorem set.Iic_singleton_of_bot +/- theorem set.Iic_top + theorem set.Iio_bot + theorem set.Ioi_top Modified src/order/basic.lean + theorem is_bot_or_exists_lt + theorem is_top_or_exists_gt Modified src/order/bounded_order.lean + theorem is_bot_bot + theorem is_top_top Modified src/order/order_dual.lean + theorem is_bot.to_dual + theorem is_top.to_dual 2022-01-13 07:08:17 3f1ac6c doc(number_theory/cyclotomic/basic): fix docstrings (#11411) ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean 2022-01-13 07:08:16 e839c9a feat(combinatorics/configuration): Cardinality results for projective plane. (#11406) This PR proves several cardinality results for projective planes (e.g., number of points = number of lines, number of points on given line = number of lines on given point). It looks like the `exists_config` (whose sole purpose is to rule out [the 7th example here](https://en.wikipedia.org/wiki/Projective_plane#Degenerate_planes)) can be weakened slightly. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.projective_plane.card_points_eq_card_lines + theorem configuration.projective_plane.line_count_eq_line_count + theorem configuration.projective_plane.line_count_eq_point_count + theorem configuration.projective_plane.point_count_eq_point_count 2022-01-13 06:20:13 12b6b99 refactor(linear_algebra/affine_space): move def of `slope` to a new file (#11361) Also add a few trivial lemmas. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/ordered.lean - theorem eq_of_slope_eq_zero - theorem line_map_slope_line_map_slope_line_map - theorem line_map_slope_slope_sub_div_sub - def slope - theorem slope_comm - theorem slope_def_field - theorem slope_same - theorem sub_div_sub_smul_slope_add_sub_div_sub_smul_slope Added src/linear_algebra/affine_space/slope.lean + theorem eq_of_slope_eq_zero + theorem line_map_slope_line_map_slope_line_map + theorem line_map_slope_slope_sub_div_sub + def slope + theorem slope_comm + theorem slope_def_field + theorem slope_def_module + theorem slope_same + theorem slope_sub_smul + theorem slope_vadd_const + theorem sub_div_sub_smul_slope_add_sub_div_sub_smul_slope + theorem sub_smul_slope + theorem sub_smul_slope_vadd 2022-01-13 01:42:28 3fed75a doc(data/pfun): fix a typo (#11410) ESTIMATED CHANGES Modified src/data/pfun.lean 2022-01-13 01:42:26 dfad4c6 fix(data/equiv/set): Fix doc comment syntax (#11409) ESTIMATED CHANGES Modified src/data/equiv/set.lean 2022-01-13 01:42:25 1f370bb feat(linear_algebra/pi): linear_map.vec_cons and friends (#11343) The idea of these definitions is to be able to define a map as `x ↦ ![f₁ x, f₂ x, f₃ x]`, where `f₁ f₂ f₃` are already linear maps, as `f₁.vec_cons $ f₂.vec_cons $ f₃.vec_cons $ vec_empty`. This adds the same thing for bilinear maps as `x y ↦ ![f₁ x y, f₂ x y, f₃ x y]`. While the same thing could be achieved using `linear_map.pi ![f₁, f₂, f₃]`, this is not definitionally equal to the result using `linear_map.vec_cons`, as `fin.cases` and function application do not commute definitionally. Versions for when `f₁ f₂ f₃` are bilinear maps are also provided. ESTIMATED CHANGES Modified src/linear_algebra/pi.lean + def linear_map.vec_cons + theorem linear_map.vec_cons_apply + def linear_map.vec_cons₂ + def linear_map.vec_empty + theorem linear_map.vec_empty_apply + def linear_map.vec_empty₂ 2022-01-12 22:49:45 e6fab1d refactor(order/directed): Make `is_directed` a Prop mixin (#11238) This turns `directed_order` into a Prop-valued mixin `is_directed`. The design follows the unbundled relation classes found in core Lean. The current design created obscure problems when showing that a `semilattice_sup` is directed and we couldn't even state that `semilattice_inf` is codirected. Further, it was kind of already used as a mixin, because there was no point inserting it in the hierarchy. ESTIMATED CHANGES Modified src/algebra/category/Module/limits.lean +/- def Module.direct_limit_is_colimit Modified src/algebra/direct_limit.lean +/- theorem add_comm_group.direct_limit.lift_unique +/- theorem add_comm_group.direct_limit.of.zero_exact +/- theorem module.direct_limit.exists_of +/- theorem module.direct_limit.lift_unique +/- theorem module.direct_limit.of.zero_exact +/- theorem module.direct_limit.of.zero_exact_aux +/- theorem ring.direct_limit.exists_of +/- theorem ring.direct_limit.induction_on +/- theorem ring.direct_limit.lift_unique +/- theorem ring.direct_limit.of.zero_exact +/- theorem ring.direct_limit.of.zero_exact_aux +/- theorem ring.direct_limit.of_injective +/- theorem ring.direct_limit.polynomial.exists_of Modified src/analysis/convex/caratheodory.lean Modified src/analysis/convex/quasiconvex.lean +/- theorem quasiconcave_on.convex +/- theorem quasiconvex_on.convex Modified src/category_theory/filtered.lean Modified src/combinatorics/hall/basic.lean - def hall_finset_directed_order Modified src/data/finset/order.lean +/- theorem finset.exists_le Modified src/data/real/nnreal.lean Modified src/group_theory/congruence.lean Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.simple_func.exists_forall_le Modified src/order/directed.lean + theorem directed_id + theorem directed_id_iff_is_directed + theorem directed_of + theorem exists_ge_ge + theorem exists_le_le + theorem is_directed_mono Modified src/order/rel_classes.lean Modified src/ring_theory/valuation/integral.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/category/Top/limits.lean 2022-01-12 20:51:38 2a38097 feat(combinatorics/configuration): Define projective planes (#11390) This PR defines abstract projective planes and their duals. More will be PRed later. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2022-01-12 17:52:39 5e48b21 feat(number_theory/cyclotomic/basic): add cyclotomic_field and cyclotomic_ring (#11383) We add `cyclotomic_field` and `cyclotomic_ring`, that provide an explicit cyclotomic extension of a given field/ring. From flt-regular ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean + def cyclotomic_field.algebra_base + def cyclotomic_field + theorem cyclotomic_ring.adjoin_algebra_injective + def cyclotomic_ring.algebra_base + theorem cyclotomic_ring.algebra_base_injective + def cyclotomic_ring Modified src/ring_theory/localization.lean 2022-01-12 17:52:38 fa9d2bf feat(data/mv_polynomial/variables): add mv_polynomial.total_deg_finset_sum (#11375) Total degree of a sum of mv_polynomials is less than or equal to the maximum of all their degrees. ESTIMATED CHANGES Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.total_degree_finset_sum 2022-01-12 17:52:37 258686f fix(order/complete_lattice): fix diamond in sup vs max and min vs inf (#11309) `complete_linear_order` has separate `max` and `sup` fields. There is no need to have both, so this removes one of them by telling the structure compiler to merge the two fields. The same is true of `inf` and `min`. As well as diamonds being possible in the abstract case, a handful of concrete example of this diamond existed. `linear_order` instances with default-populated fields were usually to blame. ESTIMATED CHANGES Modified src/algebra/tropical/big_operators.lean Modified src/data/nat/enat.lean - theorem enat.inf_eq_min - theorem enat.sup_eq_max Modified src/data/nat/lattice.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.add_top +/- theorem ennreal.top_add Modified src/order/bounded_order.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/lattice.lean + theorem inf_eq_min_default + theorem sup_eq_max_default 2022-01-12 16:25:20 975031d feat(data/nat/factorization): add lemma `factorization_prod` (#11395) For any `p : ℕ` and any function `g : α → ℕ` that's non-zero on `S : finset α`, the power of `p` in `S.prod g` equals the sum over `x ∈ S` of the powers of `p` in `g x`. Generalises `factorization_mul`, which is the special case where `S.card = 2` and `g = id`. ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.factorization_prod 2022-01-12 16:25:17 67593dc fix(tactic/ring_exp): fix normalization proof of unchanged subexpressions (#11394) When trying to simplify a goal (instead of proving equalities), `ring_exp` will rewrite subexpressions to a normal form, then simplify this normal form by removing extraneous `+ 0`s and `* 1`s. Both steps return a new expression and a proof that the *step*'s input expression equals the output expression. In some cases where the normal form and simplified form coincide, `ex.simplify` would instead output a proof that *ring_exp*'s input expression equals the output expression, so we'd get a type error in trying to compose a proof that `a = b` with a proof that `a = b`. This PR fixes that bug by returning instead a proof that `b = b`, as expected. ESTIMATED CHANGES Modified src/tactic/ring_exp.lean Modified test/ring_exp.lean 2022-01-12 13:36:56 aece00a feat(data/sigma/interval): A disjoint sum of locally finite orders is locally finite (#10929) This provides `locally_finite_order (Σ i, α i)` in a new file `data.sigma.interval`. This also makes `<` a primitive on `Σ i, α i`. ESTIMATED CHANGES Added src/data/sigma/interval.lean + theorem sigma.Icc_mk_mk + theorem sigma.Ico_mk_mk + theorem sigma.Ioc_mk_mk + theorem sigma.Ioo_mk_mk + theorem sigma.card_Icc + theorem sigma.card_Ico + theorem sigma.card_Ioc + theorem sigma.card_Ioo Modified src/data/sigma/order.lean + theorem sigma.le_def + inductive sigma.lt + theorem sigma.lt_def + theorem sigma.mk_le_mk_iff + theorem sigma.mk_lt_mk_iff Modified src/order/locally_finite.lean 2022-01-12 11:08:51 e8eb7d9 feat(order/cover): `f a` covers `f b` iff `a` covers `b` (#11392) ... for order isomorphisms, and also weaker statements. ESTIMATED CHANGES Modified src/order/cover.lean + theorem apply_covers_apply_iff + theorem covers.image + theorem covers.of_image + theorem densely_ordered_iff_forall_not_covers + theorem of_dual_covers_of_dual_iff 2022-01-12 10:06:13 912c47d feat(topology/algebra/continuous_monoid_hom): New file (#11304) This PR defines continuous monoid homs. ESTIMATED CHANGES Added src/topology/algebra/continuous_monoid_hom.lean + structure continuous_add_monoid_hom + def continuous_monoid_hom.comp + def continuous_monoid_hom.coprod + def continuous_monoid_hom.diag + theorem continuous_monoid_hom.ext + def continuous_monoid_hom.fst + def continuous_monoid_hom.id + def continuous_monoid_hom.inl + def continuous_monoid_hom.inr + def continuous_monoid_hom.inv + def continuous_monoid_hom.mk' + def continuous_monoid_hom.mul + def continuous_monoid_hom.one + def continuous_monoid_hom.prod + def continuous_monoid_hom.prod_map + def continuous_monoid_hom.snd + def continuous_monoid_hom.swap + structure continuous_monoid_hom 2022-01-12 07:31:06 c1f3f1a feat(analysis/complex/basic): determinant of `conj_lie` (#11389) Add lemmas giving the determinant of `conj_lie`, as a linear map and as a linear equiv, deduced from the corresponding lemmas for `conj_ae` which is used to define `conj_lie`. This completes the basic lemmas about determinants of linear isometries of `ℂ` (which can thus be used to talk about how those isometries affect orientations), since we also have `linear_isometry_complex` describing all such isometries in terms of `rotation` and `conj_lie`. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.det_conj_lie + theorem complex.linear_equiv_det_conj_lie 2022-01-12 07:31:04 72c86c3 chore(algebra/ring/basic): generalize `is_domain.to_cancel_monoid_with_zero` to `no_zero_divisors` (#11387) This generalization doesn't work for typeclass search as `cancel_monoid_with_zero` implies `no_zero_divisors` which would form a loop, but it can be useful for a `letI` in another proof. Independent of whether this turns out to be useful, it's nice to show that nontriviality doesn't affect the fact that rings with no zero divisors are cancellative. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + def no_zero_divisors.to_cancel_monoid_with_zero 2022-01-12 07:31:03 cb1b6d9 feat(algebra/order/floor): adds some missing floor API (#11336) ESTIMATED CHANGES Modified src/algebra/order/floor.lean +/- theorem int.ceil_to_nat +/- theorem int.floor_to_nat + theorem nat.cast_ceil_eq_cast_int_ceil + theorem nat.cast_ceil_eq_int_ceil + theorem nat.cast_floor_eq_cast_int_floor + theorem nat.cast_floor_eq_int_floor + theorem nat.floor_le_of_le 2022-01-12 07:31:02 bfe9515 feat(data/multiset/basic): add map_count_true_eq_filter_card (#11306) Add a lemma about counting over a map. Spun off of #10888. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.count_eq_card_filter_eq + theorem multiset.map_count_true_eq_filter_card 2022-01-12 07:31:00 9fd03e1 chore(order/lexicographic): cleanup (#11299) Changes include: * factoring out `prod.lex.trans` from the proof of `le_trans` in `prod.lex.has_le`, and similarly for `antisymm` and `is_total` * adding some missing `to_lex` annotations in the `prod.lex.{le,lt}_def` lemmas * avoiding reproving decidability of `prod.lex` * replacing some proofs with pattern matching to avoid getting type-incorrect goals where `prod.lex.has_le` appears comparing terms that are not of type `lex`. ESTIMATED CHANGES Modified src/data/prod.lean + theorem prod.lex.refl_left + theorem prod.lex.refl_right + theorem prod.lex.trans Modified src/order/lexicographic.lean +/- theorem prod.lex.le_iff +/- theorem prod.lex.lt_iff 2022-01-12 07:30:59 deac58a feat(topology/uniform_space/compact_convergence): when the domain is locally compact, compact convergence is just locally uniform convergence (#11292) Also, locally uniform convergence is just uniform convergence when the domain is compact. ESTIMATED CHANGES Modified src/topology/uniform_space/compact_convergence.lean +/- theorem continuous_map.tendsto_iff_forall_compact_tendsto_uniformly_on + theorem continuous_map.tendsto_iff_tendsto_locally_uniformly +/- theorem continuous_map.tendsto_iff_tendsto_uniformly + theorem continuous_map.tendsto_locally_uniformly_of_tendsto + theorem continuous_map.tendsto_of_tendsto_locally_uniformly Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_locally_uniformly_iff_tendsto_uniformly_of_compact_space + theorem tendsto_locally_uniformly_on_iff_tendsto_locally_uniformly_comp_coe + theorem tendsto_locally_uniformly_on_iff_tendsto_uniformly_on_of_compact + theorem tendsto_uniformly_on_iff_tendsto_uniformly_comp_coe 2022-01-12 07:30:58 2099725 feat(topology/homotopy/product): Product of homotopic paths (#11153) Specialize homotopy products to paths and prove some theorems about the product of paths. ESTIMATED CHANGES Modified src/topology/homotopy/fundamental_groupoid.lean Modified src/topology/homotopy/path.lean + theorem path.homotopic.comp_lift + theorem path.homotopic.map_lift + def path.homotopic.quotient.comp + def path.homotopic.quotient.map_fn Modified src/topology/homotopy/product.lean + theorem path.homotopic.comp_pi_eq_pi_comp + theorem path.homotopic.comp_prod_eq_prod_comp + def path.homotopic.pi + def path.homotopic.pi_homotopy + theorem path.homotopic.pi_lift + theorem path.homotopic.pi_proj + def path.homotopic.prod + def path.homotopic.prod_homotopy + theorem path.homotopic.prod_lift + theorem path.homotopic.prod_proj_left_proj_right + def path.homotopic.proj + def path.homotopic.proj_left + theorem path.homotopic.proj_left_prod + theorem path.homotopic.proj_pi + def path.homotopic.proj_right + theorem path.homotopic.proj_right_prod Modified src/topology/path_connected.lean + theorem path.pi_coe_fn + theorem path.prod_coe_fn + theorem path.trans_pi_eq_pi_trans + theorem path.trans_prod_eq_prod_trans 2022-01-12 05:04:58 15b5e24 feat(data/polynomial/taylor): taylor's formula (#11139) Via proofs about `hasse_deriv`. Added some monomial API too. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.sup_ite Modified src/data/nat/with_bot.lean + theorem nat.with_bot.lt_one_iff_le_zero Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_C_lt + theorem polynomial.leading_coeff_pow_X_add_C Modified src/data/polynomial/hasse_deriv.lean + theorem polynomial.hasse_deriv_eq_zero_of_lt_nat_degree + theorem polynomial.nat_degree_hasse_deriv + theorem polynomial.nat_degree_hasse_deriv_le Modified src/data/polynomial/taylor.lean + theorem polynomial.nat_degree_taylor + theorem polynomial.sum_taylor_eq + theorem polynomial.taylor_monomial + theorem polynomial.taylor_taylor + theorem polynomial.taylor_zero' + theorem polynomial.taylor_zero 2022-01-12 04:02:53 af074c8 feat(analysis/normed_space/lp_space): API for `lp.single` (#11307) Definition and basic properties for `lp.single`, an element of `lp` space supported at one point. ESTIMATED CHANGES Modified src/analysis/normed_space/lp_space.lean + theorem lp.coe_fn_sum 2022-01-12 02:31:11 cdd44cd refactor(topology/algebra/uniform_group): Use `to_additive` (#11366) This PR replace the definition `def topological_add_group.to_uniform_space : uniform_space G :=` with the definition `@[to_additive] def topological_group.to_uniform_space : uniform_space G :=` ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean - def topological_add_group.to_uniform_space + def topological_group.to_uniform_space 2022-01-12 00:08:22 89f4786 feat(analysis/special_functions/pow): norm_num extension for rpow (#11382) Fixes #11374 ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem zpow_neg_coe_of_pos Modified src/algebra/star/chsh.lean Modified src/analysis/special_functions/pow.lean + theorem norm_num.cpow_neg + theorem norm_num.cpow_pos + theorem norm_num.ennrpow_neg + theorem norm_num.ennrpow_pos + theorem norm_num.nnrpow_neg + theorem norm_num.nnrpow_pos + theorem norm_num.rpow_neg + theorem norm_num.rpow_pos Modified src/tactic/norm_num.lean + theorem norm_num.zpow_neg + theorem norm_num.zpow_pos Modified test/norm_num.lean 2022-01-12 00:08:21 647598b feat(data/nat/factorization): add lemma `factorization_le_iff_dvd` (#11377) For non-zero `d n : ℕ`, `d.factorization ≤ n.factorization ↔ d ∣ n` ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.factorization_le_iff_dvd 2022-01-11 20:49:16 a5f7909 fix(algebra/tropical/basic): provide explicit min and max (#11380) This also renames `tropical.add` to `tropical.has_add`, since this matches how we normally do this, and it makes unfolding easier. Without this change, we have a diamond where `linear_order.min` is not defeq to `lattice.inf`. ESTIMATED CHANGES Modified src/algebra/tropical/basic.lean + theorem tropical.inf_eq_add + theorem tropical.min_eq_add + theorem tropical.trop_max_def + theorem tropical.trop_sup_def + theorem tropical.untrop_max + theorem tropical.untrop_sup 2022-01-11 20:49:15 73847ff feat(algebra/indicator_function): add primed version for `mul_indicator_mul` and `indicator_sub` (#11379) ESTIMATED CHANGES Modified src/algebra/indicator_function.lean - theorem set.indicator_sub + theorem set.mul_indicator_div' + theorem set.mul_indicator_div + theorem set.mul_indicator_mul' 2022-01-11 20:49:14 d1c4961 feat(data/real/ennreal): add ennreal lemma for `a / 3 + a / 3 + a / 3 = a` (#11378) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.add_thirds + theorem ennreal.inv_three_add_inv_three 2022-01-11 20:49:13 57a8933 feat(group_theory/free_group): promote free_group_congr to a mul_equiv (#11373) Also some various golfs and cleanups ESTIMATED CHANGES Modified src/group_theory/free_group.lean +/- def free_group.free_group_congr + theorem free_group.free_group_congr_refl + theorem free_group.free_group_congr_symm + theorem free_group.free_group_congr_trans - def free_group.map.aux +/- theorem free_group.map.comp +/- theorem free_group.map.id' +/- theorem free_group.map.id - def free_group.map.to_fun +/- def free_group.map + theorem free_group.quot_map_mk 2022-01-11 20:49:12 8db96a8 feat(combinatorics/double_counting): Double-counting the edges of a bipartite graph (#11372) This proves a classic of double-counting arguments: If each element of the `|α|` elements on the left is connected to at least `m` elements on the right and each of the `|β|` elements on the right is connected to at most `n` elements on the left, then `|α| * m ≤ |β| * n` because the LHS is less than the number of edges which is less than the RHS. This is put in a new file `combinatorics.double_counting` with the idea that we could gather double counting arguments here, much as is done with `combinatorics.pigeonhole`. ESTIMATED CHANGES Added src/combinatorics/double_counting.lean + def finset.bipartite_above + theorem finset.bipartite_above_swap + def finset.bipartite_below + theorem finset.bipartite_below_swap + theorem finset.card_mul_eq_card_mul + theorem finset.card_mul_le_card_mul' + theorem finset.card_mul_le_card_mul + theorem finset.mem_bipartite_above + theorem finset.mem_bipartite_below + theorem finset.sum_card_bipartite_above_eq_sum_card_bipartite_below 2022-01-11 20:49:11 93e7741 feat(ring_theory/witt_vector): Witt vectors over a domain are a domain (#11346) ESTIMATED CHANGES Modified src/ring_theory/witt_vector/basic.lean + def witt_vector.constant_coeff Modified src/ring_theory/witt_vector/defs.lean + theorem witt_vector.add_coeff_zero + theorem witt_vector.mul_coeff_zero Added src/ring_theory/witt_vector/domain.lean + theorem witt_vector.eq_iterate_verschiebung + def witt_vector.shift + theorem witt_vector.shift_coeff + theorem witt_vector.verschiebung_nonzero + theorem witt_vector.verschiebung_shift Modified src/ring_theory/witt_vector/identities.lean + theorem witt_vector.coeff_p_pow_eq_zero + theorem witt_vector.iterate_frobenius_coeff + theorem witt_vector.iterate_verschiebung_coeff + theorem witt_vector.iterate_verschiebung_mul + theorem witt_vector.iterate_verschiebung_mul_coeff + theorem witt_vector.iterate_verschiebung_mul_left + theorem witt_vector.mul_char_p_coeff_succ + theorem witt_vector.mul_char_p_coeff_zero + theorem witt_vector.verschiebung_frobenius + theorem witt_vector.verschiebung_frobenius_comm 2022-01-11 20:49:09 83b0355 feat(analysis/complex/isometry): `rotation` matrix representation and determinant (#11339) Add lemmas giving the matrix representation of `rotation` (with respect to `basis_one_I`), and its determinant (both as a linear map and as a linear equiv). This is preparation for doing things about how isometries affect orientations. ESTIMATED CHANGES Modified src/analysis/complex/isometry.lean + theorem det_rotation + theorem linear_equiv_det_rotation + theorem to_matrix_rotation Modified src/linear_algebra/general_linear_group.lean Modified src/number_theory/modular.lean 2022-01-11 20:49:08 e4a41e6 feat(data/complex/module,data/complex/determinant): `conj_ae` matrix representation and determinant (#11337) Add lemmas giving the matrix representation of `conj_ae` (with respect to `basis_one_I`), and its determinant (both as a linear map and as a linear equiv). This is preparation for doing things about how isometries affect orientations (so it's actually `conj_lie` I'm interested in, but `conj_lie` is defined in terms of `conj_ae` so proving things first for `conj_ae` seems appropriate). ESTIMATED CHANGES Added src/data/complex/determinant.lean + theorem complex.det_conj_ae + theorem complex.linear_equiv_det_conj_ae Modified src/data/complex/module.lean + theorem complex.to_matrix_conj_ae 2022-01-11 20:49:07 aa7a439 feat(algebra/*): injective hom into kernel `map_eq_*_iff` (#11275) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/algebra/group/hom.lean + theorem map_eq_one_iff Modified src/linear_algebra/exterior_algebra.lean Modified src/linear_algebra/tensor_algebra.lean 2022-01-11 20:49:06 94fd004 feat(order/minimal): Subset of minimal/maximal elements (#11268) This defines `minimals r s`/`maximals r s` the minimal/maximal elements of `s` with respect to relation `r`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.sep_empty Modified src/order/antichain.lean + theorem is_antichain.eq_of_related' - theorem is_antichain.mk_is_antichain - theorem is_antichain.mk_max - theorem is_antichain.mk_subset Modified src/order/basic.lean + theorem ge_antisymm Added src/order/minimal.lean + theorem inter_maximals_subset + theorem inter_minimals_subset + theorem is_antichain.max_maximals + theorem is_antichain.max_minimals + theorem is_antichain.maximals_eq + theorem is_antichain.minimals_eq + theorem is_greatest.maximals_eq + theorem is_greatest.mem_maximals + theorem is_least.mem_minimals + theorem is_least.minimals_eq + def maximals + theorem maximals_antichain + theorem maximals_empty + theorem maximals_eq_minimals + theorem maximals_idem + theorem maximals_inter_subset + theorem maximals_mono + theorem maximals_singleton + theorem maximals_subset + theorem maximals_swap + theorem maximals_union + def minimals + theorem minimals_antichain + theorem minimals_empty + theorem minimals_idem + theorem minimals_inter_subset + theorem minimals_mono + theorem minimals_singleton + theorem minimals_subset + theorem minimals_swap + theorem minimals_union + theorem set.subsingleton.maximals_eq + theorem set.subsingleton.minimals_eq Modified src/order/rel_classes.lean + theorem comm + theorem comm_of 2022-01-11 20:49:04 490847e feat(data/polynomial/degree/lemmas): add induction principle for non-constant polynomials (#8463) This PR introduces an induction principle to prove that a property holds for non-constant polynomials. It suffices to check that the property holds for * the sum of a constant polynomial and any polynomial for which the property holds; * the sum of any two polynomials for which the property holds; * for non-constant monomials. I plan to use this to show that polynomials with coefficients in `ℕ` are monotone. ESTIMATED CHANGES Modified src/data/polynomial/inductions.lean + theorem polynomial.nat_degree_ne_zero_induction_on 2022-01-11 17:36:45 b710771 chore(*): update to 3.38.0c (#11371) ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified leanpkg.toml Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/pointwise.lean Modified src/analysis/analytic/basic.lean Modified src/category_theory/limits/shapes/wide_pullbacks.lean Modified src/combinatorics/hall/finite.lean Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.mem_neighbor_set' Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean Modified src/data/dfinsupp/basic.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/set.lean Modified src/data/finset/basic.lean +/- theorem finset.piecewise_coe Modified src/data/finset/fold.lean Modified src/data/finsupp/multiset.lean Modified src/data/fintype/basic.lean + theorem fintype.card_congr' + theorem set.to_finset_congr Modified src/data/fintype/fin.lean Modified src/data/list/basic.lean + theorem list.filter_congr' - theorem list.filter_congr + theorem list.map_id'' Modified src/data/list/count.lean Modified src/data/list/intervals.lean Modified src/data/list/lattice.lean Modified src/data/list/nodup.lean Modified src/data/list/perm.lean Modified src/data/list/permutation.lean Modified src/data/matrix/block.lean Modified src/data/multiset/basic.lean + theorem multiset.map_comp_cons +/- theorem multiset.map_congr Modified src/data/multiset/nodup.lean Modified src/data/multiset/pi.lean + theorem multiset.pi.cons_ext Modified src/data/multiset/powerset.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/rename.lean Modified src/data/nat/count.lean Modified src/data/nat/enat.lean Modified src/data/option/basic.lean +/- theorem option.guard_eq_some' Modified src/data/pequiv.lean Modified src/data/pi.lean Modified src/data/polynomial/basic.lean Modified src/data/polynomial/derivative.lean Modified src/data/semiquot.lean Modified src/data/set/finite.lean Modified src/data/sym/basic.lean Modified src/data/vector/basic.lean Modified src/geometry/manifold/instances/real.lean Modified src/group_theory/commuting_probability.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/affine_space/basis.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/logic/function/basic.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/probability_mass_function/constructions.lean Modified src/order/filter/lift.lean Modified src/ring_theory/polynomial/symmetric.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/tactic/cache.lean Modified src/tactic/split_ifs.lean Modified src/topology/algebra/uniform_field.lean Modified src/topology/bases.lean Modified src/topology/homotopy/fundamental_groupoid.lean Modified src/topology/metric_space/basic.lean Modified src/topology/path_connected.lean 2022-01-11 13:55:35 b8d2aff refactor(ring_theory/discriminant): refactor discr_not_zero_of_linear_independent (#11370) `(hcard : fintype.card ι = finite_dimensional.finrank K L) (hli : linear_independent K b)` is better expressed as `b : basis ι K L`. ESTIMATED CHANGES Modified src/ring_theory/discriminant.lean + theorem algebra.discr_not_zero_of_basis - theorem algebra.discr_not_zero_of_linear_independent 2022-01-11 13:55:34 380e28e chore(set_theory/ordinal_arithmetic): Golfed some proofs (#11369) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.blsub_le_enum_ord +/- def ordinal.enum_ord.order_iso +/- theorem ordinal.enum_ord.strict_mono +/- theorem ordinal.enum_ord.surjective +/- def ordinal.enum_ord +/- theorem ordinal.enum_ord_mem +/- theorem ordinal.enum_ord_range +/- theorem ordinal.eq_enum_ord 2022-01-11 13:55:33 2963d7c feat(analysis/asymptotics/asymptotics): add `is_bounded_under.is_O_const` (#11367) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem filter.is_bounded_under.is_O_const 2022-01-11 13:55:32 8f5303a refactor(topology/connected): drop `local attribute [instance] connected_component_setoid` (#11365) Add a coercion from `X` to `connected_components X` instead. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.disjoint_or_nonempty_inter +/- theorem set.not_disjoint_iff_nonempty_inter Modified src/topology/category/Profinite/default.lean Modified src/topology/connected.lean - theorem connected_component_nrel_iff - theorem connected_component_rel_iff + theorem connected_components.coe_eq_coe' + theorem connected_components.coe_eq_coe + theorem connected_components.coe_ne_coe + theorem connected_components.continuous_coe + theorem connected_components.quotient_map_coe + theorem connected_components.range_coe + theorem connected_components.surjective_coe +/- theorem connected_components_lift_unique' +/- theorem connected_components_preimage_singleton +/- def continuous.connected_components_lift + theorem continuous.connected_components_lift_apply_coe + theorem continuous.connected_components_lift_comp_coe +/- theorem continuous.connected_components_lift_continuous - theorem continuous.connected_components_lift_factors +/- theorem continuous.connected_components_lift_unique + theorem continuous.image_eq_of_connected_component_eq - theorem continuous.image_eq_of_equiv + theorem disjoint_or_subset_of_clopen + theorem is_clopen.bUnion_connected_component_eq + theorem is_clopen.connected_component_subset - theorem is_clopen.eq_union_connected_components + theorem is_preconnected.subset_clopen +/- theorem is_preconnected_iff_subset_of_disjoint_closed + theorem quotient_map.image_connected_component + theorem quotient_map.preimage_connected_component - theorem subset_or_disjoint_of_clopen Modified src/topology/constructions.lean + theorem continuous_quotient_lift_on' Modified src/topology/separation.lean +/- theorem connected_component_eq_Inter_clopen Modified src/topology/subset_properties.lean 2022-01-11 13:55:30 c1c0fa4 feat(analysis/calculus/{f,}deriv): add some `iff` lemmas (#11363) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_at_deriv_iff + theorem has_deriv_within_at_deriv_within_iff Modified src/analysis/calculus/fderiv.lean + theorem filter.eventually_eq.differentiable_at_iff + theorem filter.eventually_eq.differentiable_within_at_iff + theorem filter.eventually_eq.differentiable_within_at_iff_of_mem + theorem filter.eventually_eq.has_fderiv_at_iff + theorem filter.eventually_eq.has_fderiv_within_at_iff + theorem filter.eventually_eq.has_fderiv_within_at_iff_of_mem 2022-01-11 13:55:28 02181c7 feat(algebra/group/conj): `conj_classes.map` preserves surjectivity (#11362) If `f : α →* β` is surjective, then so is `conj_classes.map f : conj_classes α → conj_classes β`. ESTIMATED CHANGES Modified src/algebra/group/conj.lean + theorem conj_classes.map_surjective 2022-01-11 13:55:13 c94a17c feat(topology): a few simple lemmas (#11360) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem eventually_mem_nhds Modified src/topology/continuous_on.lean + theorem continuous_at_update_same + theorem continuous_within_at_compl_self + theorem continuous_within_at_iff_continuous_at +/- theorem continuous_within_at_update_same + theorem insert_mem_nhds_iff Modified src/topology/separation.lean + theorem continuous_at_update_of_ne + theorem ne.nhds_within_diff_singleton 2022-01-11 13:55:12 56d6a91 chore(order/basic): Rename `no_bot_order`/`no_top_order` to `no_min_order`/`no_max_order` (#11357) because that's really what they are. `∀ a, ∃ b, b < a` precisely means that every `a` is not a minimal element. The correct statement for an order without bottom elements is `∀ a, ∃ b, ¬ a ≤ b`, which is a weaker condition in general. Both conditions are equivalent over a linear order. Renames * `no_bot_order` -> `no_min_order` * `no_top_order` -> `no_max_order` * `no_bot` -> `exists_lt` * `no_top` -> `exists_gt` ESTIMATED CHANGES Modified src/algebra/order/group.lean Modified src/algebra/order/nonneg.lean Modified src/algebra/order/ring.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/basic.lean +/- theorem normed_group.tendsto_at_top' Modified src/data/psigma/order.lean Modified src/data/real/nnreal.lean Modified src/data/set/intervals/basic.lean +/- theorem set.nonempty_Iio +/- theorem set.nonempty_Ioi Modified src/data/set/intervals/infinite.lean Modified src/data/sigma/order.lean Modified src/data/sum/order.lean - theorem sum.no_bot_order_iff + theorem sum.no_max_order_iff + theorem sum.no_min_order_iff - theorem sum.no_top_order_iff Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/integral/integral_eq_improper.lean +/- theorem measure_theory.ae_cover_Ico +/- theorem measure_theory.ae_cover_Iio +/- theorem measure_theory.ae_cover_Ioc +/- theorem measure_theory.ae_cover_Ioi +/- theorem measure_theory.ae_cover_Ioo +/- theorem measure_theory.integrable_of_interval_integral_norm_tendsto +/- theorem measure_theory.integrable_on_Iic_of_interval_integral_norm_tendsto +/- theorem measure_theory.interval_integral_tendsto_integral +/- theorem measure_theory.interval_integral_tendsto_integral_Iic Modified src/measure_theory/integral/interval_integral.lean Modified src/order/basic.lean + theorem exists_gt + theorem exists_lt - theorem no_bot - theorem no_top +/- theorem not_is_bot +/- theorem not_is_top Modified src/order/bounded_order.lean +/- theorem with_top.lt_iff_exists_coe_btwn Modified src/order/bounds.lean +/- theorem is_glb.nonempty +/- theorem is_lub.nonempty - theorem no_bot_order.lower_bounds_univ + theorem no_max_order.upper_bounds_univ + theorem no_min_order.lower_bounds_univ - theorem no_top_order.upper_bounds_univ +/- theorem not_bdd_above_univ +/- theorem not_bdd_below_univ Modified src/order/conditionally_complete_lattice.lean +/- theorem cInf_Ioi +/- theorem cSup_Iio Modified src/order/countable_dense_linear_order.lean +/- def order.partial_iso.defined_at_left +/- def order.partial_iso.defined_at_right +/- theorem order.partial_iso.exists_across +/- def order.partial_iso.fun_of_ideal +/- def order.partial_iso.inv_of_ideal Modified src/order/filter/at_top_bot.lean +/- theorem filter.Iio_mem_at_bot +/- theorem filter.Ioi_mem_at_top +/- theorem filter.at_top_basis_Ioi +/- theorem filter.eventually_gt_at_top +/- theorem filter.eventually_lt_at_bot +/- theorem filter.exists_lt_of_tendsto_at_bot +/- theorem filter.exists_lt_of_tendsto_at_top +/- theorem filter.frequently_at_bot' +/- theorem filter.frequently_at_top' +/- theorem filter.frequently_high_scores +/- theorem filter.frequently_low_scores +/- theorem filter.high_scores +/- theorem filter.low_scores +/- theorem filter.map_coe_Iio_at_bot +/- theorem filter.map_coe_Ioi_at_top +/- theorem filter.tendsto_comp_coe_Iio_at_bot +/- theorem filter.tendsto_comp_coe_Ioi_at_top +/- theorem filter.unbounded_of_tendsto_at_bot' +/- theorem filter.unbounded_of_tendsto_at_bot +/- theorem filter.unbounded_of_tendsto_at_top' +/- theorem filter.unbounded_of_tendsto_at_top Modified src/order/lattice_intervals.lean Modified src/order/liminf_limsup.lean +/- theorem filter.not_is_bounded_under_of_tendsto_at_bot +/- theorem filter.not_is_bounded_under_of_tendsto_at_top Modified src/order/locally_finite.lean Modified src/order/succ_pred.lean +/- theorem pred_succ +/- theorem succ_pred Modified src/set_theory/cardinal.lean Modified src/set_theory/ordinal.lean Modified src/topology/algebra/ordered/basic.lean +/- theorem closure_Iio +/- theorem closure_Ioi +/- theorem dense.exists_ge +/- theorem dense.exists_gt +/- theorem dense.exists_le +/- theorem dense.exists_lt +/- theorem disjoint_nhds_at_bot +/- theorem disjoint_nhds_at_top +/- theorem exists_seq_strict_anti_tendsto +/- theorem exists_seq_strict_mono_tendsto +/- theorem filter.eventually.exists_Ioo_subset +/- theorem filter.eventually.exists_gt +/- theorem filter.eventually.exists_lt +/- theorem frontier_Icc +/- theorem frontier_Ici +/- theorem frontier_Ico +/- theorem frontier_Iic +/- theorem frontier_Iio +/- theorem frontier_Ioc +/- theorem frontier_Ioi +/- theorem inf_nhds_at_bot +/- theorem inf_nhds_at_top +/- theorem interior_Icc +/- theorem interior_Ici +/- theorem interior_Ico +/- theorem interior_Iic +/- theorem interior_Ioc +/- theorem mem_nhds_iff_exists_Ioo_subset +/- theorem mem_nhds_within_Ici_iff_exists_Icc_subset' +/- theorem mem_nhds_within_Ici_iff_exists_Icc_subset +/- theorem mem_nhds_within_Ici_iff_exists_Ico_subset +/- theorem mem_nhds_within_Iic_iff_exists_Icc_subset' +/- theorem mem_nhds_within_Iic_iff_exists_Icc_subset +/- theorem mem_nhds_within_Iic_iff_exists_Ioc_subset +/- theorem mem_nhds_within_Iio_iff_exists_Ico_subset +/- theorem mem_nhds_within_Iio_iff_exists_Ioo_subset +/- theorem mem_nhds_within_Ioi_iff_exists_Ioc_subset +/- theorem mem_nhds_within_Ioi_iff_exists_Ioo_subset +/- theorem nhds_basis_Ioo +/- theorem nhds_basis_Ioo_pos +/- theorem nhds_basis_Ioo_pos_of_pos +/- theorem nhds_basis_abs_sub_lt +/- theorem nhds_basis_zero_abs_sub_lt +/- theorem nhds_within_Iio_ne_bot +/- theorem nhds_within_Iio_self_ne_bot +/- theorem nhds_within_Ioi_ne_bot +/- theorem nhds_within_Ioi_self_ne_bot +/- theorem not_tendsto_at_bot_of_tendsto_nhds +/- theorem not_tendsto_at_top_of_tendsto_nhds +/- theorem not_tendsto_nhds_of_tendsto_at_bot +/- theorem not_tendsto_nhds_of_tendsto_at_top Modified src/topology/algebra/ordered/monotone_convergence.lean Modified src/topology/instances/irrational.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean +/- theorem metric.tendsto_at_top' 2022-01-11 13:55:09 be4c5aa feat(scripts/lint_mathlib): implement github annotations for mathlib linters (#11345) Resolves the last part of #5863 This causes `lean --run lint_mathlib --github` to produce error messages understood by github actions, which will tag the lines causing linter failures with annotations in the files changed tab ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/lint_mathlib.lean Modified src/tactic/lint/frontend.lean + def escape_workflow_command 2022-01-11 13:55:08 e138d3b feat(algebra/big_operators/finprod): `finprod_eq_one_of_forall_eq_one` (#11335) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_eq_one_of_forall_eq_one + theorem finprod_mem_eq_one_of_forall_eq_one 2022-01-11 13:55:07 eb9c152 feat(algebra/order/field): lemmas relating `a / b` and `a` when `1 ≤ b` and `1 < b` (#11333) This PR is a collection of items that https://github.com/leanprover-community/mathlib/pull/7891 adds in and that aren't declared on `master` yet. Please let me know if I overlooked something. After merging it, https://github.com/leanprover-community/mathlib/pull/7891 can theoretically be closed. ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem div_le_self +/- theorem div_lt_div_of_lt_left + theorem div_lt_self 2022-01-11 13:55:05 2865d8c refactor(data/set/prod): add notation class for set-like product (#11300) This PR adds notation class `has_set_prod` for product of sets and subobjects. I also add an instance for `set`s. Later I want to migrate `finset`s and `sub*` product to this notation class. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/indicator_function.lean Modified src/algebra/pointwise.lean +/- theorem set.image_mul_prod Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/cauchy_integral.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/combination.lean Modified src/analysis/convex/star.lean Modified src/analysis/normed_space/units.lean Modified src/combinatorics/additive/salem_spencer.lean Modified src/data/equiv/fin.lean Modified src/data/equiv/local_equiv.lean Modified src/data/equiv/set.lean Modified src/data/finset/prod.lean Modified src/data/nat/pairing.lean Modified src/data/set/countable.lean Modified src/data/set/finite.lean +/- theorem set.finite.prod Modified src/data/set/intervals/basic.lean +/- theorem set.Ici_prod_Ici +/- theorem set.Ici_prod_eq +/- theorem set.Iic_prod_Iic +/- theorem set.Iic_prod_eq Modified src/data/set/lattice.lean +/- theorem set.Union_prod +/- theorem set.Union_prod_const +/- theorem set.prod_Union +/- theorem set.prod_eq_seq +/- theorem set.prod_sUnion Modified src/data/set/prod.lean +/- theorem set.empty_prod +/- theorem set.exists_prod_set +/- theorem set.forall_prod_set +/- theorem set.fst_image_prod +/- theorem set.fst_image_prod_subset +/- theorem set.image_prod +/- theorem set.image_swap_prod +/- theorem set.insert_prod +/- theorem set.mem_prod +/- theorem set.mem_prod_eq +/- theorem set.mk_mem_prod +/- theorem set.mk_preimage_prod_left +/- theorem set.mk_preimage_prod_left_eq_empty +/- theorem set.mk_preimage_prod_right +/- theorem set.mk_preimage_prod_right_eq_empty +/- theorem set.nonempty.fst +/- theorem set.nonempty.prod +/- theorem set.nonempty.snd +/- theorem set.preimage_swap_prod +/- theorem set.prod_diff_prod +/- theorem set.prod_empty +/- theorem set.prod_eq +/- theorem set.prod_eq_empty_iff +/- theorem set.prod_insert +/- theorem set.prod_inter_prod +/- theorem set.prod_mk_mem_set_prod_eq +/- theorem set.prod_mono +/- theorem set.prod_nonempty_iff +/- theorem set.prod_preimage_left +/- theorem set.prod_preimage_right +/- theorem set.prod_singleton +/- theorem set.prod_subset_iff +/- theorem set.prod_subset_preimage_fst +/- theorem set.prod_subset_preimage_snd +/- theorem set.prod_subset_prod_iff +/- theorem set.prod_union +/- theorem set.prod_univ +/- theorem set.singleton_prod +/- theorem set.singleton_prod_singleton +/- theorem set.snd_image_prod +/- theorem set.snd_image_prod_subset +/- theorem set.union_prod +/- theorem set.univ_prod +/- theorem set.univ_prod_univ Modified src/data/tprod.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/operations.lean Modified src/linear_algebra/basic.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean +/- theorem measure_theory.measure.prod_prod Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measurable_space.lean +/- def measurable_equiv.set.prod +/- theorem measurable_set_prod_of_nonempty Modified src/measure_theory/measure/lebesgue.lean +/- theorem region_between_subset Modified src/order/complete_boolean_algebra.lean +/- theorem Inf_sup_Inf +/- theorem Sup_inf_Sup Modified src/order/filter/bases.lean +/- theorem filter.mem_prod_self_iff Modified src/order/filter/basic.lean Modified src/order/filter/interval.lean Modified src/order/filter/lift.lean +/- theorem filter.prod_def +/- theorem filter.prod_same_eq Modified src/order/well_founded_set.lean Modified src/ring_theory/adjoin/basic.lean Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/module/basic.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/compact_open.lean +/- theorem continuous_map.image_coev Modified src/topology/connected.lean Modified src/topology/constructions.lean +/- theorem is_open_prod_iff Modified src/topology/continuous_on.lean Modified src/topology/fiber_bundle.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/metric_space/metrizable.lean Modified src/topology/semicontinuous.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean +/- def sequentially_complete.set_seq_aux Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean +/- theorem is_separated_def' Modified src/topology/uniform_space/uniform_convergence.lean Modified src/topology/uniform_space/uniform_embedding.lean Modified src/topology/vector_bundle.lean 2022-01-11 13:55:04 3cd9088 feat(ring_theory/polynomial/cyclotomic/basic): add lemmas (#11266) From flt-regular. ESTIMATED CHANGES Modified src/algebra/ne_zero.lean + theorem ne_zero.not_dvd_char Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic_mul_prime_dvd_eq_pow + theorem polynomial.cyclotomic_mul_prime_eq_pow_of_not_dvd + theorem polynomial.cyclotomic_mul_prime_pow_eq + theorem polynomial.is_root_cyclotomic_iff_char_zero + theorem polynomial.is_root_cyclotomic_prime_pow_mul_iff_of_char_p 2022-01-11 13:55:02 4ac13d9 feat(data/dfinsupp/interval): Finitely supported dependent functions to locally finite orders are locally finite (#11175) This provides the ` locally_finite_order` instance for `Π₀ i, α i` in a new file `data.dfinsupp.interval`. ESTIMATED CHANGES Modified src/data/dfinsupp/basic.lean +/- theorem dfinsupp.mem_support_iff +/- theorem dfinsupp.mk_apply + theorem dfinsupp.mk_of_mem + theorem dfinsupp.mk_of_not_mem + theorem dfinsupp.not_mem_support_iff Added src/data/dfinsupp/interval.lean + theorem dfinsupp.card_Icc + theorem dfinsupp.card_Ico + theorem dfinsupp.card_Ioc + theorem dfinsupp.card_Ioo + theorem dfinsupp.card_pi + theorem dfinsupp.mem_pi + theorem dfinsupp.mem_range_Icc_apply_iff + theorem dfinsupp.mem_singleton_apply_iff + def dfinsupp.pi + def dfinsupp.range_Icc + theorem dfinsupp.range_Icc_apply + def dfinsupp.singleton + theorem dfinsupp.support_range_Icc_subset + theorem finset.card_dfinsupp + def finset.dfinsupp + theorem finset.mem_dfinsupp_iff + theorem finset.mem_dfinsupp_iff_of_support_subset Modified src/data/dfinsupp/order.lean +/- theorem dfinsupp.le_iff' +/- theorem dfinsupp.le_iff - theorem dfinsupp.not_mem_support_iff +/- theorem dfinsupp.single_le_iff Modified src/data/finset/basic.lean + theorem finset.not_mem_mono Modified src/data/multiset/basic.lean +/- theorem multiset.cons_le_cons +/- theorem multiset.cons_le_cons_iff +/- theorem multiset.le_cons_of_not_mem +/- theorem multiset.le_zero +/- theorem multiset.mem_of_le + theorem multiset.not_mem_mono +/- theorem multiset.subset_of_le 2022-01-11 11:13:20 40b6b45 feat(category_theory): `Cat` is a strict bicategory (#11348) This PR defines a bicategory structure on `Cat`. This also introduces the propositional type class `bicategory.strict`, and proves that `Cat` is an instance of this class. ESTIMATED CHANGES Added src/category_theory/bicategory/strict.lean Modified src/category_theory/category/Cat.lean 2022-01-11 11:13:19 a4052f9 feat(ring_theory/hahn_series): order_pow (#11334) Generalize to have `no_zero_divisors (hahn_series Γ R)`, which generalizes `order_mul`. Also provide `coeff_eq_zero_of_lt_order`. ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean + theorem hahn_series.coeff_eq_zero_of_lt_order +/- theorem hahn_series.order_mul + theorem hahn_series.order_pow 2022-01-11 11:13:18 90ba054 feat(algebraic_geometry): Define the category of `AffineScheme`s (#11326) ESTIMATED CHANGES Added src/algebraic_geometry/AffineScheme.lean + def algebraic_geometry.AffineScheme.Spec + def algebraic_geometry.AffineScheme.equiv_CommRing + def algebraic_geometry.AffineScheme.forget_to_Scheme + def algebraic_geometry.AffineScheme.Γ + def algebraic_geometry.AffineScheme + def algebraic_geometry.Scheme.iso_Spec + theorem algebraic_geometry.is_affine_of_iso + def algebraic_geometry.is_affine_open + theorem algebraic_geometry.is_basis_affine_open + theorem algebraic_geometry.mem_AffineScheme + theorem algebraic_geometry.range_is_affine_open_of_open_immersion + theorem algebraic_geometry.top_is_affine_open Modified src/algebraic_geometry/Gamma_Spec_adjunction.lean Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.of_restrict + def algebraic_geometry.Scheme.restrict + def algebraic_geometry.is_open_immersion.iso_of_range_eq + def algebraic_geometry.is_open_immersion.iso_restrict + def algebraic_geometry.is_open_immersion.lift + theorem algebraic_geometry.is_open_immersion.lift_fac + theorem algebraic_geometry.is_open_immersion.lift_uniq Modified src/category_theory/adjunction/reflective.lean + def category_theory.equiv_ess_image_of_reflective 2022-01-11 11:13:17 c03bd32 feat(analysis/normed_space/star): add lemmas about continuity and norm of identity (#11324) ESTIMATED CHANGES Modified src/analysis/normed_space/star.lean + theorem continuous.star + theorem continuous_at.star + theorem continuous_at_star + theorem continuous_on.star + theorem continuous_on_star + theorem continuous_star + theorem continuous_within_at.star + theorem continuous_within_at_star + theorem cstar_ring.norm_one +/- theorem cstar_ring.norm_self_mul_star +/- theorem cstar_ring.norm_star_mul_self' + theorem filter.tendsto.star +/- theorem star_isometry +/- def star_normed_group_hom + theorem tendsto_star 2022-01-11 11:13:16 ebbc973 feat(data/mv_polynomial): assorted mv_polynomial and finsupp lemmas (#11319) Mostly around total degree, supports and homogeneous components. From flt-regular. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.support_smul_eq Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.monomial_eq_zero +/- theorem mv_polynomial.monomial_zero Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.total_degree_X_pow + theorem mv_polynomial.total_degree_monomial Modified src/ring_theory/polynomial/homogeneous.lean + theorem mv_polynomial.homogeneous_component_C_mul + theorem mv_polynomial.is_homogeneous_of_total_degree_zero 2022-01-11 11:13:15 c500b99 feat(ring_theory/laurent): coe from R[[x]] to R((x)) (#11318) And actually the changes reported in #11295 Generalize `power_series.coeff_smul` ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean + theorem hahn_series.of_power_series_C + theorem hahn_series.of_power_series_X + theorem hahn_series.of_power_series_X_pow Modified src/ring_theory/laurent_series.lean - theorem laurent_series.of_power_series_C - theorem laurent_series.of_power_series_X - theorem laurent_series.of_power_series_X_pow - theorem polynomial.coe_coe - theorem polynomial.coe_laurent - theorem polynomial.coe_laurent_C - theorem polynomial.coe_laurent_X - theorem polynomial.coe_laurent_add - theorem polynomial.coe_laurent_mul - theorem polynomial.coe_laurent_one - theorem polynomial.coe_laurent_smul - theorem polynomial.coe_laurent_zero - theorem polynomial.coeff_coe_laurent - theorem polynomial.coeff_coe_laurent_coe + theorem power_series.coe_C + theorem power_series.coe_X + theorem power_series.coe_add + theorem power_series.coe_bit0 + theorem power_series.coe_bit1 + theorem power_series.coe_mul + theorem power_series.coe_one + theorem power_series.coe_pow + theorem power_series.coe_smul + theorem power_series.coe_zero + theorem power_series.coeff_coe Modified src/ring_theory/power_series/basic.lean +/- theorem power_series.coeff_smul 2022-01-11 11:13:14 be594eb feat(linear_algebra/finite_dimensional): Define rank of set of vectors (#11290) Added in the definition of "rank of a set of vectors" and a useful lemma about the rank when one set is a subset of the other. Read the zulip stream here: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/First.20Time.20Contributing ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/finite_dimensional.lean + theorem set.finrank_mono 2022-01-11 11:13:13 b7f8f72 feat(category_theory/bicategory/functor): define oplax functors and their composition (#11277) This PR defines oplax functors between bicategories and their composition. ESTIMATED CHANGES Added src/category_theory/bicategory/functor.lean + def category_theory.oplax_functor.comp + def category_theory.oplax_functor.id + def category_theory.oplax_functor.map_functor + def category_theory.oplax_functor.map₂_associator_aux + theorem category_theory.oplax_functor.to_prelax_functor_map + theorem category_theory.oplax_functor.to_prelax_functor_map₂ + theorem category_theory.oplax_functor.to_prelax_functor_obj + structure category_theory.oplax_functor + def category_theory.prelax_functor.comp + def category_theory.prelax_functor.id + theorem category_theory.prelax_functor.to_prefunctor_map + theorem category_theory.prelax_functor.to_prefunctor_obj + structure category_theory.prelax_functor 2022-01-11 11:13:11 624cb70 feat(set_theory/ordinal_arithmetic): Extra lemmas about suprema (#11178) Proved lemmas pertaining to when suprema or least strict upper bounds are zero. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.eq_zero_of_out_empty + theorem ordinal.out_empty_iff_eq_zero Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.blsub_eq_zero + theorem ordinal.blsub_eq_zero_iff + theorem ordinal.blsub_pos + theorem ordinal.bsup_eq_zero_iff + theorem ordinal.lsub_eq_zero + theorem ordinal.lsub_eq_zero_iff + theorem ordinal.lsub_pos + theorem ordinal.sup_eq_zero_iff 2022-01-11 08:13:33 de9944b refactor(analysis/complex/circle): The circle group is commutative (#11368) This PR upgrades the `group circle` instance to a `comm_group circle` instance. ESTIMATED CHANGES Modified src/analysis/complex/circle.lean 2022-01-11 08:13:31 e8839a3 refactor(logic/small, *): Infer `f : α → β` when followed by a simple condition on `f` (#11037) ESTIMATED CHANGES Modified src/data/equiv/encodable/small.lean Modified src/data/equiv/set.lean +/- theorem equiv.apply_of_injective_symm +/- theorem equiv.coe_of_injective_symm +/- theorem equiv.of_injective_symm_apply +/- theorem equiv.self_comp_of_injective_symm Modified src/data/fin/basic.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basis.lean Modified src/logic/small.lean +/- theorem small_of_injective +/- theorem small_of_surjective 2022-01-11 02:45:39 89bff5e feat(algebra/big_operators): add product versions of some sum lemmas (#11358) and to_additive to get the old ones back ESTIMATED CHANGES Modified src/algebra/big_operators/multiset.lean + theorem multiset.le_prod_of_mem - theorem multiset.le_sum_of_mem + theorem multiset.prod_eq_one_iff - theorem multiset.sum_eq_zero_iff Modified src/data/list/big_operators.lean + theorem list.prod_eq_one_iff - theorem list.sum_eq_zero_iff 2022-01-11 02:45:38 d8a75bd chore(simple_graph/basic): Fix typo in docstring: adjacent vertices, not edges (#11356) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2022-01-10 23:30:59 8910f6d feat(ring_theory/discriminant): remove an assumption (#11359) We remove a `nonempty` assumption. ESTIMATED CHANGES Modified src/ring_theory/discriminant.lean +/- theorem algebra.discr_not_zero_of_linear_independent 2022-01-10 23:30:58 fd51bda feat(analysis/normed_space/linear_isometry): basis ext lemmas (#11331) Add lemmas that two linear isometries / linear isometric equivalences are equal if they are equal on basis vectors, similar to such lemmas for equality on basis vectors of other kinds of maps. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem basis.ext_linear_isometry + theorem basis.ext_linear_isometry_equiv 2022-01-10 23:30:57 3b55b94 feat(analysis/inner_product_space/basic): inner products of linear combinations of orthonormal vectors (#11323) There are some lemmas about the inner product of a linear combination of orthonormal vectors with one vector from that orthonormal family. Add similar lemmas where both sides of the inner product are linear combinations. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem orthonormal.inner_finsupp_eq_sum_left + theorem orthonormal.inner_finsupp_eq_sum_right + theorem orthonormal.inner_left_sum + theorem orthonormal.inner_right_sum + theorem orthonormal.inner_sum 2022-01-10 23:30:55 fd52481 feat(group_theory/abelianization): Add fintype instance (#11302) Adds `fintype` instance for `abelianization`. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean 2022-01-10 23:30:54 2642c89 feat(analysis/inner_product_space/orientation): orientations of real inner product spaces (#11269) Add definitions and lemmas relating to orientations of real inner product spaces, in particular constructing an orthonormal basis with a given orientation in finite positive dimension. This is in a new file since nothing else about inner product spaces needs to depend on orientations. ESTIMATED CHANGES Added src/analysis/inner_product_space/orientation.lean + theorem orientation.fin_orthonormal_basis_orientation + theorem orthonormal.orthonormal_adjust_to_orientation 2022-01-10 23:30:52 4e7e5a6 feat(set_theory/ordinal_arithmetic): Enumerating unbounded sets of ordinals with ordinals (#10979) This PR introduces `enum_ord`, which enumerates an unbounded set of ordinals using ordinals. This is used to build an explicit order isomorphism `enum_ord.order_iso`. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.not_lt_omin Modified src/set_theory/ordinal_arithmetic.lean + def ordinal.CNF + theorem ordinal.blsub_le_enum_ord + def ordinal.enum_ord.order_iso + theorem ordinal.enum_ord.strict_mono + theorem ordinal.enum_ord.surjective + def ordinal.enum_ord + theorem ordinal.enum_ord_def' + theorem ordinal.enum_ord_def'_H + theorem ordinal.enum_ord_def + theorem ordinal.enum_ord_def_H + theorem ordinal.enum_ord_mem + theorem ordinal.enum_ord_range + theorem ordinal.eq_enum_ord 2022-01-10 23:30:51 8e92af1 feat(algebra/associated): add lemmas to split #9345 (#10941) This PR contains lemmas from PR [#9345](https://github.com/leanprover-community/mathlib/pull/9345), which was starting to get quite lengthy. ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.bot_eq_one + theorem associates.le_one_iff + theorem associates.mk_injective + theorem dvd_not_unit.is_unit_of_irreducible_right + theorem dvd_not_unit.ne + theorem dvd_not_unit.not_associated + theorem dvd_not_unit.not_unit + theorem dvd_not_unit_of_dvd_not_unit_associated + theorem is_unit_of_associated_mul + theorem not_irreducible_of_not_unit_dvd_not_unit + theorem not_is_unit_of_not_is_unit_dvd + theorem pow_injective_of_not_unit Modified src/algebra/divisibility.lean + theorem ne_zero_of_dvd_ne_zero 2022-01-10 23:30:50 4bf4859 feat(data/finsupp/pointwise): add a definition of the pointwise action of functions on finsupps (#10933) I couldn't find this, and it seems like quite a natural way to talk about multiplying functions with finsupps. I'm not sure what additional lemmas would be useful yet, as I don't have a particular application in mind at present so suggestions/additions are welcome ESTIMATED CHANGES Modified src/data/finsupp/pointwise.lean + theorem finsupp.coe_pointwise_module 2022-01-10 19:54:28 2e003c9 feat(data/set/basic): add decidable instances for boolean operations (#11354) Add decidability instances for `a ∈ s ∩ t`, etc. ESTIMATED CHANGES Modified src/data/set/basic.lean 2022-01-10 19:54:26 427e5b5 feat(data/nat/factorization): Evaluating a multiplicative function over prime power divisors (#11167) For any multiplicative function `f` with `f 1 = 1` and any `n > 0`, we can evaluate `f n` by evaluating `f` at `p ^ k` over the factorization of `n`. Also provides an alternative version that swaps the `0 < n` condition for an extra `f 0 = 1` condition, as suggested by @ericrbg. This allows a very simple proof that `n.factorization.prod pow = n` ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.factorization_prod_pow_eq_self + theorem nat.multiplicative_factorization' + theorem nat.multiplicative_factorization Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.is_multiplicative.multiplicative_factorization 2022-01-10 16:17:20 dc3cbb7 feat(data/polynomial/erase_lead): introduce two lemmas to compute `nat_degree`s under certain maps (#11265) This PR is a step in the direction of simplifying #11139. It contains a proof of the helper lemmas `map_nat_degree_eq_sub` and `map_nat_degree_eq_nat_degree` to shorten the proof of `nat_degree_hasse_deriv` and `nat_degree_taylor`. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2311139.20taylor.20sum.20and.20nat_degree_taylor) ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean + theorem polynomial.map_nat_degree_eq_nat_degree + theorem polynomial.map_nat_degree_eq_sub + theorem polynomial.mono_map_nat_degree_eq 2022-01-10 16:17:19 168ad7f feat(data/nat/cast): generalize to `fun_like` (#11128) ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified src/algebra/algebra/basic.lean - theorem alg_hom.map_nat_cast Modified src/algebra/char_p/basic.lean +/- theorem frobenius_nat_cast Modified src/algebra/char_p/pi.lean Modified src/algebra/char_p/quotient.lean Modified src/algebra/char_p/subring.lean Modified src/algebra/char_zero.lean Modified src/algebra/group_power/lemmas.lean Modified src/algebra/ne_zero.lean + theorem ne_zero.nat_of_injective - theorem ne_zero.of_injective' +/- theorem ne_zero.of_injective Modified src/data/complex/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/int/cast.lean Modified src/data/matrix/char_p.lean Modified src/data/nat/cast.lean - theorem add_monoid_hom.eq_nat_cast +/- theorem add_monoid_hom.ext_nat - theorem add_monoid_hom.map_nat_cast + theorem eq_nat_cast' + theorem eq_nat_cast + theorem ext_nat'' + theorem ext_nat' + theorem ext_nat + theorem map_nat_cast' + theorem map_nat_cast +/- theorem monoid_with_zero_hom.ext_nat +/- theorem nat.cast_one +/- theorem nat.cast_two +/- theorem nat.coe_nat_dvd +/- theorem nat.commute_cast - theorem ring_hom.eq_nat_cast - theorem ring_hom.ext_nat - theorem ring_hom.map_nat_cast +/- theorem with_top.coe_nat Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/eval.lean - theorem polynomial.map_nat_cast Modified src/data/real/nnreal.lean Modified src/data/zmod/basic.lean Modified src/number_theory/basic.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/cyclotomic/basic.lean Modified src/number_theory/padics/ring_homs.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/ring_theory/subring/basic.lean +/- theorem subring.coe_nat_cast Modified src/ring_theory/witt_vector/compare.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/verschiebung.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean 2022-01-10 13:08:00 1533f15 feat(logic/basic): add eq_true_eq_id (#11341) Adds the simp lemma `eq_true_eq_id : eq true = id`, a sort of curried version of `eq_true : (a = true) = a` in core. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem eq_true_eq_id 2022-01-10 13:07:59 fabc510 feat(linear_algebra/determinant): `linear_equiv.det_conj` (#11340) Add a version of the `linear_map.det_conj` lemma for `linear_equiv.det`. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_equiv.det_conj 2022-01-10 13:07:57 48b21e5 feat(probability_theory/martingale): one direction of the optional stopping theorem (#11007) ESTIMATED CHANGES Modified src/probability_theory/martingale.lean + theorem measure_theory.submartingale.expected_stopped_value_mono + theorem measure_theory.submartingale.integrable_stopped_value Modified src/probability_theory/stopping.lean + theorem measure_theory.integrable_stopped_value + theorem measure_theory.is_stopping_time.measurable_set_lt + theorem measure_theory.is_stopping_time.measurable_set_lt_le + theorem measure_theory.mem_ℒp_stopped_value + theorem measure_theory.stopped_value_eq + theorem measure_theory.stopped_value_sub_eq_sum' + theorem measure_theory.stopped_value_sub_eq_sum 2022-01-10 10:18:16 7782157 feat (data/finset/lattice): add more finset induction lemmas (#10889) 2 more finset induction lemmas based on the order imposed by a function. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.induction_on_max_value + theorem finset.induction_on_min_value 2022-01-10 01:23:46 99fe7ac chore(data/set/function): move inv_fun_on out of `logic/function/basic` (#11330) This removes `function.inv_fun_on_eq'` as it is a duplicate of `inj_on.left_inv_on_inv_fun_on`. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem function.inv_fun_on_eq + theorem function.inv_fun_on_mem + theorem function.inv_fun_on_neg + theorem function.inv_fun_on_pos Modified src/logic/function/basic.lean - theorem function.inv_fun_on_eq' - theorem function.inv_fun_on_eq - theorem function.inv_fun_on_mem - theorem function.inv_fun_on_neg - theorem function.inv_fun_on_pos Modified src/measure_theory/covering/vitali.lean 2022-01-09 23:15:30 6a10939 fix(docs/references.bib): syntax error (#11342) This broke the docs build. ESTIMATED CHANGES Modified docs/references.bib 2022-01-09 21:08:06 ce17b65 feat(topology/algebra/monoid): to_additivize some lemmas (#11310) Uncomment a commented out to additive line that looks like its been there for 3 years (since https://github.com/leanprover-community/mathlib/commit/581cf19bf1885ef874c39c9902a93f579bc8c22d) The changes to to_additive in the past few years now make the generated lemma useful. Also to_additivize a bunch of other lemmas in this file. ESTIMATED CHANGES Modified src/topology/algebra/monoid.lean 2022-01-09 18:06:11 d13b3a4 chore(*): update to 3.37.0c (#11325) the major breaking change this version is making `default`'s parameters implicit, as opposed to explicit. there was also some slight "free" golfing due to the better `out_param` simp support. ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified leanpkg.toml Modified src/algebra/add_torsor.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/finprod.lean +/- theorem finprod_unique Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/direct_sum/basic.lean Modified src/algebra/free.lean Modified src/algebra/graded_monoid.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group/units.lean Modified src/algebra/lie/cartan_matrix.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/module/linear_map.lean +/- theorem linear_map.default_def Modified src/algebra/opposites.lean Modified src/algebra/tropical/basic.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/lp_space.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/category_theory/action.lean Modified src/category_theory/arrow.lean Modified src/category_theory/category/Kleisli.lean Modified src/category_theory/category/pairwise.lean Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/closed/zero.lean Modified src/category_theory/comma.lean Modified src/category_theory/connected_components.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/lifting_properties.lean Modified src/category_theory/limits/shapes/multiequalizer.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/kleisli.lean Modified src/category_theory/over.lean Modified src/category_theory/path_category.lean Modified src/category_theory/preadditive/Mat.lean Modified src/category_theory/quotient.lean Modified src/category_theory/sites/sheaf.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/skeletal.lean Modified src/combinatorics/hales_jewett.lean Modified src/combinatorics/quiver/connected_component.lean Modified src/combinatorics/quiver/subquiver.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/computability/DFA.lean Modified src/computability/primrec.lean Modified src/computability/reduce.lean Modified src/computability/tm_computable.lean Modified src/computability/turing_machine.lean Modified src/control/functor.lean Modified src/data/array/lemmas.lean Modified src/data/bool/basic.lean +/- theorem bool.default_bool Modified src/data/bundle.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/embedding.lean Modified src/data/equiv/encodable/basic.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.unique_ext +/- theorem finsupp.unique_ext_iff +/- theorem finsupp.unique_single Modified src/data/fintype/basic.lean +/- theorem finset.univ_unique Modified src/data/holor.lean Modified src/data/int/basic.lean +/- theorem int.default_eq_zero Modified src/data/lazy_list.lean Modified src/data/list/basic.lean +/- theorem list.take'_nil Modified src/data/list/big_operators.lean Modified src/data/list/defs.lean Modified src/data/list/func.lean +/- theorem list.func.get_nil +/- theorem list.func.get_pointwise +/- theorem list.func.nil_pointwise Modified src/data/matrix/basis.lean Modified src/data/opposite.lean Modified src/data/option/defs.lean Modified src/data/pfunctor/multivariate/M.lean Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/pfunctor/univariate/M.lean Modified src/data/pfunctor/univariate/basic.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/data/qpf/multivariate/constructions/const.lean Modified src/data/qpf/multivariate/constructions/prj.lean Modified src/data/qpf/multivariate/constructions/quot.lean Modified src/data/qpf/multivariate/constructions/sigma.lean Modified src/data/qpf/univariate/basic.lean Modified src/data/quot.lean Modified src/data/rbmap/basic.lean Modified src/data/semiquot.lean Modified src/data/seq/seq.lean Modified src/data/set/basic.lean +/- theorem set.default_coe_singleton +/- theorem set.range_unique +/- theorem set.univ_unique Modified src/data/set/lattice.lean Modified src/data/setoid/partition.lean Modified src/data/sigma/basic.lean Modified src/data/stream/init.lean Modified src/data/string/basic.lean +/- theorem string.head_empty Modified src/data/sym/basic.lean Modified src/data/tprod.lean Modified src/data/typevec.lean Modified src/data/vector/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/geometry/manifold/times_cont_mdiff_map.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/nielsen_schreier.lean +/- def is_free_groupoid.spanning_tree.tree_hom Modified src/group_theory/perm/basic.lean +/- theorem equiv.perm.default_perm Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/std_basis.lean Modified src/logic/basic.lean Modified src/logic/embedding.lean Modified src/logic/nontrivial.lean Modified src/logic/unique.lean +/- theorem fin.default_eq_zero +/- theorem unique.default_eq +/- theorem unique.eq_default +/- theorem unique.exists_iff +/- theorem unique.forall_iff Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/probability_mass_function/basic.lean Modified src/meta/expr.lean Modified src/order/basic.lean Modified src/order/conditionally_complete_lattice.lean +/- theorem infi_unique +/- theorem supr_unique Modified src/order/countable_dense_linear_order.lean Modified src/order/extension.lean Modified src/order/filter/bases.lean Modified src/order/filter/germ.lean Modified src/order/filter/ultrafilter.lean Modified src/order/ideal.lean Modified src/order/jordan_holder.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/pfilter.lean Modified src/order/rel_iso.lean +/- theorem rel_iso.default_def Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/witt_vector/truncated.lean Modified src/set_theory/lists.lean Modified src/set_theory/zfc.lean Modified src/tactic/cache.lean Modified src/tactic/cancel_denoms.lean Modified src/tactic/core.lean Modified src/tactic/derive_inhabited.lean Modified src/tactic/explode.lean Modified src/tactic/explode_widget.lean Modified src/tactic/fix_reflect_string.lean Modified src/tactic/interactive.lean Modified src/tactic/rcases.lean Modified src/tactic/split_ifs.lean Modified src/testing/slim_check/functions.lean Modified src/testing/slim_check/sampleable.lean Modified src/testing/slim_check/testable.lean Modified src/topology/algebra/filter_basis.lean Modified src/topology/algebra/module/basic.lean +/- theorem continuous_linear_equiv.coe_fun_unique +/- theorem continuous_linear_map.default_def Modified src/topology/algebra/nonarchimedean/bases.lean Modified src/topology/algebra/ordered/compact.lean Modified src/topology/compact_open.lean Modified src/topology/compacts.lean Modified src/topology/connected.lean Modified src/topology/continuous_function/basic.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/locally_constant/basic.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/partition_of_unity.lean Modified src/topology/path_connected.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/tietze_extension.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean Modified test/inhabit.lean Modified test/instance_cache.lean Modified test/lint_coe_t.lean +/- def int_to_a Modified test/lint_simp_nf.lean +/- def c +/- def d +/- def f +/- def h Modified test/pi_simp.lean +/- def test.eval_default Modified test/qpf.lean 2022-01-09 18:06:09 47a8d5a refactor(data/{sigma,psigma}/order): Use `lex` synonym and new notation (#11235) This introduces notations `Σₗ i, α i` and `Σₗ' i, α i` for `lex (Σ i, α i)` and `lex (Σ' i, α i)` and use them instead of the instance switch with locale `lex`. ESTIMATED CHANGES Modified src/data/psigma/order.lean Modified src/data/sigma/order.lean 2022-01-09 16:18:25 2bb25f0 feat(algebra/periodic): lifting to function on quotient group (#11321) I want to make more use of the type `real.angle` in `analysis.special_functions.trigonometric.angle`, including defining functions from this type in terms of periodic functions from `ℝ`. To support defining such functions, add a definition `periodic.lift` that lifts a periodic function from `α` to a function from `α ⧸ (add_subgroup.zmultiples c)`, along with a lemma `periodic.lift_coe` about the values of the resulting function. ESTIMATED CHANGES Modified src/algebra/periodic.lean + def function.periodic.lift + theorem function.periodic.lift_coe 2022-01-09 16:18:24 49ba33e feat(vscode): add a snippet for inserting a module docstring template (#11312) We already have a vscode snippet for adding copyright headers, this PR adds a similar one to generate a default module docstring with many of the common sections stubbed out. By default it takes the filename, converts underscores to spaces and capitalizes each word to create the title, as this seems a sensible default. But otherwise all text is a static default example following the documentation style page to make it easier to remember the various recommended secitons. To test do `ctrl+shift+p` to open the command pallette, type insert snippet, enter, and type module and it should show up. See also #3186 ESTIMATED CHANGES Added .vscode/module-docstring.code-snippets 2022-01-09 16:18:23 fadbd95 feat(field_theory/ratfunc): ratfunc.lift_on without is_domain (#11227) We might want to state results about rational functions without assuming that the base ring is an integral domain. Cf. Misconceptions about $K_X$, Kleiman, Steven; Stacks01X1 ESTIMATED CHANGES Modified docs/references.bib Modified src/field_theory/ratfunc.lean + theorem ratfunc.lift_on_condition_of_lift_on'_condition + theorem ratfunc.lift_on_of_fraction_ring_mk 2022-01-09 13:09:57 9c224ff split(data/set/functor): Split off `data.set.lattice` (#11327) This moves the functor structure of `set` in a new file `data.set.functor`. Also adds `alternative set` because it's quick and easy. ESTIMATED CHANGES Modified src/computability/NFA.lean Modified src/control/traversable/instances.lean Modified src/data/set/finite.lean Added src/data/set/functor.lean + theorem set.bind_def + theorem set.fmap_eq_image + theorem set.pure_def + theorem set.seq_eq_set_seq Modified src/data/set/lattice.lean - theorem set.bind_def - theorem set.fmap_eq_image - theorem set.pure_def - theorem set.seq_eq_set_seq 2022-01-09 07:58:15 ad4ea53 chore(*): miscellaneous to_additive related cleanup (#11316) A few cleanup changes related to to_additive: * After https://github.com/leanprover-community/lean/pull/618 was merged, we no longer need to add namespaces manually in filtered_colimits and open subgroup * to_additive can now generate some more lemmas in big_operators/fin * to_additive now handles a proof in measure/haar better than it used to so remove a workaround there ESTIMATED CHANGES Modified src/algebra/big_operators/fin.lean - theorem fin.sum_filter_succ_lt - theorem fin.sum_filter_zero_lt Modified src/algebra/category/CommRing/filtered_colimits.lean Modified src/measure_theory/measure/haar.lean Modified src/topology/algebra/open_subgroup.lean 2022-01-09 06:06:07 ca5e55c feat(linear_algebra/basis): `basis.ext`, `basis.ext'` for semilinear maps (#11317) Extend `basis.ext` and `basis.ext'` to apply to the general (semilinear) case of `linear_map` and `linear_equiv`. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean +/- theorem basis.ext' +/- theorem basis.ext 2022-01-09 03:54:54 a58553d feat(data/nat/factorization): Add lemmas on factorizations of pairs of coprime numbers (#10850) ESTIMATED CHANGES Modified src/data/nat/factorization.lean + theorem nat.factorization_disjoint_of_coprime + theorem nat.factorization_mul_of_coprime + theorem nat.factorization_mul_support_of_coprime + theorem nat.factorization_mul_support_of_pos 2022-01-09 01:21:32 d4846b3 chore(ring_theory/fractional_ideal): fix typo (#11311) ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean 2022-01-08 23:10:53 22ff4eb feat(combinatorics/simple_graph/matchings): even_card_vertices_of_perfect_matching (#11083) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/matching.lean + theorem simple_graph.subgraph.is_matching.even_card + theorem simple_graph.subgraph.is_matching.to_edge.surjective + theorem simple_graph.subgraph.is_matching.to_edge_eq_of_adj + theorem simple_graph.subgraph.is_matching.to_edge_eq_to_edge_of_adj + theorem simple_graph.subgraph.is_perfect_matching.even_card + theorem simple_graph.subgraph.is_perfect_matching_iff_forall_degree Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.adj.of_spanning_coe + theorem simple_graph.subgraph.degree_spanning_coe + theorem simple_graph.subgraph.is_spanning.card_verts + theorem simple_graph.subgraph.neighbor_set_subset_verts - theorem simple_graph.subgraph.spanning_coe_adj_sub 2022-01-08 21:54:48 0a75fdf feat(linear_algebra/eigenspace): prove eigenvalues are exactly elements of the spectrum when the space is finite dimensional (#10961) This adds `has_eigenvalue_iff_mem_spectrum` and then uses it to golf `exists_eigenvalue` - [x] depends on: #10912 - [x] depends on: #10919 ESTIMATED CHANGES Modified src/linear_algebra/eigenspace.lean + theorem module.End.has_eigenvalue_iff_mem_spectrum 2022-01-08 18:36:59 ee136d9 chore(set_theory/game/domineering): extract repeated goal into lemma and golf (#11298) `fst_pred_mem_erase_of_mem_right` and `snd_pred_mem_erase_of_mem_left` were common subgoals that appeared in two lemmas each. ESTIMATED CHANGES Modified src/set_theory/game/domineering.lean + theorem pgame.domineering.fst_pred_mem_erase_of_mem_right + theorem pgame.domineering.mem_left + theorem pgame.domineering.mem_right +/- def pgame.domineering.shift_right +/- def pgame.domineering.shift_up + theorem pgame.domineering.snd_pred_mem_erase_of_mem_left 2022-01-08 18:36:57 84dbe31 feat(topology/basic): add explicit definition of continuous_at (#11296) This was convenient in a demo. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem continuous_at_def 2022-01-08 18:36:56 25704ca docs(algebra/covariant_and_contravariant): minor typos (#11293) ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean 2022-01-08 18:36:54 09f6989 chore(analysis/normed_space/banach): move more to the `continuous_linear_map` NS (#11263) ## Rename * `open_mapping` → `continuous_linear_map.is_open_map`; * `open_mapping_affine` → `affine_map.is_open_map`; ### New lemmas * `continuous_linear_map.quotient_map`, * `continuous_linear_map.interior_preimage`, * `continuous_linear_map.closure_preimage`, * `continuous_linear_map.frontier_preimage`. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/analysis/normed_space/banach.lean + theorem affine_map.is_open_map + theorem continuous_linear_map.closure_preimage + theorem continuous_linear_map.exists_approx_preimage_norm_le + theorem continuous_linear_map.exists_preimage_norm_le + theorem continuous_linear_map.frontier_preimage + theorem continuous_linear_map.interior_preimage - theorem exists_approx_preimage_norm_le - theorem exists_preimage_norm_le - theorem open_mapping - theorem open_mapping_affine 2022-01-08 18:36:52 60e279b chore(*): update to lean 3.36.0 (#11253) The main breaking change is the change in elaboration of double membership binders into x hx y hy, from x y hx hy. ESTIMATED CHANGES Modified archive/imo/imo1994_q1.lean Modified archive/imo/imo2021_q1.lean Modified leanpkg.toml Modified src/algebra/lie/solvable.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/properties.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/analysis/ODE/gronwall.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/box_integral/basic.lean Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/simplicial_complex/basic.lean Modified src/analysis/convex/topology.lean Modified src/analysis/normed/group/basic.lean Modified src/combinatorics/hindman.lean Modified src/data/complex/exponential.lean Modified src/data/finset/lattice.lean +/- theorem finset.inf'_induction +/- theorem finset.inf_induction +/- theorem finset.sup'_induction +/- theorem finset.sup_induction Modified src/data/finset/sort.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/semiquot.lean Modified src/data/set/basic.lean Modified src/data/set/constructions.lean Modified src/group_theory/complement.lean Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finsupp.lean Modified src/logic/basic.lean + theorem ball_cond_comm + theorem ball_mem_comm Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/pi_system.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/order/compactly_generated.lean Modified src/order/countable_dense_linear_order.lean Modified src/order/ideal.lean Modified src/order/pfilter.lean Modified src/order/prime_ideal.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/ideal/local_ring.lean Modified src/ring_theory/localization.lean Modified src/tactic/core.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/pretty_cases.lean Modified src/tactic/squeeze.lean Modified src/tactic/transfer.lean Modified src/topology/algebra/ordered/intermediate_value.lean Modified src/topology/algebra/semigroup.lean Modified src/topology/algebra/uniform_filter_basis.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/valuation.lean Modified src/topology/algebra/valued_field.lean Modified src/topology/basic.lean Modified src/topology/category/Compactum.lean Modified src/topology/connected.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/holder.lean Modified src/topology/path_connected.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/separation.lean 2022-01-08 16:29:06 dd1242d feat(algebra/associated): generalize nat.prime.pow_dvd_of_dvd_mul_{left,right} (#11301) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem prime.pow_dvd_of_dvd_mul_left + theorem prime.pow_dvd_of_dvd_mul_right Modified src/data/nat/prime.lean - theorem nat.prime.pow_dvd_of_dvd_mul_left - theorem nat.prime.pow_dvd_of_dvd_mul_right 2022-01-08 16:29:05 c76e113 feat(ring_theory/laurent): coercion of R[x] to R((x)) lemmas (#11295) Make the coercion be `simp`-normal as opposed to `(algebra_map _ _)`. Also generalize `of_power_series Γ R (power_series.C R r) = hahn_series.C r` and similarly for `X` to be true for any `[ordered semiring Γ]`, not just `ℤ`. ESTIMATED CHANGES Modified src/ring_theory/laurent_series.lean + theorem laurent_series.of_power_series_C + theorem polynomial.coe_coe + theorem polynomial.coe_laurent + theorem polynomial.coe_laurent_C + theorem polynomial.coe_laurent_X + theorem polynomial.coe_laurent_add + theorem polynomial.coe_laurent_mul + theorem polynomial.coe_laurent_one + theorem polynomial.coe_laurent_smul + theorem polynomial.coe_laurent_zero + theorem polynomial.coeff_coe_laurent + theorem polynomial.coeff_coe_laurent_coe 2022-01-08 16:29:04 1162509 chore(data/fin/vec_notation): generalize smul_cons (#11285) ESTIMATED CHANGES Modified src/data/complex/module.lean Modified src/data/fin/vec_notation.lean +/- theorem matrix.smul_cons +/- theorem matrix.smul_empty 2022-01-08 16:29:01 56f021a feat(data/polynomial/{erase_lead + denoms_clearable}): strengthen a lemma (#11257) This PR is a step in the direction of simplifying #11139 . It strengthens lemma `induction_with_nat_degree_le` by showing that restriction can be strengthened on one of the assumptions. ~~It proves a lemma computing the `nat_degree` under functions on polynomials that include the shift of a variable.~~ EDIT: the lemma was moved to the later PR #11265. It fixes the unique use of lemma `induction_with_nat_degree_le`. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2311139.20taylor.20sum.20and.20nat_degree_taylor) ESTIMATED CHANGES Modified src/data/polynomial/denoms_clearable.lean Modified src/data/polynomial/erase_lead.lean +/- theorem polynomial.induction_with_nat_degree_le 2022-01-08 16:28:59 b181a12 refactor(combinatorics/quiver): split into several files (#11006) This PR splits `combinatorics/quiver.lean` into several files. The main reason for this is to ensure that the category theory library only imports the necessary definitions (and not for example the stuff on arborescences). Also adds some more documentation, and fixes a bug in the definition of weakly connected components. ESTIMATED CHANGES Modified src/category_theory/category/basic.lean Modified src/category_theory/path_category.lean Deleted src/combinatorics/quiver.lean - def prefunctor.comp - def prefunctor.id - def prefunctor.map_path - theorem prefunctor.map_path_comp - theorem prefunctor.map_path_cons - theorem prefunctor.map_path_nil - structure prefunctor - def quiver.empty - theorem quiver.empty_arrow - def quiver.geodesic_subtree - def quiver.hom.op - def quiver.hom.to_path - def quiver.hom.unop - def quiver.labelling - def quiver.path.comp - theorem quiver.path.comp_assoc - theorem quiver.path.comp_cons - theorem quiver.path.comp_nil - def quiver.path.length - theorem quiver.path.length_cons - theorem quiver.path.length_nil - theorem quiver.path.nil_comp - def quiver.path.reverse - inductive quiver.path - def quiver.reverse - def quiver.root - theorem quiver.shortest_path_spec - def quiver.symmetrify - structure quiver.total - def quiver.weakly_connected_component - def quiver.wide_subquiver_equiv_set_total - def quiver.wide_subquiver_symmetrify - def quiver.zigzag_setoid - def wide_subquiver.to_Type - def wide_subquiver Added src/combinatorics/quiver/arborescence.lean + def quiver.geodesic_subtree + def quiver.root + theorem quiver.shortest_path_spec Added src/combinatorics/quiver/basic.lean + def prefunctor.comp + def prefunctor.id + structure prefunctor + def quiver.empty + theorem quiver.empty_arrow + def quiver.hom.op + def quiver.hom.unop Added src/combinatorics/quiver/connected_component.lean + def quiver.path.reverse + def quiver.reverse + def quiver.symmetrify + def quiver.weakly_connected_component + def quiver.wide_subquiver_symmetrify + def quiver.zigzag_setoid Added src/combinatorics/quiver/path.lean + def prefunctor.map_path + theorem prefunctor.map_path_comp + theorem prefunctor.map_path_cons + theorem prefunctor.map_path_nil + def quiver.hom.to_path + def quiver.path.comp + theorem quiver.path.comp_assoc + theorem quiver.path.comp_cons + theorem quiver.path.comp_nil + def quiver.path.length + theorem quiver.path.length_cons + theorem quiver.path.length_nil + theorem quiver.path.nil_comp + inductive quiver.path Added src/combinatorics/quiver/subquiver.lean + def quiver.labelling + structure quiver.total + def quiver.wide_subquiver_equiv_set_total + def wide_subquiver.to_Type + def wide_subquiver Modified src/group_theory/nielsen_schreier.lean 2022-01-08 16:28:58 9b3fec5 feat(algebraic_geometry): Gamma-Spec adjunction (#9802) Define the adjunction between the functors Gamma (global sections) and Spec (to LocallyRingedSpace). I'm currently working on a more general version in http://arxiv.org/pdf/1103.2139.pdf (Theorem 2), which may require refactoring `structure_sheaf` and `Spec`. ESTIMATED CHANGES Added src/algebraic_geometry/Gamma_Spec_adjunction.lean + theorem algebraic_geometry.LocallyRingedSpace.comp_ring_hom_ext + theorem algebraic_geometry.LocallyRingedSpace.is_unit_res_to_Γ_Spec_map_basic_open + theorem algebraic_geometry.LocallyRingedSpace.not_mem_prime_iff_unit_in_stalk + theorem algebraic_geometry.LocallyRingedSpace.to_stalk_stalk_map_to_Γ_Spec + def algebraic_geometry.LocallyRingedSpace.to_to_Γ_Spec_map_basic_open + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_SheafedSpace + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_SheafedSpace_app_eq + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_SheafedSpace_app_spec + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_base + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_c_app + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_c_app_iff + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_c_app_spec + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_c_basic_opens + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_continuous + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_fun + def algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_map_basic_open + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_map_basic_open_eq + theorem algebraic_geometry.LocallyRingedSpace.to_Γ_Spec_preim_basic_open_eq + theorem algebraic_geometry.LocallyRingedSpace.Γ_Spec_left_triangle + def algebraic_geometry.LocallyRingedSpace.Γ_to_stalk + def algebraic_geometry.identity_to_Γ_Spec + def algebraic_geometry.Γ_Spec.LocallyRingedSpace_adjunction + def algebraic_geometry.Γ_Spec.adjunction + theorem algebraic_geometry.Γ_Spec.adjunction_counit_app + theorem algebraic_geometry.Γ_Spec.adjunction_hom_equiv + theorem algebraic_geometry.Γ_Spec.adjunction_hom_equiv_apply + theorem algebraic_geometry.Γ_Spec.adjunction_hom_equiv_symm_apply + theorem algebraic_geometry.Γ_Spec.adjunction_unit_app + theorem algebraic_geometry.Γ_Spec.left_triangle + theorem algebraic_geometry.Γ_Spec.right_triangle Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/structure_sheaf.lean - theorem algebraic_geometry.structure_sheaf.is_localization.to_basic_open - theorem algebraic_geometry.structure_sheaf.is_localization.to_stalk + theorem algebraic_geometry.structure_sheaf.open_algebra_map + theorem algebraic_geometry.structure_sheaf.stalk_algebra_map 2022-01-08 15:04:37 b1955dc feat(data/matrix/basic): infix notation for matrix.dot_product in locale matrix (#11289) I created an infix notation for `matrix.dot_product` in locale `matrix`. The notation was consulted with @eric-wieser in #11181. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.add_dot_product +/- theorem matrix.diagonal_dot_product +/- theorem matrix.dot_product_add +/- theorem matrix.dot_product_diagonal' +/- theorem matrix.dot_product_diagonal +/- theorem matrix.dot_product_neg +/- theorem matrix.dot_product_single +/- theorem matrix.dot_product_star +/- theorem matrix.dot_product_sub +/- theorem matrix.dot_product_zero' +/- theorem matrix.dot_product_zero +/- theorem matrix.neg_dot_product +/- theorem matrix.single_dot_product +/- theorem matrix.star_dot_product +/- theorem matrix.star_dot_product_star +/- theorem matrix.sub_dot_product +/- theorem matrix.zero_dot_product' +/- theorem matrix.zero_dot_product 2022-01-08 15:04:36 4304127 feat(ring_theory/power_series): teach simp to simplify more coercions of polynomials to power series (#11287) So that simp can prove that the polynomial `5 * X^2 + X + 1` coerced to a power series is the same thing with the power series generator `X`. Likewise for `mv_power_series`. ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem mv_polynomial.coe_bit0 + theorem mv_polynomial.coe_bit1 + theorem mv_polynomial.coe_pow + theorem polynomial.coe_bit0 + theorem polynomial.coe_bit1 + theorem polynomial.coe_pow 2022-01-08 15:04:35 e871386 feat(number_theory/cyclotomic/basic): add lemmas (#11264) From flt-regular. ESTIMATED CHANGES Modified src/number_theory/cyclotomic/basic.lean + theorem is_cyclotomic_extension.adjoin_roots_cyclotomic_eq_adjoin_nth_roots + theorem is_cyclotomic_extension.finite_dimensional + theorem is_cyclotomic_extension.integral + theorem is_cyclotomic_extension.splits_X_pow_sub_one + theorem is_cyclotomic_extension.splits_cyclotomic + theorem is_cyclotomic_extension.splitting_field_X_pow_sub_one + theorem is_cyclotomic_extension.splitting_field_cyclotomic 2022-01-08 15:04:33 c7fa66e feat(data/nat/prime): power to factor count divides natural (#11226) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.pow_factors_count_dvd 2022-01-08 15:04:32 4d79d5f chore(measure_theory/group/arithmetic): use implicit argument for measurable_space (#11205) The `measurable_space` argument is inferred from other arguments (like `measurable f` or a measure for example) instead of being a type class. This ensures that the lemmas are usable without `@` when several measurable space structures are used for the same type. Also use more `variables`. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/special_functions.lean +/- theorem ae_measurable.inner +/- theorem measurable.inner Modified src/measure_theory/group/arithmetic.lean +/- theorem ae_measurable.const_div +/- theorem ae_measurable.const_mul +/- theorem ae_measurable.const_pow +/- theorem ae_measurable.const_smul' +/- theorem ae_measurable.const_smul +/- theorem ae_measurable.div' +/- theorem ae_measurable.div +/- theorem ae_measurable.div_const +/- theorem ae_measurable.inv +/- theorem ae_measurable.mul' +/- theorem ae_measurable.mul +/- theorem ae_measurable.mul_const +/- theorem ae_measurable.pow +/- theorem ae_measurable.pow_const +/- theorem ae_measurable.smul_const +/- theorem finset.ae_measurable_prod' +/- theorem finset.ae_measurable_prod +/- theorem finset.measurable_prod' +/- theorem finset.measurable_prod +/- theorem list.ae_measurable_prod' +/- theorem list.ae_measurable_prod +/- theorem measurable.const_div +/- theorem measurable.const_mul +/- theorem measurable.const_pow +/- theorem measurable.const_smul' +/- theorem measurable.const_smul +/- theorem measurable.div' +/- theorem measurable.div +/- theorem measurable.div_const +/- theorem measurable.inv +/- theorem measurable.mul' +/- theorem measurable.mul +/- theorem measurable.mul_const +/- theorem measurable.pow +/- theorem measurable.pow_const +/- theorem measurable.smul +/- theorem measurable.smul_const +/- theorem measurable_set_eq_fun +/- theorem multiset.ae_measurable_prod' +/- theorem multiset.ae_measurable_prod 2022-01-08 14:24:00 2231173 feat(group_theory/commuting_probability): New file (#11243) This PR introduces commuting probabilities of finite groups. ESTIMATED CHANGES Added src/group_theory/commuting_probability.lean + theorem card_comm_eq_card_conj_classes_mul_card + def comm_prob + theorem comm_prob_def' + theorem comm_prob_def + theorem comm_prob_eq_one_iff + theorem comm_prob_le_one + theorem comm_prob_pos 2022-01-08 07:22:54 07f9b8e feat(data/sum/order): Linear and disjoint sums of orders (#11157) This defines the disjoint sum of two orders on `α ⊕ β` and the linear (aka lexicographic) sum of two orders on `α ⊕ₗ β` (a type synonym of `α ⊕ β`) in a new file `data.sum.order`. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/data/equiv/basic.lean +/- def equiv.sum_assoc - theorem equiv.sum_assoc_apply_in1 - theorem equiv.sum_assoc_apply_in2 - theorem equiv.sum_assoc_apply_in3 + theorem equiv.sum_assoc_apply_inl_inl + theorem equiv.sum_assoc_apply_inl_inr + theorem equiv.sum_assoc_apply_inr + theorem equiv.sum_assoc_symm_apply_inl + theorem equiv.sum_assoc_symm_apply_inr_inl + theorem equiv.sum_assoc_symm_apply_inr_inr +/- def equiv.sum_comm Modified src/data/sum/basic.lean + theorem sum.get_left_eq_none_iff + theorem sum.get_right_eq_none_iff + theorem sum.lift_rel.mono + theorem sum.lift_rel.mono_left + theorem sum.lift_rel.mono_right + inductive sum.lift_rel + theorem sum.lift_rel_inl_inl + theorem sum.lift_rel_inr_inr + theorem sum.lift_rel_swap_iff + theorem sum.not_lift_rel_inl_inr + theorem sum.not_lift_rel_inr_inl Added src/data/sum/order.lean + def order_iso.sum_assoc + theorem order_iso.sum_assoc_apply_inl_inl + theorem order_iso.sum_assoc_apply_inl_inr + theorem order_iso.sum_assoc_apply_inr + theorem order_iso.sum_assoc_symm_apply_inl + theorem order_iso.sum_assoc_symm_apply_inr_inl + theorem order_iso.sum_assoc_symm_apply_inr_inr + def order_iso.sum_comm + theorem order_iso.sum_comm_symm + def order_iso.sum_dual_distrib + theorem order_iso.sum_dual_distrib_inl + theorem order_iso.sum_dual_distrib_inr + theorem order_iso.sum_dual_distrib_symm_inl + theorem order_iso.sum_dual_distrib_symm_inr + def order_iso.sum_lex_assoc + theorem order_iso.sum_lex_assoc_apply_inl_inl + theorem order_iso.sum_lex_assoc_apply_inl_inr + theorem order_iso.sum_lex_assoc_apply_inr + theorem order_iso.sum_lex_assoc_symm_apply_inl + theorem order_iso.sum_lex_assoc_symm_apply_inr_inl + theorem order_iso.sum_lex_assoc_symm_apply_inr_inr + def order_iso.sum_lex_dual_antidistrib + theorem order_iso.sum_lex_dual_antidistrib_inl + theorem order_iso.sum_lex_dual_antidistrib_inr + theorem order_iso.sum_lex_dual_antidistrib_symm_inl + theorem order_iso.sum_lex_dual_antidistrib_symm_inr + theorem sum.densely_ordered_iff + theorem sum.inl_le_inl_iff + theorem sum.inl_lt_inl_iff + theorem sum.inl_mono + theorem sum.inl_strict_mono + def sum.inlₗ + theorem sum.inr_le_inr_iff + theorem sum.inr_lt_inr_iff + theorem sum.inr_mono + theorem sum.inr_strict_mono + def sum.inrₗ + theorem sum.le_def + theorem sum.lex.inl_bot + theorem sum.lex.inl_le_inl_iff + theorem sum.lex.inl_le_inr + theorem sum.lex.inl_lt_inl_iff + theorem sum.lex.inl_lt_inr + theorem sum.lex.inl_mono + theorem sum.lex.inl_strict_mono + theorem sum.lex.inr_le_inr_iff + theorem sum.lex.inr_lt_inr_iff + theorem sum.lex.inr_mono + theorem sum.lex.inr_strict_mono + theorem sum.lex.inr_top + theorem sum.lex.le_def + theorem sum.lex.lt_def + theorem sum.lex.not_inr_le_inl + theorem sum.lex.not_inr_lt_inl + theorem sum.lex.to_lex_le_to_lex + theorem sum.lex.to_lex_lt_to_lex + theorem sum.lex.to_lex_mono + theorem sum.lex.to_lex_strict_mono + theorem sum.lift_rel.refl + theorem sum.lift_rel.trans + theorem sum.lt_def + theorem sum.no_bot_order_iff + theorem sum.no_top_order_iff + theorem sum.not_inl_le_inr + theorem sum.not_inl_lt_inr + theorem sum.not_inr_le_inl + theorem sum.not_inr_lt_inl + theorem sum.swap_le_swap_iff + theorem sum.swap_lt_swap_iff Modified src/logic/basic.lean + theorem or.imp3 Modified src/order/lexicographic.lean +/- def of_lex +/- def to_lex Modified src/order/rel_classes.lean + theorem antisymm_of Modified src/set_theory/ordinal.lean Modified src/tactic/induction.lean 2022-01-08 00:14:42 303e77c feat(topology/metric_space/hausdorff_distance): make iffs (#11288) * Make `exists_edist_lt_of_inf_edist_lt` and `exists_dist_lt_of_inf_edist_lt` iffs. Rename to `inf_[e]dist_lt_iff`. * Simplify some proofs ESTIMATED CHANGES Modified src/analysis/normed_space/riesz_lemma.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean - theorem emetric.exists_edist_lt_of_inf_edist_lt + theorem emetric.inf_edist_lt_iff - theorem metric.exists_dist_lt_of_inf_dist_lt + theorem metric.inf_dist_lt_iff 2022-01-07 18:21:53 5cbfddd feat(data/finset/sym): Symmetric powers of a finset (#11142) This defines `finset.sym` and `finset.sym2`, which are the `finset` analogs of `sym` and `sym2`, in a new file `data.finset.sym`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.disjoint_filter_filter_neg Modified src/data/finset/prod.lean + theorem finset.diag_union_off_diag + theorem finset.disjoint_diag_off_diag + theorem finset.product_eq_empty Added src/data/finset/sym.lean + theorem finset.diag_mem_sym2_iff + theorem finset.eq_empty_of_sym_eq_empty + theorem finset.image_diag_union_image_off_diag + theorem finset.is_diag_mk_of_mem_diag + theorem finset.mem_sym2_iff + theorem finset.mem_sym_iff + theorem finset.mk_mem_sym2_iff + theorem finset.not_is_diag_mk_of_mem_off_diag + theorem finset.repeat_mem_sym + theorem finset.sym2_empty + theorem finset.sym2_eq_empty + theorem finset.sym2_mono + theorem finset.sym2_nonempty + theorem finset.sym2_singleton + theorem finset.sym2_univ + theorem finset.sym_empty + theorem finset.sym_eq_empty + theorem finset.sym_inter + theorem finset.sym_mono + theorem finset.sym_nonempty + theorem finset.sym_singleton + theorem finset.sym_succ + theorem finset.sym_union + theorem finset.sym_univ + theorem finset.sym_zero Modified src/data/sym/basic.lean + theorem sym.coe_repeat + theorem sym.eq_repeat_iff + theorem sym.mem_repeat Modified src/data/sym/card.lean + theorem finset.card_sym2 +/- theorem sym2.card_image_diag Modified src/data/sym/sym2.lean + theorem sym2.ball + theorem sym2.out_fst_mem + theorem sym2.out_snd_mem 2022-01-07 18:21:52 a8d37c1 feat(data/nat/factorization): Defining `factorization` (#10540) Defining `factorization` as a `finsupp`, as discussed in https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Prime.20factorizations and https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Proof.20of.20Euler's.20product.20formula.20for.20totient This is the first of a series of PRs to build up the infrastructure needed for the proof of Euler's product formula for the totient function. ESTIMATED CHANGES Added src/data/nat/factorization.lean + theorem nat.factor_iff_mem_factorization + theorem nat.factorization_eq_count + theorem nat.factorization_eq_zero_iff + theorem nat.factorization_inj + theorem nat.factorization_mul + theorem nat.factorization_one + theorem nat.factorization_pow + theorem nat.factorization_zero + theorem nat.prime.factorization + theorem nat.prime.factorization_pow + theorem nat.support_factorization Modified src/ring_theory/unique_factorization_domain.lean + theorem associated_of_factorization_eq + theorem factorization_eq_count + theorem factorization_mul + theorem factorization_one + theorem factorization_pow + theorem factorization_zero + theorem support_factorization 2022-01-07 18:21:50 3b02ad7 feat(topology/homotopy/equiv): Add homotopy equivalences between topological spaces (#10529) ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + theorem continuous_map.comp_id + theorem continuous_map.id_comp Added src/topology/homotopy/equiv.lean + theorem continuous_map.homotopy_equiv.coe_inv_fun + theorem continuous_map.homotopy_equiv.continuous + def continuous_map.homotopy_equiv.refl + def continuous_map.homotopy_equiv.simps.apply + def continuous_map.homotopy_equiv.simps.symm_apply + def continuous_map.homotopy_equiv.symm + theorem continuous_map.homotopy_equiv.symm_trans + theorem continuous_map.homotopy_equiv.to_fun_eq_coe + def continuous_map.homotopy_equiv.trans + structure continuous_map.homotopy_equiv + theorem homeomorph.coe_to_homotopy_equiv + theorem homeomorph.refl_to_homotopy_equiv + theorem homeomorph.symm_to_homotopy_equiv + def homeomorph.to_homotopy_equiv + theorem homeomorph.trans_to_homotopy_equiv 2022-01-07 16:25:53 13e99c7 feat(algebra,linear_algebra,ring_theory): more is_central_scalar instances (#11297) This provides new transitive scalar actions: * on `lie_submodule R L M` that match the actions on `submodule R M` * on quotients by `lie_submodule R L M` that match the actions on quotients by `submodule R M` The rest of the instances in this PR live in `Prop` so do not define any further actions. This also fixes some overly verbose instance names. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean Modified src/algebra/lie/quotient.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/linear_algebra/quotient.lean Modified src/linear_algebra/tensor_product.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/derivation.lean 2022-01-07 16:25:52 b8f5d0a chore(category_theory/abelian/basic): abelian categories have finite limits and finite colimits. (#11271) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean 2022-01-07 14:24:20 b430316 chore(topology/algebra/module/basic): add continuous_linear_map.is_central_scalar (#11291) ESTIMATED CHANGES Modified src/topology/algebra/module/basic.lean 2022-01-07 14:24:17 3b7a783 feat(topology/*): Gluing topological spaces (#9864) ESTIMATED CHANGES Modified src/algebraic_geometry/properties.lean Added src/category_theory/concrete_category/elementwise.lean Modified src/category_theory/limits/concrete_category.lean Modified src/category_theory/limits/shapes/concrete_category.lean Modified src/logic/function/basic.lean + theorem inv_image.equivalence Added src/topology/gluing.lean + theorem Top.glue_data.eqv_gen_of_π_eq + def Top.glue_data.from_open_subsets_glue + theorem Top.glue_data.from_open_subsets_glue_injective + theorem Top.glue_data.from_open_subsets_glue_is_open_map + theorem Top.glue_data.from_open_subsets_glue_open_embedding + theorem Top.glue_data.image_inter + theorem Top.glue_data.is_open_iff + def Top.glue_data.mk' + def Top.glue_data.mk_core.t' + theorem Top.glue_data.mk_core.t_inv + structure Top.glue_data.mk_core + def Top.glue_data.of_open_subsets + def Top.glue_data.open_cover_glue_homeo + theorem Top.glue_data.open_image_open + theorem Top.glue_data.preimage_image_eq_image' + theorem Top.glue_data.preimage_image_eq_image + theorem Top.glue_data.preimage_range + theorem Top.glue_data.range_from_open_subsets_glue + def Top.glue_data.rel + theorem Top.glue_data.rel_equiv + theorem Top.glue_data.ι_eq_iff_rel + theorem Top.glue_data.ι_from_open_subsets_glue + theorem Top.glue_data.ι_injective + theorem Top.glue_data.ι_jointly_surjective + theorem Top.glue_data.ι_open_embedding + theorem Top.glue_data.π_surjective + structure Top.glue_data 2022-01-07 12:43:41 6fb638b feat(*): add lemmas, golf (#11294) ### New lemmas * `function.mul_support_nonempty_iff` and `function.support_nonempty_iff`; * `set.infinite_union`; * `nat.exists_subseq_of_forall_mem_union` (to be used in an upcoming mass golfing of `is_pwo`/`is_wf`); * `hahn_series.coeff_inj`, `hahn_series.coeff_injective`, `hahn_series.coeff_fun_eq_zero_iff`, `hahn_series.support_eq_empty_iff`; * `nat.coe_order_embedding_of_set` (`simp` + `rfl`); * `nat.subtype.of_nat_range`, `nat.subtype.coe_comp_of_nat_range`. ### Golfed proofs * `set.countable.prod`; * `nat.order_embedding_of_set_range`; * `hahn-series.support_nonempty_iff`; ### Renamed * `set.finite.union_iff` → `set.finite_union`, add `@[simp]` attr; * `set.finite.diff` → `set.finite.of_diff`, drop 1 arg; ESTIMATED CHANGES Modified src/algebra/support.lean + theorem function.mul_support_nonempty_iff Modified src/data/equiv/denumerable.lean + theorem nat.subtype.coe_comp_of_nat_range + theorem nat.subtype.of_nat_range Modified src/data/set/countable.lean Modified src/data/set/finite.lean - theorem set.finite.diff + theorem set.finite.of_diff - theorem set.finite.union_iff + theorem set.finite_union + theorem set.infinite_union Modified src/number_theory/modular.lean Modified src/order/order_iso_nat.lean + theorem nat.coe_order_embedding_of_set + theorem nat.exists_subseq_of_forall_mem_union +/- theorem nat.order_embedding_of_set_apply Modified src/ring_theory/hahn_series.lean + theorem hahn_series.coeff_fun_eq_zero_iff + theorem hahn_series.coeff_inj + theorem hahn_series.coeff_injective +/- def hahn_series.support + theorem hahn_series.support_eq_empty_iff +/- theorem hahn_series.support_nonempty_iff +/- theorem hahn_series.support_zero +/- theorem hahn_series.zero_coeff 2022-01-06 19:34:08 0b96630 feat(algebra/{monoid_algebra/basic,free_non_unital_non_assoc_algebra,lie/free}): generalize typeclasses (#11283) This fixes a number of missing or problematic typeclasses: * The smul typeclasses on `monoid_algebra` had overly strong assumptions * `add_comm_group (monoid_algebra k G)` was missing. * `monoid_algebra` had diamonds in its int-module structures, which were different between the one inferred from `ring` and `add_group`. * `monoid_algebra` was missing an instance of the new `non_unital_non_assoc_ring`. * `free_non_unital_non_assoc_algebra` was missing a lot of smul typeclasses and transitive module structures that it should inherit from `monoid_algebra`. Since every instance should just be inherited, we change `free_non_unital_non_assoc_algebra` to an abbreviation. * `free_lie_algebra` had diamonds in its int-module and nat-module structures. * `free_lie_algebra` was missing transitive module structures. This also golfs some proofs about `free_non_unital_non_assoc_algebra`, and removes the `irreducible` attributes since these just make some obvious proofs more awkward. ESTIMATED CHANGES Modified src/algebra/free_non_unital_non_assoc_algebra.lean +/- def free_non_unital_non_assoc_algebra Modified src/algebra/lie/free.lean +/- theorem free_lie_algebra.rel.add_left +/- theorem free_lie_algebra.rel.neg + theorem free_lie_algebra.rel.smul_of_tower + theorem free_lie_algebra.rel.sub_left + theorem free_lie_algebra.rel.sub_right Modified src/algebra/monoid_algebra/basic.lean 2022-01-06 17:51:55 d0bf8bd feat(set_theory/ordinal): `ordinal` is a successor order (#11284) This provides the `succ_order` instance for `ordinal`. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean 2022-01-06 17:51:52 5893fbf feat(data/polynomial/monic): add two lemmas on degrees of monic polynomials (#11259) This PR is a step in the direction of simplifying #11139. The two lemmas involve computing the degree of a power of monic polynomials. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2311139.20taylor.20sum.20and.20nat_degree_taylor) ESTIMATED CHANGES Modified src/data/polynomial/monic.lean + theorem polynomial.monic.nat_degree_pow + theorem polynomial.nat_degree_pow_X_add_C 2022-01-06 14:41:11 9b39ab2 feat(algebra/group/freiman): Freiman homomorphisms (#10497) This defines Freiman homomorphisms, which are maps preserving products of `n` elements (but only in the codomain. One can never get back to the domain). This is useful in additive combinatorics. ESTIMATED CHANGES Added src/algebra/group/freiman.lean + structure add_freiman_hom + theorem freiman_hom.cancel_left_on + theorem freiman_hom.cancel_right + theorem freiman_hom.cancel_right_on + theorem freiman_hom.coe_comp + theorem freiman_hom.coe_mk + theorem freiman_hom.comp_apply + theorem freiman_hom.comp_assoc + theorem freiman_hom.comp_id + def freiman_hom.const + theorem freiman_hom.const_apply + theorem freiman_hom.const_comp + theorem freiman_hom.div_apply + theorem freiman_hom.div_comp + theorem freiman_hom.ext + def freiman_hom.freiman_hom_class_of_le + theorem freiman_hom.id_comp + theorem freiman_hom.inv_apply + theorem freiman_hom.inv_comp + theorem freiman_hom.mk_coe + theorem freiman_hom.mul_apply + theorem freiman_hom.mul_comp + theorem freiman_hom.one_apply + theorem freiman_hom.one_comp + def freiman_hom.to_freiman_hom + theorem freiman_hom.to_freiman_hom_coe + theorem freiman_hom.to_freiman_hom_injective + theorem freiman_hom.to_fun_eq_coe + structure freiman_hom + theorem map_prod_eq_map_prod + theorem map_prod_eq_map_prod_of_le + def monoid_hom.to_freiman_hom + theorem monoid_hom.to_freiman_hom_coe + theorem monoid_hom.to_freiman_hom_injective Modified src/data/fun_like.lean 2022-01-06 12:39:56 d2428fa feat(ring_theory/localization): Localization is the localization of localization. (#11145) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.exists_image_iff Modified src/ring_theory/localization.lean + theorem is_localization.is_localization_of_is_exists_mul_mem + theorem is_localization.is_localization_of_submonoid_le + def is_localization.localization_algebra_of_submonoid_le + theorem is_localization.localization_is_scalar_tower_of_submonoid_le 2022-01-06 10:39:24 54c2567 feat(category_theory/sites): The pushforward pullback adjunction (#11273) ESTIMATED CHANGES Modified src/category_theory/sites/cover_preserving.lean + theorem category_theory.compatible_preserving_of_flat + def category_theory.sites.pullback_pushforward_adjunction + def category_theory.sites.pushforward 2022-01-06 10:39:23 7af5e86 feat(algebra/big_operators/multiset): Multiset product under some usual maps (#10907) Product of the image of a multiset under `λ a, (f a)⁻¹`, `λ a, f a / g a`, `λ a, f a ^ n` (for `n` in `ℕ` and `ℤ`). ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_inv_distrib Modified src/algebra/big_operators/multiset.lean +/- theorem multiset.pow_count + theorem multiset.prod_hom' + theorem multiset.prod_hom₂ + theorem multiset.prod_map_div + theorem multiset.prod_map_div₀ + theorem multiset.prod_map_inv' + theorem multiset.prod_map_inv₀ +/- theorem multiset.prod_map_mul +/- theorem multiset.prod_map_one + theorem multiset.prod_map_pow + theorem multiset.prod_map_zpow + theorem multiset.prod_map_zpow₀ Modified src/algebra/group/prod.lean + def div_monoid_hom + def div_monoid_with_zero_hom + def mul_monoid_hom + def mul_monoid_with_zero_hom + def mul_mul_hom Modified src/algebra/group_with_zero/basic.lean + def inv_monoid_with_zero_hom Modified src/algebra/smul_with_zero.lean + def smul_monoid_with_zero_hom Modified src/data/list/basic.lean + theorem list.foldl_hom₂ + theorem list.foldr_hom₂ Modified src/data/list/big_operators.lean +/- theorem list.prod_hom_rel + theorem list.prod_hom₂ Modified src/group_theory/group_action/prod.lean + def smul_monoid_hom + def smul_mul_hom 2022-01-06 09:57:30 c391512 feat(topology/metric_space/kuratowski): make the Kuratowski embedding have codomain the "true" ℓ^∞(ℕ) (#11280) (Previously, we didn't have the "true" ℓ^∞(ℕ), so we used the space of bounded continuous functions on `ℕ` equipped with the discrete topology.) ESTIMATED CHANGES Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/kuratowski.lean - def ℓ_infty_ℝ 2022-01-06 07:55:41 f07f87e feat(ring_theory/power_series/basic): algebra, solving TODOs (#11267) `algebra (mv_polynomial σ R) (mv_power_series σ A)` `algebra (mv_power_series σ R) (mv_power_series σ A)` `algebra (polynomial R) (power_series A)` `algebra (power_series R) (power_series A)` `coe_to_mv_power_series.alg_hom` `coe_to_power_series.alg_hom` And API about the injectivity of coercions ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem mv_polynomial.algebra_map_apply +/- theorem mv_polynomial.coe_add + theorem mv_polynomial.coe_def + theorem mv_polynomial.coe_eq_one_iff + theorem mv_polynomial.coe_eq_zero_iff + theorem mv_polynomial.coe_inj + theorem mv_polynomial.coe_injective +/- theorem mv_polynomial.coe_mul + def mv_polynomial.coe_to_mv_power_series.alg_hom + theorem mv_polynomial.coe_to_mv_power_series.alg_hom_apply + theorem mv_polynomial.coe_to_mv_power_series.ring_hom_apply +/- theorem mv_polynomial.coeff_coe + theorem mv_power_series.algebra_map_apply'' + theorem mv_power_series.algebra_map_apply' +/- theorem polynomial.coe_add + theorem polynomial.coe_def + theorem polynomial.coe_eq_one_iff + theorem polynomial.coe_eq_zero_iff + theorem polynomial.coe_inj + theorem polynomial.coe_injective +/- theorem polynomial.coe_mul + def polynomial.coe_to_power_series.alg_hom + theorem polynomial.coe_to_power_series.alg_hom_apply +/- def polynomial.coe_to_power_series.ring_hom + theorem polynomial.coe_to_power_series.ring_hom_apply +/- theorem polynomial.coeff_coe + theorem power_series.algebra_map_apply'' + theorem power_series.algebra_map_apply' + theorem power_series.map_C + theorem power_series.map_X 2022-01-06 07:55:40 6952172 feat(data/nat/digits): digits_len (#11187) Via a new `data.nat.log` import. Also unprivate `digits_eq_cons_digits_div`. The file needs a refactor to make the names more mathlib-like, otherwise I would have named it `length_digits`. ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem nat.digits_eq_cons_digits_div + theorem nat.digits_len 2022-01-06 07:05:28 b3260f3 feat(measure_theory/constructions/borel_space): new lemma tendsto_measure_cthickening (#11009) Prove that, when `r` tends to `0`, the measure of the `r`-thickening of a set `s` tends to the measure of `s`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem tendsto_measure_cthickening + theorem tendsto_measure_cthickening_of_is_closed + theorem tendsto_measure_cthickening_of_is_compact Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.tendsto_measure_bInter_gt 2022-01-05 23:45:35 9f28b5d chore(ci): update some workflows to use custom bot token (#11274) ESTIMATED CHANGES Modified .github/workflows/add_label_from_review.yml Modified .github/workflows/dependent-issues.yml Modified .github/workflows/merge_conflicts.yml 2022-01-05 23:45:33 e718965 feat(topology/uniform_space/compact_convergence): when the domain is compact, compact convergence is just uniform convergence (#11262) ESTIMATED CHANGES Modified src/topology/uniform_space/compact_convergence.lean + theorem continuous_map.has_basis_compact_convergence_uniformity_of_compact + theorem continuous_map.tendsto_iff_tendsto_uniformly 2022-01-05 23:45:32 a7611b2 chore(*): notation for `units` (#11236) ESTIMATED CHANGES Modified counterexamples/direct_sum_is_internal.lean +/- theorem units_int.one_ne_neg_one +/- def with_sign Modified src/algebra/algebra/basic.lean Modified src/algebra/algebra/spectrum.lean +/- theorem spectrum.smul_mem_smul_iff +/- theorem spectrum.unit_mem_mul_iff_mem_swap_mul +/- theorem spectrum.unit_smul_eq_smul Modified src/algebra/associated.lean +/- def associated +/- theorem associates.coe_unit_eq_one +/- theorem associates.units_eq_one +/- theorem unit_associated_one +/- theorem units_eq_one Modified src/algebra/big_operators/basic.lean +/- theorem units.coe_prod Modified src/algebra/divisibility.lean Modified src/algebra/field/basic.lean +/- theorem ring_hom.map_units_inv Modified src/algebra/gcd_monoid/basic.lean +/- theorem exists_eq_pow_of_mul_eq_pow +/- theorem lcm_units_coe_left +/- theorem lcm_units_coe_right +/- theorem normalize_coe_units Modified src/algebra/group/commute.lean Modified src/algebra/group/conj.lean +/- def is_conj Modified src/algebra/group/opposite.lean +/- theorem units.coe_op_equiv_symm +/- theorem units.coe_unop_op_equiv +/- def units.op_equiv Modified src/algebra/group/prod.lean +/- def embed_product +/- def mul_equiv.prod_units Modified src/algebra/group/semiconj.lean +/- theorem semiconj_by.units_coe +/- theorem semiconj_by.units_coe_iff +/- theorem semiconj_by.units_inv_right +/- theorem semiconj_by.units_inv_right_iff +/- theorem semiconj_by.units_inv_symm_left +/- theorem semiconj_by.units_inv_symm_left_iff +/- theorem semiconj_by.units_of_coe +/- theorem units.mk_semiconj_by Modified src/algebra/group/units.lean +/- def divp +/- theorem divp_assoc +/- theorem divp_divp_eq_divp_mul +/- theorem divp_eq_divp_iff +/- theorem divp_eq_iff_mul_eq +/- theorem divp_eq_one_iff_eq +/- theorem divp_inv +/- theorem divp_left_inj +/- theorem divp_mul_cancel +/- theorem divp_mul_divp +/- theorem divp_self +/- def is_unit +/- theorem mul_divp_cancel +/- theorem one_divp +/- theorem units.coe_eq_one +/- theorem units.coe_one +/- def units.copy +/- theorem units.copy_eq +/- theorem units.eq_iff +/- theorem units.ext_iff +/- theorem units.inv_eq_coe_inv +/- theorem units.inv_eq_of_mul_eq_one +/- theorem units.inv_mul_cancel_left +/- theorem units.inv_mul_cancel_right +/- theorem units.inv_mul_of_eq +/- theorem units.inv_unique +/- theorem units.is_unit_mul_units +/- theorem units.is_unit_units_mul +/- theorem units.mk_coe +/- theorem units.mul_inv_cancel_left +/- theorem units.mul_inv_cancel_right +/- theorem units.mul_inv_of_eq +/- theorem units.mul_left_inj +/- theorem units.mul_right_inj +/- def units.simps.coe +/- def units.simps.coe_inv Modified src/algebra/group/units_hom.lean +/- def monoid_hom.to_hom_units +/- def units.coe_hom +/- theorem units.coe_hom_apply +/- theorem units.coe_lift_right +/- theorem units.coe_map +/- theorem units.coe_map_inv +/- def units.lift_right +/- theorem units.lift_right_inv_mul +/- def units.map +/- theorem units.map_id +/- theorem units.mul_lift_right_inv Modified src/algebra/group_power/lemmas.lean +/- theorem commute.units_zpow_left +/- theorem commute.units_zpow_right +/- theorem int.units_pow_eq_pow_mod_two +/- theorem int.units_sq +/- theorem semiconj_by.units_zpow_right +/- theorem units.coe_pow +/- theorem units.coe_zpow +/- theorem units.conj_pow' +/- theorem units.conj_pow Modified src/algebra/group_with_zero/basic.lean +/- theorem divp_eq_div +/- theorem ring.inverse_unit +/- theorem units.coe_inv' +/- theorem units.exists_iff_ne_zero +/- theorem units.inv_mul' +/- def units.mk0 +/- theorem units.mk0_coe +/- theorem units.mul_inv' +/- theorem units.mul_left_eq_zero +/- theorem units.mul_right_eq_zero +/- theorem units.ne_zero Modified src/algebra/group_with_zero/power.lean +/- theorem units.coe_zpow₀ Modified src/algebra/invertible.lean +/- theorem inv_of_units +/- def unit_of_invertible +/- def units.invertible Modified src/algebra/lie/skew_adjoint.lean +/- theorem mem_skew_adjoint_matrices_lie_subalgebra_unit_smul Modified src/algebra/module/basic.lean +/- theorem units.neg_smul Modified src/algebra/module/linear_map.lean Modified src/algebra/order/group.lean Modified src/algebra/order/monoid.lean +/- theorem units.coe_le_coe +/- theorem units.coe_lt_coe +/- theorem units.max_coe +/- theorem units.min_coe Modified src/algebra/order/ring.lean +/- theorem units.inv_neg +/- theorem units.inv_pos Modified src/algebra/order/with_zero.lean +/- theorem units.zero_lt Modified src/algebra/regular/basic.lean +/- theorem units.is_regular Modified src/algebra/regular/smul.lean +/- theorem units.is_smul_regular Modified src/algebra/ring/basic.lean +/- theorem units.inv_eq_self_iff Modified src/algebra/star/basic.lean +/- theorem units.coe_star +/- theorem units.coe_star_inv Modified src/algebraic_geometry/EllipticCurve.lean Modified src/analysis/asymptotics/asymptotics.lean +/- theorem asymptotics.is_O_with.const_mul_right' +/- theorem asymptotics.is_O_with_self_const_mul' Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable_at_inverse +/- theorem fderiv_inverse +/- theorem has_fderiv_at_ring_inverse Modified src/analysis/calculus/times_cont_diff.lean +/- theorem times_cont_diff_at_ring_inverse Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/analysis/normed_space/basic.lean +/- theorem units.norm_pos Modified src/analysis/normed_space/int.lean +/- theorem int.nnnorm_coe_units +/- theorem int.norm_coe_units Modified src/analysis/normed_space/units.lean +/- theorem normed_ring.inverse_add +/- theorem normed_ring.inverse_add_norm +/- theorem normed_ring.inverse_add_norm_diff_first_order +/- theorem normed_ring.inverse_add_norm_diff_nth_order +/- theorem normed_ring.inverse_add_norm_diff_second_order +/- theorem normed_ring.inverse_add_nth_order +/- theorem normed_ring.inverse_continuous_at +/- def units.add +/- theorem units.is_open_map_coe +/- def units.one_sub +/- theorem units.open_embedding_coe +/- def units.unit_of_nearby Modified src/category_theory/endomorphism.lean +/- def category_theory.Aut.units_End_equiv_Aut Modified src/category_theory/single_obj.lean +/- def units.to_Aut +/- theorem units.to_Aut_hom +/- theorem units.to_Aut_inv Modified src/data/equiv/mul_add.lean +/- def to_units +/- theorem units.coe_inv +/- def units.map_equiv +/- def units.mul_left +/- theorem units.mul_left_bijective +/- theorem units.mul_left_symm +/- def units.mul_right +/- theorem units.mul_right_bijective +/- theorem units.mul_right_symm Modified src/data/fintype/basic.lean +/- theorem fintype.card_units +/- theorem fintype.card_units_int +/- def units_equiv_ne_zero +/- theorem units_int.univ Modified src/data/int/absolute_value.lean +/- theorem absolute_value.map_units_int +/- theorem absolute_value.map_units_int_cast +/- theorem absolute_value.map_units_int_smul Modified src/data/int/basic.lean +/- theorem int.units_coe_mul_self +/- theorem int.units_eq_one_or +/- theorem int.units_inv_eq_self +/- theorem int.units_mul_self +/- theorem int.units_nat_abs Modified src/data/matrix/rank.lean +/- theorem matrix.rank_unit Modified src/data/nat/basic.lean +/- theorem nat.units_eq_one Modified src/data/nat/totient.lean +/- theorem nat.card_units_zmod_lt_sub_one +/- theorem nat.prime_iff_card_units +/- theorem zmod.card_units_eq_totient Modified src/data/polynomial/field_division.lean +/- theorem polynomial.coeff_inv_units Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.coeff_coe_units_zero_ne_zero +/- theorem polynomial.degree_coe_units +/- theorem polynomial.nat_degree_coe_units +/- theorem polynomial.units_coeff_zero_smul Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/real/sign.lean Modified src/data/zmod/basic.lean +/- theorem zmod.inv_coe_unit +/- def zmod.unit_of_coprime +/- theorem zmod.val_coe_unit_coprime Modified src/deprecated/group.lean +/- theorem units.coe_is_monoid_hom +/- theorem units.coe_map' +/- def units.map' Modified src/dynamics/circle/rotation_number/translation_number.lean +/- theorem circle_deg1_lift.coe_to_order_iso +/- theorem circle_deg1_lift.coe_to_order_iso_inv +/- theorem circle_deg1_lift.coe_to_order_iso_symm +/- def circle_deg1_lift.to_order_iso +/- def circle_deg1_lift.translate +/- theorem circle_deg1_lift.translation_number_conj_eq' +/- theorem circle_deg1_lift.translation_number_conj_eq +/- theorem circle_deg1_lift.translation_number_units_inv +/- theorem circle_deg1_lift.translation_number_zpow +/- theorem circle_deg1_lift.units_apply_inv_apply +/- theorem circle_deg1_lift.units_coe +/- theorem circle_deg1_lift.units_inv_apply_apply +/- theorem circle_deg1_lift.units_semiconj_of_translation_number_eq Modified src/field_theory/finite/basic.lean +/- theorem finite_field.prod_univ_units_id_eq_neg_one +/- theorem finite_field.sum_pow_units +/- theorem zmod.card_units +/- theorem zmod.pow_totient +/- theorem zmod.units_pow_card_sub_one_eq_one Modified src/field_theory/separable.lean +/- theorem polynomial.separable_X_pow_sub_C_unit Modified src/field_theory/splitting_field.lean Modified src/geometry/manifold/instances/units_of_normed_algebra.lean +/- theorem units.chart_at_apply +/- theorem units.chart_at_source Modified src/group_theory/congruence.lean Modified src/group_theory/group_action/units.lean +/- theorem units.smul_def Modified src/group_theory/monoid_localization.lean Modified src/group_theory/order_of_element.lean +/- theorem order_of_units Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/sign.lean +/- theorem equiv.perm.eq_sign_of_surjective_hom +/- def equiv.perm.sign +/- def equiv.perm.sign_aux2 +/- def equiv.perm.sign_aux3 +/- def equiv.perm.sign_aux +/- theorem equiv.perm.sign_surjective Modified src/group_theory/specific_groups/quaternion.lean Modified src/group_theory/submonoid/center.lean Modified src/group_theory/submonoid/inverses.lean +/- theorem submonoid.unit_mem_left_inv Modified src/linear_algebra/affine_space/affine_equiv.lean +/- theorem affine_equiv.coe_homothety_units_mul_hom_apply +/- theorem affine_equiv.coe_homothety_units_mul_hom_apply_symm +/- def affine_equiv.equiv_units_affine_map +/- def affine_equiv.homothety_units_mul_hom Modified src/linear_algebra/basic.lean +/- def linear_equiv.smul_of_unit +/- def linear_map.general_linear_group Modified src/linear_algebra/basis.lean +/- def basis.units_smul +/- theorem basis.units_smul_apply Modified src/linear_algebra/determinant.lean +/- theorem basis.det_units_smul Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/general_linear_group.lean +/- def matrix.general_linear_group.det Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/matrix/basis.lean +/- theorem basis.to_matrix_units_smul Modified src/linear_algebra/matrix/determinant.lean +/- theorem matrix.det_units_conj' +/- theorem matrix.det_units_conj Modified src/linear_algebra/matrix/nonsingular_inverse.lean +/- theorem matrix.inv_smul' +/- def matrix.unit_of_det_invertible Modified src/linear_algebra/matrix/zpow.lean +/- theorem matrix.units.coe_inv'' +/- theorem matrix.units.coe_zpow Modified src/linear_algebra/orientation.lean +/- theorem module.ray.units_smul_of_neg +/- theorem module.ray.units_smul_of_pos +/- theorem units_inv_smul +/- theorem units_smul_eq_neg_iff +/- theorem units_smul_eq_self_iff Modified src/linear_algebra/quadratic_form/basic.lean Modified src/linear_algebra/quadratic_form/real.lean Modified src/linear_algebra/tensor_product.lean Modified src/linear_algebra/trace.lean +/- theorem linear_map.trace_conj Modified src/measure_theory/group/arithmetic.lean Modified src/number_theory/arithmetic_function.lean +/- def nat.arithmetic_function.zeta_unit Modified src/number_theory/lucas_lehmer.lean +/- theorem lucas_lehmer.X.units_card Modified src/number_theory/lucas_primality.lean Modified src/number_theory/padics/padic_integers.lean +/- def padic_int.mk_units +/- theorem padic_int.norm_units +/- def padic_int.unit_coeff Modified src/number_theory/quadratic_reciprocity.lean +/- theorem zmod.euler_criterion_units Modified src/ring_theory/class_group.lean +/- def class_group +/- theorem coe_to_principal_ideal +/- def to_principal_ideal +/- theorem to_principal_ideal_eq_iff Modified src/ring_theory/discrete_valuation_ring.lean +/- theorem discrete_valuation_ring.add_val_def' +/- theorem discrete_valuation_ring.add_val_def +/- theorem discrete_valuation_ring.unit_mul_pow_congr_unit Modified src/ring_theory/fintype.lean Modified src/ring_theory/fractional_ideal.lean +/- theorem fractional_ideal.fg_unit Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/multiplicity.lean +/- theorem multiplicity.unit_left +/- theorem multiplicity.unit_right Modified src/ring_theory/power_series/basic.lean +/- theorem mv_power_series.coeff_inv_of_unit +/- theorem mv_power_series.constant_coeff_inv_of_unit +/- def mv_power_series.inv_of_unit +/- theorem mv_power_series.mul_inv_of_unit +/- theorem power_series.coeff_inv_of_unit +/- theorem power_series.constant_coeff_inv_of_unit +/- def power_series.inv_of_unit +/- theorem power_series.mul_inv_of_unit Modified src/ring_theory/power_series/well_known.lean +/- theorem power_series.coeff_inv_units_sub +/- theorem power_series.constant_coeff_inv_units_sub +/- def power_series.inv_units_sub +/- theorem power_series.inv_units_sub_mul_X +/- theorem power_series.inv_units_sub_mul_sub +/- theorem power_series.map_inv_units_sub Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.coe_units_iff +/- theorem is_primitive_root.eq_pow_of_mem_roots_of_unity +/- theorem is_primitive_root.is_primitive_root_iff' +/- theorem is_primitive_root.zpowers_eq +/- theorem map_roots_of_unity +/- theorem mem_roots_of_unity +/- theorem mem_roots_of_unity_iff_mem_nth_roots +/- def roots_of_unity Modified src/ring_theory/subring/basic.lean Modified src/ring_theory/subsemiring/basic.lean +/- theorem mem_pos_monoid Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/basic.lean +/- theorem add_valuation.map_units_inv +/- def valuation.lt_add_subgroup +/- theorem valuation.map_units_inv +/- theorem valuation.unit_map_eq Modified src/ring_theory/valuation/integers.lean Modified src/topology/algebra/field.lean +/- theorem topological_division_ring.continuous_units_inv +/- theorem topological_division_ring.units_top_group +/- theorem topological_ring.induced_units.continuous_coe +/- def topological_ring.topological_space_units Modified src/topology/algebra/group.lean +/- def units.homeomorph.prod_units Modified src/topology/algebra/module/basic.lean +/- def continuous_linear_equiv.of_unit +/- def continuous_linear_equiv.to_unit +/- def continuous_linear_equiv.units_equiv +/- theorem continuous_linear_equiv.units_equiv_apply +/- def continuous_linear_equiv.units_equiv_aut +/- theorem continuous_linear_equiv.units_equiv_aut_apply +/- theorem continuous_linear_equiv.units_equiv_aut_apply_symm Modified src/topology/algebra/monoid.lean +/- theorem units.continuous_coe Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/valuation.lean +/- theorem valued.subgroups_basis Modified src/topology/algebra/valued_field.lean +/- theorem valuation.inversion_estimate Modified src/topology/algebra/with_zero_topology.lean +/- theorem linear_ordered_comm_group_with_zero.directed_lt +/- theorem linear_ordered_comm_group_with_zero.has_basis_nhds_units +/- theorem linear_ordered_comm_group_with_zero.nhds_coe_units +/- theorem linear_ordered_comm_group_with_zero.nhds_zero_of_units +/- theorem linear_ordered_comm_group_with_zero.singleton_nhds_of_units +/- theorem linear_ordered_comm_group_with_zero.tendsto_units Modified test/instance_diamonds.lean 2022-01-05 23:45:31 cac4e19 feat(set_theory/ordinal_arithmetic): Proved characterization of `log` (#11192) As well as a few simple missing lemmas. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.le_mul_left + theorem ordinal.le_mul_right + theorem ordinal.log_one + theorem ordinal.log_power + theorem ordinal.log_power_mul_add + theorem ordinal.lt_one_iff_zero + theorem ordinal.power_mul_add_lt_power_mul_succ + theorem ordinal.power_mul_add_lt_power_succ + theorem ordinal.power_mul_add_pos 2022-01-05 23:45:29 b67857e refactor(set_theory/ordinal_arithmetic): Reworked `sup` and `bsup` API (#11048) This PR does two things: - It reworks and matches, for the most part, the API for `ordinal.sup` and `ordinal.bsup`. - It introduces `ordinal.lsub` and `ordinal.blsub` for (bounded) least strict upper bounds, and proves the expected results. ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.succ_ne_self + theorem ordinal.typein_lt_self +/- theorem ordinal.typein_lt_type Modified src/set_theory/ordinal_arithmetic.lean + def ordinal.blsub + theorem ordinal.blsub_eq_lsub + theorem ordinal.blsub_id + theorem ordinal.blsub_le_bsup_succ + theorem ordinal.blsub_le_iff_lt + theorem ordinal.blsub_type + theorem ordinal.bsup_eq_blsub + theorem ordinal.bsup_eq_sup + theorem ordinal.bsup_le_blsub + theorem ordinal.bsup_not_succ_of_ne_bsup + theorem ordinal.bsup_succ_eq_blsub + theorem ordinal.bsup_succ_le_blsub +/- theorem ordinal.is_normal.bsup + def ordinal.lsub + theorem ordinal.lsub_eq_blsub + theorem ordinal.lsub_le_iff_lt + theorem ordinal.lsub_le_sup_succ + theorem ordinal.lt_blsub +/- theorem ordinal.lt_bsup + theorem ordinal.lt_bsup_of_limit + theorem ordinal.lt_bsup_of_ne_bsup + theorem ordinal.lt_lsub + theorem ordinal.lt_sup_of_ne_sup + theorem ordinal.sup_eq_bsup + theorem ordinal.sup_eq_lsub + theorem ordinal.sup_le_lsub + theorem ordinal.sup_not_succ_of_ne_sup - theorem ordinal.sup_succ + theorem ordinal.sup_succ_eq_lsub + theorem ordinal.sup_succ_le_lsub 2022-01-05 22:31:56 771d144 feat(analysis/normed_space/lp_space): completeness of the lp space on `Π i, E i` (#11094) ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem normed_group.uniformity_basis_dist Modified src/analysis/normed/group/pointwise.lean + theorem metric.bounded.exists_pos_norm_le Modified src/analysis/normed_space/lp_space.lean + theorem lp.mem_ℓp_of_tendsto + theorem lp.norm_apply_le_norm + theorem lp.norm_apply_le_of_tendsto + theorem lp.norm_le_of_forall_le' + theorem lp.norm_le_of_forall_le + theorem lp.norm_le_of_forall_sum_le + theorem lp.norm_le_of_tendsto + theorem lp.norm_le_of_tsum_le + theorem lp.sum_rpow_le_norm_rpow + theorem lp.sum_rpow_le_of_tendsto + theorem lp.tendsto_lp_of_tendsto_pi + theorem lp.uniform_continuous_coe + theorem mem_ℓp_gen' +/- theorem mem_ℓp_gen Modified src/order/filter/at_top_bot.lean + theorem filter.eventually_at_bot_curry + theorem filter.eventually_at_top_curry Modified src/topology/algebra/infinite_sum.lean + theorem finite_of_summable_const Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq.eventually_eventually 2022-01-05 19:08:16 8b2d181 feat(ring_theory/laurent_series): laurent_series is_fraction_ring over power_series (#11220) ESTIMATED CHANGES Modified src/ring_theory/laurent_series.lean Modified src/ring_theory/localization.lean + theorem is_localization.of_le Modified src/ring_theory/non_zero_divisors.lean + theorem is_unit_of_mem_non_zero_divisors Modified src/ring_theory/power_series/basic.lean + theorem power_series.X_ne_zero 2022-01-05 17:28:18 f6dfea6 feat(measure_theory/integral): Cauchy integral formula for a circle (#10000) ESTIMATED CHANGES Modified src/analysis/box_integral/box/basic.lean + theorem box_integral.box.Ioo_subset_coe + theorem box_integral.box.Union_Ioo_of_tendsto + theorem box_integral.box.exists_seq_mono_tendsto +/- def box_integral.box.face + theorem box_integral.box.monotone_face Modified src/analysis/box_integral/partition/measure.lean + theorem box_integral.box.Ioo_ae_eq_Icc + theorem box_integral.box.coe_ae_eq_Icc +/- theorem box_integral.box.measurable_set_Icc + theorem box_integral.box.measurable_set_Ioo +/- theorem box_integral.box.measurable_set_coe +/- theorem box_integral.box.measure_Icc_lt_top +/- theorem box_integral.box.measure_coe_lt_top Added src/analysis/complex/cauchy_integral.lean + theorem complex.circle_integral_div_sub_of_differentiable_on_off_countable + theorem complex.circle_integral_eq_zero_of_differentiable_on_off_countable + theorem complex.circle_integral_sub_center_inv_smul_eq_of_differentiable_on_annulus_off_countable + theorem complex.circle_integral_sub_center_inv_smul_of_differentiable_on_off_countable + theorem complex.circle_integral_sub_center_inv_smul_of_differentiable_on_off_countable_of_tendsto + theorem complex.circle_integral_sub_inv_smul_of_differentiable_on_off_countable + theorem complex.circle_integral_sub_inv_smul_of_differentiable_on_off_countable_aux + theorem complex.has_fpower_series_on_ball_of_differentiable_off_countable + theorem complex.integral_boundary_rect_eq_zero_of_differentiable_on_off_countable + theorem complex.integral_boundary_rect_of_has_fderiv_within_at_real_off_countable + theorem complex.two_pi_I_inv_smul_circle_integral_sub_inv_smul_of_differentiable_on_off_countable Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.measure.pi_Ioo_ae_eq_pi_Ioc Modified src/measure_theory/integral/divergence_theorem.lean + theorem measure_theory.integral_divergence_of_has_fderiv_within_at_off_countable_aux₁ + theorem measure_theory.integral_divergence_of_has_fderiv_within_at_off_countable_aux₂ Modified src/topology/separation.lean + theorem tendsto_nhds_unique_of_frequently_eq 2022-01-05 16:16:53 6bf9041 doc(analysis/normed/group/basic): show notation in the typeclass docstring (#11260) ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean 2022-01-05 16:16:51 3ab1c1c feat(algebra/polynomial/big_operators): lemmas about polynomial degree of products (#11258) These already existed for `nat_degree` but `degree` versions seemed missing. from flt-regular ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean + theorem polynomial.degree_list_prod_le + theorem polynomial.degree_multiset_prod_le + theorem polynomial.degree_prod_le 2022-01-05 16:16:50 a1f4ac3 chore(topology): move 3 files to `topology/algebra/module/` (#11242) ESTIMATED CHANGES Modified src/analysis/normed_space/banach_steinhaus.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/weak_dual.lean Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/topology/algebra/algebra.lean Modified src/topology/algebra/continuous_affine_map.lean Modified src/topology/algebra/filter_basis.lean Renamed src/topology/algebra/module.lean to src/topology/algebra/module/basic.lean Renamed src/topology/algebra/multilinear.lean to src/topology/algebra/module/multilinear.lean Renamed src/topology/algebra/weak_dual_topology.lean to src/topology/algebra/module/weak_dual.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/instances/real_vector_space.lean Modified src/topology/vector_bundle.lean 2022-01-05 14:15:46 9fd7a02 feat(category_theory/sites/left_exact): Sheafification is left exact. (#11252) ESTIMATED CHANGES Added src/category_theory/sites/left_exact.lean + def category_theory.grothendieck_topology.cone_comp_evaluation_of_cone_comp_diagram_functor_comp_evaluation + def category_theory.grothendieck_topology.lift_to_diagram_limit_obj + def category_theory.grothendieck_topology.lift_to_plus_obj_limit_obj + theorem category_theory.grothendieck_topology.lift_to_plus_obj_limit_obj_fac 2022-01-05 14:15:44 a580727 chore(topology/omega_complete_partial_order): golf (#11250) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.set_of_bijective Modified src/order/omega_complete_partial_order.lean + theorem complete_lattice.inf_continuous' Modified src/topology/omega_complete_partial_order.lean +/- theorem Scott.is_open_sUnion 2022-01-05 14:15:40 802f23c feat(data/fintype/basic): `set_fintype_card_eq_univ_iff` (#11244) Adds companion lemma to `set_fintype_card_le_univ`. This PR also moves several `set.to_finset` lemmas earlier in the file. ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- theorem set.to_finset_empty +/- theorem set.to_finset_eq_empty_iff +/- def set_fintype + theorem set_fintype_card_eq_univ_iff +/- theorem set_fintype_card_le_univ 2022-01-05 14:15:39 b27e33a feat(data/{fin/vec_notation, matrix/notation}): `cons_{add,sub,dot_product}_cons` (#11241) While these can be proved by `simp`, they are not rejected by the simp linter. ESTIMATED CHANGES Modified src/data/fin/vec_notation.lean + theorem matrix.cons_add_cons + theorem matrix.cons_sub_cons Modified src/data/matrix/notation.lean + theorem matrix.cons_dot_product_cons 2022-01-05 14:15:38 98b64f4 feat(linear_algebra/orientation): bases from orientations (#11234) Add a lemma giving the orientation of a basis constructed with `units_smul`, and thus definitions and lemmas to construct a basis from an orientation. ESTIMATED CHANGES Modified src/linear_algebra/orientation.lean + def basis.adjust_to_orientation + theorem basis.adjust_to_orientation_apply_eq_or_eq_neg + theorem basis.orientation_adjust_to_orientation + theorem basis.orientation_neg_single + theorem basis.orientation_units_smul + def orientation.some_basis + theorem orientation.some_basis_orientation 2022-01-05 14:15:37 33b5d26 feat(analysis/complex): `re`, `im`, and `closure`/`interior`/`frontier` (#11215) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Added src/analysis/complex/re_im_topology.lean + theorem complex.closure_preimage_im + theorem complex.closure_preimage_re + theorem complex.closure_preimage_re_inter_preimage_im + theorem complex.closure_set_of_im_lt + theorem complex.closure_set_of_lt_im + theorem complex.closure_set_of_lt_re + theorem complex.closure_set_of_re_lt + theorem complex.frontier_preimage_im + theorem complex.frontier_preimage_re + theorem complex.frontier_preimage_re_inter_preimage_im + theorem complex.frontier_set_of_im_le + theorem complex.frontier_set_of_im_lt + theorem complex.frontier_set_of_le_im + theorem complex.frontier_set_of_le_re + theorem complex.frontier_set_of_le_re_and_im_le + theorem complex.frontier_set_of_le_re_and_le_im + theorem complex.frontier_set_of_lt_im + theorem complex.frontier_set_of_lt_re + theorem complex.frontier_set_of_re_le + theorem complex.frontier_set_of_re_lt + theorem complex.interior_preimage_im + theorem complex.interior_preimage_re + theorem complex.interior_preimage_re_inter_preimage_im + theorem complex.interior_set_of_im_le + theorem complex.interior_set_of_le_im + theorem complex.interior_set_of_le_re + theorem complex.interior_set_of_re_le + theorem complex.is_open_map_im + theorem complex.is_open_map_re + theorem complex.is_topological_fiber_bundle_im + theorem complex.is_topological_fiber_bundle_re + theorem complex.is_trivial_topological_fiber_bundle_im + theorem complex.is_trivial_topological_fiber_bundle_re + theorem complex.quotient_map_im + theorem complex.quotient_map_re Modified src/data/complex/basic.lean +/- def complex.equiv_real_prod - theorem complex.equiv_real_prod_apply - theorem complex.equiv_real_prod_symm_im - theorem complex.equiv_real_prod_symm_re Modified src/topology/homeomorph.lean + theorem homeomorph.preimage_frontier 2022-01-05 14:15:35 3115ced feat(ring_theory/non_zero_divisors): mul_{left,right}_cancel API (#11211) Not all `monoid_with_zero` are `cancel_monoid_with_zero`, so we can't use `mul_right_cancel₀` everywhere. However, by definition, multiplication by non-zero-divisors is 0 iff the multiplicand is 0. In the context of a ring, that allows us to `mul_cancel_right` ESTIMATED CHANGES Modified src/ring_theory/non_zero_divisors.lean + theorem mem_non_zero_divisors_iff + theorem mul_cancel_left_coe_non_zero_divisor + theorem mul_cancel_left_mem_non_zero_divisor + theorem mul_cancel_right_coe_non_zero_divisor + theorem mul_cancel_right_mem_non_zero_divisor + theorem mul_left_coe_non_zero_divisors_eq_zero_iff + theorem mul_left_mem_non_zero_divisors_eq_zero_iff + theorem mul_right_coe_non_zero_divisors_eq_zero_iff + theorem mul_right_mem_non_zero_divisors_eq_zero_iff 2022-01-05 14:15:34 3bd2044 chore(data/nat/prime): reuse a result from algebra.big_operators.associated (#11143) ESTIMATED CHANGES Modified src/algebra/big_operators/associated.lean - theorem nat.prime.dvd_finset_prod_iff - theorem nat.prime.dvd_finsupp_prod_iff - theorem prime.dvd_prod_iff Added src/data/list/prime.lean + theorem mem_list_primes_of_dvd_prod + theorem perm_of_prod_eq_prod + theorem prime.dvd_prod_iff + theorem prime.not_dvd_prod + theorem prime_dvd_prime_iff_eq Modified src/data/nat/prime.lean - theorem nat.mem_list_primes_of_dvd_prod - theorem nat.perm_of_prod_eq_prod - theorem nat.prime.dvd_prod_iff - theorem nat.prime.not_dvd_prod 2022-01-05 14:15:33 57a9f8b chore(group_theory/sub{monoid,group}, linear_algebra/basic): rename equivalences to mapped subobjects (#11075) This makes the names shorter and more uniform: * `add_equiv.map_add_submonoid` * `add_equiv.map_add_subgroup` * `linear_equiv.map_submodule` ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean + def lie_equiv.lie_subalgebra_map + theorem lie_equiv.lie_subalgebra_map_apply - def lie_equiv.of_subalgebra - theorem lie_equiv.of_subalgebra_apply Modified src/group_theory/group_action/basic.lean Modified src/group_theory/subgroup/basic.lean - def mul_equiv.subgroup_equiv_map + def mul_equiv.subgroup_map Modified src/group_theory/subgroup/pointwise.lean Modified src/group_theory/submonoid/operations.lean - def mul_equiv.submonoid_equiv_map + def mul_equiv.submonoid_map Modified src/linear_algebra/basic.lean - def linear_equiv.of_submodule - theorem linear_equiv.of_submodule_apply - theorem linear_equiv.of_submodule_symm_apply + def linear_equiv.submodule_map + theorem linear_equiv.submodule_map_apply + theorem linear_equiv.submodule_map_symm_apply Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean 2022-01-05 14:15:32 7e5eebd feat(linear_algebra/clifford_algebra/equivs): There is a clifford algebra isomorphic to the dual numbers (#10730) This adds a brief file on the dual numbers, and then shows that they are equivalent to the clifford algebra with `Q = (0 : quadratic_form R R)`. ESTIMATED CHANGES Added src/algebra/dual_number.lean + theorem dual_number.alg_hom_ext + def dual_number.eps + theorem dual_number.eps_mul_eps + theorem dual_number.fst_eps + theorem dual_number.inr_eq_smul_eps + def dual_number.lift + theorem dual_number.lift_apply_eps + theorem dual_number.lift_eps + theorem dual_number.snd_eps + theorem dual_number.snd_mul + def dual_number Modified src/linear_algebra/clifford_algebra/equivs.lean + theorem clifford_algebra_dual_number.equiv_symm_eps + theorem clifford_algebra_dual_number.equiv_ι + theorem clifford_algebra_dual_number.ι_mul_ι 2022-01-05 12:21:49 cef3258 chore(group_theory/group_action/defs): add instances to copy statements about left actions to right actions when the two are equal (#10949) While these instances are usually available elsewhere, these shortcuts can reduce the number of typeclass assumptions other lemmas needs. Since the instances carry no data, the only harm they can cause is performance. There were some typeclass loops brought on by some bad instance unification, similar to the ones removed by @Vierkantor in 9ee2a50aa439d092c8dea16c1f82f7f8e1f1ea2c. We turn these into `lemma`s and duplicate the docstring explaining the problem. That commit has a much longer explanation of the problem. ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean + theorem has_scalar.comp.smul_comm_class' + theorem has_scalar.comp.smul_comm_class 2022-01-05 11:32:02 8d5830e chore(measure_theory/measurable_space): use implicit measurable_space argument (#11230) The `measurable_space` argument is inferred from other arguments (like `measurable f` or a measure for example) instead of being a type class. This ensures that the lemmas are usable without `@` when several measurable space structures are used for the same type. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/measurable_space.lean +/- theorem measurable.indicator +/- theorem measurable.ite +/- theorem measurable.piecewise +/- theorem measurable_from_top +/- theorem measurable_fst +/- theorem measurable_inl +/- theorem measurable_inr +/- theorem measurable_of_subsingleton_codomain +/- theorem measurable_prod +/- theorem measurable_set.exists_measurable_proj +/- theorem measurable_set_preimage +/- theorem measurable_set_range_inl +/- theorem measurable_set_range_inr +/- theorem measurable_snd +/- theorem measurable_swap +/- theorem measurable_swap_iff +/- theorem measurable_to_encodable +/- theorem measurable_unit +/- theorem subsingleton.measurable Modified src/measure_theory/measurable_space_def.lean +/- theorem measurable.comp +/- theorem measurable_set.empty +/- def measurable_set Modified src/probability_theory/stopping.lean 2022-01-05 08:10:47 4912740 chore(analysis/inner_product_space/basic): extract common `variables` (#11214) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean +/- theorem direct_sum.submodule_is_internal.collected_basis_orthonormal +/- theorem orthogonal_family.comp +/- theorem orthogonal_family.eq_ite +/- theorem orthogonal_family.independent +/- theorem orthogonal_family.inner_right_dfinsupp +/- theorem orthogonal_family.inner_right_fintype +/- theorem orthogonal_family.orthonormal_sigma_orthonormal 2022-01-05 08:10:46 b72d2ab feat(algebra/ring/basic): Introduce non-unital, non-associative rings (#11124) Adds the class `non_unital_non_assoc_ring` to `algebra.ring.basic` to represent rings which are not assumed to be unital or associative and shows that (unital, associative) rings are instances of `non_unital_non_assoc_ring`. Needed by #11073. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean Modified src/algebra/ring/opposite.lean Modified src/algebra/ring/pi.lean Modified src/algebra/ring/prod.lean Modified src/algebra/ring/ulift.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/finsupp/pointwise.lean 2022-01-05 06:18:07 58b1429 chore(algebra/group/pi): `pow_apply` can be `rfl` (#11249) ESTIMATED CHANGES Modified src/algebra/group/pi.lean +/- theorem pi.pow_apply 2022-01-05 01:44:24 4093834 feat(measure_theory/measure/finite_measure_weak_convergence): add definition and lemmas of pairing measures with nonnegative continuous test functions. (#9430) Add definition and lemmas about pairing of `finite_measure`s and `probability_measure`s with nonnegative continuous test functions. These pairings will be used in the definition of the topology of weak convergence (convergence in distribution): the topology will be defined as an induced topology based on them. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem is_finite_measure.lintegral_lt_top_of_bounded_to_ennreal Modified src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem bounded_continuous_function.nnreal.to_ennreal_comp_measurable + theorem measure_theory.finite_measure.lintegral_lt_top_of_bounded_continuous_to_nnreal + def measure_theory.finite_measure.test_against_nn + theorem measure_theory.finite_measure.test_against_nn_add + theorem measure_theory.finite_measure.test_against_nn_coe_eq + theorem measure_theory.finite_measure.test_against_nn_const + theorem measure_theory.finite_measure.test_against_nn_lipschitz + theorem measure_theory.finite_measure.test_against_nn_lipschitz_estimate + theorem measure_theory.finite_measure.test_against_nn_mono + theorem measure_theory.finite_measure.test_against_nn_smul + def measure_theory.finite_measure.to_weak_dual_bounded_continuous_nnreal + theorem measure_theory.probability_measure.lintegral_lt_top_of_bounded_continuous_to_nnreal + def measure_theory.probability_measure.test_against_nn + theorem measure_theory.probability_measure.test_against_nn_coe_eq + theorem measure_theory.probability_measure.test_against_nn_const + theorem measure_theory.probability_measure.test_against_nn_lipschitz + theorem measure_theory.probability_measure.test_against_nn_mono + theorem measure_theory.probability_measure.to_finite_measure_test_against_nn_eq_test_against_nn + def measure_theory.probability_measure.to_weak_dual_bounded_continuous_nnreal Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.nnreal.upper_bound Modified src/topology/metric_space/basic.lean + theorem nnreal.le_add_nndist + theorem nnreal.nndist_zero_eq_val' + theorem nnreal.nndist_zero_eq_val 2022-01-04 23:41:45 5c8243f fix(algebra/group/type_tags): resolve an instance diamond caused by over-eager unfolding (#11240) By setting the `one` and `zero` fields manually, we ensure that they are syntactically equal to the ones found via `has_one` and `has_zero`, rather than potentially having typeclass arguments resolved in a different way. This seems to fix the failing test. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Diamond.20in.20multiplicative.20nat/near/266824443) ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean Modified test/instance_diamonds.lean 2022-01-04 22:10:13 862854e chore(ring_theory/localization): fix typo in module docstring (#11245) There was a mismatch in the module docstring to the decl name later. ESTIMATED CHANGES Modified src/ring_theory/localization.lean 2022-01-04 18:47:59 dc352a6 chore(.github): include co-author attributions in PR template (#11239) ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md 2022-01-04 18:47:58 692b6b7 chore(analysis/inner_product_space/basic): adjust decidability assumptions (#11212) Eliminate the `open_locale classical` in `inner_product_space.basic` and replace by specific decidability assumptions. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean 2022-01-04 18:47:57 49cbce2 chore(data/fintype/basic): set.to_finset_univ generalization (#11174) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/data/fintype/basic.lean +/- theorem set.to_finset_univ Modified src/group_theory/specific_groups/cyclic.lean 2022-01-04 18:47:56 037147e feat(probability_theory/stopping): define stopped process (#10851) ESTIMATED CHANGES Modified src/probability_theory/stopping.lean + theorem measure_theory.adapted.stopped_process + theorem measure_theory.integrable_stopped_process +/- theorem measure_theory.is_stopping_time.measurable_set_eq + theorem measure_theory.is_stopping_time.measurable_set_ge + theorem measure_theory.is_stopping_time.measurable_set_le + theorem measure_theory.measurable_stopped_process + theorem measure_theory.mem_ℒp_stopped_process + def measure_theory.stopped_process + theorem measure_theory.stopped_process_eq + theorem measure_theory.stopped_process_eq_of_ge + theorem measure_theory.stopped_process_eq_of_le + def measure_theory.stopped_value 2022-01-04 16:45:27 5df2e7b chore(data/polynomial, data/finset/lattice): basic lemmas (#11237) ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.coe_inf_of_nonempty + theorem finset.coe_sup_of_nonempty Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_mono 2022-01-04 16:45:25 5f3f01f feat(set_theory/ordinal_arithmetic): Proved `add_log_le_log_mul` (#11228) That is, `log b u + log b v ≤ log b (u * v)`. The other direction holds only when `b ≠ 2` and `b` is principal multiplicative, and will be added at a much later PR. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.add_log_le_log_mul 2022-01-04 16:45:24 18330f6 feat(tactic/abel): support 0 in group expressions (#11201) [As reported on Zulip.](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60abel.60.20not.20rewriting.20with.20.60sub_zero.60/near/266645648) fixes #11200 ESTIMATED CHANGES Modified src/tactic/abel.lean Modified test/abel.lean 2022-01-04 16:45:23 b0f2f55 feat(set_theory/ordinal_arithmetic): Proved `dvd_iff_mod_eq_zero` (#11195) ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.dvd_iff_mod_eq_zero + theorem ordinal.dvd_of_mod_eq_zero + theorem ordinal.mod_eq_zero_of_dvd 2022-01-04 16:45:22 7f244cf feat(category_theory/limits/filtered_colimits_commute_with_finite_limits): A curried variant of the fact that filtered colimits commute with finite limits. (#11154) ESTIMATED CHANGES Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean + theorem category_theory.limits.ι_colimit_limit_iso_limit_π 2022-01-04 16:45:20 06c3ab2 feat(ring_theory/discriminant): add of_power_basis_eq_norm (#11149) From flt-regular. ESTIMATED CHANGES Modified src/data/fin/interval.lean + theorem fin.prod_filter_lt_mul_neg_eq_prod_off_diag Modified src/ring_theory/discriminant.lean + theorem algebra.of_power_basis_eq_norm + theorem algebra.of_power_basis_eq_prod'' + theorem algebra.of_power_basis_eq_prod' 2022-01-04 16:45:19 4a0e844 feat(data/finset): to_finset empty iff (#11088) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem list.to_finset_eq_empty_iff 2022-01-04 16:45:18 68d2d21 feat(testing/slim_check): teach slim_check about `finsupp`s (#10916) We add some instances so that `slim_check` can generate `finsupp`s and hence try to provide counterexamples for them. As the way the original slim_check for functions works is to generate a finite list of random values and pick a default for the rest of the values these `total_functions` are quite close to finsupps already, we just have to map the default value to zero, and prove various things about the support. There might be conceptually nicer ways of building this instance but this seems functional enough. Seeing as many finsupp defs are classical (and noncomputable) this isn't quite as useful for generating counterexamples as I originally hoped. See the test at `test/slim_check.lean` for a basic example of usage I wrote this while working on flt-regular but it is hopefully useful outside of that ESTIMATED CHANGES Modified src/testing/slim_check/functions.lean + def slim_check.total_function.apply_finsupp + def slim_check.total_function.zero_default + def slim_check.total_function.zero_default_supp Modified test/slim_check.lean 2022-01-04 16:45:16 7d42ded chore(*): Rename instances (#9200) Rename * `lattice_of_linear_order` -> `linear_order.to_lattice` * `distrib_lattice_of_linear_order` -> `linear_order.to_distrib_lattice` to follow the naming convention (well, it's currently not explicitly written there, but autogenerated names follow that). ESTIMATED CHANGES Modified src/algebra/char_p/exp_char.lean Modified src/algebra/order/monoid.lean Modified src/data/fin/basic.lean Modified src/data/int/order.lean Modified src/data/nat/basic.lean Modified src/data/nat/lattice.lean Modified src/data/real/hyperreal.lean Modified src/order/atoms.lean Modified src/order/filter/filter_product.lean - theorem filter.germ.lattice_of_linear_order_eq_filter_germ_lattice + theorem filter.germ.linear_order.to_lattice_eq_filter_germ_lattice Modified src/order/lattice.lean 2022-01-04 15:37:18 b99a98e doc(category_theory/limits/shapes/pullbacks): fix doc (#11225) the link doesn't work with the full stop ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean 2022-01-04 13:36:42 a30375e feat(topology/fiber_bundle): a topological fiber bundle is a quotient map (#11194) * The projection map of a topological fiber bundle (pre)trivialization is surjective onto its base set. * The projection map of a topological fiber bundle with a nonempty fiber is surjective. Since it is also a continuous open map, it is a quotient map. * Golf a few proofs. ESTIMATED CHANGES Modified src/topology/fiber_bundle.lean + theorem is_topological_fiber_bundle.map_proj_nhds + theorem is_topological_fiber_bundle.quotient_map_proj + theorem is_topological_fiber_bundle.surjective_proj + theorem topological_fiber_bundle.pretrivialization.proj_surj_on_base_set + theorem topological_fiber_bundle.trivialization.proj_surj_on_base_set 2022-01-04 13:36:33 aa82ba0 feat(algebra/opposites): add `add_opposite` (#11080) Add `add_opposite`, add `to_additive` here and there. More `to_additive` can be added as needed later. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean + def add_equiv.mul_op + def add_equiv.mul_unop - def add_equiv.op - def add_equiv.unop + def add_monoid_hom.mul_op + theorem add_monoid_hom.mul_op_ext + def add_monoid_hom.mul_unop - def add_monoid_hom.op - theorem add_monoid_hom.op_ext - def add_monoid_hom.unop + def add_opposite.op_mul_equiv + theorem add_opposite.op_mul_equiv_to_equiv + theorem add_opposite.op_pow + theorem add_opposite.unop_pow + theorem commute.op +/- def monoid_hom.from_opposite +/- def monoid_hom.op +/- def monoid_hom.to_opposite +/- def monoid_hom.unop +/- def mul_equiv.unop - theorem mul_opposite.commute.op +/- theorem mul_opposite.commute.unop +/- theorem mul_opposite.commute_op +/- theorem mul_opposite.commute_unop - theorem mul_opposite.semiconj_by.op - theorem mul_opposite.semiconj_by.unop +/- theorem mul_opposite.semiconj_by_op +/- theorem mul_opposite.semiconj_by_unop + theorem semiconj_by.op + theorem semiconj_by.unop +/- theorem units.coe_op_equiv_symm +/- theorem units.coe_unop_op_equiv +/- def units.op_equiv Modified src/algebra/opposites.lean + theorem add_opposite.op_div + theorem add_opposite.op_eq_one_iff + theorem add_opposite.op_inv + theorem add_opposite.op_mul + theorem add_opposite.op_one + theorem add_opposite.unop_div + theorem add_opposite.unop_eq_one_iff + theorem add_opposite.unop_inv + theorem add_opposite.unop_mul + theorem add_opposite.unop_one +/- theorem mul_opposite.op_bijective +/- theorem mul_opposite.op_comp_unop +/- theorem mul_opposite.op_eq_one_iff +/- theorem mul_opposite.op_eq_zero_iff +/- theorem mul_opposite.op_inj +/- theorem mul_opposite.op_injective +/- theorem mul_opposite.op_inv +/- theorem mul_opposite.op_mul +/- theorem mul_opposite.op_ne_zero_iff +/- theorem mul_opposite.op_one +/- theorem mul_opposite.op_smul +/- theorem mul_opposite.op_surjective +/- theorem mul_opposite.op_unop +/- theorem mul_opposite.unop_bijective +/- theorem mul_opposite.unop_comp_op +/- theorem mul_opposite.unop_eq_one_iff +/- theorem mul_opposite.unop_eq_zero_iff +/- theorem mul_opposite.unop_inj +/- theorem mul_opposite.unop_injective +/- theorem mul_opposite.unop_inv +/- theorem mul_opposite.unop_mul +/- theorem mul_opposite.unop_ne_zero_iff +/- theorem mul_opposite.unop_one +/- theorem mul_opposite.unop_op +/- theorem mul_opposite.unop_smul +/- theorem mul_opposite.unop_surjective Modified src/algebra/ring/opposite.lean Modified src/data/equiv/ring.lean Modified src/group_theory/group_action/opposite.lean +/- theorem op_smul_eq_mul 2022-01-04 13:36:24 a7aa2c8 feat(data/finset/sigma): A way to lift `finset`-valued functions to a sigma type (#10958) This defines `finset.sigma_lift : (Π i, α i → β i → finset (γ i)) → Σ i, α i → Σ i, β i → finset (Σ i, γ i)` as the function which returns the finset corresponding to the first coordinate of `a b : Σ i, α i` if they have the same, or the empty set else. ESTIMATED CHANGES Modified src/data/finset/sigma.lean + theorem finset.card_sigma_lift + theorem finset.mem_sigma_lift + theorem finset.mk_mem_sigma_lift + theorem finset.not_mem_sigma_lift_of_ne_left + theorem finset.not_mem_sigma_lift_of_ne_right + def finset.sigma_lift + theorem finset.sigma_lift_eq_empty + theorem finset.sigma_lift_mono + theorem finset.sigma_lift_nonempty 2022-01-04 13:36:16 8bd2059 feat(data/finset/slice): `r`-sets and slice (#10685) Two simple nonetheless useful definitions about set families. A family of `r`-sets is a set of finsets of cardinality `r`. The slice of a set family is its subset of `r`-sets. ESTIMATED CHANGES Modified src/combinatorics/set_family/shadow.lean Added src/data/finset/slice.lean + theorem finset.eq_of_mem_slice + theorem finset.mem_slice + theorem finset.ne_of_mem_slice + theorem finset.pairwise_disjoint_slice + theorem finset.sized_slice + def finset.slice + theorem finset.slice_subset + theorem finset.subset_powerset_len_univ_iff + theorem set.sized.card_le + theorem set.sized.mono + def set.sized + theorem set.sized_union Modified src/data/fintype/basic.lean + theorem finset.mem_powerset_len_univ_iff 2022-01-04 12:08:44 1aec9a1 feat(analysis/inner_product_space/dual,adjoint): add some lemmas about extensionality with respect to a basis (#11176) This PR adds some lemmas about extensionality in inner product spaces with respect to a basis. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem linear_map.eq_adjoint_iff_basis + theorem linear_map.eq_adjoint_iff_basis_left + theorem linear_map.eq_adjoint_iff_basis_right Modified src/analysis/inner_product_space/dual.lean + theorem inner_product_space.ext_inner_left_basis + theorem inner_product_space.ext_inner_right_basis 2022-01-04 09:44:51 03872fd feat(*): Prerequisites for the Spec gamma adjunction (#11209) ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean + theorem algebraic_geometry.Scheme.forget_to_LocallyRingedSpace_preimage Modified src/algebraic_geometry/Spec.lean + theorem algebraic_geometry.Spec.basic_open_hom_ext Modified src/algebraic_geometry/locally_ringed_space.lean + theorem algebraic_geometry.LocallyRingedSpace.comp_val_c + theorem algebraic_geometry.LocallyRingedSpace.comp_val_c_app Modified src/algebraic_geometry/prime_spectrum/basic.lean + theorem local_ring.comap_closed_point + theorem local_ring.is_local_ring_hom_iff_comap_closed_point - theorem local_ring.local_hom_iff_comap_closed_point + theorem prime_spectrum.comap_comp_apply Modified src/algebraic_geometry/ringed_space.lean + theorem algebraic_geometry.RingedSpace.mem_top_basic_open Modified src/algebraic_geometry/stalks.lean +/- def algebraic_geometry.PresheafedSpace.stalk Modified src/algebraic_geometry/structure_sheaf.lean + theorem algebraic_geometry.structure_sheaf.is_localization.to_basic_open + theorem algebraic_geometry.structure_sheaf.is_localization.to_stalk Modified src/category_theory/adjunction/basic.lean + theorem category_theory.adjunction.hom_equiv_id + theorem category_theory.adjunction.hom_equiv_symm_id Modified src/topology/sheaves/presheaf.lean + theorem Top.presheaf.pushforward_eq'_hom_app + theorem Top.presheaf.pushforward_map_app' 2022-01-04 09:44:50 9a8e9fa chore(category_theory/limits): Generalize universes for `preserves/shapes/pullback.lean` (#10780) ESTIMATED CHANGES Modified src/category_theory/limits/constructions/epi_mono.lean Modified src/category_theory/limits/functor_category.lean - def category_theory.limits.preserves_colimits_of_evaluation +/- def category_theory.limits.preserves_colimits_of_shape_of_evaluation - def category_theory.limits.preserves_limits_of_evaluation +/- def category_theory.limits.preserves_limits_of_shape_of_evaluation + def category_theory.limits.{w' Modified src/category_theory/limits/is_limit.lean + def category_theory.limits.is_colimit.of_whisker_equivalence + def category_theory.limits.is_colimit.whisker_equivalence_equiv + def category_theory.limits.is_limit.of_whisker_equivalence + def category_theory.limits.is_limit.whisker_equivalence_equiv Modified src/category_theory/limits/preserves/limits.lean Modified src/category_theory/limits/preserves/shapes/pullbacks.lean +/- def category_theory.limits.is_colimit_of_has_pushout_of_preserves_colimit +/- def category_theory.limits.is_limit_of_has_pullback_of_preserves_limit +/- def category_theory.limits.preserves_pullback_symmetry +/- def category_theory.limits.preserves_pushout_symmetry Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.walking_cospan_equiv + def category_theory.limits.walking_cospan_functor + theorem category_theory.limits.walking_cospan_functor_id + theorem category_theory.limits.walking_cospan_functor_inl + theorem category_theory.limits.walking_cospan_functor_inr + theorem category_theory.limits.walking_cospan_functor_left + theorem category_theory.limits.walking_cospan_functor_one + theorem category_theory.limits.walking_cospan_functor_right + def category_theory.limits.walking_span_equiv + def category_theory.limits.walking_span_functor + theorem category_theory.limits.walking_span_functor_fst + theorem category_theory.limits.walking_span_functor_id + theorem category_theory.limits.walking_span_functor_left + theorem category_theory.limits.walking_span_functor_right + theorem category_theory.limits.walking_span_functor_snd + theorem category_theory.limits.walking_span_functor_zero 2022-01-04 07:46:59 044c1de feat(analysis/special_functions/trigonometric): a few lemmas (#11217) Add a few trivial lemmas about `arcsin`/`arccos`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/inverse.lean + theorem real.arccos_le_pi_div_four + theorem real.arccos_le_pi_div_two + theorem real.pi_div_four_le_arcsin 2022-01-04 07:46:58 3045014 feat(algebra/order/ring): turn `mul_self_pos` into an `iff` (#11216) ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified src/algebra/order/ring.lean +/- theorem mul_self_pos Modified src/analysis/inner_product_space/conformal_linear_map.lean Modified src/linear_algebra/quadratic_form/basic.lean 2022-01-04 07:46:57 85784b0 feat(linear_algebra/determinant): `det_units_smul` and `det_is_unit_smul` (#11206) Add lemmas giving the determinant of a basis constructed with `units_smul` or `is_unit_smul` with respect to the original basis. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem basis.det_is_unit_smul + theorem basis.det_units_smul 2022-01-04 07:46:56 1fc7a93 chore(topology/metric_space/hausdorff_distance): slightly tidy some proofs (#11203) ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean 2022-01-04 07:46:55 9d1503a feat(field_theory.intermediate_field): add intermediate_field.map_map (#11020) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.map_map Modified src/field_theory/primitive_element.lean 2022-01-04 06:31:42 71dc1ea feat(topology/maps): preimage of closure/frontier under an open map (#11189) We had lemmas about `interior`. Add versions about `frontier` and `closure`. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/topology/maps.lean +/- theorem is_open_map.interior_preimage_subset_preimage_interior + theorem is_open_map.maps_to_interior + theorem is_open_map.of_sections + theorem is_open_map.preimage_closure_eq_closure_preimage + theorem is_open_map.preimage_closure_subset_closure_preimage + theorem is_open_map.preimage_frontier_eq_frontier_preimage + theorem is_open_map.preimage_frontier_subset_frontier_preimage +/- theorem is_open_map.preimage_interior_eq_interior_preimage 2022-01-04 03:53:12 8f391aa chore(algebra/module/submodule): switch `subtype_eq_val` to `coe_subtype` (#11210) Change the name and form of a lemma, from ```lean lemma subtype_eq_val : ((submodule.subtype p) : p → M) = subtype.val := rfl ``` to ```lean lemma coe_subtype : ((submodule.subtype p) : p → M) = coe := rfl ``` The latter is the simp-normal form so I claim it should be preferred. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.coe_subtype - theorem submodule.subtype_eq_val Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finite_dimensional.lean 2022-01-04 01:48:54 4daaff0 feat(data/nat/prime): factors sublist of product (#11104) This PR changes the existing `factors_subset_right` to give a stronger sublist conclusion (which trivially can be used to reproduce the subst version). ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.factors_sublist_of_dvd + theorem nat.factors_sublist_right 2022-01-03 20:30:05 62d814a refactor(order/lexicographic): Change the `lex` synonym (#10926) At least five types have a natural lexicographic order, namely: * `α ⊕ β` where everything on the left is smaller than everything on the right * `Σ i, α i` where things are first ordered following `ι`, then following `α i` * `Σ' i, α i` where things are first ordered following `ι`, then following `α i` * `α × β` where things are first ordered following `α`, then following `β` * `finset α`, which is in a specific sene the dual of `finset.colex`. And we could even add `Π i, α i`, `ι →₀ α`, `Π₀ i, α i`, etc... although those haven't come up yet in practice. Hence, we generalize the `lex` synonym away from `prod` to make it a general purpose synonym to equip a type with its lexicographical order. What was `lex α β` now is `α ×ₗ β`. Note that this PR doesn't add any of the aforementioned instances. ESTIMATED CHANGES Modified src/data/fin/tuple/sort.lean +/- def tuple.graph Modified src/order/basic.lean Modified src/order/lexicographic.lean +/- def lex - theorem lex_le_iff - theorem lex_lt_iff + def of_lex + theorem of_lex_inj + theorem of_lex_symm_eq + theorem of_lex_to_lex + theorem prod.lex.le_iff + theorem prod.lex.lt_iff + def to_lex + theorem to_lex_inj + theorem to_lex_of_lex + theorem to_lex_symm_eq Modified src/order/locally_finite.lean Modified src/tactic/linarith/preprocessing.lean 2022-01-03 18:55:41 9d0fd52 feat(measure_theory/function/lp_space): use has_measurable_add2 instead of second_countable_topology (#11202) Use the weaker assumption `[has_measurable_add₂ E]` instead of `[second_countable_topology E]` in 4 lemmas. ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean +/- theorem measure_theory.snorm'_sum_le +/- theorem measure_theory.snorm_sum_le 2022-01-03 16:25:35 7249895 feat(analysis/inner_product_space/basic): negating orthonormal vectors (#11208) Add a lemma that, given an orthonormal family, negating some of the vectors in it produces another orthonormal family. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem orthonormal.orthonormal_of_forall_eq_or_eq_neg 2022-01-03 15:26:28 83f4036 feat(*/cyclotomic): update is_root_cyclotomic_iff to use ne_zero (#11071) ESTIMATED CHANGES Modified src/number_theory/primes_congruent_one.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean +/- theorem polynomial.is_root_cyclotomic_iff Modified src/ring_theory/polynomial/cyclotomic/eval.lean 2022-01-03 14:30:17 236d978 feat(linear_algebra/matrix/basis): `to_matrix_units_smul` and `to_matrix_is_unit_smul` (#11191) Add lemmas that applying `to_matrix` to a basis constructed with `units_smul` or `is_unit_smul` produces the corresponding diagonal matrix. ESTIMATED CHANGES Modified src/linear_algebra/matrix/basis.lean + theorem basis.to_matrix_is_unit_smul + theorem basis.to_matrix_units_smul 2022-01-03 12:49:02 4b3198b feat(combinatorics/configuration): `has_lines` implies `has_points`, and vice versa (#11170) If `|P| = |L|`, then `has_lines` and `has_points` are equivalent! ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2022-01-03 11:27:40 a10cb2f feat(algebra/big_operators/associated): `dvd_prod_iff` for `finset` and `finsupp` (#10675) Adding the counterparts of `dvd_prod_iff` (in #10624) for `finset` and `finsupp`. ESTIMATED CHANGES Modified src/algebra/big_operators/associated.lean + theorem nat.prime.dvd_finset_prod_iff + theorem nat.prime.dvd_finsupp_prod_iff + theorem prime.dvd_finset_prod_iff + theorem prime.dvd_finsupp_prod_iff +/- theorem prime.dvd_prod_iff 2022-01-03 10:32:11 a813cf5 chore(algebra/algebra/spectrum): move `exists_spectrum_of_is_alg_closed_of_finite_dimensional` (#10919) Move a lemma from `field_theory/is_alg_closed/basic` into `algebra/algebra/spectrum` which belongs in this relatively new file. Also, rename (now in `spectrum` namespace) and refactor it slightly; and update the two references to it accordingly. - [x] depends on: #10783 ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem spectrum.nonempty_of_is_alg_closed_of_finite_dimensional Modified src/category_theory/preadditive/schur.lean Modified src/field_theory/is_alg_closed/basic.lean - theorem exists_spectrum_of_is_alg_closed_of_finite_dimensional Modified src/linear_algebra/eigenspace.lean 2022-01-03 07:35:22 49bf3d3 feat(data/polynomial/taylor): taylor_mul (#11193) ESTIMATED CHANGES Modified src/data/polynomial/taylor.lean + theorem polynomial.taylor_mul 2022-01-03 07:35:21 a49ee49 feat(data/finset/functor): Functor structures for `finset` (#10980) This defines the monad, the commutative applicative and the (almost) traversable functor structures on `finset`. It all goes in a new file `data.finset.functor` and picks up the `functor` instance that was stranded in `data.finset.basic` by Scott in #2997. ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.mem_image + theorem finset.mem_image_const + theorem finset.mem_image_const_self +/- theorem finset.mem_image_of_mem Added src/data/finset/functor.lean + theorem finset.bind_def + theorem finset.fmap_def + theorem finset.id_traverse + theorem finset.map_comp_coe + theorem finset.map_traverse + theorem finset.pure_def + theorem finset.seq_def + theorem finset.seq_left_def + theorem finset.seq_right_def + def finset.traverse Modified src/data/finset/lattice.lean + theorem finset.inf_top + theorem finset.sup_bot + theorem finset.sup_singleton'' 2022-01-03 06:54:39 138c61f chore(field_theory/ratfunc): comm_ring (ratfunc K) (#11188) Previously, the file only gave a `field (ratfunc K)` instance, requiring `comm_ring K` and `is_domain K`. In fact, `ratfunc K` is a `comm_ring` regardless of the `is_domain`. The upstream instance is proven first, with a generalized tactic. ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean 2022-01-02 23:55:46 03a5482 chore(topology/continuous_on): fix a typo (#11190) `eventually_nhds_with_of_forall` → `eventually_nhds_within_of_forall` ESTIMATED CHANGES Modified src/analysis/calculus/lhopital.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/continuous_on.lean - theorem eventually_nhds_with_of_forall + theorem eventually_nhds_within_of_forall 2022-01-02 17:21:44 3f77761 feat(ring_theory/algebraic): algebraic functions (#11156) Accessible via a new `algebra (polynomial R) (R → R)` and a generalization that gives `algebra (polynomial R) (S → S)` when `[algebra R S]`. ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean + theorem polynomial.algebra_map_pi_eq_aeval + theorem polynomial.algebra_map_pi_self_eq_eval + theorem polynomial_smul_apply' + theorem polynomial_smul_apply 2022-01-01 20:23:07 ebdbe6b feat(topology/algebra/ordered): new lemmas, update (#11184) * In `exists_seq_strict_mono_tendsto'` and `exists_seq_strict_anti_tendsto'`, prove that `u n` belongs to the corresponding open interval. * Add `exists_seq_strict_anti_strict_mono_tendsto`. * Rename `is_lub_of_tendsto` to `is_lub_of_tendsto_at_top`, rename `is_glb_of_tendsto` to `is_glb_of_tendsto_at_bot`. * Add `is_lub_of_tendsto_at_bot`, `is_glb_of_tendsto_at_top`. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/basic.lean + theorem exists_seq_strict_anti_strict_mono_tendsto Modified src/topology/algebra/ordered/monotone_convergence.lean - theorem is_glb_of_tendsto + theorem is_glb_of_tendsto_at_bot + theorem is_glb_of_tendsto_at_top - theorem is_lub_of_tendsto + theorem is_lub_of_tendsto_at_bot + theorem is_lub_of_tendsto_at_top +/- theorem monotone.ge_of_tendsto +/- theorem monotone.le_of_tendsto 2022-01-01 19:07:15 02d02df chore(measure_theory): fix TC assumptions in 2 lemmas (#11185) With new assumptions, these lemmas work, e.g., for `β = ι → ℝ`. ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean 2022-01-01 19:07:13 c1b1041 feat(topology/metric_space/basic): add `fin.dist_insert_nth_insert_nth` (#11183) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem fin.dist_insert_nth_insert_nth + theorem fin.nndist_insert_nth_insert_nth + theorem nndist_pi_le_iff 2022-01-01 17:09:52 6486e9b chore(order/rel_classes): Removed unnecessary `classical` (#11180) Not sure what that was doing here. ESTIMATED CHANGES Modified src/order/rel_classes.lean 2022-01-01 15:44:59 93cf56c feat(algebraic_geometry/*): The map `F.stalk y ⟶ F.stalk x` for `x ⤳ y` (#11144) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean + theorem prime_spectrum.le_iff_specializes + def prime_spectrum.localization_map_of_specializes Modified src/algebraic_geometry/stalks.lean + theorem algebraic_geometry.PresheafedSpace.stalk_map.stalk_specializes_stalk_map Modified src/algebraic_geometry/structure_sheaf.lean + theorem algebraic_geometry.structure_sheaf.localization_to_stalk_stalk_specializes + theorem algebraic_geometry.structure_sheaf.localization_to_stalk_stalk_to_fiber_ring_hom + theorem algebraic_geometry.structure_sheaf.stalk_specializes_stalk_to_fiber + theorem algebraic_geometry.structure_sheaf.stalk_to_fiber_ring_hom_localization_to_stalk + theorem algebraic_geometry.structure_sheaf.to_stalk_stalk_specializes Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.germ_stalk_specializes' + theorem Top.presheaf.germ_stalk_specializes + def Top.presheaf.stalk_specializes + theorem Top.presheaf.stalk_specializes_stalk_functor_map + theorem Top.presheaf.stalk_specializes_stalk_pushforward 2022-01-01 14:44:14 892d465 feat(linear_algebra/multilinear/basic): the space of multilinear maps is finite-dimensional when the components are finite-dimensional (#10504) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/multilinear/basic.lean 2022-01-01 13:55:32 5353369 feat(combinatorics/configuration): Line count equals point count (#11169) In a configuration satisfying `has_lines` or `has_points`, if the number of points equals the number of lines, then the number of lines through a given point equals the number of points on a given line. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.has_lines.line_count_eq_point_count + theorem configuration.has_points.line_count_eq_point_count 2022-01-01 13:55:31 a6c82af feat(group_theory/specific_groups/*): computes the exponents of the dihedral and generalised quaternion groups (#11166) This PR shows that the exponent of the dihedral group of order `2n` is equal to `lcm n 2` and that the exponent of the generalised quaternion group of order `4n` is `2 * lcm n 2` ESTIMATED CHANGES Modified src/group_theory/specific_groups/dihedral.lean + theorem dihedral_group.exponent Modified src/group_theory/specific_groups/quaternion.lean + theorem quaternion_group.exponent +/- theorem quaternion_group.order_of_a_one 2022-01-01 13:55:30 ad76a5e feat(data/nat/log): log_mul, log_div (#11164) Even with division over natural, the log "spec" holds. ESTIMATED CHANGES Modified src/data/nat/log.lean + theorem nat.log_div_base + theorem nat.log_div_mul_self + theorem nat.log_mul_base 2022-01-01 11:59:04 23b01cc feat(algebraic_geometry): The function field of an integral scheme (#11147) ESTIMATED CHANGES Modified src/algebra/field/basic.lean Added src/algebraic_geometry/function_field.lean + def algebraic_geometry.Scheme.function_field + def algebraic_geometry.Scheme.germ_to_function_field + theorem algebraic_geometry.Scheme.germ_to_function_field_injective + theorem algebraic_geometry.germ_injective_of_is_integral Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/properties.lean + theorem algebraic_geometry.affine_is_integral_iff + theorem algebraic_geometry.affine_is_reduced_iff + theorem algebraic_geometry.is_integral_iff_is_irreducible_and_is_reduced + theorem algebraic_geometry.is_integral_of_is_irreducible_is_reduced + theorem algebraic_geometry.is_integral_of_open_immersion + theorem algebraic_geometry.map_injective_of_is_integral Modified src/topology/opens.lean + theorem topological_space.opens.coe_top + theorem topological_space.opens.ne_bot_iff_nonempty + theorem topological_space.opens.not_nonempty_iff_eq_bot 2022-01-01 02:32:45 1594b0c feat(normed_space/lp_space): Lp space for `Π i, E i` (#11015) For a family `Π i, E i` of normed spaces, define the subgroup with finite lp norm, and prove it is a `normed_group`. Many parts adapted from the development of `measure_theory.Lp` by @RemyDegenne. https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Lp.20space ESTIMATED CHANGES Added src/analysis/normed_space/lp_space.lean + theorem lp.coe_fn_add + theorem lp.coe_fn_neg + theorem lp.coe_fn_smul + theorem lp.coe_fn_sub + theorem lp.coe_fn_zero + theorem lp.coe_lp_submodule + theorem lp.eq_zero' + theorem lp.eq_zero_iff_coe_fn_eq_zero + theorem lp.ext + theorem lp.has_sum_norm + theorem lp.is_lub_norm + def lp.lp_submodule + theorem lp.mem_lp_const_smul + theorem lp.norm_const_smul + theorem lp.norm_eq_card_dsupport + theorem lp.norm_eq_csupr + theorem lp.norm_eq_tsum_rpow + theorem lp.norm_eq_zero_iff + theorem lp.norm_neg + theorem lp.norm_nonneg' + theorem lp.norm_rpow_eq_tsum + theorem lp.norm_zero + def lp + theorem mem_ℓp.add + theorem mem_ℓp.bdd_above + theorem mem_ℓp.const_mul + theorem mem_ℓp.const_smul + theorem mem_ℓp.finite_dsupport + theorem mem_ℓp.finset_sum + theorem mem_ℓp.neg + theorem mem_ℓp.neg_iff + theorem mem_ℓp.of_exponent_ge + theorem mem_ℓp.sub + theorem mem_ℓp.summable + def mem_ℓp + theorem mem_ℓp_gen + theorem mem_ℓp_gen_iff + theorem mem_ℓp_infty + theorem mem_ℓp_infty_iff + theorem mem_ℓp_zero + theorem mem_ℓp_zero_iff + def pre_lp + theorem zero_mem_ℓp' + theorem zero_mem_ℓp Modified src/analysis/normed_space/pi_Lp.lean Modified src/analysis/special_functions/pow.lean + theorem real.rpow_le_rpow_of_exponent_ge' + theorem real.rpow_left_inj_on Modified src/data/set/basic.lean Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_zero_iff_of_nonneg Modified src/topology/algebra/ordered/basic.lean + theorem eventually_gt_of_tendsto_gt + theorem eventually_lt_of_tendsto_lt 2022-01-01 00:20:37 742ec88 feat(data/set/*): lemmas about `monotone`/`antitone` and sets/intervals (#11173) * Rename `set.monotone_inter` and `set.monotone_union` to `monotone.inter` and `monotone.union`. * Add `antitone` versions of some `monotone` lemmas. * Specialize `Union_Inter_of_monotone` for `set.pi`. * Add lemmas about `⋃ x, Ioi (f x)`, `⋃ x, Iio (f x)`, and `⋃ x, Ioo (f x) (g x)`. * Add dot notation lemmas `monotone.Ixx` and `antitone.Ixx`. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.Union_pi_of_monotone + theorem set.Union_univ_pi_of_monotone Modified src/data/set/intervals/disjoint.lean + theorem is_glb.Union_Ioi_eq + theorem is_glb.bUnion_Ioi_eq + theorem is_lub.Union_Iio_eq + theorem is_lub.bUnion_Iio_eq +/- theorem set.Union_Ico_eq_Iio_self_iff +/- theorem set.Union_Ioc_eq_Ioi_self_iff +/- theorem set.bUnion_Ico_eq_Iio_self_iff +/- theorem set.bUnion_Ioc_eq_Ioi_self_iff Modified src/data/set/intervals/monotone.lean + theorem Union_Ioo_of_mono_of_is_glb_of_is_lub + theorem antitone_Ici + theorem antitone_Ioi + theorem monotone_Iic + theorem monotone_Iio +/- def order_iso_Ioo_neg_one_one Modified src/data/set/lattice.lean + theorem antitone.inter + theorem antitone.union + theorem monotone.inter + theorem monotone.union + theorem set.antitone_set_of - theorem set.monotone_inter - theorem set.monotone_union Modified src/order/lattice.lean + theorem antitone.le_map_inf + theorem antitone.map_inf + theorem antitone.map_sup + theorem antitone.map_sup_le Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2022-01-01 00:20:36 979f2e7 fix(order/filter/ultrafilter): dedup instance names (#11171) ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean 2022-01-01 00:20:35 da54388 feat(combinatorics/simple_graph/srg): is_SRG_with for complete graphs, edgeless graphs, and complements (#5698) We add the definition of a strongly regular graph and prove some useful lemmas about them. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.bot_degree + theorem simple_graph.card_common_neighbors_top + theorem simple_graph.common_neighbors_top_eq - theorem simple_graph.complete_graph_is_regular - theorem simple_graph.is_regular_compl_of_is_regular + theorem simple_graph.is_regular_of_degree.compl + theorem simple_graph.is_regular_of_degree.degree_eq + theorem simple_graph.is_regular_of_degree.top - theorem simple_graph.is_regular_of_degree_eq + theorem simple_graph.ne_of_adj_of_not_adj + theorem simple_graph.neighbor_finset_compl + theorem simple_graph.neighbor_finset_def Modified src/combinatorics/simple_graph/strongly_regular.lean + theorem simple_graph.bot_strongly_regular + theorem simple_graph.compl_neighbor_finset_sdiff_inter_eq - theorem simple_graph.complete_strongly_regular - structure simple_graph.is_SRG_of + theorem simple_graph.is_SRG_with.card_common_neighbors_eq_of_adj_compl + theorem simple_graph.is_SRG_with.card_common_neighbors_eq_of_not_adj_compl + theorem simple_graph.is_SRG_with.card_neighbor_finset_union_eq + theorem simple_graph.is_SRG_with.card_neighbor_finset_union_of_adj + theorem simple_graph.is_SRG_with.card_neighbor_finset_union_of_not_adj + theorem simple_graph.is_SRG_with.compl + theorem simple_graph.is_SRG_with.compl_is_regular + theorem simple_graph.is_SRG_with.top + structure simple_graph.is_SRG_with + theorem simple_graph.sdiff_compl_neighbor_finset_inter_eq Modified src/data/fintype/basic.lean + theorem finset.compl_inter + theorem finset.compl_union + theorem finset.inter_compl +/- theorem finset.union_compl Modified src/data/set/finite.lean + theorem set.to_finset_sdiff + theorem set.to_finset_singleton Modified src/measure_theory/measure/outer_measure.lean 2021-12-31 22:23:24 8db2fa0 chore(category_theory/closed/cartesian): make exp right-associative (#11172) This makes `X ⟹ Y ⟹ Z` parse as `X ⟹ (Y ⟹ Z)`, like ordinary function types. ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean 2021-12-31 22:23:23 559951c feat(data/quot): Add quotient pi induction (#11137) I am planning to use this later to show that the (pi) product of homotopy classes of paths is well-defined, and prove properties about that product. ESTIMATED CHANGES Modified src/data/quot.lean +/- theorem quotient.choice_eq + theorem quotient.induction_on_pi 2021-12-31 22:23:22 200f47d feat(analysis/normed_space/banach_steinhaus): prove the standard Banach-Steinhaus theorem (#10663) Here we prove the Banach-Steinhaus theorem for maps from a Banach space into a (semi-)normed space. This is the standard version of the theorem and the proof proceeds via the Baire category theorem. Notably, the version from barelled spaces to locally convex spaces is not included because these spaces do not yet exist in `mathlib`. In addition, it is established that the pointwise limit of continuous linear maps from a Banach space into a normed space is itself a continuous linear map. - [x] depends on: #10700 ESTIMATED CHANGES Added src/analysis/normed_space/banach_steinhaus.lean + theorem banach_steinhaus + theorem banach_steinhaus_supr_nnnorm + def continuous_linear_map_of_tendsto Modified src/topology/metric_space/baire.lean 2021-12-31 21:03:20 ea710ca feat(data/polynomial/ring_division): golf and generalize `leading_coeff_div_by_monic_of_monic` (#11077) No longer require that the underlying ring is a domain. Also added helper API lemma `leading_coeff_monic_mul`. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.leading_coeff_monic_mul Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.leading_coeff_div_by_monic_of_monic 2021-12-31 21:03:19 8ec59f9 feat(data/int/gcd): add theorem `gcd_least_linear` (#10743) For nonzero integers `a` and `b`, `gcd a b` is the smallest positive integer that can be written in the form `a * x + b * y` for some pair of integers `x` and `y` This is an extension of Bézout's lemma (`gcd_eq_gcd_ab`), which says that `gcd a b` can be written in that form. ESTIMATED CHANGES Modified src/data/int/gcd.lean + theorem int.gcd_dvd_iff + theorem int.gcd_least_linear 2021-12-31 19:13:58 e4607f8 chore(data/sym/basic): golf and add missing simp lemmas (#11160) By changing `cons` to not use pattern matching, `(a :: s).1 = a ::ₘ s.1` is true by `rfl`, which is convenient here and there for golfing. ESTIMATED CHANGES Modified src/data/setoid/basic.lean Modified src/data/sym/basic.lean +/- def sym.cons + theorem sym.cons_erase + theorem sym.eq_repeat + theorem sym.exists_mem - def sym.mem +/- def sym.nil - def sym.of_vector + theorem sym.of_vector_cons + theorem sym.of_vector_nil 2021-12-31 19:13:57 fbbbdfa feat(algebra/star/self_adjoint): define the self-adjoint elements of a star additive group (#11135) Given a type `R` with `[add_group R] [star_add_monoid R]`, we define `self_adjoint R` as the additive subgroup of self-adjoint elements, i.e. those such that `star x = x`. To avoid confusion, we move `is_self_adjoint` (which defines this to mean `⟪T x, y⟫ = ⟪x, T y⟫` in an inner product space) to the `inner_product_space` namespace. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Added src/algebra/star/self_adjoint.lean + theorem self_adjoint.bit0_mem + theorem self_adjoint.bit1_mem + theorem self_adjoint.coe_inv + theorem self_adjoint.coe_mul + theorem self_adjoint.coe_one + theorem self_adjoint.conjugate' + theorem self_adjoint.conjugate + theorem self_adjoint.mem_iff + theorem self_adjoint.one_mem + theorem self_adjoint.star_coe_eq + def self_adjoint Modified src/analysis/inner_product_space/basic.lean + theorem inner_product_space.is_self_adjoint.apply_clm + theorem inner_product_space.is_self_adjoint.coe_re_apply_inner_self_apply + theorem inner_product_space.is_self_adjoint.conj_inner_sym + theorem inner_product_space.is_self_adjoint.restrict_invariant + def inner_product_space.is_self_adjoint + theorem inner_product_space.is_self_adjoint_iff_bilin_form - theorem is_self_adjoint.apply_clm - theorem is_self_adjoint.coe_re_apply_inner_self_apply - theorem is_self_adjoint.conj_inner_sym - theorem is_self_adjoint.restrict_invariant - def is_self_adjoint - theorem is_self_adjoint_iff_bilin_form Modified src/analysis/inner_product_space/rayleigh.lean + theorem inner_product_space.is_self_adjoint.eq_smul_self_of_is_local_extr_on + theorem inner_product_space.is_self_adjoint.eq_smul_self_of_is_local_extr_on_real + theorem inner_product_space.is_self_adjoint.has_eigenvalue_infi_of_finite_dimensional + theorem inner_product_space.is_self_adjoint.has_eigenvalue_supr_of_finite_dimensional + theorem inner_product_space.is_self_adjoint.has_eigenvector_of_is_local_extr_on + theorem inner_product_space.is_self_adjoint.has_eigenvector_of_is_max_on + theorem inner_product_space.is_self_adjoint.has_eigenvector_of_is_min_on + theorem inner_product_space.is_self_adjoint.has_strict_fderiv_at_re_apply_inner_self + theorem inner_product_space.is_self_adjoint.linearly_dependent_of_is_local_extr_on + theorem inner_product_space.is_self_adjoint.subsingleton_of_no_eigenvalue_finite_dimensional - theorem is_self_adjoint.eq_smul_self_of_is_local_extr_on - theorem is_self_adjoint.eq_smul_self_of_is_local_extr_on_real - theorem is_self_adjoint.has_eigenvalue_infi_of_finite_dimensional - theorem is_self_adjoint.has_eigenvalue_supr_of_finite_dimensional - theorem is_self_adjoint.has_eigenvector_of_is_local_extr_on - theorem is_self_adjoint.has_eigenvector_of_is_max_on - theorem is_self_adjoint.has_eigenvector_of_is_min_on - theorem is_self_adjoint.has_strict_fderiv_at_re_apply_inner_self - theorem is_self_adjoint.linearly_dependent_of_is_local_extr_on - theorem is_self_adjoint.subsingleton_of_no_eigenvalue_finite_dimensional Modified src/analysis/inner_product_space/spectrum.lean + theorem inner_product_space.is_self_adjoint.apply_eigenvector_basis + theorem inner_product_space.is_self_adjoint.conj_eigenvalue_eq_self + theorem inner_product_space.is_self_adjoint.diagonalization_apply_self_apply + theorem inner_product_space.is_self_adjoint.diagonalization_basis_apply_self_apply + theorem inner_product_space.is_self_adjoint.diagonalization_basis_symm_apply + theorem inner_product_space.is_self_adjoint.diagonalization_symm_apply + theorem inner_product_space.is_self_adjoint.direct_sum_submodule_is_internal + theorem inner_product_space.is_self_adjoint.eigenvector_basis_orthonormal + theorem inner_product_space.is_self_adjoint.has_eigenvector_eigenvector_basis + theorem inner_product_space.is_self_adjoint.invariant_orthogonal_eigenspace + theorem inner_product_space.is_self_adjoint.orthogonal_family_eigenspaces' + theorem inner_product_space.is_self_adjoint.orthogonal_family_eigenspaces + theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces + theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot' + theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot + theorem inner_product_space.is_self_adjoint.orthogonal_supr_eigenspaces_invariant - theorem is_self_adjoint.apply_eigenvector_basis - theorem is_self_adjoint.conj_eigenvalue_eq_self - theorem is_self_adjoint.diagonalization_apply_self_apply - theorem is_self_adjoint.diagonalization_basis_apply_self_apply - theorem is_self_adjoint.diagonalization_basis_symm_apply - theorem is_self_adjoint.diagonalization_symm_apply - theorem is_self_adjoint.direct_sum_submodule_is_internal - theorem is_self_adjoint.eigenvector_basis_orthonormal - theorem is_self_adjoint.has_eigenvector_eigenvector_basis - theorem is_self_adjoint.invariant_orthogonal_eigenspace - theorem is_self_adjoint.orthogonal_family_eigenspaces' - theorem is_self_adjoint.orthogonal_family_eigenspaces - theorem is_self_adjoint.orthogonal_supr_eigenspaces - theorem is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot' - theorem is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot - theorem is_self_adjoint.orthogonal_supr_eigenspaces_invariant 2021-12-31 19:13:55 fdf09df feat(data/polynomial/degree/lemmas): (nat_)degree_sum_eq_of_disjoint (#11121) Also two helper lemmas on `nat_degree`. Generalize `degree_sum_fin_lt` to semirings ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.nat_degree_add_eq_left_of_nat_degree_lt + theorem polynomial.nat_degree_add_eq_right_of_nat_degree_lt Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.degree_sum_eq_of_disjoint + theorem polynomial.nat_degree_sum_eq_of_disjoint 2021-12-31 16:13:18 c4caf0e feat(linear_algebra/multilinear/basic): add dependent version of `multilinear_map.dom_dom_congr_linear_equiv` (#10474) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem function.Pi_congr_left'_symm_update + theorem function.Pi_congr_left'_update Modified src/linear_algebra/multilinear/basic.lean + def multilinear_map.dom_dom_congr_linear_equiv' 2021-12-31 14:15:50 9a38c19 feat(data/list/indexes): map_with_index_eq_of_fn (#11163) Some `list.map_with_index` API. ESTIMATED CHANGES Modified src/data/list/indexes.lean + theorem list.length_map_with_index + theorem list.map_with_index_cons + theorem list.map_with_index_eq_of_fn + theorem list.map_with_index_nil + theorem list.nth_le_map_with_index 2021-12-31 14:15:49 b92afc9 chore(data/equiv/basic): missing dsimp lemmas (#11159) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.subtype_quotient_equiv_quotient_subtype_mk + theorem equiv.subtype_quotient_equiv_quotient_subtype_symm_mk 2021-12-31 14:15:48 bcf1d2d feat(category_theory/sites/plus): Adds a functorial version of `J.diagram P`, functorial in `P`. (#11155) ESTIMATED CHANGES Modified src/category_theory/sites/plus.lean + def category_theory.grothendieck_topology.diagram_functor 2021-12-31 14:15:46 7b38792 feat(category_theory/limits/functor_category): Some additional isomorphisms involving (co)limits of functors. (#11152) ESTIMATED CHANGES Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/functor_category.lean + def category_theory.limits.colimit_flip_iso_comp_colim + def category_theory.limits.colimit_iso_flip_comp_colim +/- def category_theory.limits.colimit_iso_swap_comp_colim + theorem category_theory.limits.colimit_map_colimit_obj_iso_colimit_comp_evaluation_hom + theorem category_theory.limits.colimit_obj_iso_colimit_comp_evaluation_inv_colimit_map + def category_theory.limits.limit_flip_iso_comp_lim + def category_theory.limits.limit_iso_flip_comp_lim +/- def category_theory.limits.limit_iso_swap_comp_lim + theorem category_theory.limits.limit_map_limit_obj_iso_limit_comp_evaluation_hom + theorem category_theory.limits.limit_obj_iso_limit_comp_evaluation_inv_limit_map Modified src/category_theory/products/basic.lean + def category_theory.flip_comp_evaluation 2021-12-31 14:15:45 b142b69 feat(data/list/count): add lemma `count_le_count_map` (#11148) Generalises `count_map_map`: for any `f : α → β` (not necessarily injective), `count x l ≤ count (f x) (map f l)` ESTIMATED CHANGES Modified src/data/list/count.lean + theorem list.count_le_count_map - theorem list.count_map_map + theorem list.count_map_of_injective 2021-12-31 14:15:44 dc57b54 feat(ring_theory/localization): Transferring `is_localization` along equivs. (#11146) ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem is_fraction_ring.is_fraction_ring_iff_of_base_ring_equiv + theorem is_localization.is_localization_iff_of_alg_equiv + theorem is_localization.is_localization_iff_of_base_ring_equiv + theorem is_localization.is_localization_iff_of_ring_equiv + theorem is_localization.is_localization_of_alg_equiv + theorem is_localization.is_localization_of_base_ring_equiv - theorem is_localization.iso_comp 2021-12-31 14:15:43 bc5e008 feat(data/dfinsupp/order): Pointwise order on finitely supported dependent functions (#11138) This defines the pointwise order on `Π₀ i, α i`, in very much the same way as in `data.finsupp.order`. It also moves `data.dfinsupp` to `data.dfinsupp.basic`. ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean Renamed src/data/dfinsupp.lean to src/data/dfinsupp/basic.lean Added src/data/dfinsupp/order.lean + theorem dfinsupp.add_eq_zero_iff + theorem dfinsupp.coe_fn_mono + theorem dfinsupp.coe_tsub + theorem dfinsupp.disjoint_iff + theorem dfinsupp.inf_apply + theorem dfinsupp.le_def + theorem dfinsupp.le_iff' + theorem dfinsupp.le_iff + theorem dfinsupp.not_mem_support_iff + def dfinsupp.order_embedding_to_fun + theorem dfinsupp.order_embedding_to_fun_apply + theorem dfinsupp.single_le_iff + theorem dfinsupp.single_tsub + theorem dfinsupp.subset_support_tsub + theorem dfinsupp.sup_apply + theorem dfinsupp.support_inf + theorem dfinsupp.support_sup + theorem dfinsupp.support_tsub + theorem dfinsupp.tsub_apply Modified src/data/finsupp/to_dfinsupp.lean Modified src/linear_algebra/basic.lean 2021-12-31 14:15:42 2e8ebdc feat(algebra/homology): Construction of null homotopic chain complex … (#11125) …morphisms and one lemma on addivity of homotopies ESTIMATED CHANGES Modified src/algebra/homology/homotopy.lean + def homotopy.add + def homotopy.null_homotopic_map' + theorem homotopy.null_homotopic_map'_f + theorem homotopy.null_homotopic_map'_f_eq_zero + theorem homotopy.null_homotopic_map'_f_of_not_rel_left + theorem homotopy.null_homotopic_map'_f_of_not_rel_right + def homotopy.null_homotopic_map + theorem homotopy.null_homotopic_map_f + theorem homotopy.null_homotopic_map_f_eq_zero + theorem homotopy.null_homotopic_map_f_of_not_rel_left + theorem homotopy.null_homotopic_map_f_of_not_rel_right + def homotopy.null_homotopy' + def homotopy.null_homotopy 2021-12-31 14:15:41 ff7e837 feat(combinatorics/configuration): Variant of `exists_injective_of_card_le` (#11116) Proves a variant of `exists_injective_of_card_le` that will be useful in an upcoming proof. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.has_lines.exists_bijective_of_card_eq 2021-12-31 14:15:41 1fd70b1 refactor(algebra/big_operators/basic): Reorder lemmas (#11113) This PR does the following things: - Move `prod_bij` and `prod_bij'` earlier in the file, so that they can be put to use. - Move `prod_product` and `prod_product'` past `prod_sigma` and `prod_sigma'` down to `prod_product_right` and `prod_product_right'`. - Use `prod_bij` and `prod_sigma` to give an easier proof of `prod_product`. - The new proof introduces `prod_finset_product` and the remaining three analogs of the four `prod_product` lemmas. `prod_finset_product` is a lemma that I found helpful in my own work. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_finset_product' + theorem finset.prod_finset_product + theorem finset.prod_finset_product_right' + theorem finset.prod_finset_product_right 2021-12-31 14:15:40 99e3ffb feat(data/fin/tuple): new directory and file on sorting (#11096) Code written by @kmill at https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Permutation.20to.20make.20a.20function.20monotone Co-authored by: Kyle Miller ESTIMATED CHANGES Renamed src/data/fin/tuple.lean to src/data/fin/tuple/basic.lean Added src/data/fin/tuple/default.lean Added src/data/fin/tuple/sort.lean + theorem tuple.graph.card + def tuple.graph.proj + def tuple.graph + def tuple.graph_equiv₁ + def tuple.graph_equiv₂ + theorem tuple.monotone_proj + theorem tuple.monotone_sort + theorem tuple.proj_equiv₁' + theorem tuple.self_comp_sort + def tuple.sort 2021-12-31 14:15:39 06a0197 feat(category_theory/bicategory/basic): define bicategories (#11079) This PR defines bicategories and gives basic lemmas. ESTIMATED CHANGES Added src/category_theory/bicategory/basic.lean + theorem category_theory.bicategory.associator_conjugation_left + theorem category_theory.bicategory.associator_conjugation_middle + theorem category_theory.bicategory.associator_conjugation_right + theorem category_theory.bicategory.associator_inv_conjugation_left + theorem category_theory.bicategory.associator_inv_conjugation_middle + theorem category_theory.bicategory.associator_inv_conjugation_right + theorem category_theory.bicategory.associator_inv_naturality_left + theorem category_theory.bicategory.associator_inv_naturality_middle + theorem category_theory.bicategory.associator_inv_naturality_right + theorem category_theory.bicategory.hom_inv_whisker_left + theorem category_theory.bicategory.hom_inv_whisker_right + theorem category_theory.bicategory.inv_hom_whisker_left + theorem category_theory.bicategory.inv_hom_whisker_right + theorem category_theory.bicategory.inv_whisker_left + theorem category_theory.bicategory.inv_whisker_right + theorem category_theory.bicategory.left_unitor_comp' + theorem category_theory.bicategory.left_unitor_comp + theorem category_theory.bicategory.left_unitor_comp_inv' + theorem category_theory.bicategory.left_unitor_comp_inv + theorem category_theory.bicategory.left_unitor_conjugation + theorem category_theory.bicategory.left_unitor_inv_naturality + theorem category_theory.bicategory.left_unitor_inv_whisker_right + theorem category_theory.bicategory.left_unitor_whisker_right + theorem category_theory.bicategory.pentagon_hom_hom_inv_hom_hom + theorem category_theory.bicategory.pentagon_hom_hom_inv_inv_hom + theorem category_theory.bicategory.pentagon_hom_inv_inv_inv_hom + theorem category_theory.bicategory.pentagon_hom_inv_inv_inv_inv + theorem category_theory.bicategory.pentagon_inv + theorem category_theory.bicategory.pentagon_inv_hom_hom_hom_hom + theorem category_theory.bicategory.pentagon_inv_hom_hom_hom_inv + theorem category_theory.bicategory.pentagon_inv_inv_hom_hom_inv + theorem category_theory.bicategory.pentagon_inv_inv_hom_inv_inv + theorem category_theory.bicategory.right_unitor_comp + theorem category_theory.bicategory.right_unitor_comp_inv + theorem category_theory.bicategory.right_unitor_conjugation + theorem category_theory.bicategory.right_unitor_inv_naturality + theorem category_theory.bicategory.triangle_assoc_comp_left + theorem category_theory.bicategory.triangle_assoc_comp_left_inv + theorem category_theory.bicategory.triangle_assoc_comp_right + theorem category_theory.bicategory.triangle_assoc_comp_right_inv + theorem category_theory.bicategory.unitors_equal + theorem category_theory.bicategory.unitors_inv_equal + theorem category_theory.bicategory.whisker_left_iff + def category_theory.bicategory.whisker_left_iso + theorem category_theory.bicategory.whisker_left_right_unitor + theorem category_theory.bicategory.whisker_left_right_unitor_inv + theorem category_theory.bicategory.whisker_right_iff + def category_theory.bicategory.whisker_right_iso 2021-12-31 14:15:37 a5573f3 feat(data/{fin,multi}set/powerset): add some lemmas about powerset_len (#10866) For both multisets and finsets From flt-regular ESTIMATED CHANGES Modified src/data/finset/powerset.lean + theorem finset.map_val_val_powerset_len + theorem finset.powerset_len_card_add Modified src/data/multiset/powerset.lean + theorem multiset.powerset_len_card_add + theorem multiset.powerset_len_empty + theorem multiset.powerset_len_map +/- theorem multiset.powerset_len_zero_right 2021-12-31 12:26:01 78a9900 refactor(algebra/group/hom_instances): relax semiring to non_unital_non_assoc_semiring in add_monoid_hom.mul (#11165) Previously `algebra.group.hom_instances` ended with some results showing that left and right multiplication operators are additive monoid homomorphisms between (unital, associative) semirings. The assumptions of a unit and associativity are not required for these results to work, so we relax the condition to `non_unital_non_assoc_semiring`. Required for #11073 . ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean 2021-12-31 07:44:08 dc1525f docs(data/sum/basic): Expand module docstring and cleanup (#11158) This moves `data.sum` to `data.sum.basic`, provides a proper docstring for it, cleans it up. There are no new declarations, just some file rearrangement, variable grouping, unindentation, and a `protected` attribute for `sum.lex.inl`/`sum.lex.inr` to avoid them clashing with `sum.inl`/`sum.inr`. ESTIMATED CHANGES Modified src/control/bifunctor.lean Modified src/data/equiv/basic.lean Renamed src/data/sum.lean to src/data/sum/basic.lean +/- theorem function.injective.sum_elim - theorem sum.exists - theorem sum.forall +/- def sum.get_left +/- def sum.get_right +/- theorem sum.inl_injective +/- theorem sum.inr_injective +/- def sum.is_left +/- def sum.is_right + theorem sum.lex.mono + theorem sum.lex.mono_left + theorem sum.lex.mono_right +/- inductive sum.lex +/- theorem sum.lex_acc_inl +/- theorem sum.lex_acc_inr +/- theorem sum.lex_inl_inl +/- theorem sum.lex_inr_inl +/- theorem sum.lex_inr_inr +/- theorem sum.lex_wf +/- theorem sum.swap_left_inverse +/- theorem sum.swap_right_inverse +/- theorem sum.swap_swap +/- theorem sum.swap_swap_eq +/- theorem sum.update_elim_inl +/- theorem sum.update_elim_inr +/- theorem sum.update_inl_apply_inl +/- theorem sum.update_inl_apply_inr +/- theorem sum.update_inl_comp_inl +/- theorem sum.update_inl_comp_inr +/- theorem sum.update_inr_apply_inl +/- theorem sum.update_inr_apply_inr +/- theorem sum.update_inr_comp_inl +/- theorem sum.update_inr_comp_inr + theorem sum.«exists» + theorem sum.«forall» Modified src/order/rel_classes.lean Modified src/tactic/fresh_names.lean Modified test/simps.lean 2021-12-30 21:39:31 e1a8b88 feat(tactic/itauto): add support for [decidable p] assumptions (#10744) This allows proving theorems like the following, which use excluded middle selectively through `decidable` assumptions: ``` example (p q r : Prop) [decidable p] : (p → (q ∨ r)) → ((p → q) ∨ (p → r)) := by itauto ``` This also fixes a bug in the proof search order of the original itauto implementation causing nontermination in one of the new tests, which also makes the "big test" at the end run instantly. Also adds a `!` option to enable decidability for all propositions using classical logic. Because adding decidability instances can be expensive for proof search, they are disabled by default. You can specify specific decidable instances to add by `itauto [p, q]`, or use `itauto*` which adds all decidable atoms. (The `!` option is useless on its own, and should be combined with `*` or `[p]` options.) ESTIMATED CHANGES Modified src/tactic/itauto.lean + def tactic.itauto.is_ok + def tactic.itauto.map_proof + def tactic.itauto.when_ok Modified test/itauto.lean 2021-12-30 20:16:32 7f92832 feat(category_theory/currying): `flip` is isomorphic to uncurrying, swapping, and currying. (#11151) ESTIMATED CHANGES Modified src/category_theory/currying.lean + def category_theory.flip_iso_curry_swap_uncurry 2021-12-30 18:41:23 3dad7c8 chore(algebra/ring/comp_typeclasses): fix doctrings (#11150) This fixes the docstrings of two typeclasses. ESTIMATED CHANGES Modified src/algebra/ring/comp_typeclasses.lean 2021-12-30 16:51:28 682f1e6 feat(analysis/normed_space/operator_norm): generalize linear_map.bound_of_ball_bound (#11140) This was proved over `is_R_or_C` but holds (in a slightly different form) over all nondiscrete normed fields. ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/is_R_or_C.lean + theorem linear_map.bound_of_ball_bound' - theorem linear_map.bound_of_ball_bound Modified src/analysis/normed_space/operator_norm.lean + theorem linear_map.bound_of_ball_bound 2021-12-30 16:51:27 c0b5ce1 feat(data/nat/choose/basic): choose_eq_zero_iff (#11120) ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean + theorem nat.choose_eq_zero_iff 2021-12-30 16:51:27 993a470 feat(analysis/special_functions/log): add log_div_self_antitone_on (#10985) Adds lemma `log_div_self_antitone_on`, which shows that `log x / x` is decreasing when `exp 1 \le x`. Needed for Bertrand's postulate (#8002). ESTIMATED CHANGES Modified src/analysis/special_functions/log.lean + theorem real.log_div_self_antitone_on + theorem real.log_le_sub_one_of_pos 2021-12-30 14:54:46 ac97675 feat(data/polynomial/degree/definition): nat_degree_monomial in ite form (#11123) Changed the proof usage elsewhere. This helps deal with sums of over monomials. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.nat_degree_monomial Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/mirror.lean 2021-12-30 14:54:45 424773a feat(data/finset/fold): fold_const, fold_ite (#11122) ESTIMATED CHANGES Modified src/data/finset/fold.lean + theorem finset.fold_const + theorem finset.fold_ite' + theorem finset.fold_ite 2021-12-30 14:54:44 c8a5762 feat(order/galois_connection): gc magic (#11114) see [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.28l.E2.82.81.20S.29.2Emap.20.CF.83.20.E2.89.A4.20l.E2.82.82.20.28S.2Emap.20.E2.87.91.CF.83.29). ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean Modified src/order/galois_connection.lean + theorem galois_connection.l_comm_iff_u_comm + theorem galois_connection.l_comm_of_u_comm + theorem galois_connection.l_eq + theorem galois_connection.u_comm_of_l_comm + theorem galois_connection.u_eq 2021-12-30 14:54:43 f6d0f8d refactor(analysis/normed_space/operator_norm): split a proof (#11112) Split the proof of `continuous_linear_map.complete_space` into reusable steps. Motivated by #9862 ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.lipschitz_apply + def continuous_linear_map.of_mem_closure_image_coe_bounded + def continuous_linear_map.of_tendsto_of_bounded_range + theorem continuous_linear_map.tendsto_of_tendsto_pointwise_of_cauchy_seq 2021-12-30 14:54:42 11de867 feat(data/fin/interval): add lemmas (#11102) From flt-regular. ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.bot_eq_zero + theorem fin.top_eq_last Modified src/data/fin/interval.lean + theorem fin.card_filter_ge + theorem fin.card_filter_gt + theorem fin.card_filter_le + theorem fin.card_filter_le_le + theorem fin.card_filter_le_lt + theorem fin.card_filter_lt + theorem fin.card_filter_lt_le + theorem fin.card_filter_lt_lt Modified src/data/finset/locally_finite.lean + theorem finset.filter_ge_eq_Iic + theorem finset.filter_gt_eq_Iio + theorem finset.filter_le_eq_Ici + theorem finset.filter_le_le_eq_Icc + theorem finset.filter_le_lt_eq_Ico + theorem finset.filter_lt_eq_Ioi + theorem finset.filter_lt_le_eq_Ioc + theorem finset.filter_lt_lt_eq_Ioo 2021-12-30 14:54:41 3398efa feat(topology/homeomorph): homeo of continuous equivalence from compact to T2 (#11072) ESTIMATED CHANGES Modified src/topology/homeomorph.lean + theorem continuous.continuous_symm_of_equiv_compact_to_t2 + theorem continuous.homeo_of_equiv_compact_to_t2.t1_counterexample + def continuous.homeo_of_equiv_compact_to_t2 - theorem homeomorph.compact_space - theorem homeomorph.t2_space 2021-12-30 14:54:40 7b1c775 chore(category_theory/adjunction/limits): generalize universe (#11070) ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean +/- def category_theory.adjunction.cocones_iso +/- def category_theory.adjunction.cocones_iso_component_hom +/- def category_theory.adjunction.cocones_iso_component_inv +/- def category_theory.adjunction.cones_iso +/- def category_theory.adjunction.cones_iso_component_hom +/- def category_theory.adjunction.cones_iso_component_inv +/- theorem category_theory.adjunction.has_colimits_of_equivalence +/- theorem category_theory.adjunction.has_limits_of_equivalence +/- def category_theory.adjunction.left_adjoint_preserves_colimits +/- def category_theory.adjunction.right_adjoint_preserves_limits Modified src/category_theory/closed/ideal.lean Modified src/category_theory/limits/cone_category.lean Modified src/category_theory/limits/has_limits.lean + theorem category_theory.limits.has_colimits.has_colimits_of_shape - theorem category_theory.limits.has_colimits.has_limits_of_shape Modified src/category_theory/limits/preserves/shapes/terminal.lean +/- theorem category_theory.limits.has_initial_of_has_initial_of_preserves_colimit +/- theorem category_theory.limits.has_terminal_of_has_terminal_of_preserves_limit +/- def category_theory.limits.is_colimit_of_has_initial_of_preserves_colimit +/- def category_theory.limits.is_initial.is_initial_obj +/- def category_theory.limits.is_initial.is_initial_of_obj +/- def category_theory.limits.is_limit_of_has_terminal_of_preserves_limit +/- def category_theory.limits.is_terminal.is_terminal_obj +/- def category_theory.limits.is_terminal.is_terminal_of_obj Modified src/category_theory/limits/shapes/terminal.lean +/- def category_theory.limits.as_empty_cocone +/- def category_theory.limits.as_empty_cone +/- def category_theory.limits.has_initial + theorem category_theory.limits.has_initial_change_diagram + theorem category_theory.limits.has_initial_change_universe +/- def category_theory.limits.has_terminal + theorem category_theory.limits.has_terminal_change_diagram + theorem category_theory.limits.has_terminal_change_universe +/- def category_theory.limits.initial + def category_theory.limits.is_colimit_change_empty_cocone + def category_theory.limits.is_colimit_empty_cocone_equiv +/- def category_theory.limits.is_initial + def category_theory.limits.is_limit_change_empty_cone + def category_theory.limits.is_limit_empty_cone_equiv +/- def category_theory.limits.is_terminal +/- def category_theory.limits.terminal Modified src/category_theory/monad/limits.lean +/- theorem category_theory.has_colimits_of_reflective +/- theorem category_theory.has_limits_of_reflective Modified src/category_theory/monoidal/of_chosen_finite_products.lean +/- def category_theory.limits.binary_fan.left_unitor +/- def category_theory.limits.binary_fan.right_unitor Modified src/category_theory/pempty.lean +/- def category_theory.functor.empty + def category_theory.functor.empty_equivalence +/- theorem category_theory.functor.empty_ext' +/- def category_theory.functor.empty_ext +/- def category_theory.functor.unique_from_empty 2021-12-30 14:54:39 d49ae12 feat(topology/homotopy): Add homotopy product (#10946) Binary product and pi product of homotopies. ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + def continuous_map.pi + theorem continuous_map.pi_eval + theorem continuous_map.prod_eval +/- def continuous_map.prod_map +/- def continuous_map.prod_mk Added src/topology/homotopy/product.lean + def continuous_map.homotopy.pi + def continuous_map.homotopy.prod + def continuous_map.homotopy_rel.pi + def continuous_map.homotopy_rel.prod 2021-12-30 14:14:55 52841fb feat(ring_theory/polynomial/cyclotomic/basic): add cyclotomic_expand_eq_cyclotomic_mul (#11005) We prove that, if `¬p ∣ n`, then `expand R p (cyclotomic n R) = (cyclotomic (n * p) R) * (cyclotomic n R)` - [x] depends on: #10965 ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic.irreducible_rat + theorem polynomial.cyclotomic.is_coprime_rat + theorem polynomial.cyclotomic.is_primitive + theorem polynomial.cyclotomic_eq_minpoly_rat + theorem polynomial.cyclotomic_expand_eq_cyclotomic_mul + theorem polynomial.cyclotomic_injective 2021-12-30 08:19:12 655c2f0 chore(topology/algebra/weak_dual_topology): review (#11141) * Fix universes in `pi.has_continuous_smul`. * Add `function.injective.embedding_induced` and `weak_dual.coe_fn_embedding`. * Golf some proofs. * Review `weak_dual.module` etc instances to ensure, e.g., `module ℝ (weak_dual ℂ E)`. ESTIMATED CHANGES Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/weak_dual_topology.lean + theorem weak_dual.coe_fn_embedding Modified src/topology/maps.lean + theorem function.injective.embedding_induced 2021-12-30 06:52:10 04071ae feat(analysis/inner_product_space/adjoint): define the adjoint for linear maps between finite-dimensional spaces (#11119) This PR defines the adjoint of a linear map between finite-dimensional inner product spaces. We use the fact that such maps are always continuous and define it as the adjoint of the corresponding continuous linear map. ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + def linear_map.adjoint + theorem linear_map.adjoint_adjoint + theorem linear_map.adjoint_comp + theorem linear_map.adjoint_eq_to_clm_adjoint + theorem linear_map.adjoint_inner_left + theorem linear_map.adjoint_inner_right + theorem linear_map.adjoint_to_continuous_linear_map + theorem linear_map.eq_adjoint_iff + theorem linear_map.is_adjoint_pair + theorem linear_map.star_eq_adjoint 2021-12-30 06:52:09 9443a7b feat(data/nat/prime): min fac of a power (#11115) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.pow_min_fac + theorem nat.prime.min_fac_eq + theorem nat.prime.pow_min_fac 2021-12-30 06:52:09 0b6f9eb feat(logic/small): The image of a small set is small (#11108) A followup to #11029. Only realized this could be easily proved once that PR was approved. ESTIMATED CHANGES Modified src/logic/small.lean 2021-12-30 06:52:08 864a43b feat(combinatorics/simple_graph): lemmas describing edge set of subgraphs (#11087) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/subgraph.lean + theorem disjoint.edge_set + theorem simple_graph.subgraph.edge_set_bot + theorem simple_graph.subgraph.edge_set_inf + theorem simple_graph.subgraph.edge_set_mono + theorem simple_graph.subgraph.edge_set_sup + theorem simple_graph.subgraph.edge_set_top + theorem simple_graph.subgraph.inf_adj + theorem simple_graph.subgraph.spanning_coe_bot + theorem simple_graph.subgraph.sup_adj 2021-12-30 06:52:06 8f873b7 chore(data/nat/prime): move some results (#11066) I was expecting there'd be more that could be moved, but it doesn't seem like it. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem irreducible_iff_nat_prime + theorem nat.irreducible_iff_prime + theorem nat.prime_iff Modified src/ring_theory/int/basic.lean - theorem irreducible_iff_nat_prime - theorem nat.irreducible_iff_prime - theorem nat.prime_iff 2021-12-30 06:04:19 0c149c9 feat(analysis/special_functions/log): sum of logs is log of product (#11106) ESTIMATED CHANGES Modified src/analysis/special_functions/log.lean + theorem real.log_prod 2021-12-30 02:10:59 23fdf99 chore(measure_theory/function/lp_space): move `fact`s (#11107) Move from `measure_theory/function/lp_space` to `data/real/ennreal` the `fact`s - `fact_one_le_one_ennreal` - `fact_one_le_two_ennreal` - `fact_one_le_top_ennreal` so that they can be used not just in the measure theory development of `Lp` space but also in the new `lp` spaces. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem fact_one_le_one_ennreal + theorem fact_one_le_top_ennreal + theorem fact_one_le_two_ennreal Modified src/measure_theory/function/lp_space.lean - theorem fact_one_le_one_ennreal - theorem fact_one_le_top_ennreal - theorem fact_one_le_two_ennreal 2021-12-30 01:02:33 4f3e99a feat(topology/algebra): range of `coe_fn : (M₁ →ₛₗ[σ] M₂) → (M₁ → M₂)` is closed (#11105) Motivated by #9862 ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean Modified src/topology/algebra/module.lean + theorem is_closed_set_of_map_smul + theorem linear_map.is_closed_range_coe + def linear_map_of_mem_closure_range_coe +/- def linear_map_of_tendsto Modified src/topology/algebra/monoid.lean + theorem is_closed_set_of_map_mul + theorem is_closed_set_of_map_one + theorem monoid_hom.is_closed_range_coe + def monoid_hom_of_mem_closure_range_coe +/- def monoid_hom_of_tendsto 2021-12-30 00:20:50 ea95523 feat(analysis/normed_space/dual): add lemmas, golf (#11132) * add `polar_univ`, `is_closed_polar`, `polar_gc`, `polar_Union`, `polar_union`, `polar_antitone`, `polar_zero`, `polar_closure`; * extract `polar_ball_subset_closed_ball_div` and `closed_ball_inv_subset_polar_closed_ball` out of the proofs of `polar_closed_ball` and `polar_bounded_of_nhds_zero`; * rename `polar_bounded_of_nhds_zero` to `bounded_polar_of_mem_nhds_zero`, use `metric.bounded`; * use `r⁻¹` instead of `1 / r` in `polar_closed_ball`. This is the simp normal form (though we might want to change this in the future). ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean + theorem bounded_polar_of_mem_nhds_zero + theorem closed_ball_inv_subset_polar_closed_ball + theorem is_closed_polar + theorem polar_Union + theorem polar_antitone + theorem polar_ball_subset_closed_ball_div - theorem polar_bounded_of_nhds_zero + theorem polar_closure +/- theorem polar_empty + theorem polar_gc + theorem polar_union + theorem polar_univ + theorem polar_zero 2021-12-29 21:58:43 be17b92 feat(topology/metric_space/lipschitz): image of a bdd set (#11134) Prove that `f '' s` is bounded provided that `f` is Lipschitz continuous and `s` is bounded. ESTIMATED CHANGES Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_with.bounded_image 2021-12-29 21:58:42 5bfd924 chore(analysis/normed_space/basic): add `normed_space.unbounded_univ` (#11131) Extract it from the proof of `normed_space.noncompact_space`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean 2021-12-29 21:58:41 5ac8715 split(data/finsupp/multiset): Split off `data.finsupp.basic` (#11110) This moves `finsupp.to_multiset`, `multiset.to_finsupp` and `finsupp.order_iso_multiset` to a new file `data.finsupp.multiset`. ESTIMATED CHANGES Modified src/data/finsupp/antidiagonal.lean Modified src/data/finsupp/basic.lean - theorem finsupp.card_to_multiset - theorem finsupp.count_to_multiset - theorem finsupp.mem_to_multiset - theorem finsupp.prod_to_multiset - theorem finsupp.to_finset_to_multiset - def finsupp.to_multiset - theorem finsupp.to_multiset_add - theorem finsupp.to_multiset_apply - theorem finsupp.to_multiset_map - theorem finsupp.to_multiset_single - theorem finsupp.to_multiset_sum - theorem finsupp.to_multiset_sum_single - theorem finsupp.to_multiset_symm_apply - theorem finsupp.to_multiset_to_finsupp - theorem finsupp.to_multiset_zero - def multiset.to_finsupp - theorem multiset.to_finsupp_add - theorem multiset.to_finsupp_apply - theorem multiset.to_finsupp_eq_iff - theorem multiset.to_finsupp_singleton - theorem multiset.to_finsupp_support - theorem multiset.to_finsupp_to_multiset - theorem multiset.to_finsupp_zero Added src/data/finsupp/multiset.lean + theorem finsupp.card_to_multiset + theorem finsupp.coe_order_iso_multiset + theorem finsupp.coe_order_iso_multiset_symm + theorem finsupp.count_to_multiset + theorem finsupp.lt_wf + theorem finsupp.mem_to_multiset + def finsupp.order_iso_multiset + theorem finsupp.prod_to_multiset + theorem finsupp.sum_id_lt_of_lt + theorem finsupp.to_finset_to_multiset + def finsupp.to_multiset + theorem finsupp.to_multiset_add + theorem finsupp.to_multiset_apply + theorem finsupp.to_multiset_map + theorem finsupp.to_multiset_single + theorem finsupp.to_multiset_strict_mono + theorem finsupp.to_multiset_sum + theorem finsupp.to_multiset_sum_single + theorem finsupp.to_multiset_symm_apply + theorem finsupp.to_multiset_to_finsupp + theorem finsupp.to_multiset_zero + def multiset.to_finsupp + theorem multiset.to_finsupp_add + theorem multiset.to_finsupp_apply + theorem multiset.to_finsupp_eq_iff + theorem multiset.to_finsupp_singleton + theorem multiset.to_finsupp_strict_mono + theorem multiset.to_finsupp_support + theorem multiset.to_finsupp_to_multiset + theorem multiset.to_finsupp_zero Modified src/data/finsupp/order.lean - theorem finsupp.coe_order_iso_multiset - theorem finsupp.coe_order_iso_multiset_symm - theorem finsupp.lt_wf - def finsupp.order_iso_multiset - theorem finsupp.sum_id_lt_of_lt - theorem finsupp.to_multiset_strict_mono - theorem multiset.to_finsupp_strict_mono Modified src/ring_theory/unique_factorization_domain.lean 2021-12-29 21:58:40 b8833e9 chore(data/*): Eliminate `finish` (#11099) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/data/complex/exponential.lean Modified src/data/equiv/set.lean Modified src/data/list/min_max.lean Modified src/data/nat/totient.lean Modified src/data/option/defs.lean + theorem option.mem_some_iff Modified src/data/pequiv.lean Modified src/data/setoid/partition.lean 2021-12-29 21:58:39 2a929f2 feat(algebra/ne_zero): typeclass for n ≠ 0 (#11033) ESTIMATED CHANGES Modified src/algebra/invertible.lean +/- theorem nonzero_of_invertible Added src/algebra/ne_zero.lean + theorem ne_zero.ne' + theorem ne_zero.ne + theorem ne_zero.of_gt + theorem ne_zero.of_injective' + theorem ne_zero.of_injective + theorem ne_zero.of_map + theorem ne_zero.of_ne_zero_coe + theorem ne_zero.of_no_zero_smul_divisors + theorem ne_zero.of_not_dvd + theorem ne_zero.of_pos + theorem ne_zero_iff + theorem not_ne_zero 2021-12-29 21:03:06 dd65894 chore(*): Eliminate some more instances of `finish` (#11136) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) This (and the previous series of PRs) eliminates the last few instances of `finish` in the main body of mathlib, leaving only instances in the `scripts`, `test`, `tactic`, and `archive` folders. ESTIMATED CHANGES Modified src/category_theory/monad/equiv_mon.lean Modified src/group_theory/perm/sign.lean Modified src/set_theory/game/impartial.lean 2021-12-29 21:03:05 d67a1dc chore(number_theory/quadratic_reciprocity): Eliminate `finish` (#11133) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/number_theory/quadratic_reciprocity.lean 2021-12-29 21:03:04 c03dbd1 chore(algebra/continued_fractions/computation/translations): Eliminate `finish` (#11130) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/translations.lean 2021-12-29 21:03:03 90d12bb chore(computability/NFA): Eliminate `finish` (#11103) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/computability/NFA.lean 2021-12-29 20:15:05 6703cdd chore([normed/charted]_space): Eliminate `finish` (#11126) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/geometry/manifold/charted_space.lean 2021-12-29 18:18:57 c25bd03 feat(algebra/order/field): prove `a / a ≤ 1` (#11118) ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem div_self_le_one Modified src/data/real/nnreal.lean +/- theorem nnreal.div_self_le 2021-12-29 16:12:37 395e275 chore(topology/metric_space/basic): +1 version of Heine-Borel (#11127) * Mark `metric.is_compact_of_closed_bounded` as "Heine-Borel" theorem too. * Add `metric.bounded.is_compact_closure`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.bounded.is_compact_closure 2021-12-29 16:12:36 cb37df3 feat(data/list/pairwise): pairwise repeat (#11117) ESTIMATED CHANGES Modified src/data/list/pairwise.lean + theorem list.pairwise_repeat 2021-12-29 14:53:37 d8b4267 chore(algebra/big_operators/finprod): Eliminate `finish` (#10923) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean 2021-12-29 12:26:04 e003d6e feat(data/polynomial): more API for roots (#11081) `leading_coeff_monic_mul` `leading_coeff_X_sub_C` `root_multiplicity_C` `not_is_root_C` `roots_smul_nonzero` `leading_coeff_div_by_monic_X_sub_C` `roots_eq_zero_iff` also generalized various statements about `X - C a` to `X + C a` over semirings. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.X_add_C_ne_zero + theorem polynomial.X_pow_add_C_ne_zero +/- theorem polynomial.degree_X_add_C + theorem polynomial.degree_X_pow_add_C + theorem polynomial.leading_coeff_C_mul_X_add_C +/- theorem polynomial.leading_coeff_X_add_C + theorem polynomial.leading_coeff_X_pow_add_C + theorem polynomial.leading_coeff_X_pow_add_one + theorem polynomial.leading_coeff_X_sub_C + theorem polynomial.nat_degree_X_add_C + theorem polynomial.nat_degree_X_pow_add_C + theorem polynomial.next_coeff_X_add_C +/- theorem polynomial.next_coeff_X_sub_C + theorem polynomial.zero_nmem_multiset_map_X_add_C Modified src/data/polynomial/div.lean + theorem polynomial.root_multiplicity_C Modified src/data/polynomial/eval.lean + theorem polynomial.not_is_root_C Modified src/data/polynomial/ring_division.lean + theorem polynomial.leading_coeff_div_by_monic_X_sub_C + theorem polynomial.roots_smul_nonzero Modified src/field_theory/is_alg_closed/basic.lean + theorem is_alg_closed.roots_eq_zero_iff 2021-12-29 02:26:11 268d1a8 chore(topology/metric_space/basic): golf, add dot notation (#11111) * add `cauchy_seq.bounded_range`; * golf `metric.bounded_range_of_tendsto`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem cauchy_seq.bounded_range 2021-12-28 20:56:25 a82c481 feat(data/polynomial/basic): `add_submonoid.closure` of monomials is `⊤` (#11101) Use it to golf `polynomial.add_hom_ext`. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.add_submonoid_closure_set_of_eq_monomial Modified src/group_theory/submonoid/operations.lean + theorem submonoid.map_equiv_top 2021-12-28 20:56:24 134ff7d feat(data/option/basic): add `eq_of_mem_of_mem` (#11098) If `a : α` belongs to both `o1 o2 : option α` then `o1 = o2` ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.eq_of_mem_of_mem 2021-12-28 20:56:23 f11d3ca feat(analysis/special_functions/pow): `rpow` as an `order_iso` (#10831) Bundles `rpow` into an order isomorphism on `ennreal` when the exponent is a fixed positive real. - [x] depends on: #10701 ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + def ennreal.order_iso_rpow + theorem ennreal.order_iso_rpow_symm_apply 2021-12-28 19:49:35 8d41552 feat(logic/small): The range of a function from a small type is small (#11029) That is, you don't actually need an equivalence to build `small α`, a mere function does the trick. ESTIMATED CHANGES Modified src/logic/small.lean +/- theorem small_of_injective + theorem small_of_surjective 2021-12-28 19:49:34 8d24a1f refactor(category_theory/shift): make shifts more flexible (#10573) ESTIMATED CHANGES Modified src/algebra/homology/differential_object.lean Modified src/category_theory/differential_object.lean - def category_theory.differential_object.shift_counit - def category_theory.differential_object.shift_counit_inv - def category_theory.differential_object.shift_counit_iso +/- def category_theory.differential_object.shift_functor + def category_theory.differential_object.shift_functor_add - def category_theory.differential_object.shift_inverse - def category_theory.differential_object.shift_inverse_obj - def category_theory.differential_object.shift_unit - def category_theory.differential_object.shift_unit_inv - def category_theory.differential_object.shift_unit_iso + def category_theory.differential_object.shift_ε +/- def category_theory.functor.map_differential_object Modified src/category_theory/graded_object.lean +/- theorem category_theory.graded_object.shift_functor_obj_apply Modified src/category_theory/shift.lean + def category_theory.add_neg_equiv + theorem category_theory.eq_to_hom_comp_shift_add_inv₁ + theorem category_theory.eq_to_hom_comp_shift_add_inv₁₂ + theorem category_theory.eq_to_hom_comp_shift_add_inv₂ + theorem category_theory.eq_to_hom_μ_app + theorem category_theory.has_shift.shift_obj_obj + def category_theory.has_shift_mk + theorem category_theory.map_opaque_eq_to_iso_comp_app + def category_theory.opaque_eq_to_iso + theorem category_theory.opaque_eq_to_iso_inv + theorem category_theory.opaque_eq_to_iso_symm - def category_theory.shift + def category_theory.shift_add + theorem category_theory.shift_add_hom_comp_eq_to_hom₁ + theorem category_theory.shift_add_hom_comp_eq_to_hom₁₂ + theorem category_theory.shift_add_hom_comp_eq_to_hom₂ + theorem category_theory.shift_comm' + def category_theory.shift_comm + theorem category_theory.shift_comm_hom_comp + theorem category_theory.shift_comm_symm + def category_theory.shift_equiv + theorem category_theory.shift_equiv_triangle + def category_theory.shift_functor + def category_theory.shift_functor_add + def category_theory.shift_functor_comp_shift_functor_neg + def category_theory.shift_functor_neg_comp_shift_functor + def category_theory.shift_functor_zero + structure category_theory.shift_mk_core + def category_theory.shift_monoidal_functor + theorem category_theory.shift_neg_shift' + def category_theory.shift_neg_shift + theorem category_theory.shift_shift' + theorem category_theory.shift_shift_neg' + def category_theory.shift_shift_neg + theorem category_theory.shift_shift_neg_hom_shift + theorem category_theory.shift_shift_neg_inv_shift + theorem category_theory.shift_shift_neg_shift_eq + theorem category_theory.shift_zero' + def category_theory.shift_zero +/- theorem category_theory.shift_zero_eq_zero + theorem category_theory.μ_inv_app_eq_to_hom Modified src/category_theory/triangulated/basic.lean Modified src/category_theory/triangulated/pretriangulated.lean Modified src/category_theory/triangulated/rotate.lean + def category_theory.triangulated.from_inv_rotate_rotate + def category_theory.triangulated.from_rotate_inv_rotate +/- def category_theory.triangulated.inv_rot_comp_rot_hom + def category_theory.triangulated.to_inv_rotate_rotate + def category_theory.triangulated.to_rotate_inv_rotate 2021-12-28 18:16:58 0b80d0c chore(ring_theory/*): Eliminate `finish` (#11100) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/principal_ideal_domain.lean 2021-12-28 15:39:49 143fec6 chore(linear_algebra/*): Eliminate `finish` (#11074) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Modified src/linear_algebra/direct_sum/finsupp.lean 2021-12-28 13:53:36 d053d57 feat(topology): missing lemmas for Kyle (#11076) Discussion [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Continuous.20bijective.20from.20compact.20to.20T1.20implies.20homeomorphis) revealed gaps in library. This PR fills those gaps and related ones discovered on the way. It will simplify #11072. Note that it unprotects `topological_space.nhds_adjoint` and puts it into the root namespace. I guess this was protected because it was seen only as a technical tools to prove properties of `nhds`. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite.sInter Modified src/order/filter/ultrafilter.lean + theorem ultrafilter.eq_principal_of_finite_mem Modified src/topology/basic.lean + theorem is_open_singleton_iff_nhds_eq_pure Modified src/topology/constructions.lean + def cofinite_topology + theorem mem_nhds_cofinite + theorem nhds_cofinite Modified src/topology/order.lean + theorem is_open_singleton_nhds_adjoint + theorem le_iff_nhds + theorem le_nhds_adjoint_iff' + theorem le_nhds_adjoint_iff + def nhds_adjoint + theorem nhds_adjoint_nhds + theorem nhds_adjoint_nhds_of_ne Modified src/topology/separation.lean + theorem t1_space_antimono + theorem t1_space_iff_le_cofinite 2021-12-28 12:15:06 10771d7 doc(combinatorics/configuration): Make comments into docstrings (#11097) These comments should have been docstrings. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2021-12-28 12:15:05 d3aa0a4 feat(data/polynomial/coeff): generalize to coeff_X_add_C_pow (#11093) That golfs the proof for `coeff_X_add_one_pow`. ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_X_add_C_pow 2021-12-28 12:15:03 afff1bb chore(data/polynomial/eval): golf a proof, add versions (#11092) * golf the proof of `polynomial.eval_prod`; * add versions `polynomial.eval_multiset_prod` and `polynomial.eval_list_prod`. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.eval_list_prod + theorem polynomial.eval_multiset_prod 2021-12-28 11:35:38 c04a42f feat(measure_theory/integral/{interval,circle}_integral): add strict inequalities (#11061) ESTIMATED CHANGES Modified src/measure_theory/integral/circle_integral.lean + theorem circle_integral.norm_integral_lt_of_norm_le_const_of_lt + theorem circle_integral.norm_two_pi_I_inv_smul_integral_le_of_norm_le_const Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.abs_integral_le_integral_abs + theorem interval_integral.integral_lt_integral_of_ae_le_of_measure_set_of_lt_ne_zero + theorem interval_integral.integral_lt_integral_of_continuous_on_of_le_of_exists_lt +/- theorem interval_integral.integral_nonneg_of_ae +/- theorem interval_integral.integral_nonneg_of_ae_restrict +/- theorem interval_integral.integral_nonneg_of_forall +/- theorem interval_integral.integral_pos_iff_support_of_nonneg_ae 2021-12-28 09:40:04 f452b38 feat(data/pi): bit[01]_apply simp lemmas (#11086) ESTIMATED CHANGES Modified src/data/pi.lean + theorem pi.bit0_apply + theorem pi.bit1_apply 2021-12-28 07:03:21 94bb466 feat(tactic/fin_cases): document `fin_cases with` and add `fin_cases using` (#11085) Closes #11016 ESTIMATED CHANGES Modified src/linear_algebra/matrix/block.lean Modified src/tactic/fin_cases.lean Modified src/tactic/interval_cases.lean Modified test/fin_cases.lean 2021-12-28 06:21:09 44f22aa feat(ring_theory/power_series/basic): add api for coeffs of shifts (#11082) Based on the corresponding API for polynomials ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.coeff_C_mul_X + theorem power_series.coeff_X_pow_mul' + theorem power_series.coeff_X_pow_mul + theorem power_series.coeff_mul_X_pow' + theorem power_series.coeff_mul_X_pow 2021-12-28 03:25:46 f0ca433 feat(data/set/finite): finite_or_infinite (#11084) ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite_or_infinite 2021-12-28 03:25:45 612a476 feat(ring_theory/polynomial/cyclotomic/basic): add cyclotomic_expand_eq_cyclotomic (#10974) We prove that, if `p ∣ n`, then `expand R p (cyclotomic n R) = cyclotomic (p * n) R`. - [x] depends on: #10965 - [x] depends on: #10971 ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic_expand_eq_cyclotomic Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.pow_of_dvd 2021-12-28 02:46:14 10ea860 feat(ring_theory/polynomial/cyclotomic/basic): cyclotomic_prime_mul_X_sub_one (#11063) From flt-regular. ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic_prime_mul_X_sub_one 2021-12-27 18:57:58 294e78e feat(algebra/group_with_zero/power): With zero lemmas (#11051) This proves the `group_with_zero` variant of some lemmas and moves lemmas from `algebra.group_power.basic` to `algebra.group_with_zero.power`. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean Modified src/algebra/group_with_zero/power.lean - theorem fzero_pow_eq + theorem inv_pow_sub_of_lt + theorem inv_pow_sub₀ + theorem mul_zpow_neg_one₀ +/- theorem mul_zpow₀ + theorem pow_sub_of_lt + theorem zero_zpow_eq + def zpow_group_hom₀ + theorem zpow_neg_one₀ 2021-12-27 18:57:57 1332fe1 fix(tactic/rcases): more with_desc fail (#11004) This causes hovers for definitions using `rcases_patt_parse` to print weird stuff for the parser description. ESTIMATED CHANGES Modified src/tactic/rcases.lean 2021-12-27 16:46:26 0e8cca3 feat(algebra/big_operators/order): `prod_eq_prod_iff_of_le` (#11068) If `f i ≤ g i` for all `i ∈ s`, then `∏ i in s, f i = ∏ i in s, g i` if and only if `f i = g i` for all `i ∈ s`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.prod_eq_prod_iff_of_le 2021-12-27 16:46:25 6ed17fc refactor(combinatorics/configuration): Generalize results (#11065) This PR slightly generalizes the results in `configuration.lean` by weakening the definitions of `has_points` and `has_lines`. The new definitions are also more natural, in my opinion. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2021-12-27 16:46:24 e1133cc chore(order/*): Eliminate `finish` (#11064) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) Credit to Ruben Van de Velde who suggested the solution for `eventually_lift'_powerset_eventually` ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/lift.lean 2021-12-27 16:46:23 46566c5 split(data/list/infix): Split off `data.list.basic` (#11062) This moves `list.prefix`, `list.subfix`, `list.infix`, `list.inits`, `list.tails` and `insert` lemmas from `data.list.basic` to a new file `data.list.infix`. ESTIMATED CHANGES Modified src/algebra/free_monoid.lean Modified src/data/list/basic.lean - theorem list.cons_prefix_iff - theorem list.drop_sublist - theorem list.drop_subset - theorem list.drop_suffix - theorem list.eq_nil_iff_infix_nil - theorem list.eq_nil_iff_prefix_nil - theorem list.eq_nil_iff_suffix_nil - theorem list.eq_nil_of_infix_nil - theorem list.eq_nil_of_prefix_nil - theorem list.eq_nil_of_suffix_nil - theorem list.eq_of_infix_of_length_eq - theorem list.eq_of_prefix_of_length_eq - theorem list.eq_of_suffix_of_length_eq - theorem list.eq_or_mem_of_mem_insert - theorem list.infix.length_le - theorem list.infix_append' - theorem list.infix_append - theorem list.infix_cons - theorem list.infix_iff_prefix_suffix - theorem list.infix_insert - theorem list.infix_of_mem_join - theorem list.infix_refl - theorem list.init_prefix - theorem list.init_sublist - theorem list.init_subset - theorem list.inits_append - theorem list.inits_cons - theorem list.inits_eq_tails - theorem list.inits_reverse - theorem list.insert.def - theorem list.insert_nil - theorem list.insert_of_mem - theorem list.insert_of_not_mem - theorem list.is_infix.filter - theorem list.is_infix.trans - theorem list.is_prefix.filter - theorem list.is_prefix.filter_map - theorem list.is_prefix.is_infix - theorem list.is_prefix.reduce_option - theorem list.is_prefix.trans - theorem list.is_suffix.filter - theorem list.is_suffix.is_infix - theorem list.is_suffix.trans - theorem list.length_inits - theorem list.length_insert_of_mem - theorem list.length_insert_of_not_mem - theorem list.length_tails - theorem list.map_prefix - theorem list.map_reverse_inits - theorem list.map_reverse_tails - theorem list.mem_inits - theorem list.mem_insert_iff - theorem list.mem_insert_of_mem - theorem list.mem_insert_self - theorem list.mem_of_mem_drop - theorem list.mem_of_mem_init - theorem list.mem_of_mem_tail - theorem list.mem_of_mem_take - theorem list.mem_tails - theorem list.nil_infix - theorem list.nil_prefix - theorem list.nil_suffix - theorem list.nth_le_inits - theorem list.nth_le_tails - theorem list.prefix_append - theorem list.prefix_append_right_inj - theorem list.prefix_concat - theorem list.prefix_cons_inj - theorem list.prefix_iff_eq_append - theorem list.prefix_iff_eq_take - theorem list.prefix_of_prefix_length_le - theorem list.prefix_or_prefix_of_prefix - theorem list.prefix_refl - theorem list.prefix_take_le_iff - theorem list.reverse_prefix - theorem list.reverse_suffix - theorem list.sublist_insert - theorem list.subset_insert - theorem list.suffix_append - theorem list.suffix_cons - theorem list.suffix_cons_iff - theorem list.suffix_iff_eq_append - theorem list.suffix_iff_eq_drop - theorem list.suffix_insert - theorem list.suffix_of_suffix_length_le - theorem list.suffix_or_suffix_of_suffix - theorem list.suffix_refl - theorem list.tail_sublist - theorem list.tail_subset - theorem list.tail_suffix - theorem list.tails_append - theorem list.tails_cons - theorem list.tails_eq_inits - theorem list.tails_reverse - theorem list.take_prefix - theorem list.take_sublist - theorem list.take_subset Modified src/data/list/forall2.lean Added src/data/list/infix.lean + theorem list.cons_prefix_iff + theorem list.drop_sublist + theorem list.drop_subset + theorem list.drop_suffix + theorem list.eq_nil_of_infix_nil + theorem list.eq_of_infix_of_length_eq + theorem list.eq_of_prefix_of_length_eq + theorem list.eq_of_suffix_of_length_eq + theorem list.eq_or_mem_of_mem_insert + theorem list.infix.length_le + theorem list.infix_append' + theorem list.infix_append + theorem list.infix_concat + theorem list.infix_cons + theorem list.infix_iff_prefix_suffix + theorem list.infix_insert + theorem list.infix_nil_iff + theorem list.infix_of_mem_join + theorem list.infix_refl + theorem list.infix_rfl + theorem list.init_prefix + theorem list.init_sublist + theorem list.init_subset + theorem list.inits_append + theorem list.inits_cons + theorem list.inits_eq_tails + theorem list.inits_reverse + theorem list.insert.def + theorem list.insert_nil + theorem list.insert_of_mem + theorem list.insert_of_not_mem + theorem list.is_infix.filter + theorem list.is_infix.trans + theorem list.is_prefix.filter + theorem list.is_prefix.filter_map + theorem list.is_prefix.is_infix + theorem list.is_prefix.map + theorem list.is_prefix.reduce_option + theorem list.is_prefix.trans + theorem list.is_suffix.filter + theorem list.is_suffix.is_infix + theorem list.is_suffix.trans + theorem list.length_inits + theorem list.length_insert_of_mem + theorem list.length_insert_of_not_mem + theorem list.length_tails + theorem list.map_reverse_inits + theorem list.map_reverse_tails + theorem list.mem_inits + theorem list.mem_insert_iff + theorem list.mem_insert_of_mem + theorem list.mem_insert_self + theorem list.mem_of_mem_drop + theorem list.mem_of_mem_init + theorem list.mem_of_mem_tail + theorem list.mem_of_mem_take + theorem list.mem_tails + theorem list.nil_infix + theorem list.nil_prefix + theorem list.nil_suffix + theorem list.nth_le_inits + theorem list.nth_le_tails + theorem list.prefix_append + theorem list.prefix_append_right_inj + theorem list.prefix_concat + theorem list.prefix_cons_inj + theorem list.prefix_iff_eq_append + theorem list.prefix_iff_eq_take + theorem list.prefix_nil_iff + theorem list.prefix_of_prefix_length_le + theorem list.prefix_or_prefix_of_prefix + theorem list.prefix_refl + theorem list.prefix_rfl + theorem list.prefix_take_le_iff + theorem list.reverse_prefix + theorem list.reverse_suffix + theorem list.sublist_insert + theorem list.subset_insert + theorem list.suffix_append + theorem list.suffix_cons + theorem list.suffix_cons_iff + theorem list.suffix_iff_eq_append + theorem list.suffix_iff_eq_drop + theorem list.suffix_insert + theorem list.suffix_nil_iff + theorem list.suffix_of_suffix_length_le + theorem list.suffix_or_suffix_of_suffix + theorem list.suffix_refl + theorem list.suffix_rfl + theorem list.tail_sublist + theorem list.tail_subset + theorem list.tail_suffix + theorem list.tails_append + theorem list.tails_cons + theorem list.tails_eq_inits + theorem list.tails_reverse + theorem list.take_prefix + theorem list.take_sublist + theorem list.take_subset Modified src/data/list/lattice.lean Modified src/data/nat/nth.lean 2021-12-27 16:46:22 2ecf480 feat(algebra/group/units): generalize `units.coe_lift` (#11057) * Generalize `units.coe_lift` from `group_with_zero` to `monoid`; use condition `is_unit` instead of `≠ 0`. * Add some missing `@[to_additive]` attrs. ESTIMATED CHANGES Modified src/algebra/group/units.lean +/- theorem is_unit_of_subsingleton Modified src/algebra/group_with_zero/basic.lean Modified src/group_theory/submonoid/center.lean 2021-12-27 16:46:21 de6f57d chore(ring_theory/unique_factorization_domain): Eliminate `finish` (#11055) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean 2021-12-27 16:46:20 d67c469 feat(combinatorics/simple_graph/basic): edge deletion (#11054) Function to delete edges from a simple graph, and some associated lemmas. Also defines `sym2.to_rel` as an inverse to `sym2.from_rel`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.compl_eq_delete_edges + def simple_graph.delete_edges + theorem simple_graph.delete_edges_adj + theorem simple_graph.delete_edges_delete_edges + theorem simple_graph.delete_edges_empty_eq + theorem simple_graph.delete_edges_eq_inter_edge_set + theorem simple_graph.delete_edges_le + theorem simple_graph.delete_edges_le_of_le + theorem simple_graph.delete_edges_univ_eq + theorem simple_graph.sdiff_eq_delete_edges Modified src/combinatorics/simple_graph/subgraph.lean - theorem simple_graph.subgraph.spanning_coe.is_subgraph_of_is_subgraph + theorem simple_graph.subgraph.spanning_coe_le_of_le Modified src/data/sym/sym2.lean + theorem sym2.from_rel_to_rel + def sym2.to_rel + theorem sym2.to_rel_from_rel + theorem sym2.to_rel_prop + theorem sym2.to_rel_symmetric 2021-12-27 16:46:19 ca2c344 split(data/finsupp/order): Split off `data.finsupp.basic` (#11045) This moves all order instances about `finsupp` from `data.finsupp.basic` and `data.finsupp.lattice` to a new file `data.finsupp.order`. I'm crediting * Johan for #1216, #1244 * Aaron Anderson for #3335 ESTIMATED CHANGES Modified src/data/finsupp/antidiagonal.lean Modified src/data/finsupp/basic.lean - theorem finsupp.add_eq_zero_iff - theorem finsupp.add_sub_single_one - theorem finsupp.coe_order_iso_multiset - theorem finsupp.coe_order_iso_multiset_symm - theorem finsupp.coe_tsub - theorem finsupp.le_def - theorem finsupp.le_iff' - theorem finsupp.le_iff - theorem finsupp.lt_wf - def finsupp.order_iso_multiset - theorem finsupp.single_le_iff - theorem finsupp.single_tsub - theorem finsupp.sub_single_one_add - theorem finsupp.subset_support_tsub - theorem finsupp.sum_id_lt_of_lt - theorem finsupp.support_tsub - theorem finsupp.to_multiset_strict_mono - theorem finsupp.tsub_apply - theorem multiset.to_finsuppstrict_mono Deleted src/data/finsupp/lattice.lean - theorem finsupp.bot_eq_zero - theorem finsupp.disjoint_iff - theorem finsupp.inf_apply - theorem finsupp.monotone_to_fun - def finsupp.order_embedding_to_fun - theorem finsupp.order_embedding_to_fun_apply - theorem finsupp.sup_apply - theorem finsupp.support_inf - theorem finsupp.support_sup Added src/data/finsupp/order.lean + theorem finsupp.add_eq_zero_iff + theorem finsupp.add_sub_single_one + theorem finsupp.coe_order_iso_multiset + theorem finsupp.coe_order_iso_multiset_symm + theorem finsupp.coe_tsub + theorem finsupp.disjoint_iff + theorem finsupp.inf_apply + theorem finsupp.le_def + theorem finsupp.le_iff' + theorem finsupp.le_iff + theorem finsupp.lt_wf + theorem finsupp.monotone_to_fun + def finsupp.order_embedding_to_fun + theorem finsupp.order_embedding_to_fun_apply + def finsupp.order_iso_multiset + theorem finsupp.single_le_iff + theorem finsupp.single_tsub + theorem finsupp.sub_single_one_add + theorem finsupp.subset_support_tsub + theorem finsupp.sum_id_lt_of_lt + theorem finsupp.sup_apply + theorem finsupp.support_inf + theorem finsupp.support_sup + theorem finsupp.support_tsub + theorem finsupp.to_multiset_strict_mono + theorem finsupp.tsub_apply + theorem multiset.to_finsupp_strict_mono 2021-12-27 16:46:18 463be88 feat(algebra/group_with_zero): add zero_mul_eq_const and mul_zero_eq_const (#11021) These are to match the corresponding lemmas about unapplied application of multiplication by 1. Like those lemmas, these are not marked simp. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem mul_zero_eq_const + theorem zero_mul_eq_const 2021-12-27 16:46:17 a360354 feat(algebraic_geometry): Basic open set is empty iff section is zero in reduced schemes. (#11012) ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean + theorem algebraic_geometry.LocallyRingedSpace.basic_open_zero Modified src/algebraic_geometry/prime_spectrum/basic.lean + theorem prime_spectrum.basic_open_eq_bot_iff Modified src/algebraic_geometry/properties.lean + theorem algebraic_geometry.basic_open_eq_bot_iff + theorem algebraic_geometry.basic_open_eq_of_affine' + theorem algebraic_geometry.basic_open_eq_of_affine + theorem algebraic_geometry.eq_zero_of_basic_open_empty + theorem algebraic_geometry.is_reduced_of_open_immersion + theorem algebraic_geometry.reduce_to_affine_global Modified src/algebraic_geometry/structure_sheaf.lean Modified src/ring_theory/nilpotent.lean + theorem is_reduced_of_injective Modified src/topology/opens.lean + theorem topological_space.opens.coe_bot 2021-12-27 16:46:16 ae8f08f feat(combinatorics/simple_graph/connectivity): more lemmas (#11010) This is the second chunk of #8737, which gives some more lemmas for manipulating the support and edge lists of walks. This also turns `is_trail` back into a structure. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/connectivity.lean + theorem simple_graph.walk.coe_support + theorem simple_graph.walk.coe_support_append' + theorem simple_graph.walk.coe_support_append - theorem simple_graph.walk.count_edges_eq_one_of_trail - theorem simple_graph.walk.count_edges_le_one_of_trail + theorem simple_graph.walk.edges_append + theorem simple_graph.walk.edges_nodup_of_support_nodup + theorem simple_graph.walk.edges_reverse + theorem simple_graph.walk.end_mem_tail_support_of_ne + theorem simple_graph.walk.exists_eq_cons_of_ne +/- structure simple_graph.walk.is_circuit +/- structure simple_graph.walk.is_cycle + theorem simple_graph.walk.is_path.mk' + theorem simple_graph.walk.is_path.nil + theorem simple_graph.walk.is_path.of_append_left + theorem simple_graph.walk.is_path.of_append_right + theorem simple_graph.walk.is_path.of_cons + theorem simple_graph.walk.is_path.reverse +/- structure simple_graph.walk.is_path +/- theorem simple_graph.walk.is_path_def - theorem simple_graph.walk.is_path_of_cons_is_path + theorem simple_graph.walk.is_path_reverse_iff + theorem simple_graph.walk.is_trail.count_edges_eq_one + theorem simple_graph.walk.is_trail.count_edges_le_one + theorem simple_graph.walk.is_trail.nil + theorem simple_graph.walk.is_trail.of_append_left + theorem simple_graph.walk.is_trail.of_append_right + theorem simple_graph.walk.is_trail.of_cons + theorem simple_graph.walk.is_trail.reverse + structure simple_graph.walk.is_trail - def simple_graph.walk.is_trail + theorem simple_graph.walk.is_trail_def - theorem simple_graph.walk.is_trail_of_cons_is_trail + theorem simple_graph.walk.mem_support_append_iff + theorem simple_graph.walk.mem_support_iff +/- theorem simple_graph.walk.mem_support_of_mem_edges + theorem simple_graph.walk.mem_tail_support_append_iff - theorem simple_graph.walk.nil_is_path - theorem simple_graph.walk.nil_is_trail + theorem simple_graph.walk.reverse_is_trail_iff + theorem simple_graph.walk.support_append - theorem simple_graph.walk.support_eq + theorem simple_graph.walk.support_eq_cons + theorem simple_graph.walk.support_reverse + theorem simple_graph.walk.tail_support_append 2021-12-27 16:46:14 f525f93 chore(*): Eliminate `finish` (#10970) Eliminating the use of `finish` in `data/set/basic`, `order/filter/bases`, and `topology/algebra/valued_field`. ESTIMATED CHANGES Modified src/data/set/basic.lean Modified src/order/filter/bases.lean 2021-12-27 16:46:13 2f3b966 feat(number_theory/cyclotomic/basic): add is_cyclotomic_extension (#10849) We add a class `is_cyclotomic_extension S A B` expressing the fact that `B` is obtained by `A` by adding `n`-th primitive roots of unity, for all `n ∈ S`, where `S : set ℕ+`, and some basic properties. We will add more properties of cyclotomic extensions in a future work. From flt-regular. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.is_root.dvd Added src/number_theory/cyclotomic/basic.lean + theorem is_cyclotomic_extension.empty + theorem is_cyclotomic_extension.finite + theorem is_cyclotomic_extension.finite_of_singleton + theorem is_cyclotomic_extension.iff_adjoin_eq_top + theorem is_cyclotomic_extension.iff_singleton + theorem is_cyclotomic_extension.number_field + theorem is_cyclotomic_extension.trans + theorem is_cyclotomic_extension.union_left + theorem is_cyclotomic_extension.union_right Modified src/ring_theory/polynomial/cyclotomic/basic.lean + theorem polynomial.cyclotomic.dvd_X_pow_sub_one 2021-12-27 14:52:07 002b8d9 feat(algebra/group_with_zero/basic): mul_{left,right}_eq_self₀ (#11069) Defined on `cancel_monoid_with_zero`, copying the name and proofs from `{left,right)_cancel_monoid`s, ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem mul_left_eq_self₀ + theorem mul_right_eq_self₀ 2021-12-27 12:07:40 b28734c feat(data/sym): Provide API for data.sym (#11032) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.mem_repeat + theorem multiset.repeat_left_inj + theorem multiset.repeat_left_injective Modified src/data/sym/basic.lean + theorem sym.eq_nil_of_card_zero + theorem sym.eq_repeat_of_subsingleton + def sym.equiv_congr + def sym.erase + theorem sym.exists_eq_cons_of_succ + def sym.map + theorem sym.map_cons + theorem sym.map_id + theorem sym.map_map + theorem sym.map_zero + theorem sym.mem_map + def sym.repeat + theorem sym.repeat_left_inj + theorem sym.repeat_left_injective + theorem sym.repeat_succ Modified src/data/sym/sym2.lean 2021-12-27 08:24:00 7e0b994 feat(topology/compact_convergence): define compact convergence (#10967) And prove that the topology it induces is the compact-open topology ESTIMATED CHANGES Modified src/topology/compact_open.lean Modified src/topology/order.lean + theorem topological_space.nhds_mk_of_nhds_filter_basis Added src/topology/uniform_space/compact_convergence.lean + theorem continuous_map.Inter_compact_open_gen_subset_compact_conv_nhd + def continuous_map.compact_conv_nhd + theorem continuous_map.compact_conv_nhd_compact_entourage_nonempty + theorem continuous_map.compact_conv_nhd_filter_is_basis + theorem continuous_map.compact_conv_nhd_mem_comp + theorem continuous_map.compact_conv_nhd_mono + theorem continuous_map.compact_conv_nhd_nhd_basis + theorem continuous_map.compact_conv_nhd_subset_compact_open + theorem continuous_map.compact_conv_nhd_subset_inter + def continuous_map.compact_convergence_filter_basis + def continuous_map.compact_convergence_topology + def continuous_map.compact_convergence_uniformity + theorem continuous_map.compact_open_eq_compact_convergence + theorem continuous_map.has_basis_compact_convergence_uniformity + theorem continuous_map.has_basis_nhds_compact_convergence + theorem continuous_map.mem_compact_convergence_entourage_iff + theorem continuous_map.mem_compact_convergence_nhd_filter + theorem continuous_map.mem_compact_convergence_uniformity + theorem continuous_map.nhds_compact_convergence + theorem continuous_map.self_mem_compact_conv_nhd + theorem continuous_map.tendsto_iff_forall_compact_tendsto_uniformly_on' + theorem continuous_map.tendsto_iff_forall_compact_tendsto_uniformly_on 2021-12-26 23:49:34 7c9ce5c feat(algebra/order/monoid_lemmas): `mul_eq_mul_iff_eq_and_eq` (#11056) If `a ≤ c` and `b ≤ d`, then `a * b = c * d` iff `a = c` and `b = d`. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean + theorem mul_eq_mul_iff_eq_and_eq 2021-12-26 05:05:27 4f02336 chore(analysis/complex/circle): minor review (#11059) * use implicit arg in `mem_circle_iff_abs`; * rename `abs_eq_of_mem_circle` to `abs_coe_circle` to reflect the type of LHS; * add `mem_circle_iff_norm_sq`. ESTIMATED CHANGES Modified src/analysis/complex/circle.lean + theorem abs_coe_circle - theorem abs_eq_of_mem_circle +/- theorem circle_def +/- theorem mem_circle_iff_abs + theorem mem_circle_iff_norm_sq Modified src/analysis/special_functions/complex/circle.lean 2021-12-26 03:49:28 daab3ac feat(data/pi/interval): Dependent functions to locally finite orders are locally finite (#11050) This provides the locally finite order instance for `Π i, α i` where the `α i` are locally finite. ESTIMATED CHANGES Added src/data/pi/interval.lean + theorem pi.card_Icc + theorem pi.card_Ico + theorem pi.card_Ioc + theorem pi.card_Ioo 2021-12-26 03:49:27 2e2510e chore(logic/small): Some golfing (#11030) ESTIMATED CHANGES Modified src/logic/small.lean + theorem small_map 2021-12-26 03:49:26 dd6707c feat(measure_theory/integral): a couple of lemmas on integrals and integrability (#10983) Adds a couple of congruence lemmas for integrating on intervals and integrability ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean + theorem measure_theory.integrable_on.congr_fun' + theorem measure_theory.integrable_on.congr_fun Modified src/measure_theory/integral/interval_integral.lean - theorem interval_integral.integral_Icc_eq_integral_Ioc' - theorem interval_integral.integral_Icc_eq_integral_Ioc Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_Icc_eq_integral_Ioc' + theorem measure_theory.integral_Icc_eq_integral_Ioc + theorem measure_theory.integral_Ioc_eq_integral_Ioo' + theorem measure_theory.integral_Ioc_eq_integral_Ioo Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.Ico_ae_eq_Icc' + theorem measure_theory.Ico_ae_eq_Ioc' + theorem measure_theory.Iio_ae_eq_Iic' + theorem measure_theory.Ioc_ae_eq_Icc' + theorem measure_theory.Ioi_ae_eq_Ici' + theorem measure_theory.Ioo_ae_eq_Icc' + theorem measure_theory.Ioo_ae_eq_Ico' + theorem measure_theory.Ioo_ae_eq_Ioc' 2021-12-26 02:00:29 34e79d6 chore(data/list/prod): remove an out of date comment (#11058) Due to changes in the library structure this comment is no longer relevant. ESTIMATED CHANGES Modified src/data/list/prod_monoid.lean 2021-12-26 01:20:52 266d12b chore(ring_theory/polynomial/bernstein): use `∑` notation (#11060) Also rewrite a proof using `calc` mode ESTIMATED CHANGES Modified src/ring_theory/polynomial/bernstein.lean +/- theorem bernstein_polynomial.sum 2021-12-25 21:05:18 abf9657 feat(algebraic_geometry): Results about open immersions of schemes. (#10977) ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean - def algebraic_geometry.Scheme.to_LocallyRingedSpace +/- structure algebraic_geometry.Scheme Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.iso_restrict + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.Scheme_eq_of_LocallyRingedSpace_eq + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.Scheme_to_Scheme + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_Scheme + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_Scheme_hom + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_Scheme_hom_val + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_Scheme_to_LocallyRingedSpace + theorem algebraic_geometry.Scheme.affine_basis_cover_obj + def algebraic_geometry.Scheme.affine_basis_cover_ring 2021-12-25 21:05:17 07b578e feat(data/int/basic): add lemma `gcd_greatest` (#10613) Proving a uniqueness property for `gcd`. This is (a version of) Theorem 1.3 in Apostol (1976) Introduction to Analytic Number Theory. ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean + theorem gcd_greatest + theorem gcd_greatest_associated Modified src/data/int/gcd.lean + theorem int.gcd_greatest 2021-12-25 19:14:06 8d426f0 split(algebra/big_operators/multiset): Split off `data.multiset.basic` (#11043) This moves * `multiset.prod`, `multiset.sum` to `algebra.big_operators.multiset` * `multiset.join`, `multiset.bind`, `multiset.product`, `multiset.sigma` to `data.multiset.bind`. This is needed as `join` is defined using `sum`. The file was quite messy, so I reorganized `algebra.big_operators.multiset` by increasing typeclass assumptions. I'm crediting Mario for 0663945f55335e51c2b9b3a0177a84262dd87eaf (`prod`, `sum`, `join`), f9de18397dc1a43817803c2fe5d84b282287ed0d (`bind`, `product`), 16d40d7491d1fe8a733d21e90e516e0dd3f41c5b (`sigma`). ESTIMATED CHANGES Added src/algebra/big_operators/multiset.lean + theorem monoid_hom.map_multiset_prod + theorem multiset.abs_sum_le_sum_abs + theorem multiset.all_one_of_le_one_le_of_prod_eq_one + theorem multiset.coe_inv_monoid_hom + theorem multiset.coe_prod + theorem multiset.coe_sum_add_monoid_hom + theorem multiset.dvd_prod + theorem multiset.dvd_sum + theorem multiset.le_prod_nonempty_of_submultiplicative + theorem multiset.le_prod_nonempty_of_submultiplicative_on_pred + theorem multiset.le_prod_of_submultiplicative + theorem multiset.le_prod_of_submultiplicative_on_pred + theorem multiset.le_sum_of_mem + theorem multiset.one_le_prod_of_one_le + theorem multiset.pow_card_le_prod + theorem multiset.pow_count + def multiset.prod + theorem multiset.prod_add + theorem multiset.prod_cons + theorem multiset.prod_dvd_prod + theorem multiset.prod_eq_foldl + theorem multiset.prod_eq_foldr + theorem multiset.prod_eq_zero + theorem multiset.prod_eq_zero_iff + theorem multiset.prod_hom + theorem multiset.prod_hom_rel + theorem multiset.prod_induction + theorem multiset.prod_induction_nonempty + theorem multiset.prod_le_of_forall_le + theorem multiset.prod_le_pow_card + theorem multiset.prod_le_prod_of_rel_le + theorem multiset.prod_le_sum_prod + theorem multiset.prod_map_inv + theorem multiset.prod_map_le_prod + theorem multiset.prod_map_mul + theorem multiset.prod_map_one + theorem multiset.prod_map_prod_map + theorem multiset.prod_ne_zero + theorem multiset.prod_nonneg + theorem multiset.prod_nsmul + theorem multiset.prod_repeat + theorem multiset.prod_singleton + theorem multiset.prod_to_list + theorem multiset.prod_zero + theorem multiset.single_le_prod + def multiset.sum_add_monoid_hom + theorem multiset.sum_eq_zero_iff + theorem multiset.sum_map_mul_left + theorem multiset.sum_map_mul_right + theorem multiset.sum_map_singleton Modified src/data/multiset/antidiagonal.lean Modified src/data/multiset/basic.lean - theorem monoid_hom.map_multiset_prod - theorem multiset.abs_sum_le_sum_abs - theorem multiset.add_bind - theorem multiset.add_product - theorem multiset.add_sigma - theorem multiset.all_one_of_le_one_le_of_prod_eq_one - def multiset.bind - theorem multiset.bind_add - theorem multiset.bind_assoc - theorem multiset.bind_bind - theorem multiset.bind_congr - theorem multiset.bind_cons - theorem multiset.bind_hcongr - theorem multiset.bind_map - theorem multiset.bind_map_comm - theorem multiset.bind_singleton - theorem multiset.bind_zero - theorem multiset.card_bind - theorem multiset.card_join - theorem multiset.card_nsmul_le_sum - theorem multiset.card_product - theorem multiset.card_sigma - theorem multiset.coe_bind - theorem multiset.coe_inv_monoid_hom - theorem multiset.coe_join - theorem multiset.coe_prod - theorem multiset.coe_product - theorem multiset.coe_sigma - theorem multiset.coe_sum_add_monoid_hom - theorem multiset.cons_bind - theorem multiset.cons_product - theorem multiset.cons_sigma - theorem multiset.count_bind - theorem multiset.count_sum - theorem multiset.dvd_prod - theorem multiset.dvd_sum - def multiset.join - theorem multiset.join_add - theorem multiset.join_cons - theorem multiset.join_zero - theorem multiset.le_prod_nonempty_of_submultiplicative - theorem multiset.le_prod_nonempty_of_submultiplicative_on_pred - theorem multiset.le_prod_of_submultiplicative - theorem multiset.le_prod_of_submultiplicative_on_pred - theorem multiset.le_sum_of_mem - theorem multiset.map_bind - theorem multiset.mem_bind - theorem multiset.mem_join - theorem multiset.mem_product - theorem multiset.mem_sigma - theorem multiset.one_le_prod_of_one_le - theorem multiset.pow_count - def multiset.prod - theorem multiset.prod_add - theorem multiset.prod_bind - theorem multiset.prod_cons - theorem multiset.prod_dvd_prod - theorem multiset.prod_eq_foldl - theorem multiset.prod_eq_foldr - theorem multiset.prod_eq_zero - theorem multiset.prod_eq_zero_iff - theorem multiset.prod_hom - theorem multiset.prod_hom_rel - theorem multiset.prod_induction - theorem multiset.prod_induction_nonempty - theorem multiset.prod_le_of_forall_le - theorem multiset.prod_map_inv - theorem multiset.prod_map_mul - theorem multiset.prod_map_one - theorem multiset.prod_map_prod_map - theorem multiset.prod_ne_zero - theorem multiset.prod_nonneg - theorem multiset.prod_nsmul - theorem multiset.prod_repeat - theorem multiset.prod_singleton - theorem multiset.prod_to_list - theorem multiset.prod_zero - def multiset.product - theorem multiset.product_add - theorem multiset.product_singleton - theorem multiset.rel_bind - theorem multiset.rel_join - theorem multiset.sigma_add - theorem multiset.sigma_singleton - theorem multiset.single_le_prod - theorem multiset.singleton_bind - theorem multiset.singleton_join - def multiset.sum_add_monoid_hom - theorem multiset.sum_eq_zero_iff - theorem multiset.sum_le_card_nsmul - theorem multiset.sum_le_sum_map - theorem multiset.sum_le_sum_of_rel_le - theorem multiset.sum_map_le_sum - theorem multiset.sum_map_mul_left - theorem multiset.sum_map_mul_right - theorem multiset.sum_map_singleton - theorem multiset.zero_bind - theorem multiset.zero_product - theorem multiset.zero_sigma Added src/data/multiset/bind.lean + theorem multiset.add_bind + theorem multiset.add_product + theorem multiset.add_sigma + def multiset.bind + theorem multiset.bind_add + theorem multiset.bind_assoc + theorem multiset.bind_bind + theorem multiset.bind_congr + theorem multiset.bind_cons + theorem multiset.bind_hcongr + theorem multiset.bind_map + theorem multiset.bind_map_comm + theorem multiset.bind_singleton + theorem multiset.bind_zero + theorem multiset.card_bind + theorem multiset.card_join + theorem multiset.card_product + theorem multiset.card_sigma + theorem multiset.coe_bind + theorem multiset.coe_join + theorem multiset.coe_product + theorem multiset.coe_sigma + theorem multiset.cons_bind + theorem multiset.cons_product + theorem multiset.cons_sigma + theorem multiset.count_bind + theorem multiset.count_sum + def multiset.join + theorem multiset.join_add + theorem multiset.join_cons + theorem multiset.join_zero + theorem multiset.map_bind + theorem multiset.mem_bind + theorem multiset.mem_join + theorem multiset.mem_product + theorem multiset.mem_sigma + theorem multiset.prod_bind + def multiset.product + theorem multiset.product_add + theorem multiset.product_singleton + theorem multiset.rel_bind + theorem multiset.rel_join + theorem multiset.sigma_add + theorem multiset.sigma_singleton + theorem multiset.singleton_bind + theorem multiset.singleton_join + theorem multiset.zero_bind + theorem multiset.zero_product + theorem multiset.zero_sigma Modified src/data/multiset/functor.lean Modified src/data/multiset/nodup.lean Modified src/data/multiset/sections.lean 2021-12-25 17:20:05 4923cfc chore(set_theory/ordinal): Removed redundant argument from `enum_typein` (#11049) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean +/- theorem ordinal.enum_typein 2021-12-25 17:20:04 ad99529 feat(data/set/basic): Added `range_eq_iff` (#11044) This serves as a convenient theorem for proving statements of the form `range f = S`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_eq_iff 2021-12-25 16:16:30 914250e chore(data/real/ennreal): adjust form of `to_real_pos_iff` (#11047) We have a principle (which may not have been crystallized at the time of writing of `data/real/ennreal`) that hypotheses of lemmas should contain the weak form `a ≠ ∞`, while conclusions should report the strong form `a < ∞`, and also the same for `a ≠ 0`, `0 < a`. In the case of the existing lemma ```lean lemma to_real_pos_iff : 0 < a.to_real ↔ (0 < a ∧ a ≠ ∞):= ``` it's not clear whether the RHS of the iff should count as a hypothesis or a conclusion. So I have rewritten to provide two forms, ```lean lemma to_real_pos_iff : 0 < a.to_real ↔ (0 < a ∧ a < ∞):= lemma to_real_pos {a : ℝ≥0∞} (ha₀ : a ≠ 0) (ha_top : a ≠ ∞) : 0 < a.to_real := ``` Having both versions available shortens many proofs slightly. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_inv_le + theorem ennreal.to_nnreal_pos +/- theorem ennreal.to_nnreal_pos_iff + theorem ennreal.to_real_pos +/- theorem ennreal.to_real_pos_iff Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/simple_func_dense.lean +/- theorem measure_theory.simple_func.measure_lt_top_of_mem_ℒp_indicator +/- theorem measure_theory.simple_func.measure_preimage_lt_top_of_mem_ℒp +/- theorem measure_theory.simple_func.mem_ℒp_iff +/- theorem measure_theory.simple_func.mem_ℒp_iff_fin_meas_supp +/- theorem measure_theory.simple_func.mem_ℒp_iff_integrable Modified src/measure_theory/integral/set_to_l1.lean 2021-12-25 10:29:50 c9f47c9 chore(data/matrix/block): Eliminate `finish` (#10948) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/data/matrix/block.lean 2021-12-25 10:29:49 0aca706 feat(measure_theory/integral): define `circle_integral` (#10906) ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem function.periodic.image_Ioc Added src/measure_theory/integral/circle_integral.lean + theorem abs_circle_map_zero + def cauchy_power_series + theorem cauchy_power_series_apply + theorem circle_integrable.add + theorem circle_integrable.neg + theorem circle_integrable.out + def circle_integrable + theorem circle_integrable_const + theorem circle_integrable_iff + theorem circle_integrable_sub_inv_iff + theorem circle_integrable_sub_zpow_iff + theorem circle_integrable_zero_radius + theorem circle_integral.integral_congr + theorem circle_integral.integral_const_mul + theorem circle_integral.integral_eq_zero_of_has_deriv_within_at' + theorem circle_integral.integral_eq_zero_of_has_deriv_within_at + theorem circle_integral.integral_radius_zero + theorem circle_integral.integral_smul + theorem circle_integral.integral_smul_const + theorem circle_integral.integral_sub + theorem circle_integral.integral_sub_center_inv + theorem circle_integral.integral_sub_inv_of_mem_ball + theorem circle_integral.integral_sub_zpow_of_ne + theorem circle_integral.integral_sub_zpow_of_undef + theorem circle_integral.integral_undef + theorem circle_integral.norm_integral_le_of_norm_le_const' + theorem circle_integral.norm_integral_le_of_norm_le_const + def circle_integral + def circle_map + theorem circle_map_eq_center_iff + theorem circle_map_mem_closed_ball + theorem circle_map_mem_sphere' + theorem circle_map_mem_sphere + theorem circle_map_ne_center + theorem circle_map_sub_center + theorem circle_map_zero_radius + theorem continuous_circle_map + theorem continuous_on.circle_integrable' + theorem continuous_on.circle_integrable + theorem deriv_circle_map + theorem deriv_circle_map_eq_zero_iff + theorem deriv_circle_map_ne_zero + theorem differentiable_circle_map + theorem has_deriv_at_circle_map + theorem has_fpower_series_on_cauchy_integral + theorem has_sum_cauchy_power_series_integral + theorem has_sum_two_pi_I_cauchy_power_series_integral + theorem image_circle_map_Ioc + theorem le_radius_cauchy_power_series + theorem lipschitz_with_circle_map + theorem measurable_circle_map + theorem norm_cauchy_power_series_le + theorem periodic_circle_map + theorem range_circle_map + theorem sum_cauchy_power_series_eq_integral Modified src/topology/metric_space/basic.lean + theorem metric.closed_ball_mem_nhds_of_mem 2021-12-25 05:51:25 ef8005c chore(category_theory/limits) : Remove instance requirement (#11041) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/multiequalizer.lean 2021-12-25 05:51:24 864a12e chore(measure_theory/function/lp_space): use notation for `nnnorm` (#11039) ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean +/- theorem measure_theory.snorm_one_eq_lintegral_nnnorm 2021-12-25 05:51:23 0f076d2 chore(algebra/*): Eliminate `finish` (#11034) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/continued_fractions/computation/approximations.lean 2021-12-25 05:51:22 f9561d4 feat(ring_theory/localization): The localization at a fg submonoid is of finite type. (#10990) ESTIMATED CHANGES Modified src/ring_theory/localization.lean + def is_localization.equiv_inv_submonoid + theorem is_localization.finite_type_of_monoid_fg + def is_localization.inv_submonoid + theorem is_localization.mem_inv_submonoid_iff_exists_mk' + theorem is_localization.mul_to_inv_submonoid + theorem is_localization.smul_to_inv_submonoid + theorem is_localization.span_inv_submonoid + theorem is_localization.submonoid_map_le_is_unit + theorem is_localization.surj' + def is_localization.to_inv_submonoid + theorem is_localization.to_inv_submonoid_eq_mk' + theorem is_localization.to_inv_submonoid_mul + theorem is_localization.to_inv_submonoid_surjective 2021-12-25 05:51:21 5719a02 feat(data/nat/totient): add totient_mul_prime_div (#10971) We add `(p * n).totient = p * n.totient` if `p ∣ n`. ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.totient_mul_of_prime_of_dvd Modified src/ring_theory/multiplicity.lean + theorem multiplicity.exists_eq_pow_mul_and_not_dvd + theorem multiplicity.pos_of_dvd 2021-12-25 05:51:20 d28b3bd feat(combinatorics/configuration): Points and lines inequality (#10772) If a nondegenerate configuration has a unique line through any two points, then there are at least as many lines as points. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.has_lines.card_le + theorem configuration.has_points.card_le 2021-12-25 05:09:25 0dd60ae feat(algebraic_geometry): Schemes are sober. (#11040) Also renamed things in `topology/sober.lean`. ESTIMATED CHANGES Modified src/algebraic_geometry/properties.lean Modified src/topology/sober.lean + theorem closed_embedding.quasi_sober - theorem closed_embedding.sober + theorem open_embedding.quasi_sober - theorem open_embedding.sober + theorem quasi_sober_of_open_cover - theorem sober_of_open_cover 2021-12-25 02:17:30 f80c18b feat(measure_theory/measure/haar_lebesgue): Lebesgue measure of the image of a set under a linear map (#11038) The image of a set `s` under a linear map `f` has measure equal to `μ s` times the absolute value of the determinant of `f`. ESTIMATED CHANGES Modified src/measure_theory/measure/haar_lebesgue.lean + theorem measure_theory.measure.add_haar_eq_zero_of_disjoint_translates + theorem measure_theory.measure.add_haar_eq_zero_of_disjoint_translates_aux + theorem measure_theory.measure.add_haar_image_continuous_linear_equiv + theorem measure_theory.measure.add_haar_image_continuous_linear_map + theorem measure_theory.measure.add_haar_image_linear_map + theorem measure_theory.measure.add_haar_preimage_continuous_linear_equiv + theorem measure_theory.measure.add_haar_preimage_continuous_linear_map + theorem measure_theory.measure.add_haar_preimage_linear_equiv + theorem measure_theory.measure.add_haar_preimage_linear_map +/- theorem measure_theory.measure.add_haar_preimage_smul +/- theorem measure_theory.measure.add_haar_smul + theorem measure_theory.measure.add_haar_submodule - theorem measure_theory.measure.haar_preimage_linear_map 2021-12-24 23:10:00 aa66909 chore(algebraic_geometry): Remove unwanted spaces. (#11042) ESTIMATED CHANGES Modified src/algebraic_geometry/sheafed_space.lean 2021-12-24 23:09:59 d6ecc14 feat(data/mv_polynomial): API for mv polynomial.rename (#10921) Relation between `rename` and `support`, `degrees` and `degree_of` when `f : σ → τ` is injective. - I'm not sure if we already have something like `sup_map_multiset`. - I've stated `sup_map_multiset`using `embedding` but I've used `injective` elsewhere because `mv_polynomial.rename` is written using `injective`. - I'm not sure if we should have `map_domain_embedding_of_injective`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem multiset.map_finset_sup Modified src/data/finsupp/basic.lean + def finsupp.map_domain_embedding + theorem finsupp.map_domain_support_of_injective Modified src/data/mv_polynomial/rename.lean + theorem mv_polynomial.support_rename_of_injective Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.degree_of_rename_of_injective + theorem mv_polynomial.degrees_rename_of_injective 2021-12-24 23:09:58 f7038c2 feat(analysis/inner_product_space/adjoint): show that continuous linear maps on a Hilbert space form a C*-algebra (#10837) This PR puts a `cstar_ring` instance on `E →L[𝕜] E`, thereby showing that it forms a C*-algebra. - [x] depends on: #10825 [which defines the adjoint] ESTIMATED CHANGES Modified src/analysis/inner_product_space/adjoint.lean + theorem continuous_linear_map.apply_norm_eq_sqrt_inner_adjoint_left + theorem continuous_linear_map.apply_norm_eq_sqrt_inner_adjoint_right + theorem continuous_linear_map.apply_norm_sq_eq_inner_adjoint_left + theorem continuous_linear_map.apply_norm_sq_eq_inner_adjoint_right + theorem continuous_linear_map.star_eq_adjoint Modified src/analysis/inner_product_space/basic.lean + theorem re_inner_le_norm 2021-12-24 21:14:13 8a997f3 feat(combinatorics/configuration): Inequality between `point_count` and `line_count` (#11036) An inequality between `point_count` and `line_count`. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.has_lines.point_count_le_line_count + theorem configuration.has_points.line_count_le_point_count 2021-12-24 21:14:12 8181fe8 feat(measure_theory/covering/besicovitch): covering a set by balls with controlled measure (#11035) We show that, in a real vector space, any set `s` can be covered by balls whose measures add up to at most `μ s + ε`, as a consequence of the Besicovitch covering theorem. ESTIMATED CHANGES Modified src/measure_theory/covering/besicovitch.lean + theorem besicovitch.exists_closed_ball_covering_tsum_measure_le Modified src/topology/algebra/infinite_sum.lean + theorem tsum_congr_subtype Modified src/topology/instances/ennreal.lean + theorem ennreal.tsum_Union_le + theorem ennreal.tsum_bUnion_le + theorem ennreal.tsum_mono_subtype + theorem ennreal.tsum_union_le 2021-12-24 21:14:11 a998db6 refactor(data/nat/prime): redefine nat.prime as irreducible (#11031) ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean Modified archive/imo/imo1969_q1.lean +/- def good_nats +/- theorem imo1969_q1 +/- theorem polynomial_not_prime Modified src/algebra/associated.lean + theorem irreducible.ne_one Modified src/algebra/char_p/basic.lean Modified src/data/int/nat_prime.lean Modified src/data/nat/prime.lean +/- def nat.min_fac_aux +/- theorem nat.not_prime_one +/- theorem nat.not_prime_zero + theorem nat.prime.eq_one_or_self_of_dvd +/- theorem nat.prime.ne_zero +/- theorem nat.prime.pos +/- theorem nat.prime.two_le +/- def nat.prime + theorem nat.prime_def_lt'' + theorem nat.two_le_iff Modified src/data/zmod/basic.lean Modified src/dynamics/periodic_pts.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/number_theory/divisors.lean Modified src/number_theory/primorial.lean +/- theorem dvd_choose_of_middling_prime +/- def primorial +/- theorem prod_primes_dvd Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/int/basic.lean +/- theorem irreducible_iff_nat_prime Modified test/fin_cases.lean 2021-12-24 21:14:10 3588c3a feat(data/multiset/basic): empty_or_exists_mem (#11023) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.empty_or_exists_mem 2021-12-24 21:14:09 404a912 chore(ring_theory/adjoin/power_basis): add `simps` (#11018) ESTIMATED CHANGES Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/power_basis.lean 2021-12-24 21:14:08 d5a3e8c feat(ring_theory/derivation): add 3 lemmas (#10996) Add `map_smul_of_tower`, `map_coe_nat`, and `map_coe_int`. ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + theorem derivation.map_coe_int + theorem derivation.map_coe_nat + theorem derivation.map_smul_of_tower 2021-12-24 21:14:07 c4268a8 feat(topology,analysis): there exists `y ∈ frontier s` at distance `inf_dist x sᶜ` from `x` (#10976) ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + theorem exists_mem_frontier_inf_dist_compl_eq_dist Modified src/topology/metric_space/hausdorff_distance.lean + theorem is_closed.exists_inf_dist_eq_dist + theorem is_compact.exists_inf_dist_eq_dist +/- theorem is_compact.exists_inf_edist_eq_edist + theorem metric.closed_ball_inf_dist_compl_subset_closure' + theorem metric.closed_ball_inf_dist_compl_subset_closure + theorem metric.disjoint_ball_inf_dist + theorem metric.exists_mem_closure_inf_dist_eq_dist + theorem metric.inf_dist_inter_closed_ball_of_mem + theorem metric.not_mem_of_dist_lt_inf_dist 2021-12-24 19:23:20 5dac1c0 chore(topology/*): Eliminate `finish` (#10991) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.fin_two_eq_of_eq_zero_iff Modified src/topology/algebra/valued_field.lean Modified src/topology/category/Compactum.lean Modified src/topology/connected.lean Modified src/topology/continuous_on.lean Modified src/topology/locally_constant/basic.lean Modified src/topology/uniform_space/basic.lean 2021-12-24 16:32:31 35b67fd feat(algebra/order/field, data/real/basic): lemmas about `Sup` and `is_lub` (#11013) Add a lemma stating that for `f : α → ℝ` with `α` empty, `(⨆ i, f i) = 0`; a lemma stating that in an ordered field `is_lub` scales under multiplication by a nonnegative constant, and some variants. ESTIMATED CHANGES Modified src/algebra/order/field.lean + theorem is_glb.mul_left + theorem is_glb.mul_right + theorem is_lub.mul_left + theorem is_lub.mul_right Modified src/data/real/basic.lean + theorem real.cinfi_const_zero + theorem real.cinfi_empty + theorem real.csupr_const_zero + theorem real.csupr_empty 2021-12-24 16:32:30 3377bcc feat(analysis/inner_product_space/adjoint): define the adjoint of a continuous linear map between Hilbert spaces (#10825) This PR defines the adjoint of an operator `A : E →L[𝕜] F` as the unique operator `adjoint A : F →L[𝕜] E` such that `⟪x, A y⟫ = ⟪adjoint A x, y⟫` for all `x` and `y`. We then use this to put a star algebra structure on `E →L[𝕜] E` with the adjoint as the star operation (while leaving the C* property for a subsequent PR). ESTIMATED CHANGES Added src/analysis/inner_product_space/adjoint.lean + def continuous_linear_map.adjoint + theorem continuous_linear_map.adjoint_adjoint + def continuous_linear_map.adjoint_aux + theorem continuous_linear_map.adjoint_aux_adjoint_aux + theorem continuous_linear_map.adjoint_aux_apply + theorem continuous_linear_map.adjoint_aux_inner_left + theorem continuous_linear_map.adjoint_aux_inner_right + theorem continuous_linear_map.adjoint_aux_norm + theorem continuous_linear_map.adjoint_comp + theorem continuous_linear_map.adjoint_inner_left + theorem continuous_linear_map.adjoint_inner_right + theorem continuous_linear_map.eq_adjoint_iff + theorem continuous_linear_map.is_adjoint_pair Modified src/analysis/inner_product_space/basic.lean + def continuous_linear_map.to_sesq_form + theorem continuous_linear_map.to_sesq_form_apply_coe + theorem continuous_linear_map.to_sesq_form_apply_norm_le + def innerSL_flip + theorem innerSL_flip_apply Modified src/analysis/inner_product_space/dual.lean + theorem inner_product_space.ext_inner_left + theorem inner_product_space.ext_inner_right Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_ext + theorem linear_isometry.norm_to_continuous_linear_map_comp Modified src/topology/algebra/module.lean + theorem continuous_linear_map.comp_smulₛₗ 2021-12-24 15:31:49 99c634c feat(analysis/normed_space/spectrum): adds easy direction of Gelfand's formula for the spectral radius (#10847) This adds the easy direction (i.e., an inequality) of Gelfand's formula for the spectral radius. Namely, we prove that `spectral_radius 𝕜 a ≤ ∥a ^ (n + 1)∥₊ ^ (1 / (n + 1) : ℝ)` for all `n : ℕ` using the spectral mapping theorem for polynomials. - [x] depends on: #10783 ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem norm_to_nnreal Modified src/analysis/normed_space/spectrum.lean + theorem spectrum.spectral_radius_le_pow_nnnorm_pow_one_div 2021-12-24 13:57:18 ffbab0d chore(group_theory/quotient_group): change injective_ker_lift to ker_lift_injective for naming regularisation (#11027) Minor change for naming regularisation. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean 2021-12-24 13:57:17 a0993e4 feat(combinatorics/configuration): Sum of line counts equals sum of point counts (#11026) Counting the set `{(p,l) : P × L | p ∈ l}` in two different ways. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.sum_line_count_eq_sum_point_count 2021-12-24 13:57:16 04aeb01 feat(data/polynomial/ring_division): roots.le_of_dvd (#11025) ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.roots.le_of_dvd 2021-12-24 13:57:15 c0e613a feat(combinatorics/configuration): `nondegenerate.exists_injective_of_card_le` (#11019) If a nondegenerate configuration has at least as many points as lines, then there exists an injective function `f` from lines to points, such that `f l` does not lie on `l`. This is the key lemma for #10772. The proof is an application of Hall's marriage theorem. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean + theorem configuration.nondegenerate.exists_injective_of_card_le 2021-12-24 13:57:14 2c4e6df feat(data/real/ennreal): trichotomy lemmas (#11014) If there is a case split one performs frequently, it can be useful to provide the case split and the standard data-wrangling one performs after the case split together. I do this here for the `ennreal` case-split lemma ```lean protected lemma trichotomy (p : ℝ≥0∞) : p = 0 ∨ p = ∞ ∨ 0 < p.to_real := ``` and a couple of variants. ESTIMATED CHANGES Modified src/data/real/ennreal.lean 2021-12-24 13:57:12 7c7195f feat(field_theory/adjoin): lemmas about `inf`s of `intermediate_field`s (#10997) This adjusts the data in the `galois_insertion` slightly such that this new lemma is true by `rfl`, to match how we handle this in `subalgebra`. As a result, `top_to_subalgebra` is now refl, but `adjoin_univ` is no longer refl. This also adds a handful of trivial simp lemmas. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.Inf_to_subalgebra + theorem intermediate_field.Inf_to_subfield + theorem intermediate_field.adjoin_univ + theorem intermediate_field.coe_Inf + theorem intermediate_field.coe_bot + theorem intermediate_field.coe_inf + theorem intermediate_field.coe_infi + theorem intermediate_field.coe_top + theorem intermediate_field.inf_to_subalgebra + theorem intermediate_field.inf_to_subfield + theorem intermediate_field.infi_to_subalgebra + theorem intermediate_field.infi_to_subfield + theorem intermediate_field.mem_inf +/- theorem intermediate_field.mem_top + theorem intermediate_field.top_to_subfield Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_copy + theorem intermediate_field.copy_eq Modified src/field_theory/normal.lean 2021-12-24 13:57:11 d329d6b feat(combinatorics/simple_graph/connectivity): walks, paths, cycles (#10981) This is the first chunk of #8737, which gives a type for walks in a simple graph as well as some basic operations. It is designed to one day generalize to other types of graphs once there is a more generic framework by swapping out the `G.adj u v` argument from `walk`. ESTIMATED CHANGES Modified docs/references.bib Added src/combinatorics/simple_graph/connectivity.lean + def simple_graph.walk.append + theorem simple_graph.walk.append_assoc + theorem simple_graph.walk.append_nil + theorem simple_graph.walk.chain_adj_support + theorem simple_graph.walk.chain_adj_support_aux + theorem simple_graph.walk.cons_append + theorem simple_graph.walk.cons_is_path_iff + theorem simple_graph.walk.cons_is_trail_iff + theorem simple_graph.walk.cons_nil_append + theorem simple_graph.walk.cons_reverse_aux + theorem simple_graph.walk.count_edges_eq_one_of_trail + theorem simple_graph.walk.count_edges_le_one_of_trail + def simple_graph.walk.edges + theorem simple_graph.walk.edges_cons + theorem simple_graph.walk.edges_nil + theorem simple_graph.walk.edges_subset_edge_set + theorem simple_graph.walk.end_mem_support + def simple_graph.walk.get_vert + structure simple_graph.walk.is_circuit + structure simple_graph.walk.is_cycle + theorem simple_graph.walk.is_cycle_def + structure simple_graph.walk.is_path + theorem simple_graph.walk.is_path_def + theorem simple_graph.walk.is_path_of_cons_is_path + def simple_graph.walk.is_trail + theorem simple_graph.walk.is_trail_of_cons_is_trail + def simple_graph.walk.length + theorem simple_graph.walk.length_append + theorem simple_graph.walk.length_cons + theorem simple_graph.walk.length_edges + theorem simple_graph.walk.length_nil + theorem simple_graph.walk.length_reverse + theorem simple_graph.walk.length_support + theorem simple_graph.walk.mem_support_of_mem_edges + theorem simple_graph.walk.nil_append + theorem simple_graph.walk.nil_is_path + theorem simple_graph.walk.nil_is_trail + def simple_graph.walk.reverse + theorem simple_graph.walk.reverse_append + theorem simple_graph.walk.reverse_cons + theorem simple_graph.walk.reverse_nil + theorem simple_graph.walk.reverse_reverse + theorem simple_graph.walk.reverse_singleton + theorem simple_graph.walk.start_mem_support + def simple_graph.walk.support + theorem simple_graph.walk.support_cons + theorem simple_graph.walk.support_eq + theorem simple_graph.walk.support_ne_nil + theorem simple_graph.walk.support_nil + inductive simple_graph.walk 2021-12-24 13:57:10 028c161 feat(topology/is_locally_homeomorph): New file (#10960) This PR defines local homeomorphisms. ESTIMATED CHANGES Added src/topology/is_locally_homeomorph.lean + theorem is_locally_homeomorph.is_open_map + theorem is_locally_homeomorph.map_nhds_eq + theorem is_locally_homeomorph.mk + def is_locally_homeomorph 2021-12-24 13:57:09 a0f12bc feat(field_theory/adjoin): Supremum of finite dimensional intermediate fields (#10938) The supremum of finite dimensional intermediate fields is finite dimensional. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.finite_dimensional_sup 2021-12-24 13:57:08 084b1ac feat(group_theory/specific_groups/cyclic): |G|=expG ↔ G is cyclic (#10692) ESTIMATED CHANGES Modified src/group_theory/specific_groups/cyclic.lean + theorem infinite.order_of_eq_zero_of_forall_mem_zpowers + theorem is_cyclic.exponent_eq_card + theorem is_cyclic.exponent_eq_zero_of_infinite + theorem is_cyclic.iff_exponent_eq_card + theorem is_cyclic.of_exponent_eq_card 2021-12-24 12:49:44 6c6c7da feat(topology/connected): add `inducing.is_preconnected_image` (#11011) Generalize the proof of `subtype.preconnected_space` to any `inducing` map. Also golf the proof of `is_preconnected.subset_right_of_subset_union`. ESTIMATED CHANGES Modified src/topology/connected.lean +/- theorem continuous.image_connected_component_subset + theorem continuous.maps_to_connected_component + theorem inducing.is_preconnected_image +/- theorem preimage_connected_component_connected 2021-12-24 03:30:38 67cf406 chore(scripts): update nolints.txt (#11028) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-12-24 03:30:37 f846a42 feat(algebra/pointwise): expand API for multiplication / addition of finsets by copying the corresponding API for sets (#10600) From flt-regular, I wanted to be able to add finsets so we add a lot of API to show that the existing definition has good algebraic properties by copying the existing set API. Where possible I tried to give proofs that use the existing set lemmas and cast the finsets to sets to make it clear that these are essentially the same lemmas. It would be nice to have a better system for duplicating this API of course, some general versions for set_like or Galois insertions perhaps to unify the theories, but I don't know what that would look like. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem finset.image_mul_left' + theorem finset.image_mul_left + theorem finset.image_mul_prod + theorem finset.image_mul_right' + theorem finset.image_mul_right + theorem finset.image_one + theorem finset.one_mem_one + theorem finset.one_nonempty + theorem finset.preimage_mul_left_one' + theorem finset.preimage_mul_left_one + theorem finset.preimage_mul_left_singleton + theorem finset.preimage_mul_right_one' + theorem finset.preimage_mul_right_one + theorem finset.preimage_mul_right_singleton + theorem finset.singleton_one + theorem finset.singleton_zero_mul 2021-12-24 02:34:32 7b641cb chore(number_theory/primorial): golf some proofs (#11024) ESTIMATED CHANGES Modified src/number_theory/primorial.lean 2021-12-24 00:43:12 1dd6080 feat(ring_theory/derivation): drop unused `is_scalar_tower` (#10995) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean +/- theorem derivation.leibniz_inv 2021-12-24 00:43:11 f03447f feat(analysis/normed_space): a normed space over a nondiscrete normed field is noncompact (#10994) Register this as an instance for a nondiscrete normed field and for a real normed vector space. Also add `is_compact.ne_univ`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem normed_space.exists_lt_norm Modified src/topology/subset_properties.lean + theorem is_compact.ne_univ 2021-12-24 00:43:10 0ac9f83 feat(analysis/mean_inequalities): Minkowski inequality for infinite sums (#10984) A few versions of the Minkowski inequality for `tsum` and `has_sum`. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem nnreal.Lp_add_le_has_sum + theorem nnreal.Lp_add_le_tsum + theorem real.Lp_add_le_has_sum_of_nonneg + theorem real.Lp_add_le_tsum_of_nonneg Modified src/analysis/special_functions/pow.lean + theorem nnreal.eq_rpow_one_div_iff + theorem nnreal.rpow_eq_rpow_iff + theorem nnreal.rpow_inv_rpow_self + theorem nnreal.rpow_left_bijective + theorem nnreal.rpow_left_injective + theorem nnreal.rpow_left_surjective + theorem nnreal.rpow_one_div_eq_iff + theorem nnreal.rpow_one_div_le_iff + theorem nnreal.rpow_self_rpow_inv 2021-12-24 00:43:09 1a780f6 chore(topology/metric_space): export `is_compact_closed_ball` (#10973) ESTIMATED CHANGES Modified src/analysis/inner_product_space/euclidean_dist.lean Modified src/geometry/manifold/bump_function.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/topology/metric_space/basic.lean 2021-12-24 00:43:08 36ba1ac feat(algebraic_geometry): Define `open_cover`s of Schemes. (#10931) ESTIMATED CHANGES Added src/algebra/category/CommRing/instances.lean Modified src/algebraic_geometry/Scheme.lean + def algebraic_geometry.Scheme.forget_to_LocallyRingedSpace + def algebraic_geometry.Scheme.forget_to_Top Modified src/algebraic_geometry/locally_ringed_space.lean +/- def algebraic_geometry.LocallyRingedSpace.forget_to_SheafedSpace + def algebraic_geometry.LocallyRingedSpace.forget_to_Top Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.Scheme.affine_basis_cover + theorem algebraic_geometry.Scheme.affine_basis_cover_is_basis + theorem algebraic_geometry.Scheme.affine_basis_cover_map_range + def algebraic_geometry.Scheme.affine_basis_cover_of_affine + def algebraic_geometry.Scheme.affine_cover + def algebraic_geometry.Scheme.open_cover.bind + structure algebraic_geometry.Scheme.open_cover + theorem algebraic_geometry.is_open_immersion.open_range 2021-12-24 00:43:07 c374a3b feat(data/nat/nth): add nth function (#10707) Split off from #9457, introduces `nth` and proves theorems about it. ESTIMATED CHANGES Modified src/data/nat/count.lean + theorem nat.count_injective + theorem nat.count_le_card + theorem nat.count_lt_card + theorem nat.count_lt_count_succ_iff +/- theorem nat.count_monotone + theorem nat.count_strict_mono Added src/data/nat/nth.lean + theorem nat.count_le_iff_le_nth + theorem nat.count_nth_gc + theorem nat.count_nth_of_infinite + theorem nat.count_nth_of_lt_card_finite + theorem nat.count_nth_zero + theorem nat.filter_range_nth_eq_insert_of_finite + theorem nat.filter_range_nth_eq_insert_of_infinite + theorem nat.le_nth_of_count_le + theorem nat.le_nth_of_lt_nth_succ_finite + theorem nat.le_nth_of_lt_nth_succ_infinite + theorem nat.lt_nth_iff_count_lt + theorem nat.nth_count + theorem nat.nth_count_eq_Inf + theorem nat.nth_count_le + theorem nat.nth_eq_order_iso_of_nat + theorem nat.nth_lt_of_lt_count + theorem nat.nth_mem_of_infinite + theorem nat.nth_mem_of_infinite_aux + theorem nat.nth_mem_of_lt_card_finite + theorem nat.nth_mem_of_lt_card_finite_aux + theorem nat.nth_mono_of_finite + theorem nat.nth_monotone + theorem nat.nth_set_card + theorem nat.nth_set_card_aux + theorem nat.nth_set_nonempty_of_lt_card + theorem nat.nth_strict_mono + theorem nat.nth_strict_mono_of_finite + theorem nat.nth_zero + theorem nat.nth_zero_of_exists + theorem nat.nth_zero_of_nth_zero + theorem nat.nth_zero_of_zero Modified src/order/order_iso_nat.lean 2021-12-23 22:35:58 421b9bb feat(algebraic_topology): alternating face map complex of a simplicial object (#10927) added the alternating face map complex of a simplicial object in a preadditive category and the natural inclusion of the normalized_Moore_complex ESTIMATED CHANGES Added src/algebraic_topology/alternating_face_map_complex.lean + theorem algebraic_topology.alternating_face_map_complex.d_squared + def algebraic_topology.alternating_face_map_complex.map + def algebraic_topology.alternating_face_map_complex.obj + def algebraic_topology.alternating_face_map_complex.obj_d + def algebraic_topology.alternating_face_map_complex + def algebraic_topology.inclusion_of_Moore_complex + def algebraic_topology.inclusion_of_Moore_complex_map + theorem algebraic_topology.inclusion_of_Moore_complex_map_f 2021-12-23 22:35:57 dc57de2 feat(logic/basic): When a dependent If-Then-Else is not one of its arguments (#10924) This is the dependent version of #10800. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem dite_eq_iff + theorem dite_eq_left_iff + theorem dite_eq_or_eq + theorem dite_eq_right_iff + theorem dite_ne_left_iff + theorem dite_ne_right_iff + theorem exists_iff_of_forall +/- theorem ite_eq_iff +/- theorem ite_eq_left_iff +/- theorem ite_eq_right_iff +/- theorem ite_ne_left_iff +/- theorem ite_ne_right_iff + theorem not_ne_iff 2021-12-23 22:35:56 1db0052 feat(group_theory/submonoid/membership): upgrade definition of pow from a set morphism to a monoid morphism (#10898) This comes at no extra cost. All the prerequisite definitions and lemmas were already in mathlib. ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean +/- def submonoid.pow + def submonoid.pow_log_equiv 2021-12-23 22:35:55 68aada0 feat(algebra/algebra/spectrum): prove the spectral mapping theorem for polynomials (#10783) Prove the spectral mapping theorem for polynomials. That is, if `p` is a polynomial and `a : A` where `A` is an algebra over a field `𝕜`, then `p (σ a) ⊆ σ (p a)`. Moreover, if `𝕜` is algebraically closed, then this inclusion is an equality. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean + theorem spectrum.exists_mem_of_not_is_unit_aeval_prod + theorem spectrum.map_polynomial_aeval_of_degree_pos + theorem spectrum.map_polynomial_aeval_of_nonempty + theorem spectrum.subset_polynomial_aeval Modified src/algebra/ring/basic.lean + theorem is_unit.sub_iff 2021-12-23 22:35:54 720fa8f feat(data/rat/basic): API around rat.mk (#10782) ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.denom_mk + theorem rat.ext + theorem rat.ext_iff + theorem rat.mk_neg_denom + theorem rat.num_mk Modified src/number_theory/bernoulli.lean Modified src/number_theory/number_field.lean 2021-12-23 19:11:42 4ce0d04 feat(data/real/sqrt): add a few lemmas (#11003) ESTIMATED CHANGES Modified src/data/real/sqrt.lean + theorem real.sqrt_eq_cases + theorem real.sqrt_eq_iff_mul_self_eq_of_pos + theorem real.sqrt_eq_one 2021-12-23 19:11:41 694b3f8 chore(measure_theory): golf a proof (#11002) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean 2021-12-23 19:11:40 3362b1e refactor(analysis/seminorm): Weaken typeclasses (#10999) This weakens `normed_field` to the appropriate `normed_whatever`. ESTIMATED CHANGES Modified src/analysis/seminorm.lean +/- theorem balanced.add +/- theorem balanced.inter +/- theorem balanced.smul_eq +/- theorem balanced.subset_smul +/- theorem balanced.union +/- theorem balanced.univ +/- theorem balanced_zero_union_interior +/- theorem seminorm.absorbent_ball_zero +/- theorem seminorm.balanced_ball_zero +/- def seminorm.ball +/- theorem seminorm.ball_zero_eq +/- theorem seminorm.mem_ball +/- theorem seminorm.mem_ball_zero +/- theorem seminorm.sub_rev +/- theorem seminorm.symmetric_ball_zero +/- structure seminorm 2021-12-23 19:11:39 cce09a6 feat(ring_theory/finiteness): prove that a surjective endomorphism of a finite module over a comm ring is injective (#10944) Using an approach of Vasconcelos, treating the module as a module over the polynomial ring, with action induced by the endomorphism. This result was rescued from #1822. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem module.finite.injective_of_surjective_endomorphism + theorem module_polynomial_of_endo.is_scalar_tower + def module_polynomial_of_endo 2021-12-23 19:11:38 327bacc feat(field_theory/adjoin): `intermediate_field.to_subalgebra` distributes over supremum (#10937) This PR proves `(E1 ⊔ E2).to_subalgebra = E1.to_subalgebra ⊔ E2.to_subalgebra`, under the assumption that `E1` and `E2` are finite-dimensional over `F`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.le_sup_to_subalgebra + theorem intermediate_field.sup_to_subalgebra 2021-12-23 19:11:37 e6f4852 feat(group_theory/exponent): exponent G = ⨆ g : G, order_of g (#10767) Precursor to #10692. ESTIMATED CHANGES Modified src/data/nat/lattice.lean + theorem set.infinite.nat.Sup_eq_zero Modified src/group_theory/exponent.lean +/- theorem monoid.exponent_dvd_of_forall_pow_eq_one + theorem monoid.exponent_eq_max'_order_of + theorem monoid.exponent_eq_supr_order_of' + theorem monoid.exponent_eq_supr_order_of + theorem monoid.exponent_eq_zero_iff + theorem monoid.exponent_eq_zero_iff_range_order_of_infinite + theorem monoid.exponent_eq_zero_of_order_zero + theorem monoid.exponent_ne_zero_iff_range_order_of_finite + theorem monoid.exponent_ne_zero_of_fintype +/- theorem monoid.lcm_order_eq_exponent +/- theorem monoid.lcm_order_of_dvd_exponent + theorem nat.prime.exists_order_of_eq_pow_padic_val_nat_exponent 2021-12-23 19:11:36 1107693 feat(combinatorics/simple_graph/basic): add lemmas about the neighbor set of a vertex in the complement graph (#7138) Add lemmas about the neighbor set of a vertex in the complement graph, including a lemma proving that the complement of a regular graph is regular. Part of #5698 in order to prove facts about strongly regular graphs. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.card_neighbor_set_union_compl_neighbor_set + theorem simple_graph.degree_compl + theorem simple_graph.is_regular_compl_of_is_regular + theorem simple_graph.neighbor_set_compl 2021-12-23 18:32:08 63a0936 ci(.github/workflows/*): cleanup after upload step (#11008) cf. https://github.com/actions/upload-artifact/issues/256 ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2021-12-23 16:33:07 cf34598 chore(tactic/norm_cast): minor cleanup (#10993) ESTIMATED CHANGES Modified src/tactic/norm_cast.lean 2021-12-23 16:33:06 1a57c79 feat(analysis/calculus): assorted simple lemmas (#10975) Various lemmas from the formalization of the Cauchy integral formula (#10000 and some later developments on top of it). Also add `@[measurability]` attrs to theorems like `measurable_fderiv`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.scomp_has_deriv_at Modified src/analysis/calculus/fderiv.lean + theorem differentiable_on.differentiable_at + theorem differentiable_on.eventually_differentiable_at Modified src/analysis/calculus/fderiv_measurable.lean +/- theorem measurable_deriv +/- theorem measurable_fderiv +/- theorem measurable_fderiv_apply_const Modified src/analysis/calculus/mean_value.lean + theorem is_const_of_deriv_eq_zero + theorem lipschitz_with_of_nnnorm_deriv_le 2021-12-23 16:33:04 35ede3d chore(algebra/algebra/*): add some `simp` lemmas (#10969) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.coe_of_bijective + theorem alg_equiv.of_bijective_apply Modified src/algebra/algebra/subalgebra.lean + def algebra.top_equiv Modified src/field_theory/adjoin.lean + def intermediate_field.top_equiv - theorem intermediate_field.top_equiv_def + theorem intermediate_field.top_equiv_symm_apply_coe 2021-12-23 16:33:03 7defe7d feat(field_theory/separable): add expand_eval and expand_monic (#10965) Simple properties of `polynomial.expand`. ESTIMATED CHANGES Modified src/field_theory/separable.lean + theorem polynomial.expand_eval + theorem polynomial.monic.expand 2021-12-23 16:33:01 2be37b0 feat(combinatorics/set_family/shadow): Upper shadow of a set family (#10956) This defines the upper shadow of `𝒜 : finset (finset α)`, which is the dual of the shadow. Instead of removing each element from each set, we add each element not in each set. ESTIMATED CHANGES Modified src/combinatorics/set_family/shadow.lean + theorem finset.exists_subset_of_mem_up_shadow + theorem finset.insert_mem_up_shadow + theorem finset.mem_up_shadow_iff + theorem finset.mem_up_shadow_iff_erase_mem + theorem finset.mem_up_shadow_iff_exists_mem_card_add + theorem finset.mem_up_shadow_iff_exists_mem_card_add_one + theorem finset.shadow_image_compl + def finset.up_shadow + theorem finset.up_shadow_empty + theorem finset.up_shadow_image_compl + theorem finset.up_shadow_monotone 2021-12-23 16:33:00 60c2b68 feat(data/sigma/order): The lexicographical order has a bot/top (#10905) Also fix localized instances declarations. They weren't using fully qualified names and I had forgotten `sigma.lex.linear_order`. ESTIMATED CHANGES Modified src/data/sigma/order.lean - def sigma.lex.has_le - def sigma.lex.has_lt - def sigma.lex.linear_order - def sigma.lex.partial_order - def sigma.lex.preorder 2021-12-23 16:32:59 87fa060 feat(combinatorics/configuration): Define `line_count` and `point_count` (#10884) Adds definitions for the number of lines through a given point and the number of points through a given line. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2021-12-23 16:32:57 bd164c7 feat(data/polynomial/ring_division): add `polynomial.card_le_degree_of_subset_roots` (#10824) ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.card_le_degree_of_subset_roots 2021-12-23 16:32:55 ec6d9a7 feat(topology/algebra/group): definitionally better lattice (#10792) This provides `(⊓)`, `⊤`, and `⊥` explicitly such that the associated `to_topological_space` lemmas are definitionally equal. ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem group_topology.continuous_inv' + theorem group_topology.continuous_mul' +/- theorem group_topology.ext' + theorem group_topology.to_topological_space_Inf + theorem group_topology.to_topological_space_bot + theorem group_topology.to_topological_space_inf + theorem group_topology.to_topological_space_infi + theorem group_topology.to_topological_space_injective + theorem group_topology.to_topological_space_le + theorem group_topology.to_topological_space_top Modified src/topology/constructions.lean + theorem continuous_Inf_dom₂ + theorem continuous_inf_dom_left₂ + theorem continuous_inf_dom_right₂ 2021-12-23 16:32:53 6e9b011 feat(linear_algebra/orientation): composing with linear equivs and determinant (#10737) Add lemmas that composing an alternating map with a linear equiv using `comp_linear_map`, or composing a basis with a linear equiv using `basis.map`, produces the same orientation if and only if the determinant of that linear equiv is positive. ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem units.inv_neg + theorem units.inv_pos Modified src/analysis/normed_space/units.lean Modified src/linear_algebra/determinant.lean + theorem basis.det_map' Modified src/linear_algebra/orientation.lean + theorem basis.map_orientation_eq_det_inv_smul + theorem basis.orientation_comp_linear_equiv_eq_iff_det_pos + theorem basis.orientation_comp_linear_equiv_eq_neg_iff_det_neg + theorem basis.orientation_map + theorem basis.orientation_ne_iff_eq_neg + theorem orientation.map_eq_det_inv_smul + theorem orientation.map_eq_iff_det_pos + theorem orientation.map_eq_neg_iff_det_neg + theorem orientation.ne_iff_eq_neg + theorem units_inv_smul Modified src/ring_theory/subring/basic.lean 2021-12-23 14:26:41 3499323 chore(data/vector3): Make linter happy (#10998) and clean up a bit. ESTIMATED CHANGES Modified src/data/vector3.lean +/- theorem exists_vector_succ +/- theorem exists_vector_zero +/- def vector3.append +/- theorem vector3.append_add +/- theorem vector3.append_cons +/- theorem vector3.append_insert +/- theorem vector3.append_left +/- theorem vector3.append_nil +/- def vector3.cons +/- def vector3.cons_elim +/- theorem vector3.cons_elim_cons +/- theorem vector3.cons_fs +/- theorem vector3.cons_fz +/- theorem vector3.cons_head_tail +/- theorem vector3.eq_nil +/- def vector3.head +/- def vector3.insert +/- theorem vector3.insert_fs +/- theorem vector3.insert_fz +/- def vector3.nil +/- def vector3.nil_elim +/- def vector3.nth +/- def vector3.of_fn +/- theorem vector3.rec_on_cons +/- theorem vector3.rec_on_nil +/- def vector3.tail +/- def vector_all +/- theorem vector_all_iff_forall +/- theorem vector_allp.imp +/- def vector_allp +/- theorem vector_allp_cons +/- theorem vector_allp_iff_forall +/- theorem vector_allp_nil +/- theorem vector_allp_singleton +/- def vector_ex +/- theorem vector_ex_iff_exists 2021-12-23 14:26:40 72b4541 feat(data/option): simple lemmas about orelse (#10972) Some simple lemmas about orelse. Analogous to `bind_eq_some` and friends. ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.orelse_eq_none' + theorem option.orelse_eq_none + theorem option.orelse_eq_some' + theorem option.orelse_eq_some 2021-12-23 14:26:39 db1788c feat(ring_theory/tensor_product): Supremum of finite dimensional subalgebras (#10922) The supremum of finite dimensional subalgebras is finite dimensional. ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean + theorem subalgebra.finite_dimensional_sup 2021-12-23 12:54:33 f3b380e feat(algebraic_geometry): Prime spectrum is sober. (#10989) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean + theorem prime_spectrum.is_closed_iff_zero_locus_ideal + theorem prime_spectrum.is_closed_iff_zero_locus_radical_ideal + theorem prime_spectrum.is_irreducible_zero_locus_iff + theorem prime_spectrum.is_irreducible_zero_locus_iff_of_radical Modified src/topology/sober.lean + theorem is_generic_point_iff_forall_closed Modified src/topology/subset_properties.lean + theorem irreducible_space_def 2021-12-23 10:36:41 086469f chore(order/*): Change `order_hom` notation (#10988) This changes the notation for `order_hom` from `α →ₘ β` to `α →o β` to match `order_embedding` and `order_iso`, which are respectively `α ↪o β` and `α ≃o β`. This also solves the conflict with measurable functions. ESTIMATED CHANGES Modified src/algebra/lie/solvable.lean Modified src/algebraic_topology/simplex_category.lean +/- def simplex_category.hom.mk +/- def simplex_category.mk_hom Modified src/combinatorics/additive/salem_spencer.lean +/- def mul_roth_number +/- def roth_number_nat Modified src/control/lawful_fix.lean +/- theorem part.to_unit_cont +/- def part.to_unit_mono Modified src/data/finset/option.lean +/- def finset.erase_none Modified src/linear_algebra/basic.lean +/- def linear_map.iterate_ker +/- def linear_map.iterate_range +/- theorem submodule.coe_supr_of_chain +/- theorem submodule.mem_supr_of_chain Modified src/linear_algebra/eigenspace.lean +/- def module.End.generalized_eigenspace Modified src/linear_algebra/prod.lean +/- def linear_map.tunnel Modified src/order/closure.lean +/- structure closure_operator Modified src/order/fixed_points.lean +/- def order_hom.gfp +/- theorem order_hom.gfp_gfp +/- def order_hom.lfp +/- theorem order_hom.lfp_lfp Modified src/order/hom/basic.lean +/- def order_embedding.to_order_hom +/- def order_hom.apply +/- theorem order_hom.apply_mono +/- def order_hom.coe_fn_hom +/- theorem order_hom.coe_le_coe +/- def order_hom.comp +/- theorem order_hom.comp_const +/- theorem order_hom.comp_id +/- theorem order_hom.comp_mono +/- theorem order_hom.comp_prod_comp_same +/- def order_hom.compₘ +/- def order_hom.const +/- theorem order_hom.const_comp +/- def order_hom.curry +/- theorem order_hom.curry_apply +/- theorem order_hom.curry_symm_apply +/- def order_hom.diag +/- theorem order_hom.ext +/- def order_hom.fst +/- theorem order_hom.fst_comp_prod +/- theorem order_hom.fst_prod_snd +/- def order_hom.id +/- theorem order_hom.id_comp +/- theorem order_hom.le_def +/- def order_hom.on_diag +/- theorem order_hom.order_hom_eq_id +/- def order_hom.pi +/- def order_hom.pi_iso +/- def order_hom.prod_iso +/- def order_hom.prod_map +/- theorem order_hom.prod_mono +/- def order_hom.prodₘ +/- def order_hom.snd +/- theorem order_hom.snd_comp_prod +/- def order_hom.subtype.val +/- theorem order_hom.to_fun_eq_coe +/- def order_hom.unique +/- def pi.eval_order_hom +/- def rel_hom.to_order_hom Modified src/order/hom/lattice.lean +/- theorem order_hom.Inf_apply +/- theorem order_hom.Sup_apply +/- theorem order_hom.coe_infi +/- theorem order_hom.coe_supr +/- theorem order_hom.infi_apply +/- theorem order_hom.iterate_sup_le_sup_iff +/- theorem order_hom.supr_apply Modified src/order/omega_complete_partial_order.lean +/- theorem complete_lattice.Sup_continuous +/- theorem complete_lattice.inf_continuous +/- theorem complete_lattice.sup_continuous +/- theorem complete_lattice.supr_continuous +/- theorem omega_complete_partial_order.chain.map_le_map +/- theorem omega_complete_partial_order.continuous'_coe +/- theorem omega_complete_partial_order.continuous.of_bundled' +/- def omega_complete_partial_order.continuous +/- theorem omega_complete_partial_order.continuous_hom.coe_apply +/- def omega_complete_partial_order.continuous_hom.of_mono +/- def omega_complete_partial_order.continuous_hom.prod.apply +/- def omega_complete_partial_order.continuous_hom.to_mono +/- theorem omega_complete_partial_order.continuous_hom.ωSup_bind +/- def order_hom.bind Modified src/order/order_iso_nat.lean Modified src/order/partial_sups.lean +/- def partial_sups.gi +/- def partial_sups +/- theorem partial_sups_mono Modified src/ring_theory/artinian.lean +/- theorem is_artinian.monotone_stabilizes Modified src/ring_theory/noetherian.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/topology/omega_complete_partial_order.lean Modified src/topology/opens.lean +/- def topological_space.opens.comap 2021-12-23 10:36:40 03062ea feat(ring_theory/integral_closure): The product of the leading coeff and the root is integral. (#10807) ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral_leading_coeff_smul + theorem leading_coeff_smul_normalize_scale_roots + def normalize_scale_roots + theorem normalize_scale_roots_coeff_mul_leading_coeff_pow + theorem normalize_scale_roots_degree + theorem normalize_scale_roots_eval₂_leading_coeff_mul + theorem normalize_scale_roots_monic + theorem normalize_scale_roots_support + theorem ring_hom.is_integral_elem_leading_coeff_mul 2021-12-23 08:49:38 2cfa052 feat(data/list/count): countp of true and false (#10986) ESTIMATED CHANGES Modified src/data/list/count.lean + theorem list.countp_false + theorem list.countp_true 2021-12-23 07:22:33 08b13ec feat(field_theory/adjoin): add dim_bot, finrank_bot (#10964) Added two simp lemmas, showing that the dimension and finrank respectively of bottom intermediate fields are 1. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.dim_bot + theorem intermediate_field.finrank_bot 2021-12-23 05:35:04 f4e46fd feat(data/list/count): count_le_length (#10982) ESTIMATED CHANGES Modified src/data/list/count.lean + theorem list.count_le_length + theorem list.countp_le_length 2021-12-23 03:43:57 04779a3 feat(order/complete_boolean_algebra): lemmas about binfi (#10852) Adds corresponding `binfi` and `Inf` lemmas for existing `infi` results, especially where `rw` struggles to achieve the same thing alone. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean + theorem binfi_sup_eq + theorem bsupr_inf_eq + theorem inf_bsupr_eq + theorem sup_binfi_eq Modified src/order/galois_connection.lean + theorem galois_coinsertion.u_Inf_l_image + theorem galois_coinsertion.u_Sup_l_image + theorem galois_coinsertion.u_bsupr_l + theorem galois_coinsertion.u_bsupr_of_lu_eq_self + theorem galois_insertion.l_Inf_u_image + theorem galois_insertion.l_Sup_u_image + theorem galois_insertion.l_binfi_of_ul_eq_self + theorem galois_insertion.l_binfi_u + theorem galois_insertion.l_bsupr_u 2021-12-23 02:02:13 f00007d feat(analysis/normed_space/pointwise): more on pointwise operations on sets in normed spaces (#10820) Also move all related results to a new file `analysis/normed_space/pointwise`, to shorten `normed_space/basic` a little bit. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem mem_closed_ball_zero_iff +/- theorem preimage_add_ball +/- theorem preimage_add_closed_ball Added src/analysis/normed/group/pointwise.lean + theorem ball_add_singleton + theorem ball_zero_add_singleton + theorem bounded_iff_exists_norm_le + theorem closed_ball_add_singleton + theorem closed_ball_zero_add_singleton + theorem metric.bounded.add + theorem singleton_add_ball + theorem singleton_add_ball_zero + theorem singleton_add_closed_ball + theorem singleton_add_closed_ball_zero Modified src/analysis/normed_space/basic.lean - theorem normed_space.sphere_nonempty - theorem smul_ball - theorem smul_closed_ball' - theorem smul_closed_ball - theorem smul_sphere' - theorem smul_sphere Modified src/analysis/normed_space/finite_dimension.lean Added src/analysis/normed_space/pointwise.lean + theorem eventually_singleton_add_smul_subset + theorem metric.bounded.smul + theorem normed_space.sphere_nonempty + theorem set_smul_mem_nhds_zero + theorem set_smul_mem_nhds_zero_iff + theorem smul_ball + theorem smul_closed_ball' + theorem smul_closed_ball + theorem smul_sphere' + theorem smul_sphere Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/topology/metric_space/basic.lean + theorem metric.bounded.subset_ball_lt 2021-12-22 23:07:54 e15e015 split(data/finset/sigma): Split off `data.finset.basic` (#10957) This moves `finset.sigma` to a new file `data.finset.sigma`. I'm crediting Mario for 16d40d7491d1fe8a733d21e90e516e0dd3f41c5b ESTIMATED CHANGES Modified src/data/finset/basic.lean - theorem finset.mem_sigma - theorem finset.sigma_eq_bUnion - theorem finset.sigma_eq_empty - theorem finset.sigma_mono - theorem finset.sigma_nonempty Modified src/data/finset/lattice.lean - theorem finset.inf_sigma - theorem finset.sup_sigma Added src/data/finset/sigma.lean + theorem finset.inf_sigma + theorem finset.mem_sigma + theorem finset.sigma_eq_bUnion + theorem finset.sigma_eq_empty + theorem finset.sigma_mono + theorem finset.sigma_nonempty + theorem finset.sup_sigma Modified src/data/fintype/basic.lean 2021-12-22 23:07:53 3f16409 feat(data/finset/*): Random lemmas (#10955) Prove some `compl` lemmas for `finset`, `(s.erase a).card + 1 = s.card` for `list`, `multiset`, `set`, copy over one more `generalized_boolean_algebra` lemma. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.map_nonempty +/- theorem finset.mem_sdiff - theorem finset.nonempty.map +/- theorem finset.not_mem_sdiff_of_mem_right +/- theorem finset.sdiff_eq_empty_iff_subset + theorem finset.sdiff_sdiff_eq_self +/- theorem finset.sdiff_ssubset +/- theorem finset.sdiff_union_self_eq_union +/- theorem finset.union_sdiff_self_eq_union +/- theorem finset.union_sdiff_symm Modified src/data/finset/card.lean + theorem finset.card_erase_add_one Modified src/data/fintype/basic.lean +/- theorem finset.coe_compl + theorem finset.compl_empty +/- theorem finset.compl_eq_univ_sdiff + theorem finset.compl_erase +/- theorem finset.compl_filter + theorem finset.compl_insert +/- theorem finset.compl_ne_univ_iff_nonempty +/- theorem finset.compl_singleton +/- theorem finset.eq_univ_iff_forall +/- theorem finset.insert_compl_self +/- theorem finset.mem_compl + theorem finset.not_mem_compl +/- theorem finset.union_compl Modified src/data/list/basic.lean + theorem list.length_erase_add_one + theorem list.length_erasep_add_one Modified src/data/multiset/basic.lean + theorem multiset.card_erase_add_one 2021-12-22 23:07:52 2b9ab3b split(data/psigma/order): Split off `order.lexicographic` (#10953) This moves all the stuff about `Σ' i, α i` to a new file `data.psigma.order`. This mimics the file organisation of `sigma`. I'm crediting: * Scott for #820 * Minchao for #914 ESTIMATED CHANGES Modified src/combinatorics/colex.lean Modified src/data/list/lex.lean Added src/data/psigma/order.lean Modified src/data/sigma/lex.lean Modified src/data/sigma/order.lean Modified src/order/lexicographic.lean 2021-12-22 23:07:51 4315973 feat(quadratic_form/prod): quadratic forms on product and pi types (#10939) In order to provide the `pos_def` members, some new API was needed. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/equivs.lean +/- def clifford_algebra_complex.Q Modified src/linear_algebra/quadratic_form/basic.lean + theorem quadratic_form.anisotropic.eq_zero_iff + theorem quadratic_form.pos_def.anisotropic + theorem quadratic_form.pos_def.nonneg + theorem quadratic_form.pos_def_iff_nonneg + theorem quadratic_form.pos_def_of_nonneg + def quadratic_form.sq Added src/linear_algebra/quadratic_form/prod.lean + theorem quadratic_form.anisotropic_of_pi + theorem quadratic_form.anisotropic_of_prod + theorem quadratic_form.equivalent.pi + theorem quadratic_form.equivalent.prod + def quadratic_form.isometry.pi + def quadratic_form.isometry.prod + theorem quadratic_form.nonneg_pi_iff + theorem quadratic_form.nonneg_prod_iff + def quadratic_form.pi + theorem quadratic_form.pi_apply + theorem quadratic_form.pos_def.prod + theorem quadratic_form.pos_def_pi_iff + theorem quadratic_form.pos_def_prod_iff + def quadratic_form.prod 2021-12-22 23:07:50 c8f0afc feat(group_theory/index): Transitivity of finite relative index. (#10936) If `H` has finite relative index in `K`, and `K` has finite relative index in `L`, then `H` has finite relative index in `L`. Golfed from #9545. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.relindex_inf_mul_relindex + theorem subgroup.relindex_ne_zero_trans 2021-12-22 23:07:49 24cefb5 feat(data/real/ennreal): add monotonicity lemmas for ennreal.to_nnreal (#10556) Add four lemmas about monotonicity of `to_nnreal` on extended nonnegative reals, `to_nnreal_mono`, `to_nnreal_le_to_nnreal`, `to_nnreal_strict_mono`, `to_nnreal_lt_to_nnreal` (analogous to `to_real_mono`, `to_real_le_to_nnreal`, `to_real_strict_mono`, `to_real_lt_to_real`). ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_nnreal_le_to_nnreal + theorem ennreal.to_nnreal_lt_to_nnreal + theorem ennreal.to_nnreal_mono + theorem ennreal.to_nnreal_strict_mono 2021-12-22 21:32:02 c5bb320 refactor(*): Random lemmas and modifications from the shifting refactor. (#10940) ESTIMATED CHANGES Modified src/algebra/homology/differential_object.lean + def category_theory.differential_object.X_eq_to_hom + theorem category_theory.differential_object.X_eq_to_hom_refl + theorem homological_complex.d_eq_to_hom + theorem homological_complex.eq_to_hom_d + theorem homological_complex.eq_to_hom_f Modified src/category_theory/differential_object.lean + theorem category_theory.differential_object.eq_to_hom_f + def category_theory.differential_object.mk_iso Modified src/category_theory/equivalence.lean + theorem category_theory.functor.as_equivalence_counit + theorem category_theory.functor.as_equivalence_unit Modified src/category_theory/graded_object.lean + theorem category_theory.graded_object.eq_to_hom_apply Modified src/category_theory/limits/has_limits.lean + theorem category_theory.limits.has_smallest_colimits_of_has_colimits + theorem category_theory.limits.has_smallest_limits_of_has_limits Modified src/category_theory/monoidal/End.lean + theorem category_theory.μ_inv_naturalityᵣ + theorem category_theory.μ_inv_naturalityₗ Modified src/category_theory/monoidal/discrete.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/triangulated/basic.lean +/- def category_theory.triangulated.triangle.mk 2021-12-22 20:39:43 ee25d58 feat(linear_algebra/quadratic_form/basic): `linear_map.comp_quadratic_form` (#10950) The name is taken to mirror `linear_map.comp_multilinear_map` ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form/basic.lean + def linear_map.comp_quadratic_form + theorem quadratic_form.map_smul_of_tower + theorem quadratic_form.polar_comp 2021-12-22 20:39:42 b2e881b feat(linear_algebra/eigenspace): the eigenvalues of a linear endomorphism are in its spectrum (#10912) This PR shows that the eigenvalues of `f : End R M` are in `spectrum R f`. ESTIMATED CHANGES Modified src/linear_algebra/eigenspace.lean + theorem module.End.has_eigenvector.apply_eq_smul + theorem module.End.mem_spectrum_of_has_eigenvalue 2021-12-22 18:48:37 12ee59f feat(data/{finset,multiset}/locally_finite): When an `Icc` is a singleton, cardinality generalization (#10925) This proves `Icc a b = {c} ↔ a = c ∧ b = c` for sets and finsets, gets rid of the `a ≤ b` assumption in `card_Ico_eq_card_Icc_sub_one` and friends and proves them for multisets. ESTIMATED CHANGES Modified src/data/finset/interval.lean Modified src/data/finset/locally_finite.lean + theorem finset.Icc_eq_singleton_iff +/- theorem finset.card_Ico_eq_card_Icc_sub_one +/- theorem finset.card_Ioc_eq_card_Icc_sub_one +/- theorem finset.card_Ioo_eq_card_Icc_sub_two +/- theorem finset.card_Ioo_eq_card_Ico_sub_one Modified src/data/multiset/locally_finite.lean + theorem multiset.card_Ico_eq_card_Icc_sub_one + theorem multiset.card_Ioc_eq_card_Icc_sub_one + theorem multiset.card_Ioo_eq_card_Icc_sub_two + theorem multiset.card_Ioo_eq_card_Ico_sub_one Modified src/data/set/intervals/basic.lean + theorem set.Icc_eq_singleton_iff 2021-12-22 18:07:18 da07a99 feat(ring_theory/tensor_product): Range of `tensor_product.product_map` (#10882) This PR proves `(product_map f g).range = f.range ⊔ g.range`. ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean + theorem algebra.tensor_product.map_range + theorem algebra.tensor_product.product_map_range 2021-12-22 16:18:16 dda469d chore(analysis/normed_space/exponential + logic/function/iterate): fix typos in doc-strings (#10968) One `m` was missing in 3 different places. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean Modified src/logic/function/iterate.lean 2021-12-22 14:28:32 7ca68f8 chore(*): fix some doc (#10966) ESTIMATED CHANGES Modified src/data/nat/factorial/basic.lean Modified src/ring_theory/polynomial/pochhammer.lean 2021-12-22 12:04:48 af683b1 feat(topology/tietze_extension): Tietze extension theorem (#10701) ESTIMATED CHANGES Added src/data/set/intervals/monotone.lean + theorem monotone_of_odd_of_monotone_on_nonneg + def order_iso_Ioo_neg_one_one + theorem strict_mono_of_odd_strict_mono_on_nonneg Modified src/order/hom/basic.lean + def strict_mono.order_iso_of_right_inverse Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.norm_comp_continuous_le Added src/topology/tietze_extension.lean + theorem bounded_continuous_function.exists_extension_forall_exists_le_ge_of_closed_embedding + theorem bounded_continuous_function.exists_extension_forall_mem_Icc_of_closed_embedding + theorem bounded_continuous_function.exists_extension_forall_mem_of_closed_embedding + theorem bounded_continuous_function.exists_extension_norm_eq_of_closed_embedding' + theorem bounded_continuous_function.exists_extension_norm_eq_of_closed_embedding + theorem bounded_continuous_function.exists_forall_mem_restrict_eq_of_closed + theorem bounded_continuous_function.exists_norm_eq_restrict_eq_of_closed + theorem bounded_continuous_function.tietze_extension_step + theorem continuous_map.exists_extension_forall_mem_of_closed_embedding + theorem continuous_map.exists_extension_of_closed_embedding + theorem continuous_map.exists_restrict_eq_forall_mem_of_closed + theorem continuous_map.exists_restrict_eq_of_closed Modified src/topology/urysohns_bounded.lean 2021-12-21 23:32:37 fc66d88 refactor(ring_theory/derivation): use weaker TC assumptions (#10952) Don't assume `[add_cancel_comm_monoid M]`, add `map_one_eq_zero` as an axiom instead. Add a constructor `derivation.mk'` that deduces `map_one_eq_zero` from `leibniz`. Also generalize `smul`/`module` instances. ESTIMATED CHANGES Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/ring_theory/derivation.lean - theorem derivation.Rsmul_apply - theorem derivation.coe_Rsmul - theorem derivation.coe_Rsmul_linear_map + theorem derivation.coe_mk' + theorem derivation.coe_mk'_linear_map +/- theorem derivation.coe_smul +/- theorem derivation.coe_smul_linear_map +/- theorem derivation.map_one_eq_zero + def derivation.mk' +/- theorem derivation.mk_coe +/- theorem derivation.smul_apply 2021-12-21 19:23:31 55f575f feat(linear_algebra/quadratic_form/complex): all non-degenerate quadratic forms over ℂ are equivalent (#10951) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form/complex.lean + theorem quadratic_form.complex_equivalent 2021-12-21 18:06:48 b434a0d feat(data/nat/prime): `prime.dvd_prod_iff`; golf `mem_list_primes_of_dvd_prod` (#10624) Adds a generalisation of `prime.dvd_mul`: prime `p` divides the product of `L : list ℕ` iff it divides some `a ∈ L`. The `.mp` direction of this lemma is the second part of Theorem 1.9 in Apostol (1976) Introduction to Analytic Number Theory. Also adds the converse `prime.not_dvd_prod`, and uses `dvd_prod_iff` to golf the proof of `mem_list_primes_of_dvd_prod`. ESTIMATED CHANGES Modified src/algebra/big_operators/associated.lean + theorem prime.dvd_prod_iff Modified src/data/nat/prime.lean + theorem nat.prime.dvd_prod_iff + theorem nat.prime.not_dvd_prod 2021-12-21 16:21:11 ca554be chore(group_theory/quotient_group): make pow definitionally equal (#10833) Motivated by a TODO comment. ESTIMATED CHANGES Modified src/group_theory/congruence.lean Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.coe_div +/- theorem quotient_group.coe_pow +/- theorem quotient_group.coe_zpow 2021-12-21 16:21:10 cea1988 feat(data/finsupp/basic): add lemma `disjoint_prod_add` (#10799) For disjoint finsupps `f1` and `f2`, and function `g`, the product of the products of `g` over `f1` and `f2` equals the product of `g` over `f1 + f2` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.prod_add_index_of_disjoint 2021-12-21 15:17:17 4aa7ac6 feat(data/mv_polynomial): add `mv_polynomial.linear_map_ext` (#10945) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.linear_map_ext 2021-12-21 12:42:47 8dafccc chore(data/nat/digits): Eliminate `finish` (#10947) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/data/nat/digits.lean 2021-12-21 12:42:46 7e48e35 feat(algebra/module/submodule_lattice, linear_algebra/projection): two lemmas about `is_compl` (#10709) ESTIMATED CHANGES Modified src/algebra/module/submodule_lattice.lean + theorem submodule.disjoint_def' + theorem submodule.disjoint_def + theorem submodule.eq_zero_of_coe_mem_of_disjoint Modified src/linear_algebra/basic.lean - theorem submodule.disjoint_def' - theorem submodule.disjoint_def Modified src/linear_algebra/prod.lean + def linear_equiv.prod_comm Modified src/linear_algebra/projection.lean + theorem submodule.linear_proj_add_linear_proj_of_is_compl_eq_self + theorem submodule.prod_comm_trans_prod_equiv_of_is_compl 2021-12-21 12:42:45 a6b2f94 refactor(linear_algebra/sesquilinear_form): Use similar definition as used in `bilinear_map` (#10443) Define sesquilinear forms as `M →ₗ[R] M →ₛₗ[I] R`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean +/- def sesq_form_of_inner Modified src/linear_algebra/sesquilinear_form.lean + theorem linear_map.is_alt.is_refl + theorem linear_map.is_alt.neg + theorem linear_map.is_alt.ortho_comm + theorem linear_map.is_alt.self_eq_zero + def linear_map.is_alt + def linear_map.is_ortho + theorem linear_map.is_ortho_def + theorem linear_map.is_ortho_zero_left + theorem linear_map.is_ortho_zero_right + theorem linear_map.is_refl.eq_zero + theorem linear_map.is_refl.ortho_comm + def linear_map.is_refl + theorem linear_map.is_symm.is_refl + theorem linear_map.is_symm.ortho_comm + def linear_map.is_symm + theorem linear_map.ortho_smul_left + theorem linear_map.ortho_smul_right - theorem sesq_form.add_left - def sesq_form.add_monoid_hom_right - theorem sesq_form.add_right - def sesq_form.comp - theorem sesq_form.comp_apply - theorem sesq_form.comp_comp - theorem sesq_form.comp_injective - def sesq_form.comp_left - theorem sesq_form.comp_left_apply - theorem sesq_form.comp_left_comp_right - def sesq_form.comp_right - theorem sesq_form.comp_right_apply - theorem sesq_form.comp_right_comp_left - theorem sesq_form.ext - theorem sesq_form.is_alt.is_refl - theorem sesq_form.is_alt.neg - theorem sesq_form.is_alt.ortho_comm - theorem sesq_form.is_alt.self_eq_zero - def sesq_form.is_alt - def sesq_form.is_ortho - theorem sesq_form.is_refl.eq_zero - theorem sesq_form.is_refl.ortho_comm - def sesq_form.is_refl - theorem sesq_form.is_symm.is_refl - theorem sesq_form.is_symm.ortho_comm - def sesq_form.is_symm - def sesq_form.linear_map_left - theorem sesq_form.neg_left - theorem sesq_form.neg_right - theorem sesq_form.ortho_smul_left - theorem sesq_form.ortho_smul_right - theorem sesq_form.ortho_zero - theorem sesq_form.smul_left - theorem sesq_form.smul_right - theorem sesq_form.sub_left - theorem sesq_form.sub_right - theorem sesq_form.sum_left - theorem sesq_form.sum_right - theorem sesq_form.zero_left - theorem sesq_form.zero_right - structure sesq_form 2021-12-21 10:53:02 d565373 feat(order/galois_connection, linear_algebra/basic): `x ∈ R ∙ y` is a transitive relation (#10943) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.mem_span_singleton_trans + theorem submodule.subset_span_trans Modified src/order/galois_connection.lean + theorem galois_connection.l_u_le_trans + theorem galois_connection.le_u_l_trans 2021-12-21 07:22:28 2ceda78 feat(order/monovary): Monovariance of a pair of functions. (#10890) `f` monovaries with `g` if `g i < g j → f i ≤ f j`. `f` antivaries with `g` if `g i < g j → f j ≤ f i`. This is a way to talk about functions being monotone together, without needing an order on the index type. ESTIMATED CHANGES Modified src/order/monotone.lean + theorem antitone_iff_forall_lt + theorem antitone_on.reflect_lt + theorem antitone_on_iff_forall_lt + theorem monotone_iff_forall_lt + theorem monotone_on.reflect_lt + theorem monotone_on_iff_forall_lt Added src/order/monovary.lean + theorem antivary.comp_right + theorem antivary.dual + theorem antivary.dual_left + theorem antivary.dual_right + def antivary + theorem antivary_const_left + theorem antivary_const_right + theorem antivary_id_iff + theorem antivary_on.dual + theorem antivary_on.dual_left + theorem antivary_on.dual_right + def antivary_on + theorem antivary_on_const_left + theorem antivary_on_const_right + theorem antivary_on_id_iff + theorem antivary_on_univ + theorem monovary.comp_right + theorem monovary.dual + theorem monovary.dual_left + theorem monovary.dual_right + def monovary + theorem monovary_const_left + theorem monovary_const_right + theorem monovary_id_iff + theorem monovary_on.dual + theorem monovary_on.dual_left + theorem monovary_on.dual_right + def monovary_on + theorem monovary_on_const_left + theorem monovary_on_const_right + theorem monovary_on_id_iff + theorem monovary_on_self + theorem monovary_on_univ + theorem monovary_self + theorem subsingleton.antivary + theorem subsingleton.antivary_on + theorem subsingleton.monovary + theorem subsingleton.monovary_on 2021-12-21 01:43:24 d145e8e chore(combinatorics/simple_graph/basic): Golf and cleanup (#10942) This kills a few `simp` and fixes typos. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean - theorem simple_graph.common_neighbors_subset_neighbor_set + theorem simple_graph.common_neighbors_subset_neighbor_set_left + theorem simple_graph.common_neighbors_subset_neighbor_set_right 2021-12-20 23:36:13 5ac4cd3 feat(analysis/special_functions/non_integrable): examples of non-integrable functions (#10788) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_measurable.lean + theorem ae_measurable_deriv Added src/analysis/special_functions/non_integrable.lean + theorem interval_integrable_inv_iff + theorem interval_integrable_sub_inv_iff + theorem not_interval_integrable_of_sub_inv_is_O_punctured + theorem not_interval_integrable_of_tendsto_norm_at_top_of_deriv_is_O_filter + theorem not_interval_integrable_of_tendsto_norm_at_top_of_deriv_is_O_punctured + theorem not_interval_integrable_of_tendsto_norm_at_top_of_deriv_is_O_within_diff_singleton Modified src/data/set/intervals/unordered_interval.lean + theorem set.interval_oc_subset_interval_oc_of_interval_subset_interval + theorem set.interval_oc_swap Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integrable.mono_fun' + theorem interval_integrable.mono_fun + theorem interval_integral.abs_integral_eq_abs_integral_interval_oc + theorem interval_integral.abs_integral_mono_interval +/- theorem interval_integral.norm_integral_eq_norm_integral_Ioc + theorem interval_integral.norm_integral_min_max Modified src/order/filter/basic.lean Modified src/order/filter/interval.lean + theorem filter.tendsto.interval Modified src/topology/continuous_on.lean +/- theorem diff_mem_nhds_within_compl + theorem diff_mem_nhds_within_diff 2021-12-20 21:49:20 c88943f feat(algebra/algebra/subalgebra): define the center of a (unital) algebra (#10910) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem set.algebra_map_mem_center + def subalgebra.center + theorem subalgebra.center_eq_top + theorem subalgebra.center_to_subring + theorem subalgebra.center_to_subsemiring + theorem subalgebra.coe_center + theorem subalgebra.mem_center_iff 2021-12-20 21:49:18 3b6bd99 chore(data/finset/prod): eliminate `finish` (#10904) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/data/finset/prod.lean 2021-12-20 20:42:22 ed250f7 feat(topology/[path_]connected): add random [path-]connectedness lemmas (#10932) From sphere-eversion ESTIMATED CHANGES Modified src/topology/connected.lean + theorem preconnected_space.connected_component_eq_univ + theorem preconnected_space_iff_connected_component Modified src/topology/path_connected.lean + theorem is_path_connected.is_connected 2021-12-20 19:47:57 7555ea7 feat(ring_theory/integral_closure): Supremum of integral subalgebras (#10935) The supremum of integral subalgebras is integral. ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral_sup 2021-12-20 19:47:56 5dd0ede refactor(algebra/category/CommRing/constructions): Squeeze a slow simp (#10934) `prod_fan_is_limit` was causing timeouts on CI for another PR, so I squeezed one of the simps. ESTIMATED CHANGES Modified src/algebra/category/CommRing/constructions.lean 2021-12-20 18:57:10 082665e feat(group_theory/index): relindex_eq_zero_of_le_right (#10928) If H has infinite index in K, then so does any L ≥ K. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.relindex_eq_zero_of_le_right 2021-12-20 16:29:56 d910e83 chore(*): ensure all open_locales work without any open namespaces (#10913) Inspired by #10905 we clean up the localized notation in all locales by using the full names of declarations, this should mean that `open_locale blah` should almost never error. The cases I'm aware of where this doesn't hold still are the locales: - `witt` which hard codes the variable name `p`, if there is no `p` in context this will fail - `list.func` and `topological_space` opening `list.func` breaks the notation in `topological_space` due to ``notation as `{` m ` ↦ ` a `}` := list.func.set a as m`` in `list.func` and ``localized "notation `𝓝[≠] ` x:100 := nhds_within x {x}ᶜ" in topological_space`` - likewise for `parser` and `kronecker` due to ``localized "infix ` ⊗ₖ `:100 := matrix.kronecker_map (*)" in kronecker`` But we don't fix these in this PR. There may be others instances like this too as these errors can depend on the ordering chosen and I didn't check them all. A very basic script to check this sort of thing is at https://github.com/leanprover-community/mathlib/tree/alexjbest/check_localized ESTIMATED CHANGES Modified src/category_theory/types.lean Modified src/data/nat/count.lean Modified src/data/vector3.lean Modified src/dynamics/omega_limit.lean Modified src/linear_algebra/special_linear_group.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/dioph.lean Modified src/number_theory/modular.lean 2021-12-20 16:29:55 d14ac1f feat(*) : added missing lemma for pointwise smul of submonoid, add_subgroup, add_submonoid, subsemiring, and semiring. (#10908) ESTIMATED CHANGES Modified src/group_theory/subgroup/pointwise.lean + theorem add_subgroup.mem_smul_pointwise_iff_exists + theorem subgroup.mem_smul_pointwise_iff_exists Modified src/group_theory/submonoid/pointwise.lean + theorem add_submonoid.mem_smul_pointwise_iff_exists + theorem submonoid.mem_smul_pointwise_iff_exists Modified src/ring_theory/subring/pointwise.lean + theorem subring.mem_smul_pointwise_iff_exists Modified src/ring_theory/subsemiring/pointwise.lean + theorem subsemiring.mem_smul_pointwise_iff_exists 2021-12-20 16:29:54 c2debc4 refactor(combinatorics/configuration): Implicit arguments for `nondegenerate.eq_or_eq` (#10885) The arguments `p₁`, `p₂`, `l₁`, `l₂` can be implicit, since they can be inferred from `p₁ ∈ l₁`, `p₂ ∈ l₁`, `p₁ ∈ l₂`, `p₂ ∈ l₂`. ESTIMATED CHANGES Modified src/combinatorics/configuration.lean 2021-12-20 15:51:29 b9fbef8 feat(tactic/observe): have a claim proved by library_search under the hood (#10878) ESTIMATED CHANGES Modified scripts/lint-style.py Added src/tactic/observe.lean Added test/observe.lean 2021-12-20 13:27:04 ab654e5 feat(topology/sober): Specialization & generic points & sober spaces (#10914) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem is_closed.mem_iff_closure_subset Modified src/topology/maps.lean + theorem closed_embedding.closure_image_eq Modified src/topology/separation.lean + theorem indistinguishable.eq + theorem is_irreducible_iff_singleton + theorem is_preirreducible_iff_subsingleton Added src/topology/sober.lean + theorem closed_embedding.sober + theorem continuous_map.map_specialization + def generic_point + theorem generic_point_closure + theorem generic_point_spec + theorem generic_point_specializes + theorem indistinguishable_iff_specializes_and + def irreducible_set_equiv_points + theorem is_generic_point.def + theorem is_generic_point.disjoint_iff + theorem is_generic_point.eq + theorem is_generic_point.image + theorem is_generic_point.is_closed + theorem is_generic_point.is_irreducible + theorem is_generic_point.mem + theorem is_generic_point.mem_closed_set_iff + theorem is_generic_point.mem_open_set_iff + theorem is_generic_point.specializes + def is_generic_point + theorem is_generic_point_closure + theorem is_generic_point_def + def is_irreducible.generic_point + theorem is_irreducible.generic_point_closure_eq + theorem is_irreducible.generic_point_spec + theorem open_embedding.sober + theorem sober_of_open_cover + theorem specialization_order.monotone_of_continuous + def specialization_order + def specialization_preorder + theorem specializes.eq + theorem specializes.map + theorem specializes.trans + def specializes + theorem specializes_antisymm + theorem specializes_def + theorem specializes_iff_closure_subset + theorem specializes_iff_eq + theorem specializes_iff_forall_closed + theorem specializes_iff_forall_open + theorem specializes_refl + theorem specializes_rfl Modified src/topology/subset_properties.lean + theorem irreducible_space.is_irreducible_univ + theorem is_preirreducible.interior + theorem is_preirreducible.open_subset + theorem is_preirreducible.preimage + theorem is_preirreducible.subset_irreducible + theorem is_preirreducible_of_subsingleton + theorem subset_closure_inter_of_is_preirreducible_of_is_open 2021-12-20 13:27:01 e473898 feat(category_theory/glue_data): Some more API for glue_data (#10881) ESTIMATED CHANGES Modified src/category_theory/glue_data.lean + def category_theory.glue_data.V_pullback_cone + def category_theory.glue_data.V_pullback_cone_is_limit_of_map + def category_theory.glue_data.glued_iso + theorem category_theory.glue_data.has_colimit_map_glue_data_diagram + theorem category_theory.glue_data.has_colimit_multispan_comp + theorem category_theory.glue_data.types_ι_jointly_surjective + theorem category_theory.glue_data.types_π_surjective + theorem category_theory.glue_data.ι_glued_iso_hom + theorem category_theory.glue_data.ι_glued_iso_inv + theorem category_theory.glue_data.ι_jointly_surjective 2021-12-20 13:26:57 6cfc8d8 feat(algebraic_geometry/locally_ringed_space): LocallyRingedSpace is cocomplete. (#10791) ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/locally_ringed_space/has_colimits.lean + def algebraic_geometry.LocallyRingedSpace.coequalizer + def algebraic_geometry.LocallyRingedSpace.coequalizer_cofork + def algebraic_geometry.LocallyRingedSpace.coequalizer_cofork_is_colimit + def algebraic_geometry.LocallyRingedSpace.has_coequalizer.image_basic_open + theorem algebraic_geometry.LocallyRingedSpace.has_coequalizer.image_basic_open_image_open + theorem algebraic_geometry.LocallyRingedSpace.has_coequalizer.image_basic_open_image_preimage + theorem algebraic_geometry.LocallyRingedSpace.is_local_ring_hom_stalk_map_congr Modified src/algebraic_geometry/sheafed_space.lean + theorem algebraic_geometry.SheafedSpace.comp_c_app' + theorem algebraic_geometry.SheafedSpace.congr_app Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.coequalizer_preimage_image_eq_of_preimage_eq Modified src/ring_theory/ideal/local_ring.lean + theorem is_local_ring_hom_of_comp + theorem ring_hom.domain_local_ring 2021-12-20 11:53:20 b02e2ea feat(group_theory/coset): Embeddings of quotients (#10901) If `K ≤ L`, then there is an embedding `K ⧸ (H.subgroup_of K) ↪ L ⧸ (H.subgroup_of L)`. Golfed from #9545. ESTIMATED CHANGES Modified src/group_theory/coset.lean + def subgroup.quotient_subgroup_of_embedding_of_le 2021-12-20 11:53:19 b4961da feat(analysis/calculus/{f,}deriv): generalize `has_fderiv_at_filter.is_O_sub_rev` (#10897) Also add `has_deriv_at.is_O_sub_rev` ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem has_deriv_at.has_fderiv_at_equiv + theorem has_deriv_at_filter.is_O_sub_rev Modified src/analysis/calculus/fderiv.lean +/- theorem has_fderiv_at_filter.is_O_sub_rev 2021-12-20 10:07:40 bcf20b0 feat(combinatorics/simple_graph/matching): is_matching iff all degrees = 1 (#10864) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/matching.lean + theorem simple_graph.subgraph.is_matching_iff_forall_degree Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.degree_eq_one_iff_unique_adj + theorem simple_graph.subgraph.finset_card_neighbor_set_eq_degree 2021-12-20 10:07:38 1929025 feat(ring_theory/polynomial/cyclotomic): generalize a few results to domains (#10741) Primarily for flt-regular ESTIMATED CHANGES Modified src/data/multiset/basic.lean Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.degree_X_add_C Modified src/data/polynomial/field_division.lean +/- theorem polynomial.prod_multiset_root_eq_finset_root +/- theorem polynomial.roots_C_mul +/- theorem polynomial.roots_normalize Modified src/field_theory/splitting_field.lean - theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C_of_field - theorem polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq_of_field Modified src/ring_theory/polynomial/cyclotomic/basic.lean +/- theorem polynomial.X_pow_sub_one_eq_prod +/- theorem polynomial.cyclotomic'_eq_X_pow_sub_one_div +/- theorem polynomial.cyclotomic_eq_prod_X_sub_primitive_roots +/- theorem polynomial.int_coeff_of_cyclotomic' +/- theorem polynomial.prod_cyclotomic'_eq_X_pow_sub_one +/- theorem polynomial.unique_int_coeff_of_cycl Modified src/ring_theory/roots_of_unity.lean 2021-12-20 09:01:19 5a79047 feat(group_theory/index): `relindex_eq_zero_of_le_left` (#10902) If `K` has infinite index in `L`, then so does any `H ≤ K`. The `right`-version is forthcoming. Making the subgroups explicit in `relindex_mul_relindex` makes rewriting much easier (both in this situation, and in others). ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.relindex_eq_zero_of_le_left 2021-12-20 09:01:18 5c05ca2 feat(ring_theory/integral_closure): `is_field_iff_is_field` (#10875) If `R/S` is an integral extension, then `R` is a field if and only if `S` is a field. One direction was already in mathlib, and this PR proves the converse direction. ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_field_of_is_integral_of_is_field' + theorem is_integral.is_field_iff_is_field 2021-12-20 09:01:16 d5de8ea feat(data/polynomial): add some simp attributes and commuted versions of coeff_mul_X_pow (#10868) I couldn't find these before and accidentally rewrote them from scratch, I think part of the reason is that I would have expected all of these vesions to be simp lemmas, so we add some more versions of these lemmas and tag everything as simp. From flt-regular ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.commute_X_pow Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_X_mul + theorem polynomial.coeff_X_pow_mul' + theorem polynomial.coeff_X_pow_mul 2021-12-20 07:48:27 ade581e feat(algebraic_geometry): Open immersions of locally ringed spaces have pullbacks (#10917) ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean + theorem algebraic_geometry.LocallyRingedSpace.comp_val + def algebraic_geometry.LocallyRingedSpace.of_restrict Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_fac + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_range + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.lift_uniq + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_cone_of_left + def algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_cone_of_left_is_limit + theorem algebraic_geometry.LocallyRingedSpace.is_open_immersion.pullback_snd_is_iso_of_range_subset Modified src/category_theory/reflects_isomorphisms.lean 2021-12-20 05:51:57 093aef5 feat(order/monotone): Functions from/to subsingletons are monotone (#10903) A few really trivial results about monotonicity/antitonicity of `f : α → β` where `subsingleton α` or `subsingleton β`. Also fixes the markdown heading levels in this file ESTIMATED CHANGES Modified src/order/monotone.lean + theorem subsingleton.antitone' + theorem subsingleton.monotone' 2021-12-20 04:47:45 1067556 refactor(data/polynomial/eval): Golf `hom_eval₂` (#10920) Here's a much easier proof of `hom_eval₂`. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean 2021-12-20 01:54:00 c40c701 feat(docs/references) : Added reference for #10791 (#10915) ESTIMATED CHANGES Modified docs/references.bib 2021-12-20 01:53:58 9cbd828 feat(data/finset/basic): add image_congr (#10911) Add `finset.image_congr` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.image_congr 2021-12-20 01:53:57 f7b24fa refactor(ring_theory/tensor_product): Speed up slow proofs (#10883) `alg_hom_of_linear_map_tensor_product` was causing timeouts, due to many uses of `simp`. This refactor speeds up the proofs. ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean 2021-12-20 00:57:04 6ab0f90 chore(category_theory/filtered): avoid `finish` (#10918) Removing uses of finish, as discussed on Zulip (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers). ESTIMATED CHANGES Modified src/category_theory/filtered.lean 2021-12-19 20:49:08 5dd3537 feat(algebra/algebra/subalgebra): `subalgebra.map` commutes with supremum (#10899) This PR proves `(S ⊔ T).map f = S.map f ⊔ T.map f`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem algebra.map_sup 2021-12-19 18:51:43 41ced1c feat(ring_theory/tensor_product): The tensor product `A ⊗ B` is generated by tensors `a ⊗ₜ b` (#10900) The tensor product is generated by tensors, in terms of `algebra.adjoin`. This is an immediate consequence of `span_tmul_eq_top`. ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean + theorem algebra.tensor_product.adjoin_tmul_eq_top 2021-12-19 18:51:42 194bde8 feat(order/monotone): add `monotone_int_of_le_succ` etc (#10895) Also use new lemmas to golf `zpow_strict_mono` and prove `zpow_strict_anti`. ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem zpow_strict_anti Modified src/data/complex/exponential.lean Modified src/order/monotone.lean + theorem antitone_int_of_succ_le - theorem forall_ge_le_of_forall_le_succ + theorem int.rel_of_forall_rel_succ_of_le + theorem int.rel_of_forall_rel_succ_of_lt + theorem monotone_int_of_le_succ + theorem nat.rel_of_forall_rel_succ_of_le + theorem nat.rel_of_forall_rel_succ_of_le_of_le + theorem nat.rel_of_forall_rel_succ_of_le_of_lt + theorem nat.rel_of_forall_rel_succ_of_lt + theorem strict_anti_int_of_succ_lt +/- theorem strict_anti_nat_of_succ_lt + theorem strict_mono_int_of_lt_succ +/- theorem strict_mono_nat_of_lt_succ Modified src/order/order_iso_nat.lean 2021-12-19 18:51:41 a60ef7c feat(data/list/sort): subperm sorted implies sublist (#10892) A "sub" version of the lemma directly above. ESTIMATED CHANGES Modified src/data/list/sort.lean + theorem list.sublist_of_subperm_of_sorted 2021-12-19 18:51:40 faee358 feat (order/lexicographic): add API lemmas (#10887) ESTIMATED CHANGES Modified src/order/lexicographic.lean + theorem lex_le_iff + theorem lex_lt_iff 2021-12-19 18:51:40 45ed9de chore(order/complete_lattice): eliminate `finish` (#10876) Removing uses of finish, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/order/complete_lattice.lean 2021-12-19 17:06:17 68d9b42 feat(data/list/count): add lemma `list.count_singleton'` (#10880) A generalisation of `count_singleton`: `count a [b] = ite (a = b) 1 0` ESTIMATED CHANGES Modified src/data/list/count.lean + theorem list.count_singleton' 2021-12-19 12:15:00 9e5cbc1 feat(algebra/group_power/basic): generalize `zpow_neg_one` to `div_inv_monoid` (#10894) Drop `zpow_neg_one₀` ESTIMATED CHANGES Modified src/algebra/field_power.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/group_with_zero/power.lean - theorem zpow_neg_one₀ Modified src/analysis/calculus/deriv.lean Modified src/measure_theory/covering/differentiation.lean 2021-12-19 11:16:32 3fc32e3 feat(analysis/asymptotics): add `is_O.inv_rev`, `is_o.inv_rev` (#10896) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O.inv_rev + theorem asymptotics.is_O_with.inv_rev + theorem asymptotics.is_o.inv_rev 2021-12-19 10:01:23 7222463 chore(algebra/iterate_hom): use to_additive to fill missing lemmas (#10886) ESTIMATED CHANGES Modified src/algebra/iterate_hom.lean + theorem add_monoid.End.coe_pow - theorem add_monoid_hom.iterate_map_sub + theorem monoid.End.coe_pow + theorem monoid_hom.iterate_map_div +/- theorem monoid_hom.iterate_map_pow +/- theorem monoid_hom.iterate_map_zpow 2021-12-19 02:48:13 a2c3b29 chore(scripts): update nolints.txt (#10893) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-12-18 20:11:21 ee17ab3 refactor(measure_theory/measure/hausdorff): change Hausdorff measure definition at 0 (#10859) Currently, our definition of the Hausdorff measure ensures that it has no atom. This differs from the standard definition of the 0-Hausdorff measure, which is the counting measure -- and this convention is better behaved in many respects, for instance in a `d`-dimensional space the `d`-Hausdorff measure is proportional to Lebesgue measure, while currently we only have this for `d > 0`. This PR refactors the definition of the Hausdorff measure, to conform to the standard definition. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.nonempty_of_nonempty_preimage Modified src/measure_theory/measure/hausdorff.lean +/- theorem measure_theory.hausdorff_measure_pi_real - theorem measure_theory.measure.hausdorff_measure_apply' +/- theorem measure_theory.measure.hausdorff_measure_apply + theorem measure_theory.measure.hausdorff_measure_le_one_of_subsingleton + theorem measure_theory.measure.hausdorff_measure_zero_singleton +/- theorem measure_theory.measure.le_hausdorff_measure +/- theorem measure_theory.measure.le_mk_metric +/- theorem measure_theory.measure.mk_metric_mono + theorem measure_theory.measure.no_atoms_hausdorff + theorem measure_theory.measure.one_le_hausdorff_measure_zero_of_nonempty +/- theorem measure_theory.outer_measure.le_mk_metric +/- theorem measure_theory.outer_measure.mk_metric_mono Modified src/topology/metric_space/hausdorff_dimension.lean 2021-12-18 20:11:20 289ebe5 chore(category_theory/monoidal/End): Adding API for monoidal functors into `C ⥤ C` (#10841) Needed for the shift refactor ESTIMATED CHANGES Modified src/category_theory/functor_category.lean + theorem category_theory.map_hom_inv_app + theorem category_theory.map_inv_hom_app Modified src/category_theory/monoidal/End.lean + theorem category_theory.associativity_app + def category_theory.equiv_of_tensor_iso_unit + theorem category_theory.left_unitality_app + theorem category_theory.obj_zero_map_μ_app + theorem category_theory.obj_ε_app + theorem category_theory.obj_ε_inv_app + theorem category_theory.obj_μ_app + theorem category_theory.obj_μ_inv_app + theorem category_theory.obj_μ_zero_app + theorem category_theory.right_unitality_app +/- def category_theory.tensoring_right_monoidal + def category_theory.unit_of_tensor_iso_unit + theorem category_theory.ε_app_obj + theorem category_theory.ε_hom_inv_app + theorem category_theory.ε_inv_app_obj + theorem category_theory.ε_inv_hom_app + theorem category_theory.ε_inv_naturality + theorem category_theory.ε_naturality + theorem category_theory.μ_hom_inv_app + theorem category_theory.μ_inv_hom_app + theorem category_theory.μ_inv_naturality + theorem category_theory.μ_naturality + theorem category_theory.μ_naturalityᵣ + theorem category_theory.μ_naturality₂ + theorem category_theory.μ_naturalityₗ Modified src/category_theory/monoidal/functor.lean +/- theorem category_theory.monoidal_functor.map_left_unitor +/- theorem category_theory.monoidal_functor.map_right_unitor +/- theorem category_theory.monoidal_functor.map_tensor + theorem category_theory.monoidal_functor.ε_hom_inv_id + theorem category_theory.monoidal_functor.ε_inv_hom_id + theorem category_theory.monoidal_functor.ε_iso_hom + theorem category_theory.monoidal_functor.μ_hom_inv_id + theorem category_theory.monoidal_functor.μ_inv_hom_id + theorem category_theory.monoidal_functor.μ_iso_hom +/- def category_theory.monoidal_functor.μ_nat_iso Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.inv_inv_app 2021-12-18 20:11:19 9f1b9bc feat(linear_algebra/determinant): more properties of the determinant of linear maps (#10809) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_equiv.det_coe_symm + theorem linear_map.bot_lt_ker_of_det_eq_zero + theorem linear_map.finite_dimensional_of_det_ne_one + theorem linear_map.is_unit_det + theorem linear_map.range_lt_top_of_det_eq_zero Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finite_dimensional.lean - theorem linear_map.is_unit_iff + theorem linear_map.is_unit_iff_ker_eq_bot + theorem linear_map.is_unit_iff_range_eq_top 2021-12-18 20:11:18 0d47369 feat(topology/metric/hausdorff_distance): more properties of cthickening (#10808) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem eventually_closed_ball_subset + theorem metric.bounded_range_of_tendsto Modified src/topology/metric_space/hausdorff_distance.lean + theorem is_compact.exists_inf_edist_eq_edist + theorem metric.bounded.cthickening + theorem metric.bounded.thickening + theorem metric.mem_cthickening_of_dist_le + theorem metric.mem_cthickening_of_edist_le 2021-12-18 18:09:36 a6179f6 feat(linear_algebra/affine_space/affine_equiv): isomorphism with the units (#10798) This adds: * `affine_equiv.equiv_units_affine_map` (the main point in this PR) * `affine_map.linear_hom` * `affine_equiv.linear_hom` * `simps` configuration for `affine_equiv`. In order to makes `simp` happy, we adjust the order of the implicit variables to all lemmas in this file, so that they match the order of the arguments to `affine_equiv`. The new definition can be used to majorly golf `homothety_units_mul_hom` ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean - theorem affine_equiv.const_vadd_apply - theorem affine_equiv.const_vadd_symm_apply + def affine_equiv.equiv_units_affine_map - theorem affine_equiv.linear_const_vadd + def affine_equiv.linear_hom - theorem affine_equiv.linear_vadd_const + def affine_equiv.simps.apply + def affine_equiv.simps.symm_apply - theorem affine_equiv.vadd_const_apply - theorem affine_equiv.vadd_const_symm_apply Modified src/linear_algebra/affine_space/affine_map.lean + def affine_map.linear_hom 2021-12-18 18:09:35 2c4e66f split(data/finset/*): Split `data.finset.card` and `data.finset.fin` off `data.finset.basic` (#10796) This moves stuff from `data.finset.basic` in two new files: * Stuff about `finset.card` goes into `data.finset.card` * Stuff about `finset.fin_range` and `finset.attach_fin` goes into `data.finset.fin`. I expect this file to be shortlived as I'm planning on killing `fin_range`. I reordered lemmas thematically and it appeared that there were two pairs of duplicated lemmas: * `finset.one_lt_card`, `finset.one_lt_card_iff`. They differ only for binder order. * `finset.card_union_eq`, `finset.card_disjoint_union`. They are literally the same. All are used so I will clean up in a later PR. I'm crediting: * Microsoft Corporation, Leonardo, Jeremy for 8dbee5b1ca9680a22ffe90751654f51d6852d7f0 * Chris Hughes for #231 * Scott for #3319 ESTIMATED CHANGES Modified src/combinatorics/set_family/compression/uv.lean Modified src/data/finset/basic.lean - def finset.attach_fin - def finset.card - theorem finset.card_attach - theorem finset.card_attach_fin - theorem finset.card_congr - theorem finset.card_cons - theorem finset.card_def - theorem finset.card_disjoint_union - theorem finset.card_empty - theorem finset.card_eq_of_bijective - theorem finset.card_eq_one - theorem finset.card_eq_succ - theorem finset.card_eq_three - theorem finset.card_eq_two - theorem finset.card_eq_zero - theorem finset.card_erase_eq_ite - theorem finset.card_erase_le - theorem finset.card_erase_lt_of_mem - theorem finset.card_erase_of_mem - theorem finset.card_filter_le - theorem finset.card_image_eq_iff_inj_on - theorem finset.card_image_le - theorem finset.card_image_of_inj_on - theorem finset.card_image_of_injective - theorem finset.card_insert_eq_ite - theorem finset.card_insert_le - theorem finset.card_insert_of_mem - theorem finset.card_insert_of_not_mem - theorem finset.card_le_card_of_inj_on - theorem finset.card_le_of_subset - theorem finset.card_le_one - theorem finset.card_le_one_iff - theorem finset.card_le_one_iff_subset_singleton - theorem finset.card_le_one_of_subsingleton - theorem finset.card_lt_card - theorem finset.card_map - theorem finset.card_mk - theorem finset.card_mono - theorem finset.card_ne_zero_of_mem - theorem finset.card_pos - theorem finset.card_range - theorem finset.card_sdiff - theorem finset.card_sdiff_add_card - theorem finset.card_singleton - theorem finset.card_singleton_inter - theorem finset.card_subtype - theorem finset.card_union_add_card_inter - theorem finset.card_union_eq - theorem finset.card_union_le - theorem finset.case_strong_induction_on - theorem finset.coe_fin_range - theorem finset.eq_of_subset_of_card_le - theorem finset.exists_intermediate_set - theorem finset.exists_ne_map_eq_of_card_lt_of_maps_to - theorem finset.exists_ne_of_one_lt_card - theorem finset.exists_smaller_set - theorem finset.exists_subset_or_subset_of_two_mul_lt_card - theorem finset.fiber_card_ne_zero_iff_mem_image - theorem finset.filter_card_add_filter_neg_card_eq_card - theorem finset.filter_card_eq - def finset.fin_range - theorem finset.fin_range_card - theorem finset.inj_on_of_card_image_eq - theorem finset.inj_on_of_surj_on_of_card_le - theorem finset.le_card_of_inj_on_range - theorem finset.length_to_list - theorem finset.lt_wf - theorem finset.mem_attach_fin - theorem finset.mem_fin_range - theorem finset.one_lt_card - theorem finset.one_lt_card_iff - theorem finset.pred_card_le_card_erase - def finset.strong_downward_induction - theorem finset.strong_downward_induction_eq - def finset.strong_downward_induction_on - theorem finset.strong_downward_induction_on_eq - def finset.strong_induction - theorem finset.strong_induction_eq - def finset.strong_induction_on - theorem finset.strong_induction_on_eq - theorem finset.surj_on_of_inj_on_of_card_le - theorem list.card_to_finset - theorem list.to_finset_card_le - theorem list.to_finset_card_of_nodup - theorem multiset.to_finset_card_le - theorem multiset.to_finset_card_of_nodup +/- theorem multiset.to_finset_map Added src/data/finset/card.lean + def finset.card + theorem finset.card_attach + theorem finset.card_congr + theorem finset.card_cons + theorem finset.card_def + theorem finset.card_disjoint_union + theorem finset.card_empty + theorem finset.card_eq_of_bijective + theorem finset.card_eq_one + theorem finset.card_eq_succ + theorem finset.card_eq_three + theorem finset.card_eq_two + theorem finset.card_eq_zero + theorem finset.card_erase_eq_ite + theorem finset.card_erase_le + theorem finset.card_erase_lt_of_mem + theorem finset.card_erase_of_mem + theorem finset.card_filter_le + theorem finset.card_image_eq_iff_inj_on + theorem finset.card_image_le + theorem finset.card_image_of_inj_on + theorem finset.card_image_of_injective + theorem finset.card_insert_eq_ite + theorem finset.card_insert_le + theorem finset.card_insert_of_mem + theorem finset.card_insert_of_not_mem + theorem finset.card_le_card_of_inj_on + theorem finset.card_le_of_subset + theorem finset.card_le_one + theorem finset.card_le_one_iff + theorem finset.card_le_one_iff_subset_singleton + theorem finset.card_le_one_of_subsingleton + theorem finset.card_lt_card + theorem finset.card_map + theorem finset.card_mk + theorem finset.card_mono + theorem finset.card_ne_zero_of_mem + theorem finset.card_pos + theorem finset.card_range + theorem finset.card_sdiff + theorem finset.card_sdiff_add_card + theorem finset.card_singleton + theorem finset.card_singleton_inter + theorem finset.card_subtype + theorem finset.card_union_add_card_inter + theorem finset.card_union_eq + theorem finset.card_union_le + theorem finset.case_strong_induction_on + theorem finset.eq_of_subset_of_card_le + theorem finset.exists_intermediate_set + theorem finset.exists_ne_map_eq_of_card_lt_of_maps_to + theorem finset.exists_ne_of_one_lt_card + theorem finset.exists_smaller_set + theorem finset.exists_subset_or_subset_of_two_mul_lt_card + theorem finset.fiber_card_ne_zero_iff_mem_image + theorem finset.filter_card_add_filter_neg_card_eq_card + theorem finset.filter_card_eq + theorem finset.inj_on_of_card_image_eq + theorem finset.inj_on_of_surj_on_of_card_le + theorem finset.le_card_of_inj_on_range + theorem finset.length_to_list + theorem finset.lt_wf + theorem finset.one_lt_card + theorem finset.one_lt_card_iff + theorem finset.pred_card_le_card_erase + def finset.strong_downward_induction + theorem finset.strong_downward_induction_eq + def finset.strong_downward_induction_on + theorem finset.strong_downward_induction_on_eq + def finset.strong_induction + theorem finset.strong_induction_eq + def finset.strong_induction_on + theorem finset.strong_induction_on_eq + theorem finset.surj_on_of_inj_on_of_card_le + theorem list.card_to_finset + theorem list.to_finset_card_le + theorem list.to_finset_card_of_nodup + theorem multiset.card_to_finset + theorem multiset.to_finset_card_le + theorem multiset.to_finset_card_of_nodup Added src/data/finset/fin.lean + def finset.attach_fin + theorem finset.card_attach_fin + theorem finset.coe_fin_range + def finset.fin_range + theorem finset.fin_range_card + theorem finset.mem_attach_fin + theorem finset.mem_fin_range Modified src/data/finset/nat_antidiagonal.lean Modified src/data/finset/option.lean Modified src/data/finset/prod.lean Modified src/data/fintype/basic.lean Modified src/group_theory/perm/support.lean 2021-12-18 18:09:34 fa46ef1 feat(linear_algebra/affine_space/combination): vsub distributivity lemmas (#10786) Add lemmas about weighted sums of `-ᵥ` expressions in terms of `weighted_vsub_of_point`, `weighted_vsub` and `affine_combination`, with special cases where the points on one side of the subtractions are constant, and lemmas about those three functions for constant points used to prove those special cases. These were suggested by one of the lemmas in #10632; the lemma `affine_basis.vsub_eq_coord_smul_sum` is a very specific case, but showed up that these distributivity lemmas were missing (and should follow immediately from `sum_smul_const_vsub_eq_vsub_affine_combination` in this PR). ESTIMATED CHANGES Modified src/linear_algebra/affine_space/combination.lean + theorem finset.affine_combination_apply_const + theorem finset.sum_smul_const_vsub_eq_neg_weighted_vsub + theorem finset.sum_smul_const_vsub_eq_sub_weighted_vsub_of_point + theorem finset.sum_smul_const_vsub_eq_vsub_affine_combination + theorem finset.sum_smul_vsub_const_eq_affine_combination_vsub + theorem finset.sum_smul_vsub_const_eq_weighted_vsub + theorem finset.sum_smul_vsub_const_eq_weighted_vsub_of_point_sub + theorem finset.sum_smul_vsub_eq_affine_combination_vsub + theorem finset.sum_smul_vsub_eq_weighted_vsub_of_point_sub + theorem finset.sum_smul_vsub_eq_weighted_vsub_sub + theorem finset.weighted_vsub_apply_const + theorem finset.weighted_vsub_of_point_apply_const 2021-12-18 18:09:32 ecec43a feat(algebraic_geometry/open_immersion): Easy results about open immersions. (#10776) ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion.lean + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.LocallyRingedSpace_to_LocallyRingedSpace + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.SheafedSpace_to_SheafedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_hom + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_hom_val + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_LocallyRingedSpace_to_SheafedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace + def algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom_base + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_hom_c + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_SheafedSpace_to_PresheafedSpace + theorem algebraic_geometry.SheafedSpace.is_open_immersion.of_stalk_iso 2021-12-18 18:09:31 6e59fbe feat(field_theory/splitting_field): generalize some results from field to domain (#10726) This PR does a few things generalizing / golfing facts related to polynomials and splitting fields. - Generalize some results in `data.polynomial.field_division` to division rings - generalize `C_leading_coeff_mul_prod_multiset_X_sub_C` from a field to a domain - same for `prod_multiset_X_sub_C_of_monic_of_roots_card_eq` - add a supporting useful lemma `roots_map_of_injective_card_eq_total_degree` saying that if we already have a full (multi)set of roots over a domain, passing along an injection gives the set of roots of the mapped polynomial Inspired by needs of flt-regular. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.count_map + theorem multiset.count_map_eq_count' Modified src/data/polynomial/field_division.lean +/- theorem polynomial.prod_multiset_root_eq_finset_root +/- theorem polynomial.roots_C_mul +/- theorem polynomial.roots_normalize Modified src/data/polynomial/ring_division.lean + theorem polynomial.count_map_roots + theorem polynomial.le_root_multiplicity_map + theorem polynomial.roots_map_of_injective_card_eq_total_degree Modified src/field_theory/splitting_field.lean +/- theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C + theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C_of_field +/- theorem polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq + theorem polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq_of_field 2021-12-18 18:09:30 fec084c feat(order/cover): The covering relation (#10676) This defines `a ⋖ b` to mean that `a < b` and there is no element in between. It is generally useful, but in particular in the context of polytopes and successor orders. ESTIMATED CHANGES Modified src/order/atoms.lean + theorem bot_covers_iff + theorem bot_covers_top + theorem covers_top_iff +/- theorem eq_bot_or_eq_of_le_atom +/- theorem eq_top_or_eq_of_coatom_le +/- theorem is_atom.Iic +/- theorem is_atom.of_is_atom_coe_Iic +/- theorem is_coatom.Ici +/- theorem is_coatom.of_is_coatom_coe_Ici Modified src/order/basic.lean + theorem eq_of_ge_of_not_gt + theorem eq_of_le_of_not_lt Added src/order/cover.lean + theorem covers.Icc_eq + theorem covers.Ico_eq + theorem covers.Ioc_eq + theorem covers.Ioo_eq + theorem covers.le + theorem covers.lt + theorem covers.ne' + def covers + theorem not_covers + theorem not_covers_iff + theorem to_dual_covers_to_dual_iff Modified src/order/succ_pred.lean + theorem covers.pred_eq + theorem covers.succ_eq + theorem covers_iff_pred_eq + theorem covers_iff_succ_eq + theorem pred_order.pred_covers + theorem pred_order.pred_covers_of_nonempty_Iio + theorem pred_succ + theorem pred_succ_of_nonempty_Ioi + theorem succ_order.covers_succ + theorem succ_order.covers_succ_of_nonempty_Ioi + theorem succ_pred + theorem succ_pred_of_nonempty_Iio 2021-12-18 16:15:43 011203d feat(algebra/group/inj_surj): _pow definitions for surjective too (#10832) We already have these three variants for the injective counterparts, added in #10152. ESTIMATED CHANGES Modified src/algebra/group/inj_surj.lean 2021-12-18 16:15:42 5915254 feat(data/matrix/rank): rank of a matrix (#10826) ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/data/matrix/rank.lean + theorem matrix.rank_eq_finrank_range_to_lin + theorem matrix.rank_le_card_height + theorem matrix.rank_le_card_width + theorem matrix.rank_le_height + theorem matrix.rank_le_width + theorem matrix.rank_mul_le + theorem matrix.rank_of_is_unit + theorem matrix.rank_one + theorem matrix.rank_unit + theorem matrix.rank_zero Modified src/linear_algebra/matrix/to_lin.lean 2021-12-18 16:15:41 915e2b5 feat(linear_algebra/orientation): add orientation.map (#10815) This also adds `alternating_map.dom_lcongr` following the naming established by `finsupp.dom_lcongr`. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean +/- theorem alternating_map.comp_linear_equiv_eq_zero_iff + def alternating_map.dom_lcongr + theorem alternating_map.dom_lcongr_refl + theorem alternating_map.dom_lcongr_symm + theorem alternating_map.dom_lcongr_trans Modified src/linear_algebra/orientation.lean + def orientation.map + theorem orientation.map_apply + theorem orientation.map_refl + theorem orientation.map_symm 2021-12-18 16:15:40 e70faf3 feat(ring_theory/prinicipal_ideal_domain): Bézout's lemma for PIDs (#10810) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/ring_theory/principal_ideal_domain.lean + theorem exists_gcd_eq_mul_add_mul + theorem gcd_dvd_iff_exists 2021-12-18 16:15:39 47c676e feat(linear_algebra/affine_space/affine_subspace): affine_subspace.comap (#10795) This copies a handful of lemmas from `group_theory/subgroup/basic.lean` to get things started. ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.coe_comap + theorem affine_subspace.coe_injective + theorem affine_subspace.coe_map + def affine_subspace.comap + theorem affine_subspace.comap_comap + theorem affine_subspace.comap_id + theorem affine_subspace.comap_inf + theorem affine_subspace.comap_mono + theorem affine_subspace.comap_supr + theorem affine_subspace.comap_top - theorem affine_subspace.ext + theorem affine_subspace.gc_map_comap + theorem affine_subspace.le_comap_map - theorem affine_subspace.map_coe + theorem affine_subspace.map_comap_le + theorem affine_subspace.map_id + theorem affine_subspace.map_le_iff_le_comap + theorem affine_subspace.map_map + theorem affine_subspace.map_sup + theorem affine_subspace.map_supr + theorem affine_subspace.mem_comap + theorem affine_subspace.mem_map 2021-12-18 16:15:38 00454f2 feat(topology/algebra/mul_action): add an instance in the presence of `is_central_scalar` (#10787) ESTIMATED CHANGES Modified src/topology/algebra/mul_action.lean 2021-12-18 16:15:38 5603398 feat(ring_theory/local_properties): Being finite / of finite type is local. (#10775) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.span_eq_top_iff_finite Modified src/ring_theory/ideal/operations.lean + theorem submodule.mem_of_span_eq_top_of_smul_pow_mem Modified src/ring_theory/local_properties.lean + theorem finite_of_localization_span + theorem finite_type_of_localization_span + theorem is_localization.lift_mem_adjoin_finset_integer_multiple + theorem is_localization.smul_mem_finset_integer_multiple_span + theorem localization_away_map_finite + theorem localization_away_map_finite_type + theorem localization_finite + theorem localization_finite_type + theorem multiple_mem_adjoin_of_mem_localization_adjoin + theorem multiple_mem_span_of_mem_localization_span + theorem ring_hom.localization_away_of_localization_preserves + def ring_hom.localization_preserves + def ring_hom.of_localization_finite_span + def ring_hom.of_localization_span + theorem ring_hom.of_localization_span_iff_finite Modified src/ring_theory/localization.lean + def is_localization.away.map + def localization.away_lift + def localization.away_map 2021-12-18 16:15:36 c10a872 feat(order): define a `rel_hom_class` for types of relation-preserving maps (#10755) Use the design of #9888 to define a class `rel_hom_class F r s` for types of maps such that all `f : F` satisfy `r a b → s (f a) (f b)`. Requested by @YaelDillies. `order_hom_class F α β` is defined as an abbreviation for `rel_hom_class F (≤) (≤)`. ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/order/compactly_generated.lean Modified src/order/hom/basic.lean +/- theorem order_hom.ext + def order_hom_class Modified src/order/rel_iso.lean +/- theorem rel_embedding.coe_fn_injective +/- theorem rel_embedding.ext +/- theorem rel_embedding.ext_iff +/- theorem rel_hom.coe_fn_injective - theorem rel_hom.map_inf - theorem rel_hom.map_rel - theorem rel_hom.map_sup + theorem rel_hom_class.map_inf + theorem rel_hom_class.map_sup +/- theorem rel_iso.coe_fn_injective +/- theorem rel_iso.ext +/- theorem rel_iso.ext_iff Modified src/ring_theory/int/basic.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/unique_factorization_domain.lean 2021-12-18 14:23:59 af682d3 feat(algebraic_geometry): A scheme is reduced iff its stalks are reduced. (#10879) ESTIMATED CHANGES Modified src/algebraic_geometry/properties.lean + theorem algebraic_geometry.is_reduced_of_stalk_is_reduced Modified src/ring_theory/nilpotent.lean + theorem is_nilpotent.mk 2021-12-18 14:23:58 65118e5 feat(analysis/calculus/deriv): add `has_deriv_at.tendsto_punctured_nhds` (#10877) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_at.tendsto_punctured_nhds Modified src/analysis/special_functions/trigonometric/complex_deriv.lean 2021-12-18 14:23:57 0108884 feat(ring_theory/integral_closure): A subalgebra is contained in the integral closure iff it is integral (#10874) A subalgebra is contained in the integral closure iff it is integral. ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem le_integral_closure_iff_is_integral 2021-12-18 14:23:56 7de517b feat(algebra/algebra/subalgebra): Elements of supremum (#10872) Adds a few lemmas about elements of a supremum of subalgebras (essentially copied from the analogous lemmas in `group_theory/subgroup.basic`). ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem algebra.mem_sup_left + theorem algebra.mem_sup_right + theorem algebra.mul_mem_sup 2021-12-18 14:23:55 df11302 feat(algebra/algebra/subalgebra): Lemmas about `alg_hom.range` (#10871) This PR adds a few lemmas about `alg_hom.range`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem alg_hom.range_comp + theorem alg_hom.range_comp_le_range + theorem algebra.range_id 2021-12-18 14:23:54 ac10136 feat(algebraic_geometry): The underlying topological space of a Scheme is T0 (#10869) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean Modified src/algebraic_geometry/properties.lean Modified src/logic/basic.lean + theorem not_xor + theorem xor_iff_not_iff Modified src/topology/separation.lean + def indistinguishable + theorem indistinguishable_iff_closed + theorem indistinguishable_iff_closure + theorem subtype_indistinguishable_iff + theorem t0_space_def + theorem t0_space_iff_distinguishable + theorem t0_space_iff_or_not_mem_closure + theorem t0_space_of_injective_of_continuous 2021-12-18 14:23:53 cb0a6f7 feat(data/int): various lemmas (#10862) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.abs_sign_of_nonzero + theorem int.is_unit_iff_abs_eq + theorem int.of_nat_is_unit Modified src/data/int/parity.lean + theorem int.four_dvd_add_or_sub_of_odd Modified src/ring_theory/int/basic.lean + theorem int.exists_prime_and_dvd 2021-12-18 14:23:52 04e2f5f feat(algebra/group/basic): add a few lemmas (#10856) * move `inv_eq_one`, `one_eq_inv`, and `inv_ne_one` up; * move `div_one'` below `div_eq_one` to golf the proof; * add `div_eq_inv_iff`; * golf 2 proofs. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem div_eq_inv_self +/- theorem inv_eq_one +/- theorem inv_ne_one +/- theorem one_eq_inv 2021-12-18 14:23:51 5859ec0 feat(analysis/normed_space/lattice_ordered_group): prove `order_closed_topology` for `normed_lattice_add_comm_group` (#10838) ESTIMATED CHANGES Modified src/analysis/normed_space/lattice_ordered_group.lean + theorem continuous_neg' + theorem continuous_pos + theorem is_closed_le_of_is_closed_nonneg + theorem is_closed_nonneg + theorem lipschitz_with_pos + theorem lipschitz_with_sup_right + theorem norm_inf_sub_inf_le_norm + theorem norm_sup_sub_sup_le_norm 2021-12-18 12:49:52 6353d6b chore(*): more assorted proof simplifications (#10863) A few more random small golfs found by linters ESTIMATED CHANGES Modified src/analysis/normed_space/spectrum.lean Modified src/data/dfinsupp.lean Modified src/data/ordmap/ordset.lean Modified src/data/polynomial/field_division.lean 2021-12-18 11:01:55 0e995a3 refactor(*): kill a few uses of finish (#10860) ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean Modified src/analysis/convex/basic.lean +/- theorem convex_empty Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/data/set/constructions.lean Modified src/data/set/lattice.lean 2021-12-18 10:22:17 ec2f350 feat(field_theory/intermediate_field): Range of `intermediate_field.val` (#10873) The range of the algebra homomorphism `S.val` equals `S.to_subalgebra`. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.range_val 2021-12-18 10:22:16 718ea93 feat(category_theory): Glue data (#10436) ESTIMATED CHANGES Added src/category_theory/glue_data.lean + def category_theory.glue_data.diagram + theorem category_theory.glue_data.diagram_L + theorem category_theory.glue_data.diagram_R + theorem category_theory.glue_data.diagram_fst + theorem category_theory.glue_data.diagram_fst_from + def category_theory.glue_data.diagram_iso + theorem category_theory.glue_data.diagram_iso_app_left + theorem category_theory.glue_data.diagram_iso_app_right + theorem category_theory.glue_data.diagram_iso_hom_app_left + theorem category_theory.glue_data.diagram_iso_hom_app_right + theorem category_theory.glue_data.diagram_iso_inv_app_left + theorem category_theory.glue_data.diagram_iso_inv_app_right + theorem category_theory.glue_data.diagram_left + theorem category_theory.glue_data.diagram_right + theorem category_theory.glue_data.diagram_snd + theorem category_theory.glue_data.diagram_snd_from + theorem category_theory.glue_data.glue_condition + def category_theory.glue_data.glued + def category_theory.glue_data.map_glue_data + def category_theory.glue_data.sigma_opens + theorem category_theory.glue_data.t'_comp_eq_pullback_symmetry + theorem category_theory.glue_data.t'_iij + theorem category_theory.glue_data.t'_iji + theorem category_theory.glue_data.t'_inv + theorem category_theory.glue_data.t'_jii + theorem category_theory.glue_data.t_inv + def category_theory.glue_data.ι + def category_theory.glue_data.π + structure category_theory.glue_data 2021-12-18 06:26:17 a252427 chore(algebra/algebra/basic): fix instances names to make doc links work (#10834) The blank lines avoid sentences being pulled into the bulleted list above them. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra_map_rat_rat + theorem algebra_rat_subsingleton - theorem rat.algebra_map_rat_rat - theorem rat.algebra_rat_subsingleton Modified src/number_theory/bernoulli.lean 2021-12-17 23:05:39 2043748 feat(data/finset/basic): add to_list_insert and to_list_cons (#10840) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.to_list_cons + theorem finset.to_list_insert 2021-12-17 21:25:06 fc09b17 feat(measure_theory/integral/bochner): prove `set_integral_eq_subtype` (#10858) Relate integral w.r.t. `μ.restrict s` and w.r.t. `comap (coe : s → α) μ`. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.set_integral_eq_subtype 2021-12-17 19:23:39 86493f1 feat(data/nat): decidable exists le instance (#10857) Adds the `le` instance for a corresponding `lt` instance above. ESTIMATED CHANGES Modified src/data/nat/basic.lean 2021-12-17 19:23:38 70f4ba0 feat(algebra/group/hom): generalize `semiconj_by.map` and `commute.map` (#10854) This generalizes the results in 2 ways: from `monoid_hom` to `mul_hom` and from `mul_hom` to `mul_hom_class`. For use in #10783. ESTIMATED CHANGES Modified src/algebra/group/hom.lean 2021-12-17 19:23:37 0b5f0a2 feat(data/finset/basic): add ite_subset_union, inter_subset_ite for finset (#10586) Just a couple of lemmas to simplify expressions involving ite and union / inter on finsets, note that this is not related to `set.ite`. From flt-regular. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.inter_subset_ite + theorem finset.ite_subset_union Modified src/order/lattice.lean + theorem inf_le_ite + theorem ite_le_sup 2021-12-17 17:22:44 e5a844e feat(data/finsupp/basic): add two versions of `finsupp.mul_prod_erase` (#10708) Adding a counterpart for `finsupp` of `finset.mul_prod_erase` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.mul_prod_erase' + theorem finsupp.mul_prod_erase 2021-12-17 15:21:19 c9fe6d1 feat(algebra/algebra): instantiate `ring_hom_class` for `alg_hom` (#10853) This PR provides a `ring_hom_class` instance for `alg_hom`, to be used in #10783. I'm not quite finished with my design of morphism classes for linear maps, but I expect this instance will stick around anyway: to avoid a dangerous instance `alg_hom_class F R A B → ring_hom_class F A B` (where the base ring `R` can't be inferred), `alg_hom_class` will probably have to be unbundled and take a `ring_hom_class` as a parameter. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem alg_hom.coe_fn_inj +/- theorem alg_hom.coe_fn_injective +/- theorem alg_hom.coe_to_add_monoid_hom +/- theorem alg_hom.coe_to_monoid_hom +/- theorem alg_hom.ext +/- theorem alg_hom.ext_iff +/- theorem alg_hom.map_add +/- theorem alg_hom.map_bit0 +/- theorem alg_hom.map_bit1 +/- theorem alg_hom.map_mul +/- theorem alg_hom.map_neg +/- theorem alg_hom.map_one +/- theorem alg_hom.map_pow +/- theorem alg_hom.map_sub +/- theorem alg_hom.map_zero 2021-12-17 15:21:18 ba24b38 feat(ring_theory/noetherian): fg_pi (#10845) ESTIMATED CHANGES Modified src/linear_algebra/free_module/strong_rank_condition.lean Modified src/linear_algebra/pi.lean + theorem submodule.pi_empty + theorem submodule.pi_mono + theorem submodule.pi_top Modified src/ring_theory/finiteness.lean Modified src/ring_theory/noetherian.lean + theorem submodule.fg_pi 2021-12-17 13:26:57 5a59800 feat(data/set/function): Cancelling composition on a set (#10803) A few stupid lemmas ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.eq_on.cancel_left + theorem set.eq_on.cancel_right + theorem set.eq_on.comp_left + theorem set.eq_on.comp_right + theorem set.eq_on_comp_right_iff + theorem set.image_eq_iff_surj_on_maps_to + theorem set.inj_on.cancel_left + theorem set.surj_on.cancel_right 2021-12-17 12:31:31 6838233 feat(combinatorics/configuration): New file (#10773) This PR defines abstract configurations of points and lines, and provides some basic definitions. Actual results are in the followup PR. ESTIMATED CHANGES Added src/combinatorics/configuration.lean + def configuration.dual + theorem configuration.has_lines.exists_unique_line + theorem configuration.has_points.exists_unique_point 2021-12-17 12:31:30 8743573 feat(data/nat/count): The count function on naturals (#9457) Defines `nat.count` a generic counting function on `ℕ`, computing how many numbers under `k` satisfy a given predicate". Co-authored by: Yaël Dillies, yael.dillies@gmail.com Vladimir Goryachev, gor050299@gmail.com Kyle Miller, kmill31415@gmail.com Scott Morrison, scott@tqft.net Eric Rodriguez, ericrboidi@gmail.com ESTIMATED CHANGES Added src/data/nat/count.lean + def nat.count + theorem nat.count_add' + theorem nat.count_add + theorem nat.count_eq_card_filter_range + theorem nat.count_eq_card_fintype + theorem nat.count_le_cardinal + theorem nat.count_mono_left + theorem nat.count_monotone + theorem nat.count_one + def nat.count_set.fintype + theorem nat.count_succ' + theorem nat.count_succ + theorem nat.count_succ_eq_count_iff + theorem nat.count_succ_eq_succ_count_iff + theorem nat.count_zero + theorem nat.lt_of_count_lt_count 2021-12-17 10:49:01 081cb8a chore(algebra/associated): split off dependencies of `big_operators` (#10848) This prepares for the replacement of `nat.prime` with `_root_.prime` by reducing the amount of dependencies needed to define `_root_.prime`. Note that there wouldn't be an import loop without this change, just that `data/nat/prime.lean` would have a bigger amount of imports. Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/nat.2Eprime ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem associates.exists_mem_multiset_le_of_prime - theorem associates.prod_eq_one_iff - theorem associates.prod_le_prod - theorem associates.prod_mk - theorem associates.rel_associated_iff_map_eq_map - theorem exists_associated_mem_of_dvd_prod - theorem multiset.prod_ne_zero_of_prime - theorem prime.exists_mem_finset_dvd - theorem prime.exists_mem_multiset_dvd - theorem prime.exists_mem_multiset_map_dvd Added src/algebra/big_operators/associated.lean + theorem associates.exists_mem_multiset_le_of_prime + theorem associates.prod_eq_one_iff + theorem associates.prod_le_prod + theorem associates.prod_mk + theorem associates.rel_associated_iff_map_eq_map + theorem exists_associated_mem_of_dvd_prod + theorem multiset.prod_ne_zero_of_prime + theorem prime.exists_mem_finset_dvd + theorem prime.exists_mem_multiset_dvd + theorem prime.exists_mem_multiset_map_dvd Modified src/ring_theory/unique_factorization_domain.lean 2021-12-17 10:49:00 862a68c feat(algebra/big_operators/basic): add finset.prod_to_list (#10842) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_to_list 2021-12-17 09:42:27 5558fd9 feat(topology/subset_properties): open/closed sets are locally compact spaces (#10844) * add `inducing.image_mem_nhds_within`; * move `inducing.is_compact_iff` up, use it to prove `embedding.is_compact_iff_is_compact_image`; * prove `closed_embedding.is_compact_preimage`, use it to prove `closed_embedding.tendsto_cocompact`; * prove `closed_embedding.locally_compact_space`, `open_embedding.locally_compact_space`; * specialize to `is_closed.locally_compact_space`, `is_open.locally_compact_space`; * rename `locally_finite.countable_of_sigma_compact` to `locally_finite.countable_univ`, provide `locally_finite.encodable`. ESTIMATED CHANGES Modified src/topology/maps.lean + theorem inducing.image_mem_nhds_within Modified src/topology/subset_properties.lean + theorem closed_embedding.is_compact_preimage - theorem locally_finite.countable_of_sigma_compact 2021-12-17 02:13:44 b100af6 feat(combinatorics/simple_graph/basic): Incidence set lemmas (#10839) Some more `simple_graph.incidence_set` API. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.adj_iff_exists_edge_coe + theorem simple_graph.adj_of_mem_incidence_set +/- theorem simple_graph.adj_symm + theorem simple_graph.edge_mem_incidence_set_iff + theorem simple_graph.incidence_set_inter_incidence_set + theorem simple_graph.incidence_set_inter_incidence_set_subset +/- theorem simple_graph.incidence_set_subset +/- theorem simple_graph.mem_edge_set + theorem simple_graph.mk_mem_incidence_set_iff + theorem simple_graph.mk_mem_incidence_set_left_iff + theorem simple_graph.mk_mem_incidence_set_right_iff +/- theorem simple_graph.ne_of_adj 2021-12-16 21:36:33 9f9015c refactor(category_theory/sites/*): Redefine the category of sheaves. (#10678) This refactor redefines sheaves and morphisms of sheaves using bespoke structures. This is an attempt to make automation more useful when dealing with categories of sheaves. See the associated [zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Redefining.20Sheaves/near/263308542) ESTIMATED CHANGES Modified src/category_theory/sites/adjunction.lean - theorem category_theory.Sheaf.adjunction_counit_app - theorem category_theory.Sheaf.adjunction_hom_equiv_apply - theorem category_theory.Sheaf.adjunction_hom_equiv_symm_apply - theorem category_theory.Sheaf.adjunction_to_types_counit_app + theorem category_theory.Sheaf.adjunction_to_types_counit_app_val - theorem category_theory.Sheaf.adjunction_to_types_hom_equiv_apply - theorem category_theory.Sheaf.adjunction_to_types_hom_equiv_symm_apply - theorem category_theory.Sheaf.adjunction_to_types_unit_app + theorem category_theory.Sheaf.adjunction_to_types_unit_app_val - theorem category_theory.Sheaf.adjunction_unit_app Modified src/category_theory/sites/cover_lifting.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/category_theory/sites/dense_subsite.lean Modified src/category_theory/sites/limits.lean Modified src/category_theory/sites/sheaf.lean - theorem category_theory.Sheaf.comp_app + structure category_theory.Sheaf.hom - theorem category_theory.Sheaf.id_app + structure category_theory.Sheaf - def category_theory.Sheaf - theorem category_theory.Sheaf_to_presheaf_obj +/- def category_theory.sheaf_over Modified src/category_theory/sites/sheaf_of_types.lean - theorem category_theory.SheafOfTypes.comp_app + structure category_theory.SheafOfTypes.hom - theorem category_theory.SheafOfTypes.id_app + structure category_theory.SheafOfTypes - def category_theory.SheafOfTypes - theorem category_theory.SheafOfTypes_to_presheaf_obj Modified src/category_theory/sites/sheafification.lean - theorem category_theory.sheafification_adjunction_unit_app - theorem category_theory.sheafification_iso_hom - theorem category_theory.sheafification_iso_inv Modified src/category_theory/sites/types.lean +/- theorem category_theory.yoneda'_comp Modified src/category_theory/sites/whiskering.lean Modified src/topology/sheaves/sheaf_condition/sites.lean 2021-12-16 17:52:29 601f2ab fix(ring_theory/ideal/basic): remove universe restriction (#10843) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.mem_infi +/- theorem ideal.mem_supr_of_mem 2021-12-16 16:16:13 905d887 chore(field_theory/ratfunc): to_fraction_ring_ring_equiv (#10806) Rename the underlying `ratfunc.aux_equiv` for discoverability. ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean - def ratfunc.aux_equiv - theorem ratfunc.aux_equiv_eq + def ratfunc.to_fraction_ring_ring_equiv + theorem ratfunc.to_fraction_ring_ring_equiv_symm_eq 2021-12-16 10:58:20 eeef771 chore(field_theory/ratfunc): has_scalar in terms of localization (#10828) Now that `localization.has_scalar` is general enough, fix a TODO ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean + theorem ratfunc.of_fraction_ring_smul + theorem ratfunc.to_fraction_ring_smul 2021-12-16 10:58:19 542471f feat(data/set/function): Congruence lemmas for `monotone_on` and friends (#10817) Congruence lemmas for `monotone_on`, `antitone_on`, `strict_mono_on`, `strict_anti_on` using `set.eq_on`. `data.set.function` imports `order.monotone` so we must put them here. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem antitone_on.congr + theorem monotone_on.congr + theorem set.eq_on.congr_antitone_on + theorem set.eq_on.congr_monotone_on + theorem set.eq_on.congr_strict_anti_on + theorem set.eq_on.congr_strict_mono_on + theorem strict_anti_on.congr + theorem strict_mono_on.congr 2021-12-16 10:58:18 b5b19a6 feat(ring_theory/local_property): Being reduced is a local property. (#10734) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem submodule.mem_annihilator_span + theorem submodule.mem_annihilator_span_singleton Added src/ring_theory/local_properties.lean + theorem eq_zero_of_localization + theorem ideal_eq_zero_of_localization + theorem is_reduced_of_localization_maximal + theorem localization_is_reduced + def localization_preserves + def of_localization_maximal Modified src/ring_theory/localization.lean + theorem is_localization.map_eq_zero_iff Modified src/ring_theory/nilpotent.lean + theorem is_nilpotent.map 2021-12-16 09:07:54 68ced9a chore(analysis/mean_inequalities_pow): nnreal versions of some ennreal inequalities (#10836) Make `nnreal` versions of the existing `ennreal` lemmas ```lean lemma add_rpow_le_rpow_add {p : ℝ} (a b : ℝ≥0∞) (hp1 : 1 ≤ p) : a ^ p + b ^ p ≤ (a + b) ^ p ``` and similar, introduced by @RemyDegenne in #5828. Refactor the proofs of the `ennreal` versions to pass through these. ESTIMATED CHANGES Modified src/analysis/mean_inequalities_pow.lean + theorem nnreal.add_rpow_le_rpow_add + theorem nnreal.rpow_add_le_add_rpow + theorem nnreal.rpow_add_rpow_le + theorem nnreal.rpow_add_rpow_le_add Modified src/analysis/special_functions/pow.lean + theorem nnreal.le_rpow_one_div_iff + theorem nnreal.rpow_le_self_of_le_one Modified src/order/bounded_order.lean + theorem eq_bot_or_bot_lt + theorem eq_top_or_lt_top 2021-12-16 09:07:53 d212f3e feat(measure_theory/measure): new class is_finite_measure_on_compacts (#10827) We have currently four independent type classes guaranteeing that a measure of compact sets is finite: `is_locally_finite_measure`, `is_regular_measure`, `is_haar_measure` and `is_add_haar_measure`. Instead of repeting lemmas for all these classes, we introduce a new typeclass saying that a measure is finite on compact sets. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/group/basic.lean - theorem is_compact.haar_lt_top Modified src/measure_theory/group/prod.lean Modified src/measure_theory/measure/content.lean Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/haar_lebesgue.lean - theorem measure_theory.measure.add_haar_ball_lt_top - theorem measure_theory.measure.add_haar_closed_ball_lt_top Modified src/measure_theory/measure/measure_space.lean +/- theorem is_compact.measure_lt_top + theorem measure_theory.measure_ball_lt_top + theorem measure_theory.measure_closed_ball_lt_top +/- theorem metric.bounded.measure_lt_top Modified src/measure_theory/measure/regular.lean 2021-12-16 08:30:05 87e2f24 feat(category_theory/adjunction/evaluation): Evaluation has a left and a right adjoint. (#10793) ESTIMATED CHANGES Added src/category_theory/adjunction/evaluation.lean + def category_theory.evaluation_adjunction_left + def category_theory.evaluation_adjunction_right + def category_theory.evaluation_left_adjoint + def category_theory.evaluation_right_adjoint + theorem category_theory.nat_trans.epi_iff_app_epi + theorem category_theory.nat_trans.mono_iff_app_mono 2021-12-16 02:33:43 8e4b3b0 chore(data/polynomial/field_division): beta-reduce (#10835) ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean 2021-12-15 21:49:21 5a835b7 chore(*): tweaks taken from gh-8889 (#10829) That PR is stale, but contained some trivial changes we should just take. ESTIMATED CHANGES Modified src/analysis/complex/circle.lean Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.coe_pow +/- theorem quotient_group.coe_zpow 2021-12-15 21:49:20 8218a78 feat(analysis/normed_space/basic): formula for `c • sphere x r` (#10814) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem normed_space.sphere_nonempty + theorem smul_sphere' + theorem smul_sphere Modified src/topology/metric_space/basic.lean + theorem metric.sphere_zero 2021-12-15 21:49:19 b82c0d2 feat(topology/metric_space/isometry): (pre)image of a (closed) ball or a sphere (#10813) Also specialize for translations in a normed add torsor. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean + def isometric.const_vadd + def isometric.const_vsub + def isometric.vadd_const + theorem vadd_ball + theorem vadd_closed_ball + theorem vadd_sphere Modified src/analysis/normed_space/mazur_ulam.lean Modified src/topology/metric_space/isometry.lean + theorem isometric.image_ball + theorem isometric.image_closed_ball + theorem isometric.image_emetric_ball + theorem isometric.image_emetric_closed_ball + theorem isometric.image_sphere + theorem isometric.preimage_ball + theorem isometric.preimage_closed_ball + theorem isometric.preimage_emetric_ball + theorem isometric.preimage_emetric_closed_ball + theorem isometric.preimage_sphere +/- theorem isometry.diam_image +/- theorem isometry.diam_range + theorem isometry.maps_to_ball + theorem isometry.maps_to_closed_ball + theorem isometry.maps_to_emetric_ball + theorem isometry.maps_to_emetric_closed_ball + theorem isometry.maps_to_sphere +/- theorem isometry.tendsto_nhds_iff 2021-12-15 21:49:18 21c9d3b feat(topology/metric_space/hausdorff_distance): add more topological properties API to thickenings (#10661) More lemmas about thickenings, especially topological properties, still in preparation for the portmanteau theorem on characterizations of weak convergence of Borel probability measures. ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.closure_eq_Inter_cthickening' +/- theorem metric.closure_eq_Inter_cthickening + theorem metric.closure_eq_Inter_thickening' + theorem metric.closure_eq_Inter_thickening +/- theorem metric.closure_subset_cthickening + theorem metric.closure_subset_thickening + theorem metric.closure_thickening_subset_cthickening + theorem metric.cthickening_eq_Inter_cthickening' +/- theorem metric.cthickening_eq_Inter_cthickening + theorem metric.cthickening_eq_Inter_thickening' + theorem metric.cthickening_eq_Inter_thickening + theorem metric.cthickening_of_nonpos + theorem metric.frontier_cthickening_subset + theorem metric.frontier_thickening_subset + theorem metric.self_subset_cthickening + theorem metric.self_subset_thickening + theorem metric.thickening_subset_interior_cthickening 2021-12-15 19:58:19 ef69cac chore(topology/continuous_function/bounded): remove extra typeclass assumption (#10823) Remove `[normed_star_monoid β]` from the typeclass assumptions of `[cstar_ring (α →ᵇ β)]` -- it was doing no harm, since it's implied by the assumption `[cstar_ring β]`, but it's unnecessary. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean 2021-12-15 19:58:18 00c55f5 feat(algebra/module/linear_map): interaction of linear maps and pointwise operations on sets (#10821) ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_map.image_smul_set + theorem linear_map.image_smul_setₛₗ + theorem linear_map.preimage_smul_set + theorem linear_map.preimage_smul_setₛₗ Modified src/algebra/pointwise.lean + theorem smul_add_set Modified src/data/equiv/module.lean + theorem linear_equiv.image_smul_set + theorem linear_equiv.image_smul_setₛₗ + theorem linear_equiv.preimage_smul_set + theorem linear_equiv.preimage_smul_setₛₗ Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.image_smul_set + theorem continuous_linear_equiv.image_smul_setₛₗ + theorem continuous_linear_equiv.preimage_smul_set + theorem continuous_linear_equiv.preimage_smul_setₛₗ + theorem continuous_linear_map.image_smul_set + theorem continuous_linear_map.image_smul_setₛₗ + theorem continuous_linear_map.preimage_smul_set + theorem continuous_linear_map.preimage_smul_setₛₗ 2021-12-15 19:58:17 dfb78f7 feat(analysis/special_functions/complex): range of `complex.exp (↑x * I)` (#10816) ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.range_exp_mul_I 2021-12-15 19:58:16 81e58c9 feat(analysis/mean_inequalities): corollary of Hölder inequality (#10789) Several versions of the fact that ``` (∑ i in s, f i) ^ p ≤ (card s) ^ (p - 1) * ∑ i in s, (f i) ^ p ``` for `1 ≤ p`. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.rpow_sum_le_const_mul_sum_rpow + theorem nnreal.rpow_sum_le_const_mul_sum_rpow + theorem real.rpow_sum_le_const_mul_sum_rpow + theorem real.rpow_sum_le_const_mul_sum_rpow_of_nonneg Modified src/data/real/conjugate_exponents.lean + theorem real.is_conjugate_exponent.div_conj_eq_sub_one 2021-12-15 19:58:15 026e692 chore(combinatorics/simple_graph): fix name mixup (#10785) Fixes the name mixup from #10778 and reorders lemmas to make the difference more clear. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/subgraph.lean - theorem simple_graph.subgraph.bot_adj_iff +/- theorem simple_graph.subgraph.bot_verts + theorem simple_graph.subgraph.not_bot_adj 2021-12-15 19:58:13 204aa7e feat(data/int/basic): more int.sign API (#10781) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.nat_abs_sign + theorem int.nat_abs_sign_of_nonzero + theorem int.sign_coe_nat_of_nonzero + theorem int.sign_neg 2021-12-15 19:58:12 75b4e5f chore(*): remove edge case assumptions from lemmas (#10774) Remove edge case assumptions from lemmas when the result is easy to prove without the assumption. We clean up a few lemmas in the library which assume something like `n \ne 0`, `0 < n`, or `set.nonempty` but where the result is easy to prove by case splitting on this instead and then simplifying. Removing these unneeded assumptions makes such lemmas easier to apply, and lets us minorly golf a few other proofs along the way. The main external changes are to remove assumptions to around 30 lemmas, and make some arguments explicit when they were no longer inferable, all other lines are just fixing up the proofs, which shortens some proofs in the process. I also added a couple of lemmas to help simp in a couple of examples. The code I used to find these is in the branch https://github.com/leanprover-community/mathlib/tree/alexjbest/simple_edge_cases_linter ESTIMATED CHANGES Modified src/algebra/group_with_zero/power.lean +/- theorem div_sq_cancel Modified src/analysis/complex/roots_of_unity.lean +/- theorem complex.card_primitive_roots Modified src/data/bitvec/core.lean Modified src/data/int/basic.lean +/- theorem int.div_dvd_of_ne_zero_dvd Modified src/data/nat/digits.lean +/- theorem nat.digits_last Modified src/data/nat/pow.lean +/- theorem nat.mod_pow_succ Modified src/data/polynomial/field_division.lean +/- theorem polynomial.prod_multiset_root_eq_finset_root Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.card_roots' +/- theorem polynomial.count_roots + theorem polynomial.nth_roots_finset_zero Modified src/field_theory/is_alg_closed/basic.lean +/- theorem is_alg_closed.degree_eq_one_of_irreducible Modified src/field_theory/ratfunc.lean +/- theorem ratfunc.denom_div_dvd Modified src/field_theory/separable.lean +/- theorem polynomial.map_expand +/- theorem polynomial.root_multiplicity_le_one_of_separable Modified src/field_theory/splitting_field.lean Modified src/geometry/euclidean/monge_point.lean +/- theorem affine.simplex.direction_monge_plane +/- theorem affine.simplex.monge_point_mem_monge_plane Modified src/group_theory/exponent.lean +/- theorem monoid.exponent_dvd_of_forall_pow_eq_one Modified src/number_theory/padics/hensel.lean Modified src/number_theory/padics/padic_norm.lean +/- theorem padic_val_nat_zero +/- theorem padic_val_rat.min_le_padic_val_rat_add Modified src/number_theory/pell.lean +/- theorem pell.eq_of_xn_modeq +/- theorem pell.eq_of_xn_modeq_le Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.card_primitive_roots +/- theorem is_primitive_root.disjoint +/- theorem is_primitive_root.nth_roots_one_eq_bUnion_primitive_roots Modified src/ring_theory/unique_factorization_domain.lean +/- theorem associates.count_mul_of_coprime' +/- theorem associates.count_mul_of_coprime +/- theorem associates.dvd_count_of_dvd_count_mul 2021-12-15 19:58:10 3f55e02 feat(data/{multiset, finset}/basic): add card_mono (#10771) Add a `@[mono]` lemma for `finset.card`. Also `multiset.card_mono` as an alias of a preexisting lemma. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_mono Modified src/data/multiset/basic.lean + theorem multiset.card_mono 2021-12-15 19:58:08 a0b6bab split(logic/nonempty): Split off `logic.basic` (#10762) This moves the lemmas about `nonempty` to a new file `logic.basic` I'm crediting Johannes for 79483182abffcac3a1ddd7098d47a475e75a5ed2 ESTIMATED CHANGES Modified src/logic/basic.lean - theorem classical.nonempty_pi - theorem exists_true_iff_nonempty - theorem nonempty.elim_to_inhabited - theorem nonempty.exists - theorem nonempty.forall - theorem nonempty.map - theorem nonempty_Prop - theorem nonempty_empty - theorem nonempty_plift - theorem nonempty_pprod - theorem nonempty_prod - theorem nonempty_psigma - theorem nonempty_psum - theorem nonempty_sigma - theorem nonempty_subtype - theorem nonempty_sum - theorem nonempty_ulift - theorem not_nonempty_iff_imp_false - theorem subsingleton_of_not_nonempty Modified src/logic/function/basic.lean Added src/logic/nonempty.lean + theorem classical.nonempty_pi + theorem exists_true_iff_nonempty + theorem nonempty.elim_to_inhabited + theorem nonempty.exists + theorem nonempty.forall + theorem nonempty.map + theorem nonempty_Prop + theorem nonempty_empty + theorem nonempty_plift + theorem nonempty_pprod + theorem nonempty_prod + theorem nonempty_psigma + theorem nonempty_psum + theorem nonempty_sigma + theorem nonempty_subtype + theorem nonempty_sum + theorem nonempty_ulift + theorem not_nonempty_iff_imp_false + theorem subsingleton_of_not_nonempty Modified src/tactic/derive_fintype.lean Modified src/tactic/interactive.lean 2021-12-15 19:58:07 02cdc81 refactor(order/sup_indep): Get rid of decidable equality assumption (#10673) The `erase` in the definition required a `decidable_eq`. We can make do without it while keeping it functionally the same. ESTIMATED CHANGES Modified src/order/sup_indep.lean +/- theorem complete_lattice.independent_iff_sup_indep +/- theorem finset.sup_indep.bUnion +/- theorem finset.sup_indep.pairwise_disjoint +/- theorem finset.sup_indep.sup +/- def finset.sup_indep +/- theorem finset.sup_indep_empty + theorem finset.sup_indep_iff_disjoint_erase +/- theorem finset.sup_indep_iff_pairwise_disjoint 2021-12-15 19:58:06 9525f5e feat(order/zorn): Added some results about chains (#10658) Added `chain_empty`, `chain_subsingleton`, and `chain.max_chain_of_chain`. The first two of these are immediate yet useful lemmas. The last one is a consequence of Zorn's lemma, which generalizes Hausdorff's maximality principle. ESTIMATED CHANGES Modified src/order/zorn.lean + theorem set.subsingleton.chain + theorem zorn.chain.max_chain_of_chain + theorem zorn.chain_empty 2021-12-15 19:58:04 accdb8f feat(measure_theory/integral/divergence_theorem): specialize for `f : ℝ → E` and `f g : ℝ × ℝ → E` (#10616) ESTIMATED CHANGES Modified src/measure_theory/integral/divergence_theorem.lean + theorem measure_theory.integral2_divergence_prod_of_has_fderiv_within_at_off_countable + theorem measure_theory.integral_divergence_of_has_fderiv_within_at_off_countable' + theorem measure_theory.integral_divergence_of_has_fderiv_within_at_off_countable_of_equiv + theorem measure_theory.integral_divergence_prod_Icc_of_has_fderiv_within_at_off_countable_of_le + theorem measure_theory.integral_eq_of_has_deriv_within_at_off_countable + theorem measure_theory.integral_eq_of_has_deriv_within_at_off_countable_of_le 2021-12-15 18:06:00 4ff9b82 feat(data/set/lattice): new lemma Union_singleton_eq_range (#10819) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_id' Modified src/data/set/intervals/proj_Icc.lean Modified src/data/set/lattice.lean +/- theorem set.Union_of_singleton +/- theorem set.Union_of_singleton_coe + theorem set.Union_singleton_eq_range Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/integral/lebesgue.lean 2021-12-15 18:05:59 dc732a3 feat(logic/basic): When an If-Then-Else is not one of its arguments (#10800) Conditions for `ite P a b ≠ a` and `ite P a b ≠ b`. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem imp_iff_not + theorem ite_ne_left_iff + theorem ite_ne_right_iff 2021-12-15 18:05:58 7130d75 chore(*): introduce notation for left/right/punctured nhds (#10694) New notation: * `𝓝[≤] x`: the filter `nhds_within x (set.Iic x)` of left-neighborhoods of `x`; * `𝓝[≥] x`: the filter `nhds_within x (set.Ici x)` of right-neighborhoods of `x`; * `𝓝[<] x`: the filter `nhds_within x (set.Iio x)` of punctured left-neighborhoods of `x`; * `𝓝[>] x`: the filter `nhds_within x (set.Ioi x)` of punctured right-neighborhoods of `x`; * `𝓝[≠] x`: the filter `nhds_within x {x}ᶜ` of punctured neighborhoods of `x`. ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/normed/group/basic.lean +/- theorem tendsto_norm_nhds_within_zero Modified src/analysis/normed_space/basic.lean +/- theorem normed_field.punctured_nhds_ne_bot Modified src/analysis/special_functions/exp.lean +/- theorem real.comap_exp_nhds_within_Ioi_zero +/- theorem real.map_exp_at_bot +/- theorem real.tendsto_exp_at_bot_nhds_within Modified src/analysis/special_functions/log.lean +/- theorem real.tendsto_log_nhds_within_zero Modified src/analysis/special_functions/log_deriv.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric/arctan_deriv.lean Modified src/analysis/special_functions/trigonometric/basic.lean +/- theorem real.tendsto_cos_neg_pi_div_two +/- theorem real.tendsto_cos_pi_div_two +/- theorem real.tendsto_sin_neg_pi_div_two +/- theorem real.tendsto_sin_pi_div_two +/- theorem real.tendsto_tan_neg_pi_div_two +/- theorem real.tendsto_tan_pi_div_two Modified src/analysis/special_functions/trigonometric/complex_deriv.lean Modified src/analysis/special_functions/trigonometric/inverse_deriv.lean Modified src/analysis/specific_limits.lean Modified src/measure_theory/covering/differentiation.lean Modified src/measure_theory/group/basic.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/hausdorff.lean +/- theorem measure_theory.measure.mk_metric_mono +/- theorem measure_theory.outer_measure.mk_metric_mono Modified src/measure_theory/measure/stieltjes.lean +/- theorem stieltjes_function.tendsto_left_lim Modified src/topology/alexandroff.lean +/- theorem alexandroff.nhds_within_compl_infty_eq Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean +/- theorem module.punctured_nhds_ne_bot Modified src/topology/algebra/ordered/basic.lean +/- theorem comap_coe_Ioi_nhds_within_Ioi +/- theorem filter.tendsto.inv_tendsto_zero +/- theorem tendsto_abs_nhds_within_zero +/- theorem tendsto_inv_at_top_zero' +/- theorem tendsto_inv_zero_at_top Modified src/topology/algebra/ordered/extend_from.lean Modified src/topology/algebra/ordered/intermediate_value.lean Modified src/topology/algebra/ordered/left_right.lean Modified src/topology/algebra/ordered/monotone_continuity.lean Modified src/topology/basic.lean +/- theorem closure_compl_singleton +/- theorem dense_compl_singleton +/- theorem interior_singleton Modified src/topology/continuous_on.lean +/- theorem nhds_within_compl_singleton_sup_pure Modified src/topology/instances/ennreal.lean +/- theorem ennreal.nhds_within_Ioi_coe_ne_bot +/- theorem ennreal.nhds_within_Ioi_zero_ne_bot Modified src/topology/local_extr.lean Modified src/topology/local_homeomorph.lean Modified src/topology/separation.lean +/- theorem dense.diff_finite +/- theorem dense.diff_finset +/- theorem dense.diff_singleton +/- theorem infinite_of_mem_nhds 2021-12-15 18:05:57 6043522 refactor(order/basic): Change definition of `<` on `α × β` (#10667) This prove that `a < b` on `prod` is equivalent to `a.1 < b.1 ∧ a.2 ≤ b.2 ∨ a.1 ≤ b.1 ∧ a.2 < b.2`. ESTIMATED CHANGES Modified src/order/basic.lean +/- theorem prod.le_def + theorem prod.lt_iff +/- theorem prod.mk_le_mk + theorem prod.mk_lt_mk 2021-12-15 18:05:56 6530769 doc(algebra/algebra/basic): expand the docstring (#10221) This doesn't rule out having a better way to spell "non-unital non-associative algebra" in future, but let's document how it can be done today. Much of this description is taken from [my talk at CICM's FMM](https://eric-wieser.github.io/fmm-2021/#/algebras). ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean 2021-12-15 17:00:14 bb51df3 chore(computability/regular_expressions): eliminate `finish` (#10811) Removing uses of `finish`, as discussed in this Zulip thread (https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20sat.20solvers) ESTIMATED CHANGES Modified src/computability/regular_expressions.lean 2021-12-15 17:00:12 5658241 feat(ring_theory/localization,group_theory/monoid_localization): other scalar action instances (#10804) As requested by @pechersky. With this instance it's possible to state: ```lean import field_theory.ratfunc import data.complex.basic import ring_theory.laurent_series noncomputable example : ratfunc ℂ ≃ₐ[ℂ] fraction_ring (polynomial ℂ) := sorry ``` ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean + theorem localization.smul_mk Modified src/ring_theory/localization.lean - theorem localization.smul_mk 2021-12-15 17:00:11 930ae46 chore(analysis/special_functions/pow): remove duplicate lemmas concerning monotonicity of `rpow` (#10794) The lemmas `rpow_left_monotone_of_nonneg` and `rpow_left_strict_mono_of_pos` were duplicates of `monotone_rpow_of_nonneg` and `strict_mono_rpow_of_pos`, respectively. The duplicates are removed as well as references to them in mathlib in `measure_theory/function/{continuous_function_dense, lp_space}` ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean - theorem ennreal.rpow_left_monotone_of_nonneg - theorem ennreal.rpow_left_strict_mono_of_pos Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/lp_space.lean 2021-12-15 15:40:27 61949af doc(linear_algebra/std_basis): update module doc (#10818) The old module documentation for this file still referred to the removed old `is_basis`-based definitions. This PR updates the documentation to refer to the new bundled `basis`-based definitions. ESTIMATED CHANGES Modified src/linear_algebra/std_basis.lean 2021-12-15 12:44:42 9f787c2 doc(undergrad): Link the affine group (#10797) This is the statement `group (P₁ ≃ᵃ[k] P₁)`. Per the "Undergrad TODO trivial targets" wiki page, this should [match wikipedia](https://en.wikipedia.org/wiki/Affine_group), which says: > In mathematics, the affine group or general affine group of any affine space over a field K is the group of all invertible affine transformations from the space into itself. I guess you could also ask for the statement that `(P₁ ≃ᵃ[k] P₁) ≃ units (P₁ →ᵃ[k] P₁)`, but I'll PR that separately. ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-12-15 10:36:10 c574e38 feat(data/finsupp/basic): Add `finsupp.erase_of_not_mem_support` (#10689) Analogous to `list.erase_of_not_mem` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.erase_of_not_mem_support 2021-12-15 09:53:43 03a250a chore(data/sym/sym2): Better lemma names (#10801) Renames * `mk_has_mem` to `mk_mem_left` * `mk_has_mem_right` to `mk_mem_right`. Just doesn't follow the convention. * `mem_other` to `other` in lemma names. The `mem` is confusing and is only part of the fully qualified name for dot notation to work. * `sym2.elems_iff_eq` to `mem_and_mem_iff`. `elems` is never used elsewhere. Could also be `mem_mem_iff`. * `is_diag_iff_eq` to `mk_is_diag_iff`. The form of the argument was ambiguous. Adding `mk` solves it. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean - theorem simple_graph.edge_mem_other_incident_set + theorem simple_graph.edge_other_incident_set Modified src/data/sym/sym2.lean +/- theorem sym2.coe_lift_symm_apply +/- theorem sym2.diag_is_diag - theorem sym2.elems_iff_eq +/- theorem sym2.from_rel_proj_prop +/- theorem sym2.from_rel_prop - theorem sym2.is_diag_iff_eq +/- def sym2.lift +/- theorem sym2.lift_mk +/- theorem sym2.map.injective +/- def sym2.map +/- theorem sym2.map_comp +/- theorem sym2.map_map +/- theorem sym2.map_pair_eq + theorem sym2.mem_and_mem_iff + theorem sym2.mem_mk_left + theorem sym2.mem_mk_right - theorem sym2.mem_other_mem' - theorem sym2.mem_other_mem - theorem sym2.mem_other_ne - theorem sym2.mem_other_spec' - theorem sym2.mem_other_spec - theorem sym2.mk_has_mem - theorem sym2.mk_has_mem_right + theorem sym2.mk_is_diag_iff +/- theorem sym2.other_invol' +/- theorem sym2.other_invol + theorem sym2.other_mem' + theorem sym2.other_mem + theorem sym2.other_ne + theorem sym2.other_spec' + theorem sym2.other_spec +/- theorem sym2.rel_bool_spec +/- def sym2.sym2_equiv_sym' - theorem sym2.sym2_ext 2021-12-15 07:05:10 40cfdec chore(algebra/algebra/basic): alg_equiv.map_smul (#10805) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.map_smul 2021-12-15 06:22:11 8f5031a docs(undergrad): more links (#10790) The only change to existing declaration links is removing wrong claims of having proving Sylvester's law of inertia (we don't have that the number of 1 and -1 is independent from the basis). ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-12-14 14:14:24 e3eb0eb feat(measure_theory/integral/set_to_l1): various properties of the set_to_fun construction (#10713) ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.of_measure_le_smul Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.of_measure_le_smul Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/set_to_l1.lean + theorem measure_theory.L1.set_to_L1_add_left' + theorem measure_theory.L1.set_to_L1_add_left + theorem measure_theory.L1.set_to_L1_congr_left' + theorem measure_theory.L1.set_to_L1_congr_left + theorem measure_theory.L1.set_to_L1_const + theorem measure_theory.L1.set_to_L1_simple_func_indicator_const + theorem measure_theory.L1.set_to_L1_smul_left' + theorem measure_theory.L1.set_to_L1_smul_left + theorem measure_theory.L1.set_to_L1_zero_left' + theorem measure_theory.L1.set_to_L1_zero_left + theorem measure_theory.L1.simple_func.set_to_L1s_add_left' + theorem measure_theory.L1.simple_func.set_to_L1s_add_left + theorem measure_theory.L1.simple_func.set_to_L1s_clm_add_left' + theorem measure_theory.L1.simple_func.set_to_L1s_clm_add_left + theorem measure_theory.L1.simple_func.set_to_L1s_clm_congr_left' + theorem measure_theory.L1.simple_func.set_to_L1s_clm_congr_left + theorem measure_theory.L1.simple_func.set_to_L1s_clm_congr_measure + theorem measure_theory.L1.simple_func.set_to_L1s_clm_const + theorem measure_theory.L1.simple_func.set_to_L1s_clm_smul_left' + theorem measure_theory.L1.simple_func.set_to_L1s_clm_smul_left + theorem measure_theory.L1.simple_func.set_to_L1s_clm_zero_left' + theorem measure_theory.L1.simple_func.set_to_L1s_clm_zero_left + theorem measure_theory.L1.simple_func.set_to_L1s_congr_left + theorem measure_theory.L1.simple_func.set_to_L1s_congr_measure + theorem measure_theory.L1.simple_func.set_to_L1s_const +/- theorem measure_theory.L1.simple_func.set_to_L1s_indicator_const + theorem measure_theory.L1.simple_func.set_to_L1s_neg + theorem measure_theory.L1.simple_func.set_to_L1s_smul_left' + theorem measure_theory.L1.simple_func.set_to_L1s_smul_left + theorem measure_theory.L1.simple_func.set_to_L1s_sub + theorem measure_theory.L1.simple_func.set_to_L1s_zero_left' + theorem measure_theory.L1.simple_func.set_to_L1s_zero_left + theorem measure_theory.continuous_L1_to_L1 + theorem measure_theory.set_to_fun_add_left' + theorem measure_theory.set_to_fun_add_left + theorem measure_theory.set_to_fun_congr_left' + theorem measure_theory.set_to_fun_congr_left + theorem measure_theory.set_to_fun_congr_measure + theorem measure_theory.set_to_fun_congr_measure_of_add_left + theorem measure_theory.set_to_fun_congr_measure_of_add_right + theorem measure_theory.set_to_fun_congr_measure_of_integrable + theorem measure_theory.set_to_fun_congr_smul_measure + theorem measure_theory.set_to_fun_const + theorem measure_theory.set_to_fun_finset_sum' + theorem measure_theory.set_to_fun_finset_sum + theorem measure_theory.set_to_fun_measure_zero' + theorem measure_theory.set_to_fun_measure_zero + theorem measure_theory.set_to_fun_smul_left' + theorem measure_theory.set_to_fun_smul_left + theorem measure_theory.set_to_fun_top_smul_measure + theorem measure_theory.set_to_fun_zero_left' + theorem measure_theory.set_to_fun_zero_left + theorem measure_theory.simple_func.norm_set_to_simple_func_le_sum_mul_norm + theorem measure_theory.simple_func.set_to_simple_func_congr_left + theorem measure_theory.simple_func.set_to_simple_func_const' + theorem measure_theory.simple_func.set_to_simple_func_const + theorem measure_theory.simple_func.set_to_simple_func_smul_left' + theorem measure_theory.simple_func.set_to_simple_func_smul_left + theorem measure_theory.simple_func.set_to_simple_func_zero' Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.absolutely_continuous_of_le_smul 2021-12-14 12:57:08 1367c19 feat(algebraic_geometry): LocallyRingedSpace has coproducts. (#10665) ESTIMATED CHANGES Added src/algebraic_geometry/locally_ringed_space/has_colimits.lean + def algebraic_geometry.LocallyRingedSpace.coproduct + def algebraic_geometry.LocallyRingedSpace.coproduct_cofan + def algebraic_geometry.LocallyRingedSpace.coproduct_cofan_is_colimit + theorem algebraic_geometry.SheafedSpace.colimit_exists_rep + theorem algebraic_geometry.SheafedSpace.is_colimit_exists_rep Modified src/algebraic_geometry/open_immersion.lean + theorem algebraic_geometry.SheafedSpace.is_open_immersion.image_preimage_is_empty + theorem algebraic_geometry.SheafedSpace.is_open_immersion.sigma_ι_open_embedding Modified src/algebraic_geometry/sheafed_space.lean Modified src/topology/category/Top/basic.lean + theorem Top.open_embedding_iff_comp_is_iso + theorem Top.open_embedding_iff_is_iso_comp Modified src/topology/maps.lean + theorem open_embedding_iff_open_embedding_compose + theorem open_embedding_of_open_embedding_compose 2021-12-14 11:07:17 9078914 feat(algebra/group): make `map_[z]pow` generic in `monoid_hom_class` (#10749) This PR makes `map_pow` take a `monoid_hom_class` instead of specifically a `monoid_hom`. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem map_pow + theorem map_zpow' + theorem map_zpow - theorem monoid_hom.map_pow - theorem monoid_hom.map_zpow' - theorem monoid_hom.map_zpow Modified src/algebra/group_power/basic.lean - theorem ring_hom.map_pow Modified src/category_theory/preadditive/default.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/eval.lean - theorem polynomial.map_pow Modified src/data/polynomial/lifts.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/finite/galois_field.lean Modified src/linear_algebra/tensor_product.lean - theorem tensor_product.map_pow Modified src/ring_theory/polynomial/cyclotomic/basic.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/power_series/well_known.lean Modified src/ring_theory/roots_of_unity.lean 2021-12-14 09:33:38 f46a7a0 chore(data/equiv/ring): inv_fun_eq_symm (#10779) Like what we have for `alg_equiv`. ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.inv_fun_eq_symm 2021-12-14 09:33:37 6d15ea4 feat(combinatorics/simple_graph): simp lemmas about spanning coe (#10778) A couple of lemmas from #8737 which don't involve connectivity, plus some extra related results. cc @kmill ESTIMATED CHANGES Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.bot_adj_iff + theorem simple_graph.subgraph.bot_verts + theorem simple_graph.subgraph.map_spanning_top.injective + def simple_graph.subgraph.map_spanning_top + theorem simple_graph.subgraph.spanning_coe_top + theorem simple_graph.subgraph.top_adj_iff + theorem simple_graph.subgraph.top_verts +/- def simple_graph.to_subgraph 2021-12-14 09:33:36 05d8767 feat(group_theory/order_of_element): additivize (#10766) ESTIMATED CHANGES Modified src/algebra/pointwise.lean Modified src/group_theory/order_of_element.lean - theorem add_order_of_eq_prime +/- theorem commute.order_of_mul_dvd_lcm - theorem commute.order_of_mul_dvd_lcm_order_of - theorem image_range_add_order_of - theorem is_of_fin_add_order_iff_nsmul_eq_zero - theorem is_periodic_pt_add_iff_nsmul_eq_zero + theorem mem_powers_iff_mem_range_order_of' +/- def pow_coprime +/- theorem pow_coprime_inv +/- theorem pow_coprime_one 2021-12-14 07:40:55 85cb4a8 chore(measure_theory/decomposition/signed_hahn): Fixed a few typos (#10777) ESTIMATED CHANGES Modified src/measure_theory/decomposition/signed_hahn.lean 2021-12-14 07:40:54 f070a69 move(algebra/order/lattice_group): Move from `algebra.lattice_ordered_group` (#10763) Rename `algebra.lattice_ordered_group` in `algebra/order/lattice_group`. ESTIMATED CHANGES Renamed src/algebra/lattice_ordered_group.lean to src/algebra/order/lattice_group.lean Modified src/analysis/normed_space/lattice_ordered_group.lean 2021-12-14 07:40:53 f727e12 chore(logic/basic): tidy `ite` section and misplaced lemmas (#10761) Moves a few lemmas down and use `variables`. ESTIMATED CHANGES Modified src/data/matrix/basis.lean Modified src/logic/basic.lean +/- theorem apply_dite2 +/- theorem apply_dite +/- theorem apply_ite2 +/- theorem apply_ite +/- theorem dite_apply +/- theorem dite_eq_ite +/- theorem dite_not +/- theorem ite_and +/- theorem ite_apply +/- theorem ite_eq_iff +/- theorem ite_eq_left_iff +/- theorem ite_eq_or_eq +/- theorem ite_eq_right_iff +/- theorem ite_not 2021-12-14 07:40:52 dda8a10 feat(data/mv_polynomial/basic): add `mv_polynomial.support_sum` (#10731) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.support_finset_sum Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.support_sum + theorem mv_polynomial.support_zero 2021-12-14 07:40:51 9af43e4 feat(analysis/inner_product_space/basic): inner product as a (continuous) sesquilinear map (#10684) This PR replaces `inner_right (v : E) : E →L[𝕜] 𝕜` (the inner product with a fixed left element as a continuous linear map) by `innerₛₗ : E →ₗ⋆[𝕜] E →ₗ[𝕜] 𝕜 ` and `innerSL : E →L⋆[𝕜] E →L[𝕜] 𝕜 `, which bundle the inner product as a sesquilinear map and as a continuous sesquilinear map respectively. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + def innerSL + theorem innerSL_apply + theorem innerSL_apply_coe + theorem innerSL_apply_norm - def inner_right - theorem inner_right_apply - theorem inner_right_coe + def innerₛₗ + theorem innerₛₗ_apply + theorem innerₛₗ_apply_coe +/- theorem orthogonal_eq_inter Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/dual.lean + theorem inner_product_space.innerSL_norm Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/normed_space/star.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/integral/set_integral.lean 2021-12-14 05:36:16 f3fa5e3 feat(data/mv_polynomial/variables): add `mv_polynomial.degree_of_zero` (#10768) ESTIMATED CHANGES Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.degree_of_zero 2021-12-14 05:36:15 ee78812 feat(number_theory/padics/padic_norm): lemmas (#10765) ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean - theorem padic_val_nat_prime_pow 2021-12-14 05:36:14 9b1a832 feat(data/nat/prime): dvd_of_factors_subperm (#10764) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.dvd_of_factors_subperm 2021-12-14 05:36:13 d9edeea refactor(linear_algebra/orientation): add refl, symm, and trans lemma (#10753) This restates the `reflexive`, `symmetric`, and `transitive` lemmas in a form understood by `@[refl]`, `@[symm]`, and `@[trans]`. As a bonus, these versions also work with dot notation. I've discarded the original statements, since they're always recoverable via the fields of equivalence_same_ray, and keeping them is just noise. ESTIMATED CHANGES Modified src/linear_algebra/orientation.lean +/- theorem equivalence_same_ray - theorem reflexive_same_ray + theorem same_ray.refl + theorem same_ray.symm + theorem same_ray.trans + theorem same_ray_comm - theorem symmetric_same_ray - theorem transitive_same_ray 2021-12-14 05:36:12 0000497 feat(order/basic, order/bounded_order): Generalized `preorder` to `has_lt` (#10695) This is a continuation of #10664. ESTIMATED CHANGES Modified src/order/basic.lean +/- theorem no_bot +/- theorem no_top Modified src/order/bounded_order.lean + theorem with_bot.not_lt_none +/- theorem with_bot.well_founded_lt + theorem with_top.not_none_lt +/- theorem with_top.well_founded_lt 2021-12-14 04:24:23 32c24f1 chore(set_theory/ordinal_arithmetic): simplified proof of `is_normal.le_self` (#10770) Thanks to #10732, this proof is now a one-liner. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean 2021-12-14 01:29:31 cd462cd feat(topology/algebra/*, analysis/normed_space/operator_norm): construct bundled {monoid_hom, linear_map} from limits of such maps (#10700) Given a function which is a pointwise limit of {`monoid_hom`, `add_monoid_hom`, `linear_map`} maps, construct a bundled version of the corresponding type with that function as its `to_fun`. Then this construction is used to replace the existing in-proof construction that the continuous linear maps into a banach space is itself complete. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean Modified src/topology/algebra/module.lean + def linear_map_of_tendsto Modified src/topology/algebra/monoid.lean + def monoid_hom_of_tendsto 2021-12-14 00:37:44 77e5248 feat(algebra/triv_sq_zero_ext): universal property (#10754) ESTIMATED CHANGES Modified src/algebra/triv_sq_zero_ext.lean + theorem triv_sq_zero_ext.alg_hom_ext' + theorem triv_sq_zero_ext.alg_hom_ext + theorem triv_sq_zero_ext.ind + def triv_sq_zero_ext.lift + def triv_sq_zero_ext.lift_aux + theorem triv_sq_zero_ext.lift_aux_apply_inr + theorem triv_sq_zero_ext.lift_aux_comp_inr_hom + theorem triv_sq_zero_ext.lift_aux_inr_hom + theorem triv_sq_zero_ext.linear_map_ext 2021-12-13 23:34:29 c3391c2 feat(analysis/convex/simplicial_complex): Simplicial complexes (#9762) This introduces simplicial complexes in modules. ESTIMATED CHANGES Added src/analysis/convex/simplicial_complex/basic.lean + theorem geometry.simplicial_complex.convex_hull_inter_convex_hull + theorem geometry.simplicial_complex.convex_hull_subset_space + theorem geometry.simplicial_complex.disjoint_or_exists_inter_eq_convex_hull + theorem geometry.simplicial_complex.face_subset_face_iff + theorem geometry.simplicial_complex.faces_bot + def geometry.simplicial_complex.facets + theorem geometry.simplicial_complex.facets_bot + theorem geometry.simplicial_complex.facets_subset + theorem geometry.simplicial_complex.mem_facets + theorem geometry.simplicial_complex.mem_space_iff + theorem geometry.simplicial_complex.mem_vertices + theorem geometry.simplicial_complex.not_facet_iff_subface + def geometry.simplicial_complex.of_erase + def geometry.simplicial_complex.of_subcomplex + def geometry.simplicial_complex.space + theorem geometry.simplicial_complex.space_bot + theorem geometry.simplicial_complex.vertex_mem_convex_hull_iff + def geometry.simplicial_complex.vertices + theorem geometry.simplicial_complex.vertices_eq + theorem geometry.simplicial_complex.vertices_subset_space + structure geometry.simplicial_complex 2021-12-13 21:33:22 7181b3a chore(order/hom): rearrange definitions of `order_{hom,iso,embedding}` (#10752) We symmetrize the locations of `rel_{hom,iso,embedding}` and `order_{hom,iso,embedding}` by putting the `rel_` definitions in `order/rel_iso.lean` and the `order_` definitions in `order/hom/basic.lean`. (`order_hom.lean` needed to be split up to fix an import loop.) Requested by @YaelDillies. ## Moved definitions * `order_hom`, `order_iso`, `order_embedding` are now in `order/hom/basic.lean` * `order_hom.has_sup` ... `order_hom.complete_lattice` are now in `order/hom/lattice.lean` ## Other changes Some import cleanup. ESTIMATED CHANGES Modified src/algebra/lie/solvable.lean Modified src/algebra/order/monoid.lean Modified src/combinatorics/set_family/shadow.lean Modified src/data/finset/option.lean Modified src/data/nat/fib.lean Modified src/linear_algebra/eigenspace.lean Modified src/order/category/Preorder.lean Modified src/order/closure.lean Modified src/order/fixed_points.lean Added src/order/hom/basic.lean + theorem disjoint.map_order_iso + theorem disjoint_map_order_iso_iff + theorem equiv.coe_to_order_iso + def equiv.to_order_iso + theorem equiv.to_order_iso_to_equiv + theorem order_embedding.coe_of_map_le_iff + theorem order_embedding.coe_of_strict_mono + theorem order_embedding.eq_iff_eq + theorem order_embedding.le_iff_le + theorem order_embedding.le_map_sup + def order_embedding.lt_embedding + theorem order_embedding.lt_embedding_apply + theorem order_embedding.lt_iff_lt + theorem order_embedding.map_inf_le + def order_embedding.of_map_le_iff + def order_embedding.of_strict_mono + def order_embedding.subtype + def order_embedding.to_order_hom + def order_embedding + def order_hom.apply + theorem order_hom.apply_mono + def order_hom.coe_fn_hom + theorem order_hom.coe_fun_mk + theorem order_hom.coe_le_coe + def order_hom.comp + theorem order_hom.comp_const + theorem order_hom.comp_id + theorem order_hom.comp_mono + theorem order_hom.comp_prod_comp_same + def order_hom.compₘ + def order_hom.const + theorem order_hom.const_comp + def order_hom.curry + theorem order_hom.curry_apply + theorem order_hom.curry_symm_apply + def order_hom.diag + def order_hom.dual_iso + theorem order_hom.ext + def order_hom.fst + theorem order_hom.fst_comp_prod + theorem order_hom.fst_prod_snd + def order_hom.id + theorem order_hom.id_comp + theorem order_hom.le_def + theorem order_hom.mk_le_mk + def order_hom.on_diag + theorem order_hom.order_hom_eq_id + def order_hom.pi + def order_hom.pi_iso + def order_hom.prod_iso + def order_hom.prod_map + theorem order_hom.prod_mono + def order_hom.prodₘ + def order_hom.snd + theorem order_hom.snd_comp_prod + def order_hom.subtype.val + theorem order_hom.to_fun_eq_coe + def order_hom.unique + structure order_hom + theorem order_iso.apply_eq_iff_eq + theorem order_iso.apply_eq_iff_eq_symm_apply + theorem order_iso.apply_symm_apply + theorem order_iso.coe_refl + theorem order_iso.coe_to_order_embedding + theorem order_iso.coe_trans + def order_iso.fun_unique + theorem order_iso.fun_unique_symm_apply + theorem order_iso.image_eq_preimage + theorem order_iso.image_preimage + theorem order_iso.image_symm_image + theorem order_iso.is_compl + theorem order_iso.is_compl_iff + theorem order_iso.is_complemented + theorem order_iso.is_complemented_iff + theorem order_iso.le_iff_le + theorem order_iso.le_symm_apply + theorem order_iso.lt_iff_lt + theorem order_iso.map_bot' + theorem order_iso.map_bot + theorem order_iso.map_inf + theorem order_iso.map_sup + theorem order_iso.map_top' + theorem order_iso.map_top + def order_iso.of_cmp_eq_cmp + theorem order_iso.preimage_image + theorem order_iso.preimage_symm_preimage + theorem order_iso.range_eq + def order_iso.refl + theorem order_iso.refl_apply + theorem order_iso.refl_to_equiv + theorem order_iso.refl_trans + def order_iso.set.univ + def order_iso.set_congr + def order_iso.symm + theorem order_iso.symm_apply_apply + theorem order_iso.symm_apply_eq + theorem order_iso.symm_apply_le + theorem order_iso.symm_image_image + theorem order_iso.symm_injective + theorem order_iso.symm_preimage_preimage + theorem order_iso.symm_refl + theorem order_iso.symm_symm + theorem order_iso.to_equiv_symm + def order_iso.to_order_embedding + def order_iso.trans + theorem order_iso.trans_apply + theorem order_iso.trans_refl + def order_iso + def pi.eval_order_hom + def rel_embedding.order_embedding_of_lt_embedding + theorem rel_embedding.order_embedding_of_lt_embedding_apply + theorem rel_embedding.to_order_hom_injective + def rel_hom.to_order_hom Added src/order/hom/lattice.lean + theorem order_hom.Inf_apply + theorem order_hom.Sup_apply + theorem order_hom.coe_infi + theorem order_hom.coe_supr + theorem order_hom.infi_apply + theorem order_hom.iterate_sup_le_sup_iff + theorem order_hom.supr_apply Modified src/order/omega_complete_partial_order.lean Deleted src/order/order_hom.lean - def order_embedding.to_order_hom - theorem order_hom.Inf_apply - theorem order_hom.Sup_apply - def order_hom.apply - theorem order_hom.apply_mono - def order_hom.coe_fn_hom - theorem order_hom.coe_fun_mk - theorem order_hom.coe_infi - theorem order_hom.coe_le_coe - theorem order_hom.coe_supr - def order_hom.comp - theorem order_hom.comp_const - theorem order_hom.comp_id - theorem order_hom.comp_mono - theorem order_hom.comp_prod_comp_same - def order_hom.compₘ - def order_hom.const - theorem order_hom.const_comp - def order_hom.curry - theorem order_hom.curry_apply - theorem order_hom.curry_symm_apply - def order_hom.diag - def order_hom.dual_iso - theorem order_hom.ext - def order_hom.fst - theorem order_hom.fst_comp_prod - theorem order_hom.fst_prod_snd - def order_hom.id - theorem order_hom.id_comp - theorem order_hom.infi_apply - theorem order_hom.iterate_sup_le_sup_iff - theorem order_hom.le_def - theorem order_hom.mk_le_mk - def order_hom.on_diag - theorem order_hom.order_hom_eq_id - def order_hom.pi - def order_hom.pi_iso - def order_hom.prod_iso - def order_hom.prod_map - theorem order_hom.prod_mono - def order_hom.prodₘ - def order_hom.snd - theorem order_hom.snd_comp_prod - def order_hom.subtype.val - theorem order_hom.supr_apply - theorem order_hom.to_fun_eq_coe - def order_hom.unique - structure order_hom - def pi.eval_order_hom - theorem rel_embedding.to_order_hom_injective - def rel_hom.to_order_hom Modified src/order/order_iso_nat.lean Modified src/order/partial_sups.lean Modified src/order/rel_iso.lean - theorem disjoint.map_order_iso - theorem disjoint_map_order_iso_iff - theorem equiv.coe_to_order_iso - def equiv.to_order_iso - theorem equiv.to_order_iso_to_equiv - theorem order_embedding.coe_of_map_le_iff - theorem order_embedding.coe_of_strict_mono - theorem order_embedding.eq_iff_eq - theorem order_embedding.le_iff_le - theorem order_embedding.le_map_sup - def order_embedding.lt_embedding - theorem order_embedding.lt_embedding_apply - theorem order_embedding.lt_iff_lt - theorem order_embedding.map_inf_le - def order_embedding.of_map_le_iff - def order_embedding.of_strict_mono - def order_embedding.subtype - def order_embedding - theorem order_iso.apply_eq_iff_eq - theorem order_iso.apply_eq_iff_eq_symm_apply - theorem order_iso.apply_symm_apply - theorem order_iso.coe_refl - theorem order_iso.coe_to_order_embedding - theorem order_iso.coe_trans - def order_iso.fun_unique - theorem order_iso.fun_unique_symm_apply - theorem order_iso.image_eq_preimage - theorem order_iso.image_preimage - theorem order_iso.image_symm_image - theorem order_iso.is_compl - theorem order_iso.is_compl_iff - theorem order_iso.is_complemented - theorem order_iso.is_complemented_iff - theorem order_iso.le_iff_le - theorem order_iso.le_symm_apply - theorem order_iso.lt_iff_lt - theorem order_iso.map_bot' - theorem order_iso.map_bot - theorem order_iso.map_inf - theorem order_iso.map_sup - theorem order_iso.map_top' - theorem order_iso.map_top - def order_iso.of_cmp_eq_cmp - theorem order_iso.preimage_image - theorem order_iso.preimage_symm_preimage - theorem order_iso.range_eq - def order_iso.refl - theorem order_iso.refl_apply - theorem order_iso.refl_to_equiv - theorem order_iso.refl_trans - def order_iso.set.univ - def order_iso.set_congr - def order_iso.symm - theorem order_iso.symm_apply_apply - theorem order_iso.symm_apply_eq - theorem order_iso.symm_apply_le - theorem order_iso.symm_image_image - theorem order_iso.symm_injective - theorem order_iso.symm_preimage_preimage - theorem order_iso.symm_refl - theorem order_iso.symm_symm - theorem order_iso.to_equiv_symm - def order_iso.to_order_embedding - def order_iso.trans - theorem order_iso.trans_apply - theorem order_iso.trans_refl - def order_iso - def rel_embedding.order_embedding_of_lt_embedding - theorem rel_embedding.order_embedding_of_lt_embedding_apply 2021-12-13 19:31:53 b351ca9 chore(algebra/algebra/tower): golf ext lemma (#10756) It turns out that we have both `algebra.ext` and `algebra.algebra_ext`, with slightly different statements. This changes one to be proved in terms of the other. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean 2021-12-13 19:31:52 3b2cf53 feat(order/well_founded) Added `strict_mono.id_le_of_wo` (#10732) This generalizes `strict_mono.id_le`. ESTIMATED CHANGES Modified src/order/well_founded.lean + theorem function.well_founded.self_le_of_strict_mono 2021-12-13 19:31:51 c895ddd feat(topology/algebra/group): add homeomorph.prod_units (#10725) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + def units.homeomorph.prod_units 2021-12-13 19:31:50 ad88a83 feat(probability_theory/martingale): add super/sub-martingales (#10710) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean Modified src/probability_theory/martingale.lean + theorem measure_theory.martingale.set_integral_eq + theorem measure_theory.martingale.submartingale + theorem measure_theory.martingale.supermartingale + theorem measure_theory.martingale_iff + theorem measure_theory.submartingale.adapted + theorem measure_theory.submartingale.add + theorem measure_theory.submartingale.add_martingale + theorem measure_theory.submartingale.ae_le_condexp + theorem measure_theory.submartingale.integrable + theorem measure_theory.submartingale.measurable + theorem measure_theory.submartingale.neg + theorem measure_theory.submartingale.set_integral_le + theorem measure_theory.submartingale.smul_nonneg + theorem measure_theory.submartingale.smul_nonpos + theorem measure_theory.submartingale.sub_martingale + theorem measure_theory.submartingale.sub_supermartingale + def measure_theory.submartingale + theorem measure_theory.supermartingale.adapted + theorem measure_theory.supermartingale.add + theorem measure_theory.supermartingale.add_martingale + theorem measure_theory.supermartingale.condexp_ae_le + theorem measure_theory.supermartingale.integrable + theorem measure_theory.supermartingale.measurable + theorem measure_theory.supermartingale.neg + theorem measure_theory.supermartingale.set_integral_le + theorem measure_theory.supermartingale.smul_nonneg + theorem measure_theory.supermartingale.smul_nonpos + theorem measure_theory.supermartingale.sub_martingale + theorem measure_theory.supermartingale.sub_submartingale + def measure_theory.supermartingale 2021-12-13 19:31:49 c7e355d feat(algebra/big_operators/finprod): add div lemmas (#10472) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_cond_ne +/- theorem finprod_div_distrib + theorem finprod_div_distrib₀ + theorem finprod_inv_distrib₀ +/- theorem finprod_mem_div_distrib + theorem finprod_mem_div_distrib₀ + theorem finprod_mem_inv_distrib₀ + theorem mul_finprod_cond_ne Modified src/data/equiv/mul_add.lean + def mul_equiv.inv₀ + theorem mul_equiv.inv₀_symm 2021-12-13 17:35:09 0c0ee7b refactor(data/set/pairwise): Make arguments of `set.pairwise` semi-implicit (#10740) The previous definition was `∀ x ∈ s, ∀ y ∈ s, x ≠ y → r x y`. It now is `∀ ⦃x⦄, x ∈ s → ∀ ⦃y⦄, y ∈ s → x ≠ y → r x y`. The explicitness resulted in a lot of useless `_` and general pain using `set.pairwise`, `set.pairwise_disjoint`, `zorn.chain`, `is_antichain`... ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean +/- theorem finprod_mem_sUnion Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/function.lean Modified src/analysis/convex/strict.lean Modified src/combinatorics/simple_graph/partition.lean Modified src/data/finset/pairwise.lean Modified src/data/list/pairwise.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/set/pairwise.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/cycles.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/vitali.lean Modified src/order/antichain.lean Modified src/order/sup_indep.lean Modified src/order/zorn.lean Modified src/ring_theory/coprime/lemmas.lean Modified src/topology/bases.lean Modified src/topology/uniform_space/separation.lean 2021-12-13 15:33:28 ee8de4c doc(linear_algebra/finite_dimensional): update doc to new definition (#10758) `finite_dimensional` is now (since a couple of months) defined to be `module.finite`. The lines modified by this PR are about the old definition. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean 2021-12-13 15:33:27 108eb0b feat(combinatorics/additive/salem_spencer): Salem-Spencer sets and Roth numbers (#10509) This defines Salem-Spencer sets and Roth numbers in (additive) monoids. ESTIMATED CHANGES Modified src/algebra/regular/basic.lean + theorem mul_left_embedding_eq_mul_right_embedding Added src/combinatorics/additive/salem_spencer.lean + theorem add_roth_number_Ico + theorem add_salem_spencer.le_roth_number_nat + theorem add_salem_spencer_iff_eq_right + theorem le_mul_roth_number_product + def mul_roth_number + theorem mul_roth_number_empty + theorem mul_roth_number_le + theorem mul_roth_number_lt_of_forall_not_mul_salem_spencer + theorem mul_roth_number_map_mul_left + theorem mul_roth_number_map_mul_right + theorem mul_roth_number_singleton + theorem mul_roth_number_spec + theorem mul_roth_number_union_le + theorem mul_salem_spencer.le_mul_roth_number + theorem mul_salem_spencer.mono + theorem mul_salem_spencer.mul_left + theorem mul_salem_spencer.mul_left₀ + theorem mul_salem_spencer.mul_right + theorem mul_salem_spencer.mul_right₀ + theorem mul_salem_spencer.prod + theorem mul_salem_spencer.roth_number_eq + def mul_salem_spencer + theorem mul_salem_spencer_empty + theorem mul_salem_spencer_insert + theorem mul_salem_spencer_insert_of_lt + theorem mul_salem_spencer_mul_left_iff + theorem mul_salem_spencer_mul_left_iff₀ + theorem mul_salem_spencer_mul_right_iff + theorem mul_salem_spencer_mul_right_iff₀ + theorem mul_salem_spencer_pair + theorem mul_salem_spencer_pi + theorem mul_salem_spencer_singleton + def roth_number_nat + theorem roth_number_nat_add_le + theorem roth_number_nat_def + theorem roth_number_nat_is_O_id + theorem roth_number_nat_is_O_with_id + theorem roth_number_nat_le + theorem roth_number_nat_spec + theorem roth_number_nat_zero + theorem set.subsingleton.mul_salem_spencer Modified src/data/finset/preimage.lean + theorem finset.preimage_subset + theorem finset.subset_map_iff 2021-12-13 15:33:26 e174736 feat(ring_theory/unique_factorization_domain): add count lemmas (#10475) ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/ring_theory/unique_factorization_domain.lean + theorem associates.count_ne_zero_iff_dvd + theorem associates.eq_factors_of_eq_counts + theorem associates.eq_of_eq_counts + theorem associates.factors_eq_none_iff_zero + theorem associates.factors_eq_some_iff_ne_zero + theorem associates.factors_subsingleton 2021-12-13 15:33:25 efbbb76 feat(ring_theory/graded_algebra): `homogeneous_element` (#10118) This pr is about what `homogeneous_element` of graded ring is. We need this definition to make the definition of homogeneous ideal more natural, i.e. we can say that a homogeneous ideal is just an ideal spanned by homogeneous elements. ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean + theorem set_like.is_homogeneous.smul + theorem set_like.is_homogeneous_zero_submodule Modified src/algebra/graded_monoid.lean + def set_like.homogeneous_submonoid + theorem set_like.is_homogeneous.mul + def set_like.is_homogeneous + theorem set_like.is_homogeneous_one Modified src/ring_theory/graded_algebra/basic.lean +/- theorem graded_algebra.mem_support_iff 2021-12-13 13:35:58 1589c7b feat(linear_algebra/determinant): determinant of a linear equivalence as a unit (#10751) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_equiv.coe_det + theorem linear_equiv.coe_inv_det + theorem linear_equiv.det_refl + theorem linear_equiv.det_symm + theorem linear_equiv.det_trans 2021-12-13 13:35:57 324a605 chore(order): rename `preorder_hom` to `order_hom` (#10750) For consistency with `order_embedding` and `order_iso`, this PR renames `preorder_hom` to `order_hom`, at the request of @YaelDillies. ESTIMATED CHANGES Modified src/algebra/lie/solvable.lean Modified src/algebraic_topology/cech_nerve.lean Modified src/algebraic_topology/simplex_category.lean + theorem simplex_category.hom.mk_to_order_hom + theorem simplex_category.hom.mk_to_order_hom_apply - theorem simplex_category.hom.mk_to_preorder_hom - theorem simplex_category.hom.mk_to_preorder_hom_apply + def simplex_category.hom.to_order_hom + theorem simplex_category.hom.to_order_hom_mk - def simplex_category.hom.to_preorder_hom - theorem simplex_category.hom.to_preorder_hom_mk Modified src/algebraic_topology/simplicial_set.lean + def sSet.as_order_hom - def sSet.as_preorder_hom Modified src/control/lawful_fix.lean Modified src/data/finset/option.lean Modified src/linear_algebra/eigenspace.lean Modified src/order/category/Preorder.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/order/closure.lean Modified src/order/fixed_points.lean + def order_hom.gfp + theorem order_hom.gfp_const_inf_le + theorem order_hom.gfp_gfp + theorem order_hom.gfp_induction + theorem order_hom.gfp_le + theorem order_hom.gfp_le_map + theorem order_hom.is_fixed_pt_gfp + theorem order_hom.is_fixed_pt_lfp + theorem order_hom.is_greatest_gfp + theorem order_hom.is_greatest_gfp_le + theorem order_hom.is_least_lfp + theorem order_hom.is_least_lfp_le + theorem order_hom.le_gfp + theorem order_hom.le_lfp + theorem order_hom.le_map_Sup_subset_fixed_points + theorem order_hom.le_map_sup_fixed_points + theorem order_hom.le_next_fixed + theorem order_hom.le_prev_fixed + theorem order_hom.le_prev_fixed_iff + def order_hom.lfp + theorem order_hom.lfp_induction + theorem order_hom.lfp_le + theorem order_hom.lfp_le_fixed + theorem order_hom.lfp_le_map + theorem order_hom.lfp_lfp + theorem order_hom.map_Inf_subset_fixed_points_le + theorem order_hom.map_gfp + theorem order_hom.map_gfp_comp + theorem order_hom.map_inf_fixed_points_le + theorem order_hom.map_le_gfp + theorem order_hom.map_le_lfp + theorem order_hom.map_lfp + theorem order_hom.map_lfp_comp + def order_hom.next_fixed + theorem order_hom.next_fixed_le + theorem order_hom.next_fixed_le_iff + def order_hom.prev_fixed + theorem order_hom.prev_fixed_le - def preorder_hom.gfp - theorem preorder_hom.gfp_const_inf_le - theorem preorder_hom.gfp_gfp - theorem preorder_hom.gfp_induction - theorem preorder_hom.gfp_le - theorem preorder_hom.gfp_le_map - theorem preorder_hom.is_fixed_pt_gfp - theorem preorder_hom.is_fixed_pt_lfp - theorem preorder_hom.is_greatest_gfp - theorem preorder_hom.is_greatest_gfp_le - theorem preorder_hom.is_least_lfp - theorem preorder_hom.is_least_lfp_le - theorem preorder_hom.le_gfp - theorem preorder_hom.le_lfp - theorem preorder_hom.le_map_Sup_subset_fixed_points - theorem preorder_hom.le_map_sup_fixed_points - theorem preorder_hom.le_next_fixed - theorem preorder_hom.le_prev_fixed - theorem preorder_hom.le_prev_fixed_iff - def preorder_hom.lfp - theorem preorder_hom.lfp_induction - theorem preorder_hom.lfp_le - theorem preorder_hom.lfp_le_fixed - theorem preorder_hom.lfp_le_map - theorem preorder_hom.lfp_lfp - theorem preorder_hom.map_Inf_subset_fixed_points_le - theorem preorder_hom.map_gfp - theorem preorder_hom.map_gfp_comp - theorem preorder_hom.map_inf_fixed_points_le - theorem preorder_hom.map_le_gfp - theorem preorder_hom.map_le_lfp - theorem preorder_hom.map_lfp - theorem preorder_hom.map_lfp_comp - def preorder_hom.next_fixed - theorem preorder_hom.next_fixed_le - theorem preorder_hom.next_fixed_le_iff - def preorder_hom.prev_fixed - theorem preorder_hom.prev_fixed_le Modified src/order/omega_complete_partial_order.lean +/- theorem omega_complete_partial_order.chain.map_id +/- theorem omega_complete_partial_order.continuous_const +/- structure omega_complete_partial_order.continuous_hom +/- theorem omega_complete_partial_order.continuous_id + def order_hom.bind - def preorder_hom.bind Renamed src/order/preorder_hom.lean to src/order/order_hom.lean + def order_embedding.to_order_hom - def order_embedding.to_preorder_hom + theorem order_hom.Inf_apply + theorem order_hom.Sup_apply + def order_hom.apply + theorem order_hom.apply_mono + def order_hom.coe_fn_hom + theorem order_hom.coe_fun_mk + theorem order_hom.coe_infi + theorem order_hom.coe_le_coe + theorem order_hom.coe_supr + def order_hom.comp + theorem order_hom.comp_const + theorem order_hom.comp_id + theorem order_hom.comp_mono + theorem order_hom.comp_prod_comp_same + def order_hom.compₘ + def order_hom.const + theorem order_hom.const_comp + def order_hom.curry + theorem order_hom.curry_apply + theorem order_hom.curry_symm_apply + def order_hom.diag + def order_hom.dual_iso + theorem order_hom.ext + def order_hom.fst + theorem order_hom.fst_comp_prod + theorem order_hom.fst_prod_snd + def order_hom.id + theorem order_hom.id_comp + theorem order_hom.infi_apply + theorem order_hom.iterate_sup_le_sup_iff + theorem order_hom.le_def + theorem order_hom.mk_le_mk + def order_hom.on_diag + theorem order_hom.order_hom_eq_id + def order_hom.pi + def order_hom.pi_iso + def order_hom.prod_iso + def order_hom.prod_map + theorem order_hom.prod_mono + def order_hom.prodₘ + def order_hom.snd + theorem order_hom.snd_comp_prod + def order_hom.subtype.val + theorem order_hom.supr_apply + theorem order_hom.to_fun_eq_coe + def order_hom.unique + structure order_hom + def pi.eval_order_hom - def pi.eval_preorder_hom - theorem preorder_hom.Inf_apply - theorem preorder_hom.Sup_apply - def preorder_hom.apply - theorem preorder_hom.apply_mono - def preorder_hom.coe_fn_hom - theorem preorder_hom.coe_fun_mk - theorem preorder_hom.coe_infi - theorem preorder_hom.coe_le_coe - theorem preorder_hom.coe_supr - def preorder_hom.comp - theorem preorder_hom.comp_const - theorem preorder_hom.comp_id - theorem preorder_hom.comp_mono - theorem preorder_hom.comp_prod_comp_same - def preorder_hom.compₘ - def preorder_hom.const - theorem preorder_hom.const_comp - def preorder_hom.curry - theorem preorder_hom.curry_apply - theorem preorder_hom.curry_symm_apply - def preorder_hom.diag - def preorder_hom.dual_iso - theorem preorder_hom.ext - def preorder_hom.fst - theorem preorder_hom.fst_comp_prod - theorem preorder_hom.fst_prod_snd - def preorder_hom.id - theorem preorder_hom.id_comp - theorem preorder_hom.infi_apply - theorem preorder_hom.iterate_sup_le_sup_iff - theorem preorder_hom.le_def - theorem preorder_hom.mk_le_mk - def preorder_hom.on_diag - def preorder_hom.pi - def preorder_hom.pi_iso - theorem preorder_hom.preorder_hom_eq_id - def preorder_hom.prod_iso - def preorder_hom.prod_map - theorem preorder_hom.prod_mono - def preorder_hom.prodₘ - def preorder_hom.snd - theorem preorder_hom.snd_comp_prod - def preorder_hom.subtype.val - theorem preorder_hom.supr_apply - theorem preorder_hom.to_fun_eq_coe - def preorder_hom.unique - structure preorder_hom + theorem rel_embedding.to_order_hom_injective - theorem rel_embedding.to_preorder_hom_injective + def rel_hom.to_order_hom - def rel_hom.to_preorder_hom Modified src/order/order_iso_nat.lean Modified src/order/partial_sups.lean Modified src/topology/omega_complete_partial_order.lean Modified src/topology/opens.lean +/- theorem topological_space.opens.comap_id 2021-12-13 13:35:56 35cd7c0 refactor(set_theory/ordinal_arithmetic) Separate `is_normal.lt_iff` (#10745) We split off `is_normal.strict_mono` from `is_normal.lt_iff`. The reasoning is that normal functions are usually defined as being strictly monotone, so this should be a separate theorem. ESTIMATED CHANGES Modified src/set_theory/ordinal_arithmetic.lean + theorem ordinal.is_normal.strict_mono 2021-12-13 11:53:34 7697ec6 feat(analysis/special_function/integrals): integral of `x ^ r`, `r : ℝ`, and `x ^ n`, `n : ℤ` (#10650) Also generalize `has_deriv_at.div_const` etc. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem deriv_div_const +/- theorem deriv_within_div_const +/- theorem differentiable.div_const +/- theorem differentiable_at.div_const +/- theorem differentiable_on.div_const +/- theorem differentiable_within_at.div_const + theorem has_deriv_at.div_const + theorem has_deriv_within_at.div_const + theorem has_strict_deriv_at.div_const Modified src/analysis/special_functions/integrals.lean +/- theorem integral_pow + theorem integral_rpow + theorem integral_zpow + theorem interval_integral.interval_integrable_rpow + theorem interval_integral.interval_integrable_zpow Modified src/analysis/special_functions/pow.lean +/- theorem real.rpow_int_cast +/- theorem real.rpow_nat_cast 2021-12-13 09:36:41 779517b feat(algebra/order/floor): Floor of `a / n` and other lemmas (#10748) A few floor lemmas + one `tsub` lemma ESTIMATED CHANGES Modified src/algebra/order/floor.lean + theorem int.floor_le_ceil + theorem nat.floor_div_eq_div + theorem nat.floor_div_nat + theorem nat.floor_le_ceil + theorem nat.floor_sub_nat Modified src/algebra/order/sub.lean + theorem tsub_nonpos 2021-12-13 09:36:40 563c364 chore(topology/maps): golf, use section vars (#10747) Also add `quotient_map.is_closed_preimage` ESTIMATED CHANGES Modified src/topology/maps.lean - theorem inducing.continuous - theorem inducing.is_open_map 2021-12-13 09:36:38 10fb7f9 feat(archive/imo): IMO 2005 problem 4 (modular arithmetic) (#10746) ESTIMATED CHANGES Added archive/imo/imo2005_q4.lean + def a + theorem find_specified_factor Modified src/field_theory/finite/basic.lean + theorem int.modeq.pow_card_sub_one_eq_one 2021-12-13 09:36:37 9d73418 split(data/set/prod): split off `data.set.basic` (#10739) This moves `set.prod`, `set.pi` and `set.diagonal` from `data.set.basic` to a new file `data.set.prod`. I'm crediting * Mario for `set.prod` from bd013e8089378e8057dc7e93c9eaf2c8ebaf25a2 * Johannes for `set.pi` from da7bbd7fc2c80a785f7992bb7751304f6cafe235 * Patrick for `set.diagonal` from #3118 ESTIMATED CHANGES Modified archive/imo/imo1972_b2.lean Modified archive/imo/imo2008_q2.lean Modified src/algebra/ring/basic.lean Modified src/data/set/basic.lean - def set.diagonal - theorem set.diagonal_eq_range - theorem set.empty_pi - theorem set.empty_prod - theorem set.eval_image_pi - theorem set.eval_image_univ_pi - theorem set.eval_preimage' - theorem set.eval_preimage - theorem set.exists_prod_set - theorem set.forall_prod_set - theorem set.fst_image_prod - theorem set.fst_image_prod_subset - theorem set.image_prod +/- theorem set.image_swap_eq_preimage_swap - theorem set.image_swap_prod - theorem set.insert_pi - theorem set.insert_prod - theorem set.mem_diagonal - theorem set.mem_pi - theorem set.mem_prod - theorem set.mem_prod_eq - theorem set.mem_univ_pi - theorem set.mk_mem_prod - theorem set.mk_preimage_prod - theorem set.mk_preimage_prod_left - theorem set.mk_preimage_prod_left_eq_empty - theorem set.mk_preimage_prod_left_eq_if - theorem set.mk_preimage_prod_left_fn_eq_if - theorem set.mk_preimage_prod_right - theorem set.mk_preimage_prod_right_eq_empty - theorem set.mk_preimage_prod_right_eq_if - theorem set.mk_preimage_prod_right_fn_eq_if - theorem set.nonempty.fst - theorem set.nonempty.prod - theorem set.nonempty.snd - def set.pi - theorem set.pi_congr - theorem set.pi_eq_empty - theorem set.pi_eq_empty_iff - theorem set.pi_if - theorem set.pi_inter_compl - theorem set.pi_inter_distrib - theorem set.pi_mono - theorem set.pi_nonempty_iff - theorem set.pi_univ - theorem set.pi_update_of_mem - theorem set.pi_update_of_not_mem - theorem set.preimage_coe_coe_diagonal - theorem set.preimage_prod_map_prod - theorem set.preimage_swap_prod - theorem set.prod_diff_prod - theorem set.prod_empty - theorem set.prod_eq - theorem set.prod_eq_empty_iff - theorem set.prod_image_image_eq - theorem set.prod_insert - theorem set.prod_inter_prod - theorem set.prod_mk_mem_set_prod_eq - theorem set.prod_mono - theorem set.prod_nonempty_iff - theorem set.prod_preimage_eq - theorem set.prod_preimage_left - theorem set.prod_preimage_right - theorem set.prod_range_range_eq - theorem set.prod_range_univ_eq - theorem set.prod_singleton - theorem set.prod_sub_preimage_iff - theorem set.prod_subset_iff - theorem set.prod_subset_preimage_fst - theorem set.prod_subset_preimage_snd - theorem set.prod_subset_prod_iff - theorem set.prod_union - theorem set.prod_univ - theorem set.prod_univ_range_eq - theorem set.range_dcomp - theorem set.range_pair_subset - theorem set.range_prod_map - theorem set.singleton_pi' - theorem set.singleton_pi - theorem set.singleton_prod - theorem set.singleton_prod_singleton - theorem set.snd_image_prod - theorem set.snd_image_prod_subset - theorem set.subset_pi_eval_image - theorem set.union_pi - theorem set.union_prod - theorem set.univ_pi_empty - theorem set.univ_pi_eq_empty - theorem set.univ_pi_eq_empty_iff - theorem set.univ_pi_ite - theorem set.univ_pi_nonempty_iff - theorem set.univ_pi_update - theorem set.univ_pi_update_univ - theorem set.univ_prod - theorem set.univ_prod_univ - theorem set.update_preimage_pi - theorem set.update_preimage_univ_pi Modified src/data/set/function.lean Modified src/data/set/intervals/basic.lean Added src/data/set/prod.lean + def set.diagonal + theorem set.diagonal_eq_range + theorem set.empty_pi + theorem set.empty_prod + theorem set.eval_image_pi + theorem set.eval_image_univ_pi + theorem set.eval_preimage' + theorem set.eval_preimage + theorem set.exists_prod_set + theorem set.forall_prod_set + theorem set.fst_image_prod + theorem set.fst_image_prod_subset + theorem set.image_prod + theorem set.image_swap_prod + theorem set.insert_pi + theorem set.insert_prod + theorem set.mem_diagonal + theorem set.mem_pi + theorem set.mem_prod + theorem set.mem_prod_eq + theorem set.mem_univ_pi + theorem set.mk_mem_prod + theorem set.mk_preimage_prod + theorem set.mk_preimage_prod_left + theorem set.mk_preimage_prod_left_eq_empty + theorem set.mk_preimage_prod_left_eq_if + theorem set.mk_preimage_prod_left_fn_eq_if + theorem set.mk_preimage_prod_right + theorem set.mk_preimage_prod_right_eq_empty + theorem set.mk_preimage_prod_right_eq_if + theorem set.mk_preimage_prod_right_fn_eq_if + theorem set.nonempty.fst + theorem set.nonempty.prod + theorem set.nonempty.snd + def set.pi + theorem set.pi_congr + theorem set.pi_eq_empty + theorem set.pi_eq_empty_iff + theorem set.pi_if + theorem set.pi_inter_compl + theorem set.pi_inter_distrib + theorem set.pi_mono + theorem set.pi_nonempty_iff + theorem set.pi_univ + theorem set.pi_update_of_mem + theorem set.pi_update_of_not_mem + theorem set.preimage_coe_coe_diagonal + theorem set.preimage_prod_map_prod + theorem set.preimage_swap_prod + theorem set.prod_diff_prod + theorem set.prod_empty + theorem set.prod_eq + theorem set.prod_eq_empty_iff + theorem set.prod_image_image_eq + theorem set.prod_insert + theorem set.prod_inter_prod + theorem set.prod_mk_mem_set_prod_eq + theorem set.prod_mono + theorem set.prod_nonempty_iff + theorem set.prod_preimage_eq + theorem set.prod_preimage_left + theorem set.prod_preimage_right + theorem set.prod_range_range_eq + theorem set.prod_range_univ_eq + theorem set.prod_singleton + theorem set.prod_sub_preimage_iff + theorem set.prod_subset_iff + theorem set.prod_subset_preimage_fst + theorem set.prod_subset_preimage_snd + theorem set.prod_subset_prod_iff + theorem set.prod_union + theorem set.prod_univ + theorem set.prod_univ_range_eq + theorem set.range_dcomp + theorem set.range_pair_subset + theorem set.range_prod_map + theorem set.singleton_pi' + theorem set.singleton_pi + theorem set.singleton_prod + theorem set.singleton_prod_singleton + theorem set.snd_image_prod + theorem set.snd_image_prod_subset + theorem set.subset_pi_eval_image + theorem set.union_pi + theorem set.union_prod + theorem set.univ_pi_empty + theorem set.univ_pi_eq_empty + theorem set.univ_pi_eq_empty_iff + theorem set.univ_pi_ite + theorem set.univ_pi_nonempty_iff + theorem set.univ_pi_update + theorem set.univ_pi_update_univ + theorem set.univ_prod + theorem set.univ_prod_univ + theorem set.update_preimage_pi + theorem set.update_preimage_univ_pi Modified src/topology/algebra/nonarchimedean/basic.lean Modified test/lift.lean 2021-12-13 09:36:36 e60899c feat(linear_algebra/orientation): inherit an action by `units R` on `module.ray R M` (#10738) This action is just the action inherited on the elements of the module under the quotient. We provide it generally for any group `G` that satisfies the required properties, but are only really interested in `G = units R`. This PR also provides `module.ray.map`, for sending a ray through a linear equivalence. This generalization also provides us with `mul_action (M ≃ₗ[R] M) (module.ray R M)`, which might also turn out to be useful. ESTIMATED CHANGES Modified src/linear_algebra/orientation.lean + theorem module.ray.linear_equiv_smul_eq_map + def module.ray.map + theorem module.ray.map_apply + theorem module.ray.map_refl + theorem module.ray.map_symm + theorem module.ray.units_smul_of_neg + theorem module.ray.units_smul_of_pos + def ray_vector.map_linear_equiv + theorem same_ray.map + theorem same_ray.smul + theorem same_ray_map_iff +/- theorem same_ray_neg_smul_left_iff +/- theorem same_ray_neg_smul_right_iff +/- theorem same_ray_smul_left_iff +/- theorem same_ray_smul_right_iff + theorem smul_ray_of_ne_zero + theorem units_smul_eq_neg_iff + theorem units_smul_eq_self_iff 2021-12-13 09:36:35 ea88bd6 refactor(algebra/triv_sq_zero_ext): generalize and cleanup (#10729) This: * Generalizes typeclass assumptions on many lemmas * Generalizes and adds missing typeclass instances on `triv_sq_zero_ext`, most notably the algebra structure over a different ring. * Reorders many of the lemmas in the file to ensure that the right arguments are implicit / explicit ESTIMATED CHANGES Modified src/algebra/triv_sq_zero_ext.lean + theorem triv_sq_zero_ext.algebra_map_eq_inl' + theorem triv_sq_zero_ext.algebra_map_eq_inl + theorem triv_sq_zero_ext.algebra_map_eq_inl_hom +/- def triv_sq_zero_ext.fst_hom +/- theorem triv_sq_zero_ext.fst_smul +/- theorem triv_sq_zero_ext.inl_add +/- theorem triv_sq_zero_ext.inl_fst_add_inr_snd_eq +/- def triv_sq_zero_ext.inl_hom + theorem triv_sq_zero_ext.inl_smul +/- theorem triv_sq_zero_ext.inr_add +/- theorem triv_sq_zero_ext.inr_smul +/- theorem triv_sq_zero_ext.snd_smul +/- def triv_sq_zero_ext Modified src/linear_algebra/exterior_algebra.lean 2021-12-13 09:36:34 e70e22f feat(data/{list, multiset, finset}/range): add range_add (#10706) Adds `range_add` lemmas ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.range_add Modified src/data/list/range.lean + theorem list.range_add Modified src/data/multiset/range.lean + theorem multiset.range_add + theorem multiset.range_add_eq_union + theorem multiset.range_disjoint_map_add 2021-12-13 09:36:32 e4b6b5c feat(order/galois_connection): add lt_iff_lt (#10702) A lemma for galois connections on linear orders. ESTIMATED CHANGES Modified src/order/galois_connection.lean + theorem galois_connection.lt_iff_lt 2021-12-13 09:36:31 29fecae feat(data/polynomial/degree/definitions): add pow lemmas (#10698) Add lemmas `nat_degree_pow_le` and `coeff_pow_degree_mul_degree` ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.coeff_pow_mul_nat_degree + theorem polynomial.nat_degree_pow_le 2021-12-13 09:36:30 fb81950 feat(analysis/convex/basic): lemmas about midpoint and segment (#10682) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem mem_segment_add_sub + theorem mem_segment_sub_add + theorem midpoint_mem_segment Modified src/linear_algebra/affine_space/midpoint.lean + theorem midpoint_add_sub + theorem midpoint_neg_self + theorem midpoint_self_neg + theorem midpoint_sub_add 2021-12-13 09:36:28 f8171e0 feat(algebra/graded_monoid): dependent products (#10674) This introduces `list.dprod`, which takes the (possibly non-commutative) product of a list of graded elements of type `A i`. This definition primarily exist to allow `graded_monoid.mk` and `direct_sum.of` to be pulled outside a product, such as in the new `graded_monoid.mk_list_dprod` and `direct_sum.of_list_dprod` lemmas added in this PR. ESTIMATED CHANGES Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.list_prod_of_fn_of_eq_dprod + theorem direct_sum.of_list_dprod Modified src/algebra/graded_monoid.lean + theorem graded_monoid.list_prod_map_eq_dprod + theorem graded_monoid.list_prod_of_fn_eq_dprod + theorem graded_monoid.mk_list_dprod + def list.dprod + theorem list.dprod_cons + def list.dprod_index + theorem list.dprod_index_cons + theorem list.dprod_index_eq_map_sum + theorem list.dprod_index_nil + theorem list.dprod_monoid + theorem list.dprod_nil + theorem set_like.coe_list_dprod + theorem set_like.list_dprod_eq 2021-12-13 09:36:27 309da20 feat(*): Random lemmas about adjoin/span. (#10666) ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem submonoid.pow_smul_mem_closure_smul Modified src/group_theory/submonoid/membership.lean + theorem submonoid.map_powers Modified src/linear_algebra/basic.lean + theorem submodule.span_attach_bUnion + theorem submodule.span_smul_eq_of_is_unit + theorem submodule.span_smul_le Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_Union + theorem algebra.adjoin_attach_bUnion + theorem algebra.adjoin_eq_Inf + theorem algebra.pow_smul_mem_adjoin_smul Modified src/ring_theory/ideal/operations.lean + theorem submodule.ideal_span_singleton_smul + theorem submodule.mem_of_span_top_of_smul_mem + theorem submodule.span_smul_eq + theorem submodule.union_eq_smul_set 2021-12-13 09:36:26 e19473a feat(algebra/pointwise): Multiplying a singleton (#10660) and other lemmas about `finset.product` and singletons. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem finset.mem_one + theorem finset.mul_singleton - theorem finset.mul_singleton_zero_subset + theorem finset.mul_zero_subset + theorem finset.nonempty.mul_zero + theorem finset.nonempty.zero_mul + theorem finset.one_subset + theorem finset.singleton_mul + theorem finset.singleton_mul_singleton - theorem finset.singleton_zero_mul_subset + theorem finset.zero_mul_subset Modified src/data/finset/prod.lean + theorem finset.product_singleton + theorem finset.singleton_product + theorem finset.singleton_product_singleton 2021-12-13 09:36:25 ec48e3b feat(analysis/convex/strict): Strictly convex sets (#10648) This defines strictly convex sets. ESTIMATED CHANGES Added src/analysis/convex/strict.lean + theorem directed.strict_convex_Union + theorem directed_on.strict_convex_sUnion + theorem is_open.strict_convex_iff + theorem set.subsingleton.strict_convex + theorem strict_convex.add + theorem strict_convex.add_left + theorem strict_convex.add_right + theorem strict_convex.add_smul_mem + theorem strict_convex.add_smul_sub_mem + theorem strict_convex.affine_image + theorem strict_convex.affine_preimage + theorem strict_convex.affinity + theorem strict_convex.eq_of_open_segment_subset_frontier + theorem strict_convex.is_linear_image + theorem strict_convex.is_linear_preimage + theorem strict_convex.linear_image + theorem strict_convex.linear_preimage + theorem strict_convex.mem_smul_of_zero_mem + theorem strict_convex.neg + theorem strict_convex.neg_preimage + theorem strict_convex.open_segment_subset + theorem strict_convex.preimage_add_left + theorem strict_convex.preimage_add_right + theorem strict_convex.preimage_smul + theorem strict_convex.smul + theorem strict_convex.smul_mem_of_zero_mem + def strict_convex + theorem strict_convex_Icc + theorem strict_convex_Ici + theorem strict_convex_Ico + theorem strict_convex_Iic + theorem strict_convex_Iio + theorem strict_convex_Ioc + theorem strict_convex_Ioi + theorem strict_convex_Ioo + theorem strict_convex_empty + theorem strict_convex_iff_convex + theorem strict_convex_iff_div + theorem strict_convex_iff_open_segment_subset + theorem strict_convex_iff_ord_connected + theorem strict_convex_interval + theorem strict_convex_singleton + theorem strict_convex_univ 2021-12-13 09:36:23 2d47c1d feat(ring_theory/polynomial/cyclotomic/*): ɸₙ(1) = 1 (#10483) (for `n` not a prime power) ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic/eval.lean + theorem polynomial.eval_one_cyclotomic_not_prime_pow 2021-12-13 07:53:00 7cd8adb chore(category_theory/limits): Generalize universe for preserving limits (#10736) ESTIMATED CHANGES Modified src/category_theory/closed/functor.lean Modified src/category_theory/closed/ideal.lean Modified src/category_theory/limits/comma.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/creates.lean + def category_theory.creates_colimits +/- def category_theory.creates_colimits_of_nat_iso + def category_theory.creates_limits +/- def category_theory.creates_limits_of_nat_iso +/- theorem category_theory.has_colimits_of_has_colimits_creates_colimits +/- theorem category_theory.has_limits_of_has_limits_creates_limits Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/preserves/basic.lean +/- def category_theory.limits.fully_faithful_reflects_colimits +/- def category_theory.limits.fully_faithful_reflects_limits + def category_theory.limits.preserves_colimits +/- def category_theory.limits.preserves_colimits_of_nat_iso +/- def category_theory.limits.preserves_colimits_of_reflects_of_preserves +/- def category_theory.limits.preserves_colimits_of_shape_of_equiv + def category_theory.limits.preserves_limits +/- def category_theory.limits.preserves_limits_of_nat_iso +/- def category_theory.limits.preserves_limits_of_reflects_of_preserves +/- def category_theory.limits.preserves_limits_of_shape_of_equiv + def category_theory.limits.reflects_colimits +/- def category_theory.limits.reflects_colimits_of_nat_iso + def category_theory.limits.reflects_limits +/- def category_theory.limits.reflects_limits_of_nat_iso Modified src/category_theory/limits/preserves/finite.lean Modified src/category_theory/limits/preserves/functor_category.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monad/monadicity.lean Modified src/category_theory/sites/limits.lean Modified src/category_theory/sites/sheaf.lean 2021-12-13 07:52:59 381b954 feat(algebraic_geometry): An integral scheme is reduced and irreducible (#10733) ESTIMATED CHANGES Modified src/algebra/category/CommRing/constructions.lean + theorem CommRing.subsingleton_of_is_terminal Modified src/algebra/ring/prod.lean + theorem false_of_nontrivial_of_product_domain Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/locally_ringed_space.lean Added src/algebraic_geometry/properties.lean Modified src/ring_theory/nilpotent.lean 2021-12-13 07:52:58 214a80f feat(data/mv_polynomial/variables): API for mv_polynomial.degree_of (#10646) This PR provides some API for `mv_polynomial.degree_of` for `comm_ring` and `comm_semiring`. I don't know which of these lemmas should be simp lemmas. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem multiset.count_finset_sup - theorem multiset.count_sup Modified src/data/finsupp/basic.lean +/- theorem finsupp.support_neg + theorem finsupp.support_sub Modified src/data/mv_polynomial/comm_ring.lean + theorem mv_polynomial.degree_of_sub_lt + theorem mv_polynomial.support_sub Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.degree_of_C + theorem mv_polynomial.degree_of_X + theorem mv_polynomial.degree_of_add_le + theorem mv_polynomial.degree_of_eq_sup + theorem mv_polynomial.degree_of_lt_iff + theorem mv_polynomial.degree_of_mul_X_eq + theorem mv_polynomial.degree_of_mul_X_ne + theorem mv_polynomial.degree_of_mul_le + theorem mv_polynomial.monomial_le_degree_of Modified src/ring_theory/mv_polynomial/basic.lean 2021-12-13 07:52:57 8b8f08d feat(category_theory/limits): The associativity of pullbacks and pushouts. (#10619) Also provides the pasting lemma for pullback (pushout) squares ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.big_square_is_pullback + def category_theory.limits.big_square_is_pushout + theorem category_theory.limits.has_pullback_assoc + theorem category_theory.limits.has_pullback_assoc_symm + theorem category_theory.limits.has_pushout_assoc + theorem category_theory.limits.has_pushout_assoc_symm + theorem category_theory.limits.inl_inl_pushout_assoc_hom + theorem category_theory.limits.inl_inl_pushout_left_pushout_inr_iso_hom + theorem category_theory.limits.inl_inr_pushout_assoc_inv + theorem category_theory.limits.inl_pushout_assoc_inv + theorem category_theory.limits.inl_pushout_left_pushout_inr_iso_inv + theorem category_theory.limits.inr_inl_pushout_assoc_hom + theorem category_theory.limits.inr_inl_pushout_left_pushout_inr_iso_hom + theorem category_theory.limits.inr_inr_pushout_assoc_inv + theorem category_theory.limits.inr_pushout_assoc_hom + theorem category_theory.limits.inr_pushout_left_pushout_inr_iso_hom + theorem category_theory.limits.inr_pushout_left_pushout_inr_iso_inv + def category_theory.limits.left_square_is_pullback + def category_theory.limits.pullback_assoc + theorem category_theory.limits.pullback_assoc_hom_fst + theorem category_theory.limits.pullback_assoc_hom_snd_fst + theorem category_theory.limits.pullback_assoc_hom_snd_snd + theorem category_theory.limits.pullback_assoc_inv_fst_fst + theorem category_theory.limits.pullback_assoc_inv_fst_snd + theorem category_theory.limits.pullback_assoc_inv_snd + def category_theory.limits.pullback_assoc_is_pullback + def category_theory.limits.pullback_assoc_symm_is_pullback + def category_theory.limits.pullback_pullback_left_is_pullback + def category_theory.limits.pullback_pullback_right_is_pullback + def category_theory.limits.pullback_right_pullback_fst_iso + theorem category_theory.limits.pullback_right_pullback_fst_iso_hom_fst + theorem category_theory.limits.pullback_right_pullback_fst_iso_hom_snd + theorem category_theory.limits.pullback_right_pullback_fst_iso_inv_fst + theorem category_theory.limits.pullback_right_pullback_fst_iso_inv_snd_fst + theorem category_theory.limits.pullback_right_pullback_fst_iso_inv_snd_snd + def category_theory.limits.pushout_assoc + def category_theory.limits.pushout_assoc_is_pushout + def category_theory.limits.pushout_assoc_symm_is_pushout + def category_theory.limits.pushout_left_pushout_inr_iso + def category_theory.limits.pushout_pushout_left_is_pushout + def category_theory.limits.pushout_pushout_right_is_pushout + def category_theory.limits.right_square_is_pushout 2021-12-13 07:52:56 b6b47ed feat(algebraic_geometry/presheafed_space): Open immersions of presheafed spaces has pullbacks. (#10069) ESTIMATED CHANGES Modified src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.PresheafedSpace.is_open_immersion.iso_of_range_eq + def algebraic_geometry.PresheafedSpace.is_open_immersion.lift + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.lift_fac + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.lift_uniq + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_condition + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_fst + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_is_limit + def algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift_fst + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_cone_of_left_lift_snd + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.pullback_snd_is_iso_of_range_subset 2021-12-13 07:15:39 fcd0f11 feat(category_theory/flat_functor): Generalize results into algebraic categories. (#10735) Also proves that the identity is flat, and compositions of flat functors are flat. ESTIMATED CHANGES Modified src/category_theory/flat_functors.lean +/- def category_theory.Lan_evaluation_iso_colim 2021-12-13 00:12:14 0690542 feat(data/nat/prime): add `prime.dvd_mul_of_dvd_ne` (#10727) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.dvd_mul_of_dvd_ne 2021-12-13 00:12:12 0c248b7 feat(algebra/{group,ring}/opposite): `{ring,monoid}_hom.from_opposite` (#10723) We already have the `to_opposite` versions. ESTIMATED CHANGES Modified src/algebra/group/opposite.lean + def monoid_hom.from_opposite Modified src/algebra/ring/opposite.lean + def ring_hom.from_opposite 2021-12-13 00:12:11 4b07949 chore(algebra/module/submodule): missing is_central_scalar instance (#10720) ESTIMATED CHANGES Modified src/algebra/module/submodule.lean Modified src/group_theory/group_action/sub_mul_action.lean 2021-12-13 00:12:10 41def6a feat(algebra/tropical/big_operators): sum, prod, Inf (#10544) ESTIMATED CHANGES Added src/algebra/tropical/big_operators.lean + theorem finset.trop_inf + theorem finset.untrop_sum' + theorem finset.untrop_sum + theorem list.trop_minimum + theorem list.trop_sum + theorem list.untrop_prod + theorem multiset.trop_inf + theorem multiset.trop_sum + theorem multiset.untrop_prod + theorem multiset.untrop_sum + theorem trop_Inf_image + theorem trop_infi + theorem trop_sum + theorem untrop_prod + theorem untrop_sum + theorem untrop_sum_eq_Inf_image Added src/algebra/tropical/lattice.lean 2021-12-12 23:25:29 b9f2440 chore(linear_algebra/orientation): golf a proof (#10742) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem alternating_map.map_basis_eq_zero_iff + theorem alternating_map.map_basis_ne_zero_iff Modified src/linear_algebra/orientation.lean 2021-12-12 21:34:23 19dd4be chore(tactic/reserved_notation): change precedence of sup and inf (#10623) Put the precedence of `⊔` and `⊓` at 68 and 69 respectively, which is above `+` (65), `∑` and `∏` (67), and below `*` (70). This makes sure that inf and sup behave in the same way in expressions where arithmetic operations appear (which was not the case before). Discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/inf.20and.20sup.20don't.20bind.20similarly ESTIMATED CHANGES Modified src/algebra/lattice_ordered_group.lean +/- theorem inf_mul_sup Modified src/tactic/reserved_notation.lean 2021-12-12 15:54:29 61b0f41 refactor(data/{mv_,}polynomial): lemmas about `adjoin` (#10670) Prove `adjoin {X} = ⊤` and `adjoin (range X) = ⊤` for `polynomial`s and `mv_polynomial`s much earlier and use these equalities to golf some proofs. Also drop some `comm_` in typeclass assumptions. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.coe_map Modified src/data/mv_polynomial/basic.lean + theorem algebra.adjoin_eq_range + theorem algebra.adjoin_range_eq_range_aeval + theorem mv_polynomial.adjoin_range_X +/- theorem mv_polynomial.alg_hom_ext Modified src/data/mv_polynomial/supported.lean Modified src/data/polynomial/algebra_map.lean + theorem algebra.adjoin_singleton_eq_range_aeval + theorem polynomial.adjoin_X + theorem polynomial.aeval_X_left Modified src/ring_theory/adjoin/basic.lean + theorem alg_hom.adjoin_le_equalizer + theorem alg_hom.ext_of_adjoin_eq_top Modified src/ring_theory/adjoin/fg.lean Deleted src/ring_theory/adjoin/polynomial.lean - theorem algebra.adjoin_eq_range - theorem algebra.adjoin_range_eq_range_aeval - theorem algebra.adjoin_singleton_eq_range_aeval 2021-12-12 06:54:07 e68fcf8 move(data/bool/*): Move `bool` files in one folder (#10718) * renames `data.bool` to `data.bool.basic` * renames `data.set.bool` to `data.bool.set` * splits `data.bool.all_any` off `data.list.basic` ESTIMATED CHANGES Added src/data/bool/all_any.lean + theorem list.all_cons + theorem list.all_iff_forall + theorem list.all_iff_forall_prop + theorem list.all_nil + theorem list.any_cons + theorem list.any_iff_exists + theorem list.any_iff_exists_prop + theorem list.any_nil + theorem list.any_of_mem Renamed src/data/bool.lean to src/data/bool/basic.lean +/- theorem bool.not_ff Renamed src/data/set/bool.lean to src/data/bool/set.lean Modified src/data/list/basic.lean - theorem list.all_cons - theorem list.all_iff_forall - theorem list.all_iff_forall_prop - theorem list.all_nil - theorem list.any_cons - theorem list.any_iff_exists - theorem list.any_iff_exists_prop - theorem list.any_nil - theorem list.any_of_mem Modified src/data/multiset/basic.lean Modified src/order/complete_lattice.lean Modified src/tactic/clear.lean Modified src/tactic/find_unused.lean Modified src/tactic/lint/misc.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/suggest.lean 2021-12-12 01:37:53 50e318e feat(algebra/order/ring): pos_iff_pos_of_mul_pos, neg_iff_neg_of_mul_pos (#10634) Add four lemmas, deducing equivalence of `a` and `b` being positive or negative from such a hypothesis for their product, that don't currently seem to be present. ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem neg_iff_neg_of_mul_pos + theorem neg_iff_pos_of_mul_neg +/- theorem neg_of_mul_pos_left +/- theorem neg_of_mul_pos_right + theorem pos_iff_neg_of_mul_neg + theorem pos_iff_pos_of_mul_pos 2021-12-11 21:21:53 f361373 chore(order/boolean_algebra): add `compl_sdiff` (#10722) Also mark `sdiff_compl` and `top_sdiff` as `@[simp]`. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem compl_sdiff +/- theorem sdiff_compl +/- theorem top_sdiff 2021-12-11 21:21:52 f9fff7c feat(measure_theory): integral is mono in measure (#10721) * Bochner integral of a nonnegative function is monotone in measure; * set integral of a nonnegative function is monotone in set (generalize existing lemma); * interval integral of a nonnegative function is monotone in interval. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.integral_mono_measure Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.integral_mono_interval Modified src/measure_theory/integral/set_integral.lean +/- theorem measure_theory.set_integral_mono_set 2021-12-11 21:21:51 cc5ff8c feat(group_theory/submonoid): The submonoid of left inverses of a submonoid (#10679) ESTIMATED CHANGES Modified src/algebra/group/units.lean Modified src/group_theory/submonoid/basic.lean Added src/group_theory/submonoid/inverses.lean + def submonoid.from_comm_left_inv + def submonoid.from_left_inv + theorem submonoid.from_left_inv_eq_iff + theorem submonoid.from_left_inv_eq_inv + theorem submonoid.from_left_inv_left_inv_equiv_symm + theorem submonoid.from_left_inv_mul + theorem submonoid.from_left_inv_one + theorem submonoid.is_unit.submonoid.coe_inv + def submonoid.left_inv + theorem submonoid.left_inv_eq_inv + def submonoid.left_inv_equiv + theorem submonoid.left_inv_equiv_mul + theorem submonoid.left_inv_equiv_symm_eq_inv + theorem submonoid.left_inv_equiv_symm_from_left_inv + theorem submonoid.left_inv_equiv_symm_mul + theorem submonoid.left_inv_le_is_unit + theorem submonoid.left_inv_left_inv_eq + theorem submonoid.left_inv_left_inv_le + theorem submonoid.mul_from_left_inv + theorem submonoid.mul_left_inv_equiv + theorem submonoid.mul_left_inv_equiv_symm + theorem submonoid.unit_mem_left_inv 2021-12-11 21:21:50 1c2b742 feat(ring_theory/polynomial/cyclotomic/eval): `cyclotomic_pos` (#10482) ESTIMATED CHANGES Modified counterexamples/cyclotomic_105.lean Modified src/data/nat/basic.lean + theorem nat.two_lt_of_ne Modified src/number_theory/primes_congruent_one.lean Renamed src/ring_theory/polynomial/cyclotomic.lean to src/ring_theory/polynomial/cyclotomic/basic.lean - theorem polynomial.eval_one_cyclotomic_prime - theorem polynomial.eval_one_cyclotomic_prime_pow - theorem polynomial.eval₂_one_cyclotomic_prime - theorem polynomial.eval₂_one_cyclotomic_prime_pow + theorem polynomial.prod_cyclotomic_eq_geom_sum Added src/ring_theory/polynomial/cyclotomic/eval.lean + theorem polynomial.cyclotomic_pos + theorem polynomial.eval_one_cyclotomic_prime + theorem polynomial.eval_one_cyclotomic_prime_pow + theorem polynomial.eval₂_one_cyclotomic_prime + theorem polynomial.eval₂_one_cyclotomic_prime_pow 2021-12-11 19:31:57 f068b9d refactor(algebra/group/basic): Migrate add_comm_group section into comm_group section (#10565) Currently mathlib has a rich set of lemmas connecting the addition, subtraction and negation additive commutative group operations, but a far thinner collection of results for multiplication, division and inverse multiplicative commutative group operations, despite the fact that the former can be generated easily from the latter via to_additive. This PR refactors the additive results in the `add_comm_group` section as the equivalent multiplicative results in the `comm_group` section and then recovers the additive results via to_additive. There is a complication in that unfortunately the multiplicative forms of the names of some of the `add_comm_group` lemmas collide with existing names in `group_with_zero`. I have worked around this by appending an apostrophe to the name and then manually overriding the names generated by to_additive. In a few cases, names with `1...n` appended apostrophes already existed. In these cases I have appended `n+1` apostrophes. Previous discussion The `add_group` section was previously tackled in #10532. ESTIMATED CHANGES Modified src/algebra/group/basic.lean - theorem add_add_neg_cancel'_right - theorem add_add_sub_cancel - theorem add_eq_of_eq_sub' - theorem add_sub_add_left_eq_sub - theorem add_sub_cancel' - theorem add_sub_cancel'_right - theorem add_sub_comm - theorem add_sub_sub_cancel + theorem div_div + theorem div_div_cancel + theorem div_div_cancel_left + theorem div_div_div_cancel_left + theorem div_div_self' + theorem div_eq_div_iff_div_eq_div + theorem div_eq_div_iff_mul_eq_mul + theorem div_eq_div_mul_div + theorem div_eq_iff_eq_mul' + theorem div_eq_inv_mul' + theorem div_mul + theorem div_mul_cancel'' + theorem div_mul_div_cancel'' + theorem div_mul_eq_div_div + theorem div_mul_eq_mul_div' + theorem div_mul_mul_cancel + theorem div_right_comm' - theorem eq_add_of_sub_eq' + theorem eq_div_iff_mul_eq'' + theorem eq_div_of_mul_eq'' + theorem eq_mul_of_div_eq' - theorem eq_sub_iff_add_eq' - theorem eq_sub_of_add_eq' + theorem inv_div_inv + theorem inv_inv_div_inv + theorem inv_mul' + theorem inv_mul_eq_div + theorem mul_div_cancel''' + theorem mul_div_cancel'_right + theorem mul_div_comm' + theorem mul_div_div_cancel + theorem mul_div_mul_left_eq_div + theorem mul_eq_of_eq_div' + theorem mul_mul_div_cancel + theorem mul_mul_inv_cancel'_right - theorem neg_add' - theorem neg_add_eq_sub - theorem neg_neg_sub_neg - theorem neg_sub_neg - theorem sub_add - theorem sub_add_add_cancel - theorem sub_add_cancel' - theorem sub_add_eq_add_sub - theorem sub_add_eq_sub_sub - theorem sub_add_sub_cancel' - theorem sub_eq_iff_eq_add' - theorem sub_eq_neg_add - theorem sub_eq_sub_add_sub - theorem sub_eq_sub_iff_add_eq_add - theorem sub_eq_sub_iff_sub_eq_sub - theorem sub_right_comm - theorem sub_sub - theorem sub_sub_cancel - theorem sub_sub_cancel_left - theorem sub_sub_self - theorem sub_sub_sub_cancel_left 2021-12-11 13:03:44 294753e Fix comment typo (#10715) ESTIMATED CHANGES Modified src/topology/order.lean 2021-12-11 11:06:55 9741766 feat(analysis/normed_space): normed space is homeomorphic to the unit ball (#10690) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + def homeomorph_unit_ball 2021-12-11 09:33:55 08d30d6 chore(algebra/pointwise): Better `variables` management (#10686) Moves a few variables from lemma statements to `variables`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean +/- theorem finset.coe_mul +/- theorem finset.empty_mul +/- theorem finset.mem_mul +/- theorem finset.mul_card_le +/- theorem finset.mul_def +/- theorem finset.mul_empty +/- theorem finset.mul_mem_mul +/- theorem finset.mul_nonempty_iff - theorem finset.mul_singleton_zero + theorem finset.mul_singleton_zero_subset +/- theorem finset.mul_subset_mul - theorem finset.singleton_zero_mul + theorem finset.singleton_zero_mul_subset +/- theorem mem_inv_smul_set_iff +/- theorem mem_smul_set_iff_inv_smul_mem +/- theorem set.range_smul_range +/- theorem set_smul_subset_iff +/- theorem set_smul_subset_set_smul_iff +/- theorem smul_mem_smul_set_iff +/- theorem submonoid.mul_subset +/- theorem submonoid.mul_subset_closure +/- theorem subset_set_smul_iff 2021-12-11 04:23:13 d856bf9 feat(ring_theory/localization): Clearing denominators (#10668) ESTIMATED CHANGES Modified src/ring_theory/localization.lean + def is_localization.common_denom + def is_localization.common_denom_of_finset + def is_localization.finset_integer_multiple + theorem is_localization.finset_integer_multiple_image + def is_localization.integer_multiple + theorem is_localization.map_integer_multiple 2021-12-10 23:48:44 0b87b0a chore(algebra/group_with_zero/defs: Rename `comm_cancel_monoid_with_zero` to `cancel_comm_monoid_with_zero` (#10669) We currently have `cancel_comm_monoid` but `comm_cancel_monoid_with_zero`. This renames the latter to follow the former. Replaced `comm_cancel_` by `cancel_comm_` everywhere. ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associated.of_mul_left +/- theorem associated.of_mul_right +/- theorem dvd_and_not_dvd_iff +/- theorem exists_associated_mem_of_dvd_prod +/- theorem multiset.prod_ne_zero_of_prime +/- theorem pow_dvd_pow_iff +/- theorem prime.associated_of_dvd +/- theorem prime.dvd_prime_iff_associated +/- theorem prime.left_dvd_or_dvd_right_of_dvd_mul +/- theorem succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul Modified src/algebra/divisibility.lean +/- theorem mul_dvd_mul_iff_right Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/gcd_monoid/multiset.lean Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/group_with_zero/defs.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring/basic.lean Modified src/algebra/squarefree.lean +/- theorem prime.squarefree Modified src/data/nat/basic.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/prime.lean Modified src/ring_theory/unique_factorization_domain.lean +/- def associates.{u} +/- theorem irreducible_iff_prime_of_exists_unique_irreducible_factors +/- theorem prime_factors_irreducible +/- theorem prime_factors_unique +/- theorem ufm_of_gcd_of_wf_dvd_monoid +/- theorem unique_factorization_monoid.iff_exists_prime_factors +/- theorem wf_dvd_monoid.iff_well_founded_associates +/- theorem wf_dvd_monoid.of_well_founded_associates 2021-12-10 21:59:37 52c2f74 docs(topology/homotopy): add namespace in docstring to fix links (#10711) Currently all the occurences of `homotopy` in the docs link to `algebra/homology/homotopy`. ESTIMATED CHANGES Modified src/topology/homotopy/basic.lean 2021-12-10 21:59:36 a12fc70 feat(logic/function/basic): surjective function is an epimorphism (#10691) * Move proofs about `surjective`/`injective` and `epi`/`mono` to `logic.function.basic` (formulated in terms of injectivity of composition), make them universe polymorphic. * drop `forall_iff_forall_surj`, use `function.surjective.forall` instead. ESTIMATED CHANGES Modified src/algebra/group/hom.lean Modified src/algebra/ring/basic.lean Modified src/category_theory/types.lean Modified src/logic/basic.lean - theorem forall_iff_forall_surj Modified src/logic/function/basic.lean +/- theorem function.bijective.comp_left + theorem function.bijective.comp_right + theorem function.injective.surjective_comp_right' + theorem function.injective.surjective_comp_right +/- theorem function.surjective.comp_left + theorem function.surjective.injective_comp_right +/- theorem function.surjective.of_comp_iff' + theorem function.surjective_of_right_cancellable_Prop 2021-12-10 20:23:28 3e1d4d3 feat(algebra/gcd_monoid): `associates` lemmas (#10705) ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean + theorem associates.mk_out + theorem associates.out_injective +/- theorem associates.out_mk + def associates_equiv_of_unique_units Modified src/ring_theory/int/basic.lean 2021-12-10 19:12:57 b7ac833 feat(ring_theory/discriminant): add the discriminant of a family of vectors (#10350) We add the definition and some basic results about the discriminant. From FLT-regular. - [x] depends on: #10657 ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.minor_mul_transpose_minor Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/linear_independent.lean + theorem fintype.not_linear_independent_iff - theorem linear_dependent_iff + theorem not_linear_independent_iff Added src/ring_theory/discriminant.lean + def algebra.discr + theorem algebra.discr_def + theorem algebra.discr_eq_det_embeddings_matrix_reindex_pow_two + theorem algebra.discr_not_zero_of_linear_independent + theorem algebra.discr_of_matrix_mul_vec + theorem algebra.discr_of_matrix_vec_mul + theorem algebra.discr_power_basis_eq_prod + theorem algebra.discr_zero_of_not_linear_independent Modified src/ring_theory/trace.lean + def algebra.embeddings_matrix + def algebra.embeddings_matrix_reindex + theorem algebra.embeddings_matrix_reindex_eq_vandermonde + def algebra.trace_matrix + theorem algebra.trace_matrix_def + theorem algebra.trace_matrix_eq_embeddings_matrix_mul_trans + theorem algebra.trace_matrix_eq_embeddings_matrix_reindex_mul_trans + theorem algebra.trace_matrix_of_basis + theorem algebra.trace_matrix_of_matrix_mul_vec + theorem algebra.trace_matrix_of_matrix_vec_mul - theorem det_trace_form_ne_zero' + theorem det_trace_matrix_ne_zero' 2021-12-10 17:07:55 71e9f90 feat(order/basic): Slightly generalized `densely_ordered` (#10664) Changed `[preorder α]` to `[has_lt α]`. ESTIMATED CHANGES Modified src/order/basic.lean +/- theorem exists_between 2021-12-10 15:16:09 12e18e8 feat(data/nat/gcd): coprime add mul lemmas (#10588) Adds `coprime m (n + k * m) ↔ coprime m n` for nats, (and permutations thereof). ESTIMATED CHANGES Modified src/data/nat/fib.lean Modified src/data/nat/gcd.lean + theorem nat.coprime_add_mul_left_left + theorem nat.coprime_add_mul_left_right + theorem nat.coprime_add_mul_right_left + theorem nat.coprime_add_mul_right_right + theorem nat.coprime_mul_left_add_left + theorem nat.coprime_mul_left_add_right + theorem nat.coprime_mul_right_add_left + theorem nat.coprime_mul_right_add_right + theorem nat.gcd_add_mul_left_left + theorem nat.gcd_add_mul_left_right + theorem nat.gcd_add_mul_right_left + theorem nat.gcd_add_mul_right_right - theorem nat.gcd_add_mul_self + theorem nat.gcd_mul_left_add_left + theorem nat.gcd_mul_left_add_right + theorem nat.gcd_mul_right_add_left + theorem nat.gcd_mul_right_add_right 2021-12-10 15:16:08 18ce3a8 feat(group_theory/group_action/defs): add a typeclass to show that an action is central (aka symmetric) (#10543) This adds a new `is_central_scalar` typeclass to indicate that `op m • a = m • a` (or rather, to indicate that a type has the same right and left scalar action on another type). The main instance for this is `comm_semigroup.is_central_scalar`, for when `m • a = m * a` and `op m • a = a * m`, and then all the other instances follow transitively when `has_scalar R (f M)` is derived from `has_scalar R M`: * `prod` * `pi` * `ulift` * `finsupp` * `dfinsupp` * `monoid_algebra` * `add_monoid_algebra` * `polynomial` * `mv_polynomial` * `matrix` * `add_monoid_hom` * `linear_map` * `complex` * `pointwise` instances on: * `set` * `submonoid` * `add_submonoid` * `subgroup` * `add_subgroup` * `subsemiring` * `subring` * `submodule` ESTIMATED CHANGES Modified src/algebra/module/hom.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/module/submodule_pointwise.lean Modified src/algebra/module/ulift.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/pointwise.lean Modified src/data/complex/module.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp/basic.lean Modified src/data/matrix/basic.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/polynomial/basic.lean Modified src/group_theory/group_action/defs.lean + theorem is_central_scalar.unop_smul_eq_smul Modified src/group_theory/group_action/opposite.lean + theorem mul_opposite.op_smul_eq_op_smul_op + theorem mul_opposite.unop_smul_eq_unop_smul_unop Modified src/group_theory/group_action/pi.lean Modified src/group_theory/group_action/prod.lean Modified src/group_theory/subgroup/pointwise.lean Modified src/group_theory/submonoid/pointwise.lean Modified src/ring_theory/subring/pointwise.lean Modified src/ring_theory/subsemiring/pointwise.lean 2021-12-10 13:26:26 94d51b9 chore(algebraic_geometry/presheafed_space): Make `has_colimits` work faster (#10703) ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space/has_colimits.lean + theorem algebraic_geometry.PresheafedSpace.colimit_carrier + def algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc + theorem algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc_fac + theorem algebraic_geometry.PresheafedSpace.colimit_presheaf 2021-12-10 13:26:25 c29b706 feat(data/int/gcd): another version of Euclid's lemma (#10622) We already have something described as "Euclid's lemma" in `ring_theory/unique_factorization_domain`, but not this specific statement of the lemma. This is Theorem 1.5 in Apostol (1976) Introduction to Analytic Number Theory ESTIMATED CHANGES Modified src/data/int/gcd.lean + theorem int.dvd_of_dvd_mul_left_of_gcd_one + theorem int.dvd_of_dvd_mul_right_of_gcd_one 2021-12-10 13:26:24 4471de6 feat(order/lattice): define a lattice structure using an injective map to another lattice (#10615) This is done similarly to `function.injective.group` etc. ESTIMATED CHANGES Modified src/order/lattice.lean 2021-12-10 13:26:23 ebbb991 feat(ring_theory/principal_ideal_domain): add some corollaries about is_coprime (#10601) ESTIMATED CHANGES Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/principal_ideal_domain.lean + theorem irreducible.coprime_iff_not_dvd + theorem is_coprime_of_irreducible_dvd + theorem is_coprime_of_prime_dvd + theorem prime.coprime_iff_not_dvd 2021-12-10 13:26:22 46ac3c4 feat(*): introduce classes for types of homomorphism (#9888) This PR is the main proof-of-concept in my plan to use typeclasses to reduce duplication surrounding `hom` classes. Essentially, I want to take each type of bundled homs, such as `monoid_hom`, and add a class `monoid_hom_class` which has an instance for each *type* extending `monoid_hom`. Declarations that now take a parameter of the specific type `monoid_hom M N` can instead take a more general `{F : Type*} [monoid_hom_class F M N] (f : F)`; this means we don't need to duplicate e.g. `monoid_hom.map_prod` to `ring_hom.map_prod`, `mul_equiv.map_prod`, `ring_equiv.map_prod`, or `monoid_hom.map_div` to `ring_hom.map_div`, `mul_equiv.map_div`, `ring_equiv.map_div`, ... Basically, instead of having `O(n * k)` declarations for `n` types of homs and `k` lemmas, following the plan we only need `O(n + k)`. ## Overview * Change `has_coe_to_fun` to include the type of the function as a parameter (rather than a field of the structure) (**done** as part of #7033) * Define a class `fun_like`, analogous to `set_like`, for types of bundled function + proof (**done** in #10286) * Extend `fun_like` for each `foo_hom` to create a `foo_hom_class` (**done** in this PR for `ring_hom` and its ancestors, **todo** in follow-up for the rest) * Change parameters of type `foo_hom A B` to take `{F : Type*} [foo_hom_class F A B] (f : F)` instead (**done** in this PR for `map_{add,zero,mul,one,sub,div}`, **todo** in follow-up for remaining declarations) ## API changes Lemmas matching `*_hom.map_{add,zero,mul,one,sub,div}` are deprecated. Use the new `simp` lemmas called simply `map_add`, `map_zero`, ... Namespaced lemmas of the form `map_{add,zero,mul,one,sub,div}` are now protected. This includes e.g. `polynomial.map_add` and `multiset.map_add`, which involve `polynomial.map` and `multiset.map` respectively. In fact, it should be possible to turn those `map` definitions into bundled maps, so we don't even need to worry about the name change. ## New classes * `zero_hom_class`, `one_hom_class` defines `map_zero`, `map_one` * `add_hom_class`, `mul_hom_class` defines `map_add`, `map_mul` * `add_monoid_hom_class`, `monoid_hom_class` extends `{zero,one}_hom_class`, `{add,mul}_hom_class` * `monoid_with_zero_hom_class` extends `monoid_hom_class` and `zero_hom_class` * `ring_hom_class` extends `monoid_hom_class`, `add_monoid_hom_class` and `monoid_with_zero_hom_class` ## Classes still to be implemented Some of the core algebraic homomorphisms are still missing their corresponding classes: * `mul_action_hom_class` defines `map_smul` * `distrib_mul_action_hom_class`, `mul_semiring_action_hom_class` extends the above * `linear_map_class` extends `add_hom_class` and defines `map_smulₛₗ` * `alg_hom_class` extends `ring_hom_class` and defines `commutes` We could also add an `equiv_like` and its descendants `add_equiv_class`, `mul_equiv_class`, `ring_equiv_class`, `linear_equiv_class`, ... ## Other changes `coe_fn_coe_base` now has an appropriately low priority, so it doesn't take precedence over `fun_like.has_coe_to_fun`. ## Why are you unbundling the morphisms again? It's not quite the same thing as unbundling. When using unbundled morphisms, parameters have the form `(f : A → B) (hf : is_foo_hom f)`; bundled morphisms look like `(f : foo_hom A B)` (where `foo_hom A B` is equivalent to `{ f : A → B // is_foo_hom f }`; typically you would use a custom structure instead of `subtype`). This plan puts a predicate on the *type* `foo_hom` rather than the *elements* of the type as you would with unbundled morphisms. I believe this will preserve the advantages of the bundled approach (being able to talk about the identity map, making it work with `simp`), while addressing one of its disadvantages (needing to duplicate all the lemmas whenever extending the type of morphisms). ## Discussion Main Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Typeclasses.20for.20morphisms Some other threads referencing this plan: * https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Morphism.20refactor * https://leanprover.zulipchat.com/#narrow/stream/263328-triage/topic/issue.20.231044.3A.20bundling.20morphisms * #1044 * #4985 ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Module/limits.lean Modified src/algebra/group/hom.lean + theorem map_div + theorem map_inv + theorem map_mul + theorem map_mul_eq_one + theorem map_mul_inv + theorem map_one - theorem monoid_hom.map_div - theorem monoid_hom.map_inv - theorem monoid_hom.map_mul - theorem monoid_hom.map_mul_inv - theorem monoid_hom.map_one - theorem monoid_with_zero_hom.map_mul - theorem monoid_with_zero_hom.map_one - theorem monoid_with_zero_hom.map_zero - theorem mul_hom.map_mul - theorem one_hom.map_one Modified src/algebra/module/linear_map.lean +/- theorem linear_map.ext - theorem linear_map.map_add - theorem linear_map.map_neg - theorem linear_map.map_sub - theorem linear_map.map_zero +/- theorem linear_map.to_fun_eq_coe Modified src/algebra/ring/basic.lean + theorem map_bit0 + theorem map_bit1 - theorem ring_hom.map_add - theorem ring_hom.map_bit0 - theorem ring_hom.map_bit1 - theorem ring_hom.map_mul - theorem ring_hom.map_neg - theorem ring_hom.map_one - theorem ring_hom.map_sub - theorem ring_hom.map_zero Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/category_theory/preadditive/default.lean Modified src/data/equiv/module.lean +/- theorem linear_equiv.ext +/- theorem linear_equiv.ext_iff - theorem linear_equiv.map_add - theorem linear_equiv.map_zero Modified src/linear_algebra/dual.lean Modified src/linear_algebra/multilinear/basic.lean - theorem multilinear_map.map_add Modified src/ring_theory/derivation.lean +/- theorem derivation.congr_fun - theorem derivation.map_add - theorem derivation.map_neg +/- theorem derivation.map_smul - theorem derivation.map_sub - theorem derivation.map_zero + theorem derivation.to_fun_eq_coe Modified src/ring_theory/tensor_product.lean Modified src/topology/algebra/module.lean - theorem continuous_linear_map.map_add - theorem continuous_linear_map.map_neg - theorem continuous_linear_map.map_sub - theorem continuous_linear_map.map_sum - theorem continuous_linear_map.map_zero 2021-12-10 11:52:56 165e055 refactor(group_theory/quotient_group): use `con` (#10699) Use `con` to define `group` structure on `G ⧸ N` instead of repeating the construction in this case. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean 2021-12-10 11:52:55 9a24b3e chore(ring_theory/noetherian): rename `submodule.fg_map` to `submodule.fg.map` (#10688) This renames: * `submodule.fg_map` to `submodule.fg.map` (to match `submonoid.fg.map` and enable dot notation) * `submodule.map_fg_of_fg` to `ideal.fg.map` * `submodule.fg_ker_ring_hom_comp` to `ideal.fg_ker_comp` to match `submodule.fg_ker_comp` and defines a new `ideal.fg` alias to avoid unfolding to `submodule R R` and `submodule.span`. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/nakayama.lean Modified src/ring_theory/noetherian.lean + theorem ideal.fg.map + def ideal.fg + theorem ideal.fg_ker_comp + theorem submodule.fg.map - theorem submodule.fg_ker_ring_hom_comp - theorem submodule.fg_map - theorem submodule.map_fg_of_fg 2021-12-10 11:52:54 24cf723 feat(ring_theory/polynomial/cyclotomic): generalize `is_root_cyclotomic` (#10687) ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic.lean +/- theorem polynomial.is_root_cyclotomic 2021-12-10 11:52:52 3dcdf93 feat(group_theory/finiteness): Lemmas about finitely generated submonoids (#10681) ESTIMATED CHANGES Modified src/group_theory/finiteness.lean + theorem monoid.fg_iff_submonoid_fg + theorem monoid.fg_of_surjective + theorem submonoid.fg.map + theorem submonoid.fg.map_injective + theorem submonoid.powers_fg 2021-12-10 11:52:50 508fc18 feat(ring_theory/ideal): Power of a spanning set is a spanning set (#10656) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.pow_multiset_sum_mem_span_pow + theorem ideal.span_pow_eq_top + theorem ideal.sum_pow_mem_span_pow 2021-12-10 09:20:23 ce0e2c4 feat(category_theory/limits): Pullback API (#10620) Needed for constructing fibered products of Schemes ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback.congr_hom + theorem category_theory.limits.pullback.congr_hom_inv + def category_theory.limits.pullback_cone.is_limit_of_comp_mono + def category_theory.limits.pullback_is_pullback_of_comp_mono + def category_theory.limits.pushout.congr_hom + theorem category_theory.limits.pushout.congr_hom_inv + def category_theory.limits.pushout_cocone.is_colimit_of_epi_comp + def category_theory.limits.pushout_is_pushout_of_epi_comp 2021-12-10 03:16:48 e7959fb chore(scripts): update nolints.txt (#10697) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-12-10 00:34:16 1ecdf71 chore(algebra/punit_instances): add `comm_cancel_monoid_with_zero`, `normalized_gcd_monoid`, and scalar action instances (#10312) Motivated by [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Is.200.20not.20equal.20to.201.3F/near/261366868). This also moves the simp lemmas closer to the instances they refer to. ESTIMATED CHANGES Modified src/algebra/punit_instances.lean - theorem punit.add_eq + theorem punit.compl_eq + theorem punit.gcd_eq + theorem punit.lcm_eq - theorem punit.neg_eq + theorem punit.norm_unit_eq + theorem punit.sdiff_eq +/- theorem punit.smul_eq - theorem punit.zero_eq Modified src/analysis/calculus/times_cont_diff.lean 2021-12-09 21:51:35 61dd343 feat(probability_theory/martingale): define martingales (#10625) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.condexp_condexp_of_le Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.trim_trim Added src/probability_theory/martingale.lean + theorem measure_theory.martingale.adapted + theorem measure_theory.martingale.add + theorem measure_theory.martingale.condexp_ae_eq + theorem measure_theory.martingale.integrable + theorem measure_theory.martingale.measurable + theorem measure_theory.martingale.neg + theorem measure_theory.martingale.smul + theorem measure_theory.martingale.sub + def measure_theory.martingale + theorem measure_theory.martingale_condexp + theorem measure_theory.martingale_zero 2021-12-09 19:38:25 e618cfe feat(topology/continuous_function/bounded): register instances of `star` structures (#10570) Prove that the bounded continuous functions which take values in a normed C⋆-ring themselves form a C⋆-ring. Moreover, if the codomain is a normed algebra and a star module over a normed ⋆-ring, then so are the bounded continuous functions. Thus the bounded continuous functions form a C⋆-algebra when the codomain is a C⋆-algebra. ESTIMATED CHANGES Modified src/analysis/normed_space/star.lean + theorem star_isometry + def star_normed_group_hom Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_star + theorem bounded_continuous_function.star_apply 2021-12-09 17:18:51 2538626 fix(tactic/ring): instantiate metavariables (#10589) Fixes the issue reported in #10572. - [x] depends on: #10572 ESTIMATED CHANGES Modified src/geometry/manifold/instances/sphere.lean Modified src/tactic/ring.lean Modified test/ring.lean 2021-12-09 16:26:29 94783be feat(algebra/algebra/spectrum): lemmas when scalars are a field (#10476) Prove some properties of the spectrum when the underlying scalar ring is a field, and mostly assuming the algebra is itself nontrivial. Show that the spectrum of a scalar (i.e., `algebra_map 𝕜 A k`) is the singleton `{k}`. Prove that `σ (a * b) \ {0} = σ (b * a) \ {0}`. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean +/- theorem is_unit.smul_sub_iff_sub_inv_smul + theorem spectrum.nonzero_mul_eq_swap_mul + theorem spectrum.one_eq + theorem spectrum.scalar_eq +/- theorem spectrum.smul_eq_smul + theorem spectrum.unit_smul_eq_smul + theorem spectrum.zero_eq 2021-12-09 14:52:57 08215b5 feat(data/finsupp/basic): lemmas on the support of the `tsub` of `finsupp`s (#10651) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.subset_support_tsub + theorem finsupp.support_tsub 2021-12-09 14:52:56 9ef122d feat(measure_theory/integral/set_to_l1): properties of (dominated_)fin_meas_additive (#10590) Various properties of `fin_meas_additive` and `dominated_fin_meas_additive` which will be useful to generalize results about integrals to `set_to_fun`. ESTIMATED CHANGES Modified src/measure_theory/integral/set_to_l1.lean + theorem measure_theory.dominated_fin_meas_additive.add + theorem measure_theory.dominated_fin_meas_additive.add_measure_left + theorem measure_theory.dominated_fin_meas_additive.add_measure_right + theorem measure_theory.dominated_fin_meas_additive.eq_zero + theorem measure_theory.dominated_fin_meas_additive.eq_zero_of_measure_zero + theorem measure_theory.dominated_fin_meas_additive.of_measure_le + theorem measure_theory.dominated_fin_meas_additive.of_measure_le_smul + theorem measure_theory.dominated_fin_meas_additive.of_smul_measure + theorem measure_theory.dominated_fin_meas_additive.smul + theorem measure_theory.dominated_fin_meas_additive.zero +/- def measure_theory.dominated_fin_meas_additive + theorem measure_theory.fin_meas_additive.add + theorem measure_theory.fin_meas_additive.map_Union_fin_meas_set_eq_sum + theorem measure_theory.fin_meas_additive.map_empty_eq_zero + theorem measure_theory.fin_meas_additive.of_eq_top_imp_eq_top + theorem measure_theory.fin_meas_additive.of_smul_measure + theorem measure_theory.fin_meas_additive.smul + theorem measure_theory.fin_meas_additive.smul_measure + theorem measure_theory.fin_meas_additive.smul_measure_iff + theorem measure_theory.fin_meas_additive.zero - theorem measure_theory.map_Union_fin_meas_set_eq_sum - theorem measure_theory.map_empty_eq_zero_of_map_union 2021-12-09 13:20:38 c23b54c feat(group_theory/submonoid): The monoid_hom from a submonoid to its image. (#10680) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + def monoid_hom.subgroup_comap + def monoid_hom.subgroup_map + theorem monoid_hom.subgroup_map_surjective Modified src/group_theory/submonoid/operations.lean + def monoid_hom.submonoid_comap + def monoid_hom.submonoid_map + theorem monoid_hom.submonoid_map_surjective 2021-12-09 13:20:36 97e4468 feat(analysis/calculus/deriv): generalize some lemmas (#10639) Generalize lemmas about the chain rule to work with different fields. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem has_deriv_within_at.comp +/- theorem has_deriv_within_at.scomp Modified src/analysis/calculus/fderiv.lean +/- theorem has_fderiv_at_filter.comp + theorem has_fderiv_at_filter.restrict_scalars Modified src/measure_theory/integral/interval_integral.lean 2021-12-09 11:18:26 bfe595d feat(order/filter,topology/instances/real): lemmas about `at_top`, `at_bot`, and `cocompact` (#10652) * prove `comap abs at_top = at_bot ⊔ at_top`; * prove `comap coe at_top = at_top` and `comap coe at_bot = at_bot` for coercion from `ℕ`, `ℤ`, or `ℚ` to an archimedian semiring, ring, or field, respectively; * prove `cocompact ℤ = at_bot ⊔ at_top` and `cocompact ℝ = at_bot ⊔ at_top`. ESTIMATED CHANGES Modified src/algebra/order/group.lean +/- theorem abs_le + theorem le_abs' Modified src/order/filter/archimedean.lean + theorem int.comap_coe_at_bot + theorem int.comap_coe_at_top + theorem nat.comap_coe_at_top + theorem rat.comap_coe_at_bot + theorem rat.comap_coe_at_top + theorem tendsto_coe_int_at_bot_iff + theorem tendsto_coe_rat_at_bot_iff Modified src/order/filter/at_top_bot.lean + theorem filter.comap_abs_at_top + theorem filter.comap_embedding_at_bot + theorem filter.comap_embedding_at_top Modified src/topology/instances/real.lean + theorem int.cocompact_eq + theorem real.cocompact_eq 2021-12-09 09:57:14 e3d9adf chore(measure_theory/function/conditional_expectation): change condexp notation (#10584) The previous definition and notation showed the `measurable_space` argument only through the other argument `m \le m0`, which tends to be replaced by `_` in the goal view if it becomes complicated. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean +/- theorem measure_theory.condexp_ae_eq_condexp_L1 +/- theorem measure_theory.condexp_const +/- theorem measure_theory.condexp_neg +/- theorem measure_theory.condexp_smul +/- theorem measure_theory.condexp_undef +/- theorem measure_theory.condexp_zero +/- theorem measure_theory.integrable_condexp +/- theorem measure_theory.integral_condexp +/- theorem measure_theory.measurable_condexp Modified src/probability_theory/notation.lean 2021-12-09 08:54:18 70171ac feat(topology/instances/real_vector_space): add an `is_scalar_tower` instance (#10490) There is at most one topological real vector space structure on a topological additive group, so `[is_scalar_tower real A E]` holds automatically as long as `A` is a topological real algebra and `E` is a topological module over `A`. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/calculus/parametric_interval_integral.lean Modified src/analysis/complex/conformal.lean Modified src/analysis/complex/real_deriv.lean Modified src/analysis/inner_product_space/basic.lean +/- theorem is_bounded_bilinear_map_inner Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/inner_product_space/rayleigh.lean Modified src/data/complex/is_R_or_C.lean Modified src/measure_theory/function/conditional_expectation.lean +/- theorem measure_theory.integral_condexp_L2_eq Modified src/measure_theory/function/l2_space.lean +/- theorem measure_theory.L2.inner_def Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.integral_const_mul +/- theorem interval_integral.integral_div +/- theorem interval_integral.integral_mul_const Modified src/measure_theory/integral/set_integral.lean +/- theorem integral_smul_const Modified src/topology/instances/real_vector_space.lean + def add_equiv.to_real_linear_equiv 2021-12-09 07:29:46 4efa9d8 chore(algebra/direct_limit): remove module.directed_system (#10636) This typeclass duplicated `_root_.directed_system` ESTIMATED CHANGES Modified src/algebra/category/Module/limits.lean Modified src/algebra/direct_limit.lean - theorem module.direct_limit.totalize_apply + theorem module.direct_limit.totalize_of_le + theorem module.direct_limit.totalize_of_not_le + theorem module.directed_system.map_map + theorem module.directed_system.map_self 2021-12-09 05:38:21 11bf7e5 feat(analysis/normed_space/weak_dual): add polar sets in preparation for Banach-Alaoglu theorem (#9836) The first of two parts to add the Banach-Alaoglu theorem about the compactness of the closed unit ball (and more generally polar sets of neighborhoods of the origin) of the dual of a normed space in the weak-star topology. This first half is about polar sets (for a set `s` in a normed space `E`, the `polar s` is the subset of `weak_dual _ E` consisting of the functionals that evaluate to something of norm at most one at all elements of `s`). ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean + def polar + theorem polar_bounded_of_nhds_zero + theorem polar_closed_ball + theorem polar_empty + theorem polar_eq_Inter + theorem smul_mem_polar + theorem zero_mem_polar Modified src/analysis/normed_space/weak_dual.lean + theorem weak_dual.is_closed_polar + def weak_dual.polar + theorem weak_dual.to_normed_dual.preimage_closed_unit_ball 2021-12-09 03:56:43 fc3116f doc(data/nat/prime): fix links (#10677) ESTIMATED CHANGES Modified src/data/nat/prime.lean 2021-12-09 03:56:42 ab31673 feat(data/finset/basic): val_le_iff_val_subset (#10603) I'm not sure if we have something like this already on mathlib. The application of `val_le_of_val_subset` that I have in mind is to deduce ``` theorem polynomial.card_roots'' {F : Type u} [field F]{p : polynomial F}(h : p ≠ 0) {Z : finset F} (hZ : ∀ z ∈ Z, polynomial.eval z p = 0) : Z.card ≤ p.nat_degree ``` from [polynomial.card_roots' ](https://github.com/leanprover-community/mathlib/blob/1376f53dacd3c3ccd3c345b6b8552cce96c5d0c8/src/data/polynomial/ring_division.lean#L318) If this approach seems right, I will send the proof of `polynomial.card_roots''` in a follow up PR. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.val_le_iff_val_subset Modified src/data/multiset/basic.lean + theorem multiset.one_le_count_iff_mem 2021-12-09 01:13:05 60c1d60 feat(data/mv_polynomial/basic) induction_on'' (#10621) A new flavor of `induction_on` which is useful when we do not have ` h_add : ∀p q, M p → M q → M (p + q)` but we have ``` h_add_weak : ∀ (a : σ →₀ ℕ) (b : R) (f : (σ →₀ ℕ) →₀ R), a ∉ f.support → b ≠ 0 → M f → M (monomial a b + f) ``` ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.induction_on''' + theorem mv_polynomial.induction_on'' + theorem mv_polynomial.induction_on_monomial 2021-12-09 01:13:04 e14dc11 feat(data/int/basic): add `nat_abs_eq_nat_abs_iff_*` lemmas for nonnegative and nonpositive arguments (#10611) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.inj_on_nat_abs_Ici + theorem int.inj_on_nat_abs_Iic + theorem int.nat_abs_inj_of_nonneg_of_nonneg + theorem int.nat_abs_inj_of_nonneg_of_nonpos + theorem int.nat_abs_inj_of_nonpos_of_nonneg + theorem int.nat_abs_inj_of_nonpos_of_nonpos + theorem int.strict_anti_on_nat_abs + theorem int.strict_mono_on_nat_abs 2021-12-08 22:28:20 baab5d3 refactor(data/matrix): reverse the direction of `matrix.minor_mul_equiv` (#10657) In #10350 this change was proposed, since we apparently use that backwards way more than we use it forwards. We also change `reindex_linear_equiv_mul`, which is similarly much more popular backwards than forwards. Closes: #10638 ESTIMATED CHANGES Modified src/algebra/lie/matrix.lean Modified src/data/matrix/basic.lean Modified src/linear_algebra/charpoly/to_matrix.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix/reindex.lean 2021-12-08 22:28:19 2ea1fb6 feat(data/list/range): fin_range_succ_eq_map (#10654) ESTIMATED CHANGES Modified src/data/list/range.lean + theorem list.fin_range_succ_eq_map + theorem list.map_coe_fin_range 2021-12-08 22:28:18 fdb773a chore(algebra/tropical/basic): golf and clean (#10633) ESTIMATED CHANGES Modified src/algebra/tropical/basic.lean + theorem tropical.trop_smul +/- theorem tropical.untrop_pow 2021-12-08 22:28:16 bcd9a74 refactor(data/complex/is_R_or_C): `finite_dimensional.proper_is_R_or_C` is not an `instance` anymore (#10629) This instance caused a search for `[finite_dimensional ?x E]` with an unknown `?x`. Turn it into a lemma and add `haveI` to some proofs. Also add an instance for `K ∙ x`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem orthogonal_family.submodule_is_internal_iff_of_is_complete Modified src/analysis/inner_product_space/rayleigh.lean Modified src/data/complex/is_R_or_C.lean + theorem finite_dimensional.proper_is_R_or_C 2021-12-08 22:28:15 e289343 feat(algebra/graded_monoid): add lemmas about power and product membership (#10627) This adds: * `set_like.graded_monoid.pow_mem` * `set_like.graded_monoid.list_prod_map_mem` * `set_like.graded_monoid.list_prod_of_fn_mem` It doesn't bother to add the multiset and finset versions for now, because these are not imported at this point, and require the ring to be commutative. ESTIMATED CHANGES Modified src/algebra/graded_monoid.lean + theorem set_like.coe_gnpow - theorem set_like.coe_gpow + theorem set_like.graded_monoid.list_prod_map_mem + theorem set_like.graded_monoid.list_prod_of_fn_mem + theorem set_like.graded_monoid.pow_mem 2021-12-08 18:44:55 1d0bb86 fix(data/finsupp/basic): add missing decidable arguments (#10672) `finsupp` is classical, meaning that `def`s should just use noncomputable decidable instances rather than taking arguments that make more work for mathematicians. However, this doesn't mean that lemma _statements_ should use noncomputable decidable instances, as this just makes the lemma less general and harder to apply (as shown by the `congr` removed elsewhere in the diff). These were found by removing `open_locale classical` from the top of the file, adding `by classical; exact` to some definitions, and then fixing the broken lemma statements. In future we should detect this type of mistake with a linter. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_update +/- theorem finsupp.equiv_fun_on_fintype_single +/- theorem finsupp.equiv_fun_on_fintype_symm_single +/- theorem finsupp.single_eq_pi_single +/- theorem finsupp.single_eq_update +/- theorem finsupp.support_single_disjoint +/- theorem finsupp.support_update +/- theorem finsupp.support_update_ne_zero +/- theorem finsupp.support_update_zero +/- theorem finsupp.to_multiset_symm_apply Modified src/data/finsupp/lattice.lean +/- theorem finsupp.disjoint_iff +/- theorem finsupp.support_inf +/- theorem finsupp.support_sup Modified src/data/finsupp/pointwise.lean +/- theorem finsupp.support_mul Modified src/data/polynomial/basic.lean 2021-12-08 17:16:46 2ce95ca refactor(data/finsupp): use `{f : α →₀ M | ∃ a b, f = single a b}` instead of union of ranges (#10671) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean - theorem finsupp.add_closure_Union_range_single + theorem finsupp.add_closure_set_of_eq_single 2021-12-08 17:16:44 8ab1b3b feat(measure_theory/probability_mass_function): Calculate supports of pmf constructions (#10371) This PR gives explicit descriptions for the `support` of the various `pmf` constructions in mathlib. This also tries to clean up the variable declarations in the different sections, so that all the lemmas don't need to specify them explicitly. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function/basic.lean +/- theorem pmf.apply_eq_zero_iff +/- theorem pmf.bind_apply + theorem pmf.mem_support_bind_iff +/- theorem pmf.mem_support_iff + theorem pmf.mem_support_pure_iff: - theorem pmf.mem_support_pure_iff +/- theorem pmf.pure_apply + theorem pmf.support_bind + theorem pmf.support_pure Modified src/measure_theory/probability_mass_function/constructions.lean + theorem pmf.bernoulli_apply - theorem pmf.bernuolli_apply +/- def pmf.bind_on_support +/- theorem pmf.bind_on_support_apply +/- theorem pmf.bind_on_support_eq_zero_iff +/- theorem pmf.bind_pure_comp +/- theorem pmf.coe_bind_on_support_apply +/- def pmf.filter +/- theorem pmf.filter_apply +/- theorem pmf.filter_apply_eq_zero_iff +/- theorem pmf.filter_apply_eq_zero_of_not_mem +/- theorem pmf.filter_apply_ne_zero_iff + theorem pmf.map_apply +/- theorem pmf.map_comp +/- theorem pmf.map_id + theorem pmf.mem_support_bernoulli_iff +/- theorem pmf.mem_support_bind_on_support_iff + theorem pmf.mem_support_filter_iff + theorem pmf.mem_support_map_iff + theorem pmf.mem_support_normalize_iff + theorem pmf.mem_support_of_finset_iff + theorem pmf.mem_support_of_fintype_iff + theorem pmf.mem_support_of_multiset_iff + theorem pmf.mem_support_seq_iff + theorem pmf.mem_support_uniform_of_finset_iff + theorem pmf.mem_support_uniform_of_fintype_iff +/- theorem pmf.normalize_apply +/- def pmf.of_finset +/- theorem pmf.of_finset_apply +/- theorem pmf.of_finset_apply_of_not_mem +/- def pmf.of_fintype +/- theorem pmf.of_fintype_apply +/- theorem pmf.of_multiset_apply +/- theorem pmf.of_multiset_apply_of_not_mem +/- theorem pmf.pure_bind_on_support +/- theorem pmf.pure_map +/- def pmf.seq + theorem pmf.seq_apply + theorem pmf.support_bernoulli + theorem pmf.support_bind_on_support + theorem pmf.support_filter + theorem pmf.support_map + theorem pmf.support_normalize + theorem pmf.support_of_finset + theorem pmf.support_of_fintype + theorem pmf.support_of_multiset + theorem pmf.support_seq + theorem pmf.support_uniform_of_finset + theorem pmf.support_uniform_of_fintype +/- theorem pmf.uniform_of_finset_apply +/- theorem pmf.uniform_of_finset_apply_of_mem +/- theorem pmf.uniform_of_finset_apply_of_not_mem +/- theorem pmf.uniform_of_fintype_apply 2021-12-08 15:28:51 678566f feat(topology/algebra/group): Addition of interiors (#10659) This proves `interior s * t ⊆ interior (s * t)`, a few prerequisites, and generalizes to `is_open.mul_left`/`is_open.mul_right`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.mul_subset_mul_left + theorem set.mul_subset_mul_right Modified src/data/set/basic.lean + theorem set.image2_subset_left + theorem set.image2_subset_right +/- theorem set.image_preimage_subset +/- theorem set.inclusion_self Modified src/topology/algebra/group.lean + theorem is_closed.inv + theorem is_open.inv +/- theorem is_open.mul_left +/- theorem is_open.mul_right + theorem subset_interior_mul + theorem subset_interior_mul_left + theorem subset_interior_mul_right 2021-12-08 13:44:00 eedb906 feat(measure_theory/integral): `∫ x in b..b+a, f x = ∫ x in c..c + a, f x` for a periodic `f` (#10477) ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem function.periodic.map_vadd_multiples + theorem function.periodic.map_vadd_zmultiples Modified src/group_theory/coset.lean + theorem quotient_group.quotient_lift_on_coe Modified src/group_theory/quotient_group.lean + theorem quotient_group.coe_div Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.mk' Added src/measure_theory/integral/periodic.lean + theorem function.periodic.interval_integral_add_eq + theorem function.periodic.interval_integral_add_eq_of_pos + theorem is_add_fundamental_domain_Ioc 2021-12-08 05:53:32 4d56716 fix(data/finsupp/basic): add missing decidable argument (#10649) While `finsupp.erase` is classical and requires no decidability, `finset.erase` is not so. Without this argument, this lemma does not apply in the general case, and introduces mismatching decidable instances. With it, a `congr` is no longer needed elsewhere in mathlib. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.support_erase Modified src/data/polynomial/basic.lean 2021-12-08 05:53:31 e5ba338 fix(algebra/direct_sum): change `ring_hom_ext` to not duplicate `ring_hom_ext'` (#10640) These two lemmas differed only in the explicitness of their binders. The statement of the unprimed version has been changed to be fully applied. This also renames `alg_hom_ext` to `alg_hom_ext'` to make way for the fully applied version. This is consistent with `direct_sum.add_hom_ext` vs `direct_sum.add_hom_ext'`. ESTIMATED CHANGES Modified src/algebra/direct_sum/algebra.lean + theorem direct_sum.alg_hom_ext' +/- theorem direct_sum.alg_hom_ext Modified src/algebra/direct_sum/ring.lean +/- theorem direct_sum.ring_hom_ext' +/- theorem direct_sum.ring_hom_ext 2021-12-08 04:59:26 b495fdf feat(category_theory): Filtered colimits preserves finite limits in algebraic categories (#10604) ESTIMATED CHANGES Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/preserves/functor_category.lean Modified src/category_theory/limits/preserves/limits.lean + def category_theory.preserves_colimit_nat_iso + def category_theory.preserves_limit_nat_iso 2021-12-08 03:50:05 2bfa768 feat(analysis/normed_space/operator_norm): module and norm instances on continuous semilinear maps (#10494) This PR adds a module and a norm instance on continuous semilinear maps, generalizes most of the results in `operator_norm.lean` to the semilinear case. Many of these results require the ring homomorphism to be isometric, which is expressed via the new typeclass `[ring_hom_isometric σ]`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_equiv.homothety_inverse +/- theorem continuous_linear_equiv.nnnorm_symm_pos +/- theorem continuous_linear_equiv.norm_pos +/- theorem continuous_linear_equiv.norm_symm_pos +/- def continuous_linear_equiv.of_homothety +/- theorem continuous_linear_equiv.one_le_norm_mul_norm_symm +/- theorem continuous_linear_equiv.subsingleton_or_nnnorm_symm_pos +/- theorem continuous_linear_equiv.subsingleton_or_norm_symm_pos +/- theorem continuous_linear_equiv.uniform_embedding +/- theorem continuous_linear_map.antilipschitz_of_uniform_embedding + def continuous_linear_map.apply' +/- def continuous_linear_map.apply + theorem continuous_linear_map.apply_apply' +/- theorem continuous_linear_map.apply_apply +/- def continuous_linear_map.bilinear_comp +/- theorem continuous_linear_map.bilinear_comp_apply +/- theorem continuous_linear_map.bound +/- theorem continuous_linear_map.bounds_bdd_below +/- theorem continuous_linear_map.bounds_nonempty +/- theorem continuous_linear_map.coe_deriv₂ + theorem continuous_linear_map.coe_flipₗᵢ' +/- theorem continuous_linear_map.coe_flipₗᵢ +/- def continuous_linear_map.compL +/- theorem continuous_linear_map.compL_apply + def continuous_linear_map.compSL + theorem continuous_linear_map.compSL_apply +/- def continuous_linear_map.deriv₂ +/- def continuous_linear_map.extend +/- theorem continuous_linear_map.extend_unique +/- theorem continuous_linear_map.extend_zero +/- def continuous_linear_map.flip +/- theorem continuous_linear_map.flip_add +/- theorem continuous_linear_map.flip_apply +/- theorem continuous_linear_map.flip_flip +/- theorem continuous_linear_map.flip_smul + def continuous_linear_map.flipₗᵢ' + theorem continuous_linear_map.flipₗᵢ'_symm +/- def continuous_linear_map.flipₗᵢ +/- theorem continuous_linear_map.flipₗᵢ_symm +/- theorem continuous_linear_map.homothety_norm +/- theorem continuous_linear_map.is_O_comp +/- theorem continuous_linear_map.is_O_sub +/- theorem continuous_linear_map.is_O_with_comp +/- theorem continuous_linear_map.is_O_with_sub +/- theorem continuous_linear_map.isometry_iff_norm +/- theorem continuous_linear_map.le_op_norm₂ +/- theorem continuous_linear_map.map_add₂ +/- theorem continuous_linear_map.nnnorm_smul_right_apply +/- theorem continuous_linear_map.norm_def +/- theorem continuous_linear_map.norm_restrict_scalars +/- theorem continuous_linear_map.norm_smul_rightL +/- theorem continuous_linear_map.norm_smul_rightL_apply +/- theorem continuous_linear_map.norm_smul_right_apply +/- def continuous_linear_map.of_homothety +/- def continuous_linear_map.op_norm +/- theorem continuous_linear_map.op_norm_comp_le +/- theorem continuous_linear_map.op_norm_comp_linear_isometry_equiv +/- theorem continuous_linear_map.op_norm_eq_of_bounds +/- theorem continuous_linear_map.op_norm_flip +/- theorem continuous_linear_map.op_norm_le_bound +/- theorem continuous_linear_map.op_norm_le_bound₂ +/- theorem continuous_linear_map.op_norm_le_of_ball +/- theorem continuous_linear_map.op_norm_le_of_lipschitz +/- theorem continuous_linear_map.op_norm_le_of_nhds_zero +/- theorem continuous_linear_map.op_norm_le_of_shell' +/- theorem continuous_linear_map.op_norm_le_of_shell +/- theorem continuous_linear_map.op_norm_neg +/- theorem continuous_linear_map.op_norm_prod +/- theorem continuous_linear_map.op_norm_zero +/- def continuous_linear_map.prodₗᵢ +/- def continuous_linear_map.restrict_scalarsL +/- def continuous_linear_map.restrict_scalars_isometry +/- def continuous_linear_map.smul_rightL +/- def linear_equiv.to_continuous_linear_equiv_of_bounds +/- theorem linear_equiv.uniform_embedding +/- theorem linear_isometry.norm_to_continuous_linear_map +/- theorem linear_isometry.norm_to_continuous_linear_map_le +/- theorem linear_map.bound_of_continuous +/- theorem linear_map.bound_of_shell +/- theorem linear_map.bound_of_shell_semi_normed +/- theorem linear_map.mk_continuous_norm_le' +/- theorem linear_map.mk_continuous_norm_le +/- def linear_map.mk_continuous₂ +/- theorem linear_map.mk_continuous₂_apply +/- theorem linear_map.mk_continuous₂_norm_le' +/- theorem linear_map.mk_continuous₂_norm_le +/- theorem norm_image_of_norm_zero Modified src/data/complex/is_R_or_C.lean Modified src/topology/algebra/module.lean +/- def continuous_linear_map.coe_lm + def continuous_linear_map.coe_lmₛₗ +/- theorem continuous_linear_map.coe_smul' +/- theorem continuous_linear_map.coe_smul +/- theorem continuous_linear_map.comp_smul +/- def continuous_linear_map.prod_equiv +/- theorem continuous_linear_map.prod_ext +/- theorem continuous_linear_map.prod_ext_iff +/- def continuous_linear_map.prodₗ 2021-12-08 02:36:46 1a92bc9 chore(scripts): update nolints.txt (#10662) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-12-07 21:13:01 eaa9e87 chore(measure_theory/integral/set_to_l1): change definition of dominated_fin_meas_additive (#10585) Change the definition to check the property only on measurable sets with finite measure (like every other property in that file). Also make some arguments of `set_to_fun` explicit to improve readability. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/set_to_l1.lean +/- theorem measure_theory.L1.simple_func.norm_set_to_L1s_le - theorem measure_theory.simple_func.norm_set_to_simple_func_le_sum_mul_norm + theorem measure_theory.simple_func.norm_set_to_simple_func_le_sum_mul_norm_of_integrable 2021-12-07 19:16:26 54aeec7 feat(topology/algebra/ordered/basic): Interior of `{x | f x ≤ g x}` (#10653) and golf the dual one: `closure_lt_subset_le` ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean + theorem lt_subset_interior_le 2021-12-07 18:28:16 a803e21 feat(measure_theory/lattice): define typeclasses for measurability of lattice operations, define a lattice on ae_eq_fun (#10591) As was previously done for measurability of arithmetic operations, I define typeclasses for the measurability of sup and inf in a lattice. In the borel_space file, instances of these are provided when the lattice operations are continuous. Finally I've put a lattice structure on `ae_eq_fun`. ESTIMATED CHANGES Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/ae_eq_fun.lean + theorem measure_theory.ae_eq_fun.coe_fn_inf + theorem measure_theory.ae_eq_fun.coe_fn_sup Added src/measure_theory/lattice.lean + theorem ae_measurable.const_inf + theorem ae_measurable.const_sup + theorem ae_measurable.inf' + theorem ae_measurable.inf + theorem ae_measurable.inf_const + theorem ae_measurable.sup' + theorem ae_measurable.sup + theorem ae_measurable.sup_const + theorem measurable.const_inf + theorem measurable.const_sup + theorem measurable.inf' + theorem measurable.inf + theorem measurable.inf_const + theorem measurable.sup' + theorem measurable.sup + theorem measurable.sup_const Modified src/topology/order/lattice.lean 2021-12-07 15:39:30 ae7a88d feat(field_theory/finite/basic): generalize lemma from field to integral domain (#10655) ESTIMATED CHANGES Modified src/field_theory/finite/basic.lean +/- theorem finite_field.prod_univ_units_id_eq_neg_one 2021-12-07 15:39:28 9a2c299 feat(data/pi): add `pi.single_inj` (#10644) ESTIMATED CHANGES Modified src/data/pi.lean + theorem pi.single_inj 2021-12-07 15:39:27 03dd404 feat(algebra/category): (co)limits in CommRing (#10593) ESTIMATED CHANGES Added src/algebra/category/CommRing/constructions.lean + def CommRing.Z_is_initial + def CommRing.equalizer_fork + def CommRing.equalizer_fork_is_limit + def CommRing.prod_fan + def CommRing.prod_fan_is_limit + def CommRing.punit_is_terminal + def CommRing.pushout_cocone + theorem CommRing.pushout_cocone_X + theorem CommRing.pushout_cocone_inl + theorem CommRing.pushout_cocone_inr + def CommRing.pushout_cocone_is_colimit Deleted src/algebra/category/CommRing/pushout.lean - def CommRing.pushout_cocone - theorem CommRing.pushout_cocone_X - theorem CommRing.pushout_cocone_inl - theorem CommRing.pushout_cocone_inr - def CommRing.pushout_cocone_is_colimit Modified src/ring_theory/ideal/local_ring.lean 2021-12-07 14:45:55 173a21a feat(topology/sheaves): `F(U ⨿ V) = F(U) × F(V)` (#10597) ESTIMATED CHANGES Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean + def Top.sheaf.inter_union_pullback_cone + theorem Top.sheaf.inter_union_pullback_cone_X + theorem Top.sheaf.inter_union_pullback_cone_fst + def Top.sheaf.inter_union_pullback_cone_lift + theorem Top.sheaf.inter_union_pullback_cone_lift_left + theorem Top.sheaf.inter_union_pullback_cone_lift_right + theorem Top.sheaf.inter_union_pullback_cone_snd + def Top.sheaf.is_limit_pullback_cone + def Top.sheaf.is_product_of_disjoint 2021-12-07 06:39:50 ba1cbfa feat(topology/algebra/ordered/basic): Add alternative formulations of four lemmas. (#10630) Add alternative formulations of lemmas about interiors and frontiers of `Iic` and `Ici`. The existing formulations make typeclass assumptions `[no_top_order]` or `[no_bot_order]`. These alternative formulations assume instead that the endpoint of the interval is not top or bottom; and as such they can be applied in, e.g., `nnreal` and `ennreal`. Also, some lemmas now assume `(Ioi a).nonempty` or `(Iio a).nonempty` instead of `{b} (h : a < b)` or `{b} (h : b < a)`, respectively. ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean +/- theorem closure_Iio' +/- theorem closure_Ioi' + theorem frontier_Ici' +/- theorem frontier_Ici + theorem frontier_Iic' +/- theorem frontier_Iic + theorem frontier_Iio' +/- theorem frontier_Iio + theorem frontier_Ioi' +/- theorem frontier_Ioi + theorem interior_Ici' +/- theorem interior_Ici + theorem interior_Iic' +/- theorem interior_Iic +/- theorem nhds_within_Iio_ne_bot' +/- theorem nhds_within_Iio_self_ne_bot' +/- theorem nhds_within_Ioi_ne_bot' +/- theorem nhds_within_Ioi_self_ne_bot' Modified src/topology/algebra/ordered/intermediate_value.lean Modified src/topology/instances/ennreal.lean 2021-12-07 00:26:04 9031989 chore(*): fix last line length and notation style linter errors (#10642) These are the last non-module doc style linter errors (from https://github.com/leanprover-community/mathlib/blob/master/scripts/style-exceptions.txt). ESTIMATED CHANGES Modified src/data/pfunctor/multivariate/M.lean Modified src/data/pfunctor/multivariate/W.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/data/qpf/multivariate/constructions/fix.lean Modified src/tactic/induction.lean Modified src/tactic/reserved_notation.lean 2021-12-07 00:26:03 cd857f7 feat(data/int/basic): four lemmas about integer divisibility (#10602) Theorem 1.1, parts (c), (i), (j), and (k) of Apostol (1976) Introduction to Analytic Number Theory ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem has_dvd.dvd.linear_comb Modified src/data/int/basic.lean + theorem int.div_dvd_of_ne_zero_dvd + theorem int.nat_abs_eq_of_dvd_dvd + theorem int.nat_abs_le_of_dvd_ne_zero 2021-12-06 22:38:00 eec4b70 feat(algebra/geom_sum): criteria for 0 < geom_sum (#10567) ESTIMATED CHANGES Modified src/algebra/geom_sum.lean +/- def geom_sum + theorem geom_sum_alternating_of_lt_neg_one +/- theorem geom_sum_def + theorem geom_sum_eq_zero_iff_neg_one + theorem geom_sum_neg_iff +/- theorem geom_sum_one + theorem geom_sum_pos + theorem geom_sum_pos_and_lt_one + theorem geom_sum_pos_iff + theorem geom_sum_pos_of_odd + theorem geom_sum_succ' + theorem geom_sum_succ + theorem geom_sum_two +/- theorem geom_sum_zero +/- def geom_sum₂ +/- theorem geom_sum₂_def +/- theorem geom_sum₂_one +/- theorem geom_sum₂_with_one +/- theorem geom_sum₂_zero + theorem neg_one_geom_sum +/- theorem one_geom_sum +/- theorem op_geom_sum +/- theorem op_geom_sum₂ + theorem zero_geom_sum Modified src/logic/basic.lean + theorem and_or_imp + theorem decidable.and_or_imp 2021-12-06 21:05:46 a8c086f feat(linear_algebra/determinant): linear_equiv.det_mul_det_symm (#10635) Add lemmas that the determinants of a `linear_equiv` and its inverse multiply to 1. There are a few other lemmas involving determinants and `linear_equiv`, but apparently not this one. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_equiv.det_mul_det_symm + theorem linear_equiv.det_symm_mul_det 2021-12-06 19:23:02 1d5202a feat(data/multiset): add some lemmas about filter (eq x) (#10626) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.count_filter + theorem multiset.filter_eq' + theorem multiset.filter_eq + theorem multiset.pow_count 2021-12-06 14:45:34 8124314 feat(linear_algebra/multilinear/basic,linear_algebra/alternating): comp_linear_map lemmas (#10631) Add more lemmas about composing multilinear and alternating maps with linear maps in each argument. Where I wanted a lemma for either of multilinear or alternating maps, I added it for both. There are however some lemmas for `alternating_map.comp_linear_map` that don't have equivalents at present for `multilinear_map.comp_linear_map` (I added one such equivalent `multilinear_map.zero_comp_linear_map` because I needed it for another lemma, but didn't try adding such equivalents of existing lemmas where I didn't need them). ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.comp_linear_equiv_eq_zero_iff + theorem alternating_map.comp_linear_map_assoc + theorem alternating_map.comp_linear_map_id + theorem alternating_map.comp_linear_map_inj + theorem alternating_map.comp_linear_map_injective Modified src/linear_algebra/multilinear/basic.lean + theorem multilinear_map.comp_linear_equiv_eq_zero_iff + theorem multilinear_map.comp_linear_map_assoc + theorem multilinear_map.comp_linear_map_id + theorem multilinear_map.comp_linear_map_inj + theorem multilinear_map.comp_linear_map_injective + theorem multilinear_map.zero_comp_linear_map 2021-12-06 13:25:54 f50984d chore(linear_algebra/affine_space/basis): remove unhelpful coercion (#10637) It is more useful to have a statement of equality of linear maps than of raw functions. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basis.lean - theorem affine_basis.coe_linear + theorem affine_basis.linear_eq_sum_coords 2021-12-06 06:48:34 e6ad0f2 chore(analysis/inner_product/projections): generalize some lemmas (#10608) * generalize a few lemmas from `[finite_dimensional 𝕜 ?x]` to `[complete_space ?x]`; * drop unneeded TC assumption in `isometry.tendsto_nhds_iff`; * image of a complete set/submodule under an isometry is a complete set/submodule. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + theorem linear_isometry.map_orthogonal_projection Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.is_complete_image_iff + theorem linear_isometry.is_complete_map_iff Modified src/topology/metric_space/isometry.lean +/- theorem isometry.tendsto_nhds_iff 2021-12-06 05:02:03 e726945 refactor(order/atoms): is_simple_order from is_simple_lattice (#10537) Rename `is_simple_lattice` to `is_simple_order`, still stating that every element is either `bot` or `top` are, and that it is nontrivial. To state `is_simple_order`, `has_le` and `bounded_order` are required to be defined. This allows for an order where `⊤ ≤ ⊥` (the always true order). Many proofs/statements about `is_simple_order`s have been generalized to require solely `partial_order` and not `lattice`. The statements themselves have not been changed. The `is_simple_order.distrib_lattice` instance has been downgraded into a `def` to prevent loops. Helper defs have been added like `is_simple_order.preorder` (which is true given the `has_le` `bounded_order` axioms) `is_simple_order.linear_order`, and `is_simple_order.lattice` (which are true when `partial_order`, implying `⊥ < ⊤`.). ESTIMATED CHANGES Modified src/group_theory/specific_groups/cyclic.lean Modified src/group_theory/subgroup/basic.lean Modified src/order/atoms.lean - theorem fintype.is_simple_lattice.card - theorem fintype.is_simple_lattice.univ + theorem fintype.is_simple_order.card + theorem fintype.is_simple_order.univ - def is_simple_lattice.order_iso_bool - theorem is_simple_lattice_iff_is_atom_top - theorem is_simple_lattice_iff_is_coatom_bot - theorem is_simple_lattice_iff_is_simple_lattice_order_dual + theorem is_simple_order.bot_ne_top + def is_simple_order.equiv_bool + def is_simple_order.order_iso_bool + theorem is_simple_order_iff_is_atom_top + theorem is_simple_order_iff_is_coatom_bot + theorem is_simple_order_iff_is_simple_order_order_dual - theorem order_iso.is_simple_lattice - theorem order_iso.is_simple_lattice_iff + theorem order_iso.is_simple_order + theorem order_iso.is_simple_order_iff - theorem set.is_simple_lattice_Ici_iff_is_coatom - theorem set.is_simple_lattice_Iic_iff_is_atom + theorem set.is_simple_order_Ici_iff_is_coatom + theorem set.is_simple_order_Iic_iff_is_atom Modified src/order/bounded_order.lean Modified src/ring_theory/simple_module.lean +/- def is_simple_module 2021-12-05 19:54:45 e7bd49f chore(scripts/mk_all.sh): allow 'mk_all.sh ../test' (#10628) Helpful for mathport CI, cf https://github.com/leanprover-community/mathport/pull/64 ESTIMATED CHANGES Modified scripts/mk_all.sh 2021-12-05 18:05:59 2b2d116 chore(combinatorics/simple_graph/coloring): remove extra asterisk (#10618) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/partition.lean 2021-12-05 16:33:11 8c1f2b5 feat(ring_theory/graded_algebra): projection map of graded algebra (#10116) This pr defines and proves some property about `graded_algebra.proj : A →ₗ[R] A` ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean + theorem direct_sum.coe_of_add_subgroup_apply + theorem direct_sum.coe_of_add_submonoid_apply Modified src/algebra/direct_sum/internal.lean + theorem direct_sum.coe_mul_apply_add_subgroup + theorem direct_sum.coe_mul_apply_add_submonoid + theorem direct_sum.coe_mul_apply_submodule Modified src/algebra/direct_sum/module.lean + theorem direct_sum.coe_of_submodule_apply Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.mul_eq_sum_support_ghas_mul Modified src/group_theory/subgroup/basic.lean + theorem subgroup.coe_finset_prod + theorem subgroup.coe_list_prod + theorem subgroup.coe_multiset_prod Modified src/ring_theory/graded_algebra/basic.lean + theorem graded_algebra.decompose_coe + theorem graded_algebra.decompose_of_mem + theorem graded_algebra.decompose_of_mem_ne + theorem graded_algebra.decompose_of_mem_same + theorem graded_algebra.is_internal + theorem graded_algebra.mem_support_iff + def graded_algebra.proj + theorem graded_algebra.proj_apply + theorem graded_algebra.proj_recompose + theorem graded_algebra.sum_support_decompose + def graded_algebra.support - theorem graded_ring.is_internal 2021-12-05 11:46:50 428b9e5 feat(topology/continuous_function/bounded): continuous bounded real-valued functions form a normed vector lattice (#10322) feat(topology/continuous_function/bounded): continuous bounded real-valued functions form a normed vector lattice ESTIMATED CHANGES Modified src/analysis/normed_space/lattice_ordered_group.lean + theorem norm_sup_sub_sup_le_add_norm - theorem norm_two_inf_sub_two_inf_le - theorem norm_two_sup_sub_two_sup_le Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_fn_abs + theorem bounded_continuous_function.coe_fn_sup 2021-12-05 03:46:59 37f343c chore(data/stream): merge `basic` into `init` (#10617) ESTIMATED CHANGES Modified src/combinatorics/hindman.lean Modified src/data/seq/seq.lean Deleted src/data/stream/basic.lean - theorem stream.head_drop Modified src/data/stream/init.lean + theorem stream.head_drop Modified test/ext.lean 2021-12-04 15:25:01 6eeb54e fix(topology/algebra/uniform_field): remove unnecessary topological_r… (#10614) …ing variable Right now the last three definitions in `topology.algebra.uniform_field` (after line 115) have `[topological_division_ring K]` and `[topological_ring K]`. For example ``` mul_hat_inv_cancel : ∀ {K : Type u_1} [_inst_1 : field K] [_inst_2 : uniform_space K] [_inst_3 : topological_division_ring K] [_inst_4 : completable_top_field K] [_inst_5 : uniform_add_group K] [_inst_6 : topological_ring K] {x : uniform_space.completion K}, x ≠ 0 → x * hat_inv x = 1 ``` Whilst it is not obvious from the notation, both of these are `Prop`s so there is no danger of diamonds. The full logic is: `field` and `uniform_space` are data, and the rest are Props (so should be called things like `is_topological_ring` etc IMO). `topological_division_ring` is the assertion of continuity of `add`, `neg`, `mul` and `inv` (away from 0), `completable_top_field` is another assertion about how inversion plays well with the topology (and which is not implied by `topological_division_ring`), `uniform_add_group` is the assertion about `add` and `neg` playing well with the uniform structure, and then `topological_ring` is a prop which is implied by `topological_division_ring`. I am not sure I see the benefits of carrying around the extra `topological_ring` for these three definitions so I've removed it to see if mathlib still compiles. Edit: it does. ESTIMATED CHANGES Modified src/topology/algebra/uniform_field.lean 2021-12-04 15:25:00 c940e47 chore(topology/continuous_function): remove forget_boundedness (#10612) It is the same as `to_continuous_map`. ESTIMATED CHANGES Modified src/measure_theory/function/lp_space.lean - theorem continuous_map.to_Lp_comp_forget_boundedness + theorem continuous_map.to_Lp_comp_to_continuous_map Modified src/topology/continuous_function/bounded.lean - def bounded_continuous_function.forget_boundedness - def bounded_continuous_function.forget_boundedness_add_hom - theorem bounded_continuous_function.forget_boundedness_coe - def bounded_continuous_function.forget_boundedness_linear_map + def bounded_continuous_function.to_continuous_map_add_hom + def bounded_continuous_function.to_continuous_map_linear_map Modified src/topology/continuous_function/compact.lean - theorem bounded_continuous_function.dist_forget_boundedness + theorem bounded_continuous_function.dist_to_continuous_map - theorem bounded_continuous_function.norm_forget_boundedness_eq + theorem bounded_continuous_function.norm_to_continuous_map_eq 2021-12-04 13:36:16 b3b7fe6 chore(algebra/module): generalize `char_zero.of_algebra` to `char_zero.of_module` (#10609) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem char_zero.of_algebra Modified src/algebra/module/basic.lean + theorem char_zero.of_module - theorem eq_zero_of_smul_two_eq_zero + theorem eq_zero_of_two_nsmul_eq_zero Modified src/number_theory/number_field.lean 2021-12-04 08:58:37 5d0e65a chore(order/galois_connection): upgrade `is_glb_l` to `is_least_l` (#10606) * upgrade `galois_connection.is_glb_l` to `galois_connection.is_least_l`; * upgrade `galois_connection.is_lub_l` to `galois_connection.is_greatest_l`. ESTIMATED CHANGES Modified src/order/galois_connection.lean +/- theorem galois_connection.is_glb_l + theorem galois_connection.is_greatest_u + theorem galois_connection.is_least_l +/- theorem galois_connection.is_lub_u 2021-12-04 07:14:54 3479b7f chore(order/complete_lattice): golf a proof (#10607) Also reformulate `le_Sup_iff` in terms of `upper_bounds`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- theorem le_Sup_iff 2021-12-04 05:05:06 9c4e41a feat(number_theory/modular): the action of `SL(2, ℤ)` on the upper half plane (#8611) We define the action of `SL(2,ℤ)` on `ℍ` (via restriction of the `SL(2,ℝ)` action in `analysis.complex.upper_half_plane`). We then define the standard fundamental domain `𝒟` for this action and show that any point in `ℍ` can be moved inside `𝒟`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.general_linear_group.coe_fn_general_linear_equiv Modified src/linear_algebra/general_linear_group.lean + theorem matrix.general_linear_group.coe_to_linear + def matrix.general_linear_group.mk_of_det_ne_zero + def matrix.general_linear_group.to_linear + theorem matrix.general_linear_group.to_linear_apply + def matrix.plane_conformal_matrix Modified src/linear_algebra/special_linear_group.lean + theorem matrix.special_linear_group.coe_int_neg + theorem matrix.special_linear_group.coe_matrix_coe + theorem matrix.special_linear_group.coe_mk + def matrix.special_linear_group.map Modified src/measure_theory/group/basic.lean Added src/number_theory/modular.lean + def modular_group.S + def modular_group.T' + def modular_group.T + theorem modular_group.bottom_row_coprime + theorem modular_group.bottom_row_surj + theorem modular_group.coe_smul + theorem modular_group.denom_apply + theorem modular_group.exists_max_im + theorem modular_group.exists_row_one_eq_and_min_re + theorem modular_group.exists_smul_mem_fundamental_domain + def modular_group.fundamental_domain + theorem modular_group.im_lt_im_S_smul + theorem modular_group.im_smul + theorem modular_group.im_smul_eq_div_norm_sq + def modular_group.lc_row0 + theorem modular_group.lc_row0_apply' + theorem modular_group.lc_row0_apply + def modular_group.lc_row0_extend + theorem modular_group.neg_smul + theorem modular_group.re_smul + theorem modular_group.smul_coe + theorem modular_group.smul_eq_lc_row0_add + theorem modular_group.tendsto_abs_re_smul + theorem modular_group.tendsto_lc_row0 + theorem modular_group.tendsto_norm_sq_coprime_pair Modified src/topology/algebra/group.lean + theorem homeomorph.coe_mul_right + theorem homeomorph.mul_right_symm Modified src/topology/homeomorph.lean + theorem homeomorph.trans_apply 2021-12-04 03:25:04 2da25ed feat(combinatorics/simple_graph): Graph coloring and partitions (#10287) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + def complete_bipartite_graph + def simple_graph.embedding.complete_graph.of_embedding + def simple_graph.hom.map_spanning_subgraphs Added src/combinatorics/simple_graph/coloring.lean + theorem simple_graph.chromatic_number_bdd_below + theorem simple_graph.chromatic_number_bot + theorem simple_graph.chromatic_number_complete_graph + theorem simple_graph.chromatic_number_eq_card_of_forall_surj + theorem simple_graph.chromatic_number_eq_zero_of_isempty + theorem simple_graph.chromatic_number_le_card + theorem simple_graph.chromatic_number_le_of_colorable + theorem simple_graph.chromatic_number_le_of_forall_imp + theorem simple_graph.chromatic_number_le_of_le_colorable + theorem simple_graph.chromatic_number_le_one_of_subsingleton + theorem simple_graph.colorable.of_le + def simple_graph.colorable + theorem simple_graph.colorable_chromatic_number + theorem simple_graph.colorable_chromatic_number_of_fintype + theorem simple_graph.colorable_iff_exists_bdd_nat_coloring + theorem simple_graph.colorable_of_fintype + theorem simple_graph.colorable_of_is_empty + theorem simple_graph.colorable_of_le_colorable + theorem simple_graph.colorable_set_nonempty_of_colorable + theorem simple_graph.coloring.card_color_classes_le + def simple_graph.coloring.color_class + def simple_graph.coloring.color_classes + theorem simple_graph.coloring.color_classes_finite_of_fintype + theorem simple_graph.coloring.color_classes_independent + theorem simple_graph.coloring.color_classes_is_partition + theorem simple_graph.coloring.mem_color_class + theorem simple_graph.coloring.mem_color_classes + def simple_graph.coloring.mk + theorem simple_graph.coloring.not_adj_of_mem_color_class + theorem simple_graph.coloring.to_colorable + theorem simple_graph.coloring.valid + def simple_graph.coloring + def simple_graph.coloring_of_is_empty + def simple_graph.complete_bipartite_graph.bicoloring + theorem simple_graph.complete_bipartite_graph.chromatic_number + theorem simple_graph.is_empty_of_chromatic_number_eq_zero + theorem simple_graph.is_empty_of_colorable_zero + def simple_graph.recolor_of_embedding + def simple_graph.recolor_of_equiv + def simple_graph.self_coloring + theorem simple_graph.zero_lt_chromatic_number Added src/combinatorics/simple_graph/partition.lean + def simple_graph.coloring.to_partition + theorem simple_graph.partition.mem_part_of_vertex + def simple_graph.partition.part_of_vertex + theorem simple_graph.partition.part_of_vertex_mem + theorem simple_graph.partition.part_of_vertex_ne_of_adj + def simple_graph.partition.parts_card_le + theorem simple_graph.partition.to_colorable + def simple_graph.partition.to_coloring' + def simple_graph.partition.to_coloring + structure simple_graph.partition + def simple_graph.partitionable + theorem simple_graph.partitionable_iff_colorable Modified src/data/fintype/basic.lean + theorem fintype.card_range_le Modified src/data/setoid/partition.lean + theorem setoid.card_classes_ker_le + theorem setoid.classes_ker_subset_fiber_set + theorem setoid.nonempty_fintype_classes_ker 2021-12-04 01:52:50 ef3540a chore(measure_theory/function/conditional_expectation): golf condexp_L1 proofs using set_to_fun lemmas (#10592) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean +/- theorem measure_theory.condexp_L1_neg +/- theorem measure_theory.condexp_L1_smul 2021-12-04 01:52:49 23dfe70 feat(*): `A ⧸ B` notation for quotients in algebra (#10501) We introduce a class `has_quotient` that provides `⧸` (U+29F8 BIG SOLIDUS) notation for quotients, e.g. if `H : subgroup G` then `quotient_group.quotient H` is now written as `G ⧸ H`. Thanks to @jcommelin for suggesting the initial design. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Notation.20for.20group.28module.2Cideal.29.20quotients ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/kernels.lean Modified src/algebra/char_p/quotient.lean Modified src/algebra/direct_limit.lean Modified src/algebra/group_action_hom.lean +/- def mul_action_hom.to_quotient Modified src/algebra/lie/cartan_matrix.lean +/- def matrix.to_lie_algebra Modified src/algebra/lie/quotient.lean +/- def lie_submodule.quotient.action_as_endo_map +/- def lie_submodule.quotient.action_as_endo_map_bracket +/- theorem lie_submodule.quotient.lie_module_hom_ext +/- def lie_submodule.quotient.mk' +/- def lie_submodule.quotient.mk - def lie_submodule.quotient Modified src/algebra/polynomial/group_ring_action.lean Added src/algebra/quotient.lean + def has_quotient.quotient Modified src/algebra/ring_quot.lean Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean Modified src/analysis/normed/group/quotient.lean +/- def add_subgroup.normed_mk +/- theorem norm_mk_lt +/- theorem norm_mk_zero +/- theorem quotient_norm_add_le +/- theorem quotient_norm_neg +/- theorem quotient_norm_nonneg +/- theorem quotient_norm_sub_rev Modified src/analysis/normed_space/complemented.lean Modified src/analysis/special_functions/trigonometric/angle.lean Modified src/category_theory/action.lean Modified src/data/zmod/quotient.lean Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/coset.lean +/- theorem quotient_group.eq' +/- theorem quotient_group.forall_coe +/- theorem quotient_group.induction_on' +/- theorem quotient_group.induction_on +/- def quotient_group.mk +/- theorem quotient_group.mk_mul_of_mem +/- theorem quotient_group.mk_out'_eq_mul +/- theorem quotient_group.out_eq' - def quotient_group.quotient Modified src/group_theory/group_action/basic.lean +/- def mul_action.of_quotient_stabilizer Modified src/group_theory/index.lean +/- theorem subgroup.index_eq_card +/- theorem subgroup.index_ne_zero_of_fintype +/- theorem subgroup.one_lt_index_of_ne_top Modified src/group_theory/nilpotent.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/p_group.lean +/- theorem is_p_group.index Modified src/group_theory/presented_group.lean Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.coe_mk' +/- theorem quotient_group.eq_one_iff +/- def quotient_group.ker_lift +/- def quotient_group.mk' +/- theorem quotient_group.monoid_hom_ext +/- def quotient_group.quotient_bot +/- theorem quotient_group.quotient_quotient_equiv_quotient_aux_coe +/- def quotient_group.range_ker_lift Modified src/group_theory/schur_zassenhaus.lean Modified src/group_theory/solvable.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/adic_completion.lean +/- def adic_completion.eval +/- def adic_completion Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/linear_algebra/isomorphisms.lean +/- theorem submodule.quotient_quotient_equiv_quotient_aux_mk Modified src/linear_algebra/projection.lean +/- theorem submodule.mk_quotient_equiv_of_is_compl_apply +/- def submodule.quotient_equiv_of_is_compl Modified src/linear_algebra/quotient.lean +/- theorem submodule.comap_mkq_embedding_eq +/- theorem submodule.le_comap_mkq +/- def submodule.liftq +/- theorem submodule.linear_map_qext +/- theorem submodule.map_liftq +/- def submodule.mapq_linear +/- def submodule.mkq +/- def submodule.quot_equiv_of_eq +/- def submodule.quot_equiv_of_eq_bot +/- theorem submodule.quot_hom_ext +/- theorem submodule.quotient.mk'_eq_mk +/- def submodule.quotient.mk +/- theorem submodule.quotient.mk_add +/- theorem submodule.quotient.mk_eq_zero +/- theorem submodule.quotient.mk_neg +/- theorem submodule.quotient.mk_smul +/- theorem submodule.quotient.mk_sub +/- theorem submodule.quotient.mk_zero +/- theorem submodule.quotient.nontrivial_of_lt_top +/- theorem submodule.quotient.quot_mk_eq_mk - def submodule.quotient Modified src/linear_algebra/smodeq.lean Modified src/measure_theory/measurable_space.lean Modified src/number_theory/basic.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/artinian.lean Modified src/ring_theory/class_group.lean +/- def class_group Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/local_ring.lean +/- def local_ring.residue_field Modified src/ring_theory/ideal/operations.lean +/- def double_quot.lift_sup_quot_quot_mk +/- def double_quot.quot_left_to_quot_sup +/- def double_quot.quot_quot_equiv_comm +/- def double_quot.quot_quot_equiv_quot_sup +/- def double_quot.quot_quot_mk +/- def double_quot.quot_quot_to_quot_sup +/- theorem ideal.ker_lift.map_smul +/- def ideal.ker_lift_alg +/- def ideal.quotient.mkₐ +/- theorem ideal.quotient.mkₐ_ker +/- def ring_hom.ker_lift Modified src/ring_theory/ideal/over.lean +/- theorem ideal.comap_eq_of_scalar_tower_quotient Modified src/ring_theory/ideal/quotient.lean +/- def ideal.quotient.factor +/- theorem ideal.quotient.is_domain_iff_prime +/- def ideal.quotient.mk +/- theorem ideal.quotient.mk_eq_mk +/- theorem ideal.quotient.ring_hom_ext +/- theorem ideal.quotient.zero_eq_one_iff +/- theorem ideal.quotient.zero_ne_one_iff - def ideal.quotient Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/valuation/basic.lean +/- theorem add_valuation.comap_on_quot_eq +/- def add_valuation.on_quot_val +/- theorem add_valuation.self_le_supp_comap +/- theorem valuation.comap_on_quot_eq +/- theorem valuation.self_le_supp_comap Modified src/topology/algebra/group.lean +/- theorem quotient_group.is_open_map_coe Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_ring.lean 2021-12-04 00:14:36 0bd9b6a feat(group_theory/order_of_element): order of a product of elements (#10399) The lemma is: If `x` and `y` are commuting elements of coprime orders, then the order of `x * y` is the product of the orders of `x` and `y`. This also gives a version for the minimal period in dynamics from which the algebraic statement is derived. ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.lcm_dvd_mul Modified src/dynamics/periodic_pts.lean + theorem function.commute.minimal_period_of_comp_dvd_mul + theorem function.commute.minimal_period_of_comp_eq_mul_of_coprime + theorem function.is_periodic_pt.comp + theorem function.is_periodic_pt.comp_lcm + theorem function.is_periodic_pt.iterate_mod_apply + theorem function.is_periodic_pt.left_of_comp Modified src/group_theory/order_of_element.lean + theorem commute.order_of_mul_dvd_lcm_order_of + theorem commute.order_of_mul_dvd_mul_order_of + theorem commute.order_of_mul_eq_mul_order_of_of_coprime 2021-12-03 20:46:31 1376f53 feat(analysis.normed_space.lattice_ordered_group): Add `two_inf_sub_two_inf_le`, `two_sup_sub_two_sup_le` and supporting lemmas (#10514) feat(analysis.normed_space.lattice_ordered_group): Add `two_inf_sub_two_inf_le`, `two_sup_sub_two_sup_le` and supporting lemmas ESTIMATED CHANGES Modified src/algebra/lattice_ordered_group.lean + theorem lattice_ordered_comm_group.abs_abs_div_abs_le + theorem lattice_ordered_comm_group.abs_inv_comm + theorem lattice_ordered_comm_group.inf_sq_eq_mul_div_abs_div - theorem lattice_ordered_comm_group.two_inf_eq_mul_div_abs_div Modified src/analysis/normed_space/lattice_ordered_group.lean + theorem norm_abs_sub_abs + theorem norm_two_inf_sub_two_inf_le + theorem norm_two_sup_sub_two_sup_le 2021-12-03 19:27:08 cd2230b chore(data/nat/prime): golf some proofs (#10599) ESTIMATED CHANGES Modified src/data/nat/prime.lean 2021-12-03 19:27:05 bddc16a fix(tactic/abel): handle smul on groups (#10587) The issue was that `abel` expects to see only `smulg` used for groups and only `smul` for monoids, but you can also use `smul` on groups so we have to normalize that away. fixes #8456 ESTIMATED CHANGES Modified src/tactic/abel.lean + theorem tactic.abel.subst_into_smul_upcast Modified test/abel.lean 2021-12-03 17:46:34 46e9a23 feat(probability_theory/stopping): generalize a lemma (#10598) ESTIMATED CHANGES Modified src/probability_theory/stopping.lean +/- theorem measure_theory.is_stopping_time.measurable - def measure_theory.is_stopping_time.measurable_space 2021-12-03 17:46:33 1e89745 feat(data/finset/lattice): add sup_eq_bot_iff and inf_eq_top_iff (#10596) From flt-regular. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.inf_eq_top_iff + theorem finset.sup_eq_bot_iff 2021-12-03 17:46:32 92fafba feat(data/(mv_)polynomial): add aeval_prod and aeval_sum for (mv_)polynomial (#10594) Another couple of small polynomial helper lemmas from flt-regular. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.aeval_prod + theorem mv_polynomial.aeval_sum Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_prod + theorem polynomial.aeval_sum 2021-12-03 17:46:31 4de0773 feat(category_theory/limits): Strict terminal objects. (#10582) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/strict_initial.lean + theorem category_theory.limits.has_strict_terminal_objects_of_terminal_is_strict + theorem category_theory.limits.is_terminal.is_iso_from + theorem category_theory.limits.is_terminal.strict_hom_ext + theorem category_theory.limits.is_terminal.subsingleton_to + theorem category_theory.limits.limit_π_is_iso_of_is_strict_terminal + theorem category_theory.limits.terminal.hom_ext + theorem category_theory.limits.terminal.subsingleton_to 2021-12-03 17:46:29 d45708f feat(topology/sheaves): The empty component of a sheaf is terminal (#10578) ESTIMATED CHANGES Modified src/category_theory/sites/sheaf.lean + def category_theory.Sheaf.is_terminal_of_bot_cover Modified src/topology/sheaves/sheaf_condition/sites.lean + def Top.sheaf.is_terminal_of_empty + def Top.sheaf.is_terminal_of_eq_empty 2021-12-03 16:11:45 1e18e93 chore(algebra/lattice_ordered_group): review (names, spaces, golf...) (#10595) This is a review of `algebra/lattice_ordered_group` and `analysis/normed_space/lattice_ordered_group`: - delete or add spaces at many places - add brackets around goals - replace `apply` by `exact` when closing a goal - change many names to better fit the naming convention - cut some big proofs into several lemmas - add a few `simp` attributes - remove a non-terminal simp - golf - add some simple API lemmas I did not do anything about the docstrings of the lemmas. Some of them don't interact correctly with `to_additive` (the additive comment is shown for the multiplicative lemma in the doc, for example). ESTIMATED CHANGES Modified src/algebra/lattice_ordered_group.lean + theorem lattice_ordered_comm_group.inv_le_neg + theorem lattice_ordered_comm_group.m_abs_abs - theorem lattice_ordered_comm_group.m_le_neg + theorem lattice_ordered_comm_group.m_neg_abs - theorem lattice_ordered_comm_group.m_neg_pos + theorem lattice_ordered_comm_group.m_pos_abs - theorem lattice_ordered_comm_group.m_pos_pos - theorem lattice_ordered_comm_group.m_pos_pos_id - theorem lattice_ordered_comm_group.mabs_idempotent + theorem lattice_ordered_comm_group.mabs_inf_div_inf_le_mabs + theorem lattice_ordered_comm_group.mabs_mul_le + theorem lattice_ordered_comm_group.mabs_of_one_le - theorem lattice_ordered_comm_group.mabs_pos - theorem lattice_ordered_comm_group.mabs_pos_eq + theorem lattice_ordered_comm_group.mabs_sup_div_sup_le_mabs - theorem lattice_ordered_comm_group.mabs_triangle + theorem lattice_ordered_comm_group.neg_eq_one_iff' + theorem lattice_ordered_comm_group.neg_eq_one_iff +/- theorem lattice_ordered_comm_group.neg_eq_pos_inv + theorem lattice_ordered_comm_group.neg_le_one_iff + theorem lattice_ordered_comm_group.neg_of_inv_le_one + theorem lattice_ordered_comm_group.neg_of_le_one + theorem lattice_ordered_comm_group.neg_of_one_le + theorem lattice_ordered_comm_group.neg_of_one_le_inv + theorem lattice_ordered_comm_group.neg_one + theorem lattice_ordered_comm_group.one_le_abs + theorem lattice_ordered_comm_group.one_le_neg + theorem lattice_ordered_comm_group.one_le_pos - theorem lattice_ordered_comm_group.pos_div_neg' + theorem lattice_ordered_comm_group.pos_div_neg + theorem lattice_ordered_comm_group.pos_eq_one_iff +/- theorem lattice_ordered_comm_group.pos_inf_neg_eq_one - theorem lattice_ordered_comm_group.pos_inv_neg + theorem lattice_ordered_comm_group.pos_le_one_iff + theorem lattice_ordered_comm_group.pos_of_le_one + theorem lattice_ordered_comm_group.pos_of_one_le + theorem lattice_ordered_comm_group.pos_one + theorem mul_inf + theorem mul_sup - theorem mul_sup_eq_mul_sup_mul Modified src/analysis/normed_space/lattice_ordered_group.lean +/- theorem dual_solid +/- theorem norm_abs_eq_norm + theorem norm_inf_sub_inf_le_add_norm 2021-12-03 16:11:43 a7b4018 fix(tactic/ring): bugfixes in ring_nf (#10572) As reported by @hrmacbeth: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60ring_nf.60.20behaves.20strangely.20with.20def.20in.20original.20goal ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/tactic/ring.lean Modified test/ring.lean 2021-12-03 16:11:41 df93166 feat(algebraic_geometry): Explicit description of the colimit of presheafed spaces. (#10466) ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space/has_colimits.lean + def algebraic_geometry.PresheafedSpace.colimit_presheaf_obj_iso_componentwise_limit + theorem algebraic_geometry.PresheafedSpace.colimit_presheaf_obj_iso_componentwise_limit_hom_π + theorem algebraic_geometry.PresheafedSpace.colimit_presheaf_obj_iso_componentwise_limit_inv_ι_app + def algebraic_geometry.PresheafedSpace.componentwise_diagram 2021-12-03 16:11:40 b7ed03f feat(algebraic_geometry): Open immersions of presheafed spaces (#10437) ESTIMATED CHANGES Added src/algebraic_geometry/open_immersion.lean + def algebraic_geometry.LocallyRingedSpace.is_open_immersion + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.app_inv_app' + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.app_inv_app + def algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_inv_app + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.inv_naturality + def algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict_hom_of_restrict + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.iso_restrict_inv_of_restrict + def algebraic_geometry.PresheafedSpace.is_open_immersion.open_functor + theorem algebraic_geometry.PresheafedSpace.is_open_immersion.to_iso + def algebraic_geometry.SheafedSpace.is_open_immersion + def algebraic_geometry.is_open_immersion Modified src/algebraic_geometry/stalks.lean + theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_of_restrict Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.stalk_pushforward.stalk_pushforward_iso_of_open_embedding 2021-12-03 16:11:38 2f44ac8 feat(algebra/monoid_algebra/grading): internal graded structure for an arbitrary degree function (#10435) This gives an internal graded structure of an additive monoid algebra for the grading given by an arbitrary degree function. The grading in the original file is redefined as the grading for the identity degree function. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/grading.lean + def add_monoid_algebra.equiv_grades_by +/- def add_monoid_algebra.grade + theorem add_monoid_algebra.grade_by.is_internal + def add_monoid_algebra.grade_by + theorem add_monoid_algebra.grade_by_id + theorem add_monoid_algebra.grade_eq_lsingle_range + theorem add_monoid_algebra.mem_grade_by_iff + theorem add_monoid_algebra.mem_grade_iff' + theorem add_monoid_algebra.mem_grade_iff + def add_monoid_algebra.of_grades_by + theorem add_monoid_algebra.of_grades_by_comp_to_grades_by + theorem add_monoid_algebra.of_grades_by_of + theorem add_monoid_algebra.of_grades_by_to_grades_by +/- theorem add_monoid_algebra.of_grades_comp_to_grades + theorem add_monoid_algebra.single_mem_grade + theorem add_monoid_algebra.single_mem_grade_by +/- def add_monoid_algebra.to_grades + def add_monoid_algebra.to_grades_by + theorem add_monoid_algebra.to_grades_by_coe + theorem add_monoid_algebra.to_grades_by_comp_of_grades_by + theorem add_monoid_algebra.to_grades_by_of_grades_by + theorem add_monoid_algebra.to_grades_by_single' + theorem add_monoid_algebra.to_grades_by_single 2021-12-03 16:11:37 f0a1cd1 feat(category_theory/*): Representably flat functors (#9519) Defined representably flat functors as functors `F : C ⥤ D` such that `(X/F)` is cofiltered for each `X : C`. - Proved that if `C` has all finite limits and `F` preserves them, then `F` is flat. - Proved that flat functors preserves finite limits. In particular, if `C` is finitely complete, then flat iff left exact. - Proved that if `C, D` are small, then `F` flat implies `Lan F.op` preserves finite limits implies `F` preserves finite limits. In particular, if `C` is finitely cocomplete, then flat iff `Lan F.op` is left exact. ESTIMATED CHANGES Modified src/category_theory/comma.lean + theorem category_theory.comma.eq_to_hom_left + theorem category_theory.comma.eq_to_hom_right Added src/category_theory/flat_functors.lean + def category_theory.Lan_evaluation_iso_colim + theorem category_theory.flat_iff_Lan_flat + theorem category_theory.flat_of_preserves_finite_limits + def category_theory.preserves_finite_limits_iff_Lan_preserves_finite_limits + def category_theory.preserves_finite_limits_iff_flat + theorem category_theory.preserves_finite_limits_of_flat.fac + theorem category_theory.preserves_finite_limits_of_flat.uniq + def category_theory.preserves_finite_limits_of_flat + def category_theory.structured_arrow_cone.diagram_to_cone + def category_theory.structured_arrow_cone.to_cone + def category_theory.structured_arrow_cone.to_diagram Added src/category_theory/limits/bicones.lean + inductive category_theory.bicone + inductive category_theory.bicone_hom + def category_theory.bicone_mk Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Added src/category_theory/limits/preserves/finite.lean + def category_theory.limits.comp_preserves_finite_colimits + def category_theory.limits.comp_preserves_finite_limits Modified src/category_theory/limits/preserves/functor_category.lean + def category_theory.preserves_limit_of_Lan_presesrves_limit Modified src/category_theory/limits/presheaf.lean + def category_theory.colimit_adj.extend_of_comp_yoneda_iso_Lan + def category_theory.comp_yoneda_iso_yoneda_comp_Lan Modified src/category_theory/limits/shapes/finite_limits.lean - theorem category_theory.limits.has_finite_colimits_of_has_colimits - theorem category_theory.limits.has_finite_limits_of_has_limits Modified src/category_theory/structured_arrow.lean 2021-12-03 14:32:19 8bb26a7 chore(*): protect `to_fun` and `map_{add,zero,mul,one,div}` (#10580) This PR prepares for #9888 by namespacing all usages of `to_fun` and `map_{add,zero,mul,one,div}` that do not involve the classes of #9888. This includes e.g. `polynomial.map_add` and `multiset.map_add`, which involve `polynomial.map` and `multiset.map` respectively. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/monoid_algebra/to_direct_sum.lean Modified src/analysis/normed_space/extend.lean Modified src/control/fold.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/finset/fold.lean Modified src/data/polynomial/basic.lean Modified src/data/polynomial/denoms_clearable.lean Modified src/data/polynomial/eval.lean Modified src/deprecated/subgroup.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/fixed.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/quotient_group.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/measure_theory/integral/bochner.lean Modified src/ring_theory/dedekind_domain.lean - theorem coe_ideal_le_self_mul_inv - theorem coe_inv_of_nonzero + theorem fractional_ideal.coe_ideal_le_self_mul_inv + theorem fractional_ideal.coe_inv_of_nonzero + theorem fractional_ideal.inv_anti_mono + theorem fractional_ideal.inv_eq + theorem fractional_ideal.inv_nonzero + theorem fractional_ideal.inv_zero' + theorem fractional_ideal.invertible_iff_generator_nonzero + theorem fractional_ideal.invertible_of_principal + theorem fractional_ideal.is_principal_inv + theorem fractional_ideal.le_self_mul_inv + theorem fractional_ideal.map_inv + theorem fractional_ideal.mem_inv_iff + theorem fractional_ideal.mul_generator_self_inv + theorem fractional_ideal.mul_inv_cancel_iff + theorem fractional_ideal.mul_inv_cancel_iff_is_unit +/- theorem fractional_ideal.one_inv + theorem fractional_ideal.right_inverse_eq + theorem fractional_ideal.span_singleton_inv - theorem inv_anti_mono - theorem inv_eq - theorem inv_nonzero - theorem inv_zero' - theorem invertible_iff_generator_nonzero - theorem invertible_of_principal - theorem is_principal_inv - theorem le_self_mul_inv - theorem map_inv - theorem mem_inv_iff - theorem mul_generator_self_inv - theorem mul_inv_cancel_iff - theorem mul_inv_cancel_iff_is_unit - theorem right_inverse_eq - theorem span_singleton_inv Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/chebyshev.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/roots_of_unity.lean 2021-12-03 14:32:17 235e583 feat(topology/metric_space/hausdorff_distance): add definition and lemmas about closed thickenings of subsets (#10542) Add definition and basic API about closed thickenings of subsets in metric spaces, in preparation for the portmanteau theorem on characterizations of weak convergence of Borel probability measures. ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.closure_eq_Inter_cthickening + theorem metric.closure_subset_cthickening + def metric.cthickening + theorem metric.cthickening_empty + theorem metric.cthickening_eq_Inter_cthickening + theorem metric.cthickening_eq_preimage_inf_edist + theorem metric.cthickening_mono + theorem metric.cthickening_subset_of_subset + theorem metric.cthickening_subset_thickening' + theorem metric.cthickening_subset_thickening + theorem metric.cthickening_zero + theorem metric.is_closed_cthickening + theorem metric.mem_thickening_iff_exists_edist_lt + theorem metric.thickening_subset_cthickening + theorem metric.thickening_subset_cthickening_of_le 2021-12-03 12:40:48 6533500 feat(data/mv_polynomial): add total_degree_add_of_total_degree_lt (#10571) A helpful lemma to compute total degrees from flt-regular. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.support_sdiff_support_subset_support_add + theorem mv_polynomial.support_symm_diff_support_subset_support_add Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.total_degree_add_eq_left_of_total_degree_lt + theorem mv_polynomial.total_degree_add_eq_right_of_total_degree_lt 2021-12-03 12:40:47 672e2b2 feat(src/algebra/gcd_monoid,src/ring_theory): add some exists_associated_pow_of_mul_eq_pow variants (#10560) ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean + theorem exists_eq_pow_of_mul_eq_pow Modified src/ring_theory/int/basic.lean + theorem int.eq_pow_of_mul_eq_pow_bit1 + theorem int.eq_pow_of_mul_eq_pow_bit1_left + theorem int.eq_pow_of_mul_eq_pow_bit1_right Modified src/ring_theory/principal_ideal_domain.lean + theorem exists_associated_pow_of_mul_eq_pow' 2021-12-03 12:40:46 89697a2 feat(data/fintype/order): complete order instances for fintype (#7123) This PR adds several instances (as defs) for fintypes: * `order_bot` from `semilattice_inf`, `order_top` from `semilattice_sup`, `bounded_order` from `lattice`. * `complete_lattice` from `lattice`. * `complete_linear_order` from `linear_order`. We use this last one to give a `complete_linear_order` instance for `fin (n + 1)` . ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.fold_inf_univ + theorem finset.fold_sup_univ Added src/data/fintype/order.lean + def fintype.to_bounded_order + def fintype.to_order_bot + def fintype.to_order_top 2021-12-03 10:55:10 e0c27fe feat(order/bounded_order): a few more `simp` lemmas (#10533) Inspired by #10486 ESTIMATED CHANGES Modified src/order/bounded_order.lean + theorem max_eq_bot + theorem max_eq_top + theorem max_top_left + theorem max_top_right + theorem min_bot_left + theorem min_bot_right + theorem min_eq_bot + theorem min_eq_top 2021-12-03 10:55:09 970f074 feat(analysis/convex/star): Star-convex sets (#10524) This defines `star_convex 𝕜 x s` to mean that a set is star-convex (aka star-shaped, radially convex, or a star domain) at `x`. This means that every segment from `x` to a point in `s` is a subset of `s`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem set.set_vadd_singleton - theorem set.vadd_singleton Modified src/algebra/pointwise.lean + theorem set.smul_singleton Modified src/analysis/convex/basic.lean +/- theorem convex.sub Added src/analysis/convex/star.lean + theorem convex.star_convex_iff + theorem convex_iff_forall_star_convex + theorem set.ord_connected.star_convex + theorem star_convex.add + theorem star_convex.add_left + theorem star_convex.add_right + theorem star_convex.add_smul_mem + theorem star_convex.add_smul_sub_mem + theorem star_convex.affine_image + theorem star_convex.affine_preimage + theorem star_convex.affinity + theorem star_convex.inter + theorem star_convex.is_linear_image + theorem star_convex.is_linear_preimage + theorem star_convex.linear_image + theorem star_convex.linear_preimage + theorem star_convex.mem + theorem star_convex.mem_smul + theorem star_convex.neg + theorem star_convex.neg_preimage + theorem star_convex.open_segment_subset + theorem star_convex.preimage_add_left + theorem star_convex.preimage_add_right + theorem star_convex.preimage_smul + theorem star_convex.prod + theorem star_convex.segment_subset + theorem star_convex.smul + theorem star_convex.smul_mem + theorem star_convex.sub + theorem star_convex.union + def star_convex + theorem star_convex_Inter + theorem star_convex_Union + theorem star_convex_empty + theorem star_convex_iff_div + theorem star_convex_iff_forall_ne_pos + theorem star_convex_iff_forall_pos + theorem star_convex_iff_open_segment_subset + theorem star_convex_iff_ord_connected + theorem star_convex_iff_pointwise_add_subset + theorem star_convex_iff_segment_subset + theorem star_convex_pi + theorem star_convex_sInter + theorem star_convex_sUnion + theorem star_convex_singleton + theorem star_convex_univ + theorem submodule.star_convex + theorem subspace.star_convex Modified src/data/set/intervals/ord_connected.lean +/- theorem set.ord_connected.interval_subset +/- theorem set.ord_connected_iff_interval_subset + theorem set.ord_connected_iff_interval_subset_left + theorem set.ord_connected_iff_interval_subset_right +/- theorem set.ord_connected_interval Modified src/data/set/intervals/unordered_interval.lean + theorem set.interval_subset_interval_union_interval +/- theorem set.not_mem_interval_of_gt +/- theorem set.not_mem_interval_of_lt 2021-12-03 10:55:08 44b649c doc(algebra.lattice_ordered_group): Remove verbose docstrings (#10468) doc(algebra.lattice_ordered_group): Remove verbose docstrings ESTIMATED CHANGES Modified src/algebra/lattice_ordered_group.lean Modified src/analysis/normed_space/lattice_ordered_group.lean 2021-12-03 08:57:31 2648e68 chore(int/*): dedup lemma (#10583) ESTIMATED CHANGES Modified src/data/int/basic.lean +/- theorem int.nat_abs_dvd_iff_dvd Modified src/data/int/gcd.lean - theorem int.nat_abs_dvd_abs_iff Modified src/ring_theory/int/basic.lean 2021-12-03 08:57:30 0453320 feat(category_theory/limits): The product is the pullback over the terminal objects. (#10581) ESTIMATED CHANGES Modified src/category_theory/limits/constructions/binary_products.lean + theorem has_binary_coproducts_of_initial_and_pushouts + def is_coproduct_of_is_initial_is_pushout + def is_product_of_is_terminal_is_pullback + def is_pullback_of_is_terminal_is_product + def is_pushout_of_is_initial_is_coproduct 2021-12-03 08:57:28 bfccd1b chore(topology/{metric_space,instances/real}): cleanup (#10577) * merge `real.ball_eq` and `real.ball_eq_Ioo` into `real.ball_eq_Ioo`; * merge `real.closed_ball_eq` and `real.closed_ball_eq_Icc` into `real.closed_ball_eq_Icc`; * add missing `real.Icc_eq_closed_ball`; * generalize lemmas about `*bounded_Ixx` so that they work for (indexed) products of conditionally complete linear orders. ESTIMATED CHANGES Modified src/analysis/seminorm.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/number_theory/liouville/basic.lean Modified src/topology/instances/real.lean - theorem int.ball_eq + theorem int.ball_eq_Ioo - theorem int.closed_ball_eq + theorem int.closed_ball_eq_Icc - theorem real.Ioo_eq_ball - theorem real.ball_eq_Ioo Modified src/topology/metric_space/basic.lean + theorem real.Icc_eq_closed_ball + theorem real.Ioo_eq_ball - theorem real.ball_eq + theorem real.ball_eq_Ioo - theorem real.closed_ball_eq + theorem real.closed_ball_eq_Icc 2021-12-03 08:57:27 158263c feat(ring_theory): Nilradical and reduced ring (#10576) ESTIMATED CHANGES Modified src/ring_theory/nilpotent.lean +/- theorem is_nilpotent.eq_zero +/- theorem is_nilpotent_iff_eq_zero + theorem mem_nilradical + theorem nilpotent_iff_mem_prime + def nilradical + theorem nilradical_eq_Inf + theorem nilradical_eq_zero + theorem nilradical_le_prime 2021-12-03 08:57:26 c176aa5 refactor(data/stream): swap args of `stream.nth` (#10559) This way it agrees with (a) `list.nth`; (b) a possible redefinition ```lean structure stream (α : Type*) := (nth : nat → α) ``` ESTIMATED CHANGES Modified src/data/stream/defs.lean +/- def stream.all +/- def stream.any +/- def stream.nth Modified src/data/stream/init.lean +/- theorem stream.all_def +/- theorem stream.any_def +/- theorem stream.mem_of_nth_eq +/- theorem stream.nth_const +/- theorem stream.nth_drop +/- theorem stream.nth_even +/- theorem stream.nth_inits +/- theorem stream.nth_interleave_left +/- theorem stream.nth_interleave_right +/- theorem stream.nth_map +/- theorem stream.nth_nats +/- theorem stream.nth_odd +/- theorem stream.nth_succ +/- theorem stream.nth_tails +/- theorem stream.nth_take_succ +/- theorem stream.nth_unfolds_head_tail +/- theorem stream.nth_zero_cons +/- theorem stream.nth_zero_iterate Modified test/ext.lean 2021-12-03 08:57:25 55b64b6 chore(group_theory/*): additivise! (#10557) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem mul_zpow_neg_one Modified src/group_theory/coset.lean +/- theorem subgroup.card_comap_dvd_of_injective +/- theorem subgroup.card_dvd_of_injective +/- theorem subgroup.card_dvd_of_le +/- theorem subgroup.card_quotient_dvd_card +/- theorem subgroup.card_subgroup_dvd_card Modified src/group_theory/specific_groups/cyclic.lean - theorem card_pow_eq_one_eq_order_of_aux + theorem is_add_cyclic.card_order_of_eq_totient + theorem is_add_cyclic_of_card_pow_eq_one_le Modified src/tactic/group.lean 2021-12-03 08:57:23 56c9cab feat(data/sigma{lex,order}): Lexicographic and disjoint orders on a sigma type (#10552) This defines the two natural order on a sigma type: the one where we just juxtapose the summands with their respective order, and the one where we also add in an order between summands. ESTIMATED CHANGES Modified src/data/list/lex.lean Added src/data/sigma/lex.lean + theorem psigma.lex.mono + theorem psigma.lex.mono_left + theorem psigma.lex.mono_right + theorem psigma.lex_iff + theorem sigma.lex.mono + theorem sigma.lex.mono_left + theorem sigma.lex.mono_right + inductive sigma.lex + theorem sigma.lex_iff Added src/data/sigma/order.lean + inductive sigma.le + def sigma.lex.has_le + def sigma.lex.has_lt + def sigma.lex.linear_order + def sigma.lex.partial_order + def sigma.lex.preorder Modified src/order/lexicographic.lean 2021-12-03 08:57:22 d62b517 feat(category_theory/limits): Walking parallel pair equiv to its op. (#10516) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.walking_parallel_pair_op + def category_theory.limits.walking_parallel_pair_op_equiv + theorem category_theory.limits.walking_parallel_pair_op_equiv_counit_iso_one + theorem category_theory.limits.walking_parallel_pair_op_equiv_counit_iso_zero + theorem category_theory.limits.walking_parallel_pair_op_equiv_unit_iso_one + theorem category_theory.limits.walking_parallel_pair_op_equiv_unit_iso_zero + theorem category_theory.limits.walking_parallel_pair_op_left + theorem category_theory.limits.walking_parallel_pair_op_one + theorem category_theory.limits.walking_parallel_pair_op_right + theorem category_theory.limits.walking_parallel_pair_op_zero 2021-12-03 08:57:21 c151a12 feat(algebra/gcd_monoid/*): assorted lemmas (#10508) From flt-regular. ESTIMATED CHANGES Modified src/algebra/gcd_monoid/finset.lean + theorem finset.gcd_eq_gcd_image + theorem finset.gcd_image Added src/algebra/gcd_monoid/nat.lean + theorem finset.coprime_of_div_gcd 2021-12-03 08:57:20 c093d04 feat(data/nat/basic): Monotonicity of `nat.find_greatest` (#10507) This proves that `nat.find_greatest` is monotone in both arguments. ESTIMATED CHANGES Modified src/data/nat/basic.lean +/- theorem nat.find_greatest_eq +/- theorem nat.find_greatest_eq_iff +/- theorem nat.find_greatest_eq_zero_iff +/- theorem nat.find_greatest_is_greatest +/- theorem nat.find_greatest_le + theorem nat.find_greatest_mono + theorem nat.find_greatest_mono_left + theorem nat.find_greatest_mono_right +/- theorem nat.find_greatest_of_ne_zero +/- theorem nat.find_greatest_of_not +/- theorem nat.find_greatest_spec + theorem nat.find_greatest_succ +/- theorem nat.le_find_greatest Modified src/measure_theory/measurable_space.lean 2021-12-03 08:57:19 00e9e90 feat(topology/urysohns_bounded): +2 versions of Urysohn's lemma (#10479) ESTIMATED CHANGES Added src/topology/urysohns_bounded.lean + theorem exists_bounded_mem_Icc_of_closed_of_le + theorem exists_bounded_zero_one_of_closed 2021-12-03 07:10:46 403d9c0 feat(category_theory/adjunction): Added simp lemmas for `left_adjoint_uniq` and `right_adjoint_uniq` (#10551) ESTIMATED CHANGES Modified src/category_theory/adjunction/opposites.lean +/- def adjunction.adjoint_of_op_adjoint_op + theorem adjunction.hom_equiv_left_adjoint_uniq_hom_app + theorem adjunction.hom_equiv_symm_right_adjoint_uniq_hom_app + theorem adjunction.left_adjoint_uniq_hom_app_counit + theorem adjunction.left_adjoint_uniq_hom_counit + theorem adjunction.left_adjoint_uniq_inv_app + theorem adjunction.left_adjoint_uniq_refl + theorem adjunction.left_adjoint_uniq_trans + theorem adjunction.left_adjoint_uniq_trans_app +/- def adjunction.op_adjoint_op_of_adjoint + theorem adjunction.right_adjoint_uniq_hom_app_counit + theorem adjunction.right_adjoint_uniq_hom_counit + theorem adjunction.right_adjoint_uniq_inv_app + theorem adjunction.right_adjoint_uniq_refl + theorem adjunction.right_adjoint_uniq_trans + theorem adjunction.right_adjoint_uniq_trans_app + theorem adjunction.unit_left_adjoint_uniq_hom + theorem adjunction.unit_left_adjoint_uniq_hom_app + theorem adjunction.unit_right_adjoint_uniq_hom + theorem adjunction.unit_right_adjoint_uniq_hom_app 2021-12-03 07:10:45 30185dc feat(topology/algebra/group): group topologies on a given group form a complete lattice (#10531) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + structure add_group_topology + def group_topology.coinduced + theorem group_topology.coinduced_continuous + theorem group_topology.ext' + structure group_topology Modified src/topology/algebra/ring.lean + def ring_topology.to_add_group_topology.order_embedding + def ring_topology.to_add_group_topology 2021-12-03 07:10:44 cfecf72 feat(algebra/module): push forward the action of `R` on `M` along `f : R → S` (#10502) If `f : R →+* S` is compatible with the `R`-module structure on `M`, and the scalar action of `S` on `M`, then `M` gets an `S`-module structure too. Additionally, if `R` is a ring and the kernel of `f` acts on `M` by sending it to `0`, then we don't need to specify the scalar action of `S` on `M` (but it is still possible for defeq purposes). These definitions should allow you to turn an action of `R` on `M` into an action of `R/I` on `M/N` via the (previously defined) action of `R` on `M/N`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + def function.surjective.module_left Modified src/group_theory/group_action/defs.lean + def function.surjective.distrib_mul_action_left + def function.surjective.mul_action_left 2021-12-03 07:10:43 461051a feat(algebraic_geometry): Localization map is an embedding. (#10471) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum/basic.lean + theorem prime_spectrum.localization_away_comap_range + theorem prime_spectrum.localization_away_open_embedding + theorem prime_spectrum.localization_comap_embedding + theorem prime_spectrum.localization_comap_inducing + theorem prime_spectrum.localization_comap_injective + theorem prime_spectrum.localization_comap_range 2021-12-03 07:10:41 6bd6b45 feat(algebraic_geometry): Isomorphisms of presheafed space. (#10461) ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/presheafed_space.lean +/- theorem algebraic_geometry.PresheafedSpace.comp_c_app + theorem algebraic_geometry.PresheafedSpace.is_iso_of_components + def algebraic_geometry.PresheafedSpace.iso_of_components + def algebraic_geometry.PresheafedSpace.sheaf_iso_of_iso Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/category_theory/limits/has_limits.lean +/- theorem category_theory.limits.colimit.pre_desc Modified src/topology/category/Top/opens.lean + def topological_space.opens.map_map_iso Modified src/topology/sheaves/presheaf.lean + def Top.presheaf.presheaf_equiv_of_iso + def Top.presheaf.pullback_hom_iso_pushforward_inv + def Top.presheaf.pullback_inv_iso_pushforward_hom + theorem Top.presheaf.pullback_obj_eq_pullback_obj + def Top.presheaf.pushforward_to_of_iso + theorem Top.presheaf.pushforward_to_of_iso_app + def Top.presheaf.to_pushforward_of_iso + theorem Top.presheaf.to_pushforward_of_iso_app 2021-12-03 07:10:40 f8f28da feat(linear_algebra/orientation): orientations of modules and rays in modules (#10306) Define orientations of modules, along the lines of a definition suggested by @hrmacbeth: equivalence classes of nonzero alternating maps. See: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/adding.20angles/near/243856522 Rays are defined in an arbitrary module over an `ordered_comm_semiring`, then orientations are considered as the case of rays for the space of alternating maps. That definition uses an arbitrary index type; the motivating use case is where this has the cardinality of a basis (two-dimensional use cases will use an index type that is definitionally `fin 2`, for example). The motivating use case is over the reals, but the definitions and lemmas are for `ordered_comm_semiring`, `ordered_comm_ring`, `linear_ordered_comm_ring` or `linear_ordered_field` as appropriate (a `nontrivial` `ordered_comm_semiring` looks like it's the weakest case for which much useful can be done with this definition). Given an intended use case (oriented angles for Euclidean geometry) where it will make sense for many proofs (and notation) to fix a choice of orientation throughout, there is also a `module.oriented` type class so the choice of orientation can be implicit in such proofs and the lemmas they use. However, nothing yet makes use of the type class; everything so far is for explicit rays or orientations. I expect more definitions and lemmas about orientations will need adding to make much use of orientations. In particular, I expect to need to add more about orientations in relation to bases (e.g. extracting a basis that gives a given orientation, in positive dimension). ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/linear_algebra/orientation.lean + theorem basis.orientation_eq_iff_det_pos + theorem basis.orientation_eq_or_eq_neg + theorem eq_zero_of_same_ray_self_neg + theorem equiv_iff_same_ray + theorem equivalence_same_ray + theorem module.ray.ind + theorem module.ray.ne_neg_self + def module.ray.some_ray_vector + theorem module.ray.some_ray_vector_ray + def module.ray.some_vector + theorem module.ray.some_vector_ne_zero + theorem module.ray.some_vector_ray + def module.ray + theorem orientation.eq_or_eq_neg + def orientation + theorem ray_eq_iff + theorem ray_neg + theorem ray_pos_smul + theorem ray_vector.coe_neg + theorem ray_vector.equiv_neg_iff + def ray_vector.same_ray_setoid + def ray_vector + theorem reflexive_same_ray + theorem same_ray.neg + theorem same_ray.pos_smul_left + theorem same_ray.pos_smul_right + def same_ray + theorem same_ray_iff_mem_orbit + theorem same_ray_neg_iff + theorem same_ray_neg_smul_left_iff + theorem same_ray_neg_smul_right_iff + theorem same_ray_neg_swap + theorem same_ray_of_mem_orbit + theorem same_ray_pos_smul_left + theorem same_ray_pos_smul_right + def same_ray_setoid + theorem same_ray_setoid_eq_orbit_rel + theorem same_ray_smul_left_iff + theorem same_ray_smul_right_iff + theorem symmetric_same_ray + theorem transitive_same_ray 2021-12-03 07:10:39 2bb627f feat(analysis/convex/[basic, topology]): generalize path connectedness of convex sets to topological real vector spaces (#10011) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem open_segment_eq_image_line_map + theorem segment_eq_image_line_map Modified src/analysis/convex/topology.lean Modified src/tactic/lint/type_classes.lean 2021-12-03 06:35:10 8915dc8 feat(ring_theory/polynomial/cyclotomic): `is_root_cyclotomic_iff` (#10422) From the flt-regular project. ESTIMATED CHANGES Modified src/number_theory/primes_congruent_one.lean Modified src/ring_theory/polynomial/cyclotomic.lean + theorem is_root_of_unity_iff + theorem polynomial.is_root_cyclotomic_iff - theorem polynomial.order_of_root_cyclotomic_eq 2021-12-03 05:24:46 6f745cd feat(category_theory/limits): Lemmas about preserving pullbacks (#10438) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/shapes/pullbacks.lean + def category_theory.limits.is_colimit_map_cocone_pushout_cocone_equiv + def category_theory.limits.is_colimit_of_has_pushout_of_preserves_colimit + def category_theory.limits.is_colimit_of_is_colimit_pushout_cocone_map + def category_theory.limits.is_colimit_pushout_cocone_map_of_is_colimit + theorem category_theory.limits.preserves_pullback.iso_hom_fst + theorem category_theory.limits.preserves_pullback.iso_hom_snd + theorem category_theory.limits.preserves_pullback.iso_inv_fst + theorem category_theory.limits.preserves_pullback.iso_inv_snd + def category_theory.limits.preserves_pullback_symmetry + theorem category_theory.limits.preserves_pushout.inl_iso_hom + theorem category_theory.limits.preserves_pushout.inl_iso_inv + theorem category_theory.limits.preserves_pushout.inr_iso_hom + theorem category_theory.limits.preserves_pushout.inr_iso_inv + def category_theory.limits.preserves_pushout.iso + theorem category_theory.limits.preserves_pushout.iso_hom + def category_theory.limits.preserves_pushout.of_iso_comparison + def category_theory.limits.preserves_pushout_symmetry Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.inl_comp_pushout_comparison + theorem category_theory.limits.inr_comp_pushout_comparison + def category_theory.limits.pullback_cone.iso_mk + def category_theory.limits.pushout_cocone.iso_mk + def category_theory.limits.pushout_comparison + theorem category_theory.limits.pushout_comparison_map_desc 2021-12-02 23:23:50 c791747 feat(algebra/tropical/basic): various API (#10487) Generalize some order instance to just require `has_le` of the base `R`. `(un)trop_monotone` `trop_(min|inf)` iffs between addition and order `tropical.add_comm_monoid` (in parallel to #10486) `(co|contra)variant` instances ESTIMATED CHANGES Modified src/algebra/tropical/basic.lean + theorem tropical.add_eq_left_iff + theorem tropical.add_eq_right_iff +/- theorem tropical.le_zero +/- theorem tropical.succ_nsmul + theorem tropical.trop_add + theorem tropical.trop_inf + theorem tropical.trop_min + theorem tropical.trop_monotone + theorem tropical.trop_zero + theorem tropical.trop_zsmul +/- theorem tropical.untrop_le_iff + theorem tropical.untrop_lt_iff + theorem tropical.untrop_monotone +/- theorem tropical.untrop_one + theorem tropical.untrop_zpow 2021-12-02 22:04:36 ac76745 feat(data/finsupp/basic): add `finsupp.prod_congr` and `sum_congr` (#10568) These are the counterparts for `finsupp` of a simpler form of `finset.prod_congr` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.prod_congr 2021-12-02 20:44:25 42d3cbc feat(data/finsupp/basic): add `nat.cast_finsupp_prod` and 3 others (#10579) Add counterparts for `finsupp` of `nat.cast_prod` etc., as discussed in this thread https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/push_cast ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem int.cast_finsupp_prod + theorem int.cast_finsupp_sum + theorem nat.cast_finsupp_prod + theorem nat.cast_finsupp_sum 2021-12-02 19:28:48 4cfe637 chore(category_theory/sites/*): Adjust some `simp` lemmas. (#10574) The primary change is removing some `simp` tags from the definition of `sheafify` and friends, so that the sheafification related constructions are not unfolded to the `plus` constructions. Also -- added coercion from Sheaves to presheaves, and some `rfl` simp lemmas which help some proofs move along. Some proofs cleaned up as well. ESTIMATED CHANGES Modified src/category_theory/sites/adjunction.lean - theorem category_theory.Sheaf.adjunction_to_types_hom_equiv_symm_apply' + theorem category_theory.Sheaf.adjunction_to_types_hom_equiv_symm_apply Modified src/category_theory/sites/compatible_plus.lean Modified src/category_theory/sites/compatible_sheafification.lean Modified src/category_theory/sites/cover_preserving.lean Modified src/category_theory/sites/limits.lean Modified src/category_theory/sites/plus.lean + theorem category_theory.grothendieck_topology.iso_to_plus_hom + theorem category_theory.grothendieck_topology.iso_to_plus_inv + theorem category_theory.grothendieck_topology.plus_map_plus_lift Modified src/category_theory/sites/sheaf.lean + theorem category_theory.Sheaf.comp_app + theorem category_theory.Sheaf.id_app + theorem category_theory.Sheaf_to_presheaf_obj Modified src/category_theory/sites/sheaf_of_types.lean + theorem category_theory.SheafOfTypes.comp_app + theorem category_theory.SheafOfTypes.id_app + theorem category_theory.SheafOfTypes_to_presheaf_obj Modified src/category_theory/sites/sheafification.lean + theorem category_theory.grothendieck_topology.iso_sheafify_hom + theorem category_theory.grothendieck_topology.iso_sheafify_inv + theorem category_theory.grothendieck_topology.sheafification_map - theorem category_theory.grothendieck_topology.sheafification_map_sheafify_lift + def category_theory.grothendieck_topology.sheafify_map + theorem category_theory.grothendieck_topology.sheafify_map_comp + theorem category_theory.grothendieck_topology.sheafify_map_id + theorem category_theory.grothendieck_topology.sheafify_map_sheafify_lift + theorem category_theory.grothendieck_topology.to_sheafify_naturality + theorem category_theory.sheafification_adjunction_unit_app Modified src/category_theory/sites/whiskering.lean - def category_theory.Sheaf_compose_map - theorem category_theory.Sheaf_compose_map_app - theorem category_theory.Sheaf_compose_map_app_app - theorem category_theory.Sheaf_compose_map_comp - theorem category_theory.Sheaf_compose_map_id - theorem category_theory.Sheaf_compose_map_to_presheaf - theorem category_theory.Sheaf_compose_obj_to_presheaf Modified src/topology/sheaves/sheaf.lean + theorem Top.sheaf.comp_app + theorem Top.sheaf.id_app Modified src/topology/sheaves/sheaf_condition/sites.lean 2021-12-02 19:28:46 cbb2d2c feat(data/nat/prime): Add lemma `count_factors_mul_of_pos` (#10536) Adding the counterpart to `count_factors_mul_of_coprime` for positive `a` and `b` ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.count_factors_mul_of_pos 2021-12-02 17:52:35 38ae0c9 feat(data/nat/prime): add coprime_of_prime lemmas (#10534) Adds `coprime_of_lt_prime` and `eq_or_coprime_of_le_prime`, which help one to prove a number is coprime to a prime. Spun off of #9080. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.coprime_of_lt_prime + theorem nat.eq_or_coprime_of_le_prime 2021-12-02 14:23:28 5e02292 feat(data/finset/*): Diverse lemmas (#10388) A bunch of simple lemmas ESTIMATED CHANGES Modified src/analysis/box_integral/basic.lean Modified src/data/finset/basic.lean + theorem finset.filter_bUnion + theorem finset.sdiff_erase + theorem finset.subset_erase Modified src/data/finset/lattice.lean + theorem finset.inf_comm + theorem finset.inf_product_left + theorem finset.inf_product_right + theorem finset.inf_sigma + theorem finset.sup_comm + theorem finset.sup_product_left + theorem finset.sup_product_right + theorem finset.sup_sigma Modified src/data/finset/prod.lean + theorem finset.coe_product + theorem finset.product_eq_bUnion_right Modified src/data/fintype/basic.lean +/- theorem finset.univ_eq_empty + theorem finset.univ_unique - theorem univ_is_empty + theorem univ_option - theorem univ_unique Modified src/data/nat/interval.lean + theorem finset.range_add_eq_union + theorem finset.range_image_pred_top_sub - theorem nat.range_image_pred_top_sub Modified src/data/set/basic.lean + theorem set.univ_unique Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/basis.lean 2021-12-02 14:23:27 790d637 feat(combinatorics/set_family/compression/uv): UV-compression of a set family (#10238) This defines the UV-compression of a set family, along with a bunch of preliminary definitions and some basic results. ESTIMATED CHANGES Added src/combinatorics/set_family/compression/uv.lean + theorem sup_sdiff_inj_on + theorem uv.card_compress + theorem uv.card_compression + def uv.compress + theorem uv.compress_disjoint + theorem uv.compress_idem + theorem uv.compress_mem_compression + theorem uv.compress_mem_compression_of_mem_compression + theorem uv.compress_of_disjoint_of_le + theorem uv.compress_self + def uv.compression + theorem uv.compression_idem + theorem uv.compression_self + def uv.is_compressed + theorem uv.is_compressed_self + theorem uv.mem_compression + theorem uv.mem_of_mem_compression + theorem uv.sup_sdiff_mem_of_mem_compression Modified src/order/boolean_algebra.lean + theorem le_sdiff_iff 2021-12-02 12:47:03 17c2209 feat(probability_theory/stopping): define filtration and stopping time (#10553) This PR defines filtrations and stopping times which are used in stochastic processes. This is the first step towards creating a theory of martingales in lean. ESTIMATED CHANGES Modified src/measure_theory/measurable_space_def.lean + theorem measurable.le Added src/probability_theory/stopping.lean + theorem measure_theory.adapted.add + theorem measure_theory.adapted.neg + theorem measure_theory.adapted.smul + def measure_theory.adapted + theorem measure_theory.adapted_zero + def measure_theory.const_filtration + theorem measure_theory.filtration.adapted_natural + def measure_theory.filtration.natural + structure measure_theory.filtration + theorem measure_theory.is_stopping_time.add_const + theorem measure_theory.is_stopping_time.max + theorem measure_theory.is_stopping_time.measurable + theorem measure_theory.is_stopping_time.measurable_set + theorem measure_theory.is_stopping_time.measurable_set_eq + theorem measure_theory.is_stopping_time.measurable_set_eq_const + theorem measure_theory.is_stopping_time.measurable_set_eq_le + def measure_theory.is_stopping_time.measurable_space + theorem measure_theory.is_stopping_time.measurable_space_le + theorem measure_theory.is_stopping_time.measurable_space_mono + theorem measure_theory.is_stopping_time.min + def measure_theory.is_stopping_time + theorem measure_theory.is_stopping_time_const + theorem measure_theory.is_stopping_time_of_measurable_set_eq + theorem measure_theory.measurable_set_of_filtration 2021-12-02 12:47:02 6806050 feat(category_theory/sites/adjunction): Adjunctions between categories of sheaves. (#10541) We construct adjunctions between categories of sheaves obtained by composition (and sheafification) with functors which form a given adjunction. Will be used in LTE. ESTIMATED CHANGES Added src/category_theory/sites/adjunction.lean + def category_theory.Sheaf.adjunction + theorem category_theory.Sheaf.adjunction_counit_app + theorem category_theory.Sheaf.adjunction_hom_equiv_apply + theorem category_theory.Sheaf.adjunction_hom_equiv_symm_apply + def category_theory.Sheaf.adjunction_to_types + theorem category_theory.Sheaf.adjunction_to_types_counit_app + theorem category_theory.Sheaf.adjunction_to_types_hom_equiv_apply + theorem category_theory.Sheaf.adjunction_to_types_hom_equiv_symm_apply' + theorem category_theory.Sheaf.adjunction_to_types_unit_app + theorem category_theory.Sheaf.adjunction_unit_app + def category_theory.Sheaf.compose_and_sheafify + def category_theory.Sheaf.compose_and_sheafify_from_types + def category_theory.Sheaf.compose_equiv + def category_theory.Sheaf_forget 2021-12-02 12:47:00 3e72feb feat(ring_theory/localization): The localization of a localization is a localization. (#10456) Also provides an easy consequence : the map of `Spec M⁻¹R ⟶ Spec R` is isomorphic on stalks. ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean + theorem algebraic_geometry.Spec_map_localization_is_iso Modified src/ring_theory/localization.lean + theorem is_localization.is_localization_is_localization_at_prime_is_localization + def is_localization.localization_localization_at_prime_iso_localization + theorem is_localization.localization_localization_eq_iff_exists + theorem is_localization.localization_localization_is_localization + theorem is_localization.localization_localization_is_localization_of_has_all_units + theorem is_localization.localization_localization_map_units + def is_localization.localization_localization_submodule + theorem is_localization.localization_localization_surj + theorem is_localization.mem_localization_localization_submodule 2021-12-02 11:02:49 fed2929 chore(*): golf some proofs (#10575) Also add `strict_mono_on.monotone_on` and `strict_anti_on.antitone_on`. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/order/monotone.lean Modified src/order/rel_iso.lean 2021-12-02 05:21:48 665c13a chore(*): clean up/golf proofs with unneeded or case splits (#10569) Golf/simplify/clean up some more proofs with unnecessary case splits, this time found by linting for `or.dcases_on` with branches proving the more general fact. ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/units.lean Modified src/data/matrix/basis.lean Modified src/data/nat/log.lean Modified src/data/ordmap/ordset.lean Modified src/data/rat/order.lean Modified src/data/rbtree/insert.lean Modified src/data/real/ennreal.lean Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/zpow.lean Modified src/measure_theory/measure/measure_space.lean Modified src/number_theory/primorial.lean Modified src/number_theory/pythagorean_triples.lean 2021-12-02 03:37:51 34758d3 doc(group_theory/index): add a theorem name and fix a to_additive (#10564) I wanted to find the theorem I know as "Lagrange's theorem" but couldn't by searching. This PR adds the name Lagrange's theorem to the relevant file, and also fixes an extra eager `to_additive` renaming that creates a lemma `add_subgroup.index_add_card` which talks about multiplication previously. ESTIMATED CHANGES Modified src/group_theory/index.lean +/- theorem subgroup.index_mul_card 2021-12-02 03:37:50 7043521 chore(algebra/order/*): drop some `[nontrivial _]` assumptions (#10550) Use `pullback_nonzero` to deduce `nontrivial _` in some `function.injective.*` constructors. ESTIMATED CHANGES Modified src/algebra/order/field.lean Modified src/algebra/order/ring.lean 2021-12-02 03:37:49 0f12400 chore(*): more cleanups of by_cases (#10549) Follow up #10523 with more tool-assisted golfing, see that PR for details. ESTIMATED CHANGES Modified src/data/dfinsupp.lean Modified src/data/multiset/pi.lean Modified src/data/polynomial/div.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/support.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/ring_homs.lean Modified src/probability_theory/density.lean Modified src/ring_theory/power_basis.lean 2021-12-01 17:04:54 c09501d feat(*): assorted `finset` lemmas (#10566) ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.one_lt_prod + theorem finset.prod_lt_one Modified src/data/finset/basic.lean + theorem finset.range_sdiff_zero 2021-12-01 11:46:33 cc60470 feat(data/nat/prime): Add lemma `factors_count_pow` (#10554) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.factors_count_pow 2021-12-01 03:17:51 599a511 feat(analysis/normed_space/star and data/complex/is_R_or_C): register instances of `cstar_ring` (#10555) Register instances `cstar_ring ℝ` and `cstar_ring K` when `[is_R_or_C K]` ESTIMATED CHANGES Modified src/analysis/normed_space/star.lean Modified src/data/complex/is_R_or_C.lean 2021-12-01 02:41:28 3f7d0cf chore(scripts): update nolints.txt (#10563) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-30 16:52:36 49f8b6b chore(analysis/mean_inequalities[_pow]): use vector notation (#10546) Several elementary inequalities in the library are expressed both in arbitrary n-ary versions and in explicit binary, ternary etc versions, with the latter deduced from the former. This PR introduces vector notation to the proof terms deducing the latter from the former, which shortens them, and also makes them more readable. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean Modified src/analysis/mean_inequalities_pow.lean 2021-11-30 16:52:35 b876e76 feat(algebra/char_p/two): couple more lemmas + 🏌️ (#10467) ESTIMATED CHANGES Modified src/algebra/char_p/two.lean + theorem neg_one_eq_one_iff + theorem order_of_neg_one Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.neg_one 2021-11-30 15:07:49 cd69351 doc(data/stream/defs): add docstrings to most defs (#10547) Also move 1 def from `basic` to `defs`. ESTIMATED CHANGES Modified src/control/random.lean Modified src/data/stream/basic.lean - def stream.corec_state Modified src/data/stream/defs.lean + def stream.corec_state +/- def stream.head +/- def stream.nth 2021-11-30 15:07:48 8bce7eb refactor(algebra/group/basic): Migrate `add_group` section into `group` section (#10532) ESTIMATED CHANGES Modified src/algebra/group/basic.lean - theorem add_eq_of_eq_sub - theorem add_sub - theorem add_sub_add_right_eq_sub - theorem add_sub_assoc - theorem add_sub_cancel + theorem div_div_assoc_swap + theorem div_div_div_cancel_right' + theorem div_eq_iff_eq_mul + theorem div_eq_of_eq_mul'' + theorem div_eq_one + theorem div_eq_self + theorem div_inv_eq_mul + theorem div_left_inj + theorem div_mul_div_cancel' + theorem div_mul_eq_div_div_swap + theorem div_ne_one + theorem div_ne_one_of_ne + theorem div_right_inj + theorem div_self' - theorem eq_add_of_sub_eq + theorem eq_div_iff_mul_eq' + theorem eq_div_of_mul_eq' + theorem eq_iff_eq_of_div_eq_div - theorem eq_iff_eq_of_sub_eq_sub + theorem eq_mul_of_div_eq + theorem eq_of_div_eq_one' - theorem eq_of_sub_eq_zero - theorem eq_sub_iff_add_eq - theorem eq_sub_of_add_eq - theorem left_inverse_add_left_sub - theorem left_inverse_add_right_neg_add + theorem left_inverse_div_mul_left + theorem left_inverse_inv_mul_mul_right + theorem left_inverse_mul_left_div + theorem left_inverse_mul_right_inv_mul - theorem left_inverse_neg_add_add_right - theorem left_inverse_sub_add_left + theorem mul_div +/- theorem mul_div_assoc + theorem mul_div_cancel'' + theorem mul_div_mul_right_eq_div + theorem mul_eq_of_eq_div - theorem sub_add_eq_sub_sub_swap - theorem sub_add_sub_cancel - theorem sub_eq_iff_eq_add - theorem sub_eq_of_eq_add - theorem sub_eq_self - theorem sub_eq_zero - theorem sub_left_inj - theorem sub_ne_zero - theorem sub_ne_zero_of_ne - theorem sub_neg_eq_add - theorem sub_right_inj - theorem sub_self - theorem sub_sub_assoc_swap - theorem sub_sub_sub_cancel_right 2021-11-30 13:24:44 41fa32b feat(data/nat/pairing): add an `equiv` version of `nat.mkpair`/`nat.unpair` (#10520) ESTIMATED CHANGES Modified src/data/nat/pairing.lean + theorem nat.mkpair_eq_mkpair + def nat.mkpair_equiv 2021-11-30 13:24:43 af5c778 feat(topology/[continuous_function, path_connected]): add bundled versions of prod_mk and prod_map (#10512) I also added a definition for pointwise addition of paths, but I'm not sure it would be really useful in general (my use case is the Sphere eversion project, where I need to add together two paths living in complement subspaces of a real TVS). ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + def continuous_map.prod_map + def continuous_map.prod_mk Modified src/topology/path_connected.lean 2021-11-30 13:24:41 4d90ff9 feat(topology/connected): Connectedness in sum and sigma type (#10511) This provides the `compact_space` and `totally_disconnected_space` instances for `α ⊕ β` and `Σ i, π i`. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.sigma.univ Modified src/topology/connected.lean +/- theorem is_connected_univ_pi +/- theorem is_preconnected_univ_pi + theorem sigma.is_connected_iff + theorem sigma.is_preconnected_iff + theorem sum.is_connected_iff + theorem sum.is_preconnected_iff Modified src/topology/constructions.lean + theorem is_open_sigma_fst_preimage Modified src/topology/subset_properties.lean + theorem clopen_range_sigma_mk 2021-11-30 13:24:39 7356269 feat(linear_algebra/affine_space/basis): upgrade `affine_basis.coords` to an affine map (#10452) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basis.lean + theorem affine_basis.coe_linear 2021-11-30 12:39:15 35574bb fix(*): replace "the the" by "the" (#10548) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basis.lean Modified src/topology/sheaves/sheaf_condition/sites.lean 2021-11-30 11:49:06 1077f34 feat(algebraic_geometry): Generalized basic open for arbitrary sections (#10515) ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean + theorem algebraic_geometry.LocallyRingedSpace.preimage_basic_open Modified src/algebraic_geometry/ringed_space.lean +/- def algebraic_geometry.RingedSpace.basic_open + theorem algebraic_geometry.RingedSpace.basic_open_res + theorem algebraic_geometry.RingedSpace.basic_open_subset +/- theorem algebraic_geometry.RingedSpace.is_unit_res_basic_open +/- theorem algebraic_geometry.RingedSpace.mem_basic_open 2021-11-30 10:08:21 6102d77 feat(group_theory/submonoid/pointwise): pointwise inverse of a submonoid (#10451) This also adds `order_iso.map_{supr,infi,Sup,Inf}` which are used here to provide some short proofs. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.Inter_inv + theorem set.Union_inv Modified src/group_theory/submonoid/pointwise.lean + theorem submonoid.closure_inv + theorem submonoid.coe_inv + theorem submonoid.inv_bot + theorem submonoid.inv_inf + theorem submonoid.inv_infi + theorem submonoid.inv_le + theorem submonoid.inv_le_inv + def submonoid.inv_order_iso + theorem submonoid.inv_sup + theorem submonoid.inv_supr + theorem submonoid.inv_top + theorem submonoid.mem_inv Modified src/order/complete_lattice.lean + theorem order_iso.map_Inf + theorem order_iso.map_Sup + theorem order_iso.map_infi + theorem order_iso.map_supr 2021-11-30 07:29:05 4a9aa27 feat(analysis/normed_space/spectrum and algebra/algebra/spectrum): prove properties of spectrum in a Banach algebra (#10530) Prove that the `spectrum` of an element in a Banach algebra is closed and bounded, hence compact when the scalar field is proper. Compute the derivative of the `resolvent a` function in preparation for showing that the spectrum is nonempty when the base field is ℂ. Define the `spectral_radius` and prove that it is bounded by the norm. Also rename the resolvent set to `resolvent_set` instead of `resolvent` so that it doesn't clash with the function name. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean - def resolvent + def resolvent_set - theorem spectrum.mem_resolvent_iff - theorem spectrum.mem_resolvent_of_left_right_inverse + theorem spectrum.mem_resolvent_set_iff + theorem spectrum.mem_resolvent_set_of_left_right_inverse + theorem spectrum.resolvent_eq Added src/analysis/normed_space/spectrum.lean + theorem spectrum.has_deriv_at_resolvent + theorem spectrum.is_bounded + theorem spectrum.is_closed + theorem spectrum.is_compact + theorem spectrum.is_open_resolvent_set + theorem spectrum.mem_resolvent_of_norm_lt + theorem spectrum.norm_le_norm_of_mem + theorem spectrum.spectral_radius_le_nnnorm + theorem spectrum.subset_closed_ball_norm 2021-11-30 06:50:40 f11d505 feat(category_theory/sites/compatible_*): Compatibility of plus and sheafification with composition. (#10510) Compatibility of sheafification with composition. This will be used later to obtain adjunctions between categories of sheaves. ESTIMATED CHANGES Added src/category_theory/sites/compatible_plus.lean + def category_theory.grothendieck_topology.diagram_comp_iso + theorem category_theory.grothendieck_topology.diagram_comp_iso_hom_ι + def category_theory.grothendieck_topology.plus_comp_iso + theorem category_theory.grothendieck_topology.plus_comp_iso_inv_eq_plus_lift + theorem category_theory.grothendieck_topology.plus_comp_iso_whisker_left + theorem category_theory.grothendieck_topology.plus_comp_iso_whisker_right + def category_theory.grothendieck_topology.plus_functor_whisker_left_iso + def category_theory.grothendieck_topology.plus_functor_whisker_right_iso + theorem category_theory.grothendieck_topology.to_plus_comp_plus_comp_iso_inv + theorem category_theory.grothendieck_topology.whisker_right_to_plus_comp_plus_comp_iso_hom + theorem category_theory.grothendieck_topology.ι_plus_comp_iso_hom Added src/category_theory/sites/compatible_sheafification.lean + def category_theory.grothendieck_topology.sheafification_whisker_left_iso + theorem category_theory.grothendieck_topology.sheafification_whisker_left_iso_hom_app + theorem category_theory.grothendieck_topology.sheafification_whisker_left_iso_inv_app + def category_theory.grothendieck_topology.sheafification_whisker_right_iso + theorem category_theory.grothendieck_topology.sheafification_whisker_right_iso_hom_app + theorem category_theory.grothendieck_topology.sheafification_whisker_right_iso_inv_app + def category_theory.grothendieck_topology.sheafify_comp_iso + theorem category_theory.grothendieck_topology.sheafify_comp_iso_inv_eq_sheafify_lift + theorem category_theory.grothendieck_topology.to_sheafify_comp_sheafify_comp_iso_inv + theorem category_theory.grothendieck_topology.whisker_right_to_sheafify_sheafify_comp_iso_hom Modified src/category_theory/sites/plus.lean + def category_theory.grothendieck_topology.diagram_nat_trans + theorem category_theory.grothendieck_topology.diagram_nat_trans_comp + theorem category_theory.grothendieck_topology.diagram_nat_trans_id + theorem category_theory.grothendieck_topology.plus_map_comp + theorem category_theory.grothendieck_topology.plus_map_id + theorem category_theory.grothendieck_topology.to_plus_naturality Modified src/category_theory/sites/sheafification.lean + theorem category_theory.grothendieck_topology.sheafification_map_sheafify_lift + theorem category_theory.grothendieck_topology.sheafify_is_sheaf Modified src/category_theory/sites/whiskering.lean + theorem category_theory.grothendieck_topology.cover.multicospan_comp_hom_inv_left + theorem category_theory.grothendieck_topology.cover.multicospan_comp_hom_inv_right 2021-11-30 02:52:47 396351b chore(scripts): update nolints.txt (#10545) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-29 21:29:13 04fc415 feat(algebra/char_p/two): lemmas about characteristic two (#10442) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean + theorem list_sum_pow_char + theorem multiset_sum_pow_char + theorem sum_pow_char Added src/algebra/char_p/two.lean + theorem char_two.add_mul_self + theorem char_two.add_self_eq_zero + theorem char_two.add_sq + theorem char_two.bit0_eq_zero + theorem char_two.bit1_eq_one + theorem char_two.list_sum_mul_self + theorem char_two.list_sum_sq + theorem char_two.multiset_sum_mul_self + theorem char_two.multiset_sum_sq + theorem char_two.neg_eq' + theorem char_two.neg_eq + theorem char_two.sub_eq_add' + theorem char_two.sub_eq_add + theorem char_two.sum_mul_self + theorem char_two.sum_sq + theorem char_two.two_eq_zero 2021-11-29 19:42:43 f798f22 refactor(order/filter/bases): drop `p` in `has_antitone_basis` (#10499) We never use `has_antitone_basis` for `p ≠ λ _, true` in `mathlib`. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean +/- theorem filter.subseq_tendsto_of_ne_bot Modified src/order/filter/bases.lean - theorem filter.exists_antitone_eq_infi_principal +/- structure filter.has_antitone_basis +/- structure filter.is_antitone_basis Modified src/topology/G_delta.lean Modified src/topology/sequences.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean 2021-11-29 17:49:24 da6aceb chore(order): fix-ups after #9891 (#10538) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/subgraph.lean Modified src/data/fin/basic.lean Modified src/order/bounded_order.lean +/- theorem inf_eq_bot_iff_le_compl Modified src/order/filter/germ.lean 2021-11-29 17:49:23 7545909 chore(logic/function): allow `Sort*` in `function.inv_fun` (#10526) ESTIMATED CHANGES Modified src/logic/function/basic.lean +/- theorem function.inv_fun_eq +/- theorem function.inv_fun_neg 2021-11-29 17:49:21 3ac9ae7 chore(data/stream): dedup `take` and `approx` (#10525) `stream.take` and `stream.approx` were propositionally equal. Merge them into one function `stream.take`; the definition comes from the old `stream.approx`. ESTIMATED CHANGES Modified src/data/stream/basic.lean - theorem stream.length_take Modified src/data/stream/defs.lean - def stream.approx +/- def stream.take Modified src/data/stream/init.lean - theorem stream.append_approx_drop + theorem stream.append_take_drop - theorem stream.approx_succ - theorem stream.approx_zero + theorem stream.length_take - theorem stream.nth_approx +/- theorem stream.nth_inits + theorem stream.nth_take_succ + theorem stream.take_succ +/- theorem stream.take_theorem + theorem stream.take_zero 2021-11-29 17:49:20 bc4ed5c chore(*): cleanup unneeded uses of by_cases across the library (#10523) Many proofs in the library do case splits but then never use the introduced assumption in one of the cases, meaning the case split can be removed and replaced with the general argument. Its easy to either accidentally introduce these more complicated than needed arguments when writing proofs, or in some cases presumably refactors made assumptions unnecessary, we golf / simplify several of these to simplify these proofs. Similar things happen for `split_ifs` and explicit `if ... then` proofs. Rather remarkably the changes to `uniformly_extend_spec` make the separated space assumption unnecessary too, and removing this removes this assumption from around 10 other lemmas in the library too. Some more random golfs were added in the review process Found with a work in progress linter. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/fintype/basic.lean Modified src/data/list/intervals.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/rbtree/insert.lean Modified src/deprecated/subfield.lean Modified src/field_theory/ratfunc.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/concrete_cycle.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/list.lean Modified src/group_theory/perm/option.lean Modified src/linear_algebra/matrix/transvection.lean Modified src/linear_algebra/matrix/zpow.lean Modified src/linear_algebra/trace.lean Modified src/measure_theory/integral/set_integral.lean Modified src/number_theory/pythagorean_triples.lean Modified src/order/compactly_generated.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/completion.lean +/- theorem uniform_space.completion.extension_coe Modified src/topology/uniform_space/uniform_embedding.lean 2021-11-29 17:49:19 5601833 chore(*): a few facts about `pprod` (#10519) Add `equiv.pprod_equiv_prod` and `function.embedding.pprod_map`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.pprod_equiv_prod Modified src/data/pprod.lean + theorem function.injective.pprod_map Modified src/logic/embedding.lean + def function.embedding.pprod_map 2021-11-29 17:49:18 be48f95 refactor(algebra.order.group): Convert abs_eq_sup_neg to multiplicative form (#10505) refactor(algebra.order.group): Convert abs_eq_sup_neg to multiplicative form ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem abs_eq_sup_inv - theorem abs_eq_sup_neg 2021-11-29 17:49:17 2ed7c0f doc(field_theory/galois): add comment that separable extensions are a… (#10500) …lgebraic I teach my students that a Galois extension is algebraic, normal and separable, and was just taken aback when I read the mathlib definition which omits "algebraic". Apparently there are two conventions for the definition of separability, one implying algebraic and the other not: https://en.wikipedia.org/wiki/Separable_extension#Separability_of_transcendental_extensions . Right now we have separability implies algebraic in mathlib so mathematically we're fine; I just add a note to clarify what's going on. In particular if we act on the TODO in the separability definition, we may (perhaps unwittingly) break the definition of `is_galois`; hopefully this note lessens the chance that this happens. ESTIMATED CHANGES Modified src/field_theory/galois.lean Modified src/field_theory/separable.lean 2021-11-29 17:49:15 fcbe714 refactor(data/nat/fib): use `nat.iterate` (#10489) The main drawback of the new definition is that `fib (n + 2) = fib n + fib (n + 1)` is no longer `rfl` but I think that we should have one API for iterates. See discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60nat.2Eiterate.60.20vs.20.60stream.2Eiterate.60 ESTIMATED CHANGES Modified archive/imo/imo1981_q3.lean Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/data/nat/fib.lean +/- def nat.fib + theorem nat.fib_add_two +/- theorem nat.fib_le_fib_succ + theorem nat.fib_lt_fib_succ - theorem nat.fib_succ_succ Modified src/data/nat/gcd.lean + theorem nat.coprime_add_self_left + theorem nat.coprime_add_self_right + theorem nat.coprime_self_add_left + theorem nat.coprime_self_add_right +/- theorem nat.gcd_add_mul_self + theorem nat.gcd_add_self_left + theorem nat.gcd_add_self_right +/- theorem nat.gcd_eq_zero_iff + theorem nat.gcd_self_add_left + theorem nat.gcd_self_add_right Modified src/data/real/golden_ratio.lean 2021-11-29 17:11:51 b849b3c feat(number_theory/padics/padic_norm): prime powers in divisors (#10481) ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean + theorem range_pow_padic_val_nat_subset_divisors' + theorem range_pow_padic_val_nat_subset_divisors 2021-11-29 09:57:02 957fa4b feat(order/locally_finite): `with_top α`/`with_bot α` are locally finite orders (#10202) This provides the two instances `locally_finite_order (with_top α)` and `locally_finite_order (with_bot α)`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.mem_cons_self Modified src/data/option/defs.lean + theorem option.mem_iff Modified src/logic/embedding.lean + def function.embedding.coe_option + def function.embedding.coe_with_top Modified src/order/locally_finite.lean + theorem with_bot.Icc_bot_coe + theorem with_bot.Icc_coe_coe + theorem with_bot.Ico_bot_coe + theorem with_bot.Ico_coe_coe + theorem with_bot.Ioc_bot_coe + theorem with_bot.Ioc_coe_coe + theorem with_bot.Ioo_bot_coe + theorem with_bot.Ioo_coe_coe + theorem with_top.Icc_coe_coe + theorem with_top.Icc_coe_top + theorem with_top.Ico_coe_coe + theorem with_top.Ico_coe_top + theorem with_top.Ioc_coe_coe + theorem with_top.Ioc_coe_top + theorem with_top.Ioo_coe_coe + theorem with_top.Ioo_coe_top 2021-11-29 06:52:12 202ca0b feat(*/is_R_or_C): deduplicate (#10522) I noticed that the same argument, that in a normed space over `is_R_or_C` an element can be normalized, appears in a couple of different places in the library. I have deduplicated and placed it in `analysis/normed_space/is_R_or_C`. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed_space/is_R_or_C.lean +/- theorem linear_map.bound_of_ball_bound + theorem norm_smul_inv_norm' + theorem norm_smul_inv_norm Modified src/data/complex/is_R_or_C.lean - theorem norm_smul_inv_norm 2021-11-29 06:52:11 a53da16 feat(data/int/basic): `nat_abs_dvd_iff_dvd` (#10469) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.nat_abs_dvd_iff_dvd 2021-11-29 06:04:28 50cc57b chore(category_theory/limits/shapes/wide_pullbacks): speed up `wide_cospan` (#10535) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/wide_pullbacks.lean 2021-11-29 01:36:13 16daabf chore(algebra/group_power): golf a few proofs (#10498) * move `pow_lt_pow_of_lt_one` and `pow_lt_pow_iff_of_lt_one` from `algebra.group_power.lemmas` to `algebra.group_power.order`; * add `strict_anti_pow`, use it to golf the proofs of the two lemmas above; * golf a few other proofs; * add `nnreal.exists_pow_lt_of_lt_one`. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean - theorem pow_lt_pow_iff_of_lt_one - theorem pow_lt_pow_of_lt_one Modified src/algebra/group_power/order.lean +/- theorem one_lt_pow + theorem pow_lt_pow_iff_of_lt_one + theorem pow_lt_pow_of_lt_one + theorem strict_anti_pow Modified src/algebra/order/ring.lean Modified src/data/real/nnreal.lean + theorem nnreal.exists_pow_lt_of_lt_one 2021-11-28 23:50:39 77ba0c4 chore(logic): allow `Sort*` args in 2 lemmas (#10517) ESTIMATED CHANGES Modified src/logic/basic.lean +/- theorem congr_arg2 Modified src/logic/embedding.lean +/- theorem function.embedding.apply_eq_iff_eq 2021-11-28 23:50:38 c058607 chore(order): generalize `min_top_left` (#10486) As well as its relative `min_top_right`. Also provide `max_bot_(left|right)`. ESTIMATED CHANGES Modified src/algebra/order/monoid.lean - theorem min_top_left - theorem min_top_right Modified src/order/bounded_order.lean + theorem max_bot_left + theorem max_bot_right + theorem min_top_left + theorem min_top_right 2021-11-28 23:50:37 43519fc feat(tactic/lint/misc): unused arguments checks for more sorry's (#10431) * The `unused_arguments` linter now checks whether `sorry` occurs in any of the `_proof_i` declarations and will not raise an error if this is the case * Two minor changes: `open tactic` in all of `meta.expr` and fix a typo. * I cannot add a test without adding a `sorry` to the test suite, but this succeeds without linter warning: ```lean import tactic.lint /-- dummy doc -/ def one (h : 0 < 1) : {n : ℕ // 0 < n} := ⟨1, sorry⟩ #lint ``` ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/lint/misc.lean 2021-11-28 22:06:26 dfa98e0 chore(algebra/opposites): split out lemmas about rings and groups (#10457) All these lemmas are just moved. The advantage of this is that `algebra.opposites` becomes a much lighter-weight import, allowing us to use the `has_mul` and `has_scalar` instance on opposite types earlier in the import hierarchy. It also matches how we structure the instances on `prod` and `pi` types. This follows on from #10383 ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/field/opposite.lean Added src/algebra/group/opposite.lean + def add_equiv.op + def add_equiv.unop + def add_monoid_hom.op + theorem add_monoid_hom.op_ext + def add_monoid_hom.unop + def monoid_hom.op + def monoid_hom.to_opposite + def monoid_hom.unop + def mul_equiv.inv' + def mul_equiv.op + def mul_equiv.unop + theorem mul_opposite.commute.op + theorem mul_opposite.commute.unop + theorem mul_opposite.commute_op + theorem mul_opposite.commute_unop + def mul_opposite.op_add_equiv + theorem mul_opposite.op_add_equiv_to_equiv + theorem mul_opposite.semiconj_by.op + theorem mul_opposite.semiconj_by.unop + theorem mul_opposite.semiconj_by_op + theorem mul_opposite.semiconj_by_unop + theorem units.coe_op_equiv_symm + theorem units.coe_unop_op_equiv + def units.op_equiv Modified src/algebra/group/prod.lean Modified src/algebra/opposites.lean - def add_equiv.op - def add_equiv.unop - def add_monoid_hom.op - theorem add_monoid_hom.op_ext - def add_monoid_hom.unop - def monoid_hom.op - def monoid_hom.to_opposite - def monoid_hom.unop - def mul_equiv.inv' - def mul_equiv.op - def mul_equiv.unop - theorem mul_opposite.commute.op - theorem mul_opposite.commute.unop - theorem mul_opposite.commute_op - theorem mul_opposite.commute_unop - def mul_opposite.op_add_equiv - theorem mul_opposite.op_add_equiv_to_equiv - theorem mul_opposite.semiconj_by.op - theorem mul_opposite.semiconj_by.unop - theorem mul_opposite.semiconj_by_op - theorem mul_opposite.semiconj_by_unop - def ring_hom.op - def ring_hom.to_opposite - def ring_hom.unop - theorem units.coe_op_equiv_symm - theorem units.coe_unop_op_equiv - def units.op_equiv Modified src/algebra/quaternion.lean Added src/algebra/ring/opposite.lean + def ring_hom.op + def ring_hom.to_opposite + def ring_hom.unop Modified src/algebra/smul_with_zero.lean Modified src/data/equiv/ring.lean Modified src/group_theory/group_action/opposite.lean Modified src/ring_theory/ring_invo.lean 2021-11-28 20:23:10 f684721 chore(data/nat/prime): `fact (2.prime)` (#10441) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.fact_prime_three + theorem nat.fact_prime_two Modified src/logic/basic.lean Modified src/number_theory/quadratic_reciprocity.lean - theorem zmod.fact_prime_two 2021-11-28 19:36:10 a2e6bf8 chore(algebraic_topology/cech_nerve): An attempt to speed up the proofs... (#10521) Let's hope this works! See [zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2310312.20timeouts.20in.20cech_nerve/near/262587999) ESTIMATED CHANGES Modified src/algebraic_topology/cech_nerve.lean + def category_theory.arrow.map_augmented_cech_conerve + def category_theory.arrow.map_augmented_cech_nerve + def category_theory.arrow.map_cech_conerve + def category_theory.arrow.map_cech_nerve 2021-11-28 07:21:28 044f532 chore(analysis/normed_space/hahn_banach): remove `norm'` (#10527) For a normed space over `ℝ`-algebra `𝕜`, `norm'` is currently defined to be `algebra_map ℝ 𝕜 ∥x∥`. I believe this was introduced before the `is_R_or_C` construct (including the coercion from `ℝ` to `𝕜` for `[is_R_or_C 𝕜]`) joined mathlib. Now that we have these things, it's easy to just say `(∥x∥ : 𝕜)` instead of `norm' 𝕜 ∥x∥`, so I don't really think `norm'` needs to exist any more. (In principle, `norm'` is more general, since it works for all `ℝ`-algebras `𝕜` rather than just `[is_R_or_C 𝕜]`. But I can only really think of applications in the`is_R_or_C` case, and that's the only way it's used in the library.) ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/hahn_banach.lean +/- theorem coord_norm' +/- theorem exists_dual_vector - theorem norm'_def - theorem norm'_eq_zero_iff - theorem norm_norm' Modified src/measure_theory/function/ae_eq_of_integral.lean 2021-11-28 07:21:27 099fb0f feat(data/nat/prime): lemma eq_of_eq_count_factors (#10493) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.eq_of_count_factors_eq + theorem nat.eq_of_perm_factors 2021-11-28 06:12:10 45d45ef feat(data/nat/prime): lemma count_factors_mul_of_coprime (#10492) Adding lemma `count_factors_mul_of_coprime` and using it to simplify the proof of `factors_count_eq_of_coprime_left`. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.count_factors_mul_of_coprime 2021-11-28 03:39:40 b1f9067 feat(group_theory/group_action/units): add a `mul_distrib_mul_action` instance (#10480) This doesn't add any new "data" instances, it just shows the existing instance satisfies stronger properties with stronger assumptions. ESTIMATED CHANGES Modified src/group_theory/group_action/units.lean 2021-11-27 09:46:17 b8af491 feat(category_theory/sites/whiskering): Functors between sheaf categories induced by compositiion (#10496) We construct the functor `Sheaf J A` to `Sheaf J B` induced by a functor `A` to `B` which preserves the appropriate limits. ESTIMATED CHANGES Added src/category_theory/sites/whiskering.lean + def category_theory.Sheaf_compose + def category_theory.Sheaf_compose_map + theorem category_theory.Sheaf_compose_map_app + theorem category_theory.Sheaf_compose_map_app_app + theorem category_theory.Sheaf_compose_map_comp + theorem category_theory.Sheaf_compose_map_id + theorem category_theory.Sheaf_compose_map_to_presheaf + theorem category_theory.Sheaf_compose_obj_to_presheaf + def category_theory.grothendieck_topology.cover.map_multifork + def category_theory.grothendieck_topology.cover.multicospan_comp + theorem category_theory.grothendieck_topology.cover.multicospan_comp_app_left + theorem category_theory.grothendieck_topology.cover.multicospan_comp_app_right + theorem category_theory.grothendieck_topology.cover.multicospan_comp_hom_app_left + theorem category_theory.grothendieck_topology.cover.multicospan_comp_hom_app_right + theorem category_theory.presheaf.is_sheaf.comp 2021-11-27 08:42:32 fcb3790 feat(topology/algebra/matrix): the determinant is a continuous map (#10503) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.coe_det_is_empty Added src/topology/algebra/matrix.lean + theorem continuous_det Modified src/topology/constructions.lean + theorem continuous_apply_apply 2021-11-27 07:02:21 d36a67c feat(ring_theory/euclidean_domain): generalize lemmas to PIDs (#10324) This moves the existing lemmas to the `euclidean_domain` namespace. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean Modified src/field_theory/separable.lean Modified src/ring_theory/euclidean_domain.lean - theorem dvd_or_coprime + theorem euclidean_domain.dvd_or_coprime + theorem euclidean_domain.gcd_is_unit_iff + def euclidean_domain.gcd_monoid + theorem euclidean_domain.is_coprime_of_dvd + theorem euclidean_domain.span_gcd - theorem gcd_is_unit_iff - theorem is_coprime_of_dvd - theorem span_gcd Modified src/ring_theory/principal_ideal_domain.lean + theorem dvd_or_coprime + theorem gcd_is_unit_iff + theorem is_coprime_of_dvd + theorem span_gcd 2021-11-27 02:49:59 150b217 chore(scripts): update nolints.txt (#10513) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-26 23:08:10 7a19aa1 feat(group_theory/order_of_element): linear ordered rings (#10473) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem linear_ordered_ring.order_of_le_two + theorem order_of_abs_ne_one + theorem order_of_eq_zero_iff' 2021-11-26 21:40:36 7348f1b Adding a matching TODO back (#10506) Because we were careless and removed it too early: https://github.com/leanprover-community/mathlib/pull/10210#discussion_r757640946 ESTIMATED CHANGES Modified src/combinatorics/simple_graph/matching.lean 2021-11-26 17:50:35 deb5692 refactor(combinatorics/simple_graph): use subgraphs to represent matchings (#10210) ESTIMATED CHANGES Modified docs/overview.yaml Modified src/combinatorics/simple_graph/matching.lean - def simple_graph.matching.is_perfect - theorem simple_graph.matching.is_perfect_iff - def simple_graph.matching.support - structure simple_graph.matching + theorem simple_graph.subgraph.is_matching.support_eq_verts + def simple_graph.subgraph.is_matching + def simple_graph.subgraph.is_perfect_matching + theorem simple_graph.subgraph.is_perfect_matching_iff Modified src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.is_spanning_iff + theorem simple_graph.subgraph.mem_support + def simple_graph.subgraph.support + theorem simple_graph.subgraph.support_mono + theorem simple_graph.subgraph.support_subset_verts 2021-11-26 16:20:00 dabb58b chore(algebra/module/pi): split out `group_theory/group_action/pi` to match `group_theory/group_action/prod` (#10485) These declarations are copied without modification. ESTIMATED CHANGES Modified src/algebra/module/pi.lean - theorem function.extend_smul - theorem function.update_smul - theorem pi.has_faithful_scalar_at - theorem pi.single_smul' - theorem pi.single_smul - theorem pi.single_smul₀ - theorem pi.smul_apply' - theorem pi.smul_apply - theorem pi.smul_def - theorem set.piecewise_smul Modified src/data/fin/vec_notation.lean Added src/group_theory/group_action/pi.lean + theorem function.extend_smul + theorem function.update_smul + theorem pi.has_faithful_scalar_at + theorem pi.single_smul' + theorem pi.single_smul + theorem pi.single_smul₀ + theorem pi.smul_apply' + theorem pi.smul_apply + theorem pi.smul_def + theorem set.piecewise_smul 2021-11-26 16:19:59 ea52ec1 feat(ring_theory/ideal/operations): add lemmas about comap (#10418) This also adds `ring_hom.to_semilinear_map` and `ring_equiv.to_semilinear_equiv`. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + def ring_hom.to_semilinear_map Modified src/data/equiv/module.lean + def ring_equiv.to_semilinear_equiv Modified src/ring_theory/ideal/operations.lean + theorem ideal.comap_le_map_of_inv_on + theorem ideal.comap_le_map_of_inverse + theorem ideal.map_le_comap_of_inv_on + theorem ideal.map_le_comap_of_inverse + theorem ring_hom.comap_ker 2021-11-26 15:44:03 9cfa33a feat(algebra/lie): implement `set_like` for `lie_submodule` (#10488) This PR provides a `set_like` instance for `lie_submodule` and uses it to define `has_mem` and `has_le` for Lie submodules / ideals. ESTIMATED CHANGES Modified src/algebra/lie/submodule.lean +/- theorem lie_submodule.ext - theorem lie_submodule.le_def 2021-11-26 12:59:28 83bce9f feat(category_theory/adjunction/whiskering): Whiskering adjunctions. (#10495) Construct adjunctions between functor categories induced by whiskering (both left and right). This will be used later to construct adjunctions between categories of sheaves. ESTIMATED CHANGES Added src/category_theory/adjunction/whiskering.lean 2021-11-26 11:59:16 61e8aa8 feat(topology/algebra/[X]): sub[X] of a topological [X] is itself a topological [X] (#10491) ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/ring.lean 2021-11-26 11:04:50 36f33d0 chore(category_theory/limits): Generalize universes for limits (#10243) ESTIMATED CHANGES Modified src/algebra/category/Algebra/limits.lean +/- def Algebra.has_limits.limit_cone Modified src/algebra/category/CommRing/limits.lean +/- def SemiRing.has_limits.limit_cone Modified src/algebra/category/Module/limits.lean +/- def Module.has_limits.limit_cone Modified src/algebra/category/Mon/limits.lean +/- def Mon.has_limits.limit_cone Modified src/category_theory/category/ulift.lean - def category_theory.ulift.down + def category_theory.ulift.down_functor - def category_theory.ulift.up + def category_theory.ulift.up_functor + def category_theory.{v' Modified src/category_theory/discrete_category.lean +/- def category_theory.discrete.equiv_of_equivalence +/- def category_theory.discrete.equivalence Modified src/category_theory/fin_category.lean + def category_theory.fin_category.as_type + def category_theory.fin_category.obj_as_type + def category_theory.fin_category.obj_as_type_equiv_as_type Modified src/category_theory/graded_object.lean Modified src/category_theory/is_connected.lean Modified src/category_theory/limits/comma.lean Modified src/category_theory/limits/cones.lean +/- def category_theory.cocones +/- def category_theory.cones +/- def category_theory.functor.cocones +/- def category_theory.functor.cones +/- def category_theory.limits.cocone.extensions Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/has_limits.lean +/- def category_theory.limits.colim_coyoneda +/- def category_theory.limits.colimit.hom_iso +/- theorem category_theory.limits.colimit.hom_iso_hom +/- theorem category_theory.limits.colimit.map_post +/- theorem category_theory.limits.colimit.pre_post +/- theorem category_theory.limits.has_colimit.of_cocones_iso + theorem category_theory.limits.has_colimits.has_limits_of_shape + def category_theory.limits.has_colimits +/- theorem category_theory.limits.has_colimits_of_shape_of_equivalence + theorem category_theory.limits.has_colimits_of_size_shrink +/- theorem category_theory.limits.has_limit.of_cones_iso + theorem category_theory.limits.has_limits.has_limits_of_shape + def category_theory.limits.has_limits +/- theorem category_theory.limits.has_limits_of_shape_of_equivalence + theorem category_theory.limits.has_limits_of_size_shrink +/- def category_theory.limits.lim_yoneda +/- def category_theory.limits.limit.hom_iso +/- theorem category_theory.limits.limit.hom_iso_hom +/- theorem category_theory.limits.limit.map_post +/- theorem category_theory.limits.limit.pre_post Modified src/category_theory/limits/is_limit.lean +/- def category_theory.limits.is_colimit.hom_iso +/- theorem category_theory.limits.is_colimit.hom_iso_hom +/- def category_theory.limits.is_colimit.map_cocone_equiv +/- def category_theory.limits.is_colimit.nat_iso +/- def category_theory.limits.is_colimit.of_cocone_equiv +/- theorem category_theory.limits.is_colimit.of_cocone_equiv_apply_desc +/- theorem category_theory.limits.is_colimit.of_cocone_equiv_symm_apply_desc +/- def category_theory.limits.is_colimit.of_faithful +/- def category_theory.limits.is_colimit.of_left_adjoint +/- def category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone +/- def category_theory.limits.is_colimit.of_nat_iso +/- def category_theory.limits.is_limit.hom_iso +/- theorem category_theory.limits.is_limit.hom_iso_hom +/- def category_theory.limits.is_limit.map_cone_equiv +/- def category_theory.limits.is_limit.nat_iso +/- def category_theory.limits.is_limit.of_cone_equiv +/- theorem category_theory.limits.is_limit.of_cone_equiv_apply_desc +/- theorem category_theory.limits.is_limit.of_cone_equiv_symm_apply_desc +/- def category_theory.limits.is_limit.of_faithful +/- def category_theory.limits.is_limit.of_nat_iso.hom_of_cone +/- def category_theory.limits.is_limit.of_nat_iso +/- def category_theory.limits.is_limit.of_right_adjoint Modified src/category_theory/limits/opposites.lean +/- theorem category_theory.limits.has_colimits_op_of_has_limits +/- theorem category_theory.limits.has_limits_op_of_has_colimits Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves/shapes/binary_products.lean Modified src/category_theory/limits/preserves/shapes/equalizers.lean Modified src/category_theory/limits/preserves/shapes/pullbacks.lean Modified src/category_theory/limits/preserves/shapes/terminal.lean Modified src/category_theory/limits/presheaf.lean Modified src/category_theory/limits/shapes/binary_products.lean +/- theorem category_theory.limits.coprod.map_comp_inl_inr_codiag +/- def category_theory.limits.has_binary_coproducts +/- def category_theory.limits.has_binary_products +/- def category_theory.limits.pair +/- theorem category_theory.limits.prod.diag_map_fst_snd_comp Modified src/category_theory/limits/shapes/equalizers.lean +/- def category_theory.limits.has_coequalizers +/- def category_theory.limits.has_equalizers Modified src/category_theory/limits/shapes/finite_limits.lean +/- theorem category_theory.limits.has_finite_limits_of_has_limits Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/normal_mono.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean +/- def category_theory.limits.has_pullbacks +/- def category_theory.limits.has_pushouts Modified src/category_theory/limits/shapes/terminal.lean +/- def category_theory.limits.has_initial +/- def category_theory.limits.has_terminal Modified src/category_theory/limits/shapes/wide_equalizers.lean +/- def category_theory.limits.has_wide_coequalizers +/- def category_theory.limits.has_wide_equalizers Modified src/category_theory/limits/shapes/wide_pullbacks.lean Modified src/category_theory/monad/monadicity.lean Modified src/category_theory/sites/limits.lean Modified src/topology/category/Top/limits.lean +/- theorem Top.coequalizer_is_open_iff Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/sheaf_condition/sites.lean 2021-11-26 07:20:19 0b9d332 feat(data/complex/basic): `of_real_injective` (#10464) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.of_real_injective 2021-11-26 07:20:18 e742fce feat(data/nat/prime): `nat.{eq/ne}_one_iff` (#10463) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.eq_one_iff_not_exists_prime_dvd + theorem nat.ne_one_iff_exists_prime_dvd 2021-11-26 07:20:17 71bc7f4 feat(set_theory/ordinal_notation): nonote is well founded (#10462) ESTIMATED CHANGES Modified src/set_theory/ordinal_notation.lean + theorem nonote.wf 2021-11-26 07:20:16 cdb3819 feat(algebraic_geometry): `of_restrict` is mono. (#10460) ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/topology/category/Top/opens.lean 2021-11-26 07:20:15 757aa6f chore(data/stream): move most defs to a new file (#10458) ESTIMATED CHANGES Modified src/data/stream/basic.lean - def stream.take Added src/data/stream/defs.lean + def stream.all + def stream.any + def stream.append_stream + def stream.apply + def stream.approx + def stream.cons + def stream.const + def stream.corec' + def stream.corec + def stream.corec_on + def stream.cycle + def stream.drop + def stream.even + def stream.head + def stream.inits + def stream.inits_core + def stream.interleave + def stream.iterate + def stream.map + def stream.nats + def stream.nth + def stream.odd + def stream.pure + def stream.tail + def stream.tails + def stream.take + def stream.unfolds + def stream.zip + def stream Modified src/data/stream/init.lean - def stream.all - def stream.any - def stream.append_stream - def stream.apply - def stream.approx - def stream.cons - def stream.const - def stream.corec' - def stream.corec - def stream.corec_on - def stream.cycle - def stream.drop - def stream.even - def stream.head - def stream.inits - def stream.inits_core - def stream.interleave - def stream.iterate - def stream.map - def stream.nats - def stream.nth - def stream.odd - def stream.pure - def stream.tail - def stream.tails - def stream.unfolds - def stream.zip - def stream 2021-11-26 07:20:14 3dfa349 feat(topology/uniform_space/completion) : add injective_coe (#10454) ESTIMATED CHANGES Modified src/topology/uniform_space/completion.lean + theorem uniform_space.completion.coe_injective 2021-11-26 07:20:13 cbe1d37 feat(ring_theory/valuation/basic): add valuation.map_zpow (#10453) ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean + theorem valuation.map_zpow 2021-11-26 07:20:12 9249e1e chore(linear_algebra/affine_space/barycentric_coords): rename file `barycentric_coords` to `basis` (#10449) Follow up from https://github.com/leanprover-community/mathlib/pull/10320#discussion_r748936743 ESTIMATED CHANGES Modified src/analysis/convex/combination.lean Modified src/analysis/normed_space/add_torsor_bases.lean Renamed src/linear_algebra/affine_space/barycentric_coords.lean to src/linear_algebra/affine_space/basis.lean 2021-11-26 07:20:11 28d9a5b feat(data/equiv/basic): add lemmas characterising `equiv.Pi_congr` and `equiv.Pi_congr'` (#10432) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.Pi_congr'_apply + theorem equiv.Pi_congr'_symm_apply_symm_apply + theorem equiv.Pi_congr_apply_apply + theorem equiv.Pi_congr_symm_apply + theorem equiv.coe_Pi_congr' + theorem equiv.coe_Pi_congr_symm 2021-11-26 06:45:43 be9b96e feat(computablility/halting): halting problem is r.e. (#10459) This is a minor oversight from the original formalization, pointed out by Keji Neri. ESTIMATED CHANGES Modified src/computability/halting.lean + theorem computable_pred.computable_iff_re_compl_re' + theorem computable_pred.halting_problem_not_re + theorem computable_pred.halting_problem_re + theorem partrec.dom_re + theorem re_pred.of_eq 2021-11-26 02:32:10 f55a284 feat(topology): normal topological space with second countable topology is metrizable (#10402) Also prove that a regular topological space with second countable topology is a normal space. ESTIMATED CHANGES Modified src/logic/is_empty.lean + theorem function.extend_of_empty Modified src/topology/bases.lean Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.bounded_image +/- theorem bounded_continuous_function.bounded_range + theorem bounded_continuous_function.coe_injective + theorem bounded_continuous_function.dist_eq_supr + theorem bounded_continuous_function.dist_extend_extend + def bounded_continuous_function.extend + theorem bounded_continuous_function.extend_apply' + theorem bounded_continuous_function.extend_apply + theorem bounded_continuous_function.extend_comp + theorem bounded_continuous_function.extend_of_empty + theorem bounded_continuous_function.isometry_extend Modified src/topology/metric_space/basic.lean + theorem metric.bounded.union +/- theorem metric.bounded_union Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean + theorem isometry.embedding Added src/topology/metric_space/metrizable.lean + theorem topological_space.exists_embedding_l_infty Modified src/topology/separation.lean + theorem normal_space_of_regular_second_countable + theorem topological_space.is_topological_basis.exists_closure_subset + theorem topological_space.is_topological_basis.nhds_basis_closure Modified src/topology/uniform_space/basic.lean + def uniform_space.replace_topology + theorem uniform_space.replace_topology_eq 2021-11-25 18:25:14 ee71ddf feat(ring_theory/graded_algebra): definition of type class `graded_algebra` (#10115) This is largely written by @eric-wieser. Thank you. ESTIMATED CHANGES Added src/ring_theory/graded_algebra/basic.lean + theorem graded_algebra.decompose'_def + def graded_algebra.decompose + theorem graded_algebra.decompose_symm_of + theorem graded_ring.is_internal 2021-11-25 16:03:28 644591f chore(algebra/group/basic): + 2 simp lemmas about `a - b` (#10478) ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem sub_add_cancel' 2021-11-25 12:14:38 7d8a1e0 feat(data/polynomial/eval): random `eval` lemmas (#10470) note that the `geom_sum` import only adds the `geom_sum` file itself; all other files were imported already ESTIMATED CHANGES Modified src/algebra/geom_sum.lean + theorem one_geom_sum +/- theorem op_geom_sum +/- theorem op_geom_sum₂ Modified src/data/polynomial/eval.lean + theorem polynomial.eval_dvd + theorem polynomial.eval_eq_zero_of_dvd_of_eval_eq_zero + theorem polynomial.eval_geom_sum 2021-11-25 07:53:00 5b767aa feat(measure_theory/integral/integral_eq_improper): weaken measurability assumptions (#10387) As suggested by @fpvandoorn, this removes a.e. measurability assumptions which could be deduced from integrability assumptions. More of them could be removed assuming the codomain is a `borel_space` and not only an `open_measurable_space`, but I’m not sure wether or not it would be a good idea. ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/integral_eq_improper.lean + theorem measure_theory.ae_cover.ae_measurable Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.restrict_congr_set + theorem measure_theory.measure.restrict_eq_self_of_ae_mem + theorem measure_theory.measure.restrict_mono_ae - theorem measure_theory.restrict_congr_set - theorem measure_theory.restrict_mono_ae 2021-11-25 03:11:34 7dfd7e8 chore(scripts): update nolints.txt (#10484) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-25 01:40:31 d04f5a5 feat(algebra/pointwise): lemmas about multiplication of finsets (#10455) ESTIMATED CHANGES Modified src/algebra/pointwise.lean +/- theorem finset.coe_mul + theorem finset.empty_mul +/- theorem finset.mem_mul +/- theorem finset.mul_card_le +/- theorem finset.mul_def + theorem finset.mul_empty +/- theorem finset.mul_mem_mul + theorem finset.mul_nonempty_iff + theorem finset.mul_singleton_zero + theorem finset.mul_subset_mul + theorem finset.singleton_zero_mul 2021-11-24 18:18:56 daf30fd feat(analysis/asymptotics): Generalize superpolynomial decay using limits instead of big O (#10296) This PR generalizes the definition of `superpolynomial_decay` in terms of `filter.tendsto` instead of `asymptotics.is_O`. ESTIMATED CHANGES Modified src/analysis/asymptotics/superpolynomial_decay.lean - theorem asymptotics.is_O.trans_superpolynomial_decay +/- theorem asymptotics.superpolynomial_decay.add - theorem asymptotics.superpolynomial_decay.algebra_map_mul - theorem asymptotics.superpolynomial_decay.algebra_map_pow_mul + theorem asymptotics.superpolynomial_decay.congr' + theorem asymptotics.superpolynomial_decay.congr +/- theorem asymptotics.superpolynomial_decay.const_mul - theorem asymptotics.superpolynomial_decay.eventually_le - theorem asymptotics.superpolynomial_decay.eventually_mono + theorem asymptotics.superpolynomial_decay.inv_param_mul - theorem asymptotics.superpolynomial_decay.mono +/- theorem asymptotics.superpolynomial_decay.mul +/- theorem asymptotics.superpolynomial_decay.mul_const - theorem asymptotics.superpolynomial_decay.mul_is_O - theorem asymptotics.superpolynomial_decay.mul_is_O_polynomial + theorem asymptotics.superpolynomial_decay.mul_param + theorem asymptotics.superpolynomial_decay.mul_param_pow + theorem asymptotics.superpolynomial_decay.mul_param_zpow + theorem asymptotics.superpolynomial_decay.mul_polynomial + theorem asymptotics.superpolynomial_decay.param_inv_mul + theorem asymptotics.superpolynomial_decay.param_mul + theorem asymptotics.superpolynomial_decay.param_pow_mul + theorem asymptotics.superpolynomial_decay.param_zpow_mul +/- theorem asymptotics.superpolynomial_decay.polynomial_mul - theorem asymptotics.superpolynomial_decay.tendsto_zero + theorem asymptotics.superpolynomial_decay.trans_abs_le + theorem asymptotics.superpolynomial_decay.trans_eventually_abs_le + theorem asymptotics.superpolynomial_decay.trans_eventually_le +/- def asymptotics.superpolynomial_decay - theorem asymptotics.superpolynomial_decay_const_iff +/- theorem asymptotics.superpolynomial_decay_const_mul_iff - theorem asymptotics.superpolynomial_decay_const_mul_iff_of_ne_zero + theorem asymptotics.superpolynomial_decay_iff_abs_is_bounded_under + theorem asymptotics.superpolynomial_decay_iff_abs_tendsto_zero + theorem asymptotics.superpolynomial_decay_iff_is_O - theorem asymptotics.superpolynomial_decay_iff_is_bounded_under +/- theorem asymptotics.superpolynomial_decay_iff_is_o +/- theorem asymptotics.superpolynomial_decay_iff_norm_tendsto_zero + theorem asymptotics.superpolynomial_decay_iff_superpolynomial_decay_abs + theorem asymptotics.superpolynomial_decay_iff_superpolynomial_decay_norm - theorem asymptotics.superpolynomial_decay_iff_tendsto_zero + theorem asymptotics.superpolynomial_decay_iff_zpow_tendsto_zero +/- theorem asymptotics.superpolynomial_decay_mul_const_iff - theorem asymptotics.superpolynomial_decay_mul_const_iff_of_ne_zero + theorem asymptotics.superpolynomial_decay_mul_param_iff + theorem asymptotics.superpolynomial_decay_mul_param_pow_iff - theorem asymptotics.superpolynomial_decay_of_eventually_is_O - theorem asymptotics.superpolynomial_decay_of_is_O_zpow_le - theorem asymptotics.superpolynomial_decay_of_is_O_zpow_lt + theorem asymptotics.superpolynomial_decay_param_mul_iff + theorem asymptotics.superpolynomial_decay_param_pow_mul_iff - theorem asymptotics.superpolynomial_decay_zero' +/- theorem asymptotics.superpolynomial_decay_zero Modified src/order/filter/at_top_bot.lean + theorem filter.eventually_ne_of_tendsto_at_bot + theorem filter.eventually_ne_of_tendsto_at_top Modified src/topology/algebra/ordered/basic.lean + theorem tendsto_zero_iff_abs_tendsto_zero 2021-11-24 14:56:57 18e5510 fix(tactic/cancel_denoms): remove debug code (#10434) This code must not be used -- worth keeping, as it's a potentially useful function, but it shouldn't trace anything. ESTIMATED CHANGES Modified src/tactic/cancel_denoms.lean 2021-11-24 12:24:42 b29b952 feat(measure_theory/group/fundamental_domain): prove equality of integrals (#10448) ESTIMATED CHANGES Modified src/dynamics/ergodic/measure_preserving.lean + theorem measure_theory.measure_preserving.ae_measurable_comp_iff Modified src/measure_theory/group/fundamental_domain.lean + theorem measure_theory.is_fundamental_domain.lintegral_eq_tsum_of_ac + theorem measure_theory.is_fundamental_domain.measure_eq_tsum_of_ac + theorem measure_theory.is_fundamental_domain.mono + theorem measure_theory.is_fundamental_domain.set_lintegral_eq_tsum' + theorem measure_theory.is_fundamental_domain.set_lintegral_eq_tsum + theorem measure_theory.is_fundamental_domain.sum_restrict_of_ac 2021-11-24 12:24:41 563f8c4 feat(measure_theory/integral): dominated convergence for a series (#10398) ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.has_sum_integral_of_dominated_convergence Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.has_sum_integral_of_dominated_convergence + theorem interval_integral.tendsto_integral_filter_of_dominated_convergence 2021-11-24 10:42:43 132833b refactor(algebra.abs): Introduce `has_pos_part` and `has_neg_part` classes (#10420) refactor(algebra.abs): Introduce `has_pos_part` and `has_neg_part` classes ESTIMATED CHANGES Modified src/algebra/abs.lean Modified src/algebra/lattice_ordered_group.lean + theorem lattice_ordered_comm_group.m_neg_part_def + theorem lattice_ordered_comm_group.m_pos_part_def - def lattice_ordered_comm_group.mneg - def lattice_ordered_comm_group.mpos +/- theorem lattice_ordered_comm_group.neg_eq_pos_inv 2021-11-24 09:23:46 09b4bfc feat(linear_algebra/multilinear/basic): multilinear maps with respect to an empty family are all constant (#10433) This seemingly-innocuous statement is valuable as a base case for induction. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/multilinear/basic.lean + def multilinear_map.const_linear_equiv_of_is_empty + theorem multilinear_map.mk_coe 2021-11-24 07:49:21 d487d65 refactor(topology,algebraic_geometry): use bundled maps here and there (#10447) * `opens.comap` now takes a `continuous_map` and returns a `preorder_hom`; * `prime_spectrum.comap` is now a bundled `continuous_map`. ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean +/- def algebraic_geometry.Spec.Top_map Modified src/algebraic_geometry/prime_spectrum/basic.lean +/- def prime_spectrum.comap - theorem prime_spectrum.comap_continuous +/- theorem prime_spectrum.comap_id + theorem prime_spectrum.preimage_comap_zero_locus_aux Modified src/algebraic_geometry/prime_spectrum/is_open_comap_C.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/measure_theory/measure/content.lean Modified src/topology/opens.lean +/- theorem topological_space.opens.coe_comap +/- def topological_space.opens.comap +/- theorem topological_space.opens.comap_id +/- theorem topological_space.opens.comap_mono +/- theorem topological_space.opens.comap_val 2021-11-24 07:49:20 3590dc2 feat(topology/uniform_space/uniform_convergence): slightly generalize theorems (#10444) * add `protected` to some theorems; * assume `∀ᶠ n, continuous (F n)` instead of `∀ n, continuous (F n)`; * get rid of `F n` in lemmas like `continuous_within_at_of_locally_uniform_approx_of_continuous_within_at`; instead, assume that there exists a continuous `F` that approximates `f`. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean - theorem analytic_at.continuous_at - theorem has_fpower_series_at.continuous_at - theorem has_fpower_series_on_ball.continuous_on Modified src/topology/continuous_function/bounded.lean Modified src/topology/uniform_space/uniform_convergence.lean - theorem continuous_of_locally_uniform_approx_of_continuous + theorem continuous_of_locally_uniform_approx_of_continuous_at +/- theorem continuous_of_uniform_approx_of_continuous - theorem continuous_on_of_locally_uniform_approx_of_continuous_on + theorem continuous_on_of_locally_uniform_approx_of_continuous_within_at - theorem tendsto_locally_uniformly.continuous - theorem tendsto_locally_uniformly_on.continuous_on - theorem tendsto_uniformly.continuous - theorem tendsto_uniformly.tendsto_locally_uniformly - theorem tendsto_uniformly.tendsto_uniformly_on - theorem tendsto_uniformly_on.continuous_on - theorem tendsto_uniformly_on.tendsto_locally_uniformly_on 2021-11-24 07:49:19 8d07dbf feat(topology/sheaves): Generalized some lemmas. (#10440) Generalizes some lemmas and explicitly stated that for `f` to be an iso on `U`, it suffices that the stalk map is an iso for all `x : U`. ESTIMATED CHANGES Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.app_is_iso_of_stalk_functor_map_iso 2021-11-24 07:49:18 a086daa chore(ring_theory/polynomial/cyclotomic): use `ratfunc` (#10421) ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic.lean +/- theorem polynomial.cyclotomic_eq_prod_X_pow_sub_one_pow_moebius 2021-11-24 07:49:17 6cb52e6 feat(category_theory/limits): Results about (co)limits in Top (#9985) - Provided the explicit topologies for limits and colimits, and specialized this result onto some shapes. - Provided the isomorphism between the (co)limits and the constructions in `topology/constructions.lean`. - Provided conditions about whether `prod.map` and `pullback_map` are inducing, embedding, etc. ESTIMATED CHANGES Modified src/topology/category/Top/limits.lean + theorem Top.coequalizer_is_open_iff + theorem Top.coinduced_of_is_colimit + theorem Top.colimit_is_open_iff + theorem Top.colimit_topology + theorem Top.embedding_of_pullback_embeddings + theorem Top.embedding_prod_map + theorem Top.embedding_pullback_to_prod + theorem Top.fst_embedding_of_right_embedding + theorem Top.fst_iso_of_right_embedding_range_subset + theorem Top.fst_open_embedding_of_right_open_embedding + theorem Top.induced_of_is_limit + theorem Top.inducing_prod_map + theorem Top.inducing_pullback_to_prod + theorem Top.limit_topology + theorem Top.open_embedding_of_pullback_open_embeddings + def Top.pi_fan + def Top.pi_fan_is_limit + def Top.pi_iso_pi + theorem Top.pi_iso_pi_hom_apply + theorem Top.pi_iso_pi_inv_π + theorem Top.pi_iso_pi_inv_π_apply + def Top.pi_π + def Top.prod_binary_fan + def Top.prod_binary_fan_is_limit + def Top.prod_fst + def Top.prod_iso_prod + theorem Top.prod_iso_prod_hom_apply + theorem Top.prod_iso_prod_hom_fst + theorem Top.prod_iso_prod_hom_snd + theorem Top.prod_iso_prod_inv_fst + theorem Top.prod_iso_prod_inv_snd + def Top.prod_snd + theorem Top.prod_topology + def Top.pullback_cone + def Top.pullback_cone_is_limit + def Top.pullback_fst + theorem Top.pullback_fst_range + def Top.pullback_iso_prod_subtype + theorem Top.pullback_iso_prod_subtype_hom_apply + theorem Top.pullback_iso_prod_subtype_hom_fst + theorem Top.pullback_iso_prod_subtype_hom_snd + theorem Top.pullback_iso_prod_subtype_inv_fst + theorem Top.pullback_iso_prod_subtype_inv_fst_apply + theorem Top.pullback_iso_prod_subtype_inv_snd + theorem Top.pullback_iso_prod_subtype_inv_snd_apply + theorem Top.pullback_map_embedding_of_embeddings + theorem Top.pullback_map_open_embedding_of_open_embeddings + def Top.pullback_snd + theorem Top.pullback_snd_range + theorem Top.pullback_topology + theorem Top.range_prod_map + theorem Top.range_pullback_map + theorem Top.range_pullback_to_prod + def Top.sigma_cofan + def Top.sigma_cofan_is_colimit + def Top.sigma_iso_sigma + theorem Top.sigma_iso_sigma_hom_ι + theorem Top.sigma_iso_sigma_hom_ι_apply + theorem Top.sigma_iso_sigma_inv_apply + def Top.sigma_ι + theorem Top.snd_embedding_of_left_embedding + theorem Top.snd_iso_of_left_embedding_range_subset + theorem Top.snd_open_embedding_of_left_open_embedding Modified src/topology/homeomorph.lean 2021-11-24 06:51:50 d267b6c chore(topology): add 2 missing `inhabited` instances (#10446) Also add an instance from `discrete_topology` to `topological_ring`. ESTIMATED CHANGES Modified src/topology/algebra/ring.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/TopCommRing.lean 2021-11-24 03:16:10 1c00179 chore(scripts): update nolints.txt (#10445) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-24 02:33:03 f578d1d feat(measure_theory): TC for smul-invariant measures (#10325) ESTIMATED CHANGES Modified src/dynamics/ergodic/measure_preserving.lean + theorem measure_theory.measure_preserving.measure_preimage_emb Added src/measure_theory/group/action.lean + theorem measure_theory.is_locally_finite_measure_of_smul_invariant + theorem measure_theory.map_smul + theorem measure_theory.measure_eq_zero_iff_eq_empty_of_smul_invariant + theorem measure_theory.measure_is_open_pos_of_smul_invariant_of_compact_ne_zero + theorem measure_theory.measure_is_open_pos_of_smul_invariant_of_ne_zero + theorem measure_theory.measure_pos_iff_nonempty_of_smul_invariant + theorem measure_theory.measure_preimage_smul + theorem measure_theory.measure_preserving_smul + theorem measure_theory.measure_smul_set + theorem measure_theory.smul_invariant_measure_tfae Added src/measure_theory/group/fundamental_domain.lean + structure measure_theory.is_add_fundamental_domain + theorem measure_theory.is_fundamental_domain.Union_smul_ae_eq + theorem measure_theory.is_fundamental_domain.measurable_set_smul + theorem measure_theory.is_fundamental_domain.measure_eq_tsum' + theorem measure_theory.is_fundamental_domain.measure_eq_tsum + theorem measure_theory.is_fundamental_domain.pairwise_ae_disjoint + structure measure_theory.is_fundamental_domain Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/measure_space_def.lean +/- theorem measure_theory.measure_Union_null_iff + theorem measure_theory.measure_sUnion_null_iff 2021-11-23 22:42:46 0cbba1a feat(ring_theory/adjoin/basic): add adjoin_induction' and adjoin_adjoin_coe_preimage (#10427) From FLT-regular. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.closure_closure_coe_preimage Modified src/group_theory/submonoid/operations.lean + theorem submonoid.closure_closure_coe_preimage Modified src/linear_algebra/basic.lean + theorem submodule.span_induction' + theorem submodule.span_span_coe_preimage Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_adjoin_coe_preimage + theorem algebra.adjoin_induction' 2021-11-23 22:42:45 c192937 feat(analysis): derivative of a parametric interval integral (#10404) ESTIMATED CHANGES Added src/analysis/calculus/parametric_interval_integral.lean + theorem interval_integral.has_deriv_at_integral_of_dominated_loc_of_deriv_le + theorem interval_integral.has_deriv_at_integral_of_dominated_loc_of_lip + theorem interval_integral.has_fderiv_at_integral_of_dominated_loc_of_lip + theorem interval_integral.has_fderiv_at_integral_of_dominated_of_fderiv_le Modified src/measure_theory/constructions/borel_space.lean + theorem measurable_set_interval_oc 2021-11-23 21:34:42 ac283c2 feat(data/nat/prime): some lemmas about prime factors (#10385) A few small lemmas about prime factors, for use in future PRs on prime factorisations and the Euler product formula for totient ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.factors_count_eq_of_coprime_left + theorem nat.factors_count_eq_of_coprime_right + theorem nat.le_factors_count_mul_left + theorem nat.le_factors_count_mul_right + theorem nat.mem_factors_mul_left + theorem nat.mem_factors_mul_right + theorem nat.perm_factors_mul_of_coprime + theorem nat.perm_factors_mul_of_pos 2021-11-23 20:50:39 eb8b1b8 feat(linear_algebra/affine_space/barycentric_coords): characterise affine bases in terms of coordinate matrices (#10370) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/barycentric_coords.lean + theorem affine_basis.affine_independent_of_to_matrix_right_inv + theorem affine_basis.affine_span_eq_top_of_to_matrix_left_inv + theorem affine_basis.ext_elem + theorem affine_basis.is_unit_to_matrix_iff + theorem affine_basis.to_matrix_row_sum_one Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent_iff_eq_of_fintype_affine_combination_eq 2021-11-23 19:47:54 fb82d0a feat(data/mv_polynomial/basic): add a symmetric version of coeff_X_mul and generalize to monomials (#10429) ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + theorem add_monoid_algebra.support_single_mul + theorem monoid_algebra.support_single_mul Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.coeff_X_mul' + theorem mv_polynomial.coeff_X_mul + theorem mv_polynomial.coeff_monomial_mul' + theorem mv_polynomial.coeff_monomial_mul + theorem mv_polynomial.coeff_mul_monomial' + theorem mv_polynomial.coeff_mul_monomial +/- theorem mv_polynomial.map_alg_hom_coe_ring_hom + theorem mv_polynomial.support_X_mul 2021-11-23 19:47:53 ba43124 feat(category_theory/sites/*): Comparison lemma (#9785) ESTIMATED CHANGES Modified src/category_theory/sites/cover_lifting.lean +/- theorem category_theory.Ran_is_sheaf_of_cover_lifting + theorem category_theory.comp_cover_lifting - def category_theory.comp_cover_lifting +/- structure category_theory.cover_lifting + theorem category_theory.id_cover_lifting - def category_theory.id_cover_lifting + def category_theory.sites.copullback + def category_theory.sites.pullback_copullback_adjunction Modified src/category_theory/sites/dense_subsite.lean + def category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting + theorem category_theory.cover_dense.compatible_preserving Added src/category_theory/sites/induced_topology.lean + def category_theory.cover_dense.Sheaf_equiv + def category_theory.cover_dense.induced_topology + theorem category_theory.cover_dense.locally_cover_dense + def category_theory.locally_cover_dense.induced_topology + theorem category_theory.locally_cover_dense.induced_topology_cover_lifting + theorem category_theory.locally_cover_dense.induced_topology_cover_preserving + theorem category_theory.locally_cover_dense.pushforward_cover_iff_cover_pullback + def category_theory.locally_cover_dense + theorem category_theory.over_forget_locally_cover_dense Modified src/category_theory/sites/sieves.lean +/- theorem category_theory.sieve.functor_pushforward_bot + theorem category_theory.sieve.functor_pushforward_top 2021-11-23 18:21:04 a779f6c feat(topology/algebra/ordered): convergent sequence is bounded above/below (#10424) Also move lemmas `Ixx_mem_nhds` up to generalize them from `[linear_order α] [order_topology α]` to `[linear_order α] [order_closed_topology α]`. ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.is_bounded_under.bdd_above_range + theorem filter.is_bounded_under.bdd_above_range_of_cofinite + theorem filter.is_bounded_under.bdd_below_range + theorem filter.is_bounded_under.bdd_below_range_of_cofinite +/- theorem filter.not_is_bounded_under_of_tendsto_at_bot +/- theorem filter.not_is_bounded_under_of_tendsto_at_top Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/ordered/liminf_limsup.lean + theorem filter.tendsto.bdd_above_range + theorem filter.tendsto.bdd_above_range_of_cofinite + theorem filter.tendsto.bdd_below_range + theorem filter.tendsto.bdd_below_range_of_cofinite 2021-11-23 18:21:02 1dd3ae1 feat(algebra/big_operators/order): Bounding on a sum of cards by double counting (#10389) If every element of `s` is in at least/most `n` finsets of `B : finset (finset α)`, then the sum of `(s ∩ t).card` over `t ∈ B` is at most/least `s.card * n`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.le_sum_card + theorem finset.le_sum_card_inter + theorem finset.sum_card + theorem finset.sum_card_inter + theorem finset.sum_card_inter_le + theorem finset.sum_card_le 2021-11-23 16:49:25 b14f22e chore(algebra/algebra and group_theory/group_action): move a lemma (#10425) Move a lemma about the action of a group on the units of a monoid to a more appropriate place. It accidentally ended up in `algebra/algebra/spectrum` but a better place is `group_theory/group_action/units`. ESTIMATED CHANGES Modified src/algebra/algebra/spectrum.lean - theorem is_unit.smul_iff Modified src/group_theory/group_action/group.lean + theorem is_unit_smul_iff Modified src/group_theory/group_action/units.lean + theorem is_unit.smul 2021-11-23 16:49:24 7c4f395 feat(measure_theory): add `is_R_or_C.measurable_space` (#10417) Don't remove specific instances because otherwise Lean fails to generate `borel_space (ι → ℝ)`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/conditional_expectation.lean +/- theorem measure_theory.ae_measurable'.const_inner +/- theorem measure_theory.norm_condexp_L2_le_one Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.integrable.of_real +/- theorem measure_theory.integrable.re_im_iff Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/special_functions.lean Modified src/measure_theory/integral/set_integral.lean +/- theorem continuous_linear_map.continuous_integral_comp_L1 +/- def measure_theory.Lp_to_Lp_restrict_clm +/- theorem measure_theory.Lp_to_Lp_restrict_clm_coe_fn +/- theorem measure_theory.Lp_to_Lp_restrict_smul 2021-11-23 16:49:23 a1338d6 feat(linear_algebra/affine_space/barycentric_coords): affine bases exist over fields (#10333) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/barycentric_coords.lean + theorem affine_basis.exists_affine_basis + theorem affine_basis.exists_affine_basis_of_finite_dimensional 2021-11-23 16:49:22 7a6e6d8 feat(group_theory/schur_zassenhaus): Prove the full Schur-Zassenhaus theorem (#10283) Previously, the Schur-Zassenhaus theorem was only proved for abelian normal subgroups. This PR removes the abelian assumption. ESTIMATED CHANGES Modified src/group_theory/schur_zassenhaus.lean +/- theorem subgroup.exists_left_complement'_of_coprime + theorem subgroup.exists_left_complement'_of_coprime_of_fintype +/- theorem subgroup.exists_right_complement'_of_coprime + theorem subgroup.exists_right_complement'_of_coprime_of_fintype + theorem subgroup.schur_zassenhaus_induction.step7 2021-11-23 16:49:21 97186fe feat(combinatorics): Hindman's theorem on finite sums (#10029) A short proof of Hindman's theorem using idempotent ultrafilters. ESTIMATED CHANGES Added src/combinatorics/hindman.lean + theorem hindman.FP.finset_prod + theorem hindman.FP.mul + theorem hindman.FP.mul_two + theorem hindman.FP.singleton + inductive hindman.FP + theorem hindman.FP_drop_subset_FP + theorem hindman.FP_partition_regular + inductive hindman.FS + theorem hindman.exists_FP_of_finite_cover + theorem hindman.exists_FP_of_large + theorem hindman.exists_idempotent_ultrafilter_le_FP + structure on + theorem ultrafilter.continuous_mul_left + theorem ultrafilter.eventually_mul + def ultrafilter.has_mul + def ultrafilter.semigroup Modified src/data/stream/basic.lean + theorem stream.head_drop Modified src/order/filter/ultrafilter.lean Added src/topology/algebra/semigroup.lean + theorem exists_idempotent_in_compact_subsemigroup + theorem exists_idempotent_of_compact_t2_of_continuous_mul_left 2021-11-23 15:06:10 050482c doc(measure_theory/decomposition/jordan): typo (#10430) ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean 2021-11-23 15:06:08 53bd9d7 feat(field_theory): generalize `ratfunc K` to `comm_ring K`/`is_domain K` (#10428) Fixes one of the TODO's from the original ratfunc PR: apply all the easy generalizations where `K` doesn't need to be a field, only a `is_domain K` or even just `comm_ring K`. This would allow us to use `ratfunc` in #10421. ESTIMATED CHANGES Modified src/field_theory/ratfunc.lean 2021-11-23 15:06:07 7958251 doc(field_theory/abel_ruffini): update module doc (#10426) ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean 2021-11-23 15:06:06 2b75493 refactor(algebra.group.basic): Convert sub_add_cancel and neg_sub to multaplicative form (#10419) Currently mathlib has a rich set of lemmas connecting the addition, subtraction and negation additive group operations, but a far thinner collection of results for multiplication, division and inverse multiplicative group operations, despite the fact that the former can be generated easily from the latter via `to_additive`. In #9548 I require multiplicative forms of the existing `sub_add_cancel` and `neg_sub` lemmas. This PR refactors them as the equivalent multiplicative results and then recovers `sub_add_cancel` and `neg_sub` via `to_additive`. There is a complication in that unfortunately `group_with_zero` already has lemmas named `inv_div` and `div_mul_cancel`. I have worked around this by naming the lemmas in this PR `inv_div'` and `div_mul_cancel'` and then manually overriding the names generated by `to_additive`. Other suggestions as to how to approach this welcome. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem div_mul_cancel' + theorem inv_div' - theorem neg_sub - theorem sub_add_cancel 2021-11-23 15:06:04 d0e454a feat(logic/function/basic): add `function.{in,sur,bi}jective.comp_left` (#10406) As far as I can tell we don't have these variations. Note that the `surjective` and `bijective` versions do not appear next to the other composition statements, as they require `surj_inv` to concisely prove. ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.bijective.comp_left + theorem function.injective.comp_left + theorem function.surjective.comp_left 2021-11-23 13:11:55 d9e40b4 chore(measure_theory/integral): generalize `interval_integral.norm_integral_le_integral_norm` (#10412) It was formulated only for functions `f : α → ℝ`; generalize to `f : α → E`. ESTIMATED CHANGES Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.norm_integral_le_integral_norm 2021-11-23 13:11:54 2817788 chore(measure_theory/integral): add `integrable_const` for `interval_integral` (#10410) ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean +/- theorem measure_theory.integrable_on_const Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integrable_const + theorem interval_integrable_const_iff Modified src/measure_theory/measure/measure_space.lean 2021-11-23 13:11:53 3b13744 chore(measure_theory/integral): more versions of `integral_finset_sum` (#10394) * fix assumptions in existing lemmas (`∀ i ∈ s` instead of `∀ i`); * add a version for interval integrals. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.integral_finset_sum Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.integral_finset_sum 2021-11-23 13:11:52 2ec6de7 feat(topology/connected): sufficient conditions for the preimage of a connected set to be connected (#10289) and other simple connectedness results ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.nonempty.preimage' Modified src/data/set/lattice.lean + theorem disjoint.subset_left_of_subset_union + theorem disjoint.subset_right_of_subset_union Modified src/topology/connected.lean + theorem is_connected.preimage_of_closed_map + theorem is_connected.preimage_of_open_map + theorem is_preconnected.preimage_of_closed_map + theorem is_preconnected.preimage_of_open_map + theorem is_preconnected.subset_left_of_subset_union + theorem is_preconnected.subset_or_subset + theorem is_preconnected.subset_right_of_subset_union 2021-11-23 13:11:50 e8386bd feat(group_theory/exponent): Define the exponent of a group (#10249) This PR provides the definition and some very basic API for the exponent of a group/monoid. ESTIMATED CHANGES Modified src/algebra/gcd_monoid/finset.lean + theorem finset.lcm_eq_zero_iff Modified src/algebra/gcd_monoid/multiset.lean + theorem multiset.lcm_eq_zero_iff Added src/group_theory/exponent.lean + theorem monoid.exp_eq_one_of_subsingleton + theorem monoid.exponent_dvd_of_forall_pow_eq_one + def monoid.exponent_exists + theorem monoid.exponent_min' + theorem monoid.exponent_min + theorem monoid.exponent_pos_of_exists + theorem monoid.lcm_order_eq_exponent + theorem monoid.lcm_order_of_dvd_exponent + theorem monoid.order_dvd_exponent + theorem monoid.pow_eq_mod_exponent + theorem monoid.pow_exponent_eq_one 2021-11-23 13:11:48 cf91773 refactor(*): split `order_{top,bot}` from `lattice` hierarchy (#9891) Rename `bounded_lattice` to `bounded_order`. Split out `order_{top,bot}` and `bounded_order` from the order hierarchy. That means that we no longer have `semilattice_{sup,inf}_{top,bot}`, but use the `[order_top]` as a mixin to `semilattice_inf`, for example. Similarly, `lattice` and `bounded_order` instead of what was before `bounded_lattice`. Similarly, `distrib_lattice` and `bounded_order` instead of what was before `bounded_distrib_lattice`. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/associated.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/nonneg.lean Modified src/algebra/tropical/basic.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/box_integral/partition/filter.lean Modified src/analysis/normed_space/enorm.lean Modified src/category_theory/filtered.lean Modified src/category_theory/limits/lattice.lean +/- theorem category_theory.limits.complete_lattice.coprod_eq_sup +/- def category_theory.limits.complete_lattice.finite_colimit_cocone +/- theorem category_theory.limits.complete_lattice.finite_colimit_eq_finset_univ_sup +/- theorem category_theory.limits.complete_lattice.finite_coproduct_eq_finset_sup +/- def category_theory.limits.complete_lattice.finite_limit_cone +/- theorem category_theory.limits.complete_lattice.finite_limit_eq_finset_univ_inf +/- theorem category_theory.limits.complete_lattice.finite_product_eq_finset_inf +/- theorem category_theory.limits.complete_lattice.prod_eq_inf +/- theorem category_theory.limits.complete_lattice.pullback_eq_inf +/- theorem category_theory.limits.complete_lattice.pushout_eq_sup Modified src/category_theory/sites/grothendieck.lean + theorem category_theory.grothendieck_topology.le_def Modified src/category_theory/sites/plus.lean Modified src/category_theory/sites/pretopology.lean + theorem category_theory.pretopology.le_def Modified src/category_theory/sites/sheafification.lean Modified src/category_theory/subobject/lattice.lean Modified src/combinatorics/colex.lean Modified src/combinatorics/simple_graph/subgraph.lean Modified src/data/fin/basic.lean Modified src/data/finset/basic.lean Modified src/data/finset/lattice.lean +/- theorem finset.comp_inf_eq_inf_comp +/- theorem finset.comp_inf_eq_inf_comp_of_is_total +/- theorem finset.comp_sup_eq_sup_comp +/- theorem finset.comp_sup_eq_sup_comp_of_is_total +/- theorem finset.disjoint_sup_left +/- theorem finset.disjoint_sup_right +/- theorem finset.sup_finset_image +/- theorem finset.sup_le_of_le_directed Modified src/data/finset/pairwise.lean +/- theorem set.pairwise_disjoint.image_finset_of_le Modified src/data/finsupp/basic.lean Modified src/data/finsupp/lattice.lean +/- theorem finsupp.support_sup Modified src/data/fintype/basic.lean Modified src/data/list/min_max.lean Modified src/data/multiset/basic.lean Modified src/data/multiset/lattice.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/nat/basic.lean Modified src/data/nat/enat.lean Modified src/data/part.lean Modified src/data/pequiv.lean Modified src/data/pnat/factors.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/semiquot.lean Modified src/data/set/intervals/basic.lean +/- theorem set.Icc_bot_top Modified src/data/set/pairwise.lean +/- theorem pairwise_disjoint_on +/- theorem pairwise_disjoint_on_bool Modified src/linear_algebra/linear_pmap.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.simple_func.finset_sup_apply Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean + theorem measurable_space.le_def Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/pi_system.lean + theorem measurable_space.dynkin_system.le_def Modified src/measure_theory/probability_mass_function/basic.lean Modified src/order/atoms.lean +/- theorem is_atom.disjoint_of_ne +/- theorem is_atom.inf_eq_bot_of_ne +/- theorem is_atom_dual_iff_is_coatom +/- theorem is_coatom.sup_eq_top_of_ne +/- theorem is_coatom_dual_iff_is_atom +/- theorem is_simple_lattice_iff_is_atom_top +/- theorem is_simple_lattice_iff_is_coatom_bot +/- theorem is_simple_lattice_iff_is_simple_lattice_order_dual +/- theorem order_iso.is_atom_iff +/- theorem order_iso.is_atomic_iff +/- theorem order_iso.is_coatom_iff +/- theorem order_iso.is_coatomic_iff +/- theorem order_iso.is_simple_lattice +/- theorem order_iso.is_simple_lattice_iff +/- theorem set.is_simple_lattice_Ici_iff_is_coatom +/- theorem set.is_simple_lattice_Iic_iff_is_atom Modified src/order/basic.lean +/- theorem pi.le_def Modified src/order/boolean_algebra.lean + def boolean_algebra.core.sdiff + theorem boolean_algebra.core.sdiff_eq +/- theorem pi.compl_apply Renamed src/order/bounded_lattice.lean to src/order/bounded_order.lean - theorem bounded_lattice.ext + theorem bounded_order.ext +/- theorem eq_bot_of_bot_eq_top +/- theorem eq_top_of_bot_eq_top + theorem inf_eq_bot_iff_le_compl +/- structure is_compl +/- theorem is_compl_bot_top +/- theorem is_compl_top_bot +/- theorem order_bot.ext +/- theorem order_bot.ext_bot +/- theorem order_top.ext +/- theorem subsingleton_iff_bot_eq_top +/- theorem subsingleton_of_bot_eq_top +/- theorem subsingleton_of_top_le_bot Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/copy.lean - def bounded_lattice.copy + def bounded_order.copy + def lattice.copy Modified src/order/filter/basic.lean Modified src/order/filter/germ.lean Modified src/order/galois_connection.lean - def galois_coinsertion.lift_bounded_lattice + def galois_coinsertion.lift_bounded_order - def galois_insertion.lift_bounded_lattice + def galois_insertion.lift_bounded_order Modified src/order/lattice_intervals.lean - def set.Icc.bounded_lattice + def set.Icc.bounded_order +/- def set.Icc.order_bot +/- def set.Icc.order_top - def set.Icc.semilattice_inf_bot - def set.Icc.semilattice_inf_top - def set.Icc.semilattice_sup_bot - def set.Icc.semilattice_sup_top - def set.Ico.semilattice_inf_bot - def set.Ioc.semilattice_sup_top Modified src/order/modular_lattice.lean Modified src/order/partial_sups.lean +/- theorem partial_sups_disjoint_of_disjoint +/- theorem partial_sups_eq_sup_range Modified src/order/preorder_hom.lean Modified src/order/rel_iso.lean +/- theorem disjoint.map_order_iso +/- theorem disjoint_map_order_iso_iff Modified src/order/succ_pred.lean Modified src/order/sup_indep.lean +/- theorem finset.sup_indep.bUnion +/- theorem finset.sup_indep.sup +/- theorem finset.sup_indep_iff_pairwise_disjoint Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/tactic/monotonicity/basic.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered/basic.lean +/- theorem nhds_bot_basis +/- theorem nhds_bot_basis_Iic +/- theorem nhds_top_basis +/- theorem nhds_top_basis_Ici Modified src/topology/compacts.lean Modified src/topology/dense_embedding.lean Modified src/topology/discrete_quotient.lean Modified src/topology/instances/nnreal.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/order.lean Modified test/transport/basic.lean + def sup.map - def sup_top.map 2021-11-23 11:49:18 3fee4b9 chore(control/random): Move from `system.random.basic` (#10408) The top folder `system` contains a single file, apparently because it mimics Lean core's organisation. This moves it under `control.` and gets rid of one top folder. ESTIMATED CHANGES Renamed src/system/random/basic.lean to src/control/random.lean Modified src/testing/slim_check/gen.lean Modified test/random.lean 2021-11-23 11:49:16 b1a9c2e feat(analysis/normed_space/multilinear): add `norm_mk_pi_field` (#10396) Also upgrade the corresponding equivalence to a `linear_isometry`. ESTIMATED CHANGES Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.self_comp_symm + theorem linear_isometry_equiv.symm_comp_self Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.norm_mk_pi_field 2021-11-23 11:49:15 87b0084 chore(field_theory/separable): generalize theorems (#10337) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean +/- theorem polynomial.not_is_unit_X_sub_C Modified src/data/polynomial/ring_division.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/primitive_element.lean Modified src/field_theory/separable.lean +/- theorem irreducible.separable +/- theorem polynomial.coeff_contract + theorem polynomial.contract_expand +/- theorem polynomial.count_roots_le_one +/- theorem polynomial.eq_X_sub_C_of_separable_of_root_eq +/- theorem polynomial.exists_separable_of_irreducible +/- theorem polynomial.expand_char +/- theorem polynomial.expand_contract + theorem polynomial.expand_zero +/- theorem polynomial.is_unit_or_eq_zero_of_separable_expand +/- theorem polynomial.map_expand_pow_char +/- theorem polynomial.multiplicity_le_one_of_separable +/- theorem polynomial.nodup_of_separable_prod +/- theorem polynomial.nodup_roots - theorem polynomial.not_unit_X_sub_C +/- theorem polynomial.of_irreducible_expand +/- theorem polynomial.of_irreducible_expand_pow +/- theorem polynomial.root_multiplicity_le_one_of_separable +/- theorem polynomial.separable.squarefree +/- theorem polynomial.separable_X_pow_sub_C_unit + theorem polynomial.separable_of_subsingleton - theorem polynomial.squarefree_X_pow_sub_C +/- theorem polynomial.unique_separable_of_irreducible Modified src/field_theory/separable_degree.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/trace.lean 2021-11-23 11:49:14 9cf6766 feat(order/filter/pi): define `filter.pi` and prove some properties (#10323) ESTIMATED CHANGES Modified src/analysis/box_integral/box/subbox_induction.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/constructions/pi.lean - theorem measure_theory.measure.ae_pi_le_infi_comap + theorem measure_theory.measure.ae_pi_le_pi Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/order/filter/basic.lean - theorem filter.Coprod_mono - theorem filter.Coprod_ne_bot - theorem filter.Coprod_ne_bot_iff' - theorem filter.Coprod_ne_bot_iff - theorem filter.compl_mem_Coprod_iff - theorem filter.map_pi_map_Coprod_le - theorem filter.mem_Coprod_iff - theorem filter.ne_bot.Coprod - theorem filter.tendsto.pi_map_Coprod Modified src/order/filter/cofinite.lean Added src/order/filter/pi.lean + theorem filter.Coprod_mono + theorem filter.Coprod_ne_bot + theorem filter.Coprod_ne_bot_iff' + theorem filter.Coprod_ne_bot_iff + theorem filter.compl_mem_Coprod_iff + theorem filter.le_pi + theorem filter.map_pi_map_Coprod_le + theorem filter.mem_Coprod_iff + theorem filter.mem_of_pi_mem_pi + theorem filter.mem_pi' + theorem filter.mem_pi + theorem filter.mem_pi_of_mem + theorem filter.ne_bot.Coprod + def filter.pi + theorem filter.pi_eq_bot + theorem filter.pi_inf_principal_pi_eq_bot + theorem filter.pi_inf_principal_pi_ne_bot + theorem filter.pi_inf_principal_univ_pi_eq_bot + theorem filter.pi_inf_principal_univ_pi_ne_bot + theorem filter.pi_mem_pi + theorem filter.pi_mem_pi_iff + theorem filter.pi_mono + theorem filter.pi_ne_bot + theorem filter.tendsto.pi_map_Coprod + theorem filter.tendsto_eval_pi + theorem filter.tendsto_pi Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/ordered/monotone_convergence.lean Modified src/topology/algebra/weak_dual_topology.lean Modified src/topology/bases.lean Modified src/topology/constructions.lean +/- theorem interior_pi_set + theorem mem_nhds_of_pi_mem_nhds - theorem mem_nhds_pi +/- theorem set_pi_mem_nhds_iff - theorem tendsto_pi + theorem tendsto_pi_nhds Modified src/topology/continuous_on.lean - theorem nhds_within_pi_univ_eq_bot Modified src/topology/sequences.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/pi.lean 2021-11-23 11:49:13 33ea401 feat(linear_algebra/affine_space/barycentric_coords): barycentric coordinates are ratio of determinants (#10320) The main goal of this PR is the new lemma `affine_basis.det_smul_coords_eq_camer_coords` A secondary goal is a minor refactor of barycentric coordinates so that they are associated to a new structure `affine_basis`. As well as making the API for affine spaces more similar to that of modules, this enables an extremely useful dot notation. The work here could easily be split into two PRs and I will happily do so if requested. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/convex/combination.lean +/- theorem convex_hull_affine_basis_eq_nonneg_barycentric Modified src/analysis/normed_space/add_torsor_bases.lean +/- theorem continuous_barycentric_coord Modified src/linear_algebra/affine_space/barycentric_coords.lean + theorem affine_basis.affine_combination_coord_eq_self + theorem affine_basis.basis_of_apply + theorem affine_basis.coe_coord_of_subsingleton_eq_one + theorem affine_basis.coord_apply + theorem affine_basis.coord_apply_combination_of_mem + theorem affine_basis.coord_apply_combination_of_not_mem + theorem affine_basis.coord_apply_eq + theorem affine_basis.coord_apply_neq + theorem affine_basis.coords_apply + theorem affine_basis.det_smul_coords_eq_cramer_coords + theorem affine_basis.is_unit_to_matrix + theorem affine_basis.sum_coord_apply_eq_one + theorem affine_basis.surjective_coord + theorem affine_basis.to_matrix_apply + theorem affine_basis.to_matrix_inv_vec_mul_to_matrix + theorem affine_basis.to_matrix_mul_to_matrix + theorem affine_basis.to_matrix_self + theorem affine_basis.to_matrix_vec_mul_coords + structure affine_basis - theorem affine_combination_barycentric_coord_eq_self - theorem barycentric_coord_apply - theorem barycentric_coord_apply_combination_of_mem - theorem barycentric_coord_apply_combination_of_not_mem - theorem barycentric_coord_apply_eq - theorem barycentric_coord_apply_neq - theorem basis_of_aff_ind_span_eq_top_apply - theorem coe_barycentric_coord_of_subsingleton_eq_one - theorem sum_barycentric_coord_apply_eq_one - theorem surjective_barycentric_coord Modified src/linear_algebra/affine_space/basic.lean Modified src/linear_algebra/matrix/adjugate.lean + theorem matrix.cramer_transpose_apply Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.det_smul_inv_vec_mul_eq_cramer_transpose 2021-11-23 11:49:12 d94772b feat(algebra/big_operators/finprod): add finprod_div_distrib and finsum_sub_distrib (#10044) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_div_distrib + theorem finprod_mem_div_distrib + theorem finprod_mem_inv_distrib + theorem mul_equiv.map_finprod_mem 2021-11-23 09:38:33 ac71292 chore(measure_theory/integral): generalize `integral_smul_const` (#10411) * generalize to `is_R_or_C`; * add an `interval_integral` version. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean - theorem interval_integral.integral_const_mul - theorem interval_integral.integral_div - theorem interval_integral.integral_mul_const Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.integral_const_mul + theorem interval_integral.integral_div + theorem interval_integral.integral_mul_const + theorem interval_integral.integral_smul_const Modified src/measure_theory/integral/set_integral.lean +/- theorem integral_smul_const 2021-11-23 09:38:32 8f681f1 chore(data/complex): add a few simp lemmas (#10395) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.abs_pow + theorem complex.abs_zpow Modified src/data/complex/exponential.lean +/- theorem complex.abs_cos_add_sin_mul_I + theorem complex.abs_exp_of_real_mul_I 2021-11-23 09:38:31 4d5d770 feat(data/complex/exponential): Add lemma add_one_le_exp (#10358) This PR resolves https://github.com/leanprover-community/mathlib/blob/master/src/data/complex/exponential.lean#L1140 ESTIMATED CHANGES Modified src/analysis/special_functions/exp.lean Modified src/data/complex/exponential.lean + theorem real.add_one_le_exp + theorem real.add_one_le_exp_of_nonpos + theorem real.exp_bound' + theorem real.exp_bound_div_one_sub_of_interval + theorem real.exp_bound_div_one_sub_of_interval_approx + theorem real.one_sub_le_exp_minus_of_pos 2021-11-23 07:23:05 6050f9d feat(algebraic_geometry, category_theory): SheafedSpace has colimits (#10401) ESTIMATED CHANGES Modified src/algebraic_geometry/sheafed_space.lean Modified src/category_theory/limits/creates.lean + def category_theory.creates_colimit_of_fully_faithful_of_iso + def category_theory.creates_colimit_of_fully_faithful_of_lift Modified src/topology/sheaves/limits.lean + theorem Top.is_sheaf_of_is_limit + theorem Top.limit_is_sheaf Modified src/topology/sheaves/sheaf_condition/sites.lean + def Top.presheaf.Sheaf_spaces_equiv_sheaf_sites + def Top.presheaf.Sheaf_spaces_equiv_sheaf_sites_functor_forget + def Top.presheaf.Sheaf_spaces_equiv_sheaf_sites_inverse_forget - def Top.presheaf.Sheaf_spaces_equivelence_sheaf_sites 2021-11-23 07:23:04 ca7347c refactor(ring_theory/sub[semi]ring): move pointwise instances to their own file (#10347) This matches how we have separate pointwise files for `submonoid` and `subgroup`. All the new lemmas are direct copies of the subgroup lemmas. ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/char_p/subring.lean Modified src/algebra/group_ring_action.lean - theorem subring.coe_pointwise_smul - theorem subring.pointwise_smul_to_add_subgroup - theorem subring.pointwise_smul_to_subsemiring - theorem subring.smul_mem_pointwise_smul - theorem subsemiring.coe_pointwise_smul - theorem subsemiring.pointwise_smul_to_add_submonoid - theorem subsemiring.smul_mem_pointwise_smul Modified src/algebraic_geometry/structure_sheaf.lean Modified src/deprecated/subring.lean Modified src/ring_theory/perfection.lean Renamed src/ring_theory/subring.lean to src/ring_theory/subring/basic.lean Added src/ring_theory/subring/pointwise.lean + theorem subring.coe_pointwise_smul + theorem subring.le_pointwise_smul_iff₀ + theorem subring.mem_inv_pointwise_smul_iff + theorem subring.mem_inv_pointwise_smul_iff₀ + theorem subring.mem_pointwise_smul_iff_inv_smul_mem + theorem subring.mem_pointwise_smul_iff_inv_smul_mem₀ + theorem subring.pointwise_smul_def + theorem subring.pointwise_smul_le_iff₀ + theorem subring.pointwise_smul_le_pointwise_smul_iff + theorem subring.pointwise_smul_le_pointwise_smul_iff₀ + theorem subring.pointwise_smul_subset_iff + theorem subring.pointwise_smul_to_add_subgroup + theorem subring.pointwise_smul_to_subsemiring + theorem subring.smul_mem_pointwise_smul + theorem subring.smul_mem_pointwise_smul_iff + theorem subring.smul_mem_pointwise_smul_iff₀ + theorem subring.subset_pointwise_smul_iff Renamed src/ring_theory/subsemiring.lean to src/ring_theory/subsemiring/basic.lean Added src/ring_theory/subsemiring/pointwise.lean + theorem subsemiring.coe_pointwise_smul + theorem subsemiring.le_pointwise_smul_iff₀ + theorem subsemiring.mem_inv_pointwise_smul_iff + theorem subsemiring.mem_inv_pointwise_smul_iff₀ + theorem subsemiring.mem_pointwise_smul_iff_inv_smul_mem + theorem subsemiring.mem_pointwise_smul_iff_inv_smul_mem₀ + theorem subsemiring.pointwise_smul_def + theorem subsemiring.pointwise_smul_le_iff₀ + theorem subsemiring.pointwise_smul_le_pointwise_smul_iff + theorem subsemiring.pointwise_smul_le_pointwise_smul_iff₀ + theorem subsemiring.pointwise_smul_subset_iff + theorem subsemiring.pointwise_smul_to_add_submonoid + theorem subsemiring.smul_mem_pointwise_smul + theorem subsemiring.smul_mem_pointwise_smul_iff + theorem subsemiring.smul_mem_pointwise_smul_iff₀ + theorem subsemiring.subset_pointwise_smul_iff Modified src/topology/algebra/ring.lean Modified src/topology/instances/real.lean 2021-11-23 07:23:02 a586681 feat(category_theory/limits/shapes): Multiequalizer is the equalizer (#10267) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/multiequalizer.lean + def category_theory.limits.multicoequalizer.iso_coequalizer + def category_theory.limits.multicoequalizer.sigma_π + theorem category_theory.limits.multicoequalizer.ι_sigma_π + def category_theory.limits.multicofork.of_sigma_cofork + theorem category_theory.limits.multicofork.of_sigma_cofork_ι_app_left + theorem category_theory.limits.multicofork.of_sigma_cofork_ι_app_right + theorem category_theory.limits.multicofork.sigma_condition + def category_theory.limits.multicofork.to_sigma_cofork + theorem category_theory.limits.multicofork.to_sigma_cofork_ι_app_one + theorem category_theory.limits.multicofork.to_sigma_cofork_ι_app_zero +/- def category_theory.limits.multicofork + def category_theory.limits.multicospan_index.fst_pi_map + theorem category_theory.limits.multicospan_index.fst_pi_map_π + def category_theory.limits.multicospan_index.multifork_equiv_pi_fork + def category_theory.limits.multicospan_index.of_pi_fork_functor + def category_theory.limits.multicospan_index.parallel_pair_diagram + def category_theory.limits.multicospan_index.snd_pi_map + theorem category_theory.limits.multicospan_index.snd_pi_map_π + def category_theory.limits.multicospan_index.to_pi_fork_functor + def category_theory.limits.multiequalizer.iso_equalizer + def category_theory.limits.multiequalizer.ι_pi + theorem category_theory.limits.multiequalizer.ι_pi_π + def category_theory.limits.multifork.of_pi_fork + theorem category_theory.limits.multifork.of_pi_fork_π_app_left + theorem category_theory.limits.multifork.of_pi_fork_π_app_right + theorem category_theory.limits.multifork.pi_condition + def category_theory.limits.multifork.to_pi_fork + theorem category_theory.limits.multifork.to_pi_fork_π_app_one + theorem category_theory.limits.multifork.to_pi_fork_π_app_zero +/- def category_theory.limits.multifork + def category_theory.limits.multispan_index.fst_sigma_map + def category_theory.limits.multispan_index.multicofork_equiv_sigma_cofork + def category_theory.limits.multispan_index.of_sigma_cofork_functor + def category_theory.limits.multispan_index.parallel_pair_diagram + def category_theory.limits.multispan_index.snd_sigma_map + def category_theory.limits.multispan_index.to_sigma_cofork_functor + theorem category_theory.limits.multispan_index.ι_fst_sigma_map + theorem category_theory.limits.multispan_index.ι_snd_sigma_map 2021-11-23 05:35:13 6dddef2 feat(topology/metric_space): range of a cauchy seq is bounded (#10423) ESTIMATED CHANGES Modified src/order/filter/cofinite.lean + theorem filter.has_basis_cofinite Modified src/topology/metric_space/basic.lean + theorem metric.bounded_range_of_cauchy_map_cofinite + theorem metric.bounded_range_of_tendsto_cofinite + theorem metric.bounded_range_of_tendsto_cofinite_uniformity Modified src/topology/uniform_space/cauchy.lean +/- theorem filter.has_basis.cauchy_iff 2021-11-23 01:33:14 f684f61 feat(algebra/algebra/spectrum): define spectrum and prove basic prope... (#10390) …rties Define the resolvent set and the spectrum of an element of an algebra as a set of elements in the scalar ring. We prove a few basic facts including that additive cosets of the spectrum commute with the spectrum, that is, r + σ a = σ (r ⬝ 1 + a). Similarly, multiplicative cosets of the spectrum also commute when the element r is a unit of the scalar ring R. Finally, we also show that the units of R in σ (a*b) coincide with those of σ (b*a). ESTIMATED CHANGES Added src/algebra/algebra/spectrum.lean + theorem is_unit.smul_iff + theorem is_unit.smul_sub_iff_sub_inv_smul + def resolvent + theorem spectrum.add_mem_iff + theorem spectrum.left_add_coset_eq + theorem spectrum.mem_iff + theorem spectrum.mem_resolvent_iff + theorem spectrum.mem_resolvent_of_left_right_inverse + theorem spectrum.not_mem_iff + theorem spectrum.preimage_units_mul_eq_swap_mul + theorem spectrum.smul_eq_smul + theorem spectrum.smul_mem_smul_iff + theorem spectrum.unit_mem_mul_iff_mem_swap_mul + def spectrum 2021-11-22 22:48:19 e59e03f feat(measure_theory/integral/interval_integral): add an alternative definition (#10380) Prove that `∫ x in a..b, f x ∂μ = sgn a b • ∫ x in Ι a b, f x ∂μ`, where `sgn a b = if a ≤ b then 1 else -1`. ESTIMATED CHANGES Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.interval_integral_eq_integral_interval_oc 2021-11-22 19:46:14 2f5af98 feat(data/nat/prime): prime divisors (#10318) Adding some basic lemmas about `factors` and `factors.to_finset` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem list.to_finset_repeat_of_ne_zero Modified src/data/nat/gcd.lean + theorem nat.eq_one_of_dvd_coprimes Modified src/data/nat/prime.lean + theorem nat.coprime_factors_disjoint + theorem nat.dvd_of_mem_factors + theorem nat.factors_mul_of_coprime + theorem nat.factors_mul_of_pos + theorem nat.mem_factors_mul_of_pos + theorem nat.prime_pow_prime_divisor Modified src/number_theory/divisors.lean + theorem nat.prime_divisors_eq_to_filter_divisors_prime 2021-11-22 18:50:52 317483a feat(analysis/calculus/parametric_integral): generalize, rename (#10397) * add `integral` to lemma names; * a bit more general `has_fderiv_at_integral_of_dominated_loc_of_lip'`: only require an estimate on `∥F x a - F x₀ a∥` instead of `∥F x a - F y a∥`; * generalize the `deriv` lemmas to `F : 𝕜 → α → E`, `[is_R_or_C 𝕜]`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at.le_of_lip' Modified src/analysis/calculus/parametric_integral.lean + theorem has_deriv_at_integral_of_dominated_loc_of_deriv_le + theorem has_deriv_at_integral_of_dominated_loc_of_lip - theorem has_deriv_at_of_dominated_loc_of_deriv_le - theorem has_deriv_at_of_dominated_loc_of_lip + theorem has_fderiv_at_integral_of_dominated_loc_of_lip' + theorem has_fderiv_at_integral_of_dominated_loc_of_lip + theorem has_fderiv_at_integral_of_dominated_of_fderiv_le - theorem has_fderiv_at_of_dominated_loc_of_lip' - theorem has_fderiv_at_of_dominated_loc_of_lip - theorem has_fderiv_at_of_dominated_of_fderiv_le Modified src/measure_theory/function/l1_space.lean +/- theorem continuous_linear_map.integrable_comp +/- theorem measure_theory.integrable.apply_continuous_linear_map Modified src/measure_theory/integral/set_integral.lean +/- theorem continuous_linear_map.integral_apply 2021-11-22 16:51:24 d2ebcad fix(undergrad.yaml): reinstate deleted entry (#10416) Revert an (I assume accidental?) deletion in #10415. cc @PatrickMassot ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-11-22 13:14:41 c896162 feat(data/finset/basic) eq_of_mem_singleton (#10414) The `finset` equivalent of [set.eq_of_mem_singleton](https://leanprover-community.github.io/mathlib_docs/find/set.eq_of_mem_singleton/src) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.eq_of_mem_singleton 2021-11-22 11:23:11 d8d0c59 chore(algebra/opposites): split group actions and division_ring into their own files (#10383) This splits out `group_theory.group_action.opposite` and `algebra.field.opposite` from `algebra.opposites`. The motivation is to make opposite actions available slightly earlier in the import graph. We probably want to split out `ring` at some point too, but that's likely a more annoying change so I've left it for future work. These lemmas are just moved, and some `_root_` prefixes eliminated by removing the surrounding `namespace`. ESTIMATED CHANGES Modified src/algebra/char_p/invertible.lean Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/euclidean_domain.lean Renamed src/algebra/field.lean to src/algebra/field/basic.lean Added src/algebra/field/opposite.lean Modified src/algebra/module/opposites.lean Modified src/algebra/opposites.lean - theorem mul_opposite.op_smul_eq_mul Modified src/algebra/order/field.lean Modified src/algebra/periodic.lean Modified src/algebra/smul_with_zero.lean Modified src/algebra/star/basic.lean Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Added src/group_theory/group_action/opposite.lean + theorem op_smul_eq_mul Modified src/group_theory/group_action/prod.lean Modified src/group_theory/submonoid/operations.lean Modified src/number_theory/number_field.lean Modified src/number_theory/pythagorean_triples.lean 2021-11-22 11:23:10 2aea996 feat(data): define a `fun_like` class of bundled homs (function + proofs) (#10286) This PR introduces a class `fun_like` for types of bundled homomorphisms, like `set_like` is for bundled subobjects. This should be useful by itself, but an important use I see for it is the per-morphism class refactor, see #9888. Also, `coe_fn_coe_base` now has an appropriately low priority, so it doesn't take precedence over `fun_like.has_coe_to_fun`. ESTIMATED CHANGES Added src/data/fun_like.lean + structure cooler_hom + theorem do_something + theorem fun_like.coe_fn_eq + theorem fun_like.coe_injective + theorem fun_like.ext' + theorem fun_like.ext'_iff + theorem fun_like.ext + theorem fun_like.ext_iff + theorem map_cool + theorem map_op 2021-11-22 09:54:52 7a5fac3 feat(ring_theory/roots_of_unity): primitive root lemmas (#10356) From the flt-regular project. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.eq_order_of + theorem is_primitive_root.map_iff_of_injective + theorem is_primitive_root.map_of_injective + theorem is_primitive_root.of_map_of_injective + theorem is_primitive_root.of_subsingleton + theorem is_primitive_root.unique + theorem is_primitive_root.zero 2021-11-22 08:59:57 9f07579 docs(undergrad): add urls in linear algebra (#10415) This uses the new possibility to put urls in `undergrad.yaml` hoping to help describing what is meant to be formalized. We should probably create wiki pages for some cases that are not so clear even with a url. There is one case where I could find only a French page and some cases where I couldn't find anything. Amazingly "endormorphism exponential" is such a case, but hopefully this example is already clear. Another kind of problematic item is the "example" item in the representation section. Presumably it should be removed and replaced with a couple of explicit examples such as "standard representation of a matrix group" or "permutation representation". ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-11-22 00:26:55 9277d4b chore(data/finset/basic): finset.prod -> finset.product in module docstring (#10413) ESTIMATED CHANGES Modified src/data/finset/basic.lean 2021-11-21 22:33:27 d17db71 chore(*): golf proofs about `filter.Coprod` (#10400) Also add some supporting lemmas. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.coe_pi_finset Modified src/data/pi.lean + theorem function.bijective_pi_map + theorem function.injective_pi_map + theorem function.surjective_pi_map Modified src/data/set/finite.lean Modified src/order/boolean_algebra.lean + theorem compl_surjective Modified src/order/filter/basic.lean + theorem filter.compl_mem_Coprod_iff Modified src/order/filter/cofinite.lean Modified src/topology/subset_properties.lean 2021-11-21 22:33:26 d98b8e0 feat(linear_algebra/bilinear_map): semilinearize bilinear maps (#10373) This PR generalizes most of `linear_algebra/bilinear_map` to semilinear maps. Along the way, we introduce an instance for `module S (E →ₛₗ[σ] F)`, with `σ : R →+* S`. This allows us to define "semibilinear" maps of type `E →ₛₗ[σ] F →ₛₗ[ρ] G`, where `E`, `F` and `G` are modules over `R₁`, `R₂` and `R₃` respectively, and `σ : R₁ →+* R₃` and `ρ : R₂ →+* R₃`. See `mk₂'ₛₗ` to see how to construct such a map. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- theorem linear_map.coe_smul +/- theorem linear_map.comp_smul +/- theorem linear_map.smul_apply +/- theorem linear_map.smul_comp Modified src/linear_algebra/bilinear_map.lean +/- def linear_map.compl₂ +/- theorem linear_map.compl₂_apply +/- def linear_map.compr₂ +/- theorem linear_map.compr₂_apply +/- theorem linear_map.ext₂ +/- def linear_map.flip +/- theorem linear_map.flip_apply +/- theorem linear_map.flip_inj +/- def linear_map.lcomp +/- theorem linear_map.lcomp_apply + def linear_map.lcompₛₗ + theorem linear_map.lcompₛₗ_apply +/- def linear_map.lflip +/- def linear_map.llcomp +/- theorem linear_map.llcomp_apply +/- theorem linear_map.map_add₂ +/- theorem linear_map.map_neg₂ +/- theorem linear_map.map_smul₂ + theorem linear_map.map_smulₛₗ₂ +/- theorem linear_map.map_sub₂ +/- theorem linear_map.map_sum₂ +/- theorem linear_map.map_zero₂ +/- def linear_map.mk₂' + def linear_map.mk₂'ₛₗ + theorem linear_map.mk₂'ₛₗ_apply +/- def linear_map.mk₂ 2021-11-21 21:47:34 8f07d75 feat(measure_theory/covering/differentiation): differentiation of measures (#10101) If `ρ` and `μ` are two Radon measures on a finite-dimensional normed real vector space, then for `μ`-almost every `x`, the ratio `ρ (B (x, r)) / μ (B(x,r))` converges when `r` tends to `0`, towards the Radon-Nikodym derivative of `ρ` with respect to `μ`. This is the main theorem on differentiation of measures. The convergence in fact holds for more general families of sets than balls, called Vitali families (the fact that balls form a Vitali family is a restatement of the Besicovitch covering theorem). The general version of the differentation of measures theorem is proved in this PR, following [Federer, geometric measure theory]. ESTIMATED CHANGES Added src/measure_theory/covering/differentiation.lean + theorem vitali_family.ae_eventually_measure_pos + theorem vitali_family.ae_eventually_measure_zero_of_singular + theorem vitali_family.ae_measurable_lim_ratio + theorem vitali_family.ae_tendsto_div + theorem vitali_family.ae_tendsto_lim_ratio + theorem vitali_family.ae_tendsto_lim_ratio_meas + theorem vitali_family.ae_tendsto_rn_deriv + theorem vitali_family.ae_tendsto_rn_deriv_of_absolutely_continuous + theorem vitali_family.eventually_measure_lt_top + theorem vitali_family.exists_measurable_supersets_lim_ratio + theorem vitali_family.le_mul_with_density + theorem vitali_family.lim_ratio_meas_measurable + theorem vitali_family.measure_le_mul_of_subset_lim_ratio_meas_lt + theorem vitali_family.measure_le_of_frequently_le + theorem vitali_family.measure_lim_ratio_meas_top + theorem vitali_family.measure_lim_ratio_meas_zero + theorem vitali_family.mul_measure_le_of_subset_lt_lim_ratio_meas + theorem vitali_family.null_of_frequently_le_of_frequently_ge + theorem vitali_family.with_density_le_mul + theorem vitali_family.with_density_lim_ratio_meas_eq Modified src/measure_theory/covering/vitali_family.lean 2021-11-21 20:56:17 8ee634b feat(measure_theory): define volume on `complex` (#10403) ESTIMATED CHANGES Added src/measure_theory/measure/complex_lebesgue.lean + def complex.measurable_equiv_pi + def complex.measurable_equiv_real_prod + theorem complex.volume_preserving_equiv_pi + theorem complex.volume_preserving_equiv_real_prod 2021-11-21 18:40:48 2168297 feat(analysis/inner_product_space/projection): orthogonal group is generated by reflections (#10381) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/inner_product_space/basic.lean + theorem mem_orthogonal_singleton_of_inner_left + theorem mem_orthogonal_singleton_of_inner_right Modified src/analysis/inner_product_space/projection.lean + theorem linear_isometry_equiv.reflections_generate + theorem linear_isometry_equiv.reflections_generate_dim + theorem linear_isometry_equiv.reflections_generate_dim_aux + theorem reflection_sub + theorem reflection_trans_reflection +/- theorem submodule.finrank_add_finrank_orthogonal 2021-11-21 16:46:44 e0c0d84 feat(topology/separation): removing a finite set from a dense set preserves density (#10405) Also add the fact that one can find a dense set containing neither top nor bottom in a nontrivial dense linear order. ESTIMATED CHANGES Modified src/measure_theory/function/ae_measurable_order.lean Modified src/topology/algebra/ordered/basic.lean + theorem dense.exists_countable_dense_subset_no_bot_top + theorem exists_countable_dense_no_bot_top Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.exists_countable_dense_no_zero_top Modified src/topology/separation.lean + theorem dense.diff_finite + theorem dense.diff_finset + theorem dense.diff_singleton +/- theorem finite.is_closed 2021-11-21 11:11:05 55b81f8 feat(measure_theory): measure preserving maps and integrals (#10326) If `f` is a measure preserving map, then `∫ y, g y ∂ν = ∫ x, g (f x) ∂μ`. It was two rewrites with the old API (`hf.map_eq`, then a lemma about integral over map measure); it's one `rw` now. Also add versions for special cases when `f` is a measurable embedding (in this case we don't need to assume measurability of `g`). ESTIMATED CHANGES Modified src/data/equiv/fin.lean + theorem fin.preimage_apply_01_prod' + theorem fin.preimage_apply_01_prod Modified src/dynamics/ergodic/measure_preserving.lean + theorem measure_theory.measure_preserving.restrict_image_emb + theorem measure_theory.measure_preserving.restrict_preimage + theorem measure_theory.measure_preserving.restrict_preimage_emb Modified src/measure_theory/constructions/pi.lean - theorem measure_theory.integral_fin_two_arrow' - theorem measure_theory.integral_fin_two_arrow - theorem measure_theory.integral_fin_two_arrow_pi' - theorem measure_theory.integral_fin_two_arrow_pi - theorem measure_theory.integral_fun_unique' - theorem measure_theory.integral_fun_unique - theorem measure_theory.integral_fun_unique_pi' - theorem measure_theory.integral_fun_unique_pi - theorem measure_theory.measure.map_fun_unique - theorem measure_theory.measure.pi_unique_eq_map - theorem measure_theory.measure.prod_eq_map_fin_two_arrow - theorem measure_theory.measure.prod_eq_map_fin_two_arrow_same - theorem measure_theory.measure.{u} + theorem measure_theory.measure_preserving_fin_two_arrow + theorem measure_theory.measure_preserving_fin_two_arrow_vec + theorem measure_theory.measure_preserving_fun_unique + theorem measure_theory.measure_preserving_pi_empty + theorem measure_theory.measure_preserving_pi_fin_two - theorem measure_theory.set_integral_fin_two_arrow' - theorem measure_theory.set_integral_fin_two_arrow - theorem measure_theory.set_integral_fin_two_arrow_pi' - theorem measure_theory.set_integral_fin_two_arrow_pi - theorem measure_theory.set_integral_fun_unique' - theorem measure_theory.set_integral_fun_unique - theorem measure_theory.set_integral_fun_unique_pi' - theorem measure_theory.set_integral_fun_unique_pi + theorem measure_theory.volume_preserving_fin_two_arrow + theorem measure_theory.volume_preserving_fun_unique + theorem measure_theory.volume_preserving_pi_empty + theorem measure_theory.volume_preserving_pi_fin_two Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.measure_preserving.integrable_comp + theorem measure_theory.measure_preserving.integrable_comp_emb Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.measure_preserving.integral_comp Modified src/measure_theory/integral/integrable_on.lean + theorem measure_theory.measure_preserving.integrable_on_comp_preimage + theorem measure_theory.measure_preserving.integrable_on_image Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.measure_preserving.lintegral_comp + theorem measure_theory.measure_preserving.lintegral_comp_emb + theorem measure_theory.measure_preserving.set_lintegral_comp_emb + theorem measure_theory.measure_preserving.set_lintegral_comp_preimage + theorem measure_theory.measure_preserving.set_lintegral_comp_preimage_emb Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.measure_preserving.set_integral_image_emb + theorem measure_theory.measure_preserving.set_integral_preimage_emb Modified src/measure_theory/measure/measure_space.lean 2021-11-20 23:37:29 2a28652 feat(data/finset/basic): add filter_erase (#10384) Like `filter_insert`, but for `erase` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.erase_idem + theorem finset.erase_right_comm + theorem finset.filter_erase 2021-11-20 21:22:54 32c0507 feat(data/nat/interval): add Ico_succ_left_eq_erase (#10386) Adds `Ico_succ_left_eq_erase`. Also adds a few order lemmas needed for this. See [this discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Ico_succ_left_eq_erase_Ico/near/259180476) ESTIMATED CHANGES Modified src/data/nat/interval.lean + theorem nat.Ico_succ_left_eq_erase_Ico Modified src/order/basic.lean + theorem ne_of_not_le 2021-11-20 13:22:08 b3538bf feat(topology/algebra/infinite_sum): add `has_sum.smul_const` etc (#10393) Rename old `*.smul` to `*.const_smul`. ESTIMATED CHANGES Modified src/measure_theory/measure/vector_measure.lean Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.const_smul - theorem has_sum.smul + theorem has_sum.smul_const + theorem summable.const_smul - theorem summable.smul + theorem summable.smul_const + theorem tsum_const_smul - theorem tsum_smul + theorem tsum_smul_const 2021-11-20 11:30:32 618447f feat(analysis/special_functions/complex/arg): review, golf, lemmas (#10365) * add `|z| * exp (arg z * I) = z`; * reorder theorems to help golfing; * prove formulas for `arg z` in terms of `arccos (re z / abs z)` in cases `0 < im z` and `im z < 0`; * use them to golf continuity of `arg`. ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem mul_nonneg_iff_left_nonneg_of_pos +/- theorem mul_nonneg_iff_right_nonneg_of_pos Modified src/analysis/special_functions/complex/arg.lean + theorem complex.abs_mul_cos_add_sin_mul_I + theorem complex.abs_mul_exp_arg_mul_I +/- theorem complex.arg_cos_add_sin_mul_I + theorem complex.arg_eq_neg_pi_div_two_iff + theorem complex.arg_eq_nhds_of_im_neg + theorem complex.arg_eq_nhds_of_im_pos + theorem complex.arg_eq_pi_div_two_iff + theorem complex.arg_mem_Ioc + theorem complex.arg_mul_cos_add_sin_mul_I + theorem complex.arg_neg_iff + theorem complex.arg_nonneg_iff + theorem complex.arg_of_im_neg + theorem complex.arg_of_im_nonneg_of_ne_zero + theorem complex.arg_of_im_pos - theorem complex.arg_of_re_zero_of_im_neg - theorem complex.arg_of_re_zero_of_im_pos +/- theorem complex.arg_zero - theorem complex.continuous_at_arg_of_re_neg_of_im_neg - theorem complex.continuous_at_arg_of_re_neg_of_im_pos - theorem complex.continuous_at_arg_of_re_pos - theorem complex.continuous_at_arg_of_re_zero + theorem complex.ext_abs_arg_iff + theorem complex.range_arg +/- theorem complex.tan_arg Modified src/analysis/special_functions/complex/circle.lean Modified src/analysis/special_functions/complex/log.lean Modified src/data/complex/basic.lean + theorem complex.norm_sq_add_mul_I + theorem complex.sq_abs + theorem complex.sq_abs_sub_sq_im + theorem complex.sq_abs_sub_sq_re Modified src/geometry/euclidean/triangle.lean 2021-11-20 02:42:14 bd6c6d5 chore(scripts): update nolints.txt (#10391) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-11-19 15:45:43 db926f0 chore(category_theory/limits/shapes/pullbacks): fix diagrams in docs (#10379) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean 2021-11-19 14:34:11 7638fe2 doc(topology/separation): two typos (#10382) ESTIMATED CHANGES Modified src/topology/separation.lean 2021-11-19 12:03:57 e8858fd refactor(algebra/opposites): use mul_opposite for multiplicative opposite (#10302) Split out `mul_opposite` from `opposite`, to leave room for an `add_opposite` in future. Multiplicative opposites are now spelt `Aᵐᵒᵖ` instead of `Aᵒᵖ`. `Aᵒᵖ` now refers to the categorical opposite. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem mul_opposite.algebra_map_apply - theorem opposite.algebra_map_apply Modified src/algebra/big_operators/basic.lean +/- theorem finset.unop_sum +/- theorem ring_hom.unop_map_list_prod Modified src/algebra/free_algebra.lean +/- def free_algebra.star_hom Modified src/algebra/geom_sum.lean Modified src/algebra/group/prod.lean +/- def embed_product Modified src/algebra/group_power/lemmas.lean + theorem mul_opposite.op_pow + theorem mul_opposite.op_zpow + theorem mul_opposite.unop_pow + theorem mul_opposite.unop_zpow - theorem opposite.op_pow - theorem opposite.op_zpow - theorem opposite.unop_pow - theorem opposite.unop_zpow Modified src/algebra/hierarchy_design.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/opposites.lean + theorem mul_opposite.coe_op_linear_equiv + theorem mul_opposite.coe_op_linear_equiv_symm + theorem mul_opposite.coe_op_linear_equiv_symm_to_linear_map + theorem mul_opposite.coe_op_linear_equiv_to_linear_map + def mul_opposite.op_linear_equiv + theorem mul_opposite.op_linear_equiv_symm_to_add_equiv + theorem mul_opposite.op_linear_equiv_to_add_equiv - theorem opposite.coe_op_linear_equiv - theorem opposite.coe_op_linear_equiv_symm - theorem opposite.coe_op_linear_equiv_symm_to_linear_map - theorem opposite.coe_op_linear_equiv_to_linear_map - def opposite.op_linear_equiv - theorem opposite.op_linear_equiv_symm_to_add_equiv - theorem opposite.op_linear_equiv_to_add_equiv Modified src/algebra/monoid_algebra/basic.lean +/- theorem add_monoid_algebra.op_ring_equiv_symm_single +/- theorem monoid_algebra.op_ring_equiv_symm_single Modified src/algebra/opposites.lean +/- def mul_equiv.inv' + theorem mul_opposite.commute.op + theorem mul_opposite.commute.unop + theorem mul_opposite.commute_op + theorem mul_opposite.commute_unop + def mul_opposite.op + theorem mul_opposite.op_add + def mul_opposite.op_add_equiv + theorem mul_opposite.op_add_equiv_to_equiv + theorem mul_opposite.op_bijective + theorem mul_opposite.op_comp_unop + theorem mul_opposite.op_eq_one_iff + theorem mul_opposite.op_eq_zero_iff + def mul_opposite.op_equiv + theorem mul_opposite.op_inj + theorem mul_opposite.op_injective + theorem mul_opposite.op_inv + theorem mul_opposite.op_mul + theorem mul_opposite.op_ne_zero_iff + theorem mul_opposite.op_neg + theorem mul_opposite.op_one + theorem mul_opposite.op_smul + theorem mul_opposite.op_smul_eq_mul + theorem mul_opposite.op_sub + theorem mul_opposite.op_surjective + theorem mul_opposite.op_unop + theorem mul_opposite.op_zero + theorem mul_opposite.semiconj_by.op + theorem mul_opposite.semiconj_by.unop + theorem mul_opposite.semiconj_by_op + theorem mul_opposite.semiconj_by_unop + def mul_opposite.unop + theorem mul_opposite.unop_add + theorem mul_opposite.unop_bijective + theorem mul_opposite.unop_comp_op + theorem mul_opposite.unop_eq_one_iff + theorem mul_opposite.unop_eq_zero_iff + theorem mul_opposite.unop_inj + theorem mul_opposite.unop_injective + theorem mul_opposite.unop_inv + theorem mul_opposite.unop_mul + theorem mul_opposite.unop_ne_zero_iff + theorem mul_opposite.unop_neg + theorem mul_opposite.unop_one + theorem mul_opposite.unop_op + theorem mul_opposite.unop_smul + theorem mul_opposite.unop_sub + theorem mul_opposite.unop_surjective + theorem mul_opposite.unop_zero + def mul_opposite - theorem opposite.coe_op_add_equiv - theorem opposite.coe_op_add_equiv_symm - theorem opposite.commute.op - theorem opposite.commute.unop - theorem opposite.commute_op - theorem opposite.commute_unop - theorem opposite.op_add - def opposite.op_add_equiv - theorem opposite.op_add_equiv_to_equiv - theorem opposite.op_eq_one_iff - theorem opposite.op_eq_zero_iff - theorem opposite.op_inv - theorem opposite.op_mul - theorem opposite.op_ne_zero_iff - theorem opposite.op_neg - theorem opposite.op_one - theorem opposite.op_smul - theorem opposite.op_smul_eq_mul - theorem opposite.op_sub - theorem opposite.op_zero - theorem opposite.semiconj_by.op - theorem opposite.semiconj_by.unop - theorem opposite.semiconj_by_op - theorem opposite.semiconj_by_unop - theorem opposite.unop_add - theorem opposite.unop_eq_one_iff - theorem opposite.unop_eq_zero_iff - theorem opposite.unop_inv - theorem opposite.unop_mul - theorem opposite.unop_ne_zero_iff - theorem opposite.unop_neg - theorem opposite.unop_one - theorem opposite.unop_smul - theorem opposite.unop_sub - theorem opposite.unop_zero +/- theorem units.coe_op_equiv_symm +/- theorem units.coe_unop_op_equiv +/- def units.op_equiv Modified src/algebra/periodic.lean Modified src/algebra/quandle.lean Modified src/algebra/quaternion.lean +/- theorem quaternion.coe_conj_ae +/- def quaternion.conj_ae +/- def quaternion_algebra.conj_ae Modified src/algebra/regular/smul.lean +/- theorem is_smul_regular.is_right_regular Modified src/algebra/smul_with_zero.lean Modified src/algebra/star/basic.lean + theorem mul_opposite.op_star + theorem mul_opposite.unop_star - theorem opposite.op_star - theorem opposite.unop_star +/- def star_mul_equiv +/- def star_ring_equiv Modified src/algebra/star/module.lean Modified src/analysis/normed/group/SemiNormedGroup/completion.lean Modified src/analysis/normed_space/units.lean Modified src/category_theory/monoidal/opposite.lean +/- def category_theory.monoidal_opposite.mop +/- theorem category_theory.monoidal_opposite.mop_unmop +/- theorem category_theory.monoidal_opposite.op_injective +/- def category_theory.monoidal_opposite.unmop +/- theorem category_theory.monoidal_opposite.unop_inj_iff +/- theorem category_theory.monoidal_opposite.unop_injective +/- theorem category_theory.mop_id_unmop +/- theorem category_theory.mop_tensor_obj +/- theorem category_theory.mop_tensor_unit +/- theorem category_theory.mop_unmop +/- theorem category_theory.unmop_comp +/- theorem category_theory.unmop_id +/- theorem category_theory.unmop_inj +/- def quiver.hom.mop +/- def quiver.hom.unmop Modified src/computability/turing_machine.lean Modified src/control/fold.lean +/- def monoid.foldl Modified src/data/complex/is_R_or_C.lean +/- def is_R_or_C.conj_to_ring_equiv Modified src/data/equiv/mul_add.lean Modified src/data/equiv/ring.lean +/- theorem ring_equiv.to_add_equiv_eq_coe +/- theorem ring_equiv.to_mul_equiv_eq_coe +/- def ring_equiv.to_opposite +/- theorem ring_equiv.to_opposite_symm_apply +/- theorem ring_equiv.unop_map_list_prod Modified src/data/list/big_operators.lean +/- theorem monoid_hom.unop_map_list_prod + theorem mul_opposite.op_list_prod + theorem mul_opposite.unop_list_prod - theorem opposite.op_list_prod - theorem opposite.unop_list_prod Modified src/data/matrix/basic.lean +/- def matrix.transpose_ring_equiv Modified src/data/opposite.lean Modified src/data/polynomial/basic.lean +/- def polynomial.op_ring_equiv Modified src/data/prod.lean + theorem prod.fst_comp_mk + theorem prod.snd_comp_mk Modified src/group_theory/free_product.lean +/- theorem free_product.inv_def Modified src/linear_algebra/clifford_algebra/conjugation.lean Modified src/linear_algebra/sesquilinear_form.lean +/- structure sesq_form Modified src/logic/unique.lean +/- def unique.mk' Modified src/measure_theory/group/arithmetic.lean +/- theorem measurable_op +/- theorem measurable_unop Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/ring_invo.lean +/- def ring_invo.mk' +/- structure ring_invo Modified src/topology/algebra/monoid.lean +/- theorem continuous_op +/- theorem continuous_unop 2021-11-19 10:10:47 d6814c5 feat(*): Reduce imports to only those necessary in the entire library (#10349) We reduce imports of many files in the library to only those actually needed by the content of the file, this is done by inspecting the declarations and attributes used by declarations in a file, and then computing a minimal set of imports that includes all of the necessary content. (A tool to do this was written by @jcommelin and I for this purpose). The point of doing this is to reduce unnecessary recompilation when files that aren't needed for some file higher up the import graph are changed and everything in between gets recompiled. Another side benefit might be slightly faster simp / library_searches / tc lookups in some files as there may be less random declarations in the environment that aren't too relevant to the file. The exception is that we do not remove any tactic file imports (in this run at least) as that requires more care to get right. We also skip any `default.lean` files as the point of these is to provide a convenient way of importing a large chunk of the library (though arguably no mathlib file should import a default file that has no non-import content). Some OLD statistics (not 100% accurate as several things changed since then): The average number of imports of each file in the library reduces by around 2, (this equals the average number of dependencies of each file) raw numbers are `806748 / 2033` (total number of transitive links/total number files before) to `802710 / 2033` (after) The length of the longest chain of imports in mathlib decreases from 139 to 130. The imports (transitively) removed from the most from other files are as follows (file, decrease in number of files importing): ``` data.polynomial.degree.trailing_degree 13 linear_algebra.quotient 13 ring_theory.principal_ideal_domain 13 data.int.gcd 14 data.polynomial.div 14 data.list.rotate 15 data.nat.modeq 15 data.fin.interval 17 data.int.interval 17 data.pnat.interval 17 ``` The original script generated by an import-reducing tool is at https://github.com/alexjbest/dag-tools though I did clean up the output and some weirdness after running this script In touched files the imports are put into alphabetical order, we tried not to touch too many files that don't have their imports changed, but some were in the many merges and iterations on this. There are a couple of changes to mathlib not to an import line (compared to master) that I couldn't resist doing that became apparent when the tool recommended deletions of imports containing named simp lemmas in the file, that weren't firing and so the tool was right to remove the import. Another sort of issue is discussed in https://github.com/leanprover-community/mathlib/blob/master/src/algebraic_geometry/presheafed_space/has_colimits.lean#L253, this is discussed at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Reordering.20ext.20lemmas/near/261581547 and there seems to be currently no good way to avoid this so we just fix the proof. One can verify this with the command ` git diff origin/master -I import` At a later point we hope to modify this tooling to suggest splits in long files by their prerequisites, but getting the library into a more minimal state w.r.t file imports seems to be important for such a tool to work well. ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified src/algebra/algebra/basic.lean Modified src/algebra/algebra/bilinear.lean Modified src/algebra/big_operators/finsupp.lean Modified src/algebra/category/CommRing/adjunctions.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Module/colimits.lean Modified src/algebra/category/Module/epi_mono.lean Modified src/algebra/category/Module/filtered_colimits.lean Modified src/algebra/category/Module/projective.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/category/Mon/limits.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/algebra/char_p/basic.lean Modified src/algebra/char_p/quotient.lean Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/direct_sum/algebra.lean Modified src/algebra/direct_sum/internal.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/divisibility.lean Modified src/algebra/field.lean Modified src/algebra/free_algebra.lean Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/graded_monoid.lean Modified src/algebra/group_action_hom.lean Modified src/algebra/group_with_zero/power.lean Modified src/algebra/homology/augment.lean Modified src/algebra/homology/complex_shape.lean Modified src/algebra/lie/base_change.lean Modified src/algebra/lie/basic.lean Modified src/algebra/lie/cartan_matrix.lean Modified src/algebra/lie/classical.lean Modified src/algebra/lie/direct_sum.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/module/ulift.lean Modified src/algebra/monoid_algebra/grading.lean Modified src/algebra/order/algebra.lean Modified src/algebra/order/archimedean.lean Modified src/algebra/order/smul.lean Modified src/algebra/order/with_zero.lean Modified src/algebra/pempty_instances.lean Modified src/algebra/periodic.lean Modified src/algebra/pointwise.lean Modified src/algebra/polynomial/big_operators.lean Modified src/algebra/star/chsh.lean Modified src/algebraic_geometry/EllipticCurve.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_geometry/ringed_space.lean Modified src/algebraic_topology/Moore_complex.lean Modified src/algebraic_topology/simplex_category.lean Modified src/algebraic_topology/simplicial_object.lean Modified src/algebraic_topology/simplicial_set.lean Modified src/algebraic_topology/topological_simplex.lean Modified src/analysis/ODE/picard_lindelof.lean Modified src/analysis/asymptotics/superpolynomial_decay.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/box_integral/partition/filter.lean Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/complex/roots_of_unity.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/normed_space/affine_isometry.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/conformal_linear_map.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/indicator_function.lean Modified src/analysis/normed_space/is_R_or_C.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/star.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/trigonometric/arctan.lean Modified src/analysis/special_functions/trigonometric/chebyshev.lean Modified src/analysis/special_functions/trigonometric/deriv.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/abelian/projective.lean Modified src/category_theory/adjunction/comma.lean Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/adjunction/mates.lean Modified src/category_theory/adjunction/over.lean Modified src/category_theory/adjunction/reflective.lean Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/Quiv.lean Modified src/category_theory/category/pairwise.lean Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/comma.lean Modified src/category_theory/concrete_category/bundled.lean Modified src/category_theory/conj.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/functor.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/hom_functor.lean Modified src/category_theory/isomorphism_classes.lean Modified src/category_theory/lifting_properties.lean Modified src/category_theory/limits/comma.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/category_theory/limits/constructions/over/connected.lean Modified src/category_theory/limits/constructions/over/default.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/kan_extension.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/preserves/filtered.lean Modified src/category_theory/limits/preserves/functor_category.lean Modified src/category_theory/limits/preserves/shapes/terminal.lean Modified src/category_theory/limits/presheaf.lean Modified src/category_theory/limits/shapes/disjoint_coproduct.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/normal_mono.lean Modified src/category_theory/limits/shapes/reflexive.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/coequalizer.lean Modified src/category_theory/monad/kleisli.lean Modified src/category_theory/monad/monadicity.lean Modified src/category_theory/monad/products.lean Modified src/category_theory/monoidal/free/basic.lean Modified src/category_theory/monoidal/free/coherence.lean Modified src/category_theory/monoidal/types.lean Modified src/category_theory/opposites.lean Modified src/category_theory/pi/basic.lean Modified src/category_theory/preadditive/Mat.lean Modified src/category_theory/sigma/basic.lean Modified src/category_theory/sites/sheaf.lean Modified src/category_theory/sites/sieves.lean Modified src/category_theory/subterminal.lean Modified src/category_theory/triangulated/basic.lean Modified src/category_theory/triangulated/pretriangulated.lean Modified src/category_theory/triangulated/rotate.lean Modified src/category_theory/whiskering.lean Modified src/combinatorics/colex.lean Modified src/combinatorics/hales_jewett.lean Modified src/combinatorics/hall/finite.lean Modified src/computability/language.lean Modified src/computability/regular_expressions.lean Modified src/control/bifunctor.lean Modified src/control/equiv_functor.lean Modified src/control/fix.lean Modified src/control/monad/cont.lean Modified src/control/monad/writer.lean Modified src/control/traversable/derive.lean Modified src/control/traversable/instances.lean Modified src/data/buffer/parser/numeral.lean Modified src/data/complex/module.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/embedding.lean Modified src/data/equiv/mul_add.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/fin/basic.lean Modified src/data/finset/basic.lean Modified src/data/fp/basic.lean Modified src/data/int/absolute_value.lean Modified src/data/int/interval.lean Modified src/data/list/basic.lean Modified src/data/list/cycle.lean Modified src/data/list/duplicate.lean Modified src/data/list/prod_monoid.lean Modified src/data/list/sigma.lean Modified src/data/list/sort.lean Modified src/data/matrix/basic.lean Modified src/data/matrix/basis.lean Modified src/data/matrix/hadamard.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/nat/choose/central.lean Modified src/data/nat/choose/vandermonde.lean Modified src/data/nat/enat.lean Modified src/data/nat/fib.lean Modified src/data/nat/gcd.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/prime.lean Modified src/data/option/basic.lean Modified src/data/pequiv.lean Modified src/data/pfunctor/multivariate/M.lean Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/factors.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/lifts.lean Modified src/data/polynomial/reverse.lean Modified src/data/qpf/univariate/basic.lean Modified src/data/rat/denumerable.lean Modified src/data/real/basic.lean Modified src/data/real/ennreal.lean Modified src/data/real/irrational.lean Modified src/data/real/pi/leibniz.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/set/basic.lean Modified src/data/set/pairwise.lean Modified src/data/setoid/basic.lean Modified src/data/subtype.lean Modified src/data/sym/basic.lean Modified src/data/sym/card.lean Modified src/dynamics/periodic_pts.lean Modified src/field_theory/chevalley_warning.lean Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/fixed.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/primitive_element.lean Modified src/field_theory/separable.lean Modified src/field_theory/separable_degree.lean Modified src/field_theory/splitting_field.lean Modified src/geometry/manifold/bump_function.lean Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/geometry/manifold/local_invariant_properties.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/whitney_embedding.lean Modified src/group_theory/complement.lean Modified src/group_theory/congruence.lean Modified src/group_theory/eckmann_hilton.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/p_group.lean Modified src/group_theory/perm/basic.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/perm/support.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/schur_zassenhaus.lean Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/coevaluation.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/matrix/adjugate.lean Modified src/linear_algebra/matrix/block.lean Modified src/linear_algebra/matrix/charpoly/basic.lean Modified src/linear_algebra/matrix/charpoly/coeff.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/matrix/polynomial.lean Modified src/linear_algebra/matrix/transvection.lean Modified src/linear_algebra/quadratic_form/basic.lean Modified src/linear_algebra/quotient.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/linear_algebra/special_linear_group.lean Modified src/linear_algebra/tensor_product_basis.lean Modified src/linear_algebra/unitary_group.lean Modified src/logic/is_empty.lean Modified src/logic/nontrivial.lean Modified src/logic/relation.lean Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/ae_measurable_sequence.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure/complex.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/measure_theory/tactic.lean Modified src/meta/expr.lean Modified src/meta/expr_lens.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/class_number/admissible_abs.lean Modified src/number_theory/class_number/admissible_absolute_value.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/lucas_primality.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/ring_homs.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/category/Preorder.lean Modified src/order/closure.lean Modified src/order/compactly_generated.lean Modified src/order/countable_dense_linear_order.lean Modified src/order/filter/basic.lean Modified src/order/filter/ultrafilter.lean Modified src/order/liminf_limsup.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/pilex.lean Modified src/order/preorder_hom.lean Modified src/order/rel_classes.lean Modified src/order/succ_pred.lean Modified src/probability_theory/notation.lean Modified src/ring_theory/adjoin/fg.lean Modified src/ring_theory/adjoin/polynomial.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/fintype.lean Modified src/ring_theory/flat.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/nakayama.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/norm.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/polynomial/homogeneous.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/surreal/basic.lean Modified src/set_theory/surreal/dyadic.lean Modified src/system/random/basic.lean Modified src/tactic/choose.lean Modified src/tactic/clear.lean Modified src/tactic/converter/binders.lean Modified src/tactic/core.lean Modified src/tactic/dependencies.lean Modified src/tactic/elementwise.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/explode.lean Modified src/tactic/ext.lean Modified src/tactic/find_unused.lean Modified src/tactic/interval_cases.lean Modified src/tactic/linarith/datatypes.lean Modified src/tactic/lint/frontend.lean Modified src/tactic/lint/misc.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/localized.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/nth_rewrite/congr.lean Modified src/tactic/restate_axiom.lean Modified src/tactic/rewrite_all/basic.lean Modified src/tactic/rewrite_search/search.lean Modified src/tactic/ring.lean Modified src/tactic/scc.lean Modified src/tactic/simps.lean Modified src/tactic/slim_check.lean Modified src/tactic/subtype_instance.lean Modified src/tactic/suggest.lean Modified src/tactic/zify.lean Modified src/testing/slim_check/functions.lean Modified src/topology/G_delta.lean Modified src/topology/algebra/affine.lean Modified src/topology/algebra/group_with_zero.lean Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/nonarchimedean/bases.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/category/Top/basic.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/Top/opens.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/continuous_function/locally_constant.lean Modified src/topology/homotopy/fundamental_groupoid.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/irrational.lean Modified src/topology/list.lean Modified src/topology/locally_constant/algebra.lean Modified src/topology/metric_space/algebra.lean Modified src/topology/semicontinuous.lean Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/sheaf.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheaf_of_functions.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/separation.lean Modified test/equiv_rw.lean Modified test/monotonicity/test_cases.lean Modified test/simps.lean Modified test/slim_check.lean 2021-11-19 08:56:27 5000fb0 feat(data/polynomial/eval): is_root_(prod/map) (#10360) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.is_root.eq_zero + theorem polynomial.is_root.map + theorem polynomial.is_root.of_map + theorem polynomial.is_root_map_iff + theorem polynomial.is_root_prod 2021-11-19 08:01:42 784fe06 feat(analysis/calculus/deriv): generalize lemmas about deriv and `smul` (#10378) Allow scalar multiplication by numbers from a different field. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem deriv_const_smul +/- theorem has_deriv_at.const_smul + theorem has_deriv_at_filter.const_smul + theorem has_deriv_at_mul_const + theorem has_strict_deriv_at.const_smul Modified src/analysis/calculus/fderiv_symmetric.lean 2021-11-18 21:48:21 f3f4442 feat(logic/basic): define exists_unique_eq as a simp lemma (#10364) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem exists_unique_eq' + theorem exists_unique_eq 2021-11-18 20:52:43 d5d2c4f feat(field_theory/splitting_field): add a more general algebra instance as a def (#10220) Unfortunately this def results in the following non-defeq diamonds in `splitting_field_aux.algebra` and `splitting_field.algebra`: ```lean example (n : ℕ) {K : Type u} [field K] {f : polynomial K} (hfn : f.nat_degree = n) : (add_comm_monoid.nat_module : module ℕ (splitting_field_aux n f hfn)) = @algebra.to_module _ _ _ _ (splitting_field_aux.algebra n _ hfn) := rfl --fail example : (add_comm_group.int_module _ : module ℤ (splitting_field_aux n f hfn)) = @algebra.to_module _ _ _ _ (splitting_field_aux.algebra f) := rfl --fail ``` For this reason, we do not make `splitting_field.algebra` an instance by default. The `splitting_field_aux.algebra` instance is less harmful as it is an implementation detail. However, the new def is still perfectly good for recovering the old less-general instance, and avoids the need for `restrict_scalars.algebra`. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean Modified src/ring_theory/adjoin_root.lean +/- theorem adjoin_root.algebra_map_eq' 2021-11-18 17:07:15 9654071 feat(topology/algebra/module): add `is_scalar_tower` and `smul_comm_class` instances for `continuous_linear_map` (#10375) Also generalize some instances about `smul`. ESTIMATED CHANGES Modified src/topology/algebra/module.lean 2021-11-18 15:50:36 0d09e99 feat(measure_theory/integral/{set_to_l1,bochner}): generalize results about integrals to `set_to_fun` (#10369) The Bochner integral is a particular case of the `set_to_fun` construction. We generalize some lemmas which were proved for integrals to `set_to_fun`, notably the Lebesgue dominated convergence theorem. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/set_to_l1.lean + theorem measure_theory.L1.norm_set_to_L1_le' + theorem measure_theory.L1.norm_set_to_L1_le + theorem measure_theory.L1.norm_set_to_L1_le_mul_norm' + theorem measure_theory.L1.norm_set_to_L1_le_mul_norm + theorem measure_theory.L1.norm_set_to_L1_le_norm_set_to_L1s_clm +/- theorem measure_theory.L1.set_to_L1_eq_set_to_L1s_clm + theorem measure_theory.L1.set_to_L1_lipschitz + theorem measure_theory.L1.simple_func.norm_set_to_L1s_clm_le' + theorem measure_theory.L1.simple_func.norm_set_to_L1s_clm_le + theorem measure_theory.L1.tendsto_set_to_L1 + theorem measure_theory.continuous_at_set_to_fun_of_dominated + theorem measure_theory.continuous_set_to_fun + theorem measure_theory.continuous_set_to_fun_of_dominated + theorem measure_theory.norm_set_to_fun_le' + theorem measure_theory.norm_set_to_fun_le + theorem measure_theory.norm_set_to_fun_le_mul_norm' + theorem measure_theory.norm_set_to_fun_le_mul_norm + theorem measure_theory.set_to_fun_to_L1 + theorem measure_theory.tendsto_set_to_fun_filter_of_dominated_convergence + theorem measure_theory.tendsto_set_to_fun_of_dominated_convergence 2021-11-18 14:41:58 0ededd5 chore(analysis/calculus): use `is_R_or_C` in several lemmas (#10376) ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean +/- theorem convex.exists_nhds_within_lipschitz_on_with_of_has_fderiv_within_at +/- theorem convex.exists_nhds_within_lipschitz_on_with_of_has_fderiv_within_at_of_nnnorm_lt +/- theorem convex.is_const_of_fderiv_within_eq_zero +/- theorem convex.lipschitz_on_with_of_nnnorm_deriv_le +/- theorem convex.lipschitz_on_with_of_nnnorm_deriv_within_le +/- theorem convex.lipschitz_on_with_of_nnnorm_fderiv_le +/- theorem convex.lipschitz_on_with_of_nnnorm_fderiv_within_le +/- theorem convex.lipschitz_on_with_of_nnnorm_has_deriv_within_le +/- theorem convex.lipschitz_on_with_of_nnnorm_has_fderiv_within_le +/- theorem convex.norm_image_sub_le_of_norm_deriv_le +/- theorem convex.norm_image_sub_le_of_norm_deriv_within_le +/- theorem convex.norm_image_sub_le_of_norm_fderiv_le' +/- theorem convex.norm_image_sub_le_of_norm_fderiv_le +/- theorem convex.norm_image_sub_le_of_norm_fderiv_within_le' +/- theorem convex.norm_image_sub_le_of_norm_fderiv_within_le +/- theorem convex.norm_image_sub_le_of_norm_has_deriv_within_le +/- theorem convex.norm_image_sub_le_of_norm_has_fderiv_within_le' +/- theorem convex.norm_image_sub_le_of_norm_has_fderiv_within_le +/- theorem is_const_of_fderiv_eq_zero 2021-11-18 12:48:11 198ed6b doc(order/monotone): fix 2 typos (#10377) ESTIMATED CHANGES Modified src/order/monotone.lean 2021-11-18 02:36:10 2f3b185 chore(scripts): update nolints.txt (#10374) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-11-17 19:11:23 f8cbb3e chore(.docker): don't install unnecessary toolchains (#10363) ESTIMATED CHANGES Modified .docker/debian/lean/Dockerfile Modified .docker/gitpod/mathlib/Dockerfile 2021-11-17 19:11:22 5d1363e feat(data/nat/parity): add lemmas (#10352) From FLT-regular. ESTIMATED CHANGES Modified src/data/nat/parity.lean + theorem nat.even_mul_self_pred + theorem nat.even_sub_one_of_prime_ne_two 2021-11-17 18:15:31 276ab17 feat(linear_algebra/bilinear_form): add lemmas (#10353) From FLT-regular. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.nondegenerate.to_matrix' + theorem bilin_form.nondegenerate.to_matrix + theorem bilin_form.nondegenerate_iff_det_ne_zero - theorem bilin_form.nondegenerate_of_det_ne_zero' + theorem bilin_form.nondegenerate_to_bilin'_iff_det_ne_zero + theorem bilin_form.nondegenerate_to_bilin'_of_det_ne_zero' + theorem bilin_form.nondegenerate_to_matrix'_iff + theorem bilin_form.nondegenerate_to_matrix_iff + theorem matrix.nondegenerate_to_bilin'_iff + theorem matrix.nondegenerate_to_bilin'_iff_nondegenerate_to_bilin + theorem matrix.nondegenerate_to_bilin_iff 2021-11-17 15:37:37 6f793bb chore(measure_theory/group/basic): drop measurability assumption (#10367) ESTIMATED CHANGES Modified src/measure_theory/group/basic.lean +/- theorem measure_theory.measure.inv_apply 2021-11-17 14:46:00 e14e87a chore(category_theory/filtered): slightly golf two proofs (#10368) ESTIMATED CHANGES Modified src/category_theory/filtered.lean 2021-11-17 09:02:09 c7441af feat(linear_algebra/bilinear_form): add lemmas about congr (#10362) With these some of the `nondegenerate` proofs can be golfed to oblivion, rather than reproving variants of the same statement over and over again. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean +/- theorem bilin_form.comp_congr +/- theorem bilin_form.congr_comp + theorem bilin_form.congr_congr + theorem bilin_form.congr_refl + theorem bilin_form.congr_trans + theorem bilin_form.nondegenerate.congr + theorem bilin_form.nondegenerate_congr_iff + theorem matrix.nondegenerate.to_bilin 2021-11-17 09:02:08 568435c chore(analysis/inner_product_space/projection): typeclass inference for completeness (#10357) As of #5408, most lemmas about orthogonal projection onto a subspace `K` / reflection through a subspace `K` / orthogonal complement of `K` which require `K` to be complete phrase this in terms of `complete_space K` rather than `is_complete K`, so that it can be found by typeclass inference. A few still used the old way; this PR completes the switch. ESTIMATED CHANGES Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/projection.lean + theorem sub_orthogonal_projection_mem_orthogonal + theorem submodule.is_compl_orthogonal_of_complete_space - theorem submodule.is_compl_orthogonal_of_is_complete +/- theorem submodule.orthogonal_eq_bot_iff + theorem submodule.sup_orthogonal_inf_of_complete_space - theorem submodule.sup_orthogonal_inf_of_is_complete - theorem submodule.sup_orthogonal_of_is_complete Modified src/geometry/euclidean/basic.lean 2021-11-17 09:02:07 d5c2b34 chore(analysis/mean_inequalities): split mean_inequalities into two files (#10355) This PR puts all results related to power functions into a new file. Currently, we prove convexity of `exp` and `pow`, then use those properties in `mean_inequalities`. I am refactoring some parts of the analysis library to reduce the use of derivatives. I want to prove convexity of exp without derivatives (in a future PR), prove Holder's inequality, then use it to prove the convexity of pow. This requires Holder's inequality to be in a file that does not use convexity of pow, hence the split. I needed to change the proof of Holder's inequality since it used the generalized mean inequality (hence `pow`). I switched to the second possible proof mentioned in the file docstring. I also moved some lemmas in `mean_inequalities` to have three main sections: AM-GM, then Young and a final section with Holder and Minkowski. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean - theorem ennreal.add_rpow_le_rpow_add - theorem ennreal.rpow_add_le_add_rpow - theorem ennreal.rpow_add_rpow_le - theorem ennreal.rpow_add_rpow_le_add - theorem ennreal.rpow_arith_mean_le_arith_mean2_rpow - theorem ennreal.rpow_arith_mean_le_arith_mean_rpow - theorem nnreal.arith_mean_le_rpow_mean - theorem nnreal.pow_arith_mean_le_arith_mean_pow - theorem nnreal.rpow_arith_mean_le_arith_mean2_rpow - theorem nnreal.rpow_arith_mean_le_arith_mean_rpow - theorem real.arith_mean_le_rpow_mean - theorem real.pow_arith_mean_le_arith_mean_pow - theorem real.pow_arith_mean_le_arith_mean_pow_of_even - theorem real.rpow_arith_mean_le_arith_mean_rpow - theorem real.zpow_arith_mean_le_arith_mean_zpow Added src/analysis/mean_inequalities_pow.lean + theorem ennreal.add_rpow_le_rpow_add + theorem ennreal.rpow_add_le_add_rpow + theorem ennreal.rpow_add_rpow_le + theorem ennreal.rpow_add_rpow_le_add + theorem ennreal.rpow_arith_mean_le_arith_mean2_rpow + theorem ennreal.rpow_arith_mean_le_arith_mean_rpow + theorem nnreal.arith_mean_le_rpow_mean + theorem nnreal.pow_arith_mean_le_arith_mean_pow + theorem nnreal.rpow_arith_mean_le_arith_mean2_rpow + theorem nnreal.rpow_arith_mean_le_arith_mean_rpow + theorem real.arith_mean_le_rpow_mean + theorem real.pow_arith_mean_le_arith_mean_pow + theorem real.pow_arith_mean_le_arith_mean_pow_of_even + theorem real.rpow_arith_mean_le_arith_mean_rpow + theorem real.zpow_arith_mean_le_arith_mean_zpow Modified src/measure_theory/integral/mean_inequalities.lean 2021-11-17 09:02:05 60363a4 feat(finset/basic): Adding `list.to_finset_union` and `list.to_finset_inter` (#10351) Two tiny lemmas, matching their counterparts for `multiset` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem list.to_finset_inter + theorem list.to_finset_union 2021-11-17 07:06:12 8f6fd1b lint(*): curly braces linter (#10280) This PR: 1. Adds a style linter for curly braces: a line shall never end with `{` or start with `}` (modulo white space) 2. Adds `scripts/cleanup-braces.{sh,py}` to reflow lines that violate (1) 3. Runs the scripts from (2) to generate a boatload of changes in mathlib 4. Fixes one line that became to long due to (3) ESTIMATED CHANGES Modified archive/imo/imo1960_q1.lean Modified archive/imo/imo1988_q6.lean Modified archive/sensitivity.lean Added scripts/cleanup-braces.py Added scripts/cleanup-braces.sh Modified scripts/lint-style.py Modified src/algebra/algebra/basic.lean +/- def algebra.semiring_to_ring Modified src/algebra/algebra/operations.lean Modified src/algebra/category/CommRing/pushout.lean +/- theorem CommRing.pushout_cocone_X +/- theorem CommRing.pushout_cocone_inl +/- theorem CommRing.pushout_cocone_inr Modified src/algebra/category/Group/images.lean Modified src/algebra/category/Mon/adjunctions.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/free_algebra.lean Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/units.lean Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/lattice_ordered_group.lean Modified src/algebra/lie/of_associative.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/module/submodule_lattice.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/order/monoid.lean Modified src/algebra/star/chsh.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/algebraic_topology/cech_nerve.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed_space/lattice_ordered_group.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/special_functions/bernstein.lean Modified src/category_theory/limits/concrete_category.lean Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/rigid.lean Modified src/category_theory/sites/sheafification.lean Modified src/combinatorics/colex.lean Modified src/computability/halting.lean Modified src/computability/partrec.lean Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/computability/regular_expressions.lean Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean Modified src/control/traversable/derive.lean Modified src/data/buffer/parser/numeral.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/module.lean Modified src/data/equiv/set.lean Modified src/data/finsupp/basic.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/defs.lean Modified src/data/list/perm.lean Modified src/data/list/sigma.lean Modified src/data/list/sort.lean Modified src/data/mllist.lean Modified src/data/multiset/basic.lean Modified src/data/multiset/functor.lean Modified src/data/nat/basic.lean Modified src/data/nat/gcd.lean Modified src/data/nat/sqrt.lean Modified src/data/num/lemmas.lean Modified src/data/pequiv.lean Modified src/data/pfunctor/multivariate/M.lean Modified src/data/pnat/basic.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/data/qpf/multivariate/constructions/const.lean Modified src/data/qpf/multivariate/constructions/sigma.lean Modified src/data/qpf/univariate/basic.lean Modified src/data/rat/basic.lean Modified src/data/rat/order.lean Modified src/data/rbmap/default.lean Modified src/data/rbtree/basic.lean Modified src/data/rbtree/find.lean Modified src/data/rbtree/insert.lean Modified src/data/rbtree/main.lean Modified src/data/rbtree/min_max.lean Modified src/data/set/enumerate.lean Modified src/data/set/intervals/basic.lean Modified src/data/vector3.lean Modified src/deprecated/subfield.lean Modified src/deprecated/subring.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean Modified src/field_theory/perfect_closure.lean Modified src/field_theory/separable.lean Modified src/geometry/manifold/charted_space.lean Modified src/group_theory/free_group.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/concrete_cycle.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/basic.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/clifford_algebra/equivs.lean Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/exterior_algebra.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/matrix/polynomial.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/multilinear/basis.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/tensor_algebra.lean Modified src/linear_algebra/tensor_product.lean Modified src/logic/relation.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/tactic.lean Modified src/meta/expr_lens.lean Modified src/model_theory/basic.lean Modified src/number_theory/dioph.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/pell.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/order/atoms.lean Modified src/order/bounded_lattice.lean Modified src/order/filter/basic.lean Modified src/order/lattice.lean Modified src/order/well_founded_set.lean Modified src/order/zorn.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/lists.lean Modified src/set_theory/ordinal_notation.lean Modified src/tactic/alias.lean Modified src/tactic/apply.lean Modified src/tactic/apply_fun.lean Modified src/tactic/chain.lean Modified src/tactic/converter/apply_congr.lean Modified src/tactic/converter/old_conv.lean Modified src/tactic/core.lean Modified src/tactic/dependencies.lean Modified src/tactic/doc_commands.lean Modified src/tactic/explode.lean Modified src/tactic/ext.lean Modified src/tactic/fresh_names.lean Modified src/tactic/generalizes.lean Modified src/tactic/hint.lean Modified src/tactic/induction.lean Modified src/tactic/interactive.lean Modified src/tactic/interactive_expr.lean Modified src/tactic/itauto.lean Modified src/tactic/lift.lean Modified src/tactic/lint/basic.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/local_cache.lean Modified src/tactic/localized.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_cast.lean Modified src/tactic/norm_num.lean Modified src/tactic/restate_axiom.lean Modified src/tactic/simp_command.lean Modified src/tactic/simpa.lean Modified src/tactic/simps.lean Modified src/tactic/squeeze.lean Modified src/tactic/tidy.lean Modified src/tactic/transfer.lean Modified src/tactic/transform_decl.lean Modified src/tactic/unify_equations.lean Modified src/testing/slim_check/functions.lean Modified src/testing/slim_check/testable.lean Modified src/topology/category/Profinite/cofiltered_limit.lean Modified src/topology/constructions.lean Modified src/topology/instances/ennreal.lean Modified src/topology/list.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/sheaves/sheaf_condition/sites.lean Modified src/topology/tactic.lean Modified src/topology/uniform_space/basic.lean 2021-11-17 04:51:54 2bdadb4 feat(order/imp): define `lattice.imp` and `lattice.biimp` (#10327) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean +/- theorem sdiff_eq_bot_iff Added src/order/imp.lean + def lattice.biimp + theorem lattice.biimp_comm + theorem lattice.biimp_eq_iff + theorem lattice.biimp_eq_top_iff + theorem lattice.biimp_mp + theorem lattice.biimp_mpr + theorem lattice.biimp_self + theorem lattice.biimp_symm + theorem lattice.bot_imp + theorem lattice.compl_biimp + theorem lattice.compl_biimp_compl + theorem lattice.compl_imp + theorem lattice.compl_imp_compl + theorem lattice.compl_sdiff + theorem lattice.compl_symm_diff + def lattice.imp + theorem lattice.imp_bot + theorem lattice.imp_eq_arrow + theorem lattice.imp_eq_bot_iff + theorem lattice.imp_eq_top_iff + theorem lattice.imp_inf_le + theorem lattice.imp_mono + theorem lattice.imp_self + theorem lattice.imp_top + theorem lattice.inf_imp_eq + theorem lattice.inf_imp_eq_imp_imp + theorem lattice.le_imp_iff + theorem lattice.top_imp Modified src/order/lattice.lean 2021-11-16 23:48:06 0a2a922 feat(combinatorics/set_family/shadow): Shadow of a set family (#10223) This defines `shadow 𝒜` where `𝒜 : finset (finset α))`. ESTIMATED CHANGES Added src/combinatorics/set_family/shadow.lean + theorem finset.erase_mem_shadow + theorem finset.exists_subset_of_mem_shadow + theorem finset.mem_shadow_iff + theorem finset.mem_shadow_iff_exists_mem_card_add + theorem finset.mem_shadow_iff_exists_mem_card_add_one + theorem finset.mem_shadow_iff_insert_mem + def finset.shadow + theorem finset.shadow_empty + theorem finset.shadow_monotone 2021-11-16 23:48:05 7fec401 feat(topology/metric_space/hausdorff_distance): add definition and lemmas about open thickenings of subsets (#10188) Add definition and basic API about open thickenings of subsets in metric spaces, in preparation for the portmanteau theorem on characterizations of weak convergence of Borel probability measures. ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.is_open_thickening + theorem metric.mem_thickening_iff + def metric.thickening + theorem metric.thickening_empty + theorem metric.thickening_eq_bUnion_ball + theorem metric.thickening_eq_preimage_inf_edist + theorem metric.thickening_mono + theorem metric.thickening_subset_of_subset 2021-11-16 21:57:02 bce0ede feat(number_theory/divisors): mem_divisors_self (#10359) From flt-regular. ESTIMATED CHANGES Modified src/number_theory/divisors.lean + theorem nat.mem_divisors_self 2021-11-16 21:57:00 8f7971a refactor(linear_algebra/bilinear_form): Change namespace of is_refl, is_symm, and is_alt (#10338) The propositions `is_refl`, `is_symm`, and `is_alt` are now in the namespace `bilin_form`. Moreover, `is_sym` is now renamed to `is_symm`. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/linear_algebra/bilinear_form.lean - def alt_bilin_form.is_alt - theorem alt_bilin_form.is_refl - theorem alt_bilin_form.neg - theorem alt_bilin_form.ortho_sym - theorem alt_bilin_form.self_eq_zero + theorem bilin_form.is_alt.is_refl + theorem bilin_form.is_alt.neg + theorem bilin_form.is_alt.ortho_comm + theorem bilin_form.is_alt.self_eq_zero + def bilin_form.is_alt + theorem bilin_form.is_refl.eq_zero + theorem bilin_form.is_refl.ortho_comm + def bilin_form.is_refl + theorem bilin_form.is_symm.is_refl + theorem bilin_form.is_symm.ortho_comm + def bilin_form.is_symm + theorem bilin_form.is_symm_iff_flip' +/- theorem bilin_form.le_orthogonal_orthogonal - theorem bilin_form.restrict_sym + theorem bilin_form.restrict_symm - theorem refl_bilin_form.eq_zero - def refl_bilin_form.is_refl - theorem refl_bilin_form.ortho_sym - theorem sym_bilin_form.is_refl - def sym_bilin_form.is_sym - theorem sym_bilin_form.is_sym_iff_flip' - theorem sym_bilin_form.ortho_sym - theorem sym_bilin_form.sym Modified src/linear_algebra/quadratic_form/basic.lean - theorem quadratic_form.associated_is_sym + theorem quadratic_form.associated_is_symm +/- theorem quadratic_form.associated_left_inverse Modified src/ring_theory/trace.lean - theorem algebra.trace_form_is_sym + theorem algebra.trace_form_is_symm 2021-11-16 21:56:59 698eb1e feat(data/fin/basic): add lemmas about fin.cast (#10329) ESTIMATED CHANGES Modified src/data/fin/basic.lean + theorem fin.add_nat_cast + theorem fin.cast_add_cast + theorem fin.cast_add_nat_left + theorem fin.cast_add_nat_right + theorem fin.cast_add_nat_zero + theorem fin.cast_cast_add_left + theorem fin.cast_cast_add_right + theorem fin.cast_nat_add_left + theorem fin.cast_nat_add_right + theorem fin.cast_nat_add_zero + theorem fin.cast_succ_eq + theorem fin.nat_add_cast + theorem fin.succ_cast_eq 2021-11-16 18:44:35 9fa14a6 feat(topology/uniform_space): properties of uniform convergence (#9958) * From the sphere eversion project * multiple proofs were golfed by @PatrickMassot * Probably some proofs can be golfed quite heavily Co-authored by: Patrick Massot ESTIMATED CHANGES Modified src/logic/basic.lean + theorem imp_forall_iff Modified src/order/filter/basic.lean + theorem filter.mem_prod_principal + theorem filter.mem_prod_top Modified src/topology/uniform_space/compact_separated.lean + theorem continuous.tendsto_uniformly + theorem continuous_on.tendsto_uniformly Modified src/topology/uniform_space/separation.lean + theorem is_separated.eq_of_uniform_continuous + theorem is_separated.mono + theorem is_separated.prod Modified src/topology/uniform_space/uniform_convergence.lean + theorem tendsto_prod_top_iff + theorem tendsto_uniformly_iff_tendsto + theorem tendsto_uniformly_on_iff_tendsto + theorem uniform_continuous_on.tendsto_uniformly + theorem uniform_continuous₂.tendsto_uniformly 2021-11-16 18:44:34 d6b83d8 feat(number_theory): define the class number (#9071) We instantiate the finiteness proof of the class group for rings of integers, and define the class number of a number field, or of a separable function field, as the finite cardinality of the class group. Co-Authored-By: Ashvni Co-Authored-By: Filippo A. E. Nuccio ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.normalize_monic Modified src/number_theory/class_number/finite.lean Added src/number_theory/class_number/function_field.lean + theorem function_field.class_number_eq_one_iff Added src/number_theory/class_number/number_field.lean + theorem number_field.class_number_eq_one_iff + theorem rat.class_number_eq Modified src/number_theory/function_field.lean Modified src/number_theory/number_field.lean Modified src/ring_theory/unique_factorization_domain.lean +/- theorem ufm_of_gcd_of_wf_dvd_monoid 2021-11-16 15:57:33 f780788 feat(dynamics): define `{mul,add}_action.is_minimal` (#10311) ESTIMATED CHANGES Added src/dynamics/minimal.lean + theorem dense_of_nonempty_smul_invariant + theorem dense_range_smul + theorem eq_empty_or_univ_of_smul_invariant_closed + theorem is_compact.exists_finite_cover_smul + theorem is_minimal_iff_closed_smul_invariant + theorem is_open.Union_preimage_smul + theorem is_open.Union_smul + theorem is_open.exists_smul_mem + theorem mul_action.dense_orbit Modified src/group_theory/group_action/basic.lean + theorem mul_action.orbit_nonempty 2021-11-16 12:48:56 d36f17f feat(linear_algebra/sesquilinear_form): Add is_refl for sesq_form.is_alt (#10341) Lemma `is_refl` shows that an alternating sesquilinear form is reflexive. Refactored `sesquilinear_form` in a similar way as `bilinear_form` will be in #10338. ESTIMATED CHANGES Modified src/linear_algebra/sesquilinear_form.lean - def alt_sesq_form.is_alt - theorem alt_sesq_form.neg - theorem alt_sesq_form.self_eq_zero - theorem refl_sesq_form.eq_zero - def refl_sesq_form.is_refl - theorem refl_sesq_form.ortho_sym + theorem sesq_form.is_alt.is_refl + theorem sesq_form.is_alt.neg + theorem sesq_form.is_alt.ortho_comm + theorem sesq_form.is_alt.self_eq_zero + def sesq_form.is_alt + theorem sesq_form.is_refl.eq_zero + theorem sesq_form.is_refl.ortho_comm + def sesq_form.is_refl + theorem sesq_form.is_symm.is_refl + theorem sesq_form.is_symm.ortho_comm + def sesq_form.is_symm - theorem sym_sesq_form.is_refl - def sym_sesq_form.is_sym - theorem sym_sesq_form.ortho_sym - theorem sym_sesq_form.sym 2021-11-16 12:48:55 7f4b91b feat(linear_algebra/determinant): the determinant associated to the standard basis of the free module is the usual matrix determinant (#10278) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem pi.basis_fun_det Modified src/linear_algebra/matrix/basis.lean + theorem basis.coe_pi_basis_fun.to_matrix_eq_transpose Modified src/linear_algebra/matrix/determinant.lean + def matrix.det_row_alternating - def matrix.det_row_multilinear 2021-11-16 12:48:54 e20af15 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 `structure`s and `@[irreducible] def`s. 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 Modified docs/undergrad.yaml Added src/field_theory/ratfunc.lean + def ratfunc.C + def ratfunc.X + theorem ratfunc.algebra_map_C + theorem ratfunc.algebra_map_X + theorem ratfunc.algebra_map_comp_C + theorem ratfunc.algebra_map_eq_C + theorem ratfunc.algebra_map_eq_zero_iff + theorem ratfunc.algebra_map_injective + theorem ratfunc.algebra_map_ne_zero + def ratfunc.aux_equiv + theorem ratfunc.aux_equiv_eq + def ratfunc.denom + theorem ratfunc.denom_C + theorem ratfunc.denom_X + theorem ratfunc.denom_add_dvd + theorem ratfunc.denom_algebra_map + theorem ratfunc.denom_div + theorem ratfunc.denom_div_dvd + theorem ratfunc.denom_dvd + theorem ratfunc.denom_mul_dvd + theorem ratfunc.denom_ne_zero + theorem ratfunc.denom_one + theorem ratfunc.denom_zero + def ratfunc.eval + theorem ratfunc.eval_C + theorem ratfunc.eval_X + theorem ratfunc.eval_add + theorem ratfunc.eval_algebra_map + theorem ratfunc.eval_eq_zero_of_eval₂_denom_eq_zero + theorem ratfunc.eval_mul + theorem ratfunc.eval_one + theorem ratfunc.eval_zero + theorem ratfunc.eval₂_denom_ne_zero + theorem ratfunc.lift_on'_div + theorem ratfunc.lift_on'_mk + theorem ratfunc.lift_on_div + theorem ratfunc.lift_on_mk + theorem ratfunc.mk_coe_def + theorem ratfunc.mk_def_of_mem + theorem ratfunc.mk_def_of_ne + theorem ratfunc.mk_eq_div' + theorem ratfunc.mk_eq_div + theorem ratfunc.mk_eq_localization_mk + theorem ratfunc.mk_eq_mk + theorem ratfunc.mk_one' + theorem ratfunc.mk_one + theorem ratfunc.mk_smul + theorem ratfunc.mk_zero + theorem ratfunc.monic_denom + theorem ratfunc.mul_inv_cancel + def ratfunc.num + theorem ratfunc.num_C + theorem ratfunc.num_X + theorem ratfunc.num_algebra_map + def ratfunc.num_denom + theorem ratfunc.num_denom_add + theorem ratfunc.num_denom_div + theorem ratfunc.num_denom_mul + theorem ratfunc.num_div + theorem ratfunc.num_div_denom + theorem ratfunc.num_div_dvd + theorem ratfunc.num_dvd + theorem ratfunc.num_eq_zero_iff + theorem ratfunc.num_mul_dvd + theorem ratfunc.num_mul_eq_mul_denom_iff + theorem ratfunc.num_ne_zero + theorem ratfunc.num_one + theorem ratfunc.num_zero + theorem ratfunc.of_fraction_ring_add + theorem ratfunc.of_fraction_ring_algebra_map + theorem ratfunc.of_fraction_ring_comp_algebra_map + theorem ratfunc.of_fraction_ring_div + theorem ratfunc.of_fraction_ring_eq + theorem ratfunc.of_fraction_ring_injective + theorem ratfunc.of_fraction_ring_inv + theorem ratfunc.of_fraction_ring_mk' + theorem ratfunc.of_fraction_ring_mul + theorem ratfunc.of_fraction_ring_neg + theorem ratfunc.of_fraction_ring_one + theorem ratfunc.of_fraction_ring_sub + theorem ratfunc.of_fraction_ring_zero + theorem ratfunc.to_fraction_ring_eq + theorem ratfunc.to_fraction_ring_injective + structure ratfunc Modified src/group_theory/group_action/defs.lean Modified src/number_theory/function_field.lean +/- def function_field 2021-11-16 08:37:36 f01399c chore(order/filter/basic): add 2 trivial `simp` lemmas (#10344) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_eq_univ + theorem filter.eventually_mem_set 2021-11-16 08:37:35 1181c99 feat(algebra/order/archimedean): upgrade some `∃` to `∃!` (#10343) ESTIMATED CHANGES Modified src/algebra/order/archimedean.lean - theorem exists_add_int_smul_mem_Ico - theorem exists_add_int_smul_mem_Ioc - theorem exists_int_smul_near_of_pos' - theorem exists_int_smul_near_of_pos + theorem exists_unique_add_zsmul_mem_Ico + theorem exists_unique_add_zsmul_mem_Ioc + theorem exists_unique_zsmul_near_of_pos' + theorem exists_unique_zsmul_near_of_pos Modified src/algebra/periodic.lean Modified src/group_theory/archimedean.lean Modified src/logic/function/basic.lean - theorem function.bijective.exists_unique + theorem function.bijective.exists_unique_iff - theorem function.surjective.exists - theorem function.surjective.exists₂ - theorem function.surjective.exists₃ - theorem function.surjective.forall - theorem function.surjective.forall₂ - theorem function.surjective.forall₃ 2021-11-16 06:43:17 30abde6 chore(*): clean up some unused open statements and extra simps (#10342) We clean up some specific statements that are essentially no-ops in the library, i.e. opening a namespace and then never using it and using a simp-set larger than actually needed. This is a preparatory miscellany of small fixes for a larger PR upcoming from me and Johan to reduce imports in the library. Hopefully merging this first will make the content of that PR clearer. ESTIMATED CHANGES Modified src/category_theory/triangulated/basic.lean Modified src/data/list/basic.lean Modified src/data/matrix/basic.lean Modified src/measure_theory/measurable_space_def.lean Modified src/tactic/restate_axiom.lean 2021-11-16 04:55:57 979f0e8 feat(data/fin/basic): extract `div_nat` and `mod_nat` from `fin_prod_fin_equiv` (#10339) This makes it a little easier to tell which component is div and which is mod from the docs alone, and also makes these available earlier than `data/equiv/fin`. ESTIMATED CHANGES Modified src/data/equiv/fin.lean Modified src/data/fin/basic.lean + theorem fin.coe_div_nat + theorem fin.coe_mod_nat + def fin.div_nat + def fin.mod_nat 2021-11-16 03:17:25 bd80b33 chore(ring_theory/subring): fix stale docstring (#10340) Oversight from https://github.com/leanprover-community/mathlib/pull/10332 ESTIMATED CHANGES Modified src/ring_theory/subring.lean 2021-11-16 02:30:50 9264f30 feat(analysis/calculus/times_cont_diff): continuous affine maps are smooth (#10335) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Added src/analysis/calculus/affine_map.lean + theorem continuous_affine_map.times_cont_diff 2021-11-16 00:29:07 bff69c9 feat(data/nat/lattice): add ```Inf_add``` lemma (#10008) Adds a lemma about Inf on natural numbers. It will be needed for the count PR. ESTIMATED CHANGES Modified src/data/nat/lattice.lean + theorem nat.Inf_add' + theorem nat.Inf_add + theorem nat.Inf_empty 2021-11-16 00:29:05 ddb6c75 feat(algebra/homology/exact): preadditive.exact_iff_exact_of_iso (#9979) ESTIMATED CHANGES Modified src/algebra/homology/exact.lean + theorem category_theory.preadditive.exact_iff_exact_of_iso + theorem category_theory.preadditive.exact_of_iso_of_exact Modified src/category_theory/arrow.lean + theorem category_theory.arrow.inv_left_hom_right + theorem category_theory.arrow.left_hom_inv_right 2021-11-15 22:46:44 9074095 chore(linear_algebra/pi_tensor_product): add reindex_reindex (#10336) ESTIMATED CHANGES Modified src/linear_algebra/pi_tensor_product.lean + theorem pi_tensor_product.reindex_reindex 2021-11-15 22:46:43 a0f2c47 feat(logic/relation): induction principles for `trans_gen` (#10331) Corresponding induction principles already exist for `refl_trans_gen`. ESTIMATED CHANGES Modified src/logic/relation.lean + theorem relation.trans_gen.head_induction_on + theorem relation.trans_gen.trans_induction_on 2021-11-15 22:46:41 65ff54c feat(data/fintype/basic): add fin_injective (#10330) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fin.cast_eq_cast' + theorem fin_injective 2021-11-15 21:01:46 93047c5 feat(linear_algebra/determinant): linear coordinates are ratio of determinants (#10261) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.mk_coord_apply + theorem basis.mk_coord_apply_eq + theorem basis.mk_coord_apply_ne Modified src/linear_algebra/determinant.lean + theorem basis.det_smul_mk_coord_eq_det_update Modified src/linear_algebra/multilinear/basic.lean +/- def multilinear_map.to_linear_map 2021-11-15 21:01:45 7ccc7ae feat(topology/homotopy/fundamental_groupoid): The functor from `Top` to `Groupoid` (#10195) I have no idea if the ways I've done things is the right way, eg. I don't know if I need to be thinking about universes when defining the functor, so comments about that are definitely welcome. ESTIMATED CHANGES Modified src/data/quot.lean + theorem quotient.map₂_mk Modified src/topology/homotopy/basic.lean +/- theorem continuous_map.homotopic.symm +/- theorem continuous_map.homotopic_rel.symm Modified src/topology/homotopy/fundamental_groupoid.lean + theorem fundamental_groupoid.comp_eq + def fundamental_groupoid.fundamental_groupoid_functor Modified src/topology/homotopy/path.lean + theorem path.homotopic.hcomp + theorem path.homotopic.map +/- theorem path.homotopic.symm + def path.homotopy.map Modified src/topology/path_connected.lean + theorem path.map_id + theorem path.map_map + theorem path.map_symm + theorem path.map_trans 2021-11-15 21:01:44 9c03e9d feat(data/fintype): computable trunc bijection from fin (#10141) When a type `X` lacks decidable equality, there is still computably a bijection `fin (card X) -> X` using `trunc`. Also, move `fintype.equiv_fin_of_forall_mem_list` to `list.nodup.nth_le_equiv_of_forall_mem_list`. ESTIMATED CHANGES Modified src/data/equiv/list.lean Modified src/data/fintype/basic.lean - def fintype.equiv_fin_of_forall_mem_list + def fintype.trunc_fin_bijection Modified src/data/list/nodup_equiv_fin.lean - theorem list.nodup.coe_nth_le_equiv_apply - theorem list.nodup.coe_nth_le_equiv_symm_apply + def list.nodup.nth_le_bijection_of_forall_mem_list + def list.nodup.nth_le_equiv_of_forall_mem_list 2021-11-15 19:12:05 7b60768 feat(ring_theory/subring): weaken typeclass assumption for `units.pos_subgroup` (#10332) ESTIMATED CHANGES Modified src/ring_theory/subring.lean +/- theorem units.mem_pos_subgroup +/- def units.pos_subgroup 2021-11-15 19:12:03 7803884 feat(data/pi): Composition of addition/subtraction/... of functions (#10305) ESTIMATED CHANGES Modified src/algebra/group/pi.lean - theorem pi.comp_one - theorem pi.const_one - theorem pi.one_comp Modified src/data/pi.lean + theorem pi.comp_one + theorem pi.const_div + theorem pi.const_inv + theorem pi.const_mul + theorem pi.const_one + theorem pi.div_comp + theorem pi.inv_comp + theorem pi.mul_comp + theorem pi.one_comp 2021-11-15 19:12:01 43ef578 feat(category_theory/limits): Random results about limits. (#10285) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback.map + def category_theory.limits.pushout.map Modified src/category_theory/limits/shapes/types.lean + def category_theory.limits.types.coequalizer_colimit + inductive category_theory.limits.types.coequalizer_rel 2021-11-15 19:11:58 1a47cfc feat(data/finset/basic): A finset has card two iff it's `{x, y}` for some `x ≠ y` (#10252) and the similar result for card three. Dumb but surprisingly annoying! ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_eq_three + theorem finset.card_eq_two Modified src/data/list/basic.lean + theorem list.length_eq_three + theorem list.length_eq_two Modified src/data/multiset/basic.lean + theorem multiset.card_eq_three + theorem multiset.card_eq_two 2021-11-15 19:11:56 9fe0cbc feat(category_theory/preadditive/additive_functor): map_zero' is a redundant field, remove it (#10229) The map_zero' field in the definition of an additive functor can be deduced from the map_add' field. So we remove it. ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Modified src/algebra/homology/additive.lean Modified src/analysis/normed/group/SemiNormedGroup/completion.lean Modified src/category_theory/preadditive/additive_functor.lean 2021-11-15 17:27:15 64418d7 fix(logic/basic): remove `noncomputable lemma` (#10292) It's been three years since this was discussed according to the zulip archive link in the library note. According to CI, the reason is no longer relevant. Leaving these as `noncomputable lemma` is harmful as it results in non-defeq instance diamonds sometimes as lean was not able to unfold the lemmas to get to the data underneath. Since these are now `def`s, the linter requires them to have docstrings. ESTIMATED CHANGES Modified src/logic/basic.lean Modified src/tactic/lint/misc.lean 2021-11-15 17:27:13 d5d6071 chore(analysis/special_functions/trigonometric/arctan): put lemmas about derivatives into a new file (#10157) ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean Modified src/analysis/special_functions/trigonometric/arctan.lean - theorem deriv_arctan - theorem deriv_within_arctan - theorem differentiable.arctan - theorem differentiable_at.arctan - theorem differentiable_on.arctan - theorem differentiable_within_at.arctan - theorem fderiv_arctan - theorem fderiv_within_arctan - theorem has_deriv_at.arctan - theorem has_deriv_within_at.arctan - theorem has_fderiv_at.arctan - theorem has_fderiv_within_at.arctan - theorem has_strict_deriv_at.arctan - theorem has_strict_fderiv_at.arctan - theorem real.continuous_at_tan - theorem real.deriv_arctan - theorem real.deriv_tan - theorem real.differentiable_arctan - theorem real.differentiable_at_arctan - theorem real.differentiable_at_tan - theorem real.differentiable_at_tan_of_mem_Ioo - theorem real.has_deriv_at_arctan - theorem real.has_deriv_at_tan - theorem real.has_deriv_at_tan_of_mem_Ioo - theorem real.has_strict_deriv_at_arctan - theorem real.has_strict_deriv_at_tan - theorem real.tendsto_abs_tan_at_top - theorem real.tendsto_abs_tan_of_cos_eq_zero - theorem real.times_cont_diff_arctan - theorem real.times_cont_diff_at_tan - theorem times_cont_diff.arctan - theorem times_cont_diff_at.arctan - theorem times_cont_diff_on.arctan - theorem times_cont_diff_within_at.arctan Added src/analysis/special_functions/trigonometric/arctan_deriv.lean + theorem deriv_arctan + theorem deriv_within_arctan + theorem differentiable.arctan + theorem differentiable_at.arctan + theorem differentiable_on.arctan + theorem differentiable_within_at.arctan + theorem fderiv_arctan + theorem fderiv_within_arctan + theorem has_deriv_at.arctan + theorem has_deriv_within_at.arctan + theorem has_fderiv_at.arctan + theorem has_fderiv_within_at.arctan + theorem has_strict_deriv_at.arctan + theorem has_strict_fderiv_at.arctan + theorem real.continuous_at_tan + theorem real.deriv_arctan + theorem real.deriv_tan + theorem real.differentiable_arctan + theorem real.differentiable_at_arctan + theorem real.differentiable_at_tan + theorem real.differentiable_at_tan_of_mem_Ioo + theorem real.has_deriv_at_arctan + theorem real.has_deriv_at_tan + theorem real.has_deriv_at_tan_of_mem_Ioo + theorem real.has_strict_deriv_at_arctan + theorem real.has_strict_deriv_at_tan + theorem real.tendsto_abs_tan_at_top + theorem real.tendsto_abs_tan_of_cos_eq_zero + theorem real.times_cont_diff_arctan + theorem real.times_cont_diff_at_tan + theorem times_cont_diff.arctan + theorem times_cont_diff_at.arctan + theorem times_cont_diff_on.arctan + theorem times_cont_diff_within_at.arctan Modified src/data/real/pi/leibniz.lean 2021-11-15 16:52:02 02100d8 feat(category_theory/sites/limits): `Sheaf J D` has colimits. (#10334) We show that the category of sheaves has colimits obtained by sheafifying colimits on the level of presheaves. ESTIMATED CHANGES Modified src/category_theory/sites/limits.lean + def category_theory.Sheaf.is_colimit_sheafify_cocone + def category_theory.Sheaf.sheafify_cocone 2021-11-15 14:41:25 bf06854 feat(algebra/big_operators/basic): Sum over a product of finsets, right version (#10124) This adds `finset.sum_prod_right` and renames `finset.sum_prod` to `finset.sum_prod_left`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_product_right' + theorem finset.prod_product_right Modified src/linear_algebra/matrix/determinant.lean Modified src/ring_theory/algebra_tower.lean 2021-11-15 12:56:47 ca5c4b3 feat(group_theory/group_action): add a few instances (#10310) * regular and opposite regular actions of a group on itself are transitive; * the action of a group on an orbit is transitive. ESTIMATED CHANGES Modified src/algebra/opposites.lean Modified src/group_theory/group_action/basic.lean - theorem mul_action.exists_smul_eq +/- theorem mul_action.orbit_eq_univ - theorem mul_action.surjective_smul Modified src/group_theory/group_action/defs.lean + theorem mul_action.exists_smul_eq + theorem mul_action.surjective_smul 2021-11-15 10:57:56 ca61dbf feat(order/sup_indep): Finite supremum independence (#9867) This defines supremum independence of indexed finsets. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.disjoint_sup_left + theorem finset.disjoint_sup_right Added src/order/sup_indep.lean + theorem complete_lattice.independent_iff_sup_indep + theorem finset.sup_indep.attach + theorem finset.sup_indep.bUnion + theorem finset.sup_indep.pairwise_disjoint + theorem finset.sup_indep.subset + theorem finset.sup_indep.sup + def finset.sup_indep + theorem finset.sup_indep_empty + theorem finset.sup_indep_iff_pairwise_disjoint + theorem finset.sup_indep_singleton 2021-11-15 08:05:28 60bc370 feat(category_theory/sites/limits): `Sheaf_to_presheaf` creates limits (#10328) As a consequence, we obtain that sheaves have limits (of a given shape) when the target category does, and that these limit sheaves are computed on each object of the site "pointwise". ESTIMATED CHANGES Modified src/category_theory/limits/shapes/multiequalizer.lean + def category_theory.limits.multicofork.is_colimit.mk + def category_theory.limits.multifork.is_limit.mk Added src/category_theory/sites/limits.lean + def category_theory.Sheaf.is_limit_multifork_of_is_limit + theorem category_theory.Sheaf.is_sheaf_of_is_limit + def category_theory.Sheaf.multifork_evaluation_cone 2021-11-15 05:07:52 189e066 feat(category_theory/sites/sheafification): The sheafification of a presheaf. (#10303) We construct the sheafification of a presheaf `P` taking values in a concrete category `D` with enough (co)limits, where the forgetful functor preserves the appropriate (co)limits and reflects isomorphisms. We follow the construction on the stacks project https://stacks.math.columbia.edu/tag/00W1 **Note:** There are two very long proofs here, so I added several comments explaining what's going on. ESTIMATED CHANGES Modified src/category_theory/limits/concrete_category.lean + def category_theory.limits.concrete.multiequalizer_equiv + theorem category_theory.limits.concrete.multiequalizer_equiv_apply + def category_theory.limits.concrete.multiequalizer_equiv_aux Modified src/category_theory/sites/grothendieck.lean + def category_theory.grothendieck_topology.cover.arrow.from_middle + theorem category_theory.grothendieck_topology.cover.arrow.from_middle_condition + theorem category_theory.grothendieck_topology.cover.arrow.middle_spec + def category_theory.grothendieck_topology.cover.arrow.to_middle + theorem category_theory.grothendieck_topology.cover.arrow.to_middle_condition + def category_theory.grothendieck_topology.cover.bind + def category_theory.grothendieck_topology.cover.bind_to_base Modified src/category_theory/sites/plus.lean + def category_theory.grothendieck_topology.iso_to_plus + theorem category_theory.grothendieck_topology.plus_hom_ext + def category_theory.grothendieck_topology.plus_lift + theorem category_theory.grothendieck_topology.plus_lift_unique + theorem category_theory.grothendieck_topology.to_plus_plus_lift Added src/category_theory/sites/sheafification.lean + theorem category_theory.grothendieck_topology.is_iso_to_sheafify + def category_theory.grothendieck_topology.iso_sheafify + theorem category_theory.grothendieck_topology.plus.eq_mk_iff_exists + theorem category_theory.grothendieck_topology.plus.exists_of_sep + theorem category_theory.grothendieck_topology.plus.exists_rep + theorem category_theory.grothendieck_topology.plus.inj_of_sep + theorem category_theory.grothendieck_topology.plus.is_sheaf_of_sep + theorem category_theory.grothendieck_topology.plus.is_sheaf_plus_plus + def category_theory.grothendieck_topology.plus.meq_of_sep + def category_theory.grothendieck_topology.plus.mk + theorem category_theory.grothendieck_topology.plus.res_mk_eq_mk_pullback + theorem category_theory.grothendieck_topology.plus.sep + theorem category_theory.grothendieck_topology.plus.to_plus_apply + theorem category_theory.grothendieck_topology.plus.to_plus_eq_mk + theorem category_theory.grothendieck_topology.plus.to_plus_mk + def category_theory.grothendieck_topology.sheafification + theorem category_theory.grothendieck_topology.sheafification_obj + def category_theory.grothendieck_topology.sheafify + theorem category_theory.grothendieck_topology.sheafify_hom_ext + def category_theory.grothendieck_topology.sheafify_lift + theorem category_theory.grothendieck_topology.sheafify_lift_unique + def category_theory.grothendieck_topology.to_sheafification + theorem category_theory.grothendieck_topology.to_sheafification_app + def category_theory.grothendieck_topology.to_sheafify + theorem category_theory.grothendieck_topology.to_sheafify_sheafify_lift + theorem category_theory.meq.condition + def category_theory.meq.equiv + theorem category_theory.meq.equiv_apply + theorem category_theory.meq.equiv_symm_eq_apply + theorem category_theory.meq.ext + def category_theory.meq.mk + theorem category_theory.meq.mk_apply + def category_theory.meq.pullback + theorem category_theory.meq.pullback_apply + theorem category_theory.meq.pullback_refine + def category_theory.meq.refine + theorem category_theory.meq.refine_apply + def category_theory.meq + def category_theory.presheaf_to_Sheaf + def category_theory.sheafification_adjunction + def category_theory.sheafification_iso + theorem category_theory.sheafification_iso_hom + theorem category_theory.sheafification_iso_inv 2021-11-15 04:19:49 62992fa feat(analysis/inner_product_space/spectrum): more concrete diagonalization theorem (#10317) This is a second version of the diagonalization theorem for self-adjoint operators on finite-dimensional inner product spaces, stating that a self-adjoint operator admits an orthonormal basis of eigenvectors, and deducing the standard consequences (when expressed with respect to this basis the operator acts diagonally). I have also updated `undergrad.yaml` and `overview.yaml` to cover the diagonalization theorem and other things proved in the library about Hilbert spaces. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/inner_product_space/pi_L2.lean + theorem basis.coe_isometry_euclidean_of_orthonormal + theorem basis.coe_isometry_euclidean_of_orthonormal_symm Modified src/analysis/inner_product_space/spectrum.lean + theorem is_self_adjoint.apply_eigenvector_basis + theorem is_self_adjoint.diagonalization_basis_apply_self_apply + theorem is_self_adjoint.diagonalization_basis_symm_apply + theorem is_self_adjoint.eigenvector_basis_orthonormal + theorem is_self_adjoint.has_eigenvector_eigenvector_basis 2021-11-14 20:27:17 0c8f53e feat(linear_algebra/trace): add lemmas about trace of linear maps (#10279) Lemmas for the trace of the identity and the trace of a conjugation ESTIMATED CHANGES Modified src/linear_algebra/trace.lean + theorem linear_map.trace_conj' + theorem linear_map.trace_conj + theorem linear_map.trace_one 2021-11-14 18:03:48 1b51fe0 feat(linear_algebra/alternating): add alternating_map.comp_linear_map (#10314) ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.add_comp_linear_map + theorem alternating_map.coe_comp_linear_map + def alternating_map.comp_linear_map + theorem alternating_map.comp_linear_map_apply + theorem alternating_map.comp_linear_map_zero + theorem alternating_map.zero_comp_linear_map 2021-11-14 17:03:13 8728e85 feat(measure_theory): drop some unneeded assumptions (#10319) Prove that for a nontrivial countably generated filter there exists a sequence that converges to this filter. Use this lemma to drop some assumptions. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean +/- theorem measurable_of_tendsto_metric' +/- theorem measurable_of_tendsto_nnreal' Modified src/order/filter/at_top_bot.lean + theorem filter.exists_seq_tendsto 2021-11-14 15:22:16 5307dc1 feat(data/equiv/module): add module.to_module_End (#10300) The new definitions are: * `distrib_mul_action.to_module_End` * `distrib_mul_action.to_module_aut` * `module.to_module_End` Everything else is a move. This also moves the group structure on linear_equiv earlier in the import heirarchy. This is more consistent with where it is for `linear_map`. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + def distrib_mul_action.to_linear_map + def distrib_mul_action.to_module_End + def module.to_module_End Modified src/data/equiv/module.lean - def distrib_mul_action.to_linear_map + def distrib_mul_action.to_module_aut + def linear_equiv.automorphism_group.to_linear_map_monoid_hom Modified src/linear_algebra/basic.lean - def linear_equiv.automorphism_group.to_linear_map_monoid_hom 2021-11-14 15:22:15 299af47 chore(data/fin/basic): move tuple stuff to a new file (#10295) There are almost 600 lines of tuple stuff, which is definitely sufficient to justify a standalone file. The author information has been guessed from the git history. Floris is responsible for `cons` and `tail` which came first in #1294, Chris added find, and Yury and Sébastien were involved all over the place. This is simply a cut-and-paste job, with the exception of the new module docstring which has been merged with the docstring for the tuple subheading. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/data/fin/basic.lean - def fin.append - theorem fin.comp_cons - theorem fin.comp_init - theorem fin.comp_snoc - theorem fin.comp_tail - def fin.cons - theorem fin.cons_le - theorem fin.cons_self_tail - theorem fin.cons_snoc_eq_snoc_cons - theorem fin.cons_succ - theorem fin.cons_update - theorem fin.cons_zero - theorem fin.eq_insert_nth_iff - theorem fin.fin_append_apply_zero - def fin.find - theorem fin.find_eq_none_iff - theorem fin.find_eq_some_iff - theorem fin.find_min' - theorem fin.find_min - theorem fin.find_spec - theorem fin.forall_iff_succ_above - def fin.init - theorem fin.init_def - theorem fin.init_snoc - theorem fin.init_update_cast_succ - theorem fin.init_update_last - def fin.insert_nth - theorem fin.insert_nth_add - theorem fin.insert_nth_apply_above - theorem fin.insert_nth_apply_below - theorem fin.insert_nth_apply_same - theorem fin.insert_nth_apply_succ_above - theorem fin.insert_nth_binop - theorem fin.insert_nth_comp_succ_above - theorem fin.insert_nth_div - theorem fin.insert_nth_eq_iff - theorem fin.insert_nth_last' - theorem fin.insert_nth_last - theorem fin.insert_nth_le_iff - theorem fin.insert_nth_mem_Icc - theorem fin.insert_nth_mul - theorem fin.insert_nth_sub - theorem fin.insert_nth_sub_same - theorem fin.insert_nth_zero' - theorem fin.insert_nth_zero - theorem fin.insert_nth_zero_right - theorem fin.is_some_find_iff - theorem fin.le_cons - theorem fin.le_insert_nth_iff - theorem fin.mem_find_iff - theorem fin.mem_find_of_unique - theorem fin.nat_find_mem_find - theorem fin.preimage_insert_nth_Icc_of_mem - theorem fin.preimage_insert_nth_Icc_of_not_mem - theorem fin.range_cons - def fin.snoc - theorem fin.snoc_cast_succ - theorem fin.snoc_init_self - theorem fin.snoc_last - theorem fin.snoc_update - def fin.succ_above_cases - theorem fin.succ_above_cases_eq_insert_nth - def fin.tail - theorem fin.tail_cons - theorem fin.tail_def - theorem fin.tail_init_eq_init_tail - theorem fin.tail_update_succ - theorem fin.tail_update_zero - theorem fin.tuple0_le - theorem fin.update_cons_zero - theorem fin.update_snoc_last Added src/data/fin/tuple.lean + def fin.append + theorem fin.comp_cons + theorem fin.comp_init + theorem fin.comp_snoc + theorem fin.comp_tail + def fin.cons + theorem fin.cons_le + theorem fin.cons_self_tail + theorem fin.cons_snoc_eq_snoc_cons + theorem fin.cons_succ + theorem fin.cons_update + theorem fin.cons_zero + theorem fin.eq_insert_nth_iff + theorem fin.fin_append_apply_zero + def fin.find + theorem fin.find_eq_none_iff + theorem fin.find_eq_some_iff + theorem fin.find_min' + theorem fin.find_min + theorem fin.find_spec + theorem fin.forall_iff_succ_above + def fin.init + theorem fin.init_def + theorem fin.init_snoc + theorem fin.init_update_cast_succ + theorem fin.init_update_last + def fin.insert_nth + theorem fin.insert_nth_add + theorem fin.insert_nth_apply_above + theorem fin.insert_nth_apply_below + theorem fin.insert_nth_apply_same + theorem fin.insert_nth_apply_succ_above + theorem fin.insert_nth_binop + theorem fin.insert_nth_comp_succ_above + theorem fin.insert_nth_div + theorem fin.insert_nth_eq_iff + theorem fin.insert_nth_last' + theorem fin.insert_nth_last + theorem fin.insert_nth_le_iff + theorem fin.insert_nth_mem_Icc + theorem fin.insert_nth_mul + theorem fin.insert_nth_sub + theorem fin.insert_nth_sub_same + theorem fin.insert_nth_zero' + theorem fin.insert_nth_zero + theorem fin.insert_nth_zero_right + theorem fin.is_some_find_iff + theorem fin.le_cons + theorem fin.le_insert_nth_iff + theorem fin.mem_find_iff + theorem fin.mem_find_of_unique + theorem fin.nat_find_mem_find + theorem fin.preimage_insert_nth_Icc_of_mem + theorem fin.preimage_insert_nth_Icc_of_not_mem + theorem fin.range_cons + def fin.snoc + theorem fin.snoc_cast_succ + theorem fin.snoc_init_self + theorem fin.snoc_last + theorem fin.snoc_update + def fin.succ_above_cases + theorem fin.succ_above_cases_eq_insert_nth + def fin.tail + theorem fin.tail_cons + theorem fin.tail_def + theorem fin.tail_init_eq_init_tail + theorem fin.tail_update_succ + theorem fin.tail_update_zero + theorem fin.tuple0_le + theorem fin.update_cons_zero + theorem fin.update_snoc_last Modified src/data/fin/vec_notation.lean Modified src/linear_algebra/multilinear/basic.lean Modified src/topology/constructions.lean 2021-11-14 15:22:14 7dc33bf feat(data/nat/basic): Some `nat.find` lemmas (#10263) This proves `nat.find_le` and `nat.find_add` and renames the current `nat.find_le` to `nat.find_mono`. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.find_add +/- theorem nat.find_le + theorem nat.find_mono Modified src/ring_theory/multiplicity.lean 2021-11-14 13:46:33 dd72ebc feat(data/list/big_operators): When `list.sum` is strictly positive (#10282) ESTIMATED CHANGES Modified src/data/list/big_operators.lean + theorem list.one_lt_prod_of_one_lt 2021-11-14 09:32:09 bca8278 feat(algebra/lie/basic): add missing `@[ext]` and `@[simp]` lemmas (#10316) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean - theorem lie_equiv.bijective + theorem lie_equiv.coe_injective + theorem lie_equiv.coe_linear_equiv_injective - theorem lie_equiv.coe_to_lie_equiv + theorem lie_equiv.coe_to_lie_hom + theorem lie_equiv.ext - theorem lie_equiv.injective + theorem lie_equiv.self_trans_symm - theorem lie_equiv.surjective + theorem lie_equiv.symm_trans - theorem lie_equiv.symm_trans_apply + theorem lie_equiv.symm_trans_self + theorem lie_equiv.to_linear_equiv_mk + theorem lie_module_equiv.self_trans_symm + theorem lie_module_equiv.symm_trans - theorem lie_module_equiv.symm_trans_apply + theorem lie_module_equiv.symm_trans_self Modified src/data/equiv/module.lean + theorem linear_equiv.coe_injective 2021-11-13 21:34:57 3b5edd0 refactor(set_theory/cardinal_ordinal): use TC assumptions instead of inequalities (#10313) Assume `[fintype α]` or `[infinite α]` instead of `#α < ω` or `ω ≤ #α`. ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.extend_function_finite + theorem cardinal.mk_bounded_set_le_of_infinite - theorem cardinal.mk_bounded_set_le_of_omega_le +/- theorem cardinal.mk_compl_eq_mk_compl_finite +/- theorem cardinal.mk_compl_eq_mk_compl_finite_lift +/- theorem cardinal.mk_compl_eq_mk_compl_finite_same +/- theorem cardinal.mk_compl_eq_mk_compl_infinite + theorem cardinal.mk_compl_finset_of_infinite - theorem cardinal.mk_compl_finset_of_omega_le + theorem cardinal.mk_compl_of_infinite - theorem cardinal.mk_compl_of_omega_le +/- theorem cardinal.powerlt_omega 2021-11-13 19:05:20 d8c8725 feat(ring_theory,algebraic_geometry): Miscellaneous lemmas/def/typo corrections (#10307) Split out from #9802 since I'm aiming at more general version. ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/prime_spectrum/basic.lean + def local_ring.closed_point + theorem local_ring.local_hom_iff_comap_closed_point + theorem prime_spectrum.is_basis_basic_opens Modified src/algebraic_geometry/structure_sheaf.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/structured_arrow.lean Modified src/ring_theory/ideal/local_ring.lean + theorem local_ring.local_hom_tfae Modified src/ring_theory/localization.lean + theorem is_localization.iso_comp Modified src/topology/sheaves/sheaf_condition/sites.lean + theorem Top.opens.cover_dense_iff_is_basis + theorem Top.opens.cover_dense_induced_functor + theorem Top.sheaf.extend_hom_app + theorem Top.sheaf.hom_ext + def Top.sheaf.restrict_hom_equiv_hom 2021-11-13 17:25:11 ca56c5a feat(measure_theory/group): define a few `measurable_equiv`s (#10299) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem equiv.inv_symm₀ Added src/measure_theory/group/measurable_equiv.lean + theorem measurable_embedding_const_smul + theorem measurable_embedding_const_smul₀ + theorem measurable_embedding_mul_left + theorem measurable_embedding_mul_left₀ + theorem measurable_embedding_mul_right + theorem measurable_embedding_mul_right₀ + theorem measurable_equiv.coe_mul_left + theorem measurable_equiv.coe_mul_left₀ + theorem measurable_equiv.coe_mul_right + theorem measurable_equiv.coe_mul_right₀ + theorem measurable_equiv.coe_smul₀ + def measurable_equiv.inv + def measurable_equiv.inv₀ + def measurable_equiv.mul_left + def measurable_equiv.mul_left₀ + def measurable_equiv.mul_right + def measurable_equiv.mul_right₀ + def measurable_equiv.smul + def measurable_equiv.smul₀ + theorem measurable_equiv.symm_inv + theorem measurable_equiv.symm_inv₀ + theorem measurable_equiv.symm_mul_left + theorem measurable_equiv.symm_mul_left₀ + theorem measurable_equiv.symm_mul_right + theorem measurable_equiv.symm_mul_right₀ + theorem measurable_equiv.symm_smul + theorem measurable_equiv.symm_smul₀ + theorem measurable_equiv.to_equiv_mul_left + theorem measurable_equiv.to_equiv_mul_left₀ + theorem measurable_equiv.to_equiv_mul_right + theorem measurable_equiv.to_equiv_mul_right₀ 2021-11-13 16:06:16 3578403 feat(*/{group,mul}_action): more lemmas (#10308) * add several lemmas about orbits and pointwise scalar multiplication; * generalize `mul_action.orbit.mul_action` to a monoid action; * more lemmas about pretransitive actions, use `to_additive` more; * add dot notation lemmas `is_open.smul` and `is_closed.smul`. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean - theorem add_action.exists_vadd_eq + theorem mul_action.maps_to_smul_orbit +/- theorem mul_action.mem_orbit_smul + theorem mul_action.orbit_eq_univ + theorem mul_action.orbit_smul + theorem mul_action.orbit_smul_subset +/- theorem mul_action.smul_mem_orbit_smul + theorem mul_action.smul_orbit + theorem mul_action.smul_orbit_subset + theorem mul_action.surjective_smul Modified src/topology/algebra/mul_action.lean + theorem is_closed.smul + theorem is_open.smul + theorem smul_closure_orbit_subset + theorem smul_closure_subset 2021-11-13 14:24:59 b91d344 chore(data/equiv/*): rename `trans_symm` and `symm_trans` to `self_trans_symm` and `symm_trans_self`. (#10309) This frees up `symm_trans` to state `(a.trans b).symm = a.symm.trans b.symm`. These names are consistent with `self_comp_symm` and `symm_comp_self`. ESTIMATED CHANGES Modified src/analysis/normed_space/affine_isometry.lean + theorem affine_isometry_equiv.self_trans_symm - theorem affine_isometry_equiv.symm_trans + theorem affine_isometry_equiv.symm_trans_self - theorem affine_isometry_equiv.trans_symm Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.self_trans_symm - theorem linear_isometry_equiv.symm_trans + theorem linear_isometry_equiv.symm_trans_self - theorem linear_isometry_equiv.trans_symm Modified src/data/equiv/basic.lean + theorem equiv.self_trans_symm - theorem equiv.symm_trans + theorem equiv.symm_trans_self - theorem equiv.trans_symm Modified src/data/equiv/module.lean + theorem linear_equiv.self_trans_symm - theorem linear_equiv.symm_trans + theorem linear_equiv.symm_trans_self - theorem linear_equiv.trans_symm Modified src/data/equiv/ring.lean + theorem ring_equiv.self_trans_symm - theorem ring_equiv.symm_trans + theorem ring_equiv.symm_trans_self - theorem ring_equiv.trans_symm Modified src/data/finsupp/basic.lean Modified src/data/pequiv.lean + theorem pequiv.self_trans_symm - theorem pequiv.symm_trans + theorem pequiv.symm_trans_self - theorem pequiv.trans_symm Modified src/field_theory/splitting_field.lean Modified src/geometry/manifold/diffeomorph.lean + theorem diffeomorph.self_trans_symm - theorem diffeomorph.symm_trans + theorem diffeomorph.symm_trans_self - theorem diffeomorph.trans_symm Modified src/group_theory/perm/basic.lean - theorem equiv.perm.inv_trans + theorem equiv.perm.inv_trans_self +/- theorem equiv.perm.mul_symm + theorem equiv.perm.self_trans_inv +/- theorem equiv.perm.symm_mul - theorem equiv.perm.trans_inv Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.self_trans_symm - theorem affine_equiv.symm_trans + theorem affine_equiv.symm_trans_self - theorem affine_equiv.trans_symm Modified src/linear_algebra/determinant.lean 2021-11-13 10:27:54 869cb32 chore(measure_theory/probability_mass_function): Refactor the `pmf` file into a definitions file and a constructions file (#10298) ESTIMATED CHANGES Added src/measure_theory/probability_mass_function/basic.lean + theorem pmf.apply_eq_zero_iff + def pmf.bind + theorem pmf.bind_apply + theorem pmf.bind_bind + theorem pmf.bind_comm + theorem pmf.bind_pure + theorem pmf.coe_bind_apply + theorem pmf.coe_le_one + theorem pmf.has_sum_coe_one + theorem pmf.mem_support_iff + theorem pmf.mem_support_pure_iff + def pmf.pure + theorem pmf.pure_apply + theorem pmf.pure_bind + theorem pmf.summable_coe + def pmf.support + def pmf.to_measure + theorem pmf.to_measure_apply' + theorem pmf.to_measure_apply + theorem pmf.to_measure_apply_eq_to_outer_measure_apply + theorem pmf.to_measure_apply_finset + theorem pmf.to_measure_apply_fintype + theorem pmf.to_measure_apply_of_finite + def pmf.to_outer_measure + theorem pmf.to_outer_measure_apply' + theorem pmf.to_outer_measure_apply + theorem pmf.to_outer_measure_apply_eq_zero_iff + theorem pmf.to_outer_measure_apply_finset + theorem pmf.to_outer_measure_apply_fintype + theorem pmf.to_outer_measure_apply_le_to_measure_apply + theorem pmf.to_outer_measure_caratheodory + theorem pmf.tsum_coe + def {u} Renamed src/measure_theory/probability_mass_function.lean to src/measure_theory/probability_mass_function/constructions.lean - def pmf.bind - theorem pmf.bind_apply - theorem pmf.bind_bind - theorem pmf.bind_comm - theorem pmf.bind_pure - theorem pmf.coe_bind_apply - theorem pmf.coe_le_one - theorem pmf.has_sum_coe_one - theorem pmf.mem_support_iff - theorem pmf.mem_support_pure_iff - def pmf.pure - theorem pmf.pure_apply - theorem pmf.pure_bind - theorem pmf.summable_coe - def pmf.support - def pmf.to_measure - theorem pmf.to_measure_apply' - theorem pmf.to_measure_apply - theorem pmf.to_measure_apply_eq_to_outer_measure_apply - theorem pmf.to_measure_apply_finset - theorem pmf.to_measure_apply_fintype - theorem pmf.to_measure_apply_of_finite - def pmf.to_outer_measure - theorem pmf.to_outer_measure_apply' - theorem pmf.to_outer_measure_apply - theorem pmf.to_outer_measure_apply_eq_zero_iff - theorem pmf.to_outer_measure_apply_finset - theorem pmf.to_outer_measure_apply_fintype - theorem pmf.to_outer_measure_apply_le_to_measure_apply - theorem pmf.to_outer_measure_caratheodory - theorem pmf.tsum_coe - def {u} 2021-11-13 09:09:36 a7e38a0 feat(linear_algebra/bilinear_form): add is_refl and ortho_sym for alt_bilin_form (#10304) Lemma `is_refl` shows that every alternating bilinear form is reflexive. Lemma `ortho_sym` shows that being orthogonal with respect to an alternating bilinear form is symmetric. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + theorem alt_bilin_form.is_refl + theorem alt_bilin_form.ortho_sym 2021-11-13 02:46:06 a232366 feat(analysis/inner_product_space/projection): orthonormal basis subordinate to an `orthogonal_family` (#10208) In a finite-dimensional inner product space of `E`, there exists an orthonormal basis subordinate to a given direct sum decomposition into an `orthogonal_family` of subspaces `E`. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean + theorem direct_sum.submodule_is_internal.collected_basis_coe + theorem direct_sum.submodule_is_internal.collected_basis_mem Modified src/analysis/inner_product_space/basic.lean + theorem direct_sum.submodule_is_internal.collected_basis_orthonormal + theorem orthogonal_family.orthonormal_sigma_orthonormal Modified src/analysis/inner_product_space/projection.lean +/- theorem coe_orthonormal_basis + def direct_sum.submodule_is_internal.sigma_orthonormal_basis_index_equiv + def direct_sum.submodule_is_internal.subordinate_orthonormal_basis + def direct_sum.submodule_is_internal.subordinate_orthonormal_basis_index + theorem direct_sum.submodule_is_internal.subordinate_orthonormal_basis_orthonormal + theorem direct_sum.submodule_is_internal.subordinate_orthonormal_basis_subordinate +/- def fin_orthonormal_basis +/- theorem fin_orthonormal_basis_orthonormal +/- def orthonormal_basis +/- def orthonormal_basis_index +/- theorem orthonormal_basis_orthonormal Modified src/data/finsupp/to_dfinsupp.lean + theorem sigma_finsupp_equiv_dfinsupp_single 2021-11-12 23:21:30 8bb0b6f feat(category_theory/sites/plus): If P is a sheaf, then the map from P to P^+ is an isomorphism. (#10297) Also adds some simple results about (co)limits where the morphisms in the diagram are isomorphisms. ESTIMATED CHANGES Modified src/category_theory/category/preorder.lean Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.cocone_of_diagram_initial + def category_theory.limits.colimit_of_diagram_initial + def category_theory.limits.colimit_of_initial + def category_theory.limits.cone_of_diagram_terminal + def category_theory.limits.is_initial_bot + theorem category_theory.limits.is_iso_ι_of_is_initial + theorem category_theory.limits.is_iso_π_of_is_terminal + def category_theory.limits.is_terminal_top + def category_theory.limits.limit_of_diagram_terminal + def category_theory.limits.limit_of_terminal Modified src/category_theory/sites/plus.lean + theorem category_theory.grothendieck_topology.is_iso_to_plus_of_is_sheaf 2021-11-12 21:42:51 55534c4 feat(data/nat/basic): recursion for set nat (#10273) Adding a special case of `nat.le_rec_on` where the predicate is membership of a subset. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.set_eq_univ + theorem nat.set_induction + theorem nat.set_induction_bounded 2021-11-12 20:02:20 6afda88 feat(analysis/inner_product_space/spectrum): diagonalization of self-adjoint endomorphisms (finite dimension) (#9995) Diagonalization of a self-adjoint endomorphism `T` of a finite-dimensional inner product space `E` over either `ℝ` or `ℂ`: construct a linear isometry `T.diagonalization` from `E` to the direct sum of `T`'s eigenspaces, such that `T` conjugated by `T.diagonalization` is diagonal: ```lean lemma diagonalization_apply_self_apply (v : E) (μ : eigenvalues T) : hT.diagonalization (T v) μ = (μ : 𝕜) • hT.diagonalization v μ ``` ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem is_self_adjoint.restrict_invariant + theorem orthogonal_family.comp Modified src/analysis/inner_product_space/pi_L2.lean + theorem direct_sum.submodule_is_internal.isometry_L2_of_orthogonal_family_symm_apply Modified src/analysis/inner_product_space/projection.lean +/- theorem orthogonal_family.submodule_is_internal_iff Modified src/analysis/inner_product_space/rayleigh.lean + theorem is_self_adjoint.subsingleton_of_no_eigenvalue_finite_dimensional Added src/analysis/inner_product_space/spectrum.lean + theorem is_self_adjoint.conj_eigenvalue_eq_self + theorem is_self_adjoint.diagonalization_apply_self_apply + theorem is_self_adjoint.diagonalization_symm_apply + theorem is_self_adjoint.direct_sum_submodule_is_internal + theorem is_self_adjoint.invariant_orthogonal_eigenspace + theorem is_self_adjoint.orthogonal_family_eigenspaces' + theorem is_self_adjoint.orthogonal_family_eigenspaces + theorem is_self_adjoint.orthogonal_supr_eigenspaces + theorem is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot' + theorem is_self_adjoint.orthogonal_supr_eigenspaces_eq_bot + theorem is_self_adjoint.orthogonal_supr_eigenspaces_invariant Modified src/data/dfinsupp.lean + theorem dfinsupp.prod_eq_prod_fintype Modified src/linear_algebra/basic.lean + theorem linear_map.infi_invariant Modified src/order/complete_lattice.lean + theorem infi_ne_top_subtype + theorem supr_ne_bot_subtype 2021-11-12 17:48:18 f0a9849 feat(category_theory/sites/sheaf): Add sheaf conditions in terms of multiforks/multiequalizers. (#10294) Another PR toward sheafification. ESTIMATED CHANGES Modified src/category_theory/sites/sheaf.lean + def category_theory.presheaf.is_limit_of_is_sheaf + def category_theory.presheaf.is_sheaf.amalgamate + theorem category_theory.presheaf.is_sheaf.amalgamate_map + theorem category_theory.presheaf.is_sheaf.hom_ext + theorem category_theory.presheaf.is_sheaf_iff_multiequalizer + theorem category_theory.presheaf.is_sheaf_iff_multifork 2021-11-12 17:08:23 adb5c2d chore(analysis/special_functions/trigonometric/complex): put results about derivatives into a new file (#10156) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/arctan.lean Modified src/analysis/special_functions/trigonometric/complex.lean - theorem complex.continuous_at_tan - theorem complex.deriv_tan - theorem complex.differentiable_at_tan - theorem complex.has_deriv_at_tan - theorem complex.has_strict_deriv_at_tan - theorem complex.tendsto_abs_tan_at_top - theorem complex.tendsto_abs_tan_of_cos_eq_zero - theorem complex.times_cont_diff_at_tan Added src/analysis/special_functions/trigonometric/complex_deriv.lean + theorem complex.continuous_at_tan + theorem complex.deriv_tan + theorem complex.differentiable_at_tan + theorem complex.has_deriv_at_tan + theorem complex.has_strict_deriv_at_tan + theorem complex.tendsto_abs_tan_at_top + theorem complex.tendsto_abs_tan_of_cos_eq_zero + theorem complex.times_cont_diff_at_tan 2021-11-12 16:30:34 6262165 feat(analysis/normed_space/continuous_affine_map): isometry from space of continuous affine maps to product of codomain with space of continuous linear maps (#10201) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/normed_space/continuous_affine_map.lean + theorem continuous_affine_map.add_cont_linear + theorem continuous_affine_map.coe_cont_linear +/- theorem continuous_affine_map.coe_linear_eq_coe_cont_linear + theorem continuous_affine_map.comp_cont_linear + theorem continuous_affine_map.decomp + theorem continuous_affine_map.neg_cont_linear + theorem continuous_affine_map.norm_comp_le + theorem continuous_affine_map.norm_cont_linear_le + theorem continuous_affine_map.norm_def + theorem continuous_affine_map.norm_eq + theorem continuous_affine_map.norm_image_zero_le + theorem continuous_affine_map.smul_cont_linear + theorem continuous_affine_map.sub_cont_linear + theorem continuous_affine_map.to_affine_map_cont_linear + theorem continuous_affine_map.to_const_prod_continuous_linear_map_fst + theorem continuous_affine_map.to_const_prod_continuous_linear_map_snd + theorem continuous_affine_map.zero_cont_linear Modified src/topology/algebra/continuous_affine_map.lean + theorem continuous_affine_map.add_apply + theorem continuous_affine_map.coe_add + theorem continuous_affine_map.coe_neg + theorem continuous_affine_map.coe_smul + theorem continuous_affine_map.coe_sub + theorem continuous_affine_map.coe_zero + theorem continuous_affine_map.neg_apply + theorem continuous_affine_map.smul_apply + theorem continuous_affine_map.sub_apply + theorem continuous_affine_map.zero_apply + theorem continuous_linear_map.coe_to_continuous_affine_map + def continuous_linear_map.to_continuous_affine_map + theorem continuous_linear_map.to_continuous_affine_map_map_zero 2021-11-12 15:38:34 b9f7b4d fix(algebra/graded_monoid): correct nonexistent names in tactic defaults (#10293) These were left by a bad rename by me in the past, and resulted in the default values not actually working. ESTIMATED CHANGES Modified src/algebra/graded_monoid.lean 2021-11-12 15:38:33 d7b5ffa chore(linear_algebra/multilinear): add const_of_is_empty (#10291) This is extracted from `pi_tensor_product.is_empty_equiv` ESTIMATED CHANGES Modified src/linear_algebra/multilinear/basic.lean + def multilinear_map.const_of_is_empty Modified src/linear_algebra/pi_tensor_product.lean 2021-11-12 15:38:31 c5027c9 doc(field_theory/separable): typo (#10290) ESTIMATED CHANGES Modified src/field_theory/separable.lean 2021-11-12 15:04:38 6cd6320 feat(group_theory/complement): `is_complement'.sup_eq_top` (#10230) If `H` and `K` are complementary subgroups, then `H ⊔ K = ⊤`. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.is_complement'.is_compl + theorem subgroup.is_complement'.sup_eq_top 2021-11-12 12:24:46 07be904 doc(README): add list of emeritus maintainers (#10288) ESTIMATED CHANGES Modified README.md 2021-11-12 11:49:22 b51335c feat(category_theory/sites/plus): `P⁺` for a presheaf `P`. (#10284) This file adds the construction of `P⁺`, for a presheaf `P : Cᵒᵖ ⥤ D`, whenever `C` has a Grothendieck topology `J` and `D` has the appropriate (co)limits. Later, we will show that `P⁺⁺` is the sheafification of `P`, under certain additional hypotheses on `D`. See https://stacks.math.columbia.edu/tag/00W1 ESTIMATED CHANGES Modified src/category_theory/sites/grothendieck.lean + def category_theory.grothendieck_topology.cover.arrow.base + def category_theory.grothendieck_topology.cover.arrow.map + structure category_theory.grothendieck_topology.cover.arrow + theorem category_theory.grothendieck_topology.cover.coe_fun_coe + theorem category_theory.grothendieck_topology.cover.coe_pullback + theorem category_theory.grothendieck_topology.cover.condition + theorem category_theory.grothendieck_topology.cover.ext + def category_theory.grothendieck_topology.cover.index + def category_theory.grothendieck_topology.cover.multifork + def category_theory.grothendieck_topology.cover.pullback + def category_theory.grothendieck_topology.cover.pullback_comp + def category_theory.grothendieck_topology.cover.pullback_id + def category_theory.grothendieck_topology.cover.relation.base + theorem category_theory.grothendieck_topology.cover.relation.base_fst + theorem category_theory.grothendieck_topology.cover.relation.base_snd + def category_theory.grothendieck_topology.cover.relation.fst + def category_theory.grothendieck_topology.cover.relation.map + theorem category_theory.grothendieck_topology.cover.relation.map_fst + theorem category_theory.grothendieck_topology.cover.relation.map_snd + def category_theory.grothendieck_topology.cover.relation.snd + structure category_theory.grothendieck_topology.cover.relation + def category_theory.grothendieck_topology.cover.to_multiequalizer + def category_theory.grothendieck_topology.cover + def category_theory.grothendieck_topology.pullback + def category_theory.grothendieck_topology.pullback_comp + def category_theory.grothendieck_topology.pullback_id Added src/category_theory/sites/plus.lean + def category_theory.grothendieck_topology.diagram + def category_theory.grothendieck_topology.diagram_pullback + def category_theory.grothendieck_topology.plus_functor + def category_theory.grothendieck_topology.plus_map + theorem category_theory.grothendieck_topology.plus_map_to_plus + def category_theory.grothendieck_topology.plus_obj + def category_theory.grothendieck_topology.to_plus + def category_theory.grothendieck_topology.to_plus_nat_trans 2021-11-12 10:27:58 e679093 feat(measure_theory): define `measurable_space` instance on a quotient (#10275) ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem measurable_from_quotient + theorem measurable_quot_mk + theorem measurable_quotient_mk' + theorem measurable_quotient_mk + theorem measurable_set_quotient + theorem quotient_group.measurable_coe + theorem quotient_group.measurable_from_quotient 2021-11-12 09:37:57 c45e70a chore(analysis/special_functions/pow): put lemmas about derivatives into a new file (#10153) In order to keep results about continuity of the power function in the original file, we prove some continuity results directly (these were previously proved using derivatives). ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/special_functions/pow.lean - theorem complex.has_fderiv_at_cpow - theorem complex.has_strict_deriv_at_const_cpow - theorem complex.has_strict_deriv_at_cpow_const - theorem complex.has_strict_fderiv_at_cpow' - theorem complex.has_strict_fderiv_at_cpow + theorem continuous_at_const_cpow' + theorem continuous_at_const_cpow + theorem continuous_at_cpow + theorem continuous_at_cpow_const + theorem cpow_eq_nhds' + theorem cpow_eq_nhds - theorem deriv_rpow_const - theorem deriv_within_rpow_const - theorem differentiable.rpow - theorem differentiable.rpow_const - theorem differentiable_at.const_cpow - theorem differentiable_at.cpow - theorem differentiable_at.rpow - theorem differentiable_at.rpow_const - theorem differentiable_on.rpow - theorem differentiable_on.rpow_const - theorem differentiable_within_at.const_cpow - theorem differentiable_within_at.cpow - theorem differentiable_within_at.rpow - theorem differentiable_within_at.rpow_const - theorem has_deriv_at.const_cpow - theorem has_deriv_at.cpow - theorem has_deriv_at.cpow_const - theorem has_deriv_at.rpow - theorem has_deriv_at.rpow_const - theorem has_deriv_within_at.const_cpow - theorem has_deriv_within_at.cpow - theorem has_deriv_within_at.cpow_const - theorem has_deriv_within_at.rpow - theorem has_deriv_within_at.rpow_const - theorem has_fderiv_at.const_cpow - theorem has_fderiv_at.const_rpow - theorem has_fderiv_at.cpow - theorem has_fderiv_at.rpow - theorem has_fderiv_at.rpow_const - theorem has_fderiv_within_at.const_cpow - theorem has_fderiv_within_at.const_rpow - theorem has_fderiv_within_at.cpow - theorem has_fderiv_within_at.rpow - theorem has_fderiv_within_at.rpow_const - theorem has_strict_deriv_at.const_cpow - theorem has_strict_deriv_at.cpow - theorem has_strict_deriv_at.cpow_const - theorem has_strict_deriv_at.rpow - theorem has_strict_fderiv_at.const_cpow - theorem has_strict_fderiv_at.const_rpow - theorem has_strict_fderiv_at.cpow - theorem has_strict_fderiv_at.rpow - theorem has_strict_fderiv_at.rpow_const + theorem real.continuous_at_const_rpow' + theorem real.continuous_at_const_rpow - theorem real.deriv_rpow_const' - theorem real.deriv_rpow_const - theorem real.differentiable_at_rpow_of_ne - theorem real.differentiable_rpow_const - theorem real.has_deriv_at_rpow_const - theorem real.has_strict_deriv_at_const_rpow - theorem real.has_strict_deriv_at_const_rpow_of_neg - theorem real.has_strict_deriv_at_rpow_const - theorem real.has_strict_deriv_at_rpow_const_of_ne - theorem real.has_strict_fderiv_at_rpow_of_neg - theorem real.has_strict_fderiv_at_rpow_of_pos + theorem real.rpow_eq_nhds_of_neg + theorem real.rpow_eq_nhds_of_pos - theorem real.times_cont_diff_at_rpow_const - theorem real.times_cont_diff_at_rpow_const_of_le - theorem real.times_cont_diff_at_rpow_const_of_ne - theorem real.times_cont_diff_at_rpow_of_ne - theorem real.times_cont_diff_rpow_const_of_le - theorem tendsto_one_plus_div_pow_exp - theorem tendsto_one_plus_div_rpow_exp - theorem times_cont_diff.rpow - theorem times_cont_diff.rpow_const_of_le - theorem times_cont_diff.rpow_const_of_ne - theorem times_cont_diff_at.rpow - theorem times_cont_diff_at.rpow_const_of_le - theorem times_cont_diff_at.rpow_const_of_ne - theorem times_cont_diff_on.rpow - theorem times_cont_diff_on.rpow_const_of_le - theorem times_cont_diff_on.rpow_const_of_ne - theorem times_cont_diff_within_at.rpow - theorem times_cont_diff_within_at.rpow_const_of_le - theorem times_cont_diff_within_at.rpow_const_of_ne + theorem zero_cpow_eq_nhds Added src/analysis/special_functions/pow_deriv.lean + theorem complex.has_fderiv_at_cpow + theorem complex.has_strict_deriv_at_const_cpow + theorem complex.has_strict_deriv_at_cpow_const + theorem complex.has_strict_fderiv_at_cpow' + theorem complex.has_strict_fderiv_at_cpow + theorem deriv_rpow_const + theorem deriv_within_rpow_const + theorem differentiable.rpow + theorem differentiable.rpow_const + theorem differentiable_at.const_cpow + theorem differentiable_at.cpow + theorem differentiable_at.rpow + theorem differentiable_at.rpow_const + theorem differentiable_on.rpow + theorem differentiable_on.rpow_const + theorem differentiable_within_at.const_cpow + theorem differentiable_within_at.cpow + theorem differentiable_within_at.rpow + theorem differentiable_within_at.rpow_const + theorem has_deriv_at.const_cpow + theorem has_deriv_at.cpow + theorem has_deriv_at.cpow_const + theorem has_deriv_at.rpow + theorem has_deriv_at.rpow_const + theorem has_deriv_within_at.const_cpow + theorem has_deriv_within_at.cpow + theorem has_deriv_within_at.cpow_const + theorem has_deriv_within_at.rpow + theorem has_deriv_within_at.rpow_const + theorem has_fderiv_at.const_cpow + theorem has_fderiv_at.const_rpow + theorem has_fderiv_at.cpow + theorem has_fderiv_at.rpow + theorem has_fderiv_at.rpow_const + theorem has_fderiv_within_at.const_cpow + theorem has_fderiv_within_at.const_rpow + theorem has_fderiv_within_at.cpow + theorem has_fderiv_within_at.rpow + theorem has_fderiv_within_at.rpow_const + theorem has_strict_deriv_at.const_cpow + theorem has_strict_deriv_at.cpow + theorem has_strict_deriv_at.cpow_const + theorem has_strict_deriv_at.rpow + theorem has_strict_fderiv_at.const_cpow + theorem has_strict_fderiv_at.const_rpow + theorem has_strict_fderiv_at.cpow + theorem has_strict_fderiv_at.rpow + theorem has_strict_fderiv_at.rpow_const + theorem real.deriv_rpow_const' + theorem real.deriv_rpow_const + theorem real.differentiable_at_rpow_of_ne + theorem real.differentiable_rpow_const + theorem real.has_deriv_at_rpow_const + theorem real.has_strict_deriv_at_const_rpow + theorem real.has_strict_deriv_at_const_rpow_of_neg + theorem real.has_strict_deriv_at_rpow_const + theorem real.has_strict_deriv_at_rpow_const_of_ne + theorem real.has_strict_fderiv_at_rpow_of_neg + theorem real.has_strict_fderiv_at_rpow_of_pos + theorem real.times_cont_diff_at_rpow_const + theorem real.times_cont_diff_at_rpow_const_of_le + theorem real.times_cont_diff_at_rpow_const_of_ne + theorem real.times_cont_diff_at_rpow_of_ne + theorem real.times_cont_diff_rpow_const_of_le + theorem tendsto_one_plus_div_pow_exp + theorem tendsto_one_plus_div_rpow_exp + theorem times_cont_diff.rpow + theorem times_cont_diff.rpow_const_of_le + theorem times_cont_diff.rpow_const_of_ne + theorem times_cont_diff_at.rpow + theorem times_cont_diff_at.rpow_const_of_le + theorem times_cont_diff_at.rpow_const_of_ne + theorem times_cont_diff_on.rpow + theorem times_cont_diff_on.rpow_const_of_le + theorem times_cont_diff_on.rpow_const_of_ne + theorem times_cont_diff_within_at.rpow + theorem times_cont_diff_within_at.rpow_const_of_le + theorem times_cont_diff_within_at.rpow_const_of_ne Modified src/analysis/special_functions/trigonometric/complex.lean 2021-11-12 07:59:47 75207e9 refactor(linear_algebra/eigenspace): refactor `eigenvectors_linearly_independent` (#10198) This refactors the proof of the lemma ```lean lemma eigenvectors_linear_independent (f : End K V) (μs : set K) (xs : μs → V) (h_eigenvec : ∀ μ : μs, f.has_eigenvector μ (xs μ)) : linear_independent K xs ``` to extract the formulation ```lean lemma eigenspaces_independent (f : End K V) : complete_lattice.independent f.eigenspace ``` from which `eigenvectors_linear_independent` follows as a 1-liner. I don't need this for anything (although it might have applications -- for example, cardinality lemmas) -- just think it's a possibly more elegant statement. ESTIMATED CHANGES Modified src/linear_algebra/dfinsupp.lean + theorem dfinsupp.sum_map_range_index.linear_map Modified src/linear_algebra/eigenspace.lean + theorem module.End.eigenspaces_independent 2021-11-12 07:59:46 1019dd6 feat(measure_theory/probability_mass_function): Define a measure assosiated to a pmf (#9966) This PR defines `pmf.to_outer_measure` and `pmf.to_measure`, where the measure of a set is given by the total probability of elements of the set, and shows that this is a probability measure. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function.lean +/- def pmf.support + def pmf.to_measure + theorem pmf.to_measure_apply' + theorem pmf.to_measure_apply + theorem pmf.to_measure_apply_eq_to_outer_measure_apply + theorem pmf.to_measure_apply_finset + theorem pmf.to_measure_apply_fintype + theorem pmf.to_measure_apply_of_finite + def pmf.to_outer_measure + theorem pmf.to_outer_measure_apply' + theorem pmf.to_outer_measure_apply + theorem pmf.to_outer_measure_apply_eq_zero_iff + theorem pmf.to_outer_measure_apply_finset + theorem pmf.to_outer_measure_apply_fintype + theorem pmf.to_outer_measure_apply_le_to_measure_apply + theorem pmf.to_outer_measure_caratheodory 2021-11-12 07:25:31 9e1e4f0 feat(category_theory/sites/*): Dense subsite (#9694) Defined `cover_dense` functors as functors into sites such that each object can be covered by images of the functor. Proved that for a `cover_dense` functor `G`, any morphisms of presheaves `G ⋙ ℱ ⟶ G ⋙ ℱ'` can be glued into a morphism `ℱ ⟶ ℱ'`. ESTIMATED CHANGES Added src/category_theory/sites/dense_subsite.lean + theorem category_theory.cover_dense.ext + theorem category_theory.cover_dense.functor_pullback_pushforward_covering + def category_theory.cover_dense.hom_over + theorem category_theory.cover_dense.iso_of_restrict_iso + def category_theory.cover_dense.iso_over + def category_theory.cover_dense.presheaf_iso + def category_theory.cover_dense.restrict_hom_equiv_hom + def category_theory.cover_dense.sheaf_coyoneda_hom + theorem category_theory.cover_dense.sheaf_eq_amalgamation + def category_theory.cover_dense.sheaf_hom + theorem category_theory.cover_dense.sheaf_hom_eq + theorem category_theory.cover_dense.sheaf_hom_restrict_eq + def category_theory.cover_dense.sheaf_iso + def category_theory.cover_dense.sheaf_yoneda_hom + def category_theory.cover_dense.types.app_hom + theorem category_theory.cover_dense.types.app_hom_restrict + theorem category_theory.cover_dense.types.app_hom_valid_glue + def category_theory.cover_dense.types.app_iso + def category_theory.cover_dense.types.presheaf_hom + def category_theory.cover_dense.types.presheaf_iso + def category_theory.cover_dense.types.pushforward_family + theorem category_theory.cover_dense.types.pushforward_family_apply + theorem category_theory.cover_dense.types.pushforward_family_compatible + def category_theory.cover_dense.types.sheaf_iso + structure category_theory.cover_dense + def category_theory.presieve.cover_by_image + structure category_theory.presieve.cover_by_image_structure + theorem category_theory.presieve.in_cover_by_image + def category_theory.sieve.cover_by_image 2021-11-12 04:52:56 6fd688b chore(measure_theory): move `mutually_singular` to a new file (#10281) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean - theorem measure_theory.measure.mutually_singular.add_left - theorem measure_theory.measure.mutually_singular.add_left_iff - theorem measure_theory.measure.mutually_singular.add_right - theorem measure_theory.measure.mutually_singular.add_right_iff - theorem measure_theory.measure.mutually_singular.comm - theorem measure_theory.measure.mutually_singular.mk - theorem measure_theory.measure.mutually_singular.mono - theorem measure_theory.measure.mutually_singular.mono_ac - theorem measure_theory.measure.mutually_singular.smul - theorem measure_theory.measure.mutually_singular.smul_nnreal - theorem measure_theory.measure.mutually_singular.sum_left - theorem measure_theory.measure.mutually_singular.sum_right - theorem measure_theory.measure.mutually_singular.symm - theorem measure_theory.measure.mutually_singular.zero_left - theorem measure_theory.measure.mutually_singular.zero_right - def measure_theory.measure.mutually_singular Added src/measure_theory/measure/mutually_singular.lean + theorem measure_theory.measure.mutually_singular.add_left + theorem measure_theory.measure.mutually_singular.add_left_iff + theorem measure_theory.measure.mutually_singular.add_right + theorem measure_theory.measure.mutually_singular.add_right_iff + theorem measure_theory.measure.mutually_singular.comm + theorem measure_theory.measure.mutually_singular.mk + theorem measure_theory.measure.mutually_singular.mono + theorem measure_theory.measure.mutually_singular.mono_ac + theorem measure_theory.measure.mutually_singular.smul + theorem measure_theory.measure.mutually_singular.smul_nnreal + theorem measure_theory.measure.mutually_singular.sum_left + theorem measure_theory.measure.mutually_singular.sum_right + theorem measure_theory.measure.mutually_singular.symm + theorem measure_theory.measure.mutually_singular.zero_left + theorem measure_theory.measure.mutually_singular.zero_right + def measure_theory.measure.mutually_singular 2021-11-12 04:52:54 d7e320e feat(category_theory/limits): Cone limiting iff terminal. (#10266) ESTIMATED CHANGES Added src/category_theory/limits/cone_category.lean + def category_theory.limits.cocone.is_colimit_equiv_is_initial + def category_theory.limits.cone.is_limit_equiv_is_terminal + theorem category_theory.limits.is_colimit.desc_cocone_morphism_eq_is_initial_to + def category_theory.limits.is_colimit.of_preserves_cocone_initial + def category_theory.limits.is_colimit.of_reflects_cocone_initial + theorem category_theory.limits.is_initial.to_eq_desc_cocone_morphism + theorem category_theory.limits.is_limit.lift_cone_morphism_eq_is_terminal_from + def category_theory.limits.is_limit.of_preserves_cone_terminal + def category_theory.limits.is_limit.of_reflects_cone_terminal + theorem category_theory.limits.is_terminal.from_eq_lift_cone_morphism Modified src/category_theory/limits/preserves/shapes/terminal.lean + theorem category_theory.limits.has_initial_of_has_initial_of_preserves_colimit + def category_theory.limits.is_colimit_map_cocone_empty_cocone_equiv + def category_theory.limits.is_colimit_of_has_initial_of_preserves_colimit + def category_theory.limits.is_initial.is_initial_obj + def category_theory.limits.is_initial.is_initial_of_obj + def category_theory.limits.is_terminal.is_terminal_obj + def category_theory.limits.is_terminal.is_terminal_of_obj - def category_theory.limits.is_terminal_obj_of_is_terminal - def category_theory.limits.is_terminal_of_is_terminal_obj + def category_theory.limits.preserves_initial.iso + theorem category_theory.limits.preserves_initial.iso_hom + def category_theory.limits.preserves_initial.of_iso_comparison + def category_theory.limits.preserves_initial_of_is_iso + def category_theory.limits.preserves_initial_of_iso 2021-11-12 03:51:22 e5a79a7 feat(analysis/normed_space/star): introduce C*-algebras (#10145) This PR introduces normed star rings/algebras and C*-rings/algebras, as well as a version of `star` bundled as a linear isometric equivalence. ESTIMATED CHANGES Modified src/algebra/star/module.lean +/- def star_linear_equiv Added src/analysis/normed_space/star.lean + theorem coe_starₗᵢ + theorem cstar_ring.norm_self_mul_star + theorem cstar_ring.norm_star_mul_self' + def starₗᵢ + theorem starₗᵢ_apply 2021-11-12 00:55:58 d6056ee feat(field_theory/splitting_field): add eval_root_derivative_of_split (#10224) From flt-regular. ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean + theorem polynomial.derivative_prod + theorem polynomial.eval_multiset_prod_X_sub_C_derivative Modified src/field_theory/splitting_field.lean + theorem polynomial.aeval_root_derivative_of_splits 2021-11-12 00:19:41 73b2b65 feat(category_theory/limits/concrete_category): A lemma about concrete multiequalizers (#10277) ESTIMATED CHANGES Modified src/category_theory/limits/concrete_category.lean + theorem category_theory.limits.concrete.multiequalizer_ext 2021-11-11 23:18:38 0b4c540 feat(field_theory/separable): X^n - 1 is separable iff ↑n ≠ 0. (#9779) Most of the proof actually due to @Vierkantor! ESTIMATED CHANGES Modified src/data/polynomial/monic.lean + theorem polynomial.not_is_unit_X_pow_sub_one Modified src/field_theory/separable.lean + theorem polynomial.X_pow_sub_one_separable_iff + theorem polynomial.separable_X_pow_sub_C_unit 2021-11-11 19:35:48 8cd5f0e chore(category_theory/isomorphisms): Adjust priority for is_iso.comp_is_iso (#10276) [See Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/iso.20to.20is_iso.20for.20types/near/261122457) Given `f : X ≅ Y` with `X Y : Type u`, without this change, typeclass inference cannot deduce `is_iso f.hom` because `f.hom` is defeq to `(λ x, x) ≫ f.hom`, triggering a loop. ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean 2021-11-11 19:35:47 d686025 feat(linear_algebra/pi_tensor_product): add subsingleton_equiv (#10274) This is useful for constructing the tensor product of a single module, which we will ultimately need to show an isomorphism to `tensor_algebra`. This also refactors `pempty_equiv` to use `is_empty`, which probably didn't exist at the time. This eliminates a surprising universe variable that was parameterizing `pempty`. ESTIMATED CHANGES Modified src/linear_algebra/pi_tensor_product.lean + def pi_tensor_product.is_empty_equiv + theorem pi_tensor_product.is_empty_equiv_apply_tprod - def pi_tensor_product.pempty_equiv + def pi_tensor_product.subsingleton_equiv + theorem pi_tensor_product.subsingleton_equiv_apply_tprod 2021-11-11 19:35:45 f99d638 feat(measure_theory): integral over a family of pairwise a.e. disjoint sets (#10268) Also golf a few proofs ESTIMATED CHANGES Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.has_sum_integral_Union_of_null_inter + theorem measure_theory.integral_Union_of_null_inter Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.exists_subordinate_pairwise_disjoint 2021-11-11 19:35:44 12c868a refactor(group_theory/complement): Generalize `card_mul` to from subgroups to subsets (#10264) Adds `is_complement.card_mul`, which generalizes `is_complement'.card_mul`. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.is_complement.card_mul 2021-11-11 19:35:42 72ca0d3 feat(linear_algebra/pi_tensor_prod): generalize actions and provide missing smul_comm_class and is_scalar_tower instance (#10262) Also squeezes some `simp`s. ESTIMATED CHANGES Modified src/linear_algebra/pi_tensor_product.lean +/- theorem pi_tensor_product.smul_tprod_coeff' +/- theorem pi_tensor_product.smul_tprod_coeff 2021-11-11 19:35:41 c7f3e5c feat(group_theory/submonoid/membership): `exists_multiset_of_mem_closure` (#10256) Version of `exists_list_of_mem_closure` for `comm_monoid`. ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean + theorem submonoid.exists_multiset_of_mem_closure 2021-11-11 19:35:40 9a30dcf feat(data/finset/pairwise): Interaction of `set.pairwise_disjoint` with `finset` (#10244) This proves a few results about `set.pairwise_disjoint` and `finset` that couldn't go `data.set.pairwise` because of cyclic imports. ESTIMATED CHANGES Added src/data/finset/pairwise.lean + theorem finset.pairwise_disjoint_range_singleton + theorem set.pairwise_disjoint.bUnion_finset + theorem set.pairwise_disjoint.elim_finset + theorem set.pairwise_disjoint.image_finset_of_le Modified src/data/set/pairwise.lean + theorem set.pairwise_disjoint.bUnion 2021-11-11 19:35:38 820f8d7 feat(group_theory/index): Index of `subgroup.map` (#10232) Proves `(H.map f).index = H.index`, assuming `function.surjective f` and `f.ker ≤ H`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.dvd_index_map + theorem subgroup.index_map + theorem subgroup.index_map_dvd + theorem subgroup.index_map_eq 2021-11-11 19:35:37 4b1a057 feat(algebra/order/sub): An `add_group` has ordered subtraction (#10225) This wraps up `sub_le_iff_le_add` in an `has_ordered_sub` instance. ESTIMATED CHANGES Modified src/algebra/order/group.lean Modified src/data/real/ennreal.lean 2021-11-11 19:35:36 a9c3ab5 feat(data/polynomial): assorted lemmas on division and gcd of polynomials (#9600) This PR provides a couple of lemmas involving the division and gcd operators of polynomials that I needed for #9563. The ones that generalized to `euclidean_domain` and/or `gcd_monoid` are provided in the respective files. ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.div_dvd_of_dvd + theorem euclidean_domain.div_one + theorem euclidean_domain.mul_div_mul_cancel Modified src/data/polynomial/field_division.lean + theorem polynomial.C_mul_dvd + theorem polynomial.div_C_mul + theorem polynomial.dvd_C_mul + theorem polynomial.leading_coeff_div Modified src/ring_theory/euclidean_domain.lean + theorem left_div_gcd_ne_zero + theorem right_div_gcd_ne_zero Modified src/ring_theory/polynomial/content.lean + theorem polynomial.degree_gcd_le_left + theorem polynomial.degree_gcd_le_right 2021-11-11 19:02:03 01e7b20 feat(analysis/subadditive): prove that, if u_n is subadditive, then u_n / n converges. (#10258) ESTIMATED CHANGES Added src/analysis/subadditive.lean + theorem subadditive.apply_mul_add_le + theorem subadditive.eventually_div_lt_of_div_lt + theorem subadditive.lim_le_div + theorem subadditive.tendsto_lim + def subadditive 2021-11-11 14:48:45 4df3cd7 chore(analysis/special_functions/complex/log): move results about derivatives to a new file (#10117) ESTIMATED CHANGES Modified src/analysis/special_functions/complex/log.lean - def complex.exp_local_homeomorph - theorem complex.has_strict_deriv_at_log - theorem complex.has_strict_fderiv_at_log_real - theorem complex.times_cont_diff_at_log + theorem continuous_at_clog - theorem differentiable.clog - theorem differentiable_at.clog - theorem differentiable_on.clog - theorem differentiable_within_at.clog - theorem has_deriv_at.clog - theorem has_deriv_at.clog_real - theorem has_deriv_within_at.clog - theorem has_deriv_within_at.clog_real - theorem has_fderiv_at.clog - theorem has_fderiv_within_at.clog - theorem has_strict_deriv_at.clog - theorem has_strict_deriv_at.clog_real - theorem has_strict_fderiv_at.clog Added src/analysis/special_functions/complex/log_deriv.lean + def complex.exp_local_homeomorph + theorem complex.has_strict_deriv_at_log + theorem complex.has_strict_fderiv_at_log_real + theorem complex.times_cont_diff_at_log + theorem differentiable.clog + theorem differentiable_at.clog + theorem differentiable_on.clog + theorem differentiable_within_at.clog + theorem has_deriv_at.clog + theorem has_deriv_at.clog_real + theorem has_deriv_within_at.clog + theorem has_deriv_within_at.clog_real + theorem has_fderiv_at.clog + theorem has_fderiv_within_at.clog + theorem has_strict_deriv_at.clog + theorem has_strict_deriv_at.clog_real + theorem has_strict_fderiv_at.clog Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric/complex.lean 2021-11-11 14:04:29 6e268cd chore(probability_theory/notation): change `volume` to `measure_theory.measure.volume` (#10272) ESTIMATED CHANGES Modified src/probability_theory/notation.lean 2021-11-11 13:22:36 270c644 feat(measure_theory): add `ae_measurable.sum_measure` (#10271) Also add a few supporting lemmas. ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem measurable_of_subsingleton_codomain Modified src/measure_theory/measure/measure_space.lean + theorem ae_measurable.sum_measure + theorem ae_measurable_Union_iff +/- theorem ae_measurable_add_measure_iff + theorem ae_measurable_of_subsingleton_codomain + theorem ae_measurable_sum_measure_iff + theorem measure_theory.measure.ae_sum_eq + theorem measure_theory.measure.ae_sum_iff' + theorem measure_theory.measure.ae_sum_iff + theorem measure_theory.measure.restrict_Union_ae + theorem measure_theory.measure.restrict_Union_apply_ae + theorem measure_theory.measure.sum_apply_eq_zero' + theorem measure_theory.measure.sum_apply_eq_zero 2021-11-11 11:44:13 c062d9e feat(*): more bundled versions of `(fin 2 → α) ≃ (α × α)` (#10214) Also ensure that the inverse function uses vector notation when possible. ESTIMATED CHANGES Modified src/data/equiv/fin.lean +/- def fin_two_arrow_equiv Modified src/linear_algebra/pi.lean + def linear_equiv.fin_two_arrow + def linear_equiv.pi_fin_two Modified src/topology/algebra/module.lean + def continuous_linear_equiv.fin_two_arrow + def continuous_linear_equiv.pi_fin_two + def continuous_linear_equiv.simps.apply + def continuous_linear_equiv.simps.symm_apply + def continuous_linear_map.simps.apply + def continuous_linear_map.simps.coe Modified src/topology/homeomorph.lean + def homeomorph.fin_two_arrow + def homeomorph.{u} 2021-11-11 10:26:15 e4a882d feat(measure_theory): a file about null measurable sets/functions (#10231) * Move definitions and lemmas about `null_measurable` to a new file. * Redefine, rename, review API. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/algebra/support.lean + theorem function.mul_support_eq_preimage Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/measure_space.lean - def completion - theorem measurable.ae_eq - theorem measurable_set.diff_null - theorem measurable_set.null_measurable_set - theorem measure_theory.measure.is_complete.out - theorem measure_theory.measure.is_complete_iff + theorem measure_theory.measure.restrict_apply₀ - theorem measure_theory.measure_Union + theorem measure_theory.null_measurable_set.mono + theorem measure_theory.null_measurable_set.mono_ac + theorem measure_theory.to_measure_apply₀ - def null_measurable - theorem null_measurable_set.Union_nat - theorem null_measurable_set.compl - theorem null_measurable_set.diff_null - theorem null_measurable_set.union_null - def null_measurable_set - theorem null_measurable_set_iff - theorem null_measurable_set_iff_ae - theorem null_measurable_set_iff_sandwich - theorem null_measurable_set_measure_eq - theorem null_measurable_set_of_complete - theorem null_null_measurable_set - theorem restrict_apply_of_null_measurable_set Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.ae_le_to_measurable Added src/measure_theory/measure/null_measurable.lean + theorem finset.null_measurable_set_bInter + theorem finset.null_measurable_set_bUnion + theorem measurable.congr_ae + theorem measurable_set.null_measurable_set + theorem measure_theory.measurable.comp_null_measurable + theorem measure_theory.measurable_set_of_null + theorem measure_theory.measure.coe_completion + def measure_theory.measure.completion + theorem measure_theory.measure.completion_apply + theorem measure_theory.measure.is_complete.out + theorem measure_theory.measure.is_complete_iff + theorem measure_theory.measure_Union + theorem measure_theory.measure_Union₀ + theorem measure_theory.measure_union₀ + theorem measure_theory.null_measurable.congr + theorem measure_theory.null_measurable.measurable_of_complete + def measure_theory.null_measurable + theorem measure_theory.null_measurable_set.Inter_Prop + theorem measure_theory.null_measurable_set.Inter_fintype + theorem measure_theory.null_measurable_set.Union_Prop + theorem measure_theory.null_measurable_set.Union_fintype + theorem measure_theory.null_measurable_set.compl + theorem measure_theory.null_measurable_set.compl_iff + theorem measure_theory.null_measurable_set.compl_to_measurable_compl_ae_eq + theorem measure_theory.null_measurable_set.exists_measurable_subset_ae_eq + theorem measure_theory.null_measurable_set.exists_measurable_superset_ae_eq + theorem measure_theory.null_measurable_set.measurable_of_complete + theorem measure_theory.null_measurable_set.of_compl + theorem measure_theory.null_measurable_set.of_null + theorem measure_theory.null_measurable_set.of_subsingleton + theorem measure_theory.null_measurable_set.to_measurable_ae_eq + def measure_theory.null_measurable_set + theorem measure_theory.null_measurable_set_empty + theorem measure_theory.null_measurable_set_eq + theorem measure_theory.null_measurable_set_insert + theorem measure_theory.null_measurable_set_singleton + theorem measure_theory.null_measurable_set_to_measurable + theorem measure_theory.null_measurable_set_univ + def measure_theory.null_measurable_space + theorem set.finite.null_measurable_set_bInter + theorem set.finite.null_measurable_set_bUnion + theorem set.finite.null_measurable_set_sInter + theorem set.finite.null_measurable_set_sUnion 2021-11-11 09:29:24 d5964a9 feat(measure_theory): `int.floor` etc are measurable (#10265) ## API changes ### `algebra/order/archimedean` * rename `rat.cast_floor` to `rat.floor_cast` to reflect the order of operations; * same for `rat.cast_ceil` and `rat.cast_round`; * add `rat.cast_fract`. ### `algebra/order/floor` * add `@[simp]` to `nat.floor_eq_zero`; * add `nat.floor_eq_iff'`, `nat.preimage_floor_zero`, and `nat.preimage_floor_of_ne_zero`; * add `nat.ceil_eq_iff`, `nat.preimage_ceil_zero`, and `nat.preimage_ceil_of_ne_zero`; * add `int.preimage_floor_singleton`; * add `int.self_sub_floor`, `int.fract_int_add`, `int.preimage_fract`, `int.image_fract`; * add `int.preimage_ceil_singleton`. ### `measure_theory/function/floor` New file. Prove that the functions defined in `algebra.order.floor` are measurable. ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/order/archimedean.lean - theorem rat.cast_ceil - theorem rat.cast_floor + theorem rat.cast_fract - theorem rat.cast_round + theorem rat.ceil_cast + theorem rat.floor_cast + theorem rat.round_cast Modified src/algebra/order/floor.lean +/- theorem int.fract_add_int + theorem int.fract_int_add +/- theorem int.fract_sub_int + theorem int.image_fract + theorem int.preimage_ceil_singleton + theorem int.preimage_floor_singleton + theorem int.preimage_fract + theorem int.self_sub_floor + theorem nat.ceil_eq_iff + theorem nat.floor_eq_iff' +/- theorem nat.floor_eq_zero + theorem nat.preimage_ceil_of_ne_zero + theorem nat.preimage_ceil_zero + theorem nat.preimage_floor_of_ne_zero + theorem nat.preimage_floor_zero Added src/measure_theory/function/floor.lean + theorem int.measurable_ceil + theorem int.measurable_floor + theorem measurable.ceil + theorem measurable.floor + theorem measurable.fract + theorem measurable.nat_ceil + theorem measurable.nat_floor + theorem measurable_fract + theorem measurable_set.image_fract + theorem nat.measurable_ceil + theorem nat.measurable_floor Modified src/number_theory/zsqrtd/gaussian_int.lean 2021-11-11 07:23:55 8c1fa70 feat(category_theory/limits/concrete_category): Some lemmas about filtered colimits (#10270) This PR adds some lemmas about (filtered) colimits in concrete categories which are preserved under the forgetful functor. This will be used later for the sheafification construction. ESTIMATED CHANGES Modified src/category_theory/limits/concrete_category.lean + theorem category_theory.limits.concrete.colimit_exists_of_rep_eq + theorem category_theory.limits.concrete.colimit_rep_eq_iff_exists + theorem category_theory.limits.concrete.colimit_rep_eq_of_exists + theorem category_theory.limits.concrete.is_colimit_exists_of_rep_eq + theorem category_theory.limits.concrete.is_colimit_rep_eq_iff_exists + theorem category_theory.limits.concrete.is_colimit_rep_eq_of_exists 2021-11-10 21:52:09 dfa7363 feat(analysis/normed_space/finite_dimension): finite-dimensionality of spaces of continuous linear map (#10259) ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem inner_product_space.of_core.inner_self_eq_norm_mul_norm - theorem inner_product_space.of_core.inner_self_eq_norm_sq + theorem inner_self_eq_norm_mul_norm +/- theorem inner_self_eq_norm_sq + theorem real_inner_self_eq_norm_mul_norm +/- theorem real_inner_self_eq_norm_sq Modified src/analysis/inner_product_space/calculus.lean Modified src/analysis/inner_product_space/dual.lean + theorem inner_product_space.to_dual_symm_apply Modified src/analysis/inner_product_space/rayleigh.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/quaternion.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/triangle.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/topology/algebra/module.lean + def continuous_linear_map.coe_lm 2021-11-10 20:44:38 3c2bc2e lint(scripts/lint-style.py): add indentation linter (#10257) ESTIMATED CHANGES Modified scripts/lint-style.py 2021-11-10 17:25:44 6f10557 refactor(order): order_{top,bot} as mixin (#10097) This changes `order_top α` / `order_bot α` to _require_ `has_le α` instead of _extending_ `partial_order α`. As a result, `order_top` can be combined with other lattice typeclasses. This lends itself to more refactors downstream, such as phrasing lemmas that currently require orders/semilattices and top/bot to provide them as separate TC inference, instead of "bundled" classes like `semilattice_inf_top`. This refactor also provides the basis for making more consistent the "extended" algebraic classes, like "e(nn)real", "enat", etc. Some proof terms for lemmas about `nnreal` and `ennreal` have been switched to rely on more direct coercions from the underlying non-extended type or other (semi)rings. Modify `semilattice_{inf,sup}_{top,bot}` to not directly inherit from `order_{top,bot}`. Instead, they are now extending from `has_{top,bot}`. Extending `order_{top,bot}` is now only possible is `has_le` is provided to the TC cache at `extends` declaration time, when using `old_structure_cmd true`. That is, ``` set_option old_structure_cmd true class mnwe (α : Type u) extends semilattice_inf α, order_top α. ``` errors with ``` type mismatch at application @semilattice_inf.to_partial_order α top term top has type α but is expected to have type semilattice_inf α ``` One can make this work through one of three ways: No `old_structure_cmd`, which is unfriendly to the rest of the class hierarchy Require `has_le` in `class mwe (α : Type u) [has_le α] extends semilattice_inf α, order_top α.`, which is unfriendly to the existing hierarchy and how lemmas are stated. Provide an additional axiom on top of a "data-only" TC and have a low-priority instance: ``` class semilattice_inf_top (α : Type u) extends semilattice_inf α, has_top α := (le_top : ∀ a : α, a ≤ ⊤) @[priority 100] instance semilattice_inf_top.to_order_top : order_top α := { top := ⊤, le_top := semilattice_inf_top.le_top } ``` The third option is chosen in this refactor. Pulled out from #9891, without the semilattice refactor. ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/algebra/module/submodule_lattice.lean Modified src/algebra/order/monoid.lean Modified src/algebra/order/nonneg.lean + theorem nonneg.bot_eq Modified src/algebra/tropical/basic.lean +/- theorem tropical.le_zero Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/subobject/lattice.lean Modified src/combinatorics/colex.lean Modified src/control/lawful_fix.lean Modified src/data/equiv/denumerable.lean Modified src/data/finset/basic.lean +/- theorem finset.bot_eq_empty Modified src/data/finset/locally_finite.lean Modified src/data/finsupp/lattice.lean Modified src/data/fintype/basic.lean Modified src/data/multiset/basic.lean Modified src/data/nat/enat.lean Modified src/data/part.lean Modified src/data/pequiv.lean Modified src/data/pnat/basic.lean Modified src/data/real/ereal.lean Modified src/data/semiquot.lean Modified src/data/set/intervals/basic.lean +/- def order_iso.Ici_bot +/- def order_iso.Iic_top +/- theorem set.Ici_bot +/- theorem set.Ici_top +/- theorem set.Iic_bot Modified src/data/set/lattice.lean Modified src/data/setoid/basic.lean Modified src/field_theory/adjoin.lean Modified src/geometry/manifold/charted_space.lean Modified src/linear_algebra/linear_pmap.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.outer_measure.coe_bot Modified src/order/atoms.lean +/- theorem order_iso.is_atom_iff +/- theorem order_iso.is_atomic_iff +/- theorem order_iso.is_coatom_iff +/- theorem order_iso.is_coatomic_iff +/- theorem order_iso.is_simple_lattice +/- theorem order_iso.is_simple_lattice_iff Modified src/order/bounded_lattice.lean +/- theorem bot_le +/- theorem le_top +/- theorem not_lt_bot +/- theorem not_top_lt +/- theorem order_bot.ext +/- theorem order_bot.ext_bot +/- theorem order_top.ext +/- theorem order_top.ext_top +/- theorem strict_mono.maximal_preimage_top +/- theorem strict_mono.minimal_preimage_bot +/- theorem with_bot.get_or_else_bot_le_iff Modified src/order/bounds.lean +/- theorem is_glb_empty +/- theorem is_glb_univ +/- theorem is_greatest_univ +/- theorem is_least_univ +/- theorem is_lub_empty +/- theorem is_lub_univ +/- theorem order_bot.lower_bounds_univ +/- theorem order_top.upper_bounds_univ Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/closure.lean +/- theorem lower_adjoint.closure_top Modified src/order/compactly_generated.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.order_bot.at_bot_eq +/- theorem filter.order_top.at_top_eq +/- theorem filter.tendsto_at_bot_pure +/- theorem filter.tendsto_at_top_pure Modified src/order/filter/basic.lean +/- theorem filter.eventually.lt_top_iff_ne_top +/- theorem filter.eventually.lt_top_of_ne +/- theorem filter.eventually.ne_top_of_lt Modified src/order/filter/germ.lean Modified src/order/galois_connection.lean +/- def galois_coinsertion.lift_order_bot +/- def galois_connection.lift_order_bot +/- def galois_connection.lift_order_top +/- def galois_insertion.lift_order_top +/- def with_bot.gi_get_or_else_bot Modified src/order/ideal.lean Modified src/order/lattice_intervals.lean +/- theorem set.Ici.coe_top +/- theorem set.Iic.coe_bot Modified src/order/liminf_limsup.lean +/- theorem filter.is_bounded_ge_of_bot +/- theorem filter.is_bounded_le_of_top +/- theorem filter.is_cobounded_ge_of_top +/- theorem filter.is_cobounded_le_of_bot Modified src/order/locally_finite.lean Modified src/order/pfilter.lean Modified src/order/preorder_hom.lean Modified src/order/rel_iso.lean +/- theorem order_iso.map_bot' +/- theorem order_iso.map_bot +/- theorem order_iso.map_top' +/- theorem order_iso.map_top Modified src/order/succ_pred.lean Modified src/order/symm_diff.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal.lean Modified src/tactic/interval_cases.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered/basic.lean +/- theorem nhds_bot_order +/- theorem nhds_top_order +/- theorem tendsto_nhds_bot_mono' +/- theorem tendsto_nhds_bot_mono +/- theorem tendsto_nhds_top_mono' +/- theorem tendsto_nhds_top_mono Modified src/topology/basic.lean +/- theorem order_top.tendsto_at_top_nhds Modified src/topology/category/Top/open_nhds.lean Modified src/topology/discrete_quotient.lean Modified src/topology/metric_space/emetric_space.lean 2021-11-10 16:26:10 cd5cb44 chore(set_theory/cardinal_ordinal): golf some proofs (#10260) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean 2021-11-10 14:52:29 8aadbcb feat(linear_algebra/*_algebra): add some simp lemmas about the algebra map and generators of free constructions (#10247) These are quite repetitive, but I'm not sure how to generalize ESTIMATED CHANGES Modified src/algebra/free_algebra.lean + theorem free_algebra.algebra_map_eq_one_iff + theorem free_algebra.algebra_map_eq_zero_iff + theorem free_algebra.algebra_map_inj + theorem free_algebra.ι_inj + theorem free_algebra.ι_ne_algebra_map + theorem free_algebra.ι_ne_one + theorem free_algebra.ι_ne_zero Modified src/linear_algebra/exterior_algebra.lean + theorem exterior_algebra.algebra_map_eq_one_iff + theorem exterior_algebra.algebra_map_eq_zero_iff + theorem exterior_algebra.algebra_map_inj + def exterior_algebra.to_triv_sq_zero_ext + theorem exterior_algebra.to_triv_sq_zero_ext_ι + theorem exterior_algebra.ι_eq_algebra_map_iff + theorem exterior_algebra.ι_eq_zero_iff + theorem exterior_algebra.ι_inj + theorem exterior_algebra.ι_ne_one + theorem exterior_algebra.ι_range_disjoint_one Modified src/linear_algebra/tensor_algebra.lean + theorem tensor_algebra.algebra_map_eq_one_iff + theorem tensor_algebra.algebra_map_eq_zero_iff + theorem tensor_algebra.algebra_map_inj + def tensor_algebra.to_triv_sq_zero_ext + theorem tensor_algebra.to_triv_sq_zero_ext_ι + theorem tensor_algebra.ι_eq_algebra_map_iff + theorem tensor_algebra.ι_eq_zero_iff + theorem tensor_algebra.ι_inj + theorem tensor_algebra.ι_ne_one + theorem tensor_algebra.ι_range_disjoint_one 2021-11-10 14:52:28 543fcef chore(algebra/group_power/lemmas): minimize imports (#10246) Most of these were imported transitively anyway, but `data.list.basic` is unneeded. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean 2021-11-10 14:52:26 444b596 doc(ring_theory/norm) `norm_eq_prod_embeddings` docstring (#10242) ESTIMATED CHANGES Modified src/ring_theory/norm.lean 2021-11-10 14:52:24 bbbefe4 feat(measure_theory/constructions/{pi,prod}): drop some measurability assumptions (#10241) Some lemmas (most notably `prod_prod` and `pi_pi`) are true for non-measurable sets as well. ESTIMATED CHANGES Modified src/data/equiv/list.lean +/- theorem encodable.length_sorted_univ +/- theorem encodable.mem_sorted_univ +/- theorem encodable.sorted_univ_nodup + theorem encodable.sorted_univ_to_finset Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.measure.pi'_eq_pi +/- theorem measure_theory.measure.pi'_pi - theorem measure_theory.measure.pi'_pi_le +/- theorem measure_theory.measure.pi_ball +/- theorem measure_theory.measure.pi_closed_ball +/- theorem measure_theory.measure.pi_pi + theorem measure_theory.measure.pi_pi_aux +/- theorem measure_theory.measure.pi_univ - theorem measure_theory.measure.tprod_tprod_le Modified src/measure_theory/constructions/prod.lean +/- theorem measure_theory.measure.prod_prod - theorem measure_theory.measure.prod_prod_le +/- theorem measure_theory.measure.prod_restrict +/- theorem measure_theory.measure.restrict_prod_eq_prod_univ + theorem measure_theory.set_integral_prod Modified src/measure_theory/group/arithmetic.lean + theorem measurable_set.inv Modified src/measure_theory/group/prod.lean +/- theorem measure_theory.measure_inv_null +/- theorem measure_theory.measure_mul_right_ne_zero +/- theorem measure_theory.measure_mul_right_null - theorem measure_theory.measure_null_of_measure_inv_null + theorem measure_theory.quasi_measure_preserving_inv Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.quasi_measure_preserving.preimage_null 2021-11-10 14:52:23 eadd440 feat(group_theory/index): `card_mul_index` (#10228) Proves `nat.card H * H.index = nat.card G` as the special case of `K.relindex H * H.index = K.index` when `K = ⊥`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.card_mul_index 2021-11-10 14:52:21 2b57ee7 fix(*): fix many indentation mistakes (#10163) ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified archive/miu_language/decision_nec.lean Modified src/algebra/category/CommRing/pushout.lean Modified src/algebra/geom_sum.lean Modified src/algebraic_geometry/Spec.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/convex/combination.lean Modified src/analysis/convex/function.lean Modified src/analysis/inner_product_space/basic.lean Modified src/data/buffer/parser/basic.lean Modified src/data/fin/basic.lean Modified src/data/list/nodup.lean Modified src/data/list/rotate.lean Modified src/data/list/tfae.lean Modified src/data/mv_polynomial/rename.lean Modified src/data/nat/digits.lean Modified src/data/polynomial/eval.lean Modified src/data/rbmap/default.lean Modified src/data/rbtree/basic.lean Modified src/data/rbtree/insert.lean Modified src/data/rbtree/min_max.lean Modified src/data/real/cau_seq.lean Modified src/data/real/pi/bounds.lean Modified src/data/stream/init.lean Modified src/data/vector/basic.lean Modified src/field_theory/primitive_element.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/perm/list.lean Modified src/group_theory/perm/support.lean Modified src/group_theory/specific_groups/dihedral.lean Modified src/linear_algebra/dimension.lean Modified src/measure_theory/function/lp_space.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/fermat4.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/symmetric.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/tensor_product.lean Modified src/set_theory/game.lean Modified src/tactic/omega/int/dnf.lean Modified src/topology/algebra/valuation.lean Modified src/topology/sheaves/forget.lean 2021-11-10 14:52:20 f41854e feat(ring_theory/ideal/over): algebra structure on R/p → S/P for `P` lying over `p` (#9858) This PR shows `P` lies over `p` if there is an injective map completing the square `R/p ← R —f→ S → S/P`, and conversely that there is a (not necessarily injective, since `f` doesn't have to be) map completing the square if `P` lies over `p`. Then we specialize this to the case where `P = map f p` to provide an `algebra p.quotient (map f p).quotient` instance. This algebra instance is useful if you want to study the extension `R → S` locally at `p`, e.g. to show `R/p : S/pS` has the same dimension as `Frac(R) : Frac(S)` if `p` is prime. ESTIMATED CHANGES Modified src/ring_theory/ideal/over.lean + theorem ideal.comap_eq_of_scalar_tower_quotient + theorem ideal.quotient.algebra_map_quotient_map_quotient + def ideal.quotient.algebra_quotient_of_le_comap + theorem ideal.quotient.mk_smul_mk_quotient_map_quotient 2021-11-10 14:52:18 e1fea3a feat(ring_theory/ideal): the product and infimum of principal ideals (#9852) Three useful lemmas for applying the Chinese remainder theorem when an ideal is generated by one, non-prime, element. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.prod_span + theorem submodule.prod_span_singleton Modified src/algebra/module/submodule_lattice.lean + theorem submodule.finset_inf_coe + theorem submodule.mem_finset_inf Modified src/algebra/pointwise.lean + theorem set.finset_prod_singleton Modified src/ring_theory/ideal/operations.lean + theorem ideal.finset_inf_span_singleton + theorem ideal.infi_span_singleton + theorem ideal.prod_span + theorem ideal.prod_span_singleton Modified src/ring_theory/multiplicity.lean 2021-11-10 13:12:51 bfd3a89 doc(algebra/ring/basic): fix typo (#10250) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean 2021-11-10 06:43:42 18412ef feat(data/nat/cast): Cast of natural division is less than division of casts (#10251) ESTIMATED CHANGES Modified src/data/nat/cast.lean + theorem nat.cast_div_le 2021-11-10 02:49:27 3f173e1 feat(group_theory/complement): iff-lemmas for when bottom and top subgroups are complementary (#10143) Adds iff lemmas for when bottom and top subgroups are complementary. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.eq_singleton_iff_nonempty_unique_mem +/- theorem set.eq_singleton_iff_unique_mem + theorem set.exists_eq_singleton_iff_nonempty_unique_mem Modified src/group_theory/complement.lean + theorem subgroup.is_complement'_bot_left + theorem subgroup.is_complement'_bot_right + theorem subgroup.is_complement'_bot_top + theorem subgroup.is_complement'_top_bot + theorem subgroup.is_complement'_top_left + theorem subgroup.is_complement'_top_right + theorem subgroup.is_complement_singleton_left + theorem subgroup.is_complement_singleton_right +/- theorem subgroup.is_complement_singleton_top + theorem subgroup.is_complement_top_left + theorem subgroup.is_complement_top_right +/- theorem subgroup.is_complement_top_singleton Modified src/group_theory/subgroup/basic.lean + theorem subgroup.coe_eq_singleton + theorem subgroup.coe_eq_univ 2021-11-09 23:52:35 64289fe chore(group_theory/order_of_element): fix weird lemma name (#10245) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean - theorem pow_eq_one_of_lt_order_of' + theorem pow_ne_one_of_lt_order_of' 2021-11-09 23:52:33 10d3d25 chore(set_theory/cardinal): fix name & reorder universes (#10236) * add `cardinal.lift_injective`, `cardinal.lift_eq_zero`; * reorder universe arguments in `cardinal.lift_nat_cast` to match `cardinal.lift` and `ulift`; * rename `cardinal.nat_eq_lift_eq_iff` to `cardinal.nat_eq_lift_iff`; * add `@[simp]` to `cardinal.lift_eq_zero`, `cardinal.lift_eq_nat_iff`, and `cardinal.nat_eq_lift_iff`. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.lift_eq_nat_iff + theorem cardinal.lift_eq_zero + theorem cardinal.lift_injective +/- theorem cardinal.lift_nat_cast - theorem cardinal.nat_eq_lift_eq_iff + theorem cardinal.nat_eq_lift_iff Modified src/set_theory/cardinal_ordinal.lean 2021-11-09 23:52:32 7bdb6b3 feat(algebra/module/linear_map,linear_algebra/alternating,linear_algebra/multilinear/basic): no_zero_smul_divisors instances (#10234) Add `no_zero_smul_divisors` instances for linear, multilinear and alternating maps, given such instances for the codomain of the maps. This also adds some missing `coe_smul` lemmas on these types. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem function.injective.no_zero_smul_divisors Modified src/algebra/module/linear_map.lean + theorem linear_map.coe_smul Modified src/linear_algebra/alternating.lean + theorem alternating_map.coe_fn_smul Modified src/linear_algebra/multilinear/basic.lean + theorem multilinear_map.coe_smul 2021-11-09 17:02:26 a2810d9 feat(data/int/basic): coercion subtraction inequality (#10054) Adding to simp a subtraction inequality over coercion from int to nat ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.le_coe_nat_sub 2021-11-09 14:26:32 35d574e feat(linear_algebra/determinant): alternating maps as multiples of determinant (#10233) Add the lemma that any alternating map with the same type as the determinant map with respect to a basis is a multiple of the determinant map (given by the value of the alternating map applied to the basis vectors). ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.map_eq_zero_of_not_injective + theorem basis.ext_alternating Modified src/linear_algebra/determinant.lean + theorem alternating_map.eq_smul_basis_det 2021-11-09 10:46:44 00d9b9f feast(ring_theory/norm): add norm_eq_prod_embeddings (#10226) We prove that the norm equals the product of the embeddings in an algebraically closed field. Note that we follow a slightly different path than for the trace, since transitivity of the norm is more delicate, and we avoid it. From flt-regular. ESTIMATED CHANGES Modified src/ring_theory/norm.lean + theorem algebra.norm_eq_norm_adjoin + theorem algebra.norm_eq_prod_embeddings + theorem algebra.norm_eq_prod_embeddings_gen + theorem algebra.prod_embeddings_eq_finrank_pow 2021-11-09 09:20:22 11ced18 feat(algebra/lie/classical): Use computable matrix inverses where possible (#10218) ESTIMATED CHANGES Modified src/algebra/lie/classical.lean +/- theorem lie_algebra.orthogonal.PB_inv + def lie_algebra.orthogonal.invertible_Pso - theorem lie_algebra.orthogonal.is_unit_PB - theorem lie_algebra.orthogonal.is_unit_PD - theorem lie_algebra.orthogonal.is_unit_Pso + def lie_algebra.orthogonal.so_indefinite_equiv + def lie_algebra.orthogonal.type_B_equiv_so' + def lie_algebra.orthogonal.type_D_equiv_so' Modified src/algebra/lie/matrix.lean + def matrix.lie_conj +/- theorem matrix.lie_conj_apply +/- theorem matrix.lie_conj_symm_apply Modified src/algebra/lie/skew_adjoint.lean + def skew_adjoint_matrices_lie_subalgebra_equiv Modified src/linear_algebra/matrix/to_linear_equiv.lean + def matrix.to_linear_equiv' +/- theorem matrix.to_linear_equiv'_apply +/- theorem matrix.to_linear_equiv'_symm_apply 2021-11-09 09:20:21 8614615 refactor(data/nat/interval): simp for Ico_zero_eq_range (#10211) This PR makes two changes: It refactors `nat.Ico_zero_eq_range` from `Ico 0 a = range a` to `Ico 0 = range`, and makes the lemma a simp lemma. These changes feel good to me, but feel free to close this if this is not the direction we want to go with this lemma. ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean Modified src/data/nat/interval.lean +/- theorem finset.range_eq_Ico +/- theorem nat.Ico_zero_eq_range Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean 2021-11-09 07:29:49 0b093e6 feat(order/bounded_lattice): a couple of basic instances about with_bot still not having a top if the original preorder didn't and vice versa (#10215) Used in the flt-regular project. ESTIMATED CHANGES Modified src/order/bounded_lattice.lean 2021-11-09 03:25:48 6af6f67 chore(scripts): update nolints.txt (#10240) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-11-09 03:25:47 9d49c4a doc(data/finset/fold): fix typo (#10239) ESTIMATED CHANGES Modified src/data/finset/fold.lean 2021-11-09 03:25:45 223f659 chore(linear_algebra/basic): remove a duplicate proof, generalize map_span_le (#10219) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem submodule.map_span_le 2021-11-09 01:42:52 424012a chore(*): bump to Lean 3.35.1 (#10237) ESTIMATED CHANGES Modified leanpkg.toml 2021-11-08 22:17:41 440163b chore(topology/algebra/mul_action): define `has_continuous_vadd` using `to_additive` (#10227) Make additive version of the theory of `has_continuous_smul`, i.e., `has_continuous_vadd`, using `to_additive`. I've been fairly conservative in adding `to_additive` tags -- I left them off lemmas that didn't seem like they'd be relevant for typical additive actions, like those about `units` or `group_with_zero`. Also make `normed_add_torsor` an instance of `has_continuous_vadd` and use this to establish some of its continuity API. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean - theorem continuous.vadd - theorem continuous_at.vadd - theorem continuous_vadd - theorem continuous_within_at.vadd - theorem filter.tendsto.vadd Modified src/topology/algebra/mul_action.lean 2021-11-08 16:03:11 2e4813d feat(linear_algebra/matrix/nonsingular_inverse): add invertible_equiv_det_invertible (#10222) ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + def matrix.invertible_equiv_det_invertible 2021-11-08 16:03:10 1519cd7 chore(set_theory/cardinal): more simp, fix LHS/RHS (#10212) While `coe (fintype.card α)` is a larger expression than `#α`, it allows us to compute the cardinality of a finite type provided that we have a `simp` lemma for `fintype.card α`. It also plays well with lemmas about coercions from `nat` and `cardinal.lift`. * rename `cardinal.fintype_card` to `cardinal.mk_fintype`, make it a `@[simp]` lemma; * deduce other cases (`bool`, `Prop`, `unique`, `is_empty`) from it; * rename `cardinal.finset_card` to `cardinal.mk_finset`, swap LHS/RHS; * rename `ordinal.fintype_card` to `ordinal.type_fintype`. ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified archive/sensitivity.lean Modified src/data/fintype/basic.lean + theorem fintype.card_Prop + theorem fintype.induction_empty_option' Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/finiteness.lean +/- theorem is_noetherian.dim_lt_omega +/- theorem is_noetherian.iff_dim_lt_omega Modified src/field_theory/fixed.lean Modified src/linear_algebra/dimension.lean +/- theorem basis.finite_of_vector_space_index_of_dim_lt_omega Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/free_module/finite/rank.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/set_theory/cardinal.lean - theorem cardinal.finset_card - theorem cardinal.fintype_card +/- theorem cardinal.mk_Prop +/- theorem cardinal.mk_bool +/- theorem cardinal.mk_eq_one +/- theorem cardinal.mk_eq_zero +/- theorem cardinal.mk_fin + theorem cardinal.mk_finset + theorem cardinal.mk_fintype +/- theorem cardinal.mk_to_nat_eq_card Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.fintype_card + theorem ordinal.type_fintype 2021-11-08 16:03:09 66dea29 feat(analysis/convex/specific_functions): Strict convexity of `exp`, `log` and `pow` (#10123) This strictifies the results of convexity/concavity of `exp`/`log` and add the strict versions for `pow`, `zpow`, `rpow`. I'm also renaming `convex_on_pow_of_even` to `even.convex_on_pow` for dot notation. ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean - theorem concave_on_log_Iio - theorem concave_on_log_Ioi +/- theorem convex_on_exp - theorem convex_on_pow_of_even + theorem even.convex_on_pow + theorem even.strict_convex_on_pow + theorem int_prod_range_pos + theorem strict_concave_on_log_Iio + theorem strict_concave_on_log_Ioi + theorem strict_convex_on_exp + theorem strict_convex_on_pow + theorem strict_convex_on_rpow + theorem strict_convex_on_zpow Modified src/analysis/mean_inequalities.lean 2021-11-08 16:03:08 ef68f55 feat(linear_algebra/multilinear/basis): multilinear maps on basis vectors (#10090) Add two versions of the fact that a multilinear map on finitely many arguments is determined by its values on basis vectors. The precise requirements for each version follow from the results used in the proof: `basis.ext_multilinear_fin` uses the `curry` and `uncurry` results to deduce it from `basis.ext` and thus works for multilinear maps on a family of modules indexed by `fin n`, while `basis.ext_multilinear` works for an arbitrary `fintype` index type but is limited to the case where the modules for all the arguments (and the bases used for those modules) are the same, since it's derived from the previous result using `dom_dom_congr` which only handles the case where all the modules are the same. This is in preparation for proving a corresponding result for alternating maps, for which the case of all argument modules the same suffices. There is probably room for making results more general. ESTIMATED CHANGES Modified src/linear_algebra/multilinear/basic.lean + theorem multilinear_map.dom_dom_congr_eq_iff Added src/linear_algebra/multilinear/basis.lean + theorem basis.ext_multilinear + theorem basis.ext_multilinear_fin 2021-11-08 14:15:15 eb67834 chore(ring_theory/noetherian): golf and generalize map_fg_of_fg (#10217) ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean +/- theorem submodule.map_fg_of_fg 2021-11-08 14:15:14 5ba41d8 feat(algebra/direct_sum): specialize `submodule_is_internal.independent` to add_subgroup (#10108) This adds the lemmas `disjoint.map_order_iso` and `complete_lattice.independent.map_order_iso` (and `iff` versions), and uses them to transfer some results on `submodule`s to `add_submonoid`s and `add_subgroup`s. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean + theorem direct_sum.add_subgroup_is_internal.independent + theorem direct_sum.add_submonoid_is_internal.independent Modified src/linear_algebra/dfinsupp.lean + theorem complete_lattice.independent.dfinsupp_sum_add_hom_injective + theorem complete_lattice.independent_iff_dfinsupp_sum_add_hom_injective + theorem complete_lattice.independent_of_dfinsupp_sum_add_hom_injective' + theorem complete_lattice.independent_of_dfinsupp_sum_add_hom_injective Modified src/order/complete_lattice.lean + theorem complete_lattice.independent.map_order_iso + theorem complete_lattice.independent_map_order_iso_iff Modified src/order/rel_iso.lean + theorem disjoint.map_order_iso + theorem disjoint_map_order_iso_iff 2021-11-08 13:14:28 0dabcb8 chore(ring_theory/ideal/operations): relax the base ring of algebras from comm_ring to comm_semiring (#10024) This also tidies up some variables and consistently uses `B` instead of `S` for the second algebra. One proof in `ring_theory/finiteness.lean` has to be redone because typeclass search times out where it previously did not. Thankfully, the new proof is shorter anyway. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.algebra_map_quotient_injective +/- theorem ideal.ker_lift.map_smul +/- def ideal.ker_lift_alg +/- theorem ideal.ker_lift_alg_injective +/- theorem ideal.ker_lift_alg_mk +/- theorem ideal.ker_lift_alg_to_ring_hom +/- theorem ideal.quotient.mk_algebra_map +/- def ideal.quotient.mkₐ +/- theorem ideal.quotient.mkₐ_ker +/- theorem ideal.quotient.mkₐ_surjective +/- def ideal.quotient_equiv_alg +/- theorem ideal.quotient_ker_alg_equiv_of_right_inverse.apply +/- theorem ideal.quotient_ker_alg_equiv_of_right_inverse_symm.apply +/- theorem ideal.quotient_map_comp_mkₐ +/- theorem ideal.quotient_map_mkₐ +/- def ideal.quotient_mapₐ 2021-11-08 11:43:24 b4a5b01 feat(data/finset/basic): add card_insert_eq_ite (#10209) Adds the lemma `card_insert_eq_ite` combining the functionality of `card_insert_of_not_mem` and `card_insert_of_mem`, analogous to how `card_erase_eq_ite`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_insert_eq_ite 2021-11-08 11:43:23 2fd6a77 chore(algebra/algebra/basic): add `algebra.coe_linear_map` (#10204) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.coe_linear_map 2021-11-08 11:43:20 4dd7eca feat(analysis/{seminorm, convex/specific_functions}): A seminorm is convex (#10203) This proves `seminorm.convex_on`, `convex_on_norm` (which is morally a special case of the former) and leverages it to golf `seminorm.convex_ball`. This also fixes the explicitness of arguments of `convex_on.translate_left` and friends. ESTIMATED CHANGES Modified src/analysis/convex/function.lean +/- theorem concave_on.translate_left +/- theorem concave_on.translate_right +/- theorem convex_on.translate_left +/- theorem convex_on.translate_right +/- theorem strict_concave_on.translate_left +/- theorem strict_concave_on.translate_right +/- theorem strict_convex_on.translate_left +/- theorem strict_convex_on.translate_right Modified src/analysis/convex/specific_functions.lean + theorem convex_on_norm Modified src/analysis/seminorm.lean 2021-11-08 11:43:19 e44aa6e feat(linear_algebra/basic): some lemmas about span and restrict_scalars (#10167) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem submodule.span_le_restrict_scalars Modified src/algebra/module/submodule.lean + theorem submodule.coe_restrict_scalars +/- theorem submodule.restrict_scalars_mem + theorem submodule.restrict_scalars_self Modified src/linear_algebra/basic.lean + theorem submodule.span_coe_eq_restrict_scalars +/- theorem submodule.span_eq + theorem submodule.span_le_restrict_scalars + theorem submodule.span_span_of_tower + theorem submodule.span_subset_span Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/pi.lean Modified src/ring_theory/finiteness.lean 2021-11-08 11:43:18 fb0cfbd feat(measure_theory/measure/complex): define complex measures (#10166) Complex measures was defined to be a vector measure over ℂ without any API. This PR adds some basic definitions about complex measures and proves the complex version of the Lebesgue decomposition theorem. ESTIMATED CHANGES Modified src/measure_theory/decomposition/lebesgue.lean + theorem measure_theory.complex_measure.integrable_rn_deriv + def measure_theory.complex_measure.rn_deriv + def measure_theory.complex_measure.singular_part + theorem measure_theory.complex_measure.singular_part_add_with_density_rn_deriv_eq +/- theorem measure_theory.signed_measure.singular_part_smul Added src/measure_theory/measure/complex.lean + theorem measure_theory.complex_measure.absolutely_continuous_ennreal_iff + def measure_theory.complex_measure.equiv_signed_measure + def measure_theory.complex_measure.equiv_signed_measureₗ + def measure_theory.complex_measure.im + def measure_theory.complex_measure.re + theorem measure_theory.complex_measure.to_complex_measure_to_signed_measure + theorem measure_theory.signed_measure.im_to_complex_measure + theorem measure_theory.signed_measure.re_to_complex_measure + def measure_theory.signed_measure.to_complex_measure + theorem measure_theory.signed_measure.to_complex_measure_apply Modified src/measure_theory/measure/vector_measure.lean + def measure_theory.vector_measure.map_range + theorem measure_theory.vector_measure.map_range_add + theorem measure_theory.vector_measure.map_range_apply + def measure_theory.vector_measure.map_range_hom + theorem measure_theory.vector_measure.map_range_id + theorem measure_theory.vector_measure.map_range_zero + def measure_theory.vector_measure.map_rangeₗ 2021-11-08 11:43:17 e4a1e80 feat(analysis/convex/combination): Convex hull of a `set.prod` and `set.pi` (#10125) This proves * `(∀ i, convex 𝕜 (t i)) → convex 𝕜 (s.pi t)` * `convex_hull 𝕜 (s.prod t) = (convex_hull 𝕜 s).prod (convex_hull 𝕜 t)` * `convex_hull 𝕜 (s.pi t) = s.pi (convex_hull 𝕜 ∘ t)` ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex_pi Modified src/analysis/convex/combination.lean + theorem convex_hull_prod 2021-11-08 11:43:16 1fac00e feat(analysis): lemmas about `arg` and `exp_map_circle` (#10066) ESTIMATED CHANGES Modified src/analysis/complex/circle.lean + theorem exp_map_circle_sub Added src/analysis/special_functions/complex/circle.lean + theorem arg_exp_map_circle + theorem circle.arg_eq_arg + theorem circle.injective_arg + theorem exp_map_circle_add_two_pi + theorem exp_map_circle_arg + theorem exp_map_circle_eq_exp_map_circle + theorem exp_map_circle_sub_two_pi + theorem exp_map_circle_two_pi + theorem inv_on_arg_exp_map_circle + theorem left_inverse_exp_map_circle_arg + theorem periodic_exp_map_circle + theorem surj_on_exp_map_circle_neg_pi_pi 2021-11-08 11:43:15 48abaed feat(analysis/special_functions/complex/arg): continuity of arg outside of the negative real half-line (#9500) ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.arg_eq_nhds_of_re_neg_of_im_neg + theorem complex.arg_eq_nhds_of_re_neg_of_im_pos + theorem complex.arg_eq_nhds_of_re_pos + theorem complex.arg_of_re_neg_of_im_neg + theorem complex.arg_of_re_neg_of_im_nonneg + theorem complex.arg_of_re_nonneg + theorem complex.arg_of_re_zero_of_im_neg + theorem complex.arg_of_re_zero_of_im_pos + theorem complex.continuous_at_arg + theorem complex.continuous_at_arg_of_re_neg_of_im_neg + theorem complex.continuous_at_arg_of_re_neg_of_im_pos + theorem complex.continuous_at_arg_of_re_pos + theorem complex.continuous_at_arg_of_re_zero 2021-11-08 10:06:42 32c8445 split(data/list/*): split off `data.list.basic` (#10164) Killing the giants. This moves 700 lines off `data.list.basic` that were about * `list.sum` and `list.product` into `data.list.big_operators` * `list.countp` and `list.count` into `data.list.count` * `list.sigma` and `list.prod` into `data.list.sigma_prod` ESTIMATED CHANGES Modified src/computability/language.lean Modified src/computability/primrec.lean Modified src/data/fin_enum.lean Modified src/data/hash_map.lean Modified src/data/list/basic.lean - theorem list.all_one_of_le_one_le_of_prod_eq_one - theorem list.alternating_prod_cons_cons - theorem list.alternating_prod_nil - theorem list.alternating_prod_singleton - theorem list.alternating_sum_cons_cons - theorem list.count_append - theorem list.count_bind - theorem list.count_concat - theorem list.count_cons' - theorem list.count_cons - theorem list.count_cons_of_ne - theorem list.count_cons_self - theorem list.count_eq_zero_of_not_mem - theorem list.count_erase_of_ne - theorem list.count_erase_self - theorem list.count_filter - theorem list.count_le_count_cons - theorem list.count_le_of_sublist - theorem list.count_map_map - theorem list.count_nil - theorem list.count_pos - theorem list.count_repeat - theorem list.count_singleton - theorem list.count_tail - theorem list.countp_append - theorem list.countp_cons_of_neg - theorem list.countp_cons_of_pos - theorem list.countp_eq_length_filter - theorem list.countp_filter - theorem list.countp_le_of_sublist - theorem list.countp_nil - theorem list.countp_pos - theorem list.drop_sum_join - theorem list.drop_take_succ_eq_cons_nth_le - theorem list.drop_take_succ_join_eq_nth_le - theorem list.dvd_prod - theorem list.dvd_sum - theorem list.eq_iff_join_eq - theorem list.eq_of_sum_take_eq - theorem list.exists_le_of_sum_le - theorem list.exists_lt_of_sum_lt - theorem list.head_add_tail_sum - theorem list.head_le_sum - theorem list.head_mul_tail_prod_of_ne_nil - theorem list.join_append - theorem list.join_eq_nil - theorem list.join_filter_empty_eq_ff - theorem list.join_filter_ne_nil - theorem list.join_join - theorem list.join_nil - theorem list.le_count_iff_repeat_sublist - theorem list.length_bind - theorem list.length_eq_countp_add_countp - theorem list.length_filter_lt_length_iff_exists - theorem list.length_join - theorem list.length_le_sum_of_one_le - theorem list.length_pos_of_prod_ne_one - theorem list.length_pos_of_sum_pos - theorem list.length_product - theorem list.length_sigma +/- theorem list.mem_map_swap - theorem list.mem_product - theorem list.mem_sigma - theorem list.monotone_sum_take - theorem list.nil_product - theorem list.nil_sigma - theorem list.not_mem_of_count_eq_zero - theorem list.nth_le_join - theorem list.nth_zero_mul_tail_prod - theorem list.one_le_prod_of_one_le - theorem list.prod_append - theorem list.prod_concat - theorem list.prod_cons - theorem list.prod_drop_succ - theorem list.prod_eq_foldr - theorem list.prod_eq_zero - theorem list.prod_eq_zero_iff - theorem list.prod_erase - theorem list.prod_hom - theorem list.prod_hom_rel - theorem list.prod_inv - theorem list.prod_inv_reverse - theorem list.prod_is_unit - theorem list.prod_join - theorem list.prod_map_hom - theorem list.prod_ne_zero - theorem list.prod_nil - theorem list.prod_pos - theorem list.prod_reverse_noncomm - theorem list.prod_singleton - theorem list.prod_take_mul_prod_drop - theorem list.prod_take_succ - theorem list.prod_update_nth' - theorem list.prod_update_nth - theorem list.product_cons - theorem list.product_nil - theorem list.repeat_count_eq_of_count_eq_length - theorem list.sigma_cons - theorem list.sigma_nil - theorem list.single_le_prod +/- theorem list.sizeof_slice_lt +/- theorem list.slice_eq - theorem list.sum_const_nat - theorem list.sum_eq_zero_iff - theorem list.sum_le_foldr_max - theorem list.sum_map_mul_left - theorem list.sum_map_mul_right - theorem list.sum_take_map_length_lt1 - theorem list.sum_take_map_length_lt2 - theorem list.tail_sum - theorem list.take_sum_join - theorem monoid_hom.map_list_prod - theorem monoid_hom.unop_map_list_prod - theorem opposite.op_list_prod - theorem opposite.unop_list_prod Added src/data/list/big_operators.lean + theorem list.all_one_of_le_one_le_of_prod_eq_one + theorem list.alternating_prod_cons_cons + theorem list.alternating_prod_nil + theorem list.alternating_prod_singleton + theorem list.alternating_sum_cons_cons + theorem list.dvd_prod + theorem list.dvd_sum + theorem list.eq_of_sum_take_eq + theorem list.exists_le_of_sum_le + theorem list.exists_lt_of_sum_lt + theorem list.head_add_tail_sum + theorem list.head_le_sum + theorem list.head_mul_tail_prod_of_ne_nil + theorem list.length_le_sum_of_one_le + theorem list.length_pos_of_prod_ne_one + theorem list.length_pos_of_sum_pos + theorem list.monotone_sum_take + theorem list.nth_zero_mul_tail_prod + theorem list.one_le_prod_of_one_le + theorem list.prod_append + theorem list.prod_concat + theorem list.prod_cons + theorem list.prod_drop_succ + theorem list.prod_eq_foldr + theorem list.prod_eq_zero + theorem list.prod_eq_zero_iff + theorem list.prod_erase + theorem list.prod_hom + theorem list.prod_hom_rel + theorem list.prod_inv + theorem list.prod_inv_reverse + theorem list.prod_is_unit + theorem list.prod_join + theorem list.prod_map_hom + theorem list.prod_ne_zero + theorem list.prod_nil + theorem list.prod_pos + theorem list.prod_reverse_noncomm + theorem list.prod_singleton + theorem list.prod_take_mul_prod_drop + theorem list.prod_take_succ + theorem list.prod_update_nth' + theorem list.prod_update_nth + theorem list.single_le_prod + theorem list.sum_const_nat + theorem list.sum_eq_zero_iff + theorem list.sum_le_foldr_max + theorem list.sum_map_mul_left + theorem list.sum_map_mul_right + theorem list.tail_sum + theorem monoid_hom.map_list_prod + theorem monoid_hom.unop_map_list_prod + theorem opposite.op_list_prod + theorem opposite.unop_list_prod Added src/data/list/count.lean + theorem list.count_append + theorem list.count_bind + theorem list.count_concat + theorem list.count_cons' + theorem list.count_cons + theorem list.count_cons_of_ne + theorem list.count_cons_self + theorem list.count_eq_zero_of_not_mem + theorem list.count_erase_of_ne + theorem list.count_erase_self + theorem list.count_filter + theorem list.count_le_count_cons + theorem list.count_map_map + theorem list.count_nil + theorem list.count_pos + theorem list.count_repeat + theorem list.count_singleton + theorem list.count_tail + theorem list.countp_append + theorem list.countp_cons_of_neg + theorem list.countp_cons_of_pos + theorem list.countp_eq_length_filter + theorem list.countp_filter + theorem list.countp_nil + theorem list.countp_pos + theorem list.le_count_iff_repeat_sublist + theorem list.length_eq_countp_add_countp + theorem list.length_filter_lt_length_iff_exists + theorem list.not_mem_of_count_eq_zero + theorem list.repeat_count_eq_of_count_eq_length + theorem list.sublist.count_le + theorem list.sublist.countp_le Added src/data/list/join.lean + theorem list.drop_sum_join + theorem list.drop_take_succ_eq_cons_nth_le + theorem list.drop_take_succ_join_eq_nth_le + theorem list.eq_iff_join_eq + theorem list.join_append + theorem list.join_eq_nil + theorem list.join_filter_empty_eq_ff + theorem list.join_filter_ne_nil + theorem list.join_join + theorem list.join_nil + theorem list.length_bind + theorem list.length_join + theorem list.nth_le_join + theorem list.sum_take_map_length_lt1 + theorem list.sum_take_map_length_lt2 + theorem list.take_sum_join Modified src/data/list/lattice.lean Modified src/data/list/pairwise.lean Modified src/data/list/perm.lean Modified src/data/list/permutation.lean Modified src/data/list/prod_monoid.lean Added src/data/list/prod_sigma.lean + theorem list.length_product + theorem list.length_sigma + theorem list.mem_product + theorem list.mem_sigma + theorem list.nil_product + theorem list.nil_sigma + theorem list.product_cons + theorem list.product_nil + theorem list.sigma_cons + theorem list.sigma_nil Modified src/data/list/zip.lean Modified src/data/multiset/basic.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/nat/dnf.lean 2021-11-08 08:27:27 380d6ca chore(algebra/direct_sum/module): extract out common `variables` (#10207) Slight reorganization to extract out repeatedly-used variable declarations, and update module docstring. No changes to the content. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean +/- def direct_sum.submodule_coe +/- theorem direct_sum.submodule_coe_of +/- theorem direct_sum.submodule_is_internal.independent +/- theorem direct_sum.submodule_is_internal.supr_eq_top +/- theorem direct_sum.submodule_is_internal.to_add_subgroup +/- theorem direct_sum.submodule_is_internal.to_add_submonoid +/- def direct_sum.submodule_is_internal +/- theorem direct_sum.submodule_is_internal_iff_independent_and_supr_eq_top +/- theorem direct_sum.submodule_is_internal_of_independent_of_supr_eq_top 2021-11-08 08:27:25 bf242b7 feat(algebra/order/with_zero): add le lemmas (#10183) ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean + theorem div_le_div_right₀ + theorem div_le_iff₀ + theorem le_div_iff₀ + theorem le_mul_inv_iff₀ + theorem mul_inv_le_iff₀ + theorem mul_le_mul_right₀ 2021-11-08 08:27:23 e0aa9f0 refactor(linear_algebra/matrix/nonsingular_inverse): clean up (#10175) This file is a mess, and switches back and forth between three different inverses, proving the same things over and over again. This pulls all the `invertible` versions of these statements to the top, and uses them here and there to golf proofs. The lemmas `nonsing_inv_left_right` and `nonsing_inv_right_left` are merged into a single lemma `mul_eq_one_comm`. The lemma `inv_eq_nonsing_inv_of_invertible` has been renamed to `inv_of_eq_nonsing_inv` This also adds two new lemmas `inv_of_eq` and `det_inv_of`, both of which have trivial proofs. ESTIMATED CHANGES Modified src/algebra/invertible.lean + theorem ring.inverse_invertible Modified src/algebra/lie/classical.lean Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.det_inv_of - theorem matrix.inv_eq_nonsing_inv_of_invertible + theorem matrix.inv_of_eq + theorem matrix.inv_of_eq_nonsing_inv +/- def matrix.invertible_of_left_inverse +/- def matrix.invertible_of_right_inverse +/- theorem matrix.left_inv_eq_left_inv + theorem matrix.mul_eq_one_comm - theorem matrix.nonsing_inv_left_right - theorem matrix.nonsing_inv_right_left +/- theorem matrix.right_inv_eq_left_inv +/- theorem matrix.right_inv_eq_right_inv Modified src/linear_algebra/unitary_group.lean 2021-11-08 08:27:21 bc55cd7 feat(archive/imo) : Add solution to IMO 1994 Q1 (#10171) IMO 1994 Q1 ESTIMATED CHANGES Added archive/imo/imo1994_q1.lean + theorem imo1994_q1 + theorem tedious 2021-11-08 08:27:20 62f94ad feat(measure_theory/measurable_space): define `measurable_embedding` (#10023) This way we can generalize our theorems about `measurable_equiv` and `closed_embedding`s. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.range_extend + theorem set.range_extend_subset Modified src/measure_theory/constructions/borel_space.lean - theorem ae_measurable_comp_iff_of_closed_embedding - theorem ae_measurable_comp_right_iff_of_closed_embedding - theorem closed_embedding.measurable_inv_fun - theorem measurable_comp_iff_of_closed_embedding Modified src/measure_theory/function/l1_space.lean + theorem measurable_embedding.integrable_map_iff Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/bochner.lean + theorem closed_embedding.integral_map + theorem measurable_embedding.integral_map - theorem measure_theory.integral_map_of_closed_embedding Modified src/measure_theory/integral/integrable_on.lean + theorem measurable_embedding.integrable_on_map_iff Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean + theorem measurable_embedding.lintegral_map + def measure_theory.simple_func.extend + theorem measure_theory.simple_func.extend_apply + theorem measure_theory.simple_func.extend_comp_eq' + theorem measure_theory.simple_func.extend_comp_eq + theorem measure_theory.simple_func.lintegral_map' +/- theorem measure_theory.simple_func.lintegral_map - theorem measure_theory.simple_func.lintegral_map_equiv Modified src/measure_theory/integral/set_integral.lean + theorem closed_embedding.set_integral_map + theorem measurable_embedding.set_integral_map - theorem measure_theory.set_integral_map_of_closed_embedding Modified src/measure_theory/measurable_space.lean + theorem measurable.dite + theorem measurable_embedding.comp + theorem measurable_embedding.exists_measurable_extend + theorem measurable_embedding.id + theorem measurable_embedding.measurable_comp_iff + theorem measurable_embedding.measurable_extend + theorem measurable_embedding.measurable_range_splitting + theorem measurable_embedding.measurable_set_image + theorem measurable_embedding.measurable_set_preimage + theorem measurable_embedding.measurable_set_range + theorem measurable_embedding.of_measurable_inverse + theorem measurable_embedding.of_measurable_inverse_on_range + theorem measurable_embedding.subtype_coe + structure measurable_embedding + theorem measurable_equiv.image_eq_preimage + theorem measurable_equiv.measurable_set_image + theorem measurable_equiv.measurable_set_preimage + theorem measurable_equiv.symm_preimage_preimage + theorem measurable_of_restrict_of_restrict_compl + theorem measurable_set.exists_measurable_proj Modified src/measure_theory/measure/measure_space.lean + theorem ae_measurable.subtype_mk + theorem ae_measurable_restrict_iff_comap_subtype + theorem ae_restrict_iff_subtype + theorem comap_subtype_coe_apply + theorem map_comap_subtype_coe + theorem measurable_embedding.ae_map_iff + theorem measurable_embedding.ae_measurable_comp_iff + theorem measurable_embedding.ae_measurable_map_iff + theorem measurable_embedding.comap_apply + theorem measurable_embedding.map_apply + theorem measurable_embedding.map_comap + theorem measurable_embedding.restrict_map + theorem measurable_set.map_coe_volume - theorem measure_theory.measure.map_comap_subtype_coe + theorem volume_image_subtype_coe + theorem volume_set_coe_def 2021-11-08 06:58:20 c50c2c3 docs(algebra/big_operators): correct documentation for prod (#10206) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean 2021-11-07 10:12:36 ae98aad chore(measure_theory/measure): review API of `mutually_singular` (#10186) ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/lebesgue.lean - def measure_theory.signed_measure.singular_part(s + def measure_theory.signed_measure.singular_part Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean - theorem measure_theory.measure.mutually_singular.add - theorem measure_theory.measure.mutually_singular.add_iff + theorem measure_theory.measure.mutually_singular.add_left + theorem measure_theory.measure.mutually_singular.add_left_iff + theorem measure_theory.measure.mutually_singular.add_right + theorem measure_theory.measure.mutually_singular.add_right_iff + theorem measure_theory.measure.mutually_singular.comm + theorem measure_theory.measure.mutually_singular.mk + theorem measure_theory.measure.mutually_singular.mono + theorem measure_theory.measure.mutually_singular.mono_ac - theorem measure_theory.measure.mutually_singular.of_absolutely_continuous +/- theorem measure_theory.measure.mutually_singular.smul + theorem measure_theory.measure.mutually_singular.smul_nnreal + theorem measure_theory.measure.mutually_singular.sum_left + theorem measure_theory.measure.mutually_singular.sum_right +/- theorem measure_theory.measure.mutually_singular.symm +/- theorem measure_theory.measure.mutually_singular.zero_left +/- theorem measure_theory.measure.mutually_singular.zero_right + theorem measure_theory.measure.sum_of_empty Modified src/topology/instances/ennreal.lean 2021-11-07 09:34:49 7a8a914 refactor(measure_theory/function/l1_space): remove hypothesis (#10185) * from `tendsto_lintegral_norm_of_dominated_convergence` * Missed this in #10181 * Add comment about the ability to weaker `bound_integrable`. ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/integral/bochner.lean 2021-11-07 05:17:04 7d240ce chore(data/matrix/notation): split into 2 files (#10199) I want to use `![a, b]` notation in some files that don't need to import `data.matrix.basic`. ESTIMATED CHANGES Modified src/data/complex/module.lean Added src/data/fin/vec_notation.lean + theorem matrix.add_cons + theorem matrix.cons_add + theorem matrix.cons_append + theorem matrix.cons_eq_zero_iff + theorem matrix.cons_fin_one + theorem matrix.cons_head_tail + theorem matrix.cons_nonzero_iff + theorem matrix.cons_sub + theorem matrix.cons_val_fin_one + theorem matrix.cons_val_one + theorem matrix.cons_val_succ' + theorem matrix.cons_val_succ + theorem matrix.cons_val_zero' + theorem matrix.cons_val_zero + theorem matrix.cons_vec_alt0 + theorem matrix.cons_vec_alt1 + theorem matrix.cons_vec_bit0_eq_alt0 + theorem matrix.cons_vec_bit1_eq_alt1 + theorem matrix.cons_zero_zero + theorem matrix.empty_add_empty + theorem matrix.empty_append + theorem matrix.empty_eq + theorem matrix.empty_sub_empty + theorem matrix.empty_val' + theorem matrix.empty_vec_alt0 + theorem matrix.empty_vec_alt1 + theorem matrix.head_add + theorem matrix.head_cons + theorem matrix.head_fin_const + theorem matrix.head_neg + theorem matrix.head_sub + theorem matrix.head_zero + theorem matrix.neg_cons + theorem matrix.neg_empty + theorem matrix.range_cons + theorem matrix.range_empty + theorem matrix.smul_cons + theorem matrix.smul_empty + theorem matrix.sub_cons + theorem matrix.tail_add + theorem matrix.tail_cons + theorem matrix.tail_neg + theorem matrix.tail_sub + theorem matrix.tail_zero + def matrix.vec_alt0 + theorem matrix.vec_alt0_append + def matrix.vec_alt1 + theorem matrix.vec_alt1_append + def matrix.vec_cons + theorem matrix.vec_cons_const + def matrix.vec_empty + def matrix.vec_head + theorem matrix.vec_head_vec_alt0 + theorem matrix.vec_head_vec_alt1 + theorem matrix.vec_single_eq_const + def matrix.vec_tail + theorem matrix.zero_empty Modified src/data/matrix/notation.lean - theorem matrix.add_cons - theorem matrix.cons_add - theorem matrix.cons_append - theorem matrix.cons_eq_zero_iff - theorem matrix.cons_fin_one - theorem matrix.cons_head_tail - theorem matrix.cons_nonzero_iff - theorem matrix.cons_sub - theorem matrix.cons_val_fin_one - theorem matrix.cons_val_one - theorem matrix.cons_val_succ' - theorem matrix.cons_val_succ - theorem matrix.cons_val_zero' - theorem matrix.cons_val_zero - theorem matrix.cons_vec_alt0 - theorem matrix.cons_vec_alt1 - theorem matrix.cons_vec_bit0_eq_alt0 - theorem matrix.cons_vec_bit1_eq_alt1 - theorem matrix.cons_zero_zero - theorem matrix.empty_add_empty - theorem matrix.empty_append - theorem matrix.empty_eq - theorem matrix.empty_sub_empty - theorem matrix.empty_val' - theorem matrix.empty_vec_alt0 - theorem matrix.empty_vec_alt1 - theorem matrix.head_add - theorem matrix.head_cons - theorem matrix.head_fin_const - theorem matrix.head_neg - theorem matrix.head_sub - theorem matrix.head_zero - theorem matrix.neg_cons - theorem matrix.neg_empty - theorem matrix.range_cons - theorem matrix.range_empty - theorem matrix.smul_cons - theorem matrix.smul_empty - theorem matrix.sub_cons - theorem matrix.tail_add - theorem matrix.tail_cons - theorem matrix.tail_neg - theorem matrix.tail_sub - theorem matrix.tail_zero - def matrix.vec_alt0 - theorem matrix.vec_alt0_append - def matrix.vec_alt1 - theorem matrix.vec_alt1_append - def matrix.vec_cons - theorem matrix.vec_cons_const - def matrix.vec_empty - def matrix.vec_head - theorem matrix.vec_head_vec_alt0 - theorem matrix.vec_head_vec_alt1 - theorem matrix.vec_single_eq_const - def matrix.vec_tail - theorem matrix.zero_empty Modified src/data/real/golden_ratio.lean Modified src/group_theory/solvable.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean 2021-11-06 22:22:28 daac854 feat(analysis/special_functions/log): Relating `log`-inequalities and `exp`-inequalities (#10191) This proves `log x ≤ y ↔ x ≤ exp y` and `x ≤ log y ↔ exp x ≤ y`. ESTIMATED CHANGES Modified src/analysis/special_functions/log.lean + theorem real.le_log_iff_exp_le + theorem real.log_le_iff_le_exp + theorem real.log_lt_iff_lt_exp + theorem real.lt_log_iff_exp_lt 2021-11-06 20:27:44 169bb29 feat(algebra/group/with_one): cleanup algebraic instances (#10194) This: * adds a `has_neg (with_zero α)` instance which sends `0` to `0` and otherwise uses the underlying negation (and the same for `has_inv (with_one α)`). * replaces the `has_div (with_zero α)`, `has_pow (with_zero α) ℕ`, and `has_pow (with_zero α) ℤ` instances in order to produce better definitional properties than the previous default ones. ESTIMATED CHANGES Modified src/algebra/group/with_one.lean + theorem with_one.coe_inv + theorem with_zero.coe_div + theorem with_zero.coe_pow + theorem with_zero.coe_zpow - theorem with_zero.div_coe 2021-11-06 20:27:43 56a9228 feat(analysis/normed_space/continuous_affine_map): define bundled continuous affine maps (#10161) I want to use the result the evaluation map `Hom(E, F) × E → F` is smooth in a category with continuous affine maps as morphisms. It is convenient to have a bundled type for this, despite the necessary boilerplate (proposed here). Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Added src/analysis/normed_space/continuous_affine_map.lean + theorem continuous_affine_map.coe_cont_linear_eq_linear + theorem continuous_affine_map.coe_linear_eq_coe_cont_linear + theorem continuous_affine_map.coe_mk_const_linear_eq_linear + theorem continuous_affine_map.const_cont_linear + def continuous_affine_map.cont_linear + theorem continuous_affine_map.cont_linear_eq_zero_iff_exists_const + theorem continuous_affine_map.cont_linear_map_vsub + theorem continuous_affine_map.map_vadd Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.linear_eq_zero_iff_exists_const Added src/topology/algebra/continuous_affine_map.lean + theorem continuous_affine_map.coe_affine_map_mk + theorem continuous_affine_map.coe_comp + theorem continuous_affine_map.coe_const + theorem continuous_affine_map.coe_continuous_map_mk + theorem continuous_affine_map.coe_injective + theorem continuous_affine_map.coe_mk + theorem continuous_affine_map.coe_to_affine_map + theorem continuous_affine_map.coe_to_continuous_map + def continuous_affine_map.comp + theorem continuous_affine_map.comp_apply + theorem continuous_affine_map.congr_fun + def continuous_affine_map.const + theorem continuous_affine_map.ext + theorem continuous_affine_map.ext_iff + theorem continuous_affine_map.mk_coe + theorem continuous_affine_map.to_affine_map_eq_coe + theorem continuous_affine_map.to_affine_map_injective + def continuous_affine_map.to_continuous_map + theorem continuous_affine_map.to_continuous_map_coe + theorem continuous_affine_map.to_continuous_map_injective + theorem continuous_affine_map.to_fun_eq_coe + structure continuous_affine_map 2021-11-06 20:27:42 26c0c23 feat(algebra/homology/image_to_kernel): homology.map_iso (#9978) ESTIMATED CHANGES Modified src/algebra/homology/image_to_kernel.lean + theorem homology.comp_right_eq_comp_left + theorem homology.map_comp + theorem homology.map_id + def homology.map_iso 2021-11-06 18:49:17 f18278d chore(algebra/opposites): use `injective.*` constructors (#10200) ESTIMATED CHANGES Modified src/algebra/opposites.lean +/- theorem opposite.op_sub +/- theorem opposite.unop_sub 2021-11-06 18:49:16 38caa50 feat(data/nat/basic): `a < a / b * b + b` (#10193) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.lt_div_mul_add 2021-11-06 18:49:15 ebe7951 feat(algebra/big_operators/order): Bound on a product from a pointwise bound (#10190) This proves `finset.le_prod_of_forall_le` which is the dual of `finset.prod_le_of_forall_le`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean +/- theorem finset.card_bUnion_le_card_mul + theorem finset.le_prod_of_forall_le +/- theorem finset.prod_le_of_forall_le 2021-11-06 18:49:14 be412c3 fix(README): update specialties of maintainers (#10086) ESTIMATED CHANGES Modified README.md 2021-11-06 18:15:19 0c54c57 feat(data/set/equitable): A singleton is equitable (#10192) Prove `set.subsingleton.equitable_on` and `set.equitable_on_singleton`. ESTIMATED CHANGES Modified src/data/set/equitable.lean +/- theorem set.equitable_on_empty + theorem set.equitable_on_singleton + theorem set.subsingleton.equitable_on 2021-11-06 12:54:31 af36f1a chore(algebra/group/ulift): use injective.* to define instances (#10172) Also rename `ulift.mul_equiv` to `mul_equiv.ulift` and add some missing instances. ESTIMATED CHANGES Modified src/algebra/group/ulift.lean + def mul_equiv.ulift - def ulift.mul_equiv Modified src/algebra/module/ulift.lean 2021-11-06 11:24:11 4b14ef4 feat(data/fintype): instances for `infinite (α ⊕ β)` and `infinite (α × β)` (#10196) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem infinite_prod + theorem infinite_sum 2021-11-06 09:47:22 239bf05 feat(data/list/basic): list products (#10184) Adding a couple of lemmas about list products. The first is a simpler variant of `head_mul_tail_prod'` in the case where the list is not empty. The other is a variant of `list.prod_ne_zero` for `list ℕ`. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.head_mul_tail_prod' + theorem list.head_mul_tail_prod_of_ne_nil + theorem list.nth_zero_mul_tail_prod + theorem list.prod_pos 2021-11-06 08:31:55 051cb61 feat(data/sym/sym2): Induction on `sym2` (#10189) A few basics about `sym2` that were blatantly missing. ESTIMATED CHANGES Modified src/data/sym/sym2.lean 2021-11-06 02:12:53 4341fff chore(set_theory/cardinal_ordinal): use notation ω (#10197) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.add_eq_left +/- theorem cardinal.add_eq_left_iff +/- theorem cardinal.add_eq_max +/- theorem cardinal.add_eq_right +/- theorem cardinal.add_eq_right_iff +/- theorem cardinal.add_eq_self +/- theorem cardinal.add_lt_of_lt +/- theorem cardinal.add_one_eq +/- theorem cardinal.aleph'_omega +/- theorem cardinal.aleph_zero +/- theorem cardinal.bit0_eq_self +/- theorem cardinal.bit0_lt_bit1 +/- theorem cardinal.bit0_lt_omega +/- theorem cardinal.bit1_eq_self_iff +/- theorem cardinal.bit1_le_bit0 +/- theorem cardinal.bit1_lt_omega +/- theorem cardinal.eq_of_add_eq_of_omega_le +/- theorem cardinal.exists_aleph +/- theorem cardinal.mk_bounded_set_le_of_omega_le +/- theorem cardinal.mk_compl_eq_mk_compl_finite_same +/- theorem cardinal.mk_compl_eq_mk_compl_infinite +/- theorem cardinal.mk_compl_finset_of_omega_le +/- theorem cardinal.mk_compl_of_omega_le +/- theorem cardinal.mul_eq_left +/- theorem cardinal.mul_eq_left_iff +/- theorem cardinal.mul_eq_max +/- theorem cardinal.mul_eq_max_of_omega_le_left +/- theorem cardinal.mul_eq_right +/- theorem cardinal.mul_eq_self +/- theorem cardinal.mul_le_max_of_omega_le_left +/- theorem cardinal.mul_lt_of_lt +/- theorem cardinal.omega_le_aleph' +/- theorem cardinal.omega_le_aleph +/- theorem cardinal.omega_le_bit0 +/- theorem cardinal.omega_le_bit1 +/- theorem cardinal.ord_is_limit +/- theorem cardinal.powerlt_omega +/- theorem cardinal.powerlt_omega_le 2021-11-05 23:39:17 8174bd0 feat(analysis/inner_product_space/rayleigh): Rayleigh quotient produces eigenvectors (#9840) Define `self_adjoint` for an operator `T` to mean `∀ x y, ⟪T x, y⟫ = ⟪x, T y⟫`. (This doesn't require a definition of `adjoint`, although that will come soon.). Prove that a local extremum of the Rayleigh quotient of a self-adjoint operator on the unit sphere is an eigenvector, and use this to prove that in finite dimension a self-adjoint operator has an eigenvector. ESTIMATED CHANGES Modified src/analysis/calculus/lagrange_multipliers.lean + theorem is_local_extr_on.exists_multipliers_of_has_strict_fderiv_at_1d Modified src/analysis/inner_product_space/basic.lean + def continuous_linear_map.re_apply_inner_self + theorem continuous_linear_map.re_apply_inner_self_apply + theorem continuous_linear_map.re_apply_inner_self_continuous + theorem continuous_linear_map.re_apply_inner_self_smul + theorem is_self_adjoint.apply_clm + theorem is_self_adjoint.coe_re_apply_inner_self_apply + theorem is_self_adjoint.conj_inner_sym + def is_self_adjoint + theorem is_self_adjoint_iff_bilin_form Modified src/analysis/inner_product_space/calculus.lean + theorem has_strict_fderiv_at.inner + theorem has_strict_fderiv_at_norm_sq Added src/analysis/inner_product_space/rayleigh.lean + theorem continuous_linear_map.image_rayleigh_eq_image_rayleigh_sphere + theorem continuous_linear_map.infi_rayleigh_eq_infi_rayleigh_sphere + theorem continuous_linear_map.rayleigh_smul + theorem continuous_linear_map.supr_rayleigh_eq_supr_rayleigh_sphere + theorem is_self_adjoint.eq_smul_self_of_is_local_extr_on + theorem is_self_adjoint.eq_smul_self_of_is_local_extr_on_real + theorem is_self_adjoint.has_eigenvalue_infi_of_finite_dimensional + theorem is_self_adjoint.has_eigenvalue_supr_of_finite_dimensional + theorem is_self_adjoint.has_eigenvector_of_is_local_extr_on + theorem is_self_adjoint.has_eigenvector_of_is_max_on + theorem is_self_adjoint.has_eigenvector_of_is_min_on + theorem is_self_adjoint.has_strict_fderiv_at_re_apply_inner_self + theorem is_self_adjoint.linearly_dependent_of_is_local_extr_on Modified src/order/filter/extr.lean + theorem is_max_on.supr_eq + theorem is_min_on.infi_eq 2021-11-05 19:40:53 6cd6975 feat(order/lattice): add `inf_lt_sup` (#10178) Also add `inf_le_sup`, `lt_or_lt_iff_ne`, and `min_lt_max`. ESTIMATED CHANGES Modified src/order/basic.lean + theorem lt_or_lt_iff_ne Modified src/order/lattice.lean + theorem inf_le_sup + theorem inf_lt_sup Modified src/order/min_max.lean + theorem min_lt_max 2021-11-05 19:40:52 85f6420 feat(algebra/group/inj_surj): add `injective.monoid_pow` etc (#10152) Add versions of some constructors that take `pow`/`zpow`/`nsmul`/`zsmul` as explicit arguments. ESTIMATED CHANGES Modified src/algebra/group/inj_surj.lean 2021-11-05 19:07:04 d69501f feat(category_theory/limits/shapes/multiequalizer): Multi(co)equalizers (#10169) This PR adds another special shape to the limits library, which directly generalizes shapes for many other special limits (like pullbacks, equalizers, etc.). A `multiequalizer` can be thought of an an equalizer of two maps between two products. This will be used later on in the context of sheafification. I don't know if there is a standard name for the gadgets this PR introduces. I would be happy to change the names if needed. ESTIMATED CHANGES Added src/category_theory/limits/shapes/multiequalizer.lean + def category_theory.limits.has_multicoequalizer + def category_theory.limits.has_multiequalizer + theorem category_theory.limits.multicoequalizer.condition + def category_theory.limits.multicoequalizer.desc + theorem category_theory.limits.multicoequalizer.hom_ext + def category_theory.limits.multicoequalizer.multicofork + theorem category_theory.limits.multicoequalizer.multicofork_ι_app_right + theorem category_theory.limits.multicoequalizer.multicofork_π + def category_theory.limits.multicoequalizer.π + theorem category_theory.limits.multicoequalizer.π_desc + def category_theory.limits.multicoequalizer + theorem category_theory.limits.multicofork.condition + theorem category_theory.limits.multicofork.fst_app_right + def category_theory.limits.multicofork.of_π + theorem category_theory.limits.multicofork.snd_app_right + def category_theory.limits.multicofork.π + theorem category_theory.limits.multicofork.π_eq_app_right + def category_theory.limits.multicofork + def category_theory.limits.multicospan_index.multicospan + theorem category_theory.limits.multicospan_index.multicospan_map_fst + theorem category_theory.limits.multicospan_index.multicospan_map_snd + theorem category_theory.limits.multicospan_index.multicospan_obj_left + theorem category_theory.limits.multicospan_index.multicospan_obj_right + structure category_theory.limits.multicospan_index + theorem category_theory.limits.multiequalizer.condition + theorem category_theory.limits.multiequalizer.hom_ext + def category_theory.limits.multiequalizer.lift + theorem category_theory.limits.multiequalizer.lift_ι + def category_theory.limits.multiequalizer.multifork + theorem category_theory.limits.multiequalizer.multifork_ι + theorem category_theory.limits.multiequalizer.multifork_π_app_left + def category_theory.limits.multiequalizer.ι + def category_theory.limits.multiequalizer + theorem category_theory.limits.multifork.app_left_fst + theorem category_theory.limits.multifork.app_left_snd + theorem category_theory.limits.multifork.condition + def category_theory.limits.multifork.of_ι + def category_theory.limits.multifork.ι + theorem category_theory.limits.multifork.ι_eq_app_left + def category_theory.limits.multifork + def category_theory.limits.multispan_index.multispan + theorem category_theory.limits.multispan_index.multispan_map_fst + theorem category_theory.limits.multispan_index.multispan_map_snd + theorem category_theory.limits.multispan_index.multispan_obj_left + theorem category_theory.limits.multispan_index.multispan_obj_right + structure category_theory.limits.multispan_index + def category_theory.limits.walking_multicospan.hom.comp + inductive category_theory.limits.walking_multicospan.hom + inductive category_theory.limits.walking_multicospan + def category_theory.limits.walking_multispan.hom.comp + inductive category_theory.limits.walking_multispan.hom + inductive category_theory.limits.walking_multispan 2021-11-05 17:51:20 cc59673 chore(*complex*): add a few simp lemmas (#10187) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/basic.lean + theorem complex.exp_add_pi_mul_I +/- theorem complex.exp_int_mul_two_pi_mul_I +/- theorem complex.exp_nat_mul_two_pi_mul_I +/- theorem complex.exp_pi_mul_I + theorem complex.exp_sub_pi_mul_I +/- theorem complex.exp_two_pi_mul_I Modified src/data/complex/basic.lean + theorem complex.norm_sq_mk Modified src/data/complex/exponential.lean + theorem complex.exp_of_real_mul_I_im + theorem complex.exp_of_real_mul_I_re 2021-11-05 17:51:18 a71bfdc feat(analysis/calculus/times_cont_diff): `equiv.prod_assoc` is smooth. (#10165) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_prod_assoc + theorem times_cont_diff_prod_assoc_symm Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.coe_prod_assoc + theorem linear_isometry_equiv.coe_prod_assoc_symm 2021-11-05 17:51:17 d9a80ee refactor(data/multiset/locally_finite): Generalize `multiset.Ico` to locally finite orders (#10031) This deletes `data.multiset.intervals` entirely, redefines `multiset.Ico` using `locally_finite_order` and restores the lemmas in their correct generality: * `multiset.Ico.map_add` → `multiset.map_add_left_Ico`, `multiset.map_add_right_Ico` * `multiset.Ico.eq_zero_of_le` → `multiset.Ico_eq_zero_of_le ` * `multiset.Ico.self_eq_zero` → `multiset.Ico_self` * `multiset.Ico.nodup` → `multiset.nodup_Ico` * `multiset.Ico.mem` → `multiset.mem_Ico` * `multiset.Ico.not_mem_top` → `multiset.right_not_mem_Ico` * `multiset.Ico.inter_consecutive` → `multiset.Ico_inter_Ico_of_le` * `multiset.Ico.filter_something` → `multiset.filter_Ico_something` * `multiset.Ico.eq_cons` → `multiset.Ioo_cons_left` * `multiset.Ico.succ_top` →`multiset.Ico_cons_right` `open set multiset` now causes a (minor) clash. This explains the changes to `analysis.box_integral.divergence_theorem` and `measure_theory.integral.divergence_theorem` ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean +/- theorem finset.Ico_filter_le_left +/- theorem finset.Ico_filter_le_of_le_left +/- theorem finset.Ico_filter_le_of_left_le +/- theorem finset.Ico_filter_le_of_right_le +/- theorem finset.Ico_filter_lt_of_le_left +/- theorem finset.Ico_filter_lt_of_le_right +/- theorem finset.Ico_filter_lt_of_right_le Modified src/data/multiset/default.lean Deleted src/data/multiset/intervals.lean - theorem multiset.Ico.add_consecutive - theorem multiset.Ico.card - theorem multiset.Ico.eq_cons - theorem multiset.Ico.eq_zero_iff - theorem multiset.Ico.eq_zero_of_le - theorem multiset.Ico.filter_le - theorem multiset.Ico.filter_le_of_bot - theorem multiset.Ico.filter_le_of_le - theorem multiset.Ico.filter_le_of_le_bot - theorem multiset.Ico.filter_le_of_top_le - theorem multiset.Ico.filter_lt - theorem multiset.Ico.filter_lt_of_ge - theorem multiset.Ico.filter_lt_of_le_bot - theorem multiset.Ico.filter_lt_of_top_le - theorem multiset.Ico.inter_consecutive - theorem multiset.Ico.map_add - theorem multiset.Ico.map_sub - theorem multiset.Ico.mem - theorem multiset.Ico.nodup - theorem multiset.Ico.not_mem_top - theorem multiset.Ico.pred_singleton - theorem multiset.Ico.self_eq_zero - theorem multiset.Ico.succ_singleton - theorem multiset.Ico.succ_top - theorem multiset.Ico.zero_bot - def multiset.Ico Modified src/data/multiset/locally_finite.lean + theorem multiset.Ico_add_Ico_eq_Ico + theorem multiset.Ico_cons_right + theorem multiset.Ico_disjoint_Ico + theorem multiset.Ico_eq_zero_iff + theorem multiset.Ico_eq_zero_of_le + theorem multiset.Ico_filter_le + theorem multiset.Ico_filter_le_left + theorem multiset.Ico_filter_le_of_le_left + theorem multiset.Ico_filter_le_of_left_le + theorem multiset.Ico_filter_le_of_right_le + theorem multiset.Ico_filter_lt + theorem multiset.Ico_filter_lt_of_le_left + theorem multiset.Ico_filter_lt_of_le_right + theorem multiset.Ico_filter_lt_of_right_le + theorem multiset.Ico_inter_Ico + theorem multiset.Ico_inter_Ico_of_le + theorem multiset.Ico_self + theorem multiset.Ico_sub_Ico_left + theorem multiset.Ico_sub_Ico_right + theorem multiset.Ico_subset_Ico_iff + theorem multiset.Ioo_cons_left + theorem multiset.left_mem_Icc + theorem multiset.left_mem_Ico + theorem multiset.left_not_mem_Ioc + theorem multiset.left_not_mem_Ioo + theorem multiset.map_add_left_Ico + theorem multiset.map_add_right_Ico + theorem multiset.nodup_Ico + theorem multiset.right_mem_Icc + theorem multiset.right_mem_Ioc + theorem multiset.right_not_mem_Ico + theorem multiset.right_not_mem_Ioo Modified src/data/nat/interval.lean +/- theorem nat.Icc_succ_left +/- theorem nat.Ico_succ_left +/- theorem nat.Ico_succ_right +/- theorem nat.Ico_succ_singleton +/- theorem nat.Ico_zero_eq_range +/- theorem nat.Iio_eq_range +/- theorem nat.image_sub_const_Ico +/- theorem nat.range_image_pred_top_sub Modified src/order/locally_finite.lean + def multiset.Ico + theorem multiset.mem_Ico +/- theorem set.finite_Icc +/- theorem set.finite_Ico +/- theorem set.finite_Ioc +/- theorem set.finite_Ioo 2021-11-05 16:25:14 5f5ce2b feat(combinatorics/simple_graph): adding simple_graph.support and mem_support / support_mono lemmas (#10176) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.mem_support + def simple_graph.support + theorem simple_graph.support_mono Modified src/data/rel.lean + theorem rel.dom_mono 2021-11-05 15:19:39 8ac2fa0 chore(linear_algebra/affine_space/affine_map): make `affine_map.coe_sub` true by definition (#10182) This makes life slightly easier in some work following on from https://github.com/leanprover-community/mathlib/pull/10161 Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean +/- theorem affine_map.add_linear +/- theorem affine_map.coe_sub + theorem affine_map.neg_linear + theorem affine_map.sub_linear 2021-11-05 15:19:38 b22a7c7 refactor(measure_theory/integral/bochner): remove superfluous hypothesis (#10181) * Remove hypothesis from `tendsto_integral_of_dominated_convergence` that was superfluous * This results in simplifying some proofs, and removing some hypotheses from other lemmas * Also remove some `ae_measurable` hypotheses for functions that were also assumed to be `integrable`. ESTIMATED CHANGES Modified src/analysis/calculus/parametric_integral.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/integral_eq_improper.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/set_integral.lean 2021-11-05 15:19:37 88b4ce7 feat(algebra/order/with_zero): add with_zero.linear_ordered_comm_grou… (#10180) …p_with_zero ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean 2021-11-05 13:33:49 b31af6d refactor(algebra/group): move `monoid.has_pow` etc to `algebra.group.defs` (#10147) This way we can state theorems about `pow`/`nsmul` using notation `^` and `•` right away. Also move some `ext` lemmas to a new file and rewrite proofs using properties of `monoid_hom`s. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/big_operators/basic.lean + theorem finset.prod_zpow - theorem finset.zsmul_sum Modified src/algebra/group/commute.lean +/- theorem commute.is_unit_mul_iff + theorem commute.pow_left + theorem commute.pow_pow + theorem commute.pow_pow_self + theorem commute.pow_right + theorem commute.pow_self + theorem commute.self_pow +/- theorem commute.units_inv_left + theorem commute.units_inv_left_iff: - theorem commute.units_inv_left_iff +/- theorem commute.units_inv_right +/- theorem commute.units_inv_right_iff +/- theorem is_unit_mul_self_iff + theorem pow_succ' Modified src/algebra/group/defs.lean - theorem cancel_comm_monoid.ext - theorem cancel_comm_monoid.to_comm_monoid_injective - theorem cancel_monoid.ext - theorem cancel_monoid.to_left_cancel_monoid_injective - theorem comm_group.ext - theorem comm_monoid.ext - theorem comm_monoid.to_monoid_injective - theorem div_inv_monoid.ext - theorem group.ext - theorem left_cancel_monoid.ext - theorem left_cancel_monoid.to_monoid_injective - theorem monoid.ext - theorem npow_add + theorem npow_eq_pow - theorem npow_one + theorem pow_succ + theorem pow_zero - theorem right_cancel_monoid.ext - theorem right_cancel_monoid.to_monoid_injective + theorem zpow_coe_nat + theorem zpow_eq_pow + theorem zpow_neg_succ_of_nat + theorem zpow_of_nat + theorem zpow_zero Added src/algebra/group/ext.lean + theorem cancel_comm_monoid.ext + theorem cancel_comm_monoid.to_comm_monoid_injective + theorem cancel_monoid.ext + theorem cancel_monoid.to_left_cancel_monoid_injective + theorem comm_group.ext + theorem comm_monoid.ext + theorem comm_monoid.to_monoid_injective + theorem div_inv_monoid.ext + theorem group.ext + theorem left_cancel_monoid.ext + theorem left_cancel_monoid.to_monoid_injective + theorem monoid.ext + theorem right_cancel_monoid.ext + theorem right_cancel_monoid.to_monoid_injective Modified src/algebra/group/hom.lean + theorem monoid_hom.map_div' + theorem monoid_hom.map_pow + theorem monoid_hom.map_zpow' + theorem monoid_hom.map_zpow Modified src/algebra/group/hom_instances.lean Modified src/algebra/group/pi.lean Modified src/algebra/group/semiconj.lean + theorem semiconj_by.pow_right Modified src/algebra/group/type_tags.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group_power/basic.lean - theorem commute.pow_left - theorem commute.pow_pow - theorem commute.pow_pow_self - theorem commute.pow_right - theorem commute.pow_self - theorem commute.self_pow - theorem monoid_hom.map_pow - theorem npow_eq_pow - theorem pow_succ' - theorem pow_succ - theorem pow_zero - theorem semiconj_by.pow_right - theorem zpow_coe_nat - theorem zpow_eq_pow - theorem zpow_neg_succ_of_nat - theorem zpow_of_nat - theorem zpow_zero Modified src/algebra/group_power/lemmas.lean - theorem monoid_hom.map_zpow Modified src/algebra/opposites.lean Modified src/algebra/order/archimedean.lean Modified src/algebra/order/pi.lean Modified src/algebra/periodic.lean Modified src/algebra/ring/pi.lean Modified src/algebra/ring/ulift.lean Modified src/analysis/normed_space/basic.lean Modified src/category_theory/preadditive/schur.lean Modified src/data/finsupp/basic.lean Modified src/data/holor.lean Modified src/group_theory/group_action/defs.lean Modified src/group_theory/subgroup/basic.lean +/- def subgroup.saturated Modified src/group_theory/submonoid/membership.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/quotient.lean Modified src/ring_theory/localization.lean Modified src/tactic/abel.lean Modified src/topology/algebra/module.lean 2021-11-05 10:08:26 16af388 feat(data/quot): add `quotient.lift₂_mk` (#10173) ESTIMATED CHANGES Modified src/data/quot.lean + theorem quotient.lift₂_mk 2021-11-05 08:27:18 35d3628 chore(data/bool): add `bool.lt_iff` (#10179) ESTIMATED CHANGES Modified src/data/bool.lean +/- theorem bool.ff_lt_tt + theorem bool.lt_iff 2021-11-05 06:48:59 8991f28 feat(measure_theory/covering/vitali_family): define Vitali families (#10057) Vitali families are families of sets (for instance balls around each point in vector spaces) that satisfy covering theorems. Their main feature is that differentiation of measure theorems hold along Vitali families. This PR is a stub defining Vitali families, and giving examples of them thanks to the Besicovitch and Vitali covering theorems. The differentiation theorem is left for another PR. ESTIMATED CHANGES Modified src/data/set/pairwise.lean + theorem pairwise_subtype_iff_pairwise_set +/- theorem set.pairwise_disjoint_empty +/- theorem set.pairwise_disjoint_singleton Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/vitali.lean Added src/measure_theory/covering/vitali_family.lean + theorem vitali_family.eventually_filter_at_iff + theorem vitali_family.eventually_filter_at_mem_sets + theorem vitali_family.eventually_filter_at_subset_of_nhds + def vitali_family.filter_at + theorem vitali_family.fine_subfamily_on.covering_disjoint + theorem vitali_family.fine_subfamily_on.covering_disjoint_subtype + theorem vitali_family.fine_subfamily_on.covering_mem + theorem vitali_family.fine_subfamily_on.covering_mem_family + theorem vitali_family.fine_subfamily_on.exists_disjoint_covering_ae + theorem vitali_family.fine_subfamily_on.index_countable + theorem vitali_family.fine_subfamily_on.index_subset + theorem vitali_family.fine_subfamily_on.measure_diff_bUnion + theorem vitali_family.fine_subfamily_on.measure_le_tsum + theorem vitali_family.fine_subfamily_on.measure_le_tsum_of_absolutely_continuous + def vitali_family.fine_subfamily_on + theorem vitali_family.fine_subfamily_on_of_frequently + theorem vitali_family.frequently_filter_at_iff + theorem vitali_family.mem_filter_at_iff + def vitali_family.mono + structure vitali_family 2021-11-05 06:00:09 6f9ec12 doc(group_theory/sylow): Expand Frattini's argument docstring (#10174) Expands the docstring for Frattini's argument. ESTIMATED CHANGES Modified src/group_theory/sylow.lean 2021-11-05 02:24:22 8490f2a chore(scripts): update nolints.txt (#10177) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-05 00:43:55 41a820d feat(number_theory/lucas_primality): Add theorem for Lucas primality test (#8820) This is a PR for adding the [Lucas primality test](https://en.wikipedia.org/wiki/Lucas_primality_test) to mathlib. This tells us that a number `p` is prime when an element `a : zmod p` has order `p-1` . ESTIMATED CHANGES Modified src/algebra/divisibility.lean + theorem dvd_iff_exists_eq_mul_left Modified src/data/nat/totient.lean + theorem nat.card_units_zmod_lt_sub_one + theorem nat.prime_iff_card_units + theorem nat.totient_lt +/- theorem zmod.card_units_eq_totient Modified src/group_theory/order_of_element.lean + theorem order_of_eq_of_pow_and_pow_div_prime Added src/number_theory/lucas_primality.lean + theorem lucas_primality 2021-11-04 22:36:42 d6a57f8 feat(data/finset/prod): When `finset.product` is nonempty (#10170) and two lemmas about how it interacts with the union. ESTIMATED CHANGES Modified src/data/finset/prod.lean + theorem finset.nonempty.fst + theorem finset.nonempty.product + theorem finset.nonempty.snd + theorem finset.nonempty_product + theorem finset.product_union + theorem finset.union_product 2021-11-04 22:36:40 b064622 feat(data/fin/interval): Cardinality of `finset.Ixi`/`finset.Iix` in `fin` (#10168) This proves `(Ici a).card = n + 1 - a`, `(Ioi a).card = n - a`, `(Iic b).card = b + 1`, `(Iio b).card = b` where `a b : fin (n + 1)` (and also `a b : ℕ` for the last two). ESTIMATED CHANGES Modified src/data/fin/interval.lean + theorem fin.Ici_eq_finset_subtype + theorem fin.Iic_eq_finset_subtype + theorem fin.Iio_eq_finset_subtype + theorem fin.Ioi_eq_finset_subtype + theorem fin.card_Ici + theorem fin.card_Iic + theorem fin.card_Iio + theorem fin.card_Ioi + theorem fin.card_fintype_Ici + theorem fin.card_fintype_Iic + theorem fin.card_fintype_Iio + theorem fin.card_fintype_Ioi + theorem fin.map_subtype_embedding_Ici + theorem fin.map_subtype_embedding_Iic + theorem fin.map_subtype_embedding_Iio + theorem fin.map_subtype_embedding_Ioi Modified src/data/nat/interval.lean + theorem nat.card_Iic + theorem nat.card_Iio + theorem nat.card_fintype_Iic + theorem nat.card_fintype_Iio 2021-11-04 22:36:39 fab61c9 chore(topology/continuous_function/bounded): add simple lemmas (#10149) ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.add_comp_continuous + theorem bounded_continuous_function.coe_to_continuous_fun + theorem bounded_continuous_function.continuous_comp_continuous + theorem bounded_continuous_function.eq_of_empty + theorem bounded_continuous_function.lipschitz_comp_continuous + theorem bounded_continuous_function.zero_comp_continuous 2021-11-04 22:36:37 466fd27 feat(algebra/group_with_zero/basic): relax some commutativity assumptions (#10075) Moving some lemmas so they require group_with_zero instead of comm_group_with_zero, using the generalization linter. ESTIMATED CHANGES Modified archive/imo/imo2008_q4.lean Modified src/algebra/group_with_zero/basic.lean 2021-11-04 22:36:36 ce0e058 feat(data/equiv/mul_add): add lemmas about multiplication and addition on a group being bijective and finite cancel_monoid_with_zeros (#10046) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem group.mul_left_bijective + theorem group.mul_right_bijective + theorem mul_left_bijective₀ + theorem mul_right_bijective₀ + theorem units.mul_left_bijective + theorem units.mul_right_bijective Modified src/ring_theory/integral_domain.lean + def group_with_zero_of_fintype + theorem mul_left_bijective_of_fintype₀ - theorem mul_left_bijective₀ + theorem mul_right_bijective_of_fintype₀ - theorem mul_right_bijective₀ 2021-11-04 21:07:34 773a7a4 feat(analysis/ODE): prove Picard-Lindelöf/Cauchy-Lipschitz Theorem (#9791) ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/analysis/ODE/picard_lindelof.lean + theorem exists_forall_deriv_within_Icc_eq_of_lipschitz_of_continuous + theorem picard_lindelof.continuous_proj + theorem picard_lindelof.dist_t₀_le + theorem picard_lindelof.exists_contracting_iterate + theorem picard_lindelof.exists_fixed + theorem picard_lindelof.exists_solution + theorem picard_lindelof.fun_space.continuous_v_comp + theorem picard_lindelof.fun_space.dist_apply_le_dist + theorem picard_lindelof.fun_space.dist_iterate_next_apply_le + theorem picard_lindelof.fun_space.dist_iterate_next_le + theorem picard_lindelof.fun_space.dist_le_of_forall + theorem picard_lindelof.fun_space.dist_next_apply_le_of_le + theorem picard_lindelof.fun_space.has_deriv_within_at_next + theorem picard_lindelof.fun_space.interval_integrable_v_comp + theorem picard_lindelof.fun_space.map_t₀ + def picard_lindelof.fun_space.next + theorem picard_lindelof.fun_space.next_apply + theorem picard_lindelof.fun_space.norm_v_comp_le + theorem picard_lindelof.fun_space.range_to_continuous_map + def picard_lindelof.fun_space.to_continuous_map + theorem picard_lindelof.fun_space.uniform_inducing_to_continuous_map + def picard_lindelof.fun_space.v_comp + theorem picard_lindelof.fun_space.v_comp_apply_coe + structure picard_lindelof.fun_space + theorem picard_lindelof.norm_le + def picard_lindelof.proj + theorem picard_lindelof.proj_coe + theorem picard_lindelof.proj_of_mem + def picard_lindelof.t_dist + theorem picard_lindelof.t_dist_nonneg + theorem picard_lindelof.t_min_le_t_max + structure picard_lindelof Modified src/data/set/intervals/unordered_interval.lean + theorem set.interval_subset_Icc Modified src/topology/order.lean 2021-11-04 20:30:13 74c27b2 feat(topology/sheaves): Pullback of presheaf (#9961) Defined the pullback of a presheaf along a continuous map, and proved that it is adjoint to pushforwards and it preserves stalks. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/topology/sheaves/presheaf.lean +/- theorem Top.presheaf.id_pushforward + def Top.presheaf.pullback.id + theorem Top.presheaf.pullback.id_inv_app + def Top.presheaf.pullback + def Top.presheaf.pullback_map + def Top.presheaf.pullback_obj + def Top.presheaf.pullback_obj_obj_of_image_open + def Top.presheaf.pushforward_pullback_adjunction Modified src/topology/sheaves/stalks.lean + def Top.presheaf.germ_to_pullback_stalk + def Top.presheaf.stalk_pullback_hom + def Top.presheaf.stalk_pullback_inv + def Top.presheaf.stalk_pullback_iso 2021-11-04 18:49:13 79eb934 chore(data/mv_polynomial/basic): add `map_alg_hom_coe_ring_hom` (#10158) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.map_alg_hom_coe_ring_hom 2021-11-04 18:49:11 11439d8 chore(algebra/direct_sum/internal): add missing simp lemmas (#10154) These previously weren't needed when these were `@[reducible] def`s as `simp` saw right through them. ESTIMATED CHANGES Modified src/algebra/direct_sum/internal.lean + theorem submodule.set_like.coe_galgebra_to_fun Modified src/algebra/graded_monoid.lean + theorem set_like.coe_ghas_mul + theorem set_like.coe_ghas_one + theorem set_like.coe_gpow 2021-11-04 18:49:10 828e100 feat(data/finset/interval): `finset α` is a locally finite order (#9963) ESTIMATED CHANGES Modified src/analysis/box_integral/divergence_theorem.lean Modified src/data/finset/basic.lean Added src/data/finset/interval.lean + theorem finset.Icc_eq_filter_powerset + theorem finset.Icc_eq_image_powerset + theorem finset.Ico_eq_filter_ssubsets + theorem finset.Ico_eq_image_ssubsets + theorem finset.Iic_eq_powerset + theorem finset.Iio_eq_ssubsets + theorem finset.Ioc_eq_filter_powerset + theorem finset.Ioo_eq_filter_ssubsets + theorem finset.card_Icc_finset + theorem finset.card_Ico_finset + theorem finset.card_Ioc_finset + theorem finset.card_Ioo_finset Modified src/data/finset/locally_finite.lean + theorem finset.Icc_erase_left + theorem finset.Icc_erase_right +/- theorem finset.Ico_disjoint_Ico_consecutive +/- theorem finset.Ico_insert_right +/- theorem finset.Ico_inter_Ico_consecutive +/- theorem finset.Ioo_insert_left + theorem finset.card_Ico_eq_card_Icc_sub_one + theorem finset.card_Ioc_eq_card_Icc_sub_one + theorem finset.card_Ioo_eq_card_Icc_sub_two + theorem finset.card_Ioo_eq_card_Ico_sub_one + theorem finset.left_mem_Icc + theorem finset.left_mem_Ico + theorem finset.left_not_mem_Ioc + theorem finset.left_not_mem_Ioo + theorem finset.right_mem_Icc + theorem finset.right_mem_Ioc +/- theorem finset.right_not_mem_Ico + theorem finset.right_not_mem_Ioo Modified src/data/set/basic.lean Modified src/measure_theory/integral/divergence_theorem.lean Modified src/order/boolean_algebra.lean + theorem sdiff_le_sdiff_left + theorem sdiff_le_sdiff_of_sup_le_sup_left + theorem sdiff_le_sdiff_of_sup_le_sup_right + theorem sdiff_le_sdiff_right - theorem sdiff_le_sdiff_self - theorem sdiff_le_self_sdiff + theorem sdiff_lt_sdiff_right + theorem sdiff_sup_cancel + theorem sup_le_of_le_sdiff_left + theorem sup_le_of_le_sdiff_right + theorem sup_lt_of_lt_sdiff_left + theorem sup_lt_of_lt_sdiff_right + theorem sup_sdiff_cancel_right - theorem sup_sdiff_of_le Modified src/order/locally_finite.lean Modified src/order/symm_diff.lean 2021-11-04 17:11:43 cf2ff03 feat(group_theory/sylow): Sylow subgroups are nontrivial! (#10144) These lemmas (finally!) connect the work of @ChrisHughes24 with the recent definition of Sylow subgroups, to show that Sylow subgroups are actually nontrivial! ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.dvd_card_of_dvd_card + theorem sylow.ne_bot_of_dvd_card + theorem sylow.pow_dvd_card_of_pow_dvd_card 2021-11-04 17:11:42 52cd445 refactor(data/set/pairwise): Indexed sets as arguments to `set.pairwise_disjoint` (#9898) This will allow to express the bind operation: you can't currently express that the pairwise disjoint union of pairwise disjoint sets pairwise disjoint. Here's the corresponding statement with `finset.sup_indep` (defined in #9867): ```lean lemma sup_indep.sup {s : finset ι'} {g : ι' → finset ι} {f : ι → α} (hs : s.sup_indep (λ i, (g i).sup f)) (hg : ∀ i' ∈ s, (g i').sup_indep f) : (s.sup g).sup_indep f := ``` You currently can't do `set.pairwise_disjoint s (λ i, ⋃ x ∈ g i, f x)`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_bUnion Modified src/algebra/big_operators/ring.lean Modified src/data/set/pairwise.lean +/- theorem set.bUnion_diff_bUnion_eq + theorem set.inj_on.pairwise_disjoint_image +/- theorem set.pairwise_disjoint.elim' +/- theorem set.pairwise_disjoint.elim +/- theorem set.pairwise_disjoint.elim_set +/- theorem set.pairwise_disjoint.image_of_le +/- theorem set.pairwise_disjoint.insert + theorem set.pairwise_disjoint.mono + theorem set.pairwise_disjoint.mono_on +/- theorem set.pairwise_disjoint.range +/- theorem set.pairwise_disjoint.subset + theorem set.pairwise_disjoint.union +/- def set.pairwise_disjoint + theorem set.pairwise_disjoint_Union +/- theorem set.pairwise_disjoint_empty +/- theorem set.pairwise_disjoint_fiber +/- theorem set.pairwise_disjoint_insert - theorem set.pairwise_disjoint_on_mono +/- theorem set.pairwise_disjoint_range_singleton + theorem set.pairwise_disjoint_sUnion +/- theorem set.pairwise_disjoint_singleton + theorem set.pairwise_disjoint_union Modified src/data/setoid/partition.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/vitali.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/topology/bases.lean + theorem set.pairwise_disjoint.countable_of_is_open + theorem set.pairwise_disjoint.countable_of_nonempty_interior - theorem topological_space.countable_of_is_open_of_disjoint - theorem topological_space.countable_of_nonempty_interior_of_disjoint 2021-11-04 15:29:36 5187a42 feat(linear_algebra/affine_space/affine_map): decomposition of an affine map between modules as an equiv (#10162) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.smul_linear + def affine_map.to_const_prod_linear_map 2021-11-04 15:29:34 22ec295 chore(data/set): lemmas about `disjoint` (#10148) ESTIMATED CHANGES Modified src/data/set/intervals/disjoint.lean + theorem set.Ici_disjoint_Iic + theorem set.Iic_disjoint_Ici Modified src/data/set/lattice.lean + theorem set.disjoint_image_of_injective + theorem set.disjoint_preimage 2021-11-04 15:29:33 69189d4 split(data/finset/prod): split off `data.finset.basic` (#10142) Killing the giants. This moves `finset.product`, `finset.diag`, `finset.off_diag` to their own file, the theme being "finsets on `α × β`". The copyright header now credits: * Johannes Hölzl for ba95269a65a77c8ab5eae075f842fdad0c0a7aaf * Mario Carneiro * Oliver Nash for #4502 ESTIMATED CHANGES Modified src/data/finset/basic.lean - theorem finset.card_product - def finset.diag - theorem finset.diag_card - theorem finset.diag_empty - theorem finset.empty_product - theorem finset.filter_product - theorem finset.filter_product_card - theorem finset.mem_diag - theorem finset.mem_off_diag - theorem finset.mem_product - def finset.off_diag - theorem finset.off_diag_card - theorem finset.off_diag_empty - theorem finset.product_bUnion - theorem finset.product_empty - theorem finset.product_eq_bUnion - theorem finset.product_subset_product - theorem finset.product_subset_product_left - theorem finset.product_subset_product_right - theorem finset.product_val - theorem finset.subset_product Added src/data/finset/prod.lean + theorem finset.card_product + def finset.diag + theorem finset.diag_card + theorem finset.diag_empty + theorem finset.empty_product + theorem finset.filter_product + theorem finset.filter_product_card + theorem finset.mem_diag + theorem finset.mem_off_diag + theorem finset.mem_product + def finset.off_diag + theorem finset.off_diag_card + theorem finset.off_diag_empty + theorem finset.product_bUnion + theorem finset.product_empty + theorem finset.product_eq_bUnion + theorem finset.product_subset_product + theorem finset.product_subset_product_left + theorem finset.product_subset_product_right + theorem finset.product_val + theorem finset.subset_product Modified src/data/fintype/basic.lean 2021-11-04 13:04:54 de79226 feat(ring_theory/polynomial/basic): `polynomial.ker_map_ring_hom` and `mv_polynomial.ker_map` (#10160) ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean + theorem mv_polynomial.ker_map + theorem polynomial.ker_map_ring_hom 2021-11-04 13:04:53 2129d05 chore(measure_theory/function/special_functions): import inner_product_space.basic instead of inner_product_space.calculus (#10159) Right now this changes almost nothing because other imports like `analysis.special_functions.pow` depend on calculus, but I am changing that in other PRs. `measure_theory/function/special_functions` will soon not depend on calculus at all. ESTIMATED CHANGES Modified src/measure_theory/function/special_functions.lean 2021-11-04 13:04:51 b890836 chore(analysis/calculus/times_cont_diff): rename `linear_isometry_map.times_cont_diff`; drop `_map` (#10155) I think the old name is a typo; the new name enables dot notation. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem linear_isometry.times_cont_diff - theorem linear_isometry_map.times_cont_diff 2021-11-04 13:04:50 3cbe0fe feat(linear_algebra/matrix/nonsingular_inverse): determinant of inverse is inverse of determinant (#10038) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem inv_pow_sub Modified src/algebra/group_with_zero/basic.lean + theorem is_unit.ring_inverse + theorem is_unit_ring_inverse Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.conj_transpose_nonsing_inv + theorem matrix.det_nonsing_inv + theorem matrix.det_nonsing_inv_mul_det +/- theorem matrix.is_unit_nonsing_inv_det_iff - theorem matrix.nonsing_inv_det + theorem matrix.nonsing_inv_eq_ring_inverse 2021-11-04 13:04:48 17afc5c feat(topology/algebra/group_with_zero): continuity lemma for division (#9959) * This even applies when dividing by `0`. * From the sphere eversion project. * This PR mentions `filter.tendsto_prod_top_iff` which is added by #9958 ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.prod_top Modified src/topology/algebra/group_with_zero.lean + theorem continuous.comp_div_cases + theorem continuous_at.comp_div_cases 2021-11-04 11:24:16 211bdff feat(data/nat/choose/basic): add some inequalities showing that choose is monotonic in the first argument (#10102) From flt-regular ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean + theorem nat.choose_le_add + theorem nat.choose_le_choose + theorem nat.choose_le_succ + theorem nat.choose_mono 2021-11-04 11:24:14 1f0d878 feat(data/list): standardize list prefixes and suffixes (#10052) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.drop_sublist + theorem list.drop_subset + theorem list.init_prefix + theorem list.init_sublist + theorem list.init_subset +/- theorem list.mem_of_mem_drop + theorem list.mem_of_mem_init +/- theorem list.mem_of_mem_tail + theorem list.mem_of_mem_take +/- theorem list.tail_sublist + theorem list.take_sublist + theorem list.take_subset 2021-11-04 11:24:13 4c0b6ad feat(topology/homotopy/basic): add `homotopic` for `continuous_map`s. (#9865) ESTIMATED CHANGES Modified src/topology/homotopy/basic.lean + theorem continuous_map.homotopic.equivalence + theorem continuous_map.homotopic.hcomp + theorem continuous_map.homotopic.refl + theorem continuous_map.homotopic.symm + theorem continuous_map.homotopic.trans + def continuous_map.homotopic + theorem continuous_map.homotopic_rel.equivalence + theorem continuous_map.homotopic_rel.refl + theorem continuous_map.homotopic_rel.symm + theorem continuous_map.homotopic_rel.trans + def continuous_map.homotopic_rel + theorem continuous_map.homotopic_with.refl + theorem continuous_map.homotopic_with.symm + theorem continuous_map.homotopic_with.trans + def continuous_map.homotopic_with + def continuous_map.homotopy.hcomp Modified src/topology/homotopy/path.lean 2021-11-04 09:43:52 d219e6b chore(data/equiv/mul_add): DRY (#10150) use `units.mul_left`/`units.mul_right` to define `equiv.mul_left₀`/`equiv.mul_right₀`. ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean 2021-11-04 09:43:51 76ba1b6 chore(ring_theory/finiteness): make `finite_presentation.{quotient,mv_polynomial}` protected (#10091) This lets us clean up some `_root_`s This also golfs a proof ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean - theorem algebra.finite_presentation.mv_polynomial - theorem algebra.finite_presentation.quotient 2021-11-04 07:56:27 8658f40 feat(algebra/group_power/order): Sign of an odd/even power without linearity (#10122) This proves that `a < 0 → 0 < a ^ bit0 n` and `a < 0 → a ^ bit1 n < 0` in an `ordered_semiring`. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem odd.strict_mono_pow +/- theorem one_add_mul_le_pow' +/- theorem pow_le_of_le_one +/- theorem pow_le_pow_of_le_one +/- theorem pow_lt_pow_iff_of_lt_one +/- theorem pow_lt_pow_of_lt_one +/- theorem sq_le Modified src/algebra/group_power/order.lean +/- theorem one_le_pow_of_one_le +/- theorem one_lt_pow +/- theorem pow_add_pow_le + theorem pow_bit0_pos_of_neg + theorem pow_bit1_neg +/- theorem pow_le_one +/- theorem pow_le_pow +/- theorem pow_lt_one +/- theorem pow_lt_pow +/- theorem pow_lt_pow_iff +/- theorem pow_lt_pow_of_lt_left +/- theorem pow_mono +/- theorem pow_nonneg +/- theorem pow_pos + theorem sq_pos_of_neg + theorem sq_pos_of_pos +/- theorem strict_mono_on_pow +/- theorem strict_mono_pow 2021-11-04 02:36:27 4770a6a chore(scripts): update nolints.txt (#10146) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-11-04 00:15:53 0fac080 refactor(analysis/calculus/mean_value): Remove useless hypotheses (#10129) Because the junk value of `deriv` is `0`, assuming `∀ x, 0 < deriv f x` implies that `f` is derivable. We thus remove all those redundant derivability assumptions. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem differentiable_at_of_deriv_ne_zero + theorem differentiable_within_at_of_deriv_within_ne_zero Modified src/analysis/calculus/mean_value.lean +/- theorem strict_anti_of_deriv_neg +/- theorem strict_mono_of_deriv_pos Modified src/analysis/special_functions/trigonometric/deriv.lean 2021-11-03 22:10:14 fed57b5 refactor(algebra/direct_sum): rework internally-graded objects (#10127) This is a replacement for the `graded_ring.core` typeclass in #10115, which is called `set_like.graded_monoid` here. The advantage of this approach is that we can use the same typeclass for graded semirings, graded rings, and graded algebras. Largely, this change replaces a bunch of `def`s with `instances`, by bundling up the arguments to those defs to a new typeclass. This seems to make life easier for the few global `gmonoid` instance we already provide for direct sums of submodules, suggesting this API change is a useful one. In principle the new `[set_like.graded_monoid A]` typeclass is useless, as the same effect can be achieved with `[set_like.has_graded_one A] [set_like.has_graded_mul A]`; pragmatically though this is painfully verbose, and probably results in larger term sizes. We can always remove it later if it causes problems. ESTIMATED CHANGES Modified src/algebra/direct_sum/algebra.lean Added src/algebra/direct_sum/internal.lean + def direct_sum.subgroup_coe_ring_hom + theorem direct_sum.subgroup_coe_ring_hom_of + def direct_sum.submodule_coe_alg_hom + theorem direct_sum.submodule_coe_alg_hom_of + def direct_sum.submonoid_coe_ring_hom + theorem direct_sum.submonoid_coe_ring_hom_of Modified src/algebra/direct_sum/ring.lean - def direct_sum.gcomm_semiring.of_add_subgroups - def direct_sum.gcomm_semiring.of_add_submonoids - def direct_sum.gcomm_semiring.of_submodules - def direct_sum.gsemiring.of_add_subgroups - def direct_sum.gsemiring.of_add_submonoids - def direct_sum.gsemiring.of_submodules Modified src/algebra/graded_monoid.lean - def graded_monoid.gcomm_monoid.of_subobjects - def graded_monoid.ghas_mul.of_subobjects - def graded_monoid.ghas_one.of_subobjects - def graded_monoid.gmonoid.of_subobjects Modified src/algebra/monoid_algebra/grading.lean Modified src/ring_theory/polynomial/homogeneous.lean 2021-11-03 20:00:44 6433c1c feat(group_theory/sylow): Sylow subgroups are isomorphic (#10059) Constructs `sylow.mul_equiv`. ESTIMATED CHANGES Modified src/group_theory/subgroup/pointwise.lean + def subgroup.equiv_smul Modified src/group_theory/submonoid/operations.lean Modified src/group_theory/sylow.lean + def sylow.equiv_smul 2021-11-03 20:00:42 5541b25 refactor(group_theory/complement): Introduce abbreviation for subgroups (#10009) Introduces abbreviation for `is_complement (H : set G) (K : set G)`. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.is_complement'.card_mul + theorem subgroup.is_complement'.disjoint + theorem subgroup.is_complement'.symm + def subgroup.is_complement' + theorem subgroup.is_complement'_comm + theorem subgroup.is_complement'_def + theorem subgroup.is_complement'_iff_card_mul_and_disjoint + theorem subgroup.is_complement'_of_card_mul_and_disjoint + theorem subgroup.is_complement'_of_coprime - theorem subgroup.is_complement.card_mul - theorem subgroup.is_complement.disjoint - theorem subgroup.is_complement.symm - theorem subgroup.is_complement_comm - theorem subgroup.is_complement_iff_card_mul_and_disjoint - theorem subgroup.is_complement_of_card_mul_and_disjoint - theorem subgroup.is_complement_of_coprime Modified src/group_theory/schur_zassenhaus.lean + theorem subgroup.exists_left_complement'_of_coprime - theorem subgroup.exists_left_complement_of_coprime + theorem subgroup.exists_right_complement'_of_coprime - theorem subgroup.exists_right_complement_of_coprime + theorem subgroup.is_complement'_stabilizer_of_coprime - theorem subgroup.is_complement_stabilizer_of_coprime 2021-11-03 17:56:43 3a0b0d1 chore(order/lattice): add `exists_lt_of_sup/inf` (#10133) ESTIMATED CHANGES Modified src/order/lattice.lean + theorem exists_lt_of_inf + theorem exists_lt_of_sup 2021-11-03 17:56:42 8f7ffec chore(analysis/special_functions/trigonometric/inverse): move results about derivatives to a new file (#10110) This is part of a refactor of the `analysis/special_functions` folder, in which I will isolate all lemmas about derivatives. The result will be a definition of Lp spaces that does not import derivatives. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/log.lean Modified src/analysis/special_functions/trigonometric/inverse.lean - theorem real.deriv_arccos - theorem real.deriv_arcsin - theorem real.deriv_arcsin_aux - theorem real.differentiable_at_arccos - theorem real.differentiable_at_arcsin - theorem real.differentiable_on_arccos - theorem real.differentiable_on_arcsin - theorem real.differentiable_within_at_arccos_Ici - theorem real.differentiable_within_at_arccos_Iic - theorem real.differentiable_within_at_arcsin_Ici - theorem real.differentiable_within_at_arcsin_Iic - theorem real.has_deriv_at_arccos - theorem real.has_deriv_at_arcsin - theorem real.has_deriv_within_at_arccos_Ici - theorem real.has_deriv_within_at_arccos_Iic - theorem real.has_deriv_within_at_arcsin_Ici - theorem real.has_deriv_within_at_arcsin_Iic - theorem real.has_strict_deriv_at_arccos - theorem real.has_strict_deriv_at_arcsin - theorem real.times_cont_diff_at_arccos - theorem real.times_cont_diff_at_arccos_iff - theorem real.times_cont_diff_at_arcsin - theorem real.times_cont_diff_at_arcsin_iff - theorem real.times_cont_diff_on_arccos - theorem real.times_cont_diff_on_arcsin Added src/analysis/special_functions/trigonometric/inverse_deriv.lean + theorem real.deriv_arccos + theorem real.deriv_arcsin + theorem real.deriv_arcsin_aux + theorem real.differentiable_at_arccos + theorem real.differentiable_at_arcsin + theorem real.differentiable_on_arccos + theorem real.differentiable_on_arcsin + theorem real.differentiable_within_at_arccos_Ici + theorem real.differentiable_within_at_arccos_Iic + theorem real.differentiable_within_at_arcsin_Ici + theorem real.differentiable_within_at_arcsin_Iic + theorem real.has_deriv_at_arccos + theorem real.has_deriv_at_arcsin + theorem real.has_deriv_within_at_arccos_Ici + theorem real.has_deriv_within_at_arccos_Iic + theorem real.has_deriv_within_at_arcsin_Ici + theorem real.has_deriv_within_at_arcsin_Iic + theorem real.has_strict_deriv_at_arccos + theorem real.has_strict_deriv_at_arcsin + theorem real.times_cont_diff_at_arccos + theorem real.times_cont_diff_at_arccos_iff + theorem real.times_cont_diff_at_arcsin + theorem real.times_cont_diff_at_arcsin_iff + theorem real.times_cont_diff_on_arccos + theorem real.times_cont_diff_on_arcsin Modified src/data/complex/basic.lean +/- theorem complex.conj_bit0 +/- theorem complex.conj_bit1 +/- theorem complex.conj_of_real Modified src/geometry/euclidean/basic.lean 2021-11-03 17:56:41 00a1022 chore(logic/relation): rename to permit dot notation (#10105) ESTIMATED CHANGES Modified src/category_theory/is_connected.lean Modified src/category_theory/limits/types.lean Modified src/data/pfunctor/multivariate/M.lean Modified src/group_theory/free_group.lean Modified src/logic/relation.lean + theorem equivalence.eqv_gen_eq + theorem equivalence.eqv_gen_iff + theorem eqv_gen.mono - theorem relation.eqv_gen_eq_of_equivalence - theorem relation.eqv_gen_iff_of_equivalence - theorem relation.eqv_gen_mono + theorem relation.refl_trans_gen.lift' + theorem relation.refl_trans_gen.lift + theorem relation.refl_trans_gen.mono - theorem relation.refl_trans_gen_lift' - theorem relation.refl_trans_gen_lift - theorem relation.refl_trans_gen_mono + theorem relation.trans_gen.closed + theorem relation.trans_gen.lift' + theorem relation.trans_gen.lift - theorem relation.trans_gen.trans_gen_closed - theorem relation.trans_gen.trans_gen_eq_self - theorem relation.trans_gen.trans_gen_idem - theorem relation.trans_gen.trans_gen_lift' - theorem relation.trans_gen.trans_gen_lift - theorem relation.trans_gen.transitive_trans_gen + theorem relation.trans_gen_eq_self + theorem relation.trans_gen_idem + theorem relation.transitive_trans_gen Modified test/qpf.lean 2021-11-03 17:56:40 6993e6f feat(measure_theory/constructions/borel_space): decomposing the measure of a set into slices (#10096) Also add the fact that `μ (to_measurable μ t ∩ s) = μ (t ∩ s)`, and useful variations around this fact. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem measure_eq_measure_preimage_add_measure_tsum_Ico_zpow Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.coe_nnreal_smul_apply + theorem measure_theory.measure.measure_eq_left_of_subset_of_measure_add_eq + theorem measure_theory.measure.measure_eq_right_of_subset_of_measure_add_eq + theorem measure_theory.measure.measure_inter_eq_of_measure_eq + theorem measure_theory.measure.measure_to_measurable_add_inter_left + theorem measure_theory.measure.measure_to_measurable_add_inter_right + theorem measure_theory.measure.measure_to_measurable_inter +/- theorem measure_theory.measure.smul_apply Modified src/measure_theory/measure/measure_space_def.lean Modified src/measure_theory/measure/regular.lean + theorem set.exists_is_open_le_add 2021-11-03 17:56:38 b51f18f feat(topology): properties about intervals and paths (#9914) * From the sphere eversion project * Properties about paths, the interval, and `proj_Icc` ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/inverse.lean Modified src/data/set/intervals/proj_Icc.lean + theorem set.proj_Icc_eq_left + theorem set.proj_Icc_eq_right Modified src/topology/algebra/ordered/proj_Icc.lean + theorem continuous.Icc_extend' +/- theorem continuous.Icc_extend + theorem continuous_at.Icc_extend + theorem filter.tendsto.Icc_extend Modified src/topology/path_connected.lean + theorem continuous.path_extend + theorem continuous_at.path_extend + theorem filter.tendsto.path_extend +/- theorem path.refl_range +/- theorem path.refl_symm +/- theorem path.symm_range Modified src/topology/unit_interval.lean + theorem proj_Icc_eq_one + theorem proj_Icc_eq_zero + theorem unit_interval.coe_eq_one + theorem unit_interval.coe_eq_zero + theorem unit_interval.coe_mul + theorem unit_interval.coe_ne_one + theorem unit_interval.coe_ne_zero + theorem unit_interval.le_one' + theorem unit_interval.mul_le_left + theorem unit_interval.mul_le_right + theorem unit_interval.mul_mem + theorem unit_interval.nonneg' 2021-11-03 16:54:02 8d52be4 feat(measure_theory/function/ae_measurable_order): an ae measurability criterion for ennreal-valued functions (#10072) ESTIMATED CHANGES Added src/measure_theory/function/ae_measurable_order.lean + theorem ennreal.ae_measurable_of_exist_almost_disjoint_supersets + theorem measure_theory.ae_measurable_of_exist_almost_disjoint_supersets Modified src/topology/algebra/ordered/basic.lean + theorem dense_iff_forall_lt_exists_mem + theorem is_open.exists_Ioo_subset 2021-11-03 16:10:04 4f033b7 feat(analysis/seminorm): define the Minkowski functional (#9097) This defines the gauge of a set, aka the Minkowski functional, in a vector space over a real normed field. ESTIMATED CHANGES Modified src/analysis/seminorm.lean + theorem absorbent.gauge_set_nonempty + theorem absorbent.subset +/- def absorbent +/- theorem absorbent_iff_forall_absorbs_singleton + theorem absorbent_iff_nonneg_lt +/- def absorbs + theorem balanced.smul_eq + theorem balanced.subset_smul + theorem convex.gauge_le_one + theorem exists_lt_of_gauge_lt + def gauge + theorem gauge_add_le + theorem gauge_def' + theorem gauge_def + theorem gauge_le_of_mem + theorem gauge_le_one_eq' + theorem gauge_le_one_eq + theorem gauge_le_one_of_mem + theorem gauge_lt_one_eq' + theorem gauge_lt_one_eq + theorem gauge_lt_one_eq_self_of_open + theorem gauge_lt_one_of_mem_of_open + theorem gauge_lt_one_subset_self + theorem gauge_neg + theorem gauge_nonneg + def gauge_seminorm + theorem gauge_smul + theorem gauge_smul_of_nonneg + theorem gauge_zero + theorem interior_subset_gauge_lt_one + theorem one_le_gauge_of_not_mem + theorem self_subset_gauge_le_one + theorem seminorm.absorbent_ball + theorem seminorm.absorbent_ball_zero + theorem seminorm.convex_ball + theorem seminorm.ext + theorem seminorm.gauge_ball + theorem seminorm.gauge_seminorm_ball + theorem seminorm.symmetric_ball_zero 2021-11-03 14:39:55 95cdeba doc(linear_algebra): fix wrong docstring (#10139) ESTIMATED CHANGES Modified src/linear_algebra/prod.lean 2021-11-03 14:39:53 2b87435 feat(ring_theory/trace): remove a useless assumption (#10138) We remove an assumption that is always true. ESTIMATED CHANGES Modified src/ring_theory/trace.lean 2021-11-03 14:39:52 93cec25 chore(*): replace `exact calc` by `calc` (#10137) This PR is the result of a sed script that replaces * `exact calc` by `calc` * `refine calc` by `calc` ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean Modified src/data/complex/exponential.lean Modified src/data/nat/log.lean Modified src/group_theory/group_action/basic.lean Modified src/order/filter/pointwise.lean Modified src/set_theory/ordinal_notation.lean Modified src/topology/continuous_function/bounded.lean 2021-11-03 13:35:53 eaf2a16 fix(scripts/lint-style.py): typo in error reporting (#10135) ESTIMATED CHANGES Modified scripts/lint-style.py 2021-11-03 13:35:52 1e7f3ca feat(data/zmod/basic): add nat_coe_eq_nat_coe_iff' (#10128) To match the int version, from flt-regular ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.nat_coe_eq_nat_coe_iff' 2021-11-03 09:01:33 e5c66a0 chore(topology/continuous_function/bounded): add `comp_continuous` (#10134) ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean + def bounded_continuous_function.comp_continuous + def bounded_continuous_function.restrict 2021-11-03 07:31:37 e5acda4 chore(order/conditionally_complete_lattice): drop an unneeded `nonempty` assumption (#10132) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean +/- theorem csupr_mem_Inter_Icc_of_antitone_Icc +/- theorem monotone.csupr_mem_Inter_Icc_of_antitone 2021-11-03 02:56:05 5f2e527 chore(scripts): update nolints.txt (#10130) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-11-02 23:57:01 123db5e feat(linear_algebra/determinant): basis.det_ne_zero (#10126) Add the trivial lemma that the determinant with respect to a basis is not the zero map (if the ring is nontrivial). ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem basis.det_ne_zero 2021-11-02 23:57:00 86ed02f chore(algebra/order/floor): add a few trivial lemmas (#10120) ESTIMATED CHANGES Modified src/algebra/order/floor.lean +/- theorem int.ceil_add_one +/- theorem int.ceil_sub_int + theorem int.ceil_sub_one + theorem int.fract_add_int + theorem int.fract_eq_self + theorem int.fract_sub_int + theorem int.fract_sub_self + theorem int.self_sub_fract 2021-11-02 23:56:58 1dec85c doc(topology): three module docstrings (#10107) ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/category/Top/open_nhds.lean 2021-11-02 21:57:35 d49636e doc(topology/open_subgroup): add module docstring (#10111) Also add a lattice instance. ESTIMATED CHANGES Modified src/topology/algebra/open_subgroup.lean 2021-11-02 21:57:34 70ed9dc chore(analysis/special_functions/trigonometric/basic): move results about derivatives to a new file (#10109) This is part of a refactor of the `analysis/special_functions` folder, in which I will isolate all lemmas about derivatives. The result will be a definition of Lp spaces that does not import derivatives. ESTIMATED CHANGES Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/trigonometric/basic.lean - theorem complex.deriv_cos' - theorem complex.deriv_cos - theorem complex.deriv_cosh - theorem complex.deriv_sin - theorem complex.deriv_sinh - theorem complex.differentiable_at_cos - theorem complex.differentiable_at_cosh - theorem complex.differentiable_at_sin - theorem complex.differentiable_at_sinh - theorem complex.differentiable_cos - theorem complex.differentiable_cosh - theorem complex.differentiable_sin - theorem complex.differentiable_sinh - theorem complex.has_deriv_at_cos - theorem complex.has_deriv_at_cosh - theorem complex.has_deriv_at_sin - theorem complex.has_deriv_at_sinh - theorem complex.has_strict_deriv_at_cos - theorem complex.has_strict_deriv_at_cosh - theorem complex.has_strict_deriv_at_sin - theorem complex.has_strict_deriv_at_sinh - theorem complex.times_cont_diff_cos - theorem complex.times_cont_diff_cosh - theorem complex.times_cont_diff_sin - theorem complex.times_cont_diff_sinh - theorem deriv_ccos - theorem deriv_ccosh - theorem deriv_cos - theorem deriv_cosh - theorem deriv_csin - theorem deriv_csinh - theorem deriv_sin - theorem deriv_sinh - theorem deriv_within_ccos - theorem deriv_within_ccosh - theorem deriv_within_cos - theorem deriv_within_cosh - theorem deriv_within_csin - theorem deriv_within_csinh - theorem deriv_within_sin - theorem deriv_within_sinh - theorem differentiable.ccos - theorem differentiable.ccosh - theorem differentiable.cos - theorem differentiable.cosh - theorem differentiable.csin - theorem differentiable.csinh - theorem differentiable.sin - theorem differentiable.sinh - theorem differentiable_at.ccos - theorem differentiable_at.ccosh - theorem differentiable_at.cos - theorem differentiable_at.cosh - theorem differentiable_at.csin - theorem differentiable_at.csinh - theorem differentiable_at.sin - theorem differentiable_at.sinh - theorem differentiable_on.ccos - theorem differentiable_on.ccosh - theorem differentiable_on.cos - theorem differentiable_on.cosh - theorem differentiable_on.csin - theorem differentiable_on.csinh - theorem differentiable_on.sin - theorem differentiable_on.sinh - theorem differentiable_within_at.ccos - theorem differentiable_within_at.ccosh - theorem differentiable_within_at.cos - theorem differentiable_within_at.cosh - theorem differentiable_within_at.csin - theorem differentiable_within_at.csinh - theorem differentiable_within_at.sin - theorem differentiable_within_at.sinh - theorem fderiv_ccos - theorem fderiv_ccosh - theorem fderiv_cos - theorem fderiv_cosh - theorem fderiv_csin - theorem fderiv_csinh - theorem fderiv_sin - theorem fderiv_sinh - theorem fderiv_within_ccos - theorem fderiv_within_ccosh - theorem fderiv_within_cos - theorem fderiv_within_cosh - theorem fderiv_within_csin - theorem fderiv_within_csinh - theorem fderiv_within_sin - theorem fderiv_within_sinh - theorem has_deriv_at.ccos - theorem has_deriv_at.ccosh - theorem has_deriv_at.cos - theorem has_deriv_at.cosh - theorem has_deriv_at.csin - theorem has_deriv_at.csinh - theorem has_deriv_at.sin - theorem has_deriv_at.sinh - theorem has_deriv_within_at.ccos - theorem has_deriv_within_at.ccosh - theorem has_deriv_within_at.cos - theorem has_deriv_within_at.cosh - theorem has_deriv_within_at.csin - theorem has_deriv_within_at.csinh - theorem has_deriv_within_at.sin - theorem has_deriv_within_at.sinh - theorem has_fderiv_at.ccos - theorem has_fderiv_at.ccosh - theorem has_fderiv_at.cos - theorem has_fderiv_at.cosh - theorem has_fderiv_at.csin - theorem has_fderiv_at.csinh - theorem has_fderiv_at.sin - theorem has_fderiv_at.sinh - theorem has_fderiv_within_at.ccos - theorem has_fderiv_within_at.ccosh - theorem has_fderiv_within_at.cos - theorem has_fderiv_within_at.cosh - theorem has_fderiv_within_at.csin - theorem has_fderiv_within_at.csinh - theorem has_fderiv_within_at.sin - theorem has_fderiv_within_at.sinh - theorem has_strict_deriv_at.ccos - theorem has_strict_deriv_at.ccosh - theorem has_strict_deriv_at.cos - theorem has_strict_deriv_at.cosh - theorem has_strict_deriv_at.csin - theorem has_strict_deriv_at.csinh - theorem has_strict_deriv_at.sin - theorem has_strict_deriv_at.sinh - theorem has_strict_fderiv_at.ccos - theorem has_strict_fderiv_at.ccosh - theorem has_strict_fderiv_at.cos - theorem has_strict_fderiv_at.cosh - theorem has_strict_fderiv_at.csin - theorem has_strict_fderiv_at.csinh - theorem has_strict_fderiv_at.sin - theorem has_strict_fderiv_at.sinh - theorem real.deriv_cos' - theorem real.deriv_cos - theorem real.deriv_cosh - theorem real.deriv_sin - theorem real.deriv_sinh - theorem real.differentiable_at_cos - theorem real.differentiable_at_cosh - theorem real.differentiable_at_sin - theorem real.differentiable_at_sinh - theorem real.differentiable_cos - theorem real.differentiable_cosh - theorem real.differentiable_sin - theorem real.differentiable_sinh - theorem real.has_deriv_at_cos - theorem real.has_deriv_at_cosh - theorem real.has_deriv_at_sin - theorem real.has_deriv_at_sinh - theorem real.has_strict_deriv_at_cos - theorem real.has_strict_deriv_at_cosh - theorem real.has_strict_deriv_at_sin - theorem real.has_strict_deriv_at_sinh - theorem real.sinh_strict_mono - theorem real.times_cont_diff_cos - theorem real.times_cont_diff_cosh - theorem real.times_cont_diff_sin - theorem real.times_cont_diff_sinh - theorem times_cont_diff.ccos - theorem times_cont_diff.ccosh - theorem times_cont_diff.cos - theorem times_cont_diff.cosh - theorem times_cont_diff.csin - theorem times_cont_diff.csinh - theorem times_cont_diff.sin - theorem times_cont_diff.sinh - theorem times_cont_diff_at.ccos - theorem times_cont_diff_at.ccosh - theorem times_cont_diff_at.cos - theorem times_cont_diff_at.cosh - theorem times_cont_diff_at.csin - theorem times_cont_diff_at.csinh - theorem times_cont_diff_at.sin - theorem times_cont_diff_at.sinh - theorem times_cont_diff_on.ccos - theorem times_cont_diff_on.ccosh - theorem times_cont_diff_on.cos - theorem times_cont_diff_on.cosh - theorem times_cont_diff_on.csin - theorem times_cont_diff_on.csinh - theorem times_cont_diff_on.sin - theorem times_cont_diff_on.sinh - theorem times_cont_diff_within_at.ccos - theorem times_cont_diff_within_at.ccosh - theorem times_cont_diff_within_at.cos - theorem times_cont_diff_within_at.cosh - theorem times_cont_diff_within_at.csin - theorem times_cont_diff_within_at.csinh - theorem times_cont_diff_within_at.sin - theorem times_cont_diff_within_at.sinh Added src/analysis/special_functions/trigonometric/deriv.lean + theorem complex.deriv_cos' + theorem complex.deriv_cos + theorem complex.deriv_cosh + theorem complex.deriv_sin + theorem complex.deriv_sinh + theorem complex.differentiable_at_cos + theorem complex.differentiable_at_cosh + theorem complex.differentiable_at_sin + theorem complex.differentiable_at_sinh + theorem complex.differentiable_cos + theorem complex.differentiable_cosh + theorem complex.differentiable_sin + theorem complex.differentiable_sinh + theorem complex.has_deriv_at_cos + theorem complex.has_deriv_at_cosh + theorem complex.has_deriv_at_sin + theorem complex.has_deriv_at_sinh + theorem complex.has_strict_deriv_at_cos + theorem complex.has_strict_deriv_at_cosh + theorem complex.has_strict_deriv_at_sin + theorem complex.has_strict_deriv_at_sinh + theorem complex.times_cont_diff_cos + theorem complex.times_cont_diff_cosh + theorem complex.times_cont_diff_sin + theorem complex.times_cont_diff_sinh + theorem deriv_ccos + theorem deriv_ccosh + theorem deriv_cos + theorem deriv_cosh + theorem deriv_csin + theorem deriv_csinh + theorem deriv_sin + theorem deriv_sinh + theorem deriv_within_ccos + theorem deriv_within_ccosh + theorem deriv_within_cos + theorem deriv_within_cosh + theorem deriv_within_csin + theorem deriv_within_csinh + theorem deriv_within_sin + theorem deriv_within_sinh + theorem differentiable.ccos + theorem differentiable.ccosh + theorem differentiable.cos + theorem differentiable.cosh + theorem differentiable.csin + theorem differentiable.csinh + theorem differentiable.sin + theorem differentiable.sinh + theorem differentiable_at.ccos + theorem differentiable_at.ccosh + theorem differentiable_at.cos + theorem differentiable_at.cosh + theorem differentiable_at.csin + theorem differentiable_at.csinh + theorem differentiable_at.sin + theorem differentiable_at.sinh + theorem differentiable_on.ccos + theorem differentiable_on.ccosh + theorem differentiable_on.cos + theorem differentiable_on.cosh + theorem differentiable_on.csin + theorem differentiable_on.csinh + theorem differentiable_on.sin + theorem differentiable_on.sinh + theorem differentiable_within_at.ccos + theorem differentiable_within_at.ccosh + theorem differentiable_within_at.cos + theorem differentiable_within_at.cosh + theorem differentiable_within_at.csin + theorem differentiable_within_at.csinh + theorem differentiable_within_at.sin + theorem differentiable_within_at.sinh + theorem fderiv_ccos + theorem fderiv_ccosh + theorem fderiv_cos + theorem fderiv_cosh + theorem fderiv_csin + theorem fderiv_csinh + theorem fderiv_sin + theorem fderiv_sinh + theorem fderiv_within_ccos + theorem fderiv_within_ccosh + theorem fderiv_within_cos + theorem fderiv_within_cosh + theorem fderiv_within_csin + theorem fderiv_within_csinh + theorem fderiv_within_sin + theorem fderiv_within_sinh + theorem has_deriv_at.ccos + theorem has_deriv_at.ccosh + theorem has_deriv_at.cos + theorem has_deriv_at.cosh + theorem has_deriv_at.csin + theorem has_deriv_at.csinh + theorem has_deriv_at.sin + theorem has_deriv_at.sinh + theorem has_deriv_within_at.ccos + theorem has_deriv_within_at.ccosh + theorem has_deriv_within_at.cos + theorem has_deriv_within_at.cosh + theorem has_deriv_within_at.csin + theorem has_deriv_within_at.csinh + theorem has_deriv_within_at.sin + theorem has_deriv_within_at.sinh + theorem has_fderiv_at.ccos + theorem has_fderiv_at.ccosh + theorem has_fderiv_at.cos + theorem has_fderiv_at.cosh + theorem has_fderiv_at.csin + theorem has_fderiv_at.csinh + theorem has_fderiv_at.sin + theorem has_fderiv_at.sinh + theorem has_fderiv_within_at.ccos + theorem has_fderiv_within_at.ccosh + theorem has_fderiv_within_at.cos + theorem has_fderiv_within_at.cosh + theorem has_fderiv_within_at.csin + theorem has_fderiv_within_at.csinh + theorem has_fderiv_within_at.sin + theorem has_fderiv_within_at.sinh + theorem has_strict_deriv_at.ccos + theorem has_strict_deriv_at.ccosh + theorem has_strict_deriv_at.cos + theorem has_strict_deriv_at.cosh + theorem has_strict_deriv_at.csin + theorem has_strict_deriv_at.csinh + theorem has_strict_deriv_at.sin + theorem has_strict_deriv_at.sinh + theorem has_strict_fderiv_at.ccos + theorem has_strict_fderiv_at.ccosh + theorem has_strict_fderiv_at.cos + theorem has_strict_fderiv_at.cosh + theorem has_strict_fderiv_at.csin + theorem has_strict_fderiv_at.csinh + theorem has_strict_fderiv_at.sin + theorem has_strict_fderiv_at.sinh + theorem real.deriv_cos' + theorem real.deriv_cos + theorem real.deriv_cosh + theorem real.deriv_sin + theorem real.deriv_sinh + theorem real.differentiable_at_cos + theorem real.differentiable_at_cosh + theorem real.differentiable_at_sin + theorem real.differentiable_at_sinh + theorem real.differentiable_cos + theorem real.differentiable_cosh + theorem real.differentiable_sin + theorem real.differentiable_sinh + theorem real.has_deriv_at_cos + theorem real.has_deriv_at_cosh + theorem real.has_deriv_at_sin + theorem real.has_deriv_at_sinh + theorem real.has_strict_deriv_at_cos + theorem real.has_strict_deriv_at_cosh + theorem real.has_strict_deriv_at_sin + theorem real.has_strict_deriv_at_sinh + theorem real.sinh_strict_mono + theorem real.times_cont_diff_cos + theorem real.times_cont_diff_cosh + theorem real.times_cont_diff_sin + theorem real.times_cont_diff_sinh + theorem times_cont_diff.ccos + theorem times_cont_diff.ccosh + theorem times_cont_diff.cos + theorem times_cont_diff.cosh + theorem times_cont_diff.csin + theorem times_cont_diff.csinh + theorem times_cont_diff.sin + theorem times_cont_diff.sinh + theorem times_cont_diff_at.ccos + theorem times_cont_diff_at.ccosh + theorem times_cont_diff_at.cos + theorem times_cont_diff_at.cosh + theorem times_cont_diff_at.csin + theorem times_cont_diff_at.csinh + theorem times_cont_diff_at.sin + theorem times_cont_diff_at.sinh + theorem times_cont_diff_on.ccos + theorem times_cont_diff_on.ccosh + theorem times_cont_diff_on.cos + theorem times_cont_diff_on.cosh + theorem times_cont_diff_on.csin + theorem times_cont_diff_on.csinh + theorem times_cont_diff_on.sin + theorem times_cont_diff_on.sinh + theorem times_cont_diff_within_at.ccos + theorem times_cont_diff_within_at.ccosh + theorem times_cont_diff_within_at.cos + theorem times_cont_diff_within_at.cosh + theorem times_cont_diff_within_at.csin + theorem times_cont_diff_within_at.csinh + theorem times_cont_diff_within_at.sin + theorem times_cont_diff_within_at.sinh Modified src/analysis/special_functions/trigonometric/inverse.lean Modified test/differentiable.lean Modified test/simp_command.lean 2021-11-02 21:57:33 d43daf0 feat(algebra/big_operators/order): add unbundled is_absolute_value.sum_le and map_prod (#10104) Add unbundled versions of two existing lemmas. Additionally generalize a few typeclass assumptions in an earlier file. From the flt-regular project ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem is_absolute_value.abv_sum + theorem is_absolute_value.map_prod Modified src/algebra/order/absolute_value.lean 2021-11-02 21:57:32 3accc5e feat(data/bool): bnot_iff_not (#10095) ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.bnot_iff_not 2021-11-02 19:48:57 00064bd feat(logic/relation): add equivalence.comap (#10103) ESTIMATED CHANGES Modified src/data/setoid/basic.lean Modified src/group_theory/congruence.lean Modified src/logic/relation.lean + theorem equivalence.comap 2021-11-02 19:05:42 2d8be73 chore(measure_theory/probability_mass_function): avoid non-terminal simp in coe_le_one (#10112) ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function.lean 2021-11-02 16:26:32 6df3143 chore(combinatorics/choose/bounds): move to nat namespace (#10106) There are module docstrings elsewhere that expect this to be in the `nat` namespace with the other `choose` lemmas. ESTIMATED CHANGES Modified src/combinatorics/choose/bounds.lean - theorem choose_le_pow + theorem nat.choose_le_pow + theorem nat.pow_le_choose - theorem pow_le_choose 2021-11-02 15:51:48 0dcb184 style(testing/slim_check): fix line length (#10114) ESTIMATED CHANGES Modified src/testing/slim_check/testable.lean 2021-11-02 14:14:07 796a051 feat(measure_theory/decomposition/lebesgue): more on Radon-Nikodym derivatives (#10070) We show that the density in the Lebesgue decomposition theorem (aka the Radon-Nikodym derivative) is unique. Previously, uniqueness of the absolutely continuous part was known, but not of its density. We also show that the Radon-Nikodym derivative is almost everywhere finite. Plus some cleanup of the whole file. ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/lebesgue.lean +/- theorem measure_theory.measure.eq_rn_deriv + theorem measure_theory.measure.eq_with_density_rn_deriv + theorem measure_theory.measure.lintegral_rn_deriv_lt_top_of_measure_ne_top + theorem measure_theory.measure.rn_deriv_lt_top + theorem measure_theory.measure.rn_deriv_with_density +/- theorem measure_theory.measure.singular_part_le + theorem measure_theory.measure.singular_part_with_density Modified src/measure_theory/function/ae_eq_of_integral.lean + theorem measure_theory.ae_eq_of_forall_set_lintegral_eq_of_sigma_finite + theorem measure_theory.ae_le_of_forall_set_lintegral_le_of_sigma_finite +/- theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_sigma_finite Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_of_forall_measure_lt_top_ae_restrict + theorem measure_theory.eventually_mem_spanning_sets + theorem measure_theory.measure.is_locally_finite_measure_of_le - theorem measure_theory.measure.mutually_singular.zero + theorem measure_theory.measure.mutually_singular.zero_left + theorem measure_theory.measure.mutually_singular.zero_right + theorem measure_theory.mem_spanning_sets_of_index_le Modified src/probability_theory/density.lean 2021-11-02 12:07:49 da6706d feat(data/mv_polynomial/basic): lemmas about map (#10092) This adds `map_alg_hom`, which fills the gap between `map` and `map_alg_equiv`. The only new proof here is `map_surjective`; everything else is just a reworked existing proof. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + def mv_polynomial.map_alg_hom + theorem mv_polynomial.map_alg_hom_id + theorem mv_polynomial.map_left_inverse + theorem mv_polynomial.map_right_inverse + theorem mv_polynomial.map_surjective Modified src/data/mv_polynomial/equiv.lean - theorem mv_polynomial.map_alg_equiv_apply 2021-11-02 10:26:34 80dc445 refactor(order/bounded_lattice): generalize le on with_{top,bot} (#10085) Before, some lemmas assumed `preorder` even when they were true for just the underlying `le`. In the case of `with_bot`, the missing underlying `has_le` instance is defined. For both `with_{top,bot}`, a few lemmas are generalized accordingly. ESTIMATED CHANGES Modified src/data/nat/cast.lean Modified src/order/bounded_lattice.lean +/- theorem with_bot.coe_le +/- theorem with_bot.coe_le_coe +/- theorem with_bot.coe_lt_coe +/- theorem with_bot.some_le_some +/- theorem with_top.coe_le_coe +/- theorem with_top.coe_lt_coe +/- theorem with_top.coe_lt_top +/- theorem with_top.le_coe 2021-11-02 10:26:33 658a3d7 refactor(algebra/algebra): remove subalgebra.under (#10081) This removes `subalgebra.under`, and replaces `subalgebra.of_under` with `subalgebra.of_restrict_scalars`. Lemmas associated with `under` have been renamed accordingly. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean + theorem is_scalar_tower.adjoin_range_to_alg_hom - theorem is_scalar_tower.range_under_adjoin - theorem subalgebra.mem_under + def subalgebra.of_restrict_scalars - def subalgebra.of_under - def subalgebra.under Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/splitting_field.lean Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_union_eq_adjoin_adjoin - theorem algebra.adjoin_union_eq_under Modified src/ring_theory/adjoin/fg.lean Modified src/ring_theory/algebra_tower.lean 2021-11-02 10:26:32 541df8a feat(topology/algebra/ordered/liminf_limsup): convergence of a sequence which does not oscillate infinitely (#10073) If, for all `a < b`, a sequence is not frequently below `a` and frequently above `b`, then it has to converge. This is a useful convergence criterion (called no upcrossings), used for instance in martingales. Also generalize several statements on liminfs and limsups from complete linear orders to conditionally complete linear orders. ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.is_bounded.is_cobounded_ge + theorem filter.is_bounded.is_cobounded_le +/- theorem filter.liminf_le_limsup Modified src/topology/algebra/ordered/liminf_limsup.lean + theorem tendsto_of_no_upcrossings 2021-11-02 10:26:31 880182d chore(analysis/normed/group): add `cauchy_seq_finset_of_norm_bounded_eventually` (#10060) Add `cauchy_seq_finset_of_norm_bounded_eventually`, use it to golf some proofs. ESTIMATED CHANGES Modified src/analysis/normed/group/infinite_sum.lean + theorem cauchy_seq_finset_of_norm_bounded_eventually 2021-11-02 10:26:30 fc12ca8 feat(measure_theory/probability_mass_function): Define uniform pmf on an inhabited fintype (#9920) This PR defines uniform probability mass functions on nonempty finsets and inhabited fintypes. ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function.lean + theorem pmf.bernuolli_apply + def pmf.of_finset + theorem pmf.of_finset_apply + theorem pmf.of_finset_apply_of_not_mem + theorem pmf.of_fintype_apply + theorem pmf.of_multiset_apply + theorem pmf.of_multiset_apply_of_not_mem + def pmf.uniform_of_finset + theorem pmf.uniform_of_finset_apply + theorem pmf.uniform_of_finset_apply_of_mem + theorem pmf.uniform_of_finset_apply_of_not_mem + def pmf.uniform_of_fintype + theorem pmf.uniform_of_fintype_apply 2021-11-02 09:31:35 f6894c4 chore(ring_theory/adjoin/fg): generalize ring to semiring in a few places (#10089) ESTIMATED CHANGES Modified src/ring_theory/adjoin/fg.lean 2021-11-02 08:23:22 26bdcac chore(coinductive_predicates): remove private and use of import_private (#10084) Remove a `private` modifier (I think this had previously been ported from core by @bryangingechen). Then remove the only use of `import_private` from the library. (Besides another use in `tests/`, which we're not porting.) (In mathlib4 we have `OpenPrivate` as an alternative. Removing `import_private` is one less thing for mathport to care about.) ESTIMATED CHANGES Modified src/algebra/lie/weights.lean Modified src/meta/coinductive_predicates.lean Modified test/coinductive.lean 2021-11-02 08:23:21 1852840 feat(analysis/calculus/mean_value): Strict convexity from derivatives (#10034) This duplicates all the results relating convex/concave function and their derivatives to strictly convex/strictly concave functions. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean - theorem antitone.concave_on_univ + theorem antitone.concave_on_univ_of_deriv + theorem antitone_on.concave_on_of_deriv - theorem concave_on_of_deriv_antitone_on - theorem convex_on_of_deriv_monotone_on - theorem convex_on_univ_of_deriv_monotone + theorem monotone.convex_on_univ_of_deriv + theorem monotone_on.convex_on_of_deriv + theorem strict_anti.strict_concave_on_univ_of_deriv + theorem strict_anti_on.strict_concave_on_of_deriv + theorem strict_concave_on_of_deriv2_neg + theorem strict_concave_on_open_of_deriv2_neg + theorem strict_concave_on_univ_of_deriv2_neg + theorem strict_convex_on_of_deriv2_pos + theorem strict_convex_on_open_of_deriv2_pos + theorem strict_convex_on_univ_of_deriv2_pos + theorem strict_mono.strict_convex_on_univ_of_deriv + theorem strict_mono_on.strict_convex_on_of_deriv 2021-11-02 06:43:08 6d2af9a chore(data/list/defs): remove unneeded open (#10100) ESTIMATED CHANGES Modified src/data/list/defs.lean 2021-11-02 02:55:19 d926ac7 chore(scripts): update nolints.txt (#10098) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-11-01 21:07:30 fd783e3 chore(algebra/free_algebra): remove a heavy and unecessary import (#10093) `transfer_instance` pulls in category theory, which is overkill ESTIMATED CHANGES Modified src/algebra/free_algebra.lean 2021-11-01 20:14:44 b1d5446 chore(analysis/normed_space/operator_norm): remove an import to data.equiv.transfer_instance (#10094) This import isn't needed, and the spelling without it is shorter. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean 2021-11-01 12:55:31 0144b6c chore({data/finset,data/multiset,order}/locally_finite): Better line wraps (#10087) ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean +/- theorem finset.Icc_eq_empty_of_lt +/- theorem finset.Icc_self +/- theorem finset.Ico_eq_empty_of_le +/- theorem finset.Ico_self +/- theorem finset.Ioc_eq_empty_of_le +/- theorem finset.Ioc_self +/- theorem finset.Ioo_eq_empty_of_le +/- theorem finset.Ioo_self Modified src/data/multiset/locally_finite.lean +/- theorem multiset.Icc_eq_zero_of_lt +/- theorem multiset.Icc_self +/- theorem multiset.Ioc_eq_zero_of_le +/- theorem multiset.Ioc_self +/- theorem multiset.Ioo_eq_zero_of_le +/- theorem multiset.Ioo_self Modified src/order/locally_finite.lean +/- def finset.Icc +/- def finset.Ico +/- theorem finset.Ico_subset_Ico +/- def finset.Iic +/- def finset.Iio +/- def finset.Ioc +/- def finset.Ioo +/- theorem finset.mem_Ici +/- theorem finset.mem_Iic +/- theorem finset.mem_Iio +/- theorem finset.mem_Ioi +/- def multiset.Icc +/- def multiset.Ici +/- def multiset.Iic +/- def multiset.Iio +/- def multiset.Ioc +/- def multiset.Ioi +/- def multiset.Ioo +/- theorem multiset.mem_Ici +/- theorem multiset.mem_Iic +/- theorem multiset.mem_Iio +/- theorem multiset.mem_Ioi +/- theorem set.finite_Ici +/- theorem set.finite_Iic +/- theorem set.finite_Iio +/- theorem set.finite_Ioi 2021-11-01 12:22:20 fef1535 chore(category_theory/limits): reuse a previous result (#10088) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernel_pair.lean 2021-11-01 11:06:34 9ef310f chore(algebra/algebra): implement subalgebra.under in terms of restrict_scalars (#10080) We should probably remove `subalgebra.under` entirely, but that's likely a lot more work. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean - theorem subalgebra.mem_under - def subalgebra.under Modified src/algebra/algebra/tower.lean + theorem subalgebra.mem_under + def subalgebra.under Modified src/ring_theory/adjoin/basic.lean +/- theorem algebra.adjoin_induction 2021-11-01 11:06:33 17ebcf0 chore(ring_theory/algebra_tower): relax typeclasses (#10078) This generalizes some `comm_ring`s to `comm_semiring`s. Split from #10024 ESTIMATED CHANGES Modified src/ring_theory/algebra_tower.lean +/- theorem algebra.fg_trans' +/- theorem basis.algebra_map_injective 2021-11-01 10:12:40 23892a0 chore(analysis/normed_space/operator_norm): semilinearize part of the file (#10076) This PR generalizes part of the `operator_norm` file to semilinear maps. Only the first section (`semi_normed`) is done, which allows us to construct continuous semilinear maps using `linear_map.mk_continuous`. The rest of the file is trickier, since we need specify how the ring hom interacts with the norm. I'd rather leave it to a future PR since I don't need the rest now. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_of_linear_of_bound + theorem continuous_of_linear_of_boundₛₗ +/- def linear_map.mk_continuous +/- def linear_map.mk_continuous_of_exists_bound Modified src/measure_theory/integral/set_integral.lean 2021-11-01 07:01:57 85fe90e feat(algebra/direct_sum/module) : coe and internal (#10004) This extracts the following `def`s from within the various `is_internal` properties: * `direct_sum.add_submonoid_coe` * `direct_sum.add_subgroup_coe` * `direct_sum.submodule_coe` Packing these into a def makes things more concise, and avoids some annoying elaboration issues. ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean + def direct_sum.add_subgroup_coe + theorem direct_sum.add_subgroup_coe_of + def direct_sum.add_submonoid_coe + theorem direct_sum.add_submonoid_coe_of Modified src/algebra/direct_sum/module.lean + def direct_sum.submodule_coe + theorem direct_sum.submodule_coe_of 2021-11-01 05:31:03 acc504e docs(category_theory/*): add missing module docs (#9990) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/products/bifunctor.lean 2021-11-01 02:38:33 e8fa232 chore(scripts): update nolints.txt (#10083) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-11-01 00:38:30 cd457a5 fix(data/{rbtree,rbmap}): fix some lint errors (#10036) ESTIMATED CHANGES Modified src/data/rbmap/default.lean +/- theorem rbmap.eq_leaf_of_max_eq_none +/- theorem rbmap.eq_leaf_of_min_eq_none Modified src/data/rbtree/basic.lean +/- theorem rbnode.balanced +/- theorem rbnode.depth_min Modified src/data/rbtree/find.lean +/- theorem rbnode.eqv_of_find_some Modified src/data/rbtree/insert.lean +/- theorem rbnode.equiv_or_mem_of_mem_ins +/- theorem rbnode.equiv_or_mem_of_mem_insert +/- theorem rbnode.find_balance1_node +/- theorem rbnode.find_balance2_node +/- theorem rbnode.find_black_eq_find_red +/- theorem rbnode.find_ins_of_eqv +/- theorem rbnode.find_insert_of_disj +/- theorem rbnode.find_insert_of_eqv +/- theorem rbnode.find_insert_of_not_eqv +/- theorem rbnode.find_mk_insert_result +/- theorem rbnode.find_red_of_gt +/- theorem rbnode.find_red_of_incomp +/- theorem rbnode.find_red_of_lt +/- theorem rbnode.ins.induction +/- theorem rbnode.ins_ne_leaf +/- theorem rbnode.insert_ne_leaf +/- theorem rbnode.is_searchable_ins +/- theorem rbnode.is_searchable_insert +/- theorem rbnode.ite_eq_of_not_lt +/- theorem rbnode.mem_ins_of_incomp +/- theorem rbnode.mem_ins_of_mem +/- theorem rbnode.mem_insert_of_incomp +/- theorem rbnode.mem_insert_of_mem +/- theorem rbnode.of_mem_balance1_node +/- theorem rbnode.of_mem_balance2_node Modified src/data/rbtree/main.lean +/- theorem rbtree.balanced +/- theorem rbtree.eq_leaf_of_max_eq_none +/- theorem rbtree.eq_leaf_of_min_eq_none Modified src/data/rbtree/min_max.lean 2021-11-01 00:38:28 bf82122 feat(algebra/direct_sum/basic): some lemmas about `direct_sum.of` (#10003) Some small lemmas about `direct_sum.of` that are handy. ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean + theorem direct_sum.of_eq_of_ne + theorem direct_sum.of_eq_same + theorem direct_sum.sum_support_of + theorem direct_sum.support_of + theorem direct_sum.support_of_subset + theorem direct_sum.support_zero 2021-10-31 23:00:49 932e954 feat(data/finset): some simple finset lemmas (#10079) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.diag_empty + theorem finset.off_diag_empty + theorem finset.product_subset_product + theorem finset.product_subset_product_left + theorem finset.product_subset_product_right 2021-10-31 23:00:48 60cb2cf feat(data/list): length_filter_lt_length_iff_exists (#10074) Also moved a lemma about filter_map that was placed in the wrong file ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_map_cons + theorem list.length_eq_countp_add_countp + theorem list.length_filter_lt_length_iff_exists Modified src/data/list/forall2.lean - theorem list.filter_map_cons 2021-10-31 23:00:47 af4f4df feat(list/init): simplifier lemmas for list.init (#10061) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.init_append_of_ne_nil + theorem list.init_cons_of_ne_nil 2021-10-31 23:00:45 d6dd451 chore(data/list/basic): use dot notation here and there (#10056) ### Renamed lemmas - `list.cons_sublist_cons` → `list.sublist.cons_cons`; - `list.infix_of_prefix` → `list.is_prefix.is_infix`; - `list.infix_of_suffix` → `list.is_suffix.is_infix`; - `list.sublist_of_infix` → `list.is_infix.sublist`; - `list.sublist_of_prefix` → `list.is_prefix.sublist`; - `list.sublist_of_suffix` → `list.is_suffix.sublist`; - `list.length_le_of_infix` → `list.is_infix.length_le`. ### New `simp` attrs `list.singleton_sublist`, `list.repeat_sublist_repeat`, `list.reverse_suffix`, `list.reverse_prefix`. ### New lemmas `list.infix_insert`, `list.sublist_insert`, `list.subset_insert`. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.cons_sublist_cons + theorem list.infix.length_le + theorem list.infix_insert - theorem list.infix_of_prefix - theorem list.infix_of_suffix +/- theorem list.infix_refl + theorem list.is_prefix.is_infix + theorem list.is_suffix.is_infix - theorem list.length_le_of_infix +/- theorem list.nil_infix +/- theorem list.repeat_sublist_repeat +/- theorem list.reverse_prefix +/- theorem list.reverse_suffix +/- theorem list.singleton_sublist + theorem list.sublist.cons_cons + theorem list.sublist_insert - theorem list.sublist_of_infix - theorem list.sublist_of_prefix - theorem list.sublist_of_suffix + theorem list.subset_insert +/- theorem list.tail_sublist Modified src/data/list/forall2.lean Modified src/data/list/lattice.lean Modified src/data/list/nodup.lean Modified src/data/list/pairwise.lean Modified src/data/list/sublists.lean Modified src/data/multiset/finset_ops.lean 2021-10-31 23:00:44 76f13b3 feat(algebra/star/basic): `ring.inverse_star` (#10039) Also adds `is_unit.star` and `is_unit_star`. ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem is_unit.star + theorem is_unit_star + theorem ring.inverse_star 2021-10-31 21:28:18 106dc57 chore(ring_theory/ideal/operations): generalize typeclass in map_map and comap_comap (#10077) Split from #10024 which is hitting timeouts somewhere more irritating. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.comap_comap +/- theorem ideal.map_map 2021-10-31 21:28:17 233eb66 feat(data/real/ennreal): more on integer powers on ennreal (#10071) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem zpow_two Modified src/algebra/order/archimedean.lean + theorem exists_mem_Ico_zpow + theorem exists_mem_Ioc_zpow - theorem exists_zpow_near' - theorem exists_zpow_near Modified src/analysis/normed_space/basic.lean Modified src/data/real/ennreal.lean + theorem ennreal.Ioo_zero_top_eq_Union_Ico_zpow + theorem ennreal.add_div + theorem ennreal.coe_zpow + theorem ennreal.exists_mem_Ico_zpow + theorem ennreal.exists_mem_Ioc_zpow + theorem ennreal.monotone_zpow + theorem ennreal.one_le_pow_of_one_le + theorem ennreal.zpow_add + theorem ennreal.zpow_le_of_le + theorem ennreal.zpow_lt_top + theorem ennreal.zpow_pos Modified src/data/real/nnreal.lean + theorem nnreal.coe_zpow + theorem nnreal.exists_mem_Ico_zpow + theorem nnreal.exists_mem_Ioc_zpow + theorem nnreal.inv_lt_one + theorem nnreal.inv_lt_one_iff + theorem nnreal.zpow_pos Modified src/topology/instances/ennreal.lean + theorem ennreal.continuous_pow 2021-10-31 18:58:21 5ca3c5e chore(data/set/intervals): add some lemmas (#10062) Add several lemma lemmas about intersection/difference of intervals. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Ico_inter_Ici +/- theorem set.Iic_inter_Ioc_of_le + theorem set.Ioc_diff_Iic + theorem set.Ioc_inter_Iic 2021-10-31 18:58:20 05bd61d chore(analysis): move more code out of `analysis.normed_space.basic` (#10055) ESTIMATED CHANGES Added src/analysis/normed/group/completion.lean + theorem uniform_space.completion.norm_coe Modified src/analysis/normed/group/hom_completion.lean Added src/analysis/normed/group/infinite_sum.lean + theorem cauchy_seq_finset_iff_vanishing_norm + theorem cauchy_seq_finset_of_norm_bounded + theorem cauchy_seq_finset_of_summable_norm + theorem has_sum.norm_le_of_bounded + theorem has_sum_iff_tendsto_nat_of_summable_norm + theorem has_sum_of_subseq_of_summable + theorem nnnorm_tsum_le + theorem norm_tsum_le_tsum_norm + theorem summable_iff_vanishing_norm + theorem summable_of_nnnorm_bounded + theorem summable_of_norm_bounded + theorem summable_of_norm_bounded_eventually + theorem summable_of_summable_nnnorm + theorem summable_of_summable_norm + theorem tsum_of_nnnorm_bounded + theorem tsum_of_norm_bounded Modified src/analysis/normed_space/basic.lean - theorem cauchy_seq_finset_iff_vanishing_norm - theorem cauchy_seq_finset_of_norm_bounded - theorem cauchy_seq_finset_of_summable_norm - theorem has_sum.norm_le_of_bounded - theorem has_sum_iff_tendsto_nat_of_summable_norm - theorem has_sum_of_subseq_of_summable - theorem nnnorm_tsum_le - theorem norm_tsum_le_tsum_norm - theorem summable_iff_vanishing_norm - theorem summable_of_nnnorm_bounded - theorem summable_of_norm_bounded - theorem summable_of_norm_bounded_eventually - theorem summable_of_summable_nnnorm - theorem summable_of_summable_norm - theorem tsum_of_nnnorm_bounded - theorem tsum_of_norm_bounded - theorem uniform_space.completion.norm_coe Modified src/topology/uniform_space/completion.lean +/- theorem uniform_space.completion.extension_coe 2021-10-31 18:58:19 8390325 fix(data/pequiv): fix lint (#10043) ESTIMATED CHANGES Modified src/data/pequiv.lean 2021-10-31 18:58:18 66f7114 feat(measure_theory/group): add `measurable_set.const_smul` (#10025) Partially based on lemmas from #2819. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem subsingleton_zero_smul_set + theorem zero_smul_subset Added src/measure_theory/group/pointwise.lean + theorem measurable_set.const_smul + theorem measurable_set.const_smul_of_ne_zero + theorem measurable_set.const_smul₀ Modified src/measure_theory/measurable_space_def.lean + theorem set.subsingleton.measurable_set 2021-10-31 17:26:29 f2b77d7 refactor(set_theory/cardinal): swap sides of `simp` lemmas (#10040) ## API changes ### Swap sides of simp lemmas - `cardinal.add_def` is no loner a `simp` lemma, `cardinal.mk_sum` (renamed from `cardinal.add`) simplifies `#(α ⊕ β)` to `lift.{v u} (#α) + lift.{u v} (#β)`; - `cardinal.mul_def` is no loner a `simp` lemma, `cardinal.mk_prod` (merged with `cardinal.mul`) simplifies `#(α × β)` to `lift.{v u} (#α) * lift.{u v} (#β)`; - `cardinal.power_def` is no longer a `simp` lemma. New lemma `cardinal.mk_arrow` computes `#(α → β)`. It is not a `simp` lemma because it follows from other `simp` lemmas. - replace `cardinal.sum_mk` with `cardinal.mk_sigma` and `cardinal.prod_mk` with `cardinal.mk_pi`; ### Other changes - new lemmas `@[simp] cardinal.lift_uzero` and `cardinal.lift_umax'`; - split `cardinal.linear_order` into `cardinal.preorder` (doesn't rely on `classical.choice`), `cardinal.partial_order` (needs `classical.choice`, computable), and `cardinal.linear_order` (noncomputable); - add `cardinal.lift_order_embedding`; - add `cardinal.mk_psum`; - rename `cardinal.prop_eq_two` to `cardinal.mk_Prop`, drop the old `mk_Prop`; - use local notation for natural power; - rename old `sum_const` to `sum_const'`, the new `@[simp] lemma sum_const` is what used to be `sum_const_eq_lift_mul`; - rename old `prod_const` to `prod_const'`, the new `@[simp] lemma prod_const` deals with types in different universes; - add `@[simp]` to `cardinal.prod_eq_zero` and `cardinal.omega_le_mk`; - add `@[simp]` lemmas `cardinal.mk_eq_one`, `cardinal.mk_vector`, `cardinal.omega_mul_eq`, and `cardinal.mul_omega_eq`; - replace `mk_plift_of_true` and `mk_plift_of_false` with `mk_plift_true` and `mk_plift_false`; - `mk_list_eq_mk` and `mk_finset_eq_mk` now assume `[infinite α]` instead of `ω ≤ #α`. ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/data/array/lemmas.lean - def equiv.vector_equiv_fin Modified src/data/vector/basic.lean + def equiv.vector_equiv_fin Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_module/finite/rank.lean Modified src/linear_algebra/free_module/rank.lean +/- theorem module.free.rank_prod Modified src/set_theory/cardinal.lean - theorem cardinal.add +/- theorem cardinal.add_def +/- theorem cardinal.cantor + def cardinal.lift_order_embedding + theorem cardinal.lift_umax' + theorem cardinal.lift_uzero +/- theorem cardinal.mk_Prop + theorem cardinal.mk_arrow +/- theorem cardinal.mk_empty + theorem cardinal.mk_eq_one +/- theorem cardinal.mk_list_eq_sum_pow +/- theorem cardinal.mk_pempty + theorem cardinal.mk_pi + theorem cardinal.mk_plift_false - theorem cardinal.mk_plift_of_false - theorem cardinal.mk_plift_of_true + theorem cardinal.mk_plift_true +/- theorem cardinal.mk_prod + theorem cardinal.mk_psum +/- theorem cardinal.mk_punit +/- theorem cardinal.mk_set + theorem cardinal.mk_sigma + theorem cardinal.mk_sum +/- theorem cardinal.mk_unit + theorem cardinal.mk_vector - theorem cardinal.mul +/- theorem cardinal.mul_def +/- theorem cardinal.omega_le_mk +/- theorem cardinal.omega_mul_omega +/- theorem cardinal.power_def + theorem cardinal.prod_const' +/- theorem cardinal.prod_const +/- theorem cardinal.prod_eq_zero - theorem cardinal.prod_mk - theorem cardinal.prop_eq_two + theorem cardinal.sum_const' +/- theorem cardinal.sum_const - theorem cardinal.sum_const_eq_lift_mul - theorem cardinal.sum_mk Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.mk_finset_eq_mk +/- theorem cardinal.mk_list_eq_mk + theorem cardinal.mul_omega_eq + theorem cardinal.omega_mul_eq Modified src/set_theory/cofinality.lean 2021-10-31 14:01:29 4ef3fcd chore(algebra/group/inj_surj): add 2 missing `def`s (#10068) `function.injective.right_cancel_monoid` and `function.injective.cancel_monoid` were missing. `function.injective.sub_neg_monoid` was also misnamed `function.injective.sub_neg_add_monoid`. ESTIMATED CHANGES Modified src/algebra/group/inj_surj.lean 2021-10-31 14:01:28 36de1ef chore(ring_theory/noetherian): generalize to semiring (#10032) This weakens some typeclasses on some results about `is_noetherian` (which already permits modules over semirings), and relaxes `is_noetherian_ring` to permit semirings. This does not actually try changing any of the proofs, it just relaxes assumptions that were stronger than what was actually used. ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean +/- theorem is_noetherian_of_submodule_of_noetherian +/- theorem is_noetherian_of_tower +/- theorem is_noetherian_ring_iff +/- theorem is_noetherian_ring_iff_ideal_fg +/- theorem ring.is_noetherian_of_zero_eq_one +/- theorem well_founded_submodule_gt 2021-10-31 13:18:04 ca7fee8 feat(category_theory/limits): Results about pullbacks (#9984) - Provided the explicit isomorphism `X ×[Z] Y ≅ Y ×[Z] X`. - Provided the pullback of f g when either one is iso or when both are mono. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.fst_eq_snd_of_mono_eq + theorem category_theory.limits.has_pullback_of_left_iso + theorem category_theory.limits.has_pullback_of_right_iso + theorem category_theory.limits.has_pullback_symmetry + theorem category_theory.limits.has_pushout_of_left_iso + theorem category_theory.limits.has_pushout_of_right_iso + theorem category_theory.limits.has_pushout_symmetry + theorem category_theory.limits.inl_comp_pushout_symmetry_hom + theorem category_theory.limits.inl_comp_pushout_symmetry_inv + theorem category_theory.limits.inl_eq_inr_of_epi_eq + theorem category_theory.limits.inr_comp_pushout_symmetry_hom + theorem category_theory.limits.inr_comp_pushout_symmetry_inv + def category_theory.limits.pullback_cone_of_left_iso + theorem category_theory.limits.pullback_cone_of_left_iso_X + theorem category_theory.limits.pullback_cone_of_left_iso_fst + def category_theory.limits.pullback_cone_of_left_iso_is_limit + theorem category_theory.limits.pullback_cone_of_left_iso_snd + theorem category_theory.limits.pullback_cone_of_left_iso_π_app_left + theorem category_theory.limits.pullback_cone_of_left_iso_π_app_none + theorem category_theory.limits.pullback_cone_of_left_iso_π_app_right + def category_theory.limits.pullback_cone_of_right_iso + theorem category_theory.limits.pullback_cone_of_right_iso_X + theorem category_theory.limits.pullback_cone_of_right_iso_fst + def category_theory.limits.pullback_cone_of_right_iso_is_limit + theorem category_theory.limits.pullback_cone_of_right_iso_snd + theorem category_theory.limits.pullback_cone_of_right_iso_π_app_left + theorem category_theory.limits.pullback_cone_of_right_iso_π_app_none + theorem category_theory.limits.pullback_cone_of_right_iso_π_app_right + def category_theory.limits.pullback_symmetry + theorem category_theory.limits.pullback_symmetry_hom_comp_fst + theorem category_theory.limits.pullback_symmetry_hom_comp_snd + theorem category_theory.limits.pullback_symmetry_hom_of_epi_eq + theorem category_theory.limits.pullback_symmetry_hom_of_mono_eq + theorem category_theory.limits.pullback_symmetry_inv_comp_fst + theorem category_theory.limits.pullback_symmetry_inv_comp_snd + theorem category_theory.limits.pushout_cocone.epi_of_is_colimit_mk_id_id + def category_theory.limits.pushout_cocone.is_colimit_mk_id_id + def category_theory.limits.pushout_cocone_of_left_iso + theorem category_theory.limits.pushout_cocone_of_left_iso_X + theorem category_theory.limits.pushout_cocone_of_left_iso_inl + theorem category_theory.limits.pushout_cocone_of_left_iso_inr + def category_theory.limits.pushout_cocone_of_left_iso_is_limit + theorem category_theory.limits.pushout_cocone_of_left_iso_ι_app_left + theorem category_theory.limits.pushout_cocone_of_left_iso_ι_app_none + theorem category_theory.limits.pushout_cocone_of_left_iso_ι_app_right + def category_theory.limits.pushout_cocone_of_right_iso + theorem category_theory.limits.pushout_cocone_of_right_iso_X + theorem category_theory.limits.pushout_cocone_of_right_iso_inl + theorem category_theory.limits.pushout_cocone_of_right_iso_inr + def category_theory.limits.pushout_cocone_of_right_iso_is_limit + theorem category_theory.limits.pushout_cocone_of_right_iso_ι_app_left + theorem category_theory.limits.pushout_cocone_of_right_iso_ι_app_none + theorem category_theory.limits.pushout_cocone_of_right_iso_ι_app_right + def category_theory.limits.pushout_is_pushout + def category_theory.limits.pushout_symmetry 2021-10-31 11:57:21 be0a4af chore(analysis): move `real.angle` to a dedicated file (#10065) We don't use this type anywhere else. ESTIMATED CHANGES Added src/analysis/special_functions/trigonometric/angle.lean + theorem real.angle.angle_eq_iff_two_pi_dvd_sub + theorem real.angle.coe_add + theorem real.angle.coe_coe_hom + def real.angle.coe_hom + theorem real.angle.coe_int_mul_eq_zsmul + theorem real.angle.coe_nat_mul_eq_nsmul + theorem real.angle.coe_neg + theorem real.angle.coe_sub + theorem real.angle.coe_two_pi + theorem real.angle.coe_zero + theorem real.angle.cos_eq_iff_eq_or_eq_neg + theorem real.angle.cos_sin_inj + theorem real.angle.sin_eq_iff_eq_or_add_eq_pi + def real.angle Modified src/analysis/special_functions/trigonometric/basic.lean - theorem real.angle.angle_eq_iff_two_pi_dvd_sub - theorem real.angle.coe_add - theorem real.angle.coe_int_mul_eq_zsmul - theorem real.angle.coe_nat_mul_eq_nsmul - theorem real.angle.coe_neg - theorem real.angle.coe_sub - theorem real.angle.coe_two_pi - theorem real.angle.coe_zero - theorem real.angle.cos_eq_iff_eq_or_eq_neg - theorem real.angle.cos_sin_inj - theorem real.angle.sin_eq_iff_eq_or_add_eq_pi - def real.angle 2021-10-31 11:57:20 0433eb6 doc(topology/uniform_space/uniform_embedding): add some docs (#10045) ESTIMATED CHANGES Modified src/topology/uniform_space/uniform_embedding.lean - theorem uniform_inducing.uniform_embedding 2021-10-31 11:57:19 e5f9bec chore(linear_algebra/basic): relax ring to semiring (#10030) This relaxes a random selection of lemmas from `ring R` to `semiring R`, and cleans up some unused `variables` nearby. Probably the most useful of these are `submodule.mem_map_equiv`, `map_subtype.rel_iso`, and `submodule.disjoint_iff_comap_eq_bot` ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- def linear_map.iterate_ker +/- def linear_map.iterate_range +/- def submodule.map_subtype.order_embedding +/- def submodule.map_subtype.rel_iso 2021-10-31 11:57:18 35cf154 feat(linear_algebra/eigenspace): define `eigenvalues` of an endomorphism (#10027) Prerequisites in `linear_algebra/eigenspace` for #9995, including a definition `module.End.eigenvalues`, the eigenvalues of an endomorphism considered as a subtype of the scalar ring. ESTIMATED CHANGES Modified src/linear_algebra/eigenspace.lean + theorem module.End.eigenspace_restrict_eq_bot + theorem module.End.eigenspace_restrict_le_eigenspace + def module.End.eigenvalues + theorem module.End.has_eigenvalue.exists_has_eigenvector 2021-10-31 10:19:07 175ac2c chore(algebra/group/defs): golf a proof (#10067) Use `monoid.ext` to golf `div_inv_monoid.ext`. ESTIMATED CHANGES Modified src/algebra/group/defs.lean 2021-10-31 10:19:06 31c8aa5 chore(algebra/group_with_zero/basic): zero, one, and pow lemmas for `ring.inverse` (#10049) This adds: * `ring.inverse_zero` * `ring.inverse_one` * `ring.inverse_pow` (to match `inv_pow`, `inv_pow₀`) * `commute.ring_inverse_ring_inverse` (to match `commute.inv_inv`) ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem commute.ring_inverse_ring_inverse + theorem monoid_with_zero_hom.map_units_inv + theorem ring.inverse_one + theorem ring.inverse_zero + theorem ring.mul_inverse_rev' +/- theorem ring.mul_inverse_rev Modified src/algebra/group_with_zero/power.lean + theorem ring.inverse_pow 2021-10-31 09:46:36 43e7d1b feat(order/antichain): Antichains (#9926) This defines antichains mimicking the definition of chains. ESTIMATED CHANGES Added src/order/antichain.lean + theorem is_antichain.eq_of_related + theorem is_antichain.image + theorem is_antichain.insert_of_symmetric + theorem is_antichain.mk_is_antichain + theorem is_antichain.mk_max + theorem is_antichain.mk_subset + theorem is_antichain.mono + theorem is_antichain.mono_on + theorem is_antichain.preimage + theorem is_antichain.swap + def is_antichain + theorem is_antichain_insert + theorem is_antichain_insert_of_symmetric + theorem set.subsingleton.is_antichain 2021-10-31 07:34:51 b7f120f chore(*): clean up the library using to_additive (#9790) Since #9138 and #5487 to_additive got a lot better, so a lot of duplication in the library becomes unnecessary and makes maintenence a burden. So we remove a large number of copy-pasted declarations that can now be generated automatically. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.pow_eq_prod_const +/- theorem finset.prod_const - theorem finset.sum_const - theorem finset.sum_nsmul - theorem finset.sum_update_of_mem Modified src/algebra/group/defs.lean - theorem nsmul_one' Modified src/algebra/group/hom_instances.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group_power/lemmas.lean - theorem add_monoid_hom.map_zsmul - theorem add_one_zsmul - theorem add_zsmul - theorem bit0_zsmul - theorem bit1_zsmul +/- theorem commute.units_zpow_left +/- theorem commute.units_zpow_right +/- theorem monoid_hom.map_zpow - theorem mul_zsmul - theorem one_add_zsmul +/- theorem semiconj_by.units_zpow_right - theorem sub_zsmul +/- theorem units.coe_pow +/- theorem units.coe_zpow - theorem zsmul_add_comm - theorem zsmul_mul' Modified src/algebra/iterate_hom.lean - theorem add_left_iterate - theorem add_right_iterate - theorem add_right_iterate_apply_zero +/- theorem mul_left_iterate +/- theorem mul_right_iterate Modified src/data/equiv/mul_add.lean Modified src/data/fintype/card.lean - theorem list.sum_take_of_fn Modified src/data/int/gcd.lean Modified src/data/list/basic.lean - theorem list.length_pos_of_sum_ne_zero Modified src/deprecated/submonoid.lean - theorem is_add_submonoid.multiple_subset - theorem is_add_submonoid.smul_mem - theorem multiples.add_mem - theorem multiples.self_mem - theorem multiples.zero_mem - def multiples Modified src/group_theory/coset.lean - def quotient_add_group.quotient Modified src/group_theory/order_of_element.lean - theorem add_order_eq_card_zmultiples - theorem add_order_of_dvd_card_univ - theorem add_order_of_dvd_iff_nsmul_eq_zero - theorem add_order_of_dvd_of_nsmul_eq_zero - theorem add_order_of_eq_add_order_of_iff - theorem add_order_of_eq_card_multiples - theorem add_order_of_eq_one_iff - theorem add_order_of_eq_prime_pow - theorem add_order_of_injective - theorem add_order_of_le_card_univ - theorem add_order_of_le_of_nsmul_eq_zero - theorem add_order_of_nsmul'' - theorem add_order_of_nsmul' - theorem add_order_of_nsmul - theorem add_order_of_nsmul_eq_zero - theorem add_order_of_pos - theorem add_order_of_zero - theorem card_nsmul_eq_zero - theorem exists_nsmul_eq_self_of_coprime - theorem exists_nsmul_eq_zero - theorem exists_zsmul_eq_zero - theorem fin_equiv_multiples_apply - theorem fin_equiv_multiples_symm_apply +/- theorem fin_equiv_powers_apply +/- theorem fin_equiv_powers_symm_apply - theorem fin_equiv_zmultiples_apply - theorem fin_equiv_zmultiples_symm_apply +/- theorem fin_equiv_zpowers_apply +/- theorem fin_equiv_zpowers_symm_apply - theorem gcd_nsmul_card_eq_zero_iff - theorem mem_multiples_iff_mem_range_add_order_of - theorem mem_multiples_iff_mem_zmultiples - theorem mem_zmultiples_iff_mem_range_add_order_of - theorem multiples_eq_zmultiples - theorem multiples_equiv_multiples_apply - theorem nsmul_eq_mod_add_order_of - theorem nsmul_inj_mod - theorem nsmul_injective_aux - theorem nsmul_injective_of_lt_add_order_of - theorem nsmul_ne_zero_of_lt_add_order_of' +/- theorem order_of_eq_one_iff +/- theorem order_of_one +/- theorem pow_card_eq_one - theorem sum_card_add_order_of_eq_card_nsmul_eq_zero - theorem zmultiples_equiv_zmultiples_apply - theorem zsmul_eq_mod_add_order_of Modified src/group_theory/subgroup/basic.lean - theorem add_subgroup.closure_singleton_zero - theorem add_subgroup.coe_smul - theorem add_subgroup.coe_zsmul - theorem add_subgroup.mem_closure_singleton - theorem add_subgroup.zmultiples_subset +/- theorem monoid_hom.of_left_inverse_apply +/- theorem monoid_hom.of_left_inverse_symm_apply +/- theorem subgroup.coe_copy +/- theorem subgroup.coe_pow +/- theorem subgroup.coe_zpow 2021-10-31 03:19:22 236f395 chore(topology/compacts): add a missing simp lemma (#10063) ESTIMATED CHANGES Modified src/topology/compacts.lean + theorem topological_space.positive_compacts_univ_val 2021-10-31 01:33:41 c952017 chore(logic/embedding): docs, fixes (#10047) * generalize `function.extend` and some lemmas from `Type*` to `Sort*`. * add missing docs in `logic.embedding`; * swap `function.embedding.arrow_congr_left` and `function.embedding.arrow_congr_right`; * use `function.extend` to define the new `function.embedding.arrow_congr_left`. ESTIMATED CHANGES Modified src/algebra/module/pi.lean +/- theorem function.extend_smul Modified src/logic/basic.lean +/- theorem exists_apply_eq_apply' +/- theorem exists_apply_eq_apply +/- theorem exists_eq Modified src/logic/embedding.lean +/- def function.embedding.Pi_congr_right - def function.embedding.arrow_congr_left + def function.embedding.arrow_congr_right + theorem function.embedding.arrow_congr_right_apply Modified src/logic/function/basic.lean Modified src/set_theory/cardinal.lean 2021-10-31 00:02:40 951c063 chore(data/set/pairwise): rename `set.pairwise_on` to `set.pairwise` to match `list.pairwise` and `multiset.pairwise` (#10035) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean +/- theorem finprod_mem_sUnion Modified src/analysis/box_integral/partition/basic.lean Modified src/analysis/box_integral/partition/split.lean Modified src/analysis/convex/basic.lean - theorem convex_iff_pairwise_on_pos + theorem convex_iff_pairwise_pos Modified src/analysis/convex/function.lean - theorem concave_on_iff_pairwise_on_pos + theorem concave_on_iff_pairwise_pos - theorem convex_on_iff_pairwise_on_pos + theorem convex_on_iff_pairwise_pos Modified src/data/list/nodup.lean + theorem list.nodup.pairwise_of_set_pairwise - theorem list.nodup.pairwise_of_set_pairwise_on Modified src/data/list/pairwise.lean + theorem list.pairwise.set_pairwise - theorem list.pairwise.set_pairwise_on Modified src/data/polynomial/field_division.lean Modified src/data/set/pairwise.lean - theorem pairwise.pairwise_on + theorem pairwise.set_pairwise + theorem set.inj_on.pairwise_image - theorem set.inj_on.pairwise_on_image + theorem set.nonempty.pairwise_eq_iff_exists_eq + theorem set.nonempty.pairwise_iff_exists_forall - theorem set.nonempty.pairwise_on_eq_iff_exists_eq - theorem set.nonempty.pairwise_on_iff_exists_forall + theorem set.pairwise.imp + theorem set.pairwise.imp_on + theorem set.pairwise.mono' + theorem set.pairwise.mono + theorem set.pairwise.on_injective + theorem set.pairwise_Union + theorem set.pairwise_disjoint_fiber + theorem set.pairwise_disjoint_on_mono + theorem set.pairwise_empty + theorem set.pairwise_eq_iff_exists_eq + theorem set.pairwise_iff_exists_forall + theorem set.pairwise_insert + theorem set.pairwise_insert_of_symmetric + theorem set.pairwise_of_forall - theorem set.pairwise_on.imp - theorem set.pairwise_on.imp_on - theorem set.pairwise_on.mono' - theorem set.pairwise_on.mono - theorem set.pairwise_on.on_injective - def set.pairwise_on - theorem set.pairwise_on_Union - theorem set.pairwise_on_disjoint_fiber - theorem set.pairwise_on_disjoint_on_mono - theorem set.pairwise_on_empty - theorem set.pairwise_on_eq_iff_exists_eq - theorem set.pairwise_on_iff_exists_forall - theorem set.pairwise_on_insert - theorem set.pairwise_on_insert_of_symmetric - theorem set.pairwise_on_of_forall - theorem set.pairwise_on_pair - theorem set.pairwise_on_pair_of_symmetric - theorem set.pairwise_on_sUnion - theorem set.pairwise_on_singleton - theorem set.pairwise_on_top - theorem set.pairwise_on_union - theorem set.pairwise_on_union_of_symmetric - theorem set.pairwise_on_univ + theorem set.pairwise_pair + theorem set.pairwise_pair_of_symmetric + theorem set.pairwise_sUnion + theorem set.pairwise_singleton + theorem set.pairwise_top + theorem set.pairwise_union + theorem set.pairwise_union_of_symmetric + theorem set.pairwise_univ Modified src/geometry/euclidean/circumcenter.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/cycles.lean Modified src/measure_theory/covering/besicovitch.lean Modified src/measure_theory/covering/besicovitch_vector_space.lean Modified src/measure_theory/covering/vitali.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure_bUnion_finset Modified src/order/zorn.lean +/- def zorn.chain Modified src/ring_theory/coprime/lemmas.lean Modified src/topology/bases.lean Modified src/topology/metric_space/basic.lean + theorem metric.is_closed_of_pairwise_le_dist - theorem metric.is_closed_of_pairwise_on_le_dist Modified src/topology/uniform_space/separation.lean 2021-10-30 23:31:00 7ef3262 ci(.github/workflows/bors.yml): "bors" label for staging builds (#10064) ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/mk_build_yml.sh 2021-10-30 20:45:45 bdf38cf chore(*): rename int_pow to zpow (#10058) Leftovers of #9989 ESTIMATED CHANGES Modified src/algebra/group_with_zero/power.lean Modified src/algebra/order/archimedean.lean - theorem exists_int_pow_near' - theorem exists_int_pow_near + theorem exists_zpow_near' + theorem exists_zpow_near Modified src/analysis/normed_space/basic.lean Modified src/linear_algebra/matrix/zpow.lean Modified src/set_theory/surreal/dyadic.lean - theorem surreal.nsmul_int_pow_two_pow_half + theorem surreal.zsmul_pow_two_pow_half 2021-10-30 09:45:40 5ff850b feat(algebra/module/submodule_lattice): add `add_subgroup.to_int_submodule` (#10051) This converts an `add_subgroup M` to a `submodule ℤ M`. We already have the analogous construction for `add_submonoid M`. ESTIMATED CHANGES Modified src/algebra/module/submodule_lattice.lean + theorem add_subgroup.coe_to_int_submodule + def add_subgroup.to_int_submodule + theorem add_subgroup.to_int_submodule_symm + theorem add_subgroup.to_int_submodule_to_add_subgroup + theorem submodule.to_add_subgroup_to_int_submodule 2021-10-30 08:28:49 d06bd9a feat(algebra/big_operators/finprod): add finprod_eq_of_bijective (#10048) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_comp + theorem finprod_eq_of_bijective 2021-10-30 06:04:06 06b1d87 feat(algebra/group): add `commute.is_unit_mul_iff` (#10042) ESTIMATED CHANGES Modified src/algebra/group/commute.lean + theorem commute.is_unit_mul_iff + theorem is_unit_mul_self_iff Modified src/algebra/group_power/lemmas.lean +/- theorem is_unit_pos_pow_iff + theorem is_unit_pow_succ_iff 2021-10-30 01:45:12 fcc158e chore(*): update to Lean-3.35.0c (#9988) Move `stream`, `rbtree`, and `rbmap` from core to `mathlib` and reflows some long lines. Rename some files to avoid name clashes. ESTIMATED CHANGES Modified leanpkg.toml Modified scripts/nolints.txt Modified scripts/style-exceptions.txt Modified src/data/list/defs.lean Added src/data/rbmap/basic.lean + def mk_rbmap + def rbmap.contains + def rbmap.empty + def rbmap.find + def rbmap.find_entry + def rbmap.fold + def rbmap.from_list + def rbmap.insert + def rbmap.max + def rbmap.min + def rbmap.rbmap_lt_dec + def rbmap.rev_fold + def rbmap.to_list + def rbmap.to_value + def rbmap + def rbmap_lt + def rbmap_of Added src/data/rbmap/default.lean + theorem rbmap.constains_correct + theorem rbmap.eq_leaf_of_max_eq_none + theorem rbmap.eq_leaf_of_min_eq_none + theorem rbmap.eq_none_of_to_value_eq_none + theorem rbmap.eq_of_find_entry_some + theorem rbmap.eq_or_mem_of_mem_ins + theorem rbmap.eq_some_of_to_value_eq_some + theorem rbmap.equiv_or_mem_of_mem_insert + theorem rbmap.eqv_of_find_entry_some + theorem rbmap.find_correct + theorem rbmap.find_entry_correct + theorem rbmap.find_entry_eq_find_entry_of_eqv + theorem rbmap.find_entry_insert + theorem rbmap.find_entry_insert_of_disj + theorem rbmap.find_entry_insert_of_eqv + theorem rbmap.find_entry_insert_of_ne + theorem rbmap.find_entry_insert_of_not_eqv + theorem rbmap.find_eq_find_of_eqv + theorem rbmap.find_insert + theorem rbmap.find_insert_of_disj + theorem rbmap.find_insert_of_eqv + theorem rbmap.find_insert_of_ne + theorem rbmap.find_insert_of_not_eqv + theorem rbmap.incomp_or_mem_of_mem_ins + theorem rbmap.max_is_maximal + theorem rbmap.max_is_maximal_of_total + theorem rbmap.mem_insert + theorem rbmap.mem_insert_of_equiv + theorem rbmap.mem_insert_of_incomp + theorem rbmap.mem_insert_of_mem + theorem rbmap.mem_of_find_entry_some + theorem rbmap.mem_of_find_some + theorem rbmap.mem_of_max_eq + theorem rbmap.mem_of_mem_of_eqv + theorem rbmap.mem_of_min_eq + theorem rbmap.min_is_minimal + theorem rbmap.min_is_minimal_of_total + theorem rbmap.not_mem_mk_rbmap + theorem rbmap.not_mem_of_empty + theorem rbmap.not_mem_of_find_entry_none + theorem rbmap.not_mem_of_find_none Added src/data/rbtree/basic.lean + theorem rbnode.balanced + theorem rbnode.depth_max' + theorem rbnode.depth_max + theorem rbnode.depth_min + inductive rbnode.is_node_of + inductive rbnode.is_red_black + inductive rbnode.is_searchable + theorem rbnode.is_searchable_none_high_of_is_searchable_some_high + theorem rbnode.is_searchable_none_low_of_is_searchable_some_low + theorem rbnode.is_searchable_of_incomp_of_is_searchable + theorem rbnode.is_searchable_of_is_searchable_of_incomp + theorem rbnode.is_searchable_some_high_of_is_searchable_of_lt + theorem rbnode.is_searchable_some_low_of_is_searchable_of_lt + def rbnode.lift + theorem rbnode.lo_lt_hi + theorem rbnode.lt_of_mem_left + theorem rbnode.lt_of_mem_left_right + theorem rbnode.lt_of_mem_right + theorem rbnode.range Added src/data/rbtree/default.lean Added src/data/rbtree/default_lt.lean Added src/data/rbtree/find.lean + theorem rbnode.eqv_of_find_some + theorem rbnode.find.induction + theorem rbnode.find_correct + theorem rbnode.find_correct_exact + theorem rbnode.find_eq_find_of_eqv + theorem rbnode.mem_of_mem_exact Added src/data/rbtree/init.lean + def mk_rbtree + def rbnode.balance1 + def rbnode.balance1_node + def rbnode.balance2 + def rbnode.balance2_node + inductive rbnode.color + def rbnode.depth + def rbnode.find + def rbnode.fold + def rbnode.get_color + def rbnode.ins + def rbnode.insert + def rbnode.mem + def rbnode.mem_exact + def rbnode.mk_insert_result + def rbnode.rev_fold + inductive rbnode.well_formed + inductive rbnode + def rbtree.contains + def rbtree.depth + def rbtree.empty + def rbtree.find + def rbtree.fold + def rbtree.from_list + def rbtree.insert + def rbtree.mem_exact + def rbtree.rev_fold + def rbtree.to_list + def rbtree + def rbtree_of Added src/data/rbtree/insert.lean + theorem rbnode.balance.cases + theorem rbnode.balance1_eq₁ + theorem rbnode.balance1_eq₂ + theorem rbnode.balance1_eq₃ + theorem rbnode.balance1_ne_leaf + theorem rbnode.balance1_node_ne_leaf + theorem rbnode.balance1_node_rb + theorem rbnode.balance1_rb + theorem rbnode.balance2_eq₁ + theorem rbnode.balance2_eq₂ + theorem rbnode.balance2_eq₃ + theorem rbnode.balance2_ne_leaf + theorem rbnode.balance2_node_ne_leaf + theorem rbnode.balance2_node_rb + theorem rbnode.balance2_rb + theorem rbnode.equiv_or_mem_of_mem_ins + theorem rbnode.equiv_or_mem_of_mem_insert + theorem rbnode.find_balance1_eqv + theorem rbnode.find_balance1_gt + theorem rbnode.find_balance1_lt + theorem rbnode.find_balance1_node + theorem rbnode.find_balance1_node_eqv + theorem rbnode.find_balance1_node_gt + theorem rbnode.find_balance1_node_lt + theorem rbnode.find_balance2_eqv + theorem rbnode.find_balance2_gt + theorem rbnode.find_balance2_lt + theorem rbnode.find_balance2_node + theorem rbnode.find_balance2_node_eqv + theorem rbnode.find_balance2_node_gt + theorem rbnode.find_balance2_node_lt + theorem rbnode.find_black_eq_find_red + theorem rbnode.find_ins_of_disj + theorem rbnode.find_ins_of_eqv + theorem rbnode.find_insert_of_disj + theorem rbnode.find_insert_of_eqv + theorem rbnode.find_insert_of_not_eqv + theorem rbnode.find_mk_insert_result + theorem rbnode.find_red_of_gt + theorem rbnode.find_red_of_incomp + theorem rbnode.find_red_of_lt + theorem rbnode.ins.induction + theorem rbnode.ins_ne_leaf + theorem rbnode.ins_rb + def rbnode.ins_rb_result + theorem rbnode.insert_is_red_black + theorem rbnode.insert_ne_leaf + theorem rbnode.insert_rb + def rbnode.insert_rb_result + inductive rbnode.is_bad_red_black + theorem rbnode.is_searchable_balance1 + theorem rbnode.is_searchable_balance1_node + theorem rbnode.is_searchable_balance2 + theorem rbnode.is_searchable_balance2_node + theorem rbnode.is_searchable_ins + theorem rbnode.is_searchable_insert + theorem rbnode.is_searchable_mk_insert_result + theorem rbnode.ite_eq_of_not_lt + theorem rbnode.mem_balance1_node_of_incomp + theorem rbnode.mem_balance1_node_of_mem_left + theorem rbnode.mem_balance1_node_of_mem_right + theorem rbnode.mem_balance2_node_of_incomp + theorem rbnode.mem_balance2_node_of_mem_left + theorem rbnode.mem_balance2_node_of_mem_right + theorem rbnode.mem_exact_balance1_node_of_mem_exact + theorem rbnode.mem_exact_balance2_node_of_mem_exact + theorem rbnode.mem_ins_of_incomp + theorem rbnode.mem_ins_of_mem + theorem rbnode.mem_insert_of_incomp + theorem rbnode.mem_insert_of_mem + theorem rbnode.mem_mk_insert_result + theorem rbnode.mem_of_mem_mk_insert_result + theorem rbnode.of_get_color_eq_red + theorem rbnode.of_get_color_ne_red + theorem rbnode.of_mem_balance1_node + theorem rbnode.of_mem_balance2_node + theorem rbnode.weak_trichotomous Added src/data/rbtree/main.lean + theorem rbnode.is_red_black_of_well_formed + theorem rbnode.is_searchable_of_well_formed + theorem rbtree.balanced + theorem rbtree.contains_correct + theorem rbtree.eq_leaf_of_max_eq_none + theorem rbtree.eq_leaf_of_min_eq_none + theorem rbtree.eq_of_find_some + theorem rbtree.eq_or_mem_of_mem_ins + theorem rbtree.equiv_or_mem_of_mem_insert + theorem rbtree.eqv_of_find_some + theorem rbtree.find_correct + theorem rbtree.find_correct_exact + theorem rbtree.find_correct_of_total + theorem rbtree.find_eq_find_of_eqv + theorem rbtree.find_insert + theorem rbtree.find_insert_of_disj + theorem rbtree.find_insert_of_eqv + theorem rbtree.find_insert_of_ne + theorem rbtree.find_insert_of_not_eqv + theorem rbtree.incomp_or_mem_of_mem_ins + theorem rbtree.insert_ne_mk_rbtree + theorem rbtree.max_is_maximal + theorem rbtree.mem_insert + theorem rbtree.mem_insert_of_equiv + theorem rbtree.mem_insert_of_incomp + theorem rbtree.mem_insert_of_mem + theorem rbtree.mem_of_find_some + theorem rbtree.mem_of_max_eq + theorem rbtree.mem_of_mem_of_eqv + theorem rbtree.mem_of_min_eq + theorem rbtree.min_is_minimal + theorem rbtree.not_mem_mk_rbtree + theorem rbtree.not_mem_of_empty + theorem rbtree.not_mem_of_find_none Added src/data/rbtree/min_max.lean + theorem rbnode.eq_leaf_of_max_eq_none + theorem rbnode.eq_leaf_of_min_eq_none + theorem rbnode.max_is_maximal + theorem rbnode.mem_of_max_eq + theorem rbnode.mem_of_min_eq + theorem rbnode.min_is_minimal Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/stream/basic.lean Added src/data/stream/init.lean + def stream.all + theorem stream.all_def + def stream.any + theorem stream.any_def + theorem stream.append_append_stream + theorem stream.append_approx_drop + def stream.append_stream + theorem stream.append_stream_head_tail + def stream.apply + def stream.approx + theorem stream.approx_succ + theorem stream.approx_zero + theorem stream.bisim_simple + theorem stream.coinduction + theorem stream.composition + def stream.cons + theorem stream.cons_append_stream + theorem stream.cons_nth_inits_core + def stream.const + theorem stream.const_eq + def stream.corec' + theorem stream.corec'_eq + def stream.corec + theorem stream.corec_def + theorem stream.corec_eq + theorem stream.corec_id_f_eq_iterate + theorem stream.corec_id_id_eq_const + def stream.corec_on + def stream.cycle + theorem stream.cycle_eq + theorem stream.cycle_singleton + def stream.drop + theorem stream.drop_append_stream + theorem stream.drop_const + theorem stream.drop_drop + theorem stream.drop_map + theorem stream.drop_succ + theorem stream.drop_zip + theorem stream.eq_of_bisim + theorem stream.eq_or_mem_of_mem_cons + def stream.even + theorem stream.even_cons_cons + theorem stream.even_interleave + theorem stream.even_tail + theorem stream.exists_of_mem_map + def stream.head + theorem stream.head_cons + theorem stream.head_even + theorem stream.head_iterate + theorem stream.head_map + theorem stream.head_zip + theorem stream.homomorphism + theorem stream.identity + def stream.inits + def stream.inits_core + theorem stream.inits_core_eq + theorem stream.inits_eq + theorem stream.inits_tail + theorem stream.interchange + def stream.interleave + theorem stream.interleave_eq + theorem stream.interleave_even_odd + theorem stream.interleave_tail_tail + def stream.is_bisimulation + def stream.iterate + theorem stream.iterate_eq + theorem stream.iterate_id + def stream.map + theorem stream.map_append_stream + theorem stream.map_cons + theorem stream.map_const + theorem stream.map_eq + theorem stream.map_eq_apply + theorem stream.map_id + theorem stream.map_iterate + theorem stream.map_map + theorem stream.map_tail + theorem stream.mem_append_stream_left + theorem stream.mem_append_stream_right + theorem stream.mem_cons + theorem stream.mem_cons_of_mem + theorem stream.mem_const + theorem stream.mem_cycle + theorem stream.mem_interleave_left + theorem stream.mem_interleave_right + theorem stream.mem_map + theorem stream.mem_of_mem_even + theorem stream.mem_of_mem_odd + theorem stream.mem_of_nth_eq + def stream.nats + theorem stream.nats_eq + theorem stream.nil_append_stream + def stream.nth + theorem stream.nth_approx + theorem stream.nth_const + theorem stream.nth_drop + theorem stream.nth_even + theorem stream.nth_inits + theorem stream.nth_interleave_left + theorem stream.nth_interleave_right + theorem stream.nth_map + theorem stream.nth_nats + theorem stream.nth_odd + theorem stream.nth_of_bisim + theorem stream.nth_succ + theorem stream.nth_succ_iterate + theorem stream.nth_tails + theorem stream.nth_unfolds_head_tail + theorem stream.nth_zero_cons + theorem stream.nth_zero_iterate + theorem stream.nth_zip + def stream.odd + theorem stream.odd_eq + def stream.pure + def stream.tail + theorem stream.tail_cons + theorem stream.tail_const + theorem stream.tail_drop + theorem stream.tail_eq_drop + theorem stream.tail_even + theorem stream.tail_inits + theorem stream.tail_interleave + theorem stream.tail_iterate + theorem stream.tail_map + theorem stream.tail_zip + def stream.tails + theorem stream.tails_eq + theorem stream.tails_eq_iterate + theorem stream.take_theorem + def stream.unfolds + theorem stream.unfolds_eq + theorem stream.unfolds_head_eq + def stream.zip + theorem stream.zip_eq + theorem stream.zip_inits_tails + def stream Modified src/data/tree.lean Modified src/tactic/derive_inhabited.lean Modified test/coinductive.lean 2021-10-29 19:43:29 c722dae chore(data/fintype/basic): add a few `infinite` instances (#10037) ESTIMATED CHANGES Modified src/data/fintype/basic.lean - theorem infinite.nonempty Modified src/data/multiset/basic.lean + theorem multiset.repeat_injective 2021-10-29 19:43:27 4f053a5 feat(data/list): chain'_drop lemma (#10028) ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain'.drop 2021-10-29 17:12:04 c545660 chore(algebra/group_with_zero/basic): move `ring.inverse`, generalize and rename `inverse_eq_has_inv` (#10033) This moves `ring.inverse` earlier in the import graph, since it's not about rings at all. ESTIMATED CHANGES Modified src/algebra/field.lean - theorem inverse_eq_has_inv Modified src/algebra/group_with_zero/basic.lean + theorem ring.inverse_eq_inv' + theorem ring.inverse_eq_inv + theorem ring.inverse_mul_cancel + theorem ring.inverse_mul_cancel_left + theorem ring.inverse_mul_cancel_right + theorem ring.inverse_non_unit + theorem ring.inverse_unit + theorem ring.mul_inverse_cancel + theorem ring.mul_inverse_cancel_left + theorem ring.mul_inverse_cancel_right + theorem ring.mul_inverse_rev Modified src/algebra/ring/basic.lean - theorem ring.inverse_mul_cancel - theorem ring.inverse_mul_cancel_left - theorem ring.inverse_mul_cancel_right - theorem ring.inverse_non_unit - theorem ring.inverse_unit - theorem ring.mul_inverse_cancel - theorem ring.mul_inverse_cancel_left - theorem ring.mul_inverse_cancel_right - theorem ring.mul_inverse_rev Modified src/analysis/calculus/times_cont_diff.lean 2021-10-29 14:39:48 e1bafaa feat(category_theory/limits/shapes/images): some explicit instances of has_image_map (#9977) ESTIMATED CHANGES Modified src/category_theory/arrow.lean + theorem category_theory.arrow.inv_left + theorem category_theory.arrow.inv_right Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.has_image.of_arrow_iso + def category_theory.limits.image_factorisation.of_arrow_iso +/- theorem category_theory.limits.is_image.fac_lift + def category_theory.limits.is_image.of_arrow_iso + def category_theory.limits.mono_factorisation.of_arrow_iso 2021-10-29 13:53:07 4f3443a feat(measure_theory/group/arithmetic): add a section about `opposite` (#10026) ESTIMATED CHANGES Modified src/measure_theory/group/arithmetic.lean + theorem measurable_op + theorem measurable_unop 2021-10-29 08:04:41 3f6174b fix(tactic/norm_cast): make push_cast discharger match the others (#10021) closes #9822 ESTIMATED CHANGES Modified src/tactic/norm_cast.lean Modified test/linarith.lean + theorem mytest 2021-10-29 01:24:36 4ce2a5f chore(algebra/module/submodule_lattice): lemmas about the trivial submodule (#10022) Lemmas about the trivial submodule. Also move an existing lemma `exists_mem_ne_zero_of_ne_bot` about the trivial submodule from `linear_algebra/dimension` to `algebra/module/submodule_lattice`, since it doesn't use any facts about dimension. ESTIMATED CHANGES Modified src/algebra/module/submodule_lattice.lean + theorem submodule.eq_bot_of_subsingleton + theorem submodule.exists_mem_ne_zero_of_ne_bot +/- theorem submodule.nonzero_mem_of_bot_lt Modified src/linear_algebra/dimension.lean - theorem exists_mem_ne_zero_of_ne_bot Modified src/linear_algebra/eigenspace.lean 2021-10-29 01:24:35 7538f9b feat(data/list/defs): map_with_prefix_suffix and map_with_complement (#10020) Adds two list definitions: one that will be useful to me, and a generalization which may be useful to @semorrison ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.map_with_complement + def list.map_with_prefix_suffix + def list.map_with_prefix_suffix_aux 2021-10-29 01:24:33 c7f5139 chore(measure_theory): drop a few `measurable_set` assumptions (#9999) We had an extra `measurable_set` assumption in (one of the copies of) Caratheodory. Also remove `measurable f` assumption in `is_finite_measure (map f μ)` and make it an instance. ESTIMATED CHANGES Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.is_finite_measure_map +/- theorem measure_theory.measure.restrict_union_add_inter - theorem measure_theory.measure_eq_inter_diff + theorem measure_theory.measure_inter_add_diff + theorem measure_theory.measure_union_add_inter' +/- theorem measure_theory.measure_union_add_inter Modified src/probability_theory/density.lean 2021-10-29 00:33:15 bdcb731 feat(linear_algebra/matrix/adjugate): det_adjugate and adjugate_adjugate (#9991) This also adds `matrix.mv_polynomial_X` ESTIMATED CHANGES Modified src/linear_algebra/matrix/adjugate.lean + theorem alg_hom.map_adjugate + theorem matrix.adjugate_adjugate' + theorem matrix.adjugate_adjugate + theorem matrix.det_adjugate - theorem matrix.det_adjugate_eq_one - theorem matrix.det_adjugate_of_cancel - theorem matrix.det_adjugate_of_is_unit + theorem matrix.det_smul_adjugate_adjugate Added src/linear_algebra/matrix/mv_polynomial.lean + theorem matrix.det_mv_polynomial_X_ne_zero + theorem matrix.mv_polynomial_X_map_eval₂ + theorem matrix.mv_polynomial_X_map_matrix_aeval + theorem matrix.mv_polynomial_X_map_matrix_eval Modified src/linear_algebra/special_linear_group.lean 2021-10-28 20:48:25 415da22 chore(topology,measure_theory): generalize a few instances (#9967) * Prove that `Π i : ι, π i` has second countable topology if `ι` is encodable and each `π i` has second countable topology. * Similarly for `borel_space`. * Preserve old instances about `fintype` because we don't have (and can't have) an instance `fintype ι → encodable ι`. ESTIMATED CHANGES Modified src/data/subtype.lean + theorem subtype.surjective_restrict Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/bases.lean 2021-10-28 20:48:24 0cfae43 feat(archive/imo): IMO 2021 Q1 (#8432) Formalised solution to IMO 2021 Q1 ESTIMATED CHANGES Added archive/imo/imo2021_q1.lean + theorem IMO_2021_Q1 + theorem exists_finset_3_le_card_with_pairs_summing_to_squares + theorem exists_numbers_in_interval + theorem exists_triplet_summing_to_squares + theorem lower_bound + theorem radical_inequality + theorem upper_bound Modified src/algebra/order/monoid.lean + theorem lt_or_lt_of_add_lt_add Modified src/data/finset/basic.lean + theorem finset.exists_subset_or_subset_of_two_mul_lt_card 2021-10-28 18:57:48 99a2d5b feat(ring_theory/adjoin_root): golf and generalize the algebra structure on `adjoin_root` (#10019) We already have a more general version of this instance elsewhere, lets just reuse it. ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.algebra_map_eq' 2021-10-28 18:57:46 18dce13 feat(data/finset/interval): Bounded intervals in locally finite orders are finite (#9960) A set which is bounded above and below is finite. A set which is bounded below in an `order_top` is finite. A set which is bounded above in an `order_bot` is finite. Also provide the `order_dual` constructions for `bdd_stuff` and `locally_finite_order`. ESTIMATED CHANGES Modified src/data/finset/locally_finite.lean + theorem bdd_above.finite + theorem bdd_below.finite + theorem bdd_below.finite_of_bdd_above + def set.fintype_of_mem_bounds Modified src/order/bounds.lean + theorem bdd_above.dual + theorem bdd_below.dual + theorem is_glb.dual +/- theorem is_glb.lower_bounds_eq +/- theorem is_glb.nonempty +/- theorem is_glb_lt_iff + theorem is_greatest.dual + theorem is_least.dual + theorem is_lub.dual +/- theorem lt_is_glb_iff Modified src/order/locally_finite.lean + theorem Icc_to_dual + theorem Ico_to_dual + theorem Ioc_to_dual + theorem Ioo_to_dual 2021-10-28 18:57:45 1733920 feat(list): add some lemmas (#9873) Add a few lemmas about lists. These are helpful when manipulating lists. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.head'_append + theorem list.last'_cons_cons + theorem list.last'_eq_last_of_ne_nil + theorem list.mem_last'_cons Modified src/data/list/pairwise.lean + theorem list.pairwise.drop 2021-10-28 17:00:22 e927aa4 feat(data/set/function): restrict `dite/ite/piecewise/extend` (#10017) ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.restrict_dite + theorem set.restrict_dite_compl + theorem set.restrict_extend_compl_range + theorem set.restrict_extend_range + theorem set.restrict_ite + theorem set.restrict_ite_compl + theorem set.restrict_piecewise + theorem set.restrict_piecewise_compl 2021-10-28 17:00:20 0d6548f chore(*): a few lemmas about `range_splitting (#10016) ESTIMATED CHANGES Modified src/data/equiv/set.lean + theorem equiv.coe_of_injective_symm Modified src/data/set/basic.lean + theorem set.coe_comp_range_factorization + theorem set.preimage_range_splitting + theorem set.right_inverse_range_splitting Modified src/logic/function/basic.lean + theorem function.left_inverse.right_inverse_of_injective + theorem function.left_inverse.right_inverse_of_surjective 2021-10-28 17:00:18 b9ff26b chore(measure_theory/measure/measure_space): reorder, golf (#10015) Move `restrict_apply'` up and use it to golf some proofs. Drop an unneeded `measurable_set` assumption in 1 proof. ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.ae_of_ae_restrict_of_ae_restrict_compl +/- theorem measure_theory.measure.restrict_apply' +/- theorem measure_theory.measure.restrict_empty + theorem measure_theory.measure.restrict_eq_self' - theorem measure_theory.measure.restrict_eq_self_of_measurable_subset - theorem measure_theory.measure.restrict_eq_self_of_subset_of_measurable 2021-10-28 17:00:16 fd6f681 feat(order/bounded_lattice): add `is_compl.le_sup_right_iff_inf_left_le` (#10014) This lemma is a generalization of `is_compl.inf_left_eq_bot_iff`. Also drop `inf_eq_bot_iff_le_compl` in favor of `is_compl.inf_left_eq_bot_iff` and add `set.subset_union_compl_iff_inter_subset`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subset_union_compl_iff_inter_subset Modified src/order/bounded_lattice.lean - theorem inf_eq_bot_iff_le_compl + theorem is_compl.inf_left_le_of_le_sup_right + theorem is_compl.le_sup_right_iff_inf_left_le Modified src/topology/uniform_space/separation.lean 2021-10-28 17:00:14 22d32dc fix(field_theory/intermediate_field): use a better `algebra.smul` definition, and generalize (#10012) Previously coe_smul was not true by `rfl` ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_smul + theorem intermediate_field.lift2_algebra_map Modified src/ring_theory/trace.lean 2021-10-28 17:00:12 fe76b5c feat(group_theory/subgroup/basic): `mul_mem_sup` (#10007) Adds `mul_mem_sup` and golfs a couple proofs that reprove this result. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.mul_mem_sup Modified src/group_theory/submonoid/membership.lean + theorem submonoid.mul_mem_sup Modified src/group_theory/sylow.lean 2021-10-28 17:00:10 c495ed6 move(data/set/pairwise): Move `set.pairwise_on` (#9986) This moves `set.pairwise_on` to `data.set.pairwise`, where `pairwise` and `set.pairwise_disjoint` already are. ESTIMATED CHANGES Modified src/analysis/box_integral/partition/basic.lean Modified src/data/list/pairwise.lean Modified src/data/set/basic.lean - theorem set.nonempty.pairwise_on_eq_iff_exists_eq - theorem set.nonempty.pairwise_on_iff_exists_forall - theorem set.pairwise_on.imp - theorem set.pairwise_on.imp_on - theorem set.pairwise_on.mono' - theorem set.pairwise_on.mono - def set.pairwise_on - theorem set.pairwise_on_disjoint_on_mono - theorem set.pairwise_on_empty - theorem set.pairwise_on_eq_iff_exists_eq - theorem set.pairwise_on_iff_exists_forall - theorem set.pairwise_on_insert - theorem set.pairwise_on_insert_of_symmetric - theorem set.pairwise_on_of_forall - theorem set.pairwise_on_pair - theorem set.pairwise_on_pair_of_symmetric - theorem set.pairwise_on_singleton - theorem set.pairwise_on_top - theorem set.pairwise_on_union - theorem set.pairwise_on_union_of_symmetric Modified src/data/set/function.lean - theorem set.inj_on.pairwise_on_image Modified src/data/set/lattice.lean - theorem set.bUnion_diff_bUnion_eq - theorem set.pairwise_on_Union - theorem set.pairwise_on_disjoint_fiber - theorem set.pairwise_on_sUnion Modified src/data/set/pairwise.lean +/- theorem pairwise.mono +/- theorem pairwise.pairwise_on +/- def pairwise +/- theorem pairwise_disjoint_fiber +/- theorem pairwise_disjoint_on +/- theorem pairwise_disjoint_on_bool +/- theorem pairwise_on_bool + theorem set.bUnion_diff_bUnion_eq + theorem set.inj_on.pairwise_on_image + theorem set.nonempty.pairwise_on_eq_iff_exists_eq + theorem set.nonempty.pairwise_on_iff_exists_forall + theorem set.pairwise_on.imp + theorem set.pairwise_on.imp_on + theorem set.pairwise_on.mono' + theorem set.pairwise_on.mono +/- theorem set.pairwise_on.on_injective + def set.pairwise_on + theorem set.pairwise_on_Union + theorem set.pairwise_on_disjoint_fiber + theorem set.pairwise_on_disjoint_on_mono + theorem set.pairwise_on_empty + theorem set.pairwise_on_eq_iff_exists_eq + theorem set.pairwise_on_iff_exists_forall + theorem set.pairwise_on_insert + theorem set.pairwise_on_insert_of_symmetric + theorem set.pairwise_on_of_forall + theorem set.pairwise_on_pair + theorem set.pairwise_on_pair_of_symmetric + theorem set.pairwise_on_sUnion + theorem set.pairwise_on_singleton + theorem set.pairwise_on_top + theorem set.pairwise_on_union + theorem set.pairwise_on_union_of_symmetric +/- theorem set.pairwise_on_univ +/- theorem symmetric.pairwise_on Modified src/order/zorn.lean 2021-10-28 17:00:08 628f418 feat(computability/tm_to_partrec): prove finiteness (#6955) The proof in this file was incomplete, and I finally found the time to finish it. `tm_to_partrec.lean` constructs a turing machine that can simulate a given partial recursive function. Previously, the functional correctness of this machine was proven, but it uses an infinite state space so it is not a priori obvious that it is in fact a true (finite) turing machine, which is important for the Church-Turing theorem. This PR adds a proof that the machine is in fact finite. ESTIMATED CHANGES Modified src/computability/tm_to_partrec.lean + def turing.partrec_to_TM2.code_supp' + theorem turing.partrec_to_TM2.code_supp'_self + theorem turing.partrec_to_TM2.code_supp'_supports + def turing.partrec_to_TM2.code_supp + theorem turing.partrec_to_TM2.code_supp_case + theorem turing.partrec_to_TM2.code_supp_comp + theorem turing.partrec_to_TM2.code_supp_cons + theorem turing.partrec_to_TM2.code_supp_fix + theorem turing.partrec_to_TM2.code_supp_self + theorem turing.partrec_to_TM2.code_supp_succ + theorem turing.partrec_to_TM2.code_supp_supports + theorem turing.partrec_to_TM2.code_supp_tail + theorem turing.partrec_to_TM2.code_supp_zero + def turing.partrec_to_TM2.cont_supp + theorem turing.partrec_to_TM2.cont_supp_comp + theorem turing.partrec_to_TM2.cont_supp_cons₁ + theorem turing.partrec_to_TM2.cont_supp_cons₂ + theorem turing.partrec_to_TM2.cont_supp_fix + theorem turing.partrec_to_TM2.cont_supp_halt + theorem turing.partrec_to_TM2.cont_supp_supports + theorem turing.partrec_to_TM2.head_supports + theorem turing.partrec_to_TM2.ret_supports + def turing.partrec_to_TM2.supports + theorem turing.partrec_to_TM2.supports_bUnion + theorem turing.partrec_to_TM2.supports_insert + theorem turing.partrec_to_TM2.supports_singleton + theorem turing.partrec_to_TM2.supports_union + theorem turing.partrec_to_TM2.tr_normal_supports + def turing.partrec_to_TM2.tr_stmts₁ + theorem turing.partrec_to_TM2.tr_stmts₁_self + theorem turing.partrec_to_TM2.tr_stmts₁_supports' + theorem turing.partrec_to_TM2.tr_stmts₁_supports + theorem turing.partrec_to_TM2.tr_stmts₁_trans + theorem turing.partrec_to_TM2.tr_supports + def turing.partrec_to_TM2.Λ'.supports Modified src/computability/turing_machine.lean Modified src/data/finset/basic.lean + theorem finset.bUnion_subset + theorem finset.inter_left_idem + theorem finset.inter_right_idem + theorem finset.union_left_idem + theorem finset.union_right_idem + theorem finset.union_subset_left + theorem finset.union_subset_right 2021-10-28 15:13:55 c8d1429 feat(data/{finset,multiset}/locally_finite): Simple interval lemmas (#9877) `(finset/multiset).image_add_(left/right)_Ixx` and `multiset.nodup_Ixx` ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean +/- theorem finset.prod_Ico_add +/- theorem finset.sum_Ico_add Modified src/data/finset/locally_finite.lean - theorem finset.image_add_const_Icc - theorem finset.image_add_const_Ico - theorem finset.image_add_const_Ioc - theorem finset.image_add_const_Ioo + theorem finset.image_add_left_Icc + theorem finset.image_add_left_Ico + theorem finset.image_add_left_Ioc + theorem finset.image_add_left_Ioo + theorem finset.image_add_right_Icc + theorem finset.image_add_right_Ico + theorem finset.image_add_right_Ioc + theorem finset.image_add_right_Ioo Modified src/data/multiset/locally_finite.lean - theorem multiset.map_add_const_Icc - theorem multiset.map_add_const_Ioc - theorem multiset.map_add_const_Ioo + theorem multiset.map_add_left_Icc + theorem multiset.map_add_left_Ioc + theorem multiset.map_add_left_Ioo + theorem multiset.map_add_right_Icc + theorem multiset.map_add_right_Ioc + theorem multiset.map_add_right_Ioo + theorem multiset.nodup_Icc + theorem multiset.nodup_Ioc + theorem multiset.nodup_Ioo 2021-10-28 12:41:11 acbb2a5 feat(analysis/normed_space/pi_Lp): use typeclass inference for `1 ≤ p` (#9922) In `measure_theory.Lp`, the exponent `(p : ℝ≥0∞)` is an explicit hypothesis, and typeclass inference finds `[fact (1 ≤ p)]` silently (with the help of some pre-built `fact_one_le_two_ennreal` etc for specific use cases). Currently, in `pi_Lp`, the fact that `(hp : 1 ≤ p)` must be provided explicitly. I propose changing over to the `fact` system as used `measure_theory.Lp` -- I think it looks a bit prettier in typical use cases. ESTIMATED CHANGES Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/normed_space/pi_Lp.lean + theorem fact_one_le_one_real + theorem fact_one_le_two_real +/- def pi_Lp.emetric_aux +/- theorem pi_Lp.lipschitz_with_equiv +/- theorem pi_Lp.norm_eq +/- theorem pi_Lp.norm_eq_of_nat +/- def pi_Lp.pseudo_emetric_aux +/- def pi_Lp Modified src/geometry/manifold/instances/real.lean 2021-10-28 09:24:44 b0349aa chore(measure_theory): a `continuous_map` is measurable (#9998) Also move the proof of `homeomorph.measurable` up and use it in the definition of `homeomorph.to_measurable_equiv`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem continuous_map.measurable - theorem homeomorph.measurable 2021-10-28 09:24:43 73423cf feat(measure/measurable_space): add `measurable_equiv.of_unique_of_unique` (#9968) Also fix a typo in a lemma name: `measurable_equiv.measurable_coe_iff` → `measurable_comp_iff`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/measurable_space.lean + def measurable_equiv.of_unique_of_unique 2021-10-28 09:24:41 7f2b806 feat(analysis/inner_product_space/dual): complex Riesz representation theorem (#9924) Now that we have conjugate-linear maps, the Riesz representation theorem can be stated in a form that works over both `ℝ` and `ℂ`, as the construction of a conjugate-linear isometric equivalence from a complete inner product space `E` to its dual. ESTIMATED CHANGES Modified src/analysis/inner_product_space/dual.lean - theorem inner_product_space.norm_to_dual'_apply - def inner_product_space.to_dual' - theorem inner_product_space.to_dual'_apply - theorem inner_product_space.to_dual'_isometry - theorem inner_product_space.to_dual'_surjective +/- def inner_product_space.to_dual +/- theorem inner_product_space.to_dual_apply +/- def inner_product_space.to_dual_map +/- theorem inner_product_space.to_dual_map_apply 2021-10-28 06:57:32 f78b739 feat(category_theory/arrow): is_iso, mono, epi instances for maps between arrows (#9976) ESTIMATED CHANGES Modified src/category_theory/arrow.lean + theorem category_theory.arrow.is_iso_of_iso_left_of_is_iso_right 2021-10-28 06:57:30 8159af6 feat(measure_theory/construction/borel_space): two measures are equal if they agree on closed-open intervals (#9396) ESTIMATED CHANGES Modified src/data/set/intervals/disjoint.lean + theorem set.Union_Ico_eq_Iio_self_iff + theorem set.Union_Ioc_eq_Ioi_self_iff + theorem set.bUnion_Ico_eq_Iio_self_iff + theorem set.bUnion_Ioc_eq_Ioi_self_iff Modified src/data/set/lattice.lean Modified src/measure_theory/constructions/borel_space.lean - theorem borel_eq_generate_Iio - theorem borel_eq_generate_Ioi + theorem borel_eq_generate_from_Ico + theorem borel_eq_generate_from_Iio + theorem borel_eq_generate_from_Ioc + theorem borel_eq_generate_from_Ioi + theorem bsupr_measure_Iic + theorem dense.borel_eq_generate_from_Ico_mem + theorem dense.borel_eq_generate_from_Ico_mem_aux + theorem dense.borel_eq_generate_from_Ioc_mem + theorem dense.borel_eq_generate_from_Ioc_mem_aux + theorem generate_from_Ico_mem_le_borel - theorem is_pi_system_Ioo - theorem is_pi_system_Ioo_mem + theorem measure_theory.measure.ext_of_Ici + theorem measure_theory.measure.ext_of_Ico' + theorem measure_theory.measure.ext_of_Ico + theorem measure_theory.measure.ext_of_Ico_finite + theorem measure_theory.measure.ext_of_Iic + theorem measure_theory.measure.ext_of_Ioc' + theorem measure_theory.measure.ext_of_Ioc + theorem measure_theory.measure.ext_of_Ioc_finite Modified src/measure_theory/measurable_space.lean - theorem measurable_space.generate_from_le_generate_from + theorem measurable_space.generate_from_mono Modified src/measure_theory/measure/stieltjes.lean Modified src/measure_theory/pi_system.lean + theorem is_pi_system_Icc + theorem is_pi_system_Icc_mem + theorem is_pi_system_Ico + theorem is_pi_system_Ico_mem + theorem is_pi_system_Iio + theorem is_pi_system_Ioc + theorem is_pi_system_Ioc_mem + theorem is_pi_system_Ioi + theorem is_pi_system_Ioo + theorem is_pi_system_Ioo_mem + theorem is_pi_system_Ixx + theorem is_pi_system_Ixx_mem + theorem is_pi_system_image_Iio + theorem is_pi_system_image_Ioi Modified src/topology/algebra/ordered/basic.lean + theorem dense.exists_between + theorem dense.exists_ge' + theorem dense.exists_ge + theorem dense.exists_gt + theorem dense.exists_le' + theorem dense.exists_le + theorem dense.exists_lt + theorem dense.order_dual Modified src/topology/bases.lean + theorem dense.exists_countable_dense_subset_bot_top + theorem exists_countable_dense_bot_top 2021-10-28 04:50:38 468a9d5 chore(scripts): update nolints.txt (#10013) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-10-28 04:50:37 bcaeb57 fix(data/equiv/encodable): turn `unique.encodable` into a `def` (#10006) ESTIMATED CHANGES Modified src/data/equiv/encodable/basic.lean + def unique.encodable 2021-10-28 02:37:00 9db7270 chore(*): rename gsmul to zsmul and gmultiples to zmultiples (#10010) This is consistent with an earlier rename from `gpow` to `zpow`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/algebra/subalgebra.lean - theorem subalgebra.gsmul_mem + theorem subalgebra.zsmul_mem Modified src/algebra/big_operators/basic.lean - theorem finset.gsmul_sum + theorem finset.zsmul_sum Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/group/defs.lean - def gsmul_rec + def zsmul_rec Modified src/algebra/group/hom_instances.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group_power/basic.lean - theorem of_add_gsmul + theorem of_add_zsmul Modified src/algebra/group_power/lemmas.lean - theorem abs_gsmul + theorem abs_zsmul - theorem add_gsmul - theorem add_monoid_hom.map_gsmul + theorem add_monoid_hom.map_zsmul - theorem add_one_gsmul + theorem add_one_zsmul + theorem add_zsmul - theorem bit0_gsmul + theorem bit0_zsmul - theorem bit1_gsmul + theorem bit1_zsmul - def gmultiples_add_hom - theorem gmultiples_add_hom_apply - theorem gmultiples_add_hom_symm_apply - def gmultiples_hom - theorem gmultiples_hom_apply - theorem gmultiples_hom_symm_apply - theorem gsmul_add_comm - theorem gsmul_eq_gsmul_iff' - theorem gsmul_eq_mul' - theorem gsmul_eq_mul - theorem gsmul_int_int - theorem gsmul_int_one - theorem gsmul_le_gsmul' - theorem gsmul_le_gsmul - theorem gsmul_le_gsmul_iff' - theorem gsmul_le_gsmul_iff - theorem gsmul_lt_gsmul' - theorem gsmul_lt_gsmul - theorem gsmul_lt_gsmul_iff' - theorem gsmul_lt_gsmul_iff - theorem gsmul_mono_left - theorem gsmul_mono_right - theorem gsmul_mul' - theorem gsmul_one - theorem gsmul_pos - theorem gsmul_right_inj - theorem gsmul_right_injective - theorem gsmul_strict_mono_left - theorem gsmul_strict_mono_right - theorem mul_gsmul - theorem mul_gsmul_assoc - theorem mul_gsmul_left + theorem mul_zsmul + theorem mul_zsmul_assoc + theorem mul_zsmul_left - theorem one_add_gsmul + theorem one_add_zsmul - theorem sub_gsmul + theorem sub_zsmul + def zmultiples_add_hom + theorem zmultiples_add_hom_apply + theorem zmultiples_add_hom_symm_apply + def zmultiples_hom + theorem zmultiples_hom_apply + theorem zmultiples_hom_symm_apply + theorem zsmul_add_comm + theorem zsmul_eq_mul' + theorem zsmul_eq_mul + theorem zsmul_eq_zsmul_iff' + theorem zsmul_int_int + theorem zsmul_int_one + theorem zsmul_le_zsmul' + theorem zsmul_le_zsmul + theorem zsmul_le_zsmul_iff' + theorem zsmul_le_zsmul_iff + theorem zsmul_lt_zsmul' + theorem zsmul_lt_zsmul + theorem zsmul_lt_zsmul_iff' + theorem zsmul_lt_zsmul_iff + theorem zsmul_mono_left + theorem zsmul_mono_right + theorem zsmul_mul' + theorem zsmul_one + theorem zsmul_pos + theorem zsmul_right_inj + theorem zsmul_right_injective + theorem zsmul_strict_mono_left + theorem zsmul_strict_mono_right Modified src/algebra/group_power/order.lean Modified src/algebra/homology/additive.lean Modified src/algebra/iterate_hom.lean - theorem add_monoid_hom.iterate_map_gsmul + theorem add_monoid_hom.iterate_map_zsmul - theorem ring_hom.iterate_map_gsmul + theorem ring_hom.iterate_map_zsmul Modified src/algebra/lie/basic.lean - theorem gsmul_lie - theorem lie_gsmul + theorem lie_zsmul + theorem zsmul_lie Modified src/algebra/module/basic.lean - theorem gsmul_eq_smul_cast - theorem int_smul_eq_gsmul + theorem int_smul_eq_zsmul + theorem zsmul_eq_smul_cast Modified src/algebra/module/linear_map.lean Modified src/algebra/order/archimedean.lean Modified src/algebra/periodic.lean - theorem function.periodic.gsmul - theorem function.periodic.gsmul_eq - theorem function.periodic.gsmul_sub_eq - theorem function.periodic.sub_gsmul_eq + theorem function.periodic.sub_zsmul_eq + theorem function.periodic.zsmul + theorem function.periodic.zsmul_eq + theorem function.periodic.zsmul_sub_eq Modified src/algebra/quaternion.lean Modified src/algebra/ring/ulift.lean Modified src/algebra/star/basic.lean - theorem star_gsmul + theorem star_zsmul Modified src/algebra/star/chsh.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/normed_space/basic.lean - theorem nnnorm_gsmul_le + theorem nnnorm_zsmul_le - theorem norm_gsmul_le + theorem norm_zsmul_le Modified src/analysis/special_functions/trigonometric/basic.lean - theorem real.angle.coe_int_mul_eq_gsmul + theorem real.angle.coe_int_mul_eq_zsmul Modified src/category_theory/linear/default.lean Modified src/category_theory/linear/linear_functor.lean Modified src/category_theory/preadditive/additive_functor.lean - theorem category_theory.functor.map_gsmul + theorem category_theory.functor.map_zsmul Modified src/category_theory/preadditive/default.lean - theorem category_theory.preadditive.comp_gsmul + theorem category_theory.preadditive.comp_zsmul - theorem category_theory.preadditive.gsmul_comp + theorem category_theory.preadditive.zsmul_comp Modified src/category_theory/preadditive/functor_category.lean - theorem category_theory.nat_trans.app_gsmul + theorem category_theory.nat_trans.app_zsmul Modified src/data/complex/basic.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp/basic.lean Modified src/data/holor.lean Modified src/data/int/basic.lean Modified src/data/polynomial/basic.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/quotient.lean - def int.quotient_gmultiples_equiv_zmod - def int.quotient_gmultiples_nat_equiv_zmod + def int.quotient_zmultiples_equiv_zmod + def int.quotient_zmultiples_nat_equiv_zmod Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/intermediate_field.lean - theorem intermediate_field.gsmul_mem + theorem intermediate_field.zsmul_mem Modified src/field_theory/subfield.lean - theorem subfield.gsmul_mem + theorem subfield.zsmul_mem Modified src/group_theory/archimedean.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_abelian_group_finsupp.lean - theorem free_abelian_group.support_gsmul + theorem free_abelian_group.support_zsmul Modified src/group_theory/order_of_element.lean - theorem add_order_eq_card_gmultiples + theorem add_order_eq_card_zmultiples - theorem exists_gsmul_eq_zero + theorem exists_zsmul_eq_zero - theorem fin_equiv_gmultiples_apply - theorem fin_equiv_gmultiples_symm_apply + theorem fin_equiv_zmultiples_apply + theorem fin_equiv_zmultiples_symm_apply - theorem gmultiples_equiv_gmultiples_apply - theorem gsmul_eq_mod_add_order_of - theorem mem_gmultiples_iff_mem_range_add_order_of - theorem mem_multiples_iff_mem_gmultiples + theorem mem_multiples_iff_mem_zmultiples + theorem mem_zmultiples_iff_mem_range_add_order_of - theorem multiples_eq_gmultiples + theorem multiples_eq_zmultiples + theorem zmultiples_equiv_zmultiples_apply + theorem zsmul_eq_mod_add_order_of Modified src/group_theory/specific_groups/quaternion.lean Modified src/group_theory/subgroup/basic.lean - theorem add_subgroup.coe_gsmul + theorem add_subgroup.coe_zsmul - def add_subgroup.gmultiples - theorem add_subgroup.gmultiples_subset - theorem add_subgroup.range_gmultiples_hom + theorem add_subgroup.range_zmultiples_hom + def add_subgroup.zmultiples + theorem add_subgroup.zmultiples_subset - theorem int.mem_gmultiples_iff + theorem int.mem_zmultiples_iff - theorem of_add_image_gmultiples_eq_zpowers_of_add + theorem of_add_image_zmultiples_eq_zpowers_of_add - theorem of_mul_image_zpowers_eq_gmultiples_of_mul + theorem of_mul_image_zpowers_eq_zmultiples_of_mul Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/multilinear/basic.lean Modified src/linear_algebra/quotient.lean Modified src/linear_algebra/tensor_product.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/dioph.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/ring_theory/int/basic.lean - theorem int.gmultiples_nat_abs + theorem int.zmultiples_nat_abs Modified src/ring_theory/integral_closure.lean - theorem is_integral.gsmul + theorem is_integral.zsmul Modified src/ring_theory/localization.lean Modified src/ring_theory/subring.lean - theorem subring.gsmul_mem + theorem subring.zsmul_mem Modified src/set_theory/surreal/dyadic.lean Modified src/tactic/abel.lean - theorem tactic.abel.unfold_gsmul + theorem tactic.abel.unfold_zsmul Modified src/tactic/noncomm_ring.lean Modified src/topology/algebra/module.lean - theorem continuous_linear_map.continuous.gsmul + theorem continuous_linear_map.continuous.zsmul - theorem continuous_linear_map.continuous_gsmul + theorem continuous_linear_map.continuous_zsmul 2021-10-27 20:21:14 d360f3c feat(linear_algebra/free_module/finite/rank): add linear_algebra/free_module/finite/rank (#9832) A basic API for rank of free modules. - [x] depends on: #9821 ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean +/- theorem dim_self Modified src/linear_algebra/finite_dimensional.lean Added src/linear_algebra/free_module/finite/rank.lean + theorem module.free.finrank_direct_sum + theorem module.free.finrank_eq_card_choose_basis_index + theorem module.free.finrank_eq_rank + theorem module.free.finrank_finsupp + theorem module.free.finrank_linear_hom + theorem module.free.finrank_matrix + theorem module.free.finrank_pi + theorem module.free.finrank_pi_fintype + theorem module.free.finrank_prod + theorem module.free.finrank_tensor_product + theorem module.free.rank_lt_omega Modified src/linear_algebra/free_module/rank.lean +/- theorem module.free.rank_direct_sum + theorem module.free.rank_matrix'' + theorem module.free.rank_matrix' + theorem module.free.rank_matrix + theorem module.free.rank_pi_fintype Modified src/set_theory/cardinal.lean + theorem cardinal.to_nat_add_of_lt_omega +/- theorem cardinal.to_nat_mul 2021-10-27 17:47:32 8ce5da4 feat(algebra/order/archimedean): a few more lemmas (#9997) Prove that `a + m • b ∈ Ioc c (c + b)` for some `m : ℤ`, and similarly for `Ico`. Also move some lemmas out of a namespace. ESTIMATED CHANGES Modified src/algebra/order/archimedean.lean + theorem exists_add_int_smul_mem_Ico + theorem exists_add_int_smul_mem_Ioc + theorem exists_int_smul_near_of_pos' + theorem exists_int_smul_near_of_pos - theorem linear_ordered_add_comm_group.exists_int_smul_near_of_pos' - theorem linear_ordered_add_comm_group.exists_int_smul_near_of_pos Modified src/algebra/periodic.lean + theorem function.periodic.exists_mem_Ico₀ + theorem function.periodic.exists_mem_Ioc Modified src/topology/instances/real.lean 2021-10-27 17:47:31 ec51fb7 chore(algebra/order/floor): prove `subsingleton`s (#9996) ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/order/floor.lean - theorem floor_ring_unique - theorem floor_semiring_unique + theorem subsingleton_floor_ring + theorem subsingleton_floor_semiring 2021-10-27 17:47:29 eaec1da feat(group_theory/group_action/conj_act): A characteristic subgroup of a normal subgroup is normal (#9992) Uses `mul_aut.conj_normal` to prove an instance stating that a characteristic subgroup of a normal subgroup is normal. ESTIMATED CHANGES Modified src/group_theory/group_action/conj_act.lean 2021-10-27 17:47:27 c529711 refactor(*): rename fpow and gpow to zpow (#9989) Historically, we had two notions of integer power, one on groups called `gpow` and the other one on fields called `fpow`. Since the introduction of `div_inv_monoid` and `group_with_zero`, these definitions have been merged into one, and the boundaries are not clear any more. We rename both of them to `zpow`, adding a subscript `0` to disambiguate lemma names when there is a collision, where the subscripted version is for groups with zeroes (as is already done for inv lemmas). To limit the scope of the change. this PR does not rename `gsmul` to `zsmul` or `gmultiples` to `zmultiples`. ESTIMATED CHANGES Modified src/algebra/field_power.lean - theorem abs_fpow_bit0 + theorem abs_zpow_bit0 - theorem even.abs_fpow + theorem even.abs_zpow - theorem even.fpow_abs - theorem even.fpow_neg - theorem even.fpow_nonneg - theorem even.fpow_pos + theorem even.zpow_abs + theorem even.zpow_neg + theorem even.zpow_nonneg + theorem even.zpow_pos - theorem fpow_bit0_abs - theorem fpow_bit0_neg - theorem fpow_bit0_nonneg - theorem fpow_bit0_pos - theorem fpow_bit1_neg - theorem fpow_bit1_neg_iff - theorem fpow_bit1_nonneg_iff - theorem fpow_bit1_nonpos_iff - theorem fpow_bit1_pos_iff - theorem fpow_eq_zero_iff - theorem fpow_inj - theorem fpow_injective - theorem fpow_le_iff_le - theorem fpow_le_of_le - theorem fpow_le_one_of_nonpos - theorem fpow_lt_iff_lt - theorem fpow_nonneg - theorem fpow_pos_of_pos - theorem fpow_strict_mono - theorem fpow_two_nonneg - theorem fpow_two_pos_of_ne_zero - theorem nat.fpow_ne_zero_of_pos - theorem nat.fpow_pos_of_pos + theorem nat.zpow_ne_zero_of_pos + theorem nat.zpow_pos_of_pos - theorem odd.fpow_neg - theorem odd.fpow_nonneg - theorem odd.fpow_nonpos - theorem odd.fpow_pos + theorem odd.zpow_neg + theorem odd.zpow_nonneg + theorem odd.zpow_nonpos + theorem odd.zpow_pos - theorem one_le_fpow_of_nonneg + theorem one_le_zpow_of_nonneg - theorem one_lt_fpow + theorem one_lt_zpow - theorem rat.cast_fpow + theorem rat.cast_zpow - theorem ring_equiv.map_fpow + theorem ring_equiv.map_zpow - theorem ring_hom.map_fpow + theorem ring_hom.map_zpow + theorem zpow_bit0_abs + theorem zpow_bit0_neg + theorem zpow_bit0_nonneg + theorem zpow_bit0_pos + theorem zpow_bit1_neg + theorem zpow_bit1_neg_iff + theorem zpow_bit1_nonneg_iff + theorem zpow_bit1_nonpos_iff + theorem zpow_bit1_pos_iff + theorem zpow_eq_zero_iff + theorem zpow_inj + theorem zpow_injective + theorem zpow_le_iff_le + theorem zpow_le_of_le + theorem zpow_le_one_of_nonpos + theorem zpow_lt_iff_lt + theorem zpow_nonneg + theorem zpow_pos_of_pos + theorem zpow_strict_mono + theorem zpow_two_nonneg + theorem zpow_two_pos_of_ne_zero Modified src/algebra/group/conj.lean - theorem conj_gpow + theorem conj_zpow Modified src/algebra/group/defs.lean - def gpow_rec + def zpow_rec Modified src/algebra/group/hom_instances.lean Modified src/algebra/group/pi.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group/ulift.lean Modified src/algebra/group_power/basic.lean - theorem commute.gpow_gpow - theorem commute.gpow_gpow_self - theorem commute.gpow_left - theorem commute.gpow_right - theorem commute.gpow_self - theorem commute.mul_gpow + theorem commute.mul_zpow - theorem commute.self_gpow + theorem commute.self_zpow + theorem commute.zpow_left + theorem commute.zpow_right + theorem commute.zpow_self + theorem commute.zpow_zpow + theorem commute.zpow_zpow_self - theorem div_gpow + theorem div_zpow - theorem gpow_coe_nat - theorem gpow_eq_pow - def gpow_group_hom - theorem gpow_neg - theorem gpow_neg_one - theorem gpow_neg_succ_of_nat - theorem gpow_of_nat - theorem gpow_one - theorem gpow_zero - theorem inv_gpow + theorem inv_zpow - theorem mul_gpow - theorem mul_gpow_neg_one + theorem mul_zpow + theorem mul_zpow_neg_one - theorem of_mul_gpow + theorem of_mul_zpow - theorem one_gpow + theorem one_zpow - theorem semiconj_by.gpow_right + theorem semiconj_by.zpow_right + theorem zpow_coe_nat + theorem zpow_eq_pow + def zpow_group_hom + theorem zpow_neg + theorem zpow_neg_one + theorem zpow_neg_succ_of_nat + theorem zpow_of_nat + theorem zpow_one + theorem zpow_zero Modified src/algebra/group_power/lemmas.lean - theorem commute.units_gpow_left - theorem commute.units_gpow_right + theorem commute.units_zpow_left + theorem commute.units_zpow_right - theorem gpow_add - theorem gpow_add_one - theorem gpow_bit0 - theorem gpow_bit1 - theorem gpow_mul' - theorem gpow_mul - theorem gpow_mul_comm - theorem gpow_one_add - theorem gpow_sub - theorem gpow_sub_one - def gpowers_hom - theorem gpowers_hom_apply - theorem gpowers_hom_symm_apply - def gpowers_mul_hom - theorem gpowers_mul_hom_apply - theorem gpowers_mul_hom_symm_apply - theorem int.to_add_gpow + theorem int.to_add_zpow - theorem monoid_hom.map_gpow + theorem monoid_hom.map_zpow - theorem mul_gpow_self - theorem mul_self_gpow + theorem mul_self_zpow + theorem mul_zpow_self - theorem opposite.op_gpow + theorem opposite.op_zpow - theorem opposite.unop_gpow + theorem opposite.unop_zpow - theorem semiconj_by.units_gpow_right + theorem semiconj_by.units_zpow_right - theorem units.coe_gpow + theorem units.coe_zpow + theorem zpow_add + theorem zpow_add_one + theorem zpow_bit0 + theorem zpow_bit1 + theorem zpow_mul' + theorem zpow_mul + theorem zpow_mul_comm + theorem zpow_one_add + theorem zpow_sub + theorem zpow_sub_one + def zpowers_hom + theorem zpowers_hom_apply + theorem zpowers_hom_symm_apply + def zpowers_mul_hom + theorem zpowers_mul_hom_apply + theorem zpowers_mul_hom_symm_apply Modified src/algebra/group_power/order.lean - theorem one_le_gpow + theorem one_le_zpow Modified src/algebra/group_with_zero/power.lean - theorem commute.fpow_fpow - theorem commute.fpow_fpow_self - theorem commute.fpow_left - theorem commute.fpow_right - theorem commute.fpow_self - theorem commute.mul_fpow + theorem commute.mul_zpow₀ - theorem commute.self_fpow + theorem commute.self_zpow₀ + theorem commute.zpow_left₀ + theorem commute.zpow_right₀ + theorem commute.zpow_self₀ + theorem commute.zpow_zpow_self₀ + theorem commute.zpow_zpow₀ - theorem div_fpow + theorem div_zpow₀ - theorem fpow_add' - theorem fpow_add - theorem fpow_add_one - theorem fpow_bit0' - theorem fpow_bit0 - theorem fpow_bit1' - theorem fpow_bit1 - theorem fpow_eq_zero - theorem fpow_mul' - theorem fpow_mul - theorem fpow_ne_zero - theorem fpow_ne_zero_of_ne_zero - theorem fpow_neg - theorem fpow_neg_mul_fpow_self - theorem fpow_neg_one - theorem fpow_one_add - theorem fpow_sub - theorem fpow_sub_one - theorem inv_fpow' - theorem inv_fpow + theorem inv_zpow' + theorem inv_zpow₀ - theorem monoid_with_zero_hom.map_fpow + theorem monoid_with_zero_hom.map_zpow - theorem mul_fpow + theorem mul_zpow₀ - theorem one_div_fpow + theorem one_div_zpow - theorem one_fpow + theorem one_zpow₀ - theorem semiconj_by.fpow_right + theorem semiconj_by.zpow_right₀ - theorem units.coe_gpow₀ + theorem units.coe_zpow₀ - theorem zero_fpow + theorem zero_zpow + theorem zpow_add' + theorem zpow_add_one₀ + theorem zpow_add₀ + theorem zpow_bit0' + theorem zpow_bit0₀ + theorem zpow_bit1' + theorem zpow_bit1₀ + theorem zpow_eq_zero + theorem zpow_mul₀' + theorem zpow_mul₀ + theorem zpow_ne_zero + theorem zpow_ne_zero_of_ne_zero + theorem zpow_neg_mul_zpow_self + theorem zpow_neg_one₀ + theorem zpow_neg₀ + theorem zpow_one_add₀ + theorem zpow_sub_one₀ + theorem zpow_sub₀ Modified src/algebra/iterate_hom.lean - theorem monoid_hom.iterate_map_gpow + theorem monoid_hom.iterate_map_zpow Modified src/algebra/opposites.lean Modified src/algebra/order/archimedean.lean Modified src/algebra/punit_instances.lean Modified src/algebra/star/basic.lean - theorem star_fpow - theorem star_gpow + theorem star_zpow + theorem star_zpow₀ Modified src/analysis/asymptotics/specific_asymptotics.lean - theorem tendsto_fpow_at_top_at_top + theorem tendsto_zpow_at_top_at_top Modified src/analysis/asymptotics/superpolynomial_decay.lean - theorem asymptotics.superpolynomial_decay_of_is_O_fpow_le - theorem asymptotics.superpolynomial_decay_of_is_O_fpow_lt + theorem asymptotics.superpolynomial_decay_of_is_O_zpow_le + theorem asymptotics.superpolynomial_decay_of_is_O_zpow_lt Modified src/analysis/calculus/deriv.lean - theorem deriv_fpow' - theorem deriv_fpow - theorem deriv_within_fpow + theorem deriv_within_zpow + theorem deriv_zpow' + theorem deriv_zpow - theorem differentiable_at_fpow + theorem differentiable_at_zpow - theorem differentiable_on_fpow + theorem differentiable_on_zpow - theorem differentiable_within_at_fpow + theorem differentiable_within_at_zpow - theorem has_deriv_at_fpow + theorem has_deriv_at_zpow - theorem has_deriv_within_at_fpow + theorem has_deriv_within_at_zpow - theorem has_strict_deriv_at_fpow + theorem has_strict_deriv_at_zpow - theorem iter_deriv_fpow' - theorem iter_deriv_fpow + theorem iter_deriv_zpow' + theorem iter_deriv_zpow Modified src/analysis/convex/specific_functions.lean - theorem convex_on_fpow + theorem convex_on_zpow Modified src/analysis/fourier.lean Modified src/analysis/mean_inequalities.lean - theorem real.fpow_arith_mean_le_arith_mean_fpow + theorem real.zpow_arith_mean_le_arith_mean_zpow Modified src/analysis/normed_space/basic.lean - theorem normed_field.nnnorm_fpow + theorem normed_field.nnnorm_zpow - theorem normed_field.norm_fpow + theorem normed_field.norm_zpow Modified src/analysis/special_functions/exp.lean Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/specific_limits.lean - theorem normed_field.continuous_at_fpow + theorem normed_field.continuous_at_zpow - theorem normed_field.tendsto_norm_fpow_nhds_within_0_at_top + theorem normed_field.tendsto_norm_zpow_nhds_within_0_at_top Modified src/category_theory/conj.lean - theorem category_theory.iso.conj_Aut_gpow + theorem category_theory.iso.conj_Aut_zpow Modified src/category_theory/endomorphism.lean Modified src/data/complex/basic.lean - theorem complex.I_fpow_bit0 - theorem complex.I_fpow_bit1 + theorem complex.I_zpow_bit0 + theorem complex.I_zpow_bit1 - theorem complex.of_real_fpow + theorem complex.of_real_zpow Modified src/data/complex/is_R_or_C.lean - theorem is_R_or_C.of_real_fpow + theorem is_R_or_C.of_real_zpow Modified src/data/equiv/mul_add_aut.lean Modified src/data/equiv/ring_aut.lean Modified src/data/int/gcd.lean Modified src/data/real/irrational.lean - theorem irrational.of_fpow + theorem irrational.of_zpow Modified src/deprecated/subfield.lean Modified src/dynamics/circle/rotation_number/translation_number.lean - theorem circle_deg1_lift.translate_gpow + theorem circle_deg1_lift.translate_zpow - theorem circle_deg1_lift.translation_number_gpow + theorem circle_deg1_lift.translation_number_zpow Modified src/field_theory/finite/basic.lean Modified src/field_theory/intermediate_field.lean Modified src/group_theory/free_group.lean Modified src/group_theory/group_action/group.lean - theorem smul_gpow + theorem smul_zpow Modified src/group_theory/order_of_element.lean - theorem exists_gpow_eq_one + theorem exists_zpow_eq_one - theorem fin_equiv_gpowers_apply - theorem fin_equiv_gpowers_symm_apply + theorem fin_equiv_zpowers_apply + theorem fin_equiv_zpowers_symm_apply - theorem gpow_eq_mod_card - theorem gpow_eq_mod_order_of - theorem gpowers_equiv_gpowers_apply - theorem mem_gpowers_iff_mem_range_order_of - theorem mem_powers_iff_mem_gpowers + theorem mem_powers_iff_mem_zpowers + theorem mem_zpowers_iff_mem_range_order_of - theorem order_eq_card_gpowers + theorem order_eq_card_zpowers - theorem order_of_dvd_iff_gpow_eq_one + theorem order_of_dvd_iff_zpow_eq_one - theorem powers_eq_gpowers + theorem powers_eq_zpowers + theorem zpow_eq_mod_card + theorem zpow_eq_mod_order_of + theorem zpowers_equiv_zpowers_apply Modified src/group_theory/perm/basic.lean - theorem equiv.perm.gpow_apply_comm + theorem equiv.perm.zpow_apply_comm Modified src/group_theory/perm/concrete_cycle.lean Modified src/group_theory/perm/cycles.lean - theorem equiv.perm.cycle_of_apply_apply_gpow_self + theorem equiv.perm.cycle_of_apply_apply_zpow_self - theorem equiv.perm.cycle_of_gpow_apply_self - theorem equiv.perm.cycle_of_self_apply_gpow + theorem equiv.perm.cycle_of_self_apply_zpow + theorem equiv.perm.cycle_of_zpow_apply_self - theorem equiv.perm.is_cycle.exists_gpow_eq + theorem equiv.perm.is_cycle.exists_zpow_eq - theorem equiv.perm.is_cycle.gpowers_equiv_support_apply - theorem equiv.perm.is_cycle.gpowers_equiv_support_symm_apply + theorem equiv.perm.is_cycle.zpowers_equiv_support_apply + theorem equiv.perm.is_cycle.zpowers_equiv_support_symm_apply - theorem equiv.perm.is_cycle_of_is_cycle_gpow + theorem equiv.perm.is_cycle_of_is_cycle_zpow - theorem equiv.perm.same_cycle_gpow_left_iff + theorem equiv.perm.same_cycle_zpow_left_iff Modified src/group_theory/perm/fin.lean Modified src/group_theory/perm/list.lean - theorem list.form_perm_gpow_apply_mem_imp_mem + theorem list.form_perm_zpow_apply_mem_imp_mem Modified src/group_theory/perm/support.lean - theorem equiv.perm.disjoint.gpow_disjoint_gpow + theorem equiv.perm.disjoint.zpow_disjoint_zpow - theorem equiv.perm.gpow_apply_eq_of_apply_apply_eq_self - theorem equiv.perm.gpow_apply_eq_self_of_apply_eq_self - theorem equiv.perm.gpow_apply_mem_support - theorem equiv.perm.set_support_gpow_subset + theorem equiv.perm.set_support_zpow_subset - theorem equiv.perm.support_gpow_le + theorem equiv.perm.support_zpow_le + theorem equiv.perm.zpow_apply_eq_of_apply_apply_eq_self + theorem equiv.perm.zpow_apply_eq_self_of_apply_eq_self + theorem equiv.perm.zpow_apply_mem_support Modified src/group_theory/quotient_group.lean - theorem quotient_group.coe_gpow + theorem quotient_group.coe_zpow Modified src/group_theory/specific_groups/cyclic.lean +/- theorem is_cyclic.image_range_card +/- theorem is_cyclic.image_range_order_of - theorem order_of_eq_card_of_forall_mem_gpowers + theorem order_of_eq_card_of_forall_mem_zpowers Modified src/group_theory/subgroup/basic.lean - theorem of_add_image_gmultiples_eq_gpowers_of_add + theorem of_add_image_gmultiples_eq_zpowers_of_add - theorem of_mul_image_gpowers_eq_gmultiples_of_mul + theorem of_mul_image_zpowers_eq_gmultiples_of_mul - theorem subgroup.coe_gpow + theorem subgroup.coe_zpow - theorem subgroup.exists_gpowers - theorem subgroup.exists_mem_gpowers + theorem subgroup.exists_mem_zpowers + theorem subgroup.exists_zpowers - theorem subgroup.forall_gpowers - theorem subgroup.forall_mem_gpowers + theorem subgroup.forall_mem_zpowers + theorem subgroup.forall_zpowers - theorem subgroup.gpow_mem - def subgroup.gpowers - theorem subgroup.gpowers_eq_closure - theorem subgroup.gpowers_subset - theorem subgroup.mem_gpowers - theorem subgroup.mem_gpowers_iff + theorem subgroup.mem_zpowers + theorem subgroup.mem_zpowers_iff - theorem subgroup.range_gpowers_hom + theorem subgroup.range_zpowers_hom - theorem subgroup.saturated_iff_gpow + theorem subgroup.saturated_iff_zpow + theorem subgroup.zpow_mem + def subgroup.zpowers + theorem subgroup.zpowers_eq_closure + theorem subgroup.zpowers_subset Modified src/group_theory/sylow.lean Renamed src/linear_algebra/matrix/fpow.lean to src/linear_algebra/matrix/zpow.lean - theorem is_unit.det_fpow + theorem is_unit.det_zpow - theorem matrix.commute.fpow_fpow - theorem matrix.commute.fpow_fpow_self - theorem matrix.commute.fpow_left - theorem matrix.commute.fpow_right - theorem matrix.commute.fpow_self - theorem matrix.commute.mul_fpow + theorem matrix.commute.mul_zpow - theorem matrix.commute.self_fpow + theorem matrix.commute.self_zpow + theorem matrix.commute.zpow_left + theorem matrix.commute.zpow_right + theorem matrix.commute.zpow_self + theorem matrix.commute.zpow_zpow + theorem matrix.commute.zpow_zpow_self - theorem matrix.fpow_add - theorem matrix.fpow_add_of_nonneg - theorem matrix.fpow_add_of_nonpos - theorem matrix.fpow_add_one - theorem matrix.fpow_add_one_of_ne_neg_one - theorem matrix.fpow_bit0' - theorem matrix.fpow_bit0 - theorem matrix.fpow_bit1' - theorem matrix.fpow_bit1 - theorem matrix.fpow_coe_nat - theorem matrix.fpow_mul' - theorem matrix.fpow_mul - theorem matrix.fpow_ne_zero_of_is_unit_det - theorem matrix.fpow_neg - theorem matrix.fpow_neg_coe_nat - theorem matrix.fpow_neg_mul_fpow_self - theorem matrix.fpow_neg_one - theorem matrix.fpow_one_add - theorem matrix.fpow_sub - theorem matrix.fpow_sub_one - theorem matrix.inv_fpow' - theorem matrix.inv_fpow + theorem matrix.inv_zpow' + theorem matrix.inv_zpow - theorem matrix.is_unit_det_fpow_iff + theorem matrix.is_unit_det_zpow_iff - theorem matrix.one_div_fpow + theorem matrix.one_div_zpow - theorem matrix.one_fpow + theorem matrix.one_zpow - theorem matrix.semiconj_by.fpow_right + theorem matrix.semiconj_by.zpow_right - theorem matrix.units.coe_fpow + theorem matrix.units.coe_zpow - theorem matrix.zero_fpow - theorem matrix.zero_fpow_eq + theorem matrix.zero_zpow + theorem matrix.zero_zpow_eq + theorem matrix.zpow_add + theorem matrix.zpow_add_of_nonneg + theorem matrix.zpow_add_of_nonpos + theorem matrix.zpow_add_one + theorem matrix.zpow_add_one_of_ne_neg_one + theorem matrix.zpow_bit0' + theorem matrix.zpow_bit0 + theorem matrix.zpow_bit1' + theorem matrix.zpow_bit1 + theorem matrix.zpow_coe_nat + theorem matrix.zpow_mul' + theorem matrix.zpow_mul + theorem matrix.zpow_ne_zero_of_is_unit_det + theorem matrix.zpow_neg + theorem matrix.zpow_neg_coe_nat + theorem matrix.zpow_neg_mul_zpow_self + theorem matrix.zpow_neg_one + theorem matrix.zpow_one_add + theorem matrix.zpow_sub + theorem matrix.zpow_sub_one Modified src/measure_theory/group/arithmetic.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/ring_theory/roots_of_unity.lean - theorem is_primitive_root.fpow_eq_one - theorem is_primitive_root.fpow_eq_one_iff_dvd - theorem is_primitive_root.fpow_of_gcd_eq_one - theorem is_primitive_root.gpow_eq_one - theorem is_primitive_root.gpow_eq_one_iff_dvd - theorem is_primitive_root.gpow_of_gcd_eq_one - theorem is_primitive_root.gpowers_eq - def is_primitive_root.zmod_equiv_gpowers - theorem is_primitive_root.zmod_equiv_gpowers_apply_coe_int - theorem is_primitive_root.zmod_equiv_gpowers_apply_coe_nat - theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_gpow' - theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_gpow - theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_pow' - theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_pow + def is_primitive_root.zmod_equiv_zpowers + theorem is_primitive_root.zmod_equiv_zpowers_apply_coe_int + theorem is_primitive_root.zmod_equiv_zpowers_apply_coe_nat + theorem is_primitive_root.zmod_equiv_zpowers_symm_apply_pow' + theorem is_primitive_root.zmod_equiv_zpowers_symm_apply_pow + theorem is_primitive_root.zmod_equiv_zpowers_symm_apply_zpow' + theorem is_primitive_root.zmod_equiv_zpowers_symm_apply_zpow + theorem is_primitive_root.zpow_eq_one + theorem is_primitive_root.zpow_eq_one_iff_dvd + theorem is_primitive_root.zpow_eq_one_iff_dvd₀ + theorem is_primitive_root.zpow_eq_one₀ + theorem is_primitive_root.zpow_of_gcd_eq_one + theorem is_primitive_root.zpow_of_gcd_eq_one₀ + theorem is_primitive_root.zpowers_eq Modified src/tactic/group.lean - theorem tactic.group.gpow_trick - theorem tactic.group.gpow_trick_one' - theorem tactic.group.gpow_trick_one - theorem tactic.group.gpow_trick_sub + theorem tactic.group.zpow_trick + theorem tactic.group.zpow_trick_one' + theorem tactic.group.zpow_trick_one + theorem tactic.group.zpow_trick_sub Modified src/topology/algebra/group_with_zero.lean - theorem continuous.fpow + theorem continuous.zpow - theorem continuous_at.fpow + theorem continuous_at.zpow - theorem continuous_at_fpow + theorem continuous_at_zpow - theorem continuous_on.fpow + theorem continuous_on.zpow - theorem continuous_on_fpow + theorem continuous_on_zpow - theorem continuous_within_at.fpow + theorem continuous_within_at.zpow - theorem filter.tendsto.fpow + theorem filter.tendsto.zpow Modified src/topology/algebra/ordered/basic.lean - theorem tendsto_const_mul_fpow_at_top_zero - theorem tendsto_const_mul_fpow_at_top_zero_iff + theorem tendsto_const_mul_zpow_at_top_zero + theorem tendsto_const_mul_zpow_at_top_zero_iff - theorem tendsto_fpow_at_top_zero + theorem tendsto_zpow_at_top_zero Modified test/refine_struct.lean 2021-10-27 17:47:26 9e4609b chore(data/fintype/card): add `fin.prod_univ_{one,two}` (#9987) Sometimes Lean fails to simplify `(default : fin 1)` to `0` and `0.succ` to `1` in complex expressions. These lemmas explicitly use `f 0` and `f 1` in the output. ESTIMATED CHANGES Modified src/data/fintype/card.lean + theorem fin.prod_univ_one + theorem fin.prod_univ_two 2021-10-27 17:47:25 29079ba feat(tactic/lint): linter improvements (#9901) * Make the linter framework easier to use on projects outside mathlib with the new `lint_project` (replacing `lint_mathlib`). Also replace `lint_mathlib_decls` by `lint_project_decls`. * Make most declarations in the frontend not-private (I want to use them in other projects) * The unused argument linter does not report declarations that contain `sorry`. It will still report declarations that use other declarations that contain sorry. I did not add a test for this, since it's hard to do that while keeping the test suite silent (but I did test locally). * Some minor changes in the test suite (not important, but they cannot hurt). ESTIMATED CHANGES Modified scripts/lint_mathlib.lean Modified src/tactic/core.lean Modified src/tactic/lint/frontend.lean Modified src/tactic/lint/misc.lean Added src/tactic/project_dir.lean + theorem mathlib_dir_locator Modified test/lint.lean 2021-10-27 15:13:53 25718c2 feat(data/nat/basic): Add two lemmas two nat/basic which are necessary for the count PR (#10001) Add two lemmas proved by refl to data/nat/basic. They are needed for the count PR, and are changing a file low enogh in the import hierarchy to be a separate PR. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.sub_succ' + theorem nat.subtype.coe_bot 2021-10-27 15:13:51 4e29dc7 chore(topology/algebra/module): add `continuous_linear_equiv.arrow_congr_equiv` (#9982) ESTIMATED CHANGES Modified src/topology/algebra/module.lean + def continuous_linear_equiv.arrow_congr_equiv 2021-10-27 15:13:50 a3f4a02 chore(analysis/normed_space/is_R_or_C + data/complex/is_R_or_C): make some proof steps standalone lemmas (#9933) Separate some proof steps from `linear_map.bound_of_sphere_bound` as standalone lemmas to golf them a little bit. ESTIMATED CHANGES Modified src/analysis/normed_space/is_R_or_C.lean + theorem is_R_or_C.norm_coe_norm Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.norm_of_nonneg 2021-10-27 15:13:49 d7c689d feat(algebraic_geometry/prime_spectrum): Closed points in prime spectrum (#9861) This PR adds lemmas about the correspondence between closed points in `prime_spectrum R` and maximal ideals of `R`. In order to import and talk about integral maps I had to move some lemmas from `noetherian.lean` to `prime_spectrum.lean` to prevent cyclic import dependencies. ESTIMATED CHANGES Renamed src/algebraic_geometry/prime_spectrum.lean to src/algebraic_geometry/prime_spectrum/basic.lean + theorem prime_spectrum.comap_injective_of_surjective + theorem prime_spectrum.comap_singleton_is_closed_of_is_integral + theorem prime_spectrum.comap_singleton_is_closed_of_surjective + theorem prime_spectrum.is_closed_singleton_iff_is_maximal + theorem prime_spectrum.t1_space_iff_is_field Renamed src/algebraic_geometry/is_open_comap_C.lean to src/algebraic_geometry/prime_spectrum/is_open_comap_C.lean Added src/algebraic_geometry/prime_spectrum/noetherian.lean + theorem prime_spectrum.exists_prime_spectrum_prod_le + theorem prime_spectrum.exists_prime_spectrum_prod_le_and_ne_bot_of_domain Modified src/algebraic_geometry/structure_sheaf.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/noetherian.lean - theorem exists_prime_spectrum_prod_le - theorem exists_prime_spectrum_prod_le_and_ne_bot_of_domain Modified src/ring_theory/nullstellensatz.lean 2021-10-27 07:01:26 d9cea39 refactor(topology+algebraic_geometry): prove and make use of equalities to simplify definitions (#9972) Prove and make use of equalities whenever possible, even between functors (which is discouraged according to certain philosophy), to replace isomorphisms by equalities, to remove the need of transporting across isomorphisms in various definitions (using `eq_to_hom` directly), most notably: [simplified definition of identity morphism for PresheafedSpace](https://github.com/leanprover-community/mathlib/compare/use_equality?expand=1#diff-252fb30c3a3221e6472db5ba794344dfb423898696e70299653d95f635de06adR89), [simplified extensionality lemma for morphisms](https://github.com/leanprover-community/mathlib/compare/use_equality?expand=1#diff-252fb30c3a3221e6472db5ba794344dfb423898696e70299653d95f635de06adR68), [simplified definition of composition](https://github.com/leanprover-community/mathlib/compare/use_equality?expand=1#diff-252fb30c3a3221e6472db5ba794344dfb423898696e70299653d95f635de06adR96) and [the global section functor](https://github.com/leanprover-community/mathlib/compare/use_equality?expand=1#diff-252fb30c3a3221e6472db5ba794344dfb423898696e70299653d95f635de06adR228) (takes advantage of defeq and doesn't require proving any new equality). Other small changes to mathlib: - Define pushforward functor of presheaves in topology/sheaves/presheaf.lean - Add new file functor.lean in topology/sheaves, proves the pushforward of a sheaf is a sheaf, and defines the pushforward functor of sheaves, with the expectation that pullbacks will be added later. - Make one of the arguments in various `restrict`s implicit. - Change statement of [`to_open_comp_comap`](https://github.com/leanprover-community/mathlib/compare/use_equality?expand=1#diff-54364470f443f847742b1c105e853afebc25da68faad63cc5a73db167bc85d06R973) in structure_sheaf.lean to be more general (the same proof works!) The new definitions result in simplified proofs, but apart from the main files opens.lean, presheaf.lean and presheafed_space.lean where proofs are optimized, I did only the minimum changes required to fix the broken proofs, and I expect there to be large room of improvement with the new definitions especially in the files changed in this PR. I also didn't remove the old lemmas and mostly just add new ones, so subsequent cleanup may be desired. ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/locally_ringed_space.lean +/- def algebraic_geometry.LocallyRingedSpace.restrict Modified src/algebraic_geometry/presheafed_space.lean + theorem algebraic_geometry.PresheafedSpace.comp_c + theorem algebraic_geometry.PresheafedSpace.hext + theorem algebraic_geometry.PresheafedSpace.of_restrict_top_c + theorem algebraic_geometry.PresheafedSpace.restrict_top_presheaf Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/stalks.lean +/- theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_hom_eq_germ +/- theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_germ Modified src/algebraic_geometry/structure_sheaf.lean +/- theorem algebraic_geometry.structure_sheaf.to_open_comp_comap Modified src/category_theory/whiskering.lean Modified src/topology/category/Top/opens.lean + theorem topological_space.opens.inclusion_top_functor + def topological_space.opens.inclusion_top_iso + theorem topological_space.opens.map_comp_eq + theorem topological_space.opens.map_eq + theorem topological_space.opens.map_id_eq + theorem topological_space.opens.map_supr Added src/topology/sheaves/functors.lean + theorem Top.presheaf.sheaf_condition_pairwise_intersections.map_cocone + theorem Top.presheaf.sheaf_condition_pairwise_intersections.map_diagram + theorem Top.presheaf.sheaf_condition_pairwise_intersections.pushforward_sheaf_of_sheaf + def Top.sheaf.pushforward + theorem Top.sheaf.pushforward_sheaf_of_sheaf Modified src/topology/sheaves/presheaf.lean + theorem Top.presheaf.id_pushforward + theorem Top.presheaf.pushforward.comp_eq + theorem Top.presheaf.pushforward.id_eq + def Top.presheaf.pushforward + theorem Top.presheaf.pushforward_eq' 2021-10-27 04:25:01 996ece5 feat(tactic/suggest): add a flag to disable "Try this" lines (#9820) ESTIMATED CHANGES Modified src/tactic/suggest.lean 2021-10-27 02:40:26 62edbe5 chore(scripts): update nolints.txt (#9994) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-10-26 22:41:21 b592589 refactor(order/boolean_algebra): factor out pi.sdiff and pi.compl (#9955) Provide definitional lemmas about sdiff and compl on pi types. This allows usage later on even without a whole `boolean_algebra` instance. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem pi.compl_apply + theorem pi.compl_def + theorem pi.sdiff_apply + theorem pi.sdiff_def 2021-10-26 22:41:20 120cf5b doc(topology) add a library note about continuity lemmas (#9954) * This is a note with some tips how to formulate a continuity (or measurability, differentiability, ...) lemma. * I wanted to write this up after formulating `continuous.strans` in many "wrong" ways before discovering the "right" way. * I think many lemmas are not following this principle, and could be improved in generality and/or convenience by following this advice. * Based on experience from the sphere eversion project. * The note mentions a lemma that will be added in #9959, but I don't think we necessarily have to wait for that PR. ESTIMATED CHANGES Modified src/topology/basic.lean 2021-10-26 21:02:25 36a2015 feat(topology/[separation, dense_embedding]): a function to a T1 space which has a limit at x is continuous at x (#9934) We prove that, for a function `f` with values in a T1 space, knowing that `f` admits *any* limit at `x` suffices to prove that `f` is continuous at `x`. We then use it to give a variant of `dense_inducing.extend_eq` with the same assumption required for continuity of the extension, which makes using both `extend_eq` and `continuous_extend` easier, and also brings us closer to Bourbaki who makes no explicit continuity assumption on the function to extend. ESTIMATED CHANGES Modified src/topology/algebra/uniform_field.lean Modified src/topology/dense_embedding.lean + theorem dense_inducing.extend_eq' + theorem dense_inducing.extend_eq_at' +/- theorem dense_inducing.extend_eq_at Modified src/topology/separation.lean + theorem continuous_at_of_tendsto_nhds + theorem eq_of_tendsto_nhds Modified src/topology/uniform_space/uniform_embedding.lean 2021-10-26 20:05:59 92e9078 fix(linear_algebra/matrix/determinant): remove coercions (#9975) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean 2021-10-26 20:05:58 2a32c70 refactor(linear_algebra/matrix/nonsingular_inverse): split out files for adjugate and nondegenerate (#9974) This breaks the file roughly in two, and rescues lost lemmas that ended up in the wrong sections of the file. The module docstrings have been tweaked a little, but all the lemmas have just been moved around. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean Added src/linear_algebra/matrix/adjugate.lean + def matrix.adjugate + theorem matrix.adjugate_apply + theorem matrix.adjugate_conj_transpose + theorem matrix.adjugate_def + theorem matrix.adjugate_eq_one_of_card_eq_one + theorem matrix.adjugate_fin_one + theorem matrix.adjugate_fin_two' + theorem matrix.adjugate_fin_two + theorem matrix.adjugate_fin_zero + theorem matrix.adjugate_mul + theorem matrix.adjugate_mul_distrib + theorem matrix.adjugate_mul_distrib_aux + theorem matrix.adjugate_one + theorem matrix.adjugate_pow + theorem matrix.adjugate_smul + theorem matrix.adjugate_subsingleton + theorem matrix.adjugate_transpose + theorem matrix.adjugate_zero + def matrix.cramer + theorem matrix.cramer_apply + theorem matrix.cramer_eq_adjugate_mul_vec + theorem matrix.cramer_is_linear + def matrix.cramer_map + theorem matrix.cramer_map_is_linear + theorem matrix.cramer_one + theorem matrix.cramer_row_self + theorem matrix.cramer_smul + theorem matrix.cramer_subsingleton_apply + theorem matrix.cramer_transpose_row_self + theorem matrix.cramer_zero + theorem matrix.det_adjugate_eq_one + theorem matrix.det_adjugate_of_cancel + theorem matrix.det_adjugate_of_is_unit + theorem matrix.is_regular_of_is_left_regular_det + theorem matrix.mul_adjugate + theorem matrix.mul_adjugate_apply + theorem matrix.mul_vec_cramer + theorem matrix.sum_cramer + theorem matrix.sum_cramer_apply + theorem ring_hom.map_adjugate Added src/linear_algebra/matrix/nondegenerate.lean + theorem matrix.eq_zero_of_mul_vec_eq_zero + theorem matrix.eq_zero_of_vec_mul_eq_zero + theorem matrix.nondegenerate.eq_zero_of_ortho + theorem matrix.nondegenerate.exists_not_ortho_of_ne_zero + def matrix.nondegenerate + theorem matrix.nondegenerate_of_det_ne_zero Modified src/linear_algebra/matrix/nonsingular_inverse.lean - def matrix.adjugate - theorem matrix.adjugate_apply - theorem matrix.adjugate_conj_transpose - theorem matrix.adjugate_def - theorem matrix.adjugate_eq_one_of_card_eq_one - theorem matrix.adjugate_fin_one - theorem matrix.adjugate_fin_two' - theorem matrix.adjugate_fin_two - theorem matrix.adjugate_fin_zero - theorem matrix.adjugate_mul - theorem matrix.adjugate_mul_distrib - theorem matrix.adjugate_mul_distrib_aux - theorem matrix.adjugate_one - theorem matrix.adjugate_pow - theorem matrix.adjugate_smul - theorem matrix.adjugate_subsingleton - theorem matrix.adjugate_transpose - theorem matrix.adjugate_zero - def matrix.cramer - theorem matrix.cramer_apply - theorem matrix.cramer_eq_adjugate_mul_vec - theorem matrix.cramer_is_linear - def matrix.cramer_map - theorem matrix.cramer_map_is_linear - theorem matrix.cramer_one - theorem matrix.cramer_row_self - theorem matrix.cramer_smul - theorem matrix.cramer_subsingleton_apply - theorem matrix.cramer_transpose_row_self - theorem matrix.cramer_zero - theorem matrix.det_adjugate_eq_one - theorem matrix.det_adjugate_of_cancel - theorem matrix.det_adjugate_of_is_unit - theorem matrix.eq_zero_of_mul_vec_eq_zero - theorem matrix.eq_zero_of_vec_mul_eq_zero - theorem matrix.is_regular_of_is_left_regular_det - theorem matrix.mul_adjugate - theorem matrix.mul_adjugate_apply - theorem matrix.mul_vec_cramer - theorem matrix.nondegenerate.eq_zero_of_ortho - theorem matrix.nondegenerate.exists_not_ortho_of_ne_zero - def matrix.nondegenerate - theorem matrix.nondegenerate_of_det_ne_zero - theorem matrix.sum_cramer - theorem matrix.sum_cramer_apply - theorem ring_hom.map_adjugate Modified src/linear_algebra/matrix/to_linear_equiv.lean 2021-10-26 17:54:26 ce164e2 chore(data/{finset,multiset}/locally_finite): rename from `.interval` (#9980) The pattern is `data.stuff.interval` for files about `locally_finite_order stuff` and... `finset α` and `multiset α` are locally finite orders. This thus makes space for this theory. ESTIMATED CHANGES Modified src/data/finset/default.lean Renamed src/data/finset/interval.lean to src/data/finset/locally_finite.lean Renamed src/data/multiset/interval.lean to src/data/multiset/locally_finite.lean Modified src/data/nat/interval.lean 2021-10-26 17:54:24 3aa5749 feat(group_theory/subgroup/basic): Define characteristic subgroups (#9921) This PR defines characteristic subgroups and builds the basic API. Getting `@[to_additive]` to work correctly was a bit tricky, so I mostly just copied the setup for `subgroup.normal`. ESTIMATED CHANGES Modified src/data/equiv/mul_add_aut.lean +/- theorem add_aut.conj_apply Modified src/group_theory/nilpotent.lean Modified src/group_theory/solvable.lean Modified src/group_theory/subgroup/basic.lean + structure add_subgroup.characteristic + structure subgroup.characteristic + theorem subgroup.characteristic_iff_comap_eq + theorem subgroup.characteristic_iff_comap_le + theorem subgroup.characteristic_iff_le_comap + theorem subgroup.characteristic_iff_le_map + theorem subgroup.characteristic_iff_map_eq + theorem subgroup.characteristic_iff_map_le 2021-10-26 16:22:50 50c6094 feat(topology/uniform_space/basic): add lemma `comp_open_symm_mem_uniformity_sets` (#9981) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem comp_open_symm_mem_uniformity_sets 2021-10-26 12:23:43 d2b1221 feat(algebra/order/group|order/filter): add two lemmas (#9956) * Also open `function` namespace in `order.filter.basic` * From the sphere eversion project ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem le_div_self_iff Modified src/order/filter/basic.lean +/- theorem filter.comap_map +/- theorem filter.image_mem_map_iff +/- theorem filter.map_comap_of_surjective +/- theorem filter.map_inf +/- theorem filter.map_inj +/- theorem filter.mem_comap_iff +/- theorem filter.pure_injective + theorem function.surjective.filter_map_top 2021-10-26 09:49:59 41df5b3 docs(data/sigma/basic): Add module docstring (#9908) ESTIMATED CHANGES Modified src/data/sigma/basic.lean 2021-10-26 09:09:15 6b47ccb feat(group_theory/p_group): Center of a p-group is nontrivial (#9973) The center of a p-group is nontrivial, stated in two different ways. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.bot_lt_center + theorem is_p_group.center_nontrivial 2021-10-26 07:25:48 f229c83 chore(*): move 2 lemmas to reorder imports (#9969) I want to use `measure_theory.measure_preserving` in various files, including `measure_theory.integral.lebesgue`. The file about measure preserving map had two lemmas about product measures. I move them to `measure_theory.constructions.prod`. I also golfed (and made it more readable at the same time!) the proof of `measure_theory.measure.prod_prod_le` using `to_measurable_set`. ESTIMATED CHANGES Modified src/dynamics/ergodic/conservative.lean Modified src/dynamics/ergodic/measure_preserving.lean - theorem measure_theory.measure_preserving.prod - theorem measure_theory.measure_preserving.skew_product Modified src/measure_theory/constructions/prod.lean + theorem measure_theory.measure_preserving.skew_product 2021-10-26 07:25:47 367d71e chore(order/iterate): review, add docs (#9965) * reorder sections; * add section docs; * use inequalities between functions in a few statements; * add a few lemmas about `strict_mono` functions. ESTIMATED CHANGES Modified src/order/iterate.lean + theorem function.antitone_iterate_of_le_id +/- theorem function.id_le_iterate_of_id_le +/- theorem function.iterate_le_id_of_le_id - theorem function.iterate_le_iterate_of_id_le - theorem function.iterate_le_iterate_of_le_id + theorem function.monotone_iterate_of_id_le + theorem monotone.antitone_iterate_of_map_le +/- theorem monotone.iterate_comp_le_of_le - theorem monotone.iterate_ge_of_ge +/- theorem monotone.iterate_le_of_le +/- theorem monotone.le_iterate_comp_of_le + theorem monotone.le_iterate_of_le + theorem monotone.monotone_iterate_of_le_map + theorem strict_mono.strict_anti_iterate_of_map_lt + theorem strict_mono.strict_mono_iterate_of_lt_map 2021-10-26 07:25:45 717de02 refactor(linear_algebra/free_module/pid): move lemmas (#9962) `linear_algebra/free_module/pid` contains several results not directly related to PID. We move them in more appropriate files. Except for small golfing and easy generalization, the statements and the proofs are untouched. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.ne_zero_of_ortho + theorem submodule.not_mem_of_ortho Modified src/linear_algebra/basic.lean + theorem linear_map.mem_submodule_image + theorem linear_map.mem_submodule_image_of_le + def linear_map.submodule_image + theorem linear_map.submodule_image_apply_of_le Modified src/linear_algebra/basis.lean + theorem eq_bot_of_rank_eq_zero + def submodule.induction_on_rank_aux Modified src/linear_algebra/dimension.lean + theorem basis.card_le_card_of_le + theorem basis.card_le_card_of_linear_independent + theorem basis.card_le_card_of_linear_independent_aux + theorem basis.card_le_card_of_submodule + theorem ideal.rank_eq + def submodule.induction_on_rank Modified src/linear_algebra/free_module/pid.lean - theorem basis.card_le_card_of_le - theorem basis.card_le_card_of_linear_independent - theorem basis.card_le_card_of_linear_independent_aux - theorem basis.card_le_card_of_submodule - theorem eq_bot_of_rank_eq_zero - theorem generator_map_dvd_of_mem - theorem generator_submodule_image_dvd_of_mem - theorem ideal.rank_eq - theorem linear_map.mem_submodule_image - theorem linear_map.mem_submodule_image_of_le - def linear_map.submodule_image - theorem linear_map.submodule_image_apply_of_le - theorem ne_zero_of_ortho - theorem not_mem_of_ortho - def submodule.induction_on_rank - def submodule.induction_on_rank_aux Modified src/ring_theory/principal_ideal_domain.lean + theorem submodule.is_principal.generator_map_dvd_of_mem + theorem submodule.is_principal.generator_submodule_image_dvd_of_mem 2021-10-26 05:22:54 5227f53 chore(data/equiv/encodable): a `[unique]` type is encodable (#9970) ESTIMATED CHANGES Modified src/data/equiv/encodable/basic.lean Modified src/data/equiv/encodable/small.lean 2021-10-26 02:28:08 a8e6442 chore(scripts): update nolints.txt (#9971) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-10-26 01:01:18 e88b4ed chore(measure_theory/constructions/pi): add `pi_of_empty` (#9937) ESTIMATED CHANGES Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.measure.pi_of_empty + theorem measure_theory.measure.pi_univ 2021-10-25 22:55:58 56de12a refactor(data/mv_polynomial): upgrade `monomial` to a `linear_map` (#9870) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.C_eq_smul_one + theorem mv_polynomial.X_pow_eq_monomial - theorem mv_polynomial.X_pow_eq_single + theorem mv_polynomial.eval₂_mul_C + theorem mv_polynomial.finsupp_support_eq_support +/- def mv_polynomial.monomial - theorem mv_polynomial.monomial_add + theorem mv_polynomial.monomial_finsupp_sum_index + def mv_polynomial.monomial_one_hom + theorem mv_polynomial.monomial_one_hom_apply + theorem mv_polynomial.monomial_pow + theorem mv_polynomial.monomial_sum_index + theorem mv_polynomial.monomial_sum_one + theorem mv_polynomial.monomial_zero' +/- theorem mv_polynomial.sum_monomial_eq Modified src/data/mv_polynomial/comm_ring.lean - theorem mv_polynomial.monomial_neg - theorem mv_polynomial.monomial_sub Modified src/data/mv_polynomial/monad.lean Modified src/data/mv_polynomial/pderiv.lean Modified src/data/mv_polynomial/rename.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/polynomial/symmetric.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean 2021-10-25 22:55:56 34b9933 feat(number_theory/liouville): the set of Liouville numbers has measure zero (#9702) As a corollary, the filters `residual ℝ` and `volume.ae` are disjoint. ESTIMATED CHANGES Added src/number_theory/liouville/liouville_with.lean + theorem forall_liouville_with_iff + theorem liouville.frequently_exists_num + theorem liouville_with.add_int + theorem liouville_with.add_int_iff + theorem liouville_with.add_nat + theorem liouville_with.add_nat_iff + theorem liouville_with.add_rat + theorem liouville_with.add_rat_iff + theorem liouville_with.exists_pos + theorem liouville_with.frequently_lt_rpow_neg + theorem liouville_with.int_add + theorem liouville_with.int_add_iff + theorem liouville_with.int_mul + theorem liouville_with.int_mul_iff + theorem liouville_with.int_sub + theorem liouville_with.int_sub_iff + theorem liouville_with.mono + theorem liouville_with.mul_int + theorem liouville_with.mul_int_iff + theorem liouville_with.mul_nat + theorem liouville_with.mul_nat_iff + theorem liouville_with.mul_rat + theorem liouville_with.mul_rat_iff + theorem liouville_with.nat_add + theorem liouville_with.nat_add_iff + theorem liouville_with.nat_mul + theorem liouville_with.nat_mul_iff + theorem liouville_with.nat_sub + theorem liouville_with.nat_sub_iff + theorem liouville_with.ne_cast_int + theorem liouville_with.neg_iff + theorem liouville_with.rat_add + theorem liouville_with.rat_add_iff + theorem liouville_with.rat_mul + theorem liouville_with.rat_mul_iff + theorem liouville_with.rat_sub + theorem liouville_with.rat_sub_iff + theorem liouville_with.sub_int + theorem liouville_with.sub_int_iff + theorem liouville_with.sub_nat + theorem liouville_with.sub_nat_iff + theorem liouville_with.sub_rat + theorem liouville_with.sub_rat_iff + def liouville_with + theorem liouville_with_one Added src/number_theory/liouville/measure.lean + theorem ae_not_liouville + theorem ae_not_liouville_with + theorem real.disjoint_residual_ae + theorem set_of_liouville_with_subset_aux + theorem volume_Union_set_of_liouville_with + theorem volume_set_of_liouville Modified src/order/filter/basic.lean + theorem filter.disjoint_of_disjoint_of_mem + theorem filter.eventually.and_frequently Modified src/topology/algebra/ordered/basic.lean + theorem filter.eventually.exists_gt + theorem filter.eventually.exists_lt 2021-10-25 22:55:55 c363ad6 feat(category_theory/sites/*): Cover preserving functors (#9691) Split from #9650 - Defined `cover_preserving` functors as functors that push covering sieves to covering sieves. - Defined `compatible_preserving` functors as functors that push compatible families to compatible families. - Proved that functors that are both `cover_preserving` and `compatible_preserving` pulls sheaves to sheaves. ESTIMATED CHANGES Added src/category_theory/sites/cover_preserving.lean + theorem category_theory.compatible_preserving.apply_map + structure category_theory.compatible_preserving + theorem category_theory.cover_preserving.comp + structure category_theory.cover_preserving + theorem category_theory.id_cover_preserving + theorem category_theory.presieve.family_of_elements.compatible.functor_pushforward + theorem category_theory.pullback_is_sheaf_of_cover_preserving + def category_theory.pullback_sheaf + def category_theory.sites.pullback Modified src/category_theory/sites/sheaf.lean + def category_theory.sheaf_over Modified src/category_theory/sites/sheaf_of_types.lean + theorem category_theory.presieve.family_of_elements.comp_of_compatible + def category_theory.presieve.family_of_elements.functor_pushforward Modified src/category_theory/sites/sieves.lean + structure category_theory.presieve.functor_pushforward_structure 2021-10-25 20:31:21 5421200 feat(group_theory/index): Small values of `subgroup.index` (#9893) `H.index = 1 ↔ H = ⊤` and related results. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.index_eq_one + theorem subgroup.index_ne_zero_of_fintype + theorem subgroup.one_lt_index_of_ne_top 2021-10-25 20:31:20 880c7bd chore(linear_algebra/matrix): add fin expansions for trace and adjugate, and some trace lemmas (#9884) We have these expansions for `det` already, I figured we may as well have them for these. This adds some other trivial trace lemmas while I'm touching the same file. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.adjugate_fin_one + theorem matrix.adjugate_fin_zero Modified src/linear_algebra/matrix/trace.lean + theorem matrix.diag_col_mul_row + theorem matrix.trace_col_mul_row + theorem matrix.trace_fin_one + theorem matrix.trace_fin_three + theorem matrix.trace_fin_two + theorem matrix.trace_fin_zero + theorem matrix.trace_mul_cycle' + theorem matrix.trace_mul_cycle 2021-10-25 20:31:19 e808b41 feat(data/matrix/basic): lemmas about transpose and conj_transpose on sums and products (#9880) This also generalizes some previous results from `star_ring` to `star_add_monoid` now that the latter exists. To help prove the non-commutative statements, this adds `monoid_hom.unop_map_list_prod` and similar. This could probably used for proving `star_list_prod` in future. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem ring_hom.unop_map_list_prod Modified src/data/equiv/ring.lean + theorem ring_equiv.unop_map_list_prod Modified src/data/list/basic.lean + theorem list.prod_concat + theorem monoid_hom.unop_map_list_prod + theorem opposite.op_list_prod + theorem opposite.unop_list_prod Modified src/data/matrix/basic.lean +/- theorem matrix.conj_transpose_add + def matrix.conj_transpose_add_equiv + theorem matrix.conj_transpose_add_equiv_symm + theorem matrix.conj_transpose_list_prod + theorem matrix.conj_transpose_list_sum + theorem matrix.conj_transpose_multiset_sum + def matrix.conj_transpose_ring_equiv +/- theorem matrix.conj_transpose_sub + theorem matrix.conj_transpose_sum + def matrix.transpose_add_equiv + theorem matrix.transpose_add_equiv_symm + theorem matrix.transpose_list_prod + theorem matrix.transpose_list_sum + theorem matrix.transpose_multiset_sum + def matrix.transpose_ring_equiv + theorem matrix.transpose_sum 2021-10-25 17:43:11 87fa12a chore(linear_algebra/matrix/nonsingular_inverse): replace `1 < fintype.card n` with `nontrivial n` (#9953) This likely makes this a better simp lemma ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean +/- theorem matrix.adjugate_zero 2021-10-25 17:43:10 0d131fe chore(group_theory/submonoid): move a lemma to reduce imports (#9951) Currently, `algebra.pointwise` is a relatively "heavy" import (e.g., it depends on `data.set.finite`) and I want to use submonoid closures a bit earlier than that. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/membership.lean - theorem submonoid.mem_closure_inv Modified src/group_theory/submonoid/pointwise.lean + theorem submonoid.mem_closure_inv Modified src/ring_theory/subsemiring.lean 2021-10-25 17:43:09 374885a feat(linear_algebra/matrix/nonsingular_inverse): lemmas about adjugate (#9947) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_update_column_smul' + theorem matrix.det_update_row_smul' Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.adjugate_conj_transpose + theorem matrix.adjugate_smul + theorem matrix.cramer_smul - theorem matrix.ring_hom.map_adjugate + theorem ring_hom.map_adjugate Modified src/linear_algebra/multilinear/basic.lean + theorem multilinear_map.map_update_smul 2021-10-25 17:43:06 c693682 chore(analysis/normed/group/basic): make various norm instances computable (#9946) Instead of defining the default `edist` as `ennreal.of_real` which introduces an `ite` on an undecidable equality, this constructs the `ennreal` directly using a proof of non-negativity. This removes `noncomputable theory` from some files so as to make it obvious from the source alone which definitions are and are not computable. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + def normed_group.of_core + def semi_normed_group.of_core Modified src/topology/metric_space/basic.lean - def metric.diam 2021-10-25 17:43:03 5fcbd2b chore(linear_algebra/matrix/nonsingular_inverse): use pi.single instead of ite (#9944) ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean +/- def matrix.adjugate 2021-10-25 17:43:01 5778df8 chore(analysis/complex/circle): upgrade `exp_map_circle` to `continuous_map` (#9942) ESTIMATED CHANGES Modified src/analysis/complex/circle.lean +/- def exp_map_circle + theorem exp_map_circle_add + theorem exp_map_circle_zero 2021-10-25 17:43:00 2026a5f feat(measure_theory/measure): better `measure.restrict_singleton` (#9936) With new `restrict_singleton`, `simp` can simplify `∫ x in {a}, f x ∂μ` to `(μ {a}).to_real • f a`. ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.integral_dirac' +/- theorem measure_theory.integral_dirac Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.restrict_singleton' + theorem measure_theory.measure.restrict_singleton 2021-10-25 17:42:59 8eb1c02 feat(analysis/special_functions/pow): Equivalent conditions for zero powers (#9897) Lemmas for 0^x in the reals and complex numbers. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem complex.eq_zero_cpow_iff + theorem complex.zero_cpow_eq_iff + theorem real.eq_zero_rpow_iff + theorem real.zero_rpow_eq_iff 2021-10-25 17:42:58 312db88 feat(*): use `ordered_sub` instead of `nat.sub` lemmas (#9855) * For all `nat.sub` lemmas in core, prefer to use the `has_ordered_sub` version. * Most lemmas have an identical version for `has_ordered_sub`. In some cases we only have the symmetric version. * Make arguments to `tsub_add_eq_tsub_tsub` and `tsub_add_eq_tsub_tsub_swap` explicit * Rename `add_tsub_add_right_eq_tsub -> add_tsub_add_eq_tsub_right` (for consistency with the `_left` version) * Rename `sub_mul' -> tsub_mul` and `mul_sub' -> mul_tsub` (these were forgotten in #9793) * Many of the fixes are to fix the identification of `n < m` and `n.succ \le m`. * Add projection notation `h.nat_succ_le` for `nat.succ_le_of_lt h`. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified archive/imo/imo1977_q6.lean Modified archive/imo/imo1981_q3.lean Modified archive/miu_language/decision_suf.lean Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/intervals.lean Modified src/algebra/char_p/basic.lean Modified src/algebra/continued_fractions/terminated_stable.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_power/order.lean Modified src/algebra/group_with_zero/power.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/order/ring.lean - theorem mul_sub' + theorem mul_tsub - theorem sub_mul' + theorem tsub_mul Modified src/algebra/order/sub.lean + theorem add_tsub_add_eq_tsub_right - theorem add_tsub_add_right_eq_tsub +/- theorem tsub_add_eq_tsub_tsub +/- theorem tsub_add_eq_tsub_tsub_swap Modified src/algebra/pointwise.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/specific_limits.lean Modified src/combinatorics/composition.lean Modified src/combinatorics/derangements/finite.lean Modified src/combinatorics/hall/finite.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/computability/DFA.lean Modified src/computability/primrec.lean Modified src/computability/turing_machine.lean Modified src/data/bitvec/core.lean Modified src/data/buffer/parser/basic.lean Modified src/data/complex/exponential.lean Modified src/data/equiv/list.lean Modified src/data/fin/basic.lean Modified src/data/finset/basic.lean Modified src/data/hash_map.lean Modified src/data/int/basic.lean Modified src/data/int/cast.lean Modified src/data/list/basic.lean Modified src/data/list/cycle.lean Modified src/data/list/intervals.lean Modified src/data/list/nat_antidiagonal.lean Modified src/data/list/nodup_equiv_fin.lean Modified src/data/list/perm.lean Modified src/data/list/range.lean Modified src/data/list/rotate.lean Modified src/data/list/zip.lean Modified src/data/multiset/nodup.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/pderiv.lean Modified src/data/nat/basic.lean + theorem has_lt.lt.nat_succ_le Modified src/data/nat/bitwise.lean Modified src/data/nat/cast.lean Modified src/data/nat/choose/basic.lean Modified src/data/nat/choose/cast.lean Modified src/data/nat/choose/dvd.lean Modified src/data/nat/choose/sum.lean Modified src/data/nat/dist.lean Modified src/data/nat/enat.lean Modified src/data/nat/factorial/basic.lean Modified src/data/nat/factorial/cast.lean Modified src/data/nat/interval.lean Modified src/data/nat/log.lean Modified src/data/nat/modeq.lean Modified src/data/nat/pairing.lean Modified src/data/nat/parity.lean Modified src/data/nat/pow.lean Modified src/data/nat/prime.lean Modified src/data/nat/psub.lean Modified src/data/nat/totient.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/xgcd.lean Modified src/data/polynomial/cancel_leads.lean Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/data/polynomial/denoms_clearable.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/hasse_deriv.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/data/polynomial/mirror.lean Modified src/data/polynomial/reverse.lean Modified src/data/polynomial/ring_division.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/sym/card.lean Modified src/data/vector/basic.lean Modified src/data/zmod/basic.lean Modified src/dynamics/ergodic/conservative.lean Modified src/dynamics/ergodic/measure_preserving.lean Modified src/dynamics/periodic_pts.lean Modified src/geometry/euclidean/monge_point.lean Modified src/group_theory/nilpotent.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/concrete_cycle.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/list.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/matrix/fpow.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/vandermonde.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/number_theory/dioph.lean Modified src/number_theory/liouville/liouville_constant.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/pell.lean Modified src/number_theory/primorial.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/order/complete_lattice.lean Modified src/order/filter/at_top_bot.lean Modified src/order/jordan_holder.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/pochhammer.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean Modified src/ring_theory/witt_vector/teichmuller.lean Modified src/ring_theory/witt_vector/verschiebung.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/game/domineering.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/set_theory/ordinal_notation.lean Modified src/tactic/group.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/norm_num.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/suggest.lean Modified src/testing/slim_check/sampleable.lean Modified test/library_search/basic.lean 2021-10-25 17:42:56 f298c55 refactor(linear_algebra/finite_dimensional): define finite_dimensional using module.finite (#9854) `finite_dimensional K V` is by definition `is_noetherian K V`. We refactor this to use everywhere `finite K V` instead. To keep the PR reasonably small, we don't delete `finite_dimension`, but we define it as `module.finite`. In a future PR we will remove it. - [x] depends on: #9860 ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/data/complex/is_R_or_C.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/field_theory/normal.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/tower.lean Modified src/geometry/manifold/whitney_embedding.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean + def finite_dimensional.fintype_basis_index Modified src/linear_algebra/finsupp_vector_space.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/dedekind_domain.lean Modified src/topology/metric_space/hausdorff_dimension.lean 2021-10-25 13:43:52 3d457a2 chore(topology/continuous_function): review API (#9950) * add `simps` config for `α →ᵇ β`; * use better variable names in `topology.continuous_function.compact`; * weaken some TC assumptions in `topology.continuous_function.compact`; * migrate more API from `α →ᵇ β` to `C(α, β)`. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean - theorem bounded_continuous_function.coe_const +/- def bounded_continuous_function.const + theorem bounded_continuous_function.const_apply' - theorem bounded_continuous_function.const_apply +/- def bounded_continuous_function.mk_of_discrete - theorem bounded_continuous_function.mk_of_discrete_apply + def bounded_continuous_function.simps.apply Modified src/topology/continuous_function/compact.lean + theorem bounded_continuous_function.dist_forget_boundedness + theorem bounded_continuous_function.dist_mk_of_compact +/- theorem bounded_continuous_function.norm_forget_boundedness_eq + theorem bounded_continuous_function.norm_mk_of_compact +/- def continuous_map.add_equiv_bounded_of_compact - theorem continuous_map.add_equiv_bounded_of_compact_apply_apply - theorem continuous_map.add_equiv_bounded_of_compact_to_equiv + theorem continuous_map.continuous_coe + theorem continuous_map.continuous_eval + theorem continuous_map.continuous_evalx + theorem continuous_map.dist_apply_le_dist +/- theorem continuous_map.dist_lt_of_nonempty +/- def continuous_map.equiv_bounded_of_compact +/- theorem continuous_map.linear_isometry_bounded_of_compact_apply_apply +/- theorem continuous_map.linear_isometry_bounded_of_compact_symm_apply Modified src/topology/continuous_function/stone_weierstrass.lean 2021-10-25 13:43:51 f23354d feat(linear_algebra/basic, ring_theory/ideal/basic): add span_insert (#9941) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.span_insert Modified src/ring_theory/ideal/basic.lean + theorem ideal.span_insert 2021-10-25 10:59:45 26c838f refactor(data/real/ennreal): remove ordered sub simp lemmas (#9902) * They are now simp lemmas in `algebra/order/sub` * Squeeze some simps ESTIMATED CHANGES Modified src/algebra/order/sub.lean +/- theorem add_tsub_cancel_of_le +/- theorem tsub_eq_zero_iff_le + theorem tsub_eq_zero_of_le +/- theorem tsub_pos_iff_lt Modified src/analysis/special_functions/integrals.lean Modified src/analysis/specific_limits.lean Modified src/computability/halting.lean Modified src/data/real/ennreal.lean - theorem ennreal.sub_eq_zero_of_le Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/regular.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/emetric_space.lean 2021-10-25 08:37:22 dc1484e feat(ring_theory/polynomial/cyclotomic): add lemmas about evaluation of cyclotomic polynomials at one (#9910) ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.eval_one_cyclotomic_prime + theorem polynomial.eval_one_cyclotomic_prime_pow + theorem polynomial.eval₂_one_cyclotomic_prime + theorem polynomial.eval₂_one_cyclotomic_prime_pow 2021-10-25 06:51:07 7e53203 chore(group_theory/submonoid/operations): golf a few proofs (#9948) ESTIMATED CHANGES Modified src/group_theory/submonoid/operations.lean + theorem submonoid.mk_mul_mk + theorem submonoid.mul_def + theorem submonoid.one_def 2021-10-25 06:51:05 bfcbe68 feat(group_theory/subgroup/basic): `normalizer_eq_top` (#9917) The normalizer is the whole group if and only if the subgroup is normal. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.normalizer_eq_top 2021-10-25 06:51:03 41b90d7 feat(group_theory/index): Second isomorphism theorem in terms of `relindex` (#9915) Restates the second isomorphism theorem in terms of `relindex`. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.inf_relindex_eq_relindex_sup + theorem subgroup.relindex_eq_relindex_sup 2021-10-25 05:13:27 b9260f2 feat(group_theory/subgroup/basic): `map_subtype_le` (#9916) A subgroup of a subgroup is `≤`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.map_subtype_le 2021-10-25 01:28:17 951a60e chore(data/list/basic): golf a proof (#9949) Prove `list.mem_map` directly, get `list.exists_of_mem_map` and `list.mem_map_of_mem` as corollaries. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.exists_of_mem_map +/- theorem list.pmap_eq_map 2021-10-25 01:28:16 264d33e docs(control/traversable/lemmas): Add module docstring (#9927) ESTIMATED CHANGES Modified docs/references.bib Modified src/control/traversable/lemmas.lean +/- theorem traversable.id_sequence +/- theorem traversable.map_traverse +/- theorem traversable.pure_transformation_apply +/- theorem traversable.pure_traverse +/- theorem traversable.traverse_eq_map_id' +/- theorem traversable.traverse_id 2021-10-24 22:52:58 c4760b9 feat(algebra/big_operators/basic): prod/sum over an empty type (#9939) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem fintype.prod_empty Modified src/linear_algebra/multilinear/basic.lean 2021-10-24 22:52:57 f9da68c feat(*): a few more `fun_unique`s (#9938) ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- def equiv.fun_unique Modified src/linear_algebra/pi.lean + def linear_equiv.fun_unique Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.coe_fun_unique + theorem continuous_linear_equiv.coe_fun_unique_symm + def continuous_linear_equiv.fun_unique Modified src/topology/homeomorph.lean + def homeomorph.fun_unique 2021-10-24 22:52:56 942e60f chore(algebra/*/pi): add missing lemmas about function.update and set.piecewise (#9935) This adds `function.update_{zero,one,add,mul,sub,div,neg,inv,smul,vadd}`, and moves `pi.piecewise_{sub,div,neg,inv}` into the `set` namespace to match `set.piecewise_{add,mul}`. This also adds `finset.piecewise_erase_univ`, as this is tangentially related. ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem function.update_div + theorem function.update_inv + theorem function.update_mul + theorem function.update_one - theorem pi.piecewise_div - theorem pi.piecewise_inv + theorem set.piecewise_div + theorem set.piecewise_inv Modified src/algebra/module/pi.lean + theorem function.update_smul + theorem set.piecewise_smul Modified src/data/fintype/basic.lean + theorem finset.compl_singleton + theorem finset.piecewise_erase_univ Modified src/logic/function/basic.lean + theorem function.apply_update₂ 2021-10-24 22:52:55 1e7f6b9 docs(control/bitraversable/instances): Add def docstrings (#9931) ESTIMATED CHANGES Modified src/control/bitraversable/instances.lean +/- def const.bitraverse 2021-10-24 22:52:54 5d1e8f7 docs(control/applicative): Add module docstring (#9930) ESTIMATED CHANGES Modified src/control/applicative.lean +/- theorem applicative.pure_seq_eq_map' 2021-10-24 22:52:53 6f1d45d docs(control/bitraversable/basic): Add defs docstrings (#9929) ESTIMATED CHANGES Modified src/control/bitraversable/basic.lean 2021-10-24 22:52:52 5642c62 docs(control/traversable/equiv): Add module docstring (#9928) ESTIMATED CHANGES Modified src/control/traversable/equiv.lean 2021-10-24 22:52:51 8c0b8c7 feat(group_theory/subgroup/basic): Contrapositive of `card_le_one_iff_eq_bot` (#9918) Adds contrapositive of `card_le_one_iff_eq_bot`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.one_lt_card_iff_ne_bot 2021-10-24 22:52:50 4468231 feat(data/nat/log): Equivalent conditions for logarithms to equal zero and one (#9903) Add equivalent conditions for a `nat.log` to equal 0 or 1. ESTIMATED CHANGES Modified src/data/nat/log.lean + theorem nat.log_eq_one_iff + theorem nat.log_eq_zero_iff + theorem nat.log_of_one_lt_of_le 2021-10-24 22:52:49 12515db feat(data/list): product of list.update_nth in terms of inverses (#9800) Expression for the product of `l.update_nth n x` in terms of inverses instead of `take` and `drop`, assuming a group instead of a monoid. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.prod_drop_succ + theorem list.prod_update_nth' - theorem list.sum_take_add_sum_drop - theorem list.sum_take_succ Modified src/data/list/zip.lean + theorem list.prod_mul_prod_eq_prod_zip_with_mul_prod_drop + theorem list.prod_mul_prod_eq_prod_zip_with_of_length_eq Modified src/data/vector/basic.lean + theorem vector.prod_update_nth' + theorem vector.prod_update_nth + theorem vector.to_list_update_nth Modified src/data/vector/zip.lean + theorem vector.prod_mul_prod_eq_prod_zip_with 2021-10-24 22:06:49 c20f08e feat(dynamics/ergodic/measure_preserving): add `measure_preserving.symm` (#9940) Also make the proof of `measure_preserving.skew_product` a bit more readable. ESTIMATED CHANGES Modified src/dynamics/ergodic/measure_preserving.lean + theorem measure_theory.measure_preserving.symm 2021-10-24 22:06:48 4ea8de9 feat(measure_theory/integral): Divergence theorem for Bochner integral (#9811) ESTIMATED CHANGES Added src/measure_theory/integral/divergence_theorem.lean + theorem measure_theory.integral_divergence_of_has_fderiv_within_at_off_countable 2021-10-24 21:16:31 a30e190 split(analysis/normed_space/exponential): split file to minimize dependencies (#9932) As suggested by @urkud, this moves all the results depending on derivatives, `complex.exp` and `real.exp` to a new file `analysis/special_function/exponential`. That way the definitions of `exp` and `[complex, real].exp` are independent, which means we could eventually redefine the latter in terms of the former without breaking the import tree. ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean - theorem complex.exp_eq_exp_ℂ_ℂ - theorem has_deriv_at_exp - theorem has_deriv_at_exp_of_mem_ball - theorem has_deriv_at_exp_zero - theorem has_deriv_at_exp_zero_of_radius_pos - theorem has_fderiv_at_exp - theorem has_fderiv_at_exp_of_mem_ball - theorem has_fderiv_at_exp_zero - theorem has_fderiv_at_exp_zero_of_radius_pos - theorem has_strict_deriv_at_exp - theorem has_strict_deriv_at_exp_of_mem_ball - theorem has_strict_deriv_at_exp_zero - theorem has_strict_deriv_at_exp_zero_of_radius_pos - theorem has_strict_fderiv_at_exp - theorem has_strict_fderiv_at_exp_of_mem_ball - theorem has_strict_fderiv_at_exp_zero - theorem has_strict_fderiv_at_exp_zero_of_radius_pos - theorem real.exp_eq_exp_ℝ_ℝ Added src/analysis/special_functions/exponential.lean + theorem complex.exp_eq_exp_ℂ_ℂ + theorem has_deriv_at_exp + theorem has_deriv_at_exp_of_mem_ball + theorem has_deriv_at_exp_zero + theorem has_deriv_at_exp_zero_of_radius_pos + theorem has_fderiv_at_exp + theorem has_fderiv_at_exp_of_mem_ball + theorem has_fderiv_at_exp_zero + theorem has_fderiv_at_exp_zero_of_radius_pos + theorem has_strict_deriv_at_exp + theorem has_strict_deriv_at_exp_of_mem_ball + theorem has_strict_deriv_at_exp_zero + theorem has_strict_deriv_at_exp_zero_of_radius_pos + theorem has_strict_fderiv_at_exp + theorem has_strict_fderiv_at_exp_of_mem_ball + theorem has_strict_fderiv_at_exp_zero + theorem has_strict_fderiv_at_exp_zero_of_radius_pos + theorem real.exp_eq_exp_ℝ_ℝ Modified src/combinatorics/derangements/exponential.lean 2021-10-24 16:04:22 dc6b8e1 feat(topology): add some lemmas (#9907) * From the sphere eversion project * Add compositional version `continuous.fst` of `continuous_fst`, compare `measurable.fst`. * Add `comp_continuous_at_iff` and `comp_continuous_at_iff'` for `homeomorph` (and for `inducing`). * Add some variants of these (requested by review). ESTIMATED CHANGES Modified src/topology/constructions.lean + theorem continuous.fst + theorem continuous.snd + theorem continuous_at.fst + theorem continuous_at.snd Modified src/topology/continuous_on.lean + theorem continuous_on.fst + theorem continuous_on.snd + theorem inducing.continuous_within_at_iff Modified src/topology/homeomorph.lean + theorem homeomorph.comp_continuous_at_iff' + theorem homeomorph.comp_continuous_at_iff + theorem homeomorph.comp_continuous_within_at_iff Modified src/topology/maps.lean + theorem inducing.continuous_at_iff' + theorem inducing.continuous_at_iff 2021-10-24 13:34:54 696f07f split(data/list/lattice): split off `data.list.basic` (#9906) ESTIMATED CHANGES Deleted src/data/list/bag_inter.lean - theorem list.bag_inter_nil - theorem list.bag_inter_nil_iff_inter_nil - theorem list.bag_inter_sublist_left - theorem list.cons_bag_inter_of_neg - theorem list.cons_bag_inter_of_pos - theorem list.count_bag_inter - theorem list.mem_bag_inter - theorem list.nil_bag_inter Modified src/data/list/basic.lean - theorem list.cons_union - theorem list.disjoint.symm - theorem list.disjoint_append_left - theorem list.disjoint_append_right - theorem list.disjoint_comm - theorem list.disjoint_cons_left - theorem list.disjoint_cons_right - theorem list.disjoint_iff_ne - theorem list.disjoint_left - theorem list.disjoint_nil_left - theorem list.disjoint_nil_right - theorem list.disjoint_of_disjoint_append_left_left - theorem list.disjoint_of_disjoint_append_left_right - theorem list.disjoint_of_disjoint_append_right_left - theorem list.disjoint_of_disjoint_append_right_right - theorem list.disjoint_of_disjoint_cons_left - theorem list.disjoint_of_disjoint_cons_right - theorem list.disjoint_of_subset_left - theorem list.disjoint_of_subset_right - theorem list.disjoint_right - theorem list.disjoint_singleton - theorem list.disjoint_take_drop - theorem list.forall_mem_inter_of_forall_left - theorem list.forall_mem_inter_of_forall_right - theorem list.forall_mem_of_forall_mem_union_left - theorem list.forall_mem_of_forall_mem_union_right - theorem list.forall_mem_union - theorem list.inter_cons_of_mem - theorem list.inter_cons_of_not_mem - theorem list.inter_eq_nil_iff_disjoint - theorem list.inter_nil - theorem list.inter_reverse - theorem list.inter_subset_left - theorem list.inter_subset_right - theorem list.mem_inter - theorem list.mem_inter_of_mem_of_mem - theorem list.mem_of_mem_inter_left - theorem list.mem_of_mem_inter_right - theorem list.mem_union - theorem list.mem_union_left - theorem list.mem_union_right - theorem list.nil_union - theorem list.singleton_disjoint - theorem list.sublist_suffix_of_union - theorem list.subset_inter - theorem list.suffix_union_right - theorem list.union_sublist_append Modified src/data/list/default.lean Modified src/data/list/intervals.lean Added src/data/list/lattice.lean + theorem list.bag_inter_nil + theorem list.bag_inter_nil_iff_inter_nil + theorem list.bag_inter_sublist_left + theorem list.cons_bag_inter_of_neg + theorem list.cons_bag_inter_of_pos + theorem list.cons_union + theorem list.count_bag_inter + theorem list.disjoint.symm + theorem list.disjoint_append_left + theorem list.disjoint_append_right + theorem list.disjoint_comm + theorem list.disjoint_cons_left + theorem list.disjoint_cons_right + theorem list.disjoint_iff_ne + theorem list.disjoint_left + theorem list.disjoint_nil_left + theorem list.disjoint_nil_right + theorem list.disjoint_of_disjoint_append_left_left + theorem list.disjoint_of_disjoint_append_left_right + theorem list.disjoint_of_disjoint_append_right_left + theorem list.disjoint_of_disjoint_append_right_right + theorem list.disjoint_of_disjoint_cons_left + theorem list.disjoint_of_disjoint_cons_right + theorem list.disjoint_of_subset_left + theorem list.disjoint_of_subset_right + theorem list.disjoint_right + theorem list.disjoint_singleton + theorem list.disjoint_take_drop + theorem list.forall_mem_inter_of_forall_left + theorem list.forall_mem_inter_of_forall_right + theorem list.forall_mem_of_forall_mem_union_left + theorem list.forall_mem_of_forall_mem_union_right + theorem list.forall_mem_union + theorem list.inter_cons_of_mem + theorem list.inter_cons_of_not_mem + theorem list.inter_eq_nil_iff_disjoint + theorem list.inter_nil + theorem list.inter_reverse + theorem list.inter_subset_left + theorem list.inter_subset_right + theorem list.mem_bag_inter + theorem list.mem_inter + theorem list.mem_inter_of_mem_of_mem + theorem list.mem_of_mem_inter_left + theorem list.mem_of_mem_inter_right + theorem list.mem_union + theorem list.mem_union_left + theorem list.mem_union_right + theorem list.nil_bag_inter + theorem list.nil_union + theorem list.singleton_disjoint + theorem list.sublist_suffix_of_union + theorem list.subset_inter + theorem list.suffix_union_right + theorem list.union_sublist_append Modified src/data/list/nodup.lean Modified src/data/list/perm.lean 2021-10-24 13:34:52 9dc3b4d feat(topology/algebra/group): continuous div lemmas (#9905) * From the sphere eversion project * There were already some lemmas about `sub`, now they also have multiplicative versions * Add more lemmas about `div` being continuous * Add `continuous_at.inv` * Rename `nhds_translation` -> `nhds_translation_sub`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/topology/algebra/group.lean + theorem continuous.div' - theorem continuous.sub + theorem continuous_at.div' + theorem continuous_at.inv + theorem continuous_div_left' + theorem continuous_div_right' + theorem continuous_on.div' - theorem continuous_on.sub + theorem continuous_within_at.div' - theorem continuous_within_at.sub + theorem filter.tendsto.const_div' + theorem filter.tendsto.div' + theorem filter.tendsto.div_const' - theorem filter.tendsto.sub - theorem nhds_translation + theorem nhds_translation_div Modified src/topology/algebra/uniform_group.lean 2021-10-24 10:50:08 be94800 feat(data/real/nnreal): use the nonneg instance (#9701) ... to show that `nnreal` forms a conditionally complete linear order with bot. This requires some fixes in the order hierarchy. * orders on subtypes are now obtained by lifting `coe` instead of `subtype.val`. This has the nice side benefit that some proofs became simpler. * `subset_conditionally_complete_linear_order` is now reducible ESTIMATED CHANGES Modified src/algebra/order/nonneg.lean Modified src/algebraic_geometry/ringed_space.lean Modified src/data/equiv/denumerable.lean +/- theorem nat.subtype.exists_succ Modified src/data/real/nnreal.lean Modified src/order/basic.lean Modified src/order/conditionally_complete_lattice.lean Modified src/topology/sheaves/sheaf_condition/sites.lean Modified src/topology/sheaves/stalks.lean 2021-10-24 08:26:39 416edee feat(analysis/normed_space/is_R_or_C): add three lemmas on bounds of linear maps over is_R_or_C. (#9827) Adding lemmas `linear_map.bound_of_sphere_bound`, `linear_map.bound_of_ball_bound`, `continuous_linear_map.op_norm_bound_of_ball_bound` as a preparation of a PR on Banach-Alaoglu theorem. ESTIMATED CHANGES Added src/analysis/normed_space/is_R_or_C.lean + theorem continuous_linear_map.op_norm_bound_of_ball_bound + theorem linear_map.bound_of_ball_bound + theorem linear_map.bound_of_sphere_bound 2021-10-24 03:33:39 ecc544e chore(scripts): update nolints.txt (#9923) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-10-24 03:33:38 e836a72 feat(order/galois_connection): add `exists_eq_{l,u}`, tidy up lemmas (#9904) This makes some arguments implicit to `compose` as these are inferrable from the other arguments, and changes `u_l_u_eq_u` and `l_u_l_eq_l` to be applied rather than unapplied, which shortens both the proof and the places where the lemma is used. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/group_theory/submonoid/operations.lean Modified src/model_theory/basic.lean Modified src/order/closure.lean Modified src/order/galois_connection.lean + theorem galois_connection.exists_eq_l + theorem galois_connection.exists_eq_u + theorem galois_connection.l_u_l_eq_l' +/- theorem galois_connection.l_u_l_eq_l + theorem galois_connection.u_l_u_eq_u' +/- theorem galois_connection.u_l_u_eq_u Modified src/ring_theory/ideal/operations.lean 2021-10-24 03:33:37 49c6841 chore(topology): generalize `real.image_Icc` etc (#9784) * add lemmas about `Ici`/`Iic`/`Icc` in `α × β`; * introduce a typeclass for `is_compact_Icc` so that the same lemma works for `ℝ` and `ℝⁿ`; * generalize `real.image_Icc` etc to a conditionally complete linear order (e.g., now it works for `nnreal`, `ennreal`, `ereal`), move these lemmas to the `continuous_on` namespace. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/box_integral/basic.lean Modified src/analysis/box_integral/box/basic.lean Modified src/analysis/box_integral/divergence_theorem.lean Modified src/analysis/box_integral/partition/measure.lean Modified src/data/set/intervals/basic.lean + theorem set.Icc_prod_Icc + theorem set.Icc_prod_eq + theorem set.Ici_prod_Ici + theorem set.Ici_prod_eq + theorem set.Iic_prod_Iic + theorem set.Iic_prod_eq Modified src/measure_theory/integral/interval_integral.lean Modified src/topology/algebra/ordered/compact.lean +/- theorem continuous.exists_forall_ge +/- theorem continuous.exists_forall_le + theorem continuous_on.image_Icc + theorem continuous_on.image_interval + theorem continuous_on.image_interval_eq_Icc +/- theorem is_compact.exists_Inf_image_eq +/- theorem is_compact.exists_Sup_image_eq +/- theorem is_compact.exists_forall_ge +/- theorem is_compact.exists_forall_le - theorem is_compact_Icc +/- theorem is_compact_interval - theorem is_compact_pi_Icc Modified src/topology/algebra/ordered/intermediate_value.lean + theorem continuous_on.surj_on_Icc + theorem continuous_on.surj_on_interval Modified src/topology/instances/real.lean - theorem real.image_Icc - theorem real.image_interval - theorem real.image_interval_eq_Icc - theorem real.interval_subset_image_interval 2021-10-24 01:53:46 55a1160 feat(linear_algebra): add notation for star-linear maps (#9875) This PR adds the notation `M →ₗ⋆[R] N`, `M ≃ₗ⋆[R] N`, etc, to denote star-linear maps/equivalences, i.e. semilinear maps where the ring hom is `star`. A special case of this are conjugate-linear maps when `R = ℂ`. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/data/equiv/module.lean Modified src/topology/algebra/module.lean Added test/semilinear.lean 2021-10-24 00:37:39 5ec1572 feat(nat/choose/central): definition of the central binomial coefficient, and bounds (#9753) Two exponential lower bounds on the central binomial coefficient. ESTIMATED CHANGES Added src/data/nat/choose/central.lean + def nat.central_binom + theorem nat.central_binom_eq_two_mul_choose + theorem nat.central_binom_ne_zero + theorem nat.central_binom_pos + theorem nat.central_binom_zero + theorem nat.choose_le_central_binom + theorem nat.four_pow_le_two_mul_self_mul_central_binom + theorem nat.four_pow_lt_mul_central_binom + theorem nat.succ_mul_central_binom_succ + theorem nat.two_le_central_binom 2021-10-24 00:37:37 d788647 feat(ring_theory): generalize `adjoin_root.power_basis` (#9536) Now we only need that `g` is monic to state that `adjoin_root g` has a power basis. Note that this does not quite imply the result of #9529: this is phrased in terms of `minpoly R (root g)` and the other PR in terms of `g` itself, so I don't have a direct use for the current PR. However, it seems useful enough to have this statement, so I PR'd it anyway. ESTIMATED CHANGES Modified src/data/polynomial/div.lean + theorem polynomial.sum_fin + theorem polynomial.sum_mod_by_monic_coeff Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.is_integral_root' + theorem adjoin_root.mk_eq_mk + theorem adjoin_root.mk_left_inverse + theorem adjoin_root.mk_surjective + def adjoin_root.mod_by_monic_hom + theorem adjoin_root.mod_by_monic_hom_mk + def adjoin_root.power_basis' + def adjoin_root.power_basis_aux' 2021-10-23 22:10:47 928d0e0 docs(data/dlist/instances): Add module docstring (#9912) ESTIMATED CHANGES Modified src/control/traversable/equiv.lean Modified src/data/dlist/instances.lean 2021-10-23 22:10:46 15161e9 docs(data/list/sigma): Add missing def dosctrings, expand module docs (#9909) ESTIMATED CHANGES Modified src/data/list/sigma.lean +/- def list.keys +/- theorem list.keys_cons +/- theorem list.keys_nil +/- def list.nodupkeys 2021-10-23 22:10:45 75b1a94 refactor(analysis/special_functions/exp_log): split into 4 files (#9882) ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/complex/log.lean Added src/analysis/special_functions/exp.lean + theorem complex.continuous_exp + theorem complex.continuous_on_exp + theorem complex.exp_bound_sq + theorem complex.locally_lipschitz_exp + theorem continuous.cexp + theorem continuous.exp + theorem continuous_at.cexp + theorem continuous_at.exp + theorem continuous_on.cexp + theorem continuous_on.exp + theorem continuous_within_at.cexp + theorem continuous_within_at.exp + theorem filter.tendsto.cexp + theorem filter.tendsto.exp + theorem real.coe_comp_exp_order_iso + theorem real.coe_exp_order_iso_apply + theorem real.comap_exp_at_top + theorem real.comap_exp_nhds_within_Ioi_zero + theorem real.continuous_exp + theorem real.continuous_on_exp + def real.exp_order_iso + theorem real.map_exp_at_bot + theorem real.map_exp_at_top + theorem real.range_exp + theorem real.tendsto_comp_exp_at_bot + theorem real.tendsto_comp_exp_at_top + theorem real.tendsto_div_pow_mul_exp_add_at_top + theorem real.tendsto_exp_at_bot + theorem real.tendsto_exp_at_bot_nhds_within + theorem real.tendsto_exp_at_top + theorem real.tendsto_exp_comp_at_top + theorem real.tendsto_exp_div_pow_at_top + theorem real.tendsto_exp_neg_at_top_nhds_0 + theorem real.tendsto_exp_nhds_0_nhds_1 + theorem real.tendsto_mul_exp_add_div_pow_at_top + theorem real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Added src/analysis/special_functions/exp_deriv.lean + theorem complex.deriv_exp + theorem complex.differentiable_at_exp + theorem complex.differentiable_exp + theorem complex.has_deriv_at_exp + theorem complex.has_strict_deriv_at_exp + theorem complex.has_strict_fderiv_at_exp_real + theorem complex.is_open_map_exp + theorem complex.iter_deriv_exp + theorem complex.times_cont_diff_exp + theorem deriv_cexp + theorem deriv_exp + theorem deriv_within_cexp + theorem deriv_within_exp + theorem differentiable.cexp + theorem differentiable.exp + theorem differentiable_at.cexp + theorem differentiable_at.exp + theorem differentiable_on.cexp + theorem differentiable_on.exp + theorem differentiable_within_at.cexp + theorem differentiable_within_at.exp + theorem fderiv_exp + theorem fderiv_within_exp + theorem has_deriv_at.cexp + theorem has_deriv_at.cexp_real + theorem has_deriv_at.exp + theorem has_deriv_within_at.cexp + theorem has_deriv_within_at.cexp_real + theorem has_deriv_within_at.exp + theorem has_fderiv_at.cexp + theorem has_fderiv_at.exp + theorem has_fderiv_within_at.cexp + theorem has_fderiv_within_at.exp + theorem has_strict_deriv_at.cexp + theorem has_strict_deriv_at.cexp_real + theorem has_strict_deriv_at.exp + theorem has_strict_fderiv_at.cexp + theorem has_strict_fderiv_at.exp + theorem real.deriv_exp + theorem real.differentiable_at_exp + theorem real.differentiable_exp + theorem real.has_deriv_at_exp + theorem real.has_strict_deriv_at_exp + theorem real.iter_deriv_exp + theorem real.times_cont_diff_exp + theorem times_cont_diff.cexp + theorem times_cont_diff.exp + theorem times_cont_diff_at.cexp + theorem times_cont_diff_at.exp + theorem times_cont_diff_on.cexp + theorem times_cont_diff_on.exp + theorem times_cont_diff_within_at.cexp + theorem times_cont_diff_within_at.exp Deleted src/analysis/special_functions/exp_log.lean - theorem complex.continuous_exp - theorem complex.continuous_on_exp - theorem complex.deriv_exp - theorem complex.differentiable_at_exp - theorem complex.differentiable_exp - theorem complex.exp_bound_sq - theorem complex.has_deriv_at_exp - theorem complex.has_strict_deriv_at_exp - theorem complex.has_strict_fderiv_at_exp_real - theorem complex.is_open_map_exp - theorem complex.iter_deriv_exp - theorem complex.locally_lipschitz_exp - theorem complex.times_cont_diff_exp - theorem continuous.cexp - theorem continuous.log - theorem continuous_at.cexp - theorem continuous_at.log - theorem continuous_on.cexp - theorem continuous_on.log - theorem continuous_within_at.cexp - theorem continuous_within_at.log - theorem deriv.log - theorem deriv_cexp - theorem deriv_exp - theorem deriv_within.log - theorem deriv_within_cexp - theorem deriv_within_exp - theorem differentiable.cexp - theorem differentiable.exp - theorem differentiable.log - theorem differentiable_at.cexp - theorem differentiable_at.exp - theorem differentiable_at.log - theorem differentiable_on.cexp - theorem differentiable_on.exp - theorem differentiable_on.log - theorem differentiable_within_at.cexp - theorem differentiable_within_at.exp - theorem differentiable_within_at.log - theorem fderiv.log - theorem fderiv_exp - theorem fderiv_within.log - theorem fderiv_within_exp - theorem filter.tendsto.cexp - theorem filter.tendsto.log - theorem has_deriv_at.cexp - theorem has_deriv_at.cexp_real - theorem has_deriv_at.exp - theorem has_deriv_at.log - theorem has_deriv_within_at.cexp - theorem has_deriv_within_at.cexp_real - theorem has_deriv_within_at.exp - theorem has_deriv_within_at.log - theorem has_fderiv_at.cexp - theorem has_fderiv_at.exp - theorem has_fderiv_at.log - theorem has_fderiv_within_at.cexp - theorem has_fderiv_within_at.exp - theorem has_fderiv_within_at.log - theorem has_strict_deriv_at.cexp - theorem has_strict_deriv_at.cexp_real - theorem has_strict_deriv_at.exp - theorem has_strict_deriv_at.log - theorem has_strict_fderiv_at.cexp - theorem has_strict_fderiv_at.exp - theorem has_strict_fderiv_at.log - theorem real.abs_log_sub_add_sum_range_le - theorem real.coe_comp_exp_order_iso - theorem real.coe_exp_order_iso_apply - theorem real.comap_exp_at_top - theorem real.comap_exp_nhds_within_Ioi_zero - theorem real.continuous_at_log - theorem real.continuous_at_log_iff - theorem real.continuous_exp - theorem real.continuous_log' - theorem real.continuous_log - theorem real.continuous_on_exp - theorem real.continuous_on_log - theorem real.deriv_exp - theorem real.deriv_log' - theorem real.deriv_log - theorem real.differentiable_at_exp - theorem real.differentiable_at_log - theorem real.differentiable_at_log_iff - theorem real.differentiable_exp - theorem real.differentiable_on_log - theorem real.eq_one_of_pos_of_log_eq_zero - theorem real.exp_log - theorem real.exp_log_eq_abs - theorem real.exp_log_of_neg - def real.exp_order_iso - theorem real.has_deriv_at_exp - theorem real.has_deriv_at_log - theorem real.has_strict_deriv_at_exp - theorem real.has_strict_deriv_at_log - theorem real.has_strict_deriv_at_log_of_pos - theorem real.has_sum_pow_div_log_of_abs_lt_1 - theorem real.iter_deriv_exp - theorem real.log_abs - theorem real.log_div - theorem real.log_eq_zero - theorem real.log_exp - theorem real.log_inj_on_pos - theorem real.log_inv - theorem real.log_le_log - theorem real.log_lt_log - theorem real.log_lt_log_iff - theorem real.log_mul - theorem real.log_ne_zero_of_pos_of_ne_one - theorem real.log_neg - theorem real.log_neg_eq_log - theorem real.log_neg_iff - theorem real.log_nonneg - theorem real.log_nonneg_iff - theorem real.log_nonpos - theorem real.log_nonpos_iff' - theorem real.log_nonpos_iff - theorem real.log_of_ne_zero - theorem real.log_of_pos - theorem real.log_one - theorem real.log_pos - theorem real.log_pos_iff - theorem real.log_surjective - theorem real.log_zero - theorem real.map_exp_at_bot - theorem real.map_exp_at_top - theorem real.range_exp - theorem real.range_log - theorem real.strict_anti_on_log - theorem real.strict_mono_on_log - theorem real.surj_on_log' - theorem real.surj_on_log - theorem real.tendsto_comp_exp_at_bot - theorem real.tendsto_comp_exp_at_top - theorem real.tendsto_div_pow_mul_exp_add_at_top - theorem real.tendsto_exp_at_bot - theorem real.tendsto_exp_at_bot_nhds_within - theorem real.tendsto_exp_at_top - theorem real.tendsto_exp_comp_at_top - theorem real.tendsto_exp_div_pow_at_top - theorem real.tendsto_exp_neg_at_top_nhds_0 - theorem real.tendsto_exp_nhds_0_nhds_1 - theorem real.tendsto_log_at_top - theorem real.tendsto_log_nhds_within_zero - theorem real.tendsto_mul_exp_add_div_pow_at_top - theorem real.tendsto_mul_log_one_plus_div_at_top - theorem real.tendsto_pow_mul_exp_neg_at_top_nhds_0 - theorem real.times_cont_diff_at_log - theorem real.times_cont_diff_exp - theorem real.times_cont_diff_on_log - theorem times_cont_diff.cexp - theorem times_cont_diff.exp - theorem times_cont_diff.log - theorem times_cont_diff_at.cexp - theorem times_cont_diff_at.exp - theorem times_cont_diff_at.log - theorem times_cont_diff_on.cexp - theorem times_cont_diff_on.exp - theorem times_cont_diff_on.log - theorem times_cont_diff_within_at.cexp - theorem times_cont_diff_within_at.exp - theorem times_cont_diff_within_at.log Added src/analysis/special_functions/log.lean + theorem continuous.log + theorem continuous_at.log + theorem continuous_on.log + theorem continuous_within_at.log + theorem filter.tendsto.log + theorem real.continuous_at_log + theorem real.continuous_at_log_iff + theorem real.continuous_log' + theorem real.continuous_log + theorem real.continuous_on_log + theorem real.eq_one_of_pos_of_log_eq_zero + theorem real.exp_log + theorem real.exp_log_eq_abs + theorem real.exp_log_of_neg + theorem real.log_abs + theorem real.log_div + theorem real.log_eq_zero + theorem real.log_exp + theorem real.log_inj_on_pos + theorem real.log_inv + theorem real.log_le_log + theorem real.log_lt_log + theorem real.log_lt_log_iff + theorem real.log_mul + theorem real.log_ne_zero_of_pos_of_ne_one + theorem real.log_neg + theorem real.log_neg_eq_log + theorem real.log_neg_iff + theorem real.log_nonneg + theorem real.log_nonneg_iff + theorem real.log_nonpos + theorem real.log_nonpos_iff' + theorem real.log_nonpos_iff + theorem real.log_of_ne_zero + theorem real.log_of_pos + theorem real.log_one + theorem real.log_pos + theorem real.log_pos_iff + theorem real.log_surjective + theorem real.log_zero + theorem real.range_log + theorem real.strict_anti_on_log + theorem real.strict_mono_on_log + theorem real.surj_on_log' + theorem real.surj_on_log + theorem real.tendsto_log_at_top + theorem real.tendsto_log_nhds_within_zero Added src/analysis/special_functions/log_deriv.lean + theorem deriv.log + theorem deriv_within.log + theorem differentiable.log + theorem differentiable_at.log + theorem differentiable_on.log + theorem differentiable_within_at.log + theorem fderiv.log + theorem fderiv_within.log + theorem has_deriv_at.log + theorem has_deriv_within_at.log + theorem has_fderiv_at.log + theorem has_fderiv_within_at.log + theorem has_strict_deriv_at.log + theorem has_strict_fderiv_at.log + theorem real.abs_log_sub_add_sum_range_le + theorem real.deriv_log' + theorem real.deriv_log + theorem real.differentiable_at_log + theorem real.differentiable_at_log_iff + theorem real.differentiable_on_log + theorem real.has_deriv_at_log + theorem real.has_strict_deriv_at_log + theorem real.has_strict_deriv_at_log_of_pos + theorem real.has_sum_pow_div_log_of_abs_lt_1 + theorem real.tendsto_mul_log_one_plus_div_at_top + theorem real.times_cont_diff_at_log + theorem real.times_cont_diff_on_log + theorem times_cont_diff.log + theorem times_cont_diff_at.log + theorem times_cont_diff_on.log + theorem times_cont_diff_within_at.log Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/data/complex/exponential_bounds.lean +/- theorem real.exp_one_near_10 +/- theorem real.exp_one_near_20 +/- theorem real.log_two_near_10 Modified test/differentiable.lean Modified test/library_search/exp_le_exp.lean 2021-10-23 22:10:44 59db903 feat(topology/metric_space/lipschitz): continuity on product of continuity in 1 var and Lipschitz continuity in another (#9758) Also apply the new lemma to `continuous_bounded_map`s and add a few lemmas there. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.continuous_coe + theorem bounded_continuous_function.lipschitz_evalx + theorem bounded_continuous_function.uniform_continuous_coe Modified src/topology/metric_space/lipschitz.lean + theorem continuous_on_prod_of_continuous_on_lipschitz_on + theorem continuous_prod_of_continuous_lipschitz + theorem lipschitz_on_with.edist_lt_of_edist_lt_div + theorem lipschitz_with.edist_lt_of_edist_lt_div 2021-10-23 20:04:35 939e8b9 docs(control/traversable/instances): Add module docstring (#9913) ESTIMATED CHANGES Modified src/control/traversable/instances.lean 2021-10-23 20:04:34 14b998b docs(control/bifunctor): Add module and defs docstrings (#9911) ESTIMATED CHANGES Modified src/control/bifunctor.lean +/- def bifunctor.fst +/- def bifunctor.snd 2021-10-23 20:04:33 78252a3 chore(data/real/sqrt): A couple of lemmas about sqrt (#9892) Add a couple of lemmas about `sqrt x / x`. ESTIMATED CHANGES Modified src/data/real/sqrt.lean + theorem real.sqrt_div_self' + theorem real.sqrt_div_self 2021-10-23 20:04:32 3f58dc7 feat(linear_algebra/free_module/pid): golf basis.card_le_card_of_linear_independent_aux (#9813) We go from a 70 lines proof to a one line proof. ESTIMATED CHANGES Modified src/linear_algebra/free_module/pid.lean 2021-10-23 20:04:31 fc3c056 chore(data/real): make more instances on real, nnreal, and ennreal computable (#9806) This makes it possible to talk about the add_monoid structure of nnreal and ennreal without worrying about computability. To make it clear exactly which operations are computable, we remove `noncomputable theory`. ESTIMATED CHANGES Modified src/algebra/order/nonneg.lean Modified src/data/real/basic.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_smul - def ennreal.of_nnreal_hom Modified src/data/real/nnreal.lean - def real.nnabs - def real.to_nnreal 2021-10-23 17:11:13 5c5d818 chore(data/fintype/basic): make units.fintype computable (#9846) This also: * renames `equiv.units_equiv_ne_zero` to `units_equiv_ne_zero`, and resolves the TODO comment about generalization * renames and generalizes `finite_field.card_units` to `fintype.card_units`, and proves it right next to the fintype instance * generalizes some typeclass assumptions in `finite_field.basic` as the linter already required me to tweak them ESTIMATED CHANGES Modified src/data/equiv/ring.lean - theorem equiv.coe_units_equiv_ne_zero - def equiv.units_equiv_ne_zero Modified src/data/fintype/basic.lean +/- theorem fintype.card_subtype_eq' +/- theorem fintype.card_subtype_eq + theorem fintype.card_units + def units_equiv_ne_zero + def units_equiv_prod_subtype Modified src/field_theory/chevalley_warning.lean Modified src/field_theory/finite/basic.lean - theorem finite_field.card_units +/- theorem finite_field.prod_univ_units_id_eq_neg_one +/- theorem finite_field.sum_pow_units Modified src/field_theory/finite/polynomial.lean Modified src/ring_theory/integral_domain.lean 2021-10-23 17:11:12 36f8c1d refactor(order/filter/bases): turn `is_countably_generated` into a class (#9838) ## API changes ### Filters * turn `filter.is_countably_generated` into a class, turn some lemmas into instances; * remove definition/lemmas (all were in the `filter.is_countably_generated` namespace): `generating_set`, `countable_generating_set`, `eq_generate`, `countable_filter_basis`, `filter_basis_filter`, `has_countable_basis`, `exists_countable_infi_principal`, `exists_seq`; * rename `filter.is_countably_generated.exists_antitone_subbasis` to `filter.has_basis.exists_antitone_subbasis`; * rename `filter.is_countably_generated.exists_antitone_basis` to `filter.exists_antitone_basis`; * rename `filter.is_countably_generated.exists_antitone_seq'` to `filter.exists_antitone_seq`; * rename `filter.is_countably_generated.exists_seq` to `filter.exists_antitone_eq_infi_principal`; * rename `filter.is_countably_generated.tendsto_iff_seq_tendsto` to `filter.tendsto_iff_seq_tendsto`; * rename `filter.is_countably_generated.tendsto_of_seq_tendsto` to `filter.tendsto_of_seq_tendsto`; * slightly generalize `is_countably_generated_at_top` and `is_countably_generated_at_bot`; * add `filter.generate_eq_binfi`; ### Topology * merge `is_closed.is_Gδ` with `is_closed.is_Gδ'`; * merge `is_Gδ_set_of_continuous_at_of_countably_generated_uniformity` with `is_Gδ_set_of_continuous_at`; * merge `is_lub.exists_seq_strict_mono_tendsto_of_not_mem'` with `is_lub.exists_seq_strict_mono_tendsto_of_not_mem`; * merge `is_lub.exists_seq_monotone_tendsto'` with `is_lub.exists_seq_monotone_tendsto`; * merge `is_glb.exists_seq_strict_anti_tendsto_of_not_mem'` with `is_glb.exists_seq_strict_anti_tendsto_of_not_mem`; * merge `is_glb.exists_seq_antitone_tendsto'` with `is_glb.exists_seq_antitone_tendsto`; * drop `emetric.first_countable_topology`, turn `uniform_space.first_countable_topology` into an instance; * drop `emetric.second_countable_of_separable`, use `uniform_space.second_countable_of_separable` instead; * drop `metric.compact_iff_seq_compact`, use `uniform_space.compact_iff_seq_compact` instead; * drop `metric.compact_space_iff_seq_compact_space`, use `uniform_space.compact_space_iff_seq_compact_space` instead; ## Measure theory and integrals Various lemmas assume `[is_countably_generated l]` instead of `(h : is_countably_generated l)`. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/calculus/parametric_integral.lean Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/integral_eq_improper.lean +/- theorem measure_theory.ae_cover.integrable_of_integral_norm_tendsto +/- theorem measure_theory.ae_cover.integrable_of_integral_tendsto_of_nonneg_ae +/- theorem measure_theory.ae_cover.integrable_of_lintegral_nnnorm_tendsto' +/- theorem measure_theory.ae_cover.integrable_of_lintegral_nnnorm_tendsto +/- theorem measure_theory.ae_cover.integral_eq_of_tendsto +/- theorem measure_theory.ae_cover.integral_eq_of_tendsto_of_nonneg_ae +/- theorem measure_theory.ae_cover.integral_tendsto_of_countably_generated +/- theorem measure_theory.ae_cover.lintegral_eq_of_tendsto +/- theorem measure_theory.ae_cover.lintegral_tendsto_of_countably_generated +/- theorem measure_theory.ae_cover.supr_lintegral_eq_of_countably_generated Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/order/filter/archimedean.lean - theorem at_bot_countably_generated - theorem at_top_countably_generated_of_archimedean Modified src/order/filter/at_top_bot.lean - theorem filter.is_countably_generated.subseq_tendsto - theorem filter.is_countably_generated.tendsto_iff_seq_tendsto - theorem filter.is_countably_generated.tendsto_of_seq_tendsto - theorem filter.is_countably_generated_at_bot - theorem filter.is_countably_generated_at_top + theorem filter.subseq_tendsto_of_ne_bot + theorem filter.tendsto_iff_seq_tendsto + theorem filter.tendsto_of_seq_tendsto Modified src/order/filter/bases.lean + theorem filter.exists_antitone_basis + theorem filter.exists_antitone_eq_infi_principal + theorem filter.exists_antitone_seq + theorem filter.has_basis.exists_antitone_subbasis - def filter.is_countably_generated.countable_filter_basis - theorem filter.is_countably_generated.countable_generating_set - theorem filter.is_countably_generated.eq_generate - theorem filter.is_countably_generated.exists_antitone_basis - theorem filter.is_countably_generated.exists_antitone_seq' - theorem filter.is_countably_generated.exists_antitone_subbasis - theorem filter.is_countably_generated.exists_countable_infi_principal - theorem filter.is_countably_generated.exists_seq - theorem filter.is_countably_generated.filter_basis_filter - def filter.is_countably_generated.generating_set - theorem filter.is_countably_generated.has_countable_basis - theorem filter.is_countably_generated.inf - theorem filter.is_countably_generated.inf_principal - def filter.is_countably_generated + theorem filter.is_countably_generated_bot +/- theorem filter.is_countably_generated_principal +/- theorem filter.is_countably_generated_seq + theorem filter.is_countably_generated_top Modified src/order/filter/basic.lean + theorem filter.generate_eq_binfi Modified src/topology/G_delta.lean +/- theorem is_Gδ_set_of_continuous_at - theorem is_Gδ_set_of_continuous_at_of_countably_generated_uniformity - theorem is_closed.is_Gδ' +/- theorem is_closed.is_Gδ Modified src/topology/algebra/ordered/basic.lean - theorem is_glb.exists_seq_antitone_tendsto' +/- theorem is_glb.exists_seq_antitone_tendsto - theorem is_glb.exists_seq_strict_anti_tendsto_of_not_mem' +/- theorem is_glb.exists_seq_strict_anti_tendsto_of_not_mem - theorem is_lub.exists_seq_monotone_tendsto' +/- theorem is_lub.exists_seq_monotone_tendsto - theorem is_lub.exists_seq_strict_mono_tendsto_of_not_mem' +/- theorem is_lub.exists_seq_strict_mono_tendsto_of_not_mem Modified src/topology/bases.lean - theorem topological_space.is_countably_generated_nhds - theorem topological_space.is_countably_generated_nhds_within Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean - theorem emetric.second_countable_of_separable - theorem emetric.uniformity_has_countable_basis Modified src/topology/sequences.lean +/- theorem lebesgue_number_lemma_seq - theorem metric.compact_iff_seq_compact - theorem metric.compact_space_iff_seq_compact_space +/- theorem uniform_space.compact_space_iff_seq_compact_space Modified src/topology/uniform_space/basic.lean +/- theorem uniform_space.has_seq_basis Modified src/topology/uniform_space/cauchy.lean 2021-10-23 17:11:11 d0d1520 chore(ring_theory/derivation): add `leibniz_pow` and `leibniz_inv` (#9837) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + theorem derivation.leibniz_inv + theorem derivation.leibniz_inv_of + theorem derivation.leibniz_of_mul_eq_one + theorem derivation.leibniz_pow 2021-10-23 17:11:09 1ebea89 feat(field_theory/finite/galois_field): finite fields with the same cardinality are isomorphic (#9834) Added the isomorphism of finite fields of the same cardinality. ESTIMATED CHANGES Modified src/field_theory/finite/galois_field.lean + def finite_field.alg_equiv_of_card_eq + def finite_field.ring_equiv_of_card_eq 2021-10-23 17:11:08 0411b1e feat(ring_theory/ideal): `simp` lemmas for `ideal.quotient.mk` + `algebra_map` (#9829) Some `simp` lemmas I needed for combining `algebra_map` with `ideal.quotient.mk`. This also allowed me to golf two existing proofs. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.quotient.algebra_map_eq + theorem ideal.quotient.mk_algebra_map + theorem ideal.quotient.mk_comp_algebra_map + theorem ideal.quotient_map_algebra_map 2021-10-23 17:11:07 44ab28e refactor(linear_algebra/free_module/finite): move to a new folder (#9821) We move `linear_algebra/free_module/finite` to `linear_algebra/free_module/finite/basic`. We also move two lemmas from `linear_algebra/free_module/finite/basic` to `linear_algebra/free_module/basic`, since they don't need any finiteness assumption on the modules. ESTIMATED CHANGES Modified src/linear_algebra/charpoly/basic.lean Modified src/linear_algebra/free_module/basic.lean Renamed src/linear_algebra/free_module/finite.lean to src/linear_algebra/free_module/finite/basic.lean 2021-10-23 14:30:44 a58ae54 chore(algebra/big_operators/finprod): remove outdated todo (#9900) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean 2021-10-23 14:30:43 bd81d55 feat(data/finsupp): add lemmas about `single` (#9894) These are subset versions of the four lemmas related to `support_eq_singleton`. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.card_support_le_one' + theorem finsupp.card_support_le_one + theorem finsupp.support_subset_singleton' + theorem finsupp.support_subset_singleton 2021-10-23 14:30:42 95535a3 refactor(ring_theory/unique_factorization_domain): golf some factor_set lemmas (#9889) ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem associates.factor_set.prod_eq_zero_iff + theorem associates.factor_set.unique +/- theorem associates.factors'_cong +/- theorem associates.prod_factors 2021-10-23 14:30:41 e1c0dbc feat(set_theory/cardinal): add `add_le_omega` (#9887) * simplify `c₁ + c₂ ≤ ω` to `c₁ ≤ ω ∧ c₂ ≤ ω`; * simplify `ω + ω` to `ω`; * simplify `#s ≤ ω` to `s.countable`; * simplify `(s ∪ t).countable` and `(insert a s).countable`. Motivated by lemmas from flypitch. ESTIMATED CHANGES Modified src/data/real/cardinality.lean Modified src/data/set/countable.lean + theorem set.countable_insert + theorem set.countable_union Modified src/set_theory/cardinal.lean + theorem cardinal.add_le_omega - theorem cardinal.countable_iff + theorem cardinal.mk_set_le_omega + theorem cardinal.mk_union_le_omega + theorem cardinal.omega_add_omega + theorem cardinal.omega_mul_omega Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.succ_omega Modified src/set_theory/cofinality.lean + theorem cardinal.is_regular.ord_pos + theorem cardinal.is_regular.pos 2021-10-23 14:30:40 82896b5 feat(topology): add a few lemmas (#9885) Add `is_topological_basis.is_open_map_iff`, `is_topological_basis.exists_nonempty_subset`, and `interior_{s,b,}Inter_subset`. Motivated by lemmas from `flypitch`. ESTIMATED CHANGES Modified src/topology/bases.lean + theorem topological_space.is_topological_basis.exists_nonempty_subset + theorem topological_space.is_topological_basis.is_open_map_iff Modified src/topology/basic.lean + theorem interior_Inter_subset + theorem interior_bInter_subset + theorem interior_sInter_subset 2021-10-23 14:30:39 1e0661c feat(ring_theory/noetherian): generalize to semiring (#9881) We generalize some of the results in `ring_theory/noetherian` to `semiring`. - [x] depends on: #9860 ESTIMATED CHANGES Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/finiteness.lean +/- theorem module.finite.of_injective Modified src/ring_theory/noetherian.lean +/- theorem fg_of_injective + theorem fg_of_ker_bot +/- theorem is_noetherian_of_injective + theorem is_noetherian_of_ker_bot + theorem submodule.fg_of_fg_map_injective +/- theorem submodule.fg_top 2021-10-23 14:30:38 bb71667 feat(topology/instances/irrational): new file (#9872) * move `is_Gδ_irrational` etc to a new file `topology.instances.irrational`; * prove that a small ball around an irrational number is disjoint with the set of rational numbers with bounded denominators; * prove `order_topology`, `no_top_order`, `no_bot_order`, and `densely_ordered` instances for `{x // irrational x}`. ESTIMATED CHANGES Modified src/number_theory/liouville/residual.lean - theorem dense_irrational - theorem eventually_residual_irrational - theorem is_Gδ_irrational Added src/topology/instances/irrational.lean + theorem dense_irrational + theorem eventually_residual_irrational + theorem irrational.eventually_forall_le_dist_cast_div + theorem irrational.eventually_forall_le_dist_cast_div_of_denom_le + theorem irrational.eventually_forall_le_dist_cast_rat_of_denom_le + theorem is_Gδ_irrational 2021-10-23 14:30:37 b877f6b chore(analysis/normed/group): generalize `cauchy_seq.add` (#9868) Also golf a few proofs. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean - theorem cauchy_seq.add +/- theorem norm_eq_zero +/- theorem norm_le_zero_iff +/- theorem norm_pos_iff Modified src/topology/algebra/uniform_group.lean + theorem cauchy_seq.add 2021-10-23 14:30:36 29c7266 refactor(linear_algebra/matrix/nonsingular_inverse): use ring.inverse in matrix.has_inv (#9863) This makes some of the proofs a little shorter. Independently, this removes an assumption from `matrix.transpose_nonsing_inv`. This adds the missing `units.is_unit_units_mul` to complement the existing `units.is_unit_mul_units`, even though it ultimately was not used in this PR. This removes the def `matrix.nonsing_inv` in favor of just using `has_inv.inv` directly. Having two ways to spell the same thing isn't helpful here. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/group/units.lean + theorem units.is_unit_units_mul Modified src/algebra/ring/basic.lean + theorem ring.mul_inverse_rev Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/matrix/fpow.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean +/- theorem matrix.inv_def +/- theorem matrix.transpose_nonsing_inv 2021-10-23 14:30:35 2a1f454 refactor(algebra/algebra): choose `coe` as the normal form for the map `alg_equiv → ring_equiv` (#9848) We never chose a `simp`-normal form for this map, resulting in some duplicate work and annoying `show _ = _, from rfl` when rewriting. I picked this choice because it matches the convention for the map `alg_hom → ring_hom`. Very surprisingly, there were absolutely no CI failures due to this choice. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem alg_equiv.coe_ring_equiv' + theorem alg_equiv.to_ring_equiv_eq_coe 2021-10-23 14:30:34 5f11361 refactor(algebra/continued_fractions): remove use of open ... as (#9847) Lean 4 doesn't support the use of `open ... as ...`, so let's get rid of the few uses from mathlib rather than automating it in mathport. ESTIMATED CHANGES Modified src/algebra/continued_fractions/basic.lean +/- theorem continued_fraction.coe_to_generalized_continued_fraction +/- theorem continued_fraction.coe_to_simple_continued_fraction +/- def continued_fraction.of_integer +/- theorem generalized_continued_fraction.coe_to_generalized_continued_fraction +/- def generalized_continued_fraction.continuants +/- def generalized_continued_fraction.continuants_aux +/- def generalized_continued_fraction.convergents' +/- def generalized_continued_fraction.convergents'_aux +/- def generalized_continued_fraction.convergents +/- def generalized_continued_fraction.denominators +/- def generalized_continued_fraction.next_continuants +/- def generalized_continued_fraction.numerators +/- def generalized_continued_fraction.of_integer +/- def generalized_continued_fraction.pair.map +/- def generalized_continued_fraction.partial_denominators +/- def generalized_continued_fraction.partial_numerators +/- def generalized_continued_fraction.terminated_at +/- def generalized_continued_fraction.terminates +/- theorem simple_continued_fraction.coe_to_generalized_continued_fraction +/- def simple_continued_fraction.of_integer Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean +/- theorem generalized_continued_fraction.of_convergents_eq_convergents' Modified src/algebra/continued_fractions/computation/approximations.lean +/- theorem generalized_continued_fraction.abs_sub_convergents_le +/- theorem generalized_continued_fraction.determinant +/- theorem generalized_continued_fraction.determinant_aux +/- theorem generalized_continued_fraction.fib_le_of_continuants_aux_b +/- theorem generalized_continued_fraction.of_denom_mono +/- theorem generalized_continued_fraction.of_part_num_eq_one +/- theorem generalized_continued_fraction.of_part_num_eq_one_and_exists_int_part_denom_eq +/- theorem generalized_continued_fraction.succ_nth_fib_le_of_nth_denom +/- theorem generalized_continued_fraction.zero_le_of_continuants_aux_b +/- theorem generalized_continued_fraction.zero_le_of_denom Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean +/- theorem generalized_continued_fraction.of_correctness_at_top_of_terminates +/- theorem generalized_continued_fraction.of_correctness_of_terminated_at +/- theorem generalized_continued_fraction.of_correctness_of_terminates Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean +/- theorem generalized_continued_fraction.coe_of_h_rat_eq +/- theorem generalized_continued_fraction.coe_of_rat_eq +/- theorem generalized_continued_fraction.coe_of_s_rat_eq +/- theorem generalized_continued_fraction.exists_rat_eq_nth_convergent +/- theorem generalized_continued_fraction.exists_rat_eq_nth_denominator +/- theorem generalized_continued_fraction.exists_rat_eq_nth_numerator +/- theorem generalized_continued_fraction.exists_rat_eq_of_terminates +/- theorem generalized_continued_fraction.terminates_iff_rat +/- theorem generalized_continued_fraction.terminates_of_rat Modified src/algebra/continued_fractions/computation/translations.lean +/- theorem generalized_continued_fraction.int_fract_pair.exists_succ_nth_stream_of_gcf_of_nth_eq_some +/- theorem generalized_continued_fraction.of_h_eq_floor +/- theorem generalized_continued_fraction.of_h_eq_int_fract_pair_seq1_fst_b Modified src/algebra/continued_fractions/continuants_recurrence.lean +/- theorem generalized_continued_fraction.continuants_aux_recurrence +/- theorem generalized_continued_fraction.continuants_recurrence +/- theorem generalized_continued_fraction.continuants_recurrence_aux +/- theorem generalized_continued_fraction.denominators_recurrence +/- theorem generalized_continued_fraction.numerators_recurrence Modified src/algebra/continued_fractions/convergents_equiv.lean +/- theorem continued_fraction.convergents_eq_convergents' +/- def generalized_continued_fraction.squash_gcf +/- def generalized_continued_fraction.squash_seq +/- theorem generalized_continued_fraction.squash_seq_nth_of_not_terminated Modified src/algebra/continued_fractions/terminated_stable.lean +/- theorem generalized_continued_fraction.convergents'_aux_stable_of_terminated +/- theorem generalized_continued_fraction.convergents'_aux_stable_step_of_terminated Modified src/algebra/continued_fractions/translations.lean +/- theorem generalized_continued_fraction.first_continuant_eq +/- theorem generalized_continued_fraction.first_denominator_eq +/- theorem generalized_continued_fraction.first_numerator_eq +/- theorem generalized_continued_fraction.part_denom_eq_s_b +/- theorem generalized_continued_fraction.part_num_eq_s_a +/- theorem generalized_continued_fraction.second_continuant_aux_eq +/- theorem generalized_continued_fraction.zeroth_convergent'_aux_eq_zero 2021-10-23 13:13:59 7b979aa move(algebra/order/*): More algebraic order files in the correct place (#9899) `algebra.module.ordered` and `algebra.algebra.ordered` were really continuations of `algebra.order.smul` (the first being quite literally the same with additive inverses), so it makes sense to bring them closer. `algebra.floor` and `algebra.archimedean` also perfectly qualify for the subfolder. ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/basic.lean Renamed src/algebra/algebra/ordered.lean to src/algebra/order/algebra.lean Renamed src/algebra/archimedean.lean to src/algebra/order/archimedean.lean Renamed src/algebra/floor.lean to src/algebra/order/floor.lean Renamed src/algebra/module/ordered.lean to src/algebra/order/module.lean Modified src/algebra/order/nonneg.lean Modified src/algebra/periodic.lean Modified src/algebra/star/chsh.lean Modified src/analysis/convex/basic.lean Modified src/data/complex/module.lean Modified src/data/rat/floor.lean Modified src/data/real/basic.lean Modified src/data/real/pointwise.lean Modified src/group_theory/archimedean.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/order/filter/archimedean.lean Modified src/topology/algebra/floor_ring.lean 2021-10-23 08:22:49 eb1e037 doc(algebra/ring): correct docs for surjective pushforwards (#9896) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean 2021-10-23 08:22:48 a75f762 feat(ring_theory/localization): generalize `exist_integer_multiples` to finite families (#9859) This PR shows we can clear denominators of finitely-indexed collections of fractions (i.e. elements of `S` where `is_localization M S`), with the existing result about finite sets of fractions as a special case. ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem is_localization.exist_integer_multiples + theorem is_localization.exist_integer_multiples_of_fintype 2021-10-23 08:22:48 294ce35 fix(algebra/module/submodule): fix incorrectly generalized arguments to `smul_mem_iff'` and `smul_of_tower_mem` (#9851) These put unnecessary requirements on `S`. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean +/- theorem submodule.coe_smul_of_tower +/- theorem submodule.smul_mem_iff' +/- theorem submodule.smul_of_tower_mem Modified src/group_theory/group_action/sub_mul_action.lean +/- theorem sub_mul_action.smul_mem_iff' +/- theorem sub_mul_action.smul_of_tower_mem Modified src/topology/algebra/module.lean 2021-10-23 08:22:47 2cbd4ba feat(group_theory/index): `relindex_dvd_of_le_left` (#9835) If `H ≤ K`, then `K.relindex L ∣ H.relindex L`. Caution: `relindex_dvd_of_le_right` is not true. `relindex_le_of_le_right` is true, but it is harder to prove, and harder to state (because you have to be careful about `relindex = 0`). ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.inf_relindex_left + theorem subgroup.inf_relindex_right + theorem subgroup.relindex_dvd_of_le_left 2021-10-23 05:53:41 183b8c8 refactor(data/list/defs): move defs about rb_map (#9844) There is nothing intrinsically `meta` about `rb_map`, but in practice in mathlib we prove nothing about it and only use it in tactic infrastructure. This PR moves a definition involving `rb_map` out of `data.list.defs` and into `meta.rb_map` (where many others already exist). (motivated by mathport; rb_map is of course disappearing/changing, so better to quarantine this stuff off with other things that aren't being automatically ported) `rbmap` is not related to `rb_map`. It can likely be moved from core to mathlib entirely. ESTIMATED CHANGES Modified src/data/list/defs.lean +/- def list.to_rbmap Modified src/meta/rb_map.lean 2021-10-23 02:55:56 45ba2ad chore(scripts): update nolints.txt (#9895) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-10-22 22:06:02 7690e0a chore(order/complete_lattice): add `(supr|infi)_option_elim` (#9886) Motivated by `supr_option'` and `infi_option'` from `flypitch`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem infi_option_elim + theorem supr_option_elim 2021-10-22 20:15:57 72c20fa feat(analysis/special_functions/exp_log): Classify when log is zero (#9815) Classify when the real `log` function is zero. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem real.log_eq_zero 2021-10-22 15:58:28 d23b833 chore(data/set/lattice): add `@[simp]` to a few lemmas (#9883) Add `@[simp]` to `Union_subset_iff`, `subset_Inter_iff`, `sUnion_subset_iff`, and `subset_sInter_iff` (new lemma). ESTIMATED CHANGES Modified src/data/set/lattice.lean +/- theorem set.Union_subset_iff +/- theorem set.sUnion_subset_iff +/- theorem set.subset_Inter_iff + theorem set.subset_sInter_iff 2021-10-22 15:58:26 3d237db feat(linear_algebra/matrix/determinant): det_conj_transpose (#9879) Also: * Makes the arguments of `ring_hom.map_det` and `alg_hom.map_det` explicit, and removes them from the `matrix` namespace to enable dot notation. * Adds `ring_equiv.map_det` and `alg_equiv.map_det` ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean + theorem alg_equiv.map_det + theorem alg_hom.map_det - theorem matrix.alg_hom.map_det + theorem matrix.det_conj_transpose - theorem matrix.ring_hom.map_det + theorem ring_equiv.map_det + theorem ring_hom.map_det Modified src/ring_theory/trace.lean 2021-10-22 15:58:25 20bb02f feat(data/fintype/basic): `fintype.card_pos` (#9876) Two lemmas `fintype.card_pos` and `fintype.card_ne_zero` that are often easier to use than `fintype.card_pos_iff`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.card_ne_zero + theorem fintype.card_pos 2021-10-22 15:58:24 22c7474 feat(algebra/module/basic): a few more instances (#9871) * generalize `is_scalar_tower.rat`; * add `smul_comm_class.rat` and `smul_comm_class.rat'`; * golf a few proofs. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean Modified src/algebra/module/basic.lean 2021-10-22 15:58:23 87ea780 chore(set_theory/cardinal): use `protected` instead of `private` (#9869) Also use `mk_congr`. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean +/- theorem cardinal.mk_emptyc 2021-10-22 15:58:21 d8b9259 feat(*): add various divisibility-related lemmas (#9866) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.mk_ne_zero + theorem irreducible.dvd_irreducible_iff_associated + theorem prime.dvd_prime_iff_associated Modified src/algebra/ring/basic.lean + theorem is_unit.neg_iff Modified src/ring_theory/int/basic.lean + theorem int.eq_of_associated_of_nonneg + theorem int.nonneg_iff_normalize_eq_self + theorem int.nonneg_of_normalize_eq_self Modified src/ring_theory/prime.lean + theorem prime.abs + theorem prime.neg 2021-10-22 15:58:20 2955306 feat(ring_theory/finiteness): generalize module.finite to noncommutative setting (#9860) An almost for free generalization of `module.finite` to `semiring`. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean +/- def algebra.finite_presentation +/- theorem module.finite.of_injective +/- theorem module.finite.of_restrict_scalars_finite +/- theorem module.finite.trans +/- theorem module.finite_def 2021-10-22 15:58:19 0a7f448 chore(group_theory/congruence): lower priority for `con.quotient.decidable_eq` (#9826) I was debugging some slow typeclass searches, and it turns out (`add_`)`con.quotient.decidable_eq` wants to be applied to all quotient types, causing a search for a `has_mul` instance before the elaborator can try unifying the `con.to_setoid` relation with the quotient type's relation, so e.g. `decidable_eq (multiset α)` first tries going all the way up to searching for a `linear_ordered_normed_etc_field (list α)` before even trying `multiset.decidable_eq`. Another approach would be to make `multiset` and/or `con.quotient` irreducible, but that would require a lot more work to ensure we don't break the irreducibility barrier. ESTIMATED CHANGES Modified src/group_theory/congruence.lean 2021-10-22 15:58:17 03ba4cc feat(algebra/floor): Floor semirings (#9592) A floor semiring is a semiring equipped with a `floor` and a `ceil` function. ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem floor_semiring_unique + theorem int.ceil_to_nat + theorem int.floor_nonpos + theorem int.floor_to_nat +/- def nat.ceil +/- theorem nat.ceil_eq_zero +/- theorem nat.ceil_le +/- theorem nat.ceil_mono +/- def nat.floor + theorem nat.floor_eq_iff + theorem nat.floor_eq_on_Ico' + theorem nat.floor_eq_on_Ico + theorem nat.floor_eq_zero - theorem nat.floor_eq_zero_iff +/- theorem nat.floor_le + theorem nat.floor_lt' + theorem nat.floor_lt - theorem nat.floor_lt_iff +/- theorem nat.floor_mono + theorem nat.floor_one + theorem nat.gc_ceil_coe + theorem nat.le_floor + theorem nat.le_floor_iff' +/- theorem nat.le_floor_iff - theorem nat.le_floor_of_le +/- theorem nat.lt_ceil +/- theorem nat.lt_floor_add_one + theorem nat.lt_of_floor_lt + theorem nat.lt_succ_floor +/- theorem nat.sub_one_lt_floor Modified src/data/int/basic.lean + theorem int.le_to_nat_iff Modified src/topology/metric_space/gromov_hausdorff.lean 2021-10-22 13:16:18 bee8d4a chore(order/filter/basic): golf a proof (#9874) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean Modified src/data/set/lattice.lean + theorem set.Inter_coe_set + theorem set.Inter_subtype + theorem set.Union_coe_set +/- theorem set.Union_subtype Modified src/measure_theory/measure/measure_space_def.lean Modified src/order/filter/basic.lean +/- theorem filter.mem_infi_finset Modified src/topology/metric_space/hausdorff_dimension.lean Modified src/topology/paracompact.lean 2021-10-22 13:16:16 b812fb9 refactor(ring_theory/ideal): split off `quotient.lean` (#9850) Both `ring_theory/ideal/basic.lean` and `ring_theory/ideal/operations.lean` were starting to get a bit long, so I split off the definition of `ideal.quotient` and the results that had no further dependencies. I also went through all the imports for files depending on either `ideal/basic.lean` or `ideal/operations.lean` to check whether they shouldn't depend on `ideal/quotient.lean` instead. ESTIMATED CHANGES Modified src/algebra/ring_quot.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/linear_algebra/smodeq.lean Modified src/number_theory/basic.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/basic.lean - theorem ideal.map_pi - def ideal.quot_equiv_of_eq - theorem ideal.quot_equiv_of_eq_mk - theorem ideal.quotient.eq_zero_iff_mem - theorem ideal.quotient.exists_inv - def ideal.quotient.factor - theorem ideal.quotient.factor_comp_mk - theorem ideal.quotient.factor_mk - theorem ideal.quotient.is_domain_iff_prime - def ideal.quotient.lift - theorem ideal.quotient.lift_mk - theorem ideal.quotient.maximal_ideal_iff_is_field_quotient - theorem ideal.quotient.maximal_of_is_field - def ideal.quotient.mk - theorem ideal.quotient.mk_eq_mk - theorem ideal.quotient.mk_surjective - theorem ideal.quotient.quotient_ring_saturate - theorem ideal.quotient.ring_hom_ext - theorem ideal.quotient.zero_eq_one_iff - theorem ideal.quotient.zero_ne_one_iff - def ideal.quotient Modified src/ring_theory/ideal/local_ring.lean Modified src/ring_theory/ideal/operations.lean - theorem ideal.exists_sub_mem - theorem ideal.exists_sub_one_mem_and_mem - def ideal.quotient_inf_to_pi_quotient - theorem ideal.quotient_inf_to_pi_quotient_bijective Added src/ring_theory/ideal/quotient.lean + theorem ideal.exists_sub_mem + theorem ideal.exists_sub_one_mem_and_mem + theorem ideal.map_pi + def ideal.quot_equiv_of_eq + theorem ideal.quot_equiv_of_eq_mk + theorem ideal.quotient.eq_zero_iff_mem + theorem ideal.quotient.exists_inv + def ideal.quotient.factor + theorem ideal.quotient.factor_comp_mk + theorem ideal.quotient.factor_mk + theorem ideal.quotient.is_domain_iff_prime + def ideal.quotient.lift + theorem ideal.quotient.lift_mk + theorem ideal.quotient.maximal_ideal_iff_is_field_quotient + theorem ideal.quotient.maximal_of_is_field + def ideal.quotient.mk + theorem ideal.quotient.mk_eq_mk + theorem ideal.quotient.mk_surjective + theorem ideal.quotient.quotient_ring_saturate + theorem ideal.quotient.ring_hom_ext + theorem ideal.quotient.zero_eq_one_iff + theorem ideal.quotient.zero_ne_one_iff + def ideal.quotient + def ideal.quotient_inf_to_pi_quotient + theorem ideal.quotient_inf_to_pi_quotient_bijective Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/valuation/basic.lean Modified src/topology/algebra/nonarchimedean/adic_topology.lean Modified src/topology/algebra/ring.lean 2021-10-22 13:16:15 e6c516d feat(topology/maps): Characterize open/closed maps in terms of images of interior/closure (#9814) Also provide the docstring for `inducing`. ESTIMATED CHANGES Modified src/topology/maps.lean + theorem is_closed_map.closure_image_subset + theorem is_closed_map_iff_closure_image + theorem is_open_map_iff_interior 2021-10-22 10:49:49 43cd79f feat(data/finset/basic): Simple `finset.erase` lemmas (#9878) `finset.erase.singleton` and `finset.(map/image)_erase` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.erase_singleton + theorem finset.image_erase + theorem finset.map_erase 2021-10-22 06:47:53 76212e6 feat(measure_theory/integral/set_integral): integral of a `is_R_or_C` function equals integral of real part + integral of imaginary part (#9735) ESTIMATED CHANGES Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.norm_of_real Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.of_real + theorem measure_theory.integrable.re_im_iff Modified src/measure_theory/function/lp_space.lean + theorem continuous_linear_map.comp_mem_ℒp' + theorem continuous_linear_map.comp_mem_ℒp + theorem lipschitz_with.comp_mem_ℒp + theorem measure_theory.mem_ℒp.of_comp_antilipschitz_with + theorem measure_theory.mem_ℒp.of_real + theorem measure_theory.mem_ℒp_re_im_iff Modified src/measure_theory/function/special_functions.lean + theorem ae_measurable_of_re_im + theorem is_R_or_C.measurable_of_real + theorem measurable_of_re_im Modified src/measure_theory/integral/set_integral.lean + theorem integral_coe_re_add_coe_im + theorem integral_re_add_im + theorem set_integral_re_add_im Modified test/measurability.lean 2021-10-22 01:15:49 c4c71d2 feat(topology): define class `[noncompact_space]` (#9839) ESTIMATED CHANGES Modified src/topology/alexandroff.lean +/- theorem alexandroff.dense_embedding_coe +/- theorem alexandroff.dense_range_coe Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean + theorem metric.diam_univ_of_noncompact + theorem metric.ediam_univ_eq_top_iff_noncompact + theorem metric.ediam_univ_of_noncompact Modified src/topology/subset_properties.lean + theorem filter.cocompact_ne_bot_iff - theorem filter.cocompact_ne_bot_tfae +/- theorem filter.coprod_cocompact + theorem noncompact_space_of_ne_bot + theorem not_compact_space_iff + theorem prod.noncompact_space_iff 2021-10-21 23:04:20 6f837a6 feat(data/polynomial): generalize and rename `polynomial.normalize_monic` (#9853) This PR renames `polynomial.normalize_monic` to `polynomial.monic.normalize_eq_self` (more dot notation!) and generalizes it from fields to `normalization_monoid`s. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.monic.normalize_eq_self - theorem polynomial.normalize_monic 2021-10-21 23:04:19 16a9031 refactor(data/complex/*): replace `complex.conj` and `is_R_or_C.conj` with star (#9640) This PR replaces `complex.conj` and `is_R_or_C.conj` by the star operation defined in `algebra/star`. Both of these are replaced with `star_ring_aut`, which is also made available under the notation `conj` defined in the locale `complex_conjugate`. This effectively also upgrades conj from a `ring_hom` to a `ring_aut`. Fixes #9421 ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem star_ring_aut_apply + theorem star_ring_aut_self_apply Modified src/analysis/complex/basic.lean +/- theorem complex.conj_cle_apply +/- theorem complex.continuous_conj - theorem is_R_or_C.conj_to_complex Modified src/analysis/complex/circle.lean +/- theorem coe_inv_circle_eq_conj Modified src/analysis/complex/conformal.lean Modified src/analysis/complex/isometry.lean Modified src/analysis/complex/real_deriv.lean Modified src/analysis/fourier.lean +/- theorem fourier_neg Modified src/analysis/inner_product_space/basic.lean +/- theorem real_inner_comm Modified src/analysis/inner_product_space/dual.lean Modified src/analysis/inner_product_space/pi_L2.lean Modified src/analysis/inner_product_space/projection.lean Modified src/data/complex/basic.lean - def complex.conj - theorem complex.conj_bijective - theorem complex.conj_conj - theorem complex.conj_eq_zero - theorem complex.conj_inj - theorem complex.conj_involutive +/- theorem complex.conj_of_real - theorem complex.conj_one - theorem complex.conj_sub Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.abs_sq_re_add_conj' +/- theorem is_R_or_C.abs_sq_re_add_conj - theorem is_R_or_C.conj_bijective - theorem is_R_or_C.conj_conj - theorem is_R_or_C.conj_div - theorem is_R_or_C.conj_eq_zero - theorem is_R_or_C.conj_inj - theorem is_R_or_C.conj_inv - theorem is_R_or_C.conj_involutive +/- theorem is_R_or_C.conj_mul_eq_norm_sq_left +/- theorem is_R_or_C.conj_to_real +/- def is_R_or_C.conj_to_ring_equiv - theorem is_R_or_C.ring_equiv_apply Modified src/data/complex/module.lean Modified src/linear_algebra/clifford_algebra/equivs.lean +/- theorem clifford_algebra_complex.of_complex_conj Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/integral/set_integral.lean +/- theorem integral_conj 2021-10-21 20:06:24 912039d feat(algebra/group_power/lemmas): Positivity of an odd/even power (#9796) This adds `odd.pow_nonneg` and co and `pow_right_comm`. This also deletes `pow_odd_nonneg` and `pow_odd_pos` as they are special cases of `pow_nonneg` and `pow_pos`. To make dot notation work, this renames `(pow/fpow)_(odd/even)_(nonneg/nonpos/pos/neg/abs)` to `(odd/even).(pow/fpow)_(nonneg/nonpos/pos/neg/abs)` ESTIMATED CHANGES Modified src/algebra/field_power.lean - theorem abs_fpow_even + theorem even.abs_fpow + theorem even.fpow_abs + theorem even.fpow_neg + theorem even.fpow_nonneg + theorem even.fpow_pos +/- theorem fpow_bit0_abs - theorem fpow_even_abs - theorem fpow_even_neg - theorem fpow_even_nonneg - theorem fpow_even_pos - theorem fpow_odd_neg - theorem fpow_odd_nonneg - theorem fpow_odd_nonpos - theorem fpow_odd_pos + theorem odd.fpow_neg + theorem odd.fpow_nonneg + theorem odd.fpow_nonpos + theorem odd.fpow_pos Modified src/algebra/group_power/basic.lean + theorem pow_right_comm Modified src/algebra/group_power/lemmas.lean + theorem even.pow_abs + theorem even.pow_nonneg + theorem even.pow_pos + theorem even.pow_pos_iff + theorem odd.pow_neg + theorem odd.pow_neg_iff + theorem odd.pow_nonneg_iff + theorem odd.pow_nonpos + theorem odd.pow_nonpos_iff + theorem odd.pow_pos_iff +/- theorem pow_bit0_abs - theorem pow_even_abs - theorem pow_even_nonneg - theorem pow_even_pos - theorem pow_odd_neg - theorem pow_odd_nonneg - theorem pow_odd_nonpos - theorem pow_odd_pos 2021-10-21 18:28:20 15d4e5f refactor(data/real/ennreal): remove sub lemmas (#9857) * Remove all lemmas about subtraction on `ennreal` that are special cases of `has_ordered_sub` lemmas. * [This](https://github.com/leanprover-community/mathlib/blob/fe5ddaf42c5d61ecc740e815d63ac38f5e94a2e8/src/data/real/ennreal.lean#L734-L795) gives a list of renamings. * The lemmas that have a `@[simp]` attribute will be done in a separate PR ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/box_integral/integrability.lean Modified src/data/real/ennreal.lean - theorem ennreal.le_sub_add_self - theorem ennreal.lt_sub_comm - theorem ennreal.lt_sub_iff_add_lt +/- theorem ennreal.mul_sub - theorem ennreal.sub_add_self_eq_max - theorem ennreal.sub_le_self - theorem ennreal.sub_le_sub - theorem ennreal.sub_le_sub_add_sub - theorem ennreal.sub_self - theorem ennreal.sub_zero - theorem ennreal.zero_sub Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/content.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/regular.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/contracting.lean 2021-10-21 18:28:19 5b72c4e feat(linear_algebra/quotient): `S.restrict_scalars.quotient` is `S.quotient` (#9535) This PR adds a more general module instance on submodule quotients, in order to show that `(S.restrict_scalars R).quotient` is equivalent to `S.quotient`. If we decide this instance is not a good idea, I can write it instead as `S.quotient.restrict_scalars`, but that is a bit less convenient to work with. ESTIMATED CHANGES Modified src/linear_algebra/quotient.lean - theorem submodule.quotient.mk_nsmul +/- theorem submodule.quotient.mk_smul + def submodule.quotient.restrict_scalars_equiv + theorem submodule.quotient.restrict_scalars_equiv_mk + theorem submodule.quotient.restrict_scalars_equiv_symm_mk Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/operations.lean 2021-10-21 15:43:25 9be8247 feat(logic/function/embedding): add `function.embedding.option_elim` (#9841) * add `option.injective_iff`; * add `function.embedding.option_elim`; * use it in the proof of `cardinal.add_one_le_succ`; * add `function.embedding.cardinal_le`, `cardinal.succ_pos`; * add `@[simp]` to `cardinal.lt_succ`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem option.injective_iff Modified src/logic/embedding.lean + def function.embedding.option_elim Modified src/set_theory/cardinal.lean +/- theorem cardinal.add_one_le_succ +/- theorem cardinal.lt_succ +/- theorem cardinal.succ_ne_zero + theorem cardinal.succ_pos + theorem function.embedding.cardinal_le 2021-10-21 15:43:23 14ec1c8 feat(linear_algebra/matrix/nonsingular_inverse): adjugate of a 2x2 matrix (#9830) Since we have `det_fin_two`, let's have `adjugate_fin_two` as well. ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.adjugate_fin_two' + theorem matrix.adjugate_fin_two 2021-10-21 15:43:20 9c240b5 feat(analysis/inner_product_space): define `orthogonal_family` of subspaces (#9718) Define `orthogonal_family` on `V : ι → submodule 𝕜 E` to mean that any two vectors from distinct subspaces are orthogonal. Prove that an orthogonal family of subspaces is `complete_lattice.independent`. Also prove that in finite dimension an orthogonal family `V` satisifies `direct_sum.submodule_is_internal` (i.e., it provides an internal direct sum decomposition of `E`) if and only if their joint orthogonal complement is trivial, `(supr V)ᗮ = ⊥`, and that in this case, the identification of `E` with the direct sum of `V` is an isometry. ESTIMATED CHANGES Modified src/analysis/inner_product_space/basic.lean + theorem orthogonal_family.eq_ite + theorem orthogonal_family.independent + theorem orthogonal_family.inner_right_dfinsupp + theorem orthogonal_family.inner_right_fintype + def orthogonal_family Modified src/analysis/inner_product_space/pi_L2.lean + def direct_sum.submodule_is_internal.isometry_L2_of_orthogonal_family Modified src/analysis/inner_product_space/projection.lean + theorem orthogonal_family.submodule_is_internal_iff 2021-10-21 13:16:18 d8096aa fix(ring_theory/subring): `inclusion` is a ring_hom! (#9849) ESTIMATED CHANGES Modified src/ring_theory/subring.lean +/- def subring.inclusion 2021-10-21 13:16:17 d8b0d1a chore(algebra/big_operators): avoid 'abel' tactic (#9833) I'd like to add an import ` algebra.euclidean_domain` → `algebra.associated` in #9606, so this removes the dependency in the other direction (`algebra.associated` → `algebra.big_operators.basic` → `tactic.abel` → `tactic.norm_num` → `data.rat.cast` → `data.rat.order` → `data.rat.basic` → ` algebra.euclidean_domain`). Fortunately, the dependency on `abel` was quite shallow here. ESTIMATED CHANGES Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified src/algebra/algebra/basic.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/geom_sum.lean Modified src/algebra/homology/homotopy.lean Modified src/algebra/module/basic.lean Modified src/data/int/interval.lean Modified src/data/pnat/interval.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/ring_theory/ideal/basic.lean 2021-10-21 13:16:16 de13786 chore(topology/algebra/ordered): move IVT to a new file (#9792) ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean - theorem continuous.surjective' - theorem continuous.surjective - theorem continuous_on.surj_on_of_tendsto' - theorem continuous_on.surj_on_of_tendsto - theorem eq_Icc_cInf_cSup_of_connected_bdd_closed - theorem intermediate_value_Icc' - theorem intermediate_value_Icc - theorem intermediate_value_Ico' - theorem intermediate_value_Ico - theorem intermediate_value_Ioc' - theorem intermediate_value_Ioc - theorem intermediate_value_Ioo' - theorem intermediate_value_Ioo - theorem intermediate_value_interval - theorem intermediate_value_univ - theorem intermediate_value_univ₂ - theorem intermediate_value_univ₂_eventually₁ - theorem intermediate_value_univ₂_eventually₂ - theorem is_closed.Icc_subset_of_forall_exists_gt - theorem is_closed.Icc_subset_of_forall_mem_nhds_within - theorem is_closed.mem_of_ge_of_forall_exists_gt - theorem is_connected.Icc_subset - theorem is_connected.Ioo_cInf_cSup_subset - theorem is_preconnected.Icc_subset - theorem is_preconnected.Iio_cSup_subset - theorem is_preconnected.Ioi_cInf_subset - theorem is_preconnected.eq_univ_of_unbounded - theorem is_preconnected.intermediate_value - theorem is_preconnected.intermediate_value_Ici - theorem is_preconnected.intermediate_value_Ico - theorem is_preconnected.intermediate_value_Iic - theorem is_preconnected.intermediate_value_Iii - theorem is_preconnected.intermediate_value_Iio - theorem is_preconnected.intermediate_value_Ioc - theorem is_preconnected.intermediate_value_Ioi - theorem is_preconnected.intermediate_value_Ioo - theorem is_preconnected.intermediate_value₂ - theorem is_preconnected.intermediate_value₂_eventually₁ - theorem is_preconnected.intermediate_value₂_eventually₂ - theorem is_preconnected.mem_intervals - theorem is_preconnected.ord_connected - theorem is_preconnected_Icc - theorem is_preconnected_Ici - theorem is_preconnected_Ico - theorem is_preconnected_Iic - theorem is_preconnected_Iio - theorem is_preconnected_Ioc - theorem is_preconnected_Ioi - theorem is_preconnected_Ioo - theorem is_preconnected_iff_ord_connected - theorem is_preconnected_interval - theorem mem_range_of_exists_le_of_exists_ge - theorem set.ord_connected.is_preconnected - theorem set_of_is_preconnected_eq_of_ordered - theorem set_of_is_preconnected_subset_of_ordered Modified src/topology/algebra/ordered/compact.lean Added src/topology/algebra/ordered/intermediate_value.lean + theorem continuous.surjective' + theorem continuous.surjective + theorem continuous_on.surj_on_of_tendsto' + theorem continuous_on.surj_on_of_tendsto + theorem eq_Icc_cInf_cSup_of_connected_bdd_closed + theorem intermediate_value_Icc' + theorem intermediate_value_Icc + theorem intermediate_value_Ico' + theorem intermediate_value_Ico + theorem intermediate_value_Ioc' + theorem intermediate_value_Ioc + theorem intermediate_value_Ioo' + theorem intermediate_value_Ioo + theorem intermediate_value_interval + theorem intermediate_value_univ + theorem intermediate_value_univ₂ + theorem intermediate_value_univ₂_eventually₁ + theorem intermediate_value_univ₂_eventually₂ + theorem is_closed.Icc_subset_of_forall_exists_gt + theorem is_closed.Icc_subset_of_forall_mem_nhds_within + theorem is_closed.mem_of_ge_of_forall_exists_gt + theorem is_connected.Icc_subset + theorem is_connected.Ioo_cInf_cSup_subset + theorem is_preconnected.Icc_subset + theorem is_preconnected.Iio_cSup_subset + theorem is_preconnected.Ioi_cInf_subset + theorem is_preconnected.eq_univ_of_unbounded + theorem is_preconnected.intermediate_value + theorem is_preconnected.intermediate_value_Ici + theorem is_preconnected.intermediate_value_Ico + theorem is_preconnected.intermediate_value_Iic + theorem is_preconnected.intermediate_value_Iii + theorem is_preconnected.intermediate_value_Iio + theorem is_preconnected.intermediate_value_Ioc + theorem is_preconnected.intermediate_value_Ioi + theorem is_preconnected.intermediate_value_Ioo + theorem is_preconnected.intermediate_value₂ + theorem is_preconnected.intermediate_value₂_eventually₁ + theorem is_preconnected.intermediate_value₂_eventually₂ + theorem is_preconnected.mem_intervals + theorem is_preconnected.ord_connected + theorem is_preconnected_Icc + theorem is_preconnected_Ici + theorem is_preconnected_Ico + theorem is_preconnected_Iic + theorem is_preconnected_Iio + theorem is_preconnected_Ioc + theorem is_preconnected_Ioi + theorem is_preconnected_Ioo + theorem is_preconnected_iff_ord_connected + theorem is_preconnected_interval + theorem mem_range_of_exists_le_of_exists_ge + theorem set.ord_connected.is_preconnected + theorem set_of_is_preconnected_eq_of_ordered + theorem set_of_is_preconnected_subset_of_ordered 2021-10-21 13:16:14 d9daf54 feat(topology/metric_space/isometry): add simps config (#9757) Also make `isometric.complete_space` take `complete_space β` as an instance argument. ESTIMATED CHANGES Modified src/topology/metric_space/isometry.lean + def isometric.simps.apply + def isometric.simps.symm_apply - theorem isometric.to_homeomorph_to_equiv - theorem isometry.isometric_on_range_apply 2021-10-21 11:25:37 fe5ddaf feat(ring_theory/polynomial/cyclotomic): add cyclotomic_prime_pow_eq_geom_sum and supporting lemmas (#9845) Clean up a little bit in src/number_theory/divisors.lean using to_additive too. ESTIMATED CHANGES Modified src/number_theory/divisors.lean + theorem nat.mem_proper_divisors_prime_pow + theorem nat.prime.prod_divisors + theorem nat.prime.prod_proper_divisors - theorem nat.prime.sum_divisors - theorem nat.prime.sum_proper_divisors - theorem nat.prod_divisors_prime + theorem nat.prod_proper_divisors_prime_pow + theorem nat.proper_divisors_prime_pow - theorem nat.sum_divisors_prime_pow Modified src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.cyclotomic_prime_pow_eq_geom_sum 2021-10-21 11:25:35 edd801f chore(set_theory/cardinal): ensure `c ^ ↑n = c ^ n` is definitional (#9842) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean +/- theorem cardinal.pow_cast_right 2021-10-21 11:25:33 777f11c feat(group_theory/index): Special cases of relindex (#9831) Adds special cases of relindex. Also refactors the file to use `nat.card`, rather than the equivalent `(# _).to_nat`. ESTIMATED CHANGES Modified src/group_theory/index.lean +/- theorem subgroup.index_bot + theorem subgroup.relindex_bot_left + theorem subgroup.relindex_bot_left_eq_card + theorem subgroup.relindex_bot_right + theorem subgroup.relindex_self + theorem subgroup.relindex_top_left + theorem subgroup.relindex_top_right 2021-10-21 11:25:32 bfa4010 feat(data/nat/modeq): `modeq.le_of_lt_add` (#9816) If `a ≡ b [MOD m]` and `a < b + m`, then `a ≤ b`. ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem nat.modeq.add_le_of_lt + theorem nat.modeq.le_of_lt_add 2021-10-21 08:38:42 da01792 refactor(*): remove integral_domain, rename domain to is_domain (#9748) ESTIMATED CHANGES Modified archive/imo/imo1962_q4.lean +/- theorem formula Modified src/algebra/algebra/basic.lean +/- theorem no_zero_smul_divisors.iff_algebra_map_injective Modified src/algebra/algebra/bilinear.lean Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/char_p/algebra.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/group_power/basic.lean +/- theorem eq_or_eq_neg_of_sq_eq_sq Modified src/algebra/opposites.lean Modified src/algebra/order/ring.lean Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/quaternion.lean Modified src/algebra/ring/basic.lean - theorem integral_domain.to_is_integral_domain - theorem is_integral_domain.to_integral_domain - structure is_integral_domain Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/mv_polynomial/funext.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/polynomial/cancel_leads.lean +/- theorem polynomial.nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/mirror.lean +/- theorem polynomial.irreducible_of_mirror +/- theorem polynomial.mirror_mul_of_domain +/- theorem polynomial.mirror_smul Modified src/data/polynomial/reverse.lean +/- theorem polynomial.reverse_mul_of_domain +/- theorem polynomial.trailing_coeff_mul Modified src/data/polynomial/ring_division.lean - theorem is_integral_domain.polynomial +/- theorem polynomial.eq_of_infinite_eval_eq +/- theorem polynomial.leading_coeff_div_by_monic_of_monic +/- def polynomial.nth_roots_finset +/- def polynomial.root_set +/- theorem polynomial.root_set_C +/- theorem polynomial.root_set_def +/- theorem polynomial.root_set_zero Modified src/data/rat/basic.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite/basic.lean +/- theorem char_p.sq_add_sq Modified src/field_theory/fixed.lean Modified src/field_theory/is_alg_closed/basic.lean +/- theorem is_alg_closed.algebra_map_surjective_of_is_algebraic +/- theorem is_alg_closed.algebra_map_surjective_of_is_integral Modified src/field_theory/minpoly.lean +/- theorem minpoly.gcd_domain_eq_field_fractions Modified src/field_theory/perfect_closure.lean +/- theorem perfect_closure.eq_iff Modified src/field_theory/separable.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/determinant.lean +/- def equiv_of_pi_lequiv_pi +/- theorem linear_equiv.is_unit_det' +/- theorem matrix.det_comm' +/- theorem matrix.det_conj +/- def matrix.index_equiv_of_inv Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/free_module/pid.lean +/- theorem ideal.rank_eq Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean +/- theorem matrix.exists_mul_vec_eq_zero_iff +/- theorem matrix.exists_vec_mul_eq_zero_iff +/- theorem matrix.nondegenerate_iff_det_ne_zero Modified src/linear_algebra/sesquilinear_form.lean Modified src/number_theory/class_number/finite.lean Modified src/number_theory/function_field.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/class_group.lean Modified src/ring_theory/dedekind_domain.lean +/- theorem ring.dimension_le_one.integral_closure +/- theorem ring.dimension_le_one.is_integral_closure Modified src/ring_theory/discrete_valuation_ring.lean +/- theorem discrete_valuation_ring.iff_pid_with_one_nonzero_prime +/- theorem discrete_valuation_ring.of_has_unit_mul_pow_irreducible_factorization Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/hahn_series.lean +/- theorem hahn_series.order_mul Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.bot_prime +/- theorem ideal.factors_decreasing + theorem ideal.quotient.is_domain_iff_prime - theorem ideal.quotient.is_integral_domain_iff_prime +/- theorem ideal.span_singleton_eq_span_singleton +/- theorem ideal.span_singleton_lt_span_singleton Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.mul_eq_bot +/- theorem ideal.prod_eq_bot - theorem ideal.radical_bot_of_integral_domain + theorem ideal.radical_bot_of_is_domain +/- theorem ring_hom.ker_is_prime Modified src/ring_theory/ideal/over.lean +/- theorem ideal.comap_ne_bot_of_algebraic_mem +/- theorem ideal.comap_ne_bot_of_integral_mem +/- theorem ideal.comap_ne_bot_of_root_mem +/- theorem ideal.eq_bot_of_comap_eq_bot +/- theorem ideal.exists_ideal_over_maximal_of_is_integral Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/integral_domain.lean - def division_ring_of_domain + def division_ring_of_is_domain - def field_of_integral_domain + def field_of_is_domain - theorem is_cyclic_of_subgroup_integral_domain + theorem is_cyclic_of_subgroup_is_domain Modified src/ring_theory/integrally_closed.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean - theorem is_fraction_ring.to_integral_domain - theorem is_localization.integral_domain_localization - theorem is_localization.integral_domain_of_le_non_zero_divisors + theorem is_localization.is_domain_localization + theorem is_localization.is_domain_of_le_non_zero_divisors Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/norm.lean +/- theorem algebra.norm_eq_zero_iff_of_basis +/- theorem algebra.norm_ne_zero_iff_of_basis Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/basic.lean + theorem ideal.is_domain_map_C_quotient - theorem ideal.is_integral_domain_map_C_quotient - theorem mv_polynomial.integral_domain_fintype + theorem mv_polynomial.is_domain_fin + theorem mv_polynomial.is_domain_fin_zero + theorem mv_polynomial.is_domain_fintype - theorem mv_polynomial.is_integral_domain_fin - theorem mv_polynomial.is_integral_domain_fin_zero - theorem mv_polynomial.is_integral_domain_fintype Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/cyclotomic.lean +/- def polynomial.cyclotomic' +/- theorem polynomial.roots_of_cyclotomic Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/power_basis.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/principal_ideal_domain.lean +/- theorem is_prime.to_maximal_ideal Modified src/ring_theory/roots_of_unity.lean +/- def primitive_roots Modified src/ring_theory/subring.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/integral.lean 2021-10-21 02:55:10 3c11bd7 chore(*): bump to lean 3.34.0 (#9824) ### Backport coercions from Lean 4 Now `has_coe_to_fun` and `has_coe_to_sort` take the output type as an `out_param` argument. This change comes with some changes in the elaboration order, so some proofs/definitions need more type annotations. ### Smarter `by_contra` Now `by_contra h` does better job if the goal is a negation. ### `open` and current namespace In ```lean namespace A open B _root_.C end A ``` Lean will try to open `A.B`; if this fails, it will open `B`. It will also open `C`. `setup_tactic_parser_cmd` command was updated to open appropriate `_root_.*` namespaces. ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified leanpkg.toml Modified src/algebra/algebra/basic.lean + theorem alg_hom.coe_fn_inj Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/FinVect.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Module/adjunctions.lean + theorem Module.free.associativity + theorem Module.free.left_unitality + theorem Module.free.right_unitality + def Module.free.ε + def Module.free.μ + theorem Module.free.μ_natural Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/algebra/direct_sum/basic.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group_action_hom.lean Modified src/algebra/lie/basic.lean Modified src/algebra/lie/tensor_product.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/non_unital_alg_hom.lean Modified src/algebra/order/absolute_value.lean Modified src/algebra/quandle.lean Modified src/algebra/quaternion.lean Modified src/algebra/ring/basic.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/algebraic_topology/topological_simplex.lean Modified src/analysis/box_integral/partition/additive.lean Modified src/analysis/calculus/specific_functions.lean +/- theorem times_cont_diff_bump.support_eq +/- theorem times_cont_diff_bump_of_inner.support_eq Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed/group/SemiNormedGroup.lean + theorem SemiNormedGroup₁.coe_comp' Modified src/analysis/normed/group/SemiNormedGroup/completion.lean Modified src/analysis/normed/group/hom.lean +/- theorem normed_group_hom.coe_inj +/- theorem normed_group_hom.coe_inj_iff Modified src/analysis/normed_space/affine_isometry.lean +/- theorem affine_isometry.coe_one Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/enorm.lean +/- theorem enorm.coe_fn_injective +/- theorem enorm.coe_inj Modified src/analysis/normed_space/linear_isometry.lean +/- theorem linear_isometry.coe_id +/- theorem linear_isometry.coe_one Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/seminorm.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/abelian/pseudoelements.lean +/- def category_theory.abelian.pseudoelement.hom_to_fun +/- def category_theory.abelian.pseudoelement.object_to_sort Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/Quiv.lean Modified src/category_theory/concrete_category/basic.lean +/- def category_theory.concrete_category.has_coe_to_fun Modified src/category_theory/concrete_category/bundled.lean +/- theorem category_theory.bundled.coe_mk Modified src/category_theory/full_subcategory.lean Modified src/category_theory/linear/yoneda.lean Modified src/category_theory/monad/products.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/category_theory/simple.lean Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/sieves.lean Modified src/combinatorics/derangements/basic.lean Modified src/combinatorics/hales_jewett.lean Modified src/combinatorics/quiver.lean Modified src/computability/partrec_code.lean Modified src/computability/turing_machine.lean Modified src/control/traversable/basic.lean Modified src/data/analysis/filter.lean Modified src/data/analysis/topology.lean Modified src/data/complex/basic.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/local_equiv.lean Modified src/data/equiv/module.lean Modified src/data/equiv/mul_add.lean Modified src/data/equiv/ring.lean Modified src/data/equiv/set.lean Modified src/data/finset/basic.lean Modified src/data/finsupp/basic.lean Modified src/data/fintype/basic.lean Modified src/data/fintype/card_embedding.lean Modified src/data/int/gcd.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/nat/prime.lean Modified src/data/num/lemmas.lean Modified src/data/pequiv.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/set/basic.lean Modified src/data/set/intervals/basic.lean Modified src/data/set_like/basic.lean +/- theorem set_like.coe_sort_coe Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/dynamics/flow.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/manifold/algebra/left_invariant_derivation.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/bump_function.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/times_cont_mdiff_map.lean Modified src/group_theory/congruence.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/specific_groups/dihedral.lean Modified src/group_theory/subgroup/basic.lean Modified src/linear_algebra/affine_space/affine_equiv.lean +/- theorem affine_equiv.coe_fn_inj Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/alternating.lean +/- theorem alternating_map.coe_inj + theorem alternating_map.coe_injective Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/general_linear_group.lean Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/multilinear/basic.lean +/- theorem multilinear_map.coe_inj + theorem multilinear_map.coe_injective Modified src/linear_algebra/quadratic_form/basic.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/linear_algebra/special_linear_group.lean Modified src/linear_algebra/unitary_group.lean Modified src/logic/basic.lean + theorem coe_fn_coe_base' + theorem coe_fn_coe_trans' Modified src/logic/embedding.lean Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/function/ae_eq_fun.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.simple_func.coe_injective Modified src/measure_theory/integral/mean_inequalities.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/content.lean Modified src/measure_theory/measure/finite_measure_weak_convergence.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/measure_space_def.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/measure_theory/probability_mass_function.lean Modified src/meta/coinductive_predicates.lean Modified src/meta/expr.lean Modified src/model_theory/basic.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/dioph.lean Modified src/number_theory/fermat4.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/order/category/LinearOrder.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/category/PartialOrder.lean Modified src/order/category/Preorder.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/order/closure.lean Modified src/order/filter/at_top_bot.lean +/- theorem order_iso.map_at_bot +/- theorem order_iso.map_at_top Modified src/order/jordan_holder.lean Modified src/order/lexicographic.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/preorder_hom.lean Modified src/order/rel_iso.lean Modified src/ring_theory/algebraic_independent.lean + theorem algebraic_independent.mv_polynomial_option_equiv_polynomial_adjoin_C + theorem algebraic_independent.mv_polynomial_option_equiv_polynomial_adjoin_X_none + theorem algebraic_independent.mv_polynomial_option_equiv_polynomial_adjoin_X_some + theorem algebraic_independent.mv_polynomial_option_equiv_polynomial_adjoin_apply Modified src/ring_theory/derivation.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/flat.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/ring_invo.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/pgame.lean +/- theorem pgame.lt_mk_of_le Modified src/set_theory/zfc.lean +/- theorem Set.mem_powerset Modified src/tactic/abel.lean Modified src/tactic/cache.lean Modified src/tactic/converter/interactive.lean Modified src/tactic/core.lean Modified src/tactic/elementwise.lean Modified src/tactic/elide.lean Modified src/tactic/explode.lean Modified src/tactic/explode_widget.lean Modified src/tactic/field_simp.lean Modified src/tactic/fin_cases.lean Modified src/tactic/finish.lean Modified src/tactic/generalize_proofs.lean Modified src/tactic/generalizes.lean Modified src/tactic/group.lean Modified src/tactic/hint.lean Modified src/tactic/interactive.lean Modified src/tactic/lift.lean Modified src/tactic/linarith/preprocessing.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/norm_fin.lean Modified src/tactic/norm_swap.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/replacer.lean Modified src/tactic/rewrite.lean Modified src/tactic/ring.lean Modified src/tactic/simp_result.lean Modified src/tactic/simpa.lean Modified src/tactic/simps.lean Modified src/tactic/slice.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/split_ifs.lean Modified src/tactic/squeeze.lean Modified src/tactic/subtype_instance.lean Modified src/tactic/suggest.lean Modified src/tactic/tfae.lean Modified src/tactic/tidy.lean Modified src/tactic/trunc_cases.lean Modified src/tactic/wlog.lean Modified src/testing/slim_check/functions.lean Modified src/testing/slim_check/testable.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/algebra/weak_dual_topology.lean Modified src/topology/category/CompHaus/default.lean Modified src/topology/category/Compactum.lean Modified src/topology/category/Profinite/default.lean Modified src/topology/category/Top/basic.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/Top/opens.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/connected.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/basic.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/discrete_quotient.lean Modified src/topology/fiber_bundle.lean Modified src/topology/homeomorph.lean Modified src/topology/homotopy/basic.lean Modified src/topology/homotopy/path.lean Modified src/topology/local_homeomorph.lean Modified src/topology/locally_constant/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/partition_of_unity.lean Modified src/topology/path_connected.lean Modified src/topology/shrinking_lemma.lean Modified src/topology/subset_properties.lean Modified src/topology/vector_bundle.lean Modified test/delta_instance.lean +/- def X Modified test/lint_coe_to_fun.lean Modified test/lint_simp_nf.lean Modified test/norm_cast_coe_fn.lean Modified test/simps.lean 2021-10-20 19:43:22 8366f93 feat(ring_theory/integral_domain): finite domains are division rings (#9823) TODO: Prove Wedderburn's little theorem which shows a finite domain is in fact commutative, hence a field. ESTIMATED CHANGES Modified src/ring_theory/integral_domain.lean + def division_ring_of_domain + theorem mul_left_bijective₀ + theorem mul_right_bijective₀ 2021-10-20 18:03:33 4ebeb05 chore(group_theory/submonoid/center): add decidable_mem_center (#9825) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean Modified src/group_theory/submonoid/center.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2021-10-20 18:03:31 3d00081 feat(group_theory/index): Index of top and bottom subgroups (#9819) This PR computes the index of the top and bottom subgroups. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.index_bot + theorem subgroup.index_bot_eq_card + theorem subgroup.index_top Modified src/set_theory/cardinal.lean +/- theorem cardinal.one_to_nat + theorem cardinal.to_nat_eq_one + theorem cardinal.to_nat_eq_one_iff_unique +/- theorem cardinal.zero_to_nat 2021-10-20 15:39:06 68a674e refactor(algebra/order/sub): rename sub -> tsub (#9793) * Renames lemmas in the file `algebra/order/sub` to use `tsub` instead of `sub` in the name * Remove primes from lemma names where possible * [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mul_lt_mul'''') * Remove `sub_mul_ge`, `mul_sub_ge` and `lt_sub_iff_lt_sub`. They were special cases of `le_sub_mul`, `le_mul_sub` and `lt_sub_comm`, respectively. ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified archive/imo/imo1977_q6.lean Modified archive/imo/imo1998_q2.lean Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean Modified src/algebra/associated.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/intervals.lean Modified src/algebra/geom_sum.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/order/ring.lean - theorem mul_sub_ge - theorem sub_mul_ge Modified src/algebra/order/sub.lean - theorem add_hom.le_map_sub + theorem add_hom.le_map_tsub - theorem add_le_add_add_sub + theorem add_le_add_add_tsub - theorem add_le_of_le_sub_left_of_le - theorem add_le_of_le_sub_right_of_le + theorem add_le_of_le_tsub_left_of_le + theorem add_le_of_le_tsub_right_of_le - theorem add_monoid_hom.le_map_sub + theorem add_monoid_hom.le_map_tsub - theorem add_sub_add_eq_sub_left' - theorem add_sub_add_right_eq_sub' - theorem add_sub_assoc_of_le - theorem add_sub_cancel_iff_le - theorem add_sub_cancel_left - theorem add_sub_cancel_of_le - theorem add_sub_cancel_right - theorem add_sub_eq_max - theorem add_sub_le_assoc - theorem add_sub_le_left - theorem add_sub_le_right - theorem add_sub_sub_cancel' + theorem add_tsub_add_eq_tsub_left + theorem add_tsub_add_right_eq_tsub + theorem add_tsub_assoc_of_le + theorem add_tsub_cancel_iff_le + theorem add_tsub_cancel_left + theorem add_tsub_cancel_of_le + theorem add_tsub_cancel_right + theorem add_tsub_eq_max + theorem add_tsub_le_assoc + theorem add_tsub_le_left + theorem add_tsub_le_right + theorem add_tsub_tsub_cancel - theorem eq_sub_iff_add_eq_of_le - theorem eq_sub_of_add_eq'' + theorem eq_tsub_iff_add_eq_of_le + theorem eq_tsub_of_add_eq - theorem le_add_sub' - theorem le_add_sub - theorem le_add_sub_swap + theorem le_add_tsub' + theorem le_add_tsub + theorem le_add_tsub_swap - theorem le_mul_sub + theorem le_mul_tsub - theorem le_sub_add - theorem le_sub_add_add - theorem le_sub_iff_le_sub - theorem le_sub_iff_left - theorem le_sub_iff_right - theorem le_sub_mul - theorem le_sub_of_add_le_left' - theorem le_sub_of_add_le_right' + theorem le_tsub_add + theorem le_tsub_add_add + theorem le_tsub_iff_le_tsub + theorem le_tsub_iff_left + theorem le_tsub_iff_right + theorem le_tsub_mul + theorem le_tsub_of_add_le_left + theorem le_tsub_of_add_le_right - theorem lt_add_of_sub_lt_left' - theorem lt_add_of_sub_lt_right' + theorem lt_add_of_tsub_lt_left + theorem lt_add_of_tsub_lt_right - theorem lt_of_sub_lt_sub_left - theorem lt_of_sub_lt_sub_left_of_le - theorem lt_of_sub_lt_sub_right - theorem lt_of_sub_lt_sub_right_of_le + theorem lt_of_tsub_lt_tsub_left + theorem lt_of_tsub_lt_tsub_left_of_le + theorem lt_of_tsub_lt_tsub_right + theorem lt_of_tsub_lt_tsub_right_of_le - theorem lt_sub_comm - theorem lt_sub_iff_left - theorem lt_sub_iff_left_of_le - theorem lt_sub_iff_lt_sub - theorem lt_sub_iff_right - theorem lt_sub_iff_right_of_le - theorem lt_sub_of_add_lt_left - theorem lt_sub_of_add_lt_right + theorem lt_tsub_comm + theorem lt_tsub_iff_left + theorem lt_tsub_iff_left_of_le + theorem lt_tsub_iff_right + theorem lt_tsub_iff_right_of_le + theorem lt_tsub_of_add_lt_left + theorem lt_tsub_of_add_lt_right - theorem order_iso.map_sub + theorem order_iso.map_tsub - theorem sub_add_cancel_iff_le - theorem sub_add_cancel_of_le - theorem sub_add_eq_add_sub' - theorem sub_add_eq_max - theorem sub_add_eq_sub_sub' - theorem sub_add_eq_sub_sub_swap' - theorem sub_add_min - theorem sub_add_sub_cancel'' - theorem sub_eq_iff_eq_add_of_le - theorem sub_eq_of_eq_add'' - theorem sub_eq_of_eq_add_rev - theorem sub_eq_sub_min - theorem sub_eq_zero_iff_le - theorem sub_inj_left - theorem sub_inj_right - theorem sub_le_iff_left - theorem sub_le_iff_right - theorem sub_le_iff_sub_le - theorem sub_le_self' - theorem sub_le_sub' - theorem sub_le_sub_add_sub - theorem sub_le_sub_iff_left' - theorem sub_le_sub_iff_right' - theorem sub_le_sub_left' - theorem sub_le_sub_right' - theorem sub_left_inj' - theorem sub_lt_iff_left - theorem sub_lt_iff_right - theorem sub_lt_iff_sub_lt - theorem sub_lt_self' - theorem sub_lt_self_iff' - theorem sub_lt_sub_iff_left_of_le - theorem sub_lt_sub_iff_left_of_le_of_le - theorem sub_lt_sub_iff_right' - theorem sub_lt_sub_right_of_le - theorem sub_min - theorem sub_pos_iff_lt - theorem sub_pos_iff_not_le - theorem sub_pos_of_lt' - theorem sub_right_comm' - theorem sub_right_inj' - theorem sub_self' - theorem sub_self_add - theorem sub_sub' - theorem sub_sub_assoc - theorem sub_sub_cancel_of_le - theorem sub_sub_le - theorem sub_sub_sub_cancel_right' - theorem sub_sub_sub_le_sub - theorem sub_zero' + theorem tsub_add_cancel_iff_le + theorem tsub_add_cancel_of_le + theorem tsub_add_eq_add_tsub + theorem tsub_add_eq_max + theorem tsub_add_eq_tsub_tsub + theorem tsub_add_eq_tsub_tsub_swap + theorem tsub_add_min + theorem tsub_add_tsub_cancel + theorem tsub_eq_iff_eq_add_of_le + theorem tsub_eq_of_eq_add + theorem tsub_eq_of_eq_add_rev + theorem tsub_eq_tsub_min + theorem tsub_eq_zero_iff_le + theorem tsub_inj_left + theorem tsub_inj_right + theorem tsub_le_iff_left + theorem tsub_le_iff_right + theorem tsub_le_iff_tsub_le + theorem tsub_le_self + theorem tsub_le_tsub + theorem tsub_le_tsub_add_tsub + theorem tsub_le_tsub_iff_left + theorem tsub_le_tsub_iff_right + theorem tsub_le_tsub_left + theorem tsub_le_tsub_right + theorem tsub_left_inj + theorem tsub_lt_iff_left + theorem tsub_lt_iff_right + theorem tsub_lt_iff_tsub_lt + theorem tsub_lt_self + theorem tsub_lt_self_iff + theorem tsub_lt_tsub_iff_left_of_le + theorem tsub_lt_tsub_iff_left_of_le_of_le + theorem tsub_lt_tsub_iff_right + theorem tsub_lt_tsub_right_of_le + theorem tsub_min + theorem tsub_pos_iff_lt + theorem tsub_pos_iff_not_le + theorem tsub_pos_of_lt + theorem tsub_right_comm + theorem tsub_right_inj + theorem tsub_self + theorem tsub_self_add + theorem tsub_tsub + theorem tsub_tsub_assoc + theorem tsub_tsub_cancel_of_le + theorem tsub_tsub_le + theorem tsub_tsub_tsub_cancel_right + theorem tsub_tsub_tsub_le_tsub + theorem tsub_zero - theorem zero_sub' + theorem zero_tsub Modified src/algebra/pointwise.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/normed/group/basic.lean Modified src/analysis/specific_limits.lean Modified src/combinatorics/composition.lean Modified src/combinatorics/derangements/exponential.lean Modified src/combinatorics/derangements/finite.lean Modified src/computability/DFA.lean Modified src/computability/turing_machine.lean Modified src/data/complex/exponential.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/fin.lean Modified src/data/fin/basic.lean Modified src/data/finset/basic.lean Modified src/data/finset/sort.lean Modified src/data/finsupp/antidiagonal.lean Modified src/data/finsupp/basic.lean Modified src/data/list/basic.lean Modified src/data/list/cycle.lean Modified src/data/list/intervals.lean Modified src/data/list/perm.lean Modified src/data/list/rotate.lean Modified src/data/matrix/notation.lean Modified src/data/multiset/antidiagonal.lean Modified src/data/multiset/basic.lean +/- theorem multiset.eq_union_left +/- theorem multiset.le_union_left Modified src/data/multiset/nodup.lean Modified src/data/multiset/powerset.lean Modified src/data/nat/basic.lean Modified src/data/nat/choose/basic.lean Modified src/data/nat/dist.lean Modified src/data/nat/factorial/basic.lean Modified src/data/nat/interval.lean Modified src/data/nat/modeq.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/pairing.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/nat/succ_pred.lean Modified src/data/nat/upto.lean Modified src/data/ordmap/ordset.lean Modified src/data/pnat/factors.lean Modified src/data/polynomial/hasse_deriv.lean Modified src/data/polynomial/mirror.lean Modified src/data/polynomial/reverse.lean Modified src/data/polynomial/ring_division.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.lt_sub_comm +/- theorem ennreal.lt_sub_iff_add_lt Modified src/data/vector/basic.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite/polynomial.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/list.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/number_theory/padics/ring_homs.lean Modified src/order/filter/at_top_bot.lean Modified src/order/iterate.lean Modified src/order/jordan_holder.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/set_theory/game/state.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/system/random/basic.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/omega/coeffs.lean Modified src/testing/slim_check/gen.lean Modified src/testing/slim_check/sampleable.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean Modified test/general_recursion.lean 2021-10-20 13:23:09 5223e26 feat(field_theory/finite/galois_field): uniqueness of finite fields (#9817) Every finite field is isomorphic to some Galois field. Closes #9599 ESTIMATED CHANGES Modified src/field_theory/finite/basic.lean +/- theorem finite_field.card' Modified src/field_theory/finite/galois_field.lean + def galois_field.alg_equiv_galois_field + theorem galois_field.is_splitting_field_of_card_eq + theorem galois_field.splits_X_pow_card_sub_X 2021-10-20 11:46:43 49ab444 fix(algebra/module/submodule_lattice): correct bad lemma (#9809) This lemma was accidentally stating that inf and inter are the same on sets, and wasn't about submodule at all. The old statement was `↑p ⊓ ↑q = ↑p ∩ ↑q`, the new one is `↑(p ⊓ q) = ↑p ∩ ↑q` ESTIMATED CHANGES Modified src/algebra/module/submodule_lattice.lean +/- theorem submodule.inf_coe 2021-10-20 09:53:23 24901dd feat(linear_algebra/free_module/rank): rank of free modules (#9810) This file contains a basic API for the rank of free modules. We will add the results for finite free modules in a future PR. ESTIMATED CHANGES Added src/linear_algebra/free_module/rank.lean + theorem module.free.rank_direct_sum + theorem module.free.rank_eq_card_choose_basis_index + theorem module.free.rank_finsupp' + theorem module.free.rank_finsupp + theorem module.free.rank_prod' + theorem module.free.rank_prod + theorem module.free.rank_tensor_product' + theorem module.free.rank_tensor_product 2021-10-20 09:53:22 2f54840 refactor(*): replace comm_ring/integral_domain with ring/domain where possible (#9739) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/mirror.lean +/- theorem polynomial.mirror_mul_of_domain +/- theorem polynomial.mirror_smul Modified src/data/polynomial/reverse.lean +/- theorem polynomial.trailing_coeff_mul Modified src/data/polynomial/ring_division.lean Modified src/data/real/cau_seq.lean Modified src/field_theory/fixed.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/free_module/pid.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/ring_theory/hahn_series.lean +/- theorem hahn_series.order_mul Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.bot_prime Modified src/ring_theory/ideal/operations.lean +/- theorem ring_hom.ker_is_prime Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series/basic.lean 2021-10-20 08:19:58 a6d5ba8 chore(set_theory/cardinal): add `map`, `induction_on` etc (#9812) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.induction_on + theorem cardinal.induction_on₂ + theorem cardinal.induction_on₃ +/- theorem cardinal.lift_id' +/- theorem cardinal.lift_id +/- theorem cardinal.lift_umax +/- theorem cardinal.lift_zero + def cardinal.map + theorem cardinal.map_mk + def cardinal.map₂ + theorem cardinal.mk_congr +/- theorem cardinal.succ_ne_zero Modified src/set_theory/ordinal.lean 2021-10-20 04:15:08 9dafdf7 feat(group_theory/subgroup/basic): `subgroup_of_self` (#9818) A subgroup is the top subgroup of itself. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.subgroup_of_self 2021-10-20 04:15:07 6898728 feat(analysis/complex/basic): a complex-valued function `has_sum` iff its real part and imaginary part `has_sum` (#9648) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + def complex.equiv_real_prod_add_hom + def complex.equiv_real_prod_add_hom_lm + def complex.equiv_real_prodₗ + theorem complex.has_sum_iff Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.prod_mk 2021-10-20 01:45:58 cd34347 chore(*): remove uses of `universe variable` (#9794) Most of these uses are relics of when the distinction between `universe` and `universe variable` was more significant. There is still a difference inside sections, but it's an edge case and I don't think any of these uses are consciously trying to handle the edge case. ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/prime_spectrum.lean Modified src/algebraic_topology/simplex_category.lean Modified src/control/applicative.lean Modified src/control/functor.lean Modified src/control/traversable/lemmas.lean Modified src/data/equiv/fin.lean Modified src/data/fin_enum.lean Modified src/data/list/perm.lean Modified src/data/list/sort.lean Modified src/data/set/basic.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_algebra.lean Modified src/logic/basic.lean +/- theorem classical.nonempty_pi +/- theorem nonempty.exists +/- theorem nonempty.forall +/- theorem nonempty.map +/- theorem nonempty_plift +/- theorem nonempty_pprod +/- theorem nonempty_psigma +/- theorem nonempty_psum +/- theorem nonempty_subtype Modified src/logic/relator.lean Modified src/measure_theory/measure/content.lean Modified src/model_theory/basic.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/copy.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/flat.lean Modified src/ring_theory/henselian.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/tactic/core.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/weak_dual_topology.lean Modified src/topology/category/Compactum.lean Modified src/topology/category/Profinite/default.lean Modified src/topology/category/Profinite/projective.lean Modified test/simps.lean 2021-10-19 23:43:31 2d17c5a feat(group_theory/index): Relative index (#9780) Defines relative index between subgroups, and proves that relative index is multiplicative in towers. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.index_comap - theorem subgroup.index_eq_mul_of_le + theorem subgroup.relindex_mul_index + theorem subgroup.relindex_mul_relindex + theorem subgroup.relindex_subgroup_of 2021-10-19 20:59:45 72cb2e8 refactor(*): rename some declarations ending with '' (#9504) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem algebra.smul_def'' Modified src/algebra/algebra/tower.lean Modified src/algebra/free.lean - def free_magma.rec_on' + def free_magma.rec_on_mul - def free_semigroup.rec_on' + def free_semigroup.rec_on_pure Modified src/algebra/group_power/order.lean - theorem pow_lt_pow'' + theorem pow_lt_pow' Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/support.lean - theorem function.mul_support_inv'' + theorem function.mul_support_inv' Modified src/category_theory/abelian/exact.lean - theorem category_theory.abelian.exact_iff'' + theorem category_theory.abelian.exact_iff_image_eq_kernel Modified src/category_theory/monoidal/natural_transformation.lean - theorem category_theory.monoidal_nat_trans.comp_to_nat_trans'' - theorem category_theory.monoidal_nat_trans.comp_to_nat_trans' + theorem category_theory.monoidal_nat_trans.comp_to_nat_trans + theorem category_theory.monoidal_nat_trans.comp_to_nat_trans_lax Modified src/data/matrix/basic.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/fixed.lean Modified src/field_theory/minpoly.lean + theorem minpoly.eq_of_irreducible + theorem minpoly.eq_of_irreducible_of_monic - theorem minpoly.unique'' - theorem minpoly.unique' Modified src/ring_theory/derivation.lean Modified src/ring_theory/polynomial_algebra.lean 2021-10-19 16:49:58 65eef74 fix(data/int/basic): ensure the additive group structure on integers is computable (#9803) This prevents the following failure: ```lean import analysis.normed_space.basic instance whoops : add_comm_group ℤ := by apply_instance -- definition 'whoops' is noncomputable, it depends on 'int.normed_comm_ring' ``` ESTIMATED CHANGES Modified src/data/int/basic.lean 2021-10-19 15:18:56 e61584d fix(topology/sheaves/*): Fix docstrings (#9807) As noted by @alreadydone in #9607, I forgot propagate naming changes to docstrings. This PR fixes that. ESTIMATED CHANGES Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheaf_of_functions.lean 2021-10-19 12:47:04 34aa23a feat(ring_theory/dedekind_domain): connect (/) and (⁻¹) on fractional ideals (#9808) Turns out we never actually proved the `div_eq_mul_inv` lemma on fractional ideals, which motivated the entire definition of `div_inv_monoid`. So here it is, along with some useful supporting lemmas. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean + theorem fractional_ideal.mul_left_le_iff + theorem fractional_ideal.mul_left_strict_mono + theorem fractional_ideal.mul_right_le_iff + theorem fractional_ideal.mul_right_strict_mono 2021-10-19 11:59:41 065a708 refactor(analysis/inner_product_space/projection): speedup proof (#9804) Speed up slow proof that caused a timeout on another branch. ESTIMATED CHANGES Modified src/analysis/inner_product_space/projection.lean + def reflection_linear_equiv 2021-10-19 09:31:15 b961b68 feat(topology/connected): product of connected spaces is a connected space (#9789) * prove more in the RHS of `filter.mem_infi'`; * prove that the product of (pre)connected sets is a (pre)connected set; * prove a similar statement about indexed product `set.pi set.univ _`; * add instances for `prod.preconnected_space`, `prod.connected_space`, `pi.preconnected_space`, and `pi.connected_space`. ESTIMATED CHANGES Modified src/order/filter/basic.lean Modified src/topology/connected.lean + theorem is_connected.prod + theorem is_connected_univ_pi + theorem is_preconnected.prod + theorem is_preconnected_Union + theorem is_preconnected_singleton + theorem is_preconnected_univ_pi + theorem set.subsingleton.is_preconnected Modified src/topology/constructions.lean + theorem exists_finset_piecewise_mem_of_mem_nhds Modified src/topology/continuous_on.lean 2021-10-19 09:31:13 ff3e868 refactor(algebra/domain): make domain and integral_domain mixins (#9719) This PR turns `domain` and `integral_domain` into mixins. There's quite a lot of work here, as the unused argument linter then forces us to do some generalizations! (i.e. getting rid of unnecessary `integral_domain` arguments). This PR does the minimum possible generalization: #9739 does some more. In a subsequent PR we can unify `domain` and `integral_domain`, which now only differ in their typeclass requirements. This also remove use of `old_structure_cmd` in `euclidean_domain`. - [x] depends on: #9725 [An RFC] - [x] depends on: #9736 [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/) ESTIMATED CHANGES Modified archive/imo/imo1962_q4.lean +/- theorem formula Modified src/algebra/algebra/basic.lean +/- theorem no_zero_smul_divisors.iff_algebra_map_injective Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/char_p/algebra.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/group_power/basic.lean +/- theorem eq_or_eq_neg_of_sq_eq_sq Modified src/algebra/opposites.lean Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/quaternion.lean Modified src/algebra/ring/basic.lean +/- theorem integral_domain.to_is_integral_domain + theorem is_integral_domain.to_integral_domain - def is_integral_domain.to_integral_domain Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/mv_polynomial/funext.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/polynomial/cancel_leads.lean +/- theorem polynomial.nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean + theorem polynomial.root_multiplicity_eq_zero + theorem polynomial.root_multiplicity_pos + theorem polynomial.root_multiplicity_zero Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/mirror.lean +/- theorem polynomial.irreducible_of_mirror +/- theorem polynomial.mirror_mul_of_domain +/- theorem polynomial.mirror_smul Modified src/data/polynomial/reverse.lean +/- theorem polynomial.reverse_mul_of_domain +/- theorem polynomial.trailing_coeff_mul Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.eq_of_infinite_eval_eq +/- theorem polynomial.leading_coeff_div_by_monic_of_monic +/- def polynomial.nth_roots_finset - theorem polynomial.root_multiplicity_eq_zero - theorem polynomial.root_multiplicity_pos - theorem polynomial.root_multiplicity_zero +/- def polynomial.root_set +/- theorem polynomial.root_set_C +/- theorem polynomial.root_set_def +/- theorem polynomial.root_set_finite +/- theorem polynomial.root_set_zero Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite/basic.lean +/- theorem char_p.sq_add_sq Modified src/field_theory/finite/galois_field.lean Modified src/field_theory/fixed.lean Modified src/field_theory/is_alg_closed/basic.lean +/- theorem is_alg_closed.algebra_map_surjective_of_is_algebraic +/- theorem is_alg_closed.algebra_map_surjective_of_is_integral' +/- theorem is_alg_closed.algebra_map_surjective_of_is_integral Modified src/field_theory/minpoly.lean +/- theorem minpoly.gcd_domain_eq_field_fractions Modified src/field_theory/perfect_closure.lean +/- theorem perfect_closure.eq_iff Modified src/field_theory/separable.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/determinant.lean +/- def equiv_of_pi_lequiv_pi +/- theorem linear_equiv.is_unit_det' +/- theorem matrix.det_comm' +/- theorem matrix.det_conj +/- def matrix.index_equiv_of_inv Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/free_module/pid.lean +/- theorem ideal.exists_smith_normal_form +/- theorem ideal.rank_eq Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean +/- theorem matrix.exists_mul_vec_eq_zero_iff' +/- theorem matrix.exists_mul_vec_eq_zero_iff +/- theorem matrix.exists_vec_mul_eq_zero_iff +/- theorem matrix.nondegenerate_iff_det_ne_zero Modified src/linear_algebra/sesquilinear_form.lean Modified src/number_theory/class_number/finite.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/class_group.lean Modified src/ring_theory/dedekind_domain.lean +/- theorem mul_generator_self_inv +/- theorem ring.dimension_le_one.integral_closure +/- theorem ring.dimension_le_one.is_integral_closure Modified src/ring_theory/discrete_valuation_ring.lean +/- def discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization +/- theorem discrete_valuation_ring.iff_pid_with_one_nonzero_prime +/- theorem discrete_valuation_ring.of_has_unit_mul_pow_irreducible_factorization +/- theorem discrete_valuation_ring.of_ufd_of_unique_irreducible Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/hahn_series.lean +/- theorem hahn_series.is_pwo_Union_support_powers +/- theorem hahn_series.order_mul Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.bot_prime +/- theorem ideal.factors_decreasing +/- theorem ideal.span_singleton_eq_span_singleton +/- theorem ideal.span_singleton_lt_span_singleton Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.mul_eq_bot +/- theorem ideal.prod_eq_bot +/- theorem ideal.radical_bot_of_integral_domain +/- theorem ring_hom.ker_is_prime Modified src/ring_theory/ideal/over.lean +/- theorem ideal.comap_lt_comap_of_integral_mem_sdiff +/- theorem ideal.comap_ne_bot_of_algebraic_mem +/- theorem ideal.comap_ne_bot_of_integral_mem +/- theorem ideal.comap_ne_bot_of_root_mem +/- theorem ideal.eq_bot_of_comap_eq_bot +/- theorem ideal.exists_coeff_ne_zero_mem_comap_of_root_mem +/- theorem ideal.exists_ideal_over_maximal_of_is_integral +/- theorem ideal.is_maximal_comap_of_is_integral_of_is_maximal' +/- theorem ideal.is_maximal_of_is_integral_of_is_maximal_comap' Modified src/ring_theory/integral_closure.lean +/- theorem is_field_of_is_integral_of_is_field Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/integrally_closed.lean Modified src/ring_theory/jacobson.lean +/- theorem ideal.mv_polynomial.comp_C_integral_of_surjective_of_jacobson +/- theorem ideal.mv_polynomial.quotient_mk_comp_C_is_integral_of_jacobson +/- theorem ideal.polynomial.is_maximal_comap_C_of_is_jacobson +/- theorem ideal.polynomial.is_maximal_comap_C_of_is_maximal +/- theorem ideal.polynomial.jacobson_bot_of_integral_localization Modified src/ring_theory/localization.lean + theorem is_fraction_ring.to_integral_domain - def is_fraction_ring.to_integral_domain + theorem is_localization.integral_domain_localization - def is_localization.integral_domain_localization + theorem is_localization.integral_domain_of_le_non_zero_divisors - def is_localization.integral_domain_of_le_non_zero_divisors +/- theorem localization_map_bijective_of_field Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/norm.lean +/- theorem algebra.norm_eq_zero_iff_of_basis +/- theorem algebra.norm_ne_zero_iff_of_basis Modified src/ring_theory/polynomial/basic.lean + theorem mv_polynomial.integral_domain_fintype - def mv_polynomial.integral_domain_fintype +/- theorem polynomial.exists_irreducible_of_degree_pos +/- theorem polynomial.exists_irreducible_of_nat_degree_ne_zero +/- theorem polynomial.exists_irreducible_of_nat_degree_pos Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/cyclotomic.lean +/- theorem polynomial.cyclotomic'.monic +/- def polynomial.cyclotomic' +/- theorem polynomial.cyclotomic'_ne_zero +/- theorem polynomial.cyclotomic'_one +/- theorem polynomial.cyclotomic'_two +/- theorem polynomial.cyclotomic'_zero +/- theorem polynomial.roots_of_cyclotomic Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/power_basis.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/principal_ideal_domain.lean +/- theorem is_field.is_principal_ideal_ring +/- theorem is_prime.to_maximal_ideal +/- theorem principal_ideal_ring.ne_zero_of_mem_factors Modified src/ring_theory/roots_of_unity.lean +/- def primitive_roots Modified src/ring_theory/subring.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/integral.lean 2021-10-19 07:46:18 a7bc717 feat(algebra/big_operators/order): Upper bound on the cardinality of `finset.bUnion` (#9797) Also fix notation in all the additivized statements docstrings. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.card_bUnion_le_card_mul 2021-10-19 07:46:17 4df649c feat(data/nat/modeq): Upper bound for `chinese_remainder` (#9783) Proves that `chinese_remainder' < lcm n m` and `chinese_remainder < n * m`, as claimed by the doc-strings. ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem nat.chinese_remainder'_lt_lcm + theorem nat.chinese_remainder_lt_mul 2021-10-19 07:05:07 1f8c96b feat(data/nat/succ_pred): `ℕ` is succ- and pred- archimedean (#9730) This provides the instances `succ_order ℕ`, `pred_order ℕ`, `is_succ_archimedean ℕ`, `is_pred_archimedean ℕ`. ESTIMATED CHANGES Added src/data/nat/succ_pred.lean + theorem nat.pred_iterate + theorem nat.succ_iterate Modified src/order/succ_pred.lean +/- theorem succ_order.succ_lt_succ_iff 2021-10-19 04:41:01 1ec385d chore(scripts): update nolints.txt (#9799) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-10-19 02:24:00 04094c4 feat(analysis/box_integral): Divergence thm for a Henstock-style integral (#9496) * Define integrals of Riemann, McShane, and Henstock (plus a few variations). * Prove basic properties. * Prove a version of the divergence theorem for one of these integrals. * Prove that a Bochner integrable function is McShane integrable. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/order/field.lean + theorem add_div_two_lt_right + theorem exists_pos_mul_lt + theorem left_lt_add_div_two Added src/analysis/box_integral/basic.lean + theorem box_integral.has_integral.add + theorem box_integral.has_integral.integrable + theorem box_integral.has_integral.integral_eq + theorem box_integral.has_integral.mono + theorem box_integral.has_integral.neg + theorem box_integral.has_integral.smul + theorem box_integral.has_integral.sub + theorem box_integral.has_integral.tendsto + theorem box_integral.has_integral.unique + def box_integral.has_integral + theorem box_integral.has_integral_McShane_of_forall_is_o + theorem box_integral.has_integral_const + theorem box_integral.has_integral_iff + theorem box_integral.has_integral_of_bRiemann_eq_ff_of_forall_is_o + theorem box_integral.has_integral_of_le_Henstock_of_forall_is_o + theorem box_integral.has_integral_of_mul + theorem box_integral.has_integral_sum + theorem box_integral.has_integral_zero + theorem box_integral.integrable.add + theorem box_integral.integrable.cauchy_map_integral_sum_to_filter_Union + def box_integral.integrable.convergence_r + theorem box_integral.integrable.convergence_r_cond + theorem box_integral.integrable.dist_integral_sum_integral_le_of_mem_base_set + theorem box_integral.integrable.dist_integral_sum_le_of_mem_base_set + theorem box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set + theorem box_integral.integrable.dist_integral_sum_sum_integral_le_of_mem_base_set_of_Union_eq + theorem box_integral.integrable.mono + theorem box_integral.integrable.neg + theorem box_integral.integrable.of_neg + theorem box_integral.integrable.of_smul + theorem box_integral.integrable.smul + theorem box_integral.integrable.sub + theorem box_integral.integrable.sum_integral_congr + theorem box_integral.integrable.tendsto_integral_sum_sum_integral + theorem box_integral.integrable.tendsto_integral_sum_to_filter_Union_single + theorem box_integral.integrable.tendsto_integral_sum_to_filter_prod_self_inf_Union_eq_uniformity + def box_integral.integrable.to_box_additive + theorem box_integral.integrable.to_subbox + theorem box_integral.integrable.to_subbox_aux + def box_integral.integrable + theorem box_integral.integrable_const + theorem box_integral.integrable_iff_cauchy + theorem box_integral.integrable_iff_cauchy_basis + theorem box_integral.integrable_neg + theorem box_integral.integrable_of_continuous_on + theorem box_integral.integrable_zero + def box_integral.integral + theorem box_integral.integral_add + theorem box_integral.integral_const + theorem box_integral.integral_neg + theorem box_integral.integral_nonneg + theorem box_integral.integral_smul + theorem box_integral.integral_sub + def box_integral.integral_sum + theorem box_integral.integral_sum_add + theorem box_integral.integral_sum_bUnion_partition + theorem box_integral.integral_sum_bUnion_tagged + theorem box_integral.integral_sum_disj_union + theorem box_integral.integral_sum_fiberwise + theorem box_integral.integral_sum_inf_partition + theorem box_integral.integral_sum_neg + theorem box_integral.integral_sum_smul + theorem box_integral.integral_sum_sub_partitions + theorem box_integral.integral_zero + theorem box_integral.norm_integral_le_of_le_const + theorem box_integral.norm_integral_le_of_norm_le Added src/analysis/box_integral/box/basic.lean + theorem box_integral.box.Icc_def + theorem box_integral.box.Icc_eq_pi + theorem box_integral.box.antitone_lower + theorem box_integral.box.bUnion_coe_eq_coe + theorem box_integral.box.coe_bot + theorem box_integral.box.coe_coe + theorem box_integral.box.coe_eq_pi + theorem box_integral.box.coe_inf + theorem box_integral.box.coe_inj + theorem box_integral.box.coe_mk' + theorem box_integral.box.coe_ne_empty + theorem box_integral.box.coe_subset_Icc + theorem box_integral.box.coe_subset_coe + theorem box_integral.box.continuous_on_face_Icc + theorem box_integral.box.diam_Icc_le_of_distortion_le + theorem box_integral.box.disjoint_coe + theorem box_integral.box.disjoint_with_bot_coe + theorem box_integral.box.dist_le_distortion_mul + def box_integral.box.distortion + theorem box_integral.box.distortion_eq_of_sub_eq_div + theorem box_integral.box.empty_ne_coe + theorem box_integral.box.exists_mem + theorem box_integral.box.ext + def box_integral.box.face + theorem box_integral.box.face_mk + theorem box_integral.box.face_mono + theorem box_integral.box.injective_coe + theorem box_integral.box.is_some_iff + theorem box_integral.box.le_def + theorem box_integral.box.le_iff_Icc + theorem box_integral.box.le_iff_bounds + theorem box_integral.box.le_tfae + theorem box_integral.box.lower_le_upper + theorem box_integral.box.lower_mem_Icc + theorem box_integral.box.maps_to_insert_nth_face + theorem box_integral.box.maps_to_insert_nth_face_Icc + theorem box_integral.box.mem_coe + theorem box_integral.box.mem_def + theorem box_integral.box.mem_mk + theorem box_integral.box.mem_univ_Ioc + def box_integral.box.mk' + theorem box_integral.box.mk'_eq_bot + theorem box_integral.box.mk'_eq_coe + theorem box_integral.box.monotone_upper + theorem box_integral.box.ne_of_disjoint_coe + theorem box_integral.box.nndist_le_distortion_mul + theorem box_integral.box.nonempty_coe + theorem box_integral.box.not_disjoint_coe_iff_nonempty_inter + theorem box_integral.box.upper_mem + theorem box_integral.box.upper_mem_Icc + theorem box_integral.box.with_bot_coe_inj + theorem box_integral.box.with_bot_coe_subset_iff + structure box_integral.box Added src/analysis/box_integral/box/subbox_induction.lean + theorem box_integral.box.Union_coe_split_center_box + theorem box_integral.box.disjoint_split_center_box + theorem box_integral.box.exists_mem_split_center_box + theorem box_integral.box.injective_split_center_box + theorem box_integral.box.mem_split_center_box + def box_integral.box.split_center_box + def box_integral.box.split_center_box_emb + theorem box_integral.box.split_center_box_le + theorem box_integral.box.subbox_induction_on' + theorem box_integral.box.upper_sub_lower_split_center_box Added src/analysis/box_integral/divergence_theorem.lean + theorem box_integral.has_integral_bot_divergence_of_forall_has_deriv_within_at + theorem box_integral.has_integral_bot_pderiv + theorem box_integral.norm_volume_sub_integral_face_upper_sub_lower_smul_le Added src/analysis/box_integral/integrability.lean + theorem box_integral.has_integral.congr_ae + theorem box_integral.has_integral_indicator_const + theorem box_integral.has_integral_zero_of_ae_eq_zero + theorem measure_theory.integrable_on.has_box_integral + theorem measure_theory.simple_func.box_integral_eq_integral + theorem measure_theory.simple_func.has_box_integral Added src/analysis/box_integral/partition/additive.lean + theorem box_integral.box_additive_map.coe_inj + theorem box_integral.box_additive_map.coe_injective + theorem box_integral.box_additive_map.coe_mk + def box_integral.box_additive_map.map + theorem box_integral.box_additive_map.map_split_add + def box_integral.box_additive_map.of_map_split_add + def box_integral.box_additive_map.restrict + theorem box_integral.box_additive_map.sum_boxes_congr + theorem box_integral.box_additive_map.sum_partition_boxes + theorem box_integral.box_additive_map.to_fun_eq_coe + def box_integral.box_additive_map.to_smul + theorem box_integral.box_additive_map.to_smul_apply + def box_integral.box_additive_map.{u} + structure box_integral.box_additive_map Added src/analysis/box_integral/partition/basic.lean + theorem box_integral.prepartition.Union_bUnion + theorem box_integral.prepartition.Union_bUnion_partition + theorem box_integral.prepartition.Union_bot + theorem box_integral.prepartition.Union_def' + theorem box_integral.prepartition.Union_def + theorem box_integral.prepartition.Union_disj_union + theorem box_integral.prepartition.Union_eq_empty + theorem box_integral.prepartition.Union_filter_not + theorem box_integral.prepartition.Union_inf + theorem box_integral.prepartition.Union_mono + theorem box_integral.prepartition.Union_of_with_bot + theorem box_integral.prepartition.Union_restrict + theorem box_integral.prepartition.Union_single + theorem box_integral.prepartition.Union_subset + theorem box_integral.prepartition.Union_top + def box_integral.prepartition.bUnion + theorem box_integral.prepartition.bUnion_assoc + theorem box_integral.prepartition.bUnion_congr + theorem box_integral.prepartition.bUnion_congr_of_le + def box_integral.prepartition.bUnion_index + theorem box_integral.prepartition.bUnion_index_le + theorem box_integral.prepartition.bUnion_index_mem + theorem box_integral.prepartition.bUnion_index_of_mem + theorem box_integral.prepartition.bUnion_le + theorem box_integral.prepartition.bUnion_le_iff + theorem box_integral.prepartition.bUnion_top + theorem box_integral.prepartition.bot_boxes + theorem box_integral.prepartition.card_filter_mem_Icc_le + def box_integral.prepartition.disj_union + theorem box_integral.prepartition.disjoint_boxes_of_disjoint_Union + theorem box_integral.prepartition.disjoint_coe_of_mem + def box_integral.prepartition.distortion + theorem box_integral.prepartition.distortion_bUnion + theorem box_integral.prepartition.distortion_bot + theorem box_integral.prepartition.distortion_disj_union + theorem box_integral.prepartition.distortion_le_iff + theorem box_integral.prepartition.distortion_le_of_mem + theorem box_integral.prepartition.distortion_of_const + theorem box_integral.prepartition.distortion_top + theorem box_integral.prepartition.eq_of_boxes_subset_Union_superset + theorem box_integral.prepartition.eq_of_le + theorem box_integral.prepartition.eq_of_le_of_le + theorem box_integral.prepartition.eq_of_mem_of_mem + theorem box_integral.prepartition.ext + def box_integral.prepartition.filter + theorem box_integral.prepartition.filter_le + theorem box_integral.prepartition.filter_of_true + theorem box_integral.prepartition.filter_true + theorem box_integral.prepartition.inf_def + theorem box_integral.prepartition.inj_on_set_of_mem_Icc_set_of_lower_eq + theorem box_integral.prepartition.injective_boxes + theorem box_integral.prepartition.is_partition.Union_eq + theorem box_integral.prepartition.is_partition.Union_subset + theorem box_integral.prepartition.is_partition.eq_of_boxes_subset + theorem box_integral.prepartition.is_partition.le_iff + theorem box_integral.prepartition.is_partition.nonempty_boxes + def box_integral.prepartition.is_partition + theorem box_integral.prepartition.is_partition_disj_union_of_eq_diff + theorem box_integral.prepartition.is_partition_iff_Union_eq + theorem box_integral.prepartition.is_partition_single_iff + theorem box_integral.prepartition.is_partition_top + theorem box_integral.prepartition.le_bUnion_iff + theorem box_integral.prepartition.le_bUnion_index + theorem box_integral.prepartition.le_def + theorem box_integral.prepartition.le_iff_nonempty_imp_le_and_Union_subset + theorem box_integral.prepartition.le_of_mem + theorem box_integral.prepartition.le_of_with_bot + theorem box_integral.prepartition.lower_le_lower + theorem box_integral.prepartition.mem_Union + theorem box_integral.prepartition.mem_bUnion + theorem box_integral.prepartition.mem_bUnion_index + theorem box_integral.prepartition.mem_boxes + theorem box_integral.prepartition.mem_disj_union + theorem box_integral.prepartition.mem_filter + theorem box_integral.prepartition.mem_inf + theorem box_integral.prepartition.mem_mk + theorem box_integral.prepartition.mem_of_with_bot + theorem box_integral.prepartition.mem_restrict' + theorem box_integral.prepartition.mem_restrict + theorem box_integral.prepartition.mem_single + theorem box_integral.prepartition.mem_top + theorem box_integral.prepartition.monotone_restrict + theorem box_integral.prepartition.not_mem_bot + def box_integral.prepartition.of_with_bot + theorem box_integral.prepartition.of_with_bot_le + theorem box_integral.prepartition.of_with_bot_mono + def box_integral.prepartition.restrict + theorem box_integral.prepartition.restrict_bUnion + theorem box_integral.prepartition.restrict_boxes_of_le + theorem box_integral.prepartition.restrict_mono + theorem box_integral.prepartition.restrict_self + def box_integral.prepartition.single + theorem box_integral.prepartition.subset_Union + theorem box_integral.prepartition.sum_bUnion_boxes + theorem box_integral.prepartition.sum_disj_union_boxes + theorem box_integral.prepartition.sum_fiberwise + theorem box_integral.prepartition.sum_of_with_bot + theorem box_integral.prepartition.top_boxes + theorem box_integral.prepartition.upper_le_upper + structure box_integral.prepartition Added src/analysis/box_integral/partition/filter.lean + def box_integral.integration_params.Henstock + theorem box_integral.integration_params.Henstock_le_McShane + theorem box_integral.integration_params.Henstock_le_Riemann + def box_integral.integration_params.McShane + def box_integral.integration_params.Riemann + theorem box_integral.integration_params.bUnion_tagged_mem_base_set + def box_integral.integration_params.equiv_prod + theorem box_integral.integration_params.eventually_is_partition + theorem box_integral.integration_params.exists_mem_base_set_is_partition + theorem box_integral.integration_params.exists_mem_base_set_le_Union_eq + theorem box_integral.integration_params.has_basis_to_filter + theorem box_integral.integration_params.has_basis_to_filter_Union + theorem box_integral.integration_params.has_basis_to_filter_Union_top + theorem box_integral.integration_params.has_basis_to_filter_distortion + theorem box_integral.integration_params.has_basis_to_filter_distortion_Union + def box_integral.integration_params.iso_prod + theorem box_integral.integration_params.mem_base_set.exists_common_compl + theorem box_integral.integration_params.mem_base_set.mono' + theorem box_integral.integration_params.mem_base_set.mono + structure box_integral.integration_params.mem_base_set + theorem box_integral.integration_params.r_cond.min + theorem box_integral.integration_params.r_cond.mono + def box_integral.integration_params.r_cond + theorem box_integral.integration_params.r_cond_of_bRiemann_eq_ff + theorem box_integral.integration_params.tendsto_embed_box_to_filter_Union_top + def box_integral.integration_params.to_filter + def box_integral.integration_params.to_filter_Union + theorem box_integral.integration_params.to_filter_Union_congr + theorem box_integral.integration_params.to_filter_Union_mono + def box_integral.integration_params.to_filter_distortion + def box_integral.integration_params.to_filter_distortion_Union + theorem box_integral.integration_params.to_filter_distortion_Union_ne_bot + theorem box_integral.integration_params.to_filter_distortion_mono + theorem box_integral.integration_params.to_filter_inf_Union_eq + theorem box_integral.integration_params.to_filter_mono + structure box_integral.integration_params Added src/analysis/box_integral/partition/measure.lean + theorem box_integral.box.measurable_set_Icc + theorem box_integral.box.measurable_set_coe + theorem box_integral.box.measure_Icc_lt_top + theorem box_integral.box.measure_coe_lt_top + theorem box_integral.box.volume_apply + theorem box_integral.box.volume_face_mul + theorem box_integral.box_additive_map.volume_apply + theorem box_integral.prepartition.measure_Union_to_real + def measure_theory.measure.to_box_additive Added src/analysis/box_integral/partition/split.lean + theorem box_integral.box.coe_split_lower + theorem box_integral.box.coe_split_upper + theorem box_integral.box.disjoint_split_lower_split_upper + def box_integral.box.split_lower + theorem box_integral.box.split_lower_def + theorem box_integral.box.split_lower_eq_bot + theorem box_integral.box.split_lower_eq_self + theorem box_integral.box.split_lower_le + theorem box_integral.box.split_lower_ne_split_upper + def box_integral.box.split_upper + theorem box_integral.box.split_upper_def + theorem box_integral.box.split_upper_eq_bot + theorem box_integral.box.split_upper_eq_self + theorem box_integral.box.split_upper_le + theorem box_integral.prepartition.Union_compl + theorem box_integral.prepartition.Union_split + theorem box_integral.prepartition.Union_split_many + theorem box_integral.prepartition.coe_eq_of_mem_split_of_lt_mem + theorem box_integral.prepartition.coe_eq_of_mem_split_of_mem_le + def box_integral.prepartition.compl + theorem box_integral.prepartition.compl_congr + theorem box_integral.prepartition.compl_top + theorem box_integral.prepartition.eventually_not_disjoint_imp_le_of_mem_split_many + theorem box_integral.prepartition.eventually_split_many_inf_eq_filter + theorem box_integral.prepartition.exists_Union_eq_diff + theorem box_integral.prepartition.exists_split_many_inf_eq_filter_of_finite + theorem box_integral.prepartition.inf_split + theorem box_integral.prepartition.inf_split_many + theorem box_integral.prepartition.is_partition.compl_eq_bot + theorem box_integral.prepartition.is_partition.exists_split_many_le + theorem box_integral.prepartition.is_partition_split + theorem box_integral.prepartition.is_partition_split_many + theorem box_integral.prepartition.mem_split_iff' + theorem box_integral.prepartition.mem_split_iff + theorem box_integral.prepartition.not_disjoint_imp_le_of_subset_of_mem_split_many + theorem box_integral.prepartition.restrict_split + def box_integral.prepartition.split + def box_integral.prepartition.split_many + theorem box_integral.prepartition.split_many_empty + theorem box_integral.prepartition.split_many_insert + theorem box_integral.prepartition.split_many_le_split + theorem box_integral.prepartition.split_of_not_mem_Ioo + theorem box_integral.prepartition.sum_split_boxes Added src/analysis/box_integral/partition/subbox_induction.lean + theorem box_integral.box.exists_tagged_partition_is_Henstock_is_subordinate_homothetic + theorem box_integral.box.subbox_induction_on + theorem box_integral.prepartition.Union_to_subordinate + theorem box_integral.prepartition.distortion_to_subordinate + theorem box_integral.prepartition.exists_tagged_le_is_Henstock_is_subordinate_Union_eq + theorem box_integral.prepartition.is_Henstock_to_subordinate + theorem box_integral.prepartition.is_partition_split_center + theorem box_integral.prepartition.is_subordinate_to_subordinate + theorem box_integral.prepartition.mem_split_center + def box_integral.prepartition.split_center + def box_integral.prepartition.to_subordinate + theorem box_integral.prepartition.to_subordinate_to_prepartition_le + theorem box_integral.prepartition.upper_sub_lower_of_mem_split_center + theorem box_integral.tagged_prepartition.Union_union_compl_to_subordinate_boxes + theorem box_integral.tagged_prepartition.distortion_union_compl_to_subordinate + theorem box_integral.tagged_prepartition.is_partition_union_compl_to_subordinate + def box_integral.tagged_prepartition.union_compl_to_subordinate + theorem box_integral.tagged_prepartition.union_compl_to_subordinate_boxes Added src/analysis/box_integral/partition/tagged.lean + theorem box_integral.prepartition.Union_bUnion_tagged + def box_integral.prepartition.bUnion_tagged + theorem box_integral.prepartition.distortion_bUnion_tagged + theorem box_integral.prepartition.forall_bUnion_tagged + theorem box_integral.prepartition.is_partition.bUnion_tagged + theorem box_integral.prepartition.mem_bUnion_tagged + theorem box_integral.prepartition.tag_bUnion_tagged + def box_integral.tagged_prepartition.Union + theorem box_integral.tagged_prepartition.Union_def + theorem box_integral.tagged_prepartition.Union_disj_union + theorem box_integral.tagged_prepartition.Union_filter_not + theorem box_integral.tagged_prepartition.Union_mk + theorem box_integral.tagged_prepartition.Union_single + theorem box_integral.tagged_prepartition.Union_subset + theorem box_integral.tagged_prepartition.Union_to_prepartition + def box_integral.tagged_prepartition.bUnion_prepartition + def box_integral.tagged_prepartition.disj_union + theorem box_integral.tagged_prepartition.disj_union_boxes + theorem box_integral.tagged_prepartition.disj_union_tag_of_mem_left + theorem box_integral.tagged_prepartition.disj_union_tag_of_mem_right + def box_integral.tagged_prepartition.distortion + theorem box_integral.tagged_prepartition.distortion_bUnion_prepartition + theorem box_integral.tagged_prepartition.distortion_disj_union + theorem box_integral.tagged_prepartition.distortion_filter_le + theorem box_integral.tagged_prepartition.distortion_le_iff + theorem box_integral.tagged_prepartition.distortion_le_of_mem + theorem box_integral.tagged_prepartition.distortion_of_const + theorem box_integral.tagged_prepartition.distortion_single + def box_integral.tagged_prepartition.embed_box + def box_integral.tagged_prepartition.filter + theorem box_integral.tagged_prepartition.forall_mem_single + def box_integral.tagged_prepartition.inf_prepartition + theorem box_integral.tagged_prepartition.inf_prepartition_to_prepartition + theorem box_integral.tagged_prepartition.is_Henstock.card_filter_tag_eq_le + theorem box_integral.tagged_prepartition.is_Henstock.disj_union + def box_integral.tagged_prepartition.is_Henstock + theorem box_integral.tagged_prepartition.is_Henstock_bUnion_tagged + theorem box_integral.tagged_prepartition.is_Henstock_single + theorem box_integral.tagged_prepartition.is_Henstock_single_iff + theorem box_integral.tagged_prepartition.is_partition.bUnion_prepartition + theorem box_integral.tagged_prepartition.is_partition.inf_prepartition + def box_integral.tagged_prepartition.is_partition + theorem box_integral.tagged_prepartition.is_partition_iff_Union_eq + theorem box_integral.tagged_prepartition.is_partition_single + theorem box_integral.tagged_prepartition.is_partition_single_iff + theorem box_integral.tagged_prepartition.is_subordinate.bUnion_prepartition + theorem box_integral.tagged_prepartition.is_subordinate.diam_le + theorem box_integral.tagged_prepartition.is_subordinate.disj_union + theorem box_integral.tagged_prepartition.is_subordinate.inf_prepartition + theorem box_integral.tagged_prepartition.is_subordinate.mono' + theorem box_integral.tagged_prepartition.is_subordinate.mono + def box_integral.tagged_prepartition.is_subordinate + theorem box_integral.tagged_prepartition.is_subordinate_bUnion_tagged + theorem box_integral.tagged_prepartition.is_subordinate_single + theorem box_integral.tagged_prepartition.mem_Union + theorem box_integral.tagged_prepartition.mem_disj_union + theorem box_integral.tagged_prepartition.mem_filter + theorem box_integral.tagged_prepartition.mem_inf_prepartition_comm + theorem box_integral.tagged_prepartition.mem_mk + theorem box_integral.tagged_prepartition.mem_single + theorem box_integral.tagged_prepartition.mem_to_prepartition + def box_integral.tagged_prepartition.single + theorem box_integral.tagged_prepartition.subset_Union + structure box_integral.tagged_prepartition Modified src/data/set/lattice.lean + theorem set.bUnion_diff_bUnion_eq + theorem set.bUnion_diff_bUnion_subset Modified src/logic/function/basic.lean + theorem function.exists_update_iff Modified src/topology/metric_space/basic.lean + theorem real.dist_le_of_mem_pi_Icc 2021-10-18 23:50:42 5eee6a2 refactor(ring_theory/adjoin/fg): replace a fragile convert with rewrites (#9786) ESTIMATED CHANGES Modified src/ring_theory/adjoin/fg.lean 2021-10-18 23:50:41 98d07d3 refactor(algebra/order): replace typeclasses with constructors (#9725) This RFC suggests removing some unused classes for the ordered algebra hierarchy, replacing them with constructors We have `nonneg_add_comm_group extends add_comm_group`, and an instance from this to `ordered_add_comm_group`. The intention is to be able to construct an `ordered_add_comm_group` by specifying its positive cone, rather than directly its order. There are then `nonneg_ring` and `linear_nonneg_ring`, similarly. (None of these are actually used later in mathlib at this point.) ESTIMATED CHANGES Modified src/algebra/order/group.lean + structure add_comm_group.positive_cone + structure add_comm_group.total_positive_cone + def linear_ordered_add_comm_group.mk_of_positive_cone - theorem nonneg_add_comm_group.nonneg_def - theorem nonneg_add_comm_group.nonneg_total_iff - theorem nonneg_add_comm_group.not_zero_pos - theorem nonneg_add_comm_group.pos_def - def nonneg_add_comm_group.to_linear_ordered_add_comm_group - theorem nonneg_add_comm_group.zero_lt_iff_nonneg_nonneg + def ordered_add_comm_group.mk_of_positive_cone Modified src/algebra/order/ring.lean - def linear_nonneg_ring.to_linear_order - def linear_nonneg_ring.to_linear_ordered_comm_ring - def linear_nonneg_ring.to_linear_ordered_ring + def linear_ordered_ring.mk_of_positive_cone - def nonneg_ring.to_linear_nonneg_ring + def ordered_ring.mk_of_positive_cone + structure ring.positive_cone + structure ring.total_positive_cone 2021-10-18 23:50:40 442382d feat(tactic/to_additive): Improvements to to_additive (#5487) Change a couple of things in to_additive: - First add a `tactic.copy_attribute'` intended for user attributes with parameters very similar to `tactic.copy_attribute` that just copies the parameter over when setting the attribute. This allows to_additive after many other attributes to transfer those attributes properly (e.g. norm_cast) - Have to additive register generated equation lemmas as such, this necessitates a bit of restructuring, first all declarations must be generated (including equational lemmas), then the equational lemmas need their attributes, then they are registered as equation lemmas, finally the attributes are added to the main declaration. - I also fixup the library in many places to account for these changes simplifying the source files, only one new lemma was added, in src/analysis/normed/group/quotient.lean `quotient_norm_mk_le'` to replace the unprimed version in the proof of `norm_normed_mk_le` as simp got better thanks to the new simp lemmas introduced by this PR. Probably many more handwritten additive versions can now be deleted in a future PR, especially defs and instances. - All other library changes are just simplifications by using to additive for some hand generated declarations, and many more attributes on the generated lemmas. - The attribute mono is trickier as it contains for its parameter not actual exprs containing names but exprs making names from strings, so I don't see how to handle it right now. We now warn the user about this, and fix the library in a couple of places. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/filtered_colimits.lean Modified src/algebra/free.lean Modified src/algebra/free_monoid.lean Modified src/algebra/group/basic.lean Modified src/algebra/group/defs.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/units.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_power/order.lean Modified src/algebra/order/monoid.lean +/- theorem with_top.coe_eq_one +/- theorem with_top.coe_one +/- theorem with_top.one_eq_coe Modified src/analysis/normed/group/quotient.lean + theorem quotient_norm_mk_le' +/- theorem quotient_norm_sub_rev Modified src/data/dfinsupp.lean - def dfinsupp.sum Modified src/data/equiv/mul_add.lean - def add_monoid_hom.to_add_equiv Modified src/data/equiv/mul_add_aut.lean Modified src/data/finsupp/basic.lean - def finsupp.sum Modified src/data/multiset/basic.lean Modified src/group_theory/congruence.lean Modified src/group_theory/coset.lean +/- theorem left_coset_assoc +/- theorem one_left_coset +/- theorem right_coset_assoc +/- theorem right_coset_one Modified src/group_theory/group_action/defs.lean Modified src/group_theory/monoid_localization.lean +/- theorem submonoid.localization_map.ext Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup/basic.lean +/- theorem subgroup.to_submonoid_strict_mono Modified src/group_theory/submonoid/basic.lean +/- theorem monoid_hom.coe_of_mdense Modified src/group_theory/submonoid/membership.lean Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.coe_mul +/- theorem submonoid.coe_one Modified src/measure_theory/function/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.mk_div Modified src/order/filter/germ.lean Modified src/tactic/transform_decl.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean +/- theorem open_subgroup.coe_inf +/- theorem open_subgroup.coe_subgroup_le +/- theorem open_subgroup.coe_subset +/- theorem open_subgroup.mem_coe +/- theorem open_subgroup.mem_coe_opens Modified src/topology/tactic.lean Modified test/to_additive.lean - def foo0 - def foo1 - def foo2 - def foo3 - theorem foo4_test - def foo5 - def foo6 - def foo7 - def foo_mul - def nat_pi_has_one - def pi_nat_has_one - def some_def.in_namespace - def some_def + def test.foo0 + def test.foo1 + def test.foo2 + def test.foo3 + theorem test.foo4_test + def test.foo5 + def test.foo6 + def test.foo7 + def test.foo_mul + def test.nat_pi_has_one + def test.pi_nat_has_one + def test.some_def.in_namespace + def test.some_def + def test.{a - def {a 2021-10-18 21:08:15 8b7e16f feat(tactic/lint): improve check_univs linter (#9698) * `check_univs` now only checks the type of `d` and ignores `d._proof_i` subterms * move `expr.univ_params_grouped` to the linter file (it seems increasingly unlikely that this has a use in other applications) * We now don't test automatically generated declarations anymore. ESTIMATED CHANGES Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/Groupoid.lean Modified src/category_theory/category/Quiv.lean Modified src/meta/expr.lean Modified src/model_theory/basic.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/zfc.lean Modified src/tactic/lint/misc.lean 2021-10-18 17:55:59 b112d4d refactor(ring_theory/ideal/operations): generalize various definitions to remove negation and commutativity (#9737) Mostly this just weakens assumptions in `variable`s lines, but occasionally this moves lemmas to a more appropriate section too. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.comap_is_maximal_of_surjective +/- theorem ideal.comap_le_iff_le_map +/- theorem ideal.comap_map_of_surjective +/- theorem ideal.map.is_maximal +/- theorem ideal.map_eq_top_or_is_maximal_of_surjective +/- def ideal.rel_iso_of_surjective +/- theorem ideal.subset_union +/- theorem ideal.subset_union_prime' +/- theorem ideal.subset_union_prime Modified src/ring_theory/jacobson.lean 2021-10-18 16:41:10 71c203a feat(analysis/normed/group/SemiNormedGroup/completion): add SemiNormedGroup.Completion (#9788) From LTE. ESTIMATED CHANGES Added src/analysis/normed/group/SemiNormedGroup/completion.lean + def SemiNormedGroup.Completion.incl + def SemiNormedGroup.Completion.lift + theorem SemiNormedGroup.Completion.lift_comp_incl + theorem SemiNormedGroup.Completion.lift_unique + def SemiNormedGroup.Completion.map_hom + theorem SemiNormedGroup.Completion.map_norm_noninc + theorem SemiNormedGroup.Completion.map_zero + theorem SemiNormedGroup.Completion.norm_incl_eq + def SemiNormedGroup.Completion Modified src/analysis/normed/group/hom_completion.lean + def normed_group_hom.extension + theorem normed_group_hom.extension_coe + theorem normed_group_hom.extension_coe_to_fun + theorem normed_group_hom.extension_def + theorem normed_group_hom.extension_unique 2021-10-18 16:41:09 80071d4 refactor(algebra/floor): Add `ceil` as a field of `floor_ring` (#9591) This allows more control on definitional equality. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/floor.lean + def floor_ring.of_ceil + def floor_ring.of_floor +/- def int.ceil +/- theorem int.ceil_eq_iff +/- theorem int.ceil_le +/- theorem int.ceil_mono +/- theorem int.ceil_neg +/- theorem int.ceil_nonneg +/- theorem int.ceil_pos +/- theorem int.floor_eq_iff +/- theorem int.floor_le +/- theorem int.floor_lt +/- theorem int.floor_mono +/- theorem int.floor_neg +/- theorem int.floor_nonneg + theorem int.floor_ring_ceil_eq + theorem int.floor_ring_floor_eq + theorem int.gc_ceil_coe + theorem int.gc_coe_floor +/- theorem int.le_ceil +/- theorem int.le_floor +/- theorem int.lt_ceil +/- theorem int.preimage_Ici +/- theorem int.preimage_Iic +/- theorem int.preimage_Iio +/- theorem int.preimage_Ioi +/- theorem nat.ceil_add_nat +/- theorem nat.ceil_add_one +/- theorem nat.ceil_lt_add_one +/- theorem nat.floor_add_one +/- theorem nat.le_of_ceil_le +/- theorem nat.lt_of_ceil_lt Modified src/data/rat/floor.lean Modified src/topology/algebra/floor_ring.lean 2021-10-18 14:15:51 5ea384e refactor(ring_theory/finiteness): replace fragile convert with rewrites (#9787) ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean + theorem subalgebra.coe_restrict_scalars Modified src/ring_theory/finiteness.lean 2021-10-18 14:15:49 6f4aea4 feat(data/set/pairwise): Simple `pairwise_disjoint` lemmas (#9764) ESTIMATED CHANGES Modified src/algebra/support.lean Modified src/data/finset/basic.lean +/- theorem finset.disjoint_singleton + theorem finset.disjoint_singleton_left + theorem finset.disjoint_singleton_right - theorem finset.singleton_disjoint Modified src/data/finsupp/basic.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/data/set/lattice.lean + theorem set.disjoint_singleton Modified src/data/set/pairwise.lean +/- theorem set.pairwise_disjoint.elim' +/- theorem set.pairwise_disjoint.elim + theorem set.pairwise_disjoint.image_of_le + theorem set.pairwise_disjoint.insert +/- theorem set.pairwise_disjoint.range +/- theorem set.pairwise_disjoint.subset + theorem set.pairwise_disjoint_empty + theorem set.pairwise_disjoint_insert + theorem set.pairwise_disjoint_range_singleton + theorem set.pairwise_disjoint_singleton Modified src/geometry/euclidean/circumcenter.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/measure_theory/integral/bochner.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/separation.lean 2021-10-18 12:53:50 116e426 chore(group_theory/order_of_element): order_of_units (#9777) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem order_of_units 2021-10-18 12:53:48 a7ac699 feat(topology/metric_space): dimH is the supr of local dimH (#9741) ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_dimension.lean + theorem bsupr_limsup_dimH + theorem exists_mem_nhds_within_lt_dimH_of_lt_dimH + theorem supr_limsup_dimH 2021-10-18 12:53:47 06179ca feat(data/real/pointwise): Inf and Sup of `a • s` for `s : set ℝ` (#9707) This relates `Inf (a • s)`/`Sup (a • s)` with `a • Inf s`/`a • Sup s` for `s : set ℝ`. ESTIMATED CHANGES Added src/data/real/pointwise.lean + theorem real.Inf_smul_of_nonneg + theorem real.Inf_smul_of_nonpos + theorem real.Sup_smul_of_nonneg + theorem real.Sup_smul_of_nonpos 2021-10-18 11:21:22 e841325 feat(linear_algebra/dfinsupp): cardinality lemmas for `complete_lattice.independent` (#9705) If `p` is a system of independent subspaces of a vector space `V`, and `v` is a system of nonzero vectors each contained in the corresponding subspace, then `v` is linearly independent. Consequently, if `p` is a system of independent subspaces of `V`, then no more than `dim V` many can be nontrivial. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- def linear_map.to_span_singleton Modified src/linear_algebra/dfinsupp.lean +/- theorem complete_lattice.independent.dfinsupp_lsum_injective + theorem complete_lattice.independent.linear_independent +/- theorem complete_lattice.independent_iff_dfinsupp_lsum_injective +/- theorem complete_lattice.independent_iff_forall_dfinsupp +/- theorem complete_lattice.independent_of_dfinsupp_lsum_injective + theorem complete_lattice.lsum_comp_map_range_to_span_singleton Modified src/linear_algebra/dimension.lean + theorem cardinal_lift_le_dim_of_linear_independent' + theorem complete_lattice.independent.subtype_ne_bot_le_rank Modified src/linear_algebra/finite_dimensional.lean + theorem complete_lattice.independent.subtype_ne_bot_le_finrank + theorem complete_lattice.independent.subtype_ne_bot_le_finrank_aux 2021-10-18 09:32:36 39db98c feat(analysis/normed_space/add_torsor_bases): the convex hull has non-empty interior iff the affine span is top (#9727) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem affine_subspace.convex Modified src/analysis/convex/hull.lean + theorem affine_span_convex_hull +/- theorem convex_hull_mono + theorem convex_hull_subset_affine_span Modified src/analysis/normed_space/add_torsor_bases.lean + theorem interior_convex_hull_nonempty_iff_aff_span_eq_top Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_map.line_map_mem + theorem affine_span_le Modified src/topology/basic.lean +/- theorem interior_mono 2021-10-18 08:20:00 2e62b33 chore(field_theory/galois): speedup a slow convert (#9782) This was broken by a deterministic timeout in another branch. This replaces a `convert` with an explicit `simp`. ESTIMATED CHANGES Modified src/field_theory/galois.lean 2021-10-18 08:19:59 27d28a8 feat(linear_algebra/affine_space/independent): affine equivalences preserve affine independence of sets of points (#9776) The key addition is `affine_equiv.affine_independent_set_of_eq_iff`. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/independent.lean + theorem affine_equiv.affine_independent_set_of_eq_iff + theorem affine_independent_equiv - theorem affine_map.homothety_affine_independent_iff 2021-10-18 08:19:58 fb5c0be feat(topology/metric_space): closed if spaced out (#9754) If pairwise distances between the points of a set are bounded from below by a positive number, then the set is closed. Also prove some theorems about `uniform_inducing` and `uniform_embedding` and show that `coe : int → real` is a closed embedding. ESTIMATED CHANGES Modified src/number_theory/liouville/residual.lean Modified src/topology/instances/real.lean - theorem continuous_of_rat - theorem dense_embedding_of_rat - theorem embedding_of_rat + theorem int.closed_embedding_coe_rat + theorem int.closed_embedding_coe_real + theorem int.pairwise_one_le_dist + theorem int.uniform_embedding_coe_rat + theorem rat.continuous_coe_real + theorem rat.dense_embedding_coe_real +/- theorem rat.dist_cast +/- theorem rat.dist_eq + theorem rat.embedding_coe_real + theorem rat.uniform_continuous_coe_real + theorem rat.uniform_embedding_coe_real - theorem uniform_continuous_of_rat - theorem uniform_embedding_of_rat Modified src/topology/instances/real_vector_space.lean Modified src/topology/metric_space/basic.lean + theorem metric.closed_embedding_of_pairwise_le_dist + theorem metric.is_closed_of_pairwise_on_le_dist + theorem metric.uniform_embedding_bot_of_pairwise_le_dist Modified src/topology/uniform_space/basic.lean + theorem mem_uniformity_of_eq Modified src/topology/uniform_space/compare_reals.lean Modified src/topology/uniform_space/separation.lean + theorem is_closed_range_of_spaced_out Modified src/topology/uniform_space/uniform_embedding.lean + theorem closed_embedding_of_spaced_out + theorem comap_uniformity_of_spaced_out + theorem uniform_embedding_of_spaced_out + theorem uniform_inducing.basis_uniformity + theorem uniform_inducing.uniform_embedding 2021-10-18 05:53:11 6cd6ff4 split(data/list/permutation): split off `data.list.basic` (#9749) This moves all the `list.permutations` definitions and lemmas not involving `list.perm` to a new file. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.foldr_permutations_aux2 - theorem list.length_foldr_permutations_aux2' - theorem list.length_foldr_permutations_aux2 - theorem list.length_permutations_aux2 - theorem list.map_map_permutations'_aux - theorem list.map_map_permutations_aux2 - theorem list.map_permutations' - theorem list.map_permutations - theorem list.map_permutations_aux2' - theorem list.map_permutations_aux2 - theorem list.map_permutations_aux - theorem list.mem_foldr_permutations_aux2 - theorem list.mem_permutations_aux2' - theorem list.mem_permutations_aux2 - theorem list.permutations'_aux_eq_permutations_aux2 - theorem list.permutations_append - theorem list.permutations_aux2_append - theorem list.permutations_aux2_comp_append - theorem list.permutations_aux2_fst - theorem list.permutations_aux2_snd_cons - theorem list.permutations_aux2_snd_eq - theorem list.permutations_aux2_snd_nil - theorem list.permutations_aux_append - theorem list.permutations_aux_cons - theorem list.permutations_aux_nil - theorem list.permutations_nil Modified src/data/list/defs.lean Modified src/data/list/perm.lean Added src/data/list/permutation.lean + theorem list.foldr_permutations_aux2 + theorem list.length_foldr_permutations_aux2' + theorem list.length_foldr_permutations_aux2 + theorem list.length_permutations_aux2 + theorem list.map_map_permutations'_aux + theorem list.map_map_permutations_aux2 + theorem list.map_permutations' + theorem list.map_permutations + theorem list.map_permutations_aux2' + theorem list.map_permutations_aux2 + theorem list.map_permutations_aux + theorem list.mem_foldr_permutations_aux2 + theorem list.mem_permutations_aux2' + theorem list.mem_permutations_aux2 + theorem list.permutations'_aux_eq_permutations_aux2 + theorem list.permutations_append + theorem list.permutations_aux2_append + theorem list.permutations_aux2_comp_append + theorem list.permutations_aux2_fst + theorem list.permutations_aux2_snd_cons + theorem list.permutations_aux2_snd_eq + theorem list.permutations_aux2_snd_nil + theorem list.permutations_aux_append + theorem list.permutations_aux_cons + theorem list.permutations_aux_nil + theorem list.permutations_nil 2021-10-18 02:28:14 5b527bd refactor(linear_algebra/quadratic_form): split file (#9781) The section on quadratic forms over complex numbers required pulling in the developing of the complex power function, which significantly increases the import depth. Splitting this file allows `clifford_algebra` to be compiled much earlier. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean Renamed src/linear_algebra/quadratic_form.lean to src/linear_algebra/quadratic_form/basic.lean - theorem quadratic_form.equivalent_one_neg_one_weighted_sum_squared - theorem quadratic_form.equivalent_one_zero_neg_one_weighted_sum_squared - theorem quadratic_form.equivalent_sum_squares Added src/linear_algebra/quadratic_form/complex.lean + theorem quadratic_form.equivalent_sum_squares Added src/linear_algebra/quadratic_form/real.lean + theorem quadratic_form.equivalent_one_neg_one_weighted_sum_squared + theorem quadratic_form.equivalent_one_zero_neg_one_weighted_sum_squared 2021-10-17 21:55:29 27a777b feat(data/nat/gcd): `coprime.lcm_eq_mul` (#9761) Surprisingly, this result doesn't seem to be present yet. ESTIMATED CHANGES Modified src/data/nat/gcd.lean +/- theorem nat.coprime.gcd_eq_one + theorem nat.coprime.lcm_eq_mul 2021-10-17 20:43:58 5dbe8c4 feat(topology/metric_space): a map with a contracting iterate has a fixed pt (#9760) ESTIMATED CHANGES Modified src/topology/metric_space/contracting.lean + theorem contracting_with.is_fixed_pt_fixed_point_iterate 2021-10-17 18:13:16 084702d chore(analysis/normed_algebra/exponential): golf, generalize (#9740) * move `real.summable_pow_div_factorial` to `analysis.specific_limits`, golf the proof; * use recently added lemma `inv_nat_cast_smul_eq` to golf the proof of equality of exponentials defined using different fields and generalize the statement: we no longer require one field to be a normed algebra over another. * rename `exp_eq_exp_of_field_extension` → `exp_eq_exp` and `exp_series_eq_exp_series_of_field_extension` → `exp_series_eq_exp_series` because we no longer require `[normed_algebra 𝕂 𝕂']`. ESTIMATED CHANGES Modified src/algebra/order/field.lean +/- theorem div_le_div_of_le_left Modified src/analysis/normed_space/exponential.lean + theorem exp_eq_exp - theorem exp_eq_exp_of_field_extension + theorem exp_series_eq_exp_series - theorem exp_series_eq_exp_series_of_field_extension Modified src/analysis/specific_limits.lean + theorem real.summable_pow_div_factorial + theorem real.tendsto_pow_div_factorial_at_top Modified src/data/nat/cast.lean +/- theorem nat.cast_lt +/- theorem nat.mono_cast 2021-10-17 13:18:35 376bba8 chore(data/finset/lattice): fix infi docstrings (#9775) ESTIMATED CHANGES Modified src/data/finset/lattice.lean 2021-10-17 13:18:34 41b5645 chore(topology/algebra/ordered/basic): move code out of `basic` (#9772) ESTIMATED CHANGES Modified src/data/real/sqrt.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/topology/algebra/group.lean + theorem tendsto_inv_nhds_within_Ici + theorem tendsto_inv_nhds_within_Ici_inv + theorem tendsto_inv_nhds_within_Iic + theorem tendsto_inv_nhds_within_Iic_inv + theorem tendsto_inv_nhds_within_Iio + theorem tendsto_inv_nhds_within_Iio_inv + theorem tendsto_inv_nhds_within_Ioi + theorem tendsto_inv_nhds_within_Ioi_inv Modified src/topology/algebra/ordered/basic.lean - theorem continuous.exists_forall_ge - theorem continuous.exists_forall_le - theorem continuous_at_iff_continuous_left'_right' - theorem continuous_at_iff_continuous_left_right - theorem continuous_at_left_of_monotone_on_of_closure_image_mem_nhds_within - theorem continuous_at_left_of_monotone_on_of_exists_between - theorem continuous_at_left_of_monotone_on_of_image_mem_nhds_within - theorem continuous_at_of_monotone_on_of_closure_image_mem_nhds - theorem continuous_at_of_monotone_on_of_exists_between - theorem continuous_at_of_monotone_on_of_image_mem_nhds - theorem continuous_at_right_of_monotone_on_of_closure_image_mem_nhds_within - theorem continuous_at_right_of_monotone_on_of_exists_between - theorem continuous_at_right_of_monotone_on_of_image_mem_nhds_within - theorem continuous_within_at_Iio_iff_Iic - theorem continuous_within_at_Ioi_iff_Ici - theorem eq_Icc_of_connected_compact - theorem is_compact.Inf_mem - theorem is_compact.Sup_mem - theorem is_compact.exists_Inf_image_eq - theorem is_compact.exists_Sup_image_eq - theorem is_compact.exists_forall_ge - theorem is_compact.exists_forall_le - theorem is_compact.exists_is_glb - theorem is_compact.exists_is_greatest - theorem is_compact.exists_is_least - theorem is_compact.exists_is_lub - theorem is_compact.is_glb_Inf - theorem is_compact.is_greatest_Sup - theorem is_compact.is_least_Inf - theorem is_compact.is_lub_Sup - theorem is_compact_Icc - theorem is_compact_interval - theorem is_compact_pi_Icc - theorem monotone.continuous_of_dense_range - theorem monotone.continuous_of_surjective - theorem nhds_left'_sup_nhds_right - theorem nhds_left_sup_nhds_right' - theorem nhds_left_sup_nhds_right - theorem order_iso.coe_to_homeomorph - theorem order_iso.coe_to_homeomorph_symm - def order_iso.to_homeomorph - theorem strict_mono_on.continuous_at_left_of_closure_image_mem_nhds_within - theorem strict_mono_on.continuous_at_left_of_exists_between - theorem strict_mono_on.continuous_at_left_of_image_mem_nhds_within - theorem strict_mono_on.continuous_at_left_of_surj_on - theorem strict_mono_on.continuous_at_of_closure_image_mem_nhds - theorem strict_mono_on.continuous_at_of_exists_between - theorem strict_mono_on.continuous_at_of_image_mem_nhds - theorem strict_mono_on.continuous_at_right_of_closure_image_mem_nhds_within - theorem strict_mono_on.continuous_at_right_of_exists_between - theorem strict_mono_on.continuous_at_right_of_image_mem_nhds_within - theorem strict_mono_on.continuous_at_right_of_surj_on - theorem tendsto_inv_nhds_within_Ici - theorem tendsto_inv_nhds_within_Ici_inv - theorem tendsto_inv_nhds_within_Iic - theorem tendsto_inv_nhds_within_Iic_inv - theorem tendsto_inv_nhds_within_Iio - theorem tendsto_inv_nhds_within_Iio_inv - theorem tendsto_inv_nhds_within_Ioi - theorem tendsto_inv_nhds_within_Ioi_inv Added src/topology/algebra/ordered/compact.lean + theorem continuous.exists_forall_ge + theorem continuous.exists_forall_le + theorem eq_Icc_of_connected_compact + theorem is_compact.Inf_mem + theorem is_compact.Sup_mem + theorem is_compact.exists_Inf_image_eq + theorem is_compact.exists_Sup_image_eq + theorem is_compact.exists_forall_ge + theorem is_compact.exists_forall_le + theorem is_compact.exists_is_glb + theorem is_compact.exists_is_greatest + theorem is_compact.exists_is_least + theorem is_compact.exists_is_lub + theorem is_compact.is_glb_Inf + theorem is_compact.is_greatest_Sup + theorem is_compact.is_least_Inf + theorem is_compact.is_lub_Sup + theorem is_compact_Icc + theorem is_compact_interval + theorem is_compact_pi_Icc Added src/topology/algebra/ordered/left_right.lean + theorem continuous_at_iff_continuous_left'_right' + theorem continuous_at_iff_continuous_left_right + theorem continuous_within_at_Iio_iff_Iic + theorem continuous_within_at_Ioi_iff_Ici + theorem nhds_left'_sup_nhds_right + theorem nhds_left_sup_nhds_right' + theorem nhds_left_sup_nhds_right Added src/topology/algebra/ordered/monotone_continuity.lean + theorem continuous_at_left_of_monotone_on_of_closure_image_mem_nhds_within + theorem continuous_at_left_of_monotone_on_of_exists_between + theorem continuous_at_left_of_monotone_on_of_image_mem_nhds_within + theorem continuous_at_of_monotone_on_of_closure_image_mem_nhds + theorem continuous_at_of_monotone_on_of_exists_between + theorem continuous_at_of_monotone_on_of_image_mem_nhds + theorem continuous_at_right_of_monotone_on_of_closure_image_mem_nhds_within + theorem continuous_at_right_of_monotone_on_of_exists_between + theorem continuous_at_right_of_monotone_on_of_image_mem_nhds_within + theorem monotone.continuous_of_dense_range + theorem monotone.continuous_of_surjective + theorem order_iso.coe_to_homeomorph + theorem order_iso.coe_to_homeomorph_symm + def order_iso.to_homeomorph + theorem strict_mono_on.continuous_at_left_of_closure_image_mem_nhds_within + theorem strict_mono_on.continuous_at_left_of_exists_between + theorem strict_mono_on.continuous_at_left_of_image_mem_nhds_within + theorem strict_mono_on.continuous_at_left_of_surj_on + theorem strict_mono_on.continuous_at_of_closure_image_mem_nhds + theorem strict_mono_on.continuous_at_of_exists_between + theorem strict_mono_on.continuous_at_of_image_mem_nhds + theorem strict_mono_on.continuous_at_right_of_closure_image_mem_nhds_within + theorem strict_mono_on.continuous_at_right_of_exists_between + theorem strict_mono_on.continuous_at_right_of_image_mem_nhds_within + theorem strict_mono_on.continuous_at_right_of_surj_on Modified src/topology/instances/ereal.lean Modified src/topology/metric_space/basic.lean 2021-10-17 13:18:32 1432c30 feat(topology/algebra/mul_action): `λ x, c • x` is a closed map for all `c` (#9756) * rename old `is_closed_map_smul₀` to `is_closed_map_smul_of_ne_zero`; * add a new `is_closed_map_smul₀` that assumes more about typeclasses but works for `c = 0`. ESTIMATED CHANGES Modified src/topology/algebra/mul_action.lean + theorem is_closed_map_smul_of_ne_zero +/- theorem is_closed_map_smul₀ 2021-10-17 13:18:31 48dc249 feat(measure_theory/measure): +1 version of Borel-Cantelli, drop an assumption (#9678) * In all versions of Borel-Cantelli lemma, do not require that the sets are measurable. * Add +1 version. * Golf proofs. ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.ae_eventually_not_mem +/- theorem measure_theory.measure_limsup_eq_zero + theorem measure_theory.measure_set_of_frequently_eq_zero 2021-10-17 11:01:38 3f15148 chore(analysis/p_series): use `lift` tactic (#9773) ESTIMATED CHANGES Modified src/analysis/p_series.lean 2021-10-17 11:01:37 9fec8f3 feat(group_theory/index): `index_comap_of_surjective` (#9768) `subgroup.index` is preserved by `subgroup.comap`, provided that the homomorphism is surjective. ESTIMATED CHANGES Modified src/group_theory/index.lean + theorem subgroup.index_comap_of_surjective 2021-10-17 11:01:36 85f3640 feat(topology/instances/ennreal): `{f | lipschitz_with K f}` is a closed set (#9766) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean +/- theorem continuous.edist + theorem is_closed_set_of_lipschitz_on_with + theorem is_closed_set_of_lipschitz_with 2021-10-17 11:01:35 678d7ed chore(data/equiv/mul_add): add missing `to_equiv_mk` (#9765) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem mul_equiv.to_equiv_mk 2021-10-17 11:01:34 24ebeec feat(data/nat/gcd): Add `iff` version of `coprime.dvd_of_dvd_mul` (#9759) Adds `iff` versions of `coprime.dvd_of_dvd_mul_right` and `coprime.dvd_of_dvd_mul_left`. ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime.dvd_mul_left + theorem nat.coprime.dvd_mul_right 2021-10-17 11:01:33 1558a76 feat(group_theory/subgroup/basic): Special cases of `subgroup_of` (#9755) Add four lemmas regarding special cases of `subgroup_of`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.bot_subgroup_of + theorem subgroup.subgroup_of_bot_eq_bot + theorem subgroup.subgroup_of_bot_eq_top + theorem subgroup.top_subgroup_of 2021-10-17 11:01:31 4b00aa2 refactor(ring_theory/jacobson): avoid shadowing hypothesis (#9736) This PR postpones a `rw` in a proof, which was creating a shadowed hypothesis. At present, this shadowing was not a big deal, but in another branch it caused a hard-to-diagnose error. ESTIMATED CHANGES Modified src/ring_theory/jacobson.lean 2021-10-17 11:01:30 5eb47c0 feat(topology/homotopy): Define the fundamental groupoid of a topological space (#9683) ESTIMATED CHANGES Modified src/topology/homotopy/basic.lean + def continuous_map.homotopy.cast + def continuous_map.homotopy_rel.cast + def continuous_map.homotopy_with.cast Added src/topology/homotopy/fundamental_groupoid.lean + def fundamental_groupoid + theorem path.homotopy.continuous_refl_trans_symm_aux + theorem path.homotopy.continuous_trans_assoc_reparam_aux + theorem path.homotopy.continuous_trans_refl_reparam_aux + def path.homotopy.refl_symm_trans + def path.homotopy.refl_trans + def path.homotopy.refl_trans_symm + def path.homotopy.refl_trans_symm_aux + theorem path.homotopy.refl_trans_symm_aux_mem_I + def path.homotopy.trans_assoc + theorem path.homotopy.trans_assoc_reparam + def path.homotopy.trans_assoc_reparam_aux + theorem path.homotopy.trans_assoc_reparam_aux_mem_I + theorem path.homotopy.trans_assoc_reparam_aux_one + theorem path.homotopy.trans_assoc_reparam_aux_zero + def path.homotopy.trans_refl + theorem path.homotopy.trans_refl_reparam + def path.homotopy.trans_refl_reparam_aux + theorem path.homotopy.trans_refl_reparam_aux_mem_I + theorem path.homotopy.trans_refl_reparam_aux_one + theorem path.homotopy.trans_refl_reparam_aux_zero Modified src/topology/homotopy/path.lean + def path.homotopy.cast + def path.homotopy.reparam + def path.homotopy.symm₂ Modified src/topology/path_connected.lean + theorem path.symm_symm + theorem path.trans_apply + theorem path.trans_symm 2021-10-17 08:53:58 f171c61 feat(linear_algebra/affine_space/independent): add `exists_affine_independent` (#9747) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/data/equiv/set.lean Modified src/linear_algebra/affine_space/independent.lean + theorem exists_affine_independent Modified src/linear_algebra/basic.lean + theorem submodule.span_insert_zero Modified src/order/countable_dense_linear_order.lean 2021-10-17 06:23:24 ff8a35d feat(group_theory/subgroup/basic): Kernel of `subtype` and `inclusion` (#9763) `subtype` and `inculusion` are injective, so they have trivial kernel. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.ker_inclusion + theorem subgroup.ker_subtype 2021-10-17 03:34:30 7aa431c chore(group_theory/quotient_group): Tag lemmas with `@[to_additive]` (#9771) Adds `@[to_additive]` to a couple lemmas. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.subgroup_eq_top_of_subsingleton +/- theorem quotient_group.subsingleton_quotient_top 2021-10-17 03:34:29 a1a05ad chore(measure_theory/*): don't require the codomain to be a normed group (#9769) Lemmas like `continuous_on.ae_measurable` are true for any codomain. Also add `continuous.integrable_on_Ioc` and `continuous.integrable_on_interval_oc`. ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean + theorem continuous.integrable_on_Ioc + theorem continuous.integrable_on_interval_oc +/- theorem continuous_on.ae_measurable Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/set_integral.lean + theorem continuous.measurable_at_filter +/- theorem continuous_on.measurable_at_filter_nhds_within 2021-10-17 03:34:28 08a070b chore(topology/instances/ennreal): golf a proof (#9767) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem continuous_of_const + theorem filter.eventually_eq.continuous_at Modified src/topology/instances/ennreal.lean 2021-10-17 02:23:49 4a837fb chore(analysis/normed/group): add a few convenience lemmas (#9770) Add `lipschitz_on_with.norm_sub_le_of_le`, `lipschitz_with.norm_sub_le`, and `lipschitz_with.norm_sub_le_of_le`. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem lipschitz_on_with.norm_sub_le_of_le + theorem lipschitz_with.norm_sub_le_of_le 2021-10-16 23:11:25 cf72eff refactor(group_theory/quotient_group): Fix typo (#9746) Fix typo in `quotient_bot`. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean 2021-10-16 21:46:54 ad7000b feat(set_theory/cardinal): cardinal.to_nat_congr (#9726) If `e : α ≃ β`, then `(cardinal.mk α).to_nat = (cardinal.mk β).to_nat`. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.to_nat_congr + theorem cardinal.to_nat_lift 2021-10-16 20:32:52 b97bb92 feat(set_theory/cardinal): lemmas (#9690) * swap sides of `cardinal.lift_mk`, rename it to `cardinal.mk_ulift`; * add `cardinal.out_mk_equiv`. ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/data/mv_polynomial/cardinal.lean Modified src/linear_algebra/dimension.lean Modified src/set_theory/cardinal.lean - theorem cardinal.lift_mk + theorem cardinal.mk_ulift Modified src/set_theory/cardinal_ordinal.lean 2021-10-16 18:01:16 3fe67d6 feat(analysis/special_functions/integrals): integral of `|x - a| ^ n` over `Ι a b` (#9752) Also use notation for `interval a b` and `interval_oc a b`. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean +/- theorem integral_inv +/- theorem integral_log +/- theorem integral_one_div + theorem integral_pow_abs_sub_interval_oc +/- theorem interval_integral.interval_integrable_inv +/- theorem interval_integral.interval_integrable_log +/- theorem interval_integral.interval_integrable_one_div 2021-10-16 18:01:15 54e9e12 chore(topology/maps): add `is_closed_map.closed_range` (#9751) ESTIMATED CHANGES Modified src/topology/maps.lean + theorem is_closed_map.closed_range 2021-10-16 18:01:14 998ab78 chore(data/list/lex): make data.list.lex not depend on data.list.basic (#9750) Another simplification in list related dependencies, if this commit breaks external code the fix is to add `import data.list.basic` to the broken file. ESTIMATED CHANGES Modified src/data/list/lex.lean 2021-10-16 18:01:13 066a168 feat(topology/G_delta): add lemmas, minor golf (#9742) * the complement to a countable set is a Gδ set; * a closed set is a Gδ set; * finite union of Gδ sets is a Gδ set; * generalize some universe levels in `topology.basic`; * golf a few proofs in `topology.uniform_space.basic`; * add `filter.has_basis.bInter_bUnion_ball`. ESTIMATED CHANGES Modified src/topology/G_delta.lean + theorem finset.is_Gδ_compl +/- theorem is_Gδ_Inter + theorem is_Gδ_bUnion + theorem is_Gδ_compl_singleton +/- theorem is_Gδ_empty +/- theorem is_Gδ_set_of_continuous_at +/- theorem is_Gδ_univ + theorem is_closed.is_Gδ' + theorem is_closed.is_Gδ + theorem set.countable.is_Gδ_compl + theorem set.finite.is_Gδ_compl + theorem set.subsingleton.is_Gδ_compl Modified src/topology/basic.lean +/- theorem mem_closure_iff_nhds_basis' +/- theorem mem_closure_iff_nhds_basis Modified src/topology/uniform_space/basic.lean + theorem filter.has_basis.bInter_bUnion_ball +/- theorem nhds_basis_uniformity' +/- theorem nhds_basis_uniformity 2021-10-16 18:01:11 aa0d0d4 feat(group_theory/subgroup/basic): Range of inclusion (#9732) If `H ≤ K`, then the range of `inclusion : H → K` is `H` (viewed as a subgroup of `K`). ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.inclusion_range 2021-10-16 18:01:10 155f8e6 feat(data/int/succ_pred): `ℤ` is succ- and pred- archimedean (#9731) This provides the instances `succ_order ℤ`, `pred_order ℤ`, `is_succ_archimedean ℤ`, `is_pred_archimedean ℤ`. ESTIMATED CHANGES Added src/data/int/succ_pred.lean + theorem int.pred_iterate + theorem int.succ_iterate Modified src/order/succ_pred.lean + def pred_order.of_le_pred_iff + def pred_order.of_le_pred_iff_of_pred_le_pred - def pred_order.pred_order_of_le_pred_iff - def pred_order.pred_order_of_le_pred_iff_of_pred_le_pred + def succ_order.of_succ_le_iff + def succ_order.of_succ_le_iff_of_le_lt_succ - def succ_order.succ_order_of_succ_le_iff - def succ_order.succ_order_of_succ_le_iff_of_le_lt_succ 2021-10-16 18:01:09 e744033 feat(data/finset/basic, lattice): Simple lemmas (#9723) This proves lemmas about `finset.sup`/`finset.inf` and `finset.singleton`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.nonempty.cons_induction + theorem finset.not_disjoint_iff + theorem finset.singleton_injective Modified src/data/finset/lattice.lean + theorem finset.inf_attach + theorem finset.inf_erase_top +/- theorem finset.inf_image + theorem finset.inf_inf + theorem finset.inf_sdiff_left + theorem finset.inf_sdiff_right + theorem finset.sup_attach + theorem finset.sup_erase_bot +/- theorem finset.sup_image + theorem finset.sup_sdiff_left + theorem finset.sup_sdiff_right + theorem finset.sup_singleton' + theorem finset.sup_sup Modified src/order/lattice.lean + theorem inf_inf_inf_comm + theorem sup_sup_sup_comm 2021-10-16 18:01:08 bf34d9b feat(analysis/normed/group/SemiNormedGroup/kernels): add explicit_cokernel.map (#9712) From LTE. ESTIMATED CHANGES Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean + theorem SemiNormedGroup.explicit_coker.map_desc 2021-10-16 18:01:07 686b363 feat(analysis/normed/group/SemiNormedGroup/kernels): add kernels (#9711) From LTE. ESTIMATED CHANGES Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean + def SemiNormedGroup.parallel_pair_cone 2021-10-16 18:01:06 3d99926 feat(analysis/normed/group/SemiNormedGroup): add iso_isometry_of_norm_noninc (#9710) From LTE. ESTIMATED CHANGES Modified src/analysis/normed/group/SemiNormedGroup.lean + theorem SemiNormedGroup.iso_isometry_of_norm_noninc 2021-10-16 18:01:05 5ac586a feat(algebra/group_power/order): When a power is less than one (#9700) This proves a bunch of simple order lemmas relating `1`, `a` and `a ^ n`. I also move `pow_le_one` upstream as it could already be proved in `algebra.group_power.order` and remove `[nontrivial R]` from `one_lt_pow`. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem pow_le_of_le_one - theorem pow_le_one +/- theorem pow_le_pow_of_le_one + theorem sq_le Modified src/algebra/group_power/order.lean + theorem one_le_pow_iff_of_nonneg + theorem one_le_sq_iff +/- theorem one_lt_pow + theorem one_lt_pow_iff_of_nonneg + theorem one_lt_sq_iff + theorem pow_le_one + theorem pow_le_one_iff_of_nonneg + theorem pow_lt_one + theorem pow_lt_one_iff_of_nonneg + theorem sq_le_one_iff + theorem sq_lt_one_iff 2021-10-16 16:46:55 99b2d40 feat(algebra/floor): Floor and ceil of `-a` (#9715) This proves `floor_neg : ⌊-a⌋ = -⌈a⌉` and `ceil_neg : ⌈-a⌉ = -⌊a⌋` and uses them to remove explicit dependency on the definition of `int.ceil` in prevision of #9591. This also proves `⌊a + 1⌋ = ⌊a⌋ + 1` and variants. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/floor.lean + theorem int.ceil_add_one + theorem int.ceil_neg + theorem int.floor_add_one + theorem int.floor_neg + theorem nat.ceil_add_one +/- theorem nat.ceil_lt_add_one + theorem nat.floor_add_one 2021-10-16 09:26:55 9ac2aa2 feat(topology/metric_space/lipschitz): add `lipschitz_with.min` and `lipschitz_with.max` (#9744) Also change assumptions in some lemmas in `algebra.order.group` from `[add_comm_group α] [linear_order α] [covariant_class α α (+) (≤)]` to `[linear_ordered_add_comm_group α]`. These two sets of assumptions are equivalent but the latter is more readable. ESTIMATED CHANGES Modified src/algebra/order/group.lean + theorem abs_max_sub_max_le_max + theorem abs_min_sub_min_le_max + theorem max_sub_max_le_max Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_with.const_max + theorem lipschitz_with.const_min + theorem lipschitz_with.max_const + theorem lipschitz_with.min_const + theorem lipschitz_with.subtype_mk + theorem lipschitz_with_max + theorem lipschitz_with_min 2021-10-16 09:26:54 96ba8b6 chore(topology/uniform_space/pi): add `uniform_continuous_pi` (#9743) ESTIMATED CHANGES Modified src/topology/uniform_space/pi.lean + theorem uniform_continuous_pi 2021-10-16 08:44:20 e362293 refactor(ring_theory/fractional_ideal): speedup a proof (#9738) This was timing out on another branch. Just replaces a `simp only []` with a `rw []`. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean 2021-10-16 07:32:33 f40cd88 chore(topology/algebra/ordered): move some lemmas to a new file (#9745) ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/basic.lean - theorem infi_eq_infi_subseq_of_monotone - theorem infi_eq_of_tendsto - theorem is_glb_of_tendsto - theorem is_lub_of_tendsto - theorem monotone.ge_of_tendsto - theorem monotone.le_of_tendsto - theorem supr_eq_of_tendsto - theorem supr_eq_supr_subseq_of_monotone - theorem tendsto_at_bot_cinfi - theorem tendsto_at_bot_csupr - theorem tendsto_at_bot_infi - theorem tendsto_at_bot_is_glb - theorem tendsto_at_bot_is_lub - theorem tendsto_at_bot_supr - theorem tendsto_at_top_cinfi - theorem tendsto_at_top_csupr - theorem tendsto_at_top_infi - theorem tendsto_at_top_is_glb - theorem tendsto_at_top_is_lub - theorem tendsto_at_top_supr - theorem tendsto_iff_tendsto_subseq_of_monotone - theorem tendsto_of_monotone Added src/topology/algebra/ordered/monotone_convergence.lean + theorem infi_eq_infi_subseq_of_monotone + theorem infi_eq_of_tendsto + theorem is_glb_of_tendsto + theorem is_lub_of_tendsto + theorem monotone.ge_of_tendsto + theorem monotone.le_of_tendsto + theorem supr_eq_of_tendsto + theorem supr_eq_supr_subseq_of_monotone + theorem tendsto_at_bot_cinfi + theorem tendsto_at_bot_csupr + theorem tendsto_at_bot_infi + theorem tendsto_at_bot_is_glb + theorem tendsto_at_bot_is_lub + theorem tendsto_at_bot_supr + theorem tendsto_at_top_cinfi + theorem tendsto_at_top_csupr + theorem tendsto_at_top_infi + theorem tendsto_at_top_is_glb + theorem tendsto_at_top_is_lub + theorem tendsto_at_top_supr + theorem tendsto_iff_tendsto_subseq_of_monotone + theorem tendsto_of_monotone 2021-10-16 04:16:34 150bbea feat(group_theory/subgroup/basic): Bottom subgroup has unique element (#9734) Adds instance for `unique (⊥ : subgroup G)`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean 2021-10-16 01:17:29 1766588 feat(measure_theory/covering/vitali): Vitali covering theorems (#9680) The topological and measurable Vitali covering theorems. * topological version: if a space is covered by balls `(B (x_i, r_i))_{i \in I}`, one can extract a disjointed subfamily indexed by `J` such that the space is covered by the balls `B (x_j, 5 r_j)`. * measurable version: if additionally the measure has a doubling-like property, and the covering contains balls of arbitrarily small radius at every point, then the disjointed subfamily one obtains above covers almost all the space. These two statements are particular cases of more general statements that are proved in this PR. ESTIMATED CHANGES Added src/measure_theory/covering/vitali.lean + theorem vitali.exists_disjoint_covering_ae + theorem vitali.exists_disjoint_subfamily_covering_enlargment + theorem vitali.exists_disjoint_subfamily_covering_enlargment_closed_ball 2021-10-15 22:57:51 ea22ce3 chore(data/list): move lemmas from data.list.basic that require algebra.group_power to a new file (#9728) Hopefully ease the dependencies on anyone importing data.list.basic, if your code broke after this change adding `import data.list.prod_monoid` should fix it. Lemmas moved: - `list.prod_repeat` - `list.sum_repeat` - `list.prod_le_of_forall_le` - `list.sum_le_of_forall_le` ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.prod_le_of_forall_le - theorem list.prod_repeat Added src/data/list/prod_monoid.lean + theorem list.prod_le_of_forall_le + theorem list.prod_repeat Modified src/data/multiset/basic.lean Modified test/lint_unused_haves_suffices.lean 2021-10-15 21:35:25 711aa75 refactor(algebra/gcd_monoid): remove superfluous old_structure_cmd (#9720) ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean 2021-10-15 16:38:20 b3f602b feat(linear_algebra/linear_independent): add variant of `exists_linear_independent` (#9708) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/linear_independent.lean +/- theorem exists_linear_independent + theorem exists_linear_independent_extension 2021-10-15 15:08:13 d6fd5f5 feat(linear_algebra/dimension): generalize dim_zero_iff_forall_zero (#9713) We generalize `dim_zero_iff_forall_zero` to `[nontrivial R] [no_zero_smul_divisors R M]`. If you see a more general class to consider let me know. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean +/- theorem dim_pos +/- theorem dim_pos_iff_exists_ne_zero +/- theorem dim_pos_iff_nontrivial +/- theorem dim_zero_iff +/- theorem dim_zero_iff_forall_zero Modified src/linear_algebra/finite_dimensional.lean 2021-10-15 12:10:59 ad6d476 refactor(ring_theory/derivation): remove old_structure_cmd (#9724) ESTIMATED CHANGES Modified src/geometry/manifold/derivation_bundle.lean Modified src/ring_theory/derivation.lean +/- theorem derivation.mk_coe - theorem derivation.to_fun_eq_coe 2021-10-15 12:10:58 a2737b4 chore(data/set_like/basic): remove superfluous old_structure_cmd (#9722) ESTIMATED CHANGES Modified src/data/set_like/basic.lean 2021-10-15 11:28:36 6bc2a1a refactor(algebra/lie/basic): remove old_structure_cmd (#9721) ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/basic.lean +/- theorem lie_module_equiv.coe_mk + theorem lie_module_equiv.injective + def lie_module_equiv.to_equiv + def lie_module_equiv.to_linear_equiv +/- structure lie_module_equiv +/- theorem lie_module_hom.coe_linear_mk +/- theorem lie_module_hom.coe_mk +/- theorem lie_module_hom.mk_coe Modified src/algebra/lie/tensor_product.lean Modified src/algebra/lie/weights.lean + def lie_algebra.root_space_weight_space_product_aux 2021-10-15 06:28:08 7707036 feat(tactic/by_contra): add by_contra' tactic (#9619) ESTIMATED CHANGES Added src/tactic/by_contra.lean Modified src/tactic/core.lean Modified src/tactic/norm_num.lean Added test/by_contra.lean 2021-10-15 01:06:58 be91f69 chore(algebra/floor): general golf (#9716) This cleans the file in depth: * kill some `simp` * use available dot notation on `≤` * remove the `by ... ; ...` (there's one left that #9715) takes care of * group definition and notation of `int.floor`,`int.ceil` and `int.fract` * move `int.preimage_...` lemmas with the rest of the `ℤ` stuff * homogeneize variable names ESTIMATED CHANGES Modified src/algebra/floor.lean +/- theorem int.abs_sub_lt_one_of_floor_eq_floor +/- def int.ceil +/- theorem int.ceil_add_int +/- theorem int.ceil_coe +/- theorem int.ceil_eq_iff +/- theorem int.ceil_eq_on_Ioc' +/- theorem int.ceil_eq_on_Ioc +/- theorem int.ceil_le +/- theorem int.ceil_le_floor_add_one +/- theorem int.ceil_lt_add_one +/- theorem int.ceil_mono +/- theorem int.ceil_nonneg +/- theorem int.ceil_pos +/- theorem int.ceil_sub_int +/- theorem int.ceil_zero - theorem int.floor_add +/- theorem int.floor_add_fract +/- theorem int.floor_add_int +/- theorem int.floor_add_nat +/- theorem int.floor_coe +/- theorem int.floor_eq_iff +/- theorem int.floor_eq_on_Ico' +/- theorem int.floor_eq_on_Ico +/- theorem int.floor_fract +/- theorem int.floor_int_add +/- theorem int.floor_le +/- theorem int.floor_lt +/- theorem int.floor_lt_ceil_of_lt +/- theorem int.floor_mono + theorem int.floor_nat_add +/- theorem int.floor_nonneg +/- theorem int.floor_one +/- theorem int.floor_sub_int +/- theorem int.floor_sub_nat +/- theorem int.floor_zero +/- def int.fract +/- theorem int.fract_add +/- theorem int.fract_add_floor +/- theorem int.fract_eq_fract +/- theorem int.fract_eq_iff +/- theorem int.fract_floor +/- theorem int.fract_fract +/- theorem int.fract_lt_one +/- theorem int.fract_mul_nat +/- theorem int.fract_nonneg +/- theorem int.fract_zero +/- theorem int.le_ceil +/- theorem int.le_floor +/- theorem int.lt_ceil +/- theorem int.lt_floor_add_one +/- theorem int.lt_succ_floor +/- theorem int.preimage_Icc +/- theorem int.preimage_Ici +/- theorem int.preimage_Ico +/- theorem int.preimage_Iic +/- theorem int.preimage_Iio +/- theorem int.preimage_Ioc +/- theorem int.preimage_Ioi +/- theorem int.preimage_Ioo +/- theorem int.sub_one_lt_floor +/- theorem nat.ceil_add_nat +/- theorem nat.ceil_coe +/- theorem nat.ceil_eq_zero +/- theorem nat.ceil_le +/- theorem nat.ceil_mono +/- theorem nat.ceil_zero +/- theorem nat.floor_add_nat +/- theorem nat.floor_coe +/- theorem nat.floor_lt_ceil_of_lt_of_pos +/- theorem nat.floor_lt_iff +/- theorem nat.floor_mono +/- theorem nat.floor_zero +/- theorem nat.le_ceil +/- theorem nat.le_floor_iff +/- theorem nat.le_of_ceil_le +/- theorem nat.lt_ceil +/- theorem nat.lt_of_ceil_lt +/- theorem nat.sub_one_lt_floor 2021-10-14 23:10:05 c37ea53 feat(order/succ_pred): `succ`-Archimedean orders (#9714) This defines `succ`-Archimedean orders: orders in which `a ≤ b` means that `succ^[n] a = b` for some `n`. ESTIMATED CHANGES Modified src/logic/function/iterate.lean + def function.iterate.rec + theorem function.iterate.rec_zero Modified src/order/succ_pred.lean + theorem exists_pred_iterate_iff_le + theorem exists_pred_iterate_or + theorem exists_succ_iterate_iff_le + theorem exists_succ_iterate_or + theorem has_le.le.exists_pred_iterate + theorem has_le.le.exists_succ_iterate + theorem pred.rec + theorem pred.rec_iff + theorem pred.rec_linear + theorem pred.rec_top + theorem succ.rec + theorem succ.rec_bot + theorem succ.rec_iff + theorem succ.rec_linear 2021-10-14 21:12:58 c12aced feat(algebra/star): star_linear_equiv (#9426) ESTIMATED CHANGES Modified src/algebra/ring/comp_typeclasses.lean + theorem ring_hom_inv_pair.of_ring_equiv + theorem ring_hom_inv_pair.symm Modified src/algebra/star/basic.lean Added src/algebra/star/module.lean + def star_linear_equiv 2021-10-14 19:54:19 158fbc5 refactor(algebra/module/order): Make space argument explicit in the `order_iso` (#9706) Explicitly providing `M` in `order_iso.smul_left` and `order_iso.smul_left_dual` turns out to work much better with dot notation on `order_iso`. This allows golfing half the proofs introduced in #9078. ESTIMATED CHANGES Modified src/algebra/module/ordered.lean +/- theorem bdd_above.smul_of_nonneg +/- theorem bdd_above.smul_of_nonpos +/- theorem bdd_above_smul_iff_of_neg +/- theorem bdd_above_smul_iff_of_pos +/- theorem bdd_below.smul_of_nonneg +/- theorem bdd_below.smul_of_nonpos +/- theorem bdd_below_smul_iff_of_neg +/- theorem bdd_below_smul_iff_of_pos +/- theorem lower_bounds_smul_of_neg +/- theorem lower_bounds_smul_of_pos +/- theorem upper_bounds_smul_of_neg +/- theorem upper_bounds_smul_of_pos Modified src/algebra/order/smul.lean 2021-10-14 18:49:52 72789f5 feat(linear_algebra/affine_space/affine_subspace): add lemma `affine_equiv.span_eq_top_iff` (#9695) Together with supporting lemmas. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem set.mem_vsub Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.image_vsub_image Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_equiv.span_eq_top_iff + theorem affine_map.map_top_of_surjective + theorem affine_map.span_eq_top_of_surjective + theorem affine_map.vector_span_image_eq_submodule_map + def affine_subspace.map + theorem affine_subspace.map_bot + theorem affine_subspace.map_coe + theorem affine_subspace.map_direction + theorem affine_subspace.map_span 2021-10-14 18:06:10 cef78dd feat(archive/abel_ruffini): speedup by squeezing (#9709) 30s->9s elaboration for me, hopefully stop #9705 timing out ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean 2021-10-14 16:25:51 393fe70 chore(analysis/p_series): add 2 more versions (#9703) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/p_series.lean - theorem nnreal.summable_one_rpow_inv + theorem nnreal.summable_rpow + theorem nnreal.summable_rpow_inv + theorem real.summable_nat_rpow 2021-10-14 13:24:56 aff49a6 feat(data/equiv/basic): prop_equiv_pempty (#9689) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.prop_equiv_pempty 2021-10-14 13:24:54 dc23dfa feat(data/equiv/basic): subtype_equiv_psigma (#9688) - [x] depends on: #9687 [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.psigma_equiv_subtype + def equiv.sigma_plift_equiv_subtype + def equiv.sigma_ulift_plift_equiv_subtype 2021-10-14 13:24:52 9da33a8 refactor(algebra/floor): Rename floor and ceil functions (#9590) This renames * `floor` -> `int.floor` * `ceil` -> `int.ceil` * `fract` -> `int.fract` * `nat_floor` -> `nat.floor` * `nat_ceil` -> `nat.ceil` ESTIMATED CHANGES Modified archive/imo/imo2013_q5.lean Modified src/algebra/archimedean.lean Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/algebra/floor.lean - theorem abs_sub_lt_one_of_floor_eq_floor - def ceil - theorem ceil_add_int - theorem ceil_coe - theorem ceil_eq_iff - theorem ceil_eq_on_Ioc' - theorem ceil_eq_on_Ioc - theorem ceil_le - theorem ceil_le_floor_add_one - theorem ceil_lt_add_one - theorem ceil_mono - theorem ceil_nonneg - theorem ceil_pos - theorem ceil_sub_int - theorem ceil_zero - def floor - theorem floor_add_fract - theorem floor_add_int - theorem floor_add_nat - theorem floor_coe - theorem floor_eq_iff - theorem floor_eq_on_Ico' - theorem floor_eq_on_Ico - theorem floor_fract - theorem floor_int_add - theorem floor_le - theorem floor_lt - theorem floor_lt_ceil_of_lt - theorem floor_mono - theorem floor_nat_add - theorem floor_nonneg - theorem floor_one - theorem floor_pos - theorem floor_sub_int - theorem floor_sub_nat - theorem floor_zero - def fract - theorem fract_add - theorem fract_add_floor - theorem fract_coe - theorem fract_eq_fract - theorem fract_eq_iff - theorem fract_floor - theorem fract_fract - theorem fract_lt_one - theorem fract_mul_nat - theorem fract_nonneg - theorem fract_zero + theorem int.abs_sub_lt_one_of_floor_eq_floor + def int.ceil + theorem int.ceil_add_int + theorem int.ceil_coe + theorem int.ceil_eq_iff + theorem int.ceil_eq_on_Ioc' + theorem int.ceil_eq_on_Ioc + theorem int.ceil_le + theorem int.ceil_le_floor_add_one + theorem int.ceil_lt_add_one + theorem int.ceil_mono + theorem int.ceil_nonneg + theorem int.ceil_pos + theorem int.ceil_sub_int + theorem int.ceil_zero + def int.floor + theorem int.floor_add + theorem int.floor_add_fract + theorem int.floor_add_int + theorem int.floor_add_nat + theorem int.floor_coe + theorem int.floor_eq_iff + theorem int.floor_eq_on_Ico' + theorem int.floor_eq_on_Ico + theorem int.floor_fract + theorem int.floor_int_add + theorem int.floor_le + theorem int.floor_lt + theorem int.floor_lt_ceil_of_lt + theorem int.floor_mono + theorem int.floor_nonneg + theorem int.floor_one + theorem int.floor_pos + theorem int.floor_sub_int + theorem int.floor_sub_nat + theorem int.floor_zero + def int.fract + theorem int.fract_add + theorem int.fract_add_floor + theorem int.fract_coe + theorem int.fract_eq_fract + theorem int.fract_eq_iff + theorem int.fract_floor + theorem int.fract_fract + theorem int.fract_lt_one + theorem int.fract_mul_nat + theorem int.fract_nonneg + theorem int.fract_zero + theorem int.le_ceil + theorem int.le_floor + theorem int.lt_ceil + theorem int.lt_floor_add_one + theorem int.lt_succ_floor + theorem int.sub_one_lt_floor - theorem le_ceil - theorem le_floor - theorem le_nat_ceil - theorem le_nat_floor_iff - theorem le_nat_floor_of_le - theorem le_of_nat_ceil_le - theorem lt_ceil - theorem lt_floor_add_one - theorem lt_nat_ceil - theorem lt_nat_floor_add_one - theorem lt_of_lt_nat_floor - theorem lt_of_nat_ceil_lt - theorem lt_succ_floor + def nat.ceil + theorem nat.ceil_add_nat + theorem nat.ceil_coe + theorem nat.ceil_eq_zero + theorem nat.ceil_le + theorem nat.ceil_lt_add_one + theorem nat.ceil_mono + theorem nat.ceil_zero + def nat.floor + theorem nat.floor_add_nat + theorem nat.floor_coe + theorem nat.floor_eq_zero_iff + theorem nat.floor_le + theorem nat.floor_lt_ceil_of_lt_of_pos + theorem nat.floor_lt_iff + theorem nat.floor_mono + theorem nat.floor_of_nonpos + theorem nat.floor_pos + theorem nat.floor_zero + theorem nat.le_ceil + theorem nat.le_floor_iff + theorem nat.le_floor_of_le + theorem nat.le_of_ceil_le + theorem nat.lt_ceil + theorem nat.lt_floor_add_one + theorem nat.lt_of_ceil_lt + theorem nat.lt_of_lt_floor + theorem nat.pos_of_floor_pos + theorem nat.sub_one_lt_floor - def nat_ceil - theorem nat_ceil_add_nat - theorem nat_ceil_coe - theorem nat_ceil_eq_zero - theorem nat_ceil_le - theorem nat_ceil_lt_add_one - theorem nat_ceil_mono - theorem nat_ceil_zero - def nat_floor - theorem nat_floor_add_nat - theorem nat_floor_coe - theorem nat_floor_eq_zero_iff - theorem nat_floor_le - theorem nat_floor_lt_iff - theorem nat_floor_lt_nat_ceil_of_lt_of_pos - theorem nat_floor_mono - theorem nat_floor_of_nonpos - theorem nat_floor_pos - theorem nat_floor_zero - theorem pos_of_nat_floor_pos - theorem sub_one_lt_floor - theorem sub_one_lt_nat_floor Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/specific_limits.lean Modified src/data/rat/floor.lean Modified src/data/real/basic.lean Modified src/data/real/pi/wallis.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/number_theory/class_number/admissible_abs.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2021-10-14 07:51:21 264ff90 refactor(analysis/special_functions): generalise nth-root lemmas (#9704) `exists_pow_nat_eq` and `exists_eq_mul_self` both hold for any algebraically closed field, so pull them out into `is_alg_closed/basic` and generalise appropriately Closes #4674 ESTIMATED CHANGES Modified src/analysis/special_functions/complex/log.lean - theorem complex.exists_eq_mul_self - theorem complex.exists_pow_nat_eq Modified src/analysis/special_functions/trigonometric/complex.lean Modified src/field_theory/is_alg_closed/basic.lean + theorem is_alg_closed.exists_eq_mul_self + theorem is_alg_closed.exists_pow_nat_eq 2021-10-14 07:51:19 8d67d9a chore(category_theory/sites/*): Generalize universes (#9675) This generalizes the universe levels for sheaves to some extent. This will allow us to now consider sheaves on `C : Type u` (satisfying `[category.{v} C]` and endowed with a Grothendieck topology) taking values in an arbitrary category with no additional universe restrictions. The only part of the theory which has not been generalized is the equivalence of the sheaf condition with the condition involving Yoneda. To generalize this would require composing with `ulift_functors`'s, which we may or may not want to do. ESTIMATED CHANGES Modified src/category_theory/sites/closed.lean +/- def category_theory.functor.closed_sieves Modified src/category_theory/sites/sheaf.lean +/- def category_theory.Sheaf_equiv_SheafOfTypes +/- theorem category_theory.is_sheaf_iff_is_sheaf_of_type +/- def category_theory.presheaf.is_sheaf_for_is_sheaf_for' +/- theorem category_theory.presheaf.is_sheaf_iff_is_sheaf_forget Modified src/category_theory/sites/sheaf_of_types.lean +/- def category_theory.SheafOfTypes +/- def category_theory.SheafOfTypes_bot_equiv +/- def category_theory.SheafOfTypes_to_presheaf +/- def category_theory.equalizer.first_obj +/- def category_theory.equalizer.presieve.second_obj +/- def category_theory.equalizer.sieve.second_obj +/- theorem category_theory.presieve.extension_iff_amalgamation + theorem category_theory.presieve.family_of_elements.comp_prersheaf_map_comp + theorem category_theory.presieve.family_of_elements.comp_presheaf_map_id + theorem category_theory.presieve.family_of_elements.is_amalgamation.comp_presheaf_map +/- def category_theory.presieve.family_of_elements +/- def category_theory.presieve.is_separated +/- def category_theory.presieve.is_separated_for +/- theorem category_theory.presieve.is_separated_for_top +/- theorem category_theory.presieve.is_separated_of_is_sheaf +/- theorem category_theory.presieve.is_sheaf.is_sheaf_for +/- def category_theory.presieve.is_sheaf +/- theorem category_theory.presieve.is_sheaf_for.functor_inclusion_comp_extend +/- theorem category_theory.presieve.is_sheaf_for.hom_ext +/- theorem category_theory.presieve.is_sheaf_for.unique_extend +/- def category_theory.presieve.is_sheaf_for +/- theorem category_theory.presieve.is_sheaf_for_iff_yoneda_sheaf_condition +/- theorem category_theory.presieve.is_sheaf_for_iso +/- theorem category_theory.presieve.is_sheaf_for_singleton_iso +/- theorem category_theory.presieve.is_sheaf_for_subsieve +/- theorem category_theory.presieve.is_sheaf_for_subsieve_aux +/- theorem category_theory.presieve.is_sheaf_for_top_sieve +/- theorem category_theory.presieve.is_sheaf_iso +/- theorem category_theory.presieve.is_sheaf_of_le +/- theorem category_theory.presieve.is_sheaf_of_yoneda +/- def category_theory.presieve.nat_trans_equiv_compatible_family +/- def category_theory.presieve.yoneda_sheaf_condition Modified src/topology/sheaves/sheaf_condition/sites.lean +/- def Top.presheaf.presieve_of_covering.pi_inters_to_second_obj +/- def Top.presheaf.presieve_of_covering.pi_opens_to_first_obj 2021-10-14 05:36:14 34f3494 chore(set_theory/cardinal): rename `is_empty`/`nonempty` lemmas (#9668) * add `is_empty_pi`, `is_empty_prod`, `is_empty_pprod`, `is_empty_sum`; * rename `cardinal.eq_zero_of_is_empty` to `cardinal.mk_eq_zero`, make the argument `α : Type u` explicit; * rename `cardinal.eq_zero_iff_is_empty` to `cardinal.mk_eq_zero_iff`; * rename `cardinal.ne_zero_iff_nonempty` to `cardinal.mk_ne_zero_iff`; * add `@[simp]` lemma `cardinal.mk_ne_zero`; * fix compile errors caused by these changes, golf a few proofs. ESTIMATED CHANGES Modified src/data/W/cardinal.lean Modified src/logic/is_empty.lean + theorem is_empty_pi + theorem is_empty_pprod + theorem is_empty_prod + theorem is_empty_psum + theorem is_empty_sum Modified src/set_theory/cardinal.lean - theorem cardinal.eq_zero_iff_is_empty - theorem cardinal.eq_zero_of_is_empty + theorem cardinal.mk_eq_zero + theorem cardinal.mk_eq_zero_iff + theorem cardinal.mk_ne_zero + theorem cardinal.mk_ne_zero_iff - theorem cardinal.ne_zero_iff_nonempty +/- theorem cardinal.omega_ne_zero +/- theorem cardinal.prod_eq_zero Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal_arithmetic.lean 2021-10-14 04:04:03 3340617 feat(algebra/bounds): `smul` of upper/lower bounds (#9078) This relates `lower_bounds (a • s)`/`upper_bounds (a • s)` and `a • lower_bounds s`/`a • upper_bounds s`. ESTIMATED CHANGES Modified src/algebra/module/ordered.lean + theorem bdd_above.smul_of_nonneg + theorem bdd_above.smul_of_nonpos + theorem bdd_above_smul_iff_of_neg + theorem bdd_above_smul_iff_of_pos + theorem bdd_below.smul_of_nonneg + theorem bdd_below.smul_of_nonpos + theorem bdd_below_smul_iff_of_neg + theorem bdd_below_smul_iff_of_pos + theorem lower_bounds_smul_of_neg + theorem lower_bounds_smul_of_pos + theorem smul_lower_bounds_subset_lower_bounds_smul + theorem smul_lower_bounds_subset_upper_bounds_smul + theorem smul_upper_bounds_subset_lower_bounds_smul + theorem smul_upper_bounds_subset_upper_bounds_smul + theorem upper_bounds_smul_of_neg + theorem upper_bounds_smul_of_pos 2021-10-13 21:29:32 19da20b feat(combinatorics/hall): generalized Hall's Marriage Theorem (#7825) Used the generalized Kőnig's lemma to prove a version of Hall's Marriage Theorem with the `fintype` constraint on the index type removed. The original `fintype` version is moved into `hall/finite.lean`, and the infinite version is put in `hall/basic.lean`. They are in separate files because the infinite version pulls in `topology.category.Top.limits`, which is a rather large dependency. ESTIMATED CHANGES Modified docs/references.bib Added src/combinatorics/hall/basic.lean + theorem finset.all_card_le_bUnion_card_iff_exists_injective + theorem fintype.all_card_le_filter_rel_iff_exists_injective + theorem fintype.all_card_le_rel_image_card_iff_exists_injective + def hall_finset_directed_order + def hall_matchings_functor + theorem hall_matchings_on.nonempty + def hall_matchings_on.restrict + def hall_matchings_on Renamed src/combinatorics/hall.lean to src/combinatorics/hall/finite.lean + theorem finset.all_card_le_bUnion_card_iff_exists_injective' - theorem finset.all_card_le_bUnion_card_iff_exists_injective - theorem fintype.all_card_le_filter_rel_iff_exists_injective - theorem fintype.all_card_le_rel_image_card_iff_exists_injective 2021-10-13 17:58:00 5db83f9 feat(set_theory/cardinal): add lemmas (#9697) We add three easy lemmas about cardinals living in different universes. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.add +/- theorem cardinal.lift_umax + theorem cardinal.mul Modified src/set_theory/cofinality.lean 2021-10-13 17:57:59 3faf0f5 chore(data/real/irrational): add more lemmas (#9684) ESTIMATED CHANGES Modified src/data/real/irrational.lean + theorem int.not_irrational + theorem irrational.add_int + theorem irrational.add_nat + theorem irrational.div_int + theorem irrational.div_nat + theorem irrational.div_rat + theorem irrational.int_add + theorem irrational.int_div + theorem irrational.int_mul + theorem irrational.int_sub + theorem irrational.mul_int + theorem irrational.mul_nat + theorem irrational.nat_add + theorem irrational.nat_div + theorem irrational.nat_mul + theorem irrational.nat_sub + theorem irrational.ne_int + theorem irrational.ne_nat + theorem irrational.ne_one + theorem irrational.ne_rat + theorem irrational.ne_zero + theorem irrational.of_add_int + theorem irrational.of_add_nat + theorem irrational.of_div_int + theorem irrational.of_div_nat + theorem irrational.of_div_rat + theorem irrational.of_int_add + theorem irrational.of_int_div + theorem irrational.of_int_mul + theorem irrational.of_int_sub + theorem irrational.of_mul_int + theorem irrational.of_mul_nat + theorem irrational.of_nat_add + theorem irrational.of_nat_div + theorem irrational.of_nat_mul + theorem irrational.of_nat_sub + theorem irrational.of_sub_int + theorem irrational.of_sub_nat + theorem irrational.rat_div + theorem irrational.sub_int + theorem irrational.sub_nat + theorem irrational_add_int_iff + theorem irrational_add_nat_iff + theorem irrational_div_int_iff + theorem irrational_div_nat_iff + theorem irrational_div_rat_iff + theorem irrational_int_add_iff + theorem irrational_int_div_iff + theorem irrational_int_mul_iff + theorem irrational_int_sub_iff + theorem irrational_mul_int_iff + theorem irrational_mul_nat_iff + theorem irrational_mul_rat_iff + theorem irrational_nat_add_iff + theorem irrational_nat_div_iff + theorem irrational_nat_mul_iff + theorem irrational_nat_sub_iff + theorem irrational_rat_div_iff + theorem irrational_rat_mul_iff + theorem irrational_sub_int_iff + theorem irrational_sub_nat_iff + theorem nat.not_irrational +/- theorem rat.not_irrational 2021-10-13 17:57:58 096923c feat(topology/connected.lean): add theorems about connectedness o… (#9633) feat(src/topology/connected.lean): add theorems about connectedness of closure add two theorems is_preconnected.inclosure and is_connected.closure which formalize that if a set s is (pre)connected and a set t satisfies s ⊆ t ⊆ closure s, then t is (pre)connected as well modify is_preconnected.closure and is_connected.closure to take these theorems into account add a few comments for theorems in the code ESTIMATED CHANGES Modified src/topology/connected.lean + theorem is_connected.subset_closure + theorem is_preconnected.subset_closure 2021-10-13 15:48:29 32e1b6c chore(ring_theory/ideal): improve 1st isomorphism theorem docstrings (#9699) Fix a typo and add **bold** to the theorem names. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean 2021-10-13 15:48:28 0ce4442 refactor(algebra/group_power/order): relax linearity condition on `one_lt_pow` (#9696) `[linear_ordered_semiring R]` becomes `[ordered_semiring R] [nontrivial R]`. I also golf the proof and move ìt from `algebra.field_power` to `algebra.group_power.order`, where it belongs. ESTIMATED CHANGES Modified archive/imo/imo2013_q5.lean Modified src/algebra/field_power.lean +/- theorem one_lt_fpow - theorem one_lt_pow Modified src/algebra/group_power/order.lean + theorem one_lt_pow Modified src/number_theory/liouville/liouville_constant.lean 2021-10-13 15:48:27 bc9e38f refactor(linear_algebra/dimension): remove some nontrivial assumptions (#9693) We remove some `nontrivial R` assumptions. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean 2021-10-13 15:48:25 313db47 feat(measure_theory/covering/besicovitch): remove measurability assumptions (#9679) For applications, it is important to allow non-measurable sets in the Besicovitch covering theorem. We tweak the proof to allow this. Also give an improved statement that is easier to use in applications. ESTIMATED CHANGES Modified src/measure_theory/covering/besicovitch.lean - theorem besicovitch.exists_disjoint_closed_ball_covering + theorem besicovitch.exists_disjoint_closed_ball_covering_ae + theorem besicovitch.exists_disjoint_closed_ball_covering_ae_aux + theorem besicovitch.exists_disjoint_closed_ball_covering_ae_of_finite_measure_aux - theorem besicovitch.exists_disjoint_closed_ball_covering_of_finite_measure 2021-10-13 15:48:24 f29755b refactor(data/set/pairwise): generalize `pairwise_disjoint` to `semilattice_inf_bot` (#9670) `set.pairwise_disjoint` was only defined for `set (set α)`. Now, it's defined for `set α` where `semilattice_inf_bot α`. I also * move it to `data.set.pairwise` because it's really not about `set` anymore. * drop the `set` namespace. * add more general elimination rules and rename the current one to `elim_set`. ESTIMATED CHANGES Modified src/data/set/lattice.lean - theorem set.pairwise_disjoint.elim - theorem set.pairwise_disjoint.range - theorem set.pairwise_disjoint.subset - def set.pairwise_disjoint Modified src/data/set/pairwise.lean + theorem set.pairwise_disjoint.elim' + theorem set.pairwise_disjoint.elim + theorem set.pairwise_disjoint.elim_set + theorem set.pairwise_disjoint.range + theorem set.pairwise_disjoint.subset + def set.pairwise_disjoint Modified src/data/setoid/partition.lean 2021-10-13 15:48:22 9ee2a50 fix(group_theory/group_action): `has_scalar.comp.is_scalar_tower` is a dangerous instance (#9656) This issue came up in the discussion of #9535: in certain cases, the instance `has_scalar.comp.is_scalar_tower` is fed too many metavariables and starts recursing infinitely. So I believe we should demote it from being an instance. Example trace: ```plain [class_instances] (0) ?x_0 : has_scalar S P.quotient := @quotient.has_scalar ?x_1 ?x_2 ?x_3 ?x_4 ?x_5 ?x_6 ?x_7 ?x_8 ?x_9 ?x_10 [class_instances] (1) ?x_9 : @is_scalar_tower S R M ?x_7 (@smul_with_zero.to_has_scalar R M (@mul_zero_class.to_has_zero R (@mul_zero_one_class.to_mul_zero_class R (@monoid_with_zero.to_mul_zero_one_class R (@semiring.to_monoid_with_zero R (@ring.to_semiring R _inst_1))))) (@add_zero_class.to_has_zero M (@add_monoid.to_add_zero_class M (@add_comm_monoid.to_add_monoid M (@add_comm_group.to_add_comm_monoid M _inst_2)))) (@mul_action_with_zero.to_smul_with_zero R M (@semiring.to_monoid_with_zero R (@ring.to_semiring R _inst_1)) (@add_zero_class.to_has_zero M (@add_monoid.to_add_zero_class M (@add_comm_monoid.to_add_monoid M (@add_comm_group.to_add_comm_monoid M _inst_2)))) (@module.to_mul_action_with_zero R M (@ring.to_semiring R _inst_1) (@add_comm_group.to_add_comm_monoid M _inst_2) _inst_3))) ?x_8 := @has_scalar.comp.is_scalar_tower ?x_11 ?x_12 ?x_13 ?x_14 ?x_15 ?x_16 ?x_17 ?x_18 ?x_19 [class_instances] (2) ?x_18 : @is_scalar_tower ?x_11 R M ?x_15 (@smul_with_zero.to_has_scalar R M (@mul_zero_class.to_has_zero R (@mul_zero_one_class.to_mul_zero_class R (@monoid_with_zero.to_mul_zero_one_class R (@semiring.to_monoid_with_zero R (@ring.to_semiring R _inst_1))))) (@add_zero_class.to_has_zero M (@add_monoid.to_add_zero_class M (@add_comm_monoid.to_add_monoid M (@add_comm_group.to_add_comm_monoid M _inst_2)))) (@mul_action_with_zero.to_smul_with_zero R M (@semiring.to_monoid_with_zero R (@ring.to_semiring R _inst_1)) (@add_zero_class.to_has_zero M (@add_monoid.to_add_zero_class M (@add_comm_monoid.to_add_monoid M (@add_comm_group.to_add_comm_monoid M _inst_2)))) (@module.to_mul_action_with_zero R M (@ring.to_semiring R _inst_1) (@add_comm_group.to_add_comm_monoid M _inst_2) _inst_3))) ?x_16 := @has_scalar.comp.is_scalar_tower ?x_20 ?x_21 ?x_22 ?x_23 ?x_24 ?x_25 ?x_26 ?x_27 ?x_28 ... ``` You'll see that the places where `has_scalar.comp.is_scalar_tower` expects a `has_scalar.comp` are in fact metavariables, so they always unify. I have included a test case where the instance looks innocuous enough in its parameters: everything is phrased in terms of either irreducible defs, implicit variables or instance implicits, to argue that the issue really lies with `has_scalar.comp.is_scalar_tower`. Moreover, I don't think we lose a lot by demoting the latter from an instance since `has_scalar.comp` isn't an instance either. ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean + theorem has_scalar.comp.is_scalar_tower Modified src/linear_algebra/basis.lean Added test/has_scalar_comp_loop.lean + def foo 2021-10-13 15:48:21 e8427b0 feat(ring_theory/ideal/operation): add some extra definitions in the `double_quot` section (#9649) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + def double_quot.quot_quot_equiv_comm + theorem double_quot.quot_quot_equiv_comm_comp_quot_quot_mk + theorem double_quot.quot_quot_equiv_comm_quot_quot_mk + theorem double_quot.quot_quot_equiv_comm_symm + theorem double_quot.quot_quot_equiv_quot_sup_quot_quot_mk + theorem double_quot.quot_quot_equiv_quot_sup_symm_quot_quot_mk 2021-10-13 15:48:20 a7ec633 chore(algebra/*): add missing lemmas about `copy` on subobjects (#9624) This adds `coe_copy` and `copy_eq` to `sub{mul_action,group,ring,semiring,field,module,algebra,lie_module}`, to match the lemmas already present on `submonoid`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.coe_copy + theorem subalgebra.copy_eq Modified src/algebra/lie/submodule.lean + theorem lie_submodule.coe_copy +/- theorem lie_submodule.coe_submodule_injective + theorem lie_submodule.copy_eq Modified src/algebra/module/submodule.lean + theorem submodule.coe_copy + theorem submodule.copy_eq Modified src/data/set_like/basic.lean Modified src/field_theory/subfield.lean + theorem subfield.coe_copy + theorem subfield.copy_eq Modified src/group_theory/group_action/sub_mul_action.lean + theorem sub_mul_action.coe_copy + theorem sub_mul_action.copy_eq Modified src/group_theory/subgroup/basic.lean + theorem subgroup.coe_copy + theorem subgroup.copy_eq Modified src/ring_theory/subring.lean + theorem subring.coe_copy + theorem subring.copy_eq Modified src/ring_theory/subsemiring.lean + theorem subsemiring.coe_copy + theorem subsemiring.copy_eq 2021-10-13 15:48:18 577cac1 feat(algebra/order/nonneg): properties about the nonnegative cone (#9598) * Provide various classes on the type `{x : α // 0 ≤ x}` where `α` has some order (and algebraic) structure. * Use this to automatically derive the classes on `nnreal`. * We currently do not yet define `conditionally_complete_linear_order_bot nnreal` using nonneg, since that causes some errors (I think Lean then thinks that there are two orders that are not definitionally equal (unfolding only instances)). * We leave a bunch of `example` lines in `nnreal` to show that `nnreal` has all the old classes. These could also be removed, if desired. * We currently only give some instances and simp/norm_cast lemmas. This could be expanded in the future. ESTIMATED CHANGES Added src/algebra/order/nonneg.lean + def nonneg.coe_add_monoid_hom + def nonneg.coe_ring_hom + theorem nonneg.coe_to_nonneg + theorem nonneg.inv_mk + theorem nonneg.mk_add_mk + theorem nonneg.mk_div_mk + theorem nonneg.mk_eq_one + theorem nonneg.mk_eq_zero + theorem nonneg.mk_mul_mk + theorem nonneg.mk_sub_mk + theorem nonneg.nsmul_coe + def nonneg.to_nonneg + theorem nonneg.to_nonneg_coe + theorem nonneg.to_nonneg_le + theorem nonneg.to_nonneg_lt + theorem nonneg.to_nonneg_of_nonneg Modified src/algebra/order/ring.lean + theorem le_iff_exists_nonneg_add Modified src/analysis/normed_space/enorm.lean Modified src/data/real/nnreal.lean +/- theorem nnreal.nsmul_coe Modified src/measure_theory/decomposition/jordan.lean Modified src/order/lattice_intervals.lean 2021-10-13 13:20:49 aa67421 lint(tactic/lint/misc): do not lint autogenerated proofs for bad universes (#9676) ESTIMATED CHANGES Modified src/tactic/lint/misc.lean 2021-10-13 13:20:48 ea360f2 feat(group_theory/sylow): Frattini's Argument (#9662) Frattini's argument: If `N` is a normal subgroup of `G`, and `P` is a Sylow `p`-subgroup of `N`, then `PN=G`. The proof is an application of Sylow's second theorem (all Sylow `p`-subgroups of `N` are conjugate). ESTIMATED CHANGES Modified src/group_theory/group_action/conj_act.lean + theorem mul_aut.conj_normal_coe Modified src/group_theory/subgroup/pointwise.lean + theorem subgroup.pointwise_smul_def Modified src/group_theory/sylow.lean + theorem sylow.normalizer_sup_eq_top + theorem sylow.pointwise_smul_def + theorem sylow.smul_def 2021-10-13 13:20:46 acc1d4b feat(analysis/normed_space/SemiNormedGroup/kernels) : add lemmas (#9654) From LTE. ESTIMATED CHANGES Modified src/analysis/normed/group/SemiNormedGroup/kernels.lean + theorem SemiNormedGroup.explicit_cokernel_desc_comp_eq_desc + theorem SemiNormedGroup.explicit_cokernel_desc_comp_eq_zero + theorem SemiNormedGroup.explicit_cokernel_desc_norm_noninc + theorem SemiNormedGroup.explicit_cokernel_desc_zero + theorem SemiNormedGroup.explicit_cokernel_π_apply_dom_eq_zero + theorem SemiNormedGroup.explicit_cokernel_π_desc_apply + theorem SemiNormedGroup.explicit_cokernel_π_surjective 2021-10-13 13:20:45 6ea59e3 feat(category_theory/sites/sieves): Added functor pushforward (#9647) Defined `sieve.functor_pushforward`. Proved that `sieve.functor_pushforward` and `sieve.functor_pullback` forms a Galois connection. Provided some lemmas about `sieve.functor_pushforward`, `sieve.functor_pullback` regarding the lattice structure. ESTIMATED CHANGES Modified src/category_theory/sites/sieves.lean +/- def category_theory.presieve.functor_pullback +/- theorem category_theory.presieve.functor_pullback_id +/- theorem category_theory.presieve.functor_pullback_mem + def category_theory.presieve.functor_pushforward + theorem category_theory.presieve.functor_pushforward_comp + theorem category_theory.presieve.image_mem_functor_pushforward + def category_theory.sieve.ess_surj_full_functor_galois_insertion + def category_theory.sieve.fully_faithful_functor_galois_coinsertion + theorem category_theory.sieve.functor_galois_connection +/- def category_theory.sieve.functor_pullback + theorem category_theory.sieve.functor_pullback_arrows + theorem category_theory.sieve.functor_pullback_bot + theorem category_theory.sieve.functor_pullback_comp +/- theorem category_theory.sieve.functor_pullback_id + theorem category_theory.sieve.functor_pullback_inter + theorem category_theory.sieve.functor_pullback_monotone + theorem category_theory.sieve.functor_pullback_pushforward_le + theorem category_theory.sieve.functor_pullback_top + theorem category_theory.sieve.functor_pullback_union + def category_theory.sieve.functor_pushforward + theorem category_theory.sieve.functor_pushforward_bot + theorem category_theory.sieve.functor_pushforward_comp + theorem category_theory.sieve.functor_pushforward_extend_eq + theorem category_theory.sieve.functor_pushforward_id + theorem category_theory.sieve.functor_pushforward_monotone + theorem category_theory.sieve.functor_pushforward_union + theorem category_theory.sieve.image_mem_functor_pushforward + theorem category_theory.sieve.le_functor_pushforward_pullback 2021-10-13 13:20:44 17d8928 feat(algebra/graded_monoid,algebra/direct_sum/ring): provide lemmas about powers in graded monoids (#9631) The key results are `direct_sum.of_pow` and `graded_monoid.mk_pow`. ESTIMATED CHANGES Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.of_eq_of_graded_monoid_eq + theorem direct_sum.of_pow Modified src/algebra/graded_monoid.lean + def graded_monoid.gmonoid.gnpow_rec + theorem graded_monoid.gmonoid.gnpow_rec_succ + theorem graded_monoid.gmonoid.gnpow_rec_zero + theorem graded_monoid.mk_pow 2021-10-13 13:20:43 edf07cf feat(topology/sheaves/sheaf_condition/sites): Connect sheaves on sites to sheaves on spaces (#9609) Show that a sheaf on the site `opens X` is the same thing as a sheaf on the space `X`. This finally connects the theory of sheaves on sites to sheaves on spaces, which were previously independent of each other. ESTIMATED CHANGES Added src/topology/sheaves/sheaf_condition/sites.lean + def Top.presheaf.Sheaf_sites_to_sheaf_spaces + def Top.presheaf.Sheaf_spaces_equivelence_sheaf_sites + def Top.presheaf.Sheaf_spaces_to_sheaf_sites + def Top.presheaf.covering_of_presieve.diagram_nat_iso + theorem Top.presheaf.covering_of_presieve.first_obj_iso_comp_left_res_eq + theorem Top.presheaf.covering_of_presieve.first_obj_iso_comp_right_res_eq + def Top.presheaf.covering_of_presieve.first_obj_iso_pi_opens + theorem Top.presheaf.covering_of_presieve.first_obj_iso_pi_opens_π + theorem Top.presheaf.covering_of_presieve.fork_map_comp_first_obj_iso_pi_opens_eq + def Top.presheaf.covering_of_presieve.postcompose_diagram_fork_hom + def Top.presheaf.covering_of_presieve.postcompose_diagram_fork_iso + def Top.presheaf.covering_of_presieve.second_obj_iso_pi_inters + theorem Top.presheaf.covering_of_presieve.second_obj_iso_pi_inters_π + theorem Top.presheaf.covering_of_presieve.supr_eq_of_mem_grothendieck + def Top.presheaf.covering_of_presieve + theorem Top.presheaf.covering_of_presieve_apply + theorem Top.presheaf.is_sheaf_sites_iff_is_sheaf_spaces + theorem Top.presheaf.is_sheaf_sites_of_is_sheaf_spaces + theorem Top.presheaf.is_sheaf_spaces_of_is_sheaf_sites + def Top.presheaf.presieve_of_covering.first_obj_to_pi_opens + theorem Top.presheaf.presieve_of_covering.fork_map_comp_first_map_to_pi_opens_eq + theorem Top.presheaf.presieve_of_covering.fork_ι_comp_pi_opens_to_first_obj_to_pi_opens_eq + def Top.presheaf.presieve_of_covering.hom_of_index + def Top.presheaf.presieve_of_covering.index_of_hom + theorem Top.presheaf.presieve_of_covering.index_of_hom_spec + theorem Top.presheaf.presieve_of_covering.mem_grothendieck_topology + def Top.presheaf.presieve_of_covering.pi_inters_to_second_obj + def Top.presheaf.presieve_of_covering.pi_opens_to_first_obj + theorem Top.presheaf.presieve_of_covering.pi_opens_to_first_obj_comp_fist_map_eq + theorem Top.presheaf.presieve_of_covering.pi_opens_to_first_obj_comp_second_map_eq + theorem Top.presheaf.presieve_of_covering.res_comp_pi_opens_to_first_obj_eq + def Top.presheaf.presieve_of_covering 2021-10-13 13:20:41 f238733 feat(algebra/order/smul): Monotonicity of scalar multiplication (#9558) Also prove `smul_nonneg`, `smul_pos` and variants. ESTIMATED CHANGES Modified src/algebra/module/ordered.lean + theorem antitone_smul_left + def order_iso.smul_left_dual + theorem smul_nonneg_of_nonpos_of_nonpos + theorem smul_nonpos_of_nonpos_of_nonneg + theorem strict_anti_smul_left Modified src/algebra/order/smul.lean + theorem monotone_smul_left + theorem order_dual.of_dual_smul + theorem order_dual.to_dual_smul + def order_iso.smul_left + theorem smul_nonneg + theorem smul_nonpos_of_nonneg_of_nonpos + theorem strict_mono_smul_left 2021-10-13 12:04:30 04ed867 chore(topology/uniform_space/cauchy): add a few simple lemmas (#9685) * rename `cauchy_prod` to `cauchy.prod`; * add `cauchy_seq.tendsto_uniformity`, `cauchy_seq.nonempty`, `cauchy_seq.comp_tendsto`, `cauchy_seq.prod`, `cauchy_seq.prod_map`, `uniform_continuous.comp_cauchy_seq`, and `filter.tendsto.subseq_mem_entourage`; * drop `[nonempty _]` assumption in `cauchy_seq.mem_entourage`. ESTIMATED CHANGES Modified src/topology/uniform_space/cauchy.lean + theorem cauchy.prod - theorem cauchy_prod + theorem cauchy_seq.comp_tendsto +/- theorem cauchy_seq.mem_entourage + theorem cauchy_seq.nonempty + theorem cauchy_seq.prod + theorem cauchy_seq.prod_map + theorem cauchy_seq.tendsto_uniformity + theorem filter.tendsto.subseq_mem_entourage + theorem uniform_continuous.comp_cauchy_seq 2021-10-13 09:37:08 46a7014 feat(data/equiv/basic): psigma_congr_right (#9687) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.psigma_congr_right + theorem equiv.psigma_congr_right_refl + theorem equiv.psigma_congr_right_symm + theorem equiv.psigma_congr_right_trans +/- def equiv.psigma_equiv_sigma +/- def equiv.sigma_congr_right +/- theorem equiv.sigma_congr_right_refl +/- theorem equiv.sigma_congr_right_symm +/- theorem equiv.sigma_congr_right_trans 2021-10-13 09:37:07 4c1a9c4 chore(order/filter): add 2 lemmas (#9682) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.frequently_and_distrib_left + theorem filter.frequently_and_distrib_right 2021-10-13 09:37:00 8886386 feat(star/basic): add a `star_monoid (units R)` instance (#9681) This also moves all the `opposite R` instances to be adjacent, and add some missing `star_module` definitions. ESTIMATED CHANGES Modified src/algebra/star/basic.lean - theorem op_star + theorem opposite.op_star + theorem opposite.unop_star + theorem units.coe_star + theorem units.coe_star_inv - theorem unop_star 2021-10-13 09:36:59 52d5fd4 feat(linear_algebra/{dimension,affine_space/finite_dimensional}): independent subsets of finite-dimensional spaces are finite. (#9674) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + def fintype_of_fintype_ne Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem finite_of_fin_dim_affine_independent Modified src/linear_algebra/dimension.lean + theorem finite_of_is_noetherian_linear_independent 2021-10-13 07:56:13 2c8abe5 feat(algebra/star): `star_gpow` and `star_fpow` (#9661) One unrelated proof changes as the import additions pulls in a simp lemma that was previously missing, making the call to `ring` no longer necessary. ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem star_fpow + theorem star_gpow Modified src/ring_theory/polynomial/bernstein.lean 2021-10-13 02:43:35 ea70e1c chore(scripts): update nolints.txt (#9686) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-10-12 22:59:49 c65de1e chore(data/sym/sym2): speed up some proofs (#9677) In one test, elaboration of sym2_ext went from 46.9s to 734ms, and of elems_iff_eq from 54.3s to 514ms. ESTIMATED CHANGES Modified src/data/sym/sym2.lean 2021-10-12 17:00:40 66285c9 feat(topology/instances/ennreal): if a tsum is finite, then the tsum over the complement of a finset tends to 0 at top (#9665) Together with minor tweaks of the library: * rename `bounded.subset` to `bounded.mono` * remove `bUnion_subset_bUnion_right`, which is exactly the same as `bUnion_mono`. Same for intersections. * add `bUnion_congr` and `bInter_congr` * introduce lemma `null_of_locally_null`: if a set has zero measure in a neighborhood of each of its points, then it has zero measure in a second-countable space. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.subset_set_bUnion_of_mem Modified src/data/set/accumulate.lean Modified src/data/set/function.lean + theorem set.inj_on.pairwise_on_image Modified src/data/set/lattice.lean + theorem set.bInter_congr - theorem set.bInter_subset_bInter_right + theorem set.bUnion_congr - theorem set.bUnion_subset_bUnion_right + theorem set.pairwise_on_sUnion Modified src/dynamics/omega_limit.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.null_of_locally_null Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean +/- theorem summable.sigma + theorem tendsto_tsum_compl_at_top_zero +/- theorem tsum_comm +/- theorem tsum_prod +/- theorem tsum_sigma Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_tsum_compl_at_top_zero Modified src/topology/instances/nnreal.lean + theorem nnreal.tendsto_tsum_compl_at_top_zero Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean + theorem metric.bounded.mono - theorem metric.bounded.subset Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/subset_properties.lean 2021-10-12 17:00:39 817c70d feat(category_theory/*): Functors about comma categories. (#9627) Added `pre` and `post` for `comma`, `structured_arrow`, `costructured_arrow`. ESTIMATED CHANGES Modified src/category_theory/comma.lean + def category_theory.comma.post + def category_theory.comma.pre_left + def category_theory.comma.pre_right Modified src/category_theory/structured_arrow.lean + def category_theory.costructured_arrow.post + def category_theory.costructured_arrow.pre + def category_theory.structured_arrow.post + def category_theory.structured_arrow.pre 2021-10-12 15:09:33 f63b8f1 feat(algebra/star/basic): add some helper lemmas about star (#9651) This adds the new lemmas: * `star_pow` * `star_nsmul` * `star_gsmul` * `star_prod` * `star_div` * `star_div'` * `star_inv` * `star_inv'` * `star_mul'` and generalizes the typeclass assumptions from `star_ring` to `star_add_monoid` on: * `star_neg` * `star_sub` * `star_sum` ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem star_div' + theorem star_div + theorem star_gsmul + theorem star_inv' + theorem star_inv + theorem star_mul' +/- theorem star_neg + theorem star_nsmul + theorem star_pow + theorem star_prod +/- theorem star_sub +/- theorem star_sum 2021-10-12 11:41:14 b486c88 chore(analysis): fix file name (#9673) This file was moved since the docstring was written ESTIMATED CHANGES Modified src/analysis/calculus/parametric_integral.lean 2021-10-12 11:41:13 bcb2943 chore(set_theory/cardinal): move defs/lemmas about `lift` up (#9669) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean 2021-10-12 11:41:12 a979d15 feat(order/filter): `∃ᶠ m in at_top, m ≡ d [MOD n]` (#9666) ESTIMATED CHANGES Added src/order/filter/modeq.lean + theorem nat.frequently_even + theorem nat.frequently_mod_eq + theorem nat.frequently_modeq + theorem nat.frequently_odd 2021-10-12 08:59:45 fd7da4e refactor(combinatorics/partition): add `nat` namespace (#9672) `partition` is now `nat.partition` ESTIMATED CHANGES Modified src/combinatorics/partition.lean + theorem nat.partition.count_of_sums_of_ne_zero + theorem nat.partition.count_of_sums_zero + def nat.partition.distincts + def nat.partition.indiscrete_partition + def nat.partition.odd_distincts + def nat.partition.odds + def nat.partition.of_composition + theorem nat.partition.of_composition_surj + def nat.partition.of_multiset + def nat.partition.of_sums + structure nat.partition - theorem partition.count_of_sums_of_ne_zero - theorem partition.count_of_sums_zero - def partition.distincts - def partition.indiscrete_partition - def partition.odd_distincts - def partition.odds - def partition.of_composition - theorem partition.of_composition_surj - def partition.of_multiset - def partition.of_sums - structure partition Modified src/group_theory/perm/cycle_type.lean +/- def equiv.perm.partition 2021-10-12 08:59:43 2e72f35 refactor(data/opposite): Remove the `op_induction` tactic (#9660) The `induction` tactic is already powerful enough for this; we don't have `order_dual_induction` or `nat_induction` as tactics. The bulk of this change is replacing `op_induction x` with `induction x using opposite.rec`. This leaves behind the non-interactive `op_induction'` which is still needed as a `tidy` hook. This also renames the def `opposite.op_induction` to `opposite.rec` to match `order_dual.rec` etc. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/opposites.lean Modified src/algebra/quandle.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/limits/cones.lean Modified src/data/opposite.lean - def opposite.op_induction Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified src/topology/sheaves/stalks.lean 2021-10-12 08:59:41 ad4040d feat(algebra/opposites): provide npow and gpow explicitly, prove `op_gpow` and `unop_gpow` (#9659) By populating the `npow` and `gpow` fields in the obvious way, `op_pow` and `unop_pow` are true definitionally. This adds the new lemmas `op_gpow` and `unop_gpow` which works for `group`s and `division_ring`s too. Note that we do not provide an explicit `div` in `div_inv_monoid`, because there is no "reversed division" operator to define it via. This also reorders the lemmas so that the definitional lemmas are available before any proof obligations might appear in stronger typeclasses. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem opposite.op_gpow +/- theorem opposite.op_pow + theorem opposite.unop_gpow +/- theorem opposite.unop_pow Modified src/algebra/opposites.lean 2021-10-12 08:59:38 34ffb15 feat(linear_algebra/affine_space/finite_dimensional): upgrade `affine_independent.affine_span_eq_top_of_card_eq_finrank_add_one` to an iff (#9657) Also including some related, but strictly speaking independent, lemmas such as `affine_subspace.affine_span_eq_top_iff_vector_span_eq_top_of_nontrivial`. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.subsingleton_iff Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.affine_span_eq_top_iff_vector_span_eq_top_of_nonempty + theorem affine_subspace.affine_span_eq_top_iff_vector_span_eq_top_of_nontrivial + theorem affine_subspace.card_pos_of_affine_span_eq_top + theorem affine_subspace.vector_span_eq_top_of_affine_span_eq_top Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_independent.affine_span_eq_top_iff_card_eq_finrank_add_one - theorem affine_independent.affine_span_eq_top_of_card_eq_finrank_add_one 2021-10-12 08:16:55 1023d81 chore(ring_theory/tensor_product): squeeze simps in a slow proof (#9671) This proof just timed out in bors. Goes from 21s to 1s on my computer just by squeezing the simps. ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean 2021-10-12 06:20:54 a132d0a chore(analysis): move some files to `analysis/normed/group` (#9667) ESTIMATED CHANGES Renamed src/analysis/normed_space/SemiNormedGroup.lean to src/analysis/normed/group/SemiNormedGroup.lean Renamed src/analysis/normed_space/SemiNormedGroup/kernels.lean to src/analysis/normed/group/SemiNormedGroup/kernels.lean Renamed src/analysis/normed_space/normed_group_hom.lean to src/analysis/normed/group/hom.lean Renamed src/analysis/normed_space/normed_group_hom_completion.lean to src/analysis/normed/group/hom_completion.lean Renamed src/analysis/normed_space/normed_group_quotient.lean to src/analysis/normed/group/quotient.lean Modified src/measure_theory/function/lp_space.lean 2021-10-12 01:53:33 638dd0f feat(data/dfinsupp, algebra/direct_sum/module): direct sum on fintype (#9664) Analogues for `dfinsupp`/`direct_sum` of definitions/lemmas such as `finsupp.equiv_fun_on_fintype`: a `dfinsupp`/`direct_sum` over a finite index set is canonically equivalent to `pi` over the same index set. ESTIMATED CHANGES Modified src/algebra/direct_sum/module.lean + def direct_sum.linear_equiv_fun_on_fintype + theorem direct_sum.linear_equiv_fun_on_fintype_lof + theorem direct_sum.linear_equiv_fun_on_fintype_symm_coe + theorem direct_sum.linear_equiv_fun_on_fintype_symm_single Modified src/data/dfinsupp.lean + def dfinsupp.equiv_fun_on_fintype + theorem dfinsupp.equiv_fun_on_fintype_single + theorem dfinsupp.equiv_fun_on_fintype_symm_coe + theorem dfinsupp.equiv_fun_on_fintype_symm_single + theorem dfinsupp.single_eq_pi_single 2021-10-11 22:34:26 c2a30be feat(analysis/normed_space/normed_group_hom): add norm_noninc.neg (#9658) From LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.norm_noninc.neg_iff 2021-10-11 21:39:10 df132fe feat(topology/path_connected): add `path.reparam` for reparametrising a path. (#9643) I've also added `simps` to some of the definitions in this file. ESTIMATED CHANGES Modified src/topology/path_connected.lean + theorem path.coe_to_fun + theorem path.range_reparam +/- def path.refl + theorem path.refl_reparam + def path.reparam + theorem path.reparam_id + def path.simps.apply +/- def path.symm 2021-10-11 20:04:44 136d0ce feat(topology/homotopy/path): Add homotopy between paths (#9141) There is also a lemma about `path.to_continuous_map` which I needed in a prior iteration of this PR that I missed in #9133 ESTIMATED CHANGES Modified src/topology/homotopy/basic.lean Added src/topology/homotopy/path.lean + theorem path.homotopic.equivalence + theorem path.homotopic.refl + theorem path.homotopic.symm + theorem path.homotopic.trans + def path.homotopic + theorem path.homotopy.coe_fn_injective + def path.homotopy.eval + theorem path.homotopy.eval_one + theorem path.homotopy.eval_zero + def path.homotopy.hcomp + theorem path.homotopy.hcomp_apply + theorem path.homotopy.hcomp_half + def path.homotopy.refl + theorem path.homotopy.source + def path.homotopy.symm + theorem path.homotopy.symm_symm + theorem path.homotopy.symm_trans + theorem path.homotopy.target + def path.homotopy.trans + theorem path.homotopy.trans_apply + def path.homotopy Modified src/topology/path_connected.lean + theorem path.coe_to_continuous_map 2021-10-11 18:55:35 6872dfb feat(analysis/normed/group/basic): add norm_le_add_norm_add (#9655) From LTE. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean + theorem norm_le_add_norm_add 2021-10-11 15:29:09 fa5d9d6 feat(tactic/lint/misc): unused haves and suffices linters (#9310) A linter for unused term mode have and suffices statements. Based on initial work by @robertylewis https://leanprover.zulipchat.com/#narrow/stream/187764-Lean-for.20teaching/topic/linter.20for.20helping.20grading/near/209243601 but hopefully with less false positives now. ESTIMATED CHANGES Modified src/control/traversable/instances.lean Modified src/order/complete_lattice.lean Modified src/tactic/lint/misc.lean Added test/lint_unused_haves_suffices.lean + theorem test_a + theorem test_b + theorem test_c + theorem test_d + theorem test_map_reverse 2021-10-11 07:59:25 c2fde70 feat(number_theory/liouville): Liouville numbers form a dense Gδ set (#9646) ESTIMATED CHANGES Added src/number_theory/liouville/residual.lean + theorem dense_irrational + theorem dense_liouville + theorem eventually_residual_irrational + theorem eventually_residual_liouville + theorem is_Gδ_irrational + theorem is_Gδ_set_of_liouville + theorem set_of_liouville_eq_Inter_Union + theorem set_of_liouville_eq_irrational_inter_Inter_Union Modified src/topology/metric_space/baire.lean + theorem dense_of_mem_residual 2021-10-11 07:59:24 082aa83 feat(data/finset): add `finset.erase_none` (#9630) * move `option.to_finset` and `finset.insert_none` to a new file `data.finset.option`; redefine the latter in terms of `finset.cons`; * define `finset.erase_none`, prove lemmas about it; * add `finset.prod_cons`, `finset.sum_cons`, `finset.coe_cons`, `finset.cons_subset_cons`, `finset.card_cons`; * add `finset.subtype_mono` and `finset.bUnion_congr`; * add `set.insert_subset_insert_iff`; * add `@[simp]` to `finset.map_subset_map`; * upgrade `finset.map_embedding` to an `order_embedding`; * add `@[simps]` to `equiv.option_is_some_equiv` and `function.embedding.some`; * golf some proofs. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_cons +/- theorem finset.prod_multiset_map_count - theorem finset.sum_multiset_map_count Added src/algebra/big_operators/option.lean + theorem finset.prod_erase_none + theorem finset.prod_insert_none Modified src/algebra/polynomial/big_operators.lean Modified src/data/equiv/basic.lean +/- def equiv.option_is_some_equiv Modified src/data/finset/basic.lean + theorem finset.bUnion_congr + theorem finset.card_cons + theorem finset.coe_cons + theorem finset.cons_subset_cons +/- def finset.map_embedding +/- theorem finset.map_inj +/- theorem finset.map_subset_map +/- theorem finset.mem_cons + theorem finset.subtype_mono - theorem option.mem_to_finset - def option.to_finset - theorem option.to_finset_none - theorem option.to_finset_some Modified src/data/finset/lattice.lean Added src/data/finset/option.lean + theorem finset.card_insert_none + theorem finset.coe_erase_none + def finset.erase_none + theorem finset.erase_none_empty + theorem finset.erase_none_eq_bUnion + theorem finset.erase_none_image_some + theorem finset.erase_none_insert_none + theorem finset.erase_none_inter + theorem finset.erase_none_map_some + theorem finset.erase_none_none + theorem finset.erase_none_union + theorem finset.image_some_erase_none + def finset.insert_none + theorem finset.insert_none_erase_none + theorem finset.map_some_erase_none + theorem finset.mem_erase_none + theorem finset.mem_insert_none + theorem finset.some_mem_insert_none + theorem option.card_to_finset + theorem option.mem_to_finset + def option.to_finset + theorem option.to_finset_none + theorem option.to_finset_some Modified src/data/finset/pimage.lean Modified src/data/fintype/basic.lean - def finset.insert_none - theorem finset.mem_insert_none - theorem finset.some_mem_insert_none Modified src/data/fintype/card.lean Modified src/data/set/basic.lean + theorem set.insert_subset_insert_iff Modified src/logic/embedding.lean 2021-10-11 07:59:23 1539ee1 refactor(topology/sheaves/*): Make sheaf condition a Prop (#9607) Make `sheaf_condition` into a `Prop` and redefine the type of sheaves on a topological space `X` as a subtype of `(opens X)ᵒᵖ ⥤ C`. ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/locally_ringed_space.lean + def algebraic_geometry.LocallyRingedSpace.restrict + def algebraic_geometry.LocallyRingedSpace.restrict_top_iso Modified src/algebraic_geometry/sheafed_space.lean +/- def algebraic_geometry.SheafedSpace.sheaf Modified src/algebraic_geometry/structure_sheaf.lean +/- def algebraic_geometry.structure_sheaf.basic_open_iso +/- theorem algebraic_geometry.structure_sheaf.exists_const +/- def algebraic_geometry.structure_sheaf.global_sections_iso +/- def algebraic_geometry.structure_sheaf.to_stalk Modified src/topology/sheaves/forget.lean + theorem Top.presheaf.is_sheaf_iff_is_sheaf_comp - def Top.presheaf.sheaf_condition_equiv_sheaf_condition_comp Modified src/topology/sheaves/local_predicate.lean + theorem Top.subpresheaf_to_Types.is_sheaf - def Top.subpresheaf_to_Types.sheaf_condition Modified src/topology/sheaves/sheaf.lean + def Top.presheaf.is_sheaf + theorem Top.presheaf.is_sheaf_iso_iff + theorem Top.presheaf.is_sheaf_of_iso + theorem Top.presheaf.is_sheaf_punit - def Top.presheaf.sheaf_condition - def Top.presheaf.sheaf_condition_equiv_of_iso - def Top.presheaf.sheaf_condition_punit +/- def Top.sheaf.forget + def Top.sheaf - structure Top.sheaf Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean + theorem Top.presheaf.is_sheaf_iff_is_sheaf_opens_le_cover + def Top.presheaf.is_sheaf_opens_le_cover + theorem Top.presheaf.is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections - def Top.presheaf.sheaf_condition_equiv_sheaf_condition_opens_le_cover - def Top.presheaf.sheaf_condition_opens_le_cover - def Top.presheaf.sheaf_condition_opens_le_cover_equiv_sheaf_condition_pairwise_intersections Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean + theorem Top.presheaf.is_sheaf_iff_is_sheaf_pairwise_intersections + theorem Top.presheaf.is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections + def Top.presheaf.is_sheaf_pairwise_intersections + def Top.presheaf.is_sheaf_preserves_limit_pairwise_intersections - def Top.presheaf.sheaf_condition_equiv_sheaf_condition_pairwise_intersections - def Top.presheaf.sheaf_condition_equiv_sheaf_condition_preserves_limit_pairwise_intersections - def Top.presheaf.sheaf_condition_pairwise_intersections - def Top.presheaf.sheaf_condition_preserves_limit_pairwise_intersections Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean - def Top.presheaf.gluing + theorem Top.presheaf.is_sheaf_iff_is_sheaf_unique_gluing + theorem Top.presheaf.is_sheaf_iff_is_sheaf_unique_gluing_types + theorem Top.presheaf.is_sheaf_of_is_sheaf_unique_gluing_types + def Top.presheaf.is_sheaf_unique_gluing + theorem Top.presheaf.is_sheaf_unique_gluing_of_is_sheaf_types - def Top.presheaf.sheaf_condition_equiv_sheaf_condition_unique_gluing - def Top.presheaf.sheaf_condition_equiv_sheaf_condition_unique_gluing_types - def Top.presheaf.sheaf_condition_of_exists_unique_gluing - def Top.presheaf.sheaf_condition_of_sheaf_condition_unique_gluing_types - def Top.presheaf.sheaf_condition_unique_gluing - def Top.presheaf.sheaf_condition_unique_gluing_of_sheaf_condition_types +/- theorem Top.sheaf.eq_of_locally_eq +/- theorem Top.sheaf.exists_unique_gluing Modified src/topology/sheaves/sheaf_of_functions.lean - def Top.presheaf.to_Type + theorem Top.presheaf.to_Type_is_sheaf - def Top.presheaf.to_Types + theorem Top.presheaf.to_Types_is_sheaf Modified src/topology/sheaves/sheafify.lean +/- def Top.presheaf.sheafify_stalk_iso +/- def Top.presheaf.stalk_to_fiber +/- def Top.presheaf.to_sheafify Modified src/topology/sheaves/stalks.lean +/- theorem Top.presheaf.section_ext 2021-10-11 07:59:22 4a191ad feat(algebra.algebra.subalgebra): add `subalgebra.gc_map_comap` (#9435) Other changes: * add `linear_map.coe_inl`/`linear_map.coe_inr` and move `@[simp]` from `inl_apply`/`inr_apply` to these lemmas; * fix a typo in the name (`adjoint` → `adjoin`); * drop `algebra.adjoin_inl_union_inr_le_prod `: we prove an equality anyway; * add `alg_hom.map_adjoin` (same as `(adjoin_image _ _ _).symm`) to match `monoid_hom.map_closure` etc. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.gc_map_comap Modified src/linear_algebra/prod.lean + theorem linear_map.coe_inl + theorem linear_map.coe_inr +/- theorem linear_map.inl_apply +/- theorem linear_map.inr_apply Modified src/ring_theory/adjoin/basic.lean + theorem alg_hom.map_adjoin - theorem algebra.adjoin_inl_union_inr_le_prod + theorem algebra.adjoin_prod_le - theorem algebra.adjoint_prod_le 2021-10-11 06:17:12 30cf8b7 feat(group_theory/subgroup/basic): apply_mem_map_injective (#9637) A translation of `function.injective.mem_set_image`. ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean + theorem subgroup.mem_map_iff_mem Modified src/group_theory/submonoid/operations.lean + theorem submonoid.mem_map_iff_mem 2021-10-11 06:17:11 957f64e feat(algebra/floor): When the floor is strictly positive (#9625) `⌊a⌋₊` and `⌊a⌋` are strictly positive iff `1 ≤ a`. We use this to slightly golf IMO 2013 P5. ESTIMATED CHANGES Modified archive/imo/imo2013_q5.lean Modified src/algebra/floor.lean + theorem floor_pos + theorem nat_floor_pos + theorem sub_one_lt_nat_floor 2021-10-11 04:03:52 bcd79a1 chore(analysis/normed/group/basic): rename vars (#9652) * use `E`, `F` for (semi)normed groups and greek letters for other types; * golf some proofs (`bounded_iff_forall_norm_le`, `norm_pos_iff'`); * use `namespace lipschitz_with` and `namespace antilipschitz_with` instead of manual prefixes for all lemmas; * generalize `antilipschitz_with.add_lipschitz_with` to `pseudo_emetric_space`; * add `antilipschitz_with.edist_lt_top` and `antilipschitz_with.edist_ne_top`; * fix a typo in `pseudo_emetric_space.to_pseudo_metric_space`. ESTIMATED CHANGES Modified src/analysis/normed/group/basic.lean +/- theorem abs_dist_sub_le_dist_add_add +/- theorem abs_norm_sub_norm_le +/- theorem add_mem_ball_iff_norm +/- theorem add_mem_closed_ball_iff_norm +/- theorem add_monoid_hom.continuous_of_bound +/- theorem add_monoid_hom.isometry_iff_norm +/- theorem add_monoid_hom.isometry_of_norm +/- theorem add_monoid_hom.lipschitz_of_bound +/- theorem add_monoid_hom.lipschitz_of_bound_nnnorm +/- theorem antilipschitz_with.add_lipschitz_with +/- theorem antilipschitz_with.add_sub_lipschitz_with +/- theorem ball_zero_eq +/- theorem bounded_iff_forall_norm_le +/- theorem cauchy_seq.add +/- theorem cauchy_seq_sum_of_eventually_eq +/- theorem coe_neg_sphere +/- theorem coe_nnnorm +/- theorem continuous_nnnorm +/- theorem continuous_norm +/- theorem controlled_sum_of_mem_closure +/- theorem controlled_sum_of_mem_closure_range +/- theorem dist_add_add_le +/- theorem dist_add_add_le_of_le +/- theorem dist_add_left +/- theorem dist_add_right +/- theorem dist_eq_norm' +/- theorem dist_eq_norm +/- theorem dist_le_norm_add_norm +/- theorem dist_neg_neg +/- theorem dist_norm_norm_le +/- theorem dist_sub_left +/- theorem dist_sub_right +/- theorem dist_sub_sub_le +/- theorem dist_sub_sub_le_of_le +/- theorem dist_sum_sum_le +/- theorem dist_sum_sum_le_of_le +/- theorem dist_zero_left +/- theorem dist_zero_right +/- theorem edist_add_add_le +/- theorem edist_eq_coe_nnnorm +/- theorem edist_eq_coe_nnnorm_sub +/- theorem eq_of_norm_sub_eq_zero +/- theorem eq_of_norm_sub_le_zero +/- theorem eventually_ne_of_tendsto_norm_at_top +/- theorem filter.tendsto.norm +/- theorem is_bounded_under_of_tendsto +/- theorem is_compact.exists_bound_of_continuous_on +/- theorem isometric.add_left_symm +/- theorem isometric.add_left_to_equiv +/- theorem isometric.add_right_apply +/- theorem isometric.add_right_symm +/- theorem isometric.add_right_to_equiv +/- theorem isometric.coe_add_left +/- theorem isometric.coe_add_right +/- theorem isometric.coe_neg +/- theorem isometric.neg_symm +/- theorem isometric.neg_to_equiv +/- theorem lipschitz_on_with.norm_sub_le +/- theorem lipschitz_on_with_iff_norm_sub_le +/- theorem lipschitz_with.add +/- theorem lipschitz_with.neg +/- theorem lipschitz_with.sub +/- theorem lipschitz_with_iff_norm_sub_le +/- theorem lipschitz_with_one_norm +/- theorem mem_ball_iff_norm' +/- theorem mem_ball_iff_norm +/- theorem mem_ball_zero_iff +/- theorem mem_closed_ball_iff_norm' +/- theorem mem_closed_ball_iff_norm +/- theorem mem_emetric_ball_zero_iff +/- theorem mem_sphere_iff_norm +/- theorem mem_sphere_zero_iff_norm +/- theorem nat.norm_cast_le +/- theorem ne_zero_of_norm_pos +/- theorem nndist_add_add_le +/- theorem nndist_eq_nnnorm +/- theorem nndist_nnnorm_nnnorm_le +/- theorem nnnorm_add_le +/- theorem nnnorm_eq_zero +/- theorem nnnorm_neg +/- theorem nnnorm_sum_le +/- theorem nnnorm_zero +/- theorem nonzero_of_mem_sphere +/- theorem nonzero_of_mem_unit_sphere +/- theorem norm_add_le +/- theorem norm_add_le_of_le +/- theorem norm_eq_of_mem_sphere +/- theorem norm_eq_zero +/- theorem norm_eq_zero_iff' +/- theorem norm_fst_le +/- theorem norm_le_insert' +/- theorem norm_le_insert +/- theorem norm_le_norm_add_const_of_dist_le +/- theorem norm_le_of_mem_closed_ball +/- theorem norm_le_zero_iff' +/- theorem norm_le_zero_iff +/- theorem norm_lt_norm_add_const_of_dist_lt +/- theorem norm_lt_of_mem_ball +/- theorem norm_neg +/- theorem norm_nonneg +/- theorem norm_of_subsingleton +/- theorem norm_pos_iff' +/- theorem norm_pos_iff +/- theorem norm_prod_le_iff +/- theorem norm_snd_le +/- theorem norm_sub_eq_zero_iff +/- theorem norm_sub_le +/- theorem norm_sub_le_of_le +/- theorem norm_sub_norm_le +/- theorem norm_sub_rev +/- theorem norm_sum_le +/- theorem norm_sum_le_of_le +/- theorem norm_zero +/- theorem normed_group.cauchy_seq_iff +/- theorem normed_group.core.to_semi_normed_group.core +/- structure normed_group.core +/- def normed_group.induced +/- def normed_group.of_add_dist +/- theorem normed_group.tendsto_nhds_nhds +/- theorem normed_group.tendsto_nhds_zero +/- theorem of_real_norm_eq_coe_nnnorm +/- theorem pi_nnnorm_const +/- theorem pi_nnsemi_norm_const +/- theorem pi_norm_const +/- theorem pi_semi_norm_const +/- theorem preimage_add_ball +/- theorem preimage_add_closed_ball +/- theorem preimage_add_sphere +/- theorem prod.nnnorm_def +/- theorem prod.nnsemi_norm_def +/- theorem prod.norm_def +/- theorem prod.semi_norm_def +/- theorem semi_norm_fst_le +/- theorem semi_norm_prod_le_iff +/- theorem semi_norm_snd_le +/- structure semi_normed_group.core +/- def semi_normed_group.induced +/- theorem semi_normed_group.mem_closure_iff +/- def semi_normed_group.of_add_dist' +/- def semi_normed_group.of_add_dist +/- theorem squeeze_zero_norm' +/- theorem squeeze_zero_norm +/- theorem tendsto_iff_norm_tendsto_zero +/- theorem tendsto_norm +/- theorem tendsto_norm_cocompact_at_top +/- theorem tendsto_norm_nhds_within_zero +/- theorem tendsto_norm_sub_self +/- theorem tendsto_norm_zero +/- theorem tendsto_zero_iff_norm_tendsto_zero +/- theorem uniform_continuous_nnnorm +/- theorem uniform_continuous_norm Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.edist_lt_top + theorem antilipschitz_with.edist_ne_top Modified src/topology/metric_space/basic.lean +/- def pseudo_emetric_space.to_pseudo_metric_space 2021-10-11 04:03:51 11117ec feat(topology/G_delta): a finite set is a Gδ-set (#9644) ESTIMATED CHANGES Modified src/topology/G_delta.lean + theorem is_Gδ_empty + theorem is_Gδ_singleton + theorem set.finite.is_Gδ Modified src/topology/separation.lean + theorem bInter_basis_nhds 2021-10-11 04:03:50 c02a655 feat(linear_algebra/affine_space/barycentric_coords): we can recover a point from its barycentric coordinates (#9629) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/barycentric_coords.lean + theorem affine_combination_barycentric_coord_eq_self + theorem sum_barycentric_coord_apply_eq_one Modified src/linear_algebra/affine_space/combination.lean + theorem eq_affine_combination_of_mem_affine_span_of_fintype 2021-10-11 04:03:49 0bd14ba feat(category_theory/limits/lattice): Add explicit formulas for limits in lattices (#9608) Add explicit descriptions of finite limits and colimits in complete lattices. In particular, the product and the pullback is equal to the infimum, while coproduct and pushout is the supremum. Furthermore, `limit_iso_infi` can be strengthened to an equality, as preorder categories are skeletal. ESTIMATED CHANGES Modified src/category_theory/limits/lattice.lean +/- def category_theory.limits.complete_lattice.colimit_cocone + theorem category_theory.limits.complete_lattice.colimit_eq_supr - def category_theory.limits.complete_lattice.colimit_iso_supr - theorem category_theory.limits.complete_lattice.colimit_iso_supr_hom - theorem category_theory.limits.complete_lattice.colimit_iso_supr_inv + theorem category_theory.limits.complete_lattice.coprod_eq_sup + def category_theory.limits.complete_lattice.finite_colimit_cocone + theorem category_theory.limits.complete_lattice.finite_colimit_eq_finset_univ_sup + theorem category_theory.limits.complete_lattice.finite_coproduct_eq_finset_sup + def category_theory.limits.complete_lattice.finite_limit_cone + theorem category_theory.limits.complete_lattice.finite_limit_eq_finset_univ_inf + theorem category_theory.limits.complete_lattice.finite_product_eq_finset_inf +/- def category_theory.limits.complete_lattice.limit_cone + theorem category_theory.limits.complete_lattice.limit_eq_infi - def category_theory.limits.complete_lattice.limit_iso_infi - theorem category_theory.limits.complete_lattice.limit_iso_infi_hom - theorem category_theory.limits.complete_lattice.limit_iso_infi_inv + theorem category_theory.limits.complete_lattice.prod_eq_inf + theorem category_theory.limits.complete_lattice.pullback_eq_inf + theorem category_theory.limits.complete_lattice.pushout_eq_sup 2021-10-11 04:03:48 c803c8d feat(algebra/gcd_monoid): trivial `gcd` on `comm_group_with_zero`s (#9602) This PR extends the `normalization_monoid` defined on `comm_group_with_zero`s (e.g. fields) to a `normalized_gcd_monoid`. This is useful if you need to take the gcd of two polynomials in a field. ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean +/- theorem comm_group_with_zero.coe_norm_unit + theorem comm_group_with_zero.normalize_eq_one Modified src/ring_theory/unique_factorization_domain.lean + theorem ufm_of_gcd_of_wf_dvd_monoid 2021-10-11 04:03:47 ec5835d chore(order/*): use to_dual and of_dual in statements instead of implicit coercions between and `α` and `order_dual α` (#9593) Previously the meaning of the statement was hidden away in an invisible surprising typeclass argument. Before this change, the docs suggested the nonsensical statement that `monotone f` implies `antitone f`! ![image](https://user-images.githubusercontent.com/425260/136348562-d3ecbb85-2a54-4c13-adda-806eb150b00a.png) Most of the proof changes in this PR are a consequence of changing the interval lemmas, not the monotonicity or convexity ones. ESTIMATED CHANGES Modified src/analysis/convex/function.lean +/- theorem concave_on.dual +/- theorem convex_on.dual +/- theorem strict_concave_on.dual +/- theorem strict_convex_on.dual Modified src/data/set/intervals/basic.lean +/- theorem set.dual_Icc +/- theorem set.dual_Ici +/- theorem set.dual_Ico +/- theorem set.dual_Iic +/- theorem set.dual_Iio +/- theorem set.dual_Ioc +/- theorem set.dual_Ioi +/- theorem set.dual_Ioo Modified src/data/set/intervals/disjoint.lean Modified src/data/set/intervals/ord_connected.lean +/- theorem set.ord_connected.dual +/- theorem set.ord_connected_dual Modified src/data/set/intervals/surj_on.lean Modified src/order/bounded_lattice.lean +/- theorem is_compl.to_order_dual Modified src/order/bounds.lean Modified src/order/filter/extr.lean +/- theorem is_extr_filter_dual_iff +/- theorem is_extr_on_dual_iff +/- theorem is_max_filter_dual_iff +/- theorem is_max_on_dual_iff +/- theorem is_min_filter_dual_iff +/- theorem is_min_on_dual_iff Modified src/order/monotone.lean Modified src/order/order_dual.lean Modified src/set_theory/zfc.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/opens.lean +/- def topological_space.opens.gi Modified src/topology/subset_properties.lean 2021-10-11 04:03:45 ef46da8 feat(category_theory/*): Curried yoneda lemma (#9579) Provided curried versions of the Yoneda lemma when the category is small. ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean + theorem category_theory.cartesian_closed.curry_eq + theorem category_theory.cartesian_closed.curry_eq_iff + theorem category_theory.cartesian_closed.curry_id_eq_coev + theorem category_theory.cartesian_closed.curry_injective + theorem category_theory.cartesian_closed.curry_natural_left + theorem category_theory.cartesian_closed.curry_natural_right + theorem category_theory.cartesian_closed.curry_uncurry + theorem category_theory.cartesian_closed.eq_curry_iff + theorem category_theory.cartesian_closed.uncurry_curry + theorem category_theory.cartesian_closed.uncurry_eq + theorem category_theory.cartesian_closed.uncurry_id_eq_ev + theorem category_theory.cartesian_closed.uncurry_injective + theorem category_theory.cartesian_closed.uncurry_natural_left + theorem category_theory.cartesian_closed.uncurry_natural_right - theorem category_theory.curry_eq - theorem category_theory.curry_eq_iff - theorem category_theory.curry_id_eq_coev - theorem category_theory.curry_injective - theorem category_theory.curry_natural_left - theorem category_theory.curry_natural_right - theorem category_theory.curry_uncurry - theorem category_theory.eq_curry_iff - theorem category_theory.uncurry_curry - theorem category_theory.uncurry_eq - theorem category_theory.uncurry_id_eq_ev - theorem category_theory.uncurry_injective - theorem category_theory.uncurry_natural_left - theorem category_theory.uncurry_natural_right Modified src/category_theory/closed/functor.lean Modified src/category_theory/closed/ideal.lean Modified src/category_theory/types.lean + def category_theory.ulift_functor_trivial Modified src/category_theory/yoneda.lean + def category_theory.curried_yoneda_lemma' + def category_theory.curried_yoneda_lemma 2021-10-11 02:26:38 e32154d feat(data/equiv/ring): add basic API lemmas for ring_equiv (#9639) This PR adds the lemmas `map_inv`, `map_div`, `map_pow` and `map_fpow` for `ring_equiv`. These lemmas were already available for `ring_hom`s. I'm very open to suggestions about where they should go; `map_fpow` in particular requires a new import in `algebra/field_power.lean`. ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem ring_equiv.map_fpow Modified src/data/equiv/ring.lean + theorem ring_equiv.map_div + theorem ring_equiv.map_inv + theorem ring_equiv.map_pow 2021-10-10 21:07:28 64255e2 chore(analysis): move some code to `analysis.normed.group.basic` (#9642) ESTIMATED CHANGES Added src/analysis/normed/group/basic.lean + theorem abs_dist_sub_le_dist_add_add + theorem abs_norm_sub_norm_le + theorem add_mem_ball_iff_norm + theorem add_mem_closed_ball_iff_norm + theorem add_monoid_hom.continuous_of_bound + theorem add_monoid_hom.isometry_iff_norm + theorem add_monoid_hom.isometry_of_norm + theorem add_monoid_hom.lipschitz_of_bound + theorem add_monoid_hom.lipschitz_of_bound_nnnorm + theorem antilipschitz_with.add_lipschitz_with + theorem antilipschitz_with.add_sub_lipschitz_with + theorem ball_zero_eq + theorem bounded_iff_forall_norm_le + theorem cauchy_seq.add + theorem cauchy_seq_sum_of_eventually_eq + theorem coe_neg_sphere + theorem coe_nnnorm + theorem coe_norm_subgroup + theorem continuous.nnnorm + theorem continuous.norm + theorem continuous_at.nnnorm + theorem continuous_at.norm + theorem continuous_nnnorm + theorem continuous_norm + theorem continuous_on.nnnorm + theorem continuous_on.norm + theorem continuous_within_at.nnnorm + theorem continuous_within_at.norm + theorem controlled_sum_of_mem_closure + theorem controlled_sum_of_mem_closure_range + theorem dist_add_add_le + theorem dist_add_add_le_of_le + theorem dist_add_left + theorem dist_add_right + theorem dist_eq_norm' + theorem dist_eq_norm + theorem dist_le_norm_add_norm + theorem dist_neg_neg + theorem dist_norm_norm_le + theorem dist_sub_left + theorem dist_sub_right + theorem dist_sub_sub_le + theorem dist_sub_sub_le_of_le + theorem dist_sum_sum_le + theorem dist_sum_sum_le_of_le + theorem dist_zero_left + theorem dist_zero_right + theorem edist_add_add_le + theorem edist_eq_coe_nnnorm + theorem edist_eq_coe_nnnorm_sub + theorem eq_of_norm_sub_eq_zero + theorem eq_of_norm_sub_le_zero + theorem eventually_ne_of_tendsto_norm_at_top + theorem filter.tendsto.nnnorm + theorem filter.tendsto.norm + theorem is_bounded_under_of_tendsto + theorem is_compact.exists_bound_of_continuous_on + theorem isometric.add_left_symm + theorem isometric.add_left_to_equiv + theorem isometric.add_right_apply + theorem isometric.add_right_symm + theorem isometric.add_right_to_equiv + theorem isometric.coe_add_left + theorem isometric.coe_add_right + theorem isometric.coe_neg + theorem isometric.neg_symm + theorem isometric.neg_to_equiv + theorem lipschitz_on_with.norm_sub_le + theorem lipschitz_on_with_iff_norm_sub_le + theorem lipschitz_with.add + theorem lipschitz_with.neg + theorem lipschitz_with.sub + theorem lipschitz_with_iff_norm_sub_le + theorem lipschitz_with_one_norm + theorem mem_ball_iff_norm' + theorem mem_ball_iff_norm + theorem mem_ball_zero_iff + theorem mem_closed_ball_iff_norm' + theorem mem_closed_ball_iff_norm + theorem mem_emetric_ball_zero_iff + theorem mem_sphere_iff_norm + theorem mem_sphere_zero_iff_norm + theorem nat.norm_cast_le + theorem ne_zero_of_norm_pos + theorem nndist_add_add_le + theorem nndist_eq_nnnorm + theorem nndist_nnnorm_nnnorm_le + theorem nnnorm_add_le + theorem nnnorm_eq_zero + theorem nnnorm_neg + theorem nnnorm_sum_le + theorem nnnorm_zero + theorem nonzero_of_mem_sphere + theorem nonzero_of_mem_unit_sphere + theorem norm_add_le + theorem norm_add_le_of_le + theorem norm_eq_of_mem_sphere + theorem norm_eq_zero + theorem norm_eq_zero_iff' + theorem norm_fst_le + theorem norm_le_insert' + theorem norm_le_insert + theorem norm_le_norm_add_const_of_dist_le + theorem norm_le_of_mem_closed_ball + theorem norm_le_pi_norm + theorem norm_le_zero_iff' + theorem norm_le_zero_iff + theorem norm_lt_norm_add_const_of_dist_lt + theorem norm_lt_of_mem_ball + theorem norm_neg + theorem norm_nonneg + theorem norm_of_subsingleton + theorem norm_pos_iff' + theorem norm_pos_iff + theorem norm_prod_le_iff + theorem norm_snd_le + theorem norm_sub_eq_zero_iff + theorem norm_sub_le + theorem norm_sub_le_of_le + theorem norm_sub_norm_le + theorem norm_sub_rev + theorem norm_sum_le + theorem norm_sum_le_of_le + theorem norm_zero + theorem normed_group.cauchy_seq_iff + theorem normed_group.core.to_semi_normed_group.core + structure normed_group.core + def normed_group.induced + def normed_group.of_add_dist + theorem normed_group.tendsto_nhds_nhds + theorem normed_group.tendsto_nhds_zero + theorem of_real_norm_eq_coe_nnnorm + theorem pi_nnnorm_const + theorem pi_nnsemi_norm_const + theorem pi_norm_const + theorem pi_norm_le_iff + theorem pi_norm_lt_iff + theorem pi_semi_norm_const + theorem pi_semi_norm_le_iff + theorem pi_semi_norm_lt_iff + theorem preimage_add_ball + theorem preimage_add_closed_ball + theorem preimage_add_sphere + theorem prod.nnnorm_def + theorem prod.nnsemi_norm_def + theorem prod.norm_def + theorem prod.semi_norm_def + theorem punit.norm_eq_zero + theorem real.norm_eq_abs + theorem semi_norm_fst_le + theorem semi_norm_le_pi_norm + theorem semi_norm_prod_le_iff + theorem semi_norm_snd_le + structure semi_normed_group.core + def semi_normed_group.induced + theorem semi_normed_group.mem_closure_iff + def semi_normed_group.of_add_dist' + def semi_normed_group.of_add_dist + theorem squeeze_zero_norm' + theorem squeeze_zero_norm + theorem submodule.norm_coe + theorem submodule.norm_mk + theorem tendsto_iff_norm_tendsto_zero + theorem tendsto_norm + theorem tendsto_norm_cocompact_at_top + theorem tendsto_norm_nhds_within_zero + theorem tendsto_norm_sub_self + theorem tendsto_norm_zero + theorem tendsto_zero_iff_norm_tendsto_zero + theorem uniform_continuous_nnnorm + theorem uniform_continuous_norm Modified src/analysis/normed_space/basic.lean - theorem abs_dist_sub_le_dist_add_add - theorem abs_norm_sub_norm_le - theorem add_mem_ball_iff_norm - theorem add_mem_closed_ball_iff_norm - theorem add_monoid_hom.continuous_of_bound - theorem add_monoid_hom.isometry_iff_norm - theorem add_monoid_hom.isometry_of_norm - theorem add_monoid_hom.lipschitz_of_bound - theorem add_monoid_hom.lipschitz_of_bound_nnnorm - theorem antilipschitz_with.add_lipschitz_with - theorem antilipschitz_with.add_sub_lipschitz_with - theorem ball_zero_eq - theorem bounded_iff_forall_norm_le - theorem cauchy_seq.add - theorem cauchy_seq_sum_of_eventually_eq - theorem coe_neg_sphere - theorem coe_nnnorm - theorem coe_norm_subgroup - theorem continuous.nnnorm - theorem continuous.norm - theorem continuous_at.nnnorm - theorem continuous_at.norm - theorem continuous_nnnorm - theorem continuous_norm - theorem continuous_on.nnnorm - theorem continuous_on.norm - theorem continuous_within_at.nnnorm - theorem continuous_within_at.norm - theorem controlled_sum_of_mem_closure - theorem controlled_sum_of_mem_closure_range - theorem dist_add_add_le - theorem dist_add_add_le_of_le - theorem dist_add_left - theorem dist_add_right - theorem dist_eq_norm' - theorem dist_eq_norm - theorem dist_le_norm_add_norm - theorem dist_neg_neg - theorem dist_norm_norm_le - theorem dist_sub_left - theorem dist_sub_right - theorem dist_sub_sub_le - theorem dist_sub_sub_le_of_le - theorem dist_sum_sum_le - theorem dist_sum_sum_le_of_le - theorem dist_zero_left - theorem dist_zero_right - theorem edist_add_add_le - theorem edist_eq_coe_nnnorm - theorem edist_eq_coe_nnnorm_sub - theorem eq_of_norm_sub_eq_zero - theorem eq_of_norm_sub_le_zero - theorem eventually_ne_of_tendsto_norm_at_top - theorem filter.tendsto.nnnorm - theorem filter.tendsto.norm - theorem is_bounded_under_of_tendsto - theorem is_compact.exists_bound_of_continuous_on - theorem isometric.add_left_symm - theorem isometric.add_left_to_equiv - theorem isometric.add_right_apply - theorem isometric.add_right_symm - theorem isometric.add_right_to_equiv - theorem isometric.coe_add_left - theorem isometric.coe_add_right - theorem isometric.coe_neg - theorem isometric.neg_symm - theorem isometric.neg_to_equiv - theorem lipschitz_on_with.norm_sub_le - theorem lipschitz_on_with_iff_norm_sub_le - theorem lipschitz_with.add - theorem lipschitz_with.neg - theorem lipschitz_with.sub - theorem lipschitz_with_iff_norm_sub_le - theorem lipschitz_with_one_norm - theorem mem_ball_iff_norm' - theorem mem_ball_iff_norm - theorem mem_ball_zero_iff - theorem mem_closed_ball_iff_norm' - theorem mem_closed_ball_iff_norm - theorem mem_emetric_ball_zero_iff - theorem mem_sphere_iff_norm - theorem mem_sphere_zero_iff_norm - theorem nat.norm_cast_le - theorem ne_zero_of_norm_pos - theorem nndist_add_add_le - theorem nndist_eq_nnnorm - theorem nndist_nnnorm_nnnorm_le - theorem nnnorm_add_le - theorem nnnorm_eq_zero - theorem nnnorm_neg - theorem nnnorm_sum_le - theorem nnnorm_zero - theorem nonzero_of_mem_sphere - theorem nonzero_of_mem_unit_sphere - theorem norm_add_le - theorem norm_add_le_of_le - theorem norm_eq_of_mem_sphere - theorem norm_eq_zero - theorem norm_eq_zero_iff' - theorem norm_fst_le - theorem norm_le_insert' - theorem norm_le_insert - theorem norm_le_norm_add_const_of_dist_le - theorem norm_le_of_mem_closed_ball - theorem norm_le_pi_norm - theorem norm_le_zero_iff' - theorem norm_le_zero_iff - theorem norm_lt_norm_add_const_of_dist_lt - theorem norm_lt_of_mem_ball - theorem norm_neg - theorem norm_nonneg - theorem norm_of_subsingleton - theorem norm_pos_iff' - theorem norm_pos_iff - theorem norm_prod_le_iff - theorem norm_snd_le - theorem norm_sub_eq_zero_iff - theorem norm_sub_le - theorem norm_sub_le_of_le - theorem norm_sub_norm_le - theorem norm_sub_rev - theorem norm_sum_le - theorem norm_sum_le_of_le - theorem norm_zero - theorem normed_group.cauchy_seq_iff - theorem normed_group.core.to_semi_normed_group.core - structure normed_group.core - def normed_group.induced - def normed_group.of_add_dist - theorem normed_group.tendsto_nhds_nhds - theorem normed_group.tendsto_nhds_zero - theorem of_real_norm_eq_coe_nnnorm - theorem pi_nnnorm_const - theorem pi_nnsemi_norm_const - theorem pi_norm_const - theorem pi_norm_le_iff - theorem pi_norm_lt_iff - theorem pi_semi_norm_const - theorem pi_semi_norm_le_iff - theorem pi_semi_norm_lt_iff - theorem preimage_add_ball - theorem preimage_add_closed_ball - theorem preimage_add_sphere - theorem prod.nnnorm_def - theorem prod.nnsemi_norm_def - theorem prod.norm_def - theorem prod.semi_norm_def - theorem punit.norm_eq_zero - theorem real.norm_eq_abs - theorem semi_norm_fst_le - theorem semi_norm_le_pi_norm - theorem semi_norm_prod_le_iff - theorem semi_norm_snd_le - structure semi_normed_group.core - def semi_normed_group.induced - theorem semi_normed_group.mem_closure_iff - def semi_normed_group.of_add_dist' - def semi_normed_group.of_add_dist - theorem squeeze_zero_norm' - theorem squeeze_zero_norm - theorem submodule.norm_coe - theorem submodule.norm_mk - theorem tendsto_iff_norm_tendsto_zero - theorem tendsto_norm - theorem tendsto_norm_cocompact_at_top - theorem tendsto_norm_nhds_within_zero - theorem tendsto_norm_sub_self - theorem tendsto_norm_zero - theorem tendsto_zero_iff_norm_tendsto_zero - theorem uniform_continuous_nnnorm - theorem uniform_continuous_norm 2021-10-10 21:07:27 fa41436 feat(algebra/*,group_theory/*): instances/lemmas about `is_scalar_tower` and `smul_comm_class` (#9533) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/group/prod.lean + theorem prod.mul_def Modified src/algebra/module/basic.lean Modified src/algebra/opposites.lean +/- theorem opposite.op_smul_eq_mul Modified src/group_theory/group_action/defs.lean + theorem is_scalar_tower.of_smul_one_mul + theorem mul_smul_one + theorem smul_comm_class.of_mul_smul_one + theorem smul_one_mul Modified src/group_theory/group_action/prod.lean + theorem prod.smul_def 2021-10-10 18:58:39 0bba837 chore(data/nat/factorial): use `n + 1` instead of `n.succ` in `nat.factorial_succ` (#9645) ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean Modified src/data/nat/factorial/basic.lean +/- theorem nat.factorial_succ Modified src/number_theory/liouville/liouville_constant.lean 2021-10-10 09:54:18 3d438ba feat(probability_theory/density): add continuous uniform distribution (#9385) ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.mul_indicator_eq_one_iff Modified src/measure_theory/measure/measure_space_def.lean + theorem set.mul_indicator_ae_eq_one Modified src/probability_theory/density.lean + theorem measure_theory.has_pdf_of_pdf_ne_zero + theorem measure_theory.pdf.is_uniform.has_pdf + theorem measure_theory.pdf.is_uniform.integral_eq + theorem measure_theory.pdf.is_uniform.mul_pdf_integrable + theorem measure_theory.pdf.is_uniform.pdf_to_real_ae_eq + def measure_theory.pdf.is_uniform 2021-10-09 16:48:06 54a4c17 feat(group_theory/sylow): `set_like` instance for `sylow` (#9641) Adds a `set_like` instance for `sylow p G`. Coauthored by @jcommelin ESTIMATED CHANGES Modified src/group_theory/sylow.lean +/- theorem sylow.ext +/- theorem sylow.ext_iff +/- theorem sylow.to_subgroup_eq_coe 2021-10-09 14:56:51 bb98444 refactor(group_theory/congruence): remove old_structure_cmd (#9622) ESTIMATED CHANGES Modified src/group_theory/congruence.lean +/- theorem con.Inf_def +/- theorem con.Sup_def - theorem con.coe_eq +/- theorem con.con_gen_le +/- theorem con.rel_mk 2021-10-09 09:53:15 7ed091d feat(group_theory/perm/concrete_cycle): computable cyclic perm notation (#9470) ESTIMATED CHANGES Modified src/group_theory/perm/concrete_cycle.lean + theorem equiv.perm.is_cycle.exists_unique_cycle_nontrivial_subtype + def equiv.perm.iso_cycle' + def equiv.perm.iso_cycle + theorem equiv.perm.nodup_to_cycle + theorem equiv.perm.nontrivial_to_cycle + def equiv.perm.to_cycle + theorem equiv.perm.to_cycle_eq_to_list 2021-10-09 07:26:30 ce50450 chore(analysis/normed_space/linear_isometry): adjust `isometry` API (#9635) Now that we have the `linear_isometry` definition, it is better to pass through this definition rather then using a `linear_map` satisfying the `isometry` hypothesis. To this end, convert old lemma `linear_map.norm_apply_of_isometry` to a new definition `linear_map.to_linear_isometry`, and delete old definition `continuous_linear_equiv.of_isometry`, whose use should be replaced by the pair of definitions`linear_map.to_linear_isometry`, `linear_isometry_equiv.of_surjective`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean - def continuous_linear_equiv.of_isometry - theorem linear_map.norm_apply_of_isometry Modified src/analysis/normed_space/linear_isometry.lean + def linear_map.to_linear_isometry Modified src/analysis/normed_space/operator_norm.lean 2021-10-09 07:26:28 a9643aa feat(order/min_max): min_cases and max_cases lemmata (#9632) These lemmata make the following type of argument work seamlessly: ```lean example (h1 : 0 ≤ x) (h2 : x ≤ 1) : min 1 x ≤ max x 0 := by cases min_cases 1 x; cases max_cases x 0; linarith ``` See similar PR #8124 ESTIMATED CHANGES Modified src/order/min_max.lean + theorem max_cases + theorem min_cases 2021-10-09 07:26:25 e0f80e7 feat(analysis/convex/quasiconvex): Quasiconvexity of functions (#9561) A function is quasiconvex iff all its sublevels are convex. This generalizes unimodality to non-ordered spaces. ESTIMATED CHANGES Added src/analysis/convex/quasiconvex.lean + theorem antitone.quasiconcave_on + theorem antitone.quasiconvex_on + theorem antitone.quasilinear_on + theorem antitone_on.quasiconcave_on + theorem antitone_on.quasiconvex_on + theorem antitone_on.quasilinear_on + theorem concave_on.quasiconcave_on + theorem convex.quasiconcave_on_of_convex_ge + theorem convex.quasiconvex_on_of_convex_le + theorem convex_on.quasiconvex_on + theorem monotone.quasiconcave_on + theorem monotone.quasiconvex_on + theorem monotone.quasilinear_on + theorem monotone_on.quasiconcave_on + theorem monotone_on.quasiconvex_on + theorem monotone_on.quasilinear_on + theorem quasiconcave_on.convex + theorem quasiconcave_on.convex_gt + theorem quasiconcave_on.dual + theorem quasiconcave_on.inf + def quasiconcave_on + theorem quasiconcave_on_iff_min_le + theorem quasiconvex_on.convex + theorem quasiconvex_on.convex_lt + theorem quasiconvex_on.dual + theorem quasiconvex_on.sup + def quasiconvex_on + theorem quasiconvex_on_iff_le_max + theorem quasilinear_on.dual + def quasilinear_on + theorem quasilinear_on_iff_mem_interval Modified src/data/set/basic.lean + theorem set.sep_inter_sep 2021-10-09 04:58:07 7a7fada refactor(data/nat/basic): finish removing sub lemmas (#9601) * Follow-up of #9544 to remove the remaining sub lemmas on `nat` that can be generalized to `has_ordered_sub`. * The renamings of the lemmas in mathlib that occurred at least once: ``` nat.sub_eq_of_eq_add -> sub_eq_of_eq_add_rev nat.add_sub_sub_cancel -> add_sub_sub_cancel' nat.sub_le_self -> sub_le_self' ``` ESTIMATED CHANGES Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified src/algebra/order/sub.lean + theorem sub_eq_of_eq_add_rev Modified src/data/multiset/basic.lean Modified src/data/nat/basic.lean - theorem nat.add_sub_sub_cancel - theorem nat.sub_le_left_iff_le_add - theorem nat.sub_le_right_iff_le_add Modified src/data/nat/choose/basic.lean Modified src/data/nat/sqrt.lean Modified src/data/polynomial/hasse_deriv.lean Modified src/data/polynomial/ring_division.lean Modified src/order/jordan_holder.lean Modified src/ring_theory/witt_vector/frobenius.lean 2021-10-09 02:44:04 7aaa1b4 chore(scripts): update nolints.txt (#9636) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-10-08 21:56:11 7e3fa4c chore(*): fix typos (#9634) ESTIMATED CHANGES Modified archive/miu_language/basic.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/ring/prod.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/trigonometric/complex.lean +/- theorem complex.differentiable_at_tan Modified src/category_theory/limits/fubini.lean Modified src/combinatorics/pigeonhole.lean Modified src/computability/epsilon_NFA.lean Modified src/control/traversable/basic.lean Modified src/control/traversable/equiv.lean Modified src/data/buffer/parser/basic.lean Modified src/data/equiv/set.lean Modified src/data/finset/lattice.lean Modified src/data/finset/noncomm_prod.lean Modified src/data/list/zip.lean Modified src/data/matrix/pequiv.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/data/real/ennreal.lean Modified src/data/set/lattice.lean Modified src/group_theory/order_of_element.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/measure/content.lean Modified src/number_theory/padics/padic_norm.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/teichmuller.lean Modified src/ring_theory/witt_vector/verschiebung.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/pgame.lean Modified src/tactic/congr.lean Modified src/tactic/core.lean Modified src/tactic/lean_core_docs.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/valued_field.lean Modified src/topology/metric_space/basic.lean Modified src/topology/sheaves/sheaf_of_functions.lean Modified src/topology/urysohns_lemma.lean 2021-10-08 21:06:41 70a9540 refactor(group_theory/monoid_localization) remove old_structure_cmd (#9621) ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean 2021-10-08 20:24:14 c37e3e7 refactor(field_theory/intermediate_field): remove old_structure_cmd (#9620) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + def intermediate_field.to_subfield +/- structure intermediate_field 2021-10-08 20:24:12 b39feab refactor(algebra/lie): reduce use of old_structure_cmd (#9616) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + def lie_equiv.to_linear_equiv - theorem lie_hom.coe_linear_mk + def lie_hom.simps.apply Modified src/algebra/lie/semisimple.lean Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean 2021-10-08 17:52:23 91ee8f1 chore(data/equiv/ring): add big operator lemmas for ring equivs (#9628) This PR adds lemmas involving big operators (such as `map_sum`, `map_prod`, etc) for `ring_equiv`s. ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.map_list_prod + theorem ring_equiv.map_list_sum + theorem ring_equiv.map_multiset_prod + theorem ring_equiv.map_multiset_sum + theorem ring_equiv.map_prod + theorem ring_equiv.map_sum 2021-10-08 16:13:52 57cd1e9 feat(analysis/normed_space/exponential): remove char_p assumption (#9618) Remove the `char_p` assumption from `exp_series_eq_exp_series_of_field_extension` as suggested by @urkud here : https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Undergraduate.20math.20list/near/256679511 ESTIMATED CHANGES Modified src/analysis/normed_space/exponential.lean 2021-10-08 14:22:17 5fd3664 feat(algebra/graded_monoid): Split out graded monoids from graded rings (#9586) This cleans up the `direct_sum.gmonoid` typeclass to not contain a bundled morphism, which allows it to be used to describe graded monoids too, via the alias for `sigma` `graded_monoid`. Essentially, this: * Renames: * `direct_sum.ghas_one` to `graded_monoid.has_one` * `direct_sum.ghas_mul` to `direct_sum.gnon_unital_non_assoc_semiring` * `direct_sum.gmonoid` to `direct_sum.gsemiring` * `direct_sum.gcomm_monoid` to `direct_sum.gcomm_semiring` * Introduces new typeclasses which represent what the previous names should have been: * `graded_monoid.ghas_mul` * `graded_monoid.gmonoid` * `graded_monoid.gcomm_monoid` This doesn't do as much deduplication as I'd like, but it at least manages some. There's not much in the way of new definitions here either, and most of the names are just copied from the graded ring case. ESTIMATED CHANGES Modified src/algebra/direct_sum/algebra.lean Modified src/algebra/direct_sum/ring.lean - def direct_sum.gcomm_monoid.of_add_subgroups - def direct_sum.gcomm_monoid.of_add_submonoids - def direct_sum.gcomm_monoid.of_submodules + def direct_sum.gcomm_semiring.of_add_subgroups + def direct_sum.gcomm_semiring.of_add_submonoids + def direct_sum.gcomm_semiring.of_submodules - def direct_sum.ghas_mul.of_add_subgroups - theorem direct_sum.ghas_mul.of_add_subgroups_mul - def direct_sum.ghas_mul.of_add_submonoids - theorem direct_sum.ghas_mul.of_add_submonoids_mul - def direct_sum.ghas_mul.of_submodules - theorem direct_sum.ghas_mul.of_submodules_mul - def direct_sum.ghas_mul.to_sigma_has_mul - def direct_sum.ghas_one.of_add_subgroups - def direct_sum.ghas_one.of_add_submonoids - def direct_sum.ghas_one.of_submodules - def direct_sum.ghas_one.to_sigma_has_one - def direct_sum.gmonoid.of_add_subgroups - def direct_sum.gmonoid.of_add_submonoids - def direct_sum.gmonoid.of_submodules + def direct_sum.gmul_hom - theorem direct_sum.grade_zero.smul_eq_mul + def direct_sum.gsemiring.of_add_subgroups + def direct_sum.gsemiring.of_add_submonoids + def direct_sum.gsemiring.of_submodules - theorem semiring.direct_sum_mul Added src/algebra/graded_monoid.lean + def graded_monoid.gcomm_monoid.of_subobjects + def graded_monoid.ghas_mul.of_subobjects + def graded_monoid.ghas_one.of_subobjects + def graded_monoid.gmonoid.of_subobjects + theorem graded_monoid.grade_zero.smul_eq_mul + def graded_monoid.mk + theorem graded_monoid.mk_mul_mk + def graded_monoid.mk_zero_monoid_hom + theorem graded_monoid.mk_zero_smul + def graded_monoid Modified src/algebra/monoid_algebra/grading.lean Modified src/algebra/monoid_algebra/to_direct_sum.lean Modified src/ring_theory/polynomial/homogeneous.lean 2021-10-08 14:22:16 745cbfc feat(data/polynomial): %ₘ as a linear map (#9532) This PR bundles `(%ₘ) = polynomial.mod_by_monic` into a linear map. In a follow-up PR, I'll show this map descends to a linear map `adjoin_root q → polynomial R`, thereby (computably) assigning coefficients to each element in `adjoin_root q`. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.add_mod_by_monic + theorem polynomial.mod_by_monic_eq_of_dvd_sub + def polynomial.mod_by_monic_hom + theorem polynomial.smul_mod_by_monic Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.ker_mod_by_monic_hom + theorem polynomial.mem_ker_mod_by_monic 2021-10-08 12:12:57 99c3e22 refactor(geometry/manifold): remove old_structure_cmd (#9617) ESTIMATED CHANGES Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/algebra/structures.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/topology/algebra/open_subgroup.lean 2021-10-08 12:12:56 c107549 refactor(ring_theory/valuation): remove unnecessary old_structure_cmd (#9615) ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean Modified src/topology/algebra/valued_field.lean 2021-10-08 12:12:55 7bdd10e refactor(order/category): remove old_structure_cmd (#9614) ESTIMATED CHANGES Modified src/order/category/NonemptyFinLinOrd.lean 2021-10-08 12:12:54 af09d3f refactor(algebra/absolute_value): remove unnecessary old_structure_cmd (#9613) ESTIMATED CHANGES Modified src/algebra/order/absolute_value.lean Modified src/data/polynomial/degree/card_pow_degree.lean 2021-10-08 12:12:52 25a45ab refactor(order/omega_complete_partial_order): remove old_structure_cmd (#9612) Removing a use of `old_structure_cmd`. ESTIMATED CHANGES Modified src/order/category/omega_complete_partial_order.lean Modified src/order/omega_complete_partial_order.lean + def omega_complete_partial_order.continuous_hom.simps.apply 2021-10-08 12:12:51 cea97d9 feat(*): add not_mem_of_not_mem_closure for anything with subset_closure (#9595) This is a goal I would expect library search to finish if I have something not in a closure and I want it not in the base set. ESTIMATED CHANGES Modified src/field_theory/subfield.lean + theorem subfield.not_mem_of_not_mem_closure Modified src/group_theory/subgroup/basic.lean + theorem subgroup.not_mem_of_not_mem_closure Modified src/group_theory/submonoid/basic.lean + theorem submonoid.not_mem_of_not_mem_closure Modified src/model_theory/basic.lean + theorem first_order.language.substructure.not_mem_of_not_mem_closure Modified src/order/closure.lean + theorem lower_adjoint.not_mem_of_not_mem_closure Modified src/ring_theory/subring.lean + theorem subring.not_mem_of_not_mem_closure Modified src/ring_theory/subsemiring.lean + theorem subsemiring.not_mem_of_not_mem_closure Modified src/topology/basic.lean + theorem not_mem_of_not_mem_closure 2021-10-08 10:04:44 6c9eee4 refactor(data/finsupp/basic): remove sub lemmas (#9603) * Remove the finsupp sub lemmas that are special cases of lemmas in `algebra/order/sub`, namely: * `finsupp.nat_zero_sub` * `finsupp.nat_sub_self` * `finsupp.nat_add_sub_of_le` * `finsupp.nat_sub_add_cancel` * `finsupp.nat_add_sub_cancel` * `finsupp.nat_add_sub_cancel_left` * `finsupp.nat_add_sub_assoc` * Rename the remaining lemmas to use `tsub`: * `finsupp.coe_nat_sub` → `finsupp.coe_tsub` * `finsupp.nat_sub_apply` → `finsupp.tsub_apply` Lemmas in `algebra/order/sub` will soon also use `tsub` (see [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mul_lt_mul'''')) ESTIMATED CHANGES Modified src/data/finsupp/antidiagonal.lean Modified src/data/finsupp/basic.lean - theorem finsupp.coe_nat_sub + theorem finsupp.coe_tsub - theorem finsupp.nat_add_sub_assoc - theorem finsupp.nat_add_sub_cancel - theorem finsupp.nat_add_sub_cancel_left - theorem finsupp.nat_add_sub_of_le - theorem finsupp.nat_sub_add_cancel - theorem finsupp.nat_sub_apply - theorem finsupp.nat_sub_self - theorem finsupp.nat_zero_sub - theorem finsupp.single_nat_sub + theorem finsupp.single_tsub + theorem finsupp.tsub_apply Modified src/data/mv_polynomial/basic.lean Modified src/ring_theory/power_series/basic.lean 2021-10-08 10:04:43 34145b7 feat(group_theory/subgroup/basic): a new to_additive lemma, and remove a by hand proof (#9594) I needed `add_subgroup.smul_mem` which didn't seem to exist, and noticed that the `add_subgroup.gsmul_mem` version is proved by hand while to_additive generates it fine (now?) ESTIMATED CHANGES Modified src/group_theory/subgroup/basic.lean - theorem add_subgroup.gsmul_mem 2021-10-08 10:04:41 d5146f4 feat(ring_theory): `adjoin_root g ≃ S` if `S` has a power basis with the right minpoly (#9529) This is basically `power_basis.equiv'` with slightly different hypotheses, specialised to `adjoin_root`. It guarantees that even over non-fields, a monogenic extension of `R` can be given by the polynomials over `R` modulo the relevant minimal polynomial. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean Modified src/field_theory/normal.lean Modified src/ring_theory/adjoin_root.lean + def adjoin_root.equiv' + theorem adjoin_root.equiv'_symm_to_alg_hom + theorem adjoin_root.equiv'_to_alg_hom + theorem adjoin_root.lift_hom_mk + theorem adjoin_root.lift_hom_of + theorem adjoin_root.lift_hom_root +/- theorem adjoin_root.lift_mk 2021-10-08 10:04:40 82e2b98 feat(ring_theory): generalize `power_basis.equiv` (#9528) `power_basis.equiv'` is an alternate formulation of `power_basis.equiv` that is somewhat more general when not over a field: instead of requiring the minimal polynomials are equal, we only require the generators are the roots of each other's minimal polynomials. This is not quite enough to show `adjoin_root (minpoly R (pb : power_basis R S).gen)` is isomorphic to `S`, since `minpoly R (adjoin_root.root g)` is not guaranteed to have the same exact roots as `g` itself. So in a follow-up PR I will strengthen `power_basis.equiv'` to `adjoin_root.equiv'` that requires the correct hypothesis. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean Modified src/ring_theory/power_basis.lean - theorem power_basis.equiv_aeval - theorem power_basis.equiv_gen - theorem power_basis.equiv_map + theorem power_basis.equiv_of_minpoly_aeval + theorem power_basis.equiv_of_minpoly_gen + theorem power_basis.equiv_of_minpoly_map + theorem power_basis.equiv_of_minpoly_symm + theorem power_basis.equiv_of_root_aeval + theorem power_basis.equiv_of_root_gen + theorem power_basis.equiv_of_root_map + theorem power_basis.equiv_of_root_symm - theorem power_basis.equiv_symm 2021-10-08 10:04:39 179a495 feat(algebra/star/algebra): generalize to modules (#9484) This means there is now a `star_module ℂ (ι → ℂ)` instance available. This adds `star_add_monoid`, and renames `star_algebra` to `star_module` with significantly relaxed typeclass arguments. This also uses `export` to cut away some unnecessary definitions, and adds the missing `pi.star_def` to match `pi.add_def` etc. ESTIMATED CHANGES Modified src/algebra/ring_quot.lean Deleted src/algebra/star/algebra.lean - theorem star_smul Modified src/algebra/star/basic.lean - def star - theorem star_add +/- def star_add_equiv +/- theorem star_id_of_comm - theorem star_mul +/- theorem star_zero Modified src/algebra/star/chsh.lean Modified src/algebra/star/pi.lean + theorem pi.star_def 2021-10-08 07:33:10 9ecdd38 chore(algebra/order/sub): generalize 2 lemmas (#9611) * generalize `lt_sub_iff_left` and `lt_sub_iff_right`; * use general lemmas in `data.real.ennreal`. ESTIMATED CHANGES Modified src/algebra/order/sub.lean + theorem lt_sub_comm Modified src/data/real/ennreal.lean +/- theorem ennreal.lt_sub_comm +/- theorem ennreal.lt_sub_iff_add_lt 2021-10-08 07:33:09 639a7ef feat(algebra/order/ring): variants of mul_sub' (#9604) Add some variants of `mul_sub'` and `sub_mul'` and use them in `ennreal`. (Also sneaking in a tiny stylistic change in `topology/ennreal`.) ESTIMATED CHANGES Modified src/algebra/order/ring.lean +/- theorem mul_sub' + theorem mul_sub_ge +/- theorem sub_mul' + theorem sub_mul_ge Modified src/data/real/ennreal.lean - theorem ennreal.sub_mul_ge Modified src/topology/instances/ennreal.lean 2021-10-08 07:33:08 83a07ce feat(data/nat/log): add antitonicity lemmas for first argument (#9597) `log` and `clog` are only antitone on bases >1, so we include this as an assumption in `log_le_log_of_left_ge` (resp. `clog_le_...`) and as a domain restriction in `log_left_gt_one_anti` (resp. `clog_left_...`). ESTIMATED CHANGES Modified src/data/nat/log.lean + theorem nat.clog_antitone_left + theorem nat.clog_le_clog_of_left_ge - theorem nat.clog_mono + theorem nat.clog_monotone + theorem nat.log_antitone_left + theorem nat.log_le_log_of_left_ge - theorem nat.log_mono + theorem nat.log_monotone 2021-10-08 07:33:06 41dd4da feat(data/multiset/interval): Intervals as `multiset`s (#9588) This provides API for `multiset.Ixx` (except `multiset.Ico`). ESTIMATED CHANGES Modified src/data/multiset/erase_dup.lean Added src/data/multiset/interval.lean + theorem multiset.Icc_eq_zero_iff + theorem multiset.Icc_eq_zero_of_lt + theorem multiset.Icc_self + theorem multiset.Ioc_eq_zero_iff + theorem multiset.Ioc_eq_zero_of_le + theorem multiset.Ioc_self + theorem multiset.Ioo_eq_zero + theorem multiset.Ioo_eq_zero_iff + theorem multiset.Ioo_eq_zero_of_le + theorem multiset.Ioo_self + theorem multiset.map_add_const_Icc + theorem multiset.map_add_const_Ioc + theorem multiset.map_add_const_Ioo 2021-10-08 07:33:05 c3768cc refactor(data/multiset/basic): remove sub lemmas (#9578) * Remove the multiset sub lemmas that are special cases of lemmas in `algebra/order/sub` * [This](https://github.com/leanprover-community/mathlib/blob/14c3324143beef6e538f63da9c48d45f4a949604/src/data/multiset/basic.lean#L1513-L1538) gives the list of renamings. * Use `derive` in `pnat.factors`. ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/data/finset/basic.lean Modified src/data/list/perm.lean Modified src/data/multiset/antidiagonal.lean Modified src/data/multiset/basic.lean - theorem multiset.add_sub_cancel - theorem multiset.add_sub_cancel_left - theorem multiset.add_sub_of_le +/- theorem multiset.eq_union_left - theorem multiset.le_sub_add +/- theorem multiset.le_union_left - theorem multiset.sub_add' - theorem multiset.sub_add_cancel - theorem multiset.sub_le_self - theorem multiset.sub_le_sub_left - theorem multiset.sub_le_sub_right Modified src/data/multiset/nodup.lean Modified src/data/pnat/factors.lean - theorem prime_multiset.add_sub_of_le Modified src/group_theory/perm/cycle_type.lean 2021-10-08 07:33:03 c400677 feat(algebra/module/basic): `module rat E` is a subsingleton (#9570) * allow different (semi)rings in `add_monoid_hom.map_int_cast_smul` and `add_monoid_hom.map_nat_cast_smul`; * add `add_monoid_hom.map_inv_int_cast_smul` and `add_monoid_hom.map_inv_nat_cast_smul`; * allow different division rings in `add_monoid_hom.map_rat_cast_smul`, drop `char_zero` assumption; * prove `subsingleton (module rat M)`; * add a few convenience lemmas. ESTIMATED CHANGES Modified src/algebra/module/basic.lean +/- theorem add_monoid_hom.map_int_cast_smul + theorem add_monoid_hom.map_inv_int_cast_smul + theorem add_monoid_hom.map_inv_nat_cast_smul +/- theorem add_monoid_hom.map_nat_cast_smul +/- theorem add_monoid_hom.map_rat_cast_smul + theorem inv_int_cast_smul_eq + theorem inv_nat_cast_smul_eq + theorem rat_cast_smul_eq + theorem subsingleton_rat_module Modified src/data/rat/cast.lean + theorem rat.cast_def + theorem rat.cast_inv_int + theorem rat.cast_inv_nat Modified src/number_theory/padics/padic_numbers.lean Modified src/topology/instances/real_vector_space.lean 2021-10-08 07:33:02 eb3595e move(order/*): move from `algebra.order.` the files that aren't about algebra (#9562) `algebra.order.basic` and `algebra.order.functions` never mention `+`, `-` or `*`. Thus they belong under `order`. ESTIMATED CHANGES Modified archive/arithcc.lean Modified src/algebra/covariant_and_contravariant.lean Deleted src/algebra/order/basic.lean - theorem cmp_compares - theorem cmp_eq_cmp_symm - theorem cmp_eq_eq_iff - theorem cmp_eq_gt_iff - theorem cmp_eq_lt_iff - def cmp_le - theorem cmp_le_eq_cmp - theorem cmp_le_swap - theorem cmp_self_eq_eq - theorem cmp_swap - theorem eq.not_gt - theorem eq.not_lt - theorem eq.trans_le - theorem eq_iff_le_not_lt - theorem eq_of_forall_ge_iff - theorem eq_of_forall_le_iff - theorem eq_or_lt_of_le - theorem exists_ge_of_linear - theorem forall_lt_iff_le' - theorem forall_lt_iff_le - theorem ge_iff_le - theorem ge_of_eq - theorem gt_iff_lt - theorem has_le.le.le_iff_eq - theorem has_le.le.le_or_le - theorem has_le.le.le_or_lt - theorem has_le.le.lt_iff_ne - theorem has_le.le.lt_or_le - theorem has_le.le.trans_eq - theorem has_lt.lt.lt_or_lt - theorem has_lt.lt.ne' - theorem le_iff_eq_or_lt - theorem le_iff_le_iff_lt_iff_lt - theorem le_iff_le_of_cmp_eq_cmp - theorem le_imp_le_iff_lt_imp_lt - theorem le_implies_le_of_le_of_le - theorem le_of_forall_le' - theorem le_of_forall_le - theorem le_of_forall_lt' - theorem le_of_forall_lt - theorem le_rfl - def linear_order_of_compares - theorem lt_iff_le_and_ne - theorem lt_iff_lt_of_cmp_eq_cmp - theorem lt_iff_lt_of_le_iff_le' - theorem lt_iff_lt_of_le_iff_le - theorem lt_iff_not_ge' - theorem lt_imp_lt_of_le_imp_le - theorem lt_of_not_ge' - theorem ne.le_iff_lt - theorem ne.lt_or_lt - theorem ne_iff_lt_iff_le - theorem not_le_of_lt - theorem not_lt_iff_eq_or_lt - theorem not_lt_of_le - theorem ordering.compares.eq_eq - theorem ordering.compares.eq_gt - theorem ordering.compares.eq_lt - theorem ordering.compares.inj - theorem ordering.compares.le_antisymm - theorem ordering.compares.le_total - theorem ordering.compares.ne_gt - theorem ordering.compares.ne_lt - def ordering.compares - theorem ordering.compares_iff_of_compares_impl - theorem ordering.compares_swap - theorem ordering.or_else_eq_lt - theorem ordering.swap_eq_iff_eq_swap - theorem ordering.swap_or_else Modified src/algebra/order/monoid.lean Modified src/computability/turing_machine.lean Modified src/data/int/basic.lean Modified src/order/basic.lean + theorem eq.not_gt + theorem eq.not_lt + theorem eq.trans_le + theorem eq_iff_le_not_lt + theorem eq_of_forall_ge_iff + theorem eq_of_forall_le_iff + theorem eq_or_lt_of_le + theorem exists_ge_of_linear + theorem forall_lt_iff_le' + theorem forall_lt_iff_le + theorem ge_iff_le + theorem ge_of_eq + theorem gt_iff_lt + theorem has_le.le.le_iff_eq + theorem has_le.le.le_or_le + theorem has_le.le.le_or_lt + theorem has_le.le.lt_iff_ne + theorem has_le.le.lt_or_le + theorem has_le.le.trans_eq + theorem has_lt.lt.lt_or_lt + theorem has_lt.lt.ne' + theorem le_iff_eq_or_lt + theorem le_iff_le_iff_lt_iff_lt + theorem le_imp_le_iff_lt_imp_lt + theorem le_implies_le_of_le_of_le + theorem le_of_forall_le' + theorem le_of_forall_le + theorem le_of_forall_lt' + theorem le_of_forall_lt + theorem le_rfl + theorem lt_iff_le_and_ne + theorem lt_iff_lt_of_le_iff_le' + theorem lt_iff_lt_of_le_iff_le + theorem lt_iff_not_ge' + theorem lt_imp_lt_of_le_imp_le + theorem lt_of_not_ge' +/- theorem lt_self_iff_false + theorem ne.le_iff_lt + theorem ne.lt_or_lt + theorem ne_iff_lt_iff_le + theorem not_le_of_lt + theorem not_lt_iff_eq_or_lt + theorem not_lt_of_le - theorem order_dual.cmp_le_flip - theorem order_dual.dual_compares Added src/order/compare.lean + theorem cmp_compares + theorem cmp_eq_cmp_symm + theorem cmp_eq_eq_iff + theorem cmp_eq_gt_iff + theorem cmp_eq_lt_iff + def cmp_le + theorem cmp_le_eq_cmp + theorem cmp_le_swap + theorem cmp_self_eq_eq + theorem cmp_swap + theorem le_iff_le_of_cmp_eq_cmp + def linear_order_of_compares + theorem lt_iff_lt_of_cmp_eq_cmp + theorem order_dual.cmp_le_flip + theorem order_dual.dual_compares + theorem ordering.compares.eq_eq + theorem ordering.compares.eq_gt + theorem ordering.compares.eq_lt + theorem ordering.compares.inj + theorem ordering.compares.le_antisymm + theorem ordering.compares.le_total + theorem ordering.compares.ne_gt + theorem ordering.compares.ne_lt + def ordering.compares + theorem ordering.compares_iff_of_compares_impl + theorem ordering.compares_swap + theorem ordering.or_else_eq_lt + theorem ordering.swap_eq_iff_eq_swap + theorem ordering.swap_or_else Renamed src/algebra/order/functions.lean to src/order/min_max.lean Modified src/order/monotone.lean Modified src/order/pilex.lean Modified src/tactic/push_neg.lean 2021-10-08 07:33:00 8aa1893 feat(group_theory/subgroup/basic): Analog of `mul_aut.conj` for normal subgroups. (#9552) Analog of `mul_aut.conj` for normal subgroups (pretty much just copying the code from `data/equiv/mul_add_aut.lean`). ESTIMATED CHANGES Modified src/group_theory/group_action/conj_act.lean + theorem conj_act.subgroup.coe_conj_smul + def mul_aut.conj_normal + theorem mul_aut.conj_normal_apply + theorem mul_aut.conj_normal_inv_apply + theorem mul_aut.conj_normal_symm_apply 2021-10-08 07:32:59 1390b44 feat(analysis/convex/function): API for strict convex functions (#9437) This provides all the basic API for `strict_convex_on` and `strict_concave_on`. ESTIMATED CHANGES Modified src/analysis/convex/function.lean - theorem concave_on_iff_forall_pos_ne + theorem concave_on_iff_pairwise_on_pos - theorem convex_on_iff_forall_pos_ne + theorem convex_on_iff_pairwise_on_pos + theorem linear_order.strict_concave_on_of_lt + theorem linear_order.strict_convex_on_of_lt + theorem neg_strict_concave_on_iff + theorem neg_strict_convex_on_iff + theorem strict_concave_on.add + theorem strict_concave_on.concave_on + theorem strict_concave_on.convex_gt + theorem strict_concave_on.inf + theorem strict_concave_on.left_lt_of_lt_right' + theorem strict_concave_on.left_lt_of_lt_right + theorem strict_concave_on.lt_on_open_segment' + theorem strict_concave_on.lt_on_open_segment + theorem strict_concave_on.lt_right_of_left_lt' + theorem strict_concave_on.lt_right_of_left_lt + theorem strict_concave_on.subset + theorem strict_concave_on.translate_left + theorem strict_concave_on.translate_right + theorem strict_concave_on_iff_div + theorem strict_convex_on.add + theorem strict_convex_on.convex_lt + theorem strict_convex_on.convex_on + theorem strict_convex_on.lt_left_of_right_lt' + theorem strict_convex_on.lt_left_of_right_lt + theorem strict_convex_on.lt_on_open_segment' + theorem strict_convex_on.lt_on_open_segment + theorem strict_convex_on.lt_right_of_left_lt' + theorem strict_convex_on.lt_right_of_left_lt + theorem strict_convex_on.subset + theorem strict_convex_on.sup + theorem strict_convex_on.translate_left + theorem strict_convex_on.translate_right + theorem strict_convex_on_iff_div Modified src/analysis/convex/slope.lean + theorem strict_concave_on.slope_anti_adjacent + theorem strict_concave_on_iff_slope_strict_anti_adjacent + theorem strict_concave_on_of_slope_strict_anti_adjacent + theorem strict_convex_on.slope_strict_mono_adjacent + theorem strict_convex_on_iff_slope_strict_mono_adjacent + theorem strict_convex_on_of_slope_strict_mono_adjacent 2021-10-08 07:32:58 a0504eb refactor(data/*/interval): generalize `finset.Ico` to locally finite orders (#7987) `finset.Ico` currently goes `ℕ → ℕ → finset ℕ`. This generalizes it to `α → α → finset α` where `locally_finite_order α`. This also ports all the existing `finset.Ico` lemmas to the new API, which involves renaming and moving them to `data.finset.interval` or `data.nat.interval` depending on whether I could generalize them away from `ℕ` or not. ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean Modified src/algebra/geom_sum.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/inverse.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/exp_log.lean Modified src/data/fin/interval.lean + theorem fin.Ico_eq_finset_subtype + theorem fin.card_Ico + theorem fin.card_fintype_Ico + theorem fin.map_subtype_embedding_Ico Modified src/data/finset/default.lean Modified src/data/finset/interval.lean + theorem finset.Ico_diff_Ico_left + theorem finset.Ico_diff_Ico_right + theorem finset.Ico_disjoint_Ico_consecutive + theorem finset.Ico_eq_empty_iff + theorem finset.Ico_eq_empty_of_le + theorem finset.Ico_filter_le + theorem finset.Ico_filter_le_left + theorem finset.Ico_filter_le_of_le_left + theorem finset.Ico_filter_le_of_left_le + theorem finset.Ico_filter_le_of_right_le + theorem finset.Ico_filter_lt + theorem finset.Ico_filter_lt_of_le_left + theorem finset.Ico_filter_lt_of_le_right + theorem finset.Ico_filter_lt_of_right_le + theorem finset.Ico_insert_right + theorem finset.Ico_inter_Ico + theorem finset.Ico_inter_Ico_consecutive + theorem finset.Ico_self + theorem finset.Ico_subset_Ico_iff + theorem finset.Ico_union_Ico' + theorem finset.Ico_union_Ico + theorem finset.Ico_union_Ico_eq_Ico + theorem finset.Ioo_insert_left + theorem finset.image_add_const_Ico + theorem finset.nonempty_Ico + theorem finset.right_not_mem_Ico Deleted src/data/finset/intervals.lean - theorem finset.Ico.card - theorem finset.Ico.coe_eq_Ico - theorem finset.Ico.diff_left - theorem finset.Ico.diff_right - theorem finset.Ico.disjoint_consecutive - theorem finset.Ico.eq_empty_iff - theorem finset.Ico.eq_empty_of_le - theorem finset.Ico.filter_Ico_bot - theorem finset.Ico.filter_le - theorem finset.Ico.filter_le_of_le - theorem finset.Ico.filter_le_of_le_bot - theorem finset.Ico.filter_le_of_top_le - theorem finset.Ico.filter_lt - theorem finset.Ico.filter_lt_of_ge - theorem finset.Ico.filter_lt_of_le_bot - theorem finset.Ico.filter_lt_of_top_le - theorem finset.Ico.image_add - theorem finset.Ico.image_const_sub - theorem finset.Ico.image_sub - theorem finset.Ico.insert_succ_bot - theorem finset.Ico.inter - theorem finset.Ico.inter_consecutive - theorem finset.Ico.mem - theorem finset.Ico.not_mem_top - theorem finset.Ico.pred_singleton - theorem finset.Ico.self_eq_empty - theorem finset.Ico.subset_iff - theorem finset.Ico.succ_singleton - theorem finset.Ico.succ_top' - theorem finset.Ico.succ_top - theorem finset.Ico.to_finset - theorem finset.Ico.union' - theorem finset.Ico.union - theorem finset.Ico.union_consecutive - theorem finset.Ico.val - theorem finset.Ico.zero_bot - def finset.Ico - theorem finset.Ico_ℤ.card - theorem finset.Ico_ℤ.mem - def finset.Ico_ℤ - theorem finset.range_eq_Ico - theorem finset.range_image_pred_top_sub Deleted src/data/fintype/intervals.lean - theorem set.Icc_ℕ_card - theorem set.Icc_ℕ_finite - theorem set.Icc_ℤ_card - theorem set.Icc_ℤ_finite - theorem set.Ico_pnat_card - theorem set.Ico_ℕ_card - theorem set.Ico_ℕ_finite - theorem set.Ico_ℤ_card - theorem set.Ico_ℤ_finite - theorem set.Ioc_ℕ_card - theorem set.Ioc_ℕ_finite - theorem set.Ioc_ℤ_card - theorem set.Ioc_ℤ_finite - theorem set.Ioo_ℕ_card - theorem set.Ioo_ℕ_finite - theorem set.Ioo_ℤ_card - theorem set.Ioo_ℤ_finite Modified src/data/int/interval.lean + theorem int.Ico_eq_finset_map + theorem int.card_Ico + theorem int.card_Ico_of_le + theorem int.card_fintype_Ico + theorem int.card_fintype_Ico_of_le Modified src/data/nat/interval.lean + theorem finset.range_eq_Ico + theorem nat.Icc_pred_right + theorem nat.Ico_eq_range' + theorem nat.Ico_image_const_sub_eq_Ico + theorem nat.Ico_insert_succ_left + theorem nat.Ico_pred_singleton + theorem nat.Ico_succ_left + theorem nat.Ico_succ_right + theorem nat.Ico_succ_right_eq_insert_Ico + theorem nat.Ico_succ_singleton + theorem nat.Ico_succ_succ + theorem nat.Ico_zero_eq_range + theorem nat.Iio_eq_range + theorem nat.card_Ico + theorem nat.card_fintype_Ico + theorem nat.image_sub_const_Ico + theorem nat.range_image_pred_top_sub Modified src/data/nat/multiplicity.lean Modified src/data/nat/totient.lean Modified src/data/pnat/interval.lean + theorem pnat.Ico_eq_finset_subtype + theorem pnat.card_Ico + theorem pnat.card_fintype_Ico + theorem pnat.map_subtype_embedding_Ico Deleted src/data/pnat/intervals.lean - theorem pnat.Ico.card - theorem pnat.Ico.mem - def pnat.Ico Modified src/data/polynomial/inductions.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/number_theory/ADE_inequality.lean Modified src/number_theory/divisors.lean Modified src/number_theory/primorial.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/order/locally_finite.lean + def finset.Ico + theorem finset.Ico_subset_Ico + def finset.Iio + theorem finset.Iio_eq_Ico + theorem finset.coe_Ico + theorem finset.coe_Iio + theorem finset.map_subtype_embedding_Ico + theorem finset.mem_Ico + theorem finset.mem_Iio + theorem finset.subtype_Ico_eq + def multiset.Iio + theorem multiset.mem_Iio + theorem set.finite_Ico + theorem set.finite_Iio Modified src/probability_theory/independence.lean Modified src/ring_theory/henselian.lean Modified src/tactic/interval_cases.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified test/fin_cases.lean 2021-10-08 06:08:46 ba2454e feat(ring_theory/coprime): two lemmas prereq for #8611 (#9456) Two variants of the fact that `¬ is_coprime 0 0`. ESTIMATED CHANGES Modified src/ring_theory/coprime/basic.lean + theorem is_coprime.ne_zero + theorem is_coprime.sq_add_sq_ne_zero 2021-10-08 02:40:18 235bfd7 chore(scripts): update nolints.txt (#9610) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-10-08 01:32:09 9ea4568 fix(topology/path_connected): add `continuity` to `path.continuous_extend` (#9605) ESTIMATED CHANGES Modified src/topology/path_connected.lean 2021-10-08 00:30:16 fa3b622 refactor(analysis/normed_space/linear_isometry): semilinear isometries (#9551) Generalize the theory of linear isometries to the semilinear setting. ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean +/- theorem linear_isometry.coe_comp +/- theorem linear_isometry.coe_fn_injective +/- def linear_isometry.comp +/- theorem linear_isometry.comp_assoc +/- theorem linear_isometry.ext +/- theorem linear_isometry.id_comp +/- theorem linear_isometry.map_eq_iff +/- theorem linear_isometry.map_ne +/- theorem linear_isometry.map_smul + theorem linear_isometry.map_smulₛₗ +/- def linear_isometry.to_continuous_linear_map +/- theorem linear_isometry.to_linear_map_injective +/- structure linear_isometry +/- theorem linear_isometry_equiv.apply_symm_apply +/- theorem linear_isometry_equiv.coe_coe'' +/- theorem linear_isometry_equiv.coe_coe' +/- theorem linear_isometry_equiv.coe_coe +/- theorem linear_isometry_equiv.coe_mk +/- theorem linear_isometry_equiv.coe_symm_trans +/- theorem linear_isometry_equiv.coe_to_linear_equiv +/- theorem linear_isometry_equiv.coe_trans +/- theorem linear_isometry_equiv.ext +/- theorem linear_isometry_equiv.map_smul + theorem linear_isometry_equiv.map_smulₛₗ +/- def linear_isometry_equiv.of_bounds +/- theorem linear_isometry_equiv.range_eq_univ +/- def linear_isometry_equiv.symm +/- theorem linear_isometry_equiv.symm_trans +/- def linear_isometry_equiv.to_continuous_linear_equiv +/- def linear_isometry_equiv.to_homeomorph +/- def linear_isometry_equiv.to_isometric +/- theorem linear_isometry_equiv.to_linear_equiv_injective +/- def linear_isometry_equiv.to_linear_isometry +/- def linear_isometry_equiv.trans +/- theorem linear_isometry_equiv.trans_assoc +/- theorem linear_isometry_equiv.trans_refl +/- structure linear_isometry_equiv Modified src/analysis/normed_space/multilinear.lean 2021-10-07 21:23:16 9518ce1 feat(topology/algebra): valued fields (#9589) This is a modernized version of code from the perfectoid spaces project. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem group_with_zero.eq_zero_or_unit Modified src/ring_theory/valuation/basic.lean + def valuation.lt_add_subgroup Modified src/topology/algebra/uniform_group.lean + theorem topological_add_group.separated_iff_zero_closed + theorem topological_add_group.separated_of_zero_sep Added src/topology/algebra/valuation.lean + theorem valued.cauchy_iff + theorem valued.loc_const + theorem valued.mem_nhds + theorem valued.mem_nhds_zero + theorem valued.subgroups_basis Added src/topology/algebra/valued_field.lean + theorem valuation.inversion_estimate + theorem valued.continuous_extension + theorem valued.continuous_valuation + theorem valued.extension_extends Modified src/topology/basic.lean + theorem dense_range.mem_nhds 2021-10-07 19:09:56 ebccce9 feat(measure_theory/covering/besicovitch): the measurable Besicovitch covering theorem (#9576) The measurable Besicovitch theorem ensures that, in nice metric spaces, if at every point one considers a class of balls of arbitrarily small radii, called admissible balls, then one can cover almost all the space by a family of disjoint admissible balls. It is deduced from the topological Besicovitch theorem. ESTIMATED CHANGES Modified src/measure_theory/covering/besicovitch.lean + theorem besicovitch.exist_finset_disjoint_balls_large_measure + theorem besicovitch.exists_disjoint_closed_ball_covering + theorem besicovitch.exists_disjoint_closed_ball_covering_of_finite_measure 2021-10-07 15:09:34 8a60fd7 refactor(data/ennreal/basic): prove has_ordered_sub instance (#9582) * Give `has_sub` and `has_ordered_sub` instances on `with_top α`. * This gives a new subtraction on `ennreal`. The lemma `ennreal.sub_eq_Inf` proves that it is equal to the old value. * Simplify many proofs about `sub` on `ennreal` * Proofs that are instantiations of more general lemmas will be removed in a subsequent PR * Many lemmas that require `add_le_cancellable` in general are reformulated using `≠ ∞` * Lemmas are reordered, but no lemmas are renamed, removed, or have a different type. Some `@[simp]` tags are removed if a more general simp lemma applies. * Minor: generalize `preorder` to `has_le` in `has_ordered_sub` (not necessary for this PR, but useful in another (abandoned) branch). ESTIMATED CHANGES Modified src/algebra/order/monoid.lean + theorem with_top.add_coe_eq_top_iff + theorem with_top.coe_add_eq_top_iff Modified src/algebra/order/sub.lean + theorem with_top.coe_sub + theorem with_top.sub_top + theorem with_top.top_sub_coe Modified src/data/real/ennreal.lean + theorem ennreal.add_le_cancellable_iff_ne - theorem ennreal.add_sub_cancel_of_le +/- theorem ennreal.add_sub_self' +/- theorem ennreal.add_sub_self + theorem ennreal.cancel_coe + theorem ennreal.cancel_of_lt' + theorem ennreal.cancel_of_lt + theorem ennreal.cancel_of_ne +/- theorem ennreal.coe_sub - theorem ennreal.sub_add_cancel_of_le + theorem ennreal.sub_eq_Inf +/- theorem ennreal.sub_eq_of_add_eq + theorem ennreal.sub_eq_top_iff + theorem ennreal.sub_ne_top +/- theorem ennreal.sub_self +/- theorem ennreal.sub_top +/- theorem ennreal.sub_zero +/- theorem ennreal.top_sub_coe +/- theorem ennreal.zero_sub Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/instances/ennreal.lean 2021-10-07 13:09:23 bf76a1f feat(algebra/order/with_zero): add lt_of_mul_lt_mul_of_le₀ and mul_lt_mul_of_lt_of_le₀ (#9596) ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean + theorem lt_of_mul_lt_mul_of_le₀ + theorem mul_lt_mul_of_lt_of_le₀ 2021-10-07 11:57:08 18a42f3 feat(src/category_theory/*): Yoneda preserves limits. (#9580) Shows that `yoneda` and `coyoneda` preserves and reflects limits. ESTIMATED CHANGES Modified src/category_theory/limits/functor_category.lean + def category_theory.limits.preserves_colimit_of_evaluation + def category_theory.limits.preserves_colimits_of_evaluation + def category_theory.limits.preserves_colimits_of_shape_of_evaluation + def category_theory.limits.preserves_limit_of_evaluation + def category_theory.limits.preserves_limits_of_evaluation + def category_theory.limits.preserves_limits_of_shape_of_evaluation Modified src/category_theory/limits/yoneda.lean 2021-10-07 06:55:11 f874783 feat(data/multiset/erase_dup): Alias for `multiset.erase_dup_eq_self` (#9587) The new `multiset.nodup.erase_dup` allows dot notation. ESTIMATED CHANGES Modified src/algebra/squarefree.lean Modified src/data/finset/basic.lean Modified src/data/finset/pi.lean Modified src/data/multiset/erase_dup.lean Modified src/number_theory/arithmetic_function.lean 2021-10-07 06:55:10 cc46f31 feat(analysis/normed_space/add_torsor_bases): the interior of the convex hull of a finite affine basis is the set of points with strictly positive barycentric coordinates (#9583) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/convex/hull.lean + theorem convex_hull_univ Modified src/analysis/normed_space/add_torsor_bases.lean + theorem interior_convex_hull_aff_basis Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.eq_univ_of_subsingleton_span_eq_top 2021-10-07 06:14:33 a7784aa feat(category_theory/*): Yoneda extension is Kan (#9574) - Proved that `(F.elements)ᵒᵖ ≌ costructured_arrow yoneda F`. - Verified that the yoneda extension is indeed the left Kan extension along the yoneda embedding. ESTIMATED CHANGES Modified src/category_theory/elements.lean + def category_theory.category_of_elements.costructured_arrow_yoneda_equivalence + theorem category_theory.category_of_elements.costructured_arrow_yoneda_equivalence_naturality + def category_theory.category_of_elements.from_costructured_arrow + theorem category_theory.category_of_elements.from_costructured_arrow_obj_mk + theorem category_theory.category_of_elements.from_to_costructured_arrow_eq + def category_theory.category_of_elements.to_costructured_arrow + theorem category_theory.category_of_elements.to_from_costructured_arrow_eq Modified src/category_theory/limits/presheaf.lean + def category_theory.colimit_adj.extend_along_yoneda_iso_Kan + def category_theory.colimit_adj.extend_along_yoneda_iso_Kan_app + theorem category_theory.colimit_adj.extend_along_yoneda_map 2021-10-07 06:14:32 b9097f1 feat(analysis/asymptotics): Define superpolynomial decay of a function (#9440) Define superpolynomial decay of functions in terms of asymptotics.is_O. ESTIMATED CHANGES Added src/analysis/asymptotics/superpolynomial_decay.lean + theorem asymptotics.is_O.trans_superpolynomial_decay + theorem asymptotics.superpolynomial_decay.add + theorem asymptotics.superpolynomial_decay.algebra_map_mul + theorem asymptotics.superpolynomial_decay.algebra_map_pow_mul + theorem asymptotics.superpolynomial_decay.const_mul + theorem asymptotics.superpolynomial_decay.eventually_le + theorem asymptotics.superpolynomial_decay.eventually_mono + theorem asymptotics.superpolynomial_decay.mono + theorem asymptotics.superpolynomial_decay.mul + theorem asymptotics.superpolynomial_decay.mul_const + theorem asymptotics.superpolynomial_decay.mul_is_O + theorem asymptotics.superpolynomial_decay.mul_is_O_polynomial + theorem asymptotics.superpolynomial_decay.polynomial_mul + theorem asymptotics.superpolynomial_decay.tendsto_zero + def asymptotics.superpolynomial_decay + theorem asymptotics.superpolynomial_decay_const_iff + theorem asymptotics.superpolynomial_decay_const_mul_iff + theorem asymptotics.superpolynomial_decay_const_mul_iff_of_ne_zero + theorem asymptotics.superpolynomial_decay_iff_is_bounded_under + theorem asymptotics.superpolynomial_decay_iff_is_o + theorem asymptotics.superpolynomial_decay_iff_norm_tendsto_zero + theorem asymptotics.superpolynomial_decay_iff_tendsto_zero + theorem asymptotics.superpolynomial_decay_mul_const_iff + theorem asymptotics.superpolynomial_decay_mul_const_iff_of_ne_zero + theorem asymptotics.superpolynomial_decay_of_eventually_is_O + theorem asymptotics.superpolynomial_decay_of_is_O_fpow_le + theorem asymptotics.superpolynomial_decay_of_is_O_fpow_lt + theorem asymptotics.superpolynomial_decay_zero' + theorem asymptotics.superpolynomial_decay_zero 2021-10-07 04:15:17 0bc7c2d fix(algebra/group/{prod,pi}): fix non-defeq `has_scalar` diamonds (#9584) This fixes diamonds in the following instances for nat- and int- actions: * `has_scalar ℕ (α × β)` * `has_scalar ℤ (α × β)` * `has_scalar ℤ (Π a, β a)` The last one revealed a diamond caused by inconsistent use of `pi_instance_derive_field`: ```lean -- fails before this change example [Π a, group $ β a] : group.to_div_inv_monoid (Π a, β a) = pi.div_inv_monoid := rfl ``` ESTIMATED CHANGES Modified src/algebra/group/pi.lean Modified src/algebra/group/prod.lean Modified test/instance_diamonds.lean 2021-10-07 04:15:16 cb3c844 feat(category_theory/limits/*): Filtered colimits preserves finite limits (#9522) Restated `category_theory.limits.colimit_limit_to_limit_colimit_is_iso` in terms of limit preserving. ESTIMATED CHANGES Modified src/category_theory/limits/colimit_limit.lean +/- theorem category_theory.limits.ι_colimit_limit_to_limit_colimit_π Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/functor_category.lean + def category_theory.limits.colimit_iso_swap_comp_colim + def category_theory.limits.limit_iso_swap_comp_lim 2021-10-07 02:14:30 7a2696d feat(category_theory/limits/preserves/*): Show that whiskering left preserves limits. (#9581) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/functor_category.lean 2021-10-07 02:14:29 f37aeb0 refactor(algebra/gcd_monoid): drop nontriviality assumptions (#9568) ESTIMATED CHANGES Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/gcd_monoid/multiset.lean Modified src/algebra/group/units.lean Modified src/ring_theory/unique_factorization_domain.lean 2021-10-06 21:14:59 f63786b refactor(data/finsupp/basic): has_ordered_sub on finsupp (#9577) * Generalize `has_sub` and `canonically_ordered_add_monoid` instances for any finsupp with codomain a `canonically_ordered_add_monoid` & `has_ordered_sub`. * Provide `has_ordered_sub` instance in the same situation * Generalize lemmas about `nat` to this situation. * Prove some lemmas as special cases of `has_ordered_sub` lemmas. These will be removed in a subsequent PR. * Simplify some lemmas about `α →₀ ℕ` using `has_ordered_sub` lemmas. * Prove `nat.one_le_iff_ne_zero` (it's the second time I want to use it this week) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_nat_sub +/- theorem finsupp.nat_add_sub_assoc +/- theorem finsupp.nat_add_sub_cancel +/- theorem finsupp.nat_add_sub_cancel_left +/- theorem finsupp.nat_add_sub_of_le +/- theorem finsupp.nat_sub_add_cancel +/- theorem finsupp.nat_sub_apply +/- theorem finsupp.nat_sub_self +/- theorem finsupp.nat_zero_sub +/- theorem finsupp.single_nat_sub Modified src/data/nat/basic.lean + theorem nat.one_le_iff_ne_zero 2021-10-06 21:14:58 b4a9767 feat(data/multiset/basic): has_ordered_sub multiset (#9566) * Provide `instance : has_ordered_sub (multiset α)` * Prove most multiset subtraction lemmas as special cases of `has_ordered_sub` lemmas * In a subsequent PR I will remove the specialized multiset lemmas ESTIMATED CHANGES Modified src/data/multiset/basic.lean - theorem multiset.sub_le_iff_le_add - theorem multiset.sub_zero 2021-10-06 21:14:56 845d064 feat(algebra/big_operators/finprod): add finprod.mem_dvd (#9549) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.dvd_prod_of_mem Modified src/algebra/big_operators/finprod.lean + theorem finprod_mem_dvd 2021-10-06 19:23:08 b2ae195 move(data/fin/*): group `fin` files under a `fin` folder (#9524) ESTIMATED CHANGES Modified src/category_theory/Fintype.lean Modified src/control/functor/multivariate.lean Modified src/data/bitvec/basic.lean Modified src/data/equiv/fin.lean Renamed src/data/fin.lean to src/data/fin/basic.lean Renamed src/data/fin2.lean to src/data/fin/fin2.lean Modified src/data/fintype/fin.lean Modified src/data/list/duplicate.lean Modified src/data/list/nodup_equiv_fin.lean Modified src/data/list/of_fn.lean Modified src/data/typevec.lean Modified src/data/vector3.lean Modified src/number_theory/dioph.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/jordan_holder.lean Modified src/set_theory/pgame.lean Modified src/system/random/basic.lean 2021-10-06 18:27:53 5c3cdd2 feat(analysis/normed_space/add_torsor_bases): barycentric coordinates are open maps (in finite dimensions over a complete field) (#9543) Using the open mapping theorem with a one-dimensional codomain feels a bit ridiculous but I see no reason not to do so. Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean + theorem is_open_map_barycentric_coord Modified src/linear_algebra/affine_space/barycentric_coords.lean + theorem surjective_barycentric_coord 2021-10-06 17:48:50 a7b4e78 fix(computability/DFA): tighten regular pumping lemma to match standard textbooks (#9585) This PR slightly tightens the regular pumping lemma: the current version applies only to words that are of length at least the number of states in the DFA plus one. Here we remove the plus one. ESTIMATED CHANGES Modified src/computability/DFA.lean +/- theorem DFA.eval_from_split Modified src/computability/NFA.lean Modified src/computability/epsilon_NFA.lean 2021-10-06 15:46:06 bcd13a7 refactor(data/equiv): split out `./set` from `./basic` (#9560) This move all the equivalences between sets-coerced-to-types to a new file, which makes `equiv/basic` a slightly more manageable size. The only non-move change in this PR is the rewriting of `equiv.of_bijective` to not go via `equiv.of_injective`, as we already have all the fields available directly and this allows the latter to move to a separate file. This will allow us to import `order_dual.lean` earlier, as we no longer have to define boolean algebras before equivalences are available. This relates to #4758. ESTIMATED CHANGES Modified src/algebra/group/ulift.lean Modified src/data/equiv/basic.lean - theorem dite_comp_equiv_update - theorem equiv.apply_of_injective_symm - theorem equiv.eq_image_iff_symm_image_eq - theorem equiv.eq_preimage_iff_image_eq - def equiv.image - theorem equiv.image_eq_iff_eq - theorem equiv.image_preimage - theorem equiv.image_subset - theorem equiv.image_symm_image - theorem equiv.of_injective_symm_apply - def equiv.of_left_inverse' - theorem equiv.of_left_inverse'_eq_of_injective - def equiv.of_left_inverse - theorem equiv.of_left_inverse_eq_of_injective - theorem equiv.preimage_eq_iff_eq_image - theorem equiv.preimage_image - theorem equiv.preimage_subset - theorem equiv.preimage_symm_preimage - theorem equiv.prod_assoc_preimage - theorem equiv.range_eq_univ - theorem equiv.self_comp_of_injective_symm - theorem equiv.set.image_symm_preimage - theorem equiv.set.insert_apply_left - theorem equiv.set.insert_apply_right - theorem equiv.set.insert_symm_apply_inl - theorem equiv.set.insert_symm_apply_inr - theorem equiv.set.sum_compl_apply_inl - theorem equiv.set.sum_compl_apply_inr - theorem equiv.set.sum_compl_symm_apply - theorem equiv.set.sum_compl_symm_apply_compl - theorem equiv.set.sum_compl_symm_apply_of_mem - theorem equiv.set.sum_compl_symm_apply_of_not_mem - theorem equiv.set.sum_diff_subset_apply_inl - theorem equiv.set.sum_diff_subset_apply_inr - theorem equiv.set.sum_diff_subset_symm_apply_of_mem - theorem equiv.set.sum_diff_subset_symm_apply_of_not_mem - theorem equiv.set.union_apply_left - theorem equiv.set.union_apply_right - theorem equiv.set.union_symm_apply_left - theorem equiv.set.union_symm_apply_right - def equiv.set_congr - def equiv.set_prod_equiv_sigma - theorem equiv.symm_image_image - theorem equiv.symm_preimage_preimage - theorem set.image_equiv_eq_preimage_symm - theorem set.mem_image_equiv - theorem set.preimage_equiv_eq_image_symm Modified src/data/equiv/local_equiv.lean Modified src/data/equiv/mul_add.lean Added src/data/equiv/set.lean + theorem dite_comp_equiv_update + theorem equiv.apply_of_injective_symm + theorem equiv.eq_image_iff_symm_image_eq + theorem equiv.eq_preimage_iff_image_eq + def equiv.image + theorem equiv.image_eq_iff_eq + theorem equiv.image_preimage + theorem equiv.image_subset + theorem equiv.image_symm_image + theorem equiv.of_injective_symm_apply + def equiv.of_left_inverse' + theorem equiv.of_left_inverse'_eq_of_injective + def equiv.of_left_inverse + theorem equiv.of_left_inverse_eq_of_injective + theorem equiv.preimage_eq_iff_eq_image + theorem equiv.preimage_image + theorem equiv.preimage_subset + theorem equiv.preimage_symm_preimage + theorem equiv.prod_assoc_preimage + theorem equiv.range_eq_univ + theorem equiv.self_comp_of_injective_symm + theorem equiv.set.image_symm_preimage + theorem equiv.set.insert_apply_left + theorem equiv.set.insert_apply_right + theorem equiv.set.insert_symm_apply_inl + theorem equiv.set.insert_symm_apply_inr + theorem equiv.set.sum_compl_apply_inl + theorem equiv.set.sum_compl_apply_inr + theorem equiv.set.sum_compl_symm_apply + theorem equiv.set.sum_compl_symm_apply_compl + theorem equiv.set.sum_compl_symm_apply_of_mem + theorem equiv.set.sum_compl_symm_apply_of_not_mem + theorem equiv.set.sum_diff_subset_apply_inl + theorem equiv.set.sum_diff_subset_apply_inr + theorem equiv.set.sum_diff_subset_symm_apply_of_mem + theorem equiv.set.sum_diff_subset_symm_apply_of_not_mem + theorem equiv.set.union_apply_left + theorem equiv.set.union_apply_right + theorem equiv.set.union_symm_apply_left + theorem equiv.set.union_symm_apply_right + def equiv.set_congr + def equiv.set_prod_equiv_sigma + theorem equiv.symm_image_image + theorem equiv.symm_preimage_preimage + theorem set.image_equiv_eq_preimage_symm + theorem set.mem_image_equiv + theorem set.preimage_equiv_eq_image_symm Modified src/data/part.lean Modified src/logic/embedding.lean Modified src/logic/small.lean Modified src/order/order_dual.lean Modified src/order/rel_iso.lean 2021-10-06 15:46:04 0b356b0 feat(analysis/normed_space/banach): open mapping theorem for maps between affine spaces (#9540) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean + theorem open_mapping_affine Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.surjective_iff_linear_surjective 2021-10-06 15:46:03 5773bc6 feat(group_theory/group_action/conj_act): conjugation action of groups (#8627) ESTIMATED CHANGES Modified src/data/equiv/mul_add_aut.lean Added src/group_theory/group_action/conj_act.lean + theorem conj_act.card + theorem conj_act.fixed_points_eq_center + def conj_act.of_conj_act + theorem conj_act.of_conj_act_inv + theorem conj_act.of_conj_act_mul + theorem conj_act.of_conj_act_one + theorem conj_act.of_conj_act_to_conj_act + theorem conj_act.of_conj_act_zero + theorem conj_act.of_mul_symm_eq + theorem conj_act.smul_def + theorem conj_act.smul_eq_mul_aut_conj + def conj_act.to_conj_act + theorem conj_act.to_conj_act_inv + theorem conj_act.to_conj_act_mul + theorem conj_act.to_conj_act_of_conj_act + theorem conj_act.to_conj_act_one + theorem conj_act.to_conj_act_zero + theorem conj_act.to_mul_symm_eq + theorem conj_act.«forall» + def conj_act 2021-10-06 14:53:28 6abd6f2 chore(ring_theory/witt_vector): fix a docstring (#9575) ESTIMATED CHANGES Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean 2021-10-06 13:44:03 850d5d2 feat(analysis/convex/function): Dual lemmas (#9571) ESTIMATED CHANGES Modified src/analysis/convex/function.lean + theorem concave_on.convex_gt - theorem concave_on.convex_lt + theorem concave_on.dual + theorem concave_on.ge_on_segment' + theorem concave_on.ge_on_segment - theorem concave_on.le_on_segment' - theorem concave_on.le_on_segment +/- theorem concave_on.smul + theorem convex_on.dual +/- theorem convex_on.smul + theorem strict_concave_on.dual + theorem strict_convex_on.dual 2021-10-06 10:12:02 8c65781 refactor(data/nat/basic): remove sub lemmas (#9544) * Remove the nat sub lemmas that are special cases of lemmas in `algebra/order/sub` * This PR does 90% of the work, some lemmas require a bit more work (which will be done in a future PR) * Protect `ordinal.add_sub_cancel_of_le` * Most fixes in other files were abuses of the definitional equality of `n < m` and `nat.succ n \le m`. * [This](https://github.com/leanprover-community/mathlib/blob/7a5d15a955a92a90e1d398b2281916b9c41270b2/src/data/nat/basic.lean#L498-L611) gives the list of renamings. * The regex to find 90+% of the occurrences of removed lemmas. Some lemmas were not protected, so might not be found this way. ``` nat.(le_sub_add|add_sub_cancel'|sub_add_sub_cancel|sub_cancel|sub_sub_sub_cancel_right|sub_add_eq_add_sub|sub_sub_assoc|lt_of_sub_pos|lt_of_sub_lt_sub_right|lt_of_sub_lt_sub_left|sub_lt_self|le_sub_right_of_add_le|le_sub_left_of_add_le|lt_sub_right_of_add_lt|lt_sub_left_of_add_lt|add_lt_of_lt_sub_right|add_lt_of_lt_sub_left|le_add_of_sub_le_right|le_add_of_sub_le_left|lt_add_of_sub_lt_right|lt_add_of_sub_lt_left|sub_le_left_of_le_add|sub_le_right_of_le_add|sub_lt_left_iff_lt_add|le_sub_left_iff_add_le|le_sub_right_iff_add_le|lt_sub_left_iff_add_lt|lt_sub_right_iff_add_lt|sub_lt_right_iff_lt_add|sub_le_sub_left_iff|sub_lt_sub_right_iff|sub_lt_sub_left_iff|sub_le_iff|sub_lt_iff)[^_] ``` ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified archive/imo/imo1977_q6.lean Modified archive/imo/imo1998_q2.lean Modified archive/oxford_invariants/2021summer/week3_p1.lean Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/intervals.lean Modified src/algebra/geom_sum.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/pointwise.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/combinatorics/composition.lean Modified src/combinatorics/derangements/exponential.lean Modified src/combinatorics/derangements/finite.lean Modified src/computability/DFA.lean Modified src/computability/turing_machine.lean Modified src/data/complex/exponential.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/fin.lean Modified src/data/fin.lean Modified src/data/finset/basic.lean Modified src/data/finset/intervals.lean Modified src/data/finset/sort.lean Modified src/data/list/basic.lean Modified src/data/list/cycle.lean Modified src/data/list/intervals.lean Modified src/data/list/perm.lean Modified src/data/list/rotate.lean Modified src/data/matrix/notation.lean Modified src/data/multiset/basic.lean Modified src/data/nat/basic.lean - theorem nat.sub_cancel - theorem nat.sub_sub_assoc - theorem nat.sub_sub_sub_cancel_right Modified src/data/nat/choose/basic.lean Modified src/data/nat/dist.lean Modified src/data/nat/factorial/basic.lean Modified src/data/nat/interval.lean Modified src/data/nat/modeq.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/pairing.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/nat/upto.lean Modified src/data/ordmap/ordset.lean Modified src/data/polynomial/hasse_deriv.lean Modified src/data/polynomial/mirror.lean Modified src/data/polynomial/reverse.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite/polynomial.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/list.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/class_number/admissible_card_pow_degree.lean Modified src/number_theory/padics/ring_homs.lean Modified src/order/filter/at_top_bot.lean Modified src/order/iterate.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/set_theory/game/state.lean Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.add_sub_cancel_of_le Modified src/set_theory/ordinal_notation.lean Modified src/system/random/basic.lean Modified src/tactic/omega/coeffs.lean Modified src/testing/slim_check/gen.lean Modified src/testing/slim_check/sampleable.lean Modified test/general_recursion.lean 2021-10-06 10:12:00 facc1d2 feat(topology/algebra): topology on a linear_ordered_comm_group_with_zero (#9537) This is a modernized version of code from the perfectoid spaces project. ESTIMATED CHANGES Modified src/algebra/order/with_zero.lean + theorem inv_mul_lt_of_lt_mul₀ Added src/topology/algebra/with_zero_topology.lean + theorem linear_ordered_comm_group_with_zero.directed_lt + theorem linear_ordered_comm_group_with_zero.has_basis_nhds_of_ne_zero + theorem linear_ordered_comm_group_with_zero.has_basis_nhds_units + theorem linear_ordered_comm_group_with_zero.has_basis_nhds_zero + theorem linear_ordered_comm_group_with_zero.nhds_coe_units + def linear_ordered_comm_group_with_zero.nhds_fun + theorem linear_ordered_comm_group_with_zero.nhds_fun_ok + theorem linear_ordered_comm_group_with_zero.nhds_of_ne_zero + theorem linear_ordered_comm_group_with_zero.nhds_zero_of_ne_zero + theorem linear_ordered_comm_group_with_zero.nhds_zero_of_units + theorem linear_ordered_comm_group_with_zero.pure_le_nhds_fun + theorem linear_ordered_comm_group_with_zero.singleton_nhds_of_ne_zero + theorem linear_ordered_comm_group_with_zero.singleton_nhds_of_units + theorem linear_ordered_comm_group_with_zero.tendsto_of_ne_zero + theorem linear_ordered_comm_group_with_zero.tendsto_units + theorem linear_ordered_comm_group_with_zero.tendsto_zero Modified src/topology/basic.lean + theorem is_closed.compl_mem_nhds 2021-10-06 08:03:57 b534fed refactor(analysis/{normed_space, inner_product_space}/dual): redefine using `linear_isometry` (#9569) Linear isometric embeddings appear naturally when studying the duals of normed spaces: the map `λ y, ⟪x, y⟫` from an inner product space to its dual is a linear isometric embedding++, and so is the canonical map from a normed space to its double dual**. When these natural maps were defined last year, we didn't have the definition `linear_isometry` (notation: `X →ₗᵢ[R] Y`), so they were defined as continuous linear maps which satisfied the predicate `isometry`, and several lemmas were proven ad-hoc which are now available as general lemmas about `linear_isometry`. This PR refactors to use the `linear_isometry` structure. Lemmas deleted (I have been enthusiastic here, and can scale back if desired ...): normed_space.inclusion_in_double_dual_isometry inner_product_space.to_dual_map_isometry inner_product_space.to_dual_map_injective inner_product_space.ker_to_dual_map inner_product_space.to_dual_map_eq_iff_eq inner_product_space.range_to_dual_map inner_product_space.isometric.to_dual inner_product_space.to_dual_eq_iff_eq inner_product_space.to_dual_eq_iff_eq' inner_product_space.norm_to_dual_apply inner_product_space.norm_to_dual_symm_apply ++ (over `ℝ` -- over `ℂ` it's conjugate-linear, which will be dealt with in future PRs) ** over `ℝ` or `ℂ` ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/inner_product_space/dual.lean - def inner_product_space.isometric.to_dual - theorem inner_product_space.ker_to_dual_map - theorem inner_product_space.norm_to_dual_apply - theorem inner_product_space.norm_to_dual_map_apply - theorem inner_product_space.norm_to_dual_symm_apply - theorem inner_product_space.range_to_dual_map +/- def inner_product_space.to_dual +/- theorem inner_product_space.to_dual_apply - theorem inner_product_space.to_dual_eq_iff_eq' - theorem inner_product_space.to_dual_eq_iff_eq +/- def inner_product_space.to_dual_map +/- theorem inner_product_space.to_dual_map_apply - theorem inner_product_space.to_dual_map_eq_iff_eq - theorem inner_product_space.to_dual_map_injective - theorem inner_product_space.to_dual_map_isometry Modified src/analysis/normed_space/dual.lean - theorem normed_space.inclusion_in_double_dual_isometry + def normed_space.inclusion_in_double_dual_li Modified src/analysis/normed_space/linear_isometry.lean 2021-10-06 08:03:56 e52e533 feat(order/bounds): Antitone lemmas (#9556) ESTIMATED CHANGES Modified src/order/bounds.lean + theorem antitone.image_lower_bounds_subset_upper_bounds_image + theorem antitone.image_upper_bounds_subset_lower_bounds_image + theorem antitone.is_lub_image_le + theorem antitone.le_is_glb_image + theorem antitone.map_bdd_above + theorem antitone.map_bdd_below + theorem antitone.map_is_greatest + theorem antitone.map_is_least + theorem antitone.mem_lower_bounds_image + theorem antitone.mem_upper_bounds_image 2021-10-06 06:05:04 f811910 feat(linear_algebra/affine_space/barycentric_coords): barycentric coordinates are 1 in zero dimensions (#9564) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton_of_univ_subsingleton + theorem set.subsingleton_univ_iff Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.subsingleton_of_subsingleton_span_eq_top Modified src/linear_algebra/affine_space/barycentric_coords.lean + theorem coe_barycentric_coord_of_subsingleton_eq_one 2021-10-06 01:36:04 db5ee76 chore(linear_algebra/quadratic_form): squeeze simps (#9572) #9567 speeds up the slowest declaration in the file, but many other declarations are also slow. This PR squeezes all simps. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean 2021-10-05 21:57:44 fdf8a71 feat(topology/bases): a family of nonempty disjoint open sets is countable in a separable space (#9557) Together with unrelated small lemmas on balls and on `pairwise_on`. ESTIMATED CHANGES Modified src/analysis/normed_space/riesz_lemma.lean Modified src/data/real/ennreal.lean + theorem ennreal.exists_le_of_sum_le + theorem ennreal.sum_lt_sum_of_nonempty Modified src/data/set/basic.lean + theorem set.pairwise_on_disjoint_on_mono Modified src/data/set/lattice.lean + theorem set.pairwise_on_Union Modified src/measure_theory/constructions/borel_space.lean Modified src/topology/bases.lean + theorem topological_space.countable_of_is_open_of_disjoint + theorem topological_space.countable_of_nonempty_interior_of_disjoint Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean + theorem emetric.disjoint_closed_ball_of_lt_inf_edist + theorem is_closed.Hausdorff_dist_zero_iff_eq + theorem is_closed.mem_iff_inf_dist_zero + theorem is_closed.not_mem_iff_inf_dist_pos - theorem metric.Hausdorff_dist_zero_iff_eq_of_closed + theorem metric.disjoint_closed_ball_of_lt_inf_dist - theorem metric.mem_iff_inf_dist_zero_of_closed 2021-10-05 21:57:43 815eaca feat(analysis/normed_space/affine_isometry): affine maps are open iff their underlying linear maps are (#9538) Formalized as part of the Sphere Eversion project. ESTIMATED CHANGES Modified src/analysis/normed_space/affine_isometry.lean + theorem affine_map.is_open_map_linear_iff Modified src/topology/algebra/affine.lean Modified src/topology/homeomorph.lean + theorem homeomorph.comp_is_open_map_iff' + theorem homeomorph.comp_is_open_map_iff 2021-10-05 19:53:22 63903f2 doc(linear_algebra/free_module/strong_rank_condition): correct a typo (#9565) ESTIMATED CHANGES Modified src/linear_algebra/free_module/strong_rank_condition.lean 2021-10-05 19:53:21 0b57520 feat(order/bounds): Image under an `order_iso` and `upper_bounds` commute (#9555) ESTIMATED CHANGES Modified src/order/bounds.lean + theorem monotone.image_lower_bounds_subset_lower_bounds_image + theorem monotone.image_upper_bounds_subset_upper_bounds_image +/- theorem order_iso.is_glb_image' +/- theorem order_iso.is_glb_image +/- theorem order_iso.is_glb_preimage' +/- theorem order_iso.is_glb_preimage +/- theorem order_iso.is_lub_image' +/- theorem order_iso.is_lub_image +/- theorem order_iso.is_lub_preimage' +/- theorem order_iso.is_lub_preimage + theorem order_iso.lower_bounds_image + theorem order_iso.upper_bounds_image Modified src/order/galois_connection.lean - theorem order_iso.lower_bounds_image - theorem order_iso.upper_bounds_image 2021-10-05 19:53:20 111d73b feat(data/int/interval): Finite intervals in ℤ (#9526) This proves that `ℤ` is a locally finite order. ESTIMATED CHANGES Modified src/algebra/char_zero.lean + def nat.cast_embedding Added src/data/int/interval.lean + theorem int.Icc_eq_finset_map + theorem int.Ioc_eq_finset_map + theorem int.Ioo_eq_finset_map + theorem int.card_Icc + theorem int.card_Icc_of_le + theorem int.card_Ioc + theorem int.card_Ioc_of_le + theorem int.card_Ioo + theorem int.card_Ioo_of_lt + theorem int.card_fintype_Icc + theorem int.card_fintype_Icc_of_le + theorem int.card_fintype_Ioc + theorem int.card_fintype_Ioc_of_le + theorem int.card_fintype_Ioo + theorem int.card_fintype_Ioo_of_lt 2021-10-05 17:44:36 7455f47 chore(linear_algebra/quadratic_form): speed up quadratic_form.lin_mul_lin (#9567) In my single profiler run, this reduced elaboration time from 20s to 1.5s. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean 2021-10-05 11:41:22 5926f10 fix(data/equiv/basic): use `subtype p` not `coe_sort (set_of p)` (#9559) `↥{x | p x}` is just a clumsy way to write `{x // p x}`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean 2021-10-05 10:10:30 da4d550 chore(measure_theory/*): better names and notations, add easy lemmas (#9554) * Localize notation for absolutely continuous in the `measure_theory` namespace, and add separate notations for the case of measures and of vector measures. * Standardize some names, using `measure` instead of `meas`. * Add two lemmas on measures with density. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean - theorem meas_closure_of_null_bdry - theorem meas_interior_of_null_bdry + theorem measure_closure_of_null_bdry + theorem measure_interior_of_null_bdry Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/radon_nikodym.lean Modified src/measure_theory/function/ess_sup.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.exists_absolutely_continuous_is_finite_measure + theorem measure_theory.with_density_mul + theorem measure_theory.with_density_one Modified src/measure_theory/measure/measure_space.lean - theorem measure_theory.meas_eq_meas_larger_of_between_null_diff - theorem measure_theory.meas_eq_meas_of_between_null_diff - theorem measure_theory.meas_eq_meas_of_null_diff - theorem measure_theory.meas_eq_meas_smaller_of_between_null_diff + theorem measure_theory.measure_diff_le_iff_le_add + theorem measure_theory.measure_eq_measure_larger_of_between_null_diff + theorem measure_theory.measure_eq_measure_of_between_null_diff + theorem measure_theory.measure_eq_measure_of_null_diff + theorem measure_theory.measure_eq_measure_smaller_of_between_null_diff Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.measure_Union_fintype_le Modified src/measure_theory/measure/vector_measure.lean +/- theorem measure_theory.vector_measure.absolutely_continuous.eq +/- theorem measure_theory.vector_measure.absolutely_continuous.map +/- theorem measure_theory.vector_measure.absolutely_continuous.mk +/- theorem measure_theory.vector_measure.absolutely_continuous.refl +/- theorem measure_theory.vector_measure.absolutely_continuous.trans +/- theorem measure_theory.vector_measure.absolutely_continuous.zero Modified src/measure_theory/measure/with_density_vector_measure.lean 2021-10-05 10:10:29 e7ea02f feat(analysis/convex/basic): Levels of a monotone/antitone function (#9547) The set of points whose image under a monotone function is less than a fixed value is convex, when the space is linear. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem antitone.convex_ge + theorem antitone.convex_gt + theorem antitone.convex_le + theorem antitone.convex_lt + theorem antitone_on.convex_ge + theorem antitone_on.convex_gt + theorem antitone_on.convex_le + theorem antitone_on.convex_lt + theorem convex.combo_le_max + theorem convex.min_le_combo + theorem monotone.convex_ge + theorem monotone.convex_gt + theorem monotone.convex_le + theorem monotone.convex_lt + theorem monotone_on.convex_ge + theorem monotone_on.convex_gt + theorem monotone_on.convex_le + theorem monotone_on.convex_lt + theorem segment_subset_interval 2021-10-05 10:10:28 5b79319 feat(ring_theory/polynomial/basic): add a lemma `polynomial_quotient_equiv_quotient_polynomial_map_mk` (#9542) ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean + theorem ideal.polynomial_quotient_equiv_quotient_polynomial_map_mk + theorem ideal.polynomial_quotient_equiv_quotient_polynomial_symm_mk 2021-10-05 10:10:27 2666033 refactor(algebra/gcd_monoid): don't require normalization (#9443) This will allow us to set up a gcd_monoid instance for all euclidean_domains and generalize the results in ring_theory/euclidean_domain.lean to PIDs. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/algebra/associated.lean + theorem associated_mul_unit_left + theorem associated_mul_unit_right + theorem associated_unit_mul_left + theorem associated_unit_mul_right + theorem units_eq_one Modified src/algebra/gcd_monoid/basic.lean +/- theorem associated.gcd_eq_left +/- theorem associated.gcd_eq_right +/- theorem dvd_gcd_iff +/- theorem dvd_gcd_mul_of_dvd_mul +/- theorem dvd_lcm_left +/- theorem dvd_lcm_right +/- theorem dvd_mul_gcd_of_dvd_mul +/- theorem exists_associated_pow_of_mul_eq_pow +/- theorem exists_dvd_and_dvd_of_dvd_mul + theorem gcd_assoc' +/- theorem gcd_assoc + theorem gcd_comm' +/- theorem gcd_comm +/- theorem gcd_dvd_gcd +/- theorem gcd_dvd_gcd_mul_left +/- theorem gcd_dvd_gcd_mul_left_right +/- theorem gcd_dvd_gcd_mul_right +/- theorem gcd_dvd_gcd_mul_right_right +/- theorem gcd_eq_left_iff +/- theorem gcd_eq_normalize +/- theorem gcd_eq_right_iff +/- theorem gcd_eq_zero_iff +/- theorem gcd_monoid.irreducible_iff_prime +/- theorem gcd_monoid.prime_of_irreducible +/- theorem gcd_mul_dvd_mul_gcd +/- theorem gcd_mul_lcm + theorem gcd_mul_left' +/- theorem gcd_mul_left + theorem gcd_mul_right' +/- theorem gcd_mul_right + theorem gcd_one_left' +/- theorem gcd_one_left + theorem gcd_one_right' +/- theorem gcd_one_right +/- theorem gcd_pow_left_dvd_pow_gcd +/- theorem gcd_pow_right_dvd_pow_gcd +/- theorem gcd_same + theorem gcd_zero_left' +/- theorem gcd_zero_left + theorem gcd_zero_right' +/- theorem gcd_zero_right + theorem lcm_assoc' +/- theorem lcm_assoc + theorem lcm_comm' +/- theorem lcm_comm +/- theorem lcm_dvd +/- theorem lcm_dvd_iff +/- theorem lcm_dvd_lcm +/- theorem lcm_dvd_lcm_mul_left +/- theorem lcm_dvd_lcm_mul_left_right +/- theorem lcm_dvd_lcm_mul_right +/- theorem lcm_dvd_lcm_mul_right_right +/- theorem lcm_eq_left_iff +/- theorem lcm_eq_normalize +/- theorem lcm_eq_of_associated_left +/- theorem lcm_eq_of_associated_right +/- theorem lcm_eq_one_iff +/- theorem lcm_eq_right_iff +/- theorem lcm_eq_zero_iff +/- theorem lcm_mul_left +/- theorem lcm_mul_right +/- theorem lcm_one_left +/- theorem lcm_one_right +/- theorem lcm_same +/- theorem lcm_units_coe_left +/- theorem lcm_units_coe_right +/- theorem normalize_gcd +/- theorem normalize_lcm +/- theorem pow_dvd_of_mul_eq_pow - theorem units_eq_one Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/gcd_monoid/multiset.lean Modified src/field_theory/minpoly.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/unique_factorization_domain.lean +/- theorem associates.coprime_iff_inf_one +/- theorem associates.count_mul +/- theorem associates.count_mul_of_coprime' +/- theorem associates.count_mul_of_coprime +/- theorem associates.count_of_coprime +/- theorem associates.count_pow +/- theorem associates.dvd_count_of_dvd_count_mul +/- theorem associates.dvd_count_pow +/- theorem associates.eq_of_prod_eq_prod +/- theorem associates.eq_pow_of_mul_eq_pow +/- theorem associates.factors_le +/- theorem associates.factors_mono +/- theorem associates.factors_mul +/- theorem associates.factors_one +/- theorem associates.factors_prime_pow +/- theorem associates.is_pow_of_dvd_count +/- theorem associates.le_of_count_ne_zero +/- theorem associates.pow_factors +/- theorem associates.prime_pow_dvd_iff_le +/- theorem associates.prod_factors +/- theorem associates.prod_le +/- theorem associates.prod_le_prod_iff_le + theorem associates.quot_out +/- theorem associates.sup_mul_inf + theorem unique_factorization_monoid.exists_mem_factors_of_dvd + theorem unique_factorization_monoid.factors_prod + theorem unique_factorization_monoid.irreducible_of_factor +/- theorem unique_factorization_monoid.normalized_factors_zero + theorem unique_factorization_monoid.prime_of_factor 2021-10-05 08:58:55 def4814 refactor(topology/algebra/module): continuous semilinear maps (#9539) Generalize the theory of continuous linear maps to the semilinear setting. We introduce a notation `∘L` for composition of continuous linear (i.e., not semilinear) maps, used sporadically to help with unification. See #8857 for a discussion of a related problem and fix. ESTIMATED CHANGES Modified src/analysis/complex/conformal.lean Modified src/analysis/normed_space/complemented.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_equiv.apply_symm_apply +/- theorem continuous_linear_equiv.bijective +/- theorem continuous_linear_equiv.coe_apply +/- theorem continuous_linear_equiv.coe_coe +/- theorem continuous_linear_equiv.coe_comp_coe_symm +/- theorem continuous_linear_equiv.coe_def_rev +/- theorem continuous_linear_equiv.coe_inj +/- theorem continuous_linear_equiv.coe_injective +/- theorem continuous_linear_equiv.coe_prod +/- theorem continuous_linear_equiv.coe_symm_comp_coe +/- theorem continuous_linear_equiv.coe_to_homeomorph +/- theorem continuous_linear_equiv.coe_to_linear_equiv +/- theorem continuous_linear_equiv.comp_coe +/- theorem continuous_linear_equiv.eq_symm_apply +/- def continuous_linear_equiv.equiv_of_inverse +/- theorem continuous_linear_equiv.equiv_of_inverse_apply +/- theorem continuous_linear_equiv.ext +/- theorem continuous_linear_equiv.ext₁ +/- theorem continuous_linear_equiv.image_closure +/- theorem continuous_linear_equiv.image_symm_image +/- theorem continuous_linear_equiv.injective +/- theorem continuous_linear_equiv.is_closed_image +/- theorem continuous_linear_equiv.map_add +/- theorem continuous_linear_equiv.map_eq_zero_iff +/- theorem continuous_linear_equiv.map_neg +/- theorem continuous_linear_equiv.map_nhds_eq +/- theorem continuous_linear_equiv.map_smul + theorem continuous_linear_equiv.map_smulₛₗ +/- theorem continuous_linear_equiv.map_sub +/- theorem continuous_linear_equiv.map_zero +/- theorem continuous_linear_equiv.preimage_closure +/- def continuous_linear_equiv.prod +/- theorem continuous_linear_equiv.prod_apply +/- theorem continuous_linear_equiv.self_comp_symm +/- theorem continuous_linear_equiv.surjective +/- theorem continuous_linear_equiv.symm_apply_apply +/- theorem continuous_linear_equiv.symm_apply_eq +/- theorem continuous_linear_equiv.symm_comp_self +/- theorem continuous_linear_equiv.symm_equiv_of_inverse +/- theorem continuous_linear_equiv.symm_image_image +/- theorem continuous_linear_equiv.symm_map_nhds_eq +/- theorem continuous_linear_equiv.symm_symm +/- theorem continuous_linear_equiv.symm_symm_apply +/- theorem continuous_linear_equiv.symm_to_homeomorph +/- theorem continuous_linear_equiv.symm_to_linear_equiv +/- theorem continuous_linear_equiv.symm_trans_apply +/- def continuous_linear_equiv.to_continuous_linear_map +/- def continuous_linear_equiv.to_homeomorph +/- theorem continuous_linear_equiv.to_linear_equiv_injective +/- theorem continuous_linear_equiv.trans_apply +/- theorem continuous_linear_equiv.trans_to_linear_equiv +/- def continuous_linear_map.cod_restrict +/- theorem continuous_linear_map.coe_add' +/- theorem continuous_linear_map.coe_add +/- theorem continuous_linear_map.coe_cod_restrict +/- theorem continuous_linear_map.coe_cod_restrict_apply +/- theorem continuous_linear_map.coe_coe +/- theorem continuous_linear_map.coe_comp' +/- theorem continuous_linear_map.coe_comp +/- theorem continuous_linear_map.coe_coprod +/- theorem continuous_linear_map.coe_eq_id +/- theorem continuous_linear_map.coe_fn_injective +/- theorem continuous_linear_map.coe_fst' +/- theorem continuous_linear_map.coe_fst +/- theorem continuous_linear_map.coe_id' +/- theorem continuous_linear_map.coe_id +/- theorem continuous_linear_map.coe_inj +/- theorem continuous_linear_map.coe_injective +/- theorem continuous_linear_map.coe_inl +/- theorem continuous_linear_map.coe_inr +/- theorem continuous_linear_map.coe_mk' +/- theorem continuous_linear_map.coe_mk +/- theorem continuous_linear_map.coe_mul +/- theorem continuous_linear_map.coe_neg' +/- theorem continuous_linear_map.coe_neg +/- theorem continuous_linear_map.coe_prod +/- theorem continuous_linear_map.coe_prod_map' +/- theorem continuous_linear_map.coe_prod_map +/- theorem continuous_linear_map.coe_snd' +/- theorem continuous_linear_map.coe_snd +/- theorem continuous_linear_map.coe_sub' +/- theorem continuous_linear_map.coe_sub +/- theorem continuous_linear_map.coe_subtype_val +/- theorem continuous_linear_map.coe_sum' +/- theorem continuous_linear_map.coe_sum +/- theorem continuous_linear_map.coe_zero' +/- theorem continuous_linear_map.coe_zero +/- def continuous_linear_map.comp +/- theorem continuous_linear_map.comp_apply +/- theorem continuous_linear_map.comp_assoc +/- theorem continuous_linear_map.comp_id +/- theorem continuous_linear_map.comp_zero +/- def continuous_linear_map.coprod +/- theorem continuous_linear_map.coprod_apply +/- theorem continuous_linear_map.default_def +/- theorem continuous_linear_map.eq_on_closure_span +/- theorem continuous_linear_map.ext +/- theorem continuous_linear_map.ext_iff +/- theorem continuous_linear_map.ext_on +/- theorem continuous_linear_map.ext_ring +/- theorem continuous_linear_map.ext_ring_iff +/- def continuous_linear_map.fst +/- theorem continuous_linear_map.fst_comp_prod +/- theorem continuous_linear_map.fst_prod_snd +/- def continuous_linear_map.id +/- theorem continuous_linear_map.id_apply +/- theorem continuous_linear_map.id_comp +/- def continuous_linear_map.inl +/- theorem continuous_linear_map.inl_apply +/- def continuous_linear_map.inr +/- theorem continuous_linear_map.inr_apply +/- theorem continuous_linear_map.is_closed_ker +/- def continuous_linear_map.ker +/- theorem continuous_linear_map.ker_cod_restrict +/- theorem continuous_linear_map.ker_coe +/- theorem continuous_linear_map.ker_prod +/- theorem continuous_linear_map.map_smul +/- theorem continuous_linear_map.map_smul_of_tower + theorem continuous_linear_map.map_smulₛₗ +/- theorem continuous_linear_map.map_sum +/- theorem continuous_linear_map.map_zero +/- theorem continuous_linear_map.mem_ker +/- theorem continuous_linear_map.mem_range +/- theorem continuous_linear_map.mem_range_self +/- theorem continuous_linear_map.mul_apply +/- theorem continuous_linear_map.mul_def +/- theorem continuous_linear_map.one_apply +/- theorem continuous_linear_map.one_def +/- theorem continuous_linear_map.prod_apply +/- def continuous_linear_map.prod_map +/- def continuous_linear_map.proj_ker_of_right_inverse +/- def continuous_linear_map.range +/- theorem continuous_linear_map.range_coe +/- theorem continuous_linear_map.range_coprod +/- theorem continuous_linear_map.range_prod_eq +/- theorem continuous_linear_map.range_prod_le +/- def continuous_linear_map.smul_right +/- theorem continuous_linear_map.smul_right_apply +/- theorem continuous_linear_map.smul_right_comp +/- theorem continuous_linear_map.smul_right_one_one +/- def continuous_linear_map.snd +/- theorem continuous_linear_map.snd_comp_prod +/- theorem continuous_linear_map.sub_apply' +/- def continuous_linear_map.subtype_val +/- theorem continuous_linear_map.subtype_val_apply +/- theorem continuous_linear_map.sum_apply +/- theorem continuous_linear_map.to_linear_map_eq_coe +/- theorem continuous_linear_map.zero_apply +/- theorem continuous_linear_map.zero_comp +/- theorem dense_range.topological_closure_map_submodule +/- theorem submodule.topological_closure_map 2021-10-05 08:05:44 fefd8a3 refactor(analysis/convex/*): prove `convex_independent_iff_finset` without full Carathéodory (#9550) Also relax one `add_comm_group` to `add_comm_monoid` and two `𝕜` to `β` + `module 𝕜 β`, and simplify imports. ESTIMATED CHANGES Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/function.lean +/- theorem concave_on_id +/- theorem convex_on_id Modified src/analysis/convex/independent.lean 2021-10-05 08:05:43 c42786f feat(topology/algebra): adic topology (#9521) This is a modernized version of code from the perfectoid spaces project. ESTIMATED CHANGES Added src/topology/algebra/nonarchimedean/adic_topology.lean + theorem ideal.adic_basis + theorem ideal.adic_module_basis + def ideal.adic_module_topology + def ideal.adic_topology + theorem ideal.has_basis_nhds_adic + theorem ideal.has_basis_nhds_zero_adic + theorem ideal.nonarchimedean + def ideal.open_add_subgroup + def ideal.ring_filter_basis + def is_adic + theorem is_adic_iff + theorem is_bot_adic_iff + theorem is_ideal_adic_pow + def with_ideal.topological_space_module 2021-10-05 08:05:41 61cd266 ci(.github/workflows): automatically remove awaiting-CI label (#9491) This PR adds a job to our CI which removes the label "awaiting-CI" when the build finishes successfully. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/awaiting-CI.2C.20.23bors.2C.20and.20the.20PR.20.23queue/near/255754196) ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2021-10-05 03:31:26 1536412 refactor(data/polynomial): use `monic.ne_zero` and `nontriviality` (#9530) There is a pattern in `data/polynomial` to have both `(hq : q.monic) (hq0 : q ≠ 0)` as assumptions. I found this less convenient to work with than `[nontrivial R] (hq : q.monic)` and using `monic.ne_zero` to replace `hq0`. The `nontriviality` tactic automates all the cases where previously `nontrivial R` (or similar) was manually derived from the hypotheses. ESTIMATED CHANGES Modified src/data/polynomial/div.lean +/- theorem polynomial.degree_mod_by_monic_lt +/- theorem polynomial.div_by_monic_eq_zero_iff +/- theorem polynomial.mod_by_monic_eq_self_iff Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/ring_division.lean Modified src/field_theory/minpoly.lean Modified src/ring_theory/power_basis.lean 2021-10-05 02:21:57 fd18953 chore(scripts): update nolints.txt (#9553) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-10-05 01:26:25 0491621 docs(ring_theory/adjoin_root): fix docstring (#9546) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2021-10-05 01:26:24 7466424 feat(number_theory/padics): add padic_norm lemmas (#9527) ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/padics/padic_numbers.lean + theorem padic.norm_le_pow_iff_norm_lt_pow_add_one + theorem padic.norm_lt_pow_iff_norm_le_pow_sub_one 2021-10-04 23:18:15 3aac8e5 fix(order/sub): make arguments explicit (#9541) * This makes some arguments of lemmas explicit. * These lemmas were not used in places where the implicitness/explicitness of the arguments matters * Providing the arguments is sometimes useful, especially in `rw ← ...` * This follows the explicitness of similar lemmas (like the instantiations for `nat`). ESTIMATED CHANGES Modified src/algebra/order/sub.lean +/- theorem add_sub_add_right_eq_sub' +/- theorem add_sub_cancel_left +/- theorem add_sub_cancel_right +/- theorem sub_self' +/- theorem sub_zero' +/- theorem zero_sub' 2021-10-04 19:37:54 10da8e6 feat(set_theory/cardinal,*): assorted lemmas (#9516) ### New instances * a denumerable type is infinite; * `Prop` is (noncomputably) enumerable; * `Prop` is nontrivial; * `cardinal.can_lift_cardinal_Type`: lift `cardinal.{u}` to `Type u`. ### New lemmas / attrs * `quotient.out_equiv_out` : `x.out ≈ y.out ↔ x = y`; * `quotient.out_inj` : `x.out = y.out ↔ x = y`; * `cardinal.lift_bit0`, `cardinal.lift_bit1`, `cardinal.lift_two`, `cardinal.lift_prod` : new lemmas about `cardinal.lift`; * `cardinal.omega_le_lift` and `cardinal.lift_le_omega` : simplify `ω ≤ lift c` and `lift c ≤ ω`; * `cardinal.omega_le_add_iff`, `cardinal.encodable_iff`, `cardinal.mk_le_omega`, `cardinal.mk_denumerable`: new lemmas about `cardinal.omega`; * add `@[simp]` attribute to `cardinal.mk_univ`, add `cardinal.mk_insert`; * generalize `cardinal.nat_power_eq` to `cardinal.power_eq_two_power` and `cardinal.prod_eq_two_power`. ESTIMATED CHANGES Modified src/data/equiv/denumerable.lean Modified src/data/equiv/encodable/basic.lean Modified src/data/quot.lean + theorem quotient.out_equiv_out + theorem quotient.out_inj Modified src/data/rat/denumerable.lean +/- theorem cardinal.mk_rat Modified src/logic/nontrivial.lean Modified src/set_theory/cardinal.lean + theorem cardinal.encodable_iff + theorem cardinal.lift_bit0 + theorem cardinal.lift_bit1 + theorem cardinal.lift_le_omega + theorem cardinal.lift_prod + theorem cardinal.lift_two +/- theorem cardinal.lift_two_power + theorem cardinal.mk_denumerable + theorem cardinal.mk_insert +/- theorem cardinal.mk_int + theorem cardinal.mk_le_omega +/- theorem cardinal.mk_nat +/- theorem cardinal.mk_pnat +/- theorem cardinal.mk_univ + theorem cardinal.omega_le_add_iff + theorem cardinal.omega_le_lift + theorem cardinal.omega_le_mk Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.nat_power_eq +/- theorem cardinal.pow_le + theorem cardinal.power_eq_two_power +/- theorem cardinal.power_nat_le +/- theorem cardinal.power_self_eq + theorem cardinal.prod_eq_two_power 2021-10-04 19:37:52 50b51c5 refactor(group_theory/is_p_group): Generalize `is_p_group.comap_injective` (#9509) `is_p_group.comap_injective` (comap along injective preserves p-groups) can be generalized to `is_p_group.comap_ker_is_p_group` (comap with p-group kernel preserves p-groups). This also simplifies the proof of `is_p_group.to_sup_of_normal_right` ESTIMATED CHANGES Modified src/group_theory/p_group.lean - theorem is_p_group.comap_injective + theorem is_p_group.comap_of_injective + theorem is_p_group.comap_of_ker_is_p_group 2021-10-04 15:09:53 7a5d15a feat(data/pnat/interval): Finite intervals in ℕ+ (#9534) This proves that `ℕ+` is a locally finite order. ESTIMATED CHANGES Added src/data/pnat/interval.lean + theorem pnat.Icc_eq_finset_subtype + theorem pnat.Ioc_eq_finset_subtype + theorem pnat.Ioo_eq_finset_subtype + theorem pnat.card_Icc + theorem pnat.card_Ioc + theorem pnat.card_Ioo + theorem pnat.card_fintype_Icc + theorem pnat.card_fintype_Ioc + theorem pnat.card_fintype_Ioo + theorem pnat.map_subtype_embedding_Icc + theorem pnat.map_subtype_embedding_Ioc + theorem pnat.map_subtype_embedding_Ioo 2021-10-04 15:09:52 e998e4c feat(order/conditionally_complete_lattice): image and cSup commute (#9510) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem cinfi_set + theorem csupr_set + theorem galois_connection.l_cSup' + theorem galois_connection.u_cInf' + theorem order_iso.map_cInf' + theorem order_iso.map_cSup' 2021-10-04 15:09:51 d8968ba feat(algebra/order/functions): recursors and images under monotone maps (#9505) ESTIMATED CHANGES Modified src/algebra/order/functions.lean + theorem antitone_on.map_max + theorem antitone_on.map_min + theorem max_rec' + theorem max_rec + theorem min_rec' + theorem min_rec + theorem monotone_on.map_max + theorem monotone_on.map_min 2021-10-04 15:09:50 fa52067 refactor(order/fixed_points): rewrite using bundled `preorder_hom`s (#9497) This way `fixed_points.complete_lattice` can be an instance. ESTIMATED CHANGES Modified src/data/set/function.lean +/- theorem set.inj_on_empty + theorem set.inj_on_singleton + theorem set.inj_on_union + theorem set.injective_piecewise_iff + theorem set.subsingleton.inj_on Modified src/logic/embedding.lean - theorem function.embedding.injective Modified src/order/fixed_points.lean - theorem fixed_points.Sup_le_f_of_fixed_points - theorem fixed_points.f_le_Inf_of_fixed_points - theorem fixed_points.f_le_inf_of_fixed_points - theorem fixed_points.le_next - def fixed_points.next - theorem fixed_points.next_eq - def fixed_points.next_fixed - def fixed_points.prev - theorem fixed_points.prev_eq - def fixed_points.prev_fixed - theorem fixed_points.prev_le - theorem fixed_points.sup_le_f_of_fixed_points - def gfp - theorem gfp_comp - theorem gfp_fixed_point - theorem gfp_gfp - theorem gfp_induction - theorem gfp_le - theorem le_gfp - theorem le_lfp - def lfp - theorem lfp_comp - theorem lfp_fixed_point - theorem lfp_induction - theorem lfp_le - theorem lfp_lfp - theorem monotone_gfp - theorem monotone_lfp + def preorder_hom.gfp + theorem preorder_hom.gfp_const_inf_le + theorem preorder_hom.gfp_gfp + theorem preorder_hom.gfp_induction + theorem preorder_hom.gfp_le + theorem preorder_hom.gfp_le_map + theorem preorder_hom.is_fixed_pt_gfp + theorem preorder_hom.is_fixed_pt_lfp + theorem preorder_hom.is_greatest_gfp + theorem preorder_hom.is_greatest_gfp_le + theorem preorder_hom.is_least_lfp + theorem preorder_hom.is_least_lfp_le + theorem preorder_hom.le_gfp + theorem preorder_hom.le_lfp + theorem preorder_hom.le_map_Sup_subset_fixed_points + theorem preorder_hom.le_map_sup_fixed_points + theorem preorder_hom.le_next_fixed + theorem preorder_hom.le_prev_fixed + theorem preorder_hom.le_prev_fixed_iff + def preorder_hom.lfp + theorem preorder_hom.lfp_induction + theorem preorder_hom.lfp_le + theorem preorder_hom.lfp_le_fixed + theorem preorder_hom.lfp_le_map + theorem preorder_hom.lfp_lfp + theorem preorder_hom.map_Inf_subset_fixed_points_le + theorem preorder_hom.map_gfp + theorem preorder_hom.map_gfp_comp + theorem preorder_hom.map_inf_fixed_points_le + theorem preorder_hom.map_le_gfp + theorem preorder_hom.map_le_lfp + theorem preorder_hom.map_lfp + theorem preorder_hom.map_lfp_comp + def preorder_hom.next_fixed + theorem preorder_hom.next_fixed_le + theorem preorder_hom.next_fixed_le_iff + def preorder_hom.prev_fixed + theorem preorder_hom.prev_fixed_le Modified src/set_theory/schroeder_bernstein.lean 2021-10-04 15:09:49 387ff6e feat(topology/homotopy): add `homotopy_with` (#9252) Added `homotopy_with` as in [`HOL-Analysis`](https://isabelle.in.tum.de/library/HOL/HOL-Analysis/Homotopy.html) extending `homotopy`. Furthermore, I've added `homotopy_rel`. Also rename/moved the file. There is also some refactoring which is part of the suggestions from #9141 . ESTIMATED CHANGES Deleted src/topology/homotopy.lean - theorem continuous_map.homotopy.apply_one - theorem continuous_map.homotopy.apply_zero - def continuous_map.homotopy.curry - theorem continuous_map.homotopy.ext - def continuous_map.homotopy.extend - theorem continuous_map.homotopy.extend_apply_one - theorem continuous_map.homotopy.extend_apply_zero - def continuous_map.homotopy.refl - def continuous_map.homotopy.symm - theorem continuous_map.homotopy.symm_apply - theorem continuous_map.homotopy.symm_symm - theorem continuous_map.homotopy.symm_trans - theorem continuous_map.homotopy.to_continuous_map_apply - def continuous_map.homotopy.trans - theorem continuous_map.homotopy.trans_apply - structure continuous_map.homotopy Added src/topology/homotopy/basic.lean + theorem continuous_map.homotopy.apply_one + theorem continuous_map.homotopy.apply_zero + theorem continuous_map.homotopy.coe_fn_injective + theorem continuous_map.homotopy.coe_to_continuous_map + theorem continuous_map.homotopy.congr_arg + theorem continuous_map.homotopy.congr_fun + def continuous_map.homotopy.curry + theorem continuous_map.homotopy.curry_apply + theorem continuous_map.homotopy.ext + def continuous_map.homotopy.extend + theorem continuous_map.homotopy.extend_apply_coe + theorem continuous_map.homotopy.extend_apply_of_le_zero + theorem continuous_map.homotopy.extend_apply_of_mem_I + theorem continuous_map.homotopy.extend_apply_of_one_le + def continuous_map.homotopy.refl + def continuous_map.homotopy.simps.apply + def continuous_map.homotopy.symm + theorem continuous_map.homotopy.symm_symm + theorem continuous_map.homotopy.symm_trans + def continuous_map.homotopy.trans + theorem continuous_map.homotopy.trans_apply + structure continuous_map.homotopy + theorem continuous_map.homotopy_rel.eq_fst + theorem continuous_map.homotopy_rel.eq_snd + theorem continuous_map.homotopy_rel.fst_eq_snd + def continuous_map.homotopy_rel.refl + def continuous_map.homotopy_rel.symm + theorem continuous_map.homotopy_rel.symm_symm + theorem continuous_map.homotopy_rel.symm_trans + def continuous_map.homotopy_rel.trans + theorem continuous_map.homotopy_rel.trans_apply + def continuous_map.homotopy_rel + theorem continuous_map.homotopy_with.apply_one + theorem continuous_map.homotopy_with.apply_zero + theorem continuous_map.homotopy_with.coe_fn_injective + theorem continuous_map.homotopy_with.coe_to_continuous_map + theorem continuous_map.homotopy_with.coe_to_homotopy + theorem continuous_map.homotopy_with.ext + theorem continuous_map.homotopy_with.extend_prop + theorem continuous_map.homotopy_with.prop + def continuous_map.homotopy_with.refl + def continuous_map.homotopy_with.simps.apply + def continuous_map.homotopy_with.symm + theorem continuous_map.homotopy_with.symm_symm + theorem continuous_map.homotopy_with.symm_trans + def continuous_map.homotopy_with.trans + theorem continuous_map.homotopy_with.trans_apply + structure continuous_map.homotopy_with 2021-10-04 14:16:41 f6c77be fix(ci): always use python3 executable (#9531) On many (particularly older) systems, the `python` command can refer to `python2` instead of `python3`. Therefore we change all `python` calls to `python3` to prevent failures on some self-hosted runners. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml 2021-10-04 14:16:40 a07d1de feat(data/fin/interval): Finite intervals in `fin n` (#9523) ESTIMATED CHANGES Added src/data/fin/interval.lean + theorem fin.Icc_eq_finset_subtype + theorem fin.Ioc_eq_finset_subtype + theorem fin.Ioo_eq_finset_subtype + theorem fin.card_Icc + theorem fin.card_Ioc + theorem fin.card_Ioo + theorem fin.card_fintype_Icc + theorem fin.card_fintype_Ioc + theorem fin.card_fintype_Ioo + theorem fin.map_subtype_embedding_Icc + theorem fin.map_subtype_embedding_Ioc + theorem fin.map_subtype_embedding_Ioo 2021-10-04 13:23:23 15d987a feat(probability_theory/notation): add notations for expected value, conditional expectation (#9469) When working in probability theory, the measure on the space is most often implicit. With our current notations for measure spaces, that means writing `volume` in a lot of places. To avoid that and introduce notations closer to the usual practice, this PR defines - `𝔼[X]` for the expected value (integral) of a function `X` over the volume measure, - `P[X]` for the expected value over the measure `P`, - `𝔼[X | hm]` for the conditional expectation with respect to the volume, - `X =ₐₛ Y` for `X =ᵐ[volume] Y` and similarly for `X ≤ᵐ[volume] Y`, - `∂P/∂Q` for `P.rn_deriv Q` All notations are localized to the `probability_theory` namespace. ESTIMATED CHANGES Added src/probability_theory/notation.lean 2021-10-04 09:48:18 ab7d251 feat(measure_theory/covering/besicovitch_vector_space): vector spaces satisfy the assumption of Besicovitch covering theorem (#9461) The Besicovitch covering theorem works in any metric space subject to a technical condition: there should be no satellite configuration of `N+1` points, for some `N`. We prove that this condition is satisfied in finite-dimensional real vector spaces. Moreover, we get the optimal bound for `N`: it coincides with the maximal number of `1`-separated points that fit in a ball of radius `2`, by [Füredi and Loeb, On the best constant for the Besicovitch covering theorem][furedi-loeb1994] ESTIMATED CHANGES Added src/measure_theory/covering/besicovitch_vector_space.lean + theorem besicovitch.card_le_multiplicity + theorem besicovitch.card_le_multiplicity_of_δ + theorem besicovitch.card_le_of_separated + theorem besicovitch.exists_good_δ + def besicovitch.good_δ + theorem besicovitch.good_δ_lt_one + def besicovitch.good_τ + theorem besicovitch.is_empty_satellite_config_multiplicity + theorem besicovitch.le_multiplicity_of_δ_of_fin + def besicovitch.multiplicity + theorem besicovitch.multiplicity_le + theorem besicovitch.one_lt_good_τ + def besicovitch.satellite_config.center_and_rescale + theorem besicovitch.satellite_config.center_and_rescale_center + theorem besicovitch.satellite_config.center_and_rescale_radius + theorem besicovitch.satellite_config.exists_normalized + theorem besicovitch.satellite_config.exists_normalized_aux1 + theorem besicovitch.satellite_config.exists_normalized_aux2 + theorem besicovitch.satellite_config.exists_normalized_aux3 2021-10-04 09:48:17 b6f94a9 feat(analysis/special_functions): real derivs of `complex.exp` and `complex.log` (#9422) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.restrict_scalars_one_smul_right' + theorem complex.restrict_scalars_one_smul_right Modified src/analysis/complex/real_deriv.lean + theorem has_deriv_at.complex_to_real_fderiv' + theorem has_deriv_at.complex_to_real_fderiv + theorem has_deriv_within_at.complex_to_real_fderiv' + theorem has_deriv_within_at.complex_to_real_fderiv + theorem has_strict_deriv_at.complex_to_real_fderiv' + theorem has_strict_deriv_at.complex_to_real_fderiv Modified src/analysis/special_functions/complex/log.lean + theorem complex.has_strict_fderiv_at_log_real + theorem has_deriv_at.clog_real + theorem has_deriv_within_at.clog_real + theorem has_strict_deriv_at.clog_real Modified src/analysis/special_functions/exp_log.lean + theorem complex.has_strict_fderiv_at_exp_real + theorem has_deriv_at.cexp_real + theorem has_deriv_within_at.cexp_real + theorem has_strict_deriv_at.cexp_real 2021-10-04 09:48:16 1faf964 feat(ring_theory/algebraic_independent): Existence of transcendence bases and rings are algebraic over transcendence basis (#9377) ESTIMATED CHANGES Modified src/ring_theory/algebraic_independent.lean + theorem algebraic_independent.aeval_comp_mv_polynomial_option_equiv_polynomial_adjoin + theorem algebraic_independent.algebra_map_aeval_equiv + def algebraic_independent.mv_polynomial_option_equiv_polynomial_adjoin + theorem algebraic_independent.option_iff + theorem exists_is_transcendence_basis + theorem is_transcendence_basis.is_algebraic 2021-10-04 09:48:14 8a05dca feat(order/jordan_holder): Jordan Hölder theorem (#8976) The Jordan Hoelder theorem proved for a Jordan Hölder lattice, instances of which include submodules of a module and subgroups of a group. ESTIMATED CHANGES Added src/order/jordan_holder.lean + def composition_series.append + theorem composition_series.append_cast_add + theorem composition_series.append_cast_add_aux + theorem composition_series.append_nat_add + theorem composition_series.append_nat_add_aux + theorem composition_series.append_succ_cast_add + theorem composition_series.append_succ_cast_add_aux + theorem composition_series.append_succ_nat_add + theorem composition_series.append_succ_nat_add_aux + def composition_series.bot + theorem composition_series.bot_erase_top + theorem composition_series.bot_le + theorem composition_series.bot_le_of_mem + theorem composition_series.bot_mem + theorem composition_series.bot_snoc + theorem composition_series.chain'_to_list + theorem composition_series.coe_fn_mk + theorem composition_series.eq_of_bot_eq_bot_of_top_eq_top_of_length_eq_zero + theorem composition_series.eq_snoc_erase_top + theorem composition_series.equivalent.append + theorem composition_series.equivalent.length_eq + theorem composition_series.equivalent.refl + theorem composition_series.equivalent.snoc_snoc_swap + theorem composition_series.equivalent.symm + theorem composition_series.equivalent.trans + def composition_series.equivalent + def composition_series.erase_top + theorem composition_series.erase_top_top_le + theorem composition_series.exists_top_eq_snoc_equivalant + theorem composition_series.ext + theorem composition_series.ext_fun + theorem composition_series.forall_mem_eq_of_length_eq_zero + theorem composition_series.is_maximal_erase_top_top + theorem composition_series.jordan_holder + theorem composition_series.le_top + theorem composition_series.le_top_of_mem + theorem composition_series.length_eq_zero_of_bot_eq_bot_of_top_eq_top_of_length_eq_zero + theorem composition_series.length_of_list + theorem composition_series.length_pos_of_bot_eq_bot_of_top_eq_top_of_length_pos + theorem composition_series.length_pos_of_mem_ne + theorem composition_series.length_to_list + theorem composition_series.lt_succ + theorem composition_series.lt_top_of_mem_erase_top + theorem composition_series.mem_def + theorem composition_series.mem_erase_top + theorem composition_series.mem_erase_top_of_ne_of_mem + theorem composition_series.mem_snoc + theorem composition_series.mem_to_list + def composition_series.of_list + theorem composition_series.of_list_to_list' + theorem composition_series.of_list_to_list + def composition_series.snoc + theorem composition_series.snoc_cast_succ + theorem composition_series.snoc_erase_top_top + theorem composition_series.snoc_last + theorem composition_series.step + def composition_series.to_list + theorem composition_series.to_list_injective + theorem composition_series.to_list_ne_nil + theorem composition_series.to_list_nodup + theorem composition_series.to_list_of_list + theorem composition_series.to_list_sorted + def composition_series.top + theorem composition_series.top_erase_top + theorem composition_series.top_mem + theorem composition_series.top_snoc + theorem composition_series.total + structure composition_series + theorem jordan_holder_lattice.is_maximal.iso_refl + theorem jordan_holder_lattice.is_maximal_inf_right_of_is_maximal_sup + theorem jordan_holder_lattice.is_maximal_of_eq_inf + theorem jordan_holder_lattice.second_iso_of_eq 2021-10-04 09:48:13 abe81bc feat(linear_algebra/matrix/general_linear_group): GL(n, R) (#8466) added this file which contains definition of the general linear group as well as the subgroup of matrices with positive determinant. ESTIMATED CHANGES Added src/linear_algebra/general_linear_group.lean + def matrix.GL_pos + theorem matrix.GL_pos_coe_neg + theorem matrix.GL_pos_neg_elt + theorem matrix.general_linear_group.coe_fn_eq_coe + theorem matrix.general_linear_group.coe_inv + theorem matrix.general_linear_group.coe_mul + theorem matrix.general_linear_group.coe_one + def matrix.general_linear_group.det + theorem matrix.general_linear_group.ext + theorem matrix.general_linear_group.ext_iff + def matrix.general_linear_group.mk' + def matrix.general_linear_group.to_lin + def matrix.general_linear_group + theorem matrix.mem_GL_pos + theorem matrix.special_linear_group.coe_eq_to_GL_pos + def matrix.special_linear_group.to_GL_pos + theorem matrix.special_linear_group.to_GL_pos_injective Modified src/ring_theory/subring.lean + theorem units.mem_pos_subgroup + def units.pos_subgroup Modified src/ring_theory/subsemiring.lean + theorem mem_pos_monoid + def pos_submonoid 2021-10-04 08:10:26 edb22fe feat(topology/algebra): nonarchimedean filter bases (#9511) This is preparatory material for adic topology. It is a modernized version of code from the perfectoid spaces project. ESTIMATED CHANGES Added src/topology/algebra/nonarchimedean/bases.lean + def ring_filter_basis.module_filter_basis + structure ring_filter_basis.submodules_basis + theorem ring_filter_basis.submodules_basis_is_basis + theorem ring_subgroups_basis.has_basis_nhds + theorem ring_subgroups_basis.has_basis_nhds_zero + theorem ring_subgroups_basis.mem_add_group_filter_basis + theorem ring_subgroups_basis.mem_add_group_filter_basis_iff + theorem ring_subgroups_basis.nonarchimedean + theorem ring_subgroups_basis.of_comm + def ring_subgroups_basis.open_add_subgroup + def ring_subgroups_basis.to_ring_filter_basis + def ring_subgroups_basis.topology + structure ring_subgroups_basis + theorem submodules_basis.nonarchimedean + def submodules_basis.open_add_subgroup + def submodules_basis.to_module_filter_basis + def submodules_basis.topology + structure submodules_basis + theorem submodules_ring_basis.to_ring_subgroups_basis + theorem submodules_ring_basis.to_submodules_basis + def submodules_ring_basis.topology + structure submodules_ring_basis 2021-10-04 08:10:24 6bd6afa feat(data/nat/interval): finite intervals of naturals (#9507) This proves that `ℕ` is a `locally_finite_order`. ESTIMATED CHANGES Modified src/data/list/erase_dup.lean Added src/data/nat/interval.lean + theorem nat.Icc_eq_range' + theorem nat.Icc_succ_left + theorem nat.Ioc_eq_range' + theorem nat.Ioo_eq_range' + theorem nat.card_Icc + theorem nat.card_Ioc + theorem nat.card_Ioo + theorem nat.card_fintype_Icc + theorem nat.card_fintype_Ioc + theorem nat.card_fintype_Ioo 2021-10-04 08:10:23 dc1b045 feat(linear_algebra/free_module/strong_rank_condition): add `comm_ring_strong_rank_condition` (#9486) We add `comm_ring_strong_rank_condition`: any commutative ring satisfies the strong rank condition. Because of a circular import, this can't be in `linear_algebra.invariant_basis_number`. ESTIMATED CHANGES Modified src/linear_algebra/charpoly/basic.lean - theorem linear_map.charpoly_coeff_zero_of_injective + theorem linear_map.minpoly_coeff_zero_of_injective Added src/linear_algebra/free_module/strong_rank_condition.lean Modified src/linear_algebra/invariant_basis_number.lean 2021-10-04 08:10:22 6a6b4d0 feat(category_theory/sites/*): Cover-lifting functors on sites (#9431) This PR defines cover-liftings functors between sites, and proves that `Ran F.op` maps sheaves to sheaves for cover-lifting functors `F`. This will probably be needed when we want to glue B-sheaves into sheaves. ESTIMATED CHANGES Added src/category_theory/sites/cover_lifting.lean + def category_theory.Ran_is_sheaf_of_cover_lifting.get_section + theorem category_theory.Ran_is_sheaf_of_cover_lifting.get_section_commute + theorem category_theory.Ran_is_sheaf_of_cover_lifting.get_section_is_amalgamation + theorem category_theory.Ran_is_sheaf_of_cover_lifting.get_section_is_unique + def category_theory.Ran_is_sheaf_of_cover_lifting.glued_limit_cone + theorem category_theory.Ran_is_sheaf_of_cover_lifting.glued_limit_cone_π_app + def category_theory.Ran_is_sheaf_of_cover_lifting.glued_section + theorem category_theory.Ran_is_sheaf_of_cover_lifting.glued_section_is_amalgamation + theorem category_theory.Ran_is_sheaf_of_cover_lifting.glued_section_is_unique + theorem category_theory.Ran_is_sheaf_of_cover_lifting.helper + def category_theory.Ran_is_sheaf_of_cover_lifting.pulledback_family + theorem category_theory.Ran_is_sheaf_of_cover_lifting.pulledback_family_apply + theorem category_theory.Ran_is_sheaf_of_cover_lifting + def category_theory.comp_cover_lifting + structure category_theory.cover_lifting + def category_theory.id_cover_lifting Modified src/category_theory/sites/sheaf_of_types.lean +/- def category_theory.SheafOfTypes + def category_theory.presieve.family_of_elements.comp_presheaf_map + theorem category_theory.presieve.family_of_elements.compatible.comp_presheaf_map + theorem category_theory.presieve.family_of_elements.compatible.functor_pullback + theorem category_theory.presieve.family_of_elements.compatible.pullback + def category_theory.presieve.family_of_elements.functor_pullback + def category_theory.presieve.family_of_elements.pullback Modified src/category_theory/sites/sieves.lean + def category_theory.presieve.functor_pullback + theorem category_theory.presieve.functor_pullback_id + theorem category_theory.presieve.functor_pullback_mem +/- def category_theory.sieve.functor + def category_theory.sieve.functor_pullback + theorem category_theory.sieve.functor_pullback_id +/- structure category_theory.sieve Modified src/category_theory/structured_arrow.lean + def category_theory.structured_arrow.hom_mk' 2021-10-04 05:54:42 d677c29 feat(field_theory/algebraic_closure): versions of exists_aeval_eq_zero for rings (#9517) ESTIMATED CHANGES Modified src/field_theory/is_alg_closed/basic.lean + theorem is_alg_closed.exists_aeval_eq_zero_of_injective + theorem is_alg_closed.exists_eval₂_eq_zero_of_injective 2021-10-03 20:33:50 52495a0 chore(data/set/lattice): fix name (#9520) `comp` is for composition, `compl` for complement. Fix names using `comp` instead of `compl`. ESTIMATED CHANGES Modified src/data/set/lattice.lean - theorem set.Inter_eq_comp_Union_comp + theorem set.Inter_eq_compl_Union_compl - theorem set.Union_eq_comp_Inter_comp + theorem set.Union_eq_compl_Inter_compl - theorem set.sInter_eq_comp_sUnion_compl + theorem set.sInter_eq_compl_sUnion_compl 2021-10-03 20:33:49 465508f split(order/monotone): split off `order.basic` (#9518) ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean Modified src/order/basic.lean - theorem antitone.comp_monotone - theorem antitone.comp_monotone_on - theorem antitone.ne_of_lt_of_lt_int - theorem antitone.ne_of_lt_of_lt_nat - theorem antitone.reflect_lt - theorem antitone.strict_anti_iff_injective - theorem antitone.strict_anti_of_injective - def antitone - theorem antitone_app - theorem antitone_const - theorem antitone_lam - theorem antitone_nat_of_succ_le - def antitone_on - theorem antitone_on_univ - theorem forall_ge_le_of_forall_le_succ - theorem function.monotone_eval - theorem injective_of_le_imp_le - theorem injective_of_lt_imp_ne - theorem monotone.comp_antitone - theorem monotone.comp_antitone_on - theorem monotone.comp_le_comp_left - theorem monotone.ne_of_lt_of_lt_int - theorem monotone.ne_of_lt_of_lt_nat - theorem monotone.reflect_lt - theorem monotone.strict_mono_iff_injective - theorem monotone.strict_mono_of_injective - def monotone - theorem monotone_app - theorem monotone_const - theorem monotone_fst - theorem monotone_id - theorem monotone_lam - theorem monotone_nat_of_le_succ - def monotone_on - theorem monotone_on_univ - theorem monotone_snd - theorem strict_anti.comp_strict_mono - theorem strict_anti.comp_strict_mono_on - theorem strict_anti.injective - theorem strict_anti.le_iff_le - theorem strict_anti.lt_iff_lt - theorem strict_anti.maximal_of_minimal_image - theorem strict_anti.minimal_of_maximal_image - def strict_anti - theorem strict_anti_nat_of_succ_lt - theorem strict_anti_on.le_iff_le - theorem strict_anti_on.lt_iff_lt - def strict_anti_on - theorem strict_anti_on_univ - theorem strict_mono.comp_strict_anti - theorem strict_mono.comp_strict_anti_on - theorem strict_mono.id_le - theorem strict_mono.injective - theorem strict_mono.le_iff_le - theorem strict_mono.lt_iff_lt - theorem strict_mono.maximal_of_maximal_image - theorem strict_mono.minimal_of_minimal_image - def strict_mono - theorem strict_mono_id - theorem strict_mono_nat_of_lt_succ - theorem strict_mono_of_le_iff_le - theorem strict_mono_on.le_iff_le - theorem strict_mono_on.lt_iff_lt - def strict_mono_on - theorem strict_mono_on_univ - theorem subtype.mono_coe - theorem subtype.strict_mono_coe Modified src/order/closure.lean Modified src/order/iterate.lean Modified src/order/lattice.lean Added src/order/monotone.lean + theorem antitone.comp_monotone + theorem antitone.comp_monotone_on + theorem antitone.ne_of_lt_of_lt_int + theorem antitone.ne_of_lt_of_lt_nat + theorem antitone.reflect_lt + theorem antitone.strict_anti_iff_injective + theorem antitone.strict_anti_of_injective + def antitone + theorem antitone_app + theorem antitone_const + theorem antitone_lam + theorem antitone_nat_of_succ_le + def antitone_on + theorem antitone_on_univ + theorem forall_ge_le_of_forall_le_succ + theorem function.monotone_eval + theorem injective_of_le_imp_le + theorem injective_of_lt_imp_ne + theorem monotone.comp_antitone + theorem monotone.comp_antitone_on + theorem monotone.comp_le_comp_left + theorem monotone.ne_of_lt_of_lt_int + theorem monotone.ne_of_lt_of_lt_nat + theorem monotone.reflect_lt + theorem monotone.strict_mono_iff_injective + theorem monotone.strict_mono_of_injective + def monotone + theorem monotone_app + theorem monotone_const + theorem monotone_fst + theorem monotone_id + theorem monotone_lam + theorem monotone_nat_of_le_succ + def monotone_on + theorem monotone_on_univ + theorem monotone_snd + theorem strict_anti.comp_strict_mono + theorem strict_anti.comp_strict_mono_on + theorem strict_anti.injective + theorem strict_anti.le_iff_le + theorem strict_anti.lt_iff_lt + theorem strict_anti.maximal_of_minimal_image + theorem strict_anti.minimal_of_maximal_image + def strict_anti + theorem strict_anti_nat_of_succ_lt + theorem strict_anti_on.le_iff_le + theorem strict_anti_on.lt_iff_lt + def strict_anti_on + theorem strict_anti_on_univ + theorem strict_mono.comp_strict_anti + theorem strict_mono.comp_strict_anti_on + theorem strict_mono.id_le + theorem strict_mono.injective + theorem strict_mono.le_iff_le + theorem strict_mono.lt_iff_lt + theorem strict_mono.maximal_of_maximal_image + theorem strict_mono.minimal_of_minimal_image + def strict_mono + theorem strict_mono_id + theorem strict_mono_nat_of_lt_succ + theorem strict_mono_of_le_iff_le + theorem strict_mono_on.le_iff_le + theorem strict_mono_on.lt_iff_lt + def strict_mono_on + theorem strict_mono_on_univ + theorem subtype.mono_coe + theorem subtype.strict_mono_coe Modified src/order/prime_ideal.lean 2021-10-03 20:33:48 c0f7c56 feat(algebra/order): exists_square_le (#9513) This is a modernized version of code from the perfectoid project. ESTIMATED CHANGES Modified src/algebra/order/monoid_lemmas.lean + theorem exists_square_le 2021-10-03 20:33:47 bc5a081 feat(topology/algebra): Cauchy filters on groups (#9512) This adds a tiny file but putting this lemma in `topology/algebra/filter_basis.lean` would make that file import a lot of uniform spaces theory. This is a modernized version of code from the perfectoid spaces project. ESTIMATED CHANGES Added src/topology/algebra/uniform_filter_basis.lean + theorem add_group_filter_basis.cauchy_iff 2021-10-03 20:33:46 44f4d70 chore(*): use dot-notation for is_conj.symm and is_conj.trans (#9498) renames: * is_conj_refl -> is_conj.refl * is_conj_symm -> is_conj.symm * is_conj_trans -> is_conj.trans ESTIMATED CHANGES Modified src/algebra/group/conj.lean +/- theorem conj_classes.mem_carrier_mk + theorem is_conj.refl + theorem is_conj.symm + theorem is_conj.trans - theorem is_conj_refl - theorem is_conj_symm - theorem is_conj_trans +/- theorem mem_conjugates_of_self Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/subgroup/basic.lean 2021-10-03 20:33:45 c1936c1 feat(order/basic): define `is_top` and `is_bot` (#9493) These predicates allow us to formulate & prove some theorems simultaneously for the cases `[order_top α]` and `[no_top_order α]`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.set_of_eq_eq_singleton' +/- theorem set.set_of_eq_eq_singleton + theorem set.subsingleton_is_bot + theorem set.subsingleton_is_top Modified src/data/set/countable.lean + theorem set.countable_is_bot + theorem set.countable_is_top + theorem set.subsingleton.countable Modified src/data/set/finite.lean + theorem set.finite_is_bot + theorem set.finite_is_top Modified src/order/basic.lean + theorem is_bot.unique + def is_bot + theorem is_top.unique + def is_top + theorem not_is_bot + theorem not_is_top Modified src/order/bounded_lattice.lean + theorem is_bot_iff_eq_bot + theorem is_top_iff_eq_top 2021-10-03 18:50:48 e789ad3 feat(group_theory/subgroup): mk lemmas (#9514) See discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/set_like.20idiom ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.coe_set_mk + theorem submodule.mem_mk - theorem submodule.mk_coe + theorem submodule.mk_le_mk Modified src/field_theory/subfield.lean + theorem subfield.coe_set_mk +/- theorem subfield.mem_mk + theorem subfield.mk_le_mk Modified src/group_theory/subgroup/basic.lean + theorem subgroup.coe_set_mk + theorem subgroup.mem_mk + theorem subgroup.mk_le_mk Modified src/group_theory/submonoid/basic.lean + theorem submonoid.coe_set_mk + theorem submonoid.mem_mk + theorem submonoid.mk_le_mk Modified src/ring_theory/subring.lean + theorem subring.coe_set_mk + theorem subring.mem_mk + theorem subring.mk_le_mk 2021-10-03 15:22:43 d260894 feat(analysis/convex/combination): lemmas connecting convex hull with affine combinations and barycentric coordinates (#9499) ESTIMATED CHANGES Modified src/analysis/convex/combination.lean + theorem affine_combination_mem_convex_hull + theorem convex_hull_affine_basis_eq_nonneg_barycentric + theorem convex_hull_range_eq_exists_affine_combination Modified src/linear_algebra/affine_space/barycentric_coords.lean - theorem barycentric_coord_apply_combination + theorem barycentric_coord_apply_combination_of_mem + theorem barycentric_coord_apply_combination_of_not_mem 2021-10-03 11:42:58 cff9927 refactor(ring_theory/unique_factorization_domain): rename unique_factorization_monoid.factors (#9503) This frees up the name for the non-normalizing version. ESTIMATED CHANGES Modified src/algebra/squarefree.lean - theorem unique_factorization_monoid.squarefree_iff_nodup_factors + theorem unique_factorization_monoid.squarefree_iff_nodup_normalized_factors Modified src/field_theory/splitting_field.lean Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/dedekind_domain.lean - theorem factors_prod_factors_eq_factors + theorem normalized_factors_prod - theorem prod_factors_eq_self + theorem prod_normalized_factors_eq_self +/- theorem sup_eq_prod_inf_factors Modified src/ring_theory/int/basic.lean +/- theorem nat.factors_eq Modified src/ring_theory/unique_factorization_domain.lean - theorem unique_factorization_monoid.dvd_iff_factors_le_factors + theorem unique_factorization_monoid.dvd_iff_normalized_factors_le_normalized_factors - theorem unique_factorization_monoid.dvd_of_mem_factors + theorem unique_factorization_monoid.dvd_of_mem_normalized_factors - theorem unique_factorization_monoid.exists_mem_factors_of_dvd + theorem unique_factorization_monoid.exists_mem_normalized_factors_of_dvd - theorem unique_factorization_monoid.factors_irreducible - theorem unique_factorization_monoid.factors_mul - theorem unique_factorization_monoid.factors_one - theorem unique_factorization_monoid.factors_pow - theorem unique_factorization_monoid.factors_prod - theorem unique_factorization_monoid.factors_zero - theorem unique_factorization_monoid.irreducible_of_factor + theorem unique_factorization_monoid.irreducible_of_normalized_factor - theorem unique_factorization_monoid.le_multiplicity_iff_repeat_le_factors + theorem unique_factorization_monoid.le_multiplicity_iff_repeat_le_normalized_factors - theorem unique_factorization_monoid.multiplicity_eq_count_factors + theorem unique_factorization_monoid.multiplicity_eq_count_normalized_factors - theorem unique_factorization_monoid.normalize_factor + theorem unique_factorization_monoid.normalize_normalized_factor + theorem unique_factorization_monoid.normalized_factors_irreducible + theorem unique_factorization_monoid.normalized_factors_mul + theorem unique_factorization_monoid.normalized_factors_one + theorem unique_factorization_monoid.normalized_factors_pow + theorem unique_factorization_monoid.normalized_factors_prod + theorem unique_factorization_monoid.normalized_factors_zero - theorem unique_factorization_monoid.prime_of_factor + theorem unique_factorization_monoid.prime_of_normalized_factor - theorem unique_factorization_monoid.zero_not_mem_factors + theorem unique_factorization_monoid.zero_not_mem_normalized_factors 2021-10-03 11:42:57 18e7f91 feat(group_theory/quotient_group): if a quotient is trivial then the subgroup is the whole group (#9092) ESTIMATED CHANGES Modified src/data/setoid/basic.lean + theorem quot.subsingleton_iff + theorem quotient.subsingleton_iff + theorem setoid.bot_def + theorem setoid.eq_top_iff + theorem setoid.top_def Modified src/group_theory/quotient_group.lean + theorem quotient_group.subgroup_eq_top_of_subsingleton + theorem quotient_group.subsingleton_quotient_top Modified src/logic/relation.lean + theorem relation.eqv_gen_eq_of_equivalence 2021-10-03 10:10:01 55c30c6 feat(topology/basic): interior of finite intersection is intersection of interiors (#9508) And likewise for finite unions and closures. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem closure_Union_of_fintype + theorem finset.closure_Union + theorem finset.interior_Inter + theorem interior_Inter_of_fintype 2021-10-03 09:15:42 2807d83 feat(analysis/normed_space/add_torsor_bases): barycentric coordinates are continuous (#9515) ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor_bases.lean + theorem continuous_barycentric_coord 2021-10-03 06:55:59 7d83ff1 feat(analysis/special_functions/exp_log): prove continuity of exp without derivatives (#9501) This is a first step towards making the definition of log and rpow independent of derivatives. The final goal is to avoid importing all of calculus in measure_theory/function/lp_space.lean . ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem complex.exp_bound_sq + theorem complex.locally_lipschitz_exp 2021-10-03 01:38:49 5f803fa feat(analysis/convex/function): helper lemmas and general cleanup (#9438) This adds * `convex_iff_pairwise_on_pos` * `convex_on_iff_forall_pos`, `concave_on_iff_forall_pos`, * `convex_on_iff_forall_pos_ne`, `concave_on_iff_forall_pos_ne` * `convex_on.convex_strict_epigraph`, `concave_on.convex_strict_hypograph` generalizes some instance assumptions: * `convex_on.translate_` didn't need `module 𝕜 β` but `has_scalar 𝕜 β`. * some proofs in `analysis.convex.exposed` were vestigially using `ℝ`. and golfs proofs. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex_iff_pairwise_on_pos Modified src/analysis/convex/exposed.lean +/- theorem exposed_points_subset_extreme_points - theorem is_exposed.antisymm - theorem is_exposed.inter - theorem is_exposed.is_closed - theorem is_exposed.is_compact - theorem is_exposed.refl Modified src/analysis/convex/function.lean +/- theorem concave_on.add - theorem concave_on.concave_ge + theorem concave_on.convex_ge + theorem concave_on.convex_strict_hypograph +/- theorem concave_on.subset +/- theorem concave_on.translate_left +/- theorem concave_on.translate_right + theorem concave_on_iff_forall_pos + theorem concave_on_iff_forall_pos_ne +/- theorem convex_on.add + theorem convex_on.convex_strict_epigraph +/- theorem convex_on.subset +/- theorem convex_on.translate_left +/- theorem convex_on.translate_right + theorem convex_on_iff_forall_pos + theorem convex_on_iff_forall_pos_ne +/- theorem neg_convex_on_iff 2021-10-02 23:49:54 7b02277 chore(topology/*): more lemmas about `dense`/`dense_range` (#9492) ESTIMATED CHANGES Modified src/topology/bases.lean + theorem dense.exists_countable_dense_subset Modified src/topology/basic.lean + theorem dense.dense_range_coe + theorem dense.exists_mem_open + theorem dense_range.exists_mem_open Modified src/topology/dense_embedding.lean + theorem dense.dense_embedding_coe + theorem dense_embedding.dense_image +/- def dense_embedding.subtype_emb + theorem dense_inducing.dense_image +/- structure dense_inducing 2021-10-02 17:58:29 c46a04a chore(measure_theory): move, deduplicate (#9489) * move lemmas like `is_compact.measure_lt_top` from `measure_theory.constructions.borel` to `measure_theory.measure.measure_space`; * drop `is_compact.is_finite_measure` etc; * add `measure_Ixx_lt_top`. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean - theorem is_compact.exists_open_superset_measure_lt_top' - theorem is_compact.exists_open_superset_measure_lt_top - theorem is_compact.measure_lt_top - theorem is_compact.measure_lt_top_of_nhds_within - def measure_theory.measure.finite_spanning_sets_in_compact - def measure_theory.measure.finite_spanning_sets_in_open Modified src/measure_theory/measure/measure_space.lean + theorem is_compact.exists_open_superset_measure_lt_top' + theorem is_compact.exists_open_superset_measure_lt_top - theorem is_compact.is_finite_measure - theorem is_compact.is_finite_measure_of_nhds_within + theorem is_compact.measure_lt_top + theorem is_compact.measure_lt_top_of_nhds_within + theorem measure_Icc_lt_top + theorem measure_Ico_lt_top + theorem measure_Ioc_lt_top + theorem measure_Ioo_lt_top + def measure_theory.measure.finite_spanning_sets_in_compact + def measure_theory.measure.finite_spanning_sets_in_open - theorem metric.bounded.is_finite_measure + theorem metric.bounded.measure_lt_top 2021-10-02 17:58:27 a97e86a chore(ring_theory/ideal): some simp attributes (#9487) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.bot_mul +/- theorem ideal.mul_bot +/- theorem ideal.mul_top +/- theorem ideal.top_mul 2021-10-02 16:08:36 e60dc2b docs(measure_theory/integral/lebesgue): Add "Markov's inequality" to the doc string of `mul_meas_ge_le_lintegral` (#9506) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean 2021-10-02 16:08:34 110c740 refactor(linear_algebra/charpoly): split in two files (#9485) We split `linear_algebra/charpoly` in `linear_algebra/charpoly/basic` and `linear_algebra/charpoly/to_matrix`. Currently in `linear_algebra/charpoly/to_matrix` we only prove `linear_map.charpoly_to_matrix f` : `charpoly f` is the characteristic polynomial of the matrix of `f` in any basis. This needs to be in a separate file then the definition of `f.charpoly` since it needs the invariant basis number property for commutative rings and in a future PR I will prove this as a special case of the fact that any commutative ring satisfies the strong rank condition, but the proof of this uses the characteristic polynomial. We plan to add ohter results regarding the characteristic polynomial in the future. ESTIMATED CHANGES Added src/linear_algebra/charpoly/basic.lean + theorem linear_map.aeval_self_charpoly + def linear_map.charpoly + theorem linear_map.charpoly_coeff_zero_of_injective + theorem linear_map.charpoly_def + theorem linear_map.charpoly_monic + theorem linear_map.is_integral + theorem linear_map.minpoly_dvd_charpoly Renamed src/linear_algebra/charpoly.lean to src/linear_algebra/charpoly/to_matrix.lean - theorem linear_map.aeval_self_charpoly - def linear_map.charpoly - theorem linear_map.charpoly_coeff_zero_of_injective - theorem linear_map.charpoly_def - theorem linear_map.charpoly_monic - theorem linear_map.is_integral - theorem linear_map.minpoly_dvd_charpoly Modified src/linear_algebra/eigenspace.lean 2021-10-02 16:08:33 1ceebca refactor(linear_algebra/free_module_pid): move linear_algebra/free_module_pid to linear_algebra/free_module/pid (#9482) We move `linear_algebra/free_module_pid` to `linear_algebra/free_module/pid`. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean Renamed src/linear_algebra/free_module_pid.lean to src/linear_algebra/free_module/pid.lean Modified src/number_theory/class_number/finite.lean 2021-10-02 16:08:31 fa7fdca feat(measure_theory/function/ae_eq_of_integral): two ennreal-valued function are a.e. equal if their integrals agree (#9372) ESTIMATED CHANGES Modified src/measure_theory/function/ae_eq_of_integral.lean + theorem measure_theory.ae_measurable.ae_eq_of_forall_set_lintegral_eq Modified src/order/filter/basic.lean + theorem filter.eventually.lt_top_iff_ne_top + theorem filter.eventually.lt_top_of_ne + theorem filter.eventually.ne_of_lt + theorem filter.eventually.ne_top_of_lt Modified src/topology/instances/ennreal.lean + theorem ennreal.eventually_eq_of_to_real_eventually_eq 2021-10-02 13:51:01 241aad7 feat(data/finset/interval): API for `finset.Ixx` (#9495) This proves basic results about `finset.Ixx` & co. Lemma names (should) match their `set` counterparts. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.coe_eq_singleton Added src/data/finset/interval.lean + theorem finset.Icc_eq_empty_iff + theorem finset.Icc_eq_empty_of_lt + theorem finset.Icc_self + theorem finset.Ioc_eq_empty_iff + theorem finset.Ioc_eq_empty_of_le + theorem finset.Ioc_self + theorem finset.Ioo_eq_empty + theorem finset.Ioo_eq_empty_iff + theorem finset.Ioo_eq_empty_of_le + theorem finset.Ioo_self + theorem finset.image_add_const_Icc + theorem finset.image_add_const_Ioc + theorem finset.image_add_const_Ioo + theorem finset.nonempty_Icc + theorem finset.nonempty_Ioc + theorem finset.nonempty_Ioo 2021-10-02 12:12:09 f3746ea chore(src/analysis/special_functions/trigonometric/basic) : prove continuity of sin/cos/sinh/cosh without derivatives (#9502) In a future PR, I want to split all files in the special_functions folder to avoid importing calculus when not needed (the goal is to avoid importing it in the definition of lp_space in measure_theory). This PR changes the proofs of continuity of trigonometric functions. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/basic.lean +/- theorem complex.continuous_cos +/- theorem complex.continuous_cosh +/- theorem complex.continuous_sin +/- theorem complex.continuous_sinh +/- theorem real.continuous_cos +/- theorem real.continuous_cosh +/- theorem real.continuous_sin +/- theorem real.continuous_sinh 2021-10-02 09:30:39 e26a9e5 feat(measure_theory/covering/besicovitch): the Besicovitch covering theorem (#9462) The Besicovitch covering theorem: in a nice metric space (e.g. real vector spaces), from any family of balls one can extract `N` subfamilies made of disjoint balls, covering all the centers of the balls in the family. The number `N` only depends on the metric space. ESTIMATED CHANGES Modified docs/references.bib Added src/measure_theory/covering/besicovitch.lean + structure besicovitch.ball_package + theorem besicovitch.exist_disjoint_covering_families + theorem besicovitch.satellite_config.hlast' + theorem besicovitch.satellite_config.inter' + structure besicovitch.satellite_config + def besicovitch.tau_package.R + def besicovitch.tau_package.Union_up_to + theorem besicovitch.tau_package.color_lt + def besicovitch.tau_package.last_step + theorem besicovitch.tau_package.last_step_nonempty + theorem besicovitch.tau_package.mem_Union_up_to_last_step + theorem besicovitch.tau_package.monotone_Union_up_to + structure besicovitch.tau_package + def besicovitch.unit_ball_package 2021-10-02 09:30:37 9e54ad0 feat(ring_theory/algebraic_independent): algebraic independence (#9229) ESTIMATED CHANGES Added src/ring_theory/algebraic_independent.lean + theorem alg_hom.algebraic_independent_iff + theorem algebraic_independent.aeval_comp_repr + def algebraic_independent.aeval_equiv + theorem algebraic_independent.aeval_repr + theorem algebraic_independent.algebra_map_injective + theorem algebraic_independent.coe_range + theorem algebraic_independent.comp + theorem algebraic_independent.eq_zero_of_aeval_eq_zero + theorem algebraic_independent.image + theorem algebraic_independent.image_of_comp + theorem algebraic_independent.is_transcendence_basis_iff + theorem algebraic_independent.linear_independent + theorem algebraic_independent.map' + theorem algebraic_independent.map + theorem algebraic_independent.mono + theorem algebraic_independent.ne_zero + theorem algebraic_independent.of_comp + def algebraic_independent.repr + theorem algebraic_independent.repr_ker + theorem algebraic_independent.restrict_of_comp_subtype + theorem algebraic_independent.restrict_scalars + theorem algebraic_independent.to_subtype_range' + theorem algebraic_independent.to_subtype_range + def algebraic_independent + theorem algebraic_independent_Union_of_directed + theorem algebraic_independent_adjoin + theorem algebraic_independent_bounded_of_finset_algebraic_independent_bounded + theorem algebraic_independent_comp_subtype + theorem algebraic_independent_empty + theorem algebraic_independent_empty_iff + theorem algebraic_independent_empty_type + theorem algebraic_independent_empty_type_iff + theorem algebraic_independent_equiv' + theorem algebraic_independent_equiv + theorem algebraic_independent_finset_map_embedding_subtype + theorem algebraic_independent_iff + theorem algebraic_independent_iff_injective_aeval + theorem algebraic_independent_iff_ker_eq_bot + theorem algebraic_independent_image + theorem algebraic_independent_of_finite + theorem algebraic_independent_of_subsingleton + theorem algebraic_independent_sUnion_of_directed + theorem algebraic_independent_subtype + theorem algebraic_independent_subtype_range + theorem exists_maximal_algebraic_independent + def is_transcendence_basis 2021-10-02 07:33:19 709b449 chore(algebra/star/basic): provide automorphisms in commutative rings (#9483) This adds `star_mul_aut` and `star_ring_aut`, which are the versions of `star_mul_equiv` and `star_ring_equiv` which avoid needing `opposite` due to commutativity. ESTIMATED CHANGES Modified src/algebra/star/basic.lean + def star_mul_aut + def star_ring_aut 2021-10-02 07:33:18 fc7f9f3 feat(algebra/algebra): the range of `algebra_map (S : subalgebra R A) A` (#9450) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.id.map_eq_id +/- theorem algebra.id.map_eq_self Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.algebra_map_eq + theorem subalgebra.range_algebra_map + theorem subalgebra.srange_algebra_map + theorem subalgebra.to_subring_subtype + theorem subalgebra.to_subsemiring_subtype 2021-10-02 07:33:17 a59876f feat(ring_theory): quotients of a noetherian ring are noetherian (#9449) ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean - theorem is_noetherian_of_quotient_of_noetherian 2021-10-02 04:58:50 37f43bf feat(linear_algebra/affine_space/barycentric_coords): define barycentric coordinates (#9472) ESTIMATED CHANGES Added src/linear_algebra/affine_space/barycentric_coords.lean + theorem barycentric_coord_apply + theorem barycentric_coord_apply_combination + theorem barycentric_coord_apply_eq + theorem barycentric_coord_apply_neq + theorem basis_of_aff_ind_span_eq_top_apply Modified src/linear_algebra/affine_space/basic.lean Modified src/linear_algebra/basis.lean + theorem basis.coe_sum_coords + theorem basis.coe_sum_coords_eq_finsum + theorem basis.coe_sum_coords_of_fintype +/- def basis.coord + theorem basis.sum_coords_self_apply 2021-10-01 23:08:54 06b184f refactor(analysis/convex/caratheodory): generalize ℝ to an arbitrary linearly ordered field (#9479) As a result; `convex_independent_iff_finset` also gets generalized. ESTIMATED CHANGES Modified src/analysis/convex/caratheodory.lean +/- theorem eq_pos_convex_span_of_mem_convex_hull Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/independent.lean +/- theorem convex_independent_iff_finset 2021-10-01 20:36:04 118d45a doc(ring_theory/subring): fix docstring of `subring.center` (#9494) ESTIMATED CHANGES Modified src/ring_theory/subring.lean 2021-10-01 20:36:02 e6f8ad7 refactor(analysis/convex/cone): generalize ℝ to an ordered semiring (#9481) Currently, `convex_cone` is only defined in ℝ-modules. This generalizes ℝ to an arbitray ordered semiring. `convex_cone E` is now spelt `convex_cone 𝕜 E`. Similarly, `positive_cone E` becomes `positive_cone 𝕜 E`. ESTIMATED CHANGES Modified src/analysis/convex/cone.lean +/- theorem convex.mem_to_cone' +/- theorem convex.mem_to_cone +/- def convex.to_cone +/- theorem convex.to_cone_eq_Inf +/- theorem convex.to_cone_is_least + theorem convex_cone.blunt.salient +/- def convex_cone.blunt + theorem convex_cone.blunt_iff_not_pointed +/- theorem convex_cone.coe_inf +/- def convex_cone.comap +/- theorem convex_cone.comap_comap +/- theorem convex_cone.comap_id - theorem convex_cone.convex +/- theorem convex_cone.ext' +/- theorem convex_cone.ext + theorem convex_cone.flat.pointed +/- def convex_cone.flat +/- def convex_cone.map +/- theorem convex_cone.map_id +/- theorem convex_cone.map_map +/- theorem convex_cone.mem_Inf +/- theorem convex_cone.mem_bot +/- theorem convex_cone.mem_comap +/- theorem convex_cone.mem_mk +/- theorem convex_cone.mem_top +/- def convex_cone.pointed +/- theorem convex_cone.pointed_iff_not_blunt - theorem convex_cone.pointed_of_positive_cone + theorem convex_cone.pointed_positive_cone +/- def convex_cone.positive_cone +/- def convex_cone.salient +/- theorem convex_cone.salient_iff_not_flat - theorem convex_cone.salient_of_blunt - theorem convex_cone.salient_of_positive_cone + theorem convex_cone.salient_positive_cone +/- theorem convex_cone.smul_mem +/- theorem convex_cone.smul_mem_iff +/- def convex_cone.to_ordered_add_comm_group +/- theorem convex_cone.to_ordered_smul +/- def convex_cone.to_partial_order +/- def convex_cone.to_preorder +/- structure convex_cone +/- theorem riesz_extension 2021-10-01 20:36:00 05ee42c feat(order/circular): define circular orders (#9413) A circular order is the way to formalize positions on a circle. This is very foundational, as a good lot of the order-algebra-topology hierarchy has a circular analog. ESTIMATED CHANGES Added src/order/circular.lean + theorem btw_cyclic + theorem btw_cyclic_right + theorem btw_iff_not_sbtw + theorem btw_of_sbtw + theorem btw_refl_left + theorem btw_refl_left_right + theorem btw_refl_right + theorem btw_rfl + theorem btw_rfl_left + theorem btw_rfl_left_right + theorem btw_rfl_right + theorem has_btw.btw.antisymm + theorem has_btw.btw.cyclic_left + def has_le.to_has_btw + def has_lt.to_has_sbtw + theorem has_sbtw.sbtw.trans_left + def linear_order.to_circular_order + theorem not_btw_of_sbtw + theorem not_sbtw_of_btw + def partial_order.to_circular_partial_order + def preorder.to_circular_preorder + theorem sbtw_asymm + theorem sbtw_cyclic + theorem sbtw_cyclic_left + theorem sbtw_cyclic_right + theorem sbtw_iff_btw_not_btw + theorem sbtw_iff_not_btw + theorem sbtw_irrefl + theorem sbtw_irrefl_left + theorem sbtw_irrefl_left_right + theorem sbtw_irrefl_right + theorem sbtw_of_btw_not_btw + theorem sbtw_trans_right + def set.cIcc + def set.cIoo + theorem set.compl_cIcc + theorem set.compl_cIoo + theorem set.left_mem_cIcc + theorem set.mem_cIcc + theorem set.mem_cIoo + theorem set.right_mem_cIcc 2021-10-01 20:35:59 5c92eb0 feat(measure_theory/function/conditional_expectation): conditional expectation on real functions equal Radon-Nikodym derivative (#9378) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.rn_deriv_ae_eq_condexp Modified src/measure_theory/measure/with_density_vector_measure.lean + theorem measure_theory.integrable.with_densityᵥ_trim_absolutely_continuous + theorem measure_theory.integrable.with_densityᵥ_trim_eq_integral 2021-10-01 20:35:58 75d022b feat(probability_theory/density): define probability density functions (#9323) This PR also proves some elementary properties about probability density function such as the law of the unconscious statistician. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.set_lintegral_lt_top_of_bdd_above + theorem measure_theory.set_lintegral_lt_top_of_is_compact + theorem measure_theory.set_lintegral_mono + theorem measure_theory.set_lintegral_mono_ae + theorem measure_theory.with_density_eq_zero Added src/probability_theory/density.lean + theorem measure_theory.has_pdf.measurable + theorem measure_theory.map_eq_set_lintegral_pdf + theorem measure_theory.map_eq_with_density_pdf + theorem measure_theory.measurable_of_pdf_ne_zero + theorem measure_theory.measurable_pdf + theorem measure_theory.pdf.ae_lt_top + theorem measure_theory.pdf.has_finite_integral_mul + theorem measure_theory.pdf.has_pdf_iff + theorem measure_theory.pdf.has_pdf_iff_of_measurable + theorem measure_theory.pdf.have_lebesgue_decomposition_of_has_pdf + theorem measure_theory.pdf.integrable_iff_integrable_mul_pdf + theorem measure_theory.pdf.integral_fun_mul_eq_integral + theorem measure_theory.pdf.integral_mul_eq_integral + theorem measure_theory.pdf.lintegral_eq_measure_univ + theorem measure_theory.pdf.map_absolutely_continuous + theorem measure_theory.pdf.of_real_to_real_ae_eq + theorem measure_theory.pdf.quasi_measure_preserving_has_pdf' + theorem measure_theory.pdf.quasi_measure_preserving_has_pdf + theorem measure_theory.pdf.real.has_pdf_iff + theorem measure_theory.pdf.real.has_pdf_iff_of_measurable + theorem measure_theory.pdf.to_quasi_measure_preserving + def measure_theory.pdf + theorem measure_theory.pdf_eq_zero_of_not_measurable + theorem measure_theory.pdf_undef 2021-10-01 18:34:46 6354fe9 feat(topology/algebra): discrete group criterion (#9488) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem discrete_topology_iff_open_singleton_one 2021-10-01 18:34:45 a5fc0a3 feat(topology/algebra): filters bases for algebra (#9480) This is modernized version of code from the perfectoid spaces project. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.mem_smul_of_mem Modified src/order/filter/bases.lean Added src/topology/algebra/filter_basis.lean + def group_filter_basis.N + theorem group_filter_basis.N_one + theorem group_filter_basis.conj + theorem group_filter_basis.inv + theorem group_filter_basis.mem_nhds_one + theorem group_filter_basis.mul + theorem group_filter_basis.nhds_eq + theorem group_filter_basis.nhds_has_basis + theorem group_filter_basis.nhds_one_eq + theorem group_filter_basis.nhds_one_has_basis + theorem group_filter_basis.one + theorem group_filter_basis.prod_subset_self + def group_filter_basis.topology + def group_filter_basis_of_comm + def module_filter_basis.of_bases + theorem module_filter_basis.smul + theorem module_filter_basis.smul_left + theorem module_filter_basis.smul_right + def module_filter_basis.topology' + def module_filter_basis.topology + structure module_filter_basis + theorem ring_filter_basis.mul + theorem ring_filter_basis.mul_left + theorem ring_filter_basis.mul_right + def ring_filter_basis.topology Modified src/topology/algebra/ring.lean + theorem topological_ring.of_add_group_of_nhds_zero + theorem topological_ring.of_nhds_zero 2021-10-01 17:21:37 db6d862 split(analysis/convex/basic): split off `analysis.convex.hull` (#9477) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean - theorem affine_map.image_convex_hull - theorem convex.convex_hull_eq - theorem convex.convex_remove_iff_not_mem_convex_hull_remove - theorem convex_convex_hull - def convex_hull - theorem convex_hull_empty - theorem convex_hull_empty_iff - theorem convex_hull_min - theorem convex_hull_mono - theorem convex_hull_nonempty_iff - theorem convex_hull_singleton - theorem is_linear_map.convex_hull_image - theorem is_linear_map.image_convex_hull - theorem linear_map.convex_hull_image - theorem linear_map.image_convex_hull - theorem subset_convex_hull Modified src/analysis/convex/combination.lean Modified src/analysis/convex/cone.lean Modified src/analysis/convex/extreme.lean Added src/analysis/convex/hull.lean + theorem affine_map.image_convex_hull + theorem convex.convex_hull_eq + theorem convex.convex_remove_iff_not_mem_convex_hull_remove + theorem convex_convex_hull + def convex_hull + theorem convex_hull_empty + theorem convex_hull_empty_iff + theorem convex_hull_min + theorem convex_hull_mono + theorem convex_hull_nonempty_iff + theorem convex_hull_singleton + theorem is_linear_map.convex_hull_image + theorem is_linear_map.image_convex_hull + theorem linear_map.convex_hull_image + theorem linear_map.image_convex_hull + theorem subset_convex_hull 2021-10-01 15:54:07 249a015 chore(ring_theory/coprime): split out imports into a new file so that `is_coprime` can be used earlier. (#9403) [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Use.20of.20is_coprime.20in.20rat.2Ebasic/near/254942750) ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean Modified src/number_theory/fermat4.lean Renamed src/ring_theory/coprime.lean to src/ring_theory/coprime/basic.lean - theorem finset.prod_dvd_of_coprime - theorem fintype.prod_dvd_of_coprime - theorem is_coprime.of_prod_left - theorem is_coprime.of_prod_right - theorem is_coprime.pow - theorem is_coprime.pow_iff - theorem is_coprime.pow_left - theorem is_coprime.pow_left_iff - theorem is_coprime.pow_right - theorem is_coprime.pow_right_iff - theorem is_coprime.prod_left - theorem is_coprime.prod_left_iff - theorem is_coprime.prod_right - theorem is_coprime.prod_right_iff - theorem nat.is_coprime_iff_coprime Added src/ring_theory/coprime/lemmas.lean + theorem finset.prod_dvd_of_coprime + theorem fintype.prod_dvd_of_coprime + theorem is_coprime.of_prod_left + theorem is_coprime.of_prod_right + theorem is_coprime.pow + theorem is_coprime.pow_iff + theorem is_coprime.pow_left + theorem is_coprime.pow_left_iff + theorem is_coprime.pow_right + theorem is_coprime.pow_right_iff + theorem is_coprime.prod_left + theorem is_coprime.prod_left_iff + theorem is_coprime.prod_right + theorem is_coprime.prod_right_iff + theorem nat.is_coprime_iff_coprime Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/int/basic.lean 2021-10-01 15:54:06 102ce30 feat(linear_algebra/direct_sum): `submodule_is_internal_iff_independent_and_supr_eq_top` (#9214) This shows that a grade decomposition into submodules is bijective iff and only iff the submodules are independent and span the whole module. The key proofs are: * `complete_lattice.independent_of_dfinsupp_lsum_injective` * `complete_lattice.independent.dfinsupp_lsum_injective` Everything else is just glue. This replaces parts of #8246, and uses what is probably a similar proof strategy, but without unfolding down to finsets. Unlike the proof there, this requires only `add_comm_monoid` for the `complete_lattice.independent_of_dfinsupp_lsum_injective` direction of the proof. I was not able to find a proof of `complete_lattice.independent.dfinsupp_lsum_injective` with the same weak assumptions, as it is not true! A counter-example is included, ESTIMATED CHANGES Added counterexamples/direct_sum_is_internal.lean + theorem mem_with_sign_neg_one + theorem mem_with_sign_one + theorem units_int.one_ne_neg_one + def with_sign.independent + theorem with_sign.is_compl + theorem with_sign.not_injective + theorem with_sign.not_internal + theorem with_sign.supr + def with_sign Modified src/algebra/direct_sum/module.lean + theorem direct_sum.submodule_is_internal.independent + theorem direct_sum.submodule_is_internal_iff_independent_and_supr_eq_top + theorem direct_sum.submodule_is_internal_of_independent_of_supr_eq_top Modified src/linear_algebra/dfinsupp.lean + theorem complete_lattice.independent.dfinsupp_lsum_injective + theorem complete_lattice.independent_iff_dfinsupp_lsum_injective + theorem complete_lattice.independent_iff_forall_dfinsupp + theorem complete_lattice.independent_of_dfinsupp_lsum_injective + theorem dfinsupp.lsum_single 2021-10-01 13:24:12 9be12dd feat(order/locally_finite): introduce locally finite orders (#9464) The new typeclass `locally_finite_order` homogeneizes treatment of intervals as `finset`s and `multiset`s. `finset.Ico` is now available for all locally finite orders (instead of being ℕ-specialized), rendering `finset.Ico_ℤ` and `pnat.Ico` useless. This PR also introduces the long-awaited `finset.Icc`, `finset.Ioc`, `finset.Ioo`, and `finset.Ici`, `finset.Ioi` (for `order_top`s) and `finset.Iic`, `finset.Iio` (for `order_bot`s), and the `multiset` variations thereof. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem and_and_and_comm Added src/order/locally_finite.lean + def finset.Icc + def finset.Ici + theorem finset.Ici_eq_Icc + def finset.Iic + theorem finset.Iic_eq_Icc + def finset.Ioc + def finset.Ioi + theorem finset.Ioi_eq_Ioc + def finset.Ioo + theorem finset.coe_Icc + theorem finset.coe_Ici + theorem finset.coe_Iic + theorem finset.coe_Ioc + theorem finset.coe_Ioi + theorem finset.coe_Ioo + theorem finset.map_subtype_embedding_Icc + theorem finset.map_subtype_embedding_Ioc + theorem finset.map_subtype_embedding_Ioo + theorem finset.mem_Icc + theorem finset.mem_Ici + theorem finset.mem_Iic + theorem finset.mem_Ioc + theorem finset.mem_Ioi + theorem finset.mem_Ioo + theorem finset.subtype_Icc_eq + theorem finset.subtype_Ioc_eq + theorem finset.subtype_Ioo_eq + def locally_finite_order.of_Icc' + def locally_finite_order.of_Icc + def multiset.Icc + def multiset.Ici + def multiset.Iic + def multiset.Ioc + def multiset.Ioi + def multiset.Ioo + theorem multiset.mem_Icc + theorem multiset.mem_Ici + theorem multiset.mem_Iic + theorem multiset.mem_Ioc + theorem multiset.mem_Ioi + theorem multiset.mem_Ioo + theorem set.finite_Icc + theorem set.finite_Ici + theorem set.finite_Iic + theorem set.finite_Ioc + theorem set.finite_Ioi + theorem set.finite_Ioo 2021-10-01 13:24:10 62b8c1f feat(order/basic): Antitone functions (#9119) Define `antitone` and `strict_anti`. Use them where they already were used in expanded form. Rename lemmas accordingly. Provide a few more `order_dual` results, and rename `monotone.order_dual` to `monotone.dual`. Restructure `order.basic`. Now, monotone stuff can easily be singled out to go in a new file `order.monotone` if wanted. It represents 587 out of the 965 lines. ESTIMATED CHANGES Modified src/algebra/order/functions.lean + theorem antitone.map_max + theorem antitone.map_min Modified src/algebra/order/monoid_lemmas.lean +/- theorem monotone.mul_strict_mono' +/- theorem strict_mono.mul' Modified src/analysis/calculus/mean_value.lean +/- theorem antitone_of_deriv_nonpos - theorem concave_on_of_deriv_antitone + theorem concave_on_of_deriv_antitone_on + theorem convex.antitone_on_of_deriv_nonpos - theorem convex.strict_anti_of_deriv_neg + theorem convex.strict_anti_on_of_deriv_neg - theorem convex.strict_mono_of_deriv_pos + theorem convex.strict_mono_on_of_deriv_pos - theorem convex_on_of_deriv_mono + theorem convex_on_of_deriv_monotone_on - theorem convex_on_univ_of_deriv_mono + theorem convex_on_univ_of_deriv_monotone + theorem monotone_of_deriv_nonneg - theorem monotone_on_of_deriv_nonneg Modified src/analysis/special_functions/integrals.lean + theorem integral_sin_pow_antitone Modified src/data/complex/exponential.lean - theorem forall_ge_le_of_forall_le_succ Modified src/data/set/function.lean + theorem strict_anti_on.comp + theorem strict_anti_on.comp_strict_mono_on - theorem strict_mono.comp_strict_mono_on + theorem strict_mono_on.comp_strict_anti_on Modified src/data/set/intervals/surj_on.lean Modified src/data/setoid/basic.lean Modified src/group_theory/nilpotent.lean +/- theorem lower_central_series_antitone Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/integral/integrable_on.lean +/- theorem antitone.integrable_on_compact +/- theorem antitone_on.integrable_on_compact +/- theorem monotone_on.integrable_on_compact Modified src/measure_theory/integral/interval_integral.lean +/- theorem antitone.interval_integrable +/- theorem antitone_on.interval_integrable +/- theorem monotone_on.interval_integrable Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/measure_space.lean Modified src/number_theory/pell.lean + theorem pell.strict_mono_x + theorem pell.strict_mono_y - theorem pell.x_increasing - theorem pell.y_increasing Modified src/order/basic.lean + theorem antitone.comp_monotone + theorem antitone.comp_monotone_on + theorem antitone.ne_of_lt_of_lt_int + theorem antitone.ne_of_lt_of_lt_nat + theorem antitone.reflect_lt + theorem antitone.strict_anti_iff_injective + theorem antitone.strict_anti_of_injective + def antitone + theorem antitone_app + theorem antitone_const + theorem antitone_lam + theorem antitone_nat_of_succ_le + def antitone_on + theorem antitone_on_univ - theorem comp_le_comp_left_of_monotone + theorem forall_ge_le_of_forall_le_succ + theorem monotone.comp_antitone + theorem monotone.comp_antitone_on + theorem monotone.comp_le_comp_left +/- theorem monotone.ne_of_lt_of_lt_int +/- theorem monotone.ne_of_lt_of_lt_nat +/- theorem monotone.reflect_lt +/- theorem monotone.strict_mono_iff_injective +/- theorem monotone.strict_mono_of_injective +/- theorem monotone_app +/- theorem monotone_const +/- theorem monotone_id +/- theorem monotone_lam + def monotone_on + theorem monotone_on_univ + theorem strict_anti.comp_strict_mono + theorem strict_anti.comp_strict_mono_on + theorem strict_anti.injective + theorem strict_anti.le_iff_le + theorem strict_anti.lt_iff_lt + theorem strict_anti.maximal_of_minimal_image + theorem strict_anti.minimal_of_maximal_image + def strict_anti + theorem strict_anti_nat_of_succ_lt +/- theorem strict_anti_on.le_iff_le +/- theorem strict_anti_on.lt_iff_lt +/- def strict_anti_on + theorem strict_anti_on_univ - theorem strict_mono.comp + theorem strict_mono.comp_strict_anti + theorem strict_mono.comp_strict_anti_on +/- theorem strict_mono.id_le +/- theorem strict_mono.injective +/- theorem strict_mono.le_iff_le +/- theorem strict_mono.lt_iff_lt + theorem strict_mono.maximal_of_maximal_image - theorem strict_mono.maximal_preimage_top + theorem strict_mono.minimal_of_minimal_image - theorem strict_mono.minimal_preimage_bot - theorem strict_mono.monotone - theorem strict_mono.order_dual +/- def strict_mono +/- theorem strict_mono_id +/- theorem strict_mono_nat_of_lt_succ +/- theorem strict_mono_on.le_iff_le +/- theorem strict_mono_on.lt_iff_lt +/- def strict_mono_on + theorem strict_mono_on_univ Modified src/order/bounded_lattice.lean - theorem strict_mono.maximal_preimage_top' + theorem strict_mono.maximal_preimage_top - theorem strict_mono.minimal_preimage_bot' + theorem strict_mono.minimal_preimage_bot Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/ennreal.lean Modified src/order/filter/extr.lean Modified src/order/filter/indicator_function.lean Modified src/order/galois_connection.lean Modified src/order/iterate.lean Modified src/order/lattice.lean +/- theorem monotone.forall_le_of_antitone Modified src/order/modular_lattice.lean Modified src/order/ord_continuous.lean Modified src/order/preorder_hom.lean Modified src/testing/slim_check/functions.lean Modified src/topology/algebra/ordered/basic.lean + theorem exists_seq_strict_anti_tendsto' + theorem exists_seq_strict_anti_tendsto - theorem exists_seq_strict_antitone_tendsto' - theorem exists_seq_strict_antitone_tendsto + theorem is_glb.exists_seq_antitone_tendsto' + theorem is_glb.exists_seq_antitone_tendsto - theorem is_glb.exists_seq_monotone_tendsto' - theorem is_glb.exists_seq_monotone_tendsto + theorem is_glb.exists_seq_strict_anti_tendsto_of_not_mem' + theorem is_glb.exists_seq_strict_anti_tendsto_of_not_mem - theorem is_glb.exists_seq_strict_mono_tendsto_of_not_mem' - theorem is_glb.exists_seq_strict_mono_tendsto_of_not_mem +/- theorem tendsto_at_bot_csupr +/- theorem tendsto_at_bot_is_lub +/- theorem tendsto_at_bot_supr +/- theorem tendsto_at_top_cinfi +/- theorem tendsto_at_top_infi +/- theorem tendsto_at_top_is_glb Modified src/topology/local_extr.lean Modified src/topology/semicontinuous.lean 2021-10-01 13:24:08 d6bf2dd refactor(*): replace `abs` with vertical bar notation (#8891) The notion of an "absolute value" occurs both in algebra (e.g. lattice ordered groups) and analysis (e.g. GM and GL-spaces). I introduced a `has_abs` notation class in #9172, along with the conventional mathematical vertical bar notation `|.|` for `abs`. The notation vertical bar notation was already in use in some files as a local notation. This PR replaces `abs` with the vertical bar notation throughout mathlib. ESTIMATED CHANGES Modified archive/imo/imo2006_q3.lean Modified archive/imo/imo2008_q4.lean +/- theorem abs_eq_one_of_pow_eq_one Modified archive/sensitivity.lean Modified counterexamples/phillips.lean Modified src/algebra/archimedean.lean +/- theorem abs_sub_round Modified src/algebra/big_operators/order.lean Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/field_power.lean Modified src/algebra/floor.lean Modified src/algebra/group_power/lemmas.lean +/- theorem abs_pow Modified src/algebra/group_power/order.lean +/- theorem abs_le_abs_of_sq_le_sq +/- theorem abs_le_of_sq_le_sq +/- theorem abs_lt_abs_of_sq_lt_sq +/- theorem abs_lt_of_sq_lt_sq +/- theorem abs_neg_one_pow +/- theorem abs_sq +/- theorem pow_abs +/- theorem sq_abs +/- theorem sq_le_sq +/- theorem sq_lt_sq Modified src/algebra/order/field.lean +/- theorem abs_div +/- theorem abs_inv +/- theorem abs_one_div Modified src/algebra/order/group.lean +/- theorem abs_abs +/- theorem abs_abs_sub_abs_le_abs_sub +/- theorem abs_add +/- theorem abs_add_three +/- theorem abs_by_cases +/- theorem abs_choice +/- theorem abs_eq +/- theorem abs_eq_abs +/- theorem abs_eq_zero +/- theorem abs_le' +/- theorem abs_le +/- theorem abs_le_abs +/- theorem abs_le_max_abs_abs +/- theorem abs_lt +/- theorem abs_max_sub_max_le_abs +/- theorem abs_neg +/- theorem abs_nonneg +/- theorem abs_nonpos_iff +/- theorem abs_of_neg +/- theorem abs_of_nonneg +/- theorem abs_of_nonpos +/- theorem abs_of_pos +/- theorem abs_pos +/- theorem abs_pos_of_neg +/- theorem abs_pos_of_pos +/- theorem abs_sub_abs_le_abs_sub +/- theorem abs_sub_comm +/- theorem abs_sub_le +/- theorem abs_sub_le_iff +/- theorem abs_sub_lt_iff +/- theorem abs_zero +/- theorem eq_of_abs_sub_eq_zero +/- theorem eq_of_abs_sub_nonpos +/- theorem eq_or_eq_neg_of_abs_eq +/- theorem le_abs +/- theorem le_abs_self +/- theorem le_of_abs_le +/- theorem lt_abs +/- theorem lt_of_abs_lt +/- theorem max_sub_min_eq_abs' +/- theorem max_sub_min_eq_abs +/- theorem neg_abs_le_self +/- theorem neg_le_abs_self +/- theorem neg_le_of_abs_le +/- theorem neg_lt_of_abs_lt +/- theorem sub_le_of_abs_sub_le_left +/- theorem sub_le_of_abs_sub_le_right +/- theorem sub_lt_of_abs_sub_lt_left +/- theorem sub_lt_of_abs_sub_lt_right Modified src/algebra/order/ring.lean +/- theorem abs_cases +/- theorem abs_dvd +/- theorem abs_dvd_abs +/- theorem abs_dvd_self +/- theorem abs_eq_iff_mul_self_eq +/- theorem abs_eq_neg_self +/- theorem abs_eq_self +/- theorem abs_le_iff_mul_self_le +/- theorem abs_le_one_iff_mul_self_le_one +/- theorem abs_lt_iff_mul_self_lt +/- theorem abs_mul +/- theorem abs_mul_abs_self +/- theorem abs_mul_self +/- theorem abs_one +/- theorem abs_sub_sq +/- theorem abs_two +/- theorem dvd_abs +/- theorem even_abs +/- theorem self_dvd_abs Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/complex/basic.lean +/- theorem complex.norm_int Modified src/analysis/convex/topology.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/basic.lean +/- theorem abs_norm_eq_norm +/- theorem abs_norm_sub_norm_le +/- theorem int.norm_eq_abs +/- theorem real.norm_eq_abs Modified src/analysis/normed_space/normed_group_hom.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/special_functions/exp_log.lean +/- theorem real.abs_log_sub_add_sum_range_le +/- theorem real.exp_log_eq_abs +/- theorem real.has_sum_pow_div_log_of_abs_lt_1 +/- theorem real.log_abs +/- theorem real.log_of_ne_zero Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/pow.lean +/- theorem real.abs_rpow_le_abs_rpow +/- theorem real.abs_rpow_le_exp_log_mul +/- theorem real.abs_rpow_of_nonneg Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/analysis/specific_limits.lean +/- theorem has_sum_geometric_of_abs_lt_1 +/- theorem is_o_pow_pow_of_abs_lt_left +/- theorem summable_geometric_of_abs_lt_1 +/- theorem tendsto_pow_at_top_nhds_0_of_abs_lt_1 +/- theorem tendsto_pow_const_mul_const_pow_of_abs_lt_one +/- theorem tsum_geometric_of_abs_lt_1 Modified src/data/complex/basic.lean +/- theorem complex.abs_abs +/- theorem complex.abs_abs_sub_le_abs_sub +/- theorem complex.abs_im_div_abs_le_one +/- theorem complex.abs_im_le_abs +/- theorem complex.abs_le_abs_re_add_abs_im +/- theorem complex.abs_of_real +/- theorem complex.abs_re_div_abs_le_one +/- theorem complex.abs_re_le_abs +/- theorem complex.int_cast_abs Modified src/data/complex/exponential.lean +/- theorem is_cau_geo_series_const +/- theorem is_cau_of_decreasing_bounded +/- theorem is_cau_of_mono_bounded +/- theorem is_cau_series_of_abv_cau +/- theorem real.abs_cos_le_one +/- theorem real.abs_exp +/- theorem real.abs_sin_le_one +/- theorem real.cos_bound +/- theorem real.cos_pos_of_le_one +/- theorem real.exp_bound +/- theorem real.sin_bound Modified src/data/int/basic.lean +/- theorem int.abs_div_le_abs +/- theorem int.abs_eq_nat_abs +/- theorem int.coe_nat_abs +/- theorem int.div_eq_zero_of_lt_abs +/- theorem int.eq_zero_iff_abs_lt_one +/- theorem int.mod_abs +/- theorem int.mod_lt +/- theorem int.nat_abs_abs +/- theorem int.sign_mul_abs Modified src/data/int/cast.lean +/- theorem int.cast_nat_abs Modified src/data/int/modeq.lean Modified src/data/nat/cast.lean Modified src/data/polynomial/denoms_clearable.lean Modified src/data/rat/cast.lean Modified src/data/rat/order.lean +/- theorem rat.abs_def Modified src/data/rat/sqrt.lean +/- theorem rat.sqrt_eq Modified src/data/real/basic.lean +/- theorem real.is_cau_seq_iff_lift Modified src/data/real/hyperreal.lean +/- theorem hyperreal.coe_abs +/- theorem hyperreal.infinite_iff_abs_lt_abs +/- theorem hyperreal.infinite_iff_infinite_abs +/- theorem hyperreal.infinite_iff_infinite_pos_abs +/- theorem hyperreal.infinite_pos_abs_iff_infinite_abs Modified src/data/real/nnreal.lean +/- theorem nnreal.abs_eq +/- theorem real.coe_nnabs +/- theorem real.coe_to_nnreal_le Modified src/data/real/sqrt.lean +/- theorem real.abs_le_sqrt +/- theorem real.sqrt_mul_self_eq_abs +/- theorem real.sqrt_sq_eq_abs Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/unordered_interval.lean +/- theorem set.abs_sub_le_of_subinterval +/- theorem set.abs_sub_left_of_mem_interval +/- theorem set.abs_sub_right_of_mem_interval Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/sphere.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.norm_integral_le_abs_integral_norm Modified src/measure_theory/measure/lebesgue.lean +/- theorem real.volume_interval Modified src/number_theory/liouville/basic.lean +/- def liouville Modified src/number_theory/liouville/liouville_constant.lean Modified src/number_theory/primes_congruent_one.lean Modified src/number_theory/zsqrtd/gaussian_int.lean +/- theorem gaussian_int.norm_sq_le_norm_sq_of_re_le_of_im_le Modified src/order/filter/filter_product.lean +/- theorem filter.germ.abs_def Modified src/testing/slim_check/sampleable.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/continuous_function/algebra.lean +/- theorem max_eq_half_add_add_abs_sub +/- theorem min_eq_half_add_sub_abs_sub Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/weierstrass.lean Modified src/topology/instances/real.lean +/- theorem int.dist_eq +/- theorem rat.dist_eq +/- theorem real.uniform_continuous_inv Modified src/topology/metric_space/algebra.lean Modified src/topology/metric_space/basic.lean +/- theorem abs_dist +/- theorem abs_dist_sub_le +/- theorem nnreal.dist_eq +/- theorem real.dist_0_eq_abs +/- theorem real.dist_eq Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/kuratowski.lean Modified test/push_neg.lean 2021-10-01 12:27:23 c33407a feat(algebraic_geometry/*): Proved Spec ⋙ Γ ≅ 𝟭 (#9416) - Specialied `algebraic_geometry.structure_sheaf.basic_open_iso` into global sections, proving that the map `structure_sheaf.to_open R ⊤` is an isomorphism in `algebraic_geometry.is_iso_to_global`. - Proved that the map `R ⟶ Γ(Spec R)` is natural, and presents the fact above as an natural isomorphism `Spec.right_op ⋙ Γ ≅ 𝟭 _` in `algebraic_geometry.Spec_Γ_identity`. ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean + def algebraic_geometry.Spec_Γ_identity + theorem algebraic_geometry.Spec_Γ_naturality + def algebraic_geometry.to_Spec_Γ Modified src/algebraic_geometry/structure_sheaf.lean + def algebraic_geometry.structure_sheaf.global_sections_iso + theorem algebraic_geometry.structure_sheaf.global_sections_iso_hom + theorem algebraic_geometry.structure_sheaf.to_global_factors 2021-10-01 10:38:53 38395ed chore(bors): bors should block on label awaiting-CI (#9478) ESTIMATED CHANGES Modified bors.toml Modified docs/contribute/bors.md 2021-10-01 10:38:52 5936f53 feat(topology/maps): for a continuous open map, preimage and interior commute (#9471) ESTIMATED CHANGES Modified src/topology/basic.lean Modified src/topology/maps.lean + theorem is_open_map.interior_preimage_subset_preimage_interior + theorem is_open_map.preimage_interior_eq_interior_preimage 2021-10-01 10:38:51 265345c feat(linear_algebra/{bilinear,quadratic}_form): remove non-degeneracy requirement from `exists_orthogonal_basis` and Sylvester's law of inertia (#9465) This removes the `nondegenerate` hypothesis from `bilin_form.exists_orthogonal_basis`, and removes the `∀ i, B (v i) (v i) ≠ 0` statement from the goal. This property can be recovered in the case of a nondegenerate form with `is_Ortho.not_is_ortho_basis_self_of_nondegenerate`. This also swaps the order of the binders in `is_Ortho` to make it expressible with `pairwise`. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.is_Ortho.nondegenerate_iff_not_is_ortho_basis_self + theorem bilin_form.is_Ortho.not_is_ortho_basis_self_of_nondegenerate Modified src/linear_algebra/quadratic_form.lean + theorem bilin_form.exists_bilin_form_self_ne_zero - theorem bilin_form.exists_bilin_form_self_neq_zero - theorem bilin_form.exists_orthogonal_basis' +/- theorem bilin_form.exists_orthogonal_basis + theorem bilin_form.to_quadratic_form_zero + theorem quadratic_form.basis_repr_eq_of_is_Ortho + theorem quadratic_form.equivalent_one_zero_neg_one_weighted_sum_squared + theorem quadratic_form.equivalent_weighted_sum_squares - theorem quadratic_form.equivalent_weighted_sum_squares_of_nondegenerate' + theorem quadratic_form.equivalent_weighted_sum_squares_units_of_nondegenerate' + theorem quadratic_form.exists_quadratic_form_ne_zero - theorem quadratic_form.exists_quadratic_form_neq_zero + theorem quadratic_form.isometry.coe_to_linear_equiv + theorem quadratic_form.isometry.to_linear_equiv_eq_coe - theorem quadratic_form.isometry_of_is_Ortho_apply 2021-10-01 10:38:49 74457cb feat(data/polynomial,field_theory): `(minpoly A x).map f ≠ 1` (#9451) We use this result to generalize `minpoly.not_is_unit` from integral domains to nontrivial `comm_ring`s. ESTIMATED CHANGES Modified src/data/polynomial/monic.lean + theorem polynomial.monic.eq_one_of_map_eq_one Modified src/field_theory/minpoly.lean + theorem minpoly.map_ne_one + theorem minpoly.ne_one +/- theorem minpoly.not_is_unit 2021-10-01 08:55:56 f7d7a91 feat(algebraic_geometry/ringed_space): Define basic opens for ringed spaces. (#9358) Defines the category of ringed spaces, as an alias for `SheafedSpace CommRing`. We provide basic lemmas about sections being units in the stalk and define basic opens in this context. ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean + def algebraic_geometry.LocallyRingedSpace.to_RingedSpace Added src/algebraic_geometry/ringed_space.lean + def algebraic_geometry.RingedSpace.basic_open + theorem algebraic_geometry.RingedSpace.is_unit_of_is_unit_germ + theorem algebraic_geometry.RingedSpace.is_unit_res_basic_open + theorem algebraic_geometry.RingedSpace.is_unit_res_of_is_unit_germ + theorem algebraic_geometry.RingedSpace.mem_basic_open + def algebraic_geometry.RingedSpace 2021-10-01 08:55:55 9235c8a feat(data/polynomial/basic): polynomial.update (#9020) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.coeff_update + theorem polynomial.coeff_update_apply + theorem polynomial.coeff_update_ne + theorem polynomial.coeff_update_same + theorem polynomial.support_update + theorem polynomial.support_update_ne_zero + theorem polynomial.support_update_zero + def polynomial.update + theorem polynomial.update_zero_eq_erase Modified src/data/polynomial/coeff.lean + theorem polynomial.update_eq_add_sub_coeff Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_update_le 2021-10-01 06:05:13 e0f7d0e feat(group_theory/complement): is_complement_iff_card_mul_and_disjoint (#9476) Adds the converse to an existing lemma `is_complement_of_disjoint` (renamed `is_complement_of_card_mul_and_disjoint`). ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.is_complement.card_mul + theorem subgroup.is_complement.disjoint + theorem subgroup.is_complement_iff_card_mul_and_disjoint + theorem subgroup.is_complement_of_card_mul_and_disjoint - theorem subgroup.is_complement_of_disjoint 2021-10-01 06:05:12 57fa903 refactor(group_theory/complement): Split `complement.lean` (#9474) Splits off Schur-Zassenhaus from `complement.lean`. In the new file, we can replace `fintype.card (quotient_group.quotient H)` with `H.index`. Advantages: We can avoid importing `cardinal.lean` in `complement.lean`. Later (once full SZ is proved), we can avoid importing `sylow.lean` in `complement.lean`. ESTIMATED CHANGES Modified src/group_theory/complement.lean - theorem subgroup.diff_inv - theorem subgroup.diff_mul_diff - theorem subgroup.diff_self - theorem subgroup.exists_left_complement_of_coprime - theorem subgroup.exists_right_complement_of_coprime - theorem subgroup.exists_smul_eq - theorem subgroup.is_complement_stabilizer_of_coprime - def subgroup.quotient_diff - theorem subgroup.smul_diff - theorem subgroup.smul_diff_smul - theorem subgroup.smul_left_injective - theorem subgroup.smul_symm_apply_eq_mul_symm_apply_inv_smul Added src/group_theory/schur_zassenhaus.lean + theorem subgroup.diff_inv + theorem subgroup.diff_mul_diff + theorem subgroup.diff_self + theorem subgroup.exists_left_complement_of_coprime + theorem subgroup.exists_right_complement_of_coprime + theorem subgroup.exists_smul_eq + theorem subgroup.is_complement_stabilizer_of_coprime + def subgroup.quotient_diff + theorem subgroup.smul_diff + theorem subgroup.smul_diff_smul + theorem subgroup.smul_left_injective + theorem subgroup.smul_symm_apply_eq_mul_symm_apply_inv_smul 2021-10-01 06:05:11 76ddb2b feat(analysis/normed_space/lattice_ordered_group): introduce normed lattice ordered groups (#9274) Motivated by Banach Lattices, this PR introduces normed lattice ordered groups and proves that they are topological lattices. To support this `has_continuous_inf` and `has_continuous_sup` mixin classes are also defined. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/order/group.lean +/- theorem abs_eq_max_neg + theorem abs_eq_sup_neg Added src/analysis/normed_space/lattice_ordered_group.lean + theorem dual_solid + theorem norm_abs_eq_norm + theorem solid Added src/topology/order/lattice.lean + theorem continuous.inf + theorem continuous.sup + theorem continuous_inf + theorem continuous_sup 2021-10-01 03:25:37 812d6bb chore(scripts): update nolints.txt (#9475) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-10-01 03:25:36 125dac8 feat(group_theory/sylow): The number of Sylow subgroups equals the index of the normalizer (#9455) This PR adds further consequences of Sylow's theorems (still for infinite groups, more will be PRed later). ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem card_sylow_dvd_index + theorem card_sylow_eq_card_quotient_normalizer + theorem card_sylow_eq_index_normalizer + theorem sylow.orbit_eq_top + theorem sylow.stabilizer_eq_normalizer 2021-10-01 03:25:35 b786443 chore(algebra/category/*): Added `of_hom` to all of the algebraic categories. (#9454) As suggested in the comments of #9416. ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean + def Algebra.of_hom Modified src/algebra/category/CommRing/basic.lean + def CommRing.of_hom + def CommSemiRing.of_hom + def Ring.of_hom + def SemiRing.of_hom Modified src/algebra/category/Group/basic.lean + def CommGroup.of_hom + def Group.of_hom Modified src/algebra/category/Module/basic.lean + def Module.of_hom Modified src/algebra/category/Mon/basic.lean + def Mon.of_hom Modified src/algebra/category/Semigroup/basic.lean + def Magma.of_hom + def Semigroup.of_hom 2021-10-01 03:25:34 babca8e refactor(algebra/group_with_zero): rename lemmas to use ₀ instead of ' (#9424) We currently have lots of lemmas for `group_with_zero` that already have a corresponding lemma for `group`. We've dealt with name collisions so far just by adding a prime. This PR renames these lemmas to use a `₀` suffix instead of a `'`. In part this is out of desire to reduce our overuse of primes in mathlib names (putting the burden on users to know names, rather than relying on naming conventions). But it may also help with a problem Daniel Selsam ran into at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mathport.20depending.20on.20mathlib. (Briefly, mathport is also adding primes to names when it encounters name collisions, and these particular primes were causing problems. There are are other potential fixes in the works, but everything helps.) ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean Modified src/algebra/algebra/bilinear.lean Modified src/algebra/archimedean.lean Modified src/algebra/associated.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/field.lean +/- theorem neg_div' +/- theorem ring_hom.map_inv Modified src/algebra/gcd_monoid/basic.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/conj.lean - theorem is_conj_iff' + theorem is_conj_iff₀ Modified src/algebra/group_with_zero/basic.lean - theorem commute.inv_inv' + theorem commute.inv_inv₀ - theorem commute.inv_left' - theorem commute.inv_left_iff' + theorem commute.inv_left_iff₀ + theorem commute.inv_left₀ - theorem commute.inv_right' - theorem commute.inv_right_iff' + theorem commute.inv_right_iff₀ + theorem commute.inv_right₀ - theorem eq_inv_mul_iff_mul_eq' + theorem eq_inv_mul_iff_mul_eq₀ - theorem eq_mul_inv_iff_mul_eq' + theorem eq_mul_inv_iff_mul_eq₀ - theorem inv_eq_one' + theorem inv_eq_one₀ - theorem inv_inj' - theorem inv_injective' + theorem inv_injective₀ + theorem inv_inj₀ - theorem inv_inv' - theorem inv_involutive' + theorem inv_involutive₀ + theorem inv_inv₀ - theorem inv_mul_cancel_left' + theorem inv_mul_cancel_left₀ - theorem inv_mul_cancel_right' + theorem inv_mul_cancel_right₀ - theorem inv_mul_eq_iff_eq_mul' + theorem inv_mul_eq_iff_eq_mul₀ - theorem inv_mul_eq_one' + theorem inv_mul_eq_one₀ - theorem monoid_with_zero_hom.map_inv' + theorem monoid_with_zero_hom.map_inv - theorem mul_eq_one_iff_eq_inv' + theorem mul_eq_one_iff_eq_inv₀ - theorem mul_eq_one_iff_inv_eq' + theorem mul_eq_one_iff_inv_eq₀ - theorem mul_inv' - theorem mul_inv_cancel_left' + theorem mul_inv_cancel_left₀ - theorem mul_inv_cancel_right' + theorem mul_inv_cancel_right₀ - theorem mul_inv_eq_iff_eq_mul' + theorem mul_inv_eq_iff_eq_mul₀ - theorem mul_inv_eq_one' + theorem mul_inv_eq_one₀ - theorem mul_inv_rev' + theorem mul_inv_rev₀ + theorem mul_inv₀ +/- theorem mul_left_inj' +/- theorem mul_right_inj' - theorem semiconj_by.inv_right' - theorem semiconj_by.inv_right_iff' + theorem semiconj_by.inv_right_iff₀ + theorem semiconj_by.inv_right₀ - theorem semiconj_by.inv_symm_left' - theorem semiconj_by.inv_symm_left_iff' + theorem semiconj_by.inv_symm_left_iff₀ + theorem semiconj_by.inv_symm_left₀ Modified src/algebra/group_with_zero/defs.lean - theorem mul_left_cancel' + theorem mul_left_cancel₀ - theorem mul_left_injective' + theorem mul_left_injective₀ - theorem mul_right_cancel' + theorem mul_right_cancel₀ - theorem mul_right_injective' + theorem mul_right_injective₀ Modified src/algebra/group_with_zero/power.lean - theorem inv_pow' + theorem inv_pow₀ - theorem pow_inv_comm' + theorem pow_inv_comm₀ - theorem pow_sub' + theorem pow_sub₀ - theorem units.coe_gpow' + theorem units.coe_gpow₀ Modified src/algebra/module/pi.lean - theorem pi.single_smul'' +/- theorem pi.single_smul' + theorem pi.single_smul₀ Modified src/algebra/module/pointwise_pi.lean - theorem smul_pi' + theorem smul_pi₀ Modified src/algebra/opposites.lean Modified src/algebra/order/absolute_value.lean Modified src/algebra/order/field.lean - def order_iso.mul_left' + def order_iso.mul_left₀ - def order_iso.mul_right' + def order_iso.mul_right₀ Modified src/algebra/order/smul.lean Modified src/algebra/order/with_zero.lean - theorem div_le_div' + theorem div_le_div₀ - theorem inv_le_inv'' + theorem inv_le_inv₀ - theorem inv_lt_inv'' + theorem inv_lt_inv₀ - theorem mul_inv_lt_of_lt_mul' + theorem mul_inv_lt_of_lt_mul₀ - theorem mul_lt_mul'''' + theorem mul_lt_mul₀ - theorem mul_lt_right' + theorem mul_lt_right₀ - theorem pow_lt_pow' + theorem pow_lt_pow₀ - theorem zero_lt_one'' + theorem zero_lt_one₀ Modified src/algebra/periodic.lean - theorem function.antiperiodic.const_inv_smul' + theorem function.antiperiodic.const_inv_smul₀ - theorem function.antiperiodic.const_smul' + theorem function.antiperiodic.const_smul₀ - theorem function.periodic.const_inv_smul' + theorem function.periodic.const_inv_smul₀ - theorem function.periodic.const_smul' + theorem function.periodic.const_smul₀ Modified src/algebra/pointwise.lean - theorem mem_inv_smul_set_iff' + theorem mem_inv_smul_set_iff₀ - theorem mem_smul_set_iff_inv_smul_mem' + theorem mem_smul_set_iff_inv_smul_mem₀ - theorem preimage_smul' - theorem preimage_smul_inv' + theorem preimage_smul_inv₀ + theorem preimage_smul₀ - theorem set.smul_set_inter' + theorem set.smul_set_inter₀ - theorem set_smul_subset_iff' + theorem set_smul_subset_iff₀ - theorem set_smul_subset_set_smul_iff' + theorem set_smul_subset_set_smul_iff₀ - theorem smul_mem_smul_set_iff' + theorem smul_mem_smul_set_iff₀ - theorem subset_set_smul_iff' + theorem subset_set_smul_iff₀ Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/quaternion.lean Modified src/algebra/star/chsh.lean Modified src/algebra/support.lean - theorem function.mul_support_inv' + theorem function.mul_support_inv₀ Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/function.lean Modified src/analysis/convex/jensen.lean Modified src/analysis/convex/topology.lean Modified src/analysis/hofer.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/exponential.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/p_series.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/integrals.lean Modified src/analysis/special_functions/trigonometric/basic.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/equiv/mul_add.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/nat/choose/basic.lean Modified src/data/nat/factorial/basic.lean Modified src/data/polynomial/field_division.lean Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean Modified src/data/real/ennreal.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.inv_epsilon_eq_omega Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean Modified src/data/real/sqrt.lean +/- theorem nnreal.sqrt_inv Modified src/data/set/intervals/image_preimage.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/field_theory/perfect_closure.lean Modified src/geometry/euclidean/sphere.lean Modified src/geometry/euclidean/triangle.lean Modified src/group_theory/group_action/group.lean - theorem eq_inv_smul_iff' + theorem eq_inv_smul_iff₀ - theorem inv_smul_eq_iff' + theorem inv_smul_eq_iff₀ - theorem inv_smul_smul' + theorem inv_smul_smul₀ - theorem smul_inv_smul' + theorem smul_inv_smul₀ Modified src/group_theory/specific_groups/cyclic.lean Modified src/group_theory/subgroup/pointwise.lean - theorem add_subgroup.le_pointwise_smul_iff' + theorem add_subgroup.le_pointwise_smul_iff₀ - theorem add_subgroup.mem_inv_pointwise_smul_iff' + theorem add_subgroup.mem_inv_pointwise_smul_iff₀ - theorem add_subgroup.mem_pointwise_smul_iff_inv_smul_mem' + theorem add_subgroup.mem_pointwise_smul_iff_inv_smul_mem₀ - theorem add_subgroup.pointwise_smul_le_iff' + theorem add_subgroup.pointwise_smul_le_iff₀ - theorem add_subgroup.pointwise_smul_le_pointwise_smul_iff' + theorem add_subgroup.pointwise_smul_le_pointwise_smul_iff₀ - theorem add_subgroup.smul_mem_pointwise_smul_iff' + theorem add_subgroup.smul_mem_pointwise_smul_iff₀ - theorem subgroup.le_pointwise_smul_iff' + theorem subgroup.le_pointwise_smul_iff₀ - theorem subgroup.mem_inv_pointwise_smul_iff' + theorem subgroup.mem_inv_pointwise_smul_iff₀ - theorem subgroup.mem_pointwise_smul_iff_inv_smul_mem' + theorem subgroup.mem_pointwise_smul_iff_inv_smul_mem₀ - theorem subgroup.pointwise_smul_le_iff' + theorem subgroup.pointwise_smul_le_iff₀ - theorem subgroup.pointwise_smul_le_pointwise_smul_iff' + theorem subgroup.pointwise_smul_le_pointwise_smul_iff₀ - theorem subgroup.smul_mem_pointwise_smul_iff' + theorem subgroup.smul_mem_pointwise_smul_iff₀ Modified src/group_theory/submonoid/center.lean - theorem set.div_mem_center' + theorem set.div_mem_center₀ - theorem set.inv_mem_center' + theorem set.inv_mem_center₀ Modified src/group_theory/submonoid/pointwise.lean - theorem add_submonoid.le_pointwise_smul_iff' + theorem add_submonoid.le_pointwise_smul_iff₀ - theorem add_submonoid.mem_inv_pointwise_smul_iff' + theorem add_submonoid.mem_inv_pointwise_smul_iff₀ - theorem add_submonoid.mem_pointwise_smul_iff_inv_smul_mem' + theorem add_submonoid.mem_pointwise_smul_iff_inv_smul_mem₀ - theorem add_submonoid.pointwise_smul_le_iff' + theorem add_submonoid.pointwise_smul_le_iff₀ - theorem add_submonoid.pointwise_smul_le_pointwise_smul_iff' + theorem add_submonoid.pointwise_smul_le_pointwise_smul_iff₀ - theorem add_submonoid.smul_mem_pointwise_smul_iff' + theorem add_submonoid.smul_mem_pointwise_smul_iff₀ - theorem submonoid.le_pointwise_smul_iff' + theorem submonoid.le_pointwise_smul_iff₀ - theorem submonoid.mem_inv_pointwise_smul_iff' + theorem submonoid.mem_inv_pointwise_smul_iff₀ - theorem submonoid.mem_pointwise_smul_iff_inv_smul_mem' + theorem submonoid.mem_pointwise_smul_iff_inv_smul_mem₀ - theorem submonoid.pointwise_smul_le_iff' + theorem submonoid.pointwise_smul_le_iff₀ - theorem submonoid.pointwise_smul_le_pointwise_smul_iff' + theorem submonoid.pointwise_smul_le_pointwise_smul_iff₀ - theorem submonoid.smul_mem_pointwise_smul_iff' + theorem submonoid.smul_mem_pointwise_smul_iff₀ Modified src/linear_algebra/affine_space/ordered.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/free_module_pid.lean Modified src/linear_algebra/quadratic_form.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/l1_space.lean Modified src/measure_theory/group/arithmetic.lean - theorem ae_measurable_const_smul_iff' + theorem ae_measurable_const_smul_iff₀ - theorem ae_measurable_inv_iff' + theorem ae_measurable_inv_iff₀ - theorem measurable_const_smul_iff' + theorem measurable_const_smul_iff₀ - theorem measurable_inv_iff' + theorem measurable_inv_iff₀ Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/mean_inequalities.lean Modified src/measure_theory/measure/haar_lebesgue.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/l_series.lean Modified src/number_theory/padics/padic_integers.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/order/filter/at_top_bot.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/valuation/basic.lean Modified src/ring_theory/valuation/integers.lean Modified src/ring_theory/valuation/integral.lean Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/tactic/cancel_denoms.lean Modified src/tactic/norm_num.lean Modified src/topology/algebra/group_with_zero.lean - theorem continuous.inv' + theorem continuous.inv₀ - theorem continuous_at.inv' + theorem continuous_at.inv₀ - theorem continuous_on.inv' + theorem continuous_on.inv₀ - theorem continuous_on_inv' + theorem continuous_on_inv₀ - theorem continuous_within_at.inv' + theorem continuous_within_at.inv₀ - theorem filter.tendsto.inv' + theorem filter.tendsto.inv₀ - theorem homeomorph.coe_mul_left' + theorem homeomorph.coe_mul_left₀ - theorem homeomorph.coe_mul_right' + theorem homeomorph.coe_mul_right₀ - theorem homeomorph.mul_left'_symm_apply + theorem homeomorph.mul_left₀_symm_apply - theorem homeomorph.mul_right'_symm_apply + theorem homeomorph.mul_right₀_symm_apply - theorem tendsto_inv' + theorem tendsto_inv₀ Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/mul_action.lean - theorem continuous_at_const_smul_iff' + theorem continuous_at_const_smul_iff₀ - theorem continuous_const_smul_iff' + theorem continuous_const_smul_iff₀ - theorem continuous_on_const_smul_iff' + theorem continuous_on_const_smul_iff₀ - theorem continuous_within_at_const_smul_iff' + theorem continuous_within_at_const_smul_iff₀ - theorem is_closed_map_smul' + theorem is_closed_map_smul₀ - theorem is_open_map_smul' + theorem is_open_map_smul₀ - theorem tendsto_const_smul_iff' + theorem tendsto_const_smul_iff₀ Modified src/topology/continuous_function/algebra.lean Modified src/topology/instances/nnreal.lean 2021-10-01 01:14:03 540fb94 feat(data/fintype/basic): bijection preserves cardinality (#9473) We don't seem to have this lemma yet, so I've added it. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.card_of_bijective 2021-10-01 01:14:02 456db24 feat(topology/algebra/module): has_continuous_smul (#9468) in terms of nice neighborhoods of zero ESTIMATED CHANGES Modified src/topology/algebra/module.lean + theorem has_continuous_smul.of_nhds_zero 2021-10-01 01:14:00 2b23d2e chore(topology/algebra): remove dead code (#9467) This code wasn't used and its historically intended use will soon be redone much better. The second file is only a dead import and a misleading comment (referring to the dead code of the *other* file). ESTIMATED CHANGES Modified src/topology/algebra/group.lean - theorem add_group_with_zero_nhd.add_Z - theorem add_group_with_zero_nhd.exists_Z_half - theorem add_group_with_zero_nhd.neg_Z - theorem add_group_with_zero_nhd.nhds_eq - theorem add_group_with_zero_nhd.nhds_zero_eq_Z Modified src/topology/algebra/uniform_group.lean 2021-10-01 01:13:59 5b02571 chore(measure_theory/decomposition/lebesgue): make measurable_space implicit (#9463) Whenever the `measurable_space` can be inferred from a `measure` argument, it should be implicit. This PR applies that rule to the Lebesgue decomposition file. ESTIMATED CHANGES Modified src/measure_theory/decomposition/lebesgue.lean +/- theorem measure_theory.measure.eq_rn_deriv +/- theorem measure_theory.measure.eq_singular_part +/- theorem measure_theory.measure.have_lebesgue_decomposition_add +/- theorem measure_theory.measure.have_lebesgue_decomposition_of_finite_measure +/- theorem measure_theory.measure.have_lebesgue_decomposition_spec +/- theorem measure_theory.signed_measure.eq_rn_deriv +/- theorem measure_theory.signed_measure.eq_singular_part +/- theorem measure_theory.signed_measure.have_lebesgue_decomposition_mk +/- theorem measure_theory.signed_measure.mutually_singular_singular_part +/- theorem measure_theory.signed_measure.not_have_lebesgue_decomposition_iff +/- theorem measure_theory.signed_measure.rn_deriv_add +/- theorem measure_theory.signed_measure.rn_deriv_neg +/- theorem measure_theory.signed_measure.rn_deriv_smul +/- theorem measure_theory.signed_measure.rn_deriv_sub + def measure_theory.signed_measure.singular_part(s - def measure_theory.signed_measure.singular_part +/- theorem measure_theory.signed_measure.singular_part_mutually_singular +/- theorem measure_theory.signed_measure.singular_part_smul +/- theorem measure_theory.signed_measure.singular_part_total_variation 2021-09-30 22:39:03 a24b496 feat(analysis/normed_space/add_torsor_bases): add lemma `exists_subset_affine_independent_span_eq_top_of_open` (#9418) Also some supporting lemmas about affine span, affine independence. ESTIMATED CHANGES Added src/analysis/normed_space/add_torsor_bases.lean + theorem exists_subset_affine_independent_span_eq_top_of_open Modified src/data/finset/basic.lean + theorem finset.sdiff_singleton_not_mem_eq_self Modified src/linear_algebra/affine_space/combination.lean + theorem affine_span_eq_affine_span_line_map_units + theorem finset.weighted_vsub_of_point_eq_of_weights_eq +/- theorem finset.weighted_vsub_of_point_insert + theorem mem_affine_span_iff_eq_weighted_vsub_of_point_vadd Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent.units_line_map 2021-09-30 22:39:00 931cd6d feat(data/set/equitable): Equitable functions (#8509) Equitable functions are functions whose maximum is at most one more than their minimum. Equivalently, in an additive successor order (`a < b ↔ a +1 ≤ b`), this means that the function takes only values `a` and `a + 1` for some `a`. From Szemerédi's regularity lemma. Co-authored by @b-mehta ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.le_and_le_add_one_iff Added src/data/set/equitable.lean + theorem finset.equitable_on_iff + theorem finset.equitable_on_iff_le_le_add_one + def set.equitable_on + theorem set.equitable_on_empty + theorem set.equitable_on_iff_exists_eq_eq_add_one + theorem set.equitable_on_iff_exists_image_subset_Icc + theorem set.equitable_on_iff_exists_le_le_add_one 2021-09-30 20:25:20 a52a54b chore(analysis/convex/basic): instance cleanup (#9466) Some lemmas were about `f : whatever → 𝕜`. They are now about `f : whatever → β` + a scalar instance between `𝕜` and `β`. Some `add_comm_monoid` assumptions are actually promotable to `add_comm_group` directly thanks to [`module.add_comm_monoid_to_add_comm_group`](https://leanprover-community.github.io/mathlib_docs/algebra/module/basic.html#module.add_comm_monoid_to_add_comm_group). [Related Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Convexity.20refactor/near/255268131). ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem convex.add +/- theorem convex.affine_image +/- theorem convex.affine_preimage +/- theorem convex.combo_affine_apply +/- theorem convex.combo_self +/- theorem convex.linear_image +/- def convex +/- theorem convex_Icc +/- theorem convex_Ici +/- theorem convex_Ico +/- theorem convex_Iic +/- theorem convex_Iio +/- theorem convex_Ioc +/- theorem convex_Ioi +/- theorem convex_Ioo +/- theorem convex_halfspace_ge +/- theorem convex_halfspace_gt +/- theorem convex_halfspace_le +/- theorem convex_halfspace_lt +/- theorem convex_hyperplane +/- theorem convex_interval +/- theorem convex_segment +/- theorem convex_std_simplex +/- theorem directed.convex_Union +/- theorem directed_on.convex_sUnion +/- theorem ite_eq_mem_std_simplex +/- def open_segment +/- def segment +/- theorem set.ord_connected.convex +/- theorem set.ord_connected.convex_of_chain +/- def std_simplex Modified src/analysis/convex/combination.lean +/- theorem mem_Icc_of_mem_std_simplex Modified src/analysis/convex/topology.lean +/- theorem bounded_std_simplex +/- theorem compact_std_simplex +/- theorem is_closed_std_simplex 2021-09-30 20:25:18 97036e7 feat(measure_theory/constructions/pi): volume on `α × α` as a map of volume on `fin 2 → α` (#9432) ESTIMATED CHANGES Modified src/data/equiv/fin.lean + def fin_two_arrow_equiv + def order_iso.fin_two_arrow_iso + def order_iso.pi_fin_two_iso + def pi_fin_two_equiv + def prod_equiv_pi_fin_two Modified src/data/fin.lean + theorem fin.exists_fin_one + theorem fin.exists_fin_two + theorem fin.forall_fin_one + theorem fin.forall_fin_two + theorem fin.insert_nth_apply_above + theorem fin.insert_nth_apply_below + theorem fin.zero_lt_one Modified src/data/matrix/notation.lean + theorem matrix.vec_cons_const + theorem matrix.vec_single_eq_const Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.integral_fin_two_arrow' + theorem measure_theory.integral_fin_two_arrow + theorem measure_theory.integral_fin_two_arrow_pi' + theorem measure_theory.integral_fin_two_arrow_pi + theorem measure_theory.measure.prod_eq_map_fin_two_arrow + theorem measure_theory.measure.prod_eq_map_fin_two_arrow_same + theorem measure_theory.measure.{u} + theorem measure_theory.set_integral_fin_two_arrow' + theorem measure_theory.set_integral_fin_two_arrow + theorem measure_theory.set_integral_fin_two_arrow_pi' + theorem measure_theory.set_integral_fin_two_arrow_pi Modified src/measure_theory/measurable_space.lean + def measurable_equiv.fin_two_arrow + def measurable_equiv.pi_fin_two 2021-09-30 20:25:17 64bcb38 feat(order/succ_pred): define successor orders (#9397) A successor order is an order in which every (non maximal) element has a least greater element. A predecessor order is an order in which every (non minimal) element has a greatest smaller element. Typical examples are `ℕ`, `ℕ+`, `ℤ`, `fin n`, `ordinal`. Anytime you want to turn `a < b + 1` into `a ≤ b` or `a < b` into `a + 1 ≤ b`, you want a `succ_order`. ESTIMATED CHANGES Added src/order/succ_pred.lean + theorem pred_order.le_pred_iff + theorem pred_order.le_pred_iff_eq_bot + theorem pred_order.le_pred_iff_lt_or_eq + theorem pred_order.pred_bot + theorem pred_order.pred_eq_pred_iff + theorem pred_order.pred_eq_supr + theorem pred_order.pred_injective + theorem pred_order.pred_le_le_iff + theorem pred_order.pred_le_pred + theorem pred_order.pred_le_pred_iff + theorem pred_order.pred_lt + theorem pred_order.pred_lt_iff + theorem pred_order.pred_lt_iff_lt_or_eq + theorem pred_order.pred_lt_iff_ne_bot + theorem pred_order.pred_lt_of_not_minimal + theorem pred_order.pred_lt_pred_iff + theorem pred_order.pred_lt_top + theorem pred_order.pred_mono + theorem pred_order.pred_ne_pred_iff + theorem pred_order.pred_ne_top + def pred_order.pred_order_of_le_pred_iff + def pred_order.pred_order_of_le_pred_iff_of_pred_le_pred + theorem pred_order.pred_strict_mono + theorem succ_order.bot_lt_succ + theorem succ_order.le_le_succ_iff + theorem succ_order.le_succ_iff_lt_or_eq + theorem succ_order.lt_succ + theorem succ_order.lt_succ_iff + theorem succ_order.lt_succ_iff_lt_or_eq + theorem succ_order.lt_succ_iff_ne_top + theorem succ_order.lt_succ_of_not_maximal + theorem succ_order.succ_eq_infi + theorem succ_order.succ_eq_succ_iff + theorem succ_order.succ_injective + theorem succ_order.succ_le_iff + theorem succ_order.succ_le_iff_eq_top + theorem succ_order.succ_le_succ + theorem succ_order.succ_le_succ_iff + theorem succ_order.succ_lt_succ_iff + theorem succ_order.succ_mono + theorem succ_order.succ_ne_bot + theorem succ_order.succ_ne_succ_iff + def succ_order.succ_order_of_succ_le_iff + def succ_order.succ_order_of_succ_le_iff_of_le_lt_succ + theorem succ_order.succ_strict_mono + theorem succ_order.succ_top 2021-09-30 20:25:16 f7795d1 feat(monoid_algebra/grading): `add_monoid_algebra`s permit an internal grading (#8927) ESTIMATED CHANGES Added src/algebra/monoid_algebra/grading.lean + def add_monoid_algebra.equiv_grades + theorem add_monoid_algebra.grade.is_internal + def add_monoid_algebra.grade + def add_monoid_algebra.of_grades + theorem add_monoid_algebra.of_grades_comp_to_grades + theorem add_monoid_algebra.of_grades_of + theorem add_monoid_algebra.of_grades_to_grades + def add_monoid_algebra.to_grades + theorem add_monoid_algebra.to_grades_coe + theorem add_monoid_algebra.to_grades_comp_of_grades + theorem add_monoid_algebra.to_grades_of_grades + theorem add_monoid_algebra.to_grades_single 2021-09-30 18:34:36 b18eedb feat(linear_algebra/affine_space/combination): add lemma `finset.map_affine_combination` (#9453) The other included lemmas `affine_map.coe_sub`, `affine_map.coe_neg` are unrelated but are included to reduce PR overhead. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.coe_neg + theorem affine_map.coe_sub Modified src/linear_algebra/affine_space/combination.lean + theorem finset.map_affine_combination 2021-09-30 18:34:34 6e6fe1f move(category_theory/category/default): rename to `category_theory.basic` (#9412) ESTIMATED CHANGES Modified src/category_theory/category/Kleisli.lean Modified src/category_theory/category/Rel.lean Renamed src/category_theory/category/default.lean to src/category_theory/category/basic.lean Modified src/category_theory/category/preorder.lean Modified src/category_theory/category/ulift.lean Modified src/category_theory/concrete_category/bundled.lean Modified src/control/equiv_functor.lean Modified src/control/fold.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/slice.lean 2021-09-30 18:34:33 4091f72 refactor(linear_algebra/free_module): split in two files (#9407) We split `linear_algebra/free_module` in `linear_algebra/free_module/basic` and `linear_algebra/free_module/finite`, so one can work with free modules without having to import all the theory of dimension. ESTIMATED CHANGES Modified src/algebra/module/projective.lean Modified src/linear_algebra/charpoly.lean Renamed src/linear_algebra/free_module.lean to src/linear_algebra/free_module/basic.lean - theorem module.finite.of_basis Added src/linear_algebra/free_module/finite.lean + theorem module.finite.of_basis 2021-09-30 18:34:32 6210d98 feat(*): Clean up some misstated lemmas about analysis/manifolds (#9395) A few lemmas whose statement doesn't match the name / docstring about analytical things, all of these are duplicates of other lemmas, so look like copy paste errors. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/basic.lean +/- theorem complex.differentiable_at_cosh Modified src/geometry/manifold/mfderiv.lean Modified src/measure_theory/constructions/prod.lean Modified src/topology/algebra/group_with_zero.lean +/- theorem continuous_at.div_const 2021-09-30 16:11:19 118e809 refactor(algebra/module/linear_map): Move elementwise structure from linear_algebra/basic (#9331) This helps reduce the size of linear_algebra/basic, and by virtue of being a smaller file makes it easier to spot typeclasses which can be relaxed. As an example, `linear_map.endomorphism_ring` now requires only `semiring R` not `ring R`. Having instances available as early as possible is generally good, as otherwise it is hard to even state things elsewhere. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_map.add_apply + theorem linear_map.add_comp + theorem linear_map.coe_mul + theorem linear_map.coe_one + theorem linear_map.comp_add + theorem linear_map.comp_neg + theorem linear_map.comp_smul + theorem linear_map.comp_sub + theorem linear_map.comp_zero + theorem linear_map.default_def + theorem linear_map.mul_apply + theorem linear_map.mul_eq_comp + theorem linear_map.neg_apply + theorem linear_map.neg_comp + theorem linear_map.one_apply + theorem linear_map.one_eq_id + theorem linear_map.smul_apply + theorem linear_map.smul_comp + theorem linear_map.sub_apply + theorem linear_map.sub_comp + theorem linear_map.zero_apply + theorem linear_map.zero_comp Modified src/linear_algebra/basic.lean - theorem linear_map.add_apply - theorem linear_map.add_comp - theorem linear_map.coe_mul - theorem linear_map.coe_one - theorem linear_map.comp_add - theorem linear_map.comp_neg - theorem linear_map.comp_smul - theorem linear_map.comp_sub - theorem linear_map.comp_zero - theorem linear_map.default_def - theorem linear_map.mul_apply - theorem linear_map.mul_eq_comp - theorem linear_map.neg_apply - theorem linear_map.neg_comp - theorem linear_map.one_apply - theorem linear_map.one_eq_id - theorem linear_map.smul_apply - theorem linear_map.smul_comp - theorem linear_map.sub_apply - theorem linear_map.sub_comp - theorem linear_map.zero_apply - theorem linear_map.zero_comp 2021-09-30 16:11:18 0dca20a feat(data/(d)finsupp): update_eq_sub_add_single (#9184) Also with `erase_eq_sub_single`. ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.update_eq_sub_add_single Modified src/data/dfinsupp.lean + theorem dfinsupp.erase_eq_sub_single + theorem dfinsupp.update_eq_erase_add_single + theorem dfinsupp.update_eq_single_add_erase + theorem dfinsupp.update_eq_sub_add_single Modified src/data/finsupp/basic.lean + theorem finsupp.erase_eq_sub_single + theorem finsupp.update_eq_erase_add_single + theorem finsupp.update_eq_single_add_erase + theorem finsupp.update_eq_sub_add_single 2021-09-30 16:11:16 8ec7fcf feat(ring_theory/henselian): Henselian local rings (#8986) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring.inverse_mul_cancel + theorem ring.inverse_mul_cancel_left + theorem ring.inverse_mul_cancel_right + theorem ring.mul_inverse_cancel + theorem ring.mul_inverse_cancel_left + theorem ring.mul_inverse_cancel_right Added src/ring_theory/henselian.lean + theorem henselian_local_ring.tfae + theorem is_local_ring_hom_of_le_jacobson_bot 2021-09-30 13:44:22 f184dd7 feat(group_theory/perm/concrete_cycle): perm.to_list (#9178) The conceptual inverse to `list.form_perm`. ESTIMATED CHANGES Modified src/group_theory/perm/concrete_cycle.lean + theorem equiv.perm.form_perm_to_list + theorem equiv.perm.is_cycle.exists_unique_cycle + theorem equiv.perm.is_cycle.exists_unique_cycle_subtype + theorem equiv.perm.length_to_list + theorem equiv.perm.length_to_list_pos_of_mem_support + theorem equiv.perm.mem_to_list_iff + theorem equiv.perm.next_to_list_eq_apply + theorem equiv.perm.nodup_to_list + theorem equiv.perm.nth_le_to_list + theorem equiv.perm.pow_apply_mem_to_list_iff_mem_support + theorem equiv.perm.same_cycle.to_list_is_rotated + def equiv.perm.to_list + theorem equiv.perm.to_list_eq_nil_iff + theorem equiv.perm.to_list_form_perm_is_rotated_self + theorem equiv.perm.to_list_form_perm_nil + theorem equiv.perm.to_list_form_perm_nontrivial + theorem equiv.perm.to_list_form_perm_singleton + theorem equiv.perm.to_list_ne_singleton + theorem equiv.perm.to_list_nth_le_zero + theorem equiv.perm.to_list_one + theorem equiv.perm.to_list_pow_apply_eq_rotate + theorem equiv.perm.two_le_length_to_list_iff_mem_support 2021-09-30 13:44:21 3daae2c refactor(algebra/abs): add has_abs class (#9172) The notion of an "absolute value" occurs both in algebra (e.g. lattice ordered groups) and analysis (e.g. GM and GL-spaces). I introduced a `has_abs` notation class in https://github.com/leanprover-community/mathlib/pull/8673 for lattice ordered groups, along with the notation `|.|` and was asked by @eric-wieser and @jcommelin to add it in a separate PR and retro fit `has_abs` and the notation to mathlib. I tried to introduce both the `has_abs` class and the `|.|` notation in #8891 . However, I'm finding such a large and wide-ranging PR unwieldy to work with, so I'm now opening this PR which just replaces the previous definitions of `abs : α → α` in the following locations: https://github.com/leanprover-community/mathlib/blob/f36c98e877dd86af12606abbba5275513baa8a26/src/algebra/ordered_group.lean#L984 https://github.com/leanprover-community/mathlib/blob/f36c98e877dd86af12606abbba5275513baa8a26/src/topology/continuous_function/basic.lean#L113 Out of scope are the following `abs : α → β`: https://github.com/leanprover-community/mathlib/blob/f36c98e877dd86af12606abbba5275513baa8a26/src/data/complex/is_R_or_C.lean#L439 https://github.com/leanprover-community/mathlib/blob/f36c98e877dd86af12606abbba5275513baa8a26/src/data/complex/basic.lean#L406 https://github.com/leanprover-community/mathlib/blob/f36c98e877dd86af12606abbba5275513baa8a26/src/data/real/nnreal.lean#L762 https://github.com/leanprover-community/mathlib/blob/f36c98e877dd86af12606abbba5275513baa8a26/src/data/num/basic.lean#L315 Replacing the `abs` notation with `|.|` can be considered in a subsequent PR. ESTIMATED CHANGES Added src/algebra/abs.lean Modified src/algebra/lattice_ordered_group.lean Modified src/algebra/order/group.lean +/- theorem abs_eq_max_neg - def mabs Modified src/analysis/complex/basic.lean +/- theorem complex.norm_int +/- theorem complex.norm_rat Modified src/analysis/inner_product_space/basic.lean Modified src/analysis/inner_product_space/projection.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean +/- theorem complex.is_cau_abs_exp Modified src/data/complex/exponential_bounds.lean Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.abs_to_real Modified src/measure_theory/function/l1_space.lean Modified src/number_theory/zsqrtd/gaussian_int.lean Modified src/topology/continuous_function/algebra.lean +/- theorem continuous_map.inf_eq +/- theorem continuous_map.sup_eq Modified src/topology/continuous_function/basic.lean +/- theorem continuous_map.abs_apply Modified src/topology/continuous_function/stone_weierstrass.lean 2021-09-30 11:12:34 2fd713a chore(order/basic): rename monotonicity concepts (#9383) This: * Renames various mono lemmas either to enable dot notation (in some cases for types that don't exist yet) or to reflect they indicate monotonicity within a particular domain. * Renames `strict_mono.top_preimage_top'` to `strict_mono.maximal_preimage_top'` * Sorts some imports * Replaces some `rcases` with `obtain` ESTIMATED CHANGES Modified src/algebra/lie/solvable.lean +/- theorem lie_algebra.derived_series_of_ideal_le Modified src/algebra/order/field.lean Modified src/analysis/calculus/mean_value.lean + theorem antitone.concave_on_univ +/- theorem antitone_of_deriv_nonpos - theorem concave_on_univ_of_deriv_antitone - theorem convex.antitone_of_deriv_nonpos - theorem convex.mono_of_deriv_nonneg + theorem convex.monotone_on_of_deriv_nonneg + theorem convex.strict_anti_of_deriv_neg - theorem convex.strict_antitone_of_deriv_neg - theorem mono_of_deriv_nonneg + theorem monotone_on_of_deriv_nonneg + theorem strict_anti_of_deriv_neg - theorem strict_antitone_of_deriv_neg Modified src/analysis/special_functions/integrals.lean - theorem integral_sin_pow_antitone + theorem integral_sin_pow_succ_le Modified src/data/real/pi/wallis.lean Modified src/measure_theory/constructions/borel_space.lean - theorem measurable_of_antitone - theorem measurable_of_monotone Modified src/measure_theory/function/lp_space.lean - theorem measure_theory.Lp.antitone Modified src/measure_theory/integral/integrable_on.lean + theorem antitone.integrable_on_compact + theorem antitone_on.integrable_on_compact - theorem integrable_on_compact_of_antitone - theorem integrable_on_compact_of_antitone_on - theorem integrable_on_compact_of_monotone - theorem integrable_on_compact_of_monotone_on + theorem monotone.integrable_on_compact + theorem monotone_on.integrable_on_compact Modified src/measure_theory/integral/interval_integral.lean + theorem antitone.interval_integrable + theorem antitone_on.interval_integrable - theorem interval_integrable_of_antitone - theorem interval_integrable_of_antitone_on - theorem interval_integrable_of_monotone - theorem interval_integrable_of_monotone_on + theorem monotone.interval_integrable + theorem monotone_on.interval_integrable Modified src/measure_theory/integral/set_integral.lean + theorem antitone.tendsto_set_integral - theorem measure_theory.tendsto_set_integral_of_antitone Modified src/order/basic.lean + theorem monotone.strict_mono_of_injective - theorem strict_mono.bot_preimage_bot + theorem strict_mono.maximal_preimage_top + theorem strict_mono.minimal_preimage_bot - theorem strict_mono.top_preimage_top - theorem strict_mono_of_monotone_of_injective Modified src/order/bounded_lattice.lean - theorem is_compl.antitone - theorem strict_mono.bot_preimage_bot' + theorem strict_mono.maximal_preimage_top' + theorem strict_mono.minimal_preimage_bot' - theorem strict_mono.top_preimage_top' Modified src/order/conditionally_complete_lattice.lean - theorem csupr_mem_Inter_Icc_of_antitone_Icc_nat - theorem csupr_mem_Inter_Icc_of_monotone_of_antitone + theorem monotone.csupr_mem_Inter_Icc_of_antitone Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/filter/ennreal.lean Modified src/order/filter/indicator_function.lean + theorem antitone.tendsto_indicator + theorem monotone.tendsto_indicator - theorem tendsto_indicator_of_antitone - theorem tendsto_indicator_of_monotone Modified src/order/lattice.lean - theorem forall_le_of_monotone_of_antitone + theorem monotone.forall_le_of_antitone Modified src/ring_theory/valuation/basic.lean Modified src/topology/G_delta.lean Modified src/topology/uniform_space/cauchy.lean 2021-09-30 11:12:33 09506e6 feat(ring_theory/finiteness): add finiteness of restrict_scalars (#9363) We add `module.finitte.of_restrict_scalars_finite` and related lemmas: if `A` is an `R`-algebra and `M` is an `A`-module that is finite as `R`-module, then it is finite as `A`-module (similarly for `finite_type`). ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem alg_hom.finite.of_comp_finite + theorem alg_hom.finite_type.of_comp_finite_type + theorem algebra.finite_type.of_restrict_scalars_finite_type + theorem module.finite.of_restrict_scalars_finite + theorem ring_hom.finite.of_comp_finite + theorem ring_hom.finite_type.of_comp_finite_type 2021-09-30 11:12:32 3b48f7a docs(category_theory): provide missing module docs (#9352) ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/functor.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/natural_transformation.lean Modified src/category_theory/opposites.lean Modified src/category_theory/whiskering.lean 2021-09-30 08:02:28 6d12b2e feat(group_theory/complement): Top is complement to every singleton subset (#9460) The top subset of G is complement to every singleton subset of G. ESTIMATED CHANGES Modified src/group_theory/complement.lean + theorem subgroup.is_complement_singleton_top + theorem subgroup.is_complement_top_singleton 2021-09-30 08:02:27 f31758a chore(linear_algebra/quadratic_form): add missing lemmas, lift instance, and tweak argument implicitness (#9458) This adds `{quadratic,bilin}_form.{ext_iff,congr_fun}`, and a `can_lift` instance to promote `bilin_form`s to `quadratic_form`s. The `associated_*` lemmas should have `Q` and `S` explicit as they are not inferable from the arguments. In particular, with `S` implicit, rewriting any of them backwards introduces a lot of noisy subgoals. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.congr_fun + theorem bilin_form.ext_iff + theorem bilin_form.nondegenerate.ne_zero + theorem bilin_form.not_nondegenerate_zero Modified src/linear_algebra/quadratic_form.lean +/- theorem quadratic_form.associated_right_inverse + theorem quadratic_form.congr_fun + theorem quadratic_form.ext_iff + theorem quadratic_form.to_quadratic_form_associated 2021-09-30 08:02:25 f6d2434 feat(set_theory/cardinal_ordinal): there is no injective function from ordinals to types in the same universe (#9452) Contributed by @rwbarton at https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Transfinite.20recursion/near/253614140 ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem not_injective_of_ordinal + theorem not_injective_of_ordinal_of_small 2021-09-30 08:02:23 089614b feat(algebra/star): If `R` is a `star_monoid`/`star_ring` then so is `Rᵒᵖ` (#9446) The definition is simply that `op (star r) = star (op r)` ESTIMATED CHANGES Modified src/algebra/star/basic.lean + theorem op_star + def star_monoid_of_comm + theorem unop_star 2021-09-30 08:02:22 d1f78e2 feat(order/filter/{basic, cofinite}, topology/subset_properties): filter lemmas, prereqs for #8611 (#9419) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.tendsto.of_tendsto_comp Modified src/order/filter/cofinite.lean + theorem filter.tendsto.exists_within_forall_ge + theorem filter.tendsto.exists_within_forall_le + theorem function.injective.tendsto_cofinite Modified src/topology/subset_properties.lean + theorem filter.comap_cocompact 2021-09-30 08:02:21 f76d019 chore({field,ring}_theory): generalize `fraction_ring` and `is_separable` to rings (#9415) These used to be defined only for `integral_domain`s resp. `field`s, however the construction makes sense even for `comm_ring`s. So we can just do the generalization for free, and moreover it makes certain proof terms in their definition a lot smaller. Together with #9414, this helps against [timeouts when combining `localization` and `polynomial`](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60variables.60.20doesn't.20time.20out.20but.20inline.20params.20do), although the full test case is still quite slow (going from >40sec to approx 11 sec). ESTIMATED CHANGES Modified src/field_theory/separable.lean +/- theorem is_separable.is_integral +/- theorem is_separable.separable +/- theorem is_separable_iff Modified src/ring_theory/localization.lean +/- def fraction_ring 2021-09-30 08:02:19 92526c8 chore(ring_theory/localization): speed up `localization` a bit (#9414) Now `nsmul` and `gsmul` are irreducible on `localization`. This helps against [timeouts when combining `localization` and `polynomial`](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60variables.60.20doesn't.20time.20out.20but.20inline.20params.20do), although the full test case is still quite slow (going from >40sec to approx 11 sec). ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem localization.add_mk_self + theorem localization.smul_mk 2021-09-30 06:24:50 8b238eb refactor(data/mv_polynomial/equiv): simplify option_equiv_left (#9427) ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean +/- def mv_polynomial.option_equiv_left 2021-09-30 05:32:29 c7dd27d split(analysis/convex/jensen): split Jensen's inequalities off `analysis.convex.function` (#9445) ESTIMATED CHANGES Modified src/analysis/convex/function.lean - theorem concave_on.exists_le_of_center_mass - theorem concave_on.exists_le_of_mem_convex_hull - theorem concave_on.le_map_center_mass - theorem concave_on.le_map_sum - theorem convex_on.exists_ge_of_center_mass - theorem convex_on.exists_ge_of_mem_convex_hull - theorem convex_on.map_center_mass_le - theorem convex_on.map_sum_le Added src/analysis/convex/jensen.lean + theorem concave_on.exists_le_of_center_mass + theorem concave_on.exists_le_of_mem_convex_hull + theorem concave_on.le_map_center_mass + theorem concave_on.le_map_sum + theorem convex_on.exists_ge_of_center_mass + theorem convex_on.exists_ge_of_mem_convex_hull + theorem convex_on.map_center_mass_le + theorem convex_on.map_sum_le Modified src/analysis/convex/topology.lean 2021-09-30 02:54:54 d9ed073 chore(scripts): update nolints.txt (#9459) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-30 02:06:41 f254c2f refactor(analysis/normed_space/{dual, pi_Lp}): split out inner product space parts (#9388) This is just moving code, no math changes. https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/New.20folder.20analysis.2Finner_product_space ESTIMATED CHANGES Added src/analysis/inner_product_space/dual.lean + def inner_product_space.isometric.to_dual + theorem inner_product_space.ker_to_dual_map + theorem inner_product_space.norm_to_dual'_apply + theorem inner_product_space.norm_to_dual_apply + theorem inner_product_space.norm_to_dual_map_apply + theorem inner_product_space.norm_to_dual_symm_apply + theorem inner_product_space.range_to_dual_map + def inner_product_space.to_dual' + theorem inner_product_space.to_dual'_apply + theorem inner_product_space.to_dual'_isometry + theorem inner_product_space.to_dual'_surjective + def inner_product_space.to_dual + theorem inner_product_space.to_dual_apply + theorem inner_product_space.to_dual_eq_iff_eq' + theorem inner_product_space.to_dual_eq_iff_eq + def inner_product_space.to_dual_map + theorem inner_product_space.to_dual_map_apply + theorem inner_product_space.to_dual_map_eq_iff_eq + theorem inner_product_space.to_dual_map_injective + theorem inner_product_space.to_dual_map_isometry Modified src/analysis/inner_product_space/euclidean_dist.lean Added src/analysis/inner_product_space/pi_L2.lean + def basis.isometry_euclidean_of_orthonormal + def complex.isometry_euclidean + theorem complex.isometry_euclidean_apply_one + theorem complex.isometry_euclidean_apply_zero + theorem complex.isometry_euclidean_proj_eq_self + theorem complex.isometry_euclidean_symm_apply + theorem euclidean_space.norm_eq + def euclidean_space + theorem finrank_euclidean_space + theorem finrank_euclidean_space_fin + def linear_isometry_equiv.from_orthogonal_span_singleton + def linear_isometry_equiv.of_inner_product_space + theorem pi_Lp.inner_apply + theorem pi_Lp.norm_eq_of_L2 Modified src/analysis/normed_space/dual.lean - def inner_product_space.isometric.to_dual - theorem inner_product_space.ker_to_dual_map - theorem inner_product_space.norm_to_dual'_apply - theorem inner_product_space.norm_to_dual_apply - theorem inner_product_space.norm_to_dual_map_apply - theorem inner_product_space.norm_to_dual_symm_apply - theorem inner_product_space.range_to_dual_map - def inner_product_space.to_dual' - theorem inner_product_space.to_dual'_apply - theorem inner_product_space.to_dual'_isometry - theorem inner_product_space.to_dual'_surjective - def inner_product_space.to_dual - theorem inner_product_space.to_dual_apply - theorem inner_product_space.to_dual_eq_iff_eq' - theorem inner_product_space.to_dual_eq_iff_eq - def inner_product_space.to_dual_map - theorem inner_product_space.to_dual_map_apply - theorem inner_product_space.to_dual_map_eq_iff_eq - theorem inner_product_space.to_dual_map_injective - theorem inner_product_space.to_dual_map_isometry Modified src/analysis/normed_space/pi_Lp.lean - def basis.isometry_euclidean_of_orthonormal - def complex.isometry_euclidean - theorem complex.isometry_euclidean_apply_one - theorem complex.isometry_euclidean_apply_zero - theorem complex.isometry_euclidean_proj_eq_self - theorem complex.isometry_euclidean_symm_apply - theorem euclidean_space.norm_eq - def euclidean_space - theorem finrank_euclidean_space - theorem finrank_euclidean_space_fin - def linear_isometry_equiv.from_orthogonal_span_singleton - def linear_isometry_equiv.of_inner_product_space - theorem pi_Lp.inner_apply - theorem pi_Lp.norm_eq_of_L2 Modified src/geometry/manifold/instances/real.lean Modified src/measure_theory/function/conditional_expectation.lean 2021-09-29 21:38:23 519ab35 feat(topology/metric_space/basic): nonempty intersections of balls (#9448) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.not_disjoint_iff_nonempty_inter Modified src/topology/metric_space/basic.lean + theorem metric.ball_subset_ball' + theorem metric.closed_ball_subset_closed_ball' + theorem metric.dist_le_add_of_nonempty_closed_ball_inter_closed_ball + theorem metric.dist_lt_add_of_nonempty_ball_inter_ball + theorem metric.dist_lt_add_of_nonempty_ball_inter_closed_ball + theorem metric.dist_lt_add_of_nonempty_closed_ball_inter_ball 2021-09-29 21:38:22 acced82 chore(*): linting (#9343) ESTIMATED CHANGES Modified src/data/mllist.lean Modified src/data/multiset/basic.lean Modified src/data/polynomial/identities.lean Modified src/number_theory/pell.lean 2021-09-29 20:27:33 3681b5a split(analysis/convex/slope): split slope results off `analysis.convex.function` (#9444) ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/analysis/convex/function.lean - theorem concave_on.slope_mono_adjacent - theorem concave_on_iff_slope_mono_adjacent - theorem concave_on_of_slope_mono_adjacent - theorem convex_on.slope_mono_adjacent - theorem convex_on_iff_slope_mono_adjacent - theorem convex_on_of_slope_mono_adjacent Added src/analysis/convex/slope.lean + theorem concave_on.slope_anti_adjacent + theorem concave_on_iff_slope_anti_adjacent + theorem concave_on_of_slope_anti_adjacent + theorem convex_on.slope_mono_adjacent + theorem convex_on_iff_slope_mono_adjacent + theorem convex_on_of_slope_mono_adjacent 2021-09-29 18:44:41 eca3fd9 feat(data/real/ennreal): composition of coercion of natural numbers in ennreal (#9447) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_nnreal_nat + theorem ennreal.to_real_nat 2021-09-29 16:34:59 88e613e feat(data/mv_polynomial/cardinal): cardinalities of polynomial rings (#9384) ESTIMATED CHANGES Added src/data/mv_polynomial/cardinal.lean + theorem mv_polynomial.cardinal_mk_le_max Added src/data/polynomial/cardinal.lean + theorem polynomial.cardinal_mk_le_max 2021-09-29 16:34:57 2cd1d04 feat(group_theory/sylow): Sylow's theorems for infinite groups (#9288) This PR contains all three of Sylow's theorems for infinite groups, building off the work of @ChrisHughes24 in the `ch_sylow2` branch of mathlib. Later, I'll PR some consequences (e.g., index of normalizer stuff, maybe a golf of the original sylow stuff using the new results, Frattini's argument, ...). ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem card_sylow_modeq_one + theorem is_p_group.exists_le_sylow + theorem is_p_group.inf_normalizer_sylow + theorem is_p_group.sylow_mem_fixed_points_iff + theorem subgroup.sylow_mem_fixed_points_iff + theorem sylow.coe_smul + theorem sylow.coe_subgroup_smul + theorem sylow.ext + theorem sylow.ext_iff + theorem sylow.smul_eq_iff_mem_normalizer + theorem sylow.to_subgroup_eq_coe + structure sylow 2021-09-29 14:22:40 9535c08 feat(linear_algebra/affine_space/combination, analysis/convex/combination): basic lemmas about affine combinations, center of mass, centroid (#9103) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_comp +/- theorem finset.sum_comp Modified src/analysis/convex/combination.lean + theorem affine_combination_eq_center_mass + theorem finset.center_mass_id_mem_convex_hull + theorem finset.centroid_eq_center_mass + theorem finset.centroid_mem_convex_hull Modified src/data/finset/basic.lean + theorem finset.attach_image_coe +/- theorem finset.attach_image_val Modified src/linear_algebra/affine_space/combination.lean + theorem finset.affine_combination_eq_linear_combination + theorem finset.attach_affine_combination_coe + theorem finset.attach_affine_combination_of_injective + theorem finset.centroid_univ 2021-09-29 13:14:50 9e91b70 feat(analysis/convex/function): define strictly convex/concave functions (#9439) ESTIMATED CHANGES Modified src/analysis/convex/function.lean +/- def concave_on +/- def convex_on + def strict_concave_on + def strict_convex_on 2021-09-29 11:22:48 6f609ba feat(data/mv_polynomial/basic): aeval_tower (#9429) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + def mv_polynomial.aeval_tower + theorem mv_polynomial.aeval_tower_C + theorem mv_polynomial.aeval_tower_X + theorem mv_polynomial.aeval_tower_algebra_map + theorem mv_polynomial.aeval_tower_comp_C + theorem mv_polynomial.aeval_tower_comp_algebra_map + theorem mv_polynomial.aeval_tower_comp_to_alg_hom + theorem mv_polynomial.aeval_tower_id + theorem mv_polynomial.aeval_tower_of_id + theorem mv_polynomial.aeval_tower_to_alg_hom + theorem mv_polynomial.alg_hom_ext' 2021-09-29 11:22:47 43c1ab2 fix(linear_algebra/basic): generalize `linear_map.add_comm_group` to semilinear maps (#9402) Also generalizes `coe_mk` and golfs some proofs. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- theorem linear_map.coe_mk Modified src/linear_algebra/basic.lean 2021-09-29 10:20:15 d2463aa feat(ring_theory/algebraic): is_algebraic_of_larger_base_of_injective (#9433) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean + theorem algebra.is_algebraic_of_larger_base_of_injective +/- theorem is_algebraic_iff_not_injective 2021-09-29 09:37:26 e150668 chore(topology/sheaves): fix timeout by splitting proof (#9436) In #7033 we were getting a timeout in `app_surjective_of_stalk_functor_map_bijective`. Since the proof looks like it has two rather natural components, I split out the first half into its own lemma. This is a separate PR since I don't really understand the topology/sheaf library, so I might be doing something very weird. Timings: * original (master): 4.42s * original (master + #7033): 5.93s * new (master + this PR): 4.24s + 316ms * new (master + #7033 + this PR): 5.48s + 212ms ESTIMATED CHANGES Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.app_surjective_of_injective_of_locally_surjective 2021-09-29 09:37:24 0de5432 feat(data/W/cardinal): results about cardinality of W-types (#9210) ESTIMATED CHANGES Modified archive/examples/prop_encodable.lean Renamed src/data/W.lean to src/data/W/basic.lean + def W_type.elim + theorem W_type.elim_injective + def W_type.equiv_sigma + theorem W_type.infinite_of_nonempty_of_is_empty + def W_type.of_sigma + theorem W_type.of_sigma_to_sigma + def W_type.to_sigma + theorem W_type.to_sigma_of_sigma Added src/data/W/cardinal.lean + theorem W_type.cardinal_mk_eq_sum + theorem W_type.cardinal_mk_le_max_omega_of_fintype + theorem W_type.cardinal_mk_le_of_le Modified src/data/pfunctor/univariate/basic.lean 2021-09-29 08:41:05 c758cec chore(analysis/convex/function): change `add_comm_monoid` to `add_comm_group` when carrier type is module of scalars containing -1 (#9442) Related [Zulip conversation](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Convexity.20refactor/near/255268131) ESTIMATED CHANGES Modified src/analysis/convex/combination.lean Modified src/analysis/convex/function.lean 2021-09-29 04:03:07 d7abdff chore(analysis/normed_space/*): prereqs for #8611 (#9379) The functions `abs` and `norm_sq` on `ℂ` are proper. A matrix with entries in a {seminormed group, normed group, normed space} is itself a {seminormed group, normed group, normed space}. An injective linear map with finite-dimensional domain is a closed embedding. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.tendsto_abs_cocompact_at_top + theorem complex.tendsto_norm_sq_cocompact_at_top Modified src/analysis/normed_space/basic.lean + def matrix.normed_group + def matrix.normed_space + def matrix.semi_normed_group + theorem semi_norm_matrix_le_iff Modified src/analysis/normed_space/finite_dimension.lean + theorem linear_equiv.closed_embedding_of_injective 2021-09-29 04:03:06 8bd75b2 feat(measure_theory/measure/haar_lebesgue): properties of Haar measure on real vector spaces (#9325) We show that any additive Haar measure on a finite-dimensional real vector space is rescaled by a linear map through its determinant, and we compute the measure of balls and spheres. ESTIMATED CHANGES Modified src/linear_algebra/matrix/transvection.lean Modified src/measure_theory/measure/haar_lebesgue.lean + theorem measure_theory.add_haar_measure_eq_volume + theorem measure_theory.add_haar_measure_eq_volume_pi - theorem measure_theory.haar_measure_eq_lebesgue_measure + theorem measure_theory.is_add_left_invariant_real_volume_pi + theorem measure_theory.measure.add_haar_ball + theorem measure_theory.measure.add_haar_ball_center + theorem measure_theory.measure.add_haar_ball_lt_top + theorem measure_theory.measure.add_haar_ball_of_pos + theorem measure_theory.measure.add_haar_ball_pos + theorem measure_theory.measure.add_haar_closed_ball' + theorem measure_theory.measure.add_haar_closed_ball + theorem measure_theory.measure.add_haar_closed_ball_center + theorem measure_theory.measure.add_haar_closed_ball_lt_top + theorem measure_theory.measure.add_haar_closed_ball_pos + theorem measure_theory.measure.add_haar_closed_unit_ball_eq_add_haar_unit_ball + theorem measure_theory.measure.add_haar_preimage_smul + theorem measure_theory.measure.add_haar_smul + theorem measure_theory.measure.add_haar_sphere + theorem measure_theory.measure.add_haar_sphere_of_ne_zero + theorem measure_theory.measure.haar_preimage_linear_map + theorem measure_theory.measure.map_add_haar_smul + theorem measure_theory.measure.map_linear_map_add_haar_eq_smul_add_haar + theorem measure_theory.measure.map_linear_map_add_haar_pi_eq_smul_add_haar + def topological_space.positive_compacts.pi_Icc01 Modified src/measure_theory/measure/lebesgue.lean 2021-09-29 04:03:04 861d3bc chore(order/preorder_hom): more homs, golf a few proofs (#9256) ### New `preorder_hom`s * `preorder_hom.curry`: an order isomorphism between `α × β →ₘ γ` and `α →ₘ β →ₘ γ`; * `preorder_hom.compₘ`: a fully bundled version of `preorder_hom.comp`; * `preorder_hom.prodₘ`: a fully bundled version of `preorder_hom.prod`; * `preorder_hom.prod_iso`: Order isomorphism between the space of monotone maps to `β × γ` and the product of the spaces +of monotone maps to `β` and `γ`; * `preorder_hom.pi`: construct a bundled monotone map `α →ₘ Π i, π i` from a family of monotone maps +`f i : α →ₘ π i`; * `preorder_hom.pi_iso`: same thing, as an `order_iso`; * `preorder_hom.dual`: interpret `f : α →ₘ β` as `order_dual α →ₘ order_dual β`; * `preorder_hom.dual_iso`: same as an `order_iso` (with one more `order_dual` to get a monotone map, not an antitone map); ### Renamed/moved `preorder_hom`s The following `preorder_hom`s were renamed and/or moved from `order.omega_complete_partial_order` to `order.preorder_hom`. * `preorder_hom.const` : moved, bundle as `β →ₘ α →ₘ β`; * `preorder_hom.prod.diag` : `preorder_hom.diag`; * `preorder_hom.prod.map` : `preorder_hom.prod_map`; * `preorder_hom.prod.fst` : `preorder_hom.fst`; * `preorder_hom.prod.snd` : `preorder_hom.snd`; * `preorder_hom.prod.zip` : `preorder_hom.prod`; * `pi.monotone_apply` : `pi.eval_preorder_hom`; * `preorder_hom.monotone_apply` : `preorder_hom.apply`; * `preorder_hom.to_fun_hom` : moved. ### Other changes * add an instance `can_lift (α → β) (α →ₘ β)`; - rename `omega_complete_partial_order.continuous.to_monotone` to `omega_complete_partial_order.continuous'.to_monotone` to enable dot notation, same with `omega_complete_partial_order.continuous.to_bundled`; * use `order_dual` to get some proofs; * golf some proofs; * redefine `has_Inf.Inf` and `has_Sup.Sup` using `infi`/`supr`; * generalize some `mono` lemmas; * use notation `→ₘ`. ESTIMATED CHANGES Modified src/control/lawful_fix.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/order/closure.lean Modified src/order/omega_complete_partial_order.lean +/- theorem complete_lattice.Sup_continuous' + theorem complete_lattice.supr_continuous + theorem omega_complete_partial_order.continuous'.to_bundled + theorem omega_complete_partial_order.continuous'.to_monotone + theorem omega_complete_partial_order.continuous'_coe - theorem omega_complete_partial_order.continuous.to_bundled - theorem omega_complete_partial_order.continuous.to_monotone + theorem omega_complete_partial_order.continuous_const + theorem omega_complete_partial_order.continuous_hom.apply_mono +/- def omega_complete_partial_order.continuous_hom.const - theorem omega_complete_partial_order.continuous_hom.monotone - def omega_complete_partial_order.preorder_hom.monotone_apply - def omega_complete_partial_order.preorder_hom.to_fun_hom - def pi.monotone_apply - def preorder_hom.const - def preorder_hom.prod.diag - def preorder_hom.prod.fst - def preorder_hom.prod.map - def preorder_hom.prod.snd - def preorder_hom.prod.zip Modified src/order/preorder_hom.lean + def pi.eval_preorder_hom + theorem preorder_hom.Inf_apply + theorem preorder_hom.Sup_apply + def preorder_hom.apply + theorem preorder_hom.apply_mono + def preorder_hom.coe_fn_hom + theorem preorder_hom.coe_infi + theorem preorder_hom.coe_le_coe + theorem preorder_hom.coe_supr +/- def preorder_hom.comp + theorem preorder_hom.comp_const +/- theorem preorder_hom.comp_id + theorem preorder_hom.comp_mono + theorem preorder_hom.comp_prod_comp_same + def preorder_hom.compₘ + def preorder_hom.const + theorem preorder_hom.const_comp + def preorder_hom.curry + theorem preorder_hom.curry_apply + theorem preorder_hom.curry_symm_apply + def preorder_hom.diag + def preorder_hom.dual_iso +/- theorem preorder_hom.ext + def preorder_hom.fst + theorem preorder_hom.fst_comp_prod + theorem preorder_hom.fst_prod_snd +/- def preorder_hom.id +/- theorem preorder_hom.id_comp + theorem preorder_hom.infi_apply + theorem preorder_hom.le_def + theorem preorder_hom.mk_le_mk - theorem preorder_hom.monotone + def preorder_hom.on_diag + def preorder_hom.pi + def preorder_hom.pi_iso + def preorder_hom.prod_iso + def preorder_hom.prod_map + theorem preorder_hom.prod_mono + def preorder_hom.prodₘ + def preorder_hom.snd + theorem preorder_hom.snd_comp_prod + theorem preorder_hom.supr_apply Modified src/topology/omega_complete_partial_order.lean + theorem Scott.is_ωSup_iff_is_lub 2021-09-29 03:09:45 49805e6 chore(scripts): update nolints.txt (#9441) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-09-28 23:13:37 73afb6c chore(data/fintype/basic): add `fintype.card_set` (#9434) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.card_set 2021-09-28 20:09:13 e2cb9e1 feat(data/mv_polynomial/supported): subalgebra of polynomials supported by a set of variables (#9183) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.symm_trans_apply Added src/data/mv_polynomial/supported.lean + theorem mv_polynomial.X_mem_supported + theorem mv_polynomial.mem_supported + theorem mv_polynomial.mem_supported_vars + theorem mv_polynomial.supported_empty + theorem mv_polynomial.supported_eq_adjoin_X + theorem mv_polynomial.supported_eq_range_rename + theorem mv_polynomial.supported_eq_vars_subset + theorem mv_polynomial.supported_equiv_mv_polynomial_symm_C + theorem mv_polynomial.supported_equiv_mv_polynomial_symm_X + theorem mv_polynomial.supported_le_supported_iff + theorem mv_polynomial.supported_mono + theorem mv_polynomial.supported_strict_mono + theorem mv_polynomial.supported_univ Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.exists_rename_eq_of_vars_subset_range + theorem mv_polynomial.hom_congr_vars 2021-09-28 16:57:32 e18b9ca feat(set_theory/continuum): define `cardinal.continuum := 2 ^ ω` (#9354) ESTIMATED CHANGES Modified src/data/real/cardinality.lean +/- theorem cardinal.mk_Icc_real +/- theorem cardinal.mk_Ici_real +/- theorem cardinal.mk_Ico_real +/- theorem cardinal.mk_Iic_real +/- theorem cardinal.mk_Iio_real +/- theorem cardinal.mk_Ioc_real +/- theorem cardinal.mk_Ioi_real +/- theorem cardinal.mk_Ioo_real +/- theorem cardinal.mk_real +/- theorem cardinal.mk_univ_real Modified src/set_theory/cardinal.lean +/- theorem cardinal.mk_nat +/- theorem cardinal.nat_cast_inj Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.bit0_ne_zero + theorem cardinal.nat_power_eq Added src/set_theory/continuum.lean + def cardinal.continuum + theorem cardinal.continuum_add_nat + theorem cardinal.continuum_add_omega + theorem cardinal.continuum_add_self + theorem cardinal.continuum_mul_nat + theorem cardinal.continuum_mul_omega + theorem cardinal.continuum_mul_self + theorem cardinal.continuum_ne_zero + theorem cardinal.continuum_pos + theorem cardinal.continuum_power_omega + theorem cardinal.lift_continuum + theorem cardinal.mk_set_nat + theorem cardinal.nat_add_continuum + theorem cardinal.nat_lt_continuum + theorem cardinal.nat_mul_continuum + theorem cardinal.nat_power_omega + theorem cardinal.omega_add_continuum + theorem cardinal.omega_le_continuum + theorem cardinal.omega_lt_continuum + theorem cardinal.omega_mul_continuum + theorem cardinal.omega_power_omega + theorem cardinal.two_power_omega 2021-09-28 14:01:07 15f15a6 chore(order/*): replace `mono_incr` and `mono_decr` in lemma names wih `monotone` and `antitone` (#9428) This change was performed as a find-and-replace. No occurrences of `incr` or `decr` appear as tokens in lemma names after this change. ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.pow_antitone_exp - theorem nnreal.pow_mono_decr_exp Modified src/order/conditionally_complete_lattice.lean + theorem csupr_mem_Inter_Icc_of_antitone_Icc + theorem csupr_mem_Inter_Icc_of_antitone_Icc_nat - theorem csupr_mem_Inter_Icc_of_mono_decr_Icc - theorem csupr_mem_Inter_Icc_of_mono_decr_Icc_nat - theorem csupr_mem_Inter_Icc_of_mono_incr_of_mono_decr + theorem csupr_mem_Inter_Icc_of_monotone_of_antitone Modified src/order/lattice.lean + theorem forall_le_of_monotone_of_antitone - theorem forall_le_of_monotone_of_mono_decr Modified src/topology/algebra/ordered/basic.lean - theorem continuous_at_left_of_mono_incr_on_of_closure_image_mem_nhds_within - theorem continuous_at_left_of_mono_incr_on_of_exists_between - theorem continuous_at_left_of_mono_incr_on_of_image_mem_nhds_within + theorem continuous_at_left_of_monotone_on_of_closure_image_mem_nhds_within + theorem continuous_at_left_of_monotone_on_of_exists_between + theorem continuous_at_left_of_monotone_on_of_image_mem_nhds_within - theorem continuous_at_of_mono_incr_on_of_closure_image_mem_nhds - theorem continuous_at_of_mono_incr_on_of_exists_between - theorem continuous_at_of_mono_incr_on_of_image_mem_nhds + theorem continuous_at_of_monotone_on_of_closure_image_mem_nhds + theorem continuous_at_of_monotone_on_of_exists_between + theorem continuous_at_of_monotone_on_of_image_mem_nhds - theorem continuous_at_right_of_mono_incr_on_of_closure_image_mem_nhds_within - theorem continuous_at_right_of_mono_incr_on_of_exists_between - theorem continuous_at_right_of_mono_incr_on_of_image_mem_nhds_within + theorem continuous_at_right_of_monotone_on_of_closure_image_mem_nhds_within + theorem continuous_at_right_of_monotone_on_of_exists_between + theorem continuous_at_right_of_monotone_on_of_image_mem_nhds_within 2021-09-28 14:01:05 2d5fd65 fix(algebra/opposites): add a missing `comm_semiring` instance (#9425) ESTIMATED CHANGES Modified src/algebra/opposites.lean 2021-09-28 14:01:04 84bbb00 feat(data/set/intervals): add `order_iso.image_Ixx` lemmas (#9404) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem order_iso.image_Icc + theorem order_iso.image_Ici + theorem order_iso.image_Ico + theorem order_iso.image_Iic + theorem order_iso.image_Iio + theorem order_iso.image_Ioc + theorem order_iso.image_Ioi + theorem order_iso.image_Ioo 2021-09-28 11:33:36 4a02fd3 refactor(algebra/order/ring,data/complex): redefine `ordered_comm_ring` and complex order (#9420) * `ordered_comm_ring` no longer extends `ordered_comm_semiring`. We add an instance `ordered_comm_ring.to_ordered_comm_semiring` instead. * redefine complex order in terms of `re` and `im` instead of existence of a nonnegative real number. * simplify `has_star.star` on `complex` to `conj`; * rename `complex.complex_partial_order` etc to `complex.partial_order` etc, make them protected. ESTIMATED CHANGES Modified src/algebra/order/ring.lean Modified src/data/complex/basic.lean - def complex.complex_order - def complex.complex_ordered_comm_ring - def complex.complex_star_ordered_ring +/- theorem complex.le_def +/- theorem complex.lt_def + theorem complex.not_le_iff + theorem complex.not_le_zero_iff +/- theorem complex.real_le_real +/- theorem complex.real_lt_real + theorem complex.star_def Modified src/data/complex/module.lean - theorem complex.complex_ordered_smul 2021-09-28 11:33:35 06610c7 feat(data/list/basic): lemmas about tail (#9259) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.mem_of_mem_tail + theorem list.nth_le_tail 2021-09-28 11:33:33 c0dbe14 feat(linear_algebra/matrix/fpow): integer powers of matrices (#8683) Since we have an inverse defined for matrices via `nonsing_inv`, we provide a `div_inv_monoid` instance for matrices. The instance provides the ability to refer to integer power of matrices via the auto-generated `gpow`. This is done in a new file to allow selective use. Many API lemmas are provided to facilitate usage of the new `gpow`, many copied in form/content from `algebra/group_with_zero/power.lean`, which provides a similar API. ESTIMATED CHANGES Added src/linear_algebra/matrix/fpow.lean + theorem is_unit.det_fpow + theorem matrix.commute.fpow_fpow + theorem matrix.commute.fpow_fpow_self + theorem matrix.commute.fpow_left + theorem matrix.commute.fpow_right + theorem matrix.commute.fpow_self + theorem matrix.commute.mul_fpow + theorem matrix.commute.self_fpow + theorem matrix.fpow_add + theorem matrix.fpow_add_of_nonneg + theorem matrix.fpow_add_of_nonpos + theorem matrix.fpow_add_one + theorem matrix.fpow_add_one_of_ne_neg_one + theorem matrix.fpow_bit0' + theorem matrix.fpow_bit0 + theorem matrix.fpow_bit1' + theorem matrix.fpow_bit1 + theorem matrix.fpow_coe_nat + theorem matrix.fpow_mul' + theorem matrix.fpow_mul + theorem matrix.fpow_ne_zero_of_is_unit_det + theorem matrix.fpow_neg + theorem matrix.fpow_neg_coe_nat + theorem matrix.fpow_neg_mul_fpow_self + theorem matrix.fpow_neg_one + theorem matrix.fpow_one_add + theorem matrix.fpow_sub + theorem matrix.fpow_sub_one + theorem matrix.inv_fpow' + theorem matrix.inv_fpow + theorem matrix.inv_pow' + theorem matrix.is_unit_det_fpow_iff + theorem matrix.one_div_fpow + theorem matrix.one_div_pow + theorem matrix.one_fpow + theorem matrix.pow_inv_comm' + theorem matrix.pow_sub' + theorem matrix.semiconj_by.fpow_right + theorem matrix.units.coe_fpow + theorem matrix.units.coe_inv'' + theorem matrix.zero_fpow + theorem matrix.zero_fpow_eq Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.nonsing_inv_cancel_or_zero 2021-09-28 07:29:17 01adfd6 chore(analysis/special_functions): add some `@[simp]` attrs (#9423) Add `@[simp]` attrs to `real.sin_add_pi` and similar lemmas. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric/basic.lean +/- theorem real.cos_add_int_mul_two_pi +/- theorem real.cos_add_nat_mul_two_pi +/- theorem real.cos_add_pi +/- theorem real.cos_add_two_pi +/- theorem real.cos_int_mul_two_pi +/- theorem real.cos_int_mul_two_pi_add_pi +/- theorem real.cos_int_mul_two_pi_sub +/- theorem real.cos_int_mul_two_pi_sub_pi +/- theorem real.cos_nat_mul_two_pi +/- theorem real.cos_nat_mul_two_pi_add_pi +/- theorem real.cos_nat_mul_two_pi_sub +/- theorem real.cos_nat_mul_two_pi_sub_pi +/- theorem real.cos_pi_sub +/- theorem real.cos_sub_int_mul_two_pi +/- theorem real.cos_sub_nat_mul_two_pi +/- theorem real.cos_sub_pi +/- theorem real.cos_sub_two_pi +/- theorem real.cos_two_pi_sub +/- theorem real.sin_add_int_mul_two_pi +/- theorem real.sin_add_nat_mul_two_pi +/- theorem real.sin_add_pi +/- theorem real.sin_add_two_pi +/- theorem real.sin_int_mul_pi +/- theorem real.sin_int_mul_two_pi_sub +/- theorem real.sin_nat_mul_pi +/- theorem real.sin_nat_mul_two_pi_sub +/- theorem real.sin_pi_sub +/- theorem real.sin_sub_int_mul_two_pi +/- theorem real.sin_sub_nat_mul_two_pi +/- theorem real.sin_sub_pi +/- theorem real.sin_sub_two_pi +/- theorem real.sin_two_pi_sub 2021-09-28 07:29:16 6108616 doc(*): remove docstrings from copyright headers (#9411) This moves/removes the docs from the copyright header that are enough to make for the missing module docstring/redundant with the module docstring. ESTIMATED CHANGES Modified src/algebra/direct_sum/basic.lean Modified src/algebra/direct_sum/module.lean Modified src/category_theory/category/Kleisli.lean Modified src/data/lazy_list/basic.lean Modified src/data/list/sigma.lean Modified src/data/matrix/notation.lean Modified src/data/nat/prime.lean Modified src/linear_algebra/special_linear_group.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/order/preorder_hom.lean Modified src/ring_theory/adjoin_root.lean Modified src/tactic/fin_cases.lean Modified src/tactic/interval_cases.lean Modified src/tactic/norm_cast.lean Modified src/tactic/ring_exp.lean Modified src/tactic/scc.lean Modified src/tactic/simp_rw.lean Modified src/tactic/tfae.lean Modified src/topology/algebra/localization.lean Modified src/topology/algebra/ring.lean Modified src/topology/compact_open.lean Modified test/conv/conv.lean Modified test/finish1.lean Modified test/finish2.lean Modified test/finish3.lean Modified test/norm_num.lean Modified test/norm_num_ext.lean Modified test/simp_rw.lean 2021-09-28 07:29:14 36c09f7 doc(order/*): use "monotone" / "antitone" in place of "monotonically increasing" / "monotonically decreasing" (#9408) This PR cleans up the references to monotone and antitone function in lemmas and docstrings. It doesn't touch anything beyond the docstrings. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/p_series.lean Modified src/data/ordmap/ordnode.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/directed.lean Modified src/order/filter/bases.lean Modified src/order/filter/extr.lean Modified src/order/lattice.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/order_iso_nat.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/metric_space/holder.lean Modified src/topology/uniform_space/cauchy.lean 2021-09-28 07:29:13 22f2409 chore(measure_theory/integral/interval_integral): change of variables for normed-space target (#9350) Re-state change of variables for `interval_integral` for a function with target a real normed space `E`, rather than just `ℝ`. The proofs are exactly the same. ESTIMATED CHANGES Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.integral_comp_smul_deriv'' + theorem interval_integral.integral_comp_smul_deriv' + theorem interval_integral.integral_comp_smul_deriv + theorem interval_integral.integral_deriv_comp_smul_deriv' + theorem interval_integral.integral_deriv_comp_smul_deriv 2021-09-28 06:33:23 1db626e feat(analysis/normed_space/is_bounded_bilinear_map): direct proof of continuity (#9390) Previously `is_bounded_bilinear_map.continuous`, the continuity of a bounded bilinear map, was deduced from its differentiability and lived in `analysis.calculus.fderiv`. This PR gives a direct proof so it can live in `analysis.normed_space.bounded_linear_maps`. Two consequences of this lemma are also moved earlier in the hierarchy: - `continuous_linear_equiv.is_open`, the openness of the set of continuous linear equivalences in the space of continuous linear maps, moves from `analysis.calculus.fderiv` to `analysis.normed_space.bounded_linear_maps` - `continuous_inner`, the continuity of the inner product, moves from `analysis.inner_product_space.calculus` to `analysis.inner_product_space.basic`. Previously discussed at https://github.com/leanprover-community/mathlib/pull/4407#pullrequestreview-506198222 ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean - theorem is_bounded_bilinear_map.continuous - theorem is_bounded_bilinear_map.continuous_left - theorem is_bounded_bilinear_map.continuous_right Modified src/analysis/inner_product_space/basic.lean + theorem continuous.inner + theorem continuous_at.inner + theorem continuous_inner + theorem continuous_on.inner + theorem continuous_within_at.inner + theorem filter.tendsto.inner + theorem is_bounded_bilinear_map_inner Modified src/analysis/inner_product_space/calculus.lean - theorem continuous.inner - theorem continuous_at.inner - theorem continuous_inner - theorem continuous_on.inner - theorem continuous_within_at.inner - theorem filter.tendsto.inner - theorem is_bounded_bilinear_map_inner Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_bilinear_map.continuous + theorem is_bounded_bilinear_map.continuous_left + theorem is_bounded_bilinear_map.continuous_right 2021-09-28 03:23:06 4b5bf56 feat(measure_theory/integral/interval_integral): one more FTC-2 (#9409) ESTIMATED CHANGES Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.integral_eq_integral_of_support_subset + theorem interval_integral.integral_eq_sub_of_has_deriv_at_of_tendsto Modified src/topology/continuous_on.lean + theorem continuous_within_at_update_same + theorem filter.eventually_eq.congr_continuous_within_at Modified src/topology/separation.lean + theorem continuous_on_update_iff + theorem continuous_within_at_update_of_ne + theorem ne.nhds_within_compl_singleton 2021-09-28 01:02:53 8c5d93b feat(analysis/special_functions/complex/log): `exp ⁻¹' s` is countable (#9410) Also prove that the preimage of a countable set under an injective map is countable. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/log.lean + theorem complex.countable_preimage_exp +/- theorem complex.range_exp Modified src/data/set/countable.lean + theorem set.countable.preimage_of_inj_on + theorem set.maps_to.countable_of_inj_on Modified src/data/set/function.lean + theorem set.injective_cod_restrict 2021-09-28 01:02:52 b21bc97 feat(analysis/special_functions): limits of `arg` and `log` at a real negative (#9406) Also add a `can_lift ℂ ℝ` instance. ESTIMATED CHANGES Modified src/analysis/special_functions/complex/arg.lean + theorem complex.continuous_within_at_arg_of_re_neg_of_im_zero + theorem complex.tendsto_arg_nhds_within_im_neg_of_re_neg_of_im_zero + theorem complex.tendsto_arg_nhds_within_im_nonneg_of_re_neg_of_im_zero Modified src/analysis/special_functions/complex/log.lean + theorem complex.continuous_within_at_log_of_re_neg_of_im_zero + theorem complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero + theorem complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Modified src/data/complex/basic.lean 2021-09-27 22:35:23 8279510 feat(*): Clean up some misstated lemmas about algebra (#9417) Similar to #9395 clean up a few lemmas whose statement doesn't match the name / docstring about algebraic things, all of these are duplicates of other lemmas, so look like copy paste errors. ESTIMATED CHANGES Modified src/algebra/group/hom.lean +/- theorem mul_hom.cancel_left Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/data/int/parity.lean +/- theorem int.is_compl_even_odd Modified src/linear_algebra/matrix/symmetric.lean 2021-09-27 20:53:13 0d37fd6 feat(data/polynomial/algebra_map): aeval_tower (#9250) ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean - theorem alg_hom.commutes_of_tower + theorem alg_hom.map_algebra_map Modified src/data/polynomial/algebra_map.lean +/- theorem polynomial.C_eq_algebra_map + def polynomial.aeval_tower + theorem polynomial.aeval_tower_C + theorem polynomial.aeval_tower_X + theorem polynomial.aeval_tower_algebra_map + theorem polynomial.aeval_tower_comp_C + theorem polynomial.aeval_tower_comp_algebra_map + theorem polynomial.aeval_tower_comp_to_alg_hom + theorem polynomial.aeval_tower_id + theorem polynomial.aeval_tower_of_id + theorem polynomial.aeval_tower_to_alg_hom + theorem polynomial.alg_hom_ext' 2021-09-27 17:49:20 f181d81 chore(analysis/special_functions/exp_log): add some missing dot notation lemmas (#9405) ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem continuous.cexp + theorem continuous_at.cexp + theorem continuous_on.cexp + theorem continuous_within_at.cexp + theorem filter.tendsto.cexp 2021-09-27 17:49:19 9175158 refactor(analysis/convex/function): generalize lemmas about convexity/concavity of functions, prove concave Jensen (#9356) `convex_on` and `concave_on` are currently only defined for real vector spaces. This generalizes ℝ to an arbitrary `ordered_semiring`. As a result, we now have the concave Jensen inequality for free. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/analysis/convex/basic.lean +/- theorem convex.combo_self Modified src/analysis/convex/combination.lean Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/function.lean +/- theorem concave_on.add +/- theorem concave_on.comp_affine_map +/- theorem concave_on.comp_linear_map + theorem concave_on.concave_ge - theorem concave_on.concave_le +/- theorem concave_on.convex_hypograph +/- theorem concave_on.convex_lt + theorem concave_on.exists_le_of_center_mass + theorem concave_on.exists_le_of_mem_convex_hull +/- theorem concave_on.inf + theorem concave_on.le_map_center_mass + theorem concave_on.le_map_sum +/- theorem concave_on.le_on_segment' +/- theorem concave_on.le_on_segment +/- theorem concave_on.le_right_of_left_le' +/- theorem concave_on.le_right_of_left_le +/- theorem concave_on.left_le_of_le_right' +/- theorem concave_on.left_le_of_le_right +/- theorem concave_on.slope_mono_adjacent +/- theorem concave_on.smul +/- theorem concave_on.subset +/- theorem concave_on.translate_left +/- theorem concave_on.translate_right +/- def concave_on +/- theorem concave_on_const +/- theorem concave_on_id +/- theorem concave_on_iff_convex_hypograph + theorem concave_on_iff_slope_mono_adjacent + theorem concave_on_of_slope_mono_adjacent - theorem concave_on_real_iff_slope_mono_adjacent - theorem concave_on_real_of_slope_mono_adjacent +/- theorem convex_on.add +/- theorem convex_on.comp_affine_map +/- theorem convex_on.comp_linear_map +/- theorem convex_on.convex_epigraph +/- theorem convex_on.convex_le +/- theorem convex_on.convex_lt +/- theorem convex_on.exists_ge_of_center_mass +/- theorem convex_on.exists_ge_of_mem_convex_hull +/- theorem convex_on.le_left_of_right_le' +/- theorem convex_on.le_left_of_right_le +/- theorem convex_on.le_on_segment' +/- theorem convex_on.le_on_segment +/- theorem convex_on.le_right_of_left_le' +/- theorem convex_on.le_right_of_left_le +/- theorem convex_on.map_center_mass_le +/- theorem convex_on.map_sum_le +/- theorem convex_on.slope_mono_adjacent +/- theorem convex_on.smul +/- theorem convex_on.subset +/- theorem convex_on.sup +/- theorem convex_on.translate_left +/- theorem convex_on.translate_right +/- def convex_on +/- theorem convex_on_const +/- theorem convex_on_id +/- theorem convex_on_iff_convex_epigraph + theorem convex_on_iff_slope_mono_adjacent + theorem convex_on_of_slope_mono_adjacent - theorem convex_on_real_iff_slope_mono_adjacent - theorem convex_on_real_of_slope_mono_adjacent +/- theorem linear_map.concave_on +/- theorem linear_map.convex_on +/- theorem linear_order.concave_on_of_lt +/- theorem linear_order.convex_on_of_lt +/- theorem neg_concave_on_iff +/- theorem neg_convex_on_iff Modified src/analysis/convex/integral.lean 2021-09-27 13:07:20 5dfb76f feat(analysis/calculus/fderiv): generalize `const_smul` lemmas (#9399) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable.const_smul +/- theorem differentiable_at.const_smul +/- theorem differentiable_on.const_smul +/- theorem differentiable_within_at.const_smul +/- theorem fderiv_const_smul +/- theorem has_fderiv_at.const_smul +/- theorem has_fderiv_at_filter.const_smul +/- theorem has_fderiv_within_at.const_smul +/- theorem has_strict_fderiv_at.const_smul 2021-09-27 13:07:18 954896a feat(data/nat/choose/cast): Cast of binomial coefficients equals a Pochhammer polynomial (#9394) This adds some glue between `nat.factorial`/`nat.asc_factorial`/`nat.desc_factorial` and `pochhammer` to provide some API to calculate binomial coefficients in a semiring. For example, `n.choose 2` as a real is `n * (n - 1)/2`. I also move files as such: * create `data.nat.choose.cast` * create `data.nat.factorial.cast` * rename `data.nat.factorial` to `data.nat.factorial.basic` ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean Added src/data/nat/choose/cast.lean + theorem nat.cast_add_choose + theorem nat.cast_choose + theorem nat.cast_choose_eq_pochhammer_div + theorem nat.cast_choose_two Modified src/data/nat/choose/default.lean Modified src/data/nat/choose/dvd.lean - theorem nat.cast_add_choose - theorem nat.cast_choose Renamed src/data/nat/factorial.lean to src/data/nat/factorial/basic.lean + theorem nat.factorial_two Added src/data/nat/factorial/cast.lean + theorem nat.cast_asc_factorial + theorem nat.cast_desc_factorial + theorem nat.cast_desc_factorial_two + theorem nat.cast_factorial Modified src/data/polynomial/hasse_deriv.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/ring_theory/polynomial/pochhammer.lean + theorem pochhammer_nat_eq_desc_factorial + theorem pochhammer_succ_eval 2021-09-27 13:07:17 9a30f8c refactor(data/fin): drop `fin.cast_add_right` (#9371) This was a duplicate of `fin.nat_add`. Also simplify some definitions of equivalences. ESTIMATED CHANGES Modified src/data/equiv/fin.lean + theorem fin_add_flip_apply_cast_add - theorem fin_add_flip_apply_left + theorem fin_add_flip_apply_mk_left + theorem fin_add_flip_apply_mk_right + theorem fin_add_flip_apply_nat_add - theorem fin_add_flip_apply_right + theorem fin_succ_equiv'_succ_above + theorem fin_succ_equiv'_symm_some +/- theorem fin_sum_fin_equiv_symm_apply_cast_add - theorem fin_sum_fin_equiv_symm_apply_cast_add_right - theorem fin_sum_fin_equiv_symm_apply_left + theorem fin_sum_fin_equiv_symm_apply_nat_add - theorem fin_sum_fin_equiv_symm_apply_right Modified src/data/fin.lean +/- def fin.add_cases + theorem fin.add_nat_mk + theorem fin.add_nat_sub_nat + theorem fin.cast_add_cast_lt + theorem fin.cast_add_nat - def fin.cast_add_right + theorem fin.cast_lt_cast_add + theorem fin.cast_nat_add - theorem fin.coe_cast_add_right - theorem fin.le_cast_add_right + theorem fin.le_coe_add_nat + theorem fin.le_coe_nat_add + theorem fin.nat_add_mk + theorem fin.nat_add_sub_nat_cast + theorem fin.sub_nat_add_nat + theorem fin.sub_nat_mk 2021-09-27 10:29:19 850784c chore(order/*): rename `strict_mono_{incr,decr}_on` to `strict_{mono,anti}_on` (#9401) This was done as a direct find and replace ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/algebra/group_power/order.lean - theorem strict_mono_incr_on_pow + theorem strict_mono_on_pow Modified src/algebra/order/field.lean + theorem one_div_strict_anti_on - theorem one_div_strict_mono_decr_on Modified src/algebra/order/ring.lean - theorem strict_mono_incr_on_mul_self + theorem strict_mono_on_mul_self Modified src/analysis/special_functions/exp_log.lean + theorem real.strict_anti_on_log - theorem real.strict_mono_decr_on_log - theorem real.strict_mono_incr_on_log + theorem real.strict_mono_on_log Modified src/analysis/special_functions/trigonometric/arctan.lean Modified src/analysis/special_functions/trigonometric/basic.lean +/- theorem real.inj_on_cos + theorem real.strict_anti_on_cos - theorem real.strict_mono_decr_on_cos - theorem real.strict_mono_incr_on_sin - theorem real.strict_mono_incr_on_tan + theorem real.strict_mono_on_sin + theorem real.strict_mono_on_tan Modified src/analysis/special_functions/trigonometric/inverse.lean +/- theorem real.arccos_inj_on +/- theorem real.inj_on_arcsin + theorem real.strict_anti_on_arccos - theorem real.strict_mono_decr_on_arccos - theorem real.strict_mono_incr_on_arcsin + theorem real.strict_mono_on_arcsin Modified src/data/set/function.lean + theorem strict_anti_on.inj_on - theorem strict_mono.comp_strict_mono_incr_on + theorem strict_mono.comp_strict_mono_on - theorem strict_mono_decr_on.inj_on - theorem strict_mono_incr_on.comp - theorem strict_mono_incr_on.inj_on + theorem strict_mono_on.comp + theorem strict_mono_on.inj_on Modified src/data/set/intervals/proj_Icc.lean - theorem set.strict_mono_incr_on_proj_Icc + theorem set.strict_mono_on_proj_Icc - theorem strict_mono.strict_mono_incr_on_Icc_extend + theorem strict_mono.strict_mono_on_Icc_extend Modified src/order/basic.lean + theorem strict_anti_on.le_iff_le + theorem strict_anti_on.lt_iff_lt + def strict_anti_on - theorem strict_mono_decr_on.le_iff_le - theorem strict_mono_decr_on.lt_iff_lt - def strict_mono_decr_on - theorem strict_mono_incr_on.le_iff_le - theorem strict_mono_incr_on.lt_iff_lt - def strict_mono_incr_on + theorem strict_mono_on.le_iff_le + theorem strict_mono_on.lt_iff_lt + def strict_mono_on Modified src/order/rel_iso.lean Modified src/topology/algebra/ordered/basic.lean - theorem strict_mono_incr_on.continuous_at_left_of_closure_image_mem_nhds_within - theorem strict_mono_incr_on.continuous_at_left_of_exists_between - theorem strict_mono_incr_on.continuous_at_left_of_image_mem_nhds_within - theorem strict_mono_incr_on.continuous_at_left_of_surj_on - theorem strict_mono_incr_on.continuous_at_of_closure_image_mem_nhds - theorem strict_mono_incr_on.continuous_at_of_exists_between - theorem strict_mono_incr_on.continuous_at_of_image_mem_nhds - theorem strict_mono_incr_on.continuous_at_right_of_closure_image_mem_nhds_within - theorem strict_mono_incr_on.continuous_at_right_of_exists_between - theorem strict_mono_incr_on.continuous_at_right_of_image_mem_nhds_within - theorem strict_mono_incr_on.continuous_at_right_of_surj_on + theorem strict_mono_on.continuous_at_left_of_closure_image_mem_nhds_within + theorem strict_mono_on.continuous_at_left_of_exists_between + theorem strict_mono_on.continuous_at_left_of_image_mem_nhds_within + theorem strict_mono_on.continuous_at_left_of_surj_on + theorem strict_mono_on.continuous_at_of_closure_image_mem_nhds + theorem strict_mono_on.continuous_at_of_exists_between + theorem strict_mono_on.continuous_at_of_image_mem_nhds + theorem strict_mono_on.continuous_at_right_of_closure_image_mem_nhds_within + theorem strict_mono_on.continuous_at_right_of_exists_between + theorem strict_mono_on.continuous_at_right_of_image_mem_nhds_within + theorem strict_mono_on.continuous_at_right_of_surj_on 2021-09-27 10:29:16 1472799 chore(order): globally replace "antimono" with "antitone" (#9400) This was done with the regex `(?<=\b|_)antimono(?=\b|_)` ESTIMATED CHANGES Modified src/algebra/lie/solvable.lean - theorem lie_algebra.derived_series_of_ideal_antimono + theorem lie_algebra.derived_series_of_ideal_antitone Modified src/analysis/calculus/mean_value.lean - theorem antimono_of_deriv_nonpos + theorem antitone_of_deriv_nonpos - theorem concave_on_of_deriv_antimono + theorem concave_on_of_deriv_antitone - theorem concave_on_univ_of_deriv_antimono + theorem concave_on_univ_of_deriv_antitone - theorem convex.antimono_of_deriv_nonpos + theorem convex.antitone_of_deriv_nonpos - theorem convex.strict_antimono_of_deriv_neg + theorem convex.strict_antitone_of_deriv_neg - theorem strict_antimono_of_deriv_neg + theorem strict_antitone_of_deriv_neg Modified src/analysis/special_functions/integrals.lean - theorem integral_sin_pow_antimono + theorem integral_sin_pow_antitone Modified src/data/real/pi/wallis.lean Modified src/group_theory/nilpotent.lean - theorem lower_central_series_antimono + theorem lower_central_series_antitone Modified src/measure_theory/constructions/borel_space.lean - theorem ae_measurable_restrict_of_antimono_on + theorem ae_measurable_restrict_of_antitone_on - theorem measurable_of_antimono + theorem measurable_of_antitone Modified src/measure_theory/function/ess_sup.lean - theorem ess_inf_antimono_measure + theorem ess_inf_antitone_measure Modified src/measure_theory/function/lp_space.lean - theorem measure_theory.Lp.antimono + theorem measure_theory.Lp.antitone Modified src/measure_theory/integral/integrable_on.lean - theorem integrable_on_compact_of_antimono - theorem integrable_on_compact_of_antimono_on + theorem integrable_on_compact_of_antitone + theorem integrable_on_compact_of_antitone_on Modified src/measure_theory/integral/interval_integral.lean - theorem interval_integrable_of_antimono - theorem interval_integrable_of_antimono_on + theorem interval_integrable_of_antitone + theorem interval_integrable_of_antitone_on Modified src/measure_theory/integral/set_integral.lean - theorem measure_theory.tendsto_set_integral_of_antimono + theorem measure_theory.tendsto_set_integral_of_antitone Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean - theorem is_compl.antimono + theorem is_compl.antitone Modified src/order/filter/at_top_bot.lean - theorem filter.has_antimono_basis.tendsto + theorem filter.has_antitone_basis.tendsto Modified src/order/filter/bases.lean - theorem filter.antimono_seq_of_seq + theorem filter.antitone_seq_of_seq - structure filter.has_antimono_basis + structure filter.has_antitone_basis - structure filter.is_antimono_basis + structure filter.is_antitone_basis - theorem filter.is_countably_generated.exists_antimono_basis - theorem filter.is_countably_generated.exists_antimono_seq' - theorem filter.is_countably_generated.exists_antimono_subbasis + theorem filter.is_countably_generated.exists_antitone_basis + theorem filter.is_countably_generated.exists_antitone_seq' + theorem filter.is_countably_generated.exists_antitone_subbasis - theorem filter.is_countably_generated_iff_exists_antimono_basis + theorem filter.is_countably_generated_iff_exists_antitone_basis Modified src/order/filter/extr.lean - theorem is_extr_filter.comp_antimono + theorem is_extr_filter.comp_antitone - theorem is_extr_on.comp_antimono + theorem is_extr_on.comp_antitone - theorem is_max_filter.comp_antimono + theorem is_max_filter.comp_antitone - theorem is_max_on.comp_antimono + theorem is_max_on.comp_antitone - theorem is_min_filter.comp_antimono + theorem is_min_filter.comp_antitone - theorem is_min_on.comp_antimono + theorem is_min_on.comp_antitone Modified src/order/filter/indicator_function.lean - theorem tendsto_indicator_of_antimono + theorem tendsto_indicator_of_antitone Modified src/topology/G_delta.lean Modified src/topology/algebra/ordered/basic.lean - theorem exists_seq_strict_antimono_tendsto' - theorem exists_seq_strict_antimono_tendsto + theorem exists_seq_strict_antitone_tendsto' + theorem exists_seq_strict_antitone_tendsto Modified src/topology/local_extr.lean - theorem is_local_extr.comp_antimono + theorem is_local_extr.comp_antitone - theorem is_local_extr_on.comp_antimono + theorem is_local_extr_on.comp_antitone - theorem is_local_max.comp_antimono + theorem is_local_max.comp_antitone - theorem is_local_max_on.comp_antimono + theorem is_local_max_on.comp_antitone - theorem is_local_min.comp_antimono + theorem is_local_min.comp_antitone - theorem is_local_min_on.comp_antimono + theorem is_local_min_on.comp_antitone Modified src/topology/semicontinuous.lean - theorem continuous.comp_lower_semicontinuous_antimono + theorem continuous.comp_lower_semicontinuous_antitone - theorem continuous.comp_lower_semicontinuous_on_antimono + theorem continuous.comp_lower_semicontinuous_on_antitone - theorem continuous.comp_upper_semicontinuous_antimono + theorem continuous.comp_upper_semicontinuous_antitone - theorem continuous.comp_upper_semicontinuous_on_antimono + theorem continuous.comp_upper_semicontinuous_on_antitone - theorem continuous_at.comp_lower_semicontinuous_at_antimono + theorem continuous_at.comp_lower_semicontinuous_at_antitone - theorem continuous_at.comp_lower_semicontinuous_within_at_antimono + theorem continuous_at.comp_lower_semicontinuous_within_at_antitone - theorem continuous_at.comp_upper_semicontinuous_at_antimono + theorem continuous_at.comp_upper_semicontinuous_at_antitone - theorem continuous_at.comp_upper_semicontinuous_within_at_antimono + theorem continuous_at.comp_upper_semicontinuous_within_at_antitone Modified src/topology/sequences.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean 2021-09-27 10:29:14 d1c68ef docs(docker): adjust readme to reflect that the PR was merged (#9303) ESTIMATED CHANGES Modified .docker/README.md 2021-09-27 09:34:51 cafd6fb chore(measure_theory/decomposition/lebesgue): rename `radon_nikodym_deriv` to `rn_deriv` (#9386) ESTIMATED CHANGES Modified src/measure_theory/decomposition/lebesgue.lean - theorem measure_theory.measure.eq_radon_nikodym_deriv + theorem measure_theory.measure.eq_rn_deriv - theorem measure_theory.measure.lintegral_radon_nikodym_deriv_lt_top + theorem measure_theory.measure.lintegral_rn_deriv_lt_top - theorem measure_theory.measure.measurable_radon_nikodym_deriv + theorem measure_theory.measure.measurable_rn_deriv - def measure_theory.measure.radon_nikodym_deriv + def measure_theory.measure.rn_deriv - theorem measure_theory.measure.with_density_radon_nikodym_deriv_le + theorem measure_theory.measure.with_density_rn_deriv_le - theorem measure_theory.signed_measure.eq_radon_nikodym_deriv + theorem measure_theory.signed_measure.eq_rn_deriv - theorem measure_theory.signed_measure.integrable_radon_nikodym_deriv + theorem measure_theory.signed_measure.integrable_rn_deriv - theorem measure_theory.signed_measure.measurable_radon_nikodym_deriv + theorem measure_theory.signed_measure.measurable_rn_deriv - def measure_theory.signed_measure.radon_nikodym_deriv - theorem measure_theory.signed_measure.radon_nikodym_deriv_add - theorem measure_theory.signed_measure.radon_nikodym_deriv_neg - theorem measure_theory.signed_measure.radon_nikodym_deriv_smul - theorem measure_theory.signed_measure.radon_nikodym_deriv_sub + def measure_theory.signed_measure.rn_deriv + theorem measure_theory.signed_measure.rn_deriv_add + theorem measure_theory.signed_measure.rn_deriv_neg + theorem measure_theory.signed_measure.rn_deriv_smul + theorem measure_theory.signed_measure.rn_deriv_sub - theorem measure_theory.signed_measure.singular_part_add_with_density_radon_nikodym_deriv_eq + theorem measure_theory.signed_measure.singular_part_add_with_density_rn_deriv_eq Modified src/measure_theory/decomposition/radon_nikodym.lean - theorem measure_theory.measure.absolutely_continuous_iff_with_density_radon_nikodym_deriv_eq + theorem measure_theory.measure.absolutely_continuous_iff_with_density_rn_deriv_eq - theorem measure_theory.measure.with_density_radon_nikodym_deriv_eq - theorem measure_theory.measure.with_density_radon_nikodym_deriv_to_real_eq + theorem measure_theory.measure.with_density_rn_deriv_eq + theorem measure_theory.measure.with_density_rn_deriv_to_real_eq - theorem measure_theory.signed_measure.absolutely_continuous_iff_with_densityᵥ_radon_nikodym_deriv_eq + theorem measure_theory.signed_measure.absolutely_continuous_iff_with_densityᵥ_rn_deriv_eq - theorem measure_theory.signed_measure.with_densityᵥ_radon_nikodym_deriv_eq + theorem measure_theory.signed_measure.with_densityᵥ_rn_deriv_eq 2021-09-27 04:20:23 a4b92a3 refactor(analysis/special_functions/trigonometric): split file (#9340) Another mammoth file, cut into several pieces. ESTIMATED CHANGES Modified archive/100-theorems-list/57_herons_formula.lean Modified archive/imo/imo1962_q4.lean Modified src/analysis/complex/roots_of_unity.lean Modified src/analysis/special_functions/arsinh.lean Added src/analysis/special_functions/complex/arg.lean + theorem complex.arg_I + theorem complex.arg_cos_add_sin_mul_I + theorem complex.arg_eq_arg_iff + theorem complex.arg_eq_arg_neg_add_pi_of_im_nonneg_of_re_neg + theorem complex.arg_eq_arg_neg_sub_pi_of_im_neg_of_re_neg + theorem complex.arg_eq_pi_iff + theorem complex.arg_le_pi + theorem complex.arg_neg_I + theorem complex.arg_neg_one + theorem complex.arg_of_real_of_neg + theorem complex.arg_of_real_of_nonneg + theorem complex.arg_one + theorem complex.arg_real_mul + theorem complex.arg_zero + theorem complex.cos_arg + theorem complex.ext_abs_arg + theorem complex.neg_pi_lt_arg + theorem complex.sin_arg + theorem complex.tan_arg Added src/analysis/special_functions/complex/log.lean + theorem complex.exists_eq_mul_self + theorem complex.exists_pow_nat_eq + theorem complex.exp_eq_exp_iff_exists_int + theorem complex.exp_eq_exp_iff_exp_sub_eq_one + theorem complex.exp_eq_one_iff + theorem complex.exp_inj_of_neg_pi_lt_of_le_pi + def complex.exp_local_homeomorph + theorem complex.exp_log + theorem complex.has_strict_deriv_at_log + theorem complex.log_I + theorem complex.log_exp + theorem complex.log_im + theorem complex.log_im_le_pi + theorem complex.log_neg_I + theorem complex.log_neg_one + theorem complex.log_of_real_re + theorem complex.log_one + theorem complex.log_re + theorem complex.log_zero + theorem complex.neg_pi_lt_log_im + theorem complex.of_real_log + theorem complex.range_exp + theorem complex.times_cont_diff_at_log + theorem complex.two_pi_I_ne_zero + theorem continuous.clog + theorem continuous_at.clog + theorem continuous_on.clog + theorem continuous_within_at.clog + theorem differentiable.clog + theorem differentiable_at.clog + theorem differentiable_on.clog + theorem differentiable_within_at.clog + theorem filter.tendsto.clog + theorem has_deriv_at.clog + theorem has_deriv_within_at.clog + theorem has_fderiv_at.clog + theorem has_fderiv_within_at.clog + theorem has_strict_deriv_at.clog + theorem has_strict_fderiv_at.clog Modified src/analysis/special_functions/pow.lean Added src/analysis/special_functions/trigonometric/arctan.lean + theorem deriv_arctan + theorem deriv_within_arctan + theorem differentiable.arctan + theorem differentiable_at.arctan + theorem differentiable_on.arctan + theorem differentiable_within_at.arctan + theorem fderiv_arctan + theorem fderiv_within_arctan + theorem has_deriv_at.arctan + theorem has_deriv_within_at.arctan + theorem has_fderiv_at.arctan + theorem has_fderiv_within_at.arctan + theorem has_strict_deriv_at.arctan + theorem has_strict_fderiv_at.arctan + theorem real.arcsin_eq_arctan + theorem real.arctan_eq_arcsin + theorem real.arctan_eq_of_tan_eq + theorem real.arctan_lt_pi_div_two + theorem real.arctan_mem_Ioo + theorem real.arctan_neg + theorem real.arctan_one + theorem real.arctan_tan + theorem real.arctan_zero + theorem real.coe_tan_local_homeomorph + theorem real.coe_tan_local_homeomorph_symm + theorem real.continuous_arctan + theorem real.continuous_at_arctan + theorem real.continuous_at_tan + theorem real.continuous_on_tan + theorem real.continuous_on_tan_Ioo + theorem real.continuous_tan + theorem real.cos_arctan + theorem real.cos_arctan_pos + theorem real.cos_sq_arctan + theorem real.deriv_arctan + theorem real.deriv_tan + theorem real.differentiable_arctan + theorem real.differentiable_at_arctan + theorem real.differentiable_at_tan + theorem real.differentiable_at_tan_of_mem_Ioo + theorem real.has_deriv_at_arctan + theorem real.has_deriv_at_tan + theorem real.has_deriv_at_tan_of_mem_Ioo + theorem real.has_strict_deriv_at_arctan + theorem real.has_strict_deriv_at_tan + theorem real.image_tan_Ioo + theorem real.neg_pi_div_two_lt_arctan + theorem real.sin_arctan + theorem real.surj_on_tan + theorem real.tan_add' + theorem real.tan_add + theorem real.tan_arctan + theorem real.tan_eq_zero_iff + theorem real.tan_int_mul_pi_div_two + def real.tan_local_homeomorph + theorem real.tan_ne_zero_iff + def real.tan_order_iso + theorem real.tan_surjective + theorem real.tan_two_mul + theorem real.tendsto_abs_tan_at_top + theorem real.tendsto_abs_tan_of_cos_eq_zero + theorem real.times_cont_diff_arctan + theorem real.times_cont_diff_at_tan + theorem times_cont_diff.arctan + theorem times_cont_diff_at.arctan + theorem times_cont_diff_on.arctan + theorem times_cont_diff_within_at.arctan Renamed src/analysis/special_functions/trigonometric.lean to src/analysis/special_functions/trigonometric/basic.lean - theorem complex.arg_I - theorem complex.arg_cos_add_sin_mul_I - theorem complex.arg_eq_arg_iff - theorem complex.arg_eq_arg_neg_add_pi_of_im_nonneg_of_re_neg - theorem complex.arg_eq_arg_neg_sub_pi_of_im_neg_of_re_neg - theorem complex.arg_eq_pi_iff - theorem complex.arg_le_pi - theorem complex.arg_neg_I - theorem complex.arg_neg_one - theorem complex.arg_of_real_of_neg - theorem complex.arg_of_real_of_nonneg - theorem complex.arg_one - theorem complex.arg_real_mul - theorem complex.arg_zero - theorem complex.continuous_at_tan - theorem complex.continuous_on_tan - theorem complex.continuous_tan - theorem complex.cos_arg - theorem complex.cos_eq_cos_iff - theorem complex.cos_eq_iff_quadratic - theorem complex.cos_eq_zero_iff - theorem complex.cos_ne_zero_iff - theorem complex.cos_surjective - theorem complex.deriv_tan - theorem complex.differentiable_at_tan - theorem complex.exists_eq_mul_self - theorem complex.exists_pow_nat_eq - theorem complex.exp_eq_exp_iff_exists_int - theorem complex.exp_eq_exp_iff_exp_sub_eq_one - theorem complex.exp_eq_one_iff - theorem complex.exp_inj_of_neg_pi_lt_of_le_pi - def complex.exp_local_homeomorph - theorem complex.exp_log - theorem complex.ext_abs_arg - theorem complex.has_deriv_at_tan - theorem complex.has_strict_deriv_at_log - theorem complex.has_strict_deriv_at_tan - theorem complex.log_I - theorem complex.log_exp - theorem complex.log_im - theorem complex.log_im_le_pi - theorem complex.log_neg_I - theorem complex.log_neg_one - theorem complex.log_of_real_re - theorem complex.log_one - theorem complex.log_re - theorem complex.log_zero - theorem complex.neg_pi_lt_arg - theorem complex.neg_pi_lt_log_im - theorem complex.of_real_log - theorem complex.range_cos - theorem complex.range_exp - theorem complex.range_sin - theorem complex.sin_arg - theorem complex.sin_eq_sin_iff - theorem complex.sin_eq_zero_iff - theorem complex.sin_ne_zero_iff - theorem complex.sin_surjective - theorem complex.tan_add' - theorem complex.tan_add - theorem complex.tan_add_mul_I - theorem complex.tan_arg - theorem complex.tan_eq - theorem complex.tan_eq_zero_iff - theorem complex.tan_int_mul_pi_div_two - theorem complex.tan_ne_zero_iff - theorem complex.tan_two_mul - theorem complex.tendsto_abs_tan_at_top - theorem complex.tendsto_abs_tan_of_cos_eq_zero - theorem complex.times_cont_diff_at_log - theorem complex.times_cont_diff_at_tan - theorem complex.two_pi_I_ne_zero - theorem continuous.clog - theorem continuous_at.clog - theorem continuous_on.clog - theorem continuous_within_at.clog - theorem deriv_arctan - theorem deriv_within_arctan - theorem differentiable.arctan - theorem differentiable.clog - theorem differentiable_at.arctan - theorem differentiable_at.clog - theorem differentiable_on.arctan - theorem differentiable_on.clog - theorem differentiable_within_at.arctan - theorem differentiable_within_at.clog - theorem fderiv_arctan - theorem fderiv_within_arctan - theorem filter.tendsto.clog - theorem has_deriv_at.arctan - theorem has_deriv_at.clog - theorem has_deriv_within_at.arctan - theorem has_deriv_within_at.clog - theorem has_fderiv_at.arctan - theorem has_fderiv_at.clog - theorem has_fderiv_within_at.arctan - theorem has_fderiv_within_at.clog - theorem has_strict_deriv_at.arctan - theorem has_strict_deriv_at.clog - theorem has_strict_fderiv_at.arctan - theorem has_strict_fderiv_at.clog - theorem polynomial.chebyshev.T_complex_cos - theorem polynomial.chebyshev.U_complex_cos - theorem polynomial.chebyshev.cos_nat_mul - theorem polynomial.chebyshev.sin_nat_succ_mul - theorem real.arccos_cos - theorem real.arccos_eq_pi - theorem real.arccos_eq_pi_div_two - theorem real.arccos_eq_pi_div_two_sub_arcsin - theorem real.arccos_eq_zero - theorem real.arccos_inj - theorem real.arccos_inj_on - theorem real.arccos_le_pi - theorem real.arccos_neg - theorem real.arccos_neg_one - theorem real.arccos_nonneg - theorem real.arccos_one - theorem real.arccos_zero - theorem real.arcsin_eq_arctan - theorem real.arcsin_eq_iff_eq_sin - theorem real.arcsin_eq_neg_pi_div_two - theorem real.arcsin_eq_of_sin_eq - theorem real.arcsin_eq_pi_div_two - theorem real.arcsin_eq_pi_div_two_sub_arccos - theorem real.arcsin_eq_zero_iff - theorem real.arcsin_inj - theorem real.arcsin_le_iff_le_sin' - theorem real.arcsin_le_iff_le_sin - theorem real.arcsin_le_neg_pi_div_two - theorem real.arcsin_le_pi_div_two - theorem real.arcsin_lt_iff_lt_sin' - theorem real.arcsin_lt_iff_lt_sin - theorem real.arcsin_lt_pi_div_two - theorem real.arcsin_lt_zero - theorem real.arcsin_mem_Icc - theorem real.arcsin_neg - theorem real.arcsin_neg_one - theorem real.arcsin_nonneg - theorem real.arcsin_nonpos - theorem real.arcsin_of_le_neg_one - theorem real.arcsin_of_one_le - theorem real.arcsin_one - theorem real.arcsin_pos - theorem real.arcsin_proj_Icc - theorem real.arcsin_sin' - theorem real.arcsin_sin - theorem real.arcsin_zero - theorem real.arctan_eq_arcsin - theorem real.arctan_eq_of_tan_eq - theorem real.arctan_lt_pi_div_two - theorem real.arctan_mem_Ioo - theorem real.arctan_neg - theorem real.arctan_one - theorem real.arctan_tan - theorem real.arctan_zero - theorem real.coe_tan_local_homeomorph - theorem real.coe_tan_local_homeomorph_symm - theorem real.continuous_arccos - theorem real.continuous_arcsin - theorem real.continuous_arctan - theorem real.continuous_at_arcsin - theorem real.continuous_at_arctan - theorem real.continuous_at_tan - theorem real.continuous_on_tan - theorem real.continuous_on_tan_Ioo - theorem real.continuous_tan - theorem real.cos_arccos - theorem real.cos_arcsin - theorem real.cos_arcsin_nonneg - theorem real.cos_arctan - theorem real.cos_arctan_pos - theorem real.cos_eq_cos_iff - theorem real.cos_eq_zero_iff - theorem real.cos_ne_zero_iff - theorem real.cos_sq_arctan - theorem real.deriv_arccos - theorem real.deriv_arcsin - theorem real.deriv_arcsin_aux - theorem real.deriv_arctan - theorem real.deriv_tan - theorem real.differentiable_arctan - theorem real.differentiable_at_arccos - theorem real.differentiable_at_arcsin - theorem real.differentiable_at_arctan - theorem real.differentiable_at_tan - theorem real.differentiable_at_tan_of_mem_Ioo - theorem real.differentiable_on_arccos - theorem real.differentiable_on_arcsin - theorem real.differentiable_within_at_arccos_Ici - theorem real.differentiable_within_at_arccos_Iic - theorem real.differentiable_within_at_arcsin_Ici - theorem real.differentiable_within_at_arcsin_Iic - theorem real.has_deriv_at_arccos - theorem real.has_deriv_at_arcsin - theorem real.has_deriv_at_arctan - theorem real.has_deriv_at_tan - theorem real.has_deriv_at_tan_of_mem_Ioo - theorem real.has_deriv_within_at_arccos_Ici - theorem real.has_deriv_within_at_arccos_Iic - theorem real.has_deriv_within_at_arcsin_Ici - theorem real.has_deriv_within_at_arcsin_Iic - theorem real.has_strict_deriv_at_arccos - theorem real.has_strict_deriv_at_arcsin - theorem real.has_strict_deriv_at_arctan - theorem real.has_strict_deriv_at_tan - theorem real.image_tan_Ioo - theorem real.inj_on_arcsin - theorem real.le_arcsin_iff_sin_le' - theorem real.le_arcsin_iff_sin_le - theorem real.lt_arcsin_iff_sin_lt' - theorem real.lt_arcsin_iff_sin_lt - theorem real.maps_to_sin_Ioo - theorem real.monotone_arcsin - theorem real.neg_pi_div_two_eq_arcsin - theorem real.neg_pi_div_two_le_arcsin - theorem real.neg_pi_div_two_lt_arcsin - theorem real.neg_pi_div_two_lt_arctan - theorem real.pi_div_two_eq_arcsin - theorem real.pi_div_two_le_arcsin - theorem real.range_arcsin - theorem real.sin_arccos - theorem real.sin_arcsin' - theorem real.sin_arcsin - theorem real.sin_arctan - theorem real.sin_eq_sin_iff - def real.sin_local_homeomorph - theorem real.strict_mono_decr_on_arccos - theorem real.strict_mono_incr_on_arcsin - theorem real.surj_on_tan - theorem real.tan_add' - theorem real.tan_add - theorem real.tan_arctan - theorem real.tan_eq_zero_iff - theorem real.tan_int_mul_pi_div_two - def real.tan_local_homeomorph - theorem real.tan_ne_zero_iff - def real.tan_order_iso - theorem real.tan_surjective - theorem real.tan_two_mul - theorem real.tendsto_abs_tan_at_top - theorem real.tendsto_abs_tan_of_cos_eq_zero - theorem real.times_cont_diff_arctan - theorem real.times_cont_diff_at_arccos - theorem real.times_cont_diff_at_arccos_iff - theorem real.times_cont_diff_at_arcsin - theorem real.times_cont_diff_at_arcsin_iff - theorem real.times_cont_diff_at_tan - theorem real.times_cont_diff_on_arccos - theorem real.times_cont_diff_on_arcsin - theorem real.zero_eq_arcsin_iff - theorem times_cont_diff.arctan - theorem times_cont_diff_at.arctan - theorem times_cont_diff_on.arctan - theorem times_cont_diff_within_at.arctan Added src/analysis/special_functions/trigonometric/chebyshev.lean + theorem polynomial.chebyshev.T_complex_cos + theorem polynomial.chebyshev.U_complex_cos + theorem polynomial.chebyshev.cos_nat_mul + theorem polynomial.chebyshev.sin_nat_succ_mul Added src/analysis/special_functions/trigonometric/complex.lean + theorem complex.continuous_at_tan + theorem complex.continuous_on_tan + theorem complex.continuous_tan + theorem complex.cos_eq_cos_iff + theorem complex.cos_eq_iff_quadratic + theorem complex.cos_eq_zero_iff + theorem complex.cos_ne_zero_iff + theorem complex.cos_surjective + theorem complex.deriv_tan + theorem complex.differentiable_at_tan + theorem complex.has_deriv_at_tan + theorem complex.has_strict_deriv_at_tan + theorem complex.range_cos + theorem complex.range_sin + theorem complex.sin_eq_sin_iff + theorem complex.sin_eq_zero_iff + theorem complex.sin_ne_zero_iff + theorem complex.sin_surjective + theorem complex.tan_add' + theorem complex.tan_add + theorem complex.tan_add_mul_I + theorem complex.tan_eq + theorem complex.tan_eq_zero_iff + theorem complex.tan_int_mul_pi_div_two + theorem complex.tan_ne_zero_iff + theorem complex.tan_two_mul + theorem complex.tendsto_abs_tan_at_top + theorem complex.tendsto_abs_tan_of_cos_eq_zero + theorem complex.times_cont_diff_at_tan + theorem real.cos_eq_cos_iff + theorem real.cos_eq_zero_iff + theorem real.cos_ne_zero_iff + theorem real.sin_eq_sin_iff Added src/analysis/special_functions/trigonometric/inverse.lean + theorem real.arccos_cos + theorem real.arccos_eq_pi + theorem real.arccos_eq_pi_div_two + theorem real.arccos_eq_pi_div_two_sub_arcsin + theorem real.arccos_eq_zero + theorem real.arccos_inj + theorem real.arccos_inj_on + theorem real.arccos_le_pi + theorem real.arccos_neg + theorem real.arccos_neg_one + theorem real.arccos_nonneg + theorem real.arccos_one + theorem real.arccos_zero + theorem real.arcsin_eq_iff_eq_sin + theorem real.arcsin_eq_neg_pi_div_two + theorem real.arcsin_eq_of_sin_eq + theorem real.arcsin_eq_pi_div_two + theorem real.arcsin_eq_pi_div_two_sub_arccos + theorem real.arcsin_eq_zero_iff + theorem real.arcsin_inj + theorem real.arcsin_le_iff_le_sin' + theorem real.arcsin_le_iff_le_sin + theorem real.arcsin_le_neg_pi_div_two + theorem real.arcsin_le_pi_div_two + theorem real.arcsin_lt_iff_lt_sin' + theorem real.arcsin_lt_iff_lt_sin + theorem real.arcsin_lt_pi_div_two + theorem real.arcsin_lt_zero + theorem real.arcsin_mem_Icc + theorem real.arcsin_neg + theorem real.arcsin_neg_one + theorem real.arcsin_nonneg + theorem real.arcsin_nonpos + theorem real.arcsin_of_le_neg_one + theorem real.arcsin_of_one_le + theorem real.arcsin_one + theorem real.arcsin_pos + theorem real.arcsin_proj_Icc + theorem real.arcsin_sin' + theorem real.arcsin_sin + theorem real.arcsin_zero + theorem real.continuous_arccos + theorem real.continuous_arcsin + theorem real.continuous_at_arcsin + theorem real.cos_arccos + theorem real.cos_arcsin + theorem real.cos_arcsin_nonneg + theorem real.deriv_arccos + theorem real.deriv_arcsin + theorem real.deriv_arcsin_aux + theorem real.differentiable_at_arccos + theorem real.differentiable_at_arcsin + theorem real.differentiable_on_arccos + theorem real.differentiable_on_arcsin + theorem real.differentiable_within_at_arccos_Ici + theorem real.differentiable_within_at_arccos_Iic + theorem real.differentiable_within_at_arcsin_Ici + theorem real.differentiable_within_at_arcsin_Iic + theorem real.has_deriv_at_arccos + theorem real.has_deriv_at_arcsin + theorem real.has_deriv_within_at_arccos_Ici + theorem real.has_deriv_within_at_arccos_Iic + theorem real.has_deriv_within_at_arcsin_Ici + theorem real.has_deriv_within_at_arcsin_Iic + theorem real.has_strict_deriv_at_arccos + theorem real.has_strict_deriv_at_arcsin + theorem real.inj_on_arcsin + theorem real.le_arcsin_iff_sin_le' + theorem real.le_arcsin_iff_sin_le + theorem real.lt_arcsin_iff_sin_lt' + theorem real.lt_arcsin_iff_sin_lt + theorem real.maps_to_sin_Ioo + theorem real.monotone_arcsin + theorem real.neg_pi_div_two_eq_arcsin + theorem real.neg_pi_div_two_le_arcsin + theorem real.neg_pi_div_two_lt_arcsin + theorem real.pi_div_two_eq_arcsin + theorem real.pi_div_two_le_arcsin + theorem real.range_arcsin + theorem real.sin_arccos + theorem real.sin_arcsin' + theorem real.sin_arcsin + def real.sin_local_homeomorph + theorem real.strict_mono_decr_on_arccos + theorem real.strict_mono_incr_on_arcsin + theorem real.times_cont_diff_at_arccos + theorem real.times_cont_diff_at_arccos_iff + theorem real.times_cont_diff_at_arcsin + theorem real.times_cont_diff_at_arcsin_iff + theorem real.times_cont_diff_on_arccos + theorem real.times_cont_diff_on_arcsin + theorem real.zero_eq_arcsin_iff Modified src/data/real/pi/bounds.lean Modified src/data/real/pi/leibniz.lean Modified src/geometry/euclidean/basic.lean Modified src/measure_theory/function/special_functions.lean Modified test/continuity.lean Modified test/differentiable.lean Modified test/simp_command.lean 2021-09-26 22:22:00 62abfe5 refactor(measure_theory/measure/hausdorff): move `dimH` to a new file, redefine (#9391) * move definition of the Hausdorff dimension to a new file `topology.metric_space.hausdorff_dimension`; * move `dimH` and related lemmas to the root namespace; * rewrite the definition so that it no longer requires `[measurable_space X] [borel_space X]`; use `rw dimH_def` to get a version using `[measurable_space X]` from the environment; * add `dimH_le`, `set.finite.dimH_zero` and `finset.dimH_zero`; * make `dimH` irreducible. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/measure_theory/measure/hausdorff.lean - theorem antilipschitz_with.dimH_preimage_le - theorem antilipschitz_with.le_dimH_image - theorem continuous_linear_equiv.dimH_image - theorem continuous_linear_equiv.dimH_preimage - theorem continuous_linear_equiv.dimH_univ - theorem dense_compl_of_dimH_lt_finrank - theorem dimH_image_le_of_locally_holder_on - theorem dimH_image_le_of_locally_lipschitz_on - theorem dimH_range_le_of_locally_holder_on - theorem dimH_range_le_of_locally_lipschitz_on - theorem holder_on_with.dimH_image_le - theorem holder_with.dimH_image_le - theorem holder_with.dimH_range_le - theorem isometric.dimH_image - theorem isometric.dimH_preimage - theorem isometric.dimH_univ - theorem isometry.dimH_image - theorem lipschitz_on_with.dimH_image_le - theorem lipschitz_with.dimH_image_le - theorem lipschitz_with.dimH_range_le - def measure_theory.dimH - theorem measure_theory.dimH_Union - theorem measure_theory.dimH_bUnion - theorem measure_theory.dimH_countable - theorem measure_theory.dimH_empty - theorem measure_theory.dimH_le_of_hausdorff_measure_ne_top - theorem measure_theory.dimH_mono - theorem measure_theory.dimH_of_hausdorff_measure_ne_zero_ne_top - theorem measure_theory.dimH_sUnion - theorem measure_theory.dimH_singleton - theorem measure_theory.dimH_subsingleton - theorem measure_theory.dimH_union - theorem measure_theory.hausdorff_measure_of_dimH_lt - theorem measure_theory.hausdorff_measure_of_lt_dimH - theorem measure_theory.le_dimH_of_hausdorff_measure_eq_top - theorem measure_theory.le_dimH_of_hausdorff_measure_ne_zero - theorem measure_theory.measure_zero_of_dimH_lt - theorem real.dimH_ball_pi - theorem real.dimH_ball_pi_fin - theorem real.dimH_of_mem_nhds - theorem real.dimH_of_nonempty_interior - theorem real.dimH_univ - theorem real.dimH_univ_eq_finrank - theorem real.dimH_univ_pi - theorem real.dimH_univ_pi_fin - theorem times_cont_diff.dense_compl_range_of_finrank_lt_finrank - theorem times_cont_diff.dimH_range_le - theorem times_cont_diff_on.dense_compl_image_of_dimH_lt_finrank - theorem times_cont_diff_on.dimH_image_le Added src/topology/metric_space/hausdorff_dimension.lean + theorem antilipschitz_with.dimH_preimage_le + theorem antilipschitz_with.le_dimH_image + theorem continuous_linear_equiv.dimH_image + theorem continuous_linear_equiv.dimH_preimage + theorem continuous_linear_equiv.dimH_univ + theorem dense_compl_of_dimH_lt_finrank + theorem dimH_Union + theorem dimH_bUnion + theorem dimH_coe_finset + theorem dimH_countable + theorem dimH_def + theorem dimH_empty + theorem dimH_finite + theorem dimH_image_le_of_locally_holder_on + theorem dimH_image_le_of_locally_lipschitz_on + theorem dimH_le + theorem dimH_le_of_hausdorff_measure_ne_top + theorem dimH_mono + theorem dimH_of_hausdorff_measure_ne_zero_ne_top + theorem dimH_range_le_of_locally_holder_on + theorem dimH_range_le_of_locally_lipschitz_on + theorem dimH_sUnion + theorem dimH_singleton + theorem dimH_subsingleton + theorem dimH_union + theorem hausdorff_measure_of_dimH_lt + theorem hausdorff_measure_of_lt_dimH + theorem holder_on_with.dimH_image_le + theorem holder_with.dimH_image_le + theorem holder_with.dimH_range_le + theorem isometric.dimH_image + theorem isometric.dimH_preimage + theorem isometric.dimH_univ + theorem isometry.dimH_image + theorem le_dimH_of_hausdorff_measure_eq_top + theorem le_dimH_of_hausdorff_measure_ne_zero + theorem lipschitz_on_with.dimH_image_le + theorem lipschitz_with.dimH_image_le + theorem lipschitz_with.dimH_range_le + theorem measure_zero_of_dimH_lt + theorem real.dimH_ball_pi + theorem real.dimH_ball_pi_fin + theorem real.dimH_of_mem_nhds + theorem real.dimH_of_nonempty_interior + theorem real.dimH_univ + theorem real.dimH_univ_eq_finrank + theorem real.dimH_univ_pi + theorem real.dimH_univ_pi_fin + theorem times_cont_diff.dense_compl_range_of_finrank_lt_finrank + theorem times_cont_diff.dimH_range_le + theorem times_cont_diff_on.dense_compl_image_of_dimH_lt_finrank + theorem times_cont_diff_on.dimH_image_le 2021-09-26 22:21:59 432271f feat(algebra/pointwise): add smul_set_inter (#9374) From #2819 . ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.smul_set_inter' + theorem set.smul_set_inter + theorem set.smul_set_inter_subset 2021-09-26 21:40:02 996783c feat(topology/sheaves/stalks): Generalize from Type to algebraic categories (#9357) Previously, basic lemmas about stalks like `germ_exist` and `section_ext` were only available for `Type`-valued (pre)sheaves. This PR generalizes these to (pre)sheaves valued in any concrete category where the forgetful functor preserves filtered colimits, which includes most algebraic categories like `Group` and `CommRing`. For the statements about stalks maps, we additionally assume that the forgetful functor reflects isomorphisms and preserves limits. ESTIMATED CHANGES Modified src/topology/sheaves/sheafify.lean Modified src/topology/sheaves/stalks.lean +/- theorem Top.presheaf.app_bijective_of_stalk_functor_map_bijective +/- theorem Top.presheaf.app_injective_iff_stalk_functor_map_injective +/- theorem Top.presheaf.app_injective_of_stalk_functor_map_injective +/- theorem Top.presheaf.app_surjective_of_stalk_functor_map_bijective +/- theorem Top.presheaf.germ_eq +/- theorem Top.presheaf.germ_exist +/- theorem Top.presheaf.germ_ext +/- theorem Top.presheaf.germ_res - theorem Top.presheaf.germ_res_apply' - theorem Top.presheaf.germ_res_apply +/- theorem Top.presheaf.is_iso_iff_stalk_functor_map_iso +/- theorem Top.presheaf.is_iso_of_stalk_functor_map_iso +/- theorem Top.presheaf.section_ext +/- theorem Top.presheaf.stalk_functor_map_germ - theorem Top.presheaf.stalk_functor_map_germ_apply +/- theorem Top.presheaf.stalk_functor_map_injective_of_app_injective +/- def Top.presheaf.stalk_pushforward 2021-09-26 12:40:21 865ad47 feat(algebra/module/pointwise_pi): add a file with lemmas on smul_pi (#9369) Make a new file rather than add an import to either of `algebra.pointwise` or `algebra.module.pi`. From #2819 ESTIMATED CHANGES Added src/algebra/module/pointwise_pi.lean + theorem smul_pi' + theorem smul_pi + theorem smul_pi_subset + theorem smul_univ_pi 2021-09-26 10:39:54 b3ca07f docs(undergrad): Add trigonometric Weierstrass (#9393) ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-09-26 10:39:53 4ae46db feat(field_theory/is_alg_closed): more isomorphisms of algebraic closures (#9376) ESTIMATED CHANGES Modified src/field_theory/is_alg_closed/basic.lean + theorem is_alg_closure.equiv_of_equiv_algebra_map + theorem is_alg_closure.equiv_of_equiv_comp_algebra_map + theorem is_alg_closure.equiv_of_equiv_symm_algebra_map + theorem is_alg_closure.equiv_of_equiv_symm_comp_algebra_map 2021-09-26 10:39:52 453f218 refactor(linear_algebra/charpoly): move linear_algebra/charpoly to linear_algebra/matrix/charpoly (#9368) We move `linear_algebra/charpoly`to `linear_algebra/matrix/charpoly`, since the results there are for matrices. We also rename some lemmas in `linear_algebra/matrix/charpoly/coeff` to have the namespace `matrix`. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified docs/100.yaml Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/linear_algebra/charpoly.lean Renamed src/linear_algebra/charpoly/basic.lean to src/linear_algebra/matrix/charpoly/basic.lean - theorem aeval_self_charpoly + theorem matrix.aeval_self_charpoly Renamed src/linear_algebra/charpoly/coeff.lean to src/linear_algebra/matrix/charpoly/coeff.lean - theorem charpoly_coeff_eq_prod_coeff_of_le - theorem charpoly_degree_eq_dim - theorem charpoly_monic - theorem charpoly_nat_degree_eq_dim - theorem charpoly_sub_diagonal_degree_lt - theorem det_eq_sign_charpoly_coeff - theorem det_of_card_zero - theorem eval_det - theorem finite_field.charpoly_pow_card + theorem finite_field.matrix.charpoly_pow_card - theorem mat_poly_equiv_eval + theorem matrix.charpoly_coeff_eq_prod_coeff_of_le + theorem matrix.charpoly_degree_eq_dim + theorem matrix.charpoly_monic + theorem matrix.charpoly_nat_degree_eq_dim + theorem matrix.charpoly_sub_diagonal_degree_lt + theorem matrix.det_eq_sign_charpoly_coeff + theorem matrix.det_of_card_zero + theorem matrix.eval_det + theorem matrix.mat_poly_equiv_eval + theorem matrix.trace_eq_neg_charpoly_coeff - theorem trace_eq_neg_charpoly_coeff Modified src/ring_theory/norm.lean Modified src/ring_theory/trace.lean 2021-09-26 10:39:51 a2517af refactor(data/fin,*): redefine `insert_nth`, add lemmas (#9349) ### `data/fin` * add `fin.succ_above_cast_lt`, `fin.succ_above_pred`, `fin.cast_lt_succ_above`, `fin.pred_succ_above`; * add `fin.exists_succ_above_eq` and `fin.exists_succ_above_eq_iff`, use the latter to prove `fin.range_succ_above`; * add `@[simp]` to `fin.succ_above_left_inj`; * add `fin.cases_succ_above` induction principle, redefine `fin.insert_nth` to be `fin.cases_succ_above`; * add lemmas about `fin.insert_nth` and some algebraic operations. ### `data/fintype/basic` * add `finset.insert_compl_self`; * add `fin.image_succ_above_univ`, `fin.image_succ_univ`, `fin.image_cast_succ` and use them to prove `fin.univ_succ`, `fin.univ_cast_succ`, and `fin.univ_succ_above` using `by simp`; ### `data/fintype/card` * slightly golf the proof of `fin.prod_univ_succ_above`; * use `@[to_additive]` to generate some proofs. ### `topology/*` * prove continuity of `fin.insert_nth` in both arguments and add all the standard dot-notation `*.fin_insert_nth` lemmas (`*` is one of `filter.tendsto`, `continuous_at`, `continuous_within_at`, `continuous_on`, `continuous`). ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_lt_succ_above + theorem fin.exists_succ_above_eq + theorem fin.exists_succ_above_eq_iff - def fin.insert_nth' +/- def fin.insert_nth + theorem fin.insert_nth_add + theorem fin.insert_nth_binop + theorem fin.insert_nth_div + theorem fin.insert_nth_mul + theorem fin.insert_nth_sub + theorem fin.insert_nth_sub_same + theorem fin.insert_nth_zero_right + theorem fin.pred_succ_above +/- theorem fin.range_succ_above + def fin.succ_above_cases + theorem fin.succ_above_cases_eq_insert_nth + theorem fin.succ_above_cast_lt +/- theorem fin.succ_above_left_inj + theorem fin.succ_above_pred Modified src/data/fintype/basic.lean + theorem fin.image_cast_succ + theorem fin.image_succ_above_univ + theorem fin.image_succ_univ + theorem finset.insert_compl_self Modified src/data/fintype/card.lean +/- theorem fin.prod_univ_succ_above - theorem fin.sum_univ_cast_succ - theorem fin.sum_univ_succ - theorem fin.sum_univ_succ_above Modified src/topology/constructions.lean + theorem continuous.fin_insert_nth + theorem continuous_at.fin_insert_nth + theorem filter.tendsto.fin_insert_nth Modified src/topology/continuous_on.lean + theorem continuous_on.fin_insert_nth + theorem continuous_within_at.fin_insert_nth 2021-09-26 08:35:17 83470af feat(algebra/order/ring): add odd_neg, odd_abs, generalize dvd/abs lemmas (#9362) ESTIMATED CHANGES Modified src/algebra/order/ring.lean + theorem odd_abs Modified src/algebra/ring/basic.lean + theorem odd.neg + theorem odd_neg 2021-09-26 07:23:13 def1c02 refactor(analysis/convex/function): generalize definition of `convex_on`/`concave_on` to allow any (ordered) scalars (#9389) `convex_on` and `concave_on` are currently only defined for real vector spaces. This generalizes ℝ to an arbitrary `ordered_semiring` in the definition. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/analysis/convex/basic.lean +/- def convex Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/convex/function.lean +/- theorem concave_on.add +/- theorem concave_on.comp_linear_map +/- theorem concave_on.concave_le +/- theorem concave_on.inf +/- theorem concave_on.le_on_segment' +/- theorem concave_on.le_on_segment +/- theorem concave_on.le_right_of_left_le' +/- theorem concave_on.le_right_of_left_le +/- theorem concave_on.left_le_of_le_right' +/- theorem concave_on.left_le_of_le_right +/- theorem concave_on.slope_mono_adjacent +/- theorem concave_on.subset +/- theorem concave_on.translate_left +/- theorem concave_on.translate_right +/- def concave_on +/- theorem concave_on_const +/- theorem concave_on_id +/- theorem convex_on.add +/- theorem convex_on.comp_linear_map +/- theorem convex_on.convex_le +/- theorem convex_on.exists_ge_of_center_mass +/- theorem convex_on.exists_ge_of_mem_convex_hull +/- theorem convex_on.le_left_of_right_le' +/- theorem convex_on.le_left_of_right_le +/- theorem convex_on.le_on_segment' +/- theorem convex_on.le_on_segment +/- theorem convex_on.le_right_of_left_le' +/- theorem convex_on.le_right_of_left_le +/- theorem convex_on.map_center_mass_le +/- theorem convex_on.map_sum_le +/- theorem convex_on.slope_mono_adjacent +/- theorem convex_on.subset +/- theorem convex_on.sup +/- theorem convex_on.translate_left +/- theorem convex_on.translate_right +/- def convex_on +/- theorem convex_on_const +/- theorem convex_on_id +/- theorem linear_map.concave_on +/- theorem linear_map.convex_on Modified src/analysis/convex/integral.lean Modified src/analysis/convex/specific_functions.lean +/- theorem concave_on_log_Iio +/- theorem concave_on_log_Ioi +/- theorem convex_on_exp +/- theorem convex_on_fpow +/- theorem convex_on_pow +/- theorem convex_on_pow_of_even +/- theorem convex_on_rpow Modified src/analysis/convex/topology.lean 2021-09-26 02:41:05 793a598 chore(scripts): update nolints.txt (#9392) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-25 17:07:10 9866526 feat(data/multiset/basic): add lemma that `multiset.map f` preserves `count` under certain assumptions on `f` (#9117) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.count_map_eq_count 2021-09-25 16:04:00 168806c feat(measure_theory/integral/lebesgue): lintegral is strictly monotone under some conditions (#9373) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_strict_mono + theorem measure_theory.lintegral_strict_mono_of_ae_le_of_ae_lt_on + theorem measure_theory.lintegral_sub_le + theorem measure_theory.set_lintegral_strict_mono Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.ae_le_of_ae_lt 2021-09-25 15:05:39 eba2b2e feat(measure_theory/function/l1_space): add integrability lemma for `measure.with_density` (#9367) ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable_with_density_iff + theorem measure_theory.of_real_to_real_ae_eq 2021-09-25 09:01:16 6ea8168 refactor(topology/compact_open): use bundled continuous maps (#9351) ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.continuous_comp - theorem continuous_map.continuous_induced - def continuous_map.induced 2021-09-25 06:48:09 51ad06e refactor(analysis/inner_product_space/*): split big file (#9382) This PR makes a new folder `analysis/inner_product_space/*` comprising several files splitting the old `analysis/normed_space/inner_product` (which had reached 2900 lines!). https://leanprover.zulipchat.com/#narrow/stream/116395-maths ESTIMATED CHANGES Modified src/analysis/calculus/conformal/inner_product.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/convex/cone.lean Renamed src/analysis/normed_space/inner_product.lean to src/analysis/inner_product_space/basic.lean - theorem coe_orthonormal_basis - theorem continuous.inner - theorem continuous_at.inner - theorem continuous_inner - theorem continuous_on.inner - theorem continuous_within_at.inner - theorem deriv_inner_apply - theorem differentiable.dist - theorem differentiable.inner - theorem differentiable.norm - theorem differentiable.norm_sq - theorem differentiable_at.dist - theorem differentiable_at.inner - theorem differentiable_at.norm - theorem differentiable_at.norm_sq - theorem differentiable_inner - theorem differentiable_on.dist - theorem differentiable_on.inner - theorem differentiable_on.norm - theorem differentiable_on.norm_sq - theorem differentiable_within_at.dist - theorem differentiable_within_at.inner - theorem differentiable_within_at.norm - theorem differentiable_within_at.norm_sq - theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero - theorem eq_orthogonal_projection_of_eq_submodule - theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero - theorem eq_orthogonal_projection_of_mem_orthogonal' - theorem eq_orthogonal_projection_of_mem_orthogonal - theorem eq_sum_orthogonal_projection_self_orthogonal_complement - theorem exists_is_orthonormal_dense_span - theorem exists_norm_eq_infi_of_complete_convex - theorem exists_norm_eq_infi_of_complete_subspace - theorem exists_subset_is_orthonormal_basis - theorem exists_subset_is_orthonormal_dense_span - theorem fderiv_inner_apply - def fderiv_inner_clm - theorem fderiv_inner_clm_apply - theorem filter.tendsto.inner - def fin_orthonormal_basis - theorem fin_orthonormal_basis_orthonormal - theorem finrank_orthogonal_span_singleton - theorem has_deriv_at.inner - theorem has_deriv_within_at.inner - theorem has_fderiv_at.inner - theorem has_fderiv_within_at.inner - theorem id_eq_sum_orthogonal_projection_self_orthogonal_complement - theorem inner_orthogonal_projection_left_eq_right - theorem is_bounded_bilinear_map_inner - theorem maximal_orthonormal_iff_basis_of_finite_dimensional - theorem maximal_orthonormal_iff_dense_span - theorem maximal_orthonormal_iff_orthogonal_complement_eq_bot - theorem norm_eq_infi_iff_inner_eq_zero - theorem norm_eq_infi_iff_real_inner_eq_zero - theorem norm_eq_infi_iff_real_inner_le_zero - def orthogonal_projection - theorem orthogonal_projection_bot - theorem orthogonal_projection_eq_self_iff - def orthogonal_projection_fn - theorem orthogonal_projection_fn_eq - theorem orthogonal_projection_fn_inner_eq_zero - theorem orthogonal_projection_fn_mem - theorem orthogonal_projection_fn_norm_sq - theorem orthogonal_projection_inner_eq_zero - theorem orthogonal_projection_map_apply - theorem orthogonal_projection_mem_subspace_eq_self - theorem orthogonal_projection_mem_subspace_orthogonal_complement_eq_zero - theorem orthogonal_projection_mem_subspace_orthogonal_precomplement_eq_zero - theorem orthogonal_projection_norm_le - theorem orthogonal_projection_orthogonal_complement_singleton_eq_zero - theorem orthogonal_projection_singleton - theorem orthogonal_projection_unit_singleton - def orthonormal_basis - def orthonormal_basis_index - theorem orthonormal_basis_orthonormal - def reflection - theorem reflection_apply - theorem reflection_bot - theorem reflection_eq_self_iff - theorem reflection_involutive - theorem reflection_map - theorem reflection_map_apply - theorem reflection_mem_subspace_eq_self - theorem reflection_mem_subspace_orthogonal_complement_eq_neg - theorem reflection_mem_subspace_orthogonal_precomplement_eq_neg - theorem reflection_orthogonal_complement_singleton_eq_neg - theorem reflection_reflection - theorem reflection_symm - theorem smul_orthogonal_projection_singleton - theorem submodule.exists_sum_mem_mem_orthogonal - theorem submodule.finrank_add_finrank_orthogonal' - theorem submodule.finrank_add_finrank_orthogonal - theorem submodule.finrank_add_inf_finrank_orthogonal' - theorem submodule.finrank_add_inf_finrank_orthogonal - theorem submodule.is_compl_orthogonal_of_is_complete - theorem submodule.orthogonal_eq_bot_iff - theorem submodule.orthogonal_orthogonal - theorem submodule.orthogonal_orthogonal_eq_closure - theorem submodule.sup_orthogonal_inf_of_is_complete - theorem submodule.sup_orthogonal_of_complete_space - theorem submodule.sup_orthogonal_of_is_complete - theorem times_cont_diff.dist - theorem times_cont_diff.inner - theorem times_cont_diff.norm - theorem times_cont_diff.norm_sq - theorem times_cont_diff_at.dist - theorem times_cont_diff_at.inner - theorem times_cont_diff_at.norm - theorem times_cont_diff_at.norm_sq - theorem times_cont_diff_at_inner - theorem times_cont_diff_at_norm - theorem times_cont_diff_inner - theorem times_cont_diff_norm_sq - theorem times_cont_diff_on.dist - theorem times_cont_diff_on.inner - theorem times_cont_diff_on.norm - theorem times_cont_diff_on.norm_sq - theorem times_cont_diff_within_at.dist - theorem times_cont_diff_within_at.inner - theorem times_cont_diff_within_at.norm - theorem times_cont_diff_within_at.norm_sq Added src/analysis/inner_product_space/calculus.lean + theorem continuous.inner + theorem continuous_at.inner + theorem continuous_inner + theorem continuous_on.inner + theorem continuous_within_at.inner + theorem deriv_inner_apply + theorem differentiable.dist + theorem differentiable.inner + theorem differentiable.norm + theorem differentiable.norm_sq + theorem differentiable_at.dist + theorem differentiable_at.inner + theorem differentiable_at.norm + theorem differentiable_at.norm_sq + theorem differentiable_inner + theorem differentiable_on.dist + theorem differentiable_on.inner + theorem differentiable_on.norm + theorem differentiable_on.norm_sq + theorem differentiable_within_at.dist + theorem differentiable_within_at.inner + theorem differentiable_within_at.norm + theorem differentiable_within_at.norm_sq + theorem fderiv_inner_apply + def fderiv_inner_clm + theorem fderiv_inner_clm_apply + theorem filter.tendsto.inner + theorem has_deriv_at.inner + theorem has_deriv_within_at.inner + theorem has_fderiv_at.inner + theorem has_fderiv_within_at.inner + theorem is_bounded_bilinear_map_inner + theorem times_cont_diff.dist + theorem times_cont_diff.inner + theorem times_cont_diff.norm + theorem times_cont_diff.norm_sq + theorem times_cont_diff_at.dist + theorem times_cont_diff_at.inner + theorem times_cont_diff_at.norm + theorem times_cont_diff_at.norm_sq + theorem times_cont_diff_at_inner + theorem times_cont_diff_at_norm + theorem times_cont_diff_inner + theorem times_cont_diff_norm_sq + theorem times_cont_diff_on.dist + theorem times_cont_diff_on.inner + theorem times_cont_diff_on.norm + theorem times_cont_diff_on.norm_sq + theorem times_cont_diff_within_at.dist + theorem times_cont_diff_within_at.inner + theorem times_cont_diff_within_at.norm + theorem times_cont_diff_within_at.norm_sq Renamed src/analysis/normed_space/conformal_linear_map/inner_product.lean to src/analysis/inner_product_space/conformal_linear_map.lean Renamed src/analysis/normed_space/euclidean_dist.lean to src/analysis/inner_product_space/euclidean_dist.lean Added src/analysis/inner_product_space/projection.lean + theorem coe_orthonormal_basis + theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero + theorem eq_orthogonal_projection_of_eq_submodule + theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero + theorem eq_orthogonal_projection_of_mem_orthogonal' + theorem eq_orthogonal_projection_of_mem_orthogonal + theorem eq_sum_orthogonal_projection_self_orthogonal_complement + theorem exists_is_orthonormal_dense_span + theorem exists_norm_eq_infi_of_complete_convex + theorem exists_norm_eq_infi_of_complete_subspace + theorem exists_subset_is_orthonormal_basis + theorem exists_subset_is_orthonormal_dense_span + def fin_orthonormal_basis + theorem fin_orthonormal_basis_orthonormal + theorem finrank_orthogonal_span_singleton + theorem id_eq_sum_orthogonal_projection_self_orthogonal_complement + theorem inner_orthogonal_projection_left_eq_right + theorem maximal_orthonormal_iff_basis_of_finite_dimensional + theorem maximal_orthonormal_iff_dense_span + theorem maximal_orthonormal_iff_orthogonal_complement_eq_bot + theorem norm_eq_infi_iff_inner_eq_zero + theorem norm_eq_infi_iff_real_inner_eq_zero + theorem norm_eq_infi_iff_real_inner_le_zero + def orthogonal_projection + theorem orthogonal_projection_bot + theorem orthogonal_projection_eq_self_iff + def orthogonal_projection_fn + theorem orthogonal_projection_fn_eq + theorem orthogonal_projection_fn_inner_eq_zero + theorem orthogonal_projection_fn_mem + theorem orthogonal_projection_fn_norm_sq + theorem orthogonal_projection_inner_eq_zero + theorem orthogonal_projection_map_apply + theorem orthogonal_projection_mem_subspace_eq_self + theorem orthogonal_projection_mem_subspace_orthogonal_complement_eq_zero + theorem orthogonal_projection_mem_subspace_orthogonal_precomplement_eq_zero + theorem orthogonal_projection_norm_le + theorem orthogonal_projection_orthogonal_complement_singleton_eq_zero + theorem orthogonal_projection_singleton + theorem orthogonal_projection_unit_singleton + def orthonormal_basis + def orthonormal_basis_index + theorem orthonormal_basis_orthonormal + def reflection + theorem reflection_apply + theorem reflection_bot + theorem reflection_eq_self_iff + theorem reflection_involutive + theorem reflection_map + theorem reflection_map_apply + theorem reflection_mem_subspace_eq_self + theorem reflection_mem_subspace_orthogonal_complement_eq_neg + theorem reflection_mem_subspace_orthogonal_precomplement_eq_neg + theorem reflection_orthogonal_complement_singleton_eq_neg + theorem reflection_reflection + theorem reflection_symm + theorem smul_orthogonal_projection_singleton + theorem submodule.exists_sum_mem_mem_orthogonal + theorem submodule.finrank_add_finrank_orthogonal' + theorem submodule.finrank_add_finrank_orthogonal + theorem submodule.finrank_add_inf_finrank_orthogonal' + theorem submodule.finrank_add_inf_finrank_orthogonal + theorem submodule.is_compl_orthogonal_of_is_complete + theorem submodule.orthogonal_eq_bot_iff + theorem submodule.orthogonal_orthogonal + theorem submodule.orthogonal_orthogonal_eq_closure + theorem submodule.sup_orthogonal_inf_of_is_complete + theorem submodule.sup_orthogonal_of_complete_space + theorem submodule.sup_orthogonal_of_is_complete Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/analysis/quaternion.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/special_functions.lean 2021-09-25 06:48:08 55d8cd0 chore(scripts): update nolints.txt (#9381) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-25 06:48:07 42d8243 feat(data/polynomial/eval): map_equiv (#9375) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + def polynomial.map_equiv 2021-09-25 04:13:25 59b9ebb feat(algebra/group/to_additive): customize the relevant argument (#9138) `@[to_additive]` now automatically checks for each declaration what the first argument is with a multiplicative structure on it. This is now the argument that is tested when executing later occurrences of `@[to_additive]` for a fixed type to decide whether this declaration should be translated or not. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/meta/expr.lean Modified src/tactic/transform_decl.lean Modified test/to_additive.lean + def foo_mul + def nat_pi_has_one + def pi_nat_has_one 2021-09-25 01:43:26 64b794a chore(analysis/complex/basic): rename `complex/normed_space` (#9366) This matches `module.complex_to_real` ESTIMATED CHANGES Modified src/analysis/complex/basic.lean 2021-09-24 21:40:17 b0cd1f9 chore(algebra/group): move is_unit.inv lemmas (#9364) ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem is_unit.coe_inv_mul + theorem is_unit.mul_coe_inv Modified src/group_theory/group_action/units.lean + theorem is_unit.inv_smul Modified src/linear_algebra/matrix/nonsingular_inverse.lean - theorem is_unit.coe_inv_mul - theorem is_unit.inv_smul - theorem is_unit.mul_coe_inv 2021-09-24 21:40:16 c42aaa3 chore(data/pi): add missing `pi.{inv,neg}_def` (#9361) ESTIMATED CHANGES Modified src/data/pi.lean + theorem pi.inv_def 2021-09-24 21:40:15 8ff756c feat(group_theory/*/pointwise): Copy set lemmas about pointwise actions to subgroups and submonoids (#9359) This is pretty much just a copy-and-paste job. At least the proofs themselves don't need copying. The set lemmas being copied here are: https://github.com/leanprover-community/mathlib/blob/a9cd8c259d59b0bdbe931a6f8e6084f800bd7162/src/algebra/pointwise.lean#L607-L680 I skipped the `preimage_smul` lemma for now because I couldn't think of a useful statement using `map`. ESTIMATED CHANGES Modified src/group_theory/subgroup/pointwise.lean + theorem add_subgroup.le_pointwise_smul_iff' + theorem add_subgroup.le_pointwise_smul_iff + theorem add_subgroup.mem_inv_pointwise_smul_iff' + theorem add_subgroup.mem_inv_pointwise_smul_iff + theorem add_subgroup.mem_pointwise_smul_iff_inv_smul_mem' + theorem add_subgroup.mem_pointwise_smul_iff_inv_smul_mem + theorem add_subgroup.pointwise_smul_le_iff' + theorem add_subgroup.pointwise_smul_le_iff + theorem add_subgroup.pointwise_smul_le_pointwise_smul_iff' + theorem add_subgroup.pointwise_smul_le_pointwise_smul_iff + theorem add_subgroup.smul_mem_pointwise_smul_iff' + theorem add_subgroup.smul_mem_pointwise_smul_iff + theorem subgroup.le_pointwise_smul_iff' + theorem subgroup.mem_inv_pointwise_smul_iff' + theorem subgroup.mem_inv_pointwise_smul_iff + theorem subgroup.mem_pointwise_smul_iff_inv_smul_mem' + theorem subgroup.mem_pointwise_smul_iff_inv_smul_mem + theorem subgroup.pointwise_smul_le_iff' + theorem subgroup.pointwise_smul_le_pointwise_smul_iff' + theorem subgroup.pointwise_smul_le_pointwise_smul_iff + theorem subgroup.pointwise_smul_subset_iff + theorem subgroup.smul_mem_pointwise_smul_iff' + theorem subgroup.smul_mem_pointwise_smul_iff + theorem subgroup.subset_pointwise_smul_iff Modified src/group_theory/submonoid/pointwise.lean +/- theorem add_submonoid.coe_pointwise_smul + theorem add_submonoid.le_pointwise_smul_iff' + theorem add_submonoid.le_pointwise_smul_iff + theorem add_submonoid.mem_inv_pointwise_smul_iff' + theorem add_submonoid.mem_inv_pointwise_smul_iff + theorem add_submonoid.mem_pointwise_smul_iff_inv_smul_mem' + theorem add_submonoid.mem_pointwise_smul_iff_inv_smul_mem + theorem add_submonoid.pointwise_smul_le_iff' + theorem add_submonoid.pointwise_smul_le_iff + theorem add_submonoid.pointwise_smul_le_pointwise_smul_iff' + theorem add_submonoid.pointwise_smul_le_pointwise_smul_iff +/- theorem add_submonoid.smul_mem_pointwise_smul + theorem add_submonoid.smul_mem_pointwise_smul_iff' + theorem add_submonoid.smul_mem_pointwise_smul_iff +/- theorem submonoid.coe_pointwise_smul + theorem submonoid.le_pointwise_smul_iff' + theorem submonoid.mem_inv_pointwise_smul_iff' + theorem submonoid.mem_inv_pointwise_smul_iff + theorem submonoid.mem_pointwise_smul_iff_inv_smul_mem' + theorem submonoid.mem_pointwise_smul_iff_inv_smul_mem + theorem submonoid.pointwise_smul_le_iff' + theorem submonoid.pointwise_smul_le_pointwise_smul_iff' + theorem submonoid.pointwise_smul_le_pointwise_smul_iff + theorem submonoid.pointwise_smul_subset_iff +/- theorem submonoid.smul_mem_pointwise_smul + theorem submonoid.smul_mem_pointwise_smul_iff' + theorem submonoid.smul_mem_pointwise_smul_iff + theorem submonoid.subset_pointwise_smul_iff 2021-09-24 19:49:10 18f06ec chore(measure_theory/integral/interval_integral): generalize `integral_smul` (#9355) Make sure that it works for scalar multiplication by a complex number. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.integral_smul 2021-09-24 19:49:09 7cb7246 chore(linear_algebra/basic): add `linear_map.neg_comp`, generalize `linear_map.{sub,smul}_comp` (#9335) `sub_comp` had unnecessary requirements that the codomain of the right map be an additive group, while `smul_comp` did not support compatible actions. This also golfs the proofs of all the `comp_*` lemmas to eliminate `simp`. `smul_comp` and `comp_smul` are also both promoted to instances. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/linear_algebra/basic.lean +/- theorem linear_map.add_comp +/- theorem linear_map.comp_add +/- theorem linear_map.comp_neg +/- theorem linear_map.comp_smul +/- theorem linear_map.comp_sub +/- theorem linear_map.neg_apply + theorem linear_map.neg_comp +/- theorem linear_map.sub_apply +/- theorem linear_map.sub_comp Modified src/linear_algebra/eigenspace.lean 2021-09-24 19:49:07 c794c5c chore(linear_algebra/basic): split out quotients and isomorphism theorems (#9332) `linear_algebra.basic` had become a very large file; I think too unwieldy to even be able to edit. Fortunately there are some natural splits on content. I moved everything about quotients out to `linear_algebra.quotient`. Happily many files in `linear_algebra/` don't even need this, so we also get some significant import reductions. I've also moved Noether's three isomorphism theorems for submodules to their own file. ESTIMATED CHANGES Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/epi_mono.lean Modified src/linear_algebra/basic.lean - theorem linear_map.coe_quotient_inf_to_sup_quotient - theorem linear_map.ker_le_range_iff - theorem linear_map.quot_ker_equiv_range_apply_mk - theorem linear_map.quot_ker_equiv_range_symm_apply_image - theorem linear_map.quotient_inf_equiv_sup_quotient_apply_mk - theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_eq_zero_iff - theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_left - theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_right - def linear_map.quotient_inf_to_sup_quotient - theorem linear_map.range_eq_top_of_cancel - theorem linear_map.range_mkq_comp - theorem submodule.coe_quot_equiv_of_eq_bot_symm - theorem submodule.comap_liftq - theorem submodule.comap_map_mkq - def submodule.comap_mkq.order_embedding - def submodule.comap_mkq.rel_iso - theorem submodule.comap_mkq_embedding_eq - theorem submodule.ker_liftq - theorem submodule.ker_liftq_eq_bot - theorem submodule.ker_mkq - theorem submodule.le_comap_mkq - def submodule.liftq - theorem submodule.liftq_apply - theorem submodule.liftq_mkq - theorem submodule.linear_map_qext - theorem submodule.map_liftq - theorem submodule.map_mkq_eq_top - def submodule.mapq - theorem submodule.mapq_apply - def submodule.mapq_linear - theorem submodule.mapq_mkq - def submodule.mkq - theorem submodule.mkq_apply - theorem submodule.mkq_map_self - def submodule.quot_equiv_of_eq - def submodule.quot_equiv_of_eq_bot - theorem submodule.quot_equiv_of_eq_bot_apply_mk - theorem submodule.quot_equiv_of_eq_bot_symm_apply - theorem submodule.quot_equiv_of_eq_mk - theorem submodule.quot_hom_ext - theorem submodule.quotient.mk'_eq_mk - def submodule.quotient.mk - theorem submodule.quotient.mk_add - theorem submodule.quotient.mk_eq_mk - theorem submodule.quotient.mk_eq_zero - theorem submodule.quotient.mk_neg - theorem submodule.quotient.mk_nsmul - theorem submodule.quotient.mk_smul - theorem submodule.quotient.mk_sub - theorem submodule.quotient.mk_surjective - theorem submodule.quotient.mk_zero - theorem submodule.quotient.nontrivial_of_lt_top - theorem submodule.quotient.quot_mk_eq_mk - def submodule.quotient - def submodule.quotient_quotient_equiv_quotient - def submodule.quotient_quotient_equiv_quotient_aux - theorem submodule.quotient_quotient_equiv_quotient_aux_mk - theorem submodule.quotient_quotient_equiv_quotient_aux_mk_mk - def submodule.quotient_rel - theorem submodule.range_liftq - theorem submodule.range_mkq - theorem submodule.span_preimage_eq Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp.lean Added src/linear_algebra/isomorphisms.lean + theorem linear_map.coe_quotient_inf_to_sup_quotient + theorem linear_map.quot_ker_equiv_range_apply_mk + theorem linear_map.quot_ker_equiv_range_symm_apply_image + theorem linear_map.quotient_inf_equiv_sup_quotient_apply_mk + theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_eq_zero_iff + theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_left + theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_right + def linear_map.quotient_inf_to_sup_quotient + def submodule.quotient_quotient_equiv_quotient + def submodule.quotient_quotient_equiv_quotient_aux + theorem submodule.quotient_quotient_equiv_quotient_aux_mk + theorem submodule.quotient_quotient_equiv_quotient_aux_mk_mk Modified src/linear_algebra/projection.lean Added src/linear_algebra/quotient.lean + theorem linear_map.ker_le_range_iff + theorem linear_map.range_eq_top_of_cancel + theorem linear_map.range_mkq_comp + theorem submodule.coe_quot_equiv_of_eq_bot_symm + theorem submodule.comap_liftq + theorem submodule.comap_map_mkq + def submodule.comap_mkq.order_embedding + def submodule.comap_mkq.rel_iso + theorem submodule.comap_mkq_embedding_eq + theorem submodule.ker_liftq + theorem submodule.ker_liftq_eq_bot + theorem submodule.ker_mkq + theorem submodule.le_comap_mkq + def submodule.liftq + theorem submodule.liftq_apply + theorem submodule.liftq_mkq + theorem submodule.linear_map_qext + theorem submodule.map_liftq + theorem submodule.map_mkq_eq_top + def submodule.mapq + theorem submodule.mapq_apply + def submodule.mapq_linear + theorem submodule.mapq_mkq + def submodule.mkq + theorem submodule.mkq_apply + theorem submodule.mkq_map_self + def submodule.quot_equiv_of_eq + def submodule.quot_equiv_of_eq_bot + theorem submodule.quot_equiv_of_eq_bot_apply_mk + theorem submodule.quot_equiv_of_eq_bot_symm_apply + theorem submodule.quot_equiv_of_eq_mk + theorem submodule.quot_hom_ext + theorem submodule.quotient.mk'_eq_mk + def submodule.quotient.mk + theorem submodule.quotient.mk_add + theorem submodule.quotient.mk_eq_mk + theorem submodule.quotient.mk_eq_zero + theorem submodule.quotient.mk_neg + theorem submodule.quotient.mk_nsmul + theorem submodule.quotient.mk_smul + theorem submodule.quotient.mk_sub + theorem submodule.quotient.mk_surjective + theorem submodule.quotient.mk_zero + theorem submodule.quotient.nontrivial_of_lt_top + theorem submodule.quotient.quot_mk_eq_mk + def submodule.quotient + def submodule.quotient_rel + theorem submodule.range_liftq + theorem submodule.range_mkq + theorem submodule.span_preimage_eq Modified src/linear_algebra/std_basis.lean Modified src/ring_theory/ideal/basic.lean 2021-09-24 19:49:06 6f2d1ba feat(data/dfinsupp): add submodule.bsupr_eq_range_dfinsupp_lsum (#9202) Also a version for `add_submonoid`. Unfortunately the proofs are almost identical, but that's consistent with the surrounding bits of the file anyway. The key result is a dfinsupp version of the lemma in #8246, ```lean x ∈ (⨆ i (H : p i), f i) ↔ ∃ v : ι →₀ M, (∀ i, v i ∈ f i) ∧ ∑ i in v.support, v i = x ∧ (∀ i, ¬ p i → v i = 0) := ``` as ```lean x ∈ (⨆ i (h : p i), S i) ↔ ∃ f : Π₀ i, S i, dfinsupp.lsum ℕ (λ i, (S i).subtype) (f.filter p) = x ``` ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem add_submonoid.bsupr_eq_mrange_dfinsupp_sum_add_hom + theorem add_submonoid.mem_bsupr_iff_exists_dfinsupp Modified src/linear_algebra/dfinsupp.lean + theorem submodule.bsupr_eq_range_dfinsupp_lsum + theorem submodule.mem_bsupr_iff_exists_dfinsupp 2021-09-24 13:55:52 981f8ba chore(*): remove some `assume`s (#9365) ESTIMATED CHANGES Modified src/data/nat/basic.lean Modified src/data/set/finite.lean 2021-09-24 12:53:07 e14cf58 feat(measure_theory/function/conditional_expectation): define the conditional expectation of a function, prove the equality of integrals (#9114) This PR puts together the generalized Bochner integral construction of #8939 and the set function `condexp_ind` of #8920 to define the conditional expectation of a function. The equality of integrals that defines the conditional expectation is proven in `set_integral_condexp`. ESTIMATED CHANGES Modified src/measure_theory/decomposition/radon_nikodym.lean Modified src/measure_theory/function/conditional_expectation.lean + def measure_theory.Lp_meas_to_Lp_trim + theorem measure_theory.Lp_meas_to_Lp_trim_ae_eq + def measure_theory.Lp_meas_to_Lp_trim_lie + theorem measure_theory.Lp_meas_to_Lp_trim_lie_symm_indicator + theorem measure_theory.Lp_meas_to_Lp_trim_smul + def measure_theory.Lp_trim_to_Lp_meas + theorem measure_theory.Lp_trim_to_Lp_meas_ae_eq + theorem measure_theory.ae_eq_condexp_of_forall_set_integral_eq + theorem measure_theory.ae_measurable'_condexp_L1 + theorem measure_theory.ae_measurable'_condexp_L1_clm + def measure_theory.condexp + def measure_theory.condexp_L1 + theorem measure_theory.condexp_L1_add + def measure_theory.condexp_L1_clm + theorem measure_theory.condexp_L1_clm_Lp_meas + theorem measure_theory.condexp_L1_clm_indicator_const + theorem measure_theory.condexp_L1_clm_indicator_const_Lp + theorem measure_theory.condexp_L1_clm_of_ae_measurable' + theorem measure_theory.condexp_L1_clm_smul + theorem measure_theory.condexp_L1_eq + theorem measure_theory.condexp_L1_neg + theorem measure_theory.condexp_L1_of_ae_measurable' + theorem measure_theory.condexp_L1_smul + theorem measure_theory.condexp_L1_sub + theorem measure_theory.condexp_L1_undef + theorem measure_theory.condexp_L1_zero + theorem measure_theory.condexp_add + theorem measure_theory.condexp_ae_eq_condexp_L1 + theorem measure_theory.condexp_ae_eq_condexp_L1_clm + theorem measure_theory.condexp_const + theorem measure_theory.condexp_ind_of_measurable + theorem measure_theory.condexp_neg + theorem measure_theory.condexp_of_measurable + theorem measure_theory.condexp_smul + theorem measure_theory.condexp_sub + theorem measure_theory.condexp_undef + theorem measure_theory.condexp_zero + theorem measure_theory.dominated_fin_meas_additive_condexp_ind + theorem measure_theory.integrable_condexp + theorem measure_theory.integrable_condexp_L1 + theorem measure_theory.integral_condexp + theorem measure_theory.measurable_condexp + theorem measure_theory.set_integral_condexp + theorem measure_theory.set_integral_condexp_L1 + theorem measure_theory.set_integral_condexp_L1_clm + theorem measure_theory.set_integral_condexp_L1_clm_of_measure_ne_top + theorem measure_theory.set_integral_condexp_ind + theorem measure_theory.set_integral_condexp_ind_smul Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_indicator_const_Lp + theorem measure_theory.set_integral_indicator_const_Lp 2021-09-24 11:04:41 0db6caf feat(linear_algebra/affine_space/affine_map): add missing simp lemma `affine_map.homothety_apply_same` (#9360) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.homothety_apply_same 2021-09-24 11:04:40 48883dc chore(algebra/basic): split out facts about lmul (#9300) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem algebra.commute_lmul_left_right - def algebra.lmul' - theorem algebra.lmul'_apply - def algebra.lmul - theorem algebra.lmul_apply - theorem algebra.lmul_injective - def algebra.lmul_left - theorem algebra.lmul_left_apply - theorem algebra.lmul_left_eq_zero_iff - theorem algebra.lmul_left_injective - theorem algebra.lmul_left_mul - theorem algebra.lmul_left_one - def algebra.lmul_left_right - theorem algebra.lmul_left_right_apply - theorem algebra.lmul_left_zero_eq_zero - def algebra.lmul_right - theorem algebra.lmul_right_apply - theorem algebra.lmul_right_eq_zero_iff - theorem algebra.lmul_right_injective - theorem algebra.lmul_right_mul - theorem algebra.lmul_right_one - theorem algebra.lmul_right_zero_eq_zero - theorem algebra.pow_lmul_left - theorem algebra.pow_lmul_right Added src/algebra/algebra/bilinear.lean + theorem algebra.commute_lmul_left_right + def algebra.lmul' + theorem algebra.lmul'_apply + def algebra.lmul + theorem algebra.lmul_apply + theorem algebra.lmul_injective + def algebra.lmul_left + theorem algebra.lmul_left_apply + theorem algebra.lmul_left_eq_zero_iff + theorem algebra.lmul_left_injective + theorem algebra.lmul_left_mul + theorem algebra.lmul_left_one + def algebra.lmul_left_right + theorem algebra.lmul_left_right_apply + theorem algebra.lmul_left_zero_eq_zero + def algebra.lmul_right + theorem algebra.lmul_right_apply + theorem algebra.lmul_right_eq_zero_iff + theorem algebra.lmul_right_injective + theorem algebra.lmul_right_mul + theorem algebra.lmul_right_one + theorem algebra.lmul_right_zero_eq_zero + theorem algebra.pow_lmul_left + theorem algebra.pow_lmul_right Modified src/algebra/algebra/operations.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/determinant.lean Renamed src/linear_algebra/multilinear.lean to src/linear_algebra/multilinear/basic.lean - def multilinear_map.dom_coprod' - theorem multilinear_map.dom_coprod'_apply - def multilinear_map.dom_coprod - theorem multilinear_map.dom_coprod_dom_dom_congr_sum_congr Added src/linear_algebra/multilinear/tensor_product.lean + def multilinear_map.dom_coprod' + theorem multilinear_map.dom_coprod'_apply + def multilinear_map.dom_coprod + theorem multilinear_map.dom_coprod_dom_dom_congr_sum_congr Modified src/linear_algebra/pi_tensor_product.lean Modified src/ring_theory/nilpotent.lean Modified src/topology/algebra/multilinear.lean 2021-09-24 11:04:39 854e5c6 refactor(measure_theory/measure/regular): add `inner_regular`, `outer_regular`, generalize (#9283) ### Regular measures * add a non-class predicate `inner_regular` to prove some lemmas once, not twice; * add TC `outer_regular`, drop primed lemmas; * consistently use `≠ ∞`, `≠ 0` in the assumptions; * drop some typeclass requirements. ### Other changes * add a few lemmas about subtraction to `data.real.ennreal`; * add `ennreal.add_lt_add_left`, `ennreal.add_lt_add_right`, and use them; ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.add_lt_add_left + theorem ennreal.add_lt_add_right + theorem ennreal.half_le_self + theorem ennreal.lt_div_iff_mul_lt + theorem ennreal.lt_sub_comm + theorem ennreal.mul_lt_of_lt_div' Modified src/measure_theory/constructions/borel_space.lean + theorem is_compact.exists_open_superset_measure_lt_top' + theorem is_compact.exists_open_superset_measure_lt_top + theorem measurable_set.induction_on_open + def measure_theory.measure.finite_spanning_sets_in_compact + def measure_theory.measure.finite_spanning_sets_in_open Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measure/content.lean - def measure_theory.content.measure Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.le_measure_diff + theorem measure_theory.measure_compl_le_add_iff + theorem measure_theory.measure_compl_le_add_of_le_add + theorem measure_theory.measure_diff_lt_of_lt_add Modified src/measure_theory/measure/regular.lean + theorem is_open.exists_lt_is_closed - theorem is_open.exists_lt_is_closed_of_gt + theorem measurable_set.exists_is_closed_diff_lt + theorem measurable_set.exists_is_closed_lt_add + theorem measurable_set.exists_is_compact_diff_lt + theorem measurable_set.exists_is_compact_lt_add + theorem measurable_set.exists_is_open_diff_lt - theorem measurable_set.exists_is_open_lt_of_lt' - theorem measurable_set.exists_is_open_lt_of_lt - theorem measurable_set.exists_lt_is_closed_of_lt_top - theorem measurable_set.exists_lt_is_closed_of_lt_top_of_pos + theorem measurable_set.exists_lt_is_closed_of_ne_top - theorem measurable_set.exists_lt_is_compact_of_lt_top - theorem measurable_set.exists_lt_is_compact_of_lt_top_of_pos + theorem measurable_set.exists_lt_is_compact_of_ne_top - theorem measurable_set.measure_eq_infi_is_open' - theorem measurable_set.measure_eq_infi_is_open - theorem measurable_set.measure_eq_supr_is_closed_of_is_finite_measure - theorem measurable_set.measure_eq_supr_is_closed_of_lt_top + theorem measurable_set.measure_eq_supr_is_closed_of_ne_top - theorem measurable_set.measure_eq_supr_is_compact_of_lt_top + theorem measurable_set.measure_eq_supr_is_compact_of_ne_top + theorem measure_theory.measure.inner_regular.exists_subset_lt_add + theorem measure_theory.measure.inner_regular.is_compact_is_closed + theorem measure_theory.measure.inner_regular.map + theorem measure_theory.measure.inner_regular.measurable_set_of_open + theorem measure_theory.measure.inner_regular.measure_eq_supr + theorem measure_theory.measure.inner_regular.of_pseudo_emetric_space + theorem measure_theory.measure.inner_regular.smul + theorem measure_theory.measure.inner_regular.trans + theorem measure_theory.measure.inner_regular.weakly_regular_of_finite + def measure_theory.measure.inner_regular + theorem measure_theory.measure.regular.inner_regular_measurable - theorem measure_theory.measure.weakly_regular.exists_closed_subset_self_subset_open_of_pos - theorem measure_theory.measure.weakly_regular.exists_subset_is_open_measure_lt_top + theorem measure_theory.measure.weakly_regular.inner_regular_measurable - theorem measure_theory.measure.weakly_regular.inner_regular_of_pseudo_emetric_space - theorem measure_theory.measure.weakly_regular.restrict_of_is_open +/- theorem measure_theory.measure.weakly_regular.restrict_of_measurable_set - theorem measure_theory.measure.weakly_regular.weakly_regular_of_inner_regular_of_is_finite_measure + theorem set.exists_is_open_lt_add + theorem set.exists_is_open_lt_of_lt + theorem set.measure_eq_infi_is_open Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/emetric_space.lean 2021-09-24 11:04:38 a512db1 feat(linear_algebra/free_modules): add instances (#9223) We add the instances `module.finite` and `module.free` on `(M →+ N)`, for `M` and `N` finite and free abelian groups. We already have the more general version over any ring, for `(M →ₗ[R] N)`. (They are mathematically more general, but not for Lean.) ESTIMATED CHANGES Modified src/linear_algebra/free_module.lean 2021-09-24 08:36:36 6a9ba18 feat(measure_theory): `ι → α ≃ᵐ α` if `[unique ι]` (#9353) * define versions of `equiv.fun_unique` for `order_iso` and `measurable_equiv`; * use the latter to relate integrals over (sets in) `ι → α` and `α`, where `ι` is a type with an unique element. ESTIMATED CHANGES Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.integral_fun_unique' + theorem measure_theory.integral_fun_unique + theorem measure_theory.integral_fun_unique_pi' + theorem measure_theory.integral_fun_unique_pi + theorem measure_theory.measure.map_fun_unique + theorem measure_theory.measure.pi_unique_eq_map + theorem measure_theory.set_integral_fun_unique' + theorem measure_theory.set_integral_fun_unique + theorem measure_theory.set_integral_fun_unique_pi' + theorem measure_theory.set_integral_fun_unique_pi Modified src/measure_theory/measurable_space.lean + def measurable_equiv.fun_unique Modified src/order/rel_iso.lean + def order_iso.fun_unique + theorem order_iso.fun_unique_symm_apply 2021-09-24 08:36:35 9e59e29 feat(category_theory/opposites): Add is_iso_op (#9319) ESTIMATED CHANGES Modified src/category_theory/opposites.lean + theorem category_theory.op_inv 2021-09-24 08:36:34 9618d73 feat(algebra,group_theory): smul_(g)pow (#9311) Rename `smul_pow` to `smul_pow'` to match `smul_mul'`. Instead provide the distributing lemma `smul_pow` where the power distributes onto the scalar as well. Provide the group action `smul_gpow` as well. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem smul_pow' + theorem smul_pow Modified src/algebra/polynomial/group_ring_action.lean Modified src/field_theory/fixed.lean Modified src/group_theory/group_action/basic.lean - theorem smul_pow Modified src/group_theory/group_action/group.lean + theorem smul_gpow 2021-09-24 06:10:23 a9cd8c2 feat(linear_algebra): redefine `linear_map` and `linear_equiv` to be semilinear (#9272) This PR redefines `linear_map` and `linear_equiv` to be semilinear maps/equivs. A semilinear map `f` is a map from an `R`-module to an `S`-module with a ring homomorphism `σ` between `R` and `S`, such that `f (c • x) = (σ c) • (f x)`. If we plug in the identity into `σ`, we get regular linear maps, and if we plug in the complex conjugate, we get conjugate linear maps. There are also other examples (e.g. Frobenius-linear maps) where this is useful which are covered by this general formulation. This was discussed on Zulip [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Semilinear.20maps), and a few preliminaries for this have already been merged. The main issue that we had to overcome involved composition of semilinear maps, and `symm` for linear equivalences: having things like `σ₂₃.comp σ₁₂` in the types of semilinear maps creates major problems. For example, we want the composition of two conjugate-linear maps to be a regular linear map, not a `conj.comp conj`-linear map. To solve this issue, following a discussion from back in January, we created two typeclasses to make Lean infer the right ring hom. The first one is `[ring_hom_comp_triple σ₁₂ σ₂₃ σ₁₃]` which expresses the fact that `σ₂₃.comp σ₁₂ = σ₁₃`, and the second one is `[ring_hom_inv_pair σ₁₂ σ₂₁]` which states that `σ₁₂` and `σ₂₁` are inverses of each other. There is also `[ring_hom_surjective σ]`, which is a necessary assumption to generalize some basic lemmas (such as `submodule.map`). Note that we have introduced notation to ensure that regular linear maps can still be used as before, i.e. `M →ₗ[R] N` still works as before to mean a regular linear map. The main changes are in `algebra/module/linear_map.lean`, `data/equiv/module.lean` and `linear_algebra/basic.lean` (and `algebra/ring/basic.lean` for the `ring_hom` typeclasses). The changes in other files fall into the following categories: 1. When defining a regular linear map directly using the structure (i.e. when specifying `to_fun`, `map_smul'` and so on), there is a `ring_hom.id` that shows up in `map_smul'`. This mostly involves dsimping it away. 2. Elaboration seems slightly more brittle, and it fails a little bit more often than before. For example, when `f` is a linear map and `g` is something that can be coerced to a linear map (say a linear equiv), one has to write `↑g` to make `f.comp ↑g` work, or sometimes even to add a type annotation. This also occurs when using `trans` twice (i.e. `e₁.trans (e₂.trans e₃)`). In those places, we use the notation defined in #8857 `∘ₗ` and `≪≫ₗ`. 3. It seems to exacerbate the bug discussed [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/odd.20repeated.20type.20class.20search) for reasons that we don't understand all that well right now. It manifests itself in very slow calls to the tactic `ext`, and the quick fix is to manually use the right ext lemma. 4. The PR triggered a few timeouts in proofs that were already close to the edge. Those were sped up. 5. A few random other issues that didn't arise often enough to see a pattern. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Modified src/algebra/lie/direct_sum.lean Modified src/algebra/lie/submodule.lean +/- theorem lie_ideal.comap_coe_submodule Modified src/algebra/lie/tensor_product.lean Modified src/algebra/lie/weights.lean Modified src/algebra/module/linear_map.lean +/- def distrib_mul_action_hom.to_linear_map +/- theorem linear_map.coe_comp +/- theorem linear_map.coe_injective +/- def linear_map.comp +/- theorem linear_map.comp_apply +/- theorem linear_map.ext_ring +/- theorem linear_map.ext_ring_iff +/- def linear_map.inverse +/- theorem linear_map.is_linear +/- theorem linear_map.map_smul + theorem linear_map.map_smul_inv + theorem linear_map.map_smulₛₗ +/- theorem linear_map.mk_coe +/- def linear_map.restrict_scalars +/- theorem linear_map.restrict_scalars_inj +/- def linear_map.to_add_monoid_hom +/- structure linear_map Modified src/algebra/module/submodule_pointwise.lean Modified src/algebra/monoid_algebra/basic.lean Modified src/algebra/ring/basic.lean Added src/algebra/ring/comp_typeclasses.lean + theorem ring_hom.is_surjective + theorem ring_hom_comp_triple.comp_apply + theorem ring_hom_inv_pair.comp_apply_eq + theorem ring_hom_inv_pair.comp_apply_eq₂ + theorem ring_hom_surjective.comp Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/isometry.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/multilinear.lean Modified src/category_theory/preadditive/Mat.lean Modified src/data/equiv/module.lean +/- theorem linear_equiv.coe_coe +/- theorem linear_equiv.coe_of_involutive +/- theorem linear_equiv.map_smul + theorem linear_equiv.map_smulₛₗ +/- theorem linear_equiv.mk_coe' +/- def linear_equiv.of_involutive +/- def linear_equiv.simps.symm_apply +/- def linear_equiv.symm +/- theorem linear_equiv.symm_bijective +/- theorem linear_equiv.symm_symm +/- theorem linear_equiv.symm_trans_apply +/- def linear_equiv.to_equiv +/- theorem linear_equiv.to_equiv_inj +/- theorem linear_equiv.to_equiv_injective +/- theorem linear_equiv.to_linear_map_eq_coe +/- theorem linear_equiv.to_linear_map_inj +/- theorem linear_equiv.to_linear_map_injective +/- def linear_equiv.trans +/- theorem linear_equiv.trans_apply +/- theorem linear_equiv.trans_refl +/- structure linear_equiv Modified src/data/mv_polynomial/pderiv.lean Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/taylor.lean Modified src/geometry/manifold/derivation_bundle.lean Modified src/linear_algebra/basic.lean +/- theorem finsupp.smul_sum +/- theorem finsupp.sum_smul_index_linear_map' +/- theorem linear_equiv.coe_zero +/- theorem linear_equiv.eq_bot_of_equiv +/- theorem linear_equiv.ker_comp +/- theorem linear_equiv.map_dfinsupp_sum_add_hom +/- theorem linear_equiv.map_eq_comap +/- theorem linear_equiv.map_finsupp_sum +/- theorem linear_equiv.of_bijective_apply +/- theorem linear_equiv.of_injective_apply +/- def linear_equiv.of_left_inverse +/- theorem linear_equiv.of_left_inverse_apply +/- theorem linear_equiv.of_left_inverse_symm_apply +/- def linear_equiv.of_linear +/- theorem linear_equiv.of_linear_symm_apply +/- def linear_equiv.of_submodule' +/- theorem linear_equiv.of_submodule'_apply +/- theorem linear_equiv.of_submodule'_symm_apply +/- theorem linear_equiv.of_submodule'_to_linear_map +/- def linear_equiv.of_submodule +/- theorem linear_equiv.of_submodule_symm_apply +/- def linear_equiv.of_submodules +/- theorem linear_equiv.of_submodules_apply +/- theorem linear_equiv.of_submodules_symm_apply +/- theorem linear_equiv.range_comp +/- theorem linear_equiv.zero_apply +/- theorem linear_equiv.zero_symm +/- theorem linear_map.add_apply +/- theorem linear_map.add_comp +/- def linear_map.cod_restrict +/- theorem linear_map.cod_restrict_apply +/- theorem linear_map.coe_dfinsupp_sum +/- theorem linear_map.coe_finsupp_sum +/- theorem linear_map.coe_fn_sum +/- theorem linear_map.coe_smul_right +/- theorem linear_map.comap_cod_restrict +/- theorem linear_map.comap_injective +/- theorem linear_map.comap_le_comap_iff +/- theorem linear_map.comp_add +/- theorem linear_map.comp_assoc +/- theorem linear_map.comp_cod_restrict +/- theorem linear_map.comp_ker_subtype +/- theorem linear_map.comp_neg +/- theorem linear_map.comp_sub +/- theorem linear_map.comp_zero +/- theorem linear_map.default_def +/- theorem linear_map.dfinsupp_sum_apply +/- theorem linear_map.disjoint_ker +/- def linear_map.dom_restrict +/- theorem linear_map.dom_restrict_apply +/- theorem linear_map.eq_on_span' +/- theorem linear_map.eq_on_span +/- def linear_map.eval_add_monoid_hom +/- theorem linear_map.ext_on +/- theorem linear_map.ext_on_range +/- theorem linear_map.finsupp_sum_apply +/- def linear_map.ker +/- theorem linear_map.ker_cod_restrict +/- theorem linear_map.ker_comp +/- theorem linear_map.ker_comp_of_ker_eq_bot +/- theorem linear_map.ker_eq_bot' +/- theorem linear_map.ker_eq_bot_of_cancel +/- theorem linear_map.ker_eq_bot_of_injective +/- theorem linear_map.ker_eq_bot_of_inverse +/- theorem linear_map.ker_eq_top +/- theorem linear_map.ker_le_iff +/- theorem linear_map.ker_le_ker_comp +/- theorem linear_map.ker_le_range_iff +/- theorem linear_map.ker_zero +/- theorem linear_map.le_ker_iff_map +/- theorem linear_map.map_cod_restrict +/- theorem linear_map.map_coe_ker +/- theorem linear_map.map_dfinsupp_sum +/- theorem linear_map.map_dfinsupp_sum_add_hom +/- theorem linear_map.map_eq_top_iff +/- theorem linear_map.map_finsupp_sum +/- theorem linear_map.map_injective +/- theorem linear_map.map_le_map_iff' +/- theorem linear_map.map_le_map_iff +/- theorem linear_map.map_le_range +/- theorem linear_map.mem_ker +/- theorem linear_map.mem_range +/- theorem linear_map.mem_range_self +/- def linear_map.range +/- theorem linear_map.range_cod_restrict +/- theorem linear_map.range_coe +/- theorem linear_map.range_comp +/- theorem linear_map.range_comp_le_range +/- theorem linear_map.range_comp_of_range_eq_top +/- theorem linear_map.range_eq_bot +/- theorem linear_map.range_eq_map +/- theorem linear_map.range_eq_top +/- theorem linear_map.range_eq_top_of_cancel +/- theorem linear_map.range_le_bot_iff +/- theorem linear_map.range_le_iff_comap +/- theorem linear_map.range_le_ker_iff +/- theorem linear_map.range_mkq_comp +/- def linear_map.range_restrict +/- theorem linear_map.range_zero +/- def linear_map.smul_right +/- theorem linear_map.smul_right_apply +/- theorem linear_map.sub_comp +/- theorem linear_map.subtype_comp_cod_restrict +/- theorem linear_map.sum_apply +/- def linear_map.to_add_monoid_hom' +/- theorem linear_map.zero_apply +/- theorem linear_map.zero_comp +/- theorem pi_eq_sum_univ +/- theorem submodule.apply_coe_mem_map +/- theorem submodule.coe_equiv_map_of_injective_apply +/- def submodule.comap +/- theorem submodule.comap_bot +/- theorem submodule.comap_coe +/- theorem submodule.comap_comp +/- theorem submodule.comap_equiv_eq_map_symm +/- theorem submodule.comap_inf +/- theorem submodule.comap_infi +/- theorem submodule.comap_le_comap_iff_of_surjective +/- theorem submodule.comap_le_comap_smul +/- theorem submodule.comap_liftq +/- theorem submodule.comap_map_eq +/- theorem submodule.comap_map_eq_self +/- theorem submodule.comap_mono +/- theorem submodule.comap_top +/- theorem submodule.comap_zero +/- def submodule.compatible_maps +/- theorem submodule.gc_map_comap +/- theorem submodule.inf_comap_le_comap_add +/- theorem submodule.ker_liftq +/- theorem submodule.ker_liftq_eq_bot +/- theorem submodule.le_comap_map +/- def submodule.liftq +/- theorem submodule.liftq_apply +/- theorem submodule.liftq_mkq +/- theorem submodule.linear_map_qext +/- def submodule.map +/- theorem submodule.map_add_le +/- theorem submodule.map_bot +/- theorem submodule.map_coe +/- theorem submodule.map_comap_eq +/- theorem submodule.map_comap_eq_of_surjective +/- theorem submodule.map_comap_eq_self +/- theorem submodule.map_comap_le +/- theorem submodule.map_comp +/- theorem submodule.map_equiv_eq_comap_symm +/- theorem submodule.map_id +/- theorem submodule.map_inf_comap_of_surjective +/- theorem submodule.map_inf_eq_map_inf_comap +/- theorem submodule.map_infi_comap_of_surjective +/- theorem submodule.map_le_iff_le_comap +/- theorem submodule.map_liftq +/- theorem submodule.map_mono +/- theorem submodule.map_span +/- theorem submodule.map_sup +/- theorem submodule.map_sup_comap_of_surjective +/- theorem submodule.map_supr +/- theorem submodule.map_supr_comap_of_sujective +/- theorem submodule.map_top +/- theorem submodule.map_zero +/- def submodule.mapq +/- theorem submodule.mapq_apply +/- def submodule.mapq_linear +/- theorem submodule.mapq_mkq +/- theorem submodule.mem_comap +/- theorem submodule.mem_map +/- theorem submodule.mem_map_equiv +/- theorem submodule.mem_map_of_mem +/- theorem submodule.mem_prod +/- theorem submodule.mem_supr +/- theorem submodule.mem_supr_of_chain +/- def submodule.prod +/- theorem submodule.prod_bot +/- theorem submodule.prod_inf_prod +/- theorem submodule.prod_mono +/- theorem submodule.prod_sup_prod +/- theorem submodule.prod_top +/- theorem submodule.range_liftq +/- theorem submodule.span_image +/- theorem submodule.span_preimage_eq +/- theorem submodule.span_preimage_le +/- theorem submodule.span_prod_le +/- theorem submodule.supr_eq_span Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean + def bilin_form.to_lin_hom_aux₁ + def bilin_form.to_lin_hom_aux₂ +/- theorem bilin_form.to_matrix'_comp_left +/- theorem bilin_form.to_matrix'_comp_right Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/clifford_algebra/conjugation.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/pi.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/prod.lean Modified src/linear_algebra/projection.lean Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/std_basis.lean Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/function/lp_space.lean Modified src/number_theory/class_number/finite.lean Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/tensor_product.lean Modified src/topology/algebra/module.lean Modified src/topology/continuous_function/bounded.lean 2021-09-24 04:51:04 a7a9c91 feat(ring_theory/localization): Localizing at units is isomorphic to the ring (#9324) ESTIMATED CHANGES Modified src/ring_theory/localization.lean + def is_localization.at_one + def is_localization.at_unit + def is_localization.at_units 2021-09-24 02:10:32 4a8fb6a chore(linear_algebra): rename endomorphism multiplicative structures for consistency (#9336) This renames: * `module.endomorphism_semiring` → `module.End.semiring` * `module.endomorphism_ring` → `module.End.ring` * `module.endomorphism_algebra` → `module.End.algebra` * `linear_map.module.End.division_ring` → `module.End.division_ring` This brings the name in line with the names for `add_monoid.End`. Since `module.End` is an abbreviation, it does not matter that the instances now use this instead of `M →ₗ[R] M`. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/algebra/basic.lean Modified src/algebra/module/linear_map.lean Modified src/linear_algebra/basic.lean Modified src/ring_theory/simple_module.lean 2021-09-24 01:29:26 dd519df chore(*): linting (#9342) ESTIMATED CHANGES Modified src/set_theory/surreal/basic.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/compact_open.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/stalks.lean 2021-09-24 00:26:14 1a341fd feat(algebra/*): Tensor product is the fibered coproduct in CommRing (#9338) ESTIMATED CHANGES Added src/algebra/category/CommRing/pushout.lean + def CommRing.pushout_cocone + theorem CommRing.pushout_cocone_X + theorem CommRing.pushout_cocone_inl + theorem CommRing.pushout_cocone_inr + def CommRing.pushout_cocone_is_colimit Modified src/ring_theory/tensor_product.lean + def algebra.tensor_product.lmul' + theorem algebra.tensor_product.lmul'_apply_tmul + theorem algebra.tensor_product.lmul'_comp_include_left + theorem algebra.tensor_product.lmul'_comp_include_right + theorem algebra.tensor_product.lmul'_to_linear_map + theorem algebra.tensor_product.map_comp_include_left + theorem algebra.tensor_product.map_comp_include_right + def algebra.tensor_product.product_map + theorem algebra.tensor_product.product_map_apply_tmul + theorem algebra.tensor_product.product_map_left + theorem algebra.tensor_product.product_map_left_apply + theorem algebra.tensor_product.product_map_right + theorem algebra.tensor_product.product_map_right_apply 2021-09-24 00:26:13 2d17f52 feat(measure_theory/integral/*): integral over map (e : α ≃ᵐ β) μ (#9316) ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable_map_equiv Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.integral_map_equiv Modified src/measure_theory/integral/integrable_on.lean + theorem measure_theory.integrable_on_map_equiv Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.set_integral_map_equiv Modified src/measure_theory/measure/measure_space.lean + theorem ae_measurable_map_equiv_iff + theorem measurable_equiv.restrict_map 2021-09-24 00:26:12 18f0093 feat(measure_theory/measure/measure_space): add measure_Union_of_null_inter (#9307) From #2819 ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure_Union_of_null_inter 2021-09-24 00:26:11 7e3256b feat(ring_theory/derivation): helper lemma for custom `derivation_ext` lemmas (#9255) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + theorem derivation.eq_on_adjoin + theorem derivation.ext_of_adjoin_eq_top 2021-09-24 00:26:10 9b1f0bb feat(topology/compact_open): convergence in the compact-open topology can be checked on compact sets (#9240) ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.compact_open_le_induced + theorem continuous_map.continuous_ev₁ + theorem continuous_map.continuous_restrict + theorem continuous_map.exists_tendsto_compact_open_iff_forall + theorem continuous_map.tendsto_compact_open_restrict 2021-09-23 22:18:50 d2f7b24 feat(algebra/pointwise): more to_additive attributes for new lemmas (#9348) Some of these lemmas introduced in #9226 I believe. Spun off from #2819. ESTIMATED CHANGES Modified src/algebra/pointwise.lean +/- theorem set_smul_subset_set_smul_iff +/- theorem smul_mem_smul_set_iff 2021-09-23 22:18:49 88c79e5 feat(data/fintype/basic): embeddings of fintypes based on cardinal inequalities (#9346) From https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/mapping.20a.20fintype.20into.20a.20finset/near/254493754, based on suggestions by @kmill and @eric-wieser and @riccardobrasca. ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- theorem function.embedding.equiv_of_fintype_self_embedding_to_embedding + theorem function.embedding.exists_of_card_le_finset +/- theorem function.embedding.is_empty_of_card_lt + theorem function.embedding.nonempty_of_card_le + def function.embedding.trunc_of_card_le 2021-09-23 22:18:48 c950c45 feat(analysis/calculus/[f]deriv): derivative of pointwise composition/application of continuous linear maps (#9174) This introduces useful analogs to the product rule when working with derivatives in spaces of continuous linear maps. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_clm_apply + theorem deriv_clm_comp + theorem deriv_within_clm_apply + theorem deriv_within_clm_comp + theorem has_deriv_at.clm_apply + theorem has_deriv_at.clm_comp + theorem has_deriv_within_at.clm_apply + theorem has_deriv_within_at.clm_comp + theorem has_strict_deriv_at.clm_apply + theorem has_strict_deriv_at.clm_comp Modified src/analysis/calculus/fderiv.lean + theorem differentiable.clm_apply + theorem differentiable.clm_comp + theorem differentiable_at.clm_apply + theorem differentiable_at.clm_comp + theorem differentiable_on.clm_apply + theorem differentiable_on.clm_comp + theorem differentiable_within_at.clm_apply + theorem differentiable_within_at.clm_comp + theorem fderiv_clm_apply + theorem fderiv_clm_comp + theorem fderiv_within_clm_apply + theorem fderiv_within_clm_comp + theorem has_fderiv_at.clm_apply + theorem has_fderiv_at.clm_comp + theorem has_fderiv_within_at.clm_apply + theorem has_fderiv_within_at.clm_comp + theorem has_strict_fderiv_at.clm_apply + theorem has_strict_fderiv_at.clm_comp Modified src/topology/algebra/module.lean + theorem continuous_linear_map.comp_apply 2021-09-23 21:18:45 54eb603 chore(analysis/normed_space/conformal_linear_map): delay dependence on inner products (#9293) ESTIMATED CHANGES Added src/analysis/calculus/conformal/inner_product.lean + theorem conformal_at_iff' + theorem conformal_at_iff + def conformal_factor_at + theorem conformal_factor_at_inner_eq_mul_inner' + theorem conformal_factor_at_inner_eq_mul_inner + theorem conformal_factor_at_pos Renamed src/analysis/calculus/conformal.lean to src/analysis/calculus/conformal/normed_space.lean - def conformal_at.conformal_factor_at - theorem conformal_at.conformal_factor_at_inner_eq_mul_inner' - theorem conformal_at.conformal_factor_at_inner_eq_mul_inner - theorem conformal_at.conformal_factor_at_pos - theorem conformal_at_iff' - theorem conformal_at_iff Modified src/analysis/complex/real_deriv.lean Modified src/analysis/normed_space/conformal_linear_map.lean +/- theorem is_conformal_map.injective +/- theorem is_conformal_map.ne_zero +/- def is_conformal_map - theorem is_conformal_map_iff +/- theorem linear_isometry.is_conformal_map Added src/analysis/normed_space/conformal_linear_map/inner_product.lean + theorem is_conformal_map_iff Modified src/geometry/euclidean/basic.lean Modified src/geometry/manifold/conformal_groupoid.lean 2021-09-23 19:20:02 14bcb2e feat(measure_theory/measure/measure_space_def): some simple lemmas about measures and intersection (#9306) From #2819 ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space_def.lean - theorem measure_theory.measure_inter_lt_top + theorem measure_theory.measure_inter_lt_top_of_left_ne_top + theorem measure_theory.measure_inter_lt_top_of_right_ne_top - theorem measure_theory.measure_inter_ne_top + theorem measure_theory.measure_inter_null_of_null_left + theorem measure_theory.measure_inter_null_of_null_right 2021-09-23 19:20:01 ea59c90 feat(ring_theory/algebraic): is_algebraic_iff_not_injective (#9254) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean + theorem is_algebraic_iff_not_injective 2021-09-23 16:42:28 9e367ff feat(linear_algebra/invariant_basis_number): strong_rank_condition_iff_succ (#9128) We add `strong_rank_condition_iff_succ`: a ring satisfies the strong rank condition if and only if, for all `n : ℕ`, there are no injective linear maps `(fin (n + 1) → R) →ₗ[R] (fin n → R)`. This will be used to prove that any commutative ring satisfies the strong rank condition. The proof is simple and it uses the natural inclusion `R^n → R^m`, for `n ≤ m` (adding zeros at the end). We provide this in general as `extend_by_zero.linear_map : (ι → R) →ₗ[R] (η → R)` where `ι` and `η` are types endowed with a function `ι → η`. ESTIMATED CHANGES Modified src/algebra/group/pi.lean Modified src/algebra/module/pi.lean + theorem function.extend_smul Modified src/data/pi.lean + theorem function.extend_div + theorem function.extend_inv + theorem function.extend_mul + theorem function.extend_one Modified src/linear_algebra/invariant_basis_number.lean + theorem strong_rank_condition_iff_succ Modified src/linear_algebra/pi.lean Modified src/logic/function/basic.lean + theorem function.extend_apply' + theorem function.extend_injective 2021-09-23 15:31:34 b365367 feat(README.md): add Oliver Nash (#9347) ESTIMATED CHANGES Modified README.md 2021-09-23 15:31:33 81f6e88 chore(analysis/calculus): add 2 simple lemmas (#9334) Add `differentiable_on.has_fderiv_at` and `differentiable_on.has_deriv_at`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem differentiable_on.has_deriv_at Modified src/analysis/calculus/fderiv.lean + theorem differentiable_on.has_fderiv_at 2021-09-23 15:31:31 0243da3 feat(ereal): added useful lemmas (#9313) Some small addition to the api for ereals. ESTIMATED CHANGES Modified src/data/real/ereal.lean + theorem ereal.coe_to_real_le + theorem ereal.eq_bot_iff_forall_lt + theorem ereal.eq_top_iff_forall_lt + theorem ereal.le_coe_to_real 2021-09-23 14:08:43 cc0d839 feat(measure_theory/measure/haar): cleanup, link with the is_haar_measure typeclass (#9244) We show that the Haar measure constructed in `measure_theory/measure/haar` satisfies the `is_haar_measure` typeclass, and use the existence to show a few further properties of all Haar measures. Also weaken a little bit some assumptions in this file. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.pow_strict_mono Modified src/measure_theory/measure/haar.lean - theorem measure_theory.measure.add_haar_measure_apply + def measure_theory.measure.haar - theorem measure_theory.measure.haar_measure_pos_of_is_open +/- theorem measure_theory.measure.haar_measure_self + theorem measure_theory.measure.haar_preimage_inv + theorem measure_theory.measure.is_haar_measure_eq_smul_is_haar_measure + theorem measure_theory.measure.map_haar_inv Modified src/topology/algebra/group.lean + theorem topological_space.positive_compacts.locally_compact_space_of_group Modified src/topology/compacts.lean 2021-09-23 08:15:13 602ad58 feat(measure_theory/integral): add a few lemmas (#9285) ESTIMATED CHANGES Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.integral_coe_le_of_lintegral_coe_le + theorem measure_theory.lintegral_coe_le_coe_iff_integral_le + theorem measure_theory.simple_func.integral_const + theorem measure_theory.simple_func.integral_piecewise_zero Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.range_const_subset 2021-09-23 08:15:12 145c5ca refactor(topology/category/Top/open_nhds): remove open_nhds.is_filtered (#9211) Remove instance that can be inferred automatically. ESTIMATED CHANGES Modified src/topology/category/Top/open_nhds.lean 2021-09-23 06:57:23 8a0d60e chore(topology): rename compact_ball to is_compact_closed_ball (#9337) The old name didn't follow the naming convention at all, which made it hard to discover. ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/normed_space/euclidean_dist.lean - theorem euclidean.compact_ball + theorem euclidean.is_compact_closed_ball Modified src/geometry/manifold/bump_function.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean 2021-09-23 06:06:00 7615f83 chore(archive/100-theorems-list/42): typo (#9341) ESTIMATED CHANGES Modified archive/100-theorems-list/42_inverse_triangle_sum.lean 2021-09-23 05:13:45 d238087 chore(data/real/pi/*): correct authorship data (#9314) #9295 split `data.real.pi` into three files with the naive transferral of authorship and copyright data, this updates it to the actual authorship. ESTIMATED CHANGES Modified src/data/real/pi/bounds.lean Modified src/data/real/pi/leibniz.lean Modified src/data/real/pi/wallis.lean 2021-09-23 04:17:39 a15ae9c chore(measure_theory/measurable_space): add simps config for `measurable_equiv` (#9315) Also add `@[ext]` lemma and some standard `equiv` lemmas. ESTIMATED CHANGES Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/measurable_space.lean + theorem measurable_equiv.apply_symm_apply - theorem measurable_equiv.coe_eq - theorem measurable_equiv.coe_symm_mk + theorem measurable_equiv.coe_to_equiv + theorem measurable_equiv.coe_to_equiv_symm + theorem measurable_equiv.ext + theorem measurable_equiv.self_trans_symm + def measurable_equiv.simps.apply + def measurable_equiv.simps.symm_apply +/- def measurable_equiv.symm + theorem measurable_equiv.symm_apply_apply + theorem measurable_equiv.symm_mk + theorem measurable_equiv.symm_refl + theorem measurable_equiv.symm_trans_self + theorem measurable_equiv.to_equiv_injective +/- def measurable_equiv.trans Modified src/measure_theory/measure/measure_space.lean 2021-09-23 02:22:43 b563e5a chore(scripts): update nolints.txt (#9339) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-09-23 00:38:17 671b179 refactor(group_theory/subgroup,linear_algebra/basic): put pointwise actions in their own files to match submonoid (#9312) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/category/Group/limits.lean Modified src/algebra/direct_sum/basic.lean Modified src/algebra/direct_sum/ring.lean Modified src/algebra/group_ring_action.lean Added src/algebra/module/submodule_pointwise.lean + theorem submodule.add_eq_sup + theorem submodule.coe_pointwise_smul + theorem submodule.pointwise_smul_to_add_subgroup + theorem submodule.pointwise_smul_to_add_submonoid + theorem submodule.smul_le_self_of_tower + theorem submodule.smul_mem_pointwise_smul + theorem submodule.zero_eq_bot Modified src/deprecated/subgroup.lean Modified src/group_theory/archimedean.lean Modified src/group_theory/coset.lean Modified src/group_theory/finiteness.lean Modified src/group_theory/free_group.lean Modified src/group_theory/general_commutator.lean Modified src/group_theory/perm/subgroup.lean Modified src/group_theory/semidirect_product.lean Renamed src/group_theory/subgroup.lean to src/group_theory/subgroup/basic.lean - theorem add_subgroup.coe_pointwise_smul - theorem add_subgroup.pointwise_smul_to_add_submonoid - theorem add_subgroup.smul_mem_pointwise_smul - theorem subgroup.coe_pointwise_smul - theorem subgroup.pointwise_smul_to_submonoid - theorem subgroup.smul_mem_pointwise_smul Added src/group_theory/subgroup/pointwise.lean + theorem add_subgroup.coe_pointwise_smul + theorem add_subgroup.pointwise_smul_to_add_submonoid + theorem add_subgroup.smul_mem_pointwise_smul + theorem subgroup.coe_pointwise_smul + theorem subgroup.pointwise_smul_to_submonoid + theorem subgroup.smul_mem_pointwise_smul Modified src/group_theory/submonoid/pointwise.lean Modified src/linear_algebra/basic.lean - theorem submodule.add_eq_sup - theorem submodule.coe_pointwise_smul - theorem submodule.lt_add_iff_not_mem + theorem submodule.lt_sup_iff_not_mem +/- theorem submodule.map_add_le - theorem submodule.pointwise_smul_to_add_subgroup - theorem submodule.pointwise_smul_to_add_submonoid - theorem submodule.smul_le_self_of_tower - theorem submodule.smul_mem_pointwise_smul - theorem submodule.zero_eq_bot Modified src/ring_theory/subring.lean Modified src/topology/algebra/nonarchimedean/basic.lean 2021-09-23 00:38:16 20981be feat(linear_algebra/charpoly): add linear_map.charpoly (#9279) We add `linear_map.charpoly`, the characteristic polynomial of an endomorphism of a finite free module, and a basic API. ESTIMATED CHANGES Added src/linear_algebra/charpoly.lean + theorem linear_map.aeval_self_charpoly + def linear_map.charpoly + theorem linear_map.charpoly_coeff_zero_of_injective + theorem linear_map.charpoly_def + theorem linear_map.charpoly_monic + theorem linear_map.charpoly_to_matrix + theorem linear_map.is_integral + theorem linear_map.minpoly_dvd_charpoly Modified src/linear_algebra/charpoly/basic.lean + theorem charmatrix_reindex + theorem matrix.charpoly_reindex Modified src/linear_algebra/dimension.lean + def basis.index_equiv Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/free_module_pid.lean 2021-09-22 20:20:50 5b3b71a chore(data/equiv): rename `bool_to_equiv_prod` to `bool_arrow_equiv_prod` (#9333) Other changes: * use an explicit definition; * use `@[simps]`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.bool_arrow_equiv_prod - def equiv.bool_to_equiv_prod - theorem equiv.bool_to_equiv_prod_apply - theorem equiv.bool_to_equiv_prod_symm_apply_ff - theorem equiv.bool_to_equiv_prod_symm_apply_tt 2021-09-22 16:35:13 6eb8d41 chore(ring_theory/dedekind_domain): speed up `dedekind_domain.lean` (#9232) @eric-wieser [noticed that `dedekind_domain.lean`](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Timeouts.20in.20ring_theory.2Fdedekind_domain.2Elean.3A664.3A9) was compiling slowly and on the verge of a timeout. @kbuzzard, @sgouezel and I reworked some definitions to make everything elaborate much faster: `is_dedekind_domain_inv_iff`, `mul_inv_cancel_of_le_one` and `ideal.unique_factorization_monoid` went from over 10 seconds on my machine to less than 3 seconds. No other declaration in that file now takes over 2 seconds on my machine. Apart from the three declarations getting new proofs, I also made the following changes: * The operations on `localization` (`has_add`, `has_mul`, `has_one`, `has_zero`, `has_neg`, `npow` and `localization.inv`) are now `@[irreducible]` * `fraction_ring.field` copies its field from `localization.comm_ring` for faster unification (less relevant after the previous change) * Added `fractional_ideal.map_mem_map` and `fractional_ideal.map_injective` to simplify the proof of `is_dedekind_domain_inv_iff`. * Split the proof of `matrix.exists_mul_vec_eq_zero_iff` into two parts to speed it up ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean + def localization.lift_on + theorem localization.lift_on_mk' + theorem localization.lift_on_mk + def localization.lift_on₂ + theorem localization.lift_on₂_mk' + theorem localization.lift_on₂_mk + theorem localization.mk_eq_mk_iff + theorem localization.mk_mul + theorem localization.mk_one + theorem localization.mk_self + def localization.rec + theorem localization.rec_mk Modified src/linear_algebra/matrix/to_linear_equiv.lean + theorem matrix.exists_mul_vec_eq_zero_iff' Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.map_injective + theorem fractional_ideal.map_mem_map Modified src/ring_theory/localization.lean + theorem localization.add_mk +/- theorem localization.mk_eq_mk' + theorem localization.mk_zero + theorem localization.neg_mk + theorem localization.to_localization_map_eq_monoid_of Modified src/set_theory/surreal/dyadic.lean 2021-09-22 15:37:39 dc5a3db feat(algebra/category): Forgetful functors preserve filtered colimits (#9101) Shows that forgetful functors of various algebraic categories preserve filtered colimits. ESTIMATED CHANGES Added src/algebra/category/CommRing/filtered_colimits.lean + def CommRing.filtered_colimits.R + def CommRing.filtered_colimits.colimit + def CommRing.filtered_colimits.colimit_cocone + def CommRing.filtered_colimits.colimit_cocone_is_colimit + def CommSemiRing.filtered_colimits.R + def CommSemiRing.filtered_colimits.colimit + def CommSemiRing.filtered_colimits.colimit_cocone + def CommSemiRing.filtered_colimits.colimit_cocone_is_colimit + def Ring.filtered_colimits.R + def Ring.filtered_colimits.colimit + def Ring.filtered_colimits.colimit_cocone + def Ring.filtered_colimits.colimit_cocone_is_colimit + def SemiRing.filtered_colimits.R + def SemiRing.filtered_colimits.colimit + def SemiRing.filtered_colimits.colimit_cocone + def SemiRing.filtered_colimits.colimit_cocone_is_colimit Added src/algebra/category/Group/filtered_colimits.lean + def CommGroup.filtered_colimits.G + def CommGroup.filtered_colimits.colimit + def CommGroup.filtered_colimits.colimit_cocone + def CommGroup.filtered_colimits.colimit_cocone_is_colimit + def Group.filtered_colimits.G.mk + theorem Group.filtered_colimits.G.mk_eq + def Group.filtered_colimits.G + def Group.filtered_colimits.colimit + def Group.filtered_colimits.colimit_cocone + def Group.filtered_colimits.colimit_cocone_is_colimit + def Group.filtered_colimits.colimit_inv_aux + theorem Group.filtered_colimits.colimit_inv_aux_eq_of_rel + theorem Group.filtered_colimits.colimit_inv_mk_eq Added src/algebra/category/Module/filtered_colimits.lean + def Module.filtered_colimits.M.mk + theorem Module.filtered_colimits.M.mk_eq + def Module.filtered_colimits.M + def Module.filtered_colimits.cocone_morphism + def Module.filtered_colimits.colimit + def Module.filtered_colimits.colimit_cocone + def Module.filtered_colimits.colimit_cocone_is_colimit + def Module.filtered_colimits.colimit_desc + def Module.filtered_colimits.colimit_smul_aux + theorem Module.filtered_colimits.colimit_smul_aux_eq_of_rel + theorem Module.filtered_colimits.colimit_smul_mk_eq Added src/algebra/category/Mon/filtered_colimits.lean + def CommMon.filtered_colimits.M + def CommMon.filtered_colimits.colimit + def CommMon.filtered_colimits.colimit_cocone + def CommMon.filtered_colimits.colimit_cocone_is_colimit + def Mon.filtered_colimits.M.mk + theorem Mon.filtered_colimits.M.mk_eq + def Mon.filtered_colimits.M + def Mon.filtered_colimits.cocone_morphism + theorem Mon.filtered_colimits.cocone_naturality + def Mon.filtered_colimits.colimit + def Mon.filtered_colimits.colimit_cocone + def Mon.filtered_colimits.colimit_cocone_is_colimit + def Mon.filtered_colimits.colimit_desc + def Mon.filtered_colimits.colimit_mul_aux + theorem Mon.filtered_colimits.colimit_mul_aux_eq_of_rel_left + theorem Mon.filtered_colimits.colimit_mul_aux_eq_of_rel_right + theorem Mon.filtered_colimits.colimit_mul_mk_eq + theorem Mon.filtered_colimits.colimit_one_eq Modified src/category_theory/filtered.lean Added src/category_theory/limits/preserves/filtered.lean 2021-09-22 14:37:26 41414a3 chore(analysis/special_functions): typo in module doc (#9330) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean 2021-09-22 14:37:25 2b84c4c feat(linear_algebra/matrix/basis): add matrix basis change formula (#9280) We add `basis_to_matrix_mul_linear_map_to_matrix_mul_basis_to_matrix`, the formula for the change of basis. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/matrix/basis.lean + theorem basis_to_matrix_mul_linear_map_to_matrix_mul_basis_to_matrix 2021-09-22 14:37:23 68dbf27 feat(number_theory): the class group of an integral closure is finite (#9059) This is essentially the proof that the ring of integers of a global field has a finite class group, apart from filling in each hypothesis. ESTIMATED CHANGES Added src/number_theory/class_number/finite.lean + theorem class_group.exists_mem_finset_approx' + theorem class_group.exists_mem_finset_approx + theorem class_group.exists_min + theorem class_group.exists_mk0_eq_mk0 + theorem class_group.finset_approx.zero_not_mem + theorem class_group.mem_finset_approx + theorem class_group.mk_M_mem_surjective + theorem class_group.ne_bot_of_prod_finset_approx_mem + theorem class_group.norm_bound_pos + theorem class_group.norm_le + theorem class_group.norm_lt + theorem class_group.prod_finset_approx_ne_zero Modified src/ring_theory/algebraic.lean + theorem is_integral_closure.exists_smul_eq_mul 2021-09-22 12:11:46 a5d2dbc chore(measure_theory/integral/set_integral): generalize, golf (#9328) * rename `integrable_on_finite_union` to `integrable_on_finite_Union`; * rename `integrable_on_finset_union` to `integrable_on_finset_Union`; * add `integrable_on_fintype_Union`; * generalize `tendsto_measure_Union` and `tendsto_measure_Inter from `s : ℕ → set α` to `[semilattice_sup ι] [encodable ι] {s : ι → set α}`; * add `integral_diff`; * generalize `integral_finset_bUnion`, `integral_fintype_Union` and `has_sum_integral_Union` to require appropriate `integrable_on` instead of `integrable`; * golf some proofs. ESTIMATED CHANGES Modified src/measure_theory/integral/integrable_on.lean + theorem measure_theory.integrable_on_finite_Union - theorem measure_theory.integrable_on_finite_union + theorem measure_theory.integrable_on_finset_Union - theorem measure_theory.integrable_on_finset_union + theorem measure_theory.integrable_on_fintype_Union Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_diff +/- theorem measure_theory.integral_finset_bUnion +/- theorem measure_theory.tendsto_set_integral_of_monotone Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.tendsto_measure_Inter +/- theorem measure_theory.tendsto_measure_Union Modified src/measure_theory/measure/with_density_vector_measure.lean 2021-09-22 12:11:44 a994071 chore(data/complex/module): rename `complex.smul_coe` to `real_smul` (#9326) * the name was misleading b/c there is no `coe` in the LHS; * add `complex.coe_smul`: given `x : ℝ` and `y : E`, we have `(x : ℂ) • y = x • y`; * add `normed_space.complex_to_real`. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Modified src/analysis/complex/isometry.lean Modified src/data/complex/module.lean +/- theorem complex.coe_algebra_map + theorem complex.coe_smul + theorem complex.real_smul - theorem complex.smul_coe Modified src/linear_algebra/clifford_algebra/equivs.lean Modified src/measure_theory/decomposition/jordan.lean 2021-09-22 12:11:43 7e350c2 feat(category_theory/*): Fully faithful functors induces equivalence (#9322) Needed for AffineSchemes ≌ CommRingᵒᵖ. ESTIMATED CHANGES Modified src/category_theory/equivalence.lean Modified src/category_theory/essential_image.lean +/- def category_theory.functor.to_ess_image_comp_essential_image_inclusion Modified src/category_theory/fully_faithful.lean + def category_theory.full.of_comp_faithful 2021-09-22 12:11:42 15730e8 chore(analysis/convex): trivial generalizations of ℝ (#9298) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/convex/basic.lean - theorem convex_halfspace_im_ge - theorem convex_halfspace_im_gt - theorem convex_halfspace_im_le - theorem convex_halfspace_im_lt - theorem convex_halfspace_re_ge - theorem convex_halfspace_re_gt - theorem convex_halfspace_re_le - theorem convex_halfspace_re_lt +/- theorem convex_std_simplex +/- theorem ite_eq_mem_std_simplex +/- def std_simplex Modified src/analysis/convex/caratheodory.lean Modified src/analysis/convex/combination.lean +/- theorem convex.center_mass_mem +/- theorem convex.sum_mem + def finset.center_mass +/- theorem finset.center_mass_mem_convex_hull +/- theorem mem_Icc_of_mem_std_simplex Added src/analysis/convex/complex.lean + theorem convex_halfspace_im_ge + theorem convex_halfspace_im_gt + theorem convex_halfspace_im_le + theorem convex_halfspace_im_lt + theorem convex_halfspace_re_ge + theorem convex_halfspace_re_gt + theorem convex_halfspace_re_le + theorem convex_halfspace_re_lt Modified src/analysis/convex/extrema.lean Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/function.lean Modified src/analysis/convex/topology.lean +/- theorem bounded_std_simplex +/- theorem compact_std_simplex +/- theorem is_closed_std_simplex 2021-09-22 12:11:41 eb3d600 feat(data/{list,multiset}): add `can_lift` instances (#9262) * add `can_lift` instances for `set`, `list`, `multiset`, and `finset`; * use them in `submonoid.{list,multiset}_prod_mem`; * more `to_additive` attrs in `group_theory.submonoid.membership`. ESTIMATED CHANGES Modified src/data/finset/basic.lean Modified src/data/list/basic.lean Modified src/data/multiset/basic.lean Modified src/data/set/basic.lean Modified src/group_theory/submonoid/membership.lean - theorem add_submonoid.nsmul_mem +/- theorem submonoid.coe_finset_prod +/- theorem submonoid.coe_list_prod +/- theorem submonoid.coe_multiset_prod +/- theorem submonoid.coe_pow +/- theorem submonoid.list_prod_mem +/- theorem submonoid.multiset_prod_mem +/- theorem submonoid.pow_mem 2021-09-22 10:01:07 c9638b9 chore(measure_theory): add 2 lemmas (#9329) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.bounded_by_measure Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.outer_measure.bounded_by_eq_self 2021-09-22 10:01:05 6f2cbde chore(order/lattice): tidy up pi instances (#9305) These were previously defined in the wrong file, and the lemmas were missing the `pi` prefix that is present on `pi.add_apply` etc. This also removes the instance names as they are autogenerated correctly. Finally, this adds new `top_def`, `bot_def`, `sup_def`, and `inf_def` lemmas, which are useful for when wanting to rewrite under the lambda. We already have `zero_def`, `add_def`, etc. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/subgraph.lean Modified src/order/bounded_lattice.lean - theorem bot_apply - theorem inf_apply + theorem pi.bot_apply + theorem pi.bot_def + theorem pi.top_apply + theorem pi.top_def - theorem sup_apply - theorem top_apply Modified src/order/complete_boolean_algebra.lean Modified src/order/lattice.lean + theorem pi.inf_apply + theorem pi.inf_def + theorem pi.sup_apply + theorem pi.sup_def 2021-09-22 10:01:04 f95f216 feat(linear_algebra/std_basis): add matrix.std_basis_eq_std_basis_matrix (#9216) As suggested in #9072 by @eric-wieser, we modify `matrix.std_basis` to use the more familiar `n × m` as the index of the basis and we prove that the `(i,j)`-th element of this basis is `matrix.std_basis_matrix i j 1`. ESTIMATED CHANGES Modified src/linear_algebra/std_basis.lean + theorem matrix.std_basis_eq_std_basis_matrix 2021-09-22 07:37:28 5b55a86 chore(analysis/calculate/fderiv): move results about analytic functions to a new file (#9296) These are not necessary for many of the downstream files, so we can speed up compilation a bit by parallelising these. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean - theorem analytic_at.differentiable_at - theorem analytic_at.differentiable_within_at - theorem has_fpower_series_at.differentiable_at - theorem has_fpower_series_at.fderiv - theorem has_fpower_series_at.has_fderiv_at - theorem has_fpower_series_at.has_strict_fderiv_at - theorem has_fpower_series_on_ball.differentiable_on Added src/analysis/calculus/fderiv_analytic.lean + theorem analytic_at.differentiable_at + theorem analytic_at.differentiable_within_at + theorem has_fpower_series_at.differentiable_at + theorem has_fpower_series_at.fderiv + theorem has_fpower_series_at.has_fderiv_at + theorem has_fpower_series_at.has_strict_fderiv_at + theorem has_fpower_series_on_ball.differentiable_on Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/exponential.lean 2021-09-22 07:37:27 6d86622 chore(*): removing unneeded imports (#9278) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/normed_space/basic.lean - def locally_constant.to_continuous_map_alg_hom - def locally_constant.to_continuous_map_linear_map - def locally_constant.to_continuous_map_monoid_hom Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/limits/preserves/shapes/terminal.lean Modified src/category_theory/preadditive/projective.lean Modified src/category_theory/sites/types.lean Modified src/category_theory/subobject/factor_thru.lean Modified src/category_theory/subobject/mono_over.lean Modified src/category_theory/triangulated/pretriangulated.lean Modified src/linear_algebra/clifford_algebra/equivs.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/content.lean Added src/topology/continuous_function/locally_constant.lean + def locally_constant.to_continuous_map_alg_hom + def locally_constant.to_continuous_map_linear_map + def locally_constant.to_continuous_map_monoid_hom 2021-09-22 07:37:21 b77aa3a feat(linear_algebra/affine_space/affine_subspace): prove that a set whose affine span is top cannot be empty. (#9113) The lemma `finset.card_sdiff_add_card` is unrelated but I've been meaning to add it and now seemed like a good time since I'm touching `data/finset/basic.lean` anyway. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_sdiff_add_card + theorem finset.nonempty_coe_sort Modified src/data/set/basic.lean + theorem set.nonempty_coe_sort Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.bot_ne_top + theorem affine_subspace.ext_iff + theorem affine_subspace.nonempty_of_affine_span_eq_top 2021-09-22 06:45:10 f59dbf2 chore(data/complex/exponential): add `abs_exp`, golf (#9327) ESTIMATED CHANGES Modified src/data/complex/exponential.lean + theorem complex.abs_exp 2021-09-22 02:48:40 7112730 feat(set_theory/cardinal_ordinal): mul_le_max and others (#9269) ESTIMATED CHANGES Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.add_le_max + theorem cardinal.mul_le_max + theorem cardinal.power_nat_le_max 2021-09-22 02:48:39 9c34e80 chore(linear_algebra/basic): generalize `add_monoid_hom_lequiv_{nat,int}` (#9233) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- def add_monoid_hom_lequiv_int +/- def add_monoid_hom_lequiv_nat 2021-09-22 01:01:52 5625ec0 refactor(algebra/module/linear_map): Put linear equivalences in their own file (#9301) This is consistent with how we have ring homs and ring equivs in separate files. By having each of these files smaller than the original, we can split `linear_algebra/basic` more effectively between them. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean - def distrib_mul_action.to_linear_equiv - def distrib_mul_action.to_linear_map - theorem linear_equiv.apply_symm_apply - theorem linear_equiv.coe_coe - theorem linear_equiv.coe_mk - theorem linear_equiv.coe_of_involutive - theorem linear_equiv.coe_symm_mk - theorem linear_equiv.coe_to_add_equiv - theorem linear_equiv.coe_to_equiv - theorem linear_equiv.coe_to_linear_map - theorem linear_equiv.comp_coe - theorem linear_equiv.eq_symm_apply - theorem linear_equiv.ext - theorem linear_equiv.ext_iff - theorem linear_equiv.inv_fun_eq_symm - theorem linear_equiv.map_add - theorem linear_equiv.map_eq_zero_iff - theorem linear_equiv.map_ne_zero_iff - theorem linear_equiv.map_smul - theorem linear_equiv.map_sum - theorem linear_equiv.map_zero - theorem linear_equiv.mk_coe' - theorem linear_equiv.mk_coe - def linear_equiv.of_involutive - def linear_equiv.refl - theorem linear_equiv.refl_apply - theorem linear_equiv.refl_symm - theorem linear_equiv.refl_to_linear_map - theorem linear_equiv.refl_trans - def linear_equiv.restrict_scalars - theorem linear_equiv.restrict_scalars_inj - theorem linear_equiv.restrict_scalars_injective - def linear_equiv.simps.symm_apply - def linear_equiv.symm - theorem linear_equiv.symm_apply_apply - theorem linear_equiv.symm_apply_eq - theorem linear_equiv.symm_bijective - theorem linear_equiv.symm_mk - theorem linear_equiv.symm_symm - theorem linear_equiv.symm_trans - theorem linear_equiv.symm_trans_apply - theorem linear_equiv.to_add_monoid_hom_commutes - def linear_equiv.to_equiv - theorem linear_equiv.to_equiv_inj - theorem linear_equiv.to_equiv_injective - theorem linear_equiv.to_fun_eq_coe - theorem linear_equiv.to_linear_map_eq_coe - theorem linear_equiv.to_linear_map_inj - theorem linear_equiv.to_linear_map_injective - def linear_equiv.trans - theorem linear_equiv.trans_apply - theorem linear_equiv.trans_refl - theorem linear_equiv.trans_symm - structure linear_equiv - def module.comp_hom.to_linear_equiv Modified src/algebra/module/opposites.lean Modified src/algebra/module/submodule.lean Added src/data/equiv/module.lean + def distrib_mul_action.to_linear_equiv + def distrib_mul_action.to_linear_map + theorem linear_equiv.apply_symm_apply + theorem linear_equiv.coe_coe + theorem linear_equiv.coe_mk + theorem linear_equiv.coe_of_involutive + theorem linear_equiv.coe_symm_mk + theorem linear_equiv.coe_to_add_equiv + theorem linear_equiv.coe_to_equiv + theorem linear_equiv.coe_to_linear_map + theorem linear_equiv.comp_coe + theorem linear_equiv.eq_symm_apply + theorem linear_equiv.ext + theorem linear_equiv.ext_iff + theorem linear_equiv.inv_fun_eq_symm + theorem linear_equiv.map_add + theorem linear_equiv.map_eq_zero_iff + theorem linear_equiv.map_ne_zero_iff + theorem linear_equiv.map_smul + theorem linear_equiv.map_sum + theorem linear_equiv.map_zero + theorem linear_equiv.mk_coe' + theorem linear_equiv.mk_coe + def linear_equiv.of_involutive + def linear_equiv.refl + theorem linear_equiv.refl_apply + theorem linear_equiv.refl_symm + theorem linear_equiv.refl_to_linear_map + theorem linear_equiv.refl_trans + def linear_equiv.restrict_scalars + theorem linear_equiv.restrict_scalars_inj + theorem linear_equiv.restrict_scalars_injective + def linear_equiv.simps.symm_apply + def linear_equiv.symm + theorem linear_equiv.symm_apply_apply + theorem linear_equiv.symm_apply_eq + theorem linear_equiv.symm_bijective + theorem linear_equiv.symm_mk + theorem linear_equiv.symm_symm + theorem linear_equiv.symm_trans + theorem linear_equiv.symm_trans_apply + theorem linear_equiv.to_add_monoid_hom_commutes + def linear_equiv.to_equiv + theorem linear_equiv.to_equiv_inj + theorem linear_equiv.to_equiv_injective + theorem linear_equiv.to_fun_eq_coe + theorem linear_equiv.to_linear_map_eq_coe + theorem linear_equiv.to_linear_map_inj + theorem linear_equiv.to_linear_map_injective + def linear_equiv.trans + theorem linear_equiv.trans_apply + theorem linear_equiv.trans_refl + theorem linear_equiv.trans_symm + structure linear_equiv + def module.comp_hom.to_linear_equiv Modified src/data/finsupp/to_dfinsupp.lean 2021-09-21 17:41:00 e0d568e feat(analysis/normed_space/basic): the rescaling of a ball is a ball (#9297) Also rename all statements with `ball_0` to `ball_zero` for coherence. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem preimage_smul_inv' + theorem preimage_smul_inv Modified src/analysis/analytic/basic.lean Modified src/analysis/normed_space/basic.lean - theorem ball_0_eq + theorem ball_zero_eq - theorem mem_ball_0_iff + theorem mem_ball_zero_iff - theorem mem_emetric_ball_0_iff + theorem mem_emetric_ball_zero_iff + theorem preimage_add_ball + theorem preimage_add_closed_ball + theorem preimage_add_sphere + theorem smul_ball + theorem smul_closed_ball' + theorem smul_closed_ball Modified src/analysis/normed_space/normed_group_quotient.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/topology/metric_space/basic.lean + theorem metric.ball_disjoint_ball 2021-09-21 15:54:06 56a6ed6 chore(algebra/algebra/basic): remove a duplicate instance (#9320) `algebra.linear_map.module'` is just a special case of `linear_map.module'`. `by apply_instance` finds this instance provided it's used after the definition of `is_scalar_tower.to_smul_comm_class`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean 2021-09-21 15:54:04 420f11a feat(measure_theory/decomposition/radon_nikodym): Radon-Nikodym and Lebesgue decomposition for signed measures (#9065) This PR proves the Radon-Nikodym theorem for signed measures. ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean + theorem measure_theory.jordan_decomposition.coe_smul + theorem measure_theory.jordan_decomposition.real_smul_def + theorem measure_theory.jordan_decomposition.real_smul_neg + theorem measure_theory.jordan_decomposition.real_smul_neg_part_neg + theorem measure_theory.jordan_decomposition.real_smul_neg_part_nonneg + theorem measure_theory.jordan_decomposition.real_smul_nonneg + theorem measure_theory.jordan_decomposition.real_smul_pos_part_neg + theorem measure_theory.jordan_decomposition.real_smul_pos_part_nonneg + theorem measure_theory.jordan_decomposition.smul_neg_part + theorem measure_theory.jordan_decomposition.smul_pos_part + theorem measure_theory.jordan_decomposition.to_signed_measure_smul + theorem measure_theory.signed_measure.to_jordan_decomposition_eq + theorem measure_theory.signed_measure.to_jordan_decomposition_smul + theorem measure_theory.signed_measure.to_jordan_decomposition_smul_real + theorem measure_theory.signed_measure.to_jordan_decomposition_smul_real_nonneg + theorem measure_theory.signed_measure.total_variation_mutually_singular_iff Modified src/measure_theory/decomposition/lebesgue.lean + theorem measure_theory.measure.lintegral_radon_nikodym_deriv_lt_top + theorem measure_theory.measure.singular_part_add + theorem measure_theory.measure.singular_part_smul + theorem measure_theory.measure.singular_part_zero + theorem measure_theory.signed_measure.eq_radon_nikodym_deriv + theorem measure_theory.signed_measure.eq_singular_part + theorem measure_theory.signed_measure.have_lebesgue_decomposition_mk + theorem measure_theory.signed_measure.integrable_radon_nikodym_deriv + theorem measure_theory.signed_measure.jordan_decomposition_add_with_density_mutually_singular + theorem measure_theory.signed_measure.measurable_radon_nikodym_deriv + theorem measure_theory.signed_measure.mutually_singular_singular_part + theorem measure_theory.signed_measure.not_have_lebesgue_decomposition_iff + def measure_theory.signed_measure.radon_nikodym_deriv + theorem measure_theory.signed_measure.radon_nikodym_deriv_add + theorem measure_theory.signed_measure.radon_nikodym_deriv_neg + theorem measure_theory.signed_measure.radon_nikodym_deriv_smul + theorem measure_theory.signed_measure.radon_nikodym_deriv_sub + def measure_theory.signed_measure.singular_part + theorem measure_theory.signed_measure.singular_part_add + theorem measure_theory.signed_measure.singular_part_add_with_density_radon_nikodym_deriv_eq + theorem measure_theory.signed_measure.singular_part_mutually_singular + theorem measure_theory.signed_measure.singular_part_neg + theorem measure_theory.signed_measure.singular_part_smul + theorem measure_theory.signed_measure.singular_part_smul_nnreal + theorem measure_theory.signed_measure.singular_part_sub + theorem measure_theory.signed_measure.singular_part_total_variation + theorem measure_theory.signed_measure.singular_part_zero + theorem measure_theory.signed_measure.to_jordan_decomposition_eq_of_eq_add_with_density Modified src/measure_theory/decomposition/radon_nikodym.lean + theorem measure_theory.measure.with_density_radon_nikodym_deriv_to_real_eq + theorem measure_theory.signed_measure.absolutely_continuous_iff_with_densityᵥ_radon_nikodym_deriv_eq + theorem measure_theory.signed_measure.with_densityᵥ_radon_nikodym_deriv_eq Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.with_density_of_real_mutually_singular Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.measure.to_signed_measure_congr Modified src/measure_theory/measure/with_density_vector_measure.lean 2021-09-21 14:54:34 c4fbb6f refactor(data/real/ereal): replace `.cases` with `.rec` (#9321) This provides a nicer spelling than the pile of `rfl`s we use with the old `ereal.cases`, as follows: ```diff -rcases x.cases with rfl|⟨y, rfl⟩|rfl, +induction x using ereal.rec with y, ``` As a bonus, the subgoals now end up with names matching the hypotheses. ESTIMATED CHANGES Modified src/data/real/ereal.lean Modified src/topology/instances/ereal.lean 2021-09-21 11:46:50 30617c7 chore(group_theory/order_of_element): bump up (#9318) there may be other lemmas that can similarly be moved around here ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean 2021-09-21 09:53:10 b5a6422 feat(data/finset): add lemmas (#9209) * add `finset.image_id'`, a version of `finset.image_id` using `λ x, x` instead of `id`; * add some lemmas about `finset.bUnion`, `finset.sup`, and `finset.sup'`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.bUnion_nonempty + theorem finset.image_id' + theorem finset.nonempty.bUnion Modified src/data/finset/lattice.lean + theorem finset.inf'_bUnion + theorem finset.inf'_congr + theorem finset.inf_bUnion + theorem finset.inf_const + theorem finset.sup'_bUnion + theorem finset.sup'_congr + theorem finset.sup_bUnion 2021-09-21 08:03:51 524ded6 refactor(data/polynomial/{coeff,monomial}): move smul_eq_C_mul (#9287) This moves `smul_eq_C_mul` from `monomial.lean` into `coeff.lean` so that the import on `monomial.lean` can be changed from `data.polynomial.coeff` to `data.polynomial.basic`. This should shave about 10 seconds off the [longest pole for parallelized mathlib compilation](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/The.20long.20pole.20in.20mathlib/near/253932389). ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.smul_eq_C_mul Modified src/data/polynomial/monomial.lean - theorem polynomial.smul_eq_C_mul 2021-09-21 08:03:50 4cee743 feat(measure_theory/measure/vector_measure): add `mutually_singular.neg` (#9282) ESTIMATED CHANGES Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.vector_measure.mutually_singular.neg_left + theorem measure_theory.vector_measure.mutually_singular.neg_left_iff + theorem measure_theory.vector_measure.mutually_singular.neg_right + theorem measure_theory.vector_measure.mutually_singular.neg_right_iff 2021-09-21 08:03:48 78340e3 feat(topology/continuous_function/basic): gluing lemmas (#9239) ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + theorem continuous_map.lift_cover_coe' + theorem continuous_map.lift_cover_coe + theorem continuous_map.lift_cover_restrict' + theorem continuous_map.lift_cover_restrict 2021-09-21 06:38:58 49e0bcf feat(topology/bases): continuous_of_basis_is_open_preimage (#9281) Check continuity on a basis. ESTIMATED CHANGES Modified src/topology/bases.lean 2021-09-21 02:39:51 13780bc chore(scripts): update nolints.txt (#9317) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-20 20:43:00 46ff449 feat(data/vector/basic): lemmas, and linting (#9260) ESTIMATED CHANGES Modified src/data/vector/basic.lean + theorem vector.length_coe + theorem vector.nth_repeat +/- theorem vector.nth_tail + theorem vector.nth_tail_succ + theorem vector.reverse_reverse Added src/data/vector/zip.lean + def vector.zip_with + theorem vector.zip_with_nth + theorem vector.zip_with_tail + theorem vector.zip_with_to_list 2021-09-20 18:11:00 175afa8 refactor(analysis/convex/{extreme, exposed}): generalize `is_extreme` and `is_exposed` to semimodules (#9264) `is_extreme` and `is_exposed` are currently only defined in real vector spaces. This generalizes ℝ to arbitrary `ordered_semiring`s in definitions and abstracts it away to the correct generality in lemmas. It also generalizes the space from `add_comm_group` to `add_comm_monoid`. ESTIMATED CHANGES Modified src/analysis/convex/exposed.lean +/- theorem continuous_linear_map.to_exposed.is_exposed +/- def continuous_linear_map.to_exposed +/- theorem exposed_points_subset_extreme_points +/- theorem is_exposed.antisymm +/- theorem is_exposed.eq_inter_halfspace +/- theorem is_exposed.inter +/- theorem is_exposed.inter_left +/- theorem is_exposed.inter_right +/- theorem is_exposed.is_closed +/- theorem is_exposed.is_compact +/- theorem is_exposed.refl +/- theorem is_exposed_empty Modified src/analysis/convex/extreme.lean + theorem convex.mem_extreme_points_iff_convex_diff - theorem convex.mem_extreme_points_iff_convex_remove + theorem convex.mem_extreme_points_iff_mem_diff_convex_hull_diff - theorem convex.mem_extreme_points_iff_mem_diff_convex_hull_remove +/- theorem extreme_points_subset - theorem is_extreme.Inter - theorem is_extreme.antisymm - theorem is_extreme.bInter +/- theorem is_extreme.convex_diff +/- theorem is_extreme.extreme_points_eq +/- theorem is_extreme.extreme_points_subset_extreme_points +/- theorem is_extreme.inter - theorem is_extreme.mono - theorem is_extreme.refl - theorem is_extreme.sInter - theorem is_extreme.trans + theorem is_extreme_Inter + theorem is_extreme_bInter + theorem is_extreme_sInter +/- theorem mem_extreme_points_iff_forall_segment Modified src/analysis/convex/independent.lean + theorem convex.convex_independent_extreme_points - theorem convex.extreme_points_convex_independent 2021-09-20 16:39:36 ae726e1 chore(ring_theory/polynomial/tower): remove a duplicate instance (#9302) `apply_instance` already finds a much more general statement of this instance. ESTIMATED CHANGES Modified src/ring_theory/polynomial/tower.lean 2021-09-20 16:39:35 c2d8a58 feat(algebra/algebra/basic): lemmas about alg_hom and scalar towers (#9249) ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean + theorem alg_hom.commutes_of_tower + theorem alg_hom.comp_algebra_map_of_tower +/- theorem algebra.lmul_algebra_map Modified src/linear_algebra/matrix/to_lin.lean +/- theorem linear_map.to_matrix_algebra_map 2021-09-20 14:51:32 866294d fix(data/dfinsupp): fix nat- and int- module diamonds (#9299) This also defines `has_sub` separately in case it turns out to help with unification ESTIMATED CHANGES Modified src/data/dfinsupp.lean Modified src/data/finsupp/to_dfinsupp.lean 2021-09-20 13:42:14 3703ab2 chore(data/real/pi): split into three files (#9295) This is the last file to finish compilation in mathlib, and it naturally splits into three chunks, two of which have simpler dependencies. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean Deleted src/data/real/pi.lean - theorem real.integral_sin_pow_div_tendsto_one - theorem real.pi_gt_3141592 - theorem real.pi_gt_31415 - theorem real.pi_gt_314 - theorem real.pi_gt_sqrt_two_add_series - theorem real.pi_gt_three - theorem real.pi_lower_bound_start - theorem real.pi_lt_3141593 - theorem real.pi_lt_31416 - theorem real.pi_lt_315 - theorem real.pi_lt_sqrt_two_add_series - theorem real.pi_upper_bound_start - theorem real.sqrt_two_add_series_step_down - theorem real.sqrt_two_add_series_step_up - theorem real.tendsto_prod_pi_div_two - theorem real.tendsto_sum_pi_div_four Added src/data/real/pi/bounds.lean + theorem real.pi_gt_3141592 + theorem real.pi_gt_31415 + theorem real.pi_gt_314 + theorem real.pi_gt_sqrt_two_add_series + theorem real.pi_gt_three + theorem real.pi_lower_bound_start + theorem real.pi_lt_3141593 + theorem real.pi_lt_31416 + theorem real.pi_lt_315 + theorem real.pi_lt_sqrt_two_add_series + theorem real.pi_upper_bound_start + theorem real.sqrt_two_add_series_step_down + theorem real.sqrt_two_add_series_step_up Added src/data/real/pi/leibniz.lean + theorem real.tendsto_sum_pi_div_four Added src/data/real/pi/wallis.lean + theorem real.integral_sin_pow_div_tendsto_one + theorem real.tendsto_prod_pi_div_two 2021-09-20 13:42:12 8c96c54 feat(ci): Download all possible caches in gitpod (#9286) This requests mathlibtools 1.1.0 ESTIMATED CHANGES Modified .gitpod.yml 2021-09-20 13:42:11 72a8cd6 feat(field_theory/algebraic_closure): any two algebraic closures are isomorphic (#9231) ESTIMATED CHANGES Modified src/field_theory/is_alg_closed/algebraic_closure.lean Modified src/field_theory/is_alg_closed/basic.lean Modified src/ring_theory/algebraic.lean + theorem algebra.is_algebraic_of_larger_base - theorem algebra.is_algebraic_of_larger_field 2021-09-20 11:48:30 cb33f68 feat(docker): pin version for better reproducibility (#9304) Also hopefully force docker rebuild for gitpod ESTIMATED CHANGES Modified .docker/gitpod/mathlib/Dockerfile 2021-09-20 11:48:29 4df2a1b feat(topology/instances/ennreal): sum of nonzero constants is infinity (#9294) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem ennreal.tsum_const_eq_top_of_ne_zero 2021-09-20 11:48:28 e41e9bc chore(group_theory/submonoid/operations): split a file (#9292) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/operations.lean - theorem add_submonoid.coe_pointwise_smul - theorem add_submonoid.smul_mem_pointwise_smul - theorem submonoid.coe_pointwise_smul - theorem submonoid.smul_mem_pointwise_smul Added src/group_theory/submonoid/pointwise.lean + theorem add_submonoid.coe_pointwise_smul + theorem add_submonoid.smul_mem_pointwise_smul + theorem submonoid.coe_pointwise_smul + theorem submonoid.smul_mem_pointwise_smul 2021-09-20 11:48:27 7389a6b feat(linear_algebra/matrix/to_lin): simp lemmas for to_matrix and algebra (#9267) ESTIMATED CHANGES Modified src/linear_algebra/matrix/to_lin.lean + theorem linear_map.to_matrix'_algebra_map + theorem linear_map.to_matrix_algebra_map 2021-09-20 11:48:26 ba28234 feat(algebra/pointwise): more lemmas about pointwise actions (#9226) This: * Primes the existing lemmas about `group_with_zero` and adds their group counterparts * Adds: * `smul_mem_smul_set_iff` * `set_smul_subset_set_smul_iff` * `set_smul_subset_iff` * `subset_set_smul_iff` * Generalizes `zero_smul_set` to take weaker typeclasses ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem mem_inv_smul_set_iff' +/- theorem mem_inv_smul_set_iff + theorem mem_smul_set_iff_inv_smul_mem' +/- theorem mem_smul_set_iff_inv_smul_mem +/- theorem preimage_smul' +/- theorem preimage_smul + theorem set_smul_subset_iff' + theorem set_smul_subset_iff + theorem set_smul_subset_set_smul_iff' + theorem set_smul_subset_set_smul_iff + theorem smul_mem_smul_set_iff' + theorem smul_mem_smul_set_iff + theorem subset_set_smul_iff' + theorem subset_set_smul_iff +/- theorem zero_smul_set Modified src/analysis/convex/basic.lean Modified src/analysis/seminorm.lean 2021-09-20 10:37:41 e29dfc1 chore(analysis/normed_space/finite_dimensional): restructure imports (#9289) Delays importing `linear_algebra.finite_dimensional` in the `analysis/normed_space/` directory until it is really needed. This reduces the ["long pole"](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/The.20long.20pole.20in.20mathlib) of mathlib compilation by 3 minutes (out of 55). ESTIMATED CHANGES Modified src/analysis/normed_space/affine_isometry.lean - theorem affine_isometry.coe_to_affine_isometry_equiv - theorem affine_isometry.to_affine_isometry_equiv_apply Modified src/analysis/normed_space/finite_dimension.lean + theorem affine_isometry.coe_to_affine_isometry_equiv + def affine_isometry.to_affine_isometry_equiv + theorem affine_isometry.to_affine_isometry_equiv_apply + theorem linear_isometry.coe_to_linear_isometry_equiv + def linear_isometry.to_linear_isometry_equiv + theorem linear_isometry.to_linear_isometry_equiv_apply Modified src/analysis/normed_space/linear_isometry.lean - theorem linear_isometry.coe_to_linear_isometry_equiv - theorem linear_isometry.to_linear_isometry_equiv_apply 2021-09-20 08:13:28 d93c6a8 feat(data/vector/basic): induction principles (#9261) ESTIMATED CHANGES Modified src/data/vector/basic.lean +/- def vector.induction_on + def vector.induction_on₂ + def vector.induction_on₃ 2021-09-20 04:23:41 238d792 chore(scripts): update nolints.txt (#9290) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-20 04:23:40 035bd24 refactor(field_theory/algebraic_closure): Move construction of algebraic closure and lemmas about alg closed fields into seperate files. (#9265) ESTIMATED CHANGES Modified src/analysis/complex/polynomial.lean Modified src/category_theory/preadditive/schur.lean Added src/field_theory/is_alg_closed/algebraic_closure.lean + theorem algebraic_closure.adjoin_monic.algebra_map + theorem algebraic_closure.adjoin_monic.exists_root + theorem algebraic_closure.adjoin_monic.is_integral + def algebraic_closure.adjoin_monic + theorem algebraic_closure.algebra_map_def + theorem algebraic_closure.coe_to_step_of_le + def algebraic_closure.eval_X_self + theorem algebraic_closure.exists_of_step + theorem algebraic_closure.exists_root + theorem algebraic_closure.is_algebraic + theorem algebraic_closure.le_max_ideal + def algebraic_closure.max_ideal + def algebraic_closure.monic_irreducible + def algebraic_closure.of_step + def algebraic_closure.of_step_hom + theorem algebraic_closure.of_step_succ + def algebraic_closure.span_eval + theorem algebraic_closure.span_eval_ne_top + theorem algebraic_closure.step.is_integral + def algebraic_closure.step + def algebraic_closure.step_aux + def algebraic_closure.to_adjoin_monic + def algebraic_closure.to_splitting_field + theorem algebraic_closure.to_splitting_field_eval_X_self + def algebraic_closure.to_step_of_le + theorem algebraic_closure.to_step_succ.exists_root + def algebraic_closure.to_step_succ + def algebraic_closure.to_step_zero + def algebraic_closure Renamed src/field_theory/algebraic_closure.lean to src/field_theory/is_alg_closed/basic.lean - theorem algebraic_closure.adjoin_monic.algebra_map - theorem algebraic_closure.adjoin_monic.exists_root - theorem algebraic_closure.adjoin_monic.is_integral - def algebraic_closure.adjoin_monic - theorem algebraic_closure.algebra_map_def - theorem algebraic_closure.coe_to_step_of_le - def algebraic_closure.eval_X_self - theorem algebraic_closure.exists_of_step - theorem algebraic_closure.exists_root - theorem algebraic_closure.is_algebraic - theorem algebraic_closure.le_max_ideal - def algebraic_closure.max_ideal - def algebraic_closure.monic_irreducible - def algebraic_closure.of_step - def algebraic_closure.of_step_hom - theorem algebraic_closure.of_step_succ - def algebraic_closure.span_eval - theorem algebraic_closure.span_eval_ne_top - theorem algebraic_closure.step.is_integral - def algebraic_closure.step - def algebraic_closure.step_aux - def algebraic_closure.to_adjoin_monic - def algebraic_closure.to_splitting_field - theorem algebraic_closure.to_splitting_field_eval_X_self - def algebraic_closure.to_step_of_le - theorem algebraic_closure.to_step_succ.exists_root - def algebraic_closure.to_step_succ - def algebraic_closure.to_step_zero - def algebraic_closure - def is_alg_closed.lift - def lift.subfield_with_hom.maximal_subfield_with_hom Modified src/field_theory/primitive_element.lean Modified src/linear_algebra/eigenspace.lean Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/trace.lean 2021-09-20 04:23:39 acb10a5 feat(linear_algebra/{multilinear,alternating): add of_subsingleton (#9196) This was refactored from the `koszul_cx` branch, something I mentioned doing in [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/two.20decidable_eq.20instances.20on.20.28fin.201.29.20in.20mathlib.20.3A-.28/near/225596630). The original version was: ```lean def multilinear_map.of_subsingleton (ι : Type v) [subsingleton ι] [inhabited ι] {N : Type u} [add_comm_group N] [module R N] (f : M →ₗ[R] N) : multilinear_map R (λ (i : ι), M) N := { to_fun := λ x, f (x $ default ι), map_add' := λ m i x y, by rw subsingleton.elim i (default ι); simp only [function.update_same, f.map_add], map_smul' := λ m i r x, by rw subsingleton.elim i (default ι); simp only [function.update_same, f.map_smul], } ``` but I decided to remove the `f : M →ₗ[R] N` argument as it can be added later with `(of_subsingleton R M i).comp_linear_map f`. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + def alternating_map.of_subsingleton Modified src/linear_algebra/multilinear.lean + def multilinear_map.of_subsingleton 2021-09-20 04:23:38 976b261 feat(data/{multiset,finset}/basic): card_erase_eq_ite (#9185) A generic theorem about the cardinality of a `finset` or `multiset` with an element erased. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_erase_eq_ite +/- theorem finset.erase_empty Modified src/data/multiset/basic.lean + theorem multiset.card_erase_eq_ite 2021-09-20 01:59:40 f37f57d feat(order/lattice): `sup`/`inf`/`max`/`min` of mono functions (#9284) * add `monotone.sup`, `monotone.inf`, `monotone.min`, and `monotone.max`; * add `prod.le_def` and `prod.mk_le_mk`. ESTIMATED CHANGES Modified src/order/basic.lean + theorem prod.le_def + theorem prod.mk_le_mk Modified src/order/lattice.lean 2021-09-19 21:03:01 4887f80 chore(measure_theory/function/simple_func_dense): distance to `approx_on` is antitone (#9271) ESTIMATED CHANGES Modified src/measure_theory/function/simple_func_dense.lean + theorem measure_theory.simple_func.edist_approx_on_mono 2021-09-19 20:10:14 f7135f1 feat(group_theory/p_group): `is_p_group` is preserved by `subgroup.comap` (#9277) If `H` is a p-subgroup, then `H.comap f` is a p-subgroup, assuming that `f` is injective. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.comap_injective 2021-09-19 17:47:09 965e457 feat(measure_theory/measure/lebesgue): a linear map rescales Lebesgue by the inverse of its determinant (#9195) Also supporting material to be able to apply Fubini in `ι → ℝ` by separating some coordinates. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem fintype.prod_subtype_mul_prod_subtype Modified src/data/equiv/basic.lean + def equiv.pi_equiv_pi_subtype_prod Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.measure.map_pi_equiv_pi_subtype_prod + theorem measure_theory.measure.map_pi_equiv_pi_subtype_prod_symm Modified src/measure_theory/constructions/prod.lean + theorem measure_theory.measure.volume_eq_prod Modified src/measure_theory/measurable_space.lean + theorem measurable_pi_equiv_pi_subtype_prod + theorem measurable_pi_equiv_pi_subtype_prod_symm Modified src/measure_theory/measure/lebesgue.lean + theorem real.map_linear_map_volume_pi_eq_smul_volume_pi + theorem real.map_matrix_volume_pi_eq_smul_volume_pi + theorem real.map_transvection_volume_pi + theorem real.map_volume_pi_add_left + theorem real.smul_map_diagonal_volume_pi + theorem real.volume_pi_preimage_add_left + theorem real.volume_preimage_add_left + theorem real.volume_preimage_add_right + theorem real.volume_preimage_mul_left + theorem real.volume_preimage_mul_right 2021-09-19 16:07:52 180c758 feat(group_theory/p_group): `is_p_group` is preserved by `subgroup.map` (#9276) If `H` is a p-subgroup, then `H.map f` is a p-subgroup. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.map Modified src/group_theory/subgroup.lean + theorem monoid_hom.range_restrict_surjective 2021-09-19 13:44:55 55a2c1a refactor(set_theory/{cardinal,ordinal}): swap the order of universes in `lift` (#9273) Swap the order of universe arguments in `cardinal.lift` and `ordinal.lift`. This way (a) they match the order of arguments in `ulift`; (b) usually Lean can deduce the second universe level from the argument. ESTIMATED CHANGES Modified src/data/complex/module.lean +/- theorem complex.{u} Modified src/field_theory/tower.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/set_theory/cardinal.lean +/- def cardinal.lift +/- theorem cardinal.lift_eq_nat_iff +/- theorem cardinal.lift_mk +/- theorem cardinal.lift_umax Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/game/nim.lean Modified src/set_theory/ordinal.lean +/- theorem cardinal.lift_lt_univ' +/- theorem cardinal.lift_lt_univ +/- theorem cardinal.lift_univ +/- theorem cardinal.lt_univ' +/- theorem cardinal.lt_univ +/- def cardinal.univ +/- def ordinal.lift +/- theorem ordinal.lift_lift +/- theorem ordinal.lift_umax +/- theorem ordinal.lift_univ +/- theorem ordinal.one_eq_lift_type_unit +/- def ordinal.univ +/- theorem ordinal.zero_eq_lift_type_empty Modified src/set_theory/ordinal_arithmetic.lean 2021-09-19 13:44:53 8df86df feat(order/ideal, data/set/lattice): when order ideals are a complete lattice (#9084) - Added the `ideal_Inter_nonempty` property, which states that the intersection of all ideals in the lattice is nonempty. - Proved that when a preorder has the above property and is a `semilattice_sup`, its ideals are a complete lattice - Added some lemmas about empty intersections in set/lattice, akin to #9033 ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Inter_eq_empty_iff + theorem set.bInter_eq_empty_iff + theorem set.nonempty_Inter + theorem set.nonempty_bInter + theorem set.nonempty_sInter - theorem set.sInter_nonempty_iff Modified src/order/ideal.lean + theorem order.ideal.Inf_le + theorem order.ideal.Inter_nonempty + theorem order.ideal.coe_Inf + theorem order.ideal.coe_top + theorem order.ideal.ideal_Inter_nonempty.all_Inter_nonempty + theorem order.ideal.ideal_Inter_nonempty.all_bInter_nonempty + theorem order.ideal.ideal_Inter_nonempty.exists_all_mem + theorem order.ideal.ideal_Inter_nonempty_iff + theorem order.ideal.ideal_Inter_nonempty_of_exists_all_mem + theorem order.ideal.inter_nonempty + theorem order.ideal.is_glb_Inf + theorem order.ideal.le_Inf + theorem order.ideal.mem_Inf - theorem order.ideal.top_carrier - theorem order.ideal.top_coe - theorem order.inter_nonempty 2021-09-19 11:34:13 075ff37 refactor(algebra/order*): move files about ordered algebraic structures into subfolder (#9024) There were many files named `algebra/order_*.lean`. There are also `algebra.{module,algebra}.ordered`. The latter are Prop-valued mixins. This refactor moves the data typeclasses into their own subfolder. That should help facilitate organizing further refactoring to provide the full gamut of the order x algebra hierarchy. ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean Modified counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean Modified src/algebra/big_operators/order.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/floor.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/group_power/order.lean Modified src/algebra/lattice_ordered_group.lean Modified src/algebra/module/ordered.lean Renamed src/algebra/absolute_value.lean to src/algebra/order/absolute_value.lean Renamed src/algebra/order.lean to src/algebra/order/basic.lean Renamed src/algebra/euclidean_absolute_value.lean to src/algebra/order/euclidean_absolute_value.lean Renamed src/algebra/ordered_field.lean to src/algebra/order/field.lean Renamed src/algebra/order_functions.lean to src/algebra/order/functions.lean Renamed src/algebra/ordered_group.lean to src/algebra/order/group.lean Renamed src/algebra/ordered_monoid.lean to src/algebra/order/monoid.lean Renamed src/algebra/ordered_monoid_lemmas.lean to src/algebra/order/monoid_lemmas.lean Renamed src/algebra/ordered_pi.lean to src/algebra/order/pi.lean Renamed src/algebra/ordered_pointwise.lean to src/algebra/order/pointwise.lean Renamed src/algebra/ordered_ring.lean to src/algebra/order/ring.lean Renamed src/algebra/ordered_smul.lean to src/algebra/order/smul.lean Renamed src/algebra/ordered_sub.lean to src/algebra/order/sub.lean Renamed src/algebra/linear_ordered_comm_group_with_zero.lean to src/algebra/order/with_zero.lean Modified src/algebra/regular/basic.lean Modified src/algebra/star/basic.lean Modified src/computability/turing_machine.lean Modified src/data/int/absolute_value.lean Modified src/data/int/basic.lean Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean Modified src/data/nat/with_bot.lean Modified src/data/ordmap/ordset.lean Modified src/data/polynomial/degree/card_pow_degree.lean Modified src/data/real/cau_seq.lean Modified src/data/real/nnreal.lean Modified src/data/set/intervals/basic.lean Modified src/number_theory/class_number/admissible_absolute_value.lean Modified src/number_theory/padics/padic_norm.lean Modified src/order/basic.lean Modified src/order/pilex.lean Modified src/ring_theory/valuation/basic.lean Modified src/tactic/default.lean Modified src/tactic/linarith/lemmas.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/push_neg.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/uniform_space/absolute_value.lean Modified test/finish4.lean Modified test/library_search/ordered_ring.lean Modified test/monotonicity.lean Modified test/nontriviality.lean 2021-09-19 10:06:14 383e05a feat(measure_theory/integral/lebesgue): add set version of `lintegral_with_density_eq_lintegral_mul` (#9270) I also made `measurable_space α` an implicit argument whenever `μ : measure α` is explicit. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.lintegral_trim +/- theorem measure_theory.lintegral_trim_ae +/- theorem measure_theory.lintegral_with_density_eq_lintegral_mul + theorem measure_theory.restrict_with_density + theorem measure_theory.set_lintegral_with_density_eq_set_lintegral_mul 2021-09-19 07:45:41 25e67dd feat(measure_theory/function/lp_space): add mem_Lp_indicator_iff_restrict (#9221) We have an equivalent lemma for `integrable`. Here it is generalized to `mem_ℒp`. ESTIMATED CHANGES Modified src/measure_theory/function/ess_sup.lean + theorem ess_sup_indicator_eq_ess_sup_restrict Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp_indicator_iff_restrict + theorem measure_theory.snorm_ess_sup_indicator_eq_snorm_ess_sup_restrict + theorem measure_theory.snorm_indicator_eq_snorm_restrict Modified src/measure_theory/measure/measure_space.lean + theorem map_restrict_ae_le_map_indicator_ae + theorem measure_theory.mem_map_restrict_ae_iff + theorem mem_map_indicator_ae_iff_mem_map_restrict_ae_of_zero_mem + theorem mem_map_indicator_ae_iff_of_zero_nmem 2021-09-19 06:12:34 f2c162c feat(data/dfinsupp): more lemmas about erase, filter, and negation (#9248) ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.erase_add + def dfinsupp.erase_add_hom + theorem dfinsupp.erase_neg + theorem dfinsupp.erase_single + theorem dfinsupp.erase_single_ne + theorem dfinsupp.erase_single_same + theorem dfinsupp.erase_sub + theorem dfinsupp.erase_zero + theorem dfinsupp.filter_single + theorem dfinsupp.filter_single_neg + theorem dfinsupp.filter_single_pos + theorem dfinsupp.single_neg + theorem dfinsupp.single_sub 2021-09-19 02:28:42 cbf8788 chore(scripts): update nolints.txt (#9275) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-18 23:07:48 fbc9e5e feat(measure_theory/function/conditional_expectation): condexp_ind is ae_measurable' (#9263) ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + def measure_theory.Lp_meas_subgroup + theorem measure_theory.Lp_meas_subgroup_coe + def measure_theory.Lp_meas_subgroup_to_Lp_meas_iso + def measure_theory.Lp_meas_subgroup_to_Lp_trim + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_add + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_ae_eq + def measure_theory.Lp_meas_subgroup_to_Lp_trim_iso + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_left_inv + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_neg + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_norm_map + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_right_inv + theorem measure_theory.Lp_meas_subgroup_to_Lp_trim_sub - def measure_theory.Lp_meas_to_Lp_trim - theorem measure_theory.Lp_meas_to_Lp_trim_add - theorem measure_theory.Lp_meas_to_Lp_trim_ae_eq - theorem measure_theory.Lp_meas_to_Lp_trim_left_inv - def measure_theory.Lp_meas_to_Lp_trim_lie - theorem measure_theory.Lp_meas_to_Lp_trim_norm_map - theorem measure_theory.Lp_meas_to_Lp_trim_right_inv - theorem measure_theory.Lp_meas_to_Lp_trim_smul - def measure_theory.Lp_trim_to_Lp_meas - theorem measure_theory.Lp_trim_to_Lp_meas_ae_eq + def measure_theory.Lp_trim_to_Lp_meas_subgroup + theorem measure_theory.Lp_trim_to_Lp_meas_subgroup_ae_eq + theorem measure_theory.ae_measurable'_condexp_L2 + theorem measure_theory.ae_measurable'_condexp_ind + theorem measure_theory.ae_measurable'_condexp_ind_smul + theorem measure_theory.is_closed_ae_measurable' + theorem measure_theory.is_complete_ae_measurable' + theorem measure_theory.isometry_Lp_meas_subgroup_to_Lp_trim + theorem measure_theory.mem_Lp_meas_subgroup_iff_ae_measurable' + theorem measure_theory.mem_Lp_meas_subgroup_to_Lp_of_trim - theorem measure_theory.mem_Lp_meas_to_Lp_of_trim - theorem measure_theory.mem_ℒp_trim_of_mem_Lp_meas + theorem measure_theory.mem_ℒp_trim_of_mem_Lp_meas_subgroup 2021-09-18 23:07:47 6b96736 feat(measure_theory/integral/set_to_L1): image of an indicator by set_to_fun (and related functions) (#9205) We show the following equality, as well as versions of it for other intermediate `set_to_*` functions: ``` set_to_fun (hT : dominated_fin_meas_additive μ T C) (s.indicator (λ _, x)) = T s x ``` ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.range_indicator Modified src/measure_theory/integral/set_to_l1.lean +/- def measure_theory.L1.set_to_L1' +/- def measure_theory.L1.set_to_L1 +/- theorem measure_theory.L1.set_to_L1_eq_set_to_L1' + theorem measure_theory.L1.set_to_L1_indicator_const_Lp +/- theorem measure_theory.L1.set_to_L1_smul + theorem measure_theory.L1.simple_func.set_to_L1s_indicator_const + theorem measure_theory.set_to_fun_indicator_const + theorem measure_theory.simple_func.set_to_simple_func_indicator 2021-09-18 23:07:46 c1d7ee5 feat(measure_theory/measure/finite_measure_weak_convergence): definitions of types of finite_measures and probability_measures, to be equipped with the topologies of weak convergence (#8904) feat(measure_theory/measure/finite_measure_weak_convergence): definitions of types of finite_measures and probability_measures, to be equipped with the topologies of weak convergence This PR defines the types `probability_measure` and `finite_measure`. The next step is to give a topology instance on these types. ESTIMATED CHANGES Added src/measure_theory/measure/finite_measure_weak_convergence.lean + theorem measure_theory.finite_measure.coe_add + def measure_theory.finite_measure.coe_add_monoid_hom + theorem measure_theory.finite_measure.coe_fn_add + theorem measure_theory.finite_measure.coe_fn_eq_to_nnreal_coe_fn_to_measure + theorem measure_theory.finite_measure.coe_fn_smul + theorem measure_theory.finite_measure.coe_fn_zero + theorem measure_theory.finite_measure.coe_injective + theorem measure_theory.finite_measure.coe_smul + theorem measure_theory.finite_measure.coe_zero + theorem measure_theory.finite_measure.ennreal_coe_fn_eq_coe_fn_to_measure + theorem measure_theory.finite_measure.ennreal_mass + def measure_theory.finite_measure.mass + theorem measure_theory.finite_measure.val_eq_to_measure + def measure_theory.finite_measure + theorem measure_theory.probability_measure.coe_comp_to_finite_measure_eq_coe + theorem measure_theory.probability_measure.coe_fn_comp_to_finite_measure_eq_coe_fn + theorem measure_theory.probability_measure.coe_fn_eq_to_nnreal_coe_fn_to_measure + theorem measure_theory.probability_measure.coe_fn_univ + theorem measure_theory.probability_measure.coe_injective + theorem measure_theory.probability_measure.ennreal_coe_fn_eq_coe_fn_to_measure + theorem measure_theory.probability_measure.mass_to_finite_measure + def measure_theory.probability_measure.to_finite_measure + theorem measure_theory.probability_measure.val_eq_to_measure + def measure_theory.probability_measure 2021-09-18 20:45:54 429aaa3 feat(order/bounded_lattice): coe_unbot simp lemma (#9258) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean + theorem with_bot.coe_unbot + theorem with_top.coe_untop 2021-09-18 20:45:53 811c87a chore(order/galois_connection): golf (#9236) * add `galois_insertion.is_lub_of_u_image`, `galois_insertion.is_glb_of_u_image`, `galois_coinsertion.is_glb_of_l_image`, and `galois_coinsertion.is_lub_of_l_image`; * get some proofs in `lift_*` from `order_dual` instances; * this changes definitional equalities for `Inf` and `Sup` so that we can reuse the same `Inf`/`Sup` for a `conditionally_complete_lattice` later. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean +/- theorem algebra.coe_Inf +/- theorem algebra.mem_Inf Modified src/measure_theory/measurable_space_def.lean Modified src/order/filter/basic.lean Modified src/order/galois_connection.lean + theorem galois_coinsertion.is_glb_of_l_image + theorem galois_coinsertion.is_lub_of_l_image + theorem galois_insertion.is_glb_of_u_image + theorem galois_insertion.is_lub_of_u_image Modified src/topology/opens.lean 2021-09-18 19:04:24 e4bf496 feat(data/set/finite): simple infiniteness lemmas (#9242) ESTIMATED CHANGES Modified archive/imo/imo2008_q2.lean Modified src/algebra/big_operators/finprod.lean Modified src/data/set/finite.lean + theorem set.infinite.diff + theorem set.infinite.exists_nat_lt + theorem set.infinite.exists_not_mem_finset - theorem set.infinite_mono Modified src/data/set/intervals/infinite.lean Modified src/ring_theory/polynomial/dickson.lean 2021-09-18 19:04:23 255862e refactor(linear_algebra/char_poly/basic): rename char_poly to matrix.charpoly (#9230) We rename `char_matrix` to `charmatrix` and `char_poly` to `matrix.charpoly`, so `M.charpoly` becomes available (and everything is coherent with `minpoly`). ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified docs/100.yaml Modified docs/overview.yaml Modified docs/undergrad.yaml Renamed src/linear_algebra/char_poly/basic.lean to src/linear_algebra/charpoly/basic.lean - theorem aeval_self_char_poly + theorem aeval_self_charpoly - def char_matrix - theorem char_matrix_apply_eq - theorem char_matrix_apply_ne - def char_poly + def charmatrix + theorem charmatrix_apply_eq + theorem charmatrix_apply_ne - theorem mat_poly_equiv_char_matrix + theorem mat_poly_equiv_charmatrix + def matrix.charpoly Renamed src/linear_algebra/char_poly/coeff.lean to src/linear_algebra/charpoly/coeff.lean - theorem char_matrix_apply_nat_degree - theorem char_matrix_apply_nat_degree_le - theorem char_poly_coeff_eq_prod_coeff_of_le - theorem char_poly_degree_eq_dim - theorem char_poly_left_mul_matrix - theorem char_poly_monic - theorem char_poly_nat_degree_eq_dim - theorem char_poly_sub_diagonal_degree_lt + theorem charmatrix_apply_nat_degree + theorem charmatrix_apply_nat_degree_le + theorem charpoly_coeff_eq_prod_coeff_of_le + theorem charpoly_degree_eq_dim + theorem charpoly_left_mul_matrix + theorem charpoly_monic + theorem charpoly_nat_degree_eq_dim + theorem charpoly_sub_diagonal_degree_lt - theorem det_eq_sign_char_poly_coeff + theorem det_eq_sign_charpoly_coeff - theorem finite_field.char_poly_pow_card + theorem finite_field.charpoly_pow_card +/- theorem matrix.is_integral - theorem matrix.min_poly_dvd_char_poly + theorem matrix.minpoly_dvd_charpoly - theorem trace_eq_neg_char_poly_coeff + theorem trace_eq_neg_charpoly_coeff - theorem zmod.char_poly_pow_card + theorem zmod.charpoly_pow_card Modified src/ring_theory/norm.lean Modified src/ring_theory/trace.lean 2021-09-18 16:39:30 e757936 chore(data/real/ennreal, measure_theory/): use `≠ ∞` and `≠ 0` in assumptions (#9219) ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean +/- theorem with_top.sum_lt_top Modified src/algebra/ordered_ring.lean +/- theorem canonically_ordered_comm_semiring.mul_pos +/- theorem with_top.mul_lt_top Modified src/analysis/convex/integral.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/specific_limits.lean +/- theorem ennreal.exists_pos_sum_of_encodable' +/- theorem ennreal.exists_pos_sum_of_encodable +/- theorem ennreal.exists_pos_tsum_mul_lt_of_encodable +/- theorem nnreal.exists_pos_sum_of_encodable Modified src/data/real/ennreal.lean +/- theorem ennreal.add_left_inj +/- theorem ennreal.add_right_inj +/- theorem ennreal.add_sub_self' +/- theorem ennreal.add_sub_self + theorem ennreal.coe_ne_zero +/- theorem ennreal.div_lt_top + theorem ennreal.div_zero +/- theorem ennreal.half_pos +/- theorem ennreal.le_of_add_le_add_left +/- theorem ennreal.le_of_add_le_add_right +/- theorem ennreal.le_of_forall_pos_le_add + theorem ennreal.le_to_real_sub +/- theorem ennreal.lt_add_right - theorem ennreal.lt_top_of_mul_lt_top_left - theorem ennreal.lt_top_of_mul_lt_top_right + theorem ennreal.lt_top_of_mul_ne_top_left + theorem ennreal.lt_top_of_mul_ne_top_right + theorem ennreal.lt_top_of_sum_ne_top +/- theorem ennreal.mem_Iio_self_add +/- theorem ennreal.mem_Ioo_self_sub_add +/- theorem ennreal.mul_lt_top +/- theorem ennreal.mul_pos + theorem ennreal.mul_pos_iff - theorem ennreal.ne_top_of_mul_ne_top_left - theorem ennreal.ne_top_of_mul_ne_top_right - theorem ennreal.not_mem_Ioo_self_sub +/- theorem ennreal.pow_eq_top + theorem ennreal.pow_eq_top_iff +/- theorem ennreal.prod_lt_top + theorem ennreal.sub_lt_of_sub_lt +/- theorem ennreal.sub_right_inj +/- theorem ennreal.sub_sub_cancel +/- theorem ennreal.sum_lt_top +/- theorem ennreal.to_nnreal_add +/- theorem ennreal.to_nnreal_sum +/- theorem ennreal.to_real_eq_to_real +/- theorem ennreal.to_real_sum - theorem ennreal.zero_lt_coe_iff - theorem ennreal.zero_lt_sub_iff_lt Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Modified src/measure_theory/function/conditional_expectation.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.integrable.smul_measure Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_space.lean Modified src/measure_theory/function/simple_func_dense.lean Modified src/measure_theory/group/basic.lean + theorem measure_theory.is_mul_left_invariant.measure_pos_iff_nonempty Modified src/measure_theory/group/prod.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/lebesgue.lean +/- theorem measure_theory.ae_lt_top' +/- theorem measure_theory.ae_lt_top - theorem measure_theory.exists_integrable_pos_of_sigma_finite + theorem measure_theory.exists_pos_lintegral_lt_of_sigma_finite +/- theorem measure_theory.exists_pos_set_lintegral_lt_of_measure_lt +/- theorem measure_theory.exists_simple_func_forall_lintegral_sub_lt_of_pos +/- theorem measure_theory.simple_func.fin_meas_supp.iff_lintegral_lt_top +/- theorem measure_theory.simple_func.fin_meas_supp.lintegral_lt_top - theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_lt_top + theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_ne_top + theorem measure_theory.simple_func.lintegral_eq_of_subset' +/- theorem measure_theory.tendsto_set_lintegral_zero Modified src/measure_theory/integral/mean_inequalities.lean Modified src/measure_theory/integral/set_to_l1.lean Modified src/measure_theory/integral/vitali_caratheodory.lean +/- theorem measure_theory.simple_func.exists_le_lower_semicontinuous_lintegral_ge +/- theorem measure_theory.simple_func.exists_upper_semicontinuous_le_lintegral_le Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/content.lean +/- theorem measure_theory.content.outer_measure_exists_compact +/- theorem measure_theory.content.outer_measure_exists_open Modified src/measure_theory/measure/haar.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem measure_theory.measure.smul_finite +/- theorem measure_theory.measure_compl Modified src/measure_theory/measure/measure_space_def.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/measure_theory/measure/vector_measure.lean Modified src/measure_theory/measure/with_density_vector_measure.lean Modified src/order/bounded_lattice.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.Icc_mem_nhds +/- theorem ennreal.nhds_of_ne_top - theorem ennreal.tendsto_at_top_zero_of_tsum_lt_top + theorem ennreal.tendsto_at_top_zero_of_tsum_ne_top - theorem ennreal.tendsto_cofinite_zero_of_tsum_lt_top + theorem ennreal.tendsto_cofinite_zero_of_tsum_ne_top +/- theorem ennreal.tsum_sub Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean +/- theorem edist_ne_top Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean +/- theorem contracting_with.edist_efixed_point_le +/- theorem contracting_with.edist_efixed_point_lt_top +/- theorem contracting_with.edist_inequality +/- theorem contracting_with.efixed_point_eq_of_edist_lt_top +/- theorem contracting_with.efixed_point_is_fixed_pt +/- theorem contracting_with.exists_fixed_point +/- theorem contracting_with.one_sub_K_ne_top +/- theorem contracting_with.tendsto_iterate_efixed_point Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/lipschitz.lean +/- theorem lipschitz_with.edist_lt_top 2021-09-18 15:14:00 33db1c7 chore(data/mv_polynomial/basic): add ring_hom_ext' and move ext attribute to ring_hom_ext' (#9235) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.ring_hom_ext' +/- theorem mv_polynomial.ring_hom_ext Modified src/data/mv_polynomial/equiv.lean Modified src/data/mv_polynomial/monad.lean 2021-09-18 13:22:05 10a6201 feat(set_theory/ordinal): add conditionally_complete_linear_order_bot instance (#9266) Currently, it is not possible to talk about `Inf s` when `s` is a set of ordinals. This is fixed by this PR. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem not_mem_of_cSup_lt + theorem not_mem_of_lt_cInf Modified src/set_theory/ordinal.lean + theorem ordinal.Inf_eq_omin + theorem ordinal.Inf_mem + theorem ordinal.bot_eq_zero + theorem ordinal.induction 2021-09-18 12:00:20 d6b4cd7 chore(ring_theory/adjoin/basic): split (#9257) I want to use basic facts about `adjoin` in `polynomial.basic`. ESTIMATED CHANGES Modified src/ring_theory/adjoin/basic.lean - theorem algebra.adjoin_eq_range - theorem algebra.adjoin_range_eq_range_aeval - theorem algebra.adjoin_singleton_eq_range_aeval - theorem algebra.fg_trans - theorem is_noetherian_ring_of_fg - theorem is_noetherian_subring_closure - def subalgebra.fg - theorem subalgebra.fg_adjoin_finset - theorem subalgebra.fg_bot - theorem subalgebra.fg_def - theorem subalgebra.fg_map - theorem subalgebra.fg_of_fg_map - theorem subalgebra.fg_of_fg_to_submodule - theorem subalgebra.fg_of_noetherian - theorem subalgebra.fg_of_submodule_fg - theorem subalgebra.fg_prod - theorem subalgebra.fg_top - theorem subalgebra.induction_on_adjoin Added src/ring_theory/adjoin/fg.lean + theorem algebra.fg_trans + theorem is_noetherian_ring_of_fg + theorem is_noetherian_subring_closure + def subalgebra.fg + theorem subalgebra.fg_adjoin_finset + theorem subalgebra.fg_bot + theorem subalgebra.fg_def + theorem subalgebra.fg_map + theorem subalgebra.fg_of_fg_map + theorem subalgebra.fg_of_fg_to_submodule + theorem subalgebra.fg_of_noetherian + theorem subalgebra.fg_of_submodule_fg + theorem subalgebra.fg_prod + theorem subalgebra.fg_top + theorem subalgebra.induction_on_adjoin Added src/ring_theory/adjoin/polynomial.lean + theorem algebra.adjoin_eq_range + theorem algebra.adjoin_range_eq_range_aeval + theorem algebra.adjoin_singleton_eq_range_aeval Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/integral_closure.lean 2021-09-18 10:03:09 0ee36a3 feat(order/conditionally_complete_lattice): add lemmas (#9237) * add lemmas about `conditionally_complete_linear_order_bot`; in this case we can drop some `nonempty` assumptions; * add lemmas for the case of `[is_well_order α (<)]`; in this case infimum of a nonempty set is the least element of this set. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem Inf_eq_argmin_on + theorem Inf_mem + theorem cSup_le' + theorem cSup_le_iff' + theorem csupr_le' + theorem csupr_le_iff' + theorem exists_lt_of_lt_cSup' + theorem exists_lt_of_lt_csupr' +/- theorem is_glb.cinfi_eq + theorem is_least_Inf + theorem is_lub_cSup' + theorem le_cInf_iff' 2021-09-18 06:53:44 36751e4 chore(algebra/algebra/tower): golf `algebra.lsmul` (#9253) ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean 2021-09-18 06:53:43 41e152f fix(algebra/algebra/tower): remove `subalgebra.res` which duplicates `subalgebra.restrict_scalars` (#9251) We use the name `restrict_scalars` everywhere else, so I kept that one instead of `res`. `res` was here first, but the duplicate was added by #7949 presumably because the `res` name wasn't discoverable. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean - theorem subalgebra.mem_res + theorem subalgebra.mem_restrict_scalars - def subalgebra.res - theorem subalgebra.res_inj - theorem subalgebra.res_top +/- def subalgebra.restrict_scalars + theorem subalgebra.restrict_scalars_injective + theorem subalgebra.restrict_scalars_to_submodule + theorem subalgebra.restrict_scalars_top Modified src/field_theory/normal.lean Modified src/field_theory/splitting_field.lean Modified src/ring_theory/algebra_tower.lean - theorem algebra.adjoin_res + theorem algebra.adjoin_restrict_scalars 2021-09-18 06:53:42 5e58247 feat(algebra/ordered_pi): ordered_comm_monoid and canonically_ordered_monoid instances (#9194) Presumably these instances were missing because they were not actually constructible until we fixed the definition of `ordered_monoid` in #8877! ESTIMATED CHANGES Modified src/algebra/ordered_pi.lean 2021-09-18 02:27:19 0bdd47f feat(data/list/basic): add lemmas about list.take list.drop (#9245) I added these lemmas about list.take and list.drop, which are present in Coq for example. Note that they are not entirely equivalent to list.take_append and list.drop_append because they also handle the case when `n ≤ l₁.length` ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.drop_append_eq_append_drop +/- theorem list.drop_append_of_le_length + theorem list.take_append_eq_append_take +/- theorem list.take_append_of_le_length 2021-09-18 02:27:17 a8f2bab chore(set_theory/cardinal): use notation `#`, add notation `ω` (#9217) The only API change: rename `cardinal.eq_congr` to `cardinal.mk_congr`. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean +/- theorem two_le_mk_bcubes Modified src/category_theory/limits/small_complete.lean Modified src/data/rat/denumerable.lean +/- theorem cardinal.mk_rat Modified src/field_theory/finite/polynomial.lean Modified src/group_theory/index.lean Modified src/linear_algebra/dimension.lean +/- theorem dim_span_le Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp_vector_space.lean +/- theorem finsupp.dim_eq Modified src/linear_algebra/linear_independent.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.add_def +/- theorem cardinal.add_lt_omega +/- theorem cardinal.add_lt_omega_iff +/- theorem cardinal.cast_to_nat_of_lt_omega +/- theorem cardinal.cast_to_nat_of_omega_le +/- theorem cardinal.countable_iff +/- theorem cardinal.denumerable_iff +/- theorem cardinal.eq_zero_iff_is_empty +/- theorem cardinal.eq_zero_of_is_empty +/- theorem cardinal.finset_card +/- theorem cardinal.finset_card_lt_omega +/- theorem cardinal.fintype_card +/- theorem cardinal.infinite_iff +/- theorem cardinal.le_def +/- theorem cardinal.le_one_iff_subsingleton +/- theorem cardinal.lift_mk +/- theorem cardinal.lift_mk_fin +/- theorem cardinal.lift_omega +/- theorem cardinal.lt_omega +/- theorem cardinal.lt_omega_iff_finite +/- theorem cardinal.lt_omega_iff_fintype +/- theorem cardinal.mk_Prop +/- theorem cardinal.mk_Union_le_sum_mk +/- theorem cardinal.mk_bool +/- theorem cardinal.mk_def +/- theorem cardinal.mk_empty +/- theorem cardinal.mk_emptyc +/- theorem cardinal.mk_emptyc_iff +/- theorem cardinal.mk_fin +/- theorem cardinal.mk_image_le +/- theorem cardinal.mk_int +/- theorem cardinal.mk_le_mk_of_subset +/- theorem cardinal.mk_le_of_injective +/- theorem cardinal.mk_le_of_surjective +/- theorem cardinal.mk_list_eq_sum_pow +/- theorem cardinal.mk_nat +/- theorem cardinal.mk_option +/- theorem cardinal.mk_out +/- theorem cardinal.mk_pempty +/- theorem cardinal.mk_plift_of_false +/- theorem cardinal.mk_plift_of_true +/- theorem cardinal.mk_pnat +/- theorem cardinal.mk_punit +/- theorem cardinal.mk_quot_le +/- theorem cardinal.mk_quotient_le +/- theorem cardinal.mk_range_eq +/- theorem cardinal.mk_range_le +/- theorem cardinal.mk_sep +/- theorem cardinal.mk_set +/- theorem cardinal.mk_set_le +/- theorem cardinal.mk_singleton +/- theorem cardinal.mk_subtype_le +/- theorem cardinal.mk_subtype_mono +/- theorem cardinal.mk_to_enat_eq_coe_card +/- theorem cardinal.mk_to_enat_of_infinite +/- theorem cardinal.mk_to_nat_eq_card +/- theorem cardinal.mk_to_nat_of_infinite +/- theorem cardinal.mk_union_le +/- theorem cardinal.mk_unit +/- theorem cardinal.mk_univ +/- theorem cardinal.mul_def +/- theorem cardinal.mul_lt_omega +/- theorem cardinal.mul_lt_omega_iff +/- theorem cardinal.nat_lt_omega +/- theorem cardinal.ne_zero_iff_nonempty +/- def cardinal.omega +/- theorem cardinal.omega_le +/- theorem cardinal.omega_ne_zero +/- theorem cardinal.omega_pos +/- theorem cardinal.one_lt_iff_nontrivial +/- theorem cardinal.one_lt_omega +/- theorem cardinal.power_def +/- theorem cardinal.power_lt_omega +/- def cardinal.prod +/- theorem cardinal.prod_const +/- theorem cardinal.prod_mk +/- theorem cardinal.prop_eq_two +/- theorem cardinal.sum_const +/- theorem cardinal.sum_le_sup +/- theorem cardinal.sum_mk +/- theorem cardinal.to_enat_apply_of_lt_omega +/- theorem cardinal.to_enat_apply_of_omega_le +/- theorem cardinal.to_nat_apply_of_lt_omega +/- theorem cardinal.to_nat_apply_of_omega_le +/- theorem cardinal.two_le_iff' +/- theorem cardinal.two_le_iff - theorem equiv.cardinal_eq Modified src/set_theory/cardinal_ordinal.lean +/- theorem cardinal.mk_bounded_set_le_of_omega_le +/- theorem cardinal.mk_cardinal +/- theorem cardinal.mk_finset_eq_mk +/- theorem cardinal.mk_list_eq_mk Modified src/set_theory/cofinality.lean +/- theorem cardinal.lt_cof_power +/- theorem cardinal.lt_power_cof +/- theorem cardinal.omega_is_regular +/- theorem cardinal.succ_is_regular +/- theorem ordinal.cof_omega +/- theorem ordinal.infinite_pigeonhole +/- theorem ordinal.infinite_pigeonhole_card +/- theorem ordinal.lt_cof_type +/- theorem ordinal.omega_le_cof +/- theorem ordinal.sup_lt +/- theorem ordinal.sup_lt_ord Modified src/set_theory/ordinal.lean +/- theorem cardinal.mk_ord_out +/- theorem cardinal.ord_eq_min +/- theorem cardinal.ord_le_type +/- def cardinal.univ +/- theorem cardinal.univ_id 2021-09-18 00:17:26 ec9d520 feat(order/filter,*): lemmas about `filter.ne_bot` (#9234) * add `prod.range_fst`, `prod.range_snd`, `set.range_eval`; * add `function.surjective_eval`; * add `filter.*_ne_bot` and/or `filter.*_ne_bot_iff` lemmas for `sup`, `supr`, `comap prod.fst _`, `comap prod.snd _`, `coprod`, `Coprod`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem prod.range_fst + theorem prod.range_snd + theorem set.range_eval Modified src/logic/function/basic.lean + theorem function.surjective_eval Modified src/order/filter/basic.lean + theorem filter.Coprod_ne_bot + theorem filter.Coprod_ne_bot_iff' + theorem filter.Coprod_ne_bot_iff + theorem filter.comap_eval_ne_bot + theorem filter.comap_eval_ne_bot_iff' + theorem filter.comap_eval_ne_bot_iff + theorem filter.comap_fst_ne_bot + theorem filter.comap_fst_ne_bot_iff + theorem filter.comap_snd_ne_bot + theorem filter.comap_snd_ne_bot_iff + theorem filter.coprod_ne_bot_iff + theorem filter.coprod_ne_bot_left + theorem filter.coprod_ne_bot_right + theorem filter.ne_bot.Coprod + theorem filter.sup_ne_bot + theorem filter.supr_ne_bot 2021-09-17 20:09:59 a80e1d7 chore(topology/metric_space): split `iff` into 2 lemmas (#9238) One of the implications of `compact_iff_closed_bounded` doesn't need `t2_space`. Also add `compact_space_iff_bounded_univ`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.compact_space_iff_bounded_univ + theorem metric.is_compact_of_is_closed_bounded 2021-09-17 20:09:58 c42a9ad chore(data/finsupp/basic): lemmas about sub and neg on filter and erase (#9228) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + def finsupp.erase_add_hom + theorem finsupp.erase_neg + theorem finsupp.erase_sub + theorem finsupp.filter_neg + theorem finsupp.filter_sub 2021-09-17 20:09:57 54217b6 chore(data/list): make separate lexicographic file (#9193) A minor effort to reduce the `data.list.basic` monolithic, today inspired by yet again being annoyed that I couldn't find something. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem decidable.list.lex.ne_iff - theorem list.lex.append_left - theorem list.lex.append_right - theorem list.lex.cons_iff - theorem list.lex.imp - theorem list.lex.ne_iff - theorem list.lex.not_nil_right - theorem list.lex.to_ne - inductive list.lex - theorem list.nil_lt_cons Added src/data/list/lex.lean + theorem decidable.list.lex.ne_iff + theorem list.lex.append_left + theorem list.lex.append_right + theorem list.lex.cons_iff + theorem list.lex.imp + theorem list.lex.ne_iff + theorem list.lex.not_nil_right + theorem list.lex.to_ne + inductive list.lex + theorem list.nil_lt_cons Modified src/data/list/pairwise.lean Modified src/data/string/basic.lean Modified src/order/lexicographic.lean 2021-09-17 20:09:56 696db1e feat(analysis/convex/topology): add lemma `convex.subset_interior_image_homothety_of_one_lt` (#9044) ESTIMATED CHANGES Modified src/analysis/convex/topology.lean + theorem convex.subset_interior_image_homothety_of_one_lt Modified src/topology/algebra/affine.lean + theorem affine_map.homothety_continuous + theorem affine_map.homothety_is_open_map 2021-09-17 16:23:57 58f26a0 chore(order/bounded_lattice): trivial generalizations (#9246) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean +/- theorem with_bot.coe_le +/- theorem with_bot.coe_lt_coe +/- theorem with_top.coe_le_coe +/- theorem with_top.coe_lt_coe +/- theorem with_top.coe_lt_iff +/- theorem with_top.coe_lt_top +/- theorem with_top.le_coe +/- theorem with_top.not_top_le_coe 2021-09-17 14:39:08 dfd4bf5 split(analysis/convex/function): move `convex_on` and `concave_on` to their own file (#9247) Convex/concave functions now earn their own file. This cuts down `analysis.convex.basic` by 500 lines. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean - theorem concave_on.add - theorem concave_on.comp_affine_map - theorem concave_on.comp_linear_map - theorem concave_on.concave_le - theorem concave_on.convex_hypograph - theorem concave_on.convex_lt - theorem concave_on.inf - theorem concave_on.le_on_segment' - theorem concave_on.le_on_segment - theorem concave_on.le_right_of_left_le' - theorem concave_on.le_right_of_left_le - theorem concave_on.left_le_of_le_right' - theorem concave_on.left_le_of_le_right - theorem concave_on.slope_mono_adjacent - theorem concave_on.smul - theorem concave_on.subset - theorem concave_on.translate_left - theorem concave_on.translate_right - def concave_on - theorem concave_on_const - theorem concave_on_id - theorem concave_on_iff_convex_hypograph - theorem concave_on_iff_div - theorem concave_on_real_iff_slope_mono_adjacent - theorem concave_on_real_of_slope_mono_adjacent - theorem convex_on.add - theorem convex_on.comp_affine_map - theorem convex_on.comp_linear_map - theorem convex_on.convex_epigraph - theorem convex_on.convex_le - theorem convex_on.convex_lt - theorem convex_on.le_left_of_right_le' - theorem convex_on.le_left_of_right_le - theorem convex_on.le_on_segment' - theorem convex_on.le_on_segment - theorem convex_on.le_right_of_left_le' - theorem convex_on.le_right_of_left_le - theorem convex_on.slope_mono_adjacent - theorem convex_on.smul - theorem convex_on.subset - theorem convex_on.sup - theorem convex_on.translate_left - theorem convex_on.translate_right - def convex_on - theorem convex_on_const - theorem convex_on_id - theorem convex_on_iff_convex_epigraph - theorem convex_on_iff_div - theorem convex_on_real_iff_slope_mono_adjacent - theorem convex_on_real_of_slope_mono_adjacent - theorem linear_map.concave_on - theorem linear_map.convex_on - theorem linear_order.concave_on_of_lt - theorem linear_order.convex_on_of_lt - theorem neg_concave_on_iff - theorem neg_convex_on_iff Modified src/analysis/convex/combination.lean - theorem convex_on.exists_ge_of_center_mass - theorem convex_on.exists_ge_of_mem_convex_hull - theorem convex_on.map_center_mass_le - theorem convex_on.map_sum_le Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/extrema.lean Added src/analysis/convex/function.lean + theorem concave_on.add + theorem concave_on.comp_affine_map + theorem concave_on.comp_linear_map + theorem concave_on.concave_le + theorem concave_on.convex_hypograph + theorem concave_on.convex_lt + theorem concave_on.inf + theorem concave_on.le_on_segment' + theorem concave_on.le_on_segment + theorem concave_on.le_right_of_left_le' + theorem concave_on.le_right_of_left_le + theorem concave_on.left_le_of_le_right' + theorem concave_on.left_le_of_le_right + theorem concave_on.slope_mono_adjacent + theorem concave_on.smul + theorem concave_on.subset + theorem concave_on.translate_left + theorem concave_on.translate_right + def concave_on + theorem concave_on_const + theorem concave_on_id + theorem concave_on_iff_convex_hypograph + theorem concave_on_iff_div + theorem concave_on_real_iff_slope_mono_adjacent + theorem concave_on_real_of_slope_mono_adjacent + theorem convex_on.add + theorem convex_on.comp_affine_map + theorem convex_on.comp_linear_map + theorem convex_on.convex_epigraph + theorem convex_on.convex_le + theorem convex_on.convex_lt + theorem convex_on.exists_ge_of_center_mass + theorem convex_on.exists_ge_of_mem_convex_hull + theorem convex_on.le_left_of_right_le' + theorem convex_on.le_left_of_right_le + theorem convex_on.le_on_segment' + theorem convex_on.le_on_segment + theorem convex_on.le_right_of_left_le' + theorem convex_on.le_right_of_left_le + theorem convex_on.map_center_mass_le + theorem convex_on.map_sum_le + theorem convex_on.slope_mono_adjacent + theorem convex_on.smul + theorem convex_on.subset + theorem convex_on.sup + theorem convex_on.translate_left + theorem convex_on.translate_right + def convex_on + theorem convex_on_const + theorem convex_on_id + theorem convex_on_iff_convex_epigraph + theorem convex_on_iff_div + theorem convex_on_real_iff_slope_mono_adjacent + theorem convex_on_real_of_slope_mono_adjacent + theorem linear_map.concave_on + theorem linear_map.convex_on + theorem linear_order.concave_on_of_lt + theorem linear_order.convex_on_of_lt + theorem neg_concave_on_iff + theorem neg_convex_on_iff Modified src/analysis/convex/integral.lean Modified src/analysis/convex/topology.lean Modified src/linear_algebra/affine_space/ordered.lean 2021-09-17 12:18:09 5f140ab chore(*): rename `coe_fn_inj` to `coe_fn_injective` (#9241) This also removes some comments about it not being possible to use `function.injective`, since now we use it without problem. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_hom.coe_fn_inj + theorem alg_hom.coe_fn_injective Modified src/algebra/category/Algebra/limits.lean Modified src/linear_algebra/affine_space/affine_equiv.lean +/- theorem affine_equiv.coe_fn_injective Modified src/order/rel_iso.lean - theorem rel_embedding.coe_fn_inj + theorem rel_embedding.coe_fn_injective - theorem rel_hom.coe_fn_inj + theorem rel_hom.coe_fn_injective Modified src/set_theory/ordinal.lean 2021-09-17 09:52:16 5b75f5a chore(algebra/group/basic): add `ite_one_mul` and `ite_zero_add` (#9227) We already had the versions with the arguments in the other order. Follows on from #3217 ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem ite_one_mul 2021-09-17 09:00:53 18d031d fix(ring_theory/dedekind_domain): Speed up ideal.unique_factorization_monoid (#9243) The old proof was causing timeouts in CI. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Timeouts.20in.20ring_theory.2Fdedekind_domain.2Elean.3A664.3A9/near/253579691) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean 2021-09-17 06:22:56 15bf066 feat(measure_theory/function/l1_space): add integrability lemmas for composition with `to_real` (#9199) ESTIMATED CHANGES Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.has_finite_integral_to_real_of_lintegral_ne_top + theorem measure_theory.integrable_to_real_of_lintegral_ne_top + theorem measure_theory.mem_ℒ1_to_real_of_lintegral_ne_top Modified src/measure_theory/measure/with_density_vector_measure.lean + theorem measure_theory.with_densityᵥ_add' + theorem measure_theory.with_densityᵥ_neg' + theorem measure_theory.with_densityᵥ_smul' + theorem measure_theory.with_densityᵥ_sub' + theorem measure_theory.with_densityᵥ_to_real 2021-09-16 19:59:45 59cda6d feat(measure_theory/group/basic): introduce a class is_haar_measure, and its basic properties (#9142) We have in mathlib a construction of Haar measures. But there are many measures which do not come from this construction, and are still Haar measures (Lebesgue measure on a vector space, Hausdorff measure of the right dimension, for instance). We introduce a new class `is_haar_measure` (and its additive analogue) to be able to express facts simultaneously for all these measures, and prove their basic properties. ESTIMATED CHANGES Modified src/measure_theory/group/basic.lean + theorem is_compact.haar_lt_top + theorem is_open.haar_pos + theorem measure_theory.is_mul_left_invariant.measure_lt_top_of_is_compact' + theorem measure_theory.is_mul_left_invariant.measure_lt_top_of_is_compact + theorem measure_theory.is_mul_left_invariant.measure_pos_of_is_open + theorem measure_theory.is_mul_left_invariant.measure_preimage_mul +/- theorem measure_theory.is_mul_left_invariant.null_iff_empty + theorem measure_theory.is_mul_left_invariant.smul + theorem measure_theory.is_mul_right_invariant.smul + theorem measure_theory.measure.haar_pos_of_nonempty_interior + theorem measure_theory.measure.haar_preimage_mul + theorem measure_theory.measure.haar_preimage_mul_right + theorem measure_theory.measure.haar_singleton + theorem measure_theory.measure.is_haar_measure.smul + theorem measure_theory.measure.is_haar_measure_map + theorem measure_theory.measure.is_haar_measure_of_is_compact_nonempty_interior + theorem measure_theory.measure.is_mul_left_invariant_haar Modified src/topology/separation.lean + theorem finite.is_closed + theorem infinite_of_mem_nhds 2021-09-16 16:02:06 76f87b7 feat(group_theory/group_action/basic): Action on an orbit (#9220) A `mul_action` restricts to a `mul_action` on an orbit. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.orbit.coe_smul 2021-09-16 13:26:32 ca38357 feat(group_theory/group_action): add `distrib_mul_action.to_add_aut` and `mul_distrib_mul_action.to_mul_aut` (#9224) These can be used to golf the existing `mul_aut_arrow`. This also moves some definitions out of `algebra/group_ring_action.lean` into a more appropriate file. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean - def distrib_mul_action.to_add_equiv - def mul_distrib_mul_action.to_mul_equiv Modified src/algebra/module/linear_map.lean Modified src/group_theory/group_action/group.lean + def arrow_mul_distrib_mul_action + def distrib_mul_action.to_add_aut + def distrib_mul_action.to_add_equiv +/- def mul_aut_arrow + def mul_distrib_mul_action.to_mul_aut + def mul_distrib_mul_action.to_mul_equiv 2021-09-16 13:26:31 17a473e feat(group_theory/p_group): Sup of p-subgroups is a p-subgroup (#9222) The sup of p-subgroups is a p-subgroup, assuming normality. ESTIMATED CHANGES Modified src/group_theory/p_group.lean +/- theorem is_p_group.to_inf_left +/- theorem is_p_group.to_inf_right + theorem is_p_group.to_sup_of_normal_left' + theorem is_p_group.to_sup_of_normal_left + theorem is_p_group.to_sup_of_normal_right' + theorem is_p_group.to_sup_of_normal_right 2021-09-16 13:26:30 b0d961b chore(algebra/indicator_function): add `finset.sum_indicator_eq_sum_filter` (#9208) ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem finset.prod_mul_indicator_eq_prod_filter + theorem set.indicator_smul_apply 2021-09-16 13:26:29 fdfe782 feat(combinatorics/derangements/*): add lemmas about counting derangements (#9089) This defines `card_derangements` as the cardinality of the set of derangements of a fintype, and `num_derangements` as a function from N to N, and proves their equality, along with some other lemmas. Context: PR #7526 grew too large and had to be split in half. The first half retained the original PR ID, and this is the second half. This adds back the finite.lean and exponential.lean files. Also, added entries back to 100.yaml. ESTIMATED CHANGES Modified docs/100.yaml Added src/combinatorics/derangements/exponential.lean + theorem num_derangements_tendsto_inv_e Added src/combinatorics/derangements/finite.lean + theorem card_derangements_eq_num_derangements + theorem card_derangements_fin_add_two + theorem card_derangements_fin_eq_num_derangements + theorem card_derangements_invariant + def num_derangements + theorem num_derangements_add_two + theorem num_derangements_one + theorem num_derangements_succ + theorem num_derangements_sum + theorem num_derangements_zero 2021-09-16 13:26:27 89b0cfb refactor(analysis/convex/basic): generalize convexity to vector spaces (#9058) `convex` and `convex_hull` are currently only defined in real vector spaces. This generalizes ℝ to arbitrary ordered_semirings in definitions and abstracts it away to the correct generality in lemmas. It also generalizes the space from `add_comm_group` to `add_comm_monoid` where possible. ESTIMATED CHANGES Modified src/analysis/calculus/darboux.lean +/- theorem convex_image_has_deriv_at +/- theorem deriv_forall_lt_or_forall_gt_of_forall_ne Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/mean_value.lean +/- theorem concave_on_of_deriv2_nonpos +/- theorem concave_on_of_deriv_antimono +/- theorem concave_on_open_of_deriv2_nonpos +/- theorem convex.antimono_of_deriv_nonpos +/- theorem convex.image_sub_le_mul_sub_of_deriv_le +/- theorem convex.image_sub_lt_mul_sub_of_deriv_lt +/- theorem convex.is_const_of_fderiv_within_eq_zero +/- theorem convex.mono_of_deriv_nonneg +/- theorem convex.mul_sub_le_image_sub_of_le_deriv +/- theorem convex.mul_sub_lt_image_sub_of_lt_deriv +/- theorem convex.strict_antimono_of_deriv_neg +/- theorem convex.strict_mono_of_deriv_pos +/- theorem convex_on_of_deriv2_nonneg +/- theorem convex_on_of_deriv_mono +/- theorem convex_on_open_of_deriv2_nonneg Modified src/analysis/calculus/tangent_cone.lean +/- theorem unique_diff_on_convex Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/convex/basic.lean +/- theorem affine_map.image_convex_hull +/- theorem concave_on_const +/- theorem concave_on_id +/- theorem concave_on_real_iff_slope_mono_adjacent +/- theorem concave_on_real_of_slope_mono_adjacent +/- theorem convex.add +/- theorem convex.add_smul +/- theorem convex.add_smul_mem +/- theorem convex.add_smul_sub_mem +/- theorem convex.affine_image +/- theorem convex.affine_preimage +/- theorem convex.affinity +/- theorem convex.combo_affine_apply + theorem convex.combo_eq_vadd - theorem convex.combo_to_vadd +/- theorem convex.convex_hull_eq +/- theorem convex.convex_remove_iff_not_mem_convex_hull_remove +/- theorem convex.inter +/- theorem convex.is_linear_image +/- theorem convex.is_linear_preimage +/- theorem convex.linear_image +/- theorem convex.linear_preimage +/- theorem convex.mem_smul_of_zero_mem +/- theorem convex.neg +/- theorem convex.neg_preimage +/- theorem convex.open_segment_subset +/- theorem convex.prod +/- theorem convex.segment_subset +/- theorem convex.smul +/- theorem convex.smul_mem_of_zero_mem +/- theorem convex.smul_preimage +/- theorem convex.sub +/- theorem convex.translate +/- theorem convex.translate_preimage_left +/- theorem convex.translate_preimage_right +/- theorem convex_Icc +/- theorem convex_Ici +/- theorem convex_Ico +/- theorem convex_Iic +/- theorem convex_Iio +/- theorem convex_Inter +/- theorem convex_Ioc +/- theorem convex_Ioi +/- theorem convex_Ioo +/- theorem convex_convex_hull +/- theorem convex_empty +/- theorem convex_halfspace_ge +/- theorem convex_halfspace_gt + theorem convex_halfspace_im_ge +/- theorem convex_halfspace_im_gt +/- theorem convex_halfspace_im_le - theorem convex_halfspace_im_lge +/- theorem convex_halfspace_im_lt +/- theorem convex_halfspace_le +/- theorem convex_halfspace_lt + theorem convex_halfspace_re_ge +/- theorem convex_halfspace_re_gt +/- theorem convex_halfspace_re_le - theorem convex_halfspace_re_lge +/- theorem convex_halfspace_re_lt +/- theorem convex_hull_min +/- theorem convex_hull_mono +/- theorem convex_hull_singleton +/- theorem convex_hyperplane - theorem convex_iff_div: + theorem convex_iff_div + theorem convex_iff_ord_connected - theorem convex_iff_pointwise_add_subset: + theorem convex_iff_pointwise_add_subset +/- theorem convex_interval +/- theorem convex_on_const +/- theorem convex_on_id +/- theorem convex_on_real_iff_slope_mono_adjacent +/- theorem convex_on_real_of_slope_mono_adjacent +/- theorem convex_open_segment +/- theorem convex_sInter +/- theorem convex_segment +/- theorem convex_singleton +/- theorem convex_std_simplex +/- theorem convex_univ +/- theorem is_linear_map.convex_hull_image +/- theorem is_linear_map.image_convex_hull +/- theorem linear_map.concave_on +/- theorem linear_map.convex_hull_image +/- theorem linear_map.convex_on +/- theorem linear_map.image_convex_hull +/- theorem linear_order.concave_on_of_lt +/- theorem linear_order.convex_on_of_lt - theorem real.convex_iff_ord_connected + theorem set.ord_connected.convex + theorem set.ord_connected.convex_of_chain +/- theorem submodule.convex +/- theorem subset_convex_hull +/- theorem subspace.convex Modified src/analysis/convex/caratheodory.lean +/- theorem eq_pos_convex_span_of_mem_convex_hull Modified src/analysis/convex/combination.lean +/- theorem convex.center_mass_mem +/- theorem convex.sum_mem +/- theorem convex_on.exists_ge_of_mem_convex_hull Modified src/analysis/convex/cone.lean +/- def convex.to_cone +/- theorem convex_cone.convex Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/extrema.lean +/- theorem is_min_on.of_is_local_min_on_of_convex_on_Icc Modified src/analysis/convex/extreme.lean +/- theorem convex.mem_extreme_points_iff_convex_remove +/- theorem convex.mem_extreme_points_iff_mem_diff_convex_hull_remove +/- theorem is_extreme.convex_diff Modified src/analysis/convex/independent.lean +/- theorem convex.extreme_points_convex_independent +/- theorem convex_independent_iff_finset Modified src/analysis/convex/integral.lean +/- theorem convex.integral_mem Modified src/analysis/convex/topology.lean +/- theorem convex.add_smul_mem_interior +/- theorem convex.add_smul_sub_mem_interior +/- theorem convex.closure +/- theorem convex.interior +/- theorem convex.is_path_connected +/- theorem convex_ball +/- theorem convex_closed_ball +/- theorem convex_hull_exists_dist_ge +/- theorem convex_on_dist +/- theorem real.convex_iff_is_preconnected Modified src/analysis/normed_space/inner_product.lean +/- theorem norm_eq_infi_iff_real_inner_le_zero Modified src/data/set/intervals/ord_connected.lean Modified src/measure_theory/measure/hausdorff.lean 2021-09-16 11:34:14 f536b4f fix(group_theory/submonoid/operations): add missing `to_additive` tags on galois lemmas (#9225) ESTIMATED CHANGES Modified src/group_theory/submonoid/operations.lean 2021-09-16 11:34:13 8a1fc68 feat(measure_theory/measure/with_density_vector_measure): `with_densityᵥ` of a real function equals the density of the pos part - density of the neg part (#9215) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem real.of_real_le_ennnorm Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.is_finite_measure_with_density_of_real Modified src/measure_theory/measure/with_density_vector_measure.lean + theorem measure_theory.with_densityᵥ_eq_with_density_pos_part_sub_with_density_neg_part 2021-09-16 11:34:12 232ff44 feat(measure_theory/measure/measure_space): add mutually singular lemmas (#9213) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.mutually_singular.add_iff + theorem measure_theory.measure.mutually_singular.of_absolutely_continuous 2021-09-16 11:34:11 bc7cde8 feat(data/dfinsupp): add `filter_ne_eq_erase` (#9182) ESTIMATED CHANGES Modified src/data/dfinsupp.lean +/- theorem dfinsupp.erase_add_single + theorem dfinsupp.filter_ne_eq_erase' + theorem dfinsupp.filter_ne_eq_erase +/- theorem dfinsupp.single_add_erase 2021-09-16 11:34:09 86d20e5 feat(data/dfinsupp): add arithmetic lemmas about filter (#9175) This adds `dfinsupp.filter_{zero,add,neg,sub,smul}` and `dfinsupp.subtype_domain_smul`, along with some bundled maps. This also cleans up some variable explicitness. ESTIMATED CHANGES Modified src/data/dfinsupp.lean +/- theorem dfinsupp.coe_smul + theorem dfinsupp.filter_add + def dfinsupp.filter_add_monoid_hom + def dfinsupp.filter_linear_map + theorem dfinsupp.filter_neg + theorem dfinsupp.filter_smul + theorem dfinsupp.filter_sub + theorem dfinsupp.filter_zero +/- theorem dfinsupp.mk_smul +/- theorem dfinsupp.single_smul +/- theorem dfinsupp.smul_apply + def dfinsupp.subtype_domain_linear_map + theorem dfinsupp.subtype_domain_smul Modified src/linear_algebra/dfinsupp.lean 2021-09-16 10:37:03 b759384 feat(field_theory/algebraic_closure): map from algebraic extensions into the algebraic closure (#9110) ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean + theorem is_alg_closed.exists_aeval_eq_zero + theorem is_alg_closed.exists_eval₂_eq_zero +/- theorem is_alg_closed.exists_root + def is_alg_closed.lift + theorem lift.subfield_with_hom.compat + theorem lift.subfield_with_hom.exists_maximal_subfield_with_hom + theorem lift.subfield_with_hom.le_def + def lift.subfield_with_hom.maximal_subfield_with_hom + theorem lift.subfield_with_hom.maximal_subfield_with_hom_chain_bounded + theorem lift.subfield_with_hom.maximal_subfield_with_hom_eq_top + theorem lift.subfield_with_hom.maximal_subfield_with_hom_is_maximal + structure lift.subfield_with_hom Modified src/ring_theory/algebraic.lean 2021-09-16 05:50:06 18dc1a1 feat(group_theory/p_group): p-groups are preserved by isomorphisms (#9203) Adds three lemmas about transporting `is_p_group` across injective, surjective, and bijective homomorphisms. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.of_equiv + theorem is_p_group.of_injective + theorem is_p_group.of_surjective 2021-09-15 23:41:53 519b4e9 chore(algebra/big_operators): move, golf (#9218) move 2 lemmas up and golf the proof of `finset.prod_subset`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean 2021-09-15 18:42:11 2b589ca feat(group_theory/subgroup): Generalize `comap_sup_eq` (#9212) The lemma `comap_sup_eq` can be generalized from assuming `function.surjective f` to assuming `≤ f.range`. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean +/- theorem subgroup.comap_sup_eq + theorem subgroup.comap_sup_eq_of_le_range + theorem subgroup.sup_subgroup_of_eq 2021-09-15 18:42:10 8185637 refactor(data/real/nnreal): use `has_ordered_sub` (#9167) * provide a `has_ordered_sub` instance for `nnreal`; * drop most lemmas about subtraction in favor of lemmas from `algebra/ordered_sub`; * add `mul_sub'` and `sub_mul'`; * generalize some lemmas about `has_ordered_sub` to `has_add`; * add `add_hom.mul_left` and `add_hom.mul_right`. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem mul_sub' + theorem sub_mul' Modified src/algebra/ordered_sub.lean + theorem add_hom.le_map_sub + theorem add_monoid_hom.le_map_sub + theorem le_mul_sub + theorem le_sub_mul + theorem order_iso.map_sub Modified src/algebra/ring/basic.lean + def add_hom.mul_left + def add_hom.mul_right Modified src/analysis/normed_space/basic.lean Modified src/analysis/specific_limits.lean Modified src/data/bool.lean + theorem bool.cond_bnot Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean - theorem nnreal.add_sub_cancel' - theorem nnreal.add_sub_cancel - theorem nnreal.add_sub_eq_max + theorem nnreal.coe_sub_def - theorem nnreal.lt_sub_iff_add_lt - theorem nnreal.sub_add_cancel_of_le - theorem nnreal.sub_add_eq_max + theorem nnreal.sub_div - theorem nnreal.sub_eq_iff_eq_add - theorem nnreal.sub_eq_zero - theorem nnreal.sub_le_iff_le_add - theorem nnreal.sub_le_self - theorem nnreal.sub_lt_iff_lt_add - theorem nnreal.sub_pos - theorem nnreal.sub_self - theorem nnreal.sub_sub_cancel_of_le - theorem nnreal.sub_zero Modified src/measure_theory/integral/lebesgue.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/metric_space/basic.lean 2021-09-15 18:42:09 a4341f9 refactor(data/set/finite): use a custom inductive type (#9164) Currently Lean treats local assumptions `h : finite s` as local instances, so one needs to do something like ```lean unfreezingI { lift s to finset α using hs }, ``` I change the definition of `set.finite` to an inductive predicate that replicates the definition of `nonempty` and remove `unfreezingI` here and there. Equivalence to the old definition is given by `set.finite_def`. ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean Modified src/data/mv_polynomial/funext.lean Modified src/data/set/finite.lean + inductive set.finite - def set.finite + theorem set.finite_def Modified src/field_theory/finiteness.lean Modified src/field_theory/separable.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/basic.lean Modified src/set_theory/cardinal.lean 2021-09-15 18:42:07 244285c feat(linear_algebra/free_module): add instances (#9087) We add some `module.finite` instances. These are in the `linear_algebra/free_module.lean` files since they concern free modules. From LTE ESTIMATED CHANGES Modified src/linear_algebra/free_module.lean + theorem module.finite.of_basis 2021-09-15 18:42:06 bab7e99 docs(data/part): add module docstring (#8966) ESTIMATED CHANGES Modified src/data/part.lean +/- theorem part.dom_iff_mem +/- theorem part.ne_none_iff 2021-09-15 17:09:28 b63c560 feat(data/set/Union_lift): lift functions to Unions of sets (#9019) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.coe_supr_of_directed + theorem subalgebra.supr_lift_comp_inclusion + theorem subalgebra.supr_lift_inclusion + theorem subalgebra.supr_lift_mk + theorem subalgebra.supr_lift_of_mem Added src/data/set/Union_lift.lean + theorem set.Union_lift_binary + theorem set.Union_lift_const + theorem set.Union_lift_inclusion + theorem set.Union_lift_mk + theorem set.Union_lift_of_mem + theorem set.Union_lift_unary + theorem set.lift_cover_coe + theorem set.lift_cover_of_mem 2021-09-15 15:40:39 2597264 chore(ring_theory/ideal/operations): golf a definition using new actions (#9152) This action can be expressed more directly in terms of other actions, without the unfolded definition changing. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean 2021-09-15 13:22:40 3a6340c chore(data/dfinsupp): golf using `quotient.map` instead of `quotient.lift_on` (#9176) ESTIMATED CHANGES Modified src/data/dfinsupp.lean +/- def dfinsupp.erase +/- def dfinsupp.filter +/- def dfinsupp.map_range +/- def dfinsupp.subtype_domain +/- def dfinsupp.zip_with 2021-09-15 13:22:39 f8d8171 refactor(logic/relator): turn *_unique and *_total into defs, not classes (#9135) We had (almost) no instances for these classes and (almost) no lemmas taking these assumptions as TC arguments. ESTIMATED CHANGES Modified src/computability/turing_machine.lean Modified src/data/list/forall2.lean - theorem list.bi_unique_forall₂ - theorem list.left_unique_forall₂ - theorem list.right_unique_forall₂ + theorem relator.bi_unique.forall₂ + theorem relator.left_unique.forall₂ + theorem relator.right_unique.forall₂ Modified src/data/list/perm.lean Modified src/data/option/basic.lean Modified src/data/part.lean Modified src/data/seq/computation.lean Modified src/logic/relation.lean Modified src/logic/relator.lean + theorem relator.bi_total.rel_exists + theorem relator.bi_total.rel_forall + def relator.bi_total + theorem relator.bi_total_eq + def relator.bi_unique + theorem relator.left_total.rel_exists + def relator.left_total + theorem relator.left_unique.flip - theorem relator.left_unique.unique + def relator.left_unique - theorem relator.left_unique_flip - theorem relator.rel_exists_of_left_total - theorem relator.rel_exists_of_total - theorem relator.rel_forall_of_right_total - theorem relator.rel_forall_of_total + theorem relator.right_total.rel_forall + def relator.right_total - theorem relator.right_unique.unique + def relator.right_unique 2021-09-15 12:38:53 f1bf7b8 feat(category_theory/filtered): Special support for bowtie and tulip diagrams (#9099) Add special support for two kinds of diagram categories: The "bowtie" and the "tulip". These are convenient when proving that forgetful functors of algebraic categories preserve filtered colimits. ESTIMATED CHANGES Modified src/category_theory/filtered.lean + theorem category_theory.is_filtered.bowtie + theorem category_theory.is_filtered.coeq₃_condition₁ + theorem category_theory.is_filtered.coeq₃_condition₂ + theorem category_theory.is_filtered.coeq₃_condition₃ + theorem category_theory.is_filtered.tulip 2021-09-15 10:33:05 bb38ce9 feat(ring_theory/artinian): is_nilpotent_jacobson (#9153) ESTIMATED CHANGES Modified src/ring_theory/artinian.lean + theorem is_artinian.monotone_stabilizes + theorem is_artinian.set_has_minimal + theorem is_artinian_ring.is_nilpotent_jacobson_bot 2021-09-15 07:15:07 85dc9f3 refactor(measure_theory/measure): redefine `measure_theory.sigma_finite` (#9207) * don't require in the definition that covering sets are measurable; * use `to_measurable` in `sigma_finite.out` to get measurable sets. ESTIMATED CHANGES Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean Modified src/measure_theory/function/strongly_measurable.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/regular.lean 2021-09-15 06:12:44 7492aa6 refactor(measure_theory/integral/lebesgue): golf a proof (#9206) * add `exists_pos_tsum_mul_lt_of_encodable`; * add `measure.spanning_sets_index` and lemmas about this definition; * replace the proof of `exists_integrable_pos_of_sigma_finite` with a simpler one. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem ennreal.exists_pos_tsum_mul_lt_of_encodable Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measurable_spanning_sets_index + theorem measure_theory.mem_disjointed_spanning_sets_index + theorem measure_theory.mem_spanning_sets_index + theorem measure_theory.preimage_spanning_sets_index_singleton + def measure_theory.spanning_sets_index + theorem measure_theory.spanning_sets_index_eq_iff Modified src/order/disjointed.lean + theorem preimage_find_eq_disjointed 2021-09-15 02:43:59 591ff3a feat(group_theory/subgroup): Subgroup of subgroup is isomorphic to itself (#9204) If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + def subgroup.comap_subtype_equiv_of_le 2021-09-15 02:43:58 463089d feat(order/rel_classes): A total relation is trichotomous (#9181) ESTIMATED CHANGES Modified src/order/rel_classes.lean 2021-09-15 02:43:57 23eac53 chore(*): upgrade to Lean 3.33.0c (#9165) My main goal is to fix various diamonds with `sup`/`inf`, see leanprover-community/lean#609. I use lean-master + 1 fixup commit leanprover-community/lean#615. ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/ordered_monoid.lean Modified src/data/bool.lean Modified src/data/finsupp/lattice.lean Modified src/data/list/func.lean Modified src/data/list/intervals.lean +/- theorem list.Ico.filter_le Modified src/data/list/min_max.lean Modified src/data/nat/cast.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/rat/cast.lean Modified src/data/real/nnreal.lean Modified src/data/string/basic.lean Modified src/field_theory/separable.lean Modified src/group_theory/order_of_element.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/number_theory/pell.lean Modified src/order/basic.lean Modified src/order/bounded_lattice.lean +/- theorem with_bot.coe_max +/- theorem with_bot.coe_min - theorem with_bot.inf_eq_min - theorem with_bot.lattice_eq_DLO - theorem with_bot.sup_eq_max +/- theorem with_top.coe_max +/- theorem with_top.coe_min - theorem with_top.inf_eq_min - theorem with_top.lattice_eq_DLO - theorem with_top.sup_eq_max Modified src/order/conditionally_complete_lattice.lean Modified src/order/lattice.lean + def lattice.to_linear_order Modified src/tactic/fin_cases.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/path_connected.lean 2021-09-15 00:53:15 82dced6 feat(analysis/normed_space/finite_dimension): Riesz theorem on compact unit ball and finite dimension (#9147) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/finite_dimension.lean + theorem exists_norm_le_le_norm_sub_of_finset + theorem exists_seq_norm_le_one_le_norm_sub' + theorem exists_seq_norm_le_one_le_norm_sub + theorem finite_dimensional_of_is_compact_closed_ball Modified src/analysis/normed_space/riesz_lemma.lean + theorem riesz_lemma_of_norm_lt Modified src/data/fintype/basic.lean + theorem exists_seq_of_forall_finset_exists' + theorem exists_seq_of_forall_finset_exists Modified src/ring_theory/noetherian.lean + theorem is_noetherian_top_iff 2021-09-14 20:59:54 27b0a76 feat(ring_theory/adjoin): adjoin_range_eq_range_aeval (#9179) ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_range_eq_range_aeval - theorem algebra.adjoin_singleton_eq_range + theorem algebra.adjoin_singleton_eq_range_aeval Modified src/ring_theory/adjoin/power_basis.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/integral_closure.lean 2021-09-14 18:16:26 bf0b5df chore(combinatorics/simple_graph): fixup docs (#9161) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2021-09-14 17:25:52 ec118dd ci(.github/workflows/*): lint PR style on GitHub runners (#9198) Since the style linter usually finishes in just a few seconds, we can move it off our self-hosted runners to give PR authors quicker feedback when the build queue is long. We do this only for PR runs, so that `bors` won't be held up in case the GitHub runners are backed up for whatever reason. ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Modified .github/workflows/build_fork.yml Modified .github/workflows/mk_build_yml.sh 2021-09-14 15:08:00 6a6b0a5 chore(order/pilex): use `*_order_of_*TO` from `order.rel_classes` (#9129) This changes definitional equality for `≤` on `pilex` from `x < y ∨ x = y` to `x = y ∨ x < y`. ESTIMATED CHANGES Modified src/order/pilex.lean + theorem pilex.le_of_forall_le Modified src/order/rel_classes.lean +/- def partial_order_of_SO 2021-09-14 13:37:53 91f053e chore(*): simplify `data.real.cau_seq` import (#9197) Some files were still importing `data.real.cau_seq` when their dependency really was on `is_absolute_value`, which has been moved to `algebra.absolute_value`. Hopefully simplifying the dependency tree slightly reduces build complexity. ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean Modified src/topology/uniform_space/absolute_value.lean 2021-09-14 12:09:47 e489ca1 feat(group_theory/p_group): Intersection with p-subgroup is a p-subgroup (#9189) Two lemmas stating that the intersection with a p-subgroup is a p-subgroup. Not sure which one should be called left and which one should be called right though :) ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.to_inf_left + theorem is_p_group.to_inf_right 2021-09-14 12:09:45 eb20390 refactor(group_theory/p_group): Move lemmas to is_p_group namespace (#9188) Moves `card_modeq_card_fixed_points`, `nonempty_fixed_point_of_prime_not_dvd_card`, and `exists_fixed_point_of_prime_dvd_card_of_fixed_point` to the `is_p_group` namespace. I think this simplifies things, since they already had explicit `hG : is_p_group G` hypotheses anyway. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.card_modeq_card_fixed_points +/- theorem is_p_group.card_orbit + theorem is_p_group.exists_fixed_point_of_prime_dvd_card_of_fixed_point + theorem is_p_group.nonempty_fixed_point_of_prime_not_dvd_card +/- theorem is_p_group.of_card - theorem mul_action.card_modeq_card_fixed_points - theorem mul_action.exists_fixed_point_of_prime_dvd_card_of_fixed_point - theorem mul_action.nonempty_fixed_point_of_prime_not_dvd_card Modified src/group_theory/sylow.lean 2021-09-14 12:09:44 6309c81 chore(ring_theory/adjoin) elab_as_eliminator attribute (#9168) ESTIMATED CHANGES Modified src/ring_theory/adjoin/basic.lean +/- theorem algebra.adjoin_induction 2021-09-14 12:09:43 251e418 feat(ring_theory/nakayama): Alternative Statements of Nakayama's Lemma (#9150) ESTIMATED CHANGES Modified src/ring_theory/jacobson_ideal.lean + theorem ideal.exists_mul_sub_mem_of_sub_one_mem_jacobson + theorem ideal.is_unit_of_sub_one_mem_jacobson_bot Added src/ring_theory/nakayama.lean + theorem submodule.eq_bot_of_le_smul_of_le_jacobson_bot + theorem submodule.eq_smul_of_le_smul_of_le_jacobson + theorem submodule.smul_sup_eq_smul_sup_of_le_smul_of_le_jacobson + theorem submodule.smul_sup_le_of_le_smul_of_le_jacobson_bot 2021-09-14 12:09:42 19949a0 feat(linear_algebra/free_module): add instances (#9072) From LTE. We prove that `M →ₗ[R] N` is free if both `M` and `N` are finite and free. This needs the quite long result that for a finite and free module any basis is finite. Co-authored with @jcommelin ESTIMATED CHANGES Modified src/linear_algebra/free_module.lean Modified src/linear_algebra/matrix/diagonal.lean Modified src/linear_algebra/std_basis.lean 2021-09-14 12:09:41 2a3cd41 feat(group_theory/free_product): equivalence with reduced words (#7395) We show that each element of the free product is represented by a unique reduced word. ESTIMATED CHANGES Modified src/group_theory/free_product.lean + theorem free_product.word.cons_eq_rcons + theorem free_product.word.cons_eq_smul + def free_product.word.empty + def free_product.word.equiv + def free_product.word.equiv_pair + theorem free_product.word.equiv_pair_eq_of_fst_idx_ne + theorem free_product.word.equiv_pair_symm + def free_product.word.fst_idx + theorem free_product.word.fst_idx_ne_iff + theorem free_product.word.of_smul_def + structure free_product.word.pair + def free_product.word.prod + theorem free_product.word.prod_nil + theorem free_product.word.prod_rcons + theorem free_product.word.prod_smul + def free_product.word.rcons + theorem free_product.word.rcons_inj + theorem free_product.word.smul_induction + structure free_product.word 2021-09-14 10:41:25 7deb32c chore(data/fintype/intervals): finiteness of `Ioo`, `Ioc`, and `Icc` over `ℕ` (#9096) We already have the analogous lemmas and instance for `ℤ`. ESTIMATED CHANGES Modified src/data/fintype/intervals.lean + theorem set.Icc_ℕ_card + theorem set.Icc_ℕ_finite + theorem set.Ico_ℕ_finite + theorem set.Ioc_ℕ_card + theorem set.Ioc_ℕ_finite + theorem set.Ioo_ℕ_card + theorem set.Ioo_ℕ_finite 2021-09-14 08:41:19 2d57545 feat(measure_theory/measure/integral): integral over an encodable type (#9191) ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_encodable Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.map_eq_sum + theorem measure_theory.measure.sum_smul_dirac 2021-09-14 08:41:17 790e98f feat(linear_algebra/matrix/is_diag): add a file (#9010) ESTIMATED CHANGES Added src/linear_algebra/matrix/is_diag.lean + theorem matrix.is_diag.add + theorem matrix.is_diag.conj_transpose + theorem matrix.is_diag.exists_diagonal + theorem matrix.is_diag.from_blocks + theorem matrix.is_diag.from_blocks_of_is_symm + theorem matrix.is_diag.is_symm + theorem matrix.is_diag.kronecker + theorem matrix.is_diag.map + theorem matrix.is_diag.minor + theorem matrix.is_diag.neg + theorem matrix.is_diag.smul + theorem matrix.is_diag.sub + theorem matrix.is_diag.transpose + def matrix.is_diag + theorem matrix.is_diag_conj_transpose_iff + theorem matrix.is_diag_diagonal + theorem matrix.is_diag_from_blocks_iff + theorem matrix.is_diag_iff_exists_diagonal + theorem matrix.is_diag_neg_iff + theorem matrix.is_diag_of_subsingleton + theorem matrix.is_diag_one + theorem matrix.is_diag_smul_one + theorem matrix.is_diag_transpose_iff + theorem matrix.is_diag_zero + theorem matrix.mul_transpose_self_is_diag_iff_has_orthogonal_rows + theorem matrix.transpose_mul_self_is_diag_iff_has_orthogonal_cols Added src/linear_algebra/matrix/orthogonal.lean + theorem matrix.has_orthogonal_cols.has_orthogonal_rows + theorem matrix.has_orthogonal_cols.transpose_has_orthogonal_rows + def matrix.has_orthogonal_cols + theorem matrix.has_orthogonal_rows.has_orthogonal_cols + theorem matrix.has_orthogonal_rows.transpose_has_orthogonal_cols + def matrix.has_orthogonal_rows + theorem matrix.transpose_has_orthogonal_cols_iff_has_orthogonal_rows + theorem matrix.transpose_has_orthogonal_rows_iff_has_orthogonal_cols 2021-09-14 06:36:12 9af1db3 feat(measure_theory/measure/measure_space): The pushfoward measure of a finite measure is a finite measure (#9186) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.is_finite_measure_map 2021-09-14 06:36:11 ceab0e7 chore(order/bounded_lattice): make `bot_lt_some` and `some_lt_none` consistent (#9180) `with_bot.bot_lt_some` gets renamed to `with_bot.none_lt_some` and now syntactically applies to `none : with_bot α` (`with_bot.bot_le_coe` already applies to `⊥` and `↑a`). `with_top.some_lt_none` now takes `a` explicit. ESTIMATED CHANGES Modified src/data/nat/with_bot.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/div.lean Modified src/order/bounded_lattice.lean +/- theorem with_bot.bot_lt_coe - theorem with_bot.bot_lt_some + theorem with_bot.none_lt_some +/- theorem with_top.coe_lt_top +/- theorem with_top.some_lt_none Modified src/ring_theory/power_basis.lean 2021-09-14 06:36:10 ef78b32 feat(measure_theory/function/lp_space): add lemmas about snorm and mem_Lp (#9146) Also move lemma `snorm_add_le` (and related others) out of the borel space section, since `opens_measurable_space` is a sufficient hypothesis. ESTIMATED CHANGES Modified src/measure_theory/function/ess_sup.lean + theorem ess_sup_smul_measure Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.congr_norm + theorem measure_theory.mem_ℒp.mono' + theorem measure_theory.mem_ℒp_congr_norm + theorem measure_theory.mem_ℒp_const_iff + theorem measure_theory.mem_ℒp_finset_sum + theorem measure_theory.mem_ℒp_neg_iff + theorem measure_theory.mem_ℒp_norm_iff + theorem measure_theory.snorm'_smul_measure + theorem measure_theory.snorm_const_lt_top_iff + theorem measure_theory.snorm_ess_sup_smul_measure + theorem measure_theory.snorm_mono + theorem measure_theory.snorm_mono_ae_real + theorem measure_theory.snorm_mono_real + theorem measure_theory.snorm_one_smul_measure + theorem measure_theory.snorm_smul_measure_of_ne_top + theorem measure_theory.snorm_smul_measure_of_ne_zero + theorem measure_theory.snorm_sub_le + theorem measure_theory.snorm_zero' + theorem measure_theory.zero_mem_ℒp' 2021-09-14 06:36:09 5aaa5fa chore(measure_theory/integral/set_integral): update old lemmas that were in comments at the end of the file (#9111) The file `set_integral` had a list of lemmas in comments at the end of the file, which were written for an old implementation of the set integral. This PR deletes the comments, and adds the corresponding results when they don't already exist. The lemmas `set_integral_congr_set_ae` and `set_integral_mono_set` are also moved to relevant sections. ESTIMATED CHANGES Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_union_ae + theorem measure_theory.set_integral_mono_on_ae +/- theorem measure_theory.set_integral_mono_set + theorem measure_theory.set_integral_nonneg_ae +/- theorem measure_theory.set_integral_nonneg_of_ae + theorem measure_theory.set_integral_nonpos + theorem measure_theory.set_integral_nonpos_ae + theorem measure_theory.set_integral_nonpos_of_ae + theorem measure_theory.set_integral_nonpos_of_ae_restrict + theorem measure_theory.tendsto_set_integral_of_antimono + theorem measure_theory.tendsto_set_integral_of_monotone Modified src/measure_theory/measure/measure_space.lean 2021-09-14 06:36:08 4b7593f feat(data/last/basic): a lemma specifying list.split_on (#9104) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.intersperse_cons_cons + theorem list.intersperse_nil + theorem list.intersperse_singleton + theorem list.join_nil + theorem list.split_on_nil + def list.split_on_p_aux' + theorem list.split_on_p_aux_eq + theorem list.split_on_p_aux_nil + theorem list.split_on_p_spec 2021-09-14 04:32:20 d3b345d feat(group_theory/p_group): Bottom subgroup is a p-group (#9190) The bottom subgroup is a p-group. Name is consistent with `is_p_group.of_card` ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.of_bot 2021-09-14 04:32:19 8dffafd feat(topology): one-point compactification of a topological space (#8579) Define `alexandroff X` to be the one-point compactification of a topological space `X` and prove some basic lemmas about this definition. Co-authored by: Yury G. Kudryashov ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/data/set/basic.lean + theorem function.injective.compl_image_eq Modified src/data/set/function.lean + theorem set.maps_to_singleton Modified src/order/filter/bases.lean + theorem filter.has_basis.sup_principal + theorem filter.has_basis.sup_pure + theorem filter.has_basis_pure Modified src/order/filter/basic.lean +/- theorem filter.tendsto_comap_iff +/- theorem filter.tendsto_map'_iff +/- theorem filter.tendsto_sup Modified src/order/filter/ultrafilter.lean + theorem ultrafilter.coe_comap + theorem ultrafilter.mem_comap Added src/topology/alexandroff.lean + theorem alexandroff.coe_eq_coe + theorem alexandroff.coe_injective + theorem alexandroff.coe_ne_infty + theorem alexandroff.coe_preimage_infty + theorem alexandroff.comap_coe_nhds + theorem alexandroff.comap_coe_nhds_infty + theorem alexandroff.compl_image_coe + theorem alexandroff.compl_infty + theorem alexandroff.compl_range_coe + theorem alexandroff.continuous_at_coe + theorem alexandroff.continuous_at_infty' + theorem alexandroff.continuous_at_infty + theorem alexandroff.continuous_coe + theorem alexandroff.dense_embedding_coe + theorem alexandroff.dense_range_coe + theorem alexandroff.has_basis_nhds_infty + def alexandroff.infty + theorem alexandroff.infty_mem_opens_of_compl + theorem alexandroff.infty_ne_coe + theorem alexandroff.infty_not_mem_image_coe + theorem alexandroff.infty_not_mem_range_coe + theorem alexandroff.is_closed_iff_of_mem + theorem alexandroff.is_closed_iff_of_not_mem + theorem alexandroff.is_closed_image_coe + theorem alexandroff.is_closed_infty + theorem alexandroff.is_compl_range_coe_infty + theorem alexandroff.is_open_compl_image_coe + theorem alexandroff.is_open_def + theorem alexandroff.is_open_iff_of_mem' + theorem alexandroff.is_open_iff_of_mem + theorem alexandroff.is_open_iff_of_not_mem + theorem alexandroff.is_open_image_coe + theorem alexandroff.is_open_map_coe + theorem alexandroff.is_open_range_coe + theorem alexandroff.le_nhds_infty + theorem alexandroff.ne_infty_iff_exists + theorem alexandroff.nhds_coe_eq + theorem alexandroff.nhds_infty_eq + theorem alexandroff.nhds_within_coe + theorem alexandroff.nhds_within_coe_image + theorem alexandroff.nhds_within_compl_infty_eq + theorem alexandroff.not_mem_range_coe_iff + theorem alexandroff.open_embedding_coe + def alexandroff.opens_of_compl + theorem alexandroff.range_coe_inter_infty + theorem alexandroff.range_coe_union_infty + theorem alexandroff.tendsto_nhds_infty' + theorem alexandroff.tendsto_nhds_infty + theorem alexandroff.ultrafilter_le_nhds_infty + def alexandroff Modified src/topology/continuous_on.lean + theorem embedding.map_nhds_within_eq + theorem is_open.nhds_within_eq + theorem nhds_within_compl_singleton_sup_pure - theorem nhds_within_eq_of_open + theorem open_embedding.map_nhds_within_preimage_eq Modified src/topology/separation.lean + theorem filter.coclosed_compact_eq_cocompact Modified src/topology/subset_properties.lean + def filter.coclosed_compact +/- def filter.cocompact + theorem filter.cocompact_le_coclosed_compact + theorem filter.cocompact_ne_bot_tfae + theorem filter.has_basis_coclosed_compact +/- theorem filter.has_basis_cocompact + theorem filter.mem_coclosed_compact' + theorem filter.mem_coclosed_compact +/- theorem filter.mem_cocompact' +/- theorem filter.mem_cocompact +/- theorem is_compact.compl_mem_cocompact + theorem is_compact_univ_iff 2021-09-14 03:42:22 f88f3a7 chore(scripts): update nolints.txt (#9192) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-14 01:19:50 f0a1356 feat(linear_algebra/matrix/circulant): add a file (#9011) ESTIMATED CHANGES Added src/linear_algebra/matrix/circulant.lean + def matrix.circulant + theorem matrix.circulant_add + theorem matrix.circulant_col_zero_eq + theorem matrix.circulant_inj + theorem matrix.circulant_injective + theorem matrix.circulant_is_symm_apply + theorem matrix.circulant_is_symm_iff + theorem matrix.circulant_mul + theorem matrix.circulant_mul_comm + theorem matrix.circulant_neg + theorem matrix.circulant_single + theorem matrix.circulant_single_one + theorem matrix.circulant_smul + theorem matrix.circulant_sub + theorem matrix.circulant_zero + theorem matrix.conj_transpose_circulant + theorem matrix.fin.circulant_inj + theorem matrix.fin.circulant_injective + theorem matrix.fin.circulant_is_symm_apply + theorem matrix.fin.circulant_is_symm_iff + theorem matrix.fin.circulant_ite + theorem matrix.fin.circulant_mul + theorem matrix.fin.circulant_mul_comm + theorem matrix.fin.conj_transpose_circulant + theorem matrix.fin.transpose_circulant + theorem matrix.map_circulant + theorem matrix.transpose_circulant 2021-09-13 23:34:39 103c1ff feat(data/(d)finsupp): (d)finsupp.update (#9015) ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.coe_update + theorem dfinsupp.support_update + theorem dfinsupp.support_update_ne_zero + def dfinsupp.update + theorem dfinsupp.update_eq_erase + theorem dfinsupp.update_self Modified src/data/finsupp/basic.lean + theorem finsupp.coe_update + theorem finsupp.support_update + theorem finsupp.support_update_ne_zero + theorem finsupp.support_update_zero + def finsupp.update + theorem finsupp.update_self 2021-09-13 18:35:51 d9476d4 fix(tactic/rcases): Don't parameterize parsers (#9159) The parser description generator only unfolds parser constants if they have no arguments, which means that parsers like `rcases_patt_parse tt` and `rcases_patt_parse ff` don't generate descriptions even though they have a `with_desc` clause. We fix this by naming the parsers separately. Fixes #9158 ESTIMATED CHANGES Modified src/tactic/congr.lean Modified src/tactic/ext.lean Modified src/tactic/rcases.lean Modified test/ext.lean 2021-09-13 17:45:52 ec5f496 feat(README.md): add Rémy Degenne (#9187) ESTIMATED CHANGES Modified README.md 2021-09-13 16:19:14 40247bd feat(measure_theory/measure/vector_measure): add `vector_measure.trim` (#9169) ESTIMATED CHANGES Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.vector_measure.restrict_trim + def measure_theory.vector_measure.trim + theorem measure_theory.vector_measure.trim_eq_self + theorem measure_theory.vector_measure.trim_measurable_set_eq + theorem measure_theory.vector_measure.zero_trim 2021-09-13 16:19:13 3b4f4da feat(linear_algebra/determinant): more on the determinant of linear maps (#9139) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_map.det_conj + theorem linear_map.det_smul + theorem linear_map.det_to_matrix' + theorem linear_map.det_zero' +/- theorem linear_map.det_zero + def linear_map.equiv_of_det_ne_zero Modified src/linear_algebra/matrix/to_lin.lean + theorem linear_map.to_matrix_eq_to_matrix' + theorem matrix.to_lin_eq_to_lin' 2021-09-13 13:59:40 a9e7d33 chore(analysis/calculus/[f]deriv): generalize product formula to product in normed algebras (#9163) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean - theorem deriv_const_mul' +/- theorem deriv_const_mul + theorem deriv_const_mul_field' + theorem deriv_const_mul_field - theorem deriv_mul_const' +/- theorem deriv_mul_const + theorem deriv_mul_const_field' + theorem deriv_mul_const_field +/- theorem has_deriv_at.const_mul +/- theorem has_deriv_at.mul_const +/- theorem has_deriv_within_at.const_mul +/- theorem has_deriv_within_at.mul_const +/- theorem has_strict_deriv_at.const_mul +/- theorem has_strict_deriv_at.mul_const Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable.const_mul +/- theorem differentiable.mul +/- theorem differentiable.mul_const +/- theorem differentiable_at.const_mul +/- theorem differentiable_at.mul +/- theorem differentiable_at.mul_const +/- theorem differentiable_on.const_mul +/- theorem differentiable_on.mul +/- theorem differentiable_on.mul_const +/- theorem fderiv_const_mul + theorem fderiv_mul' + theorem fderiv_mul_const' +/- theorem fderiv_mul_const + theorem fderiv_within_mul' + theorem fderiv_within_mul_const' +/- theorem has_fderiv_at.const_mul + theorem has_fderiv_at.mul' + theorem has_fderiv_at.mul_const' +/- theorem has_fderiv_at.mul_const + theorem has_fderiv_within_at.mul' + theorem has_fderiv_within_at.mul_const' +/- theorem has_fderiv_within_at.mul_const +/- theorem has_strict_fderiv_at.const_mul + theorem has_strict_fderiv_at.mul' + theorem has_strict_fderiv_at.mul_const' +/- theorem has_strict_fderiv_at.mul_const Modified src/analysis/convex/specific_functions.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/pow.lean 2021-09-13 13:59:39 ad62583 chore(algebra/big_operators): add a lemma (#9120) (product over `s.filter p`) * (product over `s.filter (λ x, ¬p x)) = product over s ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_filter_mul_prod_filter_not Modified src/data/finset/basic.lean +/- theorem finset.filter_inter_filter_neg_eq 2021-09-13 10:22:39 b0e8ced feat(group_theory/nilpotent): add intermediate lemmas (#9016) Add two new lemmas on nilpotent groups. ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem is_nilpotent_of_ker_le_center + theorem lower_central_series_succ_eq_bot 2021-09-13 09:34:19 a8a8edc feat(group_theory/p_group): Generalize to infinite p-groups (#9082) Defines p-groups, and generalizes the results of `p_group.lean` to infinite p-groups. The eventual goal is to generalize Sylow's theorems to infinite groups. ESTIMATED CHANGES Modified src/group_theory/p_group.lean + theorem is_p_group.card_orbit + theorem is_p_group.iff_card + theorem is_p_group.iff_order_of + theorem is_p_group.index + theorem is_p_group.of_card + theorem is_p_group.to_le + theorem is_p_group.to_quotient + theorem is_p_group.to_subgroup + def is_p_group +/- theorem mul_action.nonempty_fixed_point_of_prime_not_dvd_card Modified src/group_theory/sylow.lean 2021-09-13 09:34:17 d4f8b92 feat(measure_theory/measure/with_density_vector_measure): define vector measures by an integral over a function (#9008) This PR defined the vector measure corresponding to mapping the set `s` to the integral `∫ x in s, f x ∂μ` given some measure `μ` and some integrable function `f`. ESTIMATED CHANGES Added src/measure_theory/measure/with_density_vector_measure.lean + theorem measure_theory.integrable.ae_eq_of_with_densityᵥ_eq + theorem measure_theory.integrable.with_densityᵥ_eq_iff + def measure_theory.measure.with_densityᵥ + theorem measure_theory.measure.with_densityᵥ_absolutely_continuous + theorem measure_theory.with_densityᵥ_add + theorem measure_theory.with_densityᵥ_apply + theorem measure_theory.with_densityᵥ_eq.congr_ae + theorem measure_theory.with_densityᵥ_neg + theorem measure_theory.with_densityᵥ_smul + theorem measure_theory.with_densityᵥ_sub + theorem measure_theory.with_densityᵥ_zero 2021-09-13 09:34:16 80085fc feat(number_theory/padics/padic_integers): Z_p is adically complete (#8995) ESTIMATED CHANGES Modified src/number_theory/padics/padic_integers.lean 2021-09-13 08:46:12 d082001 feat(analysis/convex/independent): convex independence (#9018) ESTIMATED CHANGES Added src/analysis/convex/independent.lean + theorem convex.extreme_points_convex_independent + theorem convex_independent.comp_embedding + def convex_independent + theorem convex_independent_iff_finset + theorem convex_independent_iff_not_mem_convex_hull_diff + theorem convex_independent_set_iff_inter_convex_hull_subset + theorem convex_independent_set_iff_not_mem_convex_hull_diff + theorem function.injective.convex_independent_iff_set + theorem subsingleton.convex_independent Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent.indicator_eq_of_affine_combination_eq 2021-09-13 06:36:44 1cf1704 chore(order/filter): more readable proof (#9173) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean 2021-09-13 06:36:43 1479068 chore(ring_theory/polynomial/cyclotomic): fix namespacing (#9116) @riccardobrasca told me I got it wrong, so I fixed it :) ESTIMATED CHANGES Modified src/number_theory/primes_congruent_one.lean Modified src/ring_theory/polynomial/cyclotomic.lean + theorem minpoly_dvd_cyclotomic - theorem polynomial.minpoly_primitive_root_dvd_cyclotomic - theorem polynomial.order_of_root_cyclotomic + theorem polynomial.order_of_root_cyclotomic_eq 2021-09-13 06:00:30 5651157 feat(linear_algebra/adic_completion): le_jacobson_bot (#9125) This PR proves that in an `I`-adically complete commutative ring `R`, the ideal `I` is contained in the Jacobson radical of `R`. ESTIMATED CHANGES Modified src/linear_algebra/adic_completion.lean + theorem is_adic_complete.le_jacobson_bot 2021-09-13 04:04:40 ca23d52 feat(set_theory/surreal): add dyadic surreals (#7843) We define `surreal.dyadic` using a map from \int localized away from 2 to surreals. As currently we do not have the ring structure on `surreal` we do this "by hand". Next steps: 1. Prove that `dyadic_map` is injective 2. Prove that `dyadic_map` is a group hom 3. Show that \int localized away from 2 is a subgroup of \rat. ESTIMATED CHANGES Modified docs/references.bib Modified src/set_theory/pgame.lean + def pgame.half + theorem pgame.half_lt_one + theorem pgame.half_move_left + theorem pgame.half_move_right + theorem pgame.zero_lt_half + theorem pgame.zero_lt_one Renamed src/set_theory/surreal.lean to src/set_theory/surreal/basic.lean + theorem pgame.half_add_half_equiv_one + theorem pgame.numeric_half Added src/set_theory/surreal/dyadic.lean + theorem pgame.add_pow_half_succ_self_eq_pow_half + theorem pgame.numeric_pow_half + def pgame.pow_half + theorem pgame.pow_half_left_moves + theorem pgame.pow_half_move_left' + theorem pgame.pow_half_move_left + theorem pgame.pow_half_move_right' + theorem pgame.pow_half_move_right + theorem pgame.pow_half_right_moves + theorem pgame.pow_half_succ_le_pow_half + theorem pgame.pow_half_succ_lt_pow_half + theorem pgame.zero_le_pow_half + theorem pgame.zero_lt_pow_half + theorem surreal.add_half_self_eq_one + theorem surreal.double_pow_half_succ_eq_pow_half + def surreal.dyadic + theorem surreal.dyadic_aux + def surreal.dyadic_map + def surreal.half + theorem surreal.nsmul_int_pow_two_pow_half + theorem surreal.nsmul_pow_two_pow_half' + theorem surreal.nsmul_pow_two_pow_half + def surreal.pow_half + theorem surreal.pow_half_one + theorem surreal.pow_half_zero 2021-09-13 02:40:27 f0effbd chore(scripts): update nolints.txt (#9177) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-13 00:53:07 87c1820 feat(group_theory/perm/concrete_cycle): perms from cycle data structure (#8866) ESTIMATED CHANGES Modified src/group_theory/perm/concrete_cycle.lean + def cycle.form_perm + theorem cycle.form_perm_apply_mem_eq_next + theorem cycle.form_perm_coe + theorem cycle.form_perm_eq_form_perm_iff + theorem cycle.form_perm_eq_self_of_not_mem + theorem cycle.form_perm_reverse + theorem cycle.form_perm_subsingleton + theorem cycle.is_cycle_form_perm + theorem cycle.support_form_perm 2021-09-12 22:30:08 f6c8aff feat(order/zorn) : `chain_univ` (#9162) `univ` is a `r`-chain iff `r` is trichotomous ESTIMATED CHANGES Modified src/order/zorn.lean + theorem zorn.chain_of_trichotomous + theorem zorn.chain_univ_iff 2021-09-12 20:47:08 5b702ec chore(linear_algebra/basic): move map_comap_eq into submodule namespace (#9160) We change the following lemmas from the `linear_map` namespace into the `submodule` namespace - map_comap_eq - comap_map_eq - map_comap_eq_self - comap_map_eq_self This is consistent with `subgroup.map_comap_eq`, and the lemmas are about `submodule.map` so it make sense to keep them in the submodule namespace. ESTIMATED CHANGES Modified src/algebra/lie/ideal_operations.lean Modified src/algebra/lie/submodule.lean Modified src/linear_algebra/basic.lean - theorem linear_map.comap_map_eq - theorem linear_map.comap_map_eq_self - theorem linear_map.map_comap_eq - theorem linear_map.map_comap_eq_self + theorem submodule.comap_map_eq + theorem submodule.comap_map_eq_self + theorem submodule.map_comap_eq + theorem submodule.map_comap_eq_self Modified src/ring_theory/artinian.lean Modified src/ring_theory/noetherian.lean 2021-09-12 18:41:01 00d570a doc(algebra/covariant_and_contravariant): fix parameter documentation… (#9171) … in covariant_class and contravariant_class In the documentation of `algebra.covariant_and_contravariant.covariant_class` and `algebra.covariant_and_contravariant.contravariant_class`, the parameter `r` is described as having type `N → N`. It's actual type is `N → N → Prop`. We change the documentation to give the correct type of `r`. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean 2021-09-12 18:41:00 65f8148 chore(algebra/field_power): golf some proofs (#9170) ESTIMATED CHANGES Modified src/algebra/field_power.lean 2021-09-12 18:40:59 3366a68 feat(data/fin): eq_zero_or_eq_succ (#9136) Particularly useful with `rcases i.eq_zero_or_eq_succ with rfl|⟨j,rfl⟩`. Perhaps it not worth having as a separate lemma, but it seems to avoid breaking the flow of a proof I was writing. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.eq_zero_or_eq_succ 2021-09-12 17:53:26 a7d872f chore(category/abelian/pseudoelements): localize expensive typeclass (#9156) Per @fpvandoorn's [new linter](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/type-class.20loops.20in.20category.20theory). ESTIMATED CHANGES Modified src/category_theory/abelian/diagram_lemmas/four.lean Modified src/category_theory/abelian/pseudoelements.lean + def category_theory.abelian.pseudoelement.has_zero 2021-09-12 15:14:38 995f481 feat(logic/basic): a few lemmas (#9166) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem and_forall_ne + theorem decidable.imp_iff_right_iff +/- theorem exists_imp_distrib + theorem forall_exists_index + theorem forall_imp_iff_exists_imp + theorem imp_iff_right_iff Modified src/logic/function/basic.lean 2021-09-12 09:48:17 04d2b12 feat(ring_theory/ideal/operations): annihilator_smul (#9151) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem submodule.annihilator_mul + theorem submodule.annihilator_smul + theorem submodule.mul_annihilator 2021-09-12 06:48:16 f863703 fix(category_theory/concrete_category): remove bad instance (#9154) Per @fpvandoorn's [new linter](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/type-class.20loops.20in.20category.20theory). ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/category_theory/concrete_category/reflects_isomorphisms.lean + theorem category_theory.reflects_isomorphisms_forget₂ 2021-09-12 06:48:15 858e764 fix(ring_theory/ideal/basic): ideal.module_pi speedup (#9148) Eric and Yael were both complaining that `ideal.module_pi` would occasionally cause random timeouts on unrelated PRs. This PR (a) makes the `smul` proof obligation much tidier (factoring out a sublemma) and (b) replaces the `all_goals` trick by 6 slightly more refined proofs (making the new proof longer, but quicker). On my machine the profiler stats are: ``` ORIG parsing took 74.1ms elaboration of module_pi took 3.83s type checking of module_pi took 424ms decl post-processing of module_pi took 402ms NEW parsing took 136ms elaboration of module_pi took 1.19s type checking of module_pi took 82.8ms decl post-processing of module_pi took 82.5ms ``` ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.mul_sub_mul_mem 2021-09-12 06:48:14 b55483a feat(category_theory/monoidal): rigid (autonomous) monoidal categories (#8946) Defines rigid monoidal categories and creates the instance of finite dimensional vector spaces. ESTIMATED CHANGES Added src/algebra/category/FinVect.lean + def FinVect.FinVect_coevaluation + theorem FinVect.FinVect_coevaluation_apply_one + def FinVect.FinVect_dual + def FinVect.FinVect_evaluation + theorem FinVect.FinVect_evaluation_apply + def FinVect Modified src/algebra/category/Module/monoidal.lean + theorem Module.monoidal_category.associator_inv_apply + theorem Module.monoidal_category.left_unitor_inv_apply + theorem Module.monoidal_category.right_unitor_inv_apply Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.associator_conjugation + theorem category_theory.monoidal_category.associator_inv_conjugation + def category_theory.monoidal_category.full_monoidal_subcategory + theorem category_theory.monoidal_category.id_tensor_right_unitor_inv + theorem category_theory.monoidal_category.left_unitor_inv_comp_tensor + theorem category_theory.monoidal_category.left_unitor_inv_tensor_id + theorem category_theory.monoidal_category.pentagon_comp_id_tensor + theorem category_theory.monoidal_category.pentagon_hom_inv + theorem category_theory.monoidal_category.pentagon_inv_hom + theorem category_theory.monoidal_category.pentagon_inv_inv_hom + theorem category_theory.monoidal_category.right_unitor_inv_comp_tensor Added src/category_theory/monoidal/rigid.lean + theorem category_theory.comp_left_adjoint_mate + theorem category_theory.comp_right_adjoint_mate + def category_theory.left_adjoint_mate + theorem category_theory.left_adjoint_mate_comp + theorem category_theory.left_adjoint_mate_id + def category_theory.left_dual_iso + theorem category_theory.left_dual_iso_id + theorem category_theory.left_dual_right_dual + def category_theory.right_adjoint_mate + theorem category_theory.right_adjoint_mate_comp + theorem category_theory.right_adjoint_mate_id + def category_theory.right_dual_iso + theorem category_theory.right_dual_iso_id + theorem category_theory.right_dual_left_dual Added src/linear_algebra/coevaluation.lean + def coevaluation + theorem coevaluation_apply_one + theorem contract_left_assoc_coevaluation' + theorem contract_left_assoc_coevaluation Modified src/linear_algebra/finsupp_vector_space.lean - def finsupp.basis.tensor_product Added src/linear_algebra/tensor_product_basis.lean + def basis.tensor_product 2021-09-12 05:54:55 e1bed5a fix(category_theory/adjunction/limits): remove bad instance (#9157) Per @fpvandoorn's [new linter](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/type-class.20loops.20in.20category.20theory). ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean + theorem category_theory.adjunction.has_colimit_comp_equivalence + theorem category_theory.adjunction.has_limit_comp_equivalence Modified src/category_theory/limits/over.lean 2021-09-12 05:54:54 059eba4 fix(category/preadditive/single_obj): remove superfluous instance (#9155) Per @fpvandoorn's [new linter](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/type-class.20loops.20in.20category.20theory). ESTIMATED CHANGES Modified src/category_theory/preadditive/single_obj.lean 2021-09-12 02:16:49 96c1d69 doc(data/list/*): Elaborate module docstrings (#9076) Just adding some elaboration that @YaelDillies requested in #8867, but which didn't get included before it was merged. ESTIMATED CHANGES Modified src/data/list/alist.lean Modified src/data/list/of_fn.lean 2021-09-12 01:07:51 f75bee3 chore(ring_theory/noetherian): fix URL (#9149) ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean 2021-09-11 22:57:24 55aaebe feat(data/real/ennreal): add `contravariant_class ennreal ennreal (+) (<)` (#9143) ## `algebra/ordered_monoid` * use `≠ ⊤`/`≠ ⊥` instead of `< ⊤`/`⊥ <` in the assumptions of `with_top.add_lt_add_iff_left`, `with_top.add_lt_add_iff_right`, `with_bot.add_lt_add_iff_left`, and `with_bot.add_lt_add_iff_right`; * add instances for `contravariant_class (with_top α) (with_top α) (+) (<)` and `contravariant_class (with_bot α) (with_bot α) (+) (<)`. ## `data/real/ennreal` * use `≠ ∞` instead of `< ∞` in the assumptions of `ennreal.add_lt_add_iff_left`, `ennreal.add_lt_add_iff_right`, `ennreal.lt_add_right`, * add an instance `contravariant_class ℝ≥0∞ ℝ≥0∞ (+) (<)`; * rename `ennreal.sub_infty` to `ennreal.sub_top`. ## `measure_theory/measure/outer_measure` * use `≠ ∞` instead of `< ∞` in the assumptions of `induced_outer_measure_exists_set`; ## `topology/metric_space/emetric_space` * use `≠ ∞` instead of `< ∞` in the assumptions of `emetric.ball_subset`. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean +/- theorem with_bot.add_lt_add_iff_left +/- theorem with_bot.add_lt_add_iff_right +/- theorem with_top.add_lt_add_iff_left +/- theorem with_top.add_lt_add_iff_right Modified src/data/real/ennreal.lean +/- theorem ennreal.add_lt_add_iff_left +/- theorem ennreal.add_lt_add_iff_right +/- theorem ennreal.lt_add_right - theorem ennreal.sub_infty + theorem ennreal.sub_top Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/function/continuous_map_dense.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/vitali_caratheodory.lean Modified src/measure_theory/measure/content.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/measure_theory/measure/regular.lean Modified src/measure_theory/measure/stieltjes.lean Modified src/order/filter/ennreal.lean Modified src/ring_theory/polynomial/content.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.ball_subset Modified src/topology/metric_space/hausdorff_distance.lean 2021-09-11 21:56:23 c0693ca chore(analysis/calculus/*): add `filter.eventually_eq.deriv` etc. (#9131) * add `filter.eventually_eq.deriv` and `filter.eventually_eq.fderiv`; * add `times_cont_diff_within_at.eventually` and `times_cont_diff_at.eventually`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/times_cont_diff.lean 2021-09-11 20:56:00 1605b85 feat(data/real/ennreal): add ennreal.to_(nn)real_inv and ennreal.to_(nn)real_div (#9144) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_nnreal_div + theorem ennreal.to_nnreal_inv + theorem ennreal.to_real_div + theorem ennreal.to_real_inv 2021-09-11 17:31:41 b9ad733 split(analysis/convex/combination): split off `analysis.convex.basic` (#9115) This moves `finset.center_mass` into its own new file. About the copyright header, `finset.center_mass` comes from #1804, which was written by Yury in December 2019. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean - theorem convex.center_mass_mem - theorem convex.sum_mem - theorem convex_hull_basis_eq_std_simplex - theorem convex_hull_eq - theorem convex_hull_eq_union_convex_hull_finite_subsets - theorem convex_iff_sum_mem - theorem convex_on.exists_ge_of_center_mass - theorem convex_on.exists_ge_of_mem_convex_hull - theorem convex_on.map_center_mass_le - theorem convex_on.map_sum_le - theorem finset.center_mass_empty - theorem finset.center_mass_eq_of_sum_1 - theorem finset.center_mass_filter_ne_zero - theorem finset.center_mass_insert - theorem finset.center_mass_ite_eq - theorem finset.center_mass_mem_convex_hull - theorem finset.center_mass_pair - theorem finset.center_mass_segment' - theorem finset.center_mass_segment - theorem finset.center_mass_singleton - theorem finset.center_mass_smul - theorem finset.center_mass_subset - theorem finset.convex_hull_eq - theorem mem_Icc_of_mem_std_simplex - theorem set.finite.convex_hull_eq - theorem set.finite.convex_hull_eq_image Modified src/analysis/convex/caratheodory.lean Added src/analysis/convex/combination.lean + theorem convex.center_mass_mem + theorem convex.sum_mem + theorem convex_hull_basis_eq_std_simplex + theorem convex_hull_eq + theorem convex_hull_eq_union_convex_hull_finite_subsets + theorem convex_iff_sum_mem + theorem convex_on.exists_ge_of_center_mass + theorem convex_on.exists_ge_of_mem_convex_hull + theorem convex_on.map_center_mass_le + theorem convex_on.map_sum_le + theorem finset.center_mass_empty + theorem finset.center_mass_eq_of_sum_1 + theorem finset.center_mass_filter_ne_zero + theorem finset.center_mass_insert + theorem finset.center_mass_ite_eq + theorem finset.center_mass_mem_convex_hull + theorem finset.center_mass_pair + theorem finset.center_mass_segment' + theorem finset.center_mass_segment + theorem finset.center_mass_singleton + theorem finset.center_mass_smul + theorem finset.center_mass_subset + theorem finset.convex_hull_eq + theorem mem_Icc_of_mem_std_simplex + theorem set.finite.convex_hull_eq + theorem set.finite.convex_hull_eq_image Modified src/analysis/convex/integral.lean Modified src/analysis/convex/topology.lean 2021-09-11 15:52:14 62de591 feat(interval_integral): generalize change of variables (#8869) * Generalizes `interval_integral.integral_comp_mul_deriv'`. In this version: (1) `f` need not be differentiable at the endpoints of `[a,b]`, only continuous, (2) I removed the `measurable_at_filter` assumption (3) I assumed that `g` was continuous on `f '' [a,b]`, instead of continuous at every point of `f '' [a,b]` (which differs in the endpoints). This was possible after @sgouezel's PR #7978. The proof was a lot longer/messier than expected. Under these assumptions we have to be careful to sometimes take one-sided derivatives. For example, we cannot take the 2-sided derivative of `λ u, ∫ x in f a..u, g x` when `u` is the maximum/minimum of `f` on `[a, b]`. @urkud: I needed more `FTC_filter` classes, namely for closed intervals (to be precise: `FTC_filter x (𝓝[[a, b]] x) (𝓝[[a, b]] x)`). Was there a conscious reason to exclude these classes? (The documentation explicitly enumerates the existing instances.) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.Ioi_iff_Ioo + theorem has_deriv_within_at_congr_set Modified src/data/set/intervals/unordered_interval.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/integral/interval_integral.lean + theorem interval_integral.continuous_on_primitive_interval' + theorem interval_integral.integral_comp_mul_deriv'' Modified src/measure_theory/integral/set_integral.lean + theorem continuous_on.measurable_at_filter_nhds_within Modified src/order/filter/interval.lean Modified src/topology/continuous_on.lean + theorem nhds_within_eq_nhds_within' Modified src/topology/instances/real.lean + theorem real.image_interval + theorem real.image_interval_eq_Icc + theorem real.interval_subset_image_interval 2021-09-11 14:06:54 6823886 feat(measure_theory/function/conditional_expectation): conditional expectation of an indicator (#8920) This PR builds `condexp_ind (s : set α) : E →L[ℝ] α →₁[μ] E`, which takes `x : E` to the conditional expectation of the indicator of the set `s` with value `x`, seen as an element of `α →₁[μ] E`. This linear map will be used in a next PR to define the conditional expectation from L1 to L1, by using the same extension mechanism as in the Bochner integral construction. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.ae_measurable'.const_inner + theorem measure_theory.ae_measurable'.measurable_comp +/- theorem measure_theory.ae_measurable'.measurable_mk + theorem measure_theory.condexp_L2_ae_eq_zero_of_ae_eq_zero + theorem measure_theory.condexp_L2_comp_continuous_linear_map + theorem measure_theory.condexp_L2_const_inner + theorem measure_theory.condexp_L2_indicator_ae_eq_smul + theorem measure_theory.condexp_L2_indicator_eq_to_span_singleton_comp + def measure_theory.condexp_ind + def measure_theory.condexp_ind_L1 + theorem measure_theory.condexp_ind_L1_add + theorem measure_theory.condexp_ind_L1_disjoint_union + def measure_theory.condexp_ind_L1_fin + theorem measure_theory.condexp_ind_L1_fin_add + theorem measure_theory.condexp_ind_L1_fin_ae_eq_condexp_ind_smul + theorem measure_theory.condexp_ind_L1_fin_disjoint_union + theorem measure_theory.condexp_ind_L1_fin_smul' + theorem measure_theory.condexp_ind_L1_fin_smul + theorem measure_theory.condexp_ind_L1_of_measurable_set_of_measure_ne_top + theorem measure_theory.condexp_ind_L1_of_measure_eq_top + theorem measure_theory.condexp_ind_L1_of_not_measurable_set + theorem measure_theory.condexp_ind_L1_smul' + theorem measure_theory.condexp_ind_L1_smul + theorem measure_theory.condexp_ind_ae_eq_condexp_ind_smul + theorem measure_theory.condexp_ind_disjoint_union + theorem measure_theory.condexp_ind_disjoint_union_apply + theorem measure_theory.condexp_ind_empty + theorem measure_theory.condexp_ind_smul' + def measure_theory.condexp_ind_smul + theorem measure_theory.condexp_ind_smul_add + theorem measure_theory.condexp_ind_smul_ae_eq_smul + theorem measure_theory.condexp_ind_smul_empty + theorem measure_theory.condexp_ind_smul_smul' + theorem measure_theory.condexp_ind_smul_smul + theorem measure_theory.continuous_condexp_ind_L1 + theorem measure_theory.integrable_condexp_L2_indicator + theorem measure_theory.integrable_condexp_ind_smul + theorem measure_theory.integral_condexp_L2_eq + theorem measure_theory.integral_condexp_L2_eq_of_fin_meas_real + theorem measure_theory.lintegral_nnnorm_condexp_L2_indicator_le + theorem measure_theory.lintegral_nnnorm_condexp_L2_indicator_le_real + theorem measure_theory.lintegral_nnnorm_condexp_L2_le + theorem measure_theory.lintegral_nnnorm_condexp_ind_smul_le + theorem measure_theory.norm_condexp_ind_L1_fin_le + theorem measure_theory.norm_condexp_ind_L1_le + theorem measure_theory.norm_condexp_ind_apply_le + theorem measure_theory.norm_condexp_ind_le + theorem measure_theory.set_lintegral_nnnorm_condexp_L2_indicator_le + theorem measure_theory.set_lintegral_nnnorm_condexp_ind_smul_le Modified src/measure_theory/function/lp_space.lean + theorem continuous_linear_map.add_comp_Lp + theorem continuous_linear_map.add_comp_LpL + theorem continuous_linear_map.coe_fn_comp_Lp' + theorem continuous_linear_map.coe_fn_comp_LpL + theorem continuous_linear_map.smul_comp_Lp + theorem continuous_linear_map.smul_comp_LpL + theorem continuous_linear_map.smul_comp_LpL_apply + theorem measure_theory.indicator_const_Lp_eq_to_span_singleton_comp_Lp Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/integral/set_integral.lean + theorem continuous_linear_map.set_integral_comp_Lp 2021-09-11 12:23:38 241ee9e feat(data/finsupp): more lemmas about `α →₀ ℕ` (#9137) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.le_iff' + theorem finsupp.nat_add_sub_assoc + theorem finsupp.nat_sub_self + theorem finsupp.single_le_iff 2021-09-11 12:23:37 e009354 chore(data/mv_polynomials): golf, add a lemma (#9132) * add `monoid_algebra.support_mul_single`; * transfer a few more lemmas from `monoid_algebra` to `add_monoid_algebra` * add `mv_polynomial.support_mul_X` * reuse a proof. ESTIMATED CHANGES Modified src/algebra/monoid_algebra/basic.lean + theorem add_monoid_algebra.mul_single_apply + theorem add_monoid_algebra.single_mul_apply + theorem add_monoid_algebra.support_mul_single + theorem monoid_algebra.support_mul_single Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.support_mul_X 2021-09-11 12:23:36 d72119c feat(data/mv_polynomial/equiv): empty_equiv (#9122) ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean + def mv_polynomial.is_empty_alg_equiv + def mv_polynomial.is_empty_ring_equiv - def mv_polynomial.pempty_alg_equiv - def mv_polynomial.pempty_ring_equiv Modified src/data/mv_polynomial/funext.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/basic.lean 2021-09-11 11:48:10 f318e5d chore(ring_theory/artinian): typo (#9140) ESTIMATED CHANGES Modified src/ring_theory/artinian.lean + theorem set_has_minimal_iff_artinian - theorem set_has_minimal_iff_artinrian 2021-09-11 04:25:26 579ca5e chore(combinatorics/simple_graph): rename sym to symm (#9134) The naming convention for symmetry of a relation in mathlib seems to be symm, so this commit renames the axiom for the symmetry of the adjacency relation of a simple graph to this. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/combinatorics/simple_graph/basic.lean +/- theorem simple_graph.adj_comm +/- theorem simple_graph.adj_symm +/- def simple_graph.edge_set Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/combinatorics/simple_graph/subgraph.lean +/- theorem simple_graph.subgraph.adj_symm +/- def simple_graph.subgraph.edge_set 2021-09-11 04:25:25 919aad2 refactor(topology/path_connected): make `path` extend `C(I, X)` (#9133) ESTIMATED CHANGES Modified src/topology/path_connected.lean +/- theorem path.coe_mk +/- structure path 2021-09-11 04:25:24 8413622 chore(algebra/ordered_smul): reduce instance assumptions & delete duplicated instances (#9130) These instances all assumed `semiring R` superfluously: * `order_dual.smul_with_zero` * `order_dual.mul_action` * `order_dual.mul_action_with_zero` * `order_dual.distrib_mul_action` and these instances were duplicates (with their `opposite.`-less counterparts): * `opposite.mul_zero_class.to_opposite_smul_with_zero` * `opposite.monoid_with_zero.to_opposite_mul_action_with_zero` * `opposite.semiring.to_opposite_module` ESTIMATED CHANGES Modified src/algebra/module/basic.lean Modified src/algebra/module/opposites.lean Modified src/algebra/ordered_smul.lean Modified src/algebra/smul_with_zero.lean 2021-09-11 04:25:23 2e9f708 feat(algebra/ordered_monoid): order_embedding.mul_left (#9127) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean + def order_embedding.mul_left + def order_embedding.mul_right 2021-09-11 03:46:20 4c96b8a feat(measure_theory/measure/set_integral): new lemma integral_Union (#9093) ESTIMATED CHANGES Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.has_sum_integral_Union + theorem measure_theory.integral_Union + theorem measure_theory.integral_finset_bUnion + theorem measure_theory.integral_fintype_Union 2021-09-11 01:08:22 426227d chore(algebra/group/basic): add 3 `simp` attrs (#9050) ESTIMATED CHANGES Modified archive/imo/imo2008_q2.lean Modified src/algebra/group/basic.lean +/- theorem sub_add_sub_cancel + theorem sub_sub_cancel_left +/- theorem sub_sub_sub_cancel_right Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean 2021-09-10 20:31:43 e4ca117 feat(ring_theory/algebraic): is_algebraic_of_larger_base (#9109) ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean + theorem algebra.is_algebraic_of_larger_field 2021-09-10 18:48:06 7500529 refactor(analysis/convex/basic): generalize segments to vector spaces (#9094) `segment` and `open_segment` are currently only defined in real vector spaces. This generalizes ℝ to arbitrary ordered_semirings in definitions and abstracts it away to the correct generality in lemmas. It also generalizes the space from `add_comm_group` to `add_comm_monoid` where possible. ESTIMATED CHANGES Modified src/analysis/calculus/local_extr.lean +/- theorem mem_pos_tangent_cone_at_of_segment_subset' +/- theorem mem_pos_tangent_cone_at_of_segment_subset Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean +/- theorem mem_tangent_cone_of_segment_subset Modified src/analysis/convex/basic.lean + theorem Icc_subset_segment + theorem Ioo_subset_open_segment +/- theorem convex.add +/- theorem convex.combo_self +/- theorem convex.mem_Icc +/- theorem convex.mem_Ico +/- theorem convex.mem_Ioc +/- theorem convex.mem_Ioo +/- theorem convex.segment_subset +/- theorem convex.sub +/- theorem convex_empty +/- theorem convex_open_segment +/- theorem convex_segment +/- theorem left_mem_open_segment_iff +/- theorem left_mem_segment +/- theorem mem_open_segment_of_ne_left_right +/- theorem mem_segment_translate +/- def open_segment +/- theorem open_segment_eq_Ioo' +/- theorem open_segment_eq_Ioo +/- theorem open_segment_image + theorem open_segment_subset_Ioo + theorem open_segment_subset_iff_segment_subset +/- theorem open_segment_translate_preimage +/- theorem right_mem_segment +/- def segment +/- theorem segment_eq_Icc' +/- theorem segment_eq_Icc +/- theorem segment_eq_image' +/- theorem segment_eq_image +/- theorem segment_eq_interval +/- theorem segment_image +/- theorem segment_same + theorem segment_subset_Icc +/- theorem segment_symm +/- theorem segment_translate_image +/- theorem segment_translate_preimage Modified src/analysis/convex/extreme.lean Modified src/data/set/intervals/unordered_interval.lean 2021-09-10 18:48:05 0e014ba feat(combinatorics/simple_graph/adj_matrix): more lemmas (#9021) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/adj_matrix.lean + def matrix.compl + theorem matrix.compl_apply + theorem matrix.compl_apply_diag + theorem matrix.is_adj_matrix.adj_matrix_to_graph_eq + theorem matrix.is_adj_matrix.apply_diag_ne + theorem matrix.is_adj_matrix.apply_ne_one_iff + theorem matrix.is_adj_matrix.apply_ne_zero_iff + theorem matrix.is_adj_matrix.compl + def matrix.is_adj_matrix.to_graph + theorem matrix.is_adj_matrix.to_graph_compl_eq + structure matrix.is_adj_matrix + theorem matrix.is_adj_matrix_compl + theorem matrix.is_symm_compl +/- def simple_graph.adj_matrix +/- theorem simple_graph.adj_matrix_apply +/- theorem simple_graph.adj_matrix_dot_product +/- theorem simple_graph.adj_matrix_mul_apply +/- theorem simple_graph.adj_matrix_mul_self_apply_self +/- theorem simple_graph.adj_matrix_mul_vec_apply +/- theorem simple_graph.adj_matrix_mul_vec_const_apply +/- theorem simple_graph.adj_matrix_mul_vec_const_apply_of_regular +/- theorem simple_graph.adj_matrix_vec_mul_apply +/- theorem simple_graph.dot_product_adj_matrix + theorem simple_graph.is_adj_matrix_adj_matrix + theorem simple_graph.is_symm_adj_matrix +/- theorem simple_graph.mul_adj_matrix_apply + theorem simple_graph.to_graph_adj_matrix_eq +/- theorem simple_graph.trace_adj_matrix +/- theorem simple_graph.transpose_adj_matrix 2021-09-10 16:18:38 a949b57 feat(data/mv_polynomial): mv_polynomial.subsingleton (#9124) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2021-09-10 16:18:37 92e7bbe refactor(algebra/group/units): better defeq for is_unit.unit (#9112) Make sure that, for `x : M` and `h : is_unit M`, then `is_unit.unit x h : M` is defeq to `x`. ESTIMATED CHANGES Modified src/algebra/group/units.lean Modified src/category_theory/endomorphism.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean 2021-09-10 16:18:36 574864d feat(topology/compact_open): express the compact-open topology as an Inf of topologies (#9106) For `f : C(α, β)` and a set `s` in `α`, define `f.restrict s` to be the restriction of `f` as an element of `C(s, β)`. This PR then proves that the compact-open topology on `C(α, β)` is equal to the infimum of the induced compact-open topologies from the restrictions to compact sets. ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.compact_open_eq_Inf_induced + theorem continuous_map.nhds_compact_open_eq_Inf_nhds_induced + theorem continuous_map.tendsto_compact_open_iff_forall Modified src/topology/continuous_function/basic.lean + theorem continuous_map.coe_restrict + def continuous_map.restrict 2021-09-10 16:18:35 d2afdc5 feat(ring_theory/dedekind_domain): add proof that `I \sup J` is the product of `factors I \inf factors J` for `I, J` ideals in a Dedekind Domain (#9055) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem multiset.prod_ne_zero_of_prime Modified src/ring_theory/dedekind_domain.lean + theorem count_le_of_ideal_ge + theorem factors_prod_factors_eq_factors + theorem prod_factors_eq_self + theorem sup_eq_prod_inf_factors Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.zero_not_mem_factors 2021-09-10 15:18:22 6d2cbf9 feat(ring_theory/artinian): Artinian modules (#9009) ESTIMATED CHANGES Added src/ring_theory/artinian.lean + theorem is_artinian.bijective_of_injective_endomorphism + theorem is_artinian.disjoint_partial_infs_eventually_top + theorem is_artinian.exists_endomorphism_iterate_ker_sup_range_eq_top + theorem is_artinian.finite_of_linear_independent + theorem is_artinian.induction + theorem is_artinian.surjective_of_injective_endomorphism + theorem is_artinian_iff_well_founded + theorem is_artinian_of_fg_of_artinian' + theorem is_artinian_of_fg_of_artinian + theorem is_artinian_of_fintype + theorem is_artinian_of_injective + theorem is_artinian_of_le + theorem is_artinian_of_linear_equiv + theorem is_artinian_of_quotient_of_artinian + theorem is_artinian_of_range_eq_ker + theorem is_artinian_of_submodule_of_artinian + theorem is_artinian_of_surjective + theorem is_artinian_of_tower + theorem is_artinian_ring_iff + theorem is_artinian_ring_of_ring_equiv + theorem is_artinian_ring_of_surjective + theorem is_artinian_span_of_finite + theorem monotone_stabilizes_iff_artinian + theorem ring.is_artinian_of_zero_eq_one + theorem set_has_minimal_iff_artinrian 2021-09-10 15:18:21 2410c1f feat(topology/homotopy): Define homotopy between functions (#8947) More PRs are to come, with homotopy between paths etc. So this will probably become a folder at some point, but for now I've just put it in `topology/homotopy.lean`. There's also not that much API here at the moment, more will be added later on. ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.curry_apply Added src/topology/homotopy.lean + theorem continuous_map.homotopy.apply_one + theorem continuous_map.homotopy.apply_zero + def continuous_map.homotopy.curry + theorem continuous_map.homotopy.ext + def continuous_map.homotopy.extend + theorem continuous_map.homotopy.extend_apply_one + theorem continuous_map.homotopy.extend_apply_zero + def continuous_map.homotopy.refl + def continuous_map.homotopy.symm + theorem continuous_map.homotopy.symm_apply + theorem continuous_map.homotopy.symm_symm + theorem continuous_map.homotopy.symm_trans + theorem continuous_map.homotopy.to_continuous_map_apply + def continuous_map.homotopy.trans + theorem continuous_map.homotopy.trans_apply + structure continuous_map.homotopy Modified src/topology/unit_interval.lean + theorem unit_interval.coe_symm_eq + theorem unit_interval.mul_pos_mem_iff + theorem unit_interval.symm_symm + theorem unit_interval.two_mul_sub_one_mem_iff 2021-09-10 13:08:34 5ce9280 feat(measure_theory/integral/bochner): generalize the Bochner integral construction (#8939) The construction of the Bochner integral is generalized to a process extending a set function `T : set α → (E →L[ℝ] F)` from sets to functions in L1. The integral corresponds to `T s` equal to the linear map `E →L[ℝ] E` with value `λ x, (μ s).to_real • x`. The conditional expectation from L1 to L1 will be defined by taking for `T` the function `condexp_ind : set α → (E →L[ℝ] α →₁[μ] E)` defined in #8920 . ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.inv_singleton Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.to_L1_smul' Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.L1.integral_eq_set_to_L1 + theorem measure_theory.L1.simple_func.integral_eq_set_to_L1s + theorem measure_theory.dominated_fin_meas_additive_weighted_smul + theorem measure_theory.integral_eq_set_to_fun + theorem measure_theory.norm_weighted_smul_le +/- theorem measure_theory.simple_func.integral_congr + theorem measure_theory.simple_func.integral_def + theorem measure_theory.simple_func.integral_eq +/- theorem measure_theory.simple_func.integral_sub + theorem measure_theory.simple_func.norm_set_to_simple_func_le_integral_norm +/- def measure_theory.simple_func.pos_part + def measure_theory.weighted_smul + theorem measure_theory.weighted_smul_add_measure + theorem measure_theory.weighted_smul_apply + theorem measure_theory.weighted_smul_congr + theorem measure_theory.weighted_smul_empty + theorem measure_theory.weighted_smul_null + theorem measure_theory.weighted_smul_smul + theorem measure_theory.weighted_smul_union + theorem measure_theory.weighted_smul_zero_measure Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.range_eq_empty_of_is_empty Added src/measure_theory/integral/set_to_l1.lean + def measure_theory.L1.set_to_L1' + def measure_theory.L1.set_to_L1 + theorem measure_theory.L1.set_to_L1_eq_set_to_L1' + theorem measure_theory.L1.set_to_L1_eq_set_to_L1s_clm + theorem measure_theory.L1.set_to_L1_smul + theorem measure_theory.L1.set_to_fun_eq_set_to_L1 + theorem measure_theory.L1.simple_func.norm_eq_sum_mul + theorem measure_theory.L1.simple_func.norm_set_to_L1s_le + def measure_theory.L1.simple_func.set_to_L1s + theorem measure_theory.L1.simple_func.set_to_L1s_add + def measure_theory.L1.simple_func.set_to_L1s_clm' + def measure_theory.L1.simple_func.set_to_L1s_clm + theorem measure_theory.L1.simple_func.set_to_L1s_congr + theorem measure_theory.L1.simple_func.set_to_L1s_eq_set_to_simple_func + theorem measure_theory.L1.simple_func.set_to_L1s_smul + theorem measure_theory.L1.simple_func.set_to_L1s_smul_real + def measure_theory.dominated_fin_meas_additive + def measure_theory.fin_meas_additive + theorem measure_theory.map_Union_fin_meas_set_eq_sum + theorem measure_theory.map_empty_eq_zero_of_map_union + def measure_theory.set_to_fun + theorem measure_theory.set_to_fun_add + theorem measure_theory.set_to_fun_congr_ae + theorem measure_theory.set_to_fun_eq + theorem measure_theory.set_to_fun_neg + theorem measure_theory.set_to_fun_non_ae_measurable + theorem measure_theory.set_to_fun_smul + theorem measure_theory.set_to_fun_sub + theorem measure_theory.set_to_fun_undef + theorem measure_theory.set_to_fun_zero + theorem measure_theory.simple_func.map_set_to_simple_func + theorem measure_theory.simple_func.norm_set_to_simple_func_le_sum_mul_norm + theorem measure_theory.simple_func.norm_set_to_simple_func_le_sum_op_norm + def measure_theory.simple_func.set_to_simple_func + theorem measure_theory.simple_func.set_to_simple_func_add + theorem measure_theory.simple_func.set_to_simple_func_add_left' + theorem measure_theory.simple_func.set_to_simple_func_add_left + theorem measure_theory.simple_func.set_to_simple_func_congr' + theorem measure_theory.simple_func.set_to_simple_func_congr + theorem measure_theory.simple_func.set_to_simple_func_eq_sum_filter + theorem measure_theory.simple_func.set_to_simple_func_mono + theorem measure_theory.simple_func.set_to_simple_func_neg + theorem measure_theory.simple_func.set_to_simple_func_smul + theorem measure_theory.simple_func.set_to_simple_func_smul_real + theorem measure_theory.simple_func.set_to_simple_func_sub + theorem measure_theory.simple_func.set_to_simple_func_zero + theorem measure_theory.simple_func.set_to_simple_func_zero_apply Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.measure_inter_lt_top + theorem measure_theory.measure_inter_ne_top + theorem measure_theory.measure_union_lt_top + theorem measure_theory.measure_union_lt_top_iff + theorem measure_theory.measure_union_ne_top 2021-09-10 13:08:33 56ff42b feat(linear_algebra/matrix/transvection): matrices are generated by transvections and diagonal matrices (#8898) One version of Gauss' pivot: any matrix can be obtained starting from a diagonal matrix and doing elementary moves on rows and columns. Phrased in terms of multiplication by transvections. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean - def lie_algebra.special_linear.E - theorem lie_algebra.special_linear.E_apply_one - theorem lie_algebra.special_linear.E_apply_zero - theorem lie_algebra.special_linear.E_diag_zero - theorem lie_algebra.special_linear.E_trace_zero +/- theorem lie_algebra.special_linear.Eb_val Modified src/data/matrix/basis.lean + theorem matrix.std_basis_matrix.apply_of_col_ne + theorem matrix.std_basis_matrix.apply_of_ne + theorem matrix.std_basis_matrix.apply_of_row_ne + theorem matrix.std_basis_matrix.apply_same + theorem matrix.std_basis_matrix.diag_zero + theorem matrix.std_basis_matrix.mul_left_apply_of_ne + theorem matrix.std_basis_matrix.mul_left_apply_same + theorem matrix.std_basis_matrix.mul_of_ne + theorem matrix.std_basis_matrix.mul_right_apply_of_ne + theorem matrix.std_basis_matrix.mul_right_apply_same + theorem matrix.std_basis_matrix.mul_same + theorem matrix.std_basis_matrix.trace_zero Modified src/data/matrix/block.lean + def matrix.is_two_block_diagonal Modified src/data/nat/basic.lean + def nat.decreasing_induction' + def nat.le_rec_on' Modified src/data/option/basic.lean + theorem option.to_list_none + theorem option.to_list_some Added src/linear_algebra/matrix/transvection.lean + theorem matrix.det_transvection_of_ne + theorem matrix.diagonal_transvection_induction + theorem matrix.diagonal_transvection_induction_of_det_ne_zero + theorem matrix.mul_transvection_apply_of_ne + theorem matrix.mul_transvection_apply_same + theorem matrix.pivot.exists_is_two_block_diagonal_list_transvec_mul_mul_list_transvec + theorem matrix.pivot.exists_is_two_block_diagonal_of_ne_zero + theorem matrix.pivot.exists_list_transvec_mul_diagonal_mul_list_transvec + theorem matrix.pivot.exists_list_transvec_mul_mul_list_transvec_eq_diagonal + theorem matrix.pivot.exists_list_transvec_mul_mul_list_transvec_eq_diagonal_aux + theorem matrix.pivot.exists_list_transvec_mul_mul_list_transvec_eq_diagonal_induction + theorem matrix.pivot.is_two_block_diagonal_list_transvec_col_mul_mul_list_transvec_row + def matrix.pivot.list_transvec_col + theorem matrix.pivot.list_transvec_col_mul_last_col + theorem matrix.pivot.list_transvec_col_mul_last_row + theorem matrix.pivot.list_transvec_col_mul_last_row_drop + theorem matrix.pivot.list_transvec_col_mul_mul_list_transvec_row_last_col + theorem matrix.pivot.list_transvec_col_mul_mul_list_transvec_row_last_row + def matrix.pivot.list_transvec_row + theorem matrix.pivot.mul_list_transvec_row_last_col + theorem matrix.pivot.mul_list_transvec_row_last_col_take + theorem matrix.pivot.mul_list_transvec_row_last_row + theorem matrix.pivot.reindex_exists_list_transvec_mul_mul_list_transvec_eq_diagonal + def matrix.transvection + theorem matrix.transvection_mul_apply_of_ne + theorem matrix.transvection_mul_apply_same + theorem matrix.transvection_mul_transvection_same + theorem matrix.transvection_struct.det_to_matrix_prod + theorem matrix.transvection_struct.inv_mul + theorem matrix.transvection_struct.mul_inv + theorem matrix.transvection_struct.mul_sum_inl_to_matrix_prod + theorem matrix.transvection_struct.prod_mul_reverse_inv_prod + def matrix.transvection_struct.reindex_equiv + theorem matrix.transvection_struct.reverse_inv_prod_mul_prod + def matrix.transvection_struct.sum_inl + theorem matrix.transvection_struct.sum_inl_to_matrix_prod_mul + def matrix.transvection_struct.to_matrix + theorem matrix.transvection_struct.to_matrix_mk + theorem matrix.transvection_struct.to_matrix_reindex_equiv + theorem matrix.transvection_struct.to_matrix_reindex_equiv_prod + theorem matrix.transvection_struct.to_matrix_sum_inl + structure matrix.transvection_struct + theorem matrix.transvection_zero + theorem matrix.update_row_eq_transvection Modified src/ring_theory/matrix_algebra.lean 2021-09-10 10:53:36 a057a8e feat(ring_theory/norm): `norm R x = 0 ↔ x = 0` (#9042) Nonzero values of `S / R` have nonzero norm over `R`. ESTIMATED CHANGES Modified src/ring_theory/norm.lean +/- theorem algebra.norm_apply + theorem algebra.norm_eq_zero_iff' + theorem algebra.norm_eq_zero_iff + theorem algebra.norm_eq_zero_iff_of_basis + theorem algebra.norm_ne_zero_iff_of_basis 2021-09-10 07:18:23 37e17c5 feat(measure_theory/integral/lebesgue): add some lintegral lemmas (#9064) This PR contains some lemmas useful for #9065. ESTIMATED CHANGES Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_eq_top_of_measure_eq_top_pos - theorem measure_theory.lintegral_in_measure_zero + theorem measure_theory.set_lintegral_empty + theorem measure_theory.set_lintegral_eq_const + theorem measure_theory.set_lintegral_measure_zero + theorem measure_theory.set_lintegral_univ 2021-09-10 07:18:22 ae86776 feat(measure_theory/measure/vector_measure): define mutually singular for vector measures (#8896) ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean + theorem measure_theory.signed_measure.absolutely_continuous_ennreal_iff - theorem measure_theory.signed_measure.absolutely_continuous_iff + theorem measure_theory.signed_measure.mutually_singular_ennreal_iff + theorem measure_theory.signed_measure.mutually_singular_iff + theorem measure_theory.signed_measure.null_of_total_variation_zero Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.vector_measure.mutually_singular.add_left + theorem measure_theory.vector_measure.mutually_singular.add_right + theorem measure_theory.vector_measure.mutually_singular.mk + theorem measure_theory.vector_measure.mutually_singular.smul_left + theorem measure_theory.vector_measure.mutually_singular.smul_right + theorem measure_theory.vector_measure.mutually_singular.symm + theorem measure_theory.vector_measure.mutually_singular.zero_left + theorem measure_theory.vector_measure.mutually_singular.zero_right + def measure_theory.vector_measure.mutually_singular 2021-09-10 02:16:47 aec02d8 chore(scripts): update nolints.txt (#9126) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-09-09 20:12:35 4d88ae8 feat(tactic/lint): better fails_quickly linter (#8932) This linter catches a lot more loops. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/tactic/lint/type_classes.lean Modified test/lint.lean Modified test/lint_coe_t.lean 2021-09-09 17:58:39 138d98b feat(ring_theory/mv_polynomial): linear_independent_X (#9118) ESTIMATED CHANGES Modified src/ring_theory/mv_polynomial/basic.lean + theorem mv_polynomial.linear_independent_X 2021-09-09 16:13:53 b9fcf9b feat(linear_algebra/matrix/nonsingular_inverse): adjugate_mul_distrib (#8682) We prove that the adjugate of a matrix distributes over the product. To do so, a separate file `linear_algebra.matrix.polynomial` states some general facts about the polynomial `det (t I + A)`. ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.adjugate_mul_distrib + theorem matrix.adjugate_pow Added src/linear_algebra/matrix/polynomial.lean + theorem polynomial.coeff_det_X_add_C_card + theorem polynomial.coeff_det_X_add_C_zero + theorem polynomial.leading_coeff_det_X_one_add_C + theorem polynomial.nat_degree_det_X_add_C_le 2021-09-09 14:10:32 2331607 feat(group_theory/sub{monoid,group}): pointwise actions on `add_sub{monoid,group}`s and `sub{monoid,group,module,semiring,ring,algebra}`s (#8945) This adds the pointwise actions characterized by `↑(m • S) = (m • ↑S : set R)` on: * `submonoid` * `subgroup` * `add_submonoid` * `add_subgroup` * `submodule` ([Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Lost.20instance/near/249467913)) * `subsemiring` * `subring` * `subalgebra` within the locale `pointwise` (which must be open to state the RHS of the characterization above anyway). ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.coe_pointwise_smul + theorem subalgebra.map_id + theorem subalgebra.map_map + theorem subalgebra.pointwise_smul_to_submodule + theorem subalgebra.pointwise_smul_to_subring + theorem subalgebra.pointwise_smul_to_subsemiring + theorem subalgebra.smul_mem_pointwise_smul Modified src/algebra/group_ring_action.lean + theorem subring.coe_pointwise_smul + theorem subring.pointwise_smul_to_add_subgroup + theorem subring.pointwise_smul_to_subsemiring + theorem subring.smul_mem_pointwise_smul + theorem subsemiring.coe_pointwise_smul + theorem subsemiring.pointwise_smul_to_add_submonoid + theorem subsemiring.smul_mem_pointwise_smul Modified src/group_theory/group_action/defs.lean + def mul_distrib_mul_action.to_monoid_End - theorem mul_distrib_mul_action.to_monoid_hom_one Modified src/group_theory/subgroup.lean + theorem add_subgroup.coe_pointwise_smul + theorem add_subgroup.pointwise_smul_to_add_submonoid + theorem add_subgroup.smul_mem_pointwise_smul + theorem subgroup.coe_pointwise_smul + theorem subgroup.pointwise_smul_to_submonoid + theorem subgroup.smul_mem_pointwise_smul Modified src/group_theory/submonoid/operations.lean + theorem add_submonoid.coe_pointwise_smul + theorem add_submonoid.smul_mem_pointwise_smul + theorem submonoid.coe_pointwise_smul + theorem submonoid.smul_mem_pointwise_smul Modified src/linear_algebra/basic.lean + theorem submodule.coe_pointwise_smul + theorem submodule.pointwise_smul_to_add_subgroup + theorem submodule.pointwise_smul_to_add_submonoid + theorem submodule.smul_le_self_of_tower + theorem submodule.smul_mem_pointwise_smul 2021-09-09 12:54:22 1825671 feat(ring_theory/unique_factorization_domain): add lemma that a member of `factors a` divides `a` (#9108) ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.dvd_of_mem_factors 2021-09-09 09:36:30 e597b75 feat(algebra/algebra/subalgebra): mem_under (#9107) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.mem_under 2021-09-09 09:36:29 694da7e feat(ring_theory): the surjective image of a PID is a PID (#9069) If the preimage of an ideal/submodule under a surjective map is principal, so is the original ideal. Therefore, the image of a principal ideal domain under a surjective ring hom is again a PID. ESTIMATED CHANGES Modified src/ring_theory/principal_ideal_domain.lean + theorem ideal.is_principal.of_comap + theorem ideal.span_singleton_generator + theorem is_principal_ideal_ring.of_surjective + theorem submodule.is_principal.of_comap 2021-09-09 09:36:28 1356397 refactor(linear_algebra/*): linear_equiv.of_bijective over semirings (#9061) `linear_equiv.of_injective` and `linear_equiv.of_bijective` took as assumption `f.ker = \bot`, which is equivalent to injectivity of `f` over rings, but not over semirings. This PR changes the assumption to `injective f`. For reasons of symmetry, the surjectivity assumption is also switched to `surjective f`. As a consequence, this PR also renames: * `linear_equiv_of_ker_eq_bot` to `linear_equiv_of_injective` * `linear_equiv_of_ker_eq_bot_apply` to `linear_equiv_of_injective_apply` ESTIMATED CHANGES Modified src/algebra/category/Module/subobject.lean Modified src/algebra/lie/subalgebra.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/linear_algebra/basic.lean +/- def linear_equiv.arrow_congr +/- theorem linear_equiv.arrow_congr_apply +/- theorem linear_equiv.arrow_congr_symm_apply +/- theorem linear_equiv.of_injective_apply Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.nondegenerate.ker_eq_bot Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean +/- theorem linear_equiv.coe_of_injective_endo +/- theorem linear_equiv.of_injective_endo_left_inv +/- theorem linear_equiv.of_injective_endo_right_inv + theorem linear_map.linear_equiv_of_injective_apply - theorem linear_map.linear_equiv_of_ker_eq_bot_apply Modified src/linear_algebra/free_module_pid.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/linear_algebra/projection.lean Modified src/ring_theory/noetherian.lean 2021-09-09 07:32:09 f6ccb6b chore(ring_theory/polynomial/cyclotomic): golf+remove `nontrivial` (#9090) ESTIMATED CHANGES Modified src/ring_theory/polynomial/cyclotomic.lean - theorem cyclotomic.irreducible - theorem cyclotomic_eq_minpoly - theorem minpoly_primitive_root_dvd_cyclotomic + theorem polynomial.cyclotomic.irreducible +/- theorem polynomial.cyclotomic_eq_X_pow_sub_one_div +/- theorem polynomial.cyclotomic_eq_geom_sum + theorem polynomial.cyclotomic_eq_minpoly +/- theorem polynomial.eq_cyclotomic_iff + theorem polynomial.int_coeff_of_cyclotomic' - theorem polynomial.int_coeff_of_cyclotomic + theorem polynomial.minpoly_primitive_root_dvd_cyclotomic 2021-09-09 07:32:08 90475a9 refactor(data/matrix): put std_basis_matrix in its own file (#9088) The authors here are recovered from the git history. I've avoided the temptation to generalize typeclasses in this PR; the lemmas are copied to this file unmodified. ESTIMATED CHANGES Modified src/data/matrix/basic.lean - theorem matrix.matrix_eq_sum_std_basis - theorem matrix.smul_std_basis_matrix - theorem matrix.std_basis_eq_basis_mul_basis - def matrix.std_basis_matrix - theorem matrix.std_basis_matrix_add - theorem matrix.std_basis_matrix_zero Added src/data/matrix/basis.lean + theorem matrix.matrix_eq_sum_std_basis + theorem matrix.smul_std_basis_matrix + theorem matrix.std_basis_eq_basis_mul_basis + def matrix.std_basis_matrix + theorem matrix.std_basis_matrix_add + theorem matrix.std_basis_matrix_zero Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/polynomial_algebra.lean 2021-09-09 07:32:07 9568977 fix(group_theory/group_action): generalize assumptions on `ite_smul` and `smul_ite` (#9085) ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean 2021-09-09 07:32:06 3e10324 feat(data/polynomial/taylor): Taylor expansion of polynomials (#9000) ESTIMATED CHANGES Modified src/data/polynomial/hasse_deriv.lean Added src/data/polynomial/taylor.lean + theorem polynomial.eq_zero_of_hasse_deriv_eq_zero + def polynomial.taylor + theorem polynomial.taylor_C + theorem polynomial.taylor_X + theorem polynomial.taylor_apply + theorem polynomial.taylor_coeff + theorem polynomial.taylor_coeff_one + theorem polynomial.taylor_coeff_zero + theorem polynomial.taylor_eval + theorem polynomial.taylor_eval_sub + theorem polynomial.taylor_injective + theorem polynomial.taylor_one 2021-09-09 06:19:13 e336caf chore(algebra/floor): add a trivial lemma (#9098) * add `nat_ceil_eq_zero`; * add `@[simp]` to `nat_ceil_le`. ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem nat_ceil_eq_zero +/- theorem nat_ceil_le 2021-09-09 04:01:05 796efae feat(data/real/sqrt): `nnreal.coe_sqrt` and `nnreal.sqrt_eq_rpow` (#9025) Also rename a few lemmas: * `nnreal.mul_sqrt_self` -> `nnreal.mul_self_sqrt` to follow `real.mul_self_sqrt` * `real.sqrt_le` -> `real.sqrt_le_sqrt_iff` * `real.sqrt_lt` -> `real.sqrt_lt_sqrt_iff` and provide a few more for commodity: * `nnreal.sqrt_sq` * `nnreal.sq_sqrt` * `real.sqrt_lt_sqrt` * `real.sqrt_lt_sqrt_iff_of_pos` * `nnreal.sqrt_le_sqrt_iff` * `nnreal.sqrt_lt_sqrt_iff` Closes #8016 ESTIMATED CHANGES Modified archive/imo/imo2008_q3.lean Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/pow.lean + theorem nnreal.sqrt_eq_rpow +/- theorem real.sqrt_eq_rpow Modified src/analysis/special_functions/trigonometric.lean Modified src/data/real/sqrt.lean + theorem nnreal.mul_self_sqrt - theorem nnreal.mul_sqrt_self + theorem nnreal.sq_sqrt + theorem nnreal.sqrt_le_sqrt_iff + theorem nnreal.sqrt_lt_sqrt_iff + theorem nnreal.sqrt_sq + theorem real.coe_sqrt +/- theorem real.sq_sqrt - theorem real.sqrt_le + theorem real.sqrt_le_sqrt_iff - theorem real.sqrt_lt + theorem real.sqrt_lt_sqrt + theorem real.sqrt_lt_sqrt_iff + theorem real.sqrt_lt_sqrt_iff_of_pos 2021-09-09 02:59:19 15b6c56 refactor(category_theory/limits/types): Refactor filtered colimits. (#9100) - Rename `filtered_colimit.r` into `filtered_colimit.rel`, to match up with `quot.rel`, - Rename lemma `r_ge`, - Abstract out lemma `eqv_gen_quot_rel_of_rel` from later proof. ESTIMATED CHANGES Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.filtered_colimit.eqv_gen_quot_rel_of_rel +/- theorem category_theory.limits.types.filtered_colimit.is_colimit_eq_iff + theorem category_theory.limits.types.filtered_colimit.rel_of_quot_rel 2021-09-09 02:09:44 cfc6b48 chore(scripts): update nolints.txt (#9105) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-09-09 00:00:26 49cf386 feat(measure_theory/measure/vector_measure): add `absolutely_continuous.add` and `absolutely_continuous.smul` (#9086) ESTIMATED CHANGES Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.vector_measure.absolutely_continuous.add + theorem measure_theory.vector_measure.absolutely_continuous.neg_left + theorem measure_theory.vector_measure.absolutely_continuous.neg_right + theorem measure_theory.vector_measure.absolutely_continuous.smul + theorem measure_theory.vector_measure.absolutely_continuous.sub 2021-09-08 21:47:47 87e7a0c feat(linear_algebra/matrix): `M` maps some `v ≠ 0` to zero iff `det M = 0` (#9041) A result I have wanted for a long time: the two notions of a "singular" matrix are equivalent over an integral domain. Namely, a matrix `M` is singular iff it maps some nonzero vector to zero, which happens iff its determinant is zero. Here, I find such a `v` by going through the field of fractions, where everything is a lot easier because all injective endomorphisms are automorphisms. Maybe a bit overkill (and unsatisfying constructively), but it works and is a lot nicer to write out than explicitly finding an element of the kernel. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.dot_product_mul_vec + theorem matrix.dot_product_single + theorem matrix.mul_vec_smul + theorem matrix.single_dot_product + theorem matrix.vec_mul_smul + theorem ring_hom.map_dot_product + theorem ring_hom.map_mul_vec + theorem ring_hom.map_vec_mul Modified src/linear_algebra/bilinear_form.lean + theorem matrix.nondegenerate.to_bilin' Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.det_ne_zero_of_left_inverse + theorem matrix.det_ne_zero_of_right_inverse + theorem matrix.eq_zero_of_mul_vec_eq_zero + theorem matrix.eq_zero_of_vec_mul_eq_zero + theorem matrix.nondegenerate.eq_zero_of_ortho + theorem matrix.nondegenerate.exists_not_ortho_of_ne_zero + def matrix.nondegenerate +/- theorem matrix.nondegenerate_of_det_ne_zero Modified src/linear_algebra/matrix/to_lin.lean + theorem matrix.ker_to_lin'_eq_bot_iff Modified src/linear_algebra/matrix/to_linear_equiv.lean + theorem matrix.exists_mul_vec_eq_zero_iff + theorem matrix.exists_mul_vec_eq_zero_iff_aux + theorem matrix.exists_vec_mul_eq_zero_iff + theorem matrix.nondegenerate_iff_det_ne_zero 2021-09-08 21:02:02 ab0a295 feat(linear_algebra/matrix): some bounds on the determinant of matrices (#9029) This PR shows that matrices with bounded entries also have bounded determinants. `matrix.det_le` is the most generic version of these results, which we specialise in two steps to `matrix.det_sum_smul_le`. In a follow-up PR we will connect this to `algebra.left_mul_matrix` to provide an upper bound on `algebra.norm`. ESTIMATED CHANGES Added src/linear_algebra/matrix/absolute_value.lean + theorem matrix.det_le + theorem matrix.det_sum_le + theorem matrix.det_sum_smul_le 2021-09-08 17:50:43 4222c32 lint(testing/slim_check/*): break long lines (#9091) ESTIMATED CHANGES Modified src/testing/slim_check/gen.lean Modified src/testing/slim_check/testable.lean +/- def slim_check.minimize +/- def slim_check.minimize_aux +/- def slim_check.testable.check 2021-09-08 17:50:42 56a59d3 feat(data/polynomial/hasse_deriv): Hasse derivatives (#8998) ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + def polynomial.lsum Added src/data/polynomial/hasse_deriv.lean + theorem polynomial.factorial_smul_hasse_deriv + def polynomial.hasse_deriv + theorem polynomial.hasse_deriv_C + theorem polynomial.hasse_deriv_X + theorem polynomial.hasse_deriv_apply + theorem polynomial.hasse_deriv_apply_one + theorem polynomial.hasse_deriv_coeff + theorem polynomial.hasse_deriv_comp + theorem polynomial.hasse_deriv_monomial + theorem polynomial.hasse_deriv_mul + theorem polynomial.hasse_deriv_one' + theorem polynomial.hasse_deriv_one + theorem polynomial.hasse_deriv_zero' + theorem polynomial.hasse_deriv_zero 2021-09-08 17:50:41 42dda89 feat(ring_theory/discrete_valuation_ring): is_Hausdorff (#8994) Discrete valuation rings are Hausdorff in the algebraic sense that the intersection of all powers of the maximal ideal is 0. ESTIMATED CHANGES Modified src/ring_theory/discrete_valuation_ring.lean + theorem irreducible.add_val_pow + theorem irreducible.maximal_ideal_eq 2021-09-08 16:06:33 f4f1cd3 feat(algebra/module/ordered): simple `smul` lemmas (#9077) These are the negative versions of the lemmas in `ordered_smul`, which suggests that both files should be merged. Note however that, contrary to those, they need `module k M` instead of merely `smul_with_zero k M`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem neg_smul_neg Modified src/algebra/module/ordered.lean + theorem eq_of_smul_eq_smul_of_neg_of_le + theorem lt_of_smul_lt_smul_of_nonpos + theorem lt_smul_iff_of_neg +/- theorem smul_le_smul_iff_of_neg + theorem smul_le_smul_of_nonpos + theorem smul_lt_iff_of_neg + theorem smul_lt_smul_iff_of_neg + theorem smul_lt_smul_of_neg + theorem smul_neg_iff_of_neg + theorem smul_neg_iff_of_pos + theorem smul_pos_iff_of_neg Modified src/algebra/ordered_smul.lean + theorem lt_smul_iff_of_pos 2021-09-08 16:06:31 76ab749 feat(analysis/normed_space/operator_norm): variants of continuous_linear_map.lsmul and their properties (#8984) ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.norm_to_span_singleton + theorem continuous_linear_map.to_span_singleton_add + theorem continuous_linear_map.to_span_singleton_apply + theorem continuous_linear_map.to_span_singleton_smul' + theorem continuous_linear_map.to_span_singleton_smul 2021-09-08 14:01:04 146dddc feat(measure_theory/group/arithmetic): add more to_additive attributes for actions (#9032) Introduce additivised versions of some more smul classes and corresponding instances and lemmas for different types of (measurable) additive actions. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean - theorem pi.vadd_apply Modified src/algebra/module/pi.lean +/- theorem pi.smul_apply Modified src/measure_theory/group/arithmetic.lean Modified src/measure_theory/measure/haar.lean + theorem measure_theory.measure.add_haar_measure_apply 2021-09-08 14:01:03 99b70d9 feat(data/(fin)set/basic): `image` and `mem` lemmas (#9031) I rename `set.mem_image_of_injective` to `function.injective.mem_set_image_iff` to allow dot notation and fit the new `function.injective.mem_finset_image_iff`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem function.injective.mem_finset_image Modified src/data/set/basic.lean + theorem function.injective.mem_set_image - theorem set.mem_image_of_injective + theorem subsingleton.mem_iff_nonempty + theorem subtype.coe_image_of_subset Modified src/data/set/function.lean Modified src/data/set/lattice.lean + theorem set.disjoint_iff_subset_compl_left + theorem set.disjoint_iff_subset_compl_right Modified src/linear_algebra/affine_space/independent.lean 2021-09-08 14:01:01 3d31c2d chore(linear_algebra/affine_space/independent): allow dot notation on affine_independent (#8974) This renames a few lemmas to make dot notation on `affine_independent` possible. ESTIMATED CHANGES Modified src/analysis/convex/caratheodory.lean Modified src/geometry/euclidean/circumcenter.lean + theorem affine_independent.exists_unique_dist_eq - theorem euclidean_geometry.exists_unique_dist_eq_of_affine_independent Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_independent.affine_span_eq_of_le_of_card_eq_finrank_add_one + theorem affine_independent.affine_span_eq_top_of_card_eq_finrank_add_one + theorem affine_independent.affine_span_image_finset_eq_of_le_of_card_eq_finrank_add_one + theorem affine_independent.finrank_vector_span + theorem affine_independent.finrank_vector_span_image_finset + theorem affine_independent.vector_span_eq_of_le_of_card_eq_finrank_add_one + theorem affine_independent.vector_span_eq_top_of_card_eq_finrank_add_one + theorem affine_independent.vector_span_image_finset_eq_of_le_of_card_eq_finrank_add_one - theorem affine_span_eq_of_le_of_affine_independent_of_card_eq_finrank_add_one - theorem affine_span_eq_top_of_affine_independent_of_card_eq_finrank_add_one - theorem affine_span_image_finset_eq_of_le_of_affine_independent_of_card_eq_finrank_add_one - theorem finrank_vector_span_image_finset_of_affine_independent - theorem finrank_vector_span_of_affine_independent - theorem vector_span_eq_of_le_of_affine_independent_of_card_eq_finrank_add_one - theorem vector_span_eq_top_of_affine_independent_of_card_eq_finrank_add_one - theorem vector_span_image_finset_eq_of_le_of_affine_independent_of_card_eq_finrank_add_one Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent.affine_span_disjoint_of_disjoint + theorem affine_independent.comp_embedding + theorem affine_independent.exists_mem_inter_of_exists_mem_inter_affine_span + theorem affine_independent.not_mem_affine_span_diff + theorem affine_independent.of_set_of_injective - theorem affine_independent_embedding_of_affine_independent - theorem affine_independent_of_affine_independent_set_of_injective - theorem affine_independent_of_subset_affine_independent - theorem affine_independent_set_of_affine_independent - theorem affine_independent_subtype_of_affine_independent - theorem affine_span_disjoint_of_disjoint_of_affine_independent - theorem exists_mem_inter_of_exists_mem_inter_affine_span_of_affine_independent - theorem injective_of_affine_independent - theorem mem_affine_span_iff_mem_of_affine_independent - theorem not_mem_affine_span_diff_of_affine_independent 2021-09-08 14:00:59 7a2ccb6 feat(group_theory/group_action): Extract a smaller typeclass out of `mul_semiring_action` (#8918) This new typeclass, `mul_distrib_mul_action`, is satisfied by conjugation actions. This PR provides instances for: * `mul_aut` * `prod` of two types with a `mul_distrib_mul_action` * `pi` of types with a `mul_distrib_mul_action` * `units` of types with a `mul_distrib_mul_action` * `ulift` of types with a `mul_distrib_mul_action` * `opposite` of types with a `mul_distrib_mul_action` * `sub(monoid|group|semiring|ring)`s of types with a `mul_distrib_mul_action` * anything already satisfying a `mul_semiring_action` ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean - theorem list.smul_prod + def mul_distrib_mul_action.to_mul_equiv - theorem multiset.smul_prod + theorem smul_inv'' - theorem smul_inv' - theorem smul_mul' - theorem smul_pow - theorem smul_prod Modified src/algebra/module/pi.lean Modified src/algebra/module/ulift.lean Modified src/algebra/opposites.lean Modified src/algebra/polynomial/group_ring_action.lean Modified src/data/equiv/mul_add_aut.lean Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean Modified src/group_theory/group_action/basic.lean + theorem finset.smul_prod + theorem list.smul_prod + theorem multiset.smul_prod + theorem smul_pow Modified src/group_theory/group_action/defs.lean + def mul_distrib_mul_action.comp_hom + def mul_distrib_mul_action.to_monoid_hom + theorem mul_distrib_mul_action.to_monoid_hom_apply + theorem mul_distrib_mul_action.to_monoid_hom_one + theorem smul_div' + theorem smul_inv' + theorem smul_mul' Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/units.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/operations.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2021-09-08 14:00:58 4c7d95f feat(analysis/normed_space/inner_product): reflections API (#8884) Reflections, as isometries of an inner product space, were defined in #8660. In this PR, various elementary lemmas filling out the API: - Lemmas about reflection through a subspace K, of a point which is in (i) K itself; (ii) the orthogonal complement of K. - Lemmas relating the orthogonal projection/reflection on the `submodule.map` of a subspace, with the orthogonal projection/reflection on the original subspace. - Lemma characterizing the reflection in the trivial subspace. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem orthogonal_projection_eq_self_iff + theorem orthogonal_projection_map_apply + theorem reflection_bot + theorem reflection_eq_self_iff + theorem reflection_map + theorem reflection_map_apply + theorem reflection_mem_subspace_eq_self + theorem reflection_mem_subspace_orthogonal_complement_eq_neg + theorem reflection_mem_subspace_orthogonal_precomplement_eq_neg + theorem reflection_orthogonal_complement_singleton_eq_neg 2021-09-08 12:15:54 71df310 chore(*): remove instance binders in exists, for mathport (#9083) Per @digama0's request at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Instance.20binders.20in.20exists. Instance binders under an "Exists" aren't allowed in Lean4, so we're backport removing them. I've just turned relevant `[X]` binders into `(_ : X)` binders, and it seems to all still work. (i.e. the instance binders weren't actually doing anything). It turns out two of the problem binders were in `infi` or `supr`, not `Exists`, but I treated them the same way. ESTIMATED CHANGES Modified src/analysis/convex/caratheodory.lean Modified src/category_theory/abelian/pseudoelements.lean Modified src/category_theory/essentially_small.lean Modified src/combinatorics/hales_jewett.lean Modified src/group_theory/subgroup.lean Modified src/order/extension.lean Modified src/ring_theory/finiteness.lean +/- theorem algebra.finite_presentation.iff_quotient_mv_polynomial' +/- theorem algebra.finite_type.iff_quotient_mv_polynomial' Modified src/ring_theory/polynomial/dickson.lean Modified src/topology/metric_space/basic.lean 2021-09-08 12:15:53 3108153 feat(linear_algebra/affine_space/independent): homotheties preserve affine independence (#9070) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/independent.lean + theorem affine_equiv.affine_independent_iff + theorem affine_map.homothety_affine_independent_iff 2021-09-08 12:15:52 e4e07ea feat(ring_theory): `map f (span s) = span (f '' s)` (#9068) We already had this for submodules and linear maps, here it is for ideals and ring homs. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideal/basic.lean + theorem ideal.submodule_span_eq Modified src/ring_theory/ideal/operations.lean + theorem ideal.map_span Modified src/ring_theory/localization.lean 2021-09-08 12:15:50 aae2b37 feat(field_theory/separable): a finite field extension in char 0 is separable (#9066) ESTIMATED CHANGES Modified src/field_theory/separable.lean 2021-09-08 12:15:49 157e99d feat(ring_theory): PIDs are Dedekind domains (#9063) We had all the ingredients ready for a while, apparently I just forgot to PR the instance itself. Co-Authored-By: Ashvni Co-Authored-By: Filippo A. E. Nuccio ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean 2021-09-08 12:15:48 c3f2c23 feat(analysis/convex/basic): the affine image of the convex hull is the convex hull of the affine image (#9057) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem affine_map.image_convex_hull 2021-09-08 12:15:46 57a0789 chore(topology/order): relate Sup and Inf of topologies to `generate_from` (#9045) Since there is a Galois insertion between `generate_from : set (set α) → topological_space α` and the "forgetful functor" `topological_space α → set (set α)`, all kinds of lemmas about the interaction of `generate_from` and the ordering on topologies automatically follow. But it is hard to use the Galois insertion lemmas directly, because the Galois insertion is actually provided for the dual order on topologies, which confuses Lean. Here we re-state most of the Galois insertion API in this special case. ESTIMATED CHANGES Modified src/topology/order.lean + theorem generate_from_Inter + theorem generate_from_Inter_of_generate_from_eq_self + theorem generate_from_Union + theorem generate_from_Union_is_open + theorem generate_from_inter + theorem generate_from_sUnion + theorem generate_from_set_of_is_open + theorem generate_from_surjective + theorem generate_from_union + theorem generate_from_union_is_open + theorem is_open_implies_is_open_iff + theorem left_inverse_generate_from + theorem set_of_is_open_Sup + theorem set_of_is_open_injective + theorem set_of_is_open_sup + theorem set_of_is_open_supr 2021-09-08 12:15:45 a8c5c5a feat(algebra/module/basic): add `module.to_add_monoid_End` (#8968) I also removed `smul_add_hom_one` since it's a special case of the ring_hom. I figured I'd replace a `simp` with a `rw` when fixing `finsupp.to_free_abelian_group_comp_to_finsupp` for this removal. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + def module.to_add_monoid_End - theorem smul_add_hom_one Modified src/group_theory/free_abelian_group_finsupp.lean 2021-09-08 10:25:38 4e8d966 feat(algebra/subalgebra): add missing actions by and on subalgebras (#9081) For `S : subalgebra R A`, this adds the instances: * for actions on subalgebras (generalizing the existing `algebra R S`): * `module R' S` * `algebra R' S` * `is_scalar_tower R' R S` * for actions by subalgebras (generalizing the existing `algebra S α`): * `mul_action S α` * `smul_comm_class S α β` * `smul_comm_class α S β` * `is_scalar_tower S α β` * `has_faithful_scalar S α` * `distrib_mul_action S α` * `module S α` This also removes the commutativity requirement on `A` for the `no_zero_smul_divisors S A` instance. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean +/- theorem subalgebra.coe_algebra_map +/- theorem subalgebra.coe_smul + theorem subalgebra.smul_def 2021-09-08 10:25:37 585c5ad feat(data/finset): monotone maps preserve the maximum of a finset (#9035) ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.max'_image + theorem finset.min'_image 2021-09-08 08:23:11 fc75aea feat(topology/algebra/ordered): `{prod,pi}.order_closed_topology` (#9073) ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean 2021-09-08 08:23:10 8341d16 feat(linear_algebra/finite_dimensional): make finite_dimensional_bot an instance (#9053) This was previously made into a local instance in several places, but there appears to be no reason it can't be a global instance. cf discussion at #8884. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean Modified src/linear_algebra/finite_dimensional.lean - theorem finite_dimensional_bot - theorem subalgebra.finite_dimensional_bot 2021-09-08 08:23:08 b4a88e2 feat(data/equiv/derangements/basic): define derangements (#7526) This proves two formulas for the number of derangements on _n_ elements, and defines some combinatorial equivalences involving derangements on α and derangements on certain subsets of α. This proves Theorem 88 on Freek's list. ESTIMATED CHANGES Added src/combinatorics/derangements/basic.lean + def derangements.at_most_one_fixed_point_equiv_sum_derangements + def derangements.derangements_option_equiv_sigma_at_most_one_fixed_point + def derangements.derangements_recursion_equiv + def derangements.equiv.remove_none.fiber + theorem derangements.equiv.remove_none.fiber_none + theorem derangements.equiv.remove_none.fiber_some + theorem derangements.equiv.remove_none.mem_fiber + def derangements + def equiv.derangements_congr + theorem mem_derangements_iff_fixed_points_eq_empty Modified src/data/equiv/basic.lean + def equiv.sigma_option_equiv_of_some 2021-09-08 06:17:22 189fe5b feat(data/nat/enat): refactor coe from nat to enat (#9023) The coercion from nat to enat was defined to be enat.some. But another coercion could be inferred from the additive structure on enat, leading to confusing goals of the form `↑n = ↑n` where the two sides were not defeq. We now make the coercion inferred from the additive structure the default, even though it is not computable. A dedicated function `enat.some` is introduced, to be used whenever computability is important. ESTIMATED CHANGES Modified src/algebra/squarefree.lean Modified src/data/nat/enat.lean - theorem enat.coe_add + theorem enat.coe_coe_hom +/- def enat.coe_hom +/- theorem enat.coe_inj - theorem enat.coe_one - theorem enat.coe_zero +/- theorem enat.dom_coe + theorem enat.dom_of_le_coe +/- theorem enat.dom_of_le_some + theorem enat.dom_some +/- theorem enat.get_coe' +/- theorem enat.get_coe + theorem enat.get_eq_iff_eq_coe + theorem enat.get_eq_iff_eq_some +/- theorem enat.ne_top_iff + def enat.some + theorem enat.some_eq_coe +/- theorem enat.to_with_top_coe + theorem enat.to_with_top_some Modified src/data/nat/multiplicity.lean Modified src/data/polynomial/ring_division.lean Modified src/field_theory/separable.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/multiplicity.lean + theorem multiplicity.eq_coe_iff - theorem multiplicity.eq_some_iff Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/set_theory/cardinal.lean 2021-09-08 06:17:21 cef862d feat(ring_theory/noetherian): is_noetherian_of_range_eq_ker (#8988) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem submodule.map_sup_comap_of_surjective Modified src/order/modular_lattice.lean + theorem eq_of_le_of_inf_le_of_sup_le + theorem inf_lt_inf_of_lt_of_sup_le_sup +/- theorem is_modular_lattice.sup_inf_sup_assoc + theorem sup_lt_sup_of_lt_of_inf_le_inf + theorem well_founded_gt_exact_sequence + theorem well_founded_lt_exact_sequence Modified src/ring_theory/noetherian.lean + theorem is_noetherian_of_range_eq_ker 2021-09-08 06:17:20 4dc96e4 feat(group_theory/index): define the index of a subgroup (#8971) Defines `subgroup.index` and proves various divisibility properties. ESTIMATED CHANGES Modified src/group_theory/coset.lean +/- theorem subgroup.card_eq_card_quotient_mul_card_subgroup + def subgroup.quotient_equiv_prod_of_le' Added src/group_theory/index.lean + theorem subgroup.index_dvd_card + theorem subgroup.index_dvd_of_le + theorem subgroup.index_eq_card + theorem subgroup.index_eq_mul_of_le + theorem subgroup.index_mul_card Modified src/group_theory/quotient_group.lean + def quotient_group.quotient_bot 2021-09-08 06:17:19 ded0d64 feat(number_theory): define "admissible" absolute values (#8964) We say an absolute value `abv : absolute_value R ℤ` is admissible if it agrees with the Euclidean domain structure on R (see also `is_euclidean` in #8949), and large enough sets of elements in `R^n` contain two elements whose remainders are close together. Examples include `abs : ℤ → ℤ` and `card_pow_degree := λ (p : polynomial Fq), (q ^ p.degree : ℤ)`, where `Fq` is a finite field with `q` elements. (These two correspond to the number field and function field case respectively, in our proof that the class number of a global field is finite.) Proving these two are indeed admissible involves a lot of pushing values between `ℤ` and `ℝ`, but is otherwise not so exciting. ESTIMATED CHANGES Modified src/algebra/euclidean_absolute_value.lean Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.coe_lt_degree Added src/number_theory/class_number/admissible_abs.lean + theorem absolute_value.exists_partition_int Added src/number_theory/class_number/admissible_absolute_value.lean + theorem absolute_value.is_admissible.exists_approx + theorem absolute_value.is_admissible.exists_approx_aux + theorem absolute_value.is_admissible.exists_partition + structure absolute_value.is_admissible Added src/number_theory/class_number/admissible_card_pow_degree.lean + theorem polynomial.card_pow_degree_anti_archimedean + theorem polynomial.exists_approx_polynomial + theorem polynomial.exists_approx_polynomial_aux + theorem polynomial.exists_eq_polynomial + theorem polynomial.exists_partition_polynomial + theorem polynomial.exists_partition_polynomial_aux 2021-09-08 06:17:18 ec51460 feat(data/finset): define `finset.pimage` (#8907) ESTIMATED CHANGES Added src/data/finset/pimage.lean + theorem finset.coe_pimage + theorem finset.mem_pimage + def finset.pimage + theorem finset.pimage_congr + theorem finset.pimage_empty + theorem finset.pimage_eq_image_filter + theorem finset.pimage_inter + theorem finset.pimage_mono + theorem finset.pimage_some + theorem finset.pimage_subset + theorem finset.pimage_union + theorem part.coe_to_finset + theorem part.mem_to_finset + def part.to_finset + theorem part.to_finset_none + theorem part.to_finset_some Modified src/data/part.lean + theorem part.bind_of_mem + theorem part.eq_get_iff_mem + theorem part.get_eq_iff_mem +/- theorem part.get_or_else_none +/- theorem part.get_or_else_some +/- def part.map + theorem part.none_ne_some + theorem part.none_to_option +/- def part.restrict +/- theorem part.some_ne_none + theorem part.some_to_option Modified src/logic/basic.lean + theorem and.exists 2021-09-08 04:46:13 628969b chore(linear_algebra/basic): speed up slow decl (#9060) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean 2021-09-08 02:22:54 782a20a chore(scripts): update nolints.txt (#9079) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-09-07 23:04:14 dcd8782 feat(algebra/algebra): lemmas connecting `basis ι R A`, `no_zero_smul_divisors R A` and `injective (algebra_map R A)` (#9039) Additions: * `basis.algebra_map_injective` * `no_zero_smul_divisors.algebra_map_injective` * `no_zero_smul_divisors.iff_algebra_map_injective` Renamed: * `algebra.no_zero_smul_divisors.of_algebra_map_injective` → `no_zero_smul_divisors.of_algebra_map_injective` ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem algebra.no_zero_smul_divisors.of_algebra_map_injective + theorem no_zero_smul_divisors.algebra_map_injective + theorem no_zero_smul_divisors.iff_algebra_map_injective + theorem no_zero_smul_divisors.of_algebra_map_injective Modified src/ring_theory/algebra_tower.lean + theorem basis.algebra_map_injective 2021-09-07 21:34:33 50f5d8b docs(linear_algebra/bilinear_map): fix inconsistency in docstring (#9075) ESTIMATED CHANGES Modified src/linear_algebra/bilinear_map.lean 2021-09-07 21:34:32 b0b0a24 feat(data/int): absolute values and integers (#9028) We prove that an absolute value maps all `units ℤ` to `1`. I added a new file since there is no neat place in the import hierarchy where this fit (the meet of `algebra.algebra.basic` and `data.int.cast`). ESTIMATED CHANGES Added src/data/int/absolute_value.lean + theorem absolute_value.map_units_int + theorem absolute_value.map_units_int_cast + theorem absolute_value.map_units_int_smul 2021-09-07 19:33:39 fd453cf chore(data/set/basic): add some simp attrs (#9074) Also add `set.pairwise_on_union`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.diff_eq_self +/- theorem set.diff_inter_self +/- theorem set.diff_inter_self_eq_diff +/- theorem set.diff_self_inter + theorem set.pairwise_on_union + theorem set.pairwise_on_union_of_symmetric +/- theorem set.sep_subset 2021-09-07 16:31:29 463e753 feat(linear_algebra/finite_dimensional): generalisations to division_ring (#8822) I generalise a few results about finite dimensional modules from fields to division rings. Mostly this is me trying out @alexjbest's `generalisation_linter`. (review: it works really well, and is very helpful for finding the right home for lemmas, but it is slow). ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/field_theory/finite/polynomial.lean Modified src/linear_algebra/dimension.lean + theorem dim_eq_card_basis - theorem dim_of_ring +/- theorem dim_quotient_le + theorem dim_self Modified src/linear_algebra/finite_dimensional.lean - theorem finite_dimensional.dim_eq_card_basis +/- theorem finite_dimensional.finite_dimensional_of_finrank +/- theorem finite_dimensional.finrank_eq_dim - theorem finite_dimensional.finrank_of_field +/- theorem finite_dimensional.finrank_of_infinite_dimensional + theorem finite_dimensional.finrank_self +/- theorem finite_dimensional.of_finset_basis +/- def finite_dimensional Modified src/measure_theory/measure/hausdorff.lean 2021-09-07 15:17:24 9c886ff chore(ring_theory): typo fix (#9067) `principal_idea_ring` -> `principal_ideal_ring` ESTIMATED CHANGES Modified src/ring_theory/principal_ideal_domain.lean 2021-09-07 15:17:23 f8cfed4 feat(algebra/tropical/basic): define tropical semiring (#8864) Just the initial algebraic structures. Follow up PRs will provide these with a topology, prove that tropical polynomials can be interpreted as sums of affine maps, and further towards tropical geometry. ESTIMATED CHANGES Added src/algebra/tropical/basic.lean + theorem tropical.add_eq_iff + theorem tropical.add_eq_left + theorem tropical.add_eq_right + theorem tropical.add_eq_zero_iff + theorem tropical.add_pow + theorem tropical.add_self + theorem tropical.bit0 + theorem tropical.injective_trop + theorem tropical.injective_untrop + theorem tropical.le_zero + theorem tropical.left_inverse_trop + theorem tropical.mul_eq_zero_iff + theorem tropical.right_inverse_trop + theorem tropical.succ_nsmul + theorem tropical.surjective_trop + theorem tropical.surjective_untrop + def tropical.trop + theorem tropical.trop_add_def + theorem tropical.trop_coe_ne_zero + theorem tropical.trop_eq_iff_eq_untrop + def tropical.trop_equiv + theorem tropical.trop_equiv_coe_fn + theorem tropical.trop_equiv_symm_coe_fn + theorem tropical.trop_inj_iff + theorem tropical.trop_injective + theorem tropical.trop_mul_def + theorem tropical.trop_nsmul + def tropical.trop_order_iso + theorem tropical.trop_order_iso_coe_fn + theorem tropical.trop_order_iso_symm_coe_fn + def tropical.trop_rec + theorem tropical.trop_top + theorem tropical.trop_untrop + def tropical.untrop + theorem tropical.untrop_add + theorem tropical.untrop_div + theorem tropical.untrop_eq_iff_eq_trop + theorem tropical.untrop_inj_iff + theorem tropical.untrop_injective + theorem tropical.untrop_inv + theorem tropical.untrop_le_iff + theorem tropical.untrop_mul + theorem tropical.untrop_one + theorem tropical.untrop_pow + theorem tropical.untrop_trop + theorem tropical.untrop_zero + theorem tropical.zero_ne_trop_coe + def tropical 2021-09-07 13:48:09 eeb4bb6 feat(algebra/big_operators): absolute values and big operators (#9027) This PR extends `absolute_value.add_le` and `absolute_value.map_mul` to `finset.sum` and `finset.prod` respectively. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem absolute_value.map_prod + theorem absolute_value.sum_le 2021-09-07 11:06:56 6c8203f chore(linear_algebra/bilinear_map): split off new file from linear_algebra/tensor_product (#9054) The first part of linear_algebra/tensor_product consisted of some basics on bilinear maps that are not directly related to the construction of the tensor product. This PR moves them to a new file. ESTIMATED CHANGES Added src/linear_algebra/bilinear_map.lean + def linear_map.compl₂ + theorem linear_map.compl₂_apply + def linear_map.compr₂ + theorem linear_map.compr₂_apply + theorem linear_map.ext₂ + def linear_map.flip + theorem linear_map.flip_apply + theorem linear_map.flip_inj + theorem linear_map.ker_lsmul + def linear_map.lcomp + theorem linear_map.lcomp_apply + def linear_map.lflip + theorem linear_map.lflip_apply + def linear_map.llcomp + theorem linear_map.llcomp_apply + def linear_map.lsmul + theorem linear_map.lsmul_apply + theorem linear_map.lsmul_injective + theorem linear_map.map_add₂ + theorem linear_map.map_neg₂ + theorem linear_map.map_smul₂ + theorem linear_map.map_sub₂ + theorem linear_map.map_sum₂ + theorem linear_map.map_zero₂ + def linear_map.mk₂' + theorem linear_map.mk₂'_apply + def linear_map.mk₂ + theorem linear_map.mk₂_apply Modified src/linear_algebra/tensor_product.lean - def linear_map.compl₂ - theorem linear_map.compl₂_apply - def linear_map.compr₂ - theorem linear_map.compr₂_apply - theorem linear_map.ext₂ - def linear_map.flip - theorem linear_map.flip_apply - theorem linear_map.flip_inj - theorem linear_map.ker_lsmul - def linear_map.lcomp - theorem linear_map.lcomp_apply - def linear_map.lflip - theorem linear_map.lflip_apply - def linear_map.llcomp - theorem linear_map.llcomp_apply - def linear_map.lsmul - theorem linear_map.lsmul_apply - theorem linear_map.lsmul_injective - theorem linear_map.map_add₂ - theorem linear_map.map_neg₂ - theorem linear_map.map_smul₂ - theorem linear_map.map_sub₂ - theorem linear_map.map_sum₂ - theorem linear_map.map_zero₂ - def linear_map.mk₂' - theorem linear_map.mk₂'_apply - def linear_map.mk₂ - theorem linear_map.mk₂_apply 2021-09-07 11:06:55 0508c7b feat(analysis/specific_limits): add `set.countable.exists_pos_has_sum_le` (#9052) Add versions of `pos_sum_of_encodable` for countable sets. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem set.countable.exists_pos_forall_sum_le + theorem set.countable.exists_pos_has_sum_le 2021-09-07 11:06:54 98942ab feat(ring_theory): non-zero divisors are not zero (#9043) I'm kind of suprised we didn't have this before! ESTIMATED CHANGES Modified src/ring_theory/non_zero_divisors.lean + theorem non_zero_divisors.coe_ne_zero + theorem non_zero_divisors.ne_zero 2021-09-07 11:06:53 812ff38 docs(algebra/ordered_ring): add module docstring (#9030) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean 2021-09-07 11:06:52 a84b538 feat(algebra/algebra/subalgebra): inclusion map of subalgebras (#9013) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.coe_inclusion + def subalgebra.inclusion + theorem subalgebra.inclusion_inclusion + theorem subalgebra.inclusion_injective + theorem subalgebra.inclusion_right + theorem subalgebra.inclusion_self 2021-09-07 11:06:51 d69c12e feat(ring_theory/ideal/local_ring): residue field is an algebra (#8991) Also, the kernel of a surjective map to a field is equal to the unique maximal ideal. ESTIMATED CHANGES Modified src/ring_theory/ideal/local_ring.lean + theorem local_ring.ker_eq_maximal_ideal 2021-09-07 11:06:50 58a8853 doc(data/list/*): Add missing documentation (#8867) Fixing the missing module docstrings in `data/list`, as well as documenting some `def`s and `theorem`s. ESTIMATED CHANGES Modified src/data/list/alist.lean Modified src/data/list/func.lean Modified src/data/list/of_fn.lean +/- theorem list.length_of_fn_aux +/- theorem list.nth_of_fn_aux Modified src/data/list/perm.lean Modified src/data/list/sigma.lean 2021-09-07 11:06:49 d366eb3 feat(ring_theory/ideal/operations): add some theorems about taking the quotient of a ring by a sum of ideals (#8668) The aim of this section is to prove that if `I, J` are ideals of the ring `R`, then the quotients `R/(I+J)` and `(R/I)/J'`are isomorphic, where `J'` is the image of `J` in `R/I`. ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + def ideal.quotient.factor + theorem ideal.quotient.factor_comp_mk + theorem ideal.quotient.factor_mk Modified src/ring_theory/ideal/operations.lean + theorem double_quot.ker_quot_left_to_quot_sup + theorem double_quot.ker_quot_quot_mk + def double_quot.lift_sup_quot_quot_mk + def double_quot.quot_left_to_quot_sup + def double_quot.quot_quot_equiv_quot_sup + def double_quot.quot_quot_mk + def double_quot.quot_quot_to_quot_sup + theorem ideal.ker_quotient_lift + theorem ideal.map_eq_iff_sup_ker_eq_of_surjective + theorem ideal.map_mk_eq_bot_of_le 2021-09-07 08:01:11 d0c02bc feat(order/filter/basic): add `supr_inf_principal` and `tendsto_supr` (#9051) Also golf a few proofs ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.supr_inf_principal 2021-09-07 08:01:09 6b0c73a chore(analysis/normed_space): add `dist_sum_sum_le` (#9049) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem dist_sum_sum_le + theorem dist_sum_sum_le_of_le 2021-09-07 08:01:08 3fdfc8e chore(data/bool): add a few lemmas about inequalities and `band`/`bor` (#9048) ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.band_le_left + theorem bool.band_le_right + theorem bool.bor_le + theorem bool.le_band + theorem bool.le_iff_imp + theorem bool.left_le_bor + theorem bool.right_le_bor 2021-09-07 08:01:07 c4f3707 chore(scripts): update nolints.txt (#9047) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-09-07 05:56:36 77f4ed4 docs(set_theory/lists): add module docstring and def docstrings (#8967) ESTIMATED CHANGES Modified src/set_theory/lists.lean 2021-09-07 05:56:34 0c19d5f feat(topology/uniform_space/basic): add corollary of Lebesgue number lemma `lebesgue_number_of_compact_open` (#8963) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem is_open_iff_open_ball_subset + theorem lebesgue_number_of_compact_open 2021-09-07 05:56:33 a7be93b feat(data/matrix/hadamard): add the Hadamard product (#8956) ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.diagonal_conj_transpose Added src/data/matrix/hadamard.lean + theorem matrix.add_hadamard + theorem matrix.diagonal_hadamard_diagonal + theorem matrix.dot_product_vec_mul_hadamard + def matrix.hadamard + theorem matrix.hadamard_add + theorem matrix.hadamard_assoc + theorem matrix.hadamard_comm + theorem matrix.hadamard_one + theorem matrix.hadamard_smul + theorem matrix.hadamard_zero + theorem matrix.one_hadamard + theorem matrix.smul_hadamard + theorem matrix.sum_hadamard_eq + theorem matrix.zero_hadamard 2021-09-07 05:56:32 91824e5 feat(group_theory/subgroup): Normal Core (#8940) Defines normal core, and proves lemmas analogous to those for normal closure. ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem subgroup.normal_core_eq_ker Modified src/group_theory/subgroup.lean + def subgroup.normal_core + theorem subgroup.normal_core_eq_self + theorem subgroup.normal_core_eq_supr + theorem subgroup.normal_core_idempotent + theorem subgroup.normal_core_le + theorem subgroup.normal_core_mono + theorem subgroup.normal_le_normal_core 2021-09-07 05:56:31 298f231 feat(*): trivial lemmas from #8903 (#8909) ESTIMATED CHANGES Modified src/algebra/module/pi.lean + theorem pi.single_smul'' Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.lsmul_apply Modified src/data/part.lean Modified src/data/subtype.lean Modified src/order/bounded_lattice.lean + theorem symmetric_disjoint Modified src/order/filter/basic.lean + theorem filter.tendsto_supr Modified src/topology/algebra/monoid.lean 2021-09-07 05:56:30 5b29630 chore(linear_algebra/tensor_product): remove `@[ext]` tag from `tensor_product.mk_compr₂_inj` (#8868) This PR removes the `@[ext]` tag from `tensor_product.mk_compr₂_inj` and readds it locally only where it is needed. This is a workaround for the issue discussed [in this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/odd.20repeated.20type.20class.20search): basically, when `ext` tries to apply this lemma to linear maps, it fails only after a very long typeclass search. While this problem is already present to some extent in current mathlib, it is exacerbated by the [upcoming generalization of linear maps to semilinear maps](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Semilinear.20maps). In addition to this change, a few individual uses of `ext` have been replaced by a manual application of the relevant ext lemma(s) for performance reasons. For discoverability, the lemma `tensor_product.mk_compr₂_inj` is renamed to `tensor_product.ext` and the former `tensor_product.ext` to `tensor_product.ext'`. ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Module/limits.lean Modified src/algebra/category/Module/monoidal.lean Modified src/algebra/category/Module/subobject.lean Modified src/algebra/lie/tensor_product.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/direct_sum/tensor_product.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.ext' +/- theorem tensor_product.ext - theorem tensor_product.mk_compr₂_inj Modified src/representation_theory/maschke.lean Modified src/ring_theory/tensor_product.lean 2021-09-07 03:50:01 ceb9da6 feat(analysis/convex/caratheodory): strengthen Caratheodory's lemma to provide affine independence (#8892) The changes here are: - Use hypothesis `¬ affine_independent ℝ (coe : t → E)` instead of `finrank ℝ E + 1 < t.card` - Drop no-longer-necessary `[finite_dimensional ℝ E]` assumption - Do not use a shrinking argument but start by choosing an appropriate subset of minimum cardinality via `min_card_finset_of_mem_convex_hull` - Provide a single alternative form of Carathéodory's lemma `eq_pos_convex_span_of_mem_convex_hull` - In the alternate form, define the explicit linear combination using elements parameterised by a new `fintype` rather than on the entire ambient space `E` (we thus avoid the issue of junk values outside of the relevant subset) ESTIMATED CHANGES Modified src/analysis/convex/caratheodory.lean + theorem caratheodory.affine_independent_min_card_finset_of_mem_convex_hull +/- theorem caratheodory.mem_convex_hull_erase + theorem caratheodory.mem_min_card_finset_of_mem_convex_hull + theorem caratheodory.min_card_finset_of_mem_convex_hull_card_le_card + theorem caratheodory.min_card_finset_of_mem_convex_hull_nonempty + theorem caratheodory.min_card_finset_of_mem_convex_hull_subseteq - theorem caratheodory.shrink' - theorem caratheodory.shrink - theorem caratheodory.step +/- theorem convex_hull_eq_union - theorem convex_hull_subset_union - theorem eq_center_mass_card_le_dim_succ_of_mem_convex_hull - theorem eq_pos_center_mass_card_le_dim_succ_of_mem_convex_hull + theorem eq_pos_convex_span_of_mem_convex_hull Modified src/linear_algebra/affine_space/independent.lean + theorem exists_nontrivial_relation_sum_zero_of_not_affine_ind 2021-09-07 03:49:59 5eb1918 feat(group_theory/perm/concrete_cycle): is_cycle_form_perm (#8859) ESTIMATED CHANGES Added src/group_theory/perm/concrete_cycle.lean + theorem list.cycle_of_form_perm + theorem list.cycle_type_form_perm + theorem list.form_perm_apply_mem_eq_next + theorem list.form_perm_disjoint_iff + theorem list.is_cycle_form_perm + theorem list.pairwise_same_cycle_form_perm Modified src/group_theory/perm/list.lean - theorem list.form_perm_apply_not_mem + theorem list.form_perm_eq_self_of_not_mem - theorem list.form_perm_ne_self_imp_mem + theorem list.mem_of_form_perm_ne_self 2021-09-07 03:49:58 f157b6d feat(linear_algebra): introduce notation for `linear_map.comp` and `linear_equiv.trans` (#8857) This PR introduces new notation for the composition of linear maps and linear equivalences: `∘ₗ` denotes `linear_map.comp` and `≫ₗ` denotes `linear_equiv.trans`. This will be needed by an upcoming PR generalizing linear maps to semilinear maps (see discussion [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Semilinear.20maps)): in some places, we need to help the elaborator a bit by telling it that we are composing plain linear maps/equivs as opposed to semilinear ones. We have not made the change systematically throughout the library, only in places where it is needed in our semilinear maps branch. ESTIMATED CHANGES Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/monoidal.lean Modified src/algebra/lie/base_change.lean Modified src/algebra/lie/tensor_product.lean Modified src/algebra/lie/weights.lean Modified src/algebra/module/linear_map.lean Modified src/analysis/convex/cone.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/linear_algebra/basis.lean +/- def basis.coord Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_module_pid.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/linear_algebra/projection.lean Modified src/linear_algebra/std_basis.lean Modified src/linear_algebra/tensor_product.lean Modified src/linear_algebra/trace.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/noetherian.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.coe_comp 2021-09-07 03:49:57 d262500 feat(group_theory/nilpotent): add antimono and functorial lemma for lower central series (#8853) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem lower_central_series.map + theorem lower_central_series_antimono 2021-09-07 03:49:56 f0f6c1c feat(tactic/lint): reducible non-instance linter (#8540) * This linter checks that if an instances uses a non-instance with as type a class, the non-instances is reducible. * There are many false positives to this rule, which we probably want to allow (that are unlikely to cause problems). To cut down on the many many false positives, the linter currently only consider classes that have either an `add` or a `mul` field. Maybe we want to also include order-structures, but there are (for example) a bunch of `complete_lattice` structures that are derived using Galois insertions that haven't ever caused problems (I think). ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/hierarchy_design.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/type_classes.lean 2021-09-07 01:49:05 d6a1fc0 feat(algebra/ordered_monoid): correct definition (#8877) Our definition of `ordered_monoid` is not the usual one, and this PR corrects that. The standard definition just says ``` (mul_le_mul_left : ∀ a b : α, a ≤ b → ∀ c : α, c * a ≤ c * b) ``` while we currently have an extra axiom ``` (lt_of_add_lt_add_left : ∀ a b c : α, a + b < a + c → b < c) ``` (This was introduced in ancient times, https://github.com/leanprover-community/mathlib/commit/7d8e3f3a6de70da504406727dbe7697b2f7a62ee, with no indication of where the definition came from. I couldn't find it in other sources.) As @urkud pointed out a while ago [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/ordered_comm_monoid), these really are different. The second axiom *does* automatically hold for cancellative ordered monoids, however. This PR simply drops the axiom. In practice this causes no harm, because all the interesting examples are cancellative. There's a little bit of cleanup to do. In `src/algebra/ordered_sub.lean` four lemmas break, so I just added the necessary `[contravariant_class _ _ (+) (<)]` hypothesis. These lemmas aren't currently used in mathlib, but presumably where they are needed this typeclass will be available. ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean - theorem ex_L.lt_of_add_lt_add_left Modified counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean Modified src/algebra/ordered_monoid.lean + theorem ordered_cancel_comm_monoid.lt_of_mul_lt_mul_left Modified src/algebra/ordered_sub.lean +/- theorem lt_of_sub_lt_sub_left_of_le +/- theorem sub_lt_sub_iff_left_of_le_of_le Modified src/algebra/punit_instances.lean Modified src/data/multiset/basic.lean Modified src/data/nat/enat.lean Modified src/data/real/nnreal.lean Modified src/set_theory/cardinal.lean 2021-09-07 00:33:29 ce31c1c feat(order/prime_ideal): prime ideals are maximal (#9004) Proved that in boolean algebras: 1. An ideal is prime iff it always contains one of x, x^c 2. A prime ideal is maximal ESTIMATED CHANGES Modified src/order/ideal.lean + theorem order.ideal.is_proper.not_mem_of_compl_mem + theorem order.ideal.is_proper.not_mem_or_compl_not_mem + theorem order.ideal.is_proper.top_not_mem Modified src/order/prime_ideal.lean + theorem order.ideal.is_prime_iff_mem_or_compl_mem + theorem order.ideal.is_prime_of_mem_or_compl_mem 2021-09-07 00:33:28 5431521 refactor(topology/sheaves/sheaf_condition): Generalize unique gluing API (#9002) Previously, the sheaf condition in terms of unique gluings has been defined only for type-valued presheaves. This PR generalizes this to arbitrary concrete categories, whose forgetful functor preserves limits and reflects isomorphisms (e.g. algebraic categories like `CommRing`). As a side effect, this solves a TODO in `structure_sheaf.lean`. ESTIMATED CHANGES Modified src/algebraic_geometry/structure_sheaf.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean +/- theorem Top.presheaf.sheaf_condition_equalizer_products.res_π Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean +/- def Top.presheaf.gluing - theorem Top.presheaf.res_π_apply + def Top.presheaf.sheaf_condition_equiv_sheaf_condition_unique_gluing_types - def Top.presheaf.sheaf_condition_of_sheaf_condition_unique_gluing + def Top.presheaf.sheaf_condition_of_sheaf_condition_unique_gluing_types +/- def Top.presheaf.sheaf_condition_unique_gluing - def Top.presheaf.sheaf_condition_unique_gluing_of_sheaf_condition + def Top.presheaf.sheaf_condition_unique_gluing_of_sheaf_condition_types Modified src/topology/sheaves/stalks.lean 2021-09-07 00:33:27 d472c56 feat(linear_algebra/affine_space/affine_equiv): affine homotheties as equivalences (#8983) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.coe_coe + theorem affine_equiv.coe_homothety_units_mul_hom_apply + theorem affine_equiv.coe_homothety_units_mul_hom_apply_symm + theorem affine_equiv.coe_homothety_units_mul_hom_eq_homothety_hom_coe + theorem affine_equiv.coe_mk + def affine_equiv.homothety_units_mul_hom Modified src/linear_algebra/affine_space/affine_map.lean 2021-09-06 21:09:20 309674d feat(linear_algebra/basis): a nontrivial module has nonempty bases (#9040) A tiny little lemma that guarantees the dimension of a nontrivial module is nonzero. Noticeably simplifies the proof that the dimension of a power basis is positive in this case. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.index_nonempty Modified src/ring_theory/power_basis.lean +/- theorem power_basis.dim_ne_zero 2021-09-06 21:09:19 3218c37 feat(linear_algebra/smodeq): sub_mem, eval (#8993) ESTIMATED CHANGES Modified src/linear_algebra/smodeq.lean + theorem smodeq.eval + theorem smodeq.sub_mem 2021-09-06 21:09:18 fde1fc2 feat(*): make more non-instances reducible (#8941) * Also add some docstrings to `cau_seq_completion`. * Related PR: #7835 ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/direct_limit.lean Modified src/algebra/group/defs.lean Modified src/algebra/module/basic.lean Modified src/category_theory/monoidal/skeleton.lean Modified src/data/real/cau_seq_completion.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/localization.lean 2021-09-06 17:52:24 bfcf73f feat(data/multiset/basic): Add a result on intersection of multiset with `repeat a n` (#9038) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.repeat_inf 2021-09-06 17:52:23 3148cfe feat(field_theory/algebraic_closure): polynomials in an algebraically closed fields have roots (#9037) ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean + theorem is_alg_closed.exists_root 2021-09-06 17:52:21 3a62419 chore(data/nat/mul_ind): make docgen happy (#9036) ESTIMATED CHANGES Modified src/data/nat/mul_ind.lean 2021-09-06 17:52:20 11284f2 feat(ring_theory): `y ≠ 0` in a UFD has finitely many divisors (#9034) This implies ideals in a Dedekind domain are contained in only finitely many larger ideals. ESTIMATED CHANGES Modified src/ring_theory/unique_factorization_domain.lean 2021-09-06 17:52:19 86dd706 feat(set/lattice): two lemmas about when sInter is empty (#9033) - Added sInter_eq_empty_iff - Added sInter_nonempty_iff ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.sInter_eq_empty_iff + theorem set.sInter_nonempty_iff 2021-09-06 17:52:18 98cbad7 chore(set_theory/pgame): add protected (#9022) Breaks #7843 into smaller PRs. These lemmas about `pgame` conflict with the ones for `game` when used in `calc` mode proofs, which confuses Lean. There is no way to use the lemmas for `game` (required for surreal numbers) without using `_root_` as `game` inherits these lemmas from its abelian group structure. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/winner.lean Modified src/set_theory/pgame.lean +/- theorem pgame.equiv_refl - theorem pgame.le_refl - theorem pgame.lt_irrefl - theorem pgame.ne_of_lt 2021-09-06 17:52:17 c83c22d feat(measure_theory/measure/vector_measure): zero is absolutely continuous wrt any vector measure (#9007) ESTIMATED CHANGES Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.vector_measure.absolutely_continuous.zero 2021-09-06 17:52:16 339c2c3 feat(linear_algebra/affine_space/independent): affine independence is preserved by affine maps (#9005) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.injective_iff_linear_injective Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent.map' + theorem affine_independent.of_comp + theorem affine_map.affine_independent_iff 2021-09-06 12:26:04 c2e6e62 feat(algebra/absolute_value): generalize a few results to `linear_ordered_ring`s (#9026) The proofs were copied literally from `is_absolute_value`, which was defined on fields, but we can generalize them to rings with only a few tweaks. ESTIMATED CHANGES Modified src/algebra/absolute_value.lean 2021-09-06 12:26:02 448f821 feat(algebra/pointwise): enable pointwise add_action (#9017) Just a little to_additive declaration ESTIMATED CHANGES Modified src/algebra/pointwise.lean 2021-09-06 12:26:01 f0c3f9e feat(linear_algebra/basic): surjective_of_iterate_surjective (#9006) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.surjective_of_iterate_surjective 2021-09-06 12:26:00 d16cb00 feat(linear_algebra/basic): of_le_injective (#8977) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.of_le_injective 2021-09-06 12:25:59 c0f01ee feat(data/fin): pos_iff_nonempty (#8975) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.pos_iff_nonempty 2021-09-06 12:25:58 de37a6a chore(field_theory/fixed): reuse existing `mul_semiring_action.to_alg_hom` by providing `smul_comm_class` (#8965) This removes `fixed_points.to_alg_hom` as this is really just a bundled form of `mul_semiring_action.to_alg_hom` + `mul_semiring_action.to_alg_hom_injective`, once we provide the missing `smul_comm_class`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem mul_semiring_action.to_alg_equiv_injective + theorem mul_semiring_action.to_alg_hom_injective Modified src/field_theory/fixed.lean - def fixed_points.to_alg_hom - theorem fixed_points.to_alg_hom_apply_apply 2021-09-06 12:25:57 2aebabc feat(topology/continuous_function/basic): add `continuous_map.Icc_extend` (#8952) ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean + def continuous_map.Icc_extend + theorem continuous_map.coe_Icc_extend 2021-09-06 12:25:55 773b45f feat(algebra/module/ordered): redefine `ordered_module` as `ordered_smul` (#8930) One would like to talk about `ordered_monoid R (with_top R)`, but the `module` constraint is too strict to allow this. The definition of `ordered_monoid` works if it is loosened to `has_scalar R M`. Most of the proofs that are part of its API need at most `smul_with_zero`. So it has been loosened to `smul_with_zero`, since a lawless `ordered_monoid` wouldn't do much. In the `ordered_field` portion, `module` has been loosened to `mul_action_with_zero`. `order_dual` instances of `smul` instances have also been generalized to better transmit. There are more generalizations possible, but seem out of scope for a single PR. Unfortunately, these generalizations exposed a gnarly misalignment between `prod.has_lt` and `prod.has_le`, which have incompatible definitions, when inferred through separate paths. In particular, the `lt` definition of generated by `prod.preorder` is different than the core `prod.has_lt`. Due to this, the `prod.ordered_monoid` instance has not been generalized. ESTIMATED CHANGES Modified src/algebra/algebra/ordered.lean Modified src/algebra/module/ordered.lean - theorem eq_of_smul_eq_smul_of_pos_of_le - theorem le_smul_iff_of_pos - theorem lt_of_smul_lt_smul_of_nonneg - theorem ordered_module.mk'' - theorem ordered_module.mk' - theorem smul_le_iff_of_pos +/- theorem smul_le_smul_iff_of_neg - theorem smul_le_smul_iff_of_pos - theorem smul_le_smul_of_nonneg - theorem smul_lt_iff_of_pos - theorem smul_lt_smul_iff_of_pos - theorem smul_lt_smul_of_pos - theorem smul_pos_iff_of_pos Added src/algebra/ordered_smul.lean + theorem eq_of_smul_eq_smul_of_pos_of_le + theorem le_smul_iff_of_pos + theorem lt_of_smul_lt_smul_of_nonneg + theorem ordered_smul.mk'' + theorem ordered_smul.mk' + theorem smul_le_iff_of_pos + theorem smul_le_smul_iff_of_pos + theorem smul_le_smul_of_nonneg + theorem smul_lt_iff_of_pos + theorem smul_lt_smul_iff_of_pos + theorem smul_lt_smul_of_pos + theorem smul_pos_iff_of_pos Modified src/algebra/star/chsh.lean Modified src/analysis/convex/basic.lean +/- theorem concave_on.concave_le +/- theorem concave_on.smul +/- theorem convex_on.convex_le +/- theorem convex_on.smul Modified src/analysis/convex/cone.lean - theorem convex_cone.to_ordered_module + theorem convex_cone.to_ordered_smul Modified src/analysis/convex/extrema.lean Modified src/data/complex/module.lean - theorem complex.complex_ordered_module + theorem complex.complex_ordered_smul Modified src/linear_algebra/affine_space/ordered.lean 2021-09-06 12:25:54 e8fff26 refactor(group_theory/*): Move Cauchy's theorem (#8916) Moves Cauchy's theorem from `sylow.lean` to `perm/cycle_type.lean`. Now `perm/cycle_type.lean` no longer depends on `sylow.lean`, and `p_group.lean` can use Cauchy's theorem (e.g. for equivalent characterizations of p-groups). ESTIMATED CHANGES Modified src/group_theory/p_group.lean Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.exists_prime_order_of_dvd_card + theorem equiv.perm.vectors_prod_eq_one.card + def equiv.perm.vectors_prod_eq_one.equiv_vector + theorem equiv.perm.vectors_prod_eq_one.mem_iff + theorem equiv.perm.vectors_prod_eq_one.one_eq + def equiv.perm.vectors_prod_eq_one.rotate + theorem equiv.perm.vectors_prod_eq_one.rotate_length + theorem equiv.perm.vectors_prod_eq_one.rotate_rotate + theorem equiv.perm.vectors_prod_eq_one.rotate_zero + def equiv.perm.vectors_prod_eq_one.vector_equiv + theorem equiv.perm.vectors_prod_eq_one.zero_eq + def equiv.perm.vectors_prod_eq_one Modified src/group_theory/sylow.lean - theorem sylow.exists_prime_order_of_dvd_card - theorem sylow.mem_vectors_prod_eq_one - theorem sylow.mem_vectors_prod_eq_one_iff - def sylow.mk_vector_prod_eq_one - theorem sylow.mk_vector_prod_eq_one_injective - theorem sylow.one_mem_fixed_points_rotate - theorem sylow.one_mem_vectors_prod_eq_one - def sylow.rotate_vectors_prod_eq_one - def sylow.vectors_prod_eq_one 2021-09-06 12:25:53 893c474 feat(group_theory/submonoid/membership): add log, exp lemmas (#8870) Breaking up a previous PR (#7843) into smaller ones. This PR adds lemmas about injectivity of `pow` and `log` functions under appropriate conditions. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.238870) ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean + def submonoid.log + theorem submonoid.log_pow_eq_self + theorem submonoid.log_pow_int_eq_self + def submonoid.pow + theorem submonoid.pow_log_eq_self + theorem submonoid.pow_right_injective_iff_pow_injective 2021-09-06 12:25:52 74373b8 feat(algebra/lattice_ordered_group): add basic theory of lattice ordered groups (#8673) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/field_power.lean Modified src/algebra/group/basic.lean + theorem div_mul_comm Added src/algebra/lattice_ordered_group.lean + theorem inf_mul_sup + theorem inv_inf_eq_sup_inv + theorem inv_sup_eq_inv_inf_inv + theorem lattice_ordered_comm_group.abs_div_sup_mul_abs_div_inf + theorem lattice_ordered_comm_group.inf_eq_div_pos_div + theorem lattice_ordered_comm_group.inv_le_abs + def lattice_ordered_comm_group.lattice_ordered_comm_group_to_distrib_lattice + theorem lattice_ordered_comm_group.le_mabs + theorem lattice_ordered_comm_group.m_Birkhoff_inequalities + theorem lattice_ordered_comm_group.m_le_iff_pos_le_neg_ge + theorem lattice_ordered_comm_group.m_le_neg + theorem lattice_ordered_comm_group.m_le_pos + theorem lattice_ordered_comm_group.m_neg_pos + theorem lattice_ordered_comm_group.m_pos_pos + theorem lattice_ordered_comm_group.m_pos_pos_id + theorem lattice_ordered_comm_group.mabs_idempotent + theorem lattice_ordered_comm_group.mabs_pos + theorem lattice_ordered_comm_group.mabs_pos_eq + theorem lattice_ordered_comm_group.mabs_triangle + def lattice_ordered_comm_group.mneg + def lattice_ordered_comm_group.mpos + theorem lattice_ordered_comm_group.mul_inf_eq_mul_inf_mul + theorem lattice_ordered_comm_group.neg_eq_inv_inf_one + theorem lattice_ordered_comm_group.neg_eq_pos_inv + theorem lattice_ordered_comm_group.pos_div_neg' + theorem lattice_ordered_comm_group.pos_eq_neg_inv + theorem lattice_ordered_comm_group.pos_inf_neg_eq_one + theorem lattice_ordered_comm_group.pos_inv_neg + theorem lattice_ordered_comm_group.pos_mul_neg + theorem lattice_ordered_comm_group.sup_div_inf_eq_abs_div + theorem lattice_ordered_comm_group.sup_eq_mul_pos_div + theorem lattice_ordered_comm_group.sup_sq_eq_mul_mul_abs_div + theorem lattice_ordered_comm_group.two_inf_eq_mul_div_abs_div + theorem mul_sup_eq_mul_sup_mul Modified src/algebra/ordered_group.lean - def abs + theorem abs_eq_max_neg + def mabs Modified src/algebra/ordered_ring.lean +/- theorem abs_eq_neg_self +/- theorem abs_eq_self Modified src/data/int/cast.lean Modified src/data/rat/cast.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.coe_abs Modified src/order/filter/filter_product.lean + theorem filter.germ.lattice_of_linear_order_eq_filter_germ_lattice Modified src/topology/continuous_function/algebra.lean Modified src/topology/metric_space/basic.lean 2021-09-06 11:10:12 c563692 feat(data/polynomial/eval): leval, eval as linear map (#8999) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/eval.lean + def polynomial.leval 2021-09-06 05:31:16 1f10390 lint(tactic/*): break long lines (#8973) For code lines, the fix was often simple, just break that damn line. For strings, you shouldn't break a line inside one as this will be a visible change to the tactic's output. When nothing else can be done, I used the trick of breaking the string into two appended strings. "A B" becomes "A" ++ " B", and that's line-breakable. ESTIMATED CHANGES Modified src/tactic/converter/interactive.lean Modified src/tactic/converter/old_conv.lean Modified src/tactic/core.lean Modified src/tactic/delta_instance.lean Modified src/tactic/fin_cases.lean Modified src/tactic/generalizes.lean Modified src/tactic/interactive.lean Modified src/tactic/interactive_expr.lean Modified src/tactic/interval_cases.lean Modified src/tactic/lean_core_docs.lean Modified src/tactic/linarith/elimination.lean Modified src/tactic/linarith/parsing.lean Modified src/tactic/linarith/preprocessing.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/push_neg.lean Modified src/tactic/slim_check.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/split_ifs.lean Modified src/tactic/squeeze.lean Modified src/tactic/tauto.lean Modified src/tactic/tidy.lean Modified src/tactic/transfer.lean Modified src/tactic/transform_decl.lean Modified src/tactic/transport.lean Modified src/tactic/wlog.lean 2021-09-06 03:41:00 1bc59c9 refactor(*): replace `function.swap` by `swap` (#8612) This shortens some statements without decreasing legibility (IMO). ESTIMATED CHANGES Modified src/algebra/bounds.lean Modified src/algebra/covariant_and_contravariant.lean Modified src/algebra/ordered_group.lean +/- theorem div_le_inv_mul_iff Modified src/algebra/ordered_monoid.lean Modified src/algebra/ordered_monoid_lemmas.lean +/- theorem le_mul_of_one_le_of_le +/- theorem le_of_mul_le_mul_right' +/- theorem lt_mul_of_one_lt_left' +/- theorem lt_mul_of_one_lt_of_le +/- theorem lt_of_mul_lt_mul_right' +/- theorem monotone.mul' +/- theorem monotone.mul_const' +/- theorem mul_le_mul_right' +/- theorem mul_le_of_le_one_of_le +/- theorem mul_lt_mul_of_lt_of_le +/- theorem mul_lt_mul_right' +/- theorem mul_lt_of_le_one_of_lt +/- theorem mul_lt_of_lt_one_of_le +/- theorem right.mul_lt_one +/- theorem right.mul_lt_one_of_lt_of_lt_one +/- theorem right.one_le_mul +/- theorem right.one_lt_mul Modified src/computability/primrec.lean +/- theorem nat.primrec.swap' +/- theorem primrec₂.swap Modified src/data/nat/bitwise.lean Modified src/data/seq/computation.lean Modified src/data/seq/wseq.lean Modified src/logic/basic.lean 2021-09-05 23:31:30 a399728 feat(group_theory/coset): Interaction between quotient_group.mk and right multiplication by elements of the subgroup (#8970) Two helpful lemmas regarding the interaction between `quotient_group.mk` and right multiplication by elements of the subgroup. ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem quotient_group.mk_mul_of_mem + theorem quotient_group.mk_out'_eq_mul 2021-09-05 22:12:20 0a94b29 feat(data/nat/choose/vandermonde): Vandermonde's identity for binomial coefficients (#8992) I place this identity in a new file because the current proof depends on `polynomial`. ESTIMATED CHANGES Added src/data/nat/choose/vandermonde.lean + theorem nat.add_choose_eq Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_X_add_one_pow + theorem polynomial.coeff_one_add_X_pow 2021-09-05 02:26:54 9fc45d8 chore(scripts): update nolints.txt (#9014) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-09-04 20:06:15 2ea1650 fix(algebra/ordered_monoid): slay with_top monoid diamonds caused by irreducibility (#8926) https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Diamond.20in.20instances.20on.20.60with_top.20R.60 Instead of copying over from `with_zero`, just work through the definitions directly. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean Modified src/data/polynomial/ring_division.lean Modified test/instance_diamonds.lean 2021-09-04 18:18:07 fd0cdae feat(linear_algebra/pi): pi_option_equiv_prod (#9003) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.pi_option_equiv_prod Modified src/linear_algebra/pi.lean + def linear_equiv.pi_option_equiv_prod 2021-09-04 18:18:06 8ff139a feat(data/equiv/fin): fin_sum_fin_equiv simp lemmas (#9001) ESTIMATED CHANGES Modified src/data/equiv/fin.lean +/- theorem fin_sum_fin_equiv_apply_left +/- theorem fin_sum_fin_equiv_apply_right + theorem fin_sum_fin_equiv_symm_apply_cast_add + theorem fin_sum_fin_equiv_symm_apply_cast_add_right 2021-09-04 18:18:05 7729bb6 feat(algebra): define "Euclidean" absolute values (#8949) We say an absolute value `abv : absolute_value R S` is Euclidean if agrees with the Euclidean domain structure on `R`, namely `abv x < abv y ↔ euclidean_domain.r x y`. Examples include `abs : ℤ → ℤ` and `λ (p : polynomial Fq), (q ^ p.degree : ℤ)`, where `Fq` is a finite field with `q` elements. (These two correspond to the number field and function field case respectively, in our proof that the class number of a global field is finite.) ESTIMATED CHANGES Modified src/algebra/absolute_value.lean + theorem absolute_value.map_sub_eq_zero_iff Added src/algebra/euclidean_absolute_value.lean + theorem absolute_value.is_euclidean.map_lt_map_iff + theorem absolute_value.is_euclidean.sub_mod_lt + structure absolute_value.is_euclidean Added src/data/polynomial/degree/card_pow_degree.lean + theorem polynomial.card_pow_degree_apply + theorem polynomial.card_pow_degree_is_euclidean + theorem polynomial.card_pow_degree_nonzero + theorem polynomial.card_pow_degree_zero 2021-09-04 18:18:04 28592d9 feat(set_theory/cardinal): cardinal.to_nat_mul (#8943) `cardinal.to_nat` distributes over multiplication. ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.cast_to_nat_of_omega_le + theorem cardinal.nat_cast_injective + theorem cardinal.to_nat_mul 2021-09-04 17:05:08 9df3f0d feat(data/nat/prime): nat.prime.eq_pow_iff (#8917) If a^k=p then a=p and k=1. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.eq_one_of_pow + theorem nat.prime.pow_eq_iff + theorem nat.prime.pow_not_prime' 2021-09-04 15:15:27 a4df460 feat(linear_algebra/matrix/symmetric): add a file (#8955) ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.transpose_smul +/- theorem matrix.transpose_sub Added src/linear_algebra/matrix/symmetric.lean + theorem matrix.is_symm.add + theorem matrix.is_symm.apply + theorem matrix.is_symm.conj_transpose + theorem matrix.is_symm.eq + theorem matrix.is_symm.ext + theorem matrix.is_symm.ext_iff + theorem matrix.is_symm.from_blocks + theorem matrix.is_symm.map + theorem matrix.is_symm.minor + theorem matrix.is_symm.neg + theorem matrix.is_symm.smul + theorem matrix.is_symm.sub + theorem matrix.is_symm.transpose + def matrix.is_symm + theorem matrix.is_symm_add_transpose_self + theorem matrix.is_symm_diagonal + theorem matrix.is_symm_from_blocks_iff + theorem matrix.is_symm_mul_transpose_self + theorem matrix.is_symm_one + theorem matrix.is_symm_transpose_add_self + theorem matrix.is_symm_transpose_mul_self + theorem matrix.is_symm_zero 2021-09-04 13:21:59 18d7b74 feat(data/nat/choose/dvd): generalize to division rings (#8997) ESTIMATED CHANGES Modified src/data/nat/choose/dvd.lean +/- theorem nat.cast_add_choose +/- theorem nat.cast_choose 2021-09-04 11:21:20 4435e90 feat(ring_theory/ideal/operations): ideal.pow_mem_pow (#8996) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.pow_mem_pow 2021-09-04 11:21:19 dcc45b4 feat(order/prime_ideal, order/boolean_algebra): small lemmas about prime ideals (#8980) - Added is_prime.mem_or_compl_mem - Added is_prime.mem_compl_of_not_mem - Added sup_inf_inf_compl ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem sup_inf_inf_compl Modified src/order/prime_ideal.lean + theorem order.ideal.is_prime.mem_compl_of_not_mem + theorem order.ideal.is_prime.mem_or_compl_mem 2021-09-04 10:04:21 7f7f3d9 feat(ring_theory/ideal/operations): ring_hom.ker_is_maximal_of_surjective (#8990) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ring_hom.ker_is_maximal_of_surjective 2021-09-04 08:16:53 9d86dad feat(linear_algebra/prod): lemmas about ker and range (#8989) ESTIMATED CHANGES Modified src/linear_algebra/prod.lean + theorem linear_map.fst_surjective + theorem linear_map.ker_fst + theorem linear_map.ker_snd + theorem linear_map.range_inl + theorem linear_map.range_inr + theorem linear_map.snd_surjective 2021-09-04 08:16:52 855613e feat(linear_algebra/basic): galois insertion lemmas for map and comap (#8978) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.comap_injective_of_surjective + theorem submodule.comap_le_comap_iff_of_surjective + theorem submodule.comap_strict_mono_of_surjective + def submodule.gi_map_comap + theorem submodule.map_comap_eq_of_surjective + theorem submodule.map_inf_comap_of_surjective + theorem submodule.map_infi_comap_of_surjective + theorem submodule.map_sup_comap_of_surjective + theorem submodule.map_supr_comap_of_sujective + theorem submodule.map_surjective_of_surjective 2021-09-04 06:46:17 b57af8a feat(category_theory/basic/category): Combine and improve API on preorder categories. (#8982) Material on preorders as categories was previously scattered throughout the library. This PR unites this material into a single file `category_theory/category/preorder` and also expands upon it, by relating adjoints to galois connections. ESTIMATED CHANGES Modified src/category_theory/category/default.lean - def category_theory.hom_of_le - theorem category_theory.hom_of_le_comp - theorem category_theory.hom_of_le_le_of_hom - theorem category_theory.hom_of_le_refl - theorem category_theory.le_of_hom - theorem category_theory.le_of_hom_hom_of_le Added src/category_theory/category/preorder.lean + def category_theory.Preorder_to_Cat + theorem category_theory.adjunction.gc + def category_theory.equivalence.to_order_iso + theorem category_theory.equivalence.to_order_iso_apply + theorem category_theory.equivalence.to_order_iso_symm_apply + theorem category_theory.functor.monotone + def category_theory.hom_of_le + theorem category_theory.hom_of_le_comp + theorem category_theory.hom_of_le_le_of_hom + theorem category_theory.hom_of_le_refl + theorem category_theory.iso.to_eq + theorem category_theory.le_of_hom + theorem category_theory.le_of_hom_hom_of_le + theorem category_theory.le_of_op_hom + def category_theory.op_hom_of_le + def galois_connection.adjunction + def monotone.functor + theorem monotone.functor_obj Modified src/category_theory/equivalence.lean - def category_theory.equivalence.to_order_iso - theorem category_theory.equivalence.to_order_iso_apply - theorem category_theory.equivalence.to_order_iso_symm_apply Modified src/category_theory/filtered.lean Modified src/category_theory/functor.lean - theorem category_theory.functor.monotone Modified src/category_theory/isomorphism.lean - theorem category_theory.iso.to_eq Modified src/category_theory/limits/lattice.lean Modified src/category_theory/opposites.lean - theorem category_theory.le_of_op_hom - def category_theory.op_hom_of_le Modified src/category_theory/skeletal.lean Modified src/topology/category/Top/opens.lean 2021-09-04 02:26:04 b9d8081 chore(scripts): update nolints.txt (#8987) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-09-04 00:27:12 464c3d7 chore(group_theory/group_action/defs): weaken assumptions of `mul_smul_comm` and `smul_mul_assoc` (#8972) ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean +/- theorem mul_smul_comm +/- theorem smul_mul_assoc 2021-09-04 00:27:11 6ab6695 docs(topology/algebra/floor_ring): add module docstring (#8969) ESTIMATED CHANGES Modified src/topology/algebra/floor_ring.lean 2021-09-03 22:57:17 66cb5e0 fix(data/setoid/partition): make def more readable (#8951) If we change the statement of `partition.order_iso` from `setoid α ≃o subtype (@is_partition α)` to `setoid α ≃o {C : set (set α) // is_partition C}` then this doesn't change anything up to defeq and it's much easier for a beginner to read, as well as avoiding the `@`. I also change some variable names. Why? I want to show this part of this file to undergraduates and I want to make it look as easy and nice as possible. ESTIMATED CHANGES Modified src/data/setoid/partition.lean 2021-09-03 22:57:16 93a15d6 feat(ring_theory/subring): field structure on centers of a division_ring (#8472) I've also tidied up the subtitles. Previously there was a mix of h1 and h3s, I've made them all h2s. ESTIMATED CHANGES Modified src/group_theory/submonoid/center.lean + theorem set.div_mem_center' + theorem set.div_mem_center Modified src/ring_theory/subring.lean + theorem subring.center.coe_div + theorem subring.center.coe_inv 2021-09-03 20:53:49 3a0dddc feat(algebra/order_functions): (min|max)_eq_iff (#8911) ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem max_eq_iff + theorem min_eq_iff 2021-09-03 20:53:48 39cea43 docs(data/subtype): add module docstring (#8900) ESTIMATED CHANGES Modified src/data/subtype.lean +/- def subtype.coind +/- theorem subtype.coind_bijective +/- theorem subtype.coind_injective +/- theorem subtype.coind_surjective +/- def subtype.map +/- theorem subtype.map_id +/- theorem subtype.map_injective +/- theorem subtype.map_involutive +/- def subtype.restrict +/- theorem subtype.restrict_apply 2021-09-03 18:48:25 710a76e chore(algebra/divisibility): help dot notation on `dvd` (#8766) Add aliases * `dvd_mul_of_dvd_left` -> `has_dvd.dvd.mul_right` * `dvd_mul_of_dvd_right` -> `has_dvd.dvd.mul_left` Add, to help with a few proofs, * `dvd_rfl` * `dvd_pow_self` Use `has_dvd.dvd.trans` more largely. ESTIMATED CHANGES Modified archive/imo/imo1959_q1.lean Modified archive/imo/imo2011_q5.lean Modified src/algebra/associated.lean Modified src/algebra/divisibility.lean + theorem dvd_rfl +/- theorem one_dvd Modified src/algebra/euclidean_domain.lean Modified src/algebra/gcd_monoid/basic.lean +/- theorem dvd_lcm_left +/- theorem dvd_lcm_right Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/gcd_monoid/multiset.lean Modified src/algebra/group_power/basic.lean +/- theorem dvd_pow + theorem dvd_pow_self Modified src/algebra/ring/basic.lean Modified src/algebra/squarefree.lean Modified src/data/int/gcd.lean Modified src/data/int/modeq.lean Modified src/data/nat/basic.lean Modified src/data/nat/factorial.lean Modified src/data/nat/gcd.lean Modified src/data/nat/modeq.lean Modified src/data/nat/pow.lean Modified src/data/nat/prime.lean Modified src/data/pnat/xgcd.lean Modified src/data/rat/basic.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/pell.lean +/- theorem pell.asq_pos +/- def pell.az +/- theorem pell.d_pos +/- theorem pell.dvd_of_ysq_dvd +/- theorem pell.dz_val +/- theorem pell.eq_of_xn_modeq' +/- theorem pell.eq_of_xn_modeq +/- theorem pell.eq_of_xn_modeq_le +/- theorem pell.eq_of_xn_modeq_lem1 +/- theorem pell.eq_of_xn_modeq_lem2 +/- theorem pell.eq_of_xn_modeq_lem3 +/- theorem pell.eq_pell +/- theorem pell.eq_pell_lem +/- theorem pell.eq_pell_zd +/- def pell.is_pell +/- theorem pell.is_pell_conj +/- theorem pell.is_pell_mul +/- theorem pell.is_pell_nat +/- theorem pell.is_pell_norm +/- theorem pell.is_pell_one +/- theorem pell.is_pell_pell_zd +/- theorem pell.modeq_of_xn_modeq +/- theorem pell.n_lt_a_pow +/- theorem pell.n_lt_xn +/- def pell.pell +/- theorem pell.pell_eq +/- theorem pell.pell_eqz +/- theorem pell.pell_val +/- def pell.pell_zd +/- theorem pell.pell_zd_add +/- theorem pell.pell_zd_im +/- theorem pell.pell_zd_re +/- theorem pell.pell_zd_sub +/- theorem pell.pell_zd_succ +/- theorem pell.pell_zd_succ_succ +/- theorem pell.x_increasing +/- theorem pell.x_pos +/- theorem pell.x_sub_y_dvd_pow +/- theorem pell.x_sub_y_dvd_pow_lem +/- def pell.xn +/- theorem pell.xn_add +/- theorem pell.xn_ge_a_pow +/- theorem pell.xn_modeq_x2n_add +/- theorem pell.xn_modeq_x2n_add_lem +/- theorem pell.xn_modeq_x2n_sub +/- theorem pell.xn_modeq_x2n_sub_lem +/- theorem pell.xn_modeq_x4n_add +/- theorem pell.xn_modeq_x4n_sub +/- theorem pell.xn_one +/- theorem pell.xn_succ +/- theorem pell.xn_succ_succ +/- theorem pell.xn_zero +/- theorem pell.xy_coprime +/- theorem pell.xy_modeq_yn +/- theorem pell.xy_succ_succ +/- def pell.xz +/- theorem pell.xz_sub +/- theorem pell.xz_succ +/- theorem pell.xz_succ_succ +/- theorem pell.y_dvd_iff +/- theorem pell.y_increasing +/- theorem pell.y_mul_dvd +/- def pell.yn +/- theorem pell.yn_add +/- theorem pell.yn_ge_n +/- theorem pell.yn_modeq_a_sub_one +/- theorem pell.yn_modeq_two +/- theorem pell.yn_one +/- theorem pell.yn_succ +/- theorem pell.yn_succ_succ +/- theorem pell.yn_zero +/- theorem pell.ysq_dvd_yy +/- def pell.yz +/- theorem pell.yz_sub +/- theorem pell.yz_succ +/- theorem pell.yz_succ_succ Modified src/number_theory/pythagorean_triples.lean Modified src/ring_theory/coprime.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/set_theory/ordinal_notation.lean 2021-09-03 09:56:24 5e27f50 feat(analysis/complex/basic): convex_on.sup (#8958) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem concave_on.inf + theorem convex_on.sup 2021-09-02 21:50:49 fdc24f5 feat(algebra/ordered_ring): `linear_ordered_semiring` extends `linear_ordered_add_comm_monoid` (#8961) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean 2021-09-02 19:07:49 d821860 feat(group_theory/group_action/basic): class formula, Burnside's lemma (#8801) This adds class formula and Burnside's lemma for group action, both as an equiv and using cardinals. I also added a cardinal version of the Orbit-stabilizer theorem. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/data/equiv/basic.lean + def equiv.sigma_assoc Modified src/group_theory/group_action/basic.lean + theorem add_action.stabilizer_vadd_eq_stabilizer_map_conj + theorem mul_action.card_eq_sum_card_group_div_card_stabilizer' + theorem mul_action.card_eq_sum_card_group_div_card_stabilizer + theorem mul_action.card_orbit_mul_card_stabilizer_eq_card_group + def mul_action.self_equiv_sigma_orbits' + theorem mul_action.stabilizer_smul_eq_stabilizer_map_conj + theorem mul_action.sum_card_fixed_by_eq_card_orbits_mul_card_group Modified src/group_theory/subgroup.lean + def mul_equiv.subgroup_equiv_map Modified src/group_theory/submonoid/operations.lean + def mul_equiv.submonoid_equiv_map 2021-09-02 15:21:36 17747c0 feat(number_theory): define number fields, function fields and their rings of integers (#8701) Co-Authored-By: Ashvni ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem char_zero.of_algebra Modified src/algebraic_geometry/structure_sheaf.lean Added src/number_theory/function_field.lean + def function_field.ring_of_integers + def function_field Added src/number_theory/number_field.lean + theorem number_field.ring_of_integers.is_integral_coe + def number_field.ring_of_integers Modified src/ring_theory/integrally_closed.lean + theorem integral_closure.is_integrally_closed_of_finite_extension Modified src/ring_theory/localization.lean - theorem is_localization.epic_of_localization_map + theorem is_localization.monoid_hom_ext + theorem is_localization.ring_hom_ext 2021-09-02 14:35:26 88525a9 feat(ring_theory/ideal): generalize from `integral_closure` to `is_integral_closure` (#8944) This PR restates a couple of lemmas about ideals the integral closure to use an instance of `is_integral_closure` instead. The originals are still available, but their proofs are now oneliners shelling out to `is_integral_closure`. ESTIMATED CHANGES 2021-09-02 12:25:11 55a7d38 feat(group_theory/coset): rw lemmas involving quotient_group.mk (#8957) When doing computations with quotient groups, I found these lemmas to be helpful when rewriting. ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem quotient_group.eq' + theorem quotient_group.out_eq' 2021-09-02 12:25:09 baefdf3 fix(group_theory/group_action/defs): deduplicate `const_smul_hom` and `distrib_mul_action.to_add_monoid_hom` (#8953) This removes `const_smul_hom` as `distrib_mul_action.to_add_monoid_hom` fits a larger family of similarly-named definitions. This also renames `distrib_mul_action.hom_add_monoid_hom` to `distrib_mul_action.to_add_monoid_End` to better match its statement. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Definition.20elimination.20contest/near/237347199) ESTIMATED CHANGES Modified src/algebra/direct_sum/algebra.lean Modified src/algebra/group_ring_action.lean - def distrib_mul_action.hom_add_monoid_hom - def distrib_mul_action.to_add_monoid_hom Modified src/algebra/module/basic.lean Modified src/algebra/polynomial/group_ring_action.lean Modified src/group_theory/group_action/basic.lean Modified src/group_theory/group_action/defs.lean - def const_smul_hom - theorem const_smul_hom_apply - theorem const_smul_hom_one + def distrib_mul_action.to_add_monoid_End + def distrib_mul_action.to_add_monoid_hom Modified src/topology/algebra/infinite_sum.lean 2021-09-02 10:34:12 1dddd7f feat(algebra/group/hom_instance): additive endomorphisms form a ring (#8954) We already have all the data to state this, this just provides the extra proofs. The multiplicative version is nasty because `monoid.End` has two different multiplicative structures depending on whether `End` is unfolded; so this PR leaves that until someone actually needs it. With this in place we can provide `module.to_add_monoid_End : R →+* add_monoid.End M` in a future PR. ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean 2021-09-02 09:31:58 2fa8251 refactor(*): rename {topological,smooth}_semiring to {topological,smooth}_ring (#8902) A topological semiring that is a ring, is a topological ring. A smooth semiring that is a ring, is a smooth ring. This PR renames: * `topological_semiring` -> `topological_ring` * `smooth_semiring` -> `smooth_ring` It drops the existing `topological_ring` and `smooth_ring`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/algebra/structures.lean +/- theorem topological_ring_of_smooth - theorem topological_semiring_of_smooth Modified src/topology/algebra/algebra.lean +/- theorem continuous_algebra_map +/- theorem continuous_algebra_map_iff_smul +/- theorem has_continuous_smul_of_algebra_map Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/polynomial.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean 2021-09-02 08:19:17 289e6dc feat(category_theory/limits/kan_extension): Prove (co)reflectivity for Kan extensions (#8962) ESTIMATED CHANGES Modified src/category_theory/limits/kan_extension.lean + theorem category_theory.Lan.coreflective + theorem category_theory.Ran.reflective 2021-09-02 08:19:16 8da6699 chore(analysis/convex/basic): generalize `concave_on.le_on_segment` to monoids (#8959) This matches the generalization already present on `convex_on.le_on_segment`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem concave_on.le_on_segment 2021-09-02 08:19:14 9d3e3e8 feat(ring_theory/dedekind_domain): the integral closure of a DD is a DD (#8847) Let `L` be a finite separable extension of `K = Frac(A)`, where `A` is a Dedekind domain. Then any `is_integral_closure C A L` is also a Dedekind domain, in particular for `C := integral_closure A L`. In combination with the definitions of #8701, we can conclude that rings of integers are Dedekind domains. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean + theorem exists_integral_multiples + theorem finite_dimensional.exists_is_basis_integral + theorem integral_closure.is_dedekind_domain + theorem integral_closure.is_noetherian_ring + theorem integral_closure_le_span_dual_basis + theorem is_integral_closure.is_dedekind_domain + theorem is_integral_closure.is_noetherian_ring + theorem is_integral_closure.range_le_span_dual_basis + theorem ring.dimension_le_one.is_integral_closure Modified src/ring_theory/ideal/over.lean + theorem ideal.is_integral_closure.comap_lt_comap + theorem ideal.is_integral_closure.comap_ne_bot + theorem ideal.is_integral_closure.eq_bot_of_comap_eq_bot + theorem ideal.is_integral_closure.is_maximal_of_is_maximal_comap Modified src/ring_theory/localization.lean + theorem is_integral_closure.is_fraction_ring_of_algebraic + theorem is_integral_closure.is_fraction_ring_of_finite_extension Modified src/ring_theory/trace.lean +/- theorem det_trace_form_ne_zero + theorem trace_form_nondegenerate 2021-09-02 06:16:19 6c24731 feat(order/bounded_lattice): `ne_(bot|top)_iff_exists` (#8960) Like `ne_zero_iff_exists` ESTIMATED CHANGES Modified src/order/bounded_lattice.lean + theorem with_bot.ne_bot_iff_exists + theorem with_top.ne_top_iff_exists 2021-09-01 19:25:02 07c57b5 feat(group_theory): Add `monoid_hom.mker` and generalise the codomain for `monoid_hom.ker` (#8532) Add `monoid_hom.mker` for `f : M ->* N`, where `M` and `N` are `mul_one_class`es, and `monoid_hom.ker` is now defined for `f : G ->* H`, where `H` is a `mul_one_class` ESTIMATED CHANGES Modified src/group_theory/subgroup.lean +/- theorem monoid_hom.coe_ker +/- def monoid_hom.ker +/- theorem monoid_hom.ker_one +/- theorem monoid_hom.mem_ker Modified src/group_theory/submonoid/operations.lean + theorem monoid_hom.coe_mker + theorem monoid_hom.comap_bot' + theorem monoid_hom.comap_mker + theorem monoid_hom.mem_mker + def monoid_hom.mker + theorem monoid_hom.mker_one + theorem monoid_hom.mker_prod_map + theorem monoid_hom.prod_map_comap_prod' + theorem monoid_hom.range_restrict_mker 2021-09-01 17:19:33 0b8a858 feat(tactic/lint): minor linter improvements (#8934) * Change `#print foo` with `#check @foo` in the output of the linter * Include the number of linters in the output message * add `attribute [nolint syn_taut] rfl` ESTIMATED CHANGES Modified scripts/lint_mathlib.lean Modified src/tactic/lint/frontend.lean Modified src/tactic/lint/misc.lean Modified test/lint.lean 2021-09-01 15:38:10 9b00046 chore(algebra,group_theory,right_theory,linear_algebra): add missing lemmas (#8948) This adds: * `sub{group,ring,semiring}.map_id` * `submodule.add_mem_sup` * `submodule.map_add_le` And moves `submodule.sum_mem_supr` and `submodule.sum_mem_bsupr` to an earlier file. ESTIMATED CHANGES Modified src/algebra/module/submodule_lattice.lean + theorem submodule.add_mem_sup + theorem submodule.sum_mem_bsupr + theorem submodule.sum_mem_supr Modified src/group_theory/subgroup.lean + theorem subgroup.map_id Modified src/linear_algebra/basic.lean + theorem submodule.map_add_le - theorem submodule.sum_mem_bsupr - theorem submodule.sum_mem_supr Modified src/ring_theory/subring.lean + theorem subring.map_id Modified src/ring_theory/subsemiring.lean + theorem subsemiring.map_id 2021-09-01 14:07:44 2beaa28 fix(category_theory/adjunction/basic): Fix typo in docstring (#8950) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean 2021-09-01 14:07:42 510e65d feat(topology/algebra/localization): add topological localization (#8894) We show that ring topologies on a ring `R` form a complete lattice. We use this to define the topological localization of a topological commutative ring `R` at a submonoid `M`. ESTIMATED CHANGES Added src/topology/algebra/localization.lean + def localization.ring_topology Modified src/topology/algebra/ring.lean + def ring_topology.coinduced + theorem ring_topology.coinduced_continuous + theorem ring_topology.ext' + structure ring_topology 2021-09-01 12:16:34 d472e1b feat(order/basic): recursor for order_dual (#8938) ESTIMATED CHANGES Modified src/order/basic.lean Modified src/order/order_dual.lean 2021-09-01 12:16:33 0970d07 feat(order/well_founded): define `function.argmin`, `function.argmin_on` (#8895) Evidently, these are just thin wrappers around `well_founded.min` but I think this use case is common enough to deserve this specialisation. ESTIMATED CHANGES Modified src/order/well_founded.lean + theorem function.argmin_le + theorem function.argmin_on_le + theorem function.argmin_on_mem + theorem function.not_lt_argmin + theorem function.not_lt_argmin_on 2021-09-01 12:16:32 faf5e5c feat(order/bounded_lattice): unbot and untop (#8885) `unbot` sends non-`⊥` elements of `with_bot α` to the corresponding element of `α`. `untop` does the analogous thing for `with_top`. ESTIMATED CHANGES Modified src/order/bounded_lattice.lean + def with_bot.unbot + theorem with_bot.unbot_coe + def with_top.untop + theorem with_top.untop_coe 2021-09-01 10:35:59 f3101e8 feat(group_theory/perm/basic): permutations of a subtype (#8691) This is the same as `(equiv.refl _)^.set.compl .symm.trans (subtype_equiv_right $ by simp)` (up to a `compl`) but with better unfolding. ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + theorem equiv.perm.subtype_equiv_subtype_perm_apply_of_mem + theorem equiv.perm.subtype_equiv_subtype_perm_apply_of_not_mem 2021-09-01 07:45:41 73f50ac feat(algebraic_geometry): Redefine Schemes in terms of isos of locally ringed spaces (#8888) Addresses the project mentioned in `Scheme.lean` to redefine Schemes in terms of isomorphisms of locally ringed spaces, instead of presheafed spaces. ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/sheafed_space.lean + def algebraic_geometry.SheafedSpace.restrict_top_iso 2021-09-01 07:45:39 5b04a89 feat(measure_theory/conditional_expectation): the integral of the norm of the conditional expectation is lower (#8318) Let `m` be a sub-σ-algebra of `m0`, `f` a `m0`-measurable function and `g` a `m`-measurable function, such that their integrals coincide on `m`-measurable sets with finite measure. Then `∫ x in s, ∥g x∥ ∂μ ≤ ∫ x in s, ∥f x∥ ∂μ` on all `m`-measurable sets with finite measure. This PR also defines a notation `measurable[m] f`, to mean that `f : α → β` is measurable with respect to the `measurable_space` `m` on `α`. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.indicator_le_indicator_nonneg + theorem set.indicator_nonpos_le_indicator Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.integral_norm_le_of_forall_fin_meas_integral_eq + theorem measure_theory.lintegral_nnnorm_le_of_forall_fin_meas_integral_eq Modified src/measure_theory/integral/bochner.lean + theorem measure_theory.of_real_integral_norm_eq_lintegral_nnnorm Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.lintegral_add_compl + theorem measure_theory.set_lintegral_congr_fun Modified src/measure_theory/integral/set_integral.lean + theorem measure_theory.integral_norm_eq_pos_sub_neg + theorem measure_theory.set_integral_eq_zero_of_forall_eq_zero + theorem measure_theory.set_integral_le_nonneg + theorem measure_theory.set_integral_neg_eq_set_integral_nonpos + theorem measure_theory.set_integral_nonpos_le + theorem measure_theory.set_integral_union_eq_left Modified src/measure_theory/measurable_space_def.lean 2021-09-01 05:57:01 f0451d8 feat(algebra/group/defs): ext lemmas for (semi)groups and monoids (#8391) [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.236476.20boolean_algebra.2Eto_boolean_ring/near/242118386) ESTIMATED CHANGES Modified src/algebra/group/defs.lean + theorem cancel_comm_monoid.ext + theorem cancel_comm_monoid.to_comm_monoid_injective + theorem cancel_monoid.ext + theorem cancel_monoid.to_left_cancel_monoid_injective + theorem comm_group.ext + theorem comm_group.to_group_injective + theorem comm_monoid.ext + theorem comm_monoid.to_monoid_injective + theorem div_inv_monoid.ext + theorem group.ext + theorem group.to_div_inv_monoid_injective + theorem left_cancel_monoid.ext + theorem left_cancel_monoid.to_monoid_injective + theorem monoid.ext + theorem mul_one_class.ext + theorem right_cancel_monoid.ext + theorem right_cancel_monoid.to_monoid_injective Modified src/category_theory/preadditive/schur.lean Modified test/equiv_rw.lean 2021-08-31 23:00:50 065a35d feat(algebra/{pointwise,algebra/operations}): add `supr_mul` and `mul_supr` (#8923) Requested by @eric-wieser on Zulip, https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/submodule.2Esupr_mul/near/250122435 and a couple of helper lemmas. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.mul_eq_span_mul_set + theorem submodule.mul_supr + theorem submodule.supr_mul Modified src/algebra/pointwise.lean + theorem set.Union_mul + theorem set.mul_Union 2021-08-31 21:31:09 9339006 feat(algebra/{module/linear_map, algebra/basic}): Add `distrib_mul_action.to_linear_(map|equiv)` and `mul_semiring_action.to_alg_(hom|equiv)` (#8936) This adds the following stronger versions of `distrib_mul_action.to_add_monoid_hom`: * `distrib_mul_action.to_linear_map` * `distrib_mul_action.to_linear_equiv` * `mul_semiring_action.to_alg_hom` * `mul_semiring_action.to_alg_equiv` [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/group.20acting.20on.20algebra/near/251372497) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def mul_semiring_action.to_alg_equiv + def mul_semiring_action.to_alg_hom Modified src/algebra/group_ring_action.lean + def mul_semiring_action.to_ring_equiv - def mul_semiring_action.to_semiring_equiv Modified src/algebra/module/linear_map.lean + def distrib_mul_action.to_linear_equiv + def distrib_mul_action.to_linear_map 2021-08-31 15:40:30 3d6a828 chore(order/bounded_lattice): dot-notation lemmas ne.bot_lt and ne.lt_top (#8935) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean + theorem ne.bot_lt' + theorem ne.bot_lt + theorem ne.lt_top' + theorem ne.lt_top 2021-08-31 15:40:29 12bbd53 chore(topology/metric_space/basic): add `metric.uniform_continuous_on_iff_le` (#8906) This is a version of `metric.uniform_continuous_on_iff` with `≤ δ` and `≤ ε` instead of `< δ` and `< ε`. Also golf the proof of `metric.uniform_continuous_on_iff`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.uniform_continuous_on_iff_le 2021-08-31 15:40:28 603a606 feat(measure_theory/hausdorff_measure): dimH and Hölder/Lipschitz maps (#8361) * expand module docs; * prove that a Lipschitz continuous map does not increase Hausdorff measure and Hausdorff dimension of sets; * prove similar lemmas about Hölder continuous and antilipschitz maps; * add convenience lemmas for some bundled types and for `Cⁿ` smooth maps; * Hausdorff dimension of `ℝⁿ` equals `n`; * prove a baby version of Sard's theorem: if `f : E → F` is a `C¹` smooth map between normed vector spaces such that `finrank ℝ E < finrank ℝ F`, then `(range f)ᶜ` is dense. ESTIMATED CHANGES Modified src/measure_theory/measure/hausdorff.lean + theorem antilipschitz_with.dimH_preimage_le + theorem antilipschitz_with.hausdorff_measure_preimage_le + theorem antilipschitz_with.le_dimH_image + theorem antilipschitz_with.le_hausdorff_measure_image + theorem continuous_linear_equiv.dimH_image + theorem continuous_linear_equiv.dimH_preimage + theorem continuous_linear_equiv.dimH_univ + theorem dense_compl_of_dimH_lt_finrank + theorem dimH_image_le_of_locally_holder_on + theorem dimH_image_le_of_locally_lipschitz_on + theorem dimH_range_le_of_locally_holder_on + theorem dimH_range_le_of_locally_lipschitz_on + theorem holder_on_with.dimH_image_le + theorem holder_on_with.hausdorff_measure_image_le + theorem holder_with.dimH_image_le + theorem holder_with.dimH_range_le + theorem isometric.dimH_image + theorem isometric.dimH_preimage + theorem isometric.dimH_univ + theorem isometric.hausdorff_measure_image + theorem isometric.hausdorff_measure_preimage + theorem isometry.dimH_image + theorem isometry.hausdorff_measure_image + theorem isometry.hausdorff_measure_preimage + theorem isometry.map_hausdorff_measure + theorem lipschitz_on_with.dimH_image_le + theorem lipschitz_on_with.hausdorff_measure_image_le + theorem lipschitz_with.dimH_image_le + theorem lipschitz_with.dimH_range_le + theorem lipschitz_with.hausdorff_measure_image_le + theorem measure_theory.dimH_le_of_hausdorff_measure_ne_top + theorem measure_theory.dimH_of_hausdorff_measure_ne_zero_ne_top +/- theorem measure_theory.hausdorff_measure_pi_real + theorem measure_theory.le_dimH_of_hausdorff_measure_ne_zero + theorem real.dimH_ball_pi + theorem real.dimH_ball_pi_fin + theorem real.dimH_of_mem_nhds + theorem real.dimH_of_nonempty_interior + theorem real.dimH_univ + theorem real.dimH_univ_eq_finrank + theorem real.dimH_univ_pi + theorem real.dimH_univ_pi_fin + theorem times_cont_diff.dense_compl_range_of_finrank_lt_finrank + theorem times_cont_diff.dimH_range_le + theorem times_cont_diff_on.dense_compl_image_of_dimH_lt_finrank + theorem times_cont_diff_on.dimH_image_le Modified src/ring_theory/noetherian.lean Modified src/topology/bases.lean + theorem topological_space.countable_cover_nhds_within Modified src/topology/continuous_on.lean + theorem mem_nhds_subtype_iff_nhds_within + theorem preimage_coe_mem_nhds_subtype 2021-08-31 13:58:34 d9b2db9 chore(group_theory/submonoid/center): fix typo and extend docstring (#8937) ESTIMATED CHANGES Modified src/group_theory/submonoid/center.lean 2021-08-31 10:54:15 ab967d2 feat(group_theory/submonoid): center of a submonoid (#8921) This adds `set.center`, `submonoid.center`, `subsemiring.center`, and `subring.center`, to complement the existing `subgroup.center`. This ran into a timeout, so had to squeeze some `simp`s in an unrelated file. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/group_theory/subgroup.lean + theorem subgroup.center_to_submonoid + theorem subgroup.coe_center Added src/group_theory/submonoid/center.lean + theorem set.add_mem_center + def set.center + theorem set.center_eq_univ + theorem set.center_units_eq + theorem set.center_units_subset + theorem set.inv_mem_center' + theorem set.inv_mem_center + theorem set.mem_center_iff + theorem set.mul_mem_center + theorem set.neg_mem_center + theorem set.one_mem_center + theorem set.subset_center_units + theorem set.zero_mem_center + def submonoid.center + theorem submonoid.center_eq_top + theorem submonoid.coe_center + theorem submonoid.mem_center_iff Modified src/ring_theory/subring.lean + def subring.center + theorem subring.center_eq_top + theorem subring.center_to_subsemiring + theorem subring.coe_center + theorem subring.mem_center_iff Modified src/ring_theory/subsemiring.lean + def subsemiring.center + theorem subsemiring.center_eq_top + theorem subsemiring.center_to_submonoid + theorem subsemiring.coe_center + theorem subsemiring.mem_center_iff 2021-08-31 09:04:38 6b63c03 fix(order/rel_classes): remove looping instance (#8931) This instance causes loop with `is_total_preorder.to_is_total`, and was unused in the library. Caught by the new linter (#8932). ESTIMATED CHANGES Modified src/order/rel_classes.lean 2021-08-31 09:04:37 53f074c fix(data/complex/basic): better formulas for nsmul and gsmul on complex to fix a diamond (#8928) As diagnosed by @eric-wieser in https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/diamond.20in.20data.2Ecomplex.2Emodule/near/250318167 After the PR, ```lean example : (sub_neg_monoid.has_scalar_int : has_scalar ℤ ℂ) = (complex.has_scalar : has_scalar ℤ ℂ) := rfl ``` works fine, while it fails on current master. ESTIMATED CHANGES Modified src/data/complex/basic.lean Modified src/data/complex/module.lean Modified test/instance_diamonds.lean 2021-08-31 09:04:36 c04e8a4 feat(logic/basic): equivalence of by_contra and choice (#8912) Based on an email suggestion from Freek Wiedijk: `classical.choice` is equivalent to the following Type-valued variation on `by_contradiction`: ```lean axiom classical.by_contradiction' {α : Sort*} : ¬ (α → false) → α ``` ESTIMATED CHANGES Modified src/logic/basic.lean + def classical.choice_of_by_contradiction' 2021-08-31 09:04:35 1c13454 feat(algebraic_geometry): Restriction of locally ringed spaces (#8809) Proves that restriction of presheafed spaces doesn't change the stalks and defines the restriction of a locally ringed space along an open embedding. ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/presheafed_space.lean +/- def algebraic_geometry.PresheafedSpace.of_restrict Modified src/algebraic_geometry/stalks.lean + def algebraic_geometry.PresheafedSpace.restrict_stalk_iso + theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_hom_eq_germ + theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_germ Modified src/topology/category/Top/open_nhds.lean + def is_open_map.adjunction_nhds + def is_open_map.functor_nhds 2021-08-31 07:22:54 1dbd561 refactor(order/atoms): reorder arguments of `is_simple_lattice.fintype` (#8933) Previously, this instance would first look for `decidable_eq` instances and after that for `is_simple_lattice` instances. The latter has only 4 instances, while the former takes hundreds of steps. Reordering the arguments makes a lot of type-class searches fail a lot quicker. Caught by the new linter (#8932). ESTIMATED CHANGES Modified src/order/atoms.lean 2021-08-31 02:54:16 22a297c feat(algebra/module/prod,pi): instances for actions with zero (#8929) ESTIMATED CHANGES Modified src/algebra/module/pi.lean Modified src/algebra/module/prod.lean 2021-08-31 01:35:58 f4d7205 chore(measure_theory/*): rename `probability_measure` and `finite_measure` (#8831) Renamed to `is_probability_measure` and `is_finite_measure`, respectively. Also, `locally_finite_measure` becomes `is_locally_finite_measure`. See https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.238337.20Weak.20convergence ESTIMATED CHANGES Modified counterexamples/phillips.lean +/- theorem phillips_1940.extension_to_bounded_functions_apply +/- theorem phillips_1940.to_functions_to_measure Modified docs/undergrad.yaml Modified src/analysis/convex/integral.lean +/- theorem convex.integral_mem +/- theorem convex_on.map_integral_le +/- theorem convex_on.map_smul_integral_le Modified src/analysis/fourier.lean Modified src/analysis/special_functions/integrals.lean Modified src/dynamics/ergodic/conservative.lean Modified src/dynamics/ergodic/measure_preserving.lean +/- theorem measure_theory.measure_preserving.exists_mem_image_mem Modified src/measure_theory/constructions/borel_space.lean +/- def real.finite_spanning_sets_in_Ioo_rat +/- theorem real.measure_ext_Ioo_rat Modified src/measure_theory/constructions/pi.lean Modified src/measure_theory/constructions/prod.lean +/- theorem measurable_measure_prod_mk_left_finite Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/lebesgue.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean +/- theorem measure_theory.hahn_decomposition Modified src/measure_theory/function/ae_eq_of_integral.lean Modified src/measure_theory/function/conditional_expectation.lean - theorem measure_theory.integrable_condexp_L2_of_finite_measure + theorem measure_theory.integrable_condexp_L2_of_is_finite_measure Modified src/measure_theory/function/continuous_map_dense.lean +/- theorem bounded_continuous_function.to_Lp_dense_range +/- theorem continuous_map.to_Lp_dense_range Modified src/measure_theory/function/l1_space.lean +/- theorem measure_theory.has_finite_integral_const +/- theorem measure_theory.has_finite_integral_of_bounded +/- theorem measure_theory.integrable.const_mul +/- theorem measure_theory.integrable.mul_const +/- theorem measure_theory.integrable_const +/- theorem measure_theory.integrable_neg_iff +/- theorem measure_theory.mem_ℒp.integrable Modified src/measure_theory/function/l2_space.lean Modified src/measure_theory/function/lp_space.lean +/- theorem measure_theory.Lp.antimono +/- theorem measure_theory.Lp.mem_Lp_const +/- theorem measure_theory.Lp.mem_Lp_of_ae_bound +/- theorem measure_theory.Lp.norm_le_of_ae_bound +/- theorem measure_theory.mem_ℒp.mem_ℒp_of_exponent_le +/- theorem measure_theory.mem_ℒp.of_bound +/- theorem measure_theory.mem_ℒp_const +/- theorem measure_theory.snorm'_const' + theorem measure_theory.snorm'_const_of_is_probability_measure - theorem measure_theory.snorm'_const_of_probability_measure +/- theorem measure_theory.snorm'_le_snorm_ess_sup +/- theorem measure_theory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le +/- theorem measure_theory.snorm_le_snorm_of_exponent_le Modified src/measure_theory/function/simple_func_dense.lean - theorem measure_theory.simple_func.integrable_of_finite_measure + theorem measure_theory.simple_func.integrable_of_is_finite_measure +/- theorem measure_theory.simple_func.measure_support_lt_top_of_integrable - theorem measure_theory.simple_func.mem_ℒp_of_finite_measure + theorem measure_theory.simple_func.mem_ℒp_of_is_finite_measure Modified src/measure_theory/integral/bochner.lean +/- theorem measure_theory.norm_integral_le_of_norm_le_const Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/interval_integral.lean +/- theorem interval_integral.integral_const_of_cdf Modified src/measure_theory/integral/lebesgue.lean - theorem measure_theory.finite_measure_with_density + theorem measure_theory.is_finite_measure_with_density Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean - theorem is_compact.finite_measure - theorem is_compact.finite_measure_of_nhds_within + theorem is_compact.is_finite_measure + theorem is_compact.is_finite_measure_of_nhds_within +/- theorem measure_theory.coe_measure_univ_nnreal +/- theorem measure_theory.ext_of_generate_finite - theorem measure_theory.finite_measure_of_le + theorem measure_theory.is_finite_measure_of_le + theorem measure_theory.is_probability_measure.ne_zero +/- theorem measure_theory.measure.finite_at_filter_of_finite +/- theorem measure_theory.measure.le_of_add_le_add_left +/- theorem measure_theory.measure.smul_finite +/- theorem measure_theory.measure.sub_add_cancel_of_le +/- theorem measure_theory.measure.sub_apply +/- theorem measure_theory.measure_lt_top +/- theorem measure_theory.measure_ne_top +/- theorem measure_theory.measure_univ_nnreal_eq_zero +/- theorem measure_theory.measure_univ_nnreal_pos +/- theorem measure_theory.prob_add_prob_compl +/- theorem measure_theory.prob_le_one - theorem measure_theory.probability_measure.ne_zero +/- theorem measure_theory.summable_measure_to_real - theorem metric.bounded.finite_measure + theorem metric.bounded.is_finite_measure Modified src/measure_theory/measure/regular.lean - theorem measurable_set.measure_eq_supr_is_closed_of_finite_measure + theorem measurable_set.measure_eq_supr_is_closed_of_is_finite_measure - theorem measure_theory.measure.weakly_regular.weakly_regular_of_inner_regular_of_finite_measure + theorem measure_theory.measure.weakly_regular.weakly_regular_of_inner_regular_of_is_finite_measure Modified src/measure_theory/measure/vector_measure.lean +/- def measure_theory.measure.to_signed_measure +/- theorem measure_theory.measure.to_signed_measure_add +/- theorem measure_theory.measure.to_signed_measure_apply_measurable +/- theorem measure_theory.measure.to_signed_measure_smul +/- theorem measure_theory.measure.to_signed_measure_sub_apply Modified src/probability_theory/independence.lean 2021-08-30 18:18:38 6adb5e8 feat(topology/algebra/ordered): monotone convergence in pi types (#8841) * add typeclasses `Sup_convergence_class` and `Inf_convergence_class` * reformulate theorems about monotone convergence in terms of these typeclasses; * provide instances for a linear order with order topology, for products, and for pi types. ESTIMATED CHANGES Modified src/data/set/function.lean Modified src/topology/algebra/ordered/basic.lean +/- theorem tendsto_at_bot_cinfi +/- theorem tendsto_at_bot_csupr +/- theorem tendsto_at_bot_infi +/- theorem tendsto_at_bot_is_glb + theorem tendsto_at_bot_is_lub +/- theorem tendsto_at_bot_supr +/- theorem tendsto_at_top_cinfi +/- theorem tendsto_at_top_csupr +/- theorem tendsto_at_top_infi + theorem tendsto_at_top_is_glb +/- theorem tendsto_at_top_is_lub +/- theorem tendsto_at_top_supr 2021-08-30 16:14:57 4a65197 chore(algebra/direct_sum/algebra): add missing rfl lemmas (#8924) I realized I was resorting to nasty unfolding to get these mid-proof ESTIMATED CHANGES Modified src/algebra/direct_sum/algebra.lean + theorem direct_sum.algebra_map_apply + theorem direct_sum.algebra_map_to_add_monoid_hom 2021-08-30 16:14:56 aa0694a fix(data/set/finite): drop {α : Type}, fixes universe issue (#8922) ESTIMATED CHANGES Modified src/data/set/finite.lean +/- theorem set.finite.infinite_compl +/- theorem set.infinite_of_finite_compl 2021-08-30 16:14:55 ad7519a doc(tactic/lint): instructions on fails_quickly failure (#8910) * Also set `is_fast` to `tt`, since it takes ~10s on all of mathlib. ESTIMATED CHANGES Modified src/tactic/lint/type_classes.lean 2021-08-30 16:14:54 b3807ee chore(data/finset/basic): lemmas about `(range n).nonempty` (#8905) Add `finset.nonempty_range_iff`, `finset.range_eq_empty_iff`, and `range.nonempty_range_succ`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.nonempty_range_iff + theorem finset.nonempty_range_succ + theorem finset.range_eq_empty_iff 2021-08-30 14:54:37 1e89df2 chore(algebra/monoid_algebra): convert a filename prefix into a folder (#8925) This moves: * `algebra.monoid_algebra` to `algebra.monoid_algebra.basic` * `algebra.monoid_algebra_to_direct_sum` to `algebra.monoid_algebra.to_direct_sum` ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/algebra/free_non_unital_non_assoc_algebra.lean Renamed src/algebra/monoid_algebra.lean to src/algebra/monoid_algebra/basic.lean Renamed src/algebra/monoid_algebra_to_direct_sum.lean to src/algebra/monoid_algebra/to_direct_sum.lean Modified src/data/polynomial/basic.lean Modified src/representation_theory/maschke.lean 2021-08-30 13:16:49 98466d2 feat(algebra/direct_sum): graded algebras (#8783) This provides a `direct_sum.galgebra` structure on top of the existing `direct_sum.gmonoid` structure. This typeclass is used to provide an `algebra R (⨁ i, A i)` instance. This also renames and improves the stateement of `direct_sum.module.ext` to `direct_sum.linear_map_ext` and adds `direect_sum.ring_hom_ext` and `direct_sum.alg_hom_ext` to match. ESTIMATED CHANGES Added src/algebra/direct_sum/algebra.lean + theorem direct_sum.alg_hom_ext + def direct_sum.to_algebra Modified src/algebra/direct_sum/module.lean + theorem direct_sum.linear_map_ext + theorem direct_sum.lof_eq_of - theorem direct_sum.to_module.ext Modified src/algebra/direct_sum/ring.lean + theorem direct_sum.ring_hom_ext Modified src/algebra/monoid_algebra_to_direct_sum.lean Modified src/linear_algebra/direct_sum/tensor_product.lean Modified src/ring_theory/polynomial/homogeneous.lean 2021-08-29 18:50:41 2bae06a fix(ring_theory/polynomial/homogeneous): spelling mistake in `homogeneous` (#8914) ESTIMATED CHANGES Modified src/ring_theory/polynomial/homogeneous.lean + theorem mv_polynomial.homogeneous_submodule_eq_finsupp_supported + theorem mv_polynomial.homogeneous_submodule_mul - theorem mv_polynomial.homogenous_submodule_eq_finsupp_supported - theorem mv_polynomial.homogenous_submodule_mul 2021-08-29 14:08:26 395bb6c feat(algebraic_geometry): Lift isomorphism of sheafed spaces to locally ringed spaces (#8887) Adds the fact that an isomorphism of sheafed spaces can be lifted to an isomorphism of locally ringed spaces. The main ingredient is the fact that stalk maps of isomorphisms are again isomorphisms. In particular, this implies that the forgetful functor `LocallyRingedSpace ⥤ SheafedSpace CommRing` reflects isomorphisms. ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean + def algebraic_geometry.LocallyRingedSpace.hom_of_SheafedSpace_hom_of_is_iso + def algebraic_geometry.LocallyRingedSpace.iso_of_SheafedSpace_iso Modified src/algebraic_geometry/stalks.lean + theorem algebraic_geometry.PresheafedSpace.stalk_map.congr + theorem algebraic_geometry.PresheafedSpace.stalk_map.congr_hom + theorem algebraic_geometry.PresheafedSpace.stalk_map.congr_point + def algebraic_geometry.PresheafedSpace.stalk_map.stalk_iso 2021-08-28 19:59:37 d75a2d9 refactor(data/set/finite): use `[fintype (plift ι)]` in `finite_Union` (#8872) This way we can use `finite_Union` instead of `finite_Union_Prop`. ESTIMATED CHANGES Modified src/data/set/finite.lean +/- theorem set.finite_Union - theorem set.finite_Union_Prop +/- theorem set.finite_range Modified src/topology/uniform_space/cauchy.lean 2021-08-28 18:30:09 db06b5a feat(group_theory/perm/cycle_type): Fixed points of permutations of prime order (#8832) A few basic lemmas about fixed points of permutations of prime order. ESTIMATED CHANGES Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.card_compl_support_modeq + theorem equiv.perm.exists_fixed_point_of_prime' + theorem equiv.perm.exists_fixed_point_of_prime 2021-08-28 18:30:08 e824b88 refactor(category_theory/limits/final): Symmetric API for final and initial functors (#8808) Dualise the API for cofinal functors to symmetrically support final and initial functors. This PR renames `cofinal` functors to `final` functors. ESTIMATED CHANGES Renamed src/category_theory/limits/cofinal.lean to src/category_theory/limits/final.lean - def category_theory.cofinal.cocones_equiv - theorem category_theory.cofinal.cofinal_of_colimit_comp_coyoneda_iso_punit - def category_theory.cofinal.colimit_cocone_comp - theorem category_theory.cofinal.colimit_cocone_comp_aux - def category_theory.cofinal.colimit_cocone_of_comp - def category_theory.cofinal.colimit_comp_coyoneda_iso - def category_theory.cofinal.colimit_iso' - def category_theory.cofinal.colimit_iso - theorem category_theory.cofinal.colimit_pre_is_iso_aux - def category_theory.cofinal.cones_equiv - def category_theory.cofinal.extend_cocone - def category_theory.cofinal.extend_cone - def category_theory.cofinal.extend_cone_cocone_to_cone - def category_theory.cofinal.extend_cone_cone_to_cocone - theorem category_theory.cofinal.has_colimit_of_comp - theorem category_theory.cofinal.has_limit_of_comp - def category_theory.cofinal.hom_to_lift - theorem category_theory.cofinal.induction - def category_theory.cofinal.is_colimit_extend_cocone_equiv - def category_theory.cofinal.is_colimit_whisker_equiv - def category_theory.cofinal.is_limit_extend_cone_equiv - def category_theory.cofinal.is_limit_whisker_equiv - def category_theory.cofinal.lift - def category_theory.cofinal.limit_cone_comp - theorem category_theory.cofinal.limit_cone_comp_aux - def category_theory.cofinal.limit_cone_of_comp - def category_theory.cofinal.limit_iso' - def category_theory.cofinal.limit_iso - theorem category_theory.cofinal.limit_pre_is_iso_aux - theorem category_theory.cofinal.zigzag_of_eqv_gen_quot_rel + def category_theory.functor.final.cocones_equiv + theorem category_theory.functor.final.cofinal_of_colimit_comp_coyoneda_iso_punit + def category_theory.functor.final.colimit_cocone_comp + theorem category_theory.functor.final.colimit_cocone_comp_aux + def category_theory.functor.final.colimit_cocone_of_comp + def category_theory.functor.final.colimit_comp_coyoneda_iso + def category_theory.functor.final.colimit_iso' + def category_theory.functor.final.colimit_iso + theorem category_theory.functor.final.colimit_pre_is_iso_aux + def category_theory.functor.final.extend_cocone + theorem category_theory.functor.final.has_colimit_of_comp + def category_theory.functor.final.hom_to_lift + def category_theory.functor.final.induction + def category_theory.functor.final.is_colimit_extend_cocone_equiv + def category_theory.functor.final.is_colimit_whisker_equiv + def category_theory.functor.final.lift + theorem category_theory.functor.final.zigzag_of_eqv_gen_quot_rel + theorem category_theory.functor.final_of_adjunction + theorem category_theory.functor.final_of_initial_op + def category_theory.functor.initial.cones_equiv + def category_theory.functor.initial.extend_cone + theorem category_theory.functor.initial.has_limit_of_comp + def category_theory.functor.initial.hom_to_lift + def category_theory.functor.initial.induction + def category_theory.functor.initial.is_limit_extend_cone_equiv + def category_theory.functor.initial.is_limit_whisker_equiv + def category_theory.functor.initial.lift + def category_theory.functor.initial.limit_cone_comp + theorem category_theory.functor.initial.limit_cone_comp_aux + def category_theory.functor.initial.limit_cone_of_comp + def category_theory.functor.initial.limit_iso' + def category_theory.functor.initial.limit_iso + theorem category_theory.functor.initial.limit_pre_is_iso_aux + theorem category_theory.functor.initial_of_adjunction + theorem category_theory.functor.initial_of_final_op Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean 2021-08-28 18:30:07 14a992b chore(data/set_like): some additional documentation (#8765) Gives some more explanation for `set_like` and what it does and is for. ESTIMATED CHANGES Modified src/data/set_like/basic.lean 2021-08-28 17:56:07 0b48570 feat(group_theory/nilpotent): add subgroups of nilpotent group are nilpotent (#8854) ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean + theorem lower_central_series_map_subtype_le + theorem lower_central_series_succ 2021-08-28 16:48:45 1aaff8d feat(measure_theory/decomposition/lebesgue): Lebesgue decomposition for sigma-finite measures (#8875) This PR shows sigma-finite measures `have_lebesgue_decomposition`. With this instance, `absolutely_continuous_iff_with_density_radon_nikodym_deriv_eq` will provide the Radon-Nikodym theorem for sigma-finite measures. ESTIMATED CHANGES Modified src/measure_theory/constructions/borel_space.lean + theorem measurable.ennreal_tsum' Modified src/measure_theory/decomposition/lebesgue.lean + theorem measure_theory.measure.have_lebesgue_decomposition_of_finite_measure Modified src/measure_theory/decomposition/radon_nikodym.lean + theorem measure_theory.measure.absolutely_continuous_iff_with_density_radon_nikodym_deriv_eq - theorem measure_theory.measure.absolutely_continuous_iff_with_density_radon_nikodym_derive_eq Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.with_density_indicator + theorem measure_theory.with_density_tsum Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.sum_add_sum + theorem measure_theory.measure.sum_congr 2021-08-28 09:42:18 42b5e80 feat(data/polynomial/basic): monomial_eq_zero_iff (#8897) Via a new `monomial_injective`. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.monomial_eq_zero_iff + theorem polynomial.monomial_injective 2021-08-28 08:03:49 8ee05e9 feat(data/nat/log): Ceil log (#8764) Defines the upper natural log, which is the least `k` such that `n ≤ b^k`. Also expand greatly the docs of `data.nat.multiplicity`, in particular to underline that it proves Legendre's theorem. ESTIMATED CHANGES Modified src/data/nat/log.lean + def nat.clog + theorem nat.clog_eq_one + theorem nat.clog_le_clog_of_le + theorem nat.clog_mono + theorem nat.clog_of_left_le_one + theorem nat.clog_of_right_le_one + theorem nat.clog_of_two_le + theorem nat.clog_one_left + theorem nat.clog_one_right + theorem nat.clog_pos + theorem nat.clog_pow + theorem nat.clog_zero_left + theorem nat.clog_zero_right + theorem nat.le_pow_clog + theorem nat.le_pow_iff_clog_le - theorem nat.log_b_one_eq_zero - theorem nat.log_b_zero_eq_zero - theorem nat.log_eq_zero_of_le - theorem nat.log_eq_zero_of_lt + theorem nat.log_le_clog - theorem nat.log_le_log_succ + theorem nat.log_of_left_le_one + theorem nat.log_of_lt - theorem nat.log_one_eq_zero + theorem nat.log_one_left + theorem nat.log_one_right + theorem nat.log_pos +/- theorem nat.log_pow - theorem nat.log_zero_eq_zero + theorem nat.log_zero_left + theorem nat.log_zero_right + theorem nat.lt_pow_succ_log_self +/- theorem nat.pow_le_iff_le_log +/- theorem nat.pow_log_le_self + theorem nat.pow_pred_clog_lt_self - theorem nat.pow_succ_log_gt_self Modified src/data/nat/multiplicity.lean +/- theorem nat.multiplicity_eq_card_pow_dvd 2021-08-28 02:16:20 d3c592f chore(scripts): update nolints.txt (#8899) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-08-28 01:06:00 0fd51b1 feat(data/real/irrational): exists irrational between any two distinct rationals and reals (#8753) Did not find these proofs in `data/real/irrational`, seemed like they belong here. Just proving the standard facts about irrationals between rats and reals. I am using these lemmas in a repo about the Thomae's function. ESTIMATED CHANGES Modified src/data/real/irrational.lean + theorem exists_irrational_btwn 2021-08-27 17:22:21 2eaec05 feat(ring_theory): define integrally closed domains (#8893) In this follow-up to #8882, we define the notion of an integrally closed domain `R`, which contains all integral elements of `Frac(R)`. We show the equivalence to `is_integral_closure R R K` for a field of fractions `K`. We provide instances for `is_dedekind_domain`s, `unique_fractorization_monoid`s, and to the integers of a valuation. In particular, the rational root theorem provides a proof that `ℤ` is integrally closed. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.algebra_map_eq_apply + theorem alg_hom.algebra_map_eq_apply Modified src/ring_theory/dedekind_domain.lean +/- theorem is_dedekind_domain_inv.integrally_closed Modified src/ring_theory/integral_closure.lean + theorem is_integral_alg_equiv Added src/ring_theory/integrally_closed.lean + theorem is_integrally_closed.integral_closure_eq_bot + theorem is_integrally_closed.integral_closure_eq_bot_iff + theorem is_integrally_closed.is_integral_iff + theorem is_integrally_closed_iff + theorem is_integrally_closed_iff_is_integral_closure Modified src/ring_theory/polynomial/rational_root.lean - theorem unique_factorization_monoid.integrally_closed Modified src/ring_theory/valuation/integral.lean + theorem valuation.integers.integrally_closed 2021-08-27 15:28:35 c4cf4c2 feat(algebra/polynomial/big_operators): coeff of sums and prods of polynomials (#8680) Additionally, provide results for degree and nat_degree over lists, which generalize away from requiring commutativity. ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean + theorem polynomial.coeff_list_prod_of_nat_degree_le + theorem polynomial.coeff_multiset_prod_of_nat_degree_le + theorem polynomial.coeff_prod_of_nat_degree_le + theorem polynomial.degree_list_sum_le +/- theorem polynomial.leading_coeff_multiset_prod' + theorem polynomial.nat_degree_list_prod_le + theorem polynomial.nat_degree_list_sum_le + theorem polynomial.nat_degree_multiset_sum_le + theorem polynomial.nat_degree_sum_le Modified src/data/list/basic.lean + theorem list.sum_le_foldr_max 2021-08-27 14:36:55 dcd60e2 feat(ring_theory/trace): the trace form is nondegenerate (#8777) This PR shows the determinant of the trace form is nonzero over a finite separable field extension. This is an important ingredient in showing the integral closure of a Dedekind domain in a finite separable extension is again a Dedekind domain, i.e. that rings of integers are Dedekind domains. We extend the results of #8762 to write the trace form as a Vandermonde matrix to get a nice expression for the determinant, then use separability to show this value is nonzero. ESTIMATED CHANGES Modified src/linear_algebra/matrix/basis.lean + theorem basis.to_matrix_mul_to_matrix_flip Modified src/ring_theory/trace.lean + theorem det_trace_form_ne_zero' + theorem det_trace_form_ne_zero 2021-08-27 14:36:54 7f25698 feat(analysis/complex/isometry): Show that certain complex isometries are not equal (#8646) 1. Lemma `reflection_rotation` proves that rotation by `(a : circle)` is not equal to reflection over the x-axis (i.e, `conj_lie`). 2. Lemma `rotation_injective` proves that rotation by different `(a b: circle)` are not the same,(i.e, `rotation` is injective). Co-authored by Kyle Miller ESTIMATED CHANGES Modified src/analysis/complex/isometry.lean + theorem linear_isometry_equiv.congr_fun + theorem rotation_injective + theorem rotation_ne_conj_lie + def rotation_of + theorem rotation_of_rotation 2021-08-27 14:02:35 7cfc987 feat(measure_theory/decomposition/radon_nikodym): the Radon-Nikodym theorem (#8763) The Radon-Nikodym theorem 🎉 ESTIMATED CHANGES Modified src/measure_theory/decomposition/lebesgue.lean - def measure_theory.measure.have_lebesgue_decomposition +/- theorem measure_theory.measure.have_lebesgue_decomposition_add - theorem measure_theory.measure.have_lebesgue_decomposition_of_finite_measure +/- theorem measure_theory.measure.have_lebesgue_decomposition_spec Added src/measure_theory/decomposition/radon_nikodym.lean + theorem measure_theory.measure.absolutely_continuous_iff_with_density_radon_nikodym_derive_eq + theorem measure_theory.measure.with_density_radon_nikodym_deriv_eq 2021-08-27 12:25:45 023a816 feat(algebra): define a bundled type of absolute values (#8881) The type `absolute_value R S` is a bundled version of the typeclass `is_absolute_value R S` defined in `data/real/cau_seq.lean` (why was it defined there?), putting both in one file `algebra/absolute_value.lean`. The lemmas from `is_abs_val` have been copied mostly literally, with weakened assumptions when possible. Maps between the bundled and unbundled versions are also available. We also define `absolute_value.abs` that represents the "standard" absolute value `abs`. The point of this PR is both to modernize absolute values into bundled structures, and to make it easier to extend absolute values to represent "absolute values respecting the Euclidean domain structure", and from there "absolute values that show the class group is finite". ESTIMATED CHANGES Added src/algebra/absolute_value.lean + theorem absolute_value.abs_abv_sub_le_abv_sub + theorem absolute_value.coe_to_monoid_hom + theorem absolute_value.coe_to_monoid_with_zero_hom + theorem absolute_value.coe_to_mul_hom + def absolute_value.to_monoid_hom + def absolute_value.to_monoid_with_zero_hom + structure absolute_value + theorem is_absolute_value.abs_abv_sub_le_abv_sub + theorem is_absolute_value.abv_div + def is_absolute_value.abv_hom + theorem is_absolute_value.abv_inv + theorem is_absolute_value.abv_neg + theorem is_absolute_value.abv_one + theorem is_absolute_value.abv_pos + theorem is_absolute_value.abv_pow + theorem is_absolute_value.abv_sub + theorem is_absolute_value.abv_sub_le + theorem is_absolute_value.abv_zero + theorem is_absolute_value.sub_abv_le_abv_sub + def is_absolute_value.to_absolute_value Modified src/data/real/cau_seq.lean - theorem is_absolute_value.abs_abv_sub_le_abv_sub - theorem is_absolute_value.abv_div - def is_absolute_value.abv_hom - theorem is_absolute_value.abv_inv - theorem is_absolute_value.abv_neg - theorem is_absolute_value.abv_one - theorem is_absolute_value.abv_pos - theorem is_absolute_value.abv_pow - theorem is_absolute_value.abv_sub - theorem is_absolute_value.abv_sub_le - theorem is_absolute_value.abv_zero - theorem is_absolute_value.sub_abv_le_abv_sub 2021-08-27 11:47:58 a327851 feat(ring_theory): a typeclass `is_integral_closure` (#8882) The typeclass `is_integral_closure A R B` states `A` is the integral closure of `R` in `B`, i.e. that an element of `B` is integral over `R` iff it is an element of (the image of) `A`. We also show that any integral extension of `R` contained in `B` is contained in `A`, and the integral closure is unique up to isomorphism. This was suggested in the review of #8701, in order to define a characteristic predicate for rings of integers. ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral.algebra_map + theorem is_integral_closure.algebra_map_equiv + theorem is_integral_closure.algebra_map_lift + theorem is_integral_closure.algebra_map_mk' + theorem is_integral_closure.is_integral_algebra + theorem is_integral_closure.mk'_add + theorem is_integral_closure.mk'_algebra_map + theorem is_integral_closure.mk'_mul + theorem is_integral_closure.mk'_one + theorem is_integral_closure.mk'_zero 2021-08-27 10:03:00 88e47d7 feat(linear_algebra/matrix/nonsingular_inverse): adjugate_mul_distrib_aux (#8681) We prove towards the fact that the adjugate of a matrix distributes over the product. The current proof assumes regularity of the matrices. In the general case, this hypothesis is not required, but this lemma will be crucial in a follow-up PR which has to use polynomial matrices for the general case. Additionally, we provide many API lemmas for det, cramer, nonsing_inv, and adjugate. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.one_eq_pi_single Modified src/data/pi.lean + theorem pi.single_apply + theorem pi.single_comm + theorem pi.single_eq_of_ne' Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_eq_elem_of_subsingleton Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem is_unit.coe_inv_mul + theorem is_unit.inv_smul + theorem is_unit.mul_coe_inv + theorem matrix.adjugate_mul_distrib_aux + theorem matrix.adjugate_one + theorem matrix.adjugate_subsingleton + theorem matrix.cramer_one + theorem matrix.cramer_row_self + theorem matrix.cramer_subsingleton_apply + theorem matrix.cramer_zero + theorem matrix.inv_adjugate + theorem matrix.inv_def + theorem matrix.inv_inj + theorem matrix.inv_inv_inv + theorem matrix.inv_one + theorem matrix.inv_smul' + theorem matrix.inv_smul + theorem matrix.inv_zero + theorem matrix.is_regular_of_is_left_regular_det + theorem matrix.is_unit_nonsing_inv_det_iff + theorem matrix.mul_inv_rev + theorem matrix.nonsing_inv_apply_not_is_unit + theorem matrix.ring_hom.map_adjugate 2021-08-27 08:03:55 0c50326 refactor(*): use `is_empty` instead of `not (nonempty α)` (#8858) `eq_empty_of_not_nonempty` gets dropped in favour of `eq_empty_of_is_empty`. ESTIMATED CHANGES Modified src/algebra/order.lean + theorem eq.not_gt + theorem eq.not_lt Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/multilinear.lean Modified src/category_theory/preadditive/schur.lean Modified src/data/finset/basic.lean - theorem finset.eq_empty_of_not_nonempty Modified src/data/fintype/basic.lean - theorem finset.univ_eq_empty' +/- theorem finset.univ_eq_empty + theorem finset.univ_eq_empty_iff + theorem fintype.card_eq_zero - theorem not_nonempty_fintype Modified src/data/set/basic.lean - theorem set.eq_empty_of_not_nonempty Modified src/field_theory/primitive_element.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/logic/embedding.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/ae_measurable_sequence.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measurable_space.lean + theorem measurable_const' + theorem measurable_of_empty + theorem measurable_of_empty_codomain - theorem measurable_of_not_nonempty Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.eq_zero_of_is_empty - theorem measure_theory.measure.eq_zero_of_not_nonempty - theorem measure_theory.measure.sigma_finite_of_not_nonempty Modified src/order/compactly_generated.lean Modified src/order/filter/basic.lean - theorem filter.filter_eq_bot_of_not_nonempty + theorem filter.tendsto_of_is_empty - theorem filter.tendsto_of_not_nonempty Modified src/order/order_iso_nat.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/category/Profinite/cofiltered_limit.lean 2021-08-27 07:04:59 fe13f03 feat(category_theory/structured_arrow): Duality between structured and costructured arrows (#8807) This PR formally sets up the duality of structured and costructured arrows as equivalences of categories. Unfortunately, the code is a bit repetitive, as the four functors introduced all follow a similar pattern, which I wasn't able to abstract out. Suggestions are welcome! ESTIMATED CHANGES Modified src/category_theory/structured_arrow.lean + def category_theory.costructured_arrow.to_structured_arrow' + def category_theory.costructured_arrow.to_structured_arrow + def category_theory.costructured_arrow_op_equivalence + def category_theory.structured_arrow.to_costructured_arrow' + def category_theory.structured_arrow.to_costructured_arrow + def category_theory.structured_arrow_op_equivalence 2021-08-27 06:31:17 4705a6b doc(ring_theory/hahn_series): Update Hahn Series docstring (#8883) Updates `ring_theory/hahn_series` docstring to remove outdated TODOs ESTIMATED CHANGES Modified docs/references.bib Modified src/ring_theory/hahn_series.lean 2021-08-27 05:01:51 a9de197 feat(algebra/big_operators/basic): add `prod_dite_of_false`, `prod_dite_of_true` (#8865) The proofs are not mine cf [Zulip conversation](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60prod_dite_of_true.60) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_dite_of_false + theorem finset.prod_dite_of_true 2021-08-27 03:31:00 bcd5cd3 feat(algebra/pointwise): add to_additive attributes for pointwise smul (#8878) I wanted this to generalize some definitions in #2819 but it should be independent. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean - theorem set.singleton_vadd Modified src/algebra/pointwise.lean 2021-08-27 02:26:16 bb4026f chore(scripts): update nolints.txt (#8886) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-08-27 00:42:51 11e3047 feat(algebra/ordered_monoid): min_top_(left|right) (#8880) ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean + theorem min_top_left + theorem min_top_right 2021-08-26 19:37:09 e290569 feat(data/nat/totient): add nat.totient_prime_iff (#8833) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.filter_card_eq + theorem finset.not_subset Modified src/data/nat/prime.lean + theorem nat.prime_of_coprime Modified src/data/nat/totient.lean + theorem nat.totient_eq_iff_prime 2021-08-26 19:37:08 080362d feat(data/finset/pi_induction): induction on `Π i, finset (α i)` (#8794) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.not_ssubset_empty + theorem finset.sigma_eq_empty +/- theorem finset.sigma_mono + theorem finset.sigma_nonempty +/- def option.to_finset Added src/data/finset/pi_induction.lean + theorem finset.induction_on_pi + theorem finset.induction_on_pi_max + theorem finset.induction_on_pi_min + theorem finset.induction_on_pi_of_choice 2021-08-26 19:37:07 83490fc feat(data/multiset/basic): add some lemmas (#8787) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.countp_cons + theorem multiset.countp_map + theorem multiset.filter_cons + theorem multiset.filter_nsmul +/- theorem multiset.mem_nsmul + theorem multiset.mem_of_mem_nsmul + theorem multiset.nsmul_cons + theorem multiset.nsmul_repeat + theorem multiset.nsmul_singleton + theorem multiset.prod_nonneg Modified src/data/pnat/factors.lean 2021-08-26 18:49:05 d9f4713 feat(ring_theory/trace): Tr(x) is the sum of embeddings σ x into an algebraically closed field (#8762) The point of this PR is to provide the other formulation of "the trace of `x` is the sum of its conjugates", alongside `trace_eq_sum_roots`, namely `trace_eq_sum_embeddings`. We do so by exploiting the bijection between conjugate roots to `x : L` over `K` and embeddings of `K(x)`, then counting the number of embeddings of `x` to go to the whole of `L`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean Modified src/field_theory/primitive_element.lean + theorem alg_hom.card Modified src/field_theory/separable.lean Modified src/linear_algebra/free_module_pid.lean Modified src/ring_theory/power_basis.lean Modified src/ring_theory/trace.lean + theorem sum_embeddings_eq_finrank_mul + theorem trace_eq_sum_embeddings + theorem trace_eq_sum_embeddings_gen + theorem trace_eq_trace_adjoin 2021-08-26 16:48:12 5a2082d chore(category/grothendieck): split definition to avoid timeout (#8871) Helpful for #8807. ESTIMATED CHANGES Modified src/category_theory/grothendieck.lean + def category_theory.grothendieck.grothendieck_Type_to_Cat_functor + def category_theory.grothendieck.grothendieck_Type_to_Cat_inverse 2021-08-26 16:48:10 9038709 feat(analysis/normed_space/inner_product): multiplication by I is real-orthogonal (#8852) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem real_inner_I_smul_self 2021-08-26 16:48:09 5bd69fd feat(ring_theory/ideal/local_ring): Isomorphisms are local (#8850) Adds the fact that isomorphisms (and ring equivs) are local ring homomorphisms. ESTIMATED CHANGES Modified src/ring_theory/ideal/local_ring.lean + theorem is_local_ring_hom_of_iso 2021-08-26 16:48:08 5afdaea feat(data/fin): reverse_induction (#8845) ESTIMATED CHANGES Modified src/data/fin.lean + def fin.last_cases + theorem fin.last_cases_cast_succ + theorem fin.last_cases_last + def fin.reverse_induction + theorem fin.reverse_induction_cast_succ + theorem fin.reverse_induction_last 2021-08-26 16:48:07 678a2b5 feat(data/list,multiset,finset): monotone_filter_(left|right) (#8842) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.monotone_filter_left + theorem finset.monotone_filter_right Modified src/data/list/basic.lean - theorem list.filter_sublist_filter + theorem list.is_infix.filter + theorem list.is_prefix.filter + theorem list.is_suffix.filter + theorem list.monotone_filter_left + theorem list.monotone_filter_right + theorem list.sublist.filter Modified src/data/list/perm.lean + theorem list.subperm.filter Modified src/data/multiset/basic.lean + theorem multiset.monotone_filter_left + theorem multiset.monotone_filter_right 2021-08-26 16:48:06 8e87f42 feat(tactic/lint/misc): Add syntactic tautology linter (#8821) Add a linter that checks whether a lemma is a declaration that `∀ a b ... z,e₁ = e₂` where `e₁` and `e₂` are equal exprs, we call declarations of this form syntactic tautologies. Such lemmas are (mostly) useless and sometimes introduced unintentionally when proving basic facts with rfl when elaboration results in a different term than the user intended. @PatrickMassot suggested this at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/syntactic.20tautology.20linter/near/250267477. The found problems are fixed in #8811. ESTIMATED CHANGES Modified src/tactic/lint/default.lean Modified src/tactic/lint/misc.lean 2021-08-26 13:06:18 70e1f9a feat(data/fin): add_cases (#8876) ESTIMATED CHANGES Modified src/data/fin.lean + def fin.add_cases + theorem fin.add_cases_left + theorem fin.add_cases_right 2021-08-26 13:06:17 976e930 chore(archive/imo/README): whitespace breaks links (#8874) ESTIMATED CHANGES Modified archive/imo/README.md 2021-08-26 13:06:15 0d07d04 chore(data/set): add a few lemmas and `@[simp]` attrs (#8873) ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.inter_eq_left_iff_subset +/- theorem set.inter_eq_right_iff_subset +/- theorem set.inter_univ + theorem set.union_eq_left_iff_subset + theorem set.union_eq_right_iff_subset +/- theorem set.univ_inter Modified src/linear_algebra/multilinear.lean 2021-08-26 13:06:14 1f13610 feat(*): remove the `fintype` requirement from matrices. (#8810) For historical reasons, `matrix` has always had `fintype` attached to it. I remove this artificial limitation, but with a big caveat; multiplication is currently defined in terms of the dot product, which requires finiteness; therefore, any multiplicative structure on matrices currently requires fintypes. This can be removed in future contributions, however. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean +/- theorem lie_algebra.matrix_trace_commutator_zero +/- theorem lie_algebra.orthogonal.JD_transform +/- theorem lie_algebra.orthogonal.PD_inv +/- theorem lie_algebra.orthogonal.is_unit_PD +/- theorem lie_algebra.orthogonal.mem_so +/- def lie_algebra.orthogonal.so' +/- def lie_algebra.orthogonal.so +/- def lie_algebra.orthogonal.type_B +/- def lie_algebra.orthogonal.type_D +/- def lie_algebra.special_linear.sl +/- theorem lie_algebra.special_linear.sl_bracket +/- theorem lie_algebra.special_linear.sl_non_abelian +/- def lie_algebra.symplectic.sp Modified src/algebra/lie/matrix.lean +/- def matrix.reindex_lie_equiv +/- theorem matrix.reindex_lie_equiv_apply +/- theorem matrix.reindex_lie_equiv_symm Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/data/matrix/basic.lean +/- def matrix.add_monoid_hom_mul_left +/- def matrix.add_monoid_hom_mul_right +/- theorem matrix.add_mul_vec +/- theorem matrix.add_vec_mul +/- theorem matrix.col_mul_vec +/- theorem matrix.col_vec_mul +/- theorem matrix.conj_transpose_mul +/- theorem matrix.diagonal_mul +/- theorem matrix.diagonal_mul_diagonal' +/- theorem matrix.diagonal_mul_diagonal +/- def matrix.diagonal_ring_hom +/- theorem matrix.dot_product_assoc +/- theorem matrix.map_mul +/- theorem matrix.matrix_eq_sum_std_basis +/- theorem matrix.minor_minor +/- theorem matrix.minor_mul +/- theorem matrix.minor_mul_equiv +/- theorem matrix.mul_apply' +/- theorem matrix.mul_apply +/- theorem matrix.mul_diagonal +/- theorem matrix.mul_eq_mul +/- theorem matrix.mul_minor_one +/- theorem matrix.mul_mul_left +/- theorem matrix.mul_smul +/- def matrix.mul_vec.add_monoid_hom_left +/- def matrix.mul_vec +/- theorem matrix.mul_vec_add +/- theorem matrix.mul_vec_diagonal +/- theorem matrix.mul_vec_mul_vec +/- theorem matrix.mul_vec_neg +/- theorem matrix.mul_vec_smul_assoc +/- theorem matrix.mul_vec_transpose +/- theorem matrix.mul_vec_zero +/- theorem matrix.neg_mul_vec +/- theorem matrix.neg_vec_mul +/- theorem matrix.one_minor_mul +/- theorem matrix.one_mul_vec +/- theorem matrix.reindex_trans +/- theorem matrix.row_mul_col_apply +/- theorem matrix.row_mul_vec +/- theorem matrix.row_vec_mul +/- theorem matrix.smul_eq_diagonal_mul +/- theorem matrix.smul_mul +/- theorem matrix.smul_mul_vec_assoc +/- theorem matrix.star_mul +/- theorem matrix.transpose_mul +/- def matrix.vec_mul +/- theorem matrix.vec_mul_add +/- theorem matrix.vec_mul_diagonal +/- theorem matrix.vec_mul_neg +/- theorem matrix.vec_mul_one +/- theorem matrix.vec_mul_transpose +/- theorem matrix.vec_mul_vec_mul +/- theorem matrix.vec_mul_zero +/- theorem matrix.zero_mul_vec +/- theorem matrix.zero_vec_mul +/- def matrix Modified src/data/matrix/block.lean +/- theorem matrix.block_diagonal'_mul +/- theorem matrix.block_diagonal_mul +/- theorem matrix.from_blocks_multiply +/- def matrix.to_block +/- theorem matrix.to_block_apply +/- def matrix.to_square_block_prop +/- theorem matrix.to_square_block_prop_def Modified src/data/matrix/kronecker.lean +/- theorem matrix.mul_kronecker_mul +/- theorem matrix.mul_kronecker_tmul_mul Modified src/data/matrix/notation.lean +/- theorem matrix.cons_mul +/- theorem matrix.cons_mul_vec +/- theorem matrix.empty_mul +/- theorem matrix.empty_mul_vec +/- theorem matrix.mul_empty +/- theorem matrix.mul_val_succ +/- theorem matrix.vec_mul_empty Modified src/data/matrix/pequiv.lean +/- theorem pequiv.matrix_mul_apply +/- theorem pequiv.mul_matrix_apply +/- theorem pequiv.single_mul_single +/- theorem pequiv.single_mul_single_of_ne +/- theorem pequiv.single_mul_single_right +/- theorem pequiv.to_matrix_trans +/- theorem pequiv.to_pequiv_mul_matrix Modified src/linear_algebra/bilinear_form.lean +/- def matrix.to_bilin'_aux +/- theorem matrix.to_bilin'_aux_std_basis Modified src/linear_algebra/matrix/basis.lean +/- theorem basis.sum_to_matrix_smul_self +/- theorem basis.to_lin_to_matrix +/- theorem basis.to_matrix_eq_to_matrix_constr +/- def basis.to_matrix_equiv +/- theorem basis.to_matrix_mul_to_matrix Modified src/linear_algebra/matrix/block.lean +/- def matrix.block_triangular_matrix' +/- def matrix.block_triangular_matrix +/- theorem matrix.upper_two_block_triangular' +/- theorem matrix.upper_two_block_triangular Modified src/linear_algebra/matrix/reindex.lean +/- theorem matrix.det_reindex_alg_equiv +/- theorem matrix.det_reindex_linear_equiv_self +/- theorem matrix.mul_reindex_linear_equiv_one +/- theorem matrix.reindex_linear_equiv_mul Modified src/linear_algebra/matrix/to_lin.lean +/- def alg_equiv_matrix' +/- def alg_equiv_matrix +/- theorem linear_map.to_matrix'_comp +/- theorem linear_map.to_matrix'_mul +/- theorem linear_map.to_matrix_comp +/- def matrix.mul_vec_lin +/- theorem matrix.mul_vec_lin_apply +/- theorem matrix.rank_vec_mul_vec +/- theorem matrix.to_lin'_mul +/- theorem matrix.to_lin'_mul_apply +/- def matrix.to_lin'_of_inv +/- theorem matrix.to_lin_mul +/- theorem matrix.to_lin_mul_apply Modified src/linear_algebra/matrix/trace.lean +/- def matrix.trace Modified src/ring_theory/matrix_algebra.lean 2021-08-26 11:17:26 0861cc7 refactor(*): move code about `ulift`/`plift` (#8863) * move old file about `ulift`/`plift` from `data.ulift` to `control.ulift`; * redefine `ulift.map` etc without pattern matching; * create new `data.ulift`, move `ulift.subsingleton` etc from `data.equiv.basic` to this file; * add `ulift.is_empty` and `plift.is_empty`; * add `ulift.exists`, `plift.exists`, `ulift.forall`, and `plift.forall`; * rename `equiv.nonempty_iff_nonempty` to `equiv.nonempty_congr` to match `equiv.subsingleton_congr` etc; * rename `plift.fintype` to `plift.fintype_Prop`, add a new `plift.fintype`. ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean Modified src/category_theory/isomorphism_classes.lean Modified src/category_theory/sites/sheaf.lean Modified src/control/functor.lean Added src/control/ulift.lean + theorem plift.bind_up + theorem plift.map_up + theorem plift.rec.constant + theorem plift.seq_up + theorem ulift.bind_up + theorem ulift.map_up + theorem ulift.rec.constant + theorem ulift.seq_up Modified src/data/equiv/basic.lean + theorem equiv.nonempty_congr - theorem equiv.nonempty_iff_nonempty Modified src/data/fintype/basic.lean + theorem fintype.card_plift Modified src/data/ulift.lean - theorem plift.rec.constant + theorem plift.«exists» + theorem plift.«forall» - theorem ulift.rec.constant + theorem ulift.«exists» + theorem ulift.«forall» Modified src/testing/slim_check/sampleable.lean 2021-08-26 11:17:25 2a6fef3 refactor(order/filter/bases): allow `ι : Sort*` (#8856) * `ι` in `filter.has_basis (l : filter α) (p : ι → Prop) (s : ι → set )` now can be a `Sort *`; * some lemmas now have "primed" versions that use `pprod` instead of `prod`; * new lemma: `filter.has_basis_supr`. I also added a few missing lemmas to `data.pprod` and golfed a couple of proofs. ESTIMATED CHANGES Modified src/data/pprod.lean + theorem pprod.exists' + theorem pprod.forall' +/- theorem pprod.mk.eta + theorem pprod.«exists» + theorem pprod.«forall» Modified src/order/filter/bases.lean +/- structure filter.has_antimono_basis + theorem filter.has_basis.inf' +/- theorem filter.has_basis.inf + theorem filter.has_basis.prod'' +/- theorem filter.has_basis.prod + theorem filter.has_basis.sup' +/- theorem filter.has_basis.sup +/- theorem filter.has_basis_binfi_principal' +/- theorem filter.has_basis_infi_principal_finite + theorem filter.has_basis_supr +/- structure filter.is_antimono_basis Modified src/topology/uniform_space/separation.lean 2021-08-26 11:17:24 3287c94 refactor(tactic/ext): simplify ext attribute (#8785) This simplifies the `ext` attribute from taking a list with `*`, `(->)` and names to just `@[ext]` or `@[ext ident]`. The `(->)` option is only used once, in the file that declares the `ext` attribute itself, so it's not worth the parser complexity. The ability to remove attributes with `@[ext -foo]` is removed, but I don't think it was tested because it was never used and doesn't work anyway. Also fixes an issue with ext attributes being quadratic (in the number of ext attributes applied), and also makes `ext` attributes remove themselves (the real work of ext attributes is done by two internal attributes `_ext_core` and `_ext_lemma_core`), so that they don't pollute `#print` output. Before: ```lean #print funext @[_ext_lemma_core, ext list.cons.{0} ext_param_type (sum.inr.{0 0} (option.{0} name) (option.{0} name) (option.some.{0} name (name.mk_numeral (unsigned.of_nat' (has_zero.zero.{0} nat nat.has_zero)) name.anonymous))) (list.cons.{0} ext_param_type (sum.inr.{0 0} (option.{0} name) (option.{0} name) (option.some.{0} name (name.mk_string "thunk" name.anonymous))) (list.nil.{0} ext_param_type)), intro!] theorem funext : ∀ {α : Sort u} {β : α → Sort v} {f₁ f₂ : Π (x : α), β x}, (∀ (x : α), f₁ x = f₂ x) → f₁ = f₂ := ``` After: ```lean #print funext @[_ext_lemma_core, intro!] theorem funext : ∀ {α : Sort u} {β : α → Sort v} {f₁ f₂ : Π (x : α), β x}, (∀ (x : α), f₁ x = f₂ x) → f₁ = f₂ := ``` ESTIMATED CHANGES Modified src/tactic/ext.lean - def ext_param_type 2021-08-26 11:17:23 a4b33d3 feat(data/matrix/kronecker): add two reindex lemmas (#8774) Added two lemmas `kronecker_map_reindex_right` and `kronecker_map_reindex_left` (used in LTE) and moved the two `assoc` lemmas some lines up, before the `linear` section, because they are unrelated to any linearity business. ESTIMATED CHANGES Modified src/data/matrix/kronecker.lean + theorem matrix.kronecker_map_reindex + theorem matrix.kronecker_map_reindex_left + theorem matrix.kronecker_map_reindex_right 2021-08-26 11:17:22 3e5bbca feat(field_theory/intermediate_field): generalize `algebra` instances (#8761) The `algebra` and `is_scalar_tower` instances for `intermediate_field` are (again) as general as those for `subalgebra`. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean Modified src/field_theory/polynomial_galois_group.lean 2021-08-26 11:17:21 2c698bd docs(set_theory/zfc): add module docstring and missing def docstrings (#8744) ESTIMATED CHANGES Modified src/set_theory/zfc.lean +/- def Class.fval +/- def Class.iota +/- theorem Class.iota_val +/- def Class.to_Set +/- theorem Set.Union_lem +/- theorem Set.choice_mem_aux +/- theorem Set.eq_empty +/- theorem Set.ext +/- theorem Set.ext_iff +/- theorem Set.induction_on +/- theorem Set.mem_empty +/- theorem Set.mem_image +/- theorem Set.mem_prod +/- def Set.prod +/- def arity +/- def pSet.embed + theorem pSet.equiv.rfl +/- theorem pSet.equiv_iff_mem +/- theorem pSet.mem.congr_left +/- theorem pSet.mem.congr_right +/- theorem pSet.mem.ext +/- theorem pSet.mem_Union +/- theorem pSet.mem_empty +/- theorem pSet.mem_image +/- def pSet.omega +/- def pSet.resp 2021-08-26 10:02:38 2e1e98f feat(linear_algebra/bilinear_form): bilinear forms with `det ≠ 0` are nonsingular (#8824) In particular, the trace form is such a bilinear form (see #8777). ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.nondegenerate_of_det_ne_zero' + theorem bilin_form.nondegenerate_of_det_ne_zero Modified src/linear_algebra/matrix/nonsingular_inverse.lean + theorem matrix.nondegenerate_of_det_ne_zero 2021-08-26 10:02:37 147af57 feat(category_theory/is_connected): The opposite of a connected category is connected (#8806) ESTIMATED CHANGES Modified src/category_theory/is_connected.lean + theorem category_theory.is_connected_of_is_connected_op + theorem category_theory.is_preconnected_of_is_preconnected_op 2021-08-26 10:02:36 058f639 feat(data/equiv/fin): fin_succ_equiv_last (#8805) This commit changes the type of `fin_succ_equiv'`. `fin_succ_equiv' i` used to take an argument of type `fin n` which was strange and it now takes an argument of type `fin (n + 1)` meaning it is now possible to send `fin.last n` to `none` if desired. I also defined `fin.succ_equiv_last`, the canonical equiv `fin (n + 1)` to `option (fin n)` sending `fin.last` to `none`. ESTIMATED CHANGES Modified src/data/equiv/fin.lean +/- def fin_succ_equiv' +/- theorem fin_succ_equiv'_above +/- theorem fin_succ_equiv'_below + theorem fin_succ_equiv'_symm_coe_above + theorem fin_succ_equiv'_symm_coe_below + theorem fin_succ_equiv'_symm_some_above + theorem fin_succ_equiv'_symm_some_below + def fin_succ_equiv_last + theorem fin_succ_equiv_last_cast_succ + theorem fin_succ_equiv_last_last + theorem fin_succ_equiv_last_symm_coe + theorem fin_succ_equiv_last_symm_none + theorem fin_succ_equiv_last_symm_some - theorem fin_succ_equiv_symm'_coe_above - theorem fin_succ_equiv_symm'_coe_below - theorem fin_succ_equiv_symm'_some_above - theorem fin_succ_equiv_symm'_some_below Modified src/linear_algebra/linear_independent.lean 2021-08-26 09:18:22 94d4a32 feat(linear_algebra/bilinear_form): the dual basis for a nondegenerate bilin form (#8823) Let `B` be a nondegenerate (symmetric) bilinear form on a finite-dimensional vector space `V` and `b` a basis on `V`. Then there is a "dual basis" `d` such that `d.repr x i = B x (b i)` and `B (d i) (b j) = B (b i) (d j) = if i = j then 1 else 0`. In a follow-up PR, we'll show that the trace form for `L / K` produces a dual basis consisting only of elements integral over the ring of integers of `K`. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.apply_dual_basis_left + theorem bilin_form.apply_dual_basis_right + theorem bilin_form.dual_basis_repr_apply 2021-08-26 07:01:23 acbe935 chore(topology/metric_space): add 2 lemmas, golf (#8861) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem comap_dist_left_at_top_eq_cocompact + theorem comap_dist_left_at_top_le_cocompact + theorem comap_dist_right_at_top_eq_cocompact + theorem comap_dist_right_at_top_le_cocompact + theorem metric.bounded.subset_ball + theorem tendsto_cocompact_of_tendsto_dist_comp_at_top 2021-08-26 07:01:22 9438552 feat(data/fin): cast_add_lt (#8830) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_add_lt 2021-08-26 07:01:21 6c6fc02 feat(data/fin): cast_add_right (#8829) ESTIMATED CHANGES Modified src/data/fin.lean + def fin.cast_add_right + theorem fin.coe_cast_add_right + theorem fin.le_cast_add_right 2021-08-26 07:01:20 bafeccf feat(data/fin): fin.succ_cast_succ (#8828) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.succ_cast_succ 2021-08-26 07:01:19 cb1932d feat(data/complex/exponential): bound on exp for arbitrary arguments (#8667) This PR is for a new lemma (currently called `exp_bound'`) which proves `exp x` is close to its `n`th degree taylor expansion for sufficiently large `n`. Unlike the previous bound, this lemma can be instantiated on any real `x` rather than just `x` with absolute value less than or equal to 1. I am separating this lemma out from #8002 because I think it stands on its own. The last time I checked it was sorry free - but that was before I merged with master and moved it to a different branch. It may also benefit from a little golfing. There are a few lemmas I proved as well to support this - one about the relative size of factorials and a few about sums of geometric sequences. The ~~geometric series ones should probably be generalized and moved to another file~~ this generalization sort of exists and is in the algebra.geom_sum file. I didn't find it initially since I was searching for "geometric" not "geom". ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_range_add_div_prod_range Modified src/algebra/group/basic.lean + theorem div_eq_of_eq_mul' - theorem sub_eq_of_eq_add' Modified src/data/complex/exponential.lean + theorem complex.exp_bound' Modified src/data/nat/factorial.lean + theorem nat.factorial_mul_pow_sub_le_factorial 2021-08-26 05:17:35 fe47777 feat(analysis/complex/upper_half_plane): new file (#8377) This file defines `upper_half_plane` to be the upper half plane in `ℂ`. We furthermore equip it with the structure of an `SL(2,ℝ)` action by fractional linear transformations. Co-authored by Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> Co-authored by Marc Masdeu ESTIMATED CHANGES Added src/analysis/complex/upper_half_plane.lean + theorem upper_half_plane.coe_im + theorem upper_half_plane.coe_re + theorem upper_half_plane.coe_smul + def upper_half_plane.denom + theorem upper_half_plane.denom_cocycle + theorem upper_half_plane.denom_ne_zero + def upper_half_plane.im + theorem upper_half_plane.im_ne_zero + theorem upper_half_plane.im_pos + theorem upper_half_plane.im_smul + theorem upper_half_plane.im_smul_eq_div_norm_sq + theorem upper_half_plane.linear_ne_zero + theorem upper_half_plane.mul_smul' + theorem upper_half_plane.ne_zero + theorem upper_half_plane.neg_smul + theorem upper_half_plane.norm_sq_denom_ne_zero + theorem upper_half_plane.norm_sq_denom_pos + theorem upper_half_plane.norm_sq_ne_zero + theorem upper_half_plane.norm_sq_pos + def upper_half_plane.num + def upper_half_plane.re + theorem upper_half_plane.re_smul + def upper_half_plane.smul_aux' + theorem upper_half_plane.smul_aux'_im + def upper_half_plane.smul_aux + def upper_half_plane Modified src/data/fintype/basic.lean + theorem fintype.card_fin_even Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_fin_one + theorem matrix.det_fin_three + theorem matrix.det_fin_two + theorem matrix.det_fin_zero +/- theorem matrix.det_smul Modified src/linear_algebra/special_linear_group.lean + theorem matrix.special_linear_group.coe_neg + theorem matrix.special_linear_group.det_ne_zero + theorem matrix.special_linear_group.row_ne_zero 2021-08-26 03:51:48 7e781a8 chore(*): Fix syntactic tautologies (#8811) Fix a few lemmas that were accidentally tautological in the sense that they were equations with syntactically equal LHS and RHS. A linter will be added in a second PR, for now we just fix the found issues. It would be great if a category expert like @semorrison would check the category ones, as its unclear to me which direction they are meant to go. As pointed out by @PatrickMassot on Zulip https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/syntactic.20tautology.20linter/near/250267477. Thanks to @eric-wieser for helping figure out the corrected versions. ESTIMATED CHANGES Modified src/analysis/normed_space/affine_isometry.lean +/- theorem affine_isometry.coe_id Modified src/analysis/normed_space/linear_isometry.lean +/- theorem linear_isometry.coe_id Modified src/category_theory/sums/basic.lean +/- theorem category_theory.sum_comp_inl +/- theorem category_theory.sum_comp_inr Modified src/linear_algebra/basic.lean +/- theorem submodule.quotient.mk_eq_mk 2021-08-26 02:42:53 daf0d02 feat(archive/imo): README.md (#8799) Proposed text for a README file in the IMO directory. I don't think we have a particular problem with IMO submissions, but thought it could be useful to set the parameters around IMO problems, as it's never been completely clear they belong in mathlib. If we merge this, or something like it, I'll link #imo on Zulip to it. ESTIMATED CHANGES Added archive/imo/README.md 2021-08-25 21:27:03 8befa82 feat(group_theory/perm/list): lemmas on form_perm (#8848) ESTIMATED CHANGES Modified src/group_theory/perm/list.lean + theorem list.form_perm_apply_mem_eq_self_iff + theorem list.form_perm_apply_mem_ne_self_iff + theorem list.form_perm_apply_not_mem + theorem list.form_perm_eq_form_perm_iff + theorem list.form_perm_eq_one_iff + theorem list.form_perm_gpow_apply_mem_imp_mem + theorem list.form_perm_ne_self_imp_mem + theorem list.form_perm_pow_apply_head + theorem list.form_perm_pow_length_eq_one_of_nodup Modified src/group_theory/perm/support.lean + theorem equiv.perm.coe_support_eq_set_support + theorem equiv.perm.set_support_apply_mem + theorem equiv.perm.set_support_gpow_subset + theorem equiv.perm.set_support_inv_eq + theorem equiv.perm.set_support_mul_subset 2021-08-25 21:27:01 49af34d feat(group_theory/perm/cycles): same_cycle and cycle_of lemmas (#8835) ESTIMATED CHANGES Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.card_support_cycle_of_pos_iff + theorem equiv.perm.cycle_of_self_apply + theorem equiv.perm.cycle_of_self_apply_gpow + theorem equiv.perm.cycle_of_self_apply_pow + theorem equiv.perm.pow_mod_card_support_cycle_of_self_apply + theorem equiv.perm.same_cycle.cycle_of_eq + theorem equiv.perm.same_cycle.mem_support_iff +/- theorem equiv.perm.same_cycle.symm +/- theorem equiv.perm.same_cycle.trans + theorem equiv.perm.same_cycle_gpow_left_iff + theorem equiv.perm.support_cycle_of_le + theorem equiv.perm.two_le_card_support_cycle_of_iff 2021-08-25 18:32:55 40bd7c6 feat(data/nat/modeq): Rotating list.repeat (#8817) Some consequences of `list.rotate_eq_self_iff_eq_repeat`. ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem list.rotate_one_eq_self_iff_eq_repeat + theorem list.rotate_repeat 2021-08-25 18:32:54 c544742 feat(linear_algebra/finite_dimensional): add finrank_map_le (#8815) ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem linear_equiv.dim_map_eq Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.finrank_map_le + theorem linear_equiv.finrank_map_eq 2021-08-25 18:32:53 6a41805 chore(group_theory/group_action/basic): `to_additive` attributes throughout (#8814) ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem add_action.exists_vadd_eq - theorem exists_smul_eq + theorem mul_action.exists_smul_eq +/- theorem mul_action.fixed_eq_Inter_fixed_by +/- theorem mul_action.injective_of_quotient_stabilizer +/- theorem mul_action.mem_fixed_by +/- theorem mul_action.mem_fixed_points' +/- theorem mul_action.mem_fixed_points +/- theorem mul_action.mem_fixed_points_iff_card_orbit_eq_one +/- theorem mul_action.mem_orbit +/- theorem mul_action.mem_orbit_iff +/- theorem mul_action.mem_orbit_self +/- theorem mul_action.mem_orbit_smul +/- theorem mul_action.mem_stabilizer_iff +/- theorem mul_action.mem_stabilizer_submonoid_iff +/- theorem mul_action.of_quotient_stabilizer_mem_orbit +/- theorem mul_action.of_quotient_stabilizer_mk +/- theorem mul_action.of_quotient_stabilizer_smul +/- theorem mul_action.orbit_eq_iff +/- theorem mul_action.orbit_equiv_quotient_stabilizer_symm_apply +/- theorem mul_action.quotient.smul_coe +/- theorem mul_action.quotient.smul_mk +/- theorem mul_action.smul_mem_orbit_smul +/- theorem mul_action.stabilizer_quotient 2021-08-25 18:32:52 b6e6c84 feat(data/finset/basic): to_list (#8797) Produce a list of the elements of a finite set using choice. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.coe_to_list + theorem finset.length_to_list + theorem finset.mem_to_list + theorem finset.nodup_to_list + theorem finset.to_list_empty + theorem finset.to_list_to_finset Modified src/data/finset/sort.lean + theorem finset.sort_perm_to_list 2021-08-25 18:32:50 aca0874 chore(algebra/direct_sum): Move all the algebraic structure on `direct_sum` into a single directory (#8771) This ends up splitting one file in two, but all the contents are just moved. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Renamed src/algebra/direct_sum.lean to src/algebra/direct_sum/basic.lean Added src/algebra/direct_sum/finsupp.lean + def finsupp_lequiv_direct_sum + theorem finsupp_lequiv_direct_sum_single + theorem finsupp_lequiv_direct_sum_symm_lof Renamed src/linear_algebra/direct_sum_module.lean to src/algebra/direct_sum/module.lean Renamed src/algebra/direct_sum_graded.lean to src/algebra/direct_sum/ring.lean Modified src/algebra/monoid_algebra_to_direct_sum.lean Modified src/linear_algebra/direct_sum/finsupp.lean - def finsupp_lequiv_direct_sum - theorem finsupp_lequiv_direct_sum_single - theorem finsupp_lequiv_direct_sum_symm_lof Modified src/linear_algebra/direct_sum/tensor_product.lean Modified src/ring_theory/polynomial/homogeneous.lean 2021-08-25 18:32:49 df8818c feat(data/nat/multiplicity): bound on the factorial multiplicity (#8767) This proves `multiplicity p n! ≤ n/(p - 1)`, for `p` prime and `n` natural. ESTIMATED CHANGES Modified src/algebra/geom_sum.lean + theorem nat.geom_sum_Ico_le + theorem nat.geom_sum_le + theorem nat.pred_mul_geom_sum_le Modified src/data/nat/multiplicity.lean + theorem nat.prime.multiplicity_factorial_le_div_pred 2021-08-25 18:32:48 301eb10 feat(data/polynomial/monic): monic.is_regular (#8679) This golfs/generalizes some proofs. Additionally, provide some helper API for `is_regular`, for non-zeros in domains, and for smul of units. ESTIMATED CHANGES Modified src/algebra/regular/smul.lean + theorem is_smul_regular_of_group +/- theorem units.is_smul_regular Modified src/algebra/ring/basic.lean Modified src/data/polynomial/monic.lean - theorem polynomial.degree_smul_of_non_zero_divisor + theorem polynomial.degree_smul_of_smul_regular - theorem polynomial.leading_coeff_smul_of_non_zero_divisor + theorem polynomial.leading_coeff_smul_of_smul_regular + theorem polynomial.monic.is_regular - theorem polynomial.nat_degree_smul_of_non_zero_divisor + theorem polynomial.nat_degree_smul_of_smul_regular 2021-08-25 17:03:35 b364cfc feat(linear_algebra/basis): if `R ≃ R'`, map a basis for `R`-module `M` to `R'`-module `M` (#8699) If `R` and `R'` are isomorphic rings that act identically on a module `M`, then a basis for `M` as `R`-module is also a basis for `M` as `R'`-module. ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_of_bijective + theorem ring_equiv.of_bijective_apply Modified src/linear_algebra/basis.lean + theorem basis.coe_map_coeffs + def basis.map_coeffs + theorem basis.map_coeffs_apply Modified src/ring_theory/algebra_tower.lean + theorem basis.algebra_map_coeffs_apply + theorem basis.coe_algebra_map_coeffs 2021-08-25 15:26:51 0ad5abc chore(data/set/finite): golf 2 proofs (#8862) Also add `finset.coe_emb`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.coe_coe_emb + def finset.coe_emb Modified src/data/set/finite.lean + theorem set.subset_to_finset_iff 2021-08-25 12:58:19 97c327c feat(tactic/suggest): suggest using X, to filter results (#8819) You can now write `suggest using X`, to only give suggestions which make use of the local hypothesis `X`. Similarly `suggest using X Y Z` for multiple hypotheses. `library_search using X` is also enabled. This makes `suggest` much more useful. Previously ``` example (P Q : list ℕ) : list ℕ := by suggest ``` would have just said `exact P`. Now you can write ``` example (P Q : list ℕ) : list ℕ := by suggest using P Q ``` and get: ``` Try this: exact list.diff P Q Try this: exact list.union P Q Try this: exact list.inter P Q Try this: exact list.append P Q Try this: exact list.bag_inter P Q Try this: exact list.remove_all P Q Try this: exact list.reverse_core P Q ``` ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean 2021-08-25 06:39:27 26a3286 fix(data/set/lattice): lemmas about `Union`/`Inter` over `p : Prop` (#8860) With recently added `@[congr]` lemmas, it suffices to deal with unions/inters over `true` and `false`. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Infi_eq_dif + theorem set.Inter_eq_if + theorem set.Union_eq_dif + theorem set.Union_eq_if - theorem set.Union_prop - theorem set.Union_prop_neg - theorem set.Union_prop_pos 2021-08-25 06:39:26 4a0c3d7 feat(linear_algebra/finite_dimension): nontriviality lemmas (#8851) A vector space of `finrank` greater than zero is `nontrivial`, likewise a vector space whose `finrank` is equal to the successor of a natural number. Also write the non-`fact` version of `finite_dimensional_of_finrank_eq_succ`, a lemma which previously existed under a `fact` hypothesis, and rename the `fact` version to `fact_finite_dimensional_of_finrank_eq_succ`. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.fact_finite_dimensional_of_finrank_eq_succ +/- theorem finite_dimensional.finite_dimensional_of_finrank_eq_succ + theorem finite_dimensional.nontrivial_of_finrank_eq_succ + theorem finite_dimensional.nontrivial_of_finrank_pos 2021-08-25 06:39:25 fd03625 chore(ring_theory/ideal): Move local rings into separate file (#8849) Moves the material on local rings and local ring homomorphisms into a separate file and adds a module docstring. ESTIMATED CHANGES Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/data/equiv/transfer_instance.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/ideal/basic.lean - theorem is_unit_map_iff - theorem is_unit_of_map_unit - theorem local_of_nonunits_ideal - theorem local_of_surjective - theorem local_of_unique_max_ideal - theorem local_of_unique_nonzero_prime - theorem local_ring.eq_maximal_ideal - theorem local_ring.is_unit_of_mem_nonunits_one_sub_self - theorem local_ring.is_unit_one_sub_self_of_mem_nonunits - theorem local_ring.is_unit_or_is_unit_one_sub_self - theorem local_ring.le_maximal_ideal - def local_ring.maximal_ideal - theorem local_ring.maximal_ideal_unique - theorem local_ring.mem_maximal_ideal - theorem local_ring.nonunits_add - def local_ring.residue - def local_ring.residue_field - theorem map_nonunit - theorem of_irreducible_map Added src/ring_theory/ideal/local_ring.lean + theorem is_unit_map_iff + theorem is_unit_of_map_unit + theorem local_of_nonunits_ideal + theorem local_of_surjective + theorem local_of_unique_max_ideal + theorem local_of_unique_nonzero_prime + theorem local_ring.eq_maximal_ideal + theorem local_ring.is_unit_of_mem_nonunits_one_sub_self + theorem local_ring.is_unit_one_sub_self_of_mem_nonunits + theorem local_ring.is_unit_or_is_unit_one_sub_self + theorem local_ring.le_maximal_ideal + def local_ring.maximal_ideal + theorem local_ring.maximal_ideal_unique + theorem local_ring.mem_maximal_ideal + theorem local_ring.nonunits_add + def local_ring.residue + def local_ring.residue_field + theorem map_nonunit + theorem of_irreducible_map Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series/basic.lean 2021-08-25 06:39:24 88db4e2 feat(ring_theory): `M / S` is noetherian if `M / S / R` is (#8846) Let `M` be an `S`-module and `S` an `R`-algebra. Then to show `M` is noetherian as an `S`-module, it suffices to show it is noetherian as an `R`-module. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + def submodule.restrict_scalars_embedding Modified src/linear_algebra/basic.lean Modified src/ring_theory/noetherian.lean + theorem is_noetherian_of_tower 2021-08-25 06:39:23 00e57d3 chore(order/rel_iso): rename `order_embedding.of_map_rel_iff` to `of_map_le_iff` (#8839) The old name comes from `rel_embedding`. ESTIMATED CHANGES Modified src/data/list/nodup_equiv_fin.lean Modified src/order/rel_iso.lean + theorem order_embedding.coe_of_map_le_iff - theorem order_embedding.coe_of_map_rel_iff + def order_embedding.of_map_le_iff - def order_embedding.of_map_rel_iff 2021-08-25 06:39:21 ef428c6 feat(topology/metric_space): add `uniform_embedding.comap_metric_space` (#8838) * add `uniform_embedding.comap_metric_space` and `uniform_inducing.comap_pseudo_metric_space`; * use the former for `int.metric_space`; * also add `emetric.closed_ball_mem_nhds`. ESTIMATED CHANGES Modified src/topology/instances/real.lean + theorem int.uniform_embedding_coe_real Modified src/topology/metric_space/basic.lean + def uniform_embedding.comap_metric_space + def uniform_inducing.comap_pseudo_metric_space Modified src/topology/metric_space/emetric_space.lean + theorem emetric.closed_ball_mem_nhds 2021-08-25 05:54:13 bd9622f chore(category_theory/Fintype): Fix universe restriction in skeleton (#8855) This removes a universe restriction in the existence of a skeleton for the category `Fintype`. Once merged, `Fintype.skeleton.{u}` will be a (small) skeleton for `Fintype.{u}`, with `u` any universe parameter. ESTIMATED CHANGES Modified src/category_theory/Fintype.lean + theorem Fintype.comp_apply + theorem Fintype.id_apply + theorem Fintype.skeleton.ext +/- def Fintype.skeleton.incl +/- theorem Fintype.skeleton.incl_mk_nat_card +/- theorem Fintype.skeleton.is_skeletal + def Fintype.skeleton.len +/- def Fintype.skeleton.mk - def Fintype.skeleton.to_nat +/- def Fintype.skeleton 2021-08-24 21:23:20 6c3dda5 feat(measure_theory/measure/vector_measure): add absolute continuity for vector measures (#8779) This PR defines absolute continuity for vector measures and shows that a signed measure is absolutely continuous wrt to a positive measure iff its total variation is absolutely continuous wrt to that measure. ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean + theorem measure_theory.signed_measure.absolutely_continuous_iff + def measure_theory.signed_measure.total_variation + theorem measure_theory.signed_measure.total_variation_absolutely_continuous_iff + theorem measure_theory.signed_measure.total_variation_neg + theorem measure_theory.signed_measure.total_variation_zero Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.vector_measure.absolutely_continuous.ennreal_to_measure + theorem measure_theory.vector_measure.absolutely_continuous.eq + theorem measure_theory.vector_measure.absolutely_continuous.map + theorem measure_theory.vector_measure.absolutely_continuous.mk + theorem measure_theory.vector_measure.absolutely_continuous.refl + theorem measure_theory.vector_measure.absolutely_continuous.trans + def measure_theory.vector_measure.absolutely_continuous + def measure_theory.vector_measure.ennreal_to_measure + theorem measure_theory.vector_measure.ennreal_to_measure_apply + def measure_theory.vector_measure.equiv_measure + theorem measure_theory.vector_measure.map_not_measurable 2021-08-24 10:50:23 1dda1cd feat(algebra/big_operators/finprod): a few more lemmas (#8843) * versions of `monoid_hom.map_finprod` that assume properties of `f : M →* N` instead of finiteness of the support; * `finsum_smul`, `smul_finsum`, `finprod_inv_distrib`: missing analogues of lemmas from `finset.prod`/`finset.sum` API. ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_inv_distrib + theorem finsum_smul + theorem monoid_hom.map_finprod_of_injective + theorem monoid_hom.map_finprod_of_preimage_one + theorem mul_equiv.map_finprod + theorem smul_finsum 2021-08-24 09:54:38 a21fcfa feat(data/real/nnreal): upgrade `nnabs` to a `monoid_with_zero_hom` (#8844) Other changes: * add `nnreal.finset_sup_div`; * rename `nnreal.coe_nnabs` to `real.coe_nnabs`; * add `real.nndist_eq` and `real.nndist_eq'`. ESTIMATED CHANGES Modified src/analysis/calculus/parametric_integral.lean Modified src/data/real/nnreal.lean - theorem cast_nat_abs_eq_nnabs_cast - theorem nnreal.coe_nnabs + theorem nnreal.finset_sup_div + theorem real.cast_nat_abs_eq_nnabs_cast + theorem real.coe_nnabs +/- theorem real.coe_to_nnreal_le +/- def real.nnabs +/- theorem real.nnabs_of_nonneg Modified src/topology/metric_space/basic.lean + theorem real.nndist_eq' + theorem real.nndist_eq 2021-08-24 08:27:38 19ae317 feat(measure_theory/interval_integral): strong version of FTC-2 (#7978) The equality `∫ y in a..b, f' y = f b - f a` is currently proved in mathlib assuming that `f'` is continuous. We weaken the assumption, assuming only that `f'` is integrable. ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified src/analysis/special_functions/integrals.lean Modified src/measure_theory/integral/integrable_on.lean +/- theorem measure_theory.integrable_on.continuous_on_mul + theorem measure_theory.integrable_on.continuous_on_mul_of_subset +/- theorem measure_theory.integrable_on.mul_continuous_on + theorem measure_theory.integrable_on.mul_continuous_on_of_subset Modified src/measure_theory/integral/interval_integral.lean + theorem continuous_linear_map.interval_integral_comp_comm + theorem interval_integrable.continuous_on_mul + theorem interval_integrable.mul_continuous_on + theorem interval_integrable_iff_integrable_Ioc_of_le - theorem interval_integral.continuous_on_integral_of_continuous - theorem interval_integral.continuous_on_primitive'' - theorem interval_integral.continuous_on_primitive' + theorem interval_integral.continuous_on_primitive_Icc + theorem interval_integral.continuous_on_primitive_interval + theorem interval_integral.continuous_on_primitive_interval_left + theorem interval_integral.integrable_on_Icc_iff_integrable_on_Ioc' + theorem interval_integral.integrable_on_Icc_iff_integrable_on_Ioc + theorem interval_integral.integral_Icc_eq_integral_Ioc' +/- theorem interval_integral.integral_Icc_eq_integral_Ioc - theorem interval_integral.integral_eq_sub_of_has_deriv_at' - theorem interval_integral.integral_eq_sub_of_has_deriv_at'_of_le +/- theorem interval_integral.integral_eq_sub_of_has_deriv_at + theorem interval_integral.integral_eq_sub_of_has_deriv_at_of_le + theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le_real' + theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le_real + theorem interval_integral.integral_le_sub_of_has_deriv_right_of_le + theorem interval_integral.interval_integrable_iff_integrable_Icc_of_le + theorem interval_integral.sub_le_integral_of_has_deriv_right_of_le + theorem measure_theory.integrable_on.interval_integrable 2021-08-24 04:00:04 737b208 feat(linear_algebra/dimension): generalize dim_map_le to heterogeneous universes (#8800) Per @hrmacbeth's [request on zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Behaviour.20of.20finrank.20under.20morphisms). ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem lift_dim_map_le + theorem lift_dim_range_le Modified src/set_theory/cardinal.lean + theorem cardinal.lift_mk_eq' 2021-08-24 02:16:33 4aa8705 chore(scripts): update nolints.txt (#8840) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-23 20:37:30 26448a2 feat(analysis/normed_space/exponential): define exponential in a Banach algebra and prove basic results (#8576) ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean +/- theorem formal_multilinear_series.summable_nnnorm_mul_pow + theorem formal_multilinear_series.summable_norm_apply +/- theorem formal_multilinear_series.summable_norm_mul_pow - theorem formal_multilinear_series.summable_norm_of_lt_radius - theorem formal_multilinear_series.summable_of_nnnorm_lt_radius Added src/analysis/normed_space/exponential.lean + theorem analytic_at_exp_of_mem_ball + theorem complex.exp_eq_exp_ℂ_ℂ + theorem continuous_on_exp + theorem exp_add + theorem exp_add_of_commute + theorem exp_add_of_commute_of_mem_ball + theorem exp_add_of_mem_ball + theorem exp_analytic + theorem exp_continuous + theorem exp_eq_exp_of_field_extension + theorem exp_eq_tsum + theorem exp_eq_tsum_field + theorem exp_has_fpower_series_at_zero + theorem exp_has_fpower_series_on_ball + def exp_series + theorem exp_series_apply_eq' + theorem exp_series_apply_eq + theorem exp_series_apply_eq_field' + theorem exp_series_apply_eq_field + theorem exp_series_eq_exp_series_of_field_extension + theorem exp_series_field_has_sum_exp + theorem exp_series_field_has_sum_exp_of_mem_ball + theorem exp_series_field_summable + theorem exp_series_field_summable_of_mem_ball + theorem exp_series_has_sum_exp' + theorem exp_series_has_sum_exp + theorem exp_series_has_sum_exp_of_mem_ball' + theorem exp_series_has_sum_exp_of_mem_ball + theorem exp_series_radius_eq_top + theorem exp_series_radius_pos + theorem exp_series_sum_eq + theorem exp_series_sum_eq_field + theorem exp_series_summable' + theorem exp_series_summable + theorem exp_series_summable_of_mem_ball' + theorem exp_series_summable_of_mem_ball + theorem exp_zero + theorem exp_ℝ_ℂ_eq_exp_ℂ_ℂ + theorem has_deriv_at_exp + theorem has_deriv_at_exp_of_mem_ball + theorem has_deriv_at_exp_zero + theorem has_deriv_at_exp_zero_of_radius_pos + theorem has_fderiv_at_exp + theorem has_fderiv_at_exp_of_mem_ball + theorem has_fderiv_at_exp_zero + theorem has_fderiv_at_exp_zero_of_radius_pos + theorem has_fpower_series_at_exp_zero_of_radius_pos + theorem has_fpower_series_on_ball_exp_of_radius_pos + theorem has_strict_deriv_at_exp + theorem has_strict_deriv_at_exp_of_mem_ball + theorem has_strict_deriv_at_exp_zero + theorem has_strict_deriv_at_exp_zero_of_radius_pos + theorem has_strict_fderiv_at_exp + theorem has_strict_fderiv_at_exp_of_mem_ball + theorem has_strict_fderiv_at_exp_zero + theorem has_strict_fderiv_at_exp_zero_of_radius_pos + theorem norm_exp_series_field_summable + theorem norm_exp_series_field_summable_of_mem_ball + theorem norm_exp_series_summable' + theorem norm_exp_series_summable + theorem norm_exp_series_summable_of_mem_ball' + theorem norm_exp_series_summable_of_mem_ball + theorem real.exp_eq_exp_ℝ_ℝ Modified src/data/finset/nat_antidiagonal.lean + theorem finset.nat.antidiagonal.fst_le + theorem finset.nat.antidiagonal.snd_le Modified src/data/nat/choose/dvd.lean + theorem nat.cast_add_choose +/- theorem nat.cast_choose Modified src/number_theory/bernoulli_polynomials.lean Modified src/topology/algebra/infinite_sum.lean + theorem summable.congr + theorem summable_congr Modified src/topology/metric_space/basic.lean + theorem metric.eball_top_eq_univ 2021-08-23 17:56:01 2f4dc3a feat(ring_theory): generalize `exists_integral_multiple` (#8827) Not only is `z * (y : integral_closure R A)` integral, so is `z * (y : R)`! ESTIMATED CHANGES Modified src/ring_theory/algebraic.lean Modified src/ring_theory/localization.lean 2021-08-23 17:55:59 700effa feat(ring_theory/localization): the algebraic elements over `Frac(R)` are those over `R` (#8826) We had this lemma for `L / K` is algebraic iff `L / A` is, but now we also have it elementwise! ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem is_fraction_ring.is_algebraic_iff 2021-08-23 17:55:58 2a69dc2 feat(ring_theory): two little lemmas on Noetherianness (#8825) No real deep thoughts behind these lemmas, just that they are needed to show the integral closure of a Dedekind domain is Noetherian. ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_noetherian_adjoin_finset Modified src/ring_theory/noetherian.lean + theorem is_noetherian_of_le 2021-08-23 17:55:57 8a7e4f7 feat(measure_theory): volume of a (closed) L∞-ball (#8791) * pi measure of a (closed or open) ball; * volume of a (closed or open) ball in - `Π i, α i`; - `ℝ`; - `ι → ℝ`; * volumes of `univ`, `emetric.ball`, and `emetric.closed_ball` in `ℝ`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.of_real_pow Modified src/measure_theory/constructions/pi.lean + theorem measure_theory.measure.pi_ball + theorem measure_theory.measure.pi_closed_ball + theorem measure_theory.volume_pi_ball + theorem measure_theory.volume_pi_closed_ball Modified src/measure_theory/measure/lebesgue.lean + theorem real.volume_ball + theorem real.volume_closed_ball + theorem real.volume_emetric_ball + theorem real.volume_emetric_closed_ball + theorem real.volume_pi_ball + theorem real.volume_pi_closed_ball + theorem real.volume_univ 2021-08-23 17:55:56 ff85e9c feat(measure_theory/measure/measure_space): obtain pairwise disjoint spanning sets wrt. two measures (#8750) Given two sigma finite measures, there exists a sequence of pairwise disjoint spanning sets that are finite wrt. both measures ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.exists_eq_disjoint_finite_spanning_sets_in + theorem measure_theory.measure.finite_spanning_sets_in.disjointed_set_eq + def measure_theory.measure.finite_spanning_sets_in.of_le 2021-08-23 17:55:55 98a6329 refactor(algebra/group_power): use `covariant_class` (#8713) ## Main changes * use `covariant_class` instead of `canonically_ordered_*` or `ordered_add_*` as an assumption in many lemmas; * move some lemmas to the root namespace; * use `to_additive` for more lemmas; ## Detailed list of API changes * `canonically_ordered_comm_semiring.pow_le_pow_of_le_left`: - rename to `pow_le_pow_of_le_left'`; - assume `[covariant_class M M (*) (≤)]`; - use `to_additive` to generate `nsmul_le_nsmul_of_le_right`; * `canonically_ordered_comm_semiring.one_le_pow_of_one_le`: - rename to `one_le_pow_of_one_le`'; - assume `[covariant_class M M (*) (≤)]`; - use `to_additive` to generate `nsmul_nonneg`; * `canonically_ordered_comm_semiring.pow_le_one`: - rename to `pow_le_one'`; - assume `[covariant_class M M (*) (≤)]`; - use `to_additive` to generate `nsmul_nonpos`; * add `pow_le_pow'`, generate `nsmul_le_nsmul`; * add `pow_le_pow_of_le_one'` and `nsmul_le_nsmul_of_nonpos`; * add `one_lt_pow'`, generate `nsmul_pos`; - as a side effect, `nsmul_pos` now assumes `n ≠ 0` instead of `0 < n`. * add `pow_lt_one'`, generate `nsmul_neg`; * add `pow_lt_pow'`, generate `nsmul_lt_nsmul`; * generalize `one_le_pow_iff` and `pow_le_one_iff`, generate `nsmul_nonneg_iff` and `nsmul_nonpos_iff`; * generalize `one_lt_pow_iff`, `pow_lt_one_iff`, and `pow_eq_one_iff`, generate `nsmul_pos_iff`, `nsmul_neg_iff`, and `nsmul_eq_zero_iff`; * add `one_le_gpow`, generate `gsmul_nonneg`; * rename `eq_of_sq_eq_sq` to `sq_eq_sq`, golf; * drop `eq_one_of_pow_eq_one` in favor of the `iff` version `pow_eq_one_iff`; * add missing instance `nat.ordered_comm_semiring`; ## Misc changes * replace some proofs about `nat.pow` with references to generic lemmas; * add `nnreal.coe_eq_one`; ESTIMATED CHANGES Modified archive/imo/imo2008_q4.lean Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_power/order.lean - theorem canonically_ordered_comm_semiring.one_le_pow_of_one_le - theorem canonically_ordered_comm_semiring.pow_le_one - theorem canonically_ordered_comm_semiring.pow_le_pow_of_le_left +/- theorem canonically_ordered_comm_semiring.pow_pos - theorem eq_of_sq_eq_sq - theorem gsmul_nonneg - theorem nsmul_le_nsmul - theorem nsmul_le_nsmul_of_le_right - theorem nsmul_lt_nsmul - theorem nsmul_nonneg - theorem nsmul_pos + theorem one_le_gpow + theorem one_le_pow_iff + theorem one_le_pow_of_one_le' + theorem one_lt_pow' + theorem one_lt_pow_iff + theorem pow_eq_one_iff + theorem pow_le_one' + theorem pow_le_one_iff + theorem pow_le_pow' + theorem pow_le_pow_of_le_left' + theorem pow_le_pow_of_le_one' +/- theorem pow_left_inj + theorem pow_lt_one' + theorem pow_lt_one_iff + theorem pow_lt_pow'' + theorem sq_eq_sq Modified src/algebra/linear_ordered_comm_group_with_zero.lean - theorem eq_one_of_pow_eq_one - theorem one_le_pow_iff - theorem one_le_pow_of_one_le' - theorem pow_eq_one_iff - theorem pow_le_one_iff - theorem pow_le_one_of_le_one Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/specific_limits.lean Modified src/data/nat/basic.lean Modified src/data/nat/pow.lean +/- theorem nat.mod_pow_succ +/- theorem nat.pow_le_pow_of_le_right +/- theorem nat.pow_lt_pow_of_lt_right Modified src/data/real/nnreal.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/sphere.lean Modified src/geometry/euclidean/triangle.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/ring_theory/perfection.lean Modified src/ring_theory/valuation/integral.lean 2021-08-23 17:55:54 b7f0323 feat(topology): interior of a finite product of sets (#8695) Also finishes the filter inf work from #8657 proving stronger lemmas for filter.infi ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Inter_dite + theorem set.Inter_ite + theorem set.Union_dite + theorem set.Union_ite + theorem set.image_projection_prod Modified src/measure_theory/measurable_space.lean Modified src/order/complete_lattice.lean + theorem infi_dite + theorem infi_ite + theorem supr_dite + theorem supr_ite Modified src/order/filter/at_top_bot.lean Modified src/order/filter/basic.lean + theorem filter.exists_Inter_of_mem_infi + theorem filter.mem_infi_of_Inter + theorem filter.mem_infi_of_fintype Modified src/topology/bases.lean Modified src/topology/constructions.lean + theorem interior_pi_set + theorem mem_nhds_pi + theorem set_pi_mem_nhds_iff Modified src/topology/continuous_on.lean 2021-08-23 16:45:34 608faf0 feat(measure_theory/function/conditional_expectation): uniqueness of the conditional expectation (#8802) The main part of the PR is the new file `ae_eq_of_integral`, in which many different lemmas prove variants of the statement "if two functions have same integral on all sets, then they are equal almost everywhere". In the file `conditional_expectation`, a similar lemma is written for functions which have same integral on all sets in a sub-sigma-algebra and are measurable with respect to that sigma-algebra. This proves the uniqueness of the conditional expectation. ESTIMATED CHANGES Modified src/analysis/normed_space/hahn_banach.lean + theorem exists_dual_vector'' Added src/measure_theory/function/ae_eq_of_integral.lean + theorem measure_theory.Lp.ae_eq_of_forall_set_integral_eq + theorem measure_theory.Lp.ae_eq_zero_of_forall_set_integral_eq_zero + theorem measure_theory.ae_const_le_iff_forall_lt_measure_zero + theorem measure_theory.ae_eq_of_forall_set_integral_eq_of_sigma_finite + theorem measure_theory.ae_eq_restrict_of_forall_set_integral_eq + theorem measure_theory.ae_eq_zero_of_forall_dual + theorem measure_theory.ae_eq_zero_of_forall_inner + theorem measure_theory.ae_eq_zero_of_forall_set_integral_eq_of_fin_strongly_measurable_trim + theorem measure_theory.ae_eq_zero_of_forall_set_integral_eq_of_sigma_finite + theorem measure_theory.ae_eq_zero_restrict_of_forall_set_integral_eq_zero + theorem measure_theory.ae_eq_zero_restrict_of_forall_set_integral_eq_zero_real + theorem measure_theory.ae_fin_strongly_measurable.ae_eq_of_forall_set_integral_eq + theorem measure_theory.ae_fin_strongly_measurable.ae_eq_zero_of_forall_set_integral_eq_zero + theorem measure_theory.ae_fin_strongly_measurable.ae_nonneg_of_forall_set_integral_nonneg + theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_finite_measure + theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_finite_measure_of_measurable + theorem measure_theory.ae_nonneg_of_forall_set_integral_nonneg_of_sigma_finite + theorem measure_theory.ae_nonneg_restrict_of_forall_set_integral_nonneg + theorem measure_theory.ae_nonneg_restrict_of_forall_set_integral_nonneg_inter + theorem measure_theory.integrable.ae_eq_of_forall_set_integral_eq + theorem measure_theory.integrable.ae_eq_zero_of_forall_set_integral_eq_zero + theorem measure_theory.integrable.ae_nonneg_of_forall_set_integral_nonneg Modified src/measure_theory/function/conditional_expectation.lean + theorem measure_theory.Lp.ae_eq_of_forall_set_integral_eq' + theorem measure_theory.Lp.ae_eq_zero_of_forall_set_integral_eq_zero' + theorem measure_theory.Lp_meas.ae_eq_zero_of_forall_set_integral_eq_zero + theorem measure_theory.Lp_meas.ae_fin_strongly_measurable' + theorem measure_theory.ae_eq_of_forall_set_integral_eq_of_sigma_finite' + theorem measure_theory.ae_eq_trim_iff_of_ae_measurable' + theorem measure_theory.ae_measurable'.ae_eq_mk + theorem measure_theory.ae_measurable'.measurable_mk + def measure_theory.ae_measurable'.mk + theorem measure_theory.ae_measurable'.neg + theorem measure_theory.ae_measurable'.sub + theorem measure_theory.measurable.ae_measurable' Modified src/measure_theory/function/strongly_measurable.lean + theorem measure_theory.fin_strongly_measurable_iff_strongly_measurable_and_exists_set_sigma_finite Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.ae_of_ae_restrict_of_ae_restrict_compl + theorem measure_theory.sub_ae_eq_zero Modified src/topology/algebra/ordered/basic.lean + theorem exists_seq_strict_antimono_tendsto' + theorem exists_seq_strict_mono_tendsto' 2021-08-23 16:02:50 9a7d9a8 feat(group_theory/nilpotent): add def lemmas, basic lemmas on central series (#8730) Add to API for nilpotent groups with simp def lemmas and other basic properties of central series. ESTIMATED CHANGES Modified src/group_theory/nilpotent.lean +/- def is_ascending_central_series + theorem lower_central_series_zero + theorem mem_lower_central_series_succ_iff +/- theorem mem_upper_central_series_succ_iff + theorem upper_central_series.map + theorem upper_central_series_mono + theorem upper_central_series_zero - theorem upper_central_series_zero_def 2021-08-23 14:22:14 df3e886 feat(group_theory/group_action): generalize mul_action.function_End to other endomorphisms (#8724) The main aim of this PR is to remove [`intermediate_field.subgroup_action`](https://leanprover-community.github.io/mathlib_docs/field_theory/galois.html#intermediate_field.subgroup_action) which is a weird special case of the much more general instance `f • a = f a`, added in this PR as `alg_equiv.apply_mul_semiring_action`. We add the same actions for all the other hom types for consistency. These generalizations are in line with the `mul_action.function_End` (renamed to `function.End.apply_mul_action`) and `mul_action.perm` (renamed to `equiv.perm.apply_mul_action`) instances introduced by @dwarn, providing any endomorphism that has a monoid structure with a faithful `mul_action` corresponding to function application. Note that there is no monoid structure on `ring_equiv`, or `alg_hom`, so this PR does not bother with the corresponding action. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/module/basic.lean Modified src/data/equiv/mul_add_aut.lean Modified src/field_theory/galois.lean Modified src/group_theory/group_action/defs.lean + theorem add_monoid.End.smul_def Modified src/group_theory/group_action/group.lean - theorem equiv.perm.smul_def Modified src/linear_algebra/basic.lean Modified src/ring_theory/derivation.lean 2021-08-23 12:46:47 3c49044 feat(data/list/nodup): nodup.nth_le_inj_iff (#8813) This allows rewriting as an `inj_iff` lemma directly via proj notation. ESTIMATED CHANGES Modified src/data/list/nodup.lean + theorem list.nodup.nth_le_inj_iff 2021-08-23 12:46:47 f8f551a feat(data/fintype/basic): choose_subtype_eq (#8812) Choosing out of a finite subtype such that the underlying value is precisely some value of the parent type works as intended. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.choose_subtype_eq 2021-08-23 12:00:47 a85c9f6 chore(field_theory): make `is_separable` an instance parameter (#8741) There were a few places that had an explicit `is_separable` parameter. For simplicity and consistency, let's make them all instance params. ESTIMATED CHANGES Modified src/field_theory/galois.lean +/- theorem is_galois.card_aut_eq_finrank +/- theorem is_galois.is_separable_splitting_field +/- theorem is_galois.separable Modified src/field_theory/primitive_element.lean +/- theorem field.exists_primitive_element +/- theorem field.primitive_element_inf_aux Modified src/field_theory/separable.lean +/- theorem is_separable.is_integral +/- theorem is_separable.separable +/- theorem is_separable_tower_top_of_is_separable 2021-08-23 10:17:14 8b9a47b feat(data/finset/basic): finset.exists_ne_of_one_lt_card (#8816) Analog of `fintype.exists_ne_of_one_lt_card`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.exists_ne_of_one_lt_card Modified src/group_theory/p_group.lean 2021-08-23 10:17:13 a52a9fe chore(data/multiset/basic): move abs_sum_le_sum_abs from algebra/big_operators/basic.lean. (#8804) There doesn't seem to be a reason for the place it has now. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean - theorem multiset.abs_sum_le_sum_abs Modified src/data/multiset/basic.lean + theorem multiset.abs_sum_le_sum_abs 2021-08-23 10:17:12 f98fc00 docs(logic/relation): add module docstring (#8773) Also fix whitespaces ESTIMATED CHANGES Modified src/logic/relation.lean +/- def relation.comp +/- def relation.join +/- theorem relation.refl_gen.to_refl_trans_gen +/- theorem relation.refl_trans_gen.cases_head +/- theorem relation.refl_trans_gen.cases_head_iff +/- theorem relation.refl_trans_gen.cases_tail +/- theorem relation.refl_trans_gen_iff_eq +/- theorem relation.transitive_join 2021-08-23 10:17:11 c811dd7 feat(data/nat/mul_ind): multiplicative induction principles (#8514) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.dvd_div_iff Added src/data/nat/mul_ind.lean + def nat.rec_on_mul + def nat.rec_on_pos_prime_coprime + def nat.rec_on_prime_coprime + def nat.rec_on_prime_pow Modified src/data/nat/pow.lean + theorem nat.one_lt_pow_iff 2021-08-23 09:16:14 f949172 feat(data/polynomial/basic): polynomial.op_ring_equiv (#8537) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + def polynomial.op_ring_equiv 2021-08-22 20:10:11 9945a16 refactor(analysis/normed_space/{add_torsor, mazur_ulam}): adjust Mazur-Ulam file to use affine isometries (#8661) ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean - theorem affine_map.continuous_linear_iff - theorem isometric.coe_const_vadd - theorem isometric.coe_const_vsub - theorem isometric.coe_const_vsub_symm - theorem isometric.coe_vadd_const - theorem isometric.coe_vadd_const_symm - def isometric.const_vadd - theorem isometric.const_vadd_zero - def isometric.const_vsub - theorem isometric.dist_point_reflection_fixed - theorem isometric.dist_point_reflection_self' - theorem isometric.dist_point_reflection_self - theorem isometric.dist_point_reflection_self_real - def isometric.point_reflection - theorem isometric.point_reflection_apply - theorem isometric.point_reflection_fixed_iff - theorem isometric.point_reflection_involutive - theorem isometric.point_reflection_midpoint_left - theorem isometric.point_reflection_midpoint_right - theorem isometric.point_reflection_self - theorem isometric.point_reflection_symm - theorem isometric.point_reflection_to_equiv - def isometric.vadd_const - theorem isometric.vadd_const_to_equiv - theorem isometry.vadd_vsub Modified src/analysis/normed_space/affine_isometry.lean + theorem affine_isometry_equiv.coe_const_vadd + theorem affine_isometry_equiv.coe_const_vsub + theorem affine_isometry_equiv.coe_vadd_const + theorem affine_isometry_equiv.coe_vadd_const_symm + def affine_isometry_equiv.const_vadd + theorem affine_isometry_equiv.const_vadd_zero + def affine_isometry_equiv.const_vsub + theorem affine_isometry_equiv.dist_point_reflection_fixed + theorem affine_isometry_equiv.dist_point_reflection_self' + theorem affine_isometry_equiv.dist_point_reflection_self + theorem affine_isometry_equiv.dist_point_reflection_self_real + def affine_isometry_equiv.point_reflection + theorem affine_isometry_equiv.point_reflection_apply + theorem affine_isometry_equiv.point_reflection_fixed_iff + theorem affine_isometry_equiv.point_reflection_involutive + theorem affine_isometry_equiv.point_reflection_midpoint_left + theorem affine_isometry_equiv.point_reflection_midpoint_right + theorem affine_isometry_equiv.point_reflection_self + theorem affine_isometry_equiv.point_reflection_symm + theorem affine_isometry_equiv.point_reflection_to_affine_equiv + theorem affine_isometry_equiv.symm_const_vsub + def affine_isometry_equiv.vadd_const + theorem affine_isometry_equiv.vadd_const_to_affine_equiv + theorem affine_isometry_equiv.vadd_vsub + theorem affine_map.continuous_linear_iff Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.coe_neg + def linear_isometry_equiv.neg + theorem linear_isometry_equiv.symm_neg Modified src/analysis/normed_space/mazur_ulam.lean + theorem isometric.coe_fn_to_real_affine_isometry_equiv - theorem isometric.coe_to_affine_equiv + theorem isometric.coe_to_real_affine_isometry_equiv - def isometric.to_affine_equiv + def isometric.to_real_affine_isometry_equiv 2021-08-22 19:02:17 d9113ec doc(linear_algebra/trace): fix error in title (#8803) the first two lines of this were super contradictory ESTIMATED CHANGES Modified src/linear_algebra/trace.lean 2021-08-22 16:54:23 87f14e3 feat(topology/basic): interior of a singleton (#8784) * add generic lemmas `interior_singleton`, `closure_compl_singleton`; * add more lemmas and instances about `ne_bot (𝓝[{x}ᶜ] x)`; * rename `dense_compl_singleton` to `dense_compl_singleton_iff_not_open`, add new `dense_compl_singleton` that assumes `[ne_bot (𝓝[{x}ᶜ] x)]`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/topology/algebra/module.lean + theorem module.punctured_nhds_ne_bot +/- theorem submodule.eq_top_of_nonempty_interior' Modified src/topology/basic.lean + theorem closure_compl_singleton + theorem dense.interior_compl +/- theorem dense_compl_singleton + theorem dense_compl_singleton_iff_not_open + theorem interior_eq_empty_iff_dense_compl + theorem interior_singleton + theorem mem_closure_iff_nhds_within_ne_bot Modified src/topology/continuous_on.lean - theorem mem_closure_iff_nhds_within_ne_bot 2021-08-22 16:54:22 db9d4a3 feat(data/finset,order/conditionally_complete_lattice): lemmas about `min'/max'` (#8782) ## `data/finset/*` * add `finset.nonempty.to_set`; * add lemmas `finset.max'_lt_iff`, `finset.lt_min'_iff`, `finset.max'_eq_sup'`, `finset.min'_eq_inf'`; * rewrite `finset.induction_on_max` without using `finset.card`, move one step to `finset.lt_max'_of_mem_erase_max'`; ## `order/conditionally_complete_lattice` * add lemmas relating `Sup`/`Inf` of a nonempty finite set in a conditionally complete lattice to `finset.sup'`/`finset.inf'`/`finset.max'`/`finset.min'`; * a few more lemmas about `Sup`/`Inf` of a nonempty finite set in a conditionally complete lattice / linear order; ## `order/filter/at_top_bot` * golf the proof of `filter.high_scores`. ESTIMATED CHANGES Modified src/data/finset/basic.lean Modified src/data/finset/lattice.lean + theorem finset.lt_max'_of_mem_erase_max' + theorem finset.lt_min'_iff + theorem finset.max'_eq_sup' + theorem finset.max'_lt_iff + theorem finset.min'_eq_inf' + theorem finset.min'_lt_of_mem_erase_min' Modified src/order/conditionally_complete_lattice.lean + theorem finset.nonempty.cInf_eq_min' + theorem finset.nonempty.cSup_eq_max' + theorem finset.nonempty.sup'_eq_cSup_image + theorem finset.nonempty.sup'_id_eq_cSup + theorem set.finite.cSup_lt_iff + theorem set.finite.lt_cInf_iff Modified src/order/filter/at_top_bot.lean 2021-08-22 16:54:21 ea9cd02 refactor(geometry/euclidean/basic): adjust Euclidean geometry to use affine isometries for reflections (#8662) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem norm_sub_eq_norm_add + def reflection + theorem reflection_apply + theorem reflection_involutive + theorem reflection_reflection + theorem reflection_symm Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.orthogonal_projection_mem_subspace_eq_self + theorem euclidean_geometry.orthogonal_projection_vsub_orthogonal_projection Modified src/geometry/euclidean/circumcenter.lean 2021-08-22 15:49:31 a9c1300 refactor(topology/metric_space/basic): rename `closed_ball_Icc` (#8790) * rename `closed_ball_Icc` to `real.closed_ball_eq`; * add `real.ball_eq`, `int.ball_eq`, `int.closed_ball_eq`, `int.preimage_ball`, `int.preimage_closed_ball`. ESTIMATED CHANGES Modified src/number_theory/liouville/basic.lean Modified src/topology/instances/real.lean + theorem int.ball_eq + theorem int.closed_ball_eq +/- theorem int.dist_cast_rat +/- theorem int.dist_cast_real +/- theorem int.dist_eq + theorem int.preimage_ball + theorem int.preimage_closed_ball Modified src/topology/metric_space/basic.lean - theorem closed_ball_Icc + theorem real.ball_eq + theorem real.closed_ball_eq 2021-08-22 13:58:19 373911d chore(measure_theory): make `μ` an explicit argument in `subsingleton.measure_zero` etc (#8793) ESTIMATED CHANGES Modified counterexamples/phillips.lean Modified src/measure_theory/measure/hausdorff.lean + theorem measure_theory.dimH_countable +/- theorem measure_theory.dimH_empty +/- theorem measure_theory.dimH_singleton Modified src/measure_theory/measure/measure_space.lean +/- theorem finset.measure_zero - theorem measure_theory.measure_subsingleton +/- theorem set.countable.measure_zero +/- theorem set.finite.measure_zero + theorem set.subsingleton.measure_zero 2021-08-22 03:08:52 8a96d00 chore(scripts): update nolints.txt (#8798) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-22 01:10:57 f915106 chore(data/set/lattice): a few lemmas, golf (#8795) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Union_nonempty_index + theorem set.Union_nonempty_self + theorem set.bUnion_Union + theorem set.bUnion_self 2021-08-21 21:43:39 d3e20b4 chore(data/multiset/basic): consistently use singleton notation (#8786) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/gcd_monoid/multiset.lean +/- theorem multiset.gcd_singleton +/- theorem multiset.lcm_singleton Modified src/data/finset/basic.lean +/- theorem finset.singleton_val + theorem multiset.to_finset_singleton Modified src/data/finset/noncomm_prod.lean Modified src/data/finsupp/basic.lean +/- theorem multiset.to_finsupp_singleton Modified src/data/multiset/antidiagonal.lean +/- theorem multiset.antidiagonal_zero Modified src/data/multiset/basic.lean + theorem multiset.bind_singleton +/- theorem multiset.card_eq_one +/- theorem multiset.card_singleton +/- theorem multiset.count_singleton + theorem multiset.count_singleton_self +/- theorem multiset.disjoint_singleton + theorem multiset.foldr_singleton +/- theorem multiset.map_singleton +/- theorem multiset.mem_singleton +/- theorem multiset.mem_singleton_self +/- theorem multiset.prod_singleton +/- theorem multiset.product_singleton +/- theorem multiset.repeat_one +/- theorem multiset.repeat_subset_singleton +/- theorem multiset.singleton_add + theorem multiset.singleton_bind +/- theorem multiset.singleton_disjoint + theorem multiset.singleton_eq_cons - theorem multiset.singleton_eq_singleton +/- theorem multiset.singleton_inj + theorem multiset.singleton_join +/- theorem multiset.singleton_le +/- theorem multiset.singleton_ne_zero +/- theorem multiset.sum_map_singleton Modified src/data/multiset/erase_dup.lean +/- theorem multiset.erase_dup_singleton Modified src/data/multiset/finset_ops.lean +/- theorem multiset.ndinsert_zero Modified src/data/multiset/fold.lean +/- theorem multiset.fold_singleton Modified src/data/multiset/functor.lean +/- theorem multiset.pure_def Modified src/data/multiset/lattice.lean +/- theorem multiset.inf_singleton +/- theorem multiset.sup_singleton Modified src/data/multiset/nodup.lean +/- theorem multiset.nodup_singleton Modified src/data/multiset/pi.lean +/- theorem multiset.pi_zero Modified src/data/multiset/powerset.lean +/- theorem multiset.powerset_zero Modified src/data/multiset/sections.lean +/- theorem multiset.sections_zero Modified src/data/pnat/factors.lean +/- def prime_multiset.of_prime Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.roots_X_sub_C Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/fin.lean Modified src/group_theory/specific_groups/alternating.lean Modified src/number_theory/ADE_inequality.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/unique_factorization_domain.lean 2021-08-21 21:43:38 252cb02 feat(linear_algebra/vandermonde): `vandermonde v` multiplied by its transpose (#8776) Two not very exciting lemmas about multiplying a Vandermonde matrix by its transpose (one for each side). I don't know if they are really useful, so I could also just inline them in #8777. ESTIMATED CHANGES Modified src/linear_algebra/vandermonde.lean + theorem matrix.vandermonde_mul_vandermonde_transpose + theorem matrix.vandermonde_transpose_mul_vandermonde 2021-08-21 21:43:37 5f51771 feat(linear_algebra/bilinear_form): basis changing `bilin_form.to_matrix` (#8775) A few `simp` lemmas on bilinear forms. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.comp_id_id + theorem bilin_form.comp_id_left + theorem bilin_form.comp_id_right + theorem bilin_form.comp_left_id + theorem bilin_form.comp_right_id + theorem bilin_form.to_matrix_mul_basis_to_matrix 2021-08-21 21:43:36 c44f19f feat(algebra/associated): simple lemmas and dot notation (#8770) Introduce * `prime.exists_mem_finset_dvd` * `prime.not_dvd_one` Rename * `exists_mem_multiset_dvd_of_prime` -> `prime.exists_mem_multiset_dvd` * `left_dvd_or_dvd_right_of_dvd_prime_mul ` ->`prime.left_dvd_or_dvd_right_of_dvd_mul` ESTIMATED CHANGES Modified archive/imo/imo2001_q6.lean Modified src/algebra/associated.lean - theorem exists_mem_multiset_dvd_of_prime - theorem left_dvd_or_dvd_right_of_dvd_prime_mul + theorem prime.exists_mem_finset_dvd + theorem prime.exists_mem_multiset_dvd + theorem prime.exists_mem_multiset_map_dvd + theorem prime.left_dvd_or_dvd_right_of_dvd_mul +/- theorem prime.ne_one +/- theorem prime.ne_zero + theorem prime.not_dvd_one +/- theorem prime.not_unit Modified src/ring_theory/unique_factorization_domain.lean 2021-08-21 19:52:15 57e127a refactor(order/complete_lattice): use `is_empty` (#8796) * change `set.univ_eq_empty_iff` to use `is_empty`; * rename `set.range_eq_empty` to `set.range_eq_empty_iff`; * add new `set.range_eq_empty`, it assumes `[is_empty α]`; * combine `supr_of_empty`, `supr_of_empty'`, and `supr_empty` into `supr_of_empty`, same for `infi`; * replace `csupr_neg` with `csupr_of_empty` and `csupr_false`; * adjust some proofs to use `casesI is_empty_of_nonempty α` instead of `by_cases h : nonempty α`. ESTIMATED CHANGES Modified src/data/matrix/notation.lean Modified src/data/set/basic.lean +/- theorem set.empty_ne_univ +/- theorem set.range_eq_empty + theorem set.range_eq_empty_iff +/- theorem set.univ_eq_empty_iff Modified src/linear_algebra/affine_space/combination.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/measure/measure_space.lean Modified src/measure_theory/measure/outer_measure.lean Modified src/order/complete_lattice.lean - theorem infi_empty +/- theorem infi_of_empty' +/- theorem infi_of_empty - theorem supr_empty +/- theorem supr_of_empty' +/- theorem supr_of_empty Modified src/order/conditionally_complete_lattice.lean + theorem csupr_false - theorem csupr_neg + theorem csupr_of_empty Modified src/order/filter/lift.lean Modified src/topology/instances/ennreal.lean Modified src/topology/uniform_space/basic.lean 2021-08-21 19:52:14 8eba262 feat(topology/metric_space/basic): union of balls `ball x n`, `n : ℕ` (#8792) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.Union_ball_nat + theorem metric.Union_ball_nat_succ + theorem metric.Union_closed_ball_nat 2021-08-21 19:52:13 9b60e0f feat(data/set/basic): add `pairwise_on_pair` (#8789) Add `set.pairwise_on_insert`, `set.pairwise_on_pair`, and `set.pairwise_on_pair_of_symmetric`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.pairwise_on_insert + theorem set.pairwise_on_pair + theorem set.pairwise_on_pair_of_symmetric 2021-08-21 19:52:12 44b8138 chore(topology/instances/ennreal): use `tactic.lift` (#8788) * use `tactic.lift` in two proofs; * use the `order_dual` trick in one proof. ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean Modified src/topology/instances/ennreal.lean 2021-08-21 19:52:11 e00afed feat(topology/metric_space): turn `nonempty_ball` into an `iff` (#8747) * add `set.univ_pi_empty`; * turn `metric.nonempty_ball` into an `iff`, mark it with `@[simp]`; add `metric.ball_eq_empty` * do the same thing to `closed_ball`s; * add primed versions of `metric.ball_pi` and `metric.closed_ball_pi`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/normed_space/basic.lean Modified src/data/set/basic.lean + theorem set.univ_pi_empty Modified src/topology/metric_space/basic.lean + theorem ball_pi' + theorem closed_ball_pi' + theorem metric.ball_eq_empty - theorem metric.ball_eq_empty_iff_nonpos + theorem metric.closed_ball_eq_empty - theorem metric.closed_ball_eq_empty_iff_neg +/- theorem metric.nonempty_ball +/- theorem metric.nonempty_closed_ball 2021-08-21 18:46:32 d31b85f feat(data/list/rotate): is_rotated_append (#8780) `list.append` is commutative with respect to `~r`. ESTIMATED CHANGES Modified src/data/list/rotate.lean + theorem list.is_rotated_append + theorem list.rotate_append_length_eq 2021-08-21 18:46:31 0760b20 feat(topology/metric_space): metrizable spaces (#8759) Define (pseudo)-metric space constructors for metrizable topological spaces. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean +/- theorem metric.is_open_singleton_iff + def metric_space.of_metrizable + def pseudo_metric_space.of_metrizable + def uniform_space.core_of_dist 2021-08-21 17:31:49 bafe207 chore(linear_algebra): remove `→ₗ` notation where the ring is not specified (#8778) This PR removes the notation `M →ₗ N` for linear maps, where the ring is not specified. This is not used much in the library, and is needed for an upcoming refactor that will generalize linear maps to semilinear maps. See the discussion [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Semilinear.20maps). ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/algebra/basic.lean +/- def alg_hom.to_linear_map +/- def algebra.lmul_left +/- def algebra.lmul_right Modified src/algebra/module/linear_map.lean +/- def is_linear_map.mk' Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/basic.lean +/- def linear_equiv.congr_right Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/contraction.lean +/- def dual_tensor_hom Modified src/linear_algebra/dimension.lean +/- theorem rank_comp_le2 Modified src/linear_algebra/direct_sum_module.lean Modified src/linear_algebra/finsupp.lean +/- def finsupp.restrict_dom Modified src/linear_algebra/linear_independent.lean +/- theorem linear_independent.image_subtype Modified src/linear_algebra/tensor_product.lean +/- def linear_map.compl₂ +/- def linear_map.compr₂ +/- theorem linear_map.lcomp_apply +/- def linear_map.llcomp +/- def linear_map.lsmul +/- def tensor_product.curry +/- def tensor_product.lift.equiv +/- def tensor_product.lift +/- theorem tensor_product.lift_compr₂ +/- theorem tensor_product.lift_mk_compr₂ +/- def tensor_product.map +/- def tensor_product.mk +/- theorem tensor_product.mk_compr₂_inj Modified src/ring_theory/integral_closure.lean Modified src/topology/algebra/module.lean 2021-08-21 15:59:17 897e4ed feat(field_theory): finite fields exist (#8692) ESTIMATED CHANGES Modified src/algebra/char_p/algebra.lean + theorem algebra.char_p_iff Modified src/algebra/char_p/basic.lean + theorem char_p.neg_one_pow_char + theorem char_p.neg_one_pow_char_pow +/- theorem ring_hom.char_p_iff_char_p Modified src/algebra/group_power/lemmas.lean + theorem commute.cast_int_left + theorem commute.cast_int_right Modified src/data/fintype/basic.lean + theorem fintype.one_lt_card Modified src/data/polynomial/algebra_map.lean + theorem polynomial.coeff_zero_eq_aeval_zero' Added src/data/zmod/algebra.lean + def zmod.algebra' Modified src/data/zmod/basic.lean Modified src/field_theory/finite/basic.lean + theorem card_eq_pow_finrank + theorem finite_field.X_pow_card_pow_sub_X_nat_degree_eq + theorem finite_field.X_pow_card_pow_sub_X_ne_zero + theorem finite_field.X_pow_card_sub_X_nat_degree_eq + theorem finite_field.X_pow_card_sub_X_ne_zero + theorem finite_field.pow_card_pow + theorem finite_field.roots_X_pow_card_sub_X + theorem zmod.pow_card_pow Added src/field_theory/finite/galois_field.lean + theorem galois_field.card + def galois_field.equiv_zmod_p + theorem galois_field.finrank + theorem galois_field.splits_zmod_X_pow_sub_X + def galois_field + theorem galois_poly_separable Modified src/field_theory/separable.lean + theorem polynomial.exists_finset_of_splits + theorem polynomial.not_separable_zero Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_univ 2021-08-21 12:26:51 f72126b chore(algebra/gcd_monoid): move `algebra.gcd_monoid` to `algebra.gcd_monoid.basic` (#8772) ESTIMATED CHANGES Renamed src/algebra/gcd_monoid.lean to src/algebra/gcd_monoid/basic.lean Modified src/algebra/gcd_monoid/multiset.lean Modified src/data/polynomial/field_division.lean Modified src/ring_theory/unique_factorization_domain.lean 2021-08-21 05:42:59 f36c98e chore(*): remove spurious whitespace (#8769) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/algebra/tower.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/category/Algebra/limits.lean Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Group/adjunctions.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Module/colimits.lean Modified src/algebra/category/Mon/adjunctions.lean Modified src/algebra/module/linear_map.lean Modified src/algebra/monoid_algebra.lean Modified src/analysis/convex/cone.lean Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/category_theory/abelian/pseudoelements.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/currying.lean Modified src/category_theory/monoidal/center.lean Modified src/category_theory/subobject/limits.lean Modified src/control/bitraversable/instances.lean Modified src/control/traversable/derive.lean Modified src/control/uliftable.lean Modified src/data/complex/module.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/embedding.lean Modified src/data/fin.lean Modified src/data/fin_enum.lean Modified src/data/finsupp/basic.lean Modified src/data/holor.lean Modified src/data/int/basic.lean Modified src/data/list/chain.lean Modified src/data/list/nodup_equiv_fin.lean Modified src/data/list/perm.lean Modified src/data/list/sigma.lean Modified src/data/mllist.lean Modified src/data/multiset/basic.lean Modified src/data/nat/bitwise.lean Modified src/data/nat/digits.lean Modified src/data/pfunctor/univariate/M.lean +/- inductive pfunctor.M.is_path Modified src/data/polynomial/algebra_map.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/data/qpf/multivariate/constructions/quot.lean Modified src/data/real/sqrt.lean Modified src/data/set/accumulate.lean Modified src/data/set/basic.lean +/- theorem set.diagonal_eq_range Modified src/data/set/intervals/image_preimage.lean Modified src/deprecated/subfield.lean Modified src/deprecated/submonoid.lean Modified src/dynamics/flow.lean Modified src/dynamics/omega_limit.lean Modified src/field_theory/perfect_closure.lean Modified src/geometry/manifold/instances/real.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/semidirect_product.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/group_theory/submonoid/operations.lean Modified src/linear_algebra/affine_space/affine_equiv.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/multilinear.lean Modified src/logic/relation.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/meta/expr_lens.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/padics/padic_norm.lean Modified src/number_theory/padics/ring_homs.lean Modified src/number_theory/pell.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/order/bounded_lattice.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/well_founded_set.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/basic.lean Modified src/set_theory/pgame.lean Modified src/tactic/converter/apply_congr.lean Modified src/tactic/core.lean Modified src/tactic/dependencies.lean Modified src/tactic/doc_commands.lean Modified src/tactic/ext.lean Modified src/tactic/generalizes.lean Modified src/tactic/induction.lean Modified src/tactic/interactive.lean Modified src/tactic/itauto.lean Modified src/tactic/local_cache.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_cast.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/pi_instances.lean Modified src/tactic/protected.lean Modified src/tactic/restate_axiom.lean Modified src/tactic/simp_command.lean Modified src/tactic/unify_equations.lean Modified src/testing/slim_check/sampleable.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/basic.lean Modified src/topology/compacts.lean +/- def topological_space.positive_compacts: Modified src/topology/connected.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/holder.lean Modified src/topology/order.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean Modified src/topology/sheaves/sheaf_of_functions.lean Modified src/topology/sheaves/stalks.lean Modified src/topology/subset_properties.lean Modified test/conv/apply_congr.lean Modified test/equiv_rw.lean Modified test/generalizes.lean Modified test/induction.lean Modified test/library_search/basic.lean Modified test/monotonicity.lean 2021-08-20 21:38:03 d869256 refactor(data/nat/lattice): move code, add lemmas (#8708) * move `nat.conditionally_complete_linear_order_with_bot` and `enat.complete_linear_order` to a new file `data.nat.lattice`; * add a few lemmas (`nat.supr_lt_succ` etc), move `set.bUnion_lt_succ` to the same file; * use `galois_insertion.lift_complete_lattice` to define `enat.complete_linear_order`. ESTIMATED CHANGES Added src/data/nat/lattice.lean + theorem nat.Inf_def + theorem nat.Inf_eq_zero + theorem nat.Inf_mem + theorem nat.Inf_upward_closed_eq_succ_iff + theorem nat.Sup_def + theorem nat.eq_Ici_of_nonempty_of_upward_closed + theorem nat.infi_lt_succ' + theorem nat.infi_lt_succ + theorem nat.nonempty_of_Inf_eq_succ + theorem nat.nonempty_of_pos_Inf + theorem nat.not_mem_of_lt_Inf + theorem nat.supr_lt_succ' + theorem nat.supr_lt_succ + theorem set.bInter_lt_succ' + theorem set.bInter_lt_succ + theorem set.bUnion_lt_succ' + theorem set.bUnion_lt_succ Modified src/data/set/lattice.lean - theorem set.bInter_lt_succ - theorem set.bUnion_lt_succ Modified src/measure_theory/measure/outer_measure.lean Modified src/order/conditionally_complete_lattice.lean - theorem nat.Inf_def - theorem nat.Inf_eq_zero - theorem nat.Inf_mem - theorem nat.Inf_upward_closed_eq_succ_iff - theorem nat.Sup_def - theorem nat.eq_Ici_of_nonempty_of_upward_closed - theorem nat.nonempty_of_Inf_eq_succ - theorem nat.nonempty_of_pos_Inf - theorem nat.not_mem_of_lt_Inf Modified src/order/filter/partial.lean Modified src/order/order_iso_nat.lean 2021-08-20 14:42:08 45e7eb8 feat(dynamics/fixed_points): simple lemmas (#8768) ESTIMATED CHANGES Modified src/dynamics/fixed_points/basic.lean + theorem function.injective.is_fixed_pt_apply_iff + theorem function.mem_fixed_points_iff 2021-08-20 14:42:07 6ae3747 feat(algebra/big_operators): the product over `{x // x ∈ m}` is the product over `m.to_finset` (#8742) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_mem_multiset 2021-08-20 14:42:06 d62a461 feat(linear_algebra/determinant): `det (M ⬝ N) = det (N ⬝ M)` if `M` is invertible (#8720) If `M` is a square or invertible matrix, then `det (M ⬝ N) = det (N ⬝ M)`. This is basically just using `mul_comm` on `det M * det N`, except for some tricky rewriting to handle the invertible case. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem matrix.det_comm' + theorem matrix.det_comm +/- theorem matrix.det_conj +/- def matrix.index_equiv_of_inv 2021-08-20 14:42:05 7ccf463 feat(algebra): is_smul_regular for `pi`, `finsupp`, `matrix`, `polynomial` (#8716) Also provide same lemma for finsupp, and specialize it for matrices and polynomials Inspired by https://github.com/leanprover-community/mathlib/pull/8681#discussion_r689320217 https://github.com/leanprover-community/mathlib/pull/8679#discussion_r689545373 ESTIMATED CHANGES Modified src/algebra/module/pi.lean + theorem is_smul_regular.pi Modified src/algebra/regular/smul.lean + theorem is_left_regular.is_smul_regular + theorem is_left_regular_iff + theorem is_right_regular.is_smul_regular + theorem is_right_regular_iff + theorem is_smul_regular.is_left_regular - theorem is_smul_regular.is_left_regular_iff + theorem is_smul_regular.is_right_regular Modified src/data/finsupp/basic.lean + theorem is_smul_regular.finsupp Modified src/data/matrix/basic.lean + theorem is_left_regular.matrix + theorem is_smul_regular.matrix Modified src/data/polynomial/basic.lean + theorem is_smul_regular.polynomial 2021-08-20 14:42:03 aee7bad feat(data/list/rotate): cyclic_permutations (#8678) For `l ~ l'` we have `list.permutations`. We provide the list of cyclic permutations of `l` such that all members are `l ~r l'`. This relationship is proven, as well as the induced `nodup` of the list of cyclic permutants. This also simplifies the `cycle.list` definition, and removed the requirement for decidable equality in it. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.length_inits + theorem list.length_tails + theorem list.nth_le_inits + theorem list.nth_le_tails Modified src/data/list/cycle.lean Modified src/data/list/rotate.lean + def list.cyclic_permutations + theorem list.cyclic_permutations_cons + theorem list.cyclic_permutations_eq_nil_iff + theorem list.cyclic_permutations_eq_singleton_iff + theorem list.cyclic_permutations_nil + theorem list.cyclic_permutations_of_ne_nil + theorem list.cyclic_permutations_rotate + theorem list.is_rotated.cyclic_permutations + theorem list.is_rotated_cyclic_permutations_iff +/- theorem list.is_rotated_nil_iff' + theorem list.is_rotated_singleton_iff' + theorem list.is_rotated_singleton_iff + theorem list.length_cyclic_permutations_cons + theorem list.length_cyclic_permutations_of_ne_nil + theorem list.length_mem_cyclic_permutations + theorem list.mem_cyclic_permutations_iff + theorem list.mem_cyclic_permutations_self + theorem list.nil_eq_rotate_iff + theorem list.nodup.cyclic_permutations + theorem list.nodup.rotate_congr + theorem list.nodup.rotate_eq_self_iff + theorem list.nth_le_cyclic_permutations + theorem list.rotate_eq_singleton_iff + theorem list.singleton_eq_rotate_iff 2021-08-20 14:42:02 7e8432d chore(algebra/group_power/lemmas): Lemmas about gsmul (#8618) This restates some existing lemmas as `monotone` and `strict_monotone`, and provides new lemmas about the right argument of gsmul: * `gsmul_le_gsmul'` * `gsmul_lt_gsmul'` * `gsmul_le_gsmul_iff'` * `gsmul_lt_gsmul_iff'` This also removes an unnecessary `linear_order` assumption from `gsmul_le_gsmul_iff` and `gsmul_lt_gsmul_iff`. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem gsmul_eq_gsmul_iff' + theorem gsmul_le_gsmul' + theorem gsmul_le_gsmul_iff' + theorem gsmul_lt_gsmul' + theorem gsmul_lt_gsmul_iff' + theorem gsmul_mono_left + theorem gsmul_mono_right + theorem gsmul_right_inj + theorem gsmul_right_injective + theorem gsmul_strict_mono_left + theorem gsmul_strict_mono_right 2021-08-20 14:42:00 7265a4e feat(linear_algebra/dimension): generalize inequalities and invariance of dimension to arbitrary rings (#8343) We implement some of the results of [_Les familles libres maximales d'un module ont-elles le meme cardinal?_](http://www.numdam.org/article/PSMIR_1973___4_A4_0.pdf). We also generalize many theorems which were previously proved only for vector spaces, but are true for modules over arbitrary rings or rings satisfying the (strong) rank condition or have invariant basis number. (These typically need entire new proofs, as the original proofs e.g. used rank-nullity.) The main new results are: * `basis_fintype_of_finite_spans`: Over any nontrivial ring, the existence of a finite spanning set implies that any basis is finite. * `union_support_maximal_linear_independent_eq_range_basis`: Over any ring `R`, if `b` is a basis for a module `M`, and `s` is a maximal linearly independent set, then the union of the supports of `x ∈ s` (when written out in the basis `b`) is all of `b`. * `infinite_basis_le_maximal_linear_independent`: Over any ring `R`, if `b` is an infinite basis for a module `M`, and `s` is a maximal linearly independent set, then the cardinality of `b` is bounded by the cardinality of `s`. * `mk_eq_mk_of_basis`: We generalize the invariance of dimension theorem to any ring with the invariant basis number property. * `basis.le_span`: We generalize this statement (the size of a basis is bounded by the size of any spanning set) to any ring satisfying the rank condition. * `linear_independent_le_span`: If `R` satisfies the strong rank condition, then for any linearly independent family `v : ι → M` and any finite spanning set `w : set M`, the cardinality of `ι` is bounded by the cardinality of `w`. * `linear_independent_le_basis`: Over any ring `R` satisfying the strong rank condition, if `b` is a basis for a module `M`, and `s` is a linearly independent set, then the cardinality of `s` is bounded by the cardinality of `b`. There is a naming discrepancy: most of the theorem names refer to `dim`, even though the definition is of `module.rank`. This reflects that `module.rank` was originally called `dim`, and only defined for vector spaces. I would prefer to address this in a separate PR (note this discrepancy wasn't introduced in this PR). ESTIMATED CHANGES Modified docs/references.bib Modified src/data/equiv/basic.lean Modified src/data/finsupp/basic.lean + theorem finsupp.equiv_fun_on_fintype_symm_coe Modified src/data/fintype/basic.lean Modified src/data/set/basic.lean + theorem set.ne_univ_iff_exists_not_mem + theorem set.not_subset_iff_exists_mem_not_mem Modified src/data/set/finite.lean + theorem set.not_infinite Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/fixed.lean Modified src/linear_algebra/basis.lean + theorem basis.maximal + theorem basis.mem_span_repr_support Modified src/linear_algebra/dimension.lean + theorem basis.le_span'' +/- theorem basis.le_span +/- theorem basis.mk_eq_dim'' +/- theorem basis.mk_eq_dim +/- theorem basis.mk_range_eq_dim + def basis_fintype_of_finite_spans + theorem basis_le_span' +/- theorem dim_bot +/- theorem dim_eq_of_injective - theorem dim_le_of_injective +/- theorem dim_le_of_submodule - theorem dim_le_of_surjective +/- theorem dim_map_le - theorem dim_of_field + theorem dim_of_ring + theorem dim_punit +/- theorem dim_range_le +/- theorem dim_range_of_surjective +/- theorem dim_span +/- theorem dim_span_set +/- theorem dim_submodule_le +/- theorem dim_top + theorem infinite_basis_le_maximal_linear_independent' + theorem infinite_basis_le_maximal_linear_independent +/- theorem linear_equiv.dim_eq - theorem linear_equiv.dim_eq_lift +/- theorem linear_equiv.lift_dim_eq + def linear_independent_fintype_of_le_span_fintype + theorem linear_independent_le_basis - theorem linear_independent_le_dim + theorem linear_independent_le_infinite_basis + theorem linear_independent_le_span' + theorem linear_independent_le_span + theorem linear_independent_le_span_aux' + theorem linear_map.dim_le_of_injective + theorem linear_map.dim_le_of_surjective + theorem linear_map.lift_dim_le_of_injective + theorem maximal_linear_independent_eq_infinite_basis +/- theorem mk_eq_mk_of_basis' +/- theorem mk_eq_mk_of_basis + theorem union_support_maximal_linear_independent_eq_range_basis +/- theorem {m} - theorem {u₁} Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean + theorem finsupp.apply_total + theorem finsupp.total_option + theorem finsupp.total_total +/- def span.repr Modified src/linear_algebra/linear_independent.lean + def linear_independent.maximal + theorem linear_independent.maximal_iff + theorem linear_independent_bounded_of_finset_linear_independent_bounded + theorem linear_independent_finset_map_embedding_subtype Modified src/set_theory/cardinal.lean + theorem cardinal.lift_mk_le' + theorem cardinal.lift_sup_le_lift_sup' 2021-08-20 14:41:58 15b1461 feat(archive/imo): IMO 2006 Q3 (#8052) Formalization of IMO 2006/3 ESTIMATED CHANGES Added archive/imo/imo2006_q3.lean + theorem four_pow_four_pos + theorem imo2006_q3 + theorem lhs_identity + theorem lhs_ineq + theorem mid_ineq + theorem proof₁ + theorem proof₂ + theorem rhs_ineq + theorem subst_proof₁ + theorem subst_wlog + theorem zero_lt_32 Modified src/algebra/ordered_ring.lean + theorem mul_nonneg_of_three 2021-08-19 16:19:58 5dc8bc1 feat(linear_algebra/clifford_algebra/equivs): the equivalences preserve conjugation (#8739) ESTIMATED CHANGES Modified src/algebra/quaternion.lean + theorem quaternion_algebra.conj_mk Modified src/linear_algebra/clifford_algebra/equivs.lean + def clifford_algebra_complex.of_complex + theorem clifford_algebra_complex.of_complex_I + theorem clifford_algebra_complex.of_complex_comp_to_complex + theorem clifford_algebra_complex.of_complex_conj + theorem clifford_algebra_complex.of_complex_to_complex + theorem clifford_algebra_complex.reverse_apply + theorem clifford_algebra_complex.reverse_eq_id + theorem clifford_algebra_complex.to_complex_comp_of_complex + theorem clifford_algebra_complex.to_complex_involute + theorem clifford_algebra_complex.to_complex_of_complex - theorem clifford_algebra_quaternion.of_quaternion_apply + theorem clifford_algebra_quaternion.of_quaternion_conj + theorem clifford_algebra_quaternion.of_quaternion_mk + theorem clifford_algebra_quaternion.of_quaternion_to_quaternion + theorem clifford_algebra_quaternion.to_quaternion_involute_reverse + theorem clifford_algebra_quaternion.to_quaternion_of_quaternion + theorem clifford_algebra_ring.involute_eq_id + theorem clifford_algebra_ring.reverse_apply + theorem clifford_algebra_ring.reverse_eq_id 2021-08-19 14:31:16 dd5e779 fix(linear_algebra/basic): fix incorrect namespaces (#8757) Previously there were names in the `linear_map` namespace which were about `linear_equiv`s. This moves: * `linear_map.fun_congr_left` to `linear_equiv.fun_congr_left` * `linear_map.automorphism_group` to `linear_equiv.automorphism_group` * `linear_map.automorphism_group.to_linear_map_monoid_hom` to `linear_equiv.automorphism_group.to_linear_map_monoid_hom` ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + def linear_equiv.automorphism_group.to_linear_map_monoid_hom + def linear_equiv.fun_congr_left + theorem linear_equiv.fun_congr_left_apply + theorem linear_equiv.fun_congr_left_comp + theorem linear_equiv.fun_congr_left_id + theorem linear_equiv.fun_congr_left_symm - def linear_map.automorphism_group.to_linear_map_monoid_hom - def linear_map.fun_congr_left - theorem linear_map.fun_congr_left_apply - theorem linear_map.fun_congr_left_comp - theorem linear_map.fun_congr_left_id - theorem linear_map.fun_congr_left_symm Modified src/linear_algebra/invariant_basis_number.lean 2021-08-19 14:31:14 d172085 docs(overview): add weak-* topology (#8755) ESTIMATED CHANGES Modified docs/overview.yaml 2021-08-19 14:31:13 86fccaa feat(measure_theory/strongly_measurable): define strongly measurable functions (#8623) A function `f` is said to be strongly measurable with respect to a measure `μ` if `f` is the sequential limit of simple functions whose support has finite measure. Functions in `Lp` for `0 < p < ∞` are strongly measurable. If the measure is sigma-finite, measurable and strongly measurable are equivalent. The main property of strongly measurable functions is `strongly_measurable.exists_set_sigma_finite`: there exists a measurable set `t` such that `f` is supported on `t` and `μ.restrict t` is sigma-finite. As a consequence, we can prove some results for those functions as if the measure was sigma-finite. I will use this to prove properties of the form `f =ᵐ[μ] g` for `Lp` functions. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton_of_subsingleton Modified src/measure_theory/function/simple_func_dense.lean + theorem measure_theory.simple_func.measure_support_lt_top + theorem measure_theory.simple_func.measure_support_lt_top_of_integrable + theorem measure_theory.simple_func.measure_support_lt_top_of_mem_ℒp Added src/measure_theory/function/strongly_measurable.lean + theorem measurable.strongly_measurable + theorem measure_theory.Lp.fin_strongly_measurable + theorem measure_theory.ae_fin_strongly_measurable.ae_eq_zero_compl + theorem measure_theory.ae_fin_strongly_measurable.exists_set_sigma_finite + def measure_theory.ae_fin_strongly_measurable.sigma_finite_set + def measure_theory.ae_fin_strongly_measurable + theorem measure_theory.ae_fin_strongly_measurable_iff_ae_measurable + theorem measure_theory.fin_strongly_measurable.ae_fin_strongly_measurable + theorem measure_theory.fin_strongly_measurable.exists_set_sigma_finite + def measure_theory.fin_strongly_measurable + theorem measure_theory.fin_strongly_measurable_iff_measurable + theorem measure_theory.integrable.ae_fin_strongly_measurable + theorem measure_theory.mem_ℒp.ae_fin_strongly_measurable + theorem measure_theory.mem_ℒp.fin_strongly_measurable_of_measurable + def measure_theory.strongly_measurable.approx + theorem measure_theory.strongly_measurable.fin_strongly_measurable_of_set_sigma_finite + def measure_theory.strongly_measurable + theorem measure_theory.strongly_measurable_iff_measurable + theorem measure_theory.subsingleton.strongly_measurable Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.simple_func.measurable_set_support 2021-08-19 12:44:51 802859f chore(algebra/big_operators): weaken assumption for multiset.exists_smul_of_dvd_count (#8758) This is slightly more convenient than doing a case split on `a ∈ s` in the caller. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem multiset.exists_smul_of_dvd_count Modified src/ring_theory/unique_factorization_domain.lean 2021-08-19 12:44:50 1efa367 feat(group_action/defs): add missing comp_hom smul instances (#8707) This adds missing `smul_comm_class` and `is_scalar_tower` instances about the `comp_hom` definitions. To resolve unification issues in finding these instances caused by the reducibility of the `comp_hom` defs, this introduces a semireducible def `has_scalar.comp.smul`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean Modified src/algebra/module/linear_map.lean + def module.comp_hom.to_linear_equiv + def module.comp_hom.to_linear_map Modified src/group_theory/group_action/defs.lean + def has_scalar.comp.smul + def has_scalar.comp 2021-08-19 12:44:49 4113db5 feat(ring_theory): the trace of an integral element is integral (#8702) This PR uses `trace_gen_eq_sum_roots` and `trace_trace` to show the trace of an integral element `x : L` over `K` is a multiple of the sum of all conjugates of `x`, and concludes that the trace of `x` is integral. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_dvd + theorem polynomial.eval₂_eq_zero_of_dvd_of_eval₂_eq_zero Modified src/field_theory/minpoly.lean + theorem minpoly.aeval_of_is_scalar_tower Modified src/ring_theory/integral_closure.lean + theorem is_integral.gsmul + theorem is_integral.multiset_prod + theorem is_integral.multiset_sum + theorem is_integral.nsmul + theorem is_integral.pow + theorem is_integral.prod + theorem is_integral.sum Modified src/ring_theory/trace.lean + theorem algebra.is_integral_trace - theorem algebra.trace_gen_eq_sum_roots + theorem intermediate_field.adjoin_simple.trace_gen_eq_sum_roots + theorem intermediate_field.adjoin_simple.trace_gen_eq_zero + theorem power_basis.trace_gen_eq_sum_roots + theorem trace_eq_sum_roots 2021-08-19 11:02:14 159e34e Revert "feat(field_theory/intermediate_field): generalize `algebra` instances" OOPS! This reverts commit 4b525bf25aa33201bd26942a938b84b2df71f175. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean 2021-08-19 11:01:55 4b525bf feat(field_theory/intermediate_field): generalize `algebra` instances The `algebra` and `is_scalar_tower` instances for `intermediate_field` are (again) as general as those for `subalgebra`. ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean 2021-08-19 09:57:42 902d3ac chore(tactic/rewrite_search): reuse rw_rules_p parser (#8752) The parser defined here is the same as `rw_rules_p`, so use it. ESTIMATED CHANGES Modified src/tactic/rewrite_search/frontend.lean 2021-08-19 08:28:44 28a360a feat(analysis/calculus/deriv): prove `deriv_inv` at `x = 0` as well (#8748) * turn `differentiable_at_inv` and `differentiable_at_fpow` into `iff` lemmas; * slightly weaker assumptions for `differentiable_within_at_fpow` etc; * prove `deriv_inv` and `fderiv_inv` for all `x`; * prove formulas for iterated derivs of `x⁻¹` and `x ^ m`, `m : int`; * push `coe` in these formulas; ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean + theorem finset.prod_range_cast_nat_sub Modified src/analysis/calculus/deriv.lean + theorem deriv_fpow' +/- theorem deriv_fpow + theorem deriv_inv'' +/- theorem deriv_inv' +/- theorem deriv_inv +/- theorem deriv_within_fpow +/- theorem differentiable_at_fpow +/- theorem differentiable_at_inv +/- theorem differentiable_on_fpow +/- theorem differentiable_within_at_fpow +/- theorem fderiv_inv +/- theorem has_deriv_at_fpow +/- theorem has_deriv_within_at_fpow +/- theorem has_strict_deriv_at_fpow + theorem iter_deriv_fpow' +/- theorem iter_deriv_fpow + theorem iter_deriv_inv' + theorem iter_deriv_inv +/- theorem iter_deriv_pow' +/- theorem iter_deriv_pow Modified src/analysis/convex/specific_functions.lean 2021-08-19 06:51:43 1c60e61 feat(topology/metric_space/basic): `emetric.ball x ∞ = univ` (#8745) * add `@[simp]` to `metric.emetric_ball`, `metric.emetric_ball_nnreal`, and `metric.emetric_closed_ball_nnreal`; * add `@[simp]` lemmas `metric.emetric_ball_top` and `emetric.closed_ball_top`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean +/- theorem metric.emetric_ball +/- theorem metric.emetric_ball_nnreal + theorem metric.emetric_ball_top +/- theorem metric.emetric_closed_ball_nnreal Modified src/topology/metric_space/emetric_space.lean + theorem emetric.closed_ball_top 2021-08-19 03:46:27 0e0a240 chore(scripts): update nolints.txt (#8754) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-19 01:51:34 ee3f8b8 chore(order/complete_lattice): golf some proofs (#8746) ESTIMATED CHANGES Modified src/order/complete_lattice.lean 2021-08-18 23:53:44 8455433 doc(tactic/simps): typo (#8751) Missed this review comment in #8729 ESTIMATED CHANGES Modified src/tactic/simps.lean 2021-08-18 23:53:43 6fe5b55 feat(algebra/algebra): `alg_{hom,equiv}.restrict_scalars` is injective (#8743) ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean + theorem alg_equiv.restrict_scalars_injective + theorem alg_hom.restrict_scalars_injective 2021-08-18 21:30:49 e0bf9a1 doc({topology.algebra.weak_dual_topology, analysis.normed_space.weak_dual}): fix docstrings (#8710) Fixing docstrings from the recently merged PR #8598 on weak-* topology. ESTIMATED CHANGES Modified src/analysis/normed_space/weak_dual.lean Modified src/topology/algebra/weak_dual_topology.lean 2021-08-18 21:30:47 23cf025 feat(algebra/ordered_sub): define truncated subtraction in general (#8503) * Define and prove properties of truncated subtraction in general * We currently only instantiate it for `nat`. The other types (`multiset`, `finsupp`, `nnreal`, `ennreal`, ...) will be in future PRs. Todo in future PRs: * Provide `has_ordered_sub` instances for all specific cases * Remove the lemmas specific to each individual type ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean Modified src/algebra/ordered_monoid.lean + theorem lt_iff_exists_mul +/- theorem min_mul_distrib' +/- theorem min_mul_distrib + theorem min_one + theorem one_min +/- theorem with_zero.lt_of_mul_lt_mul_left Modified src/algebra/ordered_monoid_lemmas.lean + theorem contravariant.mul_le_cancellable + def mul_le_cancellable + theorem mul_left_cancel'' + theorem mul_right_cancel'' Added src/algebra/ordered_sub.lean + theorem add_le_add_add_sub + theorem add_le_of_le_sub_left_of_le + theorem add_le_of_le_sub_right_of_le + theorem add_sub_add_eq_sub_left' + theorem add_sub_add_right_eq_sub' + theorem add_sub_assoc_of_le + theorem add_sub_cancel_iff_le + theorem add_sub_cancel_left + theorem add_sub_cancel_of_le + theorem add_sub_cancel_right + theorem add_sub_eq_max + theorem add_sub_le_assoc + theorem add_sub_le_left + theorem add_sub_le_right + theorem add_sub_sub_cancel' + theorem eq_sub_iff_add_eq_of_le + theorem eq_sub_of_add_eq'' + theorem le_add_sub' + theorem le_add_sub + theorem le_add_sub_swap + theorem le_sub_add + theorem le_sub_add_add + theorem le_sub_iff_le_sub + theorem le_sub_iff_left + theorem le_sub_iff_right + theorem le_sub_of_add_le_left' + theorem le_sub_of_add_le_right' + theorem lt_add_of_sub_lt_left' + theorem lt_add_of_sub_lt_right' + theorem lt_of_sub_lt_sub_left + theorem lt_of_sub_lt_sub_left_of_le + theorem lt_of_sub_lt_sub_right + theorem lt_of_sub_lt_sub_right_of_le + theorem lt_sub_iff_left + theorem lt_sub_iff_left_of_le + theorem lt_sub_iff_lt_sub + theorem lt_sub_iff_right + theorem lt_sub_iff_right_of_le + theorem lt_sub_of_add_lt_left + theorem lt_sub_of_add_lt_right + theorem sub_add_cancel_iff_le + theorem sub_add_cancel_of_le + theorem sub_add_eq_add_sub' + theorem sub_add_eq_max + theorem sub_add_eq_sub_sub' + theorem sub_add_eq_sub_sub_swap' + theorem sub_add_min + theorem sub_add_sub_cancel'' + theorem sub_eq_iff_eq_add_of_le + theorem sub_eq_of_eq_add'' + theorem sub_eq_sub_min + theorem sub_eq_zero_iff_le + theorem sub_inj_left + theorem sub_inj_right + theorem sub_le_iff_left + theorem sub_le_iff_right + theorem sub_le_iff_sub_le + theorem sub_le_self' + theorem sub_le_sub' + theorem sub_le_sub_add_sub + theorem sub_le_sub_iff_left' + theorem sub_le_sub_iff_right' + theorem sub_le_sub_left' + theorem sub_le_sub_right' + theorem sub_left_inj' + theorem sub_lt_iff_left + theorem sub_lt_iff_right + theorem sub_lt_iff_sub_lt + theorem sub_lt_self' + theorem sub_lt_self_iff' + theorem sub_lt_sub_iff_left_of_le + theorem sub_lt_sub_iff_left_of_le_of_le + theorem sub_lt_sub_iff_right' + theorem sub_lt_sub_right_of_le + theorem sub_min + theorem sub_pos_iff_lt + theorem sub_pos_iff_not_le + theorem sub_pos_of_lt' + theorem sub_right_comm' + theorem sub_right_inj' + theorem sub_self' + theorem sub_self_add + theorem sub_sub' + theorem sub_sub_assoc + theorem sub_sub_cancel_of_le + theorem sub_sub_le + theorem sub_sub_sub_cancel_right' + theorem sub_sub_sub_le_sub + theorem sub_zero' + theorem zero_sub' Modified src/algebra/regular/basic.lean Modified src/data/nat/basic.lean - theorem nat.add_sub_cancel_right - theorem nat.add_sub_eq_max - theorem nat.sub_add_eq_max - theorem nat.sub_add_min - theorem nat.sub_min Modified src/data/real/ennreal.lean - theorem ennreal.sub_eq_zero_iff_le Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.sub_eq_zero_iff_le Modified src/set_theory/ordinal_notation.lean 2021-08-18 18:52:52 0860c41 feat(data/nat/pairing): add some `nat.pair` lemmas (#8740) ESTIMATED CHANGES Modified src/data/nat/pairing.lean + theorem infi_unpair + theorem set.Inter_unpair + theorem set.Union_unpair + theorem supr_unpair 2021-08-18 18:52:51 e6fda2a fix(transform_decl): fix namespace bug (#8733) * The problem was that when writing `@[to_additive] def foo ...` every declaration used in `foo` in namespace `foo` would be additivized without changing the last part of the name. This behavior was intended to translate automatically generated declarations like `foo._proof_1`. However, if `foo` contains a non-internal declaration `foo.bar` and `add_foo.bar` didn't exist yet, it would also create a declaration `add_foo.bar` additivizing `foo.bar`. * This PR changes the behavior: if `foo.bar` has the `@[to_additive]` attribute (potentially with a custom additive name), then we won't create a second additive version of `foo.bar`, and succeed normally. However, if `foo.bar` doesn't have the `@[to_additive]` attribute, then we fail with a nice error message. We could potentially support this behavior, but it doesn't seem that worthwhile and it would require changing a couple low-level definitions that `@[to_additive]` uses (e.g. by replacing `name.map_prefix` so that it only maps prefixes if the name is `internal`). * So far this didn't happen in the library yet. There are currently 5 non-internal declarations `foo.bar` that are used in `foo` where `foo` has the `@[to_additive]` attribute, but all of these declarations were already had an additive version `add_foo.bar`. * These 5 declarations are `[Mon.has_limits.limit_cone, Mon.has_limits.limit_cone_is_limit, con_gen.rel, magma.free_semigroup.r, localization.r]` * This fixes the error in #8707 and resolves the Zulip thread https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.238707.20linter.20weirdness * I also added some documentation / comments to the function `transform_decl_with_prefix_fun_aux`, made it non-private, and rewrote some steps. ESTIMATED CHANGES Modified src/tactic/transform_decl.lean Modified test/to_additive.lean + def some_def.in_namespace + def some_def 2021-08-18 18:52:50 9a249ee doc(tactic/simps): expand (#8729) * Better document custom projections that are composites of multiple projections * Give examples of `initialize_simps_projections` * Add `initialize_simps_projections` entry to commands. ESTIMATED CHANGES Modified src/tactic/simps.lean 2021-08-18 18:52:49 6a83c7d feat(topology/compact_open): the family of constant maps collectively form a continuous map (#8721) ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.coe_const' + def continuous_map.const' + theorem continuous_map.continuous_const' 2021-08-18 18:52:48 3ac609b chore(topology/continuous_function/compact): relax typeclass assumptions for metric space structure on C(X, Y) (#8717) ESTIMATED CHANGES Modified src/topology/continuous_function/compact.lean +/- def continuous_map.equiv_bounded_of_compact 2021-08-18 18:52:47 0d59511 feat(topology/{continuous_function/bounded, metric_space/algebra}): new mixin classes (#8580) This PR defines mixin classes `has_lipschitz_add` and `has_bounded_smul` which are designed to abstract algebraic properties of metric spaces shared by normed groups/fields/modules and by `ℝ≥0`. This permits the bounded continuous functions `α →ᵇ ℝ≥0` to be naturally a topological (ℝ≥0)-module, by a generalization of the proof previously written for normed groups/fields/modules. Frankly, these typeclasses are a bit ad hoc -- but it all seems to work! ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/analysis/normed_space/basic.lean Modified src/topology/continuous_function/bounded.lean +/- def bounded_continuous_function.coe_fn_add_hom +/- theorem bounded_continuous_function.forall_coe_zero_iff_zero +/- def bounded_continuous_function.forget_boundedness_add_hom Added src/topology/metric_space/algebra.lean + theorem dist_pair_smul + theorem dist_smul_pair + def has_lipschitz_mul.C + theorem lipschitz_with_lipschitz_const_mul + theorem lipschitz_with_lipschitz_const_mul_edist 2021-08-18 18:52:46 26590e9 feat(data/list/min_max): maximum is a fold, bounded prod (#8543) Also provide the same lemmas for multiset. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.prod_le_of_forall_le Modified src/data/list/basic.lean + theorem list.prod_le_of_forall_le Modified src/data/list/min_max.lean + theorem list.le_min_of_le_forall + theorem list.max_le_of_forall_le + theorem list.max_nat_le_of_forall_le + theorem list.maximum_eq_coe_foldr_max_of_ne_nil + theorem list.maximum_nat_eq_coe_foldr_max_of_ne_nil + theorem list.minimum_eq_coe_foldr_min_of_ne_nil Modified src/data/multiset/basic.lean + theorem multiset.prod_le_of_forall_le Modified src/data/multiset/fold.lean + theorem multiset.max_le_of_forall_le + theorem multiset.max_nat_le_of_forall_le 2021-08-18 18:52:45 4e7e7df feat(algebra/monoid_algebra): add_monoid_algebra.op_{add,ring}_equiv (#8536) Transport an opposite `add_monoid_algebra` to the algebra over the opposite ring. On the way, - provide API lemma `mul_equiv.inv_fun_eq_symm {f : M ≃* N} : f.inv_fun = f.symm` and the additive version - generalize simp lemmas `equiv_to_opposite_(symm_)apply` to `equiv_to_opposite_(symm_)coe` - tag `map_range.(add_)equiv_symm` with `[simp] ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.op_ring_equiv_single + theorem add_monoid_algebra.op_ring_equiv_symm_single + theorem monoid_algebra.op_ring_equiv_single + theorem monoid_algebra.op_ring_equiv_symm_single Modified src/algebra/opposites.lean + theorem add_monoid_hom.op_ext Modified src/data/equiv/mul_add.lean + theorem mul_equiv.inv_fun_eq_symm + theorem mul_equiv.symm_trans_apply Modified src/data/finsupp/basic.lean +/- theorem finsupp.map_range.add_equiv_symm +/- theorem finsupp.map_range.equiv_symm Modified src/data/opposite.lean - theorem opposite.equiv_to_opposite_apply + theorem opposite.equiv_to_opposite_coe - theorem opposite.equiv_to_opposite_symm_apply + theorem opposite.equiv_to_opposite_symm_coe 2021-08-18 18:52:43 15444e1 feat(model_theory/basic): more substructure API, including subtype, map, and comap (#7937) Defines `first_order.language.embedding.of_injective`, which bundles an injective hom in an algebraic language as an embedding Defines the induced `L.Structure` on an `L.substructure` Defines the embedding `S.subtype` from `S : L.substructure M` into `M` Defines `substructure.map` and `substructure.comap` and associated API including Galois insertions ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.embedding.coe_fn_of_injective + def first_order.language.embedding.of_injective + theorem first_order.language.embedding.of_injective_to_hom + theorem first_order.language.substructure.apply_coe_mem_map + theorem first_order.language.substructure.closure_induction' + theorem first_order.language.substructure.coe_subtype + def first_order.language.substructure.comap + theorem first_order.language.substructure.comap_comap + theorem first_order.language.substructure.comap_id + theorem first_order.language.substructure.comap_inf + theorem first_order.language.substructure.comap_inf_map_of_injective + theorem first_order.language.substructure.comap_infi + theorem first_order.language.substructure.comap_infi_map_of_injective + theorem first_order.language.substructure.comap_injective_of_surjective + theorem first_order.language.substructure.comap_le_comap_iff_of_surjective + theorem first_order.language.substructure.comap_map_comap + theorem first_order.language.substructure.comap_map_eq_of_injective + theorem first_order.language.substructure.comap_strict_mono_of_surjective + theorem first_order.language.substructure.comap_sup_map_of_injective + theorem first_order.language.substructure.comap_supr_map_of_injective + theorem first_order.language.substructure.comap_surjective_of_injective + theorem first_order.language.substructure.comap_top + theorem first_order.language.substructure.gc_map_comap + def first_order.language.substructure.gci_map_comap + def first_order.language.substructure.gi_map_comap + theorem first_order.language.substructure.le_comap_map + theorem first_order.language.substructure.le_comap_of_map_le + def first_order.language.substructure.map + theorem first_order.language.substructure.map_bot + theorem first_order.language.substructure.map_comap_eq_of_surjective + theorem first_order.language.substructure.map_comap_le + theorem first_order.language.substructure.map_comap_map + theorem first_order.language.substructure.map_id + theorem first_order.language.substructure.map_inf_comap_of_surjective + theorem first_order.language.substructure.map_infi_comap_of_surjective + theorem first_order.language.substructure.map_injective_of_injective + theorem first_order.language.substructure.map_le_iff_le_comap + theorem first_order.language.substructure.map_le_map_iff_of_injective + theorem first_order.language.substructure.map_le_of_le_comap + theorem first_order.language.substructure.map_map + theorem first_order.language.substructure.map_strict_mono_of_injective + theorem first_order.language.substructure.map_sup + theorem first_order.language.substructure.map_sup_comap_of_surjective + theorem first_order.language.substructure.map_supr + theorem first_order.language.substructure.map_supr_comap_of_surjective + theorem first_order.language.substructure.map_surjective_of_surjective + theorem first_order.language.substructure.mem_comap + theorem first_order.language.substructure.mem_map + theorem first_order.language.substructure.mem_map_of_mem + theorem first_order.language.substructure.monotone_comap + theorem first_order.language.substructure.monotone_map + def first_order.language.substructure.subtype 2021-08-18 16:14:18 a47d49d chore(set/function): remove reducible on eq_on (#8738) This backs out #8736, and instead removes the unnecessary `@[reducible]`. This leaves the `simp` lemma available if anyone wants it (although it is not currently used in mathlib3), but should still resolve the problem that @dselsam's experimental `simp` in the binport of mathlib3 was excessively enthusiastic about using this lemma. ESTIMATED CHANGES Modified src/data/set/function.lean +/- def set.eq_on +/- theorem set.eq_on_empty 2021-08-18 16:14:17 02b90ab doc(tactic/monotonicity): bad ac_mono syntax doc (#8734) The syntax `ac_mono h` was at some point changed to `ac_mono := h` but the documentation did not reflect the change. ESTIMATED CHANGES Modified src/tactic/monotonicity/interactive.lean 2021-08-18 12:08:53 83c7821 fix(algebra/algebra/restrict_scalars): Remove a bad instance (#8732) This instance forms a non-defeq diamond with the following one ```lean instance submodule.restricted_module' [module R M] [is_scalar_tower R S M] (V : submodule S M) : module R V := by apply_instance ``` The `submodule.restricted_module_is_scalar_tower` instance is harmless, but it can't exist without the first one so we remove it too. Based on the CI result, this instance wasn't used anyway. ESTIMATED CHANGES Modified src/algebra/algebra/restrict_scalars.lean 2021-08-18 12:08:52 c0f16d2 feat(analysis/normed_space/affine_isometry): new file, bundled affine isometries (#8660) This PR defines bundled affine isometries and affine isometry equivs, adapting the theory more or less wholesale from the linear isometry and affine map theories. In follow-up PRs I re-work the Mazur-Ulam and Euclidean geometry libraries to use these objects where appropriate. ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/analysis/normed_space/affine_isometry.lean + theorem affine_isometry.coe_comp + theorem affine_isometry.coe_fn_injective + theorem affine_isometry.coe_id + theorem affine_isometry.coe_mul + theorem affine_isometry.coe_one + theorem affine_isometry.coe_to_affine_isometry_equiv + theorem affine_isometry.coe_to_affine_map + def affine_isometry.comp + theorem affine_isometry.comp_assoc + theorem affine_isometry.comp_continuous_iff + theorem affine_isometry.comp_id + theorem affine_isometry.diam_image + theorem affine_isometry.diam_range + theorem affine_isometry.dist_map + theorem affine_isometry.ediam_image + theorem affine_isometry.ediam_range + theorem affine_isometry.edist_map + theorem affine_isometry.ext + def affine_isometry.id + theorem affine_isometry.id_apply + theorem affine_isometry.id_comp + theorem affine_isometry.id_to_affine_map + theorem affine_isometry.linear_eq_linear_isometry + theorem affine_isometry.map_eq_iff + theorem affine_isometry.map_ne + theorem affine_isometry.map_vadd + theorem affine_isometry.map_vsub + theorem affine_isometry.nndist_map + theorem affine_isometry.to_affine_isometry_equiv_apply + theorem affine_isometry.to_affine_map_injective + structure affine_isometry + theorem affine_isometry_equiv.apply_symm_apply + theorem affine_isometry_equiv.coe_inv + theorem affine_isometry_equiv.coe_mk' + theorem affine_isometry_equiv.coe_mk + theorem affine_isometry_equiv.coe_mul + theorem affine_isometry_equiv.coe_one + theorem affine_isometry_equiv.coe_refl + theorem affine_isometry_equiv.coe_symm_trans + theorem affine_isometry_equiv.coe_to_affine_equiv + theorem affine_isometry_equiv.coe_to_affine_isometry + theorem affine_isometry_equiv.coe_to_homeomorph + theorem affine_isometry_equiv.coe_to_isometric + theorem affine_isometry_equiv.coe_trans + theorem affine_isometry_equiv.comp_continuous_iff + theorem affine_isometry_equiv.comp_continuous_on_iff + theorem affine_isometry_equiv.diam_image + theorem affine_isometry_equiv.dist_map + theorem affine_isometry_equiv.ediam_image + theorem affine_isometry_equiv.edist_map + theorem affine_isometry_equiv.ext + theorem affine_isometry_equiv.linear_eq_linear_isometry + theorem affine_isometry_equiv.linear_isometry_equiv_mk' + theorem affine_isometry_equiv.map_eq_iff + theorem affine_isometry_equiv.map_ne + theorem affine_isometry_equiv.map_vadd + theorem affine_isometry_equiv.map_vsub + def affine_isometry_equiv.mk' + theorem affine_isometry_equiv.range_eq_univ + def affine_isometry_equiv.refl + theorem affine_isometry_equiv.refl_trans + def affine_isometry_equiv.symm + theorem affine_isometry_equiv.symm_apply_apply + theorem affine_isometry_equiv.symm_symm + theorem affine_isometry_equiv.symm_trans + theorem affine_isometry_equiv.to_affine_equiv_injective + theorem affine_isometry_equiv.to_affine_equiv_refl + theorem affine_isometry_equiv.to_affine_equiv_symm + def affine_isometry_equiv.to_affine_isometry + def affine_isometry_equiv.to_homeomorph + theorem affine_isometry_equiv.to_homeomorph_refl + theorem affine_isometry_equiv.to_homeomorph_symm + def affine_isometry_equiv.to_isometric + theorem affine_isometry_equiv.to_isometric_refl + theorem affine_isometry_equiv.to_isometric_symm + def affine_isometry_equiv.trans + theorem affine_isometry_equiv.trans_assoc + theorem affine_isometry_equiv.trans_refl + theorem affine_isometry_equiv.trans_symm + structure affine_isometry_equiv + theorem linear_isometry.coe_to_affine_isometry + def linear_isometry.to_affine_isometry + theorem linear_isometry.to_affine_isometry_linear_isometry + theorem linear_isometry.to_affine_isometry_to_affine_map + theorem linear_isometry_equiv.coe_to_affine_isometry_equiv + def linear_isometry_equiv.to_affine_isometry_equiv + theorem linear_isometry_equiv.to_affine_isometry_equiv_linear_isometry_equiv + theorem linear_isometry_equiv.to_affine_isometry_equiv_to_affine_equiv + theorem linear_isometry_equiv.to_affine_isometry_equiv_to_affine_isometry Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.id_apply + theorem linear_isometry.id_to_linear_map - theorem linear_isometry_equiv.linear_isometry.id_apply - theorem linear_isometry_equiv.linear_isometry.id_to_linear_map Modified src/linear_algebra/affine_space/affine_equiv.lean +/- def affine_equiv.mk' - theorem affine_equiv.to_equiv_mk' 2021-08-18 12:08:51 d1b34f7 feat(ring_theory): define the ideal class group (#8626) This PR defines the ideal class group of an integral domain, as the quotient of the invertible fractional ideals by the principal fractional ideals. It also shows that this corresponds to the more traditional definition in a Dedekind domain, namely the quotient of the nonzero ideals by `I ~ J ↔ ∃ xy, xI = yJ`. Co-Authored-By: Ashvni ashvni.n@gmail.com Co-Authored-By: Filippo A. E. Nuccio filippo.nuccio@univ-st-etienne.fr ESTIMATED CHANGES Added src/ring_theory/class_group.lean + theorem card_class_group_eq_one + theorem card_class_group_eq_one_iff + theorem class_group.mk0_eq_mk0_iff + theorem class_group.mk0_eq_mk0_iff_exists_fraction_ring + theorem class_group.mk0_eq_one_iff + theorem class_group.mk0_surjective + theorem class_group.mk_eq_one_iff + def class_group + theorem coe_to_principal_ideal + theorem quotient_group.mk'_eq_mk' + def to_principal_ideal + theorem to_principal_ideal_eq_iff Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean + theorem is_fraction_ring.div_surjective + theorem is_fraction_ring.lift_algebra_map +/- theorem is_fraction_ring.lift_mk' +/- theorem is_fraction_ring.mk'_eq_div + theorem is_localization.mk'_spec'_mk + theorem is_localization.mk'_spec_mk Modified src/ring_theory/non_zero_divisors.lean Modified src/ring_theory/polynomial/gauss_lemma.lean 2021-08-18 10:32:47 a0aee51 chore({group,ring}_theory/sub{group,monoid,ring,semiring}): Add missing scalar action typeclasses (#8731) This adds `has_faithful_scalar` and `mul_semiring_action` instances for simple subtypes. Neither typeclass associates any new actions with these types; they just provide additionally properties of the existing actions. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/operations.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2021-08-18 10:32:46 6bd6c11 refactor(field_theory,ring_theory): generalize adjoin_root.equiv to `power_basis` (#8726) We had two proofs that `A`-preserving maps from `A[x]` or `A(x)` to `B` are in bijection with the set of conjugate roots to `x` in `B`, so by stating the result for `power_basis` we can avoid reproving it twice, and get some generalizations (to a `comm_ring` instead of an `integral_domain`) for free. There's probably a bit more to generalize in `adjoin_root` or `intermediate_field.adjoin`, which I will do in follow-up PRs. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean - theorem intermediate_field.adjoin.power_basis.gen_eq + theorem intermediate_field.minpoly_gen Modified src/field_theory/separable.lean + theorem alg_hom.card_of_power_basis Modified src/ring_theory/adjoin_root.lean +/- def adjoin_root.equiv + theorem adjoin_root.is_algebraic_root + theorem adjoin_root.is_integral_root + theorem adjoin_root.minpoly_power_basis_gen + theorem adjoin_root.minpoly_power_basis_gen_of_monic + theorem adjoin_root.minpoly_root Modified src/ring_theory/power_basis.lean 2021-08-18 10:32:45 3de385a feat(ring_theory/dedekind_domain): prime elements of `ideal A` are the prime ideals (#8718) This shows that Dedekind domains have unique factorization into prime *ideals*, not just prime *elements* of the monoid `ideal A`. After some thinking, I believe Dedekind domains are the most common setting in which this equality hold. If anyone has a reference showing how to generalize this, that would be much appreciated. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean + theorem ideal.dvd_span_singleton + theorem ideal.is_prime_of_prime + theorem ideal.prime_iff_is_prime + theorem ideal.prime_of_is_prime 2021-08-18 10:32:44 f1b6c8f feat(data/matrix/kronecker): add two lemmas (#8700) Added two lemmas `kronecker_map_assoc` and `kronecker_assoc` showing associativity of the Kronecker product ESTIMATED CHANGES Modified src/data/matrix/kronecker.lean + theorem matrix.kronecker_assoc + theorem matrix.kronecker_map_assoc + theorem matrix.kronecker_map_assoc₁ + def matrix.kronecker_map_bilinear + theorem matrix.kronecker_map_bilinear_mul_mul - def matrix.kronecker_map_linear - theorem matrix.kronecker_map_linear_mul_mul + theorem matrix.kronecker_tmul_assoc 2021-08-18 08:28:19 5335c67 refactor(topology/algebra/ring): `topological_ring` extends `topological_add_group` (#8709) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/topology/algebra/ring.lean 2021-08-18 08:28:18 1151611 feat(algebra/pointwise): instances in locale pointwise (#8689) @rwbarton and @bryangingechen mentioned in https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Friday.20afternoon.20puzzle.20--.2037.20.E2.88.88.2037.3F that we should put pointwise instances on sets in a locale. This PR does that. You now have to write `open_locale pointwise` to get algebraic operations on sets and finsets. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Modified src/algebra/algebra/operations.lean Modified src/algebra/algebra/tower.lean Modified src/algebra/bounds.lean Modified src/algebra/ordered_pointwise.lean Modified src/algebra/pointwise.lean - theorem finset.add_card_le Modified src/analysis/calculus/lhopital.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/convex/topology.lean Modified src/analysis/seminorm.lean Modified src/data/real/basic.lean Modified src/data/set/intervals/image_preimage.lean Modified src/data/set/intervals/unordered_interval.lean +/- theorem set.preimage_neg_interval Modified src/group_theory/finiteness.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/membership.lean Modified src/linear_algebra/basic.lean Modified src/measure_theory/group/basic.lean Modified src/measure_theory/measure/haar.lean Modified src/order/filter/pointwise.lean Modified src/order/well_founded_set.lean Modified src/ring_theory/adjoin/basic.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/hahn_series.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/noetherian.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/nonarchimedean/basic.lean 2021-08-18 08:28:17 efa34dc feat(data/list/perm): nodup_permutations (#8616) A simpler version of #8494 TODO: `nodup s.permutations ↔ nodup s` TODO: `count s s.permutations = (zip_with count s s.tails).prod` ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.count_bind + theorem list.count_map_map + theorem list.inj_on_insert_nth_index_of_not_mem + theorem list.insert_nth_injective + theorem list.insert_nth_length_self - theorem list.insert_nth_nil + theorem list.insert_nth_of_length_lt + theorem list.insert_nth_succ_cons + theorem list.insert_nth_zero + theorem list.length_insert_nth_le_succ + theorem list.length_le_length_insert_nth + theorem list.nth_le_insert_nth_add_succ + theorem list.nth_le_insert_nth_of_lt + theorem list.nth_le_insert_nth_self Modified src/data/list/perm.lean + theorem list.count_permutations'_aux_self + theorem list.injective_permutations'_aux + theorem list.length_permutations'_aux + theorem list.nodup_permutations'_aux_iff + theorem list.nodup_permutations'_aux_of_not_mem + theorem list.nodup_permutations + theorem list.nth_le_permutations'_aux + theorem list.permutations'_aux_nth_le_zero 2021-08-18 07:53:20 41f7b5b feat(linear_algebra/clifford_algebra/equivs): there is a clifford algebra isomorphic to every quaternion algebra (#8670) The proofs are not particularly fast here unfortunately. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean + theorem clifford_algebra.ι_mul_ι_add_swap Modified src/linear_algebra/clifford_algebra/equivs.lean +/- theorem clifford_algebra_complex.to_complex_ι + def clifford_algebra_quaternion.Q + theorem clifford_algebra_quaternion.Q_apply + def clifford_algebra_quaternion.of_quaternion + theorem clifford_algebra_quaternion.of_quaternion_apply + theorem clifford_algebra_quaternion.of_quaternion_comp_to_quaternion + def clifford_algebra_quaternion.quaternion_basis + def clifford_algebra_quaternion.to_quaternion + theorem clifford_algebra_quaternion.to_quaternion_comp_of_quaternion + theorem clifford_algebra_quaternion.to_quaternion_ι 2021-08-18 05:11:57 40b7dc7 chore(data/set/function): remove useless @[simp] (#8736) This lemma ``` lemma eq_on_empty (f₁ f₂ : α → β) : eq_on f₁ f₂ ∅ := λ x, false.elim ``` is currently marked `@[simp]`, but can never fire, because after noting `eq_on` is `@[reducible]`, the pattern we would be replacing looks like `?f ?x`, which Lean3's simp doesn't like. On the other hand, @dselsam's experiments with discrimination trees in simp in the binport of mathlib are spending most of their time on this lemma! Let's get rid of it. ESTIMATED CHANGES Modified src/data/set/function.lean +/- theorem set.eq_on_empty 2021-08-18 03:17:06 cb3d5db feat(algebra/ordered_monoid): generalize {min,max}_mul_mul_{left,right} (#8725) Before, it has assumptions about `cancel_comm_monoid` for all the lemmas. In fact, they hold under much weaker `has_mul`. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean +/- theorem max_le_mul_of_one_le +/- theorem min_le_mul_of_one_le_left +/- theorem min_le_mul_of_one_le_right 2021-08-18 02:21:49 e23e6eb chore(scripts): update nolints.txt (#8735) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-08-18 00:41:07 ce965a5 feat(measure_theory/decomposition/lebesgue): the Lebesgue decomposition theorem (#8687) This PR proves the existence and uniqueness of the Lebesgue decompositions theorem which is the last step before proving the Radon-Nikodym theorem 🎉 ESTIMATED CHANGES Added src/measure_theory/decomposition/lebesgue.lean + theorem measure_theory.measure.eq_radon_nikodym_deriv + theorem measure_theory.measure.eq_singular_part + theorem measure_theory.measure.exists_positive_of_not_mutually_singular + def measure_theory.measure.have_lebesgue_decomposition + theorem measure_theory.measure.have_lebesgue_decomposition_add + theorem measure_theory.measure.have_lebesgue_decomposition_of_finite_measure + theorem measure_theory.measure.have_lebesgue_decomposition_spec + theorem measure_theory.measure.lebesgue_decomposition.max_measurable_le + def measure_theory.measure.lebesgue_decomposition.measurable_le + def measure_theory.measure.lebesgue_decomposition.measurable_le_eval + theorem measure_theory.measure.lebesgue_decomposition.sup_mem_measurable_le + theorem measure_theory.measure.lebesgue_decomposition.supr_le_le + theorem measure_theory.measure.lebesgue_decomposition.supr_mem_measurable_le' + theorem measure_theory.measure.lebesgue_decomposition.supr_mem_measurable_le + theorem measure_theory.measure.lebesgue_decomposition.supr_monotone' + theorem measure_theory.measure.lebesgue_decomposition.supr_monotone + theorem measure_theory.measure.lebesgue_decomposition.supr_succ_eq_sup + theorem measure_theory.measure.lebesgue_decomposition.zero_mem_measurable_le + theorem measure_theory.measure.measurable_radon_nikodym_deriv + theorem measure_theory.measure.mutually_singular_singular_part + def measure_theory.measure.radon_nikodym_deriv + def measure_theory.measure.singular_part + theorem measure_theory.measure.singular_part_le + theorem measure_theory.measure.with_density_radon_nikodym_deriv_le Modified src/measure_theory/integral/lebesgue.lean + theorem measure_theory.with_density_zero Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.finite_measure_of_le + theorem measure_theory.measure.sigma_finite_of_le Modified src/measure_theory/measure/measure_space_def.lean + theorem measure_theory.exists_measure_pos_of_not_measure_Union_null 2021-08-17 22:18:00 67501f6 feat(algebra): generalize `ring_hom.map_dvd` (#8722) Now it is available for `mul_hom` and `monoid_hom`, and in a `monoid` (or `semiring` in the `ring_hom` case), not just `comm_semiring` ESTIMATED CHANGES Modified src/algebra/divisibility.lean + theorem monoid_hom.map_dvd + theorem mul_hom.map_dvd Modified src/algebra/ring/basic.lean +/- theorem ring_hom.map_dvd 2021-08-17 21:07:52 e6e5718 chore(lie/semisimple): tweak `lie_algebra.subsingleton_of_semisimple_lie_abelian` (#8728) ESTIMATED CHANGES Modified src/algebra/lie/semisimple.lean 2021-08-17 21:07:51 31d5549 docs(overview): nilpotent and presented groups (#8711) ESTIMATED CHANGES Modified docs/overview.yaml 2021-08-17 18:30:13 5b5b432 fix(tactic/tfae): remove unused arg in tfae_have (#8727) Since this "discharger" argument is not using the interactive tactic parser, you can only give names of tactics here, and in any case it's unused by the body, so there is no point in specifying the discharger in the first place. ESTIMATED CHANGES Modified src/tactic/tfae.lean 2021-08-17 18:30:12 e0656d1 chore(algebra/module/basic): golf a proof (#8723) ESTIMATED CHANGES Modified src/algebra/module/basic.lean 2021-08-17 18:30:11 579ec7d feat(ring_theory/power_basis): `pb.minpoly_gen = minpoly pb.gen` (#8719) It actually kind of surprised me that this lemma was never added! ESTIMATED CHANGES Modified src/ring_theory/power_basis.lean + theorem power_basis.degree_minpoly_gen + theorem power_basis.dim_le_degree_of_root + theorem power_basis.minpoly_gen_eq 2021-08-17 18:30:10 fefdcf5 feat(tactic/lint): add universe linter (#8685) * The linter checks that there are no bad `max u v` occurrences in declarations (bad means that neither `u` nor `v` occur by themselves). See documentation for more details. * `meta/expr` now imports `meta/rb_map` (but this doesn't give any new transitive imports, so it barely matters). I also removed a transitive import from `meta/rb_map`. ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/model_theory/basic.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/misc.lean Modified src/topology/category/Profinite/projective.lean +/- def Profinite.projective_presentation 2021-08-17 18:30:09 3453f7a docs(order/filter/partial): add module docstring (#8620) Fix up some names: * `core_preimage_gc ` -> `image_core_gc` * `rtendsto_iff_le_comap` -> `rtendsto_iff_le_rcomap` Add whitespaces around tokens ESTIMATED CHANGES Modified src/data/rel.lean - theorem rel.core_preimage_gc + theorem rel.image_core_gc +/- theorem rel.mem_core +/- theorem rel.mem_preimage +/- def rel.preimage Modified src/order/filter/basic.lean +/- theorem filter.Sup_sets_eq +/- theorem filter.comap_Sup +/- theorem filter.comap_infi +/- theorem filter.comap_ne_bot +/- theorem filter.exists_mem_subset_iff +/- theorem filter.filter_eq +/- theorem filter.inter_mem +/- theorem filter.map_supr +/- theorem filter.mem_comap +/- theorem filter.mem_infi_of_mem +/- theorem filter.mem_map_iff_exists_image +/- theorem filter.mem_of_superset +/- theorem filter.mem_principal_self +/- theorem filter.mem_top_iff_forall +/- theorem filter.monotone_mem +/- theorem filter.prod_comm +/- theorem filter.seq_pure +/- theorem filter.supr_principal +/- theorem filter.supr_sets_eq +/- theorem filter.tendsto_const_pure Modified src/order/filter/partial.lean +/- def filter.rmap +/- theorem filter.rmap_sets - theorem filter.rtendsto_iff_le_comap + theorem filter.rtendsto_iff_le_rcomap 2021-08-17 18:30:08 90fc064 chore(algebra/associated): use more dot notation (#8556) I was getting annoyed that working with definitions such as `irreducible`, `prime` and `associated`, I had to write quite verbose terms like `dvd_symm_of_irreducible (irreducible_of_prime (prime_of_factor _ hp)) (irreducible_of_prime (prime_of_factor _ hq)) hdvd`, where a lot of redundancy can be eliminated with dot notation: `(prime_of_factor _ hp).irreducible.dvd_symm (prime_of_factor _ hq).irreducible hdvd`. This PR changes the spelling of many of the lemmas in `algebra/associated.lean` to make usage of dot notation easier. It also adds a few shortcut lemmas that address common patterns. Since this change touches a lot of files, I'll add a RFC label / [open a thread on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/RFC.3A.20adding.20dot.20notations.20.238556) to see what everyone thinks. Renamings: * `irreducible_of_prime` → `prime.irreducible` * `dvd_symm_of_irreducible` → `irreducible.dvd_symm` * `dvd_symm_iff_of_irreducible` → `irreducible.dvd_comm` (cf. `eq.symm` versus `eq_comm`) * `associated_mul_mul` → `associated.mul_mul` * `associated_pow_pow` → `associated.pow_pow` * `dvd_of_associated` → `associated.dvd` * `dvd_dvd_of_associated` → `associated.dvd_dvd` * `dvd_iff_dvd_of_rel_{left,right}` → `associated.dvd_iff_dvd_{left,right}` * `{eq,ne}_zero_iff_of_associated` → `associated.{eq,ne}_zero_iff` * `{irreducible,prime}_of_associated` → `associated.{irreducible,prime}` * `{irreducible,is_unit,prime}_iff_of_associated` → `associated.{irreducible,is_unit,prime}_iff` * `associated_of_{irreducible,prime}_of_dvd` → `{irreducible,prime}.associated_of_dvd` * `gcd_eq_of_associated_{left,right}` → `associated.gcd_eq_{left,right}` * `{irreducible,prime}_of_degree_eq_one_of_monic` → `monic.{irreducible,prime}_of_degree_eq_one` * `gcd_monoid.prime_of_irreducible` → `irreducible.prime` (since the GCD case is probably the only case we care about for this implication. And we could generalize to Schreier domains if not) Additions: * `associated.is_unit := (associated.is_unit_iff _).mp` (to match `associated.prime` and `associated.irreducible`) * `associated.mul_left := associated.mul_mul (associated.refl _) _` * `associated.mul_right := associated.mul_mul _ (associated.refl _)` Other changes: * `associated_normalize`, `normalize_associated`, `associates.mk_normalize`, `normalize_apply`, `prime_X_sub_C`: make their final parameter explicit, since it is only inferrable when trying to apply these lemmas. This change helped to golf a few proofs from tactic mode to term mode. * slight golfing and style fixes ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associated.dvd_iff_dvd_left + theorem associated.dvd_iff_dvd_right + theorem associated.eq_zero_iff + theorem associated.is_unit_iff + theorem associated.mul_left + theorem associated.mul_mul + theorem associated.mul_right + theorem associated.ne_zero_iff + theorem associated.of_mul_left + theorem associated.of_mul_right + theorem associated.pow_pow + theorem associated.prime_iff - theorem associated_mul_left_cancel - theorem associated_mul_mul - theorem associated_mul_right_cancel - theorem associated_of_irreducible_of_dvd - theorem associated_of_prime_of_dvd - theorem associated_pow_pow - theorem dvd_dvd_of_associated - theorem dvd_iff_dvd_of_rel_left - theorem dvd_iff_dvd_of_rel_right - theorem dvd_of_associated - theorem dvd_symm_iff_of_irreducible - theorem dvd_symm_of_irreducible - theorem eq_zero_iff_of_associated + theorem irreducible.associated_of_dvd + theorem irreducible.dvd_comm + theorem irreducible.dvd_symm - theorem irreducible_iff_of_associated - theorem irreducible_of_associated - theorem irreducible_of_prime - theorem is_unit_iff_of_associated - theorem ne_zero_iff_of_associated + theorem prime.associated_of_dvd - theorem prime_iff_of_associated - theorem prime_of_associated Modified src/algebra/divisibility.lean Modified src/algebra/gcd_monoid.lean + theorem associated.gcd_eq_left + theorem associated.gcd_eq_right +/- theorem associated_normalize +/- theorem associates.mk_normalize - theorem gcd_eq_of_associated_left - theorem gcd_eq_of_associated_right +/- theorem normalize_apply +/- theorem normalize_associated Modified src/algebra/gcd_monoid/finset.lean Modified src/algebra/gcd_monoid/multiset.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/squarefree.lean Modified src/data/int/gcd.lean Modified src/data/int/modeq.lean Modified src/data/nat/gcd.lean Modified src/data/nat/modeq.lean Modified src/data/nat/prime.lean Modified src/data/polynomial/cancel_leads.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/ring_division.lean - theorem polynomial.irreducible_of_degree_eq_one_of_monic + theorem polynomial.monic.irreducible_of_degree_eq_one + theorem polynomial.monic.prime_of_degree_eq_one +/- theorem polynomial.prime_X_sub_C - theorem polynomial.prime_of_degree_eq_one_of_monic Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/minpoly.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/number_theory/divisors.lean Modified src/number_theory/padics/padic_integers.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/unique_factorization_domain.lean 2021-08-17 16:30:01 508b13e chore(*): flip various `subsingleton_iff`, `nontrivial_iff` lemmas and add `simp` (#8703) ESTIMATED CHANGES Modified src/algebra/lie/submodule.lean +/- theorem lie_submodule.nontrivial_iff +/- theorem lie_submodule.subsingleton_iff Modified src/group_theory/subgroup.lean +/- theorem subgroup.nontrivial_iff +/- theorem subgroup.subsingleton_iff Modified src/group_theory/submonoid/basic.lean +/- theorem submonoid.nontrivial_iff +/- theorem submonoid.subsingleton_iff Modified src/linear_algebra/basic.lean +/- theorem submodule.nontrivial_iff +/- theorem submodule.subsingleton_iff 2021-08-17 13:05:54 450c2d0 refactor(algebra/algebra/basic): move restrict_scalars into more appropriate files (#8712) This puts: * `submodule.restrict_scalars` in `submodule.lean` since the proofs are all available there, and this is consistent with how `linear_map.restrict_scalars` is placed. This is almost a copy-paste, but all the `R` and `S` variables are swapped to match the existing convention in that file. * The type alias `restrict_scalars` is now in its own file. The docstring at the top of the file is entirely new, but the rest is a direct copy and paste. The motivation is primarily to reduce the size of `algebra/algebra/basic` a little. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - def restrict_scalars.alg_equiv - def restrict_scalars.linear_equiv - theorem restrict_scalars.linear_equiv_map_smul - def restrict_scalars - theorem restrict_scalars_smul_def - def submodule.restrict_scalars - theorem submodule.restrict_scalars_bot - def submodule.restrict_scalars_equiv - theorem submodule.restrict_scalars_inj - theorem submodule.restrict_scalars_injective - theorem submodule.restrict_scalars_mem - theorem submodule.restrict_scalars_top Added src/algebra/algebra/restrict_scalars.lean + def restrict_scalars.alg_equiv + def restrict_scalars.linear_equiv + theorem restrict_scalars.linear_equiv_map_smul + def restrict_scalars + theorem restrict_scalars_smul_def Modified src/algebra/lie/base_change.lean Modified src/algebra/module/submodule.lean + def submodule.restrict_scalars + def submodule.restrict_scalars_equiv + theorem submodule.restrict_scalars_inj + theorem submodule.restrict_scalars_injective + theorem submodule.restrict_scalars_mem Modified src/algebra/module/submodule_lattice.lean + theorem submodule.restrict_scalars_bot + theorem submodule.restrict_scalars_top Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/extend.lean Modified src/linear_algebra/free_module_pid.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/noetherian.lean 2021-08-17 12:21:22 0c145d8 feat(measure_theory/measure/measure_space): add formula for `(map f μ).to_outer_measure` (#8714) ESTIMATED CHANGES Modified src/measure_theory/measure/measure_space.lean + theorem measure_theory.measure.map_to_outer_measure Modified src/measure_theory/measure/outer_measure.lean + theorem measure_theory.outer_measure.trim_eq_trim_iff + theorem measure_theory.outer_measure.trim_le_trim_iff 2021-08-17 10:49:29 4df3fb9 chore(topology/maps): add tendsto_nhds_iff lemmas (#8693) This adds lemmas of the form `something.tendsto_nhds_iff` to ease use. I also had to get lemmas out of a section because `α` was duplicated and that caused typechecking problems. ESTIMATED CHANGES Modified src/topology/maps.lean + theorem closed_embedding.tendsto_nhds_iff + theorem open_embedding.tendsto_nhds_iff Modified src/topology/metric_space/isometry.lean +/- theorem isometry.closed_embedding + theorem isometry.tendsto_nhds_iff +/- theorem isometry.uniform_embedding 2021-08-17 09:42:21 edb0ba4 chore(measure_theory/measure/hausdorff): golf (#8706) * add a `mk_metric` version of `hausdorff_measure_le`, add `finset.sum` versions for both `mk_metric` and `hausdorff_measure`; * slightly golf the proof. ESTIMATED CHANGES Modified src/measure_theory/measure/hausdorff.lean - theorem measure_theory.measure.hausdorff_measure_le + theorem measure_theory.measure.hausdorff_measure_le_liminf_sum + theorem measure_theory.measure.hausdorff_measure_le_liminf_tsum + theorem measure_theory.measure.mk_metric_le_liminf_sum + theorem measure_theory.measure.mk_metric_le_liminf_tsum Modified src/topology/metric_space/emetric_space.lean + theorem emetric.diam_Union_mem_option 2021-08-17 08:38:06 0591c27 feat(ring_theory/fractional_ideal): lemmas on `span_singleton _ x * I` (#8624) Useful in proving the basic properties of the ideal class group. See also #8622 which proves similar things for integral ideals. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.eq_span_singleton_mul + theorem fractional_ideal.le_span_singleton_mul_iff + theorem fractional_ideal.mk'_mul_coe_ideal_eq_coe_ideal + theorem fractional_ideal.span_singleton_mul_coe_ideal_eq_coe_ideal + theorem fractional_ideal.span_singleton_mul_le_iff 2021-08-17 01:58:23 b6f1214 chore(scripts): update nolints.txt (#8715) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-08-16 18:56:34 1263906 chore(data/nat/pairing): add `pp_nodot`, fix some non-finalizing `simp`s (#8705) ESTIMATED CHANGES Modified src/data/nat/pairing.lean +/- def nat.mkpair +/- def nat.unpair 2021-08-16 18:56:33 40d2602 chore(analysis/calculus/deriv): weaker assumptions for `deriv_mul_const` (#8704) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_add_const' + theorem deriv_const_add' + theorem deriv_const_mul' +/- theorem deriv_const_mul +/- theorem deriv_div_const +/- theorem deriv_id'' +/- theorem deriv_id' + theorem deriv_mul_const' +/- theorem deriv_mul_const 2021-08-16 18:56:32 d5ce7e5 chore(data/vector): rename vector2 (#8697) This file was named this way to avoid clashing with `data/vector.lean` in core. This renames it to `data/vector/basic.lean` which avoids the problem. There was never a `vector2` definition, this was only ever a filename. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/data/array/lemmas.lean Modified src/data/bitvec/core.lean Modified src/data/sym/basic.lean Renamed src/data/vector2.lean to src/data/vector/basic.lean 2021-08-16 16:19:26 253712e feat(ring_theory/ideal): lemmas on `ideal.span {x} * I` (#8622) Originally created for being used in the context of the ideal class group, but didn't end up being used. Hopefully they are still useful for others. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.eq_span_singleton_mul + theorem ideal.le_span_singleton_mul_iff + theorem ideal.mem_mul_span_singleton + theorem ideal.mem_span_singleton_mul + theorem ideal.span_singleton_mul_eq_span_singleton_mul + theorem ideal.span_singleton_mul_le_iff + theorem ideal.span_singleton_mul_le_span_singleton_mul 2021-08-16 16:19:25 65b0c58 feat(ring_theory/localization): some lemmas on `coe_submodule` (#8621) A small assortment of results on `is_localization.coe_submodule`, needed for elementary facts about the ideal class group. ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem is_fraction_ring.coe_submodule_injective + theorem is_fraction_ring.coe_submodule_is_principal + theorem is_localization.coe_submodule_injective + theorem is_localization.coe_submodule_is_principal + theorem is_localization.coe_submodule_span + theorem is_localization.coe_submodule_span_singleton 2021-08-16 16:19:24 80b699b chore(ring_theory): generalize `non_zero_divisors` lemmas to `monoid_with_zero` (#8607) None of the results about `non_zero_divisors` needed a ring structure, just a `monoid_with_zero`. So the generalization is obvious. Shall we move this file to the `algebra` namespace sometime soon? ESTIMATED CHANGES Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/non_zero_divisors.lean +/- theorem eq_zero_of_ne_zero_of_mul_left_eq_zero +/- theorem eq_zero_of_ne_zero_of_mul_right_eq_zero - theorem le_non_zero_divisors_of_domain + theorem le_non_zero_divisors_of_no_zero_divisors - theorem map_le_non_zero_divisors_of_injective - theorem map_mem_non_zero_divisors - theorem map_ne_zero_of_mem_non_zero_divisors +/- theorem mem_non_zero_divisors_iff_ne_zero + theorem monoid_with_zero_hom.map_le_non_zero_divisors_of_injective + theorem monoid_with_zero_hom.map_mem_non_zero_divisors + theorem monoid_with_zero_hom.map_ne_zero_of_mem_non_zero_divisors +/- theorem mul_mem_non_zero_divisors - theorem powers_le_non_zero_divisors_of_domain + theorem powers_le_non_zero_divisors_of_no_zero_divisors +/- theorem prod_zero_iff_exists_zero + theorem ring_hom.map_le_non_zero_divisors_of_injective + theorem ring_hom.map_mem_non_zero_divisors + theorem ring_hom.map_ne_zero_of_mem_non_zero_divisors Modified src/ring_theory/polynomial/scale_roots.lean 2021-08-16 16:19:23 106bd3b feat(group_theory/nilpotent): add nilpotent groups (#8538) We make basic definitions of nilpotent groups and prove the standard theorem that a group is nilpotent iff the upper resp. lower central series reaches top resp. bot. ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem quotient_group.forall_coe Added src/group_theory/nilpotent.lean + theorem ascending_central_series_le_upper + theorem descending_central_series_ge_lower + def is_ascending_central_series + def is_descending_central_series + def lower_central_series + theorem lower_central_series_is_descending_central_series + theorem mem_upper_central_series_step + theorem mem_upper_central_series_succ_iff + theorem nilpotent_iff_finite_ascending_central_series + theorem nilpotent_iff_finite_descending_central_series + theorem nilpotent_iff_lower_central_series + def upper_central_series + def upper_central_series_aux + theorem upper_central_series_is_ascending_central_series + def upper_central_series_step + theorem upper_central_series_step_eq_comap_center + theorem upper_central_series_zero_def 2021-08-16 16:19:22 a55084f feat(data/fintype/basic): card_sum, card_subtype_or (#8490) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.card_subtype + theorem fintype.card_subtype_or + theorem fintype.card_subtype_or_disjoint + theorem fintype.card_sum Modified src/data/fintype/card.lean - theorem fintype.card_sum 2021-08-16 16:19:21 f8241b7 feat(algebra/big_operators/basic): prod_subsingleton (#8423) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_unique_nonempty + theorem fintype.prod_subsingleton + theorem fintype.prod_unique Modified src/algebra/group/units.lean + theorem unique_has_one Modified src/data/fintype/card.lean - theorem fintype.prod_unique 2021-08-16 16:19:20 e195347 feat(finsupp/basic): lemmas about emb_domain (#7883) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + def finsupp.emb_domain.add_monoid_hom + theorem finsupp.emb_domain_add + theorem finsupp.emb_domain_single 2021-08-16 15:18:10 53d97e1 puzzle(archive/oxford_invariants): Oxford Invariants Puzzle Challenges, Summer 2021, Week 3, Problem 1 (#8656) This is a formalisation of a problem posed by the Oxford Invariants. Co-authored by @b-mehta ESTIMATED CHANGES Added archive/oxford_invariants/2021summer/week3_p1.lean + theorem week3_p1 2021-08-16 15:18:08 55b2e86 feat(analysis/normed_space): normed group hom completion (#8499) From LTE ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.mem_range_self + theorem normed_group_hom.surjective_on_with.exists_pos + theorem normed_group_hom.surjective_on_with.mono Added src/analysis/normed_space/normed_group_hom_completion.lean + theorem normed_group.dense_range_to_compl + theorem normed_group.norm_to_compl + def normed_group.to_compl + def normed_group_hom.completion + theorem normed_group_hom.completion_add + theorem normed_group_hom.completion_coe + theorem normed_group_hom.completion_coe_to_fun + theorem normed_group_hom.completion_comp + theorem normed_group_hom.completion_def + theorem normed_group_hom.completion_id + theorem normed_group_hom.completion_neg + theorem normed_group_hom.completion_sub + theorem normed_group_hom.completion_to_compl + theorem normed_group_hom.ker_completion + theorem normed_group_hom.ker_le_ker_completion + theorem normed_group_hom.norm_completion + theorem normed_group_hom.zero_completion + def normed_group_hom_completion_hom 2021-08-16 15:18:07 217308c feat(analysis): `x^y` is smooth as a function of `(x, y)` (#8262) ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean + theorem has_deriv_at_of_has_deriv_at_of_ne' Modified src/analysis/convex/specific_functions.lean Modified src/analysis/special_functions/pow.lean + theorem complex.has_strict_fderiv_at_cpow' + theorem continuous.rpow + theorem continuous.rpow_const + theorem continuous_at.rpow + theorem continuous_at.rpow_const + theorem continuous_on.rpow + theorem continuous_on.rpow_const + theorem continuous_within_at.rpow + theorem continuous_within_at.rpow_const - theorem deriv_rpow + theorem deriv_rpow_const - theorem deriv_rpow_of_one_le - theorem deriv_within_rpow + theorem deriv_within_rpow_const - theorem deriv_within_rpow_of_one_le +/- theorem differentiable.rpow + theorem differentiable.rpow_const - theorem differentiable.rpow_of_one_le +/- theorem differentiable_at.rpow + theorem differentiable_at.rpow_const - theorem differentiable_at.rpow_of_one_le +/- theorem differentiable_on.rpow + theorem differentiable_on.rpow_const - theorem differentiable_on.rpow_of_one_le +/- theorem differentiable_within_at.rpow + theorem differentiable_within_at.rpow_const - theorem differentiable_within_at.rpow_of_one_le + theorem filter.tendsto.rpow + theorem filter.tendsto.rpow_const +/- theorem has_deriv_at.rpow + theorem has_deriv_at.rpow_const - theorem has_deriv_at.rpow_of_one_le +/- theorem has_deriv_within_at.rpow + theorem has_deriv_within_at.rpow_const - theorem has_deriv_within_at.rpow_of_one_le + theorem has_fderiv_at.const_rpow + theorem has_fderiv_at.rpow + theorem has_fderiv_at.rpow_const + theorem has_fderiv_within_at.const_rpow + theorem has_fderiv_within_at.rpow + theorem has_fderiv_within_at.rpow_const + theorem has_strict_deriv_at.rpow + theorem has_strict_fderiv_at.const_rpow + theorem has_strict_fderiv_at.rpow + theorem has_strict_fderiv_at.rpow_const + theorem real.abs_rpow_le_exp_log_mul +/- theorem real.continuous_at_rpow + theorem real.continuous_at_rpow_of_ne - theorem real.continuous_at_rpow_of_ne_zero +/- theorem real.continuous_at_rpow_of_pos - theorem real.continuous_rpow - theorem real.continuous_rpow_aux1 - theorem real.continuous_rpow_aux2 - theorem real.continuous_rpow_aux3 - theorem real.continuous_rpow_of_ne_zero - theorem real.continuous_rpow_of_pos + theorem real.deriv_rpow_const' + theorem real.deriv_rpow_const + theorem real.differentiable_at_rpow_of_ne + theorem real.differentiable_rpow_const - theorem real.has_deriv_at_rpow + theorem real.has_deriv_at_rpow_const - theorem real.has_deriv_at_rpow_of_neg - theorem real.has_deriv_at_rpow_of_one_le - theorem real.has_deriv_at_rpow_of_pos - theorem real.has_deriv_at_rpow_zero_of_one_le + theorem real.has_strict_deriv_at_const_rpow + theorem real.has_strict_deriv_at_const_rpow_of_neg + theorem real.has_strict_deriv_at_rpow_const + theorem real.has_strict_deriv_at_rpow_const_of_ne + theorem real.has_strict_fderiv_at_rpow_of_neg + theorem real.has_strict_fderiv_at_rpow_of_pos + theorem real.rpow_add_int + theorem real.rpow_add_nat + theorem real.rpow_add_one + theorem real.rpow_sub_int + theorem real.rpow_sub_nat + theorem real.rpow_sub_one + theorem real.times_cont_diff_at_rpow_const + theorem real.times_cont_diff_at_rpow_const_of_le + theorem real.times_cont_diff_at_rpow_const_of_ne + theorem real.times_cont_diff_at_rpow_of_ne + theorem real.times_cont_diff_rpow_const_of_le + theorem times_cont_diff.rpow + theorem times_cont_diff.rpow_const_of_le + theorem times_cont_diff.rpow_const_of_ne + theorem times_cont_diff_at.rpow + theorem times_cont_diff_at.rpow_const_of_le + theorem times_cont_diff_at.rpow_const_of_ne + theorem times_cont_diff_on.rpow + theorem times_cont_diff_on.rpow_const_of_le + theorem times_cont_diff_on.rpow_const_of_ne + theorem times_cont_diff_within_at.rpow + theorem times_cont_diff_within_at.rpow_const_of_le + theorem times_cont_diff_within_at.rpow_const_of_ne 2021-08-16 13:12:47 d6aae6c feat(tactic/abel): check for defeq of atoms instead of syntactic eq (#8628) I had a call to `abel` break after adding a new typeclass instance, and it turns out this was because two terms became defeq-but-not-syntactically-eq. This PR modifies the equality check in `abel` to follow the implementation in e.g. `ring`. By default, `abel` now unifies atoms up to `reducible`, which should not have a huge impact on build times. Use `abel!` for trying to unify up to `semireducible`. I also renamed the `tactic.abel.cache` to `tactic.abel.context`, since we store more things in there than a few elaborated terms. To appease the docstring linter, I added docs for all of the renamed `def`s. ESTIMATED CHANGES Modified src/tactic/abel.lean Modified test/abel.lean + def id' 2021-08-16 11:55:51 deedf25 feat(algebra/lie/semisimple): adjoint action is injective for semisimple Lie algebras (#8698) ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean + theorem lie_algebra.ad_ker_eq_self_module_ker - theorem lie_algebra.center_eq_adjoint_kernel + theorem lie_algebra.self_module_ker_eq_center Modified src/algebra/lie/semisimple.lean + theorem lie_algebra.ad_ker_eq_bot_of_semisimple 2021-08-16 08:39:16 c416a48 feat(algebra/gcd_monoid): move the `gcd_monoid nat` instance (#7180) moves `gcd_monoid nat` instance, removes corresponding todos. removes: * `nat.normalize_eq` -- use `normalize_eq` instead renames: * `nat.gcd_eq_gcd` to `gcd_eq_nat_gcd` * `nat.lcm_eq_lcm` to `lcm_eq_nat_lcm` ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean - theorem nat.gcd_eq_gcd - theorem nat.lcm_eq_lcm - theorem nat.normalize_eq Modified src/group_theory/perm/cycle_type.lean Modified src/ring_theory/int/basic.lean + theorem gcd_eq_nat_gcd + theorem lcm_eq_nat_lcm 2021-08-16 08:06:39 2b43587 feat(measure_theory/hausdorff_measure): Hausdorff measure and volume coincide in pi types (#8554) co-authored by Yury Kudryashov ESTIMATED CHANGES Modified src/measure_theory/measure/hausdorff.lean + theorem measure_theory.hausdorff_measure_pi_real + theorem measure_theory.measure.hausdorff_measure_le + theorem measure_theory.measure.le_hausdorff_measure + theorem measure_theory.measure.le_mk_metric + theorem measure_theory.outer_measure.le_mk_metric 2021-08-16 06:19:36 a983f24 fix(*): fix universe levels (#8677) The universe levels in the following declarations have been fixed . This means that there was an argument of the form `Type (max u v)` or `Sort (max u v)`, which could be generalized to `Type u` or `Sort u`. In a few cases, I made explicit that there is a universe restriction (sometimes `max u v` is legitimately used as an arbitrary universe level higher than `u`) In some files I also cleaned up some declarations around these. ``` algebraic_geometry.Spec.SheafedSpace_map algebraic_geometry.Spec.to_SheafedSpace algebraic_geometry.Spec.to_PresheafedSpace category_theory.discrete_is_connected_equiv_punit writer_t.uliftable' writer_t.uliftable equiv.prod_equiv_of_equiv_nat free_algebra.dim_eq linear_equiv.alg_conj module.flat cardinal.add_def slim_check.injective_function.mk topological_add_group.of_nhds_zero' topological_group.of_nhds_one' topological_group.of_comm_of_nhds_one topological_add_group.of_comm_of_nhds_zero has_continuous_mul.of_nhds_one has_continuous_add.of_nhds_zero has_continuous_add_of_comm_of_nhds_zero has_continuous_mul_of_comm_of_nhds_one uniform_space_of_compact_t2 AddCommGroup.cokernel_iso_quotient algebraic_geometry.Scheme algebraic_geometry.Scheme.Spec_obj simplex_category.skeletal_functor category_theory.Type_to_Cat.full CommMon_.equiv_lax_braided_functor_punit.lax_braided_to_CommMon CommMon_.equiv_lax_braided_functor_punit.unit_iso Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon Mon_.equiv_lax_monoidal_functor_punit.unit_iso uliftable.down_map weak_dual.has_continuous_smul stone_cech_equivalence Compactum_to_CompHaus.full TopCommRing.category_theory.forget₂.category_theory.reflects_isomorphisms ``` ESTIMATED CHANGES Modified src/algebra/category/Group/colimits.lean Modified src/algebraic_geometry/Spec.lean +/- def algebraic_geometry.Spec.SheafedSpace_map Modified src/algebraic_topology/simplex_category.lean +/- theorem simplex_category.epi_iff_surjective +/- theorem simplex_category.ext +/- def simplex_category.is_skeleton_of +/- def simplex_category.len +/- theorem simplex_category.len_le_of_epi +/- theorem simplex_category.len_le_of_mono +/- def simplex_category.mk +/- theorem simplex_category.mk_len +/- theorem simplex_category.mono_iff_injective +/- theorem simplex_category.skeletal +/- def simplex_category.skeletal_functor +/- def simplex_category.truncated.inclusion +/- def simplex_category.truncated Modified src/category_theory/category/Cat.lean Modified src/category_theory/is_connected.lean +/- def category_theory.discrete_is_connected_equiv_punit Modified src/category_theory/monoidal/CommMon_.lean +/- def CommMon_.equiv_lax_braided_functor_punit.CommMon_to_lax_braided +/- def CommMon_.equiv_lax_braided_functor_punit.lax_braided_to_CommMon +/- def CommMon_.equiv_lax_braided_functor_punit Modified src/category_theory/monoidal/Mon_.lean +/- def Mon_.equiv_lax_monoidal_functor_punit.Mon_to_lax_monoidal +/- def Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon +/- def Mon_.equiv_lax_monoidal_functor_punit Modified src/control/uliftable.lean +/- def cont_t.uliftable' +/- def reader_t.uliftable' +/- def state_t.uliftable' +/- def uliftable.down_map +/- def writer_t.uliftable' Modified src/data/equiv/nat.lean +/- def equiv.prod_equiv_of_equiv_nat Modified src/data/fin_enum.lean +/- theorem fin_enum.mem_pi +/- def fin_enum.pi.cons +/- def fin_enum.pi.enum +/- theorem fin_enum.pi.mem_enum +/- def fin_enum.pi.tail +/- def fin_enum.pi Modified src/linear_algebra/free_algebra.lean +/- theorem free_algebra.dim_eq Modified src/linear_algebra/matrix/to_lin.lean +/- def alg_equiv_matrix' +/- def alg_equiv_matrix +/- def linear_equiv.alg_conj Modified src/model_theory/basic.lean Modified src/ring_theory/flat.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.add_def Modified src/testing/slim_check/functions.lean +/- def slim_check.injective_function.apply +/- theorem slim_check.injective_function.apply_id_injective +/- theorem slim_check.injective_function.apply_id_mem_iff +/- def slim_check.injective_function.list.apply_id +/- theorem slim_check.injective_function.list.apply_id_cons +/- theorem slim_check.injective_function.list.apply_id_eq_self +/- theorem slim_check.injective_function.list.apply_id_zip_eq +/- def slim_check.injective_function.perm.slice +/- def slim_check.total_function.apply +/- def slim_check.total_function.list.to_finmap' +/- def slim_check.total_function.repr_aux Modified src/topology/algebra/group.lean +/- theorem topological_group.of_comm_of_nhds_one +/- theorem topological_group.of_nhds_one' Modified src/topology/algebra/monoid.lean +/- theorem has_continuous_mul.of_nhds_one +/- theorem has_continuous_mul_of_comm_of_nhds_one Modified src/topology/algebra/weak_dual_topology.lean +/- theorem weak_dual.continuous_of_continuous_eval +/- theorem weak_dual.tendsto_iff_forall_eval_tendsto Modified src/topology/category/CompHaus/default.lean +/- theorem CompHaus.is_closed_map +/- theorem CompHaus.is_iso_of_bijective +/- def CompHaus.iso_of_bijective Modified src/topology/category/Compactum.lean +/- def Compactum_to_CompHaus.full Modified src/topology/category/TopCommRing.lean Modified src/topology/uniform_space/compact_separated.lean +/- def uniform_space_of_compact_t2 +/- theorem unique_uniformity_of_compact_t2 2021-08-16 05:42:56 69785fe chore(scripts): update nolints.txt (#8696) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-08-16 03:52:43 b97344c chore(algebra/module): Swap the naming of `smul_(left|right)_injective` to match the naming guide (#8659) The naming conventions say: > An injectivity lemma that uses "left" or "right" should refer to the argument that "changes". For example, a lemma with the statement `a - b = a - c ↔ b = c` could be called `sub_right_inj`. This corrects the name of `function.injective (λ c : R, c • x)` to be `smul_left_injective` instead of the previous `smul_right_injective`, and vice versa for `function.injective (λ x : M, r • x)`. This also brings it in line with `mul_left_injective` and `mul_right_injective`. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean Modified src/algebra/module/basic.lean +/- theorem smul_left_injective +/- theorem smul_right_injective Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/conformal_linear_map.lean Modified src/group_theory/complement.lean - theorem subgroup.smul_injective + theorem subgroup.smul_left_injective Modified src/linear_algebra/basis.lean Modified src/linear_algebra/tensor_product.lean 2021-08-16 03:52:42 2e9029f feat(tactic/ext): add tracing option (#8633) Adds an option to trace all lemmas that `ext` tries to apply, along with the time each attempted application takes. This was useful in debugging a slow `ext` call. ESTIMATED CHANGES Modified src/tactic/ext.lean 2021-08-16 02:20:04 59954c1 docs(data/pfun): add module docstring and def docstrings (#8629) ESTIMATED CHANGES Modified src/data/pfun.lean +/- def pfun.core +/- theorem pfun.core_def +/- theorem pfun.core_res +/- theorem pfun.core_restrict +/- theorem pfun.dom_iff_graph +/- def pfun.image +/- theorem pfun.image_def +/- theorem pfun.mem_core +/- theorem pfun.mem_image +/- theorem pfun.mem_preimage +/- def pfun.preimage +/- theorem pfun.preimage_def +/- theorem pfun.pure_defined +/- def pfun.ran +/- def pfun 2021-08-16 02:20:03 46b3fae feat(topology/category/*/projective): CompHaus and Profinite have enough projectives (#8613) ESTIMATED CHANGES Modified docs/references.bib Renamed src/topology/category/CompHaus.lean to src/topology/category/CompHaus/default.lean + theorem CompHaus.epi_iff_surjective + theorem CompHaus.mono_iff_injective Added src/topology/category/CompHaus/projective.lean + def CompHaus.projective_presentation Modified src/topology/category/Profinite/default.lean + theorem Profinite.epi_iff_surjective + theorem Profinite.mono_iff_injective Added src/topology/category/Profinite/projective.lean + def Profinite.projective_presentation Modified src/topology/homeomorph.lean + theorem homeomorph.compact_space + theorem homeomorph.t2_space Modified src/topology/stone_cech.lean 2021-08-16 02:20:02 4bf5177 feat(algebraic_geometry/EllipticCurve): add working definition of elliptic curve (#8558) The word "elliptic curve" is used in the literature in many different ways. Differential geometers use it to mean a 1-dimensional complex torus. Algebraic geometers nowadays use it to mean some morphism of schemes with a section and some axioms. However classically number theorists used to use a low-brow definition of the form y^2=cubic in x; this works great when the base scheme is, for example, Spec of the rationals. It occurred to me recently that the standard minor modification of the low-brow definition works for all commutative rings with trivial Picard group, and because this covers a lot of commutative rings (e.g. all fields, all PIDs, all integral domains with trivial class group) it would not be unreasonable to have it as a working definition in mathlib. The advantage of this definition is that people will be able to begin writing algorithms which compute various invariants of the curve, for example we can begin to formally verify the database of elliptic curves at LMFDB.org . ESTIMATED CHANGES Modified docs/references.bib Added src/algebraic_geometry/EllipticCurve.lean + def EllipticCurve.disc + def EllipticCurve.disc_aux + theorem EllipticCurve.disc_is_unit + def EllipticCurve.j + structure EllipticCurve 2021-08-16 01:12:19 ec68c7e feat(set_theory/cardinal): lift_sup (#8675) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.lift_sup + theorem cardinal.lift_sup_le + theorem cardinal.lift_sup_le_iff + theorem cardinal.lift_sup_le_lift_sup 2021-08-16 00:24:41 462359d feat(measure): prove Haar measure = Lebesgue measure on R (#8639) ESTIMATED CHANGES Added src/measure_theory/measure/haar_lebesgue.lean + theorem measure_theory.haar_measure_eq_lebesgue_measure + theorem measure_theory.is_add_left_invariant_real_volume + def topological_space.positive_compacts.Icc01 2021-08-15 23:17:23 8e50863 chore(analysis/normed_space/dual): golf some proofs (#8694) ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean +/- theorem normed_space.double_dual_bound +/- theorem normed_space.dual_def - def normed_space.inclusion_in_double_dual' + theorem normed_space.inclusion_in_double_dual_norm_eq + theorem normed_space.inclusion_in_double_dual_norm_le 2021-08-15 21:24:22 8ac0242 feat(topology/algebra/ring): pi instances (#8686) Add instances `pi.topological_ring` and `pi.topological_semiring`. ESTIMATED CHANGES Modified src/topology/algebra/ring.lean 2021-08-15 21:24:21 9af80f3 feat(algebra/opposites): more scalar action instances (#8672) This adds weaker and stronger versions of `monoid.to_opposite_mul_action` for `has_mul`, `monoid_with_zero`, and `semiring`. It also adds an `smul_comm_class` instance. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/module/basic.lean Modified src/algebra/opposites.lean +/- theorem opposite.op_smul_eq_mul Modified src/algebra/smul_with_zero.lean 2021-08-15 21:24:20 fc7da8d chore(data/vector3): extract to a new file (#8669) This is simply a file move, with no other changes other than a minimal docstring. In it's old location this was very hard to find. ESTIMATED CHANGES Added src/data/vector3.lean + theorem exists_vector_succ + theorem exists_vector_zero + def vector3.append + theorem vector3.append_add + theorem vector3.append_cons + theorem vector3.append_insert + theorem vector3.append_left + theorem vector3.append_nil + def vector3.cons + def vector3.cons_elim + theorem vector3.cons_elim_cons + theorem vector3.cons_fs + theorem vector3.cons_fz + theorem vector3.cons_head_tail + theorem vector3.eq_nil + def vector3.head + def vector3.insert + theorem vector3.insert_fs + theorem vector3.insert_fz + def vector3.nil + def vector3.nil_elim + def vector3.nth + def vector3.of_fn + theorem vector3.rec_on_cons + theorem vector3.rec_on_nil + def vector3.tail + def vector3 + def vector_all + theorem vector_all_iff_forall + theorem vector_allp.imp + def vector_allp + theorem vector_allp_cons + theorem vector_allp_iff_forall + theorem vector_allp_nil + theorem vector_allp_singleton + def vector_ex + theorem vector_ex_iff_exists Modified src/number_theory/dioph.lean - theorem exists_vector_succ - theorem exists_vector_zero - def vector3.append - theorem vector3.append_add - theorem vector3.append_cons - theorem vector3.append_insert - theorem vector3.append_left - theorem vector3.append_nil - def vector3.cons - def vector3.cons_elim - theorem vector3.cons_elim_cons - theorem vector3.cons_fs - theorem vector3.cons_fz - theorem vector3.cons_head_tail - theorem vector3.eq_nil - def vector3.head - def vector3.insert - theorem vector3.insert_fs - theorem vector3.insert_fz - def vector3.nil - def vector3.nil_elim - def vector3.nth - def vector3.of_fn - theorem vector3.rec_on_cons - theorem vector3.rec_on_nil - def vector3.tail - def vector3 - def vector_all - theorem vector_all_iff_forall - theorem vector_allp.imp - def vector_allp - theorem vector_allp_cons - theorem vector_allp_iff_forall - theorem vector_allp_nil - theorem vector_allp_singleton - def vector_ex - theorem vector_ex_iff_exists 2021-08-15 21:24:18 6aefa38 chore(topology/algebra/*,analysis/specific_limits): continuity of `fpow` (#8665) * add more API lemmas about continuity of `x ^ n` for natural and integer `n`; * prove that `x⁻¹` and `x ^ n`, `n < 0`, are discontinuous at zero. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem inv_surjective Modified src/analysis/fourier.lean Modified src/analysis/specific_limits.lean + theorem normed_field.continuous_at_fpow + theorem normed_field.continuous_at_inv + theorem normed_field.tendsto_norm_fpow_nhds_within_0_at_top +/- theorem normed_field.tendsto_norm_inverse_nhds_within_0_at_top Modified src/topology/algebra/group_with_zero.lean +/- theorem continuous.fpow +/- theorem continuous_at.fpow +/- theorem continuous_at_fpow + theorem continuous_on.fpow + theorem continuous_within_at.fpow +/- theorem filter.tendsto.fpow - theorem tendsto_fpow Modified src/topology/algebra/monoid.lean + theorem continuous_at.pow + theorem continuous_at_pow + theorem continuous_on.pow + theorem continuous_within_at.pow + theorem filter.tendsto.pow 2021-08-15 21:24:18 fddc1f4 doc(tactic/congr): improve convert_to docs (#8664) The docs should explain how `convert` and `convert_to` differ. ESTIMATED CHANGES Modified src/tactic/congr.lean 2021-08-15 19:29:26 ca5987f chore(data/set/basic): add `image_image` and `preimage_preimage` to `function.left_inverse` (#8688) ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/set/basic.lean + theorem function.left_inverse.image_image + theorem function.left_inverse.preimage_preimage 2021-08-15 13:05:32 bf6eeb2 feat(data/list/cycle): cycle.map and has_repr (#8170) ESTIMATED CHANGES Modified src/data/list/cycle.lean + def cycle.lists + def cycle.map + theorem cycle.mem_lists_iff_coe_eq Modified src/data/list/rotate.lean + theorem list.is_rotated.map + theorem list.map_rotate Added test/cycle.lean 2021-08-15 07:43:38 0bb283b feat(algebra/bounds): add `csupr_mul` etc (#8584) * add `csupr_mul`, `mul_csupr`, `csupr_div`, `csupr_add`, `mul_csupr`, `add_csupr`, `csupr_sub`; * add `is_lub_csupr`, `is_lub_csupr_set`, `is_glb_cinfi`, `is_glb_cinfi_set`; * add `is_lub.csupr_eq`, `is_lub.csupr_set_eq`, `is_glb.cinfi_eq`, `is_glb.cinfi_set_eq`; * add `is_greatest.Sup_mem`, `is_least.Inf_mem`; * add lemmas about `galois_connection` and `Sup`/`Inf` in conditionally complete lattices; * add lemmas about `order_iso` and `Sup`/`Inf` in conditionally complete lattices. ESTIMATED CHANGES Modified src/algebra/bounds.lean + theorem csupr_div + theorem csupr_mul + theorem mul_csupr Modified src/order/conditionally_complete_lattice.lean + theorem galois_connection.l_cSup + theorem galois_connection.l_csupr + theorem galois_connection.l_csupr_set + theorem galois_connection.u_cInf + theorem galois_connection.u_cinfi + theorem galois_connection.u_cinfi_set + theorem is_glb.cinfi_eq + theorem is_glb.cinfi_set_eq + theorem is_glb_cinfi + theorem is_glb_cinfi_set + theorem is_greatest.Sup_mem + theorem is_least.Inf_mem + theorem is_lub.csupr_eq + theorem is_lub.csupr_set_eq + theorem is_lub_csupr + theorem is_lub_csupr_set + theorem order_iso.map_cInf + theorem order_iso.map_cSup + theorem order_iso.map_cinfi + theorem order_iso.map_cinfi_set + theorem order_iso.map_csupr + theorem order_iso.map_csupr_set 2021-08-15 02:59:48 b7d980c feat(topology/algebra/weak_dual_topology + analysis/normed_space/weak_dual_of_normed_space): add definition and first lemmas about weak-star topology (#8598) Add definition and first lemmas about weak-star topology. ESTIMATED CHANGES Added src/analysis/normed_space/weak_dual.lean + def normed_space.dual.continuous_linear_map_to_weak_dual + theorem normed_space.dual.dual_norm_topology_le_weak_dual_topology + def normed_space.dual.to_weak_dual + theorem normed_space.dual.to_weak_dual_continuous + theorem normed_space.dual.to_weak_dual_eq_iff + theorem weak_dual.coe_to_fun_eq_normed_coe_to_fun + def weak_dual.to_normed_dual + theorem weak_dual.to_normed_dual_eq_iff Added src/topology/algebra/weak_dual_topology.lean + theorem weak_dual.coe_fn_continuous + theorem weak_dual.continuous_of_continuous_eval + theorem weak_dual.eval_continuous + theorem weak_dual.tendsto_iff_forall_eval_tendsto + def weak_dual 2021-08-15 02:18:05 ff721ad chore(scripts): update nolints.txt (#8676) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-15 00:01:46 708d99a feat(data/real/ennreal): add `to_real_sub_of_le` (#8674) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_real_sub_of_le 2021-08-15 00:01:45 4644447 fix(tactic/norm_cast): assumption_mod_cast should only work on one goal (#8649) fixes #8438 ESTIMATED CHANGES Modified src/tactic/norm_cast.lean Modified test/norm_cast.lean + theorem b 2021-08-14 23:29:05 c4208d2 chore(measure_theory): fix namespace in docstrings for docgen (#8671) ESTIMATED CHANGES Modified src/measure_theory/decomposition/jordan.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/measure/vector_measure.lean 2021-08-14 13:38:26 8f863f6 feat(measure_theory/decomposition/jordan): the Jordan decomposition theorem for signed measures (#8645) This PR proves the Jordan decomposition theorem for signed measures, that is, given a signed measure `s`, there exists a unique pair of mutually singular measures `μ` and `ν`, such that `s = μ - ν`. ESTIMATED CHANGES Added src/measure_theory/decomposition/jordan.lean + theorem measure_theory.jordan_decomposition.exists_compl_positive_negative + theorem measure_theory.jordan_decomposition.neg_neg_part + theorem measure_theory.jordan_decomposition.neg_pos_part + theorem measure_theory.jordan_decomposition.to_jordan_decomposition_to_signed_measure + def measure_theory.jordan_decomposition.to_signed_measure + theorem measure_theory.jordan_decomposition.to_signed_measure_injective + theorem measure_theory.jordan_decomposition.to_signed_measure_neg + theorem measure_theory.jordan_decomposition.to_signed_measure_zero + theorem measure_theory.jordan_decomposition.zero_neg_part + theorem measure_theory.jordan_decomposition.zero_pos_part + structure measure_theory.jordan_decomposition + theorem measure_theory.signed_measure.of_diff_eq_zero_of_symm_diff_eq_zero_negative + theorem measure_theory.signed_measure.of_diff_eq_zero_of_symm_diff_eq_zero_positive + theorem measure_theory.signed_measure.of_inter_eq_of_symm_diff_eq_zero_negative + theorem measure_theory.signed_measure.of_inter_eq_of_symm_diff_eq_zero_positive + theorem measure_theory.signed_measure.subset_negative_null_set + theorem measure_theory.signed_measure.subset_positive_null_set + def measure_theory.signed_measure.to_jordan_decomposition + def measure_theory.signed_measure.to_jordan_decomposition_equiv + theorem measure_theory.signed_measure.to_jordan_decomposition_neg + theorem measure_theory.signed_measure.to_jordan_decomposition_spec + theorem measure_theory.signed_measure.to_jordan_decomposition_zero + theorem measure_theory.signed_measure.to_signed_measure_to_jordan_decomposition Modified src/measure_theory/measure/vector_measure.lean - def measure_theory.measure.sub_to_signed_measure - theorem measure_theory.measure.sub_to_signed_measure_apply + theorem measure_theory.measure.to_signed_measure_eq_to_signed_measure_iff + theorem measure_theory.measure.to_signed_measure_sub_apply + theorem measure_theory.vector_measure.of_diff_of_diff_eq_zero 2021-08-14 11:55:36 ba76bf7 chore(data/option,data/set): a few lemmas, golf (#8636) * add `option.subsingleton_iff_is_empty` and an instance `option.unique`; * add `set.is_compl_range_some_none`, `set.compl_range_some`, `set.range_some_inter_none`, `set.range_some_union_none`; * split the proof of `set.pairwise_on_eq_iff_exists_eq` into `set.nonempty.pairwise_on_eq_iff_exists_eq` and `set.pairwise_on_eq_iff_exists_eq`. Inspired by #8579 ESTIMATED CHANGES Modified src/data/option/basic.lean Modified src/data/set/basic.lean + theorem set.compl_range_some + theorem set.is_compl_range_some_none + theorem set.nonempty.pairwise_on_eq_iff_exists_eq + theorem set.nonempty.pairwise_on_iff_exists_forall + theorem set.pairwise_on_iff_exists_forall + theorem set.range_some_inter_none + theorem set.range_some_union_none Modified src/logic/relation.lean Modified src/logic/unique.lean + theorem option.subsingleton_iff_is_empty 2021-08-14 10:40:01 721f571 feat(linear_algebra/basic) : add a small lemma for simplifying a map between equivalent quotient spaces (#8640) ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + theorem quotient_group.equiv_quotient_of_eq_mk Modified src/linear_algebra/basic.lean + theorem submodule.quot_equiv_of_eq_mk Modified src/ring_theory/ideal/basic.lean + theorem ideal.quot_equiv_of_eq_mk 2021-08-14 06:36:18 c765b04 chore(data/(int, nat)/modeq): rationalize lemma names (#8644) Many `modeq` lemmas were called `nat.modeq.modeq_something` or `int.modeq.modeq_something`. I'm deleting the duplicated `modeq`, so that lemmas (usually) become `nat.modeq.something` and `int.modeq.something`. Most of them must be `protected`. This facilitates greatly the use of dot notation on `nat.modeq` and `int.modeq` while shortening lemma names. I'm adding a few lemmas: * `nat.modeq.rfl`, `int.modeq.rfl` * `nat.modeq.dvd`, `int.modeq.dvd` * `nat.modeq_of_dvd`, `int.modeq_of_dvd` * `has_dvd.dvd.modeq_zero_nat`, `has_dvd.dvd.zero_modeq_nat`, `has_dvd.dvd.modeq_zero_int`, `has_dvd.dvd.zero_modeq_int` * `nat.modeq.add_left`, `nat.modeq.add_right`, `int.modeq.add_left`, `int.modeq.add_right` * `nat.modeq.add_left_cancel'`, `nat.modeq.add_right_cancel'`, `int.modeq.add_left_cancel'`, `int.modeq.add_right_cancel'` * `int.modeq.sub_left`, `int.modeq.sub_right` * `nat.modeq_sub`, `int.modeq_sub` * `int.modeq_one` * `int.modeq_pow` I'm also renaming some lemmas (on top of the general renaming): * `add_cancel_left` -> `add_left_cancel`, `add_cancel_right` -> `add_right_cancel` * `modeq_zero_iff` -> `modeq_zero_iff_dvd` in prevision of an upcoming PR ESTIMATED CHANGES Modified archive/imo/imo1964_q1.lean Modified archive/miu_language/decision_suf.lean Modified src/algebra/char_p/basic.lean Modified src/data/int/modeq.lean + theorem has_dvd.dvd.modeq_zero_int + theorem has_dvd.dvd.zero_modeq_int + theorem int.coe_nat_modeq_iff + theorem int.exists_unique_equiv + theorem int.exists_unique_equiv_nat + theorem int.gcd_a_modeq + theorem int.mod_coprime + theorem int.mod_modeq - theorem int.modeq.coe_nat_modeq_iff + theorem int.modeq.dvd - theorem int.modeq.exists_unique_equiv - theorem int.modeq.exists_unique_equiv_nat - theorem int.modeq.gcd_a_modeq - theorem int.modeq.mod_coprime - theorem int.modeq.mod_modeq - theorem int.modeq.modeq_add - theorem int.modeq.modeq_add_cancel_left - theorem int.modeq.modeq_add_cancel_right - theorem int.modeq.modeq_add_fac - theorem int.modeq.modeq_and_modeq_iff_modeq_mul - theorem int.modeq.modeq_iff_dvd - theorem int.modeq.modeq_mul - theorem int.modeq.modeq_mul_left' - theorem int.modeq.modeq_mul_left - theorem int.modeq.modeq_mul_right' - theorem int.modeq.modeq_mul_right - theorem int.modeq.modeq_neg - theorem int.modeq.modeq_of_dvd_of_modeq - theorem int.modeq.modeq_of_modeq_mul_left - theorem int.modeq.modeq_of_modeq_mul_right - theorem int.modeq.modeq_sub - theorem int.modeq.modeq_zero_iff + theorem int.modeq.of_modeq_mul_left + theorem int.modeq.of_modeq_mul_right + theorem int.modeq_add_fac + theorem int.modeq_and_modeq_iff_modeq_mul + theorem int.modeq_iff_dvd + theorem int.modeq_of_dvd + theorem int.modeq_one + theorem int.modeq_sub + theorem int.modeq_zero_iff_dvd Modified src/data/int/parity.lean Modified src/data/nat/digits.lean Modified src/data/nat/modeq.lean + theorem has_dvd.dvd.modeq_zero_nat + theorem has_dvd.dvd.zero_modeq_nat + def nat.chinese_remainder' + def nat.chinese_remainder + theorem nat.coprime_of_mul_modeq_one + theorem nat.mod_modeq - def nat.modeq.chinese_remainder' - def nat.modeq.chinese_remainder - theorem nat.modeq.coprime_of_mul_modeq_one - theorem nat.modeq.dvd_of_modeq - theorem nat.modeq.mod_modeq - theorem nat.modeq.modeq_add - theorem nat.modeq.modeq_add_cancel_left - theorem nat.modeq.modeq_add_cancel_right - theorem nat.modeq.modeq_and_modeq_iff_modeq_mul - theorem nat.modeq.modeq_iff_dvd' - theorem nat.modeq.modeq_iff_dvd - theorem nat.modeq.modeq_mul - theorem nat.modeq.modeq_mul_left' - theorem nat.modeq.modeq_mul_left - theorem nat.modeq.modeq_mul_right' - theorem nat.modeq.modeq_mul_right - theorem nat.modeq.modeq_of_dvd - theorem nat.modeq.modeq_of_dvd_of_modeq - theorem nat.modeq.modeq_of_modeq_mul_left - theorem nat.modeq.modeq_of_modeq_mul_right - theorem nat.modeq.modeq_one - theorem nat.modeq.modeq_pow - theorem nat.modeq.modeq_zero_iff + theorem nat.modeq.of_modeq_mul_left + theorem nat.modeq.of_modeq_mul_right + theorem nat.modeq_and_modeq_iff_modeq_mul + theorem nat.modeq_iff_dvd' + theorem nat.modeq_iff_dvd + theorem nat.modeq_of_dvd + theorem nat.modeq_one + theorem nat.modeq_sub + theorem nat.modeq_zero_iff_dvd Modified src/data/nat/totient.lean Modified src/data/zmod/basic.lean + theorem zmod.val_le Modified src/dynamics/ergodic/conservative.lean Modified src/group_theory/p_group.lean Modified src/group_theory/sylow.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/pell.lean Modified src/number_theory/primes_congruent_one.lean 2021-08-14 04:51:40 679a8a7 docs(data/int/basic): add module docstring (#8655) ESTIMATED CHANGES Modified src/data/int/basic.lean 2021-08-14 02:16:22 36826cb chore(scripts): update nolints.txt (#8666) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-14 02:16:21 1b1088c feat(linear_algeba/linear_independent): coe_range (#8341) ESTIMATED CHANGES Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.coe_range 2021-08-14 00:25:39 50d3de9 feat(logic/basic): a few lemmas about `xor` (#8650) Inspired by #8579 ESTIMATED CHANGES Modified src/logic/basic.lean + theorem xor_comm + theorem xor_false + theorem xor_self + theorem xor_true 2021-08-13 21:43:57 94e4667 feat(order/filter): change definition of inf (#8657) The current definition of `filter.inf` came directly from the Galois insertion: `u ∈ f ⊓ g` if it contains `s ∩ t` for some `s ∈ f` and `t ∈ g`, but the new one is tidier: `u ∈ f ⊓ g` if `u = s ∩ t` for some `s ∈ f` and `t ∈ g`. This gives a stronger assertion to work with when assuming a set belongs to a filter inf. On the other hand it makes it harder to prove such a statement so we keep the old version as a lemma `filter.mem_inf_of_inter : ∀ {f g : filter α} {s t u : set α}, s ∈ f → t ∈ g → s ∩ t ⊆ u → u ∈ f ⊓ g`. Also renames lots of lemmas to remove the word "sets" that was a remnant of the very early days. In passing I also changed the simp lemma `filter.mem_map` from `t ∈ map m f ↔ {x | m x ∈ t} ∈ f` to `t ∈ map m f ↔ m ⁻¹' t ∈ f` which seemed more normal form to me. But this led to a lot of breakage, so I also kept the old version as `mem_map'`. ESTIMATED CHANGES Modified roadmap/topology/paracompact.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/normed_group_quotient.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/special_functions/polynomials.lean Modified src/data/analysis/filter.lean Modified src/data/set/lattice.lean + theorem set.union_distrib_bInter_left + theorem set.union_distrib_bInter_right Modified src/dynamics/omega_limit.lean Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/bump_function.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/geometry/manifold/whitney_embedding.lean Modified src/measure_theory/integral/bochner.lean Modified src/measure_theory/integral/integrable_on.lean Modified src/measure_theory/integral/interval_integral.lean Modified src/measure_theory/integral/lebesgue.lean Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure/hausdorff.lean Modified src/measure_theory/measure/measure_space.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean + theorem filter.Inter_mem - theorem filter.Inter_mem_sets + theorem filter.bInter_finset_mem - theorem filter.bInter_finset_mem_sets + theorem filter.bInter_mem - theorem filter.bInter_mem_sets + theorem filter.compl_not_mem - theorem filter.compl_not_mem_sets - theorem filter.empty_in_sets_eq_bot + theorem filter.empty_mem_iff_bot - theorem filter.empty_nmem_sets + theorem filter.empty_not_mem + theorem filter.eq_Inf_of_mem_iff_exists_mem - theorem filter.eq_Inf_of_mem_sets_iff_exists_mem + theorem filter.eq_binfi_of_mem_iff_exists_mem - theorem filter.eq_binfi_of_mem_sets_iff_exists_mem + theorem filter.eq_infi_of_mem_iff_exists_mem - theorem filter.eq_infi_of_mem_sets_iff_exists_mem + theorem filter.eventually_inf +/- theorem filter.eventually_true + theorem filter.exists_mem_subset_iff - theorem filter.exists_sets_subset_iff + theorem filter.forall_mem_nonempty_iff_ne_bot - theorem filter.forall_sets_nonempty_iff_ne_bot + theorem filter.image_coe_mem_of_mem_comap - theorem filter.image_coe_mem_sets + theorem filter.image_mem_of_mem_comap - theorem filter.image_mem_sets + theorem filter.inter_mem + theorem filter.inter_mem_iff + theorem filter.inter_mem_inf - theorem filter.inter_mem_inf_sets - theorem filter.inter_mem_sets - theorem filter.inter_mem_sets_iff + theorem filter.mem_Sup - theorem filter.mem_Sup_sets + theorem filter.mem_bind' + theorem filter.mem_bind - theorem filter.mem_bind_sets' - theorem filter.mem_bind_sets - theorem filter.mem_binfi + theorem filter.mem_binfi_of_directed + theorem filter.mem_bot - theorem filter.mem_bot_sets + theorem filter.mem_comap - theorem filter.mem_comap_sets + theorem filter.mem_inf_iff + theorem filter.mem_inf_iff_superset + theorem filter.mem_inf_of_inter + theorem filter.mem_inf_of_left + theorem filter.mem_inf_of_right - theorem filter.mem_inf_sets - theorem filter.mem_inf_sets_of_left - theorem filter.mem_inf_sets_of_right + theorem filter.mem_infi' +/- theorem filter.mem_infi + theorem filter.mem_infi_finset - theorem filter.mem_infi_iff' - theorem filter.mem_infi_iff + theorem filter.mem_infi_of_directed + theorem filter.mem_infi_of_mem - theorem filter.mem_infi_sets - theorem filter.mem_infi_sets_finset + theorem filter.mem_join - theorem filter.mem_join_sets + theorem filter.mem_map' +/- theorem filter.mem_map + theorem filter.mem_map_iff_exists_image - theorem filter.mem_map_sets_iff + theorem filter.mem_of_eq_bot + theorem filter.mem_of_superset + theorem filter.mem_principal - theorem filter.mem_principal_sets + theorem filter.mem_pure - theorem filter.mem_pure_sets + theorem filter.mem_seq_def + theorem filter.mem_seq_iff - theorem filter.mem_seq_sets_def - theorem filter.mem_seq_sets_iff - theorem filter.mem_sets_of_eq_bot - theorem filter.mem_sets_of_superset + theorem filter.mem_sup - theorem filter.mem_sup_sets + theorem filter.mem_supr - theorem filter.mem_supr_sets + theorem filter.mem_top + theorem filter.mem_top_iff_forall - theorem filter.mem_top_sets - theorem filter.mem_top_sets_iff_forall + theorem filter.mem_traverse + theorem filter.mem_traverse_iff - theorem filter.mem_traverse_sets - theorem filter.mem_traverse_sets_iff + theorem filter.monotone_mem - theorem filter.monotone_mem_sets + theorem filter.mp_mem - theorem filter.mp_sets + theorem filter.nonempty_of_mem - theorem filter.nonempty_of_mem_sets + theorem filter.sInter_mem - theorem filter.sInter_mem_sets + theorem filter.seq_mem_seq - theorem filter.seq_mem_seq_sets + theorem filter.singleton_mem_pure - theorem filter.singleton_mem_pure_sets + theorem filter.univ_mem' + theorem filter.univ_mem - theorem filter.univ_mem_sets' - theorem filter.univ_mem_sets Modified src/order/filter/cofinite.lean Modified src/order/filter/countable_Inter.lean + theorem countable_bInter_mem - theorem countable_bInter_mem_sets Modified src/order/filter/extr.lean Modified src/order/filter/lift.lean Modified src/order/filter/partial.lean Modified src/order/filter/pointwise.lean Modified src/order/filter/ultrafilter.lean +/- theorem ultrafilter.empty_not_mem + theorem ultrafilter.mem_pure - theorem ultrafilter.mem_pure_sets +/- theorem ultrafilter.nonempty_of_mem Modified src/order/liminf_limsup.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/ordered/liminf_limsup.lean Modified src/topology/algebra/uniform_field.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/category/Compactum.lean Modified src/topology/constructions.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean Modified src/topology/extend_from.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/ereal.lean Modified src/topology/instances/real.lean Modified src/topology/list.lean Modified src/topology/local_homeomorph.lean Modified src/topology/maps.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/order.lean Modified src/topology/partition_of_unity.lean Modified src/topology/path_connected.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/basic.lean + theorem mem_map_iff_exists_image' - theorem mem_map_sets_iff' Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_convergence.lean Modified src/topology/uniform_space/uniform_embedding.lean 2021-08-13 20:14:43 fdeb064 feat(topology/*): lemmas about `dense`/`dense_range` and `is_(pre)connected` (#8651) * add `dense_compl_singleton`; * extract new lemma `is_preconnected_range` from the proof of `is_connected_range`; * add `dense_range.preconnected_space` and `dense_inducing.preconnected_space`; * rename `self_sub_closure_image_preimage_of_open` to `self_subset_closure_image_preimage_of_open`. Inspired by #8579 ESTIMATED CHANGES Modified src/topology/basic.lean + theorem dense.open_subset_closure_inter + theorem dense_compl_singleton + theorem dense_range.subset_closure_image_preimage_of_is_open Modified src/topology/connected.lean + theorem dense_range.preconnected_space + theorem is_preconnected_range Modified src/topology/dense_embedding.lean + theorem dense_inducing.closure_image_mem_nhds - theorem dense_inducing.closure_image_nhds_of_nhds + theorem dense_inducing.preconnected_space - theorem dense_inducing.self_sub_closure_image_preimage_of_open 2021-08-13 18:20:13 8b9c4cf fix(tactic/core): fix incorrect uses of with_ident_list (#8653) `with_ident_list` uses `tk "with" >> ident_*`, which is incorrect for some tactics, where `_` doesn't mean anything. (It is good for tactics that name hypotheses like `cases`, but not tactics that use the list to reference hypotheses like `revert_deps`.) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean 2021-08-13 18:20:12 7f5d5b9 feat(ring_theory): ideals in a Dedekind domain have unique factorization (#8530) ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean - theorem fractional_ideal.mul_inv_cancel + theorem ideal.dvd_iff_le + theorem ideal.dvd_not_unit_iff_lt Modified src/ring_theory/ideal/operations.lean + theorem ideal.is_unit_iff + theorem ideal.le_of_dvd 2021-08-13 17:03:29 8eca293 feat(field_theory): more general `algebra _ (algebraic_closure k)` instance (#8658) For example, now we can take a field extension `L / K` and map `x : K` into the algebraic closure of `L`. ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean + theorem algebraic_closure.algebra_map_def 2021-08-13 17:03:28 c711909 feat(linear_algebra/basic, group_theory/quotient_group, algebra/lie/quotient): ext lemmas for morphisms out of quotients (#8641) This allows `ext` to see through quotients by subobjects of a type `A`, and apply ext lemmas specific to `A`. ESTIMATED CHANGES Modified src/algebra/category/Group/colimits.lean Modified src/algebra/lie/basic.lean + theorem lie_module_hom.congr_fun Modified src/algebra/lie/quotient.lean + theorem lie_submodule.quotient.lie_module_hom_ext + def lie_submodule.quotient.mk' Modified src/algebra/ring_quot.lean Modified src/group_theory/quotient_group.lean + theorem quotient_group.monoid_hom_ext + theorem quotient_group.quotient_map_subgroup_of_of_le_coe Modified src/linear_algebra/basic.lean + theorem submodule.linear_map_qext Modified src/ring_theory/ideal/basic.lean + theorem ideal.quotient.ring_hom_ext 2021-08-13 15:23:28 9e83de2 feat(data/list/perm): subperm_ext_iff (#8504) A helper lemma to construct proofs of `l <+~ l'`. On the way to proving `l ~ l' -> l.permutations ~ l'.permutations`. ESTIMATED CHANGES Modified src/data/list/perm.lean + theorem list.subperm.cons_left + theorem list.subperm.cons_right + theorem list.subperm_append_diff_self_of_count_le + theorem list.subperm_ext_iff 2021-08-13 08:01:49 733e6e3 chore(*): update lean to 3.32.1 (#8652) ESTIMATED CHANGES Modified archive/miu_language/decision_suf.lean Modified leanpkg.toml Modified src/analysis/convex/caratheodory.lean Modified src/data/bitvec/core.lean Modified src/data/fin.lean +/- def fin.cast_add Modified src/data/fin2.lean Modified src/data/finset/basic.lean Modified src/data/finset/sort.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/nat_antidiagonal.lean Modified src/data/list/nodup.lean Modified src/data/list/of_fn.lean Modified src/data/list/pairwise.lean Modified src/data/list/perm.lean Modified src/data/list/range.lean Modified src/data/list/zip.lean Modified src/data/matrix/notation.lean Modified src/data/multiset/fold.lean Modified src/data/nat/basic.lean Modified src/data/nat/choose/basic.lean Modified src/data/nat/choose/dvd.lean Modified src/data/nat/dist.lean Modified src/data/nat/factorial.lean Modified src/data/nat/fib.lean Modified src/data/nat/gcd.lean Modified src/data/nat/log.lean Modified src/data/nat/modeq.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/pairing.lean Modified src/data/nat/parity.lean Modified src/data/nat/pow.lean Modified src/data/nat/prime.lean Modified src/data/nat/psub.lean Modified src/data/nat/sqrt.lean Modified src/data/num/bitwise.lean Modified src/data/ordmap/ordset.lean Modified src/data/pfunctor/univariate/M.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/logic/function/iterate.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/dioph.lean Modified src/number_theory/padics/padic_norm.lean Modified src/order/filter/at_top_bot.lean Modified src/ring_theory/multiplicity.lean Modified src/set_theory/lists.lean Modified src/system/random/basic.lean Modified src/tactic/core.lean Modified src/testing/slim_check/gen.lean 2021-08-13 06:38:14 03ddb8d feat(finsupp/basic): restrict a finitely supported function on option A to A (#8342) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.prod_option_index + def finsupp.some + theorem finsupp.some_add + theorem finsupp.some_apply + theorem finsupp.some_single_none + theorem finsupp.some_single_some + theorem finsupp.some_zero + theorem finsupp.sum_option_index_smul 2021-08-13 05:15:52 d0804ba feat(linear_algebra/invariant_basis_number): basic API lemmas (#7882) ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_equiv.coe_symm_mk Modified src/linear_algebra/basic.lean +/- theorem finsupp.linear_equiv_fun_on_fintype_single + theorem finsupp.linear_equiv_fun_on_fintype_symm_coe +/- theorem finsupp.linear_equiv_fun_on_fintype_symm_single Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/invariant_basis_number.lean + theorem card_eq_of_lequiv + theorem card_le_of_injective' + theorem card_le_of_injective + theorem card_le_of_surjective' + theorem card_le_of_surjective 2021-08-13 02:17:49 3b37614 chore(scripts): update nolints.txt (#8654) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-12 19:28:31 4a864ed fix(tactic/core): mk_simp_attribute: remove superfluous disjunct (#8648) `with_ident_list` already returns `[]` if `with` is not present. ESTIMATED CHANGES Modified src/tactic/core.lean 2021-08-12 19:28:30 ce26133 feat(data/nat/(basic, modeq)): simple lemmas (#8647) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.add_sub_sub_cancel Modified src/data/nat/modeq.lean + theorem nat.add_modeq_left + theorem nat.add_modeq_right + theorem nat.modeq_zero_iff 2021-08-12 19:28:29 c2580eb refactor(tactic/*): mark internal attrs as `parser := failed` (#8635) I saw this trick in some of the other user attributes, and it seems like a good idea to apply generally. Any attribute that is "internal use only" should have its `parser` field set to `failed`, so that it is impossible for the user to write the attribute. It is still possible for meta code to set the attributes programmatically, which is generally what's happening anyway. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/tactic/alias.lean Modified src/tactic/doc_commands.lean Modified src/tactic/lift.lean Modified src/tactic/localized.lean Modified src/tactic/simps.lean 2021-08-12 19:28:28 8a2a630 feat(analysis/convex/basic): add lemma add_smul regarding linear combinations of convex sets (#8608) From #2819 ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex.add_smul 2021-08-12 19:28:27 2412b97 feat(algebra/quaternion_basis): add a quaternion version of complex.lift (#8551) This is some prework to show `clifford_algebra (Q c₁ c₂) ≃ₐ[R] ℍ[R,c₁,c₂]` for an appropriate `Q`. For `complex.lift : {I' // I' * I' = -1} ≃ (ℂ →ₐ[ℝ] A)`, we could just use a subtype. For quaternions, we now have two generators and three relations, so a subtype isn't particularly viable any more; so instead this commit creates a new `quaternion_algebra.basis` structure. ESTIMATED CHANGES Modified src/algebra/quaternion.lean + theorem quaternion_algebra.algebra_map_eq + def quaternion_algebra.im_i_lm + def quaternion_algebra.im_j_lm + def quaternion_algebra.im_k_lm + def quaternion_algebra.re_lm Added src/algebra/quaternion_basis.lean + def quaternion_algebra.basis.comp_hom + theorem quaternion_algebra.basis.i_mul_k + theorem quaternion_algebra.basis.j_mul_k + theorem quaternion_algebra.basis.k_mul_i + theorem quaternion_algebra.basis.k_mul_j + theorem quaternion_algebra.basis.k_mul_k + def quaternion_algebra.basis.lift + theorem quaternion_algebra.basis.lift_add + def quaternion_algebra.basis.lift_hom + theorem quaternion_algebra.basis.lift_mul + theorem quaternion_algebra.basis.lift_one + theorem quaternion_algebra.basis.lift_smul + theorem quaternion_algebra.basis.lift_zero + structure quaternion_algebra.basis + def quaternion_algebra.lift 2021-08-12 19:28:26 8914b68 feat(ring_theory/dedekind_domain): ideals in a DD are cancellative (#8513) This PR provides a `comm_cancel_monoid_with_zero` instance on integral ideals in a Dedekind domain. As a bonus, it deletes an out of date TODO comment. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean 2021-08-12 17:46:21 0f59141 docs(data/fintype/sort): add module docstring (#8643) And correct typo in the docstrings ESTIMATED CHANGES Modified src/data/fintype/sort.lean +/- def mono_equiv_of_fin 2021-08-12 17:46:20 3689655 feat(measure_theory/stieltjes_measure): Stieltjes measures associated to monotone functions (#8266) Given a monotone right-continuous real function `f`, there exists a measure giving mass `f b - f a` to the interval `(a, b]`. These measures are called Stieltjes measures, and are especially important in probability theory. The real Lebesgue measure is a particular case of this construction, for `f x = x`. This PR extends the already existing construction of the Lebesgue measure to cover all Stieltjes measures. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/data/set/intervals/basic.lean + theorem set.Ioc_diff_Ioi + theorem set.Ioc_inter_Ioi + theorem set.Ioc_subset_Ioc_iff Modified src/measure_theory/measure/lebesgue.lean - theorem measure_theory.borel_le_lebesgue_measurable - theorem measure_theory.is_lebesgue_measurable_Iio - def measure_theory.lebesgue_length - theorem measure_theory.lebesgue_length_Icc - theorem measure_theory.lebesgue_length_Ico - theorem measure_theory.lebesgue_length_Ioo - theorem measure_theory.lebesgue_length_empty - theorem measure_theory.lebesgue_length_eq_infi_Icc - theorem measure_theory.lebesgue_length_eq_infi_Ioo - theorem measure_theory.lebesgue_length_mono - theorem measure_theory.lebesgue_length_subadditive - def measure_theory.lebesgue_outer - theorem measure_theory.lebesgue_outer_Icc - theorem measure_theory.lebesgue_outer_Ico - theorem measure_theory.lebesgue_outer_Ioc - theorem measure_theory.lebesgue_outer_Ioo - theorem measure_theory.lebesgue_outer_le_length - theorem measure_theory.lebesgue_outer_singleton - theorem measure_theory.lebesgue_outer_trim - theorem measure_theory.lebesgue_to_outer_measure +/- theorem real.volume_Icc +/- theorem real.volume_Ico +/- theorem real.volume_Ioc +/- theorem real.volume_Ioo +/- theorem real.volume_singleton +/- theorem real.volume_val Added src/measure_theory/measure/stieltjes.lean + theorem stieltjes_function.borel_le_measurable + theorem stieltjes_function.id_left_lim + theorem stieltjes_function.le_left_lim + def stieltjes_function.left_lim + theorem stieltjes_function.left_lim_le + theorem stieltjes_function.left_lim_le_left_lim + def stieltjes_function.length + theorem stieltjes_function.length_Ioc + theorem stieltjes_function.length_empty + theorem stieltjes_function.length_mono + theorem stieltjes_function.length_subadditive_Icc_Ioo + theorem stieltjes_function.measurable_set_Ioi + theorem stieltjes_function.measure_Icc + theorem stieltjes_function.measure_Ico + theorem stieltjes_function.measure_Ioc + theorem stieltjes_function.measure_Ioo + theorem stieltjes_function.measure_singleton + theorem stieltjes_function.mono + theorem stieltjes_function.outer_Ioc + theorem stieltjes_function.outer_le_length + theorem stieltjes_function.outer_trim + theorem stieltjes_function.right_continuous + theorem stieltjes_function.tendsto_left_lim + structure stieltjes_function Modified src/topology/algebra/ordered/basic.lean + theorem monotone.tendsto_nhds_within_Iio + theorem monotone.tendsto_nhds_within_Ioi 2021-08-12 16:55:31 7b27f46 feat(measure_theory/vector_measure): a signed measure restricted on a positive set is a unsigned measure (#8597) This PR defines `signed_measure.to_measure` which is the measure corresponding to a signed measure restricted on some positive set. This definition is useful for the Jordan decomposition theorem. ESTIMATED CHANGES Modified src/measure_theory/measure/vector_measure.lean + theorem measure_theory.measure.to_signed_measure_to_measure_of_zero_le + theorem measure_theory.measure.zero_le_to_signed_measure + def measure_theory.signed_measure.to_measure_of_le_zero + theorem measure_theory.signed_measure.to_measure_of_le_zero_apply + theorem measure_theory.signed_measure.to_measure_of_le_zero_to_signed_measure + def measure_theory.signed_measure.to_measure_of_zero_le' + def measure_theory.signed_measure.to_measure_of_zero_le + theorem measure_theory.signed_measure.to_measure_of_zero_le_apply + theorem measure_theory.signed_measure.to_measure_of_zero_le_to_signed_measure + theorem measure_theory.vector_measure.le_restrict_univ_iff_le + theorem measure_theory.vector_measure.neg_le_neg + theorem measure_theory.vector_measure.neg_le_neg_iff Modified src/topology/instances/nnreal.lean + theorem nnreal.coe_tsum_of_nonneg + theorem nnreal.summable_coe_of_nonneg 2021-08-12 15:02:55 ee18995 feat(algebra/group_with_zero): `units.mk0` is a "monoid hom" (#8625) This PR shows that `units.mk0` sends `1` to `1` and `x * y` to `mk0 x * mk0 y`. So it is a monoid hom, if we ignore the proof fields. ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean Modified src/algebra/group_with_zero/basic.lean + theorem units.mk0_mul + theorem units.mk0_one 2021-08-12 15:02:54 e17e9ea feat(measure_theory/lp_space): add mem_Lp and integrable lemmas for is_R_or_C.re/im and inner product with a constant (#8615) ESTIMATED CHANGES Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.norm_im_le_norm + theorem is_R_or_C.norm_re_le_norm Modified src/measure_theory/function/l1_space.lean + theorem measure_theory.integrable.const_inner + theorem measure_theory.integrable.im + theorem measure_theory.integrable.inner_const + theorem measure_theory.integrable.re Modified src/measure_theory/function/lp_space.lean + theorem measure_theory.mem_ℒp.const_inner + theorem measure_theory.mem_ℒp.im + theorem measure_theory.mem_ℒp.inner_const + theorem measure_theory.mem_ℒp.re 2021-08-12 13:21:49 f63c27b feat(linear_algebra): Smith normal form for submodules over a PID (#8588) This PR expands on `submodule.basis_of_pid` by showing that this basis can be chosen in "Smith normal form". That is: if `M` is a free module over a PID `R` and `N ≤ M`, then we can choose a basis `bN` for `N` and `bM` for `M`, such that the inclusion map from `N` to `M` expressed in these bases is a diagonal matrix in Smith normal form. The rather gnarly induction in the original `submodule.basis_of_pid` has been turned into an even gnarlier auxiliary lemma that does the inductive step (with the induction hypothesis broken into pieces so we can apply it part by part), followed by a re-proven `submodule.basis_of_pid` that picks out part of this inductive step. Then we feed the full induction hypothesis, along with `submodule.basis_of_pid` into the same induction again, to get `submodule.exists_smith_normal_form_of_le`, and from that we conclude our new results `submodule.exists_smith_normal_form` and `ideal.exists_smith_normal_form`. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_le_succ Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean + theorem basis.coe_mk_fin_cons + theorem basis.coe_mk_fin_cons_of_le Modified src/linear_algebra/free_module_pid.lean + theorem basis.card_le_card_of_le + theorem basis.card_le_card_of_submodule + structure basis.smith_normal_form + theorem dvd_generator_iff + theorem eq_bot_of_generator_maximal_submodule_image_eq_zero + theorem generator_maximal_submodule_image_dvd + theorem generator_submodule_image_dvd_of_mem + theorem ideal.exists_smith_normal_form + theorem ideal.rank_eq + theorem linear_map.mem_submodule_image + theorem linear_map.mem_submodule_image_of_le + def linear_map.submodule_image + theorem linear_map.submodule_image_apply_of_le + theorem submodule.basis_of_pid_aux + theorem submodule.basis_of_pid_bot + theorem submodule.exists_smith_normal_form_of_le + theorem submodule.nonempty_basis_of_pid Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.eq_of_smul_apply_eq_smul_apply 2021-08-12 09:52:50 e245b24 feat(data/nat/prime, number_theory/padics/padic_norm): list of prime_pow_factors, valuation of prime power (#8473) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.factors_pow Modified src/number_theory/padics/padic_norm.lean + theorem padic_val_nat_prime_pow + theorem padic_val_nat_self 2021-08-12 08:32:26 1b96e97 feat(data/sym2): card of `sym2 α` (#8426) Case `n = 2` of stars and bars ESTIMATED CHANGES Added src/data/sym/card.lean + theorem sym2.card_image_diag + theorem sym2.card_image_off_diag + theorem sym2.card_subtype_diag + theorem sym2.card_subtype_not_diag + theorem sym2.two_mul_card_image_off_diag Modified src/data/sym/sym2.lean + theorem sym2.diag_injective + theorem sym2.filter_image_quotient_mk_is_diag + theorem sym2.filter_image_quotient_mk_not_is_diag 2021-08-12 07:04:01 c550e3a refactor(group_theory/sylow): make new file about actions of p groups and move lemmas there (#8595) ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.mem_fixed_points_iff_card_orbit_eq_one Added src/group_theory/p_group.lean + theorem mul_action.card_modeq_card_fixed_points + theorem mul_action.exists_fixed_point_of_prime_dvd_card_of_fixed_point + theorem mul_action.nonempty_fixed_point_of_prime_not_dvd_card Modified src/group_theory/sylow.lean - theorem mul_action.card_modeq_card_fixed_points - theorem mul_action.exists_fixed_point_of_prime_dvd_card_of_fixed_point - theorem mul_action.mem_fixed_points_iff_card_orbit_eq_one - theorem mul_action.nonempty_fixed_point_of_prime_not_dvd_card 2021-08-12 07:04:00 0cbab37 feat(group_theory/subgroup): there are finitely many subgroups of a finite group (#8593) ESTIMATED CHANGES Renamed src/data/set_like.lean to src/data/set_like/basic.lean Added src/data/set_like/fintype.lean Modified src/group_theory/group_action/sub_mul_action.lean Modified src/group_theory/submonoid/basic.lean Modified src/model_theory/basic.lean Modified src/order/closure.lean 2021-08-12 07:03:59 cd2b549 chore(measure_theory/*): make measurable_space arguments implicit, determined by the measure argument (#8571) In the measure theory library, most of the definitions that depend on a measure have that form: ``` def example_def {α} [measurable_space α] (μ : measure α) : some_type := sorry ``` Suppose now that we have two `measurable_space` structures on `α` : `{m m0 : measurable_space α}` and we have the measures `μ : measure α` (which is a measure on `m0`) and `μm : @measure α m`. This will be common for probability theory applications. See for example the `conditional_expectation` file. Then we can write `example_def μ` but we cannot write `example_def μm` because the `measurable_space` inferred is `m0`, which does not match the measurable space on which `μm` is defined. We have to use `@example_def _ m μm` instead. This PR implements a simple fix: change `[measurable_space α] (μ : measure α)` into `{m : measurable_space α} (μ : measure α)`. Advantage: we can now use `example_def μm` since the `measurable_space` argument is deduced from the `measure` argument. This removes many `@` in all places where `measure.trim` is used. Downsides: - I have to write `(0 : measure α)` instead of `0` in some lemmas. - I had to add two `apply_instance` to find `borel_space` instances. - Whenever a lemma takes an explicit measure argument, we have to write `{m : measurable_space α} (μ : measure α)` instead of simply `(μ : measure α)`. ESTIMATED CHANGES Modified src/measure_theory/function/conditional_expectation.lean +/- def measure_theory.Lp_meas_to_Lp_trim +/- def measure_theory.Lp_trim_to_Lp_meas +/- theorem measure_theory.Lp_trim_to_Lp_meas_ae_eq +/- theorem measure_theory.mem_Lp_meas_to_Lp_of_trim Modified src/measure_theory/function/ess_sup.lean +/- def ess_inf +/- theorem ess_inf_antimono_measure +/- theorem ess_inf_measure_zero +/- def ess_sup +/- theorem ess_sup_measure_zero +/- theorem ess_sup_mono_measure +/- theorem order_iso.ess_inf_apply +/- theorem order_iso.ess_sup_apply Modified src/measure_theory/function/l1_space.lean +/- theorem integrable_zero_measure +/- def measure_theory.has_finite_integral +/- theorem measure_theory.has_finite_integral_zero_measure +/- theorem measure_theory.integrable.trim +/- def measure_theory.integrable +/- theorem measure_theory.integrable_of_forall_fin_meas_le' +/- theorem measure_theory.integrable_of_integrable_trim Modified src/measure_theory/function/lp_space.lean +/- theorem measure_theory.Lp.mem_Lp_const +/- def measure_theory.Lp +/- theorem measure_theory.coe_nnnorm_ae_le_snorm_ess_sup +/- theorem measure_theory.ess_sup_trim +/- theorem measure_theory.limsup_trim +/- theorem measure_theory.mem_ℒp.ae_measurable +/- theorem measure_theory.mem_ℒp.mono_measure +/- theorem measure_theory.mem_ℒp.to_Lp_zero +/- def measure_theory.mem_ℒp +/- theorem measure_theory.mem_ℒp_of_mem_ℒp_trim +/- def measure_theory.snorm' +/- theorem measure_theory.snorm'_le_snorm'_of_exponent_le +/- theorem measure_theory.snorm'_measure_zero_of_exponent_zero +/- theorem measure_theory.snorm'_measure_zero_of_neg +/- theorem measure_theory.snorm'_measure_zero_of_pos +/- theorem measure_theory.snorm'_mono_measure +/- theorem measure_theory.snorm'_trim +/- def measure_theory.snorm +/- def measure_theory.snorm_ess_sup +/- theorem measure_theory.snorm_ess_sup_measure_zero +/- theorem measure_theory.snorm_ess_sup_mono_measure +/- theorem measure_theory.snorm_ess_sup_trim +/- theorem measure_theory.snorm_measure_zero +/- theorem measure_theory.snorm_mono_measure +/- theorem measure_theory.snorm_trim +/- theorem measure_theory.snorm_trim_ae Modified src/measure_theory/integral/bochner.lean +/- def measure_theory.integral +/- theorem measure_theory.integral_dirac' +/- theorem measure_theory.integral_dirac +/- theorem measure_theory.integral_trim_ae +/- theorem measure_theory.integral_zero_measure +/- def measure_theory.simple_func.integral +/- theorem measure_theory.simple_func.integral_eq_sum_filter +/- theorem measure_theory.simple_func.integral_eq_sum_of_subset Modified src/measure_theory/integral/lebesgue.lean +/- def measure_theory.lintegral +/- theorem measure_theory.lintegral_add_measure +/- theorem measure_theory.lintegral_eq_nnreal +/- theorem measure_theory.lintegral_mono' +/- theorem measure_theory.lintegral_mono_set' +/- theorem measure_theory.lintegral_mono_set +/- theorem measure_theory.lintegral_sum_measure +/- theorem measure_theory.lintegral_zero_measure +/- def measure_theory.measure.with_density +/- theorem measure_theory.monotone_lintegral +/- theorem measure_theory.simple_func.fin_meas_supp.map_iff +/- theorem measure_theory.simple_func.fin_meas_supp.meas_preimage_singleton_ne_zero +/- theorem measure_theory.simple_func.fin_meas_supp.of_map +/- theorem measure_theory.simple_func.fin_meas_supp_iff +/- theorem measure_theory.simple_func.fin_meas_supp_iff_support +/- def measure_theory.simple_func.lintegral +/- theorem measure_theory.simple_func.lintegral_eq_lintegral +/- theorem measure_theory.simple_func.lintegral_map_equiv +/- theorem measure_theory.simple_func.lintegral_mono +/- theorem measure_theory.simple_func.lintegral_restrict +/- theorem measure_theory.simple_func.lintegral_sum +/- theorem measure_theory.simple_func.lintegral_zero +/- def measure_theory.simple_func.lintegralₗ +/- theorem measure_theory.simple_func.support_eq Modified src/measure_theory/integral/set_integral.lean Modified src/measure_theory/measure/measure_space.lean +/- theorem ae_measurable_zero_measure +/- theorem measure_theory.ae_map_mem_range +/- theorem measure_theory.ae_mono +/- theorem measure_theory.ae_zero +/- theorem measure_theory.exists_nonempty_inter_of_measure_univ_lt_sum_measure +/- theorem measure_theory.exists_nonempty_inter_of_measure_univ_lt_tsum_measure +/- theorem measure_theory.ext_of_generate_finite +/- def measure_theory.measure.absolutely_continuous +/- theorem measure_theory.measure.add_apply +/- theorem measure_theory.measure.add_to_outer_measure +/- theorem measure_theory.measure.coe_add +/- theorem measure_theory.measure.coe_nnreal_smul +/- theorem measure_theory.measure.coe_smul +/- theorem measure_theory.measure.coe_zero +/- def measure_theory.measure.cofinite +/- def measure_theory.measure.comap +/- theorem measure_theory.measure.comap_apply +/- theorem measure_theory.measure.eq_zero_of_not_nonempty +/- theorem measure_theory.measure.finite_at_bot +/- theorem measure_theory.measure.finite_at_filter.exists_mem_basis +/- def measure_theory.measure.finite_at_filter +/- theorem measure_theory.measure.finite_at_filter_of_finite +/- theorem measure_theory.measure.finite_at_nhds_within +/- structure measure_theory.measure.finite_spanning_sets_in +/- theorem measure_theory.measure.le_of_add_le_add_left +/- theorem measure_theory.measure.le_sum_apply +/- def measure_theory.measure.lift_linear +/- def measure_theory.measure.map +/- theorem measure_theory.measure.map_comap_subtype_coe +/- def measure_theory.measure.mutually_singular +/- structure measure_theory.measure.quasi_measure_preserving +/- def measure_theory.measure.restrict +/- theorem measure_theory.measure.restrict_Inf_eq_Inf_restrict +/- theorem measure_theory.measure.restrict_add +/- theorem measure_theory.measure.restrict_apply_self +/- theorem measure_theory.measure.restrict_mono' +/- theorem measure_theory.measure.restrict_mono +/- theorem measure_theory.measure.restrict_smul +/- theorem measure_theory.measure.restrict_zero +/- def measure_theory.measure.restrictₗ +/- theorem measure_theory.measure.restrictₗ_apply +/- theorem measure_theory.measure.sigma_finite_of_not_nonempty +/- theorem measure_theory.measure.smul_apply +/- theorem measure_theory.measure.smul_finite +/- theorem measure_theory.measure.smul_to_outer_measure +/- theorem measure_theory.measure.sum_cond +/- theorem measure_theory.measure.zero_to_outer_measure +/- theorem measure_theory.measure_if +/- theorem measure_theory.sigma_finite.out +/- theorem measure_theory.sigma_finite_iff Modified src/measure_theory/measure/measure_space_def.lean +/- def ae_measurable +/- def measure_theory.measure.ae 2021-08-12 05:23:15 9ab4d28 doc(tactic/cache): fix haveI docs (#8637) Applies [Bhavik's suggestion](https://github.com/leanprover-community/mathlib/pull/8631#discussion_r687260852) which missed the train for #8631. ESTIMATED CHANGES Modified src/tactic/cache.lean 2021-08-12 03:29:23 036c96b fix(tactic/lint): _ is not a linter (#8634) The `#lint` parser accepts `ident_`, but as far as I can tell, `_` doesn't mean anything in particular, it just tries and fails to resolve the `linter._` linter. This simplifies the parser to only accept `ident`. ESTIMATED CHANGES Modified src/tactic/lint/frontend.lean 2021-08-12 02:18:22 8968739 chore(scripts): update nolints.txt (#8638) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-11 23:46:50 f0ae67d feat(analysis/normed_space/finite_dimension): asymptotic equivalence preserves summability (#8596) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean +/- theorem summable_of_is_O +/- theorem summable_of_is_O_nat Modified src/analysis/normed_space/finite_dimension.lean + theorem is_equivalent.summable_iff + theorem is_equivalent.summable_iff_nat + theorem summable_of_is_O' + theorem summable_of_is_O_nat' + theorem summable_of_is_equivalent + theorem summable_of_is_equivalent_nat Modified src/analysis/specific_limits.lean Modified src/topology/algebra/infinite_sum.lean + theorem summable.trans_sub + theorem summable_iff_of_summable_sub 2021-08-11 21:52:56 ea7e3ff feat(tactic/cache): allow optional := in haveI (#8631) This syntactic restriction was originally added because it was not possible to reset the instance cache only for a given goal. This limitation has since been lifted (a while ago, I think), and so the syntax can be made more like `have` now. ESTIMATED CHANGES Modified archive/examples/prop_encodable.lean Modified src/algebra/char_p/exp_char.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/limits/cofinal.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/data/set/countable.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/normal.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/measure_theory/constructions/borel_space.lean Modified src/measure_theory/function/ess_sup.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/tactic/cache.lean Modified src/topology/uniform_space/compact_separated.lean 2021-08-11 19:55:20 565fef6 refactor(tactic/tidy): use @[user_attribute] (#8630) This is just a minor change to use the `@[user_attribute]` attribute like all other user attrs instead of calling `attribute.register`. (This came up during the census of mathlib user attrs.) ESTIMATED CHANGES Modified src/tactic/tidy.lean 2021-08-11 15:48:56 7b5c60d feat(data/equiv/basic): add a small lemma for simplifying map between equivalent quotient spaces induced by equivalent relations (#8617) Just adding a small lemma that allows us to compute the composition of the map given by `quot.congr` with `quot.mk` ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem quot.congr_mk + theorem quotient.congr_mk 2021-08-11 15:48:55 3ebf9f0 chore(group_theory/group_action/defs): add a missing is_scalar_tower instance (#8604) ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean 2021-08-11 15:48:53 2489931 feat(group_theory/perm/cycle_type): purge trunc references (#8176) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.map_eq_singleton Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.cycle_type_def + theorem equiv.perm.cycle_type_eq' + theorem equiv.perm.cycle_type_le_of_mem_cycle_factors_finset + theorem equiv.perm.cycle_type_mul_mem_cycle_factors_finset_eq_sub + theorem equiv.perm.order_of_cycle_of_dvd_order_of 2021-08-11 14:09:54 2db8c79 chore(group_theory/submonoid/membership): missing rfl lemmas (#8619) ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean + theorem add_submonoid.mem_multiples_iff + theorem submonoid.mem_powers_iff 2021-08-11 11:38:30 8d0ed03 feat(data/rat/basic): Add nat num and denom inv lemmas (#8581) Add `inv_coe_nat_num` and `inv_coe_nat_denom` lemmas. These lemmas show that the denominator and numerator of `1/ n` given `0 < n`, are equal to `n` and `1` respectively. ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.inv_coe_int_denom + theorem rat.inv_coe_int_num + theorem rat.inv_coe_nat_denom + theorem rat.inv_coe_nat_num 2021-08-11 07:34:47 1d4400c feat(analysis/normed_space): controlled surjectivity (#8498) From LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean + theorem controlled_closure_of_complete + theorem controlled_closure_range_of_complete + theorem normed_group_hom.op_norm_eq_of_bounds + theorem normed_group_hom.surjective_on_with.surj_on + def normed_group_hom.surjective_on_with 2021-08-11 06:39:10 9c8602b refactor(measure_theory): add subfolder (#8594) * This PR adds the subfolders `constructions` `function` `group` `integral` and `measure` to `measure_theory` * File renamings: ``` group -> group.basic prod_group -> group.prod bochner_integration -> integral.bochner integration -> integral.lebesgue haar_measure -> measure.haar lebesgue_measure -> measure.lebesgue hausdorff_measure -> measure.hausdorff ``` ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified counterexamples/phillips.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/convex/integral.lean Modified src/analysis/fourier.lean Modified src/analysis/special_functions/integrals.lean Modified src/dynamics/ergodic/measure_preserving.lean Modified src/measure_theory/category/Meas.lean Renamed src/measure_theory/borel_space.lean to src/measure_theory/constructions/borel_space.lean Renamed src/measure_theory/pi.lean to src/measure_theory/constructions/pi.lean Renamed src/measure_theory/prod.lean to src/measure_theory/constructions/prod.lean Modified src/measure_theory/decomposition/signed_hahn.lean Modified src/measure_theory/decomposition/unsigned_hahn.lean Renamed src/measure_theory/ae_eq_fun.lean to src/measure_theory/function/ae_eq_fun.lean Renamed src/measure_theory/ae_measurable_sequence.lean to src/measure_theory/function/ae_measurable_sequence.lean Renamed src/measure_theory/conditional_expectation.lean to src/measure_theory/function/conditional_expectation.lean Renamed src/measure_theory/continuous_map_dense.lean to src/measure_theory/function/continuous_map_dense.lean Renamed src/measure_theory/ess_sup.lean to src/measure_theory/function/ess_sup.lean Renamed src/measure_theory/l1_space.lean to src/measure_theory/function/l1_space.lean Renamed src/measure_theory/l2_space.lean to src/measure_theory/function/l2_space.lean Renamed src/measure_theory/lp_space.lean to src/measure_theory/function/lp_space.lean Renamed src/measure_theory/simple_func_dense.lean to src/measure_theory/function/simple_func_dense.lean Renamed src/measure_theory/special_functions.lean to src/measure_theory/function/special_functions.lean Renamed src/measure_theory/arithmetic.lean to src/measure_theory/group/arithmetic.lean Renamed src/measure_theory/group.lean to src/measure_theory/group/basic.lean Renamed src/measure_theory/prod_group.lean to src/measure_theory/group/prod.lean Renamed src/measure_theory/bochner_integration.lean to src/measure_theory/integral/bochner.lean Renamed src/measure_theory/integrable_on.lean to src/measure_theory/integral/integrable_on.lean Renamed src/measure_theory/integral_eq_improper.lean to src/measure_theory/integral/integral_eq_improper.lean Renamed src/measure_theory/interval_integral.lean to src/measure_theory/integral/interval_integral.lean Renamed src/measure_theory/integration.lean to src/measure_theory/integral/lebesgue.lean Renamed src/measure_theory/mean_inequalities.lean to src/measure_theory/integral/mean_inequalities.lean Renamed src/measure_theory/set_integral.lean to src/measure_theory/integral/set_integral.lean Renamed src/measure_theory/vitali_caratheodory.lean to src/measure_theory/integral/vitali_caratheodory.lean Renamed src/measure_theory/content.lean to src/measure_theory/measure/content.lean Renamed src/measure_theory/giry_monad.lean to src/measure_theory/measure/giry_monad.lean Renamed src/measure_theory/haar_measure.lean to src/measure_theory/measure/haar.lean Renamed src/measure_theory/hausdorff_measure.lean to src/measure_theory/measure/hausdorff.lean Renamed src/measure_theory/lebesgue_measure.lean to src/measure_theory/measure/lebesgue.lean Renamed src/measure_theory/measure_space.lean to src/measure_theory/measure/measure_space.lean Renamed src/measure_theory/measure_space_def.lean to src/measure_theory/measure/measure_space_def.lean Renamed src/measure_theory/outer_measure.lean to src/measure_theory/measure/outer_measure.lean Renamed src/measure_theory/regular.lean to src/measure_theory/measure/regular.lean Renamed src/measure_theory/vector_measure.lean to src/measure_theory/measure/vector_measure.lean Modified src/measure_theory/tactic.lean Modified src/probability_theory/independence.lean Modified src/probability_theory/integration.lean Modified test/measurability.lean Modified test/monotonicity.lean 2021-08-11 02:38:04 6305769 chore(scripts): update nolints.txt (#8614) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-08-11 02:38:03 3c09987 docs(data/set/lattice): add module docstring (#8250) This also cleans up some whitespace and replaces some `assume`s with `λ`s ESTIMATED CHANGES Modified src/data/qpf/multivariate/basic.lean Modified src/data/set/lattice.lean +/- theorem set.Inter_const +/- theorem set.Inter_set_of +/- theorem set.Inter_univ +/- theorem set.Union_const +/- theorem set.Union_empty +/- theorem set.Union_of_singleton +/- theorem set.Union_prop_neg +/- theorem set.Union_prop_pos +/- theorem set.Union_subset_Union2 +/- theorem set.Union_subset_Union +/- theorem set.Union_subset_Union_const +/- theorem set.bInter_image +/- theorem set.bInter_range +/- theorem set.bUnion_range +/- theorem set.bind_def +/- theorem set.image_Union +/- theorem set.image_eq_Union +/- theorem set.mem_sUnion +/- theorem set.monotone_preimage +/- theorem set.not_disjoint_iff +/- theorem set.pairwise_disjoint.range +/- theorem set.pi_def +/- theorem set.pi_diff_pi_subset +/- theorem set.range_eq_Union +/- theorem set.sInter_bUnion +/- theorem set.sUnion_bUnion +/- theorem set.sUnion_subset +/- theorem set.sUnion_subset_iff +/- def set.seq +/- theorem set.seq_def +/- theorem set.seq_singleton +/- def set.sigma_to_Union +/- theorem set.sigma_to_Union_bijective +/- theorem set.sigma_to_Union_injective +/- theorem set.subset_sInter +/- theorem set.univ_disjoint +/- theorem set.univ_subtype 2021-08-11 00:53:34 694dd11 feat(archive/imo): IMO 2001 Q6 (#8327) Formalization of the problem Q6 of 2001. ESTIMATED CHANGES Added archive/imo/imo2001_q6.lean + theorem imo2001_q6 2021-08-10 18:08:28 32735ca feat(measure_theory/measure_space): add mutually singular measures (#8605) This PR defines `mutually_singular` for measures. This is useful for Jordan and Lebesgue decomposition. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.mutually_singular.add + theorem measure_theory.measure.mutually_singular.smul + theorem measure_theory.measure.mutually_singular.symm + theorem measure_theory.measure.mutually_singular.zero + def measure_theory.measure.mutually_singular 2021-08-10 18:08:27 3b279c1 feat(measure_theory/l2_space): generalize inner_indicator_const_Lp_one from R to is_R_or_C (#8602) ESTIMATED CHANGES Modified src/measure_theory/l2_space.lean +/- theorem measure_theory.L2.inner_indicator_const_Lp_one 2021-08-10 18:08:26 d1b2a54 feat(analysis/normed_space/inner_product): add norm_inner_le_norm (#8601) add this: ``` lemma norm_inner_le_norm (x y : E) : ∥⟪x, y⟫∥ ≤ ∥x∥ * ∥y∥ := (is_R_or_C.norm_eq_abs _).le.trans (abs_inner_le_norm x y) ``` ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem norm_inner_le_norm 2021-08-10 18:08:24 acab4f9 feat(algebra/pointwise): add preimage_smul and generalize a couple of assumptions (#8600) Some lemmas about smul spun off from #2819 ESTIMATED CHANGES Modified src/algebra/pointwise.lean +/- theorem mem_inv_smul_set_iff +/- theorem mem_smul_set_iff_inv_smul_mem + theorem preimage_smul' + theorem preimage_smul 2021-08-10 17:22:47 9fb53f9 chore(analysis/calculus/fderiv_symmetric): Squeeze some simps in a very slow proof (#8609) This doesn't seem to help much, but is low-hanging speedup fruit that the next person stuck on a timeout here will inevitably want solved first. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_symmetric.lean 2021-08-10 17:22:46 ebe0176 feat(measure_theory/special_functions): add measurability of is_R_or_C.re and is_R_or_C.im (#8603) ESTIMATED CHANGES Modified src/measure_theory/special_functions.lean + theorem ae_measurable.im + theorem ae_measurable.re + theorem is_R_or_C.measurable_im + theorem is_R_or_C.measurable_re + theorem measurable.im + theorem measurable.re 2021-08-10 16:39:18 5739199 chore(linear_algebra/quadratic_form): make Sylvester's law of inertia bold in the doc string (#8610) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean 2021-08-10 14:03:54 e2b7f70 fix(docs/references.bib): add missing comma (#8585) * Adds a missing comma to docs/references.bib. Without this the file cannot be parsed by bibtool. * Normalises docs/references.bib as described in [Citing other works](https://leanprover-community.github.io/contribute/doc.html#citing-other-works). ESTIMATED CHANGES Modified docs/references.bib 2021-08-10 13:22:22 81a47a7 docs(topology/category/Profinite/as_limit): fix typo (#8606) ESTIMATED CHANGES Modified src/topology/category/Profinite/as_limit.lean 2021-08-10 10:54:11 5890afb feat(data/list/perm): perm.permutations (#8587) This proves the theorem from [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/perm.20of.20permutations): ```lean theorem perm.permutations {s t : list α} (h : s ~ t) : permutations s ~ permutations t := ... ``` It also introduces a `permutations'` function which has simpler equations (and indeed, this function is used to prove the theorem, because it is relatively easier to prove `perm.permutations'` first). ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.bind_assoc + theorem list.bind_singleton' + theorem list.map_eq_bind + theorem list.map_map_permutations'_aux + theorem list.map_permutations' + theorem list.permutations'_aux_eq_permutations_aux2 + theorem list.permutations_append + theorem list.permutations_aux_append + theorem list.permutations_nil Modified src/data/list/defs.lean + def list.permutations' + def list.permutations'_aux Modified src/data/list/perm.lean + theorem list.bind_append_perm + theorem list.mem_permutations' +/- theorem list.mem_permutations + theorem list.perm.permutations' + theorem list.perm.permutations + theorem list.perm_permutations'_aux_comm + theorem list.perm_permutations'_iff + theorem list.perm_permutations_iff + theorem list.permutations_perm_permutations' 2021-08-10 10:54:10 f967cd0 refactor(group_theory/sylow): extract a lemma from Sylow proof (#8459) ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem sylow.card_normalizer_modeq_card + theorem sylow.card_quotient_normalizer_modeq_card_quotient + theorem sylow.prime_dvd_card_quotient_normalizer + theorem sylow.prime_pow_dvd_card_normalizer 2021-08-10 09:12:41 e8fc466 feat(algebra/group/pi): Add `pi.const_(monoid|add_monoid|ring|alg)_hom` (#8518) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def pi.const_alg_hom + theorem pi.const_alg_hom_eq_algebra_of_id + theorem pi.const_ring_hom_eq_algebra_map Modified src/algebra/group/pi.lean + def pi.const_monoid_hom Modified src/algebra/ring/pi.lean + def pi.const_ring_hom - theorem pi.ring_hom_apply + theorem pi.ring_hom_injective 2021-08-10 07:07:58 e729ab4 feat(analysis/specific_limits): limit of nat_floor (a * x) / x (#8549) ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem floor_lt_ceil_of_lt + theorem nat_floor_lt_nat_ceil_of_lt_of_pos Modified src/analysis/specific_limits.lean + theorem tendsto_nat_ceil_mul_div_at_top + theorem tendsto_nat_floor_mul_div_at_top 2021-08-10 02:16:24 e4cdecd chore(scripts): update nolints.txt (#8599) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-08-09 21:34:22 2ab63a0 feat(topology/algebra/infinite_sum, analysis/normed_space/basic): product of two tsums, cauchy product (#8445) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem summable.mul_norm + theorem summable.mul_of_nonneg + theorem summable_mul_of_summable_norm + theorem summable_norm_sum_mul_antidiagonal_of_summable_norm + theorem summable_norm_sum_mul_range_of_summable_norm + theorem tsum_mul_tsum_eq_tsum_sum_antidiagonal_of_summable_norm + theorem tsum_mul_tsum_eq_tsum_sum_range_of_summable_norm + theorem tsum_mul_tsum_of_summable_norm Modified src/data/finset/nat_antidiagonal.lean + def finset.nat.sigma_antidiagonal_equiv_prod Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.mul + theorem has_sum.mul_eq + theorem summable_mul_prod_iff_summable_mul_sigma_antidiagonal + theorem summable_sum_mul_antidiagonal_of_summable_mul + theorem summable_sum_mul_range_of_summable_mul + theorem tsum_mul_tsum + theorem tsum_mul_tsum_eq_tsum_sum_antidiagonal + theorem tsum_mul_tsum_eq_tsum_sum_range Modified src/topology/instances/ennreal.lean + theorem summable_of_sum_le 2021-08-09 15:47:29 5e59fb4 feat(algebra/ordered_pointwise): lemmas on smul of intervals (#8591) Some lemmas about smul on different types of intervals, spun off from #2819 ESTIMATED CHANGES Added src/algebra/ordered_pointwise.lean + theorem linear_ordered_field.smul_Icc + theorem linear_ordered_field.smul_Ici + theorem linear_ordered_field.smul_Ico + theorem linear_ordered_field.smul_Iic + theorem linear_ordered_field.smul_Iio + theorem linear_ordered_field.smul_Ioc + theorem linear_ordered_field.smul_Ioi + theorem linear_ordered_field.smul_Ioo 2021-08-09 15:47:27 847fc12 feat(algebra): `submodule.restrict_scalars p R` is `S`-isomorphic to `p` (#8567) To be more precise, turning `p : submodule S M` into an `R`-submodule gives the same module structure as turning it into a type and adding a module structure. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def submodule.restrict_scalars_equiv Modified src/ring_theory/noetherian.lean 2021-08-09 15:47:26 3ec899a chore(topology/algebra): bundled homs in group and ring completion (#8497) Also take the opportunity to remove is_Z_bilin (who was scheduled for removal from the beginning). ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean + def add_monoid_hom.completion + theorem add_monoid_hom.completion_add + theorem add_monoid_hom.completion_coe + theorem add_monoid_hom.completion_zero + theorem add_monoid_hom.continuous_completion + theorem add_monoid_hom.continuous_extension + def add_monoid_hom.extension + theorem add_monoid_hom.extension_coe + theorem uniform_space.completion.continuous_to_compl - theorem uniform_space.completion.is_add_group_hom_coe - theorem uniform_space.completion.is_add_group_hom_extension - theorem uniform_space.completion.is_add_group_hom_map + def uniform_space.completion.to_compl Modified src/topology/algebra/uniform_group.lean - theorem add_comm_group.is_Z_bilin.comp_hom - theorem add_comm_group.is_Z_bilin.neg_left - theorem add_comm_group.is_Z_bilin.neg_right - theorem add_comm_group.is_Z_bilin.sub_left - theorem add_comm_group.is_Z_bilin.sub_right - theorem add_comm_group.is_Z_bilin.zero - theorem add_comm_group.is_Z_bilin.zero_left - theorem add_comm_group.is_Z_bilin.zero_right +/- theorem dense_inducing.extend_Z_bilin - theorem is_Z_bilin.tendsto_zero_left - theorem is_Z_bilin.tendsto_zero_right Modified src/topology/algebra/uniform_ring.lean + theorem uniform_space.completion.continuous_coe_ring_hom +/- def uniform_space.completion.map_ring_hom 2021-08-09 15:47:25 189e90e feat(group_theory/subgroup): lemmas relating normalizer and map and comap (#8458) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.comap_normalizer_eq_of_surjective + theorem subgroup.le_normalizer_comap + theorem subgroup.le_normalizer_map + theorem subgroup.map_equiv_normalizer_eq + theorem subgroup.map_normalizer_eq_of_bijective 2021-08-09 15:47:24 3dd8316 feat(algebra/ring/basic): mul_{left,right}_cancel_of_non_zero_divisor (#8425) We also golf the proof that a domain is a cancel_monoid_with_zero. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem is_left_regular_of_non_zero_divisor + theorem is_regular_of_ne_zero' + theorem is_right_regular_of_non_zero_divisor Modified src/group_theory/group_action/basic.lean + theorem smul_cancel_of_non_zero_divisor 2021-08-09 15:47:22 4a15edd feat(data/polynomial/monic): monic.not_zero_divisor_iff (#8417) We prove that a monic polynomial is not a zero divisor. A helper lemma is proven that the product of a monic polynomial is of lesser degree iff it is nontrivial and the multiplicand is zero. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.degree_mul_X - theorem polynomial.degree_mul_monic + theorem polynomial.monic.degree_mul Modified src/data/polynomial/div.lean Modified src/data/polynomial/monic.lean + theorem polynomial.degree_smul_of_non_zero_divisor + theorem polynomial.is_unit_leading_coeff_mul_left_eq_zero_iff + theorem polynomial.is_unit_leading_coeff_mul_right_eq_zero_iff + theorem polynomial.leading_coeff_smul_of_non_zero_divisor - theorem polynomial.monic.degree_eq_zero_iff_eq_one + theorem polynomial.monic.degree_le_zero_iff_eq_one + theorem polynomial.monic.degree_mul_comm + theorem polynomial.monic.mul_left_eq_zero_iff + theorem polynomial.monic.mul_left_ne_zero + theorem polynomial.monic.mul_nat_degree_lt_iff + theorem polynomial.monic.mul_right_eq_zero_iff + theorem polynomial.monic.mul_right_ne_zero + theorem polynomial.monic.nat_degree_eq_zero_iff_eq_one + theorem polynomial.monic.nat_degree_mul' + theorem polynomial.monic.nat_degree_mul_comm + theorem polynomial.monic_C_mul_of_mul_leading_coeff_eq_one + theorem polynomial.monic_of_is_unit_leading_coeff_inv_smul + theorem polynomial.nat_degree_smul_of_non_zero_divisor 2021-08-09 15:47:21 5e36848 feat(measure_theory/decomposition/signed_hahn): signed version of the Hahn decomposition theorem (#8388) This PR defined positive and negative sets with respect to a vector measure and prove the signed version of the Hahn decomposition theorem. ESTIMATED CHANGES Added src/measure_theory/decomposition/signed_hahn.lean + theorem measure_theory.signed_measure.bdd_below_measure_of_negatives + theorem measure_theory.signed_measure.exists_compl_positive_negative + theorem measure_theory.signed_measure.exists_is_compl_positive_negative + theorem measure_theory.signed_measure.exists_subset_restrict_nonpos + def measure_theory.signed_measure.measure_of_negatives + theorem measure_theory.signed_measure.of_symm_diff_compl_positive_negative + theorem measure_theory.signed_measure.zero_mem_measure_of_negatives Modified src/measure_theory/vector_measure.lean + theorem measure_theory.vector_measure.exists_pos_measure_of_not_restrict_le_zero + theorem measure_theory.vector_measure.le_restrict_empty + theorem measure_theory.vector_measure.measurable_of_not_restrict_le_zero + theorem measure_theory.vector_measure.measurable_of_not_zero_le_restrict + theorem measure_theory.vector_measure.nonneg_of_zero_le_restrict + theorem measure_theory.vector_measure.nonpos_of_restrict_le_zero + theorem measure_theory.vector_measure.restrict_le_restrict_Union + theorem measure_theory.vector_measure.restrict_le_restrict_encodable_Union + theorem measure_theory.vector_measure.restrict_le_restrict_iff + theorem measure_theory.vector_measure.restrict_le_restrict_of_subset_le + theorem measure_theory.vector_measure.restrict_le_restrict_subset + theorem measure_theory.vector_measure.restrict_le_restrict_union + theorem measure_theory.vector_measure.restrict_le_zero_of_not_measurable + theorem measure_theory.vector_measure.restrict_le_zero_subset + theorem measure_theory.vector_measure.restrict_not_measurable + theorem measure_theory.vector_measure.subset_le_of_restrict_le_restrict + theorem measure_theory.vector_measure.zero_le_restrict_not_measurable + theorem measure_theory.vector_measure.zero_le_restrict_subset Modified src/topology/algebra/infinite_sum.lean + theorem summable.tendsto_top_of_pos 2021-08-09 15:47:20 f3b70e4 feat(group_theory/subgroup): saturated subgroups (#8137) From LTE ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem add_subgroup.ker_saturated + def subgroup.saturated + theorem subgroup.saturated_iff_gpow + theorem subgroup.saturated_iff_npow 2021-08-09 13:47:38 77033a0 chore(algebra/associated): rename div_or_div to dvd_or_dvd (#8589) ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem prime.div_or_div + theorem prime.dvd_or_dvd Modified src/ring_theory/prime.lean 2021-08-09 13:47:37 65e2411 feat(order/bounds): `is_lub`/`is_glb` in Pi types and product types (#8583) * Add `monotone_fst` and `monotone_snd`. * Add some trivial lemmas about `upper_bounds` and `lower_bounds`. * Turn `is_lub_pi` and `is_glb_pi` into `iff` lemmas. * Add `is_lub_prod` and `is_glb_prod`. * Fix some header levels in module docs of `order/bounds`. ESTIMATED CHANGES Modified src/order/basic.lean + theorem monotone_fst + theorem monotone_snd Modified src/order/bounds.lean + theorem is_glb_iff_le_iff +/- theorem is_glb_pi + theorem is_glb_prod + theorem is_glb_upper_bounds + theorem is_lub_iff_le_iff + theorem is_lub_lower_bounds +/- theorem is_lub_pi + theorem is_lub_prod + theorem set.nonempty.bdd_above_lower_bounds + theorem set.nonempty.bdd_below_upper_bounds + theorem subset_lower_bounds_upper_bounds + theorem subset_upper_bounds_lower_bounds 2021-08-09 13:47:36 9ce6b9a feat(order/complete_lattice): add `sup_eq_supr` and `inf_eq_infi` (#8573) * add `bool.injective_iff`, `bool.univ_eq`, and `bool.range_eq`; * add `sup_eq_supr` and `inf_eq_infi`; * golf `filter.comap_sup`. ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.injective_iff Added src/data/set/bool.lean + theorem bool.range_eq + theorem bool.univ_eq Modified src/data/set/lattice.lean Modified src/order/complete_lattice.lean + theorem inf_eq_infi + theorem sup_eq_supr Modified src/order/filter/basic.lean 2021-08-09 13:47:35 45aed67 chore(order/filter/basic): add `filter.sup_prod` and `filter.prod_sup` (#8572) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.prod_sup + theorem filter.sup_prod 2021-08-09 13:47:34 fc694c5 chore(linear_algebra/special_linear_group): Cleanup and golf (#8569) This cleans up a number things in this file: * Many lemmas were duplicated between `↑A` and `⇑A`. This eliminates the latter spelling from all lemmas, and makes it simplify to the former. Unfortunately the elaborator fights us at every step of the way with `↑A`, so we introduce local notation to take the pain away. * Some lemma names did not match the convention established elsewhere * Some definitions can be bundled more heavily than they currently are. In particular, this merges together `to_lin'` and `to_linear_equiv`, as well as `to_GL` and `embedding_GL`. ESTIMATED CHANGES Modified src/linear_algebra/special_linear_group.lean + theorem matrix.special_linear_group.coe_fn_eq_coe + theorem matrix.special_linear_group.coe_inv + theorem matrix.special_linear_group.coe_mul + theorem matrix.special_linear_group.coe_one +/- theorem matrix.special_linear_group.coe_to_GL + theorem matrix.special_linear_group.det_coe - theorem matrix.special_linear_group.det_coe_fun - theorem matrix.special_linear_group.det_coe_matrix - def matrix.special_linear_group.embedding_GL +/- theorem matrix.special_linear_group.ext +/- theorem matrix.special_linear_group.ext_iff - theorem matrix.special_linear_group.inv_apply - theorem matrix.special_linear_group.inv_val - theorem matrix.special_linear_group.mul_apply - theorem matrix.special_linear_group.mul_val - theorem matrix.special_linear_group.one_apply - theorem matrix.special_linear_group.one_val +/- def matrix.special_linear_group.to_GL - theorem matrix.special_linear_group.to_GL_mul - theorem matrix.special_linear_group.to_GL_one +/- def matrix.special_linear_group.to_lin' + theorem matrix.special_linear_group.to_lin'_apply + theorem matrix.special_linear_group.to_lin'_injective - theorem matrix.special_linear_group.to_lin'_mul - theorem matrix.special_linear_group.to_lin'_one + theorem matrix.special_linear_group.to_lin'_symm_apply + theorem matrix.special_linear_group.to_lin'_symm_to_linear_map + theorem matrix.special_linear_group.to_lin'_to_linear_map - def matrix.special_linear_group.to_linear_equiv 2021-08-09 13:47:33 8196d4a chore(algebra/group/units): Make coercion the simp-normal form of units (#8568) It's already used as the output for `@[simps]`; this makes `↑u` the simp-normal form of `u.val` and `↑(u⁻¹)` the simp-normal form of `u.inv`. ESTIMATED CHANGES Modified src/algebra/group/units.lean - theorem units.coe_inv'' + theorem units.inv_eq_coe_inv - theorem units.val_coe + theorem units.val_eq_coe 2021-08-09 13:47:32 8edcf90 feat(ring_theory/noetherian): add noeth ring lemma (#8566) I couldn't find this explicit statement in the library -- I feel like it's the way a mathematician would define a Noetherian ring though. ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean + theorem is_noetherian_def + theorem is_noetherian_ring_iff_ideal_fg 2021-08-09 13:47:31 5f2d954 feat(algebra/ordered_field): add `inv_le_of_inv_le` and `inv_lt_of_inv_lt` (#8565) These lemmas need positivity of only one of two variables. Mathlib already had lemmas about ordered multiplicative groups with these names, I appended prime to their names. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem inv_le_of_inv_le + theorem inv_lt_of_inv_lt Modified src/algebra/ordered_group.lean 2021-08-09 13:47:29 f29cc59 feat(matrix/kronecker): Add the Kronecker product (#8560) Largely derived from #8152, avoiding the complexity of introducing `algebra_map`s. This introduces an abstraction `kronecker_map`, which is used to support both `mul` and `tmul` without having to redo any proofs. ESTIMATED CHANGES Added src/data/matrix/kronecker.lean + theorem matrix.add_kronecker + theorem matrix.add_kronecker_tmul + theorem matrix.diagonal_kronecker_diagonal + theorem matrix.diagonal_kronecker_tmul_diagonal + def matrix.kronecker + theorem matrix.kronecker_add + theorem matrix.kronecker_apply + def matrix.kronecker_bilinear + def matrix.kronecker_map + theorem matrix.kronecker_map_add_left + theorem matrix.kronecker_map_add_right + theorem matrix.kronecker_map_diagonal_diagonal + def matrix.kronecker_map_linear + theorem matrix.kronecker_map_linear_mul_mul + theorem matrix.kronecker_map_map + theorem matrix.kronecker_map_map_left + theorem matrix.kronecker_map_map_right + theorem matrix.kronecker_map_one_one + theorem matrix.kronecker_map_smul_left + theorem matrix.kronecker_map_smul_right + theorem matrix.kronecker_map_transpose + theorem matrix.kronecker_map_zero_left + theorem matrix.kronecker_map_zero_right + theorem matrix.kronecker_smul + def matrix.kronecker_tmul + theorem matrix.kronecker_tmul_add + theorem matrix.kronecker_tmul_apply + def matrix.kronecker_tmul_bilinear + theorem matrix.kronecker_tmul_smul + theorem matrix.kronecker_tmul_zero + theorem matrix.kronecker_zero + theorem matrix.mul_kronecker_mul + theorem matrix.mul_kronecker_tmul_mul + theorem matrix.one_kronecker_one + theorem matrix.one_kronecker_tmul_one + theorem matrix.smul_kronecker + theorem matrix.smul_kronecker_tmul + theorem matrix.zero_kronecker + theorem matrix.zero_kronecker_tmul 2021-08-09 13:47:28 7b1ce10 fix(analysis/normed_space/basic): add an alias instance to fix an inference issue (#8547) This adds an instance from [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Typeclass.20resolution.20under.20binders/near/245176934). ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/multilinear.lean 2021-08-09 11:59:28 fb63cf3 chore(data/pfun): rename `roption` to `part`, split `data.part` off `data.pfun` (#8544) ESTIMATED CHANGES Modified src/computability/halting.lean Modified src/computability/partrec.lean +/- theorem computable.of_option - theorem computable.part - theorem computable₂.part +/- theorem decidable.partrec.const' +/- def nat.rfind +/- def nat.rfind_opt +/- theorem partrec.const' +/- theorem partrec.none + theorem vector.m_of_fn_part_some - theorem vector.m_of_fn_roption_some Modified src/computability/partrec_code.lean +/- theorem nat.partrec.code.eval_const +/- theorem nat.partrec.code.eval_id Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean +/- def turing.TM0.eval +/- def turing.TM1.eval +/- def turing.TM2.eval +/- def turing.eval Modified src/control/fix.lean + def part.fix.approx + def part.fix_aux + theorem part.fix_def' - def roption.fix.approx - def roption.fix_aux - theorem roption.fix_def' Modified src/control/lawful_fix.lean + def part.fix.approx_chain + theorem part.fix.approx_le_fix + theorem part.fix.approx_mem_approx_chain + theorem part.fix.approx_mono' + theorem part.fix.approx_mono + theorem part.fix.exists_fix_le_approx + theorem part.fix.le_f_of_mem_approx + theorem part.fix.mem_iff + theorem part.fix_eq + theorem part.fix_eq_ωSup + theorem part.fix_le + theorem part.to_unit_cont + def part.to_unit_mono - def roption.fix.approx_chain - theorem roption.fix.approx_le_fix - theorem roption.fix.approx_mem_approx_chain - theorem roption.fix.approx_mono' - theorem roption.fix.approx_mono - theorem roption.fix.exists_fix_le_approx - theorem roption.fix.le_f_of_mem_approx - theorem roption.fix.mem_iff - theorem roption.fix_eq - theorem roption.fix_eq_ωSup - theorem roption.fix_le - theorem roption.to_unit_cont - def roption.to_unit_mono Modified src/data/finmap.lean Modified src/data/nat/enat.lean +/- theorem enat.coe_inj +/- theorem enat.ne_top_iff +/- def enat Modified src/data/option/basic.lean Added src/data/part.lean + def part.assert + theorem part.assert_defined + theorem part.assert_neg + theorem part.assert_pos + theorem part.bind_assoc + theorem part.bind_defined + theorem part.bind_dom + theorem part.bind_eq_bind + theorem part.bind_le + theorem part.bind_map + theorem part.bind_none + theorem part.bind_some + theorem part.bind_some_eq_map + theorem part.bind_some_right + theorem part.coe_none + theorem part.coe_some + theorem part.dom_iff_mem + theorem part.eq_none_iff' + theorem part.eq_none_iff + theorem part.eq_none_or_eq_some + theorem part.eq_some_iff + theorem part.eta + theorem part.ext' + theorem part.ext + theorem part.get_eq_get_of_eq + theorem part.get_eq_iff_eq_some + theorem part.get_eq_of_mem + theorem part.get_mem + def part.get_or_else + theorem part.get_or_else_none + theorem part.get_or_else_some + theorem part.get_some + theorem part.le_total_of_le_of_le + def part.map + theorem part.map_bind + theorem part.map_eq_map + theorem part.map_id' + theorem part.map_map + theorem part.map_none + theorem part.map_some + theorem part.mem.left_unique + theorem part.mem_assert + theorem part.mem_assert_iff + theorem part.mem_bind + theorem part.mem_bind_iff + theorem part.mem_coe + theorem part.mem_eq + theorem part.mem_map + theorem part.mem_map_iff + theorem part.mem_of_option + theorem part.mem_restrict + theorem part.mem_some + theorem part.mem_some_iff + theorem part.mem_to_option + theorem part.mem_unique + theorem part.ne_none_iff + def part.none + theorem part.not_mem_none + def part.of_option + theorem part.of_option_dom + theorem part.of_option_eq_get + theorem part.of_to_option + theorem part.pure_eq_some + def part.restrict + theorem part.ret_eq_some + def part.some + theorem part.some_get + theorem part.some_inj + theorem part.some_ne_none + theorem part.to_of_option + def part.to_option + structure {u} Modified src/data/pfun.lean +/- def pfun - def roption.assert - theorem roption.assert_defined - theorem roption.assert_neg - theorem roption.assert_pos - theorem roption.bind_assoc - theorem roption.bind_defined - theorem roption.bind_dom - theorem roption.bind_eq_bind - theorem roption.bind_le - theorem roption.bind_map - theorem roption.bind_none - theorem roption.bind_some - theorem roption.bind_some_eq_map - theorem roption.bind_some_right - theorem roption.coe_none - theorem roption.coe_some - theorem roption.dom_iff_mem - theorem roption.eq_none_iff' - theorem roption.eq_none_iff - theorem roption.eq_none_or_eq_some - theorem roption.eq_some_iff - theorem roption.eta - theorem roption.ext' - theorem roption.ext - theorem roption.get_eq_get_of_eq - theorem roption.get_eq_iff_eq_some - theorem roption.get_eq_of_mem - theorem roption.get_mem - def roption.get_or_else - theorem roption.get_or_else_none - theorem roption.get_or_else_some - theorem roption.get_some - theorem roption.le_total_of_le_of_le - def roption.map - theorem roption.map_bind - theorem roption.map_eq_map - theorem roption.map_id' - theorem roption.map_map - theorem roption.map_none - theorem roption.map_some - theorem roption.mem.left_unique - theorem roption.mem_assert - theorem roption.mem_assert_iff - theorem roption.mem_bind - theorem roption.mem_bind_iff - theorem roption.mem_coe - theorem roption.mem_eq - theorem roption.mem_map - theorem roption.mem_map_iff - theorem roption.mem_of_option - theorem roption.mem_restrict - theorem roption.mem_some - theorem roption.mem_some_iff - theorem roption.mem_to_option - theorem roption.mem_unique - theorem roption.ne_none_iff - def roption.none - theorem roption.not_mem_none - def roption.of_option - theorem roption.of_option_dom - theorem roption.of_option_eq_get - theorem roption.of_to_option - theorem roption.pure_eq_some - def roption.restrict - theorem roption.ret_eq_some - def roption.some - theorem roption.some_get - theorem roption.some_inj - theorem roption.some_ne_none - theorem roption.to_of_option - def roption.to_option - structure {u} Modified src/data/polynomial/div.lean Modified src/data/rel.lean Modified src/order/omega_complete_partial_order.lean +/- theorem omega_complete_partial_order.continuous_hom.bind_continuous' +/- theorem omega_complete_partial_order.continuous_hom.map_continuous' +/- theorem omega_complete_partial_order.continuous_hom.seq_continuous' +/- theorem omega_complete_partial_order.continuous_hom.ωSup_bind + theorem part.eq_of_chain + theorem part.mem_chain_of_mem_ωSup + theorem part.mem_ωSup + theorem part.ωSup_eq_none + theorem part.ωSup_eq_some +/- def preorder_hom.bind - theorem roption.eq_of_chain - theorem roption.mem_chain_of_mem_ωSup - theorem roption.mem_ωSup - theorem roption.ωSup_eq_none - theorem roption.ωSup_eq_some Modified src/ring_theory/multiplicity.lean Modified test/general_recursion.lean + theorem part.examples.div.cont + theorem part.examples.div.equations.eqn_1 + def part.examples.div.intl + def part.examples.div + theorem part.examples.easy.cont + theorem part.examples.easy.equations.eqn_1 + def part.examples.easy.intl + def part.examples.easy + def part.examples.f91' + theorem part.examples.f91.cont + theorem part.examples.f91.equations.eqn_1 + def part.examples.f91.intl + def part.examples.f91 + theorem part.examples.f91_dom + theorem part.examples.f91_spec' + theorem part.examples.f91_spec + inductive part.examples.tree + theorem part.examples.tree_map'.cont + theorem part.examples.tree_map'.equations.eqn_1 + theorem part.examples.tree_map'.equations.eqn_2 + def part.examples.tree_map'.intl + def part.examples.tree_map' + theorem part.examples.tree_map.cont + theorem part.examples.tree_map.equations.eqn_1 + theorem part.examples.tree_map.equations.eqn_2 + def part.examples.tree_map.intl + def part.examples.tree_map - theorem roption.examples.div.cont - theorem roption.examples.div.equations.eqn_1 - def roption.examples.div.intl - def roption.examples.div - theorem roption.examples.easy.cont - theorem roption.examples.easy.equations.eqn_1 - def roption.examples.easy.intl - def roption.examples.easy - def roption.examples.f91' - theorem roption.examples.f91.cont - theorem roption.examples.f91.equations.eqn_1 - def roption.examples.f91.intl - def roption.examples.f91 - theorem roption.examples.f91_dom - theorem roption.examples.f91_spec' - theorem roption.examples.f91_spec - inductive roption.examples.tree - theorem roption.examples.tree_map'.cont - theorem roption.examples.tree_map'.equations.eqn_1 - theorem roption.examples.tree_map'.equations.eqn_2 - def roption.examples.tree_map'.intl - def roption.examples.tree_map' - theorem roption.examples.tree_map.cont - theorem roption.examples.tree_map.equations.eqn_1 - theorem roption.examples.tree_map.equations.eqn_2 - def roption.examples.tree_map.intl - def roption.examples.tree_map 2021-08-09 10:27:32 6728201 chore(data/finsupp): add missing lemmas (#8553) These lemmas are needed by `[simps {simp_rhs := tt}]` when composing equivs, otherwise simp doesn't make progress on `(map_range.add_equiv f).to_equiv.symm x` which should simplify to `map_range f.to_equiv.symm x`. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.map_range.add_equiv_to_add_monoid_hom + theorem finsupp.map_range.add_equiv_to_equiv + theorem finsupp.map_range.add_monoid_hom_to_zero_hom + def finsupp.map_range.equiv + theorem finsupp.map_range.equiv_refl + theorem finsupp.map_range.equiv_symm + theorem finsupp.map_range.equiv_trans Modified src/linear_algebra/finsupp.lean + theorem finsupp.map_range.linear_equiv_to_add_equiv + theorem finsupp.map_range.linear_equiv_to_linear_map + theorem finsupp.map_range.linear_map_to_add_monoid_hom 2021-08-09 08:17:21 3f5a348 chore(galois_connection): golf some proofs (#8582) * golf some proofs * add `galois_insertion.left_inverse_l_u` and `galois_coinsertion.left_inverse_u_l`; * drop `galois_insertion.l_supr_of_ul_eq_self` and `galois_coinsertion.u_infi_of_lu_eq_self`: these lemmas are less general than `galois_connection.l_supr` and `galois_connection.u_infi`. ESTIMATED CHANGES Modified src/order/galois_connection.lean - theorem galois_coinsertion.u_infi_of_lu_eq_self + theorem galois_coinsertion.u_l_left_inverse +/- theorem galois_connection.l_bot +/- theorem galois_connection.u_Inf +/- theorem galois_connection.u_inf +/- theorem galois_connection.u_infi +/- theorem galois_connection.u_top - theorem galois_insertion.l_supr_of_ul_eq_self + theorem galois_insertion.left_inverse_l_u 2021-08-09 08:17:20 24bbbdc feat(group_theory/sylow): Generalize proof of first Sylow theorem (#8383) Generalize the first proof. There is now a proof that every p-subgroup is contained in a Sylow subgroup. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean - theorem add_subgroup.card_bot +/- theorem subgroup.card_bot + theorem subgroup.card_le_one_iff_eq_bot Modified src/group_theory/sylow.lean +/- theorem sylow.exists_subgroup_card_pow_prime + theorem sylow.exists_subgroup_card_pow_prime_le + theorem sylow.exists_subgroup_card_pow_succ 2021-08-09 08:17:19 4813b73 feat(category_theory/adjunction): general adjoint functor theorem (#4885) A proof of the general adjoint functor theorem. This PR also adds an API for wide equalizers (essentially copied from the equalizer API), as well as results relating adjunctions to (co)structured arrow categories and weakly initial objects. I can split this into smaller PRs if necessary? ESTIMATED CHANGES Added src/category_theory/adjunction/adjoint_functor_theorems.lean + def category_theory.solution_set_condition + theorem category_theory.solution_set_condition_of_is_right_adjoint Added src/category_theory/adjunction/comma.lean + def category_theory.adjunction_of_costructured_arrow_terminals + def category_theory.adjunction_of_structured_arrow_initials + def category_theory.is_right_adjoint_of_costructured_arrow_terminals + def category_theory.is_right_adjoint_of_structured_arrow_initials + def category_theory.left_adjoint_of_structured_arrow_initials + def category_theory.left_adjoint_of_structured_arrow_initials_aux + def category_theory.mk_initial_of_left_adjoint + def category_theory.mk_terminal_of_right_adjoint + def category_theory.right_adjoint_of_costructured_arrow_terminals + def category_theory.right_adjoint_of_costructured_arrow_terminals_aux Added src/category_theory/limits/constructions/weakly_initial.lean + theorem category_theory.has_initial_of_weakly_initial_and_has_wide_equalizers + theorem category_theory.has_weakly_initial_of_weakly_initial_set_and_has_products Added src/category_theory/limits/shapes/wide_equalizers.lean + def category_theory.limits.cocone.of_cotrident + theorem category_theory.limits.cocone.of_cotrident_ι + def category_theory.limits.cone.of_trident + theorem category_theory.limits.cone.of_trident_π + theorem category_theory.limits.cotrident.app_one + theorem category_theory.limits.cotrident.coequalizer_ext + theorem category_theory.limits.cotrident.condition + def category_theory.limits.cotrident.ext + def category_theory.limits.cotrident.is_colimit.desc' + theorem category_theory.limits.cotrident.is_colimit.hom_ext + def category_theory.limits.cotrident.is_colimit.hom_iso + theorem category_theory.limits.cotrident.is_colimit.hom_iso_natural + def category_theory.limits.cotrident.is_colimit.mk' + def category_theory.limits.cotrident.is_colimit.mk + def category_theory.limits.cotrident.mk_hom + def category_theory.limits.cotrident.of_cocone + theorem category_theory.limits.cotrident.of_cocone_ι + def category_theory.limits.cotrident.of_π + def category_theory.limits.cotrident.π + theorem category_theory.limits.cotrident.π_eq_app_one + theorem category_theory.limits.cotrident.π_of_π + def category_theory.limits.cotrident + def category_theory.limits.diagram_iso_parallel_family + theorem category_theory.limits.epi_of_is_colimit_parallel_family + def category_theory.limits.has_wide_coequalizer + def category_theory.limits.has_wide_coequalizers + theorem category_theory.limits.has_wide_coequalizers_of_has_colimit_parallel_family + def category_theory.limits.has_wide_equalizer + def category_theory.limits.has_wide_equalizers + theorem category_theory.limits.has_wide_equalizers_of_has_limit_parallel_family + theorem category_theory.limits.mono_of_is_limit_parallel_family + def category_theory.limits.parallel_family + theorem category_theory.limits.parallel_family_map_left + theorem category_theory.limits.parallel_family_obj_one + theorem category_theory.limits.parallel_family_obj_zero + theorem category_theory.limits.trident.app_zero + theorem category_theory.limits.trident.condition + theorem category_theory.limits.trident.equalizer_ext + def category_theory.limits.trident.ext + theorem category_theory.limits.trident.is_limit.hom_ext + def category_theory.limits.trident.is_limit.hom_iso + theorem category_theory.limits.trident.is_limit.hom_iso_natural + def category_theory.limits.trident.is_limit.lift' + def category_theory.limits.trident.is_limit.mk' + def category_theory.limits.trident.is_limit.mk + def category_theory.limits.trident.mk_hom + def category_theory.limits.trident.of_cone + theorem category_theory.limits.trident.of_cone_π + def category_theory.limits.trident.of_ι + def category_theory.limits.trident.ι + theorem category_theory.limits.trident.ι_eq_app_zero + theorem category_theory.limits.trident.ι_of_ι + def category_theory.limits.trident + def category_theory.limits.walking_parallel_family.hom.comp + inductive category_theory.limits.walking_parallel_family.hom + theorem category_theory.limits.walking_parallel_family.hom_id + inductive category_theory.limits.walking_parallel_family + def category_theory.limits.walking_parallel_family_equiv_walking_parallel_pair + theorem category_theory.limits.wide_coequalizer.condition + def category_theory.limits.wide_coequalizer.cotrident + theorem category_theory.limits.wide_coequalizer.cotrident_ι_app_one + theorem category_theory.limits.wide_coequalizer.cotrident_π + def category_theory.limits.wide_coequalizer.desc' + def category_theory.limits.wide_coequalizer.desc + theorem category_theory.limits.wide_coequalizer.hom_ext + def category_theory.limits.wide_coequalizer.π + theorem category_theory.limits.wide_coequalizer.π_desc + def category_theory.limits.wide_coequalizer + def category_theory.limits.wide_coequalizer_is_wide_coequalizer + theorem category_theory.limits.wide_equalizer.condition + theorem category_theory.limits.wide_equalizer.hom_ext + def category_theory.limits.wide_equalizer.lift' + def category_theory.limits.wide_equalizer.lift + theorem category_theory.limits.wide_equalizer.lift_ι + def category_theory.limits.wide_equalizer.trident + theorem category_theory.limits.wide_equalizer.trident_ι + theorem category_theory.limits.wide_equalizer.trident_π_app_zero + def category_theory.limits.wide_equalizer.ι + def category_theory.limits.wide_equalizer + def category_theory.limits.wide_equalizer_is_wide_equalizer 2021-08-09 06:49:46 7bb4b27 feat(group_theory/group_action): Cayley's theorem (#8552) ESTIMATED CHANGES Modified src/group_theory/group_action/group.lean +/- def mul_action.to_perm + theorem mul_action.to_perm_injective Modified src/group_theory/perm/subgroup.lean 2021-08-09 01:12:40 9e320a2 chore(measure_theory/special_functions): add measurability attributes (#8570) That attribute makes the `measurability` tactic aware of those lemmas. ESTIMATED CHANGES Modified src/measure_theory/special_functions.lean +/- theorem complex.measurable_arg +/- theorem complex.measurable_cos +/- theorem complex.measurable_cosh +/- theorem complex.measurable_exp +/- theorem complex.measurable_im +/- theorem complex.measurable_log +/- theorem complex.measurable_of_real +/- theorem complex.measurable_re +/- theorem complex.measurable_sin +/- theorem complex.measurable_sinh +/- theorem measurable.arctan +/- theorem measurable.carg +/- theorem measurable.ccos +/- theorem measurable.ccosh +/- theorem measurable.cexp +/- theorem measurable.clog +/- theorem measurable.cos +/- theorem measurable.cosh +/- theorem measurable.csin +/- theorem measurable.csinh +/- theorem measurable.exp +/- theorem measurable.log +/- theorem measurable.sin +/- theorem measurable.sinh +/- theorem measurable.sqrt +/- theorem real.measurable_arccos +/- theorem real.measurable_arcsin +/- theorem real.measurable_arctan +/- theorem real.measurable_cos +/- theorem real.measurable_cosh +/- theorem real.measurable_exp +/- theorem real.measurable_log +/- theorem real.measurable_sin +/- theorem real.measurable_sinh 2021-08-08 19:18:31 ea77271 chore(analysis/calculus/{f,}deriv): fix, add missing lemmas (#8574) * use `prod.fst` and `prod.snd` in lemmas like `has_fderiv_at_fst`; * add `has_strict_deriv_at.prod`, `has_strict_fderiv_at.comp_has_strict_deriv_at`; * use `set.maps_to` in some lemmas; * golf some proofs. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem has_fderiv_at.comp_has_deriv_at + theorem has_strict_deriv_at.prod + theorem has_strict_fderiv_at.comp_has_strict_deriv_at Modified src/analysis/calculus/fderiv.lean +/- theorem has_fderiv_at_fst +/- theorem has_fderiv_at_snd +/- theorem has_strict_fderiv_at_fst +/- theorem has_strict_fderiv_at_snd 2021-08-08 17:26:57 3788cbf chore(algebra/*, data/polynomial/*): remove unnecessary imports (#8578) I cleaned up all of `data.polynomial`, and the files in `algebra` it imports. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/big_operators/pi.lean Modified src/algebra/group/prod.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/prod.lean Modified src/algebra/module/submodule_lattice.lean Modified src/algebra/monoid_algebra.lean Modified src/algebra/smul_with_zero.lean Modified src/data/equiv/mul_add.lean Modified src/data/equiv/mul_add_aut.lean Modified src/data/equiv/ring_aut.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/identities.lean Modified src/data/polynomial/inductions.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/data/polynomial/lifts.lean Modified src/data/polynomial/mirror.lean Modified src/data/polynomial/reverse.lean Modified src/data/polynomial/ring_division.lean Modified src/group_theory/group_action/group.lean Modified src/group_theory/group_action/prod.lean Modified src/linear_algebra/basic.lean Modified src/order/compactly_generated.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/principal_ideal_domain.lean 2021-08-08 11:51:48 87e9bec chore(linear_algebra/matrix/trace): relax `comm_ring` to `comm_semiring` in `matrix.trace_mul_comm` (#8577) ESTIMATED CHANGES Modified src/linear_algebra/matrix/trace.lean +/- theorem matrix.trace_mul_comm 2021-08-07 22:04:03 0a79eec fix(order/bounds): remove double space (#8575) ESTIMATED CHANGES Modified src/order/bounds.lean +/- def upper_bounds 2021-08-07 20:32:48 575fcc6 refactor(data/nat/choose): reduce assumptions on lemmas (#8508) - rename `nat.choose_eq_factorial_div_factorial'` to `nat.cast_choose` - change the cast from `ℚ` to any `char_zero` field - get rid of the cast in `nat.choose_mul`. Generalization ensues. ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean + theorem nat.choose_mul Modified src/data/nat/choose/dvd.lean + theorem nat.cast_choose - theorem nat.choose_eq_factorial_div_factorial' - theorem nat.choose_mul Modified src/number_theory/bernoulli_polynomials.lean 2021-08-07 19:53:42 d757996 feat(analysis/complex): prove that complex functions are conformal if and only if the functions are holomorphic/antiholomorphic with nonvanishing differential (#8424) Complex functions are conformal if and only if the functions are holomorphic/antiholomorphic with nonvanishing differential. ESTIMATED CHANGES Modified src/analysis/calculus/conformal.lean - theorem conformal_at.preserves_angle Added src/analysis/complex/conformal.lean + theorem is_conformal_map.is_complex_or_conj_linear + theorem is_conformal_map_complex_linear + theorem is_conformal_map_complex_linear_conj + theorem is_conformal_map_conj + theorem is_conformal_map_iff_is_complex_or_conj_linear: Modified src/analysis/complex/real_deriv.lean + theorem conformal_at_iff_differentiable_at_or_differentiable_at_comp_conj + theorem differentiable_at.conformal_at Modified src/analysis/normed_space/conformal_linear_map.lean + theorem is_conformal_map.ne_zero - theorem is_conformal_map.preserves_angle + theorem linear_isometry.is_conformal_map Modified src/geometry/euclidean/basic.lean + theorem inner_product_geometry.conformal_at.preserves_angle + theorem inner_product_geometry.is_conformal_map.preserves_angle 2021-08-07 00:16:50 b3c1de6 feat(analysis/complex/basic): add several trivial lemmas for differentiable functions. (#8418) This file relates the differentiability of a function to the linearity of its `fderiv`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem differentiable_at.fderiv_restrict_scalars + theorem differentiable_at_iff_restrict_scalars + theorem differentiable_within_at_iff_restrict_scalars + theorem has_fderiv_at_of_restrict_scalars + theorem has_fderiv_within_at_of_restrict_scalars 2021-08-06 21:15:20 2f29e09 feat(group_action/defs): generalize faithful actions (#8555) This generalizes the `faithful_mul_semiring_action` typeclass to a mixin typeclass `has_faithful_scalar`, and provides instances for some simple actions: * `has_faithful_scalar α α` (on cancellative monoids and monoids with zero) * `has_faithful_scalar (opposite α) α` * `has_faithful_scalar α (Π i, f i)` * `has_faithful_scalar (units A) B` * `has_faithful_scalar (equiv.perm α) α` * `has_faithful_scalar M (α × β)` * `has_faithful_scalar R (α →₀ M)` * `has_faithful_scalar S (polynomial R)` (generalized from an existing instance) * `has_faithful_scalar R (mv_polynomial σ S₁)` * `has_faithful_scalar R (monoid_algebra k G)` * `has_faithful_scalar R (add_monoid_algebra k G)` As well as retaining the one other existing instance * `faithful_mul_semiring_action ↥H E` where `H : subgroup (E ≃ₐ[F] E)` The lemmas taking `faithful_mul_semiring_action` as a typeclass argument have been converted to use the new typeclass, but no attempt has been made to weaken their other hypotheses. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean - theorem eq_of_smul_eq_smul +/- theorem to_ring_hom_injective Modified src/algebra/module/pi.lean + theorem pi.has_faithful_scalar_at Modified src/algebra/monoid_algebra.lean Modified src/algebra/opposites.lean Modified src/algebra/polynomial/group_ring_action.lean Modified src/data/finsupp/basic.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/polynomial/basic.lean Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean Modified src/group_theory/group_action/defs.lean + theorem smul_left_injective' Modified src/group_theory/group_action/group.lean Modified src/group_theory/group_action/prod.lean Modified src/group_theory/group_action/units.lean 2021-08-06 17:42:38 1b876c7 chore(algebra/ordered_group): fix/add `order_dual` instances, add lemmas (#8564) * add `order_dual.has_inv`, `order_dual.group`, `order_dual.comm_group`; * use new instances in `order_dual.ordered_comm_group` and `order_dual.linear_ordered_comm_group` (earlier we had only additive versions); * add `le_of_forall_neg_add_le`, `le_of_forall_pos_sub_le`, `le_iff_forall_neg_add_le` and their multiplicative versions. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem le_iff_forall_lt_one_mul_le + theorem le_of_forall_lt_one_mul_le + theorem le_of_forall_one_lt_div_le Modified src/algebra/ordered_monoid.lean 2021-08-06 15:53:55 88f9480 feat(logic/embedding): subtype_or_{embedding,equiv} (#8489) Provide explicit embedding from a subtype of a disjuction into a sum type. If the disjunction is disjoint, upgrade to an equiv. Additionally, provide `subtype.imp_embedding`, lowering a subtype along an implication. ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/logic/embedding.lean + def subtype.imp_embedding + def subtype_or_equiv + theorem subtype_or_equiv_symm_inl + theorem subtype_or_equiv_symm_inr + def subtype_or_left_embedding + theorem subtype_or_left_embedding_apply_left + theorem subtype_or_left_embedding_apply_right 2021-08-06 10:42:04 a23c47c feat(topology/instances/ennreal): ediam of intervals (#8546) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.zero_eq_of_real Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_finset_prod_of_ne_top +/- theorem real.diam_eq + theorem real.ediam_Icc + theorem real.ediam_Ico + theorem real.ediam_Ioc + theorem real.ediam_Ioo +/- theorem real.ediam_eq Modified src/topology/metric_space/emetric_space.lean + theorem edist_pi_le_iff + theorem emetric.diam_pi_le_of_le Modified src/topology/metric_space/holder.lean 2021-08-06 09:28:32 da32780 chore(data/polynomial/*): create file `data/polynomial/inductions` and move around lemmas (#8563) This PR is a precursor to #8463: it performs the move, without introducing lemmas and squeezes some `simp`s to make some proofs faster. I added add a doc-string to `lemma degree_pos_induction_on` with a reference to a lemma that will appear in #8463. The main reason why there are more added lines than removed ones is that the creation of a new file has a copyright statement, a module documentation and a few variable declarations. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.C_mul_X_pow_eq_self + theorem polynomial.monomial_nat_degree_leading_coeff_eq_self Modified src/data/polynomial/degree/lemmas.lean - theorem polynomial.C_mul_X_pow_eq_self - theorem polynomial.degree_map' - theorem polynomial.degree_map_eq_of_injective - theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero - theorem polynomial.leading_coeff_map' - theorem polynomial.leading_coeff_map_of_leading_coeff_ne_zero - theorem polynomial.monomial_nat_degree_leading_coeff_eq_self - theorem polynomial.nat_degree_map' - theorem polynomial.nat_degree_map_of_leading_coeff_ne_zero - theorem polynomial.next_coeff_map Modified src/data/polynomial/denoms_clearable.lean Modified src/data/polynomial/div.lean - theorem polynomial.coeff_div_X - theorem polynomial.degree_div_X_lt - theorem polynomial.degree_pos_induction_on - def polynomial.div_X - theorem polynomial.div_X_C - theorem polynomial.div_X_add - theorem polynomial.div_X_eq_zero_iff - theorem polynomial.div_X_mul_X_add Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/eval.lean + theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero + theorem polynomial.leading_coeff_map_of_leading_coeff_ne_zero + theorem polynomial.nat_degree_map_of_leading_coeff_ne_zero Added src/data/polynomial/inductions.lean + theorem polynomial.coeff_div_X + theorem polynomial.degree_div_X_lt + theorem polynomial.degree_pos_induction_on + def polynomial.div_X + theorem polynomial.div_X_C + theorem polynomial.div_X_add + theorem polynomial.div_X_eq_zero_iff + theorem polynomial.div_X_mul_X_add Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/monic.lean + theorem polynomial.degree_map' + theorem polynomial.degree_map_eq_of_injective + theorem polynomial.leading_coeff_map' + theorem polynomial.nat_degree_map' + theorem polynomial.next_coeff_map Modified src/data/polynomial/reverse.lean Modified src/data/polynomial/ring_division.lean Modified src/ring_theory/roots_of_unity.lean 2021-08-06 09:28:31 b9e4c08 refactor(algebra/regular): split out `is_regular` (#8561) One would like to import `is_regular` for rings. However, group powers are too late in the algebra hierarchy, so the proofs of powers of regular elements are factored out to a separate file. ESTIMATED CHANGES Renamed src/algebra/regular.lean to src/algebra/regular/basic.lean - theorem is_left_regular.pow - theorem is_left_regular.pow_iff - theorem is_regular.pow - theorem is_regular.pow_iff - theorem is_right_regular.pow - theorem is_right_regular.pow_iff Added src/algebra/regular/pow.lean + theorem is_left_regular.pow + theorem is_left_regular.pow_iff + theorem is_regular.pow + theorem is_regular.pow_iff + theorem is_right_regular.pow + theorem is_right_regular.pow_iff Renamed src/algebra/smul_regular.lean to src/algebra/regular/smul.lean Modified src/representation_theory/maschke.lean 2021-08-06 09:28:30 59c8bef feat (order/liminf_limsup): frequently_lt_of_lt_limsup (#8548) ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.frequently_lt_of_liminf_lt + theorem filter.frequently_lt_of_lt_limsup 2021-08-06 09:28:29 f471b89 feat(topology,geometry/manifold): continuous and smooth partition of unity (#8281) Fixes #6392 ESTIMATED CHANGES Modified src/geometry/manifold/bump_function.lean Modified src/geometry/manifold/partition_of_unity.lean + theorem bump_covering.coe_to_smooth_partition_of_unity + theorem bump_covering.is_subordinate.to_smooth_partition_of_unity + theorem bump_covering.smooth_to_partition_of_unity + def bump_covering.to_smooth_partition_of_unity + theorem bump_covering.to_smooth_partition_of_unity_to_partition_of_unity + theorem exists_smooth_zero_one_of_closed - def smooth_bump_covering.choice - def smooth_bump_covering.choice_set +/- theorem smooth_bump_covering.coe_mk + theorem smooth_bump_covering.exists_finset_to_smooth_partition_of_unity_eventually_eq +/- def smooth_bump_covering.ind + theorem smooth_bump_covering.is_subordinate.support_subset + theorem smooth_bump_covering.is_subordinate.to_smooth_partition_of_unity +/- def smooth_bump_covering.is_subordinate + theorem smooth_bump_covering.is_subordinate_to_bump_covering +/- theorem smooth_bump_covering.mem_chart_at_source_of_eq_one +/- theorem smooth_bump_covering.mem_ext_chart_at_source_of_eq_one + theorem smooth_bump_covering.sum_to_smooth_partition_of_unity_eq + theorem smooth_bump_covering.support_to_smooth_partition_of_unity_subset + def smooth_bump_covering.to_bump_covering + def smooth_bump_covering.to_smooth_partition_of_unity + theorem smooth_bump_covering.to_smooth_partition_of_unity_apply + theorem smooth_bump_covering.to_smooth_partition_of_unity_eq_mul_prod + theorem smooth_bump_covering.to_smooth_partition_of_unity_zero_of_zero +/- structure smooth_bump_covering + theorem smooth_partition_of_unity.exists_is_subordinate + def smooth_partition_of_unity.is_subordinate + theorem smooth_partition_of_unity.is_subordinate_to_partition_of_unity + theorem smooth_partition_of_unity.le_one + theorem smooth_partition_of_unity.nonneg + def smooth_partition_of_unity.single + theorem smooth_partition_of_unity.smooth_sum + theorem smooth_partition_of_unity.sum_eq_one + theorem smooth_partition_of_unity.sum_le_one + theorem smooth_partition_of_unity.sum_nonneg + def smooth_partition_of_unity.to_partition_of_unity + structure smooth_partition_of_unity Modified src/geometry/manifold/times_cont_mdiff.lean + theorem smooth_at_one + theorem smooth_on_one + theorem smooth_one + theorem smooth_within_at_one + theorem times_cont_mdiff_at_one + theorem times_cont_mdiff_on_one + theorem times_cont_mdiff_one + theorem times_cont_mdiff_within_at_one Modified src/geometry/manifold/times_cont_mdiff_map.lean + theorem times_cont_mdiff_map.coe_fn_mk Modified src/geometry/manifold/whitney_embedding.lean + theorem exists_embedding_euclidean_of_compact - theorem exists_embedding_finrank_of_compact +/- def smooth_bump_covering.embedding_pi_tangent +/- theorem smooth_bump_covering.embedding_pi_tangent_inj_on +/- theorem smooth_bump_covering.embedding_pi_tangent_injective + theorem smooth_bump_covering.exists_immersion_euclidean - theorem smooth_bump_covering.exists_immersion_finrank Modified src/topology/paracompact.lean Added src/topology/partition_of_unity.lean + theorem bump_covering.coe_single + theorem bump_covering.continuous_to_pou_fun + theorem bump_covering.eventually_eq_one + theorem bump_covering.exists_finset_to_partition_of_unity_eventually_eq + theorem bump_covering.exists_finset_to_pou_fun_eventually_eq + theorem bump_covering.exists_is_subordinate + theorem bump_covering.exists_is_subordinate_of_locally_finite + theorem bump_covering.exists_is_subordinate_of_locally_finite_of_prop + theorem bump_covering.exists_is_subordinate_of_prop + def bump_covering.ind + theorem bump_covering.ind_apply + theorem bump_covering.is_subordinate.mono + theorem bump_covering.is_subordinate.to_partition_of_unity + def bump_covering.is_subordinate + theorem bump_covering.le_one + theorem bump_covering.nonneg + theorem bump_covering.sum_to_partition_of_unity_eq + theorem bump_covering.sum_to_pou_fun_eq + theorem bump_covering.support_to_partition_of_unity_subset + theorem bump_covering.support_to_pou_fun_subset + def bump_covering.to_partition_of_unity + theorem bump_covering.to_partition_of_unity_apply + theorem bump_covering.to_partition_of_unity_eq_mul_prod + theorem bump_covering.to_partition_of_unity_zero_of_zero + def bump_covering.to_pou_fun + theorem bump_covering.to_pou_fun_eq_mul_prod + theorem bump_covering.to_pou_fun_zero_of_zero + structure bump_covering + theorem partition_of_unity.exists_is_subordinate + theorem partition_of_unity.exists_is_subordinate_of_locally_finite + def partition_of_unity.is_subordinate + theorem partition_of_unity.le_one + theorem partition_of_unity.nonneg + theorem partition_of_unity.sum_eq_one + theorem partition_of_unity.sum_le_one + theorem partition_of_unity.sum_nonneg + structure partition_of_unity 2021-08-06 06:59:28 dc6adcc feat(order/bounded_lattice): define the `distrib_lattice_bot` typeclass (#8507) Typeclass for a distributive lattice with a least element. This typeclass is used to generalize `disjoint_sup_left` and similar. It inserts itself in the hierarchy between `semilattice_sup_bot, semilattice_inf_bot` and `generalized_boolean_algebra`, `bounded_distrib_lattice`. I am doing it through `extends`. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/partial_sups.lean +/- theorem partial_sups_disjoint_of_disjoint Modified src/order/symm_diff.lean +/- theorem disjoint.disjoint_symm_diff_of_disjoint 2021-08-06 02:17:48 e28d945 chore(scripts): update nolints.txt (#8562) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-08-06 00:12:02 c2a0532 feat(logic/unique,data/fintype/basic): unique and fintype of subtype of one element (#8491) Additionally, a lemma proving that the cardinality of such a subtype is 1. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.card_subtype_eq' + theorem fintype.card_subtype_eq Modified src/logic/unique.lean 2021-08-05 20:49:21 eb73c35 docs(order/complete_boolean_algebra): add module docstring, add whitespaces (#8525) ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean +/- theorem Inf_sup_Inf +/- theorem Sup_inf_Sup +/- theorem compl_Inf +/- theorem compl_Sup +/- theorem compl_infi +/- theorem compl_supr 2021-08-05 19:03:04 c2ed7dc feat(logic/basic): `ite p a b` is equal to `a` or `b` (#8557) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem ite_eq_or_eq 2021-08-05 19:03:03 52b6516 refactor(order/disjointed): generalize `disjointed` to generalized boolean algebras (#8409) - Split `data.set.disjointed` into `data.set.pairwise` and `order.disjointed`. Change imports accordingly. - In `order.disjointed`, change `set α` to `generalized_boolean_algebra α`. Redefine `disjointed` in terms of `partial_sups` to avoid needing completeness. Keep set notation variants of lemmas for easier unification. - Rename some lemmas and reorder their arguments to make dot notation functional. - Generalize some (where some = 2) `pairwise` lemmas. - Delete lemmas which are unused and are a straightforward `rw` away from a simpler one (`Union_disjointed_of_mono`). ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.bInter_lt_succ + theorem set.bUnion_lt_succ Modified src/data/set/pairwise.lean +/- theorem pairwise.mono + theorem pairwise_disjoint_on - theorem pairwise_disjoint_on_nat - theorem pairwise_on_nat + theorem symmetric.pairwise_on Modified src/measure_theory/measurable_space_def.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/pi_system.lean Modified src/measure_theory/regular.lean Modified src/order/disjointed.lean + theorem Union_disjointed + theorem disjoint_disjointed + def disjointed + theorem disjointed_eq_inf_compl + theorem disjointed_eq_inter_compl + theorem disjointed_le + theorem disjointed_le_id + def disjointed_rec + theorem disjointed_rec_zero + theorem disjointed_subset + theorem disjointed_succ + theorem disjointed_unique + theorem disjointed_zero + theorem monotone.disjointed_eq + theorem partial_sups_disjointed - theorem set.Inter_lt_succ - theorem set.Union_disjointed - theorem set.Union_disjointed_of_mono - theorem set.Union_lt_succ - theorem set.disjoint_disjointed' - theorem set.disjoint_disjointed - def set.disjointed - theorem set.disjointed_induct - theorem set.disjointed_of_mono - theorem set.disjointed_subset - theorem set.subset_Union_disjointed + theorem supr_disjointed Modified src/order/partial_sups.lean 2021-08-05 16:28:09 8e79ea5 feat(data/matrix/basic): add `alg_(hom|equiv).map_matrix` (#8527) This also adds a few standalone lemmas about `algebra_map`. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + def alg_equiv.map_matrix + theorem alg_equiv.map_matrix_refl + theorem alg_equiv.map_matrix_symm + theorem alg_equiv.map_matrix_trans + def alg_hom.map_matrix + theorem alg_hom.map_matrix_comp + theorem alg_hom.map_matrix_id + theorem matrix.algebra_map_eq_diagonal + theorem matrix.algebra_map_eq_diagonal_ring_hom + theorem matrix.map_algebra_map 2021-08-05 12:24:03 a0cb45f feat(linear_algebra/clifford_algebra): the reals and complex numbers have isomorphic real clifford algebras (#8165) ESTIMATED CHANGES Added src/linear_algebra/clifford_algebra/equivs.lean + def clifford_algebra_complex.Q + theorem clifford_algebra_complex.Q_apply + def clifford_algebra_complex.to_complex + theorem clifford_algebra_complex.to_complex_ι + theorem clifford_algebra_ring.ι_eq_zero 2021-08-04 21:40:15 ee8e447 chore(category_theory/whiskering): Fix docstring (#8533) ESTIMATED CHANGES Modified src/category_theory/whiskering.lean 2021-08-04 19:46:09 d24faea chore(data/real/basic): drop some lemmas (#8523) Drop `real.Sup_le`, `real.lt_Sup`, `real.le_Sup`, `real.Sup_le_ub`, `real.le_Inf`, `real.Inf_lt`, `real.Inf_le`, `real.lb_le_Inf`. Use lemmas about `conditionally_complete_lattice`s instead. Also drop unneeded assumptions in `real.lt_Inf_add_pos` and `real.add_neg_lt_Sup`. ESTIMATED CHANGES Modified archive/imo/imo1972_b2.lean Modified src/algebra/pointwise.lean + theorem set.inv_empty + theorem set.inv_univ + theorem set.nonempty.inv + theorem set.nonempty_inv Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/normed_group_hom.lean Modified src/analysis/normed_space/normed_group_quotient.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/data/real/basic.lean +/- theorem real.Inf_def - theorem real.Inf_le - theorem real.Inf_lt - theorem real.Sup_le - theorem real.Sup_le_ub +/- theorem real.add_neg_lt_Sup - theorem real.lb_le_Inf - theorem real.le_Inf - theorem real.le_Sup +/- theorem real.lt_Inf_add_pos - theorem real.lt_Sup Modified src/data/real/hyperreal.lean Modified src/data/set/basic.lean + theorem function.surjective.nonempty_preimage Modified src/topology/metric_space/basic.lean 2021-08-04 16:20:15 4e9b18b chore(order/basic): rename monotone_of_monotone_nat and strict_mono.nat (#8550) For more coherence (and easier discoverability), rename `monotone_of_monotone_nat` to `monotone_nat_of_le_succ`, and `strict_mono.nat` to `strict_mono_nat_of_lt_succ`. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified archive/imo/imo1977_q6.lean Modified src/algebra/group_power/order.lean Modified src/algebra/pointwise.lean Modified src/data/equiv/encodable/basic.lean Modified src/data/list/basic.lean Modified src/data/nat/digits.lean Modified src/data/nat/fib.lean Modified src/data/nat/log.lean Modified src/linear_algebra/prod.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/regular.lean Modified src/number_theory/padics/ring_homs.lean Modified src/order/basic.lean + theorem monotone_nat_of_le_succ - theorem monotone_of_monotone_nat + theorem strict_mono_nat_of_lt_succ Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/ideal.lean Modified src/order/partial_sups.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/subset_properties.lean Modified src/topology/urysohns_lemma.lean 2021-08-04 08:58:37 3a9b25d fix(order/lattice): make non-instances reducible (#8541) Some early fixes for the new linter in #8540. ESTIMATED CHANGES Modified src/order/bounded_lattice.lean Modified src/order/lattice.lean 2021-08-04 08:58:36 1691c6c feat(algebra/opposites): {add,mul,ring}_equiv.op (#8535) We had the equivalences of homs. Now we have equivalences of isos. ESTIMATED CHANGES Modified src/algebra/opposites.lean + def add_equiv.op + def add_equiv.unop + def mul_equiv.op + def mul_equiv.unop Modified src/data/equiv/ring.lean 2021-08-04 08:58:35 096bdb7 refactor(group_theory/solvable): move subgroup commutators into new file (#8534) The theory of nilpotent subgroups also needs a theory of general commutators (if H,K : subgroup G then so is [H,K]), but I don't really want to import solvable groups to get nilpotent groups, so I am breaking the solvable group file into two, splitting off the API for these commutators. ESTIMATED CHANGES Added src/group_theory/general_commutator.lean + theorem bot_general_commutator + theorem general_commutator_bot + theorem general_commutator_comm + theorem general_commutator_containment + theorem general_commutator_def' + theorem general_commutator_def + theorem general_commutator_le + theorem general_commutator_le_inf + theorem general_commutator_le_left + theorem general_commutator_le_right + theorem general_commutator_mono Modified src/group_theory/solvable.lean - theorem bot_general_commutator - theorem general_commutator_bot - theorem general_commutator_comm - theorem general_commutator_containment - theorem general_commutator_def' - theorem general_commutator_def - theorem general_commutator_le - theorem general_commutator_le_inf - theorem general_commutator_le_left - theorem general_commutator_le_right - theorem general_commutator_mono 2021-08-04 07:05:50 292e3fa refactor(nat/basic): Move lemma about nat (#8539) ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean Modified src/algebra/ordered_ring.lean - theorem nat.succ_eq_one_add Modified src/data/nat/basic.lean + theorem nat.succ_eq_one_add 2021-08-03 20:19:03 8502571 feat(topology/discrete_quotient): add two lemmas (#8464) Add lemmas `proj_bot_injective` and `proj_bot_bijective`, the former needed for the latter, and the latter needed in LTE. ESTIMATED CHANGES Modified src/topology/discrete_quotient.lean + theorem discrete_quotient.proj_bot_bijective + theorem discrete_quotient.proj_bot_injective Modified src/topology/subset_properties.lean + theorem is_clopen_discrete 2021-08-03 19:43:28 d366672 feat(measure_theory/integration): add some `with_density` lemmas (#8517) ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.finite_measure_with_density + theorem measure_theory.lintegral_in_measure_zero + theorem measure_theory.with_density_absolutely_continuous + theorem measure_theory.with_density_add + theorem measure_theory.with_density_smul' + theorem measure_theory.with_density_smul 2021-08-03 17:55:51 9d129dc feat(algebra/bounds): a few lemmas like `bdd_above (-s) ↔ bdd_below s` (#8522) ESTIMATED CHANGES Added src/algebra/bounds.lean + theorem bdd_above.inv + theorem bdd_above.mul + theorem bdd_above_inv + theorem bdd_below.inv + theorem bdd_below.mul + theorem bdd_below_inv + theorem is_glb.inv + theorem is_glb_inv' + theorem is_glb_inv + theorem is_lub.inv + theorem is_lub_inv' + theorem is_lub_inv + theorem mul_mem_lower_bounds_mul + theorem mul_mem_upper_bounds_mul + theorem subset_lower_bounds_mul + theorem subset_upper_bounds_mul Modified src/algebra/ordered_group.lean Modified src/order/bounds.lean + theorem order_iso.is_glb_image' + theorem order_iso.is_glb_preimage' + theorem order_iso.is_lub_image' + theorem order_iso.is_lub_preimage' Modified src/order/galois_connection.lean + theorem order_iso.bdd_above_preimage + theorem order_iso.bdd_below_preimage 2021-08-03 16:52:11 c543ec9 feat(topology/algebra/ordered/basic): sequences tending to Inf/Sup (#8524) We show that there exist monotone sequences tending to the Inf/Sup of a set in a conditionally complete linear order, as well as several related lemmas expressed in terms of `is_lub` and `is_glb`. ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean + theorem exists_seq_strict_antimono_tendsto + theorem exists_seq_strict_mono_tendsto + theorem exists_seq_tendsto_Inf + theorem exists_seq_tendsto_Sup + theorem is_glb.exists_seq_monotone_tendsto' + theorem is_glb.exists_seq_monotone_tendsto + theorem is_glb.exists_seq_strict_mono_tendsto_of_not_mem' + theorem is_glb.exists_seq_strict_mono_tendsto_of_not_mem + theorem is_glb_of_mem_closure + theorem is_lub.exists_seq_monotone_tendsto' + theorem is_lub.exists_seq_monotone_tendsto + theorem is_lub.exists_seq_strict_mono_tendsto_of_not_mem' + theorem is_lub.exists_seq_strict_mono_tendsto_of_not_mem + theorem is_lub_of_mem_closure 2021-08-03 15:41:09 2b3cffd feat(algebra/floor): notation for nat_floor and nat_ceil (#8526) We introduce the notations ` ⌊a⌋₊` for `nat_floor a` and `⌈a⌉₊` for `nat_ceil a`, mimicking the existing notations for `floor` and `ceil` (with the `+` corresponding to the recent notation for `nnnorm`). ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/floor.lean +/- theorem ceil_eq_on_Ioc' +/- theorem ceil_eq_on_Ioc +/- theorem floor_eq_on_Ico' +/- theorem floor_eq_on_Ico +/- theorem int.preimage_Ici +/- theorem int.preimage_Iic +/- theorem int.preimage_Iio +/- theorem int.preimage_Ioi +/- theorem le_nat_ceil +/- theorem le_nat_floor_iff +/- theorem le_nat_floor_of_le +/- theorem le_of_nat_ceil_le +/- theorem lt_nat_ceil +/- theorem lt_nat_floor_add_one +/- theorem lt_of_lt_nat_floor +/- theorem lt_of_nat_ceil_lt +/- theorem nat_ceil_add_nat +/- theorem nat_ceil_coe +/- theorem nat_ceil_le +/- theorem nat_ceil_lt_add_one +/- theorem nat_ceil_mono +/- theorem nat_ceil_zero +/- theorem nat_floor_add_nat +/- theorem nat_floor_coe +/- theorem nat_floor_eq_zero_iff +/- theorem nat_floor_le +/- theorem nat_floor_lt_iff +/- theorem nat_floor_mono +/- theorem nat_floor_of_nonpos +/- theorem nat_floor_zero +/- theorem pos_of_nat_floor_pos Modified src/analysis/special_functions/exp_log.lean Modified src/data/real/basic.lean Modified src/data/real/pi.lean Modified src/measure_theory/borel_space.lean 2021-08-03 11:13:43 1700b3c chore(ring_theory/fractional_ideal): make `coe : ideal → fractional_ideal` a `coe_t` (#8529) This noticeably speeds up elaboration of `dedekind_domain.lean`, since it discourages the elaborator from going down a (nearly?)-looping path. See also this Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Priority.20of.20.60coe_sort_trans.60 ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean 2021-08-03 11:13:41 5afd09a chore(data/matrix/basic): move bundled versions of `matrix.map` beneath the algebra structure (#8528) This will give us an obvious place to add the bundled alg_hom version in a follow-up PR. None of the moved lines have been modified. Note that the git diff shows that instead of `matrix.map` moving down, the `algebra` structure has moved up. ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2021-08-03 11:13:40 3f4b836 feat(order/bounds): add `is_lub_pi` and `is_glb_pi` (#8521) ESTIMATED CHANGES Modified src/order/basic.lean + theorem function.monotone_eval Modified src/order/bounds.lean + theorem is_glb_pi + theorem is_lub_pi 2021-08-03 11:13:39 ad83714 feat(fractional_ideal): `coe : ideal → fractional_ideal` as ring hom (#8511) This PR bundles the coercion from integral ideals to fractional ideals as a ring hom, and proves the missing `simp` lemmas that show the map indeed preserves the ring structure. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + def fractional_ideal.coe_ideal_hom + theorem fractional_ideal.coe_ideal_mul + theorem fractional_ideal.coe_ideal_sup Modified src/ring_theory/localization.lean + theorem is_localization.coe_submodule_bot + theorem is_localization.coe_submodule_mul + theorem is_localization.coe_submodule_sup 2021-08-03 09:27:49 b681b6b chore(order/bounds): add `@[simp]` attrs, add `not_bdd_*_univ` (#8520) ESTIMATED CHANGES Modified src/order/bounds.lean +/- theorem no_bot_order.lower_bounds_univ +/- theorem no_top_order.upper_bounds_univ + theorem not_bdd_above_univ + theorem not_bdd_below_univ +/- theorem order_bot.lower_bounds_univ +/- theorem order_top.upper_bounds_univ 2021-08-03 07:45:29 1021679 feat(algebra/ordered_monoid): a few more `order_dual` instances (#8519) * add `covariant.flip` and `contravariant.flip`; * add `[to_additive]` to `group.covariant_iff_contravariant` and `covconv` (renamed to `group.covconv`); * use `group.covconv` in `group.covariant_class_le.to_contravariant_class_le`; * add some `order_dual` instances for `covariant_class` and `contravariant_class`; * golf `order_dual.ordered_comm_monoid`. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean + theorem contravariant.flip + theorem covariant.flip - theorem covconv + theorem group.covconv Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean 2021-08-02 23:06:35 0bef4a0 feat(algebra/group_with_zero): pullback a `comm_cancel_monoid_with_zero` instance across an injective hom (#8515) This generalizes `function.injective.cancel_monoid_with_zero` to the commutative case. See also: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/A.20submonoid.20of.20a.20.60cancel_monoid_with_zero.60.20also.20cancels ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean 2021-08-02 21:14:46 2568d41 feat(data/matrix/basic): Add bundled versions of matrix.diagonal (#8510) Also shows injectivity of `diagonal`. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- def matrix.diagonal +/- theorem matrix.diagonal_add + def matrix.diagonal_add_monoid_hom + def matrix.diagonal_alg_hom + theorem matrix.diagonal_injective + def matrix.diagonal_linear_map + def matrix.diagonal_ring_hom + theorem matrix.diagonal_smul 2021-08-02 21:14:45 77d6c8e feat(simps): better name for additivized simps-lemmas (#8457) * When using `@[to_additive foo, simps]`, the additivized simp-lemmas will have name `foo` + projection suffix (or prefix) * Also add an option for `@[to_additive]` to accept the attribute with the correct given name. This is only useful when adding the `@[to_additive]` attribute via metaprogramming, so this option cannot be set by the `to_additive` argument parser. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/tactic/simps.lean Modified test/simps.lean + def some_test1 2021-08-02 20:14:32 17f1d28 chore(data/matrix): delete each of the `matrix.foo_hom_map_zero` (#8512) These can already be found by `simp` since `matrix.map_zero` is a `simp` lemma, and we can manually use `foo_hom.map_matrix.map_zero` introduced by #8468 instead. They also don't seem to be used anywhere in mathlib, given that deleting them with no replacement causes no build errors. ESTIMATED CHANGES Modified src/data/matrix/basic.lean - theorem matrix.add_equiv_map_zero - theorem matrix.add_monoid_hom_map_zero - theorem matrix.alg_equiv_map_one - theorem matrix.alg_equiv_map_zero - theorem matrix.alg_hom_map_one - theorem matrix.alg_hom_map_zero - theorem matrix.linear_equiv_map_zero - theorem matrix.linear_map_map_zero - theorem matrix.ring_equiv_map_one - theorem matrix.ring_equiv_map_zero - theorem matrix.ring_hom_map_one - theorem matrix.ring_hom_map_zero - theorem matrix.zero_hom_map_zero 2021-08-02 17:05:53 17b1e7c feat(data/equiv/mul_add): add `equiv.(div,sub)_(left,right)` (#8385) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem equiv.div_left_eq_inv_trans_mul_left + theorem equiv.div_right_eq_mul_right_inv 2021-08-02 14:22:13 9a251f1 refactor(data/matrix/basic): merge duplicate algebra structures (#8486) By putting the algebra instance in the same file as `scalar`, a future patch can probably remove `matrix.scalar` entirely (it's just another spelling of `algebra_map`). Note that we actually had two instances of `algebra R (matrix n n R)` in different files, and the second one was strictly more general than the first. This removes the less general one. Moving the imports around like this changes the number of simp lemmas available in downstream files, which can make `simp` slow enough to push a proof into a timeout. A lot of files were expecting a transitive import of `algebra.algebra.basic` to import `data.fintype.card`, which it no longer does; hence the need to add this import explicitly. There are no new lemmas or generalizations in this change; the old `matrix_algebra` has been deleted, and everything else has been moved with some variables renamed. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem matrix.alg_equiv_map_one - theorem matrix.alg_equiv_map_zero - theorem matrix.alg_hom_map_one - theorem matrix.alg_hom_map_zero - theorem matrix.algebra_map_eq_smul Modified src/algebra/lie/weights.lean Modified src/category_theory/preadditive/Mat.lean Modified src/data/matrix/basic.lean + theorem matrix.alg_equiv_map_one + theorem matrix.alg_equiv_map_zero + theorem matrix.alg_hom_map_one + theorem matrix.alg_hom_map_zero + theorem matrix.algebra_map_eq_smul + theorem matrix.algebra_map_matrix_apply Modified src/group_theory/specific_groups/dihedral.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/free_module_pid.lean Modified src/linear_algebra/matrix/finite_dimensional.lean Modified src/linear_algebra/matrix/to_lin.lean Modified src/linear_algebra/multilinear.lean Modified src/ring_theory/matrix_algebra.lean - theorem algebra_map_matrix_apply Modified src/ring_theory/polynomial/symmetric.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/topology/algebra/infinite_sum.lean 2021-08-02 12:31:20 c8b7816 feat(algebra/ordered_monoid): add_eq_bot_iff (#8474) bot addition is saturating on the bottom. On the way, typeclass arguments were relaxed to just `[add_semigroup α]`, and helper simp lemmas added for `bot`. The iff lemma added (`add_eq_bot`) is not exactly according to the naming convention, but matches the top lemma and related ones in the naming style, so the style is kept consistent. There is an API proof available, but the defeq proof (using the top equivalent) was used based on suggestions. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean +/- theorem with_bot.add_bot + theorem with_bot.add_eq_bot +/- theorem with_bot.bot_add Modified src/order/bounded_lattice.lean + theorem with_bot.bot_ne_coe + theorem with_bot.coe_ne_bot 2021-08-02 12:31:19 f354c1b feat(order/bounded_lattice): add some disjoint lemmas (#8407) This adds `disjoint.inf_left` and `disjoint.inf_right` (and primed variants) to match the existing `disjoint.sup_left` and `disjoint.sup_right`. This also duplicates these lemmas to use set notation with `inter` instead of `inf`, matching the existing `disjoint.union_left` and `disjoint.union_right`. ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem disjoint.inter_left' + theorem disjoint.inter_left + theorem disjoint.inter_right' + theorem disjoint.inter_right Modified src/order/bounded_lattice.lean + theorem disjoint.inf_left' + theorem disjoint.inf_left + theorem disjoint.inf_right' + theorem disjoint.inf_right 2021-08-02 11:38:23 af8e56a docs(overview): add holder continuity (#8506) ESTIMATED CHANGES Modified docs/overview.yaml 2021-08-02 11:38:22 25a4230 chore(data/real/basic): cleanup (#8501) * use `is_lub` etc in the statement of `real.exists_sup`, rename it to `real.exists_is_lub`; * move parts of the proof of `real.exists_is_lub` around; ESTIMATED CHANGES Modified src/data/real/basic.lean + theorem real.exists_is_lub - theorem real.exists_sup 2021-08-02 10:07:38 69c6adb chore(data/int): move some lemmas from `basic` to a new file (#8495) Move `least_of_bdd`, `exists_least_of_bdd`, `coe_least_of_bdd_eq`, `greatest_of_bdd`, `exists_greatest_of_bdd`, and `coe_greatest_of_bdd_eq` from `data.int.basic` to `data.int.least_greatest`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/data/int/basic.lean - theorem int.coe_greatest_of_bdd_eq - theorem int.coe_least_of_bdd_eq - theorem int.exists_greatest_of_bdd - theorem int.exists_least_of_bdd - def int.greatest_of_bdd - def int.least_of_bdd Added src/data/int/least_greatest.lean + theorem int.coe_greatest_of_bdd_eq + theorem int.coe_least_of_bdd_eq + theorem int.exists_greatest_of_bdd + theorem int.exists_least_of_bdd + def int.greatest_of_bdd + def int.least_of_bdd Modified src/data/int/order.lean 2021-08-02 10:07:37 4a9cbdb feat(data/matrix/basic): provide equiv versions of `matrix.map`, `linear_map.map_matrix`, and `ring_hom.map_matrix`. (#8468) This moves all of these definitions to be adjacent, adds the standard family of functorial simp lemmas, and relaxes some typeclass requirements. This also renames `matrix.one_map` to `matrix.map_one` to match `matrix.map_zero`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/data/matrix/basic.lean + def add_equiv.map_matrix + theorem add_equiv.map_matrix_refl + theorem add_equiv.map_matrix_symm + theorem add_equiv.map_matrix_trans +/- def add_monoid_hom.map_matrix - theorem add_monoid_hom.map_matrix_apply + theorem add_monoid_hom.map_matrix_comp + theorem add_monoid_hom.map_matrix_id + def equiv.map_matrix + theorem equiv.map_matrix_refl + theorem equiv.map_matrix_symm + theorem equiv.map_matrix_trans + def linear_equiv.map_matrix + theorem linear_equiv.map_matrix_refl + theorem linear_equiv.map_matrix_symm + theorem linear_equiv.map_matrix_trans +/- def linear_map.map_matrix + theorem linear_map.map_matrix_comp + theorem linear_map.map_matrix_id +/- theorem matrix.map_add + theorem matrix.map_id + theorem matrix.map_one +/- theorem matrix.map_smul +/- theorem matrix.map_sub +/- theorem matrix.map_zero - theorem matrix.one_map + def ring_equiv.map_matrix + theorem ring_equiv.map_matrix_refl + theorem ring_equiv.map_matrix_symm + theorem ring_equiv.map_matrix_trans +/- def ring_hom.map_matrix + theorem ring_hom.map_matrix_comp + theorem ring_hom.map_matrix_id 2021-08-02 08:51:21 1b771af feat(group_theory/coset): card_dvd_of_injective (#8485) ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem subgroup.card_comap_dvd_of_injective + theorem subgroup.card_dvd_of_injective + theorem subgroup.card_dvd_of_le 2021-08-02 02:56:39 0f168d3 refactor(data/real/nnreal): use `ord_connected_subset_conditionally_complete_linear_order` (#8502) ESTIMATED CHANGES Modified src/data/real/nnreal.lean +/- theorem nnreal.coe_Inf +/- theorem nnreal.coe_Sup 2021-08-02 02:56:38 5994df1 feat(algebra/group_power/lemmas): is_unit_pos_pow_iff (#8420) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem is_unit_pos_pow_iff 2021-08-02 02:15:39 db0cd4d chore(scripts): update nolints.txt (#8505) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-08-01 22:56:38 bfa6bbb doc(algebra/algebra/basic): add a comment to make the similar definition discoverable (#8500) I couldn't find this def, but was able to find lmul. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean 2021-08-01 21:03:45 fdb0369 feat(algebra/group/semiconj): add `semiconj_by.reflexive` and `semiconj_by.transitive` (#8493) ESTIMATED CHANGES Modified src/algebra/group/semiconj.lean 2021-08-01 21:03:44 60c378d feat(algebra/ordered_group): add `order_iso.inv` (#8492) * add `order_iso.inv` and `order_iso.neg`; * use it to golf a few proofs; * use `alias` to generate some `imp` lemmas from `iff` lemmas; * generalize some lemmas about `order_iso` from `preorder` to `has_le`. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean - theorem inv_le_of_inv_le - theorem inv_lt_of_inv_lt - theorem lt_inv_of_lt_inv + def order_iso.inv Modified src/order/rel_iso.lean 2021-08-01 21:03:43 1530d76 feat(group_theory/congruence): add `con.lift_on_units` etc (#8488) Add a helper function that makes it easier to define a function on `units (con.quotient c)`. ESTIMATED CHANGES Modified src/group_theory/congruence.lean + theorem con.hrec_on₂_coe + theorem con.induction_on_units + def con.lift_on_units + theorem con.lift_on_units_mk + theorem con.quot_mk_eq_coe + theorem con.rel_mk 2021-08-01 21:03:42 9c4dd02 feat(group_theory/order_of_element): order_of_dvd_iff_gpow_eq_one (#8487) Version of `order_of_dvd_iff_pow_eq_one` for integer powers ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem order_of_dvd_iff_gpow_eq_one 2021-08-01 21:03:41 9194f20 feat(data/nat/prime): pow_dvd_of_dvd_mul_right (#8483) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.pow_dvd_of_dvd_mul_left + theorem nat.prime.pow_dvd_of_dvd_mul_right 2021-08-01 21:03:40 b099103 feat(group_theory/subgroup): add `subgroup.forall_gpowers` etc (#8470) * add `subgroup.forall_gpowers`, `subgroup.exists_gpowers`, `subgroup.forall_mem_gpowers`, and `subgroup.exists_mem_gpowers`; * add their additive counterparts; * drop some explicit lemmas about `add_subgroup.gmultiples`: `to_additive` can generate them now. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.exists_subtype_range_iff + theorem set.forall_subtype_range_iff Modified src/group_theory/subgroup.lean - theorem add_subgroup.gmultiples_eq_closure - theorem add_subgroup.mem_gmultiples - theorem add_subgroup.mem_gmultiples_iff + theorem subgroup.exists_gpowers + theorem subgroup.exists_mem_gpowers + theorem subgroup.forall_gpowers + theorem subgroup.forall_mem_gpowers 2021-08-01 21:03:39 52a2e8b chore(algebra/group/hom_instances): add monoid_hom versions of linear_map lemmas (#8461) I mainly want the additive versions, but we may as well get the multiplicative ones too. This also adds the missing `monoid_hom.map_div` and some other division versions of subtraction lemmas. ESTIMATED CHANGES Modified src/algebra/group/hom.lean - theorem add_monoid_hom.coe_of_map_sub - theorem add_monoid_hom.map_sub - def add_monoid_hom.of_map_sub + theorem monoid_hom.coe_of_map_div + theorem monoid_hom.map_div + def monoid_hom.of_map_div Modified src/algebra/group/hom_instances.lean + theorem monoid_hom.map_div₂ + theorem monoid_hom.map_inv₂ + theorem monoid_hom.map_mul₂ + theorem monoid_hom.map_one₂ 2021-08-01 21:03:36 894fb0c feat(data/nat/totient): totient_prime_pow (#8353) ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime_pow_left_iff + theorem nat.coprime_pow_right_iff Modified src/data/nat/totient.lean + theorem nat.totient_eq_card_coprime + theorem nat.totient_one + theorem nat.totient_prime + theorem nat.totient_prime_pow + theorem nat.totient_prime_pow_succ + theorem nat.totient_two 2021-08-01 19:11:26 7249afb feat(measure_theory/[integrable_on, set_integral]): integrals on two ae-eq sets are equal (#8440) ESTIMATED CHANGES Modified src/measure_theory/integrable_on.lean + theorem measure_theory.integrable_on.congr_set_ae Modified src/measure_theory/measure_space.lean + theorem indicator_ae_eq_of_ae_eq_set + theorem piecewise_ae_eq_of_ae_eq_set Modified src/measure_theory/set_integral.lean + theorem measure_theory.set_integral_congr_set_ae 2021-08-01 19:11:25 d3c943b refactor(data/set/lattice): add congr lemmas for `Prop`-indexed `Union` and `Inter` (#8260) Thanks to new `@[congr]` lemmas `Union_congr_Prop` and `Inter_congr_Prop`, `simp` can simplify `p y` in `⋃ y (h : p y), f y`. As a result, LHS of many lemmas (e.g., `Union_image`) is no longer in `simp` normal form. E.g., ```lean lemma bUnion_range {f : ι → α} {g : α → set β} : (⋃x ∈ range f, g x) = (⋃y, g (f y)) := ``` can no longer be a `@[simp]` lemma because `simp` simplifies `⋃x ∈ range f, g x` to `⋃ (x : α) (h : ∃ i, f i = x), g x`, then to `⋃ (x : α) (i : α) (h : f i = x), g x`. So, we add ```lean @[simp] lemma Union_Union_eq' {f : ι → α} {g : α → set β} : (⋃ x y (h : f y = x), g x) = ⋃ y, g (f y) := ``` Also, `Union` and `Inter` are semireducible, so one has to explicitly convert between these operations and `supr`/`infi`. ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean Modified src/algebra/lie/submodule.lean Modified src/data/finset/lattice.lean +/- theorem finset.set_bInter_bUnion +/- theorem finset.set_bInter_coe +/- theorem finset.set_bInter_finset_image +/- theorem finset.set_bInter_insert +/- theorem finset.set_bInter_option_to_finset +/- theorem finset.set_bInter_singleton +/- theorem finset.set_bUnion_bUnion +/- theorem finset.set_bUnion_coe +/- theorem finset.set_bUnion_finset_image +/- theorem finset.set_bUnion_insert +/- theorem finset.set_bUnion_option_to_finset +/- theorem finset.set_bUnion_singleton Modified src/data/set/finite.lean Modified src/data/set/lattice.lean + theorem set.Inf_eq_sInter +/- def set.Inter + theorem set.Inter_Inter_eq' + theorem set.Inter_Inter_eq_left + theorem set.Inter_Inter_eq_or_left + theorem set.Inter_Inter_eq_right + theorem set.Inter_and + theorem set.Inter_comm + theorem set.Inter_congr_Prop + theorem set.Inter_exists + theorem set.Inter_false - theorem set.Inter_neg + theorem set.Inter_or - theorem set.Inter_pos + theorem set.Inter_true + theorem set.Sup_eq_sUnion +/- def set.Union + theorem set.Union_Union_eq' + theorem set.Union_Union_eq_left + theorem set.Union_Union_eq_or_left + theorem set.Union_Union_eq_right + theorem set.Union_and + theorem set.Union_comm + theorem set.Union_congr_Prop + theorem set.Union_exists + theorem set.Union_false - theorem set.Union_neg +/- theorem set.Union_of_singleton + theorem set.Union_or - theorem set.Union_pos + theorem set.Union_true + theorem set.bInter_and' + theorem set.bInter_and +/- theorem set.bInter_image +/- theorem set.bInter_insert +/- theorem set.bInter_range +/- theorem set.bInter_singleton + theorem set.bUnion_and' + theorem set.bUnion_and +/- theorem set.bUnion_image +/- theorem set.bUnion_insert +/- theorem set.bUnion_range +/- theorem set.bUnion_singleton +/- theorem set.compl_Inter +/- theorem set.compl_Union + theorem set.infi_eq_Inter +/- def set.sInter + theorem set.supr_eq_Union Modified src/linear_algebra/linear_independent.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/content.lean Modified src/measure_theory/measure_space.lean Modified src/model_theory/basic.lean + theorem first_order.language.closed_under_univ Modified src/order/complete_lattice.lean +/- theorem supr_sup_eq Modified src/order/filter/at_top_bot.lean Modified src/topology/basic.lean Modified src/topology/opens.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/separation.lean 2021-08-01 17:17:28 f961b28 chore(deprecated/*): Make deprecated classes into structures (#8178) I make the deprecated classes `is_group_hom`, `is_subgroup`, ... into structures, and delete some deprecated constructions which become inconvenient or essentially unusable after these changes. I do not completely remove all deprecated imports in undeprecated files, however I push these imports much further towards the edges of the hierarchy. More detailed comments about what is going on here: In the `src/deprecated/` directory, classes such as `is_ring_hom` and `is_subring` are defined (and the same for groups, fields, monoids...). These are predicate classes on functions and sets respectively, formerly used to handle ring morphisms and subrings before both were bundled. Amongst other things, this PR changes all the relevant definitions from classes to structures and then picks up the pieces (I will say more about what this means later). Before I started on this refactor, my opinion was that these classes should be turned into structures, but should be left in mathlib. After this refactor, I am now moving towards the opinion that it would be no great loss if these structures were removed completely -- I do not see any time when we really need them. The situation I previously had in mind where the substructures could be useful is if one is (in the middle of a long tactic proof) defining an explicit subring of a ring by first defining it as a subset, or `add_subgroup` or whatever, and then doing some mathematics to prove that this subset is closed under multiplication, and hence proving that it was a subring after all. With the old approach this just involves some `S : set R` with more and more properties being proved of it and added to the type class search as the proof progresses. With the bundled set-up, we might have `S : set R` and then later on we get `S_subring : subring R` whose underlying subset equals S, and then all our hypotheses about `S` built up during the proof can no longer be used as rewrites, we need to keep rewriting or `change`ing `x \in S_subring` to `x \in S` and back again. This issue showed up only once in the refactor, in `src/ring_theory/integral_closure.lean`, around line 230, where I refactored a proof to avoid the deprecated structures and it seemed to get a bit longer. I can definitely live with this. One could imagine a similar situation with morphisms (define f as a map between rings, and only later on prove that it's a ring homomorphism) but actually I did not see this situation arise at all. In fact the main issue I ran into with morphism classes was the following (which showed up 10 or so times): there are many constructions in mathlib which actually turn out to be, or (even worse) turn out under some extra assumptions to be, maps which preserve some structure. For example `multiset.map (f : X -> Y) : multiset X -> multiset Y` (which was in mathlib since it was born IIRC) turns out to be an add_group_hom, once the add_group structure is defined on multisets. So here I had a big choice to make: should I actually rename `multiset.map` to be `private multiset.map_aux` and then redefine `multiset.map` to be the `add_monoid_hom`? In retrospect I think that there's a case for this. In fact `data.multiset.basic` is the biggest source of these issues -- `map` and `sum` and `countp` and `count` are all `add_monoid_hom`s. I did not feel confident about ripping out these fundamental definitions so I made four new ones, `map_add_monoid_hom`, `sum_add_monoid_hom` etc. The disadvantage with this approach is that again rewrites get a bit more painful: some lemma which involves `map` may need to be rewritten so that it involves `map_add_monoid_hom` so that one can apply `add_monoid_hom.map_add`, and then perhaps rewritten back so that one can apply other rewrites. Random example: line 43 of `linear_algebra.lagrange`, where I have to rewrite `coe_eval_ring_hom` in both directions. Let me say that I am most definitely open to the idea of renaming `multiset.map_add_monoid_hom` to `multiset.map` and just nuking our current `multiset.map` or making it private or `map_aux` or whatever but we're already at 92 files changed so it might be best to get this over with and come up with a TODO list for future tidy-ups. Another example: should the fields of `complex` be `re'` and `im'`, and `complex.re` be redefined as the R-linear map? Right now in mathlib we only use the fact that it's an `add_group_hom`, and I define `re_add_group_hom` for this. Note however one can not always get away with this renaming trick, for example there are instances when a certain fundamental construction only preserves some structure under additional conditions -- for example `has_inv.inv` on groups is only a group homomorphism when the underlying group is abelian (and the same for `pow` and `gpow`). In the past this was dealt with by a typeclass `is_group_hom` on `inv` which fired in the presence of a `comm_group` but not otherwise; now this has to be dealt with by a second definition `inv_monoid_hom` whose underlying function is `inv`. You can't just get away with applying the proof of `inv (a * b) = inv a * inv b` when you need it, because sometimes you want to apply things like `monoid_hom.map_prod` which needs a `monoid_hom` as input, so won't work with `inv`: you need to rewrite one way, apply `monoid_hom.map_prod` and then rewrite back the other way now :-/ I would say that this was ultimately the main disadvantage of this approach, but it seems minor really and only shows up a few times, and if we go ahead with the renaming plan it will happen even fewer times. I had initially played with the idea of just completely removing all deprecated imports in non-deprecated files, but there were times near the end when I just didn't feel like it (I just wanted it to be over, I was scared to mess around in `control` or `test`), so I removed most of them but added some deprecated imports higher up the tree (or lower down the tree, I never understand which way up this tree is, I mean nearer the leaves -- am I right in that computer scientists for some reason think the root of a tree is at the top?). It will not be too hard for an expert to remove those last few deprecated imports in src outside the `deprecated` directory in subsequent PR's, indeed I could do it myself but I might I might need some Zulip help. Note: it used to be the case that `subring` imported `deprecated.subring`; this is now the other way around, which is much more sensible (and matches with submonoid). Outside the deprecated directory, there are only a few deprecated imports: `control.fold` (which I don't really want to mess with),`group_theory.free_abelian_group` (there is a bunch of `seq` stuff which I am not sure is ever used but I just couldn't be bothered, it might be the sort of refactor which someone finds interesting or fun though), `ring_theory.free_comm_ring` (this file involves some definitional abuse which either needs to be redone "mathematically" or rewritten to work with bundled morphisms) and `topology.algebra.uniform_group` (which I think Patrick is refactoring?) and a test file. If you look at the diffs you see that various things are deleted (lots of `is_add_monoid_hom foo` proofs), but many of these deletions come with corresponding additions (e.g. a new `foo_group_hom` definition if it was not there already, plus corresponding `simp` lemma, which is randomly either a `coe` or an `apply` depending on what mood I was in; this could all be done with `@[simps]` trickery apparently but I didn't read the thread carefully yet). Once nice achievement was that I refactored a bunch of basic ring and field theory to avoid the `is_` classes completely, which I think is a step in the right direction (people were occasionally being forced to use deprecated stuff when doing stuff like Galois theory because some fundamental things used to use them; this is no longer the case -- in particular I think Abel-Ruffini might now be deprecated-free, or very nearly so). `finset.sum_hom` and `finset.prod_hom` are gone. It is very funny to do a search for these files in mathlib current master as I write -- 98% of the time they're used, they're used backwards (with `.symm` or `\l` with a rewrite). The bundled versions (`monoid_hom.map_prod` etc) are written the other way around. I could have just left them and not bothered, but it seemed easier just to get rid of them if we're moving to bundled morphisms. One funny observation was that unary `-` seemed to be a special case: we seem to prefer `-\sum i, f i` to `\sum i, -(f i)` . For almost every other function, we want it to go the other way. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/algebra/basic.lean - theorem algebra.is_subring_algebra_map_apply - theorem algebra.is_subring_coe_algebra_map - theorem algebra.is_subring_coe_algebra_map_hom - def algebra.of_is_subring - theorem algebra.set_range_subset Modified src/algebra/algebra/subalgebra.lean - theorem mem_subalgebra_of_is_subring + def subalgebra.to_add_submonoid + def subalgebra.to_submonoid - def subalgebra_of_is_subring Modified src/algebra/algebra/tower.lean Modified src/algebra/big_operators/basic.lean +/- theorem finset.gsmul_sum - theorem finset.prod_hom Modified src/algebra/big_operators/finsupp.lean Modified src/algebra/big_operators/ring.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/direct_limit.lean Modified src/algebra/group/hom.lean + def comm_group.inv_monoid_hom Modified src/algebra/group_action_hom.lean Modified src/algebra/group_power/basic.lean + def gpow_group_hom - theorem is_monoid_hom.map_pow + def pow_monoid_hom Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_ring_action.lean + def mul_semiring_action.to_ring_hom - def mul_semiring_action.to_semiring_hom + theorem to_ring_hom_injective - theorem to_semiring_hom_injective Modified src/algebra/module/linear_map.lean Modified src/algebra/pointwise.lean - theorem set.singleton.is_mul_hom + def set.singleton_mul_hom Modified src/algebra/polynomial/group_ring_action.lean Modified src/algebra/ring/basic.lean + theorem ring_hom.injective_iff' Modified src/analysis/normed_space/normed_group_quotient.lean Modified src/analysis/normed_space/pi_Lp.lean Modified src/control/fold.lean + theorem traversable.fold_foldl + theorem traversable.fold_foldr + theorem traversable.fold_mfoldl + theorem traversable.fold_mfoldr + theorem traversable.free.map.is_monoid_hom +/- def traversable.map_fold Modified src/data/complex/basic.lean + theorem complex.coe_im_add_group_hom + theorem complex.coe_re_add_group_hom + def complex.im_add_group_hom + def complex.re_add_group_hom Modified src/data/complex/exponential.lean Modified src/data/dfinsupp.lean + def dfinsupp.mk_add_group_hom + def dfinsupp.subtype_domain_add_monoid_hom +/- theorem dfinsupp.zip_with_def Modified src/data/finsupp/basic.lean + def finsupp.subtype_domain_add_monoid_hom Modified src/data/matrix/basic.lean + def matrix.add_monoid_hom_mul_left + def matrix.add_monoid_hom_mul_right - theorem matrix.is_add_monoid_hom_mul_left - theorem matrix.is_add_monoid_hom_mul_right + def matrix.mul_vec.add_monoid_hom_left Modified src/data/multiset/basic.lean + theorem multiset.coe_count_add_monoid_hom + theorem multiset.coe_countp_add_monoid_hom + theorem multiset.coe_inv_monoid_hom + theorem multiset.coe_map_add_monoid_hom + theorem multiset.coe_sum_add_monoid_hom + def multiset.count_add_monoid_hom + def multiset.countp_add_monoid_hom + def multiset.map_add_monoid_hom + def multiset.sum_add_monoid_hom Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.coe_eval₂_hom + def mv_polynomial.coeff_add_monoid_hom +/- def mv_polynomial.eval₂_hom Modified src/data/mv_polynomial/comm_ring.lean +/- theorem mv_polynomial.C_neg +/- theorem mv_polynomial.C_sub +/- theorem mv_polynomial.hom_C Modified src/data/mv_polynomial/equiv.lean Modified src/data/mv_polynomial/rename.lean Modified src/data/pnat/basic.lean + def pnat.coe_add_hom + theorem pnat.coe_coe_monoid_hom + def pnat.coe_monoid_hom Modified src/data/pnat/factors.lean + theorem prime_multiset.coe_coe_nat_monoid_hom + theorem prime_multiset.coe_coe_pnat_monoid_hom + def prime_multiset.coe_nat_monoid_hom + def prime_multiset.coe_pnat_monoid_hom Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/lemmas.lean Modified src/data/polynomial/eval.lean + theorem polynomial.coe_eval_ring_hom + def polynomial.comp_ring_hom + def polynomial.eval_ring_hom + def polynomial.eval₂_add_monoid_hom +/- def polynomial.eval₂_ring_hom +/- theorem polynomial.map_pow +/- theorem polynomial.mem_map_range + theorem polynomial.mem_map_srange Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/lifts.lean +/- def polynomial.lifts + theorem polynomial.lifts_iff_ring_hom_srange +/- def polynomial.lifts_ring Modified src/data/polynomial/monic.lean Modified src/data/polynomial/ring_division.lean Modified src/deprecated/group.lean +/- theorem additive.is_add_group_hom +/- theorem additive.is_add_hom +/- theorem additive.is_add_monoid_hom + structure is_add_group_hom + structure is_add_hom + theorem is_add_monoid_hom.is_add_monoid_hom_mul_left + theorem is_add_monoid_hom.is_add_monoid_hom_mul_right + structure is_add_monoid_hom +/- theorem is_group_hom.comp + theorem is_group_hom.id +/- theorem is_group_hom.injective_iff +/- theorem is_group_hom.inv +/- theorem is_group_hom.map_inv + theorem is_group_hom.map_mul +/- theorem is_group_hom.map_one + theorem is_group_hom.to_is_monoid_hom + structure is_group_hom +/- theorem is_monoid_hom.comp + theorem is_monoid_hom.id + theorem is_monoid_hom.inv - theorem is_monoid_hom.of_mul + structure is_monoid_hom +/- theorem is_mul_hom.comp + theorem is_mul_hom.id +/- theorem is_mul_hom.inv + theorem is_mul_hom.to_is_monoid_hom + structure is_mul_hom +/- theorem is_unit.map' +/- theorem monoid_hom.coe_of + theorem monoid_hom.is_group_hom + theorem monoid_hom.is_monoid_hom_coe +/- def monoid_hom.of + theorem mul_equiv.is_group_hom + theorem mul_equiv.is_monoid_hom + theorem mul_equiv.is_mul_hom +/- theorem multiplicative.is_group_hom +/- theorem multiplicative.is_mul_hom + theorem ring_hom.to_is_add_group_hom + theorem ring_hom.to_is_add_monoid_hom + theorem ring_hom.to_is_monoid_hom + theorem units.coe_is_monoid_hom +/- theorem units.coe_map' +/- def units.map' Modified src/deprecated/ring.lean +/- theorem is_ring_hom.comp + theorem is_ring_hom.id +/- theorem is_ring_hom.map_neg +/- theorem is_ring_hom.map_sub +/- theorem is_ring_hom.map_zero +/- theorem is_ring_hom.of_semiring + theorem is_ring_hom.to_is_add_group_hom + theorem is_ring_hom.to_is_semiring_hom + structure is_ring_hom +/- theorem is_semiring_hom.comp + theorem is_semiring_hom.id + theorem is_semiring_hom.to_is_add_monoid_hom + theorem is_semiring_hom.to_is_monoid_hom + structure is_semiring_hom +/- theorem ring_hom.coe_of +/- def ring_hom.of + theorem ring_hom.to_is_ring_hom + theorem ring_hom.to_is_semiring_hom Modified src/deprecated/subfield.lean + theorem field.closure.is_subfield + theorem field.closure.is_submonoid +/- theorem field.closure_subset +/- theorem field.closure_subset_iff + theorem image.is_subfield + theorem is_subfield.Inter +/- theorem is_subfield.div_mem + theorem is_subfield.inter +/- theorem is_subfield.pow_mem + structure is_subfield + theorem preimage.is_subfield + theorem range.is_subfield + theorem univ.is_subfield Modified src/deprecated/subgroup.lean + theorem additive.is_normal_add_subgroup + theorem additive.is_normal_add_subgroup_iff - theorem additive.normal_add_subgroup - theorem additive.normal_add_subgroup_iff + theorem group.closure.is_subgroup +/- theorem group.closure_subgroup +/- theorem group.closure_subset +/- theorem group.closure_subset_iff +/- theorem group.conjugates_of_set_subset' +/- theorem group.conjugates_of_subset +/- theorem group.image_closure + theorem group.normal_closure.is_normal + theorem group.normal_closure.is_subgroup +/- theorem group.normal_closure_subset +/- theorem group.normal_closure_subset_iff - theorem is_add_subgroup.gsmul_coe + structure is_add_subgroup + theorem is_group_hom.image_subgroup +/- theorem is_group_hom.injective_iff_trivial_ker +/- theorem is_group_hom.injective_of_trivial_ker +/- theorem is_group_hom.inv_iff_ker' +/- theorem is_group_hom.inv_iff_ker +/- theorem is_group_hom.inv_ker_one' +/- theorem is_group_hom.inv_ker_one + theorem is_group_hom.is_normal_subgroup_ker +/- theorem is_group_hom.one_iff_ker_inv' +/- theorem is_group_hom.one_iff_ker_inv +/- theorem is_group_hom.one_ker_inv' +/- theorem is_group_hom.one_ker_inv + theorem is_group_hom.preimage + theorem is_group_hom.preimage_normal + theorem is_group_hom.range_subgroup +/- theorem is_group_hom.trivial_ker_iff_eq_one +/- theorem is_group_hom.trivial_ker_of_injective + structure is_normal_add_subgroup + structure is_normal_subgroup + theorem is_normal_subgroup_of_comm_group + theorem is_subgroup.Inter + theorem is_subgroup.center_normal - theorem is_subgroup.coe_gpow - theorem is_subgroup.coe_inv +/- theorem is_subgroup.div_mem +/- theorem is_subgroup.eq_trivial_iff + theorem is_subgroup.inter +/- theorem is_subgroup.mem_norm_comm +/- theorem is_subgroup.mem_norm_comm_iff + theorem is_subgroup.normalizer_is_subgroup +/- theorem is_subgroup.subset_normalizer + theorem is_subgroup.trivial_normal + theorem is_subgroup.univ_subgroup + structure is_subgroup - def monoid_hom.range_factorization - def monoid_hom.range_subtype_val + theorem multiplicative.is_normal_subgroup + theorem multiplicative.is_normal_subgroup_iff - theorem multiplicative.normal_subgroup - theorem multiplicative.normal_subgroup_iff - theorem normal_subgroup_of_comm_group + theorem subgroup.is_subgroup +/- def subgroup.of + theorem subgroup.of_normal - def subtype.comm_group - def subtype.group Modified src/deprecated/submonoid.lean - theorem image.is_submonoid +/- theorem is_add_submonoid.multiple_subset - theorem is_add_submonoid.smul_coe +/- theorem is_add_submonoid.smul_mem + structure is_add_submonoid + theorem is_submonoid.Inter - theorem is_submonoid.coe_mul - theorem is_submonoid.coe_one - theorem is_submonoid.coe_pow +/- theorem is_submonoid.finset_prod_mem + theorem is_submonoid.image + theorem is_submonoid.inter +/- theorem is_submonoid.list_prod_mem +/- theorem is_submonoid.multiset_prod_mem +/- theorem is_submonoid.pow_mem +/- theorem is_submonoid.power_subset + theorem is_submonoid.preimage + structure is_submonoid + theorem monoid.closure.is_submonoid +/- theorem monoid.closure_subset +/- theorem monoid.image_closure + theorem powers.is_submonoid + theorem range.is_submonoid + theorem submonoid.is_submonoid +/- def submonoid.of - def subtype.comm_monoid - def subtype.monoid + theorem univ.is_submonoid Modified src/deprecated/subring.lean + theorem is_subring.Inter - theorem is_subring.coe_subtype + theorem is_subring.inter + def is_subring.subring - def is_subring.subtype + structure is_subring + theorem ring.closure.is_subring +/- theorem ring.closure_subset +/- theorem ring.closure_subset_iff - def ring_hom.cod_restrict + theorem ring_hom.is_subring_image + theorem ring_hom.is_subring_preimage + theorem ring_hom.is_subring_set_range - def subring.domain - def subset.comm_ring - def subset.ring - def subtype.comm_ring - def subtype.ring Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/finite/polynomial.lean Modified src/field_theory/fixed.lean + def fixed_by.subfield +/- theorem fixed_points.dim_le_card +/- theorem fixed_points.finrank_le_card +/- theorem fixed_points.is_integral + theorem fixed_points.minpoly.eval₂' +/- theorem fixed_points.minpoly.eval₂ +/- theorem fixed_points.minpoly.irreducible_aux +/- theorem fixed_points.minpoly.of_eval₂ +/- def fixed_points.minpoly +/- theorem fixed_points.smul +/- theorem fixed_points.smul_polynomial + def fixed_points.subfield Modified src/field_theory/galois.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/subfield.lean + theorem subfield.to_subring.subtype_eq_subtype Modified src/group_theory/complement.lean Modified src/group_theory/free_abelian_group.lean + theorem free_abelian_group.is_add_group_hom_lift' + theorem free_abelian_group.is_add_group_hom_seq + def free_abelian_group.lift_add_group_hom Modified src/group_theory/monoid_localization.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean + def linear_map.automorphism_group.to_linear_map_monoid_hom + def linear_map.eval_add_monoid_hom + def linear_map.to_add_monoid_hom' Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.coe_det_monoid_hom + def matrix.det_monoid_hom Modified src/linear_algebra/sesquilinear_form.lean + def sesq_form.add_monoid_hom_right - theorem sesq_form.is_add_monoid_hom_left - theorem sesq_form.is_add_monoid_hom_right + def sesq_form.linear_map_left Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/order/filter/pointwise.lean +/- theorem filter.comap_mul_comap_le - theorem filter.map.is_monoid_hom + def filter.map_monoid_hom +/- theorem filter.tendsto.mul_mul Modified src/ring_theory/adjoin/basic.lean +/- theorem algebra.adjoin_int - theorem is_noetherian_ring_closure + theorem is_noetherian_subring_closure Modified src/ring_theory/adjoin_root.lean +/- def adjoin_root.of Modified src/ring_theory/derivation.lean +/- theorem derivation.map_add +/- theorem derivation.map_zero Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/free_comm_ring.lean + def free_ring.coe_ring_hom +/- def free_ring.of' Modified src/ring_theory/ideal/operations.lean +/- theorem ring_hom.ker_eq Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/integral_closure.lean +/- theorem is_integral_of_subring Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean +/- theorem polynomial.map_to_subring +/- def polynomial.restriction +/- def polynomial.to_subring Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/subring.lean - def set.to_subring Modified src/topology/algebra/group.lean - theorem nhds_is_mul_hom + def nhds_mul_hom Modified src/topology/algebra/group_completion.lean + theorem uniform_space.completion.is_add_group_hom_coe Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/uniform_group.lean +/- theorem add_comm_group.is_Z_bilin.comp_hom Modified src/topology/algebra/uniform_ring.lean 2021-08-01 11:40:51 9ed4380 feat(measure_theory/vector_measure): define the pullback and restriction of a vector measure (#8408) ESTIMATED CHANGES Modified src/measure_theory/vector_measure.lean + def measure_theory.vector_measure.map + theorem measure_theory.vector_measure.map_add + theorem measure_theory.vector_measure.map_apply + def measure_theory.vector_measure.map_gm + theorem measure_theory.vector_measure.map_id + theorem measure_theory.vector_measure.map_smul + theorem measure_theory.vector_measure.map_zero + def measure_theory.vector_measure.mapₗ + def measure_theory.vector_measure.restrict + theorem measure_theory.vector_measure.restrict_add + theorem measure_theory.vector_measure.restrict_apply + theorem measure_theory.vector_measure.restrict_empty + theorem measure_theory.vector_measure.restrict_eq_self + def measure_theory.vector_measure.restrict_gm + theorem measure_theory.vector_measure.restrict_smul + theorem measure_theory.vector_measure.restrict_univ + theorem measure_theory.vector_measure.restrict_zero + def measure_theory.vector_measure.restrictₗ 2021-08-01 09:36:34 5b9b455 chore(order/complete_lattice): generalize `Sup_eq_supr'`, add lemmas (#8484) * `Sup_eq_supr'` only needs `[has_Sup α]`, add `Inf_eq_infi'`; * add `supr_range'`, `infi_range'`, `Sup_image'`, `Inf_image'` lemmas that use supremum/infimum over subtypes and only require `[has_Sup]`/`[has_Inf]`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem Inf_eq_infi' + theorem Inf_image' +/- theorem Sup_eq_supr' + theorem Sup_image' + theorem infi_range' + theorem supr_range' 2021-08-01 09:36:33 de78d42 feat(order/rel_iso): add `equiv.to_order_iso` (#8482) Sometimes it's easier to show `monotone e` and `monotone e.symm` than `e x ≤ e y ↔ x ≤ y`. ESTIMATED CHANGES Modified src/order/rel_iso.lean + theorem equiv.coe_to_order_iso + def equiv.to_order_iso + theorem equiv.to_order_iso_to_equiv + theorem order_iso.symm_apply_le 2021-08-01 09:36:33 4f2006e chore(order/iterate): slightly generalize 2 lemmas (#8481) ESTIMATED CHANGES Modified src/order/iterate.lean + theorem monotone.iterate_comp_le_of_le + theorem monotone.le_iterate_comp_of_le 2021-08-01 08:34:12 2063a52 feat(order/partial_sups): complete lattice lemmas (#8480) ESTIMATED CHANGES Modified src/order/partial_sups.lean +/- theorem le_partial_sups + theorem le_partial_sups_of_le + theorem monotone.partial_sups_eq + def partial_sups.gi +/- def partial_sups - theorem partial_sups_eq + theorem partial_sups_eq_bsupr + theorem partial_sups_eq_sup'_range + theorem partial_sups_eq_sup_range +/- theorem partial_sups_le + theorem partial_sups_mono +/- theorem partial_sups_succ +/- theorem partial_sups_zero + theorem supr_eq_supr_of_partial_sups_eq_partial_sups + theorem supr_le_supr_of_partial_sups_le_partial_sups + theorem supr_partial_sups_eq 2021-08-01 03:28:41 79bc732 feat(order/galois_connection): formula for `upper_bounds (l '' s)` (#8478) * upgrade `galois_connection.upper_bounds_l_image_subset` and `galois_connection.lower_bounds_u_image` to equalities; * prove `bdd_above (l '' s) ↔ bdd_above s` and `bdd_below (u '' s) ↔ bdd_below s`; * move `galois_connection.dual` to the top and use it in some proofs; * use `order_iso.to_galois_connection` to transfer some of these results to `order_iso`s; * rename `rel_iso.to_galois_insertion` to `order_iso.to_galois_insertion`. ESTIMATED CHANGES Modified src/data/setoid/partition.lean - def setoid.partition.rel_iso Modified src/order/galois_connection.lean + theorem galois_connection.bdd_above_l_image + theorem galois_connection.bdd_below_u_image + theorem galois_connection.lower_bounds_u_image - theorem galois_connection.lower_bounds_u_image_subset + theorem galois_connection.upper_bounds_l_image - theorem galois_connection.upper_bounds_l_image_subset + theorem order_iso.bdd_above_image + theorem order_iso.bdd_below_image + theorem order_iso.lower_bounds_image + theorem order_iso.upper_bounds_image 2021-07-31 21:11:47 4c2edb0 feat(data/equiv/mul_add): add `units.coe_inv` (#8477) * rename old `units.coe_inv` to `units.coe_inv''`; * add new `@[simp, norm_cast, to_additive] lemma units.coe_inv` about coercion of units of a group; * add missing `coe_to_units`. ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem units.coe_inv'' - theorem units.coe_inv Modified src/data/equiv/mul_add.lean + theorem coe_to_units +/- def to_units + theorem units.coe_inv 2021-07-31 21:11:46 6c6dd04 feat(logic/relation): add `*.comap` for `reflexive`, `symmetric`, and `transitive` (#8469) ESTIMATED CHANGES Modified src/logic/relation.lean + theorem reflexive.comap + theorem symmetric.comap + theorem transitive.comap 2021-07-31 20:17:15 0827f3a feat(topology/metric_space/holder): add `holder_on_with` (#8454) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.tendsto_const_mul_rpow_nhds_zero_of_pos Modified src/topology/metric_space/holder.lean + theorem holder_on_with.comp + theorem holder_on_with.comp_holder_with + theorem holder_on_with.ediam_image_inter_le + theorem holder_on_with.ediam_image_inter_le_of_le + theorem holder_on_with.ediam_image_le + theorem holder_on_with.ediam_image_le_of_le + theorem holder_on_with.ediam_image_le_of_subset + theorem holder_on_with.ediam_image_le_of_subset_of_le + theorem holder_on_with.edist_le + theorem holder_on_with.edist_le_of_le + def holder_on_with + theorem holder_on_with_empty + theorem holder_on_with_one + theorem holder_on_with_singleton + theorem holder_on_with_univ + theorem holder_with.comp_holder_on_with + theorem set.subsingleton.holder_on_with Modified src/topology/metric_space/lipschitz.lean Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous_on_univ 2021-07-31 18:55:07 b3943dc feat(algebra/archimedean): `order_dual α` is archimedean (#8476) ESTIMATED CHANGES Modified src/algebra/archimedean.lean 2021-07-31 16:29:04 339a122 chore(data/sym): move `data.sym` and `data.sym2` to `data.sym.basic` and `data.sym.sym2` (#8471) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/matching.lean Modified src/data/fintype/basic.lean Renamed src/data/sym.lean to src/data/sym/basic.lean Renamed src/data/sym2.lean to src/data/sym/sym2.lean 2021-07-31 13:15:04 0a48016 doc(analysis/calculus/conformal): fix a docstring (#8479) Fix a grammar mistake ESTIMATED CHANGES Modified src/analysis/calculus/conformal.lean 2021-07-30 16:11:00 6e400b9 feat(data/matrix/basic): update_{column,row}_subsingleton (#8422) ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.update_column_subsingleton + theorem matrix.update_row_subsingleton 2021-07-30 12:33:57 977063f chore(group_theory/congruence): a few `simp` lemmas (#8452) * add `con.comap_rel`; * add `@[simp]` to `con.ker_rel`; * replace `con.comp_mk'_apply` with `con.coe_mk'`; * [unrelated] add `commute.semiconj_by`. ESTIMATED CHANGES Modified src/algebra/group/commute.lean Modified src/group_theory/congruence.lean + theorem con.coe_mk' + theorem con.comap_rel - theorem con.comp_mk'_apply 2021-07-30 07:20:29 98b0d18 feat(analysis/normed_space/SemiNormedGroup/kernel): Fix universes + add explicit (#8467) See associated discussion from [zulip](https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics/topic/for_mathlib/near/247575730) ESTIMATED CHANGES Modified src/analysis/normed_space/SemiNormedGroup/kernels.lean + def SemiNormedGroup.cokernel_cocone + def SemiNormedGroup.cokernel_lift + theorem SemiNormedGroup.comp_explicit_cokernel_π + def SemiNormedGroup.explicit_cokernel + def SemiNormedGroup.explicit_cokernel_desc + theorem SemiNormedGroup.explicit_cokernel_desc_norm_le + theorem SemiNormedGroup.explicit_cokernel_desc_norm_le_of_norm_le + theorem SemiNormedGroup.explicit_cokernel_desc_unique + theorem SemiNormedGroup.explicit_cokernel_hom_ext + def SemiNormedGroup.explicit_cokernel_iso + theorem SemiNormedGroup.explicit_cokernel_iso_hom_desc + theorem SemiNormedGroup.explicit_cokernel_iso_hom_π + theorem SemiNormedGroup.explicit_cokernel_iso_inv_π + def SemiNormedGroup.explicit_cokernel_π + theorem SemiNormedGroup.explicit_cokernel_π_desc + def SemiNormedGroup.is_colimit_cokernel_cocone + theorem SemiNormedGroup.is_quotient_explicit_cokernel_π + theorem SemiNormedGroup.norm_noninc_explicit_cokernel_π +/- def SemiNormedGroup₁.cokernel_cocone +/- def SemiNormedGroup₁.cokernel_lift 2021-07-30 02:40:20 8c89a52 feat(algebra/ordered_monoid_lemmas): add one `strict_mono` lemma and a few doc-strings (#8465) The product of strictly monotone functions is strictly monotone (and some doc-strings). [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/monotonicity.20for.20sums.20and.20products.20of.20monotone.20functions) ESTIMATED CHANGES Modified src/algebra/ordered_monoid_lemmas.lean + theorem strict_mono.mul' 2021-07-29 15:02:31 a4f1653 feat(ring_theory): Dedekind domains have invertible fractional ideals (#8396) This PR proves the other side of the equivalence `is_dedekind_domain → is_dedekind_domain_inv`, and uses this to provide a `comm_group_with_zero (fractional_ideal A⁰ K)` instance. Co-Authored-By: Ashvni ashvni.n@gmail.com Co-Authored-By: Filippo A. E. Nuccio filippo.nuccio@univ-st-etienne.fr ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean + theorem coe_ideal_le_self_mul_inv + theorem exists_multiset_prod_cons_le_and_prod_not_le + theorem fractional_ideal.coe_ideal_mul_inv + theorem fractional_ideal.exists_not_mem_one_of_ne_bot + theorem fractional_ideal.mul_inv_cancel + theorem fractional_ideal.mul_inv_cancel_of_le_one + theorem fractional_ideal.one_inv + theorem fractional_ideal.one_mem_inv_coe_ideal + theorem inv_anti_mono + theorem is_dedekind_domain_iff_is_dedekind_domain_inv + theorem le_self_mul_inv + theorem mem_inv_iff Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.eq_zero_or_one + theorem fractional_ideal.eq_zero_or_one_of_is_field 2021-07-29 13:21:06 69e3c79 feat(logic/unique): unique_of_subsingleton (#8415) ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/group_theory/perm/basic.lean Modified src/logic/unique.lean + def unique_of_subsingleton 2021-07-29 11:52:13 7a89150 doc(data/nat/pairing): fix ascii table markdown (#8460) ESTIMATED CHANGES Modified src/data/nat/pairing.lean 2021-07-29 06:51:42 cd6f272 feat(order/*): a bunch of lemmas about `order_iso` (#8451) ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/order/bounds.lean + theorem order_iso.is_glb_image + theorem order_iso.is_glb_preimage + theorem order_iso.is_lub_image + theorem order_iso.is_lub_preimage Modified src/order/rel_iso.lean + theorem order_iso.image_eq_preimage + theorem order_iso.image_preimage + theorem order_iso.image_symm_image + theorem order_iso.le_symm_apply + theorem order_iso.preimage_image + theorem order_iso.preimage_symm_preimage + theorem order_iso.symm_image_image + theorem order_iso.symm_preimage_preimage Modified src/order/semiconj_Sup.lean + theorem is_order_right_adjoint.comp_order_iso + theorem is_order_right_adjoint.order_iso_comp +/- theorem is_order_right_adjoint.right_mono - theorem is_order_right_adjoint.unique 2021-07-28 22:58:41 6d3e936 feat(measure_theory): add @[to_additive] (#8142) This PR adds `@[to_additive]` to `haar_measure` and everything that depends on. This will allow us to define the Lebesgue measure on `ℝ` and `ℝ ^ n` as the Haar measure (or just show that it is equal to it). ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/measure_theory/arithmetic.lean +/- theorem finset.ae_measurable_prod' +/- theorem finset.ae_measurable_prod +/- theorem finset.measurable_prod' +/- theorem finset.measurable_prod +/- theorem list.ae_measurable_prod' +/- theorem list.ae_measurable_prod +/- theorem list.measurable_prod' +/- theorem list.measurable_prod +/- theorem multiset.ae_measurable_prod' +/- theorem multiset.ae_measurable_prod +/- theorem multiset.measurable_prod' +/- theorem multiset.measurable_prod Modified src/measure_theory/conditional_expectation.lean Modified src/measure_theory/content.lean Modified src/measure_theory/group.lean Modified src/measure_theory/haar_measure.lean +/- theorem measure_theory.measure.haar.mem_prehaar_empty + theorem measure_theory.measure.regular_of_is_mul_left_invariant - theorem measure_theory.measure.regular_of_left_invariant Modified src/measure_theory/lp_space.lean +/- theorem measure_theory.snorm'_const_smul Modified src/measure_theory/prod_group.lean Modified src/topology/algebra/group.lean 2021-07-28 21:04:18 870b9d8 ci(bors.toml): add merge-conflict to block_labels (#8455) ESTIMATED CHANGES Modified bors.toml 2021-07-28 21:04:17 92a5be8 feat(ring,group,monoid): map_equiv lemmas for different structures (#8453) There is some inconsistency in the statements of these lemmas because there is a coercion from `ring_equiv` to `ring_hom`, but not `mul_equiv` to `monoid_hom`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem set.image_equiv_eq_preimage_symm + theorem set.mem_image_equiv + theorem set.preimage_equiv_eq_image_symm Modified src/group_theory/subgroup.lean + theorem subgroup.comap_equiv_eq_map_symm + theorem subgroup.map_equiv_eq_comap_symm + theorem subgroup.mem_map_equiv Modified src/group_theory/submonoid/operations.lean + theorem submonoid.comap_equiv_eq_map_symm + theorem submonoid.map_equiv_eq_comap_symm + theorem submonoid.mem_map_equiv Modified src/linear_algebra/basic.lean + theorem submodule.comap_equiv_eq_map_symm + theorem submodule.map_equiv_eq_comap_symm Modified src/ring_theory/subring.lean + theorem subring.comap_equiv_eq_map_symm + theorem subring.map_equiv_eq_comap_symm + theorem subring.mem_map_equiv Modified src/ring_theory/subsemiring.lean + theorem subsemiring.comap_equiv_eq_map_symm + theorem subsemiring.map_equiv_eq_comap_symm + theorem subsemiring.mem_map_equiv 2021-07-28 19:44:39 7180d2f feat(group_theory/coset): Show that `quotient_group.left_rel` and `left_coset_equivalence` are the same thing (#8382) ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem left_coset_eq_iff +/- def quotient_group.left_rel + theorem quotient_group.left_rel_r_eq_left_coset_equivalence +/- def quotient_group.quotient +/- def quotient_group.right_rel + theorem quotient_group.right_rel_r_eq_right_coset_equivalence + theorem right_coset_eq_iff 2021-07-28 17:10:49 32c8227 feat(analysis/normed_space/basic): define inclusion `locally_constant X G → C(X, G)` as various types of bundled morphism (#8448) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + def locally_constant.to_continuous_map_alg_hom + def locally_constant.to_continuous_map_linear_map + def locally_constant.to_continuous_map_monoid_hom Modified src/topology/locally_constant/algebra.lean + theorem locally_constant.coe_algebra_map + def locally_constant.const_monoid_hom + def locally_constant.const_ring_hom Modified src/topology/locally_constant/basic.lean + theorem locally_constant.coe_const 2021-07-28 14:08:17 b71d38c feat(algebra/big_operators/basic): add lemmas about prod and sum of finset.erase (#8449) This adds: * `finset.prod_erase_mul` * `finset.mul_prod_erase` * `finset.sum_erase_add` * `finset.add_sum_erase` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.mul_prod_erase + theorem finset.prod_erase_mul 2021-07-28 14:08:16 0ccd2f6 feat(data/dfinsupp): add simp lemma `single_eq_zero` (#8447) This matches `finsupp.single_eq_zero`. Also adds `dfinsupp.ext_iff`, and changes some lemma arguments to be explicit. ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.ext_iff +/- theorem dfinsupp.single_add + theorem dfinsupp.single_eq_zero +/- theorem dfinsupp.single_zero 2021-07-28 11:16:48 4acfa92 chore(algebra/floor): add a few trivial `simp` lemmas about `floor` (#8450) ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem floor_add_nat + theorem floor_int_add +/- theorem floor_mono + theorem floor_nat_add +/- theorem floor_sub_int + theorem floor_sub_nat 2021-07-28 09:02:05 30ff935 feat(topology/algebra): topological fields (#8316) Including the completion of completeable topological fields. From the perfectoid spaces project. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.comap_comm + theorem filter.map_comm Modified src/topology/algebra/field.lean + theorem topological_division_ring.continuous_units_inv + theorem topological_division_ring.units_top_group + theorem topological_ring.induced_units.continuous_coe + def topological_ring.topological_space_units + theorem topological_ring.units_embedding + theorem topological_ring.units_topology_eq Added src/topology/algebra/uniform_field.lean + theorem coe_inv + theorem continuous_hat_inv + def hat_inv + theorem hat_inv_extends + theorem mul_hat_inv_cancel Modified src/topology/basic.lean + theorem mem_closure_image + theorem mem_closure_of_mem_closure_union Modified src/topology/constructions.lean + theorem prod_induced_induced 2021-07-28 02:23:58 52e6e4c chore(scripts): update nolints.txt (#8446) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2021-07-28 00:40:18 7c5fa72 refactor(group_theory/sylow): Extract a lemma from the proof of Cauchy's theorem (#8376) Also added one other consequence of card_modeq_card_fixed_points. ESTIMATED CHANGES Modified src/group_theory/sylow.lean + theorem mul_action.exists_fixed_point_of_prime_dvd_card_of_fixed_point + theorem mul_action.nonempty_fixed_point_of_prime_not_dvd_card 2021-07-28 00:40:17 37fc4cf feat(group_theory/subgroup): equiv_map_of_injective (#8371) Also for rings and submonoids. The version for modules, `submodule.equiv_map_of_injective`, was already there. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.coe_equiv_map_of_injective_apply Modified src/group_theory/submonoid/operations.lean + theorem submonoid.coe_equiv_map_of_injective_apply Modified src/linear_algebra/basic.lean + theorem submodule.coe_equiv_map_of_injective_apply Modified src/ring_theory/subring.lean + theorem subring.coe_equiv_map_of_injective_apply Modified src/ring_theory/subsemiring.lean + theorem subsemiring.coe_equiv_map_of_injective_apply 2021-07-27 23:02:33 cc7627a feat(analysis/normed_space/basic): define `normed_group` structure induced by injective group homomorphism (#8443) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + def normed_group.induced + def semi_normed_group.induced 2021-07-27 23:02:32 1b0391a feat(data/nat/totient): totient_mul (#8441) Also made `data/nat/totient` import `data/zmod/basic` instead of the other way round because I think people are more likely to want `zmod` but not `totient` than `totient` but not `zmod`. Also deleted the deprecated `gpowers` because it caused a name clash in `group_theory/subgroup` when the imports were changed. ESTIMATED CHANGES Modified src/data/nat/totient.lean + theorem nat.totient_mul + theorem zmod.card_units_eq_totient Modified src/data/zmod/basic.lean - theorem zmod.card_units_eq_totient Modified src/deprecated/subgroup.lean - def gmultiples - theorem gmultiples_subset - def gpowers - theorem gpowers_subset - theorem group.gpowers_eq_closure - theorem is_add_subgroup.gsmul_mem - theorem is_subgroup.gpow_mem - theorem mem_gmultiples - theorem mem_gpowers Modified src/linear_algebra/free_module_pid.lean 2021-07-27 23:02:31 a445c45 feat(measure_theory/interval_integrable): a monotone function is interval integrable (#8398) ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integrable_of_antimono + theorem interval_integrable_of_antimono_on + theorem interval_integrable_of_monotone + theorem interval_integrable_of_monotone_on 2021-07-27 19:34:42 9f75dc8 feat(measure_theory/lebesgue_measure): volume s ≤ diam s (#8437) * for `s : set real`, `volume s ≤ diam s`; * for `s : set (ι → real)`, `volume s ≤ ∏ i, diam (eval i '' s) ≤ diam s ^ fintype.card ι`. ESTIMATED CHANGES Modified src/measure_theory/lebesgue_measure.lean + theorem real.volume_le_diam + theorem real.volume_pi_le_diam_pow + theorem real.volume_pi_le_prod_diam Modified src/topology/metric_space/basic.lean + theorem metric.ediam_of_unbounded Modified src/topology/metric_space/emetric_space.lean + theorem edist_le_pi_edist Modified src/topology/metric_space/lipschitz.lean 2021-07-27 19:34:41 5375918 feat(topology/metric_space/antilipschitz): ediam of image/preimage (#8435) Also review API ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.div_le_of_le_mul' + theorem ennreal.mul_le_of_le_div' + theorem ennreal.mul_le_of_le_div Modified src/data/real/nnreal.lean + theorem nnreal.div_le_of_le_mul' + theorem nnreal.div_le_of_le_mul Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.ediam_preimage_le + theorem antilipschitz_with.le_mul_ediam_image +/- theorem antilipschitz_with.mul_le_dist + theorem antilipschitz_with.mul_le_nndist +/- theorem antilipschitz_with_iff_le_mul_dist + theorem antilipschitz_with_iff_le_mul_nndist 2021-07-27 19:34:40 d57b6f9 chore(data/dfinsupp): add yet more map_dfinsupp_sum lemmas (#8400) As always, the one of quadratically many combinations of `FOO_hom.map_BAR_sum` is never there when you need it. ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem add_equiv.map_dfinsupp_sum_add_hom +/- theorem add_monoid_hom.coe_dfinsupp_sum_add_hom +/- theorem add_monoid_hom.dfinsupp_sum_add_hom_apply +/- theorem add_monoid_hom.map_dfinsupp_sum_add_hom +/- theorem dfinsupp.prod_sum_index + theorem mul_equiv.map_dfinsupp_prod + theorem ring_hom.map_dfinsupp_prod + theorem ring_hom.map_dfinsupp_sum + theorem ring_hom.map_dfinsupp_sum_add_hom Modified src/linear_algebra/basic.lean + theorem linear_equiv.map_dfinsupp_sum + theorem linear_equiv.map_dfinsupp_sum_add_hom + theorem linear_equiv.map_finsupp_sum + theorem linear_map.map_dfinsupp_sum_add_hom 2021-07-27 19:34:39 aea21af feat(ring_theory): `is_dedekind_domain_inv` implies `is_dedekind_domain` (#8315) Co-Authored-By: Ashvni ashvni.n@gmail.com Co-Authored-By: Filippo A. E. Nuccio filippo.nuccio@univ-st-etienne.fr ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean + theorem fractional_ideal.adjoin_integral_eq_one_of_is_unit + theorem is_dedekind_domain_inv.dimension_le_one + theorem is_dedekind_domain_inv.integrally_closed + theorem is_dedekind_domain_inv.inv_mul_eq_one + theorem is_dedekind_domain_inv.is_dedekind_domain + theorem is_dedekind_domain_inv.is_noetherian_ring + theorem is_dedekind_domain_inv.mul_inv_eq_one +/- theorem is_dedekind_domain_inv_iff + theorem mul_inv_cancel_iff_is_unit Modified src/ring_theory/fractional_ideal.lean +/- theorem fractional_ideal.mem_coe + theorem fractional_ideal.mem_coe_ideal_of_mem Modified src/ring_theory/principal_ideal_domain.lean + theorem is_field.is_principal_ideal_ring 2021-07-27 19:34:38 a052dd6 doc(algebra/invertible): implementation notes about `invertible` instances (#8197) In the discussion on #8195, I suggested to add these implementation notes. Creating a new PR should allow for a bit more direct discussion on the use of and plans for `invertible`. ESTIMATED CHANGES Modified src/algebra/invertible.lean 2021-07-27 19:34:37 2ea73d1 feat(analysis/normed_space/SemiNormedGroup): has_cokernels (#7628) # Cokernels in SemiNormedGroup₁ and SemiNormedGroup We show that `SemiNormedGroup₁` has cokernels (for which of course the `cokernel.π f` maps are norm non-increasing), as well as the easier result that `SemiNormedGroup` has cokernels. So far, I don't see a way to state nicely what we really want: `SemiNormedGroup` has cokernels, and `cokernel.π f` is norm non-increasing. The problem is that the limits API doesn't promise you any particular model of the cokernel, and in `SemiNormedGroup` one can always take a cokernel and rescale its norm (and hence making `cokernel.π f` arbitrarily large in norm), obtaining another categorical cokernel. ESTIMATED CHANGES Added src/analysis/normed_space/SemiNormedGroup/kernels.lean + def SemiNormedGroup₁.cokernel_cocone + def SemiNormedGroup₁.cokernel_lift Modified src/analysis/normed_space/normed_group_quotient.lean +/- theorem normed_group_hom.lift_mk + theorem normed_group_hom.lift_norm_le + theorem normed_group_hom.lift_norm_noninc 2021-07-27 16:37:38 768980a feat(topology/locally_constant/basic): coercion of locally-constant function to continuous map (#8444) ESTIMATED CHANGES Modified src/topology/locally_constant/basic.lean + theorem locally_constant.coe_continuous_map + def locally_constant.to_continuous_map + theorem locally_constant.to_continuous_map_eq_coe + theorem locally_constant.to_continuous_map_injective 2021-07-27 16:37:36 3faee06 feat(algebra/order_functions): max/min commutative and other props (#8416) The statements of the commutivity, associativity, and left commutativity of min and max are stated only in the rewrite lemmas, and not in their "commutative" synonyms. This prevents them from being discoverable by suggest and related tactics. We now provide the synonyms explicitly. ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem max_associative + theorem max_commutative + theorem max_left_commutative + theorem min_associative + theorem min_commutative + theorem min_left_commutative 2021-07-27 16:37:35 6c2f80c feat(category_theory/limits): disjoint coproducts (#8380) Towards a more detailed hierarchy of categorical properties. ESTIMATED CHANGES Added src/category_theory/limits/shapes/disjoint_coproduct.lean + theorem category_theory.limits.initial_mono_class_of_disjoint_coproducts + def category_theory.limits.is_initial_of_is_pullback_of_is_coproduct 2021-07-27 16:37:34 bb44e1a feat(category_theory/subobject): generalise bot of subobject lattice (#8232) ESTIMATED CHANGES Modified src/algebra/homology/homology.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/limits/shapes/zero.lean - theorem category_theory.limits.has_zero_object.has_initial - theorem category_theory.limits.has_zero_object.has_terminal + def category_theory.limits.has_zero_object.zero_is_initial + def category_theory.limits.has_zero_object.zero_is_terminal + def category_theory.limits.has_zero_object_of_has_initial_object + def category_theory.limits.has_zero_object_of_has_terminal_object Modified src/category_theory/subobject/factor_thru.lean +/- def category_theory.mono_over.factor_thru +/- def category_theory.mono_over.factors Modified src/category_theory/subobject/lattice.lean +/- theorem category_theory.mono_over.bot_arrow + theorem category_theory.mono_over.bot_arrow_eq_zero + def category_theory.mono_over.bot_coe_iso_zero +/- theorem category_theory.mono_over.bot_left + def category_theory.subobject.bot_coe_iso_initial +/- def category_theory.subobject.bot_coe_iso_zero + theorem category_theory.subobject.bot_eq_initial_to +/- theorem category_theory.subobject.bot_eq_zero Modified src/category_theory/subobject/limits.lean +/- theorem category_theory.limits.image_subobject_zero +/- theorem category_theory.limits.image_subobject_zero_arrow 2021-07-27 13:18:35 b61ce02 feat(number_theory/padics/padic_norm): add p^v(n) | n (#8442) Add some API for `padic_val_nat` (a convenient function for e.g. Sylow theory). ESTIMATED CHANGES Modified src/number_theory/padics/padic_norm.lean + theorem pow_padic_val_nat_dvd + theorem pow_succ_padic_val_nat_not_dvd Modified src/ring_theory/multiplicity.lean + theorem multiplicity.lt_top_iff_finite + theorem multiplicity.ne_top_iff_finite 2021-07-27 10:18:45 7ae8da4 fix(algebra/big_operators/ring): `finset.sum_mul_sum` is true in a non-assoc non-unital semiring (#8436) ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean 2021-07-27 10:18:44 3b590f3 feat(logic/embedding): add a coe instance from equiv to embeddings (#8323) ESTIMATED CHANGES Modified src/logic/embedding.lean +/- def equiv.as_embedding + theorem equiv.coe_eq_to_embedding Added test/equiv.lean + def f + def s 2021-07-27 08:42:12 23e7c84 fix(algebra/ordered_group): add missing `to_additive`, fix `simps` (#8429) * Add `order_iso.add_left` and `order_iso.add_right`. * Use `to_equiv :=` instead of `..` to ensure `rfl : (order_iso.mul_right a).to_equiv = equiv.mul_right a`. * Simplify unapplied `(order_iso.mul_left a).symm` etc. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem order_iso.mul_left_symm + theorem order_iso.mul_right_symm 2021-07-27 08:42:11 391746b feat(data/zmod/basic): chinese remainder theorem (#8356) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean Modified src/algebra/ring/prod.lean + def ring_equiv.prod_zero_ring + def ring_equiv.zero_ring_prod Modified src/data/fintype/basic.lean + theorem fintype.left_inverse_of_right_inverse_of_card_le + theorem fintype.right_inverse_of_left_inverse_of_card_le Modified src/data/int/cast.lean + theorem prod.fst_int_cast + theorem prod.snd_int_cast Modified src/data/nat/cast.lean + theorem prod.fst_nat_cast + theorem prod.snd_nat_cast Modified src/data/nat/gcd.lean + theorem nat.coprime.eq_of_mul_eq_zero + theorem nat.lcm_dvd_iff Modified src/data/zmod/basic.lean + theorem prod.fst_zmod_cast + theorem prod.snd_zmod_cast +/- theorem zmod.card + def zmod.chinese_remainder 2021-07-27 08:42:10 65006d2 feat(linear_algebra/linear_independent): finsupp.total is not equal to a vector outside the support of the coefficients (#8338) … ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean + theorem finsupp.mem_supported_support Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.not_mem_span_image + theorem linear_independent.total_ne_of_not_mem_support 2021-07-27 08:42:09 7e37f20 feat(group_theory/perm/cycles): more lemmas (#8175) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem nsmul_inj_mod + theorem order_of_eq_zero_iff + theorem pow_inj_iff_of_order_of_eq_zero + theorem pow_inj_mod Modified src/group_theory/perm/cycles.lean +/- theorem equiv.perm.cycle_factors_finset_eq_empty_iff +/- theorem equiv.perm.cycle_factors_finset_eq_singleton_iff +/- theorem equiv.perm.cycle_factors_finset_eq_singleton_self_iff + theorem equiv.perm.cycle_factors_finset_mul_inv_mem_eq_sdiff +/- theorem equiv.perm.cycle_factors_finset_noncomm_prod + theorem equiv.perm.cycle_factors_finset_one + theorem equiv.perm.cycle_of_apply_apply_gpow_self + theorem equiv.perm.cycle_of_apply_apply_pow_self + theorem equiv.perm.cycle_of_apply_apply_self + theorem equiv.perm.cycle_of_mem_cycle_factors_finset_iff + theorem equiv.perm.cycle_of_mul_of_apply_right_eq_self + theorem equiv.perm.disjoint.cycle_factors_finset_mul_eq_union + theorem equiv.perm.disjoint.cycle_of_mul_distrib + theorem equiv.perm.disjoint.disjoint_cycle_factors_finset + theorem equiv.perm.disjoint_mul_inv_of_mem_cycle_factors_finset + theorem equiv.perm.is_cycle.cycle_factors_finset_eq_singleton + theorem equiv.perm.is_cycle.exists_pow_eq_one + theorem equiv.perm.is_cycle.is_cycle_pow_pos_of_lt_prime_order + theorem equiv.perm.is_cycle.mem_support_pos_pow_iff_of_lt_order_of + theorem equiv.perm.is_cycle.pow_eq_one_iff + theorem equiv.perm.is_cycle.pow_iff + theorem equiv.perm.is_cycle.support_pow_eq_iff + theorem equiv.perm.is_cycle_of_is_cycle_pow + theorem equiv.perm.mem_cycle_factors_finset_support_le + theorem equiv.perm.mem_support_cycle_of_iff + theorem equiv.perm.nodup_of_pairwise_disjoint_cycles + theorem equiv.perm.not_is_cycle_one + theorem equiv.perm.pow_apply_eq_pow_mod_order_of_cycle_of_apply + theorem equiv.perm.same_cycle.nat'' + theorem equiv.perm.same_cycle.nat' + theorem equiv.perm.same_cycle.nat + theorem equiv.perm.same_cycle.nat_of_mem_support + theorem equiv.perm.same_cycle_pow_left_iff + theorem equiv.perm.support_cycle_of_eq_nil_iff Modified src/group_theory/perm/support.lean + theorem equiv.perm.disjoint.mono 2021-07-27 07:49:28 d99788a feat(measure_theory/borel_space): lemmas about `is_pi_system_Ioo` and `finite_spanning_sets_in` (#8434) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem is_pi_system_Ioo + theorem is_pi_system_Ioo_mem + def real.finite_spanning_sets_in_Ioo_rat + theorem real.is_pi_system_Ioo_rat 2021-07-27 07:49:27 eae3ead feat(topology/instances/ennreal): diameter of `s : set real` (#8433) ESTIMATED CHANGES Modified src/data/real/basic.lean +/- theorem real.Inf_empty + theorem real.Inf_le_Sup +/- theorem real.Sup_empty + theorem real.add_neg_lt_Sup - theorem real.add_pos_lt_Sup Modified src/topology/instances/ennreal.lean + theorem metric.diam_closure + theorem real.diam_eq + theorem real.ediam_eq Modified src/topology/instances/real.lean + theorem real.subset_Icc_Inf_Sup_of_bounded Modified src/topology/metric_space/basic.lean 2021-07-27 06:14:26 fb815d7 feat(algebra/ring/basic): coercions of ring_hom.id (#8439) Two basic lemmas about the identity map as a ring hom, split off from #3292 at @eric-wieser's suggestion. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring_hom.coe_add_monoid_hom_id + theorem ring_hom.coe_monoid_hom_id 2021-07-26 23:52:54 e9309e3 chore(data/equiv/list): rename `encodable.fintype.encodable` to `fintype.encodable` (#8428) ESTIMATED CHANGES Modified src/data/equiv/list.lean Modified src/measure_theory/measure_space.lean 2021-07-26 22:05:39 26528b7 chore(data/set): add a couple of lemmas (#8430) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton.preimage Modified src/data/set/lattice.lean + theorem set.image_bUnion 2021-07-26 15:58:30 0190177 feat(group_theory/subgroup): eq_top_of_le_card and eq_bot_of_card_le (#8414) Slight strengthenings of the lemmas `eq_top_of_card_eq` and `eq_bot_of_card_eq`. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.eq_bot_of_card_le + theorem subgroup.eq_top_of_le_card 2021-07-26 15:58:29 d8fc081 chore(data/pnat/basic): rename `bot_eq_zero` to `bot_eq_one`, generalize from `Prop` to `Sort*` (#8412) ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.bot_eq_one - theorem pnat.bot_eq_zero + def pnat.case_strong_induction_on - theorem pnat.case_strong_induction_on +/- theorem pnat.coe_le_coe +/- theorem pnat.coe_lt_coe +/- theorem pnat.exists_eq_succ_of_ne_one +/- theorem pnat.ne_zero +/- def pnat.rec_on +/- theorem pnat.rec_on_succ + def pnat.strong_induction_on - theorem pnat.strong_induction_on 2021-07-26 15:58:28 1dc4bef feat(ring_theory): shortcut lemmas for `coe : ideal R → fractional_ideal R⁰ K` (#8395) These results were already available, but in a less convenient form that e.g. asked you to prove an inclusion of submonoids `S ≤ R⁰`. Specializing them to the common case where the fractional ideal is in the field of fractions should save a bit of headache in the common cases. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_ideal_eq_zero_iff + theorem fractional_ideal.coe_ideal_injective + theorem fractional_ideal.coe_ideal_le_coe_ideal' + theorem fractional_ideal.coe_ideal_le_coe_ideal + theorem fractional_ideal.coe_ideal_ne_zero + theorem fractional_ideal.coe_ideal_ne_zero_iff 2021-07-26 15:58:27 708b25d feat(ring_theory): (fractional) ideals are finitely generated if they are invertible (#8294) This is one of the three steps in showing `is_dedekind_domain_inv` implies `is_dedekind_domain`. Co-Authored-By: Ashvni ashvni.n@gmail.com Co-Authored-By: Filippo A. E. Nuccio filippo.nuccio@univ-st-etienne.fr ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.coe_ideal_fg + theorem fractional_ideal.fg_of_is_unit + theorem fractional_ideal.fg_unit + theorem fractional_ideal.mem_span_mul_finite_of_mem_mul + theorem ideal.fg_of_is_unit Modified src/ring_theory/localization.lean + theorem is_localization.coe_submodule_fg 2021-07-26 14:30:57 4ca0a8b feat(data/fintype/basic): provide a `fintype` instance for `sym α n` (#8427) This also provides `fintype (sym.sym' α n)` as an intermediate step. Note we make `vector.perm.is_setoid` reducible as `quotient.fintype _` requires either this or `local attribute [instance] vector.perm.is_setoid` to be accepted by the elaborator. The referenced library note suggests making it reducible is fine. ESTIMATED CHANGES Modified src/data/fintype/basic.lean Modified src/data/sym.lean 2021-07-26 07:37:51 740b41b feat(data/fintype/basic): add `finset.(sup|inf)_univ_eq_(supr|infi)` (#8397) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.inf_univ_eq_infi + theorem finset.sup_univ_eq_supr 2021-07-25 15:51:33 0c024a6 chore(*): standardize Prop/Type instance names (#8360) autogenerated names for these instances mention `sort.` instead of `Prop.` ESTIMATED CHANGES Modified src/category_theory/preadditive/projective.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/tactic/has_variable_names.lean Modified src/testing/slim_check/sampleable.lean 2021-07-25 15:12:53 2440330 feat(linear_algebra/matrix/determinant): det_pow (#8421) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_pow 2021-07-25 07:06:29 fff96e5 feat(measure_theory/vector_measure): add partial order instance to vector measures (#8410) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean Modified src/measure_theory/vector_measure.lean + theorem measure_theory.vector_measure.le_iff' + theorem measure_theory.vector_measure.le_iff 2021-07-24 22:55:28 02b37b5 feat(group_theory/subgroup): eq_bot_of_card_eq (#8413) Companion lemma to `eq_top_of_card_eq`. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.eq_bot_of_card_eq 2021-07-24 15:30:35 8a0d5e0 feat(group_theory/complement): define subgroup complement, prove Schur-Zassenhaus (#8008) Defines complements, and proves Schur-Zassenhaus for abelian normal subgroups. ESTIMATED CHANGES Added src/group_theory/complement.lean + theorem subgroup.diff_inv + theorem subgroup.diff_mul_diff + theorem subgroup.diff_self + theorem subgroup.exists_left_complement_of_coprime + theorem subgroup.exists_right_complement_of_coprime + theorem subgroup.exists_smul_eq + theorem subgroup.is_complement.exists_unique + theorem subgroup.is_complement.symm + def subgroup.is_complement + theorem subgroup.is_complement_comm + theorem subgroup.is_complement_iff_exists_unique + theorem subgroup.is_complement_of_coprime + theorem subgroup.is_complement_of_disjoint + theorem subgroup.is_complement_stabilizer_of_coprime + def subgroup.left_transversals + theorem subgroup.mem_left_transversals_iff_bijective + theorem subgroup.mem_left_transversals_iff_exists_unique_inv_mul_mem + theorem subgroup.mem_left_transversals_iff_exists_unique_quotient_mk'_eq + theorem subgroup.mem_right_transversals_iff_bijective + theorem subgroup.mem_right_transversals_iff_exists_unique_mul_inv_mem + theorem subgroup.mem_right_transversals_iff_exists_unique_quotient_mk'_eq + def subgroup.quotient_diff + def subgroup.right_transversals + theorem subgroup.smul_diff + theorem subgroup.smul_diff_smul + theorem subgroup.smul_injective + theorem subgroup.smul_symm_apply_eq_mul_symm_apply_inv_smul Modified src/group_theory/order_of_element.lean + theorem inf_eq_bot_of_coprime Modified src/group_theory/subgroup.lean + structure add_subgroup.is_commutative + structure subgroup.is_commutative 2021-07-24 14:21:11 3d11f2d refactor(data/set/disjointed): split into `data.set.pairwise` and `order.disjointed` (#8411) ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/algebra/big_operators/finprod.lean Modified src/data/equiv/encodable/lattice.lean Modified src/data/mv_polynomial/variables.lean Added src/data/set/pairwise.lean + theorem pairwise.mono + theorem pairwise.pairwise_on + def pairwise + theorem pairwise_disjoint_fiber + theorem pairwise_disjoint_on_bool + theorem pairwise_disjoint_on_nat + theorem pairwise_on_bool + theorem pairwise_on_nat + theorem set.pairwise_on.on_injective + theorem set.pairwise_on_univ Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measurable_space_def.lean Renamed src/data/set/disjointed.lean to src/order/disjointed.lean - theorem pairwise.mono - theorem pairwise.pairwise_on - def pairwise - theorem pairwise_disjoint_fiber - theorem pairwise_disjoint_on_bool - theorem pairwise_disjoint_on_nat - theorem pairwise_on_bool - theorem pairwise_on_nat - theorem set.pairwise_on.on_injective - theorem set.pairwise_on_univ Modified src/order/partial_sups.lean Modified src/ring_theory/coprime.lean Modified src/topology/algebra/ordered/basic.lean 2021-07-23 17:15:08 dfa95ab feat(analysis/normed_space/linear_isometry): add an upgrade from linear isometries between finite dimensional spaces of eq finrank to linear isometry equivs (#8406) ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.coe_to_linear_isometry_equiv + theorem linear_isometry.to_linear_isometry_equiv_apply 2021-07-23 11:58:54 8062521 feat(topology/locally_constant): Adding a module structure to locally constant functions (#8384) We add an A-module structure to locally constant functions from a topological space to a semiring A. This also adds the lemmas `coe_zero`, `coe_add`, `coe_neg`, `coe_sub`, `coe_one`, `coe_mul`, `coe_div`, `coe_inv` to match the new `coe_smul` lemma. ESTIMATED CHANGES Modified src/topology/locally_constant/algebra.lean + theorem locally_constant.coe_div + def locally_constant.coe_fn_monoid_hom + theorem locally_constant.coe_inv + theorem locally_constant.coe_mul + theorem locally_constant.coe_one + theorem locally_constant.coe_smul +/- theorem locally_constant.inv_apply +/- theorem locally_constant.mul_apply +/- theorem locally_constant.one_apply + theorem locally_constant.smul_apply 2021-07-23 10:09:40 f2f6228 feat(set/basic): range_splitting f : range f → α (#8340) We use choice to provide an arbitrary injective splitting `range f → α` for any `f : α → β`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.apply_range_splitting + theorem set.comp_range_splitting + theorem set.left_inverse_range_splitting + theorem set.range_factorization_coe + theorem set.range_splitting_injective 2021-07-23 09:02:53 6efc3e9 fix(data/polynomial): Resolve a has_scalar instance diamond (#8392) Without this change, the following fails to close the diamond between `units.distrib_mul_action` and`polynomial.distrib_mul_action`: ```lean example (R α : Type*) (β : α → Type*) [monoid R] [semiring α] [distrib_mul_action R α] : (units.distrib_mul_action : distrib_mul_action (units R) (polynomial α)) = polynomial.distrib_mul_action := rfl ``` This was because both used `polynomial.smul`, which was: * `@[irreducible]`, which means that typeclass search is unable to unfold it to see there is no diamond * Defined using a pattern match, which means that even if it were not reducible, it does not unfold as needed. This adds a new test file with this diamond and some other diamonds to verify they are defeq. Unfortunately this means `simps` now aggressively unfolds `•` on polynomials into `finsupp`s, so we need to tell `simps` precisely what lemma we actually want. This only happens in one place though. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/units.2Ehas_scalar.20and.20polynomial.2Ehas_scalar.20diamond/near/246800881) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean Modified src/ring_theory/polynomial_algebra.lean Added test/instance_diamonds.lean 2021-07-23 09:02:52 ced1f12 feat(analysis/calculus): strictly differentiable (or C^1) map is locally Lipschitz (#8362) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem has_strict_fderiv_at.exists_lipschitz_on_with + theorem has_strict_fderiv_at.exists_lipschitz_on_with_of_nnnorm_lt Modified src/analysis/calculus/mean_value.lean + theorem convex.exists_nhds_within_lipschitz_on_with_of_has_fderiv_within_at - theorem convex.exists_nhds_within_lipschitz_on_with_of_has_fderiv_within_at_of_continuous_within_at + theorem convex.exists_nhds_within_lipschitz_on_with_of_has_fderiv_within_at_of_nnnorm_lt Modified src/analysis/calculus/times_cont_diff.lean + theorem has_ftaylor_series_up_to_on.exists_lipschitz_on_with + theorem has_ftaylor_series_up_to_on.exists_lipschitz_on_with_of_nnnorm_lt + theorem times_cont_diff_at.exists_lipschitz_on_with + theorem times_cont_diff_at.exists_lipschitz_on_with_of_nnnorm_lt + theorem times_cont_diff_within_at.exists_lipschitz_on_with Modified src/analysis/normed_space/basic.lean +/- theorem add_monoid_hom.lipschitz_of_bound + theorem add_monoid_hom.lipschitz_of_bound_nnnorm + theorem lipschitz_with_iff_norm_sub_le Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.is_O_with_comp + theorem continuous_linear_map.is_O_with_id + theorem continuous_linear_map.is_O_with_sub + theorem continuous_linear_map.le_op_nnnorm +/- theorem continuous_linear_map.lipschitz + theorem linear_map.lipschitz_of_bound_nnnorm 2021-07-23 09:02:51 1dafd0f feat(measure_theory/integrable_on): a monotone function is integrable on any compact subset (#8336) ESTIMATED CHANGES Modified src/measure_theory/integrable_on.lean + theorem integrable_on_compact_of_antimono + theorem integrable_on_compact_of_antimono_on + theorem integrable_on_compact_of_monotone + theorem integrable_on_compact_of_monotone_on 2021-07-23 08:09:01 970b17b refactor(topology/metric_space): move lemmas about `paracompact_space` and the shrinking lemma to separate files (#8404) Only a few files in `mathlib` actually depend on results about `paracompact_space`. With this refactor, only a few files depend on `topology/paracompact_space` and `topology/shrinking_lemma`. The main side effects are that `paracompact_of_emetric` and `normal_of_emetric` instances are not available without importing `topology.metric_space.emetric_paracompact` and the shrinking lemma for balls in a proper metric space is not available without `import topology.metric_space.shrinking_lemma`. ESTIMATED CHANGES Modified src/analysis/fourier.lean Modified src/geometry/manifold/partition_of_unity.lean Modified src/topology/metric_space/basic.lean - theorem exists_Union_ball_eq_radius_lt - theorem exists_Union_ball_eq_radius_pos_lt - theorem exists_locally_finite_Union_eq_ball_radius_lt - theorem exists_locally_finite_subset_Union_ball_radius_lt - theorem exists_subset_Union_ball_radius_lt - theorem exists_subset_Union_ball_radius_pos_lt Added src/topology/metric_space/emetric_paracompact.lean Modified src/topology/metric_space/emetric_space.lean Added src/topology/metric_space/shrinking_lemma.lean + theorem exists_Union_ball_eq_radius_lt + theorem exists_Union_ball_eq_radius_pos_lt + theorem exists_locally_finite_Union_eq_ball_radius_lt + theorem exists_locally_finite_subset_Union_ball_radius_lt + theorem exists_subset_Union_ball_radius_lt + theorem exists_subset_Union_ball_radius_pos_lt 2021-07-23 04:48:50 0dd81c1 chore(topology/urysohns_lemma): use bundled `C(X, ℝ)` (#8402) ESTIMATED CHANGES Modified src/measure_theory/continuous_map_dense.lean Modified src/topology/urysohns_lemma.lean 2021-07-23 02:11:57 88de9b5 chore(scripts): update nolints.txt (#8403) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-23 00:02:46 316d69f feat(measure_theory/measure_space): add measurable set lemma for symmetric differences (#8401) ESTIMATED CHANGES Modified src/measure_theory/measurable_space_def.lean + theorem measurable_set.cond + theorem measurable_set.symm_diff Modified src/measure_theory/measure_space.lean - theorem measurable_set.cond Modified src/measure_theory/tactic.lean 2021-07-22 21:19:37 0cbc6f3 feat(linear_algebra/matrix/determinant): generalize det_fin_zero to det_eq_one_of_is_empty (#8387) Also golfs a nearby proof ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/fintype/basic.lean + theorem fintype.card_eq_one_iff_nonempty_unique +/- theorem fintype.univ_of_is_empty + theorem univ_is_empty Modified src/linear_algebra/matrix/determinant.lean - theorem matrix.det_fin_zero + theorem matrix.det_is_empty 2021-07-22 17:40:08 468328d chore(group_theory/subgroup): the range of a monoid/group/ring/module hom from a finite type is finite (#8293) We have this fact for maps of types, but when changing `is_group_hom` etc from classes to structures one needs it for other bundled maps. The proofs use the power of the `copy` trick. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/subfield.lean Modified src/group_theory/subgroup.lean Modified src/linear_algebra/basic.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2021-07-22 16:15:21 0bc800c feat(algebra/algebra/basic) new bit0/1_smul_one lemmas (#8394) See https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Import.20impacts.20simp.3F/near/246713984, these lemmas should result in better behaviour with numerals ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.bit0_smul_one' +/- theorem algebra.bit0_smul_one + theorem algebra.bit1_smul_one' +/- theorem algebra.bit1_smul_one 2021-07-22 16:15:20 7cdd702 chore(ring_theory): `set_like` instance for fractional ideals (#8275) This PR does a bit of cleanup in `fractional_ideal.lean` by using `set_like` to define `has_mem` and the coe to set. As a bonus, it removes the `namespace ring` at the top of the file, that has been bugging me ever after I added it in the original fractional ideal PR. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/fractional_ideal.lean + theorem fractional_ideal.add_le_add_left + def fractional_ideal.adjoin_integral + theorem fractional_ideal.bot_eq_zero + theorem fractional_ideal.canonical_equiv_flip + theorem fractional_ideal.canonical_equiv_span_singleton + theorem fractional_ideal.canonical_equiv_symm + theorem fractional_ideal.coe_add + theorem fractional_ideal.coe_coe_ideal + theorem fractional_ideal.coe_div + theorem fractional_ideal.coe_fun_map_equiv + theorem fractional_ideal.coe_ideal_le_one + theorem fractional_ideal.coe_ideal_span_singleton + theorem fractional_ideal.coe_ideal_top + theorem fractional_ideal.coe_le_coe + theorem fractional_ideal.coe_map + theorem fractional_ideal.coe_mem_one + theorem fractional_ideal.coe_mk + theorem fractional_ideal.coe_mul + theorem fractional_ideal.coe_one + theorem fractional_ideal.coe_one_eq_coe_submodule_top + theorem fractional_ideal.coe_span_singleton + theorem fractional_ideal.coe_to_fractional_ideal_bot + theorem fractional_ideal.coe_to_fractional_ideal_eq_zero + theorem fractional_ideal.coe_to_fractional_ideal_injective + theorem fractional_ideal.coe_to_fractional_ideal_ne_zero + theorem fractional_ideal.coe_to_submodule_eq_bot + theorem fractional_ideal.coe_to_submodule_injective + theorem fractional_ideal.coe_to_submodule_ne_bot + theorem fractional_ideal.coe_zero + theorem fractional_ideal.div_nonzero + theorem fractional_ideal.div_one + theorem fractional_ideal.div_span_singleton + theorem fractional_ideal.div_zero + theorem fractional_ideal.eq_one_div_of_mul_eq_one + theorem fractional_ideal.eq_span_singleton_of_principal + theorem fractional_ideal.eq_zero_iff + theorem fractional_ideal.exists_eq_span_singleton_mul + theorem fractional_ideal.exists_mem_to_map_eq + theorem fractional_ideal.exists_ne_zero_mem_is_integer + theorem fractional_ideal.ext + theorem fractional_ideal.fractional_div_of_nonzero + theorem fractional_ideal.fractional_inf + theorem fractional_ideal.fractional_map + theorem fractional_ideal.fractional_mul + theorem fractional_ideal.fractional_sup + theorem fractional_ideal.is_fractional_adjoin_integral + theorem fractional_ideal.is_fractional_of_fg + theorem fractional_ideal.is_fractional_of_le + theorem fractional_ideal.is_fractional_of_le_one + theorem fractional_ideal.is_fractional_span_iff + theorem fractional_ideal.is_fractional_span_singleton + theorem fractional_ideal.is_noetherian + theorem fractional_ideal.is_noetherian_coe_to_fractional_ideal + theorem fractional_ideal.is_noetherian_iff + theorem fractional_ideal.is_noetherian_span_singleton_inv_to_map_mul + theorem fractional_ideal.is_noetherian_zero + theorem fractional_ideal.is_principal_iff + theorem fractional_ideal.le_div_iff_mul_le + theorem fractional_ideal.le_div_iff_of_nonzero + theorem fractional_ideal.le_one_iff_exists_coe_ideal + theorem fractional_ideal.le_self_mul_one_div + theorem fractional_ideal.le_self_mul_self + theorem fractional_ideal.le_zero_iff + def fractional_ideal.map + theorem fractional_ideal.map_add + theorem fractional_ideal.map_coe_ideal + theorem fractional_ideal.map_comp + theorem fractional_ideal.map_div + theorem fractional_ideal.map_eq_zero_iff + def fractional_ideal.map_equiv + theorem fractional_ideal.map_equiv_apply + theorem fractional_ideal.map_equiv_refl + theorem fractional_ideal.map_equiv_symm + theorem fractional_ideal.map_id + theorem fractional_ideal.map_map_symm + theorem fractional_ideal.map_mul + theorem fractional_ideal.map_ne_zero + theorem fractional_ideal.map_one + theorem fractional_ideal.map_one_div + theorem fractional_ideal.map_symm_map + theorem fractional_ideal.map_zero + theorem fractional_ideal.mem_adjoin_integral_self + theorem fractional_ideal.mem_canonical_equiv_apply + theorem fractional_ideal.mem_coe + theorem fractional_ideal.mem_coe_ideal + theorem fractional_ideal.mem_div_iff_of_nonzero + theorem fractional_ideal.mem_map + theorem fractional_ideal.mem_one_iff + theorem fractional_ideal.mem_singleton_mul + theorem fractional_ideal.mem_span_singleton + theorem fractional_ideal.mem_span_singleton_self + theorem fractional_ideal.mem_zero_iff + def fractional_ideal.mul + theorem fractional_ideal.mul_div_self_cancel_iff + theorem fractional_ideal.mul_eq_mul + theorem fractional_ideal.mul_le + theorem fractional_ideal.mul_le_mul_left + theorem fractional_ideal.mul_left_mono + theorem fractional_ideal.mul_mem_mul + theorem fractional_ideal.mul_one_div_le_one + theorem fractional_ideal.mul_right_mono + theorem fractional_ideal.mul_self_le_self + theorem fractional_ideal.ne_zero_of_mul_eq_one + theorem fractional_ideal.one_div_span_singleton + theorem fractional_ideal.one_mem_one + def fractional_ideal.span_singleton + theorem fractional_ideal.span_singleton_eq_zero_iff + theorem fractional_ideal.span_singleton_mul_span_singleton + theorem fractional_ideal.span_singleton_ne_zero_iff + theorem fractional_ideal.span_singleton_one + theorem fractional_ideal.span_singleton_zero + theorem fractional_ideal.sup_eq_add + theorem fractional_ideal.val_eq_coe + theorem fractional_ideal.zero_le + def fractional_ideal + def is_fractional - theorem ring.fractional_ideal.add_le_add_left - def ring.fractional_ideal.adjoin_integral - theorem ring.fractional_ideal.bot_eq_zero - theorem ring.fractional_ideal.canonical_equiv_flip - theorem ring.fractional_ideal.canonical_equiv_span_singleton - theorem ring.fractional_ideal.canonical_equiv_symm - theorem ring.fractional_ideal.coe_add - theorem ring.fractional_ideal.coe_coe_ideal - theorem ring.fractional_ideal.coe_div - theorem ring.fractional_ideal.coe_fun_map_equiv - theorem ring.fractional_ideal.coe_ideal_le_one - theorem ring.fractional_ideal.coe_ideal_span_singleton - theorem ring.fractional_ideal.coe_ideal_top - theorem ring.fractional_ideal.coe_injective - theorem ring.fractional_ideal.coe_le_coe - theorem ring.fractional_ideal.coe_map - theorem ring.fractional_ideal.coe_mem_one - theorem ring.fractional_ideal.coe_mk - theorem ring.fractional_ideal.coe_mul - theorem ring.fractional_ideal.coe_one - theorem ring.fractional_ideal.coe_one_eq_coe_submodule_top - theorem ring.fractional_ideal.coe_span_singleton - theorem ring.fractional_ideal.coe_to_fractional_ideal_bot - theorem ring.fractional_ideal.coe_to_fractional_ideal_eq_zero - theorem ring.fractional_ideal.coe_to_fractional_ideal_injective - theorem ring.fractional_ideal.coe_to_fractional_ideal_ne_zero - theorem ring.fractional_ideal.coe_to_submodule_eq_bot - theorem ring.fractional_ideal.coe_to_submodule_ne_bot - theorem ring.fractional_ideal.coe_zero - theorem ring.fractional_ideal.div_nonzero - theorem ring.fractional_ideal.div_one - theorem ring.fractional_ideal.div_span_singleton - theorem ring.fractional_ideal.div_zero - theorem ring.fractional_ideal.eq_one_div_of_mul_eq_one - theorem ring.fractional_ideal.eq_span_singleton_of_principal - theorem ring.fractional_ideal.eq_zero_iff - theorem ring.fractional_ideal.exists_eq_span_singleton_mul - theorem ring.fractional_ideal.exists_mem_to_map_eq - theorem ring.fractional_ideal.exists_ne_zero_mem_is_integer - theorem ring.fractional_ideal.ext - theorem ring.fractional_ideal.ext_iff - theorem ring.fractional_ideal.fractional_div_of_nonzero - theorem ring.fractional_ideal.fractional_inf - theorem ring.fractional_ideal.fractional_map - theorem ring.fractional_ideal.fractional_mul - theorem ring.fractional_ideal.fractional_of_subset_one - theorem ring.fractional_ideal.fractional_sup - theorem ring.fractional_ideal.is_fractional_adjoin_integral - theorem ring.fractional_ideal.is_fractional_of_fg - theorem ring.fractional_ideal.is_fractional_of_le - theorem ring.fractional_ideal.is_fractional_span_iff - theorem ring.fractional_ideal.is_fractional_span_singleton - theorem ring.fractional_ideal.is_noetherian - theorem ring.fractional_ideal.is_noetherian_coe_to_fractional_ideal - theorem ring.fractional_ideal.is_noetherian_iff - theorem ring.fractional_ideal.is_noetherian_span_singleton_inv_to_map_mul - theorem ring.fractional_ideal.is_noetherian_zero - theorem ring.fractional_ideal.is_principal_iff - theorem ring.fractional_ideal.le_div_iff_mul_le - theorem ring.fractional_ideal.le_div_iff_of_nonzero - theorem ring.fractional_ideal.le_iff_mem - theorem ring.fractional_ideal.le_one_iff_exists_coe_ideal - theorem ring.fractional_ideal.le_self_mul_one_div - theorem ring.fractional_ideal.le_self_mul_self - theorem ring.fractional_ideal.le_zero_iff - def ring.fractional_ideal.map - theorem ring.fractional_ideal.map_add - theorem ring.fractional_ideal.map_coe_ideal - theorem ring.fractional_ideal.map_comp - theorem ring.fractional_ideal.map_div - theorem ring.fractional_ideal.map_eq_zero_iff - def ring.fractional_ideal.map_equiv - theorem ring.fractional_ideal.map_equiv_apply - theorem ring.fractional_ideal.map_equiv_refl - theorem ring.fractional_ideal.map_equiv_symm - theorem ring.fractional_ideal.map_id - theorem ring.fractional_ideal.map_map_symm - theorem ring.fractional_ideal.map_mul - theorem ring.fractional_ideal.map_ne_zero - theorem ring.fractional_ideal.map_one - theorem ring.fractional_ideal.map_one_div - theorem ring.fractional_ideal.map_symm_map - theorem ring.fractional_ideal.map_zero - theorem ring.fractional_ideal.mem_adjoin_integral_self - theorem ring.fractional_ideal.mem_canonical_equiv_apply - theorem ring.fractional_ideal.mem_coe_ideal - theorem ring.fractional_ideal.mem_div_iff_of_nonzero - theorem ring.fractional_ideal.mem_map - theorem ring.fractional_ideal.mem_one_iff - theorem ring.fractional_ideal.mem_singleton_mul - theorem ring.fractional_ideal.mem_span_singleton - theorem ring.fractional_ideal.mem_span_singleton_self - theorem ring.fractional_ideal.mem_zero_iff - def ring.fractional_ideal.mul - theorem ring.fractional_ideal.mul_div_self_cancel_iff - theorem ring.fractional_ideal.mul_eq_mul - theorem ring.fractional_ideal.mul_le - theorem ring.fractional_ideal.mul_le_mul_left - theorem ring.fractional_ideal.mul_left_mono - theorem ring.fractional_ideal.mul_mem_mul - theorem ring.fractional_ideal.mul_one_div_le_one - theorem ring.fractional_ideal.mul_right_mono - theorem ring.fractional_ideal.mul_self_le_self - theorem ring.fractional_ideal.ne_zero_of_mul_eq_one - theorem ring.fractional_ideal.one_div_span_singleton - theorem ring.fractional_ideal.one_mem_one - def ring.fractional_ideal.span_singleton - theorem ring.fractional_ideal.span_singleton_eq_zero_iff - theorem ring.fractional_ideal.span_singleton_mul_span_singleton - theorem ring.fractional_ideal.span_singleton_ne_zero_iff - theorem ring.fractional_ideal.span_singleton_one - theorem ring.fractional_ideal.span_singleton_zero - theorem ring.fractional_ideal.sup_eq_add - theorem ring.fractional_ideal.val_eq_coe - theorem ring.fractional_ideal.zero_le - def ring.fractional_ideal - def ring.is_fractional 2021-07-22 14:12:58 38ac9ba chore(algebra/module/submodule): add submodule.coe_sum (#8393) ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.coe_sum 2021-07-22 14:12:57 e2cda0b chore(*): Prevent lemmas about the injectivity of `coe_fn` introducing un-reduced lambda terms (#8386) This follows on from #6344, and fixes every result for `function.injective (λ` that is about coe_fn. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean +/- theorem lie_hom.coe_injective +/- theorem lie_module_hom.coe_injective Modified src/analysis/normed_space/enorm.lean +/- theorem enorm.coe_fn_injective Modified src/data/equiv/basic.lean +/- theorem equiv.coe_fn_injective Modified src/linear_algebra/affine_space/affine_map.lean +/- theorem affine_map.coe_fn_injective Modified src/order/rel_iso.lean +/- theorem rel_iso.coe_fn_injective Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.coe_fn_injective Modified src/topology/locally_constant/basic.lean +/- theorem locally_constant.coe_injective 2021-07-22 14:12:56 54adb19 doc(algebra/to_additive): Add troubleshooting section (#8143) ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/tactic/transform_decl.lean 2021-07-22 12:14:07 791d51c feat(group_theory/group_action): a monoid action determines a monoid hom (#8253) Defines the monoid hom `M -> category_theory.End X` (the latter is the monoid `X -> X`) corresponding to an action `mul_action M X` and vice versa. Split off from #7395 ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean + def add_action.of_End_hom + def add_action.to_End_hom + theorem function.End.smul_def + def mul_action.of_End_hom + def mul_action.to_End_hom Modified src/group_theory/group_action/group.lean + theorem equiv.perm.smul_def 2021-07-22 11:40:10 6f88eec feat(algebra/lie/{submodule,subalgebra}): `lie_span`, `coe` form a Galois insertion (#8213) ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.span_Union + theorem lie_subalgebra.span_empty + theorem lie_subalgebra.span_union + theorem lie_subalgebra.span_univ Modified src/algebra/lie/submodule.lean + theorem lie_submodule.span_Union + theorem lie_submodule.span_empty + theorem lie_submodule.span_union + theorem lie_submodule.span_univ 2021-07-22 07:37:52 c9593dc feat(algebra/lie/direct_sum): define `direct_sum.lie_of`, `direct_sum.to_lie_algebra`, `direct_sum.lie_algebra_is_internal` (#8369) Various other minor improvements. ESTIMATED CHANGES Modified src/algebra/lie/direct_sum.lean +/- def direct_sum.lie_algebra_component + theorem direct_sum.lie_algebra_ext + def direct_sum.lie_algebra_is_internal +/- def direct_sum.lie_algebra_of + theorem direct_sum.lie_of + theorem direct_sum.lie_of_of_eq + theorem direct_sum.lie_of_of_ne + def direct_sum.to_lie_algebra Modified src/linear_algebra/direct_sum_module.lean + theorem direct_sum.coe_to_module_eq_coe_to_add_monoid 2021-07-22 06:50:48 df50b6c feat(category_theory/limits): strict initial objects are initial mono (#8267) - [x] depends on: #8094 - [x] depends on: #8099 ESTIMATED CHANGES Modified src/category_theory/limits/shapes/strict_initial.lean Modified src/category_theory/limits/shapes/terminal.lean 2021-07-22 02:19:36 bc65818 chore(scripts): update nolints.txt (#8390) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-21 22:22:58 9e35530 fix(order/lattice, tactic.simps): add missing `notation_class` attributes to `has_(bot,top,inf,sup,compl)` (#8381) From the docs for `simps`: > `@[notation_class]` should be added to all classes that define notation, like `has_mul` and > `has_zero`. This specifies that the projections that `@[simps]` used are the projections from > these notation classes instead of the projections of the superclasses. > Example: if `has_mul` is tagged with `@[notation_class]` then the projection used for `semigroup` > will be `λ α hα, @has_mul.mul α (@semigroup.to_has_mul α hα)` instead of `@semigroup.mul`. ESTIMATED CHANGES Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/lattice.lean 2021-07-21 22:22:56 f118c14 feat(order): if `f x ≤ f y → x ≤ y`, then `f` is injective (#8373) I couldn't find this specific result, not assuming linear orders, anywhere and [the Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/If.20.60f.20x.20.E2.89.A4.20f.20y.20.E2.86.92.20x.20.E2.89.A4.20y.60.2C.20then.20.60f.60.20is.20injective) didn't get any responses, so I decided to PR the result. ESTIMATED CHANGES Modified src/order/basic.lean + theorem injective_of_le_imp_le 2021-07-21 21:31:53 3e6c367 chore(topology/algebra/module): harmless generalization (#8389) ESTIMATED CHANGES Modified src/topology/algebra/module.lean 2021-07-21 17:32:53 ae1c7ee docs(analysis/normed_space/bounded_linear_map): add module docstring (#8263) ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem continuous_linear_map.is_bounded_linear_map_comp_left +/- theorem continuous_linear_map.is_bounded_linear_map_comp_right +/- def is_bounded_bilinear_map.deriv 2021-07-21 15:58:51 9fa82b0 feat(combinatorics/colex): order is decidable (#8378) Show that the colex ordering is decidable. ESTIMATED CHANGES Modified src/combinatorics/colex.lean 2021-07-21 12:21:17 28b8593 feat(combinatorics/simple_graph): `boolean_algebra` for `simple_graph`s. (#8330) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean +/- def complete_graph +/- def empty_graph + theorem simple_graph.bot_adj - def simple_graph.compl +/- theorem simple_graph.compl_adj - theorem simple_graph.compl_compl - theorem simple_graph.compl_involutive + theorem simple_graph.complete_graph_eq_top + theorem simple_graph.empty_graph_eq_bot + theorem simple_graph.inf_adj + def simple_graph.is_subgraph + theorem simple_graph.is_subgraph_eq_le + theorem simple_graph.sdiff_adj + theorem simple_graph.sup_adj + theorem simple_graph.top_adj Modified src/combinatorics/simple_graph/strongly_regular.lean Modified src/combinatorics/simple_graph/subgraph.lean +/- def simple_graph.subgraph.bot_equiv +/- def simple_graph.subgraph.is_subgraph + theorem simple_graph.subgraph.spanning_coe.is_subgraph_of_is_subgraph + def simple_graph.subgraph.spanning_coe + theorem simple_graph.subgraph.spanning_coe_adj_sub + def simple_graph.subgraph.spanning_coe_equiv_coe_of_spanning + theorem simple_graph.to_subgraph.is_spanning + def simple_graph.to_subgraph 2021-07-21 10:58:03 fb58e05 refactor(measure_theory/decomposition): move `decomposition` into a folder (#8374) ESTIMATED CHANGES Renamed src/measure_theory/decomposition.lean to src/measure_theory/decomposition/unsigned_hahn.lean 2021-07-21 07:30:27 b45acc9 feat(combinatorics/colex): top of the colex ordering on finite types (#8379) ESTIMATED CHANGES Modified src/combinatorics/colex.lean 2021-07-21 04:59:20 02a5696 feat(analysis/normed_space): Define conformal maps on inner product spaces; define the groupoid of conformal maps (#8367) ESTIMATED CHANGES Added src/analysis/calculus/conformal.lean + theorem conformal.comp + theorem conformal.conformal_at + theorem conformal.const_smul + theorem conformal.differentiable + def conformal + theorem conformal_at.comp + def conformal_at.conformal_factor_at + theorem conformal_at.conformal_factor_at_inner_eq_mul_inner' + theorem conformal_at.conformal_factor_at_inner_eq_mul_inner + theorem conformal_at.conformal_factor_at_pos + theorem conformal_at.congr + theorem conformal_at.const_smul + theorem conformal_at.differentiable_at + theorem conformal_at.preserves_angle + def conformal_at + theorem conformal_at_const_smul + theorem conformal_at_id + theorem conformal_at_iff' + theorem conformal_at_iff + theorem conformal_at_iff_is_conformal_map_fderiv + theorem conformal_const_smul + theorem conformal_id Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at_of_subsingleton Added src/analysis/normed_space/conformal_linear_map.lean + theorem is_conformal_map.comp + theorem is_conformal_map.injective + theorem is_conformal_map.preserves_angle + def is_conformal_map + theorem is_conformal_map_const_smul + theorem is_conformal_map_id + theorem is_conformal_map_iff + theorem is_conformal_map_of_subsingleton Added src/geometry/manifold/conformal_groupoid.lean + def conformal_groupoid + def conformal_pregroupoid 2021-07-20 20:10:32 899bb5f feat(data/multiset): `(s.erase x).map f = (s.map f).erase (f x)` (#8375) A little lemma that I needed for Dedekind domains. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.map_erase 2021-07-20 18:13:44 4676b31 feat(data/sym2): add the universal property, and make `sym2.is_diag ⟦(x, y)⟧ ↔ x = y` true definitionally (#8358) ESTIMATED CHANGES Modified src/data/sym2.lean + theorem sym2.coe_lift_symm_apply + theorem sym2.is_diag.mem_range_diag +/- def sym2.is_diag + theorem sym2.is_diag_iff_eq + theorem sym2.is_diag_iff_mem_range_diag + def sym2.lift + theorem sym2.lift_mk 2021-07-20 16:22:25 6ac3059 feat(combinatorics/colex): golf and generalise (#8301) Miscellaneous fixes about colex: Gives `le` versions of some `lt` lemmas, fixes a TODO, restores some names etc. ESTIMATED CHANGES Modified src/combinatorics/colex.lean + theorem colex.colex_le_of_subset + theorem colex.colex_lt_of_ssubset + theorem colex.empty_to_colex_le + theorem colex.empty_to_colex_lt - theorem colex.hom - theorem colex.hom_fin + theorem colex.hom_fin_le_iff + theorem colex.hom_fin_lt_iff + theorem colex.hom_le_iff + theorem colex.hom_lt_iff +/- theorem colex.lt_singleton_iff_mem_lt + theorem colex.sdiff_le_sdiff_iff_le + theorem colex.singleton_le_iff_le - theorem colex.sum_sq_lt_iff_lt + theorem colex.sum_two_pow_le_iff_lt + theorem colex.sum_two_pow_lt_iff_lt + def colex.to_colex_rel_hom - theorem nat.sum_sq_lt + theorem nat.sum_two_pow_lt 2021-07-20 11:23:09 ed8d597 fix(data/matrix/basic): remove an accidental requirement for a matrix to be square (#8372) ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.mul_apply' 2021-07-20 10:51:34 fce38f1 feat(ring_theory): define `fractional_ideal.adjoin_integral` (#8296) This PR shows if `x` is integral over `R`, then `R[x]` is a fractional ideal, and proves some of the essential properties of this fractional ideal. This is an important step towards showing `is_dedekind_domain_inv` implies that the ring is integrally closed. Co-Authored-By: Ashvni ashvni.n@gmail.com Co-Authored-By: Filippo A. E. Nuccio filippo.nuccio@univ-st-etienne.fr ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + def ring.fractional_ideal.adjoin_integral + theorem ring.fractional_ideal.is_fractional_adjoin_integral + theorem ring.fractional_ideal.mem_adjoin_integral_self 2021-07-20 09:52:16 c05c15f feat(group_theory/order_of_element): pow_eq_mod_card (#8354) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem gpow_eq_mod_card + theorem pow_eq_mod_card 2021-07-20 08:59:36 0f9b754 feat(measure_theory/borel_space): generalize `monotone.measurable` to monotone on set (#8365) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem ae_measurable_restrict_of_antimono_on + theorem ae_measurable_restrict_of_monotone_on +/- theorem measurable_of_antimono +/- theorem measurable_of_monotone 2021-07-20 08:59:35 1589318 feat(topology/continuous_function/bounded): prove `norm_eq_supr_norm` (#8288) More precisely we prove both: * `bounded_continuous_function.norm_eq_supr_norm` * `continuous_map.norm_eq_supr_norm` We also introduce one new definition: `bounded_continuous_function.norm_comp`. ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.bdd_above_range_norm_comp + theorem bounded_continuous_function.coe_norm_comp + def bounded_continuous_function.norm_comp + theorem bounded_continuous_function.norm_eq_of_nonempty + theorem bounded_continuous_function.norm_eq_supr_norm + theorem bounded_continuous_function.norm_eq_zero_of_empty + theorem bounded_continuous_function.norm_norm_comp Modified src/topology/continuous_function/compact.lean + theorem bounded_continuous_function.norm_forget_boundedness_eq + theorem continuous_map.norm_eq_supr_norm 2021-07-20 08:59:34 f5d25b4 feat(measure_theory/vector_measure): introduce vector-valued measures (#8247) This PR introduces vector-valued measures and provides a method of creating signed measures without the summability requirement. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem real.norm_of_nonpos Modified src/data/real/ennreal.lean + theorem ennreal.coe_smul + theorem ennreal.to_real_smul Modified src/measure_theory/measure_space.lean + theorem measure_theory.summable_measure_to_real Added src/measure_theory/vector_measure.lean + def measure_theory.complex_measure + def measure_theory.measure.sub_to_signed_measure + theorem measure_theory.measure.sub_to_signed_measure_apply + def measure_theory.measure.to_ennreal_vector_measure + theorem measure_theory.measure.to_ennreal_vector_measure_add + theorem measure_theory.measure.to_ennreal_vector_measure_apply_measurable + theorem measure_theory.measure.to_ennreal_vector_measure_zero + def measure_theory.measure.to_signed_measure + theorem measure_theory.measure.to_signed_measure_add + theorem measure_theory.measure.to_signed_measure_apply_measurable + theorem measure_theory.measure.to_signed_measure_smul + theorem measure_theory.measure.to_signed_measure_zero + def measure_theory.signed_measure + def measure_theory.vector_measure.add + theorem measure_theory.vector_measure.add_apply + theorem measure_theory.vector_measure.coe_add + def measure_theory.vector_measure.coe_fn_add_monoid_hom + theorem measure_theory.vector_measure.coe_injective + theorem measure_theory.vector_measure.coe_neg + theorem measure_theory.vector_measure.coe_smul + theorem measure_theory.vector_measure.coe_sub + theorem measure_theory.vector_measure.coe_zero + theorem measure_theory.vector_measure.empty + theorem measure_theory.vector_measure.ext + theorem measure_theory.vector_measure.ext_iff' + theorem measure_theory.vector_measure.ext_iff + theorem measure_theory.vector_measure.has_sum_of_disjoint_Union + theorem measure_theory.vector_measure.m_Union + theorem measure_theory.vector_measure.measure_of_eq_coe + def measure_theory.vector_measure.neg + theorem measure_theory.vector_measure.neg_apply + theorem measure_theory.vector_measure.not_measurable + theorem measure_theory.vector_measure.of_Union_nonneg + theorem measure_theory.vector_measure.of_Union_nonpos + theorem measure_theory.vector_measure.of_add_of_diff + theorem measure_theory.vector_measure.of_diff + theorem measure_theory.vector_measure.of_disjoint_Union + theorem measure_theory.vector_measure.of_disjoint_Union_nat + theorem measure_theory.vector_measure.of_nonneg_disjoint_union_eq_zero + theorem measure_theory.vector_measure.of_nonpos_disjoint_union_eq_zero + theorem measure_theory.vector_measure.of_union + def measure_theory.vector_measure.smul + theorem measure_theory.vector_measure.smul_apply + def measure_theory.vector_measure.sub + theorem measure_theory.vector_measure.sub_apply + theorem measure_theory.vector_measure.zero_apply + structure measure_theory.vector_measure Modified src/topology/instances/ennreal.lean + theorem ennreal.summable_to_real Modified src/topology/instances/nnreal.lean 2021-07-20 07:56:49 0f58e13 chore(topology/continuous_function, analysis/normed_space): use `is_empty α` instead of `¬nonempty α` (#8352) Two lemmas with their assumptions changed, and some proofs golfed using the new forms of these and other lemmas. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean +/- theorem continuous_multilinear_map.norm_mk_pi_algebra_of_empty Modified src/order/filter/at_top_bot.lean Modified src/topology/continuous_function/bounded.lean +/- theorem bounded_continuous_function.dist_zero_of_empty 2021-07-20 04:14:22 b3fbcec chore(.docker): add missing library (#8370) Something must have changed that now needs this library. It's only installed in an intemediate build, anyway. ESTIMATED CHANGES Modified .docker/debian/lean/Dockerfile 2021-07-20 03:37:36 e0467bd feat(algebra.homology): homology f g w ≅ cokernel (kernel.lift g f w) (#8355) Per [zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Challenge.20with.20homology). I'm not certain this completely resolves the issue: perhaps we should really change the definition of `homology`. But at least this bridges the gap. ESTIMATED CHANGES Modified src/algebra/homology/image_to_kernel.lean + def homology_iso_cokernel_image_to_kernel' + def homology_iso_cokernel_lift + theorem image_subobject_iso_image_to_kernel' + def image_to_kernel' + theorem image_to_kernel'_kernel_subobject_iso 2021-07-19 22:25:50 11af02c feat(analysis/convex): convex sets with zero (#8234) Split off from #7288 ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex.mem_smul_of_zero_mem + theorem convex.smul_mem_of_zero_mem 2021-07-19 22:25:49 0821e6e feat(category_theory/limits): strict initial objects (#8094) - [x] depends on: #8084 [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/) ESTIMATED CHANGES Added src/category_theory/limits/shapes/strict_initial.lean + theorem category_theory.limits.has_strict_initial_objects_of_initial_is_strict + theorem category_theory.limits.initial.hom_ext + theorem category_theory.limits.initial.subsingleton_to + theorem category_theory.limits.initial_mul_inv + theorem category_theory.limits.is_initial.is_iso_to + theorem category_theory.limits.is_initial.strict_hom_ext + theorem category_theory.limits.is_initial.subsingleton_to + theorem category_theory.limits.is_initial_mul_inv + theorem category_theory.limits.mul_initial_inv + theorem category_theory.limits.mul_is_initial_inv 2021-07-19 19:25:13 afd0f92 feat(category_theory/limits/pullbacks): generalise pullback mono lemmas (#8302) Generalises results to use `is_limit` rather than the canonical limit. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.pullback_cone.mono_fst_of_is_pullback_of_mono + theorem category_theory.limits.pullback_cone.mono_snd_of_is_pullback_of_mono + theorem category_theory.limits.pushout_cocone.epi_inl_of_is_pushout_of_epi + theorem category_theory.limits.pushout_cocone.epi_inr_of_is_pushout_of_epi 2021-07-19 15:59:39 739b353 chore(.gitignore): ignore lock files (#8368) Two reasons: 1. Sometimes these accidentally make it into PRs (e.g. #8344) 2. Some editor plugins (like the git in vscode) update very frequently causing these files to appear and disappear quickly in the sidebar whenever lean compiles which is annoying ESTIMATED CHANGES Modified .gitignore 2021-07-19 14:20:44 ad7ab8d feat(linear_algebra/finsupp): `span.repr` gives an arbitrarily representation of `x : span R w` as a linear combination over `w` (#8339) It's convenient to be able to get hold of such a representation, even when it is not unique. We prove the only lemma about this, then mark the definition is irreducible. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.of_injective_symm_apply Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.total_emb_domain + theorem finsupp.total_equiv_map_domain + theorem span.finsupp_total_repr + def span.repr Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.span_repr_eq +/- def linear_independent.total_equiv +/- theorem linear_independent.total_repr 2021-07-19 13:17:09 02ecb62 feat(analysis/fourier): span of monomials is dense in L^p (#8328) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/analysis/fourier.lean + def fourier_Lp +/- theorem orthonormal_fourier + theorem span_fourier_Lp_closure_eq_top +/- theorem span_fourier_closure_eq_top Modified src/measure_theory/continuous_map_dense.lean Modified src/topology/algebra/group.lean + theorem dense_range.topological_closure_map_subgroup + theorem subgroup.topological_closure_coe Modified src/topology/algebra/module.lean + theorem dense_range.topological_closure_map_submodule 2021-07-19 12:28:13 5ccf2bf feat(topology/metric_space/basic): an order-bounded set is metric-bounded (#8335) ESTIMATED CHANGES Modified src/topology/continuous_function/bounded.lean Modified src/topology/metric_space/basic.lean + theorem is_compact.bounded + theorem metric.bounded_Icc + theorem metric.bounded_Ico + theorem metric.bounded_Ioc + theorem metric.bounded_Ioo + theorem metric.bounded_of_bdd_above_of_bdd_below - theorem metric.bounded_of_compact + theorem totally_bounded.bounded Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2021-07-19 10:21:46 3e67932 feat(topology/algebra/ordered): an `order_closed_topology` restricted to a subset is an `order_closed_topology` (#8364) ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean 2021-07-19 07:28:12 dd9f1c3 chore(order/basic): whitespaces and caps (#8359) ESTIMATED CHANGES Modified src/order/basic.lean +/- theorem exists_between +/- theorem le_update_iff +/- def monotone +/- theorem monotone_app +/- theorem monotone_const +/- theorem monotone_id +/- theorem monotone_lam +/- theorem monotone_of_monotone_nat +/- theorem no_bot +/- theorem no_top +/- def order.preimage +/- def order_dual +/- theorem pi.le_def +/- theorem pi.lt_def +/- theorem update_le_iff +/- theorem update_le_update_iff 2021-07-19 02:21:30 6a20dd6 chore(scripts): update nolints.txt (#8366) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-18 22:22:27 ee60711 feat(data/finset/basic): product, bUnion, sdiff lemmas (#8321) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.bUnion_bUnion + theorem finset.bUnion_subset_iff_forall_subset + theorem finset.product_bUnion + theorem finset.sdiff_ssubset Modified src/order/boolean_algebra.lean + theorem sdiff_lt 2021-07-18 17:02:30 c2d042c chore(analysis/*): remove unnecessary imports (#8344) ESTIMATED CHANGES Modified src/algebra/indicator_function.lean Modified src/analysis/ODE/gronwall.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics/asymptotic_equivalent.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/calculus/fderiv_symmetric.lean Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/circle.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/complex/roots_of_unity.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/caratheodory.lean Modified src/analysis/convex/cone.lean Modified src/analysis/convex/exposed.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/convex/extreme.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/hofer.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/SemiNormedGroup.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/int.lean Modified src/analysis/normed_space/normed_group_hom.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/ordered.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/special_functions/bernstein.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/sqrt.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/data/complex/exponential.lean Modified src/data/complex/module.lean Modified src/measure_theory/lp_space.lean Modified src/ring_theory/polynomial/chebyshev.lean Modified src/topology/continuous_function/weierstrass.lean Modified src/topology/sequences.lean 2021-07-18 17:02:29 b02b919 feat(measure_theory): add lemmas of equality of measures under assumptions of null difference, in particular null frontier (#8332) Adding lemmas in `measure_theory/measure_space` and `measure_theory/borel_space` about equality of measures of sets under the assumption that the difference of the largest to the smallest has null measure. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem meas_closure_of_null_bdry + theorem meas_interior_of_null_bdry Modified src/measure_theory/measure_space.lean + theorem measure_theory.meas_eq_meas_larger_of_between_null_diff + theorem measure_theory.meas_eq_meas_of_between_null_diff + theorem measure_theory.meas_eq_meas_of_null_diff + theorem measure_theory.meas_eq_meas_smaller_of_between_null_diff 2021-07-18 17:02:28 048263d feat(topology/basic): add two lemmas about frontier and two lemmas about preimages under continuous maps (#8329) Adding four lemmas: `frontier_eq_inter_compl_interior`, `compl_frontier_eq_union_interior`, `continuous.closure_preimage_subset`, `continuous.frontier_preimage_subset` to `topology/basic`. These were discussed on Zulip . The formulations closely follow Patrick's suggestions. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem compl_frontier_eq_union_interior + theorem continuous.closure_preimage_subset + theorem continuous.frontier_preimage_subset + theorem frontier_eq_inter_compl_interior 2021-07-18 15:12:25 865e36b chore(order/boolean_algebra) : `compl_involutive` (#8357) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem compl_bijective + theorem compl_involutive 2021-07-17 21:38:09 f45df47 feat(measure_theory/hausdorff_measure): `dimH_{s,b,}Union`, `dimH_union` (#8351) ESTIMATED CHANGES Modified src/measure_theory/hausdorff_measure.lean + theorem measure_theory.dimH_Union + theorem measure_theory.dimH_bUnion + theorem measure_theory.dimH_mono + theorem measure_theory.dimH_sUnion + theorem measure_theory.dimH_union + theorem measure_theory.le_dimH_of_hausdorff_measure_eq_top 2021-07-17 19:58:11 ad5afc2 feat(combinatorics/hales_jewett): Hales-Jewett and Van der Waerden (#8019) Proves the Hales-Jewett theorem (a fundamental result in Ramsey theory on combinatorial lines) and deduces (a generalised version of) Van der Waerden's theorem on arithmetic progressions. ESTIMATED CHANGES Added src/combinatorics/hales_jewett.lean + theorem combinatorics.exists_mono_homothetic_copy + structure combinatorics.line.almost_mono + theorem combinatorics.line.apply + theorem combinatorics.line.apply_none + theorem combinatorics.line.apply_of_ne_none + structure combinatorics.line.color_focused + def combinatorics.line.diagonal + theorem combinatorics.line.diagonal_apply + theorem combinatorics.line.exists_mono_in_high_dimension + def combinatorics.line.horizontal + theorem combinatorics.line.horizontal_apply + def combinatorics.line.is_mono + def combinatorics.line.map + theorem combinatorics.line.map_apply + def combinatorics.line.prod + theorem combinatorics.line.prod_apply + def combinatorics.line.vertical + theorem combinatorics.line.vertical_apply + structure combinatorics.line Modified src/data/list/basic.lean Modified src/data/option/basic.lean + theorem option.get_or_else_map + theorem option.get_or_else_none 2021-07-17 17:47:12 398027d feat(topology/subset_properties): add `countable_cover_nhds_within_of_sigma_compact` (#8350) This is a version of `countable_cover_nhds_of_sigma_compact` for a covering of a closed set instead of the whole space. ESTIMATED CHANGES Modified src/topology/subset_properties.lean + theorem countable_cover_nhds_within_of_sigma_compact + theorem exists_mem_compact_covering 2021-07-17 17:47:11 7d754e0 chore(analysis/calculus/mean_value): use `nnnorm` in a few lemmas (#8348) Use `nnnorm` instead of `norm` and `C : nnreal` in lemmas about `lipschitz_on_with`. This way we can use them to prove any statement of the form `lipschitz_on_with C f s`, not only something of the form `lipschitz_on_with (real.to_nnreal C) f s`. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean + theorem convex.exists_nhds_within_lipschitz_on_with_of_has_fderiv_within_at_of_continuous_within_at + theorem convex.lipschitz_on_with_of_nnnorm_deriv_le + theorem convex.lipschitz_on_with_of_nnnorm_deriv_within_le + theorem convex.lipschitz_on_with_of_nnnorm_fderiv_le + theorem convex.lipschitz_on_with_of_nnnorm_fderiv_within_le + theorem convex.lipschitz_on_with_of_nnnorm_has_deriv_within_le + theorem convex.lipschitz_on_with_of_nnnorm_has_fderiv_within_le - theorem convex.lipschitz_on_with_of_norm_deriv_le - theorem convex.lipschitz_on_with_of_norm_deriv_within_le - theorem convex.lipschitz_on_with_of_norm_fderiv_le - theorem convex.lipschitz_on_with_of_norm_fderiv_within_le - theorem convex.lipschitz_on_with_of_norm_has_deriv_within_le - theorem convex.lipschitz_on_with_of_norm_has_fderiv_within_le Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.nnnorm_smul_right_apply Modified src/data/real/nnreal.lean 2021-07-17 16:55:13 3782c19 feat(topology/algebra/ordered): add `nhds_top_basis_Ici` and `nhds_bot_basis_Iic` (#8349) Also add `ennreal.nhds_zero_basis_Iic` and `ennreal.supr_div`. ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean + theorem nhds_bot_basis_Iic + theorem nhds_top_basis_Ici Modified src/topology/instances/ennreal.lean + theorem ennreal.nhds_zero_basis_Iic + theorem ennreal.supr_div 2021-07-17 16:20:16 8139d7e feat(measure_theory/hausdorff_measure): μH and dimH of a `subsingleton` (#8347) ESTIMATED CHANGES Modified src/measure_theory/hausdorff_measure.lean + theorem measure_theory.dimH_empty + theorem measure_theory.dimH_singleton + theorem measure_theory.dimH_subsingleton Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure_subsingleton 2021-07-17 14:00:00 fcde3f0 chore(data/real/ennreal): move `x ≠ 0` case of `mul_infi` to `mul_infi_of_ne` (#8345) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.infi_mul_of_ne + theorem ennreal.mul_infi_of_ne 2021-07-17 13:14:10 bd56531 chore(analysis/normed_space/operator_norm): use `norm_one_class` (#8346) * turn `continuous_linear_map.norm_id` into a `simp` lemma; * drop its particular case `continuous_linear_map.norm_id_field`; * replace `continuous_linear_map.norm_id_field'` with a `norm_one_class` instance. ESTIMATED CHANGES Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.norm_id - theorem continuous_linear_map.norm_id_field' - theorem continuous_linear_map.norm_id_field +/- theorem continuous_linear_map.norm_id_of_nontrivial_seminorm 2021-07-17 11:26:47 93a3764 chore(algebra/ring/basic): drop commutativity assumptions from some division lemmas (#8334) * Removes `dvd_neg_iff_dvd`, `neg_dvd_iff_dvd` which duplicated `dvd_neg`, `neg_dvd`. * Generalizes `two_dvd_bit0` to non-commutative semirings. * Generalizes a bunch of lemmas from `comm_ring` to `ring`. * Adds `even_neg` for `ring` to replace `int.even_neg`. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean - theorem dvd_neg_iff_dvd + theorem even_neg - theorem neg_dvd_iff_dvd Modified src/data/int/basic.lean Modified src/data/int/parity.lean - theorem int.even_neg 2021-07-17 09:38:56 d4c0a11 refactor(analysis/analytic/basic): refactor `change_origin` (#8282) Now each term of `change_origin` is defined as a sum of a formal power series, so it is clear that each term is an analytic function. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean +/- theorem formal_multilinear_series.change_origin_eval - theorem formal_multilinear_series.change_origin_has_sum + def formal_multilinear_series.change_origin_index_equiv +/- theorem formal_multilinear_series.change_origin_radius + def formal_multilinear_series.change_origin_series + theorem formal_multilinear_series.change_origin_series_summable_aux₁ + theorem formal_multilinear_series.change_origin_series_summable_aux₂ + theorem formal_multilinear_series.change_origin_series_summable_aux₃ + def formal_multilinear_series.change_origin_series_term + theorem formal_multilinear_series.change_origin_series_term_apply - theorem formal_multilinear_series.change_origin_summable_aux1 - theorem formal_multilinear_series.change_origin_summable_aux2 - theorem formal_multilinear_series.change_origin_summable_aux3 - def formal_multilinear_series.change_origin_summable_aux_j - theorem formal_multilinear_series.change_origin_summable_aux_j_injective - theorem formal_multilinear_series.continuous_on - theorem formal_multilinear_series.has_fpower_series_on_ball + theorem formal_multilinear_series.has_fpower_series_on_ball_change_origin + theorem formal_multilinear_series.le_change_origin_series_radius +/- theorem formal_multilinear_series.le_radius_of_bound +/- theorem formal_multilinear_series.le_radius_of_bound_nnreal + theorem formal_multilinear_series.le_radius_of_eventually_le + theorem formal_multilinear_series.le_radius_of_summable + theorem formal_multilinear_series.le_radius_of_summable_nnnorm + theorem formal_multilinear_series.nnnorm_change_origin_le + theorem formal_multilinear_series.nnnorm_change_origin_series_apply_le_tsum + theorem formal_multilinear_series.nnnorm_change_origin_series_le_tsum + theorem formal_multilinear_series.nnnorm_change_origin_series_term + theorem formal_multilinear_series.nnnorm_change_origin_series_term_apply_le + theorem formal_multilinear_series.norm_change_origin_series_term + theorem formal_multilinear_series.summable_nnnorm_mul_pow + theorem formal_multilinear_series.summable_norm_mul_pow Modified src/data/real/ennreal.lean + theorem ennreal.le_of_forall_pos_nnreal_lt Modified src/data/subtype.lean + theorem subtype.heq_iff_coe_heq Modified src/topology/algebra/infinite_sum.lean + theorem summable.div_const 2021-07-17 04:19:35 0cb634f feat(category_theory/subobject): subobject category equivalent to mono over category (#8304) ESTIMATED CHANGES Modified src/category_theory/essentially_small.lean Modified src/category_theory/monoidal/skeleton.lean Modified src/category_theory/skeletal.lean Modified src/category_theory/subobject/basic.lean Modified src/category_theory/subobject/mono_over.lean 2021-07-17 02:01:37 e67e50f feat(algebra/group_theory/lemmas): add int.pow_right_injective (#8278) Suggested here: https://github.com/leanprover-community/mathlib/pull/7843#discussion_r668167163 ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem int.pow_right_injective 2021-07-16 22:47:45 10975e6 docs(measure_theory/integral_eq_improper): fix lemma names in docs (#8333) ESTIMATED CHANGES Modified src/measure_theory/integral_eq_improper.lean 2021-07-16 17:58:03 8e3d9ce feat(measure_theory/continuous_map_dense): continuous functions are dense in Lp (#8306) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem monoid_hom.subgroup_of_range_eq_of_le Added src/measure_theory/continuous_map_dense.lean + theorem bounded_continuous_function.to_Lp_dense_range + theorem continuous_map.to_Lp_dense_range + theorem measure_theory.Lp.bounded_continuous_function_dense Modified src/measure_theory/lp_space.lean + theorem bounded_continuous_function.range_to_Lp + theorem bounded_continuous_function.range_to_Lp_hom + theorem continuous_map.range_to_Lp + def measure_theory.Lp.bounded_continuous_function + theorem measure_theory.Lp.mem_bounded_continuous_function_iff Modified src/measure_theory/vitali_caratheodory.lean Modified src/topology/algebra/group.lean +/- theorem subgroup.is_closed_topological_closure +/- theorem subgroup.subgroup_topological_closure +/- theorem subgroup.topological_closure_minimal 2021-07-16 17:58:00 a895300 chore(ring_theory/fractional_ideal): prefer `(⊤ : ideal R)` over `1` (#8298) `fractional_ideal.lean` sometimes used `1` to denote the ideal of `R` containing each element of `R`. This PR should replace all remaining usages with `⊤ : ideal R`, following the convention in the rest of mathlib. Also a little `simp` lemma `coe_ideal_top` which was the motivation, since the proof should have been, and is now `by refl`. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.coe_ideal_top - theorem ring.fractional_ideal.coe_one_eq_coe_submodule_one + theorem ring.fractional_ideal.coe_one_eq_coe_submodule_top 2021-07-16 17:03:24 42f7ca0 chore(linear_algebra/linear_independent): use `is_empty ι` instead of `¬nonempty ι` (#8331) ESTIMATED CHANGES Modified src/field_theory/fixed.lean Modified src/linear_algebra/linear_independent.lean +/- theorem linear_independent_empty_type Modified src/ring_theory/polynomial/bernstein.lean 2021-07-16 16:03:11 9061ecc feat(topology/metric_space/holder): define Hölder continuity (#8309) Add definitions and some basic facts about Hölder continuous functions. ESTIMATED CHANGES Added src/topology/metric_space/holder.lean + theorem holder_with.comp + theorem holder_with.dist_le + theorem holder_with.dist_le_of_le + theorem holder_with.ediam_image_le + theorem holder_with.edist_le + theorem holder_with.edist_le_of_le + theorem holder_with.nndist_le + theorem holder_with.nndist_le_of_le + def holder_with + theorem holder_with_id + theorem holder_with_one 2021-07-16 15:14:22 35a8d93 chore(topology/algebra/infinite_sum): relax the requirements on `has_sum.smul` (#8312) ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean 2021-07-16 13:09:51 162221f chore(set_theory/*): use `is_empty α` instead of `¬nonempty α` (#8276) Split from #7826 ESTIMATED CHANGES Modified src/set_theory/cardinal.lean +/- theorem cardinal.sup_eq_zero Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.type_eq_zero_iff_empty + theorem ordinal.type_eq_zero_iff_is_empty + theorem ordinal.type_eq_zero_of_empty 2021-07-16 11:35:29 9a801ef docs(order/rel_iso): add module docstring (#8249) ESTIMATED CHANGES Modified src/order/rel_iso.lean +/- theorem rel_iso.apply_symm_apply 2021-07-16 09:16:30 e35d976 chore(algebra/quaternion): add `smul_mk` (#8126) This follows the pattern set by `mk_mul_mk` and `mk_add_mk`. ESTIMATED CHANGES Modified src/algebra/quaternion.lean + theorem quaternion_algebra.smul_mk 2021-07-16 09:16:29 610fab7 feat(set_theory/cofinality): more infinite pigeonhole principles (#7879) ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.union_finset_finite_of_range_finite Modified src/set_theory/cofinality.lean + theorem cardinal.exists_infinite_fiber + theorem cardinal.infinite_pigeonhole_card_lt + theorem cardinal.le_range_of_union_finset_eq_top 2021-07-16 07:34:18 e6ff367 feat(logic/embedding): simp lemma for injectivity for embeddings (#7881) ESTIMATED CHANGES Modified src/logic/embedding.lean + theorem function.embedding.apply_eq_iff_eq 2021-07-16 05:22:17 728eefe docs(data/fintype/basic): add module docstring (#8081) ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- theorem finset.piecewise_univ +/- theorem fintype.card_of_subtype +/- theorem fintype.exists_max +/- theorem fintype.mem_pi_finset +/- def fintype.of_list +/- def fintype.of_multiset +/- def fintype.pi_finset +/- theorem fintype.pi_finset_subset +/- theorem fintype.subtype_card +/- theorem mem_perms_of_list_of_mem 2021-07-16 00:27:05 4ae9792 chore(data/matrix/basic): add lemmas about dot_product and mul_vec (#8325) This renames: * `mul_vec_one` to `one_mul_vec` * `mul_vec_zero` to `zero_mul_vec` and adds the new lemmas: * `sub_mul_vec` * `mul_vec_sub` * `zero_mul_vec` * `mul_vec_zero` * `sub_dot_product` * `dot_product_sub` Some existing lemmas have had their variables extracted to sections. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.add_dot_product +/- theorem matrix.diagonal_dot_product +/- theorem matrix.dot_product_add +/- theorem matrix.dot_product_diagonal' +/- theorem matrix.dot_product_diagonal +/- theorem matrix.dot_product_neg +/- theorem matrix.dot_product_smul +/- theorem matrix.dot_product_star + theorem matrix.dot_product_sub +/- theorem matrix.dot_product_zero' +/- theorem matrix.dot_product_zero - theorem matrix.mul_vec_one +/- theorem matrix.neg_dot_product + theorem matrix.one_mul_vec +/- theorem matrix.smul_dot_product +/- theorem matrix.star_dot_product +/- theorem matrix.star_dot_product_star + theorem matrix.sub_dot_product +/- theorem matrix.vec_mul_zero +/- theorem matrix.zero_dot_product' +/- theorem matrix.zero_dot_product + theorem matrix.zero_mul_vec + theorem matrix.zero_vec_mul Modified src/linear_algebra/matrix/nonsingular_inverse.lean 2021-07-15 21:23:27 b577bb2 feat(measure_theory/conditional_expectation): define condexp_L2, conditional expectation of L2 functions (#8324) ESTIMATED CHANGES Modified src/measure_theory/conditional_expectation.lean + def measure_theory.condexp_L2 + theorem measure_theory.condexp_L2_indicator_of_measurable + theorem measure_theory.inner_condexp_L2_eq_inner_fun + theorem measure_theory.inner_condexp_L2_left_eq_right + theorem measure_theory.integrable_condexp_L2_of_finite_measure + theorem measure_theory.integrable_on_condexp_L2_of_measure_ne_top + theorem measure_theory.mem_Lp_meas_indicator_const_Lp + theorem measure_theory.norm_condexp_L2_coe_le + theorem measure_theory.norm_condexp_L2_le + theorem measure_theory.norm_condexp_L2_le_one + theorem measure_theory.snorm_condexp_L2_le 2021-07-15 17:38:21 79fbd46 feat(ring_theory/ideal): generalize two results from finset to multiset (#8320) Nothing exciting going on here, just copied two proofs, replaced all `finset.insert` with `multiset.cons` and `finset.prod` with `(multiset.map _).prod`, and used those to show the original results. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.is_prime.multiset_prod_le + theorem ideal.is_prime.multiset_prod_map_le + theorem ideal.multiset_prod_le_inf 2021-07-15 16:32:09 a783a47 feat(data/matrix/{basic, block}): missing lemmas on conj_transpose (#8303) This also moves some imports around to make the star operator on vectors available in matrix/basic.lean This is a follow up to #8291 ESTIMATED CHANGES Modified src/algebra/star/algebra.lean Modified src/algebra/star/pi.lean Modified src/data/matrix/basic.lean + theorem matrix.conj_transpose_col + theorem matrix.conj_transpose_row + theorem matrix.dot_product_star + theorem matrix.map_update_column + theorem matrix.map_update_row + theorem matrix.star_dot_product + theorem matrix.star_dot_product_star +/- theorem matrix.transpose_col +/- theorem matrix.transpose_row + theorem matrix.update_column_conj_transpose + theorem matrix.update_row_conj_transpose Modified src/data/matrix/block.lean + theorem matrix.block_diagonal'_conj_transpose + theorem matrix.block_diagonal'_map + theorem matrix.block_diagonal_conj_transpose + theorem matrix.block_diagonal_map + theorem matrix.from_blocks_conj_transpose + theorem matrix.from_blocks_map 2021-07-15 16:32:08 66055dd feat(algebra/lie/cartan_matrix): define the exceptional Lie algebras (#8299) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/lie/cartan_matrix.lean + def cartan_matrix.E₆ + def cartan_matrix.E₇ + def cartan_matrix.E₈ + def cartan_matrix.F₄ + def cartan_matrix.G₂ + def lie_algebra.e₆ + def lie_algebra.e₇ + def lie_algebra.e₈ + def lie_algebra.f₄ + def lie_algebra.g₂ 2021-07-15 15:05:29 bc1f145 feat(data/multiset): `<` on multisets is well-founded (#8319) This is vaguely related to #5783, in that it tries to solve a similar goal of finding a minimal multiset with some property. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.well_founded_lt 2021-07-15 13:15:59 0597b1d feat(analysis/normed_space/normed_group_hom): add equalizer (#8228) From LTE. We add equalizer of `normed_group_homs`. ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.equalizer.comm_sq₂ + theorem normed_group_hom.equalizer.comp_ι_eq + def normed_group_hom.equalizer.lift + def normed_group_hom.equalizer.lift_equiv + theorem normed_group_hom.equalizer.lift_norm_noninc + def normed_group_hom.equalizer.map + theorem normed_group_hom.equalizer.map_comp_map + theorem normed_group_hom.equalizer.map_id + theorem normed_group_hom.equalizer.map_norm_noninc + theorem normed_group_hom.equalizer.norm_lift_le + theorem normed_group_hom.equalizer.norm_map_le + def normed_group_hom.equalizer.ι + theorem normed_group_hom.equalizer.ι_comp_lift + theorem normed_group_hom.equalizer.ι_comp_map + theorem normed_group_hom.equalizer.ι_norm_noninc + def normed_group_hom.equalizer 2021-07-15 09:20:51 7e5be02 chore(algebra/*): make non-instance typeclasses reducible. (#8322) A follow up to #7835 ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/module/basic.lean +/- def module.comp_hom Modified src/group_theory/group_action/defs.lean +/- def distrib_mul_action.comp_hom +/- def mul_action.comp_hom 2021-07-15 05:43:19 e42af8d refactor(topology/category/Profinite): define Profinite as a subcategory of CompHaus (#8314) This adjusts the definition of Profinite to explicitly be a subcategory of CompHaus rather than a subcategory of Top which embeds into CompHaus. Essentially this means it's easier to construct an element of Profinite from an element of CompHaus. ESTIMATED CHANGES Modified src/topology/category/Profinite/cofiltered_limit.lean Modified src/topology/category/Profinite/default.lean + theorem Profinite.coe_to_CompHaus - theorem Profinite.coe_to_Top - def Profinite.to_CompHaus +/- def Profinite.to_Profinite_adj_to_CompHaus + def Profinite.to_Top + def Profinite_to_CompHaus - def Profinite_to_Top 2021-07-14 22:10:52 e343609 feat(measure_theory/simple_func_dense): induction lemmas for Lp.simple_func and Lp (#8300) The new lemmas, `Lp.simple_func.induction`, `Lp.induction`, allow one to prove a predicate for all elements of `Lp.simple_func` / `Lp` (here p < ∞), by proving it for characteristic functions and then checking it behaves appropriately under addition, and, in the second case, taking limits. They are modelled on existing lemmas such as `simple_func.induction`, `mem_ℒp.induction`, `integrable.induction`. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.mul_indicator_empty' Modified src/algebra/support.lean + theorem function.mul_support_const Modified src/measure_theory/integration.lean + theorem measure_theory.simple_func.support_indicator Modified src/measure_theory/lp_space.lean + theorem measure_theory.indicator_const_empty Modified src/measure_theory/simple_func_dense.lean + theorem measure_theory.Lp.induction + theorem measure_theory.Lp.simple_func.coe_indicator_const + def measure_theory.Lp.simple_func.indicator_const + theorem measure_theory.Lp.simple_func.to_simple_func_indicator_const + theorem measure_theory.simple_func.measure_lt_top_of_mem_ℒp_indicator 2021-07-14 18:22:17 19a156a refactor(algebra/ordered_ring): use `mul_le_mul'` for `canonically_ordered_comm_semiring` (#8284) * use `canonically_ordered_comm_semiring`, not `canonically_ordered_semiring` as a namespace; * add an instance `canonically_ordered_comm_semiring.to_covariant_mul_le`; * drop `canonically_ordered_semiring.mul_le_mul` etc in favor of `mul_le_mul'` etc. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean Modified src/algebra/group_power/order.lean + theorem canonically_ordered_comm_semiring.one_le_pow_of_one_le + theorem canonically_ordered_comm_semiring.pow_le_one + theorem canonically_ordered_comm_semiring.pow_le_pow_of_le_left + theorem canonically_ordered_comm_semiring.pow_pos - theorem canonically_ordered_semiring.one_le_pow_of_one_le - theorem canonically_ordered_semiring.pow_le_one - theorem canonically_ordered_semiring.pow_le_pow_of_le_left - theorem canonically_ordered_semiring.pow_pos Modified src/algebra/ordered_ring.lean + theorem canonically_ordered_comm_semiring.mul_pos + theorem canonically_ordered_comm_semiring.zero_lt_one - theorem canonically_ordered_semiring.mul_le_mul - theorem canonically_ordered_semiring.mul_le_mul_left' - theorem canonically_ordered_semiring.mul_le_mul_right' - theorem canonically_ordered_semiring.mul_pos - theorem canonically_ordered_semiring.zero_lt_one Modified src/algebra/squarefree.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/specific_limits.lean Modified src/data/nat/pow.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/measure_theory/integration.lean Modified src/ring_theory/perfection.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/lipschitz.lean 2021-07-14 17:41:56 e9b1fbd feat(combinatorics/simple_graph): add maps and subgraphs (#8223) Add graph homomorphisms, isomorphisms, and embeddings. Define subgraphs and supporting lemmas and definitions. Also renamed `edge_symm` to `adj_comm`. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/combinatorics/simple_graph/basic.lean + def empty_graph + theorem simple_graph.adj_comm + theorem simple_graph.adj_symm - theorem simple_graph.edge_symm' - theorem simple_graph.edge_symm + theorem simple_graph.embedding.apply_mem_neighbor_set_iff + theorem simple_graph.embedding.coe_comp + def simple_graph.embedding.comp + theorem simple_graph.embedding.map_adj_iff + def simple_graph.embedding.map_edge_set + theorem simple_graph.embedding.map_mem_edge_set_iff + def simple_graph.embedding.map_neighbor_set + def simple_graph.embedding.refl + def simple_graph.embedding.to_hom + def simple_graph.embedding + theorem simple_graph.hom.apply_mem_neighbor_set + theorem simple_graph.hom.coe_comp + def simple_graph.hom.comp + def simple_graph.hom.id + theorem simple_graph.hom.map_adj + theorem simple_graph.hom.map_edge_set.injective + def simple_graph.hom.map_edge_set + theorem simple_graph.hom.map_mem_edge_set + def simple_graph.hom.map_neighbor_set + def simple_graph.hom + theorem simple_graph.iso.apply_mem_neighbor_set_iff + theorem simple_graph.iso.card_eq_of_iso + theorem simple_graph.iso.coe_comp + def simple_graph.iso.comp + theorem simple_graph.iso.map_adj_iff + def simple_graph.iso.map_edge_set + theorem simple_graph.iso.map_mem_edge_set_iff + def simple_graph.iso.map_neighbor_set + def simple_graph.iso.refl + def simple_graph.iso.symm + def simple_graph.iso.to_embedding + def simple_graph.iso.to_hom + def simple_graph.iso Added src/combinatorics/simple_graph/subgraph.lean + theorem simple_graph.subgraph.adj_comm + theorem simple_graph.subgraph.adj_symm + def simple_graph.subgraph.bot + def simple_graph.subgraph.bot_equiv + def simple_graph.subgraph.coe + theorem simple_graph.subgraph.coe_adj_sub + theorem simple_graph.subgraph.coe_degree + def simple_graph.subgraph.coe_neighbor_set_equiv + def simple_graph.subgraph.copy + theorem simple_graph.subgraph.copy_eq + def simple_graph.subgraph.degree + theorem simple_graph.subgraph.degree_le' + theorem simple_graph.subgraph.degree_le + def simple_graph.subgraph.edge_set + theorem simple_graph.subgraph.edge_set_subset + def simple_graph.subgraph.finite_at_of_subgraph + def simple_graph.subgraph.incidence_set + theorem simple_graph.subgraph.incidence_set_subset + theorem simple_graph.subgraph.incidence_set_subset_incidence_set + def simple_graph.subgraph.inter + def simple_graph.subgraph.is_induced + def simple_graph.subgraph.is_spanning + def simple_graph.subgraph.is_subgraph + theorem simple_graph.subgraph.map.injective + def simple_graph.subgraph.map + theorem simple_graph.subgraph.map_top.injective + def simple_graph.subgraph.map_top + theorem simple_graph.subgraph.map_top_to_fun + theorem simple_graph.subgraph.mem_edge_set + theorem simple_graph.subgraph.mem_neighbor_set + theorem simple_graph.subgraph.mem_verts_if_mem_edge + def simple_graph.subgraph.neighbor_set + theorem simple_graph.subgraph.neighbor_set_subset + theorem simple_graph.subgraph.neighbor_set_subset_of_subgraph + def simple_graph.subgraph.top + def simple_graph.subgraph.top_equiv + def simple_graph.subgraph.union + def simple_graph.subgraph.vert + structure simple_graph.subgraph Modified src/data/sym2.lean + theorem sym2.map.injective + theorem sym2.map_map +/- theorem sym2.map_pair_eq 2021-07-14 15:21:29 bcc35c7 feat(group_theory/submonoid/operations): `add_equiv.of_left_inverse` to match `linear_equiv.of_left_inverse` (#8279) ESTIMATED CHANGES Modified src/group_theory/submonoid/operations.lean + def mul_equiv.of_left_inverse' 2021-07-14 13:57:59 375dd53 refactor(geometry/manifold): split `bump_function` into 3 files (#8313) This is the a part of #8309. Both code and comments were moved with almost no modifications: added/removed `variables`/`section`s, slightly adjusted comments to glue them together. ESTIMATED CHANGES Modified src/geometry/manifold/bump_function.lean - theorem exists_embedding_finrank_of_compact - theorem smooth_bump_covering.apply_ind - def smooth_bump_covering.choice - def smooth_bump_covering.choice_set - theorem smooth_bump_covering.coe_mk - theorem smooth_bump_covering.comp_embedding_pi_tangent_mfderiv - def smooth_bump_covering.embedding_pi_tangent - theorem smooth_bump_covering.embedding_pi_tangent_inj_on - theorem smooth_bump_covering.embedding_pi_tangent_injective - theorem smooth_bump_covering.embedding_pi_tangent_injective_mfderiv - theorem smooth_bump_covering.embedding_pi_tangent_ker_mfderiv - theorem smooth_bump_covering.eventually_eq_one - theorem smooth_bump_covering.exists_immersion_finrank - theorem smooth_bump_covering.exists_is_subordinate - def smooth_bump_covering.ind - def smooth_bump_covering.is_subordinate - theorem smooth_bump_covering.mem_chart_at_ind_source - theorem smooth_bump_covering.mem_chart_at_source_of_eq_one - theorem smooth_bump_covering.mem_ext_chart_at_ind_source - theorem smooth_bump_covering.mem_ext_chart_at_source_of_eq_one - theorem smooth_bump_covering.mem_support_ind - structure smooth_bump_covering Added src/geometry/manifold/partition_of_unity.lean + theorem smooth_bump_covering.apply_ind + def smooth_bump_covering.choice + def smooth_bump_covering.choice_set + theorem smooth_bump_covering.coe_mk + theorem smooth_bump_covering.eventually_eq_one + theorem smooth_bump_covering.exists_is_subordinate + def smooth_bump_covering.ind + def smooth_bump_covering.is_subordinate + theorem smooth_bump_covering.mem_chart_at_ind_source + theorem smooth_bump_covering.mem_chart_at_source_of_eq_one + theorem smooth_bump_covering.mem_ext_chart_at_ind_source + theorem smooth_bump_covering.mem_ext_chart_at_source_of_eq_one + theorem smooth_bump_covering.mem_support_ind + structure smooth_bump_covering Added src/geometry/manifold/whitney_embedding.lean + theorem exists_embedding_finrank_of_compact + theorem smooth_bump_covering.comp_embedding_pi_tangent_mfderiv + def smooth_bump_covering.embedding_pi_tangent + theorem smooth_bump_covering.embedding_pi_tangent_inj_on + theorem smooth_bump_covering.embedding_pi_tangent_injective + theorem smooth_bump_covering.embedding_pi_tangent_injective_mfderiv + theorem smooth_bump_covering.embedding_pi_tangent_ker_mfderiv + theorem smooth_bump_covering.exists_immersion_finrank 2021-07-14 13:57:58 5bac21a chore(algebra/module/pi): add `pi.smul_def` (#8311) Sometimes it is useful to rewrite unapplied `s • x` (I need it in a branch that is not yet ready for review). We already have `pi.zero_def`, `pi.add_def`, etc. ESTIMATED CHANGES Modified src/algebra/module/pi.lean + theorem pi.smul_def 2021-07-14 13:57:57 7fccf40 feat(algebraic_topology/topological_simplex): This defines the natural functor from Top to sSet. (#8305) This PR also provides the geometric realization functor and the associated adjunction. ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_set.lean Added src/algebraic_topology/topological_simplex.lean + theorem simplex_category.coe_to_Top_map + theorem simplex_category.continuous_to_Top_map + def simplex_category.to_Top + def simplex_category.to_Top_map + theorem simplex_category.to_Top_obj.ext + def simplex_category.to_Top_obj 2021-07-14 13:57:56 7d53431 feat(measure_theory/integration): if a function has bounded integral on all sets of finite measure, then it is integrable (#8297) If the measure is sigma-finite and a function has integral bounded by some C for all measurable sets with finite measure, then its integral over the whole space is bounded by that same C. This can be used to show that a function is integrable. ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_le_of_forall_fin_meas_le' + theorem measure_theory.lintegral_le_of_forall_fin_meas_le + theorem measure_theory.lintegral_le_of_forall_fin_meas_le_of_measurable + theorem measure_theory.univ_le_of_forall_fin_meas_le Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable_of_forall_fin_meas_le' + theorem measure_theory.integrable_of_forall_fin_meas_le Modified src/measure_theory/measurable_space_def.lean 2021-07-14 12:56:52 3b7e7bd feat(normed_space): controlled_sum_of_mem_closure (#8310) From LTE ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem controlled_sum_of_mem_closure + theorem controlled_sum_of_mem_closure_range Modified src/order/filter/at_top_bot.lean - theorem filter.strict_mono_tendsto_at_top + theorem strict_mono.tendsto_at_top 2021-07-14 11:55:45 2e9aa83 chore(analysis/special_functions/pow): golf a few proofs (#8308) * add `ennreal.zero_rpow_mul_self` and `ennreal.mul_rpow_eq_ite`; * use the latter lemma to golf other proofs about `(x * y) ^ z`; * drop unneeded argument in `ennreal.inv_rpow_of_pos`, rename it to `ennreal.inv_rpow`; * add `ennreal.strict_mono_rpow_of_pos` and `ennreal.monotone_rpow_of_nonneg`, use themm to golf some proofs. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.inv_rpow - theorem ennreal.inv_rpow_of_pos + theorem ennreal.monotone_rpow_of_nonneg + theorem ennreal.mul_rpow_eq_ite + theorem ennreal.strict_mono_rpow_of_pos + theorem ennreal.zero_rpow_mul_self Modified src/data/real/ennreal.lean + theorem ennreal.eq_inv_of_mul_eq_one Modified src/measure_theory/mean_inequalities.lean 2021-07-14 10:14:23 743209c chore(algebra/big_operators/basic): spaces around binders (#8307) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.exists_ne_one_of_prod_ne_one +/- theorem finset.prod_congr +/- theorem finset.prod_eq_one +/- theorem finset.prod_eq_zero_iff +/- theorem finset.sum_const_nat 2021-07-14 10:14:22 e6731de feat(algebra/pointwise): `smul_comm_class` instances for `set` (#8292) I'm not very familiar with `smul_comm_class`, so these instances might need to be tweaked slightly. ESTIMATED CHANGES Modified src/algebra/pointwise.lean 2021-07-14 10:14:21 656722c refactor(measure_theory/measure_space): use `covariant_class` instead of `add_le_add` (#8285) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean 2021-07-14 10:14:18 51cc43e feat(measure_theory/borel_space): a monotone function is measurable (#8045) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem measurable_of_antimono + theorem measurable_of_monotone 2021-07-14 08:37:24 8e5af43 chore(algebra/big_operators/basic): rename sum_(nat/int)_cast and (nat/int).coe_prod (#8264) The current names aren't great because 1. For `sum_nat_cast` and `sum_int_cast`, the LHS isn't a sum of casts but a cast of sums, and it doesn't follow any other naming convention (`nat.cast_...` or `....coe_sum`). 2. For `.coe_prod`, the coercion from `ℕ` or `ℤ` should be called `cast`. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified src/algebra/big_operators/basic.lean - theorem finset.sum_int_cast - theorem finset.sum_nat_cast + theorem int.cast_prod + theorem int.cast_sum - theorem int.coe_prod + theorem nat.cast_prod + theorem nat.cast_sum - theorem nat.coe_prod +/- theorem units.coe_prod Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/field_theory/chevalley_warning.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/measure_theory/probability_mass_function.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/quadratic_reciprocity.lean 2021-07-14 06:54:06 4709e61 doc(*): bold a few more named theorems (#8252) ESTIMATED CHANGES Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/convex/caratheodory.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/vitali_caratheodory.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/dioph.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/ideal/basic.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/continuous_function/weierstrass.lean Modified src/topology/subset_properties.lean 2021-07-13 21:48:55 5021c1f feat(data/int): conditionally complete linear order (#8149) Prove that the integers form a conditionally complete linear order. I do not have a specific goal in mind for this, but it would have been helpful to formulate one of the Proof Ground problems using this. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.coe_greatest_of_bdd_eq + theorem int.coe_least_of_bdd_eq Added src/data/int/order.lean + theorem int.cInf_empty + theorem int.cInf_eq_least_of_bdd + theorem int.cInf_mem + theorem int.cInf_of_not_bdd_below + theorem int.cSup_empty + theorem int.cSup_eq_greatest_of_bdd + theorem int.cSup_mem + theorem int.cSup_of_not_bdd_above 2021-07-13 20:14:44 29b63a7 feat(data/matrix/basic): add conj_transpose (#8291) As requested by Eric Wieser, I pulled one single change of #8289 out into a new PR. As such, this PR will not block anything in #8289. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + def matrix.conj_transpose + theorem matrix.conj_transpose_add + theorem matrix.conj_transpose_apply + theorem matrix.conj_transpose_conj_transpose + theorem matrix.conj_transpose_minor + theorem matrix.conj_transpose_mul + theorem matrix.conj_transpose_neg + theorem matrix.conj_transpose_one + theorem matrix.conj_transpose_reindex + theorem matrix.conj_transpose_smul + theorem matrix.conj_transpose_sub + theorem matrix.conj_transpose_zero +/- theorem matrix.star_apply + theorem matrix.star_eq_conj_transpose +/- theorem matrix.star_mul 2021-07-13 20:14:43 63266ff feat(group_theory/free_product): the free product of an indexed family of monoids (#8256) Defines the free product (categorical coproduct) of an indexed family of monoids. Proves its universal property. The free product of groups is a group. Split off from #7395 ESTIMATED CHANGES Modified docs/references.bib Added src/group_theory/free_product.lean + theorem free_product.ext_hom + theorem free_product.induction_on + theorem free_product.inv_def + def free_product.lift + theorem free_product.lift_of + def free_product.of + theorem free_product.of_apply + theorem free_product.of_injective + theorem free_product.of_left_inverse + inductive free_product.rel + def free_product 2021-07-13 18:51:54 905b875 chore(data/matrix/block): move block matrices into their own file (#8290) This is a straight cut-and-paste, with no reordering or renaming. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/import.20fails/near/245802618) ESTIMATED CHANGES Modified src/data/matrix/basic.lean - def matrix.block_diagonal' - theorem matrix.block_diagonal'_add - theorem matrix.block_diagonal'_apply - theorem matrix.block_diagonal'_apply_eq - theorem matrix.block_diagonal'_apply_ne - theorem matrix.block_diagonal'_diagonal - theorem matrix.block_diagonal'_eq_block_diagonal - theorem matrix.block_diagonal'_minor_eq_block_diagonal - theorem matrix.block_diagonal'_mul - theorem matrix.block_diagonal'_neg - theorem matrix.block_diagonal'_one - theorem matrix.block_diagonal'_smul - theorem matrix.block_diagonal'_sub - theorem matrix.block_diagonal'_transpose - theorem matrix.block_diagonal'_zero - def matrix.block_diagonal - theorem matrix.block_diagonal_add - theorem matrix.block_diagonal_apply - theorem matrix.block_diagonal_apply_eq - theorem matrix.block_diagonal_apply_ne - theorem matrix.block_diagonal_diagonal - theorem matrix.block_diagonal_mul - theorem matrix.block_diagonal_neg - theorem matrix.block_diagonal_one - theorem matrix.block_diagonal_smul - theorem matrix.block_diagonal_sub - theorem matrix.block_diagonal_transpose - theorem matrix.block_diagonal_zero - def matrix.from_blocks - theorem matrix.from_blocks_add - theorem matrix.from_blocks_apply₁₁ - theorem matrix.from_blocks_apply₁₂ - theorem matrix.from_blocks_apply₂₁ - theorem matrix.from_blocks_apply₂₂ - theorem matrix.from_blocks_diagonal - theorem matrix.from_blocks_multiply - theorem matrix.from_blocks_one - theorem matrix.from_blocks_smul - theorem matrix.from_blocks_to_blocks - theorem matrix.from_blocks_transpose - def matrix.to_block - theorem matrix.to_block_apply - theorem matrix.to_blocks_from_blocks₁₁ - theorem matrix.to_blocks_from_blocks₁₂ - theorem matrix.to_blocks_from_blocks₂₁ - theorem matrix.to_blocks_from_blocks₂₂ - def matrix.to_blocks₁₁ - def matrix.to_blocks₁₂ - def matrix.to_blocks₂₁ - def matrix.to_blocks₂₂ - def matrix.to_square_block' - def matrix.to_square_block - theorem matrix.to_square_block_def' - theorem matrix.to_square_block_def - def matrix.to_square_block_prop - theorem matrix.to_square_block_prop_def Added src/data/matrix/block.lean + def matrix.block_diagonal' + theorem matrix.block_diagonal'_add + theorem matrix.block_diagonal'_apply + theorem matrix.block_diagonal'_apply_eq + theorem matrix.block_diagonal'_apply_ne + theorem matrix.block_diagonal'_diagonal + theorem matrix.block_diagonal'_eq_block_diagonal + theorem matrix.block_diagonal'_minor_eq_block_diagonal + theorem matrix.block_diagonal'_mul + theorem matrix.block_diagonal'_neg + theorem matrix.block_diagonal'_one + theorem matrix.block_diagonal'_smul + theorem matrix.block_diagonal'_sub + theorem matrix.block_diagonal'_transpose + theorem matrix.block_diagonal'_zero + def matrix.block_diagonal + theorem matrix.block_diagonal_add + theorem matrix.block_diagonal_apply + theorem matrix.block_diagonal_apply_eq + theorem matrix.block_diagonal_apply_ne + theorem matrix.block_diagonal_diagonal + theorem matrix.block_diagonal_mul + theorem matrix.block_diagonal_neg + theorem matrix.block_diagonal_one + theorem matrix.block_diagonal_smul + theorem matrix.block_diagonal_sub + theorem matrix.block_diagonal_transpose + theorem matrix.block_diagonal_zero + def matrix.from_blocks + theorem matrix.from_blocks_add + theorem matrix.from_blocks_apply₁₁ + theorem matrix.from_blocks_apply₁₂ + theorem matrix.from_blocks_apply₂₁ + theorem matrix.from_blocks_apply₂₂ + theorem matrix.from_blocks_diagonal + theorem matrix.from_blocks_multiply + theorem matrix.from_blocks_one + theorem matrix.from_blocks_smul + theorem matrix.from_blocks_to_blocks + theorem matrix.from_blocks_transpose + def matrix.to_block + theorem matrix.to_block_apply + theorem matrix.to_blocks_from_blocks₁₁ + theorem matrix.to_blocks_from_blocks₁₂ + theorem matrix.to_blocks_from_blocks₂₁ + theorem matrix.to_blocks_from_blocks₂₂ + def matrix.to_blocks₁₁ + def matrix.to_blocks₁₂ + def matrix.to_blocks₂₁ + def matrix.to_blocks₂₂ + def matrix.to_square_block' + def matrix.to_square_block + theorem matrix.to_square_block_def' + theorem matrix.to_square_block_def + def matrix.to_square_block_prop + theorem matrix.to_square_block_prop_def Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/matrix/to_lin.lean 2021-07-13 18:51:53 461130b feat(category_theory/monoidal): the definition of Tor (#7512) # Tor, the left-derived functor of tensor product We define `tor C n : C ⥤ C ⥤ C`, by left-deriving in the second factor of `(X, Y) ↦ X ⊗ Y`. For now we have almost nothing to say about it! It would be good to show that this is naturally isomorphic to the functor obtained by left-deriving in the first factor, instead. ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean + def category_theory.monoidal_category.tensoring_left +/- def category_theory.monoidal_category.tensoring_right Added src/category_theory/monoidal/preadditive.lean Added src/category_theory/monoidal/tor.lean + def category_theory.Tor' + def category_theory.Tor'_succ_of_projective + def category_theory.Tor + def category_theory.Tor_succ_of_projective 2021-07-13 17:32:47 b091c3f feat(algebra/direct_sum): the submodules of an internal direct sum satisfy `supr A = ⊤` (#8274) The main results here are: * `direct_sum.add_submonoid_is_internal.supr_eq_top` * `direct_sum.submodule_is_internal.supr_eq_top` Which we prove using the new lemmas * `add_submonoid.supr_eq_mrange_dfinsupp_sum_add_hom` * `submodule.supr_eq_range_dfinsupp_lsum` There's no obvious way to reuse the proofs between the two, but thankfully all four proofs are quite short anyway. These should aid in shortening #8246. ESTIMATED CHANGES Modified src/algebra/direct_sum.lean + theorem direct_sum.add_submonoid_is_internal.supr_eq_top Modified src/data/dfinsupp.lean + theorem add_submonoid.mem_supr_iff_exists_dfinsupp' + theorem add_submonoid.mem_supr_iff_exists_dfinsupp + theorem add_submonoid.supr_eq_mrange_dfinsupp_sum_add_hom Modified src/linear_algebra/dfinsupp.lean +/- theorem submodule.dfinsupp_sum_add_hom_mem +/- theorem submodule.dfinsupp_sum_mem + theorem submodule.mem_supr_iff_exists_dfinsupp' + theorem submodule.mem_supr_iff_exists_dfinsupp + theorem submodule.supr_eq_range_dfinsupp_lsum Modified src/linear_algebra/direct_sum_module.lean + theorem direct_sum.submodule_is_internal.supr_eq_top 2021-07-13 16:48:04 3a0ef3c feat(ring_theory): (strict) monotonicity of `coe_submodule` (#8273) ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem is_fraction_ring.coe_submodule_le_coe_submodule + theorem is_fraction_ring.coe_submodule_strict_mono + theorem is_localization.coe_submodule_le_coe_submodule + theorem is_localization.coe_submodule_mono + theorem is_localization.coe_submodule_strict_mono 2021-07-13 16:48:02 8be0eda chore(ring_theory): allow Dedekind domains to be fields (#8271) During the Dedekind domain project, we found that the `¬ is_field R` condition is almost never needed, and it gets in the way when proving rings of integers are Dedekind domains. This PR removes this assumption from the three definitions. Co-Authored-By: Ashvni Co-Authored-By: Filippo A. E. Nuccio ESTIMATED CHANGES Modified docs/references.bib Modified src/ring_theory/dedekind_domain.lean + def is_dedekind_domain_inv - structure is_dedekind_domain_inv 2021-07-13 15:34:19 815e91f chore(data/nat/prime): fix + add missing lemmas (#8066) I fixed up some indents as well, as they were bothering me quite a bit. The only "new" content is 597 - 617. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.factors_subset_of_dvd + theorem nat.factors_subset_right +/- theorem nat.le_min_fac' +/- theorem nat.le_min_fac +/- def nat.min_fac +/- def nat.min_fac_aux +/- theorem nat.min_fac_aux_has_prop +/- theorem nat.min_fac_dvd +/- theorem nat.min_fac_eq +/- theorem nat.min_fac_eq_one_iff +/- theorem nat.min_fac_eq_two_iff +/- theorem nat.min_fac_has_prop +/- theorem nat.min_fac_le +/- theorem nat.min_fac_le_div +/- theorem nat.min_fac_le_of_dvd +/- theorem nat.min_fac_one +/- theorem nat.min_fac_pos +/- theorem nat.min_fac_prime +/- theorem nat.min_fac_sq_le_self +/- theorem nat.min_fac_zero +/- theorem nat.not_prime_iff_min_fac_lt +/- theorem nat.prime_def_min_fac 2021-07-13 12:28:43 bf86834 chore(probability_theory/integration): style changes. Make arguments implicit, remove spaces, etc. (#8286) - make the measurable_space arguments of indep_fun implicit again. They were made explicit to accommodate the way `lintegral_mul_eq_lintegral_mul_lintegral_of_indep_fun` was written, with explicit `(borel ennreal)` arguments. Those arguments are not needed and are removed. - use `measurable_set T` instead of `M.measurable_set' T`. - write the type of several `have` explicitly. - remove some spaces - ensure there is only one tactic per line - use `exact` instead of `apply` when the tactic is finishing ESTIMATED CHANGES Modified src/probability_theory/independence.lean +/- def probability_theory.indep_fun Modified src/probability_theory/integration.lean +/- theorem probability_theory.lintegral_mul_eq_lintegral_mul_lintegral_of_indep_fun 2021-07-13 12:28:42 f1e27d2 feat(linear_algebra/finsupp): mem_supr_iff_exists_finset (#8268) This is an `iff` version of `exists_finset_of_mem_supr` ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean + theorem submodule.mem_supr_iff_exists_finset 2021-07-13 12:28:40 3e56439 chore(data/set/intervals): relax linear_order to preorder in the proofs of `Ixx_eq_empty_iff` (#8071) The previous formulations of `Ixx_eq_empty(_iff)` are basically a chaining of this formulation plus `not_lt` or `not_le`. But `not_lt` and `not_le` require `linear_order`. Removing them allows relaxing the typeclasses assumptions on `Ixx_eq_empty_iff` and slightly generalising `Ixx_eq_empty`. ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Modified src/data/set/intervals/basic.lean +/- theorem set.Icc_eq_empty +/- theorem set.Icc_eq_empty_iff + theorem set.Icc_eq_empty_of_lt +/- theorem set.Ico_eq_empty +/- theorem set.Ico_eq_empty_iff + theorem set.Ico_eq_empty_of_le +/- theorem set.Ico_self +/- theorem set.Ioc_eq_empty + theorem set.Ioc_eq_empty_iff + theorem set.Ioc_eq_empty_of_le +/- theorem set.Ioc_self +/- theorem set.Ioo_eq_empty +/- theorem set.Ioo_eq_empty_iff + theorem set.Ioo_eq_empty_of_le +/- theorem set.Ioo_self Modified src/data/set/intervals/disjoint.lean Modified src/data/set/intervals/surj_on.lean Modified src/measure_theory/interval_integral.lean 2021-07-13 11:23:36 bb53a92 chore(data/mv_polynomial/basic): use `is_empty σ` instead of `¬nonempty σ` (#8277) Split from #7826 ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.C_surjective - theorem mv_polynomial.C_surjective_fin_0 Modified src/ring_theory/jacobson.lean 2021-07-13 10:08:14 dd9a0ea feat(geometry/manifold): add `charted_space` and `model_with_corners` for pi types (#6578) Also use `set.image2` in the `charted_space` instance for `model_prod`. ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean Modified src/geometry/manifold/charted_space.lean + def model_pi + theorem pi_charted_space_chart_at Modified src/geometry/manifold/smooth_manifold_with_corners.lean + def model_with_corners.pi 2021-07-13 09:28:15 7bed785 refactor(topology/metric/gromov_hausdorff_realized): speed up a proof (#8287) ESTIMATED CHANGES Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2021-07-13 07:40:48 f1f4084 feat(topology/algebra/ordered/basic): basis for the neighbourhoods of `top`/`bot` (#8283) ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean + theorem nhds_bot_basis + theorem nhds_top_basis Modified src/topology/instances/ennreal.lean + theorem ennreal.nhds_top_basis + theorem ennreal.nhds_zero_basis Modified src/topology/instances/nnreal.lean + theorem nnreal.nhds_zero + theorem nnreal.nhds_zero_basis 2021-07-13 07:09:10 f302c97 feat(measure_theory/l2_space): the inner product of indicator_const_Lp and a function is the set_integral (#8229) ESTIMATED CHANGES Modified src/measure_theory/integrable_on.lean + theorem measure_theory.integrable_on_Lp_of_measure_ne_top Modified src/measure_theory/l2_space.lean + theorem measure_theory.L2.inner_indicator_const_Lp_eq_inner_set_integral + theorem measure_theory.L2.inner_indicator_const_Lp_eq_set_integral_inner + theorem measure_theory.L2.inner_indicator_const_Lp_one Modified src/measure_theory/set_integral.lean + theorem integral_eq_zero_of_forall_integral_inner_eq_zero + theorem integral_inner 2021-07-12 22:46:15 9dfb9a6 chore(topology/topological_fiber_bundle): renaming (#8270) In this PR I changed - `prebundle_trivialization` to `topological_fiber_bundle.pretrivialization` - `bundle_trivialization` to `topological_fiber_bundle.trivialization` so to make names consistent with `vector_bundle`. I also changed the name of the file for consistency. ESTIMATED CHANGES Modified src/geometry/manifold/basic_smooth_bundle.lean Renamed src/topology/topological_fiber_bundle.lean to src/topology/fiber_bundle.lean - theorem bundle_trivialization.apply_symm_apply' - theorem bundle_trivialization.apply_symm_apply - theorem bundle_trivialization.coe_coe - theorem bundle_trivialization.coe_fst' - theorem bundle_trivialization.coe_fst - theorem bundle_trivialization.coe_fst_eventually_eq_proj' - theorem bundle_trivialization.coe_fst_eventually_eq_proj - theorem bundle_trivialization.coe_mk - def bundle_trivialization.comp_homeomorph - theorem bundle_trivialization.continuous_at_proj - theorem bundle_trivialization.continuous_coord_change - def bundle_trivialization.coord_change - theorem bundle_trivialization.coord_change_apply_snd - theorem bundle_trivialization.coord_change_coord_change - def bundle_trivialization.coord_change_homeomorph - theorem bundle_trivialization.coord_change_homeomorph_coe - theorem bundle_trivialization.coord_change_same - theorem bundle_trivialization.coord_change_same_apply - theorem bundle_trivialization.frontier_preimage - theorem bundle_trivialization.is_image_preimage_prod - theorem bundle_trivialization.map_proj_nhds - theorem bundle_trivialization.map_target - theorem bundle_trivialization.mem_source - theorem bundle_trivialization.mem_target - theorem bundle_trivialization.mk_coord_change - theorem bundle_trivialization.mk_proj_snd' - theorem bundle_trivialization.mk_proj_snd - theorem bundle_trivialization.proj_symm_apply' - theorem bundle_trivialization.proj_symm_apply - def bundle_trivialization.restr_open - theorem bundle_trivialization.source_inter_preimage_target_inter - theorem bundle_trivialization.symm_apply_mk_proj - def bundle_trivialization.to_prebundle_trivialization - def bundle_trivialization.trans_fiber_homeomorph - theorem bundle_trivialization.trans_fiber_homeomorph_apply - structure bundle_trivialization +/- theorem is_topological_fiber_bundle.exists_trivialization_Icc_subset - theorem prebundle_trivialization.apply_symm_apply' - theorem prebundle_trivialization.apply_symm_apply - theorem prebundle_trivialization.coe_coe - theorem prebundle_trivialization.coe_fst' - theorem prebundle_trivialization.coe_fst - theorem prebundle_trivialization.mem_source - theorem prebundle_trivialization.mem_target - theorem prebundle_trivialization.mk_proj_snd' - theorem prebundle_trivialization.mk_proj_snd - theorem prebundle_trivialization.preimage_symm_proj_base_set - theorem prebundle_trivialization.preimage_symm_proj_inter - theorem prebundle_trivialization.proj_symm_apply' - theorem prebundle_trivialization.proj_symm_apply - def prebundle_trivialization.set_symm - theorem prebundle_trivialization.symm_apply_mk_proj - structure prebundle_trivialization + theorem topological_fiber_bundle.pretrivialization.apply_symm_apply' + theorem topological_fiber_bundle.pretrivialization.apply_symm_apply + theorem topological_fiber_bundle.pretrivialization.coe_coe + theorem topological_fiber_bundle.pretrivialization.coe_fst' + theorem topological_fiber_bundle.pretrivialization.coe_fst + theorem topological_fiber_bundle.pretrivialization.mem_source + theorem topological_fiber_bundle.pretrivialization.mem_target + theorem topological_fiber_bundle.pretrivialization.mk_proj_snd' + theorem topological_fiber_bundle.pretrivialization.mk_proj_snd + theorem topological_fiber_bundle.pretrivialization.preimage_symm_proj_base_set + theorem topological_fiber_bundle.pretrivialization.preimage_symm_proj_inter + theorem topological_fiber_bundle.pretrivialization.proj_symm_apply' + theorem topological_fiber_bundle.pretrivialization.proj_symm_apply + def topological_fiber_bundle.pretrivialization.set_symm + theorem topological_fiber_bundle.pretrivialization.symm_apply_mk_proj + structure topological_fiber_bundle.pretrivialization + theorem topological_fiber_bundle.trivialization.apply_symm_apply' + theorem topological_fiber_bundle.trivialization.apply_symm_apply + theorem topological_fiber_bundle.trivialization.coe_coe + theorem topological_fiber_bundle.trivialization.coe_fst' + theorem topological_fiber_bundle.trivialization.coe_fst + theorem topological_fiber_bundle.trivialization.coe_fst_eventually_eq_proj' + theorem topological_fiber_bundle.trivialization.coe_fst_eventually_eq_proj + theorem topological_fiber_bundle.trivialization.coe_mk + def topological_fiber_bundle.trivialization.comp_homeomorph + theorem topological_fiber_bundle.trivialization.continuous_at_proj + theorem topological_fiber_bundle.trivialization.continuous_coord_change + def topological_fiber_bundle.trivialization.coord_change + theorem topological_fiber_bundle.trivialization.coord_change_apply_snd + theorem topological_fiber_bundle.trivialization.coord_change_coord_change + def topological_fiber_bundle.trivialization.coord_change_homeomorph + theorem topological_fiber_bundle.trivialization.coord_change_homeomorph_coe + theorem topological_fiber_bundle.trivialization.coord_change_same + theorem topological_fiber_bundle.trivialization.coord_change_same_apply + theorem topological_fiber_bundle.trivialization.frontier_preimage + theorem topological_fiber_bundle.trivialization.is_image_preimage_prod + theorem topological_fiber_bundle.trivialization.map_proj_nhds + theorem topological_fiber_bundle.trivialization.map_target + theorem topological_fiber_bundle.trivialization.mem_source + theorem topological_fiber_bundle.trivialization.mem_target + theorem topological_fiber_bundle.trivialization.mk_coord_change + theorem topological_fiber_bundle.trivialization.mk_proj_snd' + theorem topological_fiber_bundle.trivialization.mk_proj_snd + theorem topological_fiber_bundle.trivialization.proj_symm_apply' + theorem topological_fiber_bundle.trivialization.proj_symm_apply + def topological_fiber_bundle.trivialization.restr_open + theorem topological_fiber_bundle.trivialization.source_inter_preimage_target_inter + theorem topological_fiber_bundle.trivialization.symm_apply_mk_proj + def topological_fiber_bundle.trivialization.to_pretrivialization + def topological_fiber_bundle.trivialization.trans_fiber_homeomorph + theorem topological_fiber_bundle.trivialization.trans_fiber_homeomorph_apply + structure topological_fiber_bundle.trivialization +/- def topological_fiber_bundle_core.local_triv +/- def topological_fiber_bundle_core.local_triv_at - def topological_fiber_prebundle.bundle_trivialization_at + theorem topological_fiber_prebundle.continuous_symm_pretrivialization_at - theorem topological_fiber_prebundle.continuous_symm_trivialization_at + theorem topological_fiber_prebundle.is_open_source_pretrivialization_at - theorem topological_fiber_prebundle.is_open_source_trivialization_at + theorem topological_fiber_prebundle.is_open_target_pretrivialization_at_inter - theorem topological_fiber_prebundle.is_open_target_trivialization_at_inter + def topological_fiber_prebundle.trivialization_at Modified src/topology/vector_bundle.lean - def topological_vector_bundle.trivial_bundle_trivialization + def topological_vector_bundle.trivial_topological_vector_bundle.trivialization +/- theorem topological_vector_bundle.trivialization.coe_fst +/- def topological_vector_bundle.trivialization.continuous_linear_equiv_at +/- theorem topological_vector_bundle.trivialization.continuous_linear_equiv_at_apply' +/- theorem topological_vector_bundle.trivialization.continuous_linear_equiv_at_apply +/- structure topological_vector_bundle.trivialization 2021-07-12 22:46:14 cde5748 feat(measure_theory/measure_space): add `finite_measure_sub` instance (#8239) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.sub_le 2021-07-12 21:10:34 5ea9a07 feat(measure_theory/integration): add `lintegral_union` (#8238) ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_union Modified src/measure_theory/measure_space.lean + theorem measurable_set.cond Modified src/topology/algebra/infinite_sum.lean + theorem tsum_bool 2021-07-12 21:10:33 4cd6179 refactor(measure_theory/simple_func_dense): generalize L1.simple_func.dense_embedding to Lp (#8209) This PR generalizes all the more abstract results about approximation by simple functions, from L1 to Lp (`p ≠ ∞`). Notably, this includes * the definition `Lp.simple_func`, the `add_subgroup` of `Lp` of classes containing a simple representative * the coercion `Lp.simple_func.coe_to_Lp` from this subgroup to `Lp`, as a continuous linear map * `Lp.simple_func.dense_embedding`, this subgroup is dense in `Lp` * `mem_ℒp.induction`, to prove a predicate holds for `mem_ℒp` functions it suffices to prove that it behaves appropriately on `mem_ℒp` simple functions Many lemmas get renamed from `L1.simple_func.*` to `Lp.simple_func.*`, and have hypotheses or conclusions changed from `integrable` to `mem_ℒp`. I take the opportunity to streamline the construction by deleting some instances which typeclass inference can find, and some lemmas which are re-statements of more general results about `add_subgroup`s in normed groups. In my opinion, this extra material obscures the structure of the construction. Here is a list of the definitions deleted: - `instance : has_coe (α →₁ₛ[μ] E) (α →₁[μ] E)` - `instance : has_coe_to_fun (α →₁ₛ[μ] E)` - `instance : inhabited (α →₁ₛ[μ] E)` - `protected def normed_group : normed_group (α →₁ₛ[μ] E)` and lemmas deleted (in the `L1.simple_func` namespace unless specified): - `simple_func.tendsto_approx_on_univ_L1` - `eq` - `eq_iff` - `eq_iff'` - `coe_zero` - `coe_add` - `coe_neg` - `coe_sub` - `edist_eq` - `dist_eq` - `norm_eq` - `lintegral_edist_to_simple_func_lt_top` - `dist_to_simple_func` ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.coe_div Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/integrable_on.lean - theorem measure_theory.integrable_add + theorem measure_theory.integrable_add_of_disjoint Modified src/measure_theory/lp_space.lean + theorem measure_theory.mem_ℒp.indicator + theorem measure_theory.mem_ℒp_add_of_disjoint + theorem measure_theory.snorm_indicator_le Modified src/measure_theory/simple_func_dense.lean - theorem measure_theory.L1.simple_func.add_to_simple_func - theorem measure_theory.L1.simple_func.coe_add - theorem measure_theory.L1.simple_func.coe_coe - theorem measure_theory.L1.simple_func.coe_neg - theorem measure_theory.L1.simple_func.coe_smul - theorem measure_theory.L1.simple_func.coe_sub - def measure_theory.L1.simple_func.coe_to_L1 - theorem measure_theory.L1.simple_func.coe_zero - theorem measure_theory.L1.simple_func.dist_eq - theorem measure_theory.L1.simple_func.dist_to_simple_func - theorem measure_theory.L1.simple_func.edist_eq - theorem measure_theory.L1.simple_func.lintegral_edist_to_simple_func_lt_top - theorem measure_theory.L1.simple_func.neg_to_simple_func - theorem measure_theory.L1.simple_func.norm_eq - theorem measure_theory.L1.simple_func.norm_to_L1 - theorem measure_theory.L1.simple_func.norm_to_simple_func - theorem measure_theory.L1.simple_func.smul_to_simple_func - theorem measure_theory.L1.simple_func.sub_to_simple_func - def measure_theory.L1.simple_func.to_L1 - theorem measure_theory.L1.simple_func.to_L1_add - theorem measure_theory.L1.simple_func.to_L1_eq_mk - theorem measure_theory.L1.simple_func.to_L1_eq_to_L1 - theorem measure_theory.L1.simple_func.to_L1_neg - theorem measure_theory.L1.simple_func.to_L1_smul - theorem measure_theory.L1.simple_func.to_L1_sub - theorem measure_theory.L1.simple_func.to_L1_to_simple_func - theorem measure_theory.L1.simple_func.to_L1_zero + theorem measure_theory.L1.simple_func.to_Lp_one_eq_to_L1 - def measure_theory.L1.simple_func.to_simple_func - theorem measure_theory.L1.simple_func.to_simple_func_eq_to_fun - theorem measure_theory.L1.simple_func.to_simple_func_to_L1 - theorem measure_theory.L1.simple_func.zero_to_simple_func - def measure_theory.L1.simple_func + theorem measure_theory.Lp.simple_func.add_to_simple_func + theorem measure_theory.Lp.simple_func.coe_coe + theorem measure_theory.Lp.simple_func.coe_smul + def measure_theory.Lp.simple_func.coe_to_Lp + theorem measure_theory.Lp.simple_func.neg_to_simple_func + theorem measure_theory.Lp.simple_func.norm_to_Lp + theorem measure_theory.Lp.simple_func.norm_to_simple_func + theorem measure_theory.Lp.simple_func.smul_to_simple_func + theorem measure_theory.Lp.simple_func.sub_to_simple_func + def measure_theory.Lp.simple_func.to_Lp + theorem measure_theory.Lp.simple_func.to_Lp_add + theorem measure_theory.Lp.simple_func.to_Lp_eq_mk + theorem measure_theory.Lp.simple_func.to_Lp_eq_to_Lp + theorem measure_theory.Lp.simple_func.to_Lp_neg + theorem measure_theory.Lp.simple_func.to_Lp_smul + theorem measure_theory.Lp.simple_func.to_Lp_sub + theorem measure_theory.Lp.simple_func.to_Lp_to_simple_func + theorem measure_theory.Lp.simple_func.to_Lp_zero + def measure_theory.Lp.simple_func.to_simple_func + theorem measure_theory.Lp.simple_func.to_simple_func_eq_to_fun + theorem measure_theory.Lp.simple_func.to_simple_func_to_Lp + theorem measure_theory.Lp.simple_func.zero_to_simple_func + def measure_theory.Lp.simple_func + theorem measure_theory.mem_ℒp.induction - theorem measure_theory.simple_func.tendsto_approx_on_univ_L1 2021-07-12 18:54:39 a9cb722 docs(data/rel): add module docstring (#8248) ESTIMATED CHANGES Modified src/data/rel.lean +/- def rel 2021-07-12 17:16:06 a2b00f3 feat(algebra/opposites): functoriality of the opposite monoid (#8254) A hom `α →* β` can equivalently be viewed as a hom `αᵒᵖ →* βᵒᵖ`. Split off from #7395 ESTIMATED CHANGES Modified src/algebra/opposites.lean + def add_monoid_hom.op + def add_monoid_hom.unop + def monoid_hom.op + def monoid_hom.unop + def ring_hom.op + def ring_hom.unop 2021-07-12 16:03:49 6fa678f feat(ring_theory): `coe_submodule S (⊤ : ideal R) = 1` (#8272) A little `simp` lemma and its dependencies. As I was implementing it, I saw the definition of `has_one (submodule R A)` can be cleaned up a bit. ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.algebra_map_mem + theorem submodule.mem_one - theorem submodule.one_eq_map_top + theorem submodule.one_eq_range Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean + theorem is_localization.coe_submodule_top 2021-07-12 14:22:14 0a8e3ed feat(data/equiv/fin): fin_order_iso_subtype (#8258) Promote a `fin n` into a larger `fin m`, as a subtype where the underlying values are retained. This is the `order_iso` version of `fin.cast_le`. ESTIMATED CHANGES Modified src/data/equiv/fin.lean + def fin.cast_le_order_iso 2021-07-12 14:22:13 66cc624 feat(data/list/basic): more lemmas about permutations_aux2 (#8198) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.map_map_permutations_aux2 +/- theorem list.map_permutations_aux2 + theorem list.permutations_aux2_comp_append + theorem list.permutations_aux2_snd_eq 2021-07-12 12:59:26 695cb07 feat({data,linear_algebra}/{finsupp,dfinsupp}): add `{add_submonoid,submodule}.[d]finsupp_sum_mem` (#8269) These lemmas are trivial consequences of the finset lemmas, but having them avoids having to unfold `[d]finsupp.sum`. `dfinsupp_sum_add_hom_mem` is particularly useful because this one has some messy decidability arguments to eliminate. ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem add_submonoid.dfinsupp_sum_add_hom_mem + theorem submonoid.dfinsupp_prod_mem Modified src/data/finsupp/basic.lean + theorem submonoid.finsupp_prod_mem Modified src/linear_algebra/dfinsupp.lean + theorem submodule.dfinsupp_sum_add_hom_mem + theorem submodule.dfinsupp_sum_mem Modified src/linear_algebra/finsupp.lean + theorem submodule.finsupp_sum_mem 2021-07-12 10:54:32 40ffaa5 feat(linear_algebra/free_module): add module.free.resolution (#8231) Any module is a quotient of a free module. This is stated as surjectivity of `finsupp.total M M R id : (M →₀ R) →ₗ[R] M`. ESTIMATED CHANGES Modified src/algebra/module/projective.lean Modified src/linear_algebra/finsupp.lean + theorem finsupp.total_id_surjective + theorem finsupp.total_range + theorem finsupp.total_surjective Modified src/linear_algebra/free_module.lean 2021-07-12 07:00:28 e1c649d feat(category_theory/abelian): the five lemma (#8265) ESTIMATED CHANGES Modified src/algebra/homology/exact.lean Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.coimages.comp_coimage_π_eq_zero + theorem category_theory.abelian.epi_fst_of_factor_thru_epi_mono_factorization + theorem category_theory.abelian.epi_fst_of_is_limit + theorem category_theory.abelian.epi_snd_of_is_limit + theorem category_theory.abelian.mono_inl_of_factor_thru_epi_mono_factorization + theorem category_theory.abelian.mono_inl_of_is_colimit + theorem category_theory.abelian.mono_inr_of_is_colimit Modified src/category_theory/abelian/diagram_lemmas/four.lean + theorem category_theory.abelian.epi_of_epi_of_epi_of_mono + theorem category_theory.abelian.is_iso_of_is_iso_of_is_iso_of_is_iso_of_is_iso Modified src/category_theory/abelian/exact.lean + def category_theory.abelian.is_colimit_coimage + def category_theory.abelian.is_colimit_image Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback_cone.is_limit_of_factors + def category_theory.limits.pushout_cocone.is_colimit_of_factors Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.comp_factor_thru_image_eq_zero Modified src/category_theory/subobject/limits.lean + theorem category_theory.limits.factor_thru_kernel_subobject_comp_kernel_subobject_iso 2021-07-12 06:15:32 92d0dd8 feat(category_theory/limits): monomorphisms from initial (#8099) Defines a class for categories where every morphism from initial is a monomorphism. If the category has a terminal object, this is equivalent to saying the unique morphism from initial to terminal is a monomorphism, so this is essentially a "zero_le_one" for categories. I'm happy to change the name of this class! This axiom does not appear to have a common name, though it is (equivalent to) the second of Freyd's AT axioms: specifically it is a property shared by abelian categories and pretoposes. The main advantage to this class is that it is the precise condition required for the subobject lattice to have a bottom element, resolving the discussion here: https://github.com/leanprover-community/mathlib/pull/6278#discussion_r577702542 I've also made some minor changes to later parts of this file, essentially de-duplicating arguments, and moving the `comparison` section up so that all the results about terminal objects in index categories of limits are together rather than split in two. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean +/- def category_theory.limits.cocone_of_diagram_terminal +/- def category_theory.limits.colimit_of_diagram_terminal +/- def category_theory.limits.colimit_of_terminal +/- def category_theory.limits.cone_of_diagram_initial + theorem category_theory.limits.initial_mono_class.of_initial + theorem category_theory.limits.initial_mono_class.of_is_initial + theorem category_theory.limits.initial_mono_class.of_is_terminal + theorem category_theory.limits.initial_mono_class.of_terminal + theorem category_theory.limits.is_initial.mono_from + def category_theory.limits.is_initial.unique_up_to_iso + def category_theory.limits.is_terminal.unique_up_to_iso +/- def category_theory.limits.limit_of_diagram_initial +/- def category_theory.limits.limit_of_initial 2021-07-12 04:01:46 e22789e feat(algebra/big_operators/finprod): add a few lemmas (#8261) * add `finprod_eq_single` and `finsum_eq_single`; * add `finprod_induction` and `finsum_induction`; * add `single_le_finprod` and `single_le_finsum`; * add `one_le_finprod'` and `finsum_nonneg`. ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_eq_single + theorem finprod_induction + theorem one_le_finprod' + theorem single_le_finprod Modified src/data/equiv/basic.lean + theorem plift.eq_up_iff_down_eq 2021-07-12 01:47:08 d5c6f61 feat(algebra/group/hom): monoid_hom.injective_iff in iff form (#8259) Interpret the injectivity of a group hom as triviality of the kernel, in iff form. This helps make explicit simp lemmas about the application of such homs, as in the added `extend_domain_eq_one_iff` lemma. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.injective_iff' Modified src/group_theory/perm/basic.lean + theorem equiv.perm.extend_domain_eq_one_iff 2021-07-11 20:46:12 24d7a8c feat(group_theory/quotient_group): lemmas for quotients involving `subgroup_of` (#8111) ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + def quotient_group.equiv_quotient_subgroup_of_of_eq + def quotient_group.quotient_map_subgroup_of_of_le 2021-07-11 20:13:23 19beb12 feat(measure_theory/{lp_space,set_integral}): extend linear map lemmas from R to is_R_or_C (#8210) ESTIMATED CHANGES Modified src/analysis/calculus/parametric_integral.lean Modified src/measure_theory/lp_space.lean +/- theorem continuous_linear_map.coe_fn_comp_Lp +/- def continuous_linear_map.comp_Lp +/- def continuous_linear_map.comp_LpL +/- def continuous_linear_map.comp_Lpₗ +/- theorem continuous_linear_map.norm_compLpL_le +/- theorem continuous_linear_map.norm_comp_Lp_le Modified src/measure_theory/set_integral.lean +/- theorem continuous_linear_map.continuous_integral_comp_L1 +/- theorem continuous_linear_map.integral_comp_L1_comm +/- theorem continuous_linear_map.integral_comp_Lp +/- theorem continuous_linear_map.integral_comp_comm' +/- theorem continuous_linear_map.integral_comp_comm +/- theorem integral_conj + theorem integral_im +/- theorem integral_of_real + theorem integral_re +/- theorem linear_isometry.integral_comp_comm 2021-07-11 19:28:27 6d200cb feat(analysis/normed_space/inner_product): Bessel's inequality (#8251) A proof both of Bessel's inequality and that the infinite sum defined by Bessel's inequality converges. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem orthonormal.inner_left_right_finset + theorem orthonormal.inner_products_summable + theorem orthonormal.sum_inner_products_le + theorem orthonormal.tsum_inner_products_le 2021-07-11 14:37:02 bee165a feat(category_theory/abelian/opposite): Adds some op-related isomorphism for (co)kernels. (#8255) ESTIMATED CHANGES Modified src/category_theory/abelian/opposite.lean + def category_theory.cokernel_op_op + def category_theory.cokernel_op_unop + def category_theory.cokernel_unop_op + def category_theory.cokernel_unop_unop + def category_theory.kernel_op_op + def category_theory.kernel_op_unop + def category_theory.kernel_unop_op + def category_theory.kernel_unop_unop 2021-07-11 13:10:23 1e62218 feat(data/int/gcd): norm_num extension for gcd (#8053) Implements a `norm_num` plugin to evaluate terms like `nat.gcd 6 8 = 2`, `nat.coprime 127 128`, and so on for `{nat, int}.{gcd, lcm, coprime}`. ESTIMATED CHANGES Modified src/data/int/gcd.lean + theorem tactic.norm_num.int_gcd_helper' + theorem tactic.norm_num.int_gcd_helper + theorem tactic.norm_num.int_gcd_helper_neg_left + theorem tactic.norm_num.int_gcd_helper_neg_right + theorem tactic.norm_num.int_lcm_helper + theorem tactic.norm_num.int_lcm_helper_neg_left + theorem tactic.norm_num.int_lcm_helper_neg_right + theorem tactic.norm_num.nat_coprime_helper_1 + theorem tactic.norm_num.nat_coprime_helper_2 + theorem tactic.norm_num.nat_coprime_helper_zero_left + theorem tactic.norm_num.nat_coprime_helper_zero_right + theorem tactic.norm_num.nat_gcd_helper_1 + theorem tactic.norm_num.nat_gcd_helper_2 + theorem tactic.norm_num.nat_gcd_helper_dvd_left + theorem tactic.norm_num.nat_gcd_helper_dvd_right + theorem tactic.norm_num.nat_lcm_helper + theorem tactic.norm_num.nat_not_coprime_helper Modified src/data/nat/gcd.lean + theorem nat.not_coprime_zero_zero Modified test/norm_num.lean Added test/norm_num_ext.lean 2021-07-11 10:44:09 14f324b chore(data/set/basic): remove set.decidable_mem (#8240) The only purpose of this instance was to enable the spelling `[decidable_pred s]` when what is actually needed is `decidable_pred (∈ s)`, which is a bad idea. This is a follow-up to #8211. Only two proofs needed this instance, and both were using completely the wrong lemmas anyway. ESTIMATED CHANGES Modified src/data/equiv/fintype.lean Modified src/data/set/basic.lean 2021-07-11 02:16:20 850928d chore(scripts): update nolints.txt (#8257) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-11 01:40:33 e627394 feat(analysis/special_functions): limit of (1+1/x)^x (#8243) Resolves https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/e.20as.20limit.20of.20.281.2B1.2Fn.29.5En. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem real.tendsto_mul_log_one_plus_div_at_top Modified src/analysis/special_functions/pow.lean + theorem tendsto_one_plus_div_pow_exp + theorem tendsto_one_plus_div_rpow_exp 2021-07-10 20:40:14 90d8d46 feat(category_theory/monad): monad forget is monadic (#8161) cc @adamtopaz wip since I need to dualise ESTIMATED CHANGES Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebraic_topology/simplex_category.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/connected_components.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/monad/adjunction.lean + def category_theory.adjunction.adj_to_comonad_iso + def category_theory.adjunction.adj_to_monad_iso +/- def category_theory.adjunction.to_comonad +/- def category_theory.adjunction.to_monad +/- def category_theory.comonad.comparison + def category_theory.comonad.comparison_forget + theorem category_theory.comonad.left_comparison - def category_theory.comparison_forget +/- def category_theory.monad.comparison +/- def category_theory.monad.comparison_forget + theorem category_theory.monad.left_comparison Modified src/category_theory/monad/algebra.lean +/- def category_theory.comonad.adj + theorem category_theory.comonad.of_left_adjoint_forget + theorem category_theory.comonad.right_adjoint_forget + theorem category_theory.monad.left_adjoint_forget + theorem category_theory.monad.of_right_adjoint_forget Modified src/category_theory/monad/basic.lean + def category_theory.comonad_iso.mk + theorem category_theory.comonad_to_functor_map_iso_comonad_iso_mk + def category_theory.monad_iso.mk + theorem category_theory.monad_to_functor_map_iso_monad_iso_mk Modified src/category_theory/skeletal.lean Modified src/topology/category/Compactum.lean 2021-07-10 18:38:10 8b4628e feat(data/fintype/basic): induction principle for finite types (#8158) This lets us prove things about finite types by induction, analogously to proving things about natural numbers by induction. Here `pempty` plays the role of `0` and `option` plays the role of `nat.succ`. We need an extra hypothesis that our statement is invariant under equivalence of types. Used in #8019. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem fintype.induction_empty_option + def fintype.trunc_rec_empty_option 2021-07-10 08:01:40 aa78feb feat(category_theory/is_connected): constant functor is full (#8233) Shows the constant functor on a connected category is full. Also golfs a later proof slightly. ESTIMATED CHANGES Modified src/category_theory/is_connected.lean 2021-07-10 08:01:39 b1806d1 chore(analysis/normed_space/banach): speed up the proof (#8230) This proof has timed out in multiple refactor PRs I've made. This splits out an auxiliary definition. The new definition takes about 3.5s to elaborate, and the two lemmas are <500ms each. The old lemma took 45s. ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean + theorem continuous_linear_equiv.coe_of_bijective + theorem continuous_linear_map.range_eq_map_coprod_subtypeL_equiv_of_is_compl 2021-07-10 07:14:29 9e0462c feat(topology/algebra/infinite_sum): summable_empty (#8241) Every function over an empty type is summable. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_empty + theorem summable_empty + theorem tsum_empty 2021-07-10 04:07:29 e18b3a8 feat(category_theory/limits): transfer limit creation along diagram iso (#8237) ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean + def category_theory.creates_colimit_of_iso_diagram + def category_theory.creates_limit_of_iso_diagram 2021-07-10 03:32:13 d0e09dd feat(linear_algebra/matrix/nonsingular_inverse): more lemmas (#8216) add more defs and lemmas ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean +/- def matrix.det_invertible_of_left_inverse +/- def matrix.det_invertible_of_right_inverse + theorem matrix.inv_eq_left_inv + theorem matrix.inv_eq_nonsing_inv_of_invertible + theorem matrix.inv_eq_right_inv + theorem matrix.inv_mul_of_invertible + def matrix.invertible_of_left_inverse + def matrix.invertible_of_right_inverse + theorem matrix.is_unit_det_of_invertible +/- theorem matrix.is_unit_det_of_left_inverse +/- theorem matrix.is_unit_det_of_right_inverse + theorem matrix.left_inv_eq_left_inv + theorem matrix.mul_inv_of_invertible +/- theorem matrix.nonsing_inv_left_right +/- theorem matrix.nonsing_inv_right_left + theorem matrix.right_inv_eq_left_inv + theorem matrix.right_inv_eq_right_inv Modified src/linear_algebra/unitary_group.lean 2021-07-10 02:13:42 b52c1f0 chore(scripts): update nolints.txt (#8245) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-07-09 22:11:36 70320f7 feat(category_theory/category/Kleisli): Fix lint errors (#8244) Fixes some lint errors for this file: unused arguments, module doc, inhabited instances ESTIMATED CHANGES Modified src/category_theory/category/Kleisli.lean +/- theorem category_theory.Kleisli.comp_def +/- theorem category_theory.Kleisli.id_def +/- def category_theory.Kleisli.mk +/- def category_theory.Kleisli 2021-07-09 19:00:53 a444e81 feat(measure_theory/borel_space): a preconnected set is measurable (#8044) In a conditionally complete linear order equipped with the order topology and the corresponding borel σ-algebra, any preconnected set is measurable. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite_of_forall_between_eq_endpoints Modified src/measure_theory/borel_space.lean + theorem is_preconnected.measurable_set +/- theorem measurable_set_lt' +/- theorem measurable_set_lt + theorem set.ord_connected.measurable_set Modified src/topology/algebra/ordered/basic.lean + theorem is_preconnected.ord_connected + theorem set.ord_connected.is_preconnected 2021-07-09 15:19:06 bcd61b1 feat(algebra/category): provide right adjoint instances for forget (#8235) Also adds some universe variables since they weren't inferred sensibly. ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean +/- def Algebra.adj +/- def Algebra.free +/- def Algebra.of +/- def Algebra.of_self_iso Modified src/algebra/category/CommRing/adjunctions.lean +/- def CommRing.adj +/- def CommRing.free Modified src/algebra/category/Group/adjunctions.lean Modified src/algebra/category/Module/adjunctions.lean Modified src/algebra/category/Mon/adjunctions.lean + def adj + def free Modified src/topology/category/Top/adjunctions.lean 2021-07-09 13:36:51 ee01817 chore(data/set/basic): use `decidable_pred (∈ s)` instead of `decidable_pred s`. (#8211) The latter exploits the fact that sets are functions to Prop, and is an annoying form as lemmas are never stated about it. In future we should consider removing the `set.decidable_mem` instance which encourages this misuse. Making this change reveals a collection of pointless decidable arguments requiring that finset membership be decidable; something which is always true anyway. Two proofs in `data/pequiv` caused a crash inside the C++ portion of the `finish` tactic; it was easier to just write the simple proofs manually than to debug the C++ code. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean +/- def continuous_multilinear_map.curry_fin_finset Modified src/combinatorics/simple_graph/basic.lean Modified src/data/equiv/basic.lean +/- theorem equiv.set.insert_apply_left +/- theorem equiv.set.insert_apply_right +/- theorem equiv.set.insert_symm_apply_inl +/- theorem equiv.set.insert_symm_apply_inr +/- theorem equiv.set.sum_compl_apply_inl +/- theorem equiv.set.sum_compl_apply_inr +/- theorem equiv.set.sum_compl_symm_apply +/- theorem equiv.set.sum_compl_symm_apply_of_mem +/- theorem equiv.set.sum_compl_symm_apply_of_not_mem Modified src/data/equiv/denumerable.lean +/- def nat.subtype.denumerable +/- def nat.subtype.of_nat Modified src/data/equiv/encodable/basic.lean +/- def encodable.decidable_range_encode Modified src/data/fintype/sort.lean Modified src/data/nat/basic.lean Modified src/data/pequiv.lean +/- theorem pequiv.mem_of_set_iff +/- theorem pequiv.mem_of_set_self_iff +/- def pequiv.of_set +/- theorem pequiv.of_set_eq_refl +/- theorem pequiv.of_set_eq_some_iff +/- theorem pequiv.of_set_eq_some_self_iff Modified src/data/pfun.lean +/- def pfun.eval_opt Modified src/data/set/basic.lean Modified src/data/set/finite.lean +/- def set.fintype_subset Modified src/data/sym2.lean Modified src/field_theory/finite/polynomial.lean Modified src/group_theory/coset.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/subgroup.lean Modified src/group_theory/subgroup.lean Modified src/linear_algebra/multilinear.lean +/- def multilinear_map.curry_fin_finset +/- theorem multilinear_map.curry_fin_finset_apply Modified src/measure_theory/measurable_space.lean +/- theorem measurable.piecewise Modified src/order/order_iso_nat.lean Modified src/ring_theory/free_comm_ring.lean +/- theorem free_comm_ring.map_subtype_val_restriction +/- def free_comm_ring.restriction 2021-07-09 13:36:49 a312e7e chore(topology/topological_fiber_bundle): reorganizing the code (#7938) What I do here: - Get rid of `local_triv`: it is not needed. - Change `local_triv_ext` to `local_triv` - Rename `local_triv'` as `local_triv_as_local_equiv` (name suggested by @sgouezel) - Improve type class inference by getting rid of `dsimp` in instances - Move results about `bundle` that do not need the topology in an appropriate file - Update docs accordingly. Nothing else. ESTIMATED CHANGES Added src/data/bundle.lean + theorem bundle.coe_fst + theorem bundle.coe_snd_map_apply + theorem bundle.coe_snd_map_smul + def bundle.proj + theorem bundle.to_total_space_coe + def bundle.total_space + def bundle.total_space_mk + def bundle.trivial.proj_snd + def bundle.trivial Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/topology/continuous_on.lean + theorem continuous_at.comp_continuous_within_at + theorem continuous_within_at.fst + theorem continuous_within_at.snd + theorem continuous_within_at_prod_iff Modified src/topology/topological_fiber_bundle.lean - theorem bundle.coe_fst - theorem bundle.coe_snd_map_apply - theorem bundle.coe_snd_map_smul - def bundle.proj - theorem bundle.to_total_space_coe - def bundle.total_space - def bundle.total_space_mk - def bundle.trivial.proj_snd - def bundle.trivial + theorem bundle_trivialization.source_inter_preimage_target_inter +/- theorem topological_fiber_bundle_core.base_set_at - def topological_fiber_bundle_core.local_triv' - theorem topological_fiber_bundle_core.local_triv'_apply - theorem topological_fiber_bundle_core.local_triv'_coe - theorem topological_fiber_bundle_core.local_triv'_source - theorem topological_fiber_bundle_core.local_triv'_symm_apply - theorem topological_fiber_bundle_core.local_triv'_target - theorem topological_fiber_bundle_core.local_triv'_trans +/- def topological_fiber_bundle_core.local_triv +/- theorem topological_fiber_bundle_core.local_triv_apply + def topological_fiber_bundle_core.local_triv_as_local_equiv + theorem topological_fiber_bundle_core.local_triv_as_local_equiv_apply + theorem topological_fiber_bundle_core.local_triv_as_local_equiv_coe + theorem topological_fiber_bundle_core.local_triv_as_local_equiv_source + theorem topological_fiber_bundle_core.local_triv_as_local_equiv_symm + theorem topological_fiber_bundle_core.local_triv_as_local_equiv_target + theorem topological_fiber_bundle_core.local_triv_as_local_equiv_trans + def topological_fiber_bundle_core.local_triv_at + theorem topological_fiber_bundle_core.local_triv_at_def - def topological_fiber_bundle_core.local_triv_at_ext - theorem topological_fiber_bundle_core.local_triv_at_ext_def - theorem topological_fiber_bundle_core.local_triv_coe - def topological_fiber_bundle_core.local_triv_ext - theorem topological_fiber_bundle_core.local_triv_ext_apply - theorem topological_fiber_bundle_core.local_triv_ext_symm_apply - theorem topological_fiber_bundle_core.local_triv_ext_symm_fst - theorem topological_fiber_bundle_core.local_triv_source - theorem topological_fiber_bundle_core.local_triv_symm +/- theorem topological_fiber_bundle_core.local_triv_symm_fst - theorem topological_fiber_bundle_core.local_triv_target - theorem topological_fiber_bundle_core.local_triv_trans - theorem topological_fiber_bundle_core.mem_local_triv'_source - theorem topological_fiber_bundle_core.mem_local_triv'_target + theorem topological_fiber_bundle_core.mem_local_triv_as_local_equiv_source + theorem topological_fiber_bundle_core.mem_local_triv_as_local_equiv_target + theorem topological_fiber_bundle_core.mem_local_triv_at_base_set - theorem topological_fiber_bundle_core.mem_local_triv_at_ext_base_set - theorem topological_fiber_bundle_core.mem_local_triv_ext_source - theorem topological_fiber_bundle_core.mem_local_triv_ext_target +/- theorem topological_fiber_bundle_core.mem_local_triv_source +/- theorem topological_fiber_bundle_core.mem_local_triv_target +/- theorem topological_fiber_bundle_core.open_source' - theorem topological_fiber_bundle_core.open_target' Modified src/topology/vector_bundle.lean 2021-07-09 12:52:46 abde210 feat(analysis/complex/isometry): restate result more abstractly (#7908) Define `rotation` as a group homomorphism from the circle to the isometry group of `ℂ`. State the classification of isometries of `ℂ` more abstractly, using this construction. Also golf some proofs. ESTIMATED CHANGES Modified src/analysis/complex/isometry.lean - theorem linear_isometry.abs_apply_sub_one_eq_abs_sub_one +/- theorem linear_isometry_complex +/- theorem linear_isometry_complex_aux + def rotation + theorem rotation_apply + def rotation_aux Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.coe_to_continuous_linear_equiv + def linear_isometry_equiv.to_continuous_linear_equiv 2021-07-09 09:42:47 1134865 feat(category_theory/limits): finite products from finite limits (#8236) Adds instances for finite products from finite limits. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/finite_products.lean - theorem category_theory.limits.has_finite_coproducts_of_has_finite_colimits - theorem category_theory.limits.has_finite_products_of_has_finite_limits 2021-07-08 23:05:26 e46447b feat(measure_theory/measure_space): prob_le_one (#7913) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.prob_add_prob_compl + theorem measure_theory.prob_le_one 2021-07-08 18:57:18 9d40a59 feat(group_theory,linear_algebra): third isomorphism theorem for groups and modules (#8203) This PR proves the third isomorphism theorem for (additive) groups and modules, and also adds a few `simp` lemmas that I needed. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/group_theory/quotient_group.lean + theorem quotient_group.map_coe + theorem quotient_group.map_mk' + def quotient_group.quotient_quotient_equiv_quotient + def quotient_group.quotient_quotient_equiv_quotient_aux + theorem quotient_group.quotient_quotient_equiv_quotient_aux_coe + theorem quotient_group.quotient_quotient_equiv_quotient_aux_coe_coe Modified src/linear_algebra/basic.lean + def submodule.quotient_quotient_equiv_quotient + def submodule.quotient_quotient_equiv_quotient_aux + theorem submodule.quotient_quotient_equiv_quotient_aux_mk + theorem submodule.quotient_quotient_equiv_quotient_aux_mk_mk 2021-07-08 17:14:02 a7b660e feat(linear_algebra/prod): add coprod_map_prod (#8220) This also adds `submodule.coe_sup` and `set.mem_finset_prod`. The latter was intended to be used to show `submodule.coe_supr`, but I didn't really need that and it was hard to prove. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.finset_prod_mem_finset_prod + theorem set.finset_prod_subset_finset_prod + theorem set.mem_finset_prod + theorem set.mem_fintype_prod Modified src/linear_algebra/basic.lean + theorem submodule.coe_sup Modified src/linear_algebra/prod.lean + theorem linear_map.coprod_map_prod 2021-07-08 16:41:12 13486fe chore(measure_theory/measure_space): untangle `probability_measure`, `finite_measure`, and `has_no_atoms` (#8222) This only moves existing lemmas around. Putting all the instance together up front seems to result in lemmas being added in adhoc places - by adding `section`s, this should guide future contributions. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.measure.restrict_singleton' 2021-07-08 14:46:44 b10062e feat(data/finset/noncomm_prod): noncomm_prod_union_of_disjoint (#8169) ESTIMATED CHANGES Modified src/data/finset/noncomm_prod.lean + theorem finset.noncomm_prod_union_of_disjoint 2021-07-08 13:06:54 a4b0b48 feat(data/nat/basic): lt_one_iff (#8224) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.lt_one_iff 2021-07-08 11:22:43 fb22ae3 refactor(order/rel_iso): move statements about intervals to data/set/intervals (#8150) This means that we can talk about `rel_iso` without needing to transitively import `ordered_group`s This PR takes advantage of this to define `order_iso.mul_(left|right)[']` to mirror `equiv.mul_(left|right)[']`. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + def order_iso.mul_left' + def order_iso.mul_right' Modified src/algebra/ordered_group.lean + def order_iso.mul_left + def order_iso.mul_right Modified src/data/set/intervals/basic.lean + def order_iso.Ici_bot + def order_iso.Iic_top + theorem order_iso.preimage_Icc + theorem order_iso.preimage_Ici + theorem order_iso.preimage_Ico + theorem order_iso.preimage_Iic + theorem order_iso.preimage_Iio + theorem order_iso.preimage_Ioc + theorem order_iso.preimage_Ioi + theorem order_iso.preimage_Ioo Modified src/order/rel_iso.lean - def order_iso.Ici_bot - def order_iso.Iic_top - theorem order_iso.preimage_Icc - theorem order_iso.preimage_Ici - theorem order_iso.preimage_Ico - theorem order_iso.preimage_Iic - theorem order_iso.preimage_Iio - theorem order_iso.preimage_Ioc - theorem order_iso.preimage_Ioi - theorem order_iso.preimage_Ioo 2021-07-08 09:27:54 03e2cbd chore(group_theory/perm/support): support_pow_le over nat (#8225) Previously, both `support_pow_le` and `support_gpow_le` had the power as an `int`. Now we properly differentiate the two and avoid slow defeq checks. ESTIMATED CHANGES Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.is_cycle_of_is_cycle_gpow - theorem equiv.perm.is_cycle_of_is_cycle_pow Modified src/group_theory/perm/support.lean +/- theorem equiv.perm.support_pow_le 2021-07-08 02:02:10 0ee238c chore(scripts): update nolints.txt (#8227) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-07 20:50:25 70aef28 feat(group_theory/perm/list): concrete permutations from a list (#7451) ESTIMATED CHANGES Added src/group_theory/perm/list.lean + def list.form_perm + theorem list.form_perm_apply_head + theorem list.form_perm_apply_last + theorem list.form_perm_apply_lt + theorem list.form_perm_apply_mem_of_mem + theorem list.form_perm_apply_nth_le + theorem list.form_perm_apply_nth_le_length + theorem list.form_perm_apply_nth_le_zero + theorem list.form_perm_apply_of_not_mem + theorem list.form_perm_cons_concat_apply_last + theorem list.form_perm_cons_cons + theorem list.form_perm_eq_head_iff_eq_last + theorem list.form_perm_eq_of_is_rotated + theorem list.form_perm_ext_iff + theorem list.form_perm_nil + theorem list.form_perm_pair + theorem list.form_perm_pow_apply_nth_le + theorem list.form_perm_reverse + theorem list.form_perm_rotate + theorem list.form_perm_rotate_one + theorem list.form_perm_singleton + theorem list.support_form_perm_le' + theorem list.support_form_perm_le + theorem list.support_form_perm_of_nodup' + theorem list.support_form_perm_of_nodup + theorem list.zip_with_swap_prod_support' + theorem list.zip_with_swap_prod_support 2021-07-07 17:46:10 5f2358c fix(data/complex/basic): ensure `algebra ℝ ℂ` is computable (#8166) Without this `complex.ring` instance, `ring ℂ` is found via `division_ring.to_ring` and `field.to_division_ring`, and `complex.field` is non-computable. The non-computable-ness previously contaminated `distrib_mul_action R ℂ` and even some properties of `finset.sum` on complex numbers! To avoid this type of mistake again, we remove `noncomputable theory` and manually flag the parts we actually expect to be computable. ESTIMATED CHANGES Modified src/data/complex/basic.lean Modified src/data/complex/module.lean - def complex.basis_one_I + def complex.lift 2021-07-07 15:54:45 e0ca853 feat(algebra/group/units): teach `simps` about `units` (#8204) This also introduces `units.copy` to match `invertible.copy`, and uses it to make some lemmas in normed_space/units true by `rfl` (and generated by `simps`). ESTIMATED CHANGES Modified src/algebra/group/units.lean + def units.copy + theorem units.copy_eq + def units.simps.coe + def units.simps.coe_inv Modified src/algebra/invertible.lean - theorem unit_of_invertible_inv - theorem unit_of_invertible_val Modified src/algebra/lie/classical.lean Modified src/analysis/normed_space/units.lean - theorem units.add_coe - theorem units.one_sub_coe - theorem units.unit_of_nearby_coe 2021-07-07 15:54:44 ce3d53b fix(data/real/basic): provide a computable `module` instance (#8164) Without this instance, `normed_field.to_normed_space` and `normed_space.to_module` is tried first, but this results in a noncomputable instance. ESTIMATED CHANGES Modified src/data/real/basic.lean Modified src/geometry/manifold/instances/real.lean 2021-07-07 15:11:09 05e8ed2 chore(feat/algebra/lie/from_cartan_matrix): rename file (#8219) ESTIMATED CHANGES Renamed src/algebra/lie/from_cartan_matrix.lean to src/algebra/lie/cartan_matrix.lean 2021-07-07 15:11:08 836c549 docs(category_theory/limits/shapes/products): add module docstring (#8212) Also resolves some TODOs. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/products.lean 2021-07-07 14:30:42 5145261 feat(data/fintype/list): induced fintype on nodup lists (#8171) ESTIMATED CHANGES Added src/data/fintype/list.lean + def multiset.lists + theorem multiset.lists_coe + theorem multiset.mem_lists_iff Modified src/data/list/cycle.lean + def cycle.decidable_nontrivial_coe + theorem cycle.nodup.nontrivial_iff + theorem cycle.nontrivial_coe_nodup_iff 2021-07-07 13:35:19 5796783 chore(category_theory): homogenise usage of notation for terminal objects (#8106) I went with the option that is used more frequently, but I'm also happy to switch to the space-less option if people prefer it. ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean +/- def category_theory.exp_terminal_iso_self +/- def category_theory.internalize_hom Modified src/category_theory/limits/shapes/terminal.lean 2021-07-07 12:02:07 bb5ab1e chore(measure_theory/measure_space): add missing `finite_measure` instances (#8214) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.coe_nnreal_smul 2021-07-07 12:02:05 41ec92e feat(algebra/lie/from_cartan_matrix): construction of a Lie algebra from a Cartan matrix (#8206) ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/lie/from_cartan_matrix.lean + inductive cartan_matrix.generators + def cartan_matrix.relations.EF + def cartan_matrix.relations.HE + def cartan_matrix.relations.HF + def cartan_matrix.relations.HH + def cartan_matrix.relations.ad_E + def cartan_matrix.relations.ad_F + def cartan_matrix.relations.to_ideal + def cartan_matrix.relations.to_set + def matrix.to_lie_algebra 2021-07-07 12:02:02 126a7b6 feat(data/multiset/basic): add_eq_union_iff_disjoint (#8173) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.add_eq_union_iff_disjoint Modified src/data/nat/basic.lean + theorem nat.add_eq_max_iff + theorem nat.add_eq_min_iff + theorem nat.max_eq_zero_iff + theorem nat.min_eq_zero_iff 2021-07-07 10:24:57 29beb1f feat(analysis/normed_space/int): norms of (units of) integers (#8136) From LTE ESTIMATED CHANGES Added src/analysis/normed_space/int.lean + theorem int.nnnorm_coe_nat + theorem int.nnnorm_coe_units + theorem int.norm_coe_nat + theorem int.norm_coe_units + theorem int.to_nat_add_to_nat_neg_eq_nnnorm + theorem int.to_nat_add_to_nat_neg_eq_norm Modified src/data/fintype/basic.lean + theorem units_int.univ Modified src/data/int/basic.lean + theorem int.to_nat_add_to_nat_neg_eq_nat_abs + theorem int.to_nat_sub_to_nat_neg 2021-07-07 10:24:56 89e1837 fix(tactic/core): add subst' (#8129) `tactic.subst'` gives a better error message when the substituted variable is a local definition. It is hard to fix this in core (without touching C++ code), since `tactic.is_local_def` is in mathlib ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/tactic/rcases.lean Modified test/lift.lean 2021-07-07 10:24:54 47c7c01 feat(measure_theory/measure_space): if `f` restricted to `s` is measurable, then `f` is `ae_measurable` wrt `μ.restrict s` (#8098) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem ae_measurable_restrict_of_measurable_subtype 2021-07-07 08:47:55 06f0d51 refactor(algebra/ordered_group): another step in the `order` refactor -- ordered groups (#8060) This PR represents another wave of generalization of proofs, following from the `order` refactor. It is another step towards #7645. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean +/- def abs +/- theorem abs_eq_abs + theorem div_le'' + theorem div_le_div'' + theorem div_le_div_flip + theorem div_le_div_iff' + theorem div_le_div_iff_left + theorem div_le_div_iff_right + theorem div_le_div_left' + theorem div_le_div_right' + theorem div_le_iff_le_mul' + theorem div_le_iff_le_mul + theorem div_le_inv_mul_iff + theorem div_le_one' + theorem div_lt'' + theorem div_lt_div'' + theorem div_lt_div_iff' + theorem div_lt_div_iff_left + theorem div_lt_div_iff_right + theorem div_lt_div_left' + theorem div_lt_div_right' + theorem div_lt_iff_lt_mul' + theorem div_lt_iff_lt_mul + theorem div_lt_one' +/- theorem eq_or_eq_neg_of_abs_eq +/- def function.injective.ordered_comm_group - theorem inv_inv_of_one_lt + theorem inv_le_div_iff_le_mul' + theorem inv_le_div_iff_le_mul +/- theorem inv_le_inv' - theorem inv_le_one' +/- theorem inv_le_one_of_one_le - theorem inv_le_self + theorem inv_lt_div_iff_lt_mul' + theorem inv_lt_div_iff_lt_mul +/- theorem inv_lt_inv' - theorem inv_lt_one' - theorem inv_lt_one_iff_one_lt + theorem inv_lt_one_of_one_lt - theorem inv_lt_self - theorem inv_mul_le_left_of_le_mul - theorem inv_mul_le_of_le_mul + theorem inv_mul_le_one_iff - theorem inv_mul_le_right_of_le_mul + theorem inv_mul_lt_iff_lt_mul' - theorem inv_mul_lt_iff_lt_mul_right - theorem inv_mul_lt_left_of_lt_mul - theorem inv_mul_lt_of_lt_mul + theorem inv_mul_lt_one_iff + theorem inv_mul_lt_one_iff_lt - theorem inv_mul_lt_right_of_lt_mul - theorem inv_of_one_lt_inv + theorem le_div'' + theorem le_div_iff_mul_le' + theorem le_div_iff_mul_le + theorem le_iff_forall_one_lt_le_mul + theorem le_iff_forall_one_lt_lt_mul - theorem le_iff_forall_pos_le_add - theorem le_iff_forall_pos_lt_add - theorem le_inv_iff_mul_le_one' - theorem le_inv_iff_mul_le_one + theorem le_inv_iff_mul_le_one_left + theorem le_inv_iff_mul_le_one_right + theorem le_inv_mul_iff_le - theorem le_inv_mul_of_mul_le - theorem le_inv_of_le_inv + theorem le_mul_inv_iff_le + theorem le_mul_inv_iff_mul_le - theorem le_mul_of_inv_mul_le - theorem le_mul_of_inv_mul_le_left - theorem le_mul_of_inv_mul_le_right + theorem le_of_forall_one_lt_le_mul + theorem le_of_forall_one_lt_lt_mul - theorem le_of_forall_pos_le_add - theorem le_of_forall_pos_lt_add - theorem le_of_inv_le_inv - theorem le_one_of_one_le_inv - theorem le_sub - theorem le_sub_iff_add_le' - theorem le_sub_iff_add_le + theorem left.inv_le_one_iff + theorem left.inv_le_self + theorem left.inv_lt_one_iff + theorem left.inv_lt_self + theorem left.one_le_inv_iff + theorem left.one_lt_inv_iff + theorem left.self_le_inv + theorem left.self_lt_inv + theorem lt_div'' + theorem lt_div_iff_mul_lt' + theorem lt_div_iff_mul_lt + theorem lt_inv_mul_iff_lt - theorem lt_inv_mul_of_mul_lt + theorem lt_mul_inv_iff_lt + theorem lt_mul_inv_iff_mul_lt - theorem lt_mul_of_inv_mul_lt - theorem lt_mul_of_inv_mul_lt_left - theorem lt_mul_of_inv_mul_lt_right - theorem lt_of_inv_lt_inv - theorem lt_sub - theorem lt_sub_iff_add_lt' - theorem lt_sub_iff_add_lt - theorem max_one_div_eq_self' + theorem max_one_div_max_inv_one_eq_self - theorem max_zero_sub_max_neg_zero_eq_self +/- theorem mul_inv_le_iff_le_mul + theorem mul_inv_le_inv_mul_iff + theorem mul_inv_le_one_iff + theorem mul_inv_le_one_iff_le + theorem mul_inv_lt_iff_le_mul' + theorem mul_inv_lt_iff_lt_mul + theorem mul_inv_lt_inv_mul_iff + theorem mul_inv_lt_mul_inv_iff' + theorem mul_inv_lt_one_iff - theorem mul_le_of_le_inv_mul - theorem mul_lt_of_lt_inv_mul - theorem neg_le_sub_iff_le_add' - theorem neg_le_sub_iff_le_add - theorem neg_lt_sub_iff_lt_add' - theorem neg_lt_sub_iff_lt_add + theorem one_le_div' - theorem one_le_inv' +/- theorem one_le_inv_of_le_one - theorem one_le_of_inv_le_one + theorem one_lt_div' - theorem one_lt_inv' - theorem one_lt_inv_of_inv - theorem one_lt_of_inv_inv + theorem right.inv_le_one_iff + theorem right.inv_le_self + theorem right.inv_lt_one_iff + theorem right.inv_lt_self + theorem right.one_le_inv_iff + theorem right.one_lt_inv_iff + theorem right.self_le_inv + theorem right.self_lt_inv - theorem self_le_inv - theorem sub_le - theorem sub_le_iff_le_add' - theorem sub_le_iff_le_add - theorem sub_le_sub - theorem sub_le_sub_flip - theorem sub_le_sub_iff - theorem sub_le_sub_iff_left - theorem sub_le_sub_iff_right - theorem sub_le_sub_left - theorem sub_le_sub_right - theorem sub_lt - theorem sub_lt_iff_lt_add' - theorem sub_lt_iff_lt_add - theorem sub_lt_sub - theorem sub_lt_sub_iff_left - theorem sub_lt_sub_iff_right - theorem sub_lt_sub_left - theorem sub_lt_sub_right - theorem sub_lt_zero - theorem sub_nonneg - theorem sub_nonpos - theorem sub_pos Modified src/analysis/analytic/basic.lean Modified src/topology/algebra/ordered/basic.lean 2021-07-07 02:20:39 20d8e83 chore(scripts): update nolints.txt (#8217) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-06 18:26:45 d7653b8 chore(category_theory/monad/algebra): lint and golf (#8160) Adds a module docstring and golfs some proofs, including removing `erw`. ESTIMATED CHANGES Modified src/category_theory/monad/algebra.lean +/- def category_theory.comonad.coalgebra.iso_mk +/- def category_theory.monad.algebra.iso_mk Modified src/category_theory/monad/limits.lean +/- def category_theory.monad.forget_creates_limits.new_cone +/- def category_theory.monad.forget_creates_limits.γ 2021-07-06 16:15:28 03c8904 doc(data/set/function): add set. prefixes for doc-gen (#8215) This means these names will be linked. ESTIMATED CHANGES Modified src/data/set/function.lean 2021-07-06 14:26:27 ec07293 doc(*): add bold in doc strings for named theorems i.e. **mean value theorem** (#8182) ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified archive/100-theorems-list/42_inverse_triangle_sum.lean Modified archive/100-theorems-list/57_herons_formula.lean Modified archive/100-theorems-list/70_perfect_numbers.lean Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified archive/100-theorems-list/83_friendship_graphs.lean Modified archive/100-theorems-list/93_birthday_problem.lean Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified archive/arithcc.lean Modified archive/sensitivity.lean Modified counterexamples/girard.lean Modified docs/100.yaml Modified src/algebra/euclidean_domain.lean Modified src/algebra/ordered_group.lean Modified src/analysis/calculus/lhopital.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/cone.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/p_series.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/preadditive/schur.lean Modified src/combinatorics/hall.lean Modified src/combinatorics/simple_graph/matching.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/finset/powerset.lean Modified src/data/int/gcd.lean Modified src/data/nat/choose/sum.lean Modified src/data/nat/digits.lean Modified src/data/nat/prime.lean Modified src/data/rat/denumerable.lean Modified src/data/real/cardinality.lean Modified src/data/real/irrational.lean Modified src/data/real/pi.lean Modified src/field_theory/abel_ruffini.lean Modified src/field_theory/finite/basic.lean Modified src/field_theory/primitive_element.lean Modified src/geometry/euclidean/sphere.lean Modified src/geometry/euclidean/triangle.lean Modified src/group_theory/coset.lean Modified src/group_theory/free_group.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/char_poly/basic.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/logic/function/basic.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/pi_system.lean Modified src/measure_theory/prod.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/liouville/basic.lean Modified src/number_theory/pell.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/number_theory/sum_two_squares.lean Modified src/order/fixed_points.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/simple_module.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/topology/algebra/ordered/basic.lean 2021-07-06 13:47:12 1399997 feat(category_theory/closed): Exponential ideals (#4930) Define exponential ideals. ESTIMATED CHANGES Added src/category_theory/closed/ideal.lean + theorem category_theory.bijection_natural + theorem category_theory.bijection_symm_apply_id + def category_theory.cartesian_closed_of_reflective + theorem category_theory.exponential_ideal.mk' + theorem category_theory.exponential_ideal.mk_of_iso + def category_theory.exponential_ideal_reflective + theorem category_theory.prod_comparison_iso + theorem category_theory.reflective_products 2021-07-06 11:32:50 98e8408 feat(geometry/manifold/algebra): `left_invariant_derivation` (#8108) In this PR we prove that left-invariant derivations are a Lie algebra. ESTIMATED CHANGES Added src/geometry/manifold/algebra/left_invariant_derivation.lean + theorem left_invariant_derivation.coe_add + theorem left_invariant_derivation.coe_derivation + theorem left_invariant_derivation.coe_derivation_injective + def left_invariant_derivation.coe_fn_add_monoid_hom + theorem left_invariant_derivation.coe_injective + theorem left_invariant_derivation.coe_neg + theorem left_invariant_derivation.coe_smul + theorem left_invariant_derivation.coe_sub + theorem left_invariant_derivation.coe_to_linear_map + theorem left_invariant_derivation.coe_zero + theorem left_invariant_derivation.commutator_apply + theorem left_invariant_derivation.commutator_coe_derivation + theorem left_invariant_derivation.comp_L + def left_invariant_derivation.eval_at + theorem left_invariant_derivation.eval_at_apply + theorem left_invariant_derivation.eval_at_coe + theorem left_invariant_derivation.eval_at_mul + theorem left_invariant_derivation.ext + theorem left_invariant_derivation.left_invariant' + theorem left_invariant_derivation.left_invariant + theorem left_invariant_derivation.leibniz + theorem left_invariant_derivation.lift_add + theorem left_invariant_derivation.lift_smul + theorem left_invariant_derivation.lift_zero + theorem left_invariant_derivation.map_add + theorem left_invariant_derivation.map_neg + theorem left_invariant_derivation.map_smul + theorem left_invariant_derivation.map_sub + theorem left_invariant_derivation.map_zero + theorem left_invariant_derivation.to_derivation_eq_coe + theorem left_invariant_derivation.to_fun_eq_coe + structure left_invariant_derivation Modified src/geometry/manifold/algebra/monoid.lean + theorem smooth_left_mul_one + theorem smooth_right_mul_one Modified src/geometry/manifold/derivation_bundle.lean +/- theorem apply_fdifferential + theorem apply_hfdifferential - def fdifferential_map + def hfdifferential Modified src/ring_theory/derivation.lean + theorem derivation.congr_fun 2021-07-06 10:58:03 23d22e4 feat(category_theory/abelian/ext): Defines Ext functors. (#8186) See my comment from #7525 ESTIMATED CHANGES Added src/category_theory/abelian/ext.lean + def Ext + def Ext_succ_of_projective 2021-07-06 08:21:53 2f72023 chore(measure_theory/decomposition): change statement to use the `finite_measure` instance (#8207) ESTIMATED CHANGES Modified src/measure_theory/decomposition.lean +/- theorem measure_theory.hahn_decomposition 2021-07-06 05:05:33 6365c6c feat(algebra/invertible): construction from is_unit (#8205) ESTIMATED CHANGES Modified src/algebra/invertible.lean + theorem is_unit.nonempty_invertible + theorem nonempty_invertible_iff_is_unit 2021-07-06 02:10:44 27841bb chore(scripts): update nolints.txt (#8208) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-05 17:24:46 77e1e3b feat(linear_algebra/nonsingular_inverse): add lemmas about `invertible` (#8201) ESTIMATED CHANGES Modified src/linear_algebra/matrix/nonsingular_inverse.lean + def matrix.det_invertible_of_invertible + def matrix.det_invertible_of_left_inverse + def matrix.det_invertible_of_right_inverse + def matrix.invertible_of_det_invertible + def matrix.unit_of_det_invertible + theorem matrix.unit_of_det_invertible_eq_nonsing_inv_unit 2021-07-05 17:24:45 9d99833 feat(category_theory/linear/yoneda): A linear version of Yoneda. (#8199) ESTIMATED CHANGES Added src/category_theory/linear/yoneda.lean + def category_theory.linear_yoneda 2021-07-05 17:24:44 b6bf7a3 feat(measure_theory/lp_space): define the Lp function corresponding to the indicator of a set (#8193) I also moved some measurability lemmas from the integrable_on file to measure_space. I needed them and lp_space is before integrable_on in the import graph. ESTIMATED CHANGES Modified src/algebra/indicator_function.lean + theorem set.comp_mul_indicator_const Modified src/measure_theory/integrable_on.lean - theorem ae_measurable.indicator - theorem ae_measurable.restrict - theorem ae_measurable_indicator_iff - theorem indicator_ae_eq_restrict - theorem indicator_ae_eq_restrict_compl + theorem measure_theory.integrable_indicator_const_Lp - theorem piecewise_ae_eq_restrict - theorem piecewise_ae_eq_restrict_compl Modified src/measure_theory/lp_space.lean + def measure_theory.indicator_const_Lp + theorem measure_theory.indicator_const_Lp_coe_fn + theorem measure_theory.indicator_const_Lp_coe_fn_mem + theorem measure_theory.indicator_const_Lp_coe_fn_nmem + theorem measure_theory.indicator_const_Lp_disjoint_union + theorem measure_theory.mem_ℒp_indicator_const + theorem measure_theory.norm_indicator_const_Lp' + theorem measure_theory.norm_indicator_const_Lp + theorem measure_theory.norm_indicator_const_Lp_top + theorem measure_theory.snorm_ess_sup_indicator_const_eq + theorem measure_theory.snorm_ess_sup_indicator_const_le + theorem measure_theory.snorm_ess_sup_indicator_le + theorem measure_theory.snorm_indicator_const' + theorem measure_theory.snorm_indicator_const Modified src/measure_theory/measure_space.lean + theorem ae_measurable.indicator + theorem ae_measurable.restrict + theorem ae_measurable_indicator_iff + theorem indicator_ae_eq_restrict + theorem indicator_ae_eq_restrict_compl + theorem piecewise_ae_eq_restrict + theorem piecewise_ae_eq_restrict_compl 2021-07-05 17:24:43 7eab080 feat(topology/instances/ennreal): add tsum lemmas for ennreal.to_real (#8184) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem ennreal.tsum_coe_eq_top_iff_not_summable_coe + theorem ennreal.tsum_coe_ne_top_iff_summable_coe + theorem ennreal.tsum_to_real_eq 2021-07-05 15:47:16 38a6f26 feat(algebra/to_additive): map pow to smul (#7888) * Allows `@[to_additive]` to reorder consecutive arguments of specified identifiers. * This can be specified with the attribute `@[to_additive_reorder n m ...]` to swap arguments `n` and `n+1`, arguments `m` and `m+1` etc. (start counting from 1). * The only two attributes currently in use are: ```lean attribute [to_additive_reorder 1] has_pow attribute [to_additive_reorder 1 4] has_pow.pow ``` * It will eta-expand all expressions that have as head a declaration with attribute `to_additive_reorder` until they have the required number of arguments. This is required to correctly deal with partially applied terms. * Hack: if the first two arguments are reordered, then the first two universe variables are also reordered (this happens to be the correct behavior for `has_pow` and `has_pow.pow`). It might be cleaner to have a separate attribute for that, but that given the low amount of times that I expect that we use `to_additive_reorder`, this seems unnecessary. * This PR also allows the user to write `@[to_additive?]` to trace the generated declaration. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_const_one - theorem finset.sum_const_zero - theorem finset.sum_multiset_count Modified src/algebra/big_operators/ring.lean - theorem finset.sum_powerset Modified src/algebra/group/to_additive.lean +/- structure to_additive.value_type Modified src/algebra/group_power/basic.lean - theorem add_monoid_hom.map_nsmul - theorem add_nsmul - theorem bit0_nsmul' - theorem bit0_nsmul - theorem bit1_nsmul' - theorem bit1_nsmul +/- theorem commute.pow_left +/- theorem commute.pow_pow +/- theorem commute.pow_pow_self +/- theorem commute.pow_right +/- theorem commute.pow_self +/- theorem commute.self_pow + theorem div_gpow +/- theorem gpow_coe_nat +/- theorem gpow_eq_pow +/- theorem gpow_neg +/- theorem gpow_neg_succ_of_nat +/- theorem gpow_one +/- theorem gpow_zero - theorem gsmul_add - theorem gsmul_coe_nat - theorem gsmul_eq_smul - theorem gsmul_neg - theorem gsmul_neg_succ_of_nat - theorem gsmul_of_nat - theorem gsmul_sub - theorem gsmul_zero +/- theorem inv_pow - theorem is_add_monoid_hom.map_nsmul +/- theorem monoid_hom.map_pow - theorem mul_nsmul' - theorem mul_nsmul - theorem neg_gsmul - theorem neg_nsmul - theorem neg_one_gsmul +/- theorem npow_eq_pow - theorem nsmul_add - theorem nsmul_add_comm' - theorem nsmul_add_comm - theorem nsmul_add_sub_nsmul - theorem nsmul_eq_smul - theorem nsmul_neg_comm - theorem nsmul_sub - theorem nsmul_zero +/- theorem one_gpow - theorem one_gsmul - theorem one_nsmul +/- theorem one_pow +/- theorem pow_one +/- theorem pow_zero +/- theorem semiconj_by.pow_right - theorem sub_nsmul_nsmul_add - theorem succ_nsmul' - theorem succ_nsmul - theorem two_nsmul - theorem zero_gsmul - theorem zero_nsmul Modified src/analysis/calculus/extend_deriv.lean Modified src/data/list/basic.lean - theorem list.sum_repeat Modified src/data/multiset/basic.lean +/- theorem multiset.prod_repeat - theorem multiset.sum_map_sum_map - theorem multiset.sum_map_zero - theorem multiset.sum_repeat Modified src/group_theory/group_action/defs.lean Modified src/meta/expr.lean Modified src/tactic/transform_decl.lean Added test/to_additive.lean + def foo0 + def foo1 + def foo2 + def foo3 + theorem foo4_test + def foo5 + def foo6 + def foo7 + def {a 2021-07-05 14:57:50 f2edc5a feat(category_theory/preadditive/opposite): Adds some instances and lemmas (#8202) This PR adds some instances and lemmas related to opposites and additivity of functors. ESTIMATED CHANGES Modified src/category_theory/opposites.lean + theorem category_theory.nat_trans.left_op_comp + theorem category_theory.nat_trans.left_op_id + theorem category_theory.nat_trans.right_op_comp + theorem category_theory.nat_trans.right_op_id Modified src/category_theory/preadditive/opposite.lean + theorem category_theory.op_add + theorem category_theory.op_zero 2021-07-05 14:14:01 0b0d8e7 refactor(ring_theory): turn `localization_map` into a typeclass (#8119) This PR replaces the previous `localization_map (M : submodule R) Rₘ` definition (a ring hom `R →+* Rₘ` that presents `Rₘ` as the localization of `R` at `M`) with a new `is_localization M Rₘ` typeclass that puts these requirements on `algebra_map R Rₘ` instead. An important benefit is that we no longer need to mess with `localization_map.codomain` to put an `R`-algebra structure on `Rₘ`, we can just work with `Rₘ` directly. The important API changes are in commit 0de78dc, all other commits are simply fixes to the dependent files. Main changes: * `localization_map` has been replaced with `is_localization`, similarly `away_map` -> `is_localization.away`, `localization_map.at_prime` -> `is_localization.at_prime` and `fraction_map` -> `is_fraction_ring` * many declarations taking the `localization_map` as a parameter now take `R` and/or `M` and/or `Rₘ`, depending on what can be inferred easily * `localization_map.to_map` has been replaced with `algebra_map R Rₘ` * `localization_map.codomain` and its instances have been removed (you can now directly use `Rₘ`) * `is_localization.alg_equiv` generalizes `fraction_map.alg_equiv_of_quotient` (which has been renamed to `is_fraction_ring.alg_equiv`) * `is_localization.sec` has been introduced to replace `(to_localization_map _ _).sec` * `localization.of` have been replaced with `algebra` and `is_localization` instances on `localization`, similarly for `localization.away.of`, `localization.at_prime.of` and `fraction_ring.of`. * `int.fraction_map` is now an instance `rat.is_fraction_ring` * All files depending on the above definitions have had fixes. These were mostly straightforward, except: * [Some category-theory arrows in `algebraic_geometry/structure.sheaf` are now plain `ring_hom`s. This change was suggested by @justus-springer in order to help the elaborator figure out the arguments to `is_localization`.](https://github.com/leanprover-community/mathlib/commit/cf3acc925467cc06237a13dbe4264529f9a58850) * Deleted `minpoly.over_int_eq_over_rat` and `minpoly.integer_dvd`, now you can just use `gcd_domain_eq_field_fractions` or `gcd_domain_dvd` respectively. [This removes code duplication in `minpoly.lean`](https://github.com/leanprover-community/mathlib/commit/5695924d85710f98ac60a7df91d7dbf27408ca26) * `fractional_ideal` does not need to assume `is_localization` everywhere, only for certain specific definitions Things that stay the same: * `localization`, `localization.away`, `localization.at_prime` and `fraction_ring` are still a construction of localizations (although see above for `{localization,localization.away,localization.at_prime,fraction_ring}.of`) Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Refactoring.20.60localization_map.60 ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/char_p/algebra.lean + theorem is_fraction_ring.char_p_of_is_fraction_ring + theorem is_fraction_ring.char_zero_of_is_fraction_ring Modified src/algebraic_geometry/structure_sheaf.lean +/- def algebraic_geometry.structure_sheaf.to_basic_open +/- theorem algebraic_geometry.structure_sheaf.to_basic_open_to_map +/- def algebraic_geometry.structure_sheaf.to_open + theorem algebraic_geometry.structure_sheaf.to_open_apply Modified src/field_theory/minpoly.lean +/- theorem minpoly.gcd_domain_dvd +/- theorem minpoly.gcd_domain_eq_field_fractions - theorem minpoly.integer_dvd - theorem minpoly.over_int_eq_over_rat Modified src/ring_theory/dedekind_domain.lean +/- theorem coe_inv_of_nonzero +/- theorem inv_nonzero +/- theorem inv_zero' +/- theorem invertible_iff_generator_nonzero +/- theorem invertible_of_principal +/- theorem is_dedekind_domain_iff +/- theorem is_dedekind_domain_inv_iff +/- theorem is_principal_inv +/- theorem map_inv +/- theorem mul_generator_self_inv +/- theorem mul_inv_cancel_iff +/- theorem right_inverse_eq +/- theorem span_singleton_inv Modified src/ring_theory/fractional_ideal.lean +/- theorem ring.fractional_ideal.add_le_add_left +/- theorem ring.fractional_ideal.bot_eq_zero +/- theorem ring.fractional_ideal.canonical_equiv_flip +/- theorem ring.fractional_ideal.canonical_equiv_span_singleton +/- theorem ring.fractional_ideal.canonical_equiv_symm +/- theorem ring.fractional_ideal.coe_add +/- theorem ring.fractional_ideal.coe_div +/- theorem ring.fractional_ideal.coe_fun_map_equiv +/- theorem ring.fractional_ideal.coe_ideal_le_one + theorem ring.fractional_ideal.coe_injective +/- theorem ring.fractional_ideal.coe_le_coe +/- theorem ring.fractional_ideal.coe_map +/- theorem ring.fractional_ideal.coe_mem_one +/- theorem ring.fractional_ideal.coe_mk +/- theorem ring.fractional_ideal.coe_mul +/- theorem ring.fractional_ideal.coe_span_singleton +/- theorem ring.fractional_ideal.coe_to_fractional_ideal_bot +/- theorem ring.fractional_ideal.coe_to_submodule_eq_bot +/- theorem ring.fractional_ideal.coe_to_submodule_ne_bot +/- theorem ring.fractional_ideal.coe_zero +/- theorem ring.fractional_ideal.div_nonzero +/- theorem ring.fractional_ideal.div_one +/- theorem ring.fractional_ideal.div_span_singleton +/- theorem ring.fractional_ideal.div_zero +/- theorem ring.fractional_ideal.eq_one_div_of_mul_eq_one +/- theorem ring.fractional_ideal.eq_span_singleton_of_principal +/- theorem ring.fractional_ideal.eq_zero_iff +/- theorem ring.fractional_ideal.exists_eq_span_singleton_mul +/- theorem ring.fractional_ideal.ext +/- theorem ring.fractional_ideal.ext_iff +/- theorem ring.fractional_ideal.fractional_div_of_nonzero +/- theorem ring.fractional_ideal.fractional_inf +/- theorem ring.fractional_ideal.fractional_map +/- theorem ring.fractional_ideal.fractional_mul +/- theorem ring.fractional_ideal.fractional_of_subset_one +/- theorem ring.fractional_ideal.fractional_sup +/- theorem ring.fractional_ideal.is_fractional_of_fg +/- theorem ring.fractional_ideal.is_fractional_of_le +/- theorem ring.fractional_ideal.is_fractional_span_iff +/- theorem ring.fractional_ideal.is_fractional_span_singleton +/- theorem ring.fractional_ideal.is_noetherian +/- theorem ring.fractional_ideal.is_noetherian_coe_to_fractional_ideal +/- theorem ring.fractional_ideal.is_noetherian_iff +/- theorem ring.fractional_ideal.is_noetherian_span_singleton_inv_to_map_mul +/- theorem ring.fractional_ideal.is_noetherian_zero +/- theorem ring.fractional_ideal.is_principal_iff +/- theorem ring.fractional_ideal.le_div_iff_mul_le +/- theorem ring.fractional_ideal.le_div_iff_of_nonzero +/- theorem ring.fractional_ideal.le_iff_mem +/- theorem ring.fractional_ideal.le_one_iff_exists_coe_ideal +/- theorem ring.fractional_ideal.le_self_mul_one_div +/- theorem ring.fractional_ideal.le_self_mul_self +/- theorem ring.fractional_ideal.le_zero_iff +/- def ring.fractional_ideal.map +/- theorem ring.fractional_ideal.map_comp +/- theorem ring.fractional_ideal.map_div +/- def ring.fractional_ideal.map_equiv +/- theorem ring.fractional_ideal.map_equiv_apply +/- theorem ring.fractional_ideal.map_equiv_symm +/- theorem ring.fractional_ideal.map_map_symm +/- theorem ring.fractional_ideal.map_one_div +/- theorem ring.fractional_ideal.map_symm_map +/- theorem ring.fractional_ideal.mem_canonical_equiv_apply +/- theorem ring.fractional_ideal.mem_coe_ideal +/- theorem ring.fractional_ideal.mem_div_iff_of_nonzero +/- theorem ring.fractional_ideal.mem_map +/- theorem ring.fractional_ideal.mem_one_iff +/- theorem ring.fractional_ideal.mem_singleton_mul +/- theorem ring.fractional_ideal.mem_span_singleton +/- theorem ring.fractional_ideal.mem_span_singleton_self +/- theorem ring.fractional_ideal.mem_zero_iff +/- def ring.fractional_ideal.mul +/- theorem ring.fractional_ideal.mul_div_self_cancel_iff +/- theorem ring.fractional_ideal.mul_eq_mul +/- theorem ring.fractional_ideal.mul_le +/- theorem ring.fractional_ideal.mul_le_mul_left +/- theorem ring.fractional_ideal.mul_left_mono +/- theorem ring.fractional_ideal.mul_mem_mul +/- theorem ring.fractional_ideal.mul_one_div_le_one +/- theorem ring.fractional_ideal.mul_right_mono +/- theorem ring.fractional_ideal.mul_self_le_self +/- theorem ring.fractional_ideal.ne_zero_of_mul_eq_one +/- theorem ring.fractional_ideal.one_div_span_singleton +/- theorem ring.fractional_ideal.one_mem_one +/- def ring.fractional_ideal.span_singleton +/- theorem ring.fractional_ideal.span_singleton_eq_zero_iff +/- theorem ring.fractional_ideal.span_singleton_mul_span_singleton +/- theorem ring.fractional_ideal.span_singleton_ne_zero_iff +/- theorem ring.fractional_ideal.span_singleton_one +/- theorem ring.fractional_ideal.span_singleton_zero +/- theorem ring.fractional_ideal.sup_eq_add +/- theorem ring.fractional_ideal.val_eq_coe +/- theorem ring.fractional_ideal.zero_le +/- def ring.is_fractional Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/jacobson.lean +/- theorem ideal.is_jacobson_localization + theorem ideal.polynomial.is_integral_is_localization_polynomial_quotient - theorem ideal.polynomial.is_integral_localization_map_polynomial_quotient Modified src/ring_theory/laurent_series.lean + theorem laurent_series.coe_algebra_map - def laurent_series.of_power_series_localization Modified src/ring_theory/localization.lean - theorem fraction_map.comap_is_algebraic_iff - theorem fraction_map.eq_zero_of_num_eq_zero - theorem fraction_map.exists_reduced_fraction - def fraction_map.int.fraction_map - theorem fraction_map.integer_normalization_eq_zero_iff - theorem fraction_map.is_integer_of_is_unit_denom - theorem fraction_map.is_unit_denom_of_num_eq_zero - theorem fraction_map.is_unit_map_of_injective - theorem fraction_map.lift_mk' - theorem fraction_map.mk'_eq_div - theorem fraction_map.mk'_num_denom - theorem fraction_map.num_denom_reduced - theorem fraction_map.num_mul_denom_eq_num_iff_eq' - theorem fraction_map.num_mul_denom_eq_num_iff_eq - theorem fraction_map.num_mul_denom_eq_num_mul_denom_iff_eq - def fraction_map.to_integral_domain - theorem fraction_map.to_map_eq_zero_iff - def fraction_map - def fraction_ring.of - def integral_closure.fraction_map_of_algebraic - def integral_closure.fraction_map_of_finite_extension + theorem integral_closure.is_fraction_ring_of_algebraic + theorem integral_closure.is_fraction_ring_of_finite_extension + theorem is_fraction_ring.comap_is_algebraic_iff + theorem is_fraction_ring.eq_zero_of_num_eq_zero + theorem is_fraction_ring.exists_reduced_fraction + theorem is_fraction_ring.integer_normalization_eq_zero_iff + theorem is_fraction_ring.is_integer_of_is_unit_denom + theorem is_fraction_ring.is_unit_denom_of_num_eq_zero + theorem is_fraction_ring.is_unit_map_of_injective + theorem is_fraction_ring.lift_mk' + theorem is_fraction_ring.mk'_eq_div + theorem is_fraction_ring.mk'_mk_eq_div + theorem is_fraction_ring.mk'_num_denom + theorem is_fraction_ring.num_denom_reduced + theorem is_fraction_ring.num_mul_denom_eq_num_iff_eq' + theorem is_fraction_ring.num_mul_denom_eq_num_iff_eq + theorem is_fraction_ring.num_mul_denom_eq_num_mul_denom_iff_eq + def is_fraction_ring.to_integral_domain + theorem is_fraction_ring.to_map_eq_zero_iff + def is_fraction_ring + theorem is_localization.alg_equiv_mk' + theorem is_localization.alg_equiv_symm_mk' + theorem is_localization.at_prime.is_unit_mk'_iff + theorem is_localization.at_prime.is_unit_to_map_iff + theorem is_localization.at_prime.local_ring + theorem is_localization.at_prime.mk'_mem_maximal_iff + theorem is_localization.at_prime.to_map_mem_maximal_iff + theorem is_localization.away.away_map.lift_comp + theorem is_localization.away.away_map.lift_eq + def is_localization.away + def is_localization.coe_submodule + theorem is_localization.coeff_integer_normalization_mem_support + theorem is_localization.coeff_integer_normalization_of_not_mem_support + theorem is_localization.comap_map_of_is_prime_disjoint + theorem is_localization.epic_of_localization_map + theorem is_localization.eq_iff_eq + theorem is_localization.eq_mk'_iff_mul_eq + theorem is_localization.eq_of_eq + theorem is_localization.eq_zero_of_fst_eq_zero + theorem is_localization.exist_integer_multiples_of_finset + theorem is_localization.exists_integer_multiple' + theorem is_localization.exists_integer_multiple + theorem is_localization.integer_normalization_aeval_eq_zero + theorem is_localization.integer_normalization_coeff + theorem is_localization.integer_normalization_eval₂_eq_zero + theorem is_localization.integer_normalization_map_to_map + theorem is_localization.integer_normalization_spec + def is_localization.integral_domain_localization + def is_localization.integral_domain_of_le_non_zero_divisors + def is_localization.is_integer + theorem is_localization.is_integer_add + theorem is_localization.is_integer_mul + theorem is_localization.is_integer_one + theorem is_localization.is_integer_smul + theorem is_localization.is_integer_zero + theorem is_localization.is_noetherian_ring + theorem is_localization.is_prime_iff_is_prime_disjoint + theorem is_localization.is_prime_of_is_prime_disjoint + theorem is_localization.is_unit_comp + theorem is_localization.lift_comp + theorem is_localization.lift_eq + theorem is_localization.lift_eq_iff + theorem is_localization.lift_id + theorem is_localization.lift_injective_iff + theorem is_localization.lift_mk' + theorem is_localization.lift_mk'_spec + theorem is_localization.lift_of_comp + theorem is_localization.lift_surjective_iff + theorem is_localization.lift_unique + theorem is_localization.map_comap + theorem is_localization.map_comp + theorem is_localization.map_comp_map + theorem is_localization.map_eq + theorem is_localization.map_id + theorem is_localization.map_injective_of_injective + theorem is_localization.map_left_cancel + theorem is_localization.map_map + theorem is_localization.map_mk' + theorem is_localization.map_right_cancel + theorem is_localization.map_smul + theorem is_localization.map_unique + theorem is_localization.mem_coe_submodule + theorem is_localization.mem_map_algebra_map_iff + theorem is_localization.mk'_add + theorem is_localization.mk'_eq_iff_eq + theorem is_localization.mk'_eq_iff_eq_mul + theorem is_localization.mk'_eq_iff_mk'_eq + theorem is_localization.mk'_eq_mul_mk'_one + theorem is_localization.mk'_eq_of_eq + theorem is_localization.mk'_mem_iff + theorem is_localization.mk'_mul + theorem is_localization.mk'_mul_cancel_left + theorem is_localization.mk'_mul_cancel_right + theorem is_localization.mk'_mul_mk'_eq_one' + theorem is_localization.mk'_mul_mk'_eq_one + theorem is_localization.mk'_one + theorem is_localization.mk'_sec + theorem is_localization.mk'_self'' + theorem is_localization.mk'_self' + theorem is_localization.mk'_self + theorem is_localization.mk'_spec' + theorem is_localization.mk'_spec + theorem is_localization.mk'_surjective + theorem is_localization.mul_mk'_eq_mk'_of_mul + def is_localization.order_embedding + def is_localization.order_iso_of_prime + theorem is_localization.ring_equiv_of_ring_equiv_eq + theorem is_localization.ring_equiv_of_ring_equiv_eq_map + theorem is_localization.ring_equiv_of_ring_equiv_mk' + theorem is_localization.sec_spec' + theorem is_localization.sec_spec + theorem is_localization.surjective_quotient_map_of_maximal_of_localization + def is_localization.to_localization_map + theorem is_localization.to_localization_map_sec + theorem is_localization.to_localization_map_to_map + theorem is_localization.to_localization_map_to_map_apply + theorem is_localization.to_map_eq_zero_iff + theorem localization.alg_equiv_mk' + theorem localization.alg_equiv_mk - theorem localization.alg_equiv_of_quotient_apply - theorem localization.alg_equiv_of_quotient_symm_apply + theorem localization.alg_equiv_symm_mk' + theorem localization.alg_equiv_symm_mk - def localization.at_prime - theorem localization.away.mk_eq_mk' - def localization.away.of + theorem localization.le_comap_prime_compl_iff +/- theorem localization.local_ring_hom_comp +/- theorem localization.local_ring_hom_mk' +/- theorem localization.local_ring_hom_to_map +/- theorem localization.local_ring_hom_unique +/- theorem localization.mk_eq_mk' +/- theorem localization.mk_eq_mk'_apply + theorem localization.mk_one_eq_algebra_map - theorem localization.mk_one_eq_of + theorem localization.monoid_of_eq_algebra_map - theorem localization.monoid_of_eq_of - def localization.of - theorem localization.ring_equiv_of_quotient_apply - theorem localization.ring_equiv_of_quotient_mk' - theorem localization.ring_equiv_of_quotient_mk - theorem localization.ring_equiv_of_quotient_of - theorem localization.ring_equiv_of_quotient_symm_mk' - theorem localization.ring_equiv_of_quotient_symm_mk - theorem localization.ring_equiv_of_quotient_symm_of - theorem localization_map.algebra_map_eq - theorem localization_map.at_prime.is_unit_mk'_iff - theorem localization_map.at_prime.is_unit_to_map_iff - theorem localization_map.at_prime.mk'_mem_maximal_iff - theorem localization_map.at_prime.to_map_mem_maximal_iff - def localization_map.at_prime - theorem localization_map.away_map.lift_comp - theorem localization_map.away_map.lift_eq - def localization_map.away_map - def localization_map.codomain - def localization_map.coe_submodule - theorem localization_map.coeff_integer_normalization_mem_support - theorem localization_map.coeff_integer_normalization_of_not_mem_support - theorem localization_map.comap_map_of_is_prime_disjoint - theorem localization_map.epic_of_localization_map - theorem localization_map.eq_iff_eq - theorem localization_map.eq_iff_exists - theorem localization_map.eq_mk'_iff_mul_eq - theorem localization_map.eq_of_eq - theorem localization_map.eq_zero_of_fst_eq_zero - theorem localization_map.exist_integer_multiples_of_finset - theorem localization_map.exists_integer_multiple' - theorem localization_map.exists_integer_multiple - theorem localization_map.ext - theorem localization_map.ext_iff - theorem localization_map.injective - theorem localization_map.integer_normalization_aeval_eq_zero - theorem localization_map.integer_normalization_coeff - theorem localization_map.integer_normalization_eval₂_eq_zero - theorem localization_map.integer_normalization_map_to_map - theorem localization_map.integer_normalization_spec - def localization_map.integral_domain_localization - def localization_map.integral_domain_of_le_non_zero_divisors - def localization_map.is_integer - theorem localization_map.is_integer_add - theorem localization_map.is_integer_mul - theorem localization_map.is_integer_one - theorem localization_map.is_integer_smul - theorem localization_map.is_integer_zero - theorem localization_map.is_noetherian_ring - theorem localization_map.is_prime_iff_is_prime_disjoint - theorem localization_map.is_prime_of_is_prime_disjoint - theorem localization_map.is_unit_comp - theorem localization_map.lift_comp - theorem localization_map.lift_eq - theorem localization_map.lift_eq_iff - theorem localization_map.lift_id - theorem localization_map.lift_injective_iff - theorem localization_map.lift_left_inverse - theorem localization_map.lift_mk' - theorem localization_map.lift_mk'_spec - theorem localization_map.lift_of_comp - theorem localization_map.lift_surjective_iff - theorem localization_map.lift_unique - def localization_map.lin_coe - theorem localization_map.lin_coe_apply - theorem localization_map.map_comap - theorem localization_map.map_comp - theorem localization_map.map_comp_map - theorem localization_map.map_eq - theorem localization_map.map_id - theorem localization_map.map_left_cancel - theorem localization_map.map_map - theorem localization_map.map_mk' - theorem localization_map.map_right_cancel - theorem localization_map.map_smul - theorem localization_map.map_unique - theorem localization_map.map_units - theorem localization_map.mem_coe_submodule - theorem localization_map.mem_map_to_map_iff - theorem localization_map.mk'_add - theorem localization_map.mk'_eq_iff_eq - theorem localization_map.mk'_eq_iff_eq_mul - theorem localization_map.mk'_eq_iff_mk'_eq - theorem localization_map.mk'_eq_mul_mk'_one - theorem localization_map.mk'_eq_of_eq - theorem localization_map.mk'_mem_iff - theorem localization_map.mk'_mul - theorem localization_map.mk'_mul_cancel_left - theorem localization_map.mk'_mul_cancel_right - theorem localization_map.mk'_mul_mk'_eq_one' - theorem localization_map.mk'_mul_mk'_eq_one - theorem localization_map.mk'_one - theorem localization_map.mk'_sec - theorem localization_map.mk'_self'' - theorem localization_map.mk'_self' - theorem localization_map.mk'_self - theorem localization_map.mk'_spec' - theorem localization_map.mk'_spec - theorem localization_map.mk'_surjective - theorem localization_map.mul_mk'_eq_mk'_of_mul - theorem localization_map.of_id - def localization_map.order_embedding - def localization_map.order_iso_of_prime - theorem localization_map.ring_equiv_of_ring_equiv_eq - theorem localization_map.ring_equiv_of_ring_equiv_eq_map - theorem localization_map.ring_equiv_of_ring_equiv_eq_map_apply - theorem localization_map.ring_equiv_of_ring_equiv_mk' - theorem localization_map.sec_spec' - theorem localization_map.sec_spec - theorem localization_map.surj - theorem localization_map.surjective_quotient_map_of_maximal_of_localization - def localization_map.to_map - theorem localization_map.to_map_eq_zero_iff - theorem localization_map.to_map_injective - structure localization_map - theorem map_injective_of_injective - def ring_hom.to_localization_map - def submonoid.localization_map.to_ring_localization Modified src/ring_theory/polynomial/cyclotomic.lean +/- theorem polynomial.cyclotomic_eq_prod_X_pow_sub_one_pow_moebius Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/polynomial/rational_root.lean +/- theorem denom_dvd_of_is_root +/- theorem is_integer_of_is_root_of_monic +/- theorem num_dvd_of_is_root +/- theorem unique_factorization_monoid.integer_of_integral +/- theorem unique_factorization_monoid.integrally_closed Modified src/ring_theory/roots_of_unity.lean 2021-07-05 13:27:54 6bad4c6 feat(ring_theory/trace): the composition of `trace`s is `trace` (#8078) A little group of lemmas from the Dedekind domain project. ESTIMATED CHANGES Modified src/ring_theory/trace.lean + theorem algebra.trace_apply + theorem algebra.trace_comp_trace + theorem algebra.trace_comp_trace_of_basis + theorem algebra.trace_trace + theorem algebra.trace_trace_of_basis 2021-07-05 11:54:51 8ba94ab chore(algebra/invertible): units coerced to their monoid are invertible (#8195) ESTIMATED CHANGES Modified src/algebra/invertible.lean + theorem inv_of_units + def units.invertible 2021-07-05 10:29:14 63c8d33 feat(linear_algebra/matrix/reindex): generalize reindex_linear_equiv to operate on an arbitrary ring (#8159) This changes `reindex_linear_equiv eₘ eₙ : matrix m m R ≃ₗ[R] matrix n n R` to `reindex_linear_equiv R A eₘ eₙ : matrix m m A ≃ₗ[R] matrix n n A`, which both works for a larger range of types, and eliminates the need for type ascriptions that was previously caused by the implicitness of `R`. We cannot yet make the same generalization for `reindex_alg_equiv` as the `algebra R (matrix m m A)` structure implied by `algebra R A` is not in mathlib yet. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/algebra/lie/matrix.lean Modified src/linear_algebra/matrix/basis.lean Modified src/linear_algebra/matrix/reindex.lean +/- theorem matrix.det_reindex_alg_equiv +/- theorem matrix.det_reindex_linear_equiv_self +/- theorem matrix.mul_reindex_linear_equiv_one +/- def matrix.reindex_alg_equiv +/- theorem matrix.reindex_alg_equiv_apply +/- theorem matrix.reindex_alg_equiv_mul +/- theorem matrix.reindex_alg_equiv_refl +/- theorem matrix.reindex_alg_equiv_symm +/- def matrix.reindex_linear_equiv +/- theorem matrix.reindex_linear_equiv_apply +/- theorem matrix.reindex_linear_equiv_comp +/- theorem matrix.reindex_linear_equiv_comp_apply +/- theorem matrix.reindex_linear_equiv_mul +/- theorem matrix.reindex_linear_equiv_one +/- theorem matrix.reindex_linear_equiv_refl_refl +/- theorem matrix.reindex_linear_equiv_symm +/- theorem matrix.reindex_linear_equiv_trans 2021-07-05 09:56:32 a8f60eb feat(algebra/lie/free): the universal enveloping algebra of the free Lie algebra is the free associative algebra (#8183) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_hom.coe_id + theorem lie_hom.coe_one + theorem lie_hom.comp_id + theorem lie_hom.congr_fun + def lie_hom.id + theorem lie_hom.id_apply + theorem lie_hom.id_comp + theorem lie_hom.one_apply + theorem lie_hom.to_fun_eq_coe Modified src/algebra/lie/free.lean + def free_lie_algebra.universal_enveloping_equiv_free_algebra Modified src/algebra/lie/of_associative.lean + theorem alg_hom.coe_to_lie_hom + def alg_hom.to_lie_hom + theorem alg_hom.to_lie_hom_apply + theorem alg_hom.to_lie_hom_coe + theorem alg_hom.to_lie_hom_comp + theorem alg_hom.to_lie_hom_id + theorem alg_hom.to_lie_hom_injective - def lie_algebra.of_associative_algebra_hom - theorem lie_algebra.of_associative_algebra_hom_apply - theorem lie_algebra.of_associative_algebra_hom_comp - theorem lie_algebra.of_associative_algebra_hom_id Modified src/algebra/lie/universal_enveloping.lean 2021-07-04 16:29:14 4ace3b7 feat(measure_theory/conditional_expectation): define the Lp subspace of functions measurable wrt a sigma-algebra, prove completeness (#7945) This is the first step towards defining the conditional expectation: - in this PR a subspace of L^p is shown to be complete, which is necessary to define an orthogonal projection on that subspace; - the conditional expectation of functions in L^2 will be the orthogonal projection; - the definition will be extended to L^1 through simple functions (as is done for the integral definition). ESTIMATED CHANGES Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.range_eq_univ Modified src/measure_theory/arithmetic.lean + theorem ae_eq_trim_of_measurable Added src/measure_theory/conditional_expectation.lean + theorem measure_theory.Lp_meas.ae_measurable' + def measure_theory.Lp_meas + theorem measure_theory.Lp_meas_coe + def measure_theory.Lp_meas_to_Lp_trim + theorem measure_theory.Lp_meas_to_Lp_trim_add + theorem measure_theory.Lp_meas_to_Lp_trim_ae_eq + theorem measure_theory.Lp_meas_to_Lp_trim_left_inv + def measure_theory.Lp_meas_to_Lp_trim_lie + theorem measure_theory.Lp_meas_to_Lp_trim_norm_map + theorem measure_theory.Lp_meas_to_Lp_trim_right_inv + theorem measure_theory.Lp_meas_to_Lp_trim_smul + def measure_theory.Lp_trim_to_Lp_meas + theorem measure_theory.Lp_trim_to_Lp_meas_ae_eq + theorem measure_theory.ae_measurable'.add + theorem measure_theory.ae_measurable'.congr + theorem measure_theory.ae_measurable'.const_smul + def measure_theory.ae_measurable' + theorem measure_theory.ae_measurable'_of_ae_measurable'_trim + theorem measure_theory.mem_Lp_meas_iff_ae_measurable' + theorem measure_theory.mem_Lp_meas_self + theorem measure_theory.mem_Lp_meas_to_Lp_of_trim + theorem measure_theory.mem_ℒp_trim_of_mem_Lp_meas Modified src/measure_theory/lp_space.lean +/- theorem measure_theory.ess_sup_trim +/- theorem measure_theory.limsup_trim + theorem measure_theory.mem_ℒp_of_mem_ℒp_trim +/- theorem measure_theory.snorm'_trim +/- theorem measure_theory.snorm_ess_sup_trim +/- theorem measure_theory.snorm_trim + theorem measure_theory.snorm_trim_ae Modified src/topology/metric_space/isometry.lean + theorem isometric.complete_space_iff 2021-07-04 15:19:05 01b062a chore(category_theory/abelian/diagram_lemmas/four): Make the diagram into a code block (#8192) Currently on mathlib docs, it looks like this ![image](https://user-images.githubusercontent.com/15098580/124386872-4c869d00-dcd4-11eb-9c5c-ce6a29e4e607.png) Making it into a code block should mean that it will render correctly on mathlib docs ESTIMATED CHANGES Modified src/category_theory/abelian/diagram_lemmas/four.lean 2021-07-04 13:54:21 d819e36 feat(data/finset/basic): sdiff_val, disjoint_to_finset_iff_disjoint (#8168) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.sdiff_val + theorem list.disjoint_to_finset_iff_disjoint +/- theorem multiset.disjoint_to_finset 2021-07-04 13:20:09 2ebd96c doc(measure_theory/measurable_space): correct tiny misprints in two doc-strings (#8187) Modifying doc-strings of `measurable_space.comap` and `measurable_space.map`: changing "measure space" to "measurable space" in both. ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean 2021-07-04 11:49:30 7135c96 chore(data/list/perm): make `perm_nil` a simp lemma (#8191) ESTIMATED CHANGES Modified src/data/list/perm.lean + theorem list.nil_perm 2021-07-04 09:30:33 a9db7ce chore(measure_theory/{bochner_integration, simple_func_dense}): Move construction of embedding of L1 simple funcs (#8185) At the moment, there is a low-level construction in `measure_theory/simple_func_dense` for the approximation of an element of L1 by simple functions, and this is generalized to a more abstract version (with a normed space `L1.simple_func` and a dense linear embedding of this into `L1`) in `measure_theory/bochner_integration`. #8114 generalized the low-level construction, and I am thinking of rewriting the more abstract version to apply to `Lp`, too. But since this will all be more generally useful than in the construction of the Bochner integral, and since the Bochner integral file is very long, I propose moving all this material into `measure_theory/simple_func_dense`. This PR shows what it would look like. There are no mathematical changes. ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean - theorem measure_theory.L1.simple_func.add_to_simple_func - theorem measure_theory.L1.simple_func.coe_add - theorem measure_theory.L1.simple_func.coe_coe - theorem measure_theory.L1.simple_func.coe_neg - theorem measure_theory.L1.simple_func.coe_smul - theorem measure_theory.L1.simple_func.coe_sub - def measure_theory.L1.simple_func.coe_to_L1 - theorem measure_theory.L1.simple_func.coe_zero - theorem measure_theory.L1.simple_func.dist_eq - theorem measure_theory.L1.simple_func.dist_to_simple_func - theorem measure_theory.L1.simple_func.edist_eq - theorem measure_theory.L1.simple_func.lintegral_edist_to_simple_func_lt_top - theorem measure_theory.L1.simple_func.neg_to_simple_func - theorem measure_theory.L1.simple_func.norm_eq - theorem measure_theory.L1.simple_func.norm_to_L1 - theorem measure_theory.L1.simple_func.norm_to_simple_func - theorem measure_theory.L1.simple_func.smul_to_simple_func - theorem measure_theory.L1.simple_func.sub_to_simple_func - def measure_theory.L1.simple_func.to_L1 - theorem measure_theory.L1.simple_func.to_L1_add - theorem measure_theory.L1.simple_func.to_L1_eq_mk - theorem measure_theory.L1.simple_func.to_L1_eq_to_L1 - theorem measure_theory.L1.simple_func.to_L1_neg - theorem measure_theory.L1.simple_func.to_L1_smul - theorem measure_theory.L1.simple_func.to_L1_sub - theorem measure_theory.L1.simple_func.to_L1_to_simple_func - theorem measure_theory.L1.simple_func.to_L1_zero - def measure_theory.L1.simple_func.to_simple_func - theorem measure_theory.L1.simple_func.to_simple_func_eq_to_fun - theorem measure_theory.L1.simple_func.to_simple_func_to_L1 - theorem measure_theory.L1.simple_func.zero_to_simple_func - def measure_theory.L1.simple_func - theorem measure_theory.simple_func.exists_forall_norm_le - theorem measure_theory.simple_func.fin_meas_supp.integrable - theorem measure_theory.simple_func.integrable_iff - theorem measure_theory.simple_func.integrable_iff_fin_meas_supp - theorem measure_theory.simple_func.integrable_of_finite_measure - theorem measure_theory.simple_func.integrable_pair - theorem measure_theory.simple_func.measure_preimage_lt_top_of_integrable - theorem measure_theory.simple_func.measure_preimage_lt_top_of_mem_ℒp - theorem measure_theory.simple_func.mem_ℒp_iff - theorem measure_theory.simple_func.mem_ℒp_iff_fin_meas_supp - theorem measure_theory.simple_func.mem_ℒp_iff_integrable - theorem measure_theory.simple_func.mem_ℒp_of_finite_measure - theorem measure_theory.simple_func.mem_ℒp_of_finite_measure_preimage - theorem measure_theory.simple_func.mem_ℒp_top - theorem measure_theory.simple_func.mem_ℒp_zero Modified src/measure_theory/set_integral.lean - theorem measure_theory.integrable.induction Modified src/measure_theory/simple_func_dense.lean + theorem measure_theory.L1.simple_func.add_to_simple_func + theorem measure_theory.L1.simple_func.coe_add + theorem measure_theory.L1.simple_func.coe_coe + theorem measure_theory.L1.simple_func.coe_neg + theorem measure_theory.L1.simple_func.coe_smul + theorem measure_theory.L1.simple_func.coe_sub + def measure_theory.L1.simple_func.coe_to_L1 + theorem measure_theory.L1.simple_func.coe_zero + theorem measure_theory.L1.simple_func.dist_eq + theorem measure_theory.L1.simple_func.dist_to_simple_func + theorem measure_theory.L1.simple_func.edist_eq + theorem measure_theory.L1.simple_func.lintegral_edist_to_simple_func_lt_top + theorem measure_theory.L1.simple_func.neg_to_simple_func + theorem measure_theory.L1.simple_func.norm_eq + theorem measure_theory.L1.simple_func.norm_to_L1 + theorem measure_theory.L1.simple_func.norm_to_simple_func + theorem measure_theory.L1.simple_func.smul_to_simple_func + theorem measure_theory.L1.simple_func.sub_to_simple_func + def measure_theory.L1.simple_func.to_L1 + theorem measure_theory.L1.simple_func.to_L1_add + theorem measure_theory.L1.simple_func.to_L1_eq_mk + theorem measure_theory.L1.simple_func.to_L1_eq_to_L1 + theorem measure_theory.L1.simple_func.to_L1_neg + theorem measure_theory.L1.simple_func.to_L1_smul + theorem measure_theory.L1.simple_func.to_L1_sub + theorem measure_theory.L1.simple_func.to_L1_to_simple_func + theorem measure_theory.L1.simple_func.to_L1_zero + def measure_theory.L1.simple_func.to_simple_func + theorem measure_theory.L1.simple_func.to_simple_func_eq_to_fun + theorem measure_theory.L1.simple_func.to_simple_func_to_L1 + theorem measure_theory.L1.simple_func.zero_to_simple_func + def measure_theory.L1.simple_func + theorem measure_theory.integrable.induction + theorem measure_theory.simple_func.exists_forall_norm_le + theorem measure_theory.simple_func.fin_meas_supp.integrable + theorem measure_theory.simple_func.integrable_iff + theorem measure_theory.simple_func.integrable_iff_fin_meas_supp + theorem measure_theory.simple_func.integrable_of_finite_measure + theorem measure_theory.simple_func.integrable_pair + theorem measure_theory.simple_func.measure_preimage_lt_top_of_integrable + theorem measure_theory.simple_func.measure_preimage_lt_top_of_mem_ℒp + theorem measure_theory.simple_func.mem_ℒp_iff + theorem measure_theory.simple_func.mem_ℒp_iff_fin_meas_supp + theorem measure_theory.simple_func.mem_ℒp_iff_integrable + theorem measure_theory.simple_func.mem_ℒp_of_finite_measure + theorem measure_theory.simple_func.mem_ℒp_of_finite_measure_preimage + theorem measure_theory.simple_func.mem_ℒp_top + theorem measure_theory.simple_func.mem_ℒp_zero 2021-07-04 09:30:32 180d004 ci(.github/workflows/*): switch to self-hosted runners (#8177) With this PR, mathlib builds on all branches will use the self-hosted runners that have the "pr" tag. One self-hosted runner is reserved for bors staging branch builds and does not have that tag. The `build_fork` workflow has been added for use by external forks (and other Lean projects which might want to copy mathlib's CI). ESTIMATED CHANGES Modified .github/workflows/bors.yml Modified .github/workflows/build.yml Modified .github/workflows/build.yml.in Added .github/workflows/build_fork.yml Modified .github/workflows/mk_build_yml.sh Modified bors.toml 2021-07-04 07:58:33 863f007 feat(data/list/basic): map_permutations (#8188) As [requested on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/perm.20of.20permutations/near/244821779). ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.foldr_permutations_aux2 + theorem list.length_foldr_permutations_aux2' + theorem list.length_foldr_permutations_aux2 + theorem list.length_permutations_aux2 + theorem list.map_bind + theorem list.map_permutations + theorem list.map_permutations_aux2' + theorem list.map_permutations_aux2 + theorem list.map_permutations_aux + theorem list.mem_foldr_permutations_aux2 + theorem list.mem_permutations_aux2' + theorem list.mem_permutations_aux2 + theorem list.permutations_aux2_append + theorem list.permutations_aux2_fst + theorem list.permutations_aux2_snd_cons + theorem list.permutations_aux2_snd_nil Modified src/data/list/perm.lean - theorem list.foldr_permutations_aux2 - theorem list.length_foldr_permutations_aux2' - theorem list.length_foldr_permutations_aux2 - theorem list.length_permutations_aux2 - theorem list.mem_foldr_permutations_aux2 - theorem list.mem_permutations_aux2' - theorem list.mem_permutations_aux2 - theorem list.permutations_aux2_append - theorem list.permutations_aux2_fst - theorem list.permutations_aux2_snd_cons - theorem list.permutations_aux2_snd_nil 2021-07-04 02:26:45 cdb44df chore(scripts): update nolints.txt (#8189) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-07-03 16:33:31 531d850 feat(category_theory): left-derived functors (#7487) # Left-derived functors We define the left-derived functors `F.left_derived n : C ⥤ D` for any additive functor `F` out of a category with projective resolutions. The definition is ``` projective_resolutions C ⋙ F.map_homotopy_category _ ⋙ homotopy_category.homology_functor D _ n ``` that is, we pick a projective resolution (thought of as an object of the homotopy category), we apply `F` objectwise, and compute `n`-th homology. We show that these left-derived functors can be calculated on objects using any choice of projective resolution, and on morphisms by any choice of lift to a chain map between chosen projective resolutions. Similarly we define natural transformations between left-derived functors coming from natural transformations between the original additive functors, and show how to compute the components. ## Implementation We don't assume the categories involved are abelian (just preadditive, and have equalizers, cokernels, and image maps), or that the functors are right exact. None of these assumptions are needed yet. It is often convenient, of course, to work with `[abelian C] [enough_projectives C] [abelian D]` which (assuming the results from `category_theory.abelian.projective`) are enough to provide all the typeclass hypotheses assumed here. ESTIMATED CHANGES Modified src/algebra/homology/homology.lean +/- def homology_functor Added src/category_theory/derived.lean + def category_theory.functor.left_derived + theorem category_theory.functor.left_derived_map_eq + def category_theory.functor.left_derived_obj_iso + def category_theory.functor.left_derived_obj_projective_succ + def category_theory.functor.left_derived_obj_projective_zero + def category_theory.nat_trans.left_derived + theorem category_theory.nat_trans.left_derived_comp + theorem category_theory.nat_trans.left_derived_eq + theorem category_theory.nat_trans.left_derived_id 2021-07-03 13:08:36 74a0f67 refactor(measure_theory/simple_func_dense): generalize approximation results from L^1 to L^p (#8114) Simple functions are dense in L^p. The argument for `1 ≤ p < ∞` is exactly the same as for `p = 1`, which was already in mathlib: construct a suitable sequence of pointwise approximations and apply the Dominated Convergence Theorem. This PR refactors to provide the general-`p` result. The argument for `p = ∞` requires finite-dimensionality of `E` and a different approximating sequence, so is left for another PR. ESTIMATED CHANGES Modified src/analysis/convex/integral.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/lp_space.lean + theorem measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp'' +/- theorem measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp' +/- theorem measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp + theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top + theorem measure_theory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top Modified src/measure_theory/prod.lean Modified src/measure_theory/simple_func_dense.lean + theorem measure_theory.simple_func.mem_ℒp_approx_on + theorem measure_theory.simple_func.mem_ℒp_approx_on_univ + theorem measure_theory.simple_func.nnnorm_approx_on_le + theorem measure_theory.simple_func.norm_approx_on_y₀_le - theorem measure_theory.simple_func.tendsto_approx_on_L1_edist + theorem measure_theory.simple_func.tendsto_approx_on_L1_nnnorm + theorem measure_theory.simple_func.tendsto_approx_on_Lp_snorm - theorem measure_theory.simple_func.tendsto_approx_on_univ_L1_edist + theorem measure_theory.simple_func.tendsto_approx_on_univ_L1_nnnorm + theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp + theorem measure_theory.simple_func.tendsto_approx_on_univ_Lp_snorm 2021-07-03 10:46:49 a022bb7 feat(algebra/invertible): add a missing lemma `inv_of_eq_left_inv` (#8179) add "inv_of_eq_left_inv" ESTIMATED CHANGES Modified src/algebra/invertible.lean + theorem inv_of_eq_left_inv 2021-07-03 10:46:48 111ac5c feat(group_theory/perm/basic): of_subtype_apply_of_mem (#8174) ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean +/- theorem equiv.perm.of_subtype_apply_coe + theorem equiv.perm.of_subtype_apply_of_mem 2021-07-03 10:46:47 25d042c feat(algebra/periodic): a few more periodicity lemmas (#8062) A few more lemmas about periodic functions that I realized are useful. ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem function.antiperiodic.funext' + theorem function.antiperiodic.funext + theorem function.periodic.funext 2021-07-03 09:58:05 915902e feat(topology/algebra/multilinear): add a linear_equiv version of pi (#8064) This is a weaker version of `continuous_multilinear_map.piₗᵢ` that requires weaker typeclasses. Unfortunately I don't understand why the typeclass system continues not to cooperate here, but I suspect it's the same class of problem that plagues `dfinsupp`. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean Modified src/topology/algebra/mul_action.lean Modified src/topology/algebra/multilinear.lean +/- def continuous_linear_map.comp_continuous_multilinear_map +/- theorem continuous_linear_map.comp_continuous_multilinear_map_coe +/- theorem continuous_multilinear_map.coe_pi +/- def continuous_multilinear_map.pi +/- theorem continuous_multilinear_map.pi_apply + def continuous_multilinear_map.pi_equiv + def continuous_multilinear_map.pi_linear_equiv 2021-07-03 03:02:44 edb72b4 docs(data/real/*): add module docstrings (#8145) ESTIMATED CHANGES Modified src/data/real/basic.lean Modified src/data/real/cau_seq_completion.lean 2021-07-02 22:04:07 10f6c2c feat(data/real/nnreal): cast_nat_abs_eq_nnabs_cast (#8121) ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem cast_nat_abs_eq_nnabs_cast 2021-07-02 20:58:33 f8ca790 chore(group_theory/congruence): fix docstring (#8162) This fixes a docstring which didn't match the code. ESTIMATED CHANGES Modified src/group_theory/congruence.lean 2021-07-02 20:21:24 f5a8b8a fix(topology/continuous_function/basic): fix `continuous_map.id_coe` (#8180) ESTIMATED CHANGES Modified src/topology/continuous_function/basic.lean +/- theorem continuous_map.id_coe 2021-07-02 19:46:00 9e9dfc2 feat(category_theory/adjunction/fully_faithful): Converses to `unit_is_iso_of_L_fully_faithful` and `counit_is_iso_of_R_fully_faithful` (#8181) Add a converse to `unit_is_iso_of_L_fully_faithful` and to `counit_is_iso_of_R_fully_faithful` ESTIMATED CHANGES Modified src/category_theory/adjunction/fully_faithful.lean + theorem category_theory.L_faithful_of_unit_is_iso + def category_theory.L_full_of_unit_is_iso + theorem category_theory.R_faithful_of_counit_is_iso + def category_theory.R_full_of_counit_is_iso + theorem category_theory.inv_counit_map + theorem category_theory.inv_map_unit 2021-07-02 18:29:36 ea924e5 feat(data/nat/choose/bounds): exponential bounds on binomial coefficients (#8095) ESTIMATED CHANGES Added src/combinatorics/choose/bounds.lean + theorem choose_le_pow + theorem pow_le_choose 2021-07-02 16:37:34 67c72b4 feat(data/list/cycle): lift next_prev to cycle (#8172) ESTIMATED CHANGES Modified src/data/list/cycle.lean + theorem cycle.next_prev + theorem cycle.prev_next 2021-07-02 10:55:24 d6a7c3b chore(algebra/algebra/basic): add `alg_hom.of_linear_map` and lemmas (#8151) This lets me golf `complex.lift` a little ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_hom.of_linear_map + theorem alg_hom.of_linear_map_id + theorem alg_hom.of_linear_map_to_linear_map + theorem alg_hom.to_linear_map_id + theorem alg_hom.to_linear_map_of_linear_map Modified src/data/complex/module.lean 2021-07-02 08:19:35 dfc42f9 feat(data/equiv/basic): swap_apply_ne_self_iff (#8167) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.swap_apply_ne_self_iff 2021-07-02 05:56:27 f5f8a20 feat(analysis/calculus/fderiv_symmetric): prove that the second derivative is symmetric (#8104) We show that, if a function is differentiable over the reals around a point `x`, and is second-differentiable at `x`, then the second derivative is symmetric. In fact, we even prove a stronger statement for functions differentiable within a convex set, to be able to apply it for functions on the half-plane or the quadrant. ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_o_const_const_iff Added src/analysis/calculus/fderiv_symmetric.lean + theorem convex.is_o_alternate_sum_square + theorem convex.second_derivative_within_at_symmetric + theorem convex.second_derivative_within_at_symmetric_of_mem_interior + theorem convex.taylor_approx_two_segment + theorem second_derivative_symmetric + theorem second_derivative_symmetric_of_eventually Modified src/analysis/convex/basic.lean + theorem convex.add_smul_mem + theorem convex.add_smul_sub_mem Modified src/analysis/convex/topology.lean + theorem convex.add_smul_mem_interior + theorem convex.add_smul_sub_mem_interior Modified src/analysis/normed_space/basic.lean + theorem add_mem_ball_iff_norm + theorem add_mem_closed_ball_iff_norm 2021-07-01 21:10:28 92b64a0 feat(data/list/duplicate): prop that element is a duplicate (#7824) As discussed in https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/nodup.20and.20decidability and #7587 ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.sublist_nil_iff_eq_nil Added src/data/list/duplicate.lean + theorem list.duplicate.duplicate_cons + theorem list.duplicate.elim_nil + theorem list.duplicate.elim_singleton + theorem list.duplicate.mem + theorem list.duplicate.mem_cons_self + theorem list.duplicate.mono_sublist + theorem list.duplicate.ne_nil + theorem list.duplicate.ne_singleton + theorem list.duplicate.not_nodup + theorem list.duplicate.of_duplicate_cons + inductive list.duplicate + theorem list.duplicate_cons_iff + theorem list.duplicate_cons_iff_of_ne + theorem list.duplicate_cons_self_iff + theorem list.duplicate_iff_sublist + theorem list.duplicate_iff_two_le_count + theorem list.exists_duplicate_iff_not_nodup + theorem list.mem.duplicate_cons_self + theorem list.nodup_iff_forall_not_duplicate + theorem list.not_duplicate_nil + theorem list.not_duplicate_singleton Modified src/data/list/nodup_equiv_fin.lean + theorem list.duplicate_iff_exists_distinct_nth_le + theorem list.sublist_iff_exists_fin_order_embedding_nth_le_eq + theorem list.sublist_iff_exists_order_embedding_nth_eq + theorem list.sublist_of_order_embedding_nth_eq 2021-07-01 19:34:23 5945ca3 chore(*): update to lean 3.31.0c (#8122) ESTIMATED CHANGES Modified leanpkg.toml Modified src/combinatorics/composition.lean Added src/data/lazy_list.lean + def lazy_list.append + def lazy_list.approx + def lazy_list.filter + def lazy_list.for + def lazy_list.head + def lazy_list.join + def lazy_list.map + def lazy_list.map₂ + def lazy_list.nth + def lazy_list.of_list + def lazy_list.singleton + def lazy_list.tail + def lazy_list.to_list + def lazy_list.zip + inductive lazy_list Modified src/data/lazy_list/basic.lean 2021-07-01 18:15:23 395d871 chore(algebra/lie/free): tidy up after #8153 (#8163) @eric-wieser had some further comments and suggestions which didn't make it into #8153 ESTIMATED CHANGES Modified src/algebra/free_non_unital_non_assoc_algebra.lean Modified src/algebra/lie/free.lean +/- theorem free_lie_algebra.hom_ext + theorem free_lie_algebra.rel.neg Modified src/algebra/lie/non_unital_non_assoc_algebra.lean +/- def lie_hom.to_non_unital_alg_hom + theorem lie_hom.to_non_unital_alg_hom_injective 2021-07-01 16:37:06 1571290 feat(logic/is_empty): add some simp lemmas and unique instances (#7832) There are a handful of lemmas about `(h : ¬nonempty a)` that if restated in terms of `[is_empty a]` become suitable for `simp` or as `instance`s. This adjusts some of those lemmas. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.eq_empty_of_is_empty Modified src/data/matrix/basic.lean +/- theorem matrix.subsingleton_of_empty_left +/- theorem matrix.subsingleton_of_empty_right Modified src/data/matrix/dmatrix.lean +/- theorem dmatrix.subsingleton_of_empty_left +/- theorem dmatrix.subsingleton_of_empty_right Modified src/data/set/basic.lean + theorem set.eq_empty_of_is_empty + def set.unique_empty Modified src/linear_algebra/char_poly/coeff.lean Modified src/logic/embedding.lean Modified src/logic/is_empty.lean + theorem subtype.is_empty_of_false Modified src/order/filter/basic.lean + theorem filter.filter_eq_bot_of_is_empty Modified src/set_theory/cardinal.lean + theorem cardinal.eq_zero_of_is_empty Modified src/set_theory/ordinal.lean 2021-07-01 14:19:24 3d2e5ac chore(linear_algebra/matrix/determinant): golf a proof (#8157) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean 2021-07-01 14:19:23 ca30bd2 feat(analysis/fourier): span of monomials is dense in C^0 (#8035) Prove that the span of the monomials `λ z, z ^ n` is dense in `C(circle, ℂ)`, i.e. that its `submodule.topological_closure` is `⊤`. This follows from the Stone-Weierstrass theorem after checking that it is a subalgebra, closed under conjugation, and separates points. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.to_ring_hom_eq_coe Modified src/analysis/fourier.lean + def fourier_subalgebra + theorem fourier_subalgebra_closure_eq_top + theorem fourier_subalgebra_coe + theorem fourier_subalgebra_conj_invariant + theorem fourier_subalgebra_separates_points + theorem span_fourier_closure_eq_top Modified src/ring_theory/finiteness.lean Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.quotient.mkₐ_ker 2021-07-01 12:58:30 3fa61ea feat(algebra/lie/free): construction of free Lie algebras (#8153) ESTIMATED CHANGES Added src/algebra/lie/free.lean + theorem free_lie_algebra.hom_ext + def free_lie_algebra.lift + def free_lie_algebra.lift_aux + theorem free_lie_algebra.lift_aux_map_add + theorem free_lie_algebra.lift_aux_map_mul + theorem free_lie_algebra.lift_aux_map_smul + theorem free_lie_algebra.lift_aux_spec + theorem free_lie_algebra.lift_comp_of + theorem free_lie_algebra.lift_of_apply + theorem free_lie_algebra.lift_symm_apply + theorem free_lie_algebra.lift_unique + def free_lie_algebra.mk + def free_lie_algebra.of + theorem free_lie_algebra.of_comp_lift + theorem free_lie_algebra.rel.add_left + inductive free_lie_algebra.rel + def free_lie_algebra Added src/algebra/lie/non_unital_non_assoc_algebra.lean + def lie_hom.to_non_unital_alg_hom + def lie_ring.to_non_unital_non_assoc_semiring Modified src/algebra/non_unital_alg_hom.lean + theorem non_unital_alg_hom.congr_fun 2021-07-01 12:58:29 4d24172 docs(order/zorn): explain how to use Zorn's lemma (#8125) ESTIMATED CHANGES Modified src/order/zorn.lean 2021-07-01 12:58:27 7cbca35 feat(data/fintype/intervals): fintype instances for set.{Icc,Ioc,Ioo} (#8123) ESTIMATED CHANGES Modified src/data/fintype/intervals.lean + theorem set.Icc_ℤ_card +/- theorem set.Icc_ℤ_finite + theorem set.Ioc_ℤ_card +/- theorem set.Ioc_ℤ_finite + theorem set.Ioo_ℤ_card +/- theorem set.Ioo_ℤ_finite 2021-07-01 11:10:36 6e0d2d3 feat(logic/basic): add two simp lemmas (#8148) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem iff_and_self + theorem iff_self_and 2021-07-01 07:48:35 8986c4f chore(linear_algebra/matrix/determinant): squeeze some simps for speed up (#8156) I simply squeezed some simps in `linear_algebra/matrix/determinant` to obtain two much faster proofs. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean 2021-07-01 07:48:34 582ee9e feat(logic/basic): subtype.subsingleton (#8138) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem subtype.subsingleton 2021-07-01 07:48:33 aabb900 feat(order/preorder_hom): preorder_hom_eq_id (#8135) From LTE ESTIMATED CHANGES Modified src/order/preorder_hom.lean + theorem preorder_hom.preorder_hom_eq_id + def preorder_hom.unique 2021-07-01 07:48:32 4a75876 feat(category_theory/limits/concrete_category): Some lemmas about limits in concrete categories (#8130) Generalizes some lemmas from LTE. See zulip discussion [here](https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics/topic/for_mathlib.2Fwide_pullback/near/244298079). ESTIMATED CHANGES Modified src/category_theory/limits/concrete_category.lean + theorem category_theory.limits.concrete.colimit_exists_rep + theorem category_theory.limits.concrete.from_union_surjective_of_is_colimit + theorem category_theory.limits.concrete.is_colimit_exists_rep + theorem category_theory.limits.concrete.is_limit_ext + theorem category_theory.limits.concrete.limit_ext + theorem category_theory.limits.concrete.to_product_injective_of_is_limit + theorem category_theory.limits.concrete.wide_pullback_ext' + theorem category_theory.limits.concrete.wide_pullback_ext + theorem category_theory.limits.concrete.wide_pushout_exists_rep' + theorem category_theory.limits.concrete.wide_pushout_exists_rep Modified src/topology/category/Profinite/default.lean 2021-07-01 06:12:12 2df573a feat(data/int/basic): int.eq_zero_of_div_eq_zero (#8134) ESTIMATED CHANGES Modified src/data/int/basic.lean 2021-07-01 02:20:40 b972280 chore(scripts): update nolints.txt (#8155) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-30 21:21:07 0faf086 feat(data/int/cast): cast_nat_abs (#8120) ESTIMATED CHANGES Modified src/data/int/cast.lean + theorem int.cast_nat_abs 2021-06-30 21:21:06 ad00a02 feat(topology/vector_bundle): `topological_vector_bundle_core` (#8089) Analogous construction to `topological_fiber_bundle_core`. This construction gives a way to construct vector bundles from a structure registering how trivialization changes act on fibers. ESTIMATED CHANGES Modified src/topology/vector_bundle.lean + def topological_vector_bundle_core.base + theorem topological_vector_bundle_core.coe_cord_change + theorem topological_vector_bundle_core.continuous_proj + theorem topological_vector_bundle_core.coord_change_linear_comp + def topological_vector_bundle_core.fiber + def topological_vector_bundle_core.index + theorem topological_vector_bundle_core.is_open_map_proj + def topological_vector_bundle_core.local_triv + def topological_vector_bundle_core.local_triv_at + theorem topological_vector_bundle_core.local_triv_at_apply + theorem topological_vector_bundle_core.mem_local_triv_source + theorem topological_vector_bundle_core.mem_source_at + theorem topological_vector_bundle_core.mem_triv_change_source + def topological_vector_bundle_core.proj + def topological_vector_bundle_core.to_topological_vector_bundle_core + def topological_vector_bundle_core.triv_change + structure topological_vector_bundle_core 2021-06-30 20:39:41 e70093f feat(algebra/free_non_unital_non_assoc_algebra): construction of the free non-unital, non-associative algebra on a type `X` with coefficients in a semiring `R` (#8141) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Added src/algebra/free_non_unital_non_assoc_algebra.lean + theorem free_non_unital_non_assoc_algebra.hom_ext + def free_non_unital_non_assoc_algebra.lift + theorem free_non_unital_non_assoc_algebra.lift_comp_of + theorem free_non_unital_non_assoc_algebra.lift_of_apply + theorem free_non_unital_non_assoc_algebra.lift_symm_apply + theorem free_non_unital_non_assoc_algebra.lift_unique + def free_non_unital_non_assoc_algebra.of + theorem free_non_unital_non_assoc_algebra.of_comp_lift + def free_non_unital_non_assoc_algebra 2021-06-30 18:53:30 e713106 docs(data/string/*): add module docstrings (#8144) ESTIMATED CHANGES Modified src/data/string/basic.lean Modified src/data/string/defs.lean 2021-06-30 18:53:29 8ee2967 feat(algebra/big_operators/basic): nat_abs_sum_le (#8132) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem nat_abs_sum_le 2021-06-30 18:03:21 3a5851f feat(data/complex/module): add complex.lift to match zsqrtd.lift (#8107) [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/The.20unique.20.60.E2.84.82.20.E2.86.92.E2.82.90.5B.E2.84.9D.5D.20A.60.20given.20a.20square.20root.20of.20-1/near/244135262) ESTIMATED CHANGES Modified src/data/complex/module.lean + def complex.lift_aux + theorem complex.lift_aux_I + theorem complex.lift_aux_apply + theorem complex.lift_aux_apply_I + theorem complex.lift_aux_neg_I 2021-06-30 16:49:13 36c90d5 fix(algebra/algebra/subalgebra): fix incorrect namespaces and remove duplicate instance (#8140) We already had a `subsingleton` instance on `alg_hom`s added in #5672, but we didn't find it #8110 because * gh-6025 means we can't ask `apply_instance` to find it * it had an incorrect name in the wrong namespace Code opting into this instance will need to change from ```lean local attribute [instance] alg_hom.subsingleton ``` to ```lean local attribute [instance] alg_hom.subsingleton subalgebra.subsingleton_of_subsingleton ``` ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_hom.subsingleton Modified src/algebra/algebra/subalgebra.lean + theorem alg_equiv.subsingleton_left + theorem alg_equiv.subsingleton_right + theorem alg_hom.subsingleton - theorem subalgebra.alg_equiv.subsingleton_left - theorem subalgebra.alg_equiv.subsingleton_right - theorem subalgebra.alg_hom.subsingleton 2021-06-30 16:49:12 d420db5 chore(algebra/algebra): trivial lemmas for alg_equiv (#8139) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.coe_alg_hom_injective + theorem alg_equiv.coe_alg_hom_of_alg_hom +/- theorem alg_equiv.coe_ring_equiv_injective + theorem alg_equiv.of_alg_hom_coe_alg_hom + theorem alg_equiv.of_alg_hom_symm - theorem alg_equiv.of_linear_equiv_apply + theorem alg_equiv.of_linear_equiv_symm - theorem alg_equiv.to_linear_equiv_inj + theorem alg_equiv.to_linear_equiv_injective - theorem alg_equiv.to_linear_map_inj + theorem alg_equiv.to_linear_map_injective - theorem alg_hom.to_linear_map_inj + theorem alg_hom.to_linear_map_injective Modified src/algebra/monoid_algebra.lean Modified src/ring_theory/tensor_product.lean 2021-06-30 13:51:06 9c03c03 feat(data/set/basic): range_pair_subset (#8133) From LTE. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_pair_subset 2021-06-30 12:06:40 1de192f feat(algebra/ordered_ring): abs_cases lemma (#8124) This lemma makes the following type of argument work seamlessly: ```lean example (h : x<-1/2) : |x + 1| < |x| := by cases abs_cases (x + 1); cases abs_cases x; linarith ``` ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem abs_cases 2021-06-30 11:26:31 db05900 feat(linear_algebra/clifford_algebra): two algebras are isomorphic if their quadratic forms are equivalent (#8128) ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra/basic.lean + def clifford_algebra.equiv_of_isometry + theorem clifford_algebra.equiv_of_isometry_refl + theorem clifford_algebra.equiv_of_isometry_symm + theorem clifford_algebra.equiv_of_isometry_trans + def clifford_algebra.map + theorem clifford_algebra.map_apply_ι + theorem clifford_algebra.map_comp_map + theorem clifford_algebra.map_comp_ι + theorem clifford_algebra.map_id 2021-06-30 08:51:20 9a8dcb9 docs(data/dlist/basic): add module docstring (#8079) ESTIMATED CHANGES Modified src/data/dlist/basic.lean 2021-06-30 04:28:24 eeeb223 feat(data/int/basic): int.nat_abs_sub_le (#8118) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.nat_abs_sub_le 2021-06-30 04:28:23 af8a38f feat(algebra/{covariant_and_contravariant + ordered_monoid): add instance, golf, docs (#8067) Introduce a missing instance for `comm_semigroup`s. Also, golf a couple of proofs and add a relevant, explicit PR to a comment. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean Modified src/algebra/ordered_monoid.lean 2021-06-30 03:13:34 3ee436d docs(data/char): add module docstring (#8043) ESTIMATED CHANGES Modified src/data/char.lean 2021-06-30 02:07:35 8cacd99 chore(scripts): update nolints.txt (#8131) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-29 23:21:40 917bcd4 doc(topology/separation): module + lemma docs (#8091) ESTIMATED CHANGES Modified src/topology/separation.lean +/- theorem compact_t2_tot_disc_iff_tot_sep 2021-06-29 23:21:39 2600baf docs(data/list/sections): add module docstring (#8033) ESTIMATED CHANGES Modified src/data/list/sections.lean 2021-06-29 21:36:27 2c749b1 feat(algebra/to_additive): do not additivize operations on constant types (#7792) * Fixes #4210 * Adds a heuristic to `@[to_additive]` that decides which multiplicative identifiers to replace with their additive counterparts. * See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/to_additive.20and.20fixed.20types) thread or documentation for the precise heuristic. * We tag some types with `@[to_additive]`, so that they are handled correctly by the heurstic. These types `pempty`, `empty`, `unit` and `punit`. * We make the following change to enable to above bullet point: you are allowed to translate a declaration to itself, only if you write its name again as argument of the attribute (if you don't specify an argument we want to raise an error, since that likely is a mistake). * Because of this heuristic, all declarations with the `@[to_additive]` attribute should have a type with a multiplicative structure on it as its first argument. The first argument should not be an arbitrary indexing type. This means that in `finset.prod` and `finprod` we reorder the first two (implicit) arguments, so that the first argument is the codomain of the function. * This will eliminate many (but not all) type mismatches generated by `@[to_additive]`. * This heuristic doesn't catch all cases: for example, the declaration could have two type arguments with multiplicative structure, and the second one is `ℕ`, but the first one is a variable. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean - theorem finset.eq_of_card_le_one_of_sum_eq - theorem finset.eventually_constant_sum +/- theorem finset.prod_empty +/- theorem finset.prod_mk +/- theorem finset.sum_const_zero - theorem finset.sum_flip - theorem finset.sum_range_add - theorem finset.sum_range_one - theorem finset.sum_range_succ' - theorem finset.sum_range_succ - theorem finset.sum_range_succ_comm Modified src/algebra/big_operators/finprod.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/algebra/group/to_additive.lean +/- structure to_additive.value_type Modified src/category_theory/types.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/data/complex/exponential.lean Modified src/data/mv_polynomial/basic.lean Modified src/geometry/manifold/times_cont_mdiff_map.lean Modified src/group_theory/perm/sign.lean Modified src/meta/expr.lean Modified src/tactic/transform_decl.lean 2021-06-29 20:21:49 e6ec901 feat(ring_theory/power_basis): extensionality for algebra homs (#8110) This PR shows two `alg_hom`s out of an algebra with a power basis are equal if the generator has the same image for both maps. It uses this result to bundle `power_basis.lift` into an equiv. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.subsingleton Modified src/ring_theory/power_basis.lean + theorem power_basis.alg_hom_ext +/- theorem power_basis.constr_pow_mul +/- theorem power_basis.equiv_aeval +/- theorem power_basis.equiv_gen +/- theorem power_basis.equiv_map +/- theorem power_basis.equiv_symm + theorem power_basis.exists_eq_aeval' +/- theorem power_basis.lift_aeval +/- theorem power_basis.lift_gen 2021-06-29 19:37:54 505c32f feat(analysis/normed_space/inner_product): the orthogonal projection is self adjoint (#8116) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem inner_orthogonal_projection_left_eq_right 2021-06-29 17:54:59 5ecd078 feat(data/ordmap/ordset): Implement some more `ordset` functions (#8127) Implement (with proofs) `erase`, `map`, and `mem` for `ordset` in `src/data/ordmap` along with a few useful related proofs. ESTIMATED CHANGES Modified src/data/ordmap/ordset.lean + theorem ordnode.erase.valid + theorem ordnode.map.valid + theorem ordnode.pos_size_of_mem + theorem ordnode.size_erase_of_mem + theorem ordnode.valid'.erase_aux + theorem ordnode.valid'.map_aux + def ordset.erase + def ordset.find + def ordset.map + def ordset.mem + theorem ordset.pos_size_of_mem 2021-06-29 17:54:58 d558350 feat(algebra/ordered_group): add a few instances, prune unneeded code (#8075) This PR aims at shortening the subsequent `order` refactor. The removed lemmas can now by proven as follows: ```lean @[to_additive ordered_add_comm_group.add_lt_add_left] lemma ordered_comm_group.mul_lt_mul_left' (a b : α) (h : a < b) (c : α) : c * a < c * b := mul_lt_mul_left' h c @[to_additive ordered_add_comm_group.le_of_add_le_add_left] lemma ordered_comm_group.le_of_mul_le_mul_left (h : a * b ≤ a * c) : b ≤ c := le_of_mul_le_mul_left' h @[to_additive] lemma ordered_comm_group.lt_of_mul_lt_mul_left (h : a * b < a * c) : b < c := lt_of_mul_lt_mul_left' h ``` They were only used in this file and I replaced their appearances by the available proofs. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean - theorem ordered_comm_group.le_of_mul_le_mul_left - theorem ordered_comm_group.lt_of_mul_lt_mul_left - theorem ordered_comm_group.mul_lt_mul_left' 2021-06-29 17:54:57 bdf2d81 feat(topology/continuous_function/stone_weierstrass): complex Stone-Weierstrass (#8012) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.continuous_abs + theorem complex.continuous_norm_sq Modified src/topology/algebra/module.lean + theorem submodule.topological_closure_map + theorem submodule.topological_closure_mono Modified src/topology/continuous_function/algebra.lean Modified src/topology/continuous_function/bounded.lean + theorem continuous_linear_map.comp_left_continuous_bounded_apply Modified src/topology/continuous_function/compact.lean + theorem continuous_linear_map.comp_left_continuous_compact_apply + theorem continuous_linear_map.to_linear_comp_left_continuous_compact + theorem continuous_map.linear_isometry_bounded_of_compact_apply_apply + theorem continuous_map.linear_isometry_bounded_of_compact_symm_apply Modified src/topology/continuous_function/stone_weierstrass.lean + def continuous_map.conj_invariant_subalgebra + theorem continuous_map.mem_conj_invariant_subalgebra + theorem continuous_map.subalgebra_complex_topological_closure_eq_top_of_separates_points + theorem subalgebra.separates_points.complex_to_real 2021-06-29 16:11:34 4cdfbd2 feat(data/setoid/partition): indexed partition (#7910) from LTE Note that data/setoid/partition.lean, which already existed before this PR, is currently not imported anywhere in mathlib. But it is used in LTE and will be used in the next PR, in relation to locally constant functions. ESTIMATED CHANGES Modified src/data/quot.lean + theorem quotient.eq_mk_iff_out + theorem quotient.mk_eq_iff_out Modified src/data/setoid/basic.lean +/- theorem quotient.eq_rel + theorem setoid.comap_rel + theorem setoid.comm' + theorem setoid.ker_apply_mk_out' + theorem setoid.ker_apply_mk_out Modified src/data/setoid/partition.lean + theorem indexed_partition.Union + theorem indexed_partition.class_of + theorem indexed_partition.disjoint + theorem indexed_partition.eq + def indexed_partition.equiv_quotient + theorem indexed_partition.equiv_quotient_index + theorem indexed_partition.equiv_quotient_index_apply + theorem indexed_partition.equiv_quotient_symm_proj_apply + theorem indexed_partition.exists_mem + theorem indexed_partition.index_out' + theorem indexed_partition.index_some + theorem indexed_partition.mem_iff_index_eq + def indexed_partition.mk' + def indexed_partition.out + theorem indexed_partition.out_proj + def indexed_partition.proj + theorem indexed_partition.proj_eq_iff + theorem indexed_partition.proj_fiber + theorem indexed_partition.proj_out + theorem indexed_partition.proj_some_index + theorem indexed_partition.some_index + structure indexed_partition + theorem setoid.eqv_class_mem' 2021-06-29 14:28:25 23ee7ea feat(analysis/normed_space/basic): int.norm_eq_abs (#8117) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem int.norm_eq_abs 2021-06-29 14:28:24 d249e53 feat(algebra/ordered_group): add instances mixing `group` and `co(ntra)variant` (#8072) In an attempt to break off small parts of PR #8060, I extracted some of the instances proven there to this PR. This is part of the `order` refactor. ~~I tried to get rid of the `@`, but failed. If you have a trick to avoid them, I would be very happy to learn it!~~ `@`s removed! ESTIMATED CHANGES Modified src/algebra/ordered_group.lean 2021-06-29 14:28:23 70fcf99 feat(group_theory/free_abelian_group_finsupp): isomorphism between `free_abelian_group` and `finsupp` (#8046) From LTE ESTIMATED CHANGES Modified src/group_theory/free_abelian_group.lean +/- theorem free_abelian_group.map_of_apply Added src/group_theory/free_abelian_group_finsupp.lean + def finsupp.to_free_abelian_group + theorem finsupp.to_free_abelian_group_comp_single_add_hom + theorem finsupp.to_free_abelian_group_comp_to_finsupp + theorem finsupp.to_free_abelian_group_to_finsupp + def free_abelian_group.coeff + def free_abelian_group.equiv_finsupp + theorem free_abelian_group.mem_support_iff + theorem free_abelian_group.not_mem_support_iff + def free_abelian_group.support + theorem free_abelian_group.support_add + theorem free_abelian_group.support_gsmul + theorem free_abelian_group.support_neg + theorem free_abelian_group.support_nsmul + theorem free_abelian_group.support_of + theorem free_abelian_group.support_zero + def free_abelian_group.to_finsupp + theorem free_abelian_group.to_finsupp_comp_to_free_abelian_group + theorem free_abelian_group.to_finsupp_of + theorem free_abelian_group.to_finsupp_to_free_abelian_group 2021-06-29 13:33:01 68d7d00 chore(analysis/special_functions/pow): versions of tendsto/continuous_at lemmas for (e)nnreal (#8113) We have the full suite of lemmas about `tendsto` and `continuous` for real powers of `real`, but apparently not for `nnreal` or `ennreal`. I have provided a few, rather painfully -- if there is a better way, golfing is welcome! ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.continuous_rpow_const + theorem ennreal.tendsto_rpow_at_top + theorem nnreal.tendsto_rpow_at_top Modified src/topology/instances/ennreal.lean + theorem ennreal.continuous_at_coe_iff + theorem ennreal.tendsto_nhds_coe_iff 2021-06-29 12:50:05 54eccb0 feat(measure_theory/lp_space): add snorm_eq_lintegral_rpow_nnnorm (#8115) Add two lemmas to go from `snorm` to integrals (through `snorm'`). The idea is that `snorm'` should then generally not be used, except in the construction of `snorm`. ESTIMATED CHANGES Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lp_space.lean + theorem measure_theory.snorm_eq_lintegral_rpow_nnnorm + theorem measure_theory.snorm_one_eq_lintegral_nnnorm 2021-06-29 11:29:09 90d2046 feat(algebra/monoid_algebra): adjointness for the functor `G ↦ monoid_algebra k G` when `G` carries only `has_mul` (#7932) ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean + theorem distrib_mul_action_hom.ext_ring + theorem distrib_mul_action_hom.ext_ring_iff + theorem distrib_mul_action_hom.to_add_monoid_hom_injective + theorem distrib_mul_action_hom.to_mul_action_hom_injective Modified src/algebra/module/linear_map.lean + theorem distrib_mul_action_hom.coe_to_linear_map + def distrib_mul_action_hom.to_linear_map + theorem distrib_mul_action_hom.to_linear_map_eq_coe + theorem distrib_mul_action_hom.to_linear_map_injective Modified src/algebra/monoid_algebra.lean + def add_monoid_algebra.lift_magma + theorem add_monoid_algebra.non_unital_alg_hom_ext' + theorem add_monoid_algebra.non_unital_alg_hom_ext + def add_monoid_algebra.of_magma + def monoid_algebra.lift_magma + theorem monoid_algebra.non_unital_alg_hom_ext' + theorem monoid_algebra.non_unital_alg_hom_ext +/- def monoid_algebra.of - theorem monoid_algebra.of_apply + def monoid_algebra.of_magma Modified src/algebra/non_unital_alg_hom.lean + theorem non_unital_alg_hom.to_distrib_mul_action_hom_injective + theorem non_unital_alg_hom.to_mul_hom_injective Modified src/data/finsupp/basic.lean + def finsupp.distrib_mul_action_hom.single + theorem finsupp.distrib_mul_action_hom_ext' + theorem finsupp.distrib_mul_action_hom_ext 2021-06-29 10:46:12 d521b2b feat(algebraic_topology/simplex_category): epi and monos in the simplex category (#8101) Characterize epimorphisms and monomorphisms in `simplex_category` in terms of the function they represent. Add lemmas about their behavior on length of objects. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean + theorem simplex_category.epi_iff_surjective + theorem simplex_category.le_of_epi + theorem simplex_category.le_of_mono + theorem simplex_category.len_le_of_epi + theorem simplex_category.len_le_of_mono + theorem simplex_category.mono_iff_injective 2021-06-29 06:55:39 07f1235 chore(category_theory/opposites): make hom explicit in lemmas (#8088) ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_object.lean Modified src/category_theory/opposites.lean +/- theorem quiver.hom.op_unop +/- theorem quiver.hom.unop_op 2021-06-28 20:13:06 ac156c1 chore(algebra/algebra/basic): add algebra.right_comm to match left_comm (#8109) This also reorders the arguments to `right_comm` to match the order they appear in the LHS of the lemma. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem algebra.left_comm + theorem algebra.right_comm 2021-06-28 16:40:09 a79df55 chore(algebra/ordered_group): remove linear_ordered_comm_group.to_comm_group (#7861) This instance shortcut bypassed `ordered_comm_group`, and could easily result in computability problems since many `linear_order` instances are noncomputable due to their embedded decidable instances. This would happen when: * Lean needs an `add_comm_group A` * We have: * `noncomputable instance : linear_ordered_comm_group A` * `instance : ordered_comm_group A` * Lean tries `linear_ordered_comm_group.to_comm_group` before `ordered_comm_group.to_comm_group`, and hands us back a noncomputable one, even though there is a computable one available. There're no comments explaining why things were done this way, suggesting it was accidental, or perhaps that `ordered_comm_group` came later. This broke one proof which somehow `simponly`ed associativity the wrong way, so I just golfed that proof and the one next to it for good measure. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/data/nat/modeq.lean 2021-06-28 15:38:22 1ffb5be feat(data/complex/module): add complex.alg_hom_ext (#8105) ESTIMATED CHANGES Modified src/data/complex/module.lean + theorem alg_hom.map_coe_real_complex + theorem complex.alg_hom_ext 2021-06-28 13:54:02 b160ac8 chore(topology/topological_fiber_bundle): reorganizing the code (#7989) Mainly redesigning the `simp` strategy. ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean + theorem local_equiv.source_inter_preimage_target_inter Modified src/data/set/basic.lean +/- theorem set.preimage_const_of_mem +/- theorem set.preimage_const_of_not_mem Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/topology/constructions.lean + theorem continuous.prod.mk Modified src/topology/continuous_on.lean + theorem continuous_on.is_open_preimage Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.source_inter_preimage_target_inter Modified src/topology/order.lean + theorem is_open_induced_iff' + theorem le_induced_generate_from Modified src/topology/topological_fiber_bundle.lean + theorem bundle.coe_fst + theorem bundle.coe_snd_map_apply + theorem bundle.coe_snd_map_smul + def bundle.total_space_mk + theorem topological_fiber_bundle_core.base_set_at + theorem topological_fiber_bundle_core.continuous_total_space_mk +/- theorem topological_fiber_bundle_core.local_triv'_apply + theorem topological_fiber_bundle_core.local_triv'_coe + theorem topological_fiber_bundle_core.local_triv'_source +/- theorem topological_fiber_bundle_core.local_triv'_symm_apply + theorem topological_fiber_bundle_core.local_triv'_target +/- theorem topological_fiber_bundle_core.local_triv_apply - def topological_fiber_bundle_core.local_triv_at + theorem topological_fiber_bundle_core.local_triv_at_apply +/- def topological_fiber_bundle_core.local_triv_at_ext + theorem topological_fiber_bundle_core.local_triv_at_ext_def - theorem topological_fiber_bundle_core.local_triv_at_ext_to_local_homeomorph - theorem topological_fiber_bundle_core.local_triv_at_fst - theorem topological_fiber_bundle_core.local_triv_at_symm_fst + theorem topological_fiber_bundle_core.local_triv_coe + theorem topological_fiber_bundle_core.local_triv_ext_apply + theorem topological_fiber_bundle_core.local_triv_ext_symm_apply + theorem topological_fiber_bundle_core.local_triv_ext_symm_fst + theorem topological_fiber_bundle_core.local_triv_source + theorem topological_fiber_bundle_core.local_triv_symm +/- theorem topological_fiber_bundle_core.local_triv_symm_fst + theorem topological_fiber_bundle_core.local_triv_target +/- theorem topological_fiber_bundle_core.mem_local_triv'_source +/- theorem topological_fiber_bundle_core.mem_local_triv'_target + theorem topological_fiber_bundle_core.mem_local_triv_at_ext_base_set - theorem topological_fiber_bundle_core.mem_local_triv_at_source + theorem topological_fiber_bundle_core.mem_local_triv_ext_source + theorem topological_fiber_bundle_core.mem_local_triv_ext_target +/- theorem topological_fiber_bundle_core.mem_local_triv_source +/- theorem topological_fiber_bundle_core.mem_local_triv_target Modified src/topology/vector_bundle.lean + theorem topological_vector_bundle.trivialization.coe_coe + theorem topological_vector_bundle.trivialization.coe_fst 2021-06-28 12:36:08 f7c1e5f feat(algebra/lie/nilpotent): basic lemmas about nilpotency for Lie subalgebras of associative algebras (#8090) The main lemma is: `lie_algebra.is_nilpotent_ad_of_is_nilpotent` which is the first step in proving Engel's theorem. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.commute_lmul_left_right + theorem algebra.lmul_left_eq_zero_iff + theorem algebra.lmul_left_zero_eq_zero + theorem algebra.lmul_right_eq_zero_iff + theorem algebra.lmul_right_zero_eq_zero + theorem algebra.pow_lmul_left + theorem algebra.pow_lmul_right Modified src/algebra/lie/nilpotent.lean + theorem lie_algebra.ad_nilpotent_of_nilpotent + theorem lie_algebra.is_nilpotent_ad_of_is_nilpotent + theorem lie_subalgebra.is_nilpotent_ad_of_is_nilpotent_ad Modified src/algebra/lie/of_associative.lean + theorem lie_algebra.ad_eq_lmul_left_sub_lmul_right + theorem lie_subalgebra.ad_comp_incl_eq Modified src/linear_algebra/basic.lean + theorem linear_map.submodule_pow_eq_zero_of_pow_eq_zero Modified src/ring_theory/nilpotent.lean + theorem algebra.is_nilpotent_lmul_left_iff + theorem algebra.is_nilpotent_lmul_right_iff 2021-06-28 11:54:29 81183ea feat(geometry/manifold): `derivation_bundle` (#7708) In this PR we define the `derivation_bundle`. Note that this definition is purely algebraic and that the whole geometry/analysis is contained in the algebra structure of smooth global functions on the manifold. I believe everything runs smoothly and elegantly and that most proofs can be naturally done by `rfl`. To anticipate some discussions that already arose on Zulip about 9 months ago, note that the content of these files is purely algebraic and that there is no intention whatsoever to replace the current tangent bundle. I prefer this definition to the one given through the adjoint representation, because algebra is more easily formalized and simp can solve most proofs with this definition. However, in the future, there will be also the adjoint representation for sure. ESTIMATED CHANGES Modified src/algebra/lie/of_associative.lean + theorem lie_ring.lie_apply Modified src/geometry/manifold/algebra/monoid.lean Modified src/geometry/manifold/algebra/smooth_functions.lean + def smooth_map.eval_ring_hom Added src/geometry/manifold/derivation_bundle.lean + theorem apply_fdifferential + def derivation.eval_at + theorem derivation.eval_at_apply + def fdifferential + theorem fdifferential_comp + def fdifferential_map + def point_derivation + def pointed_smooth_map.eval + theorem pointed_smooth_map.smul_def + def pointed_smooth_map + def smooth_function.eval_at 2021-06-28 10:36:19 bfd0685 fix(algebra/module/linear_map): do not introduce `show` (#8102) Without this change, `apply linear_map.coe_injective` on a goal of `f = g` introduces some unpleasant `show` terms, giving a goal of ```lean (λ (f : M →ₗ[R] M₂), show M → M₂, from ⇑f) f = (λ (f : M →ₗ[R] M₂), show M → M₂, from ⇑f) g ``` which is then frustrating to `rw` at, instead of ```lean ⇑f = ⇑g ``` ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- theorem linear_map.coe_injective 2021-06-28 08:51:27 3cb247c chore(algebra/ordered_monoid_lemmas): change additive name `left.add_nonneg` to `right.add_nonneg` (#8065) A copy-paste error in the name of a lemma that has not been used yet. Change `pos_add` to `add_pos`. I also added some paragraph breaks in the documentation. Co-authored by Eric Wieser. ESTIMATED CHANGES Modified src/algebra/ordered_monoid_lemmas.lean 2021-06-28 06:13:33 80d0234 fix(algebra/group_power): put opposite lemmas in the right namespace (#8100) ESTIMATED CHANGES Modified src/algebra/geom_sum.lean Modified src/algebra/group_power/lemmas.lean + theorem opposite.op_pow + theorem opposite.unop_pow - theorem units.op_pow - theorem units.unop_pow 2021-06-28 04:53:22 7b253dd feat(group_theory/subgroup): lemmas for normal subgroups of subgroups (#7271) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem monoid_hom.comap_bot +/- theorem monoid_hom.range_restrict_ker + theorem subgroup.coe_subgroup_of +/- theorem subgroup.comap_injective +/- theorem subgroup.comap_map_eq +/- theorem subgroup.comap_map_eq_self +/- theorem subgroup.comap_map_eq_self_of_injective + theorem subgroup.comap_sup_comap_le + theorem subgroup.comap_sup_eq + theorem subgroup.inf_mul_assoc + theorem subgroup.inf_subgroup_of_inf_normal_of_left + theorem subgroup.inf_subgroup_of_inf_normal_of_right +/- theorem subgroup.ker_le_comap +/- theorem subgroup.le_comap_map +/- theorem subgroup.map_comap_eq +/- theorem subgroup.map_comap_eq_self +/- theorem subgroup.map_comap_eq_self_of_surjective +/- theorem subgroup.map_comap_le +/- theorem subgroup.map_eq_comap_of_inverse + theorem subgroup.map_inf_eq + theorem subgroup.map_inf_le +/- theorem subgroup.map_injective + theorem subgroup.map_injective_of_ker_le +/- theorem subgroup.map_le_range + theorem subgroup.mem_subgroup_of + theorem subgroup.mul_inf_assoc + theorem subgroup.normal_subgroup_of_iff + theorem subgroup.subgroup_normal.mem_comm + def subgroup.subgroup_of + theorem subgroup.subgroup_of_map_subtype + theorem subgroup.subgroup_of_sup + theorem subgroup.supr_comap_le 2021-06-27 15:45:05 f8e9c17 feat(data/nat/factorial): descending factorial (#7759) - rename `desc_fac` to `asc_factorial` - define `desc_factorial` - update `data.fintype.card_embedding` to use `desc_factorial` ESTIMATED CHANGES Modified archive/100-theorems-list/93_birthday_problem.lean Modified docs/100.yaml Modified src/data/fintype/basic.lean Modified src/data/fintype/card_embedding.lean - theorem fintype.card_embedding + theorem fintype.card_embedding_eq - theorem fintype.card_embedding_eq_if - theorem fintype.card_embedding_eq_infinite + theorem fintype.card_embedding_eq_of_infinite + theorem fintype.card_embedding_eq_of_unique - theorem fintype.card_embedding_eq_zero - theorem fintype.card_embedding_of_unique Modified src/data/nat/choose/basic.lean + theorem nat.asc_factorial_eq_factorial_mul_choose + theorem nat.choose_eq_asc_factorial_div_factorial - theorem nat.choose_eq_desc_fac_div_factorial + theorem nat.choose_eq_desc_factorial_div_factorial - theorem nat.desc_fac_eq_factorial_mul_choose + theorem nat.desc_factorial_eq_factorial_mul_choose + theorem nat.factorial_dvd_asc_factorial - theorem nat.factorial_dvd_desc_fac + theorem nat.factorial_dvd_desc_factorial Modified src/data/nat/factorial.lean + theorem nat.add_desc_factorial_eq_asc_factorial + def nat.asc_factorial + theorem nat.asc_factorial_eq_div + theorem nat.asc_factorial_le_pow_add + theorem nat.asc_factorial_lt_pow_add + theorem nat.asc_factorial_of_sub + theorem nat.asc_factorial_pos + theorem nat.asc_factorial_succ + theorem nat.asc_factorial_zero - def nat.desc_fac - theorem nat.desc_fac_eq_div - theorem nat.desc_fac_of_sub - theorem nat.desc_fac_succ - theorem nat.desc_fac_zero + def nat.desc_factorial + theorem nat.desc_factorial_eq_div + theorem nat.desc_factorial_eq_zero_iff_lt + theorem nat.desc_factorial_le_pow + theorem nat.desc_factorial_lt_pow + theorem nat.desc_factorial_one + theorem nat.desc_factorial_self + theorem nat.desc_factorial_succ + theorem nat.desc_factorial_zero +/- def nat.factorial +/- theorem nat.factorial_inj +/- theorem nat.factorial_lt + theorem nat.factorial_mul_asc_factorial - theorem nat.factorial_mul_desc_fac + theorem nat.factorial_mul_desc_factorial + theorem nat.pow_lt_asc_factorial' + theorem nat.pow_lt_asc_factorial + theorem nat.pow_sub_le_desc_factorial + theorem nat.pow_sub_lt_desc_factorial' + theorem nat.pow_sub_lt_desc_factorial + theorem nat.pow_succ_le_asc_factorial + theorem nat.succ_asc_factorial - theorem nat.succ_desc_fac + theorem nat.succ_desc_factorial + theorem nat.succ_desc_factorial_succ + theorem nat.zero_asc_factorial - theorem nat.zero_desc_fac + theorem nat.zero_desc_factorial_succ Modified src/ring_theory/polynomial/pochhammer.lean + theorem pochhammer_nat_eq_asc_factorial - theorem pochhammer_nat_eq_desc_fac 2021-06-27 13:01:13 2dcc307 feat(category_theory/limits): morphism to terminal is split mono (#8084) A generalisation of existing results: we already have an instance `split_mono` to `mono` so this is strictly more general. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.is_initial.split_epi_to + def category_theory.limits.is_terminal.split_mono_from 2021-06-27 02:15:39 c5d17ae chore(scripts): update nolints.txt (#8093) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-26 22:33:31 c7a35b4 doc(topology/homeomorph): fixup glaring error (#8092) thanks to @kbuzzard for spotting this error in #8086 ESTIMATED CHANGES Modified src/topology/homeomorph.lean 2021-06-26 20:35:05 0817020 doc(topology/homeomorph): module docs (#8086) I really wanted to write more, but there's really not much to say about something that is a stronger bijection :b ESTIMATED CHANGES Modified src/topology/homeomorph.lean 2021-06-26 18:57:08 b874abc feat(field_theory): state primitive element theorem using `power_basis` (#8073) This PR adds an alternative formulation to the primitive element theorem: the original formulation was `∃ α : E, F⟮α⟯ = (⊤ : intermediate_field F E)`, which means a lot of pushing things across the equality/equiv from `F⟮α⟯` to `E` itself. I claim that working with a field `E` that has a power basis over `F` is nicer since you don't need to do a lot of transporting. ESTIMATED CHANGES Modified src/field_theory/primitive_element.lean 2021-06-26 18:15:06 598722a feat(algebraic_topology/simplicial_object): Add augment construction (#8085) Adds the augmentation construction for (co)simplicial objects. From LTE. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean + theorem simplex_category.hom_zero_zero Modified src/algebraic_topology/simplicial_object.lean + def category_theory.cosimplicial_object.augment + theorem category_theory.cosimplicial_object.augment_hom_zero + def category_theory.simplicial_object.augment + theorem category_theory.simplicial_object.augment_hom_zero 2021-06-26 09:25:11 4630067 chore(data/set/intervals): syntax clean up (#8087) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean +/- theorem set.Iio_subset_Iic_self +/- theorem set.Ioi_subset_Ici_self 2021-06-25 21:10:33 68ec06c chore(analysis/analytic/composition): remove one `have` (#8083) A `have` in a proof is not necessary. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean 2021-06-25 20:31:41 92a7171 feat(measure_theory/interval_integral): generalize `add_adjacent_intervals` to n-ary sum (#8050) ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integrable.trans_iterate + theorem interval_integral.sum_integral_adjacent_intervals 2021-06-25 18:48:54 6666ba2 fix(real/sign): make `real.sign 0 = 0` to match `int.sign 0` (#8080) Previously `sign 0 = 1` which is quite an unusual definition. This definition brings things in line with `int.sign`, and include a proof of this fact. A future refactor could probably introduce a sign for all rings with a partial order ESTIMATED CHANGES Modified src/data/real/sign.lean +/- def real.sign +/- theorem real.sign_apply_eq + theorem real.sign_apply_eq_of_ne_zero + theorem real.sign_eq_zero_iff + theorem real.sign_int_cast +/- theorem real.sign_neg - theorem real.sign_of_not_neg + theorem real.sign_of_pos - theorem real.sign_of_zero_le +/- theorem real.sign_zero Modified src/linear_algebra/quadratic_form.lean 2021-06-25 18:48:53 a7faaf5 docs(data/list/chain): add module docstring (#8041) ESTIMATED CHANGES Modified src/data/list/chain.lean +/- theorem list.chain'_split +/- theorem list.chain_of_pairwise +/- theorem list.chain_split 2021-06-25 18:48:52 cf4a2df docs(data/list/range): add module docstring (#8026) ESTIMATED CHANGES Modified src/data/list/range.lean 2021-06-25 17:09:01 9cc44ba feat(ring_theory/nilpotent): basic results about nilpotency in associative rings (#8055) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem pow_eq_zero_of_le Added src/ring_theory/nilpotent.lean + theorem commute.is_nilpotent_add + theorem commute.is_nilpotent_mul_left + theorem commute.is_nilpotent_mul_right + theorem commute.is_nilpotent_sub + theorem is_nilpotent.eq_zero + theorem is_nilpotent.neg + theorem is_nilpotent.zero + def is_nilpotent + theorem is_nilpotent_iff_eq_zero + theorem is_nilpotent_neg_iff 2021-06-25 10:35:36 1774cf9 chore(data/complex/{module, is_R_or_C}, analysis/complex/basic): rationalize the structure provided for `conj` and `of_real` (#8014) We have many bundled versions of the four operations associated with the complex-real interaction (real & imaginary parts, real-to-complex coercion `of_real`, complex conjugation `conj`). This PR adjusts the versions provided, according to the following principles: - `conj` is always an equivalence, there is never a need for the map version - Both `of_real` and `conj` are `ℝ`-algebra homomorphisms, and since this in typical applications requires no more imports than `ℝ`-linear maps, they can entirely supersede the `ℝ`-linear map versions. - Name according to the base map name together with an acronym for the bundled map type, for example `conj_ae` for `conj` as an algebra-equivalence (this principle had been largely, but not entirely, followed previously). The following specific changes result: - `quaternion.conj_alg_equiv` renamed to `quaternion.conj_ae`, likewise for `quaternion_algebra.conj_alg_equiv` - `complex.conj_li` upgraded from a map to an equivalence - `complex.conj_clm` (continuous linear map) upgraded to `complex.conj_cle` (continuous linear equivalence) - `complex.conj_alg_equiv` renamed to `complex.conj_ae` - `complex.conj_lm` gone, use `complex.conj_ae` instead - `complex.of_real_lm` (linear map) upgraded to `complex.of_real_am` (algebra homomorphism) - all the same changes for `is_R_or_C.*` as for `complex.*` Associated lemmas are also renamed. ESTIMATED CHANGES Modified src/algebra/quaternion.lean + theorem quaternion.coe_conj_ae - theorem quaternion.coe_conj_alg_equiv + def quaternion.conj_ae - def quaternion.conj_alg_equiv + theorem quaternion_algebra.coe_conj_ae - theorem quaternion_algebra.coe_conj_alg_equiv + def quaternion_algebra.conj_ae - def quaternion_algebra.conj_alg_equiv Modified src/analysis/complex/basic.lean + def complex.conj_cle + theorem complex.conj_cle_apply + theorem complex.conj_cle_coe + theorem complex.conj_cle_norm - def complex.conj_clm - theorem complex.conj_clm_apply - theorem complex.conj_clm_coe - theorem complex.conj_clm_norm - def complex.conj_li - theorem complex.conj_li_apply + def complex.conj_lie + theorem complex.conj_lie_apply +/- theorem complex.continuous_conj +/- theorem complex.continuous_of_real +/- theorem complex.isometry_conj +/- theorem complex.of_real_clm_apply +/- theorem complex.of_real_clm_coe +/- def complex.of_real_li Modified src/analysis/complex/circle.lean Modified src/analysis/complex/isometry.lean Modified src/analysis/normed_space/multilinear.lean Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.conj_ae_coe + theorem is_R_or_C.conj_cle_apply + theorem is_R_or_C.conj_cle_coe + theorem is_R_or_C.conj_cle_norm - theorem is_R_or_C.conj_clm_apply - theorem is_R_or_C.conj_clm_coe - theorem is_R_or_C.conj_clm_norm - theorem is_R_or_C.conj_li_apply + theorem is_R_or_C.conj_lie_apply - theorem is_R_or_C.conj_lm_coe +/- theorem is_R_or_C.continuous_conj + theorem is_R_or_C.of_real_am_coe +/- theorem is_R_or_C.of_real_clm_coe +/- theorem is_R_or_C.of_real_li_apply - theorem is_R_or_C.of_real_lm_coe Modified src/data/complex/module.lean + def complex.conj_ae + theorem complex.conj_ae_coe - def complex.conj_alg_equiv - def complex.conj_lm - theorem complex.conj_lm_coe + def complex.of_real_am + theorem complex.of_real_am_coe - def complex.of_real_lm - theorem complex.of_real_lm_coe Modified src/field_theory/polynomial_galois_group.lean Modified src/geometry/manifold/instances/sphere.lean Modified src/measure_theory/set_integral.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.to_linear_map_eq_coe 2021-06-25 09:21:01 c515346 feat(ring_theory/power_basis): map a power basis through an alg_equiv (#8039) If `A` is equivalent to `A'` as an `R`-algebra and `A` has a power basis, then `A'` also has a power basis. Included are the relevant `simp` lemmas. This needs a bit of tweaking to `basis.map` and `alg_equiv.to_linear_equiv` for getting more useful `simp` lemmas. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- def alg_equiv.to_linear_equiv - theorem alg_equiv.to_linear_equiv_apply + theorem alg_equiv.to_linear_equiv_refl + theorem alg_equiv.to_linear_equiv_symm + theorem alg_equiv.to_linear_equiv_trans Modified src/linear_algebra/basis.lean Modified src/ring_theory/power_basis.lean + theorem power_basis.equiv_map + theorem power_basis.minpoly_gen_map 2021-06-25 07:18:41 10cd252 docs(overview, undergrad): add Liouville's Theorem on existence of transcendental numbers (#8068) ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Renamed src/analysis/liouville/basic.lean to src/number_theory/liouville/basic.lean Renamed src/analysis/liouville/liouville_constant.lean to src/number_theory/liouville/liouville_constant.lean 2021-06-24 21:57:47 2608244 feat(data/matrix/basic): add lemma minor_map (#8074) Add lemma `minor_map` proving that the operations of taking a minor and applying a map to the coefficients of a matrix commute. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.minor_map 2021-06-24 21:15:20 e137523 chore(algebraic_topology/simplex_category): golf proof (#8076) The "special case of the first simplicial identity" is a trivial consequence of the "generic case". This makes me wonder whether the special case should be there at all but I do not know the standard references for this stuff. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean 2021-06-24 19:39:06 e605b21 feat(linear_algebra/pi): add linear_equiv.Pi_congr_left (#8070) This definition was hiding inside the proof for `is_noetherian_pi` ESTIMATED CHANGES Modified src/linear_algebra/pi.lean + def linear_equiv.Pi_congr_left' + def linear_equiv.Pi_congr_left Modified src/ring_theory/noetherian.lean 2021-06-24 16:50:00 25d8aac chore(field_theory): turn `intermediate_field.subalgebra.equiv_of_eq` into `intermediate_field.equiv_of_eq` (#8069) I was looking for `intermediate_field.equiv_of_eq`. There was a definition of `subalgebra.equiv_of_eq` in the `intermediate_field` namespace which is equal to the original `subalgebra.equiv_of_eq` definition. Meanwhile, there was no `intermediate_field.equiv_of_eq`. So I decided to turn the duplicate into what I think was intended. (As a bonus, I added the `simp` lemmas from `subalgebra.equiv_of_eq`.) ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + def intermediate_field.equiv_of_eq + theorem intermediate_field.equiv_of_eq_rfl + theorem intermediate_field.equiv_of_eq_symm + theorem intermediate_field.equiv_of_eq_trans - def intermediate_field.subalgebra.equiv_of_eq 2021-06-24 15:14:30 db84f2b feat(data/polynomial): `aeval_alg_equiv`, like `aeval_alg_hom` (#8038) This PR copies `polynomial.aeval_alg_hom` and `aeval_alg_hom_apply` to `aeval_alg_equiv(_apply)`. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_alg_equiv + theorem polynomial.aeval_alg_equiv_apply 2021-06-24 15:14:29 2a15520 chore(data/polynomial): generalize `aeval_eq_sum_range` to `comm_semiring` (#8037) This pair of lemmas did not need any `comm_ring` assumptions, so I put them in a new section with weaker typeclass assumptions. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean 2021-06-24 15:14:28 3937c1b docs(data/list/pairwise): add module docstring (#8025) ESTIMATED CHANGES Modified src/data/list/pairwise.lean 2021-06-24 15:14:27 520e79d feat(analysis/convex/exposed): introduce exposed sets (#7928) introduce exposed sets ESTIMATED CHANGES Added src/analysis/convex/exposed.lean + theorem continuous_linear_map.to_exposed.is_exposed + def continuous_linear_map.to_exposed + theorem exposed_point_def + theorem exposed_points_empty + theorem exposed_points_subset + theorem exposed_points_subset_extreme_points + theorem is_exposed.antisymm + theorem is_exposed.eq_inter_halfspace + theorem is_exposed.inter + theorem is_exposed.inter_left + theorem is_exposed.inter_right + theorem is_exposed.is_closed + theorem is_exposed.is_compact + theorem is_exposed.refl + theorem is_exposed.sInter + def is_exposed + theorem is_exposed_empty + theorem mem_exposed_points_iff_exposed_singleton + def set.exposed_points Modified src/analysis/convex/extreme.lean 2021-06-24 15:14:26 4801fa6 feat(measure_theory): the Vitali-Caratheodory theorem (#7766) This PR proves the Vitali-Carathéodory theorem, asserting that a measurable function can be closely approximated from above by a lower semicontinuous function, and from below by an upper semicontinuous function. This is the main ingredient in the proof of the general version of the fundamental theorem of calculus (when `f'` is just integrable, but not continuous). ESTIMATED CHANGES Added src/measure_theory/vitali_caratheodory.lean + theorem measure_theory.exists_le_lower_semicontinuous_lintegral_ge + theorem measure_theory.exists_lt_lower_semicontinuous_integral_gt_nnreal + theorem measure_theory.exists_lt_lower_semicontinuous_integral_lt + theorem measure_theory.exists_lt_lower_semicontinuous_lintegral_ge + theorem measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable + theorem measure_theory.exists_upper_semicontinuous_le_integral_le + theorem measure_theory.exists_upper_semicontinuous_le_lintegral_le + theorem measure_theory.exists_upper_semicontinuous_lt_integral_gt + theorem measure_theory.simple_func.exists_le_lower_semicontinuous_lintegral_ge + theorem measure_theory.simple_func.exists_upper_semicontinuous_le_lintegral_le 2021-06-24 13:55:29 b9bf921 chore(linear_algebra): switch to named constructors for linear_map (#8059) This makes some ideas I have for future refactors easier, and generally makes things less fragile to changes such as additional fields or reordering of fields. The extra verbosity is not really significant. This conversion is not exhaustive, there may be anonymous constructors elsewhere that I've missed. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- def is_linear_map.mk' +/- theorem linear_equiv.apply_symm_apply +/- theorem linear_equiv.symm_apply_apply +/- def linear_map.comp +/- theorem linear_map.is_linear Modified src/analysis/normed_space/operator_norm.lean Modified src/field_theory/finite/polynomial.lean Modified src/linear_algebra/basic.lean +/- def submodule.mkq Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/matrix/to_linear_equiv.lean Modified src/linear_algebra/pi.lean Modified src/linear_algebra/prod.lean +/- def linear_map.fst +/- def linear_map.snd Modified src/linear_algebra/tensor_product.lean Modified src/ring_theory/hahn_series.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_equiv.apply_symm_apply +/- theorem continuous_linear_equiv.symm_apply_apply Modified src/topology/algebra/monoid.lean + theorem continuous_one Modified src/topology/instances/real_vector_space.lean 2021-06-24 12:48:16 2a1cabe chore(data/polynomial/eval, ring_theory/polynomial_algebra): golfs (#8058) This golfs: * `polynomial.map_nat_cast` to use `ring_hom.map_nat_cast` * `polynomial.map.is_semiring_hom` to use `ring_hom.is_semiring_hom` * `poly_equiv_tensor.to_fun` and `poly_equiv_tensor.to_fun_linear_right` out of existence And adds a new (unused) lemma `polynomial.map_smul`. All the other changes in `polynomial/eval` are just reorderings of lemmas to allow the golfing. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.map_smul Modified src/ring_theory/polynomial_algebra.lean - def poly_equiv_tensor.to_fun +/- def poly_equiv_tensor.to_fun_bilinear + theorem poly_equiv_tensor.to_fun_bilinear_apply_eq_sum - def poly_equiv_tensor.to_fun_linear_right + theorem poly_equiv_tensor.to_fun_linear_tmul_apply 2021-06-24 11:32:46 5352639 feat(data/matrix/basic.lean) : added map_scalar and linear_map.map_matrix (#8061) Added two lemmas (`map_scalar` and `linear_map.map_matrix_apply`) and a definition (`linear_map.map_matrix`) showing that a map between coefficients induces the same type of map between matrices with those coefficients. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + def linear_map.map_matrix + theorem matrix.map_smul 2021-06-24 09:57:32 5bd649f feat(analysis/liouville/liouville_constant): transcendental Liouville numbers exist! (#8020) The final (hopefully!) PR in the Liouville series: there are a couple of results and the proof that Liouville numbers are transcendental. ESTIMATED CHANGES Modified src/analysis/liouville/liouville_constant.lean +/- theorem liouville.aux_calc + theorem liouville.is_liouville + theorem liouville.is_transcendental +/- theorem liouville.liouville_number_eq_initial_terms_add_tail + theorem liouville.liouville_number_rat_initial_terms +/- theorem liouville.liouville_number_tail_pos +/- theorem liouville.tsum_one_div_pow_factorial_lt 2021-06-24 09:57:31 f7f12bc feat(data/nat/prime): norm_num plugin for factors (#8009) Implements a `norm_num` plugin to evaluate terms like `nat.factors 231 = [3, 7, 11]`. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.factors_chain' + theorem nat.factors_chain + theorem nat.factors_chain_2 + theorem nat.factors_sorted + theorem nat.le_min_fac' + theorem nat.le_min_fac + def tactic.norm_num.factors_helper + theorem tactic.norm_num.factors_helper_cons' + theorem tactic.norm_num.factors_helper_cons + theorem tactic.norm_num.factors_helper_end + theorem tactic.norm_num.factors_helper_nil + theorem tactic.norm_num.factors_helper_same + theorem tactic.norm_num.factors_helper_same_sn + theorem tactic.norm_num.factors_helper_sn Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2021-06-24 09:57:30 d9dcf69 feat(topology/topological_fiber_bundle): a new standard construction for topological fiber bundles (#7935) In this PR we implement a new standard construction for topological fiber bundles: namely a structure that permits to define a fiber bundle when trivializations are given as local equivalences but there is not yet a topology on the total space. The total space is hence given a topology in such a way that there is a fiber bundle structure for which the local equivalences are also local homeomorphism and hence local trivializations. ESTIMATED CHANGES Modified src/topology/continuous_on.lean + theorem preimage_nhds_within_coinduced' + theorem preimage_nhds_within_coinduced Modified src/topology/topological_fiber_bundle.lean +/- theorem bundle_trivialization.apply_symm_apply' +/- theorem bundle_trivialization.apply_symm_apply +/- theorem bundle_trivialization.coe_coe +/- theorem bundle_trivialization.coe_fst' +/- theorem bundle_trivialization.coe_fst +/- theorem bundle_trivialization.coe_fst_eventually_eq_proj' +/- theorem bundle_trivialization.coe_fst_eventually_eq_proj +/- theorem bundle_trivialization.coe_mk +/- def bundle_trivialization.comp_homeomorph +/- theorem bundle_trivialization.continuous_at_proj +/- theorem bundle_trivialization.map_proj_nhds + theorem bundle_trivialization.map_target +/- theorem bundle_trivialization.mem_source +/- theorem bundle_trivialization.mem_target +/- theorem bundle_trivialization.mk_proj_snd' +/- theorem bundle_trivialization.mk_proj_snd +/- theorem bundle_trivialization.proj_symm_apply' +/- theorem bundle_trivialization.proj_symm_apply +/- theorem bundle_trivialization.symm_apply_mk_proj + def bundle_trivialization.to_prebundle_trivialization + theorem prebundle_trivialization.apply_symm_apply' + theorem prebundle_trivialization.apply_symm_apply + theorem prebundle_trivialization.coe_coe + theorem prebundle_trivialization.coe_fst' + theorem prebundle_trivialization.coe_fst + theorem prebundle_trivialization.mem_source + theorem prebundle_trivialization.mem_target + theorem prebundle_trivialization.mk_proj_snd' + theorem prebundle_trivialization.mk_proj_snd + theorem prebundle_trivialization.preimage_symm_proj_base_set + theorem prebundle_trivialization.preimage_symm_proj_inter + theorem prebundle_trivialization.proj_symm_apply' + theorem prebundle_trivialization.proj_symm_apply + def prebundle_trivialization.set_symm + theorem prebundle_trivialization.symm_apply_mk_proj + structure prebundle_trivialization + def topological_fiber_prebundle.bundle_trivialization_at + theorem topological_fiber_prebundle.continuous_proj + theorem topological_fiber_prebundle.continuous_symm_trivialization_at + theorem topological_fiber_prebundle.is_open_source_trivialization_at + theorem topological_fiber_prebundle.is_open_target_trivialization_at_inter + theorem topological_fiber_prebundle.is_topological_fiber_bundle + def topological_fiber_prebundle.total_space_topology + structure topological_fiber_prebundle 2021-06-24 08:13:45 2f27046 refactor(algebra/ordered_monoid): use `covariant + contravariant` typeclasses in `algebra/ordered_monoid` (#7999) Another stepping stone toward #7645. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean Modified src/algebra/ordered_monoid.lean +/- theorem one_le 2021-06-24 05:12:32 5653516 feat(data/fin): some lemmas about casts (#8049) From [LTE](https://github.com/leanprover-community/lean-liquid/blob/master/src/for_mathlib/fin.lean). ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_succ_eq_zero_iff + theorem fin.cast_succ_ne_zero_iff + theorem fin.cast_succ_pred_eq_pred_cast_succ + theorem fin.pred_succ_above_pred + theorem fin.succ_above_eq_zero_iff + theorem fin.succ_above_ne_zero + theorem fin.succ_above_ne_zero_zero 2021-06-24 04:33:52 e07a24a chore(data/real/hyperreal): remove @ in a proof (#8063) Remove @ in a proof. Besides its clear aesthetic value, this prevents having to touch this file when the number typeclass arguments in the intervening lemmas changes. See PR #7645 and #8060. ESTIMATED CHANGES Modified src/data/real/hyperreal.lean 2021-06-23 23:28:11 b9ef710 chore(linear_algebra): deduplicate `linear_equiv.{Pi_congr_right,pi}` (#8056) PRs #6415 and #7489 both added the same linear equiv between Pi types. I propose to unify them, using the name of `Pi_congr_right` (more specific, matches `equiv.Pi_congr_right`), the location of `pi` (more specific) and the implementation of `Pi_congr_right` (shorter). ESTIMATED CHANGES Modified src/linear_algebra/basic.lean - def linear_equiv.Pi_congr_right - theorem linear_equiv.Pi_congr_right_refl - theorem linear_equiv.Pi_congr_right_symm - theorem linear_equiv.Pi_congr_right_trans Modified src/linear_algebra/pi.lean + def linear_equiv.Pi_congr_right + theorem linear_equiv.Pi_congr_right_refl + theorem linear_equiv.Pi_congr_right_symm + theorem linear_equiv.Pi_congr_right_trans - def linear_equiv.pi 2021-06-23 21:01:23 3cf8039 feat(measure_theory/set_integral): the set integral is continuous (#7931) Most of the code is dedicated to building a continuous linear map from Lp to the Lp space corresponding to the restriction of the measure to a set. The set integral is then continuous as composition of the integral and that map. ESTIMATED CHANGES Modified src/measure_theory/set_integral.lean + theorem measure_theory.Lp_to_Lp_restrict_add + def measure_theory.Lp_to_Lp_restrict_clm + theorem measure_theory.Lp_to_Lp_restrict_clm_coe_fn + theorem measure_theory.Lp_to_Lp_restrict_smul + theorem measure_theory.continuous_set_integral + theorem measure_theory.norm_Lp_to_Lp_restrict_le 2021-06-23 19:27:20 a31e3c3 feat(category_theory/arrow/limit): limit cones in arrow categories (#7457) ESTIMATED CHANGES Modified src/category_theory/arrow.lean 2021-06-23 17:29:28 204ca5f docs(data/fin2): add module docstring (#8047) ESTIMATED CHANGES Modified src/data/fin2.lean 2021-06-23 17:29:27 89b8e0b docs(data/option/defs): add module and def docstrings (#8042) ESTIMATED CHANGES Modified src/data/option/defs.lean 2021-06-23 17:29:26 431207a docs(data/list/bag_inter): add module docstring (#8034) ESTIMATED CHANGES Modified src/data/list/bag_inter.lean 2021-06-23 17:29:25 dd5074c feat(analysis/normed_space/basic): add has_nnnorm (#7986) We create here classes `has_nndist` and `has_nnnorm` that are variants of `has_dist` and `has_norm` taking values in `ℝ≥0`. Obvious instances are `pseudo_metric_space` and `semi_normed_group`. These are not used that much in mathlib, but for example `has_nnnorm` is quite convenient for LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem coe_nnnorm +/- theorem continuous.nnnorm +/- theorem continuous_at.nnnorm +/- theorem continuous_nnnorm +/- theorem continuous_on.nnnorm +/- theorem edist_eq_coe_nnnorm +/- theorem edist_eq_coe_nnnorm_sub +/- theorem mem_emetric_ball_0_iff +/- theorem nndist_eq_nnnorm +/- theorem nndist_nnnorm_nnnorm_le - def nnnorm +/- theorem nnnorm_add_le +/- theorem nnnorm_eq_zero +/- theorem nnnorm_gsmul_le +/- theorem nnnorm_neg +/- theorem nnnorm_norm +/- theorem nnnorm_nsmul_le +/- theorem nnnorm_one +/- theorem nnnorm_smul +/- theorem nnnorm_zero +/- theorem nnreal.coe_nat_abs +/- theorem nnreal.nnnorm_eq +/- theorem normed_field.nnnorm_div +/- theorem normed_field.nnnorm_fpow +/- theorem normed_field.nnnorm_inv +/- theorem normed_field.nnnorm_mul +/- theorem normed_field.nnnorm_pow +/- theorem of_real_norm_eq_coe_nnnorm +/- theorem prod.nnnorm_def +/- theorem prod.nnsemi_norm_def +/- theorem real.ennnorm_eq_of_real +/- theorem real.nnnorm_coe_nat +/- theorem real.nnnorm_of_nonneg +/- theorem real.nnnorm_two +/- theorem real.norm_two +/- theorem summable_of_summable_nnnorm +/- theorem uniform_continuous_nnnorm Modified src/measure_theory/bochner_integration.lean Modified src/topology/metric_space/basic.lean - def nndist 2021-06-23 15:53:39 a7b5237 feat(category_theory/arrow): arrow.iso_mk (#8057) ESTIMATED CHANGES Modified src/category_theory/arrow.lean + def category_theory.arrow.iso_mk 2021-06-23 15:53:38 c841b09 docs(data/list/tfae): add module docstring (#8040) ESTIMATED CHANGES Modified src/data/list/tfae.lean 2021-06-23 15:53:37 5787d64 docs(data/list/zip): add module docstring (#8036) ESTIMATED CHANGES Modified src/data/list/zip.lean 2021-06-23 14:11:52 97529b4 docs(data/list/forall2): add module docstring (#8029) ESTIMATED CHANGES Modified src/data/list/forall2.lean +/- theorem list.forall₂.flip +/- theorem list.forall₂.mp +/- theorem list.forall₂_same +/- theorem list.right_unique_forall₂' 2021-06-23 11:50:23 d9eed42 feat(analysis/liouville/inequalities_and_series): two useful inequalities for Liouville (#8001) This PR ~~creates a file with~~ proves two very specific inequalities. They will be useful for the Liouville PR, showing that transcendental Liouville numbers exist. After the initial code review, I scattered an initial segment of this PR into mathlib. What is left might only be useful in the context of proving the transcendence of Liouville's constants. ~~Given the shortness of this file, I may move it into the main `liouville_constant`, after PR #8020 is merged.~~ ESTIMATED CHANGES Modified src/analysis/liouville/liouville_constant.lean + theorem liouville.aux_calc + theorem liouville.tsum_one_div_pow_factorial_lt 2021-06-23 09:25:09 47ed97f feat(algebra/ordered_monoid_lemmas + fixes): consistent use of `covariant` and `contravariant` in `ordered_monoid_lemmas` (#7876) This PR breaks off a part of PR #7645. Here, I start using more consistently `covariant_class` and `contravariant_class` in the file `algebra/ordered_monoid_lemmas`. This PR is simply intended as a stepping stone to merging the bigger one (#7645) and receiving "personalized comments on it! Summary of changes: -- New lemmas * `@[to_additive add_nonneg] lemma one_le_mul_right` * `@[to_additive] lemma le_mul_of_le_of_le_one` * `@[to_additive] lemma mul_lt_mul_of_lt_of_lt` * `@[to_additive] lemma left.mul_lt_one_of_lt_of_lt_one` * `@[to_additive] lemma right.mul_lt_one_of_lt_of_lt_one` * `@[to_additive] lemma left.mul_lt_one_of_lt_of_lt_one` * `@[to_additive] lemma right.mul_lt_one_of_lt_of_lt_one` * `@[to_additive right.add_nonneg] lemma right.one_le_mul` * `@[to_additive right.pos_add] lemma right.one_lt_mul` -- Lemmas that have merged with their unprimed versions due to diminished typeclass assumptions * `@[to_additive] lemma lt_mul_of_one_le_of_lt'` * `@[to_additive] lemma lt_mul_of_one_lt_of_lt'` * `@[to_additive] lemma mul_le_of_le_of_le_one'` * `@[to_additive] lemma mul_le_of_le_one_of_le'` * `@[to_additive] lemma mul_lt_of_lt_of_le_one'` * `@[to_additive] lemma mul_lt_of_lt_of_lt_one'` * `@[to_additive] lemma mul_lt_of_lt_one_of_lt'` * the three lemmas * * `@[to_additive] lemma mul_lt_of_le_one_of_lt'`, * * `mul_lt_one_of_le_one_of_lt_one`, * * `mul_lt_one_of_le_one_of_lt_one'` all merged into `mul_lt_of_le_one_of_lt` -- Lemma `@[to_additive] lemma mul_lt_one` broke into * `@[to_additive] lemma left.mul_lt_one` * `@[to_additive] lemma right.mul_lt_one` depending on typeclass assumptions -- Lemmas that became a direct application of another lemma * `@[to_additive] lemma mul_lt_one_of_lt_one_of_le_one` and `mul_lt_one_of_lt_one_of_le_one'` are applications of `mul_lt_of_lt_of_le_one` * `@[to_additive] lemma mul_lt_one'` is an application of `mul_lt_of_lt_of_lt_one` -- Lemma `@[to_additive] lemma mul_eq_one_iff_eq_one_of_one_le` changed name to `mul_eq_one_iff_eq_one_of_one_le`. The multiplicative version is never used. The additive version, `add_eq_zero_iff_eq_zero_of_nonneg` is used: I changed the occurrences in favour of the shorter name. -- Lemma `@[to_additive add_nonpos] lemma mul_le_one'` continues as ```lean alias mul_le_of_le_of_le_one ← mul_le_one' attribute [to_additive add_nonpos] mul_le_one' ``` ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean Modified src/algebra/ordered_monoid.lean Modified src/algebra/ordered_monoid_lemmas.lean + def contravariant.to_left_cancel_semigroup + def contravariant.to_right_cancel_semigroup +/- theorem le_mul_iff_one_le_left' +/- theorem le_mul_iff_one_le_right' + theorem le_mul_of_le_of_le_one +/- theorem le_mul_of_one_le_of_le +/- theorem le_mul_of_one_le_right' +/- theorem le_of_mul_le_mul_left' +/- theorem le_of_mul_le_mul_right' + theorem left.mul_lt_one + theorem left.mul_lt_one_of_lt_of_lt_one +/- theorem lt_mul_iff_one_lt_left' +/- theorem lt_mul_iff_one_lt_right' +/- theorem lt_mul_of_le_of_one_lt +/- theorem lt_mul_of_lt_of_one_le +/- theorem lt_mul_of_lt_of_one_lt - theorem lt_mul_of_one_le_of_lt' +/- theorem lt_mul_of_one_lt_left' +/- theorem lt_mul_of_one_lt_of_le - theorem lt_mul_of_one_lt_of_lt' +/- theorem lt_mul_of_one_lt_right' +/- theorem lt_of_mul_lt_mul_left' +/- theorem monotone.const_mul' +/- theorem monotone.mul' +/- theorem monotone.mul_const' +/- theorem monotone.mul_strict_mono' - theorem mul_eq_one_iff_eq_one_of_one_le +/- theorem mul_le_iff_le_one_left' +/- theorem mul_le_iff_le_one_right' +/- theorem mul_le_mul_iff_left +/- theorem mul_le_mul_iff_right +/- theorem mul_le_mul_left' +/- theorem mul_le_mul_right' +/- theorem mul_le_mul_three - theorem mul_le_of_le_of_le_one' +/- theorem mul_le_of_le_of_le_one - theorem mul_le_of_le_one_of_le' +/- theorem mul_le_of_le_one_of_le +/- theorem mul_le_of_le_one_right' - theorem mul_le_one' +/- theorem mul_lt_iff_lt_one_left' +/- theorem mul_lt_iff_lt_one_right' +/- theorem mul_lt_mul_iff_left +/- theorem mul_lt_mul_iff_right +/- theorem mul_lt_mul_left' +/- theorem mul_lt_mul_of_le_of_lt +/- theorem mul_lt_mul_of_lt_of_le + theorem mul_lt_mul_of_lt_of_lt +/- theorem mul_lt_mul_right' +/- theorem mul_lt_of_le_of_lt_one - theorem mul_lt_of_le_one_of_lt' +/- theorem mul_lt_of_le_one_of_lt - theorem mul_lt_of_lt_of_le_one' +/- theorem mul_lt_of_lt_of_le_one - theorem mul_lt_of_lt_of_lt_one' +/- theorem mul_lt_of_lt_of_lt_one +/- theorem mul_lt_of_lt_one_of_le - theorem mul_lt_of_lt_one_of_lt' +/- theorem mul_lt_of_lt_one_of_lt - theorem mul_lt_one' - theorem mul_lt_one - theorem mul_lt_one_of_le_one_of_lt_one' - theorem mul_lt_one_of_le_one_of_lt_one - theorem mul_lt_one_of_lt_one_of_le_one' - theorem mul_lt_one_of_lt_one_of_le_one +/- theorem one_le_mul + theorem one_le_mul_right + theorem right.mul_lt_one + theorem right.mul_lt_one_of_lt_of_lt_one + theorem right.one_le_mul + theorem right.one_lt_mul Modified src/algebra/quaternion.lean Modified src/data/int/basic.lean Modified src/data/nat/pow.lean Modified src/number_theory/zsqrtd/basic.lean Modified src/tactic/linarith/verification.lean 2021-06-23 04:58:30 168678e feat(analysis/liouville/liouville_constant): develop some API for Liouville (#8005) Proof of some inequalities for Liouville numbers. ESTIMATED CHANGES Modified src/analysis/liouville/liouville_constant.lean + theorem liouville.liouville_number_eq_initial_terms_add_tail + theorem liouville.liouville_number_tail_pos 2021-06-23 02:56:34 ac2142c chore(scripts): update nolints.txt (#8051) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-23 01:21:37 0bc09d9 feat(algebra/ordered_field): a few monotonicity results for powers (#8022) This PR proves the monotonicity (strict and non-strict) of `n → 1 / a ^ n`, for a fixed `a < 1` in a linearly ordered field. These are lemmas extracted from PR #8001: I moved them to a separate PR after the discussion there. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem one_div_pow_le_one_div_pow_of_le + theorem one_div_pow_lt_one_div_pow_of_lt + theorem one_div_pow_mono + theorem one_div_pow_strict_mono + theorem one_div_strict_mono_decr_on 2021-06-22 22:06:38 949e98e chore(topology/basic): add missing lemma (#8048) Adds `is_closed.sdiff`. From LTE. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem is_closed.sdiff 2021-06-22 20:35:50 de4a4ce feat(ring_theory/adjoin/basic): lemmas relating adjoin and submodule.span (#8031) ESTIMATED CHANGES Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_eq_span_of_subset + theorem algebra.adjoin_to_submodule_le + theorem algebra.span_le_adjoin 2021-06-22 19:52:44 c594196 chore(topology/continuous_function/algebra): delete old instances, use bundled sub[monoid, group, ring]s (#8004) We remove the `monoid`, `group`, ... instances on `{ f : α → β | continuous f }` since `C(α, β)` should be used instead, and we replacce the `sub[monoid, group, ...]` instances on `{ f : α → β | continuous f }` by definitions of bundled subobjects with carrier `{ f : α → β | continuous f }`. We keep the `set_of` for subobjects since we need a subset to be the carrier. Zulip : https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/instances.20on.20continuous.20subtype ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean - def continuous.C - theorem continuous_functions.coe_smul + def continuous_subalgebra + def continuous_subgroup + def continuous_submodule + def continuous_submonoid + def continuous_subring + def continuous_subsemiring 2021-06-22 16:26:58 83bd2e6 feat(analysis/normed_space/multilinear): add a few inequalities (#8018) Also add a few lemmas about `tsum` and `nnnorm`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnnorm_tsum_le + theorem tsum_of_nnnorm_bounded Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.le_of_op_nnnorm_le + theorem continuous_multilinear_map.le_op_nnnorm + theorem continuous_multilinear_map.le_op_norm_mul_pow_card_of_le + theorem continuous_multilinear_map.le_op_norm_mul_pow_of_le + theorem continuous_multilinear_map.le_op_norm_mul_prod_of_le + theorem continuous_multilinear_map.tsum_eval 2021-06-22 16:26:57 9c4afb1 feat(data/zmod): equivalence between the quotient type ℤ / aℤ and `zmod a` (#7976) This PR defines the equivalence between `zmod a` and ℤ / aℤ, where `a : ℕ` or `a : ℤ`, and the quotient is a quotient group or quotient ring. It also defines `zmod.lift n f hf : zmod n →+ A` induced by an additive hom `f : ℤ →+ A` such that `f n = 0`. (The latter map could be, but is no longer, defined as the composition of the equivalence with `quotient.lift f`.) Zulip threads: - [`(ideal.span {d}).quotient` is `zmod d`](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60.28ideal.2Espan.20.7Bd.7D.29.2Equotient.60.20is.20.60zmod.20d.60) - [Homomorphism from the integers descends to $$\mathbb{Z}/n$$](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Homomorphism.20from.20the.20integers.20descends.20to.20.24.24.5Cmathbb.7BZ.7D.2Fn.24.24) - [ `∈ gmultiples` iff divides](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60.E2.88.88.20gmultiples.60.20iff.20divides) ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.ker_int_cast_add_hom + theorem zmod.ker_int_cast_ring_hom + def zmod.lift + theorem zmod.lift_cast_add_hom + theorem zmod.lift_coe + theorem zmod.lift_comp_cast_add_hom + theorem zmod.lift_comp_coe Added src/data/zmod/quotient.lean + def int.quotient_gmultiples_equiv_zmod + def int.quotient_gmultiples_nat_equiv_zmod + def int.quotient_span_equiv_zmod + def int.quotient_span_nat_equiv_zmod Modified src/group_theory/subgroup.lean + theorem add_subgroup.mem_gmultiples_iff + theorem int.mem_gmultiples_iff + theorem subgroup.mem_gpowers_iff Modified src/ring_theory/ideal/basic.lean + def ideal.quot_equiv_of_eq Modified src/ring_theory/int/basic.lean + theorem int.gmultiples_nat_abs + theorem int.span_nat_abs 2021-06-22 14:51:33 f477e03 docs(data/list/erasedup): add module docstring (#8030) ESTIMATED CHANGES Modified src/data/list/erase_dup.lean 2021-06-22 14:51:32 7e20058 feat(topology/Profinite/cofiltered_limit): Locally constant functions from cofiltered limits (#7992) This generalizes one of the main technical theorems from LTE about cofiltered limits of profinite sets. This theorem should be useful for a future proof of Stone duality. ESTIMATED CHANGES Modified src/topology/category/Profinite/cofiltered_limit.lean + theorem Profinite.exists_locally_constant + theorem Profinite.exists_locally_constant_fin_two + theorem Profinite.exists_locally_constant_fintype_aux + theorem Profinite.exists_locally_constant_fintype_nonempty Modified src/topology/discrete_quotient.lean + def locally_constant.discrete_quotient + theorem locally_constant.factors + def locally_constant.lift + theorem locally_constant.lift_eq_coe + theorem locally_constant.lift_is_locally_constant + def locally_constant.locally_constant_lift Modified src/topology/locally_constant/basic.lean + theorem is_locally_constant.is_clopen_fiber + theorem is_locally_constant.is_closed_fiber 2021-06-22 13:52:01 6e5de19 feat(linear_algebra/free_module): add lemmas (#7950) Easy results about free modules. ESTIMATED CHANGES Modified src/algebra/category/Module/projective.lean Modified src/algebra/module/projective.lean + theorem module.projective_of_basis - theorem module.projective_of_free Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/free_module.lean Modified src/linear_algebra/std_basis.lean +/- theorem pi.linear_independent_std_basis 2021-06-22 12:45:40 cb7b6cb docs(data/list/rotate): add module docstring (#8027) ESTIMATED CHANGES Modified src/data/list/rotate.lean 2021-06-22 12:45:39 94a8073 feat(analysis/specific_limits): summability of `(λ i, 1 / m ^ f i)` (#8023) This PR shows the summability of the series whose `i`th term is `1 / m ^ f i`, where `1 < m` is a fixed real number and `f : ℕ → ℕ` is a function bounded below by the identity function. While a function eventually bounded below by a constant at least equal to 2 would have been enough, this specific shape is convenient for the Liouville application. I extracted this lemma, following the discussion in PR #8001. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem summable_one_div_pow_of_le 2021-06-22 12:45:38 a3699b9 refactor(topology/sheaves/stalks): Refactor proofs about stalk map (#8000) Refactoring and speeding up some of my code on stalk maps from #7092. ESTIMATED CHANGES Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.app_surjective_of_stalk_functor_map_bijective +/- theorem Top.presheaf.section_ext 2021-06-22 12:45:37 208d4fe docs(data/pnat): add module docstrings (#7960) ESTIMATED CHANGES Modified src/data/pnat/factors.lean Modified src/data/pnat/xgcd.lean - def pnat.xgcd: + def pnat.xgcd 2021-06-22 11:36:42 4cbe7d6 feat(group_theory/specific_groups/cyclic): A group is commutative if the quotient by the center is cyclic (#7952) ESTIMATED CHANGES Modified src/group_theory/specific_groups/cyclic.lean + def comm_group_of_cycle_center_quotient + theorem commutative_of_cyclic_center_quotient 2021-06-22 11:36:40 a1a0940 chore(ring_theory/ideal): mark `ideal.quotient` as reducible (#7892) I had an ideal and wanted to apply a theorem about submodule quotients to the ideal quotient. The API around ideals is designed to have most things defeq to the corresponding submodule definition. Marking this definition as reducible informs the typeclass system that it can use this defeq. Test case: ````lean import ring_theory.ideal.basic /-- Typeclass instances on ideal quotients transfer to submodule quotients. This is useful if you want to apply results that hold for general submodules to ideals specifically. The instance will not be found if `ideal.quotient` is not reducible, e.g. after you uncomment the following line: ``` local attribute [semireducible] ideal.quotient ``` -/ example {R : Type*} [comm_ring R] (I : ideal R) [fintype (ideal.quotient I)] : fintype (submodule.quotient I) := infer_instance ```` Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Making.20.60ideal.2Equotient.60.20reducible.20.28or.20deleted.20altogether.3F.29 ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean 2021-06-22 11:36:40 96f09a6 feat(group_theory/perm/cycles): cycle_factors_finset (#7540) ESTIMATED CHANGES Modified src/data/finset/noncomm_prod.lean + theorem finset.noncomm_prod_singleton Modified src/group_theory/perm/cycle_type.lean - theorem equiv.perm.list_cycles_perm_list_cycles - theorem equiv.perm.mem_list_cycles_iff Modified src/group_theory/perm/cycles.lean + def equiv.perm.cycle_factors_finset + theorem equiv.perm.cycle_factors_finset_eq_empty_iff + theorem equiv.perm.cycle_factors_finset_eq_finset + theorem equiv.perm.cycle_factors_finset_eq_list_to_finset + theorem equiv.perm.cycle_factors_finset_eq_singleton_iff + theorem equiv.perm.cycle_factors_finset_eq_singleton_self_iff + theorem equiv.perm.cycle_factors_finset_injective + theorem equiv.perm.cycle_factors_finset_mem_commute + theorem equiv.perm.cycle_factors_finset_noncomm_prod + theorem equiv.perm.cycle_factors_finset_pairwise_disjoint + theorem equiv.perm.is_cycle.eq_on_support_inter_nonempty_congr + theorem equiv.perm.is_cycle.support_congr + theorem equiv.perm.list_cycles_perm_list_cycles + theorem equiv.perm.mem_cycle_factors_finset_iff + theorem equiv.perm.mem_list_cycles_iff Modified src/group_theory/perm/sign.lean Modified src/group_theory/perm/support.lean + theorem equiv.perm.disjoint.commute + theorem equiv.perm.disjoint.mem_imp - theorem equiv.perm.disjoint.mul_comm + theorem equiv.perm.disjoint.symmetric + theorem equiv.perm.eq_on_support_mem_disjoint + theorem equiv.perm.pow_eq_on_of_mem_support +/- theorem equiv.perm.support_congr + theorem equiv.perm.support_le_prod_of_mem Modified src/group_theory/specific_groups/alternating.lean 2021-06-22 10:22:32 9ca8597 feat(linear_algebra/matrix/reindex): add some lemmas (#7963) From LTE Added lemmas `reindex_linear_equiv_trans`, `reindex_linear_equiv_comp`, `reindex_linear_equiv_comp_apply`, `reindex_linear_equiv_one` and `mul_reindex_linear_equiv_mul_one` needed in LTE. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- def matrix.minor +/- theorem matrix.minor_apply + theorem matrix.mul_minor_one + theorem matrix.one_minor_mul +/- theorem matrix.transpose_minor Modified src/linear_algebra/matrix/reindex.lean + theorem matrix.mul_reindex_linear_equiv_one + theorem matrix.reindex_linear_equiv_comp + theorem matrix.reindex_linear_equiv_comp_apply +/- theorem matrix.reindex_linear_equiv_mul + theorem matrix.reindex_linear_equiv_one + theorem matrix.reindex_linear_equiv_trans 2021-06-22 08:42:23 faaa0bc feat(algebra/ordered_field): `(1 - 1 / a)⁻¹ ≤ 2` (#8021) A lemma from the Liouville PR #8001. I extracted this lemma, after the discussion there. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem sub_one_div_inv_le_two 2021-06-22 03:06:41 3b4d1d8 chore(scripts): update nolints.txt (#8032) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-22 03:06:40 6796bee chore(algebra/char_p/basic): generalize to non_assoc_semiring (#7985) ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean +/- theorem char_p.congr +/- theorem char_p.exists +/- theorem char_p.exists_unique 2021-06-22 03:06:39 4416eac feat(topology/instances/real): a continuous periodic function has compact range (and is hence bounded) (#7968) A few more facts about periodic functions, namely: - If a function `f` is `periodic` with positive period `p`, then for all `x` there exists `y` such that `y` is an element of `[0, p)` and `f x = f y` - A continuous, periodic function has compact range - A continuous, periodic function is bounded ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem function.periodic.exists_mem_Ico Modified src/data/set/basic.lean +/- theorem set.image_subset_range +/- theorem set.image_univ + theorem set.mem_range_of_mem_image +/- theorem set.range_subset_iff Modified src/topology/instances/real.lean + theorem function.periodic.bounded_of_continuous + theorem function.periodic.compact_of_continuous' + theorem function.periodic.compact_of_continuous 2021-06-22 01:52:04 e4b9561 feat(linear_algebra/basic): weaken typeclasses (#8028) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean 2021-06-21 20:24:31 80daef4 chore(category_theory/limits): shorten some long lines (#8007) ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean 2021-06-21 19:43:14 520bbe6 feat(algebra/non_unital_alg_hom): define non_unital_alg_hom (#7863) The motivation is to be able to state the universal property for a magma algebra using bundled morphisms. ESTIMATED CHANGES Added src/algebra/non_unital_alg_hom.lean + theorem alg_hom.coe_to_non_unital_alg_hom + def alg_hom.to_non_unital_alg_hom + theorem alg_hom.to_non_unital_alg_hom_eq_coe + theorem non_unital_alg_hom.coe_comp + theorem non_unital_alg_hom.coe_distrib_mul_action_hom_mk + theorem non_unital_alg_hom.coe_injective + theorem non_unital_alg_hom.coe_inverse + theorem non_unital_alg_hom.coe_mk + theorem non_unital_alg_hom.coe_mul_hom_mk + theorem non_unital_alg_hom.coe_one + theorem non_unital_alg_hom.coe_to_distrib_mul_action_hom + theorem non_unital_alg_hom.coe_to_mul_hom + theorem non_unital_alg_hom.coe_zero + def non_unital_alg_hom.comp + theorem non_unital_alg_hom.comp_apply + theorem non_unital_alg_hom.ext + theorem non_unital_alg_hom.ext_iff + def non_unital_alg_hom.inverse + theorem non_unital_alg_hom.map_add + theorem non_unital_alg_hom.map_mul + theorem non_unital_alg_hom.map_smul + theorem non_unital_alg_hom.map_zero + theorem non_unital_alg_hom.mk_coe + theorem non_unital_alg_hom.one_apply + theorem non_unital_alg_hom.to_distrib_mul_action_hom_eq_coe + theorem non_unital_alg_hom.to_fun_eq_coe + theorem non_unital_alg_hom.to_mul_hom_eq_coe + theorem non_unital_alg_hom.zero_apply + structure non_unital_alg_hom 2021-06-21 19:43:13 2b80d2f feat(geometry/euclidean/sphere): proof of Freek thm 95 - Ptolemy’s Theorem (#7329) ESTIMATED CHANGES Modified docs/100.yaml Modified src/geometry/euclidean/sphere.lean + theorem euclidean_geometry.mul_dist_add_mul_dist_eq_mul_dist_of_cospherical 2021-06-21 19:03:52 2fb0842 perf(ci): use self-hosted runner for bors (#8024) Run CI builds for the `staging` branch used by bors on a self-hosted github actions runner. This runner has been graciously provided by Johan Commelin's DFG grant and is hosted at the Albert-Ludwigs-Universität Freiburg. We need to use two github actions workflow files to use a separate runner for the `staging` branch: `build.yml` and `bors.yml`. These are almost identical, except for the `runs-on:` property indicating which runner should be used. The shell script `mk_build_yml.sh` is therefore used to generate both files from the common template `build.yml.in`. ESTIMATED CHANGES Added .github/workflows/bors.yml Modified .github/workflows/build.yml Added .github/workflows/build.yml.in Added .github/workflows/lint_self_test.yml Added .github/workflows/mk_build_yml.sh 2021-06-21 14:25:31 eb13f6b feat(ring_theory/derivation): add missing dsimp lemmas, use old_structure_command, golf structure proofs (#8013) This adds a pile of missing coercion lemmas proved by refl, and uses them to construct the `add_comm_monoid`, `add_comm_group`, and `module` instances. This also changes `derivation` to be an old-style structure, which is more in line with the other bundled homomorphisms. This also removes `derivation.commutator` to avoid having two ways to spell the same thing, as this leads to lemmas being harder to apply ESTIMATED CHANGES Modified src/ring_theory/derivation.lean +/- theorem derivation.Rsmul_apply +/- theorem derivation.add_apply + theorem derivation.coe_Rsmul + theorem derivation.coe_Rsmul_linear_map + theorem derivation.coe_add + theorem derivation.coe_add_linear_map + def derivation.coe_fn_add_monoid_hom +/- theorem derivation.coe_fn_coe +/- theorem derivation.coe_injective + theorem derivation.coe_neg + theorem derivation.coe_neg_linear_map + theorem derivation.coe_smul + theorem derivation.coe_smul_linear_map + theorem derivation.coe_sub + theorem derivation.coe_sub_linear_map + theorem derivation.coe_zero + theorem derivation.coe_zero_linear_map - def derivation.commutator +/- theorem derivation.mk_coe + theorem derivation.neg_apply +/- theorem derivation.smul_apply - theorem derivation.smul_to_linear_map_coe +/- theorem derivation.sub_apply + theorem derivation.to_linear_map_eq_coe + theorem derivation.zero_apply 2021-06-21 14:25:28 92263c0 refactor(algebraic_geometry/structure_sheaf): Enclose definitions in structure_sheaf namespace (#8010) Moves some pretty generic names like `const` and `to_open` to the `structure_sheaf` namespace. ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean Modified src/algebraic_geometry/structure_sheaf.lean - def algebraic_geometry.basic_open_iso - theorem algebraic_geometry.coe_open_to_localization - def algebraic_geometry.const - theorem algebraic_geometry.const_add - theorem algebraic_geometry.const_apply' - theorem algebraic_geometry.const_apply - theorem algebraic_geometry.const_congr - theorem algebraic_geometry.const_ext - theorem algebraic_geometry.const_mul - theorem algebraic_geometry.const_mul_cancel' - theorem algebraic_geometry.const_mul_cancel - theorem algebraic_geometry.const_mul_rev - theorem algebraic_geometry.const_one - theorem algebraic_geometry.const_self - theorem algebraic_geometry.const_zero - theorem algebraic_geometry.exists_const - theorem algebraic_geometry.germ_comp_stalk_to_fiber_ring_hom - theorem algebraic_geometry.germ_to_open - theorem algebraic_geometry.germ_to_top - theorem algebraic_geometry.is_unit_to_basic_open_self - theorem algebraic_geometry.is_unit_to_stalk - theorem algebraic_geometry.localization_to_basic_open - def algebraic_geometry.localization_to_stalk - theorem algebraic_geometry.localization_to_stalk_mk' - theorem algebraic_geometry.localization_to_stalk_of - theorem algebraic_geometry.locally_const_basic_open - theorem algebraic_geometry.normalize_finite_fraction_representation - def algebraic_geometry.open_to_localization - theorem algebraic_geometry.open_to_localization_apply - theorem algebraic_geometry.res_apply - theorem algebraic_geometry.res_const' - theorem algebraic_geometry.res_const - def algebraic_geometry.stalk_iso - def algebraic_geometry.stalk_to_fiber_ring_hom - theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ' - theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ - theorem algebraic_geometry.stalk_to_fiber_ring_hom_to_stalk + def algebraic_geometry.structure_sheaf.basic_open_iso + theorem algebraic_geometry.structure_sheaf.coe_open_to_localization +/- def algebraic_geometry.structure_sheaf.comap +/- theorem algebraic_geometry.structure_sheaf.comap_apply +/- theorem algebraic_geometry.structure_sheaf.comap_comp +/- theorem algebraic_geometry.structure_sheaf.comap_const +/- def algebraic_geometry.structure_sheaf.comap_fun +/- theorem algebraic_geometry.structure_sheaf.comap_fun_is_locally_fraction +/- theorem algebraic_geometry.structure_sheaf.comap_id' +/- theorem algebraic_geometry.structure_sheaf.comap_id +/- theorem algebraic_geometry.structure_sheaf.comap_id_eq_map + def algebraic_geometry.structure_sheaf.const + theorem algebraic_geometry.structure_sheaf.const_add + theorem algebraic_geometry.structure_sheaf.const_apply' + theorem algebraic_geometry.structure_sheaf.const_apply + theorem algebraic_geometry.structure_sheaf.const_congr + theorem algebraic_geometry.structure_sheaf.const_ext + theorem algebraic_geometry.structure_sheaf.const_mul + theorem algebraic_geometry.structure_sheaf.const_mul_cancel' + theorem algebraic_geometry.structure_sheaf.const_mul_cancel + theorem algebraic_geometry.structure_sheaf.const_mul_rev + theorem algebraic_geometry.structure_sheaf.const_one + theorem algebraic_geometry.structure_sheaf.const_self + theorem algebraic_geometry.structure_sheaf.const_zero + theorem algebraic_geometry.structure_sheaf.exists_const + theorem algebraic_geometry.structure_sheaf.germ_comp_stalk_to_fiber_ring_hom + theorem algebraic_geometry.structure_sheaf.germ_to_open + theorem algebraic_geometry.structure_sheaf.germ_to_top + theorem algebraic_geometry.structure_sheaf.is_unit_to_basic_open_self + theorem algebraic_geometry.structure_sheaf.is_unit_to_stalk + theorem algebraic_geometry.structure_sheaf.localization_to_basic_open + def algebraic_geometry.structure_sheaf.localization_to_stalk + theorem algebraic_geometry.structure_sheaf.localization_to_stalk_mk' + theorem algebraic_geometry.structure_sheaf.localization_to_stalk_of + theorem algebraic_geometry.structure_sheaf.locally_const_basic_open + theorem algebraic_geometry.structure_sheaf.normalize_finite_fraction_representation + def algebraic_geometry.structure_sheaf.open_to_localization + theorem algebraic_geometry.structure_sheaf.open_to_localization_apply + theorem algebraic_geometry.structure_sheaf.res_apply + theorem algebraic_geometry.structure_sheaf.res_const' + theorem algebraic_geometry.structure_sheaf.res_const + def algebraic_geometry.structure_sheaf.stalk_iso + def algebraic_geometry.structure_sheaf.stalk_to_fiber_ring_hom + theorem algebraic_geometry.structure_sheaf.stalk_to_fiber_ring_hom_germ' + theorem algebraic_geometry.structure_sheaf.stalk_to_fiber_ring_hom_germ + theorem algebraic_geometry.structure_sheaf.stalk_to_fiber_ring_hom_to_stalk + def algebraic_geometry.structure_sheaf.to_basic_open + theorem algebraic_geometry.structure_sheaf.to_basic_open_injective + theorem algebraic_geometry.structure_sheaf.to_basic_open_mk' + theorem algebraic_geometry.structure_sheaf.to_basic_open_surjective + theorem algebraic_geometry.structure_sheaf.to_basic_open_to_map + def algebraic_geometry.structure_sheaf.to_open + theorem algebraic_geometry.structure_sheaf.to_open_comp_comap + theorem algebraic_geometry.structure_sheaf.to_open_eq_const + theorem algebraic_geometry.structure_sheaf.to_open_germ + theorem algebraic_geometry.structure_sheaf.to_open_res + def algebraic_geometry.structure_sheaf.to_stalk + theorem algebraic_geometry.structure_sheaf.to_stalk_comp_stalk_to_fiber_ring_hom - def algebraic_geometry.to_basic_open - theorem algebraic_geometry.to_basic_open_injective - theorem algebraic_geometry.to_basic_open_mk' - theorem algebraic_geometry.to_basic_open_surjective - theorem algebraic_geometry.to_basic_open_to_map - def algebraic_geometry.to_open - theorem algebraic_geometry.to_open_comp_comap - theorem algebraic_geometry.to_open_eq_const - theorem algebraic_geometry.to_open_germ - theorem algebraic_geometry.to_open_res - def algebraic_geometry.to_stalk - theorem algebraic_geometry.to_stalk_comp_stalk_to_fiber_ring_hom 2021-06-21 14:25:27 5bc18a9 feat(topology/category/limits): Generalize Topological Kőnig's lemma (#7982) This PR generalizes the Topological Kőnig's lemma to work with limits over cofiltered categories (as opposed to just directed orders). Along the way, we also prove some more API for the category instance on `ulift C`, and provide an `as_small C` construction for a category `C`. Coauthored with @kmill ESTIMATED CHANGES Modified src/category_theory/category/ulift.lean + def category_theory.as_small.down + def category_theory.as_small.equiv + def category_theory.as_small.up + theorem category_theory.obj_down_obj_up + theorem category_theory.obj_up_obj_down +/- def category_theory.ulift.down +/- def category_theory.ulift.equivalence +/- def category_theory.ulift.up + def category_theory.ulift_hom.down + def category_theory.ulift_hom.equiv + def category_theory.ulift_hom.obj_down + def category_theory.ulift_hom.obj_up + def category_theory.ulift_hom.up + def category_theory.{w Modified src/category_theory/filtered.lean Modified src/topology/category/Top/limits.lean + theorem Top.nonempty_limit_cone_of_compact_t2_cofiltered_system - theorem Top.nonempty_limit_cone_of_compact_t2_inverse_system +/- theorem Top.partial_sections.closed +/- theorem Top.partial_sections.directed +/- theorem Top.partial_sections.nonempty +/- def Top.partial_sections + theorem nonempty_sections_of_fintype_cofiltered_system.init + theorem nonempty_sections_of_fintype_cofiltered_system - theorem nonempty_sections_of_fintype_inverse_system.init - def ulift.directed_order 2021-06-21 14:25:26 9ce032c feat(data/matrix/basic): generalize to non_assoc_semiring (#7974) Matrices with whose coefficients form a non-unital and/or non-associative ring themselves form a non-unital and non-associative ring. This isn't a full generalization of the file, the main aim was to generalize the typeclass instances available. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.sum_boole +/- theorem ring_hom.map_list_sum +/- theorem ring_hom.map_multiset_sum +/- theorem ring_hom.map_sum Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/data/matrix/basic.lean +/- theorem matrix.add_dot_product +/- theorem matrix.col_add +/- theorem matrix.col_smul +/- theorem matrix.diagonal_dot_product +/- theorem matrix.dot_product_add +/- theorem matrix.dot_product_assoc +/- theorem matrix.dot_product_diagonal' +/- theorem matrix.dot_product_diagonal +/- theorem matrix.dot_product_smul +/- theorem matrix.dot_product_zero' +/- theorem matrix.dot_product_zero +/- theorem matrix.map_mul +/- theorem matrix.row_add +/- theorem matrix.row_mul_col_apply +/- theorem matrix.row_smul +/- theorem matrix.smul_dot_product +/- theorem matrix.smul_mul_vec_assoc + theorem matrix.sum_apply +/- def matrix.vec_mul_vec +/- theorem matrix.zero_dot_product' +/- theorem matrix.zero_dot_product Modified src/linear_algebra/char_poly/coeff.lean 2021-06-21 08:39:18 3ef52f3 chore(logic/basic): actually fixup `eq_or_ne` (#8015) this lemma loves being broken... ESTIMATED CHANGES Modified src/logic/basic.lean 2021-06-21 08:39:17 abdc316 feat(analysis/normed_space/normed_group_hom): add lemmas (#7875) From LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/SemiNormedGroup.lean Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.coe_comp + theorem normed_group_hom.coe_id + theorem normed_group_hom.comp_assoc +/- theorem normed_group_hom.isometry_id + theorem normed_group_hom.norm_comp_le_of_le' + theorem normed_group_hom.norm_comp_le_of_le +/- theorem normed_group_hom.norm_id +/- theorem normed_group_hom.norm_id_le +/- theorem normed_group_hom.norm_noninc.id 2021-06-21 03:37:41 c7d094d chore(scripts): update nolints.txt (#8017) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-21 03:37:40 3925fc0 feat(analysis/liouville/liouville_constant.lean): create a file and introduce Liouville's constant (#7996) Introduce a new file and the definition of Liouville's number. This is on the way to PR #4301. ESTIMATED CHANGES Modified src/analysis/liouville/basic.lean Added src/analysis/liouville/liouville_constant.lean + def liouville.liouville_number + def liouville.liouville_number_initial_terms + def liouville.liouville_number_tail 2021-06-21 03:37:39 4d69b0f chore(topology/algebra/infinite_sum): small todo (#7994) Generalize a lemma from `f : ℕ → ℝ` to `f : β → α`, with ```lean [add_comm_group α] [topological_space α] [topological_add_group α] [t2_space α] [decidable_eq β] ``` This was marked as TODO after #6017/#6096. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_ite_eq_extract +/- theorem tsum_ite_eq_extract 2021-06-21 03:37:38 5cdbb4c feat(algebra/*/pi, topology/continuous_function/algebra): homomorphism induced by left-composition (#7984) Given a monoid homomorphism from `α` to `β`, there is an induced monoid homomorphism from `I → α` to `I → β`, by left-composition. Same result for semirings, modules, algebras. Same result for topological monoids, topological semirings, etc, and the function spaces `C(I, α)`, `C(I, β)`, if the homomorphism is continuous. Of these eight constructions, the only one I particularly want is the last one (topological algebras). If reviewers feel it is better not to clog mathlib up with unused constructions, I am happy to cut the other seven from this PR. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/group/pi.lean Modified src/algebra/ring/pi.lean +/- def pi.eval_ring_hom Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/pi.lean Modified src/topology/continuous_function/algebra.lean 2021-06-21 03:37:37 18c1c4a fix(tactic/linarith/preprocessing): capture result of zify_proof (#7901) this fixes the error encountered in the MWE in this Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F.20tactics/topic/delayed_abstraction.20meta-variables/near/242376874 the `simplify` call inside of `zify_proof` does something bad to the tactic state when called in the scope of an `io.run_tactic`, not entirely sure why ¯\_(ツ)_/¯ ESTIMATED CHANGES Modified src/tactic/linarith/preprocessing.lean 2021-06-20 21:36:12 767901a feat(algebra/ordered_ring): `a + 1 ≤ 2 * a` (#7995) Prove one lemma, useful for the Liouville PR #4301. The placement of the lemma will change, once the `ordered` refactor will get to `ordered_ring`. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem add_one_le_two_mul 2021-06-20 17:21:15 fae00c7 chore(analysis/special_functions): move measurability statements to measure_theory folder (#8006) Make sure that measure theory is not imported in basic files defining trigonometric functions and real powers. The measurability of these functions is postponed to a new file `measure_theory.special_functions`. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean - theorem ae_measurable.inner - theorem measurable.inner Modified src/analysis/special_functions/exp_log.lean - theorem complex.measurable_exp - theorem complex.measurable_im - theorem complex.measurable_of_real - theorem complex.measurable_re - theorem measurable.cexp - theorem measurable.exp - theorem measurable.log - theorem real.measurable_exp - theorem real.measurable_log Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/sqrt.lean - theorem measurable.sqrt Modified src/analysis/special_functions/trigonometric.lean - theorem complex.measurable_arg - theorem complex.measurable_cos - theorem complex.measurable_cosh - theorem complex.measurable_log - theorem complex.measurable_sin - theorem complex.measurable_sinh - theorem measurable.arctan - theorem measurable.carg - theorem measurable.ccos - theorem measurable.ccosh - theorem measurable.clog - theorem measurable.cos - theorem measurable.cosh - theorem measurable.csin - theorem measurable.csinh - theorem measurable.sin - theorem measurable.sinh - theorem real.measurable_arccos - theorem real.measurable_arcsin - theorem real.measurable_arctan - theorem real.measurable_cos - theorem real.measurable_cosh - theorem real.measurable_sin - theorem real.measurable_sinh Modified src/measure_theory/mean_inequalities.lean Added src/measure_theory/special_functions.lean + theorem ae_measurable.inner + theorem complex.measurable_arg + theorem complex.measurable_cos + theorem complex.measurable_cosh + theorem complex.measurable_exp + theorem complex.measurable_im + theorem complex.measurable_log + theorem complex.measurable_of_real + theorem complex.measurable_re + theorem complex.measurable_sin + theorem complex.measurable_sinh + theorem measurable.arctan + theorem measurable.carg + theorem measurable.ccos + theorem measurable.ccosh + theorem measurable.cexp + theorem measurable.clog + theorem measurable.cos + theorem measurable.cosh + theorem measurable.csin + theorem measurable.csinh + theorem measurable.exp + theorem measurable.inner + theorem measurable.log + theorem measurable.sin + theorem measurable.sinh + theorem measurable.sqrt + theorem real.measurable_arccos + theorem real.measurable_arcsin + theorem real.measurable_arctan + theorem real.measurable_cos + theorem real.measurable_cosh + theorem real.measurable_exp + theorem real.measurable_log + theorem real.measurable_sin + theorem real.measurable_sinh 2021-06-20 13:40:08 547df12 chore(analysis/liouville/liouville + data/real/liouville): create folder `analysis/liouville/`, move `data/real/liouville` into new folder (#7998) This PR simply creates a new folder `analysis/liouville` and moves `data/real/liouville` into the new folder. In PR #7996 I create a new Liouville-related file in the same folder. ESTIMATED CHANGES Renamed src/data/real/liouville.lean to src/analysis/liouville/basic.lean 2021-06-20 12:05:49 3a0f282 feat(measure_theory/interval_integral): integral of a non-integrable function (#8011) The `interval_integral` of a non-`interval_integrable` function is `0`. ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean +/- theorem interval_integral.integral_non_ae_measurable +/- theorem interval_integral.integral_non_ae_measurable_of_le + theorem interval_integral.integral_undef 2021-06-19 23:38:51 7d155d9 refactor(topology/metric_space/isometry): move material about isometries of normed spaces (#8003) See https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/topology.20and.20analysis ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/basic.lean + theorem add_monoid_hom.isometry_iff_norm + theorem add_monoid_hom.isometry_of_norm + theorem algebra_map_isometry + theorem isometric.add_left_symm + theorem isometric.add_left_to_equiv + theorem isometric.add_right_apply + theorem isometric.add_right_symm + theorem isometric.add_right_to_equiv + theorem isometric.coe_add_left + theorem isometric.coe_add_right + theorem isometric.coe_neg + theorem isometric.neg_symm + theorem isometric.neg_to_equiv + theorem uniform_space.completion.norm_coe Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/normed_group_hom.lean Modified src/topology/algebra/group_completion.lean Deleted src/topology/algebra/normed_group.lean - theorem uniform_space.completion.norm_coe Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/isometry.lean - theorem add_monoid_hom.isometry_iff_norm - theorem add_monoid_hom.isometry_of_norm - theorem algebra_map_isometry - theorem isometric.add_left_symm - theorem isometric.add_left_to_equiv - theorem isometric.add_right_apply - theorem isometric.add_right_symm - theorem isometric.add_right_to_equiv - theorem isometric.coe_add_left - theorem isometric.coe_add_right - theorem isometric.coe_neg - theorem isometric.neg_symm - theorem isometric.neg_to_equiv 2021-06-19 23:38:51 7d5b50a feat(algebra/homology/homotopy): flesh out the api a bit, add some simps (#7941) ESTIMATED CHANGES Modified src/algebra/homology/homotopy.lean + theorem d_next_nat + def homotopy.comp + def homotopy.of_eq + theorem prev_d_nat 2021-06-19 18:19:08 63c3ab5 chore(data/int/basic): rationalize the arguments implicitness (mostly to_nat_sub_of_le) (#7997) ESTIMATED CHANGES Modified src/data/int/basic.lean +/- theorem int.coe_pred_of_pos +/- theorem int.mod_mod_of_dvd +/- theorem int.mul_div_mul_of_pos_left +/- theorem int.mul_mod_mul_of_pos +/- theorem int.of_nat_add_neg_succ_of_nat_of_lt +/- theorem int.sub_div_of_dvd +/- theorem int.to_nat_sub_of_le Modified src/data/int/modeq.lean 2021-06-19 15:31:15 cd8f7b5 chore(topology/metric_space/pi_Lp): move to analysis folder, import inner_product_space (#7991) Currently, the file `pi_Lp` (on finite products of metric spaces, with the `L^p` norm) is in the topology folder, but it imports a lot of analysis (to have real powers) and it defines a normed space structure, so it makes more sense to have it in analysis. Also, it is currently imported by `inner_product_space`, to give an explicit construction of an inner product space on `pi_Lp 2`, which means that all files importing general purposes lemmas on inner product spaces also import real powers, trigonometry, and so on. We swap the imports, letting `pi_Lp` import `inner_product_space` and moving the relevant bits from the latter file to the former. This gives a more reasonable import graph. ESTIMATED CHANGES Modified src/analysis/normed_space/euclidean_dist.lean Modified src/analysis/normed_space/inner_product.lean - def basis.isometry_euclidean_of_orthonormal - def complex.isometry_euclidean - theorem complex.isometry_euclidean_apply_one - theorem complex.isometry_euclidean_apply_zero - theorem complex.isometry_euclidean_proj_eq_self - theorem complex.isometry_euclidean_symm_apply - theorem euclidean_space.norm_eq - def euclidean_space - theorem finrank_euclidean_space - theorem finrank_euclidean_space_fin - def linear_isometry_equiv.from_orthogonal_span_singleton - def linear_isometry_equiv.of_inner_product_space - theorem pi_Lp.inner_apply - theorem pi_Lp.norm_eq_of_L2 Renamed src/topology/metric_space/pi_Lp.lean to src/analysis/normed_space/pi_Lp.lean + def basis.isometry_euclidean_of_orthonormal + def complex.isometry_euclidean + theorem complex.isometry_euclidean_apply_one + theorem complex.isometry_euclidean_apply_zero + theorem complex.isometry_euclidean_proj_eq_self + theorem complex.isometry_euclidean_symm_apply + theorem euclidean_space.norm_eq + def euclidean_space + theorem finrank_euclidean_space + theorem finrank_euclidean_space_fin + def linear_isometry_equiv.from_orthogonal_span_singleton + def linear_isometry_equiv.of_inner_product_space + theorem pi_Lp.inner_apply + theorem pi_Lp.norm_eq_of_L2 Modified src/geometry/euclidean/basic.lean Modified src/geometry/manifold/instances/real.lean 2021-06-19 15:31:14 497b84d chore(analysis/mean_inequalities): split integral mean inequalities to a new file (#7990) Currently, `normed_space.dual` imports a bunch of integration theory for no reason other than the file `mean_inequalities` contains both inequalities for finite sums and integrals. Splitting the file into two (and moving the integral versions to `measure_theory`) gives a more reasonable import graph. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean - theorem ennreal.ae_eq_zero_of_lintegral_rpow_eq_zero - theorem ennreal.fun_eq_fun_mul_inv_snorm_mul_snorm - def ennreal.fun_mul_inv_snorm - theorem ennreal.fun_mul_inv_snorm_rpow - theorem ennreal.lintegral_Lp_add_le - theorem ennreal.lintegral_Lp_mul_le_Lq_mul_Lr - theorem ennreal.lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero - theorem ennreal.lintegral_mul_le_Lp_mul_Lq - theorem ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_eq_top - theorem ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top - theorem ennreal.lintegral_mul_le_one_of_lintegral_rpow_eq_one - theorem ennreal.lintegral_mul_rpow_le_lintegral_rpow_mul_lintegral_rpow - theorem ennreal.lintegral_rpow_add_le_add_snorm_mul_lintegral_rpow_add - theorem ennreal.lintegral_rpow_add_lt_top_of_lintegral_rpow_lt_top - theorem ennreal.lintegral_rpow_fun_mul_inv_snorm_eq_one - theorem nnreal.lintegral_mul_le_Lp_mul_Lq Modified src/measure_theory/lp_space.lean Added src/measure_theory/mean_inequalities.lean + theorem ennreal.ae_eq_zero_of_lintegral_rpow_eq_zero + theorem ennreal.fun_eq_fun_mul_inv_snorm_mul_snorm + def ennreal.fun_mul_inv_snorm + theorem ennreal.fun_mul_inv_snorm_rpow + theorem ennreal.lintegral_Lp_add_le + theorem ennreal.lintegral_Lp_mul_le_Lq_mul_Lr + theorem ennreal.lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero + theorem ennreal.lintegral_mul_le_Lp_mul_Lq + theorem ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_eq_top + theorem ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top + theorem ennreal.lintegral_mul_le_one_of_lintegral_rpow_eq_one + theorem ennreal.lintegral_mul_rpow_le_lintegral_rpow_mul_lintegral_rpow + theorem ennreal.lintegral_rpow_add_le_add_snorm_mul_lintegral_rpow_add + theorem ennreal.lintegral_rpow_add_lt_top_of_lintegral_rpow_lt_top + theorem ennreal.lintegral_rpow_fun_mul_inv_snorm_eq_one + theorem nnreal.lintegral_mul_le_Lp_mul_Lq 2021-06-19 15:31:13 1846a1f feat(measure_theory/interval_integral): `abs_integral_le_integral_abs` (#7959) The absolute value of the integral of an integrable function is less than or equal to the integral of the absolute value that function. ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integrable.abs +/- theorem interval_integrable.norm + theorem interval_integral.abs_integral_le_integral_abs + theorem interval_integral.integral_nonneg_of_forall + theorem interval_integral.norm_integral_le_integral_norm 2021-06-19 08:22:50 2ca0452 feat(data/{fin,nat,zmod}): prove `zmod.coe_add_eq_ite` (#7975) This PR adds a couple of lemmas relating addition modulo `n` (in `ℕ`, `fin n` or `zmod n`) and addition in `ℕ` or `ℤ`. [Based on this Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Homomorphism.20from.20the.20integers.20descends.20to.20.24.24.5Cmathbb.7BZ.7D.2Fn.24.24) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.coe_add_eq_ite Modified src/data/nat/basic.lean + theorem nat.add_mod_eq_ite Modified src/data/zmod/basic.lean + theorem zmod.coe_add_eq_ite 2021-06-19 03:04:16 28aee95 chore(scripts): update nolints.txt (#7993) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-19 03:04:15 2a48c69 feat(category_theory/yoneda): develop API for representable functors (#7962) Dualises and extends API for representable functors which was previously pretty minimal ESTIMATED CHANGES Modified src/category_theory/sites/canonical.lean +/- theorem category_theory.sheaf.is_sheaf_of_representable Modified src/category_theory/sites/sheaf.lean Modified src/category_theory/yoneda.lean + theorem category_theory.corepresentable_of_nat_iso - def category_theory.coyoneda.iso_comp_punit + def category_theory.coyoneda.punit_iso + theorem category_theory.functor.corepr_w_app_hom + theorem category_theory.functor.repr_w_app_hom + theorem category_theory.functor.repr_w_hom + theorem category_theory.representable_of_nat_iso +/- def category_theory.yoneda_sections 2021-06-18 23:32:28 42ab44c feat(group_theory): computable 1st isomorphism theorem (#7988) This PR defines a computable version of the first isomorphism theorem for groups and monoids that takes a right inverse of the map, `quotient_ker_equiv_of_right_inverse`. ESTIMATED CHANGES Modified src/group_theory/congruence.lean + def con.quotient_ker_equiv_of_right_inverse Modified src/group_theory/quotient_group.lean + def quotient_group.quotient_ker_equiv_of_right_inverse 2021-06-18 23:32:27 3ee6248 feat(measure_theory): links between an integral and its improper version (#7164) This PR introduces ways of studying and computing `∫ x, f x ∂μ` by studying the limit of the sequence `∫ x in φ n, f x ∂μ` for an appropriate sequence `φ` of subsets of the domain of `f`. ESTIMATED CHANGES Modified src/measure_theory/integrable_on.lean + theorem ae_measurable.indicator + theorem ae_measurable.restrict + theorem ae_measurable_indicator_iff - theorem measure_theory.ae_measurable_indicator_iff Added src/measure_theory/integral_eq_improper.lean + theorem measure_theory.ae_cover.ae_tendsto_indicator + theorem measure_theory.ae_cover.bInter_Ici_ae_cover + theorem measure_theory.ae_cover.bUnion_Iic_ae_cover + theorem measure_theory.ae_cover.comp_tendsto + theorem measure_theory.ae_cover.integrable_of_integral_norm_tendsto + theorem measure_theory.ae_cover.integrable_of_integral_tendsto_of_nonneg_ae + theorem measure_theory.ae_cover.integrable_of_lintegral_nnnorm_tendsto' + theorem measure_theory.ae_cover.integrable_of_lintegral_nnnorm_tendsto + theorem measure_theory.ae_cover.integral_eq_of_tendsto + theorem measure_theory.ae_cover.integral_eq_of_tendsto_of_nonneg_ae + theorem measure_theory.ae_cover.integral_tendsto_of_countably_generated + theorem measure_theory.ae_cover.inter_restrict + theorem measure_theory.ae_cover.lintegral_eq_of_tendsto + theorem measure_theory.ae_cover.lintegral_tendsto_of_countably_generated + theorem measure_theory.ae_cover.lintegral_tendsto_of_nat + theorem measure_theory.ae_cover.restrict + theorem measure_theory.ae_cover.supr_lintegral_eq_of_countably_generated + structure measure_theory.ae_cover + theorem measure_theory.ae_cover_Icc + theorem measure_theory.ae_cover_Ici + theorem measure_theory.ae_cover_Ico + theorem measure_theory.ae_cover_Iic + theorem measure_theory.ae_cover_Iio + theorem measure_theory.ae_cover_Ioc + theorem measure_theory.ae_cover_Ioi + theorem measure_theory.ae_cover_Ioo + theorem measure_theory.ae_cover_restrict_of_ae_imp + theorem measure_theory.integrable_of_interval_integral_norm_tendsto + theorem measure_theory.integrable_on_Iic_of_interval_integral_norm_tendsto + theorem measure_theory.integrable_on_Ioi_of_interval_integral_norm_tendsto + theorem measure_theory.interval_integral_tendsto_integral + theorem measure_theory.interval_integral_tendsto_integral_Iic + theorem measure_theory.interval_integral_tendsto_integral_Ioi Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/set_integral.lean 2021-06-18 20:48:47 f2f10cc docs(data/set/enumerate): add module and definition docstrings (#7967) ESTIMATED CHANGES Modified src/data/set/enumerate.lean +/- theorem set.enumerate_eq_none +/- theorem set.enumerate_eq_none_of_sel +/- theorem set.enumerate_inj +/- theorem set.enumerate_mem 2021-06-18 20:48:46 3a0653c feat(data/real/ennreal): add a `algebra ℝ≥0 ℝ≥0∞` instance (#7846) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.smul_def Modified src/data/real/nnreal.lean + theorem nnreal.smul_def 2021-06-18 18:18:49 52dbff0 chore(topology/basic): rename compact_Icc to is_compact_Icc (#7979) Also rename `compact_interval` to `is_compact_interval`. And a bunch of random additions, all minor, as prerequisistes to #7978 ESTIMATED CHANGES Modified archive/100-theorems-list/9_area_of_a_circle.lean Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/normed_space/basic.lean + theorem bounded_iff_forall_norm_le + theorem is_compact.exists_bound_of_continuous_on Modified src/analysis/normed_space/dual.lean + theorem normed_space.eq_iff_forall_dual_eq + theorem normed_space.eq_zero_iff_forall_dual_eq_zero Modified src/analysis/normed_space/hahn_banach.lean + theorem norm'_eq_zero_iff Modified src/data/real/ereal.lean + theorem ereal.coe_to_real + theorem ereal.lt_iff_exists_real_btwn Modified src/data/real/liouville.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/integrable_on.lean + theorem continuous.integrable_on_Icc + theorem continuous.integrable_on_interval - theorem continuous_linear_map.integrable_comp + theorem continuous_on.integrable_on_Icc + theorem continuous_on.integrable_on_interval + theorem measure_theory.integrable_on.continuous_on_mul + theorem measure_theory.integrable_on.mul_continuous_on + theorem measure_theory.integrable_on_singleton_iff Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/l1_space.lean + theorem continuous_linear_map.integrable_comp Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.ae_restrict_iff' + theorem measure_theory.ae_restrict_mem Modified src/topology/algebra/ordered/basic.lean - theorem compact_Icc - theorem compact_interval - theorem compact_pi_Icc + theorem is_compact_Icc + theorem is_compact_interval + theorem is_compact_pi_Icc Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified test/monotonicity.lean 2021-06-18 15:33:01 29e7a8d feat(topology/algebra/ordered, topology/algebra/infinite_sum): bounded monotone sequences converge (variant versions) (#7983) A bounded monotone sequence converges to a value `a`, if and only if `a` is a least upper bound for its range. Mathlib had several variants of this fact previously (phrased in terms of, eg, `csupr`), but not quite this version (phrased in terms of `has_lub`). This version has a couple of advantages: - it applies to more general typeclasses (eg, `linear_order`) where the existence of suprema is not in general known - it applies to algebraic typeclasses (`linear_ordered_add_comm_monoid`, etc) where, since completeness of orders is not a mix-in, it is not possible to simultaneously assume `(conditionally_)complete_linear_order` The latter point makes these lemmas useful when dealing with `tsum`. We get: a nonnegative function `f` satisfies `has_sum f a`, if and only if `a` is a least upper bound for its partial sums. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_le_of_sum_le + theorem has_sum_of_is_lub + theorem has_sum_of_is_lub_of_nonneg + theorem is_lub_has_sum' + theorem is_lub_has_sum + theorem le_has_sum_of_le_sum +/- theorem sum_le_has_sum + theorem tsum_le_of_sum_le' + theorem tsum_le_of_sum_le Modified src/topology/algebra/ordered/basic.lean + theorem is_glb_of_tendsto + theorem is_lub_of_tendsto + theorem monotone.ge_of_tendsto + theorem monotone.le_of_tendsto + theorem tendsto_at_bot_is_glb + theorem tendsto_at_top_is_lub 2021-06-18 13:40:11 7c9a811 feat(analysis/convex/basic): missing lemmas (#7946) - the union of a set/indexed family of convex sets is convex - `open_segment a b` is convex - a set is nonempty iff its convex hull is ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem convex_Inter + theorem convex_hull_nonempty_iff + theorem convex_open_segment + theorem directed.convex_Union + theorem directed_on.convex_sUnion 2021-06-18 01:58:07 e168bf7 chore(scripts): update nolints.txt (#7981) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-17 17:11:00 49bf1fd chore(order/iterate): fix up the namespace (#7977) ESTIMATED CHANGES Modified src/order/iterate.lean - theorem function.commute.id_le_iterate_of_id_le - theorem function.commute.iterate_le_id_of_le_id - theorem function.commute.iterate_le_iterate_of_id_le - theorem function.commute.iterate_le_iterate_of_le_id + theorem function.id_le_iterate_of_id_le + theorem function.iterate_le_id_of_le_id + theorem function.iterate_le_iterate_of_id_le + theorem function.iterate_le_iterate_of_le_id 2021-06-17 17:10:59 dc73d1b docs(data/*/sqrt): add one module docstring and expand the other (#7973) ESTIMATED CHANGES Modified src/data/int/sqrt.lean +/- def int.sqrt Modified src/data/nat/sqrt.lean 2021-06-17 17:10:58 3824a43 docs(data/list/intervals): add module docstring (#7972) ESTIMATED CHANGES Modified src/data/list/intervals.lean 2021-06-17 17:10:57 93d7812 docs(data/int/range): add module docstring (#7971) ESTIMATED CHANGES Modified src/data/int/range.lean 2021-06-17 17:10:56 da1a32c docs(data/int/cast): add module docstring (#7969) ESTIMATED CHANGES Modified src/data/int/cast.lean 2021-06-17 17:10:50 de6d739 docs(data/nat/dist): add module docstring (#7966) ESTIMATED CHANGES Modified src/data/nat/dist.lean 2021-06-17 17:10:49 ce23f37 feat(topology/locally_constant): Adds a few useful constructions (#7954) This PR adds a few useful constructions around locallly constant functions: 1. A locally constant function to `fin 2` associated to a clopen set. 2. Flipping a locally constant function taking values in a function type. 3. Unflipping a finite family of locally constant function. 4. Descending locally constant functions along an injective map. ESTIMATED CHANGES Modified src/topology/locally_constant/basic.lean + theorem is_locally_constant.desc + theorem locally_constant.coe_desc + def locally_constant.desc + def locally_constant.flip + theorem locally_constant.flip_unflip + theorem locally_constant.locally_constant_eq_of_fiber_zero_eq + def locally_constant.of_clopen + theorem locally_constant.of_clopen_fiber_one + theorem locally_constant.of_clopen_fiber_zero + def locally_constant.unflip + theorem locally_constant.unflip_flip 2021-06-17 17:10:48 e9f9f3f docs(data/nat/cast): add module docstring (#7947) ESTIMATED CHANGES Modified src/data/equiv/denumerable.lean Modified src/data/nat/cast.lean 2021-06-17 17:10:47 9784396 refactor(order/preorder_hom): golf and simp lemmas (#7429) The main change here is to adjust `simps` to generate coercion lemmas rather than `.to_fun` for `preorder_hom`, which allows us to auto-generate some simp lemmas. ESTIMATED CHANGES Modified src/algebraic_topology/simplex_category.lean Modified src/order/category/Preorder.lean Modified src/order/omega_complete_partial_order.lean +/- def omega_complete_partial_order.chain.map Modified src/order/preorder_hom.lean - theorem order_embedding.to_preorder_hom_coe +/- theorem preorder_hom.coe_fun_mk - theorem preorder_hom.coe_id - theorem preorder_hom.coe_inj +/- theorem preorder_hom.ext + theorem preorder_hom.to_fun_eq_coe - theorem rel_hom.to_preorder_hom_coe_fn Modified src/topology/omega_complete_partial_order.lean 2021-06-17 11:31:07 cbb8f01 feat(algebra/group/basic): prove `a / 1 = a` and remove `sub_zero` (#7956) Add a proof that, in a group, `a / 1 = a`. As a consequence, `sub_zero` is the `to_additive version of this lemma and I removed it. The name of the lemma is `div_one'`, since the unprimed version is taken by `group_with_zero`. Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60div_one'.60 ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem div_one' - theorem sub_zero 2021-06-17 11:31:06 6578f1c feat(data/setoid/basic): add a computable version of quotient_ker_equiv_of_surjective (#7930) Perhaps more usefully, this also allows definitional control of the inverse mapping ESTIMATED CHANGES Modified src/data/setoid/basic.lean + def setoid.quotient_ker_equiv_of_right_inverse 2021-06-17 08:31:45 1e43208 refactor(ring_theory): use `x ∈ non_zero_divisors` over `x : non_zero_divisors` (#7961) `map_ne_zero_of_mem_non_zero_divisors` and `map_mem_non_zero_divisors` used to take `x : non_zero_divisors A` as an (implicit) argument. This is awkward if you only have `hx : x ∈ non_zero_divisors A`, requiring you to write out `@map_ne_zero_of_mem_non_zero_divisors _ _ _ _ _ _ hf ⟨x, hx⟩`. By making `x ∈ non_zero_divisors A` the explicit argument, we can avoid this annoyance. See e.g. `ring_theory/polynomial/scale_roots.lean` for the improvement. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/non_zero_divisors.lean Modified src/ring_theory/polynomial/scale_roots.lean 2021-06-17 02:48:11 1a6c871 chore(scripts): update nolints.txt (#7965) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-17 00:23:25 dc5d0c1 feat(data/matrix): `has_repr` instances for `fin` vectors and matrices (#7953) This PR provides `has_repr` instances for the types `fin n → α` and `matrix (fin m) (fin n) α`, displaying in the `![...]` matrix notation. This is especially useful if you want to `#eval` a calculation involving matrices. [Based on this Zulip post.](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Matrix.20operations/near/242766110) ESTIMATED CHANGES Modified src/data/matrix/notation.lean 2021-06-17 00:23:24 641a9d3 feat(model_theory/basic): Substructures (#7762) Defines substructures of first-order structures ESTIMATED CHANGES Modified src/model_theory/basic.lean + theorem first_order.language.closed_under.Inf + theorem first_order.language.closed_under.inf + theorem first_order.language.closed_under.inter + def first_order.language.closed_under + theorem first_order.language.embedding.map_const + theorem first_order.language.equiv.map_const + theorem first_order.language.fun_map_eq_coe_const + def first_order.language.hom.eq_locus + theorem first_order.language.hom.eq_of_eq_on_dense + theorem first_order.language.hom.eq_of_eq_on_top + theorem first_order.language.hom.eq_on_closure + theorem first_order.language.hom.map_const + theorem first_order.language.substructure.closed + def first_order.language.substructure.closure + theorem first_order.language.substructure.closure_Union + theorem first_order.language.substructure.closure_empty + theorem first_order.language.substructure.closure_eq + theorem first_order.language.substructure.closure_eq_of_le + theorem first_order.language.substructure.closure_induction + theorem first_order.language.substructure.closure_le + theorem first_order.language.substructure.closure_mono + theorem first_order.language.substructure.closure_union + theorem first_order.language.substructure.closure_univ + theorem first_order.language.substructure.coe_Inf + theorem first_order.language.substructure.coe_copy + theorem first_order.language.substructure.coe_inf + theorem first_order.language.substructure.coe_infi + theorem first_order.language.substructure.coe_top + theorem first_order.language.substructure.const_mem + theorem first_order.language.substructure.copy_eq + theorem first_order.language.substructure.dense_induction + theorem first_order.language.substructure.ext + theorem first_order.language.substructure.mem_Inf + theorem first_order.language.substructure.mem_carrier + theorem first_order.language.substructure.mem_closure + theorem first_order.language.substructure.mem_inf + theorem first_order.language.substructure.mem_infi + theorem first_order.language.substructure.mem_top + def first_order.language.substructure.simps.coe + theorem first_order.language.substructure.subset_closure + structure first_order.language.substructure 2021-06-16 18:44:26 456a6d5 docs(data/option/basic): add module docstring (#7958) ESTIMATED CHANGES Modified src/data/option/basic.lean 2021-06-16 18:44:25 08dfaab docs(data/set/disjointed): add module docstring and some whitespaces (#7957) ESTIMATED CHANGES Modified src/data/set/disjointed.lean +/- def pairwise +/- theorem set.Inter_lt_succ +/- theorem set.Union_disjointed +/- theorem set.Union_disjointed_of_mono +/- theorem set.Union_lt_succ +/- theorem set.disjoint_disjointed' +/- theorem set.disjoint_disjointed +/- def set.disjointed +/- theorem set.disjointed_induct +/- theorem set.disjointed_of_mono +/- theorem set.disjointed_subset +/- theorem set.subset_Union_disjointed 2021-06-16 18:44:24 49aa106 docs(data/*/nat_antidiagonal): add one module docstring and harmonise others (#7919) ESTIMATED CHANGES Modified src/data/finset/nat_antidiagonal.lean Modified src/data/list/nat_antidiagonal.lean Modified src/data/multiset/nat_antidiagonal.lean 2021-06-16 18:44:23 366a449 doc(topology/algebra/ring): add module docs + tidy (#7893) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.quotient.quotient_ring_saturate Modified src/topology/algebra/ring.lean +/- theorem ideal.coe_closure - theorem quotient_ring_saturate 2021-06-16 15:31:34 a564bf1 feat(data/list/cycle): cycles as quotients of lists (#7504) Cycles are common structures, and we define them as a quotient of lists. This is on the route to defining concrete cyclic permutations, and could also be used for encoding properties of cycles in graphs. ESTIMATED CHANGES Added src/data/list/cycle.lean + theorem cycle.coe_eq_coe + def cycle.length + theorem cycle.length_coe + theorem cycle.length_nontrivial + theorem cycle.length_reverse + theorem cycle.length_subsingleton_iff + def cycle.mem + theorem cycle.mem_coe_iff + theorem cycle.mem_reverse_iff + theorem cycle.mk'_eq_coe + theorem cycle.mk_eq_coe + def cycle.next + theorem cycle.next_mem + theorem cycle.next_reverse_eq_prev + def cycle.nodup + theorem cycle.nodup_coe_iff + theorem cycle.nodup_reverse_iff + def cycle.nontrivial + theorem cycle.nontrivial_reverse_iff + def cycle.prev + theorem cycle.prev_mem + theorem cycle.prev_reverse_eq_next + def cycle.reverse + theorem cycle.reverse_coe + theorem cycle.reverse_reverse + theorem cycle.subsingleton.congr + theorem cycle.subsingleton.nodup + def cycle.subsingleton + theorem cycle.subsingleton_reverse_iff + def cycle.to_finset + def cycle.to_multiset + def cycle + theorem list.is_rotated_next_eq + theorem list.is_rotated_prev_eq + theorem list.mem_of_next_or_ne + def list.next + theorem list.next_cons_concat + theorem list.next_cons_cons_eq' + theorem list.next_cons_cons_eq + theorem list.next_last_cons + theorem list.next_mem + theorem list.next_ne_head_ne_last + theorem list.next_nth_le + def list.next_or + theorem list.next_or_concat + theorem list.next_or_cons_of_ne + theorem list.next_or_eq_next_or_of_mem_of_ne + theorem list.next_or_mem + theorem list.next_or_nil + theorem list.next_or_self_cons_cons + theorem list.next_or_singleton + theorem list.next_prev + theorem list.next_reverse_eq_prev + theorem list.next_singleton + theorem list.pmap_next_eq_rotate_one + theorem list.pmap_prev_eq_rotate_length_sub_one + def list.prev + theorem list.prev_cons_cons_eq' + theorem list.prev_cons_cons_eq + theorem list.prev_cons_cons_of_ne' + theorem list.prev_cons_cons_of_ne + theorem list.prev_last_cons' + theorem list.prev_last_cons + theorem list.prev_mem + theorem list.prev_ne_cons_cons + theorem list.prev_next + theorem list.prev_nth_le + theorem list.prev_reverse_eq_next + theorem list.prev_singleton Modified src/data/list/rotate.lean + theorem list.nth_le_rotate' + theorem list.rotate_reverse 2021-06-16 12:25:45 0490b43 refactor(geometry/manifold/instances/circle): split out (topological) group facts (#7951) Move the group and topological group facts about the unit circle in `ℂ` from `geometry.manifold.instances.circle` to a new file `analysis.complex.circle`. Delete `geometry.manifold.instances.circle`, moving the remaining material to a section in `geometry.manifold.instances.sphere`. ESTIMATED CHANGES Renamed src/geometry/manifold/instances/circle.lean to src/analysis/complex/circle.lean - theorem times_cont_mdiff_exp_map_circle Modified src/analysis/fourier.lean Modified src/geometry/manifold/instances/sphere.lean + theorem times_cont_mdiff_exp_map_circle 2021-06-16 09:58:27 95a116a chore(measure_theory/lp_space): simplify tendsto_Lp_iff_tendsto_\McLp by using tendsto_iff_dist_tendsto_zero (#7942) ESTIMATED CHANGES Modified src/measure_theory/lp_space.lean + theorem measure_theory.Lp.cauchy_seq_Lp_iff_cauchy_seq_ℒp + theorem measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp' + theorem measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp +/- theorem measure_theory.Lp.tendsto_Lp_of_tendsto_ℒp Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_to_real_iff 2021-06-16 06:02:08 690ab17 refactor(algebra/algebra/basic): replace `algebra.comap` with `restrict_scalars` (#7949) The constructions `algebra.comap` and `restrict_scalars` are essentially the same thing -- a type synonym to allow one to switch to a smaller scalar field. Previously `restrict_scalars` was for modules and `algebra.comap` for algebras; I am unifying them so that `restrict_scalars` works for both. Declaration changes: - `algebra.comap`, `algebra.comap.inhabited`, `is_scalar_tower.comap` Use the pre-existing (for modules) `restrict_scalars`, `restrict_scalars.inhabited`, `restrict_scalars.is_scalar_tower` - `algebra.comap.X` for `X` in `semiring`, `ring`, `comm_semiring`, `comm_ring`, `algebra` Replaced with `restrict_scalars.X` - `algebra.comap.algebra'` Replaced with `restrict_scalars.algebra_orig` (to be consistent with `restrict_scalars.module_orig`) - `algebra.comap.to_comap` and `algebra.comap.of_comap` Combined into an `alg_equiv` and renamed `restrict_scalars.alg_equiv` (to be consistent with `restrict_scalars.linear_equiv`) - `subalgebra.comap` Replaced with a generalized version, `subalgebra.restrict_scalars`, which (to be consistent with `submodule.restrict_scalars`) applies to an `is_scalar_tower`, not just to the type synonym Deleted altogether: - `algebra.to_comap`, `algebra.to_comap_apply` This construction is now `(algebra.of_id S (restrict_scalars R S A)).restrict_scalars R` It was only used once in mathlib, where I have replaced it by its definition - `alg_hom.comap`, `alg_equiv.comap` These are not currently used in mathlib but if needed one can instead use `alg_hom.restrict_scalars` and `alg_equiv.restrict_scalars` - `is_scalar_tower.algebra_comap_eq` The proof is now `rfl` and it was never used in mathlib. It would then be possible, in a follow-up PR, to rename `subalgebra.comap'` to `subalgebra.comap`, although I have no immediate plans to do this. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - def alg_equiv.comap - def alg_hom.comap - def algebra.comap.of_comap - def algebra.comap.to_comap - def algebra.comap - def algebra.to_comap - theorem algebra.to_comap_apply + def restrict_scalars.alg_equiv +/- def restrict_scalars.linear_equiv +/- theorem restrict_scalars.linear_equiv_map_smul +/- def restrict_scalars +/- theorem restrict_scalars_smul_def Modified src/algebra/algebra/subalgebra.lean - def subalgebra.comap Modified src/algebra/algebra/tower.lean - theorem is_scalar_tower.algebra_comap_eq + def subalgebra.restrict_scalars Modified src/field_theory/splitting_field.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/noetherian.lean 2021-06-16 04:52:02 b865892 feat(algebraic_geometry/Spec): Make Spec a functor. (#7790) ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean +/- def algebraic_geometry.Scheme.Spec + def algebraic_geometry.Scheme.Spec_map + theorem algebraic_geometry.Scheme.Spec_map_comp + theorem algebraic_geometry.Scheme.Spec_map_id + def algebraic_geometry.Scheme.Spec_obj + theorem algebraic_geometry.Scheme.Spec_obj_to_LocallyRingedSpace Modified src/algebraic_geometry/Spec.lean - def algebraic_geometry.Spec.LocallyRingedSpace + def algebraic_geometry.Spec.LocallyRingedSpace_map + theorem algebraic_geometry.Spec.LocallyRingedSpace_map_comp + theorem algebraic_geometry.Spec.LocallyRingedSpace_map_id + def algebraic_geometry.Spec.LocallyRingedSpace_obj - def algebraic_geometry.Spec.PresheafedSpace - def algebraic_geometry.Spec.SheafedSpace + def algebraic_geometry.Spec.SheafedSpace_map + theorem algebraic_geometry.Spec.SheafedSpace_map_comp + theorem algebraic_geometry.Spec.SheafedSpace_map_id + def algebraic_geometry.Spec.SheafedSpace_obj + def algebraic_geometry.Spec.Top_map + theorem algebraic_geometry.Spec.Top_map_comp + theorem algebraic_geometry.Spec.Top_map_id + def algebraic_geometry.Spec.Top_obj + def algebraic_geometry.Spec.to_LocallyRingedSpace + def algebraic_geometry.Spec.to_PresheafedSpace + theorem algebraic_geometry.Spec.to_PresheafedSpace_map + theorem algebraic_geometry.Spec.to_PresheafedSpace_map_op + theorem algebraic_geometry.Spec.to_PresheafedSpace_obj + theorem algebraic_geometry.Spec.to_PresheafedSpace_obj_op + def algebraic_geometry.Spec.to_SheafedSpace + def algebraic_geometry.Spec.to_Top + theorem algebraic_geometry.local_ring_hom_comp_stalk_iso + theorem algebraic_geometry.stalk_map_to_stalk 2021-06-16 02:11:41 ba3a4b7 chore(scripts): update nolints.txt (#7955) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-15 23:35:55 30314c2 fix(measure_theory/interval_integral): generalize some lemmas (#7944) The proofs of some lemmas about the integral of a function `f : ℝ → ℝ` also hold for `f : α → ℝ` (with `α` under the usual conditions). ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean +/- theorem integral_sin_pow_antimono Modified src/measure_theory/interval_integral.lean +/- theorem interval_integral.integral_eq_zero_iff_of_le_of_nonneg_ae +/- theorem interval_integral.integral_eq_zero_iff_of_nonneg_ae +/- theorem interval_integral.integral_mono_ae_restrict +/- theorem interval_integral.integral_mono_on +/- theorem interval_integral.integral_nonneg +/- theorem interval_integral.integral_nonneg_of_ae +/- theorem interval_integral.integral_nonneg_of_ae_restrict +/- theorem interval_integral.integral_pos_iff_support_of_nonneg_ae' +/- theorem interval_integral.integral_pos_iff_support_of_nonneg_ae 2021-06-15 23:35:54 45619c7 feat(order/iterate): id_le lemmas (#7943) ESTIMATED CHANGES Modified src/order/iterate.lean + theorem function.commute.id_le_iterate_of_id_le + theorem function.commute.iterate_le_id_of_le_id + theorem function.commute.iterate_le_iterate_of_id_le + theorem function.commute.iterate_le_iterate_of_le_id 2021-06-15 23:35:52 e5c97e1 feat(analysis/convex/basic): a linear map is convex and concave (#7934) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem linear_map.concave_on + theorem linear_map.convex_on 2021-06-15 19:56:41 f1f4c23 feat(analysis/convex/basic): convex_on lemmas (#7933) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem concave_on.le_on_segment' + theorem concave_on.le_right_of_left_le' + theorem concave_on.le_right_of_left_le + theorem concave_on.left_le_of_le_right' + theorem concave_on.left_le_of_le_right + theorem convex_on.le_left_of_right_le' + theorem convex_on.le_left_of_right_le +/- theorem convex_on.le_on_segment' +/- theorem convex_on.le_on_segment + theorem convex_on.le_right_of_left_le' + theorem convex_on.le_right_of_left_le 2021-06-15 19:56:40 5d03dcd feat(analysis/normed_space/dual): add eq_zero_of_forall_dual_eq_zero (#7929) The variable `𝕜` is made explicit in `norm_le_dual_bound` because lean can otherwise not guess it in the proof of `eq_zero_of_forall_dual_eq_zero`. ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean + theorem normed_space.eq_zero_of_forall_dual_eq_zero 2021-06-15 19:56:39 e5ff5fb feat(data/finsupp/basic): equiv_congr_left (#7755) As [requested on Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Group.20cohomology/near/240737546). ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean Modified src/data/finsupp/basic.lean + def finsupp.equiv_congr_left + theorem finsupp.equiv_congr_left_apply + theorem finsupp.equiv_congr_left_symm + def finsupp.equiv_map_domain + theorem finsupp.equiv_map_domain_apply + theorem finsupp.equiv_map_domain_eq_map_domain + theorem finsupp.equiv_map_domain_refl' + theorem finsupp.equiv_map_domain_refl + theorem finsupp.equiv_map_domain_single + theorem finsupp.equiv_map_domain_symm_apply + theorem finsupp.equiv_map_domain_trans' + theorem finsupp.equiv_map_domain_trans + theorem finsupp.equiv_map_domain_zero Modified src/linear_algebra/finsupp.lean 2021-06-15 14:54:47 2f1f34a feat(measure_theory/lp_space): add `mem_Lp.mono_measure` (#7927) also add monotonicity lemmas wrt the measure for `snorm'`, `snorm_ess_sup` and `snorm`. ESTIMATED CHANGES Modified src/measure_theory/lp_space.lean + theorem measure_theory.mem_ℒp.mono_measure + theorem measure_theory.mem_ℒp.restrict + theorem measure_theory.snorm'_mono_measure + theorem measure_theory.snorm_ess_sup_mono_measure + theorem measure_theory.snorm_mono_measure 2021-06-15 14:54:46 5f8cc8e docs(undergrad): mark convex, convex hull, and extreme points as done (#7924) ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-06-15 14:54:44 e4ceee6 feat(group_theory/order_of_element): Raising to a coprime power is a bijection (#7923) If `gcd(|G|,k)=1` then the `k`th power map is a bijection ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + def pow_coprime + theorem pow_coprime_inv + theorem pow_coprime_one 2021-06-15 14:54:41 f4991b9 feat(measure_theory/bochner_integration): properties of simple functions (mem_Lp, integrable, fin_meas_supp) (#7918) ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.simple_func.exists_forall_norm_le + theorem measure_theory.simple_func.integrable_iff +/- theorem measure_theory.simple_func.integrable_iff_fin_meas_supp + theorem measure_theory.simple_func.integrable_of_finite_measure + theorem measure_theory.simple_func.measure_preimage_lt_top_of_integrable + theorem measure_theory.simple_func.measure_preimage_lt_top_of_mem_ℒp + theorem measure_theory.simple_func.mem_ℒp_iff + theorem measure_theory.simple_func.mem_ℒp_iff_fin_meas_supp + theorem measure_theory.simple_func.mem_ℒp_iff_integrable + theorem measure_theory.simple_func.mem_ℒp_of_finite_measure + theorem measure_theory.simple_func.mem_ℒp_of_finite_measure_preimage + theorem measure_theory.simple_func.mem_ℒp_top + theorem measure_theory.simple_func.mem_ℒp_zero Modified src/measure_theory/lp_space.lean + theorem measure_theory.mem_ℒp_top_of_bound + theorem measure_theory.snorm_ess_sup_le_of_ae_bound + theorem measure_theory.snorm_ess_sup_lt_top_of_ae_bound 2021-06-15 14:54:40 b19c491 chore(order/lattice): rename le_sup_left_of_le (#7856) rename `le_sup_left_of_le` to `le_sup_of_le_left`, and variants ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/algebra/lie/solvable.lean Modified src/algebra/order_functions.lean - theorem le_max_left_of_le + theorem le_max_of_le_left + theorem le_max_of_le_right - theorem le_max_right_of_le - theorem min_le_left_of_le + theorem min_le_of_left_le + theorem min_le_of_right_le - theorem min_le_right_of_le Modified src/computability/partrec_code.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/set/intervals/basic.lean Modified src/linear_algebra/finsupp.lean Modified src/measure_theory/interval_integral.lean Modified src/number_theory/padics/padic_numbers.lean Modified src/order/bounds.lean Modified src/order/complete_lattice.lean Modified src/order/filter/basic.lean Modified src/order/lattice.lean - theorem inf_le_left_of_le + theorem inf_le_of_left_le + theorem inf_le_of_right_le - theorem inf_le_right_of_le - theorem le_sup_left_of_le + theorem le_sup_of_le_left + theorem le_sup_of_le_right - theorem le_sup_right_of_le Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/perfection.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/subset_properties.lean 2021-06-15 14:54:39 8e28104 feat(algebra/algebra/basic): define `restrict_scalars.linear_equiv` (#7807) Also updating some doc-strings. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def restrict_scalars.linear_equiv + theorem restrict_scalars.linear_equiv_map_smul 2021-06-15 14:54:38 a16650c feat(geometry/manifold/algebra/smooth_functions): add `coe_fn_(linear_map|ring_hom|alg_hom)` (#7749) Changed names to be consistent with the topology library and proven that some coercions are morphisms. ESTIMATED CHANGES Modified src/geometry/manifold/algebra/smooth_functions.lean +/- def smooth_map.C +/- theorem smooth_map.coe_div + def smooth_map.coe_fn_alg_hom + def smooth_map.coe_fn_linear_map + def smooth_map.coe_fn_monoid_hom + def smooth_map.coe_fn_ring_hom +/- theorem smooth_map.coe_inv +/- theorem smooth_map.coe_smul +/- theorem smooth_map.smul_comp' +/- theorem smooth_map.smul_comp 2021-06-15 06:03:53 bf83c30 chore(algebra/{ordered_monoid_lemmas, ordered_monoid}): move two sections close together (#7921) This PR aims at shortening the diff between `master` and PR #7645 of the order refactor. I moved the `mono` section of `algebra/ordered_monoid_lemmas` to the end of the file and appended the `strict_mono` section of `algebra/ordered_monoid` after that. Note: the hypotheses are not optimal, but, with the current `instances` in this version, I did not know how to improve this. It will get better by the time PR #7645 is merged. In fact, the next PR in the sequence, #7876, already removes the unnecessary assumptions. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean - theorem monotone.mul_strict_mono' - theorem strict_mono.const_mul' - theorem strict_mono.mul_const' - theorem strict_mono.mul_monotone' Modified src/algebra/ordered_monoid_lemmas.lean + theorem monotone.mul_strict_mono' + theorem strict_mono.const_mul' + theorem strict_mono.mul_const' + theorem strict_mono.mul_monotone' 2021-06-15 06:03:52 d74a898 fix(meta/expr): fix mreplace (#7912) Previously the function would not recurse into macros (like `have`). Also add warning to docstring. ESTIMATED CHANGES Modified src/meta/expr.lean 2021-06-15 03:22:09 d960b2d chore(scripts): update nolints.txt (#7939) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-15 03:22:08 81f29f9 chore(topology/metric_space): cleanup Gromov-Hausdorff files (#7936) Rename greek type variables to meaningful uppercase letters. Lint the files. Add a header where needed. Add spaces after forall or exist to conform to current style guide. Absolutely no new mathematical content. ESTIMATED CHANGES Modified src/topology/metric_space/gluing.lean +/- def metric.glue_dist +/- theorem metric.glue_dist_glued_points +/- def metric.glue_metric_approx +/- def metric.glue_premetric +/- def metric.inductive_limit +/- def metric.inductive_limit_dist +/- theorem metric.inductive_limit_dist_eq_dist +/- def metric.inductive_premetric +/- theorem metric.isometry_on_inl +/- theorem metric.isometry_on_inr +/- def metric.metric_space_sum +/- def metric.sum.dist +/- theorem metric.sum.dist_eq +/- theorem metric.sum.dist_eq_glue_dist +/- theorem metric.sum.one_dist_le' +/- theorem metric.sum.one_dist_le +/- def metric.to_glue_l +/- def metric.to_glue_r +/- def metric.to_inductive_limit +/- theorem metric.to_inductive_limit_commute +/- theorem metric.to_inductive_limit_isometry Modified src/topology/metric_space/gromov_hausdorff.lean +/- def Gromov_Hausdorff.GH_dist +/- theorem Gromov_Hausdorff.GH_dist_eq_Hausdorff_dist +/- theorem Gromov_Hausdorff.GH_dist_le_Hausdorff_dist +/- theorem Gromov_Hausdorff.GH_dist_le_nonempty_compacts_dist +/- theorem Gromov_Hausdorff.GH_dist_le_of_approx_subsets +/- theorem Gromov_Hausdorff.Hausdorff_dist_optimal +/- theorem Gromov_Hausdorff.eq_to_GH_space_iff +/- theorem Gromov_Hausdorff.to_GH_space_eq_to_GH_space_iff_isometric Modified src/topology/metric_space/gromov_hausdorff_realized.lean +/- def Gromov_Hausdorff.HD +/- theorem Gromov_Hausdorff.HD_below_aux1 +/- theorem Gromov_Hausdorff.HD_below_aux2 +/- theorem Gromov_Hausdorff.Hausdorff_dist_optimal_le_HD +/- def Gromov_Hausdorff.candidates +/- def Gromov_Hausdorff.candidates_b_dist +/- theorem Gromov_Hausdorff.candidates_b_dist_mem_candidates_b +/- def Gromov_Hausdorff.candidates_b_of_candidates +/- theorem Gromov_Hausdorff.candidates_b_of_candidates_mem +/- theorem Gromov_Hausdorff.isometry_optimal_GH_injl +/- theorem Gromov_Hausdorff.isometry_optimal_GH_injr +/- def Gromov_Hausdorff.optimal_GH_injl +/- def Gromov_Hausdorff.optimal_GH_injr +/- def Gromov_Hausdorff.premetric_optimal_GH_dist 2021-06-15 03:22:07 a83f2c2 feat(group_theory/order_of_element): Power of subset is subgroup (#7915) If `S` is a nonempty subset of `G`, then `S ^ |G|` is a subgroup of `G`. ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + def pow_card_subgroup + def subgroup_of_idempotent + def submonoid_of_idempotent Modified src/group_theory/specific_groups/cyclic.lean 2021-06-15 03:22:06 ba25bb8 feat(measure_theory): define `measure.trim`, restriction of a measure to a sub-sigma algebra (#7906) It is common to see a measure `μ` on a measurable space structure `m0` as being also a measure on any `m ≤ m0`. Since measures in mathlib have to be trimmed to the measurable space, `μ` itself is not a measure on `m`. For `hm : m ≤ m0`, we define the measure `μ.trim hm` on `m`. We add lemmas relating a measure and its trimmed version, mostly about integrals of `m`-measurable functions. ESTIMATED CHANGES Modified src/measure_theory/arithmetic.lean + theorem measurable_set_eq_fun Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.ae_eq_trim_iff + theorem measure_theory.ae_eq_trim_of_measurable + theorem measure_theory.integral_simple_func_larger_space + theorem measure_theory.integral_trim + theorem measure_theory.integral_trim_ae + theorem measure_theory.integral_trim_simple_func + theorem measure_theory.simple_func.coe_to_larger_space_eq + theorem measure_theory.simple_func.integral_eq_sum + def measure_theory.simple_func.to_larger_space Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_trim + theorem measure_theory.lintegral_trim_ae Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable.trim + theorem measure_theory.integrable_of_integrable_trim Modified src/measure_theory/lp_space.lean + theorem measure_theory.ess_sup_trim + theorem measure_theory.limsup_trim + theorem measure_theory.snorm'_trim + theorem measure_theory.snorm_ess_sup_trim + theorem measure_theory.snorm_trim Modified src/measure_theory/measure_space.lean + theorem ae_measurable_of_ae_measurable_trim + theorem measure_theory.ae_eq_of_ae_eq_trim + theorem measure_theory.le_trim + def measure_theory.measure.trim + theorem measure_theory.measure_eq_zero_of_trim_eq_zero + theorem measure_theory.measure_trim_to_measurable_eq_zero + theorem measure_theory.outer_measure.to_measure_zero + theorem measure_theory.restrict_trim + theorem measure_theory.to_outer_measure_trim_eq_trim_to_outer_measure + theorem measure_theory.trim_eq_self + theorem measure_theory.trim_measurable_set_eq + theorem measure_theory.zero_trim Modified src/measure_theory/set_integral.lean + theorem measure_theory.set_integral_trim 2021-06-14 21:50:17 8377a1f feat(measure_theory/lp_space): add snorm_le_snorm_mul_rpow_measure_univ (#7926) There were already versions of this lemma for `snorm'` and `snorm_ess_sup`. The new lemma collates these into a statement about `snorm`. ESTIMATED CHANGES Modified src/measure_theory/lp_space.lean + theorem measure_theory.snorm_le_snorm_mul_rpow_measure_univ 2021-06-14 21:50:16 e041dbe chore(algebra/covariant_and_contravariant): fix typos in module doc-strings (#7925) This PR changes slightly the doc-strings to make the autogenerated documentation more consistent. I also removed some unstylish double spaces. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean 2021-06-14 21:50:15 4a8ce41 feat(analysis/special_functions/trigonometric): facts about periodic trigonometric functions (#7841) I use the periodicity API that I added in #7572 to write lemmas about sine (real and complex), cosine (real and complex), tangent (real and complex), and the exponential function (complex only). ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem complex.cos_add_int_mul_two_pi + theorem complex.cos_add_nat_mul_two_pi + theorem complex.cos_antiperiodic + theorem complex.cos_int_mul_two_pi_sub + theorem complex.cos_int_mul_two_pi_sub_pi + theorem complex.cos_nat_mul_two_pi_add_pi + theorem complex.cos_nat_mul_two_pi_sub + theorem complex.cos_nat_mul_two_pi_sub_pi + theorem complex.cos_periodic + theorem complex.cos_sub_int_mul_two_pi + theorem complex.cos_sub_nat_mul_two_pi + theorem complex.cos_sub_pi + theorem complex.cos_sub_two_pi + theorem complex.cos_two_pi_sub + theorem complex.exp_antiperiodic + theorem complex.exp_int_mul_two_pi_mul_I + theorem complex.exp_mul_I_antiperiodic + theorem complex.exp_mul_I_periodic + theorem complex.exp_nat_mul_two_pi_mul_I + theorem complex.exp_periodic + theorem complex.exp_two_pi_mul_I + theorem complex.sin_add_int_mul_two_pi + theorem complex.sin_add_nat_mul_two_pi + theorem complex.sin_antiperiodic + theorem complex.sin_int_mul_two_pi_sub + theorem complex.sin_nat_mul_two_pi_sub + theorem complex.sin_periodic + theorem complex.sin_sub_int_mul_two_pi + theorem complex.sin_sub_nat_mul_two_pi + theorem complex.sin_sub_pi + theorem complex.sin_sub_two_pi + theorem complex.sin_two_pi_sub + theorem complex.tan_add_int_mul_pi + theorem complex.tan_add_nat_mul_pi + theorem complex.tan_add_pi + theorem complex.tan_int_mul_pi_sub + theorem complex.tan_nat_mul_pi + theorem complex.tan_nat_mul_pi_sub + theorem complex.tan_periodic + theorem complex.tan_pi_sub + theorem complex.tan_sub_int_mul_pi + theorem complex.tan_sub_nat_mul_pi + theorem complex.tan_sub_pi + theorem real.cos_antiperiodic + theorem real.cos_int_mul_two_pi_sub + theorem real.cos_nat_mul_two_pi_sub + theorem real.cos_periodic + theorem real.cos_two_pi_sub + theorem real.sin_antiperiodic + theorem real.sin_int_mul_two_pi_sub + theorem real.sin_nat_mul_two_pi_sub + theorem real.sin_periodic + theorem real.sin_sub_pi + theorem real.sin_two_pi_sub + theorem real.tan_add_int_mul_pi + theorem real.tan_add_nat_mul_pi + theorem real.tan_add_pi + theorem real.tan_int_mul_pi_sub + theorem real.tan_nat_mul_pi + theorem real.tan_nat_mul_pi_sub + theorem real.tan_periodic + theorem real.tan_pi_sub + theorem real.tan_sub_int_mul_pi + theorem real.tan_sub_nat_mul_pi + theorem real.tan_sub_pi 2021-06-14 21:50:14 fed7cf0 fix(tactic/induction): fix multiple cases'/induction' bugs (#7717) * Fix generalisation in the presence of frozen local instances. Any time we revert a potentially frozen hypothesis, we now unfreeze local hypotheses during the operation. This makes sure that generalisation works uniformly whether or not any local instances are frozen. * Treat local defs as fixed during auto-generalisation induction' gets confused if we generalise over local definitions since they turn into lets when reverted. Ideally, we would handle local defs transparently, but that would require a lot of new code. So instead, we at least stop auto-generalisation from generalising them (and their dependencies). * Handle infinitely branching types induction' and cases' previously did not acknowledge the existence of infinitely branching types at all, leading to various internal errors. New test cases for all these bugs, due to Patrick Massot, were added to the test suite. ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/induction.lean Modified test/induction.lean + inductive inf_tree.all + inductive inf_tree + def topological_space_tests.generate_from + inductive topological_space_tests.generated_filter + inductive topological_space_tests.generated_open + def topological_space_tests.neighbourhood 2021-06-14 21:50:13 f781c47 feat(linear_algebra/determinant): specialize `linear_equiv.is_unit_det` to automorphisms (#7667) `linear_equiv.is_unit_det` is defined for all equivs between equal-dimensional spaces, using `det (linear_map.to_matrix _ _ _)`, but I needed this result for `linear_map.det _` (which only exists between the exact same space). So I added the specialization `linear_equiv.is_unit_det'`. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem linear_equiv.is_unit_det' + theorem linear_map.det_cases 2021-06-14 21:50:12 615af75 feat(measure_theory/interval_integral): `integral_deriv_comp_mul_deriv` (#7141) `∫ x in a..b, (g ∘ f) x * f' x`, where `f'` is derivative of `f` and `g` is the derivative of some function (the latter qualification allowing us to compute the integral directly by FTC-2) ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_deriv_comp_mul_deriv' + theorem interval_integral.integral_deriv_comp_mul_deriv +/- theorem interval_integral.integral_deriv_mul_eq_sub Modified test/integration.lean 2021-06-14 12:40:22 386962c feat(algebra/char_zero): `neg_eq_self_iff` (#7916) `-a = a ↔ a = 0` and `a = -a ↔ a = 0`. ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem eq_neg_self_iff + theorem neg_eq_self_iff 2021-06-14 07:23:15 461b444 docs(data/rat/denumerable): add module docstring (#7920) ESTIMATED CHANGES Modified src/data/rat/denumerable.lean 2021-06-14 07:23:14 a853a6a feat(analysis/normed_space): nnreal.coe_nat_abs (#7911) from LTE ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnreal.coe_nat_abs 2021-06-14 06:07:37 6aed9a7 feat(analysis/convex): add dual cone (#7738) Add definition of the dual cone of a set in a real inner product space ESTIMATED CHANGES Modified src/analysis/convex/cone.lean + theorem inner_dual_cone_empty + theorem inner_dual_cone_le_inner_dual_cone + theorem mem_inner_dual_cone + theorem pointed_inner_dual_cone 2021-06-14 03:56:10 fec6c8a chore(scripts): update nolints.txt (#7922) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-13 22:32:12 3004513 feat(measure_theory/ess_sup): monotonicity of ess_sup/ess_inf w.r.t. the measure (#7917) ESTIMATED CHANGES Modified src/measure_theory/ess_sup.lean +/- theorem ennreal.ess_sup_const_mul +/- theorem ennreal.ess_sup_eq_zero_iff + theorem ess_inf_antimono_measure + theorem ess_sup_le_of_ae_le + theorem ess_sup_mono_measure + theorem le_ess_inf_of_ae_le Modified src/order/liminf_limsup.lean + theorem filter.liminf_le_liminf_of_le + theorem filter.limsup_le_limsup_of_le 2021-06-13 22:32:11 4fe7781 chore(algebra/lie/basic + classical): golf some proofs (#7903) Another PR with some golfing, to get acquainted with the files! Oliver, I really like how you set this up! Also, feel free to say that you do not like the golfing: there is a subtle tension between proving stuff fast and making it accessible! ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Modified src/algebra/lie/cartan_subalgebra.lean Modified src/algebra/lie/classical.lean 2021-06-13 22:32:10 b324488 docs(set_theory/schroeder_bernstein): add module docstring (#7900) ESTIMATED CHANGES Modified src/set_theory/schroeder_bernstein.lean 2021-06-13 22:32:09 e971eae docs(data/nat/totient): add module docstring (#7899) ESTIMATED CHANGES Modified src/data/nat/totient.lean 2021-06-13 22:32:08 a359bd9 chore(measure_theory): measurability statements for coercions, coherent naming (#7854) Also add a few lemmas on measure theory ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem max_zero_sub_max_neg_zero_eq_self Modified src/analysis/mean_inequalities.lean Modified src/analysis/special_functions/pow.lean Modified src/data/real/nnreal.lean Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_eq_integral_pos_part_sub_integral_neg_part Modified src/measure_theory/borel_space.lean + theorem ae_measurable.coe_ereal_ennreal + theorem ae_measurable.coe_nnreal_ennreal + theorem ae_measurable.coe_nnreal_real + theorem ae_measurable.coe_real_ereal - theorem ae_measurable.ennreal_coe + theorem ae_measurable.ennreal_to_nnreal + theorem ae_measurable.ennreal_to_real + theorem ae_measurable.ereal_to_real - theorem ae_measurable.nnreal_coe - theorem ae_measurable.to_real - theorem ennreal.measurable_coe + theorem ereal.measurable_of_measurable_real + theorem lower_semicontinuous.measurable + theorem measurable.coe_ereal_ennreal + theorem measurable.coe_nnreal_ennreal + theorem measurable.coe_nnreal_real + theorem measurable.coe_real_ereal - theorem measurable.ennreal_coe + theorem measurable.ennreal_to_nnreal + theorem measurable.ennreal_to_real + theorem measurable.ereal_to_real - theorem measurable.nnreal_coe - theorem measurable.to_nnreal - theorem measurable.to_real + theorem measurable_coe_ennreal_ereal + theorem measurable_coe_nnreal_ennreal + theorem measurable_coe_nnreal_ennreal_iff + theorem measurable_coe_nnreal_real + theorem measurable_coe_real_ereal - theorem measurable_ennreal_coe_iff + def measurable_equiv.ereal_equiv_real + theorem measurable_ereal_to_real + theorem measurable_real_to_nnreal - theorem nnreal.measurable_coe + theorem upper_semicontinuous.measurable Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable.real_to_nnreal Modified src/measure_theory/measurable_space.lean + theorem measurable_of_fintype + theorem measurable_of_measurable_on_compl_finite Modified src/measure_theory/prod.lean Modified src/topology/metric_space/basic.lean + theorem coe_nnreal_ennreal_nndist - theorem ennreal_coe_nndist 2021-06-13 17:23:56 5c11458 chore(analysis/normed_space/normed_group_hom): golf proof of normed_group_hom.bounded (#7896) ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean 2021-06-13 17:23:55 2f40f35 feat(measure_theory): continuity of primitives (#7864) From the sphere eversion project This proves some continuity of interval integrals with respect to parameters and continuity of primitives of measurable functions. The statements are a bit abstract, but they allow to have: ```lean example {f : ℝ → E} (h_int : integrable f) (a : ℝ) : continuous (λ b, ∫ x in a .. b, f x ∂ volume) := h_int.continuous_primitive a ``` under the usual assumptions on `E`: `normed_group E`, `second_countable_topology E`, `normed_space ℝ E` `complete_space E`, `measurable_space E`, `borel_space E`, say `E = ℝ` for instance. Of course global integrability is not needed, assuming integrability on all finite length intervals is enough: ```lean example {f : ℝ → E} (h_int : ∀ a b : ℝ, interval_integrable f volume a b) (a : ℝ) : continuous (λ b, ∫ x in a .. b, f x ∂ volume) := continuous_primitive h_int a ``` ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Iic_inter_Ioc_of_le Modified src/data/set/intervals/unordered_interval.lean + theorem set.forall_interval_oc_iff + def set.interval_oc + theorem set.interval_oc_of_le + theorem set.interval_oc_of_lt Modified src/measure_theory/interval_integral.lean + theorem ae_interval_oc_iff' + theorem ae_interval_oc_iff + theorem ae_measurable_interval_oc_iff + theorem interval_integrable.norm + theorem interval_integral.continuous_at_of_dominated_interval + theorem interval_integral.continuous_of_dominated_interval + theorem interval_integral.continuous_on_primitive'' + theorem interval_integral.continuous_on_primitive' + theorem interval_integral.continuous_on_primitive + theorem interval_integral.continuous_primitive + theorem interval_integral.continuous_within_at_of_dominated_interval + theorem interval_integral.continuous_within_at_primitive + theorem interval_integral.integral_Icc_eq_integral_Ioc + theorem interval_integral.integral_congr_ae' + theorem interval_integral.integral_congr_ae + theorem interval_integral.integral_indicator + theorem interval_integral.integral_zero_ae + theorem measure_theory.integrable.continuous_primitive Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.restrict_singleton' + theorem measure_theory.measure.restrict_zero_set 2021-06-13 11:45:04 6d2a051 feat(algebra/covariant_and_contravariant): API for covariant_and_contravariant (#7889) This PR introduces more API for `covariant` and `contravariant` stuff . Besides the API, I have not actually made further use of the typeclasses or of the API. This happens in subsequent PRs. This is a step towards PR #7645. ESTIMATED CHANGES Modified src/algebra/covariant_and_contravariant.lean + theorem act_rel_act_of_rel + theorem act_rel_act_of_rel_of_rel + theorem act_rel_of_act_rel_of_rel_act_rel + theorem act_rel_of_rel_of_act_rel +/- def contravariant + theorem contravariant_flip_mul_iff + theorem contravariant_lt_of_contravariant_le + theorem covariant_flip_mul_iff + theorem covariant_le_iff_contravariant_lt + theorem covariant_le_of_covariant_lt + theorem covariant_lt_iff_contravariant_le + theorem covconv + theorem group.covariant_iff_contravariant + theorem rel_act_of_act_rel_act_of_rel_act + theorem rel_act_of_rel_of_rel_act + theorem rel_iff_cov + theorem rel_of_act_rel_act Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean Modified src/algebra/ordered_monoid_lemmas.lean 2021-06-13 06:04:53 7c9643d chore(scripts): update nolints.txt (#7914) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-13 06:04:52 e13fd48 docs(data/nat/pairing): add module docstring (#7897) ESTIMATED CHANGES Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/data/equiv/list.lean Modified src/data/nat/pairing.lean - theorem nat.le_mkpair_left - theorem nat.le_mkpair_right + theorem nat.left_le_mkpair + theorem nat.right_le_mkpair - theorem nat.unpair_le_left - theorem nat.unpair_le_right + theorem nat.unpair_left_le + theorem nat.unpair_right_le 2021-06-13 06:04:51 2c919b0 chore(algebra/{ordered_group, linear_ordered_comm_group_with_zero.lean}): rename one lemma, remove more @s (#7895) The more substantial part of this PR is changing the name of a lemma from `div_lt_div_iff'` to `mul_inv_lt_mul_inv_iff'`: the lemma proves `a * b⁻¹ ≤ c * d⁻¹ ↔ a * d ≤ c * b`. Furthermore, in the same spirit as a couple of my recent short PRs, I am removing a few more `@`, in order to sweep under the rug, later on, a change in typeclass assumptions. This PR only changes a name, which was used only once, and a few proofs, but no statement. On the path towards PR #7645. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_group.lean - theorem div_le_div_iff' + theorem mul_inv_le_mul_inv_iff' 2021-06-13 06:04:50 add577d feat(group_theory/group_action/defs): add `has_mul.to_has_scalar` and relax typeclass in `smul_mul_smul` (#7885) ESTIMATED CHANGES Modified src/data/matrix/basic.lean Modified src/group_theory/group_action/defs.lean +/- theorem mul_smul_comm +/- theorem smul_eq_mul +/- theorem smul_mul_assoc +/- theorem smul_mul_smul 2021-06-12 23:46:04 e0a3303 chore(category_theory/filtered): Adds missing instances (#7909) ESTIMATED CHANGES Modified src/category_theory/filtered.lean Modified src/order/bounded_lattice.lean 2021-06-12 23:46:03 9ad8ea3 chore(linear_algebra/quadratic_form): fix typo (#7907) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean 2021-06-12 23:46:02 7b7cd0a fix(tactic/lint): punctuation of messages (#7869) Previously, the linter framework would append punctuation (`.` or `:`) to the message provided by the linter, but this was confusing and lead to some double punctuation. Now all linters specify their own punctuation. ESTIMATED CHANGES Modified src/tactic/lint/default.lean Modified src/tactic/lint/frontend.lean Modified src/tactic/lint/misc.lean Modified src/tactic/lint/simp.lean Modified src/tactic/lint/type_classes.lean Modified test/lint.lean 2021-06-12 23:46:01 39073fa feat(algebra/pointwise): Dynamics of powers of a subset (#7836) If `S` is a subset of a group `G`, then the powers of `S` eventually stabilize in size. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem group.card_pow_eq_card_pow_card_univ + theorem group.card_pow_eq_card_pow_card_univ_aux + theorem set.empty_pow 2021-06-12 15:55:02 ee4fe74 feat(topology/category/Profinite/cofiltered_clopen): Theorem about clopen sets in cofiltered limits of profinite sets (#7837) This PR proves the theorem that any clopen set in a cofiltered limit of profinite sets arises from a clopen set in one of the factors of the limit. This generalizes a theorem used in LTE. ESTIMATED CHANGES Added src/topology/category/Profinite/cofiltered_limit.lean + theorem Profinite.exists_clopen_of_cofiltered 2021-06-12 15:55:00 06094d5 feat(linear_algebra/free_module): add class module.free (#7801) We introduce here a new class `module.free`. ESTIMATED CHANGES Added src/linear_algebra/free_module.lean + def module.free.choose_basis_index + theorem module.free.of_basis + theorem module.free.of_equiv' + theorem module.free.of_equiv + theorem module.free_def + theorem module.free_iff_set 2021-06-12 15:54:59 f9935ed feat(geometry/manifold): Some lemmas for smooth functions (#7752) ESTIMATED CHANGES Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/algebra/monoid.lean + theorem L_apply + theorem L_mul + theorem R_apply + theorem R_mul + def smooth_left_mul + def smooth_right_mul Modified src/geometry/manifold/algebra/smooth_functions.lean + theorem smooth_map.mul_comp + theorem smooth_map.smul_comp' + theorem smooth_map.smul_comp 2021-06-12 11:10:11 b7d4996 chore(ring_theory/adjoin_root): speedup (#7905) Speedup a lemma that has just timed out in bors, by removing a heavy `change`. ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2021-06-12 11:10:10 15b2434 chore(data/nat/sqrt): Alternative phrasings of data.nat.sqrt lemmas (#7748) Add versions of the `data.nat.sqrt` lemmas to talk about `n^2` where the current versions talk about `n * n`. ESTIMATED CHANGES Modified src/data/nat/sqrt.lean + theorem nat.eq_sqrt' + theorem nat.exists_mul_self' + theorem nat.le_sqrt' + theorem nat.lt_succ_sqrt' + theorem nat.not_exists_sq' + theorem nat.sqrt_add_eq' + theorem nat.sqrt_eq' + theorem nat.sqrt_le' + theorem nat.sqrt_lt' + theorem nat.sqrt_mul_sqrt_lt_succ' + theorem nat.succ_le_succ_sqrt' 2021-06-12 11:10:09 841dce1 feat(data/polynomial): generalize `polynomial.has_scalar` to require only `distrib_mul_action` instead of `semimodule` (#7664) Note that by generalizing this instance, we introduce a diamond with `polynomial.mul_semiring_action`, which has a definitionally different `smul`. To resolve this, we add a proof that the definitions are equivalent, and switch `polynomial.mul_semiring_action` to use the same implementation as `polynomial.has_scalar`. This allows us to generalize `smul_C` to apply to all types of action, and remove `coeff_smul'` which then duplicates the statement of `coeff_smul`. ESTIMATED CHANGES Modified src/algebra/polynomial/group_ring_action.lean - theorem polynomial.coeff_smul' - theorem polynomial.smul_C + theorem polynomial.smul_eq_map Modified src/data/polynomial/basic.lean + theorem polynomial.smul_C +/- theorem polynomial.smul_monomial +/- theorem polynomial.smul_to_finsupp Modified src/data/polynomial/coeff.lean +/- theorem polynomial.coeff_smul +/- theorem polynomial.support_smul 2021-06-12 08:06:06 2016a93 feat(linear_algebra): use `finset`s to define `det` and `trace` (#7778) This PR replaces `∃ (s : set M) (b : basis s R M), s.finite` with `∃ (s : finset M), nonempty (basis s R M)` in the definitions in `linear_map.det` and `linear_map.trace`. This should make it much easier to unfold those definitions without having to modify the instance cache or supply implicit params. In particular, it should help a lot with #7667. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + def basis.reindex_finset_range + theorem basis.reindex_finset_range_apply + theorem basis.reindex_finset_range_repr + theorem basis.reindex_finset_range_repr_self + theorem basis.reindex_finset_range_self Modified src/linear_algebra/determinant.lean - theorem linear_map.det_eq_det_to_matrix_of_finite_set + theorem linear_map.det_eq_det_to_matrix_of_finset Modified src/linear_algebra/finite_dimensional.lean + theorem finrank_eq_zero_of_not_exists_basis_finset Modified src/linear_algebra/trace.lean - theorem linear_map.trace_aux_reindex_range - theorem linear_map.trace_eq_matrix_trace_of_finite_set + theorem linear_map.trace_eq_matrix_trace_of_finset Modified src/ring_theory/norm.lean Modified src/ring_theory/trace.lean 2021-06-12 08:06:04 dabb41f feat(tactic/{induction,fresh_names}): improve `induction' with` (#7726) This commit introduces two improvements to the `with` clauses of the `cases'` and `induction'` tactics: - Users can now write a hyphen instead of a name in the `with` clause. This clears the corresponding hypothesis (and any hypotheses depending on it). - When users give an explicit name in the `with` clause, that name is now used verbatim, even if it shadows an existing hypothesis. ESTIMATED CHANGES Modified src/tactic/fresh_names.lean Modified src/tactic/induction.lean Modified test/fresh_names.lean Modified test/induction.lean + inductive with_tests.test 2021-06-12 02:38:03 55c9662 chore(scripts): update nolints.txt (#7902) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-12 02:38:02 2974a9f feat(ring_theory): every division_ring is_noetherian (#7661) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.bot_is_maximal +/- theorem ideal.eq_bot_of_prime +/- theorem ideal.eq_bot_or_top + theorem ideal.span_one +/- theorem ideal.span_singleton_one Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/principal_ideal_domain.lean +/- theorem principal_ideal_ring.is_maximal_of_irreducible 2021-06-12 02:38:01 5948cde feat(ring_theory): the field trace resp. norm is the sum resp. product of the conjugates (#7640) More precise statement of the main result: the field trace (resp. norm) of `x` in `K(x) / K`, mapped to a field `F` that contains all the conjugate roots over `K` of `x`, is equal to the sum (resp. product) of all of these conjugate roots. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_simple.is_integral_gen Modified src/linear_algebra/finsupp.lean + theorem finsupp.total_fin_zero Modified src/ring_theory/norm.lean + theorem algebra.norm_gen_eq_prod_roots Modified src/ring_theory/trace.lean + theorem algebra.trace_gen_eq_sum_roots 2021-06-12 02:38:00 4337918 feat(analysis/special_functions/integrals): integral of `sin x ^ m * cos x ^ n` (#7418) The simplification of integrals of the form `∫ x in a..b, sin x ^ m * cos x ^ n` where (i) `n` is odd, (ii) `m` is odd, and (iii) `m` and `n` are both even. The computation of the integrals of the following functions are then provided outright: - `sin x * cos x`, given both in terms of sine and cosine - `sin x ^ 2 * cos x ^ 2` - `sin x ^ 2 * cos x` and `sin x * cos x ^ 2` - `sin x ^ 3` and `cos x ^ 3` ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean + theorem integral_cos_pow_three + theorem integral_sin_mul_cos_sq + theorem integral_sin_mul_cos₁ + theorem integral_sin_mul_cos₂ + theorem integral_sin_pow_even_mul_cos_pow_even + theorem integral_sin_pow_mul_cos_pow_odd + theorem integral_sin_pow_odd_mul_cos_pow + theorem integral_sin_pow_three + theorem integral_sin_sq_mul_cos + theorem integral_sin_sq_mul_cos_sq Modified test/integration.lean 2021-06-12 02:37:59 2d175ae feat(topology/category/Top/limits): Kőnig's lemma for fintypes (#6288) Specializes `Top.nonempty_limit_cone_of_compact_t2_inverse_system` to an inverse system of nonempty fintypes. ESTIMATED CHANGES Modified src/topology/category/Top/limits.lean + theorem nonempty_sections_of_fintype_inverse_system.init + theorem nonempty_sections_of_fintype_inverse_system + def ulift.directed_order 2021-06-11 21:18:49 b360611 chore(src/algebra/lie/abelian): golf (#7898) I golfed some of the proofs of the file `algebra/lie/abelian`. My main motivation was to get familiar with the file. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean 2021-06-11 21:18:48 dd60035 chore(algebra/{covariant_and_contravariant + ordered_monoid_lemmas}): new file covariant_and_contravariant (#7890) This PR creates a new file `algebra/covariant_and_contravariant` and moves the part of `algebra/ordered_monoid_lemmas` dealing exclusively with `covariant` and `contravariant` into it. It also rearranges the documentation, with a view to the later PRs, building up to #7645. The discrepancy between the added and removed lines is entirely due to longer documentation: no actual Lean code has changed, except, of course, for the `import` in `algebra/ordered_monoid_lemmas` that now uses `covariant_and_contravariant`. ESTIMATED CHANGES Added src/algebra/covariant_and_contravariant.lean + def contravariant + def covariant Modified src/algebra/ordered_monoid_lemmas.lean - def contravariant - def covariant 2021-06-11 21:18:47 538f015 feat(data/finset/basic): `empty_product` and `product_empty` (#7886) add `product_empty_` ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.empty_product + theorem finset.product_empty 2021-06-11 21:18:46 97a7a24 doc(data/pequiv): add module docs (#7877) ESTIMATED CHANGES Modified src/data/pequiv.lean 2021-06-11 21:18:45 ff44ed5 feat({algebra/group_action_hom, data/equiv/mul_add}): add missing `inverse` defs (#7847) ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean + theorem distrib_mul_action_hom.coe_one + theorem distrib_mul_action_hom.coe_zero + def distrib_mul_action_hom.inverse + theorem distrib_mul_action_hom.one_apply + theorem distrib_mul_action_hom.to_fun_eq_coe + theorem distrib_mul_action_hom.zero_apply + def mul_action_hom.inverse Modified src/data/equiv/mul_add.lean + def monoid_hom.inverse 2021-06-11 21:18:44 a008b33 feat(data/finsupp/to_dfinsupp): add sigma_finsupp_lequiv_dfinsupp (#7818) Equivalences between `(Σ i, η i) →₀ N` and `Π₀ i, (η i →₀ N)`. - [x] depends on: #7819 ESTIMATED CHANGES Modified src/data/finsupp/to_dfinsupp.lean + def sigma_finsupp_add_equiv_dfinsupp + def sigma_finsupp_equiv_dfinsupp + theorem sigma_finsupp_equiv_dfinsupp_add + theorem sigma_finsupp_equiv_dfinsupp_apply + theorem sigma_finsupp_equiv_dfinsupp_smul + theorem sigma_finsupp_equiv_dfinsupp_support + theorem sigma_finsupp_equiv_dfinsupp_symm_apply + def sigma_finsupp_lequiv_dfinsupp 2021-06-11 21:18:43 64d453e feat(ring_theory/adjoin/basic): add subalgebra.fg_prod (#7811) We add `subalgebra.fg_prod`: the product of two finitely generated subalgebras is finitely generated. A mathematical remark: the result is not difficult, but one needs to be careful. For example, `algebra.adjoin_eq_prod` is false without adding `(1,0)` and `(0,1)` by hand to the set of generators. Moreover, `linear_map.inl` and `linear_map.inr` are not ring homomorphisms, so it seems difficult to mimic the proof for modules. A better mathematical proof is to take surjections from two polynomial rings (in finitely many variables) and considering the tensor product of these polynomial rings, that is again a polynomial ring in finitely many variables, and build a surjection to the product of the subalgebras (using the universal property of the tensor product). The problem with this approach is that one needs to know that the tensor product of polynomial rings is again a polynomial ring, and I don't know well enough the API fort the tensor product to prove this. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_hom.fst + def alg_hom.snd Modified src/field_theory/splitting_field.lean Modified src/linear_algebra/prod.lean + theorem linear_map.inl_map_mul + theorem linear_map.inr_map_mul Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_induction + theorem algebra.adjoin_inl_union_inr_eq_prod + theorem algebra.adjoin_inl_union_inr_le_prod +/- theorem algebra.adjoin_union + theorem algebra.adjoin_union_eq_under + theorem algebra.mem_adjoin_of_map_mul + theorem subalgebra.fg_prod Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/finiteness.lean 2021-06-11 21:18:42 61a04c5 feat(algebraic_geometry/structure_sheaf): Define comap on structure sheaf (#7788) Defines the comap of a ring homomorphism on the structure sheaves of the prime spectra. ESTIMATED CHANGES Modified src/algebraic_geometry/structure_sheaf.lean +/- def algebraic_geometry.stalk_iso + def algebraic_geometry.structure_sheaf.comap + theorem algebraic_geometry.structure_sheaf.comap_apply + theorem algebraic_geometry.structure_sheaf.comap_comp + theorem algebraic_geometry.structure_sheaf.comap_const + def algebraic_geometry.structure_sheaf.comap_fun + theorem algebraic_geometry.structure_sheaf.comap_fun_is_locally_fraction + theorem algebraic_geometry.structure_sheaf.comap_id' + theorem algebraic_geometry.structure_sheaf.comap_id + theorem algebraic_geometry.structure_sheaf.comap_id_eq_map + theorem algebraic_geometry.structure_sheaf.is_fraction.eq_mk' +/- def algebraic_geometry.to_open - theorem algebraic_geometry.to_open_apply + theorem algebraic_geometry.to_open_comp_comap 2021-06-11 21:18:40 eb9bd55 feat(linear_algebra/quadratic_form): Real version of Sylvester's law of inertia (#7427) We prove that every nondegenerate real quadratic form is equivalent to a weighted sum of squares with the weights being ±1. ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/data/real/sign.lean + theorem real.inv_sign + def real.sign + theorem real.sign_apply_eq + theorem real.sign_inv + theorem real.sign_mul_nonneg + theorem real.sign_mul_pos_of_ne_zero + theorem real.sign_neg + theorem real.sign_of_neg + theorem real.sign_of_not_neg + theorem real.sign_of_zero_le + theorem real.sign_one + theorem real.sign_zero Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.equivalent_one_neg_one_weighted_sum_squared 2021-06-11 13:26:19 e8add82 chore(algebra/{ordered_monoid,linear_ordered_comm_group_with_zero}): remove some uses of @ (#7884) This PR replaces a couple of uses of `@` with slightly more verbose proofs that only use the given explicit arguments. The `by apply mul_lt_mul''' hab0 hcd0` line also works with `mul_lt_mul''' hab0 hcd0` alone (at least on my machine). The reason for the slightly more elaborate proof is that once the typeclass assumptions will change, the direct term-mode proof will break, while the `by apply` version is more stable. Besides its aesthetic value, this is useful in PR #7645, as the typeclass arguments of the involved lemmas will change and this will keep the diff (slightly) shorter. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_monoid.lean 2021-06-11 13:26:18 9500d95 feat(number_theory/l_series): The L-series of an arithmetic function (#7862) Defines the L-series of an arithmetic function Proves a few basic facts about convergence of L-series ESTIMATED CHANGES Added src/number_theory/l_series.lean + def nat.arithmetic_function.l_series + theorem nat.arithmetic_function.l_series_add + theorem nat.arithmetic_function.l_series_eq_zero_of_not_l_series_summable + def nat.arithmetic_function.l_series_summable + theorem nat.arithmetic_function.l_series_summable_iff_of_re_eq_re + theorem nat.arithmetic_function.l_series_summable_of_bounded_of_one_lt_re + theorem nat.arithmetic_function.l_series_summable_of_bounded_of_one_lt_real + theorem nat.arithmetic_function.l_series_summable_zero + theorem nat.arithmetic_function.zeta_l_series_summable_iff_one_lt_re 2021-06-11 13:26:17 e35438b feat(analysis): Cauchy sequence and series lemmas (#7858) from LTE. Mostly relaxing assumptions from metric to pseudo-metric and proving some obvious lemmas. eventually_constant_prod and eventually_constant_sum are duplicated by hand because `to_additive` gets confused by the appearance of `1`. In `norm_le_zero_iff' {G : Type*} [semi_normed_group G] [separated_space G]` and the following two lemmas the type classes assumptions look silly, but those lemmas are indeed useful in some specific situation in LTE. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.eventually_constant_prod + theorem finset.eventually_constant_sum Modified src/analysis/normed_space/basic.lean + theorem cauchy_seq.add + theorem cauchy_seq_sum_of_eventually_eq + theorem norm_eq_zero_iff' + theorem norm_le_insert' + theorem norm_le_zero_iff' + theorem norm_pos_iff' + theorem normed_group.cauchy_seq_iff + theorem semi_normed_group.mem_closure_iff Modified src/analysis/specific_limits.lean + theorem cauchy_series_of_le_geometric + theorem dist_partial_sum' + theorem dist_partial_sum + theorem normed_group.cauchy_series_of_le_geometric'' + theorem normed_group.cauchy_series_of_le_geometric' + theorem semi_normed_group.cauchy_seq_of_le_geometric +/- theorem uniformity_basis_dist_pow_of_lt_1 Modified src/topology/basic.lean + theorem tendsto_at_bot_of_eventually_const + theorem tendsto_at_top_of_eventually_const 2021-06-11 13:26:16 a421185 feat(algebra/periodic): more periodicity lemmas (#7853) ESTIMATED CHANGES Modified src/algebra/periodic.lean + theorem function.antiperiodic.sub_eq' + theorem function.periodic.gsmul_sub_eq + theorem function.periodic.int_mul_sub_eq + theorem function.periodic.nat_mul_sub_eq + theorem function.periodic.nsmul_sub_eq + theorem function.periodic.sub_eq' 2021-06-11 13:26:15 9228ff9 feat(algebra/ordered_group): abs_sub (#7850) - rename `abs_sub` to `abs_sub_comm` - prove `abs_sub` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/algebra/ordered_group.lean +/- theorem abs_sub + theorem abs_sub_comm Modified src/data/complex/basic.lean - theorem complex.abs_sub + theorem complex.abs_sub_comm Modified src/data/complex/exponential.lean Modified src/data/complex/exponential_bounds.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/geometry/euclidean/sphere.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/uniform_space/compare_reals.lean 2021-06-11 13:26:14 4bfe8e8 feat(algebra/order_functions): lt_max_of_lt_ (#7849) ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem lt_max_of_lt_left + theorem lt_max_of_lt_right + theorem min_lt_of_left_lt + theorem min_lt_of_right_lt 2021-06-11 13:26:12 915a0a2 feat(topology/algebra/ordered/basic): add a few subseq-related lemmas (#7828) These are lemmas I proved while working on #7164. Some of them are actually not used anymore in that PR because I'm refactoring it, but I thought they would be useful anyway, so here there are. ESTIMATED CHANGES Modified src/topology/algebra/ordered/basic.lean + theorem infi_eq_infi_subseq_of_monotone + theorem supr_eq_supr_subseq_of_monotone + theorem tendsto_iff_tendsto_subseq_of_monotone 2021-06-11 12:07:55 51cd821 chore(algebra/lie/classical): speed up slow proof (#7894) Squeeze a simp in a proof that has just timed out on bors ESTIMATED CHANGES Modified src/algebra/lie/classical.lean 2021-06-11 02:16:14 6eb3d97 chore(scripts): update nolints.txt (#7887) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-11 02:16:13 6f6dbad feat(set_theory/cardinal): missing lemma (#7880) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.mk_range_le_lift 2021-06-11 02:16:12 e8aa984 doc(int/modeq): add module doc and tidy (#7878) ESTIMATED CHANGES Modified src/data/int/modeq.lean +/- theorem int.modeq.mod_coprime 2021-06-11 02:16:11 1b0e5ee chore(data/real/nnreal): avoid abusing inequalities in nnreals (#7872) I removed the use of `@`, so that all implicit arguments stay implicit. The main motivation is to reduce the diff in the bigger PR #7645: by only having the explicit arguments, the same proof works, without having to fiddle around with underscores. ESTIMATED CHANGES Modified src/data/real/nnreal.lean 2021-06-11 02:16:10 d570596 feat(logic/function/basic): a lemma on symmetric operations and flip (#7871) This lemma is used to show that if multiplication is commutative, then `flip`ping the arguments returns the same function. This is used in PR #7645 . ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem is_symm_op.flip_eq 2021-06-11 02:16:09 9a4881d chore(data/real/pi, analysis/special_functions/trigonometric.lean): speed up/simplify proofs (#7868) These are mostly cosmetic changes, simplifying a couple of proofs. I tried to remove the calls to `linarith` or `norm_num`, when the alternatives were either single lemmas or faster than automation. The main motivation is to reduce the diff in the bigger PR #7645. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean Modified src/data/real/pi.lean 2021-06-11 02:16:08 f157a37 chore(logic/basic): fixup `eq_or_ne` (#7865) ESTIMATED CHANGES Modified src/logic/basic.lean +/- theorem decidable.eq_or_ne +/- theorem decidable.ne_or_eq +/- theorem eq_or_ne +/- theorem ne_or_eq 2021-06-11 02:16:07 0a80efb chore(analysis/normed_space/normed_group_hom): remove bound_by (#7860) `bound_by f C` is the same as `∥f∥ ≤ C` and it is therefore useless now that we have `∥f∥`. ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean - theorem normed_group_hom.antilipschitz_of_bound_by + theorem normed_group_hom.antilipschitz_of_norm_ge +/- theorem normed_group_hom.bound - def normed_group_hom.bound_by - theorem normed_group_hom.bound_by_one_of_isometry - theorem normed_group_hom.lipschitz_of_bound_by - theorem normed_group_hom.mk_normed_group_hom'_bound_by - theorem normed_group_hom.norm_noninc.bound_by_one + theorem normed_group_hom.norm_noninc.norm_noninc_iff_norm_le_one Modified src/analysis/normed_space/normed_group_quotient.lean 2021-06-10 16:03:39 0f8e79e feat(algebra/big_operators/finsupp): relax assumptions `semiring` to `non_unital_non_assoc_semiring` (#7874) ESTIMATED CHANGES Modified src/algebra/big_operators/finsupp.lean 2021-06-10 16:03:38 3b5a44b chore(src/testing/slim_check/sampleable): simply add explicit namespace `nat.` (#7873) This PR only introduces the explicit namespace `nat.` when calling `le_div_iff_mul_le`. The reason for doing this is that PR #7645 introduces a lemma `le_div_iff_mul_le` in the root namespace and this one then becomes ambiguous. Note that CI *does build* on this branch even without the explicit namespace. The change would only become necessary once/if PR #7645 gets merged. I isolated this change to a separate PR to reduce the diff of #7645 and also to bring attention to this issue, in case someone has some comment about it. ESTIMATED CHANGES Modified src/testing/slim_check/sampleable.lean 2021-06-10 16:03:37 2e8ef55 feat(algebra/floor): nat_floor (#7855) introduce `nat_floor` Related Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/nat_floor ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem le_nat_floor_iff + theorem le_nat_floor_of_le +/- theorem lt_nat_ceil + theorem lt_nat_floor_add_one + theorem lt_of_lt_nat_floor +/- def nat_ceil +/- theorem nat_ceil_le + def nat_floor + theorem nat_floor_add_nat + theorem nat_floor_coe + theorem nat_floor_eq_zero_iff + theorem nat_floor_le + theorem nat_floor_lt_iff + theorem nat_floor_mono + theorem nat_floor_of_nonpos + theorem nat_floor_zero + theorem pos_of_nat_floor_pos Modified src/data/int/basic.lean + theorem int.to_nat_add_nat - theorem int.to_nat_add_one + theorem int.to_nat_of_nonpos - theorem int.to_nat_zero_of_neg Modified src/tactic/norm_num.lean 2021-06-10 16:03:36 021c859 feat(analysis/special_functions/pow): rpow-log inequalities (#7848) Inequalities relating rpow and log ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem real.le_rpow_iff_log_le + theorem real.le_rpow_of_log_le + theorem real.lt_rpow_iff_log_lt + theorem real.lt_rpow_of_log_lt 2021-06-10 16:03:35 49f5a15 feat(algebra/ordered_ring): more granular typeclasses for `with_top α` and `with_bot α` (#7845) `with_top α` and `with_bot α` now inherit the following typeclasses from `α` with suitable assumptions: * `mul_zero_one_class` * `semigroup_with_zero` * `monoid_with_zero` * `comm_monoid_with_zero` These were all split out of the existing `canonically_ordered_comm_semiring`, with their proofs unchanged. The same instances are added for `with_bot`. It is not possible to split further, as `distrib'` requires `add_eq_zero_iff`, and `canonically_ordered_comm_semiring` is the smallest typeclass that provides both this lemma and `mul_zero_class`. With these instances in place, we can now show `comm_monoid_with_zero ereal`. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem with_bot.bot_lt_mul + theorem with_bot.bot_mul + theorem with_bot.bot_mul_bot + theorem with_bot.coe_mul + theorem with_bot.mul_bot + theorem with_bot.mul_coe + theorem with_bot.mul_def + theorem with_bot.mul_eq_bot_iff +/- theorem with_top.mul_lt_top Modified src/data/real/ereal.lean - theorem ereal.ad_eq_top_iff + theorem ereal.add_eq_top_iff + theorem ereal.bot_mul_bot + theorem ereal.bot_mul_coe + theorem ereal.bot_sub_coe + theorem ereal.bot_sub_top + theorem ereal.coe_mul + theorem ereal.coe_mul_bot + theorem ereal.coe_one + theorem ereal.coe_sub_bot + theorem ereal.mul_top + theorem ereal.sub_bot + theorem ereal.to_real_mul + theorem ereal.to_real_one + theorem ereal.top_mul + theorem ereal.top_sub Modified src/order/bounded_lattice.lean 2021-06-10 23:57:20+10:00 079b8a1 Revert "feat(set_theory/cofinality): more infinite pigeonhole principles" This reverts commit c7ba50f41813718472478983370db66b06c2d33e. ESTIMATED CHANGES Modified src/set_theory/cofinality.lean - theorem cardinal.infinite_pigeonhole'' - theorem cardinal.infinite_pigeonhole' - theorem cardinal.le_range_of_union_finset_eq_top 2021-06-10 23:56:13+10:00 c7ba50f feat(set_theory/cofinality): more infinite pigeonhole principles ESTIMATED CHANGES Modified src/set_theory/cofinality.lean + theorem cardinal.infinite_pigeonhole'' + theorem cardinal.infinite_pigeonhole' + theorem cardinal.le_range_of_union_finset_eq_top 2021-06-10 06:56:02 f7e93d9 chore(algebra/linear_ordered_comm_group_with_zero.lean): extend calc proofs (#7870) These are mostly cosmetic changes, simplifying a couple of calc proofs. The main motivation is to reduce the diff in the bigger PR #7645. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean 2021-06-10 06:56:01 05b7b0b chore(scripts): update nolints.txt (#7867) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-10 06:56:00 4da899c chore(number_theory/{fermat4, sum_four_squares, zsqrtd/basic}): simplify/rearrange proofs (#7866) These are mostly cosmetic changes, simplifying a couple of proofs. I would have tagged it `easy`, but since there are three files changed, it may take just over 20'' to review! The main motivation is to reduce the diff in the bigger PR #7645. ESTIMATED CHANGES Modified src/number_theory/fermat4.lean Modified src/number_theory/sum_four_squares.lean Modified src/number_theory/zsqrtd/basic.lean 2021-06-10 01:51:29 2fc66c9 feat(algebra/group_with_zero): add units.can_lift (#7857) [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/projective.20space/near/242041169) ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean 2021-06-10 01:51:28 0a34878 chore(topology/algebra/continuous_functions): making names consistent with the smooth library (#7844) ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean + theorem continuous_functions.coe_smul - theorem continuous_functions.smul_coe + theorem continuous_map.coe_div + theorem continuous_map.coe_inv + theorem continuous_map.coe_mul + theorem continuous_map.coe_one + theorem continuous_map.coe_pow + theorem continuous_map.coe_smul - theorem continuous_map.div_coe - theorem continuous_map.inv_coe - theorem continuous_map.mul_coe - theorem continuous_map.one_coe - theorem continuous_map.pow_coe - theorem continuous_map.smul_coe 2021-06-10 01:51:26 06200c8 feat(ring_theory/ideal): generalize to noncommutative rings (#7654) This is a minimalist generalization of existing material on ideals to the setting of noncommutative rings. I have not attempted to decide how things should be named in the long run. For now `ideal` specifically means a left-ideal (i.e. I didn't change the definition). We can either in future add `two_sided_ideal` (or `biideal` or `ideal₂` or ...), or potentially rename `ideal` to `left_ideal` or `lideal`, etc. Future bikeshedding opportunities! In this PR I've just left definitions alone, and relaxed `comm_ring` hypotheses to `ring` as far as I could see possible. No new theorems or mathematics, just rearranging to get things in the right order. (As a side note, both `ring_theory.ideal.basic` and `ring_theory.ideal.operations` should be split into smaller files; I can try this after this PR.) ESTIMATED CHANGES Modified src/algebra/category/Module/projective.lean Modified src/algebra/group/units.lean + theorem is_unit.exists_left_inv + theorem is_unit.exists_right_inv Modified src/ring_theory/ideal/basic.lean +/- theorem coe_subset_nonunits +/- def ideal +/- theorem mem_nonunits_iff Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.comap_comap +/- theorem ideal.map_map +/- theorem ring_hom.ker_is_prime Modified src/ring_theory/ideal/prod.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean 2021-06-09 20:42:50 3870896 doc(data/semiquot): reformat module doc properly, and add missing doc strings (#7773) ESTIMATED CHANGES Modified src/data/semiquot.lean +/- def semiquot.is_pure 2021-06-09 20:42:48 abe25e9 docs(data/mllist): fix module doc, and add all doc strings (#7772) ESTIMATED CHANGES Modified src/data/mllist.lean 2021-06-09 20:42:47 d9b91f3 feat(measure_theory/tactic): add measurability tactic (#7756) Add a measurability tactic defined in the file `measure_theory/tactic.lean`, which is heavily inspired from the continuity tactic. It proves goals of the form `measurable f`, `ae_measurable f µ` and `measurable_set s`. Some tests are provided in `tests/measurability.lean` and the tactic was used to replace a few lines in `integration.lean` and `mean_inequalities.lean`. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/analysis/mean_inequalities.lean Modified src/measure_theory/arithmetic.lean + theorem ae_measurable.div' +/- theorem ae_measurable.inv + theorem ae_measurable.mul' + theorem measurable.div' +/- theorem measurable.inv + theorem measurable.mul' Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean +/- theorem measurable_set_Icc +/- theorem measurable_set_Ici +/- theorem measurable_set_Ico +/- theorem measurable_set_Iic +/- theorem measurable_set_Iio +/- theorem measurable_set_Ioc +/- theorem measurable_set_Ioi +/- theorem measurable_set_Ioo Modified src/measure_theory/integration.lean Modified src/measure_theory/lp_space.lean Modified src/measure_theory/measurable_space.lean - theorem finset.measurable_set_bInter - theorem finset.measurable_set_bUnion - theorem measurable.comp +/- theorem measurable.fst +/- theorem measurable.iterate +/- theorem measurable.prod +/- theorem measurable.snd +/- theorem measurable.subtype_coe - def measurable - theorem measurable_const +/- theorem measurable_from_nat +/- theorem measurable_fst - theorem measurable_id +/- theorem measurable_inl +/- theorem measurable_inr - theorem measurable_set.Inter - theorem measurable_set.Inter_Prop - theorem measurable_set.Inter_fintype - theorem measurable_set.Union - theorem measurable_set.Union_Prop - theorem measurable_set.Union_fintype - theorem measurable_set.bInter - theorem measurable_set.bUnion - theorem measurable_set.bUnion_decode₂ - theorem measurable_set.compl - theorem measurable_set.compl_iff - theorem measurable_set.congr - theorem measurable_set.const - theorem measurable_set.diff - theorem measurable_set.disjointed - theorem measurable_set.empty - theorem measurable_set.insert - theorem measurable_set.inter - theorem measurable_set.ite - theorem measurable_set.of_compl - theorem measurable_set.sInter - theorem measurable_set.sUnion - theorem measurable_set.union - theorem measurable_set.univ - def measurable_set - theorem measurable_set_eq - theorem measurable_set_insert +/- theorem measurable_set_mul_support + theorem measurable_set_preimage +/- theorem measurable_snd - theorem measurable_space.ext - theorem measurable_space.ext_iff - def measurable_space.generate_from - theorem measurable_space.generate_from_le - theorem measurable_space.generate_from_le_iff - theorem measurable_space.generate_from_measurable_set - inductive measurable_space.generate_measurable - def measurable_space.gi_generate_from - theorem measurable_space.measurable_set_Inf - theorem measurable_space.measurable_set_Sup - theorem measurable_space.measurable_set_bot_iff - theorem measurable_space.measurable_set_generate_from - theorem measurable_space.measurable_set_inf - theorem measurable_space.measurable_set_infi - theorem measurable_space.measurable_set_sup - theorem measurable_space.measurable_set_supr - theorem measurable_space.measurable_set_top - theorem measurable_space.mk_of_closure_sets - structure measurable_space +/- theorem measurable_subtype_coe +/- theorem measurable_swap +/- theorem measurable_unit - theorem nonempty_measurable_superset - theorem set.countable.measurable_set - theorem set.finite.measurable_set - theorem set.finite.measurable_set_bInter - theorem set.finite.measurable_set_bUnion - theorem set.finite.measurable_set_sInter - theorem set.finite.measurable_set_sUnion +/- theorem subsingleton.measurable - theorem subsingleton.measurable_set Added src/measure_theory/measurable_space_def.lean + theorem finset.measurable_set_bInter + theorem finset.measurable_set_bUnion + theorem measurable.comp + def measurable + theorem measurable_const + theorem measurable_id' + theorem measurable_id + theorem measurable_set.Inter + theorem measurable_set.Inter_Prop + theorem measurable_set.Inter_fintype + theorem measurable_set.Union + theorem measurable_set.Union_Prop + theorem measurable_set.Union_fintype + theorem measurable_set.bInter + theorem measurable_set.bUnion + theorem measurable_set.bUnion_decode₂ + theorem measurable_set.compl + theorem measurable_set.compl_iff + theorem measurable_set.congr + theorem measurable_set.const + theorem measurable_set.diff + theorem measurable_set.disjointed + theorem measurable_set.empty + theorem measurable_set.insert + theorem measurable_set.inter + theorem measurable_set.ite + theorem measurable_set.of_compl + theorem measurable_set.sInter + theorem measurable_set.sUnion + theorem measurable_set.union + theorem measurable_set.univ + def measurable_set + theorem measurable_set_eq + theorem measurable_set_insert + theorem measurable_space.ext + theorem measurable_space.ext_iff + def measurable_space.generate_from + theorem measurable_space.generate_from_le + theorem measurable_space.generate_from_le_iff + theorem measurable_space.generate_from_measurable_set + inductive measurable_space.generate_measurable + def measurable_space.gi_generate_from + theorem measurable_space.measurable_set_Inf + theorem measurable_space.measurable_set_Sup + theorem measurable_space.measurable_set_bot_iff + theorem measurable_space.measurable_set_generate_from + theorem measurable_space.measurable_set_inf + theorem measurable_space.measurable_set_infi + theorem measurable_space.measurable_set_sup + theorem measurable_space.measurable_set_supr + theorem measurable_space.measurable_set_top + theorem measurable_space.mk_of_closure_sets + structure measurable_space + theorem nonempty_measurable_superset + theorem set.countable.measurable_set + theorem set.finite.measurable_set + theorem set.finite.measurable_set_bInter + theorem set.finite.measurable_set_bUnion + theorem set.finite.measurable_set_sInter + theorem set.finite.measurable_set_sUnion + theorem subsingleton.measurable_set Modified src/measure_theory/measure_space.lean - theorem ae_measurable.ae_eq_mk - theorem ae_measurable.congr - theorem ae_measurable.measurable_mk - def ae_measurable.mk - def ae_measurable - theorem ae_measurable_congr - theorem ae_measurable_const +/- theorem ae_measurable_zero_measure - theorem measurable.ae_measurable - theorem measurable.comp_ae_measurable - theorem measure_theory.ae_all_iff - theorem measure_theory.ae_ball_iff - theorem measure_theory.ae_eq_empty - theorem measure_theory.ae_eq_refl - theorem measure_theory.ae_eq_set - theorem measure_theory.ae_eq_symm - theorem measure_theory.ae_eq_trans - theorem measure_theory.ae_iff - theorem measure_theory.ae_imp_iff - theorem measure_theory.ae_le_set - theorem measure_theory.ae_of_all - theorem measure_theory.coe_to_outer_measure - theorem measure_theory.compl_mem_ae_iff - theorem measure_theory.diff_ae_eq_self - theorem measure_theory.exists_measurable_superset - theorem measure_theory.exists_measurable_superset_forall_eq - theorem measure_theory.exists_measurable_superset_iff_measure_eq_zero - theorem measure_theory.exists_measurable_superset_of_null - theorem measure_theory.frequently_ae_iff - theorem measure_theory.frequently_ae_mem_iff - theorem measure_theory.measurable_set_to_measurable - def measure_theory.measure.ae - theorem measure_theory.measure.ext - theorem measure_theory.measure.ext_iff - def measure_theory.measure.of_measurable - theorem measure_theory.measure.of_measurable_apply - theorem measure_theory.measure.to_outer_measure_injective - structure measure_theory.measure - theorem measure_theory.measure_Union_le - theorem measure_theory.measure_Union_null - theorem measure_theory.measure_Union_null_iff - theorem measure_theory.measure_bUnion_finset_le - theorem measure_theory.measure_bUnion_le - theorem measure_theory.measure_bUnion_lt_top - theorem measure_theory.measure_bUnion_null_iff - theorem measure_theory.measure_congr - theorem measure_theory.measure_empty - theorem measure_theory.measure_eq_extend - theorem measure_theory.measure_eq_induced_outer_measure - theorem measure_theory.measure_eq_infi' - theorem measure_theory.measure_eq_infi - theorem measure_theory.measure_eq_trim - theorem measure_theory.measure_mono - theorem measure_theory.measure_mono_ae - theorem measure_theory.measure_mono_null - theorem measure_theory.measure_mono_top - theorem measure_theory.measure_to_measurable - theorem measure_theory.measure_union_le - theorem measure_theory.measure_union_null - theorem measure_theory.measure_union_null_iff - theorem measure_theory.measure_zero_iff_ae_nmem - theorem measure_theory.mem_ae_iff - theorem measure_theory.nonempty_of_measure_ne_zero - theorem measure_theory.subset_to_measurable - def measure_theory.to_measurable - theorem measure_theory.to_outer_measure_apply - theorem measure_theory.to_outer_measure_eq_induced_outer_measure - theorem measure_theory.union_ae_eq_right +/- theorem subsingleton.ae_measurable Added src/measure_theory/measure_space_def.lean + theorem ae_measurable.ae_eq_mk + theorem ae_measurable.congr + theorem ae_measurable.measurable_mk + def ae_measurable.mk + def ae_measurable + theorem ae_measurable_congr + theorem ae_measurable_const + theorem ae_measurable_id' + theorem ae_measurable_id + theorem measurable.ae_measurable + theorem measurable.comp_ae_measurable + theorem measure_theory.ae_all_iff + theorem measure_theory.ae_ball_iff + theorem measure_theory.ae_eq_empty + theorem measure_theory.ae_eq_refl + theorem measure_theory.ae_eq_set + theorem measure_theory.ae_eq_symm + theorem measure_theory.ae_eq_trans + theorem measure_theory.ae_iff + theorem measure_theory.ae_imp_iff + theorem measure_theory.ae_le_set + theorem measure_theory.ae_of_all + theorem measure_theory.coe_to_outer_measure + theorem measure_theory.compl_mem_ae_iff + theorem measure_theory.diff_ae_eq_self + theorem measure_theory.exists_measurable_superset + theorem measure_theory.exists_measurable_superset_forall_eq + theorem measure_theory.exists_measurable_superset_iff_measure_eq_zero + theorem measure_theory.exists_measurable_superset_of_null + theorem measure_theory.frequently_ae_iff + theorem measure_theory.frequently_ae_mem_iff + theorem measure_theory.measurable_set_to_measurable + def measure_theory.measure.ae + theorem measure_theory.measure.ext + theorem measure_theory.measure.ext_iff + def measure_theory.measure.of_measurable + theorem measure_theory.measure.of_measurable_apply + theorem measure_theory.measure.to_outer_measure_injective + structure measure_theory.measure + theorem measure_theory.measure_Union_le + theorem measure_theory.measure_Union_null + theorem measure_theory.measure_Union_null_iff + theorem measure_theory.measure_bUnion_finset_le + theorem measure_theory.measure_bUnion_le + theorem measure_theory.measure_bUnion_lt_top + theorem measure_theory.measure_bUnion_null_iff + theorem measure_theory.measure_congr + theorem measure_theory.measure_empty + theorem measure_theory.measure_eq_extend + theorem measure_theory.measure_eq_induced_outer_measure + theorem measure_theory.measure_eq_infi' + theorem measure_theory.measure_eq_infi + theorem measure_theory.measure_eq_trim + theorem measure_theory.measure_mono + theorem measure_theory.measure_mono_ae + theorem measure_theory.measure_mono_null + theorem measure_theory.measure_mono_top + theorem measure_theory.measure_to_measurable + theorem measure_theory.measure_union_le + theorem measure_theory.measure_union_null + theorem measure_theory.measure_union_null_iff + theorem measure_theory.measure_zero_iff_ae_nmem + theorem measure_theory.mem_ae_iff + theorem measure_theory.nonempty_of_measure_ne_zero + theorem measure_theory.subset_to_measurable + def measure_theory.to_measurable + theorem measure_theory.to_outer_measure_apply + theorem measure_theory.to_outer_measure_eq_induced_outer_measure + theorem measure_theory.union_ae_eq_right Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/pi_system.lean Added src/measure_theory/tactic.lean Added test/measurability.lean 2021-06-09 15:40:05 8e25717 chore(geometry/euclidean/circumcenter): remove two `have`s in a proof (#7852) Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/circumcenter ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean 2021-06-09 15:40:04 d0ed2a4 chore(measure_theory/set_integral): put the definition of integrable_on into a new file (#7842) The file `measure_theory.set_integral` is split into two: the `integrable_on` predicate is put into its own file, which does not import `measure_theory.bochner_integration` (this puts the definition of that integrability property before the definition of the actual integral). The file `measure_theory.set_integral` retains all facts about `set_integral`. ESTIMATED CHANGES Added src/measure_theory/integrable_on.lean + theorem ae_measurable.measurable_at_filter_of_mem + theorem continuous.integrable_of_compact_closure_support + theorem continuous.integrable_on_compact + theorem continuous_linear_map.integrable_comp + theorem continuous_on.ae_measurable + theorem continuous_on.integrable_at_nhds_within + theorem continuous_on.integrable_on_compact + theorem indicator_ae_eq_restrict + theorem indicator_ae_eq_restrict_compl + theorem is_compact.integrable_on_of_nhds_within + theorem measurable_at_bot + def measurable_at_filter + theorem measure_theory.ae_measurable_indicator_iff + theorem measure_theory.has_finite_integral_restrict_of_bounded + theorem measure_theory.integrable.indicator + theorem measure_theory.integrable.integrable_on' + theorem measure_theory.integrable.integrable_on + theorem measure_theory.integrable_add + theorem measure_theory.integrable_at_filter.filter_mono + theorem measure_theory.integrable_at_filter.inf_ae_iff + theorem measure_theory.integrable_at_filter.inf_of_left + theorem measure_theory.integrable_at_filter.inf_of_right + def measure_theory.integrable_at_filter + theorem measure_theory.integrable_indicator_iff + theorem measure_theory.integrable_on.add_measure + theorem measure_theory.integrable_on.indicator + theorem measure_theory.integrable_on.integrable + theorem measure_theory.integrable_on.left_of_union + theorem measure_theory.integrable_on.mono + theorem measure_theory.integrable_on.mono_measure + theorem measure_theory.integrable_on.mono_set + theorem measure_theory.integrable_on.mono_set_ae + theorem measure_theory.integrable_on.restrict + theorem measure_theory.integrable_on.right_of_union + theorem measure_theory.integrable_on.union + def measure_theory.integrable_on + theorem measure_theory.integrable_on_add_measure + theorem measure_theory.integrable_on_const + theorem measure_theory.integrable_on_empty + theorem measure_theory.integrable_on_finite_union + theorem measure_theory.integrable_on_finset_union + theorem measure_theory.integrable_on_union + theorem measure_theory.integrable_on_univ + theorem measure_theory.integrable_on_zero + theorem measure_theory.measure.finite_at_filter.integrable_at_filter + theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto + theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto_ae + theorem piecewise_ae_eq_restrict + theorem piecewise_ae_eq_restrict_compl Modified src/measure_theory/set_integral.lean - theorem ae_measurable.measurable_at_filter_of_mem - theorem continuous.integrable_of_compact_closure_support - theorem continuous.integrable_on_compact - theorem continuous_linear_map.integrable_comp - theorem continuous_on.ae_measurable - theorem continuous_on.integrable_at_nhds_within - theorem continuous_on.integrable_on_compact - theorem indicator_ae_eq_restrict - theorem indicator_ae_eq_restrict_compl - theorem is_compact.integrable_on_of_nhds_within - theorem measurable_at_bot - def measurable_at_filter - theorem measure_theory.ae_measurable_indicator_iff - theorem measure_theory.has_finite_integral_restrict_of_bounded - theorem measure_theory.integrable.indicator - theorem measure_theory.integrable.integrable_on' - theorem measure_theory.integrable.integrable_on - theorem measure_theory.integrable_add - theorem measure_theory.integrable_at_filter.filter_mono - theorem measure_theory.integrable_at_filter.inf_ae_iff - theorem measure_theory.integrable_at_filter.inf_of_left - theorem measure_theory.integrable_at_filter.inf_of_right - def measure_theory.integrable_at_filter - theorem measure_theory.integrable_indicator_iff - theorem measure_theory.integrable_on.add_measure - theorem measure_theory.integrable_on.indicator - theorem measure_theory.integrable_on.integrable - theorem measure_theory.integrable_on.left_of_union - theorem measure_theory.integrable_on.mono - theorem measure_theory.integrable_on.mono_measure - theorem measure_theory.integrable_on.mono_set - theorem measure_theory.integrable_on.mono_set_ae - theorem measure_theory.integrable_on.restrict - theorem measure_theory.integrable_on.right_of_union - theorem measure_theory.integrable_on.union - def measure_theory.integrable_on - theorem measure_theory.integrable_on_add_measure - theorem measure_theory.integrable_on_const - theorem measure_theory.integrable_on_empty - theorem measure_theory.integrable_on_finite_union - theorem measure_theory.integrable_on_finset_union - theorem measure_theory.integrable_on_union - theorem measure_theory.integrable_on_univ - theorem measure_theory.integrable_on_zero - theorem measure_theory.measure.finite_at_filter.integrable_at_filter - theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto - theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto_ae - theorem piecewise_ae_eq_restrict - theorem piecewise_ae_eq_restrict_compl 2021-06-09 15:40:02 764e878 feat(algebra/ordered_group): `-abs a ≤ a` (#7839) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem neg_abs_le_self 2021-06-09 15:40:01 a9d4f3d fix(*): make some non-instances reducible (#7835) * Definitions that involve in instances might need to be reducible, see added library note. * This involves the definitions `*order.lift` / `function.injective.*` and `function.surjective.*` * This came up in #7645. ESTIMATED CHANGES Modified src/algebra/field.lean Modified src/algebra/group/inj_surj.lean Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/hierarchy_design.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/module/basic.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring/basic.lean Modified src/algebra/smul_with_zero.lean Modified src/group_theory/group_action/defs.lean Modified src/order/basic.lean +/- def linear_order.lift +/- def partial_order.lift +/- def preorder.lift 2021-06-09 15:40:00 20efef7 chore(algebra/field_power, data/set/intervals/basic): simpler proofs in the first file, fewer parentheses in the second one (#7831) This is mostly a cosmetic PR: I removed two calls to `linarith`, where a term-mode proof was very simple. I also removed some unnecessary parentheses in a different file. ESTIMATED CHANGES Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/field_power.lean Modified src/data/complex/exponential.lean +/- theorem real.cos_one_pos Modified src/data/set/intervals/basic.lean 2021-06-09 15:39:59 02d5370 chore(measure_theory/outer_measure): add extend_eq_top (#7827) ESTIMATED CHANGES Modified src/measure_theory/outer_measure.lean + theorem measure_theory.extend_eq_top 2021-06-09 15:39:58 fa7c6da docs(order/bounded_lattice): add module docstring (#7799) add module docstring and some sectioning ESTIMATED CHANGES Modified src/order/bounded_lattice.lean 2021-06-09 10:12:47 55abf1a chore(scripts): update nolints.txt (#7851) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-09 10:12:46 8676685 feat(ring_theory): every left-noetherian ring satisfies the strong rank condition (#7711) This PR also discards the proof that every left-noetherian ring satisfies the rank condition, because we already have in #7683 that this implies that. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/module/submodule_lattice.lean + def submodule.bot_equiv_punit + def submodule.top_equiv_self Modified src/analysis/normed_space/inner_product.lean Modified src/data/equiv/basic.lean + theorem equiv.sum_arrow_equiv_prod_arrow_apply_fst + theorem equiv.sum_arrow_equiv_prod_arrow_apply_snd + theorem equiv.sum_arrow_equiv_prod_arrow_symm_apply_inl + theorem equiv.sum_arrow_equiv_prod_arrow_symm_apply_inr Modified src/data/set/disjointed.lean + theorem pairwise_disjoint_on_nat + theorem pairwise_on_nat Modified src/linear_algebra/basic.lean + theorem submodule.comap_inf_map_of_injective + theorem submodule.comap_infi_map_of_injective + theorem submodule.comap_map_eq_of_injective + theorem submodule.comap_sup_map_of_injective + theorem submodule.comap_supr_map_of_injective + theorem submodule.comap_surjective_of_injective + def submodule.gci_map_comap + theorem submodule.map_injective_of_injective + theorem submodule.map_le_map_iff_of_injective + theorem submodule.map_strict_mono_of_injective Modified src/linear_algebra/invariant_basis_number.lean Modified src/linear_algebra/pi.lean + def linear_equiv.sum_arrow_lequiv_prod_arrow + theorem linear_equiv.sum_arrow_lequiv_prod_arrow_apply_fst + theorem linear_equiv.sum_arrow_lequiv_prod_arrow_apply_snd + theorem linear_equiv.sum_arrow_lequiv_prod_arrow_symm_apply_inl + theorem linear_equiv.sum_arrow_lequiv_prod_arrow_symm_apply_inr Modified src/linear_algebra/prod.lean + def linear_map.tailing + theorem linear_map.tailing_disjoint_tunnel_succ + theorem linear_map.tailing_le_tunnel + def linear_map.tailing_linear_equiv + theorem linear_map.tailing_sup_tunnel_succ_le_tunnel + def linear_map.tailings + theorem linear_map.tailings_disjoint_tailing + theorem linear_map.tailings_disjoint_tunnel + theorem linear_map.tailings_succ + theorem linear_map.tailings_zero + def linear_map.tunnel + def linear_map.tunnel_aux + theorem linear_map.tunnel_aux_injective + def submodule.fst + def submodule.fst_equiv + theorem submodule.fst_inf_snd + theorem submodule.fst_map_fst + theorem submodule.fst_map_snd + theorem submodule.fst_sup_snd + def submodule.snd + def submodule.snd_equiv + theorem submodule.snd_map_fst + theorem submodule.snd_map_snd Modified src/logic/unique.lean Modified src/order/bounded_lattice.lean + theorem eq_bot_of_disjoint_absorbs Modified src/order/modular_lattice.lean + theorem disjoint.disjoint_sup_left_of_disjoint_sup_right Added src/order/partial_sups.lean + theorem le_partial_sups + def partial_sups + theorem partial_sups_disjoint_of_disjoint + theorem partial_sups_eq + theorem partial_sups_le + theorem partial_sups_succ + theorem partial_sups_zero Modified src/ring_theory/noetherian.lean +/- theorem finite_of_linear_independent +/- theorem is_noetherian.bijective_of_surjective_endomorphism + theorem is_noetherian.disjoint_partial_sups_eventually_bot +/- theorem is_noetherian.induction +/- theorem is_noetherian.injective_of_surjective_endomorphism +/- theorem is_noetherian_iff_well_founded +/- theorem monotone_stabilizes_iff_noetherian +/- theorem set_has_maximal_iff_noetherian 2021-06-09 10:12:45 47ad680 feat(measure_theory/interval_integral): integration by substitution / change of variables (#7273) Given that `f` has a derivative at `f'` everywhere on `interval a b`, `∫ x in a..b, (g ∘ f) x * f' x = ∫ x in f a..f b, g x`. Co-authored by @ADedecker ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_comp_mul_deriv' + theorem interval_integral.integral_comp_mul_deriv Modified test/integration.lean 2021-06-09 06:11:41 faa58e5 refactor(algebra/module/projective) make is_projective a class (#7830) Make `is_projective` a class. ESTIMATED CHANGES Modified src/algebra/category/Module/projective.lean Modified src/algebra/module/projective.lean - theorem is_projective.lifting_property - theorem is_projective.of_free - theorem is_projective.of_lifting_property' - theorem is_projective.of_lifting_property - def is_projective + theorem module.projective_def + theorem module.projective_lifting_property + theorem module.projective_of_free + theorem module.projective_of_lifting_property' + theorem module.projective_of_lifting_property 2021-06-09 06:11:39 c210d0f feat(topology/category/limits): Topological bases in cofiltered limits (#7820) This PR proves a theorem which provides a simple characterization of certain topological bases in a cofiltered limit of topological spaces. Eventually I will specialize this assertion to the case where the topological spaces are profinite, and the `T i` are the topological bases given by clopen sets. This generalizes a lemma from LTE. ESTIMATED CHANGES Modified src/topology/category/Top/basic.lean + def Top.homeo_of_iso + def Top.iso_of_homeo + theorem Top.of_homeo_of_iso + theorem Top.of_iso_of_homeo Modified src/topology/category/Top/limits.lean + theorem Top.is_topological_basis_cofiltered_limit + def Top.limit_cone_infi + def Top.limit_cone_infi_is_limit 2021-06-09 06:11:38 34c433d feat(data/finsupp): generalize finsupp.has_scalar to require only distrib_mul_action instead of semimodule (#7819) This propagates the generalization to (add_)monoid_algebra and mv_polynomial. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_smul +/- theorem finsupp.filter_smul +/- theorem finsupp.map_domain_smul +/- theorem finsupp.map_range_smul +/- theorem finsupp.smul_apply +/- theorem finsupp.smul_single +/- theorem finsupp.sum_smul_index' +/- theorem finsupp.support_smul Modified src/data/finsupp/to_dfinsupp.lean +/- theorem dfinsupp.to_finsupp_smul +/- theorem finsupp.to_dfinsupp_smul Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.coeff_smul 2021-06-09 06:11:37 393f638 feat(ring_theory/localization): Make local_ring_hom more flexible (#7787) Make `localization.local_ring_hom` more flexible, by allowing two ideals `I` and `J` as arguments, with the assumption that `I` equals `ideal.comap f J`. Also add lemmas about identity and composition. ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem localization.local_ring_hom_comp + theorem localization.local_ring_hom_id +/- theorem localization.local_ring_hom_mk' +/- theorem localization.local_ring_hom_to_map +/- theorem localization.local_ring_hom_unique 2021-06-08 19:13:24 5c6d3bc feat(topology/instances/ereal): more on ereal, notably its topology (#7765) ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean Modified src/data/real/ereal.lean + def ennreal.to_ereal + theorem ereal.ad_eq_top_iff + theorem ereal.add_lt_add + theorem ereal.add_lt_add_left_coe + theorem ereal.add_lt_add_of_lt_of_le + theorem ereal.add_lt_add_right_coe + theorem ereal.add_lt_top_iff + theorem ereal.add_top + theorem ereal.bot_add_bot + theorem ereal.bot_add_coe + theorem ereal.bot_lt_coe + theorem ereal.bot_lt_coe_ennreal + theorem ereal.bot_lt_top + theorem ereal.bot_lt_zero + theorem ereal.bot_ne_coe + theorem ereal.bot_ne_top + theorem ereal.bot_ne_zero + theorem ereal.coe_add + theorem ereal.coe_add_bot + theorem ereal.coe_ennreal_add + theorem ereal.coe_ennreal_eq_coe_ennreal_iff + theorem ereal.coe_ennreal_eq_top_iff + theorem ereal.coe_ennreal_le_coe_ennreal_iff + theorem ereal.coe_ennreal_lt_coe_ennreal_iff + theorem ereal.coe_ennreal_ne_bot + theorem ereal.coe_ennreal_nonneg + theorem ereal.coe_ennreal_top + theorem ereal.coe_ennreal_zero + theorem ereal.coe_lt_top + theorem ereal.coe_ne_bot + theorem ereal.coe_ne_top + theorem ereal.coe_neg + theorem ereal.coe_nnreal_eq_coe_real + theorem ereal.coe_nnreal_lt_top + theorem ereal.coe_nnreal_ne_top + theorem ereal.coe_real_ereal_eq_coe_to_nnreal_sub_coe_to_nnreal + theorem ereal.coe_zero + theorem ereal.exists_rat_btwn_of_lt + theorem ereal.lt_iff_exists_rat_btwn + def ereal.ne_top_bot_equiv_real + theorem ereal.neg_bot + theorem ereal.neg_eg_bot_iff + theorem ereal.neg_eg_top_iff + theorem ereal.neg_eg_zero_iff + theorem ereal.neg_eq_neg_iff +/- theorem ereal.neg_inj + theorem ereal.neg_le_neg_iff + theorem ereal.neg_lt_iff_neg_lt + theorem ereal.neg_lt_of_neg_lt + def ereal.neg_order_iso + theorem ereal.neg_top + theorem ereal.neg_zero + theorem ereal.sub_eq_add_neg + theorem ereal.sub_le_sub + theorem ereal.sub_lt_sub_of_lt_of_le + theorem ereal.sub_zero + def ereal.to_real + theorem ereal.to_real_add + theorem ereal.to_real_bot + theorem ereal.to_real_coe + theorem ereal.to_real_coe_ennreal + theorem ereal.to_real_le_to_real + theorem ereal.to_real_neg + theorem ereal.to_real_sub + theorem ereal.to_real_top + theorem ereal.to_real_zero + theorem ereal.top_add + theorem ereal.top_ne_coe + theorem ereal.top_ne_zero + theorem ereal.zero_lt_top + theorem ereal.zero_ne_bot + theorem ereal.zero_ne_top + theorem ereal.zero_sub + def real.to_ereal Modified src/order/conditionally_complete_lattice.lean Added src/topology/instances/ereal.lean + theorem continuous_coe_ennreal_ereal + theorem continuous_coe_real_ereal + theorem ereal.continuous_at_add + theorem ereal.continuous_at_add_bot_bot + theorem ereal.continuous_at_add_bot_coe + theorem ereal.continuous_at_add_coe_bot + theorem ereal.continuous_at_add_coe_coe + theorem ereal.continuous_at_add_coe_top + theorem ereal.continuous_at_add_top_coe + theorem ereal.continuous_at_add_top_top + theorem ereal.continuous_coe_ennreal_iff + theorem ereal.continuous_coe_iff + theorem ereal.continuous_neg + theorem ereal.continuous_on_to_real + theorem ereal.embedding_coe + theorem ereal.embedding_coe_ennreal + theorem ereal.mem_nhds_bot_iff + theorem ereal.mem_nhds_top_iff + def ereal.ne_bot_top_homeomorph_real + def ereal.neg_homeo + theorem ereal.nhds_bot' + theorem ereal.nhds_bot + theorem ereal.nhds_coe + theorem ereal.nhds_coe_coe + theorem ereal.nhds_top' + theorem ereal.nhds_top + theorem ereal.open_embedding_coe + theorem ereal.tendsto_coe + theorem ereal.tendsto_coe_ennreal + theorem ereal.tendsto_nhds_bot_iff_real + theorem ereal.tendsto_nhds_top_iff_real + theorem ereal.tendsto_to_real 2021-06-08 19:13:23 75c81de feat(measure_theory/integration): a measurable function is a series of simple functions (#7764) ESTIMATED CHANGES Modified src/measure_theory/integration.lean + def measure_theory.simple_func.eapprox_diff + theorem measure_theory.simple_func.eapprox_lt_top + theorem measure_theory.simple_func.sum_eapprox_diff + theorem measure_theory.simple_func.tsum_eapprox_diff 2021-06-08 19:13:22 39406bb feat(model_theory/basic): First-order languages, structures, homomorphisms, embeddings, and equivs (#7754) Defines the following notions from first-order logic: - languages - structures - homomorphisms - embeddings - equivalences (isomorphisms) The definitions of languages and structures take inspiration from the Flypitch project. ESTIMATED CHANGES Modified docs/references.bib Added src/model_theory/basic.lean + def first_order.language.const + theorem first_order.language.embedding.coe_injective + theorem first_order.language.embedding.coe_to_hom + def first_order.language.embedding.comp + theorem first_order.language.embedding.comp_apply + theorem first_order.language.embedding.comp_assoc + theorem first_order.language.embedding.ext + theorem first_order.language.embedding.ext_iff + theorem first_order.language.embedding.injective + theorem first_order.language.embedding.map_fun + theorem first_order.language.embedding.map_rel + def first_order.language.embedding.refl + theorem first_order.language.embedding.refl_apply + def first_order.language.embedding.to_hom + def first_order.language.empty + theorem first_order.language.equiv.coe_injective + theorem first_order.language.equiv.coe_to_embedding + theorem first_order.language.equiv.coe_to_hom + def first_order.language.equiv.comp + theorem first_order.language.equiv.comp_apply + theorem first_order.language.equiv.comp_assoc + theorem first_order.language.equiv.ext + theorem first_order.language.equiv.ext_iff + theorem first_order.language.equiv.injective + theorem first_order.language.equiv.map_fun + theorem first_order.language.equiv.map_rel + def first_order.language.equiv.refl + theorem first_order.language.equiv.refl_apply + def first_order.language.equiv.symm + def first_order.language.equiv.to_embedding + theorem first_order.language.equiv.to_embedding_to_hom + def first_order.language.equiv.to_hom + theorem first_order.language.hom.coe_injective + def first_order.language.hom.comp + theorem first_order.language.hom.comp_apply + theorem first_order.language.hom.comp_assoc + theorem first_order.language.hom.ext + theorem first_order.language.hom.ext_iff + def first_order.language.hom.id + theorem first_order.language.hom.id_apply + theorem first_order.language.hom.map_fun + theorem first_order.language.hom.map_rel + theorem first_order.language.hom.to_fun_eq_coe + structure first_order.language 2021-06-08 06:35:33 42c4237 chore(mv_polynomial/equiv): speed up elaboration by adjusting priorities (#7840) `option_equiv_left` timed out several times in bors, since the introduction of non-unital rings. We fix this by adjusting the priority to make sure that the problematic instance is found right away. Also speed up circumcenter file (which also just timed out in bors) by squeezing simps. ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean Modified src/geometry/euclidean/circumcenter.lean 2021-06-07 15:40:25 320da57 chore(data/fintype/basic): add fintype instance for `is_empty` (#7692) ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean Modified src/data/fintype/basic.lean + theorem finset.univ_eq_empty' + theorem fintype.card_of_is_empty + theorem fintype.univ_of_is_empty Modified src/data/fintype/card.lean Modified test/matrix.lean 2021-06-07 15:40:24 6e67536 feat(category/limits): kernel.map (#7623) A generalization of a lemma from LTE, stated for a category with (co)kernels. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.parallel_pair_hom + theorem category_theory.limits.parallel_pair_hom_app_one + theorem category_theory.limits.parallel_pair_hom_app_zero Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel.map + theorem category_theory.limits.cokernel.map_desc + theorem category_theory.limits.kernel.lift_map + def category_theory.limits.kernel.map 2021-06-07 15:40:23 fb72599 feat(algebra/periodic): define periodicity (#7572) This PR introduces a general notion of periodicity. It also includes proofs of the "usual" properties of periodic (and antiperiodic) functions. ESTIMATED CHANGES Added src/algebra/periodic.lean + theorem function.antiperiodic.add + theorem function.antiperiodic.const_inv_mul + theorem function.antiperiodic.const_inv_smul' + theorem function.antiperiodic.const_inv_smul + theorem function.antiperiodic.const_mul + theorem function.antiperiodic.const_smul' + theorem function.antiperiodic.const_smul + theorem function.antiperiodic.div + theorem function.antiperiodic.div_inv + theorem function.antiperiodic.eq + theorem function.antiperiodic.int_even_mul_periodic + theorem function.antiperiodic.int_mul_eq_of_eq_zero + theorem function.antiperiodic.int_odd_mul_antiperiodic + theorem function.antiperiodic.mul + theorem function.antiperiodic.mul_const' + theorem function.antiperiodic.mul_const + theorem function.antiperiodic.mul_const_inv + theorem function.antiperiodic.nat_even_mul_periodic + theorem function.antiperiodic.nat_mul_eq_of_eq_zero + theorem function.antiperiodic.nat_odd_mul_antiperiodic + theorem function.antiperiodic.neg + theorem function.antiperiodic.neg_eq + theorem function.antiperiodic.periodic + theorem function.antiperiodic.sub + theorem function.antiperiodic.sub_eq + def function.antiperiodic + theorem function.periodic.add_antiperiod + theorem function.periodic.add_antiperiod_eq + theorem function.periodic.add_period + theorem function.periodic.comp + theorem function.periodic.comp_add_hom + theorem function.periodic.const_inv_mul + theorem function.periodic.const_inv_smul' + theorem function.periodic.const_inv_smul + theorem function.periodic.const_mul + theorem function.periodic.const_smul' + theorem function.periodic.const_smul + theorem function.periodic.div + theorem function.periodic.div_const + theorem function.periodic.eq + theorem function.periodic.gsmul + theorem function.periodic.gsmul_eq + theorem function.periodic.int_mul + theorem function.periodic.int_mul_eq + theorem function.periodic.mul + theorem function.periodic.mul_const' + theorem function.periodic.mul_const + theorem function.periodic.mul_const_inv + theorem function.periodic.nat_mul + theorem function.periodic.nat_mul_eq + theorem function.periodic.neg + theorem function.periodic.neg_eq + theorem function.periodic.neg_nat_mul + theorem function.periodic.neg_nsmul + theorem function.periodic.nsmul + theorem function.periodic.nsmul_eq + theorem function.periodic.sub_antiperiod + theorem function.periodic.sub_antiperiod_eq + theorem function.periodic.sub_eq + theorem function.periodic.sub_gsmul_eq + theorem function.periodic.sub_int_mul_eq + theorem function.periodic.sub_nat_mul_eq + theorem function.periodic.sub_nsmul_eq + theorem function.periodic.sub_period + def function.periodic + theorem function.periodic_with_period_zero 2021-06-07 15:40:22 e55d470 feat(specific_groups/alternating_group): The alternating group on 5 elements is simple (#7502) Shows that `is_simple_group (alternating_group (fin 5))` ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.le_sum_of_mem Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.cycle_type_of_card_le_mem_cycle_type_add_two + theorem equiv.perm.is_three_cycle.is_three_cycle_sq + theorem equiv.perm.is_three_cycle.order_of + theorem equiv.perm.le_card_support_of_mem_cycle_type + theorem equiv.perm.mem_cycle_type_iff Modified src/group_theory/specific_groups/alternating.lean + theorem alternating_group.is_conj_swap_mul_swap_of_cycle_type_two + theorem alternating_group.nontrivial_of_three_le_card + theorem alternating_group.normal_closure_swap_mul_swap_five + theorem equiv.perm.is_three_cycle_sq_of_three_mem_cycle_type_five Modified src/group_theory/subgroup.lean + theorem is_conj.normal_closure_eq_top_of + theorem monoid_hom.cod_restrict_apply 2021-06-07 15:40:20 fa7b5f2 feat(linear_algebra/quadratic_form): Complex version of Sylvester's law of inertia (#7416) Every nondegenerate complex quadratic form is equivalent to a quadratic form corresponding to the sum of squares. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + def basis.group_smul + theorem basis.group_smul_apply + theorem basis.group_smul_span_eq_top + def basis.is_unit_smul + theorem basis.is_unit_smul_apply + def basis.units_smul + theorem basis.units_smul_apply + theorem basis.units_smul_span_eq_top Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.group_smul + theorem linear_independent.units_smul Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.basis_repr_apply + theorem quadratic_form.equivalent_sum_squares + theorem quadratic_form.equivalent_weighted_sum_squares_of_nondegenerate' + def quadratic_form.isometry_of_comp_linear_equiv + theorem quadratic_form.isometry_of_is_Ortho_apply + def quadratic_form.weighted_sum_squares + theorem quadratic_form.weighted_sum_squares_apply 2021-06-07 15:40:19 ef7aa94 feat(algebra/ring/basic): define non-unital, non-associative rings (#6786) This introduces the following typeclasses beneath `semiring`: * `non_unital_non_assoc_semiring` * `non_unital_semiring` * `non_assoc_semiring` The goal is to use these to support a non-unital, non-associative algebras. The typeclass requirements of `subring`, `subsemiring`, and `ring_hom` are relaxed from `semiring` to `non_assoc_semiring`. Instances of these new typeclasses are added for: * alias types: * `opposite` * `ulift` * convolutive types: * `(add_)monoid_algebra` * `direct_sum` * `set_semiring` * `hahn_series` * elementwise types: * `locally_constant` * `pi` * `prod` * `finsupp` ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/big_operators/ring.lean Modified src/algebra/category/CommRing/basic.lean + def SemiRing.assoc_ring_hom Modified src/algebra/char_p/pi.lean Modified src/algebra/direct_sum_graded.lean Modified src/algebra/monoid_algebra.lean Modified src/algebra/opposites.lean Modified src/algebra/pointwise.lean Modified src/algebra/ring/basic.lean +/- theorem add_monoid_hom.coe_mul_left +/- theorem add_monoid_hom.coe_mul_right +/- def add_monoid_hom.mul_left +/- def add_monoid_hom.mul_right +/- theorem add_monoid_hom.mul_right_apply +/- theorem boole_mul +/- theorem mul_boole +/- theorem ring_hom.comp_assoc +/- def ring_hom.id +/- theorem ring_hom.injective_iff +/- theorem ring_hom.is_unit_map +/- def ring_hom.mk' +/- structure ring_hom Modified src/algebra/ring/pi.lean Modified src/algebra/ring/prod.lean Modified src/algebra/ring/ulift.lean +/- def ulift.ring_equiv Modified src/analysis/special_functions/trigonometric.lean Modified src/data/equiv/ring.lean +/- theorem ring_equiv.coe_ring_hom_inj_iff Modified src/data/equiv/transfer_instance.lean Modified src/data/finsupp/pointwise.lean Modified src/data/multiset/antidiagonal.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/nat/cast.lean +/- theorem nat.cast_comm +/- theorem nat.cast_commute +/- theorem nat.cast_mul +/- def nat.cast_ring_hom +/- theorem nat.coe_cast_ring_hom Modified src/deprecated/group.lean Modified src/field_theory/perfect_closure.lean Modified src/group_theory/submonoid/membership.lean Modified src/ring_theory/hahn_series.lean +/- theorem hahn_series.emb_domain_mul +/- theorem hahn_series.emb_domain_one +/- def hahn_series.emb_domain_ring_hom +/- theorem hahn_series.emb_domain_ring_hom_C +/- theorem hahn_series.mul_coeff +/- theorem hahn_series.mul_coeff_left' +/- theorem hahn_series.mul_coeff_order_add_order +/- theorem hahn_series.mul_coeff_right' +/- theorem hahn_series.mul_single_coeff_add +/- theorem hahn_series.mul_single_zero_coeff +/- theorem hahn_series.order_one +/- theorem hahn_series.single_mul_coeff_add +/- theorem hahn_series.single_zero_mul_coeff +/- theorem hahn_series.support_mul_subset_add_support +/- theorem hahn_series.support_one Modified src/ring_theory/subsemiring.lean +/- theorem subsemiring.coe_pow +/- theorem subsemiring.list_prod_mem +/- theorem subsemiring.mem_closure_iff_exists_list +/- theorem subsemiring.multiset_sum_mem +/- theorem subsemiring.pow_mem +/- theorem subsemiring.smul_def +/- theorem subsemiring.sum_mem +/- structure subsemiring Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/tactic/ring.lean Modified src/topology/locally_constant/algebra.lean 2021-06-07 15:40:18 1eb3ae4 feat(order/symm_diff): symmetric difference operator (#6469) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean + theorem compl_eq_iff_is_compl + theorem disjoint.disjoint_sdiff_left + theorem disjoint.disjoint_sdiff_right - theorem disjoint_sdiff + theorem disjoint_sdiff_self_left + theorem disjoint_sdiff_self_right + theorem eq_compl_iff_is_compl + theorem sdiff_sdiff_self Modified src/order/bounded_lattice.lean + theorem disjoint.eq_bot_of_le + theorem disjoint.of_disjoint_inf_of_le' + theorem disjoint.of_disjoint_inf_of_le Added src/order/symm_diff.lean + theorem bot_symm_diff + theorem compl_symm_diff + theorem compl_symm_diff_self + theorem disjoint.disjoint_symm_diff_of_disjoint + theorem disjoint.symm_diff_eq_sup + theorem disjoint_symm_diff_inf + theorem is_compl.symm_diff_eq_top + theorem sdiff_symm_diff' + theorem sdiff_symm_diff + theorem sdiff_symm_diff_self + def symm_diff + theorem symm_diff_assoc + theorem symm_diff_bot + theorem symm_diff_comm + theorem symm_diff_compl_self + theorem symm_diff_def + theorem symm_diff_eq + theorem symm_diff_eq_bot + theorem symm_diff_eq_iff_sdiff_eq + theorem symm_diff_eq_left + theorem symm_diff_eq_right + theorem symm_diff_eq_sup + theorem symm_diff_eq_sup_sdiff_inf + theorem symm_diff_eq_top_iff + theorem symm_diff_eq_xor + theorem symm_diff_le_sup + theorem symm_diff_left_inj + theorem symm_diff_right_inj + theorem symm_diff_sdiff + theorem symm_diff_sdiff_left + theorem symm_diff_sdiff_right + theorem symm_diff_self + theorem symm_diff_symm_diff_left + theorem symm_diff_symm_diff_right' + theorem symm_diff_symm_diff_right + theorem symm_diff_symm_diff_self' + theorem symm_diff_symm_diff_self + theorem symm_diff_top + theorem top_symm_diff 2021-06-07 07:44:02 136e0d6 feat(data/fintype/basic): The cardinality of a set is at most the cardinality of the universe (#7823) I think that the hypothesis `[fintype ↥s]` can be avoided with the use of classical logic. E.g., `noncomputable instance set_fintype' {α : Type*} [fintype α] (s : set α) : fintype s :=by { classical, exact set_fintype s }` Would it make sense to add this? ESTIMATED CHANGES Modified src/data/fintype/basic.lean +/- def set_fintype + theorem set_fintype_card_le_univ 2021-06-07 07:44:01 4f38062 feat(algebra/lie/base_change): define extension and restriction of scalars for Lie algebras (#7808) ESTIMATED CHANGES Added src/algebra/lie/base_change.lean + theorem lie_algebra.extend_scalars.bracket_tmul Modified src/algebra/lie/basic.lean 2021-06-07 07:44:00 f57f9c8 feat(ring_theory): define the field/algebra norm (#7636) This PR defines the field norm `algebra.norm K L : L →* K`, where `L` is a finite field extension of `K`. In fact, it defines this for any `algebra R S` instance, where `R` and `S` are integral domains. (With a default value of `1` if `S` does not have a finite `R`-basis.) The approach is to basically copy `ring_theory/trace.lean` and replace `trace` with `det` or `norm` as appropriate. ESTIMATED CHANGES Added src/ring_theory/norm.lean + theorem algebra.norm_algebra_map + theorem algebra.norm_algebra_map_of_basis + theorem algebra.norm_apply + theorem algebra.norm_eq_matrix_det + theorem algebra.norm_eq_one_of_not_exists_basis 2021-06-07 04:52:49 61ca31a chore(scripts): update nolints.txt (#7829) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-06-07 04:52:49 7a21ae1 chore(algebra/algebra/subalgebra): make inf and top definitionally convenient (#7812) This adjusts the galois insertion such that `lemma coe_inf (S T : subalgebra R A) : (↑(S ⊓ T) : set A) = S ∩ T := rfl`. It also adds lots of trivial `simp` lemmas that were missing about the interactions of various coercions and lattice operations. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem algebra.Inf_to_submodule + theorem algebra.Inf_to_subsemiring + theorem algebra.coe_Inf + theorem algebra.coe_inf + theorem algebra.coe_infi + theorem algebra.coe_top + theorem algebra.inf_to_submodule + theorem algebra.inf_to_subsemiring + theorem algebra.infi_to_submodule + theorem algebra.mem_Inf + theorem algebra.mem_inf + theorem algebra.mem_infi +/- theorem algebra.mem_top +/- theorem algebra.top_to_submodule +/- theorem algebra.top_to_subsemiring + theorem subalgebra.coe_to_submodule + theorem subalgebra.coe_to_subring + theorem subalgebra.coe_to_subsemiring + theorem subalgebra.mem_to_subring + theorem subalgebra.mem_to_subsemiring + theorem subalgebra.prod_inf_prod Modified src/ring_theory/adjoin/basic.lean - theorem algebra.coe_inf - theorem algebra.prod_inf_prod Modified src/ring_theory/finiteness.lean Modified src/topology/continuous_function/stone_weierstrass.lean 2021-06-07 01:12:38 685289c feat(algebra/pointwise): pow_mem_pow (#7822) If `a ∈ s` then `a ^ n ∈ s ^ n`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.pow_mem_pow + theorem set.pow_subset_pow 2021-06-07 01:12:37 29d0c63 feat(measure_theory): add a few integration-related lemmas (#7821) These are lemmas I proved while working on #7164. Some of them are actually not used anymore in that PR because I'm refactoring it, but I thought they would be useful anyway, so here there are. ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_mono_set' + theorem measure_theory.lintegral_mono_set Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.restrict_comm + theorem measure_theory.measure.restrict_mono' Modified src/measure_theory/set_integral.lean + theorem measure_theory.integrable_on.restrict + theorem measure_theory.set_integral_mono_set 2021-06-07 01:12:36 ef7c335 fix(data/mv_polynomial): add missing decidable arguments (#7817) This: * fixes a doubled instance name, `finsupp.finsupp.decidable_eq`. Note the linter deliberate ignores instances, as they are often autogenerated * generalizes `finsupp.decidable_le` to all canonically_ordered_monoids * adds missing `decidable_eq` arguments to `mv_polynomial` and `mv_power_series` lemmas whose statement contains an `if`. These might in future be lintable. * adds some missing lemmas about `mv_polynomial` to clean up a few proofs. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.coeff_C +/- theorem mv_polynomial.coeff_X' +/- theorem mv_polynomial.coeff_X_pow +/- theorem mv_polynomial.coeff_monomial +/- theorem mv_polynomial.coeff_mul_X' + theorem mv_polynomial.coeff_one + theorem mv_polynomial.coeff_zero_C + theorem mv_polynomial.coeff_zero_one +/- theorem mv_polynomial.constant_coeff_monomial Modified src/data/mv_polynomial/pderiv.lean +/- theorem mv_polynomial.pderiv_X Modified src/data/polynomial/field_division.lean Modified src/ring_theory/polynomial/homogeneous.lean Modified src/ring_theory/power_series/basic.lean +/- theorem mv_power_series.coeff_C +/- theorem mv_power_series.coeff_X +/- theorem mv_power_series.coeff_X_pow +/- theorem mv_power_series.coeff_index_single_X +/- theorem mv_power_series.coeff_inv +/- theorem mv_power_series.coeff_inv_aux +/- theorem mv_power_series.coeff_inv_of_unit +/- theorem mv_power_series.coeff_monomial +/- theorem mv_power_series.coeff_one + theorem mv_power_series.monomial_def +/- theorem power_series.coeff_zero_C +/- theorem power_series.coeff_zero_X +/- theorem power_series.order_monomial 2021-06-07 01:12:35 90ae36e docs(order/order_iso_nat): add module docstring (#7804) add module docstring ESTIMATED CHANGES Modified src/order/order_iso_nat.lean +/- def rel_embedding.nat_gt +/- def rel_embedding.nat_lt +/- theorem rel_embedding.nat_lt_apply 2021-06-06 19:30:18 4c8a627 docs(order/directed): add module docstring (#7779) add module docstring ESTIMATED CHANGES Modified src/order/directed.lean +/- def directed +/- def directed_on 2021-06-06 03:28:07 e3f897c feat(algebra/char_p): characteristic of fraction_ring (#7703) Adding the characteristics of a `fraction_ring` for an integral domain. ESTIMATED CHANGES Added src/algebra/char_p/algebra.lean + theorem char_p_of_injective_algebra_map + theorem char_zero_of_injective_algebra_map Modified src/algebra/char_p/default.lean 2021-06-06 03:28:06 ba2c056 feat(data/list/nodup): nodup.pairwise_of_forall_ne (#7587) ESTIMATED CHANGES Modified src/data/list/nodup.lean + theorem list.nodup.pairwise_of_forall_ne + theorem list.nodup.pairwise_of_set_pairwise_on Modified src/data/list/pairwise.lean + theorem list.pairwise.set_pairwise_on + theorem list.pairwise_of_reflexive_of_forall_ne + theorem list.pairwise_of_reflexive_on_dupl_of_forall_ne 2021-06-05 09:09:15 7021ff9 feat(linear_algebra/basis): use is_empty instead of ¬nonempty (#7815) This removes the need for `basis.of_dim_eq_zero'` and `basis_of_finrank_zero'`, as these special cases are now covered by the unprimed versions and typeclass search. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/data/finsupp/basic.lean Modified src/linear_algebra/basis.lean - theorem basis.empty_unique Modified src/linear_algebra/dimension.lean - def basis.of_dim_eq_zero' - theorem basis.of_dim_eq_zero'_apply +/- def basis.of_dim_eq_zero +/- theorem basis.of_dim_eq_zero_apply Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/free_module_pid.lean Modified src/linear_algebra/quadratic_form.lean 2021-06-04 19:29:36 a4ae4ad chore(order/(bounded,modular)_lattice): avoid classical.some in `is_complemented` instances (#7814) There's no reason to use it here. ESTIMATED CHANGES Modified src/order/bounded_lattice.lean Modified src/order/modular_lattice.lean 2021-06-04 19:29:35 8b5ff9c feat(analysis/special_functions/integrals): `integral_log` (#7732) The integral of the (real) logarithmic function over the interval `[a, b]`, provided that `0 ∉ interval a b`. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean + theorem integral_log + theorem integral_log_of_neg + theorem integral_log_of_pos Modified test/integration.lean 2021-06-04 16:08:36 0b09858 feat(linear_algebra/basic): add a unique instance for linear_equiv (#7816) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_equiv.coe_zero + theorem linear_equiv.zero_apply + theorem linear_equiv.zero_symm 2021-06-04 13:25:42 65e3b04 feat(linear_algebra/determinant): various `basis.det` lemmas (#7669) A selection of results that I needed for computing the value of `basis.det`. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.constr_comp + theorem basis.map_equiv Modified src/linear_algebra/determinant.lean + theorem basis.det_comp + theorem basis.det_map + theorem basis.det_reindex + theorem basis.det_reindex_symm Modified src/linear_algebra/matrix/basis.lean + theorem basis.to_matrix_map + theorem basis.to_matrix_reindex' + theorem basis.to_matrix_reindex 2021-06-04 09:53:02 1a62bb4 feat(linear_algebra): strong rank condition implies rank condition (#7683) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.congr_fun + theorem finsupp.equiv_fun_on_fintype_single + theorem finsupp.equiv_fun_on_fintype_symm_single Modified src/linear_algebra/basic.lean + theorem finsupp.linear_equiv_fun_on_fintype_single + theorem finsupp.linear_equiv_fun_on_fintype_symm_single Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finsupp.lean + theorem linear_map.left_inverse_splitting_of_finsupp_surjective + theorem linear_map.left_inverse_splitting_of_fun_on_fintype_surjective + def linear_map.splitting_of_finsupp_surjective + theorem linear_map.splitting_of_finsupp_surjective_injective + theorem linear_map.splitting_of_finsupp_surjective_splits + def linear_map.splitting_of_fun_on_fintype_surjective + theorem linear_map.splitting_of_fun_on_fintype_surjective_injective + theorem linear_map.splitting_of_fun_on_fintype_surjective_splits Modified src/linear_algebra/invariant_basis_number.lean 2021-06-04 03:56:15 be183e2 chore(data/finset|multiset|finsupp): reduce algebra/ imports (#7797) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem multiset.abs_sum_le_sum_abs Modified src/algebra/big_operators/finsupp.lean + theorem finsupp.mul_sum + theorem finsupp.sum_mul Modified src/algebra/gcd_monoid.lean Modified src/algebra/group_power/lemmas.lean - theorem list.prod_repeat - theorem list.sum_repeat - theorem nat.nsmul_eq_mul Modified src/algebra/iterate_hom.lean Modified src/algebra/monoid_algebra.lean Modified src/data/finsupp/basic.lean - theorem finsupp.mul_sum - theorem finsupp.sum_mul Modified src/data/finsupp/lattice.lean Modified src/data/list/basic.lean + theorem list.prod_repeat + theorem list.sum_repeat Modified src/data/list/indexes.lean Modified src/data/list/perm.lean Modified src/data/multiset/basic.lean - theorem multiset.abs_sum_le_sum_abs Modified src/data/multiset/range.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/nat/basic.lean + theorem nat.nsmul_eq_mul Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/multilinear.lean 2021-06-03 23:23:09 89928bc feat(topology): A locally compact Hausdorff space is totally disconnected if and only if it is totally separated (#7649) We prove that a locally compact Hausdorff space is totally disconnected if and only if it is totally separated. ESTIMATED CHANGES Modified src/topology/connected.lean + theorem exists_clopen_of_totally_separated Modified src/topology/separation.lean + theorem compact_exists_clopen_in_open + theorem compact_t2_tot_disc_iff_tot_sep + theorem loc_compact_Haus_tot_disc_of_zero_dim + theorem loc_compact_t2_tot_disc_iff_tot_sep + theorem tot_sep_of_zero_dim 2021-06-03 16:15:32 685adb0 fix(tactic/lint): allow pattern def (#7785) `Prop` sorted declarations are allowed to be `def` if they have the `@[pattern]` attribute ESTIMATED CHANGES Modified src/tactic/lint/misc.lean Modified test/lint.lean + def my_exists_intro 2021-06-03 16:15:31 fa51468 feat(tactic/lift): elaborate proof with the expected type (#7739) * also slightly refactor the corresponding function a bit * add some tests * move all tests to `tests/lift.lean` ESTIMATED CHANGES Modified src/tactic/lift.lean Modified test/lift.lean Modified test/tactics.lean 2021-06-03 16:15:30 05f7e8d feat(linear_algebra/tensor_product): define `tensor_tensor_tensor_comm` (#7724) The intended application is defining the bracket structure when extending the scalars of a Lie algebra. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + def tensor_product.left_comm + theorem tensor_product.left_comm_symm_tmul + theorem tensor_product.left_comm_tmul + def tensor_product.tensor_tensor_tensor_comm + theorem tensor_product.tensor_tensor_tensor_comm_symm_tmul + theorem tensor_product.tensor_tensor_tensor_comm_tmul 2021-06-03 11:07:26 62655a2 chore(data/dfinsupp): add the simp lemma coe_pre_mk (#7806) ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.coe_pre_mk 2021-06-03 11:07:25 2a93644 chore(src/linear_algebra/free_module): rename file to free_module_pid (#7805) In preparation for #7801 ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean Renamed src/linear_algebra/free_module.lean to src/linear_algebra/free_module_pid.lean 2021-06-03 11:07:24 fc6f967 chore(ring_theory/hahn_series): emb_domain_add needs only add_monoid, not semiring (#7802) This is my fault, the lemma ended up in the wrong place in #7737 ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean 2021-06-03 11:07:23 54d8b94 chore(logic/basic): add simp lemmas about exist_unique to match those about exists (#7784) Adds: * `exists_unique_const` to match `exists_const` (provable by simp) * `exists_unique_prop` to match `exists_prop` (provable by simp) * `exists_unique_prop_of_true` to match `exists_prop_of_true` ESTIMATED CHANGES Modified src/logic/basic.lean + theorem exists_unique_const + theorem exists_unique_prop + theorem exists_unique_prop_of_true 2021-06-03 11:07:21 ef13938 feat(ring_theory/tensor_product): the base change of a linear map along an algebra (#4773) ESTIMATED CHANGES Modified src/algebra/lie/weights.lean Modified src/linear_algebra/tensor_product.lean + theorem linear_map.ltensor_mul + theorem linear_map.rtensor_mul + theorem tensor_product.curry_injective +/- theorem tensor_product.smul_tmul' +/- theorem tensor_product.smul_tmul +/- theorem tensor_product.tmul_smul Modified src/ring_theory/tensor_product.lean + def linear_map.base_change + theorem linear_map.base_change_add + theorem linear_map.base_change_eq_ltensor + def linear_map.base_change_hom + theorem linear_map.base_change_neg + theorem linear_map.base_change_smul + theorem linear_map.base_change_sub + theorem linear_map.base_change_tmul + theorem linear_map.base_change_zero + def tensor_product.algebra_tensor_module.assoc + def tensor_product.algebra_tensor_module.curry + theorem tensor_product.algebra_tensor_module.curry_injective + theorem tensor_product.algebra_tensor_module.ext + def tensor_product.algebra_tensor_module.lcurry + def tensor_product.algebra_tensor_module.lift.equiv + def tensor_product.algebra_tensor_module.lift + theorem tensor_product.algebra_tensor_module.lift_tmul + def tensor_product.algebra_tensor_module.mk + theorem tensor_product.algebra_tensor_module.restrict_scalars_curry + theorem tensor_product.algebra_tensor_module.smul_eq_lsmul_rtensor + def tensor_product.algebra_tensor_module.uncurry 2021-06-03 07:38:39 b806fd4 chore(scripts): update nolints.txt (#7810) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-03 07:38:38 36decf5 chore(topology/bases): Rename + unprotect some lemmas (#7809) @PatrickMassot Unfortunately I saw your comments after #7753 was already merged, so here is a followup PR with the changes you requested. I also unprotected and renamed `is_topological_basis_pi` and `is_topological_basis_infi` since dot notation will also not work for those. ESTIMATED CHANGES Modified src/topology/bases.lean + theorem is_topological_basis_infi + theorem is_topological_basis_pi + theorem topological_space.is_topological_basis_opens 2021-06-03 07:38:37 8422d8c chore(data/padics): move padics to number_theory/ (#7771) Per [zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/move.20p-adics). ESTIMATED CHANGES Deleted src/data/padics/default.lean Added src/number_theory/padics/default.lean Renamed src/data/padics/hensel.lean to src/number_theory/padics/hensel.lean Renamed src/data/padics/padic_integers.lean to src/number_theory/padics/padic_integers.lean Renamed src/data/padics/padic_norm.lean to src/number_theory/padics/padic_norm.lean Renamed src/data/padics/padic_numbers.lean to src/number_theory/padics/padic_numbers.lean Renamed src/data/padics/ring_homs.lean to src/number_theory/padics/ring_homs.lean Modified src/ring_theory/witt_vector/compare.lean 2021-06-03 07:38:36 adae1ad feat(order/filter/archimedean): in an archimedean linear ordered ring, `at_top` and `at_bot` are countably generated (#7751) ESTIMATED CHANGES Modified src/order/filter/archimedean.lean + theorem at_bot_countable_basis_of_archimedean + theorem at_bot_countably_generated + theorem at_top_countable_basis_of_archimedean + theorem at_top_countably_generated_of_archimedean 2021-06-03 07:38:35 6d85ff2 refactor(linear_algebra/finsupp): replace mem_span_iff_total (#7735) This PR renames the existing `mem_span_iff_total` to `mem_span_image_iff_total` and the existing `span_eq_map_total` to `span_image_eq_map_total`, and replaces them with slightly simpler lemmas about sets in the module, rather than indexed families. As usual in the linear algebra library, there is tension between using sets and using indexed families, but as `span` is defined in terms of sets I think the new lemmas merit taking the simpler names. ESTIMATED CHANGES Modified src/algebraic_geometry/structure_sheaf.lean Modified src/analysis/normed_space/inner_product.lean Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/fixed.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.mem_span_iff_total + theorem finsupp.mem_span_image_iff_total - theorem finsupp.span_eq_map_total + theorem finsupp.span_eq_range_total + theorem finsupp.span_image_eq_map_total Modified src/linear_algebra/linear_independent.lean Modified src/ring_theory/adjoin/basic.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_basis.lean 2021-06-03 07:38:33 6d90d35 feat(analysis/fourier): monomials on the circle are orthonormal (#6952) Make the circle into a measure space, using Haar measure, and prove that the monomials `z ^ n` are orthonormal when considered as elements of L^2 on the circle. ESTIMATED CHANGES Added src/analysis/fourier.lean + def fourier + theorem fourier_add + theorem fourier_add_half_inv_index + theorem fourier_neg + theorem fourier_zero + def haar_circle + theorem orthonormal_fourier Modified src/data/complex/exponential.lean + theorem complex.exp_int_mul Modified src/geometry/manifold/instances/circle.lean +/- theorem coe_div_circle +/- theorem coe_inv_circle + theorem coe_inv_circle_eq_conj + theorem exp_map_circle_apply + theorem nonzero_of_mem_circle + theorem norm_sq_eq_of_mem_circle Modified src/measure_theory/l2_space.lean + theorem measure_theory.bounded_continuous_function.inner_to_Lp + theorem measure_theory.continuous_map.inner_to_Lp Modified src/measure_theory/lp_space.lean + theorem bounded_continuous_function.coe_fn_to_Lp + theorem continuous_map.coe_fn_to_Lp +/- theorem continuous_map.to_Lp_norm_le Modified src/topology/compacts.lean + def topological_space.positive_compacts_univ Modified src/topology/metric_space/basic.lean + theorem is_compact_sphere 2021-06-03 04:58:21 4b31247 chore(data/*/gcd): move data/*set/gcd to algebra/gcd_monoid/ (#7800) See discussion of migrating content from `data/` to `algebra/` at [https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/move.20p-adics](zulip). ESTIMATED CHANGES Renamed src/data/finset/gcd.lean to src/algebra/gcd_monoid/finset.lean Renamed src/data/multiset/gcd.lean to src/algebra/gcd_monoid/multiset.lean Modified src/group_theory/perm/cycle_type.lean Modified src/ring_theory/polynomial/content.lean 2021-06-03 04:58:20 e591543 chore(data/zsqrtd): move to number_theory/ (#7796) See discussion of migrating content from `data/` to `algebra/` at [https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/move.20p-adics](zulip). ESTIMATED CHANGES Modified src/number_theory/pell.lean Modified src/number_theory/sum_two_squares.lean Renamed src/data/zsqrtd/basic.lean to src/number_theory/zsqrtd/basic.lean Renamed src/data/zsqrtd/gaussian_int.lean to src/number_theory/zsqrtd/gaussian_int.lean Renamed src/data/zsqrtd/to_real.lean to src/number_theory/zsqrtd/to_real.lean 2021-06-03 04:58:19 ce3ca59 chore(data/fincard): move to set_theory/ (#7795) This is about cardinals, so probably belongs in `set_theory/` not `data/`. (It's also a leaf node for now, so easy to move.) ESTIMATED CHANGES Renamed src/data/fincard.lean to src/set_theory/fincard.lean 2021-06-02 23:53:40 d5a635b chore(data/hash_map): remove duplicate imports (#7794) ESTIMATED CHANGES Modified src/data/hash_map.lean 2021-06-02 23:53:39 a36560c chore(data/quaternion): move to algebra/ (#7793) See discussion of migrating content from `data/` to `algebra/` at [https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/move.20p-adics](zulip). ESTIMATED CHANGES Renamed src/data/quaternion.lean to src/algebra/quaternion.lean Modified src/analysis/quaternion.lean 2021-06-02 23:53:38 7e3e883 chore(data/equiv): add docstrings (#7704) - add module docstrings - add def docstrings - rename `decode2` to `decode₂` - squash some simps ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/computability/halting.lean Modified src/computability/partrec.lean - theorem partrec.bind_decode2_iff + theorem partrec.bind_decode₂_iff Modified src/computability/primrec.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/encodable/basic.lean +/- def encodable.choose_x - def encodable.decode2 - theorem encodable.decode2_inj - theorem encodable.decode2_is_partial_inv +/- def encodable.decode_subtype +/- def encodable.decode_sum + def encodable.decode₂ + theorem encodable.decode₂_inj + theorem encodable.decode₂_is_partial_inv + theorem encodable.decode₂_ne_none_iff +/- def encodable.encode' +/- def encodable.encode_subtype +/- def encodable.encode_sum - theorem encodable.encodek2 + theorem encodable.encodek₂ - theorem encodable.mem_decode2' - theorem encodable.mem_decode2 + theorem encodable.mem_decode₂' + theorem encodable.mem_decode₂ Modified src/data/equiv/encodable/lattice.lean - theorem encodable.Union_decode2 - theorem encodable.Union_decode2_cases - theorem encodable.Union_decode2_disjoint_on + theorem encodable.Union_decode₂ + theorem encodable.Union_decode₂_cases + theorem encodable.Union_decode₂_disjoint_on - theorem encodable.supr_decode2 + theorem encodable.supr_decode₂ Modified src/data/equiv/list.lean +/- def encodable.fintype_pi Modified src/data/equiv/nat.lean Modified src/measure_theory/measurable_space.lean - theorem measurable_set.bUnion_decode2 + theorem measurable_set.bUnion_decode₂ Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/pi_system.lean Modified src/topology/algebra/infinite_sum.lean - theorem tsum_Union_decode2 + theorem tsum_Union_decode₂ - theorem tsum_supr_decode2 + theorem tsum_supr_decode₂ 2021-06-02 23:53:37 29d0a4e feat(tactic/lint): add linter that type-checks statements (#7694) * Add linter that type-checks the statements of all declarations with the default reducibility settings. A statement might not type-check if locally a declaration was made not `@[irreducible]` while globally it is. * Fix an issue where `with_one.monoid.to_mul_one_class` did not unify with `with_one.mul_one_class`. * Fix some proofs in `category_theory.opposites` so that they work while keeping `quiver.opposite` irreducible. ESTIMATED CHANGES Modified src/algebra/category/Mon/adjunctions.lean Modified src/algebra/group/with_one.lean Modified src/category_theory/opposites.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/misc.lean 2021-06-02 18:23:20 6e5899d feat(measure_theory/integration): add a version of the monotone convergence theorem using `tendsto` (#7791) ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_tendsto_of_tendsto_of_monotone 2021-06-02 18:23:19 82bc3ca chore(logic/small): reduce imports (#7777) By delaying the `fintype` and `encodable` instances for `small`, I think we can now avoid importing `algebra` at all into `logic`. ~~Since some of the `is_empty` lemmas haven't been used yet,~~ I took the liberty of making some arguments explicit, as one was painful to use as is. ESTIMATED CHANGES Added src/data/equiv/encodable/small.lean Added src/data/fintype/small.lean Modified src/group_theory/group_action/defs.lean Modified src/logic/is_empty.lean Modified src/logic/small.lean 2021-06-02 18:23:18 47dbdac chore(data/support): move data/(support|indicator_function) to algebra/ (#7774) These don't define any new structures, have not much to do with programming, and are just about basic features of algebraic gadgets, so belong better in `algebra/` than `data/`. See discussion of migrating content from `data/` to `algebra/` at [https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/move.20p-adics](zulip). ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean Renamed src/data/indicator_function.lean to src/algebra/indicator_function.lean Renamed src/data/support.lean to src/algebra/support.lean Modified src/analysis/normed_space/indicator_function.lean Modified src/data/finsupp/basic.lean Modified src/data/real/nnreal.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean Modified src/order/filter/indicator_function.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/basic.lean Modified src/topology/semicontinuous.lean 2021-06-02 13:27:48 173bc4c feat(algebra/algebra/subalgebra): add subalgebra.prod (#7782) We add a basic API for product of subalgebras. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.coe_prod + theorem subalgebra.mem_prod + def subalgebra.prod + theorem subalgebra.prod_mono + theorem subalgebra.prod_to_submodule + theorem subalgebra.prod_top Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoint_prod_le + theorem algebra.coe_inf + theorem algebra.prod_inf_prod 2021-06-02 10:33:05 b231c92 doc(data/finsupp/pointwise): update old module doc (#7770) ESTIMATED CHANGES Modified src/data/finsupp/pointwise.lean 2021-06-02 10:33:04 b91cdb9 refactor(data/nnreal): rename nnreal.of_real to real.to_nnreal (#7750) I am in the middle of a project involving reals, nnreals, ennreals and ereals. There is a maze of coercions and maps between the 4 of them, with completely incoherent naming scheme (do you think that `measurable.nnreal_coe` is speaking of the coercion from `nnreal` to `real` or to `ennreal`, or of a coercion into `nnreal`? currently, it's for the coercion from `nnreal` to `real`, and the analogous lemma for the coercion from `nnreal` to `ennreal` is called `measurable.ennreal_coe`!). I'd like to normalize all this to have something coherent: * maps are defined from a type to another one, to be able to use dot notation. * when there are coercions, all lemmas should be formulated in terms of the coercion, and not of the explicit map * when there is an ambiguity, lemmas on coercions should mention both the source and the target (like in `measurable.coe_nnreal_real`, say). The PR is one first step in this direction, renaming `nnreal.of_real` to `real.to_nnreal` (which makes it possible to use dot notation). ESTIMATED CHANGES Modified archive/imo/imo2008_q4.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/parametric_integral.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/normed_group_hom.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/special_functions/pow.lean - theorem nnreal.of_real_rpow_of_nonneg + theorem real.to_nnreal_rpow_of_nonneg Modified src/data/real/conjugate_exponents.lean +/- theorem real.is_conjugate_exponent.inv_add_inv_conj_nnreal +/- theorem real.is_conjugate_exponent.one_lt_nnreal Modified src/data/real/ennreal.lean + theorem ennreal.to_real_mono + theorem ennreal.to_real_strict_mono Modified src/data/real/nnreal.lean - theorem nnreal.coe_of_real - theorem nnreal.coe_of_real_le - theorem nnreal.le_coe_of_real - theorem nnreal.le_of_real_iff_coe_le' - theorem nnreal.le_of_real_iff_coe_le - theorem nnreal.lt_of_real_iff_coe_lt - theorem nnreal.of_real_add - theorem nnreal.of_real_add_le - theorem nnreal.of_real_add_of_real - theorem nnreal.of_real_bit0 - theorem nnreal.of_real_bit1 - theorem nnreal.of_real_coe - theorem nnreal.of_real_coe_nat - theorem nnreal.of_real_div' - theorem nnreal.of_real_div - theorem nnreal.of_real_eq_zero - theorem nnreal.of_real_inv - theorem nnreal.of_real_le_iff_le_coe - theorem nnreal.of_real_le_of_real - theorem nnreal.of_real_le_of_real_iff - theorem nnreal.of_real_lt_iff_lt_coe - theorem nnreal.of_real_lt_of_real_iff' - theorem nnreal.of_real_lt_of_real_iff - theorem nnreal.of_real_lt_of_real_iff_of_nonneg - theorem nnreal.of_real_mul - theorem nnreal.of_real_of_nonpos - theorem nnreal.of_real_one - theorem nnreal.of_real_pos - theorem nnreal.of_real_prod_of_nonneg - theorem nnreal.of_real_sum_of_nonneg - theorem nnreal.of_real_zero +/- theorem nnreal.sub_def + theorem nnreal.to_nnreal_coe_nat + theorem real.coe_to_nnreal' + theorem real.coe_to_nnreal + theorem real.coe_to_nnreal_le + theorem real.le_coe_to_nnreal + theorem real.le_to_nnreal_iff_coe_le' + theorem real.le_to_nnreal_iff_coe_le + theorem real.lt_to_nnreal_iff_coe_lt +/- theorem real.nnabs_of_nonneg + def real.to_nnreal + theorem real.to_nnreal_add + theorem real.to_nnreal_add_le + theorem real.to_nnreal_add_to_nnreal + theorem real.to_nnreal_bit0 + theorem real.to_nnreal_bit1 + theorem real.to_nnreal_coe + theorem real.to_nnreal_div' + theorem real.to_nnreal_div + theorem real.to_nnreal_eq_zero + theorem real.to_nnreal_inv + theorem real.to_nnreal_le_iff_le_coe + theorem real.to_nnreal_le_to_nnreal + theorem real.to_nnreal_le_to_nnreal_iff + theorem real.to_nnreal_lt_iff_lt_coe + theorem real.to_nnreal_lt_to_nnreal_iff' + theorem real.to_nnreal_lt_to_nnreal_iff + theorem real.to_nnreal_lt_to_nnreal_iff_of_nonneg + theorem real.to_nnreal_mul + theorem real.to_nnreal_of_nonpos + theorem real.to_nnreal_one + theorem real.to_nnreal_pos + theorem real.to_nnreal_prod_of_nonneg + theorem real.to_nnreal_sum_of_nonneg + theorem real.to_nnreal_zero Modified src/data/real/sqrt.lean Modified src/measure_theory/bochner_integration.lean - theorem measure_theory.integral_eq_lintegral_max_sub_lintegral_min + theorem measure_theory.integral_eq_lintegral_pos_part_sub_lintegral_neg_part +/- theorem measure_theory.lintegral_coe_eq_integral Modified src/measure_theory/borel_space.lean + theorem ae_measurable.nnreal_coe + theorem ae_measurable.real_to_nnreal - theorem measurable.nnreal_of_real + theorem measurable.real_to_nnreal Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean + theorem measure_theory.has_finite_integral_iff_of_nnreal Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean +/- theorem nnreal.continuous_of_real Modified src/topology/metric_space/basic.lean +/- theorem nndist_dist Modified src/topology/metric_space/lipschitz.lean 2021-06-02 04:57:08 832aff8 chore(scripts): update nolints.txt (#7798) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-02 04:57:06 cdf6cf0 feat(topology/sheaves/stalks): Small lemmas about stalk pushforward and stalk map (#7789) `Top.presheaf.stalk_pushforward` and `PresheafedSpace.stalk_map` commute with `Top.presheaf.germ`. ESTIMATED CHANGES Modified src/algebraic_geometry/stalks.lean + theorem algebraic_geometry.PresheafedSpace.stalk_map_germ Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.stalk_pushforward_germ 2021-06-02 04:57:05 2164107 refactor(algebraic_geometry/structure_sheaf): Rename Spec.Top to prime_spectrum.Top (#7786) Renames `Spec.Top` to `prime_specturm.Top` to free up the namespace for the Spec functor. ESTIMATED CHANGES Modified src/algebraic_geometry/structure_sheaf.lean - def algebraic_geometry.Spec.Top +/- theorem algebraic_geometry.coe_open_to_localization +/- def algebraic_geometry.const +/- theorem algebraic_geometry.const_apply' +/- theorem algebraic_geometry.const_apply +/- theorem algebraic_geometry.exists_const +/- theorem algebraic_geometry.germ_comp_stalk_to_fiber_ring_hom +/- theorem algebraic_geometry.germ_to_open +/- theorem algebraic_geometry.germ_to_top +/- theorem algebraic_geometry.is_unit_to_stalk +/- def algebraic_geometry.localization_to_stalk +/- theorem algebraic_geometry.localization_to_stalk_mk' +/- theorem algebraic_geometry.localization_to_stalk_of +/- theorem algebraic_geometry.locally_const_basic_open +/- theorem algebraic_geometry.normalize_finite_fraction_representation +/- def algebraic_geometry.open_to_localization +/- theorem algebraic_geometry.open_to_localization_apply + def algebraic_geometry.prime_spectrum.Top +/- theorem algebraic_geometry.res_apply +/- def algebraic_geometry.stalk_iso +/- def algebraic_geometry.stalk_to_fiber_ring_hom +/- theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ' +/- theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ +/- theorem algebraic_geometry.stalk_to_fiber_ring_hom_to_stalk +/- def algebraic_geometry.structure_presheaf_in_CommRing +/- def algebraic_geometry.structure_sheaf.is_fraction +/- def algebraic_geometry.structure_sheaf.localizations +/- def algebraic_geometry.structure_sheaf.sections_subring +/- def algebraic_geometry.structure_sheaf +/- def algebraic_geometry.structure_sheaf_in_Type +/- def algebraic_geometry.to_basic_open +/- def algebraic_geometry.to_open +/- theorem algebraic_geometry.to_open_apply +/- theorem algebraic_geometry.to_open_eq_const +/- theorem algebraic_geometry.to_open_germ +/- theorem algebraic_geometry.to_open_res +/- def algebraic_geometry.to_stalk +/- theorem algebraic_geometry.to_stalk_comp_stalk_to_fiber_ring_hom 2021-06-02 04:57:04 2fd0ff4 chore(order/omega_complete_partial_order): clean up references (#7781) fix the references rendering by adding them to the .bib ESTIMATED CHANGES Modified docs/references.bib Modified src/order/omega_complete_partial_order.lean 2021-06-02 04:57:03 5a42f80 chore(logic/embedding): move some algebra content (#7776) This moves a lemma about multiplication by an element in a left/right cancellative semigroup being an embedding out of `logic.embedding`. I didn't find a great home for it, but put it with some content about regular elements, which is at least talking about similar mathematics. This removes the only direct import from the `logic/` directory to the `algebra/` directory. There are still indirect imports from `logic.small`, which currently brings in `fintype` and hence the whole algebra hierarchy. I'll look at that separately. ESTIMATED CHANGES Modified src/algebra/regular.lean + def mul_left_embedding + def mul_right_embedding Modified src/logic/embedding.lean - def mul_left_embedding - def mul_right_embedding Modified src/representation_theory/maschke.lean 2021-06-02 04:57:02 6c912de feat(topology/bases): Topological basis of a product. (#7753) Given a family of topological spaces `X_i` with topological bases `T_i`, this constructs the associated basis of the product topology. This also includes a construction of the tautological topological basis consisting of all open sets. This generalizes a lemma from LTE. ESTIMATED CHANGES Modified src/topology/bases.lean Modified src/topology/constructions.lean + theorem inducing_infi_to_pi 2021-06-02 04:57:00 4884ea5 feat(order/[conditionally_]complete_lattice): add more intro lemmas for [c][Sup, Inf] and [c][supr, infi] (#7730) ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem Inf_eq_of_forall_ge_of_forall_gt_exists_lt + theorem Sup_eq_of_forall_le_of_forall_lt_exists_gt + theorem infi_eq_of_forall_ge_of_forall_gt_exists_lt + theorem supr_eq_of_forall_le_of_forall_lt_exists_gt Modified src/order/conditionally_complete_lattice.lean + theorem cInf_eq_of_forall_ge_of_forall_gt_exists_lt - theorem cInf_intro + theorem cSup_eq_of_forall_le_of_forall_lt_exists_gt + theorem cSup_eq_of_is_forall_le_of_forall_le_imp_ge - theorem cSup_intro' - theorem cSup_intro + theorem cinfi_eq_of_forall_ge_of_forall_gt_exists_lt + theorem csupr_eq_of_forall_le_of_forall_lt_exists_gt Modified src/topology/algebra/ordered/liminf_limsup.lean 2021-06-02 04:56:59 6b2c7a7 feat(data/finset/noncomm_prod): finset products over monoid (#7567) The regular `finset.prod` and `multiset.prod` require `[comm_monoid α]`. Often, there are collections `s : finset α` where `[monoid α]` and we know, in a dependent fashion, that for all the terms `∀ (x ∈ s) (y ∈ s), commute x y`. This allows to still have a well-defined product over `s`. ESTIMATED CHANGES Added src/data/finset/noncomm_prod.lean + def finset.noncomm_prod + theorem finset.noncomm_prod_empty + theorem finset.noncomm_prod_eq_prod + theorem finset.noncomm_prod_insert_of_not_mem' + theorem finset.noncomm_prod_insert_of_not_mem + theorem finset.noncomm_prod_to_finset + def multiset.noncomm_fold + theorem multiset.noncomm_fold_coe + theorem multiset.noncomm_fold_cons + theorem multiset.noncomm_fold_empty + theorem multiset.noncomm_fold_eq_fold + def multiset.noncomm_foldr + theorem multiset.noncomm_foldr_coe + theorem multiset.noncomm_foldr_cons + theorem multiset.noncomm_foldr_empty + theorem multiset.noncomm_foldr_eq_foldr + def multiset.noncomm_prod + theorem multiset.noncomm_prod_coe + theorem multiset.noncomm_prod_cons' + theorem multiset.noncomm_prod_cons + theorem multiset.noncomm_prod_empty + theorem multiset.noncomm_prod_eq_prod 2021-06-01 23:18:36 681b9c2 feat(ring_theory/adjoin/basic): add missing lemmas (#7780) Two missing lemmas about `adjoin`. These are the `subalgebra` versions of `submodule.span_eq_of_le` and `submodule.span_eq`. ESTIMATED CHANGES Modified src/ring_theory/adjoin/basic.lean + theorem algebra.adjoin_eq + theorem algebra.adjoin_eq_of_le 2021-06-01 23:18:35 76f41e7 chore(data/nat): split out data/nat/pow (#7758) Split lemmas about the power operation on natural numbers into its own file; slightly reduces imports. ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean - theorem nat.succ_eq_one_add Modified src/algebra/ordered_ring.lean + theorem nat.succ_eq_one_add Modified src/computability/language.lean Modified src/data/int/basic.lean Modified src/data/nat/basic.lean - theorem nat.dvd_of_pow_dvd - theorem nat.lt_pow_self - theorem nat.lt_size - theorem nat.lt_size_self - theorem nat.lt_two_pow - theorem nat.mod_pow_succ - theorem nat.mul_lt_mul_pow_succ - theorem nat.not_pos_pow_dvd - theorem nat.one_le_pow' - theorem nat.one_le_pow - theorem nat.one_le_two_pow - theorem nat.one_lt_pow' - theorem nat.one_lt_pow - theorem nat.one_lt_two_pow' - theorem nat.one_lt_two_pow - theorem nat.one_shiftl - theorem nat.pow_div - theorem nat.pow_dvd_of_le_of_pow_dvd - theorem nat.pow_dvd_pow_iff_le_right' - theorem nat.pow_dvd_pow_iff_le_right - theorem nat.pow_dvd_pow_iff_pow_le_pow - theorem nat.pow_le_iff_le_left - theorem nat.pow_le_iff_le_right - theorem nat.pow_le_pow_of_le_right - theorem nat.pow_left_injective - theorem nat.pow_left_strict_mono - theorem nat.pow_lt_iff_lt_left - theorem nat.pow_lt_iff_lt_right - theorem nat.pow_lt_pow_of_lt_left - theorem nat.pow_lt_pow_of_lt_right - theorem nat.pow_lt_pow_succ - theorem nat.pow_right_injective - theorem nat.pow_right_strict_mono - theorem nat.shiftl'_ne_zero_left - theorem nat.shiftl'_tt_eq_mul_pow - theorem nat.shiftl'_tt_ne_zero - theorem nat.shiftl_eq_mul_pow - theorem nat.shiftr_eq_div_pow - theorem nat.size_bit0 - theorem nat.size_bit1 - theorem nat.size_bit - theorem nat.size_eq_zero - theorem nat.size_le - theorem nat.size_le_size - theorem nat.size_one - theorem nat.size_pos - theorem nat.size_pow - theorem nat.size_shiftl' - theorem nat.size_shiftl - theorem nat.size_zero - theorem nat.sq_sub_sq - theorem nat.zero_shiftl - theorem nat.zero_shiftr - theorem strict_mono.nat_pow Modified src/data/nat/factorial.lean Modified src/data/nat/gcd.lean Modified src/data/nat/log.lean Added src/data/nat/pow.lean + theorem nat.dvd_of_pow_dvd + theorem nat.lt_pow_self + theorem nat.lt_size + theorem nat.lt_size_self + theorem nat.lt_two_pow + theorem nat.mod_pow_succ + theorem nat.mul_lt_mul_pow_succ + theorem nat.not_pos_pow_dvd + theorem nat.one_le_pow' + theorem nat.one_le_pow + theorem nat.one_le_two_pow + theorem nat.one_lt_pow' + theorem nat.one_lt_pow + theorem nat.one_lt_two_pow' + theorem nat.one_lt_two_pow + theorem nat.one_shiftl + theorem nat.pow_div + theorem nat.pow_dvd_of_le_of_pow_dvd + theorem nat.pow_dvd_pow_iff_le_right' + theorem nat.pow_dvd_pow_iff_le_right + theorem nat.pow_dvd_pow_iff_pow_le_pow + theorem nat.pow_le_iff_le_left + theorem nat.pow_le_iff_le_right + theorem nat.pow_le_pow_of_le_right + theorem nat.pow_left_injective + theorem nat.pow_left_strict_mono + theorem nat.pow_lt_iff_lt_left + theorem nat.pow_lt_iff_lt_right + theorem nat.pow_lt_pow_of_lt_left + theorem nat.pow_lt_pow_of_lt_right + theorem nat.pow_lt_pow_succ + theorem nat.pow_right_injective + theorem nat.pow_right_strict_mono + theorem nat.shiftl'_ne_zero_left + theorem nat.shiftl'_tt_eq_mul_pow + theorem nat.shiftl'_tt_ne_zero + theorem nat.shiftl_eq_mul_pow + theorem nat.shiftr_eq_div_pow + theorem nat.size_bit0 + theorem nat.size_bit1 + theorem nat.size_bit + theorem nat.size_eq_zero + theorem nat.size_le + theorem nat.size_le_size + theorem nat.size_one + theorem nat.size_pos + theorem nat.size_pow + theorem nat.size_shiftl' + theorem nat.size_shiftl + theorem nat.size_zero + theorem nat.sq_sub_sq + theorem nat.zero_shiftl + theorem nat.zero_shiftr + theorem strict_mono.nat_pow Modified src/data/pnat/basic.lean 2021-06-01 23:18:35 2689c51 feat(category_theory/abelian): abelian categories with enough projectives have projective resolutions (#7488) ESTIMATED CHANGES Modified src/category_theory/abelian/projective.lean + def category_theory.ProjectiveResolution.of + def category_theory.ProjectiveResolution.of_complex 2021-06-01 20:17:20 4e7c6b2 chore(algebra/associated): weaken some typeclass assumptions (#7760) Also golf ne_zero_iff_of_associated a little. ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associated_of_irreducible_of_dvd +/- theorem dvd_iff_dvd_of_rel_left +/- theorem dvd_iff_dvd_of_rel_right +/- theorem eq_zero_iff_of_associated +/- theorem irreducible_iff_of_associated +/- theorem irreducible_of_associated +/- theorem ne_zero_iff_of_associated 2021-06-01 15:40:08 8527efd feat(topology/connected): prod.totally_disconnected_space (#7747) From LTE. ESTIMATED CHANGES Modified src/topology/connected.lean 2021-06-01 15:40:07 abe146f feat(linear_map): to_*_linear_map_injective (#7746) From LTE. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem add_monoid_hom.to_int_linear_map_injective + theorem add_monoid_hom.to_nat_linear_map_injective + theorem add_monoid_hom.to_rat_linear_map_injective 2021-06-01 12:28:58 88685b0 feat(linear_algebra/tensor_product): Add is_scalar_tower instances (#6741) If either the left- or right-hand type of a tensor product forms a scalar tower, then the tensor product forms the same tower. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean 2021-06-01 05:20:12 31ba155 feat(algebraic_topology/cech_nerve): The Cech nerve is a right adjoint. (#7716) Also fixes the namespace in the file `algebraic_topology/cech_nerve.lean`. This is needed for LTE ESTIMATED CHANGES Modified src/algebraic_topology/cech_nerve.lean + def category_theory.arrow.augmented_cech_conerve + def category_theory.arrow.cech_conerve + def category_theory.cosimplicial_object.augmented_cech_conerve + def category_theory.cosimplicial_object.cech_conerve + def category_theory.cosimplicial_object.cech_conerve_adjunction + def category_theory.cosimplicial_object.cech_conerve_equiv + def category_theory.cosimplicial_object.equivalence_left_to_right + def category_theory.cosimplicial_object.equivalence_right_to_left + def category_theory.simplicial_object.augmented_cech_nerve + def category_theory.simplicial_object.cech_nerve + def category_theory.simplicial_object.cech_nerve_adjunction + def category_theory.simplicial_object.cech_nerve_equiv + def category_theory.simplicial_object.equivalence_left_to_right + def category_theory.simplicial_object.equivalence_right_to_left - def simplicial_object.augmented_cech_nerve - def simplicial_object.cech_nerve Modified src/algebraic_topology/simplex_category.lean + def simplex_category.const + theorem simplex_category.const_comp Modified src/algebraic_topology/simplicial_object.lean + def category_theory.cosimplicial_object.augmented.to_arrow + def category_theory.simplicial_object.augmented.to_arrow 2021-06-01 03:25:51 272a930 chore(scripts): update nolints.txt (#7775) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-06-01 01:52:24 4c2bfde chore(order/pilex): add docstring (#7769) - add module docstring - extend `ordered_add_comm_group (pilex ι β)` using `to_additive` ESTIMATED CHANGES Modified src/order/pilex.lean 2021-06-01 01:52:23 a8f5cc1 feat(algebra/homology): i-th component of a chain map as a →+ (#7743) From LTE. ESTIMATED CHANGES Modified src/algebra/homology/additive.lean + def homological_complex.hom.f_add_monoid_hom 2021-05-31 21:08:06 bec3e59 feat(data/finset): provide the coercion `finset α → Type*` (#7575) There doesn't seem to be a good reason that `finset` doesn't have a `coe_to_sort` like `set` does. Before the change in this PR, we had to suffer the inconvenience of writing `(↑s : set _)` whenever we want the subtype of all elements of `s`. Now you can just write `s`. I removed the obvious instances of the `((↑s : set _) : Type*)` pattern, although it definitely remains in some places. I'd rather do those in separate PRs since it does not really do any harm except for being annoying to type. There are also some parts of the API (`polynomial.root_set` stands out to me) that could be designed around the use of `finset`s rather than `set`s that are later proved to be finite, which I again would like to declare out of scope. ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean Modified src/analysis/calculus/local_extr.lean Modified src/combinatorics/hall.lean Modified src/data/finset/basic.lean + theorem finset.apply_coe_mem_map + theorem finset.coe_sort_coe Modified src/data/finset/sort.lean +/- def finset.order_iso_of_fin +/- theorem finset.order_iso_of_fin_symm_apply Modified src/data/fintype/basic.lean + theorem finset.univ_eq_attach Modified src/data/set/finite.lean + theorem set.finite.coe_sort_to_finset Modified src/field_theory/finiteness.lean + theorem is_noetherian.coe_sort_finset_basis_index Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/separable.lean Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem vector_span_eq_span_vsub_finset_right_ne Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean +/- theorem finite_dimensional.of_finset_basis + theorem finrank_span_finset_eq_card + theorem finrank_span_finset_le_card Modified src/linear_algebra/lagrange.lean +/- def lagrange.fun_equiv_degree_lt +/- def lagrange.linterpolate Modified src/set_theory/cardinal.lean +/- theorem cardinal.finset_card Modified src/topology/separation.lean 2021-05-31 21:08:05 ca740b6 feat(data/finset/powerset): ssubsets and decidability (#7543) A few more little additions to finset-world that I found useful. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.ssubset_iff_subset_ne Modified src/data/finset/powerset.lean + def finset.decidable_exists_of_decidable_ssubsets' + def finset.decidable_exists_of_decidable_subsets' + def finset.decidable_forall_of_decidable_ssubsets' + def finset.decidable_forall_of_decidable_subsets' + theorem finset.empty_mem_ssubsets + theorem finset.mem_ssubsets + def finset.ssubsets 2021-05-31 17:20:15 d272343 chore(order/lexicographic): add module docstring (#7768) add module docstring ESTIMATED CHANGES Modified src/order/lexicographic.lean 2021-05-31 17:20:14 033a131 chore(order/zorn): add module docstring (#7767) add module docstring, tidy up notation a bit ESTIMATED CHANGES Modified src/order/zorn.lean +/- theorem directed_of_chain +/- theorem zorn.chain.directed_on +/- theorem zorn.chain.image +/- theorem zorn.chain.mono +/- theorem zorn.chain.symm +/- theorem zorn.chain.total +/- theorem zorn.chain.total_of_refl +/- theorem zorn.chain_chain_closure +/- inductive zorn.chain_closure +/- theorem zorn.chain_closure_closure +/- theorem zorn.chain_closure_empty +/- theorem zorn.chain_closure_succ_fixpoint +/- theorem zorn.chain_closure_succ_fixpoint_iff +/- theorem zorn.chain_closure_total +/- theorem zorn.chain_insert +/- theorem zorn.chain_succ +/- theorem zorn.succ_increasing +/- theorem zorn.succ_spec +/- theorem zorn.super_of_not_max 2021-05-31 15:49:23 d0ebc8e feat(ring_theory/laurent_series): Defines Laurent series and their localization map (#7604) Defines `laurent_series` as an abbreviation of `hahn_series Z` Defines `laurent_series.power_series_part` Shows that the map from power series to Laurent series is a `localization_map`. ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean +/- def hahn_series.of_power_series + theorem hahn_series.of_power_series_apply + theorem hahn_series.of_power_series_apply_coeff + theorem hahn_series.of_power_series_injective Added src/ring_theory/laurent_series.lean + theorem laurent_series.coe_power_series + theorem laurent_series.coeff_coe_power_series + theorem laurent_series.of_power_series_X + theorem laurent_series.of_power_series_X_pow + def laurent_series.of_power_series_localization + theorem laurent_series.of_power_series_power_series_part + def laurent_series.power_series_part + theorem laurent_series.power_series_part_coeff + theorem laurent_series.power_series_part_eq_zero + theorem laurent_series.power_series_part_zero + theorem laurent_series.single_order_mul_power_series_part + def laurent_series 2021-05-31 14:35:07 4555798 feat(topology/semicontinuous): semicontinuity of compositions (#7763) ESTIMATED CHANGES Modified src/topology/semicontinuous.lean + theorem continuous.comp_lower_semicontinuous + theorem continuous.comp_lower_semicontinuous_antimono + theorem continuous.comp_lower_semicontinuous_on + theorem continuous.comp_lower_semicontinuous_on_antimono + theorem continuous.comp_upper_semicontinuous + theorem continuous.comp_upper_semicontinuous_antimono + theorem continuous.comp_upper_semicontinuous_on + theorem continuous.comp_upper_semicontinuous_on_antimono + theorem continuous_at.comp_lower_semicontinuous_at + theorem continuous_at.comp_lower_semicontinuous_at_antimono + theorem continuous_at.comp_lower_semicontinuous_within_at + theorem continuous_at.comp_lower_semicontinuous_within_at_antimono + theorem continuous_at.comp_upper_semicontinuous_at + theorem continuous_at.comp_upper_semicontinuous_at_antimono + theorem continuous_at.comp_upper_semicontinuous_within_at + theorem continuous_at.comp_upper_semicontinuous_within_at_antimono 2021-05-31 13:18:14 2af6912 feat(linear_algebra): the determinant of an endomorphism (#7635) `linear_map.det` is the determinant of an endomorphism, which is defined independent of a basis. If there is no finite basis, the determinant is defined to be equal to `1`. This approach is inspired by `linear_map.trace`. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/determinant.lean + theorem linear_map.coe_det + def linear_map.det_aux + theorem linear_map.det_aux_comp + theorem linear_map.det_aux_def' + theorem linear_map.det_aux_def + theorem linear_map.det_aux_id + theorem linear_map.det_comp + theorem linear_map.det_eq_det_to_matrix_of_finite_set + theorem linear_map.det_id + theorem linear_map.det_to_matrix + theorem linear_map.det_to_matrix_eq_det_to_matrix + theorem linear_map.det_zero 2021-05-31 13:18:13 7fe456d feat(algebra/homology): projective resolutions (#7486) # Projective resolutions A projective resolution `P : ProjectiveResolution Z` of an object `Z : C` consists of a `ℕ`-indexed chain complex `P.complex` of projective objects, along with a chain map `P.π` from `C` to the chain complex consisting just of `Z` in degree zero, so that the augmented chain complex is exact. When `C` is abelian, this exactness condition is equivalent to `π` being a quasi-isomorphism. It turns out that this formulation allows us to set up the basic theory derived functors without even assuming `C` is abelian. (Typically, however, to show `has_projective_resolutions C` one will assume `enough_projectives C` and `abelian C`. This construction appears in `category_theory.abelian.projectives`.) We show that give `P : ProjectiveResolution X` and `Q : ProjectiveResolution Y`, any morphism `X ⟶ Y` admits a lift to a chain map `P.complex ⟶ Q.complex`. (It is a lift in the sense that the projection maps `P.π` and `Q.π` intertwine the lift and the original morphism.) Moreover, we show that any two such lifts are homotopic. As a consequence, if every object admits a projective resolution, we can construct a functor `projective_resolutions C : C ⥤ homotopy_category C`. ESTIMATED CHANGES Added src/category_theory/preadditive/projective_resolution.lean + def category_theory.ProjectiveResolution.homotopy_equiv + theorem category_theory.ProjectiveResolution.homotopy_equiv_hom_π + theorem category_theory.ProjectiveResolution.homotopy_equiv_inv_π + def category_theory.ProjectiveResolution.lift + theorem category_theory.ProjectiveResolution.lift_commutes + def category_theory.ProjectiveResolution.lift_comp_homotopy + def category_theory.ProjectiveResolution.lift_f_one + theorem category_theory.ProjectiveResolution.lift_f_one_zero_comm + def category_theory.ProjectiveResolution.lift_f_succ + def category_theory.ProjectiveResolution.lift_f_zero + def category_theory.ProjectiveResolution.lift_homotopy + def category_theory.ProjectiveResolution.lift_homotopy_zero + def category_theory.ProjectiveResolution.lift_homotopy_zero_one + def category_theory.ProjectiveResolution.lift_homotopy_zero_succ + def category_theory.ProjectiveResolution.lift_homotopy_zero_zero + def category_theory.ProjectiveResolution.lift_id_homotopy + def category_theory.ProjectiveResolution.self + theorem category_theory.ProjectiveResolution.π_f_succ + structure category_theory.ProjectiveResolution + def category_theory.projective_resolution.lift + def category_theory.projective_resolution.π + def category_theory.projective_resolution + def category_theory.projective_resolutions 2021-05-31 06:45:22 1a92c0d feat(order/basic): add simp attribute on le_refl, zero_le_one and zero_lt_one (#7733) These ones show up so often that they would have deserved a simp attribute long ago. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean +/- theorem zero_le_one +/- theorem zero_lt_one Modified src/analysis/complex/isometry.lean Modified src/data/complex/basic.lean Modified src/data/real/golden_ratio.lean Modified src/geometry/euclidean/basic.lean Modified src/order/basic.lean Modified src/testing/slim_check/sampleable.lean Modified src/topology/path_connected.lean +/- theorem path.extend_one +/- theorem path.extend_zero Modified src/topology/unit_interval.lean + theorem unit_interval.mk_one + theorem unit_interval.mk_zero Modified test/nontriviality.lean 2021-05-30 21:09:58 fd48ac5 chore(data/list): extract sublists to a separate file (#7757) Minor splitting in `data/list/basic`, splitting out `sublists` to its own file, thereby delaying importing `data.nat.choose` in the `list` development. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.length_of_sublists_len - theorem list.length_sublists' - theorem list.length_sublists - theorem list.length_sublists_len - theorem list.map_ret_sublist_sublists - theorem list.map_sublists'_aux - theorem list.mem_sublists' - theorem list.mem_sublists - theorem list.mem_sublists_len - theorem list.mem_sublists_len_self - theorem list.sublists'_aux_append - theorem list.sublists'_aux_eq_sublists' - theorem list.sublists'_cons - theorem list.sublists'_eq_sublists - theorem list.sublists'_nil - theorem list.sublists'_reverse - theorem list.sublists'_singleton - theorem list.sublists_append - theorem list.sublists_aux_cons_append - theorem list.sublists_aux_cons_cons - theorem list.sublists_aux_cons_eq_sublists_aux₁ - theorem list.sublists_aux_eq_foldr.aux - theorem list.sublists_aux_eq_foldr - theorem list.sublists_aux_ne_nil - theorem list.sublists_aux₁_append - theorem list.sublists_aux₁_bind - theorem list.sublists_aux₁_concat - theorem list.sublists_aux₁_eq_sublists_aux - theorem list.sublists_concat - theorem list.sublists_eq_sublists' - def list.sublists_len - def list.sublists_len_aux - theorem list.sublists_len_aux_append - theorem list.sublists_len_aux_eq - theorem list.sublists_len_aux_zero - theorem list.sublists_len_sublist_of_sublist - theorem list.sublists_len_sublist_sublists' - theorem list.sublists_len_succ_cons - theorem list.sublists_len_succ_nil - theorem list.sublists_len_zero - theorem list.sublists_nil - theorem list.sublists_reverse - theorem list.sublists_singleton Modified src/data/list/pairwise.lean Added src/data/list/sublists.lean + theorem list.length_of_sublists_len + theorem list.length_sublists' + theorem list.length_sublists + theorem list.length_sublists_len + theorem list.map_ret_sublist_sublists + theorem list.map_sublists'_aux + theorem list.mem_sublists' + theorem list.mem_sublists + theorem list.mem_sublists_len + theorem list.mem_sublists_len_self + theorem list.sublists'_aux_append + theorem list.sublists'_aux_eq_sublists' + theorem list.sublists'_cons + theorem list.sublists'_eq_sublists + theorem list.sublists'_nil + theorem list.sublists'_reverse + theorem list.sublists'_singleton + theorem list.sublists_append + theorem list.sublists_aux_cons_append + theorem list.sublists_aux_cons_cons + theorem list.sublists_aux_cons_eq_sublists_aux₁ + theorem list.sublists_aux_eq_foldr.aux + theorem list.sublists_aux_eq_foldr + theorem list.sublists_aux_ne_nil + theorem list.sublists_aux₁_append + theorem list.sublists_aux₁_bind + theorem list.sublists_aux₁_concat + theorem list.sublists_aux₁_eq_sublists_aux + theorem list.sublists_concat + theorem list.sublists_eq_sublists' + def list.sublists_len + def list.sublists_len_aux + theorem list.sublists_len_aux_append + theorem list.sublists_len_aux_eq + theorem list.sublists_len_aux_zero + theorem list.sublists_len_sublist_of_sublist + theorem list.sublists_len_sublist_sublists' + theorem list.sublists_len_succ_cons + theorem list.sublists_len_succ_nil + theorem list.sublists_len_zero + theorem list.sublists_nil + theorem list.sublists_reverse + theorem list.sublists_singleton 2021-05-30 21:09:57 14b597c feat(analysis/normed_space): ∥n • a∥ ≤ n * ∥a∥ (#7745) From LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnnorm_gsmul_le + theorem nnnorm_nsmul_le + theorem norm_gsmul_le + theorem norm_nsmul_le 2021-05-30 19:15:46 0d842f0 fix(order/closure): unincorporated reviewer comments from #7446 (#7761) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/order/closure.lean 2021-05-30 15:26:33 33d803a refactor(convex/basic): make convex_hull into a closure operator (#7446) Bundle convex_hull as a closure operator, simplify duplicate proofs ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- def convex_hull Modified src/order/closure.lean 2021-05-30 09:54:50 25e36be chore(data/fintype/basic): `fintype α/β` from `fintype α ⊕ β` (#7736) Also renaming the equivalent `α × β` versions, for consistency. ESTIMATED CHANGES Modified src/data/fintype/basic.lean - def fintype.fintype_prod_left - def fintype.fintype_prod_right + def fintype.prod_left + def fintype.prod_right Modified src/group_theory/order_of_element.lean 2021-05-30 09:54:50 4ea253b feat(measure_theory/integration): in a sigma finite space, there exists an integrable positive function (#7721) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem measurable.nnreal_tsum Modified src/measure_theory/integration.lean + theorem measure_theory.exists_integrable_pos_of_sigma_finite Modified src/topology/algebra/infinite_sum.lean + theorem tsum_pos Modified src/topology/instances/ennreal.lean + theorem nnreal.has_sum_lt + theorem nnreal.has_sum_strict_mono + theorem nnreal.tsum_eq_to_nnreal_tsum + theorem nnreal.tsum_lt_tsum + theorem nnreal.tsum_pos + theorem nnreal.tsum_strict_mono 2021-05-30 08:29:40 8e25bb6 feat(algebra/homology): complexes in functor categories (#7744) From LTE. ESTIMATED CHANGES Added src/algebra/homology/functor.lean + def homological_complex.as_functor + def homological_complex.complex_of_functors_to_functor_to_complex 2021-05-30 08:29:39 f4d145e feat(algebra/homology): construct isomorphisms of complexes (#7741) From LTE. ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean + def homological_complex.hom.iso_app + def homological_complex.hom.iso_of_components + theorem homological_complex.hom.iso_of_components_app 2021-05-30 08:29:38 08bb112 chore(ring_theory/hahn_series): extract lemmas from slow definitions (#7737) This doesn't make them much faster, but it makes it easier to tell which bits are slow ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean + theorem hahn_series.emb_domain_add + theorem hahn_series.emb_domain_mul + theorem hahn_series.emb_domain_one + theorem hahn_series.emb_domain_smul 2021-05-30 04:33:33 e2168e5 feat(src/ring_theory/derivation): merge duplicates `derivation.comp` and `linear_map.comp_der` (#7727) I propose keeping the version introduced in #7715 since it also contains the statement that the push forward is linear, but moving it to the `linear_map` namespace to enable dot notation. Thanks to @Nicknamen for alerting me to the duplication: https://github.com/leanprover-community/mathlib/pull/7715#issuecomment-849192370 ESTIMATED CHANGES Modified src/ring_theory/derivation.lean - def derivation.comp +/- def linear_map.comp_der - theorem linear_map.comp_der_apply 2021-05-30 04:33:32 9d63c38 feat(topology/continuous_function/algebra): add `coe_fn_(linear_map|ring_hom|alg_hom)` (#7720) ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean + def continuous_map.coe_fn_alg_hom + def continuous_map.coe_fn_linear_map + def continuous_map.coe_fn_ring_hom 2021-05-30 01:16:52 a3ba4d4 feat(algebra/homology): eval and forget functors (#7742) From LTE. ESTIMATED CHANGES Modified src/algebra/homology/additive.lean Modified src/algebra/homology/differential_object.lean Modified src/algebra/homology/homological_complex.lean + def homological_complex.eval - def homological_complex.eval_at + def homological_complex.forget + def homological_complex.forget_eval Modified src/category_theory/graded_object.lean + def category_theory.graded_object.eval 2021-05-29 18:15:17 035aa60 feat(analysis/normed_space): SemiNormedGroup.has_zero_object (#7740) From LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/SemiNormedGroup.lean + theorem SemiNormedGroup.coe_comp + theorem SemiNormedGroup.zero_apply 2021-05-29 02:32:43 1ac49b0 chore(category_theory): dualize filtered categories to cofiltered categories (#7731) Per request on [zulip](https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics/topic/status.20update/near/240548989). I have not attempted to dualize "filtered colimits commute with finite limits", as I've never heard of that being used. ESTIMATED CHANGES Modified src/category_theory/filtered.lean + theorem category_theory.is_cofiltered.cone_nonempty + theorem category_theory.is_cofiltered.eq_condition + def category_theory.is_cofiltered.inf + theorem category_theory.is_cofiltered.inf_exists + theorem category_theory.is_cofiltered.inf_objs_exists + def category_theory.is_cofiltered.inf_to + theorem category_theory.is_cofiltered.inf_to_commutes + theorem category_theory.is_cofiltered.of_equivalence + theorem category_theory.is_cofiltered.of_is_left_adjoint + theorem category_theory.is_cofiltered.of_left_adjoint 2021-05-28 19:12:47 f74a375 chore(linear_algebra/finsupp): remove useless lemma (#7734) The lemma is not used in mathlib, it's mathematically useless (you'd never have a surjective function from an indexing set to a module), and it's badly named, so I propose removing it entirely. ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean - theorem finsupp.total_range 2021-05-28 15:21:27 13746fe feat(group_theory/subgroup linear_algebra/prod): add ker_prod_map (#7729) The kernel of the product of two `group_hom` is the product of the kernels (and similarly for monoids). ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem monoid_hom.ker_prod_map + theorem monoid_hom.prod_map_comap_prod Modified src/linear_algebra/prod.lean + theorem linear_map.ker_prod_map + theorem linear_map.prod_map_comap_prod 2021-05-28 11:55:01 5fff3b1 feat(ring_theory/mv_polynomial/basic): add polynomial.basis_monomials (#7728) We add `polynomial.basis_monomials` : the monomials form a basis on `polynomial R`. Because of the structure of the import, it seems to me a little complicated to do it directly, so I use `mv_polynomial.punit_alg_equiv` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- def finsupp.equiv_fun_on_fintype Modified src/data/polynomial/algebra_map.lean +/- theorem polynomial.C_eq_algebra_map + def polynomial.to_finsupp_iso_alg Modified src/data/polynomial/basic.lean +/- theorem polynomial.monomial_one_right_eq_X_pow Modified src/data/polynomial/monomial.lean Modified src/ring_theory/mv_polynomial/basic.lean + theorem polynomial.coe_basis_monomials 2021-05-27 09:01:17 5360e47 feat(algebra/module/linear_map): `linear_(map|equiv).restrict_scalars` is injective (#7725) So as not to repeat them for the lemmas, I moved the typeclasses into a `variables` statement. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- def linear_equiv.restrict_scalars + theorem linear_equiv.restrict_scalars_inj + theorem linear_equiv.restrict_scalars_injective +/- def linear_map.restrict_scalars + theorem linear_map.restrict_scalars_inj + theorem linear_map.restrict_scalars_injective 2021-05-27 05:47:47 6109558 chore(category_theory/*): provide aliases quiver.hom.le and has_le.le.hom (#7677) ESTIMATED CHANGES Modified src/algebra/category/Module/limits.lean Modified src/category_theory/category/default.lean +/- theorem category_theory.hom_of_le_le_of_hom +/- theorem category_theory.hom_of_le_refl +/- theorem category_theory.le_of_hom_hom_of_le Modified src/category_theory/category/pairwise.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/functor.lean Modified src/category_theory/isomorphism.lean +/- theorem category_theory.iso.to_eq Modified src/category_theory/limits/lattice.lean Modified src/category_theory/opposites.lean +/- theorem category_theory.le_of_op_hom +/- def category_theory.op_hom_of_le Modified src/category_theory/sites/spaces.lean Modified src/category_theory/skeletal.lean Modified src/category_theory/subobject/basic.lean Modified src/category_theory/subobject/lattice.lean Modified src/category_theory/subobject/types.lean Modified src/topology/category/Profinite/as_limit.lean Modified src/topology/category/Top/limits.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/Top/opens.lean +/- def topological_space.opens.bot_le +/- def topological_space.opens.inf_le_left +/- def topological_space.opens.inf_le_right +/- def topological_space.opens.le_supr +/- def topological_space.opens.le_top Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_condition/opens_le_cover.lean Modified src/topology/sheaves/sheaf_condition/unique_gluing.lean 2021-05-27 00:46:29 a85fbda feat(algebra/opposites): add units.op_equiv (#7723) ESTIMATED CHANGES Modified src/algebra/opposites.lean + theorem units.coe_op_equiv_symm + theorem units.coe_unop_op_equiv + def units.op_equiv 2021-05-27 00:46:28 20291d0 feat(topology/semicontinuous): basics on lower and upper semicontinuous functions (#7693) We mimick the interface for continuity, by introducing predicates `lower_semicontinuous_within_at`, `lower_semicontinuous_at`, `lower_semicontinuous_on` and `lower_semicontinuous` (and similarly for upper semicontinuity). ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/constructions.lean + theorem mem_nhds_prod_iff' Added src/topology/semicontinuous.lean + theorem continuous.lower_semicontinuous + theorem continuous.upper_semicontinuous + theorem continuous_at.lower_semicontinuous_at + theorem continuous_at.upper_semicontinuous_at + theorem continuous_at_iff_lower_upper_semicontinuous_at + theorem continuous_iff_lower_upper_semicontinuous + theorem continuous_on.lower_semicontinuous_on + theorem continuous_on.upper_semicontinuous_on + theorem continuous_on_iff_lower_upper_semicontinuous_on + theorem continuous_within_at.lower_semicontinuous_within_at + theorem continuous_within_at.upper_semicontinuous_within_at + theorem continuous_within_at_iff_lower_upper_semicontinuous_within_at + theorem is_closed.lower_semicontinuous_at_indicator + theorem is_closed.lower_semicontinuous_indicator + theorem is_closed.lower_semicontinuous_on_indicator + theorem is_closed.lower_semicontinuous_within_at_indicator + theorem is_closed.upper_semicontinuous_at_indicator + theorem is_closed.upper_semicontinuous_indicator + theorem is_closed.upper_semicontinuous_on_indicator + theorem is_closed.upper_semicontinuous_within_at_indicator + theorem is_open.lower_semicontinuous_at_indicator + theorem is_open.lower_semicontinuous_indicator + theorem is_open.lower_semicontinuous_on_indicator + theorem is_open.lower_semicontinuous_within_at_indicator + theorem is_open.upper_semicontinuous_at_indicator + theorem is_open.upper_semicontinuous_indicator + theorem is_open.upper_semicontinuous_on_indicator + theorem is_open.upper_semicontinuous_within_at_indicator + theorem lower_semicontinuous.add' + theorem lower_semicontinuous.add + theorem lower_semicontinuous.is_open_preimage + theorem lower_semicontinuous.lower_semicontinuous_at + theorem lower_semicontinuous.lower_semicontinuous_on + theorem lower_semicontinuous.lower_semicontinuous_within_at + def lower_semicontinuous + theorem lower_semicontinuous_at.add' + theorem lower_semicontinuous_at.add + theorem lower_semicontinuous_at.lower_semicontinuous_within_at + def lower_semicontinuous_at + theorem lower_semicontinuous_at_bsupr + theorem lower_semicontinuous_at_const + theorem lower_semicontinuous_at_sum + theorem lower_semicontinuous_at_supr + theorem lower_semicontinuous_at_tsum + theorem lower_semicontinuous_bsupr + theorem lower_semicontinuous_const + theorem lower_semicontinuous_iff_is_open + theorem lower_semicontinuous_on.add' + theorem lower_semicontinuous_on.add + theorem lower_semicontinuous_on.lower_semicontinuous_within_at + theorem lower_semicontinuous_on.mono + def lower_semicontinuous_on + theorem lower_semicontinuous_on_bsupr + theorem lower_semicontinuous_on_const + theorem lower_semicontinuous_on_sum + theorem lower_semicontinuous_on_supr + theorem lower_semicontinuous_on_tsum + theorem lower_semicontinuous_on_univ_iff + theorem lower_semicontinuous_sum + theorem lower_semicontinuous_supr + theorem lower_semicontinuous_tsum + theorem lower_semicontinuous_within_at.add' + theorem lower_semicontinuous_within_at.add + theorem lower_semicontinuous_within_at.mono + def lower_semicontinuous_within_at + theorem lower_semicontinuous_within_at_bsupr + theorem lower_semicontinuous_within_at_const + theorem lower_semicontinuous_within_at_sum + theorem lower_semicontinuous_within_at_supr + theorem lower_semicontinuous_within_at_tsum + theorem lower_semicontinuous_within_at_univ_iff + theorem upper_semicontinuous.add' + theorem upper_semicontinuous.add + theorem upper_semicontinuous.is_open_preimage + theorem upper_semicontinuous.upper_semicontinuous_at + theorem upper_semicontinuous.upper_semicontinuous_on + theorem upper_semicontinuous.upper_semicontinuous_within_at + def upper_semicontinuous + theorem upper_semicontinuous_at.add' + theorem upper_semicontinuous_at.add + theorem upper_semicontinuous_at.upper_semicontinuous_within_at + def upper_semicontinuous_at + theorem upper_semicontinuous_at_binfi + theorem upper_semicontinuous_at_const + theorem upper_semicontinuous_at_infi + theorem upper_semicontinuous_at_sum + theorem upper_semicontinuous_binfi + theorem upper_semicontinuous_const + theorem upper_semicontinuous_iff_is_open + theorem upper_semicontinuous_infi + theorem upper_semicontinuous_on.add' + theorem upper_semicontinuous_on.add + theorem upper_semicontinuous_on.mono + theorem upper_semicontinuous_on.upper_semicontinuous_within_at + def upper_semicontinuous_on + theorem upper_semicontinuous_on_binfi + theorem upper_semicontinuous_on_const + theorem upper_semicontinuous_on_infi + theorem upper_semicontinuous_on_sum + theorem upper_semicontinuous_on_univ_iff + theorem upper_semicontinuous_sum + theorem upper_semicontinuous_within_at.add' + theorem upper_semicontinuous_within_at.add + theorem upper_semicontinuous_within_at.mono + def upper_semicontinuous_within_at + theorem upper_semicontinuous_within_at_binfi + theorem upper_semicontinuous_within_at_const + theorem upper_semicontinuous_within_at_infi + theorem upper_semicontinuous_within_at_sum + theorem upper_semicontinuous_within_at_univ_iff 2021-05-26 21:50:17 0970fda feat(measure_theory/regular): more material on regular measures (#7680) This PR: * defines weakly regular measures * shows that for weakly regular measures any finite measure set can be approximated from inside by closed sets * shows that for regular measures any finite measure set can be approximated from inside by compact sets * shows that any finite measure on a metric space is weakly regular * shows that any locally finite measure on a sigma compact locally compact metric space is regular ESTIMATED CHANGES Modified docs/references.bib Modified src/analysis/specific_limits.lean + theorem ennreal.exists_pos_sum_of_encodable' Modified src/measure_theory/regular.lean + theorem is_open.exists_lt_is_closed_of_gt + theorem is_open.exists_lt_is_compact + theorem is_open.measure_eq_supr_is_closed + theorem is_open.measure_eq_supr_is_compact + theorem measurable_set.exists_is_open_lt_of_lt' + theorem measurable_set.exists_is_open_lt_of_lt + theorem measurable_set.exists_lt_is_closed_of_lt_top + theorem measurable_set.exists_lt_is_closed_of_lt_top_of_pos + theorem measurable_set.exists_lt_is_compact_of_lt_top + theorem measurable_set.exists_lt_is_compact_of_lt_top_of_pos + theorem measurable_set.measure_eq_infi_is_open' + theorem measurable_set.measure_eq_infi_is_open + theorem measurable_set.measure_eq_supr_is_closed_of_finite_measure + theorem measurable_set.measure_eq_supr_is_closed_of_lt_top + theorem measurable_set.measure_eq_supr_is_compact_of_lt_top - theorem measure_theory.measure.regular.inner_regular_eq - theorem measure_theory.measure.regular.outer_regular_eq + theorem measure_theory.measure.weakly_regular.exists_closed_subset_self_subset_open_of_pos + theorem measure_theory.measure.weakly_regular.exists_subset_is_open_measure_lt_top + theorem measure_theory.measure.weakly_regular.inner_regular_of_pseudo_emetric_space + theorem measure_theory.measure.weakly_regular.restrict_of_is_open + theorem measure_theory.measure.weakly_regular.restrict_of_measurable_set + theorem measure_theory.measure.weakly_regular.weakly_regular_of_inner_regular_of_finite_measure Modified src/topology/metric_space/hausdorff_distance.lean + theorem is_open.exists_Union_is_closed 2021-05-26 21:50:16 a2e8b3c feat(special_functions/polynomials): Generalize some polynomial asymptotics to iff statements. (#7545) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotic_equivalent.lean + theorem asymptotics.is_equivalent_zero_iff_is_O_zero Modified src/analysis/special_functions/polynomials.lean + theorem polynomial.abs_div_tendsto_at_top_of_degree_gt + theorem polynomial.abs_is_bounded_under_iff + theorem polynomial.abs_tendsto_at_top_iff + theorem polynomial.div_tendsto_zero_iff_degree_lt - theorem polynomial.eval_div_tendsto_at_top_of_degree_gt + theorem polynomial.tendsto_at_bot_iff_leading_coeff_nonpos + theorem polynomial.tendsto_at_top_iff_leading_coeff_nonneg + theorem polynomial.tendsto_nhds_iff Modified src/data/nat/with_bot.lean + theorem nat.with_bot.one_le_iff_zero_lt Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto_const_mul_pow_at_top_iff + theorem filter.tendsto_neg_const_mul_pow_at_top_iff Modified src/order/liminf_limsup.lean + theorem filter.not_is_bounded_under_of_tendsto_at_bot + theorem filter.not_is_bounded_under_of_tendsto_at_top Modified src/topology/algebra/ordered/basic.lean + theorem mul_tendsto_nhds_one_nhds_one + theorem mul_tendsto_nhds_zero_left + theorem mul_tendsto_nhds_zero_right +/- theorem nhds_basis_Ioo' +/- theorem nhds_basis_Ioo + theorem nhds_basis_Ioo_pos + theorem nhds_basis_Ioo_pos_of_pos + theorem nhds_basis_abs_sub_lt + theorem nhds_basis_zero_abs_sub_lt + theorem nhds_eq_map_mul_left_nhds_one + theorem nhds_eq_map_mul_right_nhds_one + theorem tendsto_const_mul_fpow_at_top_zero + theorem tendsto_const_mul_fpow_at_top_zero_iff + theorem tendsto_const_mul_pow_nhds_iff Modified src/topology/separation.lean + theorem tendsto_const_nhds_iff 2021-05-26 19:17:45 fd43ce0 feat(linear_algebra/matrix): generalize `basis.to_matrix_mul_to_matrix` (#7670) Now the second family of vectors does not have to form a basis. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + theorem basis.sum_repr_mul_repr Modified src/linear_algebra/matrix/basis.lean 2021-05-26 13:34:28 fa27c0c feat(ring_theory/derivation): define push forward of derivations (#7715) ESTIMATED CHANGES Modified src/ring_theory/derivation.lean + theorem derivation.coe_comp + theorem derivation.coe_to_linear_map_comp + def derivation.comp + theorem derivation.mk_coe 2021-05-26 13:34:27 b059708 feat(data/nnreal): filling out some lemmas (#7710) From LTE. ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.div_le_iff' + theorem nnreal.div_lt_iff' +/- theorem nnreal.div_lt_iff + theorem nnreal.le_div_iff' + theorem nnreal.le_div_iff + theorem nnreal.lt_div_iff' 2021-05-26 13:34:26 273546e feat(group_theory/sub{group,monoid,semiring,ring}): subobjects inherit the actions of their carrier type (#7665) This acts as a generalization of `algebra.of_subsemiring` and `algebra.of_subring`, and transfers the weaker action structures too. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/group_theory/subgroup.lean + theorem subgroup.smul_def Modified src/group_theory/submonoid/operations.lean + theorem submonoid.smul_def Modified src/ring_theory/subring.lean + theorem subring.smul_def Modified src/ring_theory/subsemiring.lean + theorem subsemiring.smul_def 2021-05-26 13:34:25 66ec15c feat(analysis/complex/isometry): add linear_isometry_complex (#6923) add proof about the isometries in the complex plane ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.conj_li_apply Added src/analysis/complex/isometry.lean + theorem linear_isometry.abs_apply_sub_one_eq_abs_sub_one + theorem linear_isometry.im_apply_eq_im + theorem linear_isometry.im_apply_eq_im_or_neg_of_re_apply_eq_re + theorem linear_isometry.re_apply_eq_re + theorem linear_isometry.re_apply_eq_re_of_add_conj_eq + theorem linear_isometry_complex + theorem linear_isometry_complex_aux Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.linear_isometry.id_apply + theorem linear_isometry_equiv.linear_isometry.id_to_linear_map Modified src/data/complex/basic.lean + theorem complex.conj_one + theorem complex.conj_sub 2021-05-26 08:25:18 a741f64 docs(*): spelling (#7719) ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_topology/Moore_complex.lean Modified src/analysis/normed_space/normed_group_quotient.lean Modified src/category_theory/category/pairwise.lean Modified src/category_theory/limits/cofinal.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/monad/equiv_mon.lean Modified src/category_theory/subobject/lattice.lean Modified src/meta/expr.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/tactic/group.lean Modified src/tactic/lint/misc.lean Modified src/tactic/simps.lean 2021-05-26 08:25:17 58c57ca fix(linear_algebra/tensor_product): relax from module to distrib_mul_action (#7709) This was an accident in #7516 where the wrong variable was used. `R'` is the base of a distrib_mul_action, `R''`, is the base of a module. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean 2021-05-26 08:25:16 71dcb64 feat(order/conditionally_complete_lattice): add lemmas (#7689) These lemmas names match the version that already exist without the `c` prefix. This also renames `finset.sup_eq_Sup` to `finset.sup_id_eq_Sup`, and introduces a new `finset.sup_eq_Sup_image`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean - theorem finset.inf_eq_Inf + theorem finset.inf_eq_Inf_image + theorem finset.inf_id_eq_Inf - theorem finset.sup_eq_Sup + theorem finset.sup_eq_Sup_image + theorem finset.sup_id_eq_Sup Modified src/order/compactly_generated.lean Modified src/order/complete_lattice.lean +/- theorem infi_true +/- theorem supr_true Modified src/order/conditionally_complete_lattice.lean +/- theorem cSup_empty + theorem cinfi_le_of_le + theorem cinfi_pos + theorem csupr_neg + theorem csupr_pos + theorem finset.inf'_eq_cInf_image + theorem finset.inf'_id_eq_cInf + theorem finset.sup'_eq_cSup_image + theorem finset.sup'_id_eq_cSup + theorem le_csupr_of_le +/- theorem with_bot.cSup_empty + theorem with_top.cInf_empty Modified src/ring_theory/noetherian.lean 2021-05-26 08:25:15 00394b7 feat(tactic/simps): implement prefix names (#7596) * You can now write `initialize_simps_projections equiv (to_fun → coe as_prefix)` to add the projection name as a prefix to the simp lemmas: if you then write `@[simps coe] def foo ...` you get a lemma named `coe_foo`. * Remove the `short_name` option from `simps_cfg`. This was unused and not that useful. * Refactor some tuples used in the functions into structures. * Implements one item of #5489. ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.zip_with3 + def list.zip_with4 + def list.zip_with5 Modified src/meta/expr.lean + def name.append_to_last + def name.update_last Modified src/tactic/reserved_notation.lean Modified src/tactic/simps.lean + def projection_rule Modified test/simps.lean + def prefix_projection_names.equiv.simps.symm_apply + def prefix_projection_names.equiv.symm + structure prefix_projection_names.equiv + def prefix_projection_names.foo - def short_name1 2021-05-26 06:48:35 1f566bc chore(scripts): update nolints.txt (#7718) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-05-26 06:48:34 f7f0a30 feat(scripts/lint-style.py): add linter that disables importing omega (#7646) * Files in mathlib are not allowed to `import tactic` or `import tactic.omega`. This adds a style linter to enforce this. * `tactic.default` is allowed to import `tactic.omega` (other files that only import other files are excluded from these checks, so a malicious user still could get around this linter, but it's hard to imagine this happening accidentally) * Remove `import tactic` from 3 files (in `archive/` and `test/`) ESTIMATED CHANGES Modified archive/imo/imo1964_q1.lean Modified scripts/lint-style.py Modified test/examples.lean Modified test/traversable.lean 2021-05-26 00:55:46 fd1c8e7 feat(data/list/forall2): add two lemmas about forall₂ and reverse (#7714) rel_reverse shows that forall₂ is preserved across reversed lists, forall₂_iff_reverse uses rel_reverse to show that it is preserved in both directions. ESTIMATED CHANGES Modified src/data/list/forall2.lean + theorem list.forall₂_reverse_iff + theorem list.rel_reverse 2021-05-25 23:21:27 360ca9c feat(analysis/special_functions/integrals): `interval_integrable_log` (#7713) ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean + theorem interval_integral.interval_integrable.log + theorem interval_integral.interval_integrable_log 2021-05-25 23:21:26 f1425b6 feat(measure_theory/interval_integral): `integral_comp_add_left` (#7712) ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_comp_add_left 2021-05-25 19:48:36 82e78ce feat(algebra/big_operators/finprod): add lemma `finprod_mem_finset_of_product` (#7439) ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_curry + theorem finprod_curry₃ + theorem finprod_mem_finset_product' + theorem finprod_mem_finset_product + theorem finprod_mem_finset_product₃ + theorem finprod_mem_mul_support + theorem finset.mul_support_of_fiberwise_prod_subset_image Modified src/data/support.lean + theorem function.mul_support_along_fiber_finite_of_finite + theorem function.mul_support_along_fiber_subset 2021-05-25 17:19:09 8078eca feat(linear_algebra): `det (M ⬝ N ⬝ M') = det N`, where `M'` is an inverse of `M` (#7633) This is an important step towards showing the determinant of `linear_map.to_matrix` does not depend on the choice of basis. The main difficulty is allowing the two indexing types of `M` to be (a priori) different. They are in bijection though (using `basis.index_equiv` from #7631), so using `reindex_linear_equiv` we can turn everything into square matrices and apply the "usual" proof. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + def equiv_of_pi_lequiv_pi + theorem matrix.det_conj + def matrix.index_equiv_of_inv Modified src/linear_algebra/matrix/reindex.lean + theorem matrix.reindex_alg_equiv_mul + theorem matrix.reindex_linear_equiv_mul Modified src/linear_algebra/matrix/to_lin.lean + theorem matrix.to_lin'_mul_apply + def matrix.to_lin'_of_inv + theorem matrix.to_lin_mul_apply + def matrix.to_lin_of_inv 2021-05-25 15:58:58 c17c738 feat(logic/girard): move file to counterexamples (#7706) Since the file feels like a counterexample, I suggest putting it in that folder. ESTIMATED CHANGES Renamed src/logic/girard.lean to counterexamples/girard.lean 2021-05-25 15:58:57 a617d0a feat(algebra/category/Module): R-mod has enough projectives (#7113) Another piece of @TwoFX's `projective` branch, lightly edited. ESTIMATED CHANGES Added src/algebra/category/Module/projective.lean + theorem Module.projective_of_free + theorem is_projective.iff_projective Modified src/algebra/module/projective.lean + theorem is_projective.of_lifting_property' +/- theorem is_projective.of_lifting_property 2021-05-25 11:18:58 bbf6150 feat(measure_theory/measurable_space): add instances for subtypes (#7702) ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem measurable_set.coe_bot + theorem measurable_set.coe_compl + theorem measurable_set.coe_empty + theorem measurable_set.coe_insert + theorem measurable_set.coe_inter + theorem measurable_set.coe_sdiff + theorem measurable_set.coe_top + theorem measurable_set.coe_union + theorem measurable_set.mem_coe 2021-05-25 11:18:57 75e07d1 feat(linear_algebra/matrix/determinant): lemmas about commutativity under det (#7685) ESTIMATED CHANGES Modified src/linear_algebra/matrix/determinant.lean + theorem matrix.det_mul_comm + theorem matrix.det_mul_left_comm + theorem matrix.det_mul_right_comm + theorem matrix.det_units_conj' + theorem matrix.det_units_conj 2021-05-25 11:18:56 4abbe10 feat(group_theory/group_action/units): group actions on and by units (#7438) This removes all the lemmas about `(u : α) • x` and `(↑u⁻¹ : α) • x` in favor of granting `units α` its very own `has_scalar` structure, along with providing the stronger variants to make it usable elsewhere. This means that downstream code need only reason about `[group G] [mul_action G M]` instead of needing to handle groups and `units` separately. The (multiplicative versions of the) removed and moved lemmas are: * `units.inv_smul_smul` → `inv_smul_smul` * `units.smul_inv_smul` → `smul_inv_smul` * `units.smul_perm_hom`, `mul_action.to_perm` → `mul_action.to_perm_hom` * `units.smul_perm` → `mul_action.to_perm` * `units.smul_left_cancel` → `smul_left_cancel` * `units.smul_eq_iff_eq_inv_smul` → `smul_eq_iff_eq_inv_smul` * `units.smul_eq_zero` → `smul_eq_zero_iff_eq` (to avoid clashing with `smul_eq_zero`) * `units.smul_ne_zero` → `smul_ne_zero_iff_ne` * `homeomorph.smul_of_unit` → `homeomorph.smul` (the latter already existed, and the former was a special case) * `units.measurable_const_smul_iff` → `measurable_const_smul_iff` * `units.ae_measurable_const_smul_iff` → `ae_measurable_const_smul_iff` The new lemmas are: * `smul_eq_zero_iff_eq'`, a `group_with_zero` version of `smul_eq_zero_iff_eq` * `smul_ne_zero_iff_ne'`, a `group_with_zero` version of `smul_ne_zero_iff_ne` * `units.neg_smul`, a version of `neg_smul` for units. We don't currently have typeclasses about `neg` on objects without `+`. We also end up needing some new typeclass instances downstream * `units.measurable_space` * `units.has_measurable_smul` * `units.has_continuous_smul` This goes on to remove lots of coercions from `alternating_map`, `matrix.det`, and some lie algebra stuff. This makes the theorem statement cleaner, but occasionally requires rewriting through `units.smul_def` to add or remove the coercion. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean Modified src/algebra/lie/classical.lean Modified src/algebra/lie/skew_adjoint.lean Modified src/algebra/module/basic.lean + theorem units.neg_smul Modified src/algebra/module/linear_map.lean Modified src/algebra/module/ordered.lean Modified src/group_theory/group_action/group.lean + def add_action.to_perm_hom - def add_units.vadd_perm_hom +/- theorem is_unit.smul_eq_zero +/- theorem is_unit.smul_left_cancel +/- def mul_action.to_perm + def mul_action.to_perm_hom + theorem smul_eq_iff_eq_inv_smul + theorem smul_eq_zero_iff_eq' + theorem smul_eq_zero_iff_eq + theorem smul_ne_zero_iff_ne' + theorem smul_ne_zero_iff_ne - theorem units.inv_smul_smul - theorem units.smul_eq_iff_eq_inv_smul - theorem units.smul_eq_zero - theorem units.smul_inv_smul - theorem units.smul_left_cancel - theorem units.smul_ne_zero - def units.smul_perm - def units.smul_perm_hom Added src/group_theory/group_action/units.lean + theorem units.coe_smul + theorem units.smul_def + theorem units.smul_inv Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/matrix/determinant.lean Modified src/linear_algebra/matrix/nonsingular_inverse.lean Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/arithmetic.lean - theorem units.ae_measurable_const_smul_iff - theorem units.measurable_const_smul_iff Modified src/topology/algebra/mul_action.lean +/- theorem is_unit.continuous_at_const_smul_iff +/- theorem is_unit.continuous_const_smul_iff +/- theorem is_unit.continuous_on_const_smul_iff +/- theorem is_unit.continuous_within_at_const_smul_iff +/- theorem is_unit.is_closed_map_smul +/- theorem is_unit.is_open_map_smul +/- theorem is_unit.tendsto_const_smul_iff - theorem units.tendsto_const_smul_iff 2021-05-25 05:41:54 d81fcda feat(algebra/group_with_zero): add some equational lemmas (#7705) Add some equations for `group_with_zero` that are direct analogues of lemmas for `group`. Useful for #6923. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem eq_inv_iff + theorem eq_inv_mul_iff_mul_eq' +/- theorem eq_inv_of_mul_left_eq_one +/- theorem eq_inv_of_mul_right_eq_one + theorem eq_mul_inv_iff_mul_eq' +/- theorem group_with_zero.mul_left_injective +/- theorem group_with_zero.mul_right_injective +/- theorem inv_eq_iff +/- theorem inv_eq_one' +/- theorem inv_inj' +/- theorem inv_mul_cancel +/- theorem inv_mul_cancel_left' +/- theorem inv_mul_cancel_right' + theorem inv_mul_eq_iff_eq_mul' + theorem inv_mul_eq_one' +/- theorem inv_ne_zero + theorem mul_eq_one_iff_eq_inv' + theorem mul_eq_one_iff_inv_eq' +/- theorem mul_inv_cancel_left' +/- theorem mul_inv_cancel_right' + theorem mul_inv_eq_iff_eq_mul' + theorem mul_inv_eq_one' 2021-05-25 00:46:31 a880ea4 feat(ring_theory/coprime): add some lemmas (#7650) ESTIMATED CHANGES Modified src/ring_theory/coprime.lean + theorem is_coprime.is_unit_of_dvd' + theorem is_coprime.neg_left + theorem is_coprime.neg_left_iff + theorem is_coprime.neg_neg + theorem is_coprime.neg_neg_iff + theorem is_coprime.neg_right + theorem is_coprime.neg_right_iff + theorem is_coprime.of_coprime_of_dvd_left + theorem is_coprime.of_coprime_of_dvd_right + theorem is_coprime.pow_iff + theorem is_coprime.pow_left_iff + theorem is_coprime.pow_right_iff + theorem not_coprime_zero_zero 2021-05-25 00:46:30 c3dcb7d feat(category_theory/limits): comma category colimit construction (#7535) As well as the duals. Also adds some autoparams for consistency with `has_limit` and some missing instances which are basically just versions of existing things ESTIMATED CHANGES Modified src/category_theory/arrow.lean + def category_theory.arrow.left_func + def category_theory.arrow.left_to_right + def category_theory.arrow.right_func Added src/category_theory/limits/comma.lean + def category_theory.comma.cocone_of_preserves + def category_theory.comma.cocone_of_preserves_is_colimit + def category_theory.comma.colimit_auxiliary_cocone + def category_theory.comma.cone_of_preserves + def category_theory.comma.cone_of_preserves_is_limit + def category_theory.comma.limit_auxiliary_cone Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/kan_extension.lean Modified src/category_theory/limits/over.lean - def category_theory.functor.to_cocone - def category_theory.functor.to_cone Modified src/category_theory/limits/preserves/basic.lean Modified src/category_theory/limits/punit.lean + def category_theory.limits.punit_cocone + def category_theory.limits.punit_cone Modified src/category_theory/over.lean Modified src/category_theory/punit.lean Modified src/category_theory/structured_arrow.lean +/- theorem category_theory.costructured_arrow.eq_mk +/- def category_theory.costructured_arrow.proj + theorem category_theory.costructured_arrow.w +/- def category_theory.structured_arrow.proj + theorem category_theory.structured_arrow.w 2021-05-24 19:29:16 17f3b80 feat(100-theorems-list/16_abel_ruffini): some simplifications (#7699) ESTIMATED CHANGES Modified archive/100-theorems-list/16_abel_ruffini.lean +/- theorem abel_ruffini.irreducible_Phi Modified docs/100.yaml 2021-05-24 19:29:15 51526ae chore(topology): rename mem_nhds_sets and mem_of_nhds and mem_nhds_sets_iff (#7690) Rename `mem_nhds_sets` to `is_open.mem_nhds`, and `mem_nhds_sets_iff` to `mem_nhds_iff`, and `mem_of_nhds` to `mem_of_mem_nhds`. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/normed_group_quotient.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/seminorm.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/pow.lean Modified src/data/analysis/topology.lean Modified src/data/real/ennreal.lean Modified src/dynamics/omega_limit.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/bump_function.lean +/- theorem smooth_bump_function.c_mem_support Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/local_invariant_properties.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/pi.lean Modified src/measure_theory/set_integral.lean Modified src/order/basic.lean Modified src/topology/G_delta.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/algebra/ordered/liminf_limsup.lean Modified src/topology/bases.lean Modified src/topology/basic.lean + theorem is_open.mem_nhds + theorem mem_nhds_iff - theorem mem_nhds_sets - theorem mem_nhds_sets_iff + theorem mem_of_mem_nhds - theorem mem_of_nhds Modified src/topology/category/Compactum.lean Modified src/topology/compact_open.lean Modified src/topology/constructions.lean + theorem prod_is_open.mem_nhds - theorem prod_mem_nhds_sets Modified src/topology/continuous_function/bounded.lean Modified src/topology/continuous_function/stone_weierstrass.lean Modified src/topology/continuous_on.lean + theorem nhds_within_le_nhds Modified src/topology/dense_embedding.lean Modified src/topology/extend_from.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/real.lean Modified src/topology/list.lean Modified src/topology/local_homeomorph.lean Modified src/topology/locally_constant/basic.lean Modified src/topology/maps.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/opens.lean Modified src/topology/order.lean Modified src/topology/paracompact.lean Modified src/topology/path_connected.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/topological_fiber_bundle.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean Modified src/topology/urysohns_lemma.lean 2021-05-24 14:07:33 91a547e feat(algebra/opposites): `(un)op_ne_zero_iff` (#7698) ESTIMATED CHANGES Modified src/algebra/opposites.lean + theorem opposite.op_ne_zero_iff + theorem opposite.unop_ne_zero_iff 2021-05-24 14:07:32 a09ddc7 feat(measure_theory/interval_integral): `interval_integrable.mono` (#7679) `interval_integrable f ν a b → interval c d ⊆ interval a b → μ ≤ ν → interval_integrable f μ c d` ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integrable.def + theorem interval_integrable.mono + theorem interval_integrable.mono_measure + theorem interval_integrable.mono_set + theorem interval_integrable.mono_set_ae +/- theorem interval_integrable.trans + theorem interval_integrable_iff +/- theorem measure_theory.integrable.interval_integrable 2021-05-24 11:01:13 0b51a72 feat(linear_algebra/determinant): specialize `is_basis.iff_det` (#7668) After the bundled basis refactor, applying `is_basis.iff_det` in the forward direction is slightly more involved (since defining the `iff` requires an unbundled basis), so I added a lemma that does the necessary translation between "unbundled basis" and "bundled basis" for you. ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem basis.is_unit_det - theorem is_basis.iff_det + theorem is_basis_iff_det 2021-05-24 11:01:12 8ff2783 feat(counterexamples/cyclotomic_105): add coeff_cyclotomic_105 (#7648) We show that `coeff (cyclotomic 105 ℤ) 7 = -2`, proving that not all coefficients of cyclotomic polynomials are `0`, `-1` or `1`. ESTIMATED CHANGES Added counterexamples/cyclotomic_105.lean + theorem coeff_cyclotomic_105 + theorem cyclotomic_105 + theorem cyclotomic_15 + theorem cyclotomic_21 + theorem cyclotomic_35 + theorem cyclotomic_3 + theorem cyclotomic_5 + theorem cyclotomic_7 + theorem not_forall_coeff_cyclotomic_neg_one_zero_one + theorem prime_3 + theorem prime_5 + theorem prime_7 + theorem proper_divisors_105 + theorem proper_divisors_15 + theorem proper_divisors_21 + theorem proper_divisors_35 Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_bit0_mul + theorem polynomial.coeff_bit1_mul 2021-05-24 05:13:08 16733c8 chore(data/nat/basic): move unique {units/add_units} instances (#7701) ESTIMATED CHANGES Modified src/data/nat/basic.lean Modified src/ring_theory/int/basic.lean 2021-05-23 23:25:01 2734d91 fix(data/nat/factorial): fix factorial_zero (#7697) ESTIMATED CHANGES Modified src/data/nat/factorial.lean +/- theorem nat.factorial_zero 2021-05-23 16:33:37 6cffc9f chore(logic/unique): a true prop is unique (#7688) I found myself needing to construct this instance by hand somewhere; since we already need it to construct `unique true`, we may as well make a def. ESTIMATED CHANGES Modified src/logic/unique.lean + def unique_prop 2021-05-23 13:50:13 57cd5ef refactor(*): remove some uses of omega in the library (#7700) ESTIMATED CHANGES Modified src/algebra/homology/augment.lean Modified src/algebra/homology/single.lean Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean 2021-05-22 21:53:35 97a5276 doc(number_theory/bernoulli): write statements in math mode (#7696) * It took me some work to see the difference between the two statements, so I added the statements in math mode. * Change name `sum_range_pow'` -> `sum_Ico_pow` ESTIMATED CHANGES Modified docs/100.yaml Modified src/number_theory/bernoulli.lean + theorem sum_Ico_pow - theorem sum_range_pow' 2021-05-22 16:17:14 fb95362 fix(algebra/homology): imports (#7655) ESTIMATED CHANGES Modified src/algebra/homology/homology.lean Modified src/algebra/homology/image_to_kernel.lean 2021-05-22 12:15:37 0e216ce feat(order): if s is finite then Sup s ∈ s (#7682) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem finset.nonempty.cInf_mem + theorem finset.nonempty.cSup_mem + theorem set.nonempty.cInf_mem + theorem set.nonempty.cSup_mem 2021-05-22 12:15:36 418dc04 feat(100-theorems-list/16_abel_ruffini): The Abel-Ruffini Theorem (#7562) It's done! ESTIMATED CHANGES Added archive/100-theorems-list/16_abel_ruffini.lean + theorem abel_ruffini.coeff_five_Phi + theorem abel_ruffini.coeff_zero_Phi + theorem abel_ruffini.complex_roots_Phi + theorem abel_ruffini.degree_Phi + theorem abel_ruffini.exists_not_solvable_by_rad + theorem abel_ruffini.gal_Phi + theorem abel_ruffini.irreducible_Phi + theorem abel_ruffini.leading_coeff_Phi + theorem abel_ruffini.map_Phi + theorem abel_ruffini.monic_Phi + theorem abel_ruffini.nat_degree_Phi + theorem abel_ruffini.not_solvable_by_rad' + theorem abel_ruffini.not_solvable_by_rad + theorem abel_ruffini.real_roots_Phi_ge + theorem abel_ruffini.real_roots_Phi_ge_aux + theorem abel_ruffini.real_roots_Phi_le Modified docs/100.yaml Modified src/field_theory/separable.lean + theorem polynomial.card_root_set_eq_nat_degree 2021-05-22 06:50:13 b29d40c fix(algebra): change local transparency to semireducible (#7687) * When a type is `[irreducible]` it should locally be made `[semireducible]` and (almost) never `[reducible]`. * If it is made `[reducible]`, type-class inference will unfold this definition, and will apply instances that would not type-check when the definition is `[irreducible]` ESTIMATED CHANGES Modified src/algebra/opposites.lean +/- theorem opposite.op_eq_one_iff +/- theorem opposite.op_eq_zero_iff +/- theorem opposite.unop_eq_one_iff +/- theorem opposite.unop_eq_zero_iff Modified src/algebra/ordered_monoid.lean Modified src/data/polynomial/ring_division.lean 2021-05-21 21:35:13 f8530d5 feat(ring_theory/ideal/operations): `ideal.span_singleton_pow` (#7660) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.span_singleton_pow 2021-05-21 16:38:59 f70e160 chore(order/conditionally_complete_lattice): golf proofs with `order_dual` (#7684) Even in the places where this doesn't result in a shorter proof, it makes it obvious that the `inf` lemmas have a matching `sup` lemma. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean 2021-05-21 11:28:01 233eff0 feat(data/fintype/card_embedding): the birthday problem (#7363) ESTIMATED CHANGES Added archive/100-theorems-list/93_birthday_problem.lean + theorem birthday Modified docs/100.yaml Modified src/data/equiv/basic.lean + def equiv.subtype_prod_equiv_sigma_subtype Added src/data/equiv/embedding.lean + def equiv.cod_restrict + def equiv.prod_embedding_disjoint_equiv_sigma_embedding_restricted + def equiv.sum_embedding_equiv_prod_embedding_disjoint + def equiv.sum_embedding_equiv_sigma_embedding_restricted + def equiv.unique_embedding_equiv_result Modified src/data/fintype/basic.lean + theorem function.embedding.is_empty_of_card_lt Added src/data/fintype/card_embedding.lean + theorem fintype.card_embedding + theorem fintype.card_embedding_eq_if + theorem fintype.card_embedding_eq_infinite + theorem fintype.card_embedding_eq_zero + theorem fintype.card_embedding_of_unique Modified src/data/nat/factorial.lean + theorem nat.desc_fac_of_sub Modified src/logic/embedding.lean + def equiv.embedding_congr + theorem equiv.embedding_congr_apply_trans + theorem equiv.embedding_congr_refl + theorem equiv.embedding_congr_symm + theorem equiv.embedding_congr_trans + def equiv.subtype_injective_equiv_embedding + theorem function.embedding.mk_coe Modified src/ring_theory/polynomial/pochhammer.lean 2021-05-21 00:33:53 1924742 feat(data/set/basic): allow dot notation for trans and antisymm (#7681) Allow to write ```lean example {α : Type*} {a b c : set α} (h : a ⊆ b) (h': b ⊆ c) : a ⊆ c := h.trans h' example {α : Type*} {a b : set α} (h : a ⊆ b) (h': b ⊆ a) : a = b := h.antisymm h' example {α : Type*} {a b c : finset α} (h : a ⊆ b) (h': b ⊆ c) : a ⊆ c := h.trans h' example {α : Type*} {a b : finset α} (h : a ⊆ b) (h': b ⊆ a) : a = b := h.antisymm h' ``` ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem has_ssubset.ssubset.asymm + theorem has_ssubset.ssubset.trans + theorem has_subset.subset.antisymm + theorem has_subset.subset.trans 2021-05-21 00:33:52 53e2307 feat(ring_theory): every left-noetherian ring has invariant basis number (#7678) This is a lovely case where we get more for less. By directly proving that every left-noetherian ring has invariant basis number, we don't need to import `linear_algebra.finite_dimensional` in order to do the `field` case. This means that in a future PR we can instead import `ring_theory.invariant_basis_number` in `linear_algebra.finite_dimensional`, and set up the theory of bases in greater generality. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_map.map_eq_zero_iff Modified src/linear_algebra/basic.lean + theorem linear_map.fun_left_injective_of_surjective + theorem linear_map.fun_left_surjective_of_injective Modified src/linear_algebra/invariant_basis_number.lean - theorem invariant_basis_number_field + theorem le_of_fin_injective + theorem le_of_fin_surjective 2021-05-21 00:33:51 c63c6d1 feat(order/closure): make closure operators implementable (#7608) introduce `lower_adjoint` as a way to talk about closure operators whose input and output types do not match ESTIMATED CHANGES Modified src/order/closure.lean +/- theorem closure_operator.closure_bsupr_closure +/- theorem closure_operator.closure_inf_le +/- theorem closure_operator.closure_sup_closure +/- theorem closure_operator.closure_sup_closure_le +/- theorem closure_operator.closure_sup_closure_left +/- theorem closure_operator.closure_sup_closure_right +/- theorem closure_operator.closure_supr_closure +/- theorem closure_operator.closure_top +/- def closure_operator.gi +/- def closure_operator.simps.apply +/- theorem closure_operator.top_mem_closed +/- structure closure_operator +/- theorem closure_operator_gi_self +/- def galois_connection.closure_operator + def galois_connection.lower_adjoint + def lower_adjoint.closed + theorem lower_adjoint.closed_eq_range_close + theorem lower_adjoint.closure_Union_closure + theorem lower_adjoint.closure_bUnion_closure + theorem lower_adjoint.closure_bsupr_closure + theorem lower_adjoint.closure_eq_self_of_mem_closed + theorem lower_adjoint.closure_inf_le + theorem lower_adjoint.closure_is_closed + theorem lower_adjoint.closure_le_closed_iff_le + def lower_adjoint.closure_operator + theorem lower_adjoint.closure_sup_closure + theorem lower_adjoint.closure_sup_closure_le + theorem lower_adjoint.closure_sup_closure_left + theorem lower_adjoint.closure_sup_closure_right + theorem lower_adjoint.closure_supr_closure + theorem lower_adjoint.closure_top + theorem lower_adjoint.closure_union_closure + theorem lower_adjoint.closure_union_closure_left + theorem lower_adjoint.closure_union_closure_right + theorem lower_adjoint.closure_union_closure_subset + theorem lower_adjoint.eq_of_le + theorem lower_adjoint.ext + theorem lower_adjoint.gc + theorem lower_adjoint.idempotent + theorem lower_adjoint.le_closure + theorem lower_adjoint.le_closure_iff + theorem lower_adjoint.le_iff_subset + theorem lower_adjoint.mem_closed_iff + theorem lower_adjoint.mem_closed_iff_closure_le + theorem lower_adjoint.mem_iff + theorem lower_adjoint.monotone + def lower_adjoint.simps.apply + theorem lower_adjoint.subset_closure + def lower_adjoint.to_closed + structure lower_adjoint 2021-05-20 19:10:37 32b433d refactor(*): remove some uses of omega in the library (#7620) In #6129, we stopped using `omega` to avoid porting it to lean4. Some new uses were added since then. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified archive/imo/imo1988_q6.lean Modified src/algebra/homology/augment.lean Modified src/algebra/homology/single.lean Modified src/algebra/ordered_monoid.lean + theorem pos_of_gt Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/polynomial/bernstein.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean 2021-05-20 15:24:52 d47a6e3 feat(topology): clopens form a topology basis for profinite sets (#7671) from LTE ESTIMATED CHANGES Modified src/topology/basic.lean + theorem exists_open_set_nhds' + theorem exists_open_set_nhds Modified src/topology/separation.lean + theorem exists_subset_nhd_of_compact + theorem is_topological_basis_clopen + theorem nhds_basis_clopen Modified src/topology/subset_properties.lean + theorem exists_subset_nhd_of_compact' + theorem exists_subset_nhd_of_compact_space + theorem is_clopen_Union + theorem is_clopen_bUnion 2021-05-20 13:34:18 d3ec77c feat(category_theory/limits): reflecting limits of isomorphic diagram (#7674) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.reflects_colimit_of_iso_diagram + def category_theory.limits.reflects_limit_of_iso_diagram 2021-05-20 08:06:42 c5951f3 feat(ring_theory/noetherian): a surjective endomorphism of a noetherian module is injective (#7676) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + def linear_map.iterate_ker + def linear_map.iterate_range Modified src/ring_theory/noetherian.lean + theorem is_noetherian.bijective_of_surjective_endomorphism + theorem is_noetherian.exists_endomorphism_iterate_ker_inf_range_eq_bot + theorem is_noetherian.injective_of_surjective_endomorphism + theorem monotone_stabilizes_iff_noetherian 2021-05-20 08:06:41 ff51159 feat(algebra/homology/*): add hypotheses to the d_comp_d' axiom (#7673) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean Modified src/algebra/homology/augment.lean Modified src/algebra/homology/differential_object.lean Modified src/algebra/homology/flip.lean Modified src/algebra/homology/homological_complex.lean + theorem homological_complex.d_comp_d 2021-05-20 08:06:40 2d414d0 feat(algebra/homology/homological_complex): add condition to hom.comm' (#7666) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean Modified src/algebra/homology/differential_object.lean Modified src/algebra/homology/flip.lean Modified src/algebra/homology/homological_complex.lean + theorem homological_complex.hom.comm Modified src/algebra/homology/single.lean 2021-05-20 08:06:39 0cb7ecc fix(category_theory/limits/shapes/zero): use fully qualified names in locale (#7619) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/zero.lean 2021-05-20 02:00:39 5a67f2c chore(topology): rename compact to is_compact in theorem names (#7672) Some time ago, we switched from `compact` to `is_compact`, for coherence with `is_open`, `is_closed` and so on. However, several lemma names were not changed at the time. This PR fixes some of them. Plus a few minor stuff (notably, introduce `le_self_add` to replace the dozen of uses of `le_add_right (le_refl _)` in the library -- and weaken some `metric` assumptions to `pseudo_metric`, without touching the proofs). ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/ordered_monoid.lean + theorem le_mul_self + theorem le_self_mul Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/specific_limits.lean +/- theorem ennreal.tsum_geometric Modified src/data/equiv/denumerable.lean Modified src/data/list/basic.lean Modified src/data/pnat/factors.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.one_sub_inv_two Modified src/data/real/nnreal.lean Modified src/dynamics/omega_limit.lean Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/hausdorff_measure.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure_add_measure_compl Modified src/set_theory/cardinal.lean Modified src/topology/algebra/infinite_sum.lean +/- theorem cauchy_seq_of_dist_le_of_summable +/- theorem cauchy_seq_of_edist_le_of_summable +/- theorem cauchy_seq_of_summable_dist +/- theorem dist_le_tsum_dist_of_tendsto +/- theorem dist_le_tsum_dist_of_tendsto₀ +/- theorem dist_le_tsum_of_dist_le_of_tendsto +/- theorem dist_le_tsum_of_dist_le_of_tendsto₀ Modified src/topology/algebra/ordered/basic.lean Modified src/topology/category/CompHaus.lean Modified src/topology/category/Compactum.lean Modified src/topology/category/Top/limits.lean Modified src/topology/compact_open.lean Modified src/topology/compacts.lean Modified src/topology/continuous_function/bounded.lean Modified src/topology/discrete_quotient.lean Modified src/topology/homeomorph.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_nat_tsum Modified src/topology/locally_constant/basic.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean +/- def emetric.Hausdorff_edist +/- theorem emetric.Hausdorff_edist_def - theorem emetric.mem_iff_ind_edist_zero_of_closed + theorem emetric.mem_iff_inf_edist_zero_of_closed Modified src/topology/metric_space/kuratowski.lean Modified src/topology/paracompact.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean - theorem compact_diff - theorem compact_empty - theorem compact_iff_compact_space - theorem compact_iff_compact_univ - theorem compact_iff_finite_subcover - theorem compact_iff_finite_subfamily_closed - theorem compact_iff_ultrafilter_le_nhds - theorem compact_of_finite_subcover - theorem compact_of_finite_subfamily_closed - theorem compact_pi_infinite - theorem compact_range - theorem compact_singleton - theorem compact_univ_pi - theorem embedding.compact_iff_compact_image + theorem embedding.is_compact_iff_is_compact_image - theorem is_closed.compact + theorem is_closed.is_compact - theorem is_closed_proj_of_compact + theorem is_closed_proj_of_is_compact + theorem is_compact.diff + theorem is_compact_empty + theorem is_compact_iff_compact_space + theorem is_compact_iff_finite_subcover + theorem is_compact_iff_finite_subfamily_closed + theorem is_compact_iff_is_compact_univ + theorem is_compact_iff_ultrafilter_le_nhds + theorem is_compact_of_finite_subcover + theorem is_compact_of_finite_subfamily_closed + theorem is_compact_pi_infinite + theorem is_compact_range + theorem is_compact_singleton + theorem is_compact_univ_pi Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean 2021-05-20 02:00:37 1016a14 refactor(linear_algebra/finite_dimensional): generalize finite_dimensional.iff_fg to division rings (#7644) Replace `finite_dimensional.iff_fg` (working over a field) with `is_noetherian.iff_fg` (working over a division ring). Also, use the `module.finite` predicate. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean Modified src/data/complex/is_R_or_C.lean Modified src/field_theory/finite/polynomial.lean Added src/field_theory/finiteness.lean + theorem is_noetherian.coe_finset_basis_index + theorem is_noetherian.dim_lt_omega + theorem is_noetherian.finite_basis_index + theorem is_noetherian.iff_dim_lt_omega + theorem is_noetherian.iff_fg + theorem is_noetherian.range_finset_basis Modified src/field_theory/fixed.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/tower.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean - theorem finite_dimensional.coe_finset_basis_index - theorem finite_dimensional.dim_lt_omega - theorem finite_dimensional.finite_basis_index - theorem finite_dimensional.finite_dimensional_iff_dim_lt_omega - theorem finite_dimensional.iff_fg - theorem finite_dimensional.range_finset_basis Modified src/linear_algebra/finsupp_vector_space.lean Modified src/ring_theory/finiteness.lean +/- theorem module.finite_def Modified src/ring_theory/noetherian.lean +/- theorem finite_of_linear_independent 2021-05-20 02:00:36 641cece feat(algebra/homology): the homotopy category (#7484) ESTIMATED CHANGES Added src/algebra/homology/homotopy_category.lean + def category_theory.functor.map_homotopy_category + def category_theory.nat_trans.map_homotopy_category + theorem category_theory.nat_trans.map_homotopy_category_comp + theorem category_theory.nat_trans.map_homotopy_category_id + def homotopic + theorem homotopy_category.eq_of_homotopy + def homotopy_category.homology_factors + theorem homotopy_category.homology_factors_hom_app + theorem homotopy_category.homology_factors_inv_app + def homotopy_category.homology_functor + theorem homotopy_category.homology_functor_map_factors + def homotopy_category.homotopy_equiv_of_iso + def homotopy_category.homotopy_of_eq + def homotopy_category.homotopy_out_map + def homotopy_category.iso_of_homotopy_equiv + def homotopy_category.quotient + theorem homotopy_category.quotient_map_out + theorem homotopy_category.quotient_map_out_comp_out + theorem homotopy_category.quotient_obj_as + def homotopy_category 2021-05-19 19:28:27 116c162 feat(algebra/opposites): `opposite` of a `group_with_zero` (#7662) Co-authored by @eric-wieser ESTIMATED CHANGES Modified src/algebra/opposites.lean 2021-05-19 15:49:00 ed4161c feat(data/polynomial/coeff): generalize polynomial.coeff_smul to match mv_polynomial.coeff_smul (#7663) Notably this means these lemmas cover `nat` and `int` actions. ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean +/- theorem polynomial.coeff_smul +/- theorem polynomial.support_smul 2021-05-19 15:48:58 599712f feat(data/int/parity, data/nat/parity): add some lemmas (#7624) ESTIMATED CHANGES Modified src/data/int/parity.lean +/- theorem int.even_coe_nat + theorem int.even_pow' +/- theorem int.even_pow + theorem int.nat_abs_even + theorem int.nat_abs_odd + theorem int.odd_coe_nat Modified src/data/nat/parity.lean + theorem nat.even_pow' +/- theorem nat.even_pow 2021-05-19 12:41:13 697c8dd refactor(topology/basic): use dot notation in `is_open.union` and friends (#7647) The fact that the union of two open sets is open is called `is_open_union`. We rename it to `is_open.union` to enable dot notation. Same with `is_open_inter`, `is_closed_union` and `is_closed_inter` and `is_clopen_union` and `is_clopen_inter` and `is_clopen_diff`. ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv_measurable.lean Modified src/analysis/convex/topology.lean Modified src/data/analysis/topology.lean Modified src/geometry/manifold/bump_function.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/local_invariant_properties.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/content.lean Modified src/measure_theory/haar_measure.lean Modified src/topology/G_delta.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered/basic.lean Modified src/topology/bases.lean Modified src/topology/basic.lean + theorem is_closed.inter + theorem is_closed.not + theorem is_closed.union - theorem is_closed_inter - theorem is_closed_union + theorem is_open.and + theorem is_open.inter + theorem is_open.sdiff + theorem is_open.union - theorem is_open_and - theorem is_open_diff - theorem is_open_inter - theorem is_open_neg - theorem is_open_union Modified src/topology/connected.lean Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean Modified src/topology/discrete_quotient.lean Modified src/topology/local_homeomorph.lean Modified src/topology/maps.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/omega_complete_partial_order.lean + theorem Scott.is_open.inter - theorem Scott.is_open_inter Modified src/topology/opens.lean Modified src/topology/separation.lean Modified src/topology/shrinking_lemma.lean Modified src/topology/subset_properties.lean + theorem is_clopen.compl + theorem is_clopen.diff + theorem is_clopen.inter + theorem is_clopen.union - theorem is_clopen_compl - theorem is_clopen_diff - theorem is_clopen_inter - theorem is_clopen_union Modified src/topology/topological_fiber_bundle.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/compact_separated.lean 2021-05-19 09:57:34 c7a5197 feat(data/polynomial/degree/definitions): `polynomial.degree_C_mul_X_le` (#7659) ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_C_mul_X_le 2021-05-19 09:57:33 040ebea fix(analysis/normed_space/normed_group_quotient): put lemmas inside namespace (#7653) ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_quotient.lean - theorem add_subgroup.is_quotient.norm_le - theorem add_subgroup.is_quotient.norm_lift - structure add_subgroup.is_quotient - theorem add_subgroup.is_quotient_quotient - def add_subgroup.lift - theorem add_subgroup.lift_mk - theorem add_subgroup.lift_unique + theorem normed_group_hom.is_quotient.norm_le + theorem normed_group_hom.is_quotient.norm_lift + structure normed_group_hom.is_quotient + theorem normed_group_hom.is_quotient_quotient + def normed_group_hom.lift + theorem normed_group_hom.lift_mk + theorem normed_group_hom.lift_unique 2021-05-19 08:44:51 c1e9f94 docs(field_theory/polynomial_galois_group): improve existing docs (#7586) ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.card_complex_roots_eq_card_real_add_card_not_gal_inv - theorem polynomial.gal.gal_action_hom_bijective_of_prime_degree_aux 2021-05-19 02:36:44 1d4990e chore(scripts): update nolints.txt (#7658) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-05-19 02:36:43 918dcc0 chore(algebra/homology): further dualization (#7657) ESTIMATED CHANGES Modified src/algebra/homology/augment.lean + theorem chain_complex.chain_complex_d_succ_succ_zero - theorem chain_complex.cochain_complex_d_succ_succ_zero + def cochain_complex.augment + theorem cochain_complex.augment_X_succ + theorem cochain_complex.augment_X_zero + theorem cochain_complex.augment_d_succ_succ + theorem cochain_complex.augment_d_zero_one + def cochain_complex.augment_truncate + theorem cochain_complex.augment_truncate_hom_f_succ + theorem cochain_complex.augment_truncate_hom_f_zero + theorem cochain_complex.augment_truncate_inv_f_succ + theorem cochain_complex.augment_truncate_inv_f_zero + theorem cochain_complex.cochain_complex_d_succ_succ_zero + def cochain_complex.from_single₀_as_complex + def cochain_complex.to_truncate + def cochain_complex.truncate + def cochain_complex.truncate_augment + theorem cochain_complex.truncate_augment_hom_f + theorem cochain_complex.truncate_augment_inv_f Modified src/algebra/homology/homological_complex.lean + def cochain_complex.mk' + theorem cochain_complex.mk'_X_0 + theorem cochain_complex.mk'_X_1 + theorem cochain_complex.mk'_d_1_0 + def cochain_complex.mk + theorem cochain_complex.mk_X_0 + theorem cochain_complex.mk_X_1 + theorem cochain_complex.mk_X_2 + def cochain_complex.mk_aux + theorem cochain_complex.mk_d_1_0 + theorem cochain_complex.mk_d_2_0 + def cochain_complex.mk_hom + def cochain_complex.mk_hom_aux + theorem cochain_complex.mk_hom_f_0 + theorem cochain_complex.mk_hom_f_1 + theorem cochain_complex.mk_hom_f_succ_succ + def cochain_complex.mk_struct.flat + structure cochain_complex.mk_struct Modified src/algebra/homology/single.lean + def cochain_complex.from_single₀_equiv + def cochain_complex.homology_functor_0_single₀ + def cochain_complex.homology_functor_succ_single₀ + def cochain_complex.single₀ + def cochain_complex.single₀_iso_single + theorem cochain_complex.single₀_map_f_0 + theorem cochain_complex.single₀_map_f_succ + theorem cochain_complex.single₀_obj_X_0 + theorem cochain_complex.single₀_obj_X_d + theorem cochain_complex.single₀_obj_X_d_from + theorem cochain_complex.single₀_obj_X_d_to + theorem cochain_complex.single₀_obj_X_succ 2021-05-19 02:36:42 aee918b feat(algebraic_topology/simplicial_object): Some API for converting between simplicial and cosimplicial (#7656) This adds some code which is helpful to convert back and forth between simplicial and cosimplicial object. For augmented objects, this doesn't follow directly from the existing API in `category_theory/opposite`. ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_object.lean + def category_theory.cosimplicial_object.augmented.left_op + def category_theory.cosimplicial_object.augmented.left_op_right_op_iso + def category_theory.cosimplicial_to_simplicial_augmented + def category_theory.simplicial_cosimplicial_augmented_equiv + def category_theory.simplicial_cosimplicial_equiv + def category_theory.simplicial_object.augmented.right_op + def category_theory.simplicial_object.augmented.right_op_left_op_iso + def category_theory.simplicial_to_cosimplicial_augmented 2021-05-19 01:16:47 24d2713 feat(algebraic_topology/simplicial_object): Whiskering of simplicial objects. (#7651) This adds whiskering constructions for (truncated, augmented) (co)simplicial objects. ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_object.lean + def category_theory.cosimplicial_object.augmented.whiskering + def category_theory.cosimplicial_object.augmented.whiskering_obj + def category_theory.cosimplicial_object.truncated.whiskering + def category_theory.cosimplicial_object.whiskering + def category_theory.simplicial_object.augmented.whiskering + def category_theory.simplicial_object.augmented.whiskering_obj + def category_theory.simplicial_object.truncated.whiskering + def category_theory.simplicial_object.whiskering 2021-05-18 22:27:07 0bcfff9 feat(linear_algebra/basis) remove several [nontrivial R] (#7642) We remove some unnecessary `nontrivial R`. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean +/- def basis.reindex_range +/- theorem basis.reindex_range_apply +/- theorem basis.reindex_range_repr' +/- theorem basis.reindex_range_repr +/- theorem basis.reindex_range_repr_self +/- theorem basis.reindex_range_self Modified src/linear_algebra/finsupp.lean + def module.subsingleton_equiv Modified src/linear_algebra/matrix/to_lin.lean +/- theorem linear_map.to_matrix_alg_equiv_reindex_range +/- theorem linear_map.to_matrix_reindex_range 2021-05-18 16:02:45 a51d1e0 feat(algebra/homology/homological_complex): Dualizes some constructions (#7643) This PR adds `cochain_complex.of` and `cochain_complex.of_hom`. Still not done: `cochain_complex.mk`. ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean + def cochain_complex.of + theorem cochain_complex.of_X + theorem cochain_complex.of_d + theorem cochain_complex.of_d_ne + def cochain_complex.of_hom 2021-05-18 16:02:44 e275604 chore(data/set/basic): add `set.compl_eq_compl` (#7641) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.compl_eq_compl 2021-05-18 10:47:24 c2114d4 refactor(linear_algebra/dimension): generalize definition of `module.rank` (#7634) The main change is to generalize the definition of `module.rank`. It used to be the infimum over cardinalities of bases, and is now the supremum over cardinalities of linearly independent sets. I have not attempted to systematically generalize theorems about the rank; there is lots more work to be done. For now I've just made a few easy generalizations (either replacing `field` with `division_ring`, or `division_ring` with `ring`+`nontrivial`). ESTIMATED CHANGES Modified src/linear_algebra/basis.lean +/- theorem basis.reindex_range_apply Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/linear_independent.lean +/- theorem linear_independent_singleton +/- theorem linear_independent_unique_iff Modified src/ring_theory/principal_ideal_domain.lean 2021-05-18 10:47:23 e6c787f feat(algebra/opposites): add `has_scalar (opposite α) α` instances (#7630) The action is defined as: ```lean lemma op_smul_eq_mul [monoid α] {a a' : α} : op a • a' = a' * a := rfl ``` We have a few of places in the library where we prove things about `r • b`, and then extract a proof of `a * b = a • b` for free. However, we have no way to do this for `b * a` right now unless multiplication is commutative. By adding this action, we have `b * a = op a • b` so in many cases could reuse the smul lemma. This instance does not create a diamond: ```lean -- the two paths to `mul_action (opposite α) (opposite α)` are defeq example [monoid α] : monoid.to_mul_action (opposite α) = opposite.mul_action α (opposite α) := rfl ``` [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Right.20multiplication.20as.20a.20mul_action/near/239012917) ESTIMATED CHANGES Modified src/algebra/module/opposites.lean Modified src/algebra/opposites.lean + theorem opposite.op_smul_eq_mul 2021-05-18 04:50:02 1a2781a feat(analysis/normed_space): the category of seminormed groups (#7617) From LTE, along with adding `SemiNormedGroup₁`, the subcategory of norm non-increasing maps. ESTIMATED CHANGES Added src/analysis/normed_space/SemiNormedGroup.lean + theorem SemiNormedGroup.coe_id + theorem SemiNormedGroup.coe_of + def SemiNormedGroup.of + def SemiNormedGroup + theorem SemiNormedGroup₁.coe_comp + theorem SemiNormedGroup₁.coe_id + theorem SemiNormedGroup₁.coe_of + theorem SemiNormedGroup₁.hom_ext + theorem SemiNormedGroup₁.iso_isometry + def SemiNormedGroup₁.mk_hom + theorem SemiNormedGroup₁.mk_hom_apply + def SemiNormedGroup₁.mk_iso + def SemiNormedGroup₁.of + theorem SemiNormedGroup₁.zero_apply + def SemiNormedGroup₁ Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.norm_noninc.zero 2021-05-18 04:50:01 3694945 feat(logic/is_empty): Add is_empty typeclass (#7606) * Refactor some equivalences that use `empty` or `pempty`. * Replace `α → false` with `is_empty α` in various places (but not everywhere, we can do that in follow-up PRs). * `infinite` is proven equivalent to `is_empty (fintype α)`. The old `not_fintype` is renamed to `fintype.false` (to allow projection notation), and there are two useful variants `infinite.false` and `not_fintype` added with different arguments explicit. * add instance `unique true`. * Changed the type of `fin_one_equiv` from `fin 1 ≃ punit` to `fin 1 ≃ unit` (it was used only once, where the former formulation required giving an explicit universe level). * renamings: `equiv.subsingleton_iff` -> `equiv.subsingleton_congr` `finprod_of_empty` -> `finprod_of_is_empty` ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean - theorem finprod_of_empty + theorem finprod_of_is_empty Modified src/algebra/homology/homological_complex.lean +/- def chain_complex +/- def cochain_complex Modified src/analysis/calculus/inverse.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/combinatorics/hall.lean Modified src/data/equiv/basic.lean + def equiv.arrow_punit_of_is_empty - def equiv.empty_of_not_nonempty +/- def equiv.empty_sum +/- theorem equiv.empty_sum_apply_inr +/- def equiv.equiv_empty + def equiv.equiv_empty_equiv +/- def equiv.fun_unique + theorem equiv.is_empty_congr - def equiv.pempty_of_not_nonempty - def equiv.pempty_sum - theorem equiv.pempty_sum_apply_inr + theorem equiv.subsingleton_congr - theorem equiv.subsingleton_iff +/- def equiv.sum_empty +/- theorem equiv.sum_empty_apply_inl - def equiv.sum_pempty - theorem equiv.sum_pempty_apply_inl +/- def equiv.{u' Modified src/data/equiv/denumerable.lean Modified src/data/equiv/fin.lean +/- def fin_one_equiv Modified src/data/fin.lean Modified src/data/fintype/basic.lean + def fintype.card_eq_zero_equiv_equiv_empty - def fintype.card_eq_zero_equiv_equiv_pempty +/- theorem fintype.card_eq_zero_iff + theorem is_empty_fintype + theorem not_fintype +/- theorem not_nonempty_fintype Modified src/data/option/basic.lean +/- theorem option.choice_eq_none Modified src/data/polynomial/ring_division.lean Modified src/data/set/basic.lean Modified src/data/zmod/basic.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/group_theory/specific_groups/cyclic.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/matrix/block.lean Added src/logic/is_empty.lean + theorem is_empty.exists_iff + theorem is_empty.forall_iff + def is_empty_elim + theorem is_empty_iff + theorem is_empty_or_nonempty + theorem not_is_empty_iff + theorem not_is_empty_of_nonempty + theorem not_nonempty_iff Modified src/logic/unique.lean - def pi.unique_of_empty Modified src/ring_theory/jacobson.lean Modified src/set_theory/cardinal.lean - theorem cardinal.eq_one_iff_subsingleton_and_nonempty + theorem cardinal.eq_one_iff_unique + theorem cardinal.eq_zero_iff_is_empty Modified src/set_theory/ordinal.lean Modified src/set_theory/pgame.lean 2021-05-18 04:49:59 1b864c0 feat(analysis/normed_group): quotients (#7603) From LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem mem_ball_0_iff Added src/analysis/normed_space/normed_group_quotient.lean + theorem add_subgroup.is_quotient.norm_le + theorem add_subgroup.is_quotient.norm_lift + structure add_subgroup.is_quotient + theorem add_subgroup.is_quotient_quotient + theorem add_subgroup.ker_normed_mk + def add_subgroup.lift + theorem add_subgroup.lift_mk + theorem add_subgroup.lift_unique + theorem add_subgroup.norm_normed_mk + theorem add_subgroup.norm_normed_mk_le + theorem add_subgroup.norm_trivial_quotient_mk + theorem add_subgroup.normed_mk.apply + def add_subgroup.normed_mk + theorem add_subgroup.surjective_normed_mk + theorem bdd_below_image_norm + theorem image_norm_nonempty + theorem norm_mk_lt' + theorem norm_mk_lt + theorem norm_mk_nonneg + theorem norm_mk_zero + theorem norm_zero_eq_zero + theorem quotient_nhd_basis + theorem quotient_norm_add_le + theorem quotient_norm_eq_zero_iff + theorem quotient_norm_mk_eq + theorem quotient_norm_mk_le + theorem quotient_norm_neg + theorem quotient_norm_nonneg + theorem quotient_norm_sub_rev 2021-05-18 02:58:27 f900513 feat(linear_algebra/matrix): slightly generalize `smul_left_mul_matrix` (#7632) Two minor changes that make `smul_left_mul_matrix` slightly easier to apply: * the bases `b` and `c` can now be indexed by different types * replace `(i, k)` on the LHS with `ik.1 ik.2` on the RHS (so you don't have to introduce the constructor with `rw ← prod.mk.eta` somewhere deep in your expression) ESTIMATED CHANGES Modified src/linear_algebra/matrix/to_lin.lean +/- theorem algebra.smul_left_mul_matrix 2021-05-17 23:05:07 b8a6995 feat(data/polynomial): the `d-1`th coefficient of `polynomial.map` (#7639) We prove `polynomial.next_coeff_map` just like `polynomial.leading_coeff_map'`. ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.next_coeff_map 2021-05-17 23:05:06 ccf5188 feat(ring_theory/power_basis): the dimension of a power basis is positive (#7638) We already have `pb.dim_ne_zero : pb.dim ≠ 0` (assuming nontriviality), but it's also useful to also have it in the form `0 < pb.dim`. ESTIMATED CHANGES Modified src/ring_theory/power_basis.lean + theorem power_basis.dim_pos 2021-05-17 18:10:36 4ab0e35 feat(data/multiset): the product of inverses is the inverse of the product (#7637) Entirely analogous to `prod_map_mul` defined above. ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.prod_map_inv 2021-05-17 12:38:51 818dffa feat(linear_algebra): a finite free module has a unique findim (#7631) I needed this easy corollary, so I PR'd it, even though it should be generalizable once we have a better theory of e.g. Gaussian elimination. (I also tried to generalize `mk_eq_mk_of_basis`, but the current proof really requires the existence of multiplicative inverses for the coefficients.) ESTIMATED CHANGES Modified src/linear_algebra/free_module.lean 2021-05-17 12:38:50 36e0127 feat(linear_algebra/basic): add_monoid_hom_lequiv_int (#7629) From LTE. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem add_monoid_hom.map_nat_module_smul Modified src/algebra/module/linear_map.lean + def add_monoid_hom.to_nat_linear_map Modified src/linear_algebra/basic.lean + def add_monoid_hom_lequiv_int + def add_monoid_hom_lequiv_nat 2021-05-17 12:38:49 d201a18 refactor(algebra/homology/homotopy): avoid needing has_zero_object (#7621) A refactor of the definition of `homotopy`, so we don't need `has_zero_object`. ESTIMATED CHANGES Modified src/algebra/homology/homotopy.lean + def d_next + theorem d_next_comp_left + theorem d_next_comp_right + theorem d_next_eq + theorem d_next_eq_d_from_from_next - def from_next' - theorem from_next'_add - theorem from_next'_comp_left - theorem from_next'_comp_right - theorem from_next'_eq - theorem from_next'_neg - theorem from_next'_zero + def from_next - theorem homotopy.comm + theorem homotopy.d_next_succ_chain_complex + theorem homotopy.d_next_zero_chain_complex - theorem homotopy.from_next'_succ_chain_complex - theorem homotopy.from_next'_zero_chain_complex - def homotopy.from_next + theorem homotopy.prev_d_chain_complex - theorem homotopy.to_prev'_chain_complex - def homotopy.to_prev + def prev_d + theorem prev_d_comp_left + theorem prev_d_eq + theorem prev_d_eq_to_prev_d_to - def to_prev' - theorem to_prev'_add - theorem to_prev'_comp_left - theorem to_prev'_eq - theorem to_prev'_neg - theorem to_prev'_zero + def to_prev 2021-05-17 12:38:49 07fb3d7 refactor(data/finsupp/antidiagonal): Make antidiagonal a finset (#7595) Pursuant to discussion [here](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/antidiagonals.20having.20multiplicity) Refactoring so that `finsupp.antidiagonal` and `multiset.antidiagonal` are finsets. ~~Still TO DO: `multiset.antidiagonal`~~ ESTIMATED CHANGES Modified src/data/finsupp/antidiagonal.lean + def finsupp.antidiagonal' +/- def finsupp.antidiagonal + theorem finsupp.antidiagonal_filter_fst_eq + theorem finsupp.antidiagonal_filter_snd_eq - theorem finsupp.antidiagonal_support_filter_fst_eq - theorem finsupp.antidiagonal_support_filter_snd_eq +/- theorem finsupp.antidiagonal_zero + theorem finsupp.mem_antidiagonal - theorem finsupp.mem_antidiagonal_support - theorem finsupp.prod_antidiagonal_support_swap + theorem finsupp.prod_antidiagonal_swap + theorem finsupp.swap_mem_antidiagonal - theorem finsupp.swap_mem_antidiagonal_support Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/variables.lean Modified src/ring_theory/polynomial/homogeneous.lean Modified src/ring_theory/power_series/basic.lean 2021-05-17 08:05:30 8394e59 feat(data/finset/basic): perm_of_nodup_nodup_to_finset_eq (#7588) Also `finset.exists_list_nodup_eq`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.exists_list_nodup_eq + theorem list.perm_of_nodup_nodup_to_finset_eq + theorem multiset.nodup.to_finset_inj 2021-05-17 06:01:44 739d93c feat(algebra/lie/weights): the zero root subalgebra is self-normalizing (#7622) ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.mem_mk_iff Modified src/algebra/lie/weights.lean + theorem lie_algebra.mem_zero_root_subalgebra + theorem lie_algebra.zero_root_subalgebra_is_cartan_of_eq + theorem lie_algebra.zero_root_subalgebra_normalizer_eq_self + theorem lie_module.coe_weight_space' + def lie_module.weight_space' 2021-05-17 03:57:28 2077c90 doc(counterexamples/canonically_ordered_comm_semiring_two_mul): fix url (#7625) ESTIMATED CHANGES Modified counterexamples/canonically_ordered_comm_semiring_two_mul.lean 2021-05-17 02:40:40 d40e40c chore(scripts): update nolints.txt (#7627) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-05-17 01:22:19 72e4cca ci(.github/workflows/build.yml): check counterexamples (#7618) I meant to add this to #7553 but I forgot before it got merged. This also moves the contents of `src/counterexamples` to `counterexamples/`. ESTIMATED CHANGES Modified .github/workflows/build.yml Renamed src/counterexamples/canonically_ordered_comm_semiring_two_mul.lean to counterexamples/canonically_ordered_comm_semiring_two_mul.lean Renamed src/counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean to counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean Modified scripts/lint-style.sh Modified scripts/lint_style_sanity_test.py 2021-05-17 00:02:12 84a27d6 feat(set_theory/game): add mul_one and mul_assoc for pgames (#7610) and several `simp` lemmas. I also simplified some of the existing proofs using `rw` and `simp` and made them easier to read. This is the final PR for multiplication of pgames (hopefully)! Next step: prove `numeric_mul` and define multiplication for `surreal`. ESTIMATED CHANGES Modified src/set_theory/game.lean - theorem game.quot_add - theorem game.quot_neg - theorem game.quot_sub +/- theorem pgame.left_distrib_equiv - theorem pgame.left_distrib_equiv_aux' - theorem pgame.left_distrib_equiv_aux + theorem pgame.mul_assoc_equiv - def pgame.mul_comm_relabelling + theorem pgame.mul_one_equiv + theorem pgame.one_mul_equiv + theorem pgame.quot_add + theorem pgame.quot_eq_of_mk_quot_eq + theorem pgame.quot_left_distrib + theorem pgame.quot_left_distrib_sub + theorem pgame.quot_mul_assoc + theorem pgame.quot_mul_comm + theorem pgame.quot_mul_neg + theorem pgame.quot_mul_one + theorem pgame.quot_mul_zero + theorem pgame.quot_neg + theorem pgame.quot_neg_mul + theorem pgame.quot_one_mul + theorem pgame.quot_right_distrib + theorem pgame.quot_right_distrib_sub + theorem pgame.quot_sub + theorem pgame.quot_zero_mul 2021-05-16 18:58:53 aedd12d refactor(measure_theory/haar_measure): move general material to content.lean, make content a structure (#7615) Several facts that are proved only for the Haar measure (including for instance regularity) are true for any measure constructed from a content. We move these facts to the `content.lean` file (and make `content` a structure for easier management). Also, move the notion of regular measure to its own file, and make it a class. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean - theorem measure_theory.measure.regular.exists_compact_not_null - theorem measure_theory.measure.regular.inner_regular_eq - theorem measure_theory.measure.regular.outer_regular_eq - structure measure_theory.measure.regular Modified src/measure_theory/content.lean + theorem measure_theory.content.apply_eq_coe_to_fun + theorem measure_theory.content.borel_le_caratheodory + theorem measure_theory.content.empty + def measure_theory.content.inner_content + theorem measure_theory.content.inner_content_Sup_nat + theorem measure_theory.content.inner_content_Union_nat + theorem measure_theory.content.inner_content_comap + theorem measure_theory.content.inner_content_empty + theorem measure_theory.content.inner_content_exists_compact + theorem measure_theory.content.inner_content_le + theorem measure_theory.content.inner_content_mono' + theorem measure_theory.content.inner_content_mono + theorem measure_theory.content.inner_content_of_is_compact + theorem measure_theory.content.inner_content_pos_of_is_mul_left_invariant + theorem measure_theory.content.is_mul_left_invariant_inner_content + theorem measure_theory.content.is_mul_left_invariant_outer_measure + theorem measure_theory.content.le_inner_content + theorem measure_theory.content.le_outer_measure_compacts + theorem measure_theory.content.lt_top + def measure_theory.content.measure + theorem measure_theory.content.measure_apply + theorem measure_theory.content.mono + theorem measure_theory.content.outer_measure_caratheodory + theorem measure_theory.content.outer_measure_eq_infi + theorem measure_theory.content.outer_measure_exists_compact + theorem measure_theory.content.outer_measure_exists_open + theorem measure_theory.content.outer_measure_interior_compacts + theorem measure_theory.content.outer_measure_le + theorem measure_theory.content.outer_measure_lt_top_of_is_compact + theorem measure_theory.content.outer_measure_of_is_open + theorem measure_theory.content.outer_measure_opens + theorem measure_theory.content.outer_measure_pos_of_is_mul_left_invariant + theorem measure_theory.content.outer_measure_preimage + theorem measure_theory.content.sup_disjoint + theorem measure_theory.content.sup_le + structure measure_theory.content - def measure_theory.inner_content - theorem measure_theory.inner_content_Sup_nat - theorem measure_theory.inner_content_Union_nat - theorem measure_theory.inner_content_comap - theorem measure_theory.inner_content_empty - theorem measure_theory.inner_content_exists_compact - theorem measure_theory.inner_content_le - theorem measure_theory.inner_content_mono' - theorem measure_theory.inner_content_mono - theorem measure_theory.inner_content_of_is_compact - theorem measure_theory.inner_content_pos_of_is_mul_left_invariant - theorem measure_theory.is_mul_left_invariant_inner_content - theorem measure_theory.le_inner_content - theorem measure_theory.outer_measure.is_mul_left_invariant_of_content - theorem measure_theory.outer_measure.le_of_content_compacts - def measure_theory.outer_measure.of_content - theorem measure_theory.outer_measure.of_content_caratheodory - theorem measure_theory.outer_measure.of_content_eq_infi - theorem measure_theory.outer_measure.of_content_exists_compact - theorem measure_theory.outer_measure.of_content_exists_open - theorem measure_theory.outer_measure.of_content_interior_compacts - theorem measure_theory.outer_measure.of_content_le - theorem measure_theory.outer_measure.of_content_opens - theorem measure_theory.outer_measure.of_content_pos_of_is_mul_left_invariant - theorem measure_theory.outer_measure.of_content_preimage Modified src/measure_theory/group.lean +/- theorem measure_theory.is_mul_left_invariant.measure_ne_zero_iff_nonempty +/- theorem measure_theory.is_mul_left_invariant.null_iff +/- theorem measure_theory.is_mul_left_invariant.null_iff_empty +/- theorem measure_theory.lintegral_eq_zero_of_is_mul_left_invariant - theorem measure_theory.measure.regular.inv Modified src/measure_theory/haar_measure.lean - theorem measure_theory.measure.echaar_le_haar_outer_measure - def measure_theory.measure.haar.echaar - theorem measure_theory.measure.haar.echaar_mono - theorem measure_theory.measure.haar.echaar_self - theorem measure_theory.measure.haar.echaar_sup_le + def measure_theory.measure.haar.haar_content + theorem measure_theory.measure.haar.haar_content_apply + theorem measure_theory.measure.haar.haar_content_outer_measure_self_pos + theorem measure_theory.measure.haar.haar_content_self - theorem measure_theory.measure.haar.is_left_invariant_echaar + theorem measure_theory.measure.haar.is_left_invariant_haar_content - theorem measure_theory.measure.haar_caratheodory_measurable - def measure_theory.measure.haar_outer_measure - theorem measure_theory.measure.haar_outer_measure_caratheodory - theorem measure_theory.measure.haar_outer_measure_eq_infi - theorem measure_theory.measure.haar_outer_measure_exists_compact - theorem measure_theory.measure.haar_outer_measure_exists_open - theorem measure_theory.measure.haar_outer_measure_le_echaar - theorem measure_theory.measure.haar_outer_measure_lt_top_of_is_compact - theorem measure_theory.measure.haar_outer_measure_of_is_open - theorem measure_theory.measure.haar_outer_measure_pos_of_is_open - theorem measure_theory.measure.haar_outer_measure_self_pos - theorem measure_theory.measure.one_le_haar_outer_measure_self - theorem measure_theory.measure.regular_haar_measure Modified src/measure_theory/prod_group.lean Added src/measure_theory/regular.lean + theorem measure_theory.measure.regular.exists_compact_not_null + theorem measure_theory.measure.regular.inner_regular_eq + theorem measure_theory.measure.regular.outer_regular_eq 2021-05-16 18:58:52 1b098c0 feat(algebra/ordered_group, algebra/ordered_ring): add some lemmas about abs (#7612) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem abs_choice + theorem abs_eq_abs + theorem eq_or_eq_neg_of_abs_eq Modified src/algebra/ordered_ring.lean + theorem abs_dvd + theorem abs_dvd_abs + theorem abs_dvd_self + theorem dvd_abs + theorem even_abs + theorem self_dvd_abs 2021-05-16 18:58:51 b98d840 feat(category_theory/category): initialize simps (#7605) Initialize `@[simps]` so that it works better for `category`. It just makes the names of the generated lemmas shorter. Add `@[simps]` to product categories. ESTIMATED CHANGES Modified src/category_theory/category/default.lean Modified src/category_theory/products/basic.lean - theorem category_theory.prod_comp_fst - theorem category_theory.prod_comp_snd - theorem category_theory.prod_id_fst - theorem category_theory.prod_id_snd Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2021-05-16 18:58:50 9084a3c chore(order/fixed_point): add docstring for Knaster-Tarski theorem (#7589) clarify that the def provided constitutes the Knaster-Tarski theorem ESTIMATED CHANGES Modified src/order/countable_dense_linear_order.lean Modified src/order/fixed_points.lean +/- theorem fixed_points.Sup_le_f_of_fixed_points +/- theorem fixed_points.f_le_Inf_of_fixed_points +/- theorem fixed_points.f_le_inf_of_fixed_points + theorem fixed_points.le_next +/- theorem fixed_points.next_eq - theorem fixed_points.next_le +/- theorem fixed_points.prev_eq +/- theorem fixed_points.prev_le +/- theorem fixed_points.sup_le_f_of_fixed_points +/- theorem gfp_comp - theorem gfp_eq + theorem gfp_fixed_point +/- theorem gfp_gfp - theorem gfp_induct + theorem gfp_induction +/- theorem gfp_le +/- theorem le_gfp +/- theorem le_lfp +/- theorem lfp_comp - theorem lfp_eq + theorem lfp_fixed_point - theorem lfp_induct + theorem lfp_induction +/- theorem lfp_le +/- theorem lfp_lfp +/- theorem monotone_gfp +/- theorem monotone_lfp Modified src/set_theory/schroeder_bernstein.lean 2021-05-16 13:18:13 c8a2fd7 feat(analysis/normed_space): normed_group punit (#7616) Minor content from LTE. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem punit.norm_eq_zero Modified src/topology/metric_space/basic.lean Modified src/topology/uniform_space/basic.lean 2021-05-16 13:18:12 2bd4bb6 fix(tactic/lift): elaborate the type better (#7598) * When writing `lift x to t` it will now elaborating `t` using that `t` must be a sort (inserting a coercion if needed). * Generalize `Type*` to `Sort*` in the tactic ESTIMATED CHANGES Modified src/tactic/lift.lean Added test/lift.lean 2021-05-16 13:18:11 632783d feat(algebra/subalgebra): two equal subalgebras are equivalent (#7590) This extends `linear_equiv.of_eq` to an `alg_equiv` between two `subalgebra`s. [Zulip discussion starts around here](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/towers.20of.20algebras/near/238452076) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + def subalgebra.equiv_of_eq + theorem subalgebra.equiv_of_eq_rfl + theorem subalgebra.equiv_of_eq_symm + theorem subalgebra.equiv_of_eq_trans 2021-05-16 13:18:10 4d909f4 feat(analysis/calculus/local_extr): A polynomial's roots are bounded by its derivative (#7571) An application of Rolle's theorem to polynomials. ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem ring_hom.char_zero + theorem ring_hom.char_zero_iff Modified src/analysis/calculus/local_extr.lean + theorem polynomial.card_root_set_le_derivative Modified src/data/finset/sort.lean + theorem finset.card_le_of_interleaved 2021-05-16 13:18:09 ee6a9fa fix(tactic/simps): fix bug (#7433) * Custom projections that were compositions of multiple projections failed when the projection has additional arguments. * Also adds an error when two projections are given the same simps-name ESTIMATED CHANGES Modified src/tactic/simps.lean Modified test/simps.lean + def another_term + def something.simps.apply + def something2.simps.mul + def thing 2021-05-16 13:18:08 f1bcb90 fix(tactic/simps): remove occurrence of mk_mapp (#7432) Fixes the slowdown reported on Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/simps.20is.20very.20slow On my laptop, the minimized example in that topic now takes 33ms instead of ~5000ms ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/simps.lean Modified test/simps.lean + def foo_sum + structure my_functor 2021-05-15 21:20:58 65e7646 feat(algebraic_topology): cosimplicial objects (#7614) Dualize the existing API for `simplicial_object` to provide `cosimplicial_object`, and move the contents of LTE's `for_mathlib/simplicial/augmented.lean` to mathlib. ESTIMATED CHANGES Modified src/algebraic_topology/simplicial_object.lean + def category_theory.cosimplicial_object.augmented.drop + def category_theory.cosimplicial_object.augmented.point + def category_theory.cosimplicial_object.augmented + def category_theory.cosimplicial_object.const + def category_theory.cosimplicial_object.eq_to_iso + theorem category_theory.cosimplicial_object.eq_to_iso_refl + def category_theory.cosimplicial_object.sk + def category_theory.cosimplicial_object.truncated + def category_theory.cosimplicial_object.δ + theorem category_theory.cosimplicial_object.δ_comp_δ + theorem category_theory.cosimplicial_object.δ_comp_δ_self + theorem category_theory.cosimplicial_object.δ_comp_σ_of_gt + theorem category_theory.cosimplicial_object.δ_comp_σ_of_le + theorem category_theory.cosimplicial_object.δ_comp_σ_self + theorem category_theory.cosimplicial_object.δ_comp_σ_succ + def category_theory.cosimplicial_object.σ + theorem category_theory.cosimplicial_object.σ_comp_σ + def category_theory.cosimplicial_object + def category_theory.simplicial_object.augmented.drop + def category_theory.simplicial_object.augmented.point 2021-05-15 21:20:57 14802d6 chore(ring_theory/int/basic): remove duplicate lemma nat.prime_iff_prime (#7611) ESTIMATED CHANGES Modified src/data/nat/multiplicity.lean Modified src/ring_theory/int/basic.lean - theorem nat.prime_iff_prime Modified src/ring_theory/roots_of_unity.lean 2021-05-15 21:20:56 07dcff7 feat(logic/relation): reflexive.ne_iff_imp (#7579) As suggested in #7567 ESTIMATED CHANGES Modified src/logic/relation.lean + theorem is_refl.reflexive + theorem reflexive.ne_imp_iff + theorem reflexive.rel_of_ne_imp + theorem reflexive_ne_imp_iff 2021-05-15 21:20:55 82ac80f feat(data/set/basic): pairwise_on.imp_on (#7578) Provide more helper lemmas for transferring `pairwise_on` between different relations. Provide a rephrase of `pairwise_on.mono'` as `pairwise_on.imp`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.pairwise_on.imp + theorem set.pairwise_on.imp_on + theorem set.pairwise_on_of_forall + theorem set.pairwise_on_top 2021-05-15 21:20:54 4c2567f chore(group_theory/group_action/group): add `smul_inv` (#7568) This renames the existing `smul_inv` to `smul_inv'`, which is consistent with the name of the other lemma about `mul_semiring_action`, `smul_mul'`. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean + theorem smul_inv' - theorem smul_inv Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean Modified src/group_theory/group_action/group.lean + theorem smul_inv 2021-05-15 21:20:53 467d2b2 feat(data/logic/basic): `em.swap` and `eq_or_ne` (#7561) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem dec_em' + theorem decidable.eq_or_ne + theorem decidable.ne_or_eq + theorem em' +/- theorem em + theorem eq_or_ne + theorem ne_or_eq +/- theorem or_not Modified src/tactic/lint/type_classes.lean 2021-05-15 21:20:52 d338ebd feat(counterexamples/*): add counterexamples folder (#7558) Several times, there has been a discussion on Zulip about the appropriateness of having counterexamples in mathlib. This PR introduces a `counterexamples` folder, together with the first couple of counterexamples. For the most recent discussion, see https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.237553 ESTIMATED CHANGES Added src/counterexamples/canonically_ordered_comm_semiring_two_mul.lean + theorem Nxzmod_2.add_le_add_left + theorem Nxzmod_2.add_left_cancel + theorem Nxzmod_2.le_of_add_le_add_left + theorem Nxzmod_2.lt_def + theorem Nxzmod_2.mul_lt_mul_of_pos_left + theorem Nxzmod_2.mul_lt_mul_of_pos_right + theorem Nxzmod_2.zero_le_one + theorem add_self_zmod_2 + def ex_L.L + theorem ex_L.add_L + theorem ex_L.bot_le + theorem ex_L.eq_zero_or_eq_zero_of_mul_eq_zero + theorem ex_L.le_iff_exists_add + theorem ex_L.lt_of_add_lt_add_left + theorem ex_L.mul_L + def from_Bhavik.K + theorem mem_zmod_2 Added src/counterexamples/linear_order_with_pos_mul_pos_eq_zero.lean + def foo.aux1 + theorem foo.aux1_inj + def foo.mul + theorem foo.not_mul_pos + inductive foo 2021-05-15 21:20:51 56442cf feat(data/nnreal): div and pow lemmas (#7471) from the liquid tensor experiment ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.div_le_div_left + theorem nnreal.div_le_div_left_of_le + theorem nnreal.pow_mono_decr_exp 2021-05-15 21:20:50 57b0e68 chore(*/pi): rename *_hom.apply to pi.eval_*_hom (#5851) These definitions state the fact that fixing an `i` and applying a function `(Π i, f i)` maintains the algebraic structure of the function. We already have a name for this operation, `function.eval`. These isn't a statement about `monoid_hom` or `ring_hom` at all - that just happens to be their type. For this reason, this commit moves all the definitions of this type into the `pi` namespace: * `add_monoid_hom.apply` → `pi.eval_add_monoid_hom` * `monoid_hom.apply` → `pi.eval_monoid_hom` * `ring_hom.apply` → `pi.eval_ring_hom` * `pi.alg_hom.apply` [sic] → `pi.eval_alg_hom` This scales better, because we might want to say that applying a `linear_map` over a non-commutative ring is an `add_monoid_hom`. Using the naming convention established by this commit, that's easy; it's `linear_map.eval_add_monoid_hom` to mirror `pi.apply_add_monoid_hom`. This partially addresses [this zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Naming.3A.20eval.20vs.20apply/near/223813950) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - def pi.alg_hom.apply + def pi.eval_alg_hom Modified src/algebra/big_operators/pi.lean Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/char_p/pi.lean Modified src/algebra/group/pi.lean - def monoid_hom.apply - theorem monoid_hom.apply_apply + def pi.eval_monoid_hom Modified src/algebra/ring/pi.lean + def pi.eval_ring_hom - def ring_hom.apply - theorem ring_hom.apply_apply Modified src/data/dfinsupp.lean Modified src/data/polynomial/algebra_map.lean Modified src/linear_algebra/quadratic_form.lean Modified src/ring_theory/witt_vector/basic.lean +/- def witt_vector.ghost_component 2021-05-15 16:28:06 172195b feat(algebra/{ordered_monoid, ordered_monoid_lemmas}): split the `ordered_[...]` typeclasses (#7371) This PR tries to split the ordering assumptions from the algebraic assumptions on the operations in the `ordered_[...]` hierarchy. The strategy is to introduce two more flexible typeclasses, `covariant_class` and `contravariant_class`. * `covariant_class` models the implication `a ≤ b → c * a ≤ c * b` (multiplication is monotone), * `contravariant_class` models the implication `a * b < a * c → b < c`. Since `co(ntra)variant_class` takes as input the operation (typically `(+)` or `(*)`) and the order relation (typically `(≤)` or `(<)`), these are the only two typeclasses that I have used. The general approach is to formulate the lemma that you are interested in and prove it, with the `ordered_[...]` typeclass of your liking. After that, you convert the single typeclass, say `[ordered_cancel_monoid M]`, to three typeclasses, e.g. `[partial_order M] [left_cancel_semigroup M] [covariant_class M M (function.swap (*)) (≤)]` and have a go at seeing if the proof still works! Note that it is possible (or even expected) to combine several `co(ntra)variant_class` assumptions together. Indeed, the usual `ordered` typeclasses arise from assuming the pair `[covariant_class M M (*) (≤)] [contravariant_class M M (*) (<)]` on top of order/algebraic assumptions. A formal remark is that *normally* `covariant_class` uses the `(≤)`-relation, while `contravariant_class` uses the `(<)`-relation. This need not be the case in general, but seems to be the most common usage. In the opposite direction, the implication `[semigroup α] [partial_order α] [contravariant_class α α (*) (≤)] => left_cancel_semigroup α` holds (note the `co*ntra*` assumption and the `(≤)`-relation). Zulip: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/ordered.20stuff ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean +/- def function.injective.ordered_comm_monoid - theorem le_mul_iff_one_le_left' - theorem le_mul_iff_one_le_right' - theorem le_mul_of_le_mul_left - theorem le_mul_of_le_mul_right - theorem le_mul_of_le_of_one_le - theorem le_mul_of_one_le_left' - theorem le_mul_of_one_le_of_le - theorem le_mul_of_one_le_right' - theorem le_of_le_mul_of_le_one_left - theorem le_of_le_mul_of_le_one_right - theorem le_of_mul_le_mul_left' - theorem le_of_mul_le_mul_right' - theorem le_of_mul_le_of_one_le_left - theorem le_of_mul_le_of_one_le_right - theorem lt_mul_iff_one_lt_left' - theorem lt_mul_iff_one_lt_right' - theorem lt_mul_of_le_of_one_lt - theorem lt_mul_of_lt_mul_left - theorem lt_mul_of_lt_mul_right - theorem lt_mul_of_lt_of_one_le' - theorem lt_mul_of_lt_of_one_le - theorem lt_mul_of_lt_of_one_lt' - theorem lt_mul_of_lt_of_one_lt - theorem lt_mul_of_one_le_of_lt' - theorem lt_mul_of_one_le_of_lt - theorem lt_mul_of_one_lt_left' - theorem lt_mul_of_one_lt_of_le - theorem lt_mul_of_one_lt_of_lt' - theorem lt_mul_of_one_lt_of_lt - theorem lt_mul_of_one_lt_right' - theorem lt_of_lt_mul_of_le_one_left - theorem lt_of_lt_mul_of_le_one_right - theorem lt_of_mul_lt_mul_left' - theorem lt_of_mul_lt_mul_right' - theorem lt_of_mul_lt_of_one_le_left - theorem lt_of_mul_lt_of_one_le_right - theorem monotone.const_mul' - theorem monotone.mul' - theorem monotone.mul_const' - theorem mul_eq_one_iff' - theorem mul_eq_one_iff_eq_one_of_one_le - theorem mul_le_iff_le_one_left' - theorem mul_le_iff_le_one_right' - theorem mul_le_mul' - theorem mul_le_mul_iff_left - theorem mul_le_mul_iff_right - theorem mul_le_mul_left' - theorem mul_le_mul_right' - theorem mul_le_mul_three - theorem mul_le_of_le_of_le_one' - theorem mul_le_of_le_of_le_one - theorem mul_le_of_le_one_left' - theorem mul_le_of_le_one_of_le' - theorem mul_le_of_le_one_of_le - theorem mul_le_of_le_one_right' - theorem mul_le_of_mul_le_left - theorem mul_le_of_mul_le_right - theorem mul_le_one' - theorem mul_lt_iff_lt_one_left' - theorem mul_lt_iff_lt_one_right' - theorem mul_lt_mul''' - theorem mul_lt_mul_iff_left - theorem mul_lt_mul_iff_right - theorem mul_lt_mul_left' - theorem mul_lt_mul_of_le_of_lt - theorem mul_lt_mul_of_lt_of_le - theorem mul_lt_mul_right' - theorem mul_lt_of_le_of_lt_one - theorem mul_lt_of_le_one_of_lt' - theorem mul_lt_of_le_one_of_lt - theorem mul_lt_of_lt_of_le_one' - theorem mul_lt_of_lt_of_le_one - theorem mul_lt_of_lt_of_lt_one' - theorem mul_lt_of_lt_of_lt_one - theorem mul_lt_of_lt_one_of_le - theorem mul_lt_of_lt_one_of_lt' - theorem mul_lt_of_lt_one_of_lt - theorem mul_lt_of_mul_lt_left - theorem mul_lt_of_mul_lt_right - theorem mul_lt_one' - theorem mul_lt_one - theorem mul_lt_one_of_le_one_of_lt_one' - theorem mul_lt_one_of_le_one_of_lt_one - theorem mul_lt_one_of_lt_one_of_le_one' - theorem mul_lt_one_of_lt_one_of_le_one - theorem one_le_mul - theorem one_lt_mul' - theorem one_lt_mul_of_le_of_lt' - theorem one_lt_mul_of_lt_of_le' - theorem pos_of_gt +/- theorem with_zero.lt_of_mul_lt_mul_left +/- theorem with_zero.mul_le_mul_left +/- theorem with_zero.zero_lt_coe Added src/algebra/ordered_monoid_lemmas.lean + def contravariant + def covariant + theorem le_mul_iff_one_le_left' + theorem le_mul_iff_one_le_right' + theorem le_mul_of_le_mul_left + theorem le_mul_of_le_mul_right + theorem le_mul_of_le_of_one_le + theorem le_mul_of_one_le_left' + theorem le_mul_of_one_le_of_le + theorem le_mul_of_one_le_right' + theorem le_of_le_mul_of_le_one_left + theorem le_of_le_mul_of_le_one_right + theorem le_of_mul_le_mul_left' + theorem le_of_mul_le_mul_right' + theorem le_of_mul_le_of_one_le_left + theorem le_of_mul_le_of_one_le_right + theorem lt_mul_iff_one_lt_left' + theorem lt_mul_iff_one_lt_right' + theorem lt_mul_of_le_of_one_lt + theorem lt_mul_of_lt_mul_left + theorem lt_mul_of_lt_mul_right + theorem lt_mul_of_lt_of_one_le' + theorem lt_mul_of_lt_of_one_le + theorem lt_mul_of_lt_of_one_lt' + theorem lt_mul_of_lt_of_one_lt + theorem lt_mul_of_one_le_of_lt' + theorem lt_mul_of_one_le_of_lt + theorem lt_mul_of_one_lt_left' + theorem lt_mul_of_one_lt_of_le + theorem lt_mul_of_one_lt_of_lt' + theorem lt_mul_of_one_lt_of_lt + theorem lt_mul_of_one_lt_right' + theorem lt_of_lt_mul_of_le_one_left + theorem lt_of_lt_mul_of_le_one_right + theorem lt_of_mul_lt_mul_left' + theorem lt_of_mul_lt_mul_right' + theorem lt_of_mul_lt_of_one_le_left + theorem lt_of_mul_lt_of_one_le_right + theorem monotone.const_mul' + theorem monotone.mul' + theorem monotone.mul_const' + theorem mul_eq_one_iff' + theorem mul_eq_one_iff_eq_one_of_one_le + theorem mul_le_iff_le_one_left' + theorem mul_le_iff_le_one_right' + theorem mul_le_mul' + theorem mul_le_mul_iff_left + theorem mul_le_mul_iff_right + theorem mul_le_mul_left' + theorem mul_le_mul_right' + theorem mul_le_mul_three + theorem mul_le_of_le_of_le_one' + theorem mul_le_of_le_of_le_one + theorem mul_le_of_le_one_left' + theorem mul_le_of_le_one_of_le' + theorem mul_le_of_le_one_of_le + theorem mul_le_of_le_one_right' + theorem mul_le_of_mul_le_left + theorem mul_le_of_mul_le_right + theorem mul_le_one' + theorem mul_lt_iff_lt_one_left' + theorem mul_lt_iff_lt_one_right' + theorem mul_lt_mul''' + theorem mul_lt_mul_iff_left + theorem mul_lt_mul_iff_right + theorem mul_lt_mul_left' + theorem mul_lt_mul_of_le_of_lt + theorem mul_lt_mul_of_lt_of_le + theorem mul_lt_mul_right' + theorem mul_lt_of_le_of_lt_one + theorem mul_lt_of_le_one_of_lt' + theorem mul_lt_of_le_one_of_lt + theorem mul_lt_of_lt_of_le_one' + theorem mul_lt_of_lt_of_le_one + theorem mul_lt_of_lt_of_lt_one' + theorem mul_lt_of_lt_of_lt_one + theorem mul_lt_of_lt_one_of_le + theorem mul_lt_of_lt_one_of_lt' + theorem mul_lt_of_lt_one_of_lt + theorem mul_lt_of_mul_lt_left + theorem mul_lt_of_mul_lt_right + theorem mul_lt_one' + theorem mul_lt_one + theorem mul_lt_one_of_le_one_of_lt_one' + theorem mul_lt_one_of_le_one_of_lt_one + theorem mul_lt_one_of_lt_one_of_le_one' + theorem mul_lt_one_of_lt_one_of_le_one + theorem one_le_mul + theorem one_lt_mul' + theorem one_lt_mul_of_le_of_lt' + theorem one_lt_mul_of_lt_of_le' Modified src/algebra/ordered_ring.lean Modified src/data/int/basic.lean Modified src/data/multiset/basic.lean Modified src/data/real/nnreal.lean Modified src/measure_theory/measure_space.lean Modified src/number_theory/sum_four_squares.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2021-05-15 14:21:15 738c19f refactor(linear_algebra/matrix): split matrix.lean into multiple files (#7593) The file `linear_algebra/matrix.lean` used to be very big and contain a lot of parts that did not depend on each other, so I split each of those parts into its own little file. Most of the new files ended up in `linear_algebra/matrix/`, except for `linear_algebra/trace.lean` and `linear_algebra/determinant.lean` which did not contain anything matrix-specific. Apart from the local improvement in `matrix.lean` itself, the import graph is now also a bit cleaner. Renames: * `linear_algebra/determinant.lean` -> `linear_algebra/matrix/determinant.lean` * `linear_algebra/nonsingular_inverse.lean` -> `linear_algebra/matrix/nonsingular_inverse.lean` Split off from `linear_algebra/matrix.lean`: * `linear_algebra/matrix/basis.lean` * `linear_algebra/matrix/block.lean` * `linear_algebra/matrix/diagonal.lean` * `linear_algebra/matrix/dot_product.lean` * `linear_algebra/matrix/dual.lean` * `linear_algebra/matrix/finite_dimensional.lean` * `linear_algebra/matrix/reindex.lean` * `linear_algebra/matrix/to_lin.lean` * `linear_algebra/matrix/to_linear_equiv.lean` * `linear_algebra/matrix/trace.lean` * `linear_algebra/determinant.lean` (Unfortunately, I could not persuade `git` to remember that I moved the original `determinant.lean` to `matrix/determinant.lean`) * `linear_algebra/trace.lean` ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/algebra/lie/matrix.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/field_theory/fixed.lean Modified src/field_theory/tower.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/char_poly/basic.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/determinant.lean + def basis.det + theorem basis.det_apply + theorem basis.det_self + theorem is_basis.iff_det + theorem linear_equiv.is_unit_det + def linear_equiv.of_is_unit_det - theorem matrix.alg_hom.map_det - def matrix.det - theorem matrix.det_apply' - theorem matrix.det_apply - theorem matrix.det_block_diagonal - theorem matrix.det_diagonal - theorem matrix.det_eq_elem_of_card_eq_one - theorem matrix.det_eq_of_eq_det_one_mul - theorem matrix.det_eq_of_eq_mul_det_one - theorem matrix.det_eq_of_forall_col_eq_smul_add_pred - theorem matrix.det_eq_of_forall_row_eq_smul_add_const - theorem matrix.det_eq_of_forall_row_eq_smul_add_const_aux - theorem matrix.det_eq_of_forall_row_eq_smul_add_pred - theorem matrix.det_eq_of_forall_row_eq_smul_add_pred_aux - theorem matrix.det_eq_one_of_card_eq_zero - theorem matrix.det_eq_zero_of_column_eq_zero - theorem matrix.det_eq_zero_of_row_eq_zero - theorem matrix.det_fin_zero - theorem matrix.det_minor_equiv_self - theorem matrix.det_mul - theorem matrix.det_mul_aux - theorem matrix.det_mul_column - theorem matrix.det_mul_row - theorem matrix.det_one - theorem matrix.det_permutation - theorem matrix.det_permute - theorem matrix.det_reindex_self - def matrix.det_row_multilinear - theorem matrix.det_smul - theorem matrix.det_succ_column - theorem matrix.det_succ_column_zero - theorem matrix.det_succ_row - theorem matrix.det_succ_row_zero - theorem matrix.det_transpose - theorem matrix.det_unique - theorem matrix.det_update_column_add - theorem matrix.det_update_column_add_self - theorem matrix.det_update_column_add_smul_self - theorem matrix.det_update_column_smul - theorem matrix.det_update_row_add - theorem matrix.det_update_row_add_self - theorem matrix.det_update_row_add_smul_self - theorem matrix.det_update_row_smul - theorem matrix.det_zero - theorem matrix.det_zero_of_column_eq - theorem matrix.det_zero_of_row_eq - theorem matrix.ring_hom.map_det - theorem matrix.upper_two_block_triangular_det Modified src/linear_algebra/eigenspace.lean Deleted src/linear_algebra/matrix.lean - def alg_equiv_matrix' - def alg_equiv_matrix - theorem algebra.left_mul_matrix_apply - theorem algebra.left_mul_matrix_eq_repr_mul - theorem algebra.left_mul_matrix_injective - theorem algebra.left_mul_matrix_mul_vec_repr - theorem algebra.smul_left_mul_matrix - theorem algebra.smul_left_mul_matrix_algebra_map - theorem algebra.smul_left_mul_matrix_algebra_map_eq - theorem algebra.smul_left_mul_matrix_algebra_map_ne - theorem algebra.to_matrix_lmul' - theorem algebra.to_matrix_lmul_eq - theorem algebra.to_matrix_lsmul - def basis.det - theorem basis.det_apply - theorem basis.det_self - theorem basis.sum_to_matrix_smul_self - theorem basis.to_lin_to_matrix - def basis.to_matrix - theorem basis.to_matrix_apply - theorem basis.to_matrix_eq_to_matrix_constr - def basis.to_matrix_equiv - theorem basis.to_matrix_mul_to_matrix - theorem basis.to_matrix_self - theorem basis.to_matrix_transpose_apply - theorem basis.to_matrix_update - theorem basis_to_matrix_mul_linear_map_to_matrix - theorem is_basis.iff_det - def linear_equiv.alg_conj - theorem linear_equiv.is_unit_det - def linear_equiv.of_is_unit_det - theorem linear_map.finrank_linear_map - def linear_map.to_matrix' - theorem linear_map.to_matrix'_apply - theorem linear_map.to_matrix'_comp - theorem linear_map.to_matrix'_id - theorem linear_map.to_matrix'_mul - theorem linear_map.to_matrix'_symm - theorem linear_map.to_matrix'_to_lin' - def linear_map.to_matrix - def linear_map.to_matrix_alg_equiv' - theorem linear_map.to_matrix_alg_equiv'_apply - theorem linear_map.to_matrix_alg_equiv'_comp - theorem linear_map.to_matrix_alg_equiv'_id - theorem linear_map.to_matrix_alg_equiv'_mul - theorem linear_map.to_matrix_alg_equiv'_symm - theorem linear_map.to_matrix_alg_equiv'_to_lin_alg_equiv' - def linear_map.to_matrix_alg_equiv - theorem linear_map.to_matrix_alg_equiv_apply' - theorem linear_map.to_matrix_alg_equiv_apply - theorem linear_map.to_matrix_alg_equiv_comp - theorem linear_map.to_matrix_alg_equiv_id - theorem linear_map.to_matrix_alg_equiv_mul - theorem linear_map.to_matrix_alg_equiv_reindex_range - theorem linear_map.to_matrix_alg_equiv_symm - theorem linear_map.to_matrix_alg_equiv_to_lin_alg_equiv - theorem linear_map.to_matrix_alg_equiv_transpose_apply' - theorem linear_map.to_matrix_alg_equiv_transpose_apply - theorem linear_map.to_matrix_apply' - theorem linear_map.to_matrix_apply - theorem linear_map.to_matrix_comp - theorem linear_map.to_matrix_id - theorem linear_map.to_matrix_id_eq_basis_to_matrix - theorem linear_map.to_matrix_mul - theorem linear_map.to_matrix_mul_vec_repr - theorem linear_map.to_matrix_one - theorem linear_map.to_matrix_reindex_range - theorem linear_map.to_matrix_symm - theorem linear_map.to_matrix_to_lin - theorem linear_map.to_matrix_transpose - theorem linear_map.to_matrix_transpose_apply' - theorem linear_map.to_matrix_transpose_apply - def linear_map.trace - def linear_map.trace_aux - theorem linear_map.trace_aux_def - theorem linear_map.trace_aux_eq - theorem linear_map.trace_aux_reindex_range - theorem linear_map.trace_eq_matrix_trace - theorem linear_map.trace_eq_matrix_trace_of_finite_set - theorem linear_map.trace_mul_comm - theorem linear_map_to_matrix_mul_basis_to_matrix - def matrix.block_triangular_matrix' - def matrix.block_triangular_matrix - theorem matrix.det_of_block_triangular_matrix'' - theorem matrix.det_of_block_triangular_matrix' - theorem matrix.det_of_block_triangular_matrix - theorem matrix.det_of_lower_triangular - theorem matrix.det_of_upper_triangular - theorem matrix.det_reindex_alg_equiv - theorem matrix.det_reindex_linear_equiv_self - theorem matrix.det_to_block - theorem matrix.det_to_square_block' - theorem matrix.det_to_square_block - def matrix.diag - theorem matrix.diag_apply - theorem matrix.diag_one - theorem matrix.diag_transpose - theorem matrix.diagonal_comp_std_basis - theorem matrix.diagonal_to_lin' - theorem matrix.dot_product_eq - theorem matrix.dot_product_eq_iff - theorem matrix.dot_product_eq_zero - theorem matrix.dot_product_eq_zero_iff - theorem matrix.dot_product_std_basis_eq_mul - theorem matrix.dot_product_std_basis_one - theorem matrix.equiv_block_det - theorem matrix.finrank_matrix - theorem matrix.ker_diagonal_to_lin' - theorem matrix.ker_to_lin_eq_bot - def matrix.mul_vec_lin - theorem matrix.mul_vec_lin_apply - theorem matrix.mul_vec_std_basis - theorem matrix.proj_diagonal - theorem matrix.range_diagonal - theorem matrix.range_to_lin_eq_top - theorem matrix.rank_diagonal - theorem matrix.rank_vec_mul_vec - def matrix.reindex_alg_equiv - theorem matrix.reindex_alg_equiv_apply - theorem matrix.reindex_alg_equiv_refl - theorem matrix.reindex_alg_equiv_symm - def matrix.reindex_linear_equiv - theorem matrix.reindex_linear_equiv_apply - theorem matrix.reindex_linear_equiv_refl_refl - theorem matrix.reindex_linear_equiv_symm - def matrix.to_lin' - theorem matrix.to_lin'_apply - theorem matrix.to_lin'_mul - theorem matrix.to_lin'_one - theorem matrix.to_lin'_symm - theorem matrix.to_lin'_to_matrix' - def matrix.to_lin - def matrix.to_lin_alg_equiv' - theorem matrix.to_lin_alg_equiv'_apply - theorem matrix.to_lin_alg_equiv'_mul - theorem matrix.to_lin_alg_equiv'_one - theorem matrix.to_lin_alg_equiv'_symm - theorem matrix.to_lin_alg_equiv'_to_matrix_alg_equiv' - def matrix.to_lin_alg_equiv - theorem matrix.to_lin_alg_equiv_apply - theorem matrix.to_lin_alg_equiv_mul - theorem matrix.to_lin_alg_equiv_one - theorem matrix.to_lin_alg_equiv_self - theorem matrix.to_lin_alg_equiv_symm - theorem matrix.to_lin_alg_equiv_to_matrix_alg_equiv - theorem matrix.to_lin_apply - theorem matrix.to_lin_mul - theorem matrix.to_lin_one - theorem matrix.to_lin_self - theorem matrix.to_lin_symm - theorem matrix.to_lin_to_matrix - theorem matrix.to_lin_transpose - def matrix.to_linear_equiv' - theorem matrix.to_linear_equiv'_apply - theorem matrix.to_linear_equiv'_symm_apply - def matrix.to_linear_equiv - theorem matrix.to_square_block_det'' - def matrix.trace - theorem matrix.trace_apply - theorem matrix.trace_diag - theorem matrix.trace_mul_comm - theorem matrix.trace_one - theorem matrix.trace_transpose - theorem matrix.trace_transpose_mul - theorem matrix.two_block_triangular_det - theorem matrix.upper_two_block_triangular' - theorem matrix.upper_two_block_triangular Added src/linear_algebra/matrix/basis.lean + theorem basis.sum_to_matrix_smul_self + theorem basis.to_lin_to_matrix + def basis.to_matrix + theorem basis.to_matrix_apply + theorem basis.to_matrix_eq_to_matrix_constr + def basis.to_matrix_equiv + theorem basis.to_matrix_mul_to_matrix + theorem basis.to_matrix_self + theorem basis.to_matrix_transpose_apply + theorem basis.to_matrix_update + theorem basis_to_matrix_mul_linear_map_to_matrix + theorem linear_map.to_matrix_id_eq_basis_to_matrix + theorem linear_map_to_matrix_mul_basis_to_matrix Added src/linear_algebra/matrix/block.lean + def matrix.block_triangular_matrix' + def matrix.block_triangular_matrix + theorem matrix.det_of_block_triangular_matrix'' + theorem matrix.det_of_block_triangular_matrix' + theorem matrix.det_of_block_triangular_matrix + theorem matrix.det_of_lower_triangular + theorem matrix.det_of_upper_triangular + theorem matrix.det_to_block + theorem matrix.det_to_square_block' + theorem matrix.det_to_square_block + theorem matrix.equiv_block_det + theorem matrix.to_square_block_det'' + theorem matrix.two_block_triangular_det + theorem matrix.upper_two_block_triangular' + theorem matrix.upper_two_block_triangular Added src/linear_algebra/matrix/default.lean Added src/linear_algebra/matrix/determinant.lean + theorem matrix.alg_hom.map_det + def matrix.det + theorem matrix.det_apply' + theorem matrix.det_apply + theorem matrix.det_block_diagonal + theorem matrix.det_diagonal + theorem matrix.det_eq_elem_of_card_eq_one + theorem matrix.det_eq_of_eq_det_one_mul + theorem matrix.det_eq_of_eq_mul_det_one + theorem matrix.det_eq_of_forall_col_eq_smul_add_pred + theorem matrix.det_eq_of_forall_row_eq_smul_add_const + theorem matrix.det_eq_of_forall_row_eq_smul_add_const_aux + theorem matrix.det_eq_of_forall_row_eq_smul_add_pred + theorem matrix.det_eq_of_forall_row_eq_smul_add_pred_aux + theorem matrix.det_eq_one_of_card_eq_zero + theorem matrix.det_eq_zero_of_column_eq_zero + theorem matrix.det_eq_zero_of_row_eq_zero + theorem matrix.det_fin_zero + theorem matrix.det_minor_equiv_self + theorem matrix.det_mul + theorem matrix.det_mul_aux + theorem matrix.det_mul_column + theorem matrix.det_mul_row + theorem matrix.det_one + theorem matrix.det_permutation + theorem matrix.det_permute + theorem matrix.det_reindex_self + def matrix.det_row_multilinear + theorem matrix.det_smul + theorem matrix.det_succ_column + theorem matrix.det_succ_column_zero + theorem matrix.det_succ_row + theorem matrix.det_succ_row_zero + theorem matrix.det_transpose + theorem matrix.det_unique + theorem matrix.det_update_column_add + theorem matrix.det_update_column_add_self + theorem matrix.det_update_column_add_smul_self + theorem matrix.det_update_column_smul + theorem matrix.det_update_row_add + theorem matrix.det_update_row_add_self + theorem matrix.det_update_row_add_smul_self + theorem matrix.det_update_row_smul + theorem matrix.det_zero + theorem matrix.det_zero_of_column_eq + theorem matrix.det_zero_of_row_eq + theorem matrix.ring_hom.map_det + theorem matrix.upper_two_block_triangular_det Added src/linear_algebra/matrix/diagonal.lean + theorem matrix.diagonal_comp_std_basis + theorem matrix.diagonal_to_lin' + theorem matrix.ker_diagonal_to_lin' + theorem matrix.proj_diagonal + theorem matrix.range_diagonal + theorem matrix.rank_diagonal Added src/linear_algebra/matrix/dot_product.lean + theorem matrix.dot_product_eq + theorem matrix.dot_product_eq_iff + theorem matrix.dot_product_eq_zero + theorem matrix.dot_product_eq_zero_iff + theorem matrix.dot_product_std_basis_eq_mul + theorem matrix.dot_product_std_basis_one Added src/linear_algebra/matrix/dual.lean + theorem linear_map.to_matrix_transpose + theorem matrix.to_lin_transpose Added src/linear_algebra/matrix/finite_dimensional.lean + theorem matrix.finrank_matrix Renamed src/linear_algebra/nonsingular_inverse.lean to src/linear_algebra/matrix/nonsingular_inverse.lean Added src/linear_algebra/matrix/reindex.lean + theorem matrix.det_reindex_alg_equiv + theorem matrix.det_reindex_linear_equiv_self + def matrix.reindex_alg_equiv + theorem matrix.reindex_alg_equiv_apply + theorem matrix.reindex_alg_equiv_refl + theorem matrix.reindex_alg_equiv_symm + def matrix.reindex_linear_equiv + theorem matrix.reindex_linear_equiv_apply + theorem matrix.reindex_linear_equiv_refl_refl + theorem matrix.reindex_linear_equiv_symm Added src/linear_algebra/matrix/to_lin.lean + def alg_equiv_matrix' + def alg_equiv_matrix + theorem algebra.left_mul_matrix_apply + theorem algebra.left_mul_matrix_eq_repr_mul + theorem algebra.left_mul_matrix_injective + theorem algebra.left_mul_matrix_mul_vec_repr + theorem algebra.smul_left_mul_matrix + theorem algebra.smul_left_mul_matrix_algebra_map + theorem algebra.smul_left_mul_matrix_algebra_map_eq + theorem algebra.smul_left_mul_matrix_algebra_map_ne + theorem algebra.to_matrix_lmul' + theorem algebra.to_matrix_lmul_eq + theorem algebra.to_matrix_lsmul + def linear_equiv.alg_conj + theorem linear_map.finrank_linear_map + def linear_map.to_matrix' + theorem linear_map.to_matrix'_apply + theorem linear_map.to_matrix'_comp + theorem linear_map.to_matrix'_id + theorem linear_map.to_matrix'_mul + theorem linear_map.to_matrix'_symm + theorem linear_map.to_matrix'_to_lin' + def linear_map.to_matrix + def linear_map.to_matrix_alg_equiv' + theorem linear_map.to_matrix_alg_equiv'_apply + theorem linear_map.to_matrix_alg_equiv'_comp + theorem linear_map.to_matrix_alg_equiv'_id + theorem linear_map.to_matrix_alg_equiv'_mul + theorem linear_map.to_matrix_alg_equiv'_symm + theorem linear_map.to_matrix_alg_equiv'_to_lin_alg_equiv' + def linear_map.to_matrix_alg_equiv + theorem linear_map.to_matrix_alg_equiv_apply' + theorem linear_map.to_matrix_alg_equiv_apply + theorem linear_map.to_matrix_alg_equiv_comp + theorem linear_map.to_matrix_alg_equiv_id + theorem linear_map.to_matrix_alg_equiv_mul + theorem linear_map.to_matrix_alg_equiv_reindex_range + theorem linear_map.to_matrix_alg_equiv_symm + theorem linear_map.to_matrix_alg_equiv_to_lin_alg_equiv + theorem linear_map.to_matrix_alg_equiv_transpose_apply' + theorem linear_map.to_matrix_alg_equiv_transpose_apply + theorem linear_map.to_matrix_apply' + theorem linear_map.to_matrix_apply + theorem linear_map.to_matrix_comp + theorem linear_map.to_matrix_id + theorem linear_map.to_matrix_mul + theorem linear_map.to_matrix_mul_vec_repr + theorem linear_map.to_matrix_one + theorem linear_map.to_matrix_reindex_range + theorem linear_map.to_matrix_symm + theorem linear_map.to_matrix_to_lin + theorem linear_map.to_matrix_transpose_apply' + theorem linear_map.to_matrix_transpose_apply + def matrix.mul_vec_lin + theorem matrix.mul_vec_lin_apply + theorem matrix.mul_vec_std_basis + theorem matrix.rank_vec_mul_vec + def matrix.to_lin' + theorem matrix.to_lin'_apply + theorem matrix.to_lin'_mul + theorem matrix.to_lin'_one + theorem matrix.to_lin'_symm + theorem matrix.to_lin'_to_matrix' + def matrix.to_lin + def matrix.to_lin_alg_equiv' + theorem matrix.to_lin_alg_equiv'_apply + theorem matrix.to_lin_alg_equiv'_mul + theorem matrix.to_lin_alg_equiv'_one + theorem matrix.to_lin_alg_equiv'_symm + theorem matrix.to_lin_alg_equiv'_to_matrix_alg_equiv' + def matrix.to_lin_alg_equiv + theorem matrix.to_lin_alg_equiv_apply + theorem matrix.to_lin_alg_equiv_mul + theorem matrix.to_lin_alg_equiv_one + theorem matrix.to_lin_alg_equiv_self + theorem matrix.to_lin_alg_equiv_symm + theorem matrix.to_lin_alg_equiv_to_matrix_alg_equiv + theorem matrix.to_lin_apply + theorem matrix.to_lin_mul + theorem matrix.to_lin_one + theorem matrix.to_lin_self + theorem matrix.to_lin_symm + theorem matrix.to_lin_to_matrix Added src/linear_algebra/matrix/to_linear_equiv.lean + theorem matrix.ker_to_lin_eq_bot + theorem matrix.range_to_lin_eq_top + theorem matrix.to_linear_equiv'_apply + theorem matrix.to_linear_equiv'_symm_apply Added src/linear_algebra/matrix/trace.lean + def matrix.diag + theorem matrix.diag_apply + theorem matrix.diag_one + theorem matrix.diag_transpose + def matrix.trace + theorem matrix.trace_apply + theorem matrix.trace_diag + theorem matrix.trace_mul_comm + theorem matrix.trace_one + theorem matrix.trace_transpose + theorem matrix.trace_transpose_mul Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/special_linear_group.lean Added src/linear_algebra/trace.lean + def linear_map.trace + def linear_map.trace_aux + theorem linear_map.trace_aux_def + theorem linear_map.trace_aux_eq + theorem linear_map.trace_aux_reindex_range + theorem linear_map.trace_eq_matrix_trace + theorem linear_map.trace_eq_matrix_trace_of_finite_set + theorem linear_map.trace_mul_comm Modified src/linear_algebra/unitary_group.lean Modified src/linear_algebra/vandermonde.lean Modified src/ring_theory/trace.lean Modified test/matrix.lean 2021-05-15 14:21:14 3c27e2e feat(algebra/lie/weights): define product of root vectors and weight vectors (#7591) Also some related results, most notably that the zero root space is a subalgebra. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/subalgebra.lean + theorem lie_module_hom.coe_restrict_lie + def lie_module_hom.restrict_lie Modified src/algebra/lie/submodule.lean + theorem lie_subalgebra.coe_to_lie_submodule +/- theorem lie_subalgebra.exists_lie_ideal_coe_eq_iff + theorem lie_subalgebra.mem_to_lie_submodule + def lie_subalgebra.to_lie_submodule + theorem lie_submodule.coe_add + theorem lie_submodule.coe_bracket + theorem lie_submodule.coe_neg + theorem lie_submodule.coe_smul + theorem lie_submodule.coe_sub + theorem lie_submodule.coe_zero Modified src/algebra/lie/weights.lean + theorem lie_algebra.coe_root_space_weight_space_product_tmul + theorem lie_algebra.coe_zero_root_subalgebra +/- def lie_algebra.is_root + theorem lie_algebra.le_zero_root_subalgebra + theorem lie_algebra.lie_mem_weight_space_of_mem_weight_space +/- def lie_algebra.root_space + def lie_algebra.root_space_product + theorem lie_algebra.root_space_product_def + theorem lie_algebra.root_space_product_tmul + def lie_algebra.root_space_weight_space_product + theorem lie_algebra.to_lie_submodule_le_root_space_zero + def lie_algebra.zero_root_subalgebra 2021-05-15 14:21:13 515762a feat(category_theory/quotient): congruence relations (#7501) Define congruence relations and show that when you quotient a category by a congruence relation, two morphism become equal iff they are related. ESTIMATED CHANGES Modified src/category_theory/quotient.lean + theorem category_theory.quotient.functor_map_eq_iff + def hom_rel 2021-05-15 08:16:35 fc94b47 feat(counterexamples): a counterexample on the Pettis integral (#7553) Phillips (1940) has exhibited under the continuum hypothesis a bounded weakly measurable function which is not Pettis-integrable. We formalize this counterexample. ESTIMATED CHANGES Added counterexamples/phillips.lean + def continuous_linear_map.to_bounded_additive_measure + def discrete_copy + def measure_theory.measure.extension_to_bounded_functions + theorem phillips_1940.apply_f_eq_continuous_part + def phillips_1940.bounded_additive_measure.C + theorem phillips_1940.bounded_additive_measure.abs_le_bound + theorem phillips_1940.bounded_additive_measure.additive + theorem phillips_1940.bounded_additive_measure.apply_countable + def phillips_1940.bounded_additive_measure.continuous_part + theorem phillips_1940.bounded_additive_measure.continuous_part_apply_diff + theorem phillips_1940.bounded_additive_measure.continuous_part_apply_eq_zero_of_countable + theorem phillips_1940.bounded_additive_measure.countable_discrete_support + def phillips_1940.bounded_additive_measure.discrete_part + theorem phillips_1940.bounded_additive_measure.discrete_part_apply + def phillips_1940.bounded_additive_measure.discrete_support + theorem phillips_1940.bounded_additive_measure.empty + theorem phillips_1940.bounded_additive_measure.eq_add_parts + theorem phillips_1940.bounded_additive_measure.exists_discrete_support + theorem phillips_1940.bounded_additive_measure.exists_discrete_support_nonpos + theorem phillips_1940.bounded_additive_measure.le_bound + theorem phillips_1940.bounded_additive_measure.neg_apply + def phillips_1940.bounded_additive_measure.restrict + theorem phillips_1940.bounded_additive_measure.restrict_apply + structure phillips_1940.bounded_additive_measure + def phillips_1940.bounded_integrable_functions + def phillips_1940.bounded_integrable_functions_integral_clm + theorem phillips_1940.comp_ae_eq_const + theorem phillips_1940.continuous_part_eval_clm_eq_zero + theorem phillips_1940.countable_compl_spf + theorem phillips_1940.countable_ne + theorem phillips_1940.countable_spf_mem + theorem phillips_1940.exists_linear_extension_to_bounded_functions + theorem phillips_1940.extension_to_bounded_functions_apply + def phillips_1940.f + theorem phillips_1940.integrable_comp + theorem phillips_1940.integral_comp + theorem phillips_1940.measurable_comp + theorem phillips_1940.no_pettis_integral + theorem phillips_1940.norm_bound + theorem phillips_1940.norm_indicator_le_one + theorem phillips_1940.sierpinski_pathological_family + def phillips_1940.spf + theorem phillips_1940.to_functions_to_measure + theorem phillips_1940.to_functions_to_measure_continuous_part Modified docs/references.bib Modified src/data/set/basic.lean + theorem set.diff_union_inter + theorem set.union_eq_diff_union_diff_union_inter - theorem set.union_eq_sdiff_union_sdiff_union_inter Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/lp_space.lean Modified src/measure_theory/measurable_space.lean + theorem measurable.measurable_of_countable_ne + theorem set.countable.measurable_set Modified src/measure_theory/measure_space.lean + theorem finset.measure_zero - theorem measure_theory.measure_countable - theorem measure_theory.measure_finite - theorem measure_theory.measure_finset + theorem set.countable.measure_zero + theorem set.finite.measure_zero Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.countable_iff_lt_aleph_one Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.coe_of_normed_group + theorem bounded_continuous_function.coe_of_normed_group_discrete +/- theorem bounded_continuous_function.continuous_eval +/- theorem bounded_continuous_function.continuous_evalx + def bounded_continuous_function.eval_clm + theorem bounded_continuous_function.eval_clm_apply 2021-05-15 08:16:34 b4b38da feat(category_theory/*/projective): refactor treatment of projective objects (#7485) ESTIMATED CHANGES Modified src/algebra/homology/exact.lean Modified src/algebra/homology/homological_complex.lean Modified src/algebra/homology/image_to_kernel.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/abelian/projective.lean + theorem category_theory.exact_d_f - def category_theory.projective.d - theorem category_theory.projective.exact_d_f - def category_theory.projective.factor_thru - theorem category_theory.projective.factor_thru_comp - theorem category_theory.projective.iso_iff - def category_theory.projective.left - theorem category_theory.projective.of_iso - def category_theory.projective.over - def category_theory.projective.π - structure category_theory.projective_presentation Modified src/category_theory/closed/zero.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/preadditive/additive_functor.lean Modified src/category_theory/preadditive/default.lean Added src/category_theory/preadditive/projective.lean + def category_theory.exact.lift + theorem category_theory.exact.lift_comp + def category_theory.projective.d + def category_theory.projective.factor_thru + theorem category_theory.projective.factor_thru_comp + theorem category_theory.projective.iso_iff + theorem category_theory.projective.of_iso + def category_theory.projective.over + def category_theory.projective.syzygies + def category_theory.projective.π + structure category_theory.projective_presentation Modified src/category_theory/simple.lean Modified src/category_theory/subobject/lattice.lean Modified src/category_theory/triangulated/basic.lean 2021-05-15 08:16:32 c63caeb feat(algebra/homology): homotopies between chain maps (#7483) ESTIMATED CHANGES Modified src/algebra/homology/additive.lean Added src/algebra/homology/homotopy.lean + def category_theory.functor.map_homotopy + def category_theory.functor.map_homotopy_equiv + def from_next' + theorem from_next'_add + theorem from_next'_comp_left + theorem from_next'_comp_right + theorem from_next'_eq + theorem from_next'_neg + theorem from_next'_zero + theorem homology_map_eq_of_homotopy + def homology_obj_iso_of_homotopy_equiv + theorem homotopy.comm + def homotopy.comp_left + def homotopy.comp_left_id + def homotopy.comp_right + def homotopy.comp_right_id + def homotopy.equiv_sub_zero + theorem homotopy.from_next'_succ_chain_complex + theorem homotopy.from_next'_zero_chain_complex + def homotopy.from_next + def homotopy.mk_inductive + def homotopy.mk_inductive_aux₁ + def homotopy.mk_inductive_aux₂ + theorem homotopy.mk_inductive_aux₃ + def homotopy.refl + def homotopy.symm + theorem homotopy.to_prev'_chain_complex + def homotopy.to_prev + def homotopy.trans + structure homotopy + def homotopy_equiv.refl + def homotopy_equiv.symm + def homotopy_equiv.trans + structure homotopy_equiv + def to_prev' + theorem to_prev'_add + theorem to_prev'_comp_left + theorem to_prev'_comp_right + theorem to_prev'_eq + theorem to_prev'_neg + theorem to_prev'_zero 2021-05-15 08:16:31 cc47aff feat(algebra/homology): truncation and augmentation of chain complexes (#7480) ESTIMATED CHANGES Added src/algebra/homology/augment.lean + def chain_complex.augment + theorem chain_complex.augment_X_succ + theorem chain_complex.augment_X_zero + theorem chain_complex.augment_d_one_zero + theorem chain_complex.augment_d_succ_succ + def chain_complex.augment_truncate + theorem chain_complex.augment_truncate_hom_f_succ + theorem chain_complex.augment_truncate_hom_f_zero + theorem chain_complex.augment_truncate_inv_f_succ + theorem chain_complex.augment_truncate_inv_f_zero + theorem chain_complex.cochain_complex_d_succ_succ_zero + def chain_complex.to_single₀_as_complex + def chain_complex.truncate + def chain_complex.truncate_augment + theorem chain_complex.truncate_augment_hom_f + theorem chain_complex.truncate_augment_inv_f + def chain_complex.truncate_to 2021-05-15 08:16:30 5da114c feat(algebraic_topology): the Moore complex of a simplicial object (#6308) ## Moore complex We construct the normalized Moore complex, as a functor `simplicial_object C ⥤ chain_complex C ℕ`, for any abelian category `C`. The `n`-th object is intersection of the kernels of `X.δ i : X.obj n ⟶ X.obj (n-1)`, for `i = 1, ..., n`. The differentials are induced from `X.δ 0`, which maps each of these intersections of kernels to the next. This functor is one direction of the Dold-Kan equivalence, which we're still working towards. ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean + theorem chain_complex.of_d_ne + def chain_complex.of_hom Added src/algebraic_topology/Moore_complex.lean + theorem algebraic_topology.normalized_Moore_complex.d_squared + def algebraic_topology.normalized_Moore_complex.map + def algebraic_topology.normalized_Moore_complex.obj + def algebraic_topology.normalized_Moore_complex.obj_X + def algebraic_topology.normalized_Moore_complex.obj_d + def algebraic_topology.normalized_Moore_complex 2021-05-15 03:59:57 94aae73 feat(data/nat/factorial) : descending factorial (#7527) ESTIMATED CHANGES Modified src/data/nat/choose/basic.lean + theorem nat.choose_eq_desc_fac_div_factorial + theorem nat.desc_fac_eq_factorial_mul_choose + theorem nat.factorial_dvd_desc_fac Modified src/data/nat/factorial.lean + def nat.desc_fac + theorem nat.desc_fac_eq_div + theorem nat.desc_fac_succ + theorem nat.desc_fac_zero + theorem nat.factorial_mul_desc_fac + theorem nat.succ_desc_fac + theorem nat.zero_desc_fac Modified src/ring_theory/polynomial/bernstein.lean - theorem bernstein_polynomial.iterate_derivative_at_0_aux₁ - theorem bernstein_polynomial.iterate_derivative_at_0_aux₂ Modified src/ring_theory/polynomial/pochhammer.lean - theorem choose_eq_pochhammer_eval_div_factorial - theorem factorial_mul_pochhammer' - theorem pochhammer_eval_eq_choose_mul_factorial - theorem pochhammer_eval_eq_factorial_div_factorial - theorem pochhammer_eval_one' + theorem pochhammer_eval_succ + theorem pochhammer_nat_eq_desc_fac + theorem pochhammer_nat_eval_succ 2021-05-15 02:43:25 a648af4 chore(scripts): update nolints.txt (#7613) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-05-14 22:42:57 bd923f7 chore(geometry/euclidean/triangle): minor style fixes (#7585) ESTIMATED CHANGES Modified src/geometry/euclidean/triangle.lean 2021-05-14 19:19:41 fd3d117 feat(data/mv_polynomial/basic): Add ring section (#7507) A few lemmas about `monomial` analogous to those for the single-variate polynomials over rings. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.single_nat_sub + theorem finsupp.single_neg +/- theorem finsupp.single_sub Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/comm_ring.lean + theorem mv_polynomial.monomial_neg + theorem mv_polynomial.monomial_sub 2021-05-14 17:28:32 a52f471 feat(algebra/homology): chain complexes are an additive category (#7478) ESTIMATED CHANGES Added src/algebra/homology/additive.lean + def category_theory.functor.map_homological_complex + def category_theory.nat_trans.map_homological_complex + theorem category_theory.nat_trans.map_homological_complex_comp + theorem category_theory.nat_trans.map_homological_complex_id + theorem category_theory.nat_trans.map_homological_complex_naturality + def chain_complex.single₀_map_homological_complex + theorem chain_complex.single₀_map_homological_complex_hom_app_succ + theorem chain_complex.single₀_map_homological_complex_hom_app_zero + theorem chain_complex.single₀_map_homological_complex_inv_app_succ + theorem chain_complex.single₀_map_homological_complex_inv_app_zero + theorem homological_complex.add_f_apply + theorem homological_complex.neg_f_apply + def homological_complex.single_map_homological_complex + theorem homological_complex.single_map_homological_complex_hom_app_ne + theorem homological_complex.single_map_homological_complex_hom_app_self + theorem homological_complex.single_map_homological_complex_inv_app_ne + theorem homological_complex.single_map_homological_complex_inv_app_self + theorem homological_complex.sub_f_apply + theorem homological_complex.zero_f_apply Modified src/algebra/homology/single.lean 2021-05-14 14:25:23 f8dc722 refactor(topology/algebra/ordered): reduce imports (#7601) Renames `topology.algebra.ordered` to `topology.algebra.order`, and moves the material about `liminf/limsup` and about `extend_from` to separate files, in order to delay imports. ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximation_corollaries.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/normed_space/basic.lean Modified src/topology/algebra/floor_ring.lean Renamed src/topology/algebra/ordered.lean to src/topology/algebra/ordered/basic.lean - theorem Liminf_eq_of_le_nhds - theorem Liminf_nhds - theorem Limsup_eq_of_le_nhds - theorem Limsup_nhds - theorem continuous_on_Icc_extend_from_Ioo - theorem continuous_on_Ico_extend_from_Ioo - theorem continuous_on_Ioc_extend_from_Ioo - theorem eq_lim_at_left_extend_from_Ioo - theorem eq_lim_at_right_extend_from_Ioo - theorem filter.tendsto.is_bounded_under_ge - theorem filter.tendsto.is_bounded_under_le - theorem filter.tendsto.is_cobounded_under_ge - theorem filter.tendsto.is_cobounded_under_le - theorem filter.tendsto.liminf_eq - theorem filter.tendsto.limsup_eq - theorem gt_mem_sets_of_Liminf_gt - theorem is_bounded_ge_nhds - theorem is_bounded_le_nhds - theorem is_cobounded_ge_nhds - theorem is_cobounded_le_nhds - theorem le_nhds_of_Limsup_eq_Liminf - theorem lt_mem_sets_of_Limsup_lt - theorem tendsto_of_le_liminf_of_limsup_le - theorem tendsto_of_liminf_eq_limsup Added src/topology/algebra/ordered/extend_from.lean + theorem continuous_on_Icc_extend_from_Ioo + theorem continuous_on_Ico_extend_from_Ioo + theorem continuous_on_Ioc_extend_from_Ioo + theorem eq_lim_at_left_extend_from_Ioo + theorem eq_lim_at_right_extend_from_Ioo Added src/topology/algebra/ordered/liminf_limsup.lean + theorem Liminf_eq_of_le_nhds + theorem Liminf_nhds + theorem Limsup_eq_of_le_nhds + theorem Limsup_nhds + theorem filter.tendsto.is_bounded_under_ge + theorem filter.tendsto.is_bounded_under_le + theorem filter.tendsto.is_cobounded_under_ge + theorem filter.tendsto.is_cobounded_under_le + theorem filter.tendsto.liminf_eq + theorem filter.tendsto.limsup_eq + theorem gt_mem_sets_of_Liminf_gt + theorem is_bounded_ge_nhds + theorem is_bounded_le_nhds + theorem is_cobounded_ge_nhds + theorem is_cobounded_le_nhds + theorem le_nhds_of_Limsup_eq_Liminf + theorem lt_mem_sets_of_Limsup_lt + theorem tendsto_of_le_liminf_of_limsup_le + theorem tendsto_of_liminf_eq_limsup Modified src/topology/algebra/ordered/proj_Icc.lean Modified src/topology/continuous_function/basic.lean Renamed src/topology/extend_from_subset.lean to src/topology/extend_from.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/topological_fiber_bundle.lean 2021-05-14 14:25:22 2373ee6 refactor(set_theory/{surreal, game}): move `mul` from surreal to game (#7580) The next step is to provide several `simp` lemmas for multiplication of pgames in terms of games. None of these statements involve surreal numbers. ESTIMATED CHANGES Modified src/set_theory/game.lean + def pgame.inv' + inductive pgame.inv_ty + def pgame.inv_val + theorem pgame.left_distrib_equiv + theorem pgame.left_distrib_equiv_aux' + theorem pgame.left_distrib_equiv_aux + def pgame.left_moves_mul + theorem pgame.mk_mul_move_left_inl + theorem pgame.mk_mul_move_left_inr + theorem pgame.mk_mul_move_right_inl + theorem pgame.mk_mul_move_right_inr + def pgame.mul + theorem pgame.mul_comm_equiv + def pgame.mul_comm_relabelling + theorem pgame.mul_move_left_inl + theorem pgame.mul_move_left_inr + theorem pgame.mul_move_right_inl + theorem pgame.mul_move_right_inr + theorem pgame.mul_zero_equiv + def pgame.mul_zero_relabelling + theorem pgame.right_distrib_equiv + def pgame.right_moves_mul + theorem pgame.zero_mul_equiv + def pgame.zero_mul_relabelling Modified src/set_theory/surreal.lean - def pgame.inv' - inductive pgame.inv_ty - def pgame.inv_val - theorem pgame.left_distrib_equiv - theorem pgame.left_distrib_equiv_aux' - theorem pgame.left_distrib_equiv_aux - def pgame.left_moves_mul - theorem pgame.mk_mul_move_left_inl - theorem pgame.mk_mul_move_left_inr - theorem pgame.mk_mul_move_right_inl - theorem pgame.mk_mul_move_right_inr - def pgame.mul - theorem pgame.mul_comm_equiv - def pgame.mul_comm_relabelling - theorem pgame.mul_move_left_inl - theorem pgame.mul_move_left_inr - theorem pgame.mul_move_right_inl - theorem pgame.mul_move_right_inr - theorem pgame.mul_zero_equiv - def pgame.mul_zero_relabelling - theorem pgame.right_distrib_equiv - def pgame.right_moves_mul - theorem pgame.zero_mul_equiv - def pgame.zero_mul_relabelling 2021-05-14 12:02:31 87adde4 feat(category_theory/monoidal): the monoidal opposite (#7602) ESTIMATED CHANGES Added src/category_theory/monoidal/opposite.lean + def category_theory.iso.mop + def category_theory.monoidal_opposite.mop + theorem category_theory.monoidal_opposite.mop_unmop + theorem category_theory.monoidal_opposite.op_inj_iff + theorem category_theory.monoidal_opposite.op_injective + def category_theory.monoidal_opposite.unmop + theorem category_theory.monoidal_opposite.unmop_mop + theorem category_theory.monoidal_opposite.unop_inj_iff + theorem category_theory.monoidal_opposite.unop_injective + def category_theory.monoidal_opposite + theorem category_theory.mop_comp + theorem category_theory.mop_id + theorem category_theory.mop_id_unmop + theorem category_theory.mop_inj + theorem category_theory.mop_tensor_obj + theorem category_theory.mop_tensor_unit + theorem category_theory.mop_unmop + theorem category_theory.op_tensor_obj + theorem category_theory.op_tensor_unit + theorem category_theory.unmop_comp + theorem category_theory.unmop_id + theorem category_theory.unmop_id_mop + theorem category_theory.unmop_inj + theorem category_theory.unmop_mop + def quiver.hom.mop + def quiver.hom.unmop 2021-05-14 12:02:30 cc1690e feat(analysis/calculus/parametric_integral): derivative of parametric integrals (#7437) from the sphere eversion project ESTIMATED CHANGES Added src/analysis/calculus/parametric_integral.lean + theorem has_deriv_at_of_dominated_loc_of_deriv_le + theorem has_deriv_at_of_dominated_loc_of_lip + theorem has_fderiv_at_of_dominated_loc_of_lip' + theorem has_fderiv_at_of_dominated_loc_of_lip + theorem has_fderiv_at_of_dominated_of_fderiv_le Modified src/data/real/nnreal.lean + theorem nnreal.coe_of_real_le + theorem real.nnabs_of_nonneg 2021-05-14 09:48:30 1199a3d feat(analysis/special_functions/exp_log): strengthen statement of `continuous_log'` (#7607) The proof of `continuous (λ x : {x : ℝ // 0 < x}, log x)` also works for `continuous (λ x : {x : ℝ // x ≠ 0}, log x)`. I keep the preexisting lemma as well since it is used in a number of places and seems generally useful. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem real.continuous_log 2021-05-14 09:48:29 3c77167 feat(linear_algebra/dual): generalize from field to ring (#7599) ESTIMATED CHANGES Modified src/linear_algebra/dual.lean +/- theorem basis.coe_to_dual_self +/- def basis.dual_basis +/- theorem basis.dual_basis_apply +/- theorem basis.dual_basis_equiv_fun +/- theorem basis.dual_basis_repr +/- theorem basis.dual_dim_eq + def basis.eval_equiv + theorem basis.eval_equiv_to_linear_map + theorem basis.eval_ker + theorem basis.eval_range +/- def basis.to_dual +/- theorem basis.to_dual_apply_left +/- theorem basis.to_dual_apply_right +/- theorem basis.to_dual_eq_equiv_fun +/- theorem basis.to_dual_eq_repr +/- def basis.to_dual_equiv +/- def basis.to_dual_flip +/- theorem basis.to_dual_flip_apply +/- theorem basis.to_dual_inj +/- theorem basis.to_dual_ker +/- theorem basis.to_dual_range +/- theorem basis.to_dual_total_left +/- theorem basis.to_dual_total_right +/- theorem basis.total_coord +/- theorem basis.total_dual_basis +/- def dual_pair.basis +/- def dual_pair.coeffs +/- theorem dual_pair.coeffs_apply +/- theorem dual_pair.coeffs_lc +/- theorem dual_pair.dual_lc +/- def dual_pair.lc +/- theorem dual_pair.lc_coeffs +/- theorem dual_pair.lc_def +/- theorem dual_pair.mem_of_mem_span +/- structure dual_pair 2021-05-14 04:49:59 840db09 chore(category_theory/groupoid): remove unnecessary imports (#7600) ESTIMATED CHANGES Modified src/category_theory/core.lean Modified src/category_theory/epi_mono.lean + def category_theory.groupoid.of_trunc_split_mono Modified src/category_theory/groupoid.lean - def category_theory.groupoid.of_trunc_split_mono 2021-05-14 04:49:58 3124e1d feat(data/finset/lattice): choice-free le_sup_iff and lt_sup_iff (#7584) Propagate to `finset` the change to `le_sup_iff [is_total α (≤)]` and `lt_sup_iff [is_total α (≤)]` made in #7455. ESTIMATED CHANGES Modified src/data/finset/lattice.lean +/- theorem finset.le_sup_iff +/- theorem finset.lt_sup_iff 2021-05-14 04:49:57 bf2750e chore(order/atoms): ask for the correct instances (#7582) replace bounded_lattice by order_bot/order_top where it can ESTIMATED CHANGES Modified src/order/atoms.lean +/- theorem is_atom_dual_iff_is_coatom +/- theorem is_atomic_dual_iff_is_coatomic +/- theorem is_atomic_iff_forall_is_atomic_Iic +/- theorem is_coatom_dual_iff_is_atom +/- theorem is_coatomic_dual_iff_is_atomic +/- theorem is_coatomic_iff_forall_is_coatomic_Ici +/- theorem order_iso.is_atom_iff +/- theorem order_iso.is_atomic_iff +/- theorem order_iso.is_coatom_iff +/- theorem order_iso.is_coatomic_iff +/- theorem order_iso.is_simple_lattice +/- theorem order_iso.is_simple_lattice_iff 2021-05-14 04:49:56 8829c0d feat(algebra/homology): flipping double complexes (#7482) ESTIMATED CHANGES Added src/algebra/homology/flip.lean + def homological_complex.flip + def homological_complex.flip_equivalence + def homological_complex.flip_equivalence_counit_iso + def homological_complex.flip_equivalence_unit_iso + def homological_complex.flip_obj 2021-05-14 04:49:55 722b5fc feat(algebra/homology): homological complexes are the same as differential objects (#7481) ESTIMATED CHANGES Added src/algebra/homology/differential_object.lean + def homological_complex.dgo_equiv_homological_complex + def homological_complex.dgo_equiv_homological_complex_counit_iso + def homological_complex.dgo_equiv_homological_complex_unit_iso + def homological_complex.dgo_to_homological_complex + def homological_complex.homological_complex_to_dgo 2021-05-14 04:49:54 f5327c9 feat(algebra/homology): definition of quasi_iso (#7479) ESTIMATED CHANGES Added src/algebra/homology/quasi_iso.lean 2021-05-14 01:13:30 239908e feat(ring_theory/ideal/operations): add apply_coe_mem_map (#7566) This is a continuation of #7459. In this PR: - We modify `ideal.mem_map_of_mem` in order to be consistent with `submonoid.mem_map_of_mem`. - We modify `submonoid.apply_coe_mem_map` (and friends) to have the submonoid as an explicit variable. This was the case before #7459 (but with a different, and not consistent, name). It seems to me that this version makes the code more readable. - We add `ideal.apply_coe_mem_map` (similar to `submonoid.apply_coe_mem_map`). Note that `mem_map_of_mem` is used in other places, for example we have `multiset.mem_map_of_mem`, but since a multiset is not a type there is no `apply_coe_mem_map` to add there. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean +/- theorem subgroup.apply_coe_mem_map Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.apply_coe_mem_map Modified src/ring_theory/ideal/operations.lean + theorem ideal.apply_coe_mem_map +/- theorem ideal.mem_map_of_mem Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/basic.lean 2021-05-13 15:18:24 090c9ac chore(scripts): update nolints.txt (#7597) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-05-13 15:18:24 f792356 chore(order/galois_connection): ask for the correct instances (#7594) replace partial_order by preorder where it can and general tidy up of this old style file ESTIMATED CHANGES Modified src/order/galois_connection.lean +/- theorem galois_connection.l_Sup +/- theorem galois_connection.u_Inf +/- def galois_connection +/- theorem galois_insertion.strict_mono_u +/- theorem nat.galois_connection_mul_div 2021-05-13 15:18:23 ce45594 feat(algebra/homology/single): chain complexes supported in a single degree (#7477) ESTIMATED CHANGES Modified src/algebra/homology/homological_complex.lean Added src/algebra/homology/single.lean + def chain_complex.homology_functor_0_single₀ + def chain_complex.homology_functor_succ_single₀ + def chain_complex.single₀ + def chain_complex.single₀_iso_single + theorem chain_complex.single₀_map_f_0 + theorem chain_complex.single₀_map_f_succ + theorem chain_complex.single₀_obj_X_0 + theorem chain_complex.single₀_obj_X_d + theorem chain_complex.single₀_obj_X_d_from + theorem chain_complex.single₀_obj_X_d_to + theorem chain_complex.single₀_obj_X_succ + def chain_complex.to_single₀_equiv + def homological_complex.single + theorem homological_complex.single_map_f_self + def homological_complex.single_obj_X_self Modified src/category_theory/fully_faithful.lean + def category_theory.full.of_iso 2021-05-13 13:44:39 c5faead feat(category_theory/preadditive/functor_category): preadditive instance for C \func D (#7533) ESTIMATED CHANGES Modified src/category_theory/preadditive/default.lean +/- theorem category_theory.preadditive.comp_gsmul + def category_theory.preadditive.comp_hom +/- theorem category_theory.preadditive.comp_neg + theorem category_theory.preadditive.comp_nsmul +/- theorem category_theory.preadditive.comp_sub +/- theorem category_theory.preadditive.comp_sum +/- theorem category_theory.preadditive.gsmul_comp +/- theorem category_theory.preadditive.neg_comp +/- theorem category_theory.preadditive.neg_comp_neg + theorem category_theory.preadditive.nsmul_comp +/- theorem category_theory.preadditive.sub_comp +/- theorem category_theory.preadditive.sum_comp Added src/category_theory/preadditive/functor_category.lean + theorem category_theory.nat_trans.app_add + theorem category_theory.nat_trans.app_gsmul + def category_theory.nat_trans.app_hom + theorem category_theory.nat_trans.app_neg + theorem category_theory.nat_trans.app_nsmul + theorem category_theory.nat_trans.app_sub + theorem category_theory.nat_trans.app_sum + theorem category_theory.nat_trans.app_zero 2021-05-12 16:37:46 43bd924 feat(topology/category/Profinite): iso_equiv_homeo (#7529) From LTE ESTIMATED CHANGES Modified src/topology/category/Profinite/default.lean +/- def Fintype.to_Profinite + def Profinite.homeo_of_iso +/- theorem Profinite.is_closed_map +/- theorem Profinite.is_iso_of_bijective + def Profinite.iso_equiv_homeo + def Profinite.iso_of_homeo 2021-05-12 15:10:58 08f4404 refactor(ring_theory/perfection): remove coercion in the definition of the type (#7583) Defining the type `ring.perfection R p` as a plain subtype (but inheriting the semiring or ring instances from a `subsemiring` structure) removes several coercions and helps Lean a lot when elaborating or unifying. ESTIMATED CHANGES Modified src/ring_theory/perfection.lean +/- def ring.perfection + def ring.perfection_subring + def ring.perfection_subsemiring 2021-05-12 10:02:56 6b62b9f refactor(algebra/module): rename `smul_injective hx` to `smul_left_injective M hx` (#7577) This is a follow-up PR to #7548. * Now that there is also a `smul_right_injective`, we should disambiguate the previous `smul_injective` to `smul_left_injective`. * The `M` parameter can't be inferred from arguments before the colon, so we make it explicit in `smul_left_injective` and `smul_right_injective`. ESTIMATED CHANGES Modified src/algebra/algebra/tower.lean Modified src/algebra/module/basic.lean - theorem smul_injective + theorem smul_left_injective Modified src/analysis/convex/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/tensor_product.lean 2021-05-12 02:19:18 6ee8f0e doc(tactic/interactive): link swap and rotate to each other (#7550) They both do 'make a different goal the current one'. ESTIMATED CHANGES Modified src/tactic/interactive.lean 2021-05-11 22:59:11 a7e1696 fix(tactic/derive_fintype): use correct universes (#7581) Reported on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/type.20class.20error.20with.20mk_fintype_instance/near/238209823). ESTIMATED CHANGES Modified src/tactic/derive_fintype.lean Modified test/derive_fintype.lean 2021-05-11 22:59:10 0538d2c chore(*): reducing imports (#7573) ESTIMATED CHANGES Modified src/analysis/special_functions/bernstein.lean Added src/data/finsupp/antidiagonal.lean + def finsupp.Iic_finset + def finsupp.antidiagonal + theorem finsupp.antidiagonal_support_filter_fst_eq + theorem finsupp.antidiagonal_support_filter_snd_eq + theorem finsupp.antidiagonal_zero + theorem finsupp.coe_Iic_finset + theorem finsupp.finite_le_nat + theorem finsupp.finite_lt_nat + theorem finsupp.mem_Iic_finset + theorem finsupp.mem_antidiagonal_support + theorem finsupp.prod_antidiagonal_support_swap + theorem finsupp.swap_mem_antidiagonal_support Modified src/data/finsupp/basic.lean - def finsupp.Iic_finset - def finsupp.antidiagonal - theorem finsupp.antidiagonal_support_filter_fst_eq - theorem finsupp.antidiagonal_support_filter_snd_eq - theorem finsupp.antidiagonal_zero - theorem finsupp.coe_Iic_finset - theorem finsupp.finite_le_nat - theorem finsupp.finite_lt_nat - theorem finsupp.mem_Iic_finset - theorem finsupp.mem_antidiagonal_support - theorem finsupp.prod_antidiagonal_support_swap - theorem finsupp.swap_mem_antidiagonal_support Modified src/data/mv_polynomial/basic.lean Modified src/order/order_iso_nat.lean Modified src/topology/algebra/ordered.lean Modified src/topology/continuous_function/compact.lean Modified src/topology/continuous_function/weierstrass.lean 2021-05-11 18:00:40 9cf732c chore(logic/nontrivial): adjust priority of `nonempty` instances (#7563) This makes `nontrivial.to_nonempty` and `nonempty_of_inhabited` higher priority so they are tried before things like `add_torsor.nonempty` which starts traversing the algebra heirarchy. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/char_zero/near/238103102) ESTIMATED CHANGES Modified src/logic/nontrivial.lean 2021-05-11 18:00:39 3048d6b feat(ring_theory/localization): Define local ring hom on localization at prime ideal (#7522) Defines the induced ring homomorphism on the localizations at a prime ideal and proves that it is local and uniquely determined. ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem localization.local_ring_hom_mk' + theorem localization.local_ring_hom_to_map + theorem localization.local_ring_hom_unique + theorem localization_map.map_unique 2021-05-11 14:57:06 b746e82 feat(linear_algebra/finsupp): adjust apply lemma for `finsupp.dom_lcongr` (#7549) This is a split-off dependency from #7496. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.dom_lcongr_apply 2021-05-11 10:56:56 9191a67 perf(ci): skip linting and tests on master branch (#7576) Do not run lints and tests on the master branch. These checks have already passed on the staging branch, so there should be no need to repeat them on master. ESTIMATED CHANGES Modified .github/workflows/build.yml 2021-05-11 07:41:53 b4c7654 feat(algebra/homology): redesign of homological complexes (#7473) This is a complete redesign of our library on homological complexes and homology. This PR replaces the current definition of `chain_complex` which had proved cumbersome to work with. The fundamental change is that chain complexes are now indexed by a type equipped with a `complex_shape`, rather than by a monoid. A `complex_shape ι` contains a relation `r`, with the intent that we will only allow a differential `X i ⟶ X j` when `r i j`. This allows, for example, complexes indexed either by `nat` or `int`, with differentials going either up or down. We set up the initial theory without referring to "successors" and "predecessors" in the type `ι`, to ensure we can avoid dependent type theory hell issues involving arithmetic in the index of a chain group. We achieve this by having a chain complex consist of morphisms `d i j : X i ⟶ X j` for all `i j`, but with an additional axiom saying this map is zero unless `r i j`. This means we can easily talk about, e.g., morphisms from `X (i - 1 + 1)` to `X (i + 1)` when we need to. However after not too long we also set up `option` valued `next` and `prev` functions which make an arbitrary choice of such successors and predecessors if they exist. Using these, we define morphisms `d_to j`, which lands in `X j`, and has source either `X i` for some `r i j`, or the zero object if these isn't such an `i`. These morphisms are very convenient when working "at the edge of a complex", e.g. when indexing by `nat`. ESTIMATED CHANGES Deleted src/algebra/homology/chain_complex.lean - def category_theory.functor.map_homological_complex - def category_theory.functor.pushforward_homological_complex - def chain_complex - def cochain_complex - theorem homological_complex.comm - theorem homological_complex.comm_at - theorem homological_complex.d_squared - theorem homological_complex.eq_to_hom_d - theorem homological_complex.eq_to_hom_f - def homological_complex.forget - def homological_complex Added src/algebra/homology/complex_shape.lean + def complex_shape.down' + def complex_shape.down + def complex_shape.next + theorem complex_shape.next_eq_some + def complex_shape.prev + theorem complex_shape.prev_eq_some + def complex_shape.refl + def complex_shape.symm + theorem complex_shape.symm_symm + def complex_shape.trans + def complex_shape.up' + def complex_shape.up + structure complex_shape Modified src/algebra/homology/exact.lean + theorem category_theory.comp_eq_zero_of_image_eq_kernel + theorem category_theory.epi_iff_exact_zero_right - theorem category_theory.exact_comp_hom_inv_comp + theorem category_theory.exact_comp_iso + theorem category_theory.exact_iso_comp - theorem category_theory.exact_kernel + theorem category_theory.exact_kernel_subobject_arrow + theorem category_theory.exact_kernel_ι + theorem category_theory.exact_of_image_eq_kernel - theorem category_theory.exact_of_zero + theorem category_theory.image_to_kernel_is_iso_of_image_eq_kernel + theorem category_theory.kernel_subobject_arrow_eq_zero_of_exact_zero_left +/- theorem category_theory.kernel_ι_eq_zero_of_exact_zero_left + theorem category_theory.mono_iff_exact_zero_left + theorem category_theory.preadditive.exact_iff_homology_zero Added src/algebra/homology/homological_complex.lean + def chain_complex.mk' + theorem chain_complex.mk'_X_0 + theorem chain_complex.mk'_X_1 + theorem chain_complex.mk'_d_1_0 + def chain_complex.mk + theorem chain_complex.mk_X_0 + theorem chain_complex.mk_X_1 + theorem chain_complex.mk_X_2 + def chain_complex.mk_aux + theorem chain_complex.mk_d_1_0 + theorem chain_complex.mk_d_2_0 + def chain_complex.mk_hom + def chain_complex.mk_hom_aux + theorem chain_complex.mk_hom_f_0 + theorem chain_complex.mk_hom_f_1 + theorem chain_complex.mk_hom_f_succ_succ + def chain_complex.mk_struct.flat + structure chain_complex.mk_struct + theorem chain_complex.next + theorem chain_complex.next_nat_succ + theorem chain_complex.next_nat_zero + def chain_complex.of + theorem chain_complex.of_X + theorem chain_complex.of_d + theorem chain_complex.prev + def chain_complex + theorem cochain_complex.next + theorem cochain_complex.prev + theorem cochain_complex.prev_nat_succ + theorem cochain_complex.prev_nat_zero + def cochain_complex + def homological_complex.X_next + def homological_complex.X_next_iso + def homological_complex.X_next_iso_zero + def homological_complex.X_prev + def homological_complex.X_prev_iso + theorem homological_complex.X_prev_iso_comp_d_to + def homological_complex.X_prev_iso_zero + theorem homological_complex.X_prev_iso_zero_comp_d_to + def homological_complex.comp + theorem homological_complex.comp_f + theorem homological_complex.congr_hom + theorem homological_complex.d_comp_eq_to_hom + def homological_complex.d_from + theorem homological_complex.d_from_comp_X_next_iso + theorem homological_complex.d_from_comp_X_next_iso_zero + theorem homological_complex.d_from_eq + theorem homological_complex.d_from_eq_zero + def homological_complex.d_to + theorem homological_complex.d_to_comp_d_from + theorem homological_complex.d_to_eq + theorem homological_complex.d_to_eq_zero + theorem homological_complex.eq_to_hom_comp_d + def homological_complex.eval_at + theorem homological_complex.hom.comm_from + theorem homological_complex.hom.comm_to + def homological_complex.hom.next + theorem homological_complex.hom.next_eq + def homological_complex.hom.prev + theorem homological_complex.hom.prev_eq + def homological_complex.hom.sq_from + theorem homological_complex.hom.sq_from_comp + theorem homological_complex.hom.sq_from_id + theorem homological_complex.hom.sq_from_left + theorem homological_complex.hom.sq_from_right + def homological_complex.hom.sq_to + theorem homological_complex.hom.sq_to_left + theorem homological_complex.hom.sq_to_right + structure homological_complex.hom + theorem homological_complex.hom_f_injective + def homological_complex.id + theorem homological_complex.id_f + theorem homological_complex.image_eq_image + theorem homological_complex.image_to_eq_image + theorem homological_complex.kernel_eq_kernel + theorem homological_complex.kernel_from_eq_kernel + theorem homological_complex.zero_apply + structure homological_complex Modified src/algebra/homology/homology.lean + def boundaries_functor + def boundaries_map + def boundaries_to_cycles_nat_trans + theorem boundaries_to_cycles_naturality - def cochain_complex.cohomology - def cochain_complex.cohomology_group - def cochain_complex.cohomology_map - def cochain_complex.graded_cohomology + def cycles_functor + def cycles_map + theorem cycles_map_arrow + theorem cycles_map_comp + theorem cycles_map_id + def graded_homology_functor + def homological_complex.boundaries + theorem homological_complex.boundaries_eq_bot + theorem homological_complex.boundaries_eq_image_subobject + def homological_complex.boundaries_iso_image + theorem homological_complex.boundaries_le_cycles + def homological_complex.boundaries_to_cycles + theorem homological_complex.boundaries_to_cycles_arrow + def homological_complex.cycles + theorem homological_complex.cycles_arrow_d_from + theorem homological_complex.cycles_eq_kernel_subobject + theorem homological_complex.cycles_eq_top + def homological_complex.cycles_iso_kernel - def homological_complex.graded_homology +/- def homological_complex.homology - def homological_complex.homology_group - def homological_complex.homology_map - theorem homological_complex.homology_map_comp - theorem homological_complex.homology_map_condition - theorem homological_complex.homology_map_id - def homological_complex.image_map - theorem homological_complex.image_map_ι + theorem homological_complex.image_to_kernel_as_boundaries_to_cycles - def homological_complex.image_to_kernel_map - theorem homological_complex.image_to_kernel_map_comp_kernel_map - theorem homological_complex.image_to_kernel_map_condition - def homological_complex.kernel_functor - def homological_complex.kernel_map - theorem homological_complex.kernel_map_comp - theorem homological_complex.kernel_map_condition - theorem homological_complex.kernel_map_id + def homology_functor Added src/algebra/homology/image_to_kernel.lean + theorem factor_thru_image_subobject_comp_image_to_kernel + theorem homology.condition + def homology.congr + def homology.desc + theorem homology.ext + def homology.map + theorem homology.map_desc + def homology.π + theorem homology.π_desc + theorem homology.π_map + def homology + def homology_zero_zero + theorem image_le_kernel + theorem image_subobject_map_comp_image_to_kernel + def image_to_kernel + theorem image_to_kernel_arrow + theorem image_to_kernel_comp_hom_inv_comp + theorem image_to_kernel_comp_left + theorem image_to_kernel_comp_mono + theorem image_to_kernel_comp_right + theorem image_to_kernel_epi_comp + theorem image_to_kernel_zero_left + theorem image_to_kernel_zero_right + theorem subobject_of_le_as_image_to_kernel Deleted src/algebra/homology/image_to_kernel_map.lean - def category_theory.image_to_kernel_map - theorem category_theory.image_to_kernel_map_comp_hom_inv_comp - theorem category_theory.image_to_kernel_map_comp_iso - theorem category_theory.image_to_kernel_map_comp_left - theorem category_theory.image_to_kernel_map_comp_right - theorem category_theory.image_to_kernel_map_epi_of_epi_of_zero - theorem category_theory.image_to_kernel_map_epi_of_zero_of_mono - theorem category_theory.image_to_kernel_map_iso_comp - theorem category_theory.image_to_kernel_map_zero_left - theorem category_theory.image_to_kernel_map_zero_right Modified src/category_theory/abelian/exact.lean - theorem category_theory.abelian.epi_iff_exact_zero_right + theorem category_theory.abelian.exact_iff'' + theorem category_theory.abelian.exact_tfae - theorem category_theory.abelian.mono_iff_exact_zero_left 2021-05-11 07:41:52 12c9ddf feat(set_theory/{pgame, surreal}): add `left_distrib_equiv` and `right_distrib_equiv` for pgames (#7440) and several other auxiliary lemmas. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Surreal.20numbers) ESTIMATED CHANGES Modified src/set_theory/game.lean +/- theorem game.le_refl +/- theorem game.le_trans + theorem game.quot_add + theorem game.quot_neg + theorem game.quot_sub +/- def game Modified src/set_theory/pgame.lean + theorem pgame.add_right_neg_equiv + theorem pgame.equiv_of_mk_equiv + theorem pgame.sub_congr Modified src/set_theory/surreal.lean - def pgame.add_comm_sub_relabelling - def pgame.add_sub_relabelling + theorem pgame.left_distrib_equiv + theorem pgame.left_distrib_equiv_aux' + theorem pgame.left_distrib_equiv_aux +/- theorem pgame.mul_comm_equiv +/- theorem pgame.mul_zero_equiv + theorem pgame.right_distrib_equiv +/- theorem pgame.zero_mul_equiv 2021-05-11 05:55:39 ca4024b feat(algebraic_topology/cech_nerve): Adds a definition of the Cech nerve associated to an arrow. (#7547) Also adds a definition of augmented simplicial objects as a comma category. ESTIMATED CHANGES Added src/algebraic_topology/cech_nerve.lean + def category_theory.arrow.augmented_cech_nerve + def category_theory.arrow.cech_nerve + def simplicial_object.augmented_cech_nerve + def simplicial_object.cech_nerve Modified src/algebraic_topology/simplicial_object.lean + def category_theory.simplicial_object.augmented + def category_theory.simplicial_object.const Modified src/category_theory/limits/shapes/wide_pullbacks.lean 2021-05-11 04:39:37 8dc848c feat(ring_theory/finiteness): add finite_type_iff_group_fg (#7569) We add here a simple modification of `monoid_algebra.fg_of_finite_type`: a group algebra is of finite type if and only if the group is finitely generated (as group opposed to as monoid). ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem add_monoid_algebra.finite_type_iff_group_fg + theorem monoid_algebra.finite_type_iff_group_fg 2021-05-11 01:49:43 fab4197 chore(scripts): update nolints.txt (#7570) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-05-10 22:45:44 3fd7cc3 feat(ring_theory/hahn_series): extend the domain of a Hahn series by an `order_embedding` (#7551) Defines `hahn_series.emb_domain`, which extends the domain of a Hahn series by embedding it into a larger domain in an order-preserving way. Bundles `hahn_series.emb_domain` with additional properties as `emb_domain_linear_map`, `emb_domain_ring_hom`, and `emb_domain_alg_hom` under additional conditions. Defines the ring homomorphism `hahn_series.of_power_series` and the algebra homomorphism `hahn_series.of_power_series_alg`, which map power series to Hahn series over an ordered semiring using `hahn_series.emb_domain` with `nat.cast` as the embedding. ESTIMATED CHANGES Modified src/ring_theory/hahn_series.lean + def hahn_series.emb_domain + def hahn_series.emb_domain_alg_hom + theorem hahn_series.emb_domain_coeff + theorem hahn_series.emb_domain_injective + def hahn_series.emb_domain_linear_map + theorem hahn_series.emb_domain_mk_coeff + theorem hahn_series.emb_domain_notin_image_support + theorem hahn_series.emb_domain_notin_range + def hahn_series.emb_domain_ring_hom + theorem hahn_series.emb_domain_ring_hom_C + theorem hahn_series.emb_domain_single + theorem hahn_series.emb_domain_zero + def hahn_series.of_power_series + def hahn_series.of_power_series_alg + theorem hahn_series.support_emb_domain_subset 2021-05-10 22:45:43 81c98d5 feat(ring_theory/hahn_series): Hahn series form a field (#7495) Uses Higman's Lemma to define `summable_family.powers`, a summable family consisting of the powers of a Hahn series of positive valuation Uses `summable_family.powers` to define inversion on Hahn series over a field and linear-ordered value group, making the type of Hahn series a field. Shows that a Hahn series over an integral domain and linear-ordered value group `is_unit` if and only if its lowest coefficient is. ESTIMATED CHANGES Modified src/order/well_founded_set.lean + theorem set.is_pwo.submonoid_closure - theorem set.partially_well_ordered_on.image_of_monotone + theorem set.partially_well_ordered_on.image_of_monotone_on + theorem set.well_founded_on.induction Modified src/ring_theory/hahn_series.lean + theorem hahn_series.is_pwo_Union_support_powers + theorem hahn_series.is_unit_iff + theorem hahn_series.summable_family.coe_powers + theorem hahn_series.summable_family.emb_domain_succ_smul_powers + theorem hahn_series.summable_family.one_sub_self_mul_hsum_powers + def hahn_series.summable_family.powers + theorem hahn_series.unit_aux 2021-05-10 22:45:42 1cbb31d feat(analysis/normed_space/normed_group_hom): add lemmas (#7474) From LTE. Written by @PatrickMassot - [x] depends on: #7459 ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.comp_range + theorem normed_group_hom.incl_range + theorem normed_group_hom.norm_incl + theorem normed_group_hom.range_comp_incl_top 2021-05-10 16:44:24 b7ab74a feat(algebra/lie/weights): add lemma `root_space_comap_eq_weight_space` (#7565) ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.coe_incl' + theorem lie_subalgebra.coe_incl + def lie_subalgebra.incl' +/- def lie_subalgebra.incl Modified src/algebra/lie/submodule.lean + theorem lie_submodule.mem_comap Modified src/algebra/lie/weights.lean + theorem lie_algebra.root_space_comap_eq_weight_space +/- theorem lie_module.coe_weight_space_of_top 2021-05-10 16:44:23 ac1f3df chore(*): remove unnecessary `import tactic` (#7560) ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Modified src/category_theory/limits/kan_extension.lean Modified src/combinatorics/colex.lean Modified src/data/nat/fib.lean Modified src/data/set/constructions.lean Modified src/number_theory/arithmetic_function.lean Modified src/number_theory/divisors.lean Modified src/ring_theory/polynomial/symmetric.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean 2021-05-10 16:44:22 17cba54 feat(data/int/basic): sign raised to an odd power (#7559) Since sign is either -1, 0, or 1, it is unchanged when raised to an odd power. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.sign_pow_bit1 2021-05-10 16:44:21 3417ee0 chore(deprecated/group): relax monoid to mul_one_class (#7556) This fixes an annoyance where `monoid_hom.is_monoid_hom` didn't work on non-associative monoids. ESTIMATED CHANGES Modified src/data/dfinsupp.lean Modified src/deprecated/group.lean +/- theorem additive.is_add_monoid_hom +/- theorem is_monoid_hom.comp +/- theorem is_monoid_hom.of_mul +/- theorem multiplicative.is_monoid_hom 2021-05-10 16:44:20 477af65 feat(category_theory/limits/shapes/wide_pullbacks): Adds some wrappers around the (co)limit api for wide pullbacks/pushouts (#7546) This PR adds some wrappers (mostly abbreviations) around the (co)limit api specifically for wide pullbacks and wide pushouts. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/wide_pullbacks.lean + def category_theory.limits.has_wide_pullback + def category_theory.limits.has_wide_pushout + def category_theory.limits.wide_pullback.base + theorem category_theory.limits.wide_pullback.eq_lift_of_comp_eq + theorem category_theory.limits.wide_pullback.hom_eq_lift + theorem category_theory.limits.wide_pullback.hom_ext + def category_theory.limits.wide_pullback.lift + theorem category_theory.limits.wide_pullback.lift_base + theorem category_theory.limits.wide_pullback.lift_π + def category_theory.limits.wide_pullback.π + theorem category_theory.limits.wide_pullback.π_arrow + def category_theory.limits.wide_pullback + theorem category_theory.limits.wide_pushout.arrow_ι + def category_theory.limits.wide_pushout.desc + theorem category_theory.limits.wide_pushout.eq_desc_of_comp_eq + def category_theory.limits.wide_pushout.head + theorem category_theory.limits.wide_pushout.head_desc + theorem category_theory.limits.wide_pushout.hom_eq_desc + theorem category_theory.limits.wide_pushout.hom_ext + def category_theory.limits.wide_pushout.ι + theorem category_theory.limits.wide_pushout.ι_desc + def category_theory.limits.wide_pushout 2021-05-10 16:44:19 92395fd feat(data/list/rotate): is_rotated (#7299) `is_rotated l₁ l₂` or `l₁ ~r l₂` asserts that `l₁` and `l₂` are cyclic permutations of each other. This is defined by claiming that `∃ n, l.rotate n = l'`. ESTIMATED CHANGES Modified src/data/list/rotate.lean + theorem list.is_rotated.eqv + theorem list.is_rotated.mem_iff + theorem list.is_rotated.nodup_iff + theorem list.is_rotated.perm + theorem list.is_rotated.refl + theorem list.is_rotated.reverse + def list.is_rotated.setoid + theorem list.is_rotated.symm + theorem list.is_rotated.trans + def list.is_rotated + theorem list.is_rotated_comm + theorem list.is_rotated_concat + theorem list.is_rotated_iff_mem_map_range + theorem list.is_rotated_iff_mod + theorem list.is_rotated_nil_iff' + theorem list.is_rotated_nil_iff + theorem list.is_rotated_reverse_comm_iff + theorem list.is_rotated_reverse_iff + theorem list.nodup_rotate + theorem list.nth_le_rotate + theorem list.nth_le_rotate_one + theorem list.reverse_rotate + theorem list.rotate'_eq_drop_append_take - theorem list.rotate'_eq_take_append_drop + theorem list.rotate_eq_drop_append_take + theorem list.rotate_eq_drop_append_take_mod + theorem list.rotate_eq_iff + theorem list.rotate_eq_nil_iff + theorem list.rotate_eq_rotate - theorem list.rotate_eq_take_append_drop + theorem list.rotate_injective + theorem list.rotate_perm + theorem list.rotate_singleton + theorem list.zip_with_rotate_distrib + theorem list.zip_with_rotate_one 2021-05-10 13:15:31 41c7b1e chore(category_theory/Fintype): remove redundant lemmas (#7531) These lemmas exist for arbitrary concrete categories. - [x] depends on: #7530 ESTIMATED CHANGES Modified src/category_theory/Fintype.lean - theorem Fintype.coe_comp - theorem Fintype.coe_id - theorem Fintype.comp_apply - theorem Fintype.id_apply 2021-05-10 13:15:30 b9f4420 feat(geometry/euclidean/triangle): add Stewart's Theorem + one similarity lemma (#7327) ESTIMATED CHANGES Modified src/geometry/euclidean/triangle.lean + theorem euclidean_geometry.dist_mul_of_eq_angle_of_dist_mul + theorem euclidean_geometry.dist_sq_add_dist_sq_eq_two_mul_dist_midpoint_sq_add_half_dist_sq + theorem euclidean_geometry.dist_sq_mul_dist_add_dist_sq_mul_dist 2021-05-10 13:15:28 03b88c1 feat(algebra/category/Module): Free R C, the free R-linear completion of a category (#7177) The free R-linear completion of a category. ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean + def category_theory.Free.embedding + def category_theory.Free.embedding_lift_iso + def category_theory.Free.ext + def category_theory.Free.lift + theorem category_theory.Free.lift_map_single + def category_theory.Free.lift_unique + def category_theory.Free.of + theorem category_theory.Free.single_comp_single + def category_theory.Free Modified src/category_theory/preadditive/additive_functor.lean + theorem category_theory.functor.map_gsmul Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.comp_gsmul + theorem category_theory.preadditive.gsmul_comp Modified src/linear_algebra/tensor_product.lean 2021-05-10 07:36:17 48104c3 feat(data/set/lattice): (b)Union and (b)Inter lemmas (#7557) from LTE ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Union_prop + theorem set.Union_prop_neg + theorem set.Union_prop_pos + theorem set.bInter_inter + theorem set.inter_bInter + theorem set.mem_bUnion_iff' 2021-05-10 07:36:16 b577697 feat(data/matrix/basic): add missing smul instances, generalize lemmas to work on scalar towers (#7544) This also fixes the `add_monoid_hom.map_zero` etc lemmas to not require overly strong typeclasses on `α` This removes the `matrix.smul_apply` lemma since `pi.smul_apply` and `smul_eq_mul` together replace it. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- def add_monoid_hom.map_matrix +/- theorem add_monoid_hom.map_matrix_apply +/- theorem matrix.add_equiv_map_zero +/- theorem matrix.add_monoid_hom_map_zero +/- theorem matrix.diagonal_map +/- theorem matrix.dot_product_smul +/- theorem matrix.linear_equiv_map_zero +/- theorem matrix.linear_map_map_zero +/- def matrix.map +/- theorem matrix.map_add +/- theorem matrix.map_apply +/- theorem matrix.map_mul +/- theorem matrix.map_sub +/- theorem matrix.map_zero +/- theorem matrix.mul_smul +/- theorem matrix.one_map +/- theorem matrix.ring_equiv_map_one +/- theorem matrix.ring_equiv_map_zero +/- theorem matrix.ring_hom_map_one +/- theorem matrix.ring_hom_map_zero - theorem matrix.smul_apply +/- theorem matrix.smul_dot_product +/- theorem matrix.smul_mul +/- theorem matrix.star_apply +/- theorem matrix.star_mul +/- theorem matrix.transpose_map +/- theorem matrix.zero_hom_map_zero +/- def ring_hom.map_matrix - theorem ring_hom.map_matrix_apply Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/polynomial_algebra.lean 2021-05-10 07:36:15 38bf2ab feat(field_theory/abel_ruffini): Version of solvable_by_rad.is_solvable (#7509) This is a version of `solvable_by_rad.is_solvable`, which will be the final step of the abel-ruffini theorem. ESTIMATED CHANGES Modified src/field_theory/abel_ruffini.lean + theorem solvable_by_rad.is_solvable' Modified src/field_theory/minpoly.lean + theorem minpoly.unique'' 2021-05-10 07:36:14 ef90a7a refactor(*): bundle `is_basis` (#7496) This PR replaces the definition of a basis used in mathlib and fixes the usages throughout. Rationale: Previously, `is_basis` was a predicate on a family of vectors, saying this family is linear independent and spans the whole space. We encountered many small annoyances when working with these unbundled definitions, for example complicated `is_basis` arguments being hidden in the goal view or slow elaboration when mapping a basis to a slightly different set of basis vectors. The idea to turn `basis` into a bundled structure originated in the discussion on #4949. @digama0 suggested on Zulip to identify these "bundled bases" with their map `repr : M ≃ₗ[R] (ι →₀ R)` that sends a vector to its coordinates. (In fact, that specific map used to be only a `linear_map` rather than an equiv.) Overview of the changes: - The `is_basis` predicate has been replaced with the `basis` structure. - Parameters of the form `{b : ι → M} (hb : is_basis R b)` become a single parameter `(b : basis ι R M)`. - Constructing a basis from a linear independent family spanning the whole space is now spelled `basis.mk hli hspan`, instead of `and.intro hli hspan`. - You can also use `basis.of_repr` to construct a basis from an equivalence `e : M ≃ₗ[R] (ι →₀ R)`. If `ι` is a `fintype`, you can use `basis.of_equiv_fun (e : M ≃ₗ[R] (ι → R))` instead, saving you from having to work with `finsupp`s. - Most declaration names that used to contain `is_basis` are now spelled with `basis`, e.g. `pi.is_basis_fun` is now `pi.basis_fun`. - Theorems of the form `exists_is_basis K V : ∃ (s : set V) (b : s -> V), is_basis K b` and `finite_dimensional.exists_is_basis_finset K V : [finite_dimensional K V] -> ∃ (s : finset V) (b : s -> V), is_basis K b` have been replaced with (noncomputable) defs such as `basis.of_vector_space K V : basis (basis.of_vector_space_index K V) K V` and `finite_dimensional.finset_basis : basis (finite_dimensional.finset_basis_index K V) K V`; the indexing sets being a separate definition means we can declare a `fintype (basis.of_vector_space_index K V)` instance on finite dimensional spaces, rather than having to use `cases exists_is_basis_fintype K V with ...` each time. - Definitions of a `basis` are now, wherever practical, accompanied by `simp` lemmas giving the values of `coe_fn` and `repr` for that basis. - Some auxiliary results like `pi.is_basis_fun₀` have been removed since they are no longer needed. Basic API overview: * `basis ι R M` is the type of `ι`-indexed `R`-bases for a module `M`, represented by a linear equiv `M ≃ₗ[R] ι →₀ R`. * the basis vectors of a basis `b` are given by `b i` for `i : ι` * `basis.repr` is the isomorphism sending `x : M` to its coordinates `basis.repr b x : ι →₀ R`. The inverse of `b.repr` is `finsupp.total _ _ _ b`. The converse, turning this isomorphism into a basis, is called `basis.of_repr`. * If `ι` is finite, there is a variant of `repr` called `basis.equiv_fun b : M ≃ₗ[R] ι → R`. The converse, turning this isomorphism into a basis, is called `basis.of_equiv_fun`. * `basis.constr hv f` constructs a linear map `M₁ →ₗ[R] M₂` given the values `f : ι → M₂` at the basis elements `⇑b : ι → M₁`. * `basis.mk`: a linear independent set of vectors spanning the whole module determines a basis (the converse consists of `basis.linear_independent` and `basis.span_eq` * `basis.ext` states that two linear maps are equal if they coincide on a basis; similar results are available for linear equivs (if they coincide on the basis vectors), elements (if their coordinates coincide) and the functions `b.repr` and `⇑b`. * `basis.of_vector_space` states that every vector space has a basis. * `basis.reindex` uses an equiv to map a basis to a different indexing set, `basis.map` uses a linear equiv to map a basis to a different module Zulip discussions: * https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Bundled.20basis * https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.234949 ESTIMATED CHANGES Modified archive/sensitivity.lean Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/algebra/module/basic.lean + theorem smul_right_injective Modified src/algebra/module/projective.lean +/- theorem is_projective.of_free Modified src/analysis/normed_space/finite_dimension.lean + theorem basis.coe_constrL + def basis.constrL + theorem basis.constrL_apply + theorem basis.constrL_basis + def basis.equiv_funL + theorem basis.op_norm_le + theorem basis.sup_norm_le_norm +/- theorem continuous_equiv_fun_basis - theorem is_basis.coe_constrL - def is_basis.constrL - theorem is_basis.constrL_apply - theorem is_basis.constrL_basis - def is_basis.equiv_funL - theorem is_basis.op_norm_le - theorem is_basis.sup_norm_le_norm Modified src/analysis/normed_space/inner_product.lean + def basis.isometry_euclidean_of_orthonormal + def basis_of_orthonormal_of_card_eq_finrank + theorem coe_basis_of_orthonormal_of_card_eq_finrank + theorem coe_orthonormal_basis - theorem exists_is_orthonormal_basis' - theorem exists_is_orthonormal_basis + def fin_orthonormal_basis + theorem fin_orthonormal_basis_orthonormal - def is_basis.isometry_euclidean_of_orthonormal - theorem is_basis_of_orthonormal_of_card_eq_finrank + theorem maximal_orthonormal_iff_basis_of_finite_dimensional - theorem maximal_orthonormal_iff_is_basis_of_finite_dimensional + def orthonormal_basis + def orthonormal_basis_index + theorem orthonormal_basis_orthonormal Modified src/data/complex/module.lean + def complex.basis_one_I + theorem complex.coe_basis_one_I + theorem complex.coe_basis_one_I_repr - theorem complex.is_basis_one_I Modified src/field_theory/adjoin.lean - theorem intermediate_field.power_basis_is_basis Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/normal.lean Modified src/field_theory/tower.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/basis.lean + theorem basis.apply_eq_iff + theorem basis.basis_singleton_iff + theorem basis.coe_extend + theorem basis.coe_mk + theorem basis.coe_of_equiv_fun + theorem basis.coe_of_repr + theorem basis.coe_of_vector_space + theorem basis.coe_reindex + theorem basis.coe_reindex_repr + theorem basis.coe_repr_symm + def basis.constr + theorem basis.constr_apply + theorem basis.constr_apply_fintype + theorem basis.constr_basis + theorem basis.constr_def + theorem basis.constr_eq + theorem basis.constr_range + theorem basis.constr_self + def basis.coord + theorem basis.empty_unique + theorem basis.eq_of_apply_eq + theorem basis.eq_of_repr_eq_repr + def basis.equiv' + theorem basis.equiv'_apply + theorem basis.equiv'_symm_apply + theorem basis.equiv_apply + def basis.equiv_fun + theorem basis.equiv_fun_apply + theorem basis.equiv_fun_self + theorem basis.equiv_fun_symm_apply + theorem basis.equiv_refl + theorem basis.equiv_symm + theorem basis.equiv_trans + theorem basis.exists_basis + theorem basis.ext' + theorem basis.ext + theorem basis.ext_elem + theorem basis.extend_apply_self + theorem basis.finsupp.single_apply_left + theorem basis.forall_coord_eq_zero_iff + theorem basis.map_apply + theorem basis.mk_apply + theorem basis.mk_repr + def basis.of_equiv_fun + theorem basis.of_equiv_fun_repr_apply + theorem basis.of_vector_space_apply_self + theorem basis.of_vector_space_index.linear_independent + theorem basis.prod_apply + theorem basis.prod_apply_inl_fst + theorem basis.prod_apply_inl_snd + theorem basis.prod_apply_inr_fst + theorem basis.prod_apply_inr_snd + theorem basis.prod_repr_inl + theorem basis.prod_repr_inr + theorem basis.range_extend + theorem basis.range_of_vector_space + theorem basis.range_reindex' + theorem basis.range_reindex + def basis.reindex + theorem basis.reindex_apply + def basis.reindex_range + theorem basis.reindex_range_apply + theorem basis.reindex_range_repr' + theorem basis.reindex_range_repr + theorem basis.reindex_range_repr_self + theorem basis.reindex_range_self + theorem basis.reindex_repr + theorem basis.repr_apply_eq + theorem basis.repr_eq_iff' + theorem basis.repr_eq_iff + theorem basis.repr_range + theorem basis.repr_self + theorem basis.repr_self_apply + theorem basis.repr_symm_apply + theorem basis.repr_symm_single + theorem basis.repr_symm_single_one + theorem basis.repr_total + theorem basis.singleton_apply + theorem basis.singleton_repr + theorem basis.subset_extend + theorem basis.sum_equiv_fun + theorem basis.sum_repr + theorem basis.total_repr + structure basis - theorem constr_add - theorem constr_basis - theorem constr_eq - theorem constr_neg - theorem constr_range - theorem constr_self - theorem constr_smul - theorem constr_sub - theorem constr_zero - theorem exists_is_basis - theorem exists_subset_is_basis - theorem exists_sum_is_basis - theorem is_basis.comp - def is_basis.constr - theorem is_basis.constr_apply - theorem is_basis.constr_apply_fintype - def is_basis.equiv_fun - theorem is_basis.equiv_fun_apply - theorem is_basis.equiv_fun_self - theorem is_basis.equiv_fun_symm_apply - theorem is_basis.equiv_fun_total - theorem is_basis.ext - theorem is_basis.ext_elem - theorem is_basis.injective - theorem is_basis.mem_span - theorem is_basis.no_zero_smul_divisors - theorem is_basis.range - theorem is_basis.range_repr - theorem is_basis.range_repr_self - def is_basis.repr - theorem is_basis.repr_apply_eq - theorem is_basis.repr_eq_iff - theorem is_basis.repr_eq_single - theorem is_basis.repr_eq_zero - theorem is_basis.repr_ker - theorem is_basis.repr_range - theorem is_basis.repr_self_apply - theorem is_basis.repr_total - theorem is_basis.smul_eq_zero - theorem is_basis.total_comp_repr - theorem is_basis.total_repr - def is_basis - theorem is_basis_empty - theorem is_basis_inl_union_inr - theorem is_basis_singleton_iff - theorem is_basis_singleton_one - theorem is_basis_span - def linear_equiv_of_is_basis' - def linear_equiv_of_is_basis - theorem linear_equiv_of_is_basis_comp - theorem linear_equiv_of_is_basis_refl - theorem linear_equiv_of_is_basis_symm_trans - theorem linear_equiv_of_is_basis_trans_symm - def module_equiv_finsupp - theorem module_equiv_finsupp_apply_basis Modified src/linear_algebra/bilinear_form.lean + theorem basis.equiv_fun_symm_std_basis +/- theorem bilin_form.comp_left_injective +/- theorem bilin_form.is_adjoint_pair_unique_of_nondegenerate +/- theorem bilin_form.le_orthogonal_orthogonal +/- theorem bilin_form.restrict_sym +/- theorem bilin_form.to_dual_def + theorem bilin_form.to_matrix_basis_fun - theorem bilin_form.to_matrix_is_basis_fun - theorem is_basis.equiv_fun_symm_std_basis + theorem matrix.to_bilin_basis_fun - theorem matrix.to_bilin_is_basis_fun Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/dimension.lean + theorem basis.finite_index_of_dim_lt_omega + theorem basis.finite_of_vector_space_index_of_dim_lt_omega + theorem basis.le_span + theorem basis.mk_eq_dim'' + theorem basis.mk_eq_dim + theorem basis.mk_range_eq_dim + theorem basis.nonempty_fintype_index_of_dim_lt_omega + def basis.of_dim_eq_zero' + theorem basis.of_dim_eq_zero'_apply + def basis.of_dim_eq_zero + theorem basis.of_dim_eq_zero_apply - theorem exists_is_basis_fintype - theorem is_basis.le_span - theorem is_basis.mk_eq_dim'' - theorem is_basis.mk_eq_dim - theorem is_basis.mk_range_eq_dim - theorem is_basis_of_dim_eq_zero' - theorem is_basis_of_dim_eq_zero +/- theorem mk_eq_mk_of_basis' +/- theorem mk_eq_mk_of_basis +/- theorem {m} Modified src/linear_algebra/dual.lean + theorem basis.coe_dual_basis + theorem basis.coe_to_dual_self + def basis.dual_basis + theorem basis.dual_basis_apply + theorem basis.dual_basis_apply_self + theorem basis.dual_basis_equiv_fun + theorem basis.dual_basis_repr + theorem basis.dual_dim_eq + def basis.to_dual + theorem basis.to_dual_apply + theorem basis.to_dual_apply_left + theorem basis.to_dual_apply_right + theorem basis.to_dual_eq_equiv_fun + theorem basis.to_dual_eq_repr + def basis.to_dual_equiv + def basis.to_dual_flip + theorem basis.to_dual_flip_apply + theorem basis.to_dual_inj + theorem basis.to_dual_ker + theorem basis.to_dual_range + theorem basis.to_dual_to_dual + theorem basis.to_dual_total_left + theorem basis.to_dual_total_right + theorem basis.total_coord + theorem basis.total_dual_basis + def dual_pair.basis + theorem dual_pair.coe_basis + theorem dual_pair.coe_dual_basis - theorem dual_pair.decomposition - theorem dual_pair.eq_dual - theorem dual_pair.is_basis + theorem dual_pair.lc_coeffs + theorem dual_pair.lc_def - def is_basis.coord_fun - theorem is_basis.coord_fun_eq_repr - def is_basis.dual_basis - theorem is_basis.dual_basis_apply - theorem is_basis.dual_basis_apply_self - theorem is_basis.dual_basis_equiv_fun - theorem is_basis.dual_basis_is_basis - theorem is_basis.dual_basis_repr - theorem is_basis.dual_dim_eq - theorem is_basis.dual_lin_independent - def is_basis.to_dual - theorem is_basis.to_dual_apply - theorem is_basis.to_dual_apply_left - theorem is_basis.to_dual_apply_right - theorem is_basis.to_dual_eq_equiv_fun - theorem is_basis.to_dual_eq_repr - def is_basis.to_dual_equiv - def is_basis.to_dual_flip - theorem is_basis.to_dual_inj - theorem is_basis.to_dual_ker - theorem is_basis.to_dual_range - theorem is_basis.to_dual_swap_eq_to_dual - theorem is_basis.to_dual_to_dual - theorem is_basis.to_dual_total_left - theorem is_basis.to_dual_total_right - theorem is_basis.total_dual_basis Modified src/linear_algebra/finite_dimensional.lean + theorem coe_basis_of_linear_independent_of_card_eq_finrank + theorem coe_basis_of_span_eq_top_of_card_eq_finrank + theorem coe_finset_basis_of_linear_independent_of_card_eq_finrank + theorem coe_set_basis_of_linear_independent_of_card_eq_finrank + theorem finite_dimensional.basis.subset_extend + theorem finite_dimensional.basis_singleton_apply + theorem finite_dimensional.basis_unique.repr_eq_zero_iff + theorem finite_dimensional.coe_finset_basis_index +/- theorem finite_dimensional.dim_eq_card_basis - theorem finite_dimensional.equiv_fin - theorem finite_dimensional.equiv_fin_of_dim_eq - theorem finite_dimensional.exists_is_basis_finite - theorem finite_dimensional.exists_is_basis_finset - theorem finite_dimensional.exists_is_basis_singleton - theorem finite_dimensional.fin_basis + theorem finite_dimensional.finite_basis_index +/- theorem finite_dimensional.finrank_eq_card_basis' +/- theorem finite_dimensional.finrank_eq_card_basis +/- theorem finite_dimensional.finrank_eq_card_finset_basis +/- theorem finite_dimensional.of_finite_basis +/- theorem finite_dimensional.of_finset_basis +/- theorem finite_dimensional.of_fintype_basis + theorem finite_dimensional.range_basis_singleton + theorem finite_dimensional.range_finset_basis +/- theorem finrank_eq_one_iff + theorem finrank_eq_zero_of_basis_imp_false + theorem finrank_eq_zero_of_basis_imp_not_finite + theorem finrank_eq_zero_of_not_exists_basis_finite - theorem finset_is_basis_of_linear_independent_of_card_eq_finrank - theorem finset_is_basis_of_span_eq_top_of_card_eq_finrank - theorem is_basis_of_finrank_zero' - theorem is_basis_of_finrank_zero - theorem is_basis_of_linear_independent_of_card_eq_finrank - theorem is_basis_of_span_eq_top_of_card_eq_finrank - theorem set_is_basis_of_linear_independent_of_card_eq_finrank - theorem set_is_basis_of_span_eq_top_of_card_eq_finrank - theorem singleton_is_basis Modified src/linear_algebra/finsupp.lean + theorem finsupp.dom_lcongr_apply Modified src/linear_algebra/finsupp_vector_space.lean + def finsupp.basis.tensor_product + theorem finsupp.basis_repr + theorem finsupp.coe_basis + theorem finsupp.coe_basis_single_one - theorem finsupp.is_basis.tensor_product - theorem finsupp.is_basis_single - theorem finsupp.is_basis_single_one Modified src/linear_algebra/free_algebra.lean - theorem free_algebra.is_basis_free_monoid Modified src/linear_algebra/free_module.lean + theorem basis.card_le_card_of_linear_independent + theorem basis.card_le_card_of_linear_independent_aux +/- theorem eq_bot_of_generator_maximal_map_eq_zero +/- theorem eq_bot_of_rank_eq_zero - theorem is_basis.card_le_card_of_linear_independent - theorem is_basis.card_le_card_of_linear_independent_aux - theorem module.free_of_finite_type_torsion_free' - theorem module.free_of_finite_type_torsion_free - theorem submodule.exists_is_basis - theorem submodule.exists_is_basis_of_le - theorem submodule.exists_is_basis_of_le_span +/- def submodule.induction_on_rank +/- def submodule.induction_on_rank_aux Modified src/linear_algebra/invariant_basis_number.lean Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.extend_subset + theorem linear_independent.linear_independent_extend + theorem linear_independent.subset_extend + theorem linear_independent.subset_span_extend Modified src/linear_algebra/matrix.lean +/- theorem algebra.left_mul_matrix_injective + def basis.det + theorem basis.det_apply + theorem basis.det_self + theorem basis.sum_to_matrix_smul_self + theorem basis.to_lin_to_matrix + def basis.to_matrix + theorem basis.to_matrix_apply + theorem basis.to_matrix_eq_to_matrix_constr + def basis.to_matrix_equiv + theorem basis.to_matrix_mul_to_matrix + theorem basis.to_matrix_self + theorem basis.to_matrix_transpose_apply + theorem basis.to_matrix_update + theorem basis_to_matrix_mul_linear_map_to_matrix - def is_basis.det - theorem is_basis.det_apply - theorem is_basis.det_self +/- theorem is_basis.iff_det - theorem is_basis.sum_to_matrix_smul_self - theorem is_basis.to_lin_to_matrix - def is_basis.to_matrix - theorem is_basis.to_matrix_apply - theorem is_basis.to_matrix_eq_to_matrix_constr - def is_basis.to_matrix_equiv - theorem is_basis.to_matrix_mul_to_matrix - theorem is_basis.to_matrix_self - theorem is_basis.to_matrix_transpose_apply - theorem is_basis.to_matrix_update - theorem is_basis_to_matrix_mul_linear_map_to_matrix +/- theorem linear_equiv.is_unit_det +/- def linear_equiv.of_is_unit_det +/- theorem linear_map.to_matrix_alg_equiv_id - theorem linear_map.to_matrix_alg_equiv_range + theorem linear_map.to_matrix_alg_equiv_reindex_range +/- theorem linear_map.to_matrix_id +/- theorem linear_map.to_matrix_one - theorem linear_map.to_matrix_range + theorem linear_map.to_matrix_reindex_range - theorem linear_map.to_matrix_symm_transpose +/- def linear_map.trace +/- def linear_map.trace_aux +/- theorem linear_map.trace_aux_def - theorem linear_map.trace_aux_eq' +/- theorem linear_map.trace_aux_eq - theorem linear_map.trace_aux_range + theorem linear_map.trace_aux_reindex_range +/- theorem linear_map.trace_eq_matrix_trace + theorem linear_map.trace_eq_matrix_trace_of_finite_set +/- theorem linear_map.trace_mul_comm + theorem linear_map_to_matrix_mul_basis_to_matrix - theorem linear_map_to_matrix_mul_is_basis_to_matrix +/- theorem matrix.to_lin_alg_equiv_one +/- theorem matrix.to_lin_one + theorem matrix.to_lin_transpose Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/std_basis.lean + theorem pi.basis_apply + theorem pi.basis_fun_apply + theorem pi.basis_fun_repr + theorem pi.basis_repr + theorem pi.basis_repr_std_basis - theorem pi.is_basis_fun - theorem pi.is_basis_fun_repr - theorem pi.is_basis_fun₀ - theorem pi.is_basis_std_basis Modified src/ring_theory/adjoin/power_basis.lean - theorem algebra.power_basis_is_basis Modified src/ring_theory/adjoin_root.lean + def adjoin_root.power_basis + def adjoin_root.power_basis_aux - theorem adjoin_root.power_basis_is_basis Modified src/ring_theory/algebra_tower.lean + theorem basis.smul_apply + theorem basis.smul_repr + theorem basis.smul_repr_mk - theorem is_basis.smul - theorem is_basis.smul_repr - theorem is_basis.smul_repr_mk Modified src/ring_theory/mv_polynomial/basic.lean + def mv_polynomial.basis_monomials + theorem mv_polynomial.coe_basis_monomials - theorem mv_polynomial.is_basis_monomials Modified src/ring_theory/power_basis.lean + theorem power_basis.coe_basis Modified src/ring_theory/trace.lean +/- theorem algebra.trace_eq_matrix_trace 2021-05-10 07:36:13 f985e36 feat(group_theory/subgroup): add mem_map_of_mem (#7459) From LTE. Written by @PatrickMassot ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.apply_coe_mem_map + theorem subgroup.mem_map_of_mem Modified src/group_theory/submonoid/operations.lean + theorem submonoid.apply_coe_mem_map +/- theorem submonoid.mem_map_of_mem Modified src/linear_algebra/basic.lean + theorem submodule.apply_coe_mem_map Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean 2021-05-10 07:36:12 4a8467a feat(data/equiv/basic): equiv.curry (#7458) This renames `equiv.arrow_arrow_equiv_prod_arrow` to `(equiv.curry _ _ _).symm` to make it easier to find and match `function.curry`. * `cardinal.power_mul` is swapped, so that its name makes sense. * renames `linear_equiv.uncurry` to `linear_equiv.curry` and swaps sides Also add `@[simps]` to two equivs. ESTIMATED CHANGES Modified src/data/equiv/basic.lean - def equiv.arrow_arrow_equiv_prod_arrow + def equiv.curry +/- def equiv.prod_punit +/- def equiv.punit_prod Modified src/linear_algebra/basic.lean + theorem linear_equiv.coe_curry + theorem linear_equiv.coe_curry_symm - theorem linear_equiv.coe_uncurry - theorem linear_equiv.coe_uncurry_symm Modified src/linear_algebra/matrix.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.power_mul Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean 2021-05-10 06:01:59 7150c90 refactor(ring_theory/localization): Golf two proofs (#7520) Golfing two proofs and changing their order. ESTIMATED CHANGES Modified src/ring_theory/localization.lean +/- theorem localization.at_prime.comap_maximal_ideal +/- theorem localization.at_prime.map_eq_maximal_ideal 2021-05-09 22:18:48 ea0043c feat(topology): tiny new lemmas (#7554) from LTE ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.eq_of_same_basis Modified src/topology/constructions.lean + theorem quotient.preimage_mem_nhds Modified src/topology/order.lean + theorem preimage_nhds_coinduced 2021-05-09 12:20:12 735a26e chore(group_theory): some new convenience lemmas (#7555) from LTE ESTIMATED CHANGES Modified src/group_theory/coset.lean Modified src/group_theory/quotient_group.lean + theorem quotient_group.coe_mk' + theorem quotient_group.mk'_apply Modified src/group_theory/subgroup.lean + theorem monoid_hom.eq_iff + theorem subgroup.div_mem_comm_iff Modified src/topology/algebra/group.lean 2021-05-09 12:20:10 581064f feat(uniform_space/cauchy): cauchy_seq lemmas (#7528) from the Liquid Tensor Experiment ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_measurable.lean Modified src/topology/instances/real.lean Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq.subseq_mem + theorem cauchy_seq.subseq_subseq_mem + theorem cauchy_seq_const + theorem cauchy_seq_iff' + theorem cauchy_seq_iff 2021-05-09 10:00:57 bf229dd feat(topology/metric_space/basic): dist_ne_zero (#7552) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem dist_ne_zero 2021-05-08 13:26:29 132328c feat(algebra/lie/weights): define weight spaces of Lie modules (#7537) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/lie/cartan_subalgebra.lean Added src/algebra/lie/character.lean + def lie_algebra.lie_character + theorem lie_algebra.lie_character_apply_lie + theorem lie_algebra.lie_character_apply_of_mem_derived + def lie_algebra.lie_character_equiv_linear_dual Modified src/algebra/lie/nilpotent.lean - theorem lie_algebra.nilpotent_iff_equiv_nilpotent + theorem lie_equiv.nilpotent_iff_equiv_nilpotent Modified src/algebra/lie/submodule.lean + theorem lie_submodule.mem_mk_iff + theorem lie_submodule.nontrivial_iff + theorem lie_submodule.subsingleton_iff Added src/algebra/lie/weights.lean + def lie_algebra.is_root + def lie_algebra.root_space + theorem lie_algebra.zero_root_space_eq_top_of_nilpotent + theorem lie_module.coe_weight_space_of_top + def lie_module.is_weight + theorem lie_module.is_weight_zero_of_nilpotent + theorem lie_module.lie_mem_pre_weight_space_of_mem_pre_weight_space + theorem lie_module.mem_pre_weight_space + theorem lie_module.mem_weight_space + def lie_module.pre_weight_space + def lie_module.weight_space + theorem lie_module.zero_weight_space_eq_top_of_nilpotent' + theorem lie_module.zero_weight_space_eq_top_of_nilpotent Modified src/data/nat/basic.lean + theorem nat.le_or_le_of_add_eq_add_pred Modified src/linear_algebra/basic.lean + theorem linear_map.commute_pow_left_of_commute + theorem linear_map.pow_map_zero_of_le 2021-05-08 08:13:59 4a8a595 feat(topology/subset_properties, homeomorph): lemmata about embeddings (#7431) Two lemmata: (i) embedding to homeomorphism (ii) a closed embedding is proper Coauthored with @hrmacbeth ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.self_comp_of_injective_symm Modified src/topology/homeomorph.lean Modified src/topology/subset_properties.lean + theorem closed_embedding.tendsto_cocompact 2021-05-08 05:52:42 583ad82 feat(algebraic_geometry/structure_sheaf): Structure sheaf on basic opens (#7405) Proves that `to_basic_open` is an isomorphism of commutative rings. Also adds Hartshorne as a reference. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebraic_geometry/structure_sheaf.lean + def algebraic_geometry.basic_open_iso + theorem algebraic_geometry.locally_const_basic_open + theorem algebraic_geometry.normalize_finite_fraction_representation + theorem algebraic_geometry.to_basic_open_injective + theorem algebraic_geometry.to_basic_open_surjective 2021-05-07 22:54:26 dbcd454 feat(topology/category/*): Add alternative explicit limit cones for `Top`, etc. and shows `X : Profinite` is a limit of finite sets. (#7448) This PR redefines `Top.limit_cone`, and defines similar explicit limit cones for `CompHaus` and `Profinite`. Using the definition with the subspace topology makes the proofs that the limit is compact, t2 and/or totally disconnected much easier. This also expresses any `X : Profinite` as a limit of its discrete quotients, which are all finite. ESTIMATED CHANGES Modified src/topology/category/CompHaus.lean + def CompHaus.limit_cone + def CompHaus.limit_cone_is_limit Added src/topology/category/Profinite/as_limit.lean + def Profinite.as_limit + def Profinite.as_limit_cone + def Profinite.as_limit_cone_iso + def Profinite.diagram + def Profinite.fintype_diagram + def Profinite.iso_as_limit_cone_lift + def Profinite.lim Renamed src/topology/category/Profinite.lean to src/topology/category/Profinite/default.lean + def Profinite.limit_cone + def Profinite.limit_cone_is_limit Modified src/topology/category/Top/limits.lean 2021-05-07 22:54:25 515fb2f feat(group_theory/perm/*): lemmas about `extend_domain`, `fin_rotate`, and `fin.cycle_type` (#7447) Shows how `disjoint`, `support`, `is_cycle`, and `cycle_type` behave under `extend_domain` Calculates `support` and `cycle_type` for `fin_rotate` and `fin.cycle_type` Shows that the normal closure of `fin_rotate 5` in `alternating_group (fin 5)` is the whole alternating group. ESTIMATED CHANGES Modified src/analysis/normed_space/hahn_banach.lean Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.cycle_type_extend_domain Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.is_cycle.extend_domain Modified src/group_theory/perm/fin.lean + theorem cycle_type_fin_rotate + theorem cycle_type_fin_rotate_of_le + theorem fin.cycle_type_cycle_range + theorem fin.is_cycle_cycle_range + theorem fin.is_three_cycle_cycle_range_two + theorem is_cycle_fin_rotate + theorem is_cycle_fin_rotate_of_le + theorem support_fin_rotate + theorem support_fin_rotate_of_le Modified src/group_theory/perm/sign.lean + theorem equiv.perm.disjoint.extend_domain Modified src/group_theory/perm/support.lean + theorem equiv.perm.card_support_extend_domain + theorem equiv.perm.support_extend_domain Modified src/group_theory/specific_groups/alternating.lean + theorem alternating_group.is_conj_of + theorem alternating_group.is_three_cycle_is_conj + theorem alternating_group.normal_closure_fin_rotate_five + theorem equiv.perm.fin_rotate_bit1_mem_alternating_group + theorem equiv.perm.is_three_cycle.alternating_normal_closure + theorem equiv.perm.is_three_cycle.mem_alternating_group Modified src/group_theory/subgroup.lean + theorem subgroup.subtype_range Modified src/linear_algebra/bilinear_form.lean 2021-05-07 20:26:33 5cfcb6a feat(ring_theory/hahn_series): order of a nonzero Hahn series, reindexing summable families (#7444) Defines `hahn_series.order`, the order of a nonzero Hahn series Restates `add_val` in terms of `hahn_series.order` Defines `hahn_series.summable_family.emb_domain`, reindexing a summable family using an embedding ESTIMATED CHANGES Modified src/algebra/big_operators/finprod.lean + theorem finprod_dmem + theorem finprod_emb_domain' + theorem finprod_emb_domain Modified src/ring_theory/hahn_series.lean + theorem hahn_series.C_injective + theorem hahn_series.C_ne_zero + theorem hahn_series.add_val_le_of_coeff_ne_zero - theorem hahn_series.coeff_min_ne_zero + theorem hahn_series.coeff_order_ne_zero + theorem hahn_series.min_order_le_order_add - theorem hahn_series.mul_coeff_min_add_min + theorem hahn_series.mul_coeff_order_add_order + theorem hahn_series.ne_zero_of_coeff_ne_zero + def hahn_series.order + theorem hahn_series.order_C + theorem hahn_series.order_le_of_coeff_ne_zero + theorem hahn_series.order_mul + theorem hahn_series.order_of_ne + theorem hahn_series.order_one + theorem hahn_series.order_single + theorem hahn_series.order_zero + theorem hahn_series.single_injective + theorem hahn_series.single_ne_zero + def hahn_series.summable_family.emb_domain + theorem hahn_series.summable_family.emb_domain_apply + theorem hahn_series.summable_family.emb_domain_image + theorem hahn_series.summable_family.emb_domain_notin_range + theorem hahn_series.summable_family.hsum_emb_domain + theorem hahn_series.summable_family.hsum_sub 2021-05-07 09:30:47 72e151d feat(topology/uniform_space): is_closed_of_spread_out (#7538) See [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/integers.20are.20closed.20in.20reals) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem ball_inter_left + theorem ball_inter_right + theorem uniform_space.mem_closure_iff_ball + theorem uniform_space.mem_closure_iff_symm_ball Modified src/topology/uniform_space/separation.lean + theorem eq_of_forall_symmetric + theorem eq_of_uniformity + theorem eq_of_uniformity_basis + theorem is_closed_of_spaced_out 2021-05-07 09:30:46 301542a feat(group_theory.quotient_group): add eq_iff_div_mem (#7523) From LTE. Written by @PatrickMassot ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + theorem quotient_group.eq_iff_div_mem + theorem quotient_group.eq_one_iff Modified src/group_theory/subgroup.lean + theorem subgroup.exists_inv_mem_iff_exists_mem 2021-05-07 09:30:45 63a1782 feat(field_theory/polynomial_galois_group): More flexible version of gal_action_hom_bijective_of_prime_degree (#7508) Since the number of non-real roots is even, we can make a more flexible version of `gal_action_hom_bijective_of_prime_degree`. This flexibility will be helpful when working with a specific polynomial. ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.gal_action_hom_bijective_of_prime_degree' +/- theorem polynomial.gal.gal_action_hom_bijective_of_prime_degree_aux Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.two_dvd_card_support 2021-05-07 09:30:44 565310f feat(data/nat/cast): pi.coe_nat and pi.nat_apply (#7492) ESTIMATED CHANGES Modified src/data/int/cast.lean + theorem pi.coe_int + theorem pi.int_apply Modified src/data/nat/cast.lean + theorem pi.coe_nat + theorem pi.nat_apply 2021-05-07 09:30:43 190d4e2 feat(algebra/module/basic): smul_add_hom_one (#7461) ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem smul_add_hom_one Modified src/group_theory/group_action/defs.lean + theorem const_smul_hom_one 2021-05-07 09:30:42 91d5aa6 feat(category_theory/arrow): arrow.mk_inj (#7456) From LTE ESTIMATED CHANGES Modified src/category_theory/arrow.lean + theorem category_theory.arrow.mk_inj + theorem category_theory.arrow.mk_injective 2021-05-07 09:30:40 6fc8b2a refactor(*): more choice-free proofs (#7455) Now that lean v3.30 has landed (and specifically leanprover-community/lean#560), we can finally make some progress on making a significant fraction of mathlib foundations choice-free. This PR does the following: * No existing theorem statements have changed (except `linear_nonneg_ring` as noted below). * A number of new theorems have been added to the `decidable` namespace, proving choice-free versions of lemmas under the assumption that something is decidable. These are primarily concentrated in partial orders and ordered rings, because total orders are already decidable, but there are some interesting lemmas about partial orders that require decidability of `le`. * `linear_nonneg_ring` was changed to include decidability of `nonneg`, for consistency with linear ordered rings. No one is using this anyway so there shouldn't be any fallout. * A lot of the `ordered_semiring` lemmas need `decidable` versions now because one of the core axioms, `mul_le_mul_of_nonneg_left`, is derived by LEM from an equivalent statement about lt instead of being an actual axiom. If this is refactored, these theorems can be removed again. * The main files which were scoured of choicy proofs are: `algebra.ordered_group`, `algebra.ordered_ring`, `data.nat.basic`, `data.int.basic`, `data.list.basic`, and `computability.halting`. * The end goal of this was to prove `computable_pred.halting_problem` without assuming choice, finally validating a claim I made more than two years ago in my [paper](https://arxiv.org/abs/1810.08380) on the formalization. I have not yet investigated a linter for making sure that these proofs stay choice-free; this can be done in a follow-up PR. ESTIMATED CHANGES Modified src/algebra/order.lean - theorem decidable.le_iff_le_iff_lt_iff_lt - theorem decidable.le_imp_le_iff_lt_imp_lt Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean Modified src/algebra/ordered_ring.lean +/- theorem add_le_mul_two_add - theorem decidable.mul_le_mul_left - theorem decidable.mul_le_mul_right +/- theorem le_mul_of_one_le_left +/- theorem le_mul_of_one_le_right +/- theorem le_of_mul_le_of_one_le +/- theorem lt_mul_of_one_lt_left +/- theorem lt_mul_of_one_lt_right +/- theorem mul_le_mul +/- theorem mul_le_mul_of_nonneg_left +/- theorem mul_le_mul_of_nonneg_right +/- theorem mul_le_mul_of_nonpos_left +/- theorem mul_le_mul_of_nonpos_right +/- theorem mul_le_of_le_one_left +/- theorem mul_le_of_le_one_right +/- theorem mul_le_one +/- theorem mul_lt_mul'' +/- theorem mul_lt_mul' +/- theorem mul_lt_mul +/- theorem mul_lt_one_of_nonneg_of_lt_one_left +/- theorem mul_lt_one_of_nonneg_of_lt_one_right +/- theorem mul_nonneg +/- theorem mul_nonneg_iff_right_nonneg_of_pos +/- theorem mul_nonneg_le_one_le +/- theorem mul_nonneg_of_nonpos_of_nonpos +/- theorem mul_nonpos_of_nonneg_of_nonpos +/- theorem mul_nonpos_of_nonpos_of_nonneg +/- def nonneg_ring.to_linear_nonneg_ring +/- theorem one_le_mul_of_one_le_of_one_le +/- theorem one_lt_mul +/- theorem one_lt_mul_of_le_of_lt +/- theorem one_lt_mul_of_lt_of_le +/- theorem ordered_ring.mul_le_mul_of_nonneg_left +/- theorem ordered_ring.mul_le_mul_of_nonneg_right +/- theorem ordered_ring.mul_nonneg Modified src/computability/halting.lean Modified src/computability/partrec.lean + theorem decidable.partrec.const' +/- theorem partrec.fix + theorem partrec.fix_aux +/- theorem partrec.sum_cases_left +/- theorem partrec.sum_cases_right Modified src/data/int/basic.lean + def int.greatest_of_bdd + def int.least_of_bdd Modified src/data/list/basic.lean + theorem decidable.list.eq_or_ne_mem_of_mem + theorem decidable.list.lex.ne_iff +/- theorem list.eq_or_ne_mem_of_mem +/- theorem list.lex.ne_iff Modified src/data/list/range.lean Modified src/data/nat/basic.lean +/- theorem nat.lt_of_div_lt_div Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/set/basic.lean Modified src/logic/nontrivial.lean Modified src/order/basic.lean Modified src/order/bounded_lattice.lean +/- theorem lt_top_iff_ne_top Modified src/order/lattice.lean 2021-05-07 09:30:39 dec29aa feat(group_theory/solvable): S_5 is not solvable (#7453) This is a rather hacky proof that S_5 is not solvable. The proper proof via the simplicity of A_5 will eventually replace this. But until then, this result is needed for abel-ruffini. Most of the work done by Jordan Brown ESTIMATED CHANGES Modified src/data/equiv/fintype.lean - def equiv.perm.via_embedding - theorem equiv.perm.via_embedding_apply_image - theorem equiv.perm.via_embedding_apply_mem_range - theorem equiv.perm.via_embedding_apply_not_mem_range - theorem equiv.perm.via_embedding_sign + def equiv.perm.via_fintype_embedding + theorem equiv.perm.via_fintype_embedding_apply_image + theorem equiv.perm.via_fintype_embedding_apply_mem_range + theorem equiv.perm.via_fintype_embedding_apply_not_mem_range + theorem equiv.perm.via_fintype_embedding_sign Modified src/group_theory/perm/basic.lean + def equiv.perm.extend_domain_hom + theorem equiv.perm.extend_domain_hom_injective + theorem equiv.perm.of_subtype_apply_coe + theorem equiv.perm.via_embedding_apply + theorem equiv.perm.via_embedding_apply_of_not_mem + theorem equiv.perm.via_embedding_hom_apply + theorem equiv.perm.via_embedding_hom_injective Modified src/group_theory/perm/fin.lean Modified src/group_theory/solvable.lean + theorem equiv.perm.fin_5_not_solvable + theorem equiv.perm.not_solvable + theorem general_commutator_containment + theorem not_solvable_of_mem_derived_series 2021-05-07 09:30:38 95b91b3 refactor(group_theory/perm/*): disjoint and support in own file (#7450) The group_theory/perm/sign file was getting large and too broad in scope. This refactor pulls out `perm.support`, `perm.is_swap`, and `perm.disjoint` into a separate file. A simpler version of #7118. ESTIMATED CHANGES Modified src/group_theory/perm/cycle_type.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean - theorem equiv.perm.apply_mem_support - theorem equiv.perm.card_support_eq_two - theorem equiv.perm.card_support_eq_zero - theorem equiv.perm.card_support_le_one - theorem equiv.perm.card_support_ne_one - theorem equiv.perm.card_support_prod_list_of_pairwise_disjoint - theorem equiv.perm.card_support_swap - theorem equiv.perm.card_support_swap_mul - theorem equiv.perm.disjoint.card_support_mul - theorem equiv.perm.disjoint.disjoint_support - theorem equiv.perm.disjoint.gpow_disjoint_gpow - theorem equiv.perm.disjoint.mul_apply_eq_iff - theorem equiv.perm.disjoint.mul_comm - theorem equiv.perm.disjoint.mul_eq_one_iff - theorem equiv.perm.disjoint.mul_left - theorem equiv.perm.disjoint.mul_right - theorem equiv.perm.disjoint.pow_disjoint_pow - theorem equiv.perm.disjoint.support_mul - theorem equiv.perm.disjoint.symm - def equiv.perm.disjoint - theorem equiv.perm.disjoint_comm - theorem equiv.perm.disjoint_iff_disjoint_support - theorem equiv.perm.disjoint_one_left - theorem equiv.perm.disjoint_one_right - theorem equiv.perm.disjoint_prod_list_of_disjoint - theorem equiv.perm.disjoint_prod_perm - theorem equiv.perm.disjoint_prod_right - theorem equiv.perm.exists_mem_support_of_mem_support_prod - theorem equiv.perm.gpow_apply_eq_of_apply_apply_eq_self - theorem equiv.perm.gpow_apply_eq_self_of_apply_eq_self - theorem equiv.perm.gpow_apply_mem_support - theorem equiv.perm.is_swap.of_subtype_is_swap - def equiv.perm.is_swap - theorem equiv.perm.mem_support - theorem equiv.perm.ne_and_ne_of_swap_mul_apply_ne_self - theorem equiv.perm.nodup_of_pairwise_disjoint - theorem equiv.perm.one_lt_card_support_of_ne_one - theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self - theorem equiv.perm.pow_apply_eq_self_of_apply_eq_self - theorem equiv.perm.pow_apply_mem_support - def equiv.perm.support - theorem equiv.perm.support_eq_empty_iff - theorem equiv.perm.support_inv - theorem equiv.perm.support_mul_le - theorem equiv.perm.support_one - theorem equiv.perm.support_pow_le - theorem equiv.perm.support_swap - theorem equiv.perm.support_swap_mul_eq - theorem equiv.perm.two_le_card_support_of_ne_one Added src/group_theory/perm/support.lean + theorem equiv.perm.apply_mem_support + theorem equiv.perm.card_support_eq_two + theorem equiv.perm.card_support_eq_zero + theorem equiv.perm.card_support_le_one + theorem equiv.perm.card_support_ne_one + theorem equiv.perm.card_support_prod_list_of_pairwise_disjoint + theorem equiv.perm.card_support_swap + theorem equiv.perm.card_support_swap_mul + theorem equiv.perm.disjoint.card_support_mul + theorem equiv.perm.disjoint.disjoint_support + theorem equiv.perm.disjoint.gpow_disjoint_gpow + theorem equiv.perm.disjoint.inv_left + theorem equiv.perm.disjoint.inv_right + theorem equiv.perm.disjoint.mul_apply_eq_iff + theorem equiv.perm.disjoint.mul_comm + theorem equiv.perm.disjoint.mul_eq_one_iff + theorem equiv.perm.disjoint.mul_left + theorem equiv.perm.disjoint.mul_right + theorem equiv.perm.disjoint.pow_disjoint_pow + theorem equiv.perm.disjoint.support_mul + theorem equiv.perm.disjoint.symm + def equiv.perm.disjoint + theorem equiv.perm.disjoint_comm + theorem equiv.perm.disjoint_iff_disjoint_support + theorem equiv.perm.disjoint_iff_eq_or_eq + theorem equiv.perm.disjoint_inv_left_iff + theorem equiv.perm.disjoint_inv_right_iff + theorem equiv.perm.disjoint_one_left + theorem equiv.perm.disjoint_one_right + theorem equiv.perm.disjoint_prod_perm + theorem equiv.perm.disjoint_prod_right + theorem equiv.perm.disjoint_refl_iff + theorem equiv.perm.exists_mem_support_of_mem_support_prod + theorem equiv.perm.gpow_apply_eq_of_apply_apply_eq_self + theorem equiv.perm.gpow_apply_eq_self_of_apply_eq_self + theorem equiv.perm.gpow_apply_mem_support + theorem equiv.perm.is_swap.of_subtype_is_swap + def equiv.perm.is_swap + theorem equiv.perm.mem_support + theorem equiv.perm.mem_support_swap_mul_imp_mem_support_ne + theorem equiv.perm.ne_and_ne_of_swap_mul_apply_ne_self + theorem equiv.perm.nodup_of_pairwise_disjoint + theorem equiv.perm.not_mem_support + theorem equiv.perm.one_lt_card_support_of_ne_one + theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self + theorem equiv.perm.pow_apply_eq_self_of_apply_eq_self + theorem equiv.perm.pow_apply_mem_support + def equiv.perm.support + theorem equiv.perm.support_congr + theorem equiv.perm.support_eq_empty_iff + theorem equiv.perm.support_gpow_le + theorem equiv.perm.support_inv + theorem equiv.perm.support_mul_le + theorem equiv.perm.support_one + theorem equiv.perm.support_pow_le + theorem equiv.perm.support_prod_le + theorem equiv.perm.support_prod_of_pairwise_disjoint + theorem equiv.perm.support_refl + theorem equiv.perm.support_swap + theorem equiv.perm.support_swap_iff + theorem equiv.perm.support_swap_mul_eq + theorem equiv.perm.support_swap_mul_ge_support_diff + theorem equiv.perm.support_swap_mul_swap + theorem equiv.perm.two_le_card_support_of_ne_one 2021-05-07 09:30:37 251a42b feat(ring_theory/finiteness): add monoid_algebra.ft_iff_fg (#7445) We prove here `add monoid_algebra.ft_iff_fg`: the monoid algebra is of finite type if and only if the monoid is finitely generated. - [x] depends on: #7409 ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.of'_eq_of Modified src/ring_theory/finiteness.lean + theorem add_monoid_algebra.exists_finset_adjoin_eq_top + theorem add_monoid_algebra.fg_of_finite_type + theorem add_monoid_algebra.finite_type_iff_fg + theorem add_monoid_algebra.mem_adjoin_support - theorem add_monoid_algebra.mem_adjoint_support + theorem add_monoid_algebra.mem_closure_of_mem_span_closure + theorem add_monoid_algebra.of'_mem_span + theorem monoid_algebra.exists_finset_adjoin_eq_top + theorem monoid_algebra.fg_of_finite_type + theorem monoid_algebra.finite_type_iff_fg +/- theorem monoid_algebra.mem_adjoint_support + theorem monoid_algebra.mem_closure_of_mem_span_closure + theorem monoid_algebra.of_mem_span_of_iff 2021-05-07 09:30:36 be1af7c feat(linear_algebra/quadratic_form): provide `distrib_mul_action S (quadratic_form M R)` when `S` has no addition. (#7443) The end goal here is to provide `has_scalar (units R) (quadratic_form M R)` for possible use in #7427 ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean 2021-05-07 09:30:35 5d873a6 feat(algebra/monoid_algebra): add add_monoid_algebra_ring_equiv_direct_sum (#7422) The only interesting result here is: add_monoid_algebra_ring_equiv_direct_sum : add_monoid_algebra M ι ≃+* ⨁ i : ι, M The rest of the new file is just boilerplate to translate `dfinsupp.single` into `direct_sum.of`. ESTIMATED CHANGES Added src/algebra/monoid_algebra_to_direct_sum.lean + def add_monoid_algebra.to_direct_sum + theorem add_monoid_algebra.to_direct_sum_add + theorem add_monoid_algebra.to_direct_sum_mul + theorem add_monoid_algebra.to_direct_sum_single + theorem add_monoid_algebra.to_direct_sum_to_add_monoid_algebra + theorem add_monoid_algebra.to_direct_sum_zero + def add_monoid_algebra_equiv_direct_sum + def direct_sum.to_add_monoid_algebra + theorem direct_sum.to_add_monoid_algebra_add + theorem direct_sum.to_add_monoid_algebra_mul + theorem direct_sum.to_add_monoid_algebra_of + theorem direct_sum.to_add_monoid_algebra_to_direct_sum + theorem direct_sum.to_add_monoid_algebra_zero 2021-05-07 09:30:34 3a5c871 refactor(polynomial/*): make polynomials irreducible (#7421) Polynomials are the most basic objects in field theory. Making them irreducible helps Lean, because it can not try to unfold things too far, and it helps the user because it forces him to use a sane API instead of mixing randomly stuff from finsupp and from polynomials, as used to be the case in mathlib before this PR. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.monomial_eq_C_mul_X - theorem mv_polynomial.single_eq_C_mul_X - theorem mv_polynomial.sum_monomial + theorem mv_polynomial.sum_monomial_eq Modified src/data/mv_polynomial/pderiv.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean +/- def polynomial.C +/- theorem polynomial.C_0 + theorem polynomial.C_mul_monomial + theorem polynomial.add_to_finsupp +/- def polynomial.coeff + theorem polynomial.coeff_erase - theorem polynomial.coeff_mk +/- theorem polynomial.coeff_neg +/- theorem polynomial.coeff_one_zero +/- theorem polynomial.coeff_sub + theorem polynomial.erase_monomial + theorem polynomial.erase_ne + theorem polynomial.erase_same + theorem polynomial.erase_zero + theorem polynomial.exists_iff_exists_finsupp + theorem polynomial.forall_iff_forall_finsupp + theorem polynomial.mem_support_iff +/- def polynomial.monomial + theorem polynomial.monomial_add_erase - theorem polynomial.monomial_def + theorem polynomial.monomial_eq_C_mul_X + def polynomial.monomial_fun + theorem polynomial.monomial_mul_C + theorem polynomial.mul_eq_sum_sum + theorem polynomial.mul_to_finsupp + theorem polynomial.neg_to_finsupp + theorem polynomial.not_mem_support_iff + theorem polynomial.one_to_finsupp - theorem polynomial.single_eq_C_mul_X + theorem polynomial.smul_to_finsupp + def polynomial.sum +/- theorem polynomial.sum_C_index + theorem polynomial.sum_X_index + theorem polynomial.sum_add' + theorem polynomial.sum_add + theorem polynomial.sum_add_index + theorem polynomial.sum_def + theorem polynomial.sum_eq_of_subset + theorem polynomial.sum_monomial_index + theorem polynomial.sum_smul_index + theorem polynomial.sum_to_finsupp + theorem polynomial.sum_zero_index +/- def polynomial.support +/- theorem polynomial.support_add + theorem polynomial.support_erase +/- theorem polynomial.support_zero + def polynomial.to_finsupp_iso + theorem polynomial.to_finsupp_iso_monomial + theorem polynomial.to_finsupp_iso_symm_single + theorem polynomial.zero_to_finsupp + structure polynomial - def polynomial Modified src/data/polynomial/coeff.lean +/- theorem polynomial.coeff_add - theorem polynomial.exists_coeff_not_mem_C_inverse - theorem polynomial.mem_span_C_coeff - theorem polynomial.mem_support_iff - theorem polynomial.not_mem_support_iff - theorem polynomial.span_le_of_coeff_mem_C_inverse - theorem polynomial.sum_def + theorem polynomial.support_smul Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.degree_C_le + theorem polynomial.degree_smul_le + theorem polynomial.nat_degree_add_le +/- theorem polynomial.nat_degree_le_nat_degree + theorem polynomial.nat_degree_smul_le Modified src/data/polynomial/degree/lemmas.lean - theorem polynomial.degree_map_le - theorem polynomial.nat_degree_map_le Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.trailing_coeff_zero Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/eval.lean + theorem polynomial.degree_map_le +/- theorem polynomial.eval_eq_finset_sum +/- theorem polynomial.eval_eq_sum - theorem polynomial.eval₂_eq_lift_nc + theorem polynomial.eval₂_to_finsupp_eq_lift_nc + theorem polynomial.nat_degree_map_le Modified src/data/polynomial/identities.lean Modified src/data/polynomial/induction.lean + theorem polynomial.exists_coeff_not_mem_C_inverse + theorem polynomial.mem_span_C_coeff + theorem polynomial.span_le_of_coeff_mem_C_inverse Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/data/polynomial/lifts.lean Modified src/data/polynomial/mirror.lean +/- theorem polynomial.mirror_zero Modified src/data/polynomial/monic.lean Modified src/data/polynomial/monomial.lean - theorem polynomial.C_mul_monomial + theorem polynomial.card_support_le_one_iff_monomial - theorem polynomial.monomial_mul_C + theorem polynomial.monomial_one_eq_iff Modified src/data/polynomial/reverse.lean Modified src/data/polynomial/ring_division.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/fixed.lean Modified src/field_theory/minpoly.lean Modified src/field_theory/separable.lean +/- theorem polynomial.coeff_contract - theorem polynomial.expand_eq_map_domain Modified src/field_theory/splitting_field.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/linear_independent.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean + theorem localization_map.coeff_integer_normalization_of_not_mem_support Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.coeff_mem_frange + theorem polynomial.coeff_of_subring +/- theorem polynomial.coeff_to_subring' +/- theorem polynomial.coeff_to_subring +/- theorem polynomial.degree_restriction +/- theorem polynomial.degree_to_subring + def polynomial.frange + theorem polynomial.frange_one + theorem polynomial.frange_zero + theorem polynomial.linear_independent_powers_iff_aeval - theorem polynomial.linear_independent_powers_iff_eval₂ + theorem polynomial.mem_frange_iff +/- theorem polynomial.nat_degree_to_subring +/- theorem polynomial.restriction_zero + theorem polynomial.support_restriction + theorem polynomial.support_to_subring +/- theorem polynomial.to_subring_zero Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/polynomial_algebra.lean + theorem support_subset_support_mat_poly_equiv Modified src/ring_theory/power_basis.lean - theorem power_basis.polynomial.mem_supported_range Modified src/ring_theory/power_series/basic.lean Modified src/ring_theory/roots_of_unity.lean 2021-05-07 09:30:33 322ccc5 feat(finset/basic): downward induction for finsets (#7379) ESTIMATED CHANGES Modified src/data/finset/basic.lean + def finset.strong_downward_induction + theorem finset.strong_downward_induction_eq + def finset.strong_downward_induction_on + theorem finset.strong_downward_induction_on_eq Modified src/data/multiset/basic.lean + def multiset.strong_downward_induction + theorem multiset.strong_downward_induction_eq + def multiset.strong_downward_induction_on + theorem multiset.strong_downward_induction_on_eq 2021-05-07 09:30:31 11a06de feat(order/closure): closure of unions and bUnions (#7361) prove closure_closure_union and similar ESTIMATED CHANGES Modified src/order/closure.lean + theorem closure_operator.closure_bsupr_closure + theorem closure_operator.closure_inf_le - theorem closure_operator.closure_inter_le +/- theorem closure_operator.closure_le_closed_iff_le + theorem closure_operator.closure_le_mk₃_iff + theorem closure_operator.closure_mem_mk₃ + theorem closure_operator.closure_sup_closure + theorem closure_operator.closure_sup_closure_le + theorem closure_operator.closure_sup_closure_left + theorem closure_operator.closure_sup_closure_right + theorem closure_operator.closure_supr_closure +/- theorem closure_operator.closure_top - theorem closure_operator.closure_union_closure_le + theorem closure_operator.eq_mk₃_closed + theorem closure_operator.mem_mk₃_closed + def closure_operator.mk₂ + def closure_operator.mk₃ Modified src/order/complete_lattice.lean + theorem Sup_le_Sup_of_subset_insert_bot - theorem Sup_le_Sup_of_subset_instert_bot 2021-05-07 09:30:30 b20e664 feat(order/well_founded_set): Higman's Lemma (#7212) Proves Higman's Lemma: if `r` is partially well-ordered on `s`, then `list.sublist_forall2` is partially well-ordered on the set of lists whose elements are in `s`. ESTIMATED CHANGES Modified docs/references.bib Modified src/order/well_founded_set.lean +/- theorem finset.is_pwo +/- theorem finset.is_wf +/- theorem finset.partially_well_ordered_on +/- theorem finset.well_founded_on + theorem set.partially_well_ordered_on.exists_min_bad_of_exists_bad + theorem set.partially_well_ordered_on.iff_forall_not_is_bad_seq + theorem set.partially_well_ordered_on.iff_not_exists_is_min_bad_seq + def set.partially_well_ordered_on.is_bad_seq + def set.partially_well_ordered_on.is_min_bad_seq + theorem set.partially_well_ordered_on.partially_well_ordered_on_sublist_forall₂ 2021-05-07 05:00:03 cd5864f chore(scripts): update nolints.txt (#7541) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-05-07 05:00:02 6a7ddcc ci(.github/workflows/{build,dependent-issues}.yml): auto-cancel workflows on previous commits (#7536) After this is merged, pushing a new commit to a branch in this repo should cancel the "continuous integration" and "dependent issues" workflows running on any older commits on that branch. ESTIMATED CHANGES Modified .github/workflows/build.yml Modified .github/workflows/dependent-issues.yml 2021-05-07 05:00:01 93f9b3d ci(.github/workflows/build.yml): switch to trepplein (#7532) Reduces the leanchecker time from 6+57 minutes to 6+16 minutes. ESTIMATED CHANGES Modified .github/workflows/build.yml 2021-05-07 04:59:59 f44a5eb feat(category_theory/concrete_category): id_apply, comp_apply (#7530) This PR renames * `category_theory.coe_id` to `category_theory.id_apply` * `category_theory.coe_comp` to `category_theory.comp_apply` The names that are hence free up are then redefined for "unapplied" versions of the same lemmas. The `elementwise` tactic uses the old lemmas (with their new names). We need minor fixes in the rest of the library because of the name changes. ESTIMATED CHANGES Modified src/algebra/category/Group/colimits.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/category_theory/abelian/diagram_lemmas/four.lean Modified src/category_theory/concrete_category/basic.lean +/- theorem category_theory.coe_comp +/- theorem category_theory.coe_id + theorem category_theory.comp_apply + theorem category_theory.id_apply Modified src/tactic/elementwise.lean Modified src/topology/sheaves/stalks.lean 2021-05-07 04:59:59 0ead8ee feat(ring_theory/localization): Characterize units in localization at prime ideal (#7519) Adds a few lemmas characterizing units and nonunits (elements of the maximal ideal) in the localization at a prime ideal. ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem localization_map.at_prime.is_unit_mk'_iff + theorem localization_map.at_prime.is_unit_to_map_iff + theorem localization_map.at_prime.mk'_mem_maximal_iff + theorem localization_map.at_prime.to_map_mem_maximal_iff 2021-05-07 04:59:57 755cb75 feat(data/list/basic): non-meta to_chunks (#7517) A non-meta definition of the `list.to_chunks` method, plus some basic theorems about it. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.to_chunks_aux_eq + theorem list.to_chunks_aux_join + theorem list.to_chunks_eq_cons' + theorem list.to_chunks_eq_cons + theorem list.to_chunks_join + theorem list.to_chunks_length_le + theorem list.to_chunks_nil Modified src/data/list/defs.lean + def list.to_chunks + def list.to_chunks_aux 2021-05-07 04:59:56 930485c feat(linear_algebra/tensor_product): distrib_mul_actions are inherited (#7516) It turns out that `tensor_product.has_scalar` requires only `distrib_mul_action` and not `semimodule` on its components. As a result, a tensor product can inherit the `distrib_mul_action` structure of its components too. Notably, this would enable `has_scalar (units R) (M ⊗[R] N)` in future. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean 2021-05-07 04:59:55 b903ea2 chore(algebra/module/linear_map): add missing rfl lemmas (#7515) I've found these most useful for writing along in reverse so that I can use `linear_map.map_smul_of_tower`. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem add_monoid_hom.coe_to_int_linear_map + theorem add_monoid_hom.coe_to_rat_linear_map 2021-05-07 04:59:54 6d25f3a feat(category_theory/opposites): Adds equivalences for functor categories. (#7505) This PR adds the following equivalences for categories `C` and `D`: 1. `(C ⥤ D)ᵒᵖ ≌ Cᵒᵖ ⥤ Dᵒᵖ` induced by `op` and `unop`. 2. `(Cᵒᵖ ⥤ D)ᵒᵖ ≌ (C ⥤ Dᵒᵖ)` induced by `left_op` and `right_op`. ESTIMATED CHANGES Modified src/category_theory/opposites.lean + def category_theory.functor.left_op_right_op_equiv + def category_theory.functor.left_op_right_op_iso + def category_theory.functor.op_unop_equiv +/- def category_theory.functor.op_unop_iso + def category_theory.functor.right_op_left_op_iso +/- def category_theory.functor.unop_op_iso 2021-05-07 04:59:53 efb283c feat(data/dfinsupp): add `finset_sum_apply` and `coe_finset_sum` (#7499) The names of the new`add_monoid_hom`s parallel the names in my recent `quadratic_form` PR, #7417. ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.coe_finset_sum + def dfinsupp.coe_fn_add_monoid_hom + def dfinsupp.eval_add_monoid_hom + theorem dfinsupp.finset_sum_apply 2021-05-07 04:59:51 9acbe58 feat(normed_space/normed_group_hom): add lemmas (#7468) From LTE. Written by @PatrickMassot ESTIMATED CHANGES Modified src/analysis/normed_space/normed_group_hom.lean + theorem normed_group_hom.coe_ker + theorem normed_group_hom.is_closed_ker + theorem normed_group_hom.ker_zero Modified src/group_theory/subgroup.lean + theorem monoid_hom.coe_ker + theorem monoid_hom.ker_one 2021-05-07 04:59:50 154fda2 feat(category_theory/subobjects): more about kernel and image subobjects (#7467) Lemmas about factoring through kernel subobjects, and functoriality of kernel subobjects. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/subobject/limits.lean + def category_theory.limits.factor_thru_kernel_subobject + theorem category_theory.limits.factor_thru_kernel_subobject_comp_arrow + theorem category_theory.limits.image_subobject_arrow_comp_eq_zero + def category_theory.limits.kernel_subobject_map + theorem category_theory.limits.kernel_subobject_map_arrow + theorem category_theory.limits.kernel_subobject_map_comp + theorem category_theory.limits.kernel_subobject_map_id 2021-05-06 22:46:23 bb1fb89 feat(data/real/basic): add real.Inf_le_iff (#7524) From LTE. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem le_iff_forall_pos_le_add + theorem le_iff_forall_pos_lt_add Modified src/data/real/basic.lean + theorem real.Inf_le_iff + theorem real.add_pos_lt_Sup + theorem real.le_Sup_iff + theorem real.lt_Inf_add_pos 2021-05-06 22:46:22 e00d6e0 feat(data/polynomial/*): Specific root sets (#7510) Adds lemmas for the root sets of a couple specific polynomials. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.root_set_C_mul_X_pow + theorem polynomial.root_set_X_pow + theorem polynomial.root_set_monomial Modified src/data/polynomial/ring_division.lean + theorem polynomial.root_set_C 2021-05-06 22:46:21 6f27ef7 chore(data/equiv/basic): Show that `Pi_curry` is really just `sigma.curry` (#7497) Extracts some proofs to their own lemmas, and replaces definitions with existing ones. ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/sigma/basic.lean + theorem sigma.curry_uncurry + theorem sigma.uncurry_curry 2021-05-06 22:46:20 9aed6c9 feat(data/finsupp,linear_algebra): `finsupp.split` is an equivalence (#7490) This PR shows that for finite types `η`, `finsupp.split` is an equivalence between `(Σ (j : η), ιs j) →₀ α` and `Π j, (ιs j →₀ α)`. To be used in the `bundled-basis` refactor ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply + theorem finsupp.sigma_finsupp_equiv_pi_finsupp_apply Modified src/linear_algebra/finsupp.lean + theorem finsupp.sigma_finsupp_lequiv_pi_finsupp_apply + theorem finsupp.sigma_finsupp_lequiv_pi_finsupp_symm_apply 2021-05-06 22:46:19 48bdd1e feat(data/equiv,linear_algebra): `Pi_congr_right` for `mul_equiv` and `linear_equiv` (#7489) This PR generalizes `equiv.Pi_congr_right` to linear equivs, adding the `mul_equiv`/`add_equiv` version as well. To be used in the `bundled-basis` refactor ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + def mul_equiv.Pi_congr_right + theorem mul_equiv.Pi_congr_right_refl + theorem mul_equiv.Pi_congr_right_symm + theorem mul_equiv.Pi_congr_right_trans Modified src/linear_algebra/basic.lean + def linear_equiv.Pi_congr_right + theorem linear_equiv.Pi_congr_right_refl + theorem linear_equiv.Pi_congr_right_symm + theorem linear_equiv.Pi_congr_right_trans 2021-05-06 22:46:18 652357a feat(data/nat/choose/sum): alternate forms of the binomial theorem (#7415) ESTIMATED CHANGES Modified src/data/nat/choose/sum.lean + theorem commute.add_pow' +/- theorem commute.add_pow 2021-05-06 10:56:24 9c86e38 refactor(ring_theory/ideal/operations.lean): make is_prime.comap an instance (#7518) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/ideal/operations.lean - theorem ideal.is_prime.comap 2021-05-06 10:56:23 13c41e1 feat(category_theory/linear): linear functors (#7369) ESTIMATED CHANGES Modified src/category_theory/linear/default.lean Added src/category_theory/linear/linear_functor.lean + theorem category_theory.functor.coe_map_linear_map + def category_theory.functor.map_linear_map + theorem category_theory.functor.map_smul 2021-05-06 06:18:21 7040c50 feat(category_theory): the opposite of an abelian category is abelian (#7514) ESTIMATED CHANGES Added src/category_theory/abelian/opposite.lean Modified src/category_theory/fin_category.lean + def category_theory.fin_category_opposite Modified src/category_theory/limits/opposites.lean + theorem category_theory.limits.has_finite_colimits_opposite + theorem category_theory.limits.has_finite_coproducts_opposite + theorem category_theory.limits.has_finite_limits_opposite + theorem category_theory.limits.has_finite_products_opposite Modified src/category_theory/limits/shapes/normal_mono.lean + def category_theory.normal_epi_of_normal_mono_unop + def category_theory.normal_mono_of_normal_epi_unop Modified src/category_theory/limits/shapes/zero.lean Added src/category_theory/preadditive/opposite.lean + theorem category_theory.unop_add + theorem category_theory.unop_zero 2021-05-06 06:18:20 c4c6cd8 feat(linear_algebra/finsupp): linear equivalence between `α × β →₀ M` and `α →₀ β →₀ M` (#7472) This PR extends the equivalence `finsupp.finsupp_prod_equiv` to a linear equivalence (to be used in the `bundled-basis` refactor). ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean + theorem finsupp.finsupp_prod_lequiv_apply + theorem finsupp.finsupp_prod_lequiv_symm_apply 2021-05-06 06:18:19 9154a83 feat(algebra/*, ring_theory/valuation/basic): `linear_ordered_add_comm_group_with_top`, `add_valuation.map_sub` (#7452) Defines `linear_ordered_add_comm_group_with_top` Uses that to port a few more facts about `valuation`s to `add_valuation`s. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean Modified src/ring_theory/valuation/basic.lean + theorem add_valuation.map_add_of_distinct_val + theorem add_valuation.map_eq_of_lt_sub + theorem add_valuation.map_inv + theorem add_valuation.map_le_sub + theorem add_valuation.map_neg + theorem add_valuation.map_sub + theorem add_valuation.map_sub_swap + theorem add_valuation.map_units_inv + theorem valuation.map_sub + theorem valuation.map_sub_le - theorem valuation.map_sub_le_max 2021-05-06 04:31:52 6af5fbd feat(category_theory/.../zero): if a zero morphism is a mono, the source is zero (#7462) Some simple lemmas about zero morphisms. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.has_zero_object.functor.zero_map + theorem category_theory.limits.has_zero_object.functor.zero_obj + theorem category_theory.limits.is_iso_of_source_target_iso_zero + def category_theory.limits.iso_zero_of_epi_zero + def category_theory.limits.iso_zero_of_mono_zero 2021-05-05 23:47:55 009be86 feat(measure_theory/set_integral): continuous_on.measurable_at_filter (#7511) ESTIMATED CHANGES Modified src/measure_theory/set_integral.lean + theorem continuous_at.measurable_at_filter + theorem continuous_on.measurable_at_filter 2021-05-05 23:47:54 709c73b feat(category_theory/Fintype): some lemmas and `Fintype_to_Profinite`. (#7491) Adding some lemmas for morphisms on `Fintype` as functions, as well as `Fintype_to_Profinite`. Part of the LTE. ESTIMATED CHANGES Modified src/category_theory/Fintype.lean + theorem Fintype.coe_comp + theorem Fintype.coe_id + theorem Fintype.comp_apply + theorem Fintype.id_apply Modified src/topology/category/Profinite.lean + def Fintype.discrete_topology + def Fintype.to_Profinite + def Profinite.of 2021-05-05 23:47:53 1ef04bd feat(data/finsupp): prove `f.curry x y = f (x, y)` (#7475) This was surprisingly hard to prove actually! To be used in the `bundled-basis` refactor ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.curry_apply 2021-05-05 23:47:52 d3a46a7 feat(algebra/big_operators): telescopic sums (#7470) This is restating things we already have in a form which is slightly more convenient for the liquid tensor experiment ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.eq_sum_range_sub' + theorem finset.eq_sum_range_sub 2021-05-05 23:47:51 18ada66 feat(order/filter_at_top_bot): extraction lemmas (#7469) from the liquid tensor experiment ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.eventually_at_bot_prod_self' + theorem filter.eventually_at_bot_prod_self + theorem filter.eventually_at_top_prod_self' + theorem filter.eventually_at_top_prod_self + theorem filter.extraction_forall_of_eventually' + theorem filter.extraction_forall_of_eventually + theorem filter.extraction_forall_of_frequently + theorem filter.tendsto.prod_at_bot + theorem filter.tendsto.prod_at_top + theorem filter.tendsto.prod_map_prod_at_bot + theorem filter.tendsto.prod_map_prod_at_top + theorem filter.tendsto.subseq_mem + theorem filter.tendsto_at_bot_diagonal + theorem filter.tendsto_at_top_diagonal 2021-05-05 23:47:50 7cc367b feat(category_theory/subobject): minor tweaks (#7466) A few minor tweaks to the `subobject` API that I wanted while working on homology. ESTIMATED CHANGES Modified src/category_theory/subobject/basic.lean + theorem category_theory.subobject.of_le_mk_le_mk_of_comm Modified src/category_theory/subobject/factor_thru.lean - theorem category_theory.subobject.factor_thru_comp_of_le + theorem category_theory.subobject.factor_thru_of_le Modified src/category_theory/subobject/lattice.lean - def category_theory.subobject.top_coe_iso_self - theorem category_theory.subobject.underlying_iso_id_eq_top_coe_iso_self + theorem category_theory.subobject.underlying_iso_top_hom 2021-05-05 23:47:49 e25cbe0 feat(category_theory/quotient): the quotient functor is full and essentially surjective (#7465) ESTIMATED CHANGES Modified src/category_theory/quotient.lean + theorem category_theory.quotient.lift_map_functor_map 2021-05-05 23:47:48 19b752c feat(category_theory/preadditive): reformulation of mono_of_kernel_zero (#7464) ESTIMATED CHANGES Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.epi_of_cokernel_iso_zero +/- theorem category_theory.preadditive.epi_of_cokernel_zero + theorem category_theory.preadditive.mono_of_kernel_iso_zero 2021-05-05 23:47:47 7794969 feat(category_theory/.../additive_functor): additive functors preserve zero objects (#7463) ESTIMATED CHANGES Modified src/category_theory/preadditive/additive_functor.lean + def category_theory.functor.map_zero_object 2021-05-05 23:47:46 25387b6 docs(overview): Add Stone-Weierstrass (#7449) ESTIMATED CHANGES Modified docs/overview.yaml 2021-05-05 23:47:45 f6f810c doc(algebraic_hierarchy): advice for adding new typeclasses (#6854) This is not intended as document describing all the design decisions behind our algebraic hierarchy, but rather some advice for contributors adding new typeclasses. It can hopefully serve as a checklist for instances and definitions that should be made for any new algebraic structure being added to mathlib. Please edit as you see fit, contribute new sections, etc. I haven't written anything yet about interactions with topology or order structures. Please consider this an invitation, or otherwise we can delete those headings later. Thanks to @eric-wieser for providing the list of instances needed for each typeclass! ESTIMATED CHANGES Added src/algebra/hierarchy_design.lean 2021-05-05 18:50:21 6d2869c feat(category_theory/.../images): image.pre_comp_epi_of_epi (#7460) The induced map from `image (f ≫ g)` to `image g` is an epimorphism when `f` is an epimorphism. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean 2021-05-05 18:50:20 79edde2 feat(topology/discrete_quotient): Add a few lemmas about discrete quotients (#7454) This PR adds the `discrete_quotient.map` construction and generally improves on the `discrete_quotient` API. ESTIMATED CHANGES Modified src/topology/discrete_quotient.lean +/- def discrete_quotient.comap + theorem discrete_quotient.comap_comp + theorem discrete_quotient.comap_id + theorem discrete_quotient.comap_mono + def discrete_quotient.le_comap + theorem discrete_quotient.le_comap_comp + theorem discrete_quotient.le_comap_id + theorem discrete_quotient.le_comap_trans + def discrete_quotient.map + theorem discrete_quotient.map_comp + theorem discrete_quotient.map_continuous + theorem discrete_quotient.map_id + theorem discrete_quotient.map_of_le + theorem discrete_quotient.map_of_le_apply + theorem discrete_quotient.map_proj + theorem discrete_quotient.map_proj_apply + theorem discrete_quotient.of_le_comp + theorem discrete_quotient.of_le_comp_apply + theorem discrete_quotient.of_le_map + theorem discrete_quotient.of_le_map_apply + theorem discrete_quotient.of_le_refl + theorem discrete_quotient.of_le_refl_apply 2021-05-05 18:50:19 84d27b4 refactor(group_theory/group_action/defs): generalize smul_mul_assoc and mul_smul_comm (#7441) These lemmas did not need a full algebra structure; written this way, it permits usage on `has_scalar (units R) A` given `algebra R A` (in some future PR). For now, the old algebra lemmas are left behind, to minimize the scope of this patch. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem algebra.mul_smul_comm - theorem algebra.smul_mul_assoc - theorem algebra.smul_mul_smul Modified src/algebra/algebra/tower.lean Modified src/group_theory/group_action/defs.lean + theorem mul_smul_comm + theorem smul_mul_assoc + theorem smul_mul_smul 2021-05-05 18:50:18 140e17b feat(algebra/direct_sum_graded): a direct_sum of copies of a ring is itself a ring (#7420) Once this is in, it's straightforward to show `add_monoid_algebra R ι ≃+* ⨁ i : ι, R` ESTIMATED CHANGES Modified src/algebra/direct_sum_graded.lean + theorem semiring.direct_sum_mul 2021-05-05 18:50:17 51bc1ca feat(algebra/direct_sum_graded): add direct_sum.to_semiring (#7380) This provides a convenient way to construct ring_homs out of `direct_sum`, and is a stronger version of `direct_sum.to_add_monoid` which applies in the presence of a `direct_sum.gmonoid` typeclass. The new `direct_sum.lift_ring_hom` can be thought of as a universal property akin to `finsupp.lift_add_hom`. ESTIMATED CHANGES Modified src/algebra/direct_sum_graded.lean + def direct_sum.lift_ring_hom + theorem direct_sum.ring_hom_ext' + def direct_sum.to_semiring + theorem direct_sum.to_semiring_coe_add_monoid_hom + theorem direct_sum.to_semiring_of 2021-05-05 18:50:16 93bc7e0 feat(order): add some missing `pi` and `Prop` instances (#7268) ESTIMATED CHANGES Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean + theorem inf_Prop_eq + theorem le_Prop_eq - theorem le_iff_imp + theorem sup_Prop_eq Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean +/- theorem Inf_Prop_eq +/- theorem Sup_Prop_eq +/- theorem infi_Prop_eq +/- theorem infi_apply +/- theorem supr_Prop_eq +/- theorem supr_apply + theorem supr_subtype'' Modified src/topology/omega_complete_partial_order.lean 2021-05-05 18:50:15 52268b8 feat(linear_algebra): Vandermonde matrices and their determinant (#7116) This PR defines the `vandermonde` matrix and gives a formula for its determinant. @paulvanwamelen: if you would like to have `det_vandermonde` in a different form (e.g. swap the order of the variables that are being summed), please let me know! ESTIMATED CHANGES Added src/linear_algebra/vandermonde.lean + theorem matrix.det_vandermonde + def matrix.vandermonde + theorem matrix.vandermonde_apply + theorem matrix.vandermonde_cons + theorem matrix.vandermonde_succ 2021-05-05 13:56:53 a4d5ccb chore(order/complete_boolean_algebra): speed up Inf_sup_Inf (#7506) On my machine, avoiding `finish` takes the proof from 13s to 0.3s. ESTIMATED CHANGES Modified src/order/complete_boolean_algebra.lean 2021-05-05 13:56:52 94150f3 chore(group_theory/nielsen_schreier): typos in module doc-string (#7500) This fixes a discrepancy between the doc-string and the rest of the file. ESTIMATED CHANGES Modified src/group_theory/nielsen_schreier.lean 2021-05-05 13:56:51 3a8796d feat(category_theory/path_category): extensionality for functors out of path category (#7494) This adds an extensionality lemma for functors out of a path category, which simplifies some proofs in the free-forgetful adjunction. ESTIMATED CHANGES Modified src/category_theory/category/Quiv.lean Modified src/category_theory/eq_to_hom.lean + theorem category_theory.eq_conj_eq_to_hom Modified src/category_theory/path_category.lean + theorem category_theory.paths.ext_functor 2021-05-05 13:56:50 18af6b5 feat(algebra/module): `linear_equiv.refl.symm = refl` (#7493) To be part of the `bundled_basis` refactor ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + theorem linear_equiv.refl_symm 2021-05-05 13:56:49 1823aee feat(algebra/module): `S`-linear equivs are also `R`-linear equivs (#7476) This PR extends `linear_map.restrict_scalars` to `linear_equiv`s. To be used in the `bundled-basis` refactor. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + def linear_equiv.restrict_scalars 2021-05-05 13:56:48 9b1b854 feat(data/fintype/basic): add set.to_finset_range (#7426) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem set.to_finset_range 2021-05-05 13:56:47 bb9216c feat(category_theory/opposites): iso.unop (#7400) ESTIMATED CHANGES Modified src/category_theory/opposites.lean + theorem category_theory.iso.op_unop + def category_theory.iso.unop + theorem category_theory.iso.unop_op 2021-05-05 13:56:45 78e36a7 feat(analysis/convex/extreme): extreme sets (#7357) define extreme sets ESTIMATED CHANGES Modified docs/references.bib Modified src/analysis/convex/basic.lean + theorem convex.convex_remove_iff_not_mem_convex_hull_remove + theorem convex.open_segment_subset +/- theorem convex.segment_subset + theorem convex_iff_open_segment_subset +/- theorem convex_iff_segment_subset + theorem left_mem_open_segment_iff + theorem mem_open_segment_of_ne_left_right + theorem mem_open_segment_translate + def open_segment + theorem open_segment_eq_Ioo' + theorem open_segment_eq_Ioo + theorem open_segment_eq_image' + theorem open_segment_eq_image + theorem open_segment_eq_image₂ + theorem open_segment_image + theorem open_segment_same + theorem open_segment_subset_segment + theorem open_segment_symm + theorem open_segment_translate_image + theorem open_segment_translate_preimage + theorem right_mem_open_segment_iff +/- theorem segment_eq_image' +/- theorem segment_eq_image +/- theorem segment_translate_image Added src/analysis/convex/extreme.lean + theorem convex.mem_extreme_points_iff_convex_remove + theorem convex.mem_extreme_points_iff_mem_diff_convex_hull_remove + theorem extreme_points_convex_hull_subset + theorem extreme_points_def + theorem extreme_points_empty + theorem extreme_points_singleton + theorem extreme_points_subset + theorem inter_extreme_points_subset_extreme_points_of_subset + theorem is_extreme.Inter + theorem is_extreme.antisymm + theorem is_extreme.bInter + theorem is_extreme.convex_diff + theorem is_extreme.extreme_points_eq + theorem is_extreme.extreme_points_subset_extreme_points + theorem is_extreme.inter + theorem is_extreme.mono + theorem is_extreme.refl + theorem is_extreme.sInter + theorem is_extreme.trans + def is_extreme + theorem mem_extreme_points_iff_extreme_singleton + theorem mem_extreme_points_iff_forall_segment + def set.extreme_points Modified src/data/set/intervals/image_preimage.lean + theorem set.image_mul_left_Ioo + theorem set.image_mul_right_Ioo 2021-05-05 12:20:10 b765d4e Change the bors timeout to 8 hours (#7513) We've hit a 6 hour timeout repeatedly in the last few days, resulting in nothing getting built. ESTIMATED CHANGES Modified bors.toml 2021-05-04 02:29:18 5a91d05 feat(data/finset/lattice): add sup_image (#7428) This also renames `finset.map_sup` to `finset.sup_map` to match `finset.sup_insert` and `finset.sup_singleton`. The `inf` versions are added too. ESTIMATED CHANGES Modified src/data/finset/fold.lean + theorem finset.fold_image_idem Modified src/data/finset/lattice.lean + theorem finset.inf_image + theorem finset.inf_map - theorem finset.map_inf - theorem finset.map_sup + theorem finset.sup_image + theorem finset.sup_map 2021-05-03 21:31:42 3773525 feat(ring_theory/finiteness): add lemmas (#7409) I add here some preliminary lemmas to prove that a monoid is finitely generated iff the monoid algebra is. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.mem_span_support' +/- theorem add_monoid_algebra.mem_span_support + def add_monoid_algebra.of' + theorem add_monoid_algebra.of'_apply Modified src/ring_theory/finiteness.lean + theorem add_monoid_algebra.mem_adjoint_support + theorem add_monoid_algebra.support_gen_of_gen' + theorem add_monoid_algebra.support_gen_of_gen + theorem monoid_algebra.mem_adjoint_support + theorem monoid_algebra.support_gen_of_gen' + theorem monoid_algebra.support_gen_of_gen 2021-05-03 21:31:41 67dad97 chore(data/fintype): rework `fintype.equiv_fin` and dependencies (#7136) These changes should make the declarations `fintype.equiv_fin`, `fintype.card_eq` and `fintype.equiv_of_card_eq` more convenient to use. Renamed: * `fintype.equiv_fin` -> `fintype.trunc_equiv_fin` Deleted: * `fintype.nonempty_equiv_of_card_eq` (use `fintype.equiv_of_card_eq` instead) * `fintype.exists_equiv_fin` (use `fintype.card` and `fintype.(trunc_)equiv_fin` instead) Added: * `fintype.equiv_fin`: noncomputable, non-`trunc` version of `fintype.equiv_fin` * `fintype.equiv_of_card_eq`: noncomputable, non-`trunc` version of `fintype.trunc_equiv_of_card_eq` * `fintype.(trunc_)equiv_fin_of_card_eq` (intermediate result/specialization of `fintype.(trunc_)equiv_of_card_eq` [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60fintype.2Eequiv_fin.60.20.2B.20.60fin.2Ecast.60) ESTIMATED CHANGES Modified src/category_theory/Fintype.lean Modified src/category_theory/limits/constructions/finite_products_of_binary_products.lean Modified src/computability/turing_machine.lean Modified src/data/equiv/list.lean Modified src/data/fintype/basic.lean - def fintype.equiv_fin - theorem fintype.exists_equiv_fin - theorem fintype.nonempty_equiv_of_card_eq + def fintype.trunc_equiv_fin + def fintype.trunc_equiv_fin_of_card_eq + def fintype.trunc_equiv_of_card_eq Modified src/data/mv_polynomial/rename.lean Modified src/data/set/finite.lean Modified src/field_theory/finite/polynomial.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/free_module.lean Modified src/logic/small.lean Modified src/ring_theory/finiteness.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/basic.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2021-05-03 17:06:15 048240e chore(*): update to lean 3.30.0c (#7264) There's quite a bit of breakage from no longer reducing `acc.rec` so aggressively. That is, a well-founded definition like `nat.factors` will no longer reduce definitionally. Where you could write `rfl` before, you might now need to write `by rw nat.factors` or `by simp [nat.factors]`. A more inconvenient side-effect of this change is that `dec_trivial` becomes less powerful, since it also relies on the definitional reduction. For example `nat.factors 1 = []` is no longer true by `dec_trivial` (or `rfl`). Often you can replace `dec_trivial` by `simp` or `norm_num`. For extremely simple definitions that only use well-founded relations of rank ω, you could consider rewriting them to use structural recursion on a fuel parameter instead. The functions `nat.mod` and `nat.div` in core have been rewritten in this way, please consult the [corresponding Lean PR](https://github.com/leanprover-community/lean/pull/570/files) for details on the implementation. ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/archimedean.lean + theorem round_one + theorem round_zero Modified src/algebra/order.lean - theorem le_imp_le_of_lt_imp_lt - theorem le_of_not_lt - theorem le_or_lt - theorem lt_or_le Modified src/algebra/ring/basic.lean + theorem ring_hom.to_monoid_with_zero_hom_eq_coe Modified src/analysis/analytic/inverse.lean Modified src/category_theory/equivalence.lean + def category_theory.equivalence.pow_nat Modified src/computability/partrec.lean Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/computability/turing_machine.lean Modified src/data/complex/module.lean Modified src/data/equiv/fin.lean Modified src/data/equiv/list.lean +/- theorem denumerable.list_of_nat_zero +/- theorem encodable.decode_list_zero Modified src/data/fin.lean + theorem fin.coe_bit0 + theorem fin.coe_bit1 + theorem fin.succ_one_eq_two + theorem fin.zero_succ_above Modified src/data/int/basic.lean +/- theorem int.zero_mod Modified src/data/int/parity.lean Modified src/data/list/rotate.lean +/- theorem list.rotate_nil Modified src/data/list/sort.lean Modified src/data/matrix/notation.lean Modified src/data/nat/basic.lean +/- theorem nat.size_one +/- theorem nat.size_zero Modified src/data/nat/bitwise.lean +/- theorem nat.land_zero +/- theorem nat.lor_zero +/- theorem nat.lxor_zero +/- theorem nat.zero_land +/- theorem nat.zero_lor +/- theorem nat.zero_lxor Modified src/data/nat/digits.lean +/- theorem nat.digits_aux_zero Modified src/data/nat/log.lean Modified src/data/nat/modeq.lean +/- theorem nat.odd_mul_odd +/- theorem nat.odd_of_mod_four_eq_one +/- theorem nat.odd_of_mod_four_eq_three Modified src/data/nat/pairing.lean + theorem nat.unpair_zero Modified src/data/nat/parity.lean Modified src/data/nat/prime.lean +/- theorem nat.factors_one +/- theorem nat.factors_zero +/- theorem nat.not_prime_one +/- theorem nat.not_prime_zero +/- theorem nat.prime_three Modified src/data/nat/sqrt.lean + theorem nat.sqrt_zero Modified src/data/nat/totient.lean Modified src/data/num/lemmas.lean +/- theorem num.of_nat'_eq + theorem num.of_nat'_zero Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean +/- theorem padic.coe_one Modified src/data/pnat/factors.lean +/- theorem pnat.factor_multiset_one Modified src/data/rat/basic.lean + theorem rat.mk_neg_one_one + theorem rat.mk_one_one + theorem rat.mk_zero_one Modified src/data/rat/cast.lean Modified src/data/rat/order.lean Modified src/data/vector2.lean Modified src/data/zmod/basic.lean + theorem zmod.int_coe_eq_int_coe_iff' +/- theorem zmod.neg_eq_self_mod_two + theorem zmod.val_mul' + theorem zmod.val_neg' + theorem zmod.val_one' Modified src/data/zmod/parity.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/perm/fin.lean Modified src/linear_algebra/affine_space/combination.lean + theorem finset.univ_fin2 Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/matrix.lean Modified src/number_theory/ADE_inequality.lean Modified src/number_theory/arithmetic_function.lean +/- theorem nat.arithmetic_function.card_distinct_factors_zero +/- theorem nat.arithmetic_function.card_factors_one Modified src/number_theory/bernoulli.lean +/- theorem bernoulli'_zero +/- theorem bernoulli_zero Modified src/number_theory/primorial.lean Modified src/number_theory/pythagorean_triples.lean + theorem int.sq_ne_two_mod_four + theorem sq_ne_two_fin_zmod_four Modified src/ring_theory/int/basic.lean Modified src/ring_theory/power_series/well_known.lean +/- theorem power_series.constant_coeff_exp Modified src/set_theory/game/domineering.lean Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/short.lean Modified src/set_theory/game/winner.lean Modified src/set_theory/pgame.lean +/- theorem pgame.equiv_refl Modified src/tactic/norm_fin.lean +/- theorem tactic.norm_fin.normalize_fin.zero Modified src/topology/continuous_function/stone_weierstrass.lean 2021-05-03 14:11:12 7da8303 feat(category_theory/preadditive): Schur's lemma (#7366) We prove Schur's lemma for `𝕜`-linear categories with finite dimensional hom spaces, over an algebraically closed field `𝕜`: the hom space `X ⟶ Y` between simple objects `X` and `Y` is at most one dimensional, and is 1-dimensional iff `X` and `Y` are isomorphic. ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean + def category_theory.End.as_hom + def category_theory.End.of + theorem category_theory.is_unit_iff_is_iso Modified src/category_theory/linear/default.lean Modified src/category_theory/preadditive/default.lean Modified src/category_theory/preadditive/schur.lean + theorem category_theory.endomorphism_simple_eq_smul_id + theorem category_theory.finrank_endomorphism_eq_one + theorem category_theory.finrank_endomorphism_simple_eq_one + theorem category_theory.finrank_hom_simple_simple_eq_one_iff + theorem category_theory.finrank_hom_simple_simple_eq_zero_iff + theorem category_theory.finrank_hom_simple_simple_eq_zero_of_not_iso + theorem category_theory.finrank_hom_simple_simple_le_one - def category_theory.is_iso_equiv_nonzero + theorem category_theory.is_iso_iff_nonzero +/- theorem category_theory.is_iso_of_hom_simple Modified src/category_theory/simple.lean Modified src/linear_algebra/finite_dimensional.lean + theorem finrank_eq_one_iff_of_nonzero' 2021-05-03 07:41:58 62c06a5 feat(data/finset/basic): a finset has card at most one iff it is contained in a singleton (#7404) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_le_one_iff + theorem finset.card_le_one_iff_subset_singleton + theorem finset.card_le_one_of_subsingleton + theorem finset.one_lt_card_iff Modified src/data/fintype/basic.lean - theorem finset.card_le_one_iff - theorem finset.card_le_one_of_subsingleton - theorem finset.one_lt_card_iff 2021-05-02 18:59:48 0cc3cd5 feat(topology/category): Profinite has colimits (#7434) Show that a reflective subcategory of a cocomplete category is cocomplete, and derive that `CompHaus` and `Profinite` have colimits. ESTIMATED CHANGES Modified src/category_theory/monad/limits.lean + theorem category_theory.has_colimits_of_reflective + theorem category_theory.has_colimits_of_shape_of_reflective Modified src/topology/category/CompHaus.lean Modified src/topology/category/Profinite.lean 2021-05-02 14:19:06 c7ba3dd refactor(linear_algebra/eigenspace): refactor exists_eigenvalue (#7345) We replace the proof of `exists_eigenvalue` with the more general fact: ``` /-- Every element `f` in a nontrivial finite-dimensional algebra `A` over an algebraically closed field `K` has non-empty spectrum: that is, there is some `c : K` so `f - c • 1` is not invertible. -/ lemma exists_spectrum_of_is_alg_closed_of_finite_dimensional (𝕜 : Type*) [field 𝕜] [is_alg_closed 𝕜] {A : Type*} [nontrivial A] [ring A] [algebra 𝕜 A] [I : finite_dimensional 𝕜 A] (f : A) : ∃ c : 𝕜, ¬ is_unit (f - algebra_map 𝕜 A c) := ... ``` We can then use this fact to prove Schur's lemma. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.map_list_prod + theorem alg_hom.map_multiset_prod Modified src/algebra/group/units.lean + theorem is_unit.mul_iff Modified src/data/list/basic.lean + theorem list.prod_is_unit Modified src/data/multiset/basic.lean + theorem multiset.prod_to_list Modified src/field_theory/algebraic_closure.lean + theorem exists_spectrum_of_is_alg_closed_of_finite_dimensional Modified src/field_theory/splitting_field.lean + theorem polynomial.eq_prod_roots_of_monic_of_splits_id + theorem polynomial.eq_prod_roots_of_splits_id Modified src/linear_algebra/eigenspace.lean + theorem module.End.has_eigenvalue_of_has_eigenvector 2021-05-02 10:42:35 58e990d chore(dynamics/periodic_pts): remove duplicate of nat.dvd_right_iff_eq (#7435) ESTIMATED CHANGES Modified src/dynamics/periodic_pts.lean - theorem function.nat_dvd_iff_right 2021-05-02 09:28:57 4bd1c83 feat(topology/category/Profinite): Any continuous bijection of profinite spaces is an isomorphism. (#7430) ESTIMATED CHANGES Modified src/topology/category/CompHaus.lean + theorem CompHaus.is_closed_map + theorem CompHaus.is_iso_of_bijective + def CompHaus.iso_of_bijective Modified src/topology/category/Profinite.lean + theorem Profinite.is_closed_map + theorem Profinite.is_iso_of_bijective +/- def Profinite.to_Profinite_adj_to_CompHaus 2021-05-02 04:27:19 30f3788 feat(topology/discrete_quotient): Discrete quotients of topological spaces (#7425) This PR defines the type of discrete quotients of a topological space and provides a basic API. In a subsequent PR, this will be used to show that a profinite space is the limit of its finite quotients, which will be needed for the liquid tensor experiment. ESTIMATED CHANGES Added src/topology/discrete_quotient.lean + def discrete_quotient.comap + theorem discrete_quotient.eq_of_proj_eq + theorem discrete_quotient.exists_of_compat + theorem discrete_quotient.fiber_clopen + theorem discrete_quotient.fiber_closed + theorem discrete_quotient.fiber_eq + theorem discrete_quotient.fiber_le_of_le + theorem discrete_quotient.fiber_open + def discrete_quotient.of_clopen + def discrete_quotient.of_le + theorem discrete_quotient.of_le_continuous + theorem discrete_quotient.of_le_proj + theorem discrete_quotient.of_le_proj_apply + def discrete_quotient.proj + theorem discrete_quotient.proj_continuous + theorem discrete_quotient.proj_is_locally_constant + theorem discrete_quotient.proj_surjective + theorem discrete_quotient.refl + def discrete_quotient.setoid + theorem discrete_quotient.symm + theorem discrete_quotient.trans + structure discrete_quotient 2021-05-02 04:27:18 6d7e756 feat(linear_algebra/char_poly): charpoly of `left_mul_matrix` (#7397) This is an important ingredient for showing the field norm resp. trace of `x` is the product resp. sum of `x`'s conjugates. ESTIMATED CHANGES Modified src/linear_algebra/char_poly/coeff.lean + theorem char_poly_left_mul_matrix 2021-05-02 04:27:17 cfc7415 feat(field_theory/polynomial_galois_group): Galois group is S_p (#7352) Proves that a Galois group is isomorphic to S_p, under certain conditions. ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.eq_conj_iff_im Modified src/data/complex/module.lean + def complex.conj_alg_equiv Modified src/data/fintype/basic.lean +/- theorem set.to_finset_empty Modified src/data/polynomial/ring_division.lean + theorem polynomial.root_set_finite Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.gal_action_hom_bijective_of_prime_degree + theorem polynomial.gal.gal_action_hom_bijective_of_prime_degree_aux + theorem polynomial.gal.gal_action_hom_restrict + theorem polynomial.gal.splits_ℚ_ℂ Modified src/group_theory/subgroup.lean + theorem monoid_hom.of_injective_apply + def monoid_hom.of_left_inverse + theorem monoid_hom.of_left_inverse_apply + theorem monoid_hom.of_left_inverse_symm_apply 2021-05-02 00:17:41 6624bbe feat(category_theory/limits): dualizing some results (#7391) Requested on [zulip](https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics/topic/LocallyConstant.20preserves.20colimits/near/236442281). ESTIMATED CHANGES Renamed src/category_theory/limits/shapes/constructions/finite_products_of_binary_products.lean to src/category_theory/limits/constructions/finite_products_of_binary_products.lean + def category_theory.extend_cofan + def category_theory.extend_cofan_is_colimit + theorem category_theory.has_finite_coproducts_of_has_binary_and_terminal + def category_theory.preserves_finite_coproducts_of_preserves_binary_and_initial + def category_theory.preserves_ulift_fin_of_preserves_binary_and_initial Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean + theorem category_theory.limits.colimits_from_coequalizers_and_coproducts + theorem category_theory.limits.finite_colimits_from_coequalizers_and_finite_coproducts + theorem category_theory.limits.has_colimit_of_coequalizer_and_coproduct + def category_theory.limits.has_colimit_of_has_coproducts_of_has_coequalizers.build_colimit + def category_theory.limits.has_colimit_of_has_coproducts_of_has_coequalizers.build_is_colimit + def category_theory.limits.preserves_colimit_of_preserves_coequalizers_and_coproduct + def category_theory.limits.preserves_colimits_of_preserves_coequalizers_and_coproducts + def category_theory.limits.preserves_finite_colimits_of_preserves_coequalizers_and_finite_coproducts Modified src/category_theory/limits/preserves/shapes/binary_products.lean + def category_theory.limits.is_colimit_map_cocone_binary_cofan_equiv + def category_theory.limits.is_colimit_of_has_binary_coproduct_of_preserves_colimit + def category_theory.limits.is_colimit_of_reflects_of_map_is_colimit + def category_theory.limits.map_is_colimit_of_preserves_of_is_colimit + def category_theory.limits.preserves_colimit_pair.iso + theorem category_theory.limits.preserves_colimit_pair.iso_hom + def category_theory.limits.preserves_colimit_pair.of_iso_coprod_comparison + def category_theory.limits.preserves_limit_pair.iso + theorem category_theory.limits.preserves_limit_pair.iso_hom + def category_theory.limits.preserves_limit_pair.of_iso_prod_comparison - def category_theory.limits.preserves_pair.iso - theorem category_theory.limits.preserves_pair.iso_hom - def category_theory.limits.preserves_pair.of_iso_comparison Modified src/category_theory/limits/preserves/shapes/products.lean + def category_theory.limits.is_colimit_cofan_mk_obj_of_is_colimit + def category_theory.limits.is_colimit_map_cocone_cofan_mk_equiv + def category_theory.limits.is_colimit_of_has_coproduct_of_preserves_colimit + def category_theory.limits.is_colimit_of_is_colimit_cofan_mk_obj + theorem category_theory.limits.preserves_coproduct.inv_hom + def category_theory.limits.preserves_coproduct.iso + def category_theory.limits.preserves_coproduct.of_iso_comparison Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.coprod_comparison + theorem category_theory.limits.coprod_comparison_inl + theorem category_theory.limits.coprod_comparison_inr + theorem category_theory.limits.coprod_comparison_inv_natural + def category_theory.limits.coprod_comparison_nat_iso + def category_theory.limits.coprod_comparison_nat_trans + theorem category_theory.limits.coprod_comparison_natural +/- def category_theory.limits.coprod_is_coprod + theorem category_theory.limits.map_inl_inv_coprod_comparison + theorem category_theory.limits.map_inr_inv_coprod_comparison Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.coproduct_is_coproduct 2021-05-02 00:17:39 6e836c4 feat(group_theory/perm/{cycles, cycle_type}): permutations are conjugate iff they have the same cycle type (#7335) Slightly strengthens the induction principle `equiv.perm.cycle_induction_on` Proves that two permutations are conjugate iff they have the same cycle type: `equiv.perm.is_conj_iff_cycle_type_eq` ESTIMATED CHANGES Modified src/algebra/group/conj.lean + theorem conj_gpow + theorem conj_pow Modified src/group_theory/perm/cycle_type.lean + theorem equiv.perm.cycle_type_conj + theorem equiv.perm.filter_parts_partition_eq_cycle_type + theorem equiv.perm.is_conj_iff_cycle_type_eq + theorem equiv.perm.is_conj_of_cycle_type_eq + theorem equiv.perm.partition_eq_of_is_conj + theorem equiv.perm.parts_partition Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.card_support_conj + theorem equiv.perm.disjoint.is_conj_mul + theorem equiv.perm.is_cycle.is_cycle_conj + theorem equiv.perm.support_conj 2021-05-02 00:17:38 106ac8e feat(category_theory): definition of R-linear category (#7321) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Added src/category_theory/linear/default.lean + def category_theory.linear.comp + def category_theory.linear.left_comp + def category_theory.linear.right_comp 2021-05-02 00:17:37 decb556 feat(geometry/euclidean/basic): lemmas about angles and distances (#7140) ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.angle_eq_angle_of_angle_eq_pi_of_angle_eq_pi + theorem euclidean_geometry.angle_left_midpoint_eq_pi_div_two_of_dist_eq + theorem euclidean_geometry.angle_midpoint_eq_pi + theorem euclidean_geometry.angle_right_midpoint_eq_pi_div_two_of_dist_eq + theorem euclidean_geometry.dist_eq_abs_sub_dist_iff_angle_eq_zero + theorem euclidean_geometry.dist_eq_abs_sub_dist_of_angle_eq_zero + theorem euclidean_geometry.dist_eq_add_dist_iff_angle_eq_pi + theorem euclidean_geometry.dist_eq_add_dist_of_angle_eq_pi + theorem euclidean_geometry.dist_left_midpoint_eq_dist_right_midpoint + theorem euclidean_geometry.left_dist_ne_zero_of_angle_eq_pi + theorem euclidean_geometry.right_dist_ne_zero_of_angle_eq_pi + theorem inner_product_geometry.inner_eq_mul_norm_iff_angle_eq_zero + theorem inner_product_geometry.inner_eq_mul_norm_of_angle_eq_zero + theorem inner_product_geometry.inner_eq_neg_mul_norm_iff_angle_eq_pi + theorem inner_product_geometry.inner_eq_neg_mul_norm_of_angle_eq_pi + theorem inner_product_geometry.norm_add_eq_add_norm_iff_angle_eq_zero + theorem inner_product_geometry.norm_add_eq_add_norm_of_angle_eq_zero + theorem inner_product_geometry.norm_add_eq_norm_sub_iff_angle_eq_pi_div_two + theorem inner_product_geometry.norm_sub_eq_abs_sub_norm_iff_angle_eq_zero + theorem inner_product_geometry.norm_sub_eq_abs_sub_norm_of_angle_eq_zero + theorem inner_product_geometry.norm_sub_eq_add_norm_iff_angle_eq_pi + theorem inner_product_geometry.norm_sub_eq_add_norm_of_angle_eq_pi 2021-05-01 20:07:58 ea379b0 feat(topology/continuous_function): the Stone-Weierstrass theorem (#7305) # The Stone-Weierstrass theorem If a subalgebra `A` of `C(X, ℝ)`, where `X` is a compact Hausdorff space, separates points, then it is dense. We argue as follows. * In any subalgebra `A` of `C(X, ℝ)`, if `f ∈ A`, then `abs f ∈ A.topological_closure`. This follows from the Weierstrass approximation theorem on `[-∥f∥, ∥f∥]` by approximating `abs` uniformly thereon by polynomials. * This ensures that `A.topological_closure` is actually a sublattice: if it contains `f` and `g`, then it contains the pointwise supremum `f ⊔ g` and the pointwise infimum `f ⊓ g`. * Any nonempty sublattice `L` of `C(X, ℝ)` which separates points is dense, by a nice argument approximating a given `f` above and below using separating functions. For each `x y : X`, we pick a function `g x y ∈ L` so `g x y x = f x` and `g x y y = f y`. By continuity these functions remain close to `f` on small patches around `x` and `y`. We use compactness to identify a certain finitely indexed infimum of finitely indexed supremums which is then close to `f` everywhere, obtaining the desired approximation. * Finally we put these pieces together. `L = A.topological_closure` is a nonempty sublattice which separates points since `A` does, and so is dense (in fact equal to `⊤`). ## Future work Prove the complex version for self-adjoint subalgebras `A`, by separately approximating the real and imaginary parts using the real subalgebra of real-valued functions in `A` (which still separates points, by taking the norm-square of a separating function). Extend to cover the case of subalgebras of the continuous functions vanishing at infinity, on non-compact Hausdorff spaces. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/data/finset/lattice.lean + theorem finset.inf'_const + theorem finset.sup'_const Modified src/order/filter/basic.lean + theorem filter.tendsto.frequently_map Modified src/topology/algebra/algebra.lean + theorem subalgebra.subalgebra_topological_closure - theorem subalgebra.subring_topological_closure Modified src/topology/algebra/module.lean + theorem submodule.topological_closure_coe Modified src/topology/algebra/ring.lean + theorem subsemiring.topological_closure_coe Modified src/topology/continuous_function/basic.lean + theorem continuous_map.continuous_set_coe Modified src/topology/continuous_function/bounded.lean + theorem bounded_continuous_function.algebra_map_apply Modified src/topology/continuous_function/compact.lean + theorem continuous_map.apply_le_norm + theorem continuous_map.neg_norm_le_apply Added src/topology/continuous_function/stone_weierstrass.lean + theorem continuous_map.abs_mem_subalgebra_closure + def continuous_map.attach_bound + theorem continuous_map.attach_bound_apply_coe + theorem continuous_map.comp_attach_bound_mem_closure + theorem continuous_map.continuous_map_mem_subalgebra_closure_of_separates_points + theorem continuous_map.exists_mem_subalgebra_near_continuous_map_of_separates_points + theorem continuous_map.exists_mem_subalgebra_near_continuous_of_separates_points + theorem continuous_map.inf_mem_closed_subalgebra + theorem continuous_map.inf_mem_subalgebra_closure + theorem continuous_map.polynomial_comp_attach_bound + theorem continuous_map.polynomial_comp_attach_bound_mem + theorem continuous_map.subalgebra_topological_closure_eq_top_of_separates_points + theorem continuous_map.sublattice_closure_eq_top + theorem continuous_map.sup_mem_closed_subalgebra + theorem continuous_map.sup_mem_subalgebra_closure 2021-05-01 18:03:22 d3c565d feat(category_theory/monoidal): the monoidal coherence theorem (#7324) This PR contains a proof of the monoidal coherence theorem, stated in the following way: if `C` is any type, then the free monoidal category over `C` is a preorder. This should immediately imply the statement needed in the `coherence` branch. ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/monoidal/category.lean +/- theorem category_theory.monoidal_category.triangle_assoc_comp_left_inv +/- theorem category_theory.monoidal_category.triangle_assoc_comp_right +/- theorem category_theory.monoidal_category.triangle_assoc_comp_right_inv Added src/category_theory/monoidal/free/basic.lean + inductive category_theory.free_monoidal_category.hom + inductive category_theory.free_monoidal_category.hom_equiv + theorem category_theory.free_monoidal_category.mk_comp + theorem category_theory.free_monoidal_category.mk_id + theorem category_theory.free_monoidal_category.mk_l_hom + theorem category_theory.free_monoidal_category.mk_l_inv + theorem category_theory.free_monoidal_category.mk_tensor + theorem category_theory.free_monoidal_category.mk_α_hom + theorem category_theory.free_monoidal_category.mk_α_inv + theorem category_theory.free_monoidal_category.mk_ρ_hom + theorem category_theory.free_monoidal_category.mk_ρ_inv + def category_theory.free_monoidal_category.project + def category_theory.free_monoidal_category.project_map + def category_theory.free_monoidal_category.project_map_aux + def category_theory.free_monoidal_category.project_obj + def category_theory.free_monoidal_category.setoid_hom + theorem category_theory.free_monoidal_category.tensor_eq_tensor + theorem category_theory.free_monoidal_category.unit_eq_unit + inductive category_theory.free_monoidal_category Added src/category_theory/monoidal/free/coherence.lean + def category_theory.free_monoidal_category.full_normalize + def category_theory.free_monoidal_category.full_normalize_iso + def category_theory.free_monoidal_category.inclusion + def category_theory.free_monoidal_category.inclusion_obj + def category_theory.free_monoidal_category.inverse_aux + inductive category_theory.free_monoidal_category.normal_monoidal_object + def category_theory.free_monoidal_category.normalize' + def category_theory.free_monoidal_category.normalize + def category_theory.free_monoidal_category.normalize_iso + def category_theory.free_monoidal_category.normalize_iso_app + theorem category_theory.free_monoidal_category.normalize_iso_app_tensor + theorem category_theory.free_monoidal_category.normalize_iso_app_unitor + def category_theory.free_monoidal_category.normalize_iso_aux + def category_theory.free_monoidal_category.normalize_map_aux + def category_theory.free_monoidal_category.normalize_obj + theorem category_theory.free_monoidal_category.normalize_obj_tensor + theorem category_theory.free_monoidal_category.normalize_obj_unitor + def category_theory.free_monoidal_category.tensor_func + theorem category_theory.free_monoidal_category.tensor_func_map_app + theorem category_theory.free_monoidal_category.tensor_func_obj_map 2021-05-01 15:16:03 790ec6b feat(algebra/archimedean): rat.cast_round for non-archimedean fields (#7424) The theorem still applies to the non-canonical archimedean instance (at least if you use simp). I've also added `rat.cast_ceil` because it seems to fit here. ESTIMATED CHANGES Modified src/algebra/archimedean.lean +/- theorem abs_sub_round + theorem rat.cast_ceil +/- theorem rat.cast_floor +/- theorem rat.cast_round +/- def round Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean +/- theorem generalized_continued_fraction.terminates_iff_rat 2021-05-01 15:16:02 92b9048 chore(topology/continuous_function/algebra): put `coe_fn_monoid_hom `into the `continuous_map` namespace (#7423) Rather than adding `continuous_map.` to the definition, this wraps everything in a namespace to make this type of mistake unlikely to happen again. This also adds `comp_monoid_hom'` to golf a proof. ESTIMATED CHANGES Modified src/topology/continuous_function/algebra.lean - def coe_fn_monoid_hom + def continuous_map.coe_fn_monoid_hom +/- theorem continuous_map.coe_prod + def continuous_map.comp_monoid_hom' +/- theorem continuous_map.div_coe +/- theorem continuous_map.div_comp +/- theorem continuous_map.inv_coe +/- theorem continuous_map.inv_comp + theorem continuous_map.one_comp +/- theorem continuous_map.pow_coe +/- theorem continuous_map.pow_comp +/- theorem continuous_map.prod_apply +/- theorem continuous_map.smul_apply +/- theorem continuous_map.smul_coe +/- theorem continuous_map.smul_comp 2021-05-01 09:09:54 5511275 chore(measure_theory/ae_eq_fun_metric): remove useless file (#7419) The file `measure_theory/ae_eq_fun_metric.lean` used to contain an edistance on the space of equivalence classes of functions. It has been replaced by the use of the `L^1` space in #5510, so this file is now useless and should be removed. ESTIMATED CHANGES Deleted src/measure_theory/ae_eq_fun_metric.lean - theorem measure_theory.ae_eq_fun.coe_fn_edist - theorem measure_theory.ae_eq_fun.edist_add_right - theorem measure_theory.ae_eq_fun.edist_eq_coe' - theorem measure_theory.ae_eq_fun.edist_eq_coe - theorem measure_theory.ae_eq_fun.edist_mk_mk' - theorem measure_theory.ae_eq_fun.edist_mk_mk - theorem measure_theory.ae_eq_fun.edist_smul - theorem measure_theory.ae_eq_fun.edist_zero_eq_coe 2021-05-01 09:09:53 d04af20 feat(linear_algebra/quadratic_form): add lemmas about sums of quadratic forms (#7417) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + def quadratic_form.coe_fn_add_monoid_hom + theorem quadratic_form.coe_fn_sum + theorem quadratic_form.coe_fn_zero + def quadratic_form.eval_add_monoid_hom + theorem quadratic_form.sum_apply 2021-05-01 09:09:52 bf0f15a chore(algebra/algebra/basic): add missing lemmas (#7412) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem alg_equiv.coe_refl + theorem alg_equiv.coe_trans + theorem alg_equiv.left_inverse_symm + theorem alg_equiv.refl_to_alg_hom + theorem alg_equiv.right_inverse_symm +/- theorem alg_equiv.trans_apply + theorem alg_hom.coe_comp + theorem alg_hom.coe_id +/- theorem alg_hom.comp_apply + theorem alg_hom.comp_to_ring_hom +/- theorem alg_hom.id_apply + theorem alg_hom.id_to_ring_hom 2021-05-01 06:41:10 e3de4e3 fix(algebra/direct_sum_graded): replace badly-stated and slow `simps` lemmas with manual ones (#7403) [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/simps.20is.20very.20slow/near/236636962). The `simps mul` attribute on `direct_sum.ghas_mul.of_add_subgroups` was taking 44s, only to produce a lemma that wasn't very useful anyway. ESTIMATED CHANGES Modified src/algebra/direct_sum_graded.lean + theorem direct_sum.ghas_mul.of_add_subgroups_mul + theorem direct_sum.ghas_mul.of_add_submonoids_mul + theorem direct_sum.ghas_mul.of_submodules_mul 2021-05-01 06:41:09 aa37eee feat(analysis/special_functions/integrals): integral of `cos x ^ n` (#7402) The reduction of `∫ x in a..b, cos x ^ n`, ∀ n ∈ ℕ, 2 ≤ n, as well as the integral of `cos x ^ 2` as a special case. ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean + theorem integral_cos_pow + theorem integral_cos_pow_aux + theorem integral_cos_sq Modified test/integration.lean 2021-05-01 06:41:08 2cc8128 feat(algebra/polynomial): generalize to `multiset` products (#7399) This PR generalizes the results in `algebra.polynomial.big_operators` to sums and products of multisets. The new multiset results are stated for `multiset.prod t`, not `(multiset.map t f).prod`. To get the latter, you can simply rewrite with `multiset.map_map`. ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean + theorem polynomial.coeff_zero_multiset_prod + theorem polynomial.degree_multiset_prod + theorem polynomial.leading_coeff_multiset_prod' + theorem polynomial.leading_coeff_multiset_prod + theorem polynomial.multiset_prod_X_sub_C_coeff_card_pred + theorem polynomial.multiset_prod_X_sub_C_next_coeff + theorem polynomial.nat_degree_multiset_prod' + theorem polynomial.nat_degree_multiset_prod_le + theorem polynomial.nat_degree_multiset_prod_of_monic Modified src/data/polynomial/monic.lean + theorem polynomial.monic.next_coeff_multiset_prod + theorem polynomial.monic_multiset_prod_of_monic 2021-05-01 00:19:22 d5d22c5 feat(algebra/squarefree): add sq_mul_squarefree lemmas (#7282) Every positive natural number can be expressed as m^2 * n where n is square free. Used in #7274 ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem nat.sq_mul_squarefree + theorem nat.sq_mul_squarefree_of_pos' + theorem nat.sq_mul_squarefree_of_pos 2021-05-01 00:19:21 b51cee2 feat(data/polynomial/coeff): Add smul_eq_C_mul (#7240) Adding a lemma `polynomial.smul_eq_C_mul` for single variate polynomials analogous to `mv_polynomial.smul_eq_C_mul` for multivariate. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + def polynomial.C + theorem polynomial.C_0 + theorem polynomial.C_1 + theorem polynomial.C_add + theorem polynomial.C_bit0 + theorem polynomial.C_bit1 + theorem polynomial.C_eq_nat_cast + theorem polynomial.C_eq_zero + theorem polynomial.C_inj + theorem polynomial.C_mul + theorem polynomial.C_pow + theorem polynomial.coeff_C + theorem polynomial.coeff_C_ne_zero + theorem polynomial.coeff_C_zero + theorem polynomial.monomial_eq_smul_X + theorem polynomial.monomial_zero_left + theorem polynomial.nontrivial.of_polynomial_ne + theorem polynomial.single_eq_C_mul_X + theorem polynomial.sum_C_index Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/monomial.lean - def polynomial.C - theorem polynomial.C_0 - theorem polynomial.C_1 - theorem polynomial.C_add - theorem polynomial.C_bit0 - theorem polynomial.C_bit1 - theorem polynomial.C_eq_nat_cast - theorem polynomial.C_eq_zero - theorem polynomial.C_inj - theorem polynomial.C_mul - theorem polynomial.C_pow - theorem polynomial.coeff_C - theorem polynomial.coeff_C_ne_zero - theorem polynomial.coeff_C_zero - theorem polynomial.monomial_eq_smul_X - theorem polynomial.monomial_zero_left - theorem polynomial.nontrivial.of_polynomial_ne - theorem polynomial.single_eq_C_mul_X + theorem polynomial.smul_eq_C_mul - theorem polynomial.sum_C_index 2021-05-01 00:19:20 b88a9d1 feat(category_theory/enriched): abstract enriched categories (#7175) # Enriched categories We set up the basic theory of `V`-enriched categories, for `V` an arbitrary monoidal category. We do not assume here that `V` is a concrete category, so there does not need to be a "honest" underlying category! Use `X ⟶[V] Y` to obtain the `V` object of morphisms from `X` to `Y`. This file contains the definitions of `V`-enriched categories and `V`-functors. We don't yet define the `V`-object of natural transformations between a pair of `V`-functors (this requires limits in `V`), but we do provide a presheaf isomorphic to the Yoneda embedding of this object. We verify that when `V = Type v`, all these notion reduce to the usual ones. ESTIMATED CHANGES Modified src/algebra/category/Module/adjunctions.lean Added src/category_theory/enriched/basic.lean + def category_theory.category_of_enriched_category_Type + theorem category_theory.e_assoc + def category_theory.e_comp + theorem category_theory.e_comp_id + def category_theory.e_id + theorem category_theory.e_id_comp + def category_theory.enriched_category_Type_equiv_category + def category_theory.enriched_category_Type_of_category + def category_theory.enriched_functor.comp + def category_theory.enriched_functor.forget + def category_theory.enriched_functor.id + structure category_theory.enriched_functor + def category_theory.enriched_functor_Type_equiv_functor + def category_theory.enriched_nat_trans_yoneda + def category_theory.enriched_nat_trans_yoneda_Type_iso_yoneda_nat_trans + def category_theory.forget_enrichment.hom_of + theorem category_theory.forget_enrichment.hom_of_hom_to + def category_theory.forget_enrichment.hom_to + theorem category_theory.forget_enrichment.hom_to_hom_of + def category_theory.forget_enrichment.of + theorem category_theory.forget_enrichment.of_to + def category_theory.forget_enrichment.to + theorem category_theory.forget_enrichment.to_of + def category_theory.forget_enrichment + theorem category_theory.forget_enrichment_comp + theorem category_theory.forget_enrichment_id' + theorem category_theory.forget_enrichment_id + structure category_theory.graded_nat_trans + def category_theory.transport_enrichment Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.unitors_inv_equal Modified src/category_theory/monoidal/center.lean + theorem category_theory.center.ext + def category_theory.center.of_braided + def category_theory.center.of_braided_obj + theorem category_theory.center.tensor_unit_β Modified src/category_theory/monoidal/functor.lean + theorem category_theory.lax_monoidal_functor.associativity_inv + theorem category_theory.lax_monoidal_functor.left_unitality_inv + theorem category_theory.lax_monoidal_functor.right_unitality_inv Modified src/category_theory/monoidal/internal/types.lean Modified src/category_theory/monoidal/types.lean + theorem category_theory.associator_hom_apply + theorem category_theory.associator_inv_apply + theorem category_theory.braiding_hom_apply + theorem category_theory.braiding_inv_apply + def category_theory.coyoneda_tensor_unit + theorem category_theory.left_unitor_hom_apply + theorem category_theory.left_unitor_inv_apply - theorem category_theory.monoidal.associator_hom_apply - theorem category_theory.monoidal.associator_inv_apply - theorem category_theory.monoidal.braiding_hom_apply - theorem category_theory.monoidal.braiding_inv_apply - theorem category_theory.monoidal.left_unitor_hom_apply - theorem category_theory.monoidal.left_unitor_inv_apply - theorem category_theory.monoidal.right_unitor_hom_apply - theorem category_theory.monoidal.right_unitor_inv_apply - theorem category_theory.monoidal.tensor_apply + theorem category_theory.right_unitor_hom_apply + theorem category_theory.right_unitor_inv_apply + theorem category_theory.tensor_apply 2021-05-01 00:19:19 802c5b5 feat(linear_algebra/determinant): various operations preserve the determinant (#7115) These are a couple of helper lemmas for computing the determinant of a Vandermonde matrix. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.update_column_eq_self + theorem matrix.update_row_eq_self Modified src/linear_algebra/determinant.lean + theorem matrix.det_eq_of_eq_det_one_mul + theorem matrix.det_eq_of_eq_mul_det_one + theorem matrix.det_eq_of_forall_col_eq_smul_add_pred + theorem matrix.det_eq_of_forall_row_eq_smul_add_const + theorem matrix.det_eq_of_forall_row_eq_smul_add_const_aux + theorem matrix.det_eq_of_forall_row_eq_smul_add_pred + theorem matrix.det_eq_of_forall_row_eq_smul_add_pred_aux + theorem matrix.det_mul_column + theorem matrix.det_mul_row + theorem matrix.det_update_column_add_self + theorem matrix.det_update_column_add_smul_self + theorem matrix.det_update_row_add_self + theorem matrix.det_update_row_add_smul_self + theorem matrix.det_zero_of_column_eq 2021-05-01 00:19:18 6c61779 refactor(group_theory/order_of_element): use minimal_period for the definition (#7082) This PR redefines `order_of_element` in terms of `function.minimal_period`. It furthermore introduces a predicate on elements of a finite group to be of finite order. Co-authored by: Damiano Testa adomani@gmail.com ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean Modified src/algebra/group/basic.lean + theorem mul_one_eq_id + theorem one_mul_eq_id Modified src/algebra/iterate_hom.lean +/- theorem add_left_iterate +/- theorem add_right_iterate + theorem add_right_iterate_apply_zero + theorem commute.function_commute_mul_left + theorem commute.function_commute_mul_right +/- theorem mul_left_iterate +/- theorem mul_right_iterate + theorem mul_right_iterate_apply_one + theorem semiconj_by.function_semiconj_mul_left + theorem semiconj_by.function_semiconj_mul_right_swap Modified src/algebra/regular.lean Modified src/dynamics/periodic_pts.lean + theorem function.commute.minimal_period_of_comp_dvd_lcm + theorem function.is_fixed_point_iff_minimal_period_eq_one + theorem function.iterate_eq_mod_minimal_period + theorem function.minimal_period_eq_minimal_period_iff + theorem function.minimal_period_eq_prime + theorem function.minimal_period_eq_prime_pow + theorem function.minimal_period_id + theorem function.minimal_period_iterate_eq_div_gcd' + theorem function.minimal_period_iterate_eq_div_gcd + theorem function.nat_dvd_iff_right + theorem function.not_is_periodic_pt_of_pos_of_lt_minimal_period Modified src/group_theory/order_of_element.lean +/- theorem add_order_eq_card_gmultiples +/- theorem add_order_of_dvd_card_univ +/- theorem add_order_of_dvd_iff_nsmul_eq_zero +/- theorem add_order_of_dvd_of_nsmul_eq_zero +/- theorem add_order_of_eq_add_order_of_iff +/- theorem add_order_of_eq_card_multiples +/- theorem add_order_of_eq_one_iff +/- theorem add_order_of_eq_prime +/- theorem add_order_of_eq_prime_pow - theorem add_order_of_eq_zero +/- theorem add_order_of_injective +/- theorem add_order_of_le_card_univ - theorem add_order_of_le_of_nsmul_eq_zero' +/- theorem add_order_of_le_of_nsmul_eq_zero +/- theorem add_order_of_nsmul'' +/- theorem add_order_of_nsmul +/- theorem add_order_of_nsmul_eq_zero +/- theorem add_order_of_of_mul_eq_order_of - theorem add_order_of_pos' +/- theorem add_order_of_pos +/- theorem add_order_of_zero +/- theorem card_nsmul_eq_zero +/- theorem commute.order_of_mul_dvd_lcm +/- theorem exists_gpow_eq_one +/- theorem exists_gsmul_eq_zero +/- theorem exists_nsmul_eq_self_of_coprime +/- theorem exists_nsmul_eq_zero +/- theorem exists_pow_eq_one +/- theorem exists_pow_eq_self_of_coprime +/- theorem fin_equiv_gmultiples_apply +/- theorem fin_equiv_gmultiples_symm_apply +/- theorem fin_equiv_gpowers_apply +/- theorem fin_equiv_gpowers_symm_apply +/- theorem fin_equiv_multiples_apply +/- theorem fin_equiv_multiples_symm_apply +/- theorem fin_equiv_powers_apply +/- theorem fin_equiv_powers_symm_apply +/- theorem gcd_nsmul_card_eq_zero_iff +/- theorem gmultiples_equiv_gmultiples_apply +/- theorem gpow_eq_mod_order_of +/- theorem gpowers_equiv_gpowers_apply +/- theorem gsmul_eq_mod_add_order_of +/- theorem image_range_add_order_of +/- theorem image_range_order_of + def is_of_fin_add_order + theorem is_of_fin_add_order_iff_nsmul_eq_zero + theorem is_of_fin_add_order_of_mul_iff + def is_of_fin_order + theorem is_of_fin_order_iff_pow_eq_one + theorem is_of_fin_order_of_add_iff + theorem is_periodic_pt_add_iff_nsmul_eq_zero + theorem is_periodic_pt_mul_iff_pow_eq_one +/- theorem mem_gmultiples_iff_mem_range_add_order_of +/- theorem mem_gpowers_iff_mem_range_order_of +/- theorem mem_multiples_iff_mem_gmultiples +/- theorem mem_multiples_iff_mem_range_add_order_of +/- theorem mem_powers_iff_mem_gpowers +/- theorem mem_powers_iff_mem_range_order_of +/- theorem multiples_eq_gmultiples +/- theorem multiples_equiv_multiples_apply +/- theorem nsmul_eq_mod_add_order_of + theorem nsmul_ne_zero_of_lt_add_order_of' +/- theorem order_eq_card_gpowers +/- theorem order_eq_card_powers +/- theorem order_of_dvd_card_univ +/- theorem order_of_dvd_iff_pow_eq_one +/- theorem order_of_dvd_of_pow_eq_one +/- theorem order_of_eq_one_iff +/- theorem order_of_eq_order_of_iff +/- theorem order_of_eq_prime +/- theorem order_of_eq_prime_pow +/- theorem order_of_eq_zero +/- theorem order_of_injective +/- theorem order_of_le_card_univ - theorem order_of_le_of_pow_eq_one' +/- theorem order_of_le_of_pow_eq_one +/- theorem order_of_of_add_eq_add_order_of +/- theorem order_of_one +/- theorem order_of_pos' +/- theorem order_of_pos +/- theorem order_of_pow'' +/- theorem order_of_pow +/- theorem order_of_subgroup +/- theorem order_of_submonoid +/- theorem pow_card_eq_one +/- theorem pow_eq_mod_order_of + theorem pow_eq_one_of_lt_order_of' +/- theorem pow_gcd_card_eq_one_iff +/- theorem pow_injective_aux +/- theorem pow_injective_of_lt_order_of +/- theorem pow_order_of_eq_one +/- theorem powers_eq_gpowers +/- theorem powers_equiv_powers_apply +/- theorem sum_card_add_order_of_eq_card_nsmul_eq_zero +/- theorem sum_card_order_of_eq_card_pow_eq_one Modified src/group_theory/specific_groups/dihedral.lean Modified src/group_theory/specific_groups/quaternion.lean Modified src/group_theory/sylow.lean Modified src/topology/algebra/ordered.lean 2021-04-30 20:11:22 16c8f7f feat(algebraic_geometry/prime_spectrum): Basic opens are compact (#7411) This proves that basic opens are compact in the zariski topology. Compactness of the whole space is then realized as a special case. Also adds a few lemmas about zero loci. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean + theorem prime_spectrum.basic_open_le_basic_open_iff + theorem prime_spectrum.basic_open_mul_le_left + theorem prime_spectrum.basic_open_mul_le_right + theorem prime_spectrum.is_compact_basic_open + theorem prime_spectrum.zero_locus_subset_zero_locus_iff + theorem prime_spectrum.zero_locus_subset_zero_locus_singleton_iff Modified src/ring_theory/ideal/operations.lean + theorem ideal.radical_le_radical_iff 2021-04-30 20:11:21 aebe755 refactor(algebra/group_power): put lemmas about order and power in their own file (#7398) This means `group_power/basic` has fewer dependencies, making it accessible earlier in the import graph. The first two lemmas in this `basic` were moved to the end of `order`, but otherwise lemmas have been moved without modification and kept in the same order. The new imports added in other files are the ones needed to make this build. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean - theorem abs_le_abs_of_sq_le_sq - theorem abs_le_of_sq_le_sq' - theorem abs_le_of_sq_le_sq - theorem abs_lt_abs_of_sq_lt_sq - theorem abs_lt_of_sq_lt_sq' - theorem abs_lt_of_sq_lt_sq - theorem abs_neg_one_pow - theorem abs_sq - theorem canonically_ordered_semiring.one_le_pow_of_one_le - theorem canonically_ordered_semiring.pow_le_one - theorem canonically_ordered_semiring.pow_le_pow_of_le_left - theorem canonically_ordered_semiring.pow_pos - theorem eq_of_sq_eq_sq - theorem gsmul_nonneg - theorem le_of_pow_le_pow - theorem lt_of_pow_lt_pow - theorem nsmul_le_nsmul - theorem nsmul_le_nsmul_of_le_right - theorem nsmul_lt_nsmul - theorem nsmul_nonneg - theorem nsmul_pos - theorem one_le_pow_of_one_le - theorem pow_abs - theorem pow_add_pow_le - theorem pow_bit0_nonneg - theorem pow_bit0_pos - theorem pow_le_pow - theorem pow_le_pow_of_le_left - theorem pow_left_inj - theorem pow_lt_pow - theorem pow_lt_pow_iff - theorem pow_lt_pow_of_lt_left - theorem pow_mono - theorem pow_nonneg - theorem pow_pos - theorem sq_abs - theorem sq_le_sq' - theorem sq_le_sq - theorem sq_lt_sq' - theorem sq_lt_sq - theorem sq_nonneg - theorem sq_pos_of_ne_zero - theorem strict_mono_incr_on_pow - theorem strict_mono_pow - theorem two_mul_le_add_sq Modified src/algebra/group_power/lemmas.lean Added src/algebra/group_power/order.lean + theorem abs_le_abs_of_sq_le_sq + theorem abs_le_of_sq_le_sq' + theorem abs_le_of_sq_le_sq + theorem abs_lt_abs_of_sq_lt_sq + theorem abs_lt_of_sq_lt_sq' + theorem abs_lt_of_sq_lt_sq + theorem abs_neg_one_pow + theorem abs_sq + theorem canonically_ordered_semiring.one_le_pow_of_one_le + theorem canonically_ordered_semiring.pow_le_one + theorem canonically_ordered_semiring.pow_le_pow_of_le_left + theorem canonically_ordered_semiring.pow_pos + theorem eq_of_sq_eq_sq + theorem gsmul_nonneg + theorem le_of_pow_le_pow + theorem lt_of_pow_lt_pow + theorem nsmul_le_nsmul + theorem nsmul_le_nsmul_of_le_right + theorem nsmul_lt_nsmul + theorem nsmul_nonneg + theorem nsmul_pos + theorem one_le_pow_of_one_le + theorem pow_abs + theorem pow_add_pow_le + theorem pow_bit0_nonneg + theorem pow_bit0_pos + theorem pow_le_pow + theorem pow_le_pow_of_le_left + theorem pow_left_inj + theorem pow_lt_pow + theorem pow_lt_pow_iff + theorem pow_lt_pow_of_lt_left + theorem pow_mono + theorem pow_nonneg + theorem pow_pos + theorem sq_abs + theorem sq_le_sq' + theorem sq_le_sq + theorem sq_lt_sq' + theorem sq_lt_sq + theorem sq_nonneg + theorem sq_pos_of_ne_zero + theorem strict_mono_incr_on_pow + theorem strict_mono_pow + theorem two_mul_le_add_sq Modified src/data/nat/basic.lean 2021-04-30 20:11:19 6d5a120 refactor(linear_algebra/eigenspace): cleanup proof (#7337) At some point we changed the proof of `exists_eigenvalue` so that it used the fact that any endomorphism of a vector space is integral. This means we don't actually need to pick a nonzero vector at any point, but the proof had been left in a hybrid state, which I've now cleaned up. In a later PR I'll generalise this proof so it proves Schur's lemma. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Modified src/linear_algebra/eigenspace.lean 2021-04-30 20:11:18 5800f69 feat(category_theory/Quiv): the free/forgetful adjunction between Cat and Quiv (#7158) ESTIMATED CHANGES Added src/category_theory/category/Quiv.lean + def category_theory.Cat.free + def category_theory.Quiv.adj + def category_theory.Quiv.forget + def category_theory.Quiv.lift + def category_theory.Quiv.of + def category_theory.Quiv Modified src/category_theory/functor.lean +/- structure category_theory.functor Added src/category_theory/path_category.lean + def category_theory.compose_path + theorem category_theory.compose_path_comp + def category_theory.paths.of + def category_theory.paths + theorem category_theory.prefunctor.map_path_comp' Modified src/combinatorics/quiver.lean + def prefunctor.comp + def prefunctor.id + def prefunctor.map_path + theorem prefunctor.map_path_comp + theorem prefunctor.map_path_cons + theorem prefunctor.map_path_nil + structure prefunctor +/- inductive quiver.path 2021-04-30 14:55:00 64fdfc7 feat(category_theory/sites): construct a presieve from an indexed family of arrows (#7413) For the LTE: alternate constructors for presieves which can be more convenient. ESTIMATED CHANGES Modified src/category_theory/sites/pretopology.lean - inductive category_theory.pullback_arrows - theorem category_theory.pullback_arrows_comm - theorem category_theory.pullback_singleton Modified src/category_theory/sites/sieves.lean + inductive category_theory.presieve.of_arrows + theorem category_theory.presieve.of_arrows_bind + theorem category_theory.presieve.of_arrows_pullback + theorem category_theory.presieve.of_arrows_punit + inductive category_theory.presieve.pullback_arrows + theorem category_theory.presieve.pullback_singleton + theorem category_theory.sieve.pullback_arrows_comm Modified src/category_theory/sites/spaces.lean 2021-04-30 10:14:07 4722dd4 feat(ring_theory/finiteness): add add_monoid_algebra.ft_of_fg (#7265) This is from `lean_liquid`. We prove `add_monoid_algebra.ft_of_fg`: if `M` is a finitely generated monoid then `add_monoid_algebra R M` if finitely generated as `R-alg`. The converse is also true, but the proof is longer and I wanted to keep the PR small. - [x] depends on: #7279 ESTIMATED CHANGES Modified src/algebra/module/submodule.lean + theorem submodule.mem_to_add_submonoid Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.induction_on + def add_monoid_algebra.to_multiplicative_alg_equiv + theorem monoid_algebra.induction_on + def monoid_algebra.to_additive_alg_equiv Modified src/ring_theory/finiteness.lean + theorem add_monoid_algebra.mv_polynomial_aeval_of_surjective_of_closure + theorem monoid_algebra.mv_polynomial_aeval_of_surjective_of_closure 2021-04-30 10:14:06 4a94b28 feat(category_theory/sites): Sheaves of structures (#5927) Define sheaves on a site taking values in an arbitrary category. Joint with @kbuzzard. cc: @jcommelin, this is a step towards condensed abelian groups. I don't love the names here, design advice (particularly from those who'll use this) more than appreciated. The main points are: - An `A`-valued presheaf `P : C^op => A` is defined to be a sheaf (for the topology J) iff for every `X : A`, the type-valued presheaves of sets given by sending `U : C^op` to `Hom_{A}(X, P U)` are all sheaves of sets. - When `A = Type`, this recovers the basic definition of sheaves of sets. - An alternate definition when `C` is small, has pullbacks and `A` has products is given by an equalizer condition `is_sheaf'`. - This is equivalent to the earlier definition. - When `A = Type`, this is definitionally equal to the equalizer condition for presieves in sheaf_of_types.lean - When `A` has limits and there is a functor `s : A => Type` which is faithful, reflects isomorphisms and preserves limits, then `P : C^op => A` is a sheaf iff the underlying presheaf of types `P >>> s : C^op => Type` is a sheaf. (cf https://stacks.math.columbia.edu/tag/0073, which is a weaker version of this statement (it's only over spaces, not sites) and https://stacks.math.columbia.edu/tag/00YR (a), which additionally assumes filtered colimits). A couple of questions for reviewers: - We've now got a ton of equivalent ways of showing something's a sheaf, and it's not the easiest to navigate between them. Is there a nice way around this? I think it's still valuable to have all the ways, since each can be helpful in different contexts but it makes the API a bit opaque. There's also a bit of inconsistency - there's a definition `yoneda_sheaf_condition` which is the same as `is_sheaf_for` but the equalizer conditions at the bottom of sheaf_of_types aren't named, they're just some `nonempty (is_limit (fork.of_ι _ (w P R)))` even though they're also equivalent. - The name `presieve.is_sheaf` is stupid, I think I was just lazy with namespaces. I think `presieve.family_of_elements` and `presieve.is_sheaf_for` are still sensible, since they are relative to a presieve, but `is_sheaf` doesn't have any reference to presieves in its type. - The equalizer condition of sheaves of types is definitionally the same as the equalizer condition for sheaves of structures, so is there any point in having the former version in the library - the latter is just more general (the same doesn't apply to the actual def of sheaves of structures since that's defined in terms of sheaves of types). The main downside I can see is that it might make the proofs of `equalizer_sheaf_condition` a bit trickier, but that's about it ESTIMATED CHANGES Added src/category_theory/sites/sheaf.lean + def category_theory.Sheaf + def category_theory.Sheaf_equiv_SheafOfTypes + def category_theory.Sheaf_to_presheaf + theorem category_theory.is_sheaf_iff_is_sheaf_of_type + def category_theory.presheaf.first_map + def category_theory.presheaf.first_obj + def category_theory.presheaf.fork_map + def category_theory.presheaf.is_sheaf' + def category_theory.presheaf.is_sheaf + def category_theory.presheaf.is_sheaf_for_is_sheaf_for' + theorem category_theory.presheaf.is_sheaf_iff_is_sheaf' + theorem category_theory.presheaf.is_sheaf_iff_is_sheaf_forget + def category_theory.presheaf.second_map + def category_theory.presheaf.second_obj + theorem category_theory.presheaf.w Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/sites/sieves.lean + theorem category_theory.sieve.generate_sieve 2021-04-30 05:44:03 f36cc16 chore(topology/category): some lemmas for Profinite functions (#7414) Adds `concrete_category` and `has_forget₂` instances for Profinite, and `id_app` and `comp_app` lemmas. ESTIMATED CHANGES Modified src/topology/category/Profinite.lean + theorem Profinite.coe_comp + theorem Profinite.coe_id +/- def Profinite_to_Top 2021-04-30 05:44:02 c914e8f refactor(data/fin): define neg like sub (#7408) Define negation on fin in the same way as subtraction, i.e., using nat.mod (instead of computing it in the integers). ESTIMATED CHANGES Modified src/data/fin.lean +/- theorem fin.cast_pred_one 2021-04-30 05:44:01 39a1cf0 feat(group/hom_instances): add composition operators (#7407) This adds the analogous definitions to those we have for `linear_map`, namely: * `monoid_hom.comp_hom'` (c.f. `linear_map.lcomp`, `l` = `linear`) * `monoid_hom.compl₂` (c.f. `linear_map.compl₂`, `l` = `left`) * `monoid_hom.compr₂` (c.f. `linear_map.compr₂`, `r` = `right`) We already have `monoid_hom.comp_hom` (c.f. `linear_map.llcomp`, `ll` = `linear linear`) It also adds an `ext_iff₂` lemma, which is occasionally useful (but not present for any other time at the moment). The order of definitions in the file has been shuffled slightly to permit addition of a subheading to group things in doc-gen ESTIMATED CHANGES Modified src/algebra/group/hom_instances.lean + theorem add_monoid_hom.map_mul_iff + def monoid_hom.comp_hom' + def monoid_hom.compl₂ + theorem monoid_hom.compl₂_apply + def monoid_hom.compr₂ + theorem monoid_hom.compr₂_apply + theorem monoid_hom.ext_iff₂ 2021-04-30 00:14:20 413b426 feat(finset/basic): fill in holes in the finset API (#7386) add basic lemmas about finsets ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.attach_eq_empty_iff + theorem finset.attach_nonempty_iff + theorem finset.eq_empty_of_ssubset_singleton + theorem finset.exists_of_ssubset + theorem finset.ssubset_of_ssubset_of_subset + theorem finset.ssubset_of_subset_of_ssubset + theorem finset.ssubset_singleton_iff + theorem finset.subset_inter_iff + theorem finset.subset_singleton_iff + theorem finset.union_subset_iff +/- theorem finset.union_subset_union Modified src/data/set/basic.lean + theorem set.diff_union_of_subset + theorem set.eq_empty_of_ssubset_singleton + theorem set.ssubset_of_ssubset_of_subset + theorem set.ssubset_of_subset_of_ssubset + theorem set.ssubset_singleton_iff + theorem set.subset_singleton_iff_eq 2021-04-29 23:00:13 6a796d0 refactor(algebraic_geometry/structure_sheaf): Remove redundant isomorphism (#7410) Removes `stalk_iso_Type`, which is redundant since we also have `structure_sheaf.stalk_iso`, which is the same isomorphism in `CommRing` ESTIMATED CHANGES Modified src/algebraic_geometry/structure_sheaf.lean - def algebraic_geometry.stalk_iso_Type - theorem algebraic_geometry.structure_sheaf_stalk_to_fiber_injective - theorem algebraic_geometry.structure_sheaf_stalk_to_fiber_surjective 2021-04-29 14:43:39 ca5176c feat(linear_algebra/tensor_product): add definition `tensor_product.map_incl` and `simp` lemmas related to powers of `tensor_product.map` (#7406) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.id_pow Modified src/linear_algebra/tensor_product.lean +/- theorem linear_map.ltensor_id + theorem linear_map.ltensor_pow +/- theorem linear_map.rtensor_id + theorem linear_map.rtensor_pow + theorem tensor_product.map_id + def tensor_product.map_incl + theorem tensor_product.map_mul + theorem tensor_product.map_one + theorem tensor_product.map_pow 2021-04-29 14:43:38 966b3b1 feat(set_theory/{surreal, pgame}): `mul_comm` for surreal numbers (#7376) This PR adds a proof of commutativity of multiplication for surreal numbers. We also add `mul_zero` and `zero_mul` along with several useful lemmas. Finally, this renames a handful of lemmas about `relabelling` in order to enable dot notation. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Surreal.20numbers) ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/pgame.lean - theorem pgame.equiv_of_relabelling - theorem pgame.le_of_relabelling - theorem pgame.le_of_restricted + def pgame.relabelling.add_congr + theorem pgame.relabelling.equiv + theorem pgame.relabelling.le + def pgame.relabelling.neg_congr + def pgame.relabelling.restricted: + def pgame.relabelling.sub_congr + theorem pgame.restricted.le - def pgame.restricted_of_relabelling Modified src/set_theory/surreal.lean + def pgame.add_comm_sub_relabelling + def pgame.add_sub_relabelling + def pgame.left_moves_mul + theorem pgame.mk_mul_move_left_inl + theorem pgame.mk_mul_move_left_inr + theorem pgame.mk_mul_move_right_inl + theorem pgame.mk_mul_move_right_inr + theorem pgame.mul_comm_equiv + def pgame.mul_comm_relabelling + theorem pgame.mul_move_left_inl + theorem pgame.mul_move_left_inr + theorem pgame.mul_move_right_inl + theorem pgame.mul_move_right_inr + theorem pgame.mul_zero_equiv + def pgame.mul_zero_relabelling + def pgame.right_moves_mul + theorem pgame.zero_mul_equiv + def pgame.zero_mul_relabelling 2021-04-29 12:50:46 c956353 chore(.docker): remove alpine build, too fragile (#7401) If this is approved I'll remove the automatic builds of the `alpine` based images over on `hub.docker.com`. ESTIMATED CHANGES Modified .docker/README.md Deleted .docker/alpine/lean/.profile Deleted .docker/alpine/lean/Dockerfile Deleted .docker/alpine/mathlib/Dockerfile Modified scripts/docker_build.sh Modified scripts/docker_push.sh 2021-04-29 12:50:45 91604cb feat(data/finsupp/to_dfinsupp): add equivalences between finsupp and dfinsupp (#7311) A rework of #7217, that adds a more elementary equivalence. ESTIMATED CHANGES Added src/data/finsupp/to_dfinsupp.lean + def dfinsupp.to_finsupp + theorem dfinsupp.to_finsupp_add + theorem dfinsupp.to_finsupp_coe + theorem dfinsupp.to_finsupp_neg + theorem dfinsupp.to_finsupp_single + theorem dfinsupp.to_finsupp_smul + theorem dfinsupp.to_finsupp_sub + theorem dfinsupp.to_finsupp_support + theorem dfinsupp.to_finsupp_to_dfinsupp + theorem dfinsupp.to_finsupp_zero + def finsupp.to_dfinsupp + theorem finsupp.to_dfinsupp_add + theorem finsupp.to_dfinsupp_coe + theorem finsupp.to_dfinsupp_neg + theorem finsupp.to_dfinsupp_single + theorem finsupp.to_dfinsupp_smul + theorem finsupp.to_dfinsupp_sub + theorem finsupp.to_dfinsupp_to_finsupp + theorem finsupp.to_dfinsupp_zero + def finsupp_equiv_dfinsupp + theorem to_dfinsupp_support Modified src/linear_algebra/direct_sum/finsupp.lean 2021-04-29 08:23:27 fda4d3d feat(data/rat): add `@[simp]` to `rat.num_div_denom` (#7393) I have an equation in rational numbers that I want to turn into an equation in integers, and everything `simp`s away nicely except the equation `x.num / x.denom = x`. Marking `rat.num_div_denom` as `simp` should fix that, and I don't expect it will break anything. (`rat.num_denom : rat.mk x.num x.denom = x` is already a `simp` lemma.) Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60x.2Enum.20.2F.20x.2Edenom.20.3D.20x.60 ESTIMATED CHANGES Modified archive/imo/imo2013_q5.lean Modified src/data/rat/basic.lean Modified src/number_theory/pythagorean_triples.lean 2021-04-28 19:37:48 c50cb7a feat(data/fintype/basic): add decidable_eq_(bundled-hom)_fintype (#7394) Using the proof of `decidable_eq_equiv_fintype` for guidance, this adds equivalent statements about: * `function.embedding` * `zero_hom` * `one_hom` * `add_hom` * `mul_hom` * `add_monoid_hom` * `monoid_hom` * `monoid_with_zero_hom` * `ring_hom` It also fixes a typo that swaps `left` and `right` between two definition names. ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2021-04-28 19:37:47 abf1c20 feat(linear_algebra/free_module): free of finite torsion free (#7381) This is a reformulation of module.free_of_finite_type_torsion_free in terms of `ring_theory.finiteness` (combining my recent algebra PRs). Note this adds an import but it seems ok to me. ESTIMATED CHANGES Modified src/linear_algebra/free_module.lean + theorem module.free_of_finite_type_torsion_free' 2021-04-28 19:37:46 b9c80c9 chore(*): use `sq` as convention for "squared" (#7368) This PR establishes `sq x` as the notation for `x ^ 2`. See [this Zulip conversation](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/sqr.20vs.20sq.20vs.20pow_two/near/224972795). A breakdown of the refactor: - All instances of `square` and `sqr` are changed to `sq` (except where `square` means something other than "to the second power") - All instances of `pow_two` are changed to `sq`, though many are kept are aliases - All instances of `sum_of_two_squares` are changed to `sq_add_sq` n.b. I did NOT alter any instances of: - `squarefree` - `sum_of_four_squares` - `fpow_two` or `rpow_two` semiring+ (#6753) Taking advantage of the `no_zero_divisors` typeclass, the assumptions on some of the results can be weakened. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean +/- theorem char_p.char_is_prime +/- theorem char_p.char_is_prime_of_pos +/- theorem char_p.char_is_prime_of_two_le +/- theorem char_p.char_is_prime_or_zero +/- theorem char_p.char_ne_one 2021-03-18 19:27:36 a10bc3d feat(normed_space/inner_product): euclidean_space.norm_eq (#6744) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem euclidean_space.norm_eq + theorem pi_Lp.norm_eq_of_L2 Modified src/topology/metric_space/pi_Lp.lean + theorem pi_Lp.norm_eq_of_nat 2021-03-18 19:27:35 e1ff2df chore(*): update `injective` lemma names to match the naming guide (#6740) In `src/algebra/group_ring_action.lean`: - `injective_to_semiring_hom` -> `to_semiring_hom_injective` In `src/algebra/module/linear_map.lean`: - `linear_equiv.injective_to_equiv` -> `linear_equiv.to_equiv_injective` - `linear_equiv.injective_to_linear_map` -> `linear_equiv.to_linear_map_injective` In `src/analysis/normed_space/enorm.lean`: - `enorm.injective_coe_fn` -> `enorm.coe_fn_injective` In `src/data/equiv/basic.lean`: - `equiv.injective_coe_fn` -> `equiv.coe_fn_injective` In `src/data/real/nnreal.lean`: - `nnreal.injective_coe` -> `nnreal.coe_injective` In `src/data/sum.lean`: - `sum.injective_inl` -> `sum.inl_injective` - `sum.injective_inr` -> `sum.inr_injective` In `src/linear_algebra/affine_space/affine_equiv.lean`: - `affine_equiv.injective_to_affine_map` -> `affine_equiv.to_affine_map_injective` - `affine_equiv.injective_coe_fn` -> `affine_equiv.coe_fn_injective` - `affine_equiv.injective_to_equiv` -> `affine_equiv.to_equiv_injective` In `src/linear_algebra/affine_space/affine_map.lean`: - `affine_map.injective_coe_fn` -> `affine_map.coe_fn_injective` In `src/measure_theory/outer_measure.lean`: - `measure_theory.outer_measure.injective_coe_fn` -> `measure_theory.outer_measure.coe_fn_injective` In `src/order/rel_iso.lean`: - `rel_iso.injective_to_equiv` -> `rel_iso.to_equiv_injective` - `rel_iso.injective_coe_fn` -> `rel_iso.coe_fn_injective` In `src/topology/algebra/module.lean`: - `continuous_linear_map.injective_coe_fn` -> `continuous_linear_map.coe_fn_injective` ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean - theorem injective_to_semiring_hom + theorem to_semiring_hom_injective Modified src/algebra/module/linear_map.lean - theorem linear_equiv.injective_to_equiv - theorem linear_equiv.injective_to_linear_map +/- theorem linear_equiv.refl_trans + theorem linear_equiv.to_equiv_injective + theorem linear_equiv.to_linear_map_injective +/- theorem linear_equiv.trans_refl Modified src/analysis/normed_space/enorm.lean + theorem enorm.coe_fn_injective - theorem enorm.injective_coe_fn Modified src/analysis/normed_space/operator_norm.lean Modified src/data/equiv/basic.lean + theorem equiv.coe_fn_injective - theorem equiv.injective_coe_fn Modified src/data/real/nnreal.lean Modified src/data/sum.lean - theorem sum.injective_inl - theorem sum.injective_inr + theorem sum.inl_injective + theorem sum.inr_injective Modified src/field_theory/fixed.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.coe_fn_injective - theorem affine_equiv.injective_coe_fn - theorem affine_equiv.injective_to_affine_map - theorem affine_equiv.injective_to_equiv + theorem affine_equiv.to_affine_map_injective + theorem affine_equiv.to_equiv_injective Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.coe_fn_injective - theorem affine_map.injective_coe_fn Modified src/linear_algebra/basis.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/pi_tensor_product.lean Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.coe_fn_injective - theorem measure_theory.outer_measure.injective_coe_fn Modified src/order/rel_iso.lean + theorem rel_iso.coe_fn_injective - theorem rel_iso.injective_coe_fn - theorem rel_iso.injective_to_equiv + theorem rel_iso.to_equiv_injective Modified src/set_theory/ordinal.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_fn_injective - theorem continuous_linear_map.injective_coe_fn 2021-03-18 19:27:33 83b0981 feat(ring_theory/polynomial): the symmetric and homogenous polynomials form a subalgebra and submodules, respectively (#6666) This adds: * the new definitions: * `mv_polynomial.homogeneous_submodule σ R n`, defined as the `{ x | x.is_homogeneous n }` * `mv_polynomial.symmetric_subalgebra σ R`, defined as the `{ x | x.is_symmetric }` * simp lemmas to reduce membership of the above to the `.is_*` form * `mv_polynomial.homogenous_submodule_mul` a statement about the product of homogenous submodules * `mv_polynomial.homogenous_submodule_eq_finsupp_supported` a statement that we already have a different definition of homogenous submodules elsewhere All the other proofs have just been moved around the files. ESTIMATED CHANGES Modified src/ring_theory/polynomial/homogeneous.lean + theorem mv_polynomial.homogenous_submodule_eq_finsupp_supported + theorem mv_polynomial.homogenous_submodule_mul + theorem mv_polynomial.mem_homogeneous_submodule Modified src/ring_theory/polynomial/symmetric.lean + theorem mv_polynomial.mem_symmetric_subalgebra + def mv_polynomial.symmetric_subalgebra 2021-03-18 13:48:35 744d59a refactor(category_theory/limits): split file (#6751) This splits `category_theory.limits.limits` into `category_theory.limits.is_limit` and `category_theory.limits.has_limits`. It doesn't meaningfully reduce imports, as everything imports `has_limits`, but in principle it could, and hopefully it makes the content slightly easier to understand when separated. In any case, the file was certainly too large. ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Mon/colimits.lean Modified src/category_theory/limits/concrete_category.lean Modified src/category_theory/limits/fubini.lean Renamed src/category_theory/limits/limits.lean to src/category_theory/limits/has_limits.lean - def category_theory.limits.is_colimit.cocone_point_unique_up_to_iso - theorem category_theory.limits.is_colimit.cocone_point_unique_up_to_iso_hom_desc - theorem category_theory.limits.is_colimit.cocone_point_unique_up_to_iso_inv_desc - def category_theory.limits.is_colimit.cocone_points_iso_of_equivalence - def category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso - theorem category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso_hom_desc - theorem category_theory.limits.is_colimit.comp_cocone_point_unique_up_to_iso_hom - theorem category_theory.limits.is_colimit.comp_cocone_point_unique_up_to_iso_inv - theorem category_theory.limits.is_colimit.comp_cocone_points_iso_of_nat_iso_hom - theorem category_theory.limits.is_colimit.comp_cocone_points_iso_of_nat_iso_inv - def category_theory.limits.is_colimit.desc_cocone_morphism - theorem category_theory.limits.is_colimit.desc_self - def category_theory.limits.is_colimit.equiv_iso_colimit - theorem category_theory.limits.is_colimit.equiv_iso_colimit_apply - theorem category_theory.limits.is_colimit.equiv_iso_colimit_symm_apply - theorem category_theory.limits.is_colimit.hom_desc - theorem category_theory.limits.is_colimit.hom_ext - theorem category_theory.limits.is_colimit.hom_is_iso - def category_theory.limits.is_colimit.hom_iso' - def category_theory.limits.is_colimit.hom_iso - theorem category_theory.limits.is_colimit.hom_iso_hom - def category_theory.limits.is_colimit.iso_unique_cocone_morphism - def category_theory.limits.is_colimit.map - def category_theory.limits.is_colimit.map_cocone_equiv - def category_theory.limits.is_colimit.mk_cocone_morphism - def category_theory.limits.is_colimit.nat_iso - def category_theory.limits.is_colimit.of_cocone_equiv - theorem category_theory.limits.is_colimit.of_cocone_equiv_apply_desc - theorem category_theory.limits.is_colimit.of_cocone_equiv_symm_apply_desc - def category_theory.limits.is_colimit.of_faithful - def category_theory.limits.is_colimit.of_iso_colimit - theorem category_theory.limits.is_colimit.of_iso_colimit_desc - def category_theory.limits.is_colimit.of_left_adjoint - theorem category_theory.limits.is_colimit.of_nat_iso.cocone_fac - def category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom - theorem category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom_fac - theorem category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom_of_cocone - def category_theory.limits.is_colimit.of_nat_iso.colimit_cocone - def category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone - theorem category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone_of_hom - def category_theory.limits.is_colimit.of_nat_iso - def category_theory.limits.is_colimit.of_point_iso - def category_theory.limits.is_colimit.precompose_hom_equiv - def category_theory.limits.is_colimit.precompose_inv_equiv - theorem category_theory.limits.is_colimit.uniq_cocone_morphism - def category_theory.limits.is_colimit.unique_up_to_iso - def category_theory.limits.is_colimit.whisker_equivalence - theorem category_theory.limits.is_colimit.ι_map - structure category_theory.limits.is_colimit - def category_theory.limits.is_limit.cone_point_unique_up_to_iso - theorem category_theory.limits.is_limit.cone_point_unique_up_to_iso_hom_comp - theorem category_theory.limits.is_limit.cone_point_unique_up_to_iso_inv_comp - def category_theory.limits.is_limit.cone_points_iso_of_equivalence - def category_theory.limits.is_limit.cone_points_iso_of_nat_iso - theorem category_theory.limits.is_limit.cone_points_iso_of_nat_iso_hom_comp - theorem category_theory.limits.is_limit.cone_points_iso_of_nat_iso_inv_comp - def category_theory.limits.is_limit.equiv_iso_limit - theorem category_theory.limits.is_limit.equiv_iso_limit_apply - theorem category_theory.limits.is_limit.equiv_iso_limit_symm_apply - theorem category_theory.limits.is_limit.hom_ext - theorem category_theory.limits.is_limit.hom_is_iso - def category_theory.limits.is_limit.hom_iso' - def category_theory.limits.is_limit.hom_iso - theorem category_theory.limits.is_limit.hom_iso_hom - theorem category_theory.limits.is_limit.hom_lift - def category_theory.limits.is_limit.iso_unique_cone_morphism - theorem category_theory.limits.is_limit.lift_comp_cone_point_unique_up_to_iso_hom - theorem category_theory.limits.is_limit.lift_comp_cone_point_unique_up_to_iso_inv - theorem category_theory.limits.is_limit.lift_comp_cone_points_iso_of_nat_iso_hom - def category_theory.limits.is_limit.lift_cone_morphism - theorem category_theory.limits.is_limit.lift_self - def category_theory.limits.is_limit.map - def category_theory.limits.is_limit.map_cone_equiv - theorem category_theory.limits.is_limit.map_π - def category_theory.limits.is_limit.mk_cone_morphism - def category_theory.limits.is_limit.nat_iso - def category_theory.limits.is_limit.of_cone_equiv - theorem category_theory.limits.is_limit.of_cone_equiv_apply_desc - theorem category_theory.limits.is_limit.of_cone_equiv_symm_apply_desc - def category_theory.limits.is_limit.of_faithful - def category_theory.limits.is_limit.of_iso_limit - theorem category_theory.limits.is_limit.of_iso_limit_lift - theorem category_theory.limits.is_limit.of_nat_iso.cone_fac - def category_theory.limits.is_limit.of_nat_iso.cone_of_hom - theorem category_theory.limits.is_limit.of_nat_iso.cone_of_hom_fac - theorem category_theory.limits.is_limit.of_nat_iso.cone_of_hom_of_cone - def category_theory.limits.is_limit.of_nat_iso.hom_of_cone - theorem category_theory.limits.is_limit.of_nat_iso.hom_of_cone_of_hom - def category_theory.limits.is_limit.of_nat_iso.limit_cone - def category_theory.limits.is_limit.of_nat_iso - def category_theory.limits.is_limit.of_point_iso - def category_theory.limits.is_limit.of_right_adjoint - def category_theory.limits.is_limit.postcompose_hom_equiv - def category_theory.limits.is_limit.postcompose_inv_equiv - theorem category_theory.limits.is_limit.uniq_cone_morphism - def category_theory.limits.is_limit.unique_up_to_iso - def category_theory.limits.is_limit.whisker_equivalence - structure category_theory.limits.is_limit Added src/category_theory/limits/is_limit.lean + def category_theory.limits.is_colimit.cocone_point_unique_up_to_iso + theorem category_theory.limits.is_colimit.cocone_point_unique_up_to_iso_hom_desc + theorem category_theory.limits.is_colimit.cocone_point_unique_up_to_iso_inv_desc + def category_theory.limits.is_colimit.cocone_points_iso_of_equivalence + def category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso + theorem category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso_hom_desc + theorem category_theory.limits.is_colimit.comp_cocone_point_unique_up_to_iso_hom + theorem category_theory.limits.is_colimit.comp_cocone_point_unique_up_to_iso_inv + theorem category_theory.limits.is_colimit.comp_cocone_points_iso_of_nat_iso_hom + theorem category_theory.limits.is_colimit.comp_cocone_points_iso_of_nat_iso_inv + def category_theory.limits.is_colimit.desc_cocone_morphism + theorem category_theory.limits.is_colimit.desc_self + def category_theory.limits.is_colimit.equiv_iso_colimit + theorem category_theory.limits.is_colimit.equiv_iso_colimit_apply + theorem category_theory.limits.is_colimit.equiv_iso_colimit_symm_apply + theorem category_theory.limits.is_colimit.hom_desc + theorem category_theory.limits.is_colimit.hom_ext + theorem category_theory.limits.is_colimit.hom_is_iso + def category_theory.limits.is_colimit.hom_iso' + def category_theory.limits.is_colimit.hom_iso + theorem category_theory.limits.is_colimit.hom_iso_hom + def category_theory.limits.is_colimit.iso_unique_cocone_morphism + def category_theory.limits.is_colimit.map + def category_theory.limits.is_colimit.map_cocone_equiv + def category_theory.limits.is_colimit.mk_cocone_morphism + def category_theory.limits.is_colimit.nat_iso + def category_theory.limits.is_colimit.of_cocone_equiv + theorem category_theory.limits.is_colimit.of_cocone_equiv_apply_desc + theorem category_theory.limits.is_colimit.of_cocone_equiv_symm_apply_desc + def category_theory.limits.is_colimit.of_faithful + def category_theory.limits.is_colimit.of_iso_colimit + theorem category_theory.limits.is_colimit.of_iso_colimit_desc + def category_theory.limits.is_colimit.of_left_adjoint + theorem category_theory.limits.is_colimit.of_nat_iso.cocone_fac + def category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom + theorem category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom_fac + theorem category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom_of_cocone + def category_theory.limits.is_colimit.of_nat_iso.colimit_cocone + def category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone + theorem category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone_of_hom + def category_theory.limits.is_colimit.of_nat_iso + def category_theory.limits.is_colimit.of_point_iso + def category_theory.limits.is_colimit.precompose_hom_equiv + def category_theory.limits.is_colimit.precompose_inv_equiv + theorem category_theory.limits.is_colimit.uniq_cocone_morphism + def category_theory.limits.is_colimit.unique_up_to_iso + def category_theory.limits.is_colimit.whisker_equivalence + theorem category_theory.limits.is_colimit.ι_map + structure category_theory.limits.is_colimit + def category_theory.limits.is_limit.cone_point_unique_up_to_iso + theorem category_theory.limits.is_limit.cone_point_unique_up_to_iso_hom_comp + theorem category_theory.limits.is_limit.cone_point_unique_up_to_iso_inv_comp + def category_theory.limits.is_limit.cone_points_iso_of_equivalence + def category_theory.limits.is_limit.cone_points_iso_of_nat_iso + theorem category_theory.limits.is_limit.cone_points_iso_of_nat_iso_hom_comp + theorem category_theory.limits.is_limit.cone_points_iso_of_nat_iso_inv_comp + def category_theory.limits.is_limit.equiv_iso_limit + theorem category_theory.limits.is_limit.equiv_iso_limit_apply + theorem category_theory.limits.is_limit.equiv_iso_limit_symm_apply + theorem category_theory.limits.is_limit.hom_ext + theorem category_theory.limits.is_limit.hom_is_iso + def category_theory.limits.is_limit.hom_iso' + def category_theory.limits.is_limit.hom_iso + theorem category_theory.limits.is_limit.hom_iso_hom + theorem category_theory.limits.is_limit.hom_lift + def category_theory.limits.is_limit.iso_unique_cone_morphism + theorem category_theory.limits.is_limit.lift_comp_cone_point_unique_up_to_iso_hom + theorem category_theory.limits.is_limit.lift_comp_cone_point_unique_up_to_iso_inv + theorem category_theory.limits.is_limit.lift_comp_cone_points_iso_of_nat_iso_hom + def category_theory.limits.is_limit.lift_cone_morphism + theorem category_theory.limits.is_limit.lift_self + def category_theory.limits.is_limit.map + def category_theory.limits.is_limit.map_cone_equiv + theorem category_theory.limits.is_limit.map_π + def category_theory.limits.is_limit.mk_cone_morphism + def category_theory.limits.is_limit.nat_iso + def category_theory.limits.is_limit.of_cone_equiv + theorem category_theory.limits.is_limit.of_cone_equiv_apply_desc + theorem category_theory.limits.is_limit.of_cone_equiv_symm_apply_desc + def category_theory.limits.is_limit.of_faithful + def category_theory.limits.is_limit.of_iso_limit + theorem category_theory.limits.is_limit.of_iso_limit_lift + theorem category_theory.limits.is_limit.of_nat_iso.cone_fac + def category_theory.limits.is_limit.of_nat_iso.cone_of_hom + theorem category_theory.limits.is_limit.of_nat_iso.cone_of_hom_fac + theorem category_theory.limits.is_limit.of_nat_iso.cone_of_hom_of_cone + def category_theory.limits.is_limit.of_nat_iso.hom_of_cone + theorem category_theory.limits.is_limit.of_nat_iso.hom_of_cone_of_hom + def category_theory.limits.is_limit.of_nat_iso.limit_cone + def category_theory.limits.is_limit.of_nat_iso + def category_theory.limits.is_limit.of_point_iso + def category_theory.limits.is_limit.of_right_adjoint + def category_theory.limits.is_limit.postcompose_hom_equiv + def category_theory.limits.is_limit.postcompose_inv_equiv + theorem category_theory.limits.is_limit.uniq_cone_morphism + def category_theory.limits.is_limit.unique_up_to_iso + def category_theory.limits.is_limit.whisker_equivalence + structure category_theory.limits.is_limit Modified src/category_theory/limits/pi.lean Modified src/category_theory/limits/preserves/basic.lean Modified src/category_theory/limits/punit.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/shapes/wide_pullbacks.lean Modified src/category_theory/limits/yoneda.lean Modified src/category_theory/monoidal/limits.lean Modified src/topology/sheaves/stalks.lean 2021-03-18 13:48:34 58581d0 chore(*): normalize Authors: line (#6749) ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified archive/100-theorems-list/83_friendship_graphs.lean Modified archive/arithcc.lean Modified archive/examples/mersenne_primes.lean Modified archive/examples/prop_encodable.lean Modified archive/imo/imo1987_q1.lean Modified archive/imo/imo2020_q2.lean Modified archive/sensitivity.lean Modified docs/100.yaml Modified scripts/lint_mathlib.lean Modified src/algebra/add_torsor.lean Modified src/algebra/category/Semigroup/basic.lean Modified src/algebra/char_p/basic.lean Modified src/algebra/char_p/invertible.lean Modified src/algebra/free_algebra.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/invertible.lean Modified src/algebra/iterate_hom.lean Modified src/algebra/polynomial/big_operators.lean Modified src/algebra/star/algebra.lean Modified src/algebra/star/basic.lean Modified src/algebra/star/chsh.lean Modified src/analysis/analytic/linear.lean Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/analysis/calculus/implicit.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/analysis/convex/integral.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/complemented.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/linear_isometry.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/integrals.lean Modified src/analysis/special_functions/sqrt.lean Modified src/category_theory/adjunction/mates.lean Modified src/category_theory/category/Kleisli.lean Modified src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/small_complete.lean Modified src/category_theory/monad/kleisli.lean Modified src/category_theory/pempty.lean Modified src/combinatorics/hall.lean Modified src/combinatorics/simple_graph/adj_matrix.lean Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/combinatorics/simple_graph/matching.lean Modified src/computability/encoding.lean Modified src/computability/halting.lean Modified src/computability/language.lean Modified src/computability/partrec.lean Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/computability/regular_expressions.lean Modified src/computability/tm_computable.lean Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean Modified src/control/applicative.lean Modified src/control/bifunctor.lean Modified src/control/bitraversable/basic.lean Modified src/control/bitraversable/instances.lean Modified src/control/bitraversable/lemmas.lean Modified src/control/equiv_functor.lean Modified src/control/equiv_functor/instances.lean Modified src/control/fix.lean Modified src/control/functor.lean Modified src/control/functor/multivariate.lean Modified src/control/lawful_fix.lean Modified src/control/monad/basic.lean Modified src/control/monad/cont.lean Modified src/control/traversable/basic.lean Modified src/control/traversable/derive.lean Modified src/control/traversable/instances.lean Modified src/control/traversable/lemmas.lean Modified src/control/uliftable.lean Modified src/data/W.lean Modified src/data/bitvec/basic.lean Modified src/data/bool.lean Modified src/data/bracket.lean Modified src/data/char.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/encodable/basic.lean Modified src/data/equiv/encodable/lattice.lean Modified src/data/equiv/fin.lean Modified src/data/equiv/list.lean Modified src/data/equiv/nat.lean Modified src/data/equiv/option.lean Modified src/data/erased.lean Modified src/data/fin_enum.lean Modified src/data/finset/fold.lean Modified src/data/finset/gcd.lean Modified src/data/finset/lattice.lean Modified src/data/finset/pi.lean Modified src/data/finset/powerset.lean Modified src/data/finset/sort.lean Modified src/data/fintype/basic.lean Modified src/data/fintype/card.lean Modified src/data/fintype/sort.lean Modified src/data/int/range.lean Modified src/data/list/default.lean Modified src/data/list/nodup_equiv_fin.lean Modified src/data/list/sort.lean Modified src/data/mllist.lean Modified src/data/multiset/antidiagonal.lean Modified src/data/multiset/basic.lean Modified src/data/multiset/erase_dup.lean Modified src/data/multiset/finset_ops.lean Modified src/data/multiset/fold.lean Modified src/data/multiset/functor.lean Modified src/data/multiset/gcd.lean Modified src/data/multiset/lattice.lean Modified src/data/multiset/nodup.lean Modified src/data/multiset/pi.lean Modified src/data/multiset/powerset.lean Modified src/data/multiset/range.lean Modified src/data/multiset/sections.lean Modified src/data/multiset/sort.lean Modified src/data/mv_polynomial/invertible.lean Modified src/data/mv_polynomial/monad.lean Modified src/data/nat/psub.lean Modified src/data/nat/upto.lean Modified src/data/num/bitwise.lean Modified src/data/num/lemmas.lean Modified src/data/num/prime.lean Modified src/data/padics/ring_homs.lean Modified src/data/pfunctor/multivariate/M.lean Modified src/data/pfunctor/multivariate/W.lean Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/pfunctor/univariate/basic.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/factors.lean Modified src/data/pnat/intervals.lean Modified src/data/pnat/prime.lean Modified src/data/pnat/xgcd.lean Modified src/data/polynomial/lifts.lean Modified src/data/qpf/multivariate/basic.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/data/qpf/multivariate/constructions/comp.lean Modified src/data/qpf/multivariate/constructions/const.lean Modified src/data/qpf/multivariate/constructions/fix.lean Modified src/data/qpf/multivariate/constructions/prj.lean Modified src/data/qpf/multivariate/constructions/quot.lean Modified src/data/qpf/multivariate/constructions/sigma.lean Modified src/data/qpf/univariate/basic.lean Modified src/data/rat/denumerable.lean Modified src/data/rat/meta_defs.lean Modified src/data/real/ennreal.lean Modified src/data/real/irrational.lean Modified src/data/seq/computation.lean Modified src/data/seq/parallel.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/set/countable.lean Modified src/data/set/enumerate.lean Modified src/data/set/function.lean Modified src/data/set/intervals/ord_connected.lean Modified src/data/set/intervals/pi.lean Modified src/data/set/intervals/surj_on.lean Modified src/data/sigma/basic.lean Modified src/data/string/basic.lean Modified src/data/string/defs.lean Modified src/data/subtype.lean Modified src/data/sym.lean Modified src/data/sym2.lean Modified src/data/tree.lean Modified src/data/typevec.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/parity.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/deprecated/group.lean Modified src/deprecated/ring.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/dynamics/periodic_pts.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/galois.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/field_theory/primitive_element.lean Modified src/field_theory/separable.lean Modified src/field_theory/subfield.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/monge_point.lean Modified src/geometry/euclidean/triangle.lean Modified src/geometry/manifold/algebra/lie_group.lean Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/times_cont_mdiff_map.lean Modified src/group_theory/perm/fin.lean Modified src/group_theory/perm/option.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/solvable.lean Modified src/linear_algebra/affine_space/affine_equiv.lean Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/affine_space/basic.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/affine_space/midpoint.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/clifford_algebra/basic.lean Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/exterior_algebra.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/free_module.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/projection.lean Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/linear_algebra/special_linear_group.lean Modified src/linear_algebra/tensor_algebra.lean Modified src/linear_algebra/unitary_group.lean Modified src/logic/function/conjugate.lean Modified src/logic/function/iterate.lean Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/probability_mass_function.lean Modified src/meta/coinductive_predicates.lean Modified src/meta/rb_map.lean Modified src/number_theory/bernoulli_polynomials.lean Modified src/number_theory/fermat4.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/primes_congruent_one.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/sum_two_squares.lean Modified src/order/atoms.lean Modified src/order/category/omega_complete_partial_order.lean Modified src/order/closure.lean Modified src/order/directed.lean Modified src/order/filter/bases.lean Modified src/order/filter/countable_Inter.lean Modified src/order/filter/interval.lean Modified src/order/galois_connection.lean Modified src/order/iterate.lean Modified src/order/lattice_intervals.lean Modified src/order/lexicographic.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/order_iso_nat.lean Modified src/order/semiconj_Sup.lean Modified src/probability_theory/independence.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/polynomial/vieta.lean Modified src/ring_theory/power_series/well_known.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/simple_module.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/witt_vector/init_tail.lean Modified src/set_theory/lists.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/zfc.lean Modified src/system/random/basic.lean Modified src/tactic/apply.lean Modified src/tactic/clear.lean Modified src/tactic/explode.lean Modified src/tactic/explode_widget.lean Modified src/tactic/fin_cases.lean Modified src/tactic/fresh_names.lean Modified src/tactic/generalizes.lean Modified src/tactic/group.lean Modified src/tactic/has_variable_names.lean Modified src/tactic/induction.lean Modified src/tactic/interactive.lean Modified src/tactic/interactive_expr.lean Modified src/tactic/interval_cases.lean Modified src/tactic/linarith/frontend.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/monotonicity/default.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/omega/clause.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/find_ees.lean Modified src/tactic/omega/find_scalars.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/lin_comb.lean Modified src/tactic/omega/main.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/dnf.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/omega/prove_unsats.lean Modified src/tactic/omega/term.lean Modified src/tactic/pi_instances.lean Modified src/tactic/pretty_cases.lean Modified src/tactic/push_neg.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/replacer.lean Modified src/tactic/ring_exp.lean Modified src/tactic/slim_check.lean Modified src/tactic/split_ifs.lean Modified src/tactic/squeeze.lean Modified src/tactic/suggest.lean Modified src/tactic/transfer.lean Modified src/tactic/unify_equations.lean Modified src/testing/slim_check/functions.lean Modified src/testing/slim_check/gen.lean Modified src/testing/slim_check/sampleable.lean Modified src/testing/slim_check/testable.lean Modified src/topology/algebra/group_with_zero.lean Modified src/topology/algebra/nonarchimedean/basic.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/continuous_map.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/real_vector_space.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/metric_separated.lean Modified src/topology/omega_complete_partial_order.lean Modified test/fresh_names.lean Modified test/general_recursion.lean Modified test/generalizes.lean Modified test/monotonicity.lean Modified test/monotonicity/test_cases.lean Modified test/pi_simp.lean Modified test/unify_equations.lean 2021-03-18 13:48:33 542ff6a refactor(algebra/algebra/basic): change submodule.restrict_scalars to use is_scalar_tower (#6745) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem linear_map.ker_restrict_scalars +/- def submodule.restrict_scalars +/- theorem submodule.restrict_scalars_bot +/- theorem submodule.restrict_scalars_inj +/- theorem submodule.restrict_scalars_mem +/- theorem submodule.restrict_scalars_top +/- theorem submodule.span_le_restrict_scalars 2021-03-18 13:48:32 59cda3b feat(algebra/associated): Primes that divide each other are associated (#6732) Primes that divide each other are associated ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associated_of_irreducible_of_dvd + theorem associated_of_prime_of_dvd 2021-03-18 13:48:31 db2a972 feat(ring_theory/principal_ideal_domain): The generator of a principal prime ideal is a prime (#6731) The generator of a principal prime ideal is a prime ESTIMATED CHANGES Modified src/ring_theory/principal_ideal_domain.lean + theorem submodule.is_principal.prime_generator_of_is_prime 2021-03-18 13:48:30 b4afd64 feat(data/padics/padic_norm): p-adic norm of primes other than p (#6730) The p-adic norm of `q` is `1` if `q` is another prime than `p`. ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean + theorem padic_norm.padic_norm_of_prime_of_ne 2021-03-18 09:41:26 216aecd feat(group_theory/quaternion_group): define the (generalised) quaternion groups (#6683) This PR introduces the generalised quaternion groups and determines the orders of its elements. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.succ_mul_pos Renamed src/group_theory/dihedral.lean to src/group_theory/dihedral_group.lean - theorem dihedral.card - theorem dihedral.one_def - theorem dihedral.order_of_r - theorem dihedral.order_of_r_one - theorem dihedral.order_of_sr - theorem dihedral.r_mul_r - theorem dihedral.r_mul_sr - theorem dihedral.r_one_pow - theorem dihedral.r_one_pow_n - theorem dihedral.sr_mul_r - theorem dihedral.sr_mul_self - theorem dihedral.sr_mul_sr - inductive dihedral + theorem dihedral_group.card + theorem dihedral_group.one_def + theorem dihedral_group.order_of_r + theorem dihedral_group.order_of_r_one + theorem dihedral_group.order_of_sr + theorem dihedral_group.r_mul_r + theorem dihedral_group.r_mul_sr + theorem dihedral_group.r_one_pow + theorem dihedral_group.r_one_pow_n + theorem dihedral_group.sr_mul_r + theorem dihedral_group.sr_mul_self + theorem dihedral_group.sr_mul_sr + inductive dihedral_group Modified src/group_theory/order_of_element.lean + theorem order_of_eq_prime_pow Added src/group_theory/quaternion_group.lean + theorem quaternion_group.a_mul_a + theorem quaternion_group.a_mul_xa + theorem quaternion_group.a_one_pow + theorem quaternion_group.a_one_pow_n + theorem quaternion_group.card + theorem quaternion_group.one_def + theorem quaternion_group.order_of_a + theorem quaternion_group.order_of_a_one + theorem quaternion_group.order_of_xa + theorem quaternion_group.quaternion_group_one_is_cyclic + def quaternion_group.quaternion_group_zero_equiv_dihedral_group_zero + theorem quaternion_group.xa_mul_a + theorem quaternion_group.xa_mul_xa + theorem quaternion_group.xa_pow_four + theorem quaternion_group.xa_pow_two + inductive quaternion_group 2021-03-18 06:07:05 8116851 doc(category_theory): convert comments about universes to library note (#6748) ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean Modified docs/tutorial/category_theory/intro.lean Modified src/category_theory/adjunction/opposites.lean Modified src/category_theory/arrow.lean Modified src/category_theory/category/default.lean Modified src/category_theory/core.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/constructions/over/connected.lean Modified src/category_theory/limits/constructions/over/default.lean Modified src/category_theory/limits/constructions/over/products.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves/basic.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/basic.lean Modified src/category_theory/monad/bundled.lean Modified src/category_theory/monad/equiv_mon.lean Modified src/category_theory/monad/kleisli.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monad/products.lean Modified src/category_theory/opposites.lean Modified src/category_theory/over.lean Modified src/category_theory/pempty.lean Modified src/category_theory/punit.lean Modified src/category_theory/sums/basic.lean Modified src/category_theory/types.lean Modified src/category_theory/yoneda.lean Modified src/data/opposite.lean Modified src/ring_theory/valuation/basic.lean 2021-03-18 04:45:13 e955a6b chore(scripts): update nolints.txt (#6747) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-03-18 03:01:54 9b8d41a feat(ring_theory/finiteness): add transitivity of finite presentation (#6640) This adds transitivity of finite presentation (for rings). I think we now have a basic API for finitely presented algebras. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem alg_hom.finite_presentation.comp + theorem algebra.finite_presentation.trans + theorem ring_hom.finite_presentation.comp 2021-03-17 23:52:47 804b0ed chore(data/mv_polynomial/basic): add coeff_smul to match coeff_add etc (#6742) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.coeff_smul 2021-03-17 22:49:08 30b3455 feat(ring_theory/roots_of_unity): Restrict ring homomorphism to roots of unity (#6646) Restrict a ring homomorphism to roots of unity. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + def ring_equiv.restrict_roots_of_unity + theorem ring_equiv.restrict_roots_of_unity_coe_apply + theorem ring_equiv.restrict_roots_of_unity_symm + theorem ring_hom.map_root_of_unity_eq_pow_self + def ring_hom.restrict_roots_of_unity + theorem ring_hom.restrict_roots_of_unity_coe_apply + theorem roots_of_unity.coe_pow 2021-03-17 19:18:34 9507a34 chore(category_theory/limits/creates): fix typo in docstring (#6738) ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean 2021-03-17 19:18:33 6e1143a chore(combinatorics/simple_graph): remove bad simp attribute (#6736) As in https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/symmetry.20fails.20if.20simple.20graph.20is.20imported. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.edge_symm' +/- theorem simple_graph.edge_symm 2021-03-17 19:18:32 ce8a6ca refactor(data/multiset/basic): consistently use 'nsmul' in names (#6735) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem multiset.to_finset_sum_count_nsmul_eq - theorem multiset.to_finset_sum_count_smul_eq Modified src/data/finsupp/basic.lean Modified src/data/multiset/basic.lean + theorem multiset.card_nsmul - theorem multiset.card_smul + theorem multiset.count_nsmul - theorem multiset.count_smul + theorem multiset.prod_nsmul - theorem multiset.prod_smul Modified src/data/multiset/fold.lean Modified src/data/pnat/factors.lean 2021-03-17 19:18:31 7e82bba feat(algebra/module/submodule): add `smul_of_tower_mem` (#6712) This adds the lemmas: * `sub_mul_action.smul_of_tower_mem` * `submodule.smul_of_tower_mem` And uses them to construct the new scalar actions: * `sub_mul_action.mul_action'` * `sub_mul_action.is_scalar_tower` * `submodule.semimodule'` * `submodule.is_scalar_tower` With associated lemmas * `sub_mul_action.coe_smul_of_tower` * `submodule.coe_smul_of_tower` The unprimed instance continue to hold their old values, and exist to speed up typeclass search; the same pattern we use for `tensor_product.semimodule` vs `tensor_product.semimodule`. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean +/- theorem submodule.coe_smul + theorem submodule.coe_smul_of_tower +/- theorem submodule.smul_mem_iff' +/- theorem submodule.smul_mem_iff + theorem submodule.smul_of_tower_mem Modified src/group_theory/group_action/sub_mul_action.lean + theorem sub_mul_action.coe_smul_of_tower +/- theorem sub_mul_action.smul_mem_iff' +/- theorem sub_mul_action.smul_mem_iff + theorem sub_mul_action.smul_of_tower_mem 2021-03-17 19:18:29 4ae81c2 feat(bounded_continuous_function): transport structure to C(α, β) when α compact (#6701) ESTIMATED CHANGES Modified src/topology/algebra/continuous_functions.lean + theorem continuous_map.mul_coe + theorem continuous_map.one_coe + theorem continuous_map.smul_apply Modified src/topology/bounded_continuous_function.lean + def bounded_continuous_function.add_equiv_continuous_map_of_compact + theorem bounded_continuous_function.add_equiv_continuous_map_of_compact_to_equiv + def bounded_continuous_function.equiv_continuous_map_of_compact + def bounded_continuous_function.forget_boundedness + def bounded_continuous_function.forget_boundedness_add_hom + theorem bounded_continuous_function.forget_boundedness_coe + def bounded_continuous_function.isometric_continuous_map_of_compact + theorem bounded_continuous_function.isometric_continuous_map_of_compact_to_isometric + def bounded_continuous_function.linear_isometry_continuous_map_of_compact + theorem bounded_continuous_function.linear_isometry_continuous_map_of_compact_to_add_equiv + theorem bounded_continuous_function.linear_isometry_continuous_map_of_compact_to_equiv 2021-03-17 19:18:25 0b0fd52 chore(analysis/normed_space/extend): provide a version without restrict_scalars (#6693) This is some pre-work to try and speed up the proof in `hahn_banach`, which as I understand it is super slow because it has to work very hard to unify typeclass which keep switching back and forth between `F` and `restrict_scalars ℝ 𝕜 F`. This PR is unlikely to have changed the speed of that proof, but I suspect these definitions might help in a future PR - and it pushes `restrict_scalars` out of the interesting bit of the proof. ESTIMATED CHANGES Modified src/analysis/normed_space/extend.lean + theorem continuous_linear_map.extend_to_𝕜'_apply + theorem continuous_linear_map.extend_to_𝕜_apply + theorem linear_map.extend_to_𝕜'_apply + theorem linear_map.extend_to_𝕜_apply +/- theorem norm_bound Modified src/analysis/normed_space/hahn_banach.lean 2021-03-17 19:18:22 6db70c9 refactor(linear_algebra/determinant): refactor proof of upper_two_block_triangular_det (#6690) Refactored the proof of upper_two_block_triangular_det (to use sum_congr_hom.range) following a suggestion from Eric Wieser (during PR review of #6050). ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean + theorem equiv.perm.mem_sum_congr_hom_range_of_perm_maps_to_inl - theorem equiv.perm.perm_on_inl_iff_perm_on_inr Modified src/linear_algebra/determinant.lean +/- theorem matrix.upper_two_block_triangular_det 2021-03-17 19:18:19 4119181 feat(measure_theory/l2_space): L2 is an inner product space (#6596) If `E` is an inner product space, then so is `Lp E 2 µ`, with inner product being the integral of the inner products between function values. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/group_power/basic.lean + theorem sub_pow_two + theorem two_mul_le_add_pow_two Modified src/algebra/ordered_field.lean + theorem half_le_self Modified src/analysis/normed_space/inner_product.lean + theorem ae_measurable.inner Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/l1_space.lean + theorem measure_theory.lipschitz_with.integrable_comp_iff_of_antilipschitz Added src/measure_theory/l2_space.lean + theorem measure_theory.L2.inner_def + theorem measure_theory.L2.integrable_inner + theorem measure_theory.L2.integral_inner_eq_sq_snorm + theorem measure_theory.L2.mem_L1_inner + theorem measure_theory.L2.snorm_inner_lt_top + theorem measure_theory.L2.snorm_rpow_two_norm_lt_top Modified src/measure_theory/lp_space.lean + theorem lipschitz_with.mem_ℒp_comp_iff_of_antilipschitz Modified src/measure_theory/prod.lean Modified src/measure_theory/set_integral.lean + theorem continuous_linear_map.integral_comp_comm' + theorem integral_conj + theorem integral_of_real + theorem linear_isometry.integral_comp_comm Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.closed_embedding Modified src/topology/metric_space/isometry.lean + theorem isometry.closed_embedding 2021-03-17 19:18:17 fb28eac feat(number_theory/bernoulli): Faulhaber's theorem (#6409) Co-authored-by Fabian Kruse ESTIMATED CHANGES Modified docs/100.yaml Modified docs/references.bib Modified src/number_theory/bernoulli.lean +/- theorem bernoulli'_four +/- theorem bernoulli'_one +/- theorem bernoulli'_three +/- theorem bernoulli'_two +/- theorem bernoulli'_zero +/- theorem bernoulli_one +/- theorem bernoulli_zero + theorem sum_range_pow 2021-03-17 16:20:31 83a4b8b chore(group_theory/subgroup): fix typo in docstring (#6722) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2021-03-17 16:20:30 73922b5 feat(data/zsqrtd/basic): add some lemmas about conj, norm (#6715) ESTIMATED CHANGES Modified src/data/zsqrtd/basic.lean + theorem zsqrtd.conj_add + theorem zsqrtd.conj_conj + def zsqrtd.conj_hom + theorem zsqrtd.conj_neg + theorem zsqrtd.conj_one + theorem zsqrtd.conj_sub + theorem zsqrtd.conj_zero + theorem zsqrtd.norm_conj + theorem zsqrtd.norm_neg 2021-03-17 12:41:30 1f50530 feat(data/set/intervals/image_preimage, algebra/ordered_monoid): new typeclass for interval bijection lemmas (#6629) This commit introduces a ``has_exists_add_of_le`` typeclass extending ``ordered_add_comm_monoid``; is the assumption needed so that additively translating an interval gives a bijection. We then prove this fact for all flavours of interval. https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Correct.20setting.20for.20positive.20shifts.20of.20intervals ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean Modified src/data/set/intervals/image_preimage.lean + theorem set.Icc_add_bij + theorem set.Ici_add_bij + theorem set.Ico_add_bij + theorem set.Iic_add_bij + theorem set.Iio_add_bij + theorem set.Ioc_add_bij + theorem set.Ioi_add_bij + theorem set.Ioo_add_bij 2021-03-17 10:17:23 1345319 feat(ring_theory/algebraic data/real/irrational): add a proof that a transcendental real number is irrational (#6721) Zulip: https://leanprover.zulipchat.com/#narrow/stream/263328-triage ESTIMATED CHANGES Modified src/data/real/irrational.lean + theorem transcendental.irrational Modified src/ring_theory/algebraic.lean + theorem is_algebraic_algebra_map 2021-03-17 10:17:22 4b1d588 chore(linear_algebra/determinant): redefine det using multilinear_map.alternatization (#6708) This slightly changes the definitional unfolding of `matrix.det` (moving a function application outside a sum and adjusting the version of int-multiplication used). By doing this, a large number of proofs become a trivial application of a more general statement about alternating maps. `det_row_multilinear` already existed prior to this commit, but now `det` is defined in terms of it instead of the other way around. We still need both, as otherwise we would break `M.det` dot notation, as `det_row_multilinear` does not have its argument expressed as a matrix. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.map_coord_zero + theorem alternating_map.map_update_zero + theorem alternating_map.map_zero Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/determinant.lean + def matrix.det + theorem matrix.det_apply' + theorem matrix.det_apply +/- def matrix.det_row_multilinear Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified test/matrix.lean 2021-03-17 10:17:21 84933f1 feat(ring_theory/polynomial): Pochhammer polynomials (#6598) # The Pochhammer polynomials We define and prove some basic relations about `pochhammer S n : polynomial S = X * (X+1) * ... * (X + n - 1)` which is also known as the rising factorial. ESTIMATED CHANGES Added src/ring_theory/polynomial/pochhammer.lean + theorem choose_eq_pochhammer_eval_div_factorial + theorem factorial_mul_pochhammer' + theorem factorial_mul_pochhammer + theorem pochhammer_eval_cast + theorem pochhammer_eval_eq_choose_mul_factorial + theorem pochhammer_eval_eq_factorial_div_factorial + theorem pochhammer_eval_one' + theorem pochhammer_eval_one + theorem pochhammer_eval_zero + theorem pochhammer_map + theorem pochhammer_mul + theorem pochhammer_ne_zero_eval_zero + theorem pochhammer_one + theorem pochhammer_pos + theorem pochhammer_succ_left + theorem pochhammer_succ_right + theorem pochhammer_zero + theorem pochhammer_zero_eval_zero + theorem polynomial.mul_X_add_nat_cast_comp 2021-03-17 08:30:54 861f594 feat(field_theory/normal): Tower of solvable extensions is solvable (#6643) This is the key lemma that makes Abel-Ruffini work. ESTIMATED CHANGES Modified src/field_theory/normal.lean + theorem is_solvable_of_is_scalar_tower 2021-03-17 08:30:53 6f6b548 refactor(group_theory/order_of_element): now makes sense for infinite monoids (#6587) This PR generalises `order_of` from finite groups to (potentially infinite) monoids. By convention, the value of `order_of` for an element of infinite order is `0`. This is non-standard for the order of an element, but agrees with the convention that the characteristic of a field is `0` if `1` has infinite additive order. It also enables to remove the assumption `0 G is a power map. ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem monoid_hom.map_cyclic 2021-03-14 03:22:10 b23e14d feat(data/polynomial/eval): prod_comp (#6644) Extend `mul_comp` to `multiset.prod` ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.prod_comp 2021-03-14 03:22:09 d5563ae feat(group_theory/solvable): Solvability preserved by short exact sequences (#6632) Proves that if 0 -> A -> B -> C -> 0 is a short exact sequence of groups, and if A and C are both solvable, then so is B. ESTIMATED CHANGES Modified src/group_theory/solvable.lean + theorem solvable_of_ker_le_range 2021-03-14 03:22:08 ade8889 feat(algebra/algebra/basic): An algebra isomorphism induces a group isomorphism between automorphism groups (#6622) Constructs the group isomorphism induced from an algebra isomorphism. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.aut_congr + theorem alg_equiv.aut_congr_refl + theorem alg_equiv.aut_congr_symm + theorem alg_equiv.aut_congr_trans + theorem alg_equiv.mul_apply 2021-03-14 00:42:57 552ebeb feat(algebra/continued_fractions): add convergence theorem (#6607) 1. Add convergence theorem for continued fractions, i.e. `(gcf.of v).convergents` converges to `v`. 2. Add some simple corollaries following from the already existing approximation lemmas for continued fractions, e.g. the equivalence of the convergent computations for continued fractions computed by `gcf.of` (`(gcf.of v).convergents` and `(gcf.of v).convergents'`). ESTIMATED CHANGES Modified src/algebra/continued_fractions/basic.lean + def simple_continued_fraction.is_continued_fraction - def simple_continued_fraction.is_regular_continued_fraction Added src/algebra/continued_fractions/computation/approximation_corollaries.lean + def continued_fraction.of + theorem generalized_continued_fraction.of_convergence + theorem generalized_continued_fraction.of_convergence_epsilon + theorem generalized_continued_fraction.of_convergents_eq_convergents' + theorem generalized_continued_fraction.of_is_simple_continued_fraction + def simple_continued_fraction.of + theorem simple_continued_fraction.of_is_continued_fraction Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/default.lean Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean Modified src/algebra/continued_fractions/default.lean 2021-03-14 00:42:55 a7410df feat(analysis/calculus/tangent_cone): add `unique_diff_on.pi` (#6577) ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean + theorem maps_to_tangent_cone_pi + theorem unique_diff_on.pi + theorem unique_diff_on.univ_pi + theorem unique_diff_within_at.pi + theorem unique_diff_within_at.univ_pi Modified src/analysis/normed_space/basic.lean + theorem eventually_nhds_norm_smul_sub_lt 2021-03-14 00:42:54 1b0db8e feat(order/well_founded_set, ring_theory/hahn_series): `hahn_series.add_val` (#6564) Defines `set.is_wf.min` in terms of `well_founded.min` Places an `add_valuation`, `hahn_series.add_val`, on `hahn_series` ESTIMATED CHANGES Modified src/order/well_founded_set.lean + theorem finset.mul_antidiagonal_min_mul_min + theorem set.is_wf.le_min_iff + theorem set.is_wf.min_le + theorem set.is_wf.min_le_min_of_subset + theorem set.is_wf.min_mem + theorem set.is_wf.min_mul + theorem set.is_wf.min_union + theorem set.is_wf.not_lt_min + theorem set.is_wf_min_singleton Modified src/ring_theory/hahn_series.lean + def hahn_series.add_val + theorem hahn_series.add_val_apply + theorem hahn_series.add_val_apply_of_ne + theorem hahn_series.coeff_min_ne_zero + theorem hahn_series.mul_coeff_min_add_min +/- theorem hahn_series.single_coeff_same + theorem hahn_series.support_add_subset + theorem hahn_series.support_nonempty_iff + theorem hahn_series.support_one 2021-03-14 00:42:53 0c26cea feat(order/filter/cofinite): a growing function has a minimum (#6556) If `tendsto f cofinite at_top`, then `f` has a minimal element. ESTIMATED CHANGES Modified src/order/filter/cofinite.lean + theorem filter.tendsto.exists_forall_ge + theorem filter.tendsto.exists_forall_le 2021-03-14 00:42:52 19ecff8 feat(topology/algebra/nonarchimedean): added nonarchimedean groups and rings (#6551) Adding nonarchimedean topological groups and rings. ESTIMATED CHANGES Added src/topology/algebra/nonarchimedean/basic.lean + theorem nonarchimedean_group.nonarchimedean_of_emb + theorem nonarchimedean_group.prod_self_subset + theorem nonarchimedean_group.prod_subset + theorem nonarchimedean_ring.left_mul_subset + theorem nonarchimedean_ring.mul_subset Modified src/topology/algebra/open_subgroup.lean + theorem open_subgroup.coe_comap + def open_subgroup.comap + theorem open_subgroup.comap_comap + theorem open_subgroup.mem_comap Modified src/topology/algebra/ring.lean 2021-03-14 00:42:51 ae33fb0 feat(group_theory/submonoid/operations): add eq_top_iff' (#6536) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.eq_top_iff' Modified src/group_theory/submonoid/operations.lean + theorem submonoid.eq_top_iff' Modified src/ring_theory/subring.lean + theorem subring.eq_top_iff' Modified src/ring_theory/subsemiring.lean + theorem subsemiring.eq_top_iff' 2021-03-14 00:42:50 f4c4d10 feat(probability_theory/independence): prove equivalences for indep_set (#6242) Prove the following equivalences on `indep_set`, for measurable sets `s,t` and a probability measure `µ` : * `indep_set s t μ ↔ μ (s ∩ t) = μ s * μ t`, * `indep_set s t μ ↔ indep_sets {s} {t} μ`. In `indep_sets.indep_set_of_mem`, we use those equivalences to obtain `indep_set s t µ` from `indep_sets S T µ` and `s ∈ S`, `t ∈ T`. ESTIMATED CHANGES Modified src/probability_theory/independence.lean + theorem probability_theory.indep_set_iff_indep_sets_singleton + theorem probability_theory.indep_set_iff_measure_inter_eq_mul + theorem probability_theory.indep_sets.indep_set_of_mem + theorem probability_theory.indep_sets_singleton_iff 2021-03-13 21:18:31 c277752 feat(algebra/group/defs, data/nat/basic): some `ne` lemmas (#6637) `≠` versions of `mul_left_inj`, `mul_right_inj`, and `succ_inj`, as well as the lemma `succ_succ_ne_one`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean Modified src/algebra/group/defs.lean + theorem mul_ne_mul_left + theorem mul_ne_mul_right Modified src/data/nat/basic.lean + theorem nat.mul_ne_mul_left + theorem nat.mul_ne_mul_right + theorem nat.one_lt_succ_succ + theorem nat.succ_ne_succ + theorem nat.succ_succ_ne_one 2021-03-13 21:18:30 468b8ff feat(field_theory/polynomial_galois_group): instances of trivial Galois group (#6634) This PR adds a bunch of instances where the Galois group of a polynomial is trivial. ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + def polynomial.gal.unique_gal_of_splits 2021-03-13 21:18:29 ba6b689 feat(field_theory/intermediate_field): coe_pow (#6626) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.coe_pow 2021-03-13 15:08:17 e6819d3 feat(algebra/group_power/lemmas): add invertible_of_pow_eq_one (#6658) ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem is_unit.pow Modified src/algebra/group_power/lemmas.lean + def invertible_of_pow_eq_one + def invertible_of_pow_succ_eq_one + theorem is_unit.pow 2021-03-13 01:18:53 ff8c8f5 fix(tactic/norm_num): perform cleanup even if norm_num fails (#6655) [As reported on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/norm_num.20fails.20when.20simp.20is.20too.20effective/near/230004826). ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2021-03-12 14:44:38 f54f81c refactor(algebra/invertible): push deeper into the import graph (#6650) I want to be able to import this in files where we use `is_unit`, to remove a few unecessary non-computables. This moves all the lemmas about `char_p` and `char_zero` from `algebra.invertible` to `algebra.char_p.invertible`. This means that we can talk about `invertible` elements without having to build up the theory in `order_of_element` first. This doesn't change any lemma statements or proofs, but it does move some type arguments into `variables` statements. ESTIMATED CHANGES Modified src/algebra/associated.lean Added src/algebra/char_p/invertible.lean + def invertible_of_char_p_not_dvd + def invertible_of_ring_char_not_dvd Modified src/algebra/invertible.lean - def invertible_of_char_p_not_dvd - def invertible_of_ring_char_not_dvd Modified src/algebra/quadratic_discriminant.lean Modified src/linear_algebra/affine_space/midpoint.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/polynomial/dickson.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean 2021-03-12 08:19:11 85c6a79 feat(measure_theory/lp_space): Lp is complete (#6563) Prove the completeness of `Lp` by showing that Cauchy sequences of `ℒp` have a limit. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/measure_theory/ess_sup.lean + theorem ennreal.ess_sup_liminf_le Modified src/measure_theory/lp_space.lean + theorem measure_theory.Lp.ae_tendsto_of_cauchy_snorm' + theorem measure_theory.Lp.ae_tendsto_of_cauchy_snorm + theorem measure_theory.Lp.cauchy_complete_ℒp + theorem measure_theory.Lp.cauchy_tendsto_of_tendsto + theorem measure_theory.Lp.complete_space_Lp_of_cauchy_complete_ℒp + theorem measure_theory.Lp.mem_ℒp_of_cauchy_tendsto + theorem measure_theory.Lp.snorm'_lim_eq_lintegral_liminf + theorem measure_theory.Lp.snorm'_lim_le_liminf_snorm' + theorem measure_theory.Lp.snorm_exponent_top_lim_eq_ess_sup_liminf + theorem measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top + theorem measure_theory.Lp.snorm_lim_le_liminf_snorm + theorem measure_theory.Lp.tendsto_Lp_of_tendsto_ℒp + theorem measure_theory.snorm'_norm Modified src/order/filter/ennreal.lean + theorem ennreal.limsup_liminf_le_liminf_limsup Modified src/topology/instances/ennreal.lean 2021-03-12 04:45:09 dae047e feat(data/polynomial/*): more lemmas, especially for noncommutative rings (#6599) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem zero_pow_eq Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.single_pow Modified src/data/int/cast.lean + theorem int.cast_comm Modified src/data/nat/cast.lean + theorem nat.cast_comm Modified src/data/polynomial/algebra_map.lean - theorem polynomial.eval_comp - theorem polynomial.eval₂_comp Modified src/data/polynomial/basic.lean + theorem polynomial.X_mul_monomial + theorem polynomial.X_pow_mul_monomial + theorem polynomial.monomial_mul_X + theorem polynomial.monomial_mul_X_pow + theorem polynomial.monomial_one_one_eq_X + theorem polynomial.monomial_one_right_eq_X_pow + theorem polynomial.monomial_pow + theorem polynomial.monomial_zero_one Modified src/data/polynomial/eval.lean + theorem polynomial.C_mul_comp + theorem polynomial.X_pow_comp - theorem polynomial.cast_nat_comp + theorem polynomial.eval_C_mul + theorem polynomial.eval_comp + theorem polynomial.eval_mul_X + theorem polynomial.eval_mul_X_pow + theorem polynomial.eval_nat_cast_mul + theorem polynomial.eval₂_at_apply + theorem polynomial.eval₂_at_nat_cast + theorem polynomial.eval₂_at_one + theorem polynomial.eval₂_at_zero + theorem polynomial.eval₂_comp + theorem polynomial.mul_X_comp + theorem polynomial.mul_X_pow_comp + theorem polynomial.nat_cast_comp + theorem polynomial.nat_cast_mul_comp Modified src/data/polynomial/monomial.lean + theorem polynomial.C_mul_monomial + theorem polynomial.monomial_mul_C Modified src/data/rat/cast.lean + theorem rat.cast_comm 2021-03-12 01:21:10 b852648 chore(scripts): update nolints.txt (#6651) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-12 00:18:01 2dabe5a feat(.docker): Docker containers for debian, alpine, and gitpod (#6515) # Docker containers The `.docker` directory contains instructions for building Docker containers with Lean and mathlib. ## Build You can build these containers using `scripts/docker_build.sh`. This will result in the creation of two containers: * `leanprovercommunity/lean` - contains elan, lean, and leanproject * `leanprovercommunity/mathlib` - additionally contains a copy of mathlib, with oleans In fact, for each container you'll get three different tags, `:debian`, `:alpine` and `:latest`. `:debian` and `:alpine` use those respective distributions, and `:latest` just points at `:debian`. Finally, there is also a `leanprovercommunity/mathlib:gitpod` for use at [https://gitpod.io/](https://gitpod.io/). ## Usage ### gitpod.io There is a container based on `gitpod/workspace-base` enabling [https://gitpod.io/](https://gitpod.io/) to create in-browser VSCode sessions with elan/lean/leanproject/mathlib already set up. Either prepend `https://gitpod.io/#` to basically any URL at github, e.g. [https://gitpod.io/#https://github.com/leanprover-community/mathlib/tree/docker](https://gitpod.io/#https://github.com/leanprover-community/mathlib/tree/docker), or install a [gitpod browser extension](https://www.gitpod.io/docs/browser-extension/) which will add buttons directly on github. ### Command line You can use these containers as virtual machines: ```sh docker run -it leanprovercommunity/mathlib ``` ### Docker registry These containers are deployed to the Docker registry, so anyone can just `docker run -it leanprovercommunity/mathlib` to get a local lean+mathlib environment. There is a local script in `scripts/docker_push.sh` for deployment, but I have also set up `hub.docker.com` to watch the `docker` branch for updates and automatically rebuild. If this PR is merged to master we should change that to watch `master`. ### Remote containers for VSCode Installing the `Remote - Containers` VSCode extension will allow you to open a project inside the `leanprovercommunity/mathlib` container (meaning you don't even need a local copy of lean installed). The file `/.devcontainer/devcontainer.json` sets this up: if you have the extension installed, you'll be prompted to ask if you'd like to run inside the container, no configuration necessary. ESTIMATED CHANGES Added .devcontainer/README.md Added .devcontainer/devcontainer.json Added .docker/README.md Added .docker/alpine/lean/.profile Added .docker/alpine/lean/Dockerfile Added .docker/alpine/mathlib/Dockerfile Added .docker/debian/lean/Dockerfile Added .docker/debian/mathlib/Dockerfile Added .docker/gitpod/mathlib/Dockerfile Modified .github/PULL_REQUEST_TEMPLATE.md Added .gitpod.yml Modified README.md Added scripts/docker_build.sh Added scripts/docker_push.sh 2021-03-11 22:32:31 b1aafb2 fix (topology/algebra/basic): fix universe issue with of_nhds_one (#6647) Everything had type max{u v} before. ESTIMATED CHANGES Modified src/topology/algebra/group.lean +/- theorem topological_group.of_nhds_one 2021-03-11 17:09:38 4d8d344 feat(data/multiset/basic): Multiset induction lemma (#6623) This is the multiset analog of `finset.induction_on'` ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.induction_on' 2021-03-11 17:09:36 bd3695a feat(data/complex/is_R_or_C): add linear maps for is_R_or_C.re, im, conj and of_real (#6621) Add continuous linear maps and linear isometries (when applicable) for the following `is_R_or_C` functions: `re`, `im`, `conj` and `of_real`. Rename the existing continuous linear maps defined in complex.basic to adopt the naming convention of is_R_or_C. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + def complex.conj_clm + theorem complex.conj_clm_apply + theorem complex.conj_clm_coe + theorem complex.conj_clm_norm + def complex.conj_li +/- theorem complex.continuous_conj +/- theorem complex.continuous_im - def complex.continuous_linear_map.conj - theorem complex.continuous_linear_map.conj_apply - theorem complex.continuous_linear_map.conj_coe - theorem complex.continuous_linear_map.conj_norm - def complex.continuous_linear_map.im - theorem complex.continuous_linear_map.im_apply - theorem complex.continuous_linear_map.im_coe - theorem complex.continuous_linear_map.im_norm - def complex.continuous_linear_map.of_real - theorem complex.continuous_linear_map.of_real_apply - theorem complex.continuous_linear_map.of_real_coe - theorem complex.continuous_linear_map.of_real_norm - def complex.continuous_linear_map.re - theorem complex.continuous_linear_map.re_apply - theorem complex.continuous_linear_map.re_coe - theorem complex.continuous_linear_map.re_norm +/- theorem complex.continuous_re + def complex.im_clm + theorem complex.im_clm_apply + theorem complex.im_clm_coe + theorem complex.im_clm_norm +/- theorem complex.isometry_conj +/- theorem complex.isometry_of_real - def complex.linear_isometry.conj - def complex.linear_isometry.of_real + def complex.of_real_clm + theorem complex.of_real_clm_apply + theorem complex.of_real_clm_coe + theorem complex.of_real_clm_norm + def complex.of_real_li + def complex.re_clm + theorem complex.re_clm_apply + theorem complex.re_clm_coe + theorem complex.re_clm_norm Modified src/analysis/complex/real_deriv.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.conj_clm_apply + theorem is_R_or_C.conj_clm_coe + theorem is_R_or_C.conj_clm_norm + theorem is_R_or_C.conj_eq_re_sub_im + theorem is_R_or_C.conj_li_apply + theorem is_R_or_C.conj_lm_coe + theorem is_R_or_C.conj_smul + theorem is_R_or_C.continuous_conj + theorem is_R_or_C.continuous_im + theorem is_R_or_C.continuous_of_real + theorem is_R_or_C.continuous_re + theorem is_R_or_C.im_clm_apply + theorem is_R_or_C.im_clm_coe + theorem is_R_or_C.im_lm_coe - theorem is_R_or_C.norm_re_clm + theorem is_R_or_C.of_real_clm_apply + theorem is_R_or_C.of_real_clm_coe + theorem is_R_or_C.of_real_clm_norm + theorem is_R_or_C.of_real_li_apply + theorem is_R_or_C.of_real_lm_coe + theorem is_R_or_C.of_real_smul + theorem is_R_or_C.re_clm_norm Modified src/data/complex/module.lean + def complex.conj_lm + theorem complex.conj_lm_coe + def complex.im_lm + theorem complex.im_lm_coe - theorem complex.linear_map.coe_conj - theorem complex.linear_map.coe_im - theorem complex.linear_map.coe_of_real - theorem complex.linear_map.coe_re - def complex.linear_map.conj - def complex.linear_map.im - def complex.linear_map.of_real - def complex.linear_map.re + def complex.of_real_lm + theorem complex.of_real_lm_coe + def complex.re_lm + theorem complex.re_lm_coe 2021-03-11 17:09:35 998a382 feat(topology/algebra/infinite_sum): add `tsum_even_add_odd` (#6620) Prove `∑' i, f (2 * i) + ∑' i, f (2 * i + 1) = ∑' i, f i` and some supporting lemmas. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem range_two_mul + theorem range_two_mul_add_one Modified src/data/nat/parity.lean + theorem nat.is_compl_even_odd Modified src/topology/algebra/infinite_sum.lean + theorem function.injective.has_sum_range_iff + theorem has_sum.add_disjoint + theorem has_sum.add_is_compl + theorem has_sum.even_add_odd + theorem summable.even_add_odd + theorem tsum_even_add_odd + theorem tsum_union_disjoint 2021-03-11 17:09:34 95a8e95 refactor(data/{,mv_}polynomial): support function (#6615) With polynomials, we try to avoid the function coercion in favor of the `coeff` functions. However the coercion easily leaks through the abstraction because of the `finsupp.mem_support_iff` lemma. This PR adds the `polynomial.support` and `mv_polynomial.support` functions. This allows us to define the `polynomial.mem_support_iff` and `mv_polynomial.mem_support_iff` lemmas that are stated in terms of `coeff`. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.C_0 + theorem mv_polynomial.C_apply +/- def mv_polynomial.coeff +/- theorem mv_polynomial.coeff_C_mul - def mv_polynomial.coeff_coe_to_fun + theorem mv_polynomial.mem_support_iff + theorem mv_polynomial.mul_def + theorem mv_polynomial.not_mem_support_iff + theorem mv_polynomial.sum_C + theorem mv_polynomial.sum_def + def mv_polynomial.support + theorem mv_polynomial.support_X + theorem mv_polynomial.support_add + theorem mv_polynomial.support_monomial + theorem mv_polynomial.support_monomial_subset + theorem mv_polynomial.support_mul Modified src/data/mv_polynomial/comm_ring.lean + theorem mv_polynomial.support_neg Modified src/data/mv_polynomial/rename.lean Modified src/data/mv_polynomial/variables.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean + theorem polynomial.card_support_eq_zero + def polynomial.support + theorem polynomial.support_add + theorem polynomial.support_eq_empty + theorem polynomial.support_neg Modified src/data/polynomial/coeff.lean + theorem polynomial.mem_support_iff - theorem polynomial.mem_support_iff_coeff_ne_zero + theorem polynomial.not_mem_support_iff - theorem polynomial.not_mem_support_iff_coeff_zero + theorem polynomial.sum_def Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/degree/lemmas.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean - theorem polynomial.apply_eq_coeff - def polynomial.coeff_coe_to_fun Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/polynomial/reverse.lean Modified src/field_theory/separable.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/ring_theory/mv_polynomial/basic.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/polynomial/homogeneous.lean Modified src/ring_theory/polynomial/scale_roots.lean 2021-03-11 17:09:33 f5c9d0f feat(topology/algebra/ordered): generalize `real.compact_Icc` (#6602) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_bot_top Modified src/order/filter/ultrafilter.lean + theorem ultrafilter.diff_mem_iff Modified src/topology/algebra/ordered.lean + theorem compact_Icc + theorem compact_interval + theorem compact_pi_Icc Modified src/topology/instances/real.lean - theorem compact_Icc - theorem compact_pi_Icc - theorem real.totally_bounded_Icc - theorem real.totally_bounded_Ico - theorem real.totally_bounded_Ioo Modified src/topology/metric_space/basic.lean + theorem totally_bounded_Icc + theorem totally_bounded_Ico + theorem totally_bounded_Ioc + theorem totally_bounded_Ioo Modified src/topology/uniform_space/cauchy.lean + theorem is_compact.is_complete + theorem is_compact.totally_bounded 2021-03-11 13:28:38 3b3a8b5 fix(normed_space/multilinear): speed up slow proof (#6639) This proof seems to be right on the edge of timing out and has been causing CI issues. I'm not sure if this is the only culprit. This whole file is very slow. Is this because of recent changes, or has it always been like this? ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean 2021-03-11 13:28:36 3d451c7 chore(tactic/interactive): propagate tags in `substs` (#6638) Before this change, the `case left` tactic here did not work: ```lean example {α : Type*} (a b c : α) (h : a = b) : (a = b ∨ a = c) ∧ true := begin with_cases {apply and.intro}, substs' h, case left : { exact or.inl rfl }, case right : { trivial } end ``` ESTIMATED CHANGES Modified src/tactic/interactive.lean 2021-03-11 13:28:35 9beec03 feat(group_theory/subgroup): le_ker_iff (#6630) A subgroup is contained in the kernel iff it is mapped to the trivial subgroup. ESTIMATED CHANGES Modified src/algebra/lie/nilpotent.lean Modified src/algebra/lie/solvable.lean Modified src/algebra/lie/submodule.lean - theorem lie_hom.map_bot_iff + theorem lie_ideal.map_eq_bot_iff Modified src/group_theory/solvable.lean Modified src/group_theory/subgroup.lean + theorem monoid_hom.ker_eq_bot_iff +/- theorem subgroup.map_eq_bot_iff + theorem subgroup.map_eq_bot_iff_of_injective 2021-03-11 13:28:33 57fda28 refactor(data/polynomial/degree/definitions): Remove hypothesis of nat_degree_X_pow_sub_C (#6628) The lemma `nat_degree_X_pow_sub_C ` had an unnecessary hypothesis. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.nat_degree_X_pow_sub_C Modified src/ring_theory/polynomial/cyclotomic.lean 2021-03-11 13:28:32 41f1196 feat(field_theory/polynomial_galois_group): ext lemma (#6627) Two elements of `gal p` are equal if they agree on all roots of `p` ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.ext 2021-03-11 13:28:31 3dd1257 feat(group_theory/solvable): Commutative groups are solvable (#6625) In practice, `is_solvable_of_comm` is hard to use, since you often aren't working with a `comm_group`. Instead, it is much nicer to be able to write: `apply is_solvable_of_comm'` `intros g h` ESTIMATED CHANGES Modified src/group_theory/solvable.lean + theorem is_solvable_of_comm 2021-03-11 13:28:30 2c4a985 feat(field_theory/splitting_field): splits_pow (#6624) If a polynomial splits then so do its powers. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem polynomial.splits_X_pow + theorem polynomial.splits_pow 2021-03-11 13:28:29 653fd29 refactor(topology): make is_closed a class (#6552) In `lean-liquid`, it would be useful that `is_closed` would be a class, to be able to infer a normed space structure on `E/F` when `F` is a closed subspace of a normed space `E`. This is implemented in this PR. This is mostly straightforward: the only proofs that need fixing are those abusing defeqness, so the new version makes them clearer IMHO. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/convex/integral.lean Modified src/data/analysis/topology.lean Modified src/measure_theory/borel_space.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean - def is_closed + theorem is_open.is_closed_compl +/- theorem is_open_compl_iff Modified src/topology/category/Compactum.lean Modified src/topology/connected.lean Modified src/topology/constructions.lean Modified src/topology/homeomorph.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/order.lean Modified src/topology/paracompact.lean Modified src/topology/separation.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/separation.lean 2021-03-11 11:19:18 56065f7 feat(measure_theory/pi_system) lemmas for pi_system, useful for independence. (#6353) The goal here is to prove that the expectation of a product of an finite number of independent random variables equals the production of the expectations. See https://github.com/leanprover-community/mathlib/tree/mzinkevi_independent_finite_alt ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean - def is_pi_system - theorem measurable_space.dynkin_system.ext - def measurable_space.dynkin_system.generate - theorem measurable_space.dynkin_system.generate_from_eq - inductive measurable_space.dynkin_system.generate_has - theorem measurable_space.dynkin_system.generate_has_compl - theorem measurable_space.dynkin_system.generate_has_def - theorem measurable_space.dynkin_system.generate_has_subset_generate_measurable - theorem measurable_space.dynkin_system.generate_inter - theorem measurable_space.dynkin_system.generate_le - theorem measurable_space.dynkin_system.has_Union - theorem measurable_space.dynkin_system.has_compl_iff - theorem measurable_space.dynkin_system.has_diff - theorem measurable_space.dynkin_system.has_union - theorem measurable_space.dynkin_system.has_univ - def measurable_space.dynkin_system.of_measurable_space - theorem measurable_space.dynkin_system.of_measurable_space_le_of_measurable_space_iff - theorem measurable_space.dynkin_system.of_measurable_space_to_measurable_space - def measurable_space.dynkin_system.restrict_on - def measurable_space.dynkin_system.to_measurable_space - structure measurable_space.dynkin_system - theorem measurable_space.induction_on_inter - theorem measurable_space.is_pi_system_measurable_set Modified src/measure_theory/outer_measure.lean Added src/measure_theory/pi_system.lean + theorem generate_from_generate_pi_system_eq + theorem generate_from_measurable_set_of_generate_pi_system + inductive generate_pi_system + theorem generate_pi_system_eq + theorem generate_pi_system_measurable_set + theorem generate_pi_system_mono + theorem generate_pi_system_subset_self + theorem is_pi_system.singleton + def is_pi_system + theorem is_pi_system_generate_pi_system + theorem measurable_space.dynkin_system.ext + def measurable_space.dynkin_system.generate + theorem measurable_space.dynkin_system.generate_from_eq + inductive measurable_space.dynkin_system.generate_has + theorem measurable_space.dynkin_system.generate_has_compl + theorem measurable_space.dynkin_system.generate_has_def + theorem measurable_space.dynkin_system.generate_has_subset_generate_measurable + theorem measurable_space.dynkin_system.generate_inter + theorem measurable_space.dynkin_system.generate_le + theorem measurable_space.dynkin_system.has_Union + theorem measurable_space.dynkin_system.has_compl_iff + theorem measurable_space.dynkin_system.has_diff + theorem measurable_space.dynkin_system.has_union + theorem measurable_space.dynkin_system.has_univ + def measurable_space.dynkin_system.of_measurable_space + theorem measurable_space.dynkin_system.of_measurable_space_le_of_measurable_space_iff + theorem measurable_space.dynkin_system.of_measurable_space_to_measurable_space + def measurable_space.dynkin_system.restrict_on + def measurable_space.dynkin_system.to_measurable_space + structure measurable_space.dynkin_system + theorem measurable_space.induction_on_inter + theorem measurable_space.is_pi_system_measurable_set + theorem mem_generate_pi_system_Union_elim' + theorem mem_generate_pi_system_Union_elim + theorem subset_generate_pi_system_self 2021-03-11 06:05:43 925ea07 feat(linear_algebra/basic): add missing lemma finsupp.sum_smul_index_linear_map' (#6565) See also [this Zulip conversation](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Sum.20is.20linear/near/229021943). cc @eric-wieser ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.sum_smul_index_add_monoid_hom Modified src/linear_algebra/basic.lean + theorem finsupp.sum_smul_index_linear_map' 2021-03-11 05:06:41 b7c5709 chore(geometry/manifold): use notation `𝓘(𝕜, E)` (#6636) ESTIMATED CHANGES Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean 2021-03-11 02:48:51 514973a chore(scripts): update nolints.txt (#6635) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-11 02:48:49 0e32116 feat(data/dfinsupp): add is_scalar_tower and smul_comm_class (#6614) This also weakens the requirements for the `has_scalar` instance ESTIMATED CHANGES Modified src/data/dfinsupp.lean +/- theorem dfinsupp.coe_smul +/- theorem dfinsupp.smul_apply Modified src/linear_algebra/direct_sum_module.lean 2021-03-11 02:48:47 a814e18 ci(.github/workflows/build.yml): do not install azcopy, change upload logic (#6613) The "install azcopy" step has been [failing](https://github.com/leanprover-community/mathlib/runs/2070026978) from time to time, probably due to failed downloads. As it turns out, the GitHub-hosted actions runner [comes with it installed](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#tools), so I've removed that step entirely. I also made two other changes: - The "push release to azure" step now only runs if the build actually started. The idea is that if the build never even starts due to e.g. `elan` temporarily failing to install, then we should be able to restart the build on GitHub and get `.olean`s for that commit without having to push another dummy commit. Currently we can't do this because we push an empty archive to Azure no matter what. - We now upload artifacts if the build fails. This gives us an alternative way to get `.olean`s in case something goes wrong with Azure, and might make working with forks of mathlib slightly easier. ESTIMATED CHANGES Modified .github/workflows/build.yml 2021-03-11 00:47:49 c5c97f2 chore(ring_theory/polynomial/basic): remove a use of comap (#6612) This merges together `quotient_equiv_quotient_mv_polynomial` and `quotient_alg_equiv_quotient_mv_polynomial`, since the two now have the same domain and codomain. `comap` was previously needed here to provide a wrapper type with an R-algebra structure on `mv_polynomial σ (I.quotient)`. The updated `mv_polynomial.algebra` in #6533 transfers the `algebra R I.quotient` structure directly to `mv_polynomial σ I.quotient`, eliminating the need for this wrapper type. ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean - def mv_polynomial.quotient_alg_equiv_quotient_mv_polynomial 2021-03-11 00:47:48 590444c chore(topology/metric/hausdorff_distance): use `infi`/`supr` (#6611) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.sup_eq_zero + theorem ennreal.supr_eq_zero Modified src/topology/instances/ennreal.lean - theorem ennreal.supr_eq_zero Modified src/topology/metric_space/hausdorff_distance.lean +/- def emetric.inf_edist +/- theorem emetric.inf_edist_empty + theorem emetric.le_inf_edist 2021-03-10 20:43:06 5be9cea chore(linear_algebra/quadratic_form): clean up universe collisions, generalize smul lemmas (#6609) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean +/- theorem quadratic_form.coe_fn_smul +/- theorem quadratic_form.polar_comm +/- theorem quadratic_form.polar_smul + theorem quadratic_form.polar_smul_left_of_tower + theorem quadratic_form.polar_smul_right_of_tower +/- theorem quadratic_form.smul_apply 2021-03-10 20:43:05 547bf55 feat(data/complex/module): transfer all `has_scalar ℝ` structures to `ℂ` (#6562) This provides (for an `R` with the same instance on `ℝ`) the instances: * `has_scalar R ℂ` * `is_scalar_tower R S ℂ` * `smul_comm_class R S ℂ` * `mul_action R ℂ` * `distrib_mul_action R ℂ` * `semimodule R ℂ` * `algebra R ℂ` * `normed_algebra R ℂ` This has the downside that `smul_coe` is no longer a `rfl` lemma, but means that `ℂ` is automatically an algebra over `ℝ≥0`. It renames `smul_re` and `smul_im` to `of_real_mul_re` and `of_real_mul_im`, since the previous statements did not use `smul` at all, and renaming frees up these names for lemmas which _do_ use `smul`. This removes `normed_space.restrict_scalars_real E` (implemented as `normed_space.restrict_scalars ℝ ℂ E`) as: * As an instance, it now causes unwanted diamonds * After downgrading to a def, it is never used * The docs for `normed_space.restrict_scalars` suggest judicious use, and that if you want this instance you should use the type synonym `semimodule.restrict_scalars ℝ ℂ E` which will have this instance for free. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Modified src/analysis/special_functions/pow.lean Modified src/data/complex/basic.lean + theorem complex.of_real_mul' + theorem complex.of_real_mul_im + theorem complex.of_real_mul_re - theorem complex.of_real_smul - theorem complex.smul_im - theorem complex.smul_re Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.of_real_mul_im - theorem is_R_or_C.smul_im' +/- theorem is_R_or_C.smul_im - theorem is_R_or_C.smul_re' +/- theorem is_R_or_C.smul_re Modified src/data/complex/module.lean +/- theorem complex.smul_coe + theorem complex.smul_im + theorem complex.smul_re Modified src/ring_theory/polynomial/cyclotomic.lean 2021-03-10 20:43:04 60e2579 feat(ring_theory/valuation/basic): additive valuations (#6559) Introduces `add_valuation`, a version of `valuation` that takes values in a `linear_ordered_add_comm_monoid_with_top`. As an example, defines `multiplicity.add_valuation` ESTIMATED CHANGES Modified src/ring_theory/multiplicity.lean + theorem multiplicity.add_valuation_apply Modified src/ring_theory/valuation/basic.lean + def add_valuation.comap + theorem add_valuation.comap_comp + theorem add_valuation.comap_id + theorem add_valuation.comap_on_quot_eq + theorem add_valuation.comap_supp + theorem add_valuation.ext + theorem add_valuation.ext_iff + theorem add_valuation.is_equiv.comap + theorem add_valuation.is_equiv.map + theorem add_valuation.is_equiv.ne_top + theorem add_valuation.is_equiv.of_eq + theorem add_valuation.is_equiv.refl + theorem add_valuation.is_equiv.symm + theorem add_valuation.is_equiv.trans + theorem add_valuation.is_equiv.val_eq + def add_valuation.is_equiv + def add_valuation.map + theorem add_valuation.map_add + theorem add_valuation.map_add_supp + theorem add_valuation.map_le_add + theorem add_valuation.map_le_sum + theorem add_valuation.map_lt_add + theorem add_valuation.map_lt_sum' + theorem add_valuation.map_lt_sum + theorem add_valuation.map_mul + theorem add_valuation.map_one + theorem add_valuation.map_pow + theorem add_valuation.map_zero + theorem add_valuation.mem_supp_iff + theorem add_valuation.ne_top_iff + def add_valuation.of + theorem add_valuation.of_apply + def add_valuation.on_quot + theorem add_valuation.on_quot_comap_eq + def add_valuation.on_quot_val + theorem add_valuation.self_le_supp_comap + def add_valuation.supp + theorem add_valuation.supp_quot + theorem add_valuation.supp_quot_supp + def add_valuation.to_preorder + theorem add_valuation.top_iff + def add_valuation 2021-03-10 20:43:02 e62a406 feat(linear_algebra/determinant): determinant of a block triangular matrix (#6050) Add lemmas for determinants of block triangular matrices. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.subtype_subtype_equiv_subtype_apply + theorem equiv.subtype_subtype_equiv_subtype_exists_apply + theorem equiv.subtype_subtype_equiv_subtype_inter_apply Modified src/data/matrix/basic.lean + def matrix.to_block + theorem matrix.to_block_apply + def matrix.to_square_block' + def matrix.to_square_block + theorem matrix.to_square_block_def' + theorem matrix.to_square_block_def + def matrix.to_square_block_prop + theorem matrix.to_square_block_prop_def Modified src/group_theory/perm/basic.lean + theorem equiv.perm.default_perm Modified src/group_theory/perm/sign.lean + theorem equiv.perm.perm_maps_to_inl_iff_maps_to_inr + theorem equiv.perm.perm_on_inl_iff_perm_on_inr Modified src/linear_algebra/determinant.lean + theorem matrix.det_eq_elem_of_card_eq_one + theorem matrix.det_unique + theorem matrix.upper_two_block_triangular_det Modified src/linear_algebra/matrix.lean + def matrix.block_triangular_matrix' + def matrix.block_triangular_matrix + theorem matrix.det_of_block_triangular_matrix'' + theorem matrix.det_of_block_triangular_matrix' + theorem matrix.det_of_block_triangular_matrix + theorem matrix.det_of_lower_triangular + theorem matrix.det_of_upper_triangular + theorem matrix.det_to_block + theorem matrix.det_to_square_block' + theorem matrix.det_to_square_block + theorem matrix.equiv_block_det + theorem matrix.to_square_block_det'' + theorem matrix.two_block_triangular_det + theorem matrix.upper_two_block_triangular' + theorem matrix.upper_two_block_triangular 2021-03-10 17:05:28 664feed chore(topology/algebra/ordered): add some `at_bot` versions of lemmas (#6618) ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean + theorem tendsto_at_bot_cinfi + theorem tendsto_at_bot_csupr + theorem tendsto_at_bot_infi + theorem tendsto_at_bot_supr 2021-03-10 17:05:27 f675a86 feat(data/real/{nnreal,ennreal}): add (e)nnreal.of_real_bit0/bit1 (#6617) Add bit0/bit1 lemmas for `nnreal.of_real`, `ennreal.of_real` and `ennreal.to_nnreal`. With these additions, it is for example possible to prove `h : ennreal.of_real (2 : ℝ) = 2 := by simp`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.of_real_bit0 + theorem ennreal.of_real_bit1 + theorem ennreal.to_nnreal_bit0 + theorem ennreal.to_nnreal_bit1 + theorem ennreal.to_real_bit0 + theorem ennreal.to_real_bit1 Modified src/data/real/nnreal.lean + theorem nnreal.of_real_bit0 + theorem nnreal.of_real_bit1 2021-03-10 17:05:26 df1337e feat(data/local_equiv,topology/local_homeomorph): add `local_equiv.pi` and `local_homeomorph.pi` (#6574) ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean + theorem local_equiv.pi_coe + theorem local_equiv.pi_symm Modified src/data/set/basic.lean + theorem set.range_dcomp Modified src/topology/constructions.lean + theorem continuous_at_pi Modified src/topology/continuous_on.lean + theorem continuous_on_pi + theorem continuous_within_at_pi Modified src/topology/local_homeomorph.lean + def local_homeomorph.pi 2021-03-10 11:57:13 e221dc9 feat(ring_theory/hahn_series): algebra structure, equivalences with power series (#6540) Places an `algebra` structure on `hahn_series` Defines a `ring_equiv` and when relevant an `alg_equiv` between `hahn_series nat R` and `power_series R`. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/order/well_founded_set.lean + theorem set.is_wf_univ_iff + theorem well_founded.is_wf Modified src/ring_theory/hahn_series.lean + def hahn_series.C + theorem hahn_series.C_apply + theorem hahn_series.C_eq_algebra_map + theorem hahn_series.C_mul_eq_smul + theorem hahn_series.C_one + theorem hahn_series.C_zero +/- theorem hahn_series.add_coeff' +/- theorem hahn_series.add_coeff + theorem hahn_series.algebra_map_apply + theorem hahn_series.coeff_to_power_series + theorem hahn_series.coeff_to_power_series_symm + theorem hahn_series.eq_of_mem_support_single + theorem hahn_series.mul_single_coeff_add + def hahn_series.single.add_monoid_hom + theorem hahn_series.single.add_monoid_hom_apply + def hahn_series.single.linear_map + theorem hahn_series.single.linear_map_apply +/- def hahn_series.single +/- theorem hahn_series.single_eq_zero + theorem hahn_series.single_mul_coeff_add + theorem hahn_series.single_mul_single + theorem hahn_series.single_zero_mul_coeff + theorem hahn_series.support_single_subset + def hahn_series.to_power_series + def hahn_series.to_power_series_alg + theorem hahn_series.to_power_series_alg_apply + theorem hahn_series.to_power_series_alg_symm_apply Modified src/ring_theory/power_series/basic.lean + theorem mv_power_series.C_eq_algebra_map + theorem mv_power_series.algebra_map_apply + theorem power_series.C_eq_algebra_map + theorem power_series.algebra_map_apply 2021-03-10 11:57:12 eaa0218 feat(category_theory/triangulated/basic): add definitions of additive category and triangle (#6539) This PR adds the definition of an additive category and the definition of a triangle in an additive category with an additive shift. ESTIMATED CHANGES Added src/category_theory/additive/basic.lean Added src/category_theory/triangulated/basic.lean + structure category_theory.triangulated.triangle + def category_theory.triangulated.triangle_morphism.comp + theorem category_theory.triangulated.triangle_morphism.comp_assoc + theorem category_theory.triangulated.triangle_morphism.comp_id + theorem category_theory.triangulated.triangle_morphism.id_comp + structure category_theory.triangulated.triangle_morphism + def category_theory.triangulated.triangle_morphism_id 2021-03-10 11:57:10 a7f1e3c feat(normed_group): tendsto_at_top (#6525) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem normed_group.tendsto_at_top' + theorem normed_group.tendsto_at_top Modified src/topology/metric_space/basic.lean + theorem metric.tendsto_at_top' 2021-03-10 11:57:09 ccd35db feat(linear_algebra/matrix): to_matrix and to_lin as alg_equiv (#6496) The existing `linear_map.to_matrix` and `matrix.to_lin` can be upgraded to an `alg_equiv` if working on linear endomorphisms or square matrices. The API is copied over in rote fashion. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem matrix.algebra_map_eq_smul Modified src/linear_algebra/matrix.lean + def linear_map.to_matrix_alg_equiv' + theorem linear_map.to_matrix_alg_equiv'_apply + theorem linear_map.to_matrix_alg_equiv'_comp + theorem linear_map.to_matrix_alg_equiv'_id + theorem linear_map.to_matrix_alg_equiv'_mul + theorem linear_map.to_matrix_alg_equiv'_symm + theorem linear_map.to_matrix_alg_equiv'_to_lin_alg_equiv' + def linear_map.to_matrix_alg_equiv + theorem linear_map.to_matrix_alg_equiv_apply' + theorem linear_map.to_matrix_alg_equiv_apply + theorem linear_map.to_matrix_alg_equiv_comp + theorem linear_map.to_matrix_alg_equiv_id + theorem linear_map.to_matrix_alg_equiv_mul + theorem linear_map.to_matrix_alg_equiv_range + theorem linear_map.to_matrix_alg_equiv_symm + theorem linear_map.to_matrix_alg_equiv_to_lin_alg_equiv + theorem linear_map.to_matrix_alg_equiv_transpose_apply' + theorem linear_map.to_matrix_alg_equiv_transpose_apply + def matrix.to_lin_alg_equiv' + theorem matrix.to_lin_alg_equiv'_apply + theorem matrix.to_lin_alg_equiv'_mul + theorem matrix.to_lin_alg_equiv'_one + theorem matrix.to_lin_alg_equiv'_symm + theorem matrix.to_lin_alg_equiv'_to_matrix_alg_equiv' + def matrix.to_lin_alg_equiv + theorem matrix.to_lin_alg_equiv_apply + theorem matrix.to_lin_alg_equiv_mul + theorem matrix.to_lin_alg_equiv_one + theorem matrix.to_lin_alg_equiv_self + theorem matrix.to_lin_alg_equiv_symm + theorem matrix.to_lin_alg_equiv_to_matrix_alg_equiv 2021-03-10 08:51:55 b1ecc98 feat(nat/digits): natural basis representation using list sum and map (#5975) ESTIMATED CHANGES Modified src/data/list/zip.lean + theorem list.sum_zip_with_distrib_left Modified src/data/nat/digits.lean + theorem nat.of_digits_eq_sum_map_with_index + theorem nat.of_digits_eq_sum_map_with_index_aux 2021-03-10 02:23:34 fad44b9 feat(ring_theory/ideal/operations): add quotient_equiv (#6492) The ring equiv `R/I ≃+* S/J` induced by a ring equiv `f : R ≃+* S`, where `J = f(I)`, and similarly for algebras. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.comap_of_equiv + theorem ideal.map_comap_of_equiv + theorem ideal.map_of_equiv + def ideal.quotient_equiv + def ideal.quotient_equiv_alg + theorem ideal.quotient_map_comp_mkₐ + theorem ideal.quotient_map_mkₐ + def ideal.quotient_mapₐ 2021-03-10 02:23:33 4e370b5 feat(topology): shrinking lemma (#6478) ### Add a few versions of the shrinking lemma: * `exists_subset_Union_closure_subset` and `exists_Union_eq_closure_subset`: shrinking lemma for general normal spaces; * `exists_subset_Union_ball_radius_lt`, `exists_Union_ball_eq_radius_lt`, `exists_subset_Union_ball_radius_pos_lt`, `exists_Union_ball_eq_radius_pos_lt`: shrinking lemma for coverings by open balls in a proper metric space; * `exists_locally_finite_subset_Union_ball_radius_lt`, `exists_locally_finite_Union_eq_ball_radius_lt`: given a positive function `R : X → ℝ`, finds a locally finite covering by open balls `ball (c i) (r' i)`, `r' i < R` and a subcovering by balls of strictly smaller radius `ball (c i) (r i)`, `0 < r i < r' i`. ### Other API changes * add `@[simp]` to `set.compl_subset_compl`; * add `is_closed_bInter` and `locally_finite.point_finite`; * add `metric.closed_ball_subset_closed_ball`, `metric.uniformity_basis_dist_lt`, `exists_pos_lt_subset_ball`, and `exists_lt_subset_ball`; * generalize `refinement_of_locally_compact_sigma_compact_of_nhds_basis` to `refinement_of_locally_compact_sigma_compact_of_nhds_basis_set`, replace arguments `(s : X → set X) (hs : ∀ x, s x ∈ 𝓝 x)` with a hint to use `filter.has_basis.restrict_subset` if needed. * make `s` and `t` arguments of `normal_separation` implicit; * add `normal_exists_closure_subset`; * turn `sigma_compact_space_of_locally_compact_second_countable` into an `instance`. ESTIMATED CHANGES Modified roadmap/topology/shrinking_lemma.lean + theorem roadmap.shrinking_lemma - theorem shrinking_lemma Modified src/data/set/basic.lean +/- theorem set.compl_subset_compl Modified src/topology/basic.lean + theorem is_closed_bInter + theorem locally_finite.point_finite Modified src/topology/metric_space/basic.lean + theorem exists_Union_ball_eq_radius_lt + theorem exists_Union_ball_eq_radius_pos_lt + theorem exists_locally_finite_Union_eq_ball_radius_lt + theorem exists_locally_finite_subset_Union_ball_radius_lt + theorem exists_lt_subset_ball + theorem exists_pos_lt_subset_ball + theorem exists_subset_Union_ball_radius_lt + theorem exists_subset_Union_ball_radius_pos_lt + theorem metric.closed_ball_subset_ball + theorem metric.uniformity_basis_dist_lt Modified src/topology/paracompact.lean + theorem refinement_of_locally_compact_sigma_compact_of_nhds_basis_set Modified src/topology/separation.lean + theorem normal_exists_closure_subset +/- theorem normal_separation Added src/topology/shrinking_lemma.lean + theorem exists_Union_eq_closure_subset + theorem exists_subset_Union_closure_subset + theorem shrinking_lemma.partial_refinement.apply_eq + theorem shrinking_lemma.partial_refinement.apply_eq_of_chain + def shrinking_lemma.partial_refinement.chain_Sup + def shrinking_lemma.partial_refinement.chain_Sup_carrier + theorem shrinking_lemma.partial_refinement.closure_subset + theorem shrinking_lemma.partial_refinement.exists_gt + def shrinking_lemma.partial_refinement.find + theorem shrinking_lemma.partial_refinement.find_apply_of_mem + theorem shrinking_lemma.partial_refinement.find_mem + theorem shrinking_lemma.partial_refinement.le_chain_Sup + theorem shrinking_lemma.partial_refinement.mem_find_carrier_iff + theorem shrinking_lemma.partial_refinement.subset_Union + structure shrinking_lemma.partial_refinement Modified src/topology/subset_properties.lean - theorem sigma_compact_space_of_locally_compact_second_countable 2021-03-10 02:23:32 05d3955 feat(number_theory/bernoulli): bernoulli_power_series (#6456) Co-authored-by Ashvni Narayanan ESTIMATED CHANGES Modified src/data/finset/nat_antidiagonal.lean + theorem finset.nat.antidiagonal_congr Modified src/number_theory/bernoulli.lean + theorem bernoulli'_eq_bernoulli + def bernoulli'_power_series - theorem bernoulli'_power_series + theorem bernoulli'_power_series_mul_exp_sub_one + def bernoulli_power_series + theorem bernoulli_power_series_mul_exp_sub_one + theorem bernoulli_spec' 2021-03-10 02:23:31 c962871 feat(linear_algebra): linear_independent_fin_snoc (#6455) A slight variation on the existing `linear_independent_fin_cons`. ESTIMATED CHANGES Modified src/data/equiv/fin.lean +/- theorem fin_add_flip_apply_left Modified src/linear_algebra/linear_independent.lean + theorem linear_independent_fin_snoc + theorem linear_independent_fin_succ' 2021-03-09 21:43:56 b697e52 refactor(ring_theory/power_series/basic): simplify truncation (#6605) I'm trying to reduce how much finsupp leaks through the polynomial API, in this case it works quite nicely. ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem mv_power_series.coeff_trunc_fun 2021-03-09 21:43:55 09a505a feat(ring_theory/witt_vector): use structure instead of irreducible (#6604) ESTIMATED CHANGES Modified src/data/matrix/notation.lean + theorem matrix.cons_fin_one Modified src/ring_theory/witt_vector/basic.lean +/- def witt_vector.map_fun + theorem witt_vector.matrix_vec_empty_coeff Modified src/ring_theory/witt_vector/defs.lean - def witt_vector.coeff +/- theorem witt_vector.coeff_mk - def witt_vector.mk + theorem witt_vector.v2_coeff + structure witt_vector - def witt_vector Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/init_tail.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/teichmuller.lean +/- def witt_vector.teichmuller_fun Modified src/ring_theory/witt_vector/truncated.lean Modified src/ring_theory/witt_vector/verschiebung.lean 2021-03-09 21:43:53 18d4e51 chore(algebra/ring/basic): weaken ring.inverse to only require monoid_with_zero (#6603) Split from #5539 because I actually want to use this, and the PR is large and stalled. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean +/- theorem ring.inverse_non_unit +/- theorem ring.inverse_unit 2021-03-09 21:43:52 fb674e1 feat(data/finset/lattice): map_sup, map_inf (#6601) ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.map_inf + theorem finset.map_sup 2021-03-09 21:43:51 be6753c feat(data/{list,multiset,finset}): map_filter (#6600) This renames `list.filter_of_map` to `list.map_filter`, which unifies the name of the `map_filter` lemmas for lists and finsets, and adds a corresponding lemma for multisets. Unfortunately, the name `list.filter_map` is already used for a definition. ESTIMATED CHANGES Modified src/data/finset/basic.lean Modified src/data/list/basic.lean - theorem list.filter_of_map + theorem list.map_filter Modified src/data/multiset/basic.lean + theorem multiset.map_filter 2021-03-09 21:43:50 366a23f feat(topology/constructions): frontier/interior/closure in `X × Y` (#6594) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.prod_diff_prod Modified src/order/filter/basic.lean + theorem filter.prod_mem_prod_iff Modified src/topology/algebra/ordered.lean + theorem frontier_Ici_subset + theorem frontier_Iic_subset Modified src/topology/basic.lean + theorem frontier_empty + theorem frontier_univ Modified src/topology/constructions.lean + theorem frontier_prod_eq + theorem frontier_prod_univ_eq + theorem frontier_univ_prod_eq + theorem interior_prod_eq + theorem prod_mem_nhds_iff 2021-03-09 21:43:49 9ff7458 feat(algebra/group_power/basic): add abs_add_eq_add_abs_iff (#6593) I've added ``` lemma abs_add_eq_add_abs_iff {α : Type*} [linear_ordered_add_comm_group α] (a b : α) : abs (a + b) = abs a + abs b ↔ (0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0) ``` from `lean-liquid`. For some reasons I am not able to use `wlog hle : a ≤ b using [a b, b a]` at the beginning of the proof, Lean says `unknown identifier 'wlog'` and if I try to import `tactic.wlog` I have tons of errors. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem abs_add_eq_add_abs_iff + theorem abs_add_eq_add_abs_le + theorem abs_gsmul + theorem abs_nsmul 2021-03-09 21:43:47 8e246cb refactor(data/mv_polynomial): cleanup equivs (#6589) This: * Replaces `alg_equiv_congr_left` with `rename_equiv` (to match `rename`) * Removes `ring_equiv_congr_left` (it's now `rename_equiv.to_ring_equiv`) * Renames `alg_equiv_congr_right` to `map_alg_equiv` (to match `map`) and removes the `comap` from the definition * Renames `ring_equiv_congr_right` to `map_equiv` (to match `map`) * Removes `alg_equiv_congr` (it's now `(map_alg_equiv R e).trans $ (rename_equiv e_var).restrict_scalars _`, which while longer is never used anyway) * Removes `ring_equiv_congr` (it's now `(map_equiv R e).trans $ (rename_equiv e_var).to_ring_equiv`, which while longer is never used anyway) * Replaces `punit_ring_equiv` with `punit_alg_equiv` * Removes `comap` from the definition of `sum_alg_equiv` * Promotes `option_equiv_left`, `option_equiv_right`, and `fin_succ_equiv` to `alg_equiv`s This is a follow-up to #6420 ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean - def mv_polynomial.alg_equiv_congr - def mv_polynomial.alg_equiv_congr_left - theorem mv_polynomial.alg_equiv_congr_left_apply - theorem mv_polynomial.alg_equiv_congr_left_symm_apply - def mv_polynomial.alg_equiv_congr_right - theorem mv_polynomial.alg_equiv_congr_right_apply - theorem mv_polynomial.alg_equiv_congr_right_symm_apply + def mv_polynomial.map_alg_equiv + theorem mv_polynomial.map_alg_equiv_apply + theorem mv_polynomial.map_alg_equiv_refl + theorem mv_polynomial.map_alg_equiv_symm + theorem mv_polynomial.map_alg_equiv_trans + def mv_polynomial.map_equiv + theorem mv_polynomial.map_equiv_refl + theorem mv_polynomial.map_equiv_symm + theorem mv_polynomial.map_equiv_trans +/- def mv_polynomial.option_equiv_left +/- def mv_polynomial.option_equiv_right + def mv_polynomial.punit_alg_equiv - def mv_polynomial.punit_ring_equiv - def mv_polynomial.ring_equiv_congr - def mv_polynomial.ring_equiv_congr_left - theorem mv_polynomial.ring_equiv_congr_left_apply - theorem mv_polynomial.ring_equiv_congr_left_symm_apply - def mv_polynomial.ring_equiv_congr_right - theorem mv_polynomial.ring_equiv_congr_right_apply - theorem mv_polynomial.ring_equiv_congr_right_symm_apply Modified src/data/mv_polynomial/funext.lean Modified src/data/mv_polynomial/rename.lean + def mv_polynomial.rename_equiv + theorem mv_polynomial.rename_equiv_refl + theorem mv_polynomial.rename_equiv_symm + theorem mv_polynomial.rename_equiv_trans Modified src/ring_theory/finiteness.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/basic.lean 2021-03-09 21:43:46 5d82d1d feat(algebra,linear_algebra): `{smul,lmul,lsmul}_injective` (#6588) This PR proves a few injectivity results for (scalar) multiplication in the setting of modules and algebras over a ring. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.lmul_injective + theorem algebra.lmul_left_injective + theorem algebra.lmul_right_injective Modified src/algebra/algebra/tower.lean + theorem algebra.lsmul_injective Modified src/algebra/group_with_zero/defs.lean + theorem mul_left_injective' + theorem mul_right_injective' Modified src/algebra/module/basic.lean + theorem smul_injective Modified src/linear_algebra/tensor_product.lean + theorem linear_map.lsmul_injective 2021-03-09 21:43:45 3d75242 chore(data/equiv/local_equiv,topology/local_homeomorph): put `source`/`target` to the left in `∩` (#6583) ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean - theorem local_equiv.image_inter_source_eq' - theorem local_equiv.image_inter_source_eq + theorem local_equiv.image_source_inter_eq' + theorem local_equiv.image_source_inter_eq - theorem local_equiv.symm_image_inter_target_eq' - theorem local_equiv.symm_image_inter_target_eq + theorem local_equiv.symm_image_target_inter_eq' + theorem local_equiv.symm_image_target_inter_eq Modified src/data/set/function.lean + theorem set.eq_on.inter_preimage_eq Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/topology/local_homeomorph.lean +/- theorem local_homeomorph.continuous_at_iff_continuous_at_comp_left - theorem local_homeomorph.image_inter_source_eq' - theorem local_homeomorph.image_inter_source_eq +/- theorem local_homeomorph.image_open_of_open' + theorem local_homeomorph.image_source_inter_eq' + theorem local_homeomorph.image_source_inter_eq + theorem local_homeomorph.map_nhds_within_preimage_eq + theorem local_homeomorph.nhds_within_source_inter + theorem local_homeomorph.nhds_within_target_inter + theorem local_homeomorph.source_inter_preimage_inv_preimage - theorem local_homeomorph.symm_image_inter_target_eq + theorem local_homeomorph.symm_image_target_inter_eq + theorem local_homeomorph.target_inter_inv_preimage_preimage 2021-03-09 21:43:44 78af5b1 feat(topology): closure in a `pi` space (#6575) Also add `can_lift` instances that lift `f : subtype p → β` to `f : α → β` and a version of `filter.mem_infi_iff` that uses a globally defined function. ESTIMATED CHANGES Modified src/data/set/basic.lean Modified src/data/set/function.lean + theorem set.pi_piecewise + theorem set.univ_pi_piecewise Modified src/order/filter/basic.lean +/- theorem filter.inf_principal_eq_bot + theorem filter.infi_principal_finite + theorem filter.mem_infi_iff' Modified src/order/lattice.lean + theorem inf_right_comm + theorem sup_right_comm Modified src/tactic/lift.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/ordered.lean Modified src/topology/constructions.lean + theorem is_closed_set_pi Modified src/topology/continuous_on.lean + theorem closure_pi_set + theorem dense_pi + theorem mem_closure_pi + theorem nhds_within_pi_eq' + theorem nhds_within_pi_eq + theorem nhds_within_pi_eq_bot + theorem nhds_within_pi_ne_bot + theorem nhds_within_pi_univ_eq + theorem nhds_within_pi_univ_eq_bot 2021-03-09 21:43:43 792e492 feat(topology/separation): add API for interaction between discrete topology and subsets (#6570) The final result: Let `s, t ⊆ X` be two subsets of a topological space `X`. If `t ⊆ s` and the topology induced by `X`on `s` is discrete, then also the topology induces on `t` is discrete. The proofs are by Patrick Massot. ESTIMATED CHANGES Modified src/topology/separation.lean + theorem discrete_topology.of_subset + theorem discrete_topology_iff_nhds + theorem discrete_topology_induced + theorem induced_bot + theorem topological_space.subset_trans 2021-03-09 16:22:20 8713c0b feat(measure/pi): prove extensionality for `measure.pi` (#6304) * If two measures in a finitary product are equal on cubes with measurable sides (or with sides in a set generating the corresponding sigma-algebra), then the measures are equal. * Add `sigma_finite` instance for `measure.pi` * Some basic lemmas about sets (more specifically `Union` and `set.pi`) * rename `measurable_set.pi_univ` -> `measurable_set.univ_pi` (`pi univ t` is called `univ_pi` consistently in `set/basic`, but it's not always consistent elsewhere) * rename `[bs]?Union_prod` -> `[bs]?Union_prod_const` ESTIMATED CHANGES Modified src/data/equiv/encodable/basic.lean + theorem encodable.surjective_decode_iget Modified src/data/nat/pairing.lean + theorem nat.surjective_unpair Modified src/data/set/basic.lean + theorem set.eval_preimage' + theorem set.eval_preimage + theorem set.univ_pi_ite Modified src/data/set/lattice.lean + theorem function.surjective.Inter_comp + theorem function.surjective.Union_comp + theorem set.Inter_congr + theorem set.Union_congr +/- theorem set.Union_of_singleton +/- theorem set.Union_prod + theorem set.Union_prod_const +/- theorem set.Union_subset_Union2 +/- theorem set.Union_subset_Union_const + theorem set.Union_univ_pi - theorem set.bUnion_prod + theorem set.bUnion_prod_const +/- theorem set.directed_on_Union +/- theorem set.preimage_Union - theorem set.sUnion_prod + theorem set.sUnion_prod_const + theorem set.univ_pi_eq_Inter Modified src/measure_theory/measurable_space.lean - theorem measurable_set.pi_univ + theorem measurable_set.univ_pi + theorem measurable_set.univ_pi_fintype Modified src/measure_theory/pi.lean + theorem generate_from_eq_pi + theorem generate_from_pi + theorem generate_from_pi_eq + theorem is_countably_spanning.pi + theorem is_pi_system.pi + theorem is_pi_system_pi + def measure_theory.measure.finite_spanning_sets_in.pi + theorem measure_theory.measure.pi_eq + theorem measure_theory.measure.pi_eq_generate_from +/- theorem measure_theory.measure.pi_pi Modified src/measure_theory/prod.lean 2021-03-09 11:19:52 c1a7c19 chore(data/polynomial/basic): add missing is_scalar_tower and smul_comm_class instances (#6592) These already exist for `mv_polynomial`, but the PR that I added them in forgot to add them for `polynomial`. Notably, this provides the instance `is_scalar_tower R (mv_polynomial S₁ R) (polynomial (mv_polynomial S₁ R))`. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean 2021-03-09 11:19:51 fa28a8c feat(data/nat/parity): even/odd.mul_even/odd (#6584) Lemmas pertaining to the multiplication of even and odd natural numbers. ESTIMATED CHANGES Modified src/data/nat/parity.lean + theorem nat.even.mul_left + theorem nat.even.mul_right +/- theorem nat.even_div + theorem nat.odd.mul + theorem nat.odd.of_mul_left + theorem nat.odd.of_mul_right + theorem nat.odd_mul +/- theorem nat.two_not_dvd_two_mul_sub_one 2021-03-09 11:19:50 49afae5 feat(number_theory/bernoulli): bernoulli_poly_eval_one (#6581) ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean - theorem bernoulli_eq_bernoulli' + theorem bernoulli_eq_bernoulli'_of_ne_one +/- theorem sum_bernoulli Modified src/number_theory/bernoulli_polynomials.lean + theorem bernoulli_poly.bernoulli_poly_eval_one 2021-03-09 11:19:49 9889502 feat(linear_algebra/pi): add `submodule.pi` (#6576) ESTIMATED CHANGES Modified src/data/set/basic.lean Modified src/linear_algebra/basic.lean + theorem submodule.coe_subset_coe + theorem submodule.sum_mem_bsupr + theorem submodule.sum_mem_supr Modified src/linear_algebra/pi.lean + theorem submodule.binfi_comap_proj + theorem submodule.coe_pi + theorem submodule.infi_comap_proj + theorem submodule.mem_pi + def submodule.pi + theorem submodule.supr_map_single Modified src/linear_algebra/prod.lean 2021-03-09 11:19:47 a331113 feat(analysis/normed_space/normed_group_hom): bounded homs between normed groups (#6375) From `lean-liquid` ESTIMATED CHANGES Added src/analysis/normed_space/normed_group_hom.lean + def add_monoid_hom.mk_normed_group_hom' + def add_monoid_hom.mk_normed_group_hom + theorem exists_pos_bound_of_bound + theorem normed_group_hom.add_apply + theorem normed_group_hom.antilipschitz_of_bound_by + theorem normed_group_hom.bound + def normed_group_hom.bound_by + theorem normed_group_hom.bound_by_one_of_isometry + theorem normed_group_hom.bounds_bdd_below + theorem normed_group_hom.bounds_nonempty + theorem normed_group_hom.coe_add + def normed_group_hom.coe_fn_add_hom + theorem normed_group_hom.coe_inj + theorem normed_group_hom.coe_inj_iff + theorem normed_group_hom.coe_injective + theorem normed_group_hom.coe_mk + theorem normed_group_hom.coe_mk_normed_group_hom' + theorem normed_group_hom.coe_mk_normed_group_hom + theorem normed_group_hom.coe_neg + theorem normed_group_hom.coe_sub + theorem normed_group_hom.coe_sum + theorem normed_group_hom.coe_to_add_monoid_hom + theorem normed_group_hom.coe_zero + def normed_group_hom.comp_hom + theorem normed_group_hom.comp_zero + theorem normed_group_hom.ext + theorem normed_group_hom.ext_iff + def normed_group_hom.id + def normed_group_hom.incl + theorem normed_group_hom.isometry_comp + theorem normed_group_hom.isometry_id + theorem normed_group_hom.isometry_iff_norm + theorem normed_group_hom.isometry_of_norm + theorem normed_group_hom.ker.incl_comp_lift + def normed_group_hom.ker.lift + def normed_group_hom.ker + theorem normed_group_hom.le_of_op_norm_le + theorem normed_group_hom.le_op_norm + theorem normed_group_hom.le_op_norm_of_le + theorem normed_group_hom.lipschitz + theorem normed_group_hom.lipschitz_of_bound_by + theorem normed_group_hom.map_add + theorem normed_group_hom.map_neg + theorem normed_group_hom.map_sub + theorem normed_group_hom.map_sum + theorem normed_group_hom.map_zero + theorem normed_group_hom.mem_ker + theorem normed_group_hom.mem_range + theorem normed_group_hom.mk_normed_group_hom'_bound_by + theorem normed_group_hom.mk_normed_group_hom_norm_le' + theorem normed_group_hom.mk_normed_group_hom_norm_le + theorem normed_group_hom.mk_to_add_monoid_hom + theorem normed_group_hom.neg_apply + theorem normed_group_hom.norm_comp_le + theorem normed_group_hom.norm_def + theorem normed_group_hom.norm_eq_of_isometry + theorem normed_group_hom.norm_id + theorem normed_group_hom.norm_id_le + theorem normed_group_hom.norm_noninc.bound_by_one + theorem normed_group_hom.norm_noninc.comp + theorem normed_group_hom.norm_noninc.id + def normed_group_hom.norm_noninc + theorem normed_group_hom.norm_noninc_of_isometry + def normed_group_hom.op_norm + theorem normed_group_hom.op_norm_add_le + theorem normed_group_hom.op_norm_le_bound + theorem normed_group_hom.op_norm_le_of_lipschitz + theorem normed_group_hom.op_norm_neg + theorem normed_group_hom.op_norm_nonneg + theorem normed_group_hom.op_norm_zero_iff + def normed_group_hom.range + theorem normed_group_hom.ratio_le_op_norm + theorem normed_group_hom.sub_apply + theorem normed_group_hom.sum_apply + def normed_group_hom.to_add_monoid_hom + theorem normed_group_hom.to_add_monoid_hom_injective + theorem normed_group_hom.to_fun_eq_coe + theorem normed_group_hom.zero_apply + theorem normed_group_hom.zero_comp + structure normed_group_hom Modified src/analysis/normed_space/operator_norm.lean - theorem exists_pos_bound_of_bound 2021-03-09 08:12:31 6dec23b chore(topology/algebra/ordered): use dot notation, golf some proofs (#6595) Use more precise typeclass arguments here and there, golf some proofs, use dot notation. ### Renamed lemmas * `is_lub_of_is_lub_of_tendsto` → `is_lub.is_lub_of_tendsto`; * `is_glb_of_is_glb_of_tendsto` → `is_glb.is_glb_of_tendsto`; * `is_glb_of_is_lub_of_tendsto` → `is_lub.is_glb_of_tendsto`; * `is_lub_of_is_glb_of_tendsto` → `is_glb.is_lub_of_tendsto`; * `mem_closure_of_is_lub` → `is_lub.mem_closure`; * `mem_of_is_lub_of_is_closed` → `is_lub.mem_of_is_closed`, `is_closed.is_lub_mem`; * `mem_closure_of_is_glb` → `is_glb.mem_closure`; * `mem_of_is_glb_of_is_closed` → `is_glb.mem_of_is_closed`, `is_closed.is_glb_mem`; ### New lemmas * `is_lub.inter_Ici_of_mem` * `is_glb.inter_Iic_of_mem` * `frequently.filter_mono` * `is_lub.frequently_mem` * `is_lub.frequently_nhds_mem` * `is_glb.frequently_mem` * `is_glb.frequently_nhds_mem` * `is_lub.mem_upper_bounds_of_tendsto` * `is_glb.mem_lower_bounds_of_tendsto` * `is_lub.mem_lower_bounds_of_tendsto` * `is_glb.mem_upper_bounds_of_tendsto` * `diff_subset_closure_iff` ESTIMATED CHANGES Modified src/order/bounds.lean + theorem is_glb.inter_Iic_of_mem + theorem is_lub.inter_Ici_of_mem Modified src/order/filter/basic.lean + theorem filter.frequently.filter_mono Modified src/topology/algebra/ordered.lean + theorem is_glb.frequently_mem + theorem is_glb.frequently_nhds_mem + theorem is_glb.is_glb_of_tendsto + theorem is_glb.is_lub_of_tendsto + theorem is_glb.mem_closure + theorem is_glb.mem_lower_bounds_of_tendsto + theorem is_glb.mem_of_is_closed + theorem is_glb.mem_upper_bounds_of_tendsto - theorem is_glb_of_is_glb_of_tendsto - theorem is_glb_of_is_lub_of_tendsto + theorem is_lub.frequently_mem + theorem is_lub.frequently_nhds_mem + theorem is_lub.is_glb_of_tendsto + theorem is_lub.is_lub_of_tendsto + theorem is_lub.mem_closure + theorem is_lub.mem_lower_bounds_of_tendsto + theorem is_lub.mem_of_is_closed + theorem is_lub.mem_upper_bounds_of_tendsto - theorem is_lub_of_is_glb_of_tendsto - theorem is_lub_of_is_lub_of_tendsto - theorem mem_closure_of_is_glb - theorem mem_closure_of_is_lub - theorem mem_of_is_glb_of_is_closed - theorem mem_of_is_lub_of_is_closed Modified src/topology/basic.lean + theorem diff_subset_closure_iff Modified src/topology/instances/ennreal.lean +/- theorem ennreal.sub_supr 2021-03-09 02:15:11 32bd00f refactor(topology/bounded_continuous_function): structure extending continuous_map (#6521) Convert `bounded_continuous_function` from a subtype to a structure extending `continuous_map`, and some minor improvements to `@[simp]` lemmas. ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean +/- def bounded_continuous_function.const - theorem bounded_continuous_function.continuous_evalf + def bounded_continuous_function.mk_of_bound + theorem bounded_continuous_function.mk_of_bound_coe +/- def bounded_continuous_function.mk_of_compact + theorem bounded_continuous_function.mk_of_compact_apply +/- def bounded_continuous_function.mk_of_discrete + theorem bounded_continuous_function.mk_of_discrete_apply + structure bounded_continuous_function - def bounded_continuous_function Modified src/topology/continuous_map.lean + theorem continuous_map.comp_apply + theorem continuous_map.comp_coe + theorem continuous_map.const_apply + theorem continuous_map.const_coe + theorem continuous_map.id_apply + theorem continuous_map.id_coe + theorem continuous_map.to_fun_eq_coe Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2021-03-08 19:42:23 3e5d90d feat(algebra/continued_fractions) add determinant formula and approximations for error term (#6461) ESTIMATED CHANGES Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/continued_fractions/computation/approximations.lean + theorem generalized_continued_fraction.abs_sub_convergents_le' + theorem generalized_continued_fraction.abs_sub_convergents_le + theorem generalized_continued_fraction.determinant + theorem generalized_continued_fraction.determinant_aux + theorem generalized_continued_fraction.sub_convergents_eq Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/terminates_iff_rat.lean 2021-03-08 19:42:22 0afdaab feat(linear_algebra): submodules of f.g. free modules are free (#6178) This PR proves the first half of the structure theorem for modules over a PID: if `R` is a principal ideal domain and `M` an `R`-module which is free and finitely generated (expressed by `is_basis R (b : ι → M)`, for a `[fintype ι]`), then all submodules of `M` are also free and finitely generated. This result requires some lemmas about the rank of (free) modules (which in that case is basically the same as `fintype.card ι`). If `M` were a vector space, this could just be expressed as `findim R M`, but it isn't necessarily, so it can't be. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.range_cons Modified src/linear_algebra/basic.lean + theorem submodule.range_map_nonempty Modified src/linear_algebra/basis.lean + theorem is_basis.ext_elem + theorem is_basis.no_zero_smul_divisors + theorem is_basis.repr_eq_zero + theorem is_basis.smul_eq_zero Added src/linear_algebra/free_module.lean + theorem eq_bot_of_generator_maximal_map_eq_zero + theorem eq_bot_of_rank_eq_zero + theorem generator_map_dvd_of_mem + theorem is_basis.card_le_card_of_linear_independent + theorem is_basis.card_le_card_of_linear_independent_aux + theorem ne_zero_of_ortho + theorem not_mem_of_ortho + theorem submodule.exists_is_basis + theorem submodule.exists_is_basis_of_le + theorem submodule.exists_is_basis_of_le_span + def submodule.induction_on_rank + def submodule.induction_on_rank_aux Modified src/linear_algebra/linear_independent.lean + theorem linear_independent.fin_cons' 2021-03-08 17:02:28 cdc222d chore(topology): add a few simple lemmas (#6580) ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean Modified src/topology/continuous_on.lean + theorem continuous_on.image_closure Modified src/topology/separation.lean + theorem compact_closure_of_subset_compact + theorem image_closure_of_compact 2021-03-08 17:02:27 87eec0b feat(linear_algebra/bilinear_form): Existence of orthogonal basis with respect to a bilinear form (#5814) We state and prove the result that there exists an orthogonal basis with respect to a symmetric nondegenerate. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/basic.lean + theorem linear_map.span_singleton_sup_ker_eq_top Modified src/linear_algebra/bilinear_form.lean + def bilin_form.is_Ortho + theorem bilin_form.is_Ortho_def + theorem bilin_form.is_compl_span_singleton_orthogonal + theorem bilin_form.is_ortho_def + theorem bilin_form.is_ortho_zero_left + theorem bilin_form.is_ortho_zero_right + theorem bilin_form.le_orthogonal_orthogonal + theorem bilin_form.linear_independent_of_is_Ortho + theorem bilin_form.mem_orthogonal_iff + theorem bilin_form.ne_zero_of_not_is_ortho_self + def bilin_form.nondegenerate + theorem bilin_form.nondegenerate_iff_ker_eq_bot - theorem bilin_form.ortho_zero + def bilin_form.orthogonal + theorem bilin_form.orthogonal_le + theorem bilin_form.orthogonal_span_singleton_eq_to_lin_ker + def bilin_form.restrict + theorem bilin_form.restrict_orthogonal_span_singleton_nondegenerate + theorem bilin_form.restrict_sym + theorem bilin_form.span_singleton_inf_orthogonal_eq_bot + theorem bilin_form.span_singleton_sup_orthogonal_eq_top + theorem bilin_form.to_dual_def + theorem matrix.to_bilin'_apply' Modified src/linear_algebra/dual.lean + theorem subspace.dual_findim_eq Modified src/linear_algebra/finite_dimensional.lean + theorem linear_map.linear_equiv_of_ker_eq_bot_apply + theorem submodule.findim_add_eq_of_is_compl Modified src/linear_algebra/quadratic_form.lean + theorem bilin_form.exists_bilin_form_self_neq_zero + theorem bilin_form.exists_orthogonal_basis' + theorem bilin_form.exists_orthogonal_basis + theorem quadratic_form.exists_quadratic_form_neq_zero 2021-03-08 14:38:24 6791ed9 chore(algebra/module/linear_map): add linear_map.to_distrib_mul_action_hom (#6573) My aim in adding this is primarily to give the reader a hint that `distrib_mul_action_hom` exists. The only difference between the two is that `linear_map` can infer `map_zero'` from its typeclass arguments. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean + def linear_map.to_distrib_mul_action_hom 2021-03-08 14:38:23 13d86df chore(algebra/monoid_algebra): provide finer-grained levels of structure for less-structured `G`. (#6572) This provides `distrib` and `mul_zero_class` for when `G` is just `has_mul`, and `semigroup` for when `G` is just `semigroup`. It also weakens the typeclass assumptions on some correspondings lemmas. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean +/- theorem add_monoid_algebra.lift_nc_smul +/- theorem add_monoid_algebra.mul_apply +/- theorem add_monoid_algebra.mul_apply_antidiagonal +/- theorem add_monoid_algebra.mul_single_apply_aux +/- theorem add_monoid_algebra.mul_single_zero_apply +/- def add_monoid_algebra.of +/- theorem add_monoid_algebra.of_apply +/- theorem add_monoid_algebra.of_injective +/- theorem add_monoid_algebra.single_mul_apply_aux +/- theorem add_monoid_algebra.single_mul_single +/- theorem add_monoid_algebra.single_zero_mul_apply +/- theorem add_monoid_algebra.support_mul +/- theorem monoid_algebra.lift_nc_smul +/- theorem monoid_algebra.map_domain_mul +/- theorem monoid_algebra.mul_apply +/- theorem monoid_algebra.mul_apply_antidiagonal +/- theorem monoid_algebra.mul_single_apply_aux +/- theorem monoid_algebra.mul_single_one_apply +/- theorem monoid_algebra.of_apply +/- theorem monoid_algebra.of_injective +/- theorem monoid_algebra.single_mul_apply_aux +/- theorem monoid_algebra.single_mul_single +/- theorem monoid_algebra.single_one_mul_apply +/- theorem monoid_algebra.single_pow +/- theorem monoid_algebra.support_mul 2021-03-08 12:32:37 7058fa6 feat(linear_algebra/{bilinear,quadratic}_form): inherit scalar actions from algebras (#6586) For example, this means a quadratic form over the quaternions inherits an `ℝ` action. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean +/- theorem bilin_form.smul_apply Modified src/linear_algebra/quadratic_form.lean +/- theorem quadratic_form.coe_fn_smul +/- theorem quadratic_form.smul_apply 2021-03-08 12:32:35 5d0a40f feat(algebra/algebra/{basic,tower}): add alg_equiv.comap and alg_equiv.restrict_scalars (#6548) This also renames `is_scalar_tower.restrict_base` to `alg_hom.restrict_scalars`, to enable dot notation and match `linear_map.restrict_scalars`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.comap +/- def alg_hom.comap Modified src/algebra/algebra/tower.lean + theorem alg_equiv.coe_restrict_scalars' + theorem alg_equiv.coe_restrict_scalars + def alg_equiv.restrict_scalars + theorem alg_equiv.restrict_scalars_apply + theorem alg_hom.coe_restrict_scalars' + theorem alg_hom.coe_restrict_scalars + def alg_hom.restrict_scalars + theorem alg_hom.restrict_scalars_apply - theorem is_scalar_tower.coe_restrict_base' - theorem is_scalar_tower.coe_restrict_base - def is_scalar_tower.restrict_base - theorem is_scalar_tower.restrict_base_apply Modified src/field_theory/normal.lean Modified src/ring_theory/algebra_tower.lean 2021-03-08 11:35:06 b6ed62c feat(algebraic_topology): simplicial objects and simplicial types (#6195) ESTIMATED CHANGES Added src/algebraic_topology/simplicial_object.lean + def category_theory.simplicial_object.eq_to_iso + theorem category_theory.simplicial_object.eq_to_iso_refl + def category_theory.simplicial_object.δ + theorem category_theory.simplicial_object.δ_comp_δ + theorem category_theory.simplicial_object.δ_comp_δ_self + theorem category_theory.simplicial_object.δ_comp_σ_of_gt + theorem category_theory.simplicial_object.δ_comp_σ_of_le + theorem category_theory.simplicial_object.δ_comp_σ_self + theorem category_theory.simplicial_object.δ_comp_σ_succ + def category_theory.simplicial_object.σ + theorem category_theory.simplicial_object.σ_comp_σ + def category_theory.simplicial_object Added src/algebraic_topology/simplicial_set.lean + def sSet.as_preorder_hom + def sSet.boundary + def sSet.boundary_inclusion + def sSet.horn + def sSet.horn_inclusion + def sSet.standard_simplex + def sSet 2021-03-08 10:21:12 f3dbe9f feat(bounded_continuous_function): coe_sum (#6522) ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean + def bounded_continuous_function.coe_fn_add_hom + theorem bounded_continuous_function.coe_sum +/- theorem bounded_continuous_function.coe_zero + theorem bounded_continuous_function.sum_apply 2021-03-08 02:11:14 98c6bbc feat(data/set/function): three lemmas about maps_to (#6518) ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.maps_image_to + theorem set.maps_range_to + theorem set.maps_univ_to 2021-03-08 01:18:53 5b61f07 chore(scripts): update nolints.txt (#6582) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-07 22:03:50 2d3c522 feat(order/ideal): added proper ideal typeclass and lemmas to order_top (#6566) Defined `proper` and proved basic lemmas about proper ideals. Also turned `order_top` into a section. ESTIMATED CHANGES Modified src/order/ideal.lean + theorem order.ideal.proper_of_ne_top + theorem order.ideal.proper_of_not_mem + theorem order.ideal.top_carrier + theorem order.ideal.top_of_mem_top 2021-03-07 21:14:26 79be90a feat(algebra/regular): add lemmas about regularity of non-zero elements (#6579) More API, to deal with cases in which a regular element is non-zero. ESTIMATED CHANGES Modified src/algebra/regular.lean + theorem is_left_regular.ne_zero + theorem is_regular.ne_zero + theorem is_regular_iff_ne_zero + theorem is_right_regular.ne_zero 2021-03-07 17:19:18 b25994d feat(number_theory/bernoulli): definition and properties of Bernoulli polynomials (#6309) The Bernoulli polynomials and its properties are defined. ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean Modified src/data/finset/basic.lean + theorem finset.mem_range_le + theorem finset.mem_range_sub_ne_zero Added src/number_theory/bernoulli_polynomials.lean + theorem bernoulli_poly.bernoulli_poly_eval_zero + theorem bernoulli_poly.bernoulli_poly_zero + theorem bernoulli_poly.exp_bernoulli_poly' + theorem bernoulli_poly.sum_bernoulli_poly + def bernoulli_poly + theorem bernoulli_poly_def 2021-03-07 14:37:15 d9370e0 fead(data/support): add `support_smul` (#6569) * add `smul_ne_zero`; * rename `support_smul_subset` to `support_smul_subset_right`; * add `support_smul_subset_left` and `support_smul`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem smul_ne_zero Modified src/data/support.lean + theorem function.support_smul - theorem function.support_smul_subset + theorem function.support_smul_subset_left + theorem function.support_smul_subset_right Modified src/ring_theory/hahn_series.lean 2021-03-07 10:18:36 02251b1 refactor(geometry/manifold): drop some unused arguments (#6545) API changes: * add lemmas about `map (ext_chart_at I x) (𝓝[s] x')`; * prove `times_cont_mdiff_within_at.comp` directly without using other charts; the new proof does not need a `smooth_manifold_with_corners` instance; * add aliases `times_cont_mdiff.times_cont_diff` etc; * `times_cont_mdiff_map` no longer needs a `smooth_manifold_with_corners` instance; * `has_smooth_mul` no longer extends `smooth_manifold_with_corners` and no longer takes `has_continuous_mul` as an argument; * `has_smooth_mul_core` is gone in favor of `has_continuous_mul_of_smooth`; * `smooth_monoid_morphism` now works with any model space (needed, e.g., to define `smooth_monoid_morphism.prod`); * `lie_group_morphism` is gone: we use `M →* N` both for monoids and groups, no reason to have two structures in this case; * `lie_group` no longer extends `smooth_manifold_with_corners` and no longer takes `topological_group` as an argument; * `lie_group_core` is gone in favor of `topological_group_of_lie_group`; * the `I : model_with_corners 𝕜 E H` argument of `smooth_mul` and `smooth_inv` is now explicit. ESTIMATED CHANGES Modified src/geometry/manifold/algebra/lie_group.lean - structure lie_add_group_core - structure lie_add_group_morphism - structure lie_group_core - structure lie_group_morphism - theorem smooth_pow + theorem topological_group_of_lie_group Modified src/geometry/manifold/algebra/monoid.lean + theorem has_continuous_mul_of_smooth - structure has_smooth_add_core - structure has_smooth_mul_core +/- structure smooth_add_monoid_morphism +/- structure smooth_monoid_morphism + theorem smooth_pow Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/geometry/manifold/algebra/structures.lean + theorem topological_ring_of_smooth + theorem topological_semiring_of_smooth Modified src/geometry/manifold/diffeomorph.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem ext_chart_at_map_nhds_within' + theorem ext_chart_at_map_nhds_within + theorem ext_chart_at_map_nhds_within_eq_image' + theorem ext_chart_at_map_nhds_within_eq_image + theorem ext_chart_at_source_mem_nhds_within' + theorem ext_chart_at_source_mem_nhds_within + theorem ext_chart_at_symm_map_nhds_within' + theorem ext_chart_at_symm_map_nhds_within + theorem ext_chart_at_symm_map_nhds_within_range' + theorem ext_chart_at_symm_map_nhds_within_range + theorem ext_chart_at_target_mem_nhds_within' + theorem nhds_within_ext_chart_target_eq' Modified src/geometry/manifold/times_cont_mdiff.lean - theorem times_cont_diff.times_cont_mdiff - theorem times_cont_diff_at.times_cont_mdiff_at - theorem times_cont_diff_on.times_cont_mdiff_on - theorem times_cont_diff_within_at.times_cont_mdiff_within_at + theorem times_cont_mdiff_within_at_iff'' Modified src/geometry/manifold/times_cont_mdiff_map.lean 2021-03-07 04:25:18 ebe2c61 feat(analysis/normed_space/multilinear): a few more bundled (bi)linear maps (#6546) ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean + def continuous_linear_map.comp_continuous_multilinear_mapL + def continuous_linear_map.flip_multilinear +/- theorem continuous_linear_map.norm_comp_continuous_multilinear_map_le + def continuous_multilinear_map.comp_continuous_linear_mapL + theorem continuous_multilinear_map.comp_continuous_linear_mapL_apply + theorem continuous_multilinear_map.norm_comp_continuous_linear_le + theorem continuous_multilinear_map.norm_comp_continuous_linear_mapL_le +/- theorem continuous_multilinear_map.norm_mk_pi_algebra_fin + theorem continuous_multilinear_map.op_norm_prod + def continuous_multilinear_map.prodL 2021-03-07 03:26:19 9f17db5 feat(analysis/special_functions/integrals): mul/div by a const (#6357) This PR, together with #6216, makes the following possible: ``` import analysis.special_functions.integrals open real interval_integral open_locale real example : ∫ x in 0..π, 2 * sin x = 4 := by norm_num example : ∫ x:ℝ in 4..5, x * 2 = 9 := by norm_num example : ∫ x in 0..π/2, cos x / 2 = 1 / 2 := by simp ``` ESTIMATED CHANGES Modified src/analysis/special_functions/integrals.lean + theorem interval_integral.integral_const_mul + theorem interval_integral.integral_div + theorem interval_integral.integral_mul_const 2021-03-07 01:15:46 07fc982 chore(scripts): update nolints.txt (#6567) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-06 21:16:19 df1e6f9 refactor(data/{finset,multiset}): move inductions proofs on sum/prod from finset to multiset, add more induction lemmas (#6561) The starting point is `finset.le_sum_of_subadditive`, which is extended in several ways: * It is written in multiplicative form, and a `[to_additive]` attribute generates the additive version, * It is proven for multiset, which is then used for the proof of the finset case. * For multiset, some lemmas are written for foldr/foldl (and prod is a foldr). * Versions of these lemmas specialized to nonempty sets are provided. These don't need the initial hypothesis `f 1 = 1`/`f 0 = 0`. * The new `..._on_pred` lemmas like `finset.le_sum_of_subadditive_on_pred` apply to functions that are only sub-additive for arguments that verify some property. I included an application of this with `snorm_sum_le`, which uses that the Lp seminorm is subadditive on a.e.-measurable functions. Those `on_pred` lemmas could be avoided by constructing the submonoid given by the predicate, then using the standard subadditive result, but I find convenient to be able to use them directly. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_induction_nonempty Modified src/algebra/big_operators/order.lean + theorem finset.le_prod_nonempty_of_submultiplicative + theorem finset.le_prod_nonempty_of_submultiplicative_on_pred + theorem finset.le_prod_of_submultiplicative + theorem finset.le_prod_of_submultiplicative_on_pred - theorem finset.le_sum_of_subadditive Modified src/data/multiset/basic.lean + theorem multiset.foldl_induction' + theorem multiset.foldl_induction + theorem multiset.foldr_induction' + theorem multiset.foldr_induction + theorem multiset.le_prod_nonempty_of_submultiplicative + theorem multiset.le_prod_nonempty_of_submultiplicative_on_pred + theorem multiset.le_prod_of_submultiplicative + theorem multiset.le_prod_of_submultiplicative_on_pred - theorem multiset.le_sum_of_subadditive + theorem multiset.prod_induction + theorem multiset.prod_induction_nonempty Modified src/measure_theory/borel_space.lean Modified src/measure_theory/lp_space.lean + theorem measure_theory.snorm'_sum_le + theorem measure_theory.snorm_sum_le 2021-03-06 21:16:18 b280b00 feat(data/set/basic): add `set.set_ite` (#6557) I'm going to use it as `source` and `target` in `local_equiv.piecewise` and `local_homeomorph.piecewise`. There are many non-defeq ways to define this set and I think that it's better to have a name than to ensure that we always use the same formula. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.diff_univ + theorem set.inter_subset_ite + theorem set.ite_compl + theorem set.ite_diff_self + theorem set.ite_empty + theorem set.ite_inter + theorem set.ite_inter_compl_self + theorem set.ite_inter_inter + theorem set.ite_inter_self + theorem set.ite_mono + theorem set.ite_same + theorem set.ite_subset_union + theorem set.ite_univ Modified src/topology/continuous_on.lean + theorem is_open.ite' + theorem is_open.ite - theorem is_open_inter_union_inter_compl' - theorem is_open_inter_union_inter_compl 2021-03-06 19:15:21 ac8a119 chore(geometry/manifold): use `namespace`, rename `image` to `image_eq` (#6517) * use `namespace` command in `geometry/manifold/smooth_manifold_with_corners`; * rename `model_with_corners.image` to `model_with_corners.image_eq` to match `source_eq` etc; * replace `homeomorph.coe_eq_to_equiv` with `@[simp] lemma coe_to_equiv`; * add `continuous_linear_map.symm_image_image` and `continuous_linear_map.image_symm_image`; * add `unique_diff_on.image`, `continuous_linear_equiv.unique_diff_on_image_iff`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem continuous_linear_equiv.unique_diff_on_image + theorem continuous_linear_equiv.unique_diff_on_image_iff +/- theorem continuous_linear_equiv.unique_diff_on_preimage_iff + theorem unique_diff_on.image Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- theorem model_with_corners.closed_range +/- theorem model_with_corners.continuous_symm - theorem model_with_corners.image +/- theorem model_with_corners.image_mem_nhds_within - theorem model_with_corners.left_inv - theorem model_with_corners.locally_compact +/- theorem model_with_corners.map_nhds_eq +/- theorem model_with_corners.mk_coe - theorem model_with_corners.mk_coe_symm + theorem model_with_corners.mk_symm - theorem model_with_corners.right_inv +/- theorem model_with_corners.symm_comp_self +/- theorem model_with_corners.symm_map_nhds_within_range +/- theorem model_with_corners.target_eq +/- theorem model_with_corners.to_local_equiv_coe +/- theorem model_with_corners.to_local_equiv_coe_symm - theorem model_with_corners.unique_diff +/- theorem model_with_corners.unique_diff_at_image +/- theorem model_with_corners.unique_diff_preimage +/- theorem model_with_corners.unique_diff_preimage_source Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.image_symm_image + theorem continuous_linear_equiv.symm_image_image Modified src/topology/homeomorph.lean - theorem homeomorph.coe_eq_to_equiv + theorem homeomorph.coe_to_equiv 2021-03-06 17:06:17 16ef291 feat(order/filter/*, topology/subset_properties): define "coproduct" of two filters (#6372) Define the "coproduct" of two filters (unclear if this is really a categorical coproduct) as ```lean protected def coprod (f : filter α) (g : filter β) : filter (α × β) := f.comap prod.fst ⊔ g.comap prod.snd ``` and prove the three lemmas which motivated this construction ([Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Filter.20golf)): coproduct of cofinite filters is the cofinite filter, coproduct of cocompact filters is the cocompact filter, and ```lean (tendsto f a c) → (tendsto g b d) → (tendsto (prod.map f g) (a.coprod b) (c.coprod d)) ``` Co-authored by: Kevin Buzzard Co-authored by: Patrick Massot ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.coprod_mono + theorem filter.map_const_principal_coprod_map_id_principal + theorem filter.map_prod_map_const_id_principal_coprod_principal + theorem filter.map_prod_map_coprod_le + theorem filter.mem_coprod_iff + theorem filter.principal_coprod_principal + theorem filter.tendsto.prod_map_coprod Modified src/order/filter/cofinite.lean + theorem filter.coprod_cofinite Modified src/topology/subset_properties.lean + theorem filter.coprod_cocompact 2021-03-06 11:31:49 0fa0d61 feat(topology/paracompact): define paracompact spaces (#6395) Fixes #6391 ESTIMATED CHANGES Modified docs/references.bib Modified roadmap/topology/paracompact.lean - theorem normal_of_paracompact_t2 - theorem paracompact_of_compact - theorem paracompact_of_metric - theorem paracompact_space.precise_refinement + theorem roadmap.normal_of_paracompact_t2 + theorem roadmap.paracompact_of_compact + theorem roadmap.paracompact_of_metric + theorem roadmap.paracompact_space.precise_refinement Modified src/data/real/ennreal.lean + theorem ennreal.exists_inv_two_pow_lt + theorem ennreal.inv_le_one + theorem ennreal.one_le_inv + theorem ennreal.pow_le_pow_of_le_one Modified src/order/filter/bases.lean Modified src/topology/basic.lean + theorem closure_inter_open' + theorem closure_nonempty_iff - theorem is_closed_Union_of_locally_finite + theorem locally_finite.closure + theorem locally_finite.closure_Union + theorem locally_finite.comp_injective + theorem locally_finite.is_closed_Union + theorem locally_finite.subset - theorem locally_finite_subset - theorem set.nonempty.closure Modified src/topology/constructions.lean Modified src/topology/metric_space/emetric_space.lean + theorem uniformity_basis_edist_inv_two_pow Added src/topology/paracompact.lean + theorem normal_of_paracompact_t2 + theorem precise_refinement + theorem precise_refinement_set + theorem refinement_of_locally_compact_sigma_compact_of_nhds_basis Modified src/topology/separation.lean + theorem compact_exhaustion.is_closed Modified src/topology/subset_properties.lean + theorem is_compact.elim_nhds_subcover' + theorem is_compact.elim_nhds_subcover 2021-03-06 07:42:55 126cebc feat(data/real/nnreal): ℝ is an ℝ≥0-algebra (#6560) Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/rings.20from.20subtype ESTIMATED CHANGES Modified src/data/real/nnreal.lean 2021-03-06 07:42:54 a05b35c doc(*): wrap raw URLs containing parentheses with angle brackets (#6554) Raw URLs with parentheses in them are tricky for `doc-gen` to parse, so this commit wraps them in angle brackets. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean Modified src/geometry/euclidean/monge_point.lean Modified src/measure_theory/content.lean Modified src/order/ideal.lean Modified src/order/pfilter.lean 2021-03-06 07:42:53 3e5643e feat(category_theory/opposites): use simps everywhere (#6553) This is possible after leanprover-community/lean#538 ESTIMATED CHANGES Modified src/category_theory/opposites.lean - theorem category_theory.iso.op_hom - theorem category_theory.iso.op_inv - theorem category_theory.nat_iso.op_hom - theorem category_theory.nat_iso.op_inv - theorem category_theory.nat_iso.remove_op_hom - theorem category_theory.nat_iso.remove_op_inv - theorem category_theory.nat_iso.unop_hom - theorem category_theory.nat_iso.unop_inv - theorem category_theory.nat_trans.left_op_app - theorem category_theory.nat_trans.remove_left_op_app +/- def category_theory.op_equiv - theorem category_theory.op_equiv_apply - theorem category_theory.op_equiv_symm_apply 2021-03-06 07:42:52 5962c76 feat(algebra/ring/boolean_ring): Boolean rings (#6464) `boolean_ring.to_boolean_algebra` is the Boolean algebra structure on a Boolean ring. ESTIMATED CHANGES Added src/algebra/ring/boolean_ring.lean + theorem add_eq_zero + theorem add_self + def boolean_ring.has_inf + def boolean_ring.has_sup + theorem boolean_ring.inf_assoc + theorem boolean_ring.inf_comm + theorem boolean_ring.inf_sup_self + theorem boolean_ring.le_sup_inf + theorem boolean_ring.le_sup_inf_aux + theorem boolean_ring.sup_assoc + theorem boolean_ring.sup_comm + theorem boolean_ring.sup_inf_self + def boolean_ring.to_boolean_algebra + theorem mul_add_mul + theorem mul_self + theorem neg_eq + theorem sub_eq_add 2021-03-06 02:14:45 32547fc chore(scripts): update nolints.txt (#6558) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-06 01:08:46 4428243 chore(polynomial/chebyshev): changes names of chebyshev₁ to chebyshev.T and chebyshev₂ to chebyshev.U (#6519) Still have to write here what was changed (will be a long list). More or less this is just search and replace `chebyshev₁` for `chebyshev.T` and `chebyshev₂` for `chebyshev.U`. * `polynomial.chebyshev₁` is now `polynomial.chebyshev.T` * `polynomial.chebyshev₁_zero` is now `polynomial.chebyshev.T_zero` * `polynomial.chebyshev₁_one` is now `polynomial.chebyshev.T_one` * `polynomial.chebyshev₁_two` is now `polynomial.chebyshev.T_two` * `polynomial.chebyshev₁_add_two` is now `polynomial.chebyshev.T_add_two` * `polynomial.chebyshev₁_of_two_le` is now `polynomial.chebyshev.T_of_two_le` * `polynomial.map_chebyshev₁` is now `polynomial.chebyshev.map_T` * `polynomial.chebyshev₂` is now `polynomial.chebyshev.U` * `polynomial.chebyshev₂_zero` is now `polynomial.chebyshev.U_zero` * `polynomial.chebyshev₂_one` is now `polynomial.chebyshev.U_one` * `polynomial.chebyshev₂_two` is now `polynomial.chebyshev.U_two` * `polynomial.chebyshev₂_add_two` is now `polynomial.chebyshev.U_add_two` * `polynomial.chebyshev₂_of_two_le` is now `polynomial.chebyshev.U_of_two_le` * `polynomial.chebyshev₂_eq_X_mul_chebyshev₂_add_chebyshev₁` is now `polynomial.chebyshev.U_eq_X_mul_U_add_T` * `polynomial.chebyshev₁_eq_chebyshev₂_sub_X_mul_chebyshev₂` is now `polynomial.chebyshev.T_eq_U_sub_X_mul_U` * `polynomial.chebyshev₁_eq_X_mul_chebyshev₁_sub_pol_chebyshev₂` is now `polynomial.chebyshev.T_eq_X_mul_T_sub_pol_U` * `polynomial.one_sub_X_pow_two_mul_chebyshev₂_eq_pol_in_chebyshev₁` is now `polynomial.chebyshev.one_sub_X_pow_two_mul_U_eq_pol_in_T` * `polynomial.map_chebyshev₂` is now `polynomial.chebyshev.map_U` * `polynomial.chebyshev₁_derivative_eq_chebyshev₂` is now `polynomial.chebyshev.T_derivative_eq_U` * `polynomial.one_sub_X_pow_two_mul_derivative_chebyshev₁_eq_poly_in_chebyshev₁` is now `polynomial.chebyshev.one_sub_X_pow_two_mul_derivative_T_eq_poly_in_T` * `polynomial.add_one_mul_chebyshev₁_eq_poly_in_chebyshev₂` is now `polynomial.chebyshev.add_one_mul_T_eq_poly_in_U` * `polynomial.mul_chebyshev₁` is now `polynomial.chebyshev.mul_T` * `polynomial.chebyshev₁_mul` is now `polynomial.chebyshev.T_mul` * `polynomial.dickson_one_one_eq_chebyshev₁` is now `polynomial.dickson_one_one_eq_chebyshev_T` * `polynomial.chebyshev₁_eq_dickson_one_one` is now `polynomial.chebyshev_T_eq_dickson_one_one` * `chebyshev₁_complex_cos` is now `polynomial.chebyshev.T_complex_cos` * `cos_nat_mul` is now `polynomial.chebyshev.cos_nat_mul` * `chebyshev₂_complex_cos` is now `polynomial.chebyshev.U_complex_cos` * `sin_nat_succ_mul` is now `polynomial.chebyshev.sin_nat_succ_mul` ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean - theorem chebyshev₁_complex_cos - theorem chebyshev₂_complex_cos - theorem cos_nat_mul + theorem polynomial.chebyshev.T_complex_cos + theorem polynomial.chebyshev.U_complex_cos + theorem polynomial.chebyshev.cos_nat_mul + theorem polynomial.chebyshev.sin_nat_succ_mul - theorem sin_nat_succ_mul Modified src/ring_theory/polynomial/chebyshev.lean - theorem polynomial.add_one_mul_chebyshev₁_eq_poly_in_chebyshev₂ + theorem polynomial.chebyshev.T_add_two + theorem polynomial.chebyshev.T_derivative_eq_U + theorem polynomial.chebyshev.T_eq_U_sub_X_mul_U + theorem polynomial.chebyshev.T_eq_X_mul_T_sub_pol_U + theorem polynomial.chebyshev.T_mul + theorem polynomial.chebyshev.T_of_two_le + theorem polynomial.chebyshev.T_one + theorem polynomial.chebyshev.T_two + theorem polynomial.chebyshev.T_zero + theorem polynomial.chebyshev.U_add_two + theorem polynomial.chebyshev.U_eq_X_mul_U_add_T + theorem polynomial.chebyshev.U_of_two_le + theorem polynomial.chebyshev.U_one + theorem polynomial.chebyshev.U_two + theorem polynomial.chebyshev.U_zero + theorem polynomial.chebyshev.add_one_mul_T_eq_poly_in_U + theorem polynomial.chebyshev.map_T + theorem polynomial.chebyshev.map_U + theorem polynomial.chebyshev.mul_T + theorem polynomial.chebyshev.one_sub_X_pow_two_mul_U_eq_pol_in_T + theorem polynomial.chebyshev.one_sub_X_pow_two_mul_derivative_T_eq_poly_in_T - theorem polynomial.chebyshev₁_add_two - theorem polynomial.chebyshev₁_derivative_eq_chebyshev₂ - theorem polynomial.chebyshev₁_eq_X_mul_chebyshev₁_sub_pol_chebyshev₂ - theorem polynomial.chebyshev₁_eq_chebyshev₂_sub_X_mul_chebyshev₂ - theorem polynomial.chebyshev₁_mul - theorem polynomial.chebyshev₁_of_two_le - theorem polynomial.chebyshev₁_one - theorem polynomial.chebyshev₁_two - theorem polynomial.chebyshev₁_zero - theorem polynomial.chebyshev₂_add_two - theorem polynomial.chebyshev₂_eq_X_mul_chebyshev₂_add_chebyshev₁ - theorem polynomial.chebyshev₂_of_two_le - theorem polynomial.chebyshev₂_one - theorem polynomial.chebyshev₂_two - theorem polynomial.chebyshev₂_zero - theorem polynomial.map_chebyshev₁ - theorem polynomial.map_chebyshev₂ - theorem polynomial.mul_chebyshev₁ - theorem polynomial.one_sub_X_pow_two_mul_chebyshev₂_eq_pol_in_chebyshev₁ - theorem polynomial.one_sub_X_pow_two_mul_derivative_chebyshev₁_eq_poly_in_chebyshev₁ Modified src/ring_theory/polynomial/dickson.lean + theorem polynomial.chebyshev_T_eq_dickson_one_one - theorem polynomial.chebyshev₁_eq_dickson_one_one + theorem polynomial.dickson_one_one_eq_chebyshev_T - theorem polynomial.dickson_one_one_eq_chebyshev₁ 2021-03-05 21:45:36 4bc6707 feat(topology/local_homeomorph): preimage of `closure` and `frontier` (#6547) ESTIMATED CHANGES Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.image_inter_source_eq' + theorem local_homeomorph.map_nhds_within_eq + theorem local_homeomorph.preimage_closure + theorem local_homeomorph.preimage_frontier 2021-03-05 21:45:35 cbcbe24 feat(algebra/ordered_monoid): linear_ordered_add_comm_monoid(_with_top) (#6520) Separates out classes for `linear_ordered_(add_)comm_monoid` Creates `linear_ordered_add_comm_monoid_with_top`, an additive and order-reversed version of `linear_ordered_comm_monoid_with_zero`. Puts an instance of `linear_ordered_add_comm_monoid_with_top` on `with_top` of any `linear_ordered_add_comm_monoid` and also on `enat` ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/module/submodule.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean + theorem add_top + def function.injective.linear_ordered_comm_monoid + theorem top_add Modified src/data/nat/enat.lean Modified src/group_theory/submonoid/operations.lean 2021-03-05 20:52:35 626cb42 feat(data/polynomial/mirror): new file (#6426) This files defines an alternate version of `polynomial.reverse`. This version is often nicer to work with since it preserves `nat_degree` and `nat_trailing_degree` and is always an involution. (this PR is part of the irreducibility saga) ESTIMATED CHANGES Added src/data/polynomial/mirror.lean + theorem polynomial.coeff_mirror + theorem polynomial.irreducible_of_mirror + theorem polynomial.mirror_C + theorem polynomial.mirror_X + theorem polynomial.mirror_eq_zero + theorem polynomial.mirror_eval_one + theorem polynomial.mirror_leading_coeff + theorem polynomial.mirror_mirror + theorem polynomial.mirror_monomial + theorem polynomial.mirror_mul_of_domain + theorem polynomial.mirror_nat_degree + theorem polynomial.mirror_nat_trailing_degree + theorem polynomial.mirror_neg + theorem polynomial.mirror_smul + theorem polynomial.mirror_trailing_coeff + theorem polynomial.mirror_zero 2021-03-05 16:16:24 913950e feat(group_theory/subgroup): add monoid_hom.restrict (#6537) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + def monoid_hom.restrict + theorem monoid_hom.restrict_apply 2021-03-05 15:05:25 d40487b feat(measure_theory/[set_integral, interval_integral]): mono and nonneg lemmas (#6292) See https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/.60integral_restrict.60/near/226274072 ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_mono Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_mono + theorem interval_integral.integral_mono_ae + theorem interval_integral.integral_mono_ae_restrict + theorem interval_integral.integral_mono_on + theorem interval_integral.integral_nonneg + theorem interval_integral.integral_nonneg_of_ae + theorem interval_integral.integral_nonneg_of_ae_restrict Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_restrict_of_ae + theorem measure_theory.ae_restrict_of_ae_restrict_of_subset Modified src/measure_theory/set_integral.lean + theorem measure_theory.set_integral_mono + theorem measure_theory.set_integral_mono_ae + theorem measure_theory.set_integral_mono_ae_restrict + theorem measure_theory.set_integral_mono_on + theorem measure_theory.set_integral_nonneg + theorem measure_theory.set_integral_nonneg_of_ae + theorem measure_theory.set_integral_nonneg_of_ae_restrict Modified test/monotonicity.lean 2021-03-05 13:04:47 97d13d7 feat(algebra/lie/subalgebra): define the Lie subalgebra generated by a subset (#6549) The work here is a lightly-edited copy-paste of the corresponding results for Lie submodules ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.coe_lie_span_submodule_eq_iff + def lie_subalgebra.lie_span + theorem lie_subalgebra.lie_span_eq + theorem lie_subalgebra.lie_span_le + theorem lie_subalgebra.lie_span_mono + theorem lie_subalgebra.mem_lie_span + theorem lie_subalgebra.submodule_span_le_lie_span + theorem lie_subalgebra.subset_lie_span + theorem submodule.exists_lie_subalgebra_coe_eq_iff 2021-03-05 11:27:59 d90448c chore(linear_algebra/*): changes to finsupp_vectorspaces and move module doc dual (#6516) This PR does the following: - move the module doc of `linear_algebra.dual` so that it is recognised by the linter. - add `ker_eq_bot_iff_range_eq_top_of_findim_eq_findim` to `linear_algebra.finite_dimensional`, this replaces `injective_of_surjective` in `linear_algebra.finsupp_vectorspaces` - remove `eq_bot_iff_dim_eq_zero` from `linear_algebra.finsupp_vectorspaces`, this already exists as `dim_eq_zero` in `linear_algebra.finite_dimensional` - changed `cardinal_mk_eq_cardinal_mk_field_pow_dim` and `cardinal_lt_omega_of_dim_lt_omega` to assume `finite_dimensional K V` instead of `dim < omega`. - renamed `cardinal_lt_omega_of_dim_lt_omega` to `cardinal_lt_omega_of_finite_dimensional` since the assumption changed. - provided a module doc for `linear_algebra.finsupp_vectorspaces` which should remove `linear_algebra.*` from the style exceptions file. This file should probably be looked at again by someone more experienced in the linear_algebra part of the library. It seems to me that most of the statements in this file in fact would better fit in other files. ESTIMATED CHANGES Modified src/field_theory/finite/polynomial.lean + theorem mv_polynomial.findim_R Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.findim_eq_of_dim_eq + theorem linear_map.ker_eq_bot_iff_range_eq_top_of_findim_eq_findim Modified src/linear_algebra/finsupp_vector_space.lean - theorem cardinal_lt_omega_of_dim_lt_omega + theorem cardinal_lt_omega_of_finite_dimensional +/- theorem cardinal_mk_eq_cardinal_mk_field_pow_dim - theorem eq_bot_iff_dim_eq_zero - theorem injective_of_surjective 2021-03-05 08:42:35 c782e28 chore(analysis/normed_space/units): add `protected`, minor review (#6544) ESTIMATED CHANGES Modified src/analysis/normed_space/units.lean - theorem units.is_open - theorem units.nhds 2021-03-05 08:42:34 f158f25 feat(data/mv_polynomial/basic): add is_scalar_tower and smul_comm_class instances (#6542) This also fixes the `semimodule` instance to not require `comm_semiring R` ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2021-03-05 05:37:32 340dd69 fix(*): remove some simp lemmas (#6541) All of these simp lemmas are also declared in core. Maybe one of the copies can be removed in a future PR, but this PR is just to remove the duplicate simp attributes. This is part of fixing linting problems in core, done in leanprover-community/lean#545. Most of the duplicate simp lemmas are fixed in `core`, but I prefer to remove the simp attribute here in mathlib if the simp lemmas were already used in core. ESTIMATED CHANGES Modified src/data/bool.lean +/- theorem bool.coe_sort_ff +/- theorem bool.coe_sort_tt +/- theorem bool.to_bool_false +/- theorem bool.to_bool_true Modified src/data/list/basic.lean +/- theorem list.bind_append Modified src/logic/basic.lean +/- theorem forall_true_iff 2021-03-05 04:34:20 990a5bb chore(analysis/normed_space/extend): remove unnecessary imports (#6538) Remove two imports. `import analysis.complex.basic` is actually unnecessary, `import analysis.normed_space.operator_norm` is indirectly imported via `data.complex.is_R_or_C`. ESTIMATED CHANGES Modified src/analysis/normed_space/extend.lean 2021-03-05 02:26:15 10aaddd chore(scripts): update nolints.txt (#6543) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-05 00:23:57 d2cc044 chore(algebra/algebra/basic): add a missing coe lemma (#6535) This is just to stop the terrible pain of having to work with `⇑(e.to_ring_equiv) x` in goals. In the long run, we should sort out the simp normal form, but for now I just want to stop the pain. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.coe_ring_equiv' 2021-03-04 21:18:05 ef1a00b feat(data/finsupp, algebra/monoid_algebra): add is_scalar_tower and smul_comm_class (#6534) This stops just short of transferring these instances to `polynomial` and `mv_polynomial`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean Modified src/data/finsupp/basic.lean 2021-03-04 21:18:04 0dfba50 feat(algebra/algebra/basic): alg_equiv.of_linear_equiv (#6495) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.of_linear_equiv + theorem alg_equiv.of_linear_equiv_apply + theorem alg_equiv.of_linear_equiv_to_linear_equiv + theorem alg_equiv.to_linear_equiv_of_linear_equiv 2021-03-04 21:18:02 744e79c feat(algebra/ordered_*, */sub{monoid,group,ring,semiring,field,algebra}): pullback of ordered algebraic structures under an injective map (#6489) Prove that the following 14 order typeclasses can be pulled back via an injective map (`function.injective.*`), and use them to attach 30 new instances to sub-objects: * `ordered_comm_monoid` (and the implied `ordered_add_comm_monoid`) * `submonoid.to_ordered_comm_monoid` * `submodule.to_ordered_add_comm_monoid` * `ordered_comm_group` (and the implied `ordered_add_comm_group`) * `subgroup.to_ordered_comm_group` * `submodule.to_ordered_add_comm_group` * `ordered_cancel_comm_monoid` (and the implied `ordered_cancel_add_comm_monoid`) * `submonoid.to_ordered_cancel_comm_monoid` * `submodule.to_ordered_cancel_add_comm_monoid` * `linear_ordered_cancel_comm_monoid` (and the implied `linear_ordered_cancel_add_comm_monoid`) * `submonoid.to_linear_ordered_cancel_comm_monoid` * `submodule.to_linear_ordered_cancel_add_comm_monoid` * `linear_ordered_comm_monoid_with_zero` * (no suitable subobject exists for monoid_with_zero) * `linear_ordered_comm_group` (and the implied `linear_ordered_add_comm_group`) * `subgroup.to_linear_ordered_comm_group` * `submodule.to_linear_ordered_add_comm_group` * `ordered_semiring` * `subsemiring.to_ordered_semiring` * `subalgebra.to_ordered_semiring` * `ordered_comm_semiring` * `subsemiring.to_ordered_comm_semiring` * `subalgebra.to_ordered_comm_semiring` * `ordered_ring` * `subring.to_ordered_ring` * `subalgebra.to_ordered_ring` * `ordered_comm_ring` * `subring.to_ordered_comm_ring` * `subalgebra.to_ordered_comm_ring` * `linear_ordered_semiring` * `subring.to_linear_ordered_semiring` * `subalgebra.to_linear_ordered_semiring` * `linear_ordered_ring` * `subring.to_linear_ordered_ring` * `subalgebra.to_linear_ordered_ring` * `linear_ordered_comm_ring` * `subring.to_linear_ordered_comm_ring` * `subalgebra.to_linear_ordered_comm_ring` * `linear_ordered_field` * `subfield.to_linear_ordered_field` Zulip: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/rings.20from.20subtype ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean + def function.injective.linear_ordered_comm_monoid_with_zero Modified src/algebra/module/submodule.lean Modified src/algebra/ordered_field.lean + def function.injective.linear_ordered_field Modified src/algebra/ordered_group.lean + def function.injective.linear_ordered_comm_group + def function.injective.ordered_comm_group Modified src/algebra/ordered_monoid.lean + def function.injective.linear_ordered_cancel_comm_monoid + def function.injective.ordered_cancel_comm_monoid + def function.injective.ordered_comm_monoid Modified src/algebra/ordered_ring.lean + def function.injective.linear_ordered_comm_ring + def function.injective.linear_ordered_ring + def function.injective.linear_ordered_semiring + def function.injective.ordered_comm_ring + def function.injective.ordered_comm_semiring + def function.injective.ordered_ring + def function.injective.ordered_semiring Modified src/field_theory/subfield.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/operations.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2021-03-04 21:18:00 09273ae feat(measure_theory/probability_mass_function): Generalize bind on pmfs to binding on the support (#6210) ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function.lean + def pmf.bind_on_support + theorem pmf.bind_on_support_apply + theorem pmf.bind_on_support_bind_on_support + theorem pmf.bind_on_support_comm + theorem pmf.bind_on_support_eq_bind + theorem pmf.bind_on_support_eq_zero_iff + theorem pmf.bind_on_support_pure + theorem pmf.coe_bind_on_support_apply + theorem pmf.mem_support_bind_on_support_iff + theorem pmf.mem_support_pure_iff + theorem pmf.pure_bind_on_support Modified src/topology/algebra/infinite_sum.lean +/- theorem tsum_congr + theorem tsum_dite_left + theorem tsum_dite_right + theorem tsum_ne_zero_iff 2021-03-04 17:49:12 8c72ca3 feat(data/mv_polynomial/basic): a polynomial ring over an R-algebra is also an R-algebra (#6533) ESTIMATED CHANGES Modified src/algebra/category/CommRing/adjunctions.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/monad.lean 2021-03-04 17:49:11 84f4d5c feat(order/zorn): nonempty formulation of Zorn's lemma (#6532) In practice it's often helpful to have this alternate formulation of Zorn's lemma ESTIMATED CHANGES Modified src/order/zorn.lean + theorem zorn.exists_maximal_of_nonempty_chains_bounded + theorem zorn.zorn_nonempty_partial_order 2021-03-04 17:49:10 dbddee6 feat(topology/continuous_on): add `set.left_inv_on.map_nhds_within_eq` (#6529) Also add some trivial lemmas to `data/set/function` and `order/filter/basic`. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem function.left_inverse.left_inv_on + theorem function.right_inverse.right_inv_on + theorem set.left_inv_on.right_inv_on_image + theorem set.surj_on_image Modified src/order/filter/basic.lean + theorem set.maps_to.tendsto Modified src/topology/continuous_on.lean + theorem function.left_inverse.map_nhds_eq + theorem nhds_within_inter_of_mem + theorem set.left_inv_on.map_nhds_within_eq 2021-03-04 17:49:09 0690d97 feat(bounded_continuous_function): norm_lt_of_compact (#6524) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/topology/bounded_continuous_function.lean + theorem bounded_continuous_function.norm_le_of_nonempty + theorem bounded_continuous_function.norm_lt_of_compact Modified src/topology/order.lean 2021-03-04 17:49:08 10d2e70 feat(order/lattice): "algebraic" constructors for (semi-)lattices (#6460) I also added a module doc string for `order/lattice.lean`. ESTIMATED CHANGES Modified src/order/lattice.lean + def lattice.mk' + theorem semilattice_inf.dual_dual + def semilattice_inf.mk' + theorem semilattice_sup.dual_dual + def semilattice_sup.mk' + theorem semilattice_sup_mk'_partial_order_eq_semilattice_inf_mk'_partial_order + theorem sup_eq_iff_inf_eq 2021-03-04 16:01:55 1cc59b9 feat(set_theory/cardinal, data/nat/fincard): Define `nat`- and `enat`-valued cardinalities (#6494) Defines `cardinal.to_nat` and `cardinal.to_enat` Uses those to define `nat.card` and `enat.card` ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean Modified src/set_theory/cardinal.lean + theorem cardinal.cast_to_nat_of_lt_omega + theorem cardinal.mk_to_enat_eq_coe_card + theorem cardinal.mk_to_enat_of_infinite + theorem cardinal.mk_to_nat_eq_card + theorem cardinal.mk_to_nat_of_infinite + theorem cardinal.one_to_nat + theorem cardinal.to_enat_apply_of_lt_omega + theorem cardinal.to_enat_apply_of_omega_le + theorem cardinal.to_enat_cast + theorem cardinal.to_enat_surjective + theorem cardinal.to_nat_apply_of_lt_omega + theorem cardinal.to_nat_apply_of_omega_le + theorem cardinal.to_nat_cast + theorem cardinal.to_nat_right_inverse + theorem cardinal.to_nat_surjective + theorem cardinal.zero_to_nat 2021-03-04 14:43:48 9607dbd feat(analysis/convex): linear image of segment (#6531) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem segment_image 2021-03-04 14:43:47 a8d285c feat(algebra/direct_sum_graded): endow `direct_sum` with a ring structure (#6053) To quote the module docstring > This module provides a set of heterogenous typeclasses for defining a multiplicative structure > over `⨁ i, A i` such that `(*) : A i → A j → A (i + j)`; that is to say, `A` forms an > additively-graded ring. The typeclasses are: > > * `direct_sum.ghas_one A` > * `direct_sum.ghas_mul A` > * `direct_sum.gmonoid A` > * `direct_sum.gcomm_monoid A` > > Respectively, these imbue the direct sum `⨁ i, A i` with: > > * `has_one` > * `mul_zero_class`, `distrib` > * `semiring`, `ring` > * `comm_semiring`, `comm_ring` > > Additionally, this module provides helper functions to construct `gmonoid` and `gcomm_monoid` > instances for: > > * `A : ι → submonoid S`: `direct_sum.ghas_one.of_submonoids`, `direct_sum.ghas_mul.of_submonoids`, > `direct_sum.gmonoid.of_submonoids`, `direct_sum.gcomm_monoid.of_submonoids` > * `A : ι → submonoid S`: `direct_sum.ghas_one.of_subgroups`, `direct_sum.ghas_mul.of_subgroups`, > `direct_sum.gmonoid.of_subgroups`, `direct_sum.gcomm_monoid.of_subgroups` > > If the `A i` are disjoint, these provide a gradation of `⨆ i, A i`, and the mapping > `⨁ i, A i →+ ⨆ i, A i` can be obtained as > `direct_sum.to_monoid (λ i, add_submonoid.inclusion $ le_supr A i)`. ESTIMATED CHANGES Added src/algebra/direct_sum_graded.lean + def direct_sum.gcomm_monoid.of_add_subgroups + def direct_sum.gcomm_monoid.of_add_submonoids + def direct_sum.gcomm_monoid.of_submodules + def direct_sum.ghas_mul.of_add_subgroups + def direct_sum.ghas_mul.of_add_submonoids + def direct_sum.ghas_mul.of_submodules + def direct_sum.ghas_mul.to_sigma_has_mul + def direct_sum.ghas_one.of_add_subgroups + def direct_sum.ghas_one.of_add_submonoids + def direct_sum.ghas_one.of_submodules + def direct_sum.ghas_one.to_sigma_has_one + def direct_sum.gmonoid.of_add_subgroups + def direct_sum.gmonoid.of_add_submonoids + def direct_sum.gmonoid.of_submodules + theorem direct_sum.of_mul_of 2021-03-04 13:58:56 edbbecb doc(group_theory/sylow): module doc (#6477) This PR provides the last module doc which was missing from `group_theory`, namely that for `sylow`. ESTIMATED CHANGES Modified src/group_theory/sylow.lean +/- theorem sylow.exists_subgroup_card_pow_prime 2021-03-04 11:33:23 d32bb6e feat(data/finsupp/basic): add support_nonempty_iff and nonzero_iff_exists (#6530) Add two lemmas to work with `finsupp`s with non-empty support. Zulip: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/finsupp.2Enonzero_iff_exists ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.nonzero_iff_exists + theorem finsupp.support_nonempty_iff 2021-03-04 11:33:22 ca96bfb feat(linear_algebra/clifford_algebra): add definitions of the conjugation operators and some API (#6491) This also replaces the file with a directory, to avoid monstrous files from developing. ESTIMATED CHANGES Renamed src/linear_algebra/clifford_algebra.lean to src/linear_algebra/clifford_algebra/basic.lean Added src/linear_algebra/clifford_algebra/conjugation.lean + def clifford_algebra.involute + theorem clifford_algebra.involute_comp_involute + theorem clifford_algebra.involute_involute + theorem clifford_algebra.involute_involutive + theorem clifford_algebra.involute_prod_map_ι + theorem clifford_algebra.involute_ι + theorem clifford_algebra.reverse.commutes + theorem clifford_algebra.reverse.map_mul + theorem clifford_algebra.reverse.map_one + def clifford_algebra.reverse + theorem clifford_algebra.reverse_comp_involute + theorem clifford_algebra.reverse_comp_reverse + theorem clifford_algebra.reverse_involute + theorem clifford_algebra.reverse_involute_commute + theorem clifford_algebra.reverse_involutive + theorem clifford_algebra.reverse_prod_map_ι + theorem clifford_algebra.reverse_reverse + theorem clifford_algebra.reverse_ι Added src/linear_algebra/clifford_algebra/default.lean 2021-03-04 11:33:21 deb3d45 feat(data/mv_polynomial/equiv): generalize ring_equiv_congr (#6420) Following the discussion in #6324, I have modified `mv_polynomial.ring_equiv_of_equiv` and `mv_polynomial.ring_equiv_congr`, that are now called `ring_equiv_congr_left` and `ring_equiv_congr_left`: both are proved as special cases of `ring_equiv_congr` (the situation for algebras is exactly the same). This has the side effect that the lemmas automatically generated by `@[simps]` are not in a good form (see for example the lemma `mv_polynomial.alg_equiv_congr_left_apply ` in the current mathlib, where there is an unwanted `alg_equiv.refl.to_ring_equiv`). To avoid this I deleted the `@[simps]` and I wrote the lemmas by hand (also correcting the problem with `mv_polynomial.alg_equiv_congr_left_apply`). I probably don't understand completely `@[simps]`, since I had to manually modified some other proofs that no longer worked (I mean, I had to do something more that just using the new names). If there is some `simp` lemma I forgot I would be happy to write it. ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean + theorem mv_polynomial.alg_equiv_congr_left_apply + theorem mv_polynomial.alg_equiv_congr_left_symm_apply + theorem mv_polynomial.alg_equiv_congr_right_apply + theorem mv_polynomial.alg_equiv_congr_right_symm_apply +/- def mv_polynomial.ring_equiv_congr + def mv_polynomial.ring_equiv_congr_left + theorem mv_polynomial.ring_equiv_congr_left_apply + theorem mv_polynomial.ring_equiv_congr_left_symm_apply + def mv_polynomial.ring_equiv_congr_right + theorem mv_polynomial.ring_equiv_congr_right_apply + theorem mv_polynomial.ring_equiv_congr_right_symm_apply - def mv_polynomial.ring_equiv_of_equiv Modified src/data/mv_polynomial/funext.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/polynomial/basic.lean 2021-03-04 08:43:30 3329ec4 chore(topology/algebra/*): tendsto namespacing (#6528) Correct a few lemmas which I noticed were namespaced as `tendsto.***` rather than `filter.tendsto.***`, and thus couldn't be used with projection notation. Also use the projection notation, where now permitted. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Search.20for.20all.20declarations.20in.20a.20namespace) ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/polynomials.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/data/real/pi.lean Modified src/topology/algebra/monoid.lean + theorem filter.tendsto.const_mul + theorem filter.tendsto.mul_const - theorem tendsto.const_mul - theorem tendsto.mul_const Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.inv_tendsto_at_top + theorem filter.tendsto.inv_tendsto_zero + theorem filter.tendsto.max + theorem filter.tendsto.min - theorem tendsto.inv_tendsto_at_top - theorem tendsto.inv_tendsto_zero - theorem tendsto.max - theorem tendsto.min 2021-03-04 08:43:29 76aee25 refactor(big_operators/basic): move prod_mul_prod_compl (#6526) Several lemmas were unnecessarily in `src/data/fintype/card.lean`, and I've relocated them to `src/algebra/big_operators/basic.lean`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_compl_mul_prod + theorem finset.prod_mul_prod_compl + theorem is_compl.prod_mul_prod Modified src/data/fintype/basic.lean + theorem finset.union_compl Modified src/data/fintype/card.lean - theorem finset.prod_compl_mul_prod - theorem finset.prod_mul_prod_compl - theorem is_compl.prod_mul_prod 2021-03-04 08:43:28 d7fa1bc feat(topology/instances/real): generalize 'compact_space I' to 'compact_space (Icc a b)' (#6523) ESTIMATED CHANGES Modified src/topology/instances/real.lean Modified src/topology/path_connected.lean 2021-03-04 08:43:27 2f35779 chore(*/sub*): tidy up inherited algebraic structures from parent objects (#6509) This changes `subfield.to_field` to ensure that division is defeq. It also removes `subring.subset_comm_ring` which was identical to `subring.to_comm_ring`, renames some `subalgebra` instances to match those of `subring`s, and cleans up a few related proofs that relied on the old names. These are cleanups split from #6489, which failed CI but was otherwise approved ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/field_theory/subfield.lean + theorem subfield.coe_div + theorem subfield.coe_sub Modified src/group_theory/subgroup.lean 2021-03-04 07:49:34 f4db322 feat(category_theory/subobject): factoring morphisms through subobjects (#6302) The predicate `h : P.factors f`, for `P : subobject Y` and `f : X ⟶ Y` asserts the existence of some `P.factor_thru f : X ⟶ (P : C)` making the obvious diagram commute. We provide conditions for `P.factors f`, when `P` is a kernel/equalizer/image/inf/sup subobject. ESTIMATED CHANGES Modified src/category_theory/subobject.lean + theorem category_theory.limits.equalizer_subobject_factors + theorem category_theory.limits.equalizer_subobject_factors_iff + theorem category_theory.limits.image_subobject_factors + theorem category_theory.limits.image_subobject_le + theorem category_theory.limits.kernel_subobject_factors + theorem category_theory.limits.kernel_subobject_factors_iff + def category_theory.mono_over.factor_thru + def category_theory.mono_over.factors + theorem category_theory.mono_over.image_mono_over_arrow + theorem category_theory.subobject.bot_arrow + def category_theory.subobject.bot_coe_iso_zero + theorem category_theory.subobject.bot_factors_iff_zero + theorem category_theory.subobject.eq_of_comp_arrow_eq + def category_theory.subobject.factor_thru + theorem category_theory.subobject.factor_thru_arrow + theorem category_theory.subobject.factor_thru_eq_zero + theorem category_theory.subobject.factor_thru_right + def category_theory.subobject.factors + theorem category_theory.subobject.factors_comp_arrow + theorem category_theory.subobject.factors_iff + theorem category_theory.subobject.factors_left_of_inf_factors + theorem category_theory.subobject.factors_of_factors_right + theorem category_theory.subobject.factors_of_le + theorem category_theory.subobject.factors_right_of_inf_factors + theorem category_theory.subobject.finset_inf_arrow_factors + theorem category_theory.subobject.finset_inf_factors + theorem category_theory.subobject.finset_sup_factors + theorem category_theory.subobject.inf_arrow_factors_left + theorem category_theory.subobject.inf_arrow_factors_right + theorem category_theory.subobject.inf_factors + theorem category_theory.subobject.le_of_comm + theorem category_theory.subobject.representative_arrow + theorem category_theory.subobject.representative_coe + theorem category_theory.subobject.sup_factors_of_factors_left + theorem category_theory.subobject.sup_factors_of_factors_right + def category_theory.subobject.top_coe_iso_self + theorem category_theory.subobject.top_factors + theorem category_theory.subobject.underlying_iso_arrow + theorem category_theory.subobject.underlying_iso_id_eq_top_coe_iso_self + theorem category_theory.subobject.underlying_iso_inv_top_arrow 2021-03-04 02:11:25 8289518 feat(algebra/star): the Bell/CHSH/Tsirelson inequalities (#4687) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/star/basic.lean Added src/algebra/star/chsh.lean + theorem CHSH_inequality_of_comm + structure is_CHSH_tuple + theorem tsirelson_inequality.neg_two_gsmul_half_smul + theorem tsirelson_inequality.smul_four + theorem tsirelson_inequality.smul_two + theorem tsirelson_inequality.sqrt_two_inv_mul_self + theorem tsirelson_inequality.tsirelson_inequality_aux + theorem tsirelson_inequality.two_gsmul_half_smul + theorem tsirelson_inequality Modified src/data/complex/basic.lean Modified src/data/matrix/basic.lean Modified src/data/real/basic.lean 2021-03-04 01:15:55 2837807 chore(scripts): update nolints.txt (#6527) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-03 13:41:37 3c9399d chore(algebra/ordered_group): put to_additive on lemmas about linear_ordered_comm_group (#6506) No lemmas are added or renamed for the additive version, this just adds lemmas (and more importantly instances) for the multiplicative version. This: * Adds missing `ancestor` attributes to `linear_ordered_add_comm_group` and `linear_ordered_comm_group`, which are needed to make `to_additive` work correctly on `to_add_comm_group` and `to_comm_group` * Adds multiplicative versions of: * `sub_le_self_iff` (`div_le_self_iff`) * `sub_lt_self_iff` (`div_lt_self_iff `) * `linear_ordered_add_comm_group.to_linear_ordered_cancel_add_comm_monoid` (`linear_ordered_comm_group.to_linear_ordered_cancel_comm_monoid`) * `linear_ordered_add_comm_group.add_lt_add_left` (`linear_ordered_comm_group.mul_lt_mul_left'`) * `min_neg_neg` (`min_inv_inv'`) * `max_neg_neg` (`max_inv_inv'`) * `min_sub_sub_right` (`min_div_div_right'`) * `min_sub_sub_left` (`min_div_div_left'`) * `max_sub_sub_right` (`max_div_div_right'`) * `max_sub_sub_left` (`max_div_div_left'`) * `max_zero_sub_eq_self` (`max_one_div_eq_self'`) * `eq_zero_of_neg_eq` (`eq_one_of_inv_eq'`) * `exists_zero_lt` (`exists_one_lt'`) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem div_le_self_iff + theorem div_lt_self_iff + theorem eq_one_of_inv_eq' - theorem eq_zero_of_neg_eq + theorem exists_one_lt' - theorem exists_zero_lt - theorem linear_ordered_add_comm_group.add_lt_add_left + theorem linear_ordered_comm_group.mul_lt_mul_left' + theorem max_div_div_left' + theorem max_div_div_right' + theorem max_inv_inv' - theorem max_neg_neg + theorem max_one_div_eq_self' - theorem max_sub_sub_left - theorem max_sub_sub_right - theorem max_zero_sub_eq_self + theorem min_div_div_left' + theorem min_div_div_right' + theorem min_inv_inv' - theorem min_neg_neg - theorem min_sub_sub_left - theorem min_sub_sub_right - theorem sub_le_self_iff - theorem sub_lt_self_iff 2021-03-03 13:41:37 d4ac4c3 feat(data/list/basic): add `list.prod_eq_zero(_iff)` (#6504) API changes: * add `list.prod_eq_zero`, `list.prod_eq_zero_iff`, ; * lemmas `list.prod_ne_zero`, `multiset.prod_ne_zero`, `polynomial.root_list_prod`, `polynomial.roots_multiset_prod`, `polynomial.nat_degree_multiset_prod`, now assume `0 ∉ L` (or `0 ∉ m`/`0 ∉ s`) instead of `∀ x ∈ L, x ≠ 0` ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.prod_eq_zero + theorem list.prod_eq_zero_iff +/- theorem list.prod_ne_zero Modified src/data/multiset/basic.lean +/- theorem multiset.prod_eq_zero +/- theorem multiset.prod_eq_zero_iff +/- theorem multiset.prod_ne_zero Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.zero_nmem_multiset_map_X_sub_C Modified src/data/polynomial/ring_division.lean Modified src/field_theory/splitting_field.lean 2021-03-03 13:41:36 a852bf4 feat(data/equiv/fin): fin_add_flip and fin_rotate (#6454) Add * `fin_add_flip : fin (m + n) ≃ fin (n + m)` * `fin_rotate : Π n, fin n ≃ fin n` (acts by +1 mod n) and simp lemmas, and shows `fin.snoc` is a rotation of `fin.cons`. ESTIMATED CHANGES Modified src/data/equiv/fin.lean + theorem fin.snoc_eq_cons_rotate + def fin_add_flip + theorem fin_add_flip_apply_left + theorem fin_add_flip_apply_right + def fin_congr + theorem fin_congr_apply_coe + theorem fin_congr_apply_mk + theorem fin_congr_symm + theorem fin_congr_symm_apply_coe + def fin_rotate + theorem fin_rotate_last' + theorem fin_rotate_last + theorem fin_rotate_of_lt Modified src/data/nat/basic.lean + theorem nat.eq_of_le_of_lt_succ 2021-03-03 10:36:54 9c48eb1 chore(ring_theory/{subring,integral_closure}): simplify a proof, remove redundant instances (#6513) ESTIMATED CHANGES Modified src/field_theory/subfield.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/subring.lean - def subring.subset_comm_ring 2021-03-03 10:36:53 eec54d0 feat(algebra/field): add function.injective.field (#6511) We already have defs of this style for all sorts of algebraic constructions, why not one more. ESTIMATED CHANGES Modified src/algebra/field.lean 2021-03-03 10:36:52 3309ce2 refactor(ring_theory/polynomial/chebyshev): move lemmas around (#6510) As discussed in #6501, split up the old file `ring_theory.polynomial.chebyshev.basic`, moving half its contents to `ring_theory.polynomial.chebyshev.defs` and the other half to `ring_theory.polynomial.chebyshev.dickson`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean Renamed src/ring_theory/polynomial/chebyshev/defs.lean to src/ring_theory/polynomial/chebyshev.lean + theorem polynomial.chebyshev₁_mul + theorem polynomial.mul_chebyshev₁ Deleted src/ring_theory/polynomial/chebyshev/default.lean Deleted src/ring_theory/polynomial/chebyshev/dickson.lean - theorem polynomial.dickson_add_two - theorem polynomial.dickson_of_two_le - theorem polynomial.dickson_one - theorem polynomial.dickson_two - theorem polynomial.dickson_two_zero - theorem polynomial.dickson_zero - theorem polynomial.map_dickson Renamed src/ring_theory/polynomial/chebyshev/basic.lean to src/ring_theory/polynomial/dickson.lean - theorem polynomial.chebyshev₁_mul + theorem polynomial.dickson_add_two + theorem polynomial.dickson_of_two_le + theorem polynomial.dickson_one + theorem polynomial.dickson_two + theorem polynomial.dickson_two_zero + theorem polynomial.dickson_zero + theorem polynomial.map_dickson - theorem polynomial.mul_chebyshev₁ 2021-03-03 07:35:46 383dd2b chore(data/equiv): add missing simp lemmas about mk (#6505) This adds missing `mk_coe` lemmas, and new `symm_mk`, `symm_bijective`, and `mk_coe'` lemmas. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.coe_mk - theorem alg_equiv.mk_apply + theorem alg_equiv.mk_coe' + theorem alg_equiv.mk_coe + theorem alg_equiv.symm_bijective + theorem alg_equiv.symm_mk +/- theorem alg_equiv.symm_symm - theorem alg_equiv.to_fun_apply + theorem alg_equiv.to_fun_eq_coe + theorem alg_hom.to_fun_eq_coe Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/module/linear_map.lean + theorem linear_equiv.mk_coe' + theorem linear_equiv.mk_coe + theorem linear_equiv.symm_bijective + theorem linear_equiv.symm_mk Modified src/data/equiv/mul_add.lean - theorem mul_equiv.coe_symm_mk + theorem mul_equiv.mk_coe' + theorem mul_equiv.mk_coe + theorem mul_equiv.symm_bijective + theorem mul_equiv.symm_mk + theorem mul_equiv.symm_symm Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_mk - theorem ring_equiv.coe_symm_mk + theorem ring_equiv.mk_coe' + theorem ring_equiv.mk_coe + theorem ring_equiv.symm_bijective + theorem ring_equiv.symm_mk 2021-03-02 23:24:10 22e3437 feat(algebra/big_operators/basic): lemmas prod_range_add, sum_range_add (#6484) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_range_add + theorem finset.sum_range_add 2021-03-02 22:25:31 19ed0f8 refactor(ring_theory/valuation): valuations in `linear_ordered_comm_monoid_with_zero` (#6500) Generalizes the value group in a `valuation` to a `linear_ordered_comm_monoid_with_zero` ESTIMATED CHANGES Modified src/ring_theory/valuation/basic.lean +/- theorem valuation.is_equiv_of_map_strict_mono +/- theorem valuation.is_equiv_of_val_le_one +/- theorem valuation.ne_zero_iff +/- theorem valuation.zero_iff 2021-03-02 19:27:12 0c5b517 feat(ring_theory/polynomial/chebyshev/basic): multiplication of Chebyshev polynomials (#6501) Add the identity for multiplication of Chebyshev polynomials, ```lean 2 * chebyshev₁ R m * chebyshev₁ R (m + k) = chebyshev₁ R (2 * m + k) + chebyshev₁ R k ``` Use this to give a direct proof of the identity `chebyshev₁_mul` for composition of Chebyshev polynomials, replacing the current proof using trig functions. This means that the import `import analysis.special_functions.trigonometric` to the Chebyshev file can be removed. ESTIMATED CHANGES Modified src/ring_theory/polynomial/chebyshev/basic.lean +/- theorem polynomial.chebyshev₁_mul + theorem polynomial.mul_chebyshev₁ 2021-03-02 19:27:11 0c863e9 refactor(data/set/finite): change type of `set.finite.dependent_image` (#6475) The old lemma combined a statement similar to `set.finite.image` with `set.finite.subset`. The new statement is a direct generalization of `set.finite.image`. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/data/set/finite.lean +/- theorem set.finite.dependent_image 2021-03-02 16:36:18 c087011 refactor(data/set/finite): make `finite` argument of `set.finite.mem_to_finset` explicit (#6508) This way we can use dot notation. ESTIMATED CHANGES Modified src/data/finset/preimage.lean Modified src/data/set/finite.lean +/- theorem set.finite.mem_to_finset Modified src/linear_algebra/linear_independent.lean Modified src/measure_theory/integration.lean Modified src/order/compactly_generated.lean Modified src/order/filter/cofinite.lean Modified src/order/order_iso_nat.lean 2021-03-02 15:26:34 9f0f05e feat(data/{nat,int}/parity): even_mul_succ_self (#6507) ESTIMATED CHANGES Modified src/data/int/parity.lean + theorem int.even_mul_succ_self Modified src/data/nat/parity.lean + theorem nat.even_mul_succ_self 2021-03-02 08:23:47 6b5e48d feat(data/finset/lattice): +2 induction principles for `finset`s (#6502) ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.induction_on_max + theorem finset.induction_on_min 2021-03-02 06:06:52 572f727 chore(algebra/big_operators): use weaker typeclass assumptions (#6503) ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean +/- theorem finset.prod_pos 2021-03-02 04:20:01 c69c8a9 chore(scripts): update nolints.txt (#6499) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-03-02 02:22:47 f63069f feat(linear_algebra/basic): simp lemmas about endomorphisms (#6452) Also renames some lemmas: * `linear_map.one_app` has been renamed to `linear_map.one_apply` * `linear_map.mul_app` has been removed in favour of the existing `linear_map.mul_app`. ESTIMATED CHANGES Modified src/algebra/lie/quotient.lean Modified src/analysis/calculus/lagrange_multipliers.lean Modified src/linear_algebra/basic.lean + theorem linear_map.coe_mul + theorem linear_map.coe_one + theorem linear_map.coe_pow - theorem linear_map.mul_app +/- theorem linear_map.mul_apply - theorem linear_map.one_app + theorem linear_map.one_apply + theorem linear_map.pow_apply Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/matrix.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/simple_module.lean 2021-03-02 02:22:45 5c01613 feat(analysis/special_functions/integrals): some simple integration lemmas (#6216) Integration of some simple functions, including `sin`, `cos`, `pow`, and `inv`. @ADedecker and I are working on the integrals of some more intricate functions, which we hope to add in a subsequent (series of) PR(s). With this PR, simple integrals are now computable by `norm_num`. Here are some examples: ``` import analysis.special_functions.integrals open real interval_integral open_locale real example : ∫ x in 0..π, sin x = 2 := by norm_num example : ∫ x in 0..π/4, cos x = sqrt 2 / 2 := by simp example : ∫ x:ℝ in 2..4, x^(3:ℕ) = 60 := by norm_num example : ∫ x in 0..2, -exp x = 1 - exp 2 := by simp example : ∫ x:ℝ in (-1)..4, x = 15/2 := by norm_num example : ∫ x:ℝ in 8..11, (1:ℝ) = 3 := by norm_num example : ∫ x:ℝ in 2..3, x⁻¹ = log (3/2) := by norm_num example : ∫ x:ℝ in 0..1, 1 / (1 + x^2) = π/4 := by simp ``` `integral_deriv_eq_sub'` courtesy of @gebner. ESTIMATED CHANGES Added src/analysis/special_functions/integrals.lean + theorem integral_cos + theorem integral_exp + theorem integral_id + theorem integral_inv + theorem integral_inv_of_neg + theorem integral_inv_of_pos + theorem integral_inv_one_add_sq + theorem integral_one + theorem integral_one_div + theorem integral_one_div_of_neg + theorem integral_one_div_of_pos + theorem integral_one_div_one_add_sq + theorem integral_pow + theorem integral_sin Modified src/analysis/special_functions/trigonometric.lean + theorem real.continuous_on_sin Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_deriv_eq_sub' 2021-03-02 00:24:51 5eb7ebb feat(data/polynomial): lemmas about polynomial derivative (#6433) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean - theorem polynomial.pow_comp Modified src/data/polynomial/derivative.lean + theorem polynomial.derivative_C_mul + theorem polynomial.derivative_cast_nat + theorem polynomial.derivative_comp + def polynomial.derivative_lhom + theorem polynomial.derivative_lhom_coe +/- theorem polynomial.derivative_sub + theorem polynomial.iterate_derivative_C_mul + theorem polynomial.iterate_derivative_add + theorem polynomial.iterate_derivative_cast_nat_mul + theorem polynomial.iterate_derivative_map + theorem polynomial.iterate_derivative_neg + theorem polynomial.iterate_derivative_smul + theorem polynomial.iterate_derivative_sub + theorem polynomial.iterate_derivative_zero Modified src/data/polynomial/eval.lean + theorem polynomial.cast_int_comp + theorem polynomial.cast_nat_comp + theorem polynomial.monomial_comp + theorem polynomial.pow_comp 2021-03-01 21:31:43 0334475 ci(scripts/detect_errors): try to show info messages in a way github understands (#6493) I don't actually know if this works, but I know that the previous code was not working: https://github.com/leanprover-community/mathlib/pull/6485/checks?check_run_id=2006396264#step:7:7 ESTIMATED CHANGES Modified scripts/detect_errors.py 2021-03-01 21:31:42 0a5f69c feat(src/order/basic): show injectivity of order conversions, and tag lemmas with ext (#6490) Stating these as `function.injective` provides slightly more API, especially since before only the composition was proven as injective. For convenience, this leaves behind `preorder.ext`, `partial_order.ext`, and `linear_order.ext`, although these are now provable with trivial applications of `ext`. ESTIMATED CHANGES Modified src/order/basic.lean + theorem linear_order.to_partial_order_injective + theorem partial_order.to_preorder_injective + theorem preorder.to_has_le_injective 2021-03-01 21:31:41 cc57915 chore(data/equiv/basic): add simp lemmas about subtype_equiv (#6479) ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- theorem equiv.cast_refl + theorem equiv.subtype_equiv_refl + theorem equiv.subtype_equiv_symm - theorem equiv.subtype_equiv_symm_apply + theorem equiv.subtype_equiv_trans 2021-03-01 21:31:40 354fda0 feat(linear_algebra/finsupp): add mem_span_set (#6457) From the doc-string: If `m ∈ M` is contained in the `R`-submodule spanned by a set `s ⊆ M`, then we can write `m` as a finite `R`-linear combination of elements of `s`. The implementation uses `finsupp.sum`. The initial proof was a substantial simplification of mine, due to Kevin Buzzard. The final one is due to Eric Wieser. Zulip discussion for the proof: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/submodule.2Espan.20as_sum Zulip discussion for the universe issue: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/universe.20issue.20with.20.60Type*.60 ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean + theorem mem_span_set 2021-03-01 21:31:39 e0a4dd8 feat(ring_theory/finiteness): improve API for finite presentation (#6382) Improve the API for finitely presented morphism. I changed the name from `algebra.finitely_presented` to `algebra.finite_presentation` that seems more coherent with the other names. Coming soon: transitivity of finite presentation. ESTIMATED CHANGES Modified src/ring_theory/finiteness.lean + theorem alg_hom.finite_presentation.comp_surjective + theorem alg_hom.finite_presentation.id + theorem alg_hom.finite_presentation.of_finite_type + theorem alg_hom.finite_presentation.of_surjective + def alg_hom.finite_presentation + theorem alg_hom.finite_type.of_finite_presentation + theorem algebra.finite_presentation.equiv + theorem algebra.finite_presentation.iff_quotient_mv_polynomial' + theorem algebra.finite_presentation.mv_polynomial + theorem algebra.finite_presentation.of_finite_type + theorem algebra.finite_presentation.of_surjective + theorem algebra.finite_presentation.quotient + theorem algebra.finite_presentation.self + def algebra.finite_presentation + theorem algebra.finite_type.of_finite_presentation - theorem algebra.finite_type.of_finitely_presented - theorem algebra.finitely_presented.equiv - theorem algebra.finitely_presented.mv_polynomial - theorem algebra.finitely_presented.of_surjective - theorem algebra.finitely_presented.quotient - theorem algebra.finitely_presented.self - def algebra.finitely_presented + theorem ring_hom.finite_presentation.comp_surjective + theorem ring_hom.finite_presentation.id + theorem ring_hom.finite_presentation.of_finite_type + theorem ring_hom.finite_presentation.of_surjective + def ring_hom.finite_presentation + theorem ring_hom.finite_type.of_finite_presentation 2021-03-01 18:58:11 0faa788 feat(ring_theory/hahn_series): introduce ring of Hahn series (#6237) Defines Hahn series Provides basic algebraic structure on Hahn series, up to `comm_ring`. ESTIMATED CHANGES Modified src/data/support.lean + theorem function.support_smul_subset + theorem pi.support_single + theorem pi.support_single_of_ne + theorem pi.support_single_subset + theorem pi.support_single_zero Added src/ring_theory/hahn_series.lean + theorem hahn_series.add_coeff' + theorem hahn_series.add_coeff + theorem hahn_series.is_wf_support + theorem hahn_series.mem_support + theorem hahn_series.mul_coeff + theorem hahn_series.mul_coeff_left' + theorem hahn_series.mul_coeff_right' + theorem hahn_series.mul_single_zero_coeff + theorem hahn_series.neg_coeff' + theorem hahn_series.neg_coeff + theorem hahn_series.one_coeff + def hahn_series.single + theorem hahn_series.single_coeff + theorem hahn_series.single_coeff_of_ne + theorem hahn_series.single_coeff_same + theorem hahn_series.single_eq_zero + theorem hahn_series.single_zero_mul_eq_smul + theorem hahn_series.single_zero_one + theorem hahn_series.smul_coeff + theorem hahn_series.sub_coeff' + theorem hahn_series.sub_coeff + def hahn_series.support + theorem hahn_series.support_mul_subset_add_support + theorem hahn_series.support_single_of_ne + theorem hahn_series.support_zero + theorem hahn_series.zero_coeff + structure hahn_series 2021-03-01 15:40:36 e77f071 feat(linear_algebra/{clifford,exterior,tensor}_algebra): add induction principles (#6416) These are closely derived from the induction principle for the free algebra. I can't think of a good way to deduplicate them, so for now I've added comments making it clear to the reader that the code is largely copied. ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/linear_algebra/clifford_algebra.lean + theorem clifford_algebra.induction Modified src/linear_algebra/exterior_algebra.lean + theorem exterior_algebra.induction Modified src/linear_algebra/tensor_algebra.lean + theorem tensor_algebra.induction 2021-03-01 10:35:11 aff6bd1 fix(group_action/defs): make mul_action.regular an instance (#6241) This is essentially already an instance via `semiring.to_semimodule.to_distrib_mul_action.to_mul_action`, but with an unecessary `semiring R` constraint. I can't remember the details, but I've run into multiple instance resolution issues in the past that were resolved with `local attribute [instance] mul_action.regular`. This also renames the instance to `monoid.to_mul_action` for consistency with `semiring.to_semimodule`. ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean Modified src/algebra/module/basic.lean - theorem smul_eq_mul Modified src/data/finsupp/basic.lean Modified src/group_theory/group_action/defs.lean - def mul_action.regular + theorem smul_eq_mul 2021-03-01 04:31:52 6ac19b4 doc(algebra/ring/basic): change pullback and injective to pushforward and surjective (#6487) Zulip reference: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/pullback.20vs.20pushforward ESTIMATED CHANGES Modified src/algebra/ring/basic.lean 2021-03-01 01:14:26 9ad469d chore(scripts): update nolints.txt (#6486) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-28 22:54:58 13f30e5 feat(geometry/manifold): `ext_chart_at` is smooth on its source (#6473) ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_within_at.congr' Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- theorem ext_chart_at_coe +/- theorem ext_chart_at_coe_symm + theorem ext_chart_at_continuous_at' +/- theorem ext_chart_at_continuous_at + theorem ext_chart_at_map_nhds' + theorem ext_chart_at_map_nhds + theorem ext_chart_at_source_mem_nhds' + theorem ext_chart_at_target_subset_range + theorem ext_chart_continuous_at_symm'' + theorem ext_chart_continuous_on_symm Modified src/geometry/manifold/times_cont_mdiff.lean + theorem times_cont_mdiff_at_ext_chart_at' + theorem times_cont_mdiff_at_ext_chart_at + theorem times_cont_mdiff_within_at_iff' 2021-02-28 22:54:57 83bc663 feat(category_theory/monoidal): skeleton of a monoidal category is a monoid (#6444) ESTIMATED CHANGES Added src/category_theory/monoidal/skeleton.lean + def category_theory.comm_monoid_of_skeletal_braided + def category_theory.monoid_of_skeletal_monoidal 2021-02-28 22:54:56 1e45472 feat(analysis/calculus): Lagrange multipliers (#6431) ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- theorem linear_map.to_add_monoid_hom_coe Added src/analysis/calculus/lagrange_multipliers.lean + theorem is_local_extr_on.exists_linear_map_of_has_strict_fderiv_at + theorem is_local_extr_on.exists_multipliers_of_has_strict_fderiv_at + theorem is_local_extr_on.linear_dependent_of_has_strict_fderiv_at + theorem is_local_extr_on.range_ne_top_of_has_strict_fderiv_at Modified src/data/fintype/card.lean + theorem fintype.prod_option Modified src/linear_algebra/basic.lean Modified src/linear_algebra/pi.lean + def linear_equiv.pi_ring + theorem linear_equiv.pi_ring_apply + theorem linear_equiv.pi_ring_symm_apply Modified src/order/filter/extr.lean + theorem is_max_filter.tendsto_principal_Iic + theorem is_min_filter.tendsto_principal_Ici Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_sum' + theorem continuous_linear_map.coe_sum Modified src/topology/continuous_on.lean 2021-02-28 20:56:20 18804b2 chore(category/equivalence): remove functor.fun_inv_id (#6450) `F.fun_inv_id` was just a confusing alternative way to write `F.as_equivalence.unit_iso.symm`, and meant that many lemmas couldn't fire. Deletes the definitions `functor.fun_inv_id` and `functor.inv_hom_id`, and the lemmas `is_equivalence.functor_unit_comp` and `is_equivalence.inv_fun_id_inv_comp`. ESTIMATED CHANGES Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/equivalence.lean - def category_theory.functor.fun_inv_id - def category_theory.functor.inv_fun_id - theorem category_theory.is_equivalence.functor_unit_comp - theorem category_theory.is_equivalence.inv_fun_id_inv_comp 2021-02-28 20:56:19 ac3c478 feat(archive/100-theorems-list/9_area_of_a_circle): area of a disc (#6374) Freek № 9: The area of a disc with radius _r_ is _πr²_. Also included are an `of_le` version of [FTC-2 for the open set](https://leanprover-community.github.io/mathlib_docs/find/interval_integral.integral_eq_sub_of_has_deriv_at') and the definition `nnreal.pi`. Co-authored by @asouther4 and @jamesa9283. ESTIMATED CHANGES Modified .gitignore Added archive/100-theorems-list/9_area_of_a_circle.lean + theorem area_disc + def disc + theorem disc_eq_region_between + theorem measurable_set_disc Modified docs/100.yaml Modified src/analysis/special_functions/trigonometric.lean + theorem nnreal.coe_real_pi + theorem nnreal.pi_ne_zero + theorem nnreal.pi_pos Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_eq_sub_of_has_deriv_at'_of_le 2021-02-28 17:40:43 b181866 feat(data/set): more lemmas (#6474) ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite_option + theorem set.subsingleton.finite Modified src/data/set/lattice.lean +/- theorem set.Inter_const + theorem set.Inter_option +/- theorem set.Union_const + theorem set.Union_option + theorem set.disjoint_Union_left + theorem set.disjoint_Union_right Modified src/order/complete_boolean_algebra.lean + theorem disjoint_supr_iff + theorem inf_supr_eq + theorem infi_sup_eq + theorem sup_infi_eq + theorem supr_disjoint_iff + theorem supr_inf_eq Modified src/order/complete_lattice.lean + theorem infi_option + theorem supr_option 2021-02-28 10:49:48 ef5c1d5 feat(analysis/special_functions/pow): smoothness of `complex.cpow` (#6447) * `x ^ y` is smooth in both variables at `(x, y)`, if `0 < re x` or `im x ≠ 0`; * `x ^ y` is smooth in `y` if `x ≠ 0` or `y ≠ 0`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem complex.cpow_def_of_ne_zero + theorem complex.cpow_sub + theorem complex.has_fderiv_at_cpow + theorem complex.has_strict_deriv_at_const_cpow + theorem complex.has_strict_deriv_at_cpow_const + theorem complex.has_strict_fderiv_at_cpow + theorem continuous.const_cpow + theorem continuous.cpow + theorem continuous_at.const_cpow + theorem continuous_at.cpow + theorem continuous_on.const_cpow + theorem continuous_on.cpow + theorem continuous_within_at.const_cpow + theorem continuous_within_at.cpow + theorem differentiable_at.const_cpow + theorem differentiable_at.cpow + theorem differentiable_within_at.const_cpow + theorem differentiable_within_at.cpow + theorem filter.tendsto.const_cpow + theorem filter.tendsto.cpow + theorem has_deriv_at.const_cpow + theorem has_deriv_at.cpow + theorem has_deriv_at.cpow_const + theorem has_deriv_within_at.const_cpow + theorem has_deriv_within_at.cpow + theorem has_deriv_within_at.cpow_const + theorem has_fderiv_at.const_cpow + theorem has_fderiv_at.cpow + theorem has_fderiv_within_at.const_cpow + theorem has_fderiv_within_at.cpow + theorem has_strict_deriv_at.const_cpow + theorem has_strict_deriv_at.cpow + theorem has_strict_deriv_at.cpow_const + theorem has_strict_fderiv_at.const_cpow + theorem has_strict_fderiv_at.cpow +/- theorem measurable.cpow Modified src/analysis/special_functions/trigonometric.lean + theorem complex.log_im_le_pi + theorem complex.neg_pi_lt_log_im + theorem real.cos_sub_pi 2021-02-28 07:50:15 abb3121 chore(*): more line lengths (#6472) ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/extrema.lean Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem is_bounded_bilinear_map.is_bounded_linear_map_right Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.bilinear_comp +/- theorem continuous_linear_map.to_span_singleton_homothety +/- theorem linear_map.mk_continuous_of_exists_bound_coe Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/computability/turing_machine.lean +/- theorem turing.blank_extends.refl Modified src/control/basic.lean Modified src/control/bitraversable/instances.lean Modified src/control/equiv_functor.lean Modified src/control/fix.lean Modified src/control/fold.lean Modified src/control/lawful_fix.lean +/- theorem pi.uncurry_curry_continuous Modified src/control/monad/basic.lean +/- theorem map_eq_bind_pure_comp Modified src/control/monad/cont.lean +/- def except_t.call_cc Modified src/control/monad/writer.lean Modified src/control/traversable/basic.lean Modified src/control/traversable/derive.lean Modified src/data/bitvec/core.lean Modified src/data/complex/basic.lean +/- theorem complex.of_real_smul Modified src/data/complex/exponential.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/finset/gcd.lean Modified src/data/finsupp/pointwise.lean Modified src/data/indicator_function.lean +/- theorem set.indicator_finset_sum Modified src/data/multiset/nodup.lean +/- theorem multiset.nodup_add_of_nodup +/- theorem multiset.nodup_map +/- theorem multiset.nodup_union Modified src/data/mv_polynomial/comm_ring.lean +/- theorem mv_polynomial.eval₂_sub Modified src/data/mv_polynomial/counit.lean Modified src/data/mv_polynomial/invertible.lean Modified src/data/mv_polynomial/monad.lean Modified src/data/mv_polynomial/variables.lean +/- theorem mv_polynomial.degrees_add_of_disjoint +/- theorem mv_polynomial.mem_support_not_mem_vars_zero Modified src/data/nat/basic.lean Modified src/data/nat/enat.lean +/- theorem enat.to_with_top_coe' Modified src/data/nat/gcd.lean +/- theorem nat.coprime.coprime_div_left +/- theorem nat.coprime.coprime_div_right Modified src/data/nat/modeq.lean Modified src/data/nat/multiplicity.lean Modified src/data/padics/padic_norm.lean +/- theorem one_le_padic_val_nat_of_dvd +/- theorem padic_val_nat_primes +/- theorem padic_val_rat_of_nat Modified src/data/padics/padic_numbers.lean Modified src/data/padics/ring_homs.lean Modified src/data/pfunctor/multivariate/W.lean Modified src/data/pfunctor/univariate/M.lean +/- theorem pfunctor.M.cases_on_mk' +/- theorem pfunctor.M.default_consistent +/- theorem pfunctor.M.isubtree_cons Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/derivative.lean +/- theorem polynomial.nat_degree_eq_zero_of_derivative_eq_zero Modified src/data/polynomial/integral_normalization.lean +/- theorem polynomial.integral_normalization_coeff_ne_nat_degree Modified src/data/polynomial/iterated_deriv.lean +/- theorem polynomial.iterated_deriv_add +/- theorem polynomial.iterated_deriv_sub Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.nat_degree_le_of_dvd Modified src/data/qpf/multivariate/basic.lean +/- theorem mvqpf.supp_eq Modified src/data/qpf/multivariate/constructions/cofix.lean +/- def mvqpf.cofix.corec' Modified src/data/qpf/multivariate/constructions/fix.lean +/- def mvqpf.fix.drec Modified src/data/rat/basic.lean Modified src/data/rat/sqrt.lean Modified src/data/real/cardinality.lean Modified src/data/set/countable.lean +/- theorem set.countable.bUnion +/- theorem set.countable.union Modified src/data/set/function.lean +/- theorem set.left_inv_on.comp Modified src/data/set/lattice.lean +/- theorem set.sInter_insert +/- theorem set.sUnion_insert Modified src/data/string/basic.lean Modified src/data/sum.lean +/- theorem sum.lex_acc_inr Modified src/data/vector2.lean +/- theorem vector.remove_nth_insert_nth Modified src/data/zmod/basic.lean Modified src/dynamics/circle/rotation_number/translation_number.lean 2021-02-28 04:58:12 f153a85 chore(category_theory/*): fix long lines (#6471) ESTIMATED CHANGES Modified src/category_theory/abelian/exact.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/abelian/pseudoelements.lean Modified src/category_theory/adjunction/limits.lean +/- def category_theory.adjunction.functoriality_unit Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/comma.lean Modified src/category_theory/concrete_category/unbundled_hom.lean Modified src/category_theory/conj.lean Modified src/category_theory/const.lean Modified src/category_theory/filtered.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/functorial.lean Modified src/category_theory/graded_object.lean +/- theorem category_theory.graded_object.comap_eq_symm Modified src/category_theory/limits/cofinal.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/functor_category.lean +/- def category_theory.limits.evaluate_combined_cocones Modified src/category_theory/limits/pi.lean +/- def category_theory.pi.cocone_of_cocone_eval_is_colimit Modified src/category_theory/limits/shapes/finite_products.lean +/- theorem category_theory.limits.has_finite_coproducts_of_has_finite_colimits Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/regular_mono.lean +/- def category_theory.regular_of_is_pushout_fst_of_regular +/- def category_theory.regular_of_is_pushout_snd_of_regular Modified src/category_theory/limits/shapes/types.lean +/- theorem category_theory.limits.types.pi_lift_π_apply Modified src/category_theory/limits/shapes/wide_pullbacks.lean +/- def category_theory.limits.wide_pullback_shape.wide_cospan Modified src/category_theory/limits/types.lean +/- theorem category_theory.limits.types.is_limit_equiv_sections_apply +/- theorem category_theory.limits.types.is_limit_equiv_sections_symm_apply +/- theorem category_theory.limits.types.limit.π_mk Modified src/category_theory/monad/limits.lean +/- theorem category_theory.monad.has_limit_of_comp_forget_has_limit Modified src/category_theory/monoidal/CommMon_.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/functorial.lean Modified src/category_theory/monoidal/internal/functor_category.lean Modified src/category_theory/monoidal/natural_transformation.lean +/- theorem category_theory.monoidal_nat_iso.of_components.hom_app +/- theorem category_theory.monoidal_nat_iso.of_components.inv_app Modified src/category_theory/monoidal/of_chosen_finite_products.lean Modified src/category_theory/monoidal/of_has_finite_products.lean +/- def category_theory.monoidal_of_has_finite_coproducts +/- def category_theory.monoidal_of_has_finite_products Modified src/category_theory/natural_transformation.lean Modified src/category_theory/over.lean +/- def category_theory.over.iso_mk Modified src/category_theory/products/basic.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/sums/associator.lean +/- theorem category_theory.sum.inverse_associator_obj_inl +/- theorem category_theory.sum.inverse_associator_obj_inr_inl +/- theorem category_theory.sum.inverse_associator_obj_inr_inr Modified src/category_theory/whiskering.lean 2021-02-28 04:58:11 c7a2d67 refactor(analysis/calculus/specific_functions): add params to `smooth_bump_function` (#6467) In the construction of a partition of unity we need a smooth bump function that vanishes outside of `ball x R` and equals one on `closed_ball x r` with arbitrary `0 < r < R`. ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean +/- theorem smooth_bump_function.eventually_eq_one + theorem smooth_bump_function.eventually_eq_one_of_mem_ball - theorem smooth_bump_function.eventually_eq_one_of_norm_lt_one +/- theorem smooth_bump_function.le_one + theorem smooth_bump_function.lt_one_of_lt_dist - theorem smooth_bump_function.lt_one_of_one_lt_norm +/- theorem smooth_bump_function.nonneg + theorem smooth_bump_function.one_of_mem_closed_ball - theorem smooth_bump_function.one_of_norm_le_one + theorem smooth_bump_function.pos_of_mem_ball - theorem smooth_bump_function.pos_of_norm_lt_two +/- theorem smooth_bump_function.support_eq + theorem smooth_bump_function.zero_of_le_dist - theorem smooth_bump_function.zero_of_two_le_norm +/- def smooth_bump_function Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.map_nhds_eq + theorem continuous_linear_equiv.symm_map_nhds_eq Modified src/topology/homeomorph.lean + theorem homeomorph.symm_map_nhds_eq Modified src/topology/subset_properties.lean 2021-02-28 04:58:10 cc3e2c7 feat(linear_algebra/basic): f x ∈ submodule.span R (f '' s) (#6453) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.apply_mem_span_image_of_mem_span + theorem submodule.not_mem_span_of_apply_not_mem_span_image 2021-02-28 01:58:42 ee1947d chore(scripts): update nolints.txt (#6468) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-28 01:58:42 5b18369 feat(ring_theory/power_series): coeff multiplication lemmas (#6462) Some lemmas used in combinatorics, from #4259. ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.coeff_mul_of_lt_order + theorem power_series.coeff_mul_one_sub_of_lt_order + theorem power_series.coeff_mul_prod_one_sub_of_lt_order 2021-02-28 01:58:41 11f1801 feat(linear_algebra/quadratic_form): add associated_eq_self_apply (#6458) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.associated_eq_self_apply 2021-02-28 01:58:40 9668bdd feat(algebra/category/Mon/adjunctions): adjoin_unit adjunction from Semigroup (#6440) This PR provides the adjoin_unit-forgetful adjunction between `Semigroup` and `Mon` and additionally the second to last module doc in algebra, namely `algebra.group.with_one`. ESTIMATED CHANGES Added src/algebra/category/Mon/adjunctions.lean + def adjoin_one + def adjoin_one_adj Modified src/algebra/category/Semigroup/basic.lean Modified src/algebra/group/with_one.lean + theorem with_one.map_comp + theorem with_one.map_id 2021-02-27 23:21:06 09d572d feat(algebra/big_operators): additive versions of multiset lemmas (#6463) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.sum_multiset_count + theorem finset.sum_multiset_map_count 2021-02-27 19:21:16 aa0b274 chore(*): split lines and move module doc `measure_theory/category/Meas` (#6459) ESTIMATED CHANGES Modified src/deprecated/subgroup.lean Modified src/deprecated/subring.lean Modified src/field_theory/chevalley_warning.lean Modified src/field_theory/finite/basic.lean +/- theorem finite_field.card_image_polynomial_eval Modified src/field_theory/fixed.lean Modified src/field_theory/intermediate_field.lean Modified src/field_theory/primitive_element.lean Modified src/field_theory/splitting_field.lean +/- theorem polynomial.factor_dvd_of_nat_degree_ne_zero Modified src/field_theory/subfield.lean Modified src/measure_theory/category/Meas.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/principal_ideal_domain.lean 2021-02-27 19:21:15 d1b7a67 feat(ring_theory/power_series/basic): coeff_zero_X_mul (#6445) ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem mv_power_series.coeff_zero_X_mul + theorem power_series.coeff_zero_X_mul 2021-02-27 16:06:18 a19af60 feat(data/option): add `option.forall` and `option.exists` (#6419) ESTIMATED CHANGES Modified src/data/option/basic.lean Modified src/data/seq/wseq.lean 2021-02-27 12:58:12 4b02853 feat(tactic/apply_fun): work on the goal as well (#6439) Extend the functionality of `apply_fun`, to "apply" functions to inequalities in the goal, as well. ``` Apply a function to an equality or inequality in either a local hypothesis or the goal. * If we have `h : a = b`, then `apply_fun f at h` will replace this with `h : f a = f b`. * If we have `h : a ≤ b`, then `apply_fun f at h` will replace this with `h : f a ≤ f b`, and create a subsidiary goal `monotone f`. `apply_fun` will automatically attempt to discharge this subsidiary goal using `mono`, or an explicit solution can be provided with `apply_fun f at h using P`, where `P : monotone f`. * If the goal is `a ≠ b`, `apply_fun f` will replace this with `f a ≠ f b`. * If the goal is `a = b`, `apply_fun f` will replace this with `f a = f b`, and create a subsidiary goal `injective f`. `apply_fun` will automatically attempt to discharge this subsidiary goal using local hypotheses, or if `f` is actually an `equiv`, or an explicit solution can be provided with `apply_fun f using P`, where `P : injective f`. * If the goal is `a ≤ b` (or similarly for `a < b`), and `f` is actually an `order_iso`, `apply_fun f` will replace the goal with `f a ≤ f b`. If `f` is anything else (e.g. just a function, or an `equiv`), `apply_fun` will fail. ``` ESTIMATED CHANGES Modified src/logic/basic.lean + theorem ne_of_apply_ne Modified src/tactic/apply_fun.lean Modified test/apply_fun.lean 2021-02-27 09:13:13 7256361 chore(data/nat/choose): fix namespace of theorems (#6451) ESTIMATED CHANGES Modified src/data/nat/choose/dvd.lean + theorem nat.choose_eq_factorial_div_factorial' + theorem nat.choose_mul - theorem nat.prime.choose_eq_factorial_div_factorial' - theorem nat.prime.choose_mul 2021-02-27 09:13:12 5f68d0e feat(ring_theory/power_series/basic): rescale_inj (#6446) Authored-by Ashvni Narayanan ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.rescale_injective 2021-02-27 09:13:11 f33418a feat(algebra/homology/chain_complex): pushforward of complex w.r.t. additive functor (#6403) This PR adds a definition for the pushforward of a homological complex with respect to an additive functor. ESTIMATED CHANGES Modified src/algebra/homology/chain_complex.lean + def category_theory.functor.map_homological_complex + def category_theory.functor.pushforward_homological_complex 2021-02-27 06:20:12 7ce01bb feat(category_theory/skeletal): skeleton of a general category (#6443) Construct the skeleton of a category using choice. ESTIMATED CHANGES Modified src/category_theory/skeletal.lean + def category_theory.skeleton 2021-02-27 01:15:38 1af882b chore(scripts): update nolints.txt (#6449) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-26 23:38:23 d38b5a5 feat(category_theory/monoidal): construct the monoidal inverse to a functor (#6442) I worked out what was mentioned here: https://github.com/leanprover-community/mathlib/blob/20b49fbd453fc42c91c36ee30ecb512d70f48172/src/category_theory/monoidal/transport.lean#L283-L287 except for uniqueness, not sure how important that is ESTIMATED CHANGES Modified src/category_theory/monoidal/functor.lean + def category_theory.monoidal_adjoint + def category_theory.monoidal_inverse + theorem category_theory.monoidal_inverse_to_functor 2021-02-26 21:29:04 a225e12 feat(linear_algebra/basic): add is_scalar_tower instance for hom type (#6331) This instance tells Lean that if R is an S-algebra with R and S both commutative semirings, then the R-action on Hom_R(M,N) is compatible with the S-action. `linear_map.is_scalar_tower_extend_scalars` is just a special case of this new instance with the `smul_comm_class` arguments populated with `is_scalar_tower.to_smul_comm_class` and `smul_comm_class_self`, so has been removed. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/linear_algebra/basic.lean 2021-02-26 20:32:43 407615e feat(algebra/lie/solvable): images of solvable Lie algebras are solvable (#6413) Summary of changes: New definition: - `lie_hom.range_restrict` New lemmas: - `lie_ideal.derived_series_map_eq` - `function.surjective.lie_algebra_is_solvable` - `lie_algebra.solvable_iff_equiv_solvable` - `lie_hom.is_solvable_range` - `lie_hom.mem_range_self` - `lie_hom.range_restrict_apply` - `lie_hom.surjective_range_restrict` Renamed lemmas: - `lie_algebra.is_solvable_of_injective` → `function.injective.lie_algebra_is_solvable` - `lie_ideal.derived_series_map_le_derived_series` → `lie_ideal.derived_series_map_le` ESTIMATED CHANGES Modified src/algebra/lie/solvable.lean + theorem function.injective.lie_algebra_is_solvable + theorem function.surjective.lie_algebra_is_solvable - theorem lie_algebra.is_solvable_of_injective + theorem lie_algebra.solvable_iff_equiv_solvable + theorem lie_hom.is_solvable_range + theorem lie_ideal.derived_series_map_eq + theorem lie_ideal.derived_series_map_le - theorem lie_ideal.derived_series_map_le_derived_series Modified src/algebra/lie/subalgebra.lean + theorem lie_hom.mem_range_self + def lie_hom.range_restrict + theorem lie_hom.range_restrict_apply + theorem lie_hom.surjective_range_restrict 2021-02-26 19:47:44 ddefd96 feat(category_theory/subobject): kernels and images as subobjects (#6301) Further work on subobjects, building on the initial definition in #6278. * Add noncomputable functions to obtain representatives of subobjects. * Realise kernel/equalizer/image as subobjects. ESTIMATED CHANGES Modified src/category_theory/subobject.lean + def category_theory.limits.equalizer_subobject + theorem category_theory.limits.equalizer_subobject_arrow' + theorem category_theory.limits.equalizer_subobject_arrow + theorem category_theory.limits.equalizer_subobject_arrow_comp + def category_theory.limits.equalizer_subobject_iso + def category_theory.limits.factor_thru_image_subobject + def category_theory.limits.image_subobject + theorem category_theory.limits.image_subobject_arrow' + theorem category_theory.limits.image_subobject_arrow + theorem category_theory.limits.image_subobject_arrow_comp + def category_theory.limits.image_subobject_iso + def category_theory.limits.kernel_subobject + theorem category_theory.limits.kernel_subobject_arrow' + theorem category_theory.limits.kernel_subobject_arrow + theorem category_theory.limits.kernel_subobject_arrow_comp + def category_theory.limits.kernel_subobject_iso +/- theorem category_theory.mono_over.bot_left +/- theorem category_theory.mono_over.forget_obj_left + def category_theory.mono_over.image_mono_over +/- theorem category_theory.mono_over.top_left + def category_theory.subobject.arrow + def category_theory.subobject.representative + def category_theory.subobject.representative_iso + def category_theory.subobject.underlying + theorem category_theory.subobject.underlying_arrow + theorem category_theory.subobject.underlying_as_coe + def category_theory.subobject.underlying_iso 2021-02-26 15:56:35 11e1cc3 feat(data/equiv/basic): Add `fin_succ_above_equiv` (#5145) ESTIMATED CHANGES Modified src/data/equiv/fin.lean + def fin_succ_equiv' + theorem fin_succ_equiv'_above + theorem fin_succ_equiv'_at + theorem fin_succ_equiv'_below + theorem fin_succ_equiv'_symm_none + theorem fin_succ_equiv'_zero +/- def fin_succ_equiv + theorem fin_succ_equiv_symm'_coe_above + theorem fin_succ_equiv_symm'_coe_below + theorem fin_succ_equiv_symm'_some_above + theorem fin_succ_equiv_symm'_some_below + theorem fin_succ_equiv_symm_coe Modified src/data/fin.lean +/- theorem fin.cast_succ_pos + theorem fin.pred_above_above + theorem fin.pred_above_below + theorem fin.pred_above_last + theorem fin.pred_above_last_apply + theorem fin.pred_cast_succ_succ Modified src/data/mv_polynomial/equiv.lean Modified src/linear_algebra/linear_independent.lean 2021-02-26 13:13:36 20b49fb feat(linear_algebra/tensor_product): allow different semirings in linear_map.flip (#6414) This also means the `map_*₂` lemmas are more generally applicable to linear_maps over different rings, such as `linear_map.prod_equiv.to_linear_map`. To avoid breakage, this leaves `mk₂ R` for when R is commutative, and introduces `mk₂' R S` for when two different rings are wanted. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean +/- theorem linear_map.ext₂ +/- def linear_map.flip +/- theorem linear_map.flip_apply +/- theorem linear_map.flip_inj +/- def linear_map.lflip +/- theorem linear_map.map_add₂ +/- theorem linear_map.map_neg₂ +/- theorem linear_map.map_smul₂ +/- theorem linear_map.map_sub₂ +/- theorem linear_map.map_zero₂ + def linear_map.mk₂' + theorem linear_map.mk₂'_apply 2021-02-26 13:13:35 47b62ea feat(algebra/big_operators): add lemmas about `sum` and `pi.single` (#6390) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.sum_pi_single' + theorem finset.sum_pi_single Modified src/algebra/big_operators/pi.lean +/- theorem ring_hom.functions_ext Modified src/algebra/module/linear_map.lean + theorem linear_map.ext_ring_iff Modified src/algebra/module/pi.lean +/- theorem pi.single_smul' +/- theorem pi.single_smul Modified src/linear_algebra/pi.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_pi' +/- theorem continuous_linear_map.coe_pi 2021-02-26 10:06:30 aeda3fb feat(topology/instances/real, topology/metric_space/basic, algebra/floor): integers are a proper space (#6437) The metric space `ℤ` is a proper space. Also, under the coercion from `ℤ` to `ℝ`, inverse images of compact sets are finite. The key point for both facts is to express the inverse image of an `ℝ`-interval under the coercion as an appropriate `ℤ`-interval, using floor or ceiling of the endpoints -- I provide these facts as simp-lemmas. Indirectly related discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Finiteness.20of.20balls.20in.20the.20integers ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem int.preimage_Icc + theorem int.preimage_Ici + theorem int.preimage_Ico + theorem int.preimage_Iic + theorem int.preimage_Iio + theorem int.preimage_Ioc + theorem int.preimage_Ioi + theorem int.preimage_Ioo Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean + theorem int.tendsto_coe_cofinite 2021-02-26 10:06:29 ff5fa52 chore(data/finsupp/basic): add coe_{neg,sub,smul} lemmas to match coe_{zero,add,fn_sum} (#6350) This also: * merges together `smul_apply'` and `smul_apply`, since the latter is just a special case of the former. * changes the implicitness of arguments to all of the `finsupp.*_apply` lemmas so that all the variables and none of the types are explicit The whitespace style here matches how `coe_add` is spaced. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean Modified src/data/finsupp/basic.lean +/- theorem finsupp.add_apply +/- def finsupp.apply_add_hom + theorem finsupp.coe_nat_sub + theorem finsupp.coe_neg + theorem finsupp.coe_smul + theorem finsupp.coe_sub +/- theorem finsupp.nat_sub_apply +/- theorem finsupp.neg_apply - theorem finsupp.smul_apply' +/- theorem finsupp.smul_apply +/- theorem finsupp.sub_apply Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/comm_ring.lean Modified src/data/polynomial/coeff.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dual.lean +/- def is_basis.coord_fun - def is_basis.eval_finsupp_at 2021-02-26 10:06:28 dd5363b feat(algebraic_topology): introduce the simplex category (#6173) * introduce `simplex_category`, with objects `nat` and morphisms `n ⟶ m` order-preserving maps from `fin (n+1)` to `fin (m+1)`. * prove the simplicial identities * show the category is equivalent to `NonemptyFinLinOrd` This is the start of simplicial sets, moving and completing some of the material from @jcommelin's `sset` branch. Dold-Kan is the obvious objective; apparently we're going to need it for `lean-liquid` at some point. The proofs of the simplicial identities are bad and slow. They involve extravagant use of nonterminal simp (`simp?` doesn't seem to give good answers) and lots of `linarith` bashing. Help welcome, especially if you love playing with inequalities in `nat` involving lots of `-1`s. ESTIMATED CHANGES Added src/algebraic_topology/simplex_category.lean + theorem simplex_category.comp_apply + theorem simplex_category.id_apply + def simplex_category.is_skeleton_of + def simplex_category.mk + theorem simplex_category.skeletal + def simplex_category.skeletal_functor + def simplex_category.δ + theorem simplex_category.δ_comp_δ + theorem simplex_category.δ_comp_δ_self + theorem simplex_category.δ_comp_σ_of_gt + theorem simplex_category.δ_comp_σ_of_le + theorem simplex_category.δ_comp_σ_self + theorem simplex_category.δ_comp_σ_succ + def simplex_category.σ + theorem simplex_category.σ_comp_σ + def simplex_category Modified src/data/fin.lean + theorem fin.pred_mk 2021-02-26 07:13:25 2f1de3f feat(polynomial/eval): lemmas relating eval/map on numerals (#6438) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.eval_int_cast_map + theorem polynomial.eval_nat_cast_map + theorem polynomial.eval_one_map + theorem polynomial.eval_zero_map 2021-02-26 07:13:24 300e81d feat(analysis/complex/basic): complex conjugation is a linear isometry (#6436) Complex conjugation is a linear isometry (and various corollaries, eg it is a continuous linear map). Also rewrite the results that `re` and `im` are continuous linear maps, to deduce from explicit bounds rather than passing through `linear_map.continuous_of_finite_dimensional`. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.continuous_conj + def complex.continuous_linear_map.conj + theorem complex.continuous_linear_map.conj_apply + theorem complex.continuous_linear_map.conj_coe + theorem complex.continuous_linear_map.conj_norm +/- def complex.continuous_linear_map.im +/- def complex.continuous_linear_map.re + theorem complex.isometry_conj + def complex.linear_isometry.conj Modified src/data/complex/module.lean + theorem complex.linear_map.coe_conj + def complex.linear_map.conj 2021-02-26 07:13:23 274042d feat(data/polynomial): basic lemmas (#6434) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.coeff_monomial_succ Modified src/data/polynomial/coeff.lean + theorem polynomial.int_cast_coeff_zero + theorem polynomial.int_cast_inj + theorem polynomial.nat_cast_coeff_zero + theorem polynomial.nat_cast_inj 2021-02-26 07:13:22 cca22d7 feat(data/polynomial/degree/trailing_degree): Trailing degree of multiplication by X^n (#6425) A lemma about the trailing degree of a shifted polynomial. (this PR is part of the irreducibility saga) ESTIMATED CHANGES Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.nat_trailing_degree_mul_X_pow 2021-02-26 07:13:21 24ed74a feat(algebra/category/Semigroup/basic): categories of magmas and semigroups (#6387) This PR introduces the category of magmas and the category of semigroups, together with their additive versions. ESTIMATED CHANGES Modified src/algebra/category/Mon/basic.lean - theorem mul_equiv.to_CommMon_iso_hom - theorem mul_equiv.to_CommMon_iso_inv - theorem mul_equiv.to_Mon_iso_hom - theorem mul_equiv.to_Mon_iso_inv Added src/algebra/category/Semigroup/basic.lean + theorem Magma.coe_of + def Magma.of + def Magma + theorem Semigroup.coe_of + def Semigroup.of + def Semigroup + def category_theory.iso.Magma_iso_to_mul_equiv + def category_theory.iso.Semigroup_iso_to_mul_equiv + def mul_equiv.to_Magma_iso + def mul_equiv.to_Semigroup_iso + def mul_equiv_iso_Magma_iso + def mul_equiv_iso_Semigroup_iso Added src/algebra/pempty_instances.lean 2021-02-26 07:13:20 aafa5fe feat(ring_theory/flat): definition of flat module (#6284) ESTIMATED CHANGES Added src/ring_theory/flat.lean + def module.flat 2021-02-26 07:13:19 d451876 doc(data/finset/basic): rewrite finset module doc (#5893) ESTIMATED CHANGES Modified src/data/finset/basic.lean 2021-02-26 04:07:32 07d6d3f feat(algebra/algebra/basic): smul_mul_smul (#6423) An identity for algebras. (this PR is part of the irreducibility saga) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.smul_mul_smul 2021-02-26 04:07:31 0035e2d chore(*): upgrade to Lean 3.27.0c (#6411) ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/opposites.lean Modified src/computability/language.lean Modified src/computability/regular_expressions.lean Modified src/computability/tm_computable.lean Modified src/data/polynomial/degree/definitions.lean Modified src/linear_algebra/dual.lean Modified src/tactic/split_ifs.lean Modified src/tactic/unfold_cases.lean Modified src/topology/locally_constant/basic.lean Modified src/topology/omega_complete_partial_order.lean Modified test/qpf.lean 2021-02-26 04:07:31 5fbebf6 fix(logic/{function}/basic): remove simp lemmas `function.injective.eq_iff` and `imp_iff_right` (#6402) * `imp_iff_right` is a conditional simp lemma that matches a lot and should never successfully rewrite. * `function.injective.eq_iff` is a conditional simp lemma that matches a lot and is rarely used. Since you almost always need to give the proof `hf : function.injective f` as an argument to `simp`, you can replace it with `hf.eq_iff`. ESTIMATED CHANGES Modified src/analysis/hofer.lean Modified src/analysis/normed_space/inner_product.lean Modified src/combinatorics/colex.lean Modified src/combinatorics/hall.lean Modified src/data/equiv/basic.lean Modified src/linear_algebra/basis.lean Modified src/logic/basic.lean +/- theorem imp_iff_right Modified src/logic/function/basic.lean +/- theorem function.injective.eq_iff Modified src/order/rel_iso.lean 2021-02-26 03:21:37 0938880 chore(scripts): update nolints.txt (#6432) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-26 00:42:52 521b821 feat(data/polynomial/basic): monomial_left_inj (#6430) A version of `finsupp.single_left_inj` for monomials, so that it works with `rw.` (this PR is part of the irreducibility saga) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.monomial_left_inj 2021-02-26 00:42:51 84ca016 feat(data/polynomial/coeff): Alternate form of coeff_mul_X_pow (#6424) An `ite`-version of `coeff_mul_X_pow` that sometimes works better with `rw`. (this PR is part of the irreducibility saga) ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_mul_X_pow' 2021-02-26 00:42:50 49d2191 feat(data/polynomial/basic): monomial_neg (#6422) The monomial of a negation is the negation of the monomial. (this PR is part of the irreducibility saga) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.monomial_neg 2021-02-26 00:42:49 f34fa5f feat(algebra/algebra/subalgebra): use opt_param for redundant axioms (#6417) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean 2021-02-26 00:42:48 9d5088a feat(linear_algebra/pi): add `linear_equiv.pi` (#6415) ESTIMATED CHANGES Modified src/linear_algebra/pi.lean + def linear_equiv.pi 2021-02-26 00:42:47 61028ed chore(number_theory/bernoulli): use factorial notation (#6412) ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean 2021-02-26 00:42:46 2755939 feat(data/pnat/basic): add induction principle (#6410) An induction principle for `pnat`. The proof is by Mario Carneiro. If there are mistakes, I introduced them! Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics/topic/torsion.20free/near/227748865 ESTIMATED CHANGES Modified src/data/pnat/basic.lean + def pnat.rec_on + theorem pnat.rec_on_one + theorem pnat.rec_on_succ 2021-02-26 00:42:45 6ed8b4b feat(linear_algebra/finite_dimensional): lemmas for zero dimensional vector spaces (#6397) ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem dim_zero_iff + theorem is_basis_of_dim_eq_zero' + theorem is_basis_of_dim_eq_zero Modified src/linear_algebra/finite_dimensional.lean + theorem findim_zero_iff_forall_zero + theorem finite_dimensional.findim_zero_iff + theorem finite_dimensional.findim_zero_of_subsingleton + theorem is_basis_of_findim_zero' + theorem is_basis_of_findim_zero 2021-02-25 21:38:34 d496676 feat(geometry/manifold): manifold modelled on locally compact vector space is locally compact (#6394) Also connect `locally_compact_space` to `filter.has_basis`. ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + theorem charted_space.locally_compact - def charted_space_core.local_homeomorph + theorem mem_chart_target Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem model_with_corners.locally_compact Modified src/order/filter/bases.lean Modified src/topology/constructions.lean + theorem filter.has_basis.prod_nhds' Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.symm_map_nhds_eq Modified src/topology/metric_space/basic.lean Modified src/topology/subset_properties.lean + theorem compact_basis_nhds + theorem locally_compact_space_of_has_basis Modified src/topology/uniform_space/basic.lean 2021-02-25 21:38:33 8770f5c refactor(topology/subset_properties): more properties of `compact_covering` (#6328) Modify the definition of `compact_covering α n` to ensure that it is monotone in `n`. Also, in a locally compact space, prove the existence of a compact exhaustion, i.e. a sequence which satisfies the properties for `compact_covering` and in which, moreover, the interior of the next set includes the previous set. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.find_comp_succ Modified src/topology/subset_properties.lean + theorem compact_accumulate + theorem compact_covering_subset + theorem compact_exhaustion.Union_eq + theorem compact_exhaustion.exists_mem + theorem compact_exhaustion.find_shiftr + theorem compact_exhaustion.mem_diff_shiftr_find + theorem compact_exhaustion.mem_find + theorem compact_exhaustion.mem_iff_find_le + def compact_exhaustion.shiftr + theorem compact_exhaustion.subset_interior + theorem compact_exhaustion.subset_interior_succ + theorem compact_exhaustion.subset_succ + structure compact_exhaustion + theorem is_compact.elim_directed_cover 2021-02-25 15:43:34 85b5d5c refactor(logic/basic): turn *_prop_of_* into congr lemma (#6406) Alternative solution to the exists part of #6404. ESTIMATED CHANGES Modified src/category_theory/filtered.lean Modified src/combinatorics/composition.lean Modified src/data/multiset/pi.lean Modified src/data/nat/basic.lean Modified src/data/set/intervals/basic.lean Modified src/data/vector2.lean Modified src/logic/basic.lean + theorem exists_false_left + theorem exists_prop_congr' + theorem exists_prop_congr +/- theorem exists_prop_of_false +/- theorem exists_prop_of_true + theorem exists_true_left + theorem forall_false_left + theorem forall_prop_congr' + theorem forall_prop_congr +/- theorem forall_prop_of_false +/- theorem forall_prop_of_true + theorem forall_true_left Modified src/measure_theory/outer_measure.lean Modified src/testing/slim_check/gen.lean 2021-02-25 09:50:19 e3ae6cd feat(data/equiv/basic): lemmas about images and preimages (#6398) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.eq_preimage_iff_image_eq + theorem equiv.image_eq_iff_eq + theorem equiv.image_subset + theorem equiv.preimage_eq_iff_eq_image + theorem equiv.preimage_subset + theorem equiv.preimage_symm_preimage + theorem equiv.symm_preimage_preimage Modified src/data/set/basic.lean + theorem set.eq_preimage_iff_image_eq + theorem set.preimage_eq_iff_eq_image 2021-02-25 07:29:30 56f2c05 chore(algebra/regular): rename lemma is_regular_of_cancel_monoid_with_zero to is_regular_of_ne_zero (#6408) Change the name of lemma is_regular_of_cancel_monoid_with_zero to the shorter is_regular_of_ne_zero. Zulip reference: https://leanprover.zulipchat.com/#narrow/stream/267928-condensed-mathematics ESTIMATED CHANGES Modified src/algebra/regular.lean - theorem is_regular_of_cancel_monoid_with_zero + theorem is_regular_of_ne_zero 2021-02-25 04:10:42 4b6680a chore(scripts): update nolints.txt (#6407) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-25 04:10:41 caed841 feat(order/complete_lattice): add complete_lattice.independent.disjoint{_Sup,} (#6405) ESTIMATED CHANGES Modified src/order/compactly_generated.lean Modified src/order/complete_lattice.lean + theorem Inf_sup_le_infi_sup + theorem complete_lattice.independent.disjoint + theorem complete_lattice.independent.disjoint_Sup +/- theorem complete_lattice.independent.mono +/- def complete_lattice.independent +/- theorem complete_lattice.independent_empty + theorem disjoint_Sup_left + theorem disjoint_Sup_right + theorem supr_inf_le_Sup_inf Modified src/order/omega_complete_partial_order.lean 2021-02-25 04:10:40 9d748f0 feat(data/finset/basic): mem_map_equiv (#6399) This adds a version of `mem_map` specialized to equivs, which has a better simp-nf. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem equiv.finset_congr_refl + theorem equiv.finset_congr_symm - theorem equiv.finset_congr_symm_apply + theorem equiv.finset_congr_trans + theorem finset.mem_map_equiv Modified src/ring_theory/polynomial/symmetric.lean 2021-02-25 04:10:39 eba9be5 feat(ring_theory/power_series/basic): remove const coeff (#6383) This shows that we can factor out X when the constant coefficient is removed from a power series. ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.eq_X_mul_shift_add_const + theorem power_series.eq_shift_mul_X_add_const + theorem power_series.sub_const_eq_X_mul_shift + theorem power_series.sub_const_eq_shift_mul_X 2021-02-25 04:10:38 a31d06a feat(data/zmod/basic): Explicitly state computable right_inverses instead of just surjectivity (#5797) ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.int_cast_right_inverse + theorem zmod.nat_cast_right_inverse + theorem zmod.ring_hom_right_inverse +/- theorem zmod.ring_hom_surjective 2021-02-25 00:30:10 a518fb8 feat(data/list/basic): take_init, take_eq_nil (#6380) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.init_eq_take + theorem list.init_take + theorem list.take_eq_nil_iff 2021-02-24 22:06:41 e66e136 feat(data/mv_polynomial/basic): add two equivs (#6324) Two small lemma about `mv_polynomial` as `R`-algebra. ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean + def mv_polynomial.alg_equiv_congr + def mv_polynomial.alg_equiv_congr_left + def mv_polynomial.alg_equiv_congr_right - def mv_polynomial.alg_equiv_of_equiv + def mv_polynomial.sum_alg_equiv Modified src/ring_theory/finiteness.lean 2021-02-24 21:08:03 ead4731 feat(geometry/manifold): `model_with_corners` is a `closed_embedding` (#6393) ESTIMATED CHANGES Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem model_with_corners.closed_range + theorem model_with_corners.image_mem_nhds_within - theorem model_with_corners.left_inv' + theorem model_with_corners.map_nhds_eq + theorem model_with_corners.symm_comp_self + theorem model_with_corners.symm_map_nhds_within_range - theorem model_with_corners.target + theorem model_with_corners.target_eq Modified src/geometry/manifold/times_cont_mdiff.lean 2021-02-24 21:08:02 27b6110 feat(algebra/lie/cartan_subalgebra): define Cartan subalgebras (#6385) We do this via the normalizer of a Lie subalgebra, which is also defined here. ESTIMATED CHANGES Added src/algebra/lie/cartan_subalgebra.lean + theorem lie_ideal.normalizer_eq_top + theorem lie_subalgebra.ideal_in_normalizer + theorem lie_subalgebra.le_normalizer + theorem lie_subalgebra.le_normalizer_of_ideal + theorem lie_subalgebra.mem_normalizer_iff + def lie_subalgebra.normalizer Modified src/algebra/lie/semisimple.lean Modified src/algebra/lie/solvable.lean Modified src/algebra/lie/submodule.lean - def lie_algebra.top_equiv_self - theorem lie_algebra.top_equiv_self_apply + def lie_ideal.top_equiv_self + theorem lie_ideal.top_equiv_self_apply + def lie_subalgebra.top_equiv_self + theorem lie_subalgebra.top_equiv_self_apply 2021-02-24 17:52:02 25ea499 feat(data/multiset/basic): subsingleton_equiv_apply' (#6400) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.coe_subsingleton_equiv 2021-02-24 17:52:00 6271fe5 fix(tactic/delta_instance): beta reduce type of instance (#6396) The delta derive handler was creating instances that weren't beta reduced, which isn't a problem for type class inference but can be unexpected. @gebner fixed the line in doc-gen that assumed beta reduction, but we should also produce the expected instance in the first place. Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/doc-gen.20is.20failing ESTIMATED CHANGES Modified src/tactic/delta_instance.lean 2021-02-24 15:23:35 3d9e790 fix(topology/metric_space/cau_seq_filter): remove non-terminal simp (#6401) ESTIMATED CHANGES Modified src/topology/metric_space/cau_seq_filter.lean 2021-02-24 11:31:20 12afc98 chore(data/matrix/basic): instances for unique, subsing, nontriv, coe (#6296) This adds a coercion to the underlying scalar if the matrix is 1 x 1. ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2021-02-24 09:53:02 85636f9 feat(data/complex|matrix): instances of star_ordered_ring and star_ordered_algebra (#4686) ESTIMATED CHANGES Modified src/analysis/quaternion.lean - theorem quaternion.coe_complex_smul + theorem quaternion.coe_real_complex_mul Modified src/data/complex/basic.lean + def complex.complex_star_ordered_ring Modified src/data/complex/module.lean + theorem complex.complex_ordered_semimodule - theorem complex.im_smul - theorem complex.re_smul + theorem complex.smul_coe Modified src/data/real/basic.lean 2021-02-24 06:44:15 196c2a8 feat(topology/separation): a cont. function with a cont. left inverse is a closed embedding (#6329) ESTIMATED CHANGES Modified src/topology/continuous_on.lean +/- theorem tendsto_nhds_within_of_tendsto_nhds_of_eventually_within + theorem tendsto_nhds_within_range Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.image_mem_nhds Modified src/topology/maps.lean Modified src/topology/separation.lean + theorem function.left_inverse.closed_embedding + theorem function.left_inverse.closed_range 2021-02-24 03:38:57 9bad59c chore(scripts): update nolints.txt (#6389) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-24 03:38:56 4a391c9 fix(data/int/basic,category_theory/equivalence): use neg not minus in lemma names (#6384) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/category_theory/equivalence.lean - theorem category_theory.equivalence.pow_minus_one + theorem category_theory.equivalence.pow_neg_one Modified src/data/int/basic.lean - theorem int.add_minus_one + theorem int.add_neg_one Modified src/data/num/lemmas.lean Modified src/group_theory/free_group.lean 2021-02-24 03:38:55 358fdf2 feat(category_theory/abelian/additive_functor): Adds definition of additive functors (#6367) This PR adds the basic definition of an additive functor. See associated [zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Additive.20functors/near/227295322). ESTIMATED CHANGES Added src/category_theory/abelian/additive_functor.lean + theorem category_theory.functor.additive.map_neg + theorem category_theory.functor.additive.map_sub + theorem category_theory.functor.coe_map_add_hom + def category_theory.functor.map_add_hom 2021-02-24 00:38:48 b4d2ce4 chore(data/equiv/local_equiv,topology/local_homeomorph,data/set/function): review (#6306) ## `data/equiv/local_equiv`: * move `local_equiv.inj_on` lemmas closer to each other, add missing lemmas; * rename `local_equiv.bij_on_source` to `local_equiv.bij_on`; * rename `local_equiv.inv_image_target_eq_souce` to `local_equiv.symm_image_target_eq_souce`; ## `data/set/function` * add `set.inj_on.mem_of_mem_image`, `set.inj_on.mem_image_iff`, `set.inj_on.preimage_image_inter`; * add `set.left_inv_on.image_image'` and `set.left_inv_on.image_image`; * add `function.left_inverse.right_inv_on_range`; * move `set.inj_on.inv_fun_on_image` to golf the proof; ## `topology/local_homeomorph` * add lemmas like `local_homeomorph.inj_on`; * golf the definition of `open_embedding.to_local_homeomorph`, make `f` explicit. ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean - theorem local_equiv.bij_on_source +/- theorem local_equiv.image_source_eq_target - theorem local_equiv.inv_image_target_eq_source + theorem local_equiv.symm_image_target_eq_source Modified src/data/set/function.lean + theorem function.left_inverse.right_inv_on_range + theorem set.inj_on.mem_image_iff + theorem set.inj_on.mem_of_mem_image + theorem set.inj_on.preimage_image_inter + theorem set.left_inv_on.image_image' + theorem set.left_inv_on.image_image Modified src/topology/local_homeomorph.lean +/- theorem local_homeomorph.to_open_embedding - theorem open_embedding.continuous_inv_fun - theorem open_embedding.open_target +/- theorem open_embedding.source +/- theorem open_embedding.target - theorem open_embedding.to_local_equiv_coe - theorem open_embedding.to_local_equiv_source - theorem open_embedding.to_local_equiv_target +/- theorem open_embedding.to_local_homeomorph_coe 2021-02-23 21:11:54 387db0d feat(data/real/sqrt): add continuity attributes (#6388) I add continuity attributes to `continuous_sqrt` and `continuous.sqrt`. ESTIMATED CHANGES Modified src/data/real/sqrt.lean 2021-02-23 21:11:53 8cfada1 doc(measure_theory/interval_integral): move comment (#6386) ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean 2021-02-23 21:11:52 2d51a44 feat(data/list/basic): nth_drop (#6381) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_drop 2021-02-23 21:11:50 63e7535 chore(group_theory/coset): right_coset additions and module doc (#6371) This PR dualises two results from left_coset to right_coset and adds a module doc. ESTIMATED CHANGES Modified src/group_theory/coset.lean - def left_coset_equiv - theorem left_coset_equiv_rel + def left_coset_equivalence + theorem left_coset_equivalence_rel + def quotient_group.right_rel + def right_coset_equivalence + theorem right_coset_equivalence_rel + def subgroup.right_coset_equiv_subgroup 2021-02-23 17:14:41 750d117 feat(logic/basic): subsingleton_iff_forall_eq (#6379) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem subsingleton_iff_forall_eq 2021-02-23 17:14:40 59bf982 feat(algebra/lie/nilpotent): basic facts about nilpotent Lie algebras (#6378) ESTIMATED CHANGES Modified src/algebra/lie/ideal_operations.lean + theorem lie_ideal.map_bracket_eq Modified src/algebra/lie/nilpotent.lean + theorem function.injective.lie_algebra_is_nilpotent + theorem function.surjective.lie_algebra_is_nilpotent + def lie_algebra.is_nilpotent + theorem lie_algebra.nilpotent_iff_equiv_nilpotent + theorem lie_ideal.lower_central_series_map_eq + theorem lie_ideal.lower_central_series_map_le Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.sub_mem Modified src/algebra/lie/submodule.lean + theorem lie_hom.ideal_range_eq_top_of_surjective + theorem lie_hom.is_ideal_morphism_of_surjective + theorem lie_hom.range_coe_submodule + theorem lie_hom.range_eq_top + theorem lie_ideal.coe_map_of_surjective +/- theorem lie_ideal.map_sup_ker_eq_map + theorem lie_ideal.mem_map_of_surjective + theorem lie_ideal.top_coe_lie_subalgebra 2021-02-23 17:14:39 4b22c39 feat(ring_theory/power_series/well_known): sum of power of exponentials (#6368) ESTIMATED CHANGES Modified src/ring_theory/power_series/well_known.lean + theorem power_series.exp_pow_sum 2021-02-23 17:14:38 e3d6cf8 feat(measure_theory/integration): add theorems about the product of independent random variables (#6106) Consider the integral of the product of two random variables. Two random variables are independent if the preimage of all measurable sets are independent variables. Alternatively, if there is a pair of independent measurable spaces (as sigma algebras are independent), then two random variables are independent if they are measurable with respect to them. ESTIMATED CHANGES Modified src/data/indicator_function.lean + theorem set.inter_indicator_mul Modified src/probability_theory/independence.lean +/- def probability_theory.indep_set Added src/probability_theory/integration.lean + theorem probability_theory.lintegral_mul_eq_lintegral_mul_lintegral_of_indep_fun + theorem probability_theory.lintegral_mul_eq_lintegral_mul_lintegral_of_independent_measurable_space + theorem probability_theory.lintegral_mul_indicator_eq_lintegral_mul_lintegral_indicator 2021-02-23 14:09:45 f84f5b2 feat(category_theory/subobject): the semilattice_inf/sup of subobjects (#6278) # The lattice of subobjects We define `subobject X` as the quotient (by isomorphisms) of `mono_over X := {f : over X // mono f.hom}`. Here `mono_over X` is a thin category (a pair of objects has at most one morphism between them), so we can think of it as a preorder. However as it is not skeletal, it is not a partial order. We provide * `def pullback [has_pullbacks C] (f : X ⟶ Y) : subobject Y ⥤ subobject X` * `def map (f : X ⟶ Y) [mono f] : subobject X ⥤ subobject Y` * `def «exists» [has_images C] (f : X ⟶ Y) : subobject X ⥤ subobject Y` (each first at the level of `mono_over`), and prove their basic properties and relationships. We also provide the `semilattice_inf_top (subobject X)` instance when `[has_pullback C]`, and the `semilattice_inf (subobject X)` instance when `[has_images C] [has_finite_coproducts C]`. ## Notes This development originally appeared in Bhavik Mehta's "Topos theory for Lean" repository, and was ported to mathlib by Scott Morrison. ESTIMATED CHANGES Modified src/category_theory/abelian/pseudoelements.lean Modified src/category_theory/functor.lean + theorem category_theory.functor.monotone Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/over.lean + def category_theory.over.map_pullback_adj + def category_theory.over.pullback + def category_theory.over.pullback_comp + def category_theory.over.pullback_id + def category_theory.under.pushout Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.over.coprod + def category_theory.over.coprod_obj Modified src/category_theory/limits/shapes/pullbacks.lean +/- theorem category_theory.limits.pullback_cone.mono_of_is_limit_mk_id_id Modified src/category_theory/over.lean +/- theorem category_theory.under.w Modified src/category_theory/skeletal.lean +/- theorem category_theory.thin_skeleton.comp_to_thin_skeleton + def category_theory.thin_skeleton.lower_adjunction Added src/category_theory/subobject.lean + def category_theory.mono_over.arrow + theorem category_theory.mono_over.bot_arrow + def category_theory.mono_over.bot_le + theorem category_theory.mono_over.bot_left + def category_theory.mono_over.exists_iso_map + def category_theory.mono_over.exists_pullback_adj + def category_theory.mono_over.forget + def category_theory.mono_over.forget_image + theorem category_theory.mono_over.forget_obj_hom + theorem category_theory.mono_over.forget_obj_left + def category_theory.mono_over.hom_mk + def category_theory.mono_over.image + def category_theory.mono_over.image_forget_adj + def category_theory.mono_over.inf + def category_theory.mono_over.inf_le_left + def category_theory.mono_over.inf_le_right + def category_theory.mono_over.iso_mk + def category_theory.mono_over.le_inf + def category_theory.mono_over.le_sup_left + def category_theory.mono_over.le_sup_right + def category_theory.mono_over.le_top + def category_theory.mono_over.lift + theorem category_theory.mono_over.lift_comm + def category_theory.mono_over.lift_comp + def category_theory.mono_over.lift_id + def category_theory.mono_over.lift_iso + def category_theory.mono_over.map + def category_theory.mono_over.map_bot + def category_theory.mono_over.map_comp + def category_theory.mono_over.map_id + def category_theory.mono_over.map_iso + theorem category_theory.mono_over.map_obj_arrow + theorem category_theory.mono_over.map_obj_left + def category_theory.mono_over.map_pullback_adj + def category_theory.mono_over.map_top + def category_theory.mono_over.mk' + theorem category_theory.mono_over.mk'_arrow + def category_theory.mono_over.pullback + def category_theory.mono_over.pullback_comp + def category_theory.mono_over.pullback_id + def category_theory.mono_over.pullback_map_self + theorem category_theory.mono_over.pullback_obj_arrow + theorem category_theory.mono_over.pullback_obj_left + def category_theory.mono_over.pullback_self + def category_theory.mono_over.pullback_top + def category_theory.mono_over.slice + def category_theory.mono_over.sup + def category_theory.mono_over.sup_le + theorem category_theory.mono_over.top_arrow + def category_theory.mono_over.top_le_pullback_self + theorem category_theory.mono_over.top_left + theorem category_theory.mono_over.w + def category_theory.mono_over.«exists» + def category_theory.mono_over + theorem category_theory.subobject.bot_eq_zero + theorem category_theory.subobject.exists_iso_map + def category_theory.subobject.exists_pullback_adj + def category_theory.subobject.functor + def category_theory.subobject.inf + theorem category_theory.subobject.inf_def + theorem category_theory.subobject.inf_eq_map_pullback' + theorem category_theory.subobject.inf_eq_map_pullback + theorem category_theory.subobject.inf_le_left + theorem category_theory.subobject.inf_le_right + theorem category_theory.subobject.inf_map + theorem category_theory.subobject.inf_pullback + theorem category_theory.subobject.le_inf + def category_theory.subobject.lower + def category_theory.subobject.lower_adjunction + theorem category_theory.subobject.lower_comm + def category_theory.subobject.lower_equivalence + theorem category_theory.subobject.lower_iso + def category_theory.subobject.lower₂ + def category_theory.subobject.map + theorem category_theory.subobject.map_bot + theorem category_theory.subobject.map_comp + theorem category_theory.subobject.map_id + def category_theory.subobject.map_iso + def category_theory.subobject.map_iso_to_order_iso + theorem category_theory.subobject.map_iso_to_order_iso_apply + theorem category_theory.subobject.map_iso_to_order_iso_symm_apply + theorem category_theory.subobject.map_pullback + def category_theory.subobject.map_pullback_adj + theorem category_theory.subobject.map_top + def category_theory.subobject.mk + theorem category_theory.subobject.prod_eq_inf + def category_theory.subobject.pullback + theorem category_theory.subobject.pullback_comp + theorem category_theory.subobject.pullback_id + theorem category_theory.subobject.pullback_map_self + theorem category_theory.subobject.pullback_self + theorem category_theory.subobject.pullback_top + def category_theory.subobject.sup + theorem category_theory.subobject.top_eq_id + def category_theory.subobject.«exists» + def category_theory.subobject 2021-02-23 14:09:44 7f46c81 feat(chain_complex): lemmas about eq_to_hom (#6250) Adds two lemmas relating `eq_to_hom` to differentials and chain maps. Useful in the ubiquitous circumstance of having to apply identities in the index of a chain complex. Also add some `@[reassoc]` tags for convenience. ESTIMATED CHANGES Modified src/algebra/homology/chain_complex.lean + theorem homological_complex.eq_to_hom_d + theorem homological_complex.eq_to_hom_f 2021-02-23 14:09:43 8d3efb7 feat(data/buffer/basic): read and to_buffer lemmas (#6048) ESTIMATED CHANGES Modified src/data/array/lemmas.lean + theorem array.read_push_back_left + theorem array.read_push_back_right Modified src/data/buffer/basic.lean + theorem buffer.append_list_nil + theorem buffer.length_to_list + theorem buffer.read_append_list_left' + theorem buffer.read_append_list_left + theorem buffer.read_append_list_right + theorem buffer.read_push_back_left + theorem buffer.read_push_back_right + theorem buffer.read_singleton + theorem buffer.read_to_buffer' + theorem buffer.read_to_buffer + theorem buffer.size_append_list + theorem buffer.size_push_back + theorem buffer.size_singleton + theorem buffer.size_to_buffer + theorem buffer.to_buffer_cons + theorem buffer.to_buffer_to_list + theorem buffer.to_list_to_buffer 2021-02-23 10:52:40 391c90a feat(logic/basic): subsingleton_of_forall_eq (#6376) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem subsingleton_of_forall_eq Modified src/logic/unique.lean 2021-02-23 10:52:39 e6d23d2 feat(ring_theory/power_series/basic): coeff_succ_X_mul (#6370) ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean + theorem power_series.coeff_succ_X_mul 2021-02-23 09:46:58 3ff9248 feat({group,ring}_theory/free_*): make free_ring.lift and free_comm_ring.lift equivs (#6364) This also adds `free_ring.hom_ext` and `free_comm_ring.hom_ext`, and deduplicates the definitions of the two lifts by introducing `abelian_group.lift_monoid`. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/group_theory/free_abelian_group.lean + def free_abelian_group.lift_monoid + theorem free_abelian_group.lift_monoid_coe + theorem free_abelian_group.lift_monoid_coe_add_monoid_hom + theorem free_abelian_group.lift_monoid_symm_coe +/- theorem free_abelian_group.mul_def +/- theorem free_abelian_group.of_mul + def free_abelian_group.of_mul_hom + theorem free_abelian_group.of_mul_hom_coe +/- theorem free_abelian_group.of_mul_of +/- theorem free_abelian_group.of_one +/- theorem free_abelian_group.one_def Modified src/ring_theory/free_comm_ring.lean + theorem free_comm_ring.hom_ext +/- def free_comm_ring.lift Modified src/ring_theory/free_ring.lean + theorem free_ring.hom_ext +/- def free_ring.lift 2021-02-23 06:48:15 b7a7b3d feat(algebra/regular): lemmas for powers of regular elements (#6356) Prove that an element is (left/right-)regular iff a power of it is (left/right-)regular. ESTIMATED CHANGES Modified src/algebra/regular.lean + theorem is_left_regular.pow + theorem is_left_regular.pow_iff + theorem is_regular.pow + theorem is_regular.pow_iff + theorem is_right_regular.pow + theorem is_right_regular.pow_iff 2021-02-23 06:48:15 ec36fc0 fix(data/set/finite): add decidable assumptions (#6264) Yury's rule of thumb https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/classicalize/near/224871122 says that we should have decidable instances here, because the statements of the lemmas need them (rather than the proofs). I'm making this PR to see if anything breaks. ESTIMATED CHANGES Modified src/data/set/finite.lean +/- theorem set.card_ne_eq +/- theorem set.to_finset_compl +/- theorem set.to_finset_inter +/- theorem set.to_finset_ne_eq_erase +/- theorem set.to_finset_union 2021-02-23 06:48:14 680e8ed feat(order/well_founded_set): defining `is_partially_well_ordered` to prove `is_wf.add` (#6226) Defines `set.is_partially_well_ordered s`, equivalent to any infinite sequence to `s` contains an infinite monotone subsequence Provides a basic API for `set.is_partially_well_ordered` Proves `is_wf.add` and `is_wf.mul` ESTIMATED CHANGES Modified src/order/well_founded_set.lean + theorem finset.is_wf_support_mul_antidiagonal + theorem finset.mul_antidiagonal_mono_left + theorem finset.mul_antidiagonal_mono_right + theorem finset.support_mul_antidiagonal_subset_mul + theorem set.is_partially_well_ordered.exists_monotone_subseq + theorem set.is_partially_well_ordered.image_of_monotone + theorem set.is_partially_well_ordered.is_wf + theorem set.is_partially_well_ordered.mul + theorem set.is_partially_well_ordered.prod + def set.is_partially_well_ordered + theorem set.is_partially_well_ordered_iff_exists_monotone_subseq +/- theorem set.is_wf.insert + theorem set.is_wf.is_partially_well_ordered + theorem set.is_wf.mul + theorem set.is_wf_empty +/- theorem set.is_wf_singleton 2021-02-23 05:21:51 5931c5c lint(set_theory/ordinal): fix def/lemma (#6369) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem cardinal.ord_eq_min - def cardinal.ord_eq_min 2021-02-23 01:14:10 3c66fd1 chore(scripts): update nolints.txt (#6373) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-02-22 21:32:01 7a91822 feat(data/fintype/intervals): Add set.finite lemmas for integer intervals (#6365) ESTIMATED CHANGES Modified src/data/fintype/intervals.lean + theorem set.Icc_ℤ_finite + theorem set.Ico_ℤ_finite + theorem set.Ioc_ℤ_finite + theorem set.Ioo_ℤ_finite 2021-02-22 21:32:00 c038984 chore(data/equiv/*): add missing coercion lemmas for equivs (#6268) This does not affect the simp-normal form. This tries to make a lot of lemma names and statements more consistent: * restates `linear_map.mk_apply` to be `linear_map.coe_mk` to match `monoid_hom.coe_mk` * adds `linear_map.to_linear_map_eq_coe` * adds the simp lemma `linear_map.coe_to_equiv` * adds the simp lemma `linear_map.linear_map.coe_to_linear_map` * adds the simp lemma `linear_map.to_fun_eq_coe` * adds the missing `ancestor` attributes required to make `to_additive` work for things like `add_equiv.to_add_hom` * restates `add_equiv.to_fun_apply` to be `add_equiv.to_fun_eq_coe` * restates `add_equiv.to_equiv_apply` to be `add_equiv.coe_to_equiv` * adds the simp lemma `add_equiv.coe_to_mul_hom` * removes `add_equiv.to_add_monoid_hom_apply` since `add_equiv.coe_to_add_monoid_hom` is a shorter and more general statement * restates `ring_equiv.to_fun_apply` to be `ring_equiv.to_fun_eq_coe` * restates `ring_equiv.coe_mul_equiv` to be `ring_equiv.coe_to_mul_equiv` * restates `ring_equiv.coe_add_equiv` to be `ring_equiv.coe_to_add_equiv` * restates `ring_equiv.coe_ring_hom` to be `ring_equiv.coe_to_ring_hom` * adds `ring_equiv.to_ring_hom_eq_coe` * adds `ring_equiv.to_add_equiv_eq_coe` * adds `ring_equiv.to_mul_equiv_eq_coe` ESTIMATED CHANGES Modified src/algebra/group/hom.lean Modified src/algebra/lie/matrix.lean Modified src/algebra/module/linear_map.lean +/- theorem linear_equiv.coe_coe + theorem linear_equiv.coe_mk +/- theorem linear_equiv.coe_to_equiv + theorem linear_equiv.coe_to_linear_map - theorem linear_equiv.mk_apply - theorem linear_equiv.to_fun_apply + theorem linear_equiv.to_fun_eq_coe + theorem linear_equiv.to_linear_map_eq_coe Modified src/algebra/quandle.lean Modified src/data/equiv/mul_add.lean + theorem mul_equiv.coe_to_equiv + theorem mul_equiv.coe_to_mul_hom - theorem mul_equiv.to_equiv_apply - theorem mul_equiv.to_fun_apply + theorem mul_equiv.to_fun_eq_coe - theorem mul_equiv.to_monoid_hom_apply Modified src/data/equiv/ring.lean - theorem ring_equiv.coe_add_equiv - theorem ring_equiv.coe_mul_equiv - theorem ring_equiv.coe_ring_hom + theorem ring_equiv.coe_to_add_equiv + theorem ring_equiv.coe_to_mul_equiv + theorem ring_equiv.coe_to_ring_hom + theorem ring_equiv.to_add_equiv_eq_coe + theorem ring_equiv.to_fun_eq_coe - theorem ring_equiv.to_fun_eq_coe_fun + theorem ring_equiv.to_mul_equiv_eq_coe + theorem ring_equiv.to_ring_hom_eq_coe Modified src/data/mv_polynomial/equiv.lean Modified src/group_theory/semidirect_product.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/matrix.lean Modified src/ring_theory/witt_vector/is_poly.lean 2021-02-22 18:48:55 283aaff feat(ring_theory/power_series/well_known): power of exponential (#6330) Co-authored by Fabian Kruse ESTIMATED CHANGES Modified src/ring_theory/power_series/well_known.lean + theorem power_series.exp_pow_eq_rescale_exp 2021-02-22 18:48:54 0fb6ada chore(topology): move `exists_compact_superset`, drop assumption `t2_space` (#6327) Also golf the proof of `is_compact.elim_finite_subcover_image` ESTIMATED CHANGES Modified src/topology/separation.lean - theorem exists_compact_superset Modified src/topology/subset_properties.lean + theorem exists_compact_superset + theorem finset.compact_bUnion 2021-02-22 18:48:53 db00ee4 feat(ring_theory/polynomial/basic): add quotient_equiv_quotient_mv_polynomial (#6287) I've added `quotient_equiv_quotient_mv_polynomial` that says that `(R/I)[x_i] ≃+* (R[x_i])/I` where `I` is an ideal of `R`. I've included also a version for `R`-algebras. The proof is very similar to the case of (one variable) polynomials. ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean + theorem mv_polynomial.eval₂_C_mk_eq_zero + theorem mv_polynomial.mem_ideal_of_coeff_mem_ideal + theorem mv_polynomial.mem_map_C_iff + def mv_polynomial.quotient_alg_equiv_quotient_mv_polynomial + def mv_polynomial.quotient_equiv_quotient_mv_polynomial + theorem mv_polynomial.quotient_map_C_eq_zero 2021-02-22 18:48:52 cc9d3ab feat(algebra/module,linear_algebra): generalize `smul_eq_zero` (#6199) Moves the theorem on division rings `smul_eq_zero` to a typeclass `no_zero_smul_divisors` with instances for the previously existing cases. The motivation for this change is that #6178 added another `smul_eq_zero`, which could be captured neatly as an instance of the typeclass. I didn't spend a lot of time yet on figuring out all the necessary instances, first let's see whether this compiles. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.no_zero_smul_divisors.of_algebra_map_injective Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/module/basic.lean +/- theorem eq_zero_of_eq_neg +/- theorem eq_zero_of_smul_two_eq_zero + theorem nat.no_zero_smul_divisors +/- theorem ne_neg_of_ne_zero +/- theorem smul_eq_zero - theorem smul_nat_eq_zero Modified src/algebra/module/pi.lean Modified src/algebra/module/prod.lean Modified src/algebra/module/submodule.lean Modified src/data/finsupp/basic.lean Modified src/linear_algebra/alternating.lean 2021-02-22 17:14:14 7abfbc9 doc(references.bib): add witt vector references and normalize (#6366) Now that we're actually displaying these bib links we should pay more attention to them. Two commits: one adds references for the Witt vector files, the other normalizes the bib file. We can drop the second if people don't care. ESTIMATED CHANGES Modified docs/references.bib Modified src/ring_theory/witt_vector/basic.lean Modified src/ring_theory/witt_vector/compare.lean Modified src/ring_theory/witt_vector/defs.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/identities.lean Modified src/ring_theory/witt_vector/init_tail.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/ring_theory/witt_vector/mul_p.lean Modified src/ring_theory/witt_vector/structure_polynomial.lean Modified src/ring_theory/witt_vector/teichmuller.lean Modified src/ring_theory/witt_vector/truncated.lean Modified src/ring_theory/witt_vector/verschiebung.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean 2021-02-22 17:14:13 70d7114 feat(nat/choose): lemmas regarding binomial coefficients (#6362) ESTIMATED CHANGES Modified src/data/nat/choose/dvd.lean + theorem nat.prime.choose_eq_factorial_div_factorial' + theorem nat.prime.choose_mul 2021-02-22 17:14:10 4daac66 chore(field_theory/mv_polynomial): generalised to comm_ring and module doc (#6341) This PR generalises most of `field_theory/mv_polynomial` from polynomial rings over fields to polynomial rings over commutative rings. This is put into a separate file. Also renamed the field to K and did one tiny golf. ESTIMATED CHANGES Modified src/field_theory/mv_polynomial.lean +/- theorem mv_polynomial.dim_mv_polynomial - theorem mv_polynomial.is_basis_monomials - theorem mv_polynomial.map_range_eq_map - theorem mv_polynomial.mem_restrict_degree - theorem mv_polynomial.mem_restrict_degree_iff_sup - theorem mv_polynomial.mem_restrict_total_degree +/- theorem mv_polynomial.quotient_mk_comp_C_injective - def mv_polynomial.restrict_degree - def mv_polynomial.restrict_total_degree Added src/ring_theory/mv_polynomial/basic.lean + theorem mv_polynomial.is_basis_monomials + theorem mv_polynomial.map_range_eq_map + theorem mv_polynomial.mem_restrict_degree + theorem mv_polynomial.mem_restrict_degree_iff_sup + theorem mv_polynomial.mem_restrict_total_degree + def mv_polynomial.restrict_degree + def mv_polynomial.restrict_total_degree 2021-02-22 14:12:42 6d2726c feat(number_theory/bernoulli): definition and properties of Bernoulli numbers (#6363) ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean + def bernoulli' + theorem bernoulli'_def' + theorem bernoulli'_def + theorem bernoulli'_four + theorem bernoulli'_odd_eq_zero + theorem bernoulli'_one + theorem bernoulli'_power_series + theorem bernoulli'_spec' + theorem bernoulli'_spec + theorem bernoulli'_three + theorem bernoulli'_two + theorem bernoulli'_zero +/- def bernoulli - theorem bernoulli_def' - theorem bernoulli_def + theorem bernoulli_eq_bernoulli' - theorem bernoulli_four - theorem bernoulli_odd_eq_zero +/- theorem bernoulli_one - theorem bernoulli_power_series - theorem bernoulli_spec' - theorem bernoulli_spec - theorem bernoulli_three - theorem bernoulli_two +/- theorem bernoulli_zero + theorem sum_bernoulli' +/- theorem sum_bernoulli 2021-02-22 14:12:41 46fb0d8 feat(big_operators/intervals): lemma on dependent double sum (#6361) ESTIMATED CHANGES Modified src/algebra/big_operators/intervals.lean + theorem finset.sum_Ico_Ico_comm 2021-02-22 14:12:40 12bb9ae chore(linear_algebra/*): split lines and doc `direct_sum/tensor_product` (#6360) This PR provides a short module doc to `direct_sum/tensor_product` (the file contains only one result). Furthermore, it splits lines in the `linear_algebra` folder. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean Modified src/linear_algebra/char_poly/coeff.lean +/- theorem finite_field.trace_pow_card Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/direct_sum/tensor_product.lean Modified src/linear_algebra/matrix.lean +/- theorem linear_map.trace_eq_matrix_trace Modified src/linear_algebra/special_linear_group.lean 2021-02-22 14:12:39 a10c19d doc(group_theory/*): module docs for `quotient_group` and `presented_group` (#6358) ESTIMATED CHANGES Modified src/group_theory/presented_group.lean +/- theorem presented_group.to_group.unique +/- def presented_group.to_group Modified src/group_theory/quotient_group.lean 2021-02-22 14:12:38 590442a feat(topology/subset_properties): locally finite family on a compact space is finite (#6352) ESTIMATED CHANGES Modified src/data/set/finite.lean - def set.fintype_of_univ_finite Modified src/topology/basic.lean - theorem locally_finite_of_finite + theorem locally_finite_of_fintype Modified src/topology/subset_properties.lean + theorem finite_cover_nhds + theorem finite_cover_nhds_interior + theorem locally_finite.finite_nonempty_of_compact + theorem locally_finite.finite_of_compact 2021-02-22 14:12:37 120feb1 refactor(order/filter,topology): review API (#6347) ### Filters * move old `filter.map_comap` to `filter.map_comap_of_mem`; * add a new `filter.map_comap` that doesn't assume `range m ∈ f` but gives `map m (comap m f) = f ⊓ 𝓟 (range m)` instead of `map m (comap m f) = f`; * add `filter.comap_le_comap_iff`, use it to golf a couple of proofs; * move some lemmas using `filter.map_comap`/`filter.map_comap_of_mem` closure to these lemmas; * use `function.injective m` instead of `∀ x y, m x = m y → x = y` in some lemmas; * drop `filter.le_map_comap_of_surjective'`, `filter.map_comap_of_surjective'`, and `filter.le_map_comap_of_surjective`: the inequalities easily follow from equalities, and `filter.map_comap_of_surjective'` is just `filter.map_comap_of_mem`+`filter.mem_sets_of_superset`; ### Topology * add `closed_embedding_subtype_coe`, `ennreal.open_embedding_coe`; * drop `inducing_open`, `inducing_is_closed`, `embedding_open`, and `embedding_is_closed` replace them with `inducing.is_open_map` and `inducing.is_closed_map`; * move old `inducing.map_nhds_eq` to `inducing.map_nhds_of_mem`, the new `inducing.map_nhds_eq` says `map f (𝓝 a) = 𝓝[range f] (f a)`; * add `inducing.is_closed_iff`; * move old `embedding.map_nhds_eq` to `embedding.map_nhds_of_mem`, the new `embedding.map_nhds_eq` says `map f (𝓝 a) = 𝓝[range f] (f a)`; * add `open_embedding.map_nhds_eq`; * change signature of `is_closed_induced_iff` to match other similar lemmas; * move old `map_nhds_induced_eq` to `map_nhds_induced_of_mem`, the new `map_nhds_induced_eq` give `𝓝[range f] (f a)` instead of `𝓝 (f a)`. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.comap_le_comap_iff - theorem filter.le_map_comap_of_surjective' - theorem filter.le_map_comap_of_surjective +/- theorem filter.map_comap + theorem filter.map_comap_of_mem - theorem filter.map_comap_of_surjective' +/- theorem filter.map_inj Modified src/topology/algebra/ordered.lean Modified src/topology/constructions.lean + theorem closed_embedding_subtype_coe Modified src/topology/continuous_on.lean Modified src/topology/homeomorph.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.nhds_coe_coe + theorem ennreal.open_embedding_coe +/- theorem ennreal.tendsto_to_nnreal +/- theorem ennreal.tendsto_to_real Modified src/topology/maps.lean +/- theorem embedding.map_nhds_eq + theorem embedding.map_nhds_of_mem - theorem embedding_is_closed - theorem embedding_open + theorem inducing.is_closed_iff + theorem inducing.is_closed_map + theorem inducing.is_open_map +/- theorem inducing.map_nhds_eq + theorem inducing.map_nhds_of_mem - theorem inducing_is_closed - theorem inducing_open + theorem open_embedding.map_nhds_eq Modified src/topology/order.lean +/- theorem map_nhds_induced_eq + theorem map_nhds_induced_of_mem Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2021-02-22 14:12:36 26e6d4c feat(algebra/lie/{subalgebra,submodule}): grab bag of new lemmas (#6342) I'm splitting these off from other work to simplify subsequent reviews. Cosmetic changes aside, the following summarises what I am proposing: New definitions: - `lie_subalgebra.of_le` Definition tweaks: - `lie_hom.range` [use coercion instead of `lie_hom.to_linear_map`] - `lie_ideal.map` [factor through `submodule.map` to avoid dropping all the way down to `set.image`] New lemmas: - `lie_ideal.coe_to_lie_subalgebra_to_submodule` - `lie_ideal.incl_range` - `lie_hom.ideal_range_eq_lie_span_range` - `lie_hom.is_ideal_morphism_iff` - `lie_subalgebra.mem_range` - `lie_subalgebra.mem_map` - `lie_subalgebra.mem_of_le` - `lie_subalgebra.of_le_eq_comap_incl` - `lie_subalgebra.exists_lie_ideal_coe_eq_iff` - `lie_subalgebra.exists_nested_lie_ideal_coe_eq_iff` - `submodule.exists_lie_submodule_coe_eq_iff` - `lie_submodule.coe_lie_span_submodule_eq_iff` Deleted lemma: - `lie_hom.range_bracket` New simp attributes: - `lie_subalgebra.mem_top` - `lie_submodule.mem_top` ESTIMATED CHANGES Modified src/algebra/lie/subalgebra.lean + theorem lie_hom.mem_range +/- def lie_hom.range - theorem lie_hom.range_bracket +/- theorem lie_hom.range_coe +/- def lie_subalgebra.comap + theorem lie_subalgebra.incl_range +/- def lie_subalgebra.map + theorem lie_subalgebra.mem_map +/- theorem lie_subalgebra.mem_map_submodule + theorem lie_subalgebra.mem_of_le +/- theorem lie_subalgebra.mem_top + def lie_subalgebra.of_le + theorem lie_subalgebra.of_le_eq_comap_incl - theorem lie_subalgebra.range_incl Modified src/algebra/lie/submodule.lean + theorem lie_hom.ideal_range_eq_lie_span_range + theorem lie_hom.is_ideal_morphism_iff + theorem lie_ideal.coe_to_lie_subalgebra_to_submodule + theorem lie_ideal.incl_range +/- def lie_ideal.map + theorem lie_subalgebra.exists_lie_ideal_coe_eq_iff + theorem lie_subalgebra.exists_nested_lie_ideal_coe_eq_iff + theorem lie_submodule.coe_lie_span_submodule_eq_iff +/- theorem lie_submodule.mem_top + theorem submodule.exists_lie_submodule_coe_eq_iff 2021-02-22 14:12:35 78eb83a feat(linear_algebra/pi): add `pi.lsum` (#6335) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem linear_map.coe_fn_sum Modified src/linear_algebra/pi.lean + theorem linear_map.apply_single + theorem linear_map.coe_single + def linear_map.lsum + theorem linear_map.pi_ext' + theorem linear_map.pi_ext'_iff + theorem linear_map.pi_ext + theorem linear_map.pi_ext_iff Modified src/linear_algebra/prod.lean + theorem linear_map.coprod_comp_prod Modified src/linear_algebra/std_basis.lean - theorem linear_map.pi_ext' - theorem linear_map.pi_ext'_iff - theorem linear_map.pi_ext - theorem linear_map.pi_ext_iff 2021-02-22 14:12:34 aa730c6 feat(linear_algebra): a module has a unique submodule iff it has a unique element (#6281) Also strengthens the related lemmas about subgroup and submonoid ESTIMATED CHANGES Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/basic.lean Modified src/linear_algebra/basic.lean - theorem submodule.bot_ne_top + theorem submodule.bot_to_add_submonoid - theorem submodule.eq_bot_of_zero_eq_one + theorem submodule.nontrivial_iff + theorem submodule.subsingleton_iff + theorem submodule.top_to_add_submonoid Modified src/linear_algebra/basis.lean +/- theorem is_basis_empty - theorem is_basis_empty_bot Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/ideal/over.lean 2021-02-22 14:12:33 ffb6a58 feat(data/sigma/basic): add a more convenient ext lemma for equality of sigma types over subtypes (#6257) ESTIMATED CHANGES Modified src/data/sigma/basic.lean + theorem psigma.subtype_ext + theorem psigma.subtype_ext_iff + theorem sigma.subtype_ext + theorem sigma.subtype_ext_iff 2021-02-22 14:12:32 9d54837 feat(data/polynomial/degree): lemmas on nat_degree and behaviour under multiplication by constants (#6224) These lemmas extend the API for nat_degree I intend to use them to work with integrality statements ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.eq_C_of_nat_degree_eq_zero +/- theorem polynomial.eq_C_of_nat_degree_le_zero +/- theorem polynomial.le_nat_degree_of_coe_le_degree + theorem polynomial.leading_coeff_ne_zero +/- theorem polynomial.nat_degree_pos_iff_degree_pos +/- theorem polynomial.ne_zero_of_coe_le_degree Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.eq_nat_degree_of_le_mem_support + theorem polynomial.nat_degree_C_mul_eq_of_mul_eq_one + theorem polynomial.nat_degree_C_mul_eq_of_mul_ne_zero + theorem polynomial.nat_degree_C_mul_eq_of_no_zero_divisors + theorem polynomial.nat_degree_C_mul_le + theorem polynomial.nat_degree_add_coeff_mul + theorem polynomial.nat_degree_le_iff_coeff_eq_zero + theorem polynomial.nat_degree_lt_coeff_mul + theorem polynomial.nat_degree_mul_C_eq_of_mul_eq_one + theorem polynomial.nat_degree_mul_C_eq_of_mul_ne_zero + theorem polynomial.nat_degree_mul_C_eq_of_no_zero_divisors + theorem polynomial.nat_degree_mul_C_le 2021-02-22 10:42:24 87a021c feat(data/quot): `quotient.rec_on_subsingleton` with implicit setoid (#6346) ESTIMATED CHANGES Modified src/data/quot.lean 2021-02-22 10:42:23 69b93fc fix(data/finsupp/basic): delta-reduce the definition of coe_fn_injective (#6344) Without this, `apply coe_fn_injective` leaves a messy goal that usually has to be `dsimp`ed in order to make progress with `rw`. With this change, `dsimp` now fails as the goal is already fully delta-reduced. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.coe_fn_injective 2021-02-22 08:31:25 0e51976 feat(data/polynomial/reverse): Trailing degree is multiplicative (#6351) Uses `polynomial.reverse` to prove that `nat_trailing_degree` behaves well under multiplication. ESTIMATED CHANGES Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.nat_trailing_degree_le_nat_degree Modified src/data/polynomial/reverse.lean + theorem polynomial.coeff_reverse + theorem polynomial.nat_degree_eq_reverse_nat_degree_add_nat_trailing_degree + theorem polynomial.reflect_neg + theorem polynomial.reflect_sub + theorem polynomial.reverse_eq_zero + theorem polynomial.reverse_leading_coeff + theorem polynomial.reverse_nat_degree + theorem polynomial.reverse_nat_degree_le + theorem polynomial.reverse_nat_trailing_degree + theorem polynomial.reverse_neg + theorem polynomial.reverse_trailing_coeff + theorem polynomial.trailing_coeff_mul Modified src/data/polynomial/ring_division.lean + theorem polynomial.nat_trailing_degree_mul 2021-02-22 06:58:33 a3d951b feat(data/nat/digits): digits injective at fixed base (#6338) ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem nat.digits.injective + theorem nat.digits_inj_iff 2021-02-22 06:58:32 2b6dec0 feat(algebraic_geometry/prime_spectrum): specialization order (#6286) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean + theorem prime_spectrum.as_ideal_le_as_ideal + theorem prime_spectrum.as_ideal_lt_as_ideal + theorem prime_spectrum.le_iff_mem_closure + theorem prime_spectrum.vanishing_ideal_singleton 2021-02-22 03:13:35 dc78177 chore(scripts): update nolints.txt (#6354) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-22 03:13:34 2134d0c feat(algebra/group_power/basic): `abs_lt_abs_of_sqr_lt_sqr` (#6277) These lemmas are (almost) the converses of some of the lemmas I added in #5933. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem abs_le_abs_of_sqr_le_sqr + theorem abs_le_of_sqr_le_sqr' + theorem abs_le_of_sqr_le_sqr + theorem abs_lt_abs_of_sqr_lt_sqr + theorem abs_lt_of_sqr_lt_sqr' + theorem abs_lt_of_sqr_lt_sqr +/- theorem abs_sqr +/- theorem sqr_abs 2021-02-22 00:01:15 b8b8755 feat(data/list/basic): repeat injectivity (#6337) ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.eq_of_mem_repeat + theorem list.mem_repeat + theorem list.repeat_left_inj' + theorem list.repeat_left_inj + theorem list.repeat_left_injective + theorem list.repeat_right_inj + theorem list.repeat_right_injective 2021-02-21 21:41:23 87f8db2 feat(data/dfinsupp): add coe lemmas (#6343) These lemmas already exist for `finsupp`, let's add them for `dfinsupp` too. ESTIMATED CHANGES Modified src/data/dfinsupp.lean +/- theorem dfinsupp.add_apply + theorem dfinsupp.coe_add + theorem dfinsupp.coe_fn_injective + theorem dfinsupp.coe_neg + theorem dfinsupp.coe_smul + theorem dfinsupp.coe_sub +/- theorem dfinsupp.neg_apply +/- theorem dfinsupp.smul_apply +/- theorem dfinsupp.sub_apply 2021-02-21 21:41:22 96ae2ad docs(undergrad.yaml): recent changes (#6313) ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-02-21 18:45:11 4355d17 chore(topology/order): drop an unneeded argument (#6345) `closure_induced` doesn't need `f` to be injective. ESTIMATED CHANGES Modified src/topology/constructions.lean Modified src/topology/maps.lean + theorem inducing.closure_eq_preimage_closure_image Modified src/topology/order.lean +/- theorem closure_induced Modified src/topology/uniform_space/uniform_embedding.lean 2021-02-21 18:45:10 ab03ebe feat(data/list/basic): drop_eq_nil_iff_le (#6336) The iff version of a recently added lemma. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.drop_eq_nil_iff_le 2021-02-21 15:22:22 473bb7d feat(topology/locally_constant): basics on locally constant functions (#6192) From `lean-liquid` ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.not_nonempty_empty Added src/topology/locally_constant/algebra.lean + theorem locally_constant.div_apply + theorem locally_constant.inv_apply + theorem locally_constant.mul_apply + theorem locally_constant.one_apply Added src/topology/locally_constant/basic.lean + theorem is_locally_constant.apply_eq_of_is_preconnected + theorem is_locally_constant.comp + theorem is_locally_constant.comp_continuous + theorem is_locally_constant.comp₂ + theorem is_locally_constant.const + theorem is_locally_constant.div + theorem is_locally_constant.exists_open + theorem is_locally_constant.iff_continuous + theorem is_locally_constant.iff_continuous_bot + theorem is_locally_constant.iff_eventually_eq + theorem is_locally_constant.iff_exists_open + theorem is_locally_constant.iff_is_const + theorem is_locally_constant.inv + theorem is_locally_constant.is_open_fiber + theorem is_locally_constant.mul + theorem is_locally_constant.of_constant + theorem is_locally_constant.of_discrete + theorem is_locally_constant.one + theorem is_locally_constant.prod_mk + theorem is_locally_constant.range_finite + def is_locally_constant + theorem locally_constant.apply_eq_of_is_preconnected + theorem locally_constant.apply_eq_of_preconnected_space + theorem locally_constant.coe_comap + theorem locally_constant.coe_inj + theorem locally_constant.coe_injective + theorem locally_constant.coe_mk + def locally_constant.comap + theorem locally_constant.comap_comp + theorem locally_constant.comap_const + theorem locally_constant.comap_id + theorem locally_constant.congr_arg + theorem locally_constant.congr_fun + def locally_constant.const + theorem locally_constant.eq_const + theorem locally_constant.exists_eq_const + theorem locally_constant.ext + theorem locally_constant.ext_iff + def locally_constant.map + theorem locally_constant.map_apply + theorem locally_constant.map_comp + theorem locally_constant.map_id + theorem locally_constant.range_finite + theorem locally_constant.to_fun_eq_coe + structure locally_constant 2021-02-21 06:06:38 f470cc6 feat(measure_theory/interval_integral): add simp attribute to `integral_const` (#6334) By adding a `simp` attribute to `interval_integral.integral_const`, the likes of the following become possible: ``` import measure_theory.interval_integral example : ∫ x:ℝ in 5..19, (12:ℝ) = 168 := by norm_num ``` ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean +/- theorem interval_integral.integral_const 2021-02-21 01:15:37 4d4c7bb chore(scripts): update nolints.txt (#6332) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-20 21:10:00 93d1760 chore(topology/bases): golf a proof (#6326) Also add some supporting lemmas ESTIMATED CHANGES Modified src/topology/bases.lean + theorem topological_space.is_topological_basis.dense_iff + theorem topological_space.is_topological_basis.mem_closure_iff Modified src/topology/basic.lean + theorem filter.has_basis.cluster_pt_iff + theorem mem_closure_iff_nhds_basis' 2021-02-20 21:09:59 08ea23b refactor(group_theory/free_*): remove API duplicated by lift, promote lift functions to equivs (#6311) This removes: * `free_group.to_group.to_fun` and `free_group.to_group`, as these are both subsumed by the stronger `lift`. * `abelianization.hom_equiv` as this is now `abelianization.lift.symm` * `free_abelian_group.hom_equiv` as this is now `free_abelian_group.lift.symm` ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean Modified src/algebra/free_monoid.lean Modified src/group_theory/abelianization.lean - def abelianization.hom_equiv +/- def abelianization.lift Modified src/group_theory/free_abelian_group.lean - def free_abelian_group.hom_equiv - theorem free_abelian_group.hom_equiv_apply - theorem free_abelian_group.hom_equiv_symm_apply +/- def free_abelian_group.lift Modified src/group_theory/free_group.lean + def free_group.lift.aux + theorem free_group.lift.mk + theorem free_group.lift.of + theorem free_group.lift.of_eq + theorem free_group.lift.range_eq_closure + theorem free_group.lift.range_subset + theorem free_group.lift.unique +/- def free_group.lift + theorem free_group.lift_eq_prod_map + theorem free_group.map_eq_lift - theorem free_group.map_eq_to_group +/- def free_group.prod + theorem free_group.red.step.lift - theorem free_group.red.step.to_group - def free_group.to_group.aux - theorem free_group.to_group.mk - theorem free_group.to_group.of - theorem free_group.to_group.of_eq - theorem free_group.to_group.range_eq_closure - theorem free_group.to_group.range_subset - def free_group.to_group.to_fun - theorem free_group.to_group.unique - def free_group.to_group - theorem free_group.to_group_eq_prod_map Modified src/group_theory/presented_group.lean +/- theorem presented_group.to_group.of Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean 2021-02-20 17:42:12 dccc542 fix(algebra/group/pi): remove unnecessary add_monoid requirement from pi.single_zero (#6325) Follows on from #6317 ESTIMATED CHANGES Modified src/algebra/group/pi.lean +/- theorem pi.single_zero + def zero_hom.single 2021-02-20 17:42:11 f0aad50 feat(data/equiv/basic): injective iff injective after composing with equiv (#6283) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.bijective_comp + theorem equiv.comp_bijective + theorem equiv.comp_injective + theorem equiv.comp_surjective + theorem equiv.injective_comp + theorem equiv.surjective_comp Modified src/logic/function/basic.lean + theorem function.bijective.of_comp_iff' + theorem function.bijective.of_comp_iff + theorem function.injective.of_comp_iff' + theorem function.injective.of_comp_iff + theorem function.surjective.of_comp_iff' + theorem function.surjective.of_comp_iff 2021-02-20 17:42:10 ee8708e feat(algebra/regular): define regular elements (#6282) The goal of this PR is to start the API for regular elements. The final goal is to talk about non-zero-divisors. Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/is_regular ESTIMATED CHANGES Added src/algebra/regular.lean + theorem is_left_regular.mul + theorem is_left_regular.of_mul + theorem is_left_regular.subsingleton + def is_left_regular + theorem is_left_regular_of_left_cancel_semigroup + theorem is_left_regular_of_mul_eq_one + theorem is_left_regular_zero_iff_subsingleton + theorem is_regular.and_of_mul_of_mul + theorem is_regular.subsingleton + structure is_regular + theorem is_regular_iff_subsingleton + theorem is_regular_mul_and_mul_iff + theorem is_regular_mul_iff + theorem is_regular_of_cancel_monoid + theorem is_regular_of_cancel_monoid_with_zero + theorem is_regular_one + theorem is_right_regular.mul + theorem is_right_regular.of_mul + theorem is_right_regular.subsingleton + def is_right_regular + theorem is_right_regular_of_mul_eq_one + theorem is_right_regular_of_right_cancel_semigroup + theorem is_right_regular_zero_iff_subsingleton + theorem is_unit.is_regular + theorem mul_is_left_regular_iff + theorem mul_is_right_regular_iff + theorem not_is_left_regular_zero_iff + theorem not_is_right_regular_zero_iff + theorem units.is_regular 2021-02-20 15:00:59 1855bd5 chore(*): split lines (#6323) ESTIMATED CHANGES Modified src/algebraic_geometry/sheafed_space.lean Modified src/group_theory/eckmann_hilton.lean +/- def eckmann_hilton.comm_group Modified src/group_theory/semidirect_product.lean Modified src/group_theory/subgroup.lean +/- theorem subgroup.nontrivial_iff_exists_ne_one Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.nontrivial_iff_exists_ne_one Modified src/ring_theory/noetherian.lean +/- theorem exists_prime_spectrum_prod_le_and_ne_bot_of_domain +/- theorem finite_of_linear_independent Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/subring.lean +/- theorem subring.Inf_to_submonoid Modified src/ring_theory/tensor_product.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean 2021-02-20 11:52:21 ed55502 doc(algebraic_geometry/is_open_comap_C): add reference to Stacks project (#6322) Updated the doc-strings to reference the Stacks project. Zulip chat: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/stacks.20tags ESTIMATED CHANGES Modified src/algebraic_geometry/is_open_comap_C.lean 2021-02-20 11:52:20 52e2937 feat(topology): the currying homeomorphism (#6319) ESTIMATED CHANGES Modified src/topology/compact_open.lean + theorem continuous_map.continuous_curry' + theorem continuous_map.continuous_curry + theorem continuous_map.continuous_of_continuous_uncurry + theorem continuous_map.continuous_uncurry + theorem continuous_map.continuous_uncurry_of_continuous + def continuous_map.curry' + def continuous_map.curry + def continuous_map.uncurry + def homeomorph.curry Modified src/topology/subset_properties.lean 2021-02-20 11:52:19 26d287c doc(ring_theory/*): two module docs (#6318) This PR provides module docs for `ring_theory.polynomial.scale_roots` as well as `ring_theory.multiplicity`. Furthermore, some lines are split in those two files. ESTIMATED CHANGES Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/scale_roots.lean 2021-02-20 11:52:19 c7c40a7 feat(*/pi): add lemmas about how `single` interacts with operators (#6317) This also adds a missing pi instances for `monoid_with_zero`. ESTIMATED CHANGES Modified src/algebra/group/pi.lean +/- def add_monoid_hom.single + def mul_hom.single + theorem pi.single_add + theorem pi.single_mul + theorem pi.single_neg + theorem pi.single_sub + theorem pi.single_zero Modified src/algebra/module/pi.lean + theorem pi.single_smul' + theorem pi.single_smul Modified src/data/pi.lean + theorem pi.apply_single + theorem pi.apply_single₂ Modified src/linear_algebra/pi.lean 2021-02-20 09:02:14 4d2dcdb chore(*): fix broken Zulip archive links (#6321) ESTIMATED CHANGES Modified src/data/tree.lean Modified src/logic/basic.lean 2021-02-20 01:44:35 3e381ad chore(ring_theory/*): split lines (#6316) ESTIMATED CHANGES Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/dedekind_domain.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/free_comm_ring.lean +/- theorem free_comm_ring.exists_finite_support +/- theorem free_comm_ring.restriction_of Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.mem_radical_of_pow_mem +/- theorem ideal.span_singleton_mul_span_singleton +/- theorem ring_hom.lift_of_surjective_comp Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/jacobson_ideal.lean +/- theorem ideal.is_local.le_jacobson +/- theorem ideal.is_primary_of_is_maximal_radical Modified src/ring_theory/localization.lean 2021-02-20 01:44:34 32b9b21 refactor(linear_algebra/pi): add `linear_map.single` to match `add_monoid_hom.single` (#6315) This changes the definition of `std_basis` to be exactly `linear_map.single`, but proves equality with the old definition. In future, it might make sense to remove `std_basis` entirely. ESTIMATED CHANGES Modified src/linear_algebra/pi.lean + def linear_map.single Modified src/linear_algebra/std_basis.lean +/- def linear_map.std_basis + theorem linear_map.std_basis_eq_pi_diag Modified src/ring_theory/power_series/basic.lean 2021-02-20 01:44:33 d483bc2 chore(data/indicator_function): add a formula for the support of `indicator` (#6314) * rename `set.support_indicator` to `set.support_indicator_subset`; * add a new `set.support_indicator`; * add `function.support_comp_eq_preimage`. ESTIMATED CHANGES Modified src/data/indicator_function.lean +/- theorem set.support_indicator + theorem set.support_indicator_subset Modified src/topology/algebra/infinite_sum.lean 2021-02-20 01:01:26 3ab9818 chore(scripts): update nolints.txt (#6320) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-19 14:14:19 845654a feat(analysis/calculus): define a smooth bump function (#4458) Define an infinitely smooth function which is `1` on the closed ball of radius `1` and is `0` outside of the open ball of radius `2`. ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean + theorem exists_times_cont_diff_bump_function_of_mem_nhds - theorem exp_neg_inv_glue.smooth + theorem smooth_bump_function.eventually_eq_one + theorem smooth_bump_function.eventually_eq_one_of_norm_lt_one + theorem smooth_bump_function.le_one + theorem smooth_bump_function.lt_one_of_one_lt_norm + theorem smooth_bump_function.nonneg + theorem smooth_bump_function.one_of_norm_le_one + theorem smooth_bump_function.pos_of_norm_lt_two + theorem smooth_bump_function.support_eq + theorem smooth_bump_function.zero_of_two_le_norm + def smooth_bump_function + theorem smooth_transition.le_one + theorem smooth_transition.lt_one_of_lt_one + theorem smooth_transition.nonneg + theorem smooth_transition.one_of_one_le + theorem smooth_transition.pos_denom + theorem smooth_transition.pos_of_pos + theorem smooth_transition.zero_of_nonpos + def smooth_transition Modified src/data/support.lean + theorem function.support_comp_eq_preimage Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.image_closure 2021-02-19 12:23:04 f6eef43 doc(ring_theory): move some module docstring to correct place (#6312) ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/tensor_product.lean Modified src/ring_theory/unique_factorization_domain.lean 2021-02-19 12:23:03 aaab837 doc(ring_theory/witt_vector/witt_polynomial): move module docstring up (#6310) ESTIMATED CHANGES Modified src/ring_theory/witt_vector/witt_polynomial.lean 2021-02-19 12:23:02 0df1998 doc(set_theory/*): more documentation about cardinals and ordinals (#6247) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.le_def Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/set_theory/ordinal_notation.lean 2021-02-19 12:23:01 114f8ef chore(data/buffer/parser/numeral): derive mono for numeral (#5463) Thanks to Rob Lewis, using classes, instances, and the `delta_instance_handler`, transferring over instances becomes very easy. ESTIMATED CHANGES Modified src/data/buffer/parser/numeral.lean +/- def parser.numeral.char.of_fintype +/- def parser.numeral.char +/- def parser.numeral.from_one.of_fintype +/- def parser.numeral.from_one +/- def parser.numeral.of_fintype +/- def parser.numeral 2021-02-19 09:04:38 e5c7789 fix(lint/type_classes): fix instance_priority bug (#6305) The linter now doesn't fail if the type is a beta redex ESTIMATED CHANGES Modified src/tactic/lint/type_classes.lean Modified test/lint.lean 2021-02-19 07:04:09 a0e2b3c chore(topology/Profinite): reduce universe variables (#6300) See https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/universe.20issue ESTIMATED CHANGES Modified src/topology/category/Profinite.lean +/- def CompHaus.to_Profinite_obj +/- def Profinite.to_CompHaus_equivalence 2021-02-19 07:04:08 64d86f7 feat(topology/{subset_properties,separation}): closed subsets of compact t0 spaces contain a closed point (#6273) This adds two statements. The first is that nonempty closed subsets of a compact space have a minimal nonempty closed subset, and the second is that when the space is additionally T0 then that minimal subset is a singleton. (This PR does not do this, but one can go on to show that there is functor from compact T0 spaces to T1 spaces by taking the set of closed points, and it preserves nonemptiness.) ESTIMATED CHANGES Modified src/topology/separation.lean + theorem is_closed.exists_closed_singleton Modified src/topology/subset_properties.lean + theorem is_closed.exists_minimal_nonempty_closed_subset 2021-02-19 04:14:30 626a4b5 chore(scripts): update nolints.txt (#6303) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-19 04:14:29 75149c3 feat(data/list/basic): tail_drop, cons_nth_le_drop_succ (#6265) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.cons_nth_le_drop_succ + theorem list.tail_drop 2021-02-19 00:43:42 1fecd52 fix(tactic/push_neg): fully simplify expressions not named `h` (#6297) A final pass of `push_neg` is intended to turn `¬ a = b` into `a ≠ b`. Unfortunately, when you use `push_neg at ...`, this is applied to the hypothesis literally named `h`. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60push_neg.60.20behaviour.20depends.20on.20variable.20name) ESTIMATED CHANGES Modified src/tactic/push_neg.lean Modified test/push_neg.lean 2021-02-18 23:50:16 3a8d976 fix(archive/100/82): remove nonterminal simps (#6299) ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean 2021-02-18 23:50:15 8696990 feat(category_theory/adjunction/reflective): show compositions of reflective are reflective (#6298) Show compositions of reflective are reflective. ESTIMATED CHANGES Modified src/category_theory/adjunction/reflective.lean 2021-02-18 20:23:11 96f8933 perf(tactic/lint/frontend): run linters in parallel (#6293) With this change it takes 5 minutes instead of 33 minutes to lint mathlib (on my machine...). https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/linting.20time ESTIMATED CHANGES Modified src/data/list/defs.lean Modified src/tactic/lint/frontend.lean 2021-02-18 16:34:50 619c1b0 chore({algebra, algebraic_geometry}/*): move 1 module doc and split lines (#6294) This moves the module doc for `algebra/ordered_group` so that it gets recognised by the linter. Furthermore, several lines are split in the algebra and algebraic_geometry folder. ESTIMATED CHANGES Modified archive/miu_language/basic.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/continued_fractions/terminated_stable.lean Modified src/algebra/free_monoid.lean Modified src/algebra/module/submodule.lean Modified src/algebra/ordered_group.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/stalks.lean 2021-02-18 11:09:39 5b579a2 feat(topology/category/profinite): show Profinite is reflective in CompHaus (#6219) Show Profinite is reflective in CompHaus. ESTIMATED CHANGES Modified src/topology/category/CompHaus.lean Modified src/topology/category/Profinite.lean + def CompHaus.to_Profinite + theorem CompHaus.to_Profinite_obj' + def CompHaus.to_Profinite_obj + def Profinite.to_CompHaus + def Profinite.to_CompHaus_equivalence + theorem Profinite.to_CompHaus_to_Top + def Profinite.to_Profinite_adj_to_CompHaus - def Profinite_to_CompHaus - theorem Profinite_to_CompHaus_to_Top Modified src/topology/connected.lean + theorem connected_component_nrel_iff + def connected_components + theorem connected_components_lift_unique' + theorem connected_components_preimage_image + theorem connected_components_preimage_singleton + def continuous.connected_components_lift + theorem continuous.connected_components_lift_continuous + theorem continuous.connected_components_lift_factors + theorem continuous.connected_components_lift_unique + def continuous.connected_components_map + theorem continuous.connected_components_map_continuous - def continuous.pi0_lift - theorem continuous.pi0_lift_continuous - theorem continuous.pi0_lift_factors - theorem continuous.pi0_lift_unique - def continuous.pi0_map + theorem is_clopen.eq_union_connected_components - def pi0 - theorem pi0_lift_unique' - theorem pi0_preimage_image - theorem pi0_preimage_singleton Modified src/topology/separation.lean 2021-02-18 09:36:21 5a59781 fix(doc/references.bib): fix syntax (#6290) ESTIMATED CHANGES Modified docs/references.bib 2021-02-18 08:05:51 2a7eafa feat(order/pfilter): add preorder filters, dual to preorder ideals (#5928) Named `pfilter` to not conflict with the existing `order/filter`, which is a much more developed theory of a special case of this. ESTIMATED CHANGES Added src/order/pfilter.lean + theorem pfilter.directed + theorem pfilter.ext + theorem pfilter.inf_mem + theorem pfilter.inf_mem_iff + theorem pfilter.mem_of_le + theorem pfilter.mem_of_mem_of_le + theorem pfilter.nonempty + def pfilter.principal + theorem pfilter.principal_le_iff + theorem pfilter.top_mem + structure pfilter 2021-02-18 05:31:27 017acae feat(linear_algebra/dual): adds dual annihilators (#6078) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + def linear_map.dom_restrict' + theorem linear_map.dom_restrict'_apply Modified src/linear_algebra/dual.lean + def submodule.dual_annihilator + def submodule.dual_restrict + theorem submodule.dual_restrict_apply + theorem submodule.dual_restrict_ker_eq_dual_annihilator + theorem submodule.mem_dual_annihilator + theorem subspace.dual_equiv_dual_apply + theorem subspace.dual_equiv_dual_def + theorem subspace.dual_lift_injective + theorem subspace.dual_lift_of_mem + theorem subspace.dual_lift_of_subtype + theorem subspace.dual_lift_right_inverse + theorem subspace.dual_restrict_comp_dual_lift + theorem subspace.dual_restrict_left_inverse + theorem subspace.dual_restrict_surjective Modified src/linear_algebra/finite_dimensional.lean 2021-02-18 02:18:27 7c267df chore(scripts): update nolints.txt (#6289) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-17 23:53:33 7592a8f chore(analysis/normed_space/finite_dimension,topology/metric_space): golf (#6285) * golf two proofs about `finite_dimension`; * move `proper_image_of_proper` to `antilipschitz`, rename to `antilipschitz_with.proper_space`, golf. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.bounded_preimage Modified src/topology/metric_space/basic.lean - theorem metric.proper_image_of_proper 2021-02-17 23:53:32 bc1c4f2 feat(data/zmod/basic): add simp lemmas about coercions, tidy lemma names (#6280) Split from #5797. This takes the new proofs without introducing the objectionable names. This also renames a bunch of lemmas from `zmod.cast_*` to `zmod.nat_cast_*` and `zmod.int_cast_*`, in order to distinguish lemmas about `zmod.cast` from lemmas about `nat.cast` and `int.cast` applied with a zmod argument. As an example, `zmod.cast_val` has been renamed to `zmod.nat_cast_zmod_val`, as the lemma statement is defeq to `(nat.cast : ℕ → zmod n) (zmod.val x) = x`, and `zmod.nat_cast_val` is already taken by `nat.cast (zmod.val x) = (x : R)`. The full list of renames: * `zmod.cast_val` → `zmod.nat_cast_zmod_val` * `zmod.cast_self` → `zmod.nat_cast_self` * `zmod.cast_self'` → `zmod.nat_cast_self'` * `zmod.cast_mod_nat` → `zmod.nat_cast_mod` * `zmod.cast_mod_int` → `zmod.int_cast_mod` * `zmod.val_cast_nat` → `zmod.val_nat_cast` * `zmod.coe_to_nat` → `zmod.nat_cast_to_nat` * `zmod.cast_unit_of_coprime` → `coe_unit_of_coprime` * `zmod.cast_nat_abs_val_min_abs` → `zmod.nat_cast_nat_abs_val_min_abs` ESTIMATED CHANGES Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/data/padics/ring_homs.lean Modified src/data/zmod/basic.lean + theorem zmod.cast_id' - theorem zmod.cast_mod_int - theorem zmod.cast_mod_nat - theorem zmod.cast_nat_abs_val_min_abs - theorem zmod.cast_self' - theorem zmod.cast_self - theorem zmod.cast_unit_of_coprime - theorem zmod.cast_val - theorem zmod.coe_to_nat + theorem zmod.coe_unit_of_coprime + theorem zmod.int_cast_cast + theorem zmod.int_cast_comp_cast + theorem zmod.int_cast_mod +/- theorem zmod.int_cast_surjective + theorem zmod.int_cast_zmod_cast + theorem zmod.nat_cast_comp_val + theorem zmod.nat_cast_mod + theorem zmod.nat_cast_nat_abs_val_min_abs + theorem zmod.nat_cast_self' + theorem zmod.nat_cast_self - theorem zmod.nat_cast_surjective + theorem zmod.nat_cast_to_nat +/- theorem zmod.nat_cast_val + theorem zmod.nat_cast_zmod_surjective + theorem zmod.nat_cast_zmod_val + theorem zmod.ring_hom_map_cast - theorem zmod.val_cast_nat + theorem zmod.val_nat_cast Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/dihedral.lean Modified src/group_theory/sylow.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/ring_theory/witt_vector/frobenius.lean 2021-02-17 20:29:45 75f3346 feat(analysis/normed_space/multilinear): generalized `curry` (#6270) ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean + def continuous_multilinear_map.curry_fin_finset + theorem continuous_multilinear_map.curry_fin_finset_apply + theorem continuous_multilinear_map.curry_fin_finset_apply_const + theorem continuous_multilinear_map.curry_fin_finset_symm_apply + theorem continuous_multilinear_map.curry_fin_finset_symm_apply_const + theorem continuous_multilinear_map.curry_fin_finset_symm_apply_piecewise_const + def continuous_multilinear_map.curry_sum + theorem continuous_multilinear_map.curry_sum_apply + def continuous_multilinear_map.curry_sum_equiv + def continuous_multilinear_map.dom_dom_congr + theorem continuous_multilinear_map.le_of_op_norm_le + def continuous_multilinear_map.uncurry_sum + theorem continuous_multilinear_map.uncurry_sum_apply + def multilinear_map.mk_continuous_linear + theorem multilinear_map.mk_continuous_linear_norm_le' + theorem multilinear_map.mk_continuous_linear_norm_le + def multilinear_map.mk_continuous_multilinear + theorem multilinear_map.mk_continuous_multilinear_apply + theorem multilinear_map.mk_continuous_multilinear_norm_le' + theorem multilinear_map.mk_continuous_multilinear_norm_le + theorem multilinear_map.mk_continuous_norm_le' 2021-02-17 20:29:44 152bf15 feat(data/fin): pred_above_monotone (#6170) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_pred_monotone + theorem fin.cast_succ_lt_cast_succ_iff + theorem fin.pred_above_left_monotone + theorem fin.pred_above_right_monotone Modified src/order/preorder_hom.lean + def order_embedding.to_preorder_hom + theorem order_embedding.to_preorder_hom_coe 2021-02-17 15:49:57 4bae1c4 doc(tactic/algebra): document @[ancestor] (#6272) ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/tactic/algebra.lean 2021-02-17 15:49:55 07a1b8d feat(ring_theory/simple_module): introduce `is_semisimple_module` (#6215) Defines `is_semisimple_module` to mean that the lattice of submodules is complemented Shows that this is equivalent to the module being the `Sup` of its simple submodules ESTIMATED CHANGES Modified src/order/compactly_generated.lean + theorem is_complemented_of_Sup_atoms_eq_top Modified src/order/rel_iso.lean + theorem order_iso.is_compl + theorem order_iso.is_compl_iff + theorem order_iso.is_complemented + theorem order_iso.is_complemented_iff Modified src/representation_theory/maschke.lean + theorem monoid_algebra.is_semisimple_module Modified src/ring_theory/simple_module.lean + theorem is_semisimple_iff_top_eq_Sup_simples + theorem is_semisimple_module.Sup_simples_eq_top + def is_semisimple_module + theorem is_semisimple_of_Sup_simples_eq_top + theorem is_simple_module.is_atom + theorem is_simple_module_iff_is_atom 2021-02-17 11:38:42 f066eb1 feat(algebra/lie/subalgebra): define lattice structure for Lie subalgebras (#6279) We already have the lattice structure for Lie submodules but not for subalgebras. This is mostly a lightly-edited copy-paste of the corresponding subset of results for Lie submodules that remain true for subalgebras. The results which hold for Lie submodules but not for Lie subalgebras are: - `sup_coe_to_submodule` and `mem_sup` - `is_modular_lattice` I have also made a few tweaks to bring the structure and naming of Lie subalgebras a little closer to that of Lie submodules. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/subalgebra.lean + theorem lie_subalgebra.Inf_coe + theorem lie_subalgebra.Inf_coe_to_submodule + theorem lie_subalgebra.Inf_glb + theorem lie_subalgebra.add_eq_sup + theorem lie_subalgebra.bot_coe + theorem lie_subalgebra.bot_coe_submodule + theorem lie_subalgebra.coe_hom_of_le +/- theorem lie_subalgebra.coe_set_eq + theorem lie_subalgebra.coe_submodule_le_coe_submodule + theorem lie_subalgebra.coe_to_submodule - theorem lie_subalgebra.coe_to_submodule_eq + theorem lie_subalgebra.coe_to_submodule_eq_iff + theorem lie_subalgebra.coe_to_submodule_mk + def lie_subalgebra.comap + theorem lie_subalgebra.eq_bot_iff + theorem lie_subalgebra.gc_map_comap + def lie_subalgebra.hom_of_le + theorem lie_subalgebra.hom_of_le_apply + theorem lie_subalgebra.hom_of_le_injective + theorem lie_subalgebra.inf_coe + theorem lie_subalgebra.inf_coe_to_submodule + theorem lie_subalgebra.le_def +/- def lie_subalgebra.map + theorem lie_subalgebra.map_le_iff_le_comap + theorem lie_subalgebra.mem_bot + theorem lie_subalgebra.mem_carrier - theorem lie_subalgebra.mem_coe' +/- theorem lie_subalgebra.mem_coe + theorem lie_subalgebra.mem_coe_submodule + theorem lie_subalgebra.mem_inf +/- theorem lie_subalgebra.mem_map_submodule + theorem lie_subalgebra.mem_top +/- theorem lie_subalgebra.range_incl + theorem lie_subalgebra.subsingleton_of_bot + theorem lie_subalgebra.top_coe + theorem lie_subalgebra.top_coe_submodule + theorem lie_subalgebra.well_founded_of_noetherian 2021-02-17 11:38:41 d43a3ba feat(analysis/normed_space/inner_product): norm is smooth at `x ≠ 0` (#6275) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem differentiable.dist + theorem differentiable.norm + theorem differentiable_at.dist + theorem differentiable_at.norm + theorem differentiable_on.dist + theorem differentiable_on.norm + theorem differentiable_within_at.dist + theorem differentiable_within_at.norm + theorem times_cont_diff.dist + theorem times_cont_diff.norm + theorem times_cont_diff_at.dist + theorem times_cont_diff_at.norm + theorem times_cont_diff_at_norm + theorem times_cont_diff_on.dist + theorem times_cont_diff_on.norm + theorem times_cont_diff_within_at.dist + theorem times_cont_diff_within_at.norm 2021-02-17 11:38:40 b190131 feat(data/int/basic): lemmas about int and int.to_nat (#6253) Golfing welcome. This adds a `@[simp]` lemma `int.add_minus_one : i + -1 = i - 1`, which I think is mostly helpful, but needs to be turned off in `data/num/lemmas.lean`, which is perhaps an argument against it. I've also added a lemma ``` @[simp] lemma lt_self_iff_false [preorder α] (a : α) : a < a ↔ false := ``` (not just for `int`), which I've often found useful (e.g. `simpa` works well when it can reduce a hypothesis to `false`). This lemma seems harmless, but I'm happy to hear objections if it is too general. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/data/int/basic.lean + theorem int.add_minus_one + theorem int.coe_pred_of_pos + theorem int.neg_succ_not_nonneg + theorem int.neg_succ_not_pos + theorem int.neg_succ_sub_one + theorem int.pred_to_nat + theorem int.succ_coe_nat_pos + theorem int.to_nat_pred_coe_of_pos Modified src/data/num/lemmas.lean Modified src/data/rat/basic.lean Modified src/data/string/basic.lean Modified src/group_theory/free_group.lean Modified src/order/basic.lean + theorem lt_self_iff_false 2021-02-17 11:38:39 8b8a5a2 feat(category/eq_to_hom): lemmas to replace rewriting in objects with eq_to_hom (#6252) This adds two lemmas which replace expressions in which we've used `eq.mpr` to rewrite the source or target of a morphism, replacing the `eq.mpr` by composition with an `eq_to_hom`. Possibly we just shouldn't add these ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean + theorem category_theory.congr_arg_mpr_hom_left + theorem category_theory.congr_arg_mpr_hom_right Modified src/logic/basic.lean + theorem congr_arg_refl + theorem congr_fun_congr_arg + theorem congr_fun_rfl + theorem congr_refl_left + theorem congr_refl_right 2021-02-17 11:38:38 ea1cff4 feat(linear_algebra/pi): ext lemma for `f : (Π i, M i) →ₗ[R] N` (#6233) ESTIMATED CHANGES Modified src/algebra/big_operators/pi.lean + theorem add_monoid_hom.functions_ext' Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/std_basis.lean + theorem linear_map.coe_std_basis + theorem linear_map.pi_ext' + theorem linear_map.pi_ext'_iff + theorem linear_map.pi_ext + theorem linear_map.pi_ext_iff 2021-02-17 11:38:37 0c61fc4 feat(group_theory): prove the 2nd isomorphism theorem for groups (#6187) Define an `inclusion` homomorphism from a subgroup `H` contained in `K` to `K`. Add instance of `subgroup.normal` to `H ∩ N` in `H` whenever `N` is normal and use it to prove the 2nd isomorphism theorem for groups. ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + def quotient_group.equiv_quotient_of_eq Modified src/group_theory/subgroup.lean + theorem subgroup.coe_inclusion + theorem subgroup.comap_subtype_inf_left + theorem subgroup.comap_subtype_inf_right + def subgroup.inclusion + theorem subgroup.subtype_comp_inclusion 2021-02-17 11:38:36 9b3008e feat(algebra/ordered_monoid): inequalities involving mul/add (#6171) I couldn't find some statements about inequalities, so I'm adding them. I included all the useful variants I could think of. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean + theorem le_mul_of_le_mul_left + theorem le_mul_of_le_mul_right + theorem le_of_le_mul_of_le_one_left + theorem le_of_le_mul_of_le_one_right + theorem le_of_mul_le_of_one_le_left + theorem le_of_mul_le_of_one_le_right + theorem lt_mul_of_lt_mul_left + theorem lt_mul_of_lt_mul_right + theorem lt_of_lt_mul_of_le_one_left + theorem lt_of_lt_mul_of_le_one_right + theorem lt_of_mul_lt_of_one_le_left + theorem lt_of_mul_lt_of_one_le_right + theorem mul_le_of_le_one_left' + theorem mul_le_of_le_one_right' + theorem mul_le_of_mul_le_left + theorem mul_le_of_mul_le_right + theorem mul_lt_of_mul_lt_left + theorem mul_lt_of_mul_lt_right 2021-02-17 11:38:35 3c15751 feat(ring_theory/ideal/operations) : add lemma prod_eq_bot (#5795) Add lemma `prod_eq_bot` showing that a product of ideals in an integral domain is zero if and only if one of the terms is zero. ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/ideal/operations.lean + theorem ideal.prod_eq_bot Modified src/ring_theory/non_zero_divisors.lean + theorem prod_zero_iff_exists_zero 2021-02-17 07:54:59 11f054b chore(topology/sheaves): speed up slow proofs by tidy (#6274) No changes, just making some proofs by tidy explicit, so the file is not quite as slow as previously. Now compiles with `-T40000`. ESTIMATED CHANGES Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2021-02-17 07:54:58 5258de0 feat(data/fin): refactor `pred_above` (#6125) Currently the signature of `pred_above` is ```lean def pred_above (p : fin (n+1)) (i : fin (n+1)) (hi : i ≠ p) : fin n := ... ``` and its behaviour is "subtract one from `i` if it is greater than `p`". There are two reasons I don't like this much: 1. It's not a total function. 2. Since `succ_above` is exactly a simplicial face map, I'd like `pred_above` to be a simplicial degeneracy map. In this PR I propose replacing this with ```lean def pred_above (p : fin n) (i : fin (n+1)) : fin n := ``` again with the behaviour "subtract one from `i` if it is greater than `p`". ~~Unfortunately, it seems the current `pred_above` really is needed for the sake of `fin.insert_nth`, so this PR has ended up as a half-hearted attempt to replace `pred_above` ESTIMATED CHANGES Modified src/data/fin.lean + def fin.cast_pred + theorem fin.cast_pred_cast_succ + theorem fin.cast_pred_last + theorem fin.cast_pred_mk + theorem fin.cast_pred_zero + theorem fin.cast_succ_cast_pred +/- theorem fin.cast_succ_mk + theorem fin.coe_cast_pred_le_self + theorem fin.coe_cast_pred_lt_iff + def fin.insert_nth' +/- def fin.insert_nth + theorem fin.is_le + theorem fin.le_cast_succ_iff + theorem fin.lt_last_iff_coe_cast_pred + theorem fin.pos_iff_ne_zero +/- def fin.pred_above +/- theorem fin.pred_above_succ_above +/- theorem fin.pred_above_zero + theorem fin.range_succ_above +/- theorem fin.succ_above_pred_above Modified src/data/fintype/basic.lean Modified src/data/set/basic.lean + theorem set.compl_ne_eq_singleton Modified src/data/vector2.lean + theorem vector.remove_nth_insert_nth' - theorem vector.remove_nth_insert_nth_ne Modified src/geometry/manifold/instances/real.lean Modified src/linear_algebra/multilinear.lean 2021-02-17 03:54:44 b2dbfd6 chore(scripts): update nolints.txt (#6276) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-17 03:54:43 d4ef2e8 feat(topology/category/Top): nonempty inverse limit of compact Hausdorff spaces (#6271) The limit of an inverse system of nonempty compact Hausdorff spaces is nonempty, and this can be seen as a generalization of Kőnig's lemma. A future PR will address the weaker generalization that the limit of an inverse system of nonempty finite types is nonempty. This result could be generalized more, to the inverse limit of nonempty compact T0 spaces where all the maps are closed, but I think it involves an essentially different method. ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/category/default.lean + theorem category_theory.hom_of_le_comp + theorem category_theory.hom_of_le_le_of_hom + theorem category_theory.hom_of_le_refl + theorem category_theory.le_of_hom_hom_of_le Modified src/logic/basic.lean + theorem iff_mpr_iff_true_intro Modified src/topology/category/Top/limits.lean + theorem Top.nonempty_limit_cone_of_compact_t2_inverse_system + theorem Top.partial_sections.closed + theorem Top.partial_sections.directed + theorem Top.partial_sections.nonempty + def Top.partial_sections 2021-02-17 03:54:42 bf9ca8b feat(data/set/finite): complement of finite set is infinite (#6266) Add two missing lemmas. One-line proofs due to Yakov Pechersky. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite.infinite_compl + theorem set.infinite_of_finite_compl 2021-02-16 23:59:06 7a7a559 feat(option/basic): add join_eq_none (#6269) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.join_eq_none 2021-02-16 23:59:05 781cc63 feat(data/real/liouville, ring_theory/algebraic): a Liouville number is transcendental! (#6204) This is an annotated proof. It finishes the first half of the Liouville PR. A taste of what is to come in a future PR: a proof that Liouville numbers actually exist! ESTIMATED CHANGES Modified src/data/real/liouville.lean - theorem exists_one_le_pow_mul_dist - theorem exists_pos_real_of_irrational_root + theorem liouville.exists_one_le_pow_mul_dist + theorem liouville.exists_pos_real_of_irrational_root +/- theorem liouville.irrational + theorem liouville.transcendental Modified src/ring_theory/algebraic.lean + def transcendental 2021-02-16 23:59:04 efa6877 feat(algebra/category/Module): the free/forgetful adjunction for R-modules (#6168) ESTIMATED CHANGES Added src/algebra/category/Module/adjunctions.lean + def Module.adj + def Module.free Modified src/data/equiv/mul_add.lean + def mul_equiv.arrow_congr + def mul_equiv.monoid_hom_congr Modified src/data/finsupp/basic.lean + theorem finsupp.induction_linear + theorem finsupp.sum_map_domain_index_add_monoid_hom Modified src/linear_algebra/basic.lean + def linear_map.ring_lmap_equiv_self Modified src/linear_algebra/finsupp.lean + theorem finsupp.lift_apply + theorem finsupp.lift_symm_apply 2021-02-16 23:59:03 3bf7241 feat(algebra/algebra,linear_algebra): add *_equiv.of_left_inverse (#6167) The main purpose of this change is to add equivalences onto the range of a function with a left-inverse: * `algebra_equiv.of_left_inverse` * `linear_equiv.of_left_inverse` * `ring_equiv.of_left_inverse` * `ring_equiv.sof_left_inverse` (the sub***S***emiring version) This also: * Renames `alg_hom.alg_equiv.of_injective` to `alg_equiv.of_injective` * Adds `subalgebra.mem_range_self` and `subsemiring.mem_srange_self` for consistency with `subring.mem_range_self` * Replaces `subring.surjective_onto_range` with `subring.range_restrict_surjective`, which have defeq statements These are computable versions of `*_equiv.of_injective`, with the benefit of having a known inverse, and in the case of `linear_equiv` working for `semiring` and not just `ring`. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem alg_equiv.of_injective_apply + def alg_equiv.of_left_inverse + theorem alg_equiv.of_left_inverse_apply + theorem alg_equiv.of_left_inverse_symm_apply - theorem alg_hom.alg_equiv.of_injective_apply + theorem alg_hom.coe_cod_restrict + theorem alg_hom.mem_range_self + def alg_hom.range_restrict + theorem alg_hom.val_comp_cod_restrict Modified src/field_theory/normal.lean Modified src/field_theory/polynomial_galois_group.lean Modified src/linear_algebra/basic.lean + def linear_equiv.of_left_inverse + theorem linear_equiv.of_left_inverse_apply + theorem linear_equiv.of_left_inverse_symm_apply Modified src/ring_theory/jacobson.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/subring.lean + def ring_equiv.of_left_inverse + theorem ring_equiv.of_left_inverse_apply + theorem ring_equiv.of_left_inverse_symm_apply + theorem ring_hom.range_restrict_surjective - theorem ring_hom.surjective_onto_range Modified src/ring_theory/subsemiring.lean + def ring_equiv.sof_left_inverse + theorem ring_equiv.sof_left_inverse_apply + theorem ring_equiv.sof_left_inverse_symm_apply + theorem ring_hom.mem_srange_self + theorem ring_hom.srange_restrict_surjective 2021-02-16 21:22:44 2289b18 chore(topology/basic): add `continuous_at_congr` and `continuous_at.congr` (#6267) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem continuous_at.congr + theorem continuous_at_congr 2021-02-16 18:36:50 0b4823c doc(*): remove `\\` hack for latex backslashes in markdown (#6263) With leanprover-community/doc-gen#110, these should no longer be needed. ESTIMATED CHANGES Modified src/algebra/lie/classical.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/inverse.lean Modified src/linear_algebra/basic.lean 2021-02-16 18:36:49 16eb4af doc(algebraic_geometry/structure_sheaf): fix latex (#6262) This is broken regardless of the markdown processor: ESTIMATED CHANGES Modified src/algebraic_geometry/structure_sheaf.lean 2021-02-16 18:36:48 7459c21 feat(analysis/special_functions): strict differentiability of `real.exp` and `real.log` (#6256) ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem has_strict_deriv_at.exp + theorem has_strict_deriv_at.log + theorem has_strict_fderiv_at.exp + theorem has_strict_fderiv_at.log - theorem real.has_deriv_at_log_of_pos + theorem real.has_strict_deriv_at_exp + theorem real.has_strict_deriv_at_log + theorem real.has_strict_deriv_at_log_of_pos +/- theorem real.times_cont_diff_at_log + theorem times_cont_diff.log + theorem times_cont_diff_at.log + theorem times_cont_diff_on.log + theorem times_cont_diff_within_at.log 2021-02-16 18:36:47 b0071f3 feat(analysis/special_functions): `sqrt` is infinitely smooth at `x ≠ 0` (#6255) Also move lemmas about differentiability of `sqrt` out from `special_functions/pow` to a new file. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_at.pow + theorem times_cont_diff_on.pow + theorem times_cont_diff_within_at.pow Modified src/analysis/special_functions/pow.lean - theorem deriv_sqrt - theorem deriv_within_sqrt - theorem differentiable.sqrt - theorem differentiable_at.sqrt - theorem differentiable_on.sqrt - theorem differentiable_within_at.sqrt - theorem has_deriv_at.sqrt - theorem has_deriv_within_at.sqrt Added src/analysis/special_functions/sqrt.lean + theorem deriv_sqrt + theorem deriv_within_sqrt + theorem differentiable.sqrt + theorem differentiable_at.sqrt + theorem differentiable_on.sqrt + theorem differentiable_within_at.sqrt + theorem fderiv_sqrt + theorem fderiv_within_sqrt + theorem has_deriv_at.sqrt + theorem has_deriv_within_at.sqrt + theorem has_fderiv_at.sqrt + theorem has_fderiv_within_at.sqrt + theorem has_strict_deriv_at.sqrt + theorem has_strict_fderiv_at.sqrt + theorem measurable.sqrt + theorem real.deriv_sqrt_aux + theorem real.has_deriv_at_sqrt + theorem real.has_strict_deriv_at_sqrt + theorem real.times_cont_diff_at_sqrt + theorem times_cont_diff.sqrt + theorem times_cont_diff_at.sqrt + theorem times_cont_diff_on.sqrt + theorem times_cont_diff_within_at.sqrt 2021-02-16 18:36:46 8a43163 feat(topology/algebra/normed_group): completion of normed groups (#6189) From `lean-liquid` ESTIMATED CHANGES Added src/topology/algebra/normed_group.lean + theorem uniform_space.completion.norm_coe 2021-02-16 18:36:45 35c070f chore(linear_algebra/dfinsupp): make lsum a linear_equiv (#6185) [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Typeclass.20inference.20can't.20fill.20in.20parameters/near/226019081) with a summary of the problem which required the nasty `semimodule_of_linear_map` present here. ESTIMATED CHANGES Modified src/linear_algebra/dfinsupp.lean +/- def dfinsupp.lsum Modified src/linear_algebra/direct_sum_module.lean 2021-02-16 15:40:57 2411d68 doc(algebra/big_operators): fix formatting of library note (#6261) The name of a library note is already used as its title: ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean 2021-02-16 12:05:22 362619e chore(data/equiv/basic): add lemmas about `equiv.cast` (#6246) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.cast_eq_iff_heq + theorem equiv.cast_refl + theorem equiv.cast_symm + theorem equiv.cast_trans 2021-02-16 12:05:21 841b007 doc(control/fold): fix bad markdown (#6245) ESTIMATED CHANGES Modified src/control/fold.lean 2021-02-16 12:05:20 beee5d8 doc(topology/category/*): 5 module docs (#6240) This PR provides module docs to `Top.basic`, `Top.limits`, `Top.adjuntions`, `Top.epi_mono` , `TopCommRing`. Furthermore, a few lines are split to please the line length linter. ESTIMATED CHANGES Modified src/topology/category/Top/adjunctions.lean Modified src/topology/category/Top/basic.lean Modified src/topology/category/Top/epi_mono.lean Modified src/topology/category/Top/limits.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/category/UniformSpace.lean +/- def CpltSepUniformSpace.of 2021-02-16 12:05:19 0716fa4 feat(data/set/intervals/basic): not_mem of various intervals (#6238) `c` is not in a given open/closed/unordered interval if it is outside the bounds of that interval (or if it is not in a superset of that interval). ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.not_mem_subset Modified src/data/set/intervals/basic.lean +/- theorem set.Icc_union_Ici' +/- theorem set.Icc_union_Ici +/- theorem set.Ico_union_Ici' +/- theorem set.Ico_union_Ici +/- theorem set.Iic_union_Icc' +/- theorem set.Iic_union_Icc +/- theorem set.Iic_union_Ioc' +/- theorem set.Iic_union_Ioc +/- theorem set.Iio_union_Ico' +/- theorem set.Iio_union_Ico +/- theorem set.Iio_union_Ioo' +/- theorem set.Iio_union_Ioo +/- theorem set.Ioc_union_Ioi' +/- theorem set.Ioc_union_Ioi +/- theorem set.Ioo_union_Ioi' +/- theorem set.Ioo_union_Ioi + theorem set.not_mem_Icc_of_gt + theorem set.not_mem_Icc_of_lt + theorem set.not_mem_Ici + theorem set.not_mem_Ico_of_ge + theorem set.not_mem_Ico_of_lt + theorem set.not_mem_Iic + theorem set.not_mem_Iio + theorem set.not_mem_Ioc_of_gt + theorem set.not_mem_Ioc_of_le + theorem set.not_mem_Ioi + theorem set.not_mem_Ioo_of_ge + theorem set.not_mem_Ioo_of_le Modified src/data/set/intervals/unordered_interval.lean + theorem set.not_mem_interval_of_gt + theorem set.not_mem_interval_of_lt 2021-02-16 12:05:17 914517b feat(order/well_founded_set): finite antidiagonal of well-founded sets (#6208) Defines `set.add_antidiagonal s t a`, the set of pairs of an element from `s` and an element from `t` that add to `a` If `s` and `t` are well-founded, then constructs a finset version, `finset.add_antidiagonal_of_is_wf` ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.infinite.nonempty Modified src/order/order_iso_nat.lean + theorem exists_increasing_or_nonincreasing_subseq' + theorem exists_increasing_or_nonincreasing_subseq Modified src/order/well_founded_set.lean + theorem finset.mem_mul_antidiagonal + theorem not_well_founded_swap_of_infinite_of_well_order + theorem set.mul_antidiagonal.eq_of_fst_eq_fst + theorem set.mul_antidiagonal.eq_of_snd_eq_snd + theorem set.mul_antidiagonal.finite_of_is_wf + theorem set.mul_antidiagonal.fst_eq_fst_iff_snd_eq_snd + def set.mul_antidiagonal.fst_rel_embedding + def set.mul_antidiagonal.lt_left + theorem set.mul_antidiagonal.mem_mul_antidiagonal + def set.mul_antidiagonal.snd_rel_embedding + def set.mul_antidiagonal 2021-02-16 12:05:16 1a43888 feat(analysis/normed_space/operator_norm): bundle more arguments (#6207) * Drop `lmul_left` in favor of a partially applied `lmul`. * Use `lmul_left_right` in `has_fderiv_at_ring_inverse` and related lemmas. * Add bundled `compL`, `lmulₗᵢ`, `lsmul`. * Make `𝕜` argument in `of_homothety` implicit. * Add `deriv₂` and `bilinear_comp`. ESTIMATED CHANGES Modified src/analysis/analytic/linear.lean + def continuous_linear_map.fpower_series_bilinear + theorem continuous_linear_map.fpower_series_bilinear_radius + def continuous_linear_map.uncurry_bilinear + theorem continuous_linear_map.uncurry_bilinear_apply Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem continuous_linear_map.is_bounded_bilinear_map Modified src/analysis/normed_space/operator_norm.lean + def continuous_linear_map.bilinear_comp + theorem continuous_linear_map.bilinear_comp_apply + theorem continuous_linear_map.coe_deriv₂ + theorem continuous_linear_map.coe_lmul_rightₗᵢ + theorem continuous_linear_map.coe_lmulₗᵢ + def continuous_linear_map.compL + theorem continuous_linear_map.compL_apply + def continuous_linear_map.deriv₂ + theorem continuous_linear_map.flip_apply + def continuous_linear_map.lmul + theorem continuous_linear_map.lmul_apply - def continuous_linear_map.lmul_left - theorem continuous_linear_map.lmul_left_apply - theorem continuous_linear_map.lmul_left_norm +/- def continuous_linear_map.lmul_left_right +/- theorem continuous_linear_map.lmul_left_right_apply - theorem continuous_linear_map.lmul_left_right_norm_le +/- def continuous_linear_map.lmul_right - theorem continuous_linear_map.lmul_right_norm + def continuous_linear_map.lmul_rightₗᵢ + def continuous_linear_map.lmulₗᵢ + def continuous_linear_map.lsmul + theorem continuous_linear_map.map_add₂ + theorem continuous_linear_map.op_norm_lmul + theorem continuous_linear_map.op_norm_lmul_apply + theorem continuous_linear_map.op_norm_lmul_left_right_apply_apply_le + theorem continuous_linear_map.op_norm_lmul_left_right_apply_le + theorem continuous_linear_map.op_norm_lmul_left_right_le + theorem continuous_linear_map.op_norm_lmul_right + theorem continuous_linear_map.op_norm_lmul_right_apply 2021-02-16 12:05:15 8d9eb26 chore(linear_algebra/finsupp): make lsum a linear_equiv (#6183) ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.coe_lsum +/- def finsupp.lsum +/- theorem finsupp.lsum_symm_apply Modified src/linear_algebra/prod.lean 2021-02-16 12:05:14 314f5ad feat(ring_theory/finiteness): add quotient of finitely presented (#6098) I've added `algebra.finitely_presented.quotient`: the quotient of a finitely presented algebra by a finitely generated ideal is finitely presented. To do so I had to prove some preliminary results about finitely generated modules. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem submodule.span_eq_restrict_scalars + theorem submodule.span_le_restrict_scalars Modified src/ring_theory/finiteness.lean + theorem algebra.finitely_presented.of_surjective + theorem algebra.finitely_presented.quotient Modified src/ring_theory/noetherian.lean + theorem submodule.fg_ker_comp + theorem submodule.fg_ker_ring_hom_comp + theorem submodule.fg_restrict_scalars 2021-02-16 12:05:12 3cec1cf feat(apply_fun): handle implicit arguments (#6091) I've modified the way `apply_fun` handles inequalities, by building an intermediate expression before calling `mono` to discharge the `monotone f` subgoal. This has the effect of sometimes filling in implicit arguments successfully, so that `mono` works. In `tests/apply_fun.lean` I've added an example showing this in action ESTIMATED CHANGES Modified src/tactic/apply_fun.lean Modified src/tactic/monotonicity/lemmas.lean Modified test/apply_fun.lean 2021-02-16 12:05:11 d3c5667 feat(number_theory/bernoulli): the odd Bernoulli numbers (greater than 1) are zero (#6056) The proof requires a ring homomorphism between power series to be defined, `eval_mul_hom` . This PR defines it and states some of its properties, along with the result that `e^(ax) * e^(bx) = e^((a + b) x)`, which is needed for the final result, `bernoulli_odd_eq_zero`. ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean + theorem bernoulli_odd_eq_zero Modified src/ring_theory/power_series/basic.lean + theorem power_series.coeff_rescale + theorem power_series.eval_neg_hom_X + theorem power_series.rescale_neg_one_X + theorem power_series.rescale_one + theorem power_series.rescale_zero + theorem power_series.rescale_zero_apply Modified src/ring_theory/power_series/well_known.lean + theorem power_series.exp_mul_exp_eq_exp_add + theorem power_series.exp_mul_exp_neg_eq_one 2021-02-16 12:05:10 2da1ab4 feat(data/equiv): Add lemmas to reduce `@finset.univ (perm (fin n.succ)) _` (#5593) The culmination of these lemmas is that `matrix.det` can now be reduced by a minimally steered simp: ```lean import data.matrix.notation import group_theory.perm.fin import linear_algebra.determinant open finset example {α : Type} [comm_ring α] {a b c d : α} : matrix.det ![![a, b], ![c, d]] = a * d - b * c := begin simp [matrix.det, univ_perm_fin_succ, ←univ_product_univ, sum_product, fin.sum_univ_succ, fin.prod_univ_succ], ring end ``` ESTIMATED CHANGES Added src/data/equiv/option.lean + theorem equiv.option_symm_apply_none_iff + def equiv.remove_none + theorem equiv.remove_none_map_equiv + theorem equiv.remove_none_none + theorem equiv.remove_none_some + theorem equiv.remove_none_symm + theorem equiv.some_remove_none_iff Modified src/data/matrix/notation.lean Added src/group_theory/perm/fin.lean + theorem equiv.perm.decompose_fin.symm_sign + def equiv.perm.decompose_fin + theorem equiv.perm.decompose_fin_symm_apply_one + theorem equiv.perm.decompose_fin_symm_apply_succ + theorem equiv.perm.decompose_fin_symm_apply_zero + theorem equiv.perm.decompose_fin_symm_of_one + theorem equiv.perm.decompose_fin_symm_of_refl + theorem finset.univ_perm_fin_succ Added src/group_theory/perm/option.lean + def equiv.perm.decompose_option + theorem equiv.perm.decompose_option_symm_of_none_apply + theorem equiv.perm.decompose_option_symm_sign + theorem equiv_functor.map_equiv_option_injective + theorem equiv_functor.option.map_none + theorem equiv_functor.option.sign + theorem finset.univ_perm_option + theorem map_equiv_option_one + theorem map_equiv_option_refl + theorem map_equiv_option_swap + theorem map_equiv_remove_none Modified src/linear_algebra/determinant.lean Modified test/matrix.lean 2021-02-16 09:30:21 dc917df feat(category/limits/shapes/zero): lemmas about is_isomorphic 0 (#6251) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/zero.lean + def category_theory.limits.iso_of_is_isomorphic_zero + theorem category_theory.limits.zero_of_source_iso_zero' + theorem category_theory.limits.zero_of_target_iso_zero' 2021-02-16 09:30:20 d7003c1 feat(algebra/category/Module): allow writing (0 : Module R) (#6249) ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean 2021-02-16 09:30:19 2961e79 feat(topology/connected.lean): define pi_0 and prove basic properties (#6188) Define and prove basic properties of pi_0, the functor quotienting a space by its connected components. For dot notation convenience, this PR renames `subset_connected_component` to `is_preconnected.subset_connected_component` and also defines the weaker version `is_connected.subset_connected_component`. ESTIMATED CHANGES Modified src/topology/connected.lean + theorem connected_component_disjoint + theorem connected_component_eq + theorem connected_component_rel_iff + def connected_component_setoid + theorem continuous.image_connected_component_eq_singleton + theorem continuous.image_connected_component_subset + theorem continuous.image_eq_of_equiv + def continuous.pi0_lift + theorem continuous.pi0_lift_continuous + theorem continuous.pi0_lift_factors + theorem continuous.pi0_lift_unique + def continuous.pi0_map + theorem is_connected.subset_connected_component + theorem is_preconnected.subset_connected_component + theorem is_preconnected_connected_component + def pi0 + theorem pi0_lift_unique' + theorem pi0_preimage_image + theorem pi0_preimage_singleton + theorem preimage_connected_component_connected - theorem subset_connected_component + theorem totally_disconnected_space_iff_connected_component_singleton + theorem totally_disconnected_space_iff_connected_component_subsingleton Modified src/topology/path_connected.lean Modified src/topology/separation.lean 2021-02-16 08:09:48 acf2b6d docs(algebraic_geometry/Scheme): fix typo in module docstring (#6254) ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean 2021-02-16 06:42:40 dbe586c chore(scripts): update nolints.txt (#6248) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-02-16 00:20:31 97f7b52 chore(data/logic/unique): there is a unique function with domain pempty (#6243) ESTIMATED CHANGES Modified src/data/fin.lean Modified src/logic/unique.lean 2021-02-15 21:04:25 65fe78a feat(analysis/special_functions/trigonometric): add missing continuity attributes (#6236) I added continuity attributes to lemmas about the continuity of trigonometric functions, e.g. `continuous_sin`, `continuous_cos`, `continuous_tan`, etc. This came up in [this Zulip conversation](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/What's.20new.20in.20Lean.20maths.3F/near/221511451) I also added `real.continuous_tan`. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem real.continuous_tan 2021-02-15 17:15:21 0ed6f7c feat(data/real/liouville, topology/metric_space/basic): further preparations for Liouville (#6201) These lemmas are used to show that a Liouville number is transcendental. The statement that Liouville numbers are transcendental is the next PR in this sequence! ESTIMATED CHANGES Modified src/data/real/liouville.lean + theorem exists_one_le_pow_mul_dist + theorem exists_pos_real_of_irrational_root - theorem is_liouville.irrational - def is_liouville + theorem liouville.irrational + def liouville Modified src/data/set/intervals/basic.lean + theorem set.mem_Icc_iff_abs_le 2021-02-15 13:26:17 26c6fb5 chore(data/set/basic): set.union_univ and set.univ_union (#6239) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.union_univ + theorem set.univ_union 2021-02-15 13:26:16 d6db038 refactor(analysis/normed_space/multilinear): use `≃ₗᵢ` for `curry` equivs (#6232) Also copy some `continuous_linear_equiv` API to `linear_isometry_equiv` (e.g., all API in `analysis.calculus.fderiv`). ESTIMATED CHANGES Modified src/analysis/analytic/inverse.lean Modified src/analysis/analytic/linear.lean Modified src/analysis/calculus/fderiv.lean +/- theorem continuous_linear_equiv.comp_differentiable_at_iff +/- theorem continuous_linear_equiv.comp_differentiable_iff +/- theorem continuous_linear_equiv.comp_differentiable_on_iff +/- theorem continuous_linear_equiv.comp_differentiable_within_at_iff +/- theorem continuous_linear_equiv.comp_fderiv +/- theorem continuous_linear_equiv.comp_fderiv_within +/- theorem continuous_linear_equiv.comp_has_fderiv_at_iff' +/- theorem continuous_linear_equiv.comp_has_fderiv_at_iff +/- theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff' +/- theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff +/- theorem continuous_linear_equiv.comp_has_strict_fderiv_at_iff + theorem linear_isometry_equiv.comp_differentiable_at_iff + theorem linear_isometry_equiv.comp_differentiable_iff + theorem linear_isometry_equiv.comp_differentiable_on_iff + theorem linear_isometry_equiv.comp_differentiable_within_at_iff + theorem linear_isometry_equiv.comp_fderiv + theorem linear_isometry_equiv.comp_fderiv_within + theorem linear_isometry_equiv.comp_has_fderiv_at_iff' + theorem linear_isometry_equiv.comp_has_fderiv_at_iff + theorem linear_isometry_equiv.comp_has_fderiv_within_at_iff' + theorem linear_isometry_equiv.comp_has_fderiv_within_at_iff + theorem linear_isometry_equiv.comp_has_strict_fderiv_at_iff Modified src/analysis/calculus/times_cont_diff.lean + theorem continuous_linear_equiv.times_cont_diff + theorem linear_isometry_equiv.times_cont_diff + theorem linear_isometry_map.times_cont_diff Modified src/analysis/normed_space/basic.lean - theorem coe_norm + theorem submodule.norm_coe + theorem submodule.norm_mk Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry_equiv.coe_coe'' + theorem linear_isometry_equiv.coe_coe' + theorem linear_isometry_equiv.coe_coe - theorem linear_isometry_equiv.coe_symm_to_linear_equiv + theorem linear_isometry_equiv.coe_to_homeomorph + theorem linear_isometry_equiv.coe_to_isometric + theorem linear_isometry_equiv.comp_continuous_iff + theorem linear_isometry_equiv.comp_continuous_on_iff +/- theorem linear_isometry_equiv.diam_image +/- theorem linear_isometry_equiv.ediam_image +/- theorem linear_isometry_equiv.map_eq_iff - def linear_isometry_equiv.to_continuous_linear_equiv + def linear_isometry_equiv.to_homeomorph + theorem linear_isometry_equiv.to_homeomorph_symm + theorem linear_isometry_equiv.to_isometric_symm + theorem linear_isometry_equiv.to_linear_equiv_symm Modified src/analysis/normed_space/multilinear.lean +/- def continuous_multilinear_curry_fin0 - theorem continuous_multilinear_curry_fin0_apply_norm - def continuous_multilinear_curry_fin0_aux - theorem continuous_multilinear_curry_fin0_symm_apply_norm +/- def continuous_multilinear_curry_fin1 - theorem continuous_multilinear_curry_fin1_apply_norm - theorem continuous_multilinear_curry_fin1_symm_apply_norm - def continuous_multilinear_curry_left_equiv_aux - theorem continuous_multilinear_curry_right_equiv_apply_norm - def continuous_multilinear_curry_right_equiv_aux - theorem continuous_multilinear_curry_right_equiv_symm_apply_norm +/- theorem continuous_multilinear_map.curry0_norm +/- theorem continuous_multilinear_map.uncurry0_norm Modified src/geometry/manifold/instances/sphere.lean Modified src/topology/algebra/module.lean +/- def continuous_linear_equiv.to_homeomorph Modified src/topology/metric_space/isometry.lean + theorem isometry.comp_continuous_iff + theorem isometry.comp_continuous_on_iff 2021-02-15 13:26:15 f5c55ae feat(analysis/normed_space/basic): uniform_continuous_norm (#6162) From `lean-liquid` ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean Modified src/analysis/normed_space/basic.lean + theorem dist_zero_left + theorem lipschitz_with_one_norm +/- theorem real.norm_eq_abs + theorem uniform_continuous_nnnorm + theorem uniform_continuous_norm 2021-02-15 13:26:14 0fa1312 feat(linear_algebra/unitary_group): add unitary/orthogonal groups (#5702) ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.star_mul Added src/linear_algebra/unitary_group.lean + def matrix.orthogonal_group + theorem matrix.unitary_group.coe_to_GL + def matrix.unitary_group.embedding_GL + theorem matrix.unitary_group.ext + theorem matrix.unitary_group.ext_iff + theorem matrix.unitary_group.inv_apply + theorem matrix.unitary_group.inv_val + theorem matrix.unitary_group.mul_apply + theorem matrix.unitary_group.mul_val + theorem matrix.unitary_group.one_apply + theorem matrix.unitary_group.one_val + theorem matrix.unitary_group.star_mul_self + def matrix.unitary_group.to_GL + theorem matrix.unitary_group.to_GL_mul + theorem matrix.unitary_group.to_GL_one + def matrix.unitary_group.to_lin' + theorem matrix.unitary_group.to_lin'_mul + theorem matrix.unitary_group.to_lin'_one + def matrix.unitary_group.to_linear_equiv + def matrix.unitary_group + theorem matrix.unitary_submonoid.star_mem + theorem matrix.unitary_submonoid.star_mem_iff + def unitary_submonoid 2021-02-15 10:01:44 9f0687c feat(order/liminf_limsup): liminf_nat_add and liminf_le_of_frequently_le' (#6220) Add `liminf_nat_add (f : ℕ → α) (k : ℕ) : at_top.liminf f = at_top.liminf (λ i, f (i + k))`. Same for `limsup`. Add `liminf_le_of_frequently_le'`, variant of `liminf_le_of_frequently_le` in which the lattice is complete but there is no linear order. Same for `limsup`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem monotone.supr_nat_add + theorem supr_infi_ge_nat_add Modified src/order/liminf_limsup.lean + theorem filter.le_limsup_of_frequently_le' + theorem filter.liminf_le_of_frequently_le' + theorem filter.liminf_nat_add + theorem filter.limsup_nat_add 2021-02-15 03:01:16 1f0bf33 chore(scripts): update nolints.txt (#6234) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-15 03:01:15 0469268 doc(topology/subset_properties): minor change to docstring of `is_compact` (#6231) I'm learning (for the first time) about how to do topology with filters, and this docstring confused me for a second. If there are linguistic reasons for leaving it as it is then fair enough, but it wasn't clear to me on first reading that `a` was independent of the set in the filter. ESTIMATED CHANGES Modified src/topology/subset_properties.lean 2021-02-15 03:01:14 5a6c893 feat(topology/algebra/module): 2 new ext lemmas (#6211) Add ext lemmas for maps `f : M × M₂ →L[R] M₃` and `f : R →L[R] M`. ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/linear_algebra/prod.lean +/- def linear_map.inl +/- def linear_map.inr + theorem linear_map.prod_ext_iff Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_inl + theorem continuous_linear_map.coe_inr + theorem continuous_linear_map.ext_ring + theorem continuous_linear_map.ext_ring_iff + def continuous_linear_map.inl + theorem continuous_linear_map.inl_apply + def continuous_linear_map.inr + theorem continuous_linear_map.inr_apply + def continuous_linear_map.prod_equiv + theorem continuous_linear_map.prod_ext + theorem continuous_linear_map.prod_ext_iff +/- def continuous_linear_map.prodₗ 2021-02-15 03:01:13 c94577a feat(group_theory/free_abelian_group): add module doc and some equivs (#6062) Also add some API for `free_abelian_group.map`. ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean Modified src/group_theory/free_abelian_group.lean + def free_abelian_group.equiv_of_equiv + theorem free_abelian_group.map_comp + theorem free_abelian_group.map_comp_apply + theorem free_abelian_group.map_id + theorem free_abelian_group.map_id_apply + theorem free_abelian_group.map_of_apply + def free_abelian_group.punit_equiv 2021-02-14 23:17:58 6f99407 feat(analysis/calculus/inverse): a function with onto strict derivative is locally onto (#6229) Removes a useless assumption in `map_nhds_eq_of_complemented` (no need to have a completemented subspace). The proof of the local inverse theorem breaks into two parts, local injectivity and local surjectivity. We refactor the local surjectivity part, assuming in the proof only that the derivative is onto. The result is stronger, but the proof is less streamlined since there is no contracting map any more: we give a naive proof from first principles instead of reducing to the fixed point theorem for contracting maps. ESTIMATED CHANGES Modified src/analysis/calculus/implicit.lean - theorem has_strict_fderiv_at.map_nhds_eq - theorem has_strict_fderiv_at.map_nhds_eq_of_complemented Modified src/analysis/calculus/inverse.lean + theorem approximates_linear_on.image_mem_nhds - def approximates_linear_on.inverse_approx_map - theorem approximates_linear_on.inverse_approx_map_contracts_on - theorem approximates_linear_on.inverse_approx_map_dist_self - theorem approximates_linear_on.inverse_approx_map_dist_self_le - theorem approximates_linear_on.inverse_approx_map_fixed_iff - theorem approximates_linear_on.inverse_approx_map_maps_to - theorem approximates_linear_on.inverse_approx_map_sub + theorem approximates_linear_on.map_nhds_eq + theorem approximates_linear_on.open_image - theorem approximates_linear_on.surj_on_closed_ball + theorem approximates_linear_on.surj_on_closed_ball_of_nonlinear_right_inverse + theorem has_strict_fderiv_at.map_nhds_eq_of_surj Modified src/analysis/normed_space/banach.lean + theorem continuous_linear_map.exists_nonlinear_right_inverse_of_surjective + theorem continuous_linear_map.nonlinear_right_inverse.bound + theorem continuous_linear_map.nonlinear_right_inverse.right_inv + structure continuous_linear_map.nonlinear_right_inverse + theorem continuous_linear_map.nonlinear_right_inverse_of_surjective_nnnorm_pos Modified src/data/equiv/basic.lean + theorem equiv.subsingleton_iff 2021-02-14 19:41:17 22b26d3 chore(algebra/group/basic): remove three redundant lemmas (#6197) The following lemmas are changed in this PR (long list because of the additive versions: * `mul_eq_left_iff` for `left_cancel_monoid` is renamed to `mul_right_eq_self` which previously was stated for `group` * `add_eq_left_iff` the additive version is automatically renamed to `add_right_eq_self` * `mul_eq_right_iff` for `right_cancel_monoid` is renamed to `mul_left_eq_self` which previously was stated for `group` * `add_eq_right_iff` the additive version is automatically renamed to `add_left_eq_self` * `left_eq_mul_iff` is renamed to `self_eq_mul_right` to fit the convention above * `left_eq_add_iff` is renamed to `self_eq_add_right` to fit the convention above * `right_eq_mul_iff` is renamed to `self_eq_mul_left` to fit the convention above * `right_eq_add_iff` is renamed to `self_eq_add_left` to fit the convention above * the duplicate `mul_left_eq_self` and `add_left_eq_self` for groups are removed * the duplicate `mul_right_eq_self` and `add_right_eq_self` for groups are removed * `mul_self_iff_eq_one` and `add_self_iff_eq_zero` deal only with the special case `a=b` of the other lemmas. It is therefore removed and the few instances in the library are replaced by one of the above. While I was at it, I provided a module doc for this file. ESTIMATED CHANGES Modified src/algebra/char_zero.lean Modified src/algebra/group/basic.lean - theorem left_eq_mul_iff - theorem mul_eq_left_iff - theorem mul_eq_right_iff +/- theorem mul_left_eq_self +/- theorem mul_right_eq_self - theorem mul_self_iff_eq_one - theorem right_eq_mul_iff + theorem self_eq_mul_left + theorem self_eq_mul_right Modified src/algebra/group/hom.lean Modified src/data/nat/parity.lean Modified src/deprecated/group.lean Modified src/ring_theory/derivation.lean Modified src/topology/algebra/uniform_group.lean 2021-02-14 16:06:00 c35672b feat(analysis/special_functions): strict differentiability of some functions (#6228) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_strict_deriv_at.const_mul + theorem has_strict_deriv_at.const_sub + theorem has_strict_deriv_at.div + theorem has_strict_deriv_at.mul_const + theorem has_strict_deriv_at_iff_has_strict_fderiv_at Modified src/analysis/complex/real_deriv.lean + theorem has_strict_deriv_at.real_of_complex Modified src/analysis/special_functions/exp_log.lean + theorem has_strict_deriv_at.cexp + theorem has_strict_fderiv_at.cexp Modified src/analysis/special_functions/trigonometric.lean + theorem complex.has_strict_deriv_at_cos + theorem complex.has_strict_deriv_at_cosh + theorem complex.has_strict_deriv_at_sin + theorem complex.has_strict_deriv_at_sinh + theorem complex.has_strict_deriv_at_tan + theorem has_strict_deriv_at.arctan + theorem has_strict_deriv_at.ccos + theorem has_strict_deriv_at.ccosh + theorem has_strict_deriv_at.cos + theorem has_strict_deriv_at.cosh + theorem has_strict_deriv_at.csin + theorem has_strict_deriv_at.csinh + theorem has_strict_deriv_at.sin + theorem has_strict_deriv_at.sinh + theorem has_strict_fderiv_at.arctan + theorem has_strict_fderiv_at.ccos + theorem has_strict_fderiv_at.ccosh + theorem has_strict_fderiv_at.cos + theorem has_strict_fderiv_at.cosh + theorem has_strict_fderiv_at.csin + theorem has_strict_fderiv_at.csinh + theorem has_strict_fderiv_at.sin + theorem has_strict_fderiv_at.sinh + theorem real.has_strict_deriv_at_arccos + theorem real.has_strict_deriv_at_arcsin + theorem real.has_strict_deriv_at_arctan + theorem real.has_strict_deriv_at_cos + theorem real.has_strict_deriv_at_cosh + theorem real.has_strict_deriv_at_sin + theorem real.has_strict_deriv_at_sinh + theorem real.has_strict_deriv_at_tan 2021-02-14 16:05:59 713432f chore(.github/PULL_REQUEST_TEMPLATE.md): clarify instructions (#6222) ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md 2021-02-14 14:16:51 b9af22d fix(*): arsinh and complex.basic had module docs at the wrong position (#6230) This is fixed and the module doc for `complex.basic` is expanded slightly. ESTIMATED CHANGES Modified src/analysis/special_functions/arsinh.lean Modified src/data/complex/basic.lean 2021-02-14 03:41:08 c54a8d0 chore(scripts): update nolints.txt (#6227) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-14 01:28:45 86e8a5d fix(data/real/basic): remove `decidable_le` field in `real.conditionally_complete_linear_order` (#6223) Because of this field, `@conditionally_complete_linear_order.to_linear_order ℝ real.conditionally_complete_linear_order` and `real.linear_order` were not defeq See : https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Different.20linear.20orders.20on.20reals/near/226257434 Co-authored by @urkud ESTIMATED CHANGES Modified src/data/real/basic.lean 2021-02-13 22:35:47 b0aae27 feat(algebra/category/Group/adjunctions): free_group-forgetful adjunction (#6190) Furthermore, a module doc for `group_theory/free_group` is provided and a few lines in this file are split. ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean + def Group.adj + def Group.free Modified src/group_theory/free_group.lean +/- def free_group.free_group_unit_equiv_int + def free_group.lift +/- theorem free_group.mul_bind +/- theorem free_group.reduce.not 2021-02-13 22:35:46 07600ee feat(computability/epsilon_nfa): epsilon-NFA definition (#6108) ESTIMATED CHANGES Added src/computability/epsilon_NFA.lean + def NFA.to_ε_NFA + theorem NFA.to_ε_NFA_correct + theorem NFA.to_ε_NFA_eval_from_match + theorem NFA.to_ε_NFA_ε_closure + def ε_NFA.accepts + def ε_NFA.eval + def ε_NFA.eval_from + theorem ε_NFA.pumping_lemma + def ε_NFA.step_set + def ε_NFA.to_NFA + theorem ε_NFA.to_NFA_correct + theorem ε_NFA.to_NFA_eval_from_match + inductive ε_NFA.ε_closure + structure ε_NFA 2021-02-13 19:32:58 ac19b4a refactor(measure_theory/l1_space): remove one of the two definitions of L1 space (#6058) Currently, we have two independent versions of the `L^1` space in mathlib: one coming from the general family of `L^p` spaces, the other one is an ad hoc construction based on the `integrable` predicate used in the construction of the Bochner integral. We remove the second construction, and use instead the `L^1` space coming from the family of `L^p` spaces to construct the Bochner integral. Still, we keep the `integrable` predicate as it is generally useful, and show that it coincides with the `mem_Lp 1` predicate. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/analysis/convex/integral.lean Modified src/analysis/normed_space/basic.lean + theorem coe_norm_subgroup Modified src/measure_theory/ae_eq_fun.lean + theorem measure_theory.ae_eq_fun.ext_iff Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.L1.continuous_integral + def measure_theory.L1.integral + theorem measure_theory.L1.integral_add + def measure_theory.L1.integral_clm + theorem measure_theory.L1.integral_eq + theorem measure_theory.L1.integral_eq_integral + theorem measure_theory.L1.integral_eq_norm_pos_part_sub + theorem measure_theory.L1.integral_neg + theorem measure_theory.L1.integral_of_fun_eq_integral + theorem measure_theory.L1.integral_smul + theorem measure_theory.L1.integral_sub + theorem measure_theory.L1.integral_zero + theorem measure_theory.L1.norm_Integral_le_one + theorem measure_theory.L1.norm_eq_integral_norm + theorem measure_theory.L1.norm_integral_le + theorem measure_theory.L1.norm_of_fun_eq_integral_norm + theorem measure_theory.L1.simple_func.add_to_simple_func + theorem measure_theory.L1.simple_func.coe_add + theorem measure_theory.L1.simple_func.coe_coe + theorem measure_theory.L1.simple_func.coe_neg + theorem measure_theory.L1.simple_func.coe_neg_part + theorem measure_theory.L1.simple_func.coe_pos_part + theorem measure_theory.L1.simple_func.coe_smul + theorem measure_theory.L1.simple_func.coe_sub + def measure_theory.L1.simple_func.coe_to_L1 + theorem measure_theory.L1.simple_func.coe_zero + theorem measure_theory.L1.simple_func.dist_eq + theorem measure_theory.L1.simple_func.dist_to_simple_func + theorem measure_theory.L1.simple_func.edist_eq + def measure_theory.L1.simple_func.integral + theorem measure_theory.L1.simple_func.integral_L1_eq_integral + theorem measure_theory.L1.simple_func.integral_add + def measure_theory.L1.simple_func.integral_clm + theorem measure_theory.L1.simple_func.integral_congr + theorem measure_theory.L1.simple_func.integral_eq_integral + theorem measure_theory.L1.simple_func.integral_eq_lintegral + theorem measure_theory.L1.simple_func.integral_eq_norm_pos_part_sub + theorem measure_theory.L1.simple_func.integral_smul + theorem measure_theory.L1.simple_func.lintegral_edist_to_simple_func_lt_top + def measure_theory.L1.simple_func.neg_part + theorem measure_theory.L1.simple_func.neg_part_to_simple_func + theorem measure_theory.L1.simple_func.neg_to_simple_func + theorem measure_theory.L1.simple_func.norm_Integral_le_one + theorem measure_theory.L1.simple_func.norm_eq + theorem measure_theory.L1.simple_func.norm_eq_integral + theorem measure_theory.L1.simple_func.norm_integral_le_norm + theorem measure_theory.L1.simple_func.norm_to_L1 + theorem measure_theory.L1.simple_func.norm_to_simple_func + def measure_theory.L1.simple_func.pos_part + theorem measure_theory.L1.simple_func.pos_part_to_simple_func + theorem measure_theory.L1.simple_func.smul_to_simple_func + theorem measure_theory.L1.simple_func.sub_to_simple_func + def measure_theory.L1.simple_func.to_L1 + theorem measure_theory.L1.simple_func.to_L1_add + theorem measure_theory.L1.simple_func.to_L1_eq_mk + theorem measure_theory.L1.simple_func.to_L1_eq_to_L1 + theorem measure_theory.L1.simple_func.to_L1_neg + theorem measure_theory.L1.simple_func.to_L1_smul + theorem measure_theory.L1.simple_func.to_L1_sub + theorem measure_theory.L1.simple_func.to_L1_to_simple_func + theorem measure_theory.L1.simple_func.to_L1_zero + def measure_theory.L1.simple_func.to_simple_func + theorem measure_theory.L1.simple_func.to_simple_func_eq_to_fun + theorem measure_theory.L1.simple_func.to_simple_func_to_L1 + theorem measure_theory.L1.simple_func.zero_to_simple_func + def measure_theory.L1.simple_func - theorem measure_theory.l1.continuous_integral - def measure_theory.l1.integral - theorem measure_theory.l1.integral_add - def measure_theory.l1.integral_clm - theorem measure_theory.l1.integral_eq - theorem measure_theory.l1.integral_eq_integral - theorem measure_theory.l1.integral_eq_norm_pos_part_sub - theorem measure_theory.l1.integral_neg - theorem measure_theory.l1.integral_of_fun_eq_integral - theorem measure_theory.l1.integral_smul - theorem measure_theory.l1.integral_sub - theorem measure_theory.l1.integral_zero - theorem measure_theory.l1.norm_Integral_le_one - theorem measure_theory.l1.norm_eq_integral_norm - theorem measure_theory.l1.norm_integral_le - theorem measure_theory.l1.norm_of_fun_eq_integral_norm - theorem measure_theory.l1.simple_func.add_to_simple_func - theorem measure_theory.l1.simple_func.coe_add - theorem measure_theory.l1.simple_func.coe_coe - theorem measure_theory.l1.simple_func.coe_neg - theorem measure_theory.l1.simple_func.coe_neg_part - theorem measure_theory.l1.simple_func.coe_pos_part - theorem measure_theory.l1.simple_func.coe_smul - theorem measure_theory.l1.simple_func.coe_sub - def measure_theory.l1.simple_func.coe_to_l1 - theorem measure_theory.l1.simple_func.coe_zero - theorem measure_theory.l1.simple_func.dist_eq - theorem measure_theory.l1.simple_func.dist_to_simple_func - theorem measure_theory.l1.simple_func.edist_eq - def measure_theory.l1.simple_func.integral - theorem measure_theory.l1.simple_func.integral_add - def measure_theory.l1.simple_func.integral_clm - theorem measure_theory.l1.simple_func.integral_congr - theorem measure_theory.l1.simple_func.integral_eq_integral - theorem measure_theory.l1.simple_func.integral_eq_lintegral - theorem measure_theory.l1.simple_func.integral_eq_norm_pos_part_sub - theorem measure_theory.l1.simple_func.integral_l1_eq_integral - theorem measure_theory.l1.simple_func.integral_smul - theorem measure_theory.l1.simple_func.lintegral_edist_to_simple_func_lt_top - def measure_theory.l1.simple_func.neg_part - theorem measure_theory.l1.simple_func.neg_part_to_simple_func - theorem measure_theory.l1.simple_func.neg_to_simple_func - theorem measure_theory.l1.simple_func.norm_Integral_le_one - theorem measure_theory.l1.simple_func.norm_eq' - theorem measure_theory.l1.simple_func.norm_eq - theorem measure_theory.l1.simple_func.norm_eq_integral - theorem measure_theory.l1.simple_func.norm_integral_le_norm - theorem measure_theory.l1.simple_func.norm_of_simple_func - theorem measure_theory.l1.simple_func.norm_to_simple_func - def measure_theory.l1.simple_func.of_simple_func - theorem measure_theory.l1.simple_func.of_simple_func_add - theorem measure_theory.l1.simple_func.of_simple_func_eq_mk - theorem measure_theory.l1.simple_func.of_simple_func_eq_of_fun - theorem measure_theory.l1.simple_func.of_simple_func_neg - theorem measure_theory.l1.simple_func.of_simple_func_smul - theorem measure_theory.l1.simple_func.of_simple_func_sub - theorem measure_theory.l1.simple_func.of_simple_func_to_simple_func - theorem measure_theory.l1.simple_func.of_simple_func_zero - def measure_theory.l1.simple_func.pos_part - theorem measure_theory.l1.simple_func.pos_part_to_simple_func - theorem measure_theory.l1.simple_func.smul_to_simple_func - theorem measure_theory.l1.simple_func.sub_to_simple_func - def measure_theory.l1.simple_func.to_simple_func - theorem measure_theory.l1.simple_func.to_simple_func_eq_to_fun - theorem measure_theory.l1.simple_func.to_simple_func_of_simple_func - theorem measure_theory.l1.simple_func.zero_to_simple_func - def measure_theory.l1.simple_func + theorem measure_theory.tendsto_integral_of_L1 - theorem measure_theory.tendsto_integral_of_l1 Modified src/measure_theory/l1_space.lean + theorem measure_theory.L1.ae_measurable_coe_fn + theorem measure_theory.L1.dist_def + theorem measure_theory.L1.edist_def + theorem measure_theory.L1.has_finite_integral_coe_fn + theorem measure_theory.L1.integrable_coe_fn + theorem measure_theory.L1.measurable_coe_fn + theorem measure_theory.L1.norm_def + theorem measure_theory.L1.norm_sub_eq_lintegral + theorem measure_theory.L1.of_real_norm_eq_lintegral + theorem measure_theory.L1.of_real_norm_sub_eq_lintegral +/- def measure_theory.ae_eq_fun.integrable + theorem measure_theory.ae_eq_fun.integrable_iff_mem_L1 +/- theorem measure_theory.ae_eq_fun.integrable_zero + theorem measure_theory.integrable.coe_fn_to_L1 + theorem measure_theory.integrable.edist_to_L1_to_L1 + theorem measure_theory.integrable.edist_to_L1_zero + theorem measure_theory.integrable.norm_to_L1 + theorem measure_theory.integrable.norm_to_L1_eq_lintegral_norm + def measure_theory.integrable.to_L1 + theorem measure_theory.integrable.to_L1_add + theorem measure_theory.integrable.to_L1_coe_fn + theorem measure_theory.integrable.to_L1_eq_mk + theorem measure_theory.integrable.to_L1_eq_to_L1_iff + theorem measure_theory.integrable.to_L1_neg + theorem measure_theory.integrable.to_L1_smul + theorem measure_theory.integrable.to_L1_sub + theorem measure_theory.integrable.to_L1_zero - theorem measure_theory.l1.add_to_fun - theorem measure_theory.l1.coe_add - theorem measure_theory.l1.coe_coe - theorem measure_theory.l1.coe_neg - theorem measure_theory.l1.coe_pos_part - theorem measure_theory.l1.coe_smul - theorem measure_theory.l1.coe_sub - theorem measure_theory.l1.coe_zero - theorem measure_theory.l1.continuous_neg_part - theorem measure_theory.l1.continuous_pos_part - theorem measure_theory.l1.dist_eq - theorem measure_theory.l1.dist_to_fun - theorem measure_theory.l1.edist_eq - theorem measure_theory.l1.integrable_norm - theorem measure_theory.l1.lintegral_edist_to_fun_lt_top - theorem measure_theory.l1.measurable_norm - theorem measure_theory.l1.mk_to_fun - def measure_theory.l1.neg_part - theorem measure_theory.l1.neg_part_to_fun_eq_max - theorem measure_theory.l1.neg_part_to_fun_eq_min - theorem measure_theory.l1.neg_to_fun - theorem measure_theory.l1.norm_eq - theorem measure_theory.l1.norm_eq_lintegral - theorem measure_theory.l1.norm_eq_nnnorm_to_fun - theorem measure_theory.l1.norm_eq_norm_to_fun - theorem measure_theory.l1.norm_le_norm_of_ae_le - theorem measure_theory.l1.norm_of_fun - theorem measure_theory.l1.norm_of_fun_eq_lintegral_norm - theorem measure_theory.l1.norm_sub_eq_lintegral - def measure_theory.l1.of_fun - theorem measure_theory.l1.of_fun_add - theorem measure_theory.l1.of_fun_eq_mk - theorem measure_theory.l1.of_fun_eq_of_fun - theorem measure_theory.l1.of_fun_neg - theorem measure_theory.l1.of_fun_smul - theorem measure_theory.l1.of_fun_sub - theorem measure_theory.l1.of_fun_to_fun - theorem measure_theory.l1.of_fun_zero - theorem measure_theory.l1.of_real_norm_eq_lintegral - theorem measure_theory.l1.of_real_norm_sub_eq_lintegral - def measure_theory.l1.pos_part - theorem measure_theory.l1.pos_part_to_fun - theorem measure_theory.l1.smul_to_fun - theorem measure_theory.l1.sub_to_fun - theorem measure_theory.l1.to_fun_of_fun - theorem measure_theory.l1.zero_to_fun - def measure_theory.l1 + theorem measure_theory.mem_ℒp.integrable + theorem measure_theory.mem_ℒp_one_iff_integrable Modified src/measure_theory/prod.lean Modified src/measure_theory/set_integral.lean - def continuous_linear_map.comp_l1 - def continuous_linear_map.comp_l1L - theorem continuous_linear_map.comp_l1_apply - def continuous_linear_map.comp_l1ₗ + theorem continuous_linear_map.continuous_integral_comp_L1 - theorem continuous_linear_map.continuous_integral_comp_l1 - theorem continuous_linear_map.integrable_comp_l1 + theorem continuous_linear_map.integral_comp_L1_comm + theorem continuous_linear_map.integral_comp_Lp - theorem continuous_linear_map.integral_comp_l1 - theorem continuous_linear_map.integral_comp_l1_comm - theorem continuous_linear_map.measurable_comp_l1 - theorem continuous_linear_map.norm_comp_l1_apply_le - theorem continuous_linear_map.norm_comp_l1_le - theorem continuous_linear_map.norm_compl1L_le Modified src/measure_theory/simple_func_dense.lean + theorem measure_theory.simple_func.tendsto_approx_on_L1_edist - theorem measure_theory.simple_func.tendsto_approx_on_l1_edist + theorem measure_theory.simple_func.tendsto_approx_on_univ_L1 + theorem measure_theory.simple_func.tendsto_approx_on_univ_L1_edist - theorem measure_theory.simple_func.tendsto_approx_on_univ_l1 - theorem measure_theory.simple_func.tendsto_approx_on_univ_l1_edist Modified src/order/galois_connection.lean 2021-02-13 17:23:27 ad5a81d chore(measure_theory/measure_space): add some `simp`/`mono` tags (#6221) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.ae_eq_empty +/- theorem measure_theory.measure_mono_ae +/- theorem measure_theory.union_ae_eq_right 2021-02-13 14:34:16 3cfaa0b feat(measure_theory/measure_space): add ae_imp_iff (#6218) This is `filter.eventually_imp_distrib_left` specialized to the measure.ae filter. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_imp_iff +/- theorem measure_theory.measure.sub_apply_eq_zero_of_restrict_le_restrict 2021-02-13 12:18:12 d0456d3 feat(measure_theory/borel_space): add ae_measurable versions of finset.measurable_prod and measurable.ennreal_tsum (#6217) Also add an ae_measurable version of `ae_lt_top`. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem ae_measurable.ennreal_tsum + theorem finset.ae_measurable_prod Modified src/measure_theory/integration.lean + theorem measure_theory.ae_lt_top' 2021-02-13 12:18:11 42bb0c4 feat(ring_theory/ideal/operations): add first isomorphism theorem for rings and algebras (#6166) The first isomorphism theorem for commutative rings `quotient_ker_equiv_of_surjective` and algebras `quotient_ker_alg_equiv_of_surjective`. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/ring_theory/ideal/operations.lean + theorem ideal.ker_lift.map_smul + def ideal.ker_lift_alg + theorem ideal.ker_lift_alg_injective + theorem ideal.ker_lift_alg_mk + theorem ideal.ker_lift_alg_to_ring_hom + theorem ideal.quotient_ker_alg_equiv_of_right_inverse.apply + def ideal.quotient_ker_alg_equiv_of_right_inverse + theorem ideal.quotient_ker_alg_equiv_of_right_inverse_symm.apply + def ring_hom.ker_lift + theorem ring_hom.ker_lift_injective + theorem ring_hom.ker_lift_mk + theorem ring_hom.quotient_ker_equiv_of_right_inverse.apply + theorem ring_hom.quotient_ker_equiv_of_right_inverse.symm.apply + def ring_hom.quotient_ker_equiv_of_right_inverse 2021-02-13 12:18:10 8b59d97 feat(linear_algebra/pi_tensor_product): tmul distributes over tprod (#6126) This adds the equivalence `(⨂[R] i : ι, M) ⊗[R] (⨂[R] i : ι₂, M) ≃ₗ[R] ⨂[R] i : ι ⊕ ι₂, M`. Working with dependently-typed `M` here is more trouble than it's worth, as we don't have any typeclass structures on `sum.elim M N` right now, This is one of the pieces needed to provide a ring structure on `⨁ n, ⨂[R] i : fin n, M`, but that's left for another time. ESTIMATED CHANGES Modified src/linear_algebra/pi_tensor_product.lean + def pi_tensor_product.tmul_equiv + theorem pi_tensor_product.tmul_equiv_apply + theorem pi_tensor_product.tmul_equiv_symm_apply 2021-02-13 09:47:57 445e6fc refactor(topology/{basic,continuous_on}): review `continuous_if` etc (#6182) * move `continuous_if` to `topology/continuous_on`, use weaker assumptions; * add `piecewise` versions of various `if` lemmas; * add a specialized `continuous_if_le` version; * use dot notation for `continuous_on.if` and `continuous_on.if'`; * minor golfing here and there. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.tendsto.if + theorem filter.tendsto.piecewise - theorem filter.tendsto_if Modified src/topology/algebra/ordered.lean + theorem continuous.if_le + theorem continuous_if_le Modified src/topology/basic.lean - theorem continuous_if Modified src/topology/continuous_on.lean + theorem continuous.if + theorem continuous.piecewise +/- theorem continuous_if' + theorem continuous_if + theorem continuous_on.if' + theorem continuous_on.if + theorem continuous_on.piecewise' + theorem continuous_on.piecewise - theorem continuous_on_if' - theorem continuous_on_if + theorem continuous_piecewise + theorem filter.tendsto.if_nhds_within + theorem filter.tendsto.piecewise_nhds_within + theorem is_open_inter_union_inter_compl' + theorem is_open_inter_union_inter_compl - theorem tendsto_if_nhds_within Modified src/topology/order.lean + theorem is_open_iff_continuous_mem Modified src/topology/path_connected.lean 2021-02-13 09:47:56 5c22531 doc(data/polynomial/denoms_clearable): fix typo in the doc-string (#6174) ESTIMATED CHANGES Modified src/data/polynomial/denoms_clearable.lean 2021-02-13 07:17:57 5bee826 feat(data/int/gcd): some missing lemmas about int.gcd (#6212) As requested [on zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/different.20gcd's.3F/near/226203698). ESTIMATED CHANGES Modified src/data/int/gcd.lean + def int.gcd_a + def int.gcd_b + theorem int.gcd_eq_gcd_ab Modified src/data/int/modeq.lean Modified src/ring_theory/int/basic.lean + theorem int.nat_abs_euclidean_domain_gcd 2021-02-13 07:17:56 0544641 chore(analysis/special_functions/pow): review lemmas about measurability of `cpow`/`rpow` (#6209) * prove that `complex.cpow` is measurable; * deduce measurability of `real.rpow` from definition, not continuity. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem measurable.cpow +/- theorem measurable.ennreal_rpow +/- theorem measurable.ennreal_rpow_const +/- theorem measurable.nnreal_rpow +/- theorem measurable.nnreal_rpow_const - theorem nnreal.measurable_rpow - theorem nnreal.measurable_rpow_const - theorem real.measurable_rpow Modified src/analysis/special_functions/trigonometric.lean Modified src/measure_theory/borel_space.lean 2021-02-13 07:17:55 ee9197a chore(topology/algebra/module): review `coe` lemmas (#6206) * add `@[simp]` to `continuous_linear_equiv.coe_coe`, remove from `continuous_linear_equiv.coe_apply`; * golf `continuous_linear_equiv.ext`; * given `(e e' : M ≃L[R] M₂)`, simplify `(e : M →L[R] M₂) = e'` to `e = e'`; * add `@[simp]` to `continuous_linear_equiv.symm_comp_self` and `continuous_linear_equiv.self_comp_symm`; * drop `symm_comp_self'` and `self_comp_symm'`: now `coe_coe` simplifies LHS to `symm_comp_self`/`self_comp_symm`; * `continuous_linear_equiv.coord` is no longer an `abbreviation`: without this change `coe_coe` prevents us from using lemmas about `coord`; ESTIMATED CHANGES Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_equiv.coe_to_span_nonzero_singleton_symm +/- def continuous_linear_equiv.coord +/- theorem continuous_linear_equiv.coord_norm +/- theorem continuous_linear_equiv.coord_self + theorem continuous_linear_equiv.coord_to_span_nonzero_singleton + theorem continuous_linear_equiv.to_span_nonzero_singleton_coord Modified src/topology/algebra/module.lean +/- theorem continuous_linear_equiv.coe_apply +/- theorem continuous_linear_equiv.coe_coe + theorem continuous_linear_equiv.coe_inj + theorem continuous_linear_equiv.coe_injective - theorem continuous_linear_equiv.self_comp_symm' +/- theorem continuous_linear_equiv.self_comp_symm - theorem continuous_linear_equiv.symm_comp_self' +/- theorem continuous_linear_equiv.symm_comp_self + theorem continuous_linear_equiv.to_linear_equiv_injective 2021-02-13 07:17:54 43bfd90 chore(group_theory/free_group): clean up unnecessary lemmas (#6200) This removes: * `free_abelian_group.lift.{add,sub,neg,zero}` as these exist already as `(free_abelian_group.lift _).map_{add,sub,neg,zero}` * `free_group.to_group.{mul,one,inv}` as these exist already as `(free_group.to_group _).map_{mul,one,inv}` * `free_group.map.{mul,one,inv}` as these exist already as `(free_group.map _).map_{mul,one,inv}` * `free_group.prod.{mul,one,inv}` as these exist already as `free_group.prod.map_{mul,one,inv}` * `to_group.is_group_hom` as this is provided automatically for `monoid_hom`s and renames * `free_group.sum.{mul,one,inv}` to `free_group.sum.map_{mul,one,inv}` These lemmas are already simp lemmas thanks to the functions they relate to being bundled homs. While the new spelling is slightly longer, it makes it clear that the entire set of `monoid_hom` lemmas apply, not just the three that were copied across. This also wraps some lines to make the linter happier about these files. ESTIMATED CHANGES Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean - theorem free_group.map.inv - theorem free_group.map.mul - theorem free_group.map.one +/- theorem free_group.map.unique - theorem free_group.prod.inv - theorem free_group.prod.mul - theorem free_group.prod.one - theorem free_group.sum.inv + theorem free_group.sum.map_inv + theorem free_group.sum.map_mul + theorem free_group.sum.map_one - theorem free_group.sum.mul - theorem free_group.sum.one - theorem free_group.to_group.inv - theorem free_group.to_group.mul - theorem free_group.to_group.one Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean 2021-02-13 05:21:53 759ebc0 chore(analysis/calculus/local_extr): minor golfing (#6214) ESTIMATED CHANGES Modified src/analysis/calculus/local_extr.lean 2021-02-13 03:56:07 5869039 chore(scripts): update nolints.txt (#6213) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-13 00:49:42 37459ee doc(docs/overview.yaml): Added Hall's theorem (#6205) Also fixed module documentation to use inline math mode (and removed the dreaded "any"). ESTIMATED CHANGES Modified docs/overview.yaml Modified src/combinatorics/hall.lean 2021-02-13 00:49:41 06fdc08 chore(algebra/group/pi): replace a lemma with @[simps] (#6203) ESTIMATED CHANGES Modified src/algebra/group/pi.lean +/- def add_monoid_hom.single - theorem add_monoid_hom.single_apply 2021-02-13 00:49:40 e79bf05 feat(number_theory/ADE_inequality): the inequality 1/p + 1/q + 1/r > 1 (#6156) ESTIMATED CHANGES Added src/number_theory/ADE_inequality.lean + def ADE_inequality.A' + def ADE_inequality.A + def ADE_inequality.D' + def ADE_inequality.E' + def ADE_inequality.E6 + def ADE_inequality.E7 + def ADE_inequality.E8 + theorem ADE_inequality.admissible.one_lt_sum_inv + def ADE_inequality.admissible + theorem ADE_inequality.admissible_A' + theorem ADE_inequality.admissible_D' + theorem ADE_inequality.admissible_E'3 + theorem ADE_inequality.admissible_E'4 + theorem ADE_inequality.admissible_E'5 + theorem ADE_inequality.admissible_E6 + theorem ADE_inequality.admissible_E7 + theorem ADE_inequality.admissible_E8 + theorem ADE_inequality.admissible_of_one_lt_sum_inv + theorem ADE_inequality.admissible_of_one_lt_sum_inv_aux' + theorem ADE_inequality.admissible_of_one_lt_sum_inv_aux + theorem ADE_inequality.classification + theorem ADE_inequality.lt_four + theorem ADE_inequality.lt_six + theorem ADE_inequality.lt_three + def ADE_inequality.sum_inv + theorem ADE_inequality.sum_inv_pqr 2021-02-13 00:49:38 30c2c5b feat(data/fin): cast_succ_mk and other lemmas (#6094) * add lemmas for all the `fin.cast_*` functions which describe what happens to an "explicitly presented" term of `fin n`, built from the constructor * fixes some errors in doc-strings ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/data/fin.lean + theorem fin.cast_add_mk + theorem fin.cast_le_mk + theorem fin.cast_lt_mk + theorem fin.cast_mk + theorem fin.cast_succ_mk + theorem fin.succ_mk 2021-02-13 00:49:36 152ad1f feat(measure_theory/measure_space): add theorems about restrict and subtraction (#5000) This is the next tranche of theorems toward Lebesgue-Radon-Nikodym. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.restrict_apply_self + theorem measure_theory.measure.restrict_eq_self + theorem measure_theory.measure.restrict_sub_eq_restrict_sub_restrict + theorem measure_theory.measure.sub_apply_eq_zero_of_restrict_le_restrict 2021-02-12 21:14:37 dd13f00 feat(data/set/intervals/basic): 24 lemmas about membership of arithmetic operations (#6202) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.add_mem_Icc_iff_left + theorem set.add_mem_Icc_iff_right + theorem set.add_mem_Ico_iff_left + theorem set.add_mem_Ico_iff_right + theorem set.add_mem_Ioc_iff_left + theorem set.add_mem_Ioc_iff_right + theorem set.add_mem_Ioo_iff_left + theorem set.add_mem_Ioo_iff_right + theorem set.inv_mem_Icc_iff + theorem set.inv_mem_Ico_iff + theorem set.inv_mem_Ioc_iff + theorem set.inv_mem_Ioo_iff + theorem set.sub_mem_Icc_iff_left + theorem set.sub_mem_Icc_iff_right + theorem set.sub_mem_Ico_iff_left + theorem set.sub_mem_Ico_iff_right + theorem set.sub_mem_Ioc_iff_left + theorem set.sub_mem_Ioc_iff_right + theorem set.sub_mem_Ioo_iff_left + theorem set.sub_mem_Ioo_iff_right 2021-02-12 14:15:57 254c3ee feat(analysis/special_functions/exp_log): added `log_div` (#6196) `∀ x y : ℝ, x ≠ 0 → y ≠ 0 → log (x / y) = log x - log y` ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem real.log_div 2021-02-12 14:15:56 a5ccba6 feat(analysis/calculus): generalize `has_strict_fderiv_at.map_nhds_eq` (#6193) Generalize `has_strict_fderiv_at.map_nhds_eq` to a function that satisfies assumptions of the implicit function theorem. ESTIMATED CHANGES Modified src/analysis/calculus/implicit.lean + theorem has_strict_fderiv_at.implicit_function_apply_image + theorem has_strict_fderiv_at.implicit_function_of_complemented_apply_image + theorem has_strict_fderiv_at.map_nhds_eq + theorem has_strict_fderiv_at.map_nhds_eq_of_complemented + theorem has_strict_fderiv_at.tendsto_implicit_function + theorem implicit_function_data.map_nhds_eq Modified src/analysis/calculus/inverse.lean - theorem has_strict_fderiv_at.map_nhds_eq + theorem has_strict_fderiv_at.map_nhds_eq_of_equiv - theorem open_map_of_strict_fderiv + theorem open_map_of_strict_fderiv_equiv 2021-02-12 12:44:07 74d3270 fix(topology/topological_fiber_bundle): fix definition, review (#6184) * fix definition of `is_topological_fiber_bundle`; * add `is_trivial_topological_fiber_bundle`; * more lemmas, golf here and there; * define induced fiber bundle. ESTIMATED CHANGES Modified src/topology/topological_fiber_bundle.lean + theorem bundle_trivialization.apply_symm_apply' + theorem bundle_trivialization.apply_symm_apply +/- theorem bundle_trivialization.coe_coe + theorem bundle_trivialization.coe_fst' + theorem bundle_trivialization.coe_fst_eventually_eq_proj' + theorem bundle_trivialization.coe_fst_eventually_eq_proj +/- theorem bundle_trivialization.coe_mk + def bundle_trivialization.comp_homeomorph + theorem bundle_trivialization.map_proj_nhds + theorem bundle_trivialization.mem_source + theorem bundle_trivialization.mem_target + theorem bundle_trivialization.proj_symm_apply' + theorem bundle_trivialization.proj_symm_apply + theorem bundle_trivialization.symm_apply_mk_proj +/- structure bundle_trivialization + theorem is_topological_fiber_bundle.comap + theorem is_topological_fiber_bundle.comp_homeomorph +/- def is_topological_fiber_bundle + theorem is_trivial_topological_fiber_bundle.is_topological_fiber_bundle + def is_trivial_topological_fiber_bundle + theorem is_trivial_topological_fiber_bundle_fst + theorem is_trivial_topological_fiber_bundle_snd - theorem topological_fiber_bundle_core.is_topological_fiber_bundle 2021-02-12 10:09:14 2d70880 feat(topology/subset_properties): compact discrete spaces are finite (#6191) From `lean-liquid` ESTIMATED CHANGES Modified src/topology/subset_properties.lean + theorem finite_of_is_compact_of_discrete + def fintype_of_compact_of_discrete 2021-02-12 02:51:33 159e807 chore(scripts): update nolints.txt (#6194) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-12 02:51:32 72141fd feat(combinatorics/hall): Hall's marriage theorem (#5695) We state and prove Hall's marriage theorem with respect to fintypes and relations. Coauthor: @b-mehta @kmill ESTIMATED CHANGES Modified docs/references.bib Added src/combinatorics/hall.lean + theorem finset.all_card_le_bUnion_card_iff_exists_injective + theorem fintype.all_card_le_filter_rel_iff_exists_injective + theorem fintype.all_card_le_rel_image_card_iff_exists_injective + theorem hall_marriage_theorem.hall_cond_of_compl + theorem hall_marriage_theorem.hall_cond_of_erase + theorem hall_marriage_theorem.hall_cond_of_restrict + theorem hall_marriage_theorem.hall_hard_inductive + theorem hall_marriage_theorem.hall_hard_inductive_step + theorem hall_marriage_theorem.hall_hard_inductive_step_A + theorem hall_marriage_theorem.hall_hard_inductive_step_B + theorem hall_marriage_theorem.hall_hard_inductive_zero Modified src/data/set/finite.lean + theorem set.card_ne_eq + theorem set.to_finset_ne_eq_erase 2021-02-11 23:33:03 db305fb feat(data/set/finite): fintype_of_univ_finite (#6164) From `lean-liquid` ESTIMATED CHANGES Modified src/data/set/finite.lean + def set.fintype_of_univ_finite + theorem set.univ_finite_iff_nonempty_fintype 2021-02-11 23:33:02 2f56620 feat(data/real/irrational): define Liouville numbers (#6158) Prove that a Liouville number is irrational ESTIMATED CHANGES Added src/data/real/liouville.lean + theorem is_liouville.irrational + def is_liouville 2021-02-11 20:21:07 64914d3 chore(group_theory/perm, linear_algebra/alternating): add some helper lemmas for gh-5269 (#6186) ESTIMATED CHANGES Modified src/group_theory/perm/subgroup.lean Modified src/linear_algebra/alternating.lean + theorem multilinear_map.alternatization_coe 2021-02-11 20:21:06 cee5ddf chore(topology/homeomorph): review, add `prod_punit`/`punit_prod` (#6180) * use `to_equiv := e` instead of `.. e` to have definitional equality `h.to_equiv = e`; * add some `@[simp]` lemmas; * add `homeomorph.prod_punit` and `homeomorph.punit_prod`; * generalize `unit.topological_space` to `punit.topological_space`. ESTIMATED CHANGES Modified src/topology/homeomorph.lean + theorem homeomorph.coe_prod_comm + theorem homeomorph.coe_prod_congr + theorem homeomorph.coe_prod_punit + theorem homeomorph.coe_punit_prod + theorem homeomorph.coe_refl + theorem homeomorph.prod_comm_symm + theorem homeomorph.prod_congr_symm + def homeomorph.prod_punit + def homeomorph.punit_prod + theorem homeomorph.refl_symm Modified src/topology/order.lean Modified src/topology/topological_fiber_bundle.lean 2021-02-11 20:21:05 6c602c7 feat(data/nat/bitwise): test bits of powers of two (#6070) ESTIMATED CHANGES Modified src/data/nat/bitwise.lean + theorem nat.test_bit_two_pow + theorem nat.test_bit_two_pow_of_ne + theorem nat.test_bit_two_pow_self 2021-02-11 16:21:09 1ad29d6 refactor(algebra/lie/of_associative): remove `ring_commutator` namespace; use `ring` instead (#6181) The `old_structure_cmd` change to `lie_algebra.is_simple` is unrelated and is included here only for convenience. `ring_commutator.commutator` -> `ring.lie_def` ESTIMATED CHANGES Modified src/algebra/lie/of_associative.lean + theorem ring.lie_def - theorem ring_commutator.commutator Modified src/algebra/lie/semisimple.lean Modified src/ring_theory/derivation.lean 2021-02-11 16:21:06 abf72e6 refactor(algebra/lie/*): rename `lie_algebra.morphism` --> `lie_hom`, `lie_algebra.equiv` --> `lie_equiv` (#6179) Also renaming the field `map_lie` to `map_lie'` in both `lie_algebra.morphism` and `lie_module_hom` for consistency with the pattern elsewhere in Mathlib. ESTIMATED CHANGES Modified src/algebra/lie/abelian.lean Modified src/algebra/lie/basic.lean - theorem lie_algebra.coe_mk - theorem lie_algebra.coe_to_linear_map - theorem lie_algebra.equiv.apply_symm_apply - theorem lie_algebra.equiv.bijective - theorem lie_algebra.equiv.coe_to_lie_equiv - theorem lie_algebra.equiv.coe_to_linear_equiv - theorem lie_algebra.equiv.injective - theorem lie_algebra.equiv.one_apply - def lie_algebra.equiv.refl - theorem lie_algebra.equiv.refl_apply - theorem lie_algebra.equiv.surjective - def lie_algebra.equiv.symm - theorem lie_algebra.equiv.symm_apply_apply - theorem lie_algebra.equiv.symm_symm - theorem lie_algebra.equiv.symm_trans_apply - def lie_algebra.equiv.trans - theorem lie_algebra.equiv.trans_apply - structure lie_algebra.equiv - theorem lie_algebra.map_lie - theorem lie_algebra.map_zero - theorem lie_algebra.morphism.coe_injective - def lie_algebra.morphism.comp - theorem lie_algebra.morphism.comp_apply - theorem lie_algebra.morphism.comp_coe - theorem lie_algebra.morphism.ext - theorem lie_algebra.morphism.ext_iff - def lie_algebra.morphism.inverse - theorem lie_algebra.morphism.map_add - theorem lie_algebra.morphism.map_smul - structure lie_algebra.morphism + theorem lie_equiv.apply_symm_apply + theorem lie_equiv.bijective + theorem lie_equiv.coe_to_lie_equiv + theorem lie_equiv.coe_to_linear_equiv + theorem lie_equiv.injective + theorem lie_equiv.one_apply + def lie_equiv.refl + theorem lie_equiv.refl_apply + theorem lie_equiv.surjective + def lie_equiv.symm + theorem lie_equiv.symm_apply_apply + theorem lie_equiv.symm_symm + theorem lie_equiv.symm_trans_apply + def lie_equiv.trans + theorem lie_equiv.trans_apply + structure lie_equiv + theorem lie_hom.coe_injective + theorem lie_hom.coe_mk + theorem lie_hom.coe_to_linear_map + def lie_hom.comp + theorem lie_hom.comp_apply + theorem lie_hom.comp_coe + theorem lie_hom.ext + theorem lie_hom.ext_iff + def lie_hom.inverse + theorem lie_hom.map_add + theorem lie_hom.map_lie + theorem lie_hom.map_smul + theorem lie_hom.map_zero + structure lie_hom - theorem lie_module_hom.map_lie' + theorem lie_module_hom.map_lie Modified src/algebra/lie/classical.lean Modified src/algebra/lie/direct_sum.lean Modified src/algebra/lie/ideal_operations.lean Modified src/algebra/lie/matrix.lean Modified src/algebra/lie/of_associative.lean Modified src/algebra/lie/quotient.lean Modified src/algebra/lie/skew_adjoint.lean Modified src/algebra/lie/subalgebra.lean - def lie_algebra.equiv.of_eq - theorem lie_algebra.equiv.of_eq_apply - theorem lie_algebra.equiv.of_injective_apply - def lie_algebra.equiv.of_subalgebra - theorem lie_algebra.equiv.of_subalgebra_apply - def lie_algebra.equiv.of_subalgebras - theorem lie_algebra.equiv.of_subalgebras_apply - theorem lie_algebra.equiv.of_subalgebras_symm_apply - def lie_algebra.morphism.range - theorem lie_algebra.morphism.range_bracket - theorem lie_algebra.morphism.range_coe + def lie_equiv.of_eq + theorem lie_equiv.of_eq_apply + theorem lie_equiv.of_injective_apply + def lie_equiv.of_subalgebra + theorem lie_equiv.of_subalgebra_apply + def lie_equiv.of_subalgebras + theorem lie_equiv.of_subalgebras_apply + theorem lie_equiv.of_subalgebras_symm_apply + def lie_hom.range + theorem lie_hom.range_bracket + theorem lie_hom.range_coe Modified src/algebra/lie/submodule.lean - def lie_algebra.morphism.ideal_range - def lie_algebra.morphism.is_ideal_morphism - theorem lie_algebra.morphism.is_ideal_morphism_def - def lie_algebra.morphism.ker - theorem lie_algebra.morphism.ker_coe_submodule - theorem lie_algebra.morphism.ker_eq_bot - theorem lie_algebra.morphism.ker_le_comap - theorem lie_algebra.morphism.le_ker_iff - theorem lie_algebra.morphism.map_bot_iff - theorem lie_algebra.morphism.map_le_ideal_range - theorem lie_algebra.morphism.mem_ideal_range - theorem lie_algebra.morphism.mem_ideal_range_iff - theorem lie_algebra.morphism.mem_ker - theorem lie_algebra.morphism.range_subset_ideal_range + def lie_hom.ideal_range + def lie_hom.is_ideal_morphism + theorem lie_hom.is_ideal_morphism_def + def lie_hom.ker + theorem lie_hom.ker_coe_submodule + theorem lie_hom.ker_eq_bot + theorem lie_hom.ker_le_comap + theorem lie_hom.le_ker_iff + theorem lie_hom.map_bot_iff + theorem lie_hom.map_le_ideal_range + theorem lie_hom.mem_ideal_range + theorem lie_hom.mem_ideal_range_iff + theorem lie_hom.mem_ker + theorem lie_hom.range_subset_ideal_range Modified src/algebra/lie/universal_enveloping.lean 2021-02-11 16:21:04 b3347e5 doc(algebra/field): added module doc (#6177) ESTIMATED CHANGES Modified src/algebra/field.lean 2021-02-11 16:21:00 af8b60b feat(algebra/lie/submodule): Lie submodules form a modular lattice (#6176) ESTIMATED CHANGES Modified src/algebra/lie/submodule.lean 2021-02-11 16:20:58 b9354dd feat(algebra/ordered_ring): a product is at least one if both factors are (#6172) Add single lemma one_le_mul_of_one_le_of_one_le The lemma is stated for an `ordered_semiring`, but only multiplication is used. There does not seem to be an `ordered_monoid` class where this lemma would fit. Relevant Zulip chat: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/ordered_monoid.3F ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem one_le_mul_of_one_le_of_one_le 2021-02-11 16:20:56 194ec66 feat(group_theory/subgroup): prove relation between pointwise product of submonoids/subgroups and their join (#6165) If `H` and `K` are subgroups/submonoids then `H ⊔ K = closure (H * K)`, where `H * K` is the pointwise set product. When `H` or `K` is a normal subgroup, it is proved that `(↑(H ⊔ K) : set G) = H * K`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem submonoid.closure_mul_le + theorem submonoid.sup_eq_closure Modified src/group_theory/subgroup.lean + theorem subgroup.closure_mul_le + theorem subgroup.mul_normal + theorem subgroup.normal_mul + theorem subgroup.sup_eq_closure 2021-02-11 16:20:55 f151da2 feat(field_theory/polynomial_galois_group): Restriction from splitting field of composition (#6148) Defines the surjective restriction map from the splitting field of a composition ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.mul_splits_in_splitting_field_of_mul + def polynomial.gal.restrict_comp + theorem polynomial.gal.restrict_comp_surjective + theorem polynomial.gal.splits_in_splitting_field_of_comp 2021-02-11 16:20:52 7b4a9e5 feat(order/well_founded_set) : Define when a set is well-founded with `set.is_wf` (#6113) Defines a predicate for when a set within an ordered type is well-founded (`set.is_wf`) Proves basic lemmas about well-founded sets ESTIMATED CHANGES Modified src/order/order_iso_nat.lean + def nat.order_embedding_of_set + theorem nat.order_embedding_of_set_apply + theorem nat.order_embedding_of_set_range + theorem nat.subtype.order_iso_of_nat_apply +/- def rel_embedding.nat_gt +/- def rel_embedding.nat_lt + theorem rel_embedding.nat_lt_apply +/- theorem rel_embedding.well_founded_iff_no_descending_seq Modified src/order/rel_iso.lean + theorem rel_embedding.order_embedding_of_lt_embedding_apply Added src/order/well_founded_set.lean + theorem finset.is_wf + theorem set.finite.is_wf + theorem set.fintype.is_wf + theorem set.is_wf.insert + theorem set.is_wf.mono + theorem set.is_wf.union + def set.is_wf + theorem set.is_wf_iff_no_descending_seq + theorem set.is_wf_singleton + def set.well_founded_on + theorem set.well_founded_on_iff 2021-02-11 16:20:48 a557f8b feat(data/complex): order structure (#4684) ESTIMATED CHANGES Modified src/data/complex/basic.lean + def complex.complex_order + def complex.complex_ordered_comm_ring + theorem complex.le_def + theorem complex.lt_def + theorem complex.norm_sq_eq_conj_mul_self +/- theorem complex.norm_sq_one +/- theorem complex.norm_sq_zero + theorem complex.real_le_real + theorem complex.real_lt_real + theorem complex.zero_le_real + theorem complex.zero_lt_real 2021-02-11 14:27:06 39090c8 doc(analysis/analytic/inverse): fix mathjax output (#6175) `\\` in source code is converted to `\` in the generated html file, so one should have `\\\\` to generate proper line break for mathjax. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/inverse.lean 2021-02-11 11:51:02 58632ac feat(topology/order): discrete_topology_bot (#6163) From `lean-liquid` ESTIMATED CHANGES Modified src/topology/order.lean 2021-02-11 11:50:59 fdace95 feat(linear_algebra/matrix): generalize some `is_basis.to_matrix` results (#6127) This PR contains some changes to the lemmas involving `is_basis.to_matrix`, allowing the bases involved to differ in their index type. Although you can prove there exists an `equiv` between those types, it's easier to not have to transport along that equiv. The PR also generalizes `linear_map.to_matrix_id` to a form with two different bases, `linear_map.to_matrix_id_eq_basis_to_matrix`. Marking the second as `simp` means the first can be proved automatically, hence the removal of `simp` on that one. ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean + theorem is_basis.to_matrix_mul_to_matrix + theorem linear_map.to_matrix_id_eq_basis_to_matrix 2021-02-11 09:21:58 d405c5e chore(scripts): update nolints.txt (#6169) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-11 09:21:57 59daf53 refactor(topology/subset_properties.lean): split the subset_properties.lean file (#6161) split the file subset_properties.lean into another file called connected.lean which contains the properties that relate to connectivity. This is in preparation for a future PR proving properties about the quotient of a space by its connected components and it would add roughly 300 lines. ESTIMATED CHANGES Added src/topology/connected.lean + def connected_component + def connected_component_in + theorem connected_component_subset_Inter_clopen + theorem connected_space_iff_connected_component + theorem eq_univ_of_nonempty_clopen + theorem irreducible_component_subset_connected_component + theorem is_clopen_iff + theorem is_closed_connected_component + theorem is_connected.closure + theorem is_connected.image + theorem is_connected.is_preconnected + theorem is_connected.nonempty + theorem is_connected.union + def is_connected + theorem is_connected_connected_component + theorem is_connected_iff_connected_space + theorem is_connected_iff_sUnion_disjoint_open + theorem is_connected_range + theorem is_connected_singleton + theorem is_irreducible.is_connected + theorem is_preconnected.closure + theorem is_preconnected.image + theorem is_preconnected.union + def is_preconnected + theorem is_preconnected_closed_iff + theorem is_preconnected_empty + theorem is_preconnected_iff_preconnected_space + theorem is_preconnected_iff_subset_of_disjoint + theorem is_preconnected_iff_subset_of_disjoint_closed + theorem is_preconnected_iff_subset_of_fully_disjoint_closed + theorem is_preconnected_of_forall + theorem is_preconnected_of_forall_pair + theorem is_preconnected_sUnion + theorem is_preirreducible.is_preconnected + def is_totally_disconnected + theorem is_totally_disconnected_empty + theorem is_totally_disconnected_of_is_totally_separated + theorem is_totally_disconnected_singleton + def is_totally_separated + theorem is_totally_separated_empty + theorem is_totally_separated_singleton + theorem mem_connected_component + theorem nonempty_inter + theorem subset_connected_component + theorem subset_or_disjoint_of_clopen + theorem subtype.connected_space + theorem subtype.preconnected_space Modified src/topology/separation.lean Modified src/topology/subset_properties.lean - def connected_component - def connected_component_in - theorem connected_component_subset_Inter_clopen - theorem connected_space_iff_connected_component - theorem eq_univ_of_nonempty_clopen - theorem irreducible_component_subset_connected_component - theorem is_clopen_iff - theorem is_closed_connected_component - theorem is_connected.closure - theorem is_connected.image - theorem is_connected.is_preconnected - theorem is_connected.nonempty - theorem is_connected.union - def is_connected - theorem is_connected_connected_component - theorem is_connected_iff_connected_space - theorem is_connected_iff_sUnion_disjoint_open - theorem is_connected_range - theorem is_connected_singleton - theorem is_irreducible.is_connected - theorem is_preconnected.closure - theorem is_preconnected.image - theorem is_preconnected.union - def is_preconnected - theorem is_preconnected_closed_iff - theorem is_preconnected_empty - theorem is_preconnected_iff_preconnected_space - theorem is_preconnected_iff_subset_of_disjoint - theorem is_preconnected_iff_subset_of_disjoint_closed - theorem is_preconnected_iff_subset_of_fully_disjoint_closed - theorem is_preconnected_of_forall - theorem is_preconnected_of_forall_pair - theorem is_preconnected_sUnion - theorem is_preirreducible.is_preconnected - def is_totally_disconnected - theorem is_totally_disconnected_empty - theorem is_totally_disconnected_of_is_totally_separated - theorem is_totally_disconnected_singleton - def is_totally_separated - theorem is_totally_separated_empty - theorem is_totally_separated_singleton - theorem mem_connected_component - theorem nonempty_inter - theorem subset_connected_component - theorem subset_or_disjoint_of_clopen - theorem subtype.connected_space - theorem subtype.preconnected_space 2021-02-11 09:21:55 97a56e6 refactor(algebra/lie/basic): split giant file into pieces (#6141) ESTIMATED CHANGES Added src/algebra/lie/abelian.lean + theorem commutative_ring_iff_abelian_lie_ring + theorem function.injective.is_lie_abelian + theorem function.surjective.is_lie_abelian + def is_lie_abelian + theorem lie_abelian_iff_equiv_lie_abelian + theorem lie_algebra.abelian_of_le_center + def lie_algebra.center + theorem lie_algebra.center_eq_adjoint_kernel + theorem lie_algebra.is_lie_abelian_bot + theorem lie_algebra.is_lie_abelian_iff_center_eq_top + theorem lie_module.is_trivial_iff_maximal_trivial_eq_top + def lie_module.maximal_trivial_submodule + theorem lie_module.mem_maximal_trivial_submodule + theorem lie_module.trivial_iff_le_maximal_trivial + theorem lie_submodule.lie_abelian_iff_lie_self_eq_bot + theorem lie_submodule.trivial_lie_oper_zero + theorem trivial_lie_zero Modified src/algebra/lie/basic.lean - def alg_equiv.to_lie_equiv - theorem alg_equiv.to_lie_equiv_apply - theorem alg_equiv.to_lie_equiv_symm_apply - theorem commutative_ring_iff_abelian_lie_ring - theorem function.injective.is_lie_abelian - theorem function.surjective.is_lie_abelian - def is_lie_abelian - theorem lie_abelian_iff_equiv_lie_abelian - theorem lie_algebra.abelian_derived_abelian_of_ideal - theorem lie_algebra.abelian_iff_derived_one_eq_bot - theorem lie_algebra.abelian_iff_derived_succ_eq_bot - theorem lie_algebra.abelian_of_le_center - theorem lie_algebra.abelian_of_solvable_ideal_eq_bot_iff - theorem lie_algebra.abelian_radical_iff_solvable_is_abelian - theorem lie_algebra.abelian_radical_of_semisimple - def lie_algebra.ad - theorem lie_algebra.ad_apply - def lie_algebra.center - theorem lie_algebra.center_eq_adjoint_kernel - theorem lie_algebra.center_eq_bot_of_semisimple - theorem lie_algebra.center_le_radical - theorem lie_algebra.derived_length_eq_derived_length_of_ideal - theorem lie_algebra.derived_length_zero - def lie_algebra.derived_series - theorem lie_algebra.derived_series_def - theorem lie_algebra.derived_series_of_bot_eq_bot - theorem lie_algebra.derived_series_of_derived_length_succ - def lie_algebra.derived_series_of_ideal - theorem lie_algebra.derived_series_of_ideal_add - theorem lie_algebra.derived_series_of_ideal_add_le_add - theorem lie_algebra.derived_series_of_ideal_antimono - theorem lie_algebra.derived_series_of_ideal_le - theorem lie_algebra.derived_series_of_ideal_le_self - theorem lie_algebra.derived_series_of_ideal_mono - theorem lie_algebra.derived_series_of_ideal_succ - theorem lie_algebra.derived_series_of_ideal_succ_le - theorem lie_algebra.derived_series_of_ideal_zero - def lie_algebra.equiv.of_eq - theorem lie_algebra.equiv.of_eq_apply - theorem lie_algebra.equiv.of_injective_apply - def lie_algebra.equiv.of_subalgebra - theorem lie_algebra.equiv.of_subalgebra_apply - def lie_algebra.equiv.of_subalgebras - theorem lie_algebra.equiv.of_subalgebras_apply - theorem lie_algebra.equiv.of_subalgebras_symm_apply - theorem lie_algebra.is_lie_abelian_bot - theorem lie_algebra.is_lie_abelian_iff_center_eq_top - theorem lie_algebra.is_semisimple_iff_no_abelian_ideals - theorem lie_algebra.is_semisimple_iff_no_solvable_ideals - theorem lie_algebra.is_solvable_of_injective - theorem lie_algebra.le_solvable_ideal_solvable - theorem lie_algebra.lie_ideal.solvable_iff_le_radical - def lie_algebra.morphism.ideal_range - def lie_algebra.morphism.is_ideal_morphism - theorem lie_algebra.morphism.is_ideal_morphism_def - def lie_algebra.morphism.ker - theorem lie_algebra.morphism.ker_coe_submodule - theorem lie_algebra.morphism.ker_eq_bot - theorem lie_algebra.morphism.ker_le_comap - theorem lie_algebra.morphism.le_ker_iff - theorem lie_algebra.morphism.map_bot_iff - theorem lie_algebra.morphism.map_le_ideal_range - theorem lie_algebra.morphism.mem_ideal_range - theorem lie_algebra.morphism.mem_ideal_range_iff - theorem lie_algebra.morphism.mem_ker - def lie_algebra.morphism.range - theorem lie_algebra.morphism.range_bracket - theorem lie_algebra.morphism.range_coe - theorem lie_algebra.morphism.range_subset_ideal_range - def lie_algebra.of_associative_algebra_hom - theorem lie_algebra.of_associative_algebra_hom_apply - theorem lie_algebra.of_associative_algebra_hom_comp - theorem lie_algebra.of_associative_algebra_hom_id - def lie_algebra.radical - theorem lie_algebra.subsingleton_of_semisimple_lie_abelian - def lie_algebra.top_equiv_self - theorem lie_algebra.top_equiv_self_apply - def lie_equiv_matrix' - theorem lie_equiv_matrix'_apply - theorem lie_equiv_matrix'_symm_apply - theorem lie_ideal.bot_of_map_eq_bot - theorem lie_ideal.coe_hom_of_le - theorem lie_ideal.coe_to_subalgebra - def lie_ideal.comap - theorem lie_ideal.comap_bracket_eq - theorem lie_ideal.comap_bracket_incl - theorem lie_ideal.comap_bracket_incl_of_le - theorem lie_ideal.comap_bracket_le - theorem lie_ideal.comap_coe_submodule - theorem lie_ideal.comap_incl_self - theorem lie_ideal.comap_map_eq - theorem lie_ideal.comap_map_le - theorem lie_ideal.comap_mono - theorem lie_ideal.derived_series_add_eq_bot - theorem lie_ideal.derived_series_eq_bot_iff - theorem lie_ideal.derived_series_eq_derived_series_of_ideal_comap - theorem lie_ideal.derived_series_eq_derived_series_of_ideal_map - theorem lie_ideal.derived_series_map_le_derived_series - theorem lie_ideal.gc_map_comap - def lie_ideal.hom_of_le - theorem lie_ideal.hom_of_le_apply - theorem lie_ideal.hom_of_le_injective - def lie_ideal.incl - theorem lie_ideal.incl_apply - theorem lie_ideal.incl_coe - theorem lie_ideal.incl_ideal_range - theorem lie_ideal.incl_is_ideal_morphism - theorem lie_ideal.ker_incl - def lie_ideal.map - theorem lie_ideal.map_bracket_le - theorem lie_ideal.map_coe_submodule - theorem lie_ideal.map_comap_bracket_eq - theorem lie_ideal.map_comap_eq - theorem lie_ideal.map_comap_incl - theorem lie_ideal.map_comap_le - theorem lie_ideal.map_le - theorem lie_ideal.map_le_iff_le_comap - theorem lie_ideal.map_mono - theorem lie_ideal.map_of_image - theorem lie_ideal.map_sup_ker_eq_map - theorem lie_ideal.mem_comap - theorem lie_ideal.mem_map - theorem lie_ideal.subsingleton_of_bot - def lie_ideal - def lie_ideal_subalgebra - theorem lie_mem_left - theorem lie_mem_right - theorem lie_module.derived_series_le_lower_central_series - theorem lie_module.is_trivial_iff_maximal_trivial_eq_top - def lie_module.lower_central_series - theorem lie_module.lower_central_series_succ - theorem lie_module.lower_central_series_zero - def lie_module.maximal_trivial_submodule - theorem lie_module.mem_maximal_trivial_submodule - def lie_module.to_endomorphism - theorem lie_module.trivial_iff_le_maximal_trivial - theorem lie_module.trivial_iff_lower_central_eq_bot - theorem lie_ring.of_associative_ring_bracket - theorem lie_subalgebra.add_mem - theorem lie_subalgebra.coe_bracket - theorem lie_subalgebra.coe_injective - theorem lie_subalgebra.coe_set_eq - theorem lie_subalgebra.coe_to_submodule_eq - theorem lie_subalgebra.coe_zero_iff_zero - theorem lie_subalgebra.ext - theorem lie_subalgebra.ext_iff' - theorem lie_subalgebra.ext_iff - def lie_subalgebra.incl - theorem lie_subalgebra.lie_mem - def lie_subalgebra.map - theorem lie_subalgebra.mem_coe' - theorem lie_subalgebra.mem_coe - theorem lie_subalgebra.mem_map_submodule - theorem lie_subalgebra.mk_coe - theorem lie_subalgebra.range_incl - theorem lie_subalgebra.smul_mem - theorem lie_subalgebra.to_submodule_injective - theorem lie_subalgebra.zero_mem - structure lie_subalgebra - def lie_subalgebra_of_subalgebra - theorem lie_submodule.Inf_coe - theorem lie_submodule.Inf_coe_to_submodule - theorem lie_submodule.Inf_glb - theorem lie_submodule.add_eq_sup - theorem lie_submodule.bot_coe - theorem lie_submodule.bot_coe_submodule - theorem lie_submodule.bot_lie - theorem lie_submodule.coe_hom_of_le - theorem lie_submodule.coe_injective - theorem lie_submodule.coe_submodule_injective - theorem lie_submodule.coe_submodule_le_coe_submodule - theorem lie_submodule.coe_to_set_mk - theorem lie_submodule.coe_to_submodule - theorem lie_submodule.coe_to_submodule_eq_iff - theorem lie_submodule.coe_to_submodule_mk - def lie_submodule.comap - theorem lie_submodule.eq_bot_iff - theorem lie_submodule.ext - theorem lie_submodule.gc_map_comap - def lie_submodule.hom_of_le - theorem lie_submodule.hom_of_le_apply - theorem lie_submodule.hom_of_le_injective - def lie_submodule.incl - theorem lie_submodule.incl_apply - theorem lie_submodule.incl_eq_val - theorem lie_submodule.inf_coe - theorem lie_submodule.inf_coe_to_submodule - theorem lie_submodule.inf_lie - theorem lie_submodule.le_def - theorem lie_submodule.lie_abelian_iff_lie_self_eq_bot - theorem lie_submodule.lie_bot - theorem lie_submodule.lie_comm - theorem lie_submodule.lie_ideal_oper_eq_linear_span - theorem lie_submodule.lie_ideal_oper_eq_span - theorem lie_submodule.lie_inf - theorem lie_submodule.lie_le_inf - theorem lie_submodule.lie_le_left - theorem lie_submodule.lie_le_right - theorem lie_submodule.lie_mem_lie - def lie_submodule.lie_span - theorem lie_submodule.lie_span_eq - theorem lie_submodule.lie_span_le - theorem lie_submodule.lie_span_mono - theorem lie_submodule.lie_sup - def lie_submodule.map - theorem lie_submodule.map_le_iff_le_comap - theorem lie_submodule.mem_bot - theorem lie_submodule.mem_carrier - theorem lie_submodule.mem_coe - theorem lie_submodule.mem_coe_submodule - theorem lie_submodule.mem_inf - theorem lie_submodule.mem_lie_span - theorem lie_submodule.mem_sup - theorem lie_submodule.mem_top - theorem lie_submodule.mono_lie - theorem lie_submodule.mono_lie_left - theorem lie_submodule.mono_lie_right - def lie_submodule.quotient.action_as_endo_map - def lie_submodule.quotient.action_as_endo_map_bracket - theorem lie_submodule.quotient.is_quotient_mk - def lie_submodule.quotient.lie_submodule_invariant - def lie_submodule.quotient.mk - theorem lie_submodule.quotient.mk_bracket - def lie_submodule.quotient - theorem lie_submodule.submodule_span_le_lie_span - theorem lie_submodule.subset_lie_span - theorem lie_submodule.subsingleton_of_bot - theorem lie_submodule.sup_coe_to_submodule - theorem lie_submodule.sup_lie - theorem lie_submodule.top_coe - theorem lie_submodule.top_coe_submodule - theorem lie_submodule.trivial_lie_oper_zero - theorem lie_submodule.well_founded_of_noetherian - theorem lie_submodule.zero_mem - structure lie_submodule - def linear_equiv.lie_conj - theorem linear_equiv.lie_conj_apply - theorem linear_equiv.lie_conj_symm - theorem matrix.lie_conj_apply - theorem matrix.lie_conj_symm_apply - def matrix.reindex_lie_equiv - theorem matrix.reindex_lie_equiv_apply - theorem matrix.reindex_lie_equiv_symm_apply - theorem ring_commutator.commutator - theorem trivial_lie_zero Modified src/algebra/lie/classical.lean Added src/algebra/lie/ideal_operations.lean + theorem lie_ideal.comap_bracket_eq + theorem lie_ideal.comap_bracket_incl + theorem lie_ideal.comap_bracket_incl_of_le + theorem lie_ideal.comap_bracket_le + theorem lie_ideal.map_bracket_le + theorem lie_ideal.map_comap_bracket_eq + theorem lie_ideal.map_comap_incl + theorem lie_submodule.bot_lie + theorem lie_submodule.inf_lie + theorem lie_submodule.lie_bot + theorem lie_submodule.lie_comm + theorem lie_submodule.lie_ideal_oper_eq_linear_span + theorem lie_submodule.lie_ideal_oper_eq_span + theorem lie_submodule.lie_inf + theorem lie_submodule.lie_le_inf + theorem lie_submodule.lie_le_left + theorem lie_submodule.lie_le_right + theorem lie_submodule.lie_mem_lie + theorem lie_submodule.lie_sup + theorem lie_submodule.mono_lie + theorem lie_submodule.mono_lie_left + theorem lie_submodule.mono_lie_right + theorem lie_submodule.sup_lie Added src/algebra/lie/matrix.lean + def lie_equiv_matrix' + theorem lie_equiv_matrix'_apply + theorem lie_equiv_matrix'_symm_apply + theorem matrix.lie_conj_apply + theorem matrix.lie_conj_symm_apply + def matrix.reindex_lie_equiv + theorem matrix.reindex_lie_equiv_apply + theorem matrix.reindex_lie_equiv_symm_apply Added src/algebra/lie/nilpotent.lean + theorem lie_module.derived_series_le_lower_central_series + def lie_module.lower_central_series + theorem lie_module.lower_central_series_succ + theorem lie_module.lower_central_series_zero + theorem lie_module.trivial_iff_lower_central_eq_bot Added src/algebra/lie/of_associative.lean + def alg_equiv.to_lie_equiv + theorem alg_equiv.to_lie_equiv_apply + theorem alg_equiv.to_lie_equiv_symm_apply + def lie_algebra.ad + theorem lie_algebra.ad_apply + def lie_algebra.of_associative_algebra_hom + theorem lie_algebra.of_associative_algebra_hom_apply + theorem lie_algebra.of_associative_algebra_hom_comp + theorem lie_algebra.of_associative_algebra_hom_id + def lie_module.to_endomorphism + theorem lie_ring.of_associative_ring_bracket + def lie_subalgebra_of_subalgebra + def linear_equiv.lie_conj + theorem linear_equiv.lie_conj_apply + theorem linear_equiv.lie_conj_symm + theorem ring_commutator.commutator Added src/algebra/lie/quotient.lean + def lie_submodule.quotient.action_as_endo_map + def lie_submodule.quotient.action_as_endo_map_bracket + theorem lie_submodule.quotient.is_quotient_mk + def lie_submodule.quotient.lie_submodule_invariant + def lie_submodule.quotient.mk + theorem lie_submodule.quotient.mk_bracket + def lie_submodule.quotient Added src/algebra/lie/semisimple.lean + theorem lie_algebra.abelian_radical_iff_solvable_is_abelian + theorem lie_algebra.abelian_radical_of_semisimple + theorem lie_algebra.center_eq_bot_of_semisimple + theorem lie_algebra.is_semisimple_iff_no_abelian_ideals + theorem lie_algebra.is_semisimple_iff_no_solvable_ideals + theorem lie_algebra.subsingleton_of_semisimple_lie_abelian Modified src/algebra/lie/skew_adjoint.lean Added src/algebra/lie/solvable.lean + theorem lie_algebra.abelian_derived_abelian_of_ideal + theorem lie_algebra.abelian_iff_derived_one_eq_bot + theorem lie_algebra.abelian_iff_derived_succ_eq_bot + theorem lie_algebra.abelian_of_solvable_ideal_eq_bot_iff + theorem lie_algebra.center_le_radical + theorem lie_algebra.derived_length_eq_derived_length_of_ideal + theorem lie_algebra.derived_length_zero + def lie_algebra.derived_series + theorem lie_algebra.derived_series_def + theorem lie_algebra.derived_series_of_bot_eq_bot + theorem lie_algebra.derived_series_of_derived_length_succ + def lie_algebra.derived_series_of_ideal + theorem lie_algebra.derived_series_of_ideal_add + theorem lie_algebra.derived_series_of_ideal_add_le_add + theorem lie_algebra.derived_series_of_ideal_antimono + theorem lie_algebra.derived_series_of_ideal_le + theorem lie_algebra.derived_series_of_ideal_le_self + theorem lie_algebra.derived_series_of_ideal_mono + theorem lie_algebra.derived_series_of_ideal_succ + theorem lie_algebra.derived_series_of_ideal_succ_le + theorem lie_algebra.derived_series_of_ideal_zero + theorem lie_algebra.is_solvable_of_injective + theorem lie_algebra.le_solvable_ideal_solvable + theorem lie_algebra.lie_ideal.solvable_iff_le_radical + def lie_algebra.radical + theorem lie_ideal.derived_series_add_eq_bot + theorem lie_ideal.derived_series_eq_bot_iff + theorem lie_ideal.derived_series_eq_derived_series_of_ideal_comap + theorem lie_ideal.derived_series_eq_derived_series_of_ideal_map + theorem lie_ideal.derived_series_map_le_derived_series Added src/algebra/lie/subalgebra.lean + def lie_algebra.equiv.of_eq + theorem lie_algebra.equiv.of_eq_apply + theorem lie_algebra.equiv.of_injective_apply + def lie_algebra.equiv.of_subalgebra + theorem lie_algebra.equiv.of_subalgebra_apply + def lie_algebra.equiv.of_subalgebras + theorem lie_algebra.equiv.of_subalgebras_apply + theorem lie_algebra.equiv.of_subalgebras_symm_apply + def lie_algebra.morphism.range + theorem lie_algebra.morphism.range_bracket + theorem lie_algebra.morphism.range_coe + theorem lie_subalgebra.add_mem + theorem lie_subalgebra.coe_bracket + theorem lie_subalgebra.coe_injective + theorem lie_subalgebra.coe_set_eq + theorem lie_subalgebra.coe_to_submodule_eq + theorem lie_subalgebra.coe_zero_iff_zero + theorem lie_subalgebra.ext + theorem lie_subalgebra.ext_iff' + theorem lie_subalgebra.ext_iff + def lie_subalgebra.incl + theorem lie_subalgebra.lie_mem + def lie_subalgebra.map + theorem lie_subalgebra.mem_coe' + theorem lie_subalgebra.mem_coe + theorem lie_subalgebra.mem_map_submodule + theorem lie_subalgebra.mk_coe + theorem lie_subalgebra.range_incl + theorem lie_subalgebra.smul_mem + theorem lie_subalgebra.to_submodule_injective + theorem lie_subalgebra.zero_mem + structure lie_subalgebra Added src/algebra/lie/submodule.lean + def lie_algebra.morphism.ideal_range + def lie_algebra.morphism.is_ideal_morphism + theorem lie_algebra.morphism.is_ideal_morphism_def + def lie_algebra.morphism.ker + theorem lie_algebra.morphism.ker_coe_submodule + theorem lie_algebra.morphism.ker_eq_bot + theorem lie_algebra.morphism.ker_le_comap + theorem lie_algebra.morphism.le_ker_iff + theorem lie_algebra.morphism.map_bot_iff + theorem lie_algebra.morphism.map_le_ideal_range + theorem lie_algebra.morphism.mem_ideal_range + theorem lie_algebra.morphism.mem_ideal_range_iff + theorem lie_algebra.morphism.mem_ker + theorem lie_algebra.morphism.range_subset_ideal_range + def lie_algebra.top_equiv_self + theorem lie_algebra.top_equiv_self_apply + theorem lie_ideal.bot_of_map_eq_bot + theorem lie_ideal.coe_hom_of_le + theorem lie_ideal.coe_to_subalgebra + def lie_ideal.comap + theorem lie_ideal.comap_coe_submodule + theorem lie_ideal.comap_incl_self + theorem lie_ideal.comap_map_eq + theorem lie_ideal.comap_map_le + theorem lie_ideal.comap_mono + theorem lie_ideal.gc_map_comap + def lie_ideal.hom_of_le + theorem lie_ideal.hom_of_le_apply + theorem lie_ideal.hom_of_le_injective + def lie_ideal.incl + theorem lie_ideal.incl_apply + theorem lie_ideal.incl_coe + theorem lie_ideal.incl_ideal_range + theorem lie_ideal.incl_is_ideal_morphism + theorem lie_ideal.ker_incl + def lie_ideal.map + theorem lie_ideal.map_coe_submodule + theorem lie_ideal.map_comap_eq + theorem lie_ideal.map_comap_le + theorem lie_ideal.map_le + theorem lie_ideal.map_le_iff_le_comap + theorem lie_ideal.map_mono + theorem lie_ideal.map_of_image + theorem lie_ideal.map_sup_ker_eq_map + theorem lie_ideal.mem_comap + theorem lie_ideal.mem_map + theorem lie_ideal.subsingleton_of_bot + def lie_ideal + def lie_ideal_subalgebra + theorem lie_mem_left + theorem lie_mem_right + theorem lie_submodule.Inf_coe + theorem lie_submodule.Inf_coe_to_submodule + theorem lie_submodule.Inf_glb + theorem lie_submodule.add_eq_sup + theorem lie_submodule.bot_coe + theorem lie_submodule.bot_coe_submodule + theorem lie_submodule.coe_hom_of_le + theorem lie_submodule.coe_injective + theorem lie_submodule.coe_submodule_injective + theorem lie_submodule.coe_submodule_le_coe_submodule + theorem lie_submodule.coe_to_set_mk + theorem lie_submodule.coe_to_submodule + theorem lie_submodule.coe_to_submodule_eq_iff + theorem lie_submodule.coe_to_submodule_mk + def lie_submodule.comap + theorem lie_submodule.eq_bot_iff + theorem lie_submodule.ext + theorem lie_submodule.gc_map_comap + def lie_submodule.hom_of_le + theorem lie_submodule.hom_of_le_apply + theorem lie_submodule.hom_of_le_injective + def lie_submodule.incl + theorem lie_submodule.incl_apply + theorem lie_submodule.incl_eq_val + theorem lie_submodule.inf_coe + theorem lie_submodule.inf_coe_to_submodule + theorem lie_submodule.le_def + def lie_submodule.lie_span + theorem lie_submodule.lie_span_eq + theorem lie_submodule.lie_span_le + theorem lie_submodule.lie_span_mono + def lie_submodule.map + theorem lie_submodule.map_le_iff_le_comap + theorem lie_submodule.mem_bot + theorem lie_submodule.mem_carrier + theorem lie_submodule.mem_coe + theorem lie_submodule.mem_coe_submodule + theorem lie_submodule.mem_inf + theorem lie_submodule.mem_lie_span + theorem lie_submodule.mem_sup + theorem lie_submodule.mem_top + theorem lie_submodule.submodule_span_le_lie_span + theorem lie_submodule.subset_lie_span + theorem lie_submodule.subsingleton_of_bot + theorem lie_submodule.sup_coe_to_submodule + theorem lie_submodule.top_coe + theorem lie_submodule.top_coe_submodule + theorem lie_submodule.well_founded_of_noetherian + theorem lie_submodule.zero_mem + structure lie_submodule Modified src/algebra/lie/universal_enveloping.lean Modified src/ring_theory/derivation.lean 2021-02-11 06:02:45 97f89af doc(algebra/euclidean_domain): module doc (#6107) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/euclidean_domain.lean 2021-02-11 06:02:43 906e03d chore(field_theory,ring_theory): reduce dependencies of `power_basis.lean` (#6104) I was having trouble with circular imports related to `power_basis.lean`, so I decided to reshuffle some definitions to make `power_basis.lean` have less dependencies. That way, something depending on `power_basis` doesn't also need to depend on `intermediate_field.adjoin`. The following (main) declarations are moved: - `algebra.adjoin`: from `ring_theory/adjoin.lean` to `ring_theory/adjoin/basic.lean` (renamed file) - `algebra.adjoin.power_basis`: from `ring_theory/power_basis.lean` to `ring_theory/adjoin/power_basis.lean` (new file) - `adjoin_root.power_basis`: from `ring_theory/power_basis.lean` to `ring_theory/adjoin_root.lean` - `intermediate_field.adjoin.power_basis`: from `ring_theory/power_basis.lean` to `field_theory/adjoin.lean` - `is_scalar_tower.polynomial`: from `ring_theory/algebra_tower.lean` to `ring_theory/polynomial/tower.lean` (new file) The following results are new: - `is_integral.linear_independent_pow` and `is_integral.mem_span_pow`: generalize `algebra.adjoin.linear_independent_power_basis` and `algebra.adjoin.mem_span_power_basis`. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin.findim + theorem intermediate_field.adjoin.finite_dimensional + theorem intermediate_field.adjoin.power_basis.gen_eq + theorem intermediate_field.power_basis_is_basis + theorem power_basis.equiv_adjoin_simple_aeval + theorem power_basis.equiv_adjoin_simple_gen + theorem power_basis.equiv_adjoin_simple_symm_aeval + theorem power_basis.equiv_adjoin_simple_symm_gen Modified src/field_theory/minpoly.lean Modified src/field_theory/normal.lean Renamed src/ring_theory/adjoin.lean to src/ring_theory/adjoin/basic.lean Added src/ring_theory/adjoin/default.lean Added src/ring_theory/adjoin/power_basis.lean + theorem algebra.power_basis_is_basis Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.power_basis_is_basis Modified src/ring_theory/algebra_tower.lean - theorem is_scalar_tower.aeval_apply - theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero - theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero_field - theorem is_scalar_tower.algebra_map_aeval - theorem subalgebra.aeval_coe Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Added src/ring_theory/polynomial/tower.lean + theorem is_scalar_tower.aeval_apply + theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero + theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero_field + theorem is_scalar_tower.algebra_map_aeval + theorem subalgebra.aeval_coe Modified src/ring_theory/power_basis.lean - theorem adjoin_root.power_basis_is_basis - theorem algebra.linear_independent_power_basis - theorem algebra.mem_span_power_basis - theorem algebra.power_basis_is_basis - theorem intermediate_field.adjoin.findim - theorem intermediate_field.adjoin.finite_dimensional - theorem intermediate_field.adjoin.power_basis.gen_eq - theorem intermediate_field.power_basis_is_basis + theorem is_integral.linear_independent_pow + theorem is_integral.mem_span_pow - theorem power_basis.equiv_adjoin_simple_aeval - theorem power_basis.equiv_adjoin_simple_gen - theorem power_basis.equiv_adjoin_simple_symm_aeval - theorem power_basis.equiv_adjoin_simple_symm_gen 2021-02-11 06:02:41 330129d feat(data/finset/lattice): `inf` and `sup` on complete_linear_orders produce an element of the set (#6103) ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.exists_mem_eq_inf + theorem finset.exists_mem_eq_sup 2021-02-11 06:02:39 3959a8b perf(ring_theory/{noetherian,ideal/basic}): Simplify proofs of Krull's theorem and related theorems (#6082) Move `submodule.singleton_span_is_compact_element` and `submodule.is_compactly_generated` to more appropriate locations. Add trivial order isomorphisms and order-iso lemmas. Show that `is_atomic` and `is_coatomic` are respected by order isomorphisms. Greatly simplify `is_noetherian_iff_well_founded`. Provide an `is_coatomic` instance on the ideal lattice of a ring and simplify `ideal.exists_le_maximal`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.singleton_span_is_compact_element Modified src/order/atoms.lean + theorem order_iso.is_atomic_iff + theorem order_iso.is_coatomic_iff Modified src/order/compactly_generated.lean + theorem complete_lattice.coatomic_of_top_compact Modified src/order/rel_iso.lean + def order_iso.Ici_bot + def order_iso.Iic_top + theorem order_iso.apply_eq_iff_eq_symm_apply Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/noetherian.lean - theorem submodule.singleton_span_is_compact_element 2021-02-11 00:37:06 030107f feat(order/compactly_generated): A compactly-generated modular lattice is complemented iff atomistic (#6071) Shows that a compactly-generated modular lattice is complemented iff it is atomistic Proves extra lemmas about atomistic or compactly-generated lattices Proves extra lemmas about `complete_lattice.independent` Fix the name of `is_modular_lattice.sup_inf_sup_assoc` ESTIMATED CHANGES Modified docs/references.bib Modified src/order/atoms.lean + theorem Sup_atoms_eq_top + theorem Sup_atoms_le_eq + theorem le_iff_atom_le_imp Modified src/order/compactly_generated.lean + theorem Sup_compact_eq_top + theorem complete_lattice.independent_Union_of_directed + theorem complete_lattice.independent_sUnion_of_directed + theorem is_complemented_iff_is_atomistic + theorem is_complemented_of_is_atomistic Modified src/order/complete_lattice.lean + theorem Sup_sUnion + theorem complete_lattice.independent_empty Modified src/order/modular_lattice.lean + theorem disjoint.disjoint_sup_right_of_disjoint_sup_left + theorem is_modular_lattice.inf_sup_inf_assoc + theorem is_modular_lattice_iff_inf_sup_inf_assoc - theorem is_modular_lattice_iff_sup_inf_sup_assoc 2021-02-11 00:37:04 7fb7fb3 feat(ring_theory/polynomial/chebyshev/dickson): Introduce generalised Dickson polynomials (#5869) and replace lambdashev with dickson 1 1. ESTIMATED CHANGES Modified docs/references.bib Modified src/ring_theory/polynomial/chebyshev/basic.lean + theorem polynomial.chebyshev₁_eq_dickson_one_one - theorem polynomial.chebyshev₁_eq_lambdashev + theorem polynomial.dickson_one_one_char_p + theorem polynomial.dickson_one_one_comp_comm + theorem polynomial.dickson_one_one_eq_chebyshev₁ + theorem polynomial.dickson_one_one_eval_add_inv + theorem polynomial.dickson_one_one_mul + theorem polynomial.dickson_one_one_zmod_p - theorem polynomial.lambdashev_char_p - theorem polynomial.lambdashev_comp_comm - theorem polynomial.lambdashev_eq_chebyshev₁ - theorem polynomial.lambdashev_eval_add_inv - theorem polynomial.lambdashev_mul - theorem polynomial.lambdashev_zmod_p Modified src/ring_theory/polynomial/chebyshev/defs.lean - theorem polynomial.lambdashev_add_two - theorem polynomial.lambdashev_eq_two_le - theorem polynomial.lambdashev_one - theorem polynomial.lambdashev_two - theorem polynomial.lambdashev_zero - theorem polynomial.map_lambdashev Added src/ring_theory/polynomial/chebyshev/dickson.lean + theorem polynomial.dickson_add_two + theorem polynomial.dickson_of_two_le + theorem polynomial.dickson_one + theorem polynomial.dickson_two + theorem polynomial.dickson_two_zero + theorem polynomial.dickson_zero + theorem polynomial.map_dickson 2021-02-11 00:37:02 c70feeb feat(analysis/analytic/inverse): convergence of the inverse of a power series (#5854) If a formal multilinear series has a positive radius of convergence, then its inverse also does. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/geom_sum.lean + theorem geom_sum_Ico' Modified src/analysis/analytic/basic.lean + theorem formal_multilinear_series.le_mul_pow_of_radius_pos Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/inverse.lean + theorem formal_multilinear_series.radius_right_inv_pos_of_radius_pos + theorem formal_multilinear_series.radius_right_inv_pos_of_radius_pos_aux1 + theorem formal_multilinear_series.radius_right_inv_pos_of_radius_pos_aux2 Modified src/analysis/normed_space/multilinear.lean + theorem continuous_linear_map.norm_comp_continuous_multilinear_map_le + theorem continuous_multilinear_curry_fin0_apply_norm + theorem continuous_multilinear_curry_fin0_symm_apply_norm + theorem continuous_multilinear_curry_fin1_apply_norm + theorem continuous_multilinear_curry_fin1_symm_apply_norm + theorem continuous_multilinear_curry_right_equiv_apply_norm + theorem continuous_multilinear_curry_right_equiv_symm_apply_norm 2021-02-11 00:37:00 19f24ce feat(algebra/subalgebra): Trivial subalgebra has trivial automorphism group (#5672) Adds a lemma stating that if top=bot in the subalgebra type then top=bot in the subgroup type. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.alg_equiv.subsingleton_left + theorem subalgebra.alg_equiv.subsingleton_right + theorem subalgebra.alg_hom.subsingleton + theorem subalgebra.subsingleton_of_subsingleton Modified src/ring_theory/witt_vector/structure_polynomial.lean 2021-02-11 00:36:58 983cb90 feat(archive/imo): formalize 1987Q1 (#4731) ESTIMATED CHANGES Added archive/imo/imo1987_q1.lean + theorem imo_1987_q1.card_fixed_points + def imo_1987_q1.fiber + def imo_1987_q1.fixed_points_equiv' + def imo_1987_q1.fixed_points_equiv + theorem imo_1987_q1.main + theorem imo_1987_q1.main_fintype + theorem imo_1987_q1.main₀ + theorem imo_1987_q1.mem_fiber + def imo_1987_q1.p 2021-02-10 21:01:42 13c9ed3 refactor(data/finset/basic): simplify proof (#6160) ... of `bUnion_filter_eq_of_maps_to` looks nicer, slightly faster elaboration, 13% smaller proof term Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/finset/basic.lean 2021-02-10 21:01:40 0bc7fc1 refactor(ring_theory/perfection): faster proof of `coeff_frobenius` (#6159) 4X smaller proof term, elaboration 800ms -> 50ms Co-authors: `lean-gptf`, Stanislas Polu Note: supplying `coeff_pow_p f n` also works but takes 500ms to elaborate ESTIMATED CHANGES Modified src/ring_theory/perfection.lean 2021-02-10 21:01:38 6e52dfe feat(algebra/category/Group/adjunctions): adjunction of abelianization and forgetful functor (#6154) Abelianization has been defined in `group_theory/abelianization` without realising it in category theory. This PR adds this feature. Furthermore, a module doc for abelianization is added and the one for adjunctions is expanded. ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean + def abelianize + def abelianize_adj Modified src/group_theory/abelianization.lean + def abelianization.hom_equiv 2021-02-10 21:01:36 bce1cb3 feat(linear_algebra/matrix): lemmas for `reindex({_linear,_alg}_equiv)?` (#6153) This PR contains a couple of `simp` lemmas for `reindex` and its bundled equivs. Namely, it adds `reindex_refl` (reindexing along the identity map is the identity), and `reindex_apply` (the same as `coe_reindex`, but no `λ i j` on the RHS, which makes it more useful for `rw`'ing.) The previous `reindex_apply` is renamed `coe_reindex` for disambiguation. ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean + theorem matrix.coe_reindex_alg_equiv + theorem matrix.coe_reindex_alg_equiv_symm + theorem matrix.coe_reindex_linear_equiv + theorem matrix.coe_reindex_linear_equiv_symm + theorem matrix.reindex_alg_equiv_refl +/- theorem matrix.reindex_linear_equiv_apply + theorem matrix.reindex_linear_equiv_refl_refl +/- theorem matrix.reindex_linear_equiv_symm_apply + theorem matrix.reindex_refl_refl 2021-02-10 21:01:35 eca4f38 feat(data/int/basic): an integer of absolute value less than one is zero (#6151) lemma eq_zero_iff_abs_lt_one ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.eq_zero_iff_abs_lt_one 2021-02-10 21:01:33 14a1fd7 feat(data/nat/basic): le_of_add_le_* (#6145) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.le_of_add_le_left + theorem nat.le_of_add_le_right Modified src/data/real/nnreal.lean + theorem nnreal.le_of_add_le_left + theorem nnreal.le_of_add_le_right 2021-02-10 21:01:31 dbbac3b chore(algebra/module/pi): add missing smul_comm_class instances (#6139) There are three families of these for consistency with how we have three families of `is_scalar_tower` instances. ESTIMATED CHANGES Modified src/algebra/module/pi.lean 2021-02-10 21:01:30 56fde49 feat(data/polynomial/denoms_clearable): add lemma about clearing denominators in evaluating a polynomial (#6122) Evaluating a polynomial with integer coefficients at a rational number and clearing denominators, yields a number greater than or equal to one. The target can be any `linear_ordered_field K`. The assumption on `K` could be weakened to `linear_ordered_comm_ring` assuming that the image of the denominator is invertible in `K`. Reference: Liouville PR #4301. ESTIMATED CHANGES Modified src/data/polynomial/denoms_clearable.lean + theorem one_le_pow_mul_abs_eval_div 2021-02-10 21:01:28 db0fa61 feat(category_theory/differential_object): the shift functor (#6111) Requested by @jcommelin. ESTIMATED CHANGES Modified src/category_theory/differential_object.lean + def category_theory.differential_object.shift_counit + def category_theory.differential_object.shift_counit_inv + def category_theory.differential_object.shift_counit_iso + def category_theory.differential_object.shift_functor + def category_theory.differential_object.shift_inverse + def category_theory.differential_object.shift_inverse_obj + def category_theory.differential_object.shift_unit + def category_theory.differential_object.shift_unit_inv + def category_theory.differential_object.shift_unit_iso 2021-02-10 17:50:05 f0413da refactor(combinatorics/simple_graph/basic): change statement of mem_decidable to more general version (#6157) Change statement of `mem_decidable` to more general version. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2021-02-10 17:50:03 83118da feat(data/nat/basic): prove an inequality of natural numbers (#6155) Add lemma mul_lt_mul_pow_succ, proving the inequality `n * q < a * q ^ (n + 1)`. Reference: Liouville PR #4301. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.mul_lt_mul_pow_succ 2021-02-10 17:50:01 ca8e009 feat(data/polynomial/ring_division): comp_eq_zero_iff (#6147) Condition for a composition of polynomials to be zero (assuming that the ring is an integral domain). ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.comp_eq_zero_iff 2021-02-10 17:49:59 41530ae feat(field_theory/splitting_field): splits_of_nat_degree_le_one (#6146) Adds the analogs of `splits_of_degree_eq_one` and `splits_of_degree_le_one` for `nat_degree` ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem polynomial.splits_of_nat_degree_eq_one + theorem polynomial.splits_of_nat_degree_le_one 2021-02-10 17:49:57 3fae96c feat(algebra/ordered_monoid): min_*_distrib (#6144) Also provide a `canonically_linear_ordered_add_monoid` instances for `nat`, `nnreal`, `cardinal` and `with_top`. ESTIMATED CHANGES Modified src/algebra/ordered_monoid.lean + theorem min_mul_distrib' + theorem min_mul_distrib Modified src/data/nat/basic.lean Modified src/data/real/nnreal.lean Modified src/set_theory/cardinal.lean 2021-02-10 17:49:55 3cc398b feat(linear_algebra/prod): add an ext lemma that recurses into products (#6124) Combined with #6105, this means that applying `ext` when faced with an equality between `A × (B ⊗[R] C) →ₗ[R] D`s now expands to two goals, the first taking `a : A` and the second taking `b : B` and `c : C`. Again, this comes at the expense of sometimes needing to `simp [prod.mk_fst, linear_map.inr_apply]` after using `ext`, but those are all covered by `dsimp` anyway. ESTIMATED CHANGES Modified src/linear_algebra/prod.lean + theorem linear_map.prod_ext 2021-02-10 15:17:41 0854536 feat(topology/constructions): add `map_fst_nhds` and `map_snd_nhds` (#6142) * Move the definition of `nhds_within` to `topology/basic`. The theory is still in `continuous_on`. * Add `filter.map_inf_principal_preimage`. * Add `map_fst_nhds_within`, `map_fst_nhds`, `map_snd_nhds_within`, and `map_snd_nhds`. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.map_inf_principal_preimage Modified src/topology/basic.lean + def nhds_within Modified src/topology/constructions.lean + theorem map_fst_nhds + theorem map_fst_nhds_within + theorem map_snd_nhds + theorem map_snd_nhds_within Modified src/topology/continuous_on.lean - def nhds_within 2021-02-10 15:17:39 7fd4dcf feat(analysis/normed_space/operator_norm): bundle more arguments (#6140) * bundle the first argument of `continuous_linear_map.smul_rightL`; * add `continuous_linear_map.flip` and `continuous_linear_map.flipₗᵢ`; * use `flip` to redefine `apply`. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.apply + theorem continuous_linear_map.coe_flipₗᵢ + def continuous_linear_map.flip + theorem continuous_linear_map.flip_add + theorem continuous_linear_map.flip_flip + theorem continuous_linear_map.flip_smul + def continuous_linear_map.flipₗᵢ + theorem continuous_linear_map.flipₗᵢ_symm + theorem continuous_linear_map.op_norm_flip +/- def continuous_linear_map.smul_rightL 2021-02-10 15:17:37 d5e2029 refactor(linear_algebra/basic): extract definitions about pi types to a new file (#6130) This makes it consistent with how the `prod` definitions are in their own file. With each in its own file, it should be easier to unify the APIs between them. This does not do anything other than copy across the definitions. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/basic.lean - def linear_map.diag - theorem linear_map.infi_ker_proj - def linear_map.infi_ker_proj_equiv - theorem linear_map.ker_pi - def linear_map.pi - theorem linear_map.pi_apply - theorem linear_map.pi_comp - theorem linear_map.pi_eq_zero - theorem linear_map.pi_zero - def linear_map.proj - theorem linear_map.proj_apply - theorem linear_map.proj_pi - theorem linear_map.update_apply Added src/linear_algebra/pi.lean + def linear_map.diag + theorem linear_map.infi_ker_proj + def linear_map.infi_ker_proj_equiv + theorem linear_map.ker_pi + def linear_map.pi + theorem linear_map.pi_apply + theorem linear_map.pi_comp + theorem linear_map.pi_eq_zero + theorem linear_map.pi_zero + def linear_map.proj + theorem linear_map.proj_apply + theorem linear_map.proj_pi + theorem linear_map.update_apply Modified src/linear_algebra/std_basis.lean Modified src/topology/algebra/module.lean 2021-02-10 11:14:03 7a51c0f refactor(data/set/intervals/basic): simpler proof of `Iio_union_Ioo'` (#6132) proof term 2577 -> 1587 chars elaboration time 130ms -> 75ms Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean 2021-02-10 05:02:51 5a2eac6 refactor(order/closure): golf `closure_inter_le` (#6138) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/order/closure.lean 2021-02-10 03:37:24 0731a70 chore(scripts): update nolints.txt (#6143) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-10 00:03:36 922ecb0 chore(group_theory/perm/sign): speed up sign_aux_swap_zero_one proof (#6128) ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean 2021-02-10 00:03:34 18b378d chore(data/fin): reorder file to group declarations (#6109) The `data/fin` file has a lot of definitions and lemmas. This reordering groups declarations and places ones that do not rely on `fin` operations first, like order. No definitions or lemma statements have been changed. A minimal amount of proofs have been rephrased. No reformatting of style has been done. Section titles have been added. This is useful in preparation for redefining `fin` operations (lean#527). Additionally, it allows for better organization for other refactors like making `pred` and `pred_above` total. ESTIMATED CHANGES Modified src/algebra/linear_recurrence.lean Modified src/analysis/analytic/composition.lean Modified src/data/fin.lean +/- theorem fin.mk_coe 2021-02-10 00:03:32 4c1c11c feat(data/equiv/mul_add): monoids/rings with one element are isomorphic (#6079) Monoids (resp. add_monoids, semirings) with one element are isomorphic. ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + def mul_equiv.mul_equiv_of_unique_of_unique Modified src/data/equiv/ring.lean + def ring_equiv.ring_equiv_of_unique_of_unique 2021-02-10 00:03:30 b34da00 feat(algebra/geom_sum): adds further variants (#6077) This adds further variants for the value of `geom_series\2`. Additionally, a docstring is provided. Thanks to Patrick Massot for help with the reindexing of sums. ESTIMATED CHANGES Modified src/algebra/geom_sum.lean + theorem commute.mul_geom_sum₂ + theorem commute.mul_neg_geom_sum₂ + theorem geom_sum₂_Ico - theorem geom_sum₂_mul_comm + theorem geom₂_sum + theorem mul_geom_sum₂_Ico + theorem op_geom_series₂ Modified src/algebra/opposites.lean + theorem opposite.commute.op + theorem opposite.commute.unop + theorem opposite.commute_op + theorem opposite.commute_unop + theorem opposite.semiconj_by.op + theorem opposite.semiconj_by.unop + theorem opposite.semiconj_by_op + theorem opposite.semiconj_by_unop 2021-02-10 00:03:28 49e50ee feat(measure_theory/lp_space): add more API on Lp spaces (#6042) Flesh out the file on `L^p` spaces, notably adding facts on the composition with Lipschitz functions. This makes it possible to define in one go the positive part of an `L^p` function, and its image under a continuous linear map. The file `ae_eq_fun.lean` is split into two, to solve a temporary issue: this file defines a global emetric space instance (of `L^1` type) on the space of function classes. This passes to subtypes, and clashes with the topology on `L^p` coming from the distance. This did not show up before as there were not enough topological statements on `L^p`, but I have been bitten by this when adding new results. For now, we move this part of `ae_eq_fun.lean` to another file which is not imported by `lp_space.lean`, to avoid the clash. This will be solved in a subsequent PR in which I will remove the global instance, and construct the integral based on the specialization of `L^p` to `p = 1` instead of the ad hoc construction we have now (note that, currently, we have two different `L^1` spaces in mathlib, denoted `Lp E 1 μ` and `α →₁[μ] E` -- I will remove the second one in a later PR). ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnreal.nnnorm_eq + theorem nnreal.norm_eq - theorem real.nnnorm_coe_eq_self - theorem real.nnreal.norm_eq Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/ess_sup.lean +/- theorem ennreal.ess_sup_eq_zero_iff Modified src/measure_theory/lp_space.lean + theorem continuous_linear_map.coe_fn_comp_Lp + def continuous_linear_map.comp_Lp + def continuous_linear_map.comp_LpL + def continuous_linear_map.comp_Lpₗ + theorem continuous_linear_map.norm_compLpL_le + theorem continuous_linear_map.norm_comp_Lp_le + theorem fact_one_le_one_ennreal + theorem fact_one_le_top_ennreal + theorem fact_one_le_two_ennreal + theorem lipschitz_with.coe_fn_comp_Lp + def lipschitz_with.comp_Lp + theorem lipschitz_with.comp_Lp_zero + theorem lipschitz_with.continuous_comp_Lp + theorem lipschitz_with.lipschitz_with_comp_Lp + theorem lipschitz_with.norm_comp_Lp_le + theorem lipschitz_with.norm_comp_Lp_sub_le - theorem measure_theory.Lp.ae_measurable +/- theorem measure_theory.Lp.coe_fn_add +/- theorem measure_theory.Lp.coe_fn_mk +/- theorem measure_theory.Lp.coe_fn_neg + theorem measure_theory.Lp.coe_fn_neg_part + theorem measure_theory.Lp.coe_fn_neg_part_eq_max + theorem measure_theory.Lp.coe_fn_pos_part +/- theorem measure_theory.Lp.coe_fn_smul +/- theorem measure_theory.Lp.coe_fn_sub + theorem measure_theory.Lp.coe_mk + theorem measure_theory.Lp.coe_pos_part + theorem measure_theory.Lp.continuous_neg_part + theorem measure_theory.Lp.continuous_pos_part + theorem measure_theory.Lp.dist_def + theorem measure_theory.Lp.edist_def + theorem measure_theory.Lp.edist_to_Lp_to_Lp + theorem measure_theory.Lp.edist_to_Lp_zero + theorem measure_theory.Lp.eq_zero_iff_ae_eq_zero + theorem measure_theory.Lp.ext + theorem measure_theory.Lp.ext_iff + theorem measure_theory.Lp.lipschitz_with_pos_part - theorem measure_theory.Lp.measurable + theorem measure_theory.Lp.mem_Lp_iff_mem_ℒp + theorem measure_theory.Lp.mem_Lp_of_ae_le + theorem measure_theory.Lp.mem_Lp_of_ae_le_mul - theorem measure_theory.Lp.mem_ℒp + def measure_theory.Lp.neg_part + theorem measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul + theorem measure_theory.Lp.norm_le_norm_of_ae_le + theorem measure_theory.Lp.norm_to_Lp + def measure_theory.Lp.pos_part + theorem measure_theory.Lp.to_Lp_coe_fn +/- theorem measure_theory.ae_eq_zero_of_snorm'_eq_zero +/- theorem measure_theory.lintegral_rpow_nnnorm_eq_rpow_snorm' +/- theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top +/- theorem measure_theory.mem_ℒp.add +/- theorem measure_theory.mem_ℒp.ae_eq + theorem measure_theory.mem_ℒp.ae_measurable +/- theorem measure_theory.mem_ℒp.coe_fn_to_Lp + theorem measure_theory.mem_ℒp.const_mul +/- theorem measure_theory.mem_ℒp.const_smul - theorem measure_theory.mem_ℒp.integrable +/- theorem measure_theory.mem_ℒp.neg + theorem measure_theory.mem_ℒp.norm + theorem measure_theory.mem_ℒp.of_le + theorem measure_theory.mem_ℒp.of_le_mul +/- theorem measure_theory.mem_ℒp.snorm_lt_top +/- theorem measure_theory.mem_ℒp.snorm_ne_top +/- theorem measure_theory.mem_ℒp.sub +/- def measure_theory.mem_ℒp.to_Lp + theorem measure_theory.mem_ℒp.to_Lp_add + theorem measure_theory.mem_ℒp.to_Lp_const_smul + theorem measure_theory.mem_ℒp.to_Lp_eq_to_Lp_iff + theorem measure_theory.mem_ℒp.to_Lp_neg + theorem measure_theory.mem_ℒp.to_Lp_sub + theorem measure_theory.mem_ℒp.to_Lp_zero +/- theorem measure_theory.mem_ℒp_congr_ae +/- theorem measure_theory.mem_ℒp_const - theorem measure_theory.mem_ℒp_one_iff_integrable +/- def measure_theory.snorm' +/- theorem measure_theory.snorm'_add_le +/- theorem measure_theory.snorm'_congr_ae + theorem measure_theory.snorm'_congr_norm_ae +/- theorem measure_theory.snorm'_const' +/- theorem measure_theory.snorm'_const +/- theorem measure_theory.snorm'_const_of_probability_measure +/- theorem measure_theory.snorm'_const_smul +/- theorem measure_theory.snorm'_eq_zero_iff +/- theorem measure_theory.snorm'_eq_zero_of_ae_zero' +/- theorem measure_theory.snorm'_eq_zero_of_ae_zero +/- theorem measure_theory.snorm'_le_snorm_ess_sup +/- theorem measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ +/- theorem measure_theory.snorm'_measure_zero_of_neg +/- theorem measure_theory.snorm'_measure_zero_of_pos + theorem measure_theory.snorm'_mono_ae +/- theorem measure_theory.snorm'_neg +/- theorem measure_theory.snorm'_zero' +/- theorem measure_theory.snorm'_zero +/- def measure_theory.snorm +/- theorem measure_theory.snorm_add_le +/- theorem measure_theory.snorm_add_lt_top +/- theorem measure_theory.snorm_add_lt_top_of_one_le +/- theorem measure_theory.snorm_congr_ae + theorem measure_theory.snorm_congr_norm_ae +/- theorem measure_theory.snorm_const' +/- theorem measure_theory.snorm_const +/- theorem measure_theory.snorm_eq_snorm' +/- theorem measure_theory.snorm_eq_zero_iff +/- theorem measure_theory.snorm_ess_sup_eq_zero_iff + theorem measure_theory.snorm_le_mul_snorm_aux_of_neg + theorem measure_theory.snorm_le_mul_snorm_aux_of_nonneg + theorem measure_theory.snorm_le_mul_snorm_of_ae_le_mul +/- theorem measure_theory.snorm_measure_zero + theorem measure_theory.snorm_mono_ae +/- theorem measure_theory.snorm_neg + theorem measure_theory.snorm_norm +/- theorem measure_theory.snorm_zero +/- theorem measure_theory.zero_mem_ℒp 2021-02-10 00:03:26 7c77279 feat(category_theory/monad): use bundled monads everywhere (#5889) This PR makes bundled monads the default (adapting definitions by @adamtopaz). The main motivation for this is that the category of algebras for a monad is currently not "hygienic" in that isomorphic monads don't have equivalent Eilenberg-Moore categories, but further that the notion of monad isomorphism is tricky to express, in particular this makes the definition of a monadic functor not preserved by isos either despite not explicitly having monads or algebras in the type. We can now say: ``` @[simps] def algebra_equiv_of_iso_monads {T₁ T₂ : monad C} (h : T₁ ≅ T₂) : algebra T₁ ≌ algebra T₂ := ``` Other than this new data, virtually everything in this PR is just refactoring - in particular there's quite a bit of golfing and generalisation possible, but to keep the diff here minimal I'll do those in later PRs ESTIMATED CHANGES Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/monad/adjunction.lean + def category_theory.adjunction.to_comonad + def category_theory.adjunction.to_monad +/- def category_theory.comonad.comparison - def category_theory.comonad.comparison_forget + def category_theory.comparison_forget +/- def category_theory.monad.comparison +/- def category_theory.monad.comparison_forget Modified src/category_theory/monad/algebra.lean +/- structure category_theory.comonad.coalgebra +/- def category_theory.monad.adj +/- structure category_theory.monad.algebra + def category_theory.monad.algebra_equiv_of_iso_monads + theorem category_theory.monad.algebra_equiv_of_iso_monads_comp_forget + def category_theory.monad.algebra_functor_of_monad_hom + def category_theory.monad.algebra_functor_of_monad_hom_comp + def category_theory.monad.algebra_functor_of_monad_hom_eq + def category_theory.monad.algebra_functor_of_monad_hom_id Modified src/category_theory/monad/basic.lean + theorem category_theory.comonad.coassoc + def category_theory.comonad.id + theorem category_theory.comonad.left_counit + theorem category_theory.comonad.right_counit + def category_theory.comonad.simps.to_functor + def category_theory.comonad.simps.δ' + def category_theory.comonad.simps.ε' + def category_theory.comonad.δ + def category_theory.comonad.ε + structure category_theory.comonad - theorem category_theory.comonad_hom.assoc - def category_theory.comonad_hom.comp - theorem category_theory.comonad_hom.comp_id - theorem category_theory.comonad_hom.ext - def category_theory.comonad_hom.id - theorem category_theory.comonad_hom.id_comp + theorem category_theory.comonad_hom.id_to_nat_trans +/- structure category_theory.comonad_hom + def category_theory.comonad_iso.to_nat_iso + def category_theory.comonad_to_functor + theorem category_theory.comonad_to_functor_eq_coe + theorem category_theory.comp_to_nat_trans + theorem category_theory.monad.assoc + def category_theory.monad.id + theorem category_theory.monad.left_unit + theorem category_theory.monad.right_unit + def category_theory.monad.simps.to_functor + def category_theory.monad.simps.η' + def category_theory.monad.simps.μ' + def category_theory.monad.η + def category_theory.monad.μ + structure category_theory.monad - theorem category_theory.monad_hom.assoc - def category_theory.monad_hom.comp - theorem category_theory.monad_hom.comp_id + theorem category_theory.monad_hom.comp_to_nat_trans - theorem category_theory.monad_hom.ext - def category_theory.monad_hom.id - theorem category_theory.monad_hom.id_comp + theorem category_theory.monad_hom.id_to_nat_trans +/- structure category_theory.monad_hom + def category_theory.monad_iso.to_nat_iso + def category_theory.monad_to_functor + theorem category_theory.monad_to_functor_eq_coe Modified src/category_theory/monad/bundled.lean - theorem category_theory.Comonad.coassoc_func_app - theorem category_theory.Comonad.comp_to_nat_trans - def category_theory.Comonad.forget - def category_theory.Comonad.hom - def category_theory.Comonad.terminal - structure category_theory.Comonad - theorem category_theory.Monad.assoc_func_app - theorem category_theory.Monad.comp_to_nat_trans - def category_theory.Monad.forget - def category_theory.Monad.hom - def category_theory.Monad.initial - structure category_theory.Monad Modified src/category_theory/monad/coequalizer.lean +/- def category_theory.monad.beck_cofork +/- def category_theory.monad.beck_split_coequalizer Modified src/category_theory/monad/equiv_mon.lean +/- def category_theory.Monad.Mon_to_Monad +/- def category_theory.Monad.Monad_Mon_equiv +/- def category_theory.Monad.Monad_to_Mon +/- def category_theory.Monad.of_Mon +/- def category_theory.Monad.to_Mon Modified src/category_theory/monad/kleisli.lean +/- def category_theory.kleisli Modified src/category_theory/monad/limits.lean +/- def category_theory.monad.forget_creates_colimits.lambda +/- def category_theory.monad.forget_creates_colimits.new_cocone +/- def category_theory.monad.forget_creates_colimits.γ +/- def category_theory.monad.forget_creates_limits.γ Modified src/category_theory/monad/monadicity.lean +/- def category_theory.monad.monadicity_internal.comparison_left_adjoint_hom_equiv +/- def category_theory.monad.monadicity_internal.unit_cofork Modified src/category_theory/monad/products.lean + def category_theory.coprod_monad + def category_theory.prod_comonad Modified src/category_theory/monad/types.lean +/- def category_theory.eq + def category_theory.of_type_monad Modified src/category_theory/monoidal/End.lean Modified src/measure_theory/category/Meas.lean + def Meas.Giry +/- def Meas.Integral Modified src/topology/category/Compactum.lean +/- def Compactum.incl +/- def Compactum.join 2021-02-09 20:17:00 ba9e06e refactor(algebra/lie/basic): rm extraneous rewrite hypothesis (#6137) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean 2021-02-09 20:16:58 456bdb7 refactor(measure_theory/measure_space): simplify proof (#6136) 2X smaller proof term Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean 2021-02-09 20:16:56 c377e68 refactor(ring_theory/polynomial/symmetric): simplify proof (#6135) ... of `mv_polynomial.is_symmetric.sub` 2X smaller proof term Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/ring_theory/polynomial/symmetric.lean 2021-02-09 20:16:55 eb2dcba refactor(*): remove uses of omega in the library (#6129) The transition to Lean 4 will be easier if we don't have to port omega. ESTIMATED CHANGES Modified src/algebra/char_p/basic.lean Modified src/algebra/lie/basic.lean Modified src/algebra/linear_recurrence.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/combinatorics/composition.lean Modified src/combinatorics/simple_graph/degree_sum.lean Modified src/computability/regular_expressions.lean Modified src/data/nat/choose/sum.lean Modified src/data/polynomial/monic.lean Modified src/data/polynomial/ring_division.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/multilinear.lean Modified src/number_theory/pell.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/cardinal_ordinal.lean 2021-02-09 20:16:52 296899e refactor(data/string/basic): simplify proof of `to_list_nonempty` (#6117) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/data/string/basic.lean +/- theorem string.to_list_nonempty 2021-02-09 20:16:49 d9d56eb feat(analysis/special_functions/trigonometric): `complex.log` is smooth away from `(-∞, 0]` (#6041) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_strict_deriv_at.comp_has_strict_fderiv_at + theorem local_homeomorph.has_strict_deriv_at_symm Modified src/analysis/complex/basic.lean + theorem complex.continuous_im +/- theorem complex.continuous_of_real + theorem complex.continuous_re Modified src/analysis/special_functions/exp_log.lean + theorem complex.measurable_im + theorem complex.measurable_of_real + theorem complex.measurable_re Modified src/analysis/special_functions/trigonometric.lean + theorem complex.arg_eq_pi_iff + def complex.exp_local_homeomorph + theorem complex.has_strict_deriv_at_log + theorem complex.measurable_arg + theorem complex.measurable_log + theorem complex.times_cont_diff_at_log + theorem continuous.clog + theorem continuous_at.clog + theorem continuous_on.clog + theorem continuous_within_at.clog + theorem differentiable.clog + theorem differentiable_at.clog + theorem differentiable_on.clog + theorem differentiable_within_at.clog + theorem filter.tendsto.clog + theorem has_deriv_at.clog + theorem has_deriv_within_at.clog + theorem has_fderiv_at.clog + theorem has_fderiv_within_at.clog + theorem has_strict_deriv_at.clog + theorem has_strict_fderiv_at.clog + theorem measurable.carg + theorem measurable.clog Modified src/data/complex/basic.lean + theorem complex.of_real_def Modified src/data/complex/exponential.lean + theorem complex.exp_im + theorem complex.exp_re Modified src/data/equiv/local_equiv.lean Modified src/data/set/function.lean + theorem set.image_restrict + theorem set.left_inv_on.image_inter' + theorem set.left_inv_on.image_inter Modified src/measure_theory/borel_space.lean +/- theorem measurable.const_mul + theorem measurable.div +/- theorem measurable.mul_const + theorem measurable.sub_const Modified src/topology/continuous_on.lean Modified src/topology/local_homeomorph.lean +/- def homeomorph.to_local_homeomorph + def local_homeomorph.of_continuous_open + def local_homeomorph.of_continuous_open_restrict 2021-02-09 16:47:39 e8f383c refactor(analysis/special_functions/trigonometric): simpler proof (#6133) ... of `complex.tan_int_mul_pi` 3X faster elaboration, 2X smaller proof term Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean 2021-02-09 16:47:37 bf1465c refactor(data/fintype/basic): golf `card_eq_one_of_forall_eq` (#6131) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2021-02-09 16:47:34 fdbd4bf feat(archive/imo): formalize solution to IMO 2013 problem Q1 (#6110) ESTIMATED CHANGES Added archive/imo/imo2013_q1.lean + theorem arith_lemma + theorem imo2013_q1 + theorem prod_lemma 2021-02-09 14:41:24 aa9e2b8 feat(analysis/normed_space/operator_norm): lemmas about `E →L[𝕜] F →L[𝕜] G` (#6102) ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.le_op_norm₂ + theorem continuous_linear_map.op_norm_le_bound₂ +/- theorem linear_isometry.norm_to_continuous_linear_map +/- theorem linear_isometry.norm_to_continuous_linear_map_le + theorem linear_map.mk_continuous_norm_le' +/- theorem linear_map.mk_continuous_norm_le + def linear_map.mk_continuous₂ + theorem linear_map.mk_continuous₂_apply + theorem linear_map.mk_continuous₂_norm_le' + theorem linear_map.mk_continuous₂_norm_le 2021-02-09 14:41:22 766146b fix(topology/algebra/infinite_sum): remove hard-coding of ℕ and ℝ (#6096) It may be possible to make these assumptions stricter, but they're weak enough to still cover the original use case. Hopefully that can be handled by @alexjbest's upcoming linter to relax assumptions. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.update + theorem has_sum_lt + theorem has_sum_mono + theorem has_sum_strict_mono + theorem summable.update +/- theorem tsum_lt_tsum + theorem tsum_mono + theorem tsum_strict_mono 2021-02-09 11:14:56 2d50cce refactor(geometry/euclidean): shorten proof (#6121) ... of `eq_reflection_of_eq_subspace` Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean 2021-02-09 11:14:54 aaab113 refactor(linear_algebra/prod): split out prod and coprod defs and lemmas (#6059) Lemmas are moved without modification. I expect this will take a few builds of adding missing imports. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean Modified src/linear_algebra/basic.lean - theorem linear_equiv.coe_prod - theorem linear_equiv.prod_apply - theorem linear_equiv.prod_symm - theorem linear_equiv.skew_prod_apply - theorem linear_equiv.skew_prod_symm_apply - theorem linear_map.comap_prod_prod - theorem linear_map.comp_coprod - def linear_map.coprod - theorem linear_map.coprod_apply - def linear_map.coprod_equiv - theorem linear_map.coprod_inl - theorem linear_map.coprod_inl_inr - theorem linear_map.coprod_inr - theorem linear_map.disjoint_inl_inr - def linear_map.fst - theorem linear_map.fst_apply - theorem linear_map.fst_eq_coprod - theorem linear_map.fst_prod - def linear_map.inl - theorem linear_map.inl_apply - theorem linear_map.inl_eq_prod - theorem linear_map.inl_injective - def linear_map.inr - theorem linear_map.inr_apply - theorem linear_map.inr_eq_prod - theorem linear_map.inr_injective - theorem linear_map.is_compl_range_inl_inr - theorem linear_map.ker_prod - theorem linear_map.map_coprod_prod - theorem linear_map.pair_fst_snd - def linear_map.prod - theorem linear_map.prod_eq_inf_comap - theorem linear_map.prod_eq_sup_map - def linear_map.prod_equiv - def linear_map.prod_map - theorem linear_map.prod_map_apply - theorem linear_map.range_coprod - theorem linear_map.range_prod_eq - theorem linear_map.range_prod_le - def linear_map.snd - theorem linear_map.snd_apply - theorem linear_map.snd_eq_coprod - theorem linear_map.snd_prod - theorem linear_map.span_inl_union_inr - theorem linear_map.sup_range_inl_inr - theorem submodule.comap_fst - theorem submodule.comap_snd - theorem submodule.ker_inl - theorem submodule.ker_inr - theorem submodule.map_inl - theorem submodule.map_inr - theorem submodule.prod_comap_inl - theorem submodule.prod_comap_inr - theorem submodule.prod_map_fst - theorem submodule.prod_map_snd - theorem submodule.range_fst - theorem submodule.range_snd - theorem submodule.sup_eq_range Modified src/linear_algebra/linear_independent.lean Modified src/linear_algebra/linear_pmap.lean Added src/linear_algebra/prod.lean + theorem linear_equiv.coe_prod + theorem linear_equiv.prod_apply + theorem linear_equiv.prod_symm + theorem linear_equiv.skew_prod_apply + theorem linear_equiv.skew_prod_symm_apply + theorem linear_map.comap_prod_prod + theorem linear_map.comp_coprod + def linear_map.coprod + theorem linear_map.coprod_apply + def linear_map.coprod_equiv + theorem linear_map.coprod_inl + theorem linear_map.coprod_inl_inr + theorem linear_map.coprod_inr + theorem linear_map.disjoint_inl_inr + def linear_map.fst + theorem linear_map.fst_apply + theorem linear_map.fst_eq_coprod + theorem linear_map.fst_prod + def linear_map.inl + theorem linear_map.inl_apply + theorem linear_map.inl_eq_prod + theorem linear_map.inl_injective + def linear_map.inr + theorem linear_map.inr_apply + theorem linear_map.inr_eq_prod + theorem linear_map.inr_injective + theorem linear_map.is_compl_range_inl_inr + theorem linear_map.ker_prod + theorem linear_map.map_coprod_prod + theorem linear_map.pair_fst_snd + def linear_map.prod + theorem linear_map.prod_eq_inf_comap + theorem linear_map.prod_eq_sup_map + def linear_map.prod_equiv + def linear_map.prod_map + theorem linear_map.prod_map_apply + theorem linear_map.range_coprod + theorem linear_map.range_prod_eq + theorem linear_map.range_prod_le + def linear_map.snd + theorem linear_map.snd_apply + theorem linear_map.snd_eq_coprod + theorem linear_map.snd_prod + theorem linear_map.span_inl_union_inr + theorem linear_map.sup_range_inl_inr + theorem submodule.comap_fst + theorem submodule.comap_snd + theorem submodule.ker_inl + theorem submodule.ker_inr + theorem submodule.map_inl + theorem submodule.map_inr + theorem submodule.prod_comap_inl + theorem submodule.prod_comap_inr + theorem submodule.prod_map_fst + theorem submodule.prod_map_snd + theorem submodule.range_fst + theorem submodule.range_snd + theorem submodule.sup_eq_range Modified src/linear_algebra/projection.lean 2021-02-09 11:14:52 17448c6 feat(group_theory/perm/sign): induced permutation on a subtype that is a fintype (#5706) If a permutation on a type maps a subtype into itself and the subtype is a fintype, then we get a permutation on the subtype. Similar to the subtype_perm definition in the same file. ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + theorem equiv.perm.subtype_perm_apply Modified src/group_theory/perm/sign.lean + theorem equiv.perm.perm_inv_maps_to_iff_maps_to + theorem equiv.perm.perm_inv_maps_to_of_maps_to + theorem equiv.perm.perm_inv_on_of_perm_on_finset + theorem equiv.perm.perm_inv_on_of_perm_on_fintype + def equiv.perm.subtype_perm_of_fintype + theorem equiv.perm.subtype_perm_of_fintype_apply + theorem equiv.perm.subtype_perm_of_fintype_one 2021-02-09 07:26:19 342bccf refactor(group_theory/solvable): `simp` -> assumption (#6120) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/group_theory/solvable.lean 2021-02-09 07:26:17 ec8f2ac refactor(data/ordmap/ordset): simpler proof of `not_le_delta` (#6119) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/data/ordmap/ordset.lean 2021-02-09 07:26:15 7e5ff2f refactor(computability/partrec): simpler proof of `subtype_mk` (#6118) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/computability/partrec.lean 2021-02-09 07:26:13 183f4fc refactor(category_theory/adjunction/mates): faster proof (#6116) Co-authors: `lean-gptf`, Stanislas Polu elaboration 750ms -> 350ms 5X smaller proof term This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/category_theory/adjunction/mates.lean 2021-02-09 07:26:11 1611b30 refactor(combinatorics/simple_graph): simplify proofs (#6115) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2021-02-09 07:26:10 d06b11a refactor(algebra/lie/basic): golf `lie_algebra.morphism.map_bot_iff` (#6114) Co-authors: `lean-gptf`, Stanislas Polu This was found by `formal-lean-wm-to-tt-m1-m2-v4-c4` when we evaluated it on theorems added to `mathlib` after we last extracted training data. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean 2021-02-09 07:26:06 6b65c37 refactor(linear_algebra/tensor_product): Use a more powerful lemma for ext (#6105) This means that the `ext` tactic can recurse into both the left and the right of the tensor product. The downside is that `compr₂_apply, mk_apply` needs to be added to some `simp only`s. Notably this makes `ext` able to prove `tensor_product.ext_fourfold` (which is still needed to cut down elaboration time for the `pentagon` proof), and enables `ext` to be used on things like tensor products of a tensor_algebra and a free_algebra. ESTIMATED CHANGES Modified src/category_theory/monoidal/internal/Module.lean Modified src/linear_algebra/tensor_product.lean 2021-02-09 07:26:04 7b1945e feat(logic/basic): dite_eq_ite (#6095) Simplify `dite` to `ite` when possible. ESTIMATED CHANGES Modified src/data/real/golden_ratio.lean Modified src/group_theory/perm/sign.lean Modified src/logic/basic.lean + theorem dite_eq_ite 2021-02-09 05:58:46 8fd8636 feat(field_theory/minpoly): add `minpoly.nat_degree_pos` (#6100) I needed this lemma and noticed that `minpoly.lean` actually uses this result more than `minpoly.degree_pos` (including in the proof of `degree_pos` itself). So I took the opportunity to golf a couple of proofs. ESTIMATED CHANGES Modified src/field_theory/minpoly.lean +/- theorem minpoly.degree_pos + theorem minpoly.nat_degree_pos 2021-02-09 03:30:54 69bf484 chore(scripts): update nolints.txt (#6112) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-09 00:54:24 117e729 chore(linear_algebra/basic, analysis/normed_space/operator_norm): bundle another argument into the homs (#5899) ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.apply - def continuous_linear_map.applyₗ - theorem continuous_linear_map.continuous_applyₗ Modified src/linear_algebra/basic.lean +/- def linear_map.applyₗ' +/- def linear_map.applyₗ 2021-02-08 21:41:41 7f11d72 feat(analysis/normed_space): `continuous_linear_map.prod` as a `linear_isometry_equiv` (#6099) * add lemma `continuous_linear_map.op_norm_prod`; * add `continuous_linear_map.prodₗ` and `continuous_linear_map.prodₗᵢ`; * add `prod.topological_semimodule`; * drop unused `is_bounded_linear_map_prod_iso`. ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean - theorem is_bounded_linear_map_prod_iso Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_prod + def continuous_linear_map.prodₗᵢ Modified src/topology/algebra/module.lean + def continuous_linear_map.prodₗ 2021-02-08 21:41:39 03074b1 doc(algebra/{field_power, punit_instances}): module docs (#6097) Additionally `ordered_field` is aligned with the style guidelines. ESTIMATED CHANGES Modified src/algebra/field_power.lean Modified src/algebra/ordered_field.lean Modified src/algebra/punit_instances.lean 2021-02-08 19:30:23 d62d793 feat(differential_object/iso_app): extract the isomorphism of underlying objects (#6083) From `lean-liquid`. ESTIMATED CHANGES Modified src/category_theory/differential_object.lean + def category_theory.differential_object.iso_app + theorem category_theory.differential_object.iso_app_refl + theorem category_theory.differential_object.iso_app_symm + theorem category_theory.differential_object.iso_app_trans 2021-02-08 19:30:20 0c6fa28 feat(linear_algebra/basis): if `(p : submodule K V) < ⊤`, then there exists `f : V →ₗ[K] K`, `p ≤ ker f` (#6074) ESTIMATED CHANGES Modified src/analysis/convex/cone.lean Modified src/linear_algebra/basis.lean + theorem linear_map.exists_extend + theorem submodule.exists_le_ker_of_lt_top Modified src/linear_algebra/linear_pmap.lean + theorem linear_pmap.domain_sup_span_singleton + theorem linear_pmap.sup_span_singleton_apply_mk 2021-02-08 19:30:18 4e9fbb9 feat(measure_theory/probability_mass_function): Add definitions for filtering pmfs on a predicate (#6033) ESTIMATED CHANGES Modified src/measure_theory/probability_mass_function.lean + def pmf.filter + theorem pmf.filter_apply + theorem pmf.filter_apply_eq_zero_iff + theorem pmf.filter_apply_eq_zero_of_not_mem + theorem pmf.filter_apply_ne_zero_iff + theorem pmf.mem_support_iff + def pmf.normalize + theorem pmf.normalize_apply Modified src/topology/instances/ennreal.lean + theorem nnreal.indicator_summable + theorem nnreal.tsum_indicator_ne_zero 2021-02-08 19:30:16 f6504f1 feat(computability/DFA): the pumping lemma (#5925) ESTIMATED CHANGES Modified src/computability/DFA.lean + theorem DFA.eval_from_of_append + theorem DFA.eval_from_of_pow + theorem DFA.eval_from_split + theorem DFA.mem_accepts + theorem DFA.pumping_lemma Modified src/computability/NFA.lean + theorem NFA.pumping_lemma 2021-02-08 16:17:44 1d49f87 chore(data/finset): golf some proofs (#6101) * prove that `finset.min'` and `finset.max'` are `is_least` and `is_greatest` elements of the corresponding sets; * use this fact to golf some proofs; generalize `min'_lt_max'` to `is_glb_lt_is_lub_of_ne`; * add `finset.card_le_one` and `finset.one_lt_card`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_le_one + theorem finset.one_lt_card Modified src/data/finset/lattice.lean + theorem finset.is_greatest_max' + theorem finset.is_least_min' + theorem finset.le_min'_iff + theorem finset.max'_le_iff Modified src/order/bounds.lean + theorem is_glb_lt_is_lub_of_ne + theorem le_of_is_lub_le_is_glb + theorem set.subsingleton_of_is_lub_le_is_glb 2021-02-08 16:17:43 1a0f84c feat(linear_algebra/basic): bundle prod and coprod into linear_equivs (#5992) In order to do this, this has to reorder some definitions to make the semimodule structure on linear maps available earlier. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.comp_coprod +/- theorem linear_map.coprod_apply + def linear_map.coprod_equiv +/- theorem linear_map.fst_eq_coprod - theorem linear_map.is_linear_map_prod_iso +/- def linear_map.prod - theorem linear_map.prod_apply + def linear_map.prod_equiv +/- theorem linear_map.snd_eq_coprod 2021-02-08 14:15:50 8a23aa3 feat(topology/instances/{nnreal,ennreal}): add tendsto_cofinite_zero_of_summable (#6093) For `f : a -> nnreal`, `summable f` implies `tendsto f cofinite (nhds 0)`. For `f : a -> ennreal`, `tsum f < \top` implies `tendsto f cofinite (nhds 0)`. Add versions of these lemmas with `at_top` instead of `cofinite` when `a = N`. Also add `ennreal.tendsto_at_top_zero`, a simpler statement for a particular case of `ennreal.tendsto_at_top`. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem summable.tendsto_at_top_zero Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_at_top_zero_of_tsum_lt_top + theorem ennreal.tendsto_cofinite_zero_of_tsum_lt_top Modified src/topology/instances/nnreal.lean + theorem nnreal.tendsto_at_top_zero_of_summable + theorem nnreal.tendsto_cofinite_zero_of_summable 2021-02-08 14:15:49 8e3e79a feat(category_theory/pi): extract components of isomorphisms of indexed objects (#6086) From `lean-liquid`. ESTIMATED CHANGES Modified src/category_theory/pi/basic.lean + def category_theory.pi.iso_app + theorem category_theory.pi.iso_app_refl + theorem category_theory.pi.iso_app_symm + theorem category_theory.pi.iso_app_trans 2021-02-08 14:15:47 f075a69 feat(category_theory/differential_object): lifting a functor (#6084) From `lean-liquid`. ESTIMATED CHANGES Modified src/category_theory/differential_object.lean + def category_theory.functor.map_differential_object 2021-02-08 14:15:44 6561639 feat(topology/local_extr): not locally surjective at a local extr (#6076) ESTIMATED CHANGES Modified src/topology/local_extr.lean + theorem is_local_extr_on.not_nhds_le_map + theorem is_local_max_on.not_nhds_le_map + theorem is_local_min_on.not_nhds_le_map 2021-02-08 14:15:42 054b467 feat(analysis/calculus): derivatives of `f : E → Π i, F i` (#6075) ESTIMATED CHANGES Modified src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_O_iff_eventually + theorem asymptotics.is_O_iff_eventually_is_O_with + theorem asymptotics.is_O_pi + theorem asymptotics.is_O_with_pi + theorem asymptotics.is_o_pi Modified src/analysis/calculus/deriv.lean + theorem deriv_pi + theorem deriv_within_pi + theorem has_deriv_at_filter_pi + theorem has_deriv_at_pi + theorem has_deriv_within_at_pi + theorem has_strict_deriv_at_pi Modified src/analysis/calculus/fderiv.lean + theorem differentiable_at_pi + theorem differentiable_on_pi + theorem differentiable_pi + theorem differentiable_within_at_pi + theorem fderiv_pi + theorem fderiv_within_pi + theorem has_fderiv_at_filter_pi' + theorem has_fderiv_at_filter_pi + theorem has_fderiv_at_pi' + theorem has_fderiv_at_pi + theorem has_fderiv_within_at_pi' + theorem has_fderiv_within_at_pi + theorem has_strict_fderiv_at_pi' + theorem has_strict_fderiv_at_pi Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_pi +/- theorem continuous_linear_map.pi_apply +/- theorem continuous_linear_map.pi_zero 2021-02-08 14:15:40 dc48a84 feat(linear_algebra/pi_tensor_product): add reindex and pempty_equiv (#6069) ESTIMATED CHANGES Modified src/linear_algebra/pi_tensor_product.lean + theorem pi_tensor_product.lift_comp_reindex + theorem pi_tensor_product.lift_reindex + theorem pi_tensor_product.lift_symm + def pi_tensor_product.pempty_equiv + def pi_tensor_product.reindex + theorem pi_tensor_product.reindex_comp_tprod + theorem pi_tensor_product.reindex_refl + theorem pi_tensor_product.reindex_symm + theorem pi_tensor_product.reindex_tprod + theorem pi_tensor_product.reindex_trans 2021-02-08 10:21:58 d7a4f72 feat(norm_cast): dite_cast to match ite_cast (#6092) There's already an `ite_cast` lemma, for pushing a cast inside an `ite`. This adds the analogous `dite_cast`. ESTIMATED CHANGES Modified src/tactic/norm_cast.lean + theorem dite_cast 2021-02-08 10:21:56 b338240 feat(topology/constructions): a finite product of discrete spaces is discrete (#6088) From `lean-liquid`. ESTIMATED CHANGES Modified src/topology/constructions.lean 2021-02-08 10:21:55 e4369fe chore(algebra/module/prod): add missing instances (#6055) This adds the following instances for `prod`: * `is_scalar_tower` * `smul_comm_class` * `mul_action` * `distrib_mul_action` It also renames the type variables to match the usual convention for modules ESTIMATED CHANGES Modified src/algebra/module/prod.lean +/- theorem prod.smul_fst +/- theorem prod.smul_mk +/- theorem prod.smul_snd 2021-02-08 08:08:37 90702a0 feat(topology/continuous_map): missing coe_mk lemma (#6087) ESTIMATED CHANGES Modified src/topology/continuous_map.lean + theorem continuous_map.coe_mk 2021-02-08 05:08:19 a6fc6bd feat(finset/lattice): max'_insert (#6089) From `lean-liquid`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.max'_insert + theorem finset.max'_subset + theorem finset.min'_insert + theorem finset.min'_subset 2021-02-08 02:16:50 6b83e72 chore(scripts): update nolints.txt (#6090) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-08 02:16:48 5bf92e1 chore(analysis/calculus/local_extr): review (#6085) * golf 2 proofs; * don't use explicit section `variables`; * add 2 docstrings. ESTIMATED CHANGES Modified src/analysis/calculus/local_extr.lean +/- theorem exists_Ioo_extr_on_Icc +/- theorem exists_deriv_eq_zero' +/- theorem exists_deriv_eq_zero +/- theorem exists_has_deriv_at_eq_zero' +/- theorem exists_has_deriv_at_eq_zero +/- theorem exists_local_extr_Ioo + theorem mem_pos_tangent_cone_at_of_segment_subset' 2021-02-07 23:41:53 45f9544 feat(topology/separation): an injective map on a compact space is an embedding (#6057) ESTIMATED CHANGES Modified src/topology/separation.lean + theorem continuous.closed_embedding + theorem continuous.is_closed_map 2021-02-07 23:41:49 9411b00 feat(algebra/lie/basic): define the center of a Lie algebra and prove some related results (#6013) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_algebra.abelian_of_le_center + theorem lie_algebra.abelian_radical_iff_solvable_is_abelian + theorem lie_algebra.abelian_radical_of_semisimple +/- def lie_algebra.ad + def lie_algebra.center + theorem lie_algebra.center_eq_adjoint_kernel + theorem lie_algebra.center_eq_bot_of_semisimple + theorem lie_algebra.center_le_radical + theorem lie_algebra.is_lie_abelian_iff_center_eq_top - theorem lie_algebra.of_abelian_is_solvable + theorem lie_algebra.subsingleton_of_semisimple_lie_abelian - theorem lie_ideal.of_bot_eq_bot + theorem lie_ideal.subsingleton_of_bot - theorem lie_ideal.unique_of_bot + theorem lie_module.is_trivial_iff_maximal_trivial_eq_top + def lie_module.maximal_trivial_submodule + theorem lie_module.mem_maximal_trivial_submodule - def lie_module.to_endo_morphism + def lie_module.to_endomorphism + theorem lie_module.trivial_iff_le_maximal_trivial - theorem lie_submodule.of_bot_eq_bot + theorem lie_submodule.subsingleton_of_bot - theorem lie_submodule.unique_of_bot 2021-02-07 23:41:48 d989ff4 feat(measure_theory/lebesgue_measure): integral as volume between graphs (#5932) I show that the integral can compute the volume between two real-valued functions. I start with the definition `region_between`, I prove that the region between two functions is a `measurable_set`, and then I prove two integral theorems. Help from @hrmacbeth and @benjamindavidson. ESTIMATED CHANGES Modified src/measure_theory/lebesgue_measure.lean + theorem measurable_set_region_between + def region_between + theorem region_between_subset + theorem volume_region_between_eq_integral' + theorem volume_region_between_eq_integral + theorem volume_region_between_eq_lintegral' + theorem volume_region_between_eq_lintegral Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.restrict_apply' + theorem measure_theory.measure.restrict_eq_self_of_measurable_subset + theorem measure_theory.measure.restrict_eq_self_of_subset_of_measurable Modified src/measure_theory/prod.lean + theorem measure_theory.measure.restrict_prod_eq_prod_univ 2021-02-07 21:13:03 f3b0295 chore(measure_theory): use `∞` notation for `(⊤ : ℝ≥0∞)` (#6080) ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_to_real Modified src/measure_theory/borel_space.lean +/- def measurable_equiv.ennreal_equiv_nnreal Modified src/measure_theory/content.lean +/- theorem measure_theory.outer_measure.of_content_exists_compact +/- theorem measure_theory.outer_measure.of_content_exists_open Modified src/measure_theory/decomposition.lean +/- theorem measure_theory.hahn_decomposition Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.ae_lt_top +/- theorem measure_theory.exists_pos_set_lintegral_lt_of_measure_lt +/- theorem measure_theory.exists_simple_func_forall_lintegral_sub_lt_of_pos +/- theorem measure_theory.lintegral_const_mul' +/- theorem measure_theory.lintegral_mul_const' +/- theorem measure_theory.simple_func.fin_meas_supp.iff_lintegral_lt_top +/- theorem measure_theory.simple_func.fin_meas_supp.lintegral_lt_top +/- theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_lt_top +/- theorem measure_theory.tendsto_set_lintegral_zero Modified src/measure_theory/l1_space.lean +/- def measure_theory.ae_eq_fun.integrable +/- theorem measure_theory.integrable.smul_measure +/- theorem measure_theory.integrable_const_iff +/- theorem measure_theory.l1.lintegral_edist_to_fun_lt_top Modified src/measure_theory/lp_space.lean +/- theorem measure_theory.Lp.coe_fn_mk +/- theorem measure_theory.Lp.mem_Lp_iff_snorm_lt_top +/- theorem measure_theory.Lp.snorm_lt_top +/- theorem measure_theory.Lp.snorm_ne_top +/- theorem measure_theory.mem_ℒp.snorm_lt_top +/- theorem measure_theory.mem_ℒp.snorm_ne_top +/- theorem measure_theory.snorm'_measure_zero_of_neg +/- theorem measure_theory.snorm_const' +/- theorem measure_theory.snorm_eq_snorm' +/- theorem measure_theory.snorm_exponent_top Modified src/measure_theory/measure_space.lean +/- theorem is_compact.finite_measure +/- theorem measure_theory.measure.compl_mem_cofinite +/- theorem measure_theory.measure.count_apply_eq_top +/- theorem measure_theory.measure.count_apply_infinite +/- theorem measure_theory.measure.count_apply_lt_top +/- theorem measure_theory.measure.eventually_cofinite +/- def measure_theory.measure.finite_at_filter +/- theorem measure_theory.measure.finite_at_principal +/- theorem measure_theory.measure.mem_cofinite +/- theorem measure_theory.measure_compl +/- theorem measure_theory.measure_lt_top +/- theorem measure_theory.measure_mono_top +/- theorem measure_theory.measure_ne_top Modified src/measure_theory/outer_measure.lean +/- theorem measure_theory.outer_measure.top_apply Modified src/measure_theory/prod.lean Modified src/measure_theory/prod_group.lean Modified src/measure_theory/set_integral.lean +/- theorem measure_theory.integrable_on_const +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const' +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae'' +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae' +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae Modified src/measure_theory/simple_func_dense.lean 2021-02-07 21:13:00 5d4d815 feat(analysis): prove that a polynomial function is equivalent to its leading term along at_top, and consequences (#5354) The main result is `eval_is_equivalent_at_top_eval_lead`, which states that for any polynomial `P` of degree `n` with leading coeff `a`, the corresponding polynomial function is equivalent to `a * x^n` as `x` goes to +∞. We can then use this result to prove various limits for polynomial and rational functions, depending on the degrees and leading coeffs of the considered polynomials. ESTIMATED CHANGES Renamed src/analysis/asymptotic_equivalent.lean to src/analysis/asymptotics/asymptotic_equivalent.lean + theorem asymptotics.is_equivalent.add_is_o + theorem asymptotics.is_equivalent.congr_left + theorem asymptotics.is_equivalent.congr_right + theorem asymptotics.is_equivalent.neg + theorem asymptotics.is_equivalent.tendsto_at_bot + theorem asymptotics.is_equivalent.tendsto_at_bot_iff + theorem asymptotics.is_o.is_equivalent + theorem filter.eventually_eq.is_equivalent Renamed src/analysis/asymptotics.lean to src/analysis/asymptotics/asymptotics.lean + theorem asymptotics.is_o.tendsto_zero_of_tendsto Added src/analysis/asymptotics/specific_asymptotics.lean + theorem asymptotics.is_O.trans_tendsto_norm_at_top + theorem asymptotics.is_o_pow_pow_at_top_of_lt + theorem pow_div_pow_eventually_eq_at_bot + theorem pow_div_pow_eventually_eq_at_top + theorem tendsto_fpow_at_top_at_top + theorem tendsto_pow_div_pow_at_top_at_top + theorem tendsto_pow_div_pow_at_top_zero Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/ordered.lean - theorem is_o_pow_pow_at_top_of_lt - theorem tendsto_pow_div_pow_at_top_of_lt Modified src/analysis/normed_space/units.lean Added src/analysis/special_functions/polynomials.lean + theorem polynomial.abs_tendsto_at_top + theorem polynomial.div_tendsto_at_bot_of_degree_gt' + theorem polynomial.div_tendsto_at_bot_of_degree_gt + theorem polynomial.div_tendsto_at_top_of_degree_gt' + theorem polynomial.div_tendsto_at_top_of_degree_gt + theorem polynomial.div_tendsto_leading_coeff_div_of_degree_eq + theorem polynomial.div_tendsto_zero_of_degree_lt + theorem polynomial.eval_div_tendsto_at_top_of_degree_gt + theorem polynomial.is_equivalent_at_top_div + theorem polynomial.is_equivalent_at_top_lead + theorem polynomial.tendsto_at_bot_of_leading_coeff_nonpos + theorem polynomial.tendsto_at_top_of_leading_coeff_nonneg Modified src/analysis/specific_limits.lean Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_lt_degree + theorem polynomial.le_nat_degree_of_coe_le_degree + theorem polynomial.nat_degree_lt_nat_degree_iff + theorem polynomial.ne_zero_of_coe_le_degree + theorem polynomial.ne_zero_of_nat_degree_gt Modified src/data/polynomial/eval.lean + theorem polynomial.eval_eq_finset_sum' + theorem polynomial.eval_eq_finset_sum Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto_const_mul_pow_at_top + theorem filter.tendsto_neg_const_mul_pow_at_top Modified src/order/filter/basic.lean + theorem filter.eventually_eq.div' + theorem filter.eventually_eq.sub_eq + theorem filter.eventually_eq_iff_sub Modified src/topology/algebra/ordered.lean + theorem tendsto_fpow_at_top_zero 2021-02-07 19:35:43 99fe12a refactor(measure_theory/ae_eq_fun): move emetric to `ae_eq_fun_metric` (#6081) Cherry-picked from #6042 ESTIMATED CHANGES Modified src/measure_theory/ae_eq_fun.lean - theorem measure_theory.ae_eq_fun.coe_fn_edist - theorem measure_theory.ae_eq_fun.edist_add_right - theorem measure_theory.ae_eq_fun.edist_eq_coe' - theorem measure_theory.ae_eq_fun.edist_eq_coe - theorem measure_theory.ae_eq_fun.edist_mk_mk' - theorem measure_theory.ae_eq_fun.edist_mk_mk - theorem measure_theory.ae_eq_fun.edist_smul - theorem measure_theory.ae_eq_fun.edist_zero_eq_coe Added src/measure_theory/ae_eq_fun_metric.lean + theorem measure_theory.ae_eq_fun.coe_fn_edist + theorem measure_theory.ae_eq_fun.edist_add_right + theorem measure_theory.ae_eq_fun.edist_eq_coe' + theorem measure_theory.ae_eq_fun.edist_eq_coe + theorem measure_theory.ae_eq_fun.edist_mk_mk' + theorem measure_theory.ae_eq_fun.edist_mk_mk + theorem measure_theory.ae_eq_fun.edist_smul + theorem measure_theory.ae_eq_fun.edist_zero_eq_coe Modified src/measure_theory/l1_space.lean 2021-02-07 19:35:41 5a25827 chore(measure_theory/measure_space): move definition of `measure.ae` up (#6051) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean +/- def measure_theory.measure.ae 2021-02-07 19:35:39 132b0fe fix(scripts): make lint-style.* work on macos and windows (#6047) Make lint-style.sh use a POSIX-portable way of checking for executable bits, and make it always open files as UTF-8. Also makes CI run the sanity checks across all 3 OSes to ensure this stays working. ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/lint-style.py Modified scripts/lint-style.sh Modified scripts/lint_style_sanity_test.py 2021-02-07 15:56:24 288cc2e feat(logic/function/basic): add lemma stating that dite of two injective functions is injective if images are disjoint (#5866) Add lemma stating that dite of two injective functions is injective if their images are disjoint. Part of #5695 in order to prove Hall's Marriage Theorem. ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.injective.dite 2021-02-07 13:33:58 c25dad9 refactor(analysis/calculus/mean_value): use `is_R_or_C` in more lemmas (#6022) * use `is_R_or_C` in `convex.norm_image_sub_le*` lemmas; * replace `strict_fderiv_of_cont_diff` with `has_strict_fderiv_at_of_has_fderiv_at_of_continuous_at` and `has_strict_deriv_at_of_has_deriv_at_of_continuous_at`, slightly change assumptions; * add `has_ftaylor_series_up_to_on.has_fderiv_at`, `has_ftaylor_series_up_to_on.eventually_has_fderiv_at`, `has_ftaylor_series_up_to_on.differentiable_at`; * add `times_cont_diff_at.has_strict_deriv_at` and `times_cont_diff_at.has_strict_deriv_at'`; * prove that `complex.exp` is strictly differentiable and is an open map; * add `simp` lemma `interior_mem_nhds`. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean +/- theorem convex.is_const_of_fderiv_within_eq_zero +/- theorem convex.lipschitz_on_with_of_norm_fderiv_le +/- theorem convex.lipschitz_on_with_of_norm_fderiv_within_le +/- theorem convex.norm_image_sub_le_of_norm_fderiv_le' +/- theorem convex.norm_image_sub_le_of_norm_fderiv_le +/- theorem convex.norm_image_sub_le_of_norm_fderiv_within_le' +/- theorem convex.norm_image_sub_le_of_norm_fderiv_within_le + theorem has_strict_deriv_at_of_has_deriv_at_of_continuous_at + theorem has_strict_fderiv_at_of_has_fderiv_at_of_continuous_at - theorem is_R_or_C.norm_image_sub_le_of_norm_has_fderiv_within_le' +/- theorem is_const_of_fderiv_eq_zero - theorem strict_fderiv_of_cont_diff Modified src/analysis/calculus/times_cont_diff.lean + theorem has_ftaylor_series_up_to_on.differentiable_at + theorem has_ftaylor_series_up_to_on.eventually_has_fderiv_at + theorem has_ftaylor_series_up_to_on.has_fderiv_at + theorem times_cont_diff.has_strict_deriv_at + theorem times_cont_diff_at.has_strict_deriv_at' + theorem times_cont_diff_at.has_strict_deriv_at Modified src/analysis/special_functions/exp_log.lean + theorem complex.has_strict_deriv_at_exp + theorem complex.is_open_map_exp Modified src/topology/basic.lean + theorem interior_mem_nhds 2021-02-07 06:54:51 8b1f323 feat(ring_theory/polynomial): Almost Vieta's formula on products of (X + r) (#5696) The main result is `prod_X_add_C_eq_sum_esymm`, which proves that a product of linear terms is equal to a linear combination of symmetric polynomials. Evaluating the variables of the symmetric polynomials gives Vieta's Formula. ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean + theorem finset.prod_powerset + theorem finset.sum_powerset Modified src/data/finset/powerset.lean + theorem finset.powerset_card_bUnion + theorem finset.powerset_len_empty +/- theorem finset.powerset_len_zero Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_X_add_C Modified src/data/polynomial/monomial.lean + theorem polynomial.coeff_C_ne_zero Modified src/ring_theory/polynomial/symmetric.lean Added src/ring_theory/polynomial/vieta.lean + theorem mv_polynomial.esymm_to_sum + theorem mv_polynomial.prod_X_add_C_coeff + theorem mv_polynomial.prod_X_add_C_eq_sum_esymm + theorem mv_polynomial.prod_X_add_C_eval 2021-02-07 04:02:36 4b035fc refactor(analysis/normed_space): upgrade `linear_map.to_continuous_linear_map` to `linear_equiv` (#6072) This way Lean will simplify, e.g., `f.to_continuous_linear_map = 0` to `f = 0`. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + theorem linear_map.coe_to_continuous_linear_map' + theorem linear_map.coe_to_continuous_linear_map + theorem linear_map.coe_to_continuous_linear_map_symm +/- def linear_map.to_continuous_linear_map 2021-02-07 02:14:17 736929e chore(scripts): update nolints.txt (#6073) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-06 22:54:57 7f467fa feat(algebra/group/hom): add inv_comp and comp_inv (#6046) Two missing lemmas. Used in the Liquid Tensor Experiment. Inversion for monoid hom is (correctly) only defined when the target is a comm_group; this explains the choice of typeclasses. I follow `inv_apply` and use `{}` rather than `[]`, but this is certainly not my area of expertise. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.comp_inv + theorem monoid_hom.inv_comp 2021-02-06 22:54:56 7c53a16 feat(algebra/ordered_ring): add lemma (#6031) Add a lemma in algebra.ordered_ring proving the inequality `a + (2 + b) ≤ a * (2 + b)`. This is again part of the Liouville PR. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem add_le_mul_two_add 2021-02-06 21:31:25 7ec4fcc feat(category_theory): connected components of a category (#5425) ESTIMATED CHANGES Added src/category_theory/connected_components.lean + def category_theory.component.ι + def category_theory.component + def category_theory.connected_components + def category_theory.decomposed + def category_theory.decomposed_equiv + def category_theory.decomposed_to + def category_theory.inclusion + theorem category_theory.inclusion_comp_decomposed_to 2021-02-06 20:09:52 a1ebf54 refactor(data/buffer/parser/basic): make valid a class and rename to mono (#6015) ESTIMATED CHANGES Modified src/data/buffer/parser/basic.lean + theorem parser.foldl_eq_fail_iff_mono_at_end + theorem parser.foldr_eq_fail_iff_mono_at_end - theorem parser.foldr_eq_fail_of_valid_at_end + theorem parser.mono.fix + theorem parser.mono.fix_core + theorem parser.mono.le + theorem parser.mono.of_done + theorem parser.mono.of_fail - theorem parser.orelse_eq_fail_invalid_lt + theorem parser.orelse_eq_fail_not_mono_lt + theorem parser.orelse_eq_fail_of_mono_ne - theorem parser.orelse_eq_fail_of_valid_ne - theorem parser.valid.and_then - theorem parser.valid.any_char - theorem parser.valid.bind - theorem parser.valid.ch - theorem parser.valid.char_buf - theorem parser.valid.decorate_error - theorem parser.valid.decorate_errors - theorem parser.valid.digit - theorem parser.valid.eof - theorem parser.valid.eps - theorem parser.valid.failure - theorem parser.valid.fix - theorem parser.valid.fix_core - theorem parser.valid.foldl - theorem parser.valid.foldl_core - theorem parser.valid.foldl_core_zero - theorem parser.valid.foldr - theorem parser.valid.foldr_core - theorem parser.valid.foldr_core_zero - theorem parser.valid.guard - theorem parser.valid.many' - theorem parser.valid.many1 - theorem parser.valid.many - theorem parser.valid.many_char1 - theorem parser.valid.many_char - theorem parser.valid.map - theorem parser.valid.mmap' - theorem parser.valid.mmap - theorem parser.valid.mono_done - theorem parser.valid.mono_fail - theorem parser.valid.nat - theorem parser.valid.one_of' - theorem parser.valid.one_of - theorem parser.valid.orelse - theorem parser.valid.pure - theorem parser.valid.remaining - theorem parser.valid.sat - theorem parser.valid.sep_by1 - theorem parser.valid.sep_by - theorem parser.valid.seq - theorem parser.valid.str - def parser.valid 2021-02-06 15:06:18 dbf038d feat(topology/category): constructor for compact hausdorff spaces (#6068) `CompHaus.of` constructor. From the lean-liquid project. ESTIMATED CHANGES Modified src/topology/category/CompHaus.lean + theorem CompHaus.coe_of + def CompHaus.of +/- def StoneCech_obj 2021-02-06 12:13:41 767e6ae refactor(topology): make two definitions irreducible from the start (#6060) ESTIMATED CHANGES Modified src/topology/basic.lean +/- def nhds +/- theorem nhds_def Modified src/topology/metric_space/hausdorff_distance.lean +/- def emetric.Hausdorff_edist 2021-02-06 08:37:26 2bdeda9 doc(number_theory/*): provide docstrings for basic and dioph (#6063) The main purpose of this PR is to provide docstrings for the two remaining files without docstring in number_theory, basic and dioph. Furthermore, lines are split in other files, so that there should be no number_theory entries in the style_exceptions file. ESTIMATED CHANGES Modified src/number_theory/basic.lean Modified src/number_theory/dioph.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/pell.lean +/- theorem pell.eq_of_xn_modeq' Modified src/number_theory/primorial.lean Modified src/number_theory/pythagorean_triples.lean +/- theorem pythagorean_triple.is_classified_of_normalize_is_primitive_classified Modified src/number_theory/quadratic_reciprocity.lean 2021-02-06 05:00:08 d951b2b feat(data/nat): division of powers (#6067) A small missing lemma. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.pow_div 2021-02-06 01:48:21 b8a6f81 chore(scripts): update nolints.txt (#6066) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-02-06 01:48:19 b6b90e2 fix(ring_theory/power_series/basic): fix algebra arguments (#6065) `power_series` is just an alias for `mv_power_series` over `unit`, yet it did not correctly inherit the algebra instance ESTIMATED CHANGES Modified src/ring_theory/power_series/basic.lean 2021-02-06 01:48:17 94033d8 feat(data/list/basic): simp iffs about *fix nil (#6064) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.eq_nil_iff_infix_nil + theorem list.eq_nil_iff_prefix_nil + theorem list.eq_nil_iff_suffix_nil 2021-02-05 22:20:21 0926e67 feat(algebra/star): star_ordered_ring (#4685) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean Modified src/algebra/star/basic.lean + theorem star_mul_self_nonneg 2021-02-05 15:46:37 bd38c5f chore(linear_algebra): move `is_basis_std_basis` to `std_basis.lean` (#6054) This is a follow-up to #6020 which moved `std_basis` to a new file: now move results from `basis.lean` to that same file. CC @eric-wieser ESTIMATED CHANGES Modified src/linear_algebra/basis.lean - theorem pi.is_basis_fun - theorem pi.is_basis_fun_repr - theorem pi.is_basis_fun₀ - theorem pi.is_basis_std_basis - theorem pi.linear_independent_std_basis Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/std_basis.lean + theorem pi.is_basis_fun + theorem pi.is_basis_fun_repr + theorem pi.is_basis_fun₀ + theorem pi.is_basis_std_basis + theorem pi.linear_independent_std_basis Modified src/ring_theory/power_series/basic.lean 2021-02-05 15:46:35 b5c23ce feat(data/nat/factorial): non-strict inequality on factorial (#6052) Add lemmas add_factorial_le_factorial_add and add_factorial_le_factorial_add'. These are still used in the Liouville PR. I should have added them to the previous PR on factorials, but they got lost on the way! ESTIMATED CHANGES Modified src/data/nat/factorial.lean + theorem nat.add_factorial_le_factorial_add - theorem nat.add_factorial_lt_factorial_add' +/- theorem nat.add_factorial_lt_factorial_add + theorem nat.add_factorial_succ_le_factorial_add_succ + theorem nat.add_factorial_succ_lt_factorial_add_succ 2021-02-05 15:46:33 1ab7cf6 feat(algebra/ordered_ring): proof that `a + b ≤ a * b` (#6043) This is Johan's proof of the fact above. If you are curious about the assumptions, there is an extensive discussion on https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/canonically_ordered.20pathology ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem add_le_mul' + theorem add_le_mul + theorem add_le_mul_of_left_le_right + theorem add_le_mul_of_right_le_left 2021-02-05 15:46:31 fa9bf62 feat(algebra/char_zero): add char_zero lemma for ordered_semirings (#6038) Relevant Zulip chat: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem ordered_semiring.to_char_zero 2021-02-05 15:46:28 c2c686e feat(linear_algebra/multilinear): add more `curry` equivs (#6012) * `multilinear_map (λ i : ι ⊕ ι', E) F` is equivalent to `multilinear_map (λ i : ι, E) (multilinear_map (λ i : ι', E) F)`; * given `s : finset (fin n)`, `s.card = k`, and `sᶜ.card = l`, `multilinear_map (λ i : fin n, E) F` is equivalent to `multilinear_map (λ i : fin k, E) (multilinear_map (λ i : fin l, E) F)`. ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.coe_curr_sum_equiv_symm + theorem multilinear_map.coe_curry_sum_equiv + def multilinear_map.curry_fin_finset + theorem multilinear_map.curry_fin_finset_apply + theorem multilinear_map.curry_fin_finset_apply_const + theorem multilinear_map.curry_fin_finset_symm_apply + theorem multilinear_map.curry_fin_finset_symm_apply_const + theorem multilinear_map.curry_fin_finset_symm_apply_piecewise_const + def multilinear_map.curry_sum + theorem multilinear_map.curry_sum_apply + def multilinear_map.curry_sum_equiv + def multilinear_map.dom_dom_congr_linear_equiv + def multilinear_map.uncurry_sum + theorem multilinear_map.uncurry_sum_aux_apply 2021-02-05 15:46:26 dc98547 feat(linear_algebra/projection): Extending maps from complement submodules to the entire module (#5981) Given two linear maps from complement submodules, `of_is_comp` is the linear map extended to the entire module. This is useful whenever we would like to extend a linear map from a submodule to a map on the entire module. ESTIMATED CHANGES Modified src/linear_algebra/projection.lean + def linear_map.of_is_compl + theorem linear_map.of_is_compl_add + theorem linear_map.of_is_compl_eq' + theorem linear_map.of_is_compl_eq + theorem linear_map.of_is_compl_left_apply + def linear_map.of_is_compl_prod + theorem linear_map.of_is_compl_prod_apply + def linear_map.of_is_compl_prod_equiv + theorem linear_map.of_is_compl_right_apply + theorem linear_map.of_is_compl_smul + theorem linear_map.of_is_compl_zero + theorem submodule.exists_unique_add_of_is_compl + theorem submodule.exists_unique_add_of_is_compl_prod 2021-02-05 12:11:35 34e366c refactor(*): remove uses of @[class] def (#6028) Preparation for lean 4, which does not support this idiom. ESTIMATED CHANGES Modified src/algebra/associated.lean - def irreducible + theorem irreducible_iff Modified src/algebra/gcd_monoid.lean Modified src/algebra/squarefree.lean Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/calculus/fderiv.lean Modified src/computability/turing_machine.lean Modified src/data/list/forall2.lean + theorem list.left_unique_forall₂' +/- theorem list.left_unique_forall₂ + theorem list.right_unique_forall₂' +/- theorem list.right_unique_forall₂ Modified src/data/list/perm.lean Modified src/data/option/basic.lean + theorem option.mem.left_unique Modified src/data/pfun.lean + theorem roption.mem.left_unique +/- theorem roption.mem_unique Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/ring_division.lean Modified src/data/seq/computation.lean + theorem computation.mem.left_unique +/- theorem computation.mem_unique - def computation.terminates + theorem computation.terminates_iff +/- theorem computation.terminates_of_mem Modified src/data/seq/parallel.lean Modified src/data/seq/wseq.lean - def wseq.is_finite - def wseq.productive + theorem wseq.productive_iff Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/algebraic_closure.lean - def is_alg_closure + theorem is_alg_closure_iff Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean +/- theorem is_galois.integral - theorem is_galois.normal +/- theorem is_galois.separable + theorem is_galois.splits - def is_galois + theorem is_galois_iff Modified src/field_theory/normal.lean +/- theorem normal.exists_is_splitting_field +/- theorem normal.is_integral + theorem normal.out +/- theorem normal.splits - def normal + theorem normal_iff Modified src/field_theory/primitive_element.lean Modified src/field_theory/separable.lean + theorem is_separable.is_integral + theorem is_separable.separable - def is_separable + theorem is_separable_iff Modified src/linear_algebra/adic_completion.lean + theorem is_Hausdorff.haus - def is_Hausdorff + theorem is_Hausdorff_iff - def is_adic_complete + theorem is_precomplete.prec - def is_precomplete + theorem is_precomplete_iff Modified src/logic/relation.lean Modified src/logic/relator.lean - def relator.bi_total - def relator.bi_unique - def relator.left_total + theorem relator.left_unique.unique - def relator.left_unique +/- theorem relator.left_unique_flip +/- theorem relator.left_unique_of_rel_eq +/- theorem relator.rel_exists_of_left_total +/- theorem relator.rel_exists_of_total +/- theorem relator.rel_forall_of_right_total +/- theorem relator.rel_forall_of_total - def relator.right_total + theorem relator.right_unique.unique - def relator.right_unique Modified src/measure_theory/borel_space.lean Modified src/measure_theory/ess_sup.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.is_complete.out - def measure_theory.measure.is_complete + theorem measure_theory.measure.is_complete_iff + theorem measure_theory.sigma_finite.out - def measure_theory.sigma_finite + theorem measure_theory.sigma_finite_iff Modified src/measure_theory/prod.lean Modified src/order/filter/bases.lean + theorem filter.not_mem_iff_inf_principal_compl Modified src/order/filter/basic.lean +/- theorem filter.eventually_const +/- theorem filter.ne_bot.ne - def filter.ne_bot + theorem filter.ne_bot_iff Modified src/order/filter/cofinite.lean Modified src/order/filter/ultrafilter.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/ideal/basic.lean + theorem ideal.is_maximal.ne_top - def ideal.is_maximal + theorem ideal.is_maximal_def + theorem ideal.is_prime.ne_top - def ideal.is_prime + theorem ideal.is_prime_iff Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/ideal/prod.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/jacobson.lean + theorem ideal.is_jacobson.out - def ideal.is_jacobson + theorem ideal.is_jacobson_iff Modified src/ring_theory/jacobson_ideal.lean - def ideal.is_local + theorem ideal.is_local_iff Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean - def is_noetherian_ring + theorem is_noetherian_ring_iff Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/witt_vector/frobenius.lean Modified src/ring_theory/witt_vector/is_poly.lean - def witt_vector.is_poly - def witt_vector.is_poly₂ Modified src/ring_theory/witt_vector/mul_p.lean Modified src/set_theory/game/impartial.lean - def pgame.impartial + def pgame.impartial_aux + theorem pgame.impartial_aux_def +/- theorem pgame.impartial_def + theorem pgame.impartial_iff_aux Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean + theorem mem_closure_iff_nhds_ne_bot Modified src/topology/continuous_on.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/order.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean - def separated_space + theorem separated_space_iff Modified src/topology/uniform_space/uniform_embedding.lean 2021-02-05 12:11:33 c6c7eaf refactor(topology/algebra/module,analysis/*): merge some `smul` lemmas and defs (#5987) Generalize some definitions and lemmas about `smul` and `f : E →L[k] F` so that now they allow scalars from an algebra over `k`. This way we can get rid of `smul_algebra` definitions and lemmas. In particular, now `continuous_linear_map.smul_right` accepts functions with values in an algebra over `k`, so `smul_right 1 f` now needs a type annotation on `1`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean - theorem differentiable.const_smul_algebra - theorem differentiable.smul_algebra - theorem differentiable.smul_algebra_const - theorem differentiable_at.const_smul_algebra - theorem differentiable_at.smul_algebra - theorem differentiable_at.smul_algebra_const - theorem differentiable_on.const_smul_algebra - theorem differentiable_on.smul_algebra - theorem differentiable_on.smul_algebra_const - theorem differentiable_within_at.const_smul_algebra - theorem differentiable_within_at.smul_algebra - theorem differentiable_within_at.smul_algebra_const - theorem fderiv_const_smul_algebra - theorem fderiv_smul_algebra - theorem fderiv_smul_algebra_const - theorem fderiv_within_const_smul_algebra - theorem fderiv_within_smul_algebra - theorem fderiv_within_smul_algebra_const - theorem has_fderiv_at.const_smul_algebra - theorem has_fderiv_at.smul_algebra - theorem has_fderiv_at.smul_algebra_const - theorem has_fderiv_at_filter.const_smul_algebra - theorem has_fderiv_within_at.const_smul_algebra - theorem has_fderiv_within_at.smul_algebra - theorem has_fderiv_within_at.smul_algebra_const - theorem has_strict_fderiv_at.const_smul_algebra - theorem has_strict_fderiv_at.smul_algebra - theorem has_strict_fderiv_at.smul_algebra_const Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem is_bounded_bilinear_map_smul - theorem is_bounded_bilinear_map_smul_algebra Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/linear_isometry.lean + theorem submodule.coe_subtypeL' + theorem submodule.coe_subtypeL + theorem submodule.coe_subtypeₗᵢ + def submodule.subtypeL + def submodule.subtypeₗᵢ + theorem submodule.subtypeₗᵢ_to_linear_map Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.coe_restrict_scalarsL' + theorem continuous_linear_map.coe_restrict_scalarsL + theorem continuous_linear_map.coe_restrict_scalars_isometry + theorem continuous_linear_map.norm_restrict_scalars +/- theorem continuous_linear_map.op_norm_neg +/- theorem continuous_linear_map.op_norm_smul_le - def continuous_linear_map.restrict_scalars + def continuous_linear_map.restrict_scalarsL - theorem continuous_linear_map.restrict_scalars_coe_eq_coe' - theorem continuous_linear_map.restrict_scalars_coe_eq_coe + def continuous_linear_map.restrict_scalars_isometry + theorem continuous_linear_map.restrict_scalars_isometry_to_linear_map - def continuous_linear_map.smul_algebra_right - theorem continuous_linear_map.smul_algebra_right_apply +/- theorem linear_isometry.norm_to_continuous_linear_map + theorem linear_isometry.norm_to_continuous_linear_map_le + theorem submodule.norm_subtypeL + theorem submodule.norm_subtypeL_le - def submodule.subtype_continuous - theorem submodule.subtype_continuous_apply Modified src/geometry/manifold/instances/sphere.lean Modified src/topology/algebra/module.lean - theorem continuous_linear_map.coe_apply' - theorem continuous_linear_map.coe_apply + theorem continuous_linear_map.coe_eq_id + theorem continuous_linear_map.coe_inj + theorem continuous_linear_map.coe_restrict_scalars' + theorem continuous_linear_map.coe_restrict_scalars + theorem continuous_linear_map.coe_restrict_scalarsₗ + theorem continuous_linear_map.coe_smul' + theorem continuous_linear_map.coe_smul + theorem continuous_linear_map.coe_smul_rightₗ +/- theorem continuous_linear_map.comp_smul + theorem continuous_linear_map.fst_comp_prod + theorem continuous_linear_map.map_smul_of_tower + def continuous_linear_map.restrict_scalars + theorem continuous_linear_map.restrict_scalars_add + theorem continuous_linear_map.restrict_scalars_neg + theorem continuous_linear_map.restrict_scalars_smul + theorem continuous_linear_map.restrict_scalars_zero + def continuous_linear_map.restrict_scalarsₗ +/- theorem continuous_linear_map.smul_apply +/- def continuous_linear_map.smul_right +/- theorem continuous_linear_map.smul_right_apply +/- theorem continuous_linear_map.smul_right_one_one +/- def continuous_linear_map.smul_rightₗ + theorem continuous_linear_map.snd_comp_prod 2021-02-05 12:11:32 392ebec chore(algebra/algebra/basic): show that the ℚ-algebra structure is unique (#5980) Note that we already have similar lemmas showing that ℕ and ℤ modules are unique. The name is based on `rat.algebra_rat`, which provides a canonical instance. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem rat.algebra_rat_subsingleton 2021-02-05 12:11:29 915bff4 feat(field_theory/polynomial_galois_group): Restriction is surjective (#5961) Proves surjectivity of `restrict` and `restrict_dvd`. ESTIMATED CHANGES Modified src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.restrict_dvd_surjective + theorem polynomial.gal.restrict_surjective 2021-02-05 12:11:27 e1db909 feat(order/filter): add lattice instance to order.ideal (#5937) Add lattice instance to `order.ideal P` when the preorder `P` is actually a `semilattice_sup_bot` (that is, when `P` is a partial order with all finite suprema). ESTIMATED CHANGES Modified src/order/ideal.lean + def order.ideal.inf + theorem order.ideal.mem_inf + theorem order.ideal.mem_sup + def order.ideal.sup + theorem order.ideal.sup_le 2021-02-05 12:11:25 70269f3 feat(order/*): introduces complemented lattices (#5747) Defines `is_complemented` on bounded lattices Proves facts about complemented modular lattices Provides two instances of `is_complemented` on submodule lattices ESTIMATED CHANGES Modified src/linear_algebra/basis.lean Modified src/order/atoms.lean + theorem is_atomic_iff_is_coatomic + theorem is_atomic_of_is_coatomic_of_is_complemented_of_is_modular + theorem is_coatomic_of_is_atomic_of_is_complemented_of_is_modular Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean + theorem eq_bot_of_is_compl_top + theorem eq_bot_of_top_is_compl + theorem eq_top_of_bot_is_compl + theorem eq_top_of_is_compl_bot Modified src/order/modular_lattice.lean Modified src/representation_theory/maschke.lean +/- theorem monoid_algebra.exists_left_inverse_of_injective +/- theorem monoid_algebra.submodule.exists_is_compl + theorem monoid_algebra.submodule.is_complemented 2021-02-05 08:47:31 5391433 feat(algebra/group_power/basic): `pow_add_pow_le` (#6037) For natural `n ≠ 0` and nonnegative `x, y` in an `ordered_semiring`, `x ^ n + y ^ n ≤ (x + y) ^ n`. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem pow_add_pow_le 2021-02-05 04:22:35 5cb2865 chore(scripts): update nolints.txt (#6049) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-02-05 00:51:27 80c7ac1 feat(algebra/big_operators/order): add fintype.sum_mono and fintype.sum_strict_mono (#6040) ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem fintype.sum_mono + theorem fintype.sum_strict_mono 2021-02-05 00:51:25 a101788 fix(tactic/congr): fix trivial congr/convert (#6011) Now `convert` will prove reflexivity goals even at the top level, before applying any congruence rules. Under the interpretation of the depth argument as the number of nested congruence rules applied, we allow proofs by assumption or reflexivity to work even at depth 0. Also fixes a bug where ```lean example {α} (a b : α) : a = b := by congr' ``` would succeed, because `apply proof_irrel` will unify the universe metavariable in the type of `α` to `Prop`, causing surprising behavior. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified archive/imo/imo2019_q4.lean Modified src/algebra/category/Group/images.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/normed_space/inner_product.lean Modified src/computability/turing_machine.lean Modified src/data/list/chain.lean Modified src/data/matrix/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/manifold/charted_space.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basis.lean Modified src/measure_theory/interval_integral.lean Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/ideal/basic.lean Modified src/tactic/congr.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/module.lean Modified test/congr.lean Modified test/convert.lean 2021-02-05 00:51:23 59cfa02 chore(data/quot): rename `lift_on_beta` to `lift_on_mk` (#5921) This also renames some other `lift_*_beta` lemmas to match their statement. The [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/quotient.20.22on_beta.22.20vs.20.22on_mk.22) was unanimously in favor of this rename. ESTIMATED CHANGES Modified src/algebra/ring_quot.lean Modified src/data/dfinsupp.lean Modified src/data/multiset/functor.lean - theorem multiset.lift_beta + theorem multiset.lift_coe Modified src/data/quot.lean + theorem quot.lift_mk + theorem quot.lift_on_mk +/- theorem quot.lift_on₂_mk +/- theorem quot.lift₂_mk - theorem quotient.lift_beta + theorem quotient.lift_mk - theorem quotient.lift_on_beta - theorem quotient.lift_on_beta₂ + theorem quotient.lift_on_mk + theorem quotient.lift_on₂_mk Modified src/data/setoid/basic.lean Modified src/group_theory/congruence.lean Modified src/ring_theory/nullstellensatz.lean Modified src/ring_theory/valuation/basic.lean 2021-02-04 21:33:38 b9e559b feat(data/real/ennreal): use notation for ennreal (#6044) The notation for `ennreal` is `ℝ≥0∞` and it is localized to `ennreal` (though I guess it doesn't have to be?). Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Notation.20for.20ennreal ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean +/- theorem formal_multilinear_series.change_origin_eval +/- theorem formal_multilinear_series.change_origin_has_sum +/- theorem formal_multilinear_series.change_origin_summable_aux1 +/- theorem formal_multilinear_series.change_origin_summable_aux2 +/- theorem formal_multilinear_series.change_origin_summable_aux3 +/- def formal_multilinear_series.radius Modified src/analysis/analytic/composition.lean Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/mean_inequalities.lean +/- theorem ennreal.add_rpow_le_rpow_add +/- theorem ennreal.ae_eq_zero_of_lintegral_rpow_eq_zero +/- theorem ennreal.fun_eq_fun_mul_inv_snorm_mul_snorm +/- def ennreal.fun_mul_inv_snorm +/- theorem ennreal.fun_mul_inv_snorm_rpow +/- theorem ennreal.lintegral_Lp_add_le +/- theorem ennreal.lintegral_rpow_fun_mul_inv_snorm_eq_one +/- theorem ennreal.rpow_add_le_add_rpow +/- theorem ennreal.rpow_add_rpow_le +/- theorem ennreal.rpow_add_rpow_le_add +/- theorem ennreal.rpow_arith_mean_le_arith_mean2_rpow +/- theorem ennreal.rpow_arith_mean_le_arith_mean_rpow +/- theorem ennreal.young_inequality Modified src/analysis/normed_space/basic.lean +/- theorem edist_eq_coe_nnnorm +/- theorem edist_eq_coe_nnnorm_sub +/- theorem mem_emetric_ball_0_iff +/- theorem of_real_norm_eq_coe_nnnorm +/- theorem real.ennnorm_eq_of_real Modified src/analysis/normed_space/enorm.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/pow.lean +/- theorem ae_measurable.ennreal_rpow_const +/- theorem ennreal.div_rpow_of_nonneg +/- theorem ennreal.inv_rpow_of_pos +/- theorem ennreal.le_rpow_one_div_iff +/- theorem ennreal.le_rpow_self_of_one_le +/- theorem ennreal.lt_rpow_one_div_iff +/- theorem ennreal.measurable_rpow +/- theorem ennreal.measurable_rpow_const +/- theorem ennreal.mul_rpow_of_ne_top +/- theorem ennreal.mul_rpow_of_ne_zero +/- theorem ennreal.mul_rpow_of_nonneg +/- theorem ennreal.one_le_rpow +/- theorem ennreal.one_le_rpow_of_pos_of_le_one_of_neg +/- theorem ennreal.one_lt_rpow +/- theorem ennreal.one_lt_rpow_of_pos_of_lt_one_of_neg +/- theorem ennreal.one_rpow +/- theorem ennreal.rpow_add +/- theorem ennreal.rpow_eq_pow +/- theorem ennreal.rpow_eq_top_iff +/- theorem ennreal.rpow_eq_top_iff_of_pos +/- theorem ennreal.rpow_eq_top_of_nonneg +/- theorem ennreal.rpow_eq_zero_iff +/- theorem ennreal.rpow_le_one +/- theorem ennreal.rpow_le_one_of_one_le_of_neg +/- theorem ennreal.rpow_le_rpow +/- theorem ennreal.rpow_le_rpow_iff +/- theorem ennreal.rpow_le_rpow_of_exponent_ge +/- theorem ennreal.rpow_le_rpow_of_exponent_le +/- theorem ennreal.rpow_le_self_of_le_one +/- theorem ennreal.rpow_left_monotone_of_nonneg +/- theorem ennreal.rpow_left_strict_mono_of_pos +/- theorem ennreal.rpow_lt_one +/- theorem ennreal.rpow_lt_one_of_one_lt_of_neg +/- theorem ennreal.rpow_lt_rpow +/- theorem ennreal.rpow_lt_rpow_iff +/- theorem ennreal.rpow_lt_rpow_of_exponent_gt +/- theorem ennreal.rpow_lt_rpow_of_exponent_lt +/- theorem ennreal.rpow_lt_top_of_nonneg +/- theorem ennreal.rpow_mul +/- theorem ennreal.rpow_nat_cast +/- theorem ennreal.rpow_ne_top_of_nonneg +/- theorem ennreal.rpow_neg +/- theorem ennreal.rpow_neg_one +/- theorem ennreal.rpow_one +/- theorem ennreal.rpow_pos +/- theorem ennreal.rpow_pos_of_nonneg +/- theorem ennreal.rpow_zero +/- theorem ennreal.to_nnreal_rpow +/- theorem ennreal.to_real_rpow +/- theorem ennreal.top_rpow_def +/- theorem ennreal.top_rpow_of_neg +/- theorem ennreal.top_rpow_of_pos +/- theorem ennreal.zero_rpow_def +/- theorem ennreal.zero_rpow_of_neg +/- theorem ennreal.zero_rpow_of_pos +/- theorem measurable.ennreal_rpow +/- theorem measurable.ennreal_rpow_const Modified src/analysis/specific_limits.lean +/- theorem ennreal.exists_pos_sum_of_encodable +/- theorem ennreal.tendsto_pow_at_top_nhds_0_of_lt_1 +/- theorem ennreal.tsum_geometric Modified src/data/real/ennreal.lean +/- theorem ennreal.Inf_add +/- theorem ennreal.add_halves +/- theorem ennreal.add_infi +/- theorem ennreal.add_sub_self +/- theorem ennreal.bot_eq_zero +/- theorem ennreal.cinfi_ne_top +/- theorem ennreal.coe_Inf +/- theorem ennreal.coe_Sup +/- theorem ennreal.coe_add +/- theorem ennreal.coe_bit0 +/- theorem ennreal.coe_bit1 +/- theorem ennreal.coe_div +/- theorem ennreal.coe_eq_coe +/- theorem ennreal.coe_eq_one +/- theorem ennreal.coe_eq_zero +/- theorem ennreal.coe_inv +/- theorem ennreal.coe_inv_le +/- theorem ennreal.coe_inv_two +/- theorem ennreal.coe_le_coe +/- theorem ennreal.coe_le_one_iff +/- theorem ennreal.coe_lt_coe +/- theorem ennreal.coe_lt_coe_nat +/- theorem ennreal.coe_lt_one_iff +/- theorem ennreal.coe_max +/- theorem ennreal.coe_min +/- theorem ennreal.coe_mono +/- theorem ennreal.coe_mul +/- theorem ennreal.coe_nat +/- theorem ennreal.coe_nat_le_coe_nat +/- theorem ennreal.coe_nat_lt_coe +/- theorem ennreal.coe_nat_lt_coe_nat +/- theorem ennreal.coe_nat_mono +/- theorem ennreal.coe_nat_ne_top +/- theorem ennreal.coe_ne_top +/- theorem ennreal.coe_nnreal_eq +/- theorem ennreal.coe_nonneg +/- theorem ennreal.coe_one +/- theorem ennreal.coe_pos +/- theorem ennreal.coe_pow +/- theorem ennreal.coe_sub +/- theorem ennreal.coe_to_nnreal +/- theorem ennreal.coe_to_nnreal_le_self +/- theorem ennreal.coe_to_real +/- theorem ennreal.coe_two +/- theorem ennreal.coe_zero +/- theorem ennreal.csupr_ne_top +/- theorem ennreal.div_add_div_same +/- theorem ennreal.div_lt_top +/- theorem ennreal.div_one +/- theorem ennreal.eq_top_of_forall_nnreal_le +/- theorem ennreal.exists_inv_nat_lt +/- theorem ennreal.exists_ne_top +/- theorem ennreal.forall_ennreal +/- theorem ennreal.forall_ne_top +/- theorem ennreal.half_lt_self +/- theorem ennreal.half_pos +/- theorem ennreal.infi_ennreal +/- theorem ennreal.infi_mul +/- theorem ennreal.infi_ne_top +/- theorem ennreal.infi_sum +/- theorem ennreal.inv_bijective +/- theorem ennreal.inv_involutive +/- theorem ennreal.inv_lt_top +/- theorem ennreal.inv_one +/- theorem ennreal.inv_two_add_inv_two +/- theorem ennreal.inv_zero +/- theorem ennreal.le_of_add_le_add_left +/- theorem ennreal.le_of_forall_nnreal_lt +/- theorem ennreal.le_of_forall_pos_le_add +/- theorem ennreal.le_of_real_iff_to_real_le +/- theorem ennreal.le_of_top_imp_top_of_to_nnreal_le +/- theorem ennreal.lt_of_real_iff_to_real_lt +/- theorem ennreal.mul_infi +/- theorem ennreal.mul_le_iff_le_inv +/- theorem ennreal.mul_lt_top_iff + theorem ennreal.mul_self_lt_top_iff +/- theorem ennreal.nat_ne_top +/- theorem ennreal.none_eq_top +/- theorem ennreal.not_lt_top +/- def ennreal.of_nnreal_hom +/- theorem ennreal.of_real_le_iff_le_to_real +/- theorem ennreal.of_real_le_of_le_to_real +/- theorem ennreal.of_real_lt_iff_lt_to_real +/- theorem ennreal.of_real_one +/- theorem ennreal.of_real_to_real +/- theorem ennreal.of_real_to_real_le +/- theorem ennreal.one_eq_coe +/- theorem ennreal.one_half_lt_one +/- theorem ennreal.one_le_coe_iff +/- theorem ennreal.one_lt_coe_iff +/- theorem ennreal.one_lt_two +/- theorem ennreal.one_sub_inv_two +/- theorem ennreal.one_to_nnreal +/- theorem ennreal.one_to_real +/- theorem ennreal.prod_lt_top +/- theorem ennreal.some_eq_coe +/- theorem ennreal.sub_add_cancel_of_le +/- theorem ennreal.sub_le_self +/- theorem ennreal.sub_right_inj +/- theorem ennreal.sum_eq_top_iff +/- theorem ennreal.sum_lt_top +/- theorem ennreal.sum_lt_top_iff +/- theorem ennreal.supr_coe_nat +/- theorem ennreal.supr_ennreal +/- theorem ennreal.supr_ne_top +/- theorem ennreal.to_nnreal_add +/- theorem ennreal.to_nnreal_coe +/- theorem ennreal.to_nnreal_eq_zero_iff +/- def ennreal.to_nnreal_hom +/- theorem ennreal.to_nnreal_mul +/- theorem ennreal.to_nnreal_mul_top +/- theorem ennreal.to_nnreal_pow +/- theorem ennreal.to_nnreal_prod +/- theorem ennreal.to_nnreal_sum +/- theorem ennreal.to_nnreal_top_mul +/- theorem ennreal.to_real_eq_zero_iff +/- def ennreal.to_real_hom +/- theorem ennreal.to_real_le_of_le_of_real +/- theorem ennreal.to_real_mul_top +/- theorem ennreal.to_real_nonneg +/- theorem ennreal.to_real_of_real_mul +/- theorem ennreal.to_real_pow +/- theorem ennreal.to_real_prod +/- theorem ennreal.to_real_sum +/- theorem ennreal.to_real_top_mul +/- theorem ennreal.top_mem_upper_bounds +/- theorem ennreal.top_ne_coe +/- theorem ennreal.two_ne_top +/- theorem ennreal.two_ne_zero +/- theorem ennreal.zero_eq_coe +/- theorem ennreal.zero_lt_coe_iff +/- theorem ennreal.zero_lt_two +/- theorem ennreal.zero_to_nnreal +/- theorem ennreal.zero_to_real Modified src/data/real/ereal.lean Modified src/measure_theory/ae_eq_fun.lean +/- def measure_theory.ae_eq_fun.lintegral +/- theorem measure_theory.ae_eq_fun.lintegral_add +/- theorem measure_theory.ae_eq_fun.lintegral_coe_fn +/- theorem measure_theory.ae_eq_fun.lintegral_eq_zero_iff +/- theorem measure_theory.ae_eq_fun.lintegral_mk +/- theorem measure_theory.ae_eq_fun.lintegral_mono +/- theorem measure_theory.ae_eq_fun.lintegral_zero Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_smul_measure +/- theorem measure_theory.integral_to_real +/- theorem measure_theory.simple_func.integral_eq_lintegral' Modified src/measure_theory/borel_space.lean +/- theorem ae_measurable.ennreal_mul +/- theorem ae_measurable.to_real +/- def ennreal.ennreal_equiv_sum +/- theorem ennreal.measurable_coe +/- theorem ennreal.measurable_div +/- theorem ennreal.measurable_inv +/- theorem ennreal.measurable_mul +/- theorem ennreal.measurable_of_measurable_nnreal +/- theorem ennreal.measurable_sub +/- theorem measurable.ennreal_div +/- theorem measurable.ennreal_inv +/- theorem measurable.ennreal_mul +/- theorem measurable.ennreal_sub +/- theorem measurable.ennreal_tsum +/- theorem measurable.to_nnreal +/- theorem measurable.to_real +/- theorem measurable_ennnorm +/- def measurable_equiv.ennreal_equiv_nnreal Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/content.lean +/- def measure_theory.inner_content +/- theorem measure_theory.inner_content_Sup_nat +/- theorem measure_theory.inner_content_Union_nat +/- theorem measure_theory.inner_content_comap +/- theorem measure_theory.inner_content_empty +/- theorem measure_theory.inner_content_exists_compact +/- theorem measure_theory.inner_content_le +/- theorem measure_theory.inner_content_mono' +/- theorem measure_theory.inner_content_mono +/- theorem measure_theory.inner_content_of_is_compact +/- theorem measure_theory.is_mul_left_invariant_inner_content +/- theorem measure_theory.le_inner_content +/- def measure_theory.outer_measure.of_content Modified src/measure_theory/decomposition.lean Modified src/measure_theory/ess_sup.lean +/- theorem ennreal.ae_le_ess_sup +/- theorem ennreal.ess_sup_add_le +/- theorem ennreal.ess_sup_const_mul +/- theorem ennreal.ess_sup_eq_zero_iff Modified src/measure_theory/giry_monad.lean +/- theorem measure_theory.measure.lintegral_bind +/- theorem measure_theory.measure.lintegral_join +/- theorem measure_theory.measure.measurable_lintegral Modified src/measure_theory/group.lean +/- def measure_theory.is_mul_left_invariant +/- def measure_theory.is_mul_right_invariant Modified src/measure_theory/haar_measure.lean +/- def measure_theory.measure.haar.echaar Modified src/measure_theory/integration.lean +/- theorem measurable.ennreal_induction +/- theorem measure_theory.ae_lt_top +/- theorem measure_theory.exists_pos_set_lintegral_lt_of_measure_lt +/- theorem measure_theory.exists_simple_func_forall_lintegral_sub_lt_of_pos +/- theorem measure_theory.le_infi2_lintegral +/- theorem measure_theory.le_infi_lintegral +/- theorem measure_theory.limsup_lintegral_le +/- def measure_theory.lintegral +/- theorem measure_theory.lintegral_Union_le +/- theorem measure_theory.lintegral_add' +/- theorem measure_theory.lintegral_add +/- theorem measure_theory.lintegral_add_measure +/- theorem measure_theory.lintegral_comp +/- theorem measure_theory.lintegral_congr +/- theorem measure_theory.lintegral_congr_ae +/- theorem measure_theory.lintegral_const +/- theorem measure_theory.lintegral_const_mul'' +/- theorem measure_theory.lintegral_const_mul' +/- theorem measure_theory.lintegral_const_mul +/- theorem measure_theory.lintegral_const_mul_le +/- theorem measure_theory.lintegral_count' +/- theorem measure_theory.lintegral_count +/- theorem measure_theory.lintegral_dirac' +/- theorem measure_theory.lintegral_dirac +/- theorem measure_theory.lintegral_eq_nnreal +/- theorem measure_theory.lintegral_eq_supr_eapprox_lintegral +/- theorem measure_theory.lintegral_eq_zero_iff' +/- theorem measure_theory.lintegral_eq_zero_iff +/- theorem measure_theory.lintegral_finset_sum +/- theorem measure_theory.lintegral_indicator +/- theorem measure_theory.lintegral_liminf_le' +/- theorem measure_theory.lintegral_liminf_le +/- theorem measure_theory.lintegral_map' +/- theorem measure_theory.lintegral_map +/- theorem measure_theory.lintegral_mono' +/- theorem measure_theory.lintegral_mono +/- theorem measure_theory.lintegral_mono_ae +/- theorem measure_theory.lintegral_mul_const'' +/- theorem measure_theory.lintegral_mul_const' +/- theorem measure_theory.lintegral_mul_const +/- theorem measure_theory.lintegral_mul_const_le +/- theorem measure_theory.lintegral_one +/- theorem measure_theory.lintegral_pos_iff_support +/- theorem measure_theory.lintegral_rw₁ +/- theorem measure_theory.lintegral_smul_measure +/- theorem measure_theory.lintegral_sub +/- theorem measure_theory.lintegral_sum_measure +/- theorem measure_theory.lintegral_supr' +/- theorem measure_theory.lintegral_supr_ae +/- theorem measure_theory.lintegral_supr_directed +/- theorem measure_theory.lintegral_tsum +/- theorem measure_theory.lintegral_zero_fun +/- theorem measure_theory.lintegral_zero_measure +/- theorem measure_theory.meas_ge_le_lintegral_div +/- def measure_theory.measure.with_density +/- theorem measure_theory.mul_meas_ge_le_lintegral +/- theorem measure_theory.set_lintegral_congr +/- theorem measure_theory.set_lintegral_const +/- theorem measure_theory.set_lintegral_map +/- theorem measure_theory.simple_func.add_lintegral +/- theorem measure_theory.simple_func.const_lintegral +/- theorem measure_theory.simple_func.const_lintegral_restrict +/- theorem measure_theory.simple_func.const_mul_lintegral +/- def measure_theory.simple_func.eapprox +/- theorem measure_theory.simple_func.eapprox_comp +/- def measure_theory.simple_func.ennreal_rat_embed +/- theorem measure_theory.simple_func.fin_meas_supp.iff_lintegral_lt_top +/- theorem measure_theory.simple_func.fin_meas_supp.lintegral_lt_top +/- theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_lt_top +/- theorem measure_theory.simple_func.le_sup_lintegral +/- def measure_theory.simple_func.lintegral +/- theorem measure_theory.simple_func.lintegral_add +/- theorem measure_theory.simple_func.lintegral_congr +/- theorem measure_theory.simple_func.lintegral_eq_lintegral +/- theorem measure_theory.simple_func.lintegral_eq_of_measure_preimage +/- theorem measure_theory.simple_func.lintegral_eq_of_subset +/- theorem measure_theory.simple_func.lintegral_map +/- theorem measure_theory.simple_func.lintegral_mono +/- theorem measure_theory.simple_func.lintegral_restrict +/- theorem measure_theory.simple_func.lintegral_smul +/- theorem measure_theory.simple_func.lintegral_sum +/- theorem measure_theory.simple_func.lintegral_zero +/- def measure_theory.simple_func.lintegralₗ +/- theorem measure_theory.simple_func.map_lintegral +/- theorem measure_theory.simple_func.monotone_eapprox +/- theorem measure_theory.simple_func.restrict_const_lintegral +/- theorem measure_theory.simple_func.restrict_lintegral +/- theorem measure_theory.simple_func.restrict_lintegral_eq_lintegral_restrict +/- theorem measure_theory.simple_func.supr_eapprox_apply +/- theorem measure_theory.simple_func.zero_lintegral +/- theorem measure_theory.supr2_lintegral_le +/- theorem measure_theory.supr_lintegral_le +/- theorem measure_theory.tendsto_set_lintegral_zero +/- theorem measure_theory.with_density_apply Modified src/measure_theory/interval_integral.lean +/- theorem interval_integral.integral_smul_measure Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.has_finite_integral.smul_measure +/- theorem measure_theory.integrable.smul_measure +/- theorem measure_theory.l1.norm_eq_lintegral Modified src/measure_theory/lebesgue_measure.lean +/- def measure_theory.lebesgue_length Modified src/measure_theory/lp_space.lean +/- theorem measure_theory.Lp.antimono +/- theorem measure_theory.mem_ℒp.mem_ℒp_of_exponent_le +/- def measure_theory.mem_ℒp +/- def measure_theory.snorm' +/- def measure_theory.snorm +/- def measure_theory.snorm_ess_sup +/- theorem measure_theory.snorm_le_snorm_of_exponent_le Modified src/measure_theory/measure_space.lean +/- theorem ae_measurable.smul_measure +/- theorem ae_measurable_smul_measure_iff +/- theorem measure_theory.ae_smul_measure +/- theorem measure_theory.ae_smul_measure_iff +/- theorem measure_theory.measure.coe_smul +/- def measure_theory.measure.comap +/- theorem measure_theory.measure.le_count_apply +/- theorem measure_theory.measure.le_lift_linear_apply +/- def measure_theory.measure.lift_linear +/- theorem measure_theory.measure.lift_linear_apply +/- def measure_theory.measure.map +/- def measure_theory.measure.of_measurable +/- theorem measure_theory.measure.of_measurable_apply +/- theorem measure_theory.measure.restrict_smul +/- def measure_theory.measure.restrictₗ +/- theorem measure_theory.measure.smul_apply +/- theorem measure_theory.measure.smul_to_outer_measure Modified src/measure_theory/outer_measure.lean +/- def measure_theory.extend +/- def measure_theory.outer_measure.Inf_gen +/- theorem measure_theory.outer_measure.bounded_by_caratheodory +/- theorem measure_theory.outer_measure.coe_smul +/- def measure_theory.outer_measure.comap +/- theorem measure_theory.outer_measure.le_smul_caratheodory +/- def measure_theory.outer_measure.map +/- theorem measure_theory.outer_measure.of_function_caratheodory +/- def measure_theory.outer_measure.restrict +/- theorem measure_theory.outer_measure.smul_apply +/- theorem measure_theory.outer_measure.smul_dirac_apply +/- theorem measure_theory.outer_measure.trim_smul Modified src/measure_theory/pi.lean +/- def measure_theory.pi_premeasure Modified src/measure_theory/probability_mass_function.lean Modified src/measure_theory/prod.lean +/- theorem measurable.lintegral_prod_left' +/- theorem measurable.lintegral_prod_left +/- theorem measurable.lintegral_prod_right +/- theorem measure_theory.lintegral_lintegral +/- theorem measure_theory.lintegral_lintegral_swap +/- theorem measure_theory.lintegral_lintegral_symm +/- theorem measure_theory.lintegral_prod +/- theorem measure_theory.lintegral_prod_mul +/- theorem measure_theory.lintegral_prod_swap +/- theorem measure_theory.lintegral_prod_symm' +/- theorem measure_theory.lintegral_prod_symm Modified src/measure_theory/prod_group.lean Modified src/measure_theory/set_integral.lean Modified src/order/filter/ennreal.lean +/- theorem ennreal.eventually_le_limsup +/- theorem ennreal.limsup_add_le +/- theorem ennreal.limsup_const_mul +/- theorem ennreal.limsup_const_mul_of_ne_top +/- theorem ennreal.limsup_eq_zero_iff Modified src/topology/instances/ennreal.lean +/- theorem cauchy_seq_of_edist_le_of_tsum_ne_top +/- theorem continuous_of_le_add_edist +/- theorem edist_le_tsum_of_edist_le_of_tendsto +/- theorem edist_le_tsum_of_edist_le_of_tendsto₀ +/- theorem edist_ne_top_of_mem_ball +/- theorem emetric.is_closed_ball +/- theorem ennreal.Sup_add +/- theorem ennreal.add_supr +/- theorem ennreal.bsupr_add +/- theorem ennreal.coe_range_mem_nhds +/- theorem ennreal.continuous_coe +/- theorem ennreal.embedding_coe +/- theorem ennreal.finset_sum_supr_nat +/- theorem ennreal.has_sum_iff_tendsto_nat +/- theorem ennreal.infi_mul_left +/- theorem ennreal.infi_mul_right +/- theorem ennreal.is_open_ne_top +/- theorem ennreal.le_of_forall_lt_one_mul_le +/- theorem ennreal.mul_Sup +/- theorem ennreal.mul_supr +/- theorem ennreal.nhds_coe +/- theorem ennreal.nhds_coe_coe +/- theorem ennreal.nhds_within_Ioi_coe_ne_bot +/- theorem ennreal.nhds_within_Ioi_zero_ne_bot +/- theorem ennreal.nhds_zero +/- theorem ennreal.sub_supr +/- theorem ennreal.summable_to_nnreal_of_tsum_ne_top +/- theorem ennreal.supr_add +/- theorem ennreal.supr_add_supr +/- theorem ennreal.supr_eq_zero +/- theorem ennreal.supr_mul +/- theorem ennreal.tendsto_nhds_top +/- theorem ennreal.tendsto_nhds_top_iff_nat +/- theorem ennreal.tendsto_nhds_top_iff_nnreal +/- theorem ennreal.tendsto_sum_nat_add +/- theorem ennreal.tendsto_to_nnreal +/- theorem ennreal.tendsto_to_real +/- theorem ennreal.to_nnreal_apply_of_tsum_ne_top +/- theorem ennreal.tsum_sub +/- theorem ennreal.tsum_supr_eq +/- def metric_space_emetric_ball +/- theorem nhds_eq_nhds_emetric_ball Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean +/- theorem contracting_with.one_sub_K_ne_top +/- theorem contracting_with.one_sub_K_ne_zero +/- theorem contracting_with.one_sub_K_pos' Modified src/topology/metric_space/emetric_space.lean +/- theorem edist_mem_uniformity +/- def emetric.ball +/- theorem emetric.ball_mem_nhds +/- theorem emetric.ball_prod_same +/- def emetric.closed_ball +/- theorem emetric.closed_ball_prod_same +/- theorem emetric.complete_of_convergent_controlled_sequences +/- theorem emetric.diam_ball +/- theorem emetric.diam_closed_ball +/- theorem emetric.diam_le_iff_forall_edist_le +/- theorem emetric.diam_le_of_forall_edist_le +/- theorem emetric.nhds_basis_closed_eball +/- theorem emetric.nhds_basis_eball +/- theorem uniformity_basis_edist' +/- theorem uniformity_basis_edist_le' Modified src/topology/metric_space/hausdorff_distance.lean +/- def emetric.Hausdorff_edist +/- theorem emetric.Hausdorff_edist_le_of_inf_edist +/- theorem emetric.Hausdorff_edist_le_of_mem_edist +/- theorem emetric.exists_edist_lt_of_Hausdorff_edist_lt +/- theorem emetric.exists_edist_lt_of_inf_edist_lt +/- def emetric.inf_edist Modified src/topology/metric_space/lipschitz.lean Modified src/topology/metric_space/pi_Lp.lean Modified test/norm_cast.lean +/- theorem ennreal.half_lt_self_bis 2021-02-04 21:33:36 7734d38 refactor(data/real/basic): make ℝ a structure (#6024) Preparation for :four_leaf_clover:, which doesn't have irreducible. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean Modified src/data/real/basic.lean + theorem real.add_cauchy - def real.comm_ring_aux + def real.equiv_Cauchy + theorem real.ext_cauchy + theorem real.ext_cauchy_iff + theorem real.inv_cauchy + theorem real.lt_cauchy +/- def real.mk + theorem real.mk_add +/- theorem real.mk_eq - theorem real.mk_eq_mk +/- theorem real.mk_le_of_forall_le +/- theorem real.mk_lt + theorem real.mk_mul + theorem real.mk_neg + theorem real.mk_one + theorem real.mk_zero + theorem real.mul_cauchy + theorem real.neg_cauchy +/- def real.of_rat + theorem real.of_rat_apply +/- theorem real.of_rat_lt - theorem real.of_rat_sub + theorem real.one_cauchy - theorem real.quotient_mk_eq_mk + theorem real.zero_cauchy + structure real - def real Modified src/data/real/cardinality.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/set_theory/cardinal.lean + theorem equiv.cardinal_eq Modified src/topology/path_connected.lean 2021-02-04 21:33:34 d293822 feat(topology/algebra/infinite_sum, topology/instances/ennreal): extend tsum API (#6017) Lemma `tsum_lt_of_nonneg` shows that if a sequence `f` with non-negative terms is dominated by a sequence `g` with summable series and at least one term of `f` is strictly smaller than the corresponding term in `g`, then the series of `f` is strictly smaller than the series of `g`. Besides this lemma, I also added the relevant API in topology.algebra.infinite_sum. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem tsum_congr + theorem tsum_ite_eq_extract + theorem tsum_lt_tsum Modified src/topology/instances/ennreal.lean + theorem tsum_lt_tsum_of_nonneg 2021-02-04 21:33:32 1ee00c8 feat(number_theory/bernoulli): Results regarding Bernoulli numbers as a generating function (#5957) We prove that the Bernoulli numbers are generating functions for t/(e^t - 1). Most of the results are proved by @kbuzzard. ESTIMATED CHANGES Modified src/algebra/big_operators/nat_antidiagonal.lean + theorem finset.nat.prod_antidiagonal_eq_prod_range_succ_mk Modified src/data/nat/choose/basic.lean + theorem nat.add_choose + theorem nat.factorial_mul_factorial_dvd_factorial_add Modified src/number_theory/bernoulli.lean + theorem bernoulli_power_series + theorem bernoulli_spec' + theorem bernoulli_spec Modified src/ring_theory/power_series/well_known.lean + theorem power_series.constant_coeff_exp 2021-02-04 18:03:59 49cf0be refactor(real): protect real.pi (#6039) Currently, `real.pi` is not protected. This can conflict with `set.pi`. Since it is most often used as `π` through the `real` locale, let's protect it. ESTIMATED CHANGES Modified src/analysis/complex/roots_of_unity.lean +/- theorem complex.is_primitive_root_exp Modified src/analysis/special_functions/trigonometric.lean +/- theorem real.cos_pi_div_eight +/- theorem real.cos_pi_div_four +/- theorem real.cos_pi_div_sixteen +/- theorem real.cos_pi_div_thirty_two +/- theorem real.cos_pi_over_two_pow +/- theorem real.sin_pi_div_eight +/- theorem real.sin_pi_div_four +/- theorem real.sin_pi_div_sixteen +/- theorem real.sin_pi_div_thirty_two Modified src/data/real/pi.lean +/- theorem real.pi_gt_3141592 +/- theorem real.pi_gt_31415 +/- theorem real.pi_gt_314 +/- theorem real.pi_gt_sqrt_two_add_series +/- theorem real.pi_gt_three +/- theorem real.pi_lt_3141593 +/- theorem real.pi_lt_31416 +/- theorem real.pi_lt_315 2021-02-04 18:03:58 1a7fb7e feat(data/list/sort): add sorted.rel_of_mem_take_of_mem_drop (#6027) Also renames the existing lemmas to enable dot notation ESTIMATED CHANGES Modified src/data/finset/sort.lean Modified src/data/list/nodup_equiv_fin.lean Modified src/data/list/sort.lean - theorem list.nth_le_of_sorted_of_le + theorem list.sorted.rel_nth_le_of_le + theorem list.sorted.rel_nth_le_of_lt + theorem list.sorted.rel_of_mem_take_of_mem_drop 2021-02-04 18:03:56 b98b5f6 chore(data/dfinsupp): add simp lemmas about sum_add_hom, remove commutativity requirement (#5939) Note that `dfinsupp.sum_add_hom` and `dfinsupp.sum` are not defeq, so its valuable to repeat these lemmas. The former is often easier to work with because there are no decidability requirements to juggle on equality with zero. `dfinsupp.single_eq_of_sigma_eq` was a handy lemma for constructing a term-mode proof of `dfinsupp.single` equality. A lot of the lemmas about `lift_add_hom` have to be repeated for `sum_add_hom` because the former simplifies to the latter before its lemmas get a chance to apply. At least the proofs can be reused. ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem add_monoid_hom.coe_dfinsupp_sum_add_hom + theorem add_monoid_hom.dfinsupp_sum_add_hom_apply + theorem add_monoid_hom.map_dfinsupp_sum_add_hom +/- theorem dfinsupp.comp_lift_add_hom + theorem dfinsupp.comp_sum_add_hom +/- theorem dfinsupp.lift_add_hom_apply_single +/- theorem dfinsupp.lift_add_hom_comp_single + theorem dfinsupp.single_eq_of_sigma_eq + theorem dfinsupp.sum_add_hom_add + theorem dfinsupp.sum_add_hom_comm +/- theorem dfinsupp.sum_add_hom_comp_single + theorem dfinsupp.sum_add_hom_single_add_hom + theorem dfinsupp.sum_add_hom_zero +/- theorem dfinsupp.sum_sub_index 2021-02-04 18:03:54 6d153f1 feat(data/equiv/basic): perm.subtype_congr (#5875) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.perm.subtype_congr.apply + theorem equiv.perm.subtype_congr.left_apply + theorem equiv.perm.subtype_congr.left_apply_subtype + theorem equiv.perm.subtype_congr.refl + theorem equiv.perm.subtype_congr.right_apply + theorem equiv.perm.subtype_congr.right_apply_subtype + theorem equiv.perm.subtype_congr.symm + theorem equiv.perm.subtype_congr.trans + def equiv.perm.subtype_congr Modified src/group_theory/perm/basic.lean + def equiv.perm.subtype_congr_hom + theorem equiv.perm.subtype_congr_hom_injective Modified src/group_theory/perm/sign.lean + theorem equiv.perm.sign_subtype_congr Modified src/group_theory/perm/subgroup.lean + theorem equiv.perm.subtype_congr_hom.card_range 2021-02-04 18:03:51 bbf9774 feat(data/fintype/basic): inv of inj on deceq (#5872) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem function.embedding.inv_fun_restrict + def function.embedding.inv_of_mem_range + theorem function.embedding.inv_of_mem_range_surjective + theorem function.embedding.left_inv_of_inv_of_mem_range + theorem function.embedding.right_inv_of_inv_of_mem_range + theorem function.injective.inv_fun_restrict + def function.injective.inv_of_mem_range + theorem function.injective.inv_of_mem_range_surjective + theorem function.injective.left_inv_of_inv_of_mem_range + theorem function.injective.right_inv_of_inv_of_mem_range Modified src/data/set/basic.lean + theorem function.injective.exists_unique_of_mem_range + theorem function.injective.mem_range_iff_exists_unique Modified src/logic/function/basic.lean 2021-02-04 18:03:49 9993a50 feat(tactic/norm_swap): simplify numeral swaps (#5637) Explicitly applied swap equalities over `nat` can be proven to be true using `dec_trivial`. However, if occurring in the middle of a larger expression, a separate specialized hypothesis would be necessary to reduce them down. This is an initial attempt at a `norm_num` extension which seeks to reduce down expressions of the `swap X Y Z` form. Handles `nat`, `int`, `rat`, and `fin` swaps. ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/norm_num.lean Added src/tactic/norm_swap.lean Added test/norm_swap.lean 2021-02-04 14:28:12 4d26028 chore(order/basic): add a lemma expanding `le` on pi types (#6023) ESTIMATED CHANGES Modified src/order/basic.lean + theorem pi.lt_def + theorem update_le_update_iff 2021-02-04 14:28:10 e61db52 chore(linear_algebra/quadratic_form): add polar_self, polar_zero_left, and polar_zero_right simp lemmas (#6003) This also reorders the existing lemmas to keep the polar ones separate from the non-polar ones ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.polar_self + theorem quadratic_form.polar_zero_left + theorem quadratic_form.polar_zero_right 2021-02-04 12:05:37 1a2eb0b feat(analysis/special_functions/trigonometric): add mistakenly omitted lemma (#6036) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem real.arcsin_eq_arctan 2021-02-04 12:05:35 16be8e3 refactor(analysis/normed_space): simpler proof of `norm_sub_pow_two` (#6035) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean 2021-02-04 12:05:34 894ff7a doc(number_theory/{pell, sum_of_four_squares}): docstring to pell (#6030) and additionally fixing the syntax for the docstring of sum_of_four_squares. ESTIMATED CHANGES Modified docs/references.bib Modified src/number_theory/pell.lean Modified src/number_theory/sum_four_squares.lean 2021-02-04 12:05:32 0aed8b1 refactor(analysis/asymptotics): make definitions immediately irreducible (#6021) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean +/- theorem asymptotics.is_O.add + theorem asymptotics.is_O.bound + theorem asymptotics.is_O.is_O_with +/- theorem asymptotics.is_O_top +/- theorem asymptotics.is_O_with.is_O - theorem asymptotics.is_O_with.of_bound +/- theorem asymptotics.is_O_with_bot +/- theorem asymptotics.is_O_with_top +/- theorem asymptotics.is_O_zero +/- theorem asymptotics.is_o.is_O_with +/- theorem asymptotics.is_o_bot 2021-02-04 12:05:30 97781b9 chore(linear_algebra/std_basis): move std_basis to a new file (#6020) linear_algebra/basic is _very_ long. This reduces its length by about 5%. Authorship of the std_basis stuff seems to come almost entirely from 10a586b1d82098af32e13c8d8448696022132f17. None of the lemmas have changed, and the variables are kept in exactly the same order as before. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean - theorem linear_map.disjoint_std_basis_std_basis - theorem linear_map.infi_ker_proj_le_supr_range_std_basis - theorem linear_map.ker_std_basis - theorem linear_map.proj_comp_std_basis - theorem linear_map.proj_std_basis_ne - theorem linear_map.proj_std_basis_same - def linear_map.std_basis - theorem linear_map.std_basis_apply - theorem linear_map.std_basis_eq_single - theorem linear_map.std_basis_ne - theorem linear_map.std_basis_same - theorem linear_map.supr_range_std_basis - theorem linear_map.supr_range_std_basis_eq_infi_ker_proj - theorem linear_map.supr_range_std_basis_le_infi_ker_proj Modified src/linear_algebra/basis.lean Added src/linear_algebra/std_basis.lean + theorem linear_map.disjoint_std_basis_std_basis + theorem linear_map.infi_ker_proj_le_supr_range_std_basis + theorem linear_map.ker_std_basis + theorem linear_map.proj_comp_std_basis + theorem linear_map.proj_std_basis_ne + theorem linear_map.proj_std_basis_same + def linear_map.std_basis + theorem linear_map.std_basis_apply + theorem linear_map.std_basis_eq_single + theorem linear_map.std_basis_ne + theorem linear_map.std_basis_same + theorem linear_map.supr_range_std_basis + theorem linear_map.supr_range_std_basis_eq_infi_ker_proj + theorem linear_map.supr_range_std_basis_le_infi_ker_proj 2021-02-04 07:48:51 6df1501 feat(algebra/ordered_ring): weaken hypotheses for one_le_two (#6034) Adjust `one_le_two` to not require nontriviality. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean +/- theorem one_le_two 2021-02-04 03:30:09 3309490 chore(scripts): update nolints.txt (#6032) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-04 03:30:08 7812afa feat(data/list/basic): drop_eq_nil_of_le (#6029) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.drop_eq_nil_of_le +/- theorem list.drop_nil 2021-02-04 03:30:06 cbd67cf feat(order/(complete_lattice, compactly_generated)): independent sets in a complete lattice (#5971) Defines `complete_lattice.independent` Shows that this notion of independence is finitary in compactly generated lattices ESTIMATED CHANGES Modified src/order/compactly_generated.lean + theorem Sup_compact_le_eq + theorem complete_lattice.independent_iff_finite + theorem inf_Sup_eq_of_directed_on + theorem inf_Sup_eq_supr_inf_sup_finset + theorem le_iff_compact_le_imp Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean + theorem complete_lattice.independent.mono + def complete_lattice.independent + theorem sup_Inf_le_infi_sup + theorem supr_inf_le_inf_Sup 2021-02-04 03:30:04 5f328b6 feat(linear_algebra/free_algebra): Show that free_monoid forms a basis over free_algebra (#5868) ESTIMATED CHANGES Added src/linear_algebra/free_algebra.lean + theorem free_algebra.dim_eq + theorem free_algebra.is_basis_free_monoid 2021-02-03 23:29:31 36b3510 feat(data/nat/factorial): additional inequalities (#6026) I added two lemmas about factorials. I use them in the Liouville PR #4301. ESTIMATED CHANGES Modified src/data/nat/factorial.lean + theorem nat.add_factorial_lt_factorial_add' + theorem nat.add_factorial_lt_factorial_add + theorem nat.lt_factorial_self 2021-02-03 17:44:44 360fa07 feat(data/real/sqrt): added some missing sqrt lemmas (#5933) I noticed that some facts about `sqrt` and `abs` are missing, so I am adding them. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean - theorem abs_sq_eq + theorem abs_sqr + theorem sqr_abs + theorem sqr_le_sqr' + theorem sqr_le_sqr + theorem sqr_lt_sqr' + theorem sqr_lt_sqr Modified src/algebra/ordered_group.lean +/- theorem abs_le' +/- theorem abs_le +/- theorem abs_lt + theorem le_abs + theorem le_of_abs_le +/- theorem lt_abs + theorem lt_of_abs_lt + theorem neg_le_of_abs_le + theorem neg_lt_of_abs_lt Modified src/data/real/sqrt.lean + theorem real.abs_le_sqrt + theorem real.div_sqrt +/- theorem real.le_sqrt' +/- theorem real.le_sqrt +/- theorem real.le_sqrt_of_sqr_le + theorem real.lt_sqrt + theorem real.lt_sqrt_of_sqr_lt + theorem real.neg_sqrt_le_of_sqr_le + theorem real.neg_sqrt_lt_of_sqr_lt + theorem real.sqr_le + theorem real.sqr_lt +/- theorem real.sqrt_le_iff +/- theorem real.sqrt_le_left +/- theorem real.sqrt_le_sqrt + theorem real.sqrt_ne_zero' + theorem real.sqrt_ne_zero Modified src/geometry/manifold/instances/sphere.lean 2021-02-03 16:02:37 bb15b1c chore(analysis/calculus): rename `has_f?deriv_at_unique` to `has_f?deriv_at.unique` (#6019) Also make some lemmas `protected`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean - theorem continuous_linear_map.deriv - theorem continuous_linear_map.deriv_within - theorem continuous_linear_map.has_deriv_at - theorem continuous_linear_map.has_deriv_at_filter - theorem continuous_linear_map.has_deriv_within_at - theorem continuous_linear_map.has_strict_deriv_at + theorem has_deriv_at.unique - theorem has_deriv_at_unique - theorem has_fpower_series_at.deriv - theorem has_fpower_series_at.has_deriv_at - theorem has_fpower_series_at.has_strict_deriv_at - theorem linear_map.deriv - theorem linear_map.deriv_within - theorem linear_map.has_deriv_at - theorem linear_map.has_deriv_at_filter - theorem linear_map.has_deriv_within_at - theorem linear_map.has_strict_deriv_at Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at.unique - theorem has_fderiv_at_unique Modified src/analysis/calculus/times_cont_diff.lean 2021-02-03 12:26:39 235a7c4 doc(lint/simp): typesetting issues in simp_nf library note (#6018) ESTIMATED CHANGES Modified src/tactic/lint/simp.lean 2021-02-03 12:26:38 9a0d2b2 chore(data/nat/parity): rename type variable (#6016) ESTIMATED CHANGES Modified src/data/nat/parity.lean +/- theorem nat.even.add_even +/- theorem nat.even.add_odd +/- theorem nat.even.sub_even +/- theorem nat.even.sub_odd +/- theorem nat.even_add' +/- theorem nat.even_add +/- theorem nat.even_div +/- theorem nat.even_iff +/- theorem nat.even_iff_not_odd +/- theorem nat.even_mul +/- theorem nat.even_pow +/- theorem nat.even_sub' +/- theorem nat.even_sub +/- theorem nat.even_succ +/- theorem nat.mod_two_ne_one +/- theorem nat.mod_two_ne_zero +/- theorem nat.neg_one_pow_eq_one_iff_even +/- theorem nat.neg_one_pow_of_even +/- theorem nat.neg_one_pow_of_odd +/- theorem nat.neg_one_pow_two +/- theorem nat.not_even_iff +/- theorem nat.not_odd_iff +/- theorem nat.odd.add_even +/- theorem nat.odd.add_odd +/- theorem nat.odd.sub_even +/- theorem nat.odd.sub_odd +/- theorem nat.odd_add' +/- theorem nat.odd_add +/- theorem nat.odd_gt_zero +/- theorem nat.odd_iff +/- theorem nat.odd_iff_not_even +/- theorem nat.odd_sub' +/- theorem nat.odd_sub +/- theorem nat.two_not_dvd_two_mul_sub_one 2021-02-03 12:26:36 fa8df59 feat(algebra/polynomial/big_operators): add degree_prod lemma (#5979) This PR adds a degree_prod lemma next to the nat_degree_prod lemma. This version of the lemma works for the interpretation of 'degree' which says the degree of the zero polynomial is \bot ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean + theorem polynomial.degree_prod 2021-02-03 12:26:34 5a9ca8d feat(linear_algebra/sesquilinear_form): add composition between sesquilinear forms and linear maps (#5729) Add composition lemmas for sesquilinear forms, that is, given a sesquilinear form and linear maps, a new sesquilinear form is induced by applying the arguments with the linear map. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean +/- theorem bilin_form.comp_injective Modified src/linear_algebra/sesquilinear_form.lean + def sesq_form.comp + theorem sesq_form.comp_apply + theorem sesq_form.comp_comp + theorem sesq_form.comp_injective + def sesq_form.comp_left + theorem sesq_form.comp_left_apply + theorem sesq_form.comp_left_comp_right + def sesq_form.comp_right + theorem sesq_form.comp_right_apply + theorem sesq_form.comp_right_comp_left 2021-02-03 09:45:38 e1ca806 doc(algebra/{archimedean, char_zero}): provide docstrings (#6010) ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/char_zero.lean 2021-02-03 04:39:23 e66ad5f chore(scripts): update nolints.txt (#6014) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-03 04:39:21 79ca6e2 feat(order/compactly_generated): Show that the sublattice below a compact element is coatomic (#5942) Show that the sublattice below a compact element is coatomic. Introduce a lemma stating that any set lying strictly below a compact element has Sup strictly below that element. ESTIMATED CHANGES Modified src/order/compactly_generated.lean + theorem complete_lattice.Iic_coatomic_of_compact_element + theorem complete_lattice.is_compact_element.directed_Sup_lt_of_lt 2021-02-03 01:05:51 fcad25f feat(algebra/ring): add mk_mul_self_of_two_ne_zero (#5862) Which allows us to make a ring homomorphism from an additive hom which maps squares to squares assuming a couple of things, this is especially useful in ordered fields where it allows us to think only of positive elements. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem add_monoid_hom.coe_add_monoid_hom_mk_ring_hom_of_mul_self_of_two_ne_zero + theorem add_monoid_hom.coe_fn_mk_ring_hom_of_mul_self_of_two_ne_zero + def add_monoid_hom.mk_ring_hom_of_mul_self_of_two_ne_zero 2021-02-02 23:11:29 2153dc3 feat(data/fintype/sort): add `fin_sum_equiv_of_finset` (#6008) ESTIMATED CHANGES Modified src/data/fintype/sort.lean + def fin_sum_equiv_of_finset + theorem fin_sum_equiv_of_finset_inl + theorem fin_sum_equiv_of_finset_inr 2021-02-02 21:38:31 1b1ad15 refactor(measure_theory/*): rename `is_(null_)?measurable` to `(null_)?measurable_set` (#6001) Search & replace: * `is_null_measurable` → `null_measurable`; * `is_measurable` → `measurable_set'`; * `measurable_set_set` → `measurable_set`; * `measurable_set_spanning_sets` → `measurable_spanning_sets`; * `measurable_set_superset` → `measurable_superset`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv_measurable.lean - theorem is_measurable_set_of_differentiable_at - theorem is_measurable_set_of_differentiable_at_of_is_complete + theorem measurable_set_of_differentiable_at + theorem measurable_set_of_differentiable_at_of_is_complete Modified src/analysis/special_functions/pow.lean Modified src/measure_theory/ae_measurable_sequence.lean - theorem ae_seq.ae_seq_set_is_measurable + theorem ae_seq.ae_seq_set_measurable_set Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean - theorem is_Gδ.is_measurable + theorem is_Gδ.measurable_set - theorem is_closed.is_measurable + theorem is_closed.measurable_set - theorem is_compact.is_measurable + theorem is_compact.measurable_set - theorem is_measurable.nhds_within_is_measurably_generated - theorem is_measurable_Icc - theorem is_measurable_Ici - theorem is_measurable_Ico - theorem is_measurable_Iic - theorem is_measurable_Iio - theorem is_measurable_Ioc - theorem is_measurable_Ioi - theorem is_measurable_Ioo - theorem is_measurable_ball - theorem is_measurable_closed_ball - theorem is_measurable_closure - theorem is_measurable_eball - theorem is_measurable_interior - theorem is_measurable_interval - theorem is_measurable_le' - theorem is_measurable_le - theorem is_measurable_lt' - theorem is_measurable_lt - theorem is_measurable_set_of_continuous_at - theorem is_open.is_measurable + theorem is_open.measurable_set +/- theorem measurable_of_Ici +/- theorem measurable_of_Iic +/- theorem measurable_of_Iio +/- theorem measurable_of_Ioi +/- theorem measurable_of_is_closed +/- theorem measurable_of_is_open + theorem measurable_set.nhds_within_is_measurably_generated + theorem measurable_set_Icc + theorem measurable_set_Ici + theorem measurable_set_Ico + theorem measurable_set_Iic + theorem measurable_set_Iio + theorem measurable_set_Ioc + theorem measurable_set_Ioi + theorem measurable_set_Ioo + theorem measurable_set_ball + theorem measurable_set_closed_ball + theorem measurable_set_closure + theorem measurable_set_eball + theorem measurable_set_interior + theorem measurable_set_interval + theorem measurable_set_le' + theorem measurable_set_le + theorem measurable_set_lt' + theorem measurable_set_lt + theorem measurable_set_of_continuous_at Modified src/measure_theory/content.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/giry_monad.lean +/- theorem measure_theory.measure.measurable_coe Modified src/measure_theory/group.lean +/- theorem measure_theory.measure.inv_apply Modified src/measure_theory/haar_measure.lean +/- theorem measure_theory.measure.haar_measure_apply Modified src/measure_theory/integration.lean +/- theorem measure_theory.lintegral_Union +/- theorem measure_theory.lintegral_indicator +/- theorem measure_theory.simple_func.coe_piecewise +/- theorem measure_theory.simple_func.coe_restrict - theorem measure_theory.simple_func.is_measurable_cut - theorem measure_theory.simple_func.is_measurable_fiber - theorem measure_theory.simple_func.is_measurable_preimage + theorem measure_theory.simple_func.measurable_set_cut + theorem measure_theory.simple_func.measurable_set_fiber + theorem measure_theory.simple_func.measurable_set_preimage +/- theorem measure_theory.simple_func.mem_restrict_range +/- def measure_theory.simple_func.piecewise +/- theorem measure_theory.simple_func.piecewise_apply +/- theorem measure_theory.simple_func.piecewise_compl +/- theorem measure_theory.simple_func.piecewise_empty +/- theorem measure_theory.simple_func.piecewise_univ +/- theorem measure_theory.simple_func.restrict_apply +/- theorem measure_theory.simple_func.restrict_const_lintegral +/- theorem measure_theory.simple_func.restrict_lintegral +/- theorem measure_theory.simple_func.restrict_preimage +/- theorem measure_theory.simple_func.restrict_preimage_singleton +/- theorem measure_theory.with_density_apply Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean - theorem finset.is_measurable_bInter - theorem finset.is_measurable_bUnion + theorem finset.measurable_set_bInter + theorem finset.measurable_set_bUnion - theorem is_countably_spanning_is_measurable + theorem is_countably_spanning_measurable_set - theorem is_measurable.Inter - theorem is_measurable.Inter_Prop - theorem is_measurable.Inter_fintype - theorem is_measurable.Union - theorem is_measurable.Union_Prop - theorem is_measurable.Union_fintype - theorem is_measurable.bInter - theorem is_measurable.bUnion - theorem is_measurable.bUnion_decode2 - theorem is_measurable.compl - theorem is_measurable.compl_iff - theorem is_measurable.congr - theorem is_measurable.const - theorem is_measurable.diff - theorem is_measurable.disjointed - theorem is_measurable.empty - theorem is_measurable.inl_image - theorem is_measurable.insert - theorem is_measurable.inter - theorem is_measurable.of_compl - theorem is_measurable.pi - theorem is_measurable.pi_fintype - theorem is_measurable.pi_univ - theorem is_measurable.prod - theorem is_measurable.sInter - theorem is_measurable.sUnion - theorem is_measurable.subtype_image - theorem is_measurable.tprod - theorem is_measurable.union - theorem is_measurable.univ - def is_measurable - theorem is_measurable_eq - theorem is_measurable_inr_image - theorem is_measurable_insert - theorem is_measurable_pi - theorem is_measurable_pi_of_nonempty - theorem is_measurable_prod - theorem is_measurable_prod_of_nonempty - theorem is_measurable_range_inl - theorem is_measurable_range_inr - theorem is_measurable_swap_iff +/- theorem measurable_find_greatest + theorem measurable_set.Inter + theorem measurable_set.Inter_Prop + theorem measurable_set.Inter_fintype + theorem measurable_set.Union + theorem measurable_set.Union_Prop + theorem measurable_set.Union_fintype + theorem measurable_set.bInter + theorem measurable_set.bUnion + theorem measurable_set.bUnion_decode2 + theorem measurable_set.compl + theorem measurable_set.compl_iff + theorem measurable_set.congr + theorem measurable_set.const + theorem measurable_set.diff + theorem measurable_set.disjointed + theorem measurable_set.empty + theorem measurable_set.inl_image + theorem measurable_set.insert + theorem measurable_set.inter + theorem measurable_set.of_compl + theorem measurable_set.pi + theorem measurable_set.pi_fintype + theorem measurable_set.pi_univ + theorem measurable_set.prod + theorem measurable_set.sInter + theorem measurable_set.sUnion + theorem measurable_set.subtype_image + theorem measurable_set.tprod + theorem measurable_set.union + theorem measurable_set.univ + def measurable_set + theorem measurable_set_eq + theorem measurable_set_inr_image + theorem measurable_set_insert + theorem measurable_set_pi + theorem measurable_set_pi_of_nonempty + theorem measurable_set_prod + theorem measurable_set_prod_of_nonempty + theorem measurable_set_range_inl + theorem measurable_set_range_inr + theorem measurable_set_swap_iff - theorem measurable_space.generate_from_is_measurable + theorem measurable_space.generate_from_measurable_set +/- def measurable_space.gi_generate_from - theorem measurable_space.is_measurable_Inf - theorem measurable_space.is_measurable_Sup - theorem measurable_space.is_measurable_bot_iff - theorem measurable_space.is_measurable_generate_from - theorem measurable_space.is_measurable_inf - theorem measurable_space.is_measurable_infi - theorem measurable_space.is_measurable_sup - theorem measurable_space.is_measurable_supr - theorem measurable_space.is_measurable_top - theorem measurable_space.is_pi_system_is_measurable + theorem measurable_space.is_pi_system_measurable_set + theorem measurable_space.measurable_set_Inf + theorem measurable_space.measurable_set_Sup + theorem measurable_space.measurable_set_bot_iff + theorem measurable_space.measurable_set_generate_from + theorem measurable_space.measurable_set_inf + theorem measurable_space.measurable_set_infi + theorem measurable_space.measurable_set_sup + theorem measurable_space.measurable_set_supr + theorem measurable_space.measurable_set_top +/- theorem measurable_to_encodable +/- theorem measurable_to_nat +/- theorem nonempty_measurable_superset - theorem set.finite.is_measurable - theorem set.finite.is_measurable_bInter - theorem set.finite.is_measurable_bUnion - theorem set.finite.is_measurable_sInter - theorem set.finite.is_measurable_sUnion + theorem set.finite.measurable_set + theorem set.finite.measurable_set_bInter + theorem set.finite.measurable_set_bUnion + theorem set.finite.measurable_set_sInter + theorem set.finite.measurable_set_sUnion - theorem subsingleton.is_measurable + theorem subsingleton.measurable_set Modified src/measure_theory/measure_space.lean - theorem ae_measurable.is_null_measurable + theorem ae_measurable.null_measurable_set - theorem is_measurable.diff_null - theorem is_measurable.is_null_measurable - theorem is_null_measurable.Union_nat - theorem is_null_measurable.compl - theorem is_null_measurable.diff_null - theorem is_null_measurable.union_null - def is_null_measurable - theorem is_null_measurable_iff - theorem is_null_measurable_iff_ae - theorem is_null_measurable_iff_sandwich - theorem is_null_measurable_measure_eq - theorem is_null_measurable_of_complete + theorem measurable_set.diff_null + theorem measurable_set.null_measurable_set +/- theorem measure_theory.ae_dirac_iff +/- theorem measure_theory.ae_eventually_not_mem +/- theorem measure_theory.ae_map_iff +/- theorem measure_theory.ae_restrict_eq +/- theorem measure_theory.ae_restrict_iff' +/- theorem measure_theory.ae_restrict_iff - theorem measure_theory.exists_is_measurable_superset - theorem measure_theory.exists_is_measurable_superset_iff_measure_eq_zero - theorem measure_theory.exists_is_measurable_superset_of_null + theorem measure_theory.exists_measurable_superset + theorem measure_theory.exists_measurable_superset_iff_measure_eq_zero + theorem measure_theory.exists_measurable_superset_of_null - theorem measure_theory.is_measurable_spanning_sets - theorem measure_theory.is_measurable_to_measurable + theorem measure_theory.measurable_set_to_measurable + theorem measure_theory.measurable_spanning_sets +/- theorem measure_theory.measure.Inf_apply +/- theorem measure_theory.measure.Inf_caratheodory +/- theorem measure_theory.measure.absolutely_continuous.mk +/- theorem measure_theory.measure.count_apply +/- theorem measure_theory.measure.dirac_apply' +/- theorem measure_theory.measure.ext +/- theorem measure_theory.measure.ext_iff +/- theorem measure_theory.measure.le_iff +/- theorem measure_theory.measure.lt_iff +/- theorem measure_theory.measure.map_apply +/- theorem measure_theory.measure.map_comap_subtype_coe +/- def measure_theory.measure.of_measurable +/- theorem measure_theory.measure.of_measurable_apply +/- theorem measure_theory.measure.restrict_Inf_eq_Inf_restrict +/- theorem measure_theory.measure.restrict_Union_congr +/- theorem measure_theory.measure.restrict_add_restrict_compl +/- theorem measure_theory.measure.restrict_apply +/- theorem measure_theory.measure.restrict_apply_eq_zero' +/- theorem measure_theory.measure.restrict_apply_eq_zero +/- theorem measure_theory.measure.restrict_compl_add_restrict +/- theorem measure_theory.measure.restrict_congr_meas +/- theorem measure_theory.measure.restrict_congr_mono +/- theorem measure_theory.measure.restrict_map +/- theorem measure_theory.measure.restrict_restrict +/- theorem measure_theory.measure.restrict_sUnion_congr +/- theorem measure_theory.measure.restrict_sum +/- theorem measure_theory.measure.restrict_to_outer_measure_eq_to_outer_measure_restrict +/- theorem measure_theory.measure.restrict_union +/- theorem measure_theory.measure.restrict_union_add_inter +/- theorem measure_theory.measure.restrict_union_apply +/- theorem measure_theory.measure.restrict_union_congr +/- theorem measure_theory.measure.sub_apply +/- theorem measure_theory.measure.sum_apply +/- theorem measure_theory.measure.supr_restrict_spanning_sets +/- theorem measure_theory.measure_Union_eq_supr +/- theorem measure_theory.measure_compl +/- theorem measure_theory.measure_diff +/- theorem measure_theory.measure_eq_extend +/- theorem measure_theory.measure_eq_infi +/- theorem measure_theory.measure_eq_inter_diff +/- theorem measure_theory.measure_limsup_eq_zero +/- theorem measure_theory.measure_union +/- theorem measure_theory.measure_union_add_inter +/- theorem measure_theory.mem_ae_dirac_iff +/- theorem measure_theory.mem_ae_map_iff +/- theorem measure_theory.self_mem_ae_restrict +/- theorem measure_theory.sum_measure_le_measure_univ +/- theorem measure_theory.tendsto_measure_Union +/- theorem measure_theory.tsum_measure_le_measure_univ - theorem null_is_null_measurable + theorem null_measurable_set.Union_nat + theorem null_measurable_set.compl + theorem null_measurable_set.diff_null + theorem null_measurable_set.union_null + def null_measurable_set + theorem null_measurable_set_iff + theorem null_measurable_set_iff_ae + theorem null_measurable_set_iff_sandwich + theorem null_measurable_set_measure_eq + theorem null_measurable_set_of_complete + theorem null_null_measurable_set - theorem restrict_apply_of_is_null_measurable + theorem restrict_apply_of_null_measurable_set Modified src/measure_theory/outer_measure.lean +/- theorem measure_theory.extend_mono +/- theorem measure_theory.induced_outer_measure_eq +/- theorem measure_theory.induced_outer_measure_eq_extend - theorem measure_theory.outer_measure.exists_is_measurable_superset_eq_trim - theorem measure_theory.outer_measure.exists_is_measurable_superset_of_trim_eq_zero + theorem measure_theory.outer_measure.exists_measurable_superset_eq_trim + theorem measure_theory.outer_measure.exists_measurable_superset_of_trim_eq_zero +/- theorem measure_theory.outer_measure.le_trim_iff +/- theorem measure_theory.outer_measure.restrict_trim +/- theorem measure_theory.outer_measure.trim_eq +/- theorem measure_theory.outer_measure.trim_eq_infi' +/- theorem measure_theory.outer_measure.trim_eq_infi Modified src/measure_theory/pi.lean +/- theorem measure_theory.measure.pi_pi Modified src/measure_theory/prod.lean - theorem is_measurable_integrable + theorem measurable_set_integrable +/- theorem measure_theory.measure.ae_measure_lt_top +/- theorem measure_theory.measure.prod_apply +/- theorem measure_theory.measure.prod_apply_symm +/- theorem measure_theory.measure.prod_restrict Modified src/measure_theory/prod_group.lean +/- theorem measure_theory.measurable_measure_mul_right +/- theorem measure_theory.measure_inv_null +/- theorem measure_theory.measure_mul_right_ne_zero +/- theorem measure_theory.measure_mul_right_null Modified src/measure_theory/set_integral.lean +/- theorem indicator_ae_eq_restrict +/- theorem indicator_ae_eq_restrict_compl +/- theorem measure_theory.ae_measurable_indicator_iff +/- theorem measure_theory.integrable_indicator_iff +/- theorem measure_theory.integrable_on.indicator +/- theorem measure_theory.integral_add_compl +/- theorem measure_theory.integral_indicator +/- theorem measure_theory.integral_indicator_const +/- theorem measure_theory.integral_union +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const' +/- theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae'' +/- theorem measure_theory.set_integral_congr +/- theorem measure_theory.set_integral_congr_ae +/- theorem piecewise_ae_eq_restrict +/- theorem piecewise_ae_eq_restrict_compl Modified src/measure_theory/simple_func_dense.lean Modified src/probability_theory/independence.lean 2021-02-02 18:29:12 2b2edc9 chore(analysis/normed_space/basic): use explicit arg `𝕜'` in lemmas about `normed_algebra` (#6009) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem normed_algebra.norm_one Modified src/analysis/normed_space/operator_norm.lean 2021-02-02 18:29:10 4e78654 fix(tactic/delta_instance): improve naming of instances with multiple arguments (#6007) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/tactic/delta_instance.lean Modified test/delta_instance.lean 2021-02-02 18:29:08 fe9c021 feat(geometry/manifold/instances): sphere is a smooth manifold (#5607) Put a smooth manifold structure on the sphere, and provide tools for constructing smooth maps to and from the sphere. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/analysis/normed_space/inner_product.lean +/- theorem findim_orthogonal_span_singleton Modified src/geometry/manifold/instances/sphere.lean +/- def stereographic' +/- theorem stereographic'_source +/- theorem stereographic'_target + theorem times_cont_mdiff.cod_restrict_sphere + theorem times_cont_mdiff_coe_sphere + theorem times_cont_mdiff_neg_sphere Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.finite_dimensional_of_findim + theorem finite_dimensional.finite_dimensional_of_findim_eq_succ Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.coe_to_homeomorph + theorem continuous_linear_equiv.symm_to_homeomorph 2021-02-02 14:44:00 dbb5ca1 refactor(group_theory/perm): move perm.subtype_perm to basic (#6005) Both `perm.subtype_perm` and `perm.of_subtype` can be moved up the import hierarchy out of `group_theory/perm/sign` since they do not rely on any finiteness assumption. ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + theorem equiv.perm.mem_iff_of_subtype_apply_mem + def equiv.perm.of_subtype + theorem equiv.perm.of_subtype_apply_of_not_mem + theorem equiv.perm.of_subtype_subtype_perm + def equiv.perm.subtype_perm + theorem equiv.perm.subtype_perm_of_subtype + theorem equiv.perm.subtype_perm_one Modified src/group_theory/perm/sign.lean - theorem equiv.perm.mem_iff_of_subtype_apply_mem - def equiv.perm.of_subtype - theorem equiv.perm.of_subtype_apply_of_not_mem - theorem equiv.perm.of_subtype_subtype_perm - def equiv.perm.subtype_perm - theorem equiv.perm.subtype_perm_of_subtype - theorem equiv.perm.subtype_perm_one 2021-02-02 14:43:58 9b3dc41 feat(nat/basic): more nat.find lemmas (#6002) also merge two sections on nat.find ESTIMATED CHANGES Modified src/data/nat/basic.lean +/- theorem nat.find_eq_iff +/- theorem nat.find_eq_zero +/- theorem nat.find_le + theorem nat.find_le_iff + theorem nat.find_lt_iff +/- theorem nat.find_pos + theorem nat.le_find_iff + theorem nat.lt_find_iff 2021-02-02 14:43:56 6633a70 feat(analysis/normed_space/inner_product): remove unnecessary `nonneg_im` field (#5999) The `nonneg_im` property already follows from `conj_sym`. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean +/- theorem inner_conj_sym +/- theorem inner_product_space.of_core.inner_self_im_zero +/- theorem inner_product_space.of_core.inner_self_nonneg_im +/- theorem inner_self_im_zero +/- theorem inner_self_nonneg_im Modified src/analysis/quaternion.lean Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.conj_I + theorem is_R_or_C.im_eq_conj_sub 2021-02-02 14:43:54 508c265 feat(logic/function/basic): add bijective.iff_exists_unique and projections (#5995) ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.bijective.exists_unique + theorem function.bijective_iff_exists_unique 2021-02-02 14:43:51 3732fb9 refactor(data/polynomial/eval): change eval_smul lemmas to use * instead of 2nd smul (#5991) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean Modified src/ring_theory/localization.lean 2021-02-02 14:43:49 ff05d3a feat(algebra/group_power/lemmas): sign of even/odd powers (#5990) Added theorems about the sign of even and odd natural powers. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean +/- theorem one_add_mul_le_pow +/- theorem one_add_mul_sub_le_pow +/- theorem pow_bit1_neg_iff +/- theorem pow_bit1_nonneg_iff +/- theorem pow_bit1_nonpos_iff +/- theorem pow_bit1_pos_iff + theorem pow_even_nonneg + theorem pow_even_pos + theorem pow_odd_neg + theorem pow_odd_nonneg + theorem pow_odd_nonpos + theorem pow_odd_pos 2021-02-02 14:43:46 25c34e0 refactor(linear_algebra,algebra/algebra): generalize `linear_map.smul_right` (#5967) * the new `linear_map.smul_right` generalizes both the old `linear_map.smul_right` and the old `linear_map.smul_algebra_right`; * add `smul_comm_class` for `linear_map`s. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - def linear_map.smul_algebra_right - theorem linear_map.smul_algebra_right_apply Modified src/analysis/normed_space/operator_norm.lean Modified src/linear_algebra/basic.lean +/- def linear_map.smul_right +/- theorem linear_map.smul_right_apply Modified src/linear_algebra/finsupp.lean 2021-02-02 14:43:44 fc7daa3 feat(data/nat/parity): addition/subtraction of even/odd nats (#5934) Added various theorems pertaining to the addition and subtraction of even and odd natural numbers. ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean Modified src/data/nat/parity.lean - theorem nat.even.add + theorem nat.even.add_even + theorem nat.even.add_odd - theorem nat.even.sub + theorem nat.even.sub_even + theorem nat.even.sub_odd + theorem nat.even_add' +/- theorem nat.even_div + theorem nat.even_sub' +/- theorem nat.neg_one_pow_eq_one_iff_even + theorem nat.odd.add_even + theorem nat.odd.add_odd + theorem nat.odd.sub_even + theorem nat.odd.sub_odd + theorem nat.odd_add' + theorem nat.odd_add + theorem nat.odd_sub' + theorem nat.odd_sub +/- theorem nat.two_not_dvd_two_mul_add_one +/- theorem nat.two_not_dvd_two_mul_sub_one 2021-02-02 14:43:42 893ce8b feat(tactic/norm_fin): tactic for normalizing `fin n` expressions (#5820) This is based on #5791, with a new implementation using the `normalize_fin` function. ESTIMATED CHANGES Added src/tactic/norm_fin.lean + theorem tactic.norm_fin.normalize_fin.add + theorem tactic.norm_fin.normalize_fin.bit0 + theorem tactic.norm_fin.normalize_fin.bit1 + theorem tactic.norm_fin.normalize_fin.cast + theorem tactic.norm_fin.normalize_fin.eq + theorem tactic.norm_fin.normalize_fin.le + theorem tactic.norm_fin.normalize_fin.lt + theorem tactic.norm_fin.normalize_fin.mul + theorem tactic.norm_fin.normalize_fin.one + theorem tactic.norm_fin.normalize_fin.reduce + theorem tactic.norm_fin.normalize_fin.zero + def tactic.norm_fin.normalize_fin + theorem tactic.norm_fin.normalize_fin_iff + theorem tactic.norm_fin.normalize_fin_lt.add_nat + theorem tactic.norm_fin.normalize_fin_lt.cast + theorem tactic.norm_fin.normalize_fin_lt.cast_add + theorem tactic.norm_fin.normalize_fin_lt.cast_le + theorem tactic.norm_fin.normalize_fin_lt.cast_lt + theorem tactic.norm_fin.normalize_fin_lt.cast_succ + theorem tactic.norm_fin.normalize_fin_lt.coe + theorem tactic.norm_fin.normalize_fin_lt.lt + theorem tactic.norm_fin.normalize_fin_lt.mk + theorem tactic.norm_fin.normalize_fin_lt.nat_add + theorem tactic.norm_fin.normalize_fin_lt.of + theorem tactic.norm_fin.normalize_fin_lt.reduce + theorem tactic.norm_fin.normalize_fin_lt.succ + theorem tactic.norm_fin.normalize_fin_lt.zero + def tactic.norm_fin.normalize_fin_lt Modified src/tactic/norm_num.lean Added test/norm_fin.lean 2021-02-02 11:46:18 75a7ce9 refactor(*): rename subtype_congr to subtype_equiv (#6004) This definition is closely related to `perm.subtype_perm`, so renaming will bring them closer in use. Also releavnt is #5875 which defines a separate `perm.subtype_congr`. ESTIMATED CHANGES Modified src/category_theory/adjunction/lifting.lean Modified src/category_theory/monad/monadicity.lean Modified src/data/equiv/basic.lean - def equiv.subtype_congr - theorem equiv.subtype_congr_apply - def equiv.subtype_congr_prop - def equiv.subtype_congr_right - theorem equiv.subtype_congr_symm_apply + def equiv.subtype_equiv + theorem equiv.subtype_equiv_apply + def equiv.subtype_equiv_prop + def equiv.subtype_equiv_right + theorem equiv.subtype_equiv_symm_apply Modified src/data/fintype/card.lean Modified src/field_theory/finite/polynomial.lean Modified src/ring_theory/polynomial/symmetric.lean 2021-02-02 07:14:15 fec8ee4 chore(topology/bases): rewrite 2 proofs using tactic mode (#5996) IMHO they're more readable that way ESTIMATED CHANGES Modified src/topology/bases.lean +/- theorem topological_space.first_countable_topology.tendsto_subseq 2021-02-02 04:14:06 0c26bb0 feat(data/finset/basic): add lemmas about bUnion and images of functions on finsets (#5887) Add lemmas about bUnion and images of functions on finsets. Part of #5695 in order to prove Hall's marriage theorem. Coauthors: @kmill @b-mehta ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.erase_bUnion + theorem finset.nonempty.image_iff 2021-02-02 02:06:24 2c62c0b chore(scripts): update nolints.txt (#6006) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-02-02 02:06:21 a301ef7 feat(order/compactly_generated, ring_theory/noetherian): the lattice of submodules is compactly generated (#5944) Redefines `is_compactly_generated` as a class Provides an instance of `is_compactly_generated` on `submodule R M` ESTIMATED CHANGES Modified src/order/compactly_generated.lean - def complete_lattice.is_compactly_generated Modified src/ring_theory/noetherian.lean 2021-02-01 22:55:52 4d3b26f feat(combinatorics/simple_graph/basic): add decidable instance for adjacency of complement (#6000) Add instance that states that, if the adjacency relation for a simple graph is decidable, the adjacency relation for its complement is also decidable. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2021-02-01 22:55:50 1706e55 feat(data/list/basic) add update_nth_comm (#5989) As requested on Zulip at https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/list.2Eupdate_nth_comm/near/223007424 ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.update_nth_comm + theorem list.update_nth_nil + theorem list.update_nth_succ 2021-02-01 22:55:48 9b779f4 refactor(ring_theory/ideal/*, ring_theory/jacobson): use `comm_semiring` instead of `comm_ring` for ideals (#5954) This is the second pass at refactoring the definition of `ideal`. I have changed a `comm_ring` assumption to a `comm_semiring` assumption on many of the lemmas in `ring_theory/ideal/basic`. Most implied changes were very simple, with the usual exception of `jacobson`. I also moved out of `jacobson` the lemmas that were left-over from the previous refactor in this sequence. Besides changing such assumptions on other files, many of the lemmas in `ring_theory/ideal/basic` still using `comm_ring` and without explicit subtractions, deal with quotients. ESTIMATED CHANGES Modified src/algebra/ring_quot.lean Modified src/ring_theory/ideal/basic.lean +/- theorem coe_subset_nonunits +/- theorem exists_max_ideal_of_mem_nonunits - theorem ideal.exists_mem_ne_zero_iff_ne_bot - theorem ideal.exists_mem_ne_zero_of_ne_bot +/- theorem ideal.maximal_of_no_maximal - theorem ideal.quotient.lift_comp_mk - theorem ideal.quotient.lift_surjective Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/ideal/over.lean + theorem ideal.exists_nonzero_mem_of_ne_bot + theorem ideal.injective_quotient_le_comap_map + theorem ideal.quotient_mk_maps_eq Modified src/ring_theory/jacobson.lean - theorem ideal.injective_quotient_le_comap_map - theorem ideal.quotient_mk_maps_eq Modified src/ring_theory/jacobson_ideal.lean 2021-02-01 19:15:19 829c1a5 chore(group_theory/coset): rename lemmas to follow naming conventions (#5998) Rename `normal_of_eq_cosets` and `eq_cosets_of_normal` to follow naming conventions. Conclusion should be stated before the `of`. ESTIMATED CHANGES Modified src/group_theory/coset.lean +/- theorem eq_cosets_of_normal +/- theorem normal_of_eq_cosets 2021-02-01 19:15:16 684f4f5 chore(*): split some long lines (#5997) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean +/- theorem nat.cast_le_pow_sub_div_sub +/- theorem semiconj_by.cast_nat_mul_right Modified src/algebra/group_with_zero/power.lean +/- theorem commute.fpow_fpow_self Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/analysis/convex/extrema.lean Modified src/category_theory/adjunction/limits.lean +/- def category_theory.adjunction.functoriality_counit' +/- def category_theory.adjunction.functoriality_counit +/- def category_theory.adjunction.functoriality_unit' Modified src/category_theory/limits/shapes/zero.lean Modified src/data/nat/cast.lean +/- theorem nat.cast_dvd Modified src/data/qpf/multivariate/constructions/cofix.lean +/- theorem mvqpf.cofix.ext_mk Modified src/deprecated/group.lean Modified src/deprecated/ring.lean Modified src/deprecated/subgroup.lean +/- theorem is_add_subgroup.gsmul_mem +/- theorem is_subgroup.coe_gpow Modified src/field_theory/algebraic_closure.lean +/- theorem is_alg_closed.degree_eq_one_of_irreducible Modified src/linear_algebra/finite_dimensional.lean +/- theorem findim_eq_zero +/- theorem finite_dimensional.span_of_finite Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/linear_independent.lean Modified src/number_theory/pell.lean +/- theorem pell.eq_of_xn_modeq +/- theorem pell.eq_of_xn_modeq_le Modified src/order/omega_complete_partial_order.lean +/- theorem omega_complete_partial_order.continuous_hom.comp_assoc Modified src/tactic/interval_cases.lean Modified src/tactic/local_cache.lean Modified src/tactic/squeeze.lean 2021-02-01 19:15:14 acabfa6 fix(archive/imo/*): fixed syntax for docstrings (#5994) ESTIMATED CHANGES Modified archive/imo/imo1959_q1.lean Modified archive/imo/imo1972_b2.lean Modified archive/imo/imo1988_q6.lean 2021-02-01 19:15:11 a84a80d fix(topology/algebra/infinite_sum): add missing decidable arguments (#5993) These decidable instances were being inferred as classical instances, which meant these lemmas would not match other instances. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean +/- theorem has_sum_ite_eq +/- theorem tsum_ite_eq 2021-02-01 19:15:09 64283ce feat(list/{zip,indexes}): Add `zip_with` and `map_with_index` lemmas (#5974) All proofs are due to @pechersky. ESTIMATED CHANGES Modified src/data/list/indexes.lean + theorem list.map_with_index_core_eq + theorem list.map_with_index_eq_enum_map Modified src/data/list/zip.lean + theorem list.map_uncurry_zip_eq_zip_with + theorem list.zip_with_map + theorem list.zip_with_map_left + theorem list.zip_with_map_right 2021-02-01 15:46:19 cbd88d6 chore(*) add mod_add_div' and div_add_mod' and golf proofs (#5962) Resolves issue #1534. Name of nat.mod_add_div shouldn't be changed as this is in core. Better name suggestions for mod_add_div' and div_add_mod' welcome. ESTIMATED CHANGES Modified archive/imo/imo1962_q1.lean Modified archive/imo/imo1964_q1.lean Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.div_add_mod' + theorem euclidean_domain.mod_add_div' Modified src/data/int/basic.lean + theorem int.div_add_mod' + theorem int.mod_add_div' Modified src/data/nat/basic.lean + theorem nat.div_add_mod' + theorem nat.div_add_mod + theorem nat.mod_add_div' Modified src/data/nat/fib.lean Modified src/data/pnat/basic.lean + theorem pnat.div_add_mod' + theorem pnat.mod_add_div' Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/set_theory/ordinal_arithmetic.lean 2021-02-01 12:31:43 866e4fd chore(linear_algebra/quadratic_form): add two missing simp lemmas about subtraction (#5985) This also reorders the instance definitions to keep the lemmas about subtraction near the ones about negation, and uses the `add := (+)` pattern to make definitions unfold more nicely, even though it probably doesn't make any difference. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.coe_fn_sub + theorem quadratic_form.sub_apply 2021-02-01 12:31:41 f2c84aa doc(algebra/category/*): provide two short docstrings and shorten lines (#5984) also fixed one minor typo. ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Module/limits.lean Modified src/algebra/category/Module/monoidal.lean +/- def Module.monoidal_category.tensor_hom Modified src/algebra/category/Mon/colimits.lean +/- theorem Mon.colimits.quot_mul 2021-02-01 12:31:39 b1ab310 chore(analysis/normed_space/inner_product): add {bilin,sesq}_form_of_inner_apply simp lemmas (#5982) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean 2021-02-01 12:31:37 398e7ad feat(data/pnat/basic) pnat can_lift instances (#5977) Add can_lift instances for pnat from nat and int ESTIMATED CHANGES Modified src/data/pnat/basic.lean 2021-02-01 12:31:35 89c7963 feat(category_theory/nat_iso): dsimp lemma for natural isomorphisms (#5973) a little simp lemma ESTIMATED CHANGES Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.is_iso_inv_app 2021-02-01 12:31:33 8273588 chore(category_theory/monad): generate simp lemmas (#5972) Adds a missing simps command to generate simp lemmas for the functor. ESTIMATED CHANGES Modified src/category_theory/monad/products.lean 2021-02-01 12:31:31 3f9b035 chore(category_theory/adjunction): reflective lemmas (#5968) Improves the docstring and changes the name to be more appropriate (the lemma has nothing to do with essential images). ESTIMATED CHANGES Modified src/category_theory/adjunction/reflective.lean 2021-02-01 09:10:42 c5e0d10 chore(*): split some long lines (#5988) ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified docs/tutorial/category_theory/intro.lean Modified src/algebra/algebra/subalgebra.lean +/- theorem algebra.bijective_algebra_map_iff Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/algebra/divisibility.lean Modified src/algebra/group/prod.lean +/- theorem mul_equiv.coe_prod_comm Modified src/algebra/quandle.lean +/- inductive rack.pre_envel_group_rel' Modified src/algebra/ring_quot.lean +/- theorem ring_quot.lift_alg_hom_mk_alg_hom_apply +/- theorem ring_quot.rel.neg Modified src/analysis/normed_space/finite_dimension.lean Modified src/category_theory/hom_functor.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/creates.lean +/- def category_theory.lift_colimit Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.ι_map +/- theorem category_theory.limits.colimit.ι_post +/- theorem category_theory.limits.colimit.ι_pre +/- theorem category_theory.limits.has_colimit.iso_of_nat_iso_hom_desc +/- theorem category_theory.limits.has_colimit.of_cocones_iso +/- theorem category_theory.limits.has_limit.of_cones_iso +/- def category_theory.limits.is_colimit.cocone_point_unique_up_to_iso +/- theorem category_theory.limits.limit.pre_π Modified src/category_theory/limits/shapes/binary_products.lean +/- theorem category_theory.limits.coprod.associator_naturality +/- def category_theory.limits.coprod.desc +/- theorem category_theory.limits.coprod.desc_comp +/- theorem category_theory.limits.coprod.map_codiag +/- theorem category_theory.limits.coprod.map_inl_inr_codiag +/- theorem category_theory.limits.coprod.map_swap +/- theorem category_theory.limits.prod.diag_map_fst_snd +/- theorem category_theory.limits.prod.lift_fst_comp_snd_comp +/- theorem category_theory.limits.prod.lift_map +/- theorem category_theory.limits.prod.map_swap Modified src/category_theory/limits/shapes/biproducts.lean +/- def category_theory.limits.biproduct.is_colimit +/- theorem category_theory.limits.has_binary_biproduct.mk Modified src/category_theory/limits/shapes/finite_limits.lean +/- theorem category_theory.limits.has_finite_wide_pullbacks_of_has_finite_limits +/- theorem category_theory.limits.has_finite_wide_pushouts_of_has_finite_limits Modified src/category_theory/limits/shapes/images.lean +/- def category_theory.limits.image.iso_strong_epi_mono +/- theorem category_theory.limits.image.iso_strong_epi_mono_hom_comp_ι +/- theorem category_theory.limits.image.iso_strong_epi_mono_inv_comp_mono Modified src/category_theory/limits/shapes/kernel_pair.lean +/- def category_theory.is_kernel_pair.cancel_right +/- def category_theory.is_kernel_pair.cancel_right_of_mono Modified src/category_theory/limits/shapes/regular_mono.lean +/- def category_theory.regular_of_is_pullback_fst_of_regular +/- def category_theory.regular_of_is_pullback_snd_of_regular Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monoidal/of_chosen_finite_products.lean Modified src/category_theory/skeletal.lean Modified src/data/lazy_list/basic.lean +/- theorem lazy_list.append_assoc +/- theorem lazy_list.mem_cons +/- def lazy_list.pmap Modified src/data/matrix/notation.lean +/- theorem matrix.mul_vec_cons Modified src/data/multiset/fold.lean +/- theorem multiset.fold_add +/- theorem multiset.fold_eq_foldl +/- theorem multiset.fold_eq_foldr +/- theorem multiset.fold_erase_dup_idem Modified src/data/mv_polynomial/equiv.lean +/- def mv_polynomial.ring_equiv_congr Modified src/order/filter/bases.lean +/- theorem filter.generate_eq_generate_inter +/- structure filter.has_countable_basis Modified src/order/filter/basic.lean Modified src/ring_theory/ideal/operations.lean Modified src/tactic/linarith/datatypes.lean Modified src/topology/algebra/multilinear.lean + def continuous_multilinear_map.apply_add_hom Modified src/topology/category/Top/adjunctions.lean Modified src/topology/list.lean Modified src/topology/local_extr.lean +/- theorem is_local_extr_on.comp_continuous_on +/- theorem is_local_extr_on.is_local_extr +/- theorem is_local_max_on.comp_continuous_on +/- theorem is_local_min_on.comp_continuous_on Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/lipschitz.lean Modified test/finish2.lean Modified test/finish4.lean 2021-02-01 03:11:45 f060e09 chore(*): golf some proofs (#5983) API changes: * new lemmas `finset.card_filter_le`, `finset.compl_filter`, `finset.card_lt_univ_of_not_mem`, `fintype.card_le_of_embedding`, `fintype.card_lt_of_injective_not_surjective`; * rename `finset.card_le_of_inj_on` → `finset.le_card_of_inj_on_range`; * rename `card_lt_of_injective_of_not_mem` to `fintype.card_lt_of_injective_of_not_mem`; * generalize `card_units_lt` to a `monoid_with_zero`. ESTIMATED CHANGES Modified src/analysis/convex/caratheodory.lean Modified src/data/finset/basic.lean + theorem finset.card_filter_le - theorem finset.card_le_of_inj_on + theorem finset.le_card_of_inj_on_range Modified src/data/fintype/basic.lean - theorem card_lt_card_of_injective_of_not_mem + theorem finset.card_lt_univ_of_not_mem + theorem finset.compl_filter + theorem fintype.card_le_of_embedding + theorem fintype.card_lt_of_injective_not_surjective + theorem fintype.card_lt_of_injective_of_not_mem Modified src/data/nat/totient.lean Modified src/data/set/basic.lean +/- theorem set.range_inclusion Modified src/data/set/finite.lean Modified src/field_theory/finite/basic.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycles.lean Modified src/measure_theory/haar_measure.lean Modified src/ring_theory/fintype.lean +/- theorem card_units_lt Modified src/set_theory/cardinal.lean 2021-02-01 01:50:40 609f5f7 chore(scripts): update nolints.txt (#5986) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-31 18:12:02 a15e64a refactor(data/polynomial/degree/definitions): rw -> exact, use term mode proof (#5946) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean 2021-01-31 06:59:28 4f4a9b5 feat(analysis/analytic/inverse): inverse of a formal multilinear series (#5852) We construct the left inverse and a right inverse of a formal multilinear series with invertible first term, and we show that they coincide. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Added src/analysis/analytic/inverse.lean + theorem formal_multilinear_series.comp_right_inv + theorem formal_multilinear_series.comp_right_inv_aux1 + theorem formal_multilinear_series.comp_right_inv_aux2 + theorem formal_multilinear_series.left_inv_coeff_one + theorem formal_multilinear_series.left_inv_coeff_zero + theorem formal_multilinear_series.left_inv_comp + theorem formal_multilinear_series.left_inv_eq_right_inv + theorem formal_multilinear_series.left_inv_remove_zero + theorem formal_multilinear_series.right_inv_coeff + theorem formal_multilinear_series.right_inv_coeff_one + theorem formal_multilinear_series.right_inv_coeff_zero + theorem formal_multilinear_series.right_inv_remove_zero 2021-01-31 01:46:38 1ea538b chore(scripts): update nolints.txt (#5976) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-30 22:44:52 ae1b530 chore(algebra/algebra/basic): add simp lemma about `algebra_map ℚ` (#5970) Since there is a subsingleton instance over ring_homs, we may as well let the simplifier replace `algebra_map` with `id`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem rat.algebra_map_rat_rat 2021-01-30 22:44:50 f596077 feat(geometry/manifold/instances): sphere is a topological manifold (#5591) Construct stereographic projection, as a local homeomorphism from the unit sphere in an inner product space `E` to a hyperplane in `E`. Make a charted space instance for the sphere, with these stereographic projections as the atlas. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem abs_sq_eq Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.inv + theorem times_cont_diff_on.div + theorem times_cont_diff_on.inv Modified src/analysis/normed_space/basic.lean + theorem coe_norm Modified src/analysis/normed_space/inner_product.lean +/- theorem findim_orthogonal_span_singleton + def linear_isometry_equiv.from_orthogonal_span_singleton Added src/geometry/manifold/instances/sphere.lean + theorem continuous_on_stereo_to_fun + theorem continuous_stereo_inv_fun + def stereo_inv_fun + theorem stereo_inv_fun_apply + def stereo_inv_fun_aux + theorem stereo_inv_fun_aux_apply + theorem stereo_inv_fun_aux_mem + theorem stereo_inv_fun_ne_north_pole + theorem stereo_left_inv + theorem stereo_right_inv + def stereo_to_fun + theorem stereo_to_fun_apply + def stereographic' + theorem stereographic'_source + theorem stereographic'_target + def stereographic + theorem stereographic_source + theorem stereographic_target + theorem times_cont_diff_on_stereo_to_fun + theorem times_cont_diff_stereo_inv_fun_aux Modified src/topology/algebra/module.lean + theorem continuous_on.smul 2021-01-30 20:09:59 a6c0442 feat(field_theory/normal): Restriction is surjective (#5960) Proves surjectivity of `alg_equiv.restrict_normal_hom`. Also proves a bijectivity lemma which gives a cleaner construction of `alg_equiv.restrict_normal`. ESTIMATED CHANGES Modified src/field_theory/normal.lean + theorem alg_equiv.lift_normal_commutes + theorem alg_equiv.restrict_lift_normal +/- theorem alg_equiv.restrict_normal_commutes + theorem alg_equiv.restrict_normal_hom_surjective + theorem alg_hom.lift_normal_commutes + theorem alg_hom.normal_bijective + theorem alg_hom.restrict_lift_normal +/- theorem alg_hom.restrict_normal_commutes 2021-01-30 20:09:57 48d0592 feat(algebra/lie/basic): define derived length and semisimple Lie algebras (#5930) We also provide proofs of some basic characterisations ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/lie/basic.lean + theorem function.injective.is_lie_abelian + theorem function.surjective.is_lie_abelian + theorem lie_abelian_iff_equiv_lie_abelian + theorem lie_algebra.abelian_derived_abelian_of_ideal + theorem lie_algebra.abelian_iff_derived_one_eq_bot + theorem lie_algebra.abelian_iff_derived_succ_eq_bot + theorem lie_algebra.abelian_of_solvable_ideal_eq_bot_iff + theorem lie_algebra.derived_length_eq_derived_length_of_ideal + theorem lie_algebra.derived_length_zero + theorem lie_algebra.derived_series_of_bot_eq_bot + theorem lie_algebra.derived_series_of_derived_length_succ + theorem lie_algebra.equiv.bijective + theorem lie_algebra.equiv.injective + theorem lie_algebra.equiv.surjective + theorem lie_algebra.is_lie_abelian_bot + theorem lie_algebra.is_semisimple_iff_no_abelian_ideals + theorem lie_algebra.is_semisimple_iff_no_solvable_ideals + theorem lie_algebra.is_solvable_of_injective + theorem lie_algebra.le_solvable_ideal_solvable + theorem lie_algebra.lie_ideal.solvable_iff_le_radical + theorem lie_algebra.morphism.ker_eq_bot + theorem lie_algebra.of_abelian_is_solvable + def lie_algebra.top_equiv_self + theorem lie_algebra.top_equiv_self_apply + theorem lie_ideal.bot_of_map_eq_bot + theorem lie_ideal.coe_hom_of_le + theorem lie_ideal.derived_series_map_le_derived_series + def lie_ideal.hom_of_le + theorem lie_ideal.hom_of_le_apply + theorem lie_ideal.hom_of_le_injective - theorem lie_module.trivial_iff_derived_eq_bot + theorem lie_module.trivial_iff_lower_central_eq_bot + theorem lie_subalgebra.coe_zero_iff_zero + theorem lie_subalgebra.ext_iff' +/- theorem lie_subalgebra.ext_iff + theorem lie_submodule.hom_of_le_injective + theorem lie_submodule.lie_abelian_iff_lie_self_eq_bot Modified src/order/conditionally_complete_lattice.lean + theorem nat.Inf_upward_closed_eq_succ_iff + theorem nat.eq_Ici_of_nonempty_of_upward_closed + theorem nat.nonempty_of_Inf_eq_succ + theorem nat.nonempty_of_pos_Inf 2021-01-30 18:21:17 539550d feat(topology/instances/nnreal): add has_sum_nat_add_iff and module docstring (#5716) ESTIMATED CHANGES Modified src/topology/instances/nnreal.lean + theorem nnreal.has_sum_nat_add_iff 2021-01-30 14:50:34 d6fe605 chore(*): split some long lines (#5959) ESTIMATED CHANGES Modified src/category_theory/elements.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/is_connected.lean +/- theorem category_theory.is_connected.of_induct Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/preserves/basic.lean Modified src/data/bitvec/basic.lean Modified src/data/complex/exponential.lean +/- theorem complex.cos_add_sin_mul_I_pow Modified src/data/equiv/mul_add.lean Modified src/data/holor.lean Modified src/data/matrix/pequiv.lean +/- theorem pequiv.equiv_to_pequiv_to_matrix +/- theorem pequiv.single_mul_single_right Modified src/data/multiset/basic.lean +/- theorem multiset.bind_congr +/- theorem multiset.card_product +/- theorem multiset.count_erase_of_ne +/- theorem multiset.count_erase_self +/- theorem multiset.count_inter +/- theorem multiset.count_union +/- theorem multiset.eq_of_mem_map_const +/- theorem multiset.erase_cons_tail +/- theorem multiset.exists_mem_of_rel_of_mem +/- theorem multiset.foldl_add +/- theorem multiset.foldl_cons +/- theorem multiset.foldr_add +/- theorem multiset.foldr_cons +/- theorem multiset.map_congr +/- theorem multiset.map_map +/- theorem multiset.map_union Modified src/group_theory/free_abelian_group.lean +/- theorem free_abelian_group.add_bind +/- theorem free_abelian_group.add_seq +/- theorem free_abelian_group.map_add +/- theorem free_abelian_group.map_sub +/- theorem free_abelian_group.neg_bind +/- theorem free_abelian_group.neg_seq +/- theorem free_abelian_group.seq_add +/- theorem free_abelian_group.seq_neg +/- theorem free_abelian_group.seq_sub +/- theorem free_abelian_group.sub_bind +/- theorem free_abelian_group.sub_seq Modified src/ring_theory/polynomial/basic.lean +/- theorem polynomial.coeff_restriction' +/- theorem polynomial.coeff_restriction +/- theorem polynomial.nat_degree_restriction Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.coe_add +/- theorem continuous_linear_map.coe_sub Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.diam_union +/- theorem uniformity_dist_of_mem_uniformity Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified test/general_recursion.lean +/- theorem roption.examples.tree_map'.cont +/- def roption.examples.tree_map'.intl +/- theorem roption.examples.tree_map.cont +/- theorem roption.examples.tree_map.equations.eqn_1 +/- theorem roption.examples.tree_map.equations.eqn_2 +/- def roption.examples.tree_map.intl 2021-01-30 10:07:38 8069521 feat(measure_theory): Absolute continuity (#5948) * Define absolute continuity between measures (@mzinkevi) * State monotonicity of `ae_measurable` w.r.t. absolute continuity * Weaken some `measurable` assumptions in `prod.lean` to `ae_measurable` * Some docstring fixes * Some cleanup ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean Modified src/measure_theory/group.lean Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measure_space.lean + theorem ae_measurable.comp_measurable' + theorem measure_theory.ae_eq_comp' + theorem measure_theory.measure.absolutely_continuous.mk + theorem measure_theory.measure.absolutely_continuous.refl + theorem measure_theory.measure.absolutely_continuous.rfl + theorem measure_theory.measure.absolutely_continuous.trans + def measure_theory.measure.absolutely_continuous + theorem measure_theory.measure.absolutely_continuous_of_eq + theorem measure_theory.measure.preimage_null_of_map_null +/- def measure_theory.to_measurable Modified src/measure_theory/prod.lean + theorem ae_measurable.fst +/- theorem ae_measurable.prod_swap + theorem ae_measurable.snd - theorem measure_theory.lintegral_prod' +/- theorem measure_theory.lintegral_prod +/- theorem measure_theory.lintegral_prod_mul + theorem measure_theory.lintegral_prod_of_measurable + theorem measure_theory.measure.prod_fst_absolutely_continuous + theorem measure_theory.measure.prod_snd_absolutely_continuous Modified src/measure_theory/prod_group.lean Modified src/topology/subset_properties.lean +/- theorem compact_pi_infinite +/- theorem compact_univ_pi 2021-01-30 08:05:04 cf21863 doc(group_theory/order_of_element): Adding doc string (#5936) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean 2021-01-30 06:47:28 cbcbaa0 feat(topology/category): compact hausdorff spaces are reflective in Top (#5955) Show explicitly that `CompHaus_to_Top` is a reflective functor via the Stone-Cech compactification. ESTIMATED CHANGES Modified src/topology/category/CompHaus.lean + def StoneCech_obj + theorem Top_to_CompHaus_obj 2021-01-30 01:48:52 b44e9dd chore(scripts): update nolints.txt (#5965) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-29 21:16:04 686d005 chore(*): fix some "line too long" lint errors by rewriting proofs/statements (#5958) ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/ring_theory/polynomial/basic.lean Modified src/topology/algebra/group.lean 2021-01-29 19:10:11 e8e0526 feat(field_theory/polynomial_galois_group): New file (#5861) This PR adds the file `polynomial_galois_group`. It contains some of the groundwork needed for proving the Abel-Ruffini theorem. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.mem_root_set Modified src/data/polynomial/ring_division.lean + def polynomial.root_set + theorem polynomial.root_set_def + theorem polynomial.root_set_zero Modified src/field_theory/normal.lean +/- theorem normal.of_is_splitting_field Added src/field_theory/polynomial_galois_group.lean + theorem polynomial.gal.card_of_separable + def polynomial.gal.gal_action_hom + theorem polynomial.gal.gal_action_hom_injective + def polynomial.gal.map_roots + theorem polynomial.gal.map_roots_bijective + theorem polynomial.gal.prime_degree_dvd_card + def polynomial.gal.restrict + def polynomial.gal.restrict_dvd + def polynomial.gal.restrict_prod + theorem polynomial.gal.restrict_prod_injective + theorem polynomial.gal.restrict_smul + def polynomial.gal.roots_equiv_roots + def polynomial.gal Modified src/field_theory/splitting_field.lean + theorem polynomial.splitting_field.adjoin_root_set 2021-01-29 17:21:20 62cf420 ci(lint-style): adjust output to integrate with github (#5952) ESTIMATED CHANGES Modified scripts/lint-style.py Modified scripts/lint_style_sanity_test.py 2021-01-29 17:21:18 657cfeb doc(algebra/polynomial/big_operators): add / fix docstrings and lint (#5950) ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean 2021-01-29 17:21:16 aabb843 feat(analysis/normed_space/inner_product): existence of isometry to Euclidean space (#5949) A finite-dimensional inner product space admits an isometry (expressed using the new `linear_isometry_equiv` structure of #5867, cc @urkud) to Euclidean space. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem exists_is_orthonormal_basis' + theorem is_R_or_C.inner_apply - def is_basis.equiv_fun_euclidean + def is_basis.isometry_euclidean_of_orthonormal + def linear_isometry_equiv.of_inner_product_space + theorem orthonormal.comp + theorem orthonormal.inner_left_fintype + theorem orthonormal.inner_right_fintype + theorem pi_Lp.inner_apply Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.equiv_fin_of_dim_eq 2021-01-29 17:21:14 0d18179 chore(analysis/normed_space/multilinear): rename variables (#5929) Use `E` and `E'` for indexed types and `G` and `G'` for `Type*`s. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean +/- def continuous_multilinear_curry_fin0 +/- theorem continuous_multilinear_curry_fin0_apply +/- def continuous_multilinear_curry_fin0_aux +/- theorem continuous_multilinear_curry_fin0_symm_apply +/- def continuous_multilinear_curry_fin1 +/- theorem continuous_multilinear_curry_fin1_apply +/- theorem continuous_multilinear_map.apply_zero_curry0 +/- theorem continuous_multilinear_map.bounds_bdd_below +/- theorem continuous_multilinear_map.bounds_nonempty +/- theorem continuous_multilinear_map.continuous_eval_left +/- def continuous_multilinear_map.curry0 +/- theorem continuous_multilinear_map.curry0_apply +/- theorem continuous_multilinear_map.curry0_norm +/- theorem continuous_multilinear_map.curry0_uncurry0 +/- theorem continuous_multilinear_map.fin0_apply_norm +/- theorem continuous_multilinear_map.mk_pi_field_apply +/- theorem continuous_multilinear_map.mk_pi_field_apply_one_eq_self +/- theorem continuous_multilinear_map.norm_image_sub_le' +/- theorem continuous_multilinear_map.norm_image_sub_le +/- theorem continuous_multilinear_map.norm_restr +/- def continuous_multilinear_map.restr +/- theorem continuous_multilinear_map.uncurry0_apply +/- theorem continuous_multilinear_map.uncurry0_curry0 +/- theorem continuous_multilinear_map.uncurry0_norm +/- theorem multilinear_map.mk_continuous_norm_le +/- theorem multilinear_map.restr_norm_le 2021-01-29 15:28:07 9c5064c chore(linear_algebra/linear_independent): relax requirements to semiring and division_ring (#5953) No lemma names or proofs were changed, this just reordered some lemmas so that they could be put into sections with weaker requirements. ESTIMATED CHANGES Modified src/linear_algebra/linear_independent.lean 2021-01-29 14:19:09 783e11a fix(scripts): fix mixing absolute and relative paths to the linter (#5810) Fix providing either relative or absolute paths to the linter. Make the linter emit outputted paths corresponding to the ones passed on the command line -- relative if relative, absolute if absolute. Also adds a short set of tests. Reported in: https://leanprover.zulipchat.com/#narrow/stream/208328-IMO-grand-challenge/topic/2013.20Q5 (and introduced in #5721). ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/lint-style.py Added scripts/lint_style_sanity_test.py 2021-01-29 11:30:18 41decdb chore(combinatorics/simple_graph/basic): remove classical locale (#5951) This completes the simple graph part of the refactor that removed classical fintype instances. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean +/- theorem simple_graph.adj.card_common_neighbors_lt_degree +/- theorem simple_graph.card_common_neighbors_le_degree_left +/- theorem simple_graph.card_common_neighbors_le_degree_right +/- theorem simple_graph.card_common_neighbors_lt_card_verts +/- theorem simple_graph.degree_lt_card_verts 2021-01-29 11:30:16 15217c2 refactor(topology/local_homeomorph): simplify `prod_trans` (#5915) 10X faster elaboration (pretty-printed) proof term length 14637 -> 2046 Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/topology/local_homeomorph.lean 2021-01-29 09:42:09 bbec099 refactor(data/real/nnreal): shorter proof of `div_lt_iff` (#5945) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/real/nnreal.lean 2021-01-29 06:49:21 145f127 feat(ring_theory/polynomial/chebyshev/defs): Chebyshev polynomials of the second kind (#5793) This will define Chebyshev polynomials of the second kind and introduce some basic properties: - [x] Define Chebyshev polynomials of the second kind. - [x] Relate Chebyshev polynomials of the first and second kind through recursive formulae - [x] Prove trigonometric identity regarding Chebyshev polynomials of the second kind - [x] Compute the derivative of the Chebyshev polynomials of the first kind in terms of the Chebyshev polynomials of the second kind. - [x] Compute the derivative of the Chebyshev polynomials of the second kind in terms of the Chebyshev polynomials of the first kind. ESTIMATED CHANGES Modified docs/references.bib Modified src/analysis/special_functions/trigonometric.lean + theorem chebyshev₂_complex_cos + theorem sin_nat_succ_mul Modified src/ring_theory/polynomial/chebyshev/defs.lean + theorem polynomial.add_one_mul_chebyshev₁_eq_poly_in_chebyshev₂ + theorem polynomial.chebyshev₁_derivative_eq_chebyshev₂ + theorem polynomial.chebyshev₁_eq_X_mul_chebyshev₁_sub_pol_chebyshev₂ + theorem polynomial.chebyshev₁_eq_chebyshev₂_sub_X_mul_chebyshev₂ + theorem polynomial.chebyshev₂_add_two + theorem polynomial.chebyshev₂_eq_X_mul_chebyshev₂_add_chebyshev₁ + theorem polynomial.chebyshev₂_of_two_le + theorem polynomial.chebyshev₂_one + theorem polynomial.chebyshev₂_two + theorem polynomial.chebyshev₂_zero + theorem polynomial.map_chebyshev₂ + theorem polynomial.one_sub_X_pow_two_mul_chebyshev₂_eq_pol_in_chebyshev₁ + theorem polynomial.one_sub_X_pow_two_mul_derivative_chebyshev₁_eq_poly_in_chebyshev₁ 2021-01-29 04:36:40 1edd85c chore(scripts): update nolints.txt (#5947) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-29 01:34:13 4dca6e1 chore(data/fintype/basic): Remove duplicate instance (#5943) We already have `subtype.fintype`, there is no need for `fintype.subtype_of_fintype` which does the same thing ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2021-01-28 23:59:53 69e7f14 chore(combinatorics/simple_graph): generalise decidability proofs (#5938) This generalises the decidable instances so they're more applicable, and also golfs the proofs. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2021-01-28 20:36:43 2cbaa9c feat(data/list/basic): add diff_erase (#5941) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.diff_cons_right + theorem list.diff_erase 2021-01-28 19:15:38 2870212 chore(data/sym2): golf decidability proofs (#5940) This golfs the decidable instances, and removes a redundant one (`from_rel.decidable_as_set` is automatically inferred from `from_rel.decidable_pred`) ESTIMATED CHANGES Modified src/data/sym2.lean 2021-01-28 16:36:05 645dc60 refactor(analysis/calculus/inverse): inverse of C^k functions over R or C (#5926) Some results on the local inverse of smooth functions are currently formulated only for real functions, but they work as well for complex functions. We formulate them uniformly, assuming `is_R_or_C`. ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/mean_value.lean + theorem is_R_or_C.norm_image_sub_le_of_norm_has_fderiv_within_le' Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/basic.lean - theorem has_deriv_at.real_of_complex + theorem is_R_or_C.I_to_complex + theorem is_R_or_C.abs_to_complex + theorem is_R_or_C.conj_to_complex + theorem is_R_or_C.im_to_complex + theorem is_R_or_C.norm_sq_to_complex + theorem is_R_or_C.re_to_complex - theorem times_cont_diff.real_of_complex - theorem times_cont_diff_at.real_of_complex Added src/analysis/complex/real_deriv.lean + theorem has_deriv_at.real_of_complex + theorem times_cont_diff.real_of_complex + theorem times_cont_diff_at.real_of_complex Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/data/complex/is_R_or_C.lean - theorem is_R_or_C.I_to_complex - theorem is_R_or_C.abs_to_complex - theorem is_R_or_C.conj_to_complex - theorem is_R_or_C.im_to_complex - theorem is_R_or_C.norm_sq_to_complex - theorem is_R_or_C.re_to_complex Modified src/geometry/euclidean/basic.lean 2021-01-28 13:17:00 c43c709 fix(data/dfinsupp): fix overly strict type-class arguments (#5935) ESTIMATED CHANGES Modified src/data/dfinsupp.lean +/- theorem monoid_hom.coe_dfinsupp_prod +/- theorem monoid_hom.dfinsupp_prod_apply +/- theorem monoid_hom.map_dfinsupp_prod 2021-01-28 08:12:08 82481e3 feat(analysis/normed_space/inner_product): existence of orthonormal basis (#5734) Define `orthonormal` sets (indexed) of vectors in an inner product space `E`. Show that a finite-dimensional inner product space has an orthonormal basis. Co-authored by: Busiso Chisala ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/group_power/basic.lean + theorem eq_of_pow_two_eq_pow_two Modified src/analysis/normed_space/inner_product.lean + theorem exists_is_orthonormal_basis + theorem exists_is_orthonormal_dense_span + theorem exists_maximal_orthonormal + theorem exists_subset_is_orthonormal_basis + theorem exists_subset_is_orthonormal_dense_span + theorem finsupp.inner_sum + theorem finsupp.sum_inner + theorem inner_self_eq_norm_sq_to_K + def is_basis.equiv_fun_euclidean + theorem is_basis_of_orthonormal_of_card_eq_findim + theorem maximal_orthonormal_iff_dense_span + theorem maximal_orthonormal_iff_is_basis_of_finite_dimensional + theorem maximal_orthonormal_iff_orthogonal_complement_eq_bot + theorem orthonormal.inner_finsupp_eq_zero + theorem orthonormal.inner_left_finsupp + theorem orthonormal.inner_right_finsupp + theorem orthonormal.linear_independent + theorem orthonormal.ne_zero + def orthonormal + theorem orthonormal_Union_of_directed + theorem orthonormal_empty + theorem orthonormal_iff_ite + theorem orthonormal_sUnion_of_directed + theorem orthonormal_subtype_iff_ite + theorem submodule.coe_inner + theorem submodule.inf_orthogonal_eq_bot Modified src/data/complex/is_R_or_C.lean + theorem norm_smul_inv_norm Modified src/data/finsupp/basic.lean +/- theorem finsupp.prod_ite_eq' +/- theorem finsupp.prod_ite_eq + theorem finsupp.sum_ite_self_eq' + theorem finsupp.sum_ite_self_eq 2021-01-28 01:39:54 9545445 chore(scripts): update nolints.txt (#5931) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-27 23:19:08 6585eff feat(archive/imo): formalize IMO 2013 problem Q5 (#5787) ESTIMATED CHANGES Added archive/imo/imo2013_q5.lean + theorem f_pos_of_pos + theorem fixed_point_of_gt_1 + theorem fixed_point_of_pos_nat_pow + theorem fx_gt_xm1 + theorem imo2013_q5 + theorem le_of_all_pow_lt_succ' + theorem le_of_all_pow_lt_succ + theorem pow_f_le_f_pow 2021-01-27 21:59:34 3e59960 feat(ring_theory/nullstellensatz): Classical Nullstellensatz (#5760) This file states and proves Hilbert's classical nullstellensatz for multi-variate polynomials over an algebraically closed field. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/field_theory/algebraic_closure.lean + theorem is_alg_closed.algebra_map_surjective_of_is_integral' Modified src/ring_theory/jacobson.lean Added src/ring_theory/nullstellensatz.lean + theorem mv_polynomial.is_maximal_iff_eq_vanishing_ideal_singleton + theorem mv_polynomial.is_prime.vanishing_ideal_zero_locus + theorem mv_polynomial.le_vanishing_ideal_zero_locus + theorem mv_polynomial.mem_vanishing_ideal_iff + theorem mv_polynomial.mem_vanishing_ideal_singleton_iff + theorem mv_polynomial.mem_zero_locus_iff + def mv_polynomial.point_to_point + theorem mv_polynomial.point_to_point_zero_locus_le + theorem mv_polynomial.radical_le_vanishing_ideal_zero_locus + def mv_polynomial.vanishing_ideal + theorem mv_polynomial.vanishing_ideal_anti_mono + theorem mv_polynomial.vanishing_ideal_empty + theorem mv_polynomial.vanishing_ideal_point_to_point + theorem mv_polynomial.vanishing_ideal_zero_locus_eq_radical + def mv_polynomial.zero_locus + theorem mv_polynomial.zero_locus_anti_mono + theorem mv_polynomial.zero_locus_bot + theorem mv_polynomial.zero_locus_top + theorem mv_polynomial.zero_locus_vanishing_ideal_galois_connection + theorem mv_polynomial.zero_locus_vanishing_ideal_le 2021-01-27 18:19:45 4cc0d52 refactor(data/set/basic): simpler proofs (#5920) This replaces many uses of `simp` and `finish` with direct term proofs to speed up the overall compilation of the file. This PR is WIP in the sense that not all of `set.basic` is converted, but there are no dependencies between the changes so this can be merged at any point. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.ball_empty_iff +/- theorem set.compl_comp_compl +/- theorem set.compl_subset_comm +/- theorem set.compl_subset_compl +/- theorem set.compl_union_self +/- theorem set.diff_subset +/- theorem set.empty_inter +/- theorem set.empty_not_nonempty +/- theorem set.empty_subset +/- theorem set.empty_union +/- theorem set.eq_empty_iff_forall_not_mem +/- theorem set.eq_empty_of_subset_empty +/- theorem set.eq_of_mem_singleton +/- theorem set.eq_of_subset_of_subset +/- theorem set.eq_sep_of_subset +/- theorem set.eq_singleton_iff_unique_mem +/- theorem set.eq_univ_of_univ_subset +/- theorem set.forall_insert_of_forall +/- theorem set.forall_not_of_sep_empty +/- theorem set.forall_of_forall_insert +/- theorem set.insert_eq +/- theorem set.insert_nonempty +/- theorem set.insert_subset_insert +/- theorem set.insert_union +/- theorem set.inter_assoc +/- theorem set.inter_comm +/- theorem set.inter_empty +/- theorem set.inter_eq_self_of_subset_left +/- theorem set.inter_eq_self_of_subset_right +/- theorem set.inter_self +/- theorem set.inter_subset_inter +/- theorem set.inter_subset_left +/- theorem set.inter_subset_right +/- theorem set.mem_insert +/- theorem set.mem_insert_iff +/- theorem set.mem_inter +/- theorem set.mem_of_mem_insert_of_ne +/- theorem set.mem_of_mem_inter_left +/- theorem set.mem_of_mem_inter_right +/- theorem set.mem_of_mem_of_subset +/- theorem set.mem_of_subset_of_mem +/- theorem set.mem_sep_eq +/- theorem set.mem_singleton +/- theorem set.mem_singleton_iff +/- theorem set.mem_singleton_of_eq +/- theorem set.ne_empty_iff_nonempty +/- theorem set.ne_insert_of_not_mem +/- theorem set.nonempty.ne_empty +/- theorem set.nonempty.not_subset_empty +/- theorem set.nonempty_diff +/- theorem set.not_mem_empty +/- theorem set.not_not_mem +/- theorem set.not_subset +/- theorem set.pair_comm +/- theorem set.pair_eq_singleton +/- theorem set.sep_subset +/- theorem set.sep_univ +/- theorem set.set_compr_eq_eq_singleton +/- theorem set.singleton_def +/- theorem set.singleton_subset_iff +/- theorem set.singleton_union + theorem set.subset_iff_inter_eq_left + theorem set.subset_iff_inter_eq_right - theorem set.subset_iff_inter_eq_self +/- theorem set.subset_insert +/- theorem set.subset_inter +/- theorem set.union_assoc +/- theorem set.union_comm +/- theorem set.union_compl_self +/- theorem set.union_empty +/- theorem set.union_insert +/- theorem set.union_self +/- theorem set.union_singleton +/- theorem set.union_subset_union Modified src/logic/basic.lean + theorem and_congr_left' + theorem and_congr_left + theorem and_congr_right' + theorem ball_or_left_distrib + theorem bex_eq_left + theorem bex_or_left_distrib + theorem or_congr_left + theorem or_congr_right 2021-01-27 18:19:43 8af7e08 feat(data/fintype/basic): make subtype_of_fintype computable (#5919) This smokes out a few places downstream that are missing decidability hypotheses needed for the fintype instance to exist. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean Modified src/combinatorics/simple_graph/degree_sum.lean +/- theorem simple_graph.even_card_odd_degree_vertices +/- theorem simple_graph.exists_ne_odd_degree_of_exists_odd_degree +/- theorem simple_graph.odd_card_odd_degree_vertices_ne Modified src/data/fintype/basic.lean Modified src/data/fintype/card.lean Modified src/field_theory/galois.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/subgroup.lean Modified src/group_theory/subgroup.lean +/- theorem subgroup.eq_top_of_card_eq 2021-01-27 18:19:41 f45dee4 feat(algebra/*,linear_algebra/basic,ring_theory/ideal): lemmas about span of finite subsets and nontrivial maximal ideals (#5641) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.mem_span_mul_finite_of_mem_mul + theorem submodule.mem_span_mul_finite_of_mem_span_mul Modified src/algebra/pointwise.lean + theorem finset.subset_mul Modified src/linear_algebra/basic.lean + theorem submodule.mem_span_finite_of_mem_span Modified src/ring_theory/ideal/basic.lean + theorem ring.ne_bot_of_is_maximal_of_not_is_field 2021-01-27 18:19:40 32fdb81 feat(data/zsqrtd/to_real): Add `to_real` (#5640) Also adds `norm_eq_zero`, and replaces some calls to simp with direct lemma applications ESTIMATED CHANGES Modified src/data/zsqrtd/basic.lean + theorem zsqrtd.dmuld + theorem zsqrtd.hom_ext + def zsqrtd.lift + theorem zsqrtd.lift_injective + theorem zsqrtd.norm_eq_zero Modified src/data/zsqrtd/gaussian_int.lean Added src/data/zsqrtd/to_real.lean + theorem zsqrtd.to_real_injective 2021-01-27 16:19:52 1011601 feat(algebra/continued_fractions): add termination iff rat lemmas (#4867) ### What Show that the computation of a continued fraction terminates if and only if we compute the continued fraction of a rational number. ### How 1. Show that every intermediate operation involved in the computation of a continued fraction returns a value that has a rational counterpart. This then shows that a terminating continued fraction corresponds to a rational value. 2. Show that the operations involved in the computation of a continued fraction for rational numbers only return results that can be lifted to the result of the same operations done on an equal value in a suitable linear ordered, archimedean field with a floor function. 3. Show that the continued fraction of a rational number terminates. 4. Set up the needed coercions to express the results above starting from [here](https://github.com/leanprover-community/mathlib/compare/kappelmann_termination_iff_rat?expand=1#diff-1dbcf8473152b2d8fca024352bd899af37669b8af18792262c2d5d6f31148971R129). I did not know where to put these lemmas. Please let me know your opinion. 4. Extract 4 auxiliary lemmas that are not specific to continued fraction but more generally about rational numbers, integers, and natural numbers starting from [here](https://github.com/leanprover-community/mathlib/compare/kappelmann_termination_iff_rat?expand=1#diff-1dbcf8473152b2d8fca024352bd899af37669b8af18792262c2d5d6f31148971R28). Again, I did not know where to put these. Please let me know your opinion. ESTIMATED CHANGES Modified src/algebra/continued_fractions/basic.lean + def generalized_continued_fraction.pair.map - def generalized_continued_fraction.seq.coe_to_seq Modified src/algebra/continued_fractions/computation/basic.lean + def generalized_continued_fraction.int_fract_pair.mapFr Added src/algebra/continued_fractions/computation/terminates_iff_rat.lean + theorem generalized_continued_fraction.coe_of_h_rat_eq + theorem generalized_continued_fraction.coe_of_rat_eq + theorem generalized_continued_fraction.coe_of_s_nth_rat_eq + theorem generalized_continued_fraction.coe_of_s_rat_eq + theorem generalized_continued_fraction.exists_gcf_pair_rat_eq_nth_conts + theorem generalized_continued_fraction.exists_gcf_pair_rat_eq_of_nth_conts_aux + theorem generalized_continued_fraction.exists_rat_eq_nth_convergent + theorem generalized_continued_fraction.exists_rat_eq_nth_denominator + theorem generalized_continued_fraction.exists_rat_eq_nth_numerator + theorem generalized_continued_fraction.exists_rat_eq_of_terminates + theorem generalized_continued_fraction.int_fract_pair.coe_of_rat_eq + theorem generalized_continued_fraction.int_fract_pair.coe_stream_nth_rat_eq + theorem generalized_continued_fraction.int_fract_pair.coe_stream_rat_eq + theorem generalized_continued_fraction.int_fract_pair.exists_nth_stream_eq_none_of_rat + theorem generalized_continued_fraction.int_fract_pair.of_inv_fr_num_lt_num_of_pos + theorem generalized_continued_fraction.int_fract_pair.stream_nth_fr_num_le_fr_num_sub_n_rat + theorem generalized_continued_fraction.int_fract_pair.stream_succ_nth_fr_num_lt_nth_fr_num_rat + theorem generalized_continued_fraction.of_terminates_iff_of_rat_terminates + theorem generalized_continued_fraction.terminates_iff_rat + theorem generalized_continued_fraction.terminates_of_rat 2021-01-27 12:14:38 9adf9bb feat(order/ideal): add partial_order instance to order.ideal (#5909) Add some instances for `order.ideal`, some of them conditional on having extra structure on the carrier preorder `P`: * In all cases, `ideal P` is a partial order. * If `P` has a bottom element, so does `ideal P`. * If `P` has a top element, so does `ideal P`. (Although this could be weekened to `P` being directed.) Also, add some `@[ext]`, `@[simp]`, `@[trans]` lemmas. ESTIMATED CHANGES Modified src/order/ideal.lean + theorem order.ideal.bot_mem + theorem order.ideal.ext + theorem order.ideal.mem_of_mem_of_le + theorem order.ideal.principal_le_iff + theorem order.ideal.sup_mem + theorem order.ideal.sup_mem_iff 2021-01-27 12:14:36 7244b43 refactor(topology/local_homeomorph): simpler proof of `prod_symm` (#5906) 17X smaller proof co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/topology/local_homeomorph.lean 2021-01-27 12:14:34 a859f10 refactor(computability/primrec): simpler proof of `primrec.of_equiv` (#5905) 12X smaller proof term co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/computability/primrec.lean 2021-01-27 12:14:32 35638ed refactor(data/set/basic): simpler proof of `union_subset_iff` (#5904) 12X smaller proof term co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/set/basic.lean 2021-01-27 12:14:30 c64aa13 chore(*): bump to lean-3.26.0 (#5895) ESTIMATED CHANGES Modified leanpkg.toml Modified src/control/traversable/derive.lean Modified src/data/nat/digits.lean Modified src/data/padics/padic_numbers.lean Modified src/logic/nontrivial.lean Modified src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/ring_theory/witt_vector/is_poly.lean Modified src/tactic/abel.lean Modified src/tactic/choose.lean Modified src/tactic/field_simp.lean Modified src/tactic/finish.lean Modified src/tactic/group.lean Modified src/tactic/lint/simp.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_cast.lean Modified src/tactic/norm_num.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/ring.lean Modified src/tactic/simp_rw.lean Modified src/tactic/simpa.lean Modified src/tactic/simps.lean Modified src/tactic/split_ifs.lean Modified src/tactic/squeeze.lean Modified src/tactic/zify.lean Modified test/squeeze.lean 2021-01-27 12:14:28 78a518a feat(measure_theory/independence): define independence of sets of sets, measurable spaces, sets, functions (#5848) This first PR about independence contains definitions, a few lemmas about independence of unions/intersections of sets of sets, and a proof that two measurable spaces are independent iff generating pi-systems are independent (included in this PR to demonstrate usability of the definitions). ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/measure_theory/measure_space.lean + theorem measure_theory.ext_on_measurable_space_of_generate_finite + theorem measure_theory.measure.smul_finite Added src/probability_theory/independence.lean + theorem probability_theory.Indep.Indep_sets + theorem probability_theory.Indep.indep + def probability_theory.Indep + def probability_theory.Indep_fun + def probability_theory.Indep_set + theorem probability_theory.Indep_sets.indep_sets + def probability_theory.Indep_sets + theorem probability_theory.indep.indep_sets + theorem probability_theory.indep.symm + def probability_theory.indep + def probability_theory.indep_fun + theorem probability_theory.indep_of_indep_of_le_left + theorem probability_theory.indep_of_indep_of_le_right + def probability_theory.indep_set + theorem probability_theory.indep_sets.Inter + theorem probability_theory.indep_sets.Union + theorem probability_theory.indep_sets.indep + theorem probability_theory.indep_sets.inter + theorem probability_theory.indep_sets.symm + theorem probability_theory.indep_sets.union + theorem probability_theory.indep_sets.union_iff + def probability_theory.indep_sets + theorem probability_theory.indep_sets_of_indep_sets_of_le_left + theorem probability_theory.indep_sets_of_indep_sets_of_le_right 2021-01-27 08:42:04 e5f9409 refactor(category_theory/abelian): golf `mono_of_kernel_ι_eq_zero` (#5914) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean 2021-01-27 08:41:59 1688b3e refactor(data/complex/exponential): simplify proof of `tan_eq_sin_div_cos` (#5913) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/complex/exponential.lean 2021-01-27 08:41:57 e927930 refactor(data/holor): simp -> refl (#5912) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/holor.lean 2021-01-27 08:41:55 38f6e05 refactor(algebra/category/Group/limits): simp -> refl (#5911) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/algebra/category/Group/limits.lean 2021-01-27 08:41:53 6eae630 refactor(data/real/golden_ratio): simpler proof of `gold_pos` (#5910) 13X smaller (pretty-printed) proof term Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/real/golden_ratio.lean 2021-01-27 08:41:51 e9a1e2b refactor(data/pequiv): simpler proof of `pequiv.of_set_univ` (#5907) 17X smaller proof co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/pequiv.lean +/- theorem pequiv.of_set_univ 2021-01-27 08:41:50 fd55e57 refactor(algebra/group/basic): simp -> rw in `sub_eq_sub_iff_sub_eq_sub` (#5903) co-authors: `lean-gptf`, Yuhuai Wu ESTIMATED CHANGES Modified src/algebra/group/basic.lean 2021-01-27 08:41:48 1cd2286 chore(data/finset/preimage): add missing simp lemmas (#5902) ESTIMATED CHANGES Modified src/data/finset/preimage.lean + theorem finset.preimage_compl + theorem finset.preimage_empty + theorem finset.preimage_inter + theorem finset.preimage_union + theorem finset.preimage_univ 2021-01-27 08:41:46 20d6b6a chore(*): add more simp lemmas, refactor theorems about `fintype.sum` (#5888) * `finset.prod_sum_elim`, `finset.sum_sum_elim`: use `finset.map` instead of `finset.image`; * add `multilinear_map.coe_mk_continuous`, `finset.order_emb_of_fin_mem`, `fintype.univ_sum_type`, `fintype.prod_sum_elim`, `sum.update_elim_inl`, `sum.update_elim_inr`, `sum.update_inl_comp_inl`, `sum.update_inl_comp_inr`, `sum.update_inr_comp_inl`, `sum.update_inr_comp_inr` and `apply` versions of `sum.*_comp_*` lemmas, * move some lemmas about `function.update` from `data.set.function` to `logic.function.basic`; * rename `sum.elim_injective` to `function.injective.sum_elim` * `simps` lemmas for `function.embedding.inl` and `function.embedding.inr`; * for `e : α ≃o β`, simplify `e.to_equiv.symm` to `e.symm_to_equiv`; * add `continuous_multilinear_map.to_multilinear_map_add`, `continuous_multilinear_map.to_multilinear_map_smul`, and `simps` for `continuous_multilinear_map.to_multilinear_map_linear`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/multilinear.lean + theorem multilinear_map.coe_mk_continuous Modified src/data/equiv/basic.lean Modified src/data/finset/sort.lean + theorem finset.order_emb_of_fin_mem Modified src/data/fintype/basic.lean + theorem univ_sum_type Modified src/data/fintype/card.lean + theorem fintype.prod_sum_elim Modified src/data/set/function.lean - theorem function.update_comp_eq_of_injective' - theorem function.update_comp_eq_of_injective Modified src/data/sum.lean + theorem function.injective.sum_elim - theorem sum.elim_injective + theorem sum.update_elim_inl + theorem sum.update_elim_inr + theorem sum.update_inl_apply_inl + theorem sum.update_inl_apply_inr + theorem sum.update_inl_comp_inl + theorem sum.update_inl_comp_inr + theorem sum.update_inr_apply_inl + theorem sum.update_inr_apply_inr + theorem sum.update_inr_comp_inl + theorem sum.update_inr_comp_inr Modified src/linear_algebra/multilinear.lean Modified src/logic/embedding.lean +/- def function.embedding.inl +/- def function.embedding.inr Modified src/logic/function/basic.lean - theorem function.update_comp + theorem function.update_comp_eq_of_forall_ne' + theorem function.update_comp_eq_of_forall_ne + theorem function.update_comp_eq_of_injective' + theorem function.update_comp_eq_of_injective Modified src/order/rel_iso.lean + theorem order_iso.to_equiv_symm Modified src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.to_multilinear_map_add +/- def continuous_multilinear_map.to_multilinear_map_linear + theorem continuous_multilinear_map.to_multilinear_map_smul 2021-01-27 08:41:44 21e9d42 feat(algebra/euclidean_domain): Unify occurences of div_add_mod and mod_add_div (#5884) Adding the corresponding commutative version at several places (euclidean domain, nat, pnat, int) whenever there is the other version. In subsequent PRs other proofs in the library which now use some version of `add_comm, exact div_add_mod` or `add_comm, exact mod_add_div` should be golfed. Trying to address issue #1534 ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.mod_add_div Modified src/data/int/basic.lean + theorem int.div_add_mod Modified src/data/pnat/basic.lean + theorem pnat.div_add_mod +/- theorem pnat.mod_add_div 2021-01-27 08:41:42 688772e refactor(ring_theory/ideal ring_theory/jacobson): allow `ideal` in a `comm_semiring` (#5879) At the moment, `ideal` requires the underlying ring to be a `comm_ring`. This changes in this PR and the underlying ring can now be a `comm_semiring`. There is a discussion about merits and issues in this Zulip chat: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/(comm_)semiring.3A.20examples.3F At the moment, this PR changes the definition and adapts, mostly `ring_theory/jacobson`, to avoid deterministic timeouts. In future PRs, I will start changing hypotheses on lemmas involving `ideal` to use the more general framework. A note: the file `ring_theory/jacobson` might require further improvements. If possible, I would like this change to push through without cluttering it with changes to that file. If there is a way of accepting this change and then proceeding to the changes in `jacobson`, that would be ideal! If it needs to be done at the same time, then so be it! ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean +/- def ideal Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.quotient_map_comp_mk Modified src/ring_theory/ideal/prod.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/jacobson.lean +/- theorem ideal.disjoint_powers_iff_not_mem + theorem ideal.injective_quotient_le_comap_map +/- def ideal.is_jacobson +/- theorem ideal.mv_polynomial.is_jacobson_mv_polynomial_fin +/- theorem ideal.mv_polynomial.quotient_mk_comp_C_is_integral_of_jacobson +/- theorem ideal.polynomial.comp_C_integral_of_surjective_of_jacobson +/- theorem ideal.polynomial.is_integral_localization_map_polynomial_quotient +/- theorem ideal.polynomial.is_jacobson_polynomial_iff_is_jacobson + theorem ideal.polynomial.is_jacobson_polynomial_of_is_jacobson +/- theorem ideal.polynomial.is_maximal_comap_C_of_is_jacobson + theorem ideal.polynomial.is_maximal_comap_C_of_is_maximal +/- theorem ideal.polynomial.jacobson_bot_of_integral_localization +/- theorem ideal.polynomial.quotient_mk_comp_C_is_integral_of_jacobson + theorem ideal.quotient_mk_maps_eq 2021-01-27 08:41:40 b2c5d9b feat(ring_theory/noetherian, linear_algebra/basic): Show that finitely generated submodules are the compact elements in the submodule lattice (#5871) Show that a submodule is finitely generated if and only if it is a compact lattice element. Add lemma showing that any submodule is the supremum of the spans of its elements. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.sup_finset_image Modified src/linear_algebra/basic.lean + theorem submodule.span_eq_supr_of_singleton_spans Modified src/order/compactly_generated.lean + theorem complete_lattice.finset_sup_compact_of_compact Modified src/ring_theory/noetherian.lean + theorem submodule.fg_iff_compact + theorem submodule.singleton_span_is_compact_element 2021-01-27 08:41:39 7f04253 feat(field_theory/adjoin): Generalize alg_hom_mk_adjoin_splits to infinite sets (#5860) This PR uses Zorn's lemma to generalize `alg_hom_mk_adjoin_splits` to infinite sets. The proof is rather long, but I think that the result is worth it. It should allow me to prove that if E/F is any normal extension then any automorphism of F lifts to an automorphism of E. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean +/- theorem intermediate_field.alg_hom_mk_adjoin_splits' + theorem intermediate_field.lifts.eq_of_le + theorem intermediate_field.lifts.exists_lift_of_splits + theorem intermediate_field.lifts.exists_max_three + theorem intermediate_field.lifts.exists_max_two + theorem intermediate_field.lifts.exists_upper_bound + theorem intermediate_field.lifts.le_lifts_of_splits + theorem intermediate_field.lifts.mem_lifts_of_splits + def intermediate_field.lifts.upper_bound_intermediate_field + def intermediate_field.lifts Modified src/field_theory/normal.lean 2021-01-27 08:41:36 e95928c feat(field_theory/normal): Restrict to normal subfield (#5845) Now that we know that splitting fields are normal, it makes sense to move the results of #5562 to `normal.lean`. ESTIMATED CHANGES Modified src/field_theory/normal.lean + def alg_equiv.restrict_normal + theorem alg_equiv.restrict_normal_commutes + def alg_equiv.restrict_normal_hom + theorem alg_equiv.restrict_normal_trans + def alg_hom.restrict_normal + def alg_hom.restrict_normal_aux + theorem alg_hom.restrict_normal_commutes + theorem alg_hom.restrict_normal_comp Modified src/field_theory/splitting_field.lean - def alg_equiv.restict_is_splitting_field_hom - def alg_equiv.restrict_is_splitting_field - theorem alg_equiv.restrict_is_splitting_field_commutes - theorem alg_equiv.restrict_is_splitting_field_trans - def alg_hom.restrict_is_splitting_field - def alg_hom.restrict_is_splitting_field_aux - theorem alg_hom.restrict_is_splitting_field_commutes - theorem alg_hom.restrict_is_splitting_field_comp - theorem is_splitting_field.range_to_alg_hom 2021-01-27 08:41:35 61491ca feat(linear_algebra/matrix): A vector is zero iff its dot product with every vector is zero (#5837) ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean + theorem matrix.dot_product_eq + theorem matrix.dot_product_eq_iff + theorem matrix.dot_product_eq_zero + theorem matrix.dot_product_eq_zero_iff + theorem matrix.dot_product_std_basis_eq_mul + theorem matrix.dot_product_std_basis_one 2021-01-27 08:41:33 31edca8 chore(data/finsupp,data/dfinsupp,algebra/big_operators): add missing lemmas about sums of bundled functions (#5834) This adds missing lemmas about how `{finset,finsupp,dfinsupp}.{prod,sum}` acts on {coercion,application,evaluation} of `{add_monoid_hom,monoid_hom,linear_map}`. Specifically, it: * adds the lemmas: * `monoid_hom.coe_prod` * `monoid_hom.map_dfinsupp_prod` * `monoid_hom.dfinsupp_prod_apply` * `monoid_hom.finsupp_prod_apply` * `monoid_hom.coe_dfinsupp_prod` * `monoid_hom.coe_finsupp_prod` * that are the additive versions of the above for `add_monoid_hom`. * `linear_map.map_dfinsupp_sum` * `linear_map.dfinsupp_sum_apply` * `linear_map.finsupp_sum_apply` * `linear_map.coe_dfinsupp_sum` * `linear_map.coe_finsupp_sum` * Renames `linear_map.finsupp_sum` to `linear_map.map_finsupp_sum` for consistency with `linear_map.map_sum`. * Adds a new `monoid_hom.coe_fn` definition ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem monoid_hom.coe_prod + theorem monoid_hom.finset_prod_apply Modified src/algebra/big_operators/pi.lean - theorem monoid_hom.finset_prod_apply Modified src/algebra/group/pi.lean + def monoid_hom.coe_fn Modified src/data/dfinsupp.lean + theorem monoid_hom.coe_dfinsupp_prod + theorem monoid_hom.dfinsupp_prod_apply + theorem monoid_hom.map_dfinsupp_prod Modified src/data/finsupp/basic.lean + theorem monoid_hom.coe_finsupp_prod + theorem monoid_hom.finsupp_prod_apply Modified src/linear_algebra/basic.lean + theorem linear_map.coe_dfinsupp_sum + theorem linear_map.coe_finsupp_sum + theorem linear_map.dfinsupp_sum_apply - theorem linear_map.finsupp_sum + theorem linear_map.finsupp_sum_apply + theorem linear_map.map_dfinsupp_sum + theorem linear_map.map_finsupp_sum 2021-01-27 08:41:30 aa8980d chore(category_theory/monad): comonadic adjunction (#5770) Defines comonadic adjunctions dual to what's already there ESTIMATED CHANGES Modified src/category_theory/monad/adjunction.lean + def category_theory.comonad.comparison + def category_theory.comonad.comparison_forget 2021-01-27 08:41:28 3b6d6d7 chore(data/fintype/basic): Add simp lemma about finset.univ (#5708) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.univ_filter_exists + theorem finset.univ_filter_mem_range 2021-01-27 08:41:26 00b88eb feat(data/polynomial/denominators): add file denominators (#5587) The main goal of this PR is to establish that `b^deg(f)*f(a/b)` is an expression not involving denominators. The first lemma, `induction_with_nat_degree_le` is an induction principle for polynomials, where the inductive hypothesis has a bound on the degree of the polynomial. This allows to build the proof by tearing apart a polynomial into its monomials, while remembering the overall degree of the polynomial itself. This lemma might be a better fit for the file `data.polynomial.induction`. ESTIMATED CHANGES Added src/data/polynomial/denoms_clearable.lean + theorem denoms_clearable.add + def denoms_clearable + theorem denoms_clearable_C_mul_X_pow + theorem denoms_clearable_nat_degree + theorem denoms_clearable_of_nat_degree_le + theorem denoms_clearable_zero Modified src/data/polynomial/erase_lead.lean + theorem polynomial.induction_with_nat_degree_le 2021-01-27 05:12:41 394d357 refactor(data/nat/factorial): simpler proof of `mul_factorial_pred` (#5917) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/data/nat/factorial.lean 2021-01-27 05:12:39 d41781c refactor(topology/metric_space): simplify `dist_triangle` proofs (#5916) Co-authors: `lean-gptf`, Stanislas Polu ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean 2021-01-27 05:12:37 4e4298e chore(*): split long lines (#5908) ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/category_theory/types.lean +/- theorem category_theory.functor_to_types.hcomp +/- theorem category_theory.functor_to_types.map_comp_apply +/- theorem equiv_equiv_iso_hom +/- theorem equiv_equiv_iso_inv Modified src/computability/tm_computable.lean +/- def turing.evals_to_in_time.refl +/- structure turing.evals_to_in_time +/- def turing.id_computable_in_poly_time +/- structure turing.tm2_computable_in_poly_time +/- def turing.tm2_computable_in_time.to_tm2_computable +/- structure turing.tm2_computable_in_time +/- def turing.tm2_outputs_in_time Modified src/data/fintype/card.lean +/- theorem fin.sum_univ_succ_above Modified src/data/list/basic.lean Modified src/data/list/nodup.lean Modified src/data/list/pairwise.lean +/- theorem list.pw_filter_map Modified src/data/list/perm.lean +/- theorem list.perm.inter_append Modified src/data/list/range.lean Modified src/data/list/sections.lean +/- theorem list.rel_sections Modified src/data/list/sigma.lean +/- theorem list.sizeof_erase_dupkeys +/- theorem list.sizeof_kerase Modified src/data/matrix/basic.lean +/- theorem matrix.col_smul +/- theorem matrix.row_smul +/- theorem matrix.smul_apply +/- theorem matrix.update_column_apply Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.support_sum_monomial_coeff Modified src/data/mv_polynomial/monad.lean +/- theorem mv_polynomial.bind₂_bind₂ +/- theorem mv_polynomial.eval₂_hom_bind₁ +/- theorem mv_polynomial.eval₂_hom_bind₂ Modified src/geometry/manifold/mfderiv.lean +/- theorem has_mfderiv_within_at.has_mfderiv_at +/- def mfderiv_within +/- theorem unique_mdiff_on.inter Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- theorem model_with_corners.to_local_equiv_coe Modified src/group_theory/archimedean.lean Modified src/group_theory/coset.lean Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/algebra/group_completion.lean +/- theorem uniform_space.completion.is_add_group_hom_extension Modified src/topology/algebra/ordered.lean +/- theorem continuous_within_at_Ico_iff_Iio +/- theorem continuous_within_at_Ioo_iff_Iio Modified src/topology/algebra/uniform_group.lean +/- theorem to_uniform_space_eq Modified src/topology/bounded_continuous_function.lean Modified src/topology/constructions.lean +/- theorem prod_generate_from_generate_from_eq Modified src/topology/continuous_on.lean +/- theorem continuous_within_at.tendsto +/- theorem continuous_within_at_iff_continuous_at_restrict Modified src/topology/dense_embedding.lean +/- theorem dense_inducing.tendsto_comap_nhds_nhds Modified src/topology/metric_space/basic.lean +/- theorem metric.closed_ball_subset_closed_ball +/- theorem metric.diam_union Modified src/topology/opens.lean Modified src/topology/order.lean +/- theorem coinduced_le_iff_le_induced Modified src/topology/path_connected.lean +/- theorem joined.mem_path_component +/- theorem path.truncate_one_one +/- theorem path.truncate_zero_zero 2021-01-27 05:12:35 47e2f80 chore(*): Replace integral_domain assumptions with no_zero_divisors (#5877) This removes unnecessary `nontrivial` assumptions, and reduces some `comm_ring` requirements to `comm_semiring`. This also adds some missing `nontrivial` and `no_zero_divisors` instances. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/char_p/basic.lean +/- theorem frobenius_inj Modified src/algebra/opposites.lean Modified src/algebra/polynomial/big_operators.lean +/- theorem polynomial.nat_degree_prod Modified src/data/multiset/basic.lean +/- theorem multiset.prod_ne_zero Modified src/data/polynomial/degree/definitions.lean +/- theorem polynomial.degree_pow +/- theorem polynomial.leading_coeff_X_add_C Modified src/data/quaternion.lean +/- theorem quaternion.conj_fixed +/- theorem quaternion_algebra.conj_fixed Modified src/linear_algebra/linear_independent.lean +/- theorem linear_independent_monoid_hom Modified src/ring_theory/prime.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2021-01-27 01:48:38 19bb470 chore(scripts): update nolints.txt (#5918) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-27 01:48:34 9173005 chore(tactic/finish): Remove broken ifinish (#5897) See https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/intuitionistic.20logic/near/224013270 ESTIMATED CHANGES Modified src/tactic/finish.lean Modified test/finish1.lean 2021-01-27 01:48:32 1ddb93a feat(analysis/normed_space): define linear isometries (#5867) * define `linear_isometry` and `linear_isometry_equiv`; * add `linear_map.ker_eq_bot_of_inverse`; * replace `inv_fun_apply` lemmas with `inv_fun_eq_symm`; * golf some proofs in `linear_algebra/finite_dimensional`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem alg_equiv.inv_fun_apply + theorem alg_equiv.inv_fun_eq_symm Modified src/algebra/module/linear_map.lean - theorem linear_equiv.inv_fun_apply + theorem linear_equiv.inv_fun_eq_symm Modified src/analysis/complex/basic.lean +/- def complex.continuous_linear_map.of_real - theorem complex.continuous_linear_map.of_real_isometry +/- theorem complex.continuous_of_real + theorem complex.isometry_of_real + def complex.linear_isometry.of_real Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/inner_product.lean + theorem im_inner_eq_norm_sub_I_smul_mul_self_sub_norm_add_I_smul_mul_self_div_four + theorem inner_eq_sum_norm_sq_div_four + theorem linear_equiv.coe_isometry_of_inner + def linear_equiv.isometry_of_inner + theorem linear_equiv.isometry_of_inner_to_linear_equiv + theorem linear_isometry.inner_map_map + theorem linear_isometry_equiv.inner_map_map + theorem linear_map.coe_isometry_of_inner + def linear_map.isometry_of_inner + theorem linear_map.isometry_of_inner_to_linear_map + theorem re_inner_eq_norm_add_mul_self_sub_norm_mul_self_sub_norm_mul_self_div_two + theorem re_inner_eq_norm_add_mul_self_sub_norm_sub_mul_self_div_four + theorem re_inner_eq_norm_mul_self_add_norm_mul_self_sub_norm_sub_mul_self_div_two Added src/analysis/normed_space/linear_isometry.lean + theorem linear_isometry.coe_comp + theorem linear_isometry.coe_fn_injective + theorem linear_isometry.coe_id + theorem linear_isometry.coe_mul + theorem linear_isometry.coe_one + theorem linear_isometry.coe_to_continuous_linear_map + theorem linear_isometry.coe_to_linear_map + def linear_isometry.comp + theorem linear_isometry.comp_assoc + theorem linear_isometry.comp_continuous_iff + theorem linear_isometry.comp_id + theorem linear_isometry.diam_image + theorem linear_isometry.diam_range + theorem linear_isometry.dist_map + theorem linear_isometry.ediam_image + theorem linear_isometry.ediam_range + theorem linear_isometry.edist_map + theorem linear_isometry.ext + def linear_isometry.id + theorem linear_isometry.id_comp + theorem linear_isometry.map_add + theorem linear_isometry.map_eq_iff + theorem linear_isometry.map_ne + theorem linear_isometry.map_smul + theorem linear_isometry.map_sub + theorem linear_isometry.map_zero + theorem linear_isometry.nnnorm_map + theorem linear_isometry.norm_map + def linear_isometry.to_continuous_linear_map + theorem linear_isometry.to_linear_map_injective + structure linear_isometry + theorem linear_isometry_equiv.apply_symm_apply + theorem linear_isometry_equiv.coe_inv + theorem linear_isometry_equiv.coe_mk + theorem linear_isometry_equiv.coe_mul + theorem linear_isometry_equiv.coe_one + theorem linear_isometry_equiv.coe_refl + theorem linear_isometry_equiv.coe_symm_to_linear_equiv + theorem linear_isometry_equiv.coe_symm_trans + theorem linear_isometry_equiv.coe_to_linear_equiv + theorem linear_isometry_equiv.coe_trans + theorem linear_isometry_equiv.diam_image + theorem linear_isometry_equiv.dist_map + theorem linear_isometry_equiv.ediam_image + theorem linear_isometry_equiv.edist_map + theorem linear_isometry_equiv.ext + theorem linear_isometry_equiv.map_add + theorem linear_isometry_equiv.map_eq_iff + theorem linear_isometry_equiv.map_eq_zero_iff + theorem linear_isometry_equiv.map_ne + theorem linear_isometry_equiv.map_smul + theorem linear_isometry_equiv.map_sub + theorem linear_isometry_equiv.map_zero + theorem linear_isometry_equiv.nnnorm_map + theorem linear_isometry_equiv.norm_map + def linear_isometry_equiv.of_bounds + def linear_isometry_equiv.refl + theorem linear_isometry_equiv.refl_trans + def linear_isometry_equiv.symm + theorem linear_isometry_equiv.symm_apply_apply + theorem linear_isometry_equiv.symm_symm + theorem linear_isometry_equiv.symm_trans + def linear_isometry_equiv.to_continuous_linear_equiv + def linear_isometry_equiv.to_isometric + theorem linear_isometry_equiv.to_linear_equiv_injective + def linear_isometry_equiv.to_linear_isometry + def linear_isometry_equiv.trans + theorem linear_isometry_equiv.trans_assoc + theorem linear_isometry_equiv.trans_refl + theorem linear_isometry_equiv.trans_symm + structure linear_isometry_equiv Modified src/analysis/normed_space/mazur_ulam.lean - def isometric.to_real_linear_equiv - def isometric.to_real_linear_equiv_of_map_zero - theorem isometric.to_real_linear_equiv_symm_apply + def isometric.to_real_linear_isometry_equiv + def isometric.to_real_linear_isometry_equiv_of_map_zero + theorem isometric.to_real_linear_isometry_equiv_symm_apply Modified src/analysis/normed_space/operator_norm.lean - theorem add_monoid_hom.isometry_of_norm + theorem continuous_linear_map.isometry_iff_norm - theorem continuous_linear_map.isometry_iff_norm_image_eq_norm + theorem linear_isometry.norm_to_continuous_linear_map Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.I_mul_re Modified src/linear_algebra/basic.lean + theorem linear_map.ker_eq_bot_of_inverse Modified src/linear_algebra/finite_dimensional.lean + theorem linear_equiv.coe_of_injective_endo +/- theorem linear_equiv.of_injective_endo_left_inv +/- theorem linear_equiv.of_injective_endo_right_inv - theorem linear_equiv.of_injective_endo_to_fun Modified src/topology/metric_space/isometry.lean + theorem add_monoid_hom.isometry_iff_norm + theorem add_monoid_hom.isometry_of_norm +/- theorem isometric.coe_mul +/- theorem isometric.mul_apply 2021-01-27 01:48:30 1eb1293 feat(archive/imo): formalize IMO 2011 problem Q3 (#5842) ESTIMATED CHANGES Added archive/imo/imo2011_q3.lean + theorem imo2011_q3 2021-01-26 22:43:47 531bcd8 feat(data/real/{nnreal,ennreal}, topology/instances/ennreal): add of_real_(sum/prod/tsum) for nnreal and ennreal (#5896) We remark that if all terms of a real sum are nonnegative, `nnreal.of_real` of the sum is equal to the sum of the `nnreal.of_real`. Idem for `ennreal.of_real`, for products and `tsum`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.of_real_prod_of_nonneg + theorem ennreal.of_real_sum_of_nonneg Modified src/data/real/nnreal.lean + theorem nnreal.of_real_prod_of_nonneg + theorem nnreal.of_real_sum_of_nonneg Modified src/topology/instances/ennreal.lean + theorem ennreal.of_real_tsum_of_nonneg Modified src/topology/instances/nnreal.lean + theorem nnreal.has_sum_of_real_of_nonneg 2021-01-26 22:43:45 8c732b2 feat(data/finset/basic): card_subtype simp lemma (#5894) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_subtype 2021-01-26 16:37:25 547d67f feat(analysis/{analytic,calculus}): an analytic function is strictly differentiable (#5878) ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem formal_multilinear_series.norm_le_div_pow_of_pos_of_lt_radius + theorem has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub + theorem has_fpower_series_on_ball.has_sum_sub + theorem has_fpower_series_on_ball.image_sub_sub_deriv_le + theorem has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O_principal + theorem asymptotics.is_O_with_principal Modified src/analysis/calculus/deriv.lean + theorem has_fpower_series_at.deriv + theorem has_fpower_series_at.has_deriv_at + theorem has_fpower_series_at.has_strict_deriv_at Modified src/analysis/calculus/fderiv.lean + theorem analytic_at.differentiable_at + theorem analytic_at.differentiable_within_at + theorem has_fpower_series_at.differentiable_at + theorem has_fpower_series_at.fderiv + theorem has_fpower_series_at.has_fderiv_at + theorem has_fpower_series_at.has_strict_fderiv_at + theorem has_fpower_series_on_ball.differentiable_on Modified src/data/pi.lean + theorem pi.div_def + theorem subsingleton.pi_single_eq 2021-01-26 04:21:27 44fd23d chore(data/finset): Rename bind to bUnion (#5813) This commit renames `finset.bind` to `finset.bUnion`. While this is the monadic bind operation, conceptually it's doing a bounded union of an indexed family of finite sets. This will help with discoverability of this function. There was a name conflict in `data.finset.lattice` due to this, since there are a number of theorems about the `set` version of `bUnion`, and for these I prefixed the lemmas with `set_`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.card_bUnion + theorem finset.card_bUnion_le - theorem finset.card_bind - theorem finset.card_bind_le + theorem finset.prod_bUnion - theorem finset.prod_bind Modified src/algebra/big_operators/ring.lean Modified src/algebra/monoid_algebra.lean Modified src/category_theory/filtered.lean Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/computability/turing_machine.lean Modified src/data/dfinsupp.lean Modified src/data/finset/basic.lean + theorem finset.bUnion_empty + theorem finset.bUnion_filter_eq_of_maps_to + theorem finset.bUnion_image + theorem finset.bUnion_insert + theorem finset.bUnion_inter + theorem finset.bUnion_mono + theorem finset.bUnion_singleton + theorem finset.bUnion_singleton_eq_self + theorem finset.bUnion_subset_bUnion_of_subset_left + theorem finset.bUnion_val - theorem finset.bind_empty - theorem finset.bind_filter_eq_of_maps_to - theorem finset.bind_image - theorem finset.bind_insert - theorem finset.bind_inter - theorem finset.bind_mono - theorem finset.bind_singleton - theorem finset.bind_singleton_eq_self - theorem finset.bind_subset_bind_of_subset_left - theorem finset.bind_val + theorem finset.disjoint_bUnion_left + theorem finset.disjoint_bUnion_right - theorem finset.disjoint_bind_left - theorem finset.disjoint_bind_right + theorem finset.image_bUnion + theorem finset.image_bUnion_filter_eq - theorem finset.image_bind - theorem finset.image_bind_filter_eq + theorem finset.inter_bUnion - theorem finset.inter_bind + theorem finset.mem_bUnion - theorem finset.mem_bind + theorem finset.product_eq_bUnion - theorem finset.product_eq_bind + theorem finset.sigma_eq_bUnion - theorem finset.sigma_eq_bind + theorem finset.singleton_bUnion - theorem finset.singleton_bind Modified src/data/finset/lattice.lean - theorem finset.bInter_bind - theorem finset.bInter_coe - theorem finset.bInter_finset_image - theorem finset.bInter_insert - theorem finset.bInter_insert_update - theorem finset.bInter_inter - theorem finset.bInter_option_to_finset - theorem finset.bInter_singleton - theorem finset.bUnion_bind - theorem finset.bUnion_coe - theorem finset.bUnion_finset_image - theorem finset.bUnion_insert - theorem finset.bUnion_insert_update - theorem finset.bUnion_option_to_finset - theorem finset.bUnion_preimage_singleton - theorem finset.bUnion_singleton - theorem finset.bUnion_union + theorem finset.infi_bUnion - theorem finset.infi_bind + theorem finset.set_bInter_bUnion + theorem finset.set_bInter_coe + theorem finset.set_bInter_finset_image + theorem finset.set_bInter_insert + theorem finset.set_bInter_insert_update + theorem finset.set_bInter_inter + theorem finset.set_bInter_option_to_finset + theorem finset.set_bInter_singleton + theorem finset.set_bUnion_bUnion + theorem finset.set_bUnion_coe + theorem finset.set_bUnion_finset_image + theorem finset.set_bUnion_insert + theorem finset.set_bUnion_insert_update + theorem finset.set_bUnion_option_to_finset + theorem finset.set_bUnion_preimage_singleton + theorem finset.set_bUnion_singleton + theorem finset.set_bUnion_union + theorem finset.sup_eq_bUnion - theorem finset.sup_eq_bind + theorem finset.supr_bUnion - theorem finset.supr_bind Modified src/data/finset/pi.lean Modified src/data/finsupp/basic.lean Modified src/data/fintype/basic.lean Modified src/data/indicator_function.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.vars_eq_support_bUnion_support - theorem mv_polynomial.vars_eq_support_bind_support Modified src/data/nat/totient.lean Modified src/data/set/finite.lean + theorem finset.coe_bUnion - theorem finset.coe_bind + theorem set.finite_bUnion - theorem set.finite_bind +/- def set.fintype_bUnion - def set.fintype_bind + def set.fintype_set_bUnion Modified src/group_theory/order_of_element.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measure_space.lean Modified src/order/filter/bases.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/polynomial/chebyshev/basic.lean Modified src/ring_theory/polynomial/cyclotomic.lean Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.nth_roots_one_eq_bUnion_primitive_roots' + theorem is_primitive_root.nth_roots_one_eq_bUnion_primitive_roots - theorem is_primitive_root.nth_roots_one_eq_bind_primitive_roots' - theorem is_primitive_root.nth_roots_one_eq_bind_primitive_roots Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean 2021-01-26 01:48:59 01a7cde chore(scripts): update nolints.txt (#5892) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-25 17:49:34 5491c59 feat(data/fintype/basic): add lemmas about finsets and cardinality (#5886) Add lemmas about finsets and cardinality. Part of #5695 in order to prove Hall's marriage theorem. Coauthors: @kmill @b-mehta ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.card_compl_lt_iff_nonempty + theorem finset.card_eq_iff_eq_univ + theorem finset.card_lt_iff_ne_univ + theorem finset.compl_ne_univ_iff_nonempty 2021-01-25 17:49:32 7f25aa7 chore(algebra/group_with_zero): correct instance name (#5885) The argument for this definition is `cancel_monoid_with_zero`, not `comm_cancel_monoid_with_zero`. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean 2021-01-25 17:49:30 3a16e9f feat(data/set/finite): add to_finset lemma (#5883) Add lemma stating that taking to_finset of the union of two sets is the same as taking the union of to_finset of the sets. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.to_finset_union 2021-01-25 17:49:28 ba87647 feat(data/set/finite): add lemma about to_finset of complement of set (#5881) Add lemma stating that taking to_finset of the complement of a set is the same thing as taking the complement of to_finset of the set. ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.to_finset_compl 2021-01-25 17:49:25 7188d80 chore(algebra/pi_tensor_product): Replace use of classical with decidable_eq (#5880) This makes it consistent with `multilinear_map`, which also uses explicit decidability assumptions ESTIMATED CHANGES Modified src/linear_algebra/pi_tensor_product.lean 2021-01-25 17:49:23 1dfa81a feat(analysis/normed_space/inner_product): double orthogonal complement is closure (#5876) Put a submodule structure on the closure (as a set in a topological space) of a submodule of a topological module. Show that in a complete inner product space, the double orthogonal complement of a submodule is its closure. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem submonoid.coe_mul_self_eq Modified src/analysis/normed_space/inner_product.lean + theorem submodule.orthogonal_orthogonal_eq_closure + theorem submodule.orthogonal_orthogonal_monotone Modified src/topology/algebra/module.lean + theorem submodule.closure_smul_self_eq + theorem submodule.closure_smul_self_subset + theorem submodule.is_closed_topological_closure + theorem submodule.submodule_topological_closure + def submodule.topological_closure + theorem submodule.topological_closure_minimal Modified src/topology/algebra/monoid.lean + theorem submonoid.is_closed_topological_closure + theorem submonoid.submonoid_topological_closure + theorem submonoid.top_closure_mul_self_eq + theorem submonoid.top_closure_mul_self_subset + def submonoid.topological_closure + theorem submonoid.topological_closure_minimal 2021-01-25 17:49:21 ee750e3 chore(algebra): a few more `@[mono]` tags (#5874) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem canonically_ordered_semiring.pow_le_pow_of_le_left +/- theorem pow_le_pow_of_le_left Modified src/algebra/ordered_field.lean +/- theorem div_le_div +/- theorem div_le_div_of_le +/- theorem div_le_div_of_le_left 2021-01-25 16:06:54 6d80634 feat(measure_theory/{measure_space, borel_space, integration}): prove ae_measurable for various limits (#5849) For a sequence of `ae_measurable` functions verifying some pointwise property almost everywhere, introduce a sequence of measurable functions verifying the same property and use it to prove ae-measurability of `is_lub`, `is_glb`, `supr`, `infi`, and almost everywhere pointwise limit. ESTIMATED CHANGES Added src/measure_theory/ae_measurable_sequence.lean + theorem ae_seq.ae_seq_eq_fun_ae + theorem ae_seq.ae_seq_eq_fun_of_mem_ae_seq_set + theorem ae_seq.ae_seq_eq_mk_ae + theorem ae_seq.ae_seq_eq_mk_of_mem_ae_seq_set + theorem ae_seq.ae_seq_n_eq_fun_n_ae + theorem ae_seq.ae_seq_set_is_measurable + theorem ae_seq.fun_prop_of_mem_ae_seq_set + theorem ae_seq.measurable + theorem ae_seq.measure_compl_ae_seq_set_eq_zero + theorem ae_seq.mk_eq_fun_of_mem_ae_seq_set + theorem ae_seq.prop_of_mem_ae_seq_set + theorem ae_seq.supr + def ae_seq + def ae_seq_set Modified src/measure_theory/borel_space.lean + theorem ae_measurable.is_glb + theorem ae_measurable.is_lub + theorem ae_measurable_binfi + theorem ae_measurable_bsupr + theorem ae_measurable_infi + theorem ae_measurable_of_tendsto_metric_ae + theorem ae_measurable_supr + theorem measurable_limit_of_tendsto_metric_ae + theorem measurable_of_tendsto_metric_ae Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_liminf_le' + theorem measure_theory.lintegral_supr' Modified src/measure_theory/measure_space.lean + theorem ae_measurable_of_zero_measure + theorem measure_theory.ite_ae_eq_of_measure_compl_zero + theorem measure_theory.ite_ae_eq_of_measure_zero 2021-01-25 14:56:46 d6d4435 chore(archive/sensitivity): split long lines (#5882) ESTIMATED CHANGES Modified archive/sensitivity.lean 2021-01-25 05:26:45 9117ad7 feat(order/atoms): define (co)atomic, (co)atomistic lattices (#5588) Define (co)atomic, (co)atomistic lattices Relate these lattice definitions Provide basic subtype instances ESTIMATED CHANGES Modified src/order/atoms.lean + theorem is_atom.Iic + theorem is_atom.of_is_atom_coe_Iic + theorem is_atom_dual_iff_is_coatom - theorem is_atom_iff_is_coatom_dual + theorem is_atomic_dual_iff_is_coatomic + theorem is_atomic_iff_forall_is_atomic_Iic + theorem is_atomistic_dual_iff_is_coatomistic + theorem is_coatom.Ici + theorem is_coatom.of_is_coatom_coe_Ici +/- theorem is_coatom_bot + theorem is_coatom_dual_iff_is_atom - theorem is_coatom_iff_is_atom_dual + theorem is_coatomic_dual_iff_is_atomic + theorem is_coatomic_iff_forall_is_coatomic_Ici + theorem is_coatomistic_dual_iff_is_atomistic 2021-01-25 04:13:48 87202fe chore(scripts): update nolints.txt (#5873) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-25 01:08:37 507c7ff feat(analysis/specific_limits): formula for `∑' n, n * r ^ n` (#5835) Also prove that `∑' n, n ^ k * r ^ n` is summable for any `k : ℕ`, `∥r∥ < 1`. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.pow +/- theorem asymptotics.is_O_bot + theorem asymptotics.is_O_with.pow' + theorem asymptotics.is_O_with.pow +/- theorem asymptotics.is_O_with_bot + theorem asymptotics.is_o.pow +/- theorem asymptotics.is_o_bot + theorem summable_of_is_O + theorem summable_of_is_O_nat Modified src/analysis/normed_space/basic.lean + theorem nat.norm_cast_le Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/specific_limits.lean + theorem has_sum_coe_mul_geometric_of_norm_lt_1 + theorem is_o_coe_const_pow_of_one_lt + theorem is_o_pow_const_const_pow_of_one_lt + theorem is_o_pow_const_mul_const_pow_const_pow_of_norm_lt + theorem summable_norm_pow_mul_geometric_of_norm_lt_1 + theorem summable_pow_mul_geometric_of_norm_lt_1 + theorem tendsto_pow_const_div_const_pow_of_one_lt + theorem tendsto_pow_const_mul_const_pow_of_abs_lt_one + theorem tsum_coe_mul_geometric_of_norm_lt_1 Modified src/data/nat/basic.lean + theorem nat.rec_add_one + theorem nat.rec_zero Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.nhds_within_Ioi_coe_ne_bot + theorem ennreal.nhds_within_Ioi_zero_ne_bot 2021-01-24 23:21:23 5222db0 chore(linear_algebra/multilinear): Relax ring to semiring, add_comm_group to add_comm_monoid (#5870) ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean 2021-01-24 20:25:01 fbabe42 feat(order/complete_well_founded, data/finset/lattice): introduce compact elements of a complete lattice and characterize compact lattices as those with all elements compact (#5825) Provide a definition of compact elements. Prove the equivalence of two characterizations of compact elements. Add "all elements are compact" to the equivalent characterizations of compact lattices. Introduce an auxiliary lemma about finite sups and directed sets. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Modified src/data/finset/lattice.lean + theorem finset.sup_le_of_le_directed Added src/order/compactly_generated.lean + theorem complete_lattice.compactly_generated_of_well_founded + theorem complete_lattice.is_Sup_finite_compact.is_sup_closed_compact + def complete_lattice.is_Sup_finite_compact + theorem complete_lattice.is_Sup_finite_compact_iff_all_elements_compact + theorem complete_lattice.is_Sup_finite_compact_iff_is_sup_closed_compact + def complete_lattice.is_compact_element + theorem complete_lattice.is_compact_element_iff_le_of_directed_Sup_le + def complete_lattice.is_compactly_generated + theorem complete_lattice.is_sup_closed_compact.well_founded + def complete_lattice.is_sup_closed_compact + theorem complete_lattice.is_sup_closed_compact_iff_well_founded + theorem complete_lattice.well_founded.is_Sup_finite_compact + theorem complete_lattice.well_founded_characterisations + theorem complete_lattice.well_founded_iff_is_Sup_finite_compact Deleted src/order/complete_well_founded.lean - theorem complete_lattice.is_Sup_finite_compact.is_sup_closed_compact - def complete_lattice.is_Sup_finite_compact - theorem complete_lattice.is_Sup_finite_compact_iff_is_sup_closed_compact - theorem complete_lattice.is_sup_closed_compact.well_founded - def complete_lattice.is_sup_closed_compact - theorem complete_lattice.is_sup_closed_compact_iff_well_founded - theorem complete_lattice.well_founded.is_Sup_finite_compact - theorem complete_lattice.well_founded_characterisations - theorem complete_lattice.well_founded_iff_is_Sup_finite_compact 2021-01-24 13:41:30 5db7a18 feat(data/nat/basic): add decidable_exists_lt deciding existence of a natural below a bound satisfying a predicate (#5864) Given a decidable predicate `P` on naturals it is decidable if there is a natural below any bound satisying the `P`. closes #5755 ESTIMATED CHANGES Modified src/data/nat/basic.lean 2021-01-24 10:50:05 49c53d4 feat(measure_theory/lp_space): define Lp, subtype of ae_eq_fun with finite norm (#5853) ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/measure_theory/lp_space.lean + theorem measure_theory.Lp.ae_measurable + theorem measure_theory.Lp.antimono + theorem measure_theory.Lp.coe_fn_add + theorem measure_theory.Lp.coe_fn_mk + theorem measure_theory.Lp.coe_fn_neg + theorem measure_theory.Lp.coe_fn_smul + theorem measure_theory.Lp.coe_fn_sub + theorem measure_theory.Lp.coe_fn_zero + theorem measure_theory.Lp.measurable + theorem measure_theory.Lp.mem_Lp_const + theorem measure_theory.Lp.mem_Lp_const_smul + theorem measure_theory.Lp.mem_Lp_iff_snorm_lt_top + theorem measure_theory.Lp.mem_ℒp + theorem measure_theory.Lp.norm_const_smul + theorem measure_theory.Lp.norm_def + theorem measure_theory.Lp.norm_eq_zero_iff + theorem measure_theory.Lp.norm_neg + theorem measure_theory.Lp.norm_zero + theorem measure_theory.Lp.snorm_lt_top + theorem measure_theory.Lp.snorm_ne_top + def measure_theory.Lp + theorem measure_theory.ae_eq_zero_of_snorm'_eq_zero + theorem measure_theory.coe_nnnorm_ae_le_snorm_ess_sup + theorem measure_theory.lintegral_rpow_nnnorm_eq_rpow_snorm' + theorem measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top + theorem measure_theory.mem_ℒp.add + theorem measure_theory.mem_ℒp.ae_eq + theorem measure_theory.mem_ℒp.coe_fn_to_Lp + theorem measure_theory.mem_ℒp.const_smul + theorem measure_theory.mem_ℒp.integrable + theorem measure_theory.mem_ℒp.mem_ℒp_of_exponent_le + theorem measure_theory.mem_ℒp.neg + theorem measure_theory.mem_ℒp.snorm_lt_top + theorem measure_theory.mem_ℒp.snorm_mk_lt_top + theorem measure_theory.mem_ℒp.snorm_ne_top + theorem measure_theory.mem_ℒp.sub + def measure_theory.mem_ℒp.to_Lp + def measure_theory.mem_ℒp + theorem measure_theory.mem_ℒp_congr_ae + theorem measure_theory.mem_ℒp_const + theorem measure_theory.mem_ℒp_one_iff_integrable + theorem measure_theory.mem_ℒp_zero_iff_ae_measurable + def measure_theory.snorm' + theorem measure_theory.snorm'_add_le + theorem measure_theory.snorm'_add_lt_top_of_le_one + theorem measure_theory.snorm'_congr_ae + theorem measure_theory.snorm'_const' + theorem measure_theory.snorm'_const + theorem measure_theory.snorm'_const_of_probability_measure + theorem measure_theory.snorm'_const_smul + theorem measure_theory.snorm'_eq_zero_iff + theorem measure_theory.snorm'_eq_zero_of_ae_zero' + theorem measure_theory.snorm'_eq_zero_of_ae_zero + theorem measure_theory.snorm'_exponent_zero + theorem measure_theory.snorm'_le_snorm'_mul_rpow_measure_univ + theorem measure_theory.snorm'_le_snorm'_of_exponent_le + theorem measure_theory.snorm'_le_snorm_ess_sup + theorem measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ + theorem measure_theory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le + theorem measure_theory.snorm'_measure_zero_of_exponent_zero + theorem measure_theory.snorm'_measure_zero_of_neg + theorem measure_theory.snorm'_measure_zero_of_pos + theorem measure_theory.snorm'_neg + theorem measure_theory.snorm'_smul_le_mul_snorm' + theorem measure_theory.snorm'_zero' + theorem measure_theory.snorm'_zero + def measure_theory.snorm + theorem measure_theory.snorm_add_le + theorem measure_theory.snorm_add_lt_top + theorem measure_theory.snorm_add_lt_top_of_one_le + theorem measure_theory.snorm_ae_eq_fun + theorem measure_theory.snorm_congr_ae + theorem measure_theory.snorm_const' + theorem measure_theory.snorm_const + theorem measure_theory.snorm_const_smul + theorem measure_theory.snorm_eq_snorm' + theorem measure_theory.snorm_eq_zero_iff + def measure_theory.snorm_ess_sup + theorem measure_theory.snorm_ess_sup_add_le + theorem measure_theory.snorm_ess_sup_congr_ae + theorem measure_theory.snorm_ess_sup_const + theorem measure_theory.snorm_ess_sup_const_smul + theorem measure_theory.snorm_ess_sup_eq_zero_iff + theorem measure_theory.snorm_ess_sup_measure_zero + theorem measure_theory.snorm_ess_sup_zero + theorem measure_theory.snorm_exponent_top + theorem measure_theory.snorm_exponent_zero + theorem measure_theory.snorm_le_snorm_of_exponent_le + theorem measure_theory.snorm_measure_zero + theorem measure_theory.snorm_neg + theorem measure_theory.snorm_zero + theorem measure_theory.zero_mem_ℒp - theorem ℒp_space.ae_eq_zero_of_snorm'_eq_zero - theorem ℒp_space.coe_nnnorm_ae_le_snorm_ess_sup - theorem ℒp_space.lintegral_rpow_nnnorm_eq_rpow_snorm' - theorem ℒp_space.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top - theorem ℒp_space.mem_ℒp.add - theorem ℒp_space.mem_ℒp.ae_eq - theorem ℒp_space.mem_ℒp.const_smul - theorem ℒp_space.mem_ℒp.integrable - theorem ℒp_space.mem_ℒp.mem_ℒp_of_exponent_le - theorem ℒp_space.mem_ℒp.neg - theorem ℒp_space.mem_ℒp.snorm_lt_top - theorem ℒp_space.mem_ℒp.snorm_ne_top - theorem ℒp_space.mem_ℒp.sub - def ℒp_space.mem_ℒp - theorem ℒp_space.mem_ℒp_congr_ae - theorem ℒp_space.mem_ℒp_const - theorem ℒp_space.mem_ℒp_one_iff_integrable - theorem ℒp_space.mem_ℒp_zero_iff_ae_measurable - def ℒp_space.snorm' - theorem ℒp_space.snorm'_add_le - theorem ℒp_space.snorm'_add_lt_top_of_le_one - theorem ℒp_space.snorm'_congr_ae - theorem ℒp_space.snorm'_const' - theorem ℒp_space.snorm'_const - theorem ℒp_space.snorm'_const_of_probability_measure - theorem ℒp_space.snorm'_const_smul - theorem ℒp_space.snorm'_eq_zero_iff - theorem ℒp_space.snorm'_eq_zero_of_ae_zero' - theorem ℒp_space.snorm'_eq_zero_of_ae_zero - theorem ℒp_space.snorm'_exponent_zero - theorem ℒp_space.snorm'_le_snorm'_mul_rpow_measure_univ - theorem ℒp_space.snorm'_le_snorm'_of_exponent_le - theorem ℒp_space.snorm'_le_snorm_ess_sup - theorem ℒp_space.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ - theorem ℒp_space.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le - theorem ℒp_space.snorm'_measure_zero_of_exponent_zero - theorem ℒp_space.snorm'_measure_zero_of_neg - theorem ℒp_space.snorm'_measure_zero_of_pos - theorem ℒp_space.snorm'_neg - theorem ℒp_space.snorm'_smul_le_mul_snorm' - theorem ℒp_space.snorm'_zero' - theorem ℒp_space.snorm'_zero - def ℒp_space.snorm - theorem ℒp_space.snorm_add_le - theorem ℒp_space.snorm_add_lt_top - theorem ℒp_space.snorm_add_lt_top_of_one_le - theorem ℒp_space.snorm_congr_ae - theorem ℒp_space.snorm_const' - theorem ℒp_space.snorm_const - theorem ℒp_space.snorm_const_smul - theorem ℒp_space.snorm_eq_snorm' - theorem ℒp_space.snorm_eq_zero_iff - def ℒp_space.snorm_ess_sup - theorem ℒp_space.snorm_ess_sup_add_le - theorem ℒp_space.snorm_ess_sup_congr_ae - theorem ℒp_space.snorm_ess_sup_const - theorem ℒp_space.snorm_ess_sup_const_smul - theorem ℒp_space.snorm_ess_sup_eq_zero_iff - theorem ℒp_space.snorm_ess_sup_measure_zero - theorem ℒp_space.snorm_ess_sup_zero - theorem ℒp_space.snorm_exponent_top - theorem ℒp_space.snorm_exponent_zero - theorem ℒp_space.snorm_le_snorm_of_exponent_le - theorem ℒp_space.snorm_measure_zero - theorem ℒp_space.snorm_neg - theorem ℒp_space.snorm_zero - theorem ℒp_space.zero_mem_ℒp 2021-01-24 06:50:40 aa744db feat(topology/subset_properties): a locally compact space with second countable topology is sigma compact (#5689) * add `set.subsingleton.induction_on`, `set.Union_eq_univ_iff`, and `set.bUnion_eq_univ_iff`; * make `tactic.interactive.nontrivial` try `apply_instance` before `simp`; * add `dense.inter_nhds_nonempty`; * a subsingleton is compact (lemma for sets, instance for spaces); * in a locally compact space, every point has a compact neighborhood; * a compact space is sigma compact; * a locally compact space with second countable topology is sigma compact; * add `dense.bUnion_uniformity_ball`: the uniform neighborhoods of all points of a dense set cover the whole space Some of these changes are leftovers from a failed attempt to prove a wrong statement. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton.induction_on Modified src/data/set/lattice.lean + theorem set.Union_eq_univ_iff + theorem set.bUnion_eq_univ_iff Modified src/logic/nontrivial.lean Modified src/topology/algebra/group.lean Modified src/topology/basic.lean + theorem dense.inter_nhds_nonempty Modified src/topology/subset_properties.lean + theorem exists_compact_mem_nhds + theorem set.subsingleton.is_compact + theorem sigma_compact_space.of_countable + theorem sigma_compact_space_of_locally_compact_second_countable Modified src/topology/uniform_space/basic.lean + theorem dense.bUnion_uniformity_ball 2021-01-24 03:45:38 f414fca feat(analysis/analytic/composition): filling small holes in existing API (#5822) This PR expands the existing API around the composition of formal multilinear series. Also makes the `finset` argument to `finset.prod_subtype` and `finset.add_subtype` explicit instead of implicit. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean + def continuous_multilinear_map.comp_along_composition + theorem continuous_multilinear_map.comp_along_composition_apply + def continuous_multilinear_map.comp_along_composition_aux + theorem continuous_multilinear_map.comp_along_composition_aux_bound + theorem formal_multilinear_series.apply_composition_single - def formal_multilinear_series.comp_along_composition_multilinear - theorem formal_multilinear_series.comp_along_composition_multilinear_bound + theorem formal_multilinear_series.comp_coeff_one + theorem formal_multilinear_series.comp_continuous_linear_map_apply_composition + theorem formal_multilinear_series.comp_remove_zero +/- theorem formal_multilinear_series.id_comp + theorem formal_multilinear_series.remove_zero_apply_composition + theorem formal_multilinear_series.remove_zero_comp_of_pos Modified src/analysis/calculus/formal_multilinear_series.lean + def formal_multilinear_series.comp_continuous_linear_map + theorem formal_multilinear_series.comp_continuous_linear_map_apply + def formal_multilinear_series.remove_zero + theorem formal_multilinear_series.remove_zero_coeff_succ + theorem formal_multilinear_series.remove_zero_coeff_zero + theorem formal_multilinear_series.remove_zero_of_pos Modified src/combinatorics/composition.lean +/- def composition.blocks_fun + theorem composition.blocks_fun_mem_blocks + theorem composition.eq_ones_iff_le_length + theorem composition.eq_ones_iff_length - theorem composition.eq_single_iff + theorem composition.eq_single_iff_length + theorem composition.ne_single_iff + theorem composition.one_le_blocks_fun Modified src/data/fintype/basic.lean + theorem fintype.card_eq_one_of_forall_eq Modified src/data/fintype/card.lean + theorem finset.prod_to_finset_eq_subtype Modified src/ring_theory/integral_domain.lean 2021-01-24 02:20:04 160d243 chore(scripts): update nolints.txt (#5865) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-23 13:02:18 8da574f feat(algebra/pointwise): a lemma about pointwise addition/multiplication of bdd_above sets (#5859) ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.bdd_above_mul 2021-01-23 13:02:16 3a136f8 refactor(analysis/analytic/composition): extend definition, extract a lemma from a proof (#5850) Extract a standalone lemma of the proof that the composition of two analytic functions is well-behaved, and extend a little bit the definition of the sets which are involved in the corresponding change of variables. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean +/- def formal_multilinear_series.comp_change_of_variables + theorem formal_multilinear_series.comp_change_of_variables_sum +/- def formal_multilinear_series.comp_partial_sum_source +/- def formal_multilinear_series.comp_partial_sum_target +/- def formal_multilinear_series.comp_partial_sum_target_set +/- theorem formal_multilinear_series.mem_comp_partial_sum_source_iff +/- theorem formal_multilinear_series.mem_comp_partial_sum_target_iff 2021-01-23 11:06:24 74760f2 chore(set_theory/ordinal): use rel_iso notation in ordinal (#5857) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean +/- def ordinal.rel_iso_out 2021-01-23 07:40:00 013b902 feat(order/rel_iso): generalise several lemmas to assume only has_le not preorder (#5858) ESTIMATED CHANGES Modified src/order/rel_iso.lean +/- theorem order_iso.coe_to_order_embedding +/- def order_iso.to_order_embedding 2021-01-23 02:17:47 b0e874e chore(scripts): update nolints.txt (#5856) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-22 21:50:00 04972f6 docs(undergrad.yaml): update with #5724 and #5788 (#5855) Add results from a couple of recent PRs. Also correct an apparent oversight from the translation of the file. ESTIMATED CHANGES Modified docs/undergrad.yaml 2021-01-22 17:20:38 3250fc3 feat(analysis/mean_inequalities, measure_theory/lp_space): extend mem_Lp.add to all p in ennreal (#5828) Show `(a ^ q + b ^ q) ^ (1/q) ≤ (a ^ p + b ^ p) ^ (1/p)` for `a,b : ennreal` and `0 < p <= q`. Use it to show that for `p <= 1`, if measurable functions `f` and `g` are in Lp, `f+g` is also in Lp (the case `1 <= p` is already done). ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.add_rpow_le_rpow_add + theorem ennreal.rpow_add_le_add_rpow + theorem ennreal.rpow_add_rpow_le + theorem ennreal.rpow_add_rpow_le_add Modified src/analysis/special_functions/pow.lean + theorem ennreal.div_rpow_of_nonneg + theorem ennreal.le_rpow_self_of_one_le + theorem ennreal.rpow_le_self_of_le_one Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_count' + theorem measure_theory.lintegral_count Modified src/measure_theory/lp_space.lean +/- theorem ℒp_space.mem_ℒp.add +/- theorem ℒp_space.mem_ℒp.sub + theorem ℒp_space.snorm'_add_lt_top_of_le_one + theorem ℒp_space.snorm_add_lt_top + theorem ℒp_space.snorm_add_lt_top_of_one_le 2021-01-22 16:01:54 f48ce7e feat(algebra/lie/basic): define the radical of a Lie algebra and prove it is solvable (#5833) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + def lie_algebra.radical +/- theorem lie_ideal.derived_series_add_eq_bot + theorem lie_ideal.of_bot_eq_bot + theorem lie_ideal.unique_of_bot +/- theorem lie_submodule.coe_to_submodule +/- theorem lie_submodule.coe_to_submodule_eq_iff +/- theorem lie_submodule.ext +/- theorem lie_submodule.mem_carrier +/- theorem lie_submodule.mem_coe +/- theorem lie_submodule.mem_coe_submodule + theorem lie_submodule.of_bot_eq_bot + theorem lie_submodule.unique_of_bot + theorem lie_submodule.zero_mem 2021-01-22 12:52:31 cb618e0 feat(analysis/analytic): a continuous linear map defines an analytic function (#5840) Also add convenience lemmas with conclusion `radius = ⊤`. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem formal_multilinear_series.radius_eq_top_of_eventually_eq_zero + theorem formal_multilinear_series.radius_eq_top_of_forall_image_add_eq_zero + theorem formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O Added src/analysis/analytic/linear.lean + def continuous_linear_map.fpower_series + theorem continuous_linear_map.fpower_series_apply_add_two + theorem continuous_linear_map.fpower_series_radius Modified src/data/real/ennreal.lean + theorem ennreal.eq_top_of_forall_nnreal_le 2021-01-22 12:52:30 faba9ce chore(algebra/group_power): generalize `semiring` version of Bernoulli's inequality (#5831) Now `one_add_mul_le_pow'` assumes `0 ≤ a * a`, `0 ≤ (1 + a) * (1 + a)`, and `0 ≤ 2 + a`. Also add a couple of convenience lemmas. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/group_power/lemmas.lean + theorem nat.cast_le_pow_div_sub + theorem nat.cast_le_pow_sub_div_sub +/- theorem one_add_mul_le_pow' +/- theorem one_add_mul_le_pow + theorem one_add_mul_sub_le_pow - theorem one_add_sub_mul_le_pow 2021-01-22 12:52:28 0feb1d2 feat(measure_theory/interval_integral) : add integration by parts (#5724) A direct application of FTC-2 for interval_integral. ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_congr + theorem interval_integral.integral_deriv_mul_eq_sub + theorem interval_integral.integral_mul_deriv_eq_deriv_mul Modified src/measure_theory/measure_space.lean + theorem measure_theory.self_mem_ae_restrict 2021-01-22 12:52:26 de10203 feat(order/modular_lattice): define modular lattices (#5564) Defines modular lattices Defines the diamond isomorphisms in a modular lattice Places `is_modular_lattice` instances on a `distrib_lattice`, the lattice of `subgroup`s of a `comm_group`, and the lattice of `submodule`s of a `module`. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.mem_sup' + theorem subgroup.mem_sup Modified src/linear_algebra/basic.lean Modified src/order/atoms.lean + theorem is_compl.is_atom_iff_is_coatom + theorem is_compl.is_coatom_iff_is_atom Added src/order/modular_lattice.lean + def inf_Icc_order_iso_Icc_sup + theorem inf_sup_assoc_of_le + def is_compl.Iic_order_iso_Ici + theorem is_modular_lattice.sup_inf_sup_assoc + theorem is_modular_lattice_iff_sup_inf_sup_assoc + theorem sup_inf_assoc_of_le 2021-01-22 09:40:49 38ae9b3 chore(data/nat/basic): reuse a proof, drop a duplicate (#5836) Drop `nat.div_mul_le_self'`, use `nat.div_mul_le_self` instead. ESTIMATED CHANGES Modified src/data/nat/basic.lean - theorem nat.div_mul_le_self' 2021-01-22 07:39:51 8b4c455 feat(data/polynomial/algebra_map): aeval_map (#5843) Proves `aeval_map`, which relates `aeval` within an `is_scalar_tower`. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_map 2021-01-22 06:16:16 bef50a4 feat(field_theory/minpoly): Minimal polynomials of degree one (#5844) If the minimal polynomial has degree one then the element in question lies in the base ring. ESTIMATED CHANGES Modified src/field_theory/minpoly.lean + theorem minpoly.eq_zero + theorem minpoly.mem_range_of_degree_eq_one 2021-01-22 04:19:57 6958d8c feat(topology/metric_space/{basic,emetric_space}): product of balls of the same size (#5846) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem ball_prod_same + theorem closed_ball_prod_same Modified src/topology/metric_space/emetric_space.lean + theorem emetric.ball_prod_same + theorem emetric.closed_ball_prod_same 2021-01-22 02:55:27 244b3ed chore(scripts): update nolints.txt (#5841) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-21 23:47:37 c681f48 chore(analysis/analytic/composition): minor golfing (#5839) ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean 2021-01-21 23:47:32 228c00b feat(computability/language): le on languages (#5704) ESTIMATED CHANGES Modified src/computability/language.lean +/- theorem language.add_self + theorem language.add_supr + theorem language.le_add_congr + theorem language.le_iff + theorem language.le_mul_congr + theorem language.mem_add + theorem language.mem_mul + theorem language.mem_one + theorem language.mem_star + theorem language.mul_self_star_comm + theorem language.mul_supr + theorem language.one_add_self_mul_star_eq_star + theorem language.one_add_star_mul_self_eq_star + theorem language.star_eq_supr_pow + theorem language.star_mul_le_left_of_mul_le_left + theorem language.star_mul_le_right_of_mul_le_right + theorem language.supr_add + theorem language.supr_mul Modified src/order/complete_lattice.lean + theorem sup_supr + theorem supr_sup 2021-01-21 20:47:04 b2ca761 chore(algebra/group_power): add `(a+b)^2=a^2+2ab+b^2` (#5838) Also generalize 2 lemmas from `comm_semiring` to `semiring`. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem add_pow_two Modified src/algebra/ring/basic.lean +/- theorem dvd_add 2021-01-21 18:59:17 fac0f25 fix(tactic/default): make field_simp work with import tactic (#5832) ESTIMATED CHANGES Modified src/tactic/default.lean 2021-01-21 14:01:20 b52b304 feat(algebra/lie/basic): show `I + J` is solvable if Lie ideals `I`, `J` are solvable (#5819) The key result is `lie_algebra.is_solvable_add` ESTIMATED CHANGES Modified src/algebra/lie/basic.lean +/- def lie_algebra.derived_series +/- def lie_algebra.derived_series_of_ideal +/- theorem lie_algebra.derived_series_of_ideal_add + theorem lie_algebra.derived_series_of_ideal_add_le_add +/- theorem lie_algebra.derived_series_of_ideal_antimono +/- theorem lie_algebra.derived_series_of_ideal_le_self +/- theorem lie_algebra.derived_series_of_ideal_mono +/- theorem lie_algebra.derived_series_of_ideal_succ_le + theorem lie_ideal.derived_series_add_eq_bot +/- def lie_module.lower_central_series + theorem lie_module.lower_central_series_succ + theorem lie_module.lower_central_series_zero Modified src/order/preorder_hom.lean + theorem preorder_hom.iterate_sup_le_sup_iff 2021-01-21 11:18:02 3ef8281 fix(group_theory/group_action/defs): fix minor typo (#5827) heirarchy -> hierarchy ESTIMATED CHANGES Modified src/group_theory/group_action/defs.lean 2021-01-21 11:17:59 b3a2112 chore(algebra/group/conj): move `conj_injective` and use existing proofs (#5798) ESTIMATED CHANGES Modified src/algebra/group/conj.lean + theorem conj_injective Modified src/group_theory/order_of_element.lean - theorem conj_injective 2021-01-21 11:17:58 d66d563 feat(measure_theory/interval_integral): FTC-2 for the open set (#5733) A follow-up to #4945. I replaced `integral_eq_sub_of_has_deriv_at'` with a stronger version that holds for functions that have a derivative on an `Ioo` (as opposed to an `Ico`). Inspired by [this](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/FTC-2.20on.20open.20set/near/222177308) conversation on Zulip. I also emended docstrings to reflect changes made in #5647. ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean 2021-01-21 08:15:25 ce9bc68 feat(ring_theory/polynomial): symmetric polynomials and elementary symmetric polynomials (#5788) Define symmetric polynomials and elementary symmetric polynomials, and prove some basic facts about them. ESTIMATED CHANGES Modified src/data/finset/powerset.lean + theorem finset.powerset_len_zero Added src/ring_theory/polynomial/symmetric.lean + def mv_polynomial.esymm + theorem mv_polynomial.esymm_eq_sum_monomial + theorem mv_polynomial.esymm_eq_sum_subtype + theorem mv_polynomial.esymm_is_symmetric + theorem mv_polynomial.esymm_zero + theorem mv_polynomial.is_symmetric.C + theorem mv_polynomial.is_symmetric.add + theorem mv_polynomial.is_symmetric.map + theorem mv_polynomial.is_symmetric.mul + theorem mv_polynomial.is_symmetric.neg + theorem mv_polynomial.is_symmetric.one + theorem mv_polynomial.is_symmetric.smul + theorem mv_polynomial.is_symmetric.sub + theorem mv_polynomial.is_symmetric.zero + def mv_polynomial.is_symmetric + theorem mv_polynomial.map_esymm + theorem mv_polynomial.rename_esymm 2021-01-21 02:18:43 a19e48b chore(scripts): update nolints.txt (#5826) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-20 22:33:10 b2d95c0 feat(data/nat/modeq): Generalised version of the Chinese remainder theorem (#5683) That allows the moduli to not be coprime, assuming the necessary condition. Old crt is now in terms of this one ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.gcd_a_zero_left + theorem euclidean_domain.gcd_b_zero_left Modified src/data/int/basic.lean + theorem int.sub_div_of_dvd + theorem int.sub_div_of_dvd_sub Modified src/data/int/gcd.lean + theorem nat.gcd_a_zero_left + theorem nat.gcd_a_zero_right + theorem nat.gcd_b_zero_left + theorem nat.gcd_b_zero_right Modified src/data/nat/gcd.lean + theorem nat.gcd_eq_zero_iff + theorem nat.lcm_ne_zero Modified src/data/nat/modeq.lean + def nat.modeq.chinese_remainder' + theorem nat.modeq.modeq_one 2021-01-20 19:25:37 8b6f541 feat(field_theory/normal): Splitting field is normal (#5768) Proves that splitting fields are normal. ESTIMATED CHANGES Modified src/field_theory/normal.lean + theorem normal.of_is_splitting_field 2021-01-20 16:12:42 7c89265 chore(data/list/range): Add range_zero and rename range_concat to range_succ (#5821) The name `range_concat` was derived from `range'_concat`, where there are multiple possible expansions for `range' s n.succ`. For `range` there is only one choice, and naming the lemma after the result rather than the statement makes it harder to find. ESTIMATED CHANGES Modified src/computability/partrec.lean Modified src/computability/primrec.lean Modified src/data/list/range.lean - theorem list.range_concat + theorem list.range_succ + theorem list.range_zero Modified src/data/multiset/range.lean 2021-01-20 14:40:22 2ec396a chore(data/dfinsupp): add `dfinsupp.prod_comm` (#5817) This is the same lemma as `finsupp.prod_comm` but for dfinsupp ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.prod_comm 2021-01-20 11:51:00 9cdffe9 refactor(data/fin): shorter proof of `mk.inj_iff` (#5811) Co-authors: `lean-gptf`, Yuhuai Wu ESTIMATED CHANGES Modified src/data/fin.lean 2021-01-20 11:50:58 c700791 feat(data/list/range): nth_le_fin_range (#5456) ESTIMATED CHANGES Modified src/data/list/range.lean + theorem list.nth_le_fin_range + theorem list.nth_le_range' 2021-01-20 11:50:56 9ae3317 feat(data/fin): add_comm_monoid and simp lemmas (#5010) Provide `add_comm_monoid` for `fin (n + 1)`, which makes proofs that have to do with `bit0`, `bit1`, and `nat.cast` and related happy. Provide the specialized lemmas as simp lemmas. Also provide various simp lemmas about multiplication, but without the associated `comm_monoid`. ESTIMATED CHANGES Modified src/data/fin.lean Modified src/data/zmod/basic.lean - def fin.add_comm_semigroup 2021-01-20 09:51:08 a7a4f34 feat(algebraic_geometry/is_open_comap_C): add file is_open_comap_C, prove that Spec R[x] \to Spec R is an open map (#5693) This file is the first part of a proof of Chevalley's Theorem. It contains a proof that the morphism Spec R[x] \to Spec R is open. In a later PR, I hope to prove that, under the same morphism, the image of a closed set is constructible. ESTIMATED CHANGES Added src/algebraic_geometry/is_open_comap_C.lean + theorem algebraic_geometry.polynomial.comap_C_mem_image_of_Df + def algebraic_geometry.polynomial.image_of_Df + theorem algebraic_geometry.polynomial.image_of_Df_eq_comap_C_compl_zero_locus + theorem algebraic_geometry.polynomial.is_open_image_of_Df + theorem algebraic_geometry.polynomial.is_open_map_comap_C Modified src/algebraic_geometry/prime_spectrum.lean + theorem prime_spectrum.is_open_basic_open + theorem prime_spectrum.mem_compl_zero_locus_iff_not_mem Modified src/data/polynomial/coeff.lean + theorem polynomial.exists_coeff_not_mem_C_inverse + theorem polynomial.mem_span_C_coeff + theorem polynomial.span_le_of_coeff_mem_C_inverse Modified src/ring_theory/polynomial/basic.lean + theorem ideal.is_integral_domain_map_C_quotient + theorem ideal.is_prime_map_C_of_is_prime 2021-01-20 08:32:57 0c57d1e feat(category_theory/monad): algebras for the coproduct monad (#5679) WIP, I'll fix it up when the dependent PRs merge - [x] depends on: #5674 - [x] depends on: #5677 - [x] depends on: #5678 ESTIMATED CHANGES Added src/category_theory/monad/products.lean + def category_theory.algebra_equiv_under + def category_theory.algebra_to_under + def category_theory.coalgebra_equiv_over + def category_theory.coalgebra_to_over + def category_theory.over_to_coalgebra + def category_theory.under_to_algebra 2021-01-20 06:40:59 e41b917 feat(char_p/quotient): Add a lemma to inherit char_p from the underlying ring (#5809) ESTIMATED CHANGES Modified src/algebra/char_p/quotient.lean + theorem char_p.quotient' 2021-01-20 06:40:57 385173d feat(ring_theory/ideal/operations): generalize quotient of algebras (#5802) I generalize #5703 (that was merged earlier today... sorry for that, I should have thought more carefully about it) to be able to work with `S/I` as an `R`-algebra, where `S` is an `R`-algebra. (In #5703 only `R/I` was considered.) The proofs are the same. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.quotient.alg_map_eq +/- def ideal.quotient.mkₐ +/- theorem ideal.quotient.mkₐ_eq_mk +/- theorem ideal.quotient.mkₐ_ker +/- theorem ideal.quotient.mkₐ_surjective +/- theorem ideal.quotient.mkₐ_to_ring_hom 2021-01-20 06:40:55 31fd5b5 feat(category_theory/limits): preserve monomorphisms (#5801) A functor which preserves pullbacks also preserves monomorphisms. ESTIMATED CHANGES Added src/category_theory/limits/constructions/epi_mono.lean + theorem category_theory.reflects_mono 2021-01-20 04:42:11 a3ef65d feat(algebra/lie/basic): additional lemmas concerning `lie_algebra.derived_series_of_ideal` (#5815) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_algebra.derived_series_of_ideal_add + theorem lie_algebra.derived_series_of_ideal_antimono +/- theorem lie_algebra.derived_series_of_ideal_le + theorem lie_algebra.derived_series_of_ideal_le_self + theorem lie_algebra.derived_series_of_ideal_mono +/- theorem lie_algebra.derived_series_of_ideal_succ_le 2021-01-20 03:20:26 b1d5673 chore(scripts): update nolints.txt (#5816) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-20 00:07:09 d7a8709 chore(algebra/group/hom): Add `mk_coe` lemmas (#5812) These are the counterparts to the `coe_mk` lemmas. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.mk_coe Modified src/algebra/group/hom.lean + theorem monoid_hom.mk_coe + theorem monoid_with_zero_hom.mk_coe + theorem mul_hom.mk_coe + theorem one_hom.mk_coe Modified src/algebra/module/linear_map.lean + theorem linear_map.mk_coe Modified src/algebra/ring/basic.lean + theorem ring_hom.mk_coe 2021-01-19 21:59:16 b121429 feat(measure_theory/lp_space): extend the definition of Lp seminorm to p ennreal (#5808) Rename the seminorm with real exponent to `snorm'`, introduce `snorm_ess_sup` for `L\infty`, equal to the essential supremum of the norm. ESTIMATED CHANGES Modified src/measure_theory/ess_sup.lean +/- theorem ennreal.ae_le_ess_sup +/- theorem ennreal.ess_sup_add_le +/- theorem ennreal.ess_sup_const_mul + theorem ennreal.ess_sup_eq_zero_iff - theorem ess_sup_eq_zero_iff Modified src/measure_theory/lp_space.lean + theorem ℒp_space.ae_eq_zero_of_snorm'_eq_zero - theorem ℒp_space.ae_eq_zero_of_snorm_eq_zero + theorem ℒp_space.coe_nnnorm_ae_le_snorm_ess_sup + theorem ℒp_space.lintegral_rpow_nnnorm_eq_rpow_snorm' - theorem ℒp_space.lintegral_rpow_nnnorm_eq_rpow_snorm + theorem ℒp_space.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top - theorem ℒp_space.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top +/- theorem ℒp_space.mem_ℒp.add +/- theorem ℒp_space.mem_ℒp.ae_eq +/- theorem ℒp_space.mem_ℒp.const_smul +/- theorem ℒp_space.mem_ℒp.integrable +/- theorem ℒp_space.mem_ℒp.mem_ℒp_of_exponent_le +/- theorem ℒp_space.mem_ℒp.neg +/- theorem ℒp_space.mem_ℒp.snorm_lt_top +/- theorem ℒp_space.mem_ℒp.snorm_ne_top +/- theorem ℒp_space.mem_ℒp.sub +/- def ℒp_space.mem_ℒp +/- theorem ℒp_space.mem_ℒp_congr_ae +/- theorem ℒp_space.mem_ℒp_const - theorem ℒp_space.mem_ℒp_const_of_ne_zero - theorem ℒp_space.mem_ℒp_const_of_nonneg - theorem ℒp_space.mem_ℒp_of_snorm_lt_top + theorem ℒp_space.mem_ℒp_zero_iff_ae_measurable + def ℒp_space.snorm' + theorem ℒp_space.snorm'_add_le + theorem ℒp_space.snorm'_congr_ae + theorem ℒp_space.snorm'_const' + theorem ℒp_space.snorm'_const + theorem ℒp_space.snorm'_const_of_probability_measure + theorem ℒp_space.snorm'_const_smul + theorem ℒp_space.snorm'_eq_zero_iff + theorem ℒp_space.snorm'_eq_zero_of_ae_zero' + theorem ℒp_space.snorm'_eq_zero_of_ae_zero + theorem ℒp_space.snorm'_exponent_zero + theorem ℒp_space.snorm'_le_snorm'_mul_rpow_measure_univ + theorem ℒp_space.snorm'_le_snorm'_of_exponent_le + theorem ℒp_space.snorm'_le_snorm_ess_sup + theorem ℒp_space.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ + theorem ℒp_space.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le + theorem ℒp_space.snorm'_measure_zero_of_exponent_zero + theorem ℒp_space.snorm'_measure_zero_of_neg + theorem ℒp_space.snorm'_measure_zero_of_pos + theorem ℒp_space.snorm'_neg + theorem ℒp_space.snorm'_smul_le_mul_snorm' + theorem ℒp_space.snorm'_zero' + theorem ℒp_space.snorm'_zero +/- def ℒp_space.snorm +/- theorem ℒp_space.snorm_add_le +/- theorem ℒp_space.snorm_congr_ae +/- theorem ℒp_space.snorm_const' +/- theorem ℒp_space.snorm_const - theorem ℒp_space.snorm_const_of_probability_measure +/- theorem ℒp_space.snorm_const_smul + theorem ℒp_space.snorm_eq_snorm' +/- theorem ℒp_space.snorm_eq_zero_iff - theorem ℒp_space.snorm_eq_zero_of_ae_zero' - theorem ℒp_space.snorm_eq_zero_of_ae_zero + def ℒp_space.snorm_ess_sup + theorem ℒp_space.snorm_ess_sup_add_le + theorem ℒp_space.snorm_ess_sup_congr_ae + theorem ℒp_space.snorm_ess_sup_const + theorem ℒp_space.snorm_ess_sup_const_smul + theorem ℒp_space.snorm_ess_sup_eq_zero_iff + theorem ℒp_space.snorm_ess_sup_measure_zero + theorem ℒp_space.snorm_ess_sup_zero + theorem ℒp_space.snorm_exponent_top +/- theorem ℒp_space.snorm_exponent_zero - theorem ℒp_space.snorm_le_snorm_mul_rpow_measure_univ +/- theorem ℒp_space.snorm_le_snorm_of_exponent_le + theorem ℒp_space.snorm_measure_zero - theorem ℒp_space.snorm_measure_zero_of_exponent_zero - theorem ℒp_space.snorm_measure_zero_of_neg - theorem ℒp_space.snorm_measure_zero_of_pos +/- theorem ℒp_space.snorm_neg - theorem ℒp_space.snorm_smul_le_mul_snorm - theorem ℒp_space.snorm_zero' +/- theorem ℒp_space.snorm_zero + theorem ℒp_space.zero_mem_ℒp - theorem ℒp_space.zero_mem_ℒp_of_nonneg - theorem ℒp_space.zero_mem_ℒp_of_pos 2021-01-19 18:42:43 9d14a5f chore(order/filter/basic): add `eventually_eq.rfl` and `eventually_le.rfl` (#5805) ESTIMATED CHANGES Modified src/analysis/asymptotic_equivalent.lean Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.ae_eq_refl Modified src/order/filter/basic.lean + theorem filter.eventually_eq.rfl + theorem filter.eventually_le.rfl Modified src/order/liminf_limsup.lean 2021-01-19 18:42:41 21b0b01 feat(analysis/normed_space,topology/metric_space): distance between diagonal vectors (#5803) Add formulas for (e|nn|)dist between `λ _, a` and `λ _, b` as well as `∥(λ _, a)∥` and `nnnorm (λ _, a)`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem pi_nnnorm_const + theorem pi_norm_const Modified src/data/finset/basic.lean + theorem finset.nonempty.forall_const Modified src/data/finset/lattice.lean + theorem finset.sup_const Modified src/topology/metric_space/basic.lean + theorem dist_pi_const + theorem nndist_pi_const Modified src/topology/metric_space/emetric_space.lean + theorem edist_pi_const 2021-01-19 17:22:05 da6e3c3 feat(data/buffer/parser/numeral): numeral parser defs (#5462) ESTIMATED CHANGES Added src/data/buffer/parser/numeral.lean + def parser.numeral.char.of_fintype + def parser.numeral.char + def parser.numeral.from_one.of_fintype + def parser.numeral.from_one + def parser.numeral.of_fintype + def parser.numeral 2021-01-19 13:11:48 8b47563 chore(category_theory/adjunction): move reflective functor lemmas (#5800) Moves a lemma and describes a generalisation. ESTIMATED CHANGES Modified src/category_theory/adjunction/reflective.lean + theorem category_theory.unit_obj_eq_map_unit Modified src/category_theory/monad/adjunction.lean - theorem category_theory.reflective.comparison_ess_surj_aux 2021-01-19 13:11:46 90763c4 feat(algebra/lie/basic): generalise the definition of `lie_algebra.derived_series` (#5794) This generalisation will make it easier to relate properties of the derived series of a Lie algebra and the derived series of its ideals (regarded as Lie algebras in their own right). The key definition is `lie_algebra.derived_series_of_ideal` and the key result is `lie_ideal.derived_series_eq_bot_iff`. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean +/- def lie_algebra.derived_series + theorem lie_algebra.derived_series_def + def lie_algebra.derived_series_of_ideal + theorem lie_algebra.derived_series_of_ideal_le + theorem lie_algebra.derived_series_of_ideal_succ + theorem lie_algebra.derived_series_of_ideal_succ_le + theorem lie_algebra.derived_series_of_ideal_zero + theorem lie_algebra.map_zero + theorem lie_algebra.morphism.le_ker_iff + theorem lie_algebra.morphism.map_bot_iff +/- theorem lie_algebra.morphism.mem_ker +/- theorem lie_ideal.comap_mono + theorem lie_ideal.derived_series_eq_bot_iff + theorem lie_ideal.derived_series_eq_derived_series_of_ideal_comap + theorem lie_ideal.derived_series_eq_derived_series_of_ideal_map +/- theorem lie_ideal.map_mono + theorem lie_subalgebra.add_mem +/- theorem lie_subalgebra.coe_bracket + theorem lie_subalgebra.coe_injective + theorem lie_subalgebra.coe_set_eq - theorem lie_subalgebra.coe_set_eq_iff - theorem lie_subalgebra.coe_to_set_mk + theorem lie_subalgebra.coe_to_submodule_eq - theorem lie_subalgebra.coe_to_submodule_eq_iff + theorem lie_subalgebra.lie_mem +/- theorem lie_subalgebra.mem_coe' +/- theorem lie_subalgebra.mem_coe + theorem lie_subalgebra.mk_coe + theorem lie_subalgebra.smul_mem + theorem lie_subalgebra.to_submodule_injective + theorem lie_subalgebra.zero_mem Modified src/algebra/lie/classical.lean Modified src/algebra/lie/skew_adjoint.lean 2021-01-19 13:11:44 18841a9 feat(data/list/basic): nth and nth_le for pmap (#5451) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_le_pmap + theorem list.nth_pmap 2021-01-19 13:11:42 9777d1e feat(data/option/basic): map_bind and join_pmap lemmas (#5445) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.join_pmap_eq_pmap_join + theorem option.map_bind' 2021-01-19 11:40:25 c37c64f chore(data/matrix/notation): Add some missing simp lemmas for sub, head, and tail (#5807) ESTIMATED CHANGES Modified src/data/matrix/notation.lean + theorem matrix.cons_sub + theorem matrix.empty_sub_empty + theorem matrix.head_add + theorem matrix.head_neg + theorem matrix.head_sub + theorem matrix.sub_cons + theorem matrix.tail_add + theorem matrix.tail_neg + theorem matrix.tail_sub Modified test/matrix.lean 2021-01-19 03:39:22 190dd10 chore(analysis/normed_space): golf some proofs (#5804) * add `pi_norm_lt_iff`; * add `has_sum.norm_le_of_bounded`; * add `multilinear_map.bound_of_shell`; * rename `continuous_multilinear_map.norm_image_sub_le_of_bound` to `continuous_multilinear_map.norm_image_sub_le`, same with prime version; * golf some proofs. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem has_sum.norm_le_of_bounded + theorem pi_norm_lt_iff Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.norm_image_sub_le' + theorem continuous_multilinear_map.norm_image_sub_le - theorem continuous_multilinear_map.norm_image_sub_le_of_bound' - theorem continuous_multilinear_map.norm_image_sub_le_of_bound + theorem multilinear_map.bound_of_shell Modified src/analysis/normed_space/operator_norm.lean 2021-01-19 02:19:31 c9c3b6f chore(scripts): update nolints.txt (#5806) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-18 23:02:32 541688b feat(combinatorics/simple_graph/basic): add lemmas about cardinality of common neighbor set (#5789) Add lemmas about the cardinality of the set of common neighbors between two vertices. Add note in module docstring about naming convention. Part of #5698 in order to prove facts about strongly regular graphs. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.adj.card_common_neighbors_lt_degree + theorem simple_graph.card_common_neighbors_le_degree_left + theorem simple_graph.card_common_neighbors_le_degree_right + theorem simple_graph.card_common_neighbors_lt_card_verts 2021-01-18 23:02:30 77003ce refactor(field_theory|ring_theory|linear_algebra): minpoly A x (#5774) This PR refactors the definition of `minpoly` to ``` noncomputable def minpoly (x : B) : polynomial A := if hx : is_integral A x then well_founded.min degree_lt_wf _ hx else 0 ``` The benefit is that we can write `minpoly A x` instead of `minpoly hx` for `hx : is_integral A x`. The resulting code is more readable, and some lemmas are true without the `hx` assumption. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean +/- theorem intermediate_field.aeval_gen_minpoly +/- theorem intermediate_field.card_alg_hom_adjoin_integral Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/fixed.lean Modified src/field_theory/galois.lean +/- theorem is_galois.integral +/- theorem is_galois.normal +/- theorem is_galois.separable +/- theorem is_galois.tower_top_of_is_galois Modified src/field_theory/minpoly.lean +/- theorem minpoly.aeval +/- theorem minpoly.aeval_ne_zero_of_dvd_not_unit_minpoly +/- theorem minpoly.coeff_zero_eq_zero +/- theorem minpoly.coeff_zero_ne_zero +/- theorem minpoly.degree_pos +/- theorem minpoly.dvd +/- theorem minpoly.dvd_map_of_is_scalar_tower + theorem minpoly.eq_X_sub_C' +/- theorem minpoly.eq_X_sub_C +/- theorem minpoly.eq_X_sub_C_of_algebra_map_inj + theorem minpoly.eq_of_algebra_map_eq +/- theorem minpoly.irreducible +/- theorem minpoly.monic +/- theorem minpoly.ne_zero +/- theorem minpoly.not_is_unit +/- theorem minpoly.one +/- theorem minpoly.over_int_eq_over_rat +/- theorem minpoly.prime +/- theorem minpoly.root +/- theorem minpoly.unique' +/- theorem minpoly.unique +/- theorem minpoly.zero Modified src/field_theory/normal.lean +/- theorem normal.is_integral +/- theorem normal.splits +/- theorem normal.tower_top_of_normal Modified src/field_theory/primitive_element.lean Modified src/field_theory/separable.lean +/- theorem is_separable.of_alg_hom +/- theorem is_separable_tower_bot_of_is_separable +/- theorem is_separable_tower_top_of_is_separable Modified src/field_theory/splitting_field.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/eigenspace.lean +/- theorem module.End.has_eigenvalue_of_is_root +/- theorem module.End.is_root_of_has_eigenvalue Modified src/ring_theory/integral_closure.lean + theorem is_integral_algebra_map_iff Modified src/ring_theory/polynomial/cyclotomic.lean + theorem cyclotomic_eq_minpoly - theorem minpoly_primitive_root_eq_cyclotomic Modified src/ring_theory/power_basis.lean - theorem is_integral_algebra_map_iff - theorem minpoly.eq_of_algebra_map_eq Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.minpoly_dvd_X_pow_sub_one +/- theorem is_primitive_root.totient_le_degree_minpoly 2021-01-18 19:33:02 725efb1 doc(tactic/rewrite): Add an example for assoc_rw (#5799) ESTIMATED CHANGES Modified src/tactic/rewrite.lean 2021-01-18 17:54:03 b5e832e refactor(algebraic_geometry/prime_spectrum): simplify `comap_id`, `comap_comp` (#5796) faster proofs and smaller proof terms Co-authors: `lean-gptf`, Yuhuai Wu ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean 2021-01-18 15:57:43 57bc1da feat(order/limsup_liminf, order/filter/ennreal): add properties of limsup for ennreal-valued functions (#5746) ESTIMATED CHANGES Added src/measure_theory/ess_sup.lean + theorem ae_lt_of_ess_sup_lt + theorem ae_lt_of_lt_ess_inf + theorem ennreal.ae_le_ess_sup + theorem ennreal.ess_sup_add_le + theorem ennreal.ess_sup_const_mul + def ess_inf + theorem ess_inf_congr_ae + theorem ess_inf_const + theorem ess_inf_const_top + theorem ess_inf_measure_zero + theorem ess_inf_mono_ae + def ess_sup + theorem ess_sup_congr_ae + theorem ess_sup_const + theorem ess_sup_const_bot + theorem ess_sup_eq_zero_iff + theorem ess_sup_measure_zero + theorem ess_sup_mono_ae + theorem order_iso.ess_inf_apply + theorem order_iso.ess_sup_apply Added src/order/filter/ennreal.lean + theorem ennreal.eventually_le_limsup + theorem ennreal.limsup_add_le + theorem ennreal.limsup_const_mul + theorem ennreal.limsup_const_mul_of_ne_top + theorem ennreal.limsup_eq_zero_iff Modified src/order/liminf_limsup.lean + theorem filter.le_limsup_of_frequently_le + theorem filter.liminf_const_top + theorem filter.liminf_le_of_frequently_le + theorem filter.limsup_const_bot + theorem galois_connection.l_limsup_le + theorem order_iso.liminf_apply + theorem order_iso.limsup_apply 2021-01-18 10:20:56 66e955e feat(algebra/lie/basic): results relating Lie algebra morphisms and ideal operations (#5778) The key results are `lie_ideal.comap_bracket_eq` and its corollary `lie_ideal.comap_bracket_incl` ESTIMATED CHANGES Modified src/algebra/lie/basic.lean - theorem coe_to_subalgebra + def lie_algebra.morphism.ideal_range + def lie_algebra.morphism.is_ideal_morphism + theorem lie_algebra.morphism.is_ideal_morphism_def + def lie_algebra.morphism.ker + theorem lie_algebra.morphism.ker_coe_submodule + theorem lie_algebra.morphism.ker_le_comap + theorem lie_algebra.morphism.map_le_ideal_range + theorem lie_algebra.morphism.mem_ideal_range + theorem lie_algebra.morphism.mem_ideal_range_iff + theorem lie_algebra.morphism.mem_ker + theorem lie_algebra.morphism.range_subset_ideal_range + theorem lie_ideal.coe_to_subalgebra +/- def lie_ideal.comap + theorem lie_ideal.comap_bracket_eq + theorem lie_ideal.comap_bracket_incl + theorem lie_ideal.comap_bracket_incl_of_le + theorem lie_ideal.comap_bracket_le + theorem lie_ideal.comap_coe_submodule + theorem lie_ideal.comap_incl_self + theorem lie_ideal.comap_map_eq + theorem lie_ideal.comap_map_le + theorem lie_ideal.comap_mono +/- theorem lie_ideal.gc_map_comap +/- def lie_ideal.incl +/- theorem lie_ideal.incl_apply + theorem lie_ideal.incl_coe + theorem lie_ideal.incl_ideal_range + theorem lie_ideal.incl_is_ideal_morphism + theorem lie_ideal.ker_incl +/- def lie_ideal.map + theorem lie_ideal.map_bracket_le + theorem lie_ideal.map_coe_submodule + theorem lie_ideal.map_comap_bracket_eq + theorem lie_ideal.map_comap_eq + theorem lie_ideal.map_comap_incl + theorem lie_ideal.map_comap_le + theorem lie_ideal.map_le +/- theorem lie_ideal.map_le_iff_le_comap + theorem lie_ideal.map_mono + theorem lie_ideal.map_of_image + theorem lie_ideal.map_sup_ker_eq_map + theorem lie_ideal.mem_comap + theorem lie_ideal.mem_map +/- theorem lie_subalgebra.coe_bracket + theorem lie_subalgebra.coe_set_eq_iff + theorem lie_subalgebra.coe_to_set_mk + theorem lie_subalgebra.coe_to_submodule_eq_iff +/- theorem lie_subalgebra.ext +/- theorem lie_subalgebra.ext_iff +/- theorem lie_subalgebra.mem_coe' +/- theorem lie_subalgebra.mem_coe + theorem lie_subalgebra.range_incl 2021-01-18 08:58:39 9381e37 doc(data/buffer/parser/basic): fix typo (#5792) ESTIMATED CHANGES Modified src/data/buffer/parser/basic.lean 2021-01-18 07:03:48 8ab1a39 chore(field_theory/minpoly): meaningful variable names (#5773) ESTIMATED CHANGES Modified src/field_theory/minpoly.lean +/- theorem minpoly.aeval_ne_zero_of_dvd_not_unit_minpoly +/- theorem minpoly.degree_pos +/- theorem minpoly.dvd +/- theorem minpoly.dvd_map_of_is_scalar_tower +/- theorem minpoly.eq_X_sub_C +/- theorem minpoly.eq_X_sub_C_of_algebra_map_inj +/- theorem minpoly.gcd_domain_dvd +/- theorem minpoly.gcd_domain_eq_field_fractions +/- theorem minpoly.integer_dvd +/- theorem minpoly.min +/- theorem minpoly.ne_zero +/- theorem minpoly.one +/- theorem minpoly.over_int_eq_over_rat +/- theorem minpoly.root +/- theorem minpoly.unique' +/- theorem minpoly.unique +/- theorem minpoly.zero 2021-01-18 07:03:45 db617b3 feat(ring_theory/ideal/operations): add algebra structure on quotient (#5703) I added very basic stuff about `R/I` as an `R`-algebra that are missing in mathlib. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + def ideal.quotient.mkₐ + theorem ideal.quotient.mkₐ_eq_mk + theorem ideal.quotient.mkₐ_ker + theorem ideal.quotient.mkₐ_surjective + theorem ideal.quotient.mkₐ_to_ring_hom 2021-01-18 05:44:26 f3d3d04 chore(category_theory/monad): golf and lint monadic adjunctions (#5769) Some lintfixes and proof golfing using newer API ESTIMATED CHANGES Modified src/category_theory/monad/adjunction.lean - theorem category_theory.adjunction.monad_η_app - theorem category_theory.adjunction.monad_μ_app +/- def category_theory.monad.comparison +/- def category_theory.monad.comparison_forget - theorem category_theory.monad.comparison_map_f - theorem category_theory.monad.comparison_obj_a +/- theorem category_theory.reflective.comparison_ess_surj_aux 2021-01-18 03:26:01 3089b16 chore(scripts): update nolints.txt (#5790) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-18 00:03:46 2f824aa feat(data/option/*): pmap and pbind defs and lemmas (#5442) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.bind_pmap + theorem option.map_bind + theorem option.map_pbind + theorem option.map_pmap + theorem option.mem_map_of_mem + theorem option.mem_pmem + theorem option.pbind_eq_bind + theorem option.pbind_eq_none + theorem option.pbind_eq_some + theorem option.pbind_map + theorem option.pmap_bind + theorem option.pmap_eq_map + theorem option.pmap_eq_none_iff + theorem option.pmap_eq_some_iff + theorem option.pmap_map + theorem option.pmap_none + theorem option.pmap_some Modified src/data/option/defs.lean + def option.pbind + def option.pmap 2021-01-17 21:46:49 c3639e9 refactor(algebra/monoid_algebra) generalize from group to monoid algebras (#5785) There was a TODO in the monoid algebra file to generalize three statements from group to monoid algebras. It seemed to be solvable by just changing the assumptions, not the proofs. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean +/- def monoid_algebra.group_smul.linear_map +/- theorem monoid_algebra.group_smul.linear_map_apply 2021-01-17 14:43:58 f29d1c3 refactor(analysis/calculus/deriv): simpler proof of `differentiable_at.div_const` (#5782) Co-authors: `lean-gptf`, Yuhuai Wu ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean 2021-01-17 14:43:56 83d44a3 hack(manifold): disable subsingleton instances to speed up simp (#5779) Simp takes an enormous amount of time in manifold code looking for subsingleton instances (and in fact probably in the whole library, but manifolds are particularly simp-heavy). We disable two such instances in the `manifold` locale, to get serious speedups (for instance, `times_cont_mdiff_on.times_cont_mdiff_on_tangent_map_within` goes down from 27s to 10s on my computer). This is *not* a proper fix. But it already makes a serious difference in this part of the library.. Zulip discussion at https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.235672.20breaks.20timeout/near/223001979 ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/times_cont_mdiff_map.lean 2021-01-17 11:37:27 bf46986 doc(tactic/auto_cases): fix typo (#5784) ESTIMATED CHANGES Modified src/tactic/auto_cases.lean 2021-01-17 08:33:51 289df3a feat(data/set/lattice): add lemmas set.Union_subtype and set.Union_of_singleton_coe (#5691) Add one simp lemma, following a suggestion on the Zulip chat: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/image_bUnion ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Union_of_singleton_coe + theorem set.Union_subtype 2021-01-17 03:47:19 2c4a516 chore(topology/metric_space/isometry): a few more lemmas (#5780) Also reuse more proofs about `inducing` and `quotient_map` in `topology/homeomorph`. Non-bc change: rename `isometric.range_coe` to `isometric.range_eq_univ` to match `equiv.range_eq_univ`. ESTIMATED CHANGES Modified src/topology/homeomorph.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean + theorem isometric.comp_continuous_iff' + theorem isometric.comp_continuous_iff + theorem isometric.comp_continuous_on_iff + theorem isometric.diam_image + theorem isometric.diam_preimage + theorem isometric.diam_univ + theorem isometric.ediam_image + theorem isometric.ediam_preimage + theorem isometric.ediam_univ - theorem isometric.range_coe + theorem isometric.range_eq_univ 2021-01-17 02:21:15 00e1f4c chore(scripts): update nolints.txt (#5781) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-17 00:33:57 dec44fe chore(group_theory/perm/{sign,cycles}): renaming for dot notation, linting, formatting (#5777) Declarations renamed in `group_theory/perm/sign.lean` (all of these are under `equiv.perm`): - `disjoint_mul_comm` -> `disjoint.mul_comm` - `disjoint_mul_left` -> `disjoint.mul_left` - `disjoint_mul_right` -> `disjoint.mul_right` - `is_swap_of_subtype` -> `is_swap.of_subtype_is_swap` - `sign_eq_of_is_swap` -> `is_swap.sign_eq` Declarations renamed in `group_theory/perm/cycles.lean` (all of these are under `equiv.perm`): - `is_cycle_swap` -> `is_cycle.swap` - `is_cycle_inv` -> `is_cycle.inv` - `exists_gpow_eq_of_is_cycle` -> `is_cycle.exists_gpow_eq` - `exists_pow_eq_of_is_cycle` -> `is_cycle.exists_pow_eq` - `eq_swap_of_is_cycle_of_apply_apply_eq_self` -> `eq_swap_of_apply_apply_eq_self` - `is_cycle_swap_mul` -> `is_cycle.swap_mul` - `sign_cycle` -> `is_cycle.sign` - `apply_eq_self_iff_of_same_cycle` -> `same_cycle.apply_eq_self_iff` - `same_cycle_of_is_cycle` -> `is_cycle.same_cycle` - `cycle_of_apply_of_same_cycle` -> `same_cycle.cycle_of_apply` - `cycle_of_cycle` -> `is_cycle.cycle_of_eq` I also added a basic module doc string to `group_theory/perm/cycles.lean`. ESTIMATED CHANGES Modified src/group_theory/perm/cycles.lean - theorem equiv.perm.apply_eq_self_iff_of_same_cycle - theorem equiv.perm.cycle_of_apply_of_same_cycle - theorem equiv.perm.cycle_of_cycle - theorem equiv.perm.eq_swap_of_is_cycle_of_apply_apply_eq_self - theorem equiv.perm.exists_gpow_eq_of_is_cycle - theorem equiv.perm.exists_pow_eq_of_is_cycle + theorem equiv.perm.is_cycle.cycle_of_eq + theorem equiv.perm.is_cycle.eq_swap_of_apply_apply_eq_self + theorem equiv.perm.is_cycle.exists_gpow_eq + theorem equiv.perm.is_cycle.exists_pow_eq + theorem equiv.perm.is_cycle.inv + theorem equiv.perm.is_cycle.same_cycle + theorem equiv.perm.is_cycle.sign + theorem equiv.perm.is_cycle.swap + theorem equiv.perm.is_cycle.swap_mul +/- def equiv.perm.is_cycle - theorem equiv.perm.is_cycle_inv - theorem equiv.perm.is_cycle_swap - theorem equiv.perm.is_cycle_swap_mul +/- theorem equiv.perm.is_cycle_swap_mul_aux₂ + theorem equiv.perm.same_cycle.apply_eq_self_iff + theorem equiv.perm.same_cycle.cycle_of_apply +/- def equiv.perm.same_cycle - theorem equiv.perm.same_cycle_of_is_cycle - theorem equiv.perm.sign_cycle Modified src/group_theory/perm/sign.lean + theorem equiv.perm.disjoint.mul_comm + theorem equiv.perm.disjoint.mul_left + theorem equiv.perm.disjoint.mul_right - theorem equiv.perm.disjoint_mul_comm - theorem equiv.perm.disjoint_mul_left - theorem equiv.perm.disjoint_mul_right + theorem equiv.perm.is_swap.of_subtype_is_swap + theorem equiv.perm.is_swap.sign_eq +/- def equiv.perm.is_swap - theorem equiv.perm.is_swap_of_subtype +/- theorem equiv.perm.mem_iff_of_subtype_apply_mem +/- theorem equiv.perm.of_subtype_apply_of_not_mem +/- theorem equiv.perm.of_subtype_subtype_perm +/- theorem equiv.perm.sign_bij_aux_mem - theorem equiv.perm.sign_eq_of_is_swap +/- theorem equiv.perm.subtype_perm_one +/- def equiv.perm.support 2021-01-17 00:33:55 a2630fc chore(field_theory|ring_theory|linear_algebra): rename minimal_polynomial to minpoly (#5771) This PR renames: * `minimal_polynomial` -> `minpoly` * a similar substitution throughout the library for all names containing the substring `minimal_polynomial` * `fixed_points.minpoly.minimal_polynomial` -> `fixed_points.minpoly_eq_minpoly` This PR moves a file: src/field_theory/minimal_polynomial.lean -> src/field_theory/minpoly.lean ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified scripts/style-exceptions.txt Modified src/field_theory/adjoin.lean - theorem intermediate_field.aeval_gen_minimal_polynomial + theorem intermediate_field.aeval_gen_minpoly +/- theorem intermediate_field.card_alg_hom_adjoin_integral Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/fixed.lean - theorem fixed_points.minpoly.minimal_polynomial + theorem fixed_points.minpoly_eq_minpoly Modified src/field_theory/galois.lean Renamed src/field_theory/minimal_polynomial.lean to src/field_theory/minpoly.lean - theorem minimal_polynomial.aeval - theorem minimal_polynomial.aeval_ne_zero_of_dvd_not_unit_minimal_polynomial - theorem minimal_polynomial.coeff_zero_eq_zero - theorem minimal_polynomial.coeff_zero_ne_zero - theorem minimal_polynomial.degree_le_of_monic - theorem minimal_polynomial.degree_le_of_ne_zero - theorem minimal_polynomial.degree_pos - theorem minimal_polynomial.dvd - theorem minimal_polynomial.dvd_map_of_is_scalar_tower - theorem minimal_polynomial.eq_X_sub_C - theorem minimal_polynomial.eq_X_sub_C_of_algebra_map_inj - theorem minimal_polynomial.gcd_domain_dvd - theorem minimal_polynomial.gcd_domain_eq_field_fractions - theorem minimal_polynomial.integer_dvd - theorem minimal_polynomial.irreducible - theorem minimal_polynomial.min - theorem minimal_polynomial.monic - theorem minimal_polynomial.ne_zero - theorem minimal_polynomial.not_is_unit - theorem minimal_polynomial.one - theorem minimal_polynomial.over_int_eq_over_rat - theorem minimal_polynomial.prime - theorem minimal_polynomial.root - theorem minimal_polynomial.unique' - theorem minimal_polynomial.unique - theorem minimal_polynomial.zero + theorem minpoly.aeval + theorem minpoly.aeval_ne_zero_of_dvd_not_unit_minpoly + theorem minpoly.coeff_zero_eq_zero + theorem minpoly.coeff_zero_ne_zero + theorem minpoly.degree_le_of_monic + theorem minpoly.degree_le_of_ne_zero + theorem minpoly.degree_pos + theorem minpoly.dvd + theorem minpoly.dvd_map_of_is_scalar_tower + theorem minpoly.eq_X_sub_C + theorem minpoly.eq_X_sub_C_of_algebra_map_inj + theorem minpoly.gcd_domain_dvd + theorem minpoly.gcd_domain_eq_field_fractions + theorem minpoly.integer_dvd + theorem minpoly.irreducible + theorem minpoly.min + theorem minpoly.monic + theorem minpoly.ne_zero + theorem minpoly.not_is_unit + theorem minpoly.one + theorem minpoly.over_int_eq_over_rat + theorem minpoly.prime + theorem minpoly.root + theorem minpoly.unique' + theorem minpoly.unique + theorem minpoly.zero Modified src/field_theory/normal.lean Modified src/field_theory/primitive_element.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean - def alg_equiv.adjoin_singleton_equiv_adjoin_root_minimal_polynomial + def alg_equiv.adjoin_singleton_equiv_adjoin_root_minpoly Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/eigenspace.lean +/- theorem module.End.has_eigenvalue_of_is_root Modified src/ring_theory/polynomial/cyclotomic.lean - theorem minimal_polynomial_primitive_root_dvd_cyclotomic - theorem minimal_polynomial_primitive_root_eq_cyclotomic + theorem minpoly_primitive_root_dvd_cyclotomic + theorem minpoly_primitive_root_eq_cyclotomic Modified src/ring_theory/power_basis.lean - theorem minimal_polynomial.eq_of_algebra_map_eq + theorem minpoly.eq_of_algebra_map_eq - theorem power_basis.nat_degree_minimal_polynomial + theorem power_basis.nat_degree_minpoly Modified src/ring_theory/roots_of_unity.lean - theorem is_primitive_root.is_roots_of_minimal_polynomial + theorem is_primitive_root.is_roots_of_minpoly - theorem is_primitive_root.minimal_polynomial_dvd_X_pow_sub_one - theorem is_primitive_root.minimal_polynomial_dvd_expand - theorem is_primitive_root.minimal_polynomial_dvd_mod_p - theorem is_primitive_root.minimal_polynomial_dvd_pow_mod - theorem is_primitive_root.minimal_polynomial_eq_pow - theorem is_primitive_root.minimal_polynomial_eq_pow_coprime + theorem is_primitive_root.minpoly_dvd_X_pow_sub_one + theorem is_primitive_root.minpoly_dvd_expand + theorem is_primitive_root.minpoly_dvd_mod_p + theorem is_primitive_root.minpoly_dvd_pow_mod + theorem is_primitive_root.minpoly_eq_pow + theorem is_primitive_root.minpoly_eq_pow_coprime - theorem is_primitive_root.pow_is_root_minimal_polynomial + theorem is_primitive_root.pow_is_root_minpoly - theorem is_primitive_root.separable_minimal_polynomial_mod + theorem is_primitive_root.separable_minpoly_mod - theorem is_primitive_root.squarefree_minimal_polynomial_mod + theorem is_primitive_root.squarefree_minpoly_mod - theorem is_primitive_root.totient_le_degree_minimal_polynomial + theorem is_primitive_root.totient_le_degree_minpoly 2021-01-16 23:11:28 0cc93a1 feat(category_theory/is_filtered): is_filtered_of_equiv (#5485) If `C` is filtered and there is a right adjoint functor `C => D`, then `D` is filtered. Also a category equivalent to a filtered category is filtered. ESTIMATED CHANGES Modified src/category_theory/filtered.lean + theorem category_theory.is_filtered.of_equivalence + theorem category_theory.is_filtered.of_is_right_adjoint + theorem category_theory.is_filtered.of_right_adjoint 2021-01-16 21:37:58 787e6b3 feat(measure_theory/haar_measure): Prove uniqueness (#5663) Prove the uniqueness of Haar measure (up to a scalar) following *Measure Theory* by Paul Halmos. This proof seems to contain an omission which we fix by adding an extra hypothesis to an intermediate lemma. Add some lemmas about left invariant regular measures. We add the file `measure_theory.prod_group` which contain various measure-theoretic properties of products of topological groups, needed for the uniqueness. We add `@[to_additive]` to some declarations in `measure_theory`, but leave it out for many because of #4210. This causes some renamings in concepts, like `is_left_invariant` -> `is_mul_left_invariant` and `measure.conj` -> `measure.inv` (though a better naming suggestion for this one is welcome). ESTIMATED CHANGES Modified docs/references.bib Modified src/measure_theory/borel_space.lean + theorem measure_theory.measure.regular.exists_compact_not_null +/- theorem measure_theory.measure.regular.inner_regular_eq +/- theorem measure_theory.measure.regular.outer_regular_eq Modified src/measure_theory/content.lean - theorem measure_theory.inner_content_pos + theorem measure_theory.inner_content_pos_of_is_mul_left_invariant - theorem measure_theory.is_left_invariant_inner_content + theorem measure_theory.is_mul_left_invariant_inner_content - theorem measure_theory.outer_measure.is_left_invariant_of_content + theorem measure_theory.outer_measure.is_mul_left_invariant_of_content + theorem measure_theory.outer_measure.of_content_pos_of_is_mul_left_invariant - theorem measure_theory.outer_measure.of_content_pos_of_is_open Modified src/measure_theory/group.lean - def measure_theory.is_left_invariant - theorem measure_theory.is_left_invariant_conj' - theorem measure_theory.is_left_invariant_conj + theorem measure_theory.is_mul_left_invariant.inv + theorem measure_theory.is_mul_left_invariant.measure_ne_zero_iff_nonempty + theorem measure_theory.is_mul_left_invariant.null_iff + theorem measure_theory.is_mul_left_invariant.null_iff_empty + def measure_theory.is_mul_left_invariant + theorem measure_theory.is_mul_left_invariant_inv + theorem measure_theory.is_mul_right_invariant.inv + def measure_theory.is_mul_right_invariant + theorem measure_theory.is_mul_right_invariant_inv - def measure_theory.is_right_invariant - theorem measure_theory.is_right_invariant_conj' - theorem measure_theory.is_right_invariant_conj + theorem measure_theory.lintegral_eq_zero_of_is_mul_left_invariant - theorem measure_theory.measure.conj_apply - theorem measure_theory.measure.conj_conj + theorem measure_theory.measure.inv_apply - theorem measure_theory.measure.regular.conj + theorem measure_theory.measure.regular.inv - theorem measure_theory.regular_conj_iff + theorem measure_theory.regular_inv_iff Modified src/measure_theory/haar_measure.lean + theorem measure_theory.measure.haar_measure_unique - theorem measure_theory.measure.is_left_invariant_haar_measure + theorem measure_theory.measure.is_mul_left_invariant_haar_measure + theorem measure_theory.measure.regular_of_left_invariant Modified src/measure_theory/measure_space.lean + theorem measurable_equiv.map_apply_eq_iff_map_symm_apply_eq + theorem measurable_equiv.map_map_symm + theorem measurable_equiv.map_measurable_equiv_injective + theorem measurable_equiv.map_symm_map Added src/measure_theory/prod_group.lean + theorem measure_theory.lintegral_lintegral_mul_inv + theorem measure_theory.map_prod_inv_mul_eq + theorem measure_theory.map_prod_inv_mul_eq_swap + theorem measure_theory.map_prod_mul_eq + theorem measure_theory.map_prod_mul_eq_swap + theorem measure_theory.map_prod_mul_inv_eq + theorem measure_theory.measurable_measure_mul_right + theorem measure_theory.measure_inv_null + theorem measure_theory.measure_lintegral_div_measure + theorem measure_theory.measure_mul_measure_eq + theorem measure_theory.measure_mul_right_ne_zero + theorem measure_theory.measure_mul_right_null + theorem measure_theory.measure_null_of_measure_inv_null 2021-01-16 19:32:30 23373d1 chore(category_theory/limits): coproduct functor (#5677) Dualises a def already there. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.coprod.functor + def category_theory.limits.coprod.functor_left_comp 2021-01-16 17:42:15 e0f4142 refactor(data/nat/fib): explicitly state fibonacci sequence is monotone (#5776) https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/fib_mono ESTIMATED CHANGES Modified src/data/nat/fib.lean +/- theorem nat.fib_mono 2021-01-16 17:42:12 4155665 refactor(linear_algebra/dual): replace dim K to an embedding F(S) -> K. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.alg_hom_mk_adjoin_splits' + theorem intermediate_field.alg_hom_mk_adjoin_splits 2021-01-16 09:11:36 9acd349 feat(order/closure): closure operator from galois connection (#5764) Construct a closure operator from a galois connection ESTIMATED CHANGES Modified src/order/closure.lean + theorem closure_operator_gi_self + def galois_connection.closure_operator 2021-01-16 09:11:34 51ffdd0 refactor(ring_theory): change field instance on adjoin_root (#5759) This makes some things faster. [Discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Slow.20instance/near/222839607) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2021-01-16 09:11:32 dffb09a feat(linear_algebra/{clifford,exterior,tensor,free}_algebra): provide canonical images from larger algebras into smaller ones (#5745) This adds: * `free_algebra.to_tensor` * `tensor_algebra.to_exterior` * `tensor_algebra.to_clifford` Providing the injection in the other direction is more challenging, so is left as future work. ESTIMATED CHANGES Modified src/linear_algebra/clifford_algebra.lean + def tensor_algebra.to_clifford + theorem tensor_algebra.to_clifford_ι Modified src/linear_algebra/exterior_algebra.lean + def tensor_algebra.to_exterior + theorem tensor_algebra.to_exterior_ι Modified src/linear_algebra/tensor_algebra.lean + def free_algebra.to_tensor + theorem free_algebra.to_tensor_ι 2021-01-16 09:11:30 bea7651 feat(category_theory/monad): construct isomorphisms of algebras (#5678) ESTIMATED CHANGES Modified src/category_theory/monad/algebra.lean + def category_theory.comonad.coalgebra.iso_mk + def category_theory.comonad.coalgebra_iso_of_iso + def category_theory.monad.algebra.iso_mk +/- def category_theory.monad.algebra_iso_of_iso 2021-01-16 03:57:08 592edb6 chore(scripts): update nolints.txt (#5763) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-01-16 03:57:02 6351f01 chore(algebra/group_with_zero): cleanup (#5762) * remove `classical,` from proofs: we have `open_locale classical` anyway; * add a lemma `a / (a * a) = a⁻¹`, use it to golf some proofs in other files. ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean + theorem div_self_mul_self' Modified src/analysis/special_functions/pow.lean Modified src/data/complex/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/zsqrtd/gaussian_int.lean 2021-01-16 03:57:00 798024a chore(data/real/*): rename `le_of_forall_epsilon_le` to `le_of_forall_pos_le_add` (#5761) * generalize the `real` version to a `linear_ordered_add_comm_group`; * rename `nnreal` and `ennreal` versions. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem le_of_forall_pos_le_add Modified src/analysis/calculus/fderiv.lean Modified src/data/real/basic.lean - theorem real.le_of_forall_epsilon_le Modified src/data/real/ennreal.lean - theorem ennreal.le_of_forall_epsilon_le + theorem ennreal.le_of_forall_pos_le_add Modified src/data/real/nnreal.lean - theorem nnreal.le_of_forall_epsilon_le + theorem nnreal.le_of_forall_pos_le_add Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/outer_measure.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean 2021-01-16 00:47:54 78493c9 feat(data/nat/modeq): add missing lemmas for int and nat regarding dvd (#5752) Adding lemmas `(a+b)/c=a/c+b/c` if `c` divides `a` for `a b c : nat` and `a b c : int` after discussion on Zulip https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/nat_add_div ESTIMATED CHANGES Modified src/data/int/basic.lean - theorem int.add_div_of_dvd Modified src/data/nat/modeq.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/term.lean 2021-01-16 00:47:52 e4da493 feat(group_theory/perm/sign): exists_pow_eq_of_is_cycle (#5665) Slight generalization of `exists_gpow_eq_of_is_cycle` in the case of a cycle on a finite set. Also move the following from `group_theory/perm/sign.lean` to `group_theory/perm/cycles.lean`: - is_cycle - is_cycle_swap - is_cycle_inv - exists_gpow_eq_of_is_cycle - is_cycle_swap_mul_aux₁ - is_cycle_swap_mul_aux₂ - eq_swap_of_is_cycle_of_apply_apply_eq_self - is_cycle_swap_mul - sign_cycle ESTIMATED CHANGES Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.eq_swap_of_is_cycle_of_apply_apply_eq_self + theorem equiv.perm.exists_gpow_eq_of_is_cycle + theorem equiv.perm.exists_pow_eq_of_is_cycle + def equiv.perm.is_cycle + theorem equiv.perm.is_cycle_inv + theorem equiv.perm.is_cycle_swap + theorem equiv.perm.is_cycle_swap_mul + theorem equiv.perm.is_cycle_swap_mul_aux₁ + theorem equiv.perm.is_cycle_swap_mul_aux₂ + theorem equiv.perm.sign_cycle Modified src/group_theory/perm/sign.lean - theorem equiv.perm.eq_swap_of_is_cycle_of_apply_apply_eq_self - theorem equiv.perm.exists_gpow_eq_of_is_cycle - def equiv.perm.is_cycle - theorem equiv.perm.is_cycle_inv - theorem equiv.perm.is_cycle_swap - theorem equiv.perm.is_cycle_swap_mul - theorem equiv.perm.is_cycle_swap_mul_aux₁ - theorem equiv.perm.is_cycle_swap_mul_aux₂ - theorem equiv.perm.sign_cycle 2021-01-15 21:05:36 d43f202 feat(analysis/analytic/basic): `f (x + y) - p.partial_sum n y = O(∥y∥ⁿ)` (#5756) ### Lemmas about analytic functions * add `has_fpower_series_on_ball.uniform_geometric_approx'`, a more precise version of `has_fpower_series_on_ball.uniform_geometric_approx`; * add `has_fpower_series_at.is_O_sub_partial_sum_pow`, a version of the Taylor formula for an analytic function; ### Lemmas about `homeomorph` and topological groups * add `simp` lemmas `homeomorph.coe_mul_left` and `homeomorph.mul_left_symm`; * add `map_mul_left_nhds` and `map_mul_left_nhds_one`; * add `homeomorph.to_equiv_injective` and `homeomorph.ext`; ### Lemmas about `is_O`/`is_o` * add `simp` lemmas `asymptotics.is_O_with_map`, `asymptotics.is_O_map`, and `asymptotics.is_o_map`; * add `asymptotics.is_o_norm_pow_norm_pow` and `asymptotics.is_o_norm_pow_id`; ### Misc changes * rename `div_le_iff_of_nonneg_of_le` to `div_le_of_nonneg_of_le_mul`; * add `continuous_linear_map.op_norm_le_of_nhds_zero`; * golf some proofs. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean - theorem div_le_iff_of_nonneg_of_le + theorem div_le_of_nonneg_of_le_mul + theorem div_le_one_of_le Modified src/analysis/analytic/basic.lean + theorem has_fpower_series_at.is_O_sub_partial_sum_pow + theorem has_fpower_series_on_ball.uniform_geometric_approx' Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O_map + theorem asymptotics.is_O_with_map + theorem asymptotics.is_o_map + theorem asymptotics.is_o_norm_pow_id + theorem asymptotics.is_o_norm_pow_norm_pow Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_le_of_nhds_zero Modified src/topology/algebra/group.lean + theorem homeomorph.coe_mul_left + theorem homeomorph.mul_left_symm + theorem map_mul_left_nhds + theorem map_mul_left_nhds_one Modified src/topology/homeomorph.lean + theorem homeomorph.ext + theorem homeomorph.to_equiv_injective 2021-01-15 21:05:34 bc5d5c9 feat(data/matrix/notation,data/fin): head and append simp (#5741) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.fin_append_apply_zero Modified src/data/matrix/notation.lean + theorem matrix.head_fin_const + theorem matrix.vec_head_vec_alt0 + theorem matrix.vec_head_vec_alt1 2021-01-15 21:05:30 0104948 feat(order/atoms): further facts about atoms, coatoms, and simple lattices (#5493) Provides possible instances of `bounded_distrib_lattice`, `boolean_algebra`, `complete_lattice`, and `complete_boolean_algebra` on a simple lattice Relates the `is_atom` and `is_coatom` conditions to `is_simple_lattice` structures on intervals Shows that all three conditions are preserved by `order_iso`s Adds more instances on `bool`, including `is_simple_lattice` ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.ff_le + theorem bool.ff_lt_tt + theorem bool.le_tt Modified src/logic/nontrivial.lean Modified src/order/atoms.lean + theorem fintype.is_simple_lattice.card + theorem fintype.is_simple_lattice.univ + def is_simple_lattice.order_iso_bool + theorem order_iso.is_atom_iff + theorem order_iso.is_coatom_iff + theorem order_iso.is_simple_lattice + theorem order_iso.is_simple_lattice_iff + theorem set.is_simple_lattice_Ici_iff_is_coatom + theorem set.is_simple_lattice_Iic_iff_is_atom Modified src/order/bounded_lattice.lean + theorem bot_eq_ff + theorem top_eq_tt Modified src/order/lattice.lean 2021-01-15 17:48:45 bc94d05 fix(algebra/ordered_monoid): Ensure that `ordered_cancel_comm_monoid` can provide a `cancel_comm_monoid` instance (#5713) ESTIMATED CHANGES Modified src/algebra/group/defs.lean Modified src/algebra/ordered_monoid.lean 2021-01-15 16:03:27 8b4b941 feat(data/mv_polynomial): stronger `degrees_X` for `nontrivial R` (#5758) Also rename `degrees_X` to `degrees_X'` and mark `degrees_{zero,one}` with `simp`. ESTIMATED CHANGES Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.degrees_X' +/- theorem mv_polynomial.degrees_X +/- theorem mv_polynomial.degrees_one +/- theorem mv_polynomial.degrees_zero Modified src/field_theory/finite/polynomial.lean 2021-01-15 14:40:09 c347c75 feat(algebra/lie/basic): add a few `simp` lemmas (#5757) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem coe_to_subalgebra + theorem lie_algebra.morphism.map_add + theorem lie_algebra.morphism.map_smul +/- def lie_algebra.morphism.range +/- theorem lie_algebra.morphism.range_bracket + theorem lie_algebra.morphism.range_coe +/- def lie_subalgebra.map + theorem lie_submodule.bot_coe_submodule - theorem lie_submodule.coe_sup + theorem lie_submodule.coe_to_submodule_eq_iff + theorem lie_submodule.inf_coe + theorem lie_submodule.inf_coe_to_submodule + theorem lie_submodule.inf_lie + theorem lie_submodule.lie_inf + theorem lie_submodule.lie_span_eq + theorem lie_submodule.mem_inf + theorem lie_submodule.sup_coe_to_submodule + theorem lie_submodule.top_coe_submodule 2021-01-15 10:58:03 ed0ae3e feat(analysis/calculus/inverse): a map that has an invertible strict derivative at every point is an open map (#5753) More generally, the same is true for a map that is a local homeomorphism near every point. ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean + theorem has_strict_deriv_at.map_nhds_eq + theorem has_strict_fderiv_at.map_nhds_eq + theorem open_map_of_strict_deriv + theorem open_map_of_strict_fderiv Modified src/order/filter/basic.lean +/- theorem filter.le_map + theorem filter.le_map_of_right_inverse + theorem filter.map_id' Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.map_nhds_eq Modified src/topology/maps.lean +/- theorem is_open_map.image_mem_nhds +/- theorem is_open_map.is_open_range +/- theorem is_open_map.nhds_le + theorem is_open_map.of_nhds_le 2021-01-15 10:58:01 4c1d12f feat(data/complex/basic): Adding `im_eq_sub_conj` (#5750) Adds `im_eq_sub_conj`, which I couldn't find in the library. ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.im_eq_sub_conj 2021-01-15 09:57:54 94f45c7 chore(linear_algebra/quadratic_form): Add missing simp lemmas about quadratic_form.polar (#5748) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean +/- theorem quadratic_form.map_neg +/- theorem quadratic_form.map_zero + theorem quadratic_form.polar_neg_left + theorem quadratic_form.polar_neg_right + theorem quadratic_form.polar_sub_left + theorem quadratic_form.polar_sub_right 2021-01-15 08:35:59 09c2345 feat(category_theory/over): epis and monos in the over category (#5684) ESTIMATED CHANGES Modified src/category_theory/over.lean + theorem category_theory.over.epi_of_epi_left + theorem category_theory.over.mono_of_mono_left 2021-01-15 08:35:56 395eb2b feat(category_theory): subterminal objects (#5669) ESTIMATED CHANGES Added src/category_theory/subterminal.lean + theorem category_theory.is_subterminal.def + def category_theory.is_subterminal.is_iso_diag + def category_theory.is_subterminal.iso_diag + theorem category_theory.is_subterminal.mono_is_terminal_from + theorem category_theory.is_subterminal.mono_terminal_from + def category_theory.is_subterminal + theorem category_theory.is_subterminal_of_is_iso_diag + theorem category_theory.is_subterminal_of_is_terminal + theorem category_theory.is_subterminal_of_mono_is_terminal_from + theorem category_theory.is_subterminal_of_mono_terminal_from + theorem category_theory.is_subterminal_of_terminal + def category_theory.subterminal_inclusion + def category_theory.subterminals 2021-01-15 08:35:54 f8db86a feat(category_theory/limits): finite products from binary products (#5516) Adds constructions for finite products from binary products and terminal object, and a preserves version ESTIMATED CHANGES Added src/category_theory/limits/shapes/constructions/finite_products_of_binary_products.lean + def category_theory.extend_fan + def category_theory.extend_fan_is_limit + theorem category_theory.has_finite_products_of_has_binary_and_terminal + def category_theory.preserves_finite_products_of_preserves_binary_and_terminal + def category_theory.preserves_ulift_fin_of_preserves_binary_and_terminal 2021-01-15 05:41:26 faf106a refactor(data/real/{e,}nnreal): reuse generic lemmas (#5751) * reuse `div_eq_mul_inv` and `one_div` from `div_inv_monoid`; * reuse lemmas about `group_with_zero` instead of repeating them in the `nnreal` namespace; * add `has_sum.div_const`. ESTIMATED CHANGES Modified src/analysis/analytic/radius_liminf.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/specific_limits.lean Modified src/data/real/ennreal.lean - theorem ennreal.div_def +/- theorem ennreal.div_top - theorem ennreal.mul_div_assoc +/- theorem ennreal.top_div_coe Modified src/data/real/nnreal.lean - theorem nnreal.div_def - theorem nnreal.div_div_eq_div_mul - theorem nnreal.div_div_eq_mul_div - theorem nnreal.div_eq_div_iff - theorem nnreal.div_eq_iff - theorem nnreal.div_eq_mul_one_div - theorem nnreal.div_mul_eq_mul_div - theorem nnreal.div_one +/- theorem nnreal.div_pos - theorem nnreal.div_pow - theorem nnreal.div_self - theorem nnreal.eq_div_iff - theorem nnreal.inv_eq_one_div - theorem nnreal.inv_eq_zero - theorem nnreal.inv_inv - theorem nnreal.inv_mul_cancel - theorem nnreal.inv_one - theorem nnreal.inv_zero - theorem nnreal.mul_div_assoc' - theorem nnreal.mul_div_cancel' - theorem nnreal.mul_div_cancel - theorem nnreal.mul_inv_cancel - theorem nnreal.one_div - theorem nnreal.one_div_div - theorem nnreal.pow_eq_zero - theorem nnreal.pow_ne_zero Modified src/measure_theory/haar_measure.lean Modified src/ring_theory/perfection.lean Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.div_const Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/lipschitz.lean 2021-01-15 05:41:24 931182e chore(algebra/ordered_ring): add a few simp lemmas (#5749) * fix misleading names `neg_lt_iff_add_nonneg` → `neg_lt_iff_pos_add`, `neg_lt_iff_add_nonneg'` → `neg_lt_iff_pos_add'`; * add `@[simp]` to `abs_mul_abs_self` and `abs_mul_self`; * add lemmas `neg_le_self_iff`, `neg_lt_self_iff`, `le_neg_self_iff`, `lt_neg_self_iff`, `abs_eq_self`, `abs_eq_neg_self`. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean + theorem abs_eq_neg_self + theorem abs_eq_self +/- theorem abs_mul_abs_self +/- theorem abs_mul_self + theorem le_neg_self_iff + theorem lt_neg_self_iff + theorem neg_le_self_iff + theorem neg_lt_self_iff +/- theorem neg_one_lt_zero 2021-01-15 02:19:33 5d003d8 chore(scripts): update nolints.txt (#5754) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-15 02:19:31 7151fb7 chore(data/equiv/basic): equiv/perm_congr simp lemmas (#5737) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.equiv_congr_refl_left + theorem equiv.equiv_congr_refl_right + theorem equiv.perm_congr_def + theorem equiv.perm_congr_symm + theorem equiv.perm_congr_symm_apply 2021-01-14 22:10:57 64a1b19 feat(data/equiv/basic): subsingleton equiv and perm (#5736) ESTIMATED CHANGES Modified src/category_theory/simple.lean Modified src/data/equiv/basic.lean + theorem equiv.perm.coe_subsingleton + theorem equiv.perm.subsingleton_eq_refl 2021-01-14 22:10:54 975f41a feat(order): closure operators (#5524) Adds closure operators on a partial order, as in [wikipedia](https://en.wikipedia.org/wiki/Closure_operator#Closure_operators_on_partially_ordered_sets). I made them bundled for no particular reason, I don't mind unbundling. ESTIMATED CHANGES Added src/order/closure.lean + def closure_operator.closed + theorem closure_operator.closed_eq_range_close + theorem closure_operator.closure_eq_self_of_mem_closed + theorem closure_operator.closure_inter_le + theorem closure_operator.closure_is_closed + theorem closure_operator.closure_le_closed_iff_le + theorem closure_operator.closure_top + theorem closure_operator.closure_union_closure_le + theorem closure_operator.ext + def closure_operator.gi + def closure_operator.id + theorem closure_operator.idempotent + theorem closure_operator.le_closure + theorem closure_operator.le_closure_iff + theorem closure_operator.mem_closed_iff + theorem closure_operator.mem_closed_iff_closure_le + theorem closure_operator.monotone + def closure_operator.to_closed + theorem closure_operator.top_mem_closed + structure closure_operator 2021-01-14 19:06:18 0817e7f feat(measure_theory): absolute continuity of the integral (#5743) ### API changes: #### `ennreal`s and `nnreal`s: * `ennreal.mul_le_mul` and `ennreal.mul_lt_mul` are now `mono` lemmas; * rename `ennreal.sub_lt_sub_self` to `ennreal.sub_lt_self`: there is no `-` in the RHS; * new lemmas `enrneal.mul_div_le`, `nnreal.sub_add_eq_max`, and `nnreal.add_sub_eq_max`; * add new lemma `ennreal.bsupr_add`, use in in the proof of `ennreal.Sup_add`; #### Complete lattice * new lemma `supr_lt_iff`; #### Simple functions * new lemmas `simple_func.exists_forall_le`, `simple_func.map_add`, `simple_func.sub_apply`; * weaker typeclass assumptions in `simple_func.coe_sub`; * `monotone_eapprox` is now a `mono` lemma; #### Integration * new lemmas `exists_simple_func_forall_lintegral_sub_lt_of_pos`, `exists_pos_set_lintegral_lt_of_measure_lt`, `tendsto_set_lintegral_zero`, and `has_finite_integral.tendsto_set_integral_nhds_zero`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.mul_div_le +/- theorem ennreal.mul_le_mul +/- theorem ennreal.mul_lt_mul Modified src/data/real/nnreal.lean + theorem nnreal.add_sub_eq_max + theorem nnreal.sub_add_eq_max Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.has_finite_integral.tendsto_set_integral_nhds_zero + theorem measure_theory.integrable.tendsto_set_integral_nhds_zero Modified src/measure_theory/content.lean Modified src/measure_theory/integration.lean + theorem measure_theory.exists_pos_set_lintegral_lt_of_measure_lt + theorem measure_theory.exists_simple_func_forall_lintegral_sub_lt_of_pos +/- theorem measure_theory.simple_func.coe_sub + theorem measure_theory.simple_func.exists_forall_le + theorem measure_theory.simple_func.map_add +/- theorem measure_theory.simple_func.monotone_eapprox + theorem measure_theory.simple_func.sub_apply + theorem measure_theory.tendsto_set_lintegral_zero Modified src/order/complete_lattice.lean + theorem supr_lt_iff Modified src/topology/instances/ennreal.lean + theorem ennreal.bsupr_add 2021-01-14 19:06:16 3b8cfdc feat(linear_algebra/{exterior,tensor,free}_algebra): provide left-inverses for `algebra_map` and `ι` (#5722) The strategy used for `algebra_map` here can't be used on `clifford_algebra` as the zero map does not satisfy `f m * f m = Q m`. ESTIMATED CHANGES Modified src/algebra/free_algebra.lean + def free_algebra.algebra_map_inv + theorem free_algebra.algebra_map_left_inverse Modified src/algebra/triv_sq_zero_ext.lean + def triv_sq_zero_ext.snd_hom Modified src/linear_algebra/exterior_algebra.lean + def exterior_algebra.algebra_map_inv + theorem exterior_algebra.algebra_map_left_inverse - theorem exterior_algebra.ι_injective + def exterior_algebra.ι_inv + theorem exterior_algebra.ι_left_inverse Modified src/linear_algebra/tensor_algebra.lean + def tensor_algebra.algebra_map_inv + theorem tensor_algebra.algebra_map_left_inverse - theorem tensor_algebra.ι_injective + def tensor_algebra.ι_inv + theorem tensor_algebra.ι_left_inverse 2021-01-14 15:25:47 91b099e chore(data/equiv/fin): simp definitional lemmas (#5740) ESTIMATED CHANGES Modified src/data/equiv/fin.lean + theorem fin_succ_equiv_succ + theorem fin_succ_equiv_symm_none + theorem fin_succ_equiv_symm_some + theorem fin_succ_equiv_zero 2021-01-14 15:25:44 7e9094b feat(control/equiv_functor): simp defn lemmas and injectivity (#5739) ESTIMATED CHANGES Modified src/control/equiv_functor.lean + theorem equiv_functor.map_equiv.injective + theorem equiv_functor.map_equiv_refl + theorem equiv_functor.map_equiv_symm +/- theorem equiv_functor.map_equiv_symm_apply + theorem equiv_functor.map_equiv_trans 2021-01-14 15:25:42 e3cc92e chore(data/equiv/basic): swap symm and trans simp lemmas (#5738) ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- theorem equiv.swap_self +/- theorem equiv.symm_trans_swap_trans + theorem equiv.trans_swap_trans_symm 2021-01-14 15:25:40 de8b88f chore(group_theory/perm/sign): trans and symm simp (#5735) ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean + theorem equiv.perm.sign_symm +/- theorem equiv.perm.sign_symm_trans_trans + theorem equiv.perm.sign_trans + theorem equiv.perm.sign_trans_trans_symm 2021-01-14 15:25:37 82532c1 chore(data/set/basic): reuse some proofs about `boolean_algebra` (#5728) API changes: * merge `set.compl_compl` with `compl_compl'`; * add `is_compl.compl_eq_iff`, `compl_eq_top`, and `compl_eq_bot`; * add `simp` attribute to `compl_le_compl_iff_le`; * fix misleading name in `compl_le_iff_compl_le`, add a missing variant; * add `simp` attribute to `compl_empty_iff` and `compl_univ_iff`; * add `set.subset.eventually_le`. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/data/set/basic.lean - theorem set.compl_compl +/- theorem set.compl_empty +/- theorem set.compl_empty_iff +/- theorem set.compl_inter +/- theorem set.compl_inter_self +/- theorem set.compl_union +/- theorem set.compl_univ +/- theorem set.compl_univ_iff +/- theorem set.inter_compl_self Modified src/measure_theory/measurable_space.lean Modified src/order/boolean_algebra.lean - theorem compl_compl' + theorem compl_compl + theorem compl_eq_bot + theorem compl_eq_top +/- theorem compl_le_compl_iff_le +/- theorem compl_le_iff_compl_le + theorem is_compl.compl_eq_iff + theorem le_compl_iff_le_compl Modified src/order/filter/basic.lean + theorem set.subset.eventually_le Modified src/order/filter/ultrafilter.lean Modified src/topology/separation.lean 2021-01-14 11:59:28 3b3f9a2 refactor(measure_theory): review def&API of the `dirac` measure (#5732) * use `set.indicator` instead of `⨆ a ∈ s, 1` in the definition. * rename some theorems to `thm'`, add a version assuming `[measurable_singleton_class α]` but not `is_measurable s`/`measurable f` under the old name. * rename some lemmas from `eventually` to `ae`. ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_dirac' +/- theorem measure_theory.integral_dirac Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/giry_monad.lean - theorem measure_theory.measure.map_dirac Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_dirac' +/- theorem measure_theory.lintegral_dirac Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_dirac_eq + theorem measure_theory.ae_dirac_iff + theorem measure_theory.ae_eq_dirac' + theorem measure_theory.ae_eq_dirac - theorem measure_theory.dirac_ae_eq - theorem measure_theory.eventually_dirac - theorem measure_theory.eventually_eq_dirac' - theorem measure_theory.eventually_eq_dirac +/- theorem measure_theory.measure.count_apply_infinite +/- theorem measure_theory.measure.dirac_apply' +/- theorem measure_theory.measure.dirac_apply +/- theorem measure_theory.measure.dirac_apply_of_mem + theorem measure_theory.measure.le_count_apply + theorem measure_theory.measure.le_dirac_apply + theorem measure_theory.measure.le_sum_apply + theorem measure_theory.measure.map_dirac + theorem measure_theory.mem_ae_dirac_iff - theorem measure_theory.mem_dirac_ae_iff Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/prod.lean Modified src/topology/algebra/infinite_sum.lean + theorem finset.tsum_subtype' 2021-01-14 11:59:26 8bc26d1 feat(algebra/order): ne_iff_lt_iff_le (#5731) ESTIMATED CHANGES Modified src/algebra/order.lean + theorem ne_iff_lt_iff_le Modified src/data/buffer/parser/basic.lean - theorem nat.le_of_sub_eq_pos - theorem ne_iff_lt_iff_le 2021-01-14 08:39:13 159542a chore(*): split some long lines (#5742) ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean +/- def ring_equiv.to_CommRing_iso Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Group/zero.lean Modified src/algebra/category/Module/basic.lean +/- def linear_equiv_iso_Module_iso Modified src/algebra/category/Mon/limits.lean Modified src/algebra/direct_limit.lean +/- theorem add_comm_group.direct_limit.of.zero_exact +/- theorem ring.direct_limit.of.zero_exact Modified src/algebra/free_algebra.lean Modified src/algebra/group/defs.lean Modified src/algebra/group_action_hom.lean +/- theorem is_invariant_subring.coe_subtype_hom Modified src/algebra/group_power/basic.lean +/- theorem min_pow_dvd_add +/- theorem pow_eq_zero Modified src/algebra/invertible.lean +/- def invertible.map +/- theorem invertible_unique Modified src/algebra/lie/basic.lean +/- theorem lie_algebra.equiv.coe_to_linear_equiv +/- theorem lie_module_equiv.coe_to_lie_module_hom Modified src/algebra/lie/classical.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/ordered.lean Modified src/algebra/module/pi.lean Modified src/algebra/monoid_algebra.lean +/- def add_monoid_algebra.lift_nc_alg_hom +/- theorem add_monoid_algebra.lift_nc_one Modified src/algebra/ring/pi.lean Modified src/algebraic_geometry/Scheme.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean +/- theorem composition.length_sigma_composition_aux +/- theorem formal_multilinear_series.comp_coeff_zero'' Modified src/analysis/calculus/deriv.lean +/- theorem has_deriv_within_at.union Modified src/analysis/calculus/fderiv.lean +/- theorem has_fderiv_within_at.union Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/hofer.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean +/- theorem nnnorm_sum_le +/- theorem tsum_of_norm_bounded Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/trigonometric.lean +/- theorem deriv_within_arctan +/- theorem real.angle.sin_eq_iff_eq_or_add_eq_pi +/- theorem real.cos_lt_cos_of_nonneg_of_le_pi_div_two Modified src/category_theory/adjunction/basic.lean +/- def category_theory.adjunction.right_adjoint_of_nat_iso Modified src/category_theory/concrete_category/basic.lean +/- theorem category_theory.concrete_category.epi_of_surjective +/- def category_theory.concrete_category.has_coe_to_sort +/- theorem category_theory.concrete_category.mono_of_injective +/- def category_theory.forget₂ +/- def category_theory.has_forget₂.mk' Modified src/category_theory/eq_to_hom.lean +/- theorem category_theory.eq_to_hom_op +/- theorem category_theory.eq_to_hom_unop Modified src/category_theory/graded_object.lean +/- def category_theory.graded_object_with_shift Modified src/combinatorics/pigeonhole.lean Modified src/control/uliftable.lean +/- def uliftable.down_map +/- def uliftable.up_map Modified src/data/analysis/filter.lean +/- theorem filter.realizer.of_equiv_σ +/- theorem filter.realizer.tendsto_iff Modified src/data/complex/is_R_or_C.lean Modified src/data/equiv/local_equiv.lean +/- theorem equiv.refl_to_local_equiv +/- theorem local_equiv.of_set_symm +/- theorem local_equiv.refl_restr_source +/- theorem local_equiv.refl_restr_target +/- theorem local_equiv.restr_target +/- theorem local_equiv.trans_target Modified src/data/fintype/basic.lean +/- def fintype.of_surjective +/- theorem mem_of_mem_perms_of_list +/- theorem mem_perms_of_list_iff +/- theorem set.to_finset_inj Modified src/data/qpf/multivariate/basic.lean Modified src/data/sym.lean +/- theorem sym.cons_equiv_eq_equiv_cons Modified src/data/typevec.lean +/- theorem typevec.const_append1 +/- def typevec.of_subtype +/- def typevec.rel_last' +/- theorem typevec.repeat_eq_append1 +/- theorem typevec.repeat_eq_iff_eq +/- theorem typevec.subtype_val_nil +/- def typevec.to_subtype +/- def typevec.typevec_cases_cons₂ +/- theorem typevec.typevec_cases_cons₂_append_fun +/- def typevec.typevec_cases_nil₃ Modified src/testing/slim_check/functions.lean +/- theorem slim_check.injective_function.apply_id_injective +/- def slim_check.injective_function.perm.slice Modified src/testing/slim_check/sampleable.lean +/- def slim_check.sum.shrink Modified src/topology/basic.lean +/- theorem interior_union_is_closed_of_interior_empty Modified src/topology/metric_space/gromov_hausdorff.lean +/- theorem Gromov_Hausdorff.eq_to_GH_space_iff +/- theorem Gromov_Hausdorff.to_GH_space_eq_to_GH_space_iff_isometric Modified src/topology/metric_space/hausdorff_distance.lean +/- theorem emetric.Hausdorff_edist_closure +/- theorem emetric.Hausdorff_edist_le_ediam +/- theorem emetric.Hausdorff_edist_zero_iff_closure_eq_closure +/- theorem emetric.exists_edist_lt_of_Hausdorff_edist_lt +/- theorem metric.Hausdorff_dist_closure Modified src/topology/metric_space/isometry.lean +/- theorem isometry.comp +/- def nonempty_compacts.Kuratowski_embedding Modified src/topology/separation.lean +/- theorem is_compact.finite_compact_cover +/- theorem nhds_inter_eq_singleton_of_mem_discrete Modified src/topology/sequences.lean +/- theorem is_compact.tendsto_subseq' Modified src/topology/subset_properties.lean +/- theorem is_preconnected_iff_subset_of_disjoint_closed Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean +/- theorem eq_of_uniformity_inf_nhds +/- theorem separation_rel_comap 2021-01-14 07:15:46 1509c29 chore(archive/100-theorems-list): 83_friendship_graphs (#5727) Cleaned up some lint and put it in terms of the new `simple_graph.common_neighbors`. ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean - def common_friends +/- theorem friendship.adj_matrix_pow_mod_p_of_regular +/- theorem friendship.false_of_three_le_degree +/- def friendship +/- theorem friendship_theorem - theorem mem_common_friends Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.mem_common_neighbors 2021-01-14 03:38:41 c8c6d2e feat(ci): Emit error messages in a way understood by github (#5726) This uses the commands described [here](https://github.com/actions/toolkit/blob/master/docs/commands.md#log-level), for which [the implementation](https://github.com/actions/toolkit/blob/af821474235d3c5e1f49cee7c6cf636abb0874c4/packages/core/src/command.ts#L36-L94) provides a slightly clearer spec. This means github now annotates broken lines, and highlights the error in red. Originally I tried to implement this using "problem matchers", but these do not support multi-line error messages. Supporting this in the linter is something that I'll leave for a follow-up PR. ESTIMATED CHANGES Modified scripts/detect_errors.py 2021-01-14 03:38:39 d11d83a feat(measure_theory/lebesgue_measure): volume of a box in `ℝⁿ` (#5635) ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_nat +/- theorem ennreal.nat_ne_top + theorem ennreal.of_real_coe_nat +/- theorem ennreal.top_ne_nat Modified src/data/real/nnreal.lean + theorem nnreal.mk_coe_nat + theorem nnreal.of_real_coe_nat Modified src/measure_theory/lebesgue_measure.lean + theorem real.volume_Icc_pi + theorem real.volume_Icc_pi_to_real + theorem real.volume_Ici + theorem real.volume_Iic + theorem real.volume_Iio + theorem real.volume_Ioi + theorem real.volume_pi_Ico + theorem real.volume_pi_Ico_to_real + theorem real.volume_pi_Ioc + theorem real.volume_pi_Ioc_to_real + theorem real.volume_pi_Ioo + theorem real.volume_pi_Ioo_to_real Modified src/measure_theory/pi.lean - theorem measure_theory.measure_space.pi_def +/- theorem measure_theory.volume_pi + theorem measure_theory.volume_pi_pi 2021-01-14 02:21:22 c050452 chore(scripts): update nolints.txt (#5730) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt Modified scripts/style-exceptions.txt 2021-01-13 21:36:30 71a3261 feat(logic/basic): exists_eq simp lemmas without and.comm (#5694) ESTIMATED CHANGES Modified src/control/traversable/instances.lean Modified src/data/buffer/parser/basic.lean - theorem exists_eq_right_right' - theorem exists_eq_right_right Modified src/data/list/perm.lean Modified src/logic/basic.lean + theorem exists_eq_right_right' + theorem exists_eq_right_right 2021-01-13 21:36:28 6397e14 feat(data/nat/cast): add nat.bin_cast for faster casting (#5664) [As suggested](https://github.com/leanprover-community/mathlib/pull/5462#discussion_r553226279) by @gebner. ESTIMATED CHANGES Modified src/data/nat/cast.lean + theorem nat.bin_cast_eq 2021-01-13 18:52:53 69e9344 feat(data/set/finite): add lemma with iff statement about when finite sets can be subsets (#5725) Part of #5698 in order to prove statements about strongly regular graphs. Co-author: @shingtaklam1324 ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.subset_iff_to_finset_subset 2021-01-13 18:52:51 0b9fbc4 feat(combinatorics/simple_graph/basic): add definition of common neighbors and lemmas (#5718) Part of #5698 in order to prove facts about strongly regular graphs ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + def simple_graph.common_neighbors + theorem simple_graph.common_neighbors_eq + theorem simple_graph.common_neighbors_subset_neighbor_set + theorem simple_graph.common_neighbors_symm + theorem simple_graph.degree_lt_card_verts + theorem simple_graph.is_regular_of_degree_eq + theorem simple_graph.not_mem_common_neighbors_left + theorem simple_graph.not_mem_common_neighbors_right 2021-01-13 18:52:49 7ce4717 refactor(computability/reduce): define many-one degrees without parameter (#2630) The file `reduce.lean` defines many-one degrees for computable reductions. At the moment every primcodable type `α` has a separate type of degrees `many_one_degree α`. This is completely antithetical to the notion of degrees, which are introduced to classify problems up to many-one equivalence. This PR defines a single `many_one_degree` type that lives in `Type 0`. We use the `ulower` infrastructure from #2574 which shows that every type is computably equivalent to a subset of natural numbers. The function `many_one_degree.of` which assigns to every set of a primcodable type a degree is still universe polymorphic. In particular, we show that `of p = of q ↔ many_one_equiv p q`, etc. in maximal generality, where `p` and `q` are subsets of different types in different universes. See previous discussion at #1203. ESTIMATED CHANGES Modified src/computability/partrec.lean + theorem computable.option_get_or_else + theorem computable.subtype_mk Modified src/computability/reduce.lean +/- def equiv.computable +/- theorem equivalence_of_many_one_equiv - def many_one_degree.add - theorem many_one_degree.add_le' - theorem many_one_degree.add_le + theorem many_one_degree.add_of - def many_one_degree.comap - def many_one_degree.le - theorem many_one_degree.le_add_left' - theorem many_one_degree.le_add_left - theorem many_one_degree.le_add_right' - theorem many_one_degree.le_add_right - theorem many_one_degree.le_antisymm - theorem many_one_degree.le_comap_left - theorem many_one_degree.le_comap_right - theorem many_one_degree.le_refl - theorem many_one_degree.le_trans +/- def many_one_degree.of + theorem many_one_degree.of_eq_of - theorem many_one_degree.of_le_of' +/- theorem many_one_degree.of_le_of +/- def many_one_degree - def many_one_equiv_setoid + theorem many_one_equiv_to_nat + theorem many_one_equiv_up + theorem many_one_reducible_to_nat + theorem many_one_reducible_to_nat_to_nat +/- theorem one_one_reducible.of_equiv +/- theorem one_one_reducible.of_equiv_symm +/- theorem reflexive_many_one_reducible +/- theorem reflexive_one_one_reducible + def to_nat + theorem to_nat_many_one_equiv + theorem to_nat_many_one_reducible +/- theorem transitive_many_one_reducible +/- theorem transitive_one_one_reducible + theorem ulower.down_computable 2021-01-13 16:08:10 d533fbb fix(finsupp/pointwise): Relax the ring requirement to semiring (#5723) ESTIMATED CHANGES Modified src/data/finsupp/pointwise.lean 2021-01-13 16:08:07 340ddf8 chore(scripts): don't assume cwd when running lint-style. (#5721) Allows running the linter from any ol' directory. ESTIMATED CHANGES Modified scripts/lint-style.py 2021-01-13 16:08:04 d351cfe feat(data/finset): sup_eq_bind (#5717) `finset.sup s f` is equal to `finset.bind s f` when `f : α → finset β` is an indexed family of finite sets. This is a proof of that with a couple supporting lemmas. (There might be a more direct proof through the definitions of `sup` and `bind`, which are eventually in terms of `multiset.foldr`.) I also moved `finset.mem_sup` to `multiset.mem_sup` and gave a new `finset.mem_sup` for indexed families of `finset`, where the old one was for indexed families of `multiset`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.val_to_finset Modified src/data/finset/lattice.lean +/- theorem finset.mem_sup + theorem finset.sup_eq_bind + theorem finset.sup_to_finset + theorem multiset.mem_sup Modified src/data/mv_polynomial/variables.lean 2021-01-13 16:08:02 3ac4bb2 feat(combinatorics/simple_graph/basic): add definition of complement of simple graph (#5697) Add definition of the complement of a simple graph. Part of branch [strongly_regular_graph](https://github.com/leanprover-community/mathlib/tree/strongly_regular_graph), with the goal of proving facts about strongly regular graphs. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + def simple_graph.compl + theorem simple_graph.compl_adj + theorem simple_graph.compl_compl + theorem simple_graph.compl_involutive + theorem simple_graph.compl_neighbor_set_disjoint + theorem simple_graph.neighbor_set_union_compl_neighbor_set_eq 2021-01-13 14:54:29 c8574c8 feat(analysis/special_functions/pow): add various lemmas about ennreal.rpow (#5701) ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.le_rpow_one_div_iff + theorem ennreal.lt_rpow_one_div_iff + theorem ennreal.rpow_eq_top_iff_of_pos + theorem ennreal.rpow_le_rpow_iff + theorem ennreal.rpow_left_bijective + theorem ennreal.rpow_left_injective + theorem ennreal.rpow_left_monotone_of_nonneg + theorem ennreal.rpow_left_strict_mono_of_pos + theorem ennreal.rpow_left_surjective + theorem ennreal.rpow_lt_rpow_iff + theorem ennreal.rpow_pos + theorem ennreal.rpow_pos_of_nonneg 2021-01-13 10:19:12 b6cca97 feat(linear_algebra/{exterior,tensor}_algebra): Prove that `ι` is injective (#5712) This strategy can't be used on `clifford_algebra`, and the obvious guess of trying to define a `less_triv_sq_quadratic_form_ext` leads to a non-associative multiplication; so for now, we just handle these two cases. ESTIMATED CHANGES Modified src/linear_algebra/exterior_algebra.lean + theorem exterior_algebra.ι_injective Modified src/linear_algebra/tensor_algebra.lean + theorem tensor_algebra.ι_injective 2021-01-13 02:51:51 b9b6b16 chore(scripts): update nolints.txt (#5720) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-13 02:51:48 5a532ca fix(tactic/ring): fix loop in ring (#5711) This occurs because when we name the atoms in `A * B = 2`, `A` is the first and `B` is the second, and once we put it in horner form it ends up as `B * A = 2`; but then when we go to rewrite it again `B` is named atom number 1 and `A` is atom number 2, so we write it the other way around and end up back at `A * B = 2`. The solution implemented here is to retain the atom map across calls to `ring.eval` while simp is driving it, so we end up rewriting it to `B * A = 2` in the first place but in the second pass we still think `B` is the second atom so we stick with the `B * A` order. Fixes #2672 ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean Modified src/data/pnat/xgcd.lean Modified src/tactic/ring.lean Modified test/ring.lean 2021-01-12 22:49:15 fe5ec00 doc(tactic/generalize_proofs): docs and test for generalize_proofs (#5715) As requested on Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Extracting.20un-named.20proofs.20from.20the.20goal.20state/near/222472426 ESTIMATED CHANGES Modified src/tactic/generalize_proofs.lean Added test/generalize_proofs.lean 2021-01-12 22:49:13 a7b800e doc(overview): small reorganization of algebra/number theory (#5707) - adds Witt vectors - adds perfection of a ring - deduplicates Zariski topology - moves some items to a new subsection "Number theory" ESTIMATED CHANGES Modified docs/overview.yaml 2021-01-12 19:31:47 c1894c8 chore(analysis|measure_theory|topology): give tsum notation precedence 67 (#5709) This saves us a lot of `()` In particular, lean no longer thinks that `∑' i, f i = 37` is a tsum of propositions. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/units.lean Modified src/analysis/p_series.lean Modified src/analysis/specific_limits.lean +/- theorem ennreal.tsum_geometric +/- theorem tsum_geometric_nnreal +/- theorem tsum_geometric_of_abs_lt_1 +/- theorem tsum_geometric_of_lt_1 +/- theorem tsum_geometric_of_norm_lt_1 +/- theorem tsum_geometric_two' +/- theorem tsum_geometric_two Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.measure_Union_le Modified src/measure_theory/outer_measure.lean +/- theorem measure_theory.extend_Union_le_tsum_nat Modified src/measure_theory/probability_mass_function.lean +/- theorem pmf.bind_apply +/- theorem pmf.tsum_coe Modified src/topology/algebra/infinite_sum.lean +/- theorem equiv.tsum_eq +/- theorem has_sum.tsum_eq +/- theorem summable.has_sum_iff +/- theorem summable.tsum_mul_left +/- theorem tsum_add +/- theorem tsum_eq_zero_iff +/- theorem tsum_eq_zero_of_not_summable +/- theorem tsum_fintype +/- theorem tsum_ite_eq +/- theorem tsum_le_tsum +/- theorem tsum_neg +/- theorem tsum_nonneg +/- theorem tsum_nonpos +/- theorem tsum_smul +/- theorem tsum_sub +/- theorem tsum_zero Modified src/topology/instances/ennreal.lean +/- theorem ennreal.summable_to_nnreal_of_tsum_ne_top +/- theorem ennreal.tendsto_sum_nat_add +/- theorem ennreal.to_nnreal_apply_of_tsum_ne_top +/- theorem ennreal.tsum_sub Modified src/topology/instances/nnreal.lean +/- theorem nnreal.coe_tsum +/- theorem nnreal.tsum_mul_left 2021-01-12 19:31:44 0e7a921 feat(data/buffer/parser/basic): lemmas describing parsers (#5460) ESTIMATED CHANGES Added src/data/buffer/parser/basic.lean + theorem exists_eq_right_right' + theorem exists_eq_right_right + theorem nat.le_of_sub_eq_pos + theorem ne_iff_lt_iff_le + def parse_result.pos + theorem parser.and_then_eq_bind + theorem parser.and_then_fail + theorem parser.and_then_success + theorem parser.any_char_eq_done + theorem parser.bind_eq_bind + theorem parser.bind_eq_done + theorem parser.bind_eq_fail + theorem parser.ch_eq_done + theorem parser.decorate_error_eq_done + theorem parser.decorate_error_eq_fail + theorem parser.decorate_error_fail + theorem parser.decorate_error_success + theorem parser.decorate_errors_eq_done + theorem parser.decorate_errors_eq_fail + theorem parser.decorate_errors_fail + theorem parser.decorate_errors_success + theorem parser.digit_eq_done + theorem parser.eof_eq_done + theorem parser.eps_eq_done + theorem parser.fail_iff + theorem parser.failure_def + theorem parser.failure_eq_fail + theorem parser.failure_eq_failure + theorem parser.fix_core_eq_done + theorem parser.fix_core_ne_done_zero + theorem parser.foldl_core_eq_done + theorem parser.foldl_core_succ_eq_fail + theorem parser.foldl_core_zero_eq_done + theorem parser.foldl_core_zero_eq_fail + theorem parser.foldl_eq_done + theorem parser.foldl_eq_fail + theorem parser.foldr_core_eq_done + theorem parser.foldr_core_succ_eq_fail + theorem parser.foldr_core_zero_eq_done + theorem parser.foldr_core_zero_eq_fail + theorem parser.foldr_eq_done + theorem parser.foldr_eq_fail + theorem parser.foldr_eq_fail_of_valid_at_end + theorem parser.guard_eq_done + theorem parser.guard_eq_fail + theorem parser.many'_eq_done + theorem parser.many1_eq_done + theorem parser.many1_eq_fail + theorem parser.many1_ne_done_nil + theorem parser.many_char1_eq_done + theorem parser.many_char1_ne_empty + theorem parser.many_char_eq_done_empty + theorem parser.many_char_eq_done_not_empty + theorem parser.many_char_eq_many_of_to_list + theorem parser.many_eq_done + theorem parser.many_eq_done_nil + theorem parser.many_eq_fail + theorem parser.map_const_eq_done + theorem parser.map_const_eq_fail + theorem parser.map_const_rev_eq_done + theorem parser.map_eq_done + theorem parser.map_eq_fail + theorem parser.map_rev_const_eq_fail + theorem parser.mmap'_eq_done + theorem parser.mmap_eq_done + theorem parser.not_failure_eq_done + theorem parser.one_of'_eq_done + theorem parser.one_of_eq_done + theorem parser.orelse_eq_done + theorem parser.orelse_eq_fail_eq + theorem parser.orelse_eq_fail_invalid_lt + theorem parser.orelse_eq_fail_of_valid_ne + theorem parser.orelse_eq_orelse + theorem parser.orelse_pure_eq_fail + theorem parser.pure_eq_done + theorem parser.pure_ne_fail + theorem parser.remaining_eq_done + theorem parser.return_eq_pure + theorem parser.sat_eq_done + theorem parser.sep_by1_eq_done + theorem parser.sep_by1_ne_done_nil + theorem parser.sep_by_eq_done_nil + theorem parser.seq_eq_done + theorem parser.seq_eq_fail + theorem parser.seq_left_eq_done + theorem parser.seq_left_eq_fail + theorem parser.seq_right_eq_done + theorem parser.seq_right_eq_fail + theorem parser.success_iff + theorem parser.valid.and_then + theorem parser.valid.any_char + theorem parser.valid.bind + theorem parser.valid.ch + theorem parser.valid.char_buf + theorem parser.valid.decorate_error + theorem parser.valid.decorate_errors + theorem parser.valid.digit + theorem parser.valid.eof + theorem parser.valid.eps + theorem parser.valid.failure + theorem parser.valid.fix + theorem parser.valid.fix_core + theorem parser.valid.foldl + theorem parser.valid.foldl_core + theorem parser.valid.foldl_core_zero + theorem parser.valid.foldr + theorem parser.valid.foldr_core + theorem parser.valid.foldr_core_zero + theorem parser.valid.guard + theorem parser.valid.many' + theorem parser.valid.many1 + theorem parser.valid.many + theorem parser.valid.many_char1 + theorem parser.valid.many_char + theorem parser.valid.map + theorem parser.valid.mmap' + theorem parser.valid.mmap + theorem parser.valid.mono_done + theorem parser.valid.mono_fail + theorem parser.valid.nat + theorem parser.valid.one_of' + theorem parser.valid.one_of + theorem parser.valid.orelse + theorem parser.valid.pure + theorem parser.valid.remaining + theorem parser.valid.sat + theorem parser.valid.sep_by1 + theorem parser.valid.sep_by + theorem parser.valid.seq + theorem parser.valid.str + def parser.valid Modified src/data/string/basic.lean + theorem list.as_string_eq + theorem list.as_string_inj + theorem list.to_list_inv_as_string + theorem string.as_string_inv_to_list + theorem string.head_empty + theorem string.nil_as_string_eq_empty + theorem string.popn_empty + theorem string.to_list_empty + theorem string.to_list_nonempty + theorem string.to_list_singleton Modified src/data/string/defs.lean + def string.head 2021-01-12 16:10:51 1025908 chore(topology/algebra/infinite_sum): speedup has_sum_sum (#5710) this lemma was pretty slow, now it is pretty fast ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean 2021-01-12 16:10:48 73ba460 feat(submonoid/basic): subsingleton and nontrivial instances for {add_,}submonoid (#5690) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.nontrivial_iff + theorem subgroup.subsingleton_iff Modified src/group_theory/submonoid/basic.lean + theorem submonoid.nontrivial_iff + theorem submonoid.subsingleton_iff Modified src/order/bounded_lattice.lean + theorem subsingleton_iff_bot_eq_top 2021-01-12 16:10:46 e76fdb9 docs(undergrad.yaml): analysis updates (#5675) Updates to `undergrad.yaml` (including reverting some changes from #5638, after further discussion), and fix a docstring typo in `measure_theory.interval_integral`. ESTIMATED CHANGES Modified docs/100.yaml Modified docs/undergrad.yaml Modified src/measure_theory/interval_integral.lean 2021-01-12 16:10:44 ce6a7eb feat(linear_algebra/multilinear_map): Add `range` and `map` (#5658) Note that unlike `linear_map`, `range` cannot return a submodule, only a `sub_mul_action`. We also can't guarantee closure under `smul` unless the map has at least one argument, as there is nothing requiring the multilinear map of no arguments to be zero. ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean + def multilinear_map.map + theorem multilinear_map.map_nonempty + def multilinear_map.range 2021-01-12 13:08:45 3a3ec6c feat(measure_theory): each set has a measurable superset of the same measure (#5688) * generalize `outer_measure.exists_is_measurable_superset_of_trim_eq_zero` to `outer_measure.exists_is_measurable_superset_eq_trim`; * generalize `exists_is_measurable_superset_of_null` to `exists_is_measurable_superset`; * define `to_measurable mu s` to be a measurable superset `t ⊇ s` with `μ t = μ s`; * prove `countable_cover_nhds`: in a `second_countable_topology`, if `f` sends each point `x` to a neighborhood of `x`, then some countable subfamily of neighborhoods `f x` cover the whole space. * `sigma_finite_of_countable` no longer assumes that all sets `s ∈ S` are measurable. ESTIMATED CHANGES Modified src/data/set/countable.lean + theorem set.exists_seq_cover_iff_countable + theorem set.exists_seq_supr_eq_top_iff_countable Modified src/measure_theory/borel_space.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.exists_is_measurable_superset + theorem measure_theory.is_measurable_to_measurable + theorem measure_theory.measure_to_measurable + theorem measure_theory.subset_to_measurable + def measure_theory.to_measurable Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.exists_is_measurable_superset_eq_trim Modified src/topology/bases.lean + theorem topological_space.countable_cover_nhds 2021-01-12 13:08:41 2671068 feat(data/set/intervals): add 2 Icc ssubset lemmas (#5617) Add two strict subset lemmas for Icc, discussed in https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Icc_ssubset_Icc. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_ssubset_Icc_left + theorem set.Icc_ssubset_Icc_right 2021-01-12 08:26:45 cd7a8a1 chore(category_theory/limits): move constructions folder (#5681) As mentioned here: https://github.com/leanprover-community/mathlib/pull/5516#issuecomment-753450199 The linter is giving new errors, so I might as well fix them in this PR. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean Renamed src/category_theory/limits/shapes/constructions/binary_products.lean to src/category_theory/limits/constructions/binary_products.lean Renamed src/category_theory/limits/shapes/constructions/equalizers.lean to src/category_theory/limits/constructions/equalizers.lean Renamed src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean to src/category_theory/limits/constructions/limits_of_products_and_equalizers.lean Renamed src/category_theory/limits/shapes/constructions/over/connected.lean to src/category_theory/limits/constructions/over/connected.lean +/- def category_theory.over.creates_connected.raised_cone_is_limit Renamed src/category_theory/limits/shapes/constructions/over/default.lean to src/category_theory/limits/constructions/over/default.lean Renamed src/category_theory/limits/shapes/constructions/over/products.lean to src/category_theory/limits/constructions/over/products.lean +/- def category_theory.over.construct_products.cones_equiv +/- def category_theory.over.construct_products.cones_equiv_counit_iso +/- def category_theory.over.construct_products.cones_equiv_unit_iso +/- theorem category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit +/- theorem category_theory.over.construct_products.over_product_of_wide_pullback +/- def category_theory.over.construct_products.wide_pullback_diagram_of_diagram_over Renamed src/category_theory/limits/shapes/constructions/pullbacks.lean to src/category_theory/limits/constructions/pullbacks.lean Modified src/order/category/omega_complete_partial_order.lean 2021-01-12 08:26:43 be75005 fix(linear_algebra/tensor_product): Remove the priorities from the module structure (#5667) These were added originally so that `semimodule'` was lower priority than `semimodule`, as the `semimodule'` instance took too long to resolve. However, this happens automatically anyway, since the former appears before the latter - the simple existence of the `semimodule` shortcut instances was enough to solve the long typeclass-resolution paths, their priority was a red herring. The only effect of these attributes was to cause these instances to not take priority over `add_comm_monoid.nat_semimodule`, which was neither intended nor desirable. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean 2021-01-12 07:23:33 cd0d8c0 chore(category_theory/limits/over): generalise, golf and document over limits (#5674) - Show that the forgetful functor `over X => C` creates colimits, generalising what was already there - Golf the proofs using this new instance - Add module doc and duals of the above ESTIMATED CHANGES Modified src/category_theory/limits/over.lean - def category_theory.over.colimit - def category_theory.over.forget_colimit_is_colimit - def category_theory.under.forget_limit_is_limit - def category_theory.under.limit 2021-01-12 02:03:22 9f9f85e chore(scripts): update nolints.txt (#5705) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-11 21:22:16 049f16a feat(measure_theory/pi): `ae_eq` lemmas about intervals in `Π i, α i` (#5633) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.pi_inter_distrib Modified src/data/set/lattice.lean +/- theorem set.pi_def + theorem set.pi_diff_pi_subset Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/pi.lean + theorem measure_theory.measure.ae_eq_pi + theorem measure_theory.measure.ae_eq_set_pi + theorem measure_theory.measure.ae_eval_ne + theorem measure_theory.measure.ae_le_pi + theorem measure_theory.measure.ae_le_set_pi + theorem measure_theory.measure.ae_pi_le_infi_comap + theorem measure_theory.measure.pi_Ico_ae_eq_pi_Icc + theorem measure_theory.measure.pi_Iio_ae_eq_pi_Iic + theorem measure_theory.measure.pi_Ioc_ae_eq_pi_Icc + theorem measure_theory.measure.pi_Ioi_ae_eq_pi_Ici + theorem measure_theory.measure.pi_Ioo_ae_eq_pi_Icc +/- theorem measure_theory.measure.pi_eval_preimage_null + theorem measure_theory.measure.pi_has_no_atoms +/- theorem measure_theory.measure.pi_hyperplane +/- theorem measure_theory.measure.pi_pi + theorem measure_theory.measure.tendsto_eval_ae_ae + theorem measure_theory.measure.univ_pi_Ico_ae_eq_Icc + theorem measure_theory.measure.univ_pi_Iio_ae_eq_Iic + theorem measure_theory.measure.univ_pi_Ioc_ae_eq_Icc + theorem measure_theory.measure.univ_pi_Ioi_ae_eq_Ici + theorem measure_theory.measure.univ_pi_Ioo_ae_eq_Icc 2021-01-11 10:10:45 b537cc0 feat(algebra/splitting_field): Restrict to splitting field (#5562) Restrict an alg_hom or alg_equiv to an is_splitting_field. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + def alg_equiv.restict_is_splitting_field_hom + def alg_equiv.restrict_is_splitting_field + theorem alg_equiv.restrict_is_splitting_field_commutes + theorem alg_equiv.restrict_is_splitting_field_trans + def alg_hom.restrict_is_splitting_field + def alg_hom.restrict_is_splitting_field_aux + theorem alg_hom.restrict_is_splitting_field_commutes + theorem alg_hom.restrict_is_splitting_field_comp + theorem is_splitting_field.range_to_alg_hom 2021-01-11 01:59:51 c112ad0 chore(scripts): update nolints.txt (#5699) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-10 22:38:07 08800bb feat(analysis/special/functions/trigonometric): complex trig and some even/odd lemmas (#5404) Complex (and some real) trigonometry lemmas, parity propositions, and some field algebra. ESTIMATED CHANGES Modified src/algebra/field.lean + theorem div_add_one + theorem div_add_same + theorem div_sub_one + theorem div_sub_same + theorem one_add_div + theorem one_sub_div + theorem same_add_div + theorem same_sub_div Modified src/analysis/normed_space/basic.lean + theorem eq_of_norm_sub_le_zero Modified src/analysis/special_functions/trigonometric.lean +/- theorem complex.exp_pi_mul_I + theorem complex.sin_eq_zero_iff_cos_eq + theorem complex.tan_add' + theorem complex.tan_add + theorem complex.tan_add_mul_I + theorem complex.tan_eq + theorem complex.tan_eq_zero_iff + theorem complex.tan_int_mul_pi + theorem complex.tan_int_mul_pi_div_two + theorem complex.tan_ne_zero_iff + theorem complex.tan_two_mul +/- theorem real.pi_ne_zero + theorem real.sin_ne_zero_iff + theorem real.tan_add' + theorem real.tan_add + theorem real.tan_eq_zero_iff + theorem real.tan_int_mul_pi + theorem real.tan_int_mul_pi_div_two + theorem real.tan_ne_zero_iff + theorem real.tan_two_mul Modified src/data/complex/exponential.lean + theorem complex.cos_add_mul_I + theorem complex.cos_eq + theorem complex.cos_mul_I + theorem complex.sin_add_mul_I + theorem complex.sin_eq + theorem complex.sin_mul_I + theorem complex.tan_mul_I + theorem complex.tanh_mul_I Modified src/data/int/parity.lean + theorem int.even_iff_not_odd + theorem int.even_or_odd' + theorem int.even_or_odd + theorem int.even_xor_odd' + theorem int.even_xor_odd + theorem int.not_odd_iff Modified src/data/nat/parity.lean + theorem nat.even_iff_not_odd + theorem nat.even_or_odd' + theorem nat.even_xor_odd' + theorem nat.even_xor_odd + theorem nat.not_odd_iff 2021-01-10 19:12:03 cc6f039 feat(equiv|set|topology): various additions (#5656) define sigma_compact_space update module doc for topology/subset_properties define shearing some lemmas in set.basic, equiv.mul_add and topology.instances.ennreal ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.prod_shear Modified src/data/equiv/mul_add.lean + theorem equiv.mul_left_symm_apply + theorem equiv.mul_right_symm_apply Modified src/data/set/basic.lean + theorem set.mk_preimage_prod + theorem set.mk_preimage_prod_left_fn_eq_if + theorem set.mk_preimage_prod_right_fn_eq_if + theorem set.prod_preimage_left + theorem set.prod_preimage_right Modified src/topology/algebra/group.lean + theorem homeomorph.shear_mul_right_coe + theorem homeomorph.shear_mul_right_symm_coe Modified src/topology/instances/ennreal.lean + theorem ennreal.supr_eq_zero Modified src/topology/subset_properties.lean + theorem Union_compact_covering + def compact_covering + theorem is_compact_compact_covering 2021-01-10 19:12:01 62c1912 chore(measure_theory/set_integral): use weaker assumptions here and there (#5647) * use `ae_measurable f (μ.restrict s)` in more lemmas; * introduce `measurable_at_filter` and use it. ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean +/- theorem interval_integral.fderiv_integral +/- theorem interval_integral.fderiv_integral_of_tendsto_ae +/- theorem interval_integral.integral_has_fderiv_at +/- theorem interval_integral.integral_has_fderiv_at_of_tendsto_ae +/- theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae Modified src/measure_theory/measurable_space.lean + theorem filter.eventually.exists_measurable_mem_of_lift' +/- theorem subsingleton.is_measurable +/- theorem subsingleton.measurable Modified src/measure_theory/measure_space.lean + theorem ae_measurable.ae_inf_principal_eq_mk + theorem ae_measurable.ae_mem_imp_eq_mk + theorem ae_measurable.mono_set + theorem ae_measurable_zero + theorem measure_theory.ae_imp_of_ae_restrict + theorem measure_theory.ae_zero + theorem measure_theory.le_ae_restrict + theorem measure_theory.measure.measure_inter_eq_zero_of_restrict + theorem subsingleton.ae_measurable Modified src/measure_theory/set_integral.lean + theorem ae_measurable.measurable_at_filter_of_mem + theorem continuous_on.integrable_at_nhds_within + theorem continuous_on.integral_sub_linear_is_o_ae + theorem continuous_within_at.integral_sub_linear_is_o_ae + theorem measurable_at_bot + def measurable_at_filter +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto_ae + theorem measure_theory.set_integral_congr + theorem measure_theory.set_integral_congr_ae 2021-01-10 17:59:16 3e7efd4 feat(field_theory/separable): Remove hypothesis in irreducible.separable (#5687) An irreducible polynomial is nonzero, so this hypothesis is unnecessary. ESTIMATED CHANGES Modified src/field_theory/separable.lean 2021-01-10 17:59:14 b72811f feat(order/complete_well_founded): characterise well-foundedness for complete lattices (#5575) ESTIMATED CHANGES Added src/order/complete_well_founded.lean + theorem complete_lattice.is_Sup_finite_compact.is_sup_closed_compact + def complete_lattice.is_Sup_finite_compact + theorem complete_lattice.is_Sup_finite_compact_iff_is_sup_closed_compact + theorem complete_lattice.is_sup_closed_compact.well_founded + def complete_lattice.is_sup_closed_compact + theorem complete_lattice.is_sup_closed_compact_iff_well_founded + theorem complete_lattice.well_founded.is_Sup_finite_compact + theorem complete_lattice.well_founded_characterisations + theorem complete_lattice.well_founded_iff_is_Sup_finite_compact 2021-01-10 14:47:11 0d9cb85 chore(order/filter): a few more lemmas about `eventually` and set operations (#5686) ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.inter_diff_self +/- theorem set.inter_union_compl +/- theorem set.inter_union_diff +/- theorem set.union_diff_left +/- theorem set.union_diff_right Modified src/data/set/disjointed.lean + theorem pairwise.mono Modified src/order/filter/basic.lean + theorem filter.eventually_le.compl + theorem filter.eventually_le.diff + theorem filter.eventually_le.inter + theorem filter.eventually_le.union Modified src/order/filter/countable_Inter.lean + theorem eventually_eq.countable_Inter + theorem eventually_eq.countable_Union + theorem eventually_eq.countable_bInter + theorem eventually_eq.countable_bUnion + theorem eventually_le.countable_Inter + theorem eventually_le.countable_Union + theorem eventually_le.countable_bInter + theorem eventually_le.countable_bUnion 2021-01-10 14:47:09 b0c35d1 chore(order/filter/basic): a few `simp` lemmas (#5685) ### Changes in `order/filter/basic` * add `filter.inter_mem_sets_iff`; * rename `filter.Inter_mem_sets` to `filter.bInter_mem_sets`, make it an `iff` `[simp]` lemma; * add a version `filter.bInter_finset_mem_sets` with a protected alias `finset.Inter_mem_sets`; * rename `filter.sInter_mem_sets_of_finite` to `filter.sInter_mem_sets`, make it an `iff` `[simp]` lemma; * rename `filter.Inter_mem_sets_of_fintype` to `filter.Inter_mem_sets`, make it an `iff` `[simp]` lemma * add `eventually` versions of the `*Inter_mem_sets` lemmas. ### New `@[mono]` attributes * `set.union_subset_union` and `set.inter_subset_inter` instead of `monotone_union` and `monotone_inter`; `mono*` failed to make a progress with `s ∩ t ⊆ s' ∩ t'` goal. * `set.image2_subset` * `closure_mono` ESTIMATED CHANGES Modified src/dynamics/omega_limit.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean +/- theorem filter.Inter_mem_sets - theorem filter.Inter_mem_sets_of_fintype + theorem filter.bInter_finset_mem_sets + theorem filter.bInter_mem_sets + theorem filter.eventually_all + theorem filter.eventually_all_finite + theorem filter.eventually_all_finset + theorem filter.inter_mem_sets_iff + theorem filter.sInter_mem_sets - theorem filter.sInter_mem_sets_of_finite Modified src/tactic/monotonicity/lemmas.lean Modified src/topology/basic.lean +/- theorem closure_mono Modified src/topology/constructions.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean 2021-01-10 09:02:16 1c4f2ae feat(data/equiv/basic, logic/embedding): swap commutes with injective functions (#5636) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem function.injective.swap_apply + theorem function.injective.swap_comp Modified src/logic/embedding.lean + theorem function.embedding.swap_apply + theorem function.embedding.swap_comp 2021-01-10 01:57:53 a28602a chore(scripts): update nolints.txt (#5682) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-09 16:50:50 f60c184 feat(algebra/lie/basic): Lie ideal operations are linear spans (#5676) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_submodule.lie_ideal_oper_eq_linear_span + theorem lie_submodule.lie_span_mono + theorem lie_submodule.mem_coe + theorem lie_submodule.submodule_span_le_lie_span 2021-01-09 15:06:06 5faf34c feat(measure_theory/lp_space): add more lemmas about snorm (#5644) ESTIMATED CHANGES Modified src/measure_theory/lp_space.lean +/- theorem ℒp_space.ae_eq_zero_of_snorm_eq_zero + theorem ℒp_space.mem_ℒp.ae_eq + theorem ℒp_space.mem_ℒp.sub + theorem ℒp_space.mem_ℒp_congr_ae + theorem ℒp_space.mem_ℒp_const + theorem ℒp_space.mem_ℒp_const_of_ne_zero + theorem ℒp_space.mem_ℒp_const_of_nonneg + theorem ℒp_space.snorm_congr_ae + theorem ℒp_space.snorm_const' + theorem ℒp_space.snorm_const + theorem ℒp_space.snorm_const_of_probability_measure + theorem ℒp_space.snorm_const_smul +/- theorem ℒp_space.snorm_eq_zero_iff +/- theorem ℒp_space.snorm_eq_zero_of_ae_zero' +/- theorem ℒp_space.snorm_eq_zero_of_ae_zero + theorem ℒp_space.snorm_exponent_zero + theorem ℒp_space.snorm_zero' - theorem ℒp_space.zero_mem_ℒp + theorem ℒp_space.zero_mem_ℒp_of_nonneg + theorem ℒp_space.zero_mem_ℒp_of_pos 2021-01-09 12:23:44 fdec90a chore(data/set/lattice): add a few simp lemmas (#5671) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.Inter_eq_univ +/- theorem set.Inter_univ +/- theorem set.Union_empty + theorem set.Union_eq_empty + theorem set.nonempty.of_sUnion + theorem set.nonempty.of_sUnion_eq_univ + theorem set.nonempty_Union + theorem set.nonempty_sUnion + theorem set.sInter_eq_univ + theorem set.sUnion_eq_empty 2021-01-09 12:23:42 3166f4e feat(topology/separation, topology/metric_space/basic): add lemmas on discrete subsets of a topological space (#5523) These lemmas form part of a simplification of the proofs of #5361. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.exists_ball_inter_eq_singleton_of_mem_discrete + theorem metric.exists_closed_ball_inter_eq_singleton_of_discrete Modified src/topology/separation.lean + theorem disjoint_nhds_within_of_mem_discrete + theorem filter.has_basis.exists_inter_eq_singleton_of_mem_discrete + theorem nhds_inter_eq_singleton_of_mem_discrete + theorem nhds_within_of_mem_discrete + theorem singleton_mem_nhds_within_of_mem_discrete 2021-01-09 10:41:15 a161256 feat(topology/algebra/ordered): prove `tendsto.Icc` for pi-types (#5639) ESTIMATED CHANGES Modified src/order/filter/interval.lean Modified src/order/filter/lift.lean + theorem filter.lift'_infi_powerset + theorem filter.tendsto_lift' + theorem filter.tendsto_lift Modified src/topology/algebra/ordered.lean 2021-01-09 03:54:42 faf1a98 chore(scripts): update nolints.txt (#5673) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-09 00:41:04 1294500 feat(category_theory/limits): preserving pullbacks (#5668) This touches multiple files but it's essentially the same thing as all my other PRs for preserving limits of special shapes - I can split it up if you'd like but hopefully this is alright? ESTIMATED CHANGES Modified src/category_theory/abelian/non_preadditive.lean Added src/category_theory/limits/preserves/shapes/pullbacks.lean + def category_theory.limits.is_limit_map_cone_pullback_cone_equiv + def category_theory.limits.is_limit_of_has_pullback_of_preserves_limit + def category_theory.limits.is_limit_of_is_limit_pullback_cone_map + def category_theory.limits.is_limit_pullback_cone_map_of_is_limit + def category_theory.limits.preserves_pullback.iso + theorem category_theory.limits.preserves_pullback.iso_hom + def category_theory.limits.preserves_pullback.of_iso_comparison Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.map_lift_pullback_comparison + def category_theory.limits.pullback_comparison + theorem category_theory.limits.pullback_comparison_comp_fst + theorem category_theory.limits.pullback_comparison_comp_snd +/- def category_theory.limits.pullback_cone.is_limit.mk + def category_theory.limits.pullback_is_pullback +/- def category_theory.limits.pushout_cocone.is_colimit.mk 2021-01-09 00:41:01 ce34ae6 chore(linear_algebra/alternating): golf a proof (#5666) `sign_mul` seems to have been marked `simp` recently, making it not necessary to include in `simp` calls. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/determinant.lean 2021-01-09 00:40:59 0cd70d0 chore(algebra/group/hom): fix additive version of docstring (#5660) ESTIMATED CHANGES Modified src/algebra/group/hom.lean Modified src/deprecated/group.lean 2021-01-08 21:30:46 2b5344f chore(analysis/special_functions/trigonometric): adding `@[pp_nodot]` to complex.log (#5670) Added `@[pp_nodot]` to complex.log ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean 2021-01-08 21:30:44 aab5994 feat(data/finset/intervals, data/set/intervals/basic): intersection of finset.Ico, union of intervals for sets and finsets (#5410) ESTIMATED CHANGES Modified src/data/finset/intervals.lean + theorem finset.Ico.coe_eq_Ico + theorem finset.Ico.inter + theorem finset.Ico.union' + theorem finset.Ico.union Modified src/data/list/intervals.lean Modified src/data/set/intervals/basic.lean + theorem set.Icc_union_Icc' + theorem set.Icc_union_Icc + theorem set.Icc_union_Ici' + theorem set.Icc_union_Ici + theorem set.Ico_union_Ici' + theorem set.Ico_union_Ici + theorem set.Ico_union_Ico' + theorem set.Ico_union_Ico + theorem set.Iic_union_Icc' + theorem set.Iic_union_Icc + theorem set.Iic_union_Ioc' + theorem set.Iic_union_Ioc + theorem set.Iio_union_Ico' + theorem set.Iio_union_Ico + theorem set.Iio_union_Ioo' + theorem set.Iio_union_Ioo + theorem set.Ioc_union_Ioc' + theorem set.Ioc_union_Ioi' + theorem set.Ioc_union_Ioi + theorem set.Ioo_union_Ioi' + theorem set.Ioo_union_Ioi + theorem set.Ioo_union_Ioo' + theorem set.Ioo_union_Ioo 2021-01-08 17:23:08 d935760 feat(algebra/linear_ordered_comm_group_with_zero): Add linear_ordered_comm_monoid_with_zero and an instance for nat (#5645) This generalizes a lot of statements about `linear_ordered_comm_group_with_zero` to `linear_ordered_comm_monoid_with_zero`. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_monoid.lean Modified src/data/nat/basic.lean 2021-01-08 17:23:06 2bde21d feat(geometry/manifold/times_cont_mdiff): API for checking `times_cont_mdiff` (#5631) Two families of lemmas: - to be `times_cont_mdiff`, it suffices to be `times_cont_mdiff` after postcomposition with any chart of the target - projection notation to go from `times_cont_diff` (in a vector space) to `times_cont_mdiff` ESTIMATED CHANGES Modified src/geometry/manifold/times_cont_mdiff.lean + theorem smooth_iff_target + theorem smooth_on_iff_target + theorem smooth_within_at_iff_target + theorem times_cont_diff.times_cont_mdiff + theorem times_cont_diff_at.times_cont_mdiff_at + theorem times_cont_diff_on.times_cont_mdiff_on + theorem times_cont_diff_within_at.times_cont_mdiff_within_at + theorem times_cont_mdiff_iff_target + theorem times_cont_mdiff_on_iff_target + theorem times_cont_mdiff_within_at_iff_target 2021-01-08 17:23:03 bd9b03f feat(category_theory/closed): Frobenius reciprocity of cartesian closed categories (#5624) A re-do of #4929. Re-defines the exponential comparison morphism (now as a natural transformation rather than a morphism with a naturality prop), and defines the Frobenius reciprocity morphism for an adjoint. In the case where the functor has a left adjoint, gives a sufficient condition for it to be cartesian closed, and a sufficient condition for a functor whose left adjoint preserves binary products to be cartesian closed (but doesn't show the necessity of this). - [x] depends on: #5623 ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean - def category_theory.exp_comparison - theorem category_theory.exp_comparison_natural_left - theorem category_theory.exp_comparison_natural_right Added src/category_theory/closed/functor.lean + def category_theory.cartesian_closed_functor_of_left_adjoint_preserves_binary_products + theorem category_theory.coev_exp_comparison + def category_theory.exp_comparison + theorem category_theory.exp_comparison_ev + def category_theory.exp_comparison_iso_of_frobenius_morphism_iso + theorem category_theory.exp_comparison_whisker_left + def category_theory.frobenius_morphism + def category_theory.frobenius_morphism_iso_of_exp_comparison_iso + theorem category_theory.frobenius_morphism_mate + theorem category_theory.uncurry_exp_comparison Modified src/category_theory/limits/shapes/binary_products.lean 2021-01-08 16:06:43 0d7ca98 feat(measure_theory/measure_space): ae_measurable and measurable are equivalent for complete measures (#5643) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem ae_measurable_iff_measurable + theorem measurable.ae_eq 2021-01-08 14:20:37 9f066f1 refactor(linear_algebra/alternating): Use unapplied maps when possible (#5648) Notably, this removes the need for a proof of `map_add` and `map_smul` in `def alternatization`, as the result is now already bundled with these proofs. This also: * Replaces `equiv.perm.sign p` with `p.sign` for brevity * Makes `linear_map.comp_alternating_map` an `add_monoid_hom` ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.coe_dom_dom_congr +/- def linear_map.comp_alternating_map + theorem multilinear_map.alternatization_def 2021-01-08 09:47:21 795d5ab chore(algebra/ordered_monoid): rename lemmas (#5657) I wanted to add the alias `pos_iff_ne_zero` for `zero_lt_iff_ne_zero`, but then I saw a note already in the library to do this renaming. So I went ahead. `le_zero_iff_eq` -> `nonpos_iff_eq_zero` `zero_lt_iff_ne_zero` -> `pos_iff_ne_zero` `le_one_iff_eq` -> `le_one_iff_eq_one` `measure.le_zero_iff_eq_zero'` -> `measure.nonpos_iff_eq_zero'` There were various specific types that had their own custom `pos_iff_ne_zero`-lemma, which caused nameclashes. Therefore: * remove `nat.pos_iff_ne_zero` * Prove that `cardinal` forms a `canonically_ordered_semiring`, remove various special case lemmas * There were lemmas `cardinal.le_add_[left|right]`. Generalized them to arbitrary canonically_ordered_monoids and renamed them to `self_le_add_[left|right]` (to avoid name clashes) * I did not provide a canonically_ordered_monoid class for ordinal, since that requires quite some work (it's true, right?) * `protect` various lemmas in `cardinal` and `ordinal` to avoid name clashes. ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified src/algebra/archimedean.lean Modified src/algebra/char_p/basic.lean Modified src/algebra/group_with_zero/power.lean Modified src/algebra/invertible.lean Modified src/algebra/ordered_monoid.lean - theorem le_one_iff_eq + theorem le_one_iff_eq_one +/- theorem one_lt_iff_ne_one + theorem self_le_mul_left + theorem self_le_mul_right Modified src/algebra/ordered_ring.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/convex/integral.lean Modified src/analysis/p_series.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/combinatorics/composition.lean Modified src/data/complex/exponential.lean Modified src/data/finset/basic.lean Modified src/data/list/basic.lean Modified src/data/mv_polynomial/basic.lean Modified src/data/nat/basic.lean - theorem nat.pos_iff_ne_zero Modified src/data/nat/cast.lean Modified src/data/nat/digits.lean Modified src/data/nat/fib.lean Modified src/data/nat/prime.lean Modified src/data/padics/padic_norm.lean Modified src/data/pnat/basic.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/data/polynomial/reverse.lean Modified src/data/rat/floor.lean Modified src/data/rat/sqrt.lean Modified src/data/real/cardinality.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/zmod/basic.lean Modified src/field_theory/separable.lean Modified src/group_theory/order_of_element.lean Modified src/linear_algebra/dimension.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/content.lean Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean - theorem measure_theory.measure.le_zero_iff_eq' + theorem measure_theory.measure.nonpos_iff_eq_zero' Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/simple_func_dense.lean Modified src/number_theory/pythagorean_triples.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/int/basic.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/roots_of_unity.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean Modified src/set_theory/cardinal.lean - theorem cardinal.add_le_add - theorem cardinal.add_le_add_left - theorem cardinal.add_le_add_right - theorem cardinal.le_add_left - theorem cardinal.le_add_right - theorem cardinal.le_iff_exists_add - theorem cardinal.le_zero - theorem cardinal.mul_le_mul - theorem cardinal.mul_le_mul_left - theorem cardinal.mul_le_mul_right - theorem cardinal.pos_iff_ne_zero - theorem cardinal.zero_le Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/game/state.lean Modified src/set_theory/ordinal.lean - theorem ordinal.le_zero - theorem ordinal.pos_iff_ne_zero - theorem ordinal.zero_le Modified src/set_theory/ordinal_arithmetic.lean Modified src/set_theory/ordinal_notation.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified test/library_search/nat.lean 2021-01-08 07:46:54 611bc86 feat(measure_theory/borel_space): locally finite measure is sigma finite (#5634) I forgot to add this to #5604 ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean 2021-01-08 05:13:37 efdcab1 refactor(algebra/module/basic): Clean up all the nat/int semimodule definitions (#5654) These were named inconsistently, and lots of proof was duplicated. The name changes are largely making the API for `nsmul` consistent with the one for `gsmul`: * For `ℕ`: * Replaces `nat.smul_def : n • x = n •ℕ x` with `nsmul_def : n •ℕ x = n • x` * Renames `semimodule.nsmul_eq_smul : n •ℕ b = (n : R) • b` to `nsmul_eq_smul_cast` * Removes `semimodule.smul_eq_smul : n • b = (n : R) • b` * Adds `nsmul_eq_smul : n •ℕ b = n • b` (this is different from `nsmul_def` as described in the docstring) * Renames the instances to be named more consistently and all live under `add_comm_monoid.nat_*` * For `ℤ`: * Renames `gsmul_eq_smul : n •ℤ x = n • x` to `gsmul_def` * Renames `module.gsmul_eq_smul : n •ℤ x = n • x` to `gsmul_eq_smul` * Renames `module.gsmul_eq_smul_cast` to `gsmul_eq_smul_cast` * Renames the instances to be named more consistently and all live under `add_comm_group.int_*` ESTIMATED CHANGES Modified src/algebra/module/basic.lean +/- def add_comm_group.int_module +/- def add_comm_monoid.nat_semimodule +/- theorem eq_zero_of_smul_two_eq_zero + theorem gsmul_def +/- theorem gsmul_eq_smul + theorem gsmul_eq_smul_cast - theorem module.gsmul_eq_smul - theorem module.gsmul_eq_smul_cast - theorem nat.smul_def + theorem nsmul_def + theorem nsmul_eq_smul + theorem nsmul_eq_smul_cast - theorem semimodule.nsmul_eq_smul - theorem semimodule.smul_eq_smul +/- theorem smul_nat_eq_zero Modified src/linear_algebra/alternating.lean Modified src/number_theory/arithmetic_function.lean Modified src/representation_theory/maschke.lean 2021-01-08 03:36:08 d89464d feat(topology/algebra): add additive/multiplicative instances (#5662) ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean 2021-01-08 02:05:16 7500b24 chore(scripts): update nolints.txt (#5661) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-08 02:05:14 4c3c8d7 feat(measure_theory): some additions (#5653) rename `exists_is_measurable_superset_of_measure_eq_zero` -> `exists_is_measurable_superset_of_null` make `measure.prod` and `measure.pi` irreducible ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem ennreal.measurable_div + theorem ennreal.measurable_inv +/- def homeomorph.to_measurable_equiv + theorem homeomorph.to_measurable_equiv_coe + theorem homeomorph.to_measurable_equiv_symm_coe + theorem measurable.ennreal_div + theorem measurable.ennreal_inv Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_lintegral_mul + theorem measure_theory.lintegral_one + theorem measure_theory.set_lintegral_const Modified src/measure_theory/measurable_space.lean + theorem measurable_equiv.self_comp_symm + theorem measurable_equiv.symm_comp_self Modified src/measure_theory/measure_space.lean - theorem measure_theory.exists_is_measurable_superset_of_measure_eq_zero + theorem measure_theory.exists_is_measurable_superset_of_null Modified src/measure_theory/pi.lean Modified src/measure_theory/prod.lean + theorem measure_theory.lintegral_prod_mul 2021-01-07 23:12:07 33a86cf chore(data/list/basic): tag mmap(') with simp (#5443) ESTIMATED CHANGES Modified src/data/list/basic.lean 2021-01-07 21:43:48 18ba69b feat(category_theory/sites): category of sheaves on the trivial topology (#5651) Shows that the category of sheaves on the trivial topology is just the category of presheaves. ESTIMATED CHANGES Modified src/category_theory/sites/sheaf_of_types.lean + def category_theory.SheafOfTypes_bot_equiv + theorem category_theory.presieve.is_sheaf_bot 2021-01-07 21:43:46 3c5d5c5 feat(category_theory/monad): reflector preserves terminal object (#5649) ESTIMATED CHANGES Modified src/category_theory/monad/limits.lean 2021-01-07 21:43:44 a30c39e feat(measure_theory/borel_space): a compact set has finite measure (#5628) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem is_compact.measure_lt_top + theorem is_compact.measure_lt_top_of_nhds_within 2021-01-07 21:43:41 4da8313 feat(category_theory/closed): golf definition and proofs (#5623) Using the new mates framework, simplify the definition of `pre` and shorten proofs about it. To be more specific, - `pre` is now explicitly a natural transformation, rather than indexed morphisms with a naturality property - The new definition of `pre` means things like `pre_map` which I complained about before are easier to prove, and `pre_post_comm` is automatic - There are now more lemmas relating `pre` to `coev`, `ev` and `uncurry`: `uncurry_pre` in particular was a hole in the API. - `internal_hom` has a shorter construction. In particular I changed the type to `Cᵒᵖ ⥤ C ⥤ C`, which I think is better since the usual external hom functor is given as `Cᵒᵖ ⥤ C ⥤ Type*`, so this is consistent with that. In a subsequent PR I'll do the same for `exp_comparison`, but that's a bigger change with improved API so they're separate for now. ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean + theorem category_theory.coev_app_comp_pre_app + theorem category_theory.exp_adjunction_counit + theorem category_theory.exp_adjunction_unit +/- def category_theory.internal_hom +/- def category_theory.pre +/- theorem category_theory.pre_id +/- theorem category_theory.pre_map - theorem category_theory.pre_post_comm + theorem category_theory.prod_map_pre_app_comp_ev + theorem category_theory.uncurry_pre 2021-01-07 21:43:39 fdbcab6 feat(category_theory/limits): the product comparison natural transformation (#5621) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.prod_comparison_nat_iso + def category_theory.limits.prod_comparison_nat_trans 2021-01-07 19:12:12 2894260 feat(group_theory): add lemmas on solvability (#5646) Proves some basic lemmas about solvable groups: the subgroup of a solvable group is solvable, a quotient of a solvable group is solvable. ESTIMATED CHANGES Modified src/group_theory/solvable.lean + theorem commutator_le_map_commutator + theorem derived_series_le_map_derived_series + theorem is_solvable_def + theorem is_solvable_of_top_eq_bot + theorem map_commutator_eq_commutator_map + theorem map_derived_series_eq + theorem map_derived_series_le_derived_series + theorem solvable_of_solvable_injective + theorem solvable_of_surjective Modified src/group_theory/subgroup.lean + theorem subgroup.map_eq_bot_iff 2021-01-07 13:09:27 66e02b3 feat(docs/100): Add Masdeu's formalisation of Euler's Summation to 100.yaml (#5655) ESTIMATED CHANGES Modified docs/100.yaml 2021-01-07 13:09:25 7bc2e9e feat(ring_theory/polynomial/cyclotomic): add cyclotomic.irreducible (#5642) I proved irreducibility of cyclotomic polynomials, showing that `cyclotomic n Z` is the minimal polynomial of any primitive root of unity. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.eq_of_monic_of_dvd_of_nat_degree_le Modified src/ring_theory/polynomial/cyclotomic.lean + theorem cyclotomic.irreducible + theorem minimal_polynomial_primitive_root_dvd_cyclotomic + theorem minimal_polynomial_primitive_root_eq_cyclotomic + theorem polynomial.is_root_cyclotomic Modified src/ring_theory/roots_of_unity.lean 2021-01-07 13:09:23 b9da50a feat(ring_theory/*): Various lemmas used to prove classical nullstellensatz (#5632) ESTIMATED CHANGES Modified src/field_theory/mv_polynomial.lean + theorem mv_polynomial.quotient_mk_comp_C_injective Modified src/ring_theory/ideal/operations.lean +/- theorem ideal.radical_idem + theorem ideal.ring_equiv.bot_maximal_iff Modified src/ring_theory/jacobson_ideal.lean +/- theorem ideal.eq_jacobson_iff_Inf_maximal' +/- theorem ideal.eq_jacobson_iff_Inf_maximal +/- theorem ideal.eq_jacobson_iff_not_mem +/- theorem ideal.eq_radical_of_eq_jacobson +/- theorem ideal.jacobson_eq_bot +/- theorem ideal.jacobson_eq_iff_jacobson_quotient_eq_bot +/- theorem ideal.jacobson_eq_self_of_is_maximal +/- theorem ideal.jacobson_eq_top_iff + theorem ideal.jacobson_idem + theorem ideal.jacobson_radical_eq_jacobson +/- theorem ideal.le_jacobson +/- theorem ideal.map_jacobson_of_bijective +/- theorem ideal.map_jacobson_of_surjective +/- theorem ideal.mem_jacobson_iff +/- theorem ideal.radical_eq_jacobson_iff_radical_quotient_eq_jacobson_bot +/- theorem ideal.radical_le_jacobson Modified src/ring_theory/polynomial/basic.lean + theorem mv_polynomial.map_mv_polynomial_eq_eval₂ 2021-01-07 13:09:21 3aea284 feat(analysis/normed_space): affine map with findim domain is continuous (#5627) ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean + theorem affine_map.continuous_linear_iff Modified src/analysis/normed_space/basic.lean + theorem dist_eq_norm' Modified src/analysis/normed_space/finite_dimension.lean + theorem affine_map.continuous_of_finite_dimensional Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.apply_apply 2021-01-07 13:09:18 833e9a0 chore(analysis/calculus): add `of_mem_nhds` versions of 2 lemmas (#5626) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem fderiv_within_of_mem_nhds Modified src/analysis/calculus/tangent_cone.lean + theorem unique_diff_within_at_of_mem_nhds 2021-01-07 13:09:16 e14d5eb feat(category_theory/limits): prod map is iso if components are (#5620) Show that if `f` and `g` are iso, then `prod.map f g` is an iso, and the dual. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean 2021-01-07 13:09:14 87ef7af feat(linear_algebra/pi_tensor_product): define the tensor product of an indexed family of semimodules (#5311) This PR defines the tensor product of an indexed family `s : ι → Type*` of semimodules over commutative semirings. We denote this space by `⨂[R] i, s i` and define it as `free_add_monoid (R × Π i, s i)` quotiented by the appropriate equivalence relation. The treatment follows very closely that of the binary tensor product in `linear_algebra/tensor_product.lean`. ESTIMATED CHANGES Added src/linear_algebra/pi_tensor_product.lean + theorem pi_tensor_product.add_tprod_coeff' + theorem pi_tensor_product.add_tprod_coeff + inductive pi_tensor_product.eqv + theorem pi_tensor_product.ext + theorem pi_tensor_product.lift.tprod + theorem pi_tensor_product.lift.unique' + theorem pi_tensor_product.lift.unique + def pi_tensor_product.lift + def pi_tensor_product.lift_add_hom + theorem pi_tensor_product.lift_aux.smul + def pi_tensor_product.lift_aux + theorem pi_tensor_product.lift_aux_tprod + theorem pi_tensor_product.lift_aux_tprod_coeff + theorem pi_tensor_product.lift_tprod + theorem pi_tensor_product.smul_tprod_coeff' + theorem pi_tensor_product.smul_tprod_coeff + theorem pi_tensor_product.smul_tprod_coeff_aux + def pi_tensor_product.tprod + def pi_tensor_product.tprod_coeff + theorem pi_tensor_product.tprod_coeff_eq_smul_tprod + theorem pi_tensor_product.zero_tprod_coeff' + theorem pi_tensor_product.zero_tprod_coeff + def pi_tensor_product 2021-01-07 10:05:38 47c6081 chore(group_theory/perm/sign): remove classical for sign congr simp lemmas (#5622) Previously, some lemmas about how `perm.sign` simplifies across various congrs of permutations assumed `classical`, which prevented them from being applied by the simplifier. This makes the `decidable_eq` assumptions explicit. ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean +/- theorem equiv.perm.sign_perm_congr +/- theorem equiv.perm.sign_prod_congr_left +/- theorem equiv.perm.sign_prod_congr_right +/- theorem equiv.perm.sign_prod_extend_right +/- theorem equiv.perm.sign_sum_congr Modified src/linear_algebra/determinant.lean 2021-01-07 10:05:35 9dd1496 chore(group_theory/perm/basic): Add some missing simp lemmas (#5614) `simp` can't find the appropriate `equiv` lemmas as they are about `refl` not `1`, even though those are defeq. ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + theorem equiv.perm.inv_trans + theorem equiv.perm.mul_refl + theorem equiv.perm.mul_symm + theorem equiv.perm.one_symm + theorem equiv.perm.one_trans + theorem equiv.perm.refl_inv + theorem equiv.perm.refl_mul + theorem equiv.perm.symm_mul + theorem equiv.perm.trans_inv + theorem equiv.perm.trans_one 2021-01-07 10:05:33 2457287 feat(algebra/subalgebra): Restrict injective algebra homomorphism to algebra isomorphism (#5560) The domain of an injective algebra homomorphism is isomorphic to its range. ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem alg_hom.alg_equiv.of_injective_apply 2021-01-07 10:05:31 2c8175f feat(algebra/algebra/ordered): ordered algebras (#4683) An ordered algebra is an ordered semiring, which is an algebra over an ordered commutative semiring, for which scalar multiplication is "compatible" with the two orders. ESTIMATED CHANGES Added src/algebra/algebra/ordered.lean + theorem algebra_map_monotone Modified src/algebra/ordered_ring.lean Modified src/analysis/convex/basic.lean +/- theorem concave_on.subset +/- theorem convex.mem_Icc 2021-01-07 08:51:54 95c7087 chore(docs/100.yaml): Freek No. 15 (#5638) I've updated docs/100.yaml to reflect the fact that both FTC-1 and FTC-2 have been added to mathlib. ESTIMATED CHANGES Modified docs/100.yaml Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/measure_theory/interval_integral.lean 2021-01-07 05:47:19 a32e223 refactor(analysis/special_functions/trigonometric): redefine arcsin and arctan (#5300) Redefine `arcsin` and `arctan` using `order_iso`, and prove that both of them are infinitely smooth. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem local_homeomorph.times_cont_diff_at_symm_deriv Modified src/analysis/special_functions/trigonometric.lean + theorem complex.times_cont_diff_at_tan + theorem fderiv_arctan + theorem fderiv_within_arctan + theorem has_fderiv_at.arctan + theorem has_fderiv_within_at.arctan + theorem measurable.arctan - theorem real.abs_div_sqrt_one_add_lt + theorem real.arccos_eq_pi + theorem real.arccos_eq_pi_div_two + theorem real.arccos_eq_zero +/- theorem real.arccos_inj + theorem real.arccos_inj_on + theorem real.arcsin_eq_iff_eq_sin + theorem real.arcsin_eq_neg_pi_div_two + theorem real.arcsin_eq_of_sin_eq + theorem real.arcsin_eq_pi_div_two +/- theorem real.arcsin_eq_zero_iff +/- theorem real.arcsin_inj + theorem real.arcsin_le_iff_le_sin' + theorem real.arcsin_le_iff_le_sin + theorem real.arcsin_le_neg_pi_div_two +/- theorem real.arcsin_le_pi_div_two + theorem real.arcsin_lt_iff_lt_sin' + theorem real.arcsin_lt_iff_lt_sin + theorem real.arcsin_lt_pi_div_two + theorem real.arcsin_lt_zero + theorem real.arcsin_mem_Icc +/- theorem real.arcsin_neg_one +/- theorem real.arcsin_nonneg +/- theorem real.arcsin_nonpos + theorem real.arcsin_of_le_neg_one + theorem real.arcsin_of_one_le +/- theorem real.arcsin_pos + theorem real.arcsin_proj_Icc + theorem real.arcsin_sin' + theorem real.arctan_eq_arcsin + theorem real.arctan_eq_of_tan_eq + theorem real.coe_sin_order_iso_apply + theorem real.coe_tan_local_homeomorph + theorem real.coe_tan_local_homeomorph_symm + theorem real.continuous_arccos + theorem real.continuous_arcsin + theorem real.continuous_at_arcsin + theorem real.continuous_at_arctan + theorem real.cos_arctan_pos + theorem real.cos_sq_arctan + theorem real.deriv_arccos + theorem real.deriv_arcsin + theorem real.deriv_arcsin_aux + theorem real.differentiable_arctan + theorem real.differentiable_at_arccos + theorem real.differentiable_at_arcsin + theorem real.differentiable_on_arccos + theorem real.differentiable_on_arcsin + theorem real.differentiable_within_at_arccos_Ici + theorem real.differentiable_within_at_arccos_Iic + theorem real.differentiable_within_at_arcsin_Ici + theorem real.differentiable_within_at_arcsin_Iic - theorem real.div_sqrt_one_add_lt_one + theorem real.has_deriv_at_arccos + theorem real.has_deriv_at_arcsin + theorem real.has_deriv_within_at_arccos_Ici + theorem real.has_deriv_within_at_arccos_Iic + theorem real.has_deriv_within_at_arcsin_Ici + theorem real.has_deriv_within_at_arcsin_Iic + theorem real.image_tan_Ioo + theorem real.inj_on_arcsin + theorem real.inj_on_tan + theorem real.le_arcsin_iff_sin_le' + theorem real.le_arcsin_iff_sin_le + theorem real.lt_arcsin_iff_sin_lt' + theorem real.lt_arcsin_iff_sin_lt + theorem real.maps_to_sin_Ioo + theorem real.measurable_arccos + theorem real.measurable_arcsin + theorem real.measurable_arctan + theorem real.monotone_arcsin - theorem real.neg_one_lt_div_sqrt_one_add + theorem real.neg_pi_div_two_eq_arcsin +/- theorem real.neg_pi_div_two_le_arcsin + theorem real.neg_pi_div_two_lt_arcsin + theorem real.pi_div_two_eq_arcsin + theorem real.pi_div_two_le_arcsin + theorem real.range_arcsin + theorem real.sin_arcsin' + def real.sin_local_homeomorph + def real.sin_order_iso + theorem real.sin_order_iso_apply + theorem real.strict_mono_decr_on_arccos + theorem real.strict_mono_incr_on_arcsin + theorem real.strict_mono_incr_on_tan + theorem real.surj_on_tan +/- theorem real.tan_arctan - def real.tan_homeomorph - theorem real.tan_homeomorph_inv_fun_eq_arctan + def real.tan_local_homeomorph +/- theorem real.tan_lt_tan_of_nonneg_of_lt_pi_div_two +/- theorem real.tan_nonpos_of_nonpos_of_neg_pi_div_two_le + def real.tan_order_iso + theorem real.times_cont_diff_arctan + theorem real.times_cont_diff_at_arccos + theorem real.times_cont_diff_at_arccos_iff + theorem real.times_cont_diff_at_arcsin + theorem real.times_cont_diff_at_arcsin_iff + theorem real.times_cont_diff_at_tan + theorem real.times_cont_diff_on_arccos + theorem real.times_cont_diff_on_arcsin + theorem real.zero_eq_arcsin_iff + theorem times_cont_diff.arctan + theorem times_cont_diff_at.arctan + theorem times_cont_diff_on.arctan + theorem times_cont_diff_within_at.arctan Modified src/data/subtype.lean + theorem subtype.coe_eq_iff Modified src/geometry/euclidean/basic.lean +/- theorem inner_product_geometry.angle_eq_pi_iff +/- theorem inner_product_geometry.angle_eq_zero_iff Modified src/geometry/euclidean/triangle.lean Modified src/topology/algebra/ordered.lean - theorem coe_homeomorph_of_strict_mono_continuous - theorem coe_homeomorph_of_strict_mono_continuous_Ioo 2021-01-07 02:28:43 3f35961 chore(scripts): update nolints.txt (#5652) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-06 23:23:44 f668be0 feat(data/list/zip): parameterize zip_append more generally (#5650) zip_append should only require that each pair of lists is of the same type ESTIMATED CHANGES Modified src/data/list/zip.lean +/- theorem list.zip_append 2021-01-06 16:21:02 f4128dc chore(ring_theory/ideal/basic): Make an argument to mul_mem_{left,right} explicit (#5611) Before this change, the lemmas with result `a * b ∈ I` did not have enough explicit arguments to determine both `a` and `b`, such as `I.mul_mem_left hb`. This resulted in callers using `show`, `@`, or sometimes ignoring the API and using `smul_mem` which does have appropriate argument explicitness. These callers have been cleaned up accordingly. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/data/padics/ring_homs.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/ideal/basic.lean +/- theorem ideal.mul_mem_left +/- theorem ideal.mul_mem_right Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/ideal/over.lean Modified src/ring_theory/ideal/prod.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/topology/algebra/ring.lean 2021-01-06 16:21:00 91fcb48 feat(linear_algebra/tensor_product,algebra/module/linear_map): Made tmul_smul and map_smul_of_tower work for int over semirings (#5430) With this change, ` ∀ (f : M →ₗ[S] M₂) (z : int) (x : M), f (z • x) = z • f x` can be proved with `linear_map.map_smul_of_tower` even when `S` is a semiring, and `z • (m ⊗ₜ n : M ⊗[S] N) = (r • m) ⊗ₜ n` can be proved with `tmul_smul`. ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean +/- theorem linear_map.map_smul_of_tower +/- def linear_map.restrict_scalars Modified src/linear_algebra/alternating.lean Modified src/linear_algebra/tensor_product.lean +/- theorem tensor_product.smul_tmul' +/- theorem tensor_product.smul_tmul +/- theorem tensor_product.tmul_smul 2021-01-06 13:54:26 eeb194d feat(analysis/normed_space/inner_product): facts about the span of a single vector, mostly in inner product spaces (#5589) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem findim_orthogonal_span_singleton + theorem inner_left_of_mem_orthogonal_singleton + theorem inner_right_of_mem_orthogonal_singleton + theorem orthogonal_projection_bot + theorem orthogonal_projection_orthogonal_complement_singleton_eq_zero + theorem orthogonal_projection_singleton + theorem orthogonal_projection_unit_singleton + theorem smul_orthogonal_projection_singleton Modified src/linear_algebra/basic.lean + theorem submodule.span_zero_singleton Modified src/linear_algebra/finite_dimensional.lean + theorem findim_span_singleton 2021-01-06 11:04:14 186ad76 feat(ring_theory/finiteness): add finitely presented algebra (#5407) This PR contains the definition of a finitely presented algebra and some very basic results. A lot of other fundamental results are missing (stability under composition, equivalence with finite type for noetherian rings ecc): I am ready to work on them, but I wanted some feedback. Feel free to convert to WIP if you think it's better to wait. ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean + def mv_polynomial.pempty_alg_equiv Modified src/ring_theory/finiteness.lean + theorem algebra.finite_type.of_finitely_presented + theorem algebra.finitely_presented.equiv + theorem algebra.finitely_presented.mv_polynomial + theorem algebra.finitely_presented.self + def algebra.finitely_presented 2021-01-06 11:04:12 35ff043 feat(ring_theory/fractional_ideal): move inv to dedekind_domain (#5053) Remove all instances of `inv` and I^{-1}. The notation (1 / I) is the one used for the old I^{-1}. ESTIMATED CHANGES Modified src/ring_theory/dedekind_domain.lean + theorem coe_inv_of_nonzero + theorem inv_eq + theorem inv_nonzero + theorem inv_zero' + theorem invertible_iff_generator_nonzero + theorem invertible_of_principal + theorem is_principal_inv + theorem map_inv + theorem mul_generator_self_inv + theorem mul_inv_cancel_iff + theorem right_inverse_eq + theorem span_singleton_inv Modified src/ring_theory/fractional_ideal.lean - theorem ring.fractional_ideal.coe_inv_of_nonzero +/- theorem ring.fractional_ideal.div_span_singleton + theorem ring.fractional_ideal.eq_one_div_of_mul_eq_one - theorem ring.fractional_ideal.inv_eq - theorem ring.fractional_ideal.inv_nonzero - theorem ring.fractional_ideal.inv_zero - theorem ring.fractional_ideal.invertible_iff_generator_nonzero - theorem ring.fractional_ideal.invertible_of_principal +/- theorem ring.fractional_ideal.is_noetherian + theorem ring.fractional_ideal.is_noetherian_span_singleton_inv_to_map_mul - theorem ring.fractional_ideal.is_noetherian_span_singleton_to_map_inv_mul - theorem ring.fractional_ideal.is_principal_inv - theorem ring.fractional_ideal.map_inv + theorem ring.fractional_ideal.map_one_div + theorem ring.fractional_ideal.mul_div_self_cancel_iff - theorem ring.fractional_ideal.mul_generator_self_inv - theorem ring.fractional_ideal.mul_inv_cancel_iff - theorem ring.fractional_ideal.right_inverse_eq - theorem ring.fractional_ideal.span_singleton_inv 2021-01-06 11:04:08 1db70a8 feat(computability/regular_expressions): define regular expressions (#5036) Very basic definitions for regular expressions ESTIMATED CHANGES Added src/computability/regular_expressions.lean + theorem regular_expression.add_rmatch_iff + theorem regular_expression.char_rmatch_iff + theorem regular_expression.comp_def + def regular_expression.deriv + def regular_expression.match_epsilon + def regular_expression.matches + theorem regular_expression.matches_add_def + theorem regular_expression.matches_epsilon_def + theorem regular_expression.matches_mul_def + theorem regular_expression.matches_star_def + theorem regular_expression.matches_zero_def + theorem regular_expression.mul_rmatch_iff + theorem regular_expression.one_def + theorem regular_expression.one_rmatch_iff + theorem regular_expression.plus_def + def regular_expression.rmatch + theorem regular_expression.rmatch_iff_matches + theorem regular_expression.star_rmatch_iff + theorem regular_expression.zero_def + theorem regular_expression.zero_rmatch + inductive regular_expression 2021-01-06 11:04:04 137a6e0 feat(tactic/rewrite_search): Automatically searching for chains of rewrites (#4841) This pull request is based on a branch originally developed by @semorrison , @khoek , and @jcommelin . The idea of rewrite_search is a tactic that will search through chains of potential rewrites to prove the goal, when the goal is an equality or iff statement. There are three key components: `discovery.lean` finds a bunch of rules that can be used to generate rewrites, `search.lean` runs a breadth-first-search algorithm on the two sides of the quality to find a path that connects them, and `explain.lean` generates Lean code from the resulting proof, so that you can replace the call to `rewrite_search` with the explicit steps for it. I removed some functionality from the rewrite_search branch and simplified the data structures somewhat in order to get this pull request small enough to be reviewed. If there is functionality from that branch that people particularly wanted, let me know and I can either include it in this PR or in a subsequent one. In particular, most of the configuration options are omitted. For data structures, the whole `table` data structure is gone, replaced by a `buffer` and `rb_map` for efficient lookup. Write access to the buffer is also append-only for efficiency. This seems to be a lot faster, although I haven't created specific performance benchmarks. ESTIMATED CHANGES Modified src/data/buffer/basic.lean Modified src/meta/expr_lens.lean Modified src/tactic/nth_rewrite/congr.lean Modified src/tactic/nth_rewrite/default.lean Added src/tactic/rewrite_search/default.lean Added src/tactic/rewrite_search/discovery.lean Added src/tactic/rewrite_search/explain.lean + def tactic.rewrite_search.dir_pair.get + def tactic.rewrite_search.dir_pair.set + def tactic.rewrite_search.dir_pair.to_list + def tactic.rewrite_search.dir_pair.to_string + structure tactic.rewrite_search.dir_pair + inductive tactic.rewrite_search.using_conv.app_addr + inductive tactic.rewrite_search.using_conv.splice_result Added src/tactic/rewrite_search/frontend.lean Added src/tactic/rewrite_search/search.lean Added src/tactic/rewrite_search/types.lean + def tactic.rewrite_search.side.to_xhs + inductive tactic.rewrite_search.side Added test/rewrite_search/rewrite_search.lean + def tactic.rewrite_search.testing.idf + theorem tactic.rewrite_search.testing.test_algebra + theorem tactic.rewrite_search.testing.test_linear_path + theorem tactic.rewrite_search.testing.test_pathfinding + theorem tactic.rewrite_search.testing.test_pp_1 + theorem tactic.rewrite_search.testing.test_pp_2 + theorem tactic.rewrite_search.testing.test_simpler_algebra 2021-01-06 08:30:32 062f244 feat(category_theory/monad): generalise limits lemma (#5630) A slight generalisation of a lemma already there. ESTIMATED CHANGES Modified src/category_theory/monad/limits.lean + theorem category_theory.has_limit_of_reflective + theorem category_theory.has_limits_of_shape_of_reflective 2021-01-06 08:30:30 56ed5d7 feat(category_theory/adjunction): mates (#5599) Adds some results on the calculus of mates. ESTIMATED CHANGES Added src/category_theory/adjunction/mates.lean + def category_theory.transfer_nat_trans + theorem category_theory.transfer_nat_trans_counit + def category_theory.transfer_nat_trans_self + theorem category_theory.transfer_nat_trans_self_comm + theorem category_theory.transfer_nat_trans_self_comp + theorem category_theory.transfer_nat_trans_self_counit + theorem category_theory.transfer_nat_trans_self_id + def category_theory.transfer_nat_trans_self_of_iso + theorem category_theory.transfer_nat_trans_self_symm_comm + theorem category_theory.transfer_nat_trans_self_symm_comp + theorem category_theory.transfer_nat_trans_self_symm_id + def category_theory.transfer_nat_trans_self_symm_of_iso + theorem category_theory.unit_transfer_nat_trans + theorem category_theory.unit_transfer_nat_trans_self 2021-01-06 08:30:28 5f98a96 feat(group_theory): add definition of solvable group (#5565) Defines solvable groups using the definition that a group is solvable if its nth commutator is eventually trivial. Defines the nth commutator of a group and provides some lemmas for working with it. More facts about solvable groups will come in future PRs. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Added src/data/bracket.lean Added src/group_theory/solvable.lean + theorem bot_general_commutator + theorem commutator_def' + def derived_series + theorem derived_series_normal + theorem derived_series_one + theorem derived_series_succ + theorem derived_series_zero + theorem general_commutator_bot + theorem general_commutator_comm + theorem general_commutator_def' + theorem general_commutator_def + theorem general_commutator_eq_commutator + theorem general_commutator_le + theorem general_commutator_le_inf + theorem general_commutator_le_left + theorem general_commutator_le_right + theorem general_commutator_mono Modified src/group_theory/subgroup.lean + theorem subgroup.closure_le_normal_closure + theorem subgroup.le_normal_closure + theorem subgroup.normal_closure_closure_eq_normal_closure + theorem subgroup.normal_closure_eq_self + theorem subgroup.normal_closure_idempotent 2021-01-06 08:30:25 648ff21 feat(algebra/lie/basic): the lattice of Lie submodules of a Noetherian Lie module is well-founded (#5557) The key result is: `well_founded_of_noetherian` ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_submodule.coe_submodule_injective + theorem lie_submodule.mem_coe_submodule + theorem lie_submodule.well_founded_of_noetherian 2021-01-06 05:36:16 3892155 fix(algebra/group/pi): use correct `div`/`sub` (#5625) Without an explicit `div := has_div.div`, `rw [pi.sub_apply]` fails sometimes. ESTIMATED CHANGES Modified src/algebra/group/pi.lean 2021-01-06 05:36:13 3d6ba9a feat(data/list/chain): chain pmap (#5438) Two chain pmap lemmas ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain_of_chain_pmap + theorem list.chain_pmap_of_chain 2021-01-06 02:30:13 de73912 chore(scripts): update nolints.txt (#5629) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/style-exceptions.txt 2021-01-06 02:30:10 19d2ea7 feat(order/atoms): Pairwise coprime (#5596) Don't really know what to call it, but it's the atom-level version of the statement that maximal ideals are pairwise coprime. ESTIMATED CHANGES Modified src/order/atoms.lean + theorem is_atom.disjoint_of_ne + theorem is_atom.inf_eq_bot_of_ne + theorem is_coatom.sup_eq_top_of_ne 2021-01-06 02:30:08 9fdd703 feat(linear_algebra/affine_space/midpoint): a few more lemmas (#5571) * simplify expressions like `midpoint R p₁ p₂ -ᵥ p₁` and `p₂ - midpoint R p₁ p₂`; * fix a typo in `data/set/intervals/surj_on`. ESTIMATED CHANGES Modified src/data/set/intervals/surj_on.lean Modified src/linear_algebra/affine_space/midpoint.lean + theorem left_sub_midpoint + theorem left_vsub_midpoint + theorem midpoint_sub_left + theorem midpoint_sub_right + theorem midpoint_vsub_left + theorem midpoint_vsub_right + theorem right_sub_midpoint + theorem right_vsub_midpoint 2021-01-06 02:30:06 731c26f refactor(*): swap sides of `iff` in `{rel_embedding,order_embedding}.map_rel_iff` (#5556) This way RHS is "simpler" than LHS. Other API changes (in `rel_embedding` and/or `ord_embedding` and/or `rel_iso` and/or `ord_iso` namespaces): * drop `map_le_iff`, rename `apply_le_apply` to `le_iff_le`; * drop `map_lt_iff`, rename `apply_lt_apply` to `lt_iff_lt`; * rename `apply_eq_apply` to `eq_iff_eq`. ESTIMATED CHANGES Modified src/data/fin.lean Modified src/data/finset/sort.lean Modified src/data/finsupp/lattice.lean Modified src/data/list/nodup_equiv_fin.lean Modified src/data/nat/enat.lean Modified src/data/setoid/basic.lean Modified src/data/setoid/partition.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/group_theory/congruence.lean Modified src/linear_algebra/basic.lean Modified src/order/galois_connection.lean Modified src/order/ord_continuous.lean Modified src/order/order_iso_nat.lean Modified src/order/rel_iso.lean - theorem order_embedding.apply_eq_apply - theorem order_embedding.apply_le_apply - theorem order_embedding.apply_lt_apply + theorem order_embedding.eq_iff_eq + theorem order_embedding.le_iff_le + theorem order_embedding.lt_iff_lt - theorem order_embedding.map_le_iff - theorem order_embedding.map_lt_iff - theorem order_iso.apply_le_apply - theorem order_iso.apply_lt_apply + theorem order_iso.le_iff_le + theorem order_iso.lt_iff_lt +/- theorem rel_embedding.map_rel_iff +/- theorem rel_iso.coe_fn_mk + theorem rel_iso.eq_iff_eq - theorem rel_iso.map_rel_iff'' +/- theorem rel_iso.map_rel_iff Modified src/order/semiconj_Sup.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean +/- def localization_map.order_embedding Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_arithmetic.lean 2021-01-06 00:02:09 8f424fc chore(measure_theory/pi): a few more lemmas (#5604) Also prove that a locally finite measure in a `second_countable_topology` is `sigma_finite`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.exists_is_open_measure_lt_top + theorem measure_theory.measure.finite_at_filter.exists_mem_basis + theorem measure_theory.measure.sigma_finite_of_countable + theorem measure_theory.measure.sigma_finite_of_not_nonempty Modified src/measure_theory/pi.lean + theorem measure_theory.measure.pi_eval_preimage_null + theorem measure_theory.measure.pi_hyperplane + theorem measure_theory.measure_space.pi_def + theorem measure_theory.volume_pi 2021-01-05 20:33:53 00d8617 feat(analysis/normed_space/inner_product): inner product is continuous, norm squared is smooth (#5600) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem continuous.inner + theorem continuous_at.inner + theorem continuous_on.inner + theorem continuous_within_at.inner + theorem deriv_inner_apply + theorem differentiable.norm_square + theorem differentiable_at.norm_square + theorem differentiable_on.norm_square + theorem differentiable_within_at.norm_square + theorem fderiv_inner_apply + def fderiv_inner_clm + theorem fderiv_inner_clm_apply + theorem filter.tendsto.inner + theorem has_deriv_at.inner + theorem has_deriv_within_at.inner + theorem has_fderiv_at.inner + theorem has_fderiv_within_at.inner + theorem measurable.inner + theorem times_cont_diff.norm_square + theorem times_cont_diff_at.norm_square + theorem times_cont_diff_norm_square + theorem times_cont_diff_on.norm_square + theorem times_cont_diff_within_at.norm_square 2021-01-05 20:33:51 0c8fffe fix(algebra/group/prod): fixes for #5563 (#5577) * rename `prod.units` to `mul_equiv.prod_units`; * rewrite it with better definitional equalities; * now `@[to_additive]` works: fixes #5566; * make `M` and `N` implicit in `mul_equiv.prod_comm` ESTIMATED CHANGES Modified src/algebra/group/prod.lean +/- theorem mul_equiv.coe_prod_comm + def mul_equiv.prod_units - def prod.units Modified src/algebra/group/units.lean + theorem units.inv_mk + theorem units.mk_coe Modified src/algebra/ring/prod.lean - theorem ring_equiv.coe_coe_prod_comm - theorem ring_equiv.coe_coe_prod_comm_symm +/- theorem ring_equiv.coe_prod_comm +/- theorem ring_equiv.coe_prod_comm_symm Modified src/ring_theory/ideal/prod.lean 2021-01-05 20:33:49 7cf0a29 feat(analysis/normed_space/inner_product): consequences of characterization of orthogonal projection (#5558) Reverse order of equality in the lemma `eq_orthogonal_projection_of_mem_of_inner_eq_zero`. Add some variants. Also add three consequences: - the orthogonal projection onto `K` of an element of `K` is itself - the orthogonal projection onto `K` of an element of `Kᗮ` is zero - for a submodule `K` of an inner product space, the sum of the orthogonal projections onto `K` and `Kᗮ` is the identity. Reverse order of `iff` in the lemma `submodule.eq_top_iff_orthogonal_eq_bot`, and rename to `submodule.orthogonal_eq_bot_iff`. ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/inner_product.lean +/- theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero +/- theorem eq_orthogonal_projection_of_eq_submodule +/- theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero + theorem eq_orthogonal_projection_of_mem_orthogonal' + theorem eq_orthogonal_projection_of_mem_orthogonal + theorem eq_sum_orthogonal_projection_self_orthogonal_complement +/- theorem exists_norm_eq_infi_of_complete_subspace + theorem id_eq_sum_orthogonal_projection_self_orthogonal_complement +/- theorem norm_eq_infi_iff_inner_eq_zero +/- theorem norm_eq_infi_iff_real_inner_eq_zero +/- theorem orthogonal_eq_inter +/- def orthogonal_projection +/- def orthogonal_projection_fn +/- theorem orthogonal_projection_fn_eq +/- theorem orthogonal_projection_fn_inner_eq_zero +/- theorem orthogonal_projection_fn_mem +/- theorem orthogonal_projection_fn_norm_sq +/- theorem orthogonal_projection_inner_eq_zero + theorem orthogonal_projection_mem_subspace_eq_self + theorem orthogonal_projection_mem_subspace_orthogonal_complement_eq_zero + theorem orthogonal_projection_mem_subspace_orthogonal_precomplement_eq_zero +/- theorem orthogonal_projection_norm_le - theorem submodule.eq_top_iff_orthogonal_eq_bot +/- theorem submodule.exists_sum_mem_mem_orthogonal +/- theorem submodule.inner_left_of_mem_orthogonal +/- theorem submodule.inner_right_of_mem_orthogonal +/- theorem submodule.is_closed_orthogonal +/- theorem submodule.is_compl_orthogonal_of_is_complete +/- theorem submodule.le_orthogonal_orthogonal +/- theorem submodule.mem_orthogonal' +/- theorem submodule.mem_orthogonal +/- def submodule.orthogonal +/- theorem submodule.orthogonal_disjoint + theorem submodule.orthogonal_eq_bot_iff + theorem submodule.orthogonal_eq_top_iff +/- theorem submodule.orthogonal_orthogonal +/- theorem submodule.sup_orthogonal_of_complete_space +/- theorem submodule.sup_orthogonal_of_is_complete Modified src/analysis/normed_space/operator_norm.lean + def submodule.subtype_continuous + theorem submodule.subtype_continuous_apply 2021-01-05 20:33:46 82ec0cc feat(ring_theory/roots_of_unity): degree of minimal polynomial (#5475) This is the penultimate PR about roots of unity and cyclotomic polynomials: I prove that the degree of the minimal polynomial of a primitive `n`th root of unity is at least `nat.totient n`. It's easy to prove now that it is actually `nat.totient n`, and indeed that the minimal polynomial is the cyclotomic polynomial (that it is hence irreducible). I decided to split the PR like this because I feel that it's better to put the remaining results in `ring_theory/polynomials/cyclotomic`. ESTIMATED CHANGES Modified src/data/polynomial/degree/lemmas.lean + theorem polynomial.nat_degree_map_le Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.is_roots_of_minimal_polynomial + theorem is_primitive_root.minimal_polynomial_eq_pow_coprime + theorem is_primitive_root.pow_is_root_minimal_polynomial + theorem is_primitive_root.totient_le_degree_minimal_polynomial 2021-01-05 18:04:53 d1b2d6e fix(linear_algebra/tensor_algebra): Correct the precedence of `⊗ₜ[R]` (#5619) Previously, `a ⊗ₜ[R] b = c` was interpreted as `a ⊗ₜ[R] (b = c)` which was nonsense because `eq` is not in `Type`. I'm not sure whether `:0` is necessary, but it seems harmless. The `:100` is the crucial bugfix here. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean +/- theorem tensor_product.tmul_zero +/- theorem tensor_product.zero_tmul Modified src/ring_theory/polynomial_algebra.lean Modified src/ring_theory/tensor_product.lean 2021-01-05 18:04:51 01e17a9 feat(scripts/lint-style.sh): check that Lean files don't have executable bit (#5606) ESTIMATED CHANGES Modified scripts/lint-style.sh Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/topology/path_connected.lean 2021-01-05 16:18:37 a6633e5 feat(analysis/normed_space/inner_product): new versions of Cauchy-Schwarz equality case (#5586) The existing version of the Cauchy-Schwarz equality case characterizes the pairs `x`, `y` with `abs ⟪x, y⟫ = ∥x∥ * ∥y∥`. This PR provides a characterization, with converse, of pairs satisfying `⟪x, y⟫ = ∥x∥ * ∥y∥`, and some consequences. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem norm_sub_eq_zero_iff Modified src/analysis/normed_space/inner_product.lean + theorem inner_eq_norm_mul_iff + theorem inner_eq_norm_mul_iff_of_norm_one + theorem inner_eq_norm_mul_iff_real + theorem inner_lt_norm_mul_iff_real + theorem inner_lt_one_iff_real_of_norm_one + theorem real_inner_le_norm Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.im_eq_zero_of_le + theorem is_R_or_C.re_eq_self_of_le 2021-01-05 14:50:35 1de608d refactor(measure_theory): integrate almost everywhere measurable functions (#5510) Currently, the Bochner integral is only defined for measurable functions. This means that, if `f` is continuous on an interval `[a, b]`, to be able to make sense of `∫ x in a..b, f`, one has to add a global measurability assumption, which is very much unnatural. This PR redefines the Bochner integral so that it makes sense for functions that are almost everywhere measurable, i.e., they coincide almost everywhere with a measurable function (This is equivalent to measurability for the completed measure, but we don't state or prove this as it is not needed to develop the theory). ESTIMATED CHANGES Modified src/analysis/convex/integral.lean +/- theorem convex.smul_integral_mem Modified src/analysis/mean_inequalities.lean Modified src/measure_theory/ae_eq_fun.lean +/- def measure_theory.ae_eq_fun.const +/- def measure_theory.ae_eq_fun.mk +/- theorem measure_theory.ae_eq_fun.mk_coe_fn +/- theorem measure_theory.ae_eq_fun.one_def - theorem measure_theory.ae_eq_fun.quotient_out'_eq_coe_fn +/- def measure_theory.measure.ae_eq_setoid Modified src/measure_theory/bochner_integration.lean - theorem measure_theory.integral_add_measure' +/- theorem measure_theory.integral_congr_ae +/- theorem measure_theory.integral_eq_lintegral_of_nonneg_ae + theorem measure_theory.integral_map_of_measurable + theorem measure_theory.integral_non_ae_measurable - theorem measure_theory.integral_non_measurable +/- theorem measure_theory.integral_to_real - theorem measure_theory.tendsto_integral_approx_on_univ + theorem measure_theory.tendsto_integral_approx_on_univ_of_measurable Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_add' + theorem measure_theory.lintegral_const_mul'' + theorem measure_theory.lintegral_eq_zero_iff' + theorem measure_theory.lintegral_map' + theorem measure_theory.lintegral_mul_const'' + theorem measure_theory.tendsto_lintegral_of_dominated_convergence' Modified src/measure_theory/interval_integral.lean +/- theorem continuous_on.interval_integrable +/- theorem continuous_on.interval_integrable_of_Icc +/- theorem filter.tendsto.eventually_interval_integrable +/- theorem filter.tendsto.eventually_interval_integrable_ae +/- theorem interval_integrable.refl +/- theorem interval_integrable.trans +/- theorem interval_integral.deriv_integral_left +/- theorem interval_integral.deriv_integral_of_tendsto_ae_left +/- theorem interval_integral.deriv_integral_of_tendsto_ae_right +/- theorem interval_integral.deriv_integral_right +/- theorem interval_integral.deriv_within_integral_left +/- theorem interval_integral.deriv_within_integral_of_tendsto_ae_left +/- theorem interval_integral.deriv_within_integral_of_tendsto_ae_right +/- theorem interval_integral.deriv_within_integral_right +/- theorem interval_integral.fderiv_integral +/- theorem interval_integral.fderiv_integral_of_tendsto_ae +/- theorem interval_integral.fderiv_within_integral_of_tendsto_ae +/- theorem interval_integral.integral_comp_add_right +/- theorem interval_integral.integral_comp_mul_right +/- theorem interval_integral.integral_comp_neg +/- theorem interval_integral.integral_has_deriv_at_left +/- theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_left +/- theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_right +/- theorem interval_integral.integral_has_deriv_at_right +/- theorem interval_integral.integral_has_deriv_within_at_left +/- theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_left +/- theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_right +/- theorem interval_integral.integral_has_deriv_within_at_right +/- theorem interval_integral.integral_has_fderiv_at +/- theorem interval_integral.integral_has_fderiv_at_of_tendsto_ae +/- theorem interval_integral.integral_has_fderiv_within_at +/- theorem interval_integral.integral_has_fderiv_within_at_of_tendsto_ae +/- theorem interval_integral.integral_has_strict_deriv_at_left +/- theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_left +/- theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_right +/- theorem interval_integral.integral_has_strict_deriv_at_right +/- theorem interval_integral.integral_has_strict_fderiv_at +/- theorem interval_integral.integral_has_strict_fderiv_at_of_tendsto_ae + theorem interval_integral.integral_non_ae_measurable - theorem interval_integral.integral_non_measurable +/- theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae Modified src/measure_theory/l1_space.lean + theorem integrable_zero_measure - theorem measurable.integrable_zero +/- theorem measure_theory.ae_eq_fun.integrable_mk + theorem measure_theory.integrable.ae_measurable +/- theorem measure_theory.integrable.congr' +/- theorem measure_theory.integrable.congr - theorem measure_theory.integrable.measurable +/- theorem measure_theory.integrable.mono' +/- theorem measure_theory.integrable.mono +/- theorem measure_theory.integrable_congr' +/- theorem measure_theory.integrable_congr +/- theorem measure_theory.integrable_norm_iff +/- theorem measure_theory.l1.mk_to_fun Modified src/measure_theory/lp_space.lean +/- theorem ℒp_space.mem_ℒp_of_snorm_lt_top +/- theorem ℒp_space.snorm_add_le Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/prod.lean + theorem ae_measurable.integral_prod_right' + theorem ae_measurable.prod_mk_left + theorem ae_measurable.prod_swap + theorem measure_theory.has_finite_integral_prod_iff' +/- theorem measure_theory.integrable_prod_iff' +/- theorem measure_theory.integrable_prod_iff +/- theorem measure_theory.integral_fn_integral_add +/- theorem measure_theory.integral_fn_integral_sub + theorem measure_theory.lintegral_prod' + theorem measure_theory.lintegral_prod_symm' Modified src/measure_theory/set_integral.lean + theorem continuous_on.ae_measurable +/- theorem continuous_on.integrable_on_compact + theorem measure_theory.ae_measurable_indicator_iff +/- theorem measure_theory.integrable_indicator_iff +/- theorem measure_theory.integrable_on_empty +/- theorem measure_theory.integrable_on_finite_union +/- theorem measure_theory.integrable_on_finset_union +/- theorem measure_theory.integral_indicator +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto_ae Modified src/measure_theory/simple_func_dense.lean 2021-01-05 10:34:59 8f9f5ca chore(linear_algebra/alternating): Use `have` instead of `simp only` (#5618) This makes the proof easier to read and less fragile to lemma changes. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean 2021-01-05 06:08:53 78dc23f chore(scripts/*): rename files of the style linter (#5605) The style linter has been doing a bit more than just checking for copyright headers, module docstrings, or line lengths. So I thought it made sense to reflect that in the filenames. ESTIMATED CHANGES Modified .github/workflows/build.yml Deleted scripts/lint-copy-mod-doc.sh Renamed scripts/lint-copy-mod-doc.py to scripts/lint-style.py Added scripts/lint-style.sh Renamed scripts/copy-mod-doc-exceptions.txt to scripts/style-exceptions.txt Renamed scripts/update-copy-mod-doc-exceptions.sh to scripts/update-style-exceptions.sh Modified scripts/update_nolints.sh 2021-01-05 03:19:32 6dcfa5c chore(scripts): update nolints.txt (#5615) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2021-01-04 23:56:31 12921e9 feat(tactic/simps): some improvements (#5541) * `@[simps]` would previously fail if the definition is not a constructor application (with the suggestion to add option `{rhs_md := semireducible}` and maybe `simp_rhs := tt`). Now it automatically adds `{rhs_md := semireducible, simp_rhs := tt}` whenever it reaches this situation. * Remove all (now) unnecessary occurrences of `{rhs_md := semireducible}` from the library. There are still a couple left where the `simp_rhs := tt` is undesirable. * `@[simps {simp_rhs := tt}]` now also applies `dsimp, simp` to the right-hand side of the lemmas it generates. * Add some `@[simps]` in `category_theory/limits/cones.lean` * `@[simps]` would not recursively apply projections of `prod` or `pprod`. This is now customizable with the `not_recursive` option. * Add an option `trace.simps.debug` with some debugging information. ESTIMATED CHANGES Modified src/algebra/category/Algebra/limits.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Group/limits.lean Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/currying.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/essential_image.lean Modified src/category_theory/limits/cones.lean - theorem category_theory.functor.cocones_map_app - theorem category_theory.functor.cocones_obj - theorem category_theory.functor.cones_map_app - theorem category_theory.functor.cones_obj - theorem category_theory.functor.map_cocone_X - theorem category_theory.functor.map_cocone_ι - theorem category_theory.functor.map_cone_X - theorem category_theory.functor.map_cone_π +/- theorem category_theory.limits.cocone.extend_ι +/- def category_theory.limits.cocone_left_op_of_cone - theorem category_theory.limits.cocone_left_op_of_cone_ι_app +/- def category_theory.limits.cocone_of_cone_left_op - theorem category_theory.limits.cocones.equivalence_of_reindexing_functor_obj +/- def category_theory.limits.cone_left_op_of_cocone - theorem category_theory.limits.cone_left_op_of_cocone_π_app +/- def category_theory.limits.cone_of_cocone_left_op - theorem category_theory.limits.cone_of_cocone_left_op_π_app - theorem category_theory.limits.cones.equivalence_of_reindexing_functor_obj Modified src/category_theory/limits/fubini.lean Modified src/category_theory/limits/presheaf.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/split_coequalizer.lean Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/coequalizer.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monad/monadicity.lean Modified src/category_theory/monoidal/CommMon_.lean Modified src/category_theory/monoidal/Mon_.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/internal/functor_category.lean Modified src/category_theory/monoidal/internal/limits.lean Modified src/category_theory/monoidal/transport.lean Modified src/category_theory/over.lean Modified src/category_theory/pi/basic.lean Modified src/category_theory/products/basic.lean Modified src/category_theory/sigma/basic.lean Modified src/category_theory/sites/sheaf_of_types.lean Modified src/category_theory/sites/types.lean Modified src/data/equiv/basic.lean Modified src/order/omega_complete_partial_order.lean +/- def omega_complete_partial_order.chain.map Modified src/tactic/simps.lean Modified src/topology/category/CompHaus.lean Modified src/topology/category/Profinite.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean Modified test/simps.lean - def foo.bar2 +/- def foo.rfl2 + structure my_type + def my_type_def - def specify.specify5 2021-01-04 22:10:37 78d5bd3 feat(analysis/normed_space/{finite_dimension, inner_product}): assorted finite-dimensionality lemmas (#5580) Two groups of lemmas about finite-dimensional normed spaces: - normed spaces of the same finite dimension are continuously linearly equivalent (this is a continuation of #5559) - variations on the existing lemma `submodule.findim_add_inf_findim_orthogonal`, that the dimensions of a subspace and its orthogonal complement sum to the dimension of the full space. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + def continuous_linear_equiv.of_findim_eq + theorem finite_dimensional.nonempty_continuous_linear_equiv_iff_findim_eq + theorem finite_dimensional.nonempty_continuous_linear_equiv_of_findim_eq Modified src/analysis/normed_space/inner_product.lean + theorem submodule.findim_add_findim_orthogonal' + theorem submodule.findim_add_findim_orthogonal + theorem submodule.findim_add_inf_findim_orthogonal' 2021-01-04 20:20:02 7b825f2 feat(linear_algebra/alternating): Add comp_alternating_map and lemmas (#5476) This is just `comp_multilinear_map` with the extra bundled proof ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem linear_map.coe_comp_alternating_map + def linear_map.comp_alternating_map + theorem linear_map.comp_alternating_map_apply + theorem linear_map.comp_multilinear_map_alternatization 2021-01-04 16:47:45 2300b47 chore(computability/*FA): remove unnecessary type variables (#5613) ESTIMATED CHANGES Modified src/computability/DFA.lean Modified src/computability/NFA.lean 2021-01-04 16:47:44 9535f91 feat(*): switch to lean 3.24 (#5612) ESTIMATED CHANGES Modified leanpkg.toml 2021-01-04 16:47:42 7d0b988 chore(data/equiv/basic): Add refl / symm / trans lemmas for equiv_congr (#5609) We already have this triplet of lemmas for `sum_congr` and `sigma_congr`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.equiv_congr_refl + theorem equiv.equiv_congr_symm + theorem equiv.equiv_congr_trans 2021-01-04 16:47:40 50beef2 feat(data/set/basic): more lemmas about `set.pi` (#5603) ESTIMATED CHANGES Modified src/data/pi.lean + theorem pi.one_def Modified src/data/set/basic.lean + theorem set.pi_congr + theorem set.pi_inter_compl + theorem set.pi_univ + theorem set.pi_update_of_mem + theorem set.pi_update_of_not_mem + theorem set.singleton_pi' + theorem set.union_pi + theorem set.univ_pi_update + theorem set.univ_pi_update_univ Modified src/data/set/intervals/pi.lean + theorem set.disjoint_pi_univ_Ioc_update_left_right + theorem set.pi_univ_Ioc_update_left + theorem set.pi_univ_Ioc_update_right + theorem set.pi_univ_Ioc_update_union 2021-01-04 12:04:36 3669cb3 feat(data/real/ennreal): add `ennreal.prod_lt_top` (#5602) Also add `with_top.can_lift`, `with_top.mul_lt_top`, and `with_top.prod_lt_top`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem with_top.prod_lt_top Modified src/algebra/ordered_ring.lean + theorem with_top.mul_lt_top Modified src/data/real/ennreal.lean + theorem ennreal.prod_lt_top Modified src/order/bounded_lattice.lean 2021-01-04 08:50:41 4150136 chore(logic/function): generalize `rel_update_iff` to `forall_update_iff` (#5601) ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.forall_update_iff - theorem function.rel_update_iff Modified src/order/basic.lean 2021-01-04 08:50:39 6acf99e fix(data/nat/basic): fix typos in docstrings (#5592) ESTIMATED CHANGES Modified src/data/nat/basic.lean 2021-01-04 05:36:22 afbf47d feat(data/*, order/*) supporting lemmas for characterising well-founded complete lattices (#5446) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.eq_singleton_iff_nonempty_unique_mem + theorem finset.not_nonempty_iff_eq_empty Modified src/data/finset/lattice.lean + theorem finset.inf_eq_Inf + theorem finset.sup_closed_of_sup_closed + theorem finset.sup_eq_Sup Modified src/data/set/basic.lean + theorem set.eq_singleton_iff_nonempty_unique_mem Modified src/data/set/finite.lean + theorem set.finite.preimage_embedding Modified src/order/complete_lattice.lean + theorem eq_singleton_bot_of_Sup_eq_bot_of_nonempty + theorem eq_singleton_top_of_Inf_eq_top_of_nonempty Modified src/order/rel_iso.lean + theorem rel_hom.map_inf + theorem rel_hom.map_sup 2021-01-04 02:31:40 2434023 chore(scripts): update nolints.txt (#5598) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2021-01-03 23:19:01 1503cf8 doc(overview): add dynamics and `measure.pi` (#5597) ESTIMATED CHANGES Modified docs/overview.yaml 2021-01-03 23:18:59 4fcf65c fix(tactic/rcases): fix rcases? goal alignment (#5576) This fixes a bug in which `rcases?` will not align the goals correctly in the same manner as `rcases`, leading to a situation where the hint produced by `rcases?` does not work in `rcases`. Also fixes a bug where missing names will be printed as `[anonymous]` instead of `_`. Fixes #2794 ESTIMATED CHANGES Modified src/tactic/rcases.lean Modified test/rcases.lean + inductive foo 2021-01-03 23:18:57 96948e4 feat(measure_theory): almost everywhere measurable functions (#5568) This PR introduces a notion of almost everywhere measurable function, i.e., a function which coincides almost everywhere with a measurable function, and builds a basic API around the notion. It will then be used in #5510 to extend the Bochner integral. The main new definition in the PR is `h : ae_measurable f μ`. It comes with `h.mk f` building a measurable function that coincides almost everywhere with `f` (these assertions are respectively `h.measurable_mk` and `h.ae_eq_mk`). ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ae_measurable.ennreal_rpow_const Modified src/measure_theory/borel_space.lean + theorem ae_measurable.const_smul + theorem ae_measurable.edist + theorem ae_measurable.ennnorm + theorem ae_measurable.ennreal_coe + theorem ae_measurable.ennreal_mul + theorem ae_measurable.inv + theorem ae_measurable.max + theorem ae_measurable.min + theorem ae_measurable.mul + theorem ae_measurable.nnnorm + theorem ae_measurable.norm + theorem ae_measurable.smul + theorem ae_measurable.sub + theorem ae_measurable.to_real + theorem ae_measurable_comp_iff_of_closed_embedding + theorem ae_measurable_const_smul_iff + theorem ae_measurable_smul_const + theorem continuous.ae_measurable2 - theorem measurable.ennreal_add Modified src/measure_theory/measurable_space.lean + theorem measurable_of_not_nonempty Modified src/measure_theory/measure_space.lean + theorem ae_measurable.add_measure + theorem ae_measurable.ae_eq_mk + theorem ae_measurable.comp_measurable + theorem ae_measurable.congr + theorem ae_measurable.is_null_measurable + theorem ae_measurable.measurable_mk + def ae_measurable.mk + theorem ae_measurable.mono_measure + theorem ae_measurable.prod_mk + theorem ae_measurable.smul_measure + def ae_measurable + theorem ae_measurable_add_measure_iff + theorem ae_measurable_congr + theorem ae_measurable_const + theorem ae_measurable_smul_measure_iff + theorem is_null_measurable_iff_ae + theorem is_null_measurable_iff_sandwich + theorem measurable.ae_measurable + theorem measurable.comp_ae_measurable + theorem measure_theory.ae_eq_comp + theorem measure_theory.ae_eq_set + theorem measure_theory.ae_restrict_iff' + theorem measure_theory.ae_smul_measure_iff + theorem measure_theory.measure.map_mono + theorem restrict_apply_of_is_null_measurable 2021-01-03 23:18:53 2967793 feat(data/option/basic): join and associated lemmas (#5426) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.bind_eq_bind + theorem option.bind_id_eq_join + theorem option.bind_map_comm + theorem option.join_eq_join + theorem option.join_eq_some + theorem option.join_join + theorem option.join_map_eq_map_join + theorem option.join_ne_none' + theorem option.join_ne_none + theorem option.mem_of_mem_join Modified src/data/option/defs.lean + def option.join 2021-01-03 23:18:51 d04e034 feat(measure_theory/interval_integral): FTC-2 (#4945) The second fundamental theorem of calculus and supporting lemmas ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean + theorem constant_of_deriv_within_zero + theorem constant_of_has_deriv_right_zero + theorem eq_of_deriv_within_eq + theorem eq_of_has_deriv_right_eq Modified src/measure_theory/interval_integral.lean + theorem continuous_on.interval_integrable_of_Icc + theorem interval_integral.continuous_on_integral_of_continuous + theorem interval_integral.differentiable_on_integral_of_continuous + theorem interval_integral.integral_deriv_eq_sub + theorem interval_integral.integral_eq_sub_of_has_deriv_at' + theorem interval_integral.integral_eq_sub_of_has_deriv_at + theorem interval_integral.integral_eq_sub_of_has_deriv_right + theorem interval_integral.integral_eq_sub_of_has_deriv_right_of_le 2021-01-03 20:40:21 46c35cc fix(algebra/module/basic): Do not attach the ℕ and ℤ `is_scalar_tower` and `smul_comm_class` instances to a specific definition of smul (#5509) These instances are in `Prop`, so the more the merrier. Without this change, these instances are not available for alternative ℤ-module definitions. An example of one of these alternate definitions is `linear_map.semimodule`, which provide a second non-defeq ℤ-module structure alongside `add_comm_group.int_module`. With this PR, both semimodule structures are shown to satisfy `smul_comm_class` and `is_scalar_tower`; while before it, only `add_comm_group.int_module` was shown to satisfy these. This PR makes the following work: ```lean example {R : Type*} {M₁ M₂ M₃ : Type*} [comm_semiring R] [add_comm_monoid M₁] [semimodule R M₁] [add_comm_monoid M₂] [semimodule R M₂] [add_comm_monoid M₃] [semimodule R M₃] (f : M₁ →ₗ[R] M₂ →ₗ[R] M₃) (x : M₁) (n : ℕ) : f (n • x) = n • f x := by simp ``` ESTIMATED CHANGES Modified src/algebra/module/basic.lean 2021-01-03 18:36:11 e1138b0 feat(measure_theory/lp_space): snorm is zero iff the function is zero ae (#5595) Adds three lemmas, one for both directions of the iff, `snorm_zero_ae` and `snorm_eq_zero`, and the iff lemma `snorm_eq_zero_iff`. ESTIMATED CHANGES Modified src/measure_theory/lp_space.lean + theorem ℒp_space.ae_eq_zero_of_snorm_eq_zero + theorem ℒp_space.snorm_eq_zero_iff + theorem ℒp_space.snorm_eq_zero_of_ae_zero' + theorem ℒp_space.snorm_eq_zero_of_ae_zero + theorem ℒp_space.snorm_measure_zero_of_exponent_zero + theorem ℒp_space.snorm_measure_zero_of_neg + theorem ℒp_space.snorm_measure_zero_of_pos 2021-01-03 16:58:07 ae2c857 feat(measure_theory/lp_space): add triangle inequality for the Lp seminorm (#5594) ESTIMATED CHANGES Modified src/measure_theory/lp_space.lean + theorem ℒp_space.snorm_add_le 2021-01-03 16:58:05 384ba88 feat(computability/*FA): Deterministic and Nondeterministic Finite Automata (#5038) Definition and equivalence of NFA's and DFA's ESTIMATED CHANGES Added src/computability/DFA.lean + def DFA.accepts + def DFA.eval + def DFA.eval_from + structure DFA Added src/computability/NFA.lean + def DFA.to_NFA + theorem DFA.to_NFA_correct + theorem DFA.to_NFA_eval_from_match + def NFA.accepts + def NFA.eval + def NFA.eval_from + theorem NFA.mem_step_set + def NFA.step_set + def NFA.to_DFA + theorem NFA.to_DFA_correct + structure NFA 2021-01-03 14:06:47 eb6d5f1 feat(analysis/normed_space/basic): basic facts about the sphere (#5590) Basic lemmas about the sphere in a normed group or normed space. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem eq_zero_of_eq_neg + theorem eq_zero_of_smul_two_eq_zero + theorem ne_neg_of_ne_zero + theorem smul_nat_eq_zero Modified src/analysis/normed_space/basic.lean + theorem coe_neg_sphere + theorem mem_sphere_iff_norm + theorem mem_sphere_zero_iff_norm + theorem ne_neg_of_mem_sphere + theorem ne_neg_of_mem_unit_sphere + theorem nonzero_of_mem_sphere + theorem nonzero_of_mem_unit_sphere + theorem norm_eq_of_mem_sphere Modified src/topology/metric_space/basic.lean + theorem metric.mem_sphere 2021-01-03 11:59:40 0837fc3 feat(measure_theory/pi): finite products of measures (#5414) See module doc of `measure_theory/pi.lean` ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem is_measurable.tprod + theorem measurable_tprod_elim' + theorem measurable_tprod_elim + theorem measurable_tprod_mk Added src/measure_theory/pi.lean + def measure_theory.measure.pi' + theorem measure_theory.measure.pi'_pi + theorem measure_theory.measure.pi'_pi_le + theorem measure_theory.measure.pi_caratheodory + theorem measure_theory.measure.pi_pi + theorem measure_theory.measure.tprod_cons + theorem measure_theory.measure.tprod_nil + theorem measure_theory.measure.tprod_tprod + theorem measure_theory.measure.tprod_tprod_le + theorem measure_theory.outer_measure.le_pi + theorem measure_theory.outer_measure.pi_pi_le + def measure_theory.pi_premeasure + theorem measure_theory.pi_premeasure_pi' + theorem measure_theory.pi_premeasure_pi + theorem measure_theory.pi_premeasure_pi_eval + theorem measure_theory.pi_premeasure_pi_mono 2021-01-03 08:56:55 e350114 feat(data/equiv/basic): rfl lemma for equiv_congr (#5585) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.equiv_congr_apply_apply 2021-01-03 05:59:33 57c6d19 feat(combinatorics/simple_graph): finitely many simple graphs on a finite type (#5584) Adds an `ext` lemma for simple graphs and an instance that there are finitely many if the vertex set is finite. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2021-01-03 05:59:31 9fc7aa5 feat(data/finset/basic): add `finset.piecewise_le_piecewise` (#5572) * add `finset.piecewise_le_piecewise` and `finset.piecewise_le_piecewise'`; * add `finset.piecewise_compl`. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/data/finset/basic.lean + theorem finset.piecewise_le_piecewise' + theorem finset.piecewise_le_piecewise Modified src/data/fintype/basic.lean + theorem finset.piecewise_compl 2021-01-03 02:24:46 0a4fbd8 chore(data/prod): add `prod.forall'` and `prod.exists'` (#5570) They work a bit better with curried functions. ESTIMATED CHANGES Modified src/data/prod.lean + theorem prod.exists' - theorem prod.exists + theorem prod.forall' - theorem prod.forall + theorem prod.«exists» + theorem prod.«forall» 2021-01-03 02:24:43 0dc7a27 feat(data/nat/fib): fib n is a strong divisibility sequence (#5555) ESTIMATED CHANGES Modified src/data/nat/fib.lean + theorem nat.fib_add + theorem nat.fib_coprime_fib_succ + theorem nat.fib_dvd + theorem nat.fib_gcd + theorem nat.gcd_fib_add_mul_self + theorem nat.gcd_fib_add_self Modified src/data/nat/gcd.lean + theorem nat.gcd_add_mul_self 2021-01-03 02:24:41 9f25244 chore(data/finset/sort): upgrade `finset.mono_of_fin` to an `order_iso` (#5495) * Upgrade `finset.mono_of_fin` to an `order_embedding`. * Drop some lemmas that now immediately follow from `order_embedding.*`. * Upgrade `finset.mono_equiv_of_fin` to `order_iso`. * Define `list.nodup.nth_le_equiv` and `list.sorted.nth_le_iso`. * Upgrade `mono_equiv_of_fin` to an `order_iso`, make it `computable`. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean Modified src/combinatorics/composition.lean - theorem composition.mono_of_fin_boundaries + theorem composition.order_emb_of_fin_boundaries +/- def composition_as_set.boundary +/- theorem composition_as_set.boundary_zero Modified src/data/finset/basic.lean + theorem finset.coe_fin_range Modified src/data/finset/sort.lean + theorem finset.coe_order_iso_of_fin_apply - def finset.mono_of_fin - theorem finset.mono_of_fin_bij_on - theorem finset.mono_of_fin_eq_mono_of_fin_iff - theorem finset.mono_of_fin_injective - theorem finset.mono_of_fin_last - theorem finset.mono_of_fin_singleton - theorem finset.mono_of_fin_strict_mono - theorem finset.mono_of_fin_unique' - theorem finset.mono_of_fin_unique - theorem finset.mono_of_fin_zero + def finset.order_emb_of_fin + theorem finset.order_emb_of_fin_apply + theorem finset.order_emb_of_fin_eq_order_emb_of_fin_iff + theorem finset.order_emb_of_fin_last + theorem finset.order_emb_of_fin_singleton + theorem finset.order_emb_of_fin_unique' + theorem finset.order_emb_of_fin_unique + theorem finset.order_emb_of_fin_zero + def finset.order_iso_of_fin + theorem finset.order_iso_of_fin_symm_apply - theorem finset.range_mono_of_fin + theorem finset.range_order_emb_of_fin +/- theorem finset.sort_sorted_lt Modified src/data/fintype/sort.lean + def mono_equiv_of_fin Added src/data/list/nodup_equiv_fin.lean + theorem list.nodup.coe_nth_le_equiv_apply + theorem list.nodup.coe_nth_le_equiv_symm_apply + def list.nodup.nth_le_equiv + theorem list.sorted.coe_nth_le_iso_apply + theorem list.sorted.coe_nth_le_iso_symm_apply + def list.sorted.nth_le_iso + theorem list.sorted.nth_le_mono + theorem list.sorted.nth_le_strict_mono Modified src/linear_algebra/affine_space/independent.lean + theorem affine.simplex.face_points' Modified src/linear_algebra/multilinear.lean + def multilinear_map.restr 2021-01-03 02:24:39 9ea7e46 feat(linear_algebra/alternating): Show the link to linear_independent (#5477) ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.map_linear_dependent + theorem alternating_map.map_update_sum Modified src/linear_algebra/multilinear.lean +/- theorem multilinear_map.map_sum +/- theorem multilinear_map.map_sum_finset +/- theorem multilinear_map.map_sum_finset_aux + theorem multilinear_map.map_update_sum 2021-01-03 02:24:36 04f8fd7 feat(group_theory/dihedral): add dihedral groups (#5171) Contains a subset of the content of #1076 , but implemented slightly differently. In #1076, finite and infinite dihedral groups are implemented separately, but a side effect of what I did was that `dihedral 0` corresponds to the infinite dihedral group. ESTIMATED CHANGES Added src/group_theory/dihedral.lean + theorem dihedral.card + theorem dihedral.one_def + theorem dihedral.order_of_r + theorem dihedral.order_of_r_one + theorem dihedral.order_of_sr + theorem dihedral.r_mul_r + theorem dihedral.r_mul_sr + theorem dihedral.r_one_pow + theorem dihedral.r_one_pow_n + theorem dihedral.sr_mul_r + theorem dihedral.sr_mul_self + theorem dihedral.sr_mul_sr + inductive dihedral 2021-01-03 00:36:14 ee2c963 doc(overview): pluralization convention (#5583) Normalized pluralizations, according to the convention @PatrickMassot described ESTIMATED CHANGES Modified docs/overview.yaml 2021-01-03 00:36:12 e698290 doc(overview): Add alternating_map (#5582) ESTIMATED CHANGES Modified docs/overview.yaml 2021-01-03 00:36:10 1a39825 doc(overview): combinatorics section (#5581) Added overview entries for simple graphs and some pigeonhole principles ESTIMATED CHANGES Modified docs/overview.yaml 2021-01-03 00:36:08 5bff887 doc(overview): add missing algebras to overview (#5579) ESTIMATED CHANGES Modified docs/overview.yaml 2021-01-03 00:36:06 e094606 chore(topology/algebra/ordered,analysis/specific_limits): two more limits (#5573) ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem tendsto_pow_at_top_nhds_within_0_of_lt_1 Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.div_at_top 2021-01-02 20:59:51 aa88bb8 feat(measure_theory/borel_space): the inverse of a closed embedding is measurable (#5567) ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.preimage_inv_fun_of_mem + theorem set.preimage_inv_fun_of_not_mem Modified src/measure_theory/borel_space.lean + theorem closed_embedding.measurable_inv_fun 2021-01-02 20:59:49 a7d05c4 chore(number_theory/bernoulli): refactor definition of bernoulli (#5534) A minor refactor of the definition of Bernoulli number, and I expanded the docstring. ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean 2021-01-02 20:59:48 12b5024 feat(data/polynomial/erase_lead): add lemma erase_lead_card_support_eq (#5529) One further lemma to increase the API of `erase_lead`. I use it to simplify the proof of the Liouville PR. In particular, it is used in a step of the proof that you can "clear denominators" when evaluating a polynomial with integer coefficients at a rational number. ESTIMATED CHANGES Modified src/data/polynomial/erase_lead.lean + theorem polynomial.erase_lead_card_support' + theorem polynomial.erase_lead_card_support 2021-01-02 17:53:35 fceb7c1 chore(algebra/group,algebra/group_with_zero): a few more injective/surjective constructors (#5547) ESTIMATED CHANGES Modified src/algebra/group/inj_surj.lean Modified src/algebra/group_with_zero/basic.lean 2021-01-02 15:05:58 e142c82 feat(algebra/group/prod) Units of a product monoid (#5563) Just a simple seemingly missing def ESTIMATED CHANGES Modified src/algebra/group/prod.lean + def prod.units 2021-01-02 10:18:26 e35a703 feat(algebra/ordered_{group,field}): more lemmas relating inv and mul inequalities (#5561) I also renamed `inv_le_iff_one_le_mul` to `inv_le_iff_one_le_mul'` for consistency with `div_le_iff` and `div_le_iff'` (unprimed lemmas involve multiplication on the right and primed lemmas involve multiplication on the left). ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/algebra/ordered_field.lean + theorem inv_pos_le_iff_one_le_mul' + theorem inv_pos_le_iff_one_le_mul + theorem inv_pos_lt_iff_one_lt_mul' + theorem inv_pos_lt_iff_one_lt_mul Modified src/algebra/ordered_group.lean + theorem inv_le_iff_one_le_mul' +/- theorem inv_le_iff_one_le_mul + theorem inv_lt_iff_one_lt_mul' + theorem inv_lt_iff_one_lt_mul + theorem le_inv_iff_mul_le_one' + theorem lt_inv_iff_mul_lt_one' + theorem lt_inv_iff_mul_lt_one Modified src/analysis/convex/cone.lean 2021-01-02 10:18:25 f5f879e feat(linear_algebra/dimension): linear equiv iff eq dim (#5559) See related zulip discussion https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Classification.20of.20finite-dimensional.20vector.20spaces/near/221357275 ESTIMATED CHANGES Modified src/linear_algebra/basis.lean - def equiv_of_is_basis' - def equiv_of_is_basis - theorem equiv_of_is_basis_comp - theorem equiv_of_is_basis_refl - theorem equiv_of_is_basis_symm_trans - theorem equiv_of_is_basis_trans_symm + def linear_equiv_of_is_basis' + def linear_equiv_of_is_basis + theorem linear_equiv_of_is_basis_comp + theorem linear_equiv_of_is_basis_refl + theorem linear_equiv_of_is_basis_symm_trans + theorem linear_equiv_of_is_basis_trans_symm Modified src/linear_algebra/dimension.lean + theorem linear_equiv.lift_dim_eq + theorem linear_equiv.nonempty_equiv_iff_dim_eq + theorem linear_equiv.nonempty_equiv_iff_lift_dim_eq + def linear_equiv.of_dim_eq + def linear_equiv.of_lift_dim_eq + theorem nonempty_linear_equiv_of_dim_eq + theorem nonempty_linear_equiv_of_lift_dim_eq Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.nonempty_linear_equiv_iff_findim_eq + theorem finite_dimensional.nonempty_linear_equiv_of_findim_eq Modified src/linear_algebra/matrix.lean 2021-01-02 10:18:22 9f6300e chore(data/complex/basic): upgrade `complex.norm_sq` to a `monoid_with_zero_hom` (#5553) ESTIMATED CHANGES Modified src/algebra/group_with_zero/basic.lean +/- theorem monoid_with_zero_hom.map_div +/- theorem monoid_with_zero_hom.map_eq_zero +/- theorem monoid_with_zero_hom.map_inv' Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/data/complex/basic.lean +/- def complex.norm_sq + theorem complex.norm_sq_apply +/- theorem complex.norm_sq_eq_zero +/- theorem complex.norm_sq_mul +/- theorem complex.norm_sq_one +/- theorem complex.norm_sq_zero Modified src/data/complex/is_R_or_C.lean +/- def is_R_or_C.norm_sq +/- theorem is_R_or_C.norm_sq_eq_def' +/- theorem is_R_or_C.norm_sq_one +/- theorem is_R_or_C.norm_sq_zero Modified src/data/zsqrtd/gaussian_int.lean 2021-01-02 10:18:20 9d3c05a feat(ring_theory/simple_module): simple modules and Schur's Lemma (#5473) Defines `is_simple_module` in terms of `is_simple_lattice` Proves Schur's Lemma Defines `division ring` structure on the endomorphism ring of a simple module ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.range_eq_bot Added src/ring_theory/simple_module.lean + theorem is_simple_module.nontrivial + def is_simple_module + theorem linear_map.bijective_of_ne_zero + theorem linear_map.bijective_or_eq_zero + theorem linear_map.injective_of_ne_zero + theorem linear_map.injective_or_eq_zero + theorem linear_map.surjective_of_ne_zero + theorem linear_map.surjective_or_eq_zero 2021-01-02 10:18:18 afc3f03 feat(algebra/ordered_group): add linear_ordered_comm_group and linear_ordered_cancel_comm_monoid (#5286) We have `linear_ordered_add_comm_group` but we didn't have `linear_ordered_comm_group`. This PR adds it, as well as multiplicative versions of `canonically_ordered_add_monoid`, `canonically_linear_ordered_add_monoid` and `linear_ordered_cancel_add_comm_monoid`. I added multiplicative versions of the lemmas about these structures too. The motivation is that I want to slightly generalise the notion of a valuation. [ also random other bits of tidying which I noticed along the way (docstring fixes, adding `norm_cast` attributes) ]. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_monoid.lean - theorem add_eq_zero_iff + theorem bot_eq_one - theorem bot_eq_zero - theorem exists_pos_add_of_lt + theorem exists_pos_mul_of_lt - theorem le_add_left - theorem le_add_right - theorem le_iff_exists_add + theorem le_iff_exists_mul + theorem le_mul_left + theorem le_mul_right + theorem le_one_iff_eq - theorem le_zero_iff_eq - theorem max_add_add_left - theorem max_add_add_right - theorem max_le_add_of_nonneg + theorem max_le_mul_of_one_le + theorem max_mul_mul_left + theorem max_mul_mul_right - theorem min_add_add_left - theorem min_add_add_right - theorem min_le_add_of_nonneg_left - theorem min_le_add_of_nonneg_right + theorem min_le_mul_of_one_le_left + theorem min_le_mul_of_one_le_right + theorem min_mul_mul_left + theorem min_mul_mul_right + theorem mul_eq_one_iff + theorem one_le + theorem one_lt_iff_ne_one - theorem zero_le - theorem zero_lt_iff_ne_zero 2021-01-02 07:10:53 d94f0a2 chore(data/list): a list sorted w.r.t. `(<)` has no duplicates (#5550) ESTIMATED CHANGES Modified src/data/list/nodup.lean Modified src/data/list/sort.lean Modified src/order/rel_classes.lean + theorem ne_of_irrefl 2021-01-02 00:36:58 409ea42 chore(algebra/*): move some lemmas to `div_inv_monoid` (#5552) ESTIMATED CHANGES Modified src/algebra/field.lean - theorem mul_div_assoc' Modified src/algebra/group/basic.lean + theorem mul_div_assoc' + theorem mul_div_assoc + theorem one_div - theorem zero_sub Modified src/algebra/group_with_zero/basic.lean - theorem mul_div_assoc - theorem one_div Modified src/analysis/analytic/composition.lean Modified src/data/complex/exponential.lean Modified src/data/real/hyperreal.lean Modified src/geometry/euclidean/monge_point.lean 2021-01-02 00:36:56 06a11fd chore(data/fintype/card): generalize `equiv.prod_comp` to `function.bijective.prod_comp` (#5551) This way we can apply it to `add_equiv`, `mul_equiv`, `order_iso`, etc without using `to_equiv`. ESTIMATED CHANGES Modified src/data/fintype/card.lean + theorem function.bijective.prod_comp 2021-01-02 00:36:54 ea3815f feat(analysis/normed_space/inner_product): upgrade orthogonal projection to a continuous linear map (#5543) Upgrade the orthogonal projection, from a linear map `E →ₗ[𝕜] K` to a continuous linear map `E →L[𝕜] K`. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean +/- def orthogonal_projection + theorem orthogonal_projection_fn_norm_sq + theorem orthogonal_projection_norm_le Modified src/geometry/euclidean/basic.lean 2021-01-02 00:36:53 b57d562 feat(algebra/big_operators/nat_antidiagonal): add prod_antidiagonal_eq_prod_range_succ (#5528) Sometimes summing over nat.antidiagonal is nicer than summing over range(n+1). ESTIMATED CHANGES Modified src/algebra/big_operators/nat_antidiagonal.lean + theorem finset.nat.prod_antidiagonal_eq_prod_range_succ Modified src/data/finset/basic.lean + theorem finset.mem_range_succ_iff 2021-01-02 00:36:49 c32efea feat(data/fin): there is at most one `order_iso` from `fin n` to `α` (#5499) * Define a `bounded_lattice` instance on `fin (n + 1)`. * Prove that there is at most one `order_iso` from `fin n` to `α`. ESTIMATED CHANGES Modified src/data/fin.lean +/- theorem fin.coe_cast + theorem fin.coe_order_iso_apply + theorem fin.mk_le_of_le_coe + theorem fin.mk_lt_of_lt_coe + theorem fin.order_embedding_eq + theorem fin.strict_mono_unique 2021-01-01 21:26:00 8aa2332 chore(*): golf some proofs (#5548) Parts of #5539 ESTIMATED CHANGES Modified src/algebra/big_operators/ring.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/ordered_ring.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/basic.lean Modified src/analysis/hofer.lean Modified src/data/rat/cast.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.add_eq_top +/- theorem ennreal.add_lt_top + theorem ennreal.mul_lt_mul Modified src/field_theory/adjoin.lean Modified src/topology/instances/ennreal.lean 2021-01-01 21:25:58 e0030ff chore(data/real/cau_seq): golf some proofs (#5545) ESTIMATED CHANGES Modified src/data/real/cau_seq.lean + def is_absolute_value.abv_hom - theorem is_absolute_value.abv_one' +/- theorem is_absolute_value.abv_one +/- theorem is_absolute_value.abv_pow 2021-01-01 19:02:10 b542cfb chore(linear_algebra/basic): notation for span of a singleton (#5538) Notation `∙` (`\.`) for the span of a single element of a module, so one can write `R ∙ x` instead of `span R {x}`. This in itself does not save so many keystrokes, but it also seems to be a bit more robust: it works in settings where previously one had to type `span R ({x} : set M)` because the type of the singleton was not recognised. [Zulip 1](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/New.20linear.20algebra.20notation), [Zulip 2](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Notation.20for.20span) ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean +/- theorem submodule.one_eq_span Modified src/algebra/algebra/subalgebra.lean +/- theorem algebra.to_submodule_bot Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_equiv.coord +/- def continuous_linear_equiv.to_span_nonzero_singleton Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/basic.lean +/- def linear_equiv.coord +/- theorem linear_equiv.coord_self +/- def linear_equiv.to_span_nonzero_singleton +/- theorem linear_map.span_singleton_eq_range +/- theorem submodule.lt_add_iff_not_mem +/- theorem submodule.mem_span_singleton +/- theorem submodule.mem_span_singleton_self +/- theorem submodule.nontrivial_span_singleton +/- theorem submodule.span_singleton_eq_bot +/- theorem submodule.span_singleton_eq_range +/- theorem submodule.span_singleton_le_iff_mem +/- theorem submodule.span_singleton_smul_le Modified src/linear_algebra/dimension.lean +/- theorem dim_submodule_le_one_iff' +/- theorem dim_submodule_le_one_iff Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/linear_pmap.lean 2021-01-01 15:24:16 fcbaf62 doc(lint/type_classes): add has_coe_to_fun linter (#5546) ESTIMATED CHANGES Modified src/logic/basic.lean Modified src/tactic/lint/type_classes.lean 2021-01-01 01:33:29 d2bde11 chore(scripts): update nolints.txt (#5554) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-31 19:17:29 54bf708 feat(logic/basic): exists_unique_false simp lemma (#5544) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem exists_unique_false 2020-12-31 16:30:28 0830bfd refactor(analysis/analytic/basic): redefine `formal_multilinear_series.radius` (#5349) With the new definition, (a) some proofs get much shorter; (b) we don't need `rpow` in `analytic/basic`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean Modified src/analysis/analytic/basic.lean - theorem formal_multilinear_series.bound_of_lt_radius +/- def formal_multilinear_series.change_origin - theorem formal_multilinear_series.geometric_bound_of_lt_radius + theorem formal_multilinear_series.is_o_of_lt_radius + theorem formal_multilinear_series.is_o_one_of_lt_radius +/- theorem formal_multilinear_series.le_radius_of_bound + theorem formal_multilinear_series.le_radius_of_bound_nnreal + theorem formal_multilinear_series.le_radius_of_is_O + theorem formal_multilinear_series.lt_radius_of_is_O + theorem formal_multilinear_series.nnnorm_mul_pow_le_of_lt_radius + theorem formal_multilinear_series.norm_mul_pow_le_mul_pow_of_lt_radius + theorem formal_multilinear_series.norm_mul_pow_le_of_lt_radius +/- theorem formal_multilinear_series.radius_neg Modified src/analysis/analytic/composition.lean Added src/analysis/analytic/radius_liminf.lean + theorem formal_multilinear_series.radius_eq_liminf Modified src/analysis/specific_limits.lean 2020-12-31 10:07:03 10f6c15 chore(analysis/normed_space/inner_product): notation for orthogonal complement (#5536) Notation for `submodule.orthogonal`, so that one can write `Kᗮ` instead of `K.orthogonal`. Simultaneous PR https://github.com/leanprover/vscode-lean/pull/246 adds `\perp` as vscode shorthand for this symbol. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/New.20linear.20algebra.20notation) ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean Modified src/analysis/normed_space/inner_product.lean +/- theorem orthogonal_eq_inter +/- theorem submodule.Inf_orthogonal +/- theorem submodule.bot_orthogonal_eq_top +/- theorem submodule.inf_orthogonal +/- theorem submodule.infi_orthogonal +/- theorem submodule.is_closed_orthogonal +/- theorem submodule.le_orthogonal_orthogonal +/- theorem submodule.mem_orthogonal' +/- theorem submodule.mem_orthogonal +/- theorem submodule.orthogonal_disjoint +/- theorem submodule.orthogonal_le +/- theorem submodule.orthogonal_orthogonal +/- theorem submodule.top_orthogonal_eq_bot Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/monge_point.lean 2020-12-31 08:49:08 cca6365 feat(field_theory/galois): is_galois.tfae (#5542) This is a TFAE theorem for is_galois ESTIMATED CHANGES Modified src/field_theory/galois.lean + theorem is_galois.tfae 2020-12-31 06:04:17 b04aeb5 chore(algebra): move lemmas from ring_theory.algebra_tower to algebra.algebra.tower (#5506) Moved some basic lemmas from `ring_theory.algebra_tower` to `algebra.algebra.tower`. ESTIMATED CHANGES Added src/algebra/algebra/tower.lean + def algebra.lsmul + theorem algebra.lsmul_coe + theorem is_scalar_tower.algebra.ext + theorem is_scalar_tower.algebra_comap_eq + theorem is_scalar_tower.algebra_map_apply + theorem is_scalar_tower.algebra_map_eq + theorem is_scalar_tower.algebra_map_smul + theorem is_scalar_tower.coe_restrict_base' + theorem is_scalar_tower.coe_restrict_base + theorem is_scalar_tower.coe_to_alg_hom' + theorem is_scalar_tower.coe_to_alg_hom + theorem is_scalar_tower.of_algebra_map_eq' + theorem is_scalar_tower.of_algebra_map_eq + theorem is_scalar_tower.range_under_adjoin + def is_scalar_tower.restrict_base + theorem is_scalar_tower.restrict_base_apply + def is_scalar_tower.to_alg_hom + theorem is_scalar_tower.to_alg_hom_apply + theorem subalgebra.mem_res + def subalgebra.of_under + def subalgebra.res + theorem subalgebra.res_inj + theorem subalgebra.res_top + theorem submodule.smul_mem_span_smul' + theorem submodule.smul_mem_span_smul + theorem submodule.smul_mem_span_smul_of_mem + theorem submodule.span_smul Modified src/ring_theory/algebra_tower.lean - theorem is_scalar_tower.algebra.ext - theorem is_scalar_tower.algebra_comap_eq - theorem is_scalar_tower.algebra_map_apply - theorem is_scalar_tower.algebra_map_eq - theorem is_scalar_tower.algebra_map_smul - theorem is_scalar_tower.of_algebra_map_eq - theorem is_scalar_tower.range_under_adjoin - def is_scalar_tower.restrict_base - theorem is_scalar_tower.restrict_base_apply - theorem is_scalar_tower.smul_left_comm - def is_scalar_tower.to_alg_hom - theorem is_scalar_tower.to_alg_hom_apply - theorem subalgebra.mem_res - def subalgebra.of_under - def subalgebra.res - theorem subalgebra.res_inj - theorem subalgebra.res_top - theorem submodule.smul_mem_span_smul' - theorem submodule.smul_mem_span_smul - theorem submodule.smul_mem_span_smul_of_mem - theorem submodule.span_smul 2020-12-31 02:53:26 a40f31f feat(data/tprod): finite products of types (#5385) This PR defined `list.tprod` as a finite product of types to transfer results from binary products to finitary products. See module doc for more info. ESTIMATED CHANGES Added src/data/tprod.lean + theorem list.tprod.elim_mk + theorem list.tprod.elim_of_mem + theorem list.tprod.elim_of_ne + theorem list.tprod.elim_self + theorem list.tprod.ext + theorem list.tprod.fst_mk + theorem list.tprod.mk_elim + def list.tprod.pi_equiv_tprod + theorem list.tprod.snd_mk + def list.tprod + theorem set.elim_preimage_pi + theorem set.mk_preimage_tprod 2020-12-31 01:37:37 611b73e chore(scripts): update nolints.txt (#5540) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-30 23:15:52 9c46cad feat(field_theory/algebraic_closure): algebraically closed fields have no nontrivial algebraic extensions (#5537) ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean + theorem is_alg_closed.algebra_map_surjective_of_is_algebraic + theorem is_alg_closed.algebra_map_surjective_of_is_integral Modified src/ring_theory/algebraic.lean + theorem is_algebraic_iff_is_integral' 2020-12-30 20:43:17 6e0d0fa chore(algebra/field): use `K` as a type variable (#5535) ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem add_div' +/- theorem add_div +/- theorem add_div_eq_mul_add_div +/- theorem div_add' +/- theorem div_add_div +/- theorem div_add_div_same +/- theorem div_neg +/- theorem div_neg_eq_neg_div +/- theorem div_sub' +/- theorem div_sub_div +/- theorem div_sub_div_same +/- theorem inv_add_inv +/- theorem inv_sub_inv +/- theorem inverse_eq_has_inv +/- theorem mul_div_assoc' +/- theorem neg_div' +/- theorem neg_div +/- theorem neg_div_neg_eq +/- theorem one_div_add_one_div +/- theorem one_div_neg_eq_neg_one_div +/- theorem one_div_neg_one_eq_neg_one +/- theorem sub_div' +/- theorem sub_div 2020-12-30 20:43:15 9988193 feat(measure_theory): various additions (#5389) Some computations of measures on non-measurable sets Some more measurability lemmas for pi-types Cleanup in `measure_space` ESTIMATED CHANGES Modified src/data/equiv/list.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/measurable_space.lean + theorem is_measurable.Inter_fintype + theorem is_measurable.Union_fintype + theorem is_measurable.pi + theorem is_measurable.pi_fintype + theorem is_measurable.pi_univ +/- theorem is_measurable_pi + theorem is_measurable_pi_of_nonempty + theorem measurable.eval + def measurable_equiv.Pi_congr_right + theorem measurable_equiv.coe_mk + theorem measurable_equiv.coe_symm_mk + theorem measurable_pi_iff + theorem measurable_update + theorem nonempty_measurable_superset Modified src/measure_theory/measure_space.lean +/- def completion +/- theorem is_measurable.diff_null +/- theorem is_measurable.is_null_measurable +/- theorem is_null_measurable.Union_nat +/- theorem is_null_measurable.compl +/- theorem is_null_measurable.diff_null +/- theorem is_null_measurable.union_null +/- def is_null_measurable +/- theorem is_null_measurable_iff +/- theorem is_null_measurable_measure_eq +/- theorem is_null_measurable_of_complete +/- theorem measure_theory.ae_all_iff +/- theorem measure_theory.ae_ball_iff +/- theorem measure_theory.ae_eq_empty +/- theorem measure_theory.ae_eq_refl +/- theorem measure_theory.ae_eq_symm +/- theorem measure_theory.ae_eq_trans +/- theorem measure_theory.ae_le_set +/- theorem measure_theory.ae_map_iff +/- theorem measure_theory.ae_of_all +/- theorem measure_theory.ae_restrict_eq +/- theorem measure_theory.ae_restrict_iff +/- theorem measure_theory.diff_ae_eq_self +/- theorem measure_theory.eventually_eq_dirac' +/- theorem measure_theory.eventually_eq_dirac +/- theorem measure_theory.exists_is_measurable_superset_iff_measure_eq_zero +/- theorem measure_theory.exists_is_measurable_superset_of_measure_eq_zero +/- theorem measure_theory.le_to_measure_apply +/- theorem measure_theory.le_to_outer_measure_caratheodory +/- theorem measure_theory.measure.Inf_apply +/- theorem measure_theory.measure.add_apply +/- theorem measure_theory.measure.coe_smul +/- theorem measure_theory.measure.compl_mem_cofinite +/- theorem measure_theory.measure.count_apply +/- theorem measure_theory.measure.count_apply_eq_top +/- theorem measure_theory.measure.count_apply_infinite +/- theorem measure_theory.measure.count_apply_lt_top +/- theorem measure_theory.measure.dirac_apply' +/- theorem measure_theory.measure.dirac_apply +/- theorem measure_theory.measure.dirac_apply_of_mem +/- theorem measure_theory.measure.ext +/- theorem measure_theory.measure.ext_iff +/- theorem measure_theory.measure.finite_at_principal +/- def measure_theory.measure.is_complete +/- theorem measure_theory.measure.le_lift_linear_apply + theorem measure_theory.measure.le_map_apply +/- theorem measure_theory.measure.le_sum +/- theorem measure_theory.measure.map_comap_subtype_coe +/- theorem measure_theory.measure.measure_univ_eq_zero +/- theorem measure_theory.measure.mem_cofinite +/- def measure_theory.measure.of_measurable +/- theorem measure_theory.measure.of_measurable_apply +/- theorem measure_theory.measure.restrict_Inf_eq_Inf_restrict +/- theorem measure_theory.measure.restrict_Union +/- theorem measure_theory.measure.restrict_Union_apply +/- theorem measure_theory.measure.restrict_Union_apply_eq_supr +/- theorem measure_theory.measure.restrict_Union_le +/- theorem measure_theory.measure.restrict_add_restrict_compl +/- theorem measure_theory.measure.restrict_apply +/- theorem measure_theory.measure.restrict_apply_eq_zero' +/- theorem measure_theory.measure.restrict_apply_eq_zero +/- theorem measure_theory.measure.restrict_compl_add_restrict +/- theorem measure_theory.measure.restrict_congr_meas +/- theorem measure_theory.measure.restrict_congr_mono +/- theorem measure_theory.measure.restrict_eq_zero +/- theorem measure_theory.measure.restrict_le_self +/- theorem measure_theory.measure.restrict_restrict +/- theorem measure_theory.measure.restrict_sum +/- theorem measure_theory.measure.restrict_to_outer_measure_eq_to_outer_measure_restrict +/- theorem measure_theory.measure.restrict_union +/- theorem measure_theory.measure.restrict_union_add_inter +/- theorem measure_theory.measure.restrict_union_apply +/- theorem measure_theory.measure.restrict_union_congr +/- theorem measure_theory.measure.smul_apply +/- theorem measure_theory.measure.sub_apply +/- def measure_theory.measure.sum +/- theorem measure_theory.measure.sum_apply +/- theorem measure_theory.measure.supr_restrict_spanning_sets +/- theorem measure_theory.measure.to_outer_measure_injective +/- theorem measure_theory.measure_Union +/- theorem measure_theory.measure_Union_le +/- theorem measure_theory.measure_Union_null +/- theorem measure_theory.measure_Union_null_iff +/- theorem measure_theory.measure_compl +/- theorem measure_theory.measure_congr +/- theorem measure_theory.measure_countable +/- theorem measure_theory.measure_diff + theorem measure_theory.measure_eq_infi' +/- theorem measure_theory.measure_eq_infi +/- theorem measure_theory.measure_eq_inter_diff +/- theorem measure_theory.measure_eq_trim +/- theorem measure_theory.measure_finite +/- theorem measure_theory.measure_if +/- theorem measure_theory.measure_mono_ae +/- theorem measure_theory.measure_union_add_inter +/- theorem measure_theory.measure_union_null +/- theorem measure_theory.measure_union_null_iff +/- theorem measure_theory.mem_ae_map_iff +/- theorem measure_theory.mem_dirac_ae_iff +/- def measure_theory.outer_measure.to_measure +/- theorem measure_theory.restrict_congr_set +/- theorem measure_theory.restrict_mono_ae +/- theorem measure_theory.tendsto_measure_Inter +/- theorem measure_theory.tendsto_measure_Union +/- theorem measure_theory.to_measure_apply +/- theorem measure_theory.to_measure_to_outer_measure +/- theorem measure_theory.to_outer_measure_apply +/- theorem measure_theory.to_outer_measure_to_measure +/- theorem measure_theory.union_ae_eq_right +/- theorem metric.bounded.finite_measure +/- theorem null_is_null_measurable +/- def null_measurable Modified src/measure_theory/prod.lean + theorem measure_theory.measure.prod_prod_le 2020-12-30 19:29:20 f1d2bc6 feat(order/lattice_intervals): lattice structures on intervals in lattices (#5496) Defines (semi-)lattice structures on intervals in lattices ESTIMATED CHANGES Added src/order/lattice_intervals.lean + def set.Icc.bounded_lattice + def set.Icc.order_bot + def set.Icc.order_top + def set.Icc.semilattice_inf_bot + def set.Icc.semilattice_inf_top + def set.Icc.semilattice_sup_bot + def set.Icc.semilattice_sup_top + theorem set.Ici.coe_bot + theorem set.Ici.coe_top + def set.Ico.order_bot + def set.Ico.semilattice_inf_bot + theorem set.Iic.coe_bot + theorem set.Iic.coe_top + def set.Ioc.order_top + def set.Ioc.semilattice_sup_top 2020-12-30 17:33:54 16320e2 chore(topology/algebra/infinite_sum): refactor `tsum_mul_left/right` (#5533) * move old lemmas to `summable` namespace; * add new `tsum_mul_left` and `tsum_mul_right` that work in a `division_ring` without a `summable` assumption. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/normed_space/banach.lean Modified src/data/real/cardinality.lean Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.nonneg + theorem has_sum.nonpos + theorem summable.tsum_mul_left + theorem summable.tsum_mul_right +/- theorem tsum_mul_left +/- theorem tsum_mul_right Modified src/topology/instances/nnreal.lean + theorem nnreal.tsum_mul_left + theorem nnreal.tsum_mul_right 2020-12-30 17:33:52 958c407 chore(analysis/normed_space/basic): a few lemmas about `nnnorm` (#5532) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem coe_nnnorm + theorem mem_emetric_ball_0_iff + theorem normed_field.nnnorm_div + theorem normed_field.nnnorm_fpow + def normed_field.nnnorm_hom + theorem normed_field.nnnorm_mul + theorem normed_field.nnnorm_pow + theorem normed_field.nnnorm_prod 2020-12-30 15:51:17 b15bb06 feat(topology/instances/ennreal): a sufficient condition for `f : (Σ i, β i) → ℝ` to be summable (#5531) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem nnreal.summable_sigma + theorem summable_sigma_of_nonneg 2020-12-30 15:51:13 38ba6ba chore(data/real/{e,}nnreal): a few lemmas (#5530) * Rename `nnreal.le_of_forall_lt_one_mul_lt` to `nnreal.le_of_forall_lt_one_mul_le`, and similarly for `ennreal`. * Move the proof of the latter lemma to `topology/instances/ennreal`, prove it using continuity of multiplication. * Add `ennreal.le_of_forall_nnreal_lt`, `nnreal.lt_div_iff`, and `nnreal.mul_lt_of_lt_div`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean - theorem ennreal.le_of_forall_lt_one_mul_lt + theorem ennreal.le_of_forall_nnreal_lt Modified src/data/real/nnreal.lean + theorem nnreal.le_of_forall_lt_one_mul_le - theorem nnreal.le_of_forall_lt_one_mul_lt + theorem nnreal.lt_div_iff + theorem nnreal.mul_lt_of_lt_div Modified src/measure_theory/integration.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.le_of_forall_lt_one_mul_le 2020-12-30 15:51:11 c82be35 feat(analysis/normed_space/inner_product): orthogonal complement lemmas (#5474) The orthogonal complement of a subspace is closed. The orthogonal complement of the orthogonal complement of a complete subspace is itself. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + def inner_right + theorem inner_right_apply + theorem inner_right_coe + theorem orthogonal_eq_inter + theorem submodule.exists_sum_mem_mem_orthogonal + theorem submodule.is_closed_orthogonal + theorem submodule.orthogonal_orthogonal + theorem submodule.sup_orthogonal_of_complete_space 2020-12-30 13:05:48 7a03171 chore(order/rel_iso): add some missing lemmas (#5492) Also define `order_iso.trans`. ESTIMATED CHANGES Modified src/order/rel_iso.lean + theorem order_embedding.coe_subtype + def order_embedding.subtype + theorem order_iso.coe_trans + theorem order_iso.map_bot' +/- theorem order_iso.map_bot + theorem order_iso.map_top' +/- theorem order_iso.map_top + theorem order_iso.symm_apply_eq + theorem order_iso.symm_injective + theorem order_iso.symm_symm + def order_iso.trans + theorem order_iso.trans_apply + theorem rel_embedding.coe_trans +/- theorem rel_embedding.trans_apply + theorem rel_iso.default_def - def set_coe_embedding 2020-12-30 13:05:46 8545aa6 chore(topology/algebra/ordered): move code, add missing lemmas (#5481) * merge two sections about `linear_ordered_add_comm_group`; * add missing lemmas about limits of `f * g` when one of `f`, `g` tends to `-∞`, and another tends to a positive or negative constant; * drop `neg_preimage_closure` in favor of the new `neg_closure` in `topology/algebra/group`. ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem inv_closure Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.at_bot_mul + theorem filter.tendsto.at_bot_mul_neg + theorem filter.tendsto.mul_at_bot + theorem filter.tendsto.neg_mul_at_bot + theorem filter.tendsto.neg_mul_at_top +/- theorem linear_ordered_add_comm_group.tendsto_nhds - theorem neg_preimage_closure +/- theorem nhds_eq_infi_abs_sub +/- theorem order_topology_of_nhds_abs 2020-12-30 10:07:47 5e86589 chore(data/nat/enat): some useful lemmas (#5517) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.find_le Modified src/data/nat/enat.lean + theorem enat.coe_le_iff + theorem enat.coe_lt_iff + theorem enat.dom_coe + theorem enat.dom_of_le_of_dom +/- theorem enat.dom_of_le_some + theorem enat.dom_of_lt + theorem enat.eq_top_iff_forall_le + theorem enat.eq_top_iff_forall_lt + def enat.find + theorem enat.find_dom + theorem enat.find_eq_top_iff + theorem enat.find_get + theorem enat.find_le + theorem enat.get_coe' +/- theorem enat.get_coe +/- theorem enat.get_le_get + theorem enat.le_coe_iff + theorem enat.le_def + theorem enat.lt_coe_iff + theorem enat.lt_def + theorem enat.lt_find + theorem enat.lt_find_iff +/- def enat.to_with_top +/- theorem enat.to_with_top_zero' Modified src/ring_theory/multiplicity.lean - theorem nat.find_le Modified src/ring_theory/power_series/basic.lean 2020-12-30 08:01:01 1c110ad fix(tactic/linarith): elaborate and insert arguments before destructing hypotheses (#5501) closes #5480 Arguments to `linarith` can depend on hypotheses (e.g. conjunctions) that get destructed during preprocessing, after which the arguments will no longer elaborate or typecheck. This just moves the elaboration earlier and adds these arguments as hypotheses themselves. ESTIMATED CHANGES Modified src/tactic/linarith/frontend.lean Modified test/linarith.lean + theorem bar 2020-12-30 01:38:14 7c6020f chore(scripts): update nolints.txt (#5526) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-29 19:06:07 abffbaa feat(analysis/convex/specific_functions): log is concave (#5508) This PR proves that the real log is concave on `Ioi 0` and `Iio 0`, and adds lemmas about concavity of functions along the way. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean + theorem concave_on_of_deriv2_nonpos + theorem concave_on_of_deriv_antimono + theorem concave_on_open_of_deriv2_nonpos + theorem concave_on_univ_of_deriv2_nonpos + theorem concave_on_univ_of_deriv_antimono + theorem convex_on_open_of_deriv2_nonneg Modified src/analysis/convex/specific_functions.lean + theorem concave_on_log_Iio + theorem concave_on_log_Ioi 2020-12-29 07:47:35 8e413eb feat(order/bounded_lattice): define atoms, coatoms, and simple lattices (#5471) Defines `is_atom`, `is_coatom`, and `is_simple_lattice` Refactors `ideal.is_maximal` to use `is_coatom`, the new definition is definitionally equal to the old one ESTIMATED CHANGES Added src/order/atoms.lean + theorem eq_bot_or_eq_of_le_atom + theorem eq_top_or_eq_of_coatom_le + def is_atom + theorem is_atom_iff_is_coatom_dual + theorem is_atom_top + def is_coatom + theorem is_coatom_bot + theorem is_coatom_iff_is_atom_dual + theorem is_simple_lattice_iff_is_atom_top + theorem is_simple_lattice_iff_is_coatom_bot + theorem is_simple_lattice_iff_is_simple_lattice_order_dual Modified src/order/bounded_lattice.lean + theorem bot_ne_top + theorem top_ne_bot Modified src/order/order_dual.lean Modified src/ring_theory/ideal/basic.lean +/- def ideal.is_maximal 2020-12-29 03:00:40 15ff865 doc(localized): update documentation (#5519) remove old warning remove duplicated documentation rename notation namespace to locale ESTIMATED CHANGES Modified src/tactic/localized.lean 2020-12-29 01:33:07 297d97e chore(scripts): update nolints.txt (#5522) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-28 17:36:18 41bad63 feat(polynomial/degree/definitions): nat_degree_X_pow (#5512) Companion to degree_X_pow ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.nat_degree_X_pow 2020-12-28 15:03:21 d245c4e feat(polynomial/algebra_map): aeval_comp (#5511) Basic lemma about aeval ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_comp 2020-12-28 13:55:13 f1f2ca6 feat(category_theory/limits): preserves limits of equivalent shape (#5515) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.preserves_colimits_of_shape_of_equiv + def category_theory.limits.preserves_limits_of_shape_of_equiv 2020-12-28 03:40:12 6d1d4c1 chore(scripts): update nolints.txt (#5514) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-28 00:38:46 6d0b415 feat(data/list/basic): nth_zero (#5513) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_zero 2020-12-27 16:40:59 5c8c122 chore(analysis/analytic/basic): speed up slow lemmas (#5507) Removes slow `tidy`s from `formal_multilinear_series.change_origin_radius` and `formal_multilinear_series.change_origin_has_sum` ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean 2020-12-27 04:21:55 1e75453 feat(data/list/basic): filter_map retains prefix (#5453) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.is_prefix.filter_map + theorem list.is_prefix.reduce_option 2020-12-26 22:54:39 f7e728a feat(data/list/range): enum is a zip (#5457) ESTIMATED CHANGES Modified src/data/list/range.lean + theorem list.enum_eq_zip_range + theorem list.enum_from_eq_zip_range' + theorem list.unzip_enum_eq_prod + theorem list.unzip_enum_from_eq_prod Modified src/data/list/zip.lean + theorem list.map_prod_left_eq_zip + theorem list.map_prod_right_eq_zip + theorem list.zip_of_prod 2020-12-26 20:38:16 ae60bb9 chore(topology/algebra/order): add `continuous_on.surj_on_of_tendsto` (#5502) * rename `surjective_of_continuous` to `continuous.surjective` and `surjective_of_continuous'` to `continuous.surjective'`; * add `continuous_on.surj_on_of_tendsto` and `continuous_on.surj_on_of_tendsto'` ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean Modified src/data/real/sqrt.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/topology/algebra/ordered.lean + theorem continuous.surjective' + theorem continuous.surjective + theorem continuous_on.surj_on_of_tendsto' + theorem continuous_on.surj_on_of_tendsto - theorem surjective_of_continuous' - theorem surjective_of_continuous 2020-12-26 09:47:44 add100a feat(ring_theory/perfection): perfection.map (#5503) ESTIMATED CHANGES Modified src/ring_theory/perfection.lean + theorem perfection.coeff_map + theorem perfection.coeff_pow_p' + theorem perfection.hom_ext + def perfection.map + theorem perfection_map.comp_equiv' + theorem perfection_map.comp_equiv + theorem perfection_map.comp_map + theorem perfection_map.comp_symm_equiv' + theorem perfection_map.comp_symm_equiv + theorem perfection_map.equiv_apply + theorem perfection_map.hom_ext + theorem perfection_map.map_eq_map + theorem perfection_map.map_map 2020-12-26 01:31:06 768497c chore(scripts): update nolints.txt (#5505) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-25 21:29:27 666035f fix(algebra/big_operators/basic): add docstrings for `sum_bij` and `sum_bij'` (#5497) They don't seem to be there. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean 2020-12-25 21:29:26 1a526b3 chore(topology/homeomorph): a few more lemmas, golf (#5467) ESTIMATED CHANGES Modified src/topology/homeomorph.lean +/- theorem homeomorph.coinduced_eq + theorem homeomorph.comap_nhds_eq + theorem homeomorph.image_closure + theorem homeomorph.image_preimage +/- theorem homeomorph.induced_eq + theorem homeomorph.is_closed_image + theorem homeomorph.is_closed_preimage + theorem homeomorph.is_open_image + theorem homeomorph.map_nhds_eq + theorem homeomorph.nhds_eq_comap + theorem homeomorph.preimage_closure + theorem homeomorph.preimage_image Modified src/topology/maps.lean 2020-12-25 18:38:51 726b7bf feat(analysis/specific_limits): a `tfae` about "`f` grows exponentially slower than `R ^ n`" (#5488) Also add supporting lemmas here and there. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem pow_bit0_nonneg + theorem pow_bit0_pos +/- theorem pow_two_nonneg +/- theorem pow_two_pos_of_ne_zero Modified src/algebra/group_power/lemmas.lean + theorem abs_pow +/- theorem one_add_mul_le_pow +/- theorem one_add_sub_mul_le_pow + theorem pow_bit1_neg_iff + theorem pow_bit1_nonneg_iff + theorem pow_bit1_nonpos_iff + theorem pow_bit1_pos_iff + theorem sign_cases_of_C_mul_pow_nonneg + theorem strict_mono_pow_bit1 Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O_one_nat_at_top_iff +/- theorem asymptotics.is_O_with_zero_right_iff +/- theorem asymptotics.is_O_zero_right_iff +/- theorem asymptotics.is_o_zero_right_iff Modified src/analysis/specific_limits.lean + theorem is_O_pow_pow_of_le_left + theorem tfae_exists_lt_is_o_pow Modified src/data/real/nnreal.lean +/- theorem nnreal.coe_pow Modified src/order/filter/at_top_bot.lean + theorem filter.nonneg_of_eventually_pow_nonneg + theorem filter.tendsto_bit0_at_bot + theorem filter.tendsto_bit0_at_top + theorem filter.tendsto_bit1_at_top + theorem filter.zero_pow_eventually_eq 2020-12-25 17:10:05 d968a61 feat(category_theory/limits): yoneda reflects limits (#5447) yoneda and coyoneda jointly reflect limits ESTIMATED CHANGES Modified src/category_theory/limits/yoneda.lean + def category_theory.coyoneda_jointly_reflects_limits + def category_theory.yoneda_jointly_reflects_limits 2020-12-25 13:57:08 f60fd08 chore(logic/basic): +2 simp lemmas (#5500) * simplify `a ∨ b ↔ a` to `b → a`; * simplify `a ∨ b ↔ b` to `a → b`. ESTIMATED CHANGES Modified src/data/ordmap/ordset.lean Modified src/logic/basic.lean + theorem or_iff_left_iff_imp + theorem or_iff_right_iff_imp 2020-12-25 01:42:05 1f0231d chore(scripts): update nolints.txt (#5498) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-24 19:51:27 feced76 feat(algebra/*): Noncomputable `group` structures from `is_unit` (#5427) Noncomputably defines the following group structures given that all (nonzero) elements are units: - `monoid` -> `group` - `comm_monoid` -> `comm_group` - `monoid_with_zero` -> `comm_group_with_zero` - `comm_monoid_with_zero` -> `comm_group_with_zero` - `ring` -> `division_ring` - `comm_ring` -> `field` ESTIMATED CHANGES Modified src/algebra/field.lean Modified src/algebra/group/units.lean Modified src/algebra/group_with_zero/basic.lean 2020-12-24 16:50:39 f300c75 feat(data/list/basic): lemmas about reduce_option (#5450) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_map_append + theorem list.reduce_option_append + theorem list.reduce_option_concat + theorem list.reduce_option_concat_of_some + theorem list.reduce_option_cons_of_none + theorem list.reduce_option_cons_of_some + theorem list.reduce_option_length_eq_iff + theorem list.reduce_option_length_le + theorem list.reduce_option_length_lt_iff + theorem list.reduce_option_map + theorem list.reduce_option_mem_iff + theorem list.reduce_option_nil + theorem list.reduce_option_nth_iff + theorem list.reduce_option_singleton 2020-12-24 14:52:22 3046436 chore(linear_algebra/linear_independent): make a binding explicit in ne_zero (#5494) Resubmitting #5479 from within the mathlib repo. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/linear_independent.lean 2020-12-24 08:35:35 46614b0 chore(ring_theory/power_series/well_known): generalize (#5491) * generalize `power_series.exp`, `power_series.cos`, and `power_series.sin` to a `ℚ`-algebra; * define `alg_hom.mk'`; * rename `alg_hom_nat` to `ring_hom.to_nat_alg_hom`; * drop `alg_hom_int` (was equal to `ring_hom.to_int_alg_hom`); * add `ring_hom.to_rat_alg_hom`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.coe_mk' + def alg_hom.mk' - def alg_hom_int - def alg_hom_nat + theorem ring_hom.map_rat_algebra_map +/- def ring_hom.to_int_alg_hom + def ring_hom.to_nat_alg_hom + def ring_hom.to_rat_alg_hom Modified src/ring_theory/power_series/well_known.lean +/- theorem power_series.coeff_exp +/- def power_series.cos +/- def power_series.exp +/- theorem power_series.map_cos +/- theorem power_series.map_exp +/- theorem power_series.map_sin +/- def power_series.sin 2020-12-24 08:35:33 8a03839 chore(scripts): update nolints.txt (#5490) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-24 07:17:34 2ae61be feat(field_theory/galois): is_galois.self (#5486) Some basic lemmas about is_separable, normal, and is_galois. ESTIMATED CHANGES Modified src/field_theory/galois.lean Modified src/field_theory/normal.lean Modified src/field_theory/separable.lean 2020-12-23 22:08:09 63070ed feat(data/list/chain): relate chain to refl trans gen (#5437) Some golf and a new lemma to convert a list chain to a refl trans gen ESTIMATED CHANGES Modified src/category_theory/is_connected.lean Modified src/data/list/chain.lean +/- theorem list.chain.induction +/- theorem list.chain.induction_head +/- theorem list.exists_chain_of_relation_refl_trans_gen + theorem list.relation_refl_trans_gen_of_exists_chain 2020-12-23 22:08:07 ceae529 chore(group_theory/coset): Make `quotient_group.mk` an abbreviation (#5377) This allows simp lemmas about `quotient.mk'` to apply here, which currently do not apply. The definition doesn't seem interesting enough to be semireducible. ESTIMATED CHANGES Modified src/group_theory/coset.lean +/- def quotient_group.mk 2020-12-23 18:58:44 2a5a0b0 feat(group_theory/*): mark some lemmas as ext (about homs out of free constructions) (#5484) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/algebra/free_monoid.lean Modified src/algebra/lie/universal_enveloping.lean Modified src/algebra/monoid_algebra.lean Modified src/data/dfinsupp.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean + theorem free_group.ext_hom Modified src/linear_algebra/clifford_algebra.lean Modified src/linear_algebra/dfinsupp.lean Modified src/linear_algebra/exterior_algebra.lean Modified src/linear_algebra/tensor_algebra.lean Modified src/tactic/ext.lean 2020-12-23 18:58:42 e2edba5 chore(order/filter/basic): make `filter.univ_mem_sets` a `simp` lemma (#5464) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.insert_nth_succ_nil Modified src/data/rel.lean +/- theorem rel.core_univ Modified src/order/filter/basic.lean +/- theorem filter.univ_mem_sets Modified src/order/filter/partial.lean Modified src/topology/list.lean +/- theorem nhds_nil 2020-12-23 18:58:38 d3a5e06 feat(data/dlist/basic): dlist singleton and of_list simp lemmas (#5461) ESTIMATED CHANGES Modified src/data/dlist/basic.lean + theorem dlist_lazy + theorem dlist_singleton 2020-12-23 16:10:29 fd9268c feat(data/list/basic): lemmas about scanl (#5454) ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.length_scanl + theorem list.length_singleton + theorem list.nth_le_succ_scanl + theorem list.nth_le_zero_scanl + theorem list.nth_succ_scanl + theorem list.nth_zero_scanl + theorem list.scanl_cons + theorem list.scanl_nil 2020-12-23 12:11:42 eb5cf25 chore(analysis/asymptotics): a few more lemmas (#5482) * golf some proofs; * `x ^ n = o (y ^ n)` as `n → ∞` provided that `0 ≤ x < y`; * lemmas about `is_O _ _ ⊤` etc; * if `is_O f g cofinite`, then for some `C>0` and any `x` such that `g x ≠ 0` we have `∥f x∥≤C*∥g x∥`. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.bound_of_is_O_cofinite + theorem asymptotics.bound_of_is_O_nat_at_top + theorem asymptotics.is_O_cofinite_iff + theorem asymptotics.is_O_nat_at_top_iff + theorem asymptotics.is_O_top + theorem asymptotics.is_O_with_top + theorem asymptotics.is_o_top Modified src/analysis/specific_limits.lean + theorem is_o_pow_pow_of_abs_lt_left + theorem is_o_pow_pow_of_lt_left +/- theorem tendsto_pow_at_top_nhds_0_of_lt_1 Modified src/order/filter/cofinite.lean + theorem filter.eventually_cofinite 2020-12-23 09:41:22 435b97a feat(ring_theory/witt_vector): the comparison between W(F_p) and Z_p (#5164) This PR is the culmination of the Witt vector project. We prove that the ring of Witt vectors over `zmod p` is isomorphic to the ring of `p`-adic numbers. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.symm_to_ring_hom_comp_to_ring_hom + theorem ring_equiv.to_ring_hom_comp_symm_to_ring_hom Added src/ring_theory/witt_vector/compare.lean + theorem truncated_witt_vector.card_zmod + theorem truncated_witt_vector.char_p_zmod + theorem truncated_witt_vector.commutes' + theorem truncated_witt_vector.commutes + theorem truncated_witt_vector.commutes_symm' + theorem truncated_witt_vector.commutes_symm + theorem truncated_witt_vector.eq_of_le_of_cast_pow_eq_zero + def truncated_witt_vector.zmod_equiv_trunc + theorem truncated_witt_vector.zmod_equiv_trunc_apply + def witt_vector.equiv + def witt_vector.from_padic_int + theorem witt_vector.from_padic_int_comp_to_padic_int + theorem witt_vector.from_padic_int_comp_to_padic_int_ext + def witt_vector.to_padic_int + theorem witt_vector.to_padic_int_comp_from_padic_int + theorem witt_vector.to_padic_int_comp_from_padic_int_ext + def witt_vector.to_zmod_pow + theorem witt_vector.to_zmod_pow_compat + theorem witt_vector.zmod_equiv_trunc_compat 2020-12-23 04:12:18 d5adbde feat(data/list/basic): prefix simplifying iff lemmas (#5452) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.cons_prefix_iff + theorem list.map_prefix + theorem list.prefix_take_le_iff 2020-12-23 01:30:34 24f71d7 chore(scripts): update nolints.txt (#5483) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-22 20:56:38 eba2a79 feat(data/list/zip): length of zip_with, nth_le of zip (#5455) ESTIMATED CHANGES Modified src/data/list/zip.lean + theorem list.length_zip_with + theorem list.lt_length_left_of_zip + theorem list.lt_length_left_of_zip_with + theorem list.lt_length_right_of_zip + theorem list.lt_length_right_of_zip_with + theorem list.nth_le_zip + theorem list.nth_le_zip_with + theorem list.zip_with_cons_cons + theorem list.zip_with_nil_left + theorem list.zip_with_nil_right 2020-12-22 17:05:18 3fc60fc fix(number_theory/bernoulli): fix docstring (#5478) ESTIMATED CHANGES Modified src/number_theory/bernoulli.lean 2020-12-22 17:05:16 0f1362e chore(analysis/calculus/mean_value): use `𝓝[Ici x] x` instead of `𝓝[Ioi x] x` (#5472) In many parts of the library we prefer `𝓝[Ici x] x` to `𝓝[Ioi x] x` (e.g., in assumptions line `continuous_within_at`). Fix MVT and Gronwall's inequality to use it if possible. Motivated by #4945 ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/calculus/deriv.lean +/- theorem has_deriv_at_iff_tendsto_slope + theorem has_deriv_within_at_Iio_iff_Iic + theorem has_deriv_within_at_Ioi_iff_Ici + theorem has_deriv_within_at_diff_singleton +/- theorem has_deriv_within_at_iff_tendsto_slope' +/- theorem has_deriv_within_at_iff_tendsto_slope Modified src/analysis/calculus/mean_value.lean Modified src/order/boolean_algebra.lean + theorem sdiff_idem_right 2020-12-22 17:05:14 fb99440 feat(data/complex/is_R_or_C): register some instances (#5466) Register a couple of facts which were previously known for `ℝ` and `ℂ` individually, but not for the typeclass `[is_R_or_C K]`: - such a field `K` is finite-dimensional as a vector space over `ℝ` - finite-dimensional normed spaces over `K` are proper. https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Instances.20for.20is_R_or_C ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean Modified src/data/complex/is_R_or_C.lean 2020-12-22 17:05:12 7c2f166 chore(analysis/special_functions/trigonometric): review continuity of `tan` (#5429) * prove that `tan` is discontinuous at `x` whenever `cos x = 0`; * turn `continuous_at_tan` and `differentiable_at_tan` into `iff` lemmas; * reformulate various lemmas in terms of `cos x = 0` instead of `∃ k, x = ...`; ESTIMATED CHANGES Modified src/analysis/complex/basic.lean + theorem complex.continuous_of_real Modified src/analysis/special_functions/trigonometric.lean + theorem complex.continuous_at_tan +/- theorem complex.deriv_tan +/- theorem complex.differentiable_at_tan +/- theorem complex.has_deriv_at_tan + theorem complex.tendsto_abs_tan_at_top + theorem complex.tendsto_abs_tan_of_cos_eq_zero + theorem real.continuous_at_tan - theorem real.continuous_tan +/- theorem real.deriv_tan - theorem real.deriv_tan_of_mem_Ioo +/- theorem real.differentiable_at_tan +/- theorem real.has_deriv_at_tan + theorem real.tan_pi_div_two + theorem real.tendsto_abs_tan_at_top + theorem real.tendsto_abs_tan_of_cos_eq_zero 2020-12-22 17:05:09 d569d63 refactor(analysis/inner_product_space, geometry/euclidean) range of orthogonal projection (#5408) Previously, the orthogonal projection was defined for all subspaces of an inner product space, with the junk value `id` if the space was not complete; then all nontrivial lemmas required a hypothesis of completeness (and nonemptiness for the affine orthogonal projection). Change this to a definition only for subspaces `K` satisfying `[complete_space K]` (and `[nonempty K]` for the affine orthogonal projection). Previously, the orthogonal projection was a linear map from `E` to `E`. Redefine it to be a linear map from `E` to `K`. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Orthogonal.20projection) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean +/- theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero + theorem eq_orthogonal_projection_of_eq_submodule +/- theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero +/- def orthogonal_projection - theorem orthogonal_projection_def +/- def orthogonal_projection_fn +/- theorem orthogonal_projection_fn_eq +/- theorem orthogonal_projection_fn_inner_eq_zero +/- theorem orthogonal_projection_fn_mem +/- theorem orthogonal_projection_inner_eq_zero - theorem orthogonal_projection_mem - def orthogonal_projection_of_complete Modified src/data/finset/basic.lean Modified src/geometry/euclidean/basic.lean +/- theorem euclidean_geometry.dist_orthogonal_projection_eq_zero_iff +/- theorem euclidean_geometry.dist_orthogonal_projection_ne_zero_of_not_mem +/- theorem euclidean_geometry.dist_reflection +/- theorem euclidean_geometry.dist_reflection_eq_of_mem + theorem euclidean_geometry.eq_orthogonal_projection_of_eq_subspace + theorem euclidean_geometry.eq_reflection_of_eq_subspace +/- theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection +/- theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection_fn +/- def euclidean_geometry.orthogonal_projection - theorem euclidean_geometry.orthogonal_projection_def +/- theorem euclidean_geometry.orthogonal_projection_eq_self_iff +/- def euclidean_geometry.orthogonal_projection_fn +/- theorem euclidean_geometry.orthogonal_projection_fn_eq +/- theorem euclidean_geometry.orthogonal_projection_fn_mem +/- theorem euclidean_geometry.orthogonal_projection_fn_mem_orthogonal +/- theorem euclidean_geometry.orthogonal_projection_fn_vsub_mem_direction_orthogonal +/- theorem euclidean_geometry.orthogonal_projection_linear +/- theorem euclidean_geometry.orthogonal_projection_mem +/- theorem euclidean_geometry.orthogonal_projection_mem_orthogonal - def euclidean_geometry.orthogonal_projection_of_nonempty_of_complete - theorem euclidean_geometry.orthogonal_projection_of_nonempty_of_complete_eq +/- theorem euclidean_geometry.orthogonal_projection_orthogonal_projection +/- theorem euclidean_geometry.orthogonal_projection_vadd_eq_self +/- theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction +/- theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction_orthogonal +/- def euclidean_geometry.reflection +/- theorem euclidean_geometry.reflection_apply +/- theorem euclidean_geometry.reflection_eq_iff_orthogonal_projection_eq +/- theorem euclidean_geometry.reflection_eq_self_iff +/- theorem euclidean_geometry.reflection_involutive +/- theorem euclidean_geometry.reflection_mem_of_le_of_mem +/- theorem euclidean_geometry.reflection_orthogonal_vadd +/- theorem euclidean_geometry.reflection_reflection +/- theorem euclidean_geometry.reflection_symm +/- theorem euclidean_geometry.reflection_vadd_smul_vsub_orthogonal_projection +/- theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction +/- theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction_orthogonal Modified src/geometry/euclidean/circumcenter.lean +/- theorem euclidean_geometry.dist_eq_iff_dist_orthogonal_projection_eq +/- theorem euclidean_geometry.dist_set_eq_iff_dist_orthogonal_projection_eq +/- theorem euclidean_geometry.exists_dist_eq_iff_exists_dist_orthogonal_projection_eq Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/affine_space/affine_subspace.lean + theorem affine_subspace.coe_vadd + theorem affine_subspace.coe_vsub 2020-12-22 17:05:07 0ff9068 feat(data/finset/basic, topology/separation): add induction_on_union, separate, and separate_finset_of_t2 (#5332) prove lemma disjoint_finsets_opens_of_t2 showing that in a t2_space disjoint finsets have disjoint open neighbourhoods, using auxiliary lemma not_mem_finset_opens_of_t2. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.induction_on_union Modified src/topology/separation.lean + theorem finset_disjoint_finset_opens_of_t2 + theorem point_disjoint_finset_opens_of_t2 + theorem separated.comm + theorem separated.empty_left + theorem separated.empty_right + theorem separated.symm + theorem separated.union_left + theorem separated.union_right + def separated 2020-12-22 13:47:43 02ab90c chore(*): split some long lines (#5470) ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean +/- theorem CommRing.colimits.quot_add +/- theorem CommRing.colimits.quot_mul +/- theorem CommRing.colimits.quot_neg Modified src/algebra/category/Group/limits.lean Modified src/algebra/group_with_zero/basic.lean +/- theorem is_unit.ne_zero Modified src/algebra/ordered_group.lean Modified src/topology/uniform_space/basic.lean +/- theorem filter.has_basis.uniform_continuous_on_iff +/- theorem mem_uniform_prod +/- theorem nhds_basis_uniformity' +/- theorem uniform_continuous_fst +/- theorem uniform_continuous_on_iff_restrict +/- theorem uniform_continuous_snd +/- theorem uniform_space.core_eq Modified src/topology/uniform_space/completion.lean +/- theorem Cauchy.Cauchy_eq +/- theorem uniform_space.completion.extension_coe +/- theorem uniform_space.completion.extension_unique Modified test/monotonicity/test_cases.lean 2020-12-22 07:50:26 4ddae3d feat(ring_theory/power_series): define power series for `exp`, `sin`, `cos`, and `1 / (u - x)`. (#5432) This PR defines `power_series.exp` etc to be formal power series for the corresponding functions. Once we have a bridge to `is_analytic`, we should redefine `complex.exp` etc using these power series. ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem ring_hom.map_eq_zero Modified src/algebra/group/units_hom.lean + theorem units.coe_map_inv Modified src/analysis/calculus/formal_multilinear_series.lean Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.conj_eq_zero Renamed src/ring_theory/power_series.lean to src/ring_theory/power_series/basic.lean +/- theorem mv_power_series.inv_of_unit_eq' +/- theorem mv_power_series.inv_of_unit_eq Added src/ring_theory/power_series/well_known.lean + theorem power_series.coeff_exp + theorem power_series.coeff_inv_units_sub + theorem power_series.constant_coeff_inv_units_sub + def power_series.cos + def power_series.exp + def power_series.inv_units_sub + theorem power_series.inv_units_sub_mul_X + theorem power_series.inv_units_sub_mul_sub + theorem power_series.map_cos + theorem power_series.map_exp + theorem power_series.map_inv_units_sub + theorem power_series.map_sin + def power_series.sin 2020-12-22 03:10:44 92dfdbc chore(scripts): update nolints.txt (#5469) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-22 03:10:42 3c7394f fix(group_theory/*, algebra/group): [to_additive, simp] doesn't work (#5468) As explained in `algebra/group/to_additive`, `@[to_additive, simp]` doesn't work (it doesn't attach a `simp` attribute to the additive lemma), but conversely `@[simps, to_additive]` is also wrong. Along the way I also noticed that some `right_inv` (as in an inverse function) lemmas were being changed to `right_neg` by to_additive :D ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/semiconj.lean +/- theorem semiconj_by.mul_right Modified src/algebra/ordered_monoid.lean Modified src/group_theory/monoid_localization.lean +/- theorem submonoid.localization_map.mul_equiv_of_localizations_apply +/- theorem submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply +/- theorem submonoid.localization_map.mul_equiv_of_localizations_right_inv +/- theorem submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply +/- theorem submonoid.localization_map.mul_equiv_of_localizations_symm_apply +/- theorem submonoid.localization_map.of_mul_equiv_of_dom_apply +/- theorem submonoid.localization_map.of_mul_equiv_of_localizations_apply +/- theorem submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Modified src/group_theory/submonoid/operations.lean Modified src/topology/algebra/monoid.lean 2020-12-21 23:51:24 9ec2778 chore(data/{equiv,set}/basic): image_preimage (#5465) * `equiv.symm_image_image`: add `@[simp]`; * `equiv.image_preimage`, `equiv.preimage_image`: new `simp` lemmas; * `set.image_preimage_eq`, `set.preimage_image_eq`: make `s : set _` an explicit argument; * `function.injective.preimage_image`, `function.surjective.image_preimage`: new aliases for `set.preimage_image_eq` and `set.image_preimage_eq` with arguments reversed Also golf a proof about `separated`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/data/equiv/basic.lean + theorem equiv.image_preimage + theorem equiv.preimage_image +/- theorem equiv.symm_image_image Modified src/data/set/basic.lean + theorem function.injective.preimage_image + theorem function.surjective.image_preimage +/- theorem set.image_preimage_eq +/- theorem set.preimage_eq_preimage Modified src/order/semiconj_Sup.lean Modified src/topology/homeomorph.lean Modified src/topology/maps.lean Modified src/topology/uniform_space/separation.lean 2020-12-21 20:56:39 d2ae43f feat(data/list/basic): lemmas about nth of take and append (#5449) ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.nth_append + theorem list.nth_append_right + theorem list.nth_take + theorem list.nth_take_of_succ + theorem list.take_succ 2020-12-21 20:56:37 3b9cbdf feat(data/ordmap): Ordered maps (like rb_map but better) (#5353) This cleans up an old mathlib branch from 2 years ago, so it probably isn't in very modern style, but it would be best to get it merged and kept up to date rather than leaving it to rot. It is an implementation of size balanced ordered maps based on Haskell's `Data.Map.Strict`. The `ordnode` structure can be used directly if one is only interested in using it for programming purposes, and the `ordset` structure bundles the proofs so that you can prove theorems about inserting and deleting doing what you expect. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/algebra/order.lean + def cmp_le + theorem cmp_le_eq_cmp + theorem cmp_le_swap Modified src/data/nat/dist.lean + theorem nat.dist_tri_left' + theorem nat.dist_tri_left + theorem nat.dist_tri_right' + theorem nat.dist_tri_right Modified src/data/nat/psub.lean + def nat.psub' + theorem nat.psub'_eq_psub +/- theorem nat.psub_eq_none Added src/data/ordmap/ordnode.lean + def ordnode.adjust_with + def ordnode.all + def ordnode.alter + def ordnode.amem + def ordnode.any + def ordnode.attach' + def ordnode.balance + def ordnode.balance_l + def ordnode.balance_r + def ordnode.delta + def ordnode.diff + def ordnode.disjoint + def ordnode.drop + def ordnode.drop_aux + def ordnode.drop_while + def ordnode.dual + def ordnode.emem + def ordnode.empty + def ordnode.equiv + def ordnode.erase + def ordnode.erase_max + def ordnode.erase_min + def ordnode.filter + def ordnode.find + def ordnode.find_ge + def ordnode.find_ge_aux + def ordnode.find_gt + def ordnode.find_gt_aux + def ordnode.find_index + def ordnode.find_index_aux + def ordnode.find_le + def ordnode.find_le_aux + def ordnode.find_lt + def ordnode.find_lt_aux + def ordnode.find_max' + def ordnode.find_max + def ordnode.find_min' + def ordnode.find_min + def ordnode.fold + def ordnode.foldl + def ordnode.foldr + def ordnode.glue + def ordnode.image + def ordnode.insert' + def ordnode.insert_max + def ordnode.insert_min + def ordnode.insert_with + def ordnode.inter + def ordnode.is_subset + def ordnode.is_subset_aux + def ordnode.link + def ordnode.map + def ordnode.mem + def ordnode.merge + def ordnode.node' + def ordnode.nth + def ordnode.of_asc_list + def ordnode.of_asc_list_aux₁ + def ordnode.of_asc_list_aux₂ + def ordnode.of_list' + def ordnode.of_list + def ordnode.partition + def ordnode.pmap + def ordnode.powerset + def ordnode.ratio + def ordnode.remove_nth + def ordnode.repr + def ordnode.size + def ordnode.span + def ordnode.split3 + def ordnode.split + def ordnode.split_at + def ordnode.split_at_aux + def ordnode.split_max' + def ordnode.split_max + def ordnode.split_min' + def ordnode.split_min + def ordnode.take + def ordnode.take_aux + def ordnode.take_while + def ordnode.to_list + def ordnode.to_rev_list + def ordnode.union + def ordnode.update_with + inductive ordnode Added src/data/ordmap/ordset.lean + theorem ordnode.all.imp + theorem ordnode.all_balance' + theorem ordnode.all_balance_l + theorem ordnode.all_balance_r + theorem ordnode.all_dual + theorem ordnode.all_iff_forall + theorem ordnode.all_node' + theorem ordnode.all_node3_l + theorem ordnode.all_node3_r + theorem ordnode.all_node4_l + theorem ordnode.all_node4_r + theorem ordnode.all_rotate_l + theorem ordnode.all_rotate_r + theorem ordnode.all_singleton + theorem ordnode.any.imp + theorem ordnode.any_iff_exists + theorem ordnode.any_singleton + def ordnode.balance' + theorem ordnode.balance_eq_balance' + def ordnode.balance_l' + theorem ordnode.balance_l_eq_balance' + theorem ordnode.balance_l_eq_balance + def ordnode.balance_r' + theorem ordnode.balance_r_eq_balance' + theorem ordnode.balance_sz_dual + theorem ordnode.balanced.dual + def ordnode.balanced + theorem ordnode.balanced_sz.symm + def ordnode.balanced_sz + theorem ordnode.balanced_sz_down + theorem ordnode.balanced_sz_up + theorem ordnode.balanced_sz_zero + theorem ordnode.bounded.dual + theorem ordnode.bounded.dual_iff + theorem ordnode.bounded.mem_gt + theorem ordnode.bounded.mem_lt + theorem ordnode.bounded.mono_left + theorem ordnode.bounded.mono_right + theorem ordnode.bounded.of_gt + theorem ordnode.bounded.of_lt + theorem ordnode.bounded.to_lt + theorem ordnode.bounded.to_nil + theorem ordnode.bounded.to_sep + theorem ordnode.bounded.trans_left + theorem ordnode.bounded.trans_right + theorem ordnode.bounded.weak + theorem ordnode.bounded.weak_left + theorem ordnode.bounded.weak_right + def ordnode.bounded + theorem ordnode.delta_lt_false + theorem ordnode.dual_balance' + theorem ordnode.dual_balance_l + theorem ordnode.dual_balance_r + theorem ordnode.dual_dual + theorem ordnode.dual_erase_max + theorem ordnode.dual_erase_min + theorem ordnode.dual_insert + theorem ordnode.dual_node' + theorem ordnode.dual_node3_l + theorem ordnode.dual_node3_r + theorem ordnode.dual_node4_l + theorem ordnode.dual_node4_r + theorem ordnode.dual_rotate_l + theorem ordnode.dual_rotate_r + theorem ordnode.emem_iff_all + theorem ordnode.emem_iff_mem_to_list + theorem ordnode.equiv_iff + theorem ordnode.erase_max.valid + theorem ordnode.erase_min.valid + theorem ordnode.find_max'_all + theorem ordnode.find_max'_dual + theorem ordnode.find_max_dual + theorem ordnode.find_min'_all + theorem ordnode.find_min'_dual + theorem ordnode.find_min_dual + theorem ordnode.foldr_cons_eq_to_list + theorem ordnode.insert'.valid + theorem ordnode.insert'_eq_insert_with + theorem ordnode.insert.valid + theorem ordnode.insert_eq_insert_with + theorem ordnode.insert_with.valid + theorem ordnode.insert_with.valid_aux + theorem ordnode.length_to_list' + theorem ordnode.length_to_list + theorem ordnode.merge_nil_left + theorem ordnode.merge_nil_right + theorem ordnode.merge_node + def ordnode.node3_l + theorem ordnode.node3_l_size + def ordnode.node3_r + theorem ordnode.node3_r_size + def ordnode.node4_l + theorem ordnode.node4_l_size + def ordnode.node4_r + theorem ordnode.not_le_delta + theorem ordnode.raised.add_left + theorem ordnode.raised.add_right + theorem ordnode.raised.dist_le' + theorem ordnode.raised.dist_le + theorem ordnode.raised.right + def ordnode.raised + theorem ordnode.raised_iff + def ordnode.real_size + def ordnode.rotate_l + def ordnode.rotate_r + theorem ordnode.size_balance' + theorem ordnode.size_balance_l + theorem ordnode.size_balance_r + theorem ordnode.size_dual + theorem ordnode.size_eq_real_size + theorem ordnode.sized.balance' + theorem ordnode.sized.dual + theorem ordnode.sized.dual_iff + theorem ordnode.sized.eq_node' + theorem ordnode.sized.induction + theorem ordnode.sized.node' + theorem ordnode.sized.node3_l + theorem ordnode.sized.node3_r + theorem ordnode.sized.node4_l + theorem ordnode.sized.pos + theorem ordnode.sized.rotate_l + theorem ordnode.sized.rotate_l_size + theorem ordnode.sized.rotate_r + theorem ordnode.sized.rotate_r_size + theorem ordnode.sized.size_eq + theorem ordnode.sized.size_eq_zero + def ordnode.sized + theorem ordnode.split_max_eq + theorem ordnode.split_min_eq + theorem ordnode.to_list_nil + theorem ordnode.to_list_node + theorem ordnode.valid'.balance' + theorem ordnode.valid'.balance'_aux + theorem ordnode.valid'.balance'_lemma + theorem ordnode.valid'.balance + theorem ordnode.valid'.balance_l + theorem ordnode.valid'.balance_l_aux + theorem ordnode.valid'.balance_r + theorem ordnode.valid'.balance_r_aux + theorem ordnode.valid'.dual + theorem ordnode.valid'.dual_iff + theorem ordnode.valid'.erase_max_aux + theorem ordnode.valid'.erase_min_aux + theorem ordnode.valid'.glue + theorem ordnode.valid'.glue_aux + theorem ordnode.valid'.left + theorem ordnode.valid'.merge_aux + theorem ordnode.valid'.merge_aux₁ + theorem ordnode.valid'.merge_lemma + theorem ordnode.valid'.mono_left + theorem ordnode.valid'.mono_right + theorem ordnode.valid'.node' + theorem ordnode.valid'.node3_l + theorem ordnode.valid'.node3_r + theorem ordnode.valid'.node4_l + theorem ordnode.valid'.node4_l_lemma₁ + theorem ordnode.valid'.node4_l_lemma₂ + theorem ordnode.valid'.node4_l_lemma₃ + theorem ordnode.valid'.node4_l_lemma₄ + theorem ordnode.valid'.node4_l_lemma₅ + theorem ordnode.valid'.node + theorem ordnode.valid'.of_gt + theorem ordnode.valid'.of_lt + theorem ordnode.valid'.right + theorem ordnode.valid'.rotate_l + theorem ordnode.valid'.rotate_l_lemma₁ + theorem ordnode.valid'.rotate_l_lemma₂ + theorem ordnode.valid'.rotate_l_lemma₃ + theorem ordnode.valid'.rotate_l_lemma₄ + theorem ordnode.valid'.rotate_r + theorem ordnode.valid'.trans_left + theorem ordnode.valid'.trans_right + theorem ordnode.valid'.valid + structure ordnode.valid' + theorem ordnode.valid'_nil + theorem ordnode.valid'_singleton + theorem ordnode.valid.dual + theorem ordnode.valid.dual_iff + theorem ordnode.valid.left + theorem ordnode.valid.merge + theorem ordnode.valid.right + theorem ordnode.valid.size_eq + def ordnode.valid + theorem ordnode.valid_nil + theorem ordnode.valid_singleton + def ordset.empty + theorem ordset.empty_iff + def ordset.insert' + def ordset.nil + def ordset.size + def ordset Modified src/order/basic.lean + theorem order_dual.cmp_le_flip + theorem order_dual.linear_order.dual_dual + theorem order_dual.partial_order.dual_dual + theorem order_dual.preorder.dual_dual 2020-12-21 17:48:50 bc3ad25 feat(linear_algebra/tensor_algebra): Add missing lemmas about subtraction (#5428) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + theorem linear_map.map_sub₂ + theorem tensor_product.sub_tmul + theorem tensor_product.tmul_sub 2020-12-21 17:48:49 34d5750 feat(data/option/basic): lemmas on map of none and congr (#5424) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.map_congr + theorem option.map_eq_none' + theorem option.map_eq_none 2020-12-21 16:45:47 0ed425f feat(ring_theory/perfection): define characteristic predicate of perfection (#5386) Name changes: - `perfect_field` --> `perfect_ring` (generalization) - `semiring.perfection` --> `ring.perfection` - Original `ring.perfection` deleted. ESTIMATED CHANGES Modified src/field_theory/perfect_closure.lean +/- theorem coe_frobenius_equiv +/- theorem coe_frobenius_equiv_symm + theorem commute_frobenius_pth_root +/- theorem eq_pth_root_iff +/- def frobenius_equiv +/- theorem frobenius_pth_root + theorem injective_pow_p +/- theorem left_inverse_pth_root_frobenius +/- theorem monoid_hom.map_iterate_pth_root +/- theorem monoid_hom.map_pth_root +/- def perfect_closure.lift +/- def pth_root +/- theorem pth_root_eq_iff +/- theorem pth_root_frobenius + theorem pth_root_pow_p' + theorem pth_root_pow_p + theorem right_inverse_pth_root_frobenius +/- theorem ring_hom.map_iterate_pth_root +/- theorem ring_hom.map_pth_root Modified src/ring_theory/perfection.lean + def perfection.coeff + theorem perfection.coeff_add_ne_zero + theorem perfection.coeff_frobenius + theorem perfection.coeff_iterate_frobenius' + theorem perfection.coeff_iterate_frobenius + theorem perfection.coeff_mk + theorem perfection.coeff_ne_zero_of_le + theorem perfection.coeff_pow_p + theorem perfection.coeff_pth_root + theorem perfection.ext + theorem perfection.frobenius_pth_root + def perfection.lift + def perfection.pth_root + theorem perfection.pth_root_frobenius + theorem perfection_map.id + theorem perfection_map.mk' + theorem perfection_map.of + structure perfection_map - def ring.perfection.coeff - theorem ring.perfection.coeff_add_ne_zero - theorem ring.perfection.coeff_frobenius - theorem ring.perfection.coeff_ne_zero_of_le - theorem ring.perfection.coeff_pow_p - theorem ring.perfection.coeff_pth_root - theorem ring.perfection.ext - theorem ring.perfection.frobenius_pth_root - def ring.perfection.pth_root - theorem ring.perfection.pth_root_frobenius +/- def ring.perfection - def semiring.perfection 2020-12-21 15:29:49 96a2aa1 feat(ring_theory/roots_of_unity): add minimal_polynomial_eq_pow (#5444) This is the main result about minimal polynomial of primitive roots of unity: `μ` and `μ ^ p` have the same minimal polynomial. The proof is a little long, but I don't see how I can split it: it is entirely by contradiction, so any lemma extracted from it would start with a false assumption and at the end it would be used only in this proof. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.minimal_polynomial_eq_pow 2020-12-21 14:00:44 c5c02ec feat(category_theory/yoneda): add iso_comp_punit (#5448) A presheaf P : C^{op} -> Type v is isomorphic to the composition of P with the coyoneda functor Type v -> Type v associated to `punit`. [This is useful for developing the theory of sheaves taking values in a general category] ESTIMATED CHANGES Modified src/category_theory/yoneda.lean + def category_theory.coyoneda.iso_comp_punit 2020-12-21 09:07:54 c98d5bb feat(category_theory/limits): yoneda preserves limits (#5439) yoneda and coyoneda preserve limits ESTIMATED CHANGES Modified src/category_theory/limits/preserves/limits.lean Modified src/category_theory/limits/yoneda.lean 2020-12-21 07:48:53 4778e16 chore(category_theory/sites/sheaf): rename sheaf to sheaf_of_types (#5458) I wanted to add sheaves with values in general categories, so I moved sheaf.lean to sheaf_of_types.lean and then added a new file sheaf.lean. Github then produced an incomprehensible diff file because sheaf.lean had completely changed. Hence I propose first moving `sheaf.lean` to `sheaf_of_types.lean` and then adding a new `sheaf.lean` later. As well as moving the file, I also slightly change it. ESTIMATED CHANGES Modified src/category_theory/sites/canonical.lean Renamed src/category_theory/sites/sheaf.lean to src/category_theory/sites/sheaf_of_types.lean - def category_theory.Sheaf + def category_theory.SheafOfTypes + def category_theory.SheafOfTypes_to_presheaf - def category_theory.Sheaf_to_presheaf Modified src/category_theory/sites/types.lean +/- theorem category_theory.eval_app +/- def category_theory.yoneda' 2020-12-21 01:32:14 ca2e536 chore(scripts): update nolints.txt (#5459) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-20 11:33:02 d79105e feat(tactic/field_simp): let field_simp use norm_num to prove numerals are nonzero (#5418) As suggested by @robertylewis in https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Solving.20simple.20%28in%29equalities.20gets.20frustrating/near/220278546, change the discharger in `field_simp` to try `assumption` on goals `x ≠ 0` and `norm_num1` on these goals when `x` is a numeral. ESTIMATED CHANGES Modified archive/100-theorems-list/42_inverse_triangle_sum.lean Modified archive/imo/imo1962_q4.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/group_with_zero/basic.lean +/- theorem mul_ne_zero Modified src/analysis/special_functions/trigonometric.lean Modified src/data/rat/floor.lean Modified src/data/real/golden_ratio.lean Modified src/data/real/nnreal.lean - theorem nnreal.mul_ne_zero' Modified src/field_theory/splitting_field.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/number_theory/pythagorean_triples.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/perfection.lean Added src/tactic/field_simp.lean Modified src/tactic/interactive.lean Modified test/ring.lean Modified test/ring_exp.lean 2020-12-20 09:21:32 5010738 feat(topology/algebra/ordered): continuity of `abs` (#5412) ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean Modified src/topology/algebra/ordered.lean + theorem continuous.abs + theorem continuous_abs + theorem continuous_at.abs + theorem continuous_on.abs + theorem continuous_within_at.abs + theorem filter.tendsto.abs + theorem tendsto_abs_nhds_within_zero Modified src/topology/basic.lean Modified src/topology/instances/real.lean - theorem rat.continuous_abs - theorem real.continuous_abs 2020-12-20 01:39:55 a9fb069 chore(scripts): update nolints.txt (#5441) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-19 20:45:22 1cb9727 feat(field_theory/galois): Separable splitting field is Galois (#5347) Proves that a splitting field of a separable polynomial is Galois by showing that it has lots of automorphisms. ESTIMATED CHANGES Modified src/field_theory/galois.lean + theorem is_galois.of_card_aut_eq_findim + theorem is_galois.of_fixed_field_eq_bot + theorem is_galois.of_separable_splitting_field + theorem is_galois.of_separable_splitting_field_aux 2020-12-19 17:55:35 e22fb94 chore(data/nat/cast,algebra/ordered_group): 2 trivial lemmas (#5436) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem inv_lt_self Modified src/data/nat/cast.lean + theorem with_top.one_le_iff_pos 2020-12-19 17:55:33 5de6757 chore(algebra/ordered_group): deduplicate (#5403) I deleted many `a_of_b` lemmas for which `a_iff_b` existed, then restored (most? all?) of them using `alias` command. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/algebra/ordered_group.lean - theorem add_le_of_le_sub_left - theorem add_le_of_le_sub_right - theorem add_lt_of_lt_sub_left - theorem add_lt_of_lt_sub_right - theorem exists_gt_zero + theorem exists_zero_lt - theorem le_add_of_neg_le_sub_left - theorem le_add_of_neg_le_sub_right - theorem le_add_of_sub_left_le - theorem le_add_of_sub_right_le - theorem le_of_sub_nonneg - theorem le_of_sub_nonpos - theorem le_sub_left_of_add_le - theorem le_sub_right_of_add_le - theorem lt_add_of_neg_lt_sub_left - theorem lt_add_of_neg_lt_sub_right - theorem lt_add_of_sub_left_lt - theorem lt_add_of_sub_right_lt - theorem lt_of_sub_neg - theorem lt_of_sub_pos - theorem lt_sub_left_of_add_lt - theorem lt_sub_right_of_add_lt - theorem neg_le_sub_left_of_le_add - theorem neg_le_sub_right_of_le_add - theorem neg_lt_sub_left_of_lt_add - theorem neg_lt_sub_right_of_lt_add + theorem sub_le_of_abs_sub_le_left + theorem sub_le_of_abs_sub_le_right - theorem sub_le_of_sub_le - theorem sub_le_self +/- theorem sub_le_self_iff - theorem sub_left_le_of_le_add - theorem sub_left_lt_of_lt_add + theorem sub_lt_of_abs_sub_lt_left + theorem sub_lt_of_abs_sub_lt_right - theorem sub_lt_of_sub_lt - theorem sub_lt_self +/- theorem sub_lt_self_iff - theorem sub_lt_sub_of_le_of_lt - theorem sub_lt_sub_of_lt_of_le - theorem sub_neg_of_lt - theorem sub_nonneg_of_le - theorem sub_nonpos_of_le - theorem sub_pos_of_lt - theorem sub_right_le_of_le_add - theorem sub_right_lt_of_lt_add Modified src/algebra/ordered_ring.lean - theorem sub_le_of_abs_sub_le_left - theorem sub_le_of_abs_sub_le_right - theorem sub_lt_of_abs_sub_lt_left - theorem sub_lt_of_abs_sub_lt_right Modified src/data/int/basic.lean Modified src/data/real/basic.lean 2020-12-19 17:55:30 63e7fc9 feat(topology/algebra/ordered): a linear ordered additive group with order topology is a topological group (#5402) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto_abs_at_bot_at_top + theorem filter.tendsto_abs_at_top_at_top Modified src/topology/algebra/ordered.lean + theorem eventually_abs_sub_lt +/- theorem linear_ordered_add_comm_group.tendsto_nhds + theorem nhds_eq_infi_abs_sub +/- theorem order_topology_of_nhds_abs - theorem tendsto_abs_at_top_at_top 2020-12-19 17:55:28 154a024 feat(measure_theory/lp_space): add lemmas about the monotonicity of the Lp seminorm (#5395) Also add a lemma mem_Lp.const_smul for a normed space. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.lintegral_Lp_mul_le_Lq_mul_Lr Modified src/measure_theory/lp_space.lean + theorem ℒp_space.mem_ℒp.const_smul + theorem ℒp_space.mem_ℒp.integrable + theorem ℒp_space.mem_ℒp.mem_ℒp_of_exponent_le + theorem ℒp_space.snorm_le_snorm_mul_rpow_measure_univ + theorem ℒp_space.snorm_le_snorm_of_exponent_le + theorem ℒp_space.snorm_smul_le_mul_snorm 2020-12-19 17:55:27 ce385a0 feat(ring_theory/roots_of_unity): lemmas about minimal polynomial (#5393) Three results about the minimal polynomial of `μ` and `μ ^ p`, where `μ` is a primitive root of unity. These are preparatory lemmas to prove that the two minimal polynomials are equal. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.minimal_polynomial_dvd_expand + theorem is_primitive_root.minimal_polynomial_dvd_mod_p + theorem is_primitive_root.minimal_polynomial_dvd_pow_mod + theorem is_primitive_root.pow_of_prime 2020-12-19 16:17:17 c55721d chore(analysis/calculus/{fderiv,deriv}): `f x ≠ f a` for `x ≈ a`, `x ≠ a` if `∥z∥ ≤ C * ∥f' z∥` (#5420) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.eq_zero_imp + theorem asymptotics.is_O_with.eq_zero_imp Modified src/analysis/calculus/deriv.lean + theorem has_deriv_at.eventually_ne Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at.eventually_ne + theorem has_fderiv_within_at.eventually_ne Modified src/analysis/normed_space/operator_norm.lean + theorem linear_map.bound_of_antilipschitz Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.eventually_ne_nhds_within 2020-12-19 14:59:26 ff830d7 feat(ring_theory/witt_vector): redefine subtraction using witt_sub polynomial (#5405) ESTIMATED CHANGES Modified src/ring_theory/witt_vector/basic.lean + theorem witt_vector.map_fun.sub Modified src/ring_theory/witt_vector/defs.lean + theorem witt_vector.sub_coeff + theorem witt_vector.witt_sub_vars Modified src/ring_theory/witt_vector/is_poly.lean - theorem witt_vector.sub_coeff - theorem witt_vector.sub_eq 2020-12-19 11:05:52 656b1bb feat(category_theory): essential image of a functor (#5352) Define essential image of a functor as a predicate and use it to re-express essential surjectivity. Construct the essential image as a subcategory of the target and use it to factorise an arbitrary functor into a fully faithful functor and an essentially surjective functor. Also shuffles the import hierarchy a little so that essential image can import full subcategories. ESTIMATED CHANGES Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/equivalence.lean +/- theorem category_theory.equivalence.functor_map_inj_iff +/- theorem category_theory.equivalence.inverse_map_inj_iff Added src/category_theory/essential_image.lean + def category_theory.functor.ess_image.get_iso + theorem category_theory.functor.ess_image.of_iso + theorem category_theory.functor.ess_image.of_nat_iso + def category_theory.functor.ess_image.witness + def category_theory.functor.ess_image + theorem category_theory.functor.ess_image_eq_of_nat_iso + def category_theory.functor.ess_image_inclusion + theorem category_theory.functor.obj_mem_ess_image + def category_theory.functor.obj_obj_preimage_iso + def category_theory.functor.obj_preimage + def category_theory.functor.to_ess_image + def category_theory.functor.to_ess_image_comp_essential_image_inclusion Modified src/category_theory/full_subcategory.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/limits/shapes/normal_mono.lean Modified src/topology/category/Compactum.lean 2020-12-19 08:21:41 0bb665c chore(ring_theory/power_series): review, golf (#5431) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_ite_index + theorem finset.prod_sigma' Modified src/analysis/analytic/composition.lean Modified src/data/complex/exponential.lean Modified src/data/nat/enat.lean +/- theorem enat.coe_lt_top Modified src/number_theory/arithmetic_function.lean Modified src/ring_theory/power_series.lean +/- def mv_power_series.coeff + theorem mv_power_series.coeff_add_monomial_mul + theorem mv_power_series.coeff_add_mul_monomial - theorem mv_power_series.coeff_monomial' + theorem mv_power_series.coeff_monomial_mul + theorem mv_power_series.coeff_monomial_ne + theorem mv_power_series.coeff_monomial_same + theorem mv_power_series.coeff_mul_monomial + theorem mv_power_series.eq_of_coeff_monomial_ne_zero + theorem mv_power_series.map_C + theorem mv_power_series.map_X + theorem mv_power_series.map_monomial +/- def mv_power_series.monomial +/- theorem mv_power_series.monomial_zero_eq_C + theorem mv_power_series.monomial_zero_one +/- def power_series.coeff - theorem power_series.coeff_monomial' + theorem power_series.coeff_monomial_same +/- def power_series.monomial +/- theorem power_series.monomial_zero_eq_C +/- theorem power_series.order_eq_top 2020-12-19 02:24:58 53354e7 chore(scripts): update nolints.txt (#5433) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-19 02:24:56 ec1b70e chore(linear_algebra/multilinear): Add map_update_zero (#5417) `map_coord_zero` isn't in a form that can be used by simp, so this introduces a form which can. ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.map_update_zero 2020-12-19 02:24:54 5e057c9 feat(data/fin): trans and id lemmas for fin.cast (#5415) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_refl + theorem fin.cast_trans 2020-12-18 23:34:58 0e9a77c feat(data/nat/basic): succ_lt_succ_iff (#5422) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.succ_lt_succ_iff 2020-12-18 20:57:15 33483a3 chore(analysis/special_functions/trigonometric): golf a few more proofs (#5423) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem complex.cos_eq_iff_quadratic Modified src/data/complex/basic.lean + theorem complex.int_cast_abs 2020-12-18 17:40:37 0d140b1 feat(data/set/basic): nonempty instances for subtypes (#5409) In #5408, it is useful to be able to track the nonemptiness of a subset by typeclass inference. These constructions allow one to do this. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.nonempty_of_nonempty_subtype 2020-12-18 15:15:14 775edc6 feat(linear_algebra/tensor_product): Inherit smul through is_scalar_tower (#5317) Most notably, this now means that the lemmas about `smul` and `tmul` can be used to prove `∀ z : Z, (z • a) ⊗ₜ[R] b = z • (a ⊗ₜ[R] b)`. Hopefully these instances aren't dangerous - in particular, there's now a risk of a non-defeq-but-eq diamond for the `ℤ`- and `ℕ`-module structure. However: * this diamond already exists in other places anyway * the diamond if it comes up can be solved with `subsingleton.elim`, since we have a proof that all Z-module and N-module structures must be equivalent. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean +/- def tensor_product.smul.aux +/- theorem tensor_product.smul.aux_of +/- theorem tensor_product.smul_tmul' +/- theorem tensor_product.smul_tmul +/- theorem tensor_product.tmul_smul Modified src/ring_theory/tensor_product.lean 2020-12-18 12:03:56 74b5839 chore(topology/algebra/ordered): generalize `tendsto_at_top_add_left` etc (#5398) * generalize some lemmas from `linear_ordered_ring` to `linear_ordered_add_comm_group`; * rename them to allow dot notation; the new names are `filter.tendsto.add_at_*` and `filter.tendsto.at_*_add`, where `*` is `top` or `bot`; * generalize `infi_unit` and `supr_unit` to `conditionally_complete_lattice`, add `[unique α]` versions; * in a `subsingleton`, both `at_top` and `at_bot` are equal to `⊤`; these lemmas are useful for the `nontriviality` tactic. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_of_subsingleton + theorem polynomial.monic.coeff_nat_degree + theorem polynomial.nat_degree_of_subsingleton Modified src/data/polynomial/monic.lean - theorem polynomial.monic.coeff_nat_degree +/- theorem polynomial.monic.nat_degree_mul +/- theorem polynomial.monic.next_coeff_prod Modified src/data/polynomial/reverse.lean + theorem polynomial.coeff_one_reverse + theorem polynomial.coeff_zero_reverse Modified src/order/basic.lean Modified src/order/complete_lattice.lean - theorem infi_unit - theorem supr_unit Modified src/order/conditionally_complete_lattice.lean + theorem infi_unique + theorem infi_unit + theorem supr_unique + theorem supr_unit Modified src/order/filter/at_top_bot.lean + theorem filter.subsingleton.at_bot_eq + theorem filter.subsingleton.at_top_eq Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.add_at_bot + theorem filter.tendsto.add_at_top + theorem filter.tendsto.at_bot_add + theorem filter.tendsto.at_top_add + theorem filter.tendsto.mul_at_top - theorem tendsto_at_bot_add_tendsto_left - theorem tendsto_at_bot_add_tendsto_right - theorem tendsto_at_top_add_tendsto_left - theorem tendsto_at_top_add_tendsto_right 2020-12-18 09:12:03 c4f673c chore(analysis/normed_space/basic): `continuous_at.norm` etc (#5411) Add variants of the lemma that the norm is continuous. Also rewrite a few proofs, and rename three lemmas: * `lim_norm` -> `tendsto_norm_sub_self` * `lim_norm_zero` -> `tendsto_norm_zero` * `lim_norm_zero'` -> `tendsto_norm_zero'` ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/basic.lean + theorem continuous.nnnorm +/- theorem continuous.norm + theorem continuous_at.nnnorm + theorem continuous_at.norm + theorem continuous_on.nnnorm + theorem continuous_on.norm + theorem continuous_within_at.nnnorm + theorem continuous_within_at.norm +/- theorem filter.tendsto.nnnorm +/- theorem filter.tendsto.norm - theorem lim_norm - theorem lim_norm_zero + theorem tendsto_norm + theorem tendsto_norm_nhds_within_zero + theorem tendsto_norm_sub_self + theorem tendsto_norm_zero Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/specific_limits.lean - theorem lim_norm_zero' + theorem tendsto_norm_zero' Modified src/topology/basic.lean + theorem continuous.tendsto' 2020-12-18 01:44:51 a4dd9e1 chore(scripts): update nolints.txt (#5413) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-18 01:44:49 b1218f8 chore(analysis/special_functions/trigonometric): review, golf (#5392) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem real.bij_on_cos + theorem real.bij_on_sin +/- theorem real.cos_eq_one_iff_of_lt_of_lt - theorem real.cos_inj_of_nonneg_of_le_pi + theorem real.cos_mem_Icc +/- theorem real.cos_nonneg_of_mem_Icc +/- theorem real.cos_nonpos_of_pi_div_two_le_of_le +/- theorem real.cos_pos_of_mem_Ioo - theorem real.exists_cos_eq - theorem real.exists_sin_eq + theorem real.inj_on_cos + theorem real.inj_on_sin + theorem real.maps_to_cos + theorem real.maps_to_sin +/- theorem real.range_cos +/- theorem real.range_sin - theorem real.sin_inj_of_le_of_le_pi_div_two - theorem real.sin_lt_sin_of_le_of_le_pi_div_two + theorem real.sin_lt_sin_of_lt_of_le_pi_div_two + theorem real.sin_mem_Icc + theorem real.sin_nonneg_of_mem_Icc + theorem real.sin_pos_of_mem_Ioo + theorem real.strict_mono_decr_on_cos + theorem real.strict_mono_incr_on_sin + theorem real.surj_on_cos + theorem real.surj_on_sin Modified src/geometry/euclidean/triangle.lean 2020-12-17 16:32:00 35f2789 chore(algebra/module/basic): add `subsingleton (semimodule ℕ M)` (#5396) This can be used to resolve diamonds between different `semimodule ℕ` instances. The implementation is copied from the `subsingleton (module ℤ M)` instance. ESTIMATED CHANGES Modified src/algebra/module/basic.lean - theorem module_ext + theorem semimodule_ext 2020-12-17 13:27:40 6f1351f chore(algebra/{group,ring}): more on pushing/pulling groups/rings along morphisms (#5406) ESTIMATED CHANGES Modified src/algebra/group/inj_surj.lean Modified src/algebra/ring/basic.lean 2020-12-17 13:27:39 ff716d2 chore(order/bounds): golf (#5401) ESTIMATED CHANGES Modified src/order/bounds.lean + theorem is_glb.exists_between' + theorem is_glb.exists_between +/- theorem is_glb.exists_between_self_add' +/- theorem is_glb.exists_between_self_add + theorem is_lub.exists_between' + theorem is_lub.exists_between +/- theorem is_lub.exists_between_sub_self' +/- theorem is_lub.exists_between_sub_self Modified src/topology/instances/real.lean 2020-12-17 13:27:36 3685146 chore(topology/algebra/ordered): deduplicate (#5399) * Drop `mem_nhds_unbounded` in favor of `mem_nhds_iff_exists_Ioo_subset'`. * Use `(h : ∃ l, l < a)` instead of `{l} (hl : l < a)` in `mem_nhds_iff_exists_Ioo_subset'`. This way we can `apply` the theorem without generating non-`Prop` goals and we can get the arguments directly from `no_bot` / `no_top`. * add `nhds_basis_Ioo'` and `nhds_basis_Ioo`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem inf_binfi Modified src/topology/algebra/ordered.lean +/- theorem mem_nhds_iff_exists_Ioo_subset' - theorem mem_nhds_unbounded + theorem nhds_basis_Ioo' + theorem nhds_basis_Ioo Modified src/topology/instances/real.lean 2020-12-17 13:27:34 35a16a9 feat(algebra/module/basic): Add symmetric smul_comm_class instances for int and nat (#5369) These can't be added globally for all types as they cause instance resolution loops, but are safe here as these definitions do not depend on an existing `smul_comm_class`. Note that these instances already exist via `is_scalar_tower.to_smul_comm_class'` for algebras - this just makes sure the instances are still available in the presence of weaker typeclasses. There's no diamond concern here, as `smul_comm_class` is in `Prop`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean Modified src/linear_algebra/alternating.lean 2020-12-17 10:49:30 ee6969c chore(linear_algebra/{alternating,multilinear}): Add a handful of trivial lemmas (#5380) Some of these are needed for a WIP PR, and some seem like generally nice things to have. ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.coe_add + theorem alternating_map.coe_alternatization + theorem alternating_map.coe_neg + theorem alternating_map.coe_smul + theorem alternating_map.coe_sub + theorem alternating_map.coe_zero +/- theorem alternating_map.smul_apply + theorem alternating_map.sub_apply - theorem alternating_map.to_multilinear_map_alternization Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.dom_coprod'_apply + theorem multilinear_map.dom_coprod_dom_dom_congr_sum_congr + theorem multilinear_map.dom_dom_congr_mul + theorem multilinear_map.dom_dom_congr_trans +/- theorem multilinear_map.sub_apply 2020-12-17 08:03:51 6a99e9e chore(analysis/calculus/deriv): add `iff` versions of `differentiable_const_add` etc (#5390) Also drop some unneeded `differentiable` assumptions in lemmas like `deriv_const_add`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem deriv_add_const +/- theorem deriv_const_add +/- theorem deriv_const_sub +/- theorem deriv_sub_const +/- theorem deriv_within.neg +/- theorem deriv_within_add_const +/- theorem deriv_within_const_add +/- theorem deriv_within_const_sub +/- theorem deriv_within_sub_const Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable.const_add +/- theorem differentiable.const_sub +/- theorem differentiable.neg +/- theorem differentiable.sub_const + theorem differentiable_add_const_iff +/- theorem differentiable_at.neg +/- theorem differentiable_at.sub_const + theorem differentiable_at_add_const_iff + theorem differentiable_at_const_add_iff + theorem differentiable_at_const_sub_iff + theorem differentiable_at_neg_iff + theorem differentiable_at_sub_const_iff + theorem differentiable_const_add_iff + theorem differentiable_const_sub_iff + theorem differentiable_neg_iff +/- theorem differentiable_on.const_add +/- theorem differentiable_on.const_sub +/- theorem differentiable_on.sub_const + theorem differentiable_on_add_const_iff + theorem differentiable_on_const_add_iff + theorem differentiable_on_const_sub_iff + theorem differentiable_on_neg_iff + theorem differentiable_on_sub_const_iff + theorem differentiable_sub_const_iff + theorem differentiable_within_at_add_const_iff + theorem differentiable_within_at_const_add_iff + theorem differentiable_within_at_const_sub_iff + theorem differentiable_within_at_neg_iff + theorem differentiable_within_at_sub_const_iff +/- theorem fderiv_add_const +/- theorem fderiv_const_add +/- theorem fderiv_const_sub +/- theorem fderiv_neg +/- theorem fderiv_sub_const +/- theorem fderiv_within_add_const +/- theorem fderiv_within_const_add +/- theorem fderiv_within_const_sub +/- theorem fderiv_within_neg +/- theorem fderiv_within_sub_const +/- theorem has_fderiv_at.add_const 2020-12-17 01:31:27 e8fc373 chore(scripts): update nolints.txt (#5400) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-12-16 21:52:40 01a77ad chore(analysis/analytic/basic.lean): fix latex in doc (#5397) Doc in the file `analytic/basic.lean` is broken, since I used a latex command `\choose` which doesn't exist. Replace it with `\binom`. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean 2020-12-16 21:52:38 8fa10af feat(ring_theory/algebra_tower): alg_hom_equiv_sigma (#5345) Proves that algebra homomorphisms from the top of an is_scalar_tower are the same as a pair of algebra homomorphisms. This is useful for counting algebra homomorphisms. ESTIMATED CHANGES Modified src/ring_theory/algebra_tower.lean + def alg_hom.extend_scalars + def alg_hom.restrict_domain + def alg_hom_equiv_sigma 2020-12-16 18:35:22 c5a2ff4 chore(script/copy-mod-doc) Specify an encoding for files when opening (#5394) This was necessary for the script to run locally on windows. ESTIMATED CHANGES Modified scripts/lint-copy-mod-doc.py 2020-12-16 18:35:20 9282f6c feat(finset): two simple lemmas (#5387) also open function namespace ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.coe_injective + theorem finset.mem_insert_coe + theorem list.to_finset_surj_on +/- theorem list.to_finset_surjective 2020-12-16 15:31:36 39ecd1a chore(group_theory/group_action/basic): Add a simp lemma about smul on quotient groups (#5374) By pushing `mk` to the outside, this increases the chance they can cancel with an outer `lift` ESTIMATED CHANGES Modified src/group_theory/group_action/basic.lean + theorem mul_action.quotient.smul_coe + theorem mul_action.quotient.smul_mk 2020-12-16 15:31:34 1221ab6 chore(*): add a `div`/`sub` field to (`add_`)`group`(`_with_zero`) (#5303) This PR is intended to fix the following kind of diamonds: Let `foo X` be a type with a `∀ X, has_div (foo X)` instance but no `∀ X, has_inv (foo X)`, e.g. when `foo X` is a `euclidean_domain`. Suppose we also have an instance `∀ X [cromulent X], group_with_zero (foo X)`. Then the `(/)` coming from `group_with_zero_has_div` cannot be defeq to the `(/)` coming from `foo.has_div`. As a consequence of making the `has_div` instances defeq, we can no longer assume that `(div_eq_mul_inv a b : a / b = a * b⁻¹) = rfl` for all groups. The previous preparation PR #5302 should have changed all places in mathlib that assumed defeqness, to rewrite explicitly instead. ESTIMATED CHANGES Modified src/algebra/field.lean - theorem inv_eq_one_div - theorem mul_one_div Modified src/algebra/group/basic.lean - theorem group.inv_eq_one_div - theorem group.mul_one_div + theorem inv_eq_one_div + theorem mul_one_div Modified src/algebra/group/defs.lean + theorem div_eq_mul_inv - theorem group.div_eq_mul_inv + def group.to_monoid - theorem sub_eq_add_neg Modified src/algebra/group/hom.lean - theorem add_monoid_hom.sub_apply + theorem monoid_hom.div_apply Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/pi.lean - theorem pi.sub_apply Modified src/algebra/group/prod.lean Modified src/algebra/group/type_tags.lean + theorem of_add_sub + theorem of_mul_div + theorem to_add_div + theorem to_mul_sub Modified src/algebra/group/ulift.lean + theorem ulift.div_down - theorem ulift.sub_down Modified src/algebra/group_with_zero/basic.lean Modified src/algebra/group_with_zero/defs.lean - theorem div_eq_mul_inv Modified src/algebra/monoid_algebra.lean Modified src/algebra/opposites.lean Modified src/algebra/ordered_group.lean Modified src/algebra/punit_instances.lean + theorem punit.div_eq Modified src/algebra/quandle.lean Modified src/algebra/ring/ulift.lean Modified src/analysis/asymptotic_equivalent.lean Modified src/analysis/hofer.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/category_theory/endomorphism.lean Modified src/data/complex/basic.lean Modified src/data/equiv/mul_add_aut.lean Modified src/data/equiv/ring_aut.lean Modified src/data/equiv/transfer_instance.lean + theorem equiv.div_def Modified src/data/finsupp/basic.lean Modified src/data/int/basic.lean Modified src/data/matrix/basic.lean +/- theorem matrix.neg_apply +/- theorem matrix.sub_apply +/- theorem matrix.zero_apply Modified src/data/padics/padic_integers.lean + theorem padic_int.coe_pow +/- theorem padic_int.coe_sub - theorem padic_int.coet_pow Modified src/data/pi.lean +/- theorem pi.div_apply Modified src/data/quaternion.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean + theorem cau_seq.completion.mk_sub Modified src/data/real/hyperreal.lean Modified src/data/zsqrtd/basic.lean Modified src/deprecated/subgroup.lean - theorem is_add_subgroup.sub_mem + theorem is_subgroup.div_mem Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/perfect_closure.lean Modified src/group_theory/congruence.lean Modified src/group_theory/perm/basic.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean - theorem add_subgroup.sub_mem + theorem subgroup.div_mem Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean + theorem submodule.quotient.mk_sub Modified src/linear_algebra/char_poly/basic.lean Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.sub_apply Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.coe_sub Modified src/number_theory/dioph.lean Modified src/order/filter/filter_product.lean Modified src/order/filter/germ.lean + theorem filter.germ.coe_div - theorem filter.germ.coe_sub Modified src/ring_theory/derivation.lean Modified src/ring_theory/localization.lean Modified src/tactic/norm_num.lean - theorem norm_num.int_sub_hack Modified src/tactic/ring.lean Modified src/topology/algebra/group_completion.lean + theorem uniform_space.completion.coe_sub Modified src/topology/algebra/module.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/bounded_continuous_function.lean Modified test/refine_struct.lean 2020-12-16 13:55:21 461865b refactor(data/real): move `real.sqrt` to `data.real.sqrt`, more dependencies (#5359) * define `nnreal.sqrt`; * use general theory to prove that the inverse exists, and is an `order_iso`; * deduce continuity of `sqrt` from continuity of `order_iso`. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/special_functions/arsinh.lean Modified src/analysis/special_functions/pow.lean - theorem real.continuous_sqrt Modified src/analysis/special_functions/trigonometric.lean Modified src/data/complex/basic.lean Modified src/data/real/basic.lean - theorem real.le_sqrt' - theorem real.le_sqrt - theorem real.le_sqrt_of_sqr_le - theorem real.mul_self_sqrt - theorem real.sqr_sqrt - def real.sqrt_aux - theorem real.sqrt_aux_nonneg - theorem real.sqrt_div - theorem real.sqrt_eq_iff_mul_self_eq - theorem real.sqrt_eq_iff_sqr_eq - theorem real.sqrt_eq_zero' - theorem real.sqrt_eq_zero - theorem real.sqrt_eq_zero_of_nonpos - theorem real.sqrt_exists - theorem real.sqrt_inj - theorem real.sqrt_inv - theorem real.sqrt_le - theorem real.sqrt_le_left - theorem real.sqrt_le_sqrt - theorem real.sqrt_lt - theorem real.sqrt_mul' - theorem real.sqrt_mul - theorem real.sqrt_mul_self - theorem real.sqrt_mul_self_eq_abs - theorem real.sqrt_nonneg - theorem real.sqrt_one - theorem real.sqrt_pos - theorem real.sqrt_prop - theorem real.sqrt_sqr - theorem real.sqrt_sqr_eq_abs - theorem real.sqrt_zero Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean + theorem nnreal.le_of_real_iff_coe_le' Added src/data/real/sqrt.lean + theorem continuous.sqrt + theorem continuous_at.sqrt + theorem continuous_on.sqrt + theorem continuous_within_at.sqrt + theorem filter.tendsto.sqrt + theorem nnreal.continuous_sqrt + theorem nnreal.le_sqrt_iff + theorem nnreal.mul_sqrt_self + theorem nnreal.sqrt_div + theorem nnreal.sqrt_eq_iff_sqr_eq + theorem nnreal.sqrt_eq_zero + theorem nnreal.sqrt_inv + theorem nnreal.sqrt_le_iff + theorem nnreal.sqrt_mul + theorem nnreal.sqrt_mul_self + theorem nnreal.sqrt_one + theorem nnreal.sqrt_zero + theorem real.continuous_sqrt + theorem real.le_sqrt' + theorem real.le_sqrt + theorem real.le_sqrt_of_sqr_le + theorem real.mul_self_sqrt + theorem real.sqr_sqrt + def real.sqrt_aux + theorem real.sqrt_aux_nonneg + theorem real.sqrt_div + theorem real.sqrt_eq_iff_mul_self_eq + theorem real.sqrt_eq_iff_sqr_eq + theorem real.sqrt_eq_zero' + theorem real.sqrt_eq_zero + theorem real.sqrt_eq_zero_of_nonpos + theorem real.sqrt_inj + theorem real.sqrt_inv + theorem real.sqrt_le + theorem real.sqrt_le_iff + theorem real.sqrt_le_left + theorem real.sqrt_le_sqrt + theorem real.sqrt_lt + theorem real.sqrt_mul' + theorem real.sqrt_mul + theorem real.sqrt_mul_self + theorem real.sqrt_mul_self_eq_abs + theorem real.sqrt_nonneg + theorem real.sqrt_one + theorem real.sqrt_pos + theorem real.sqrt_sqr + theorem real.sqrt_sqr_eq_abs + theorem real.sqrt_zero 2020-12-16 13:55:19 1b01068 feat(ring_theory/witt_vector): Witt vectors are proj. limit of truncated Witt vectors (#5163) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/ring_theory/witt_vector/truncated.lean + theorem truncated_witt_vector.card + theorem truncated_witt_vector.coeff_truncate + theorem truncated_witt_vector.infi_ker_truncate + def truncated_witt_vector.truncate + theorem truncated_witt_vector.truncate_comp + theorem truncated_witt_vector.truncate_comp_witt_vector_truncate + theorem truncated_witt_vector.truncate_surjective + theorem truncated_witt_vector.truncate_truncate + theorem truncated_witt_vector.truncate_witt_vector_truncate + theorem witt_vector.coeff_truncate + theorem witt_vector.hom_ext + def witt_vector.lift + def witt_vector.lift_equiv + def witt_vector.lift_fun + theorem witt_vector.lift_unique + theorem witt_vector.mem_ker_truncate + def witt_vector.truncate + theorem witt_vector.truncate_comp_lift + theorem witt_vector.truncate_lift + theorem witt_vector.truncate_lift_fun + theorem witt_vector.truncate_mk + theorem witt_vector.truncate_surjective 2020-12-16 10:00:13 6548be4 chore(data/quot): Add missing simp lemmas (#5372) These are called `lift_on'_beta` for consistency with `lift_on_beta`; even though we also have `map_mk'` etc in the same file. ESTIMATED CHANGES Modified src/data/quot.lean 2020-12-16 07:31:15 78940f4 chore(*): use notation `ℝ≥0` (#5391) ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/analytic/basic.lean +/- theorem formal_multilinear_series.bound_of_lt_radius +/- theorem formal_multilinear_series.geometric_bound_of_lt_radius +/- theorem formal_multilinear_series.le_radius_of_bound +/- theorem has_fpower_series_on_ball.tendsto_uniformly_on' +/- theorem has_fpower_series_on_ball.tendsto_uniformly_on +/- theorem has_fpower_series_on_ball.uniform_geometric_approx Modified src/analysis/analytic/composition.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/basic.lean +/- theorem antilipschitz_with.add_lipschitz_with +/- theorem continuous_nnnorm +/- theorem lipschitz_with.add +/- theorem lipschitz_with.neg +/- theorem lipschitz_with.sub +/- theorem summable_of_nnnorm_bounded Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.op_norm_le_of_lipschitz +/- theorem continuous_linear_map.uniform_embedding_of_bound +/- theorem linear_map.antilipschitz_of_bound Modified src/analysis/special_functions/pow.lean +/- theorem measurable.nnreal_rpow +/- theorem measurable.nnreal_rpow_const +/- theorem nnreal.measurable_rpow +/- theorem nnreal.measurable_rpow_const Modified src/analysis/specific_limits.lean +/- theorem nnreal.exists_pos_sum_of_encodable +/- theorem nnreal.has_sum_geometric +/- theorem nnreal.summable_geometric +/- theorem nnreal.tendsto_const_div_at_top_nhds_0_nat +/- theorem nnreal.tendsto_inverse_at_top_nhds_0_nat +/- theorem nnreal.tendsto_pow_at_top_nhds_0_of_lt_1 +/- theorem tsum_geometric_nnreal Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean +/- theorem nnreal.add_sub_cancel' +/- theorem nnreal.add_sub_cancel +/- theorem nnreal.bdd_above_coe +/- theorem nnreal.bdd_below_coe +/- theorem nnreal.bot_eq_zero +/- theorem nnreal.coe_Inf +/- theorem nnreal.coe_Sup +/- theorem nnreal.coe_max +/- theorem nnreal.coe_min +/- theorem nnreal.coe_nonneg +/- theorem nnreal.div_def +/- theorem nnreal.inv_eq_zero +/- theorem nnreal.inv_pos +/- theorem nnreal.inv_zero +/- theorem nnreal.le_of_forall_epsilon_le +/- theorem nnreal.le_of_real_iff_coe_le +/- theorem nnreal.lt_iff_exists_rat_btwn +/- theorem nnreal.lt_of_real_iff_coe_lt +/- theorem nnreal.lt_sub_iff_add_lt +/- theorem nnreal.mul_eq_mul_left +/- theorem nnreal.mul_ne_zero' +/- theorem nnreal.of_real_le_iff_le_coe +/- theorem nnreal.of_real_lt_iff_lt_coe +/- theorem nnreal.sub_add_cancel_of_le +/- theorem nnreal.sub_eq_iff_eq_add +/- theorem nnreal.sub_le_iff_le_add +/- theorem nnreal.sub_lt_iff_lt_add +/- theorem nnreal.val_eq_coe +/- theorem nnreal.zero_le_coe Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.lintegral_coe_eq_integral Modified src/measure_theory/content.lean +/- theorem measure_theory.outer_measure.of_content_exists_compact +/- theorem measure_theory.outer_measure.of_content_exists_open Modified src/measure_theory/decomposition.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.lintegral_mono_nnreal +/- theorem measure_theory.simple_func.map_coe_ennreal_restrict +/- theorem measure_theory.simple_func.map_coe_nnreal_restrict Modified src/measure_theory/outer_measure.lean Modified src/topology/algebra/infinite_sum.lean +/- theorem cauchy_seq_of_edist_le_of_summable Modified src/topology/bounded_continuous_function.lean +/- def bounded_continuous_function.comp +/- theorem bounded_continuous_function.continuous_comp +/- theorem bounded_continuous_function.lipschitz_comp +/- theorem bounded_continuous_function.uniform_continuous_comp Modified src/topology/instances/ennreal.lean +/- theorem ennreal.coe_range_mem_nhds +/- theorem ennreal.continuous_coe +/- theorem ennreal.continuous_coe_iff +/- theorem ennreal.embedding_coe +/- def ennreal.lt_top_homeomorph_nnreal +/- def ennreal.ne_top_homeomorph_nnreal +/- theorem ennreal.nhds_coe +/- theorem ennreal.nhds_coe_coe +/- theorem ennreal.tendsto_coe Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/basic.lean +/- theorem dist_le_coe +/- theorem dist_lt_coe +/- theorem edist_le_coe +/- theorem edist_lt_coe +/- theorem metric.emetric_ball_nnreal +/- theorem metric.emetric_closed_ball_nnreal +/- def nndist +/- theorem nnreal.dist_eq +/- theorem nnreal.nndist_eq Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/metric_space/pi_Lp.lean 2020-12-16 07:31:13 47b3c4b feat(algebra/lie/basic): nilpotent and solvable Lie algebras (#5382) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean - def derived_lie_ideal - def derived_lie_submodule + def lie_algebra.derived_series + theorem lie_module.derived_series_le_lower_central_series + def lie_module.lower_central_series + theorem lie_module.trivial_iff_derived_eq_bot + theorem lie_submodule.trivial_lie_oper_zero - theorem trivial_iff_derived_eq_bot + theorem trivial_lie_zero 2020-12-16 04:20:19 79e9aee feat(equiv/basic): add true_arrow_equiv (#5388) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.true_arrow_equiv 2020-12-16 01:15:14 26f8b28 chore(scripts): update nolints.txt (#5384) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-16 01:15:12 e264e5f feat(tactic/ext): `ext?` displays applied lemmas (#5375) refactor using `state_t` instead of state passing style ESTIMATED CHANGES Modified src/control/monad/basic.lean Modified src/tactic/congr.lean Modified src/tactic/ext.lean Modified test/ext.lean 2020-12-15 22:23:52 2ee0f1e feat(category_theory/isomorphism): is_iso versions (#5355) add `is_iso` versions of some existing `iso` lemmas ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean + theorem category_theory.comp_hom_eq_id + theorem category_theory.hom_comp_eq_id 2020-12-15 22:23:50 dbb6b04 feat(topology/separation): add lemma connected_component_eq_clopen_Inter (#5335) Prove the lemma that in a t2 and compact space, the connected component of a point equals the intersection of all its clopen neighbourhoods. Will be useful for work on Profinite sets. The proof that a Profinite set is a limit of finite discrete spaces found at: https://stacks.math.columbia.edu/tag/08ZY uses this lemma. Also some proofs that the category Profinite is reflective in CompactHausdorff uses this lemma. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subset_iff_inter_eq_self Modified src/order/bounded_lattice.lean + theorem disjoint.left_le_of_le_sup_left + theorem disjoint.left_le_of_le_sup_right Modified src/topology/separation.lean + theorem connected_component_eq_Inter_clopen Modified src/topology/subset_properties.lean + theorem connected_component_subset_Inter_clopen + theorem continuous_on.preimage_clopen_of_clopen + theorem is_clopen_Inter + theorem is_clopen_bInter + theorem is_clopen_inter_of_disjoint_cover_clopen + theorem is_preconnected_iff_subset_of_disjoint_closed + theorem is_preconnected_iff_subset_of_fully_disjoint_closed + theorem subset_or_disjoint_of_clopen 2020-12-15 21:09:34 66eddd8 chore(algebra/category/Module/monoidal): Speed up the elaboration (#5383) This takes the elaboration time from ~5s to ~2.5s for associator_naturality, from ~90s to 5s for pentagon, and from ~14s to ~8s for `triangle`. ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean 2020-12-15 21:09:32 b702408 feat(ring_theory/roots_of_unity): add squarefreeness mod p of minimal polynomial (#5381) Two easy results about the reduction `mod p` of the minimal polynomial over `ℤ` of a primitive root of unity: it is separable and hence squarefree. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.separable_minimal_polynomial_mod + theorem is_primitive_root.squarefree_minimal_polynomial_mod 2020-12-15 17:57:30 78e48c0 ci(lint-copy-mod-doc.py): add reserved notation and set_option linters, enable small_alpha_vrachy_check linter (#5330) [As requested on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/the.20word.20.22to.22/near/219370843), the reserved notation linter checks for `reserve` or `precedence` at the start of a non-comment, non-string literal line in any file other than `tactic.core`. The new set_option linter disallows `set_option pp`, `set_option profiler` and `set_option trace` at the start of a non-comment, non-string literal line. I also noticed that the `small_alpha_vrachy_check` linter added in #4802 wasn't actually called, so I added it to the main `lint` function. ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/lint-copy-mod-doc.py Modified src/algebra/module/linear_map.lean Modified src/linear_algebra/basic.lean +/- def linear_equiv.congr_right +/- theorem submodule.sup_eq_range Modified src/logic/basic.lean +/- theorem forall_prop_of_false Modified src/logic/relator.lean Modified src/order/lattice.lean Modified src/tactic/core.lean Modified src/tactic/lift.lean Modified src/tactic/lint/frontend.lean Modified src/tactic/localized.lean Modified src/tactic/rcases.lean Added src/tactic/reserved_notation.lean Modified src/tactic/simps.lean Modified src/tactic/where.lean +/- def where.select_for_which 2020-12-15 16:43:44 c208a65 feat(analysis/mean_inequalities): add Minkowski's inequality for the Lebesgue integral of ennreal functions (#5379) ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.lintegral_Lp_add_le + theorem ennreal.lintegral_mul_rpow_le_lintegral_rpow_mul_lintegral_rpow + theorem ennreal.lintegral_rpow_add_le_add_snorm_mul_lintegral_rpow_add 2020-12-15 13:31:21 3a997b1 fix(group_theory/subgroup): Fix doubly-namespaced instance (#5378) Not sure why the linter missed this. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2020-12-15 13:31:19 75130b3 feat(data/set/basic): nonempty set of nonempty subtype (#5373) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.nonempty_of_nonempty_subtype 2020-12-15 13:31:17 d21d17b feat(ring_theory/roots_of_unity): minimal polynomial of primitive roots (#5322) I've added some simple results about the minimal polynomial of a primitive root of unity. The next step will be to prove that any two primitive roots have the same minimal polynomial. ESTIMATED CHANGES Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.is_integral + theorem is_primitive_root.minimal_polynomial_dvd_X_pow_sub_one 2020-12-15 10:30:21 0f4ac1b feat(category_theory/limits): product comparison simp lemmas (#5351) This adds two new simp lemmas to reduce the prod comparison morphism and uses them to golf some proofs ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.prod_comparison_fst + theorem category_theory.limits.prod_comparison_snd 2020-12-15 10:30:19 9ba9a98 chore(category_theory/sites): improve naming (#5350) - Improve naming of some lemmas to be more descriptive - Golf some proofs - Add some convenience deconstructors which are useful in practice ESTIMATED CHANGES Modified src/category_theory/sites/canonical.lean Modified src/category_theory/sites/sheaf.lean + theorem category_theory.presieve.is_separated_of_is_sheaf + theorem category_theory.presieve.is_sheaf_for.functor_inclusion_comp_extend + theorem category_theory.presieve.is_sheaf_for.hom_ext + theorem category_theory.presieve.is_sheaf_for.unique_extend - theorem category_theory.presieve.is_sheaf_for_coarser_topology +/- theorem category_theory.presieve.is_sheaf_for_iff_generate + theorem category_theory.presieve.is_sheaf_for_iff_yoneda_sheaf_condition + theorem category_theory.presieve.is_sheaf_of_le + theorem category_theory.presieve.is_sheaf_of_yoneda - theorem category_theory.presieve.is_sheaf_yoneda - theorem category_theory.presieve.separated_of_sheaf - theorem category_theory.presieve.yoneda_condition_iff_sheaf_condition 2020-12-15 10:30:17 dd72a98 feat(group_theory/perm/basic): Bundle sigma_congr_right and sum_congr into monoid_homs (#5301) This makes the corresponding subgroups available as `monoid_hom.range`. As a result, the old subgroup definitions can be removed. This also adds injectivity and cardinality lemmas. ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + def equiv.perm.sigma_congr_right_hom + theorem equiv.perm.sigma_congr_right_hom_injective +/- theorem equiv.perm.sigma_congr_right_inv +/- theorem equiv.perm.sigma_congr_right_mul +/- theorem equiv.perm.sigma_congr_right_one + def equiv.perm.sum_congr_hom + theorem equiv.perm.sum_congr_hom_injective Modified src/group_theory/perm/subgroup.lean + theorem equiv.perm.sigma_congr_right_hom.card_range - def equiv.perm.sigma_congr_right_subgroup + theorem equiv.perm.sum_congr_hom.card_range - def equiv.perm.sum_congr_subgroup 2020-12-15 10:30:14 8041945 feat(category_theory/monad): monadicity theorems (#5137) This is a proof of the reflexive (or crude) monadicity theorem along with a complete proof of Beck's monadicity theorem. Also renames the prefix for special monad coequalizers to `free_coequalizer` rather than `coequalizer`, to avoid name-clashes when both `monad` and `limits` are imported. ESTIMATED CHANGES Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/coequalizer.lean +/- def category_theory.monad.beck_algebra_cofork - def category_theory.monad.coequalizer.bottom_map - theorem category_theory.monad.coequalizer.condition - def category_theory.monad.coequalizer.top_map - def category_theory.monad.coequalizer.π + def category_theory.monad.free_coequalizer.bottom_map + theorem category_theory.monad.free_coequalizer.condition + def category_theory.monad.free_coequalizer.top_map + def category_theory.monad.free_coequalizer.π Added src/category_theory/monad/monadicity.lean + def category_theory.monad.creates_G_split_coequalizers_of_monadic + def category_theory.monad.monadic_of_creates_G_split_coequalizers + def category_theory.monad.monadic_of_has_preserves_G_split_coequalizers_of_reflects_isomorphisms + def category_theory.monad.monadic_of_has_preserves_reflects_G_split_coequalizers + def category_theory.monad.monadic_of_has_preserves_reflexive_coequalizers_of_reflects_isomorphisms + def category_theory.monad.monadicity_internal.comparison_adjunction + theorem category_theory.monad.monadicity_internal.comparison_adjunction_counit_app + theorem category_theory.monad.monadicity_internal.comparison_adjunction_unit_f + theorem category_theory.monad.monadicity_internal.comparison_adjunction_unit_f_aux + def category_theory.monad.monadicity_internal.comparison_left_adjoint_hom_equiv + def category_theory.monad.monadicity_internal.comparison_left_adjoint_obj + def category_theory.monad.monadicity_internal.counit_coequalizer_of_reflects_coequalizer + def category_theory.monad.monadicity_internal.counit_cofork + def category_theory.monad.monadicity_internal.left_adjoint_comparison + def category_theory.monad.monadicity_internal.unit_cofork + def category_theory.monad.monadicity_internal.unit_colimit_of_preserves_coequalizer 2020-12-15 10:30:11 407d138 chore(category_theory/equivalence): weaken essential surjectivity (#3821) Weaken essential surjectivity to be a Prop, rather than the data of the inverse. ESTIMATED CHANGES Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/category_theory/Fintype.lean Modified src/category_theory/equivalence.lean - def category_theory.equivalence.equivalence_of_fully_faithfully_ess_surj + theorem category_theory.equivalence.ess_surj_of_equivalence - def category_theory.equivalence.ess_surj_of_equivalence - def category_theory.functor.fun_obj_preimage_iso - def category_theory.functor.obj_preimage Modified src/category_theory/monad/adjunction.lean Modified src/topology/category/Compactum.lean + theorem Compactum_to_CompHaus.ess_surj 2020-12-15 07:29:57 a1aa511 feat(simps): interaction between simps and to_additive (#5331) If a definition is both marked `to_additive` and `simps` (in that order), `simps` will from also apply the `to_additive` attribute to its generated lemmas (which creates the additive counterparts of the simp-lemmas). This also generalizes `set_attribute` to use the default parameter if possible. This implements half of #1639. ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/algebra/group/to_additive.lean Modified src/logic/embedding.lean Modified src/tactic/core.lean Modified src/tactic/simps.lean Modified test/simps.lean Modified test/tactics.lean 2020-12-15 03:52:57 a959718 chore(algebra/quadratic_discriminant): golf proofs using limits (#5339) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean - theorem exists_le_mul_self - theorem exists_lt_mul_self Modified src/algebra/quadratic_discriminant.lean Modified src/order/filter/at_top_bot.lean + theorem exists_le_mul_self + theorem exists_lt_mul_self 2020-12-15 01:31:40 ff13cde chore(scripts): update nolints.txt (#5376) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-15 01:31:38 cadaa44 feat(group_theory/subgroup): Add decidable_mem_range (#5371) This means that `fintype (quotient_group.quotient f.range)` can be found by type-class resolution. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2020-12-15 01:31:36 b2ab94f fix(group_theory): Remove a duplicate fintype instance on quotient_group.quotient (#5368) This noncomputable instance was annoying, and can easy be recovered by passing in a classical decidable_pred instance instead. ESTIMATED CHANGES Modified src/group_theory/coset.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/subgroup.lean Modified src/group_theory/sylow.lean 2020-12-15 01:31:34 b364d33 chore(topology/instances/ennreal): remove summability assumption in tendsto_sum_nat_add (#5366) We have currently ```lean lemma tendsto_sum_nat_add (f : ℕ → ℝ≥0) (hf : summable f) : tendsto (λ i, ∑' k, f (k + i)) at_top (𝓝 0) ``` However, the summability assumption is not necessary as otherwise all sums are zero, and the statement still holds. The PR removes the assumption. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean + theorem tendsto_sum_nat_add Modified src/topology/instances/ennreal.lean +/- theorem nnreal.tendsto_sum_nat_add Modified src/topology/instances/nnreal.lean + theorem nnreal.summable_nat_add_iff 2020-12-15 01:31:32 4dbb3e2 chore(data/finsupp/basic): more lemmas about `α →₀ ℕ` (#5362) * define `canonically_ordered_add_monoid` instance; * add a few simp lemmas; * more lemmas about product over `finsupp.antidiagonal n`; * define `finsupp.Iic_finset`, use it for `finite_le_nat`. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + def finsupp.Iic_finset + theorem finsupp.antidiagonal_support_filter_fst_eq + theorem finsupp.antidiagonal_support_filter_snd_eq + theorem finsupp.coe_Iic_finset + theorem finsupp.mem_Iic_finset + theorem finsupp.nat_add_sub_cancel + theorem finsupp.nat_add_sub_cancel_left + theorem finsupp.nat_add_sub_of_le + theorem finsupp.nat_sub_add_cancel + theorem finsupp.nat_zero_sub + theorem finsupp.prod_antidiagonal_support_swap +/- theorem finsupp.single_eq_zero +/- theorem finsupp.swap_mem_antidiagonal_support Modified src/ring_theory/power_series.lean 2020-12-15 01:31:30 8de08f7 chore(order/iterate): generalize lemmas about inequalities and iterations (#5357) If `f : α → α` is a monotone function and `x y : ℕ → α` are two sequences such that `x 0 ≤ y 0`, `x (n + 1) ≤ f (x n)`, and `f (y n) ≤ y (n + 1)`, then `x n ≤ y n`. This lemma (and its versions for `<`) generalize `geom_le` as well as `iterate_le_of_map_le`. ESTIMATED CHANGES Modified src/analysis/hofer.lean Modified src/analysis/specific_limits.lean + theorem geom_le +/- theorem geom_lt + theorem tendsto_at_top_of_geom_le - theorem tendsto_at_top_of_geom_lt Modified src/order/iterate.lean + theorem monotone.seq_le_seq + theorem monotone.seq_lt_seq_of_le_of_lt + theorem monotone.seq_lt_seq_of_lt_of_le + theorem monotone.seq_pos_lt_seq_of_le_of_lt + theorem monotone.seq_pos_lt_seq_of_lt_of_le 2020-12-14 23:07:26 d1904fc refactor(measure_theory/lp_space): move most of the proof of mem_Lp.add to a new lemma in analysis/mean_inequalities (#5370) ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.lintegral_rpow_add_lt_top_of_lintegral_rpow_lt_top Modified src/measure_theory/lp_space.lean 2020-12-14 23:07:24 dc719a9 feat(algebra/lie/basic): define ideal operations for Lie modules (#5337) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + def derived_lie_ideal + def derived_lie_submodule +/- theorem lie_submodule.add_eq_sup + theorem lie_submodule.bot_lie + theorem lie_submodule.coe_submodule_le_coe_submodule + theorem lie_submodule.coe_sup + theorem lie_submodule.coe_to_set_mk + theorem lie_submodule.coe_to_submodule_mk + theorem lie_submodule.eq_bot_iff +/- theorem lie_submodule.le_def + theorem lie_submodule.lie_bot + theorem lie_submodule.lie_comm + theorem lie_submodule.lie_ideal_oper_eq_span + theorem lie_submodule.lie_le_inf + theorem lie_submodule.lie_le_left + theorem lie_submodule.lie_le_right + theorem lie_submodule.lie_mem_lie + theorem lie_submodule.lie_sup + theorem lie_submodule.mem_sup + theorem lie_submodule.mono_lie + theorem lie_submodule.mono_lie_left + theorem lie_submodule.mono_lie_right + theorem lie_submodule.sup_lie + theorem trivial_iff_derived_eq_bot Modified src/algebra/module/submodule.lean + theorem submodule.mk_coe Modified src/linear_algebra/finite_dimensional.lean 2020-12-14 21:52:23 a649c59 feat(field_theory/intermediate_field): lift2_alg_equiv (#5344) Proves that lift2 is isomorphic as an algebra over the base field ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + def intermediate_field.lift2_alg_equiv 2020-12-14 19:54:21 4415dc0 feat(algebra/algebra/basic): arrow_congr for alg_equiv (#5346) This is a copy of equiv.arrow_congr ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.arrow_congr + theorem alg_equiv.arrow_congr_comp + theorem alg_equiv.arrow_congr_refl + theorem alg_equiv.arrow_congr_symm + theorem alg_equiv.arrow_congr_trans 2020-12-14 16:39:30 07b5618 chore(linear_algebra/{multilinear,alternating}): Generalize smul and neg instance (#5364) This brings the generality in line with that of `linear_map`. Notably: * `has_neg` now exists when only the codomain has negation * `has_scalar` now exists for the weaker condition of `smul_comm_class` rather than `has_scalar_tower` ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.map_neg +/- theorem alternating_map.neg_apply +/- theorem alternating_map.to_multilinear_map_alternization +/- def multilinear_map.alternatization +/- theorem multilinear_map.alternatization_apply Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.map_neg 2020-12-14 16:39:28 b1c56b1 feat(field_theory.minimal_polynomial): add results for GCD domains (#5336) I have added `gcd_domain_dvd`: for GCD domains, the minimal polynomial divides any primitive polynomial that has the integral element as root. For `gcd_domain_eq_field_fractions` and `gcd_domain_dvd` I have also added explicit versions for `ℤ`. Unfortunately, it seems impossible (to me at least) to apply the general lemmas and I had to redo the proofs, see [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Minimal.20polynomial.20over.20.E2.84.9A.20vs.20over.20.E2.84.A4) for more details. (The basic reason seems to be that it's hard to convince lean that `is_scalar_tower ℤ ℚ α` holds using the localization map). ESTIMATED CHANGES Modified src/field_theory/minimal_polynomial.lean + theorem minimal_polynomial.gcd_domain_dvd + theorem minimal_polynomial.integer_dvd + theorem minimal_polynomial.over_int_eq_over_rat 2020-12-14 16:39:26 f443792 feat(topology/subset_properties): add instances for totally_disconnected_spaces (#5334) Add the instances subtype.totally_disconnected_space and pi.totally_disconnected_space. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton_of_image Modified src/topology/subset_properties.lean 2020-12-14 16:39:24 d36af18 feat(tactic/induction): add induction'/cases'/eliminate_hyp/eliminate_expr tactics (#5027) This PR adds interactive tactics `induction'` and `cases'` as well as non-interactive variants `eliminate_hyp` and `eliminate_expr`. The tactics are similar to standard `induction` and `cases`, but they feature several improvements: - `induction'` performs 'dependent induction', which means it takes the indices of indexed inductive types fully into account. This is convenient, for example, for programming language or logic formalisations, which tend to rely heavily on indexed types. - `induction'` by default generalises everything that can be generalised. This is to support beginners, who often struggle to identify that a proof requires a generalised induction hypothesis. In cases where this feature hinders more than it helps, it can easily be turned off. - `induction'` and `cases'` generate much more human-friendly names than their standard counterparts. This is, again, mostly to support beginners. Experts should usually supply explicit names to make proof scripts more robust. - `cases'` works for some rare goals which `cases` does not support, but should otherwise be mostly a drop-in replacement (except for the generated names). ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.all_some + def list.fill_nones + def list.take_list + def list.to_rbmap Modified src/tactic/binder_matching.lean Modified src/tactic/core.lean Added src/tactic/induction.lean + inductive tactic.eliminate.generalization_mode Added test/induction.lean + inductive Even + inductive Fin + def List.append + inductive List + inductive Two + inductive Vec.eq + inductive Vec + def accufact + theorem accufact_1_eq_fact + inductive expressions.exp + def expressions.subst + theorem expressions.subst_Var + theorem fraction.ext + structure fraction + inductive le + inductive less_than.lt + theorem less_than.lt_lte + inductive less_than.lte + inductive lt + inductive nat_or_positive + theorem not_even_2_mul_add_1 + theorem not_sorted_17_13 + inductive palindrome.palindrome + theorem palindrome.rev_palindrome + inductive rose.nonempty + theorem rose.nonempty_node_elim + inductive rose + inductive rose₁ + inductive semantics.big_step + theorem semantics.big_step_assign_iff + theorem semantics.big_step_deterministic + theorem semantics.big_step_ite_iff + theorem semantics.big_step_of_small_step_of_big_step + theorem semantics.big_step_of_star_small_step + theorem semantics.big_step_seq_iff + theorem semantics.big_step_skip_iff + theorem semantics.big_step_while_false_iff + theorem semantics.big_step_while_iff + theorem semantics.big_step_while_true_iff + inductive semantics.curried_big_step + theorem semantics.not_big_step_while_true + theorem semantics.not_curried_big_step_while_true + inductive semantics.small_step + theorem semantics.small_step_deterministic + theorem semantics.small_step_final + theorem semantics.small_step_if_equal_states + theorem semantics.small_step_ite_iff + theorem semantics.small_step_seq_iff + theorem semantics.small_step_skip + theorem semantics.star.lift + theorem semantics.star.single + theorem semantics.star.trans + theorem semantics.star.trans_induction_on + theorem semantics.star_small_step_of_big_step + theorem semantics.star_small_step_seq + def semantics.state.update + def semantics.state + inductive semantics.stmt + inductive sorted + theorem star.head + theorem star.head_induction_on + inductive star + inductive transitive_closure.tc + theorem transitive_closure.tc_pets₁ + theorem transitive_closure.tc_pets₂ + theorem transitive_closure.tc_trans' + theorem transitive_closure.tc_trans + inductive ℕ' + def ℕ₂.plus + inductive ℕ₂ 2020-12-14 13:16:21 a65de99 feat(data/equiv): Add `congr_arg`, `congr_fun`, and `ext_iff` lemmas to equivs (#5367) These members already exist on the corresponding homs ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.ext_iff Modified src/algebra/module/linear_map.lean + theorem linear_equiv.ext_iff Modified src/data/equiv/basic.lean Modified src/data/equiv/mul_add.lean + theorem mul_equiv.ext_iff Modified src/data/equiv/ring.lean + theorem ring_equiv.ext_iff 2020-12-14 13:16:18 dad88d8 feat(field_theory/splitting_field): add splits_X theorem (#5343) This is a handy result and isn't definitionally a special case of splits_X_sub_C ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem polynomial.splits_X 2020-12-14 13:16:15 cf7377a chore(field_theory/adjoin): move dim/findim lemmas (#5342) adjoin.lean has some dim/findim lemmas, some of which could be moved to intermediate_field.lean ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.dim_eq_one_iff - theorem intermediate_field.dim_intermediate_field_eq_dim_subalgebra + theorem intermediate_field.findim_eq_one_iff - theorem intermediate_field.findim_intermediate_field_eq_findim_subalgebra - theorem intermediate_field.to_subalgebra_eq_iff Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.dim_eq_dim_subalgebra +/- theorem intermediate_field.eq_of_le_of_findim_eq' +/- theorem intermediate_field.eq_of_le_of_findim_eq +/- theorem intermediate_field.eq_of_le_of_findim_le' +/- theorem intermediate_field.eq_of_le_of_findim_le + theorem intermediate_field.findim_eq_findim_subalgebra + theorem intermediate_field.to_subalgebra_eq_iff 2020-12-14 13:16:14 0d7ddf1 chore(order/filter/at_top_bot): add/rename lemmas about limits like `±∞*c` (#5333) ### New lemmas * `filter.tendsto.nsmul_at_top` and `filter.tendsto.nsmul_at_bot`; * `filter.tendsto_mul_self_at_top`; * `filter.tendsto.at_top_mul_at_bot`, `filter.tendsto.at_bot_mul_at_top`, `filter.tendsto.at_bot_mul_at_bot`; * `filter.tendsto.at_top_of_const_mul`, `filter.tendsto.at_top_of_mul_const`; * `filter.tendsto.at_top_div_const`, `filter.tendsto.neg_const_mul_at_top`, `filter.tendsto.at_top_mul_neg_const`, `filter.tendsto.const_mul_at_bot`, `filter.tendsto.at_bot_mul_const`, `filer.tendsto.at_bot_div_const`, `filter.tendsto.neg_const_mul_at_bot`, `filter.tendsto.at_bot_mul_neg_const`. ### Renamed lemmas * `tendsto_pow_at_top` → `filter.tendsto_pow_at_top`; * `tendsto_at_top_mul_left` → `filter.tendsto.const_mul_at_top'`; * `tendsto_at_top_mul_right` → `filter.tendsto.at_top_mul_const'`; * `tendsto_at_top_mul_left'` → `filter.tendsto.const_mul_at_top`; * `tendsto_at_top_mul_right'` → `filer.tendsto.at_top_mul_const`; * `tendsto_mul_at_top` → `filter.tendsto.at_top_mul`; * `tendsto_mul_at_bot` → `filter.tendsto.at_top_mul_neg`; * `tendsto_at_top_mul_at_top` → `filter.tendsto.at_top_mul_at_top`. ESTIMATED CHANGES Modified src/analysis/asymptotic_equivalent.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/order/filter/archimedean.lean + theorem filter.tendsto.at_top_mul_const' + theorem filter.tendsto.const_mul_at_top' Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto.at_bot_div_const + theorem filter.tendsto.at_bot_mul_at_bot + theorem filter.tendsto.at_bot_mul_at_top + theorem filter.tendsto.at_bot_mul_const + theorem filter.tendsto.at_bot_mul_neg_const + theorem filter.tendsto.at_top_div_const + theorem filter.tendsto.at_top_mul_at_bot + theorem filter.tendsto.at_top_mul_at_top + theorem filter.tendsto.at_top_mul_const + theorem filter.tendsto.at_top_mul_neg_const + theorem filter.tendsto.at_top_of_const_mul + theorem filter.tendsto.at_top_of_mul_const + theorem filter.tendsto.const_mul_at_bot + theorem filter.tendsto.const_mul_at_top + theorem filter.tendsto.neg_const_mul_at_bot + theorem filter.tendsto.neg_const_mul_at_top + theorem filter.tendsto.nsmul_at_bot + theorem filter.tendsto.nsmul_at_top - theorem filter.tendsto_at_top_mul_at_top + theorem filter.tendsto_mul_self_at_top +/- theorem filter.tendsto_neg_at_bot_at_top +/- theorem filter.tendsto_neg_at_top_at_bot + theorem filter.tendsto_pow_at_top Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.at_top_mul + theorem filter.tendsto.at_top_mul_neg - theorem tendsto_at_top_div - theorem tendsto_at_top_mul_left' - theorem tendsto_at_top_mul_left - theorem tendsto_at_top_mul_right' - theorem tendsto_at_top_mul_right - theorem tendsto_mul_at_bot - theorem tendsto_mul_at_top - theorem tendsto_pow_at_top Modified src/topology/algebra/polynomial.lean 2020-12-14 13:16:12 1d37ff1 feat(analysis/mean_inequalities): add weighted generalized mean inequality for ennreal (#5316) ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.rpow_arith_mean_le_arith_mean2_rpow + theorem ennreal.rpow_arith_mean_le_arith_mean_rpow Modified src/data/real/ennreal.lean + theorem ennreal.le_of_top_imp_top_of_to_nnreal_le + theorem ennreal.to_nnreal_mul + theorem ennreal.to_nnreal_pow + theorem ennreal.to_nnreal_prod 2020-12-14 13:16:10 cecab59 feat(group_theory/congruence): Add inv and neg (#5304) ESTIMATED CHANGES Modified src/group_theory/congruence.lean 2020-12-14 13:16:08 6dc5000 feat(computability/language): define formal languages (#5291) Lifted from #5036 in order to include in #5038 as well. ESTIMATED CHANGES Added src/computability/language.lean + theorem language.add_def + theorem language.add_self + theorem language.mul_def + theorem language.one_def + def language.star + theorem language.star_def + theorem language.star_def_nonempty + theorem language.zero_def + def language 2020-12-14 13:16:05 67b5ff6 feat(algebra/direct_sum): constructor for morphisms into direct sums (#5204) ESTIMATED CHANGES Modified src/algebra/direct_sum.lean + def direct_sum.from_add_monoid + theorem direct_sum.from_add_monoid_of + theorem direct_sum.from_add_monoid_of_apply Modified src/algebra/group/hom.lean 2020-12-14 11:45:59 c722b96 feat (topology/instances/ennreal): summability from finite sum control (#5363) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem nnreal.summable_iff_not_tendsto_nat_at_top + theorem nnreal.summable_of_sum_range_le + theorem nnreal.tsum_le_of_sum_range_le + theorem summable_iff_not_tendsto_nat_at_top_of_nonneg + theorem summable_of_sum_range_le + theorem tsum_le_of_sum_range_le 2020-12-14 10:02:51 91e5b8a chore(analysis/normed_space/ordered): minor golfing (#5356) ESTIMATED CHANGES Modified src/analysis/normed_space/ordered.lean 2020-12-14 10:02:48 2245cfb feat(measurable_space): infix notation for measurable_equiv (#5329) We use `≃ᵐ` as notation. Note: `≃ₘ` is already used for diffeomorphisms. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean +/- def ennreal.ennreal_equiv_sum +/- def homemorph.to_measurable_equiv +/- def measurable_equiv.ennreal_equiv_nnreal Modified src/measure_theory/measurable_space.lean +/- theorem measurable_equiv.coe_eq +/- def measurable_equiv.prod_assoc +/- def measurable_equiv.prod_comm +/- def measurable_equiv.prod_congr +/- def measurable_equiv.refl +/- def measurable_equiv.set.prod +/- def measurable_equiv.set.range_inl +/- def measurable_equiv.set.range_inr +/- def measurable_equiv.set.singleton +/- def measurable_equiv.set.univ +/- def measurable_equiv.sum_congr +/- def measurable_equiv.symm +/- def measurable_equiv.trans 2020-12-14 08:35:30 6f69741 chore(analysis/calculus/*): rename `*.of_local_homeomorph` to `local_homeomorph.*_symm` (#5358) Rename some lemmas, and make `(f : local_homeomorph _ _)` an explicit argument: * `has_fderiv_at.of_local_homeomorph` → `local_homeomorph.has_fderiv_at_symm`; * `times_cont_diff_at.of_local_homeomorph` → `local_homeomorph.times_cont_diff_at_symm`. If we want to apply one of these lemmas to prove smoothness of, e.g., `arctan`, `log`, or `arcsin`, then the goal has no `local_homeomorph.symm`, and we need to explicitly supply a `local_homeomorph` with an appropriate `inv_fun`. Also add some lemmas that help to prove that the inverse function is **not** differentiable at a point. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.congr_of_eventually_eq_of_mem + theorem local_homeomorph.has_deriv_at_symm + theorem not_differentiable_at_of_local_left_inverse_has_deriv_at_zero + theorem not_differentiable_within_at_of_local_left_inverse_has_deriv_within_at_zero Modified src/analysis/calculus/fderiv.lean - theorem has_fderiv_at.of_local_homeomorph + theorem local_homeomorph.has_fderiv_at_symm + theorem local_homeomorph.has_strict_fderiv_at_symm Modified src/analysis/calculus/inverse.lean +/- theorem has_strict_fderiv_at.local_inverse_apply_image + theorem has_strict_fderiv_at.local_inverse_def Modified src/analysis/calculus/times_cont_diff.lean + theorem local_homeomorph.times_cont_diff_at_symm - theorem times_cont_diff_at.of_local_homeomorph 2020-12-14 02:41:32 714bc15 feat(category_theory/adjunction): adjoint lifting theorems (#5118) Proves the [adjoint lifting theorem](https://ncatlab.org/nlab/show/adjoint+lifting+theorem) and the [adjoint triangle theorem](https://ncatlab.org/nlab/show/adjoint+triangle+theorem). The intent here is for all but the last four statements in the file to be implementation. ESTIMATED CHANGES Added src/category_theory/adjunction/lifting.lean + def category_theory.lift_adjoint.construct_left_adjoint_equiv + def category_theory.lift_adjoint.counit_coequalises + def category_theory.lift_adjoint.other_map 2020-12-14 01:26:51 b7a9615 chore(scripts): update nolints.txt (#5360) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-13 09:58:12 88fb7ca chore(analysis/calculus): move the definition of `formal_multilinear_series` to a new file (#5348) ESTIMATED CHANGES Added src/analysis/calculus/formal_multilinear_series.lean + theorem formal_multilinear_series.congr + def formal_multilinear_series.shift + def formal_multilinear_series.unshift + def formal_multilinear_series Modified src/analysis/calculus/times_cont_diff.lean - theorem formal_multilinear_series.congr - def formal_multilinear_series.restrict_scalars - def formal_multilinear_series.shift - def formal_multilinear_series.unshift - def formal_multilinear_series 2020-12-13 01:29:56 36eec1a chore(scripts): update nolints.txt (#5341) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-12 23:59:14 eb9164b feat(category_theory/sites): naming and attributes (#5340) Adds simps projections for sieve arrows and makes the names consistent (some used `mem_` and others used `_apply`, now they only use the latter). ESTIMATED CHANGES Modified src/category_theory/sites/canonical.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/sieves.lean + theorem category_theory.sieve.Inf_apply + theorem category_theory.sieve.Sup_apply + theorem category_theory.sieve.inter_apply - theorem category_theory.sieve.mem_Inf - theorem category_theory.sieve.mem_Sup - theorem category_theory.sieve.mem_generate - theorem category_theory.sieve.mem_inter - theorem category_theory.sieve.mem_pullback - theorem category_theory.sieve.mem_pushforward_of_comp - theorem category_theory.sieve.mem_top - theorem category_theory.sieve.mem_union + theorem category_theory.sieve.pushforward_apply_comp - theorem category_theory.sieve.sieve_of_subfunctor_apply + theorem category_theory.sieve.top_apply + theorem category_theory.sieve.union_apply 2020-12-12 22:41:29 68818b3 feat(field_theory/galois): Is_galois iff is_galois top (#5285) Proves that E/F is Galois iff top/F is Galois. ESTIMATED CHANGES Modified src/field_theory/galois.lean + theorem alg_equiv.transfer_galois + theorem is_galois.of_alg_equiv + theorem is_galois_iff_is_galois_top 2020-12-12 17:17:36 5ced4dd feat(ring_theory/finiteness): add iff_quotient_mv_polynomial (#5321) Add characterizations of finite type algebra as quotient of polynomials rings. There are three version of the same lemma, using a `finset`, a `fintype` and `fin n`. ESTIMATED CHANGES Modified src/data/mv_polynomial/equiv.lean + def mv_polynomial.alg_equiv_of_equiv Modified src/ring_theory/finiteness.lean + theorem algebra.finite_type.iff_quotient_mv_polynomial'' + theorem algebra.finite_type.iff_quotient_mv_polynomial' + theorem algebra.finite_type.iff_quotient_mv_polynomial 2020-12-12 09:03:27 3afdf41 chore(*): generalize some lemmas from `linear_ordered_semiring` to `ordered_semiring` (#5327) API changes: * Many lemmas now have weaker typeclass assumptions. Sometimes this means that `@myname _ _ _` needs one more `_`. * Drop `eq_one_of_mul_self_left_cancel` etc in favor of the new `mul_eq_left_iff` etc. * A few new lemmas that state `monotone` or `strict_mono_incr_on`. ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified src/algebra/archimedean.lean +/- theorem add_one_pow_unbounded_of_pos +/- theorem exists_nat_ge +/- theorem exists_nat_gt Modified src/algebra/char_zero.lean +/- theorem two_ne_zero' Modified src/algebra/group/basic.lean - theorem eq_one_of_left_cancel_mul_self - theorem eq_one_of_mul_self_left_cancel - theorem eq_one_of_mul_self_right_cancel - theorem eq_one_of_right_cancel_mul_self + theorem left_eq_mul_iff + theorem mul_eq_left_iff + theorem mul_eq_right_iff + theorem right_eq_mul_iff Modified src/algebra/group_power/basic.lean + theorem pow_mono + theorem strict_mono_incr_on_pow + theorem strict_mono_pow Modified src/algebra/group_power/lemmas.lean Modified src/data/int/cast.lean +/- theorem int.cast_abs +/- theorem int.cast_le +/- theorem int.cast_lt +/- theorem int.cast_lt_zero +/- theorem int.cast_max +/- theorem int.cast_min + theorem int.cast_mono +/- theorem int.cast_nonneg +/- theorem int.cast_nonpos +/- theorem int.cast_pos + theorem int.cast_strict_mono Modified src/data/nat/cast.lean +/- theorem nat.abs_cast +/- theorem nat.cast_add_one_pos +/- theorem nat.cast_le +/- theorem nat.cast_le_one +/- theorem nat.cast_lt +/- theorem nat.cast_lt_one +/- theorem nat.cast_nonneg +/- theorem nat.cast_pos +/- theorem nat.cast_two + theorem nat.mono_cast +/- theorem nat.one_le_cast +/- theorem nat.one_lt_cast +/- theorem nat.strict_mono_cast Modified src/data/zsqrtd/gaussian_int.lean Modified src/order/filter/archimedean.lean +/- theorem tendsto_coe_int_at_top_at_top +/- theorem tendsto_coe_int_at_top_iff +/- theorem tendsto_coe_nat_at_top_at_top +/- theorem tendsto_coe_nat_at_top_iff Modified src/ring_theory/derivation.lean 2020-12-12 07:17:02 dad5aab refactor(ring_theory/polynomial/homogeneous): redefine `mv_polynomial.homogeneous_component` (#5294) * redefine `homogeneous_component` using `finsupp.restrict_dom`, “upgrade” it to a `linear_map`; * add `coeff_homogeneous_component` and use it to golf some proofs. ESTIMATED CHANGES Modified src/ring_theory/polynomial/homogeneous.lean + theorem mv_polynomial.coeff_homogeneous_component 2020-12-12 07:17:00 9cc8835 feat(group_theory/perm/subgroup): Add some simple subgroups of permutations (#5279) ESTIMATED CHANGES Added src/group_theory/perm/subgroup.lean + def equiv.perm.sigma_congr_right_subgroup + def equiv.perm.sum_congr_subgroup 2020-12-12 07:16:58 84f9938 feat(category_theory/sites): sheaves on types (#5259) ESTIMATED CHANGES Modified src/category_theory/sites/sheaf.lean + theorem category_theory.presieve.is_sheaf.is_sheaf_for Added src/category_theory/sites/types.lean + def category_theory.discrete_presieve + def category_theory.discrete_sieve + theorem category_theory.discrete_sieve_mem + def category_theory.eval + theorem category_theory.eval_app + theorem category_theory.eval_map + theorem category_theory.eval_types_glue + theorem category_theory.generate_discrete_presieve_mem + theorem category_theory.is_sheaf_yoneda' + theorem category_theory.subcanonical_types_grothendieck_topology + theorem category_theory.types_glue_eval + def category_theory.types_grothendieck_topology + theorem category_theory.types_grothendieck_topology_eq_canonical + def category_theory.yoneda' + theorem category_theory.yoneda'_comp 2020-12-12 07:16:56 0344aee feat(ring_theory/*): various lemmas about quotients, localizations, and polynomials (#5249) ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.quotient_map_comp_mk + theorem ideal.quotient_map_surjective Modified src/ring_theory/integral_closure.lean + theorem is_integral_quotient_map_iff + theorem ring_hom.is_integral_elem_of_is_integral_elem_comp + theorem ring_hom.is_integral_tower_top_of_is_integral Modified src/ring_theory/jacobson.lean +/- theorem ideal.radical_eq_jacobson Modified src/ring_theory/localization.lean + theorem localization_map_bijective_of_field + theorem map_injective_of_injective Modified src/ring_theory/polynomial/basic.lean + theorem ideal.eq_zero_of_constant_mem_of_maximal + theorem ideal.polynomial_not_is_field 2020-12-12 07:16:53 d032380 feat(field_theory/normal): normal_of_alg_equiv (#5225) Proves that normal is preserved by an alg_equiv ESTIMATED CHANGES Modified src/field_theory/normal.lean + theorem alg_equiv.transfer_normal + theorem normal.of_alg_equiv 2020-12-12 04:38:13 f51fe7b chore(data/fin): Improve docstrings, rename `coe_sub_nat`, add `nat_add_zero` (#5290) These are cherry-picked from the tuple PR, #4406. `coe_sub_nat` was previously named `sub_nat_coe`, but this didn't match `coe_nat_add` and `coe_add_nat`. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.coe_sub_nat + theorem fin.nat_add_zero +/- def fin.sub_nat 2020-12-12 01:48:20 2609428 chore(scripts): update nolints.txt (#5328) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-12 01:48:18 b02c529 feat(category_theory/limits): strengthen simp lemma (#5326) Makes a simp lemma slightly stronger ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.limit.cone_π 2020-12-12 01:48:17 e7ca801 feat(data/list/chain): induction up the chain (#5325) Slightly strengthen statements that were there before ESTIMATED CHANGES Modified src/category_theory/is_connected.lean Modified src/data/list/chain.lean + theorem list.chain.induction_head 2020-12-12 01:48:13 f0c8a15 chore(algebra/ordered_ring): golf some proofs using `strict_mono_incr_on` (#5323) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem strict_mono_incr_on_mul_self 2020-12-12 01:48:10 01746f8 feat(outer_measure): define bounded_by (#5314) `bounded_by` wrapper around `of_function` that drops the condition that `m ∅ = 0`. Refactor `Inf_gen` to use `bounded_by`. I am also planning to use `bounded_by` for finitary products of measures. Also add some complete lattice lemmas ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.Inf_eq_bounded_by_Inf_gen - theorem measure_theory.outer_measure.Inf_eq_of_function_Inf_gen + theorem measure_theory.outer_measure.Inf_gen_def - theorem measure_theory.outer_measure.Inf_gen_empty - theorem measure_theory.outer_measure.Inf_gen_nonempty1 - theorem measure_theory.outer_measure.Inf_gen_nonempty2 + def measure_theory.outer_measure.bounded_by + theorem measure_theory.outer_measure.bounded_by_apply + theorem measure_theory.outer_measure.bounded_by_caratheodory + theorem measure_theory.outer_measure.bounded_by_eq + theorem measure_theory.outer_measure.bounded_by_eq_of_function + theorem measure_theory.outer_measure.bounded_by_le + theorem measure_theory.outer_measure.le_bounded_by' + theorem measure_theory.outer_measure.le_bounded_by + theorem measure_theory.outer_measure.supr_Inf_gen_nonempty Modified src/order/complete_lattice.lean + theorem binfi_le_of_le + theorem le_bsupr_of_le + theorem le_infi_const + theorem supr_const_le 2020-12-12 01:48:08 3782acf feat(topology/algebra/*): Criterion to ensure topological monoids and groups (#5284) This is old stuff from the perfectoid project that was never PRed and is useful for the liquid tensor experiment. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.prod_map_map_eq' Modified src/topology/algebra/group.lean + theorem topological_group.of_comm_of_nhds_one + theorem topological_group.of_nhds_aux + theorem topological_group.of_nhds_one' + theorem topological_group.of_nhds_one Modified src/topology/algebra/monoid.lean + theorem has_continuous_mul.of_nhds_one + theorem has_continuous_mul_of_comm_of_nhds_one 2020-12-11 22:54:52 846ee3f feat(data/equiv): symm_symm_apply (#5324) A little dsimp lemma that's often helpful ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.symm_symm_apply 2020-12-11 20:26:08 63e1ad4 chore(group_theory/perm/basic): Add missing lemmas (#5320) These lemmas existed for left multiplication but not right multiplication ESTIMATED CHANGES Modified src/group_theory/perm/basic.lean + theorem equiv.mul_swap_eq_iff + theorem equiv.mul_swap_involutive + theorem equiv.mul_swap_mul_self Modified src/linear_algebra/determinant.lean 2020-12-11 20:26:06 90aa66b chore(algebra/big_operators/basic): Rename hypotheses for clarity (#5318) This makes them somewhat more consistent with `prod_bij` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean 2020-12-11 16:44:08 3a88a9e chore(data/subtype): Add coind_bijective and map_involutive (#5319) ESTIMATED CHANGES Modified src/data/subtype.lean + theorem subtype.coind_bijective + theorem subtype.coind_surjective + theorem subtype.map_involutive 2020-12-11 16:44:06 029b258 chore(linear_algebra/tensor_product): Actually relax the requirements for add_comm_group (#5315) A previous commit (#5305) changed the definition to not need these, but forgot to actually change these. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean 2020-12-11 16:44:04 db712d5 chore(*): simp lemmas for `tendsto`, `Ixx`, and `coe` (#5296) * For `(f : α → β) (l : filter β)`, simplify `tendsto (λ a : Ixx*, f x) at_top l` to `tendsto f _ l`, and similarly for `at_bot`. * For `(f : α → Ixx*) (l : filter α)`, simplify `tendsto f l at_top` to `tendsto (λ x, (f x : β)) l _`, and similarly for `at_bot`. Here `Ixx*` is one of the intervals `Ici a`, `Ioi a`, `Ioo a b` etc, and `_` is a filter that depends on the choice of `Ixx` and `at_top`/`at_bot`. * Drop some “nontriviality” assumptions like `no_top_order` for lemmas about `Ioi a`. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean +/- theorem real.comap_exp_nhds_within_Ioi_zero +/- def real.exp_order_iso +/- theorem real.log_surjective +/- theorem real.log_zero +/- theorem real.map_exp_at_bot +/- theorem real.range_exp +/- theorem real.range_log +/- theorem real.surj_on_log' +/- theorem real.surj_on_log +/- theorem real.tendsto_exp_at_bot_nhds_within Modified src/order/filter/at_top_bot.lean +/- theorem filter.at_bot_Iio_eq +/- theorem filter.at_top_Ioi_eq + theorem filter.tendsto_Ici_at_top + theorem filter.tendsto_Iic_at_bot + theorem filter.tendsto_Iio_at_bot + theorem filter.tendsto_Ioi_at_top + theorem filter.tendsto_comp_coe_Ici_at_top + theorem filter.tendsto_comp_coe_Iic_at_bot + theorem filter.tendsto_comp_coe_Iio_at_bot + theorem filter.tendsto_comp_coe_Ioi_at_top Modified src/order/filter/basic.lean + theorem filter.nontrivial_iff_nonempty Modified src/order/rel_iso.lean + theorem order_iso.range_eq + theorem rel_iso.range_eq Modified src/topology/algebra/ordered.lean +/- theorem comap_coe_Iio_nhds_within_Iio +/- theorem comap_coe_Ioi_nhds_within_Ioi +/- theorem comap_coe_Ioo_nhds_within_Iio +/- theorem comap_coe_Ioo_nhds_within_Ioi +/- theorem comap_coe_nhds_within_Iio_of_Ioo_subset +/- theorem comap_coe_nhds_within_Ioi_of_Ioo_subset +/- theorem map_coe_Iio_at_top +/- theorem map_coe_Ioi_at_bot +/- theorem map_coe_at_bot_of_Ioo_subset +/- theorem map_coe_at_top_of_Ioo_subset + theorem tendsto_Iio_at_top + theorem tendsto_Ioi_at_bot + theorem tendsto_Ioo_at_bot + theorem tendsto_Ioo_at_top + theorem tendsto_comp_coe_Iio_at_top + theorem tendsto_comp_coe_Ioi_at_bot + theorem tendsto_comp_coe_Ioo_at_bot + theorem tendsto_comp_coe_Ioo_at_top Modified src/topology/instances/nnreal.lean 2020-12-11 13:45:51 a372dfc chore(*): don't assume `sub_eq_add_neg` and `div_eq_mul_inv` are defeq (#5302) This PR prepares for a follow-up PR (#5303) that adds `div` and `sub` fields to (`add_`)`group`(`_with_zero`). That follow-up PR is intended to fix the following kind of diamonds: Let `foo X` be a type with a `∀ X, has_div (foo X)` instance but no `∀ X, has_inv (foo X)`, e.g. when `foo X` is a `euclidean_domain`. Suppose we also have an instance `∀ X [cromulent X], group_with_zero (foo X)`. Then the `(/)` coming from `group_with_zero_has_div` cannot be defeq to the `(/)` coming from `foo.has_div`. As a consequence of making the `has_div` instances defeq, we can no longer assume that `(div_eq_mul_inv a b : a / b = a * b⁻¹) = rfl` for all groups. This preparation PR should have changed all places in mathlib that assumed defeqness, to rewrite explicitly instead. Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60div.60.20as.20a.20field.20in.20.60group(_with_zero).60 ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/intervals.lean Modified src/algebra/field.lean + theorem mul_one_div Modified src/algebra/floor.lean Modified src/algebra/group/basic.lean + theorem div_left_injective + theorem div_right_injective + theorem group.inv_eq_one_div + theorem group.mul_one_div +/- theorem neg_add' - theorem sub_left_injective - theorem sub_right_injective Modified src/algebra/group/defs.lean + theorem group.div_eq_mul_inv +/- theorem sub_eq_add_neg Modified src/algebra/group/hom.lean +/- theorem add_monoid_hom.map_sub Modified src/algebra/group/pi.lean +/- theorem pi.sub_apply Modified src/algebra/group/to_additive.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_with_zero/basic.lean +/- theorem div_eq_inv_mul - theorem div_eq_mul_inv +/- theorem div_one +/- theorem div_self +/- theorem one_div +/- theorem zero_div Modified src/algebra/group_with_zero/defs.lean + theorem div_eq_mul_inv Modified src/algebra/group_with_zero/power.lean Modified src/algebra/module/basic.lean Modified src/algebra/ordered_group.lean +/- theorem sub_le_sub_iff Modified src/algebra/ring/basic.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/convex/cone.lean Modified src/analysis/hofer.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/normed_space/multilinear.lean + def continuous_multilinear_curry_right_equiv' + theorem continuous_multilinear_curry_right_equiv_apply' + theorem continuous_multilinear_curry_right_equiv_symm_apply' Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean +/- theorem real.angle.coe_sub Modified src/data/complex/exponential.lean Modified src/data/fintype/card.lean Modified src/data/int/cast.lean Modified src/data/list/basic.lean Modified src/data/matrix/basic.lean +/- theorem matrix.add_apply +/- theorem matrix.neg_apply + theorem matrix.sub_apply +/- theorem matrix.zero_apply Modified src/data/mv_polynomial/comm_ring.lean Modified src/data/num/lemmas.lean Modified src/data/padics/hensel.lean Modified src/data/polynomial/degree/definitions.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/monic.lean + theorem polynomial.monic_sub_of_left + theorem polynomial.monic_sub_of_right Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean Modified src/data/rat/order.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/hyperreal.lean Modified src/data/real/irrational.lean Modified src/deprecated/group.lean Modified src/deprecated/subgroup.lean +/- theorem is_add_subgroup.sub_mem Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/separable.lean Modified src/linear_algebra/affine_space/affine_subspace.lean Modified src/linear_algebra/eigenspace.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/l1_space.lean Modified src/order/filter/basic.lean Modified src/order/filter/extr.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/power_basis.lean Modified src/tactic/abel.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_num.lean Modified src/tactic/ring.lean +/- theorem tactic.ring.add_neg_eq_sub Modified src/tactic/ring_exp.lean +/- theorem tactic.ring_exp.div_pf +/- theorem tactic.ring_exp.sub_pf Modified src/topology/algebra/group.lean + theorem is_closed_map_div_right + theorem is_open_map_div_right Modified src/topology/algebra/group_with_zero.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/pi_Lp.lean 2020-12-11 12:35:50 d2ae4e2 feat(ring_theory/witt_vector): truncated Witt vectors, definition and ring structure (#5162) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/truncated.lean + def truncated_witt_vector.coeff + theorem truncated_witt_vector.coeff_mk + theorem truncated_witt_vector.coeff_out + theorem truncated_witt_vector.coeff_zero + theorem truncated_witt_vector.ext + theorem truncated_witt_vector.ext_iff + def truncated_witt_vector.mk + theorem truncated_witt_vector.mk_coeff + def truncated_witt_vector.out + theorem truncated_witt_vector.out_injective + theorem truncated_witt_vector.truncate_fun_out + def truncated_witt_vector + theorem witt_vector.coeff_truncate_fun + theorem witt_vector.out_truncate_fun + def witt_vector.truncate_fun + theorem witt_vector.truncate_fun_add + theorem witt_vector.truncate_fun_mul + theorem witt_vector.truncate_fun_neg + theorem witt_vector.truncate_fun_one + theorem witt_vector.truncate_fun_surjective + theorem witt_vector.truncate_fun_zero 2020-12-11 10:57:57 6288eed feat(linear_algebra/alternating): Add alternatization of multilinear_map (#5187) This adds: * `def multilinear_map.alternatize` * `lemma alternating_map.to_multilinear_map_alternize` ESTIMATED CHANGES Modified src/linear_algebra/alternating.lean + theorem alternating_map.to_multilinear_map_alternization + def multilinear_map.alternatization + theorem multilinear_map.alternatization_apply 2020-12-11 01:46:47 dbdba55 chore(scripts): update nolints.txt (#5313) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-11 01:46:45 8817c3e chore(linear_algebra/tensor_product): Relax the ring requirement to semiring for the group instance (#5305) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean +/- theorem linear_map.map_neg₂ + def tensor_product.neg.aux + theorem tensor_product.neg.aux_of +/- theorem tensor_product.neg_tmul 2020-12-11 01:46:44 9e550f2 feat(topology/separation): finite t1 spaces are discrete (#5298) These lemmas should simplify the arguments of #4301 Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/discrete_topology/near/218932564 ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subset_singleton_iff Modified src/topology/metric_space/basic.lean + theorem metric.is_open_singleton_iff Modified src/topology/order.lean + theorem forall_open_iff_discrete + theorem singletons_open_iff_discrete Modified src/topology/separation.lean + theorem discrete_of_t1_of_finite 2020-12-11 01:46:41 2c0b43d feat(combinatorics/simple_graph/degree_sum): degree-sum formula and handshake lemma (#5263) Adds the theorem that the sum of the degrees of the vertices of a simple graph is twice the number of edges. Also adds corollaries like the handshake lemma, which is that the number of odd-degree vertices is even. The corollary `exists_ne_odd_degree_if_exists_odd` is in anticipation of Sperner's lemma. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.edge_mem_other_incident_set Added src/combinatorics/simple_graph/degree_sum.lean + def simple_graph.dart.edge + theorem simple_graph.dart.edge_fiber + theorem simple_graph.dart.edge_mem + def simple_graph.dart.rev + theorem simple_graph.dart.rev_edge + theorem simple_graph.dart.rev_involutive + theorem simple_graph.dart.rev_ne + theorem simple_graph.dart.rev_rev + structure simple_graph.dart + theorem simple_graph.dart_card_eq_sum_degrees + theorem simple_graph.dart_card_eq_twice_card_edges + theorem simple_graph.dart_edge_eq_iff + theorem simple_graph.dart_edge_fiber_card + theorem simple_graph.dart_fst_fiber + theorem simple_graph.dart_fst_fiber_card_eq_degree + def simple_graph.dart_of_neighbor_set + theorem simple_graph.dart_of_neighbor_set_injective + theorem simple_graph.even_card_odd_degree_vertices + theorem simple_graph.exists_ne_odd_degree_of_exists_odd_degree + theorem simple_graph.odd_card_odd_degree_vertices_ne + theorem simple_graph.sum_degrees_eq_twice_card_edges Modified src/data/sym2.lean Added src/data/zmod/parity.lean + theorem zmod.eq_one_iff_odd + theorem zmod.eq_zero_iff_even + theorem zmod.ne_zero_iff_odd 2020-12-10 23:19:05 918d5a9 chore(data/finsupp/basic): redefine `finsupp.filter` (#5310) Also use lemmas about `indicator_function` and `function.update` to golf some proofs about `finsupp.single`. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.add_apply + theorem finsupp.coe_add + theorem finsupp.coe_fn_injective +/- theorem finsupp.ext +/- theorem finsupp.filter_add + def finsupp.filter_add_hom + theorem finsupp.filter_apply + theorem finsupp.filter_eq_indicator + theorem finsupp.filter_eq_sum + theorem finsupp.fun_support_eq - theorem finsupp.injective_coe_fn +/- theorem finsupp.single_apply + theorem finsupp.single_apply_eq_zero + theorem finsupp.single_eq_indicator + theorem finsupp.single_eq_update +/- theorem finsupp.support_filter Modified src/data/polynomial/degree/trailing_degree.lean 2020-12-10 23:19:03 c295873 feat(algebra/module/basic): {nat,int}_smul_apply (#5308) ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem add_monoid_hom.int_smul_apply +/- theorem add_monoid_hom.map_int_cast_smul +/- theorem add_monoid_hom.map_int_module_smul +/- theorem add_monoid_hom.map_nat_cast_smul +/- theorem add_monoid_hom.map_rat_cast_smul +/- theorem add_monoid_hom.map_rat_module_smul + theorem add_monoid_hom.nat_smul_apply 2020-12-10 21:44:19 c9793b5 chore(data/mv_polynomial): delete stray comments (#5312) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2020-12-10 21:44:16 f72734a chore(data/complex/exponential): add `inv_one_add_tan_sq` etc (#5299) * mark `cos_sq_add_sin_sq` and `sin_sq_add_cos_sq` as `@[simp]`; * add lemmas representing `sin x` and `cos x` as functions of `tan x`. ESTIMATED CHANGES Modified src/data/complex/exponential.lean + theorem complex.cos_sq_add_sin_sq + theorem complex.inv_one_add_tan_sq +/- theorem complex.sin_sq_add_cos_sq + theorem complex.tan_mul_cos + theorem complex.tan_sq_div_one_add_tan_sq + theorem real.cos_sq_add_sin_sq + theorem real.inv_one_add_tan_sq + theorem real.inv_sqrt_one_add_tan_sq +/- theorem real.sin_sq_add_cos_sq + theorem real.tan_div_sqrt_one_add_tan_sq + theorem real.tan_mul_cos + theorem real.tan_sq_div_one_add_tan_sq Modified test/differentiable.lean 2020-12-10 21:44:14 32b2e30 feat(category_theory/monad): special coequalizers for a monad (#5239) Two important coequalizer diagrams related to a monad ESTIMATED CHANGES Added src/category_theory/monad/coequalizer.lean + def category_theory.monad.beck_algebra_coequalizer + def category_theory.monad.beck_algebra_cofork + def category_theory.monad.beck_coequalizer + def category_theory.monad.beck_cofork + def category_theory.monad.beck_split_coequalizer + def category_theory.monad.coequalizer.bottom_map + theorem category_theory.monad.coequalizer.condition + def category_theory.monad.coequalizer.top_map + def category_theory.monad.coequalizer.π 2020-12-10 18:39:41 4e8486b feat(algebra/group/hom): add_monoid_hom.sub_apply (#5307) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem add_monoid_hom.sub_apply 2020-12-10 18:39:39 be6c37c feat(algebra/big_operators/finsupp): rename variables, and move to top of file (#5306) ESTIMATED CHANGES Modified src/algebra/big_operators/finsupp.lean 2020-12-10 17:02:36 f3c9d20 chore(linear_algebra/determinant): Golf a proof (#5309) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean 2020-12-10 17:02:33 cdb1398 feat(category_theory/limits): any functor preserves split coequalizers (#5246) Once #5230 merges, the only diff in this PR should be in `src/category_theory/limits/preserves/shapes/equalizers.lean` ESTIMATED CHANGES Modified src/category_theory/limits/preserves/shapes/equalizers.lean 2020-12-10 13:59:01 12d097e feat(category_theory/sites/sieves): change presieve operation defs (#5295) change the definitions of operations on presieves to avoid `eq_to_hom` and use inductive types instead, which makes proofs a lot nicer ESTIMATED CHANGES Modified src/category_theory/sites/pretopology.lean + inductive category_theory.pullback_arrows - def category_theory.pullback_arrows Modified src/category_theory/sites/sieves.lean + inductive category_theory.presieve.singleton - def category_theory.presieve.singleton +/- theorem category_theory.presieve.singleton_self Modified src/category_theory/sites/spaces.lean 2020-12-10 13:58:58 3f42fb4 feat(group_theory/perm/sign): Add sign_sum_congr (#5266) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.perm.sum_congr_refl_swap + theorem equiv.perm.sum_congr_swap_refl Modified src/group_theory/perm/basic.lean + theorem equiv.perm.sum_congr_one_swap + theorem equiv.perm.sum_congr_swap_one Modified src/group_theory/perm/sign.lean + theorem equiv.perm.sign_sum_congr 2020-12-10 13:58:56 90755c3 refactor(order/filter/ultrafilter): drop `filter.is_ultrafilter` (#5264) Use bundled `ultrafilter`s instead. ESTIMATED CHANGES Modified src/data/real/hyperreal.lean +/- theorem hyperreal.coe_abs +/- theorem hyperreal.coe_lt_coe +/- theorem hyperreal.coe_max +/- theorem hyperreal.coe_min +/- def hyperreal Modified src/data/set/basic.lean + theorem subtype.preimage_coe_compl' + theorem subtype.preimage_coe_compl + theorem subtype.preimage_coe_eq_empty Modified src/order/filter/basic.lean + theorem filter.comap_ne_bot_iff_compl_range + theorem filter.comap_ne_bot_iff_frequently + theorem filter.compl_not_mem_sets + theorem filter.empty_nmem_sets +/- theorem filter.principal_ne_bot_iff Modified src/order/filter/filter_product.lean +/- theorem filter.germ.abs_def +/- theorem filter.germ.coe_lt +/- theorem filter.germ.coe_pos +/- theorem filter.germ.const_abs +/- theorem filter.germ.const_div +/- theorem filter.germ.const_lt +/- theorem filter.germ.const_max +/- theorem filter.germ.const_min - theorem filter.germ.le_def +/- theorem filter.germ.lt_def +/- theorem filter.germ.max_def +/- theorem filter.germ.min_def Modified src/order/filter/germ.lean + theorem filter.germ.le_def Modified src/order/filter/ultrafilter.lean +/- theorem filter.bot_ne_hyperfilter +/- theorem filter.compl_mem_hyperfilter_of_finite - theorem filter.exists_ultrafilter +/- theorem filter.exists_ultrafilter_iff - theorem filter.exists_ultrafilter_of_finite_inter_nonempty + theorem filter.forall_ne_bot_le_iff +/- theorem filter.hyperfilter_le_cofinite - theorem filter.hyperfilter_ne_bot - theorem filter.is_ultrafilter.em - theorem filter.is_ultrafilter.eventually_imp - theorem filter.is_ultrafilter.eventually_not - theorem filter.is_ultrafilter.eventually_or - theorem filter.is_ultrafilter.unique - def filter.is_ultrafilter - theorem filter.is_ultrafilter_hyperfilter +/- theorem filter.le_iff_ultrafilter - theorem filter.le_of_ultrafilter +/- theorem filter.mem_hyperfilter_of_finite_compl +/- theorem filter.mem_iff_ultrafilter - theorem filter.mem_of_finite_Union_ultrafilter - theorem filter.mem_of_finite_sUnion_ultrafilter - theorem filter.mem_or_compl_mem_of_ultrafilter - theorem filter.mem_or_mem_of_ultrafilter - theorem filter.ne_empty_of_mem_ultrafilter +/- theorem filter.nmem_hyperfilter_of_finite - theorem filter.nonempty_of_mem_ultrafilter - theorem filter.sup_of_ultrafilters + theorem filter.supr_ultrafilter_le_eq - def filter.ultrafilter.bind - def filter.ultrafilter.comap - theorem filter.ultrafilter.eq_iff_val_le_val - def filter.ultrafilter.map - def filter.ultrafilter.pure - def filter.ultrafilter - theorem filter.ultrafilter_bind - theorem filter.ultrafilter_iff_compl_mem_iff_not_mem' - theorem filter.ultrafilter_iff_compl_mem_iff_not_mem - theorem filter.ultrafilter_map - theorem filter.ultrafilter_of_le - theorem filter.ultrafilter_of_spec - theorem filter.ultrafilter_of_ultrafilter - theorem filter.ultrafilter_pure - theorem filter.ultrafilter_ultrafilter_of' - theorem filter.ultrafilter_ultrafilter_of + def ultrafilter.bind + theorem ultrafilter.coe_inj + theorem ultrafilter.coe_injective + theorem ultrafilter.coe_le_coe + theorem ultrafilter.coe_map + def ultrafilter.comap + theorem ultrafilter.compl_mem_iff_not_mem + theorem ultrafilter.compl_not_mem_iff + theorem ultrafilter.empty_not_mem + theorem ultrafilter.eventually_imp + theorem ultrafilter.eventually_not + theorem ultrafilter.eventually_or + theorem ultrafilter.exists_le + theorem ultrafilter.exists_ultrafilter_of_finite_inter_nonempty + theorem ultrafilter.ext + theorem ultrafilter.finite_bUnion_mem_iff + theorem ultrafilter.finite_sUnion_mem_iff + theorem ultrafilter.frequently_iff_eventually + theorem ultrafilter.le_of_inf_ne_bot' + theorem ultrafilter.le_of_inf_ne_bot + def ultrafilter.map + theorem ultrafilter.mem_coe + theorem ultrafilter.mem_map + theorem ultrafilter.mem_or_compl_mem + theorem ultrafilter.mem_pure_sets + theorem ultrafilter.ne_empty_of_mem + theorem ultrafilter.nonempty_of_mem + theorem ultrafilter.of_coe + def ultrafilter.of_compl_not_mem_iff + theorem ultrafilter.of_le + theorem ultrafilter.union_mem_iff + theorem ultrafilter.unique + structure ultrafilter Modified src/topology/basic.lean +/- theorem continuous_at_iff_ultrafilter - def filter.ultrafilter.Lim + def ultrafilter.Lim + theorem ultrafilter.cluster_pt_iff Modified src/topology/category/Compactum.lean Modified src/topology/separation.lean - theorem is_ultrafilter.Lim_eq_iff_le_nhds + theorem ultrafilter.Lim_eq_iff_le_nhds Modified src/topology/stone_cech.lean +/- theorem convergent_eqv_pure +/- theorem ultrafilter_comap_pure_nhds Modified src/topology/subset_properties.lean - theorem is_ultrafilter.le_nhds_Lim + theorem ultrafilter.le_nhds_Lim Modified src/topology/uniform_space/cauchy.lean - theorem cauchy_of_totally_bounded_of_ultrafilter + theorem ultrafilter.cauchy_of_totally_bounded 2020-12-10 13:58:54 2bf0c2e feat(group_theory/group_action/sub_mul_action): add a has_zero instance (#5216) ESTIMATED CHANGES Modified src/group_theory/group_action/sub_mul_action.lean + theorem sub_mul_action.zero_mem 2020-12-10 10:51:03 702b1e8 refactor(data/finsupp/basic): merge `finsupp.of_multiset` and `multiset.to_finsupp` (#5237) * redefine `finsupp.to_multiset` as an `add_equiv`; * drop `finsupp.equiv_multiset` and `finsupp.of_multiset`; * define `multiset.to_finsupp` as `finsupp.to_multiset.symm`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem multiset.to_finset_sum_count_smul_eq Modified src/data/finsupp/basic.lean + theorem finsupp.coe_order_iso_multiset + theorem finsupp.coe_order_iso_multiset_symm - def finsupp.equiv_multiset + theorem finsupp.le_def +/- theorem finsupp.mem_antidiagonal_support - def finsupp.of_multiset - theorem finsupp.of_multiset_apply + def finsupp.order_iso_multiset +/- theorem finsupp.prod_to_multiset +/- theorem finsupp.to_finset_to_multiset +/- def finsupp.to_multiset + theorem finsupp.to_multiset_apply +/- theorem finsupp.to_multiset_single +/- theorem finsupp.to_multiset_to_finsupp +/- def multiset.to_finsupp +/- theorem multiset.to_finsupp_add + theorem multiset.to_finsupp_eq_iff +/- theorem multiset.to_finsupp_singleton +/- theorem multiset.to_finsupp_zero + theorem multiset.to_finsuppstrict_mono Modified src/data/finsupp/lattice.lean - theorem finsupp.le_def - theorem finsupp.of_multiset_strict_mono - def finsupp.order_iso_multiset - theorem finsupp.order_iso_multiset_apply - theorem finsupp.order_iso_multiset_symm_apply Modified src/logic/function/basic.lean + theorem function.id_def 2020-12-10 08:44:55 ac669c7 chore(category_theory/limits/preserves): cleanup (#4163) (edited to update). This PR entirely re-does the construction of limits from products and equalizers in a shorter way. With the new preserves limits machinery this new construction also shows that a functor which preserves products and equalizers preserves all limits, which previously was *really* annoying to do ESTIMATED CHANGES Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean + theorem category_theory.limits.has_limit_of_equalizer_and_product + def category_theory.limits.has_limit_of_has_products_of_has_equalizers.build_is_limit + def category_theory.limits.has_limit_of_has_products_of_has_equalizers.build_limit - def category_theory.limits.has_limit_of_has_products_of_has_equalizers.cones_hom - def category_theory.limits.has_limit_of_has_products_of_has_equalizers.cones_inv - def category_theory.limits.has_limit_of_has_products_of_has_equalizers.cones_iso - def category_theory.limits.has_limit_of_has_products_of_has_equalizers.diagram + def category_theory.limits.preserves_finite_limits_of_preserves_equalizers_and_finite_products + def category_theory.limits.preserves_limit_of_preserves_equalizers_and_product + def category_theory.limits.preserves_limits_of_preserves_equalizers_and_products 2020-12-10 07:39:19 e68d2d7 feat(category_theory/sites): category of sheaves (#5255) Category of sheaves on a grothendieck topology (cc: @kckennylau) ESTIMATED CHANGES Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/sheaf.lean + def category_theory.Sheaf + def category_theory.Sheaf_to_presheaf 2020-12-10 01:25:50 ba568a6 chore(scripts): update nolints.txt (#5297) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-09 19:09:52 84c0132 chore(data/indicator_function): a few more `simp` lemmas (#5293) * drop `indicator_of_support_subset` in favor of the new `indicator_eq_self`; * add a few more lemmas: `indicator_apply_eq_self`, `indicator_apply_eq_zero`, `indicator_eq_zero`, `indicator_eq_zero'` ESTIMATED CHANGES Modified src/data/indicator_function.lean + theorem set.indicator_apply_eq_self + theorem set.indicator_apply_eq_zero + theorem set.indicator_eq_self + theorem set.indicator_eq_zero' + theorem set.indicator_eq_zero +/- theorem set.indicator_indicator - theorem set.indicator_of_support_subset Modified src/data/set/function.lean + theorem set.piecewise_singleton Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/set_integral.lean 2020-12-09 17:36:09 bf25d26 chore(data/set/intervals/proj_Icc): add `strict_mono_incr_on` (#5292) * rename `set.Icc_extend_monotone` to `monotone.Icc_extend`; * add `set.strict_mono_incr_on_proj_Icc` and `strict_mono.strict_mono_incr_on_Icc_extend`. ESTIMATED CHANGES Modified src/data/set/intervals/proj_Icc.lean + theorem monotone.Icc_extend - theorem set.Icc_extend_monotone + theorem set.strict_mono_incr_on_proj_Icc + theorem strict_mono.strict_mono_incr_on_Icc_extend 2020-12-09 17:36:06 efe18d5 feat(measure_theory/interval_integral): continuous implies interval_integrable (#5288) ESTIMATED CHANGES Modified src/measure_theory/interval_integral.lean + theorem continuous.interval_integrable + theorem continuous_on.interval_integrable 2020-12-09 17:36:04 e357a33 chore(linear_algebra/multilinear): Add `linear_map.comp_multilinear_map_dom_dom_congr` (#5270) ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean + theorem linear_map.comp_multilinear_map_dom_dom_congr 2020-12-09 17:36:02 698d6b7 ci(.github/workflows/dependent-issues.yml): automation for "blocked-by-other-PR" label (#5261) When a PR or issue is updated, the [dependent-issues](https://github.com/z0al/dependent-issues) action will do the following on all PRs which are marked as dependent on it (with the text `- [ ] depends on: #blah` that we're already using): - add / remove the "blocked-by-other-PR" label - post / edit a comment with the current status of its dependencies (this is slightly redundant, given that we have another action which checks off the dependent PRs in the PR comments, but the extra notifications might be useful). - it also adds a new status check which is pending (yellow) until all dependencies are closed. ESTIMATED CHANGES Added .github/workflows/dependent-issues.yml 2020-12-09 16:13:00 a87f62b feat(category_theory/limits/preserves): preserving binary products (#5061) This moves and re-does my old file about preserving binary products to match the new API and framework for preservation of special shapes, and also cleans up some existing API. (I can split this up if necessary but they're all pretty minor changes, so hope this is okay!) ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/limits/preserves/functor_category.lean Added src/category_theory/limits/preserves/shapes/binary_products.lean + def category_theory.limits.is_limit_map_cone_binary_fan_equiv + def category_theory.limits.is_limit_of_has_binary_product_of_preserves_limit + def category_theory.limits.is_limit_of_reflects_of_map_is_limit + def category_theory.limits.map_is_limit_of_preserves_of_is_limit + def category_theory.limits.preserves_pair.iso + theorem category_theory.limits.preserves_pair.iso_hom + def category_theory.limits.preserves_pair.of_iso_comparison Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.coprod_is_coprod +/- def category_theory.limits.map_pair +/- def category_theory.limits.prod_comparison + def category_theory.limits.prod_is_prod Deleted src/category_theory/limits/shapes/constructions/preserve_binary_products.lean - def category_theory.limits.alternative_cone - def category_theory.limits.alternative_cone_is_limit - def category_theory.limits.preserves_binary_prod_of_prod_comparison_iso 2020-12-09 09:24:04 d12a731 chore(data/mv_polynomial): mark `mv_polynomial.ext` as `@[ext]` (#5289) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.ext 2020-12-09 04:36:44 1f309c5 feat(analysis/special_functions): `real.log` is infinitely smooth away from zero (#5116) Also redefine it using `order_iso.to_homeomorph` and prove more lemmas about limits of `exp`/`log`. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_on_inv Modified src/analysis/special_functions/exp_log.lean + theorem continuous.log + theorem continuous_at.log + theorem continuous_on.log + theorem continuous_within_at.log + theorem deriv.log - theorem deriv_log' + theorem deriv_within.log - theorem deriv_within_log' + theorem fderiv.log + theorem fderiv_within.log + theorem filter.tendsto.log + theorem has_fderiv_at.log + theorem has_fderiv_within_at.log +/- theorem measurable.log + theorem real.coe_comp_exp_order_iso + theorem real.coe_exp_order_iso_apply + theorem real.comap_exp_at_top + theorem real.comap_exp_nhds_within_Ioi_zero +/- theorem real.continuous_at_log + theorem real.continuous_at_log_iff +/- theorem real.continuous_log' - theorem real.continuous_log + theorem real.continuous_on_log + theorem real.deriv_log' + theorem real.deriv_log + theorem real.differentiable_at_log + theorem real.differentiable_at_log_iff + theorem real.differentiable_on_log - theorem real.exists_exp_eq_of_pos + def real.exp_order_iso + theorem real.log_of_ne_zero + theorem real.log_of_pos + theorem real.map_exp_at_bot + theorem real.map_exp_at_top +/- theorem real.range_exp + theorem real.strict_mono_decr_on_log + theorem real.strict_mono_incr_on_log + theorem real.surj_on_log' + theorem real.surj_on_log + theorem real.tendsto_comp_exp_at_bot + theorem real.tendsto_comp_exp_at_top + theorem real.tendsto_exp_at_bot + theorem real.tendsto_exp_at_bot_nhds_within + theorem real.tendsto_exp_comp_at_top + theorem real.tendsto_log_nhds_within_zero - theorem real.tendsto_log_one_zero + theorem real.times_cont_diff_at_log + theorem real.times_cont_diff_on_log Modified src/data/complex/exponential.lean + theorem real.exp_eq_exp +/- theorem real.exp_le_exp +/- theorem real.exp_lt_exp Modified src/data/set/function.lean + theorem strict_mono.cod_restrict Modified src/order/rel_iso.lean + def order_iso.set.univ + def order_iso.set_congr Modified src/topology/algebra/ordered.lean +/- theorem intermediate_value_univ +/- theorem intermediate_value_univ₂ +/- theorem is_preconnected.intermediate_value +/- theorem is_preconnected.intermediate_value₂ +/- theorem mem_range_of_exists_le_of_exists_ge +/- theorem nhds_within_Ici_self_ne_bot +/- theorem nhds_within_Iic_self_ne_bot Modified src/topology/separation.lean + theorem is_open_compl_singleton 2020-12-09 01:42:58 2032f7b chore(scripts): update nolints.txt (#5287) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-09 01:42:56 7ae1165 chore(data/pi): Express `single` in terms of `function.update` (#5283) These were originally introduced in #3513. Perhaps `function.update` wasn't as well developed back then. ESTIMATED CHANGES Modified src/data/pi.lean 2020-12-08 22:41:41 1e3447b chore(data/equiv/mul_add): Split out the group structure on automorphisms (#5281) This prevents `group_theory.perm.basic` being imported into lots of files that don't care about permutations. The argument here is that `add_aut` is to `add_equiv` as `perm` is to `equiv`: `perm` gets its group structure in a separate file to where `equiv` is defined, so `add_aut`, `mul_aut`, and `ring_aut` should too. This adds back imports of `group_theory.perm.basic` to downstream files that inherited them through `data.equiv.mul_add`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/data/equiv/mul_add.lean - theorem add_aut.apply_inv_self - theorem add_aut.coe_mul - theorem add_aut.coe_one - theorem add_aut.inv_apply_self - theorem add_aut.inv_def - theorem add_aut.mul_apply - theorem add_aut.mul_def - theorem add_aut.one_apply - theorem add_aut.one_def - def add_aut.to_perm - theorem mul_aut.apply_inv_self - theorem mul_aut.coe_mul - theorem mul_aut.coe_one - def mul_aut.conj - theorem mul_aut.conj_apply - theorem mul_aut.conj_inv_apply - theorem mul_aut.conj_symm_apply - theorem mul_aut.inv_apply_self - theorem mul_aut.inv_def - theorem mul_aut.mul_apply - theorem mul_aut.mul_def - theorem mul_aut.one_apply - theorem mul_aut.one_def - def mul_aut.to_perm - def mul_aut Added src/data/equiv/mul_add_aut.lean + theorem add_aut.apply_inv_self + theorem add_aut.coe_mul + theorem add_aut.coe_one + theorem add_aut.inv_apply_self + theorem add_aut.inv_def + theorem add_aut.mul_apply + theorem add_aut.mul_def + theorem add_aut.one_apply + theorem add_aut.one_def + def add_aut.to_perm + theorem mul_aut.apply_inv_self + theorem mul_aut.coe_mul + theorem mul_aut.coe_one + def mul_aut.conj + theorem mul_aut.conj_apply + theorem mul_aut.conj_inv_apply + theorem mul_aut.conj_symm_apply + theorem mul_aut.inv_apply_self + theorem mul_aut.inv_def + theorem mul_aut.mul_apply + theorem mul_aut.mul_def + theorem mul_aut.one_apply + theorem mul_aut.one_def + def mul_aut.to_perm + def mul_aut Modified src/data/equiv/ring.lean - def ring_aut.to_add_aut - def ring_aut.to_mul_aut - def ring_aut.to_perm - def ring_aut Added src/data/equiv/ring_aut.lean + def ring_aut.to_add_aut + def ring_aut.to_mul_aut + def ring_aut.to_perm + def ring_aut Modified src/data/fintype/basic.lean Modified src/group_theory/group_action/group.lean Modified src/group_theory/semidirect_product.lean 2020-12-08 18:18:54 4c9499f chore(algebra/group/pi): Split into multiple files (#5280) This allows files that appear before `ordered_group` to still use `pi.monoid` etc. ESTIMATED CHANGES Modified src/algebra/group/pi.lean - theorem pi.div_apply - theorem pi.inv_apply - theorem pi.mul_apply - theorem pi.one_apply Modified src/algebra/module/ordered.lean Added src/algebra/ordered_pi.lean Modified src/data/pi.lean + theorem pi.div_apply + theorem pi.inv_apply + theorem pi.mul_apply + theorem pi.one_apply Modified src/order/pilex.lean 2020-12-08 16:34:05 b5ab2f7 feat(topology/algebra/ordered): add lemmas about `map coe at_top/at_bot` (#5238) ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean - theorem Ioo_at_bot_eq_nhds_within - theorem Ioo_at_top_eq_nhds_within + theorem comap_coe_Iio_nhds_within_Iio + theorem comap_coe_Ioi_nhds_within_Ioi + theorem comap_coe_Ioo_nhds_within_Iio + theorem comap_coe_Ioo_nhds_within_Ioi + theorem comap_coe_nhds_within_Iio_of_Ioo_subset + theorem comap_coe_nhds_within_Ioi_of_Ioo_subset + theorem map_coe_Iio_at_top + theorem map_coe_Ioi_at_bot + theorem map_coe_Ioo_at_bot + theorem map_coe_Ioo_at_top + theorem map_coe_at_bot_of_Ioo_subset + theorem map_coe_at_top_of_Ioo_subset 2020-12-08 15:28:08 7f5a5dd feat(category_theory/limits): split coequalizers (#5230) Define what it means for a triple of morphisms `f g : X ⟶ Y`, `π : Y ⟶ Z` to be a split coequalizer, and show that every split coequalizer is a coequalizer and absolute. Define split pairs and `G`-split pairs. These definitions and constructions are useful in particular for the monadicity theorems. ESTIMATED CHANGES Added src/category_theory/limits/shapes/split_coequalizer.lean + def category_theory.functor.is_split_pair + def category_theory.is_split_coequalizer.as_cofork + def category_theory.is_split_coequalizer.is_coequalizer + def category_theory.is_split_coequalizer.map + structure category_theory.is_split_coequalizer 2020-12-08 13:47:48 64ddb12 feat(analysis/mean_inequalities): add Hölder's inequality for the Lebesgue integral of ennreal and nnreal functions (#5267) ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.ae_eq_zero_of_lintegral_rpow_eq_zero + theorem ennreal.fun_eq_fun_mul_inv_snorm_mul_snorm + def ennreal.fun_mul_inv_snorm + theorem ennreal.fun_mul_inv_snorm_rpow + theorem ennreal.lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero + theorem ennreal.lintegral_mul_le_Lp_mul_Lq + theorem ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_eq_top + theorem ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top + theorem ennreal.lintegral_mul_le_one_of_lintegral_rpow_eq_one + theorem ennreal.lintegral_rpow_fun_mul_inv_snorm_eq_one + theorem nnreal.lintegral_mul_le_Lp_mul_Lq Modified src/analysis/special_functions/pow.lean + theorem ennreal.inv_rpow_of_pos + theorem nnreal.of_real_rpow_of_nonneg Modified src/data/real/conjugate_exponents.lean + theorem real.is_conjugate_exponent.inv_add_inv_conj_ennreal Modified src/data/real/ennreal.lean + theorem ennreal.of_real_div_of_pos + theorem ennreal.of_real_inv_of_pos Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_zero_fun 2020-12-08 10:43:05 3996bd4 chore(logic/basic): add a few `simp` lemmas (#5278) Also add `fintype.prod_eq_single`. ESTIMATED CHANGES Modified archive/arithcc.lean Modified src/data/fintype/card.lean + theorem fintype.prod_eq_single Modified src/data/matrix/basic.lean Modified src/logic/basic.lean + theorem decidable.not_imp_self + theorem imp_not_self + theorem ite_eq_left_iff + theorem ite_eq_right_iff + theorem not_imp_self Modified src/ring_theory/power_series.lean 2020-12-08 10:43:02 d3bbaeb chore(combinatorics/composition): use `order_embedding` (#5276) * use `order_embedding` for `composition.boundary` * use `order_embedding` for `composition.embedding` * add `max_eq_right_iff` etc * golf some proofs ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem max_eq_left_iff + theorem max_eq_right_iff + theorem min_eq_left_iff + theorem min_eq_right_iff Modified src/analysis/analytic/composition.lean Modified src/combinatorics/composition.lean +/- def composition.boundary + theorem composition.coe_embedding + theorem composition.coe_inv_embedding +/- def composition.embedding - theorem composition.embedding_injective +/- theorem composition.ones_blocks +/- theorem composition.single_blocks +/- theorem composition.single_length - theorem composition.strict_mono_boundary 2020-12-08 10:43:00 51f5ca3 chore(group_theory/perm): Add alternate formulation of (sum|sigma)_congr lemmas (#5260) These lemmas existed already for `equiv`, but not for `perm` or for `perm` via group structures. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.perm.sigma_congr_right + theorem equiv.perm.sigma_congr_right_refl + theorem equiv.perm.sigma_congr_right_symm + theorem equiv.perm.sigma_congr_right_trans + def equiv.perm.sum_congr + theorem equiv.perm.sum_congr_apply + theorem equiv.perm.sum_congr_refl + theorem equiv.perm.sum_congr_symm + theorem equiv.perm.sum_congr_trans +/- theorem equiv.sum_congr_symm Modified src/group_theory/perm/basic.lean + theorem equiv.perm.sigma_congr_right_inv + theorem equiv.perm.sigma_congr_right_mul + theorem equiv.perm.sigma_congr_right_one + theorem equiv.perm.sum_congr_inv + theorem equiv.perm.sum_congr_mul + theorem equiv.perm.sum_congr_one 2020-12-08 07:36:20 ac6fc38 chore(*): move/add lemmas about `disjoint` (#5277) * `set.disjoint_compl_left` and `set.disjoint_compl_right`: - generalize to any `boolean_algebra`, - move to `order/boolean_algebra`, - drop `set.` prefix, - make the argument implicit to follow the style of other lemmas in `order/boolean_algebra` * add `set.disjoint_empty` and `set.empty_disjoint` * add `disjoint_top` and `top_disjoint`, use in `set.disjoint_univ`and `set.univ_disjoint`. ESTIMATED CHANGES Modified src/data/set/lattice.lean - theorem set.disjoint_compl_left - theorem set.disjoint_compl_right + theorem set.disjoint_empty + theorem set.empty_disjoint Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/matrix.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/set_integral.lean Modified src/order/boolean_algebra.lean + theorem disjoint_compl_left + theorem disjoint_compl_right Modified src/order/bounded_lattice.lean +/- theorem disjoint_bot_left +/- theorem disjoint_bot_right + theorem disjoint_top + theorem top_disjoint Modified src/ring_theory/localization.lean 2020-12-08 07:36:17 ef377a9 chore(data/list/sort): docs, add a few lemmas (#5274) * Add a module docstring and section headers. * Rename `list.eq_of_sorted_of_perm` to `list.eq_of_perm_of_sorted`; the new name reflects the order of arguments. * Add a few lemmas. ESTIMATED CHANGES Modified src/data/list/sort.lean + theorem list.eq_of_perm_of_sorted - theorem list.eq_of_sorted_of_perm + theorem list.insertion_sort_cons_eq_take_drop +/- theorem list.length_merge_sort + theorem list.merge_sort_eq_insertion_sort +/- theorem list.merge_sort_eq_self + theorem list.ordered_insert_eq_take_drop +/- theorem list.perm_insertion_sort +/- theorem list.perm_merge +/- theorem list.perm_merge_sort +/- theorem list.perm_ordered_insert + theorem list.sorted.insertion_sort_eq + theorem list.sorted.merge + theorem list.sorted.ordered_insert +/- theorem list.sorted_insertion_sort - theorem list.sorted_merge +/- theorem list.sorted_merge_sort - theorem list.sorted_ordered_insert Modified src/data/multiset/sort.lean 2020-12-08 07:36:15 aec64b1 feat(category_theory/monad): generalise algebra colimits (#5234) Assumption generalisations and universe generalisations ESTIMATED CHANGES Modified src/category_theory/monad/limits.lean + def category_theory.monadic_creates_colimit_of_preserves_colimit Modified src/topology/category/UniformSpace.lean 2020-12-08 07:36:13 7360178 feat(category_theory/closed/types): presheaf category is cartesian closed (#4897) ESTIMATED CHANGES Added src/category_theory/closed/types.lean Modified src/category_theory/limits/preserves/limits.lean + theorem category_theory.lift_comp_preserves_limits_iso_hom + def category_theory.preserves_colimit_iso + theorem category_theory.preserves_colimits_iso_inv_comp_desc + theorem category_theory.preserves_desc_map_cocone + theorem category_theory.preserves_lift_map_cone + def category_theory.preserves_limit_iso + theorem category_theory.preserves_limits_iso_hom_π + theorem category_theory.preserves_limits_iso_inv_π + theorem category_theory.ι_preserves_colimits_iso_hom + theorem category_theory.ι_preserves_colimits_iso_inv - theorem lift_comp_preserves_limits_iso_hom - def preserves_colimit_iso - theorem preserves_colimits_iso_inv_comp_desc - theorem preserves_desc_map_cocone - theorem preserves_lift_map_cone - def preserves_limit_iso - theorem preserves_limits_iso_hom_π - theorem preserves_limits_iso_inv_π - theorem ι_preserves_colimits_iso_hom - theorem ι_preserves_colimits_iso_inv 2020-12-08 05:05:55 8f42d73 chore(data/list/pairwise): add `list.pairwise_pmap` and `list.pairwise.pmap` (#5273) Also add `list.pairwise.tail` and use it in the proof of `list.sorted.tail`. ESTIMATED CHANGES Modified src/data/list/pairwise.lean + theorem list.pairwise.pmap + theorem list.pairwise.tail + theorem list.pairwise_pmap Modified src/data/list/sort.lean +/- theorem list.sorted.tail 2020-12-08 03:20:13 3f4829c chore(data/support): zero function has empty support (#5275) ESTIMATED CHANGES Modified src/data/support.lean + theorem function.support_zero' + theorem function.support_zero 2020-12-08 01:21:19 35f0862 chore(scripts): update nolints.txt (#5272) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-07 20:04:10 b173925 refactor(data/fin): use `order_embedding` for many maps (#5251) Also swap `data.fin` with `order.rel_iso` in the import tree. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/data/fin.lean +/- def fin.add_nat +/- def fin.cast +/- def fin.cast_add +/- def fin.cast_le - theorem fin.cast_le_injective +/- theorem fin.cast_lt_cast_succ +/- def fin.cast_succ +/- theorem fin.cast_succ_inj +/- theorem fin.coe_add_nat +/- theorem fin.coe_cast +/- theorem fin.coe_cast_add +/- theorem fin.coe_cast_le +/- theorem fin.coe_cast_lt +/- theorem fin.coe_cast_succ + def fin.coe_embedding +/- theorem fin.coe_last + theorem fin.coe_nat_add - theorem fin.coe_sub_nat + theorem fin.coe_succ_embedding +/- def fin.nat_add +/- def fin.sub_nat +/- def fin.succ_above + theorem fin.succ_above_aux + theorem fin.succ_above_last_apply +/- theorem fin.succ_above_zero + def fin.succ_embedding + theorem fin.symm_cast Modified src/order/basic.lean Modified src/order/rel_iso.lean - def fin.val.rel_embedding - def fin_fin.rel_embedding + theorem order_embedding.apply_eq_apply + theorem order_embedding.apply_le_apply + theorem order_embedding.apply_lt_apply + theorem order_embedding.coe_of_strict_mono 2020-12-07 20:04:08 b9689bd feat(topology/algebra/infinite_sum): add lemmas about continuous linear maps (#5243) ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_equiv.tsum_eq_iff Modified src/topology/algebra/infinite_sum.lean + theorem has_sum.smul + theorem summable.smul + theorem tsum_smul 2020-12-07 17:05:50 f730137 chore(logic/basic): add `and.congr_left_iff` and `@[simp]` attrs (#5268) ESTIMATED CHANGES Modified src/data/pfun.lean Modified src/logic/basic.lean + theorem and.congr_left_iff +/- theorem and.congr_right_iff Modified src/measure_theory/borel_space.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-12-07 10:37:13 44400c9 feat(dynamics/circle/rotation_number): translation numbers define a group action up to a semiconjugacy (#5138) Formalize a theorem by Étienne Ghys: given two lifts `f₁`, `f₂` of actions of a group `G` on the circle by orientation preserving homeomorphisms to the real line, assume that for each `g : G` the translation numbers of `f₁ g` and `f₂ g` are equal. Then the actions are semiconjugate by a (possibly discontinuous) circle map. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.of_bijective_apply_symm_apply + theorem equiv.of_bijective_symm_apply_apply Modified src/dynamics/circle/rotation_number/translation_number.lean + theorem circle_deg1_lift.coe_to_order_iso + theorem circle_deg1_lift.coe_to_order_iso_inv + theorem circle_deg1_lift.coe_to_order_iso_symm + theorem circle_deg1_lift.continuous_iff_surjective + theorem circle_deg1_lift.is_unit_iff_bijective + theorem circle_deg1_lift.map_lt_add_floor_translation_number_add_one + theorem circle_deg1_lift.map_lt_add_translation_number_add_one + theorem circle_deg1_lift.semiconj_of_bijective_of_translation_number_eq + theorem circle_deg1_lift.semiconj_of_group_action_of_forall_translation_number_eq + theorem circle_deg1_lift.semiconj_of_is_unit_of_translation_number_eq + theorem circle_deg1_lift.strict_mono_iff_injective + def circle_deg1_lift.to_order_iso + theorem circle_deg1_lift.translation_number_gpow - theorem circle_deg1_lift.translation_number_map_id + theorem circle_deg1_lift.translation_number_one + theorem circle_deg1_lift.translation_number_units_inv + theorem circle_deg1_lift.units_apply_inv_apply + theorem circle_deg1_lift.units_inv_apply_apply + theorem circle_deg1_lift.units_semiconj_of_translation_number_eq Modified src/order/basic.lean + theorem monotone.strict_mono_iff_injective 2020-12-07 08:45:14 f0ceb6b feat(analysis/mean_inequalities): add young_inequality for nnreal and ennreal with real exponents (#5242) The existing young_inequality for nnreal has nnreal exponents. This adds a version with real exponents with the is_conjugate_exponent property, and a similar version for ennreal with real exponents. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem ennreal.young_inequality + theorem nnreal.young_inequality_real Modified src/data/real/conjugate_exponents.lean + theorem real.is_conjugate_exponent.inv_add_inv_conj_nnreal + theorem real.is_conjugate_exponent.one_lt_nnreal Modified src/data/real/nnreal.lean + theorem nnreal.of_real_div' + theorem nnreal.of_real_div + theorem nnreal.of_real_inv 2020-12-07 06:49:09 914d2b1 chore(topology/category/Profinite): Fix docstring (#5265) ESTIMATED CHANGES Modified src/topology/category/Profinite.lean 2020-12-07 03:33:52 b2427d5 feat(order/filter/ultrafilter): Restriction of ultrafilters along large embeddings (#5195) This PR adds the fact that the `comap` of an ultrafilter along a "large" embedding (meaning the image is large w.r.t. the ultrafilter) is again an ultrafilter. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_diff_image + theorem set.range_diff_image_subset Modified src/order/filter/basic.lean + theorem filter.image_mem_map_iff + theorem filter.mem_comap_iff Modified src/order/filter/ultrafilter.lean + def filter.ultrafilter.comap 2020-12-07 01:24:27 67eb675 chore(scripts): update nolints.txt (#5262) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-06 20:08:34 8d54d52 chore(topology/algebra/ordered): generalize `intermediate_value_Icc` etc (#5235) Several lemmas assumed that the codomain is a conditionally complete linear order while actually the statements are true for a linear order. Also introduce `mem_range_of_exists_le_of_exists_ge` and use it in `surjective_of_continuous`. ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem intermediate_value_Icc' +/- theorem intermediate_value_Icc + theorem mem_range_of_exists_le_of_exists_ge +/- theorem surjective_of_continuous' +/- theorem surjective_of_continuous 2020-12-06 20:08:32 9cb27c9 chore(ring_theory/algebra_tower): generalize `is_scalar_tower.right` (#5224) The old instance for `[is_scalar_tower R S S]` assumed [comm_semiring S]` instead of `[semiring S]`. ESTIMATED CHANGES Modified src/ring_theory/algebra_tower.lean 2020-12-06 20:08:30 128b316 feat(number_theory/primes_congruent_one): infinitely many primes congruent to 1 (#5217) I prove that, for any positive `k : ℕ`, there are infinitely many primes `p` such that `p ≡ 1 [MOD k]`. I am not sure that `p ≡ 1 [MOD k]` is the recommended way of stating this in mathlib (instead of using `nat.cast_ring_hom `), I can change it if needed. Also, I don't know if it is appropriate to create a new file, but I didn't see any reasonable location. ESTIMATED CHANGES Added src/number_theory/primes_congruent_one.lean + theorem nat.exists_prime_ge_modeq_one + theorem nat.frequently_at_top_modeq_one + theorem nat.infinite_set_of_prime_modeq_one Modified src/order/filter/cofinite.lean + theorem nat.frequently_at_top_iff_infinite Modified src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.degree_cyclotomic_pos 2020-12-06 18:56:25 b3aa052 feat(combinatorics/simple_graph/basic): introduce incidence sets, graph construction from relation (#5191) Add incidence sets and some lemmas, including a proof of equivalence between the neighbor set of a vertex and its incidence set. Add a graph construction from a given relation. Definitions and lemmas adapted from [simple_graphs2](https://github.com/leanprover-community/mathlib/blob/simple_graphs2/src/combinatorics/simple_graph/basic.lean#L317) ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean + theorem simple_graph.adj_incidence_set_inter + theorem simple_graph.card_incidence_set_eq_degree + theorem simple_graph.degree_pos_iff_exists_adj + theorem simple_graph.edge_set_univ_card + def simple_graph.from_rel + theorem simple_graph.from_rel_adj + def simple_graph.incidence_finset + theorem simple_graph.incidence_other_neighbor_edge + theorem simple_graph.incidence_other_prop + def simple_graph.incidence_set + def simple_graph.incidence_set_equiv_neighbor_set + theorem simple_graph.incidence_set_subset + def simple_graph.max_degree + theorem simple_graph.mem_incidence_finset + theorem simple_graph.mem_incidence_iff_neighbor + theorem simple_graph.mem_incidence_set + def simple_graph.min_degree + def simple_graph.other_vertex_of_incident 2020-12-06 11:43:56 c88e8f3 refactor(*): drop `topology/instances/complex` (#5208) * drop `topology/instances/complex`, deduce topology from `normed_space` instead; * generalize continuity of `polynomial.eval` to any `topological_ring`; add versions for `eval₂` and `aeval`; * replace `polynomial.tendsto_infinity` with `tendsto_abv_at_top`, add versions for `eval₂`, `aeval`, as well as `norm` instead of `abv`. * generalize `complex.exists_forall_abs_polynomial_eval_le` to any `[normed_ring R] [proper_space R]` such that norm is multiplicative, rename to `polynomial.exists_forall_norm_le`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/complex/basic.lean +/- def complex.continuous_linear_map.im +/- def complex.continuous_linear_map.of_real +/- def complex.continuous_linear_map.re + theorem complex.dist_eq Modified src/analysis/complex/polynomial.lean - theorem complex.exists_forall_abs_polynomial_eval_le Modified src/analysis/normed_space/basic.lean Modified src/data/padics/hensel.lean Modified src/measure_theory/borel_space.lean Modified src/topology/algebra/polynomial.lean - theorem polynomial.continuous_eval + theorem polynomial.exists_forall_norm_le + theorem polynomial.tendsto_abv_aeval_at_top + theorem polynomial.tendsto_abv_at_top + theorem polynomial.tendsto_abv_eval₂_at_top - theorem polynomial.tendsto_infinity + theorem polynomial.tendsto_norm_at_top Deleted src/topology/instances/complex.lean - theorem complex.continuous.inv - theorem complex.continuous_abs - theorem complex.continuous_im - theorem complex.continuous_inv - theorem complex.continuous_of_real - theorem complex.continuous_re - theorem complex.dist_eq - def complex.real_prod_homeo - theorem complex.tendsto_inv - theorem complex.uniform_continuous_abs - theorem complex.uniform_continuous_add - theorem complex.uniform_continuous_im - theorem complex.uniform_continuous_inv - theorem complex.uniform_continuous_mul - theorem complex.uniform_continuous_mul_const - theorem complex.uniform_continuous_neg - theorem complex.uniform_continuous_of_real - theorem complex.uniform_continuous_re 2020-12-06 10:31:29 29a1731 feat(ring_theory/witt_vector): common identities between operators on Witt vectors (#5161) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/identities.lean + theorem witt_vector.coeff_p_pow + theorem witt_vector.frobenius_verschiebung + theorem witt_vector.verschiebung_mul_frobenius + theorem witt_vector.verschiebung_zmod 2020-12-06 07:55:26 339bd9a chore(*): clean up several unnecessary let statements (#5257) Cleans up a few `let`s and `letI`s and a `have` and a `set` that have made it into some proofs in the library but do not seem to do anything for the proof. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pnat/xgcd.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/power_series.lean Modified src/topology/constructions.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-12-06 07:55:24 12a8361 feat(data/polynomial): simp lemmas about polynomial derivatives (#5256) Add simp lemmas derivative_bit0 derivative_bit1 and derivative_X_pow ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean + theorem polynomial.derivative_X_pow + theorem polynomial.derivative_bit0 + theorem polynomial.derivative_bit1 Modified test/differentiable.lean 2020-12-06 07:55:21 c6de6e4 chore(algebra/group_power): mark `map_pow` etc as `@[simp]` (#5253) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean +/- theorem add_monoid_hom.map_nsmul +/- theorem monoid_hom.map_pow Modified src/algebra/group_power/lemmas.lean +/- theorem add_monoid_hom.map_gsmul +/- theorem monoid_hom.map_gpow 2020-12-06 04:52:54 8538071 doc(data/list): fix `erasep` doc string (#5254) closes #5252 ESTIMATED CHANGES Modified src/data/list/defs.lean 2020-12-06 01:24:31 065bd5f chore(scripts): update nolints.txt (#5250) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-12-05 20:21:10 7e8e174 style(combinatorics/simple_graph/basic): edit proof of lemma to match style guidelines (#5245) Rewrite proof of `adj_iff_exists_edge` to match style guidelines. ESTIMATED CHANGES Modified src/combinatorics/simple_graph/basic.lean 2020-12-05 20:21:06 ae99c76 feat(field_theory/galois): Is_galois iff is_galois bot (#5231) Proves that E/F is Galois iff E/bot is Galois. This is useful in Galois theory because it gives a new way of showing that E/F is Galois: 1) Show that bot is the fixed field of some subgroup 2) Apply `is_galois.of_fixed_field` 3) Apply `is_galois_iff_is_galois_bot` More to be added later (once #5225 is merged): Galois is preserved by alg_equiv, is_galois_iff_galois_top ESTIMATED CHANGES Modified src/field_theory/adjoin.lean Modified src/field_theory/galois.lean + theorem is_galois.tower_top_of_is_galois + theorem is_galois_iff_is_galois_bot 2020-12-05 20:21:04 ddfba42 chore(data/multiset/basic): make `card` a bundled `add_monoid_hom` (#5228) Other changes: * use `/-! ###` in section headers; * move `add_monoid` section above `card`; * fix docstrings of `multiset.choose_x` and `multiset.choose`. ESTIMATED CHANGES Modified src/data/multiset/basic.lean +/- def multiset.card +/- theorem multiset.card_add +/- theorem multiset.count_eq_zero 2020-12-05 20:21:02 1f64814 chore(data/equiv/ring): add `symm_symm` and `coe_symm_mk` (#5227) Also generalize `map_mul` and `map_add` to `[has_mul R] [has_add R]` instead of `[semiring R]`. ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_symm_mk +/- theorem ring_equiv.map_add +/- theorem ring_equiv.map_mul + theorem ring_equiv.symm_symm 2020-12-05 18:53:49 d4bd4cd fix(topology/algebra/infinite_sum): fix docstring typos and add example (#5159) ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean 2020-12-05 16:59:01 83b13d1 feat(category_theory/limits): morphisms to equalizer (#5233) The natural bijection for morphisms to an equalizer and the dual. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cofork.is_colimit.hom_iso + theorem category_theory.limits.cofork.is_colimit.hom_iso_natural + def category_theory.limits.fork.is_limit.hom_iso + theorem category_theory.limits.fork.is_limit.hom_iso_natural 2020-12-05 16:58:59 dd11498 chore(linear_algebra/basic): redefine `restrict` (#5229) Use `dom_restrict` and `cod_restrict` ESTIMATED CHANGES Modified src/linear_algebra/basic.lean 2020-12-05 13:48:51 481f5e0 chore(data/prod): `prod.swap` is `bijective` (#5226) ESTIMATED CHANGES Modified src/data/prod.lean + theorem prod.swap_bijective + theorem prod.swap_inj + theorem prod.swap_injective + theorem prod.swap_surjective 2020-12-05 09:58:53 c5009dd chore(data/equiv/basic): Add missing refl/trans/symm simp lemmas (#5223) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.sigma_congr_right_refl + theorem equiv.sigma_congr_right_symm + theorem equiv.sigma_congr_right_trans + theorem equiv.sum_congr_refl + theorem equiv.sum_congr_trans 2020-12-05 07:50:28 3972da8 chore(category_theory/limits/preserves): make names consistent (#5240) adjusted names and namespaces to match #5044 ESTIMATED CHANGES Modified src/category_theory/limits/preserves/shapes/products.lean + def category_theory.limits.is_limit_fan_mk_obj_of_is_limit + def category_theory.limits.is_limit_map_cone_fan_mk_equiv + def category_theory.limits.is_limit_of_has_product_of_preserves_limit + def category_theory.limits.is_limit_of_is_limit_fan_mk_obj + def category_theory.limits.preserves_product.iso + theorem category_theory.limits.preserves_product.iso_hom + def category_theory.limits.preserves_product.of_iso_comparison - def preserves.fan_map_cone_limit - def preserves.is_limit_of_has_product_of_preserves_limit - def preserves.is_limit_of_reflects_of_map_is_limit - def preserves.map_is_limit_of_preserves_of_is_limit - def preserves.preserves_product_of_iso_comparison - def preserves.preserves_products_iso - theorem preserves.preserves_products_iso_hom Modified src/topology/sheaves/forget.lean 2020-12-05 07:50:26 39a3b58 feat(order/filter/at_top_bot): `order_iso` maps `at_top` to `at_top` (#5236) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem order_iso.comap_at_bot + theorem order_iso.comap_at_top + theorem order_iso.map_at_bot + theorem order_iso.map_at_top + theorem order_iso.tendsto_at_bot + theorem order_iso.tendsto_at_bot_iff + theorem order_iso.tendsto_at_top + theorem order_iso.tendsto_at_top_iff 2020-12-05 07:50:24 147a81a chore(category_theory/limits): preserving coequalizers (#5212) dualise stuff from before ESTIMATED CHANGES Modified src/category_theory/limits/preserves/shapes/equalizers.lean + def category_theory.limits.is_colimit_cofork_map_of_is_colimit + def category_theory.limits.is_colimit_map_cocone_cofork_equiv + def category_theory.limits.is_colimit_of_has_coequalizer_of_preserves_colimit + def category_theory.limits.is_colimit_of_is_colimit_cofork_map + def category_theory.limits.of_iso_comparison + def category_theory.limits.preserves_coequalizer.iso + theorem category_theory.limits.preserves_coequalizer.iso_hom Modified src/category_theory/limits/shapes/equalizers.lean 2020-12-05 07:50:22 b82eb7a refactor(combinatorics/simple_graph/matching): change definition of matching (#5210) Refactored definition of matching per @eric-wieser's [suggestion](https://github.com/leanprover-community/mathlib/pull/5156#discussion_r535102524) and @kmill's [suggestion](https://github.com/leanprover-community/mathlib/pull/5156#discussion_r535745112), for the purpose of using `matching.sub_edges` instead of `matching.prop.sub_edges` ESTIMATED CHANGES Modified src/combinatorics/simple_graph/matching.lean - structure simple_graph.is_matching + structure simple_graph.matching - def simple_graph.matching 2020-12-05 07:50:19 dc08f4d feat(analysis): define asymptotic equivalence of two functions (#4979) This defines the relation `is_equivalent u v l`, which means that `u-v` is little o of `v` along the filter `l`. It is required to state, for example, Stirling's formula, or the prime number theorem ESTIMATED CHANGES Added src/analysis/asymptotic_equivalent.lean + theorem asymptotics.is_equivalent.div + theorem asymptotics.is_equivalent.exists_eq_mul + theorem asymptotics.is_equivalent.inv + theorem asymptotics.is_equivalent.is_O + theorem asymptotics.is_equivalent.is_O_symm + theorem asymptotics.is_equivalent.is_o + theorem asymptotics.is_equivalent.mul + theorem asymptotics.is_equivalent.refl + theorem asymptotics.is_equivalent.smul + theorem asymptotics.is_equivalent.symm + theorem asymptotics.is_equivalent.tendsto_at_top + theorem asymptotics.is_equivalent.tendsto_at_top_iff + theorem asymptotics.is_equivalent.tendsto_const + theorem asymptotics.is_equivalent.tendsto_nhds + theorem asymptotics.is_equivalent.tendsto_nhds_iff + theorem asymptotics.is_equivalent.trans + def asymptotics.is_equivalent + theorem asymptotics.is_equivalent_const_iff_tendsto + theorem asymptotics.is_equivalent_iff_exists_eq_mul + theorem asymptotics.is_equivalent_iff_tendsto_one + theorem asymptotics.is_equivalent_of_tendsto_one' + theorem asymptotics.is_equivalent_of_tendsto_one + theorem asymptotics.is_equivalent_zero_iff_eventually_zero Modified src/analysis/asymptotics.lean + theorem asymptotics.is_o_iff_tendsto' Added src/analysis/normed_space/ordered.lean + theorem is_o_pow_pow_at_top_of_lt + theorem tendsto_pow_div_pow_at_top_of_lt 2020-12-05 04:54:08 de7dbbb feat(algebra/group): composition of monoid homs as "bilinear" monoid hom (#5202) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + def monoid_hom.comp_hom + theorem monoid_hom.comp_mul + theorem monoid_hom.comp_one + theorem monoid_hom.mul_comp + theorem monoid_hom.one_comp + theorem one_hom.comp_one + theorem one_hom.one_comp Modified src/category_theory/preadditive/default.lean 2020-12-05 01:27:37 56c4e73 chore(scripts): update nolints.txt (#5232) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-04 21:26:40 0afd3a0 chore(data/finsupp/basic): Add single_of_single_apply (#5219) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.single_of_single_apply 2020-12-04 21:26:38 8a9a5d3 feat(dynamics): (semi-)flows, omega limits (#4843) This code has gone through a couple of iterations since it was first written in summer, when the ambition was 'Morse decompositions in Lean' rather than 'mildly generalise some results from a first course in differential equations'. Nevertheless there's much in here I'm not confident about & would appreciate help with. ESTIMATED CHANGES Added src/dynamics/flow.lean + theorem flow.ext + def flow.from_iter + theorem flow.image_eq_preimage + theorem flow.is_invariant_iff_image_eq + theorem flow.map_add + theorem flow.map_zero + theorem flow.map_zero_apply + def flow.restrict + def flow.reverse + def flow.to_homeomorph + structure flow + theorem is_fw_invariant.is_invariant + def is_fw_invariant + theorem is_fw_invariant_iff_is_invariant + theorem is_invariant.is_fw_invariant + def is_invariant + theorem is_invariant_iff_image Added src/dynamics/omega_limit.lean + theorem eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' + theorem eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset + theorem eventually_closure_subset_of_is_open_of_omega_limit_subset + theorem eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset + theorem eventually_maps_to_of_is_open_of_omega_limit_subset + theorem flow.is_invariant_omega_limit + theorem flow.omega_limit_image_eq + theorem flow.omega_limit_image_subset + theorem flow.omega_limit_omega_limit + theorem is_closed_omega_limit + theorem maps_to_omega_limit' + theorem maps_to_omega_limit + theorem mem_omega_limit_iff_frequently + theorem mem_omega_limit_iff_frequently₂ + theorem mem_omega_limit_singleton_iff_map_cluster_point + theorem nonempty_omega_limit + theorem nonempty_omega_limit_of_is_compact_absorbing + def omega_limit + theorem omega_limit_Inter + theorem omega_limit_Union + theorem omega_limit_def + theorem omega_limit_eq_Inter + theorem omega_limit_eq_Inter_inter + theorem omega_limit_eq_bInter_inter + theorem omega_limit_image_eq + theorem omega_limit_inter + theorem omega_limit_mono_left + theorem omega_limit_mono_right + theorem omega_limit_preimage_subset + theorem omega_limit_subset_closure_fw_image + theorem omega_limit_subset_of_tendsto + theorem omega_limit_union Modified src/topology/algebra/monoid.lean Modified src/topology/constructions.lean + theorem continuous_curry + theorem continuous_uncurry_left + theorem continuous_uncurry_of_discrete_topology_left + theorem continuous_uncurry_right 2020-12-04 15:57:38 5f43079 doc(data/quot): Fix typo (#5221) ESTIMATED CHANGES Modified src/data/quot.lean 2020-12-04 15:57:35 4ea2e68 chore(algebra/big_operators/basic): Split prod_cancels_of_partition_cancels in two and add a docstring (#5218) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_partition 2020-12-04 15:57:31 5ea96f9 feat(linear_algebra/multilinear): Add `multilinear_map.coprod` (#5182) ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean + def multilinear_map.dom_coprod' + def multilinear_map.dom_coprod 2020-12-04 15:57:29 cb7effa feat(ring_theory/discrete_valuation_ring): add additive valuation (#5094) Following the approach used for p-adic numbers, we define an additive valuation on a DVR R as a bare function v: R -> nat, with the convention that v(0)=0 instead of +infinity for convenience. Note that we have no `hom` structure (like `monoid_hom` or `add_monoid_hom`) for v(a*b)=v(a)+v(b) and anyway this doesn't even hold if ab=0. We prove all the usual axioms. ESTIMATED CHANGES Modified src/ring_theory/discrete_valuation_ring.lean + theorem discrete_valuation_ring.add_val_add + theorem discrete_valuation_ring.add_val_def' + theorem discrete_valuation_ring.add_val_def + theorem discrete_valuation_ring.add_val_le_iff_dvd + theorem discrete_valuation_ring.add_val_mul + theorem discrete_valuation_ring.add_val_one + theorem discrete_valuation_ring.add_val_pow + theorem discrete_valuation_ring.add_val_spec + theorem discrete_valuation_ring.add_val_uniformizer + theorem discrete_valuation_ring.add_val_zero + theorem discrete_valuation_ring.eq_unit_mul_pow_irreducible 2020-12-04 14:48:23 f1d30f6 doc(data/typevec): Fix broken markdown rendering (#5220) ESTIMATED CHANGES Modified src/data/typevec.lean 2020-12-04 13:34:38 54c13bd docs(data/fp): Move title comment so that it appears in the markdown (#5222) ESTIMATED CHANGES Modified src/data/fp/basic.lean 2020-12-04 10:35:26 30467f4 feat(field_theory/adjoin): induction on adjoin (#5173) This is another adjoin induction lemma that will be used in an upcoming PR. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.induction_on_adjoin_fg + theorem intermediate_field.induction_on_adjoin_finset 2020-12-04 07:43:02 7e307bc chore(algebra/ring): delete a duplicate instance (#5215) In #3303 and #3296 which were merged 1 day apart two versions of the instance comm_monoid_with_zero from a comm_semiring were added 5 lines apart in the file, delete one. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean 2020-12-04 07:43:00 2d00ba4 feat(category_theory/limits): cleanup equalizers (#5214) golf and make simp more powerful ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean - theorem category_theory.limits.cocone_of_split_epi_ι_app_one - theorem category_theory.limits.cocone_of_split_epi_ι_app_zero +/- theorem category_theory.limits.cofork.condition +/- theorem category_theory.limits.cofork.π_eq_app_one +/- theorem category_theory.limits.cofork.π_of_π - theorem category_theory.limits.cone_of_split_mono_π_app_one - theorem category_theory.limits.cone_of_split_mono_π_app_zero +/- theorem category_theory.limits.fork.condition +/- theorem category_theory.limits.fork.ι_eq_app_zero +/- theorem category_theory.limits.fork.ι_of_ι +/- def category_theory.limits.split_epi_coequalizes 2020-12-04 07:42:59 b2f8c4c feat(category_theory/limits): reflects limit if reflects iso and preserves (#5213) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.reflects_colimit_of_reflects_isomorphisms + def category_theory.limits.reflects_colimits_of_reflects_isomorphisms + def category_theory.limits.reflects_colimits_of_shape_of_reflects_isomorphisms + def category_theory.limits.reflects_limit_of_reflects_isomorphisms + def category_theory.limits.reflects_limits_of_reflects_isomorphisms + def category_theory.limits.reflects_limits_of_shape_of_reflects_isomorphisms 2020-12-04 07:42:57 cfd01f9 chore(topology/continuous_on): change type of `continuous_on.comp_continuous` (#5209) Use `∀ x, f x ∈ s` instead of `range f ⊆ s`. ESTIMATED CHANGES Modified src/topology/continuous_on.lean Modified src/topology/path_connected.lean 2020-12-04 07:42:55 ad25cac refactor(data/polynomial/derivative): change `polynomial.derivative` to be a `linear_map` (#5198) Refactors polynomial.derivative to be a linear_map by default ESTIMATED CHANGES Modified src/data/polynomial/derivative.lean +/- def polynomial.derivative + theorem polynomial.derivative_apply + theorem polynomial.derivative_eval - def polynomial.derivative_hom - def polynomial.derivative_lhom +/- theorem polynomial.derivative_zero Modified src/data/polynomial/identities.lean - theorem polynomial.derivative_eval 2020-12-04 07:42:52 240f6eb feat(category_theory/monad): cleanups in monad algebra (#5193) - Converts the simp normal form for composition of algebra homs to use category notation. - Adds simps where appropriate - Golfs proofs, remove some erw and nonterminal simps - Remove some redundant brackets ESTIMATED CHANGES Modified src/category_theory/monad/algebra.lean + theorem category_theory.comonad.coalgebra.comp_eq_comp + theorem category_theory.comonad.coalgebra.comp_f +/- def category_theory.comonad.coalgebra.hom.comp +/- def category_theory.comonad.coalgebra.hom.id + theorem category_theory.comonad.coalgebra.id_eq_id + theorem category_theory.comonad.coalgebra.id_f + theorem category_theory.monad.algebra.comp_eq_comp + theorem category_theory.monad.algebra.comp_f +/- def category_theory.monad.algebra.hom.comp +/- def category_theory.monad.algebra.hom.id + theorem category_theory.monad.algebra.id_eq_id + theorem category_theory.monad.algebra.id_f 2020-12-04 07:42:50 c10d1b1 feat(ring_theory/polynomial/cyclotomic): add order_of_root_cyclotomic (#5151) Two lemmas about roots of cyclotomic polynomials modulo `p`. `order_of_root_cyclotomic` is the main algebraic tool to prove the existence of infinitely many primes congruent to `1` modulo `n`. ESTIMATED CHANGES Modified src/number_theory/divisors.lean + theorem nat.divisors_subset_of_dvd + theorem nat.divisors_subset_proper_divisors Modified src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.X_pow_sub_one_dvd_prod_cyclotomic + theorem polynomial.coprime_of_root_cyclotomic +/- theorem polynomial.cyclotomic_coeff_zero + theorem polynomial.order_of_root_cyclotomic + theorem polynomial.order_of_root_cyclotomic_dvd 2020-12-04 07:42:48 c939c9e feat(category_theory/limits/preserves): preserving terminal objects (#5060) Another part of #4716. ESTIMATED CHANGES Added src/category_theory/limits/preserves/shapes/terminal.lean + theorem category_theory.limits.has_terminal_of_has_terminal_of_preserves_limit + def category_theory.limits.is_limit_map_cone_empty_cone_equiv + def category_theory.limits.is_limit_of_has_terminal_of_preserves_limit + def category_theory.limits.is_terminal_obj_of_is_terminal + def category_theory.limits.is_terminal_of_is_terminal_obj + def category_theory.limits.preserves_terminal.iso + theorem category_theory.limits.preserves_terminal.iso_hom + def category_theory.limits.preserves_terminal.of_iso_comparison + def category_theory.limits.preserves_terminal_of_is_iso + def category_theory.limits.preserves_terminal_of_iso 2020-12-04 06:35:18 4f5046d feat(ring_theory/polynomial/cyclotomic): Möbius inversion formula for cyclotomic polynomials (#5192) Proves Möbius inversion for functions to a `comm_group_with_zero` Proves the Möbius inversion formula for cyclotomic polynomials ESTIMATED CHANGES Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.prod_eq_iff_prod_pow_moebius_eq_of_nonzero Modified src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.cyclotomic_eq_prod_X_pow_sub_one_pow_moebius 2020-12-04 01:20:37 57dd302 chore(scripts): update nolints.txt (#5211) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-03 22:25:01 20cc59d feat(algebra/lie/basic): define missing inclusion maps (#5207) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + def is_lie_abelian + def lie_ideal.incl + theorem lie_ideal.incl_apply + theorem lie_submodule.coe_hom_of_le + def lie_submodule.hom_of_le + theorem lie_submodule.hom_of_le_apply + def lie_submodule.incl + theorem lie_submodule.incl_apply + theorem lie_submodule.incl_eq_val Modified src/algebra/lie/classical.lean 2020-12-03 22:24:59 ec839ef feat(topology/algebra/order): continuity of monotone functions (#5199) Add local versions of `order_iso.continuous`. ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean + theorem continuous_at_left_of_mono_incr_on_of_closure_image_mem_nhds_within + theorem continuous_at_left_of_mono_incr_on_of_exists_between + theorem continuous_at_left_of_mono_incr_on_of_image_mem_nhds_within + theorem continuous_at_of_mono_incr_on_of_closure_image_mem_nhds + theorem continuous_at_of_mono_incr_on_of_exists_between + theorem continuous_at_of_mono_incr_on_of_image_mem_nhds + theorem continuous_at_right_of_mono_incr_on_of_closure_image_mem_nhds_within + theorem continuous_at_right_of_mono_incr_on_of_exists_between + theorem continuous_at_right_of_mono_incr_on_of_image_mem_nhds_within + theorem monotone.continuous_of_dense_range + theorem monotone.continuous_of_surjective + theorem strict_mono_incr_on.continuous_at_left_of_closure_image_mem_nhds_within + theorem strict_mono_incr_on.continuous_at_left_of_exists_between + theorem strict_mono_incr_on.continuous_at_left_of_image_mem_nhds_within + theorem strict_mono_incr_on.continuous_at_left_of_surj_on + theorem strict_mono_incr_on.continuous_at_of_closure_image_mem_nhds + theorem strict_mono_incr_on.continuous_at_of_exists_between + theorem strict_mono_incr_on.continuous_at_of_image_mem_nhds + theorem strict_mono_incr_on.continuous_at_right_of_closure_image_mem_nhds_within + theorem strict_mono_incr_on.continuous_at_right_of_exists_between + theorem strict_mono_incr_on.continuous_at_right_of_image_mem_nhds_within + theorem strict_mono_incr_on.continuous_at_right_of_surj_on 2020-12-03 19:30:25 3894503 doc(tactic/library_search): use more detailed doc string in docs (#5206) The doc string for `tactic.interactive.library_search` is better than the tactic doc entry. The latter is missing details like `library_search!` ESTIMATED CHANGES Modified src/tactic/suggest.lean 2020-12-03 19:30:23 d416ad6 feat(topology/category/Profinite): add category of profinite top. spaces (#5147) ESTIMATED CHANGES Modified src/topology/category/CompHaus.lean + theorem CompHaus.coe_to_Top +/- def CompHaus_to_Top Added src/topology/category/Profinite.lean + theorem Profinite.coe_to_Top + structure Profinite + def Profinite_to_CompHaus + theorem Profinite_to_CompHaus_to_Top + def Profinite_to_Top 2020-12-03 19:30:20 6f38a50 feat(field_theory/minimal_polynomial): add algebra_map_inj (#5062) I have added `algebra_map_inj` that computes the minimal polynomial of an element of the base ring. It generalizes `algebra_map` that assumes the base ring to be a field. I left `algebra_map` since I think it is reasonable to have a lemma that works without proving explicitly that the algebra map is injective. ESTIMATED CHANGES Modified src/field_theory/minimal_polynomial.lean - theorem minimal_polynomial.algebra_map' + theorem minimal_polynomial.degree_le_of_monic + theorem minimal_polynomial.eq_X_sub_C + theorem minimal_polynomial.eq_X_sub_C_of_algebra_map_inj +/- theorem minimal_polynomial.gcd_domain_eq_field_fractions 2020-12-03 16:31:34 986cabf fix(linear_algebra/multilinear): Fix incorrect type constraints on `dom_dom_congr` (#5203) In the last PR, I accidentally put this in a section with `[comm_semiring R]`, but this only actually requires `[semiring R]` ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean 2020-12-03 16:31:32 5269717 chore(linear_algebra/determinant): Move some lemmas about swaps to better files (#5201) These lemmas are not specific to determinants, and I need them in another file imported by `determinant`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.apply_swap_eq_self +/- theorem equiv.comp_swap_eq_update +/- theorem equiv.swap_apply_self Modified src/group_theory/perm/sign.lean + def equiv.perm.mod_swap Modified src/linear_algebra/determinant.lean - def matrix.mod_swap 2020-12-03 16:31:30 8ff9c0e feat(group_theory/order_of_element): add is_cyclic_of_prime_card (#5172) Add `is_cyclic_of_prime_card`, which says if a group has prime order, then it is cyclic. I also added `eq_top_of_card_eq` which says a subgroup is `top` when it has the same size as the group, not sure where that should be in the file. ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem is_cyclic_of_prime_card Modified src/group_theory/subgroup.lean + theorem subgroup.eq_top_of_card_eq 2020-12-03 14:04:40 f1b387f feat(algebra/module/basic): Add smul_comm_class instances (#5205) ESTIMATED CHANGES Modified src/algebra/module/basic.lean 2020-12-03 14:04:38 a4b6c41 feat(field_theory/separable): is_separable_of_alg_hom_is_separable (#5175) Proves that is_separable pulls back along an alg_hom ESTIMATED CHANGES Modified src/field_theory/separable.lean + theorem is_separable.of_alg_hom 2020-12-03 14:04:36 b978f36 refactor(field_theory/fixed): Generalize alg_hom lemmas (#5174) This PR generalizes some alg_hom lemmas to not require equality of the domain and codomain. ESTIMATED CHANGES Modified src/field_theory/fixed.lean +/- theorem cardinal_mk_alg_hom +/- theorem linear_independent_to_linear_map 2020-12-03 14:04:33 e7c2bba feat(ring_theory/witt_vector/frobenius): the frobenius endomorphism of witt vectors (#4838) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/frobenius.lean + theorem witt_vector.bind₁_frobenius_poly_rat_witt_polynomial + theorem witt_vector.bind₁_frobenius_poly_witt_polynomial + theorem witt_vector.coeff_frobenius + theorem witt_vector.coeff_frobenius_char_p + theorem witt_vector.coeff_frobenius_fun + def witt_vector.frobenius + theorem witt_vector.frobenius_eq_map_frobenius + def witt_vector.frobenius_fun + theorem witt_vector.frobenius_fun_is_poly + theorem witt_vector.frobenius_is_poly + def witt_vector.frobenius_poly + theorem witt_vector.frobenius_poly_aux_eq + def witt_vector.frobenius_poly_rat + theorem witt_vector.frobenius_poly_zmod + theorem witt_vector.frobenius_zmodp + theorem witt_vector.ghost_component_frobenius + theorem witt_vector.ghost_component_frobenius_fun + theorem witt_vector.map_frobenius_poly.key₁ + theorem witt_vector.map_frobenius_poly.key₂ + theorem witt_vector.map_frobenius_poly 2020-12-03 12:03:20 f1531ea feat(ring_theory/witt_vector): witt_sub, a demonstration of is_poly techniques (#5165) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/ring_theory/witt_vector/is_poly.lean + theorem witt_vector.sub_coeff + theorem witt_vector.sub_eq 2020-12-03 12:03:18 f6273d4 feat(group_theory/group_action/sub_mul_action): Add an object for bundled sets closed under a mul action (#4996) This adds `sub_mul_action` as a base class for `submodule`, and copies across the relevant lemmas. This also weakens the type class requires for `A →[R] B`, to allow it to be used when only `has_scalar` is available. ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean +/- def mul_action_hom.comp +/- theorem mul_action_hom.comp_apply +/- theorem mul_action_hom.comp_id +/- theorem mul_action_hom.ext +/- theorem mul_action_hom.ext_iff +/- theorem mul_action_hom.id_apply +/- theorem mul_action_hom.id_comp +/- theorem mul_action_hom.map_smul Modified src/algebra/module/submodule.lean +/- theorem submodule.neg_mem + theorem submodule.to_sub_mul_action_eq + theorem submodule.to_sub_mul_action_injective Added src/group_theory/group_action/sub_mul_action.lean + theorem sub_mul_action.coe_eq_coe + theorem sub_mul_action.coe_injective + theorem sub_mul_action.coe_mem + theorem sub_mul_action.coe_mk + theorem sub_mul_action.coe_neg + theorem sub_mul_action.coe_set_eq + theorem sub_mul_action.coe_smul + theorem sub_mul_action.coe_sort_coe + theorem sub_mul_action.ext'_iff + theorem sub_mul_action.ext + theorem sub_mul_action.mem_coe + theorem sub_mul_action.neg_mem + theorem sub_mul_action.neg_mem_iff + theorem sub_mul_action.smul_mem + theorem sub_mul_action.smul_mem_iff' + theorem sub_mul_action.smul_mem_iff + theorem sub_mul_action.subtype_apply + theorem sub_mul_action.subtype_eq_val + structure sub_mul_action 2020-12-03 10:55:59 98a20c2 feat(combinatorics/simple_graph/matching): introduce matchings and perfect matchings of graphs (#5156) Introduce definitions of matchings and perfect matchings of graphs. This is with the goal of eventually proving Hall's Marriage Theorem and Tutte's Theorem. ESTIMATED CHANGES Added src/combinatorics/simple_graph/matching.lean + structure simple_graph.is_matching + def simple_graph.matching.is_perfect + theorem simple_graph.matching.is_perfect_iff + def simple_graph.matching.support + def simple_graph.matching 2020-12-03 02:41:41 61e76c4 chore(scripts): update nolints.txt (#5197) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-03 01:03:53 d9a7d05 chore(topology/algebra/ordered): add `order_iso.to_homeomorph` (#5111) * Replace `homeomorph_of_strict_mono_surjective` with `order_iso.to_homeomorph` and `order_iso.continuous`. * Drop `continuous_at_of_strict_mono_surjective` in favor of `order_iso.to_homeomorph`. * Use notation for `nhds_within` here and there. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/topology/algebra/ordered.lean - theorem coe_homeomorph_of_strict_mono_surjective - theorem continuous_at_of_strict_mono_surjective - theorem continuous_inv_of_strict_mono_equiv - theorem continuous_left_of_strict_mono_surjective - theorem continuous_of_strict_mono_surjective - theorem continuous_right_of_strict_mono_surjective + theorem order_iso.coe_to_homeomorph + theorem order_iso.coe_to_homeomorph_symm + def order_iso.to_homeomorph 2020-12-02 21:22:19 3f61e54 feat(category_theory/monad): mark monad lemmas as reassoc (#5190) ESTIMATED CHANGES Modified src/category_theory/monad/basic.lean 2020-12-02 21:22:16 a84d7a7 feat(category_theory/adjunction): adjunction to equivalence (#5189) Raise an adjunction to an equivalence ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + def category_theory.adjunction.is_right_adjoint_to_is_equivalence + def category_theory.adjunction.to_equivalence 2020-12-02 21:22:13 ed6eab0 feat(category_theory/adjunction): simp adjunction defs (#5188) Mark adjunction defs as `simps` and use the new lemmas to simplify some proofs ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean - theorem category_theory.adjunction.equiv_homset_left_of_nat_iso_apply - theorem category_theory.adjunction.equiv_homset_left_of_nat_iso_symm_apply - theorem category_theory.adjunction.equiv_homset_right_of_nat_iso_apply - theorem category_theory.adjunction.equiv_homset_right_of_nat_iso_symm_apply Modified src/category_theory/adjunction/fully_faithful.lean 2020-12-02 21:22:11 9be829e feat(order/bounds): add basic lemmas about bdd_below (#5186) Lemmas for bounded intervals (`Icc`, `Ico`, `Ioc` and `Ioo`). There were lemmas for `bdd_above` but the ones for `bdd_below` were missing. ESTIMATED CHANGES Modified src/order/bounds.lean + theorem bdd_below_Icc + theorem bdd_below_Ico + theorem bdd_below_Ioc + theorem bdd_below_Ioo 2020-12-02 21:22:09 e5befed chore(data/polynomial/degree): golf some proofs, add simple lemmas (#5185) * drop `polynomial.nat_degree_C_mul_X_pow_of_nonzero`; was a duplicate of `polynomial.nat_degree_C_mul_X_pow`; * golf the proof of `nat_degree_C_mul_X_pow_le`; * add more `simp` lemmas. ESTIMATED CHANGES Modified src/data/polynomial/degree/definitions.lean + theorem polynomial.degree_mul_X + theorem polynomial.degree_mul_X_pow + theorem polynomial.degree_mul_monic + theorem polynomial.leading_coeff_C_mul_X_pow +/- theorem polynomial.leading_coeff_X_pow - theorem polynomial.leading_coeff_monomial' +/- theorem polynomial.leading_coeff_monomial + theorem polynomial.leading_coeff_mul_X +/- theorem polynomial.leading_coeff_mul_X_pow + theorem polynomial.leading_coeff_mul_monic + theorem polynomial.monic_X_pow + theorem polynomial.nat_degree_C_mul_X - theorem polynomial.nat_degree_C_mul_X_pow_of_nonzero Modified src/data/polynomial/div.lean 2020-12-02 21:22:07 64fd9f8 feat(order/rel_iso): preimages of intervals under an `order_iso` (#5183) ESTIMATED CHANGES Modified src/order/rel_iso.lean + theorem order_iso.preimage_Icc + theorem order_iso.preimage_Ici + theorem order_iso.preimage_Ico + theorem order_iso.preimage_Iic + theorem order_iso.preimage_Iio + theorem order_iso.preimage_Ioc + theorem order_iso.preimage_Ioi + theorem order_iso.preimage_Ioo 2020-12-02 21:22:05 725fb8b feat(algebra/lie/basic): define `map` and `comap` for Lie ideals, submodules (#5181) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + def lie_ideal.comap + theorem lie_ideal.gc_map_comap + def lie_ideal.map + theorem lie_ideal.map_le_iff_le_comap + def lie_submodule.comap + theorem lie_submodule.gc_map_comap + def lie_submodule.lie_span + theorem lie_submodule.lie_span_le + def lie_submodule.map + theorem lie_submodule.map_le_iff_le_comap + theorem lie_submodule.mem_lie_span + theorem lie_submodule.subset_lie_span 2020-12-02 21:22:03 5e93545 feat(linear_algebra/multilinear): Generalize dom_dom_congr for equivalences between types (#5180) This also bundles the operation into an equivalence. ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean +/- def multilinear_map.dom_dom_congr + def multilinear_map.dom_dom_congr_equiv 2020-12-02 21:22:01 8da5f23 feat(data/set/function): Extend `update_comp` lemmas to work on dependent functions (#5178) Also extends them to `Sort` ESTIMATED CHANGES Modified src/data/set/function.lean + theorem function.update_comp_eq_of_injective' +/- theorem function.update_comp_eq_of_injective + theorem function.update_comp_eq_of_not_mem_range' +/- theorem function.update_comp_eq_of_not_mem_range 2020-12-02 21:21:58 2189c7a feat(data/option/basic): map_map functor-like lemmas (#5030) New lemmas: `map_eq_map` `map_map` `comp_map` `map_comp_map` ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.comp_map + theorem option.map_comp_map + theorem option.map_eq_map +/- theorem option.map_eq_some + theorem option.map_map +/- theorem option.map_none +/- theorem option.map_some Modified src/data/seq/seq.lean 2020-12-02 19:13:28 0bb8809 feat(category_theory/limits): left adjoint if preserves colimits (#4942) A slight generalisation of a construction from before. Maybe this is the dual version you were talking about @jcommelin - if so my mistake! I think the advantage of doing it this way is that you definitionally get the old version but also the new version too. ESTIMATED CHANGES Modified src/category_theory/equivalence.lean Modified src/category_theory/limits/presheaf.lean +/- def category_theory.is_left_adjoint_of_preserves_colimits + def category_theory.is_left_adjoint_of_preserves_colimits_aux 2020-12-02 17:38:03 e5ea200 chore(analysis/normed_space): golf 2 proofs (#5184) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean 2020-12-02 15:07:43 a8ddd7b feat(algebra/module/basic): generalize `is_scalar_tower` instances (#5135) ESTIMATED CHANGES Modified src/algebra/module/basic.lean Modified src/ring_theory/algebra_tower.lean 2020-12-02 13:32:27 d6241cb feat(linear_algebra/*): Use alternating maps for wedge and determinant (#5124) This : * Adds `exterior_algebra.ι_multi`, where `ι_multi ![a, b ,c]` = `ι a * ι b * ι c` * Makes `det_row_multilinear` an `alternating_map` * Makes `is_basis.det` an `alternating_map` ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean +/- def matrix.det_row_multilinear Modified src/linear_algebra/exterior_algebra.lean + theorem exterior_algebra.ι_add_mul_swap + theorem exterior_algebra.ι_mul_prod_list + def exterior_algebra.ι_multi + theorem exterior_algebra.ι_multi_apply Modified src/linear_algebra/matrix.lean +/- def is_basis.det + theorem is_basis.to_matrix_transpose_apply + theorem linear_map.to_matrix_transpose_apply' + theorem linear_map.to_matrix_transpose_apply 2020-12-02 07:25:31 61f6364 feat(number_theory/arithmetic_function): Möbius inversion for `add_comm_group`s, `comm_group`s (#5115) Adds scalar multiplication for `arithmetic_function`s Generalizes Möbius inversion to work with `(add_)comm_group`s ESTIMATED CHANGES Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.coe_zeta_smul_apply +/- theorem nat.arithmetic_function.mul_apply + theorem nat.arithmetic_function.mul_smul' + theorem nat.arithmetic_function.one_smul' + theorem nat.arithmetic_function.prod_eq_iff_prod_pow_moebius_eq + theorem nat.arithmetic_function.smul_apply - theorem nat.arithmetic_function.sum_eq_iff_sum_moebius_eq + theorem nat.arithmetic_function.sum_eq_iff_sum_mul_moebius_eq + theorem nat.arithmetic_function.sum_eq_iff_sum_smul_moebius_eq 2020-12-02 02:00:39 f7e1806 chore(scripts): update nolints.txt (#5176) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-12-01 23:23:57 c2c7afe feat(data/nat/sqrt): add simple inequality lemmas and "no middle square" (#5155) The first two theorems are useful when one needs the biggest perfect square strictly less than a number, whereas `no_middle_square` can be used to easily prove that a given number is not a square. ESTIMATED CHANGES Modified src/data/nat/sqrt.lean + theorem nat.not_exists_sq + theorem nat.sqrt_mul_sqrt_lt_succ + theorem nat.succ_le_succ_sqrt 2020-12-01 23:23:54 9a4ed2a refactor(*): Add `_injective` alongside `_inj` lemmas (#5150) This adds four new `injective` lemmas: * `list.append_right_injective` * `list.append_left_injective` * `sub_right_injective` * `sub_left_injective` It also replaces as many `*_inj` lemmas as possible with an implementation of `*_injective.eq_iff`, to make it clear that the lemmas are just aliases of each other. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem sub_left_injective + theorem sub_right_injective Modified src/algebra/group/defs.lean Modified src/data/fin.lean Modified src/data/list/basic.lean + theorem list.append_left_injective + theorem list.append_right_injective 2020-12-01 23:23:52 c2b7d23 chore(category_theory/limits): separate regular and normal monos (#5149) This separates the file `regular_mono` into `regular_mono` and `normal_mono`: mostly this simplifies the import graph, but also this has the advantage that to use things about kernel pairs it's no longer necessary to import things about zero objects (I kept changing equalizers and using the changes in a file about monads which imported kernel pairs, and it was very slow because of zero objects) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/non_preadditive.lean Added src/category_theory/limits/shapes/normal_mono.lean + def category_theory.equivalence_reflects_normal_epi + def category_theory.equivalence_reflects_normal_mono + def category_theory.normal_epi.desc' + def category_theory.normal_mono.lift' + def category_theory.normal_of_is_pullback_fst_of_normal + def category_theory.normal_of_is_pullback_snd_of_normal + def category_theory.normal_of_is_pushout_fst_of_normal + def category_theory.normal_of_is_pushout_snd_of_normal Modified src/category_theory/limits/shapes/regular_mono.lean - def category_theory.equivalence_reflects_normal_epi - def category_theory.equivalence_reflects_normal_mono - def category_theory.normal_epi.desc' - def category_theory.normal_mono.lift' - def category_theory.normal_of_is_pullback_fst_of_normal - def category_theory.normal_of_is_pullback_snd_of_normal - def category_theory.normal_of_is_pushout_fst_of_normal - def category_theory.normal_of_is_pushout_snd_of_normal 2020-12-01 20:05:02 6c456e3 feat(linear_algebra/multilinear): Add dom_dom_congr (#5136) ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- theorem dite_comp_equiv_update + theorem function.update_apply_equiv_apply + theorem function.update_comp_equiv Modified src/linear_algebra/multilinear.lean + def multilinear_map.dom_dom_congr 2020-12-01 20:05:00 41e0903 feat(category_theory/limits/preserves): preserving equalizers (#5044) Constructions and lemmas about preserving equalizers ESTIMATED CHANGES Added src/category_theory/limits/preserves/shapes/equalizers.lean + def category_theory.limits.is_limit_fork_map_of_is_limit + def category_theory.limits.is_limit_map_cone_fork_equiv + def category_theory.limits.is_limit_of_has_equalizer_of_preserves_limit + def category_theory.limits.is_limit_of_is_limit_fork_map + def category_theory.limits.preserves_equalizer.iso + theorem category_theory.limits.preserves_equalizer.iso_hom + def category_theory.limits.preserves_equalizer.of_iso_comparison Modified src/category_theory/limits/shapes/equalizers.lean 2020-12-01 16:14:24 2a68477 chore(algebra/group/basic): Add eq_one_iff_eq_one_of_mul_eq_one (#5169) ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem eq_one_iff_eq_one_of_mul_eq_one 2020-12-01 16:14:22 24596ca feat(tactic/ring_exp): handle `nat.succ p` as `p + 1` (#5166) Fixes: #5157 This PR adds a `rewrite` operation to `ring_exp`, which takes a normalized `p' : ex sum` and a proof that `p = p'.orig`, and shows `p` also normalizes to `p'.pretty`. The only use currently is `nat.succ`. If we still had `nat.has_pow`, the same function could have handled rewriting from `nat.has_pow` to `monoid.has_pow`. ESTIMATED CHANGES Modified src/tactic/ring_exp.lean Modified test/ring_exp.lean 2020-12-01 16:14:20 9e78823 feat(ring_theory/perfection): perfection and tilt (#5032) - [x] depends on: #5132 ESTIMATED CHANGES Modified docs/references.bib Added src/ring_theory/perfection.lean + theorem mod_p.mul_ne_zero_of_pow_p_ne_zero + theorem mod_p.pre_val_add + theorem mod_p.pre_val_eq_zero + theorem mod_p.pre_val_mk + theorem mod_p.pre_val_mul + theorem mod_p.pre_val_zero + theorem mod_p.v_p_lt_pre_val + theorem mod_p.v_p_lt_val + def mod_p + def monoid.perfection + theorem pre_tilt.coeff_nat_find_add_ne_zero + theorem pre_tilt.map_eq_zero + theorem pre_tilt.val_aux_add + theorem pre_tilt.val_aux_eq + theorem pre_tilt.val_aux_mul + theorem pre_tilt.val_aux_one + theorem pre_tilt.val_aux_zero + def pre_tilt + def ring.perfection.coeff + theorem ring.perfection.coeff_add_ne_zero + theorem ring.perfection.coeff_frobenius + theorem ring.perfection.coeff_ne_zero_of_le + theorem ring.perfection.coeff_pow_p + theorem ring.perfection.coeff_pth_root + theorem ring.perfection.ext + theorem ring.perfection.frobenius_pth_root + def ring.perfection.pth_root + theorem ring.perfection.pth_root_frobenius + def ring.perfection + def semiring.perfection + def tilt 2020-12-01 13:25:41 b7649bc doc(linear_algebra/determinant): Add a reference to is_basis.det (#5167) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean 2020-12-01 13:25:39 c088f65 chore(data/equiv/perm): Move around lemmas about perm and swap (#5153) Only a very small fraction of `data/equiv/basic` needs knowledge of groups, moving out `perm_group` lets us cut the dependency. The new `perm_group` file is then a good place for some of the lemmas in `group_theory/perm/sign`, especially those which just restate `equiv` lemmas in terms of `*` and `⁻¹` instead of `.trans` and `.symm`. This moves a few lemmas about swap out of the `equiv.perm` namespace and into `equiv`, since `equiv.swap` is also in that namespace. ESTIMATED CHANGES Modified src/category_theory/graded_object.lean Modified src/data/equiv/basic.lean - theorem equiv.perm.apply_inv_self - theorem equiv.perm.coe_mul - theorem equiv.perm.coe_one - theorem equiv.perm.inv_apply_self - theorem equiv.perm.inv_def - theorem equiv.perm.mul_apply - theorem equiv.perm.mul_def - theorem equiv.perm.one_apply - theorem equiv.perm.one_def - theorem equiv.swap_inv - theorem equiv.swap_mul_self Modified src/data/equiv/mul_add.lean Added src/group_theory/perm/basic.lean + theorem equiv.mul_swap_eq_swap_mul + theorem equiv.perm.apply_inv_self + theorem equiv.perm.coe_mul + theorem equiv.perm.coe_one + theorem equiv.perm.eq_inv_iff_eq + theorem equiv.perm.inv_apply_self + theorem equiv.perm.inv_def + theorem equiv.perm.inv_eq_iff_eq + theorem equiv.perm.mul_apply + theorem equiv.perm.mul_def + theorem equiv.perm.one_apply + theorem equiv.perm.one_def + theorem equiv.swap_inv + theorem equiv.swap_mul_eq_iff + theorem equiv.swap_mul_eq_mul_swap + theorem equiv.swap_mul_involutive + theorem equiv.swap_mul_self + theorem equiv.swap_mul_self_mul + theorem equiv.swap_mul_swap_mul_swap Modified src/group_theory/perm/sign.lean - theorem equiv.perm.eq_inv_iff_eq - theorem equiv.perm.inv_eq_iff_eq - theorem equiv.perm.mul_swap_eq_swap_mul - theorem equiv.perm.swap_mul_eq_iff - theorem equiv.perm.swap_mul_eq_mul_swap - theorem equiv.perm.swap_mul_involutive - theorem equiv.perm.swap_mul_self_mul - theorem equiv.perm.swap_mul_swap_mul_swap Modified src/logic/embedding.lean 2020-12-01 13:25:37 7188eae feat(linear_algebra): Add alternating multilinear maps (#5102) ESTIMATED CHANGES Added src/linear_algebra/alternating.lean + theorem alternating_map.add_apply + theorem alternating_map.coe_inj + theorem alternating_map.coe_mk + theorem alternating_map.coe_multilinear_map + theorem alternating_map.coe_multilinear_map_mk + theorem alternating_map.congr_arg + theorem alternating_map.congr_fun + theorem alternating_map.ext + theorem alternating_map.ext_iff + theorem alternating_map.map_add + theorem alternating_map.map_add_swap + theorem alternating_map.map_congr_perm + theorem alternating_map.map_eq_zero_of_eq + theorem alternating_map.map_perm + theorem alternating_map.map_smul + theorem alternating_map.map_sub + theorem alternating_map.map_swap + theorem alternating_map.map_swap_add + theorem alternating_map.map_update_self + theorem alternating_map.map_update_update + theorem alternating_map.neg_apply + theorem alternating_map.smul_apply + theorem alternating_map.to_fun_eq_coe + theorem alternating_map.to_multilinear_map_eq_coe + theorem alternating_map.zero_apply + structure alternating_map 2020-12-01 10:59:06 ca3351f feat(rat/{basic,floor}) add floor lemmas (#5148) ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.exists_eq_mul_div_num_and_eq_mul_div_denom Modified src/data/rat/floor.lean + theorem int.mod_nat_eq_sub_mul_floor_rat_div + theorem nat.coprime_sub_mul_floor_rat_div_of_coprime + theorem rat.floor_int_div_nat_eq_div + theorem rat.fract_inv_num_lt_num_of_pos + theorem rat.num_lt_succ_floor_mul_denom 2020-12-01 08:49:42 2b074be feat(algebra/lie/basic): Define lattice structure for `lie_submodule`s (#5146) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_submodule.Inf_coe + theorem lie_submodule.Inf_coe_to_submodule + theorem lie_submodule.Inf_glb + theorem lie_submodule.add_eq_sup + theorem lie_submodule.bot_coe + theorem lie_submodule.coe_injective + theorem lie_submodule.coe_to_submodule + theorem lie_submodule.ext + theorem lie_submodule.le_def + theorem lie_submodule.mem_bot + theorem lie_submodule.mem_carrier + theorem lie_submodule.mem_top + theorem lie_submodule.top_coe +/- structure lie_submodule Modified src/algebra/module/submodule.lean + theorem submodule.mem_carrier 2020-12-01 05:46:04 a883152 doc(data/mv_polynomial/basic): Fix documentation of mv_polynomial.monomial (#5160) The documenting comment for this function was obviously lifted from the single variable polynomial version, and did not make sense. I'm not sure if this is the right comment, but it is at least better to what it was before. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2020-12-01 01:20:08 b846aa5 chore(scripts): update nolints.txt (#5158) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-30 18:13:09 c3f4d1b refactor(combinatorics/simple_graph): move simple graph files to their own folder (#5154) Move the files into one folder with the goal of integrating material from the branch [simple_graphs2](https://github.com/leanprover-community/mathlib/tree/simple_graphs2) ESTIMATED CHANGES Modified archive/100-theorems-list/83_friendship_graphs.lean Renamed src/combinatorics/adj_matrix.lean to src/combinatorics/simple_graph/adj_matrix.lean Renamed src/combinatorics/simple_graph.lean to src/combinatorics/simple_graph/basic.lean 2020-11-30 12:04:56 e3a699e feat(linear_algebra/determinant): Show that the determinant is a multilinear map (#5142) ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + def matrix.det_row_multilinear 2020-11-30 10:52:36 9f955fe feat(ring_theory/integral_closure): Cleanup interface for ring_hom.is_integral (#5144) ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean - theorem is_integral_of_is_integral_mul_unit' - theorem is_integral_of_surjective' - theorem is_integral_quotient_of_is_integral' - theorem is_integral_tower_bot_of_is_integral' + theorem ring_hom.is_integral_add + theorem ring_hom.is_integral_map + theorem ring_hom.is_integral_mul + theorem ring_hom.is_integral_neg + theorem ring_hom.is_integral_of_is_integral_mul_unit + theorem ring_hom.is_integral_of_mem_closure + theorem ring_hom.is_integral_of_surjective + theorem ring_hom.is_integral_one + theorem ring_hom.is_integral_quotient_of_is_integral + theorem ring_hom.is_integral_sub + theorem ring_hom.is_integral_tower_bot_of_is_integral +/- theorem ring_hom.is_integral_trans + theorem ring_hom.is_integral_zero Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean - theorem is_integral_elem_localization_at_leading_coeff' + theorem ring_hom.is_integral_elem_localization_at_leading_coeff 2020-11-29 02:33:01 1f1ba58 feat(category_theory/limits): reflexive coequalizers (#5123) Adds reflexive coequalizers. These are useful for #5118 as well as for some monadicity theorems and other results. ESTIMATED CHANGES Added src/category_theory/limits/shapes/reflexive.lean + theorem category_theory.is_coreflexive_pair.mk' + theorem category_theory.is_coreflexive_pair.swap + theorem category_theory.is_kernel_pair.is_reflexive_pair + theorem category_theory.is_reflexive_pair.mk' + theorem category_theory.is_reflexive_pair.swap + theorem category_theory.left_comp_retraction + theorem category_theory.limits.has_coequalizer_of_common_section + theorem category_theory.limits.has_equalizer_of_common_retraction + theorem category_theory.right_comp_retraction + theorem category_theory.section_comp_left + theorem category_theory.section_comp_right 2020-11-29 01:19:16 5866812 chore(scripts): update nolints.txt (#5143) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-28 21:16:44 fe7b407 feat(tactic/explode): display exploded proofs as widgets (#4718) #4094. This is a more advanced version of the expandable `#explode` diagram implemented in the [Mathematica-Lean Link](http://robertylewis.com/leanmm/lean_mm.pdf). The widget adds features such as jumping to definitions and exploding constants occurring in a proof term subsequently. Note that right now the [\](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) tag simply hides the information. "Exploding on request" requires a bit more refactoring on `#explode` itself and is still on the way. Example usage:`#explode_widget iff_true_intro`. ![explode_widget](https://user-images.githubusercontent.com/22624072/96630999-7cb62780-1361-11eb-977d-3eb34039ab41.png) ESTIMATED CHANGES Modified src/tactic/explode.lean Added src/tactic/explode_widget.lean 2020-11-28 19:38:23 ec82227 chore(group_theory/perm/sign): Add swap_mul_involutive (#5141) This is just a bundled version of swap_mul_self_mul ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean + theorem equiv.perm.swap_mul_involutive 2020-11-28 17:42:18 916bf74 feat(category_theory/limits): images, equalizers and pullbacks imply functorial images (#5140) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean 2020-11-28 17:42:16 b1d8b89 chore(algebra/char_p): refactor char_p (#5132) ESTIMATED CHANGES Renamed src/algebra/char_p.lean to src/algebra/char_p/basic.lean +/- theorem add_pow_char +/- theorem add_pow_char_of_commute +/- theorem add_pow_char_pow +/- theorem add_pow_char_pow_of_commute +/- theorem char_p.cast_card_eq_zero + theorem char_p.congr + theorem ring_char.dvd +/- theorem ring_char.eq + theorem ring_char.eq_iff + theorem ring_char.of_eq +/- theorem ring_char.spec Added src/algebra/char_p/default.lean Added src/algebra/char_p/pi.lean Added src/algebra/char_p/quotient.lean + theorem char_p.quotient Added src/algebra/char_p/subring.lean Modified src/algebra/invertible.lean Modified src/data/matrix/char_p.lean Modified src/data/zmod/basic.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/perfect_closure.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/polynomial/basic.lean 2020-11-28 16:26:44 137163a feat(analysis/normed_space/dual): Fréchet-Riesz representation for the dual of a Hilbert space (#4379) This PR defines `to_dual` which maps an element `x` of an inner product space to `λ y, ⟪x, y⟫`. We also give the Fréchet-Riesz representation, which states that every element of the dual of a Hilbert space `E` has the form `λ u, ⟪x, u⟫` for some `x : E`. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/references.bib Modified docs/undergrad.yaml Modified src/analysis/normed_space/bounded_linear_maps.lean + def continuous_linear_equiv.of_isometry + theorem linear_map.norm_apply_of_isometry Modified src/analysis/normed_space/dual.lean + def inner_product_space.isometric.to_dual + theorem inner_product_space.ker_to_dual_map + theorem inner_product_space.norm_to_dual'_apply + theorem inner_product_space.norm_to_dual_apply + theorem inner_product_space.norm_to_dual_map_apply + theorem inner_product_space.norm_to_dual_symm_apply + theorem inner_product_space.range_to_dual_map + def inner_product_space.to_dual' + theorem inner_product_space.to_dual'_apply + theorem inner_product_space.to_dual'_isometry + theorem inner_product_space.to_dual'_surjective + def inner_product_space.to_dual + theorem inner_product_space.to_dual_apply + theorem inner_product_space.to_dual_eq_iff_eq' + theorem inner_product_space.to_dual_eq_iff_eq + def inner_product_space.to_dual_map + theorem inner_product_space.to_dual_map_apply + theorem inner_product_space.to_dual_map_eq_iff_eq + theorem inner_product_space.to_dual_map_injective + theorem inner_product_space.to_dual_map_isometry Modified src/analysis/normed_space/inner_product.lean +/- def sesq_form_of_inner Modified src/analysis/normed_space/operator_norm.lean + theorem add_monoid_hom.isometry_of_norm Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.ring_equiv_apply 2020-11-28 01:26:41 801dea9 chore(scripts): update nolints.txt (#5139) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-27 23:09:55 ba43f6f doc(field_theory/finite/basic): update doc-strings (#5134) The documentation mentions `finite_field.is_cyclic` that does not exist (probably replaced by `subgroup_units_cyclic` in `ring_theory.integral_domain`). ESTIMATED CHANGES Modified src/field_theory/finite/basic.lean 2020-11-27 23:09:53 b6f2309 chore({ring,group}_theory/free_*): Add of_injective (#5131) This adds: * `free_abelian_group.of_injective` * `free_ring.of_injective` * `free_comm_ring.of_injective` * `free_algebra.of_injective` following up from dcbec39a5bf9af5c6e065eea185f8776ac537d3b ESTIMATED CHANGES Modified src/algebra/free_algebra.lean + theorem free_algebra.ι_injective Modified src/group_theory/free_abelian_group.lean + theorem free_abelian_group.of_injective Modified src/ring_theory/free_comm_ring.lean + theorem free_comm_ring.of_injective Modified src/ring_theory/free_ring.lean + theorem free_ring.of_injective 2020-11-27 21:26:04 4a153ed feat(ring_theory/polynomials/cyclotomic): add lemmas about cyclotomic polynomials (#5122) Two lemmas about cyclotomic polynomials: `cyclotomic_of_prime` is the explicit formula for `cyclotomic p R` when `p` is prime; `cyclotomic_coeff_zero` shows that the constant term of `cyclotomic n R` is `1` if `2 ≤ n`. I will use this to prove that there are infinitely many prime congruent to `1` modulo `n`, for all `n`. ESTIMATED CHANGES Modified src/algebra/polynomial/big_operators.lean + theorem polynomial.coeff_zero_prod Modified src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.cyclotomic_coeff_zero + theorem polynomial.cyclotomic_eq_geom_series + theorem polynomial.eq_cyclotomic_iff 2020-11-27 21:26:02 14f2096 feat(ring_theory/jacobson): generalized nullstellensatz - polynomials over a Jacobson ring are Jacobson (#4962) The main statements are `is_jacobson_polynomial_iff_is_jacobson ` and `is_jacobson_mv_polynomial`, saying that `polynomial` and `mv_polynomial` both preserve jacobson property of rings. This second statement is in some sense a general form of the classical nullstellensatz, since in a Jacobson ring the intersection of maximal ideals containing an ideal will be exactly the radical of that ideal (and so I(V(I)) = I.radical). ESTIMATED CHANGES Modified src/data/polynomial/eval.lean Modified src/ring_theory/jacobson.lean + theorem ideal.is_jacobson_mv_polynomial_fin + theorem ideal.is_jacobson_of_is_integral' + theorem ideal.is_jacobson_polynomial_iff_is_jacobson + theorem ideal.jacobson_bot_of_integral_localization Modified src/ring_theory/jacobson_ideal.lean + theorem ideal.jacobson_bot_polynomial_le_Inf_map_maximal + theorem ideal.jacobson_bot_polynomial_of_jacobson_bot + theorem ideal.map_jacobson_of_bijective + theorem ideal.mem_jacobson_bot 2020-11-27 18:30:26 8d3e93f chore(category_theory/limits): golf a proof (#5133) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean 2020-11-27 18:30:24 fb70419 feat(algebra/group/basic): simplify composed assoc ops (#5031) New lemmas: `comp_assoc_left` `comp_assoc_right` `comp_mul_left` `comp_add_left` `comp_mul_right` `comp_add_right` ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem comp_assoc_left + theorem comp_assoc_right + theorem comp_mul_left + theorem comp_mul_right 2020-11-27 18:30:22 73a2fd3 feat(ring_theory/witt_vector/init_tail): adding disjoint witt vectors (#4835) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/init_tail.lean + theorem witt_vector.coeff_add_of_disjoint + theorem witt_vector.coeff_select + def witt_vector.init + theorem witt_vector.init_add + theorem witt_vector.init_add_tail + theorem witt_vector.init_init + theorem witt_vector.init_is_poly + theorem witt_vector.init_mul + theorem witt_vector.init_neg + theorem witt_vector.init_sub + def witt_vector.select + theorem witt_vector.select_add_select_not + theorem witt_vector.select_is_poly + def witt_vector.select_poly + def witt_vector.tail 2020-11-27 15:35:32 396487f feat(topology/separation): Adds t2_space instances for disjoint unions (sums and sigma types). (#5113) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.preimage_inl_range_inr + theorem set.preimage_inr_range_inl + theorem set.range_inl_inter_range_inr +/- theorem set.range_inl_union_range_inr + theorem set.range_inr_inter_range_inl + theorem set.range_inr_union_range_inl Modified src/topology/constructions.lean + theorem is_open_range_inl + theorem is_open_range_inr Modified src/topology/separation.lean + theorem separated_by_continuous + theorem separated_by_open_embedding 2020-11-27 14:25:59 876481e feat(field_theory/separable): add separable_of_X_pow_sub_C and squarefree_of_X_pow_sub_C (#5052) I've added that `X ^ n - a` is separable, and so `squarefree`. ESTIMATED CHANGES Modified src/field_theory/separable.lean + theorem polynomial.separable_X_pow_sub_C + theorem polynomial.squarefree_X_pow_sub_C 2020-11-27 14:25:57 c82b708 feat(category_theory/sites): the canonical topology on a category (#4928) Explicitly construct the finest topology for which the given presheaves are sheaves, and specialise to construct the canonical topology. Also one or two tiny changes which should have been there before ESTIMATED CHANGES Added src/category_theory/sites/canonical.lean + def category_theory.sheaf.canonical_topology + def category_theory.sheaf.finest_topology + def category_theory.sheaf.finest_topology_single + theorem category_theory.sheaf.is_sheaf_for_bind + theorem category_theory.sheaf.is_sheaf_for_trans + theorem category_theory.sheaf.is_sheaf_of_representable + theorem category_theory.sheaf.is_sheaf_yoneda_obj + theorem category_theory.sheaf.le_finest_topology + theorem category_theory.sheaf.sheaf_for_finest_topology + theorem category_theory.sheaf.subcanonical.is_sheaf_of_representable + theorem category_theory.sheaf.subcanonical.of_yoneda_is_sheaf + def category_theory.sheaf.subcanonical Modified src/category_theory/sites/sheaf.lean Modified src/category_theory/sites/sieves.lean 2020-11-27 11:58:59 0ac414a feat(data/fin): Add pred_{le,lt}_pred_iff (#5121) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.pred_le_pred_iff + theorem fin.pred_lt_pred_iff 2020-11-27 11:58:57 8acd296 chore(topology/path_connected): move `proj_Icc` to a separate file (#5120) Also use `min` and `max` in the definition to make, e.g., the proof of the continuity trivial. ESTIMATED CHANGES Added src/data/set/intervals/proj_Icc.lean + def set.Icc_extend + theorem set.Icc_extend_coe + theorem set.Icc_extend_left + theorem set.Icc_extend_monotone + theorem set.Icc_extend_of_le_left + theorem set.Icc_extend_of_mem + theorem set.Icc_extend_of_right_le + theorem set.Icc_extend_range + theorem set.Icc_extend_right + theorem set.monotone_proj_Icc + def set.proj_Icc + theorem set.proj_Icc_coe + theorem set.proj_Icc_left + theorem set.proj_Icc_of_le_left + theorem set.proj_Icc_of_mem + theorem set.proj_Icc_of_right_le + theorem set.proj_Icc_right + theorem set.proj_Icc_surj_on + theorem set.proj_Icc_surjective + theorem set.range_proj_Icc Added src/topology/algebra/ordered/proj_Icc.lean + theorem continuous.Icc_extend + theorem continuous_Icc_extend_iff + theorem continuous_proj_Icc + theorem quotient_map_proj_Icc Modified src/topology/basic.lean + theorem topological_space_eq_iff Modified src/topology/maps.lean + theorem quotient_map_iff Modified src/topology/path_connected.lean - def I_extend - theorem I_extend_extends - theorem I_extend_one - theorem I_extend_range - theorem I_extend_zero - theorem continuous.I_extend - theorem continuous_proj_I + theorem path.coe_mk +/- def path.extend - theorem path.extend_le_zero + theorem path.extend_of_le_zero + theorem path.extend_of_one_le - theorem path.extend_one_le - def proj_I - theorem proj_I_I - theorem proj_I_one - theorem proj_I_zero - theorem range_proj_I - theorem surjective_proj_I 2020-11-27 09:16:37 238c58c chore(category_theory/limits): golf a proof (#5130) ESTIMATED CHANGES Modified src/category_theory/arrow.lean +/- theorem category_theory.arrow.w Modified src/category_theory/limits/shapes/images.lean 2020-11-27 09:16:35 ff2aeae feat(logic/relation): trans_gen closure (#5129) Mechanical conversion of `refl_trans_gen` lemmas for just `trans_gen`. ESTIMATED CHANGES Modified src/logic/relation.lean + theorem relation.trans_gen.trans_gen_closed + theorem relation.trans_gen.trans_gen_eq_self + theorem relation.trans_gen.trans_gen_idem + theorem relation.trans_gen.trans_gen_lift' + theorem relation.trans_gen.trans_gen_lift + theorem relation.trans_gen.transitive_trans_gen 2020-11-27 09:16:33 af7ba87 feat(data/polynomial/eval): eval₂ f x (p * X) = eval₂ f x p * x (#5110) Also generalize `polynomial.eval₂_mul_noncomm` and `polynomial.eval₂_list_prod_noncomm`. This PR uses `add_monoid_algebra.lift_nc` to golf some proofs about `eval₂`. I'm not ready to replace the definition of `eval₂` yet (e.g., because it breaks dot notation everywhere), so I added a lemma `eval₂_eq_lift_nc` instead. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.range_single_subset + theorem finsupp.single_apply_mem Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean + theorem polynomial.coeff_X_of_ne_one Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_X_mul + theorem polynomial.eval₂_eq_lift_nc +/- theorem polynomial.eval₂_list_prod_noncomm + theorem polynomial.eval₂_mul_C' + theorem polynomial.eval₂_mul_X +/- theorem polynomial.eval₂_mul_noncomm +/- def polynomial.eval₂_ring_hom' Modified src/linear_algebra/eigenspace.lean 2020-11-27 09:16:31 8e09111 chore(order/basic): add `strict_mono_??cr_on.dual` and `dual_right` (#5107) We can use these to avoid `@strict_mono_??cr_on (order_dual α) (order_dual β)`. ESTIMATED CHANGES Modified src/order/basic.lean +/- theorem injective_of_lt_imp_ne 2020-11-27 09:16:29 a106102 chore(category_theory/iso): golf and name consistency (#5096) Minor changes: makes the names consistent and simplifies proofs ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean +/- theorem category_theory.is_iso.comp_inv_eq - theorem category_theory.is_iso.comp_is_iso_eq + theorem category_theory.is_iso.eq_comp_inv 2020-11-27 09:16:27 d078950 feat(linear_algebra/bilinear_form): equivalence with matrices, given a basis (#5095) This PR defines the equivalence between bilinear forms on an arbitrary module and matrices, given a basis of that module. It updates the existing equivalence between bilinear forms on `n → R` so that the overall structure of the file matches that of `linear_algebra.matrix`, i.e. there are two pairs of equivs, one for `n → R` and one for any `M` with a basis. Changes: - `bilin_form_equiv_matrix`, `bilin_form.to_matrix` and `matrix.to_bilin_form` have been consolidated as linear equivs `bilin_form.to_matrix'` and `matrix.to_bilin'`. Other declarations have been renamed accordingly. - `quadratic_form.to_matrix` and `matrix.to_quadratic_form` are renamed by analogy to `quadratic_form.to_matrix'` and `matrix.to_quadratic_form'` - replaced some `classical.decidable_eq` in lemma statements with instance parameters, because otherwise we have to use `congr` to apply these lemmas when a `decidable_eq` instance is available Additions: - `bilin_form.to_matrix` and `matrix.to_bilin`: given a basis, the equivalences between bilinear forms on any module and matrices - lemmas from `to_matrix'` and `to_bilin'` have been ported to `to_matrix` and `to_bilin` - `bilin_form.congr`, a dependency of `bilin_form.to_matrix`, states that `bilin_form R M` and `bilin_form R M'` are linearly equivalent if `M` and `M'` are - assorted lemmas involving `std_basis` Deletions: - `bilin_form.to_matrix_smul`: use `linear_equiv.map_smul` instead ESTIMATED CHANGES Modified src/linear_algebra/basis.lean +/- theorem pi.is_basis_fun + theorem pi.is_basis_fun_repr +/- theorem pi.is_basis_fun₀ +/- theorem pi.is_basis_std_basis +/- theorem pi.linear_independent_std_basis Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.comp_comp + theorem bilin_form.comp_congr + def bilin_form.congr + theorem bilin_form.congr_apply + theorem bilin_form.congr_comp + theorem bilin_form.congr_symm + theorem bilin_form.ext_basis + theorem bilin_form.mul_to_matrix' + theorem bilin_form.mul_to_matrix'_mul +/- theorem bilin_form.mul_to_matrix +/- theorem bilin_form.mul_to_matrix_mul + theorem bilin_form.sum_repr_mul_repr_mul + def bilin_form.to_matrix' + theorem bilin_form.to_matrix'_apply + theorem bilin_form.to_matrix'_comp + theorem bilin_form.to_matrix'_comp_left + theorem bilin_form.to_matrix'_comp_right + theorem bilin_form.to_matrix'_mul + theorem bilin_form.to_matrix'_symm + theorem bilin_form.to_matrix'_to_bilin' - def bilin_form.to_matrix +/- theorem bilin_form.to_matrix_apply + def bilin_form.to_matrix_aux + theorem bilin_form.to_matrix_aux_std_basis +/- theorem bilin_form.to_matrix_comp +/- theorem bilin_form.to_matrix_comp_left +/- theorem bilin_form.to_matrix_comp_right + theorem bilin_form.to_matrix_is_basis_fun +/- theorem bilin_form.to_matrix_mul - theorem bilin_form.to_matrix_smul + theorem bilin_form.to_matrix_symm + theorem bilin_form.to_matrix_to_bilin - def bilin_form.to_matrixₗ - def bilin_form_equiv_matrix + theorem bilinear_form.to_matrix_aux_eq + theorem is_adjoint_pair_to_bilin' + theorem is_adjoint_pair_to_bilin + theorem is_basis.equiv_fun_symm_std_basis + def matrix.to_bilin' + theorem matrix.to_bilin'_apply + def matrix.to_bilin'_aux + theorem matrix.to_bilin'_aux_eq + theorem matrix.to_bilin'_aux_std_basis + theorem matrix.to_bilin'_comp + theorem matrix.to_bilin'_std_basis + theorem matrix.to_bilin'_symm + theorem matrix.to_bilin'_to_matrix' + theorem matrix.to_bilin_apply + theorem matrix.to_bilin_comp - def matrix.to_bilin_form - theorem matrix.to_bilin_form_apply - theorem matrix.to_bilin_form_comp - def matrix.to_bilin_formₗ + theorem matrix.to_bilin_is_basis_fun + theorem matrix.to_bilin_symm + theorem matrix.to_bilin_to_matrix - theorem matrix_is_adjoint_pair_bilin_form + theorem to_bilin'_aux_to_matrix_aux - theorem to_bilin_form_to_matrix - theorem to_matrix_to_bilin_form Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/quadratic_form.lean + def matrix.to_quadratic_form' - def matrix.to_quadratic_form +/- def quadratic_form.discr + def quadratic_form.to_matrix' + theorem quadratic_form.to_matrix'_comp + theorem quadratic_form.to_matrix'_smul - def quadratic_form.to_matrix - theorem quadratic_form.to_matrix_comp - theorem quadratic_form.to_matrix_smul 2020-11-27 09:16:24 c06c616 feat(number_theory/arithmetic_function): Moebius inversion (#5047) Changes the way that zeta works with coercion Proves Möbius inversion for functions to a general `comm_ring` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.sum_int_cast Modified src/number_theory/arithmetic_function.lean +/- theorem nat.arithmetic_function.coe_coe + theorem nat.arithmetic_function.coe_moebius_mul_coe_zeta + theorem nat.arithmetic_function.coe_mul_zeta_apply + theorem nat.arithmetic_function.coe_zeta_mul_apply + theorem nat.arithmetic_function.coe_zeta_mul_coe_moebius + theorem nat.arithmetic_function.coe_zeta_mul_moebius + theorem nat.arithmetic_function.coe_zeta_unit +/- theorem nat.arithmetic_function.int_coe_apply + theorem nat.arithmetic_function.int_coe_int + theorem nat.arithmetic_function.inv_zeta_unit +/- theorem nat.arithmetic_function.is_multiplicative_zeta + theorem nat.arithmetic_function.moebius_mul_coe_zeta - theorem nat.arithmetic_function.moebius_mul_zeta +/- theorem nat.arithmetic_function.mul_zeta_apply +/- theorem nat.arithmetic_function.nat_coe_apply + theorem nat.arithmetic_function.nat_coe_nat +/- theorem nat.arithmetic_function.pmul_zeta + theorem nat.arithmetic_function.sum_eq_iff_sum_moebius_eq +/- def nat.arithmetic_function.zeta +/- theorem nat.arithmetic_function.zeta_apply +/- theorem nat.arithmetic_function.zeta_apply_ne +/- theorem nat.arithmetic_function.zeta_mul_apply - theorem nat.arithmetic_function.zeta_mul_moebius +/- theorem nat.arithmetic_function.zeta_pmul + def nat.arithmetic_function.zeta_unit 2020-11-27 09:16:21 2bda184 feat(field_theory): Prove the Galois correspondence (#4786) The proof leverages existing results from field_theory/fixed.lean and field_theory/primitive_element.lean. We define Galois as normal + separable. Proving the various equivalent characterizations of Galois extensions is yet to be done. ESTIMATED CHANGES Modified docs/overview.yaml Modified src/algebra/algebra/basic.lean Modified src/data/fintype/basic.lean Modified src/data/set/basic.lean + theorem set.eq_of_inclusion_surjective Modified src/field_theory/adjoin.lean + theorem intermediate_field.bot_equiv_def + def intermediate_field.subalgebra.equiv_of_eq + theorem intermediate_field.top_equiv_def Modified src/field_theory/fixed.lean + theorem fixed_points.to_alg_hom_bijective + def fixed_points.to_alg_hom_equiv Added src/field_theory/galois.lean + theorem intermediate_field.findim_fixed_field_eq_card + def intermediate_field.fixed_field + def intermediate_field.fixing_subgroup + def intermediate_field.fixing_subgroup_equiv + theorem intermediate_field.fixing_subgroup_fixed_field + theorem intermediate_field.le_iff_le + theorem is_galois.card_aut_eq_findim + theorem is_galois.card_fixing_subgroup_eq_findim + theorem is_galois.fixed_field_fixing_subgroup + def is_galois.galois_coinsertion_intermediate_field_subgroup + def is_galois.galois_insertion_intermediate_field_subgroup + theorem is_galois.integral + theorem is_galois.intermediate_field.adjoin_simple.card_aut_eq_findim + def is_galois.intermediate_field_equiv_subgroup + theorem is_galois.is_separable_splitting_field + theorem is_galois.normal + theorem is_galois.separable + def is_galois Modified src/field_theory/normal.lean + theorem normal.tower_top_of_normal Modified src/linear_algebra/finite_dimensional.lean 2020-11-27 06:39:09 2f939e9 chore(data/equiv/basic): redefine `set.bij_on.equiv` (#5128) Now `set.bij_on.equiv` works for any `h : set.bij_on f s t`. The old behaviour can be achieved using `(equiv.set_univ _).symm.trans _`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/finset/sort.lean Modified src/data/set/function.lean + theorem set.bij_on.bijective 2020-11-27 06:39:07 4715d99 chore(data/set/function): add 3 trivial lemmas (#5127) ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.inj_on.eq_iff + theorem strict_mono.comp_strict_mono_incr_on + theorem strict_mono_incr_on.comp 2020-11-27 06:39:04 c1edbdd chore(data/complex/exponential): golf 2 proofs (#5126) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem abs_le_one_iff_mul_self_le_one Modified src/data/complex/exponential.lean 2020-11-27 06:39:02 cb9e5cf doc(data/equiv/basic): improve docstring of `equiv.sum_equiv_sigma_bool` (#5119) Also slightly improve defeq of the `to_fun` field by using `sum.elim` instead of a custom `match`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- def equiv.sum_equiv_sigma_bool 2020-11-27 06:39:00 d3cc993 chore(data/pprod): Add pprod.mk.eta (#5114) This is exactly the same as prod.mk.eta ESTIMATED CHANGES Added src/data/pprod.lean + theorem pprod.mk.eta 2020-11-27 04:12:29 2c5d4a3 chore(order/rel_iso): add a few lemmas (#5106) * add lemmas `order_iso.apply_eq_iff_eq` etc; * define `order_iso.symm`. ESTIMATED CHANGES Modified src/data/finsupp/lattice.lean Modified src/order/galois_connection.lean Modified src/order/rel_iso.lean + theorem order_embedding.le_map_sup + theorem order_embedding.map_inf_le + theorem order_iso.apply_eq_iff_eq + theorem order_iso.apply_le_apply + theorem order_iso.apply_lt_apply + theorem order_iso.apply_symm_apply + theorem order_iso.map_inf + theorem order_iso.map_sup + theorem order_iso.map_top + def order_iso.symm + theorem order_iso.symm_apply_apply - theorem rel_embedding.le_map_sup - theorem rel_embedding.map_inf_le - theorem rel_iso.map_inf - theorem rel_iso.map_sup - theorem rel_iso.map_top 2020-11-27 01:21:04 1a8089e chore(scripts): update nolints.txt (#5125) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-26 17:19:04 59717d6 chore(data/sum): Add trivial simp lemmas (#5112) ESTIMATED CHANGES Modified src/data/sum.lean + theorem sum.comp_elim + theorem sum.elim_comp_inl + theorem sum.elim_comp_inl_inr + theorem sum.elim_comp_inr + theorem sum.elim_inl_inr 2020-11-26 09:59:56 2d476e0 chore(data/equiv/basic): Add comp_swap_eq_update (#5091) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.comp_swap_eq_update + theorem equiv.swap_eq_update 2020-11-26 01:18:53 98ebe5a chore(scripts): update nolints.txt (#5117) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-25 16:13:58 6e301c7 chore(logic/function/basic): Add function.update_apply (#5093) This makes it easier to eliminate `dite`s in simple situations when only `ite` is needed. ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.update_apply 2020-11-25 15:09:50 81207e0 feat(algebra/triv_sq_zero_ext): trivial square-zero extension (#5109) ESTIMATED CHANGES Added src/algebra/triv_sq_zero_ext.lean + theorem triv_sq_zero_ext.ext + def triv_sq_zero_ext.fst + theorem triv_sq_zero_ext.fst_add + def triv_sq_zero_ext.fst_hom + theorem triv_sq_zero_ext.fst_inl + theorem triv_sq_zero_ext.fst_inr + theorem triv_sq_zero_ext.fst_mul + theorem triv_sq_zero_ext.fst_neg + theorem triv_sq_zero_ext.fst_one + theorem triv_sq_zero_ext.fst_smul + theorem triv_sq_zero_ext.fst_zero + def triv_sq_zero_ext.inl + theorem triv_sq_zero_ext.inl_add + theorem triv_sq_zero_ext.inl_fst_add_inr_snd_eq + def triv_sq_zero_ext.inl_hom + theorem triv_sq_zero_ext.inl_injective + theorem triv_sq_zero_ext.inl_mul + theorem triv_sq_zero_ext.inl_mul_inl + theorem triv_sq_zero_ext.inl_mul_inr + theorem triv_sq_zero_ext.inl_neg + theorem triv_sq_zero_ext.inl_one + theorem triv_sq_zero_ext.inl_zero + def triv_sq_zero_ext.inr + theorem triv_sq_zero_ext.inr_add + def triv_sq_zero_ext.inr_hom + theorem triv_sq_zero_ext.inr_injective + theorem triv_sq_zero_ext.inr_mul_inl + theorem triv_sq_zero_ext.inr_mul_inr + theorem triv_sq_zero_ext.inr_neg + theorem triv_sq_zero_ext.inr_smul + theorem triv_sq_zero_ext.inr_zero + def triv_sq_zero_ext.snd + theorem triv_sq_zero_ext.snd_add + theorem triv_sq_zero_ext.snd_inl + theorem triv_sq_zero_ext.snd_inr + theorem triv_sq_zero_ext.snd_mul + theorem triv_sq_zero_ext.snd_neg + theorem triv_sq_zero_ext.snd_one + theorem triv_sq_zero_ext.snd_smul + theorem triv_sq_zero_ext.snd_zero + def triv_sq_zero_ext 2020-11-25 11:39:21 4265f2c chore(data/int/basic): Add int.units_mul_self (#5101) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean Modified src/data/int/basic.lean + theorem int.units_coe_mul_self + theorem int.units_mul_self Modified src/linear_algebra/determinant.lean 2020-11-25 06:48:00 0324935 chore(data/equiv/basic): Add trivial simp lemma (#5100) With this in place, `⇑1 ∘ f` simplifies to `⇑f` ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.perm.coe_one +/- theorem equiv.perm.one_apply 2020-11-25 03:17:58 0020077 fix(algebra/ordered_group): remove workaround (#5103) The problem mentioned in the TODO has been solved so the workaround is no longer needed. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean - def ordered_comm_group.mk' Modified src/set_theory/game.lean 2020-11-25 01:28:51 83f293e chore(scripts): update nolints.txt (#5105) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-24 19:48:35 7e66984 fix(algebra/group_with_zero/power): remove duplicate lemmas (#5083) `pow_eq_zero` and `pow_eq_zero'` are syntactically equal, as are `pow_ne_zero` and `pow_ne_zero'`. ESTIMATED CHANGES Modified src/algebra/group_with_zero/power.lean - theorem pow_eq_zero' - theorem pow_ne_zero' Modified src/ring_theory/unique_factorization_domain.lean 2020-11-24 13:18:42 2ed4846 chore(linear_algebra/multilinear_map): Add boring coercion lemmas copied from ring_hom (#5099) ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.coe_inj + theorem multilinear_map.coe_mk + theorem multilinear_map.congr_arg + theorem multilinear_map.congr_fun + theorem multilinear_map.ext_iff + theorem multilinear_map.to_fun_eq_coe 2020-11-24 11:42:00 943b129 feat(analysis/special_functions/trigonometric): sin, cos, sinh, and cosh are infinitely smooth (#5090) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem complex.times_cont_diff_cos + theorem complex.times_cont_diff_cosh + theorem complex.times_cont_diff_sin + theorem complex.times_cont_diff_sinh + theorem fderiv_ccos + theorem fderiv_ccosh + theorem fderiv_cos + theorem fderiv_cosh + theorem fderiv_csin + theorem fderiv_csinh + theorem fderiv_sin + theorem fderiv_sinh + theorem fderiv_within_ccos + theorem fderiv_within_ccosh + theorem fderiv_within_cos + theorem fderiv_within_cosh + theorem fderiv_within_csin + theorem fderiv_within_csinh + theorem fderiv_within_sin + theorem fderiv_within_sinh + theorem has_fderiv_at.ccos + theorem has_fderiv_at.ccosh + theorem has_fderiv_at.cos + theorem has_fderiv_at.cosh + theorem has_fderiv_at.csin + theorem has_fderiv_at.csinh + theorem has_fderiv_at.sin + theorem has_fderiv_at.sinh + theorem has_fderiv_within_at.ccos + theorem has_fderiv_within_at.ccosh + theorem has_fderiv_within_at.cos + theorem has_fderiv_within_at.cosh + theorem has_fderiv_within_at.csin + theorem has_fderiv_within_at.csinh + theorem has_fderiv_within_at.sin + theorem has_fderiv_within_at.sinh +/- theorem measurable.ccos +/- theorem measurable.ccosh +/- theorem measurable.cos +/- theorem measurable.cosh +/- theorem measurable.csin +/- theorem measurable.csinh +/- theorem measurable.sin +/- theorem measurable.sinh + theorem real.times_cont_diff_cos + theorem real.times_cont_diff_cosh + theorem real.times_cont_diff_sin + theorem real.times_cont_diff_sinh + theorem times_cont_diff.ccos + theorem times_cont_diff.ccosh + theorem times_cont_diff.cos + theorem times_cont_diff.cosh + theorem times_cont_diff.csin + theorem times_cont_diff.csinh + theorem times_cont_diff.sin + theorem times_cont_diff.sinh + theorem times_cont_diff_at.ccos + theorem times_cont_diff_at.ccosh + theorem times_cont_diff_at.cos + theorem times_cont_diff_at.cosh + theorem times_cont_diff_at.csin + theorem times_cont_diff_at.csinh + theorem times_cont_diff_at.sin + theorem times_cont_diff_at.sinh + theorem times_cont_diff_on.ccos + theorem times_cont_diff_on.ccosh + theorem times_cont_diff_on.cos + theorem times_cont_diff_on.cosh + theorem times_cont_diff_on.csin + theorem times_cont_diff_on.csinh + theorem times_cont_diff_on.sin + theorem times_cont_diff_on.sinh + theorem times_cont_diff_within_at.ccos + theorem times_cont_diff_within_at.ccosh + theorem times_cont_diff_within_at.cos + theorem times_cont_diff_within_at.cosh + theorem times_cont_diff_within_at.csin + theorem times_cont_diff_within_at.csinh + theorem times_cont_diff_within_at.sin + theorem times_cont_diff_within_at.sinh 2020-11-24 09:15:42 fe4abe0 chore(algebra/lie/skew_adjoint): move logic for Lie algebras of skew-adjoint endomorphisms to own file (#5098) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean - theorem bilin_form.is_skew_adjoint_bracket - theorem matrix.is_skew_adjoint_bracket - theorem matrix.lie_transpose - theorem mem_skew_adjoint_matrices_lie_subalgebra - theorem mem_skew_adjoint_matrices_lie_subalgebra_unit_smul - def skew_adjoint_lie_subalgebra - def skew_adjoint_lie_subalgebra_equiv - theorem skew_adjoint_lie_subalgebra_equiv_apply - theorem skew_adjoint_lie_subalgebra_equiv_symm_apply - def skew_adjoint_matrices_lie_subalgebra - theorem skew_adjoint_matrices_lie_subalgebra_equiv_apply - def skew_adjoint_matrices_lie_subalgebra_equiv_transpose - theorem skew_adjoint_matrices_lie_subalgebra_equiv_transpose_apply Modified src/algebra/lie/classical.lean Added src/algebra/lie/skew_adjoint.lean + theorem bilin_form.is_skew_adjoint_bracket + theorem matrix.is_skew_adjoint_bracket + theorem matrix.lie_transpose + theorem mem_skew_adjoint_matrices_lie_subalgebra + theorem mem_skew_adjoint_matrices_lie_subalgebra_unit_smul + def skew_adjoint_lie_subalgebra + def skew_adjoint_lie_subalgebra_equiv + theorem skew_adjoint_lie_subalgebra_equiv_apply + theorem skew_adjoint_lie_subalgebra_equiv_symm_apply + def skew_adjoint_matrices_lie_subalgebra + theorem skew_adjoint_matrices_lie_subalgebra_equiv_apply + def skew_adjoint_matrices_lie_subalgebra_equiv_transpose + theorem skew_adjoint_matrices_lie_subalgebra_equiv_transpose_apply 2020-11-24 02:14:31 51e71e9 chore(scripts): update nolints.txt (#5097) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-23 23:33:18 64b3e52 feat(data/finset/basic): Finset subset induction (#5087) Induction on subsets of a given finset. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.induction_on' 2020-11-23 22:04:03 434a34d feat(group_theory/perm/sign): Add swap_induction_on' (#5092) This also adds a docstring for swap_induction_on ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean + theorem equiv.perm.swap_induction_on' 2020-11-23 22:04:01 2a49f4e feat(algebra/lie/direct_sum): direct sums of Lie modules (#5063) There are three things happening here: 1. introduction of definitions of direct sums for Lie modules, 2. introduction of definitions of morphisms, equivs for Lie modules, 3. splitting out extant definition of direct sums for Lie algebras into a new file. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean - theorem lie_algebra.direct_sum.bracket_apply + theorem lie_module_equiv.apply_symm_apply + theorem lie_module_equiv.coe_to_lie_module_hom + theorem lie_module_equiv.coe_to_linear_equiv + theorem lie_module_equiv.one_apply + def lie_module_equiv.refl + theorem lie_module_equiv.refl_apply + def lie_module_equiv.symm + theorem lie_module_equiv.symm_apply_apply + theorem lie_module_equiv.symm_symm + theorem lie_module_equiv.symm_trans_apply + def lie_module_equiv.trans + theorem lie_module_equiv.trans_apply + structure lie_module_equiv + theorem lie_module_hom.coe_injective + theorem lie_module_hom.coe_mk + theorem lie_module_hom.coe_to_linear_map + def lie_module_hom.comp + theorem lie_module_hom.comp_apply + theorem lie_module_hom.comp_coe + theorem lie_module_hom.ext + theorem lie_module_hom.ext_iff + def lie_module_hom.inverse + theorem lie_module_hom.map_lie' + structure lie_module_hom Added src/algebra/lie/direct_sum.lean + theorem direct_sum.bracket_apply + def direct_sum.lie_algebra_component + def direct_sum.lie_algebra_of + theorem direct_sum.lie_module_bracket_apply + def direct_sum.lie_module_component + def direct_sum.lie_module_of 2020-11-23 19:56:57 fee93e9 feat(ring_theory/*): Various lemmas about ideals, quotients, and localizations (#5046) Lemmas needed for the proof that is_jacobson is preserved under taking polynomials. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.coe_map_ring_hom + theorem polynomial.eval₂_C_X +/- theorem polynomial.map_injective + def polynomial.map_ring_hom + theorem polynomial.map_surjective Modified src/group_theory/submonoid/operations.lean +/- theorem submonoid.mem_map_of_mem Modified src/ring_theory/ideal/operations.lean + theorem ideal.bot_quotient_is_maximal_iff + theorem ideal.comp_quotient_map_eq_of_comp_eq + theorem ideal.quotient_map_injective + theorem ideal.quotient_map_mk + theorem ideal.radical_bot_of_integral_domain Modified src/ring_theory/ideal/over.lean + theorem ideal.is_maximal_comap_of_is_integral_of_is_maximal' + theorem ideal.is_maximal_of_is_integral_of_is_maximal_comap' Modified src/ring_theory/integral_closure.lean + theorem is_integral_of_is_integral_mul_unit' + theorem is_integral_of_mem_closure'' + theorem is_integral_of_mem_closure' + theorem is_integral_of_surjective' + theorem is_integral_quotient_of_is_integral' + theorem is_integral_tower_bot_of_is_integral' + theorem ring_hom.is_integral_trans Modified src/ring_theory/localization.lean + theorem is_integral_elem_localization_at_leading_coeff' + theorem is_integral_localization' + theorem localization_map.surjective_quotient_map_of_maximal_of_localization Modified src/ring_theory/non_zero_divisors.lean + theorem map_le_non_zero_divisors_of_injective + theorem powers_le_non_zero_divisors_of_domain Modified src/ring_theory/polynomial/basic.lean + theorem ideal.eq_zero_of_polynomial_mem_map_range + theorem ideal.polynomial_mem_ideal_of_coeff_mem_ideal +/- def ideal.polynomial_quotient_equiv_quotient_polynomial 2020-11-23 17:02:17 96a2038 chore(linear_algebra/bilinear_form): cleanup (#5049) - Generalize some defs and lemmas to semimodules over semirings - Define the equiv between `bilin_form` and `linear_map` analogously to `linear_map.to_matrix / matrix.to_lin` - Mark appropriate lemmas as `simp` - Fix overlong lines, match style guide in other places too - Make use of variables consistent throughout the file ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified src/linear_algebra/bilinear_form.lean +/- theorem alt_bilin_form.neg - def bilin_form.bilin_linear_map_equiv - theorem bilin_form.coe_fn_to_linear_map +/- def bilin_form.comp +/- theorem bilin_form.comp_apply +/- theorem bilin_form.comp_injective +/- theorem bilin_form.ext +/- theorem bilin_form.is_adjoint_pair.add +/- theorem bilin_form.is_adjoint_pair.comp +/- theorem bilin_form.is_adjoint_pair.eq +/- theorem bilin_form.is_adjoint_pair.smul +/- theorem bilin_form.is_adjoint_pair.sub +/- def bilin_form.is_adjoint_pair +/- theorem bilin_form.is_adjoint_pair_zero + theorem bilin_form.is_ortho_smul_left + theorem bilin_form.is_ortho_smul_right +/- def bilin_form.is_pair_self_adjoint +/- theorem bilin_form.is_pair_self_adjoint_equiv +/- def bilin_form.is_pair_self_adjoint_submodule +/- def bilin_form.is_skew_adjoint +/- theorem bilin_form.is_skew_adjoint_iff_neg_self_adjoint +/- def bilin_form.lin_mul_lin +/- theorem bilin_form.lin_mul_lin_comp +/- theorem bilin_form.lin_mul_lin_comp_left +/- theorem bilin_form.lin_mul_lin_comp_right - theorem bilin_form.map_sum_left - theorem bilin_form.map_sum_right +/- theorem bilin_form.mem_is_pair_self_adjoint_submodule +/- theorem bilin_form.mem_self_adjoint_submodule +/- theorem bilin_form.mem_skew_adjoint_submodule +/- theorem bilin_form.mul_to_matrix +/- theorem bilin_form.mul_to_matrix_mul +/- theorem bilin_form.neg_apply +/- theorem bilin_form.neg_left +/- theorem bilin_form.neg_right - theorem bilin_form.ortho_smul_left - theorem bilin_form.ortho_smul_right +/- theorem bilin_form.ortho_zero +/- def bilin_form.self_adjoint_submodule +/- def bilin_form.skew_adjoint_submodule +/- theorem bilin_form.smul_apply +/- theorem bilin_form.sub_left +/- theorem bilin_form.sub_right + def bilin_form.to_lin + theorem bilin_form.to_lin_symm - def bilin_form.to_linear_map +/- def bilin_form.to_matrix +/- theorem bilin_form.to_matrix_apply +/- theorem bilin_form.to_matrix_comp +/- theorem bilin_form.to_matrix_comp_left +/- theorem bilin_form.to_matrix_comp_right +/- theorem bilin_form.to_matrix_mul +/- theorem bilin_form.to_matrix_smul +/- def bilin_form.to_matrixₗ +/- theorem bilin_form.zero_left +/- theorem bilin_form.zero_right +/- structure bilin_form +/- def bilin_form_equiv_matrix +/- def linear_map.to_bilin + def linear_map.to_bilin_aux + theorem linear_map.to_bilin_aux_eq + theorem linear_map.to_bilin_symm + theorem map_sum_left + theorem map_sum_right +/- def matrix.is_adjoint_pair +/- theorem matrix.is_adjoint_pair_equiv +/- def matrix.to_bilin_form +/- theorem matrix.to_bilin_form_apply +/- def matrix.to_bilin_formₗ +/- def pair_self_adjoint_matrices_submodule +/- def self_adjoint_matrices_submodule +/- def skew_adjoint_matrices_submodule +/- theorem to_bilin_form_to_matrix + theorem to_linear_map_apply +/- theorem to_matrix_to_bilin_form 2020-11-23 15:20:48 270fc31 fix(ring_theory/discrete_valuation_ring): docstring typos (#5085) Clarify one docstring and fix two others. ESTIMATED CHANGES Modified src/ring_theory/discrete_valuation_ring.lean + theorem discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization.to_unique_factorization_monoid - theorem discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization.ufd 2020-11-23 13:47:52 e8c8ce9 chore(category_theory/limits): move product isomorphisms (#5057) This PR moves some constructions and lemmas from `monoidal/of_has_finite_products` (back) to `limits/shapes/binary_products`. This reverts some changes made in https://github.com/leanprover-community/mathlib/commit/18246ac427c62348e7ff854965998cd9878c7692#diff-95871ea16bec862dfc4359f812b624a7a98e87b8c31c034e8a6e792332edb646. In particular, the purpose of that PR was to minimise imports in particular relating to `finite_limits`, but moving these particular definitions back doesn't make the imports any worse in that sense - other than that `binary_products` now imports `terminal` which I think doesn't make the import graph much worse. On the other hand, these definitions are useful outside of the context of monoidal categories so I think they do genuinely belong in `limits/`. I also changed some proofs from `tidy` to `simp` or a term-mode proof, and removed a `simp` attribute from a lemma which was already provable by `simp`. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.braid_natural + def category_theory.limits.coprod.associator + theorem category_theory.limits.coprod.associator_naturality + def category_theory.limits.coprod.braiding + def category_theory.limits.coprod.left_unitor + theorem category_theory.limits.coprod.pentagon + def category_theory.limits.coprod.right_unitor + theorem category_theory.limits.coprod.symmetry' + theorem category_theory.limits.coprod.symmetry + theorem category_theory.limits.coprod.triangle + def category_theory.limits.prod.associator + theorem category_theory.limits.prod.associator_naturality + def category_theory.limits.prod.braiding + def category_theory.limits.prod.functor_left_comp + def category_theory.limits.prod.left_unitor + theorem category_theory.limits.prod.left_unitor_hom_naturality + theorem category_theory.limits.prod.left_unitor_inv_naturality + theorem category_theory.limits.prod.pentagon + def category_theory.limits.prod.right_unitor + theorem category_theory.limits.prod.right_unitor_hom_naturality + theorem category_theory.limits.prod.symmetry' + theorem category_theory.limits.prod.symmetry + theorem category_theory.limits.prod.triangle + theorem category_theory.limits.prod_right_unitor_inv_naturality Modified src/category_theory/monoidal/of_has_finite_products.lean - theorem category_theory.limits.braid_natural - def category_theory.limits.coprod.associator - theorem category_theory.limits.coprod.associator_naturality - def category_theory.limits.coprod.braiding - def category_theory.limits.coprod.left_unitor - theorem category_theory.limits.coprod.pentagon - def category_theory.limits.coprod.right_unitor - theorem category_theory.limits.coprod.symmetry' - theorem category_theory.limits.coprod.symmetry - theorem category_theory.limits.coprod.triangle - def category_theory.limits.prod.associator - theorem category_theory.limits.prod.associator_naturality - def category_theory.limits.prod.braiding - def category_theory.limits.prod.functor_left_comp - def category_theory.limits.prod.left_unitor - theorem category_theory.limits.prod.left_unitor_hom_naturality - theorem category_theory.limits.prod.left_unitor_inv_naturality - theorem category_theory.limits.prod.pentagon - def category_theory.limits.prod.right_unitor - theorem category_theory.limits.prod.right_unitor_hom_naturality - theorem category_theory.limits.prod.symmetry' - theorem category_theory.limits.prod.symmetry - theorem category_theory.limits.prod.triangle - theorem category_theory.limits.prod_right_unitor_inv_naturality 2020-11-23 13:47:50 a71901f feat(category_theory/limits): explicit binary product functor in Type (#5043) Adds `binary_product_functor`, the explicit product functor in Type, and `binary_product_iso_prod` which shows it is isomorphic to the one picked by choice (this is helpful eg to show Type is cartesian closed). I also edited the definitions a little to use existing machinery instead - this seems to make `simp` and `tidy` stronger when working with the explicit product cone; but they're definitionally the same as the old ones. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/types.lean + def category_theory.limits.types.binary_coproduct_cocone + def category_theory.limits.types.binary_coproduct_colimit + def category_theory.limits.types.binary_coproduct_colimit_cocone - def category_theory.limits.types.binary_coproduct_limit_cone + def category_theory.limits.types.binary_product_cone + theorem category_theory.limits.types.binary_product_cone_fst + theorem category_theory.limits.types.binary_product_cone_snd + def category_theory.limits.types.binary_product_functor + def category_theory.limits.types.binary_product_limit + def category_theory.limits.types.coproduct_colimit_cocone - def category_theory.limits.types.coproduct_limit_cone 2020-11-23 13:47:48 562be70 feat(field_theory/separable): a separable polynomial is squarefree (#5039) I prove that a separable polynomial is squarefree. ESTIMATED CHANGES Modified src/field_theory/separable.lean + theorem polynomial.separable.squarefree 2020-11-23 13:47:44 3c1cf60 feat(category_theory/sigma): disjoint union of categories (#5020) ESTIMATED CHANGES Added src/category_theory/sigma/basic.lean + def category_theory.sigma.desc + def category_theory.sigma.desc_map + theorem category_theory.sigma.desc_map_mk + def category_theory.sigma.desc_uniq + theorem category_theory.sigma.desc_uniq_hom_app + theorem category_theory.sigma.desc_uniq_inv_app + def category_theory.sigma.functor.sigma + def category_theory.sigma.incl + def category_theory.sigma.incl_comp_map + def category_theory.sigma.incl_desc + theorem category_theory.sigma.incl_desc_hom_app + theorem category_theory.sigma.incl_desc_inv_app + theorem category_theory.sigma.incl_obj + def category_theory.sigma.map + def category_theory.sigma.map_comp + def category_theory.sigma.map_id + theorem category_theory.sigma.map_map + theorem category_theory.sigma.map_obj + def category_theory.sigma.nat_iso + def category_theory.sigma.nat_trans.sigma + def category_theory.sigma.nat_trans + theorem category_theory.sigma.nat_trans_app + theorem category_theory.sigma.sigma_hom.assoc + def category_theory.sigma.sigma_hom.comp + theorem category_theory.sigma.sigma_hom.comp_def + theorem category_theory.sigma.sigma_hom.comp_id + def category_theory.sigma.sigma_hom.id + theorem category_theory.sigma.sigma_hom.id_comp + inductive category_theory.sigma.sigma_hom 2020-11-23 13:47:42 13b9478 feat(combinatorics/colex): introduce colexicographical order (#4858) We define the colex ordering for finite sets, and give a couple of important lemmas and properties relating to it. Part of #2770, in order to prove the Kruskal-Katona theorem. ESTIMATED CHANGES Added src/combinatorics/colex.lean + theorem colex.eq_iff + theorem colex.forall_lt_of_colex_lt_of_forall_lt + theorem colex.hom + theorem colex.hom_fin + theorem colex.le_def + theorem colex.le_trans + theorem colex.lt_def + theorem colex.lt_singleton_iff_mem_lt + theorem colex.lt_trans + theorem colex.lt_trichotomy + theorem colex.mem_le_of_singleton_le + theorem colex.sdiff_lt_sdiff_iff_lt + theorem colex.singleton_lt_iff_lt + theorem colex.sum_pow_two_lt_iff_lt + def finset.colex + def finset.to_colex + theorem nat.sum_pow_two_lt 2020-11-23 12:40:48 83ec6e0 feat(analysis/normed_space/inner_product): inner product is infinitely smooth (#5089) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem continuous_inner + theorem differentiable.inner + theorem differentiable_at.inner + theorem differentiable_inner + theorem differentiable_on.inner + theorem differentiable_within_at.inner + theorem inner_smul_real_left + theorem inner_smul_real_right + theorem is_bounded_bilinear_map_inner + theorem times_cont_diff.inner + theorem times_cont_diff_at.inner + theorem times_cont_diff_at_inner + theorem times_cont_diff_inner + theorem times_cont_diff_on.inner + theorem times_cont_diff_within_at.inner Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.algebra_map_eq_of_real 2020-11-23 10:07:38 fdabe9c feat(data/padics/padic_norm): add a little more API (#5082) A little more API for `padic_val_rat` and `padic_val_nat`. ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean + theorem dvd_of_one_le_padic_val_nat + theorem padic_val_rat.sum_pos_of_pos 2020-11-23 09:03:09 2f51659 feat(analysis/special_functions/exp_log): `exp` is infinitely smooth (#5086) * Prove that `complex.exp` and `real.exp` are infinitely smooth. * Generalize lemmas about `exp ∘ f` to `f : E → ℂ` or `f : E → ℝ` instead of `f : ℂ → ℂ` or `f : ℝ → ℝ`. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem complex.times_cont_diff_exp + theorem fderiv_exp + theorem fderiv_within_exp + theorem has_fderiv_at.cexp + theorem has_fderiv_at.exp + theorem has_fderiv_within_at.cexp + theorem has_fderiv_within_at.exp +/- theorem measurable.cexp +/- theorem measurable.exp + theorem real.times_cont_diff_exp + theorem times_cont_diff.cexp + theorem times_cont_diff.exp + theorem times_cont_diff_at.cexp + theorem times_cont_diff_at.exp + theorem times_cont_diff_on.cexp + theorem times_cont_diff_on.exp + theorem times_cont_diff_within_at.cexp + theorem times_cont_diff_within_at.exp 2020-11-23 03:24:34 b9bd4a5 chore(scripts): update nolints.txt (#5088) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-23 01:00:25 ce0498e feat(data/nat/basic): add injectivity and divisibility lemmas (#5068) Multiplication by a non-zero natural is injective. Also a simple criterion for non-divisibility which I couldn't find (0 anisotropic (#5050) I made a mistake by merging a PR that defined `nondegenerate` but should have used the terminology `anisotropic` instead. ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + def quadratic_form.anisotropic - def quadratic_form.nondegenerate + theorem quadratic_form.not_anisotropic_iff_exists - theorem quadratic_form.not_nondegenerate_iff_exists 2020-11-20 12:39:29 498d497 feat(measure_theory/lp_space): prove that neg and add are in Lp (#5014) For f and g in Lp, (-f) and (f+g) are also in Lp. ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem nnreal.rpow_arith_mean_le_arith_mean2_rpow Modified src/data/fin.lean + theorem fin.default_fin_one Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_mono_nnreal Modified src/measure_theory/lp_space.lean + theorem ℒp_space.mem_ℒp.add + theorem ℒp_space.mem_ℒp.neg + theorem ℒp_space.snorm_neg 2020-11-20 09:40:27 32d1dfc feat(linear_algebra/quadratic_form): nondegenerate quadratic forms (#5045) No real lemmas about these, but `nondegenerate Q` is easier to read than `∀ x, Q x = 0 → x = 0` ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + def quadratic_form.nondegenerate + theorem quadratic_form.not_nondegenerate_iff_exists 2020-11-20 07:52:25 8d40e8d feat(analysis/special_functions/pow): add ennreal.to_nnreal_rpow (#5042) cut ennreal.to_real_rpow into two lemmas: to_nnreal_rpow and to_real_rpow ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.to_nnreal_rpow +/- theorem ennreal.to_real_rpow 2020-11-20 06:44:00 de76acd feat(number_theory/arithmetic_function): moebius is the inverse of zeta (#5001) Proves the most basic version of moebius inversion: that the moebius function is the inverse of the zeta function ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem nat.divisors_filter_squarefree + theorem nat.sum_divisors_filter_squarefree Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.card_factors_one + theorem nat.arithmetic_function.moebius_mul_zeta + theorem nat.arithmetic_function.moebius_ne_zero_iff_eq_or + theorem nat.arithmetic_function.zeta_mul_moebius Modified src/ring_theory/int/basic.lean + theorem nat.factors_multiset_prod_of_irreducible 2020-11-20 01:04:58 0e976d9 chore(scripts): update nolints.txt (#5048) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-19 15:34:57 47542a0 feat(ring_theory/witt_vector/verschiebung): verschiebung of witt vectors (#4836) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/verschiebung.lean + theorem witt_vector.aeval_verschiebung_poly' + theorem witt_vector.aeval_verschiebung_poly + theorem witt_vector.bind₁_verschiebung_poly_witt_polynomial + theorem witt_vector.ghost_component_verschiebung + theorem witt_vector.ghost_component_verschiebung_fun + theorem witt_vector.ghost_component_zero_verschiebung + theorem witt_vector.ghost_component_zero_verschiebung_fun + theorem witt_vector.map_verschiebung + def witt_vector.verschiebung + theorem witt_vector.verschiebung_coeff_add_one + theorem witt_vector.verschiebung_coeff_succ + theorem witt_vector.verschiebung_coeff_zero + def witt_vector.verschiebung_fun + theorem witt_vector.verschiebung_fun_coeff + theorem witt_vector.verschiebung_fun_coeff_succ + theorem witt_vector.verschiebung_fun_coeff_zero + theorem witt_vector.verschiebung_fun_is_poly + theorem witt_vector.verschiebung_is_poly + def witt_vector.verschiebung_poly + theorem witt_vector.verschiebung_poly_zero 2020-11-19 13:00:19 3326510 chore(field_theory/minimal_polynomial): generalize irreducible (#5006) I have removed the assumption that the base ring is a field for a minimal polynomial to be irreducible. The proof is simple but long, it should be possible to use `wlog` to shorten it, but I do not understand how to do it... ESTIMATED CHANGES Modified src/field_theory/minimal_polynomial.lean + theorem minimal_polynomial.aeval_ne_zero_of_dvd_not_unit_minimal_polynomial - theorem minimal_polynomial.degree_ne_zero +/- theorem minimal_polynomial.degree_pos + theorem minimal_polynomial.gcd_domain_eq_field_fractions Modified src/field_theory/splitting_field.lean Modified src/number_theory/sum_two_squares.lean 2020-11-19 13:00:17 b479d3b feat(algebra/*): star_ring instances on free_algebra, free_monoid, ring_quot, and quaternion (#4902) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean + theorem free_algebra.star_algebra_map + def free_algebra.star_hom + theorem free_algebra.star_ι Modified src/algebra/free_monoid.lean + theorem free_monoid.star_of + theorem free_monoid.star_one Modified src/algebra/ring_quot.lean + def ring_quot.star_ring Modified src/data/quaternion.lean + theorem quaternion_algebra.star_def 2020-11-19 10:10:26 700d576 chore(algebra/group/defs): Remove shortcut instance definitions (#4955) This means that `group.to_left_cancel_semigroup` is now spelt `group.to_cancel_monoid.to_left_cancel_monoid.to_left_cancel_semigroup`. The longer spelling shouldn't actually matter because type inference will do it anyway. I don't know whether this matters, but this should slightly reduce the number of connections that instance resolution must check. This shortcut wasn't added deliberately, it seems it just got added accidentally when #3688 was introduced. ESTIMATED CHANGES Modified src/algebra/group/defs.lean 2020-11-19 06:43:23 123c522 feat(category_theory/limits): terminal comparison morphism (#5025) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.initial_comparison + def category_theory.limits.terminal_comparison 2020-11-19 03:06:00 b848b5b feat(algebra/squarefree): a squarefree element of a UFM divides a power iff it divides (#5037) Proves that if `x, y` are elements of a UFM such that `squarefree x`, then `x | y ^ n` iff `x | y`. ESTIMATED CHANGES Modified src/algebra/squarefree.lean + theorem unique_factorization_monoid.dvd_pow_iff_dvd_of_squarefree +/- theorem unique_factorization_monoid.squarefree_iff_nodup_factors Modified src/data/multiset/basic.lean + theorem multiset.mem_nsmul + theorem multiset.prod_dvd_prod Modified src/data/multiset/erase_dup.lean + theorem multiset.erase_dup_nsmul + theorem multiset.nodup.le_erase_dup_iff_le + theorem multiset.nodup.le_nsmul_iff_le Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.dvd_iff_factors_le_factors + theorem unique_factorization_monoid.factors_pow + theorem unique_factorization_monoid.factors_zero 2020-11-19 01:49:38 87a6d95 chore(scripts): update nolints.txt (#5041) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-19 01:49:36 68adaba chore(field_theory/separable): spell-check "seperable" to "separable" (#5040) Replacing instances of "seperable" with "separable" ESTIMATED CHANGES Modified src/field_theory/separable.lean + theorem polynomial.multiplicity_le_one_of_separable - theorem polynomial.multiplicity_le_one_of_seperable + theorem polynomial.root_multiplicity_le_one_of_separable - theorem polynomial.root_multiplicity_le_one_of_seperable 2020-11-18 23:23:59 dcbec39 feat(algebra/*): Add of_injective lemmas (#5034) This adds `free_monoid.of_injective`, `monoid_algebra.of_injective`, `add_monoid_algebra.of_injective`, and renames and restates `free_group.of.inj` to match these lemmas. `function.injective (free_abelian_group.of)` is probably also true, but I wasn't able to prove it. ESTIMATED CHANGES Modified src/algebra/free_monoid.lean + theorem free_monoid.of_injective Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.of_injective + theorem monoid_algebra.of_injective Modified src/group_theory/free_group.lean - theorem free_group.of.inj + theorem free_group.of_injective 2020-11-18 23:23:57 2de8db4 feat(analysis/special_functions/pow): prove measurability of rpow for ennreal (#5026) Prove measurability of rpow for an ennreal argument. Also shorten the proof in the real case. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.coe_rpow_def + theorem ennreal.measurable_rpow + theorem ennreal.measurable_rpow_const + theorem measurable.ennreal_rpow + theorem measurable.ennreal_rpow_const Modified src/measure_theory/measurable_space.lean + theorem measurable.ite 2020-11-18 21:10:00 abb0b67 refactor(*): make continuous a structure (#5035) Turn `continuous` into a structure, to make sure it is not unfolded too much by Lean. After the change, inferring some types is harder to Lean (as it can not unfold further to find more information), so some help is needed at places. Especially, for `hf : continuous f` and `hg : continuous g`, I had to replace `hf.prod_mk hg` with `(hf.prod_mk hg : _)` a lot of times. For `hf : continuous f` and `hs : is_open s`, the fact that `f^(-1) s` is open used to be `hf s hs`. Now, it is `hs.preimage hf`, just like it is for closed sets. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/seminorm.lean Modified src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/haar_measure.lean Modified src/topology/algebra/affine.lean Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/basic.lean + structure continuous - def continuous + theorem continuous_def Modified src/topology/category/Compactum.lean Modified src/topology/category/Top/limits.lean Modified src/topology/category/Top/opens.lean +/- theorem topological_space.opens.map_obj Modified src/topology/compact_open.lean Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/homeomorph.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.tsum_sub Modified src/topology/instances/real.lean Modified src/topology/list.lean Modified src/topology/maps.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/omega_complete_partial_order.lean Modified src/topology/opens.lean Modified src/topology/order.lean +/- theorem coinduced_le_iff_le_induced + theorem continuous.coinduced_le + theorem continuous.le_induced Modified src/topology/subset_properties.lean Modified src/topology/tactic.lean Modified src/topology/uniform_space/basic.lean 2020-11-18 16:28:13 38d2b53 feat(algebra/free_algebra): Add a nontrivial instance (#5033) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean 2020-11-18 14:27:12 0e09ada feat(category_theory/is_connected): zigzag lemmas (#5024) A few basic lemmas about connected categories and the zigzag relation ESTIMATED CHANGES Modified src/category_theory/is_connected.lean + theorem category_theory.zag_of_zag_obj + def category_theory.zigzag.setoid + theorem category_theory.zigzag_equivalence + theorem category_theory.zigzag_obj_of_zigzag 2020-11-18 12:44:52 aff7727 chore(data/complex/is_R_or_C): Remove two unnecessary axioms (#5017) `of_real` and `smul_coe_mul_ax` are already implied by the algebra structure. The addition of `noncomputable` does not matter here, as both instances of `is_R_or_C` are marked non-computable anyway. ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean Modified src/data/complex/is_R_or_C.lean +/- theorem is_R_or_C.norm_sq_of_real +/- theorem is_R_or_C.of_real_alg - def is_R_or_C.of_real_hom +/- theorem is_R_or_C.of_real_one +/- theorem is_R_or_C.of_real_pow +/- theorem is_R_or_C.of_real_sub +/- theorem is_R_or_C.of_real_zero +/- theorem is_R_or_C.zero_re' 2020-11-18 09:32:12 d22a878 doc(algebra/module/linear_map): Explain where the ring instance is (#5023) ESTIMATED CHANGES Modified src/algebra/module/linear_map.lean 2020-11-18 09:32:10 dfdad99 feat(category_theory): constant functor is faithful (#5022) ESTIMATED CHANGES Modified src/category_theory/const.lean 2020-11-18 09:32:06 dab2ae3 feat(category_theory/is_connected): transfer across equivalence (#5021) Also renames some universes to match usual conventions ESTIMATED CHANGES Modified src/category_theory/is_connected.lean +/- theorem category_theory.constant_of_preserves_morphisms + theorem category_theory.is_connected_of_equivalent + theorem category_theory.is_preconnected_of_equivalent +/- def category_theory.iso_constant 2020-11-18 09:31:55 a44b46c chore(*/sub*): Use the simp normal form for has_coe_to_sort (#5019) This reduces the need to start proofs on subtypes by applying `mem_coe`. ESTIMATED CHANGES Modified src/group_theory/submonoid/basic.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean 2020-11-18 09:31:53 0d3092b feat(number_theory/arithmetic_function): defining several more `arithmetic_function`s (#4998) Defines arithmetic functions `card_factors`, `card_distinct_factors`, and `moebius` ESTIMATED CHANGES Modified src/algebra/squarefree.lean Modified src/number_theory/arithmetic_function.lean + def nat.arithmetic_function.card_distinct_factors + theorem nat.arithmetic_function.card_distinct_factors_apply + theorem nat.arithmetic_function.card_distinct_factors_eq_card_factors_iff_squarefree + theorem nat.arithmetic_function.card_distinct_factors_zero + def nat.arithmetic_function.card_factors + theorem nat.arithmetic_function.card_factors_apply + theorem nat.arithmetic_function.card_factors_eq_one_iff_prime + theorem nat.arithmetic_function.card_factors_mul + theorem nat.arithmetic_function.card_factors_multiset_prod + def nat.arithmetic_function.moebius + theorem nat.arithmetic_function.moebius_apply_of_squarefree + theorem nat.arithmetic_function.moebius_eq_zero_of_not_squarefree + theorem nat.arithmetic_function.moebius_ne_zero_iff_squarefree Modified src/ring_theory/multiplicity.lean + theorem multiplicity.multiplicity_zero_eq_zero_of_ne_zero 2020-11-18 09:31:50 7cc6b53 feat(category_theory/sites): sheaves on a grothendieck topology (#4608) Broken off from #4577. ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.type_equalizer_iff_unique Added src/category_theory/sites/sheaf.lean + def category_theory.equalizer.first_obj + def category_theory.equalizer.first_obj_eq_family + def category_theory.equalizer.fork_map + theorem category_theory.equalizer.presieve.compatible_iff + def category_theory.equalizer.presieve.first_map + def category_theory.equalizer.presieve.second_map + def category_theory.equalizer.presieve.second_obj + theorem category_theory.equalizer.presieve.sheaf_condition + theorem category_theory.equalizer.presieve.w + theorem category_theory.equalizer.sieve.compatible_iff + theorem category_theory.equalizer.sieve.equalizer_sheaf_condition + def category_theory.equalizer.sieve.first_map + def category_theory.equalizer.sieve.second_map + def category_theory.equalizer.sieve.second_obj + theorem category_theory.equalizer.sieve.w + theorem category_theory.presieve.compatible_iff_sieve_compatible + theorem category_theory.presieve.extend_agrees + theorem category_theory.presieve.extend_restrict + theorem category_theory.presieve.extension_iff_amalgamation + theorem category_theory.presieve.family_of_elements.compatible.restrict + theorem category_theory.presieve.family_of_elements.compatible.sieve_extend + theorem category_theory.presieve.family_of_elements.compatible.to_sieve_compatible + def category_theory.presieve.family_of_elements.compatible + def category_theory.presieve.family_of_elements.is_amalgamation + def category_theory.presieve.family_of_elements.pullback_compatible + def category_theory.presieve.family_of_elements.restrict + def category_theory.presieve.family_of_elements.sieve_compatible + def category_theory.presieve.family_of_elements + theorem category_theory.presieve.is_amalgamation_restrict + theorem category_theory.presieve.is_amalgamation_sieve_extend + theorem category_theory.presieve.is_compatible_of_exists_amalgamation + def category_theory.presieve.is_separated + theorem category_theory.presieve.is_separated_for.ext + theorem category_theory.presieve.is_separated_for.is_sheaf_for + def category_theory.presieve.is_separated_for + theorem category_theory.presieve.is_separated_for_and_exists_is_amalgamation_iff_sheaf_for + theorem category_theory.presieve.is_separated_for_iff_generate + theorem category_theory.presieve.is_separated_for_top + def category_theory.presieve.is_sheaf + theorem category_theory.presieve.is_sheaf_for.is_amalgamation + theorem category_theory.presieve.is_sheaf_for.is_separated_for + theorem category_theory.presieve.is_sheaf_for.valid_glue + def category_theory.presieve.is_sheaf_for + theorem category_theory.presieve.is_sheaf_for_coarser_topology + theorem category_theory.presieve.is_sheaf_for_iff_generate + theorem category_theory.presieve.is_sheaf_for_iso + theorem category_theory.presieve.is_sheaf_for_singleton_iso + theorem category_theory.presieve.is_sheaf_for_subsieve + theorem category_theory.presieve.is_sheaf_for_subsieve_aux + theorem category_theory.presieve.is_sheaf_for_top_sieve + theorem category_theory.presieve.is_sheaf_iso + theorem category_theory.presieve.is_sheaf_pretopology + theorem category_theory.presieve.is_sheaf_yoneda + def category_theory.presieve.nat_trans_equiv_compatible_family + theorem category_theory.presieve.pullback_compatible_iff + theorem category_theory.presieve.restrict_extend + theorem category_theory.presieve.restrict_inj + theorem category_theory.presieve.separated_of_sheaf + theorem category_theory.presieve.yoneda_condition_iff_sheaf_condition + def category_theory.presieve.yoneda_sheaf_condition 2020-11-18 07:06:12 fec1a59 feat(data/list): map lemmas paralleling functor (#5028) Adding `comp_map` and `map_comp_map`. Docstrings done to match docstrings for equivalent `prod.map_comp_map`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.comp_map + theorem list.map_comp_map Modified src/data/multiset/functor.lean 2020-11-18 01:08:16 19e3302 chore(scripts): update nolints.txt (#5029) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-17 17:53:52 e92b5ac feat(algebra/opposites): Provide semimodule instances and op_linear_equiv (#4954) We already have a `has_scalar` definition via an `algebra` definition. The definition used there satisfies a handful of other typeclasses too, and also allows for `op_add_equiv` to be stated more strongly as `op_linear_equiv`. This also cuts back the imports a little on `algebra.module.basic`, which means formerly-transitive imports have to be added to downstream files. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem opposite.op_smul Modified src/algebra/category/Group/limits.lean Modified src/algebra/category/Mon/limits.lean Modified src/algebra/module/basic.lean Added src/algebra/module/opposites.lean + theorem opposite.coe_op_linear_equiv + theorem opposite.coe_op_linear_equiv_symm + theorem opposite.coe_op_linear_equiv_symm_to_linear_map + theorem opposite.coe_op_linear_equiv_to_linear_map + def opposite.op_linear_equiv + theorem opposite.op_linear_equiv_symm_to_add_equiv + theorem opposite.op_linear_equiv_to_add_equiv Modified src/algebra/opposites.lean + theorem opposite.op_smul + theorem opposite.unop_smul Modified src/algebra/pointwise.lean Modified src/category_theory/action.lean Modified src/data/finsupp/basic.lean Modified src/group_theory/monoid_localization.lean 2020-11-17 15:27:56 97fc8ce refactor(algebra/lie/basic): unbundle the action in `lie_module` (#4959) ESTIMATED CHANGES Modified src/algebra/lie/basic.lean +/- theorem add_lie +/- theorem commutative_ring_iff_abelian_lie_ring +/- theorem gsmul_lie + theorem leibniz_lie - theorem lie_act +/- theorem lie_add +/- def lie_algebra.ad + theorem lie_algebra.ad_apply - theorem lie_algebra.endo_algebra_bracket +/- def lie_algebra.of_associative_algebra_hom +/- theorem lie_algebra.of_associative_algebra_hom_apply +/- theorem lie_algebra.of_associative_algebra_hom_comp +/- theorem lie_algebra.of_associative_algebra_hom_id +/- theorem lie_gsmul + theorem lie_jacobi + theorem lie_lie +/- theorem lie_mem_left - def lie_module.of_endo_morphism + def lie_module.to_endo_morphism +/- theorem lie_neg +/- theorem lie_ring.of_associative_ring_bracket +/- theorem lie_self +/- theorem lie_skew +/- theorem lie_smul + def lie_submodule.quotient.action_as_endo_map + def lie_submodule.quotient.action_as_endo_map_bracket - theorem lie_submodule.quotient.lie_quotient_action_apply +/- structure lie_submodule +/- theorem lie_zero +/- theorem neg_lie +/- theorem smul_lie +/- theorem zero_lie Modified src/algebra/lie/classical.lean +/- theorem lie_algebra.special_linear.sl_non_abelian Modified src/linear_algebra/basic.lean + theorem linear_map.mul_eq_comp Deleted src/linear_algebra/linear_action.lean - def linear_action.of_endo_map - def linear_action.to_endo_map - theorem linear_action_act_add - theorem linear_action_act_smul - theorem linear_action_add_act - theorem linear_action_smul_act - theorem linear_action_zero - theorem zero_linear_action Modified src/ring_theory/derivation.lean +/- theorem derivation.commutator_coe_linear_map + theorem derivation.sub_apply Modified test/transport/basic.lean - def lie_ring.map 2020-11-17 12:21:38 47476ef docs(references.bib): adds Samuel's Théorie Algébrique des Nombres (#5018) Added Samuel's Théorie Algébrique des Nombres ESTIMATED CHANGES Modified docs/references.bib 2020-11-17 12:21:36 a59e76b feat(ring_theory/noetherian): add two lemmas on products of prime ideals (#5013) Add two lemmas saying that in a noetherian ring (resp. _integral domain)_ every (_nonzero_) ideal contains a (_nonzero_) product of prime ideals. ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.not_is_prime_iff Modified src/ring_theory/noetherian.lean + theorem exists_prime_spectrum_prod_le + theorem exists_prime_spectrum_prod_le_and_ne_bot_of_domain + theorem is_noetherian.induction 2020-11-17 12:21:33 86b0971 feat(algebra/group_with_zero): Bundled `monoid_with_zero_hom` (#4995) This adds, without notation, `monoid_with_zero_hom` as a variant of `A →* B` that also satisfies `f 0 = 0`. As part of this, this change: * Splits up `group_with_zero` into multiple files, so that the definitions can be used in the bundled homs before any of the lemmas start pulling in dependencies * Adds `monoid_with_zero_hom` as a base class of `ring_hom` * Changes some `monoid_hom` objects into `monoid_with_zero_hom` objects. * Moves some lemmas about `valuation` into `monoid_hom`, since they apply more generally * Add automatic coercions between `monoid_with_zero_hom` and `monoid_hom` ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified src/algebra/field.lean +/- theorem ring_hom.map_div +/- theorem ring_hom.map_eq_zero +/- theorem ring_hom.map_inv +/- theorem ring_hom.map_ne_zero Modified src/algebra/field_power.lean Modified src/algebra/gcd_monoid.lean +/- def normalize +/- theorem normalize_zero Modified src/algebra/geom_sum.lean Modified src/algebra/group/hom.lean + theorem monoid_hom.coe_eq_to_mul_hom + theorem monoid_hom.coe_eq_to_one_hom + theorem monoid_with_zero_hom.cancel_left + theorem monoid_with_zero_hom.cancel_right + theorem monoid_with_zero_hom.coe_comp + theorem monoid_with_zero_hom.coe_eq_to_monoid_hom + theorem monoid_with_zero_hom.coe_eq_to_zero_hom + theorem monoid_with_zero_hom.coe_inj + theorem monoid_with_zero_hom.coe_mk + def monoid_with_zero_hom.comp + theorem monoid_with_zero_hom.comp_apply + theorem monoid_with_zero_hom.comp_assoc + theorem monoid_with_zero_hom.comp_id + theorem monoid_with_zero_hom.congr_arg + theorem monoid_with_zero_hom.congr_fun + theorem monoid_with_zero_hom.ext + theorem monoid_with_zero_hom.ext_iff + def monoid_with_zero_hom.id + theorem monoid_with_zero_hom.id_apply + theorem monoid_with_zero_hom.id_comp + theorem monoid_with_zero_hom.map_mul + theorem monoid_with_zero_hom.map_one + theorem monoid_with_zero_hom.map_zero + theorem monoid_with_zero_hom.to_fun_eq_coe + theorem monoid_with_zero_hom.to_monoid_hom_coe + theorem monoid_with_zero_hom.to_zero_hom_coe + structure monoid_with_zero_hom Renamed src/algebra/group_with_zero.lean to src/algebra/group_with_zero/basic.lean - theorem inv_zero - theorem monoid_hom.map_div - theorem monoid_hom.map_eq_zero - theorem monoid_hom.map_inv' - theorem monoid_hom.map_ne_zero +/- theorem monoid_hom.map_units_inv + theorem monoid_with_zero_hom.map_div + theorem monoid_with_zero_hom.map_eq_zero + theorem monoid_with_zero_hom.map_inv' + theorem monoid_with_zero_hom.map_ne_zero - theorem mul_inv_cancel - theorem mul_left_cancel' - theorem mul_right_cancel' - theorem mul_zero - theorem zero_mul Added src/algebra/group_with_zero/default.lean Added src/algebra/group_with_zero/defs.lean + theorem inv_zero + theorem mul_inv_cancel + theorem mul_left_cancel' + theorem mul_right_cancel' + theorem mul_zero + theorem zero_mul Renamed src/algebra/group_with_zero_power.lean to src/algebra/group_with_zero/power.lean - theorem monoid_hom.map_fpow + theorem monoid_with_zero_hom.map_fpow Modified src/algebra/linear_ordered_comm_group_with_zero.lean + theorem monoid_hom.map_neg + theorem monoid_hom.map_neg_one + theorem monoid_hom.map_sub_swap Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_ring.lean +/- def abs_hom Modified src/algebra/ring/basic.lean Modified src/analysis/normed_space/basic.lean +/- def normed_field.norm_hom Modified src/data/quaternion.lean +/- def quaternion.norm_sq - theorem quaternion.norm_sq_zero Modified src/deprecated/subfield.lean Modified src/field_theory/perfect_closure.lean Modified src/number_theory/pythagorean_triples.lean Modified src/ring_theory/polynomial/gauss_lemma.lean Modified src/ring_theory/valuation/basic.lean +/- theorem valuation.coe_coe +/- theorem valuation.is_equiv.map +/- def valuation.map - theorem valuation.map_neg_one +/- theorem valuation.unit_map_eq +/- structure valuation Modified test/ring_exp.lean 2020-11-17 12:21:30 7a70764 feat(ring_theory/fractional_ideal): helper lemmas for Dedekind domains (#4994) An assortment of lemmas and refactoring related to `fractional_ideal`s, used in the Dedekind domain project. The motivation for creating this PR is that we are planning to remove the general `has_inv` instance on `fractional_ideal` (reserving it only for Dedekind domains), and we don't want to do the resulting refactoring twice. So we make sure everything is in the master branch, do the refactoring there, then merge the changes back into the work in progress branch. Overview of the changes in `localization.lean`: * more `is_integer` lemmas * a localization of a noetherian ring is noetherian * generalize a few lemmas from integral domains to nontrivial `comm_ring`s * `algebra A (fraction_ring A)` instance Overview of the changes in `fractional_ideal.lean`: * generalize many lemmas from integral domains to (nontrivial) `comm_ring`s (now `R` is notation for a `comm_ring` and `R₁` for an integral domain) * `is_fractional_of_le`, `is_fractional_span_iff` and `is_fractional_of_fg` * many `simp` and `norm_cast` results involving `coe : ideal -> fractional_ideal` and `coe : fractional_ideal -> submodule`: now should be complete for `0`, `1`, `+`, `*`, `/` and `≤`. * use `1 : submodule` as `simp` normal form instead of `coe_submodule (1 : ideal)` * make the multiplication operation irreducible * port `submodule.has_mul` lemmas to `fractional_ideal.has_mul` * `simp` lemmas for `canonical_equiv`, `span_singleton` * many ways to prove `is_noetherian` Co-Authored-By: Ashvni Co-Authored-By: faenuccio ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.add_le_add_left + theorem ring.fractional_ideal.canonical_equiv_flip + theorem ring.fractional_ideal.canonical_equiv_span_singleton + theorem ring.fractional_ideal.canonical_equiv_symm +/- theorem ring.fractional_ideal.coe_coe_ideal + theorem ring.fractional_ideal.coe_div + theorem ring.fractional_ideal.coe_fun_map_equiv + theorem ring.fractional_ideal.coe_ideal_le_one + theorem ring.fractional_ideal.coe_le_coe +/- theorem ring.fractional_ideal.coe_map +/- theorem ring.fractional_ideal.coe_mk - theorem ring.fractional_ideal.coe_ne_bot_iff_nonzero +/- theorem ring.fractional_ideal.coe_one + theorem ring.fractional_ideal.coe_one_eq_coe_submodule_one + theorem ring.fractional_ideal.coe_to_fractional_ideal_bot + theorem ring.fractional_ideal.coe_to_fractional_ideal_eq_zero + theorem ring.fractional_ideal.coe_to_fractional_ideal_injective + theorem ring.fractional_ideal.coe_to_fractional_ideal_ne_zero + theorem ring.fractional_ideal.coe_to_submodule_eq_bot + theorem ring.fractional_ideal.coe_to_submodule_ne_bot +/- theorem ring.fractional_ideal.coe_zero + theorem ring.fractional_ideal.div_span_singleton +/- theorem ring.fractional_ideal.eq_span_singleton_of_principal + theorem ring.fractional_ideal.exists_mem_to_map_eq +/- theorem ring.fractional_ideal.exists_ne_zero_mem_is_integer + theorem ring.fractional_ideal.ext_iff +/- theorem ring.fractional_ideal.inv_zero + theorem ring.fractional_ideal.invertible_iff_generator_nonzero + theorem ring.fractional_ideal.invertible_of_principal + theorem ring.fractional_ideal.is_fractional_of_fg + theorem ring.fractional_ideal.is_fractional_of_le + theorem ring.fractional_ideal.is_fractional_span_iff + theorem ring.fractional_ideal.is_fractional_span_singleton + theorem ring.fractional_ideal.is_noetherian + theorem ring.fractional_ideal.is_noetherian_coe_to_fractional_ideal + theorem ring.fractional_ideal.is_noetherian_iff + theorem ring.fractional_ideal.is_noetherian_span_singleton_to_map_inv_mul + theorem ring.fractional_ideal.is_noetherian_zero + theorem ring.fractional_ideal.is_principal_inv + theorem ring.fractional_ideal.le_div_iff_mul_le + theorem ring.fractional_ideal.le_div_iff_of_nonzero - theorem ring.fractional_ideal.le_iff + theorem ring.fractional_ideal.le_iff_mem + theorem ring.fractional_ideal.le_one_iff_exists_coe_ideal + theorem ring.fractional_ideal.le_self_mul_one_div + theorem ring.fractional_ideal.le_self_mul_self + theorem ring.fractional_ideal.le_zero_iff +/- theorem ring.fractional_ideal.map_coe_ideal +/- theorem ring.fractional_ideal.map_div +/- theorem ring.fractional_ideal.map_eq_zero_iff +/- theorem ring.fractional_ideal.map_equiv_apply + theorem ring.fractional_ideal.map_equiv_symm +/- theorem ring.fractional_ideal.map_inv +/- theorem ring.fractional_ideal.map_ne_zero + theorem ring.fractional_ideal.mem_canonical_equiv_apply - theorem ring.fractional_ideal.mem_coe + theorem ring.fractional_ideal.mem_coe_ideal + theorem ring.fractional_ideal.mem_div_iff_of_nonzero + theorem ring.fractional_ideal.mem_span_singleton + theorem ring.fractional_ideal.mem_span_singleton_self + def ring.fractional_ideal.mul + theorem ring.fractional_ideal.mul_eq_mul + theorem ring.fractional_ideal.mul_le + theorem ring.fractional_ideal.mul_le_mul_left + theorem ring.fractional_ideal.mul_mem_mul + theorem ring.fractional_ideal.mul_one_div_le_one + theorem ring.fractional_ideal.mul_self_le_self + theorem ring.fractional_ideal.one_div_span_singleton - theorem ring.fractional_ideal.span_fractional_iff - theorem ring.fractional_ideal.span_singleton_fractional + theorem ring.fractional_ideal.span_singleton_inv + theorem ring.fractional_ideal.span_singleton_ne_zero_iff Modified src/ring_theory/localization.lean + theorem localization_map.is_integer_one + theorem localization_map.is_integer_zero + theorem localization_map.is_noetherian_ring 2020-11-17 11:18:37 ad286fb feat(tactic/fresh_names): add tactics for giving hyps fresh names (#4987) This commit adds a variant of `rename` which guarantees that the renamed hypotheses receive fresh names. To implement this, we also add more flexible variants of `get_unused_name`, `intro_fresh` and `intro_lst_fresh`. ESTIMATED CHANGES Added src/tactic/fresh_names.lean Added test/fresh_names.lean 2020-11-17 02:15:30 a2f3399 chore(scripts): update nolints.txt (#5016) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-16 23:47:31 53f71f8 feat(data/list): list last lemmas (#5015) list last lemmas letting lean learn little logical links ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.last_map + theorem list.last_pmap 2020-11-16 14:15:33 b588fc4 chore(*) Unused have statements in term mode (#5012) Remove unneeded have statements. ESTIMATED CHANGES Modified src/algebra/quadratic_discriminant.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/data/nat/basic.lean Modified src/data/nat/modeq.lean Modified src/data/padics/padic_norm.lean Modified src/data/polynomial/div.lean Modified src/data/real/hyperreal.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean Modified src/number_theory/pell.lean Modified src/number_theory/sum_four_squares.lean 2020-11-16 09:03:03 90fa510 feat(analysis/special_functions/pow): rpow is measurable (#5008) Prove the measurability of rpow in two cases: real and nnreal. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem measurable.nnreal_rpow + theorem measurable.nnreal_rpow_const + theorem measurable.rpow + theorem measurable.rpow_const + theorem nnreal.measurable_rpow + theorem nnreal.measurable_rpow_const + theorem real.measurable_rpow + theorem real.measurable_rpow_const 2020-11-16 01:22:58 4cd2438 chore(scripts): update nolints.txt (#5011) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-16 00:17:12 470ac77 feat(category_theory/monad): monadic functor really creates limits (#4931) Show that a monadic functor `creates_limits`, and a partial result for colimits. ESTIMATED CHANGES Modified src/category_theory/monad/limits.lean + def category_theory.monadic_creates_colimits_of_preserves_colimits + def category_theory.monadic_creates_colimits_of_shape_of_preserves_colimits_of_shape + def category_theory.monadic_creates_limits - theorem category_theory.monadic_creates_limits 2020-11-15 14:10:11 9631594 feat(algebra/star): star monoids, rings and algebras (#4886) ESTIMATED CHANGES Added src/algebra/star/algebra.lean + theorem star_smul Added src/algebra/star/basic.lean + def star + theorem star_add + def star_add_equiv + theorem star_bit0 + theorem star_bit1 + theorem star_id_of_comm + theorem star_injective + theorem star_mul + def star_mul_equiv + theorem star_neg + theorem star_one + def star_ring_equiv + def star_ring_of_comm + theorem star_star + theorem star_sub + theorem star_sum + theorem star_zero Modified src/data/complex/basic.lean Modified src/data/matrix/basic.lean + theorem matrix.map_map + theorem matrix.star_apply Modified src/data/real/basic.lean 2020-11-15 04:56:07 9dd9b6b refactor(archive/imo/imo1969_q1): prove `infinite` statement, cleanup (#4391) The previous formalization didn't quite prove that there were infinitely many natural numbers with the desired property, but rather that for any natural number there's a larger one with the property. This PR changes the ending to prove that the set of integers described in the problem statement is `infinite`. ESTIMATED CHANGES Modified archive/imo/imo1969_q1.lean + def a_choice + theorem a_choice_good + theorem a_choice_strict_mono +/- theorem factorization + def good_nats +/- theorem imo1969_q1 +/- theorem int_large - theorem int_not_prime +/- theorem left_factor_large + theorem not_prime_of_int_mul' +/- theorem polynomial_not_prime +/- theorem right_factor_large Modified src/data/int/basic.lean + theorem int.nat_abs_mul_nat_abs_eq Added src/data/int/nat_prime.lean + theorem int.not_prime_of_int_mul Modified src/data/nat/basic.lean + theorem strict_mono.nat_pow Modified src/data/nat/prime.lean +/- theorem nat.factors_unique + theorem nat.not_prime_mul' - theorem tactic.norm_num.not_prime_helper Modified src/data/set/finite.lean +/- theorem set.eq_finite_Union_of_finite_subset_Union +/- theorem set.finite_Union + theorem set.infinite_image_iff + theorem set.infinite_of_inj_on_maps_to + theorem set.infinite_of_injective_forall_mem + theorem set.infinite_range_of_injective 2020-11-15 01:46:16 7e27d94 chore(scripts): update nolints.txt (#5007) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-15 01:46:14 447b18f chore(data/polynomial/degree): consolidate all `polynomial.degree` files in one folder (#5005) Moves `data/polynomial/degree.lean` to `data/polynomial/degree`, which already exists, renames it `lemmas.lean` Renames `data/polynomial/degree/basic.lean` to `definitions.lean` Adds `data/polynomial/degree/default.lean`, which just imports `lemmas.lean` ESTIMATED CHANGES Modified src/data/polynomial/cancel_leads.lean Added src/data/polynomial/degree/default.lean Renamed src/data/polynomial/degree/basic.lean to src/data/polynomial/degree/definitions.lean Renamed src/data/polynomial/degree.lean to src/data/polynomial/degree/lemmas.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/lifts.lean 2020-11-15 01:46:12 fca7eba chore(analysis/calculus/deriv): composition of `g : 𝕜 → 𝕜` with `f : E → 𝕜` (#4871) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_at.comp_has_fderiv_at + theorem has_deriv_at.comp_has_fderiv_within_at + theorem has_deriv_at_filter.comp_has_fderiv_at_filter + theorem has_deriv_within_at.comp_has_fderiv_within_at Modified src/topology/continuous_on.lean + theorem continuous_within_at.tendsto_nhds_within 2020-11-15 00:37:55 e6e8275 chore(linear_algebra/char_poly): put everything `char_poly` in one folder (#5004) Moves `char_poly` to `char_poly.basic`, because the folder already exists ESTIMATED CHANGES Renamed src/linear_algebra/char_poly.lean to src/linear_algebra/char_poly/basic.lean Modified src/linear_algebra/char_poly/coeff.lean 2020-11-14 23:13:25 6544244 feat(data/polynomial) small refactor and golf (#5002) Factor out the lemma that roots of the normalization equal the roots of a polynomial and golf a proof a tiny bit. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.roots_normalize Modified src/field_theory/splitting_field.lean +/- theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C +/- theorem polynomial.splits_iff_card_roots Modified src/ring_theory/polynomial/cyclotomic.lean 2020-11-14 22:08:14 0582237 feat(analysis): seminorms and local convexity (#4827) ESTIMATED CHANGES Modified docs/references.bib Added src/analysis/seminorm.lean + def absorbent + theorem absorbent_nhds_zero + def absorbs + theorem balanced.absorbs_self + theorem balanced.closure + theorem balanced.interior + def balanced + theorem balanced_zero_union_interior + theorem seminorm.balanced_ball_zero + def seminorm.ball + theorem seminorm.ball_zero_eq + theorem seminorm.mem_ball + theorem seminorm.mem_ball_zero + theorem seminorm.nonneg + theorem seminorm.sub_rev + structure seminorm 2020-11-14 19:46:53 633c2a6 feat(ring_theory/gauss_lemma): two primitive polynomials divide iff they do in a fraction field (#5003) Shows `polynomial.is_primitive.dvd_iff_fraction_map_dvd_fraction_map`, that two primitive polynomials divide iff they do over a fraction field. Shows `polynomial.is_primitive.int.dvd_iff_map_cast_dvd_map_cast`, the version for integers and rationals. ESTIMATED CHANGES Modified src/ring_theory/polynomial/gauss_lemma.lean + theorem polynomial.is_primitive.dvd_iff_fraction_map_dvd_fraction_map + theorem polynomial.is_primitive.dvd_of_fraction_map_dvd_fraction_map + theorem polynomial.is_primitive.int.dvd_iff_map_cast_dvd_map_cast 2020-11-14 19:46:51 0092414 feat(data/nat/choose/sum): alternating binomial coefficient sums (#4997) Evaluates some sums related to binomial coefficients with alternating signs ESTIMATED CHANGES Modified src/data/finset/powerset.lean + theorem finset.powerset_len_eq_filter Modified src/data/nat/choose/sum.lean + theorem finset.sum_powerset_apply_card + theorem finset.sum_powerset_neg_one_pow_card + theorem finset.sum_powerset_neg_one_pow_card_of_nonempty + theorem int.alternating_sum_range_choose + theorem int.alternating_sum_range_choose_of_ne 2020-11-14 18:20:15 9b887d5 feat(measure_theory/lp_space): Define Lp spaces (#4993) Define the space Lp of functions for which the norm raised to the power p has finite integral. Define the seminorm on that space (without proof that it is a seminorm, for now). Add three lemmas to analysis/special_functions/pow.lean about ennreal.rpow ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.rpow_eq_top_of_nonneg + theorem ennreal.rpow_lt_top_of_nonneg + theorem ennreal.rpow_ne_top_of_nonneg Added src/measure_theory/lp_space.lean + theorem ℒp_space.lintegral_rpow_nnnorm_eq_rpow_snorm + theorem ℒp_space.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top + theorem ℒp_space.mem_ℒp.snorm_lt_top + theorem ℒp_space.mem_ℒp.snorm_ne_top + def ℒp_space.mem_ℒp + theorem ℒp_space.mem_ℒp_of_snorm_lt_top + theorem ℒp_space.mem_ℒp_one_iff_integrable + def ℒp_space.snorm + theorem ℒp_space.snorm_zero + theorem ℒp_space.zero_mem_ℒp 2020-11-14 12:34:53 70ca6fd feat(ring_theory/power_basis): `equiv`s between algebras with the same power basis (#4986) `power_basis.lift` and `power_basis.equiv` use the power basis structure to define `alg_hom`s and `alg_equiv`s. The main application in this PR is `power_basis.equiv_adjoin_simple`, which states that adjoining an element of a power basis of `L : K` gives `L` itself. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_eq_sum_range' + theorem polynomial.aeval_eq_sum_range Modified src/data/polynomial/degree/basic.lean + theorem polynomial.degree_add_eq_left_of_degree_lt - theorem polynomial.degree_add_eq_of_degree_lt + theorem polynomial.degree_add_eq_right_of_degree_lt + theorem polynomial.degree_sub_eq_left_of_degree_lt + theorem polynomial.degree_sub_eq_right_of_degree_lt + theorem polynomial.degree_sum_fin_lt Modified src/data/polynomial/div.lean + theorem polynomial.eval₂_mod_by_monic_eq_self_of_root Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_eq_sum_range' Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/lifts.lean Modified src/data/polynomial/monic.lean + theorem polynomial.monic_add_of_left + theorem polynomial.monic_add_of_right Modified src/data/polynomial/ring_division.lean + theorem polynomial.aeval_mod_by_monic_eq_self_of_root Modified src/field_theory/minimal_polynomial.lean +/- theorem minimal_polynomial.ne_zero Modified src/linear_algebra/char_poly/coeff.lean Modified src/ring_theory/power_basis.lean - theorem adjoin_root.findim - theorem adjoin_root.finite_dimensional + theorem intermediate_field.adjoin.power_basis.gen_eq + theorem power_basis.aeval_minpoly_gen + theorem power_basis.constr_pow_aeval + theorem power_basis.constr_pow_algebra_map + theorem power_basis.constr_pow_gen + theorem power_basis.constr_pow_mul + theorem power_basis.dim_le_nat_degree_of_root + theorem power_basis.dim_ne_zero + theorem power_basis.equiv_adjoin_simple_aeval + theorem power_basis.equiv_adjoin_simple_gen + theorem power_basis.equiv_adjoin_simple_symm_aeval + theorem power_basis.equiv_adjoin_simple_symm_gen + theorem power_basis.equiv_aeval + theorem power_basis.equiv_gen + theorem power_basis.equiv_symm + theorem power_basis.exists_eq_aeval + theorem power_basis.is_integral_gen + theorem power_basis.lift_aeval + theorem power_basis.lift_gen + theorem power_basis.minpoly_gen_monic + theorem power_basis.nat_degree_lt_nat_degree + theorem power_basis.nat_degree_minimal_polynomial + theorem power_basis.nat_degree_minpoly_gen 2020-11-14 12:34:51 6bac899 feat(category_theory/limits/preserves): functor product preserves colims (#4941) ESTIMATED CHANGES Added src/category_theory/limits/preserves/functor_category.lean + def category_theory.functor_category.prod_preserves_colimits 2020-11-14 12:34:49 154d73d feat(category_theory/equivalence): equivalence of functor categories (#4940) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean + def category_theory.equivalence.congr_left + def category_theory.equivalence.congr_right 2020-11-14 12:34:46 a0341a8 feat(category_theory/limits/creates): transfer creating limits through nat iso (#4938) `creates` version of #4934 ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean + def category_theory.creates_colimit_of_nat_iso + def category_theory.creates_colimits_of_nat_iso + def category_theory.creates_colimits_of_shape_of_nat_iso + def category_theory.creates_limit_of_nat_iso + def category_theory.creates_limits_of_nat_iso + def category_theory.creates_limits_of_shape_of_nat_iso Modified src/category_theory/limits/preserves/basic.lean 2020-11-14 12:34:45 ccc1431 feat(ring_theory/ideal_operations): prime avoidance (#773) ```lean /-- Prime avoidance. Atiyah-Macdonald 1.11, Eisenbud 3.3, Stacks 10.14.2 (00DS), Matsumura Ex.1.6. -/ theorem subset_union_prime {s : finset ι} {f : ι → ideal R} (a b : ι) (hp : ∀ i ∈ s, i ≠ a → i ≠ b → is_prime (f i)) {I : ideal R} : (I : set R) ⊆ (⋃ i ∈ (↑s : set ι), f i) ↔ ∃ i ∈ s, I ≤ f i := ``` ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean + theorem ideal.is_prime.inf_le' + theorem ideal.is_prime.inf_le + theorem ideal.is_prime.mul_le + theorem ideal.is_prime.prod_le + theorem ideal.prod_le_inf + theorem ideal.subset_union + theorem ideal.subset_union_prime' + theorem ideal.subset_union_prime 2020-11-14 11:02:55 5f15104 feat(algebra/squarefree): Defines squarefreeness, proves several equivalences (#4981) Defines when a monoid element is `squarefree` Proves basic lemmas to determine squarefreeness Proves squarefreeness criteria in terms of `multiplicity`, `unique_factorization_monoid.factors`, and `nat.factors` ESTIMATED CHANGES Added src/algebra/squarefree.lean + theorem irreducible.squarefree + theorem is_unit.squarefree + theorem multiplicity.squarefree_iff_multiplicity_le_one + theorem nat.squarefree_iff_nodup_factors + theorem not_squarefree_zero + theorem prime.squarefree + def squarefree + theorem squarefree_of_dvd_of_squarefree + theorem squarefree_one + theorem unique_factorization_monoid.squarefree_iff_nodup_factors Modified src/ring_theory/multiplicity.lean + theorem multiplicity.multiplicity_le_multiplicity_of_dvd 2020-11-14 01:13:48 4db26af chore(scripts): update nolints.txt (#4999) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-13 22:06:40 9ed9e0f feat(tactic/has_variable_names): add tactic for type-based naming (#4988) When we name hypotheses or variables, we often do so in a type-directed fashion: a hypothesis of type `ℕ` is called `n` or `m`; a hypothesis of type `list ℕ` is called `ns`; etc. This commits adds a tactic which looks up typical variable names for a given type. Typical variable names are registered by giving an instance of the new type class `has_variable_names`. We also give instances of this type class for many core types. ESTIMATED CHANGES Added src/tactic/has_variable_names.lean + def has_variable_names.make_inheriting_instance + def has_variable_names.make_listlike_instance 2020-11-13 19:42:11 050b837 feat(field_theory/adjoin): Adjoin integral element (#4831) ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem multiset.disjoint_to_finset + theorem multiset.to_finset_card_of_nodup Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_simple_to_subalgebra_of_integral + theorem intermediate_field.card_alg_hom_adjoin_integral Modified src/field_theory/fixed.lean 2020-11-13 17:59:05 eeb2057 feat(ring_theory/unique_factorization_domain): connecting `multiplicity` to `unique_factorization_domain.factors` (#4980) Connects multiplicity of an irreducible to the multiset of irreducible factors ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associated_pow_pow Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.le_multiplicity_iff_repeat_le_factors + theorem unique_factorization_monoid.multiplicity_eq_count_factors 2020-11-13 11:15:04 1a233e0 feat(analysis/calculus): derivative is measurable (#4974) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem fderiv_mem_iff Added src/analysis/calculus/fderiv_measurable.lean + theorem continuous_linear_map.measurable_apply' + theorem continuous_linear_map.measurable_apply + theorem continuous_linear_map.measurable_apply₂ + theorem continuous_linear_map.measurable_coe + def fderiv_measurable_aux.A + theorem fderiv_measurable_aux.A_mono + def fderiv_measurable_aux.B + def fderiv_measurable_aux.D + theorem fderiv_measurable_aux.D_subset_differentiable_set + theorem fderiv_measurable_aux.differentiable_set_eq_D + theorem fderiv_measurable_aux.differentiable_set_subset_D + theorem fderiv_measurable_aux.is_open_A + theorem fderiv_measurable_aux.is_open_B + theorem fderiv_measurable_aux.le_of_mem_A + theorem fderiv_measurable_aux.mem_A_of_differentiable + theorem fderiv_measurable_aux.norm_sub_le_of_mem_A + theorem is_measurable_set_of_differentiable_at + theorem is_measurable_set_of_differentiable_at_of_is_complete + theorem measurable_deriv + theorem measurable_fderiv + theorem measurable_fderiv_apply_const Modified src/topology/metric_space/premetric_space.lean 2020-11-13 01:25:28 140d8b4 chore(scripts): update nolints.txt (#4992) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-12 23:23:14 6b3a2d1 feat(archive/imo): formalize IMO 1964 problem 1 (#4935) This is an alternative approach to #4369, where progress seems to have stalled. I avoid integers completely by working with `nat.modeq`, and deal with the cases of n mod 3 by simply breaking into three cases. ESTIMATED CHANGES Added archive/imo/imo1964_q1.lean + theorem aux + theorem imo1964_q1a + theorem imo1964_q1b + def problem_predicate + theorem two_pow_three_mul_add_one_mod_seven + theorem two_pow_three_mul_add_two_mod_seven + theorem two_pow_three_mul_mod_seven Modified src/data/nat/modeq.lean + theorem nat.modeq.modeq_pow 2020-11-12 16:36:44 6e64df5 chore(deprecated/group): Do not import `deprecated` from `equiv/mul_add` (#4989) This swaps the direction of the import, which makes the deprecated instances for `mul_equiv` be in the same place as the instances for `monoid_hom`. ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean Modified src/deprecated/group.lean 2020-11-12 16:36:42 97a7f57 chore(algebra/direct_limit): Use bundled morphisms (#4964) This introduced some ugliness in the form of `(λ i j h, f i j h)`, which is a little unfortunate ESTIMATED CHANGES Modified src/algebra/direct_limit.lean +/- def add_comm_group.direct_limit.lift - theorem add_comm_group.direct_limit.lift_add - theorem add_comm_group.direct_limit.lift_neg - theorem add_comm_group.direct_limit.lift_sub +/- theorem add_comm_group.direct_limit.lift_unique - theorem add_comm_group.direct_limit.lift_zero +/- theorem add_comm_group.direct_limit.of.zero_exact +/- def add_comm_group.direct_limit.of - theorem add_comm_group.direct_limit.of_add - theorem add_comm_group.direct_limit.of_neg - theorem add_comm_group.direct_limit.of_sub - theorem add_comm_group.direct_limit.of_zero +/- def add_comm_group.direct_limit +/- def ring.direct_limit.lift - theorem ring.direct_limit.lift_add - def ring.direct_limit.lift_hom - theorem ring.direct_limit.lift_mul - theorem ring.direct_limit.lift_neg - theorem ring.direct_limit.lift_one - theorem ring.direct_limit.lift_pow - theorem ring.direct_limit.lift_sub +/- theorem ring.direct_limit.lift_unique - theorem ring.direct_limit.lift_zero +/- theorem ring.direct_limit.of.zero_exact +/- def ring.direct_limit.of - theorem ring.direct_limit.of_add +/- theorem ring.direct_limit.of_injective - theorem ring.direct_limit.of_mul - theorem ring.direct_limit.of_neg - theorem ring.direct_limit.of_one - theorem ring.direct_limit.of_pow - theorem ring.direct_limit.of_sub - theorem ring.direct_limit.of_zero +/- theorem ring.direct_limit.polynomial.exists_of 2020-11-12 14:19:46 34215fc feat(group_theory/sub{monoid,group}): Add `closure_induction'` for subtypes (#4984) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.closure_induction' Modified src/group_theory/submonoid/operations.lean + theorem submonoid.closure_induction' 2020-11-12 12:14:35 7404f0e feat(algebra/pointwise): lemmas relating to submonoids (#4960) ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem submonoid.mul_subset + theorem submonoid.mul_subset_closure 2020-11-12 08:28:56 593013d feat(algebra/quandle): Bundle `rack.to_envel_group.map` into an equiv (#4978) This also cleans up some non-terminal simp tactics ESTIMATED CHANGES Modified src/algebra/quandle.lean +/- def rack.to_envel_group.map 2020-11-12 04:06:42 3f575d7 feat(group_theory/subgroup) top is a normal subgroup (#4982) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2020-11-12 02:51:51 509a224 chore(scripts): update nolints.txt (#4983) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-12 00:24:20 f6c8d81 feat(algebra/group/with_one): Use an equiv for `lift` (#4975) ESTIMATED CHANGES Modified src/algebra/group/with_one.lean +/- def with_one.lift 2020-11-12 00:24:16 49cf28f feat(data/matrix): little lemmas on `map` (#4874) I had a couple of expressions involving mapping matrices, that the simplifier didn't `simp` away. It turns out the missing lemmas already existed, just not with the correct form / hypotheses. So here they are. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem matrix.alg_equiv_map_one + theorem matrix.alg_equiv_map_zero + theorem matrix.alg_hom_map_one + theorem matrix.alg_hom_map_zero Modified src/data/matrix/basic.lean + theorem matrix.add_equiv_map_zero + theorem matrix.add_monoid_hom_map_zero + theorem matrix.linear_equiv_map_zero + theorem matrix.linear_map_map_zero + theorem matrix.ring_equiv_map_one + theorem matrix.ring_equiv_map_zero + theorem matrix.ring_hom_map_one + theorem matrix.ring_hom_map_zero + theorem matrix.zero_hom_map_zero 2020-11-11 22:13:41 67309a4 refactor(group_theory/group_action): Break the file into three pieces (#4936) I found myself fighting import cycles when trying to define `has_scalar` instances in files that are early in the import tree. By creating a separate `defs` file with minimal dependencies, this ought to become easier. This also adds documentation. None of the proofs or lemma statements have been touched. ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean Modified src/algebra/group_ring_action.lean Deleted src/group_theory/group_action.lean - def const_smul_hom - theorem const_smul_hom_apply - theorem eq_inv_smul_iff' - theorem eq_inv_smul_iff - theorem finset.smul_sum - theorem inv_smul_eq_iff' - theorem inv_smul_eq_iff - theorem inv_smul_smul' - theorem inv_smul_smul - theorem is_unit.smul_eq_zero - theorem is_unit.smul_left_cancel - theorem ite_smul - theorem list.smul_sum - def mul_action.comp_hom - def mul_action.fixed_by - theorem mul_action.fixed_eq_Inter_fixed_by - def mul_action.fixed_points - theorem mul_action.injective_of_quotient_stabilizer - theorem mul_action.mem_fixed_by - theorem mul_action.mem_fixed_points' - theorem mul_action.mem_fixed_points - theorem mul_action.mem_orbit - theorem mul_action.mem_orbit_iff - theorem mul_action.mem_orbit_self - theorem mul_action.mem_orbit_smul - theorem mul_action.mem_stabilizer_iff - def mul_action.mul_left_cosets - def mul_action.of_quotient_stabilizer - theorem mul_action.of_quotient_stabilizer_mem_orbit - theorem mul_action.of_quotient_stabilizer_mk - theorem mul_action.of_quotient_stabilizer_smul - def mul_action.orbit - theorem mul_action.orbit_eq_iff - theorem mul_action.orbit_equiv_quotient_stabilizer_symm_apply - def mul_action.orbit_rel - def mul_action.regular - theorem mul_action.smul_mem_orbit_smul - def mul_action.stabilizer.subgroup - def mul_action.stabilizer.submonoid - def mul_action.stabilizer - def mul_action.stabilizer_carrier - def mul_action.to_fun - theorem mul_action.to_fun_apply - def mul_action.to_perm - theorem multiset.smul_sum - theorem one_smul - theorem smul_add - theorem smul_assoc - theorem smul_comm_class.symm - theorem smul_inv_smul' - theorem smul_inv_smul - theorem smul_ite - theorem smul_neg - theorem smul_one_smul - theorem smul_smul - theorem smul_sub - theorem smul_zero - theorem units.inv_smul_smul - theorem units.smul_eq_iff_eq_inv_smul - theorem units.smul_eq_zero - theorem units.smul_inv_smul - theorem units.smul_left_cancel - theorem units.smul_ne_zero - def units.smul_perm_hom Added src/group_theory/group_action/basic.lean + theorem finset.smul_sum + theorem list.smul_sum + def mul_action.fixed_by + theorem mul_action.fixed_eq_Inter_fixed_by + def mul_action.fixed_points + theorem mul_action.injective_of_quotient_stabilizer + theorem mul_action.mem_fixed_by + theorem mul_action.mem_fixed_points' + theorem mul_action.mem_fixed_points + theorem mul_action.mem_orbit + theorem mul_action.mem_orbit_iff + theorem mul_action.mem_orbit_self + theorem mul_action.mem_orbit_smul + theorem mul_action.mem_stabilizer_iff + def mul_action.mul_left_cosets + def mul_action.of_quotient_stabilizer + theorem mul_action.of_quotient_stabilizer_mem_orbit + theorem mul_action.of_quotient_stabilizer_mk + theorem mul_action.of_quotient_stabilizer_smul + def mul_action.orbit + theorem mul_action.orbit_eq_iff + theorem mul_action.orbit_equiv_quotient_stabilizer_symm_apply + def mul_action.orbit_rel + theorem mul_action.smul_mem_orbit_smul + def mul_action.stabilizer.subgroup + def mul_action.stabilizer.submonoid + def mul_action.stabilizer + def mul_action.stabilizer_carrier + theorem multiset.smul_sum Added src/group_theory/group_action/default.lean Added src/group_theory/group_action/defs.lean + def const_smul_hom + theorem const_smul_hom_apply + theorem ite_smul + def mul_action.comp_hom + def mul_action.regular + def mul_action.to_fun + theorem mul_action.to_fun_apply + theorem one_smul + theorem smul_add + theorem smul_assoc + theorem smul_comm_class.symm + theorem smul_ite + theorem smul_neg + theorem smul_one_smul + theorem smul_smul + theorem smul_sub + theorem smul_zero Added src/group_theory/group_action/group.lean + theorem eq_inv_smul_iff' + theorem eq_inv_smul_iff + theorem inv_smul_eq_iff' + theorem inv_smul_eq_iff + theorem inv_smul_smul' + theorem inv_smul_smul + theorem is_unit.smul_eq_zero + theorem is_unit.smul_left_cancel + def mul_action.to_perm + theorem smul_inv_smul' + theorem smul_inv_smul + theorem units.inv_smul_smul + theorem units.smul_eq_iff_eq_inv_smul + theorem units.smul_eq_zero + theorem units.smul_inv_smul + theorem units.smul_left_cancel + theorem units.smul_ne_zero + def units.smul_perm_hom 2020-11-11 19:36:52 743a104 chore(algebra): trivial lemmas on powers (#4977) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem pow_lt_pow_iff Modified src/algebra/group_power/lemmas.lean + theorem pow_lt_pow_iff_of_lt_one Modified src/algebra/group_with_zero_power.lean + theorem inv_fpow' Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/extend_deriv.lean 2020-11-11 18:01:44 5f098cf chore(topology): 2 trivial lemmas (#4968) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem mem_ball_iff_norm' + theorem mem_ball_iff_norm + theorem mem_closed_ball_iff_norm' + theorem mem_closed_ball_iff_norm Modified src/topology/bases.lean + theorem topological_space.is_topological_basis.nhds_has_basis Modified src/topology/metric_space/basic.lean + theorem metric.eventually_nhds_iff + theorem metric.eventually_nhds_iff_ball + theorem metric.mem_closed_ball' 2020-11-11 15:13:36 d4aabf9 doc(type_classes): Explain the use of {} instance arguments (#4976) Closes gh-4660 ESTIMATED CHANGES Modified src/algebra/ring/basic.lean Modified src/data/finsupp/basic.lean Modified src/deprecated/group.lean Modified src/tactic/lint/type_classes.lean 2020-11-11 13:39:21 60234d1 chore(algebra/archimedean): add `exists_pow_lt_of_lt_1` (#4970) ESTIMATED CHANGES Modified src/algebra/archimedean.lean +/- theorem exists_int_pow_near' +/- theorem exists_int_pow_near + theorem exists_nat_pow_near_of_lt_one + theorem exists_pow_lt_of_lt_one Modified src/analysis/specific_limits.lean + theorem uniformity_basis_dist_pow_of_lt_1 2020-11-11 13:39:18 4bf7ae4 refactor(analysis/normed_space): use `lt` in rescale_to_shell, DRY (#4969) * Use strict inequality for the upper bound in `rescale_to_shell`. * Deduplicate some proofs about operator norm. * Add `linear_map.bound_of_shell`, `continuous_linear_map.op_norm_le_of_shell`, and `continuous_linear_map.op_norm_le_of_shell'`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.le_of_op_norm_le + theorem continuous_linear_map.op_norm_le_of_shell' + theorem continuous_linear_map.op_norm_le_of_shell + theorem linear_map.bound_of_shell 2020-11-11 13:39:16 e1560a3 feat(measure_theory/borel_space): continuity set of a function is measurable (#4967) * Move the definition of `is_Gδ` and basic lemmas to a separate file. * Prove that `{x | continuous_at f x}` is a Gδ set provided that the codomain is a uniform space with countable basis of the uniformity filter (e.g., an `emetric_space`). In particular, this set is measurable. * Rename `nhds_le_uniformity` to `supr_nhds_le_uniformity`. * Add new `nhds_le_uniformity` without `⨆` in the statement. * Add `uniform.continuous_at_iff_prod`. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem is_Gδ.is_measurable + theorem is_measurable_set_of_continuous_at Added src/topology/G_delta.lean + theorem is_Gδ.inter + theorem is_Gδ.union + def is_Gδ + theorem is_Gδ_Inter + theorem is_Gδ_Inter_of_open + theorem is_Gδ_bInter + theorem is_Gδ_bInter_of_open + theorem is_Gδ_sInter + theorem is_Gδ_set_of_continuous_at + theorem is_Gδ_set_of_continuous_at_of_countably_generated_uniformity + theorem is_Gδ_univ + theorem is_open.is_Gδ + def residual Modified src/topology/metric_space/baire.lean - theorem is_Gδ.inter - theorem is_Gδ.union - def is_Gδ - theorem is_Gδ_Inter - theorem is_Gδ_Inter_of_open - theorem is_Gδ_bInter - theorem is_Gδ_bInter_of_open - theorem is_Gδ_sInter - theorem is_Gδ_univ - theorem is_open.is_Gδ - def residual Modified src/topology/uniform_space/basic.lean +/- theorem nhds_le_uniformity + theorem supr_nhds_le_uniformity + theorem uniform.continuous_at_iff_prod Modified src/topology/uniform_space/compact_separated.lean 2020-11-11 10:50:27 02cdc33 chore(algebra/group/hom): Add missing simp lemmas (#4958) These are named in the same pattern as `linear_map.to_add_monoid_hom_coe` ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.to_mul_hom_coe + theorem monoid_hom.to_one_hom_coe 2020-11-11 10:50:25 3d6291e chore(algebra/group/with_one): Use bundled morphisms (#4957) The comment "We have no bundled semigroup homomorphisms" has become false, these exist as `mul_hom`. This also adds `with_one.coe_mul_hom` and `with_zero.coe_add_hom` ESTIMATED CHANGES Modified src/algebra/group/hom.lean Modified src/algebra/group/with_one.lean + def with_one.coe_mul_hom +/- def with_one.lift +/- theorem with_one.lift_coe +/- theorem with_one.lift_one +/- theorem with_one.lift_unique +/- def with_one.map 2020-11-11 08:22:46 f30200e refactor(algebra/free_algebra): Make `lift` an equiv (#4908) This can probably lead to some API cleanup down the line ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/free_algebra.lean +/- def free_algebra.lift + theorem free_algebra.lift_aux_eq + theorem free_algebra.lift_symm_apply Modified src/algebra/lie/universal_enveloping.lean +/- def universal_enveloping_algebra.lift + theorem universal_enveloping_algebra.lift_symm_apply +/- theorem universal_enveloping_algebra.ι_comp_lift Modified src/algebra/ring_quot.lean +/- def ring_quot.lift +/- def ring_quot.lift_alg_hom Modified src/linear_algebra/clifford_algebra.lean +/- def clifford_algebra.lift Modified src/linear_algebra/exterior_algebra.lean +/- theorem exterior_algebra.hom_ext +/- def exterior_algebra.lift Modified src/linear_algebra/tensor_algebra.lean +/- def tensor_algebra.lift 2020-11-11 01:33:41 c20ecef chore(scripts): update nolints.txt (#4965) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-10 23:30:00 5c9e3ef feat(ring_theory/adjoin_root): Dimension of adjoin_root (#4830) Adds `adjoin_root.degree_lt_linear_equiv`, the restriction of `adjoin_root.mk f` to the polynomials of degree less than `f`, viewed as a isomorphism between vector spaces over `K` and uses it to prove that `adjoin_root f` has dimension `f.nat_degree`. Also renames `adjoin_root.alg_hom` to `adjoin_root.lift_hom`. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.map_pow Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_root_equiv_adjoin_apply_root + theorem intermediate_field.aeval_gen_minimal_polynomial Modified src/field_theory/splitting_field.lean Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.aeval_alg_hom_eq_zero - def adjoin_root.alg_hom - theorem adjoin_root.coe_alg_hom + theorem adjoin_root.coe_lift_hom + def adjoin_root.equiv + def adjoin_root.lift_hom + theorem adjoin_root.lift_hom_eq_alg_hom Modified src/ring_theory/power_basis.lean + theorem adjoin_root.findim + theorem adjoin_root.finite_dimensional +/- theorem adjoin_root.power_basis_is_basis + theorem intermediate_field.adjoin.findim + theorem intermediate_field.adjoin.finite_dimensional - theorem intermediate_field.adjoin_simple.exists_eq_aeval_gen +/- theorem intermediate_field.power_basis_is_basis + theorem power_basis.findim +/- theorem power_basis.finite_dimensional 2020-11-10 20:04:41 19bcf65 chore(data/set/basic): Simp `(⊤ : set α)` to `set.univ` (#4963) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.top_eq_univ 2020-11-10 11:25:41 d3fff8a feat(data/fin): define `fin.insert_nth` (#4947) Also rename `fin.succ_above_descend` to `fin.succ_above_pred_above`. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cons_le + theorem fin.eq_insert_nth_iff + theorem fin.forall_iff_succ_above + def fin.insert_nth + theorem fin.insert_nth_apply_same + theorem fin.insert_nth_apply_succ_above + theorem fin.insert_nth_comp_succ_above + theorem fin.insert_nth_eq_iff + theorem fin.insert_nth_last' + theorem fin.insert_nth_last + theorem fin.insert_nth_zero' + theorem fin.insert_nth_zero + theorem fin.le_cons + theorem fin.pred_above_zero - theorem fin.succ_above_descend +/- theorem fin.succ_above_lt_iff + theorem fin.succ_above_pred_above + theorem fin.tuple0_le Modified src/data/fintype/basic.lean 2020-11-10 11:25:39 ecbcd38 feat(category_theory/closed): cartesian closed category with zero object is trivial (#4924) ESTIMATED CHANGES Added src/category_theory/closed/zero.lean + def category_theory.equiv_punit + def category_theory.unique_homset_of_initial_iso_terminal + def category_theory.unique_homset_of_zero 2020-11-10 10:21:55 55a28c1 feat(ring_theory/witt_vector/mul_p): multiplication by p as operation on witt vectors (#4837) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/mul_p.lean + theorem witt_vector.bind₁_witt_mul_n_witt_polynomial + theorem witt_vector.mul_n_coeff + theorem witt_vector.mul_n_is_poly + def witt_vector.witt_mul_n 2020-11-10 08:10:37 34b7361 feat(algebra/*): Add ring instances to clifford_algebra and exterior_algebra (#4916) To do this, this removes the `irreducible` attributes. These attributes were present to try and "insulate" the quotient / generator based definitions, and force downstream proofs to use the universal property. Unfortunately, this irreducibility created massive headaches in typeclass resolution, and the tradeoff for neatness vs usability just isn't worth it. If someone wants to add back the `irreducible` attributes in future, they now have test-cases that force them not to break the `ring` instances when doing so. ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/algebra/lie/universal_enveloping.lean Modified src/algebra/ring_quot.lean Modified src/linear_algebra/clifford_algebra.lean Modified src/linear_algebra/exterior_algebra.lean Modified src/linear_algebra/tensor_algebra.lean Added test/free_algebra.lean 2020-11-10 01:07:17 1ada09b chore(scripts): update nolints.txt (#4961) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-09 22:52:35 e8758ae feat(measure_theory/*): a few lemmas about `(is_)measurable` in `Π i, π i` (#4948) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem pi_le_borel_pi Modified src/measure_theory/measurable_space.lean + theorem is_measurable_pi Modified src/measure_theory/measure_space.lean - theorem measure_theory.measure_diff_of_ae_le 2020-11-09 13:01:10 09afb04 feat(ring_theory/polynomial/content): Gauss's Lemma (irreducibility criterion) (#4861) Proves that a primitive polynomial is irreducible iff it is irreducible over the fraction field ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean - theorem polynomial.irreducible_of_irreducible_map + theorem polynomial.monic.irreducible_of_irreducible_map Modified src/field_theory/algebraic_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/content.lean + theorem polynomial.is_primitive.is_primitive_of_dvd Added src/ring_theory/polynomial/gauss_lemma.lean + theorem polynomial.is_primitive.int.irreducible_iff_irreducible_map_cast + theorem polynomial.is_primitive.irreducible_iff_irreducible_map_fraction_map + theorem polynomial.is_primitive.irreducible_of_irreducible_map_of_injective + theorem polynomial.is_primitive.is_unit_iff_is_unit_map + theorem polynomial.is_primitive.is_unit_iff_is_unit_map_of_injective + theorem polynomial.is_unit_or_eq_zero_of_is_unit_integer_normalization_prim_part 2020-11-09 10:48:50 fdbfe75 chore(group_theory/group_action): Rename some group_action lemmas (#4946) This renames * These lemmas about `group α`, for consistency with `smul_neg` etc, which are in the global scope: * `mul_action.inv_smul_smul` → `inv_smul_smul` * `mul_action.smul_inv_smul` → `smul_inv_smul` * `mul_action.inv_smul_eq_iff` → `inv_smul_eq_iff` * `mul_action.eq_inv_smul_iff` → `eq_inv_smul_iff` * These lemmas about `group_with_zero α`, for consistency with `smul_inv_smul'` etc, which have trailing `'`s (and were added in #2693, while the `'`-less ones were added later): * `inv_smul_eq_iff` → `inv_smul_eq_iff'` * `eq_inv_smul_iff` → `eq_inv_smul_iff'` ESTIMATED CHANGES Modified src/algebra/pointwise.lean Modified src/algebra/polynomial/group_ring_action.lean Modified src/group_theory/group_action.lean + theorem eq_inv_smul_iff' +/- theorem eq_inv_smul_iff + theorem inv_smul_eq_iff' +/- theorem inv_smul_eq_iff + theorem inv_smul_smul - theorem mul_action.eq_inv_smul_iff - theorem mul_action.inv_smul_eq_iff - theorem mul_action.inv_smul_smul - theorem mul_action.smul_inv_smul + theorem smul_inv_smul 2020-11-09 05:45:56 22b61b2 feat(topology/subset_properties): separated of discrete (#4952) As [requested on Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/totally.20disconnected.20of.20discrete/near/216021581). ESTIMATED CHANGES Modified src/topology/subset_properties.lean 2020-11-09 03:25:54 e1c333d chore(data/finset/basic): remove inter_eq_sdiff_sdiff (#4953) This is a duplicate of sdiff_sdiff_self_left ESTIMATED CHANGES Modified archive/imo/imo1998_q2.lean Modified src/data/finset/basic.lean - theorem finset.inter_eq_sdiff_sdiff 2020-11-09 00:48:26 40f673e feat(data/set/intervals/pi): lemmas about intervals in `Π i, π i` (#4951) Also add missing lemmas `Ixx_mem_nhds` and lemmas `pi_Ixx_mem_nhds`. For each `pi_Ixx_mem_nhds` I add a non-dependent version `pi_Ixx_mem_nhds'` because sometimes Lean fails to unify different instances while trying to apply the dependent version to `ι → ℝ`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.pi_mono Added src/data/set/intervals/pi.lean + theorem set.Icc_diff_pi_univ_Ioc_subset + theorem set.pi_univ_Icc + theorem set.pi_univ_Ici + theorem set.pi_univ_Ico_subset + theorem set.pi_univ_Iic + theorem set.pi_univ_Iio_subset + theorem set.pi_univ_Ioc_subset + theorem set.pi_univ_Ioi_subset + theorem set.pi_univ_Ioo_subset Modified src/order/basic.lean + theorem pi.le_def Modified src/topology/algebra/ordered.lean + theorem Icc_mem_nhds + theorem Ici_mem_nhds + theorem Ico_mem_nhds + theorem Iic_mem_nhds + theorem Ioc_mem_nhds + theorem pi_Icc_mem_nhds' + theorem pi_Icc_mem_nhds + theorem pi_Ici_mem_nhds' + theorem pi_Ici_mem_nhds + theorem pi_Ico_mem_nhds' + theorem pi_Ico_mem_nhds + theorem pi_Iic_mem_nhds' + theorem pi_Iic_mem_nhds + theorem pi_Iio_mem_nhds' + theorem pi_Iio_mem_nhds + theorem pi_Ioc_mem_nhds' + theorem pi_Ioc_mem_nhds + theorem pi_Ioi_mem_nhds' + theorem pi_Ioi_mem_nhds + theorem pi_Ioo_mem_nhds' + theorem pi_Ioo_mem_nhds Modified src/topology/constructions.lean + theorem set_pi_mem_nhds Modified src/topology/instances/real.lean + theorem compact_pi_Icc 2020-11-08 18:51:05 dcb8576 chore(data/finset/basic): trivial simp lemmas (#4950) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.insert_nonempty +/- theorem finset.singleton_nonempty 2020-11-08 18:51:03 de2f1b2 feat(data/set/intervals/basic): collection of lemmas of the form I??_of_I?? (#4918) Some propositions about intervals that I thought may be useful (despite their simplicity). ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.mem_Icc_of_Ico + theorem set.mem_Icc_of_Ioc + theorem set.mem_Icc_of_Ioo + theorem set.mem_Ici_of_Ioi + theorem set.mem_Ico_of_Ioo + theorem set.mem_Iic_of_Iio + theorem set.mem_Ioc_of_Ioo 2020-11-08 16:26:23 14a7c39 chore(data/finset/basic): use `has_coe_t` for coercion of `finset` to `set` (#4917) ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.coe_empty +/- theorem finset.coe_erase +/- theorem finset.coe_inj +/- theorem finset.coe_inter +/- theorem finset.coe_mem +/- theorem finset.coe_nonempty +/- theorem finset.coe_sdiff +/- theorem finset.coe_singleton +/- theorem finset.coe_ssubset +/- theorem finset.coe_union +/- theorem finset.mem_coe +/- theorem finset.mk_coe +/- theorem finset.piecewise_coe +/- theorem finset.set_of_mem Modified src/data/polynomial/monic.lean 2020-11-08 01:11:01 26e4f15 chore(scripts): update nolints.txt (#4944) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-07 21:27:41 e7d40ef refactor(*): Move an instance to a more appropriate file (#4939) In its former location, this instance related neither to the section it was the sole resident of, nor even to the file. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean Modified src/group_theory/coset.lean 2020-11-07 20:15:40 5fed35b chore(docs/100): fix typo (#4937) ESTIMATED CHANGES Modified docs/100.yaml 2020-11-07 20:15:38 c2ab384 feat(category_theory/limits/preserves): convenience defs for things already there (#4933) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.is_colimit_of_reflects + def category_theory.limits.is_limit_of_reflects + def category_theory.limits.preserves_colimits_of_reflects_of_preserves + def category_theory.limits.preserves_colimits_of_shape_of_reflects_of_preserves + def category_theory.limits.preserves_limits_of_reflects_of_preserves + def category_theory.limits.preserves_limits_of_shape_of_reflects_of_preserves 2020-11-07 19:06:12 9a0ba08 feat(category_theory/limits/preserves): transfer preserving limits through nat iso (#4932) - Move two defs higher in the file - Shorten some proofs using newer lemmas - Show that we can transfer preservation of limits through natural isomorphism in the functor. ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean - def category_theory.limits.preserves_colimit_of_iso + def category_theory.limits.preserves_colimit_of_iso_diagram + def category_theory.limits.preserves_colimit_of_nat_iso + def category_theory.limits.preserves_colimits_of_nat_iso + def category_theory.limits.preserves_colimits_of_shape_of_nat_iso - def category_theory.limits.preserves_limit_of_iso + def category_theory.limits.preserves_limit_of_iso_diagram + def category_theory.limits.preserves_limit_of_nat_iso + def category_theory.limits.preserves_limits_of_nat_iso + def category_theory.limits.preserves_limits_of_shape_of_nat_iso Modified src/category_theory/limits/shapes/constructions/preserve_binary_products.lean 2020-11-07 19:06:10 c494db5 feat(category_theory/limits/shapes/equalizers): equalizer comparison map (#4927) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.coequalizer_comparison + theorem category_theory.limits.coequalizer_comparison_map_desc + def category_theory.limits.equalizer_comparison + theorem category_theory.limits.equalizer_comparison_comp_π + theorem category_theory.limits.map_lift_equalizer_comparison + theorem category_theory.limits.ι_comp_coequalizer_comparison 2020-11-07 18:00:08 11368e1 feat(category_theory/limits/preserves): transfer reflecting limits through nat iso (#4934) ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.reflects_colimit_of_nat_iso + def category_theory.limits.reflects_colimits_of_nat_iso + def category_theory.limits.reflects_colimits_of_shape_of_nat_iso + def category_theory.limits.reflects_limit_of_nat_iso + def category_theory.limits.reflects_limits_of_nat_iso + def category_theory.limits.reflects_limits_of_shape_of_nat_iso 2020-11-07 08:45:59 655b617 feat(category_theory/limits/preserves/shapes/products): preserve products (#4857) A smaller part of #4716, for just products. This also renames the file `preserves/shapes.lean` to `preserves/shapes/products.lean`, since I want a similar API for other special shapes and it'd get too big otherwise. Of the declarations which were already present: `preserves_products_iso`, `preserves_products_iso_hom_π`, `map_lift_comp_preserves_products_iso_hom`, the first is still there but with weaker assumptions, and the other two are now provable by simp (under weaker assumptions again). ESTIMATED CHANGES Deleted src/category_theory/limits/preserves/shapes.lean - theorem map_lift_comp_preserves_products_iso_hom - def preserves_products_iso - theorem preserves_products_iso_hom_π Added src/category_theory/limits/preserves/shapes/products.lean + def preserves.fan_map_cone_limit + def preserves.is_limit_of_has_product_of_preserves_limit + def preserves.is_limit_of_reflects_of_map_is_limit + def preserves.map_is_limit_of_preserves_of_is_limit + def preserves.preserves_product_of_iso_comparison + def preserves.preserves_products_iso + theorem preserves.preserves_products_iso_hom Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.product_is_product Modified src/topology/sheaves/forget.lean 2020-11-07 01:11:14 c4e8d74 chore(scripts): update nolints.txt (#4926) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-06 20:34:51 8ba0dde chore(data/polynomial/monic): speedup next_coeff_mul (#4920) ESTIMATED CHANGES Modified src/data/polynomial/monic.lean 2020-11-06 20:34:49 e0cf0d3 fix(meta/expr): adjust is_likely_generated_binder_name to lean#490 (#4915) Lean PR 490 changed Lean's strategy for generating binder names. This PR adapts `name.is_likely_generated_binder_name`, which checks whether a binder name was likely generated by Lean (rather than given by the user). ESTIMATED CHANGES Modified src/meta/expr.lean Added test/likely_generated_name.lean 2020-11-06 19:17:20 b6b41c1 feat(category_theory/limits/creates): composition creates limits (#4922) ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean 2020-11-06 19:17:18 4f673bd feat(category_theory/limits/preserves): instances for composition preserving limits (#4921) A couple of quick instances. I'm pretty sure these instances don't cause clashes since they're for subsingleton classes, and they shouldn't cause loops since they're just other versions of instances already there. ESTIMATED CHANGES Modified src/category_theory/limits/preserves/basic.lean 2020-11-06 16:08:51 bddc5c9 feat(category_theory/limits): equivalence creates colimits (#4923) Dualises and tidy proofs already there ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.map_cocone_equiv 2020-11-06 14:57:51 91f8e68 feat(src/ring_theory/polynomial/cyclotomic): cyclotomic polynomials (#4914) I have added some basic results about cyclotomic polynomials. I defined them as the polynomial, with integer coefficients, that lifts the complex polynomial ∏ μ in primitive_roots n ℂ, (X - C μ). I proved that the degree of cyclotomic n is totient n and the product formula for X ^ n - 1. I plan to prove the irreducibility in the near future. This was in [4869](https://github.com/leanprover-community/mathlib/pull/4869) before I splitted that PR. Compared to it, I added the definition of `cyclotomic n R` for any ring `R` (still using the polynomial with coefficients in `ℤ`) and some easy lemmas, especially `cyclotomic_of_ring_hom`, `cyclotomic'_eq_X_pow_sub_one_div` `cyclotomic_eq_X_pow_sub_one_div`, and `cycl_eq_cycl'`. ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/ring_theory/polynomial/cyclotomic.lean + theorem polynomial.X_pow_sub_one_eq_prod + theorem polynomial.X_pow_sub_one_splits + theorem polynomial.cyclotomic'.monic + def polynomial.cyclotomic' + theorem polynomial.cyclotomic'_eq_X_pow_sub_one_div + theorem polynomial.cyclotomic'_ne_zero + theorem polynomial.cyclotomic'_one + theorem polynomial.cyclotomic'_splits + theorem polynomial.cyclotomic'_two + theorem polynomial.cyclotomic'_zero + theorem polynomial.cyclotomic.monic + def polynomial.cyclotomic + theorem polynomial.cyclotomic_eq_X_pow_sub_one_div + theorem polynomial.cyclotomic_eq_prod_X_sub_primitive_roots + theorem polynomial.cyclotomic_ne_zero + theorem polynomial.cyclotomic_one + theorem polynomial.cyclotomic_two + theorem polynomial.cyclotomic_zero + theorem polynomial.degree_cyclotomic' + theorem polynomial.degree_cyclotomic + theorem polynomial.int_coeff_of_cyclotomic + theorem polynomial.int_cyclotomic_rw + theorem polynomial.int_cyclotomic_spec + theorem polynomial.int_cyclotomic_unique + theorem polynomial.map_cyclotomic + theorem polynomial.map_cyclotomic_int + theorem polynomial.nat_degree_cyclotomic' + theorem polynomial.nat_degree_cyclotomic + theorem polynomial.prod_cyclotomic'_eq_X_pow_sub_one + theorem polynomial.prod_cyclotomic_eq_X_pow_sub_one + theorem polynomial.roots_of_cyclotomic + theorem polynomial.unique_int_coeff_of_cycl Modified src/ring_theory/roots_of_unity.lean - theorem is_primitive_root.primitive_root_one + theorem is_primitive_root.primitive_roots_one 2020-11-06 10:17:40 747aaae chore(algebra/lie/basic): Add some missing simp lemmas about A →ₗ⁅R⁆ B (#4912) These are mostly inspired by lemmas in linear_map. All the proofs are either `rfl` or copied from a proof for `linear_map`. ESTIMATED CHANGES Modified src/algebra/lie/basic.lean + theorem lie_algebra.coe_mk + theorem lie_algebra.morphism.coe_injective +/- theorem lie_algebra.morphism.comp_apply + theorem lie_algebra.morphism.comp_coe + theorem lie_algebra.morphism.ext_iff + theorem lie_algebra.of_associative_algebra_hom_apply 2020-11-06 01:10:55 fd3212c chore(scripts): update nolints.txt (#4919) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-05 18:57:18 a12d677 feat(ring_theory): define a `power_basis` structure (#4905) This PR defines a structure `power_basis`. If `S` is an `R`-algebra, `pb : power_basis R S` states that `S` (as `R`-module) has basis `1`, `pb.gen`, ..., `pb.gen ^ (pb.dim - 1)`. Since there are multiple possible choices, I decided to not make it a typeclass. Three constructors for `power_basis` are included: `algebra.adjoin`, `intermediate_field.adjoin` and `adjoin_root`. Each of these is of the form `power_basis K _` with `K` a field, at least until `minimal_polynomial` gets better support for rings. ESTIMATED CHANGES Added src/ring_theory/power_basis.lean + theorem adjoin_root.power_basis_is_basis + theorem algebra.linear_independent_power_basis + theorem algebra.mem_span_power_basis + theorem algebra.power_basis_is_basis + theorem intermediate_field.adjoin_simple.exists_eq_aeval_gen + theorem intermediate_field.power_basis_is_basis + theorem is_integral_algebra_map_iff + theorem minimal_polynomial.eq_of_algebra_map_eq + theorem power_basis.finite_dimensional + theorem power_basis.mem_span_pow' + theorem power_basis.mem_span_pow + theorem power_basis.polynomial.mem_supported_range + structure power_basis 2020-11-05 17:06:55 246df99 feat(category_theory/limits): Any small complete category is a preorder (#4907) Show that any small complete category has subsingleton homsets. Not sure if this is useful for anything - maybe it shouldn't be an instance ESTIMATED CHANGES Added src/category_theory/limits/small_complete.lean 2020-11-05 17:06:53 4024597 feat(category_theory/limits/presheaf): left adjoint if preserves colimits (#4896) ESTIMATED CHANGES Modified src/category_theory/limits/presheaf.lean + def category_theory.is_left_adjoint_of_preserves_colimits 2020-11-05 17:06:51 6a1ce57 chore(algebra/module/linear_map): Derive linear_map from mul_action_hom (#4888) Note that this required some stuff about polynomials to move to cut import cycles. ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean - theorem mul_semiring_action_hom.coe_polynomial Modified src/algebra/group_ring_action.lean - theorem polynomial.coeff_smul' - theorem polynomial.eval_smul' - theorem polynomial.smul_C - theorem polynomial.smul_X - theorem polynomial.smul_eval - theorem polynomial.smul_eval_smul - theorem prod_X_sub_smul.coeff - theorem prod_X_sub_smul.eval - theorem prod_X_sub_smul.monic - theorem prod_X_sub_smul.smul Modified src/algebra/module/linear_map.lean Added src/algebra/polynomial/group_ring_action.lean + theorem mul_semiring_action_hom.coe_polynomial + theorem polynomial.coeff_smul' + theorem polynomial.eval_smul' + theorem polynomial.smul_C + theorem polynomial.smul_X + theorem polynomial.smul_eval + theorem polynomial.smul_eval_smul + theorem prod_X_sub_smul.coeff + theorem prod_X_sub_smul.eval + theorem prod_X_sub_smul.monic + theorem prod_X_sub_smul.smul Modified src/field_theory/fixed.lean Modified src/group_theory/sylow.lean 2020-11-05 15:43:26 2f07ff2 chore(topology/metric_space): more `norm_cast` lemmas, golf proofs (#4911) ESTIMATED CHANGES Modified src/data/real/nnreal.lean Modified src/topology/metric_space/basic.lean + theorem coe_nndist + theorem dist_le_coe + theorem dist_le_pi_dist + theorem dist_lt_coe + theorem edist_le_coe + theorem edist_lt_coe + theorem ennreal_coe_nndist + theorem nndist_le_pi_nndist + theorem nndist_pi_def Modified src/topology/metric_space/emetric_space.lean + theorem edist_pi_def 2020-11-05 01:07:58 834d491 chore(scripts): update nolints.txt (#4910) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-04 21:59:56 189063b chore(data/W): rename `W` to `W_type` (#4909) Having a single character identifier in the root namespace is inconvenient. closes leanprover-community/doc-gen#83 ESTIMATED CHANGES Modified archive/examples/prop_encodable.lean Modified docs/overview.yaml Modified src/data/W.lean - def W.depth - theorem W.depth_lt_depth_mk - theorem W.depth_pos - inductive W + def W_type.depth + theorem W_type.depth_lt_depth_mk + theorem W_type.depth_pos + inductive W_type Modified src/data/pfunctor/univariate/basic.lean +/- def pfunctor.W 2020-11-04 18:37:41 5a61ef1 feat(ring_theory/witt_vector/teichmuller): Teichmuller representatives (#4690) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/teichmuller.lean + theorem witt_vector.ghost_component_teichmuller + theorem witt_vector.map_teichmuller + theorem witt_vector.teichmuller_coeff_pos + theorem witt_vector.teichmuller_coeff_zero + def witt_vector.teichmuller_fun + theorem witt_vector.teichmuller_zero 2020-11-04 16:04:42 211b0c0 feat(logic/basic): forall2_congr lemmas (#4904) Some helpful lemmas for working with quantifiers, just other versions of what's already there. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem exists₂_congr + theorem exists₃_congr + theorem exists₄_congr + theorem forall₂_congr + theorem forall₃_congr + theorem forall₄_congr 2020-11-04 16:04:40 0081a5a feat(ring_theory/algebraic): if `L / K` is algebraic, then the subalgebras are fields (#4903) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem mem_subalgebra_equiv_intermediate_field + theorem mem_subalgebra_equiv_intermediate_field_symm + def subalgebra_equiv_intermediate_field + theorem to_intermediate_field_to_subalgebra + theorem to_subalgebra_to_intermediate_field Modified src/ring_theory/algebra_tower.lean + theorem subalgebra.aeval_coe Modified src/ring_theory/algebraic.lean + theorem inv_eq_of_aeval_div_X_ne_zero + theorem inv_eq_of_root_of_coeff_zero_ne_zero + theorem subalgebra.inv_mem_of_algebraic + theorem subalgebra.inv_mem_of_root_of_coeff_zero_ne_zero + theorem subalgebra.is_field_of_algebraic 2020-11-04 14:06:15 e303a7d feat(linear_algebra/tensor_product): tensoring linear maps with modules (#4771) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + theorem linear_map.coe_ltensor_hom + theorem linear_map.coe_rtensor_hom + def linear_map.ltensor + theorem linear_map.ltensor_add + theorem linear_map.ltensor_comp + theorem linear_map.ltensor_comp_map + theorem linear_map.ltensor_comp_rtensor + def linear_map.ltensor_hom + theorem linear_map.ltensor_id + theorem linear_map.ltensor_neg + theorem linear_map.ltensor_smul + theorem linear_map.ltensor_sub + theorem linear_map.ltensor_tmul + theorem linear_map.ltensor_zero + theorem linear_map.map_comp_ltensor + theorem linear_map.map_comp_rtensor + def linear_map.rtensor + theorem linear_map.rtensor_add + theorem linear_map.rtensor_comp + theorem linear_map.rtensor_comp_ltensor + theorem linear_map.rtensor_comp_map + def linear_map.rtensor_hom + theorem linear_map.rtensor_id + theorem linear_map.rtensor_neg + theorem linear_map.rtensor_smul + theorem linear_map.rtensor_sub + theorem linear_map.rtensor_tmul + theorem linear_map.rtensor_zero 2020-11-04 08:09:46 6f72c22 chore(data/finset): add a few lemmas (#4901) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.insert_sdiff_insert + theorem finset.piecewise_idem_left + theorem finset.piecewise_idem_right + theorem finset.piecewise_mem_Icc' + theorem finset.piecewise_mem_Icc + theorem finset.piecewise_mem_Icc_of_mem_of_mem + theorem finset.piecewise_piecewise_of_subset_left + theorem finset.piecewise_piecewise_of_subset_right + theorem finset.sdiff_insert_of_not_mem 2020-11-04 08:09:42 0877077 chore(analysis/calculus/times_cont_diff): a few missing lemmas (#4900) * add `times_cont_diff_within_at_iff_forall_nat_le` and `times_cont_diff_on_iff_forall_nat_le`; * add `times_cont_diff_on_all_iff_nat` and `times_cont_diff_all_iff_nat`; * rename `times_cont_diff_at.differentiable` to `times_cont_diff_at.differentiable_at`; * add `times_cont_diff.div_const`; * add `times_cont_diff_succ_iff_deriv` * move some `of_le` lemmas up to support minor golfing of proofs. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.div_const + theorem times_cont_diff_all_iff_nat - theorem times_cont_diff_at.differentiable + theorem times_cont_diff_at.differentiable_at + theorem times_cont_diff_at.div_const + theorem times_cont_diff_on.div_const + theorem times_cont_diff_on_all_iff_nat + theorem times_cont_diff_on_iff_forall_nat_le + theorem times_cont_diff_succ_iff_deriv + theorem times_cont_diff_within_at.div_const + theorem times_cont_diff_within_at_iff_forall_nat_le 2020-11-04 08:09:40 beb6831 feat(analysis/calculus/times_cont_diff): add `restrict_scalars` (#4899) Add `restrict_scalars` lemmas to `has_ftaylor_series_up_to_on`, `times_cont_diff_within_at`, `times_cont_diff_on`, `times_cont_diff_at`, and `times_cont_diff`. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + def formal_multilinear_series.restrict_scalars + theorem has_ftaylor_series_up_to_on.restrict_scalars + theorem times_cont_diff.restrict_scalars + theorem times_cont_diff_at.restrict_scalars + theorem times_cont_diff_on.restrict_scalars + theorem times_cont_diff_within_at.restrict_scalars 2020-11-04 08:09:38 b7991c0 feat(category_theory/limits/cones): map_cone and postcompose lemmas (#4894) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean + def category_theory.functor.functoriality_comp_postcompose + def category_theory.functor.functoriality_comp_precompose + def category_theory.functor.postcompose_whisker_left_map_cone + def category_theory.functor.precompose_whisker_left_map_cocone 2020-11-04 08:09:36 7d6f37d feat(category_theory/closed/cartesian): product preserves colimits (#4893) ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean 2020-11-04 08:09:35 e1d60fd feat(data/equiv): exists unique congr (#4890) ESTIMATED CHANGES Modified src/data/equiv/basic.lean 2020-11-04 08:09:31 d88042c feat(order/filter/at_top_bot): lemmas about `map/comap` of `at_top`/`at_bot` (#4878) * Redefine `at_top`/`at_bot` using `Ici`/`Iic`. * Add lemmas about `map`/`comap` of `at_top`/`at_bot` under `coe : s → α`, where `s` is one of `Ici a`, `Iic a`, `Ioi a`, `Iio a`. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean +/- def filter.at_bot + theorem filter.at_bot_Iic_eq + theorem filter.at_bot_Iio_eq +/- def filter.at_top + theorem filter.at_top_Ici_eq + theorem filter.at_top_Ioi_eq + theorem filter.map_coe_Ici_at_top + theorem filter.map_coe_Iic_at_bot + theorem filter.map_coe_Iio_at_bot + theorem filter.map_coe_Ioi_at_top + theorem filter.map_coe_at_top_of_Ici_subset Modified src/order/filter/basic.lean + theorem set.eq_on.eventually_eq_of_mem 2020-11-04 05:43:18 7ab3ca8 feat(data/quaternion): define quaternions and prove some basic properties (#2339) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem opposite.algebra_map_apply + theorem opposite.op_smul Modified src/algebra/big_operators/basic.lean + theorem finset.op_sum + theorem finset.unop_sum Modified src/algebra/big_operators/order.lean - theorem with_top.op_sum - theorem with_top.unop_sum Modified src/algebra/module/linear_map.lean + theorem linear_equiv.coe_of_involutive + def linear_equiv.of_involutive Modified src/algebra/opposites.lean + theorem opposite.coe_op_add_equiv + theorem opposite.coe_op_add_equiv_symm - theorem opposite.coe_op_add_hom - theorem opposite.coe_unop_add_hom + def opposite.op_add_equiv + theorem opposite.op_add_equiv_to_equiv - def opposite.op_add_hom - def opposite.unop_add_hom + theorem ring_hom.coe_to_opposite + def ring_hom.to_opposite Modified src/analysis/normed_space/inner_product.lean Added src/analysis/quaternion.lean + theorem quaternion.coe_complex_add + theorem quaternion.coe_complex_coe + theorem quaternion.coe_complex_im_i + theorem quaternion.coe_complex_im_j + theorem quaternion.coe_complex_im_k + theorem quaternion.coe_complex_mul + theorem quaternion.coe_complex_one + theorem quaternion.coe_complex_re + theorem quaternion.coe_complex_smul + theorem quaternion.coe_complex_zero + theorem quaternion.coe_of_complex + theorem quaternion.inner_def + theorem quaternion.inner_self + theorem quaternion.norm_coe + theorem quaternion.norm_mul + theorem quaternion.norm_sq_eq_norm_square + def quaternion.of_complex Added src/data/quaternion.lean + theorem quaternion.add_im_i + theorem quaternion.add_im_j + theorem quaternion.add_im_k + theorem quaternion.add_re + theorem quaternion.algebra_map_def + theorem quaternion.coe_add + theorem quaternion.coe_commute + theorem quaternion.coe_commutes + theorem quaternion.coe_conj_alg_equiv + theorem quaternion.coe_im_i + theorem quaternion.coe_im_j + theorem quaternion.coe_im_k + theorem quaternion.coe_inj + theorem quaternion.coe_injective + theorem quaternion.coe_mul + theorem quaternion.coe_mul_eq_smul + theorem quaternion.coe_neg + theorem quaternion.coe_norm_sq_add + theorem quaternion.coe_one + theorem quaternion.coe_re + theorem quaternion.coe_sub + theorem quaternion.coe_zero + theorem quaternion.commute_conj_conj + theorem quaternion.commute_conj_self + theorem quaternion.commute_self_conj + def quaternion.conj + theorem quaternion.conj_add + theorem quaternion.conj_add_self' + theorem quaternion.conj_add_self + def quaternion.conj_alg_equiv + theorem quaternion.conj_coe + theorem quaternion.conj_conj + theorem quaternion.conj_conj_mul + theorem quaternion.conj_eq_two_re_sub + theorem quaternion.conj_fixed + theorem quaternion.conj_im_i + theorem quaternion.conj_im_j + theorem quaternion.conj_im_k + theorem quaternion.conj_mul + theorem quaternion.conj_mul_conj + theorem quaternion.conj_mul_eq_coe + theorem quaternion.conj_mul_self + theorem quaternion.conj_neg + theorem quaternion.conj_one + theorem quaternion.conj_re + theorem quaternion.conj_smul + theorem quaternion.conj_sub + theorem quaternion.conj_zero + theorem quaternion.eq_re_iff_mem_range_coe + theorem quaternion.eq_re_of_eq_coe + theorem quaternion.ext + theorem quaternion.ext_iff + theorem quaternion.mul_coe_eq_smul + theorem quaternion.mul_conj_eq_coe + theorem quaternion.mul_im_i + theorem quaternion.mul_im_j + theorem quaternion.mul_im_k + theorem quaternion.mul_re + theorem quaternion.neg_im_i + theorem quaternion.neg_im_j + theorem quaternion.neg_im_k + theorem quaternion.neg_re + def quaternion.norm_sq + theorem quaternion.norm_sq_coe + theorem quaternion.norm_sq_def' + theorem quaternion.norm_sq_def + theorem quaternion.norm_sq_div + theorem quaternion.norm_sq_eq_zero + theorem quaternion.norm_sq_inv + theorem quaternion.norm_sq_le_zero + theorem quaternion.norm_sq_ne_zero + theorem quaternion.norm_sq_neg + theorem quaternion.norm_sq_nonneg + theorem quaternion.norm_sq_zero + theorem quaternion.one_im_i + theorem quaternion.one_im_j + theorem quaternion.one_im_k + theorem quaternion.one_re + theorem quaternion.self_add_conj' + theorem quaternion.self_add_conj + theorem quaternion.self_mul_conj + theorem quaternion.smul_coe + theorem quaternion.smul_im_i + theorem quaternion.smul_im_j + theorem quaternion.smul_im_k + theorem quaternion.smul_re + theorem quaternion.sub_im_i + theorem quaternion.sub_im_j + theorem quaternion.sub_im_k + theorem quaternion.sub_re + theorem quaternion.zero_im_i + theorem quaternion.zero_im_j + theorem quaternion.zero_im_k + theorem quaternion.zero_re + def quaternion + theorem quaternion_algebra.coe_add + theorem quaternion_algebra.coe_algebra_map + theorem quaternion_algebra.coe_commute + theorem quaternion_algebra.coe_commutes + theorem quaternion_algebra.coe_conj_alg_equiv + theorem quaternion_algebra.coe_im_i + theorem quaternion_algebra.coe_im_j + theorem quaternion_algebra.coe_im_k + theorem quaternion_algebra.coe_inj + theorem quaternion_algebra.coe_injective + theorem quaternion_algebra.coe_mul + theorem quaternion_algebra.coe_mul_eq_smul + theorem quaternion_algebra.coe_neg + theorem quaternion_algebra.coe_one + theorem quaternion_algebra.coe_re + theorem quaternion_algebra.coe_sub + theorem quaternion_algebra.coe_zero + theorem quaternion_algebra.commute_conj_conj + theorem quaternion_algebra.commute_conj_self + theorem quaternion_algebra.commute_self_conj + def quaternion_algebra.conj + theorem quaternion_algebra.conj_add + theorem quaternion_algebra.conj_add_self' + theorem quaternion_algebra.conj_add_self + def quaternion_algebra.conj_alg_equiv + theorem quaternion_algebra.conj_coe + theorem quaternion_algebra.conj_conj + theorem quaternion_algebra.conj_conj_mul + theorem quaternion_algebra.conj_eq_two_re_sub + theorem quaternion_algebra.conj_fixed + theorem quaternion_algebra.conj_mul + theorem quaternion_algebra.conj_mul_conj + theorem quaternion_algebra.conj_mul_eq_coe + theorem quaternion_algebra.conj_neg + theorem quaternion_algebra.conj_one + theorem quaternion_algebra.conj_smul + theorem quaternion_algebra.conj_sub + theorem quaternion_algebra.conj_zero + theorem quaternion_algebra.eq_re_iff_mem_range_coe + theorem quaternion_algebra.eq_re_of_eq_coe + theorem quaternion_algebra.im_i_conj + theorem quaternion_algebra.im_j_conj + theorem quaternion_algebra.im_k_conj + theorem quaternion_algebra.mk.eta + theorem quaternion_algebra.mk_add_mk + theorem quaternion_algebra.mk_mul_mk + theorem quaternion_algebra.mk_sub_mk + theorem quaternion_algebra.mul_coe_eq_smul + theorem quaternion_algebra.mul_conj_eq_coe + theorem quaternion_algebra.neg_mk + theorem quaternion_algebra.re_conj + theorem quaternion_algebra.self_add_conj' + theorem quaternion_algebra.self_add_conj + theorem quaternion_algebra.smul_coe + theorem quaternion_algebra.smul_im_i + theorem quaternion_algebra.smul_im_j + theorem quaternion_algebra.smul_im_k + theorem quaternion_algebra.smul_re + structure quaternion_algebra Modified src/number_theory/arithmetic_function.lean 2020-11-04 01:36:53 16e3871 chore(scripts): update nolints.txt (#4898) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-11-04 00:20:10 23a2767 feat(category_theory/yoneda): type level yoneda equivalence (#4889) Broken off from #4608. ESTIMATED CHANGES Modified src/category_theory/yoneda.lean + def category_theory.yoneda_equiv + theorem category_theory.yoneda_equiv_apply + theorem category_theory.yoneda_equiv_naturality + theorem category_theory.yoneda_equiv_symm_app_apply 2020-11-03 21:30:18 505097f feat(order): countable categoricity of dense linear orders (#2860) We construct an order isomorphism between any two countable, nonempty, dense linear orders without endpoints, using the back-and-forth method. ESTIMATED CHANGES Modified src/algebra/order.lean + theorem cmp_eq_cmp_symm + theorem cmp_eq_eq_iff + theorem cmp_eq_gt_iff + theorem cmp_eq_lt_iff + theorem cmp_self_eq_eq + theorem le_iff_le_of_cmp_eq_cmp + theorem lt_iff_lt_of_cmp_eq_cmp Added src/order/countable_dense_linear_order.lean + def order.embedding_from_countable_to_dense + theorem order.exists_between_finsets + def order.iso_of_countable_dense + def order.partial_iso.defined_at_left + def order.partial_iso.defined_at_right + theorem order.partial_iso.exists_across + def order.partial_iso.fun_of_ideal + def order.partial_iso.inv_of_ideal + def order.partial_iso Modified src/order/rel_iso.lean + def order_embedding.of_strict_mono + def order_iso.of_cmp_eq_cmp 2020-11-03 20:37:43 712a0b7 chore(algebra/lie): adjoint rep of lie algebra uses lowercase `ad` (#4891) The uppercase is for Lie groups ESTIMATED CHANGES Modified src/algebra/lie/basic.lean - def lie_algebra.Ad + def lie_algebra.ad 2020-11-03 17:56:57 e88a5bb feat(*): assorted prereqs for cyclotomic polynomials (#4887) This is hopefully my last preparatory PR for cyclotomic polynomials. It was in [4869](https://github.com/leanprover-community/mathlib/pull/4869) . ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.mem_nth_roots_finset +/- def polynomial.nth_roots_finset Modified src/number_theory/divisors.lean +/- theorem nat.filter_dvd_eq_divisors Modified src/ring_theory/roots_of_unity.lean +/- theorem is_primitive_root.card_nth_roots +/- theorem is_primitive_root.card_nth_roots_finset +/- theorem is_primitive_root.nth_roots_nodup + theorem is_primitive_root.nth_roots_one_eq_bind_primitive_roots' +/- theorem is_primitive_root.nth_roots_one_eq_bind_primitive_roots + theorem is_primitive_root.primitive_root_one + theorem is_primitive_root.primitive_roots_zero 2020-11-03 17:56:54 b37d4a3 feat(category_theory/limits/types): ext iff lemma (#4883) A little lemma which sometimes makes it easier to work with limits in type. ESTIMATED CHANGES Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.limit_ext_iff 2020-11-03 17:56:52 6bed7d4 fix(tactic/interactive): issue where long term tooltips break layout (#4882) For issue description see https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/widget.20v.20long.20term.20names Basically the problem is that if the little 'argument pills' in the tooltip are too long, then there is a fight between the expression linebreaking algorithm and the pill linebreaking algorithm and something gets messed up. A first attempt to fix this is to use flexbox for laying out the pills. Still some issues with expressions linebreaking weirdly to sort out before this should be pulled. Need to find a mwe that I can put in a file without a huge dependency tree. ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-11-03 17:56:50 4f8c490 feat(tactic/mk_iff_of_inductive_prop): mk_iff attribute (#4863) This attribute should make `mk_iff_of_inductive_prop` easier to use. ESTIMATED CHANGES Modified archive/imo/imo1981_q3.lean +/- structure problem_predicate Modified src/data/multiset/basic.lean +/- inductive multiset.rel Modified src/field_theory/perfect_closure.lean +/- inductive perfect_closure.r Modified src/logic/relation.lean +/- inductive relation.refl_gen +/- inductive relation.trans_gen Modified src/tactic/core.lean Modified src/tactic/mk_iff_of_inductive_prop.lean + def mk_iff.list_option_merge Modified test/mk_iff_of_inductive.lean + structure foo2 + structure foo 2020-11-03 15:50:10 918e28c feat(category_theory/limits/types): explicit description of equalizers in Type (#4880) Cf https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/concrete.20limits.20in.20Type. Adds equivalent conditions for a fork in Type to be a equalizer, and a proof that the subtype is an equalizer. (cc: @adamtopaz @kbuzzard) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/types.lean + def category_theory.limits.types.equalizer_limit + theorem category_theory.limits.types.unique_of_type_equalizer 2020-11-03 15:50:08 34c3668 chore(data/set/intervals/ord_connected): make it more useful as a typeclass (#4879) * Add `protected lemma set.Icc_subset` that looks for `ord_connected s` instance. * Add `instance` versions to more lemmas. * Add `ord_connected_pi`. ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean +/- theorem set.ord_connected_Icc +/- theorem set.ord_connected_Ici +/- theorem set.ord_connected_Ico +/- theorem set.ord_connected_Iic +/- theorem set.ord_connected_Iio +/- theorem set.ord_connected_Ioc +/- theorem set.ord_connected_Ioi +/- theorem set.ord_connected_Ioo +/- theorem set.ord_connected_empty +/- theorem set.ord_connected_interval + theorem set.ord_connected_pi +/- theorem set.ord_connected_singleton +/- theorem set.ord_connected_univ 2020-11-03 15:50:06 9851a88 feat(*/multilinear): define `(continuous_)multilinear_map.restrict_scalars` (#4872) I'm going to use these definitions to prove `times_cont_diff_at.restrict_scalars` etc. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.continuous_restrict_scalars + theorem continuous_multilinear_map.norm_restrict_scalars +/- theorem continuous_multilinear_map.op_norm_smul_le + def continuous_multilinear_map.restrict_scalars_linear Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.coe_restrict_scalars + def multilinear_map.restrict_scalars +/- theorem multilinear_map.smul_apply Modified src/topology/algebra/multilinear.lean +/- theorem continuous_linear_map.comp_continuous_multilinear_map_coe + theorem continuous_multilinear_map.coe_restrict_scalars + def continuous_multilinear_map.restrict_scalars +/- theorem continuous_multilinear_map.smul_apply 2020-11-03 15:50:04 63d109f chore(category_theory/limits): Use `lim_map` over `lim.map` (#4856) Modify the simp-normal form for `lim.map` to be `lim_map` instead, and express lemmas in terms of `lim_map` instead, as well as use it in special shapes so that the assumptions can be weakened. ESTIMATED CHANGES Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.lim_map_eq_lim_map +/- theorem category_theory.limits.limit.lift_map - theorem category_theory.limits.limit.map_π +/- theorem category_theory.limits.limit.post_π +/- theorem category_theory.limits.limit.pre_π Modified src/category_theory/limits/shapes/products.lean +/- def category_theory.limits.pi.map +/- def category_theory.limits.sigma.map Modified src/category_theory/limits/types.lean Modified src/category_theory/monoidal/limits.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_condition/equalizer_products.lean 2020-11-03 15:50:02 b26fc59 feat(category_theory/limits/shapes/products): pi comparison morphism (#4855) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/products.lean + theorem category_theory.limits.map_lift_pi_comparison + def category_theory.limits.pi_comparison + theorem category_theory.limits.pi_comparison_comp_π + def category_theory.limits.sigma_comparison + theorem category_theory.limits.sigma_comparison_map_desc + theorem category_theory.limits.ι_comp_sigma_comparison 2020-11-03 14:17:25 5275628 feat(algebra/operations): add three lemmas (#4864) Add lemmas `one_le_inv`, `self_le_self_inv` and `self_inv_le_one` ESTIMATED CHANGES Modified src/algebra/algebra/operations.lean + theorem submodule.le_self_mul_one_div + theorem submodule.mul_one_div_le_one + theorem submodule.one_le_one_div 2020-11-03 09:26:45 c2b6220 feat(linear_algebra/matrix): `det (reindex e e A) = det A` (#4875) This PR includes four flavours of this lemma: `det_reindex_self'` is the `simp` lemma that doesn't include the actual term `reindex` as a subexpression (because that would be already `simp`ed away by `reindex_apply`). `det_reindex_self`, `det_reindex_linear_equiv_self` and `det_reindex_alg_equiv` include their respective function in the lemma statement. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.perm_congr_apply Modified src/group_theory/perm/sign.lean + theorem equiv.perm.sign_perm_congr Modified src/linear_algebra/matrix.lean + theorem matrix.det_reindex_alg_equiv + theorem matrix.det_reindex_linear_equiv_self + theorem matrix.det_reindex_self' + theorem matrix.det_reindex_self 2020-11-03 01:06:41 57ee216 chore(scripts): update nolints.txt (#4884) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-02 22:24:06 0e4f8f4 chore(scripts): typo in yaml_check (#4881) ESTIMATED CHANGES Modified scripts/yaml_check.lean 2020-11-02 22:24:05 dae87bc chore(data/finsupp/basic): Remove finsupp.leval which duplicates finsupp.lapply (#4876) ESTIMATED CHANGES Modified src/algebra/big_operators/finsupp.lean Modified src/data/finsupp/basic.lean + def finsupp.apply_add_hom - theorem finsupp.coe_leval' - theorem finsupp.coe_leval - def finsupp.eval_add_hom - theorem finsupp.eval_add_hom_apply - def finsupp.leval' - def finsupp.leval Modified src/data/polynomial/coeff.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finsupp.lean 2020-11-02 20:27:42 5334f48 chore(data/fintype/card): add a few lemmas (#4877) Prove a few versions of `(∏ i in s, f i) * (∏ i in sᶜ, f i) = ∏ i, f i` ESTIMATED CHANGES Modified src/data/fintype/card.lean + theorem finset.prod_compl_mul_prod + theorem finset.prod_mul_prod_compl + theorem is_compl.prod_mul_prod 2020-11-02 18:45:02 13a104d chore({data,linear_algebra}/dfinsupp): Move linear_algebra stuff to its own file (#4873) This makes the layout of files about `dfinsupp` resemble those of `finsupp` a little better. This also: * Renames type arguments to match the names of those in finsupp * Adjusts argument explicitness to match those in finsupp * Adds `dfinsupp.lapply` to match `finsupp.lapply` ESTIMATED CHANGES Modified src/data/dfinsupp.lean - theorem dfinsupp.lhom_ext' - theorem dfinsupp.lhom_ext - def dfinsupp.lmk - theorem dfinsupp.lmk_apply - def dfinsupp.lsingle - theorem dfinsupp.lsingle_apply - def dfinsupp.lsum Added src/linear_algebra/dfinsupp.lean + def dfinsupp.lapply + theorem dfinsupp.lapply_apply + theorem dfinsupp.lhom_ext' + theorem dfinsupp.lhom_ext + def dfinsupp.lmk + theorem dfinsupp.lmk_apply + def dfinsupp.lsingle + theorem dfinsupp.lsingle_apply + def dfinsupp.lsum Modified src/linear_algebra/direct_sum_module.lean Modified src/linear_algebra/finsupp.lean 2020-11-02 17:17:23 6587e84 feat(algebra/algebra/subalgebra): subalgebras, when seen as submodules, are idempotent (#4854) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem subalgebra.mul_self 2020-11-02 14:44:02 0aa6aed chore(order/basic): move `strict_mono_coe`to `subtype` NS (#4870) Also add `subtype.mono_coe` ESTIMATED CHANGES Modified src/order/basic.lean - theorem strict_mono_coe + theorem subtype.mono_coe + theorem subtype.strict_mono_coe Modified src/order/conditionally_complete_lattice.lean 2020-11-02 04:55:03 309df10 refactor(data/list/basic,...): more explicit args (#4866) This makes the `p` in most lemmas involving the following functions explicit, following the usual explicitness conventions: - `list.filter`, - `list.countp`, - `list.take_while`, - `multiset.filter`, - `multiset.countp`, - `finset.filter` ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/monoid_algebra.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/caratheodory.lean Modified src/combinatorics/partition.lean Modified src/data/finset/basic.lean +/- def finset.filter +/- theorem finset.filter_empty +/- theorem finset.filter_filter +/- theorem finset.filter_inter +/- theorem finset.filter_subset +/- theorem finset.filter_union +/- theorem finset.filter_union_right +/- theorem finset.inter_filter Modified src/data/finsupp/basic.lean Modified src/data/fintype/basic.lean Modified src/data/list/basic.lean +/- theorem list.countp_nil +/- theorem list.filter_filter +/- theorem list.span_eq_take_drop +/- theorem list.take_while_append_drop Modified src/data/list/perm.lean Modified src/data/multiset/basic.lean +/- theorem multiset.coe_count +/- theorem multiset.coe_filter +/- def multiset.countp +/- theorem multiset.countp_filter +/- theorem multiset.countp_zero +/- def multiset.filter +/- theorem multiset.filter_add +/- theorem multiset.filter_add_filter +/- theorem multiset.filter_filter +/- theorem multiset.filter_map_eq_filter +/- theorem multiset.filter_map_filter +/- theorem multiset.filter_zero Modified src/data/nat/totient.lean Modified src/linear_algebra/determinant.lean Modified src/measure_theory/prod.lean Modified src/topology/algebra/infinite_sum.lean 2020-11-02 04:55:01 556079b feat(ring_theory/polynomial/content): monic polynomials are primitive (#4862) Adds the lemma `monic.is_primitive`. ESTIMATED CHANGES Modified src/ring_theory/polynomial/content.lean + theorem polynomial.monic.is_primitive 2020-11-02 02:10:46 ecdc319 fix(tactic/simpa): reflect more simp errors (#4865) fixes #2061 ESTIMATED CHANGES Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/analysis/normed_space/inner_product.lean Modified src/category_theory/abelian/pseudoelements.lean Modified src/data/matrix/char_p.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/simpa.lean 2020-11-02 01:12:55 7c8868d chore(scripts): update nolints.txt (#4868) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-11-01 17:55:51 4aa087a doc(*): work around markdown2 bug for now (#4842) ESTIMATED CHANGES Modified src/category_theory/natural_isomorphism.lean Modified src/control/monad/writer.lean Modified src/tactic/localized.lean Modified src/tactic/simps.lean 2020-11-01 01:07:16 7a624b8 chore(scripts): update nolints.txt (#4860) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-31 22:44:12 6f7c539 docs(order/complete_lattice): make two docstrings more detailed (#4859) Following [discussion](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Constructing.20a.20complete.20lattice), clarify information about how to construct a complete lattice while preserving good definitional equalities. ESTIMATED CHANGES Modified src/order/complete_lattice.lean 2020-10-31 20:22:31 51cbb83 refactor(tactic/norm_num): move norm_num extensions (#4822) #4820 adds the long awaited ability for `norm_num` to be extended in other files. There are two norm_num extensions currently in mathlib: `norm_digits`, which was previously exposed as a standalone tactic, and `eval_prime`, which was a part of `norm_num` and so caused `tactic.norm_num` to depend on `data.nat.prime`. This PR turns both of these into norm_num extensions, and changes the dependencies so that `data.nat.prime` can import `norm_num` rather than the other way around (which required splitting `pnat` primality and gcd facts to their own file). ESTIMATED CHANGES Modified archive/imo/imo1959_q1.lean Modified archive/imo/imo1960_q1.lean Modified archive/imo/imo1969_q1.lean Modified archive/imo/imo1988_q6.lean Modified src/data/nat/digits.lean Modified src/data/nat/prime.lean + theorem tactic.norm_num.is_prime_helper + theorem tactic.norm_num.min_fac_bit0 + theorem tactic.norm_num.min_fac_helper.n_pos + def tactic.norm_num.min_fac_helper + theorem tactic.norm_num.min_fac_helper_0 + theorem tactic.norm_num.min_fac_helper_1 + theorem tactic.norm_num.min_fac_helper_2 + theorem tactic.norm_num.min_fac_helper_3 + theorem tactic.norm_num.min_fac_helper_4 + theorem tactic.norm_num.min_fac_helper_5 + theorem tactic.norm_num.min_fac_ne_bit0 + theorem tactic.norm_num.not_prime_helper Modified src/number_theory/divisors.lean Modified src/tactic/norm_num.lean - theorem norm_num.is_prime_helper - theorem norm_num.min_fac_bit0 - theorem norm_num.min_fac_helper.n_pos - def norm_num.min_fac_helper - theorem norm_num.min_fac_helper_0 - theorem norm_num.min_fac_helper_1 - theorem norm_num.min_fac_helper_2 - theorem norm_num.min_fac_helper_3 - theorem norm_num.min_fac_helper_4 - theorem norm_num.min_fac_helper_5 - theorem norm_num.min_fac_ne_bit0 - theorem norm_num.not_prime_helper Modified test/linarith.lean Modified test/norm_digits.lean Modified test/norm_num.lean Modified test/omega.lean 2020-10-31 17:41:26 be161d1 feat(category_theory/sites): functor inclusion constructions (#4845) ESTIMATED CHANGES Modified src/category_theory/sites/sieves.lean + def category_theory.sieve.sieve_of_subfunctor + theorem category_theory.sieve.sieve_of_subfunctor_apply + theorem category_theory.sieve.sieve_of_subfunctor_functor_inclusion 2020-10-31 17:41:24 d91c878 chore(group_theory/group_action): introduce `smul_comm_class` (#4770) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - theorem linear_map.algebra_module.smul_apply - def linear_map.restrict_scalars - theorem linear_map.smul_apply' - theorem map_smul_eq_smul_map Modified src/algebra/module/linear_map.lean + theorem linear_map.map_smul_of_tower + def linear_map.restrict_scalars Modified src/analysis/convex/basic.lean Modified src/data/complex/module.lean Modified src/group_theory/group_action.lean - theorem mul_smul +/- theorem smul_assoc - theorem smul_comm + theorem smul_comm_class.symm + theorem smul_one_smul Modified src/linear_algebra/basic.lean + def linear_map.applyₗ' +/- theorem linear_map.smul_apply +/- theorem linear_map.smul_comp Modified src/linear_algebra/matrix.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/derivation.lean Modified src/topology/algebra/module.lean 2020-10-31 15:07:49 9a03bdf chore(algebra/ordered_group): use implicit args, add `add_eq_coe` (#4853) * Use implicit arguments in various `iff` lemmas about `with_top`. * Add `add_eq_coe`. * Rewrite `with_top.ordered_add_comm_monoid` moving `begin .. end` blocks inside the structure. This way we don't depend on the fact that `refine` doesn't introduce any `id`s and it's easier to see right away which block proves which statement. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem with_top.add_eq_coe +/- theorem with_top.add_eq_top +/- theorem with_top.add_lt_top +/- theorem with_top.add_top +/- theorem with_top.top_add Modified src/data/real/ennreal.lean +/- theorem ennreal.add_eq_top +/- theorem ennreal.add_lt_top + theorem ennreal.coe_finset_sup +/- theorem ennreal.coe_le_iff +/- theorem ennreal.le_coe_iff +/- theorem ennreal.lt_iff_exists_coe Modified src/order/bounded_lattice.lean +/- theorem with_top.coe_le_iff + theorem with_top.coe_lt_iff +/- theorem with_top.le_coe_iff +/- theorem with_top.lt_iff_exists_coe Modified src/order/conditionally_complete_lattice.lean Modified src/topology/metric_space/basic.lean 2020-10-31 13:30:44 e14c378 refactor(order/filter): move some proofs to `bases` (#3478) Move some proofs to `order/filter/bases` and add `filter.has_basis` versions. Non-bc API changes: * `filter.inf_ne_bot_iff`; change `∀ {U V}, U ∈ f → V ∈ g → ...` to `∀ ⦃U⦄, U ∈ f → ∀ ⦃V⦄, V ∈ g → ...` so that `simp` lemmas about `∀ U ∈ f` can further simplify the result; * `filter.inf_eq_bot_iff`: similarly, change `∃ U V, ...` to `∃ (U ∈ f) (V ∈ g), ...` * `cluster_pt_iff`: similarly, change `∀ {U V : set α}, U ∈ 𝓝 x → V ∈ F → ...` to `∀ ⦃U : set α⦄ (hU : U ∈ 𝓝 x) ⦃V⦄ (hV : V ∈ F), ...` ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.inf_basis_ne_bot_iff + theorem filter.has_basis.inf_ne_bot_iff + theorem filter.has_basis.inf_principal_ne_bot_iff + theorem filter.inf_eq_bot_iff + theorem filter.inf_ne_bot_iff + theorem filter.inf_ne_bot_iff_frequently_left + theorem filter.inf_ne_bot_iff_frequently_right + theorem filter.inf_principal_ne_bot_iff + theorem filter.le_iff_forall_disjoint_principal_compl + theorem filter.le_iff_forall_inf_principal_compl + theorem filter.mem_iff_disjoint_principal_compl + theorem filter.mem_iff_inf_principal_compl Modified src/order/filter/basic.lean - theorem filter.inf_eq_bot_iff - theorem filter.inf_ne_bot_iff - theorem filter.inf_ne_bot_iff_frequently_left - theorem filter.inf_ne_bot_iff_frequently_right - theorem filter.inf_principal_ne_bot_iff - theorem filter.le_iff_forall_inf_principal_compl - theorem filter.mem_iff_inf_principal_compl Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean Modified src/topology/uniform_space/separation.lean 2020-10-31 08:44:02 f9c8abe chore(data/finset/basic): a few lemmas about `finset.piecewise` (#4852) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.le_piecewise_of_le_of_le + theorem finset.piecewise_cases + theorem finset.piecewise_congr + theorem finset.piecewise_le_of_le_of_le + theorem finset.piecewise_mem_set_pi + theorem finset.piecewise_singleton + theorem finset.update_piecewise + theorem finset.update_piecewise_of_mem + theorem finset.update_piecewise_of_not_mem Modified src/data/set/function.lean + theorem set.piecewise_mem_pi 2020-10-31 08:44:00 7756265 chore(linear_algebra/affine_space/ordered): compare endpoints to midpoint (#4851) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/ordered.lean + theorem left_le_midpoint + theorem midpoint_le_left + theorem midpoint_le_right + theorem right_le_midpoint 2020-10-31 08:43:59 1f61621 feat(linear_algebra/affine_space/affine_map): add `affine_map.proj` (#4850) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.pi_line_map_apply + def affine_map.proj + theorem affine_map.proj_apply + theorem affine_map.proj_linear Modified src/linear_algebra/affine_space/midpoint.lean + theorem pi_midpoint_apply 2020-10-31 08:43:57 6a44930 refactor(data/pnat): move data.pnat.prime (#4839) Remove the dependency `data.pnat.basic -> data.nat.prime`. Needed for #4822. ESTIMATED CHANGES Modified src/data/pnat/basic.lean - theorem nat.primes.coe_pnat_inj - theorem nat.primes.coe_pnat_nat - theorem pnat.coprime.coprime_dvd_left - theorem pnat.coprime.factor_eq_gcd_left - theorem pnat.coprime.factor_eq_gcd_left_right - theorem pnat.coprime.factor_eq_gcd_right - theorem pnat.coprime.factor_eq_gcd_right_right - theorem pnat.coprime.gcd_mul - theorem pnat.coprime.gcd_mul_left_cancel - theorem pnat.coprime.gcd_mul_left_cancel_right - theorem pnat.coprime.gcd_mul_right_cancel - theorem pnat.coprime.gcd_mul_right_cancel_right - theorem pnat.coprime.mul - theorem pnat.coprime.mul_right - theorem pnat.coprime.pow - theorem pnat.coprime.symm - def pnat.coprime - theorem pnat.coprime_coe - theorem pnat.coprime_one - theorem pnat.dvd_gcd - theorem pnat.dvd_lcm_left - theorem pnat.dvd_lcm_right - theorem pnat.dvd_prime - theorem pnat.eq_one_of_lt_two - theorem pnat.exists_prime_and_dvd - def pnat.gcd - theorem pnat.gcd_coe - theorem pnat.gcd_comm - theorem pnat.gcd_dvd_left - theorem pnat.gcd_dvd_right - theorem pnat.gcd_eq_left - theorem pnat.gcd_eq_left_iff_dvd - theorem pnat.gcd_eq_right_iff_dvd - theorem pnat.gcd_mul_lcm - theorem pnat.gcd_one - def pnat.lcm - theorem pnat.lcm_coe - theorem pnat.lcm_dvd - theorem pnat.not_prime_one - theorem pnat.one_coprime - theorem pnat.one_gcd - theorem pnat.prime.ne_one - theorem pnat.prime.not_dvd_one - theorem pnat.prime.one_lt - def pnat.prime - theorem pnat.prime_two Modified src/data/pnat/factors.lean Added src/data/pnat/prime.lean + theorem nat.primes.coe_pnat_inj + theorem nat.primes.coe_pnat_nat + theorem pnat.coprime.coprime_dvd_left + theorem pnat.coprime.factor_eq_gcd_left + theorem pnat.coprime.factor_eq_gcd_left_right + theorem pnat.coprime.factor_eq_gcd_right + theorem pnat.coprime.factor_eq_gcd_right_right + theorem pnat.coprime.gcd_mul + theorem pnat.coprime.gcd_mul_left_cancel + theorem pnat.coprime.gcd_mul_left_cancel_right + theorem pnat.coprime.gcd_mul_right_cancel + theorem pnat.coprime.gcd_mul_right_cancel_right + theorem pnat.coprime.mul + theorem pnat.coprime.mul_right + theorem pnat.coprime.pow + theorem pnat.coprime.symm + def pnat.coprime + theorem pnat.coprime_coe + theorem pnat.coprime_one + theorem pnat.dvd_gcd + theorem pnat.dvd_lcm_left + theorem pnat.dvd_lcm_right + theorem pnat.dvd_prime + theorem pnat.eq_one_of_lt_two + theorem pnat.exists_prime_and_dvd + def pnat.gcd + theorem pnat.gcd_coe + theorem pnat.gcd_comm + theorem pnat.gcd_dvd_left + theorem pnat.gcd_dvd_right + theorem pnat.gcd_eq_left + theorem pnat.gcd_eq_left_iff_dvd + theorem pnat.gcd_eq_right_iff_dvd + theorem pnat.gcd_mul_lcm + theorem pnat.gcd_one + def pnat.lcm + theorem pnat.lcm_coe + theorem pnat.lcm_dvd + theorem pnat.not_prime_one + theorem pnat.one_coprime + theorem pnat.one_gcd + theorem pnat.prime.ne_one + theorem pnat.prime.not_dvd_one + theorem pnat.prime.one_lt + def pnat.prime + theorem pnat.prime_two Modified src/data/pnat/xgcd.lean Modified src/data/rat/basic.lean Modified src/tactic/norm_num.lean 2020-10-31 08:43:55 3b2c97f feat(data/dfinsupp): Port `finsupp.lsum` and lemmas about `lift_add_hom` (#4833) This then removes the proofs of any `direct_sum` lemmas which become equivalent to the `lift_add_hom` lemmas ESTIMATED CHANGES Modified src/algebra/direct_sum.lean Modified src/data/dfinsupp.lean + theorem dfinsupp.comp_lift_add_hom + theorem dfinsupp.lhom_ext' + theorem dfinsupp.lhom_ext + theorem dfinsupp.lift_add_hom_apply_single + theorem dfinsupp.lift_add_hom_comp_single + theorem dfinsupp.lift_add_hom_single_add_hom + def dfinsupp.lsum + theorem dfinsupp.sum_add_hom_comp_single Modified src/linear_algebra/direct_sum_module.lean 2020-10-31 08:43:53 17697a6 feat(data/dfinsupp): Add dfinsupp.single_eq_single_iff, and subtype.heq_iff_coe_eq (#4810) This ought to make working with dfinsupps over subtypes easier ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.single_eq_single_iff Modified src/data/subtype.lean + theorem subtype.heq_iff_coe_eq 2020-10-31 06:18:28 67c2b5a feat(analysis/normed_space/add_torsor): distance to midpoint (#4849) ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean + theorem dist_center_homothety + theorem dist_homothety_center + theorem dist_homothety_self + theorem dist_left_midpoint + theorem dist_midpoint_left + theorem dist_midpoint_right + theorem dist_right_midpoint + theorem dist_self_homothety + theorem dist_vadd_left + theorem dist_vadd_right 2020-10-31 06:18:25 1521da6 feat(order/conditionally_complete_lattice): nested intervals lemma (#4848) * Add a few versions of the nested intervals lemma. * Add `pi`-instance for `conditionally_complete_lattice`. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem csupr_mem_Inter_Icc_of_mono_decr_Icc + theorem csupr_mem_Inter_Icc_of_mono_decr_Icc_nat + theorem csupr_mem_Inter_Icc_of_mono_incr_of_mono_decr Modified src/order/lattice.lean + theorem forall_le_of_monotone_of_mono_decr 2020-10-31 06:18:24 f5fd218 feat(algebra/module/ordered): add pi instance (#4847) ESTIMATED CHANGES Modified src/algebra/module/ordered.lean 2020-10-31 06:18:21 6fc3517 feat(category_theory/sites): generate lemmas (#4840) A couple of simple lemmas about the sieve generated by certain presieves. ESTIMATED CHANGES Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/sieves.lean + theorem category_theory.sieve.generate_of_contains_split_epi + theorem category_theory.sieve.generate_of_singleton_split_epi + theorem category_theory.sieve.generate_top + theorem category_theory.sieve.le_generate 2020-10-31 06:18:19 517f0b5 feat(ring_theory/polynomial/basic): prerequisites for galois_definition (#4829) ESTIMATED CHANGES Modified src/data/polynomial/degree/basic.lean + theorem polynomial.as_sum_range' Modified src/ring_theory/polynomial/basic.lean + def polynomial.degree_lt_equiv 2020-10-31 06:18:16 0f39d7a feat(data/prod): comp_map (#4826) ESTIMATED CHANGES Modified src/data/prod.lean + theorem prod.map_comp_map + theorem prod.map_map 2020-10-31 04:53:40 2283cf0 chore(order/filter/bases): golf a proof (#4834) * rename `filter.has_basis.forall_nonempty_iff_ne_bot` to `filter.has_basis.ne_bot_iff`, swap LHS with RHS; * add `filter.has_basis.eq_bot_iff`; * golf the proof of `filter.has_basis.ne_bot` using `filter.has_basis.forall_iff`. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean + theorem filter.has_basis.eq_bot_iff - theorem filter.has_basis.forall_nonempty_iff_ne_bot + theorem filter.has_basis.ne_bot_iff 2020-10-31 02:07:09 94fa905 feat(analysis/calculus/times_cont_diff): differentiability of field inverse (#4795) ESTIMATED CHANGES Modified src/algebra/field.lean + theorem inverse_eq_has_inv Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.div + theorem times_cont_diff.pow +/- theorem times_cont_diff_at.comp + theorem times_cont_diff_at.comp_times_cont_diff_within_at + theorem times_cont_diff_at.congr_of_eventually_eq + theorem times_cont_diff_at.div + theorem times_cont_diff_at.inv + theorem times_cont_diff_at_id + theorem times_cont_diff_at_inv + theorem times_cont_diff_on_id + theorem times_cont_diff_within_at.congr_nhds - theorem times_cont_diff_within_at.continuous_within_at' + theorem times_cont_diff_within_at.div + theorem times_cont_diff_within_at.inv + theorem times_cont_diff_within_at.mono_of_mem + theorem times_cont_diff_within_at_congr_nhds + theorem times_cont_diff_within_at_id Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.one_def Modified src/topology/continuous_on.lean + theorem continuous_within_at.mono_of_mem + theorem continuous_within_at_insert_self +/- theorem continuous_within_at_singleton + theorem continuous_within_at_union + theorem insert_mem_nhds_within_insert +/- theorem mem_nhds_within_insert + theorem nhds_within_insert + theorem nhds_within_singleton 2020-10-31 00:58:01 d5650a7 chore(scripts): update nolints.txt (#4844) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-10-30 18:58:08 cc7f06b feat(data/polynomial/lifts): polynomials that lift (#4796) Given semirings `R` and `S` with a morphism `f : R →+* S`, a polynomial with coefficients in `S` lifts if there exist `q : polynomial R` such that `map f p = q`. I proved some basic results about polynomials that lifts, for example concerning the sum etc. Almost all the proof are trivial (and essentially identical), fell free to comment just the first ones, I will do the changes in all the relevant lemmas. The proofs of `lifts_iff_lifts_deg` (a polynomial that lifts can be lifted to a polynomial of the same degree) and of `lifts_iff_lifts_deg_monic` (the same for monic polynomials) are quite painful, but this are the shortest proofs I found... I think that at least these two results deserve to be in mathlib (I'm using them to prove that the cyclotomic polynomial lift to `\Z`). ESTIMATED CHANGES Added src/data/polynomial/lifts.lean + theorem polynomial.C'_mem_lifts + theorem polynomial.C_mem_lifts + theorem polynomial.X_mem_lifts + theorem polynomial.X_pow_mem_lifts + theorem polynomial.base_mul_mem_lifts + theorem polynomial.erase_mem_lifts + def polynomial.lifts + theorem polynomial.lifts_and_degree_eq_and_monic + theorem polynomial.lifts_iff_coeff_lifts + theorem polynomial.lifts_iff_lifts_ring + theorem polynomial.lifts_iff_set_range + def polynomial.lifts_ring + def polynomial.map_alg + theorem polynomial.map_alg_eq_map + theorem polynomial.mem_lifts + theorem polynomial.mem_lifts_and_degree_eq + theorem polynomial.mem_lifts_iff_mem_alg + theorem polynomial.monomial_mem_lifts + theorem polynomial.monomial_mem_lifts_and_degree_eq + theorem polynomial.smul_mem_lifts 2020-10-30 14:20:39 bfadf05 feat(algebra, logic): Pi instances for nontrivial and monoid_with_zero (#4766) ESTIMATED CHANGES Modified src/algebra/group/pi.lean - def pi.single - theorem pi.single_eq_of_ne - theorem pi.single_eq_same Modified src/algebra/ring/pi.lean Added src/data/pi.lean + def pi.single + theorem pi.single_eq_of_ne + theorem pi.single_eq_same + theorem pi.single_injective Modified src/logic/function/basic.lean + theorem function.update_injective Modified src/logic/nontrivial.lean + theorem pi.nontrivial_at 2020-10-30 11:09:12 58f8817 feat(number_theory/fermat4): The n=4 case of fermat (#4720) Fermat's last theorem for n=4. ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean +/- theorem exists_associated_pow_of_mul_eq_pow Modified src/algebra/group_power/lemmas.lean + theorem int.abs_le_self_pow_two + theorem int.le_self_pow_two Modified src/algebra/group_with_zero_power.lean + theorem ne_zero_pow +/- theorem pow_eq_zero' +/- theorem pow_ne_zero' +/- theorem zero_pow' +/- theorem zero_pow_eq_zero Modified src/data/int/basic.lean + theorem int.neg_mod_two Added src/number_theory/fermat4.lean + theorem fermat_42.comm + theorem fermat_42.coprime_of_minimal + theorem fermat_42.exists_minimal + theorem fermat_42.exists_odd_minimal + theorem fermat_42.exists_pos_odd_minimal + def fermat_42.minimal + theorem fermat_42.minimal_comm + theorem fermat_42.mul + theorem fermat_42.ne_zero + theorem fermat_42.neg_of_minimal + theorem fermat_42.not_minimal + def fermat_42 + theorem int.coprime_of_sqr_sum' + theorem int.coprime_of_sqr_sum + theorem not_fermat_42 + theorem not_fermat_4 Modified src/number_theory/pythagorean_triples.lean + theorem pythagorean_triple.coprime_classification' Modified src/ring_theory/int/basic.lean + theorem int.exists_unit_of_abs + theorem int.gcd_eq_one_iff_coprime + theorem int.prime.dvd_pow' + theorem int.prime.dvd_pow + theorem int.sqr_of_coprime + theorem int.sqr_of_gcd_eq_one 2020-10-30 11:09:05 d28e3d1 feat(ring_theory/witt_vector/is_poly): supporting ghost calculations (#4691) Most operations on Witt vectors can be described/defined by evaluating integral polynomials on the coefficients of Witt vectors. One can prove identities between combinations of such operations by applying the non-injective ghost map, and continuing to prove the resulting identity of ghost components. Such a calculation is called a ghost calculation. This file provides the theoretical justification for why applying the non-injective ghost map is a legal move, and it provides tactics that aid in applying this step to the point that it is almost transparent. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/is_poly.lean + theorem witt_vector.add_is_poly₂ + theorem witt_vector.bind₁_one_poly_witt_polynomial + theorem witt_vector.bind₁_zero_witt_polynomial + theorem witt_vector.is_poly.comp + theorem witt_vector.is_poly.comp₂ + theorem witt_vector.is_poly.ext + theorem witt_vector.is_poly.map + def witt_vector.is_poly + theorem witt_vector.is_poly₂.comp + theorem witt_vector.is_poly₂.comp_left + theorem witt_vector.is_poly₂.comp_right + theorem witt_vector.is_poly₂.diag + theorem witt_vector.is_poly₂.ext + theorem witt_vector.is_poly₂.map + def witt_vector.is_poly₂ + theorem witt_vector.mul_is_poly₂ + theorem witt_vector.neg_is_poly + def witt_vector.one_poly + theorem witt_vector.poly_eq_of_witt_polynomial_bind_eq' + theorem witt_vector.poly_eq_of_witt_polynomial_bind_eq 2020-10-30 08:20:23 3aac028 feat(field_theory/intermediate_field): equalities from inclusions and dimension bounds (#4828) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.eq_of_le_of_findim_eq' + theorem intermediate_field.eq_of_le_of_findim_eq + theorem intermediate_field.eq_of_le_of_findim_le' + theorem intermediate_field.eq_of_le_of_findim_le Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.eq_of_le_of_findim_le 2020-10-30 08:20:21 6ec7aec feat(data/polynomial): ext lemmas for homomorphisms from `polynomial R` (#4823) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.alg_hom_ext Modified src/data/polynomial/basic.lean + theorem polynomial.add_hom_ext' + theorem polynomial.add_hom_ext + theorem polynomial.lhom_ext' Modified src/data/polynomial/monomial.lean + theorem polynomial.ring_hom_ext' + theorem polynomial.ring_hom_ext 2020-10-30 08:20:19 03a477c feat(data/dfinsupp): Port over the `finsupp.lift_add_hom` API (#4821) These lemmas are mostly copied with minimal translation from `finsupp`. A few proofs are taken from `direct_sum`. The API of `direct_sum` is deliberately unchanged in this PR. ESTIMATED CHANGES Modified src/algebra/direct_sum.lean Modified src/data/dfinsupp.lean + theorem dfinsupp.add_closure_Union_range_single + theorem dfinsupp.add_hom_ext' + theorem dfinsupp.add_hom_ext + def dfinsupp.lift_add_hom + def dfinsupp.single_add_hom + def dfinsupp.sum_add_hom + theorem dfinsupp.sum_add_hom_apply + theorem dfinsupp.sum_add_hom_single 2020-10-30 08:20:18 5ae192e feat(data/equiv, algebra/*): Add simps projections to many equivs and homs (#4818) This doesn't actually change any existing lemmas to use these projections. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def alg_equiv.simps.inv_fun Modified src/algebra/group/hom.lean Modified src/algebra/module/linear_map.lean + def linear_equiv.simps.inv_fun Modified src/algebra/ring/basic.lean Modified src/data/equiv/mul_add.lean + def mul_equiv.simps.inv_fun Modified src/data/equiv/ring.lean + def ring_equiv.simps.inv_fun 2020-10-30 08:20:16 d46d0c2 chore(topology/basic): the set of cluster pts of a filter is a closed set (#4815) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem interior_eq_nhds' + theorem interior_set_of_eq + theorem is_closed_set_of_cluster_pt + theorem is_open_set_of_eventually_nhds Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/compact_separated.lean 2020-10-30 08:20:14 072cfc5 chore(data/dfinsupp): Provide dfinsupp with a semimodule instance (#4801) finsupp already has one, it seems pointless to hide the one for dfinsupp behind a def. ESTIMATED CHANGES Modified src/data/dfinsupp.lean - def dfinsupp.to_has_scalar - def dfinsupp.to_semimodule Modified src/linear_algebra/direct_sum_module.lean 2020-10-30 08:20:09 63c0dac refactor(module/ordered): make ordered_semimodule a mixin (#4719) Per @urkud's suggestion at #4683. This should avoid having to introduce a separate `ordered_algebra` class. ESTIMATED CHANGES Modified src/algebra/module/ordered.lean + theorem ordered_semimodule.mk'' - def ordered_semimodule.mk'' + theorem ordered_semimodule.mk' - def ordered_semimodule.mk' Modified src/analysis/convex/basic.lean +/- theorem concave_on.concave_le +/- theorem concave_on.convex_hypograph +/- theorem concave_on.convex_lt +/- theorem concave_on.smul +/- theorem concave_on_iff_convex_hypograph +/- theorem convex_on.convex_epigraph +/- theorem convex_on.convex_le +/- theorem convex_on.convex_lt +/- theorem convex_on.smul +/- theorem convex_on_iff_convex_epigraph +/- theorem neg_concave_on_iff +/- theorem neg_convex_on_iff Modified src/analysis/convex/cone.lean + theorem convex_cone.to_ordered_semimodule - def convex_cone.to_ordered_semimodule Modified src/analysis/convex/extrema.lean Modified src/linear_algebra/affine_space/ordered.lean 2020-10-30 05:28:30 4003b3e feat(*): a, switch to lean 3.23 (#4802) There are three changes affecting mathlib: 1. `ℕ → ℕ` is now elaborated as `∀ ᾰ : ℕ, ℕ`. This means that `intro` introduces assumptions with names like `ᾰ_1`, etc. These names should not be used, and instead provided explicitly to `intro` (and other tactics). 2. The heuristic to determine the definition name for `instance : foo bar` has been changed. 3. `by_contra` now uses classical logic, and defaults to the hypothesis name `h`. 4. adds a few new simp-lemmas in `data/typevec` ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified leanpkg.toml Modified scripts/lint-copy-mod-doc.py Modified src/algebra/algebra/subalgebra.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/free_algebra.lean Modified src/algebra/group/ulift.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/category_theory/is_connected.lean Modified src/category_theory/limits/cofinal.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/reflects_isomorphisms.lean Modified src/combinatorics/simple_graph.lean Modified src/computability/tm_to_partrec.lean Modified src/control/functor/multivariate.lean Modified src/control/lawful_fix.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp/lattice.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/sigma.lean Modified src/data/matrix/basic.lean Modified src/data/mv_polynomial/monad.lean Modified src/data/nat/factorial.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/num/lemmas.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pfunctor/univariate/M.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/degree/basic.lean Modified src/data/real/basic.lean +/- def real.comm_ring_aux Modified src/data/real/cau_seq_completion.lean Modified src/data/sym2.lean Modified src/data/typevec.lean + theorem typevec.prod_fst_mk + theorem typevec.prod_snd_mk + theorem typevec.subtype_val_to_subtype' + theorem typevec.subtype_val_to_subtype + theorem typevec.to_subtype'_of_subtype' Modified src/geometry/manifold/algebra/smooth_functions.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/group_action.lean Modified src/group_theory/presented_group.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/sylow.lean Modified src/logic/basic.lean Modified src/number_theory/lucas_lehmer.lean Modified src/order/omega_complete_partial_order.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/testing/slim_check/sampleable.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/category/Compactum.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/omega_complete_partial_order.lean Modified test/finish3.lean Modified test/norm_cast.lean Modified test/pretty_cases.lean Modified test/qpf.lean 2020-10-30 02:02:16 581b2af feat(analysis/asymptotics): Equivalent definitions for `is_[oO] u v l` looking like `u = φ * v` for some `φ` (#4646) The advantage of these statements over `u/v` tendsto 0 / is bounded is they do not require any nonvanishing assumptions about `v` ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.eventually_mul_div_cancel + theorem asymptotics.is_O_iff_exists_eq_mul + theorem asymptotics.is_O_with.eventually_mul_div_cancel + theorem asymptotics.is_O_with.exists_eq_mul + theorem asymptotics.is_O_with_iff_exists_eq_mul + theorem asymptotics.is_O_with_of_eq_mul + theorem asymptotics.is_o.eventually_mul_div_cancel + theorem asymptotics.is_o_iff_exists_eq_mul 2020-10-30 01:08:49 f510728 chore(scripts): update nolints.txt (#4825) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-29 22:37:58 fc307f9 feat(tactic/norm_num): make norm_num extensible (#4820) This allows you to extend `norm_num` by defining additional tactics of type `expr → tactic (expr × expr)` with the `@[norm_num]` attribute. It still requires some tactic proficiency to use correctly, but it at least allows us to move all the possible norm_num extensions to their own files instead of the current dependency cycle problem. This could potentially become a performance problem if too many things are marked `@[norm_num]`, as they are simply looked through in linear order. It could be improved by having extensions register a finite set of constants that they wish to evaluate, and dispatch to the right extension tactic using a `name_map`. ```lean def foo : ℕ := 1 @[norm_num] meta def eval_foo : expr → tactic (expr × expr) | `(foo) := pure (`(1:ℕ), `(eq.refl 1)) | _ := tactic.failed example : foo = 1 := by norm_num ``` ESTIMATED CHANGES Modified src/tactic/abel.lean Modified src/tactic/norm_num.lean Modified src/tactic/ring_exp.lean Modified test/norm_num.lean + def foo 2020-10-29 19:28:13 2c7efdf feat(category_theory/sites): Grothendieck topology on a space (#4819) The grothendieck topology associated to a topological space. I also changed a definition I meant to change in #4816, and updated the TODOs of some docstrings; I can split these into separate PRs if needed but I think all the changes are quite minor ESTIMATED CHANGES Modified src/category_theory/sites/grothendieck.lean Modified src/category_theory/sites/pretopology.lean Modified src/category_theory/sites/sieves.lean - theorem category_theory.presieve.singleton_arrow_self + theorem category_theory.presieve.singleton_self Added src/category_theory/sites/spaces.lean + def opens.grothendieck_topology + def opens.pretopology + theorem opens.pretopology_to_grothendieck 2020-10-29 19:28:10 92af9fa feat(category_theory/limits/pullbacks): pullback self is id iff mono (#4813) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback_cone.is_limit_mk_id_id + theorem category_theory.limits.pullback_cone.mono_of_is_limit_mk_id_id 2020-10-29 19:28:07 78811e0 feat(ring_theory/unique_factorization_domain): `unique_factorization_monoid` structure on polynomials over ufd (#4774) Provides the `unique_factorization_monoid` structure on polynomials over a UFD ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/ring_theory/polynomial/basic.lean +/- theorem polynomial.exists_irreducible_of_degree_pos +/- theorem polynomial.exists_irreducible_of_nat_degree_ne_zero +/- theorem polynomial.exists_irreducible_of_nat_degree_pos Modified src/ring_theory/polynomial/content.lean Modified src/ring_theory/unique_factorization_domain.lean 2020-10-29 19:28:03 856381c chore(data/equiv/basic): arrow_congr preserves properties of binary operators (#4759) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.semiconj_conj + theorem equiv.semiconj₂_conj Modified src/logic/function/conjugate.lean + theorem function.semiconj₂.is_associative_left + theorem function.semiconj₂.is_associative_right + theorem function.semiconj₂.is_idempotent_left + theorem function.semiconj₂.is_idempotent_right 2020-10-29 19:28:00 ccc98d0 refactor(*): `midpoint`, `point_reflection`, and Mazur-Ulam in affine spaces (#4752) * redefine `midpoint` for points in an affine space; * redefine `point_reflection` for affine spaces (as `equiv`, `affine_equiv`, and `isometric`); * define `const_vsub` as `equiv`, `affine_equiv`, and `isometric`; * define `affine_map.of_map_midpoint`; * fully migrate the proof of Mazur-Ulam theorem to affine spaces; ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem equiv.coe_const_vsub + theorem equiv.coe_const_vsub_symm + def equiv.const_vsub + theorem equiv.injective_point_reflection_left_of_injective_bit0 + def equiv.point_reflection + theorem equiv.point_reflection_apply + theorem equiv.point_reflection_fixed_iff_of_injective_bit0 + theorem equiv.point_reflection_involutive + theorem equiv.point_reflection_self + theorem equiv.point_reflection_symm Modified src/algebra/invertible.lean + theorem one_sub_inv_of_two Deleted src/algebra/midpoint.lean - theorem add_monoid_hom.coe_of_map_midpoint - def add_monoid_hom.of_map_midpoint - theorem equiv.point_reflection_midpoint_left - theorem equiv.point_reflection_midpoint_right - def midpoint - theorem midpoint_add_add - theorem midpoint_add_left - theorem midpoint_add_right - theorem midpoint_add_self - theorem midpoint_comm - theorem midpoint_def - theorem midpoint_eq_iff - theorem midpoint_neg_neg - theorem midpoint_self - theorem midpoint_smul_smul - theorem midpoint_sub_left - theorem midpoint_sub_right - theorem midpoint_sub_sub - theorem midpoint_unique - theorem midpoint_zero_add Modified src/algebra/module/basic.lean + theorem two_smul' Modified src/analysis/normed_space/add_torsor.lean + def affine_map.of_map_midpoint + theorem isometric.coe_const_vsub + theorem isometric.coe_const_vsub_symm + def isometric.const_vsub + theorem isometric.dist_point_reflection_fixed + theorem isometric.dist_point_reflection_self' + theorem isometric.dist_point_reflection_self + theorem isometric.dist_point_reflection_self_real + def isometric.point_reflection + theorem isometric.point_reflection_apply + theorem isometric.point_reflection_fixed_iff + theorem isometric.point_reflection_involutive + theorem isometric.point_reflection_midpoint_left + theorem isometric.point_reflection_midpoint_right + theorem isometric.point_reflection_self + theorem isometric.point_reflection_symm + theorem isometric.point_reflection_to_equiv Modified src/analysis/normed_space/mazur_ulam.lean + theorem isometric.coe_to_affine_equiv - theorem isometric.coe_to_affine_map +/- theorem isometric.map_midpoint +/- theorem isometric.midpoint_fixed + def isometric.to_affine_equiv - def isometric.to_affine_map Deleted src/analysis/normed_space/point_reflection.lean - theorem equiv.point_reflection_fixed_iff_of_module - def isometric.point_reflection - theorem isometric.point_reflection_apply - theorem isometric.point_reflection_dist_fixed - theorem isometric.point_reflection_dist_self' - theorem isometric.point_reflection_dist_self - theorem isometric.point_reflection_dist_self_real - theorem isometric.point_reflection_fixed_iff - theorem isometric.point_reflection_involutive - theorem isometric.point_reflection_midpoint_left - theorem isometric.point_reflection_midpoint_right - theorem isometric.point_reflection_self - theorem isometric.point_reflection_symm - theorem isometric.point_reflection_to_equiv Modified src/data/equiv/mul_add.lean - def equiv.point_reflection - theorem equiv.point_reflection_apply - theorem equiv.point_reflection_fixed_iff_of_bit0_injective - theorem equiv.point_reflection_involutive - theorem equiv.point_reflection_self - theorem equiv.point_reflection_symm Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.apply_line_map + theorem affine_equiv.coe_const_vsub + theorem affine_equiv.coe_const_vsub_symm + def affine_equiv.const_vsub + theorem affine_equiv.injective_point_reflection_left_of_injective_bit0 + theorem affine_equiv.injective_point_reflection_left_of_module + def affine_equiv.point_reflection + theorem affine_equiv.point_reflection_apply + theorem affine_equiv.point_reflection_fixed_iff_of_injective_bit0 + theorem affine_equiv.point_reflection_fixed_iff_of_module + theorem affine_equiv.point_reflection_involutive + theorem affine_equiv.point_reflection_self + theorem affine_equiv.point_reflection_symm + theorem affine_equiv.to_equiv_point_reflection + theorem affine_map.homothety_neg_one_apply + theorem affine_map.line_map_vadd + theorem affine_map.line_map_vsub + theorem affine_map.vadd_line_map + theorem affine_map.vsub_line_map Modified src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.homothety_eq_line_map + theorem affine_map.left_vsub_line_map + theorem affine_map.line_map_vadd_line_map + theorem affine_map.line_map_vsub_left + theorem affine_map.line_map_vsub_line_map + theorem affine_map.line_map_vsub_right + theorem affine_map.right_vsub_line_map Added src/linear_algebra/affine_space/midpoint.lean + theorem add_monoid_hom.coe_of_map_midpoint + def add_monoid_hom.of_map_midpoint + theorem affine_equiv.map_midpoint + theorem affine_equiv.point_reflection_midpoint_left + theorem affine_equiv.point_reflection_midpoint_right + theorem affine_map.map_midpoint + theorem homothety_inv_of_two + theorem homothety_inv_two + theorem homothety_one_half + theorem line_map_inv_two + theorem line_map_one_half + def midpoint + theorem midpoint_add_self + theorem midpoint_comm + theorem midpoint_eq_iff' + theorem midpoint_eq_iff + theorem midpoint_eq_midpoint_iff_vsub_eq_vsub + theorem midpoint_self + theorem midpoint_unique + theorem midpoint_vadd_midpoint + theorem midpoint_vsub_midpoint + theorem midpoint_zero_add 2020-10-29 19:27:56 4d19191 feat(algebra/monoid_algebra): Add an equivalence between `add_monoid_algebra` and `monoid_algebra` in terms of `multiplicative` (#4402) ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.map_domain_mul + theorem monoid_algebra.map_domain_mul 2020-10-29 18:26:22 d709ed6 feat(algebra/direct_sum*): relax a lot of constraints to add_comm_monoid (#3537) ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/algebra/direct_sum.lean + theorem direct_sum.sub_apply + theorem direct_sum.to_add_monoid.unique + def direct_sum.to_add_monoid + theorem direct_sum.to_add_monoid_of - theorem direct_sum.to_group.unique - def direct_sum.to_group - theorem direct_sum.to_group_of +/- def direct_sum Modified src/linear_algebra/direct_sum_module.lean +/- theorem direct_sum.smul_apply 2020-10-29 15:42:46 f83468d feat(category_theory/functor_category): monos in the functor category (#4811) ESTIMATED CHANGES Modified src/category_theory/functor_category.lean + theorem category_theory.nat_trans.epi_app_of_epi + theorem category_theory.nat_trans.mono_app_of_mono 2020-10-29 14:18:55 7d7e850 chore(category_theory/sites): nicer names (#4816) Changes the name `arrows_with_codomain` to `presieve` which is more suggestive and shorter, and changes `singleton_arrow` to `singleton`, since it's in the presieve namespace anyway. ESTIMATED CHANGES Modified src/category_theory/sites/pretopology.lean +/- def category_theory.pullback_arrows Modified src/category_theory/sites/sieves.lean - def category_theory.arrows_with_codomain.bind - theorem category_theory.arrows_with_codomain.bind_comp - def category_theory.arrows_with_codomain.singleton_arrow - theorem category_theory.arrows_with_codomain.singleton_arrow_eq_iff_domain - theorem category_theory.arrows_with_codomain.singleton_arrow_self - def category_theory.arrows_with_codomain + def category_theory.presieve.bind + theorem category_theory.presieve.bind_comp + def category_theory.presieve.singleton + theorem category_theory.presieve.singleton_arrow_self + theorem category_theory.presieve.singleton_eq_iff_domain + def category_theory.presieve +/- def category_theory.sieve.bind +/- def category_theory.sieve.generate +/- def category_theory.sieve.gi_generate +/- theorem category_theory.sieve.le_pullback_bind +/- theorem category_theory.sieve.mem_generate +/- theorem category_theory.sieve.pushforward_le_bind_of_mem +/- theorem category_theory.sieve.sets_iff_generate 2020-10-29 13:24:15 8b858d0 feat(data/dfinsupp): Relax requirements of semimodule conversion to add_comm_monoid (#3490) The extra `_`s required to make this still build are unfortunate, but hopefully someone else can work out how to remove them in a later PR. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/algebra/direct_sum.lean + theorem direct_sum.add_apply + theorem direct_sum.zero_apply Modified src/algebra/lie/basic.lean +/- theorem lie_algebra.of_associative_algebra_hom_id Modified src/data/dfinsupp.lean +/- theorem dfinsupp.ext +/- theorem dfinsupp.smul_apply +/- theorem dfinsupp.support_smul +/- def dfinsupp.to_has_scalar +/- def dfinsupp.to_semimodule Modified src/linear_algebra/direct_sum_module.lean + theorem direct_sum.smul_apply + theorem direct_sum.support_smul 2020-10-29 09:49:53 d510a63 feat(linear_algebra/finite_dimensional): finite dimensional algebra_hom of fields is bijective (#4793) Changes to finite_dimensional.lean from #4786 ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem alg_hom.bijective 2020-10-29 07:30:22 1baf701 feat(category_theory/Fintype): Adds the category of finite types and its "standard" skeleton. (#4809) This PR adds the category `Fintype` of finite types, as well as its "standard" skeleton whose objects are `fin n`. ESTIMATED CHANGES Added src/category_theory/Fintype.lean + def Fintype.incl + def Fintype.of + def Fintype.skeleton.incl + theorem Fintype.skeleton.incl_mk_nat_card + theorem Fintype.skeleton.is_skeletal + def Fintype.skeleton.mk + def Fintype.skeleton.to_nat + def Fintype.skeleton + def Fintype Modified src/data/fintype/basic.lean + theorem fin.equiv_iff_eq 2020-10-29 01:05:47 d9c8215 chore(scripts): update nolints.txt (#4814) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-28 20:49:21 69d41da feat(tactic/dependencies): add tactics to compute (reverse) dependencies (#4602) These are the beginnings of an API about dependencies between expressions. For now, we only deal with dependencies and reverse dependencies of hypotheses, which are easy to compute. Breaking change: `tactic.revert_deps` is renamed to `tactic.revert_reverse_dependencies_of_hyp` for consistency. Its implementation is completely new, but should be equivalent to the old one except for the order in which hypotheses are reverted. (But the old implementation made no particular guarantees about this order anyway.) ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/tactic/basic.lean Modified src/tactic/core.lean Added src/tactic/dependencies.lean Modified src/tactic/interactive.lean Modified src/tactic/wlog.lean Added test/dependencies.lean Modified test/tactics.lean 2020-10-28 18:09:43 d75da1a feat(topology/algebra/group_with_zero): introduce `has_continuous_inv'` (#4804) Move lemmas about continuity of division from `normed_field`, add a few new lemmas, and introduce a new typeclass. Also use it for `nnreal`s. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean - theorem continuous.div - theorem continuous.inv' - theorem continuous_at.div - theorem continuous_at.inv' - theorem continuous_on.div - theorem continuous_on.inv' - theorem continuous_within_at.div - theorem continuous_within_at.inv' - theorem filter.tendsto.div - theorem filter.tendsto.div_const - theorem filter.tendsto.inv' - theorem normed_field.continuous_on_inv - theorem normed_field.tendsto_inv Modified src/measure_theory/borel_space.lean Added src/topology/algebra/group_with_zero.lean + theorem continuous.div + theorem continuous.div_const + theorem continuous.inv' + theorem continuous_at.div + theorem continuous_at.div_const + theorem continuous_at.inv' + theorem continuous_on.div + theorem continuous_on.div_const + theorem continuous_on.inv' + theorem continuous_on_div + theorem continuous_on_inv' + theorem continuous_within_at.div + theorem continuous_within_at.div_const + theorem continuous_within_at.inv' + theorem filter.tendsto.div + theorem filter.tendsto.div_const + theorem filter.tendsto.inv' + theorem tendsto_inv' Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean - theorem nnreal.tendsto.sub +/- theorem nnreal.tendsto_coe 2020-10-28 18:09:41 80ffad0 chore(data/dfinsupp): Make some lemma arguments explicit (#4803) This file is long and this is not exhaustive, but this hits most of the simpler ones ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Modified src/data/dfinsupp.lean +/- theorem dfinsupp.add_apply +/- theorem dfinsupp.filter_pos_add_filter_neg +/- theorem dfinsupp.neg_apply +/- theorem dfinsupp.sub_apply +/- theorem dfinsupp.zero_apply Modified src/linear_algebra/direct_sum_module.lean 2020-10-28 18:09:39 7a37dd4 feat(algebra/monoid_algebra): Bundle lift_nc_mul and lift_nc_one into a ring_hom and alg_hom (#4789) ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + def add_monoid_algebra.lift_nc_alg_hom + def add_monoid_algebra.lift_nc_ring_hom + def monoid_algebra.lift_nc_alg_hom + def monoid_algebra.lift_nc_ring_hom 2020-10-28 18:09:37 28cc74f feat(ring_theory/unique_factorization_domain): a `normalization_monoid` structure for ufms (#4772) Provides a default `normalization_monoid` structure on a `unique_factorization_monoid` ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.associated_map_mk + theorem associates.mk_monoid_hom_apply Modified src/algebra/gcd_monoid.lean + def normalization_monoid_of_monoid_hom_right_inverse Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_monoid.factors_mul + theorem unique_factorization_monoid.factors_one 2020-10-28 18:09:35 25df267 feat(category_theory/limits/presheaf): free cocompletion (#4740) Fill in the missing part of #4401, showing that the yoneda extension is unique. Also adds some basic API around #4401. ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/elements.lean + def category_theory.category_of_elements.map + theorem category_theory.category_of_elements.map_π Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.is_colimit_of_preserves + def category_theory.limits.is_limit_of_preserves Modified src/category_theory/limits/presheaf.lean + theorem category_theory.cocone_of_representable_naturality + theorem category_theory.cocone_of_representable_ι_app + def category_theory.nat_iso_of_nat_iso_on_representables + def category_theory.unique_extension_along_yoneda 2020-10-28 18:09:33 dfa85b5 feat(archive/imo): formalize IMO 1981 problem Q3 (#4599) Determine the maximum value of `m ^ 2 + n ^ 2`, where `m` and `n` are integers in `{1, 2, ..., 1981}` and `(n ^ 2 - m * n - m ^ 2) ^ 2 = 1`. ESTIMATED CHANGES Added archive/imo/imo1981_q3.lean + theorem imo1981_q3 + theorem k_bound + theorem m_n_bounds + theorem nat_predicate.eq_imp_1 + theorem nat_predicate.imp_fib + theorem nat_predicate.m_le_n + theorem nat_predicate.m_pos + theorem nat_predicate.n_le_N + theorem nat_predicate.n_pos + theorem nat_predicate.reduction + def nat_predicate + theorem problem_predicate.eq_imp_1 + theorem problem_predicate.m_le_n + theorem problem_predicate.reduction + structure problem_predicate + theorem solution_bound + theorem solution_greatest + def specified_set Modified src/algebra/ordered_ring.lean + theorem abs_eq_iff_mul_self_eq + theorem abs_le_iff_mul_self_le + theorem abs_lt_iff_mul_self_lt + theorem mul_self_inj + theorem zero_lt_three Modified src/data/int/basic.lean + theorem int.nat_abs_eq_iff_mul_self_eq + theorem int.nat_abs_eq_iff_sq_eq + theorem int.nat_abs_le_iff_mul_self_le + theorem int.nat_abs_le_iff_sq_le + theorem int.nat_abs_lt_iff_mul_self_lt + theorem int.nat_abs_lt_iff_sq_lt Modified src/data/nat/basic.lean + theorem nat.eq_one_of_mul_eq_one_left + theorem nat.eq_one_of_mul_eq_one_right +/- theorem nat.zero_max Modified src/data/nat/fib.lean + theorem nat.fib_two 2020-10-28 15:21:10 40da087 feat(equiv/basic): use @[simps] (#4652) Use the `@[simps]` attribute to automatically generate equation lemmas for equivalences. The names `foo_apply` and `foo_symm_apply` are used for the projection lemmas of `foo`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- def equiv.Pi_congr_left' - theorem equiv.Pi_congr_left'_apply - theorem equiv.Pi_congr_left'_symm_apply - theorem equiv.arrow_congr'_apply +/- def equiv.arrow_congr - theorem equiv.arrow_congr_apply - theorem equiv.coe_of_bijective - theorem equiv.coe_plift - theorem equiv.coe_plift_symm - theorem equiv.coe_prod_comm - theorem equiv.coe_prod_congr - theorem equiv.coe_ulift - theorem equiv.coe_ulift_symm - theorem equiv.conj_apply +/- def equiv.fun_unique - theorem equiv.fun_unique_apply - theorem equiv.fun_unique_symm_apply - theorem equiv.of_injective_apply +/- def equiv.prod_assoc - theorem equiv.prod_assoc_apply - theorem equiv.prod_assoc_sym_apply +/- def equiv.prod_comm +/- def equiv.prod_congr +/- def equiv.prod_punit - theorem equiv.prod_punit_apply +/- def equiv.psigma_equiv_sigma - theorem equiv.psigma_equiv_sigma_apply - theorem equiv.psigma_equiv_sigma_symm_apply - theorem equiv.punit_prod_apply - theorem equiv.set.image_apply - theorem equiv.set.of_eq_apply - theorem equiv.set.of_eq_symm_apply - theorem equiv.set.range_apply - theorem equiv.set.univ_apply - theorem equiv.set.univ_symm_apply - theorem equiv.sigma_congr_left_apply - theorem equiv.sigma_congr_right_apply - theorem equiv.sigma_congr_right_symm_apply +/- def equiv.sigma_equiv_prod - theorem equiv.sigma_equiv_prod_apply - theorem equiv.sigma_equiv_prod_symm_apply - theorem equiv.sigma_preimage_equiv_apply - theorem equiv.sigma_preimage_equiv_symm_apply_fst - theorem equiv.sigma_preimage_equiv_symm_apply_snd_fst + def equiv.simps.inv_fun - theorem equiv.subtype_congr_right_mk - theorem equiv.subtype_preimage_apply - theorem equiv.subtype_preimage_symm_apply_coe - theorem equiv.sum_comm_apply - theorem equiv.sum_congr_apply Modified src/data/subtype.lean +/- def subtype.coind +/- def subtype.map + def subtype.simps.val Modified src/tactic/simps.lean Modified test/simps.lean 2020-10-28 10:34:25 e8f8de6 feat(ring_theory/valuation): ring of integers (#4729) ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean + theorem pow_lt_pow' + theorem pow_lt_pow_succ + theorem zero_lt_one'' Modified src/ring_theory/valuation/basic.lean + theorem valuation.map_add_le + theorem valuation.map_add_lt + theorem valuation.map_sum_le + theorem valuation.map_sum_lt' + theorem valuation.map_sum_lt Added src/ring_theory/valuation/integers.lean + theorem valuation.integer.integers + def valuation.integer + theorem valuation.integers.dvd_iff_le + theorem valuation.integers.dvd_of_le + theorem valuation.integers.is_unit_of_one + theorem valuation.integers.le_iff_dvd + theorem valuation.integers.le_of_dvd + theorem valuation.integers.one_of_is_unit + structure valuation.integers Added src/ring_theory/valuation/integral.lean + theorem valuation.integers.mem_of_integral 2020-10-28 09:18:54 216cbc4 feat(analysis/special_functions/trigonometric): simp attributes for trig values (#4806) simp attributes for the trig values that didn't already have them ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean +/- theorem real.cos_pi_div_eight +/- theorem real.cos_pi_div_four +/- theorem real.cos_pi_div_six +/- theorem real.cos_pi_div_sixteen +/- theorem real.cos_pi_div_thirty_two +/- theorem real.cos_pi_div_three +/- theorem real.sin_pi_div_eight +/- theorem real.sin_pi_div_four +/- theorem real.sin_pi_div_six +/- theorem real.sin_pi_div_sixteen +/- theorem real.sin_pi_div_thirty_two +/- theorem real.sin_pi_div_three 2020-10-28 07:49:32 6dfa952 refactor(order/filter): make `filter.has_mem semireducible (#4807) This way `simp only []` does not simplify `s ∈ f` to `s ∈ f.sets`. * Add protected simp lemmas `filter.mem_mk` and `filter.mem_sets`. * Use implicit argument in `filter.mem_generate_iff`. * Use `∃ t, s ∈ ...` instead of `s ∈ ⋃ t, ...` in `filter.mem_infi_finite` and `filter.mem_infi_finite'`. * Use an implicit argument in `(non/ne_)empty_of_mem_ultrafilter`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/data/analysis/topology.lean Modified src/order/filter/basic.lean +/- theorem filter.mem_generate_iff Modified src/order/filter/lift.lean Modified src/order/filter/partial.lean Modified src/order/filter/pointwise.lean Modified src/order/filter/ultrafilter.lean +/- theorem filter.ne_empty_of_mem_ultrafilter +/- theorem filter.nonempty_of_mem_ultrafilter Modified src/topology/category/Compactum.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/order.lean Modified src/topology/uniform_space/compact_separated.lean 2020-10-28 06:06:38 7807f3d chore(linear_algebra/affine_space/basic): split (#4767) * Split `linear_algebra/affine_space/basic` into two files: `affine_map` and `affine_subspace`. * Move notation `affine_space` to the bottom of `algebra/add_torsor`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/linear_algebra/affine_space/affine_equiv.lean Added src/linear_algebra/affine_space/affine_map.lean + theorem affine_map.add_linear + theorem affine_map.apply_line_map + theorem affine_map.coe_add + theorem affine_map.coe_comp + theorem affine_map.coe_const + theorem affine_map.coe_fst + theorem affine_map.coe_homothety_affine + theorem affine_map.coe_homothety_hom + theorem affine_map.coe_id + theorem affine_map.coe_line_map + theorem affine_map.coe_mk' + theorem affine_map.coe_mk + theorem affine_map.coe_mul + theorem affine_map.coe_one + theorem affine_map.coe_smul + theorem affine_map.coe_snd + theorem affine_map.coe_zero + def affine_map.comp + theorem affine_map.comp_apply + theorem affine_map.comp_assoc + theorem affine_map.comp_id + theorem affine_map.comp_line_map + def affine_map.const + theorem affine_map.const_linear + theorem affine_map.decomp' + theorem affine_map.decomp + theorem affine_map.ext + theorem affine_map.ext_iff + def affine_map.fst + theorem affine_map.fst_line_map + theorem affine_map.fst_linear + def affine_map.homothety + theorem affine_map.homothety_add + def affine_map.homothety_affine + theorem affine_map.homothety_apply + theorem affine_map.homothety_def + def affine_map.homothety_hom + theorem affine_map.homothety_mul + theorem affine_map.homothety_one + theorem affine_map.homothety_zero + def affine_map.id + theorem affine_map.id_apply + theorem affine_map.id_comp + theorem affine_map.id_linear + theorem affine_map.image_interval + theorem affine_map.injective_coe_fn + def affine_map.line_map + theorem affine_map.line_map_apply + theorem affine_map.line_map_apply_module' + theorem affine_map.line_map_apply_module + theorem affine_map.line_map_apply_one + theorem affine_map.line_map_apply_one_sub + theorem affine_map.line_map_apply_ring' + theorem affine_map.line_map_apply_ring + theorem affine_map.line_map_apply_zero + theorem affine_map.line_map_linear + theorem affine_map.line_map_same + theorem affine_map.line_map_same_apply + theorem affine_map.line_map_symm + theorem affine_map.line_map_vadd_apply + theorem affine_map.linear_map_vsub + theorem affine_map.map_vadd + def affine_map.mk' + theorem affine_map.mk'_linear + def affine_map.snd + theorem affine_map.snd_line_map + theorem affine_map.snd_linear + theorem affine_map.to_fun_eq_coe + theorem affine_map.vadd_apply + theorem affine_map.vsub_apply + theorem affine_map.zero_linear + structure affine_map + theorem linear_map.coe_to_affine_map + def linear_map.to_affine_map + theorem linear_map.to_affine_map_linear Added src/linear_algebra/affine_space/affine_subspace.lean + def affine_span + theorem affine_span_insert_affine_span + theorem affine_span_insert_eq_affine_span + theorem affine_span_mono + theorem affine_span_nonempty + theorem affine_span_singleton_union_vadd_eq_top_of_span_eq_top + theorem affine_subspace.affine_span_coe + theorem affine_subspace.affine_span_eq_Inf + theorem affine_subspace.bot_coe + theorem affine_subspace.coe_affine_span_singleton + theorem affine_subspace.coe_direction_eq_vsub_set + theorem affine_subspace.coe_direction_eq_vsub_set_left + theorem affine_subspace.coe_direction_eq_vsub_set_right + def affine_subspace.direction + theorem affine_subspace.direction_affine_span_insert + theorem affine_subspace.direction_bot + theorem affine_subspace.direction_eq_top_iff_of_nonempty + theorem affine_subspace.direction_eq_vector_span + theorem affine_subspace.direction_inf + theorem affine_subspace.direction_inf_of_mem + theorem affine_subspace.direction_inf_of_mem_inf + theorem affine_subspace.direction_le + theorem affine_subspace.direction_lt_of_nonempty + theorem affine_subspace.direction_mk' + def affine_subspace.direction_of_nonempty + theorem affine_subspace.direction_of_nonempty_eq_direction + theorem affine_subspace.direction_sup + theorem affine_subspace.direction_top + theorem affine_subspace.eq_iff_direction_eq_of_mem + theorem affine_subspace.eq_of_direction_eq_of_nonempty_of_le + theorem affine_subspace.exists_of_lt + theorem affine_subspace.ext + theorem affine_subspace.ext_of_direction_eq + theorem affine_subspace.inf_coe + theorem affine_subspace.inter_eq_singleton_of_nonempty_of_is_compl + theorem affine_subspace.inter_nonempty_of_nonempty_of_sup_direction_eq_top + theorem affine_subspace.le_def' + theorem affine_subspace.le_def + theorem affine_subspace.lt_def + theorem affine_subspace.lt_iff_le_and_exists + theorem affine_subspace.mem_affine_span_insert_iff + theorem affine_subspace.mem_affine_span_singleton + theorem affine_subspace.mem_coe + theorem affine_subspace.mem_direction_iff_eq_vsub + theorem affine_subspace.mem_direction_iff_eq_vsub_left + theorem affine_subspace.mem_direction_iff_eq_vsub_right + theorem affine_subspace.mem_inf_iff + theorem affine_subspace.mem_top + def affine_subspace.mk' + theorem affine_subspace.mk'_eq + theorem affine_subspace.mk'_nonempty + theorem affine_subspace.not_le_iff_exists + theorem affine_subspace.not_mem_bot + theorem affine_subspace.self_mem_mk' + theorem affine_subspace.span_Union + theorem affine_subspace.span_empty + theorem affine_subspace.span_points_subset_coe_of_subset_coe + theorem affine_subspace.span_union + theorem affine_subspace.span_univ + theorem affine_subspace.sup_direction_le + theorem affine_subspace.sup_direction_lt_of_nonempty_of_inter_empty + theorem affine_subspace.top_coe + theorem affine_subspace.vadd_mem_iff_mem_direction + theorem affine_subspace.vadd_mem_mk' + theorem affine_subspace.vadd_mem_of_mem_direction + theorem affine_subspace.vsub_left_mem_direction_iff_mem + theorem affine_subspace.vsub_mem_direction + theorem affine_subspace.vsub_right_mem_direction_iff_mem + structure affine_subspace + theorem coe_affine_span + theorem direction_affine_span + theorem mem_affine_span + theorem mem_span_points + def span_points + theorem span_points_nonempty + def submodule.to_affine_subspace + theorem subset_affine_span + theorem subset_span_points + theorem vadd_mem_span_points_of_mem_span_points_of_mem_vector_span + def vector_span + theorem vector_span_def + theorem vector_span_empty + theorem vector_span_eq_span_vsub_set_left + theorem vector_span_eq_span_vsub_set_left_ne + theorem vector_span_eq_span_vsub_set_right + theorem vector_span_eq_span_vsub_set_right_ne + theorem vector_span_image_eq_span_vsub_set_left_ne + theorem vector_span_image_eq_span_vsub_set_right_ne + theorem vector_span_mono + theorem vector_span_range_eq_span_range_vsub_left + theorem vector_span_range_eq_span_range_vsub_left_ne + theorem vector_span_range_eq_span_range_vsub_right + theorem vector_span_range_eq_span_range_vsub_right_ne + theorem vector_span_singleton + theorem vsub_mem_vector_span + theorem vsub_mem_vector_span_of_mem_span_points_of_mem_span_points + theorem vsub_set_subset_vector_span Modified src/linear_algebra/affine_space/basic.lean - theorem affine_map.add_linear - theorem affine_map.apply_line_map - theorem affine_map.coe_add - theorem affine_map.coe_comp - theorem affine_map.coe_const - theorem affine_map.coe_fst - theorem affine_map.coe_homothety_affine - theorem affine_map.coe_homothety_hom - theorem affine_map.coe_id - theorem affine_map.coe_line_map - theorem affine_map.coe_mk' - theorem affine_map.coe_mk - theorem affine_map.coe_mul - theorem affine_map.coe_one - theorem affine_map.coe_smul - theorem affine_map.coe_snd - theorem affine_map.coe_zero - def affine_map.comp - theorem affine_map.comp_apply - theorem affine_map.comp_assoc - theorem affine_map.comp_id - theorem affine_map.comp_line_map - def affine_map.const - theorem affine_map.const_linear - theorem affine_map.decomp' - theorem affine_map.decomp - theorem affine_map.ext - theorem affine_map.ext_iff - def affine_map.fst - theorem affine_map.fst_line_map - theorem affine_map.fst_linear - def affine_map.homothety - theorem affine_map.homothety_add - def affine_map.homothety_affine - theorem affine_map.homothety_apply - theorem affine_map.homothety_def - def affine_map.homothety_hom - theorem affine_map.homothety_mul - theorem affine_map.homothety_one - theorem affine_map.homothety_zero - def affine_map.id - theorem affine_map.id_apply - theorem affine_map.id_comp - theorem affine_map.id_linear - theorem affine_map.image_interval - theorem affine_map.injective_coe_fn - def affine_map.line_map - theorem affine_map.line_map_apply - theorem affine_map.line_map_apply_module' - theorem affine_map.line_map_apply_module - theorem affine_map.line_map_apply_one - theorem affine_map.line_map_apply_one_sub - theorem affine_map.line_map_apply_ring' - theorem affine_map.line_map_apply_ring - theorem affine_map.line_map_apply_zero - theorem affine_map.line_map_linear - theorem affine_map.line_map_same - theorem affine_map.line_map_same_apply - theorem affine_map.line_map_symm - theorem affine_map.line_map_vadd_apply - theorem affine_map.linear_map_vsub - theorem affine_map.map_vadd - def affine_map.mk' - theorem affine_map.mk'_linear - def affine_map.snd - theorem affine_map.snd_line_map - theorem affine_map.snd_linear - theorem affine_map.to_fun_eq_coe - theorem affine_map.vadd_apply - theorem affine_map.vsub_apply - theorem affine_map.zero_linear - structure affine_map - def affine_span - theorem affine_span_insert_affine_span - theorem affine_span_insert_eq_affine_span - theorem affine_span_mono - theorem affine_span_nonempty - theorem affine_span_singleton_union_vadd_eq_top_of_span_eq_top - theorem affine_subspace.affine_span_coe - theorem affine_subspace.affine_span_eq_Inf - theorem affine_subspace.bot_coe - theorem affine_subspace.coe_affine_span_singleton - theorem affine_subspace.coe_direction_eq_vsub_set - theorem affine_subspace.coe_direction_eq_vsub_set_left - theorem affine_subspace.coe_direction_eq_vsub_set_right - def affine_subspace.direction - theorem affine_subspace.direction_affine_span_insert - theorem affine_subspace.direction_bot - theorem affine_subspace.direction_eq_top_iff_of_nonempty - theorem affine_subspace.direction_eq_vector_span - theorem affine_subspace.direction_inf - theorem affine_subspace.direction_inf_of_mem - theorem affine_subspace.direction_inf_of_mem_inf - theorem affine_subspace.direction_le - theorem affine_subspace.direction_lt_of_nonempty - theorem affine_subspace.direction_mk' - def affine_subspace.direction_of_nonempty - theorem affine_subspace.direction_of_nonempty_eq_direction - theorem affine_subspace.direction_sup - theorem affine_subspace.direction_top - theorem affine_subspace.eq_iff_direction_eq_of_mem - theorem affine_subspace.eq_of_direction_eq_of_nonempty_of_le - theorem affine_subspace.exists_of_lt - theorem affine_subspace.ext - theorem affine_subspace.ext_of_direction_eq - theorem affine_subspace.inf_coe - theorem affine_subspace.inter_eq_singleton_of_nonempty_of_is_compl - theorem affine_subspace.inter_nonempty_of_nonempty_of_sup_direction_eq_top - theorem affine_subspace.le_def' - theorem affine_subspace.le_def - theorem affine_subspace.lt_def - theorem affine_subspace.lt_iff_le_and_exists - theorem affine_subspace.mem_affine_span_insert_iff - theorem affine_subspace.mem_affine_span_singleton - theorem affine_subspace.mem_coe - theorem affine_subspace.mem_direction_iff_eq_vsub - theorem affine_subspace.mem_direction_iff_eq_vsub_left - theorem affine_subspace.mem_direction_iff_eq_vsub_right - theorem affine_subspace.mem_inf_iff - theorem affine_subspace.mem_top - def affine_subspace.mk' - theorem affine_subspace.mk'_eq - theorem affine_subspace.mk'_nonempty - theorem affine_subspace.not_le_iff_exists - theorem affine_subspace.not_mem_bot - theorem affine_subspace.self_mem_mk' - theorem affine_subspace.span_Union - theorem affine_subspace.span_empty - theorem affine_subspace.span_points_subset_coe_of_subset_coe - theorem affine_subspace.span_union - theorem affine_subspace.span_univ - theorem affine_subspace.sup_direction_le - theorem affine_subspace.sup_direction_lt_of_nonempty_of_inter_empty - theorem affine_subspace.top_coe - theorem affine_subspace.vadd_mem_iff_mem_direction - theorem affine_subspace.vadd_mem_mk' - theorem affine_subspace.vadd_mem_of_mem_direction - theorem affine_subspace.vsub_left_mem_direction_iff_mem - theorem affine_subspace.vsub_mem_direction - theorem affine_subspace.vsub_right_mem_direction_iff_mem - structure affine_subspace - theorem coe_affine_span - theorem direction_affine_span - theorem linear_map.coe_to_affine_map - def linear_map.to_affine_map - theorem linear_map.to_affine_map_linear - theorem mem_affine_span - theorem mem_span_points - def span_points - theorem span_points_nonempty - def submodule.to_affine_subspace - theorem subset_affine_span - theorem subset_span_points - theorem vadd_mem_span_points_of_mem_span_points_of_mem_vector_span - def vector_span - theorem vector_span_def - theorem vector_span_empty - theorem vector_span_eq_span_vsub_set_left - theorem vector_span_eq_span_vsub_set_left_ne - theorem vector_span_eq_span_vsub_set_right - theorem vector_span_eq_span_vsub_set_right_ne - theorem vector_span_image_eq_span_vsub_set_left_ne - theorem vector_span_image_eq_span_vsub_set_right_ne - theorem vector_span_mono - theorem vector_span_range_eq_span_range_vsub_left - theorem vector_span_range_eq_span_range_vsub_left_ne - theorem vector_span_range_eq_span_range_vsub_right - theorem vector_span_range_eq_span_range_vsub_right_ne - theorem vector_span_singleton - theorem vsub_mem_vector_span - theorem vsub_mem_vector_span_of_mem_span_points_of_mem_span_points - theorem vsub_set_subset_vector_span Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/affine_space/ordered.lean Modified src/topology/algebra/affine.lean 2020-10-28 01:11:30 4d1da54 chore(scripts): update nolints.txt (#4808) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-27 22:22:51 c737996 feat(algebra/algebra/subalgebra): algebra equalizer (#4791) Changes to subalgebra.lean from #4786 ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + def alg_hom.equalizer + theorem alg_hom.mem_equalizer 2020-10-27 22:22:50 2a7e215 feat(data/vector2): scanl and associated lemmas (#4613) ESTIMATED CHANGES Modified src/data/vector2.lean +/- theorem vector.nth_cons_nil + def vector.scanl + theorem vector.scanl_cons + theorem vector.scanl_head + theorem vector.scanl_nil + theorem vector.scanl_nth + theorem vector.scanl_singleton + theorem vector.scanl_val + theorem vector.to_list_scanl 2020-10-27 19:53:05 51e12c0 chore(ring_theory/fractional_ideal): change exists_eq_span_singleton_mul (#4800) Replace assumption `(a : K)` with `(a : R)` Add result `a \ne 0` Change `span_singleton` a to `span singleton (g.to_map a)^-1` .. in the statement of lemma `exists_eq_span_singleton_mul` Adapt dependences ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean 2020-10-27 19:53:03 97065db refactor(data/polynomial): use `linear_map` for `monomial`, review `degree` (#4784) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_hom.map_int_cast Modified src/algebra/group/basic.lean + theorem one_eq_inv Modified src/analysis/calculus/deriv.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean +/- def polynomial.monomial + theorem polynomial.monomial_def +/- theorem polynomial.monomial_zero_right + theorem polynomial.smul_monomial Modified src/data/polynomial/degree.lean - theorem polynomial.eq_C_of_nat_degree_eq_zero Modified src/data/polynomial/degree/basic.lean +/- theorem polynomial.C_eq_int_cast + theorem polynomial.as_sum_range_C_mul_X_pow + theorem polynomial.as_sum_support_C_mul_X_pow + theorem polynomial.coeff_nat_degree + theorem polynomial.degree_C_mul_X_pow +/- theorem polynomial.degree_C_mul_X_pow_le +/- theorem polynomial.degree_X_pow +/- theorem polynomial.degree_monomial +/- theorem polynomial.degree_monomial_le + theorem polynomial.eq_C_of_nat_degree_eq_zero + theorem polynomial.eq_X_add_C_of_nat_degree_le_one + theorem polynomial.exists_eq_X_add_C_of_nat_degree_le_one +/- theorem polynomial.mem_support_C_mul_X_pow + theorem polynomial.monic.ne_zero_of_ne + theorem polynomial.monic.ne_zero_of_polynomial_ne - theorem polynomial.monic.ne_zero_of_zero_ne_one +/- theorem polynomial.nat_degree_C_mul_X_pow_of_nonzero + theorem polynomial.nat_degree_le_iff_degree_le - theorem polynomial.nat_degree_le_of_degree_le + theorem polynomial.supp_subset_range +/- theorem polynomial.support_C_mul_X_pow_nonzero Modified src/data/polynomial/degree/trailing_degree.lean +/- theorem polynomial.le_trailing_degree_C_mul_X_pow + theorem polynomial.le_trailing_degree_monomial - theorem polynomial.monomial_le_trailing_degree + theorem polynomial.nat_trailing_degree_monomial + theorem polynomial.nat_trailing_degree_monomial_le + theorem polynomial.trailing_degree_C_mul_X_pow +/- theorem polynomial.trailing_degree_monomial Modified src/data/polynomial/derivative.lean + theorem polynomial.derivative_C_mul_X_pow +/- theorem polynomial.derivative_monomial Modified src/data/polynomial/div.lean Modified src/data/polynomial/erase_lead.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/monic.lean Modified src/data/polynomial/monomial.lean + theorem polynomial.nontrivial.of_polynomial_ne - theorem polynomial.nonzero.of_polynomial_ne Modified src/data/real/irrational.lean - theorem nat_degree_gt_one_of_irrational_root + theorem one_lt_nat_degree_of_irrational_root Modified src/field_theory/separable.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial/scale_roots.lean Modified src/ring_theory/polynomial_algebra.lean + theorem poly_equiv_tensor.inv_fun_monomial 2020-10-27 19:53:01 a1ab984 feat(data/finset/lattice,order/basic): add lemmas in order_dual, prove dual order exchanges max' and min' (#4715) Introduce functionality to work with order duals and monotone decreasing maps. The pretty part of the code is by Johan Commelin, the ugly part is my own addition! ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.nonempty.map Modified src/data/finset/lattice.lean + theorem finset.max'_eq_of_dual_min' + theorem finset.min'_eq_of_dual_max' + theorem finset.of_dual_max_eq_min_of_dual + theorem finset.of_dual_min_eq_max_of_dual Added src/order/order_dual.lean + theorem order_dual.le_to_dual + theorem order_dual.lt_to_dual + def order_dual.of_dual + theorem order_dual.of_dual_inj + theorem order_dual.of_dual_le_of_dual + theorem order_dual.of_dual_lt_of_dual + theorem order_dual.of_dual_symm_eq + theorem order_dual.of_dual_to_dual + def order_dual.to_dual + theorem order_dual.to_dual_inj + theorem order_dual.to_dual_le + theorem order_dual.to_dual_le_to_dual + theorem order_dual.to_dual_lt + theorem order_dual.to_dual_lt_to_dual + theorem order_dual.to_dual_of_dual + theorem order_dual.to_dual_symm_eq 2020-10-27 17:20:51 1efbf13 feat(data/vector2): add lemma map_id (#4799) `map_id` proves that a vector is unchanged when mapped under the `id` function. This is similar to `list.map_id`. This lemma was marked with the `simp` attribute to make it available to the simplifier. ESTIMATED CHANGES Modified src/data/vector2.lean + theorem vector.map_id 2020-10-27 17:20:47 40e514c feat(algebra/monoid_algebra): formula for `lift_nc f g (c • φ)` (#4782) ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.lift_nc_smul + theorem monoid_algebra.lift_nc_smul +/- theorem monoid_algebra.single_algebra_map_eq_algebra_map_mul_of 2020-10-27 17:20:45 99acfda feat(category_theory/sites): pretopology (#4648) Adds pretopologies. ESTIMATED CHANGES Added src/category_theory/sites/pretopology.lean + def category_theory.pretopology.gi + theorem category_theory.pretopology.mem_to_grothendieck + def category_theory.pretopology.of_grothendieck + def category_theory.pretopology.to_grothendieck + theorem category_theory.pretopology.to_grothendieck_bot + def category_theory.pretopology.trivial + structure category_theory.pretopology + def category_theory.pullback_arrows + theorem category_theory.pullback_arrows_comm + theorem category_theory.pullback_singleton 2020-10-27 14:39:13 a027a37 feat(tactic/simps): user-provided names for projections (#4663) Adds the functionality to specify custom projection names, like this: ```lean initialize_simps_projections equiv (to_fun → apply, inv_fun → symm_apply) ``` These names will always be used and cannot (yet) be manually overridden. Implement this for embeddings: `initialize_simps_projections embedding (to_fun → apply)`. Rename `fixed_points.to_alg_hom_apply -> fixed_points.to_alg_hom_apply_apply`, since `@[simps]` now generates the name `to_alg_hom_apply` instead of `to_alg_hom_to_fun`. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/field_theory/fixed.lean - theorem fixed_points.to_alg_hom_apply + theorem fixed_points.to_alg_hom_apply_apply Modified src/logic/embedding.lean +/- def function.embedding.sigma_map +/- def function.embedding.sigma_mk +/- def set.embedding_of_subset Modified src/measure_theory/haar_measure.lean Modified src/tactic/simps.lean Modified test/simps.lean + def manual_projection_names.equiv.simps.inv_fun + def manual_projection_names.equiv.symm + structure manual_projection_names.equiv 2020-10-27 11:55:33 e0b153b refactor(*): drop `decidable_linear_order`, switch to Lean 3.22.0 (#4762) The main non-bc change in Lean 3.22.0 is leanprover-community/lean#484 which merges `linear_order` with `decidable_linear_order`. This is the `mathlib` part of this PR. ## List of API changes * All `*linear_order*` typeclasses now imply decidability of `(≤)`, `(<)`, and `(=)`. * Drop `classical.DLO`. * Drop `discrete_linear_ordered_field`, use `linear_ordered_field` instead. * Drop `decidable_linear_ordered_semiring`, use `linear_ordered_semiring` instead. * Drop `decidable_linear_ordered_comm_ring`, use `linear_ordered_comm_ring` instead; * Rename `decidable_linear_ordered_cancel_add_comm_monoid` to `linear_ordered_cancel_add_comm_monoid`. * Rename `decidable_linear_ordered_add_comm_group` to `linear_ordered_add_comm_group`. * Modify some lemmas to use weaker typeclass assumptions. * Add more lemmas about `ordering.compares`, including `linear_order_of_compares` which constructs a `linear_order` instance from `cmp` function. ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean +/- theorem Ico_lemma Modified leanpkg.toml Modified src/algebra/archimedean.lean - theorem decidable_linear_ordered_add_comm_group.exists_int_smul_near_of_pos' - theorem decidable_linear_ordered_add_comm_group.exists_int_smul_near_of_pos +/- theorem exists_int_pow_near' +/- theorem exists_int_pow_near + theorem linear_ordered_add_comm_group.exists_int_smul_near_of_pos' + theorem linear_ordered_add_comm_group.exists_int_smul_near_of_pos Modified src/algebra/big_operators/order.lean +/- theorem finset.abs_sum_le_sum_abs Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/algebra/field_power.lean +/- theorem one_lt_fpow Modified src/algebra/floor.lean +/- theorem abs_sub_lt_one_of_floor_eq_floor Modified src/algebra/group_power/basic.lean +/- theorem abs_neg_one_pow +/- theorem pow_abs Modified src/algebra/group_power/lemmas.lean Modified src/algebra/order.lean +/- theorem cmp_compares +/- theorem decidable.le_iff_le_iff_lt_iff_lt +/- theorem decidable.le_imp_le_iff_lt_imp_lt + def linear_order_of_compares +/- theorem ordering.compares.eq_gt + theorem ordering.compares.le_antisymm + theorem ordering.compares.le_total + theorem ordering.compares.ne_gt + theorem ordering.compares.ne_lt + theorem ordering.compares_swap + theorem ordering.swap_eq_iff_eq_swap Modified src/algebra/order_functions.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean - theorem decidable_linear_ordered_add_comm_group.add_lt_add_left + theorem exists_gt_zero +/- theorem fn_min_mul_fn_max + theorem linear_ordered_add_comm_group.add_lt_add_left +/- theorem min_mul_max - def nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group + def nonneg_add_comm_group.to_linear_ordered_add_comm_group +/- theorem units.max_coe +/- theorem units.min_coe Modified src/algebra/ordered_ring.lean +/- theorem abs_two - def linear_nonneg_ring.to_decidable_linear_ordered_comm_ring +/- def linear_nonneg_ring.to_linear_order + def linear_nonneg_ring.to_linear_ordered_comm_ring +/- def linear_nonneg_ring.to_linear_ordered_ring Modified src/algebra/punit_instances.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/extrema.lean Modified src/combinatorics/pigeonhole.lean Modified src/data/bool.lean Modified src/data/char.lean Modified src/data/complex/exponential.lean +/- theorem complex.sum_div_factorial_le Modified src/data/fin.lean Modified src/data/finset/fold.lean Modified src/data/finset/lattice.lean Modified src/data/finset/sort.lean Modified src/data/fintype/sort.lean Modified src/data/int/basic.lean Modified src/data/int/cast.lean +/- theorem int.cast_abs +/- theorem int.cast_max +/- theorem int.cast_min Modified src/data/list/basic.lean +/- theorem list.exists_le_of_sum_le +/- theorem list.exists_lt_of_sum_lt Modified src/data/list/min_max.lean Modified src/data/matrix/pequiv.lean Modified src/data/multiset/basic.lean +/- theorem multiset.abs_sum_le_sum_abs Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean +/- theorem nat.abs_cast +/- theorem nat.cast_max +/- theorem nat.cast_min Modified src/data/nat/choose/dvd.lean Modified src/data/nat/enat.lean Modified src/data/num/lemmas.lean Modified src/data/padics/padic_numbers.lean Modified src/data/padics/ring_homs.lean Modified src/data/pnat/basic.lean Modified src/data/polynomial/degree/trailing_degree.lean +/- theorem polynomial.coeff_eq_zero_of_lt_nat_trailing_degree +/- theorem polynomial.coeff_eq_zero_of_trailing_degree_lt +/- theorem polynomial.coeff_nat_trailing_degree_eq_zero_of_trailing_degree_lt +/- theorem polynomial.coeff_nat_trailing_degree_pred_eq_zero +/- theorem polynomial.le_trailing_degree_C_mul_X_pow +/- theorem polynomial.le_trailing_degree_X_pow +/- theorem polynomial.monomial_le_trailing_degree +/- theorem polynomial.nat_trailing_degree_eq_of_trailing_degree_eq +/- theorem polynomial.nat_trailing_degree_le_nat_trailing_degree +/- theorem polynomial.nat_trailing_degree_le_of_trailing_degree_le +/- theorem polynomial.nat_trailing_degree_le_trailing_degree +/- theorem polynomial.nat_trailing_degree_neg +/- theorem polynomial.nat_trailing_degree_one +/- theorem polynomial.trailing_degree_eq_nat_trailing_degree +/- theorem polynomial.trailing_degree_le_trailing_degree Modified src/data/polynomial/eval.lean Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean +/- theorem rat.cast_abs +/- theorem rat.cast_max +/- theorem rat.cast_min Modified src/data/rat/order.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean +/- def cau_seq +/- def is_cau_seq Modified src/data/real/cau_seq_completion.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.coe_abs +/- theorem hyperreal.coe_max +/- theorem hyperreal.coe_min Modified src/data/real/nnreal.lean Modified src/data/set/finite.lean +/- theorem set.Union_Inter_of_monotone Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/disjoint.lean Modified src/data/set/intervals/ord_connected.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/data/string/basic.lean Modified src/data/support.lean +/- theorem function.support_max +/- theorem function.support_min Modified src/data/zsqrtd/basic.lean Modified src/group_theory/archimedean.lean Modified src/group_theory/congruence.lean Modified src/group_theory/perm/cycles.lean +/- def equiv.perm.cycle_factors Modified src/group_theory/perm/sign.lean +/- def equiv.perm.swap_factors Modified src/linear_algebra/affine_space/basic.lean +/- theorem affine_map.image_interval Modified src/linear_algebra/finite_dimensional.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/interval_integral.lean Modified src/order/basic.lean - def decidable_linear_order.lift Modified src/order/bounded_lattice.lean +/- theorem with_bot.coe_le_coe +/- theorem with_bot.inf_eq_min +/- theorem with_bot.lattice_eq_DLO +/- theorem with_bot.some_le_some +/- theorem with_bot.sup_eq_max +/- theorem with_top.inf_eq_min +/- theorem with_top.lattice_eq_DLO +/- theorem with_top.sup_eq_max Modified src/order/bounds.lean +/- theorem is_greatest.insert +/- theorem is_greatest.union +/- theorem is_greatest_pair +/- theorem is_least.insert +/- theorem is_least.union +/- theorem is_least_pair Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/extr.lean Modified src/order/filter/filter_product.lean +/- theorem filter.germ.abs_def +/- theorem filter.germ.const_abs +/- theorem filter.germ.const_max +/- theorem filter.germ.const_min +/- theorem filter.germ.max_def +/- theorem filter.germ.min_def Modified src/order/lattice.lean +/- theorem inf_eq_min +/- theorem sup_eq_max Modified src/order/lexicographic.lean Modified src/order/pilex.lean Modified src/order/rel_classes.lean - def decidable_linear_order_of_STO' +/- def linear_order_of_STO' Modified src/ring_theory/int/basic.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/valuation/basic.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/surreal.lean Modified src/tactic/interval_cases.lean Modified src/tactic/monotonicity/interactive.lean +/- def tactic.interactive.list.minimum_on Modified src/testing/slim_check/sampleable.lean Modified src/topology/algebra/infinite_sum.lean +/- theorem summable_abs_iff Modified src/topology/algebra/ordered.lean - theorem decidable_linear_ordered_add_comm_group.tendsto_nhds + theorem linear_ordered_add_comm_group.tendsto_nhds +/- theorem tendsto_abs_at_top_at_top Modified src/topology/algebra/polynomial.lean +/- theorem polynomial.tendsto_infinity Modified src/topology/local_extr.lean Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/cauchy.lean +/- theorem cauchy_seq.mem_entourage Modified test/linarith.lean Modified test/monotonicity.lean 2020-10-27 01:56:15 69db7a3 chore(scripts): update nolints.txt (#4797) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-26 23:04:21 6e2980c chore(*): reflow some long lines (#4794) ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/algebra/basic.lean +/- def alg_equiv.of_alg_hom Modified src/algebra/algebra/operations.lean Modified src/algebra/archimedean.lean Modified src/algebra/associated.lean +/- theorem irreducible_of_prime +/- theorem prime_of_associated Modified src/algebra/big_operators/basic.lean +/- theorem ring_hom.map_prod Modified src/algebra/big_operators/intervals.lean Modified src/algebra/big_operators/ring.lean +/- theorem finset.prod_powerset_insert Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/category/CommRing/adjunctions.lean Modified src/algebra/char_p.lean +/- theorem char_p_of_prime_pow_injective Modified src/algebra/continued_fractions/computation/basic.lean Modified src/algebra/direct_limit.lean +/- theorem add_comm_group.direct_limit.lift_add +/- theorem add_comm_group.direct_limit.lift_sub +/- theorem add_comm_group.direct_limit.of_add +/- theorem add_comm_group.direct_limit.of_sub +/- theorem module.direct_limit.of.zero_exact_aux +/- theorem ring.direct_limit.induction_on +/- theorem ring.direct_limit.of.zero_exact_aux +/- theorem ring.direct_limit.of_pow Modified src/algebra/gcd_monoid.lean Modified src/algebra/geom_sum.lean +/- theorem op_geom_series Modified src/algebra/monoid_algebra.lean 2020-10-26 23:04:19 8746f08 feat(data/equiv/basic): equiv.set.powerset (#4790) ESTIMATED CHANGES Modified src/data/equiv/basic.lean 2020-10-26 21:30:45 c76c3c5 feat(degree/basic.lean): degree_lt_iff_coeff_zero (#4792) Changes to degree/basic.lean from #4786 ESTIMATED CHANGES Modified src/data/polynomial/degree/basic.lean + theorem polynomial.degree_lt_iff_coeff_zero 2020-10-26 18:39:32 95b3add fix(tactic/derive_fintype): add support for props (#4777) This adds support for propositional arguments in inductive constructors. It was previously not handled, and while it *almost* works without change, we have to use `Sigma' (a:A) (b:B) (c:C), unit` to tuple up the arguments instead of `Sigma' (a:A) (b:B), C` because it would cause problems in the unary case where there is only one propositional field. ESTIMATED CHANGES Modified src/tactic/derive_fintype.lean Modified test/derive_fintype.lean + structure foo4 2020-10-26 18:39:30 9428598 feat(tactic/rcases): add `rintro (x y : t)` support (#4722) As requested on Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/rintros/near/213999254 ESTIMATED CHANGES Modified src/tactic/rcases.lean Modified test/rcases.lean 2020-10-26 18:39:29 877a20e feat(ring_theory/finiteness): some finiteness notions in commutative algebra (#4634) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean Modified src/ring_theory/adjoin.lean Added src/ring_theory/finiteness.lean + theorem alg_hom.finite.comp + theorem alg_hom.finite.finite_type + theorem alg_hom.finite.id + theorem alg_hom.finite.of_surjective + def alg_hom.finite + theorem alg_hom.finite_type.comp + theorem alg_hom.finite_type.comp_surjective + theorem alg_hom.finite_type.id + theorem alg_hom.finite_type.of_surjective + def alg_hom.finite_type + theorem algebra.finite_type.equiv + theorem algebra.finite_type.of_surjective + theorem algebra.finite_type.self + theorem algebra.finite_type.trans + def algebra.finite_type + theorem module.finite.equiv + theorem module.finite.of_injective + theorem module.finite.of_surjective + theorem module.finite.trans + def module.finite + theorem module.finite_def + theorem ring_hom.finite.comp + theorem ring_hom.finite.finite_type + theorem ring_hom.finite.id + theorem ring_hom.finite.of_surjective + def ring_hom.finite + theorem ring_hom.finite_type.comp + theorem ring_hom.finite_type.comp_surjective + theorem ring_hom.finite_type.id + theorem ring_hom.finite_type.of_surjective + def ring_hom.finite_type 2020-10-26 18:39:27 61c095f chore(algebra/module,linear_algebra): split off a `linear_map` file (#4476) In order to make `algebra/module/basic.lean` and `linear_algebra/basic.lean` a bit more manageable, move the basic facts about `linear_map`s and `linear_equiv`s into a separate file. `linear_algebra/basic.lean` still needs to be split a bit more. ESTIMATED CHANGES Modified src/algebra/module/basic.lean - def add_monoid_hom.to_int_linear_map - def add_monoid_hom.to_rat_linear_map - theorem is_linear_map.is_linear_map_neg - theorem is_linear_map.is_linear_map_smul' - theorem is_linear_map.is_linear_map_smul - theorem is_linear_map.map_neg - theorem is_linear_map.map_sub - theorem is_linear_map.map_zero - def is_linear_map.mk' - theorem is_linear_map.mk'_apply - structure is_linear_map - theorem linear_map.coe_injective - theorem linear_map.coe_mk - def linear_map.comp - theorem linear_map.comp_apply - theorem linear_map.comp_coe - theorem linear_map.ext - theorem linear_map.ext_iff - theorem linear_map.ext_ring - def linear_map.id - theorem linear_map.id_apply - theorem linear_map.id_coe - theorem linear_map.is_linear - theorem linear_map.map_add - theorem linear_map.map_neg - theorem linear_map.map_smul - theorem linear_map.map_sub - theorem linear_map.map_sum - theorem linear_map.map_zero - def linear_map.to_add_monoid_hom - theorem linear_map.to_add_monoid_hom_coe - theorem linear_map.to_add_monoid_hom_injective - theorem linear_map.to_fun_eq_coe - structure linear_map - def module.End Added src/algebra/module/linear_map.lean + def add_monoid_hom.to_int_linear_map + def add_monoid_hom.to_rat_linear_map + theorem is_linear_map.is_linear_map_neg + theorem is_linear_map.is_linear_map_smul' + theorem is_linear_map.is_linear_map_smul + theorem is_linear_map.map_neg + theorem is_linear_map.map_sub + theorem is_linear_map.map_zero + def is_linear_map.mk' + theorem is_linear_map.mk'_apply + structure is_linear_map + theorem linear_equiv.apply_symm_apply + theorem linear_equiv.coe_coe + theorem linear_equiv.coe_to_add_equiv + theorem linear_equiv.coe_to_equiv + theorem linear_equiv.comp_coe + theorem linear_equiv.eq_symm_apply + theorem linear_equiv.ext + theorem linear_equiv.injective_to_equiv + theorem linear_equiv.injective_to_linear_map + theorem linear_equiv.inv_fun_apply + theorem linear_equiv.map_add + theorem linear_equiv.map_eq_zero_iff + theorem linear_equiv.map_ne_zero_iff + theorem linear_equiv.map_smul + theorem linear_equiv.map_sum + theorem linear_equiv.map_zero + theorem linear_equiv.mk_apply + def linear_equiv.refl + theorem linear_equiv.refl_apply + theorem linear_equiv.refl_to_linear_map + theorem linear_equiv.refl_trans + def linear_equiv.symm + theorem linear_equiv.symm_apply_apply + theorem linear_equiv.symm_apply_eq + theorem linear_equiv.symm_symm + theorem linear_equiv.symm_trans + theorem linear_equiv.symm_trans_apply + def linear_equiv.to_equiv + theorem linear_equiv.to_equiv_inj + theorem linear_equiv.to_fun_apply + theorem linear_equiv.to_linear_map_inj + def linear_equiv.trans + theorem linear_equiv.trans_apply + theorem linear_equiv.trans_refl + theorem linear_equiv.trans_symm + structure linear_equiv + theorem linear_map.coe_injective + theorem linear_map.coe_mk + def linear_map.comp + theorem linear_map.comp_apply + theorem linear_map.comp_coe + theorem linear_map.ext + theorem linear_map.ext_iff + theorem linear_map.ext_ring + def linear_map.id + theorem linear_map.id_apply + theorem linear_map.id_coe + def linear_map.inverse + theorem linear_map.is_linear + theorem linear_map.map_add + theorem linear_map.map_neg + theorem linear_map.map_smul + theorem linear_map.map_sub + theorem linear_map.map_sum + theorem linear_map.map_zero + def linear_map.to_add_monoid_hom + theorem linear_map.to_add_monoid_hom_coe + theorem linear_map.to_add_monoid_hom_injective + theorem linear_map.to_fun_eq_coe + structure linear_map + def module.End Modified src/algebra/module/submodule.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp/basic.lean Modified src/linear_algebra/basic.lean - theorem linear_equiv.apply_symm_apply - theorem linear_equiv.coe_coe - theorem linear_equiv.coe_to_add_equiv - theorem linear_equiv.coe_to_equiv - theorem linear_equiv.comp_coe - theorem linear_equiv.eq_symm_apply - theorem linear_equiv.ext - theorem linear_equiv.injective_to_equiv - theorem linear_equiv.injective_to_linear_map - theorem linear_equiv.inv_fun_apply - theorem linear_equiv.map_add - theorem linear_equiv.map_eq_zero_iff - theorem linear_equiv.map_ne_zero_iff - theorem linear_equiv.map_smul - theorem linear_equiv.map_sum - theorem linear_equiv.map_zero - theorem linear_equiv.mk_apply - def linear_equiv.refl - theorem linear_equiv.refl_apply - theorem linear_equiv.refl_to_linear_map - theorem linear_equiv.refl_trans - def linear_equiv.symm - theorem linear_equiv.symm_apply_apply - theorem linear_equiv.symm_apply_eq - theorem linear_equiv.symm_symm - theorem linear_equiv.symm_trans - theorem linear_equiv.symm_trans_apply - def linear_equiv.to_equiv - theorem linear_equiv.to_equiv_inj - theorem linear_equiv.to_fun_apply - theorem linear_equiv.to_linear_map_inj - def linear_equiv.trans - theorem linear_equiv.trans_apply - theorem linear_equiv.trans_refl - theorem linear_equiv.trans_symm - structure linear_equiv - def linear_map.inverse 2020-10-26 16:13:21 83edb50 feat(simps): improve error messages (#4653) If a custom projection has a different type than the expected projection, then it will show a more specific error message. Also reflow most long lines Also add some tests ESTIMATED CHANGES Modified src/tactic/simps.lean Modified test/simps.lean - structure failty_manual_coercion.equiv + structure faulty_manual_coercion.equiv + def faulty_universes.equiv.simps.inv_fun + def faulty_universes.equiv.symm + structure faulty_universes.equiv + def manual_universes.equiv.simps.inv_fun + def manual_universes.equiv.symm + structure manual_universes.equiv 2020-10-26 14:18:36 ba5594a feat(data/dfinsupp): Add missing to_additive lemmas (#4788) ESTIMATED CHANGES Modified src/data/dfinsupp.lean + theorem dfinsupp.prod_inv + theorem dfinsupp.prod_mul + theorem dfinsupp.prod_one - theorem dfinsupp.sum_add - theorem dfinsupp.sum_neg - theorem dfinsupp.sum_zero 2020-10-26 13:22:48 2e90c60 feat(ring_theory/witt_vector/basic): verifying the ring axioms (#4694) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/basic.lean + def witt_vector.ghost_component + theorem witt_vector.ghost_component_apply + def witt_vector.ghost_equiv + theorem witt_vector.ghost_equiv_coe + theorem witt_vector.ghost_map.bijective_of_invertible + def witt_vector.ghost_map + theorem witt_vector.ghost_map_apply + def witt_vector.map + theorem witt_vector.map_coeff + theorem witt_vector.map_fun.add + theorem witt_vector.map_fun.injective + theorem witt_vector.map_fun.mul + theorem witt_vector.map_fun.neg + theorem witt_vector.map_fun.one + theorem witt_vector.map_fun.surjective + theorem witt_vector.map_fun.zero + def witt_vector.map_fun + theorem witt_vector.map_injective + theorem witt_vector.map_surjective 2020-10-26 05:21:12 7be82f9 chore(scripts): update nolints.txt (#4785) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-26 05:21:10 b2b39ed chore(order/galois_connection): define `with_bot.gi_get_or_else_bot` (#4781) This Galois insertion can be used to golf proofs about `polynomial.degree` vs `polynomial.nat_degree`. ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.get_or_else_coe Modified src/order/bounded_lattice.lean + theorem with_bot.get_or_else_bot + theorem with_bot.get_or_else_bot_le_iff Modified src/order/galois_connection.lean + def with_bot.gi_get_or_else_bot 2020-10-26 05:21:08 121c9a4 chore(algebra/group/hom): use `coe_comp` in `simp` lemmas (#4780) This way Lean will simplify `⇑(f.comp g)` even if it is not applied to an element. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.coe_comp +/- theorem monoid_hom.comp_apply + theorem mul_hom.coe_comp +/- theorem mul_hom.comp_apply + theorem one_hom.coe_comp +/- theorem one_hom.comp_apply Modified src/algebra/ring/basic.lean + theorem add_monoid_hom.coe_mul_right +/- theorem add_monoid_hom.mul_right_apply 2020-10-26 05:21:06 6e4fe98 chore(data/polynomial/{degree/basic, eval}): Some trivial lemmas about polynomials (#4768) I have added the lemma `supp_card_le_succ_nat_degree` about the cardinality of the support of a polynomial and removed the useless commutativity assumptio in `map_sum` and `map_neg`. ESTIMATED CHANGES Modified src/data/polynomial/degree/basic.lean + theorem polynomial.card_supp_le_succ_nat_degree + theorem polynomial.supp_subset_range_nat_degree_succ Modified src/data/polynomial/eval.lean + theorem polynomial.map_int_cast +/- theorem polynomial.map_neg +/- theorem polynomial.map_sub 2020-10-26 04:25:05 4036212 feat(algebra/big_operators/nat_antidiagonal): a few more lemmas (#4783) ESTIMATED CHANGES Modified src/algebra/big_operators/nat_antidiagonal.lean + theorem finset.nat.prod_antidiagonal_subst + theorem finset.nat.prod_antidiagonal_succ' + theorem finset.nat.prod_antidiagonal_succ + theorem finset.nat.prod_antidiagonal_swap + theorem finset.nat.sum_antidiagonal_succ' +/- theorem finset.nat.sum_antidiagonal_succ 2020-10-25 21:53:20 a9d3ce8 feat(analysis/normed_space/add_torsor): continuity of `vadd`/`vsub` (#4751) Prove that `vadd`/`vsub` are Lipschitz continuous, hence uniform continuous and continuous. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem vadd_eq_vadd_iff_neg_add_eq_vsub + theorem vadd_eq_vadd_iff_sub_eq_vsub + theorem vsub_sub_vsub_comm Modified src/analysis/normed_space/add_torsor.lean + theorem continuous.vadd + theorem continuous.vsub + theorem continuous_at.vadd + theorem continuous_at.vsub + theorem continuous_vadd + theorem continuous_vsub + theorem continuous_within_at.vadd + theorem continuous_within_at.vsub + theorem dist_vadd_vadd_le + theorem dist_vsub_cancel_left + theorem dist_vsub_cancel_right + theorem dist_vsub_vsub_le + theorem edist_vadd_vadd_le + theorem edist_vsub_vsub_le + theorem filter.tendsto.vadd + theorem filter.tendsto.vsub + theorem lipschitz_with.vadd + theorem lipschitz_with.vsub +/- def metric_space_of_normed_group_of_add_torsor + theorem nndist_vadd_vadd_le + theorem nndist_vsub_vsub_le + theorem uniform_continuous_vadd + theorem uniform_continuous_vsub Modified src/analysis/normed_space/basic.lean 2020-10-25 18:29:34 e7a4b12 fix(tactic/core): fix infinite loop in emit_code_here (#4746) Previously `emit_code_here "\n"` would go into an infinite loop because the `command_like` parser consumes nothing, but the string is not yet empty. Now we recurse on the length of the string to ensure termination. ESTIMATED CHANGES Modified src/tactic/core.lean Modified test/run_parser.lean 2020-10-25 16:45:20 151f0dd chore(linear_algebra/tensor_product): missing simp lemmas (#4769) ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.assoc_symm_tmul + theorem tensor_product.comm_symm_tmul + theorem tensor_product.congr_symm_tmul + theorem tensor_product.lid_symm_apply + theorem tensor_product.lift_comp_map + theorem tensor_product.map_comp + theorem tensor_product.rid_symm_apply 2020-10-25 16:45:18 69f550c chore(ring_theory/unique_factorization_domain): fix some lemma names (#4765) Fixes names of some lemmas that were erroneously renamed with find-and-replace Changes some constructor names to use dot notation Names replaced: `exists_prime_of_factor` -> `exists_prime_factors` `wf_dvd_monoid_of_exists_prime_of_factor` -> `wf_dvd_monoid.of_exists_prime_factors` `irreducible_iff_prime_of_exists_prime_of_factor` -> `irreducible_iff_prime_of_exists_prime_factors` `unique_factorization_monoid_of_exists_prime_of_factor` -> `unique_factorization_monoid.of_exists_prime_factors` `unique_factorization_monoid_iff_exists_prime_of_factor` -> `unique_factorization_monoid.iff_exists_prime_factors` `irreducible_iff_prime_of_exists_unique_irreducible_of_factor` -> `irreducible_iff_prime_of_exists_unique_irreducible_factors` `unique_factorization_monoid.of_exists_unique_irreducible_of_factor` -> `unique_factorization_monoid.of_exists_unique_irreducible_factors` `no_factors_of_no_prime_of_factor` -> `no_factors_of_no_prime_factors` `dvd_of_dvd_mul_left_of_no_prime_of_factor` -> `dvd_of_dvd_mul_left_of_no_prime_factors` `dvd_of_dvd_mul_right_of_no_prime_of_factor` -> `dvd_of_dvd_mul_right_of_no_prime_factors` ESTIMATED CHANGES Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/unique_factorization_domain.lean + theorem irreducible_iff_prime_of_exists_prime_factors - theorem irreducible_iff_prime_of_exists_prime_of_factor + theorem irreducible_iff_prime_of_exists_unique_irreducible_factors - theorem irreducible_iff_prime_of_exists_unique_irreducible_of_factor + theorem unique_factorization_monoid.dvd_of_dvd_mul_left_of_no_prime_factors - theorem unique_factorization_monoid.dvd_of_dvd_mul_left_of_no_prime_of_factor + theorem unique_factorization_monoid.dvd_of_dvd_mul_right_of_no_prime_factors - theorem unique_factorization_monoid.dvd_of_dvd_mul_right_of_no_prime_of_factor + theorem unique_factorization_monoid.exists_prime_factors - theorem unique_factorization_monoid.exists_prime_of_factor + theorem unique_factorization_monoid.iff_exists_prime_factors + theorem unique_factorization_monoid.no_factors_of_no_prime_factors - theorem unique_factorization_monoid.no_factors_of_no_prime_of_factor + theorem unique_factorization_monoid.of_exists_prime_factors + theorem unique_factorization_monoid.of_exists_unique_irreducible_factors - theorem unique_factorization_monoid.of_exists_unique_irreducible_of_factor - theorem unique_factorization_monoid_iff_exists_prime_of_factor - theorem unique_factorization_monoid_of_exists_prime_of_factor + theorem wf_dvd_monoid.of_exists_prime_factors - theorem wf_dvd_monoid_of_exists_prime_of_factor 2020-10-25 14:56:50 14cff9a chore(algebra/group/pi): add `pi.has_div` (#4776) Motivated by #4646 ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.div_apply 2020-10-24 22:07:59 f056468 chore(analysis/normed_space): add 2 `@[simp]` attrs (#4775) Add `@[simp]` to `norm_pos_iff` and `norm_le_zero_iff` ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem norm_le_zero_iff +/- theorem norm_pos_iff Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/units.lean Modified src/data/padics/hensel.lean 2020-10-24 11:48:11 cae77dc feat(algebra/direct_sum): Fix two todos about generalizing over unique types (#4764) Also promotes `id` to a `≃+`, and prefers coercion over direct use of `subtype.val`. ESTIMATED CHANGES Modified src/algebra/direct_sum.lean Modified src/data/dfinsupp.lean + theorem dfinsupp.single_injective Modified src/linear_algebra/direct_sum_module.lean 2020-10-24 05:36:36 de6a9d4 feat(ring_theory/polynomial/content): `gcd_monoid` instance on polynomials over gcd domain (#4760) Refactors `ring_theory/polynomial/content` a bit to introduce `prim_part` Provides a `gcd_monoid` instance on polynomials over a gcd domain ESTIMATED CHANGES Added src/data/polynomial/cancel_leads.lean + def polynomial.cancel_leads + theorem polynomial.dvd_cancel_leads_of_dvd_of_dvd + theorem polynomial.nat_degree_cancel_leads_lt_of_nat_degree_le_nat_degree + theorem polynomial.neg_cancel_leads Modified src/ring_theory/polynomial/content.lean + theorem polynomial.content_prim_part + theorem polynomial.dvd_iff_content_dvd_content_and_prim_part_dvd_prim_part + theorem polynomial.eq_C_content_mul_prim_part - theorem polynomial.eq_C_mul_primitive + theorem polynomial.exists_primitive_lcm_of_is_primitive + theorem polynomial.is_primitive.dvd_prim_part_iff_dvd + theorem polynomial.is_primitive.mul + theorem polynomial.is_primitive.prim_part_eq + theorem polynomial.is_primitive_prim_part + theorem polynomial.is_unit_prim_part_C + theorem polynomial.nat_degree_prim_part + def polynomial.prim_part + theorem polynomial.prim_part_dvd + theorem polynomial.prim_part_mul + theorem polynomial.prim_part_ne_zero + theorem polynomial.prim_part_zero 2020-10-24 05:36:34 570c293 feat(data/polynomial/ring_division): Two easy lemmas about polynomials (#4742) Two easy lemmas from my previous, now splitted, PR. ESTIMATED CHANGES Modified src/data/polynomial/monic.lean + theorem polynomial.monic_X_pow_sub_C Modified src/data/polynomial/ring_division.lean + theorem polynomial.leading_coeff_div_by_monic_of_monic 2020-10-24 05:36:32 b9a94d6 feat(linear_algebra/nonsingular_inverse): add stronger form of Cramer's rule (#4737) Also renaming `cramer_transpose_eq_adjugate_mul_vec` --> `cramer_eq_adjugate_mul_vec` after the transpose was rendered redundant. ESTIMATED CHANGES Modified docs/100.yaml Modified src/linear_algebra/nonsingular_inverse.lean + theorem matrix.cramer_eq_adjugate_mul_vec - theorem matrix.cramer_transpose_eq_adjugate_mul_vec - theorem matrix.cramers_rule + theorem matrix.det_smul_inv_mul_vec_eq_cramer + theorem matrix.mul_vec_cramer 2020-10-24 03:10:11 2987a49 fix(tactic/core): use eval_pexpr in run_parser_cmd (#4761) Continuation of #4745, see https://github.com/leanprover-community/mathlib/pull/4745#discussion_r510771137 ESTIMATED CHANGES Modified src/tactic/core.lean 2020-10-24 01:02:28 8255507 feat(data/pnat/basic): Add strong induction on pnat (#4736) I added strong induction on `pnat`. (This was from a previous PR that I am splitting.) ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.case_strong_induction_on + theorem pnat.exists_eq_succ_of_ne_one + theorem pnat.strong_induction_on 2020-10-23 22:12:51 c141eed feat(data/list/basic): Add prod_reverse_noncomm (#4757) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.prod_reverse_noncomm 2020-10-23 22:12:50 4ec88db feat(algebra/direct_sum): Bundle the homomorphisms (#4754) ESTIMATED CHANGES Modified src/algebra/direct_sum.lean +/- def direct_sum.mk - theorem direct_sum.mk_add - theorem direct_sum.mk_neg - theorem direct_sum.mk_sub - theorem direct_sum.mk_zero +/- def direct_sum.of - theorem direct_sum.of_add - theorem direct_sum.of_neg - theorem direct_sum.of_sub - theorem direct_sum.of_zero +/- def direct_sum.to_group - theorem direct_sum.to_group_add - theorem direct_sum.to_group_neg - theorem direct_sum.to_group_sub - theorem direct_sum.to_group_zero Modified src/linear_algebra/direct_sum/finsupp.lean Modified src/linear_algebra/direct_sum_module.lean 2020-10-23 22:12:48 aa59039 feat(category_theory): presheaf is colimit of representables (#4401) Show every presheaf (on a small category) is a colimit of representables, and some related results. Suggestions for better names more than welcome. ESTIMATED CHANGES Modified docs/references.bib Modified src/category_theory/adjunction/default.lean Modified src/category_theory/adjunction/opposites.lean + def adjunction.nat_iso_of_left_adjoint_nat_iso + def adjunction.nat_iso_of_right_adjoint_nat_iso Added src/category_theory/limits/presheaf.lean + def category_theory.cocone_of_representable + theorem category_theory.cocone_of_representable_X + def category_theory.colimit_adj.elements.initial + def category_theory.colimit_adj.extend_along_yoneda + theorem category_theory.colimit_adj.extend_along_yoneda_obj + def category_theory.colimit_adj.is_extension_along_yoneda + def category_theory.colimit_adj.is_initial + def category_theory.colimit_adj.restrict_yoneda_hom_equiv + theorem category_theory.colimit_adj.restrict_yoneda_hom_equiv_natural + def category_theory.colimit_adj.restricted_yoneda + def category_theory.colimit_adj.restricted_yoneda_yoneda + def category_theory.colimit_adj.yoneda_adjunction + def category_theory.colimit_of_representable + def category_theory.extend_along_yoneda_yoneda + def category_theory.functor_to_representables Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.initial_op_of_terminal + def category_theory.limits.initial_unop_of_terminal + def category_theory.limits.terminal_op_of_initial + def category_theory.limits.terminal_unop_of_initial 2020-10-23 20:04:40 5afeb9b chore(*): a few more type-specific ext lemmas (#4741) * mark lemmas about homs from `multiplicative nat` and `multiplicative int` as `@[ext]`; * add a special case lemma about linear maps from the base semiring; * ext lemmas for ring homs from `(add_)monoid_algebra`; * ext lemmas for multiplicative homs from `multiplicative (α →₀ M)`; * make sure that Lean can chain ext lemmas by using hom equalities in lemmas about `finsupp`/`(add_)monoid_algebra`. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean +/- theorem monoid_hom.ext_mint +/- theorem monoid_hom.ext_mnat Modified src/algebra/module/basic.lean + theorem linear_map.ext_ring Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.alg_hom_ext' +/- theorem add_monoid_algebra.alg_hom_ext + theorem add_monoid_algebra.ring_hom_ext' + theorem add_monoid_algebra.ring_hom_ext + theorem monoid_algebra.alg_hom_ext' +/- theorem monoid_algebra.alg_hom_ext + theorem monoid_algebra.ring_hom_ext' + theorem monoid_algebra.ring_hom_ext Modified src/data/finsupp/basic.lean + theorem finsupp.add_hom_ext' +/- theorem finsupp.add_hom_ext - theorem finsupp.lhom_ext' - theorem finsupp.lhom_ext + theorem finsupp.mul_hom_ext' + theorem finsupp.mul_hom_ext Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.ring_hom_ext Modified src/linear_algebra/finsupp.lean + theorem finsupp.lhom_ext' + theorem finsupp.lhom_ext Modified src/linear_algebra/matrix.lean 2020-10-23 17:42:40 0bbf3e2 fix(deprecated/group): Correct the name of `is_add_group_hom has_neg.neg` (#4755) Rename `inv.is_add_group_hom` to `neg.is_add_group_hom`. ESTIMATED CHANGES Modified src/deprecated/group.lean 2020-10-23 13:03:43 5886961 feat(data/{nat,list}/basic): Add some trivial lemmas (#4738) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.prod_inv + theorem list.prod_inv_reverse Modified src/data/nat/basic.lean 2020-10-23 10:15:32 b651c6f feat(tactic/core): add `run_parser` user command (#4745) Allows for writing things like: ```lean import tactic.core run_parser emit_code_here "def foo := 1" ``` Relevant Zulip conversation: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/universes/near/214229509 ESTIMATED CHANGES Modified src/tactic/core.lean Added test/run_parser.lean 2020-10-23 10:15:30 fb4aee0 fix(deprecated/*): remove instances (#4735) Remove all instances constructing structures from `is_*` predicates, like for example: ```lean instance subset.ring {S : set R} [is_subring S] : ring S := ... ``` Co-Authored-By: Gabriel Ebner ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + def algebra.of_is_subring Modified src/algebra/group_action_hom.lean Modified src/algebra/group_ring_action.lean Modified src/deprecated/subfield.lean Modified src/deprecated/subgroup.lean + def subtype.comm_group + def subtype.group Modified src/deprecated/submonoid.lean + def subtype.comm_monoid + def subtype.monoid Modified src/deprecated/subring.lean + def subring.domain + def subset.comm_ring + def subset.ring + def subtype.comm_ring + def subtype.ring Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean Added test/import_order_timeout.lean + theorem foo + theorem injective_iff 2020-10-23 10:15:28 70b14ce refactor(*): use is_scalar_tower instead of restrict_scalars (#4733) - rename `semimodule.restrict_scalars` to `restrict_scalars` - rename `restrict_scalars` to `subspace.restrict_scalars` - use `is_scalar_tower` wherever possible - add warnings to docstrings about `restrict_scalars` to encourage `is_scalar_tower` instead ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - def algebra.restrict_scalars_equiv - theorem algebra.restrict_scalars_equiv_apply - theorem algebra.restrict_scalars_equiv_symm_apply + theorem algebra_map_smul + theorem linear_map.algebra_module.smul_apply + theorem linear_map.coe_coe_is_scalar_tower +/- theorem linear_map.coe_restrict_scalars_eq_coe + theorem linear_map.ker_restrict_scalars +/- def linear_map.lto_fun +/- def linear_map.restrict_scalars + def linear_map.smul_algebra_right + theorem linear_map.smul_algebra_right_apply + theorem linear_map.smul_apply' - def linear_map_algebra_has_scalar - theorem linear_map_algebra_module.smul_apply - def linear_map_algebra_module + def restrict_scalars - theorem restrict_scalars_ker + theorem restrict_scalars_smul_def - def semimodule.restrict_scalars' - def semimodule.restrict_scalars - theorem semimodule.restrict_scalars_smul_def - def smul_algebra_right - theorem smul_algebra_right_apply +/- def submodule.restrict_scalars +/- theorem submodule.restrict_scalars_bot + theorem submodule.restrict_scalars_inj + theorem submodule.restrict_scalars_injective +/- theorem submodule.restrict_scalars_mem +/- theorem submodule.restrict_scalars_top Modified src/algebra/monoid_algebra.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/basic.lean - def normed_space.restrict_scalars' + def normed_space.restrict_scalars Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/inner_product.lean Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.smul_algebra_right +/- theorem continuous_linear_map.smul_algebra_right_apply Modified src/data/complex/is_R_or_C.lean Modified src/data/complex/module.lean Modified src/field_theory/tower.lean Modified src/representation_theory/maschke.lean - def conjugate - theorem conjugate_i - def equivariant_projection - theorem equivariant_projection_condition + def linear_map.conjugate + theorem linear_map.conjugate_i + def linear_map.equivariant_projection + theorem linear_map.equivariant_projection_condition + def linear_map.sum_of_conjugates + def linear_map.sum_of_conjugates_equivariant - def sum_of_conjugates - def sum_of_conjugates_equivariant Modified src/ring_theory/algebra_tower.lean - def submodule.restrict_scalars' - theorem submodule.restrict_scalars'_inj - theorem submodule.restrict_scalars'_injective - theorem submodule.restrict_scalars'_top 2020-10-23 10:15:26 82b4843 feat(ring_theory/roots_of_unity): Roots of unity as union of primitive roots (#4644) I have added some lemmas about roots of unity, especially `root_of_unity_eq_uniun_prim` that says that, if there is a primitive `n`-th root of unity in `R`, then the set of `n`-th roots of unity is equal to the union of `primitive_roots i R` for `i | n`. I will use this lemma in to develop the theory of cyclotomic polynomials. ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.pos_of_div_pos Modified src/data/polynomial/ring_division.lean + theorem polynomial.mem_nth_roots_finset + def polynomial.nth_roots_finset Modified src/number_theory/divisors.lean + theorem nat.filter_dvd_eq_divisors Modified src/ring_theory/roots_of_unity.lean + theorem is_primitive_root.card_nth_roots + theorem is_primitive_root.card_nth_roots_finset + theorem is_primitive_root.disjoint + theorem is_primitive_root.nth_roots_nodup + theorem is_primitive_root.nth_roots_one_eq_bind_primitive_roots + theorem is_primitive_root.pow 2020-10-23 10:15:24 278a14b feat(analysis/p_series): prove the p-series convergence test (#4360) ESTIMATED CHANGES Modified docs/100.yaml Added src/analysis/p_series.lean + theorem ennreal.le_tsum_condensed + theorem ennreal.tsum_condensed_le + theorem finset.le_sum_condensed' + theorem finset.le_sum_condensed + theorem finset.sum_condensed_le' + theorem finset.sum_condensed_le + theorem nnreal.summable_condensed_iff + theorem nnreal.summable_one_div_rpow + theorem nnreal.summable_one_rpow_inv + theorem real.not_summable_nat_cast_inv + theorem real.not_summable_one_div_nat_cast + theorem real.summable_nat_pow_inv + theorem real.summable_nat_rpow_inv + theorem real.summable_one_div_nat_pow + theorem real.summable_one_div_nat_rpow + theorem real.tendsto_sum_range_one_div_nat_succ_at_top + theorem summable_condensed_iff_of_nonneg Modified src/analysis/specific_limits.lean - theorem half_le_harmonic_double_sub_harmonic - def harmonic_series - theorem harmonic_tendsto_at_top - theorem mono_harmonic - theorem self_div_two_le_harmonic_two_pow Modified src/order/filter/cofinite.lean + theorem filter.eventually_cofinite_ne 2020-10-23 10:15:21 04b5572 feat(ring_theory/witt_vector/defs): type of witt vectors + ring operations (#4332) Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/ring_theory/witt_vector/defs.lean + theorem witt_vector.add_coeff + def witt_vector.coeff + theorem witt_vector.coeff_mk + def witt_vector.eval + theorem witt_vector.ext + theorem witt_vector.ext_iff + def witt_vector.mk + theorem witt_vector.mul_coeff + theorem witt_vector.neg_coeff + theorem witt_vector.one_coeff_eq_of_pos + theorem witt_vector.one_coeff_zero + def witt_vector.peval + theorem witt_vector.zero_coeff + def witt_vector 2020-10-23 07:42:45 9e4ef85 feat(linear_algebra/affine_space): define `affine_equiv.mk'` (#4750) Similarly to `affine_map.mk'`, this constructor checks that the map agrees with its linear part only for one base point. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.coe_mk' + theorem affine_equiv.linear_mk' + def affine_equiv.mk' + theorem affine_equiv.to_equiv_mk' 2020-10-23 07:42:43 468c01c chore(topology/*): add two missing simp coe lemmas (#4748) ESTIMATED CHANGES Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.coe_to_linear_equiv Modified src/topology/metric_space/isometry.lean + theorem isometric.coe_to_equiv 2020-10-23 07:42:40 458c833 chore(algebra/group/basic): Mark inv_involutive simp (#4744) This means expressions like `has_inv.inv ∘ has_inv.inv` can be simplified ESTIMATED CHANGES Modified src/algebra/group/basic.lean 2020-10-23 05:47:36 bb52355 feat(linear_algebra/basic): define `linear_equiv.neg` (#4749) Also weaken requirements for `has_neg (M →ₗ[R] M₂)` from `[add_comm_group M]` `[add_comm_group M₂]` to `[add_comm_monoid M]` `[add_comm_group M₂]`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_equiv.coe_neg + def linear_equiv.neg + theorem linear_equiv.neg_apply + theorem linear_equiv.symm_neg 2020-10-23 05:47:34 dc4ad81 refactor(*): lmul is an algebra hom (#4724) also, make some arguments implicit, and add simp lemmas ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean +/- theorem algebra.lmul'_apply +/- def algebra.lmul +/- theorem algebra.lmul_left_apply + theorem algebra.lmul_left_mul + theorem algebra.lmul_left_one +/- theorem algebra.lmul_right_apply + theorem algebra.lmul_right_mul + theorem algebra.lmul_right_one +/- theorem module.algebra_map_End_apply +/- theorem module.algebra_map_End_eq_smul_id +/- theorem module.ker_algebra_map_End Modified src/algebra/algebra/operations.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/linear_algebra/basic.lean +/- theorem linear_map.mul_apply Modified src/linear_algebra/finite_dimensional.lean 2020-10-23 05:47:32 ff711a3 feat(measure_theory/measure_space): Added lemmas for commuting restrict for outer measures and measures (#4673) This also adds `of_function_apply` and `Inf_apply` (for `outer_measure`). I had some difficulty getting these functions to expand (as represented by the length of `Inf_apply`) in a clean way. I also think `Inf_apply` is instructive in terms of making it clear what the definition of `Inf` is. Once `Inf` is rewritten, then the large set of operations available for `infi_le` and `le_infi` (and `ennreal.tsum_le_tsum`) can be used. `measure.restrict_Inf_eq_Inf_restrict` will be helpful in getting more results about the subtraction of measures, specifically writing down the result of `(a - b)` when `a` is not less than or equal to `b` and `b` is not less than or equal to `a`. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.measure.le_of_add_le_add_left + theorem measure_theory.measure.restrict_Inf_eq_Inf_restrict + theorem measure_theory.measure.restrict_to_outer_measure_eq_to_outer_measure_restrict Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.Inf_apply +/- theorem measure_theory.outer_measure.Inf_gen_nonempty2 + theorem measure_theory.outer_measure.of_function_apply + theorem measure_theory.outer_measure.restrict_Inf_eq_Inf_restrict + theorem measure_theory.outer_measure.restrict_trim 2020-10-23 04:31:09 f279313 feat(category_theory/yoneda): better simp lemmas for small yoneda (#4743) Gives nicer (d)simp lemmas for yoneda_sections_small. ESTIMATED CHANGES Modified src/category_theory/yoneda.lean +/- def category_theory.yoneda_sections_small + theorem category_theory.yoneda_sections_small_hom + theorem category_theory.yoneda_sections_small_inv_app_apply 2020-10-23 01:10:33 8bd1df5 chore(scripts): update nolints.txt (#4747) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-22 17:33:36 de12036 chore(data/polynomial): remove monomial_one_eq_X_pow (#4734) monomial_one_eq_X_pow was a duplicate of X_pow_eq_monomial ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/monomial.lean - theorem polynomial.monomial_one_eq_X_pow Modified src/ring_theory/polynomial_algebra.lean 2020-10-22 14:57:55 6eb5564 chore(data/equiv/basic): Add a simp lemma perm.coe_mul (#4723) This mirrors `equiv.coe_trans` ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.perm.coe_mul +/- theorem equiv.perm.mul_apply 2020-10-22 07:48:25 add5096 chore(*): 3 unrelated small changes (#4732) * fix universe levels in `equiv.set.compl`: by default Lean uses some `max` universes both for `α` and `β`, and it backfires when one tries to apply it. * add `nat.mul_factorial_pred`; * add instance `fixed_points.decidable`. Part of #4731 ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/nat/factorial.lean + theorem nat.mul_factorial_pred Modified src/dynamics/fixed_points/basic.lean 2020-10-22 07:48:23 aba31c9 feat(algebra/monoid_algebra): define a non-commutative version of `lift` (#4725) * [X] define `monoid_algebra.lift_c` and `add_monoid_algebra.lift_nc` to be generalizations of `(mv_)polynomial.eval₂` to `(add_)monoid_algebra`s. * [X] use `to_additive` in many proofs about `add_monoid_algebra`; * [X] define `finsupp.nontrivial`, use it for `(add_)monoid_algebra.nontrivial`; * [X] copy more lemmas about `lift` from `monoid_algebra` to `add_monoid_algebra`; * [X] use `@[ext]` on more powerful type-specific lemmas; * [x] fix docstrings of `(add_)monoid_algebra.lift₂`; * [x] fix compile failures. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/category/CommRing/adjunctions.lean Modified src/algebra/monoid_algebra.lean +/- theorem add_monoid_algebra.alg_hom_ext +/- theorem add_monoid_algebra.alg_hom_ext_iff +/- def add_monoid_algebra.lift + theorem add_monoid_algebra.lift_apply' + theorem add_monoid_algebra.lift_apply + theorem add_monoid_algebra.lift_def + def add_monoid_algebra.lift_nc + theorem add_monoid_algebra.lift_nc_mul + theorem add_monoid_algebra.lift_nc_one + theorem add_monoid_algebra.lift_nc_single + theorem add_monoid_algebra.lift_of + theorem add_monoid_algebra.lift_single + theorem add_monoid_algebra.lift_symm_apply + theorem add_monoid_algebra.lift_unique' + theorem add_monoid_algebra.lift_unique +/- theorem add_monoid_algebra.of_apply +/- theorem monoid_algebra.alg_hom_ext + theorem monoid_algebra.lift_apply' + theorem monoid_algebra.lift_def + def monoid_algebra.lift_nc + theorem monoid_algebra.lift_nc_mul + theorem monoid_algebra.lift_nc_one + theorem monoid_algebra.lift_nc_single Modified src/data/finsupp/basic.lean + theorem finsupp.comp_lift_add_hom + theorem finsupp.lift_add_hom_apply_single + theorem finsupp.lift_add_hom_comp_single + theorem finsupp.prod_add_index' + theorem finsupp.sum_add_index' Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.aeval_unique +/- theorem mv_polynomial.alg_hom_ext - theorem mv_polynomial.eval_unique +/- theorem mv_polynomial.ring_hom_ext + theorem mv_polynomial.single_eq_monomial Modified src/data/mv_polynomial/comap.lean Modified src/data/mv_polynomial/monad.lean + theorem mv_polynomial.bind₁_comp_rename + theorem mv_polynomial.rename_comp_bind₁ 2020-10-22 07:48:21 fb5ef2b feat(linear_algebra/nonsingular_inverse): state Cramer's rule explicitly (#4700) Mostly so that we can add an entry to the Freek 100. ESTIMATED CHANGES Modified docs/100.yaml Modified src/data/matrix/basic.lean + theorem matrix.smul_mul_vec_assoc Modified src/linear_algebra/determinant.lean +/- theorem matrix.det_eq_zero_of_column_eq_zero + theorem matrix.det_eq_zero_of_row_eq_zero - theorem matrix.det_zero_of_column_eq + theorem matrix.det_zero_of_row_eq Modified src/linear_algebra/nonsingular_inverse.lean +/- def matrix.adjugate +/- def matrix.cramer +/- theorem matrix.cramer_apply - theorem matrix.cramer_column_self +/- def matrix.cramer_map + theorem matrix.cramer_transpose_eq_adjugate_mul_vec + theorem matrix.cramer_transpose_row_self + theorem matrix.cramers_rule 2020-10-22 06:38:42 03f0285 refactor(algebra/add_torsor): define pointwise `-ᵥ` and `+ᵥ` on sets (#4710) This seems more natural than `vsub_set` to me. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem set.empty_vsub + theorem set.finite.vadd + theorem set.finite.vsub + theorem set.singleton_vadd + theorem set.singleton_vsub + theorem set.singleton_vsub_self + theorem set.vadd_singleton + theorem set.vadd_subset_vadd + theorem set.vsub_empty + theorem set.vsub_mem_vsub + theorem set.vsub_self_mono + theorem set.vsub_singleton + theorem set.vsub_subset_iff + theorem set.vsub_subset_vsub - theorem vsub_mem_vsub_set - def vsub_set - theorem vsub_set_empty - theorem vsub_set_finite_of_finite - theorem vsub_set_mono - theorem vsub_set_singleton Modified src/geometry/euclidean/monge_point.lean Modified src/linear_algebra/affine_space/basic.lean +/- def vector_span +/- theorem vector_span_def +/- theorem vsub_set_subset_vector_span Modified src/linear_algebra/affine_space/finite_dimensional.lean 2020-10-22 05:15:46 4c4d47c feat(algebra/gcd_monoid): noncomputably defines `gcd_monoid` structures from partial information (#4664) Adds the following 4 noncomputable functions which define `gcd_monoid` instances. `gcd_monoid_of_gcd` takes as input a `gcd` function and a few of its properties `gcd_monoid_of_lcm` takes as input a `lcm` function and a few of its properties `gcd_monoid_of_exists_gcd` takes as input the prop that every two elements have a `gcd` `gcd_monoid_of_exists_lcm` takes as input the prop that every two elements have an `lcm` ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean 2020-10-22 01:14:08 fca876e chore(scripts): update nolints.txt (#4730) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-21 15:31:43 df45002 feat(archive): formalize compiler correctness by McCarthy and Painter (#4702) Add a formalization of the correctness of a compiler from arithmetic expressions to machine language described by McCarthy and Painter, which is considered the first proof of compiler correctness. ESTIMATED CHANGES Added archive/arithcc.lean + def arithcc.compile + theorem arithcc.compiler_correctness + inductive arithcc.expr + def arithcc.identifier + inductive arithcc.instruction + def arithcc.loc + def arithcc.outcome + theorem arithcc.outcome_append + def arithcc.read + theorem arithcc.register.le_of_lt_succ + theorem arithcc.register.lt_succ_self + def arithcc.register + structure arithcc.state + def arithcc.state_eq + theorem arithcc.state_eq_implies_write_eq + def arithcc.state_eq_rs + theorem arithcc.state_eq_rs_implies_write_eq_rs + def arithcc.step + def arithcc.value + def arithcc.word + def arithcc.write + theorem arithcc.write_eq_implies_state_eq 2020-10-21 15:31:40 1b4e769 feat(linear_algebra/affine_space): define `affine_equiv` (#2909) Define * [X] `affine_equiv` to be an invertible affine map (e.g., extend both `affine_map` and `equiv`); * [X] conversion to `linear_equiv`; * [X] `group` structure on affine automorphisms; * [X] prove standard lemmas for equivalences (`apply_symm_apply`, `symm_apply_eq` etc). API changes * make `G` implicit in `equiv.vadd_const`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean +/- theorem equiv.coe_vadd_const +/- theorem equiv.coe_vadd_const_symm Modified src/analysis/normed_space/add_torsor.lean +/- theorem isometric.vadd_const_to_equiv Added src/linear_algebra/affine_space/affine_equiv.lean + theorem affine_equiv.apply_eq_iff_eq + theorem affine_equiv.apply_eq_iff_eq_symm_apply + theorem affine_equiv.apply_symm_apply + theorem affine_equiv.coe_fn_inj + theorem affine_equiv.coe_mul + theorem affine_equiv.coe_one + theorem affine_equiv.coe_refl + theorem affine_equiv.coe_to_affine_map + theorem affine_equiv.coe_to_equiv + theorem affine_equiv.coe_trans + def affine_equiv.const_vadd + theorem affine_equiv.const_vadd_apply + theorem affine_equiv.const_vadd_symm_apply + theorem affine_equiv.ext + theorem affine_equiv.injective_coe_fn + theorem affine_equiv.injective_to_affine_map + theorem affine_equiv.injective_to_equiv + theorem affine_equiv.inv_def + theorem affine_equiv.linear_const_vadd + theorem affine_equiv.linear_refl + theorem affine_equiv.linear_to_affine_map + theorem affine_equiv.linear_vadd_const + theorem affine_equiv.map_vadd + theorem affine_equiv.mul_def + theorem affine_equiv.one_def + theorem affine_equiv.range_eq + def affine_equiv.refl + theorem affine_equiv.refl_apply + theorem affine_equiv.refl_trans + def affine_equiv.symm + theorem affine_equiv.symm_apply_apply + theorem affine_equiv.symm_linear + theorem affine_equiv.symm_refl + theorem affine_equiv.symm_to_equiv + theorem affine_equiv.symm_trans + def affine_equiv.to_affine_map + theorem affine_equiv.to_affine_map_inj + theorem affine_equiv.to_affine_map_mk + theorem affine_equiv.to_equiv_inj + theorem affine_equiv.to_equiv_refl + def affine_equiv.trans + theorem affine_equiv.trans_apply + theorem affine_equiv.trans_assoc + theorem affine_equiv.trans_refl + theorem affine_equiv.trans_symm + def affine_equiv.vadd_const + theorem affine_equiv.vadd_const_apply + theorem affine_equiv.vadd_const_symm_apply + structure affine_equiv + theorem linear_equiv.coe_to_affine_equiv + def linear_equiv.to_affine_equiv 2020-10-21 13:35:00 75316ca chore(linear_algebra/basic): a few simp lemmas (#4727) * add `submodule.nonempty`; * add `@[simp]` to `submodule.map_id`; * add `submodule.neg_coe`, `protected submodule.map_neg`, and `submodule.span_neg`. ESTIMATED CHANGES Modified src/algebra/module/submodule.lean Modified src/linear_algebra/basic.lean +/- theorem submodule.map_id + theorem submodule.neg_coe + theorem submodule.span_neg 2020-10-21 01:39:35 01c1e6f chore(scripts): update nolints.txt (#4721) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-21 01:39:33 3a860cc fixup(category_theory/sites): add arrow sets that aren't sieves (#4703) Broken off from #4648. - I realised that by creating a type `arrows_with_codomain` I can avoid using `set (over X)` entirely (the bit I was missing was that `derive complete_lattice` works on the new type even though it wasn't inferred on the pi-type), so I changed sieves to use that instead. - I added constructors for special arrow sets. The definitions of `singleton_arrow` and `pullback_arrows` look a bit dubious because of the equality and `eq_to_hom` stuff; I don't love that either so if there's a suggestion on how to achieve the same things (in particular stating (1) and (3) from: https://stacks.math.columbia.edu/tag/00VH, as well as a complete lattice structure) I'd be happy to consider. - I added a coercion so we can write `S f` instead of `S.arrows f` for sieves. ESTIMATED CHANGES Modified src/category_theory/sites/grothendieck.lean +/- theorem category_theory.grothendieck_topology.arrow_max + theorem category_theory.grothendieck_topology.bind_covering +/- theorem category_theory.grothendieck_topology.dense_covering + theorem category_theory.grothendieck_topology.ext Modified src/category_theory/sites/sieves.lean + def category_theory.arrows_with_codomain.bind + theorem category_theory.arrows_with_codomain.bind_comp + def category_theory.arrows_with_codomain.singleton_arrow + theorem category_theory.arrows_with_codomain.singleton_arrow_eq_iff_domain + theorem category_theory.arrows_with_codomain.singleton_arrow_self + def category_theory.arrows_with_codomain + def category_theory.sieve.bind + theorem category_theory.sieve.downward_closed +/- def category_theory.sieve.generate - inductive category_theory.sieve.generate_sets +/- def category_theory.sieve.gi_generate +/- theorem category_theory.sieve.id_mem_iff_eq_top + theorem category_theory.sieve.le_pullback_bind + theorem category_theory.sieve.mem_generate +/- theorem category_theory.sieve.mem_pushforward_of_comp +/- theorem category_theory.sieve.mem_top +/- theorem category_theory.sieve.pullback_eq_top_iff_mem +/- theorem category_theory.sieve.pullback_eq_top_of_mem + theorem category_theory.sieve.pushforward_le_bind_of_mem - def category_theory.sieve.set_over +/- theorem category_theory.sieve.sets_iff_generate 2020-10-21 00:42:57 857cbd5 chore(category_theory/limits/preserves): split up files and remove redundant defs (#4717) Broken off from #4163 and #4716. While the diff of this PR is quite big, it actually doesn't do very much: - I removed the definitions of `preserves_(co)limits_iso` from `preserves/basic`, since there's already a version in `preserves/shapes` which has lemmas about it. (I didn't keep them in `preserves/basic` since that file is already getting quite big, so I chose to instead put them into the smaller file. - I split up `preserves/shapes` into two files: `preserves/limits` and `preserves/shapes`. From my other PRs my plan is for `shapes` to contain isomorphisms and constructions for special shapes, eg `fan.mk` and `fork`s, some of which aren't already present, and `limits` to have things for the general case. In this PR I don't change the situation for special shapes (other than simplifying some proofs), other than moving it into a separate file for clarity. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space/has_colimits.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/preserves/basic.lean - def category_theory.limits.preserves_colimit_iso - def category_theory.limits.preserves_limit_iso Added src/category_theory/limits/preserves/limits.lean + theorem lift_comp_preserves_limits_iso_hom + def preserves_colimit_iso + theorem preserves_colimits_iso_inv_comp_desc + theorem preserves_desc_map_cocone + theorem preserves_lift_map_cone + def preserves_limit_iso + theorem preserves_limits_iso_hom_π + theorem preserves_limits_iso_inv_π + theorem ι_preserves_colimits_iso_hom + theorem ι_preserves_colimits_iso_inv Modified src/category_theory/limits/preserves/shapes.lean - def preserves_limits_iso - theorem preserves_limits_iso_hom_π 2020-10-20 13:15:11 8489972 feat(data/complex/module): ![1, I] is a basis of C over R (#4713) ESTIMATED CHANGES Modified src/data/complex/module.lean + theorem complex.coe_algebra_map + theorem complex.dim_real_complex + theorem complex.findim_real_complex + theorem complex.im_smul + theorem complex.is_basis_one_I + theorem complex.re_smul + theorem complex.{u} + theorem dim_real_of_complex + theorem findim_real_of_complex Modified src/data/matrix/notation.lean + theorem matrix.range_cons + theorem matrix.range_empty 2020-10-20 10:23:27 cf551ee chore(*): review some lemmas about injectivity of coercions (#4711) API changes: * rename `linear_map.coe_fn_congr` to `protected linear_map.congr_arg`; * rename `linear_map.lcongr_fun` to `protected linear_map.congr_fun`; * rename `enorm.coe_fn_injective` to `enorm.injective_coe_fn`, add `enorm.coe_inj`; * rename `equiv.coe_fn_injective` to `equiv.injective_coe_fn`, reformulate in terms of `function.injective`; * add `equiv.coe_inj`; * add `affine_map.injective_coe_fn`, `protected affine_map.congr_arg`, and `protected affine_map.congr_fun`; * rename `linear_equiv.to_equiv_injective` to `linear_equiv.injective_to_equiv`, add `linear_equiv.to_equiv_inj`; * rename `linear_equiv.eq_of_linear_map_eq` to `linear_equiv.injective_to_linear_map`, formulate as `injective coe`; * add `linear_equiv.to_linear_map_inj`; * rename `outer_measure.coe_fn_injective` to `outer_measure.injective_coe_fn`; * rename `rel_iso.to_equiv_injective` to `rel_iso.injective_to_equiv`; * rename `rel_iso.coe_fn_injective` to `rel_iso.injective_coe_fn`; * rename `continuous_linear_map.coe_fn_injective` to `injective_coe_fn`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean - theorem linear_map.coe_fn_congr - theorem linear_map.lcongr_fun Modified src/analysis/normed_space/enorm.lean - theorem enorm.coe_fn_injective + theorem enorm.coe_inj + theorem enorm.injective_coe_fn Modified src/analysis/normed_space/operator_norm.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/data/equiv/basic.lean - theorem equiv.coe_fn_injective + theorem equiv.injective_coe_fn Modified src/linear_algebra/affine_space/basic.lean + theorem affine_map.injective_coe_fn Modified src/linear_algebra/basic.lean - theorem linear_equiv.eq_of_linear_map_eq + theorem linear_equiv.injective_to_equiv + theorem linear_equiv.injective_to_linear_map +/- theorem linear_equiv.refl_trans + theorem linear_equiv.to_equiv_inj - theorem linear_equiv.to_equiv_injective + theorem linear_equiv.to_linear_map_inj +/- theorem linear_equiv.trans_refl Modified src/linear_algebra/basis.lean Modified src/linear_algebra/determinant.lean Modified src/measure_theory/outer_measure.lean - theorem measure_theory.outer_measure.coe_fn_injective + theorem measure_theory.outer_measure.injective_coe_fn Modified src/order/rel_iso.lean - theorem rel_iso.coe_fn_injective + theorem rel_iso.injective_coe_fn + theorem rel_iso.injective_to_equiv - theorem rel_iso.to_equiv_injective Modified src/set_theory/ordinal.lean Modified src/topology/algebra/module.lean - theorem continuous_linear_map.coe_fn_injective + theorem continuous_linear_map.injective_coe_fn 2020-10-20 10:23:25 5d52ea4 chore(.gitignore): gitignore for emacs temp files (#4699) Emacs backup files end in `~`, and you don't want them in the repo. Just makes things mildly easier for emacs users if that pattern is in the gitignore. ESTIMATED CHANGES Modified .gitignore 2020-10-20 08:10:53 8131349 fix(tactic/norm_num): remove one_div from simp set (#4705) fixes #4701 ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2020-10-20 08:10:51 617e829 feat(linear_algebra/affine_space/ordered): define `slope` (#4669) * Review API of `ordered_semimodule`: - replace `lt_of_smul_lt_smul_of_nonneg` with `lt_of_smul_lt_smul_of_pos`; it's equivalent but is easier to prove; - add more lemmas; - add a constructor for the special case of an ordered semimodule over a linearly ordered field; in this case it suffices to verify only `a < b → 0 < c → c • a ≤ c • b`; - use the new constructor in `analysis/convex/cone`; * Define `units.smul_perm_hom`, reroute `mul_action.to_perm` through it; * Add a few more lemmas unfolding `affine_map.line_map` in special cases; * Define `slope f a b = (b - a)⁻¹ • (f b -ᵥ f a)` and prove a handful of monotonicity properties. ESTIMATED CHANGES Modified src/algebra/module/ordered.lean + theorem eq_of_smul_eq_smul_of_pos_of_le + theorem le_smul_iff_of_pos + theorem lt_of_smul_lt_smul_of_nonneg + def ordered_semimodule.mk'' + def ordered_semimodule.mk' + theorem smul_le_iff_of_pos + theorem smul_le_smul_iff_of_neg + theorem smul_le_smul_iff_of_pos + theorem smul_lt_iff_of_pos + theorem smul_lt_smul_iff_of_pos + theorem smul_pos_iff_of_pos Modified src/analysis/convex/cone.lean Modified src/group_theory/group_action.lean + theorem is_unit.smul_left_cancel +/- def mul_action.to_perm + theorem units.smul_eq_iff_eq_inv_smul + theorem units.smul_left_cancel + def units.smul_perm_hom Modified src/linear_algebra/affine_space/basic.lean + theorem affine_map.fst_line_map + theorem affine_map.line_map_apply_module' + theorem affine_map.line_map_apply_module + theorem affine_map.line_map_apply_one_sub + theorem affine_map.line_map_apply_ring' + theorem affine_map.line_map_apply_ring + theorem affine_map.line_map_same_apply + theorem affine_map.snd_line_map Added src/linear_algebra/affine_space/ordered.lean + theorem eq_of_slope_eq_zero + theorem left_le_line_map_iff_le + theorem left_lt_line_map_iff_lt + theorem line_map_le_left_iff_le + theorem line_map_le_line_map_iff_of_lt + theorem line_map_le_map_iff_slope_le_slope + theorem line_map_le_map_iff_slope_le_slope_left + theorem line_map_le_map_iff_slope_le_slope_right + theorem line_map_le_right_iff_le + theorem line_map_lt_left_iff_lt + theorem line_map_lt_line_map_iff_of_lt + theorem line_map_lt_map_iff_slope_lt_slope + theorem line_map_lt_map_iff_slope_lt_slope_left + theorem line_map_lt_map_iff_slope_lt_slope_right + theorem line_map_lt_right_iff_lt + theorem line_map_mono_endpoints + theorem line_map_mono_left + theorem line_map_mono_right + theorem line_map_slope_line_map_slope_line_map + theorem line_map_slope_slope_sub_div_sub + theorem line_map_strict_mono_endpoints + theorem line_map_strict_mono_left + theorem line_map_strict_mono_right + theorem map_le_line_map_iff_slope_le_slope + theorem map_le_line_map_iff_slope_le_slope_left + theorem map_le_line_map_iff_slope_le_slope_right + theorem map_lt_line_map_iff_slope_lt_slope + theorem map_lt_line_map_iff_slope_lt_slope_left + theorem map_lt_line_map_iff_slope_lt_slope_right + theorem right_le_line_map_iff_le + theorem right_lt_line_map_iff_lt + def slope + theorem slope_comm + theorem slope_def_field + theorem slope_same + theorem sub_div_sub_smul_slope_add_sub_div_sub_smul_slope 2020-10-20 05:38:10 b46190f chore(data/finsupp): minor review (#4712) * add a few lemmas about injectivity of `coe_fn` etc; * simplify definition of `finsupp.on_finset`; * replace the proof of `support_on_finset` by `rfl`; * make `finsupp.mem_support_on_finset` a `simp` lemma. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.coe_mk + theorem finsupp.coe_zero +/- theorem finsupp.ext + theorem finsupp.ext_iff' + theorem finsupp.injective_coe_fn +/- theorem finsupp.mem_support_on_finset +/- theorem finsupp.zero_apply Modified src/linear_algebra/basis.lean 2020-10-20 05:38:08 288802b chore(data/polynomial): slightly generalize `map_eq_zero` and `map_ne_zero` (#4708) We don't need the codomain to be a field. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean +/- theorem polynomial.map_eq_zero +/- theorem polynomial.map_ne_zero 2020-10-20 05:38:07 21415c8 chore(topology/algebra/ordered): drop section vars, golf 2 proofs (#4706) * Explicitly specify explicit arguments instead of using section variables; * Add `continuous_min` and `continuous_max`; * Use them for `tendsto.min` and `tendsto.max` ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem continuous.max +/- theorem continuous.min + theorem continuous_max + theorem continuous_min +/- theorem frontier_le_subset_eq +/- theorem frontier_lt_subset_eq 2020-10-20 05:38:04 0cf8a98 chore(data/set): a few more lemmas about `image2` (#4695) Also add `@[simp]` to `set.image2_singleton_left` and `set.image2_singleton_rigt`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean Modified src/data/set/basic.lean + theorem set.exists_prod_set + theorem set.forall_image2_iff + theorem set.image2_assoc +/- theorem set.image2_singleton +/- theorem set.image2_singleton_left +/- theorem set.image2_singleton_right + theorem set.image2_subset_iff 2020-10-20 05:38:01 050b5a1 feat(data/real/pi): Leibniz's series for pi (#4228) Freek No. 26 ESTIMATED CHANGES Modified docs/100.yaml Modified src/analysis/special_functions/exp_log.lean + theorem real.tendsto_div_pow_mul_exp_add_at_top + theorem real.tendsto_exp_nhds_0_nhds_1 + theorem real.tendsto_mul_exp_add_div_pow_at_top Modified src/analysis/special_functions/pow.lean + theorem real.log_rpow + theorem tendsto_rpow_at_top + theorem tendsto_rpow_div + theorem tendsto_rpow_div_mul_add + theorem tendsto_rpow_neg_at_top + theorem tendsto_rpow_neg_div Modified src/data/real/pi.lean + theorem real.tendsto_sum_pi_div_four Modified src/topology/algebra/monoid.lean + theorem tendsto.const_mul + theorem tendsto.mul_const Modified src/topology/algebra/ordered.lean + theorem tendsto_pow_at_top + theorem tendsto_pow_neg_at_top 2020-10-20 03:17:38 cd884eb feat(measure_theory): finite_spanning_sets_in (#4668) * We define a new Type-valued structure `finite_spanning_sets_in` which consists of a countable sequence of sets that span the type, have finite measure, and live in a specified collection of sets, * `sigma_finite` is redefined in terms of `finite_spanning_sets_in` * One of the ext lemmas is now conveniently formulated in terms of `finite_spanning_sets_in` * `finite_spanning_sets_in` is also used to remove a little bit of code duplication in `prod` (which occurred because `sigma_finite` was a `Prop`, and forgot the actual construction) * Define a predicate `is_countably_spanning` which states that a collection of sets has a countable spanning subset. This is useful for one particular lemma in `prod`. * Generalize some lemmas about products in the case that the σ-algebras are generated by a collection of sets. This can be used to reason about iterated products. * Prove `prod_assoc_prod`. * Cleanup in `measurable_space` and somewhat in `measure_space`. * Rename `measurable.sum_rec -> measurable.sum_elim` (and give a different but definitionally equal statement) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.prod_assoc_preimage Modified src/data/nat/pairing.lean + theorem set.Union_unpair_prod Modified src/data/set/lattice.lean + theorem set.Union_prod + theorem set.bUnion_prod + theorem set.prod_Union + theorem set.prod_bUnion + theorem set.prod_sUnion + theorem set.sUnion_prod Modified src/measure_theory/measurable_space.lean + def is_countably_spanning + theorem is_countably_spanning_is_measurable +/- theorem is_measurable.Inter +/- theorem is_measurable.Inter_Prop +/- theorem is_measurable.Union +/- theorem is_measurable.Union_Prop +/- theorem is_measurable.disjointed +/- theorem is_measurable.sInter +/- theorem is_measurable.sUnion +/- theorem is_measurable.subtype_image +/- theorem measurable.comp +/- theorem measurable.fst +/- theorem measurable.indicator +/- theorem measurable.piecewise +/- theorem measurable.snd +/- theorem measurable.subtype_coe +/- theorem measurable.subtype_mk + theorem measurable.sum_elim - theorem measurable.sum_rec +/- theorem measurable_const +/- theorem measurable_equiv.coe_eq + def measurable_equiv.prod_assoc +/- def measurable_equiv.prod_comm +/- def measurable_equiv.prod_congr +/- def measurable_equiv.set.prod +/- def measurable_equiv.set.range_inl +/- def measurable_equiv.set.range_inr +/- def measurable_equiv.set.singleton +/- def measurable_equiv.sum_congr +/- def measurable_equiv.symm - theorem measurable_equiv.symm_to_equiv +/- def measurable_equiv.trans - theorem measurable_equiv.trans_to_equiv +/- theorem measurable_find +/- theorem measurable_find_greatest' +/- theorem measurable_find_greatest +/- theorem measurable_from_nat +/- theorem measurable_from_top +/- theorem measurable_id +/- theorem measurable_of_measurable_on_compl_singleton +/- theorem measurable_one +/- theorem measurable_pi_apply +/- theorem measurable_pi_lambda +/- theorem measurable_space.comap_bot +/- theorem measurable_space.comap_supr +/- theorem measurable_space.dynkin_system.ext +/- theorem measurable_space.dynkin_system.generate_le +/- def measurable_space.dynkin_system.to_measurable_space +/- theorem measurable_space.ext + theorem measurable_space.generate_from_is_measurable +/- theorem measurable_space.generate_from_le +/- def measurable_space.gi_generate_from + theorem measurable_space.is_pi_system_is_measurable +/- theorem measurable_space.map_top +/- structure measurable_space +/- theorem measurable_subtype_coe +/- theorem measurable_to_encodable +/- theorem measurable_to_nat +/- theorem measurable_unit +/- theorem subsingleton.measurable Modified src/measure_theory/measure_space.lean +/- def completion - theorem measure_theory.exists_finite_spanning_sets - theorem measure_theory.finite_at_filter_of_finite + theorem measure_theory.is_countably_spanning_spanning_sets +/- theorem measure_theory.measure.ext_of_generate_from_of_Union +/- theorem measure_theory.measure.finite_at_bot +/- def measure_theory.measure.finite_at_filter + theorem measure_theory.measure.finite_at_filter_of_finite + structure measure_theory.measure.finite_spanning_sets_in + def measure_theory.measure.to_finite_spanning_sets_in + def measure_theory.sigma_finite +/- def null_measurable Modified src/measure_theory/prod.lean + theorem generate_from_eq_prod + theorem generate_from_prod_eq + theorem is_countably_spanning.prod + theorem is_pi_system.prod + def measure_theory.measure.finite_spanning_sets_in.prod + theorem measure_theory.measure.prod_assoc_prod + theorem measure_theory.measure.prod_eq_generate_from - theorem measure_theory.measure.prod_unique 2020-10-20 01:14:13 9755ae3 chore(scripts): update nolints.txt (#4704) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-19 22:45:26 accc50e chore(data/finsupp): `to_additive` on `on_finset_sum` (#4698) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.on_finset_prod - theorem finsupp.on_finset_sum 2020-10-19 22:45:23 706b484 chore(data/multiset): add a few lemmas (#4697) ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.count_cons + theorem multiset.map_nsmul + theorem multiset.sum_map_singleton 2020-10-19 22:45:21 b707e98 refactor(ring_theory/witt_vector): move lemmas to separate file (#4693) This new file has almost no module docstring. This is on purpose, it is a refactor PR. A follow-up PR will add a module docstring and more definitions. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/defs.lean + theorem witt_vector.constant_coeff_witt_add + theorem witt_vector.constant_coeff_witt_mul + theorem witt_vector.constant_coeff_witt_neg + theorem witt_vector.constant_coeff_witt_sub + def witt_vector.witt_add + theorem witt_vector.witt_add_vars + theorem witt_vector.witt_add_zero + def witt_vector.witt_mul + theorem witt_vector.witt_mul_vars + theorem witt_vector.witt_mul_zero + def witt_vector.witt_neg + theorem witt_vector.witt_neg_vars + theorem witt_vector.witt_neg_zero + def witt_vector.witt_one + theorem witt_vector.witt_one_pos_eq_zero + theorem witt_vector.witt_one_zero_eq_one + def witt_vector.witt_sub + theorem witt_vector.witt_sub_zero + def witt_vector.witt_zero + theorem witt_vector.witt_zero_eq_zero Modified src/ring_theory/witt_vector/structure_polynomial.lean + theorem witt_structure_int_vars + theorem witt_structure_rat_vars - theorem witt_vector.constant_coeff_witt_add - theorem witt_vector.constant_coeff_witt_mul - theorem witt_vector.constant_coeff_witt_neg - theorem witt_vector.constant_coeff_witt_sub - theorem witt_vector.witt_add_vars - theorem witt_vector.witt_add_zero - theorem witt_vector.witt_mul_vars - theorem witt_vector.witt_mul_zero - theorem witt_vector.witt_neg_vars - theorem witt_vector.witt_neg_zero - theorem witt_vector.witt_one_pos_eq_zero - theorem witt_vector.witt_one_zero_eq_one - theorem witt_vector.witt_structure_int_vars - theorem witt_vector.witt_structure_rat_vars - theorem witt_vector.witt_sub_zero - theorem witt_vector.witt_zero_eq_zero 2020-10-19 22:45:19 b300302 feat(algebra/free_algebra): Add a ring instance (#4692) This also adds a ring instance to `tensor_algebra`. The approach here does not work for `exterior_algebra` and `clifford_algebra`, and produces weird errors. Those will be easier to investigate when their foundations are in mathlib. ESTIMATED CHANGES Modified src/algebra/free_algebra.lean Modified src/linear_algebra/tensor_algebra.lean 2020-10-19 22:45:17 cc6594a doc(algebra/algebra/basic): Fixes some documentation about `R`-algebras (#4689) See the associated zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/The.20Type.20of.20R-algebras/near/213722713 ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean 2020-10-19 22:45:15 86d65f8 chore(topology/instances/ennreal): prove `nnreal.not_summable_iff_tendsto_nat_at_top` (#4670) * use `ℝ≥0` notation in `data/real/ennreal`; * add `ennreal.forall_ne_top`, `ennreal.exists_ne_top`, `ennreal.ne_top_equiv_nnreal`, `ennreal.cinfi_ne_top`, `ennreal.infi_ne_top`, `ennreal.csupr_ne_top`, `ennreal.sup_ne_top`, `ennreal.supr_ennreal`; * add `nnreal.injective_coe`, add `@[simp, norm_cast]` to `nnreal.tendsto_coe`, and add `nnreal.tendsto_coe_at_top`; move `nnreal.infi_real_pos_eq_infi_nnreal_pos` from `ennreal` to `nnreal`; * use `function.injective` instead of an unfolded definition in `filter.comap_map`; * add `ennreal.nhds_top'`, `ennreal.tendsto_nhds_top_iff_nnreal`, `ennreal.tendsto_nhds_top_iff_nat`; * upgrade `ennreal.tendsto_coe_nnreal_nhds_top` to an `iff`, rename to `ennreal.tendsto_coe_nhds_top`; * `nnreal.has_sum_iff_tendsto_nat` now takes `r` as an implicit argument; * add `nnreal.not_summable_iff_tendsto_nat_at_top` and `not_summable_iff_tendsto_nat_at_top_of_nonneg`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.cinfi_ne_top +/- theorem ennreal.coe_Inf +/- theorem ennreal.coe_Sup +/- theorem ennreal.coe_finset_prod +/- theorem ennreal.coe_finset_sum +/- theorem ennreal.coe_indicator +/- theorem ennreal.coe_inv_two +/- theorem ennreal.coe_le_iff +/- theorem ennreal.coe_max +/- theorem ennreal.coe_mem_upper_bounds +/- theorem ennreal.coe_min +/- theorem ennreal.coe_mono +/- theorem ennreal.coe_nat +/- theorem ennreal.coe_nnreal_eq +/- theorem ennreal.coe_one +/- theorem ennreal.coe_to_real +/- theorem ennreal.coe_two +/- theorem ennreal.coe_zero + theorem ennreal.csupr_ne_top + theorem ennreal.exists_ne_top +/- theorem ennreal.forall_ennreal + theorem ennreal.forall_ne_top + theorem ennreal.infi_ne_top +/- theorem ennreal.le_coe_iff +/- theorem ennreal.le_of_forall_epsilon_le +/- theorem ennreal.lt_iff_exists_add_pos_lt +/- theorem ennreal.lt_iff_exists_coe + def ennreal.ne_top_equiv_nnreal +/- def ennreal.of_nnreal_hom +/- theorem ennreal.some_eq_coe + theorem ennreal.supr_ennreal + theorem ennreal.supr_ne_top +/- def ennreal Modified src/data/real/nnreal.lean Modified src/order/filter/basic.lean +/- theorem filter.comap_map Modified src/topology/algebra/ordered.lean + theorem tendsto_nhds_bot_mono' + theorem tendsto_nhds_bot_mono + theorem tendsto_nhds_top_mono' + theorem tendsto_nhds_top_mono Modified src/topology/instances/ennreal.lean + theorem ennreal.nhds_top' +/- theorem ennreal.nhds_top + theorem ennreal.tendsto_coe_nhds_top - theorem ennreal.tendsto_coe_nnreal_nhds_top + theorem ennreal.tendsto_nhds_top_iff_nat + theorem ennreal.tendsto_nhds_top_iff_nnreal +/- theorem ennreal.tsum_coe_ne_top_iff_summable - theorem infi_real_pos_eq_infi_nnreal_pos +/- theorem nnreal.has_sum_iff_tendsto_nat + theorem nnreal.not_summable_iff_tendsto_nat_at_top + theorem not_summable_iff_tendsto_nat_at_top_of_nonneg Modified src/topology/instances/nnreal.lean + theorem nnreal.comap_coe_at_top + theorem nnreal.infi_real_pos_eq_infi_nnreal_pos + theorem nnreal.map_coe_at_top + theorem nnreal.tendsto_coe' +/- theorem nnreal.tendsto_coe + theorem nnreal.tendsto_coe_at_top 2020-10-19 22:45:12 3019581 feat({field,ring}_theory/adjoin): generalize `induction_on_adjoin` (#4647) We can prove `induction_on_adjoin` for both `algebra.adjoin` and `intermediate_field.adjoin` in a very similar way, if we add a couple of small lemmas. The extra lemmas I introduced for `algebra.adjoin` shorten the proof of `intermediate_field.adjoin` noticeably. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean + theorem intermediate_field.adjoin_empty + theorem intermediate_field.adjoin_eq_algebra_adjoin + theorem intermediate_field.adjoin_insert_adjoin - theorem intermediate_field.adjoin_le_algebra_adjoin + theorem intermediate_field.eq_adjoin_of_eq_algebra_adjoin + def intermediate_field.fg + theorem intermediate_field.fg_adjoin_finset + theorem intermediate_field.fg_bot + theorem intermediate_field.fg_def + theorem intermediate_field.fg_of_fg_to_subalgebra + theorem intermediate_field.fg_of_noetherian Modified src/field_theory/intermediate_field.lean + theorem intermediate_field.to_subalgebra_le_to_subalgebra + theorem intermediate_field.to_subalgebra_lt_to_subalgebra Modified src/ring_theory/adjoin.lean + theorem algebra.adjoin_insert_adjoin + theorem subalgebra.fg_of_fg_to_submodule + theorem subalgebra.fg_of_noetherian + theorem subalgebra.induction_on_adjoin 2020-10-19 22:45:10 006b2e7 feat(data/polynomial/reverse): define `reverse f`, prove that `reverse` is a multiplicative monoid homomorphism (#4598) ESTIMATED CHANGES Added src/data/polynomial/reverse.lean + theorem polynomial.coeff_reflect + theorem polynomial.reflect_C_mul + theorem polynomial.reflect_C_mul_X_pow + theorem polynomial.reflect_add + theorem polynomial.reflect_eq_zero_iff + theorem polynomial.reflect_monomial + theorem polynomial.reflect_mul + theorem polynomial.reflect_mul_induction + theorem polynomial.reflect_support + theorem polynomial.reflect_zero + def polynomial.rev_at + theorem polynomial.rev_at_add + def polynomial.rev_at_fun + theorem polynomial.rev_at_fun_eq + theorem polynomial.rev_at_fun_inj + theorem polynomial.rev_at_fun_invol + theorem polynomial.rev_at_invol + theorem polynomial.rev_at_le + theorem polynomial.reverse_mul + theorem polynomial.reverse_mul_of_domain + theorem polynomial.reverse_zero 2020-10-19 22:45:07 0c70cf3 feat(tactic/unify_equations): add unify_equations tactic (#4515) `unify_equations` is a first-order unification tactic for propositional equalities. It implements the algorithm that `cases` uses to simplify indices of inductive types, with one extension: `unify_equations` can derive a contradiction from 'cyclic' equations like `n = n + 1`. `unify_equations` is unlikely to be particularly useful on its own, but I'll use it as part of my new `induction` tactic. ESTIMATED CHANGES Modified docs/references.bib Modified src/tactic/basic.lean Modified src/tactic/core.lean Added src/tactic/unify_equations.lean + theorem tactic.unify_equations.add_add_one_ne Added test/unify_equations.lean + inductive rose 2020-10-19 22:45:05 a249c9a feat(archive/imo): formalize IMO 1998 problem 2 (#4502) ESTIMATED CHANGES Added archive/imo/imo1998_q2.lean + def A + theorem A_card_lower_bound + theorem A_card_upper_bound + theorem A_fibre_over_contestant + theorem A_fibre_over_contestant_card + theorem A_fibre_over_judge_pair + theorem A_fibre_over_judge_pair_card + theorem A_maps_to_off_diag_judge_pair + theorem add_sq_add_sq_sub + def agreed_contestants + def agreed_triple.contestant + def agreed_triple.judge_pair + def agreed_triple + theorem clear_denominators + theorem distinct_judge_pairs_card_lower_bound + theorem imo1998_q2 + def judge_pair.agree + theorem judge_pair.agree_iff_same_rating + def judge_pair.distinct + def judge_pair.judge₁ + def judge_pair.judge₂ + def judge_pair + theorem judge_pairs_card_lower_bound + theorem norm_bound_of_odd_sum Modified src/data/finset/basic.lean + def finset.diag + theorem finset.diag_card + theorem finset.filter_card_add_filter_neg_card_eq_card + theorem finset.filter_product + theorem finset.filter_product_card + theorem finset.mem_diag + theorem finset.mem_off_diag + def finset.off_diag + theorem finset.off_diag_card Modified src/data/int/parity.lean + theorem int.ne_of_odd_sum Modified src/data/nat/parity.lean + theorem nat.odd_gt_zero 2020-10-19 22:45:03 5065471 feat(data/monoid_algebra): add missing has_coe_to_fun (#4315) Also does the same for the additive version `semimodule k (add_monoid_algebra k G)`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean 2020-10-19 20:01:36 0523b61 chore(logic/function): `simp`lify applications of `(un)curry` (#4696) ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.curry_apply + theorem function.uncurry_apply_pair 2020-10-19 15:37:07-04:00 a1f1770 Revert "chore(data/multiset): add a few lemmas" This reverts commit 45caa4f392fe4f7622fef576cf3811b9ff6fd307. ESTIMATED CHANGES Modified src/data/multiset/basic.lean - theorem multiset.count_cons - theorem multiset.map_nsmul - theorem multiset.sum_map_singleton 2020-10-19 15:30:42-04:00 45caa4f chore(data/multiset): add a few lemmas ESTIMATED CHANGES Modified src/data/multiset/basic.lean + theorem multiset.count_cons + theorem multiset.map_nsmul + theorem multiset.sum_map_singleton 2020-10-19 15:11:45 cacc297 fix(tactic/norm_num): remove unnecessary argument to rat.cast_zero (#4682) See [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60norm_num.60.20error.20message). ESTIMATED CHANGES Modified src/tactic/norm_num.lean +/- theorem norm_num.adc_bit0_bit1 +/- theorem norm_num.adc_bit1_bit0 +/- theorem norm_num.adc_bit1_bit1 +/- theorem norm_num.int_div +/- theorem norm_num.int_mod +/- theorem norm_num.le_bit0_bit0 +/- theorem norm_num.le_bit1_bit1 +/- theorem norm_num.lt_bit0_bit0 +/- theorem norm_num.lt_bit1_bit1 +/- theorem norm_num.rat_cast_bit0 +/- theorem norm_num.rat_cast_bit1 +/- theorem norm_num.sle_bit0_bit0 +/- theorem norm_num.sle_bit0_bit1 +/- theorem norm_num.sle_bit1_bit0 +/- theorem norm_num.sle_bit1_bit1 +/- theorem norm_num.sle_one_bit0 +/- theorem norm_num.sle_one_bit1 Modified test/norm_num.lean 2020-10-19 11:39:07 0f1bc68 feat(ring_theory/witt_vector/structure_polynomial): examples and basic properties (#4467) This is the 4th and final PR in a series on a fundamental theorem about Witt polynomials. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.eval₂_hom_zero' + theorem mv_polynomial.eval₂_hom_zero Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.mem_vars_bind₁ + theorem mv_polynomial.mem_vars_rename Modified src/ring_theory/witt_vector/structure_polynomial.lean + theorem constant_coeff_witt_structure_int + theorem constant_coeff_witt_structure_int_zero + theorem constant_coeff_witt_structure_rat + theorem constant_coeff_witt_structure_rat_zero + theorem witt_vector.constant_coeff_witt_add + theorem witt_vector.constant_coeff_witt_mul + theorem witt_vector.constant_coeff_witt_neg + theorem witt_vector.constant_coeff_witt_sub + theorem witt_vector.witt_add_vars + theorem witt_vector.witt_add_zero + theorem witt_vector.witt_mul_vars + theorem witt_vector.witt_mul_zero + theorem witt_vector.witt_neg_vars + theorem witt_vector.witt_neg_zero + theorem witt_vector.witt_one_pos_eq_zero + theorem witt_vector.witt_one_zero_eq_one + theorem witt_vector.witt_structure_int_vars + theorem witt_vector.witt_structure_rat_vars + theorem witt_vector.witt_sub_zero + theorem witt_vector.witt_zero_eq_zero 2020-10-19 11:39:05 4140f78 feat(algebra/ordered_semiring): relax 0 < 1 to 0 ≤ 1 (#4363) Per [discussion](https://github.com/leanprover-community/mathlib/pull/4296#issuecomment-701953077) in #4296. ESTIMATED CHANGES Modified archive/imo/imo1972_b2.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean - theorem zero_lt_one' Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_ring.lean +/- theorem canonically_ordered_semiring.zero_lt_one +/- theorem le_of_mul_le_of_one_le +/- def nonneg_ring.to_linear_nonneg_ring - def nonneg_ring.to_ordered_ring + theorem zero_le_two + theorem zero_lt_one' +/- theorem zero_lt_one Modified src/algebra/punit_instances.lean Modified src/analysis/normed_space/basic.lean +/- theorem real.norm_two Modified src/analysis/normed_space/mazur_ulam.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/data/complex/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/int/basic.lean Modified src/data/nat/basic.lean Modified src/data/num/lemmas.lean Modified src/data/polynomial/div.lean Modified src/data/rat/order.lean Modified src/data/real/basic.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.one_lt_two Modified src/data/real/nnreal.lean Modified src/data/zsqrtd/basic.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/order/filter/filter_product.lean + theorem filter.germ.le_def Modified src/ring_theory/subsemiring.lean Modified src/tactic/linarith/verification.lean Modified src/tactic/norm_num.lean Modified src/tactic/omega/coeffs.lean Modified src/topology/algebra/floor_ring.lean Modified src/topology/metric_space/basic.lean Modified src/topology/path_connected.lean 2020-10-19 10:38:52 ef9d00f feat(linear_algebra/matrix): multiplying `is_basis.to_matrix` and `linear_map.to_matrix` (#4650) This basically tells us that `is_basis.to_matrix` is indeed a basis change matrix. ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean + theorem is_basis.sum_to_matrix_smul_self + theorem is_basis.to_lin_to_matrix +/- def is_basis.to_matrix + theorem is_basis.to_matrix_eq_to_matrix_constr +/- theorem is_basis.to_matrix_self +/- theorem is_basis.to_matrix_update + theorem is_basis_to_matrix_mul_linear_map_to_matrix + theorem linear_map_to_matrix_mul_is_basis_to_matrix + theorem matrix.to_lin_self 2020-10-19 10:38:50 47dcecd feat(data/complex/exponential): bounds on exp (#4432) Define `real.exp_bound` using `complex.exp_bound`. Deduce numerical bounds on `exp 1` analogous to those we have for pi. ESTIMATED CHANGES Modified src/data/complex/exponential.lean + theorem real.exp_1_approx_succ_eq + theorem real.exp_approx_end' + theorem real.exp_approx_end + theorem real.exp_approx_start + theorem real.exp_approx_succ + theorem real.exp_bound + def real.exp_near + theorem real.exp_near_sub + theorem real.exp_near_succ + theorem real.exp_near_zero Added src/data/complex/exponential_bounds.lean + theorem real.exp_neg_one_gt_0367879441 + theorem real.exp_neg_one_lt_0367879442 + theorem real.exp_one_gt_271828182 + theorem real.exp_one_lt_271828183 + theorem real.exp_one_near_10 + theorem real.exp_one_near_20 2020-10-19 10:38:48 c38d128 feat(ring_theory/polynomial/chebyshev): chebyshev polynomials of the first kind (#4267) If T_n denotes the n-th Chebyshev polynomial of the first kind, then the polynomials 2*T_n(X/2) form a Lambda structure on Z[X]. I call these polynomials the lambdashev polynomials, because, as far as I am aware they don't have a name in the literature. We show that they commute, and that the p-th polynomial is congruent to X^p mod p. In other words: a Lambda structure. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem chebyshev₁_complex_cos + theorem cos_nat_mul Added src/ring_theory/polynomial/chebyshev/basic.lean + theorem polynomial.chebyshev₁_eq_lambdashev + theorem polynomial.chebyshev₁_mul + theorem polynomial.lambdashev_char_p + theorem polynomial.lambdashev_comp_comm + theorem polynomial.lambdashev_eq_chebyshev₁ + theorem polynomial.lambdashev_eval_add_inv + theorem polynomial.lambdashev_mul + theorem polynomial.lambdashev_zmod_p Added src/ring_theory/polynomial/chebyshev/default.lean Added src/ring_theory/polynomial/chebyshev/defs.lean + theorem polynomial.chebyshev₁_add_two + theorem polynomial.chebyshev₁_of_two_le + theorem polynomial.chebyshev₁_one + theorem polynomial.chebyshev₁_two + theorem polynomial.chebyshev₁_zero + theorem polynomial.lambdashev_add_two + theorem polynomial.lambdashev_eq_two_le + theorem polynomial.lambdashev_one + theorem polynomial.lambdashev_two + theorem polynomial.lambdashev_zero + theorem polynomial.map_chebyshev₁ + theorem polynomial.map_lambdashev 2020-10-19 07:13:04 f75dbd3 feat(algebra/*): some simp lemmas, and changing binders (#4681) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean Modified src/algebra/invertible.lean + theorem inv_of_mul_self_assoc + theorem mul_inv_of_self_assoc Modified src/group_theory/group_action.lean 2020-10-19 07:13:01 41c227a feat(algebra/infinite_sum): make tsum irreducible (#4679) See https://leanprover.zulipchat.com/#narrow/stream/239415-metaprogramming-.2F.20tactics/topic/congr'.20is.20slow ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean +/- def tsum 2020-10-19 07:12:58 7601a7a feat(ring_theory/adjoin): adjoin_singleton_one (#4633) ESTIMATED CHANGES Modified src/ring_theory/adjoin.lean + theorem algebra.adjoin_singleton_one 2020-10-19 04:45:06 4b890a2 feat(*): make int.nonneg irreducible (#4601) In #4474, `int.lt` was made irreducible. We make `int.nonneg` irreducible, which is stronger as `int.lt` is expressed in terms of `int.nonneg`. ESTIMATED CHANGES Modified src/algebra/field_power.lean Modified src/data/int/basic.lean Modified src/data/int/range.lean Modified src/data/int/sqrt.lean +/- theorem int.sqrt_nonneg Modified src/data/nat/modeq.lean Modified src/data/rat/sqrt.lean Modified src/data/zmod/basic.lean Modified src/data/zsqrtd/gaussian_int.lean +/- theorem gaussian_int.norm_nonneg Modified src/number_theory/lucas_lehmer.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/nat/dnf.lean Modified test/monotonicity.lean Modified test/tactics.lean 2020-10-19 01:25:23 d174295 chore(scripts): update nolints.txt (#4680) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-19 01:25:21 9d1bbd1 fix(data/equiv): nolint typo (#4677) ESTIMATED CHANGES Modified src/data/equiv/basic.lean 2020-10-19 01:25:19 49bb5dd refactor(tactic/norm_num): define prove_ne_zero using prove_ne (#4626) This is trickier than it sounds because of a cyclic dependency. As a result we now have two versions of `prove_ne_zero` and `prove_clear_denom` is generic over them. One version proves ne using an order relation on the target, while the other uses `uncast` lemmas to reduce to `rat` and then uses the first `prove_ne_zero`. (This is why we actually want two versions - we can't solve this with a large mutual def, because it would result in an infinite recursion.) ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/ring.lean 2020-10-18 23:06:55 1ac5d82 fix(logic/nontrivial): change tactic doc entry tag to more common "type class" (#4676) ESTIMATED CHANGES Modified src/logic/nontrivial.lean 2020-10-18 21:34:51 61e1111 chore(linear_algebra/affine_space): introduce notation for `affine_map` (#4675) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean +/- theorem concave_on.comp_affine_map +/- theorem convex.affine_image +/- theorem convex.affine_preimage +/- theorem convex.combo_affine_apply +/- theorem convex_on.comp_affine_map Modified src/analysis/convex/extrema.lean Modified src/analysis/normed_space/mazur_ulam.lean +/- def isometric.to_affine_map Modified src/geometry/euclidean/basic.lean +/- def euclidean_geometry.orthogonal_projection Modified src/linear_algebra/affine_space/basic.lean +/- theorem affine_map.add_linear +/- theorem affine_map.apply_line_map +/- theorem affine_map.coe_add +/- theorem affine_map.coe_comp +/- theorem affine_map.coe_fst +/- theorem affine_map.coe_mul +/- theorem affine_map.coe_one +/- theorem affine_map.coe_smul +/- theorem affine_map.coe_snd +/- theorem affine_map.coe_zero +/- def affine_map.comp +/- theorem affine_map.comp_apply +/- theorem affine_map.comp_assoc +/- theorem affine_map.comp_id +/- theorem affine_map.comp_line_map +/- def affine_map.const +/- theorem affine_map.decomp' +/- theorem affine_map.decomp +/- theorem affine_map.ext +/- theorem affine_map.ext_iff +/- def affine_map.fst +/- theorem affine_map.fst_linear +/- def affine_map.homothety +/- def affine_map.homothety_affine +/- def affine_map.homothety_hom +/- def affine_map.id +/- theorem affine_map.id_comp +/- theorem affine_map.image_interval +/- def affine_map.line_map +/- theorem affine_map.linear_map_vsub +/- theorem affine_map.map_vadd +/- def affine_map.snd +/- theorem affine_map.snd_linear +/- theorem affine_map.to_fun_eq_coe +/- theorem affine_map.vadd_apply +/- theorem affine_map.vsub_apply +/- theorem affine_map.zero_linear +/- def linear_map.to_affine_map Modified src/linear_algebra/affine_space/combination.lean +/- def affine_map.weighted_vsub_of_point +/- def finset.affine_combination Modified src/topology/algebra/affine.lean +/- theorem affine_map.continuous_iff 2020-10-18 21:34:49 4faf2e2 chore(order/filter): use implicit arguments in `tendsto_at_top` etc (#4672) Also weaken some assumptions from a decidable linear order to a linear order. ESTIMATED CHANGES Modified src/data/real/hyperreal.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.tendsto_at_bot' +/- theorem filter.tendsto_at_bot +/- theorem filter.tendsto_at_bot_at_bot +/- theorem filter.tendsto_at_bot_at_top +/- theorem filter.tendsto_at_top' +/- theorem filter.tendsto_at_top +/- theorem filter.tendsto_at_top_at_bot +/- theorem filter.tendsto_at_top_at_top + theorem filter.tendsto_at_top_mul_at_top Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.tendsto_at_top Modified src/topology/sequences.lean Modified src/topology/uniform_space/cauchy.lean 2020-10-18 21:34:47 392d52c chore(order/filter): run `dsimp only [set.mem_set_of_eq]` in `filter_upwards` (#4671) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/special_functions/exp_log.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/prod.lean Modified src/order/filter/basic.lean 2020-10-18 19:21:09 93b7e63 feat(analysis/special_functions/trigonometric): range_{exp,cos,sin} (#4595) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean Modified src/algebra/quadratic_discriminant.lean Modified src/analysis/special_functions/exp_log.lean + theorem real.log_surjective + theorem real.range_exp + theorem real.range_log Modified src/analysis/special_functions/trigonometric.lean + theorem complex.cos_surjective + theorem complex.exists_eq_mul_self + theorem complex.exists_pow_nat_eq + theorem complex.range_cos + theorem complex.range_exp + theorem complex.range_sin + theorem complex.sin_surjective + theorem real.range_cos_infinite + theorem real.range_sin_infinite Modified src/data/set/finite.lean + theorem set.infinite_of_infinite_image 2020-10-18 16:02:22 fee2dfa chore(analysis/calculus/fderiv): golf a lemma using new `nontriviality` (#4584) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/linear_algebra/linear_independent.lean Modified src/topology/algebra/module.lean 2020-10-18 09:59:52 e21dc7a feat(topology/subset_properties): define `filter.cocompact` (#4666) The filter of complements to compact subsets. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem continuous.norm + theorem tendsto_norm_cocompact_at_top Modified src/data/set/basic.lean + theorem set.nonempty_insert Modified src/topology/algebra/ordered.lean + theorem continuous.exists_forall_ge + theorem continuous.exists_forall_le Modified src/topology/metric_space/basic.lean + theorem tendsto_dist_left_cocompact_at_top + theorem tendsto_dist_right_cocompact_at_top Modified src/topology/separation.lean Modified src/topology/subset_properties.lean + def filter.cocompact + theorem filter.has_basis_cocompact + theorem filter.mem_cocompact' + theorem filter.mem_cocompact + theorem is_compact.compl_mem_cocompact + theorem is_compact.insert 2020-10-18 05:51:33 cc32876 chore(analysis/normed_space/basic): add `continuous_at.inv'`, `continuous.div` etc (#4667) Also add `continuous_on_(cos/sin)`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem continuous.div + theorem continuous.inv' + theorem continuous_at.inv' + theorem continuous_on.div + theorem continuous_on.inv' + theorem continuous_within_at.div + theorem continuous_within_at.inv' Modified src/analysis/special_functions/trigonometric.lean + theorem complex.continuous_on_cos + theorem complex.continuous_on_sin + theorem real.continuous_on_cos 2020-10-18 04:29:30 db06b67 feat(measure_theory/prod): product measures and Fubini's theorem (#4590) * Define the product measure of two σ-finite measures. * Prove Tonelli's theorem. * Prove Fubini's theorem. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/references.bib Modified docs/undergrad.yaml Modified src/data/indicator_function.lean + theorem set.indicator_mul_left + theorem set.indicator_mul_right Modified src/measure_theory/measure_space.lean Added src/measure_theory/prod.lean + theorem generate_from_prod + theorem is_measurable_integrable + theorem is_pi_system_prod + theorem measurable.integral_prod_left' + theorem measurable.integral_prod_left + theorem measurable.integral_prod_right' + theorem measurable.integral_prod_right + theorem measurable.lintegral_prod_left' + theorem measurable.lintegral_prod_left + theorem measurable.lintegral_prod_right' + theorem measurable.lintegral_prod_right + theorem measurable.map_prod_mk_left + theorem measurable.map_prod_mk_right + theorem measurable_measure_prod_mk_left + theorem measurable_measure_prod_mk_left_finite + theorem measurable_measure_prod_mk_right + theorem measure_theory.continuous_integral_integral + theorem measure_theory.has_finite_integral_prod_iff + theorem measure_theory.integrable.integral_norm_prod_left + theorem measure_theory.integrable.integral_norm_prod_right + theorem measure_theory.integrable.integral_prod_left + theorem measure_theory.integrable.integral_prod_right + theorem measure_theory.integrable.prod_left_ae + theorem measure_theory.integrable.prod_right_ae + theorem measure_theory.integrable.swap + theorem measure_theory.integrable_prod_iff' + theorem measure_theory.integrable_prod_iff + theorem measure_theory.integrable_swap_iff + theorem measure_theory.integral_fn_integral_add + theorem measure_theory.integral_fn_integral_sub + theorem measure_theory.integral_integral + theorem measure_theory.integral_integral_add' + theorem measure_theory.integral_integral_add + theorem measure_theory.integral_integral_sub' + theorem measure_theory.integral_integral_sub + theorem measure_theory.integral_integral_swap + theorem measure_theory.integral_integral_symm + theorem measure_theory.integral_prod + theorem measure_theory.integral_prod_swap + theorem measure_theory.integral_prod_symm + theorem measure_theory.lintegral_fn_integral_sub + theorem measure_theory.lintegral_lintegral + theorem measure_theory.lintegral_lintegral_swap + theorem measure_theory.lintegral_lintegral_symm + theorem measure_theory.lintegral_prod + theorem measure_theory.lintegral_prod_swap + theorem measure_theory.lintegral_prod_symm + theorem measure_theory.measure.add_prod + theorem measure_theory.measure.ae_ae_of_ae_prod + theorem measure_theory.measure.ae_measure_lt_top + theorem measure_theory.measure.dirac_prod + theorem measure_theory.measure.dirac_prod_dirac + theorem measure_theory.measure.integrable_measure_prod_mk_left + theorem measure_theory.measure.measure_ae_null_of_prod_null + theorem measure_theory.measure.measure_prod_null + theorem measure_theory.measure.prod_add + theorem measure_theory.measure.prod_apply + theorem measure_theory.measure.prod_apply_symm + theorem measure_theory.measure.prod_dirac + theorem measure_theory.measure.prod_eq + theorem measure_theory.measure.prod_prod + theorem measure_theory.measure.prod_restrict + theorem measure_theory.measure.prod_sum + theorem measure_theory.measure.prod_swap + theorem measure_theory.measure.prod_unique + theorem measure_theory.measure.sum_prod 2020-10-18 01:46:58 c7782bb chore(scripts): update nolints.txt (#4665) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-18 01:46:56 77dc679 chore(data/set/intervals): more lemmas (#4662) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_bot + theorem set.Icc_top +/- theorem set.Ici_bot +/- theorem set.Ici_top + theorem set.Ico_bot + theorem set.Ico_subset_Ici_self + theorem set.Ico_union_right + theorem set.Iic_bot + theorem set.Iic_top + theorem set.Ioc_subset_Iic_self + theorem set.Ioc_top + theorem set.Ioc_union_left + theorem set.Ioo_union_left + theorem set.Ioo_union_right 2020-10-18 01:46:53 9585210 chore(order/filter): add a few lemmas (#4661) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.at_top_basis_Ioi + theorem filter.eventually_gt_at_top + theorem filter.eventually_lt_at_bot Modified src/order/filter/bases.lean + theorem filter.has_basis.frequently_iff Modified src/order/filter/basic.lean +/- theorem filter.eventually_sup + theorem filter.tendsto_top 2020-10-18 01:46:51 f990838 chore(data/finsupp/basic): rename type variables (#4624) Use `M`, `N`, `P` for types with `has_zero`, `add_monoid`, or `add_comm_monoid` structure, and `R`, `S` for types with at least a `semiring` instance. API change: `single_add_erase` and `erase_add_single` now use explicit arguments. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean +/- theorem finsupp.add_apply +/- theorem finsupp.add_eq_zero_iff +/- theorem finsupp.add_hom_ext +/- def finsupp.antidiagonal +/- theorem finsupp.antidiagonal_zero +/- theorem finsupp.card_support_eq_one' +/- theorem finsupp.card_support_eq_one +/- theorem finsupp.card_support_eq_zero +/- theorem finsupp.coe_leval' +/- theorem finsupp.coe_leval +/- def finsupp.comap_domain +/- theorem finsupp.comap_domain_apply +/- def finsupp.comap_has_scalar +/- def finsupp.comap_mul_action +/- theorem finsupp.comap_smul_apply +/- theorem finsupp.comap_smul_single +/- def finsupp.emb_domain +/- theorem finsupp.emb_domain_apply +/- theorem finsupp.emb_domain_eq_map_domain +/- theorem finsupp.emb_domain_eq_zero +/- theorem finsupp.emb_domain_inj +/- theorem finsupp.emb_domain_injective +/- theorem finsupp.emb_domain_notin_range +/- theorem finsupp.emb_domain_zero +/- theorem finsupp.eq_single_iff +/- theorem finsupp.eq_zero_of_comap_domain_eq_zero +/- def finsupp.equiv_fun_on_fintype +/- def finsupp.erase +/- theorem finsupp.erase_add +/- theorem finsupp.erase_add_single +/- theorem finsupp.erase_ne +/- theorem finsupp.erase_same +/- theorem finsupp.erase_single +/- theorem finsupp.erase_single_ne +/- theorem finsupp.erase_zero +/- def finsupp.eval_add_hom +/- theorem finsupp.eval_add_hom_apply +/- theorem finsupp.ext +/- theorem finsupp.ext_iff +/- def finsupp.filter +/- theorem finsupp.filter_add +/- theorem finsupp.filter_curry +/- theorem finsupp.filter_pos_add_filter_neg +/- theorem finsupp.filter_smul +/- theorem finsupp.filter_sum +/- theorem finsupp.filter_zero +/- theorem finsupp.finite_le_nat +/- theorem finsupp.finite_lt_nat +/- theorem finsupp.finite_supp +/- def finsupp.finsupp_prod_equiv +/- def finsupp.frange +/- theorem finsupp.frange_single +/- theorem finsupp.induction₂ +/- theorem finsupp.le_iff +/- def finsupp.leval' +/- def finsupp.leval +/- theorem finsupp.lhom_ext' +/- theorem finsupp.lhom_ext +/- def finsupp.lift_add_hom +/- theorem finsupp.lift_add_hom_apply +/- theorem finsupp.lift_add_hom_single_add_hom +/- theorem finsupp.lift_add_hom_symm_apply +/- theorem finsupp.lift_add_hom_symm_apply_apply +/- theorem finsupp.lt_wf +/- def finsupp.map_domain +/- theorem finsupp.map_domain_add +/- theorem finsupp.map_domain_apply +/- theorem finsupp.map_domain_comap_domain +/- theorem finsupp.map_domain_comp +/- theorem finsupp.map_domain_congr +/- theorem finsupp.map_domain_finset_sum +/- theorem finsupp.map_domain_injective +/- theorem finsupp.map_domain_notin_range +/- theorem finsupp.map_domain_single +/- theorem finsupp.map_domain_smul +/- theorem finsupp.map_domain_sum +/- theorem finsupp.map_domain_support +/- theorem finsupp.map_domain_zero +/- def finsupp.map_range.add_monoid_hom +/- def finsupp.map_range +/- theorem finsupp.map_range_add +/- theorem finsupp.map_range_apply +/- theorem finsupp.map_range_finset_sum +/- theorem finsupp.map_range_multiset_sum +/- theorem finsupp.map_range_single +/- theorem finsupp.map_range_zero +/- theorem finsupp.mem_antidiagonal_support +/- theorem finsupp.mem_frange +/- theorem finsupp.mem_support_finset_sum +/- theorem finsupp.mem_support_iff +/- theorem finsupp.mem_support_multiset_sum +/- theorem finsupp.mem_support_single +/- theorem finsupp.mul_sum +/- theorem finsupp.multiset_map_sum +/- theorem finsupp.multiset_sum_sum +/- theorem finsupp.neg_apply +/- theorem finsupp.not_mem_support_iff +/- def finsupp.on_finset +/- theorem finsupp.on_finset_apply +/- theorem finsupp.on_finset_sum +/- def finsupp.prod +/- theorem finsupp.prod_add_index +/- theorem finsupp.prod_comm +/- theorem finsupp.prod_emb_domain +/- theorem finsupp.prod_finset_sum_index +/- theorem finsupp.prod_fintype + theorem finsupp.prod_inv +/- theorem finsupp.prod_ite_eq' +/- theorem finsupp.prod_ite_eq +/- theorem finsupp.prod_map_domain_index +/- theorem finsupp.prod_map_domain_index_inj +/- theorem finsupp.prod_map_range_index + theorem finsupp.prod_mul +/- theorem finsupp.prod_neg_index +/- theorem finsupp.prod_of_support_subset +/- theorem finsupp.prod_pow +/- theorem finsupp.prod_single_index +/- theorem finsupp.prod_subtype_domain_index +/- theorem finsupp.prod_to_multiset +/- theorem finsupp.prod_zero_index +/- def finsupp.restrict_support_equiv +/- theorem finsupp.sigma_sum +/- def finsupp.single +/- theorem finsupp.single_add +/- theorem finsupp.single_add_erase +/- def finsupp.single_add_hom +/- theorem finsupp.single_apply +/- theorem finsupp.single_eq_of_ne +/- theorem finsupp.single_eq_same +/- theorem finsupp.single_eq_single_iff +/- theorem finsupp.single_finset_sum +/- theorem finsupp.single_injective +/- theorem finsupp.single_multiset_sum +/- theorem finsupp.single_sum +/- theorem finsupp.single_swap +/- theorem finsupp.single_zero +/- theorem finsupp.smul_apply' +/- theorem finsupp.smul_apply +/- theorem finsupp.smul_single' +/- theorem finsupp.smul_single +/- theorem finsupp.smul_single_one +/- def finsupp.split +/- def finsupp.split_comp +/- theorem finsupp.sub_apply +/- def finsupp.subtype_domain +/- theorem finsupp.subtype_domain_add +/- theorem finsupp.subtype_domain_apply +/- theorem finsupp.subtype_domain_eq_zero_iff' +/- theorem finsupp.subtype_domain_eq_zero_iff +/- theorem finsupp.subtype_domain_finsupp_sum +/- theorem finsupp.subtype_domain_neg +/- theorem finsupp.subtype_domain_sub +/- theorem finsupp.subtype_domain_sum +/- theorem finsupp.subtype_domain_zero +/- def finsupp.sum - theorem finsupp.sum_add +/- theorem finsupp.sum_apply +/- theorem finsupp.sum_comap_domain +/- theorem finsupp.sum_curry_index +/- theorem finsupp.sum_id_lt_of_lt +/- theorem finsupp.sum_mul - theorem finsupp.sum_neg +/- theorem finsupp.sum_single +/- theorem finsupp.sum_smul_index' +/- theorem finsupp.sum_smul_index +/- theorem finsupp.sum_sub +/- theorem finsupp.sum_zero +/- theorem finsupp.support_add +/- theorem finsupp.support_add_eq +/- theorem finsupp.support_curry +/- theorem finsupp.support_emb_domain +/- theorem finsupp.support_eq_empty +/- theorem finsupp.support_eq_singleton' +/- theorem finsupp.support_eq_singleton +/- theorem finsupp.support_erase +/- theorem finsupp.support_map_range +/- theorem finsupp.support_neg +/- theorem finsupp.support_on_finset_subset +/- theorem finsupp.support_smul +/- theorem finsupp.support_subset_iff +/- theorem finsupp.support_subtype_domain +/- theorem finsupp.support_sum +/- theorem finsupp.support_zero +/- theorem finsupp.support_zip_with +/- theorem finsupp.swap_mem_antidiagonal_support +/- theorem finsupp.to_multiset_strict_mono +/- theorem finsupp.to_multiset_to_finsupp +/- theorem finsupp.unique_ext +/- theorem finsupp.unique_ext_iff +/- theorem finsupp.unique_single +/- theorem finsupp.unique_single_eq_iff +/- theorem finsupp.zero_apply +/- theorem finsupp.zero_not_mem_frange +/- def finsupp.zip_with +/- structure finsupp +/- theorem monoid_hom.map_finsupp_prod +/- theorem mul_equiv.map_finsupp_prod +/- theorem ring_hom.map_finsupp_prod +/- theorem ring_hom.map_finsupp_sum Modified src/data/polynomial/degree/basic.lean Modified src/linear_algebra/finsupp.lean 2020-10-18 01:46:49 ebd2b7f feat(logic/nontrivial): make `nontriviality` work for more goals (#4574) The goal is to make `nontriviality` work for the following goals: * [x] `nontriviality α` if the goal is `is_open s`, `s : set α`; * [x] `nontriviality E` if the goal is `is_O f g` or `is_o f g`, where `f : α → E`; * [x] `nontriviality R` if the goal is `linear_independent R _`; * [ ] `nontriviality R` if the goal is `is_O f g` or `is_o f g`, where `f : α → E`, `[semimodule R E]`; in this case `nontriviality` should add a local instance `semimodule.subsingleton R`. The last case was never needed in `mathlib`, and there is a workaround: run `nontriviality E`, then deduce `nontrivial R` from `nontrivial E`. Misc feature: * [x] make `nontriviality` accept an optional list of additional `simp` lemmas. ESTIMATED CHANGES Modified src/algebra/group/units.lean +/- theorem is_unit_of_subsingleton Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O_of_subsingleton + theorem asymptotics.is_o_of_subsingleton Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_at_of_subsingleton + theorem times_cont_diff_of_subsingleton + theorem times_cont_diff_on_of_subsingleton + theorem times_cont_diff_within_at_of_subsingleton Modified src/analysis/normed_space/basic.lean + theorem norm_of_subsingleton Modified src/analysis/normed_space/units.lean Modified src/data/polynomial/degree/basic.lean + theorem polynomial.monic_of_subsingleton Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/linear_independent.lean Modified src/logic/nontrivial.lean Modified test/nontriviality.lean + def empty_or_univ + theorem subsingleton.set_empty_or_univ' + theorem subsingleton.set_empty_or_univ 2020-10-18 01:46:47 b977dba fix(solve_by_elim): handle multiple goals with different hypotheses (#4519) Previously `solve_by_elim*` would operate on multiple goals (only succeeding if it could close all of them, and performing backtracking across goals), however it would incorrectly only use the local context from the main goal. If other goals had different sets of hypotheses, ... various bad things could happen! This PR arranges so that `solve_by_elim*` inspects the local context later, so it picks up the correct hypotheses. ESTIMATED CHANGES Modified src/tactic/equiv_rw.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/suggest.lean Modified test/solve_by_elim.lean 2020-10-17 23:24:37 13cd192 feat(measure_theory/measure_space): added sub for measure_theory.measure (#4639) This definition is useful for proving the Lebesgue-Radon-Nikodym theorem for non-negative measures. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.le_of_add_le_add_left Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.le_of_add_le_add_left + theorem measure_theory.measure.le_zero_iff_eq' + theorem measure_theory.measure.sub_add_cancel_of_le + theorem measure_theory.measure.sub_apply + theorem measure_theory.measure.sub_def + theorem measure_theory.measure.sub_eq_zero_of_le Modified src/topology/instances/ennreal.lean + theorem ennreal.tsum_sub 2020-10-17 23:24:35 e83458c feat(algebra/group_power): Add mul/add variants of powers_hom and friends (#4636) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + def gmultiples_add_hom + theorem gmultiples_add_hom_apply + theorem gmultiples_add_hom_symm_apply + def gpowers_mul_hom + theorem gpowers_mul_hom_apply + theorem gpowers_mul_hom_symm_apply + def multiples_add_hom + theorem multiples_add_hom_apply + theorem multiples_add_hom_symm_apply + def powers_mul_hom + theorem powers_mul_hom_apply + theorem powers_mul_hom_symm_apply 2020-10-17 23:24:33 c83c28a feat(archive/imo): add IMO 2019 problem 4 (#4482) ESTIMATED CHANGES Added archive/imo/imo2019_q4.lean + theorem imo2019_q4 + theorem imo2019_q4_upper_bound Modified src/algebra/big_operators/default.lean Added src/algebra/big_operators/enat.lean + theorem finset.sum_nat_coe_enat Modified src/data/int/basic.lean + theorem int.exists_lt_and_lt_iff_not_dvd Modified src/data/nat/basic.lean + theorem nat.exists_lt_and_lt_iff_not_dvd Modified src/data/nat/bitwise.lean + theorem nat.bit_eq_zero Modified src/data/nat/enat.lean + def enat.coe_hom Modified src/data/nat/multiplicity.lean + theorem nat.multiplicity_two_factorial_lt + theorem nat.prime.multiplicity_factorial_mul + theorem nat.prime.multiplicity_factorial_mul_succ +/- theorem nat.prime.multiplicity_one Modified src/order/basic.lean + theorem monotone.ne_of_lt_of_lt_int + theorem monotone.ne_of_lt_of_lt_nat 2020-10-17 20:50:45 95d33ee refactor(algebra/quadratic_discriminant): drop linearity condition; cleanup (#4656) Renames: - `discriminant_le_zero` to `discrim_le_zero` - `discriminant_lt_zero` to `discrim_lt_zero` ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem exists_le_mul_self + theorem exists_lt_mul_self Modified src/algebra/quadratic_discriminant.lean +/- def discrim + theorem discrim_le_zero + theorem discrim_lt_zero - theorem discriminant_le_zero - theorem discriminant_lt_zero - theorem exist_quadratic_eq_zero - theorem exists_le_mul_self - theorem exists_lt_mul_self + theorem exists_quadratic_eq_zero +/- theorem quadratic_eq_zero_iff +/- theorem quadratic_eq_zero_iff_discrim_eq_square +/- theorem quadratic_eq_zero_iff_of_discrim_eq_zero +/- theorem quadratic_ne_zero_of_discrim_ne_square 2020-10-17 20:50:43 0367467 chore(group/type_tags): Add missing simp lemmas (#4651) ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean +/- def additive.of_mul + theorem additive.of_mul_symm_eq +/- def additive.to_mul + theorem additive.to_mul_symm_eq +/- def multiplicative.of_add + theorem multiplicative.of_add_symm_eq +/- def multiplicative.to_add + theorem multiplicative.to_add_symm_eq 2020-10-17 20:50:41 0b9afe1 chore(linear_algebra/affine_space): redefine `line_map`, add `to_affine_subspace` (#4643) * now `line_map` takes two points on the line, not a point and a direction, update/review lemmas; * add `submodule.to_affine_subspace`; * add `affine_map.fst` and `affine_map.snd`; * prove that an affine map `ℝ → ℝ` sends an unordered interval to an unordered interval. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/analysis/convex/extrema.lean Modified src/data/set/function.lean + theorem set.maps_to_inter + theorem set.maps_to_union Modified src/linear_algebra/affine_space/basic.lean - theorem affine_map.affine_apply_line_map - theorem affine_map.affine_comp_line_map + theorem affine_map.apply_line_map + theorem affine_map.coe_fst + theorem affine_map.coe_line_map + theorem affine_map.coe_snd + theorem affine_map.comp_line_map + def affine_map.fst + theorem affine_map.fst_linear + theorem affine_map.image_interval +/- def affine_map.line_map +/- theorem affine_map.line_map_apply + theorem affine_map.line_map_apply_one +/- theorem affine_map.line_map_apply_zero +/- theorem affine_map.line_map_linear + theorem affine_map.line_map_same + theorem affine_map.line_map_symm + theorem affine_map.line_map_vadd_apply - theorem affine_map.line_map_vadd_neg - theorem affine_map.line_map_zero + def affine_map.snd + theorem affine_map.snd_linear + def submodule.to_affine_subspace Modified src/order/basic.lean + theorem monotone.reflect_lt - theorem reflect_lt Modified src/topology/algebra/affine.lean 2020-10-17 18:26:05 589ebf5 chore(algebra/*): add a few `prod.*` instances (#4659) * `prod.left_cancel_semigroup`; * `prod_right_cancel_semigroup`; * `prod.ordered_cancel_comm_monoid`; * `ordered_comm_group`. ESTIMATED CHANGES Modified src/algebra/group/prod.lean Modified src/algebra/ordered_group.lean 2020-10-17 18:26:02 6e5b6cc feat(algebra/gcd_monoid, polynomial/field_division): generalizing `normalization_monoid` on polynomials (#4655) Defines a `normalization_monoid` instance on any `comm_group_with_zero`, including fields Defines a `normalization_monoid` instance on `polynomial R` when `R` has a `normalization_monoid` instance ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean + theorem comm_group_with_zero.coe_norm_unit Modified src/data/polynomial/field_division.lean +/- theorem polynomial.coe_norm_unit + theorem polynomial.coe_norm_unit_of_ne_zero + theorem polynomial.leading_coeff_normalize + theorem polynomial.normalize_monic Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/splitting_field.lean 2020-10-17 18:26:00 edddb3b feat(finsupp/basic): Add a variant of `prod_map_domain_index` for when f is injective (#4645) This puts much weaker restrictions on `h`, making this easier to apply in some situations ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.prod_emb_domain + theorem finsupp.prod_map_domain_index_inj 2020-10-17 18:25:58 85eb12d feat(algebra/algebra/basic): product of two algebras (#4632) ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem algebra.algebra_map_prod_apply 2020-10-17 18:25:57 82ff1e5 feat(algebra/algebra/subalgebra): subalgebra.subsingleton (#4631) ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean Modified src/order/bounded_lattice.lean + theorem subsingleton_of_top_le_bot 2020-10-17 18:25:55 688157f feat(ring_theory/polynomial/content): definition of content + proof that it is multiplicative (#4393) Defines `polynomial.content` to be the `gcd` of the coefficients of a polynomial Says a polynomial `is_primitive` if its content is 1 Proves that `(p * q).content = p.content * q.content ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem with_bot.add_lt_add_iff_left + theorem with_bot.add_lt_add_iff_right Modified src/data/polynomial/erase_lead.lean + theorem polynomial.erase_lead_nat_degree_lt_or_erase_lead_eq_zero Added src/ring_theory/polynomial/content.lean + theorem polynomial.C_content_dvd + def polynomial.content + theorem polynomial.content_C + theorem polynomial.content_C_mul + theorem polynomial.content_X + theorem polynomial.content_X_mul + theorem polynomial.content_X_pow + theorem polynomial.content_dvd_coeff + theorem polynomial.content_eq_gcd_leading_coeff_content_erase_lead + theorem polynomial.content_eq_gcd_range_of_lt + theorem polynomial.content_eq_gcd_range_succ + theorem polynomial.content_eq_zero_iff + theorem polynomial.content_monomial + theorem polynomial.content_mul + theorem polynomial.content_mul_aux + theorem polynomial.content_one + theorem polynomial.content_zero + theorem polynomial.dvd_content_iff_C_dvd + theorem polynomial.eq_C_mul_primitive + theorem polynomial.gcd_content_eq_of_dvd_sub + theorem polynomial.is_primitive.content_eq_one + theorem polynomial.is_primitive.ne_zero + def polynomial.is_primitive + theorem polynomial.is_primitive_iff_is_unit_of_C_dvd + theorem polynomial.is_primitive_one + theorem polynomial.normalize_content 2020-10-17 16:08:01 b145c36 feat(archive/imo): variant solution to IMO 1962 problem 4 (#4640) Continuation of a discussion at #4518 ESTIMATED CHANGES Modified archive/imo/imo1962_q4.lean + theorem formula + theorem imo1962_q4' + theorem solve_cos2x_0 Modified src/algebra/group_power/basic.lean + theorem pow_eq_zero_iff 2020-10-17 13:41:26 25d8343 feat(topology/sheaves): an equivalent sheaf condition (#4538) Another condition equivalent to the sheaf condition: for every open cover `U`, `F.obj (supr U)` is the limit point of the diagram consisting of all the `F.obj V`, where `V ≤ U i` for some `i`. This condition is particularly straightforward to state, and makes some proofs easier (however we don't do this here: just prove the equivalence with the "official" definition). It's particularly nice because there is no case splitting (depending on whether you're looking at single or double intersections) when checking the sheaf condition. This is the statement Lurie uses in Spectral Algebraic Geometry. Later I may propose that we make this the official definition, but I'll wait to see how it pans out in actual use, first. For now it's just provided as yet another equivalent version of the sheaf condition. ESTIMATED CHANGES Modified docs/references.bib Modified src/topology/sheaves/sheaf.lean Added src/topology/sheaves/sheaf_condition/opens_le_cover.lean + def Top.presheaf.sheaf_condition.opens_le_cover.hom_to_index + def Top.presheaf.sheaf_condition.opens_le_cover.index + def Top.presheaf.sheaf_condition.opens_le_cover + def Top.presheaf.sheaf_condition.opens_le_cover_cocone + def Top.presheaf.sheaf_condition.pairwise_cocone_iso + def Top.presheaf.sheaf_condition.pairwise_diagram_iso + def Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover + def Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map + def Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj + def Top.presheaf.sheaf_condition_equiv_sheaf_condition_opens_le_cover + def Top.presheaf.sheaf_condition_opens_le_cover + def Top.presheaf.sheaf_condition_opens_le_cover_equiv_sheaf_condition_pairwise_intersections 2020-10-17 01:11:20 ca2e6f4 chore(scripts): update nolints.txt (#4654) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-16 21:43:46 7b9acd9 chore(measure_theory/*): reflow long lines (#4642) Also do some minor golfing. ESTIMATED CHANGES Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_add_measure' +/- theorem measure_theory.l1.simple_func.coe_add +/- theorem measure_theory.l1.simple_func.coe_neg +/- theorem measure_theory.l1.simple_func.coe_neg_part +/- theorem measure_theory.l1.simple_func.coe_pos_part +/- theorem measure_theory.l1.simple_func.coe_sub +/- theorem measure_theory.l1.simple_func.coe_zero Modified src/measure_theory/content.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.supr_approx_apply Modified src/measure_theory/interval_integral.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/set_integral.lean 2020-10-16 19:41:32 189e538 feat(geometry/manifold): stab at diffeomorphisms (#4351) ESTIMATED CHANGES Added src/geometry/manifold/diffeomorph.lean + def diffeomorph + theorem times_diffeomorph.coe_eq_to_equiv + structure times_diffeomorph Modified src/topology/homeomorph.lean 2020-10-16 18:01:28 86b298f feat(category_theory/sites): grothendieck topologies (#4577) ESTIMATED CHANGES Added src/category_theory/sites/grothendieck.lean + theorem category_theory.grothendieck_topology.arrow_intersect + theorem category_theory.grothendieck_topology.arrow_max + theorem category_theory.grothendieck_topology.arrow_stable + theorem category_theory.grothendieck_topology.arrow_trans + def category_theory.grothendieck_topology.atomic + theorem category_theory.grothendieck_topology.bot_covering + theorem category_theory.grothendieck_topology.bot_covers + theorem category_theory.grothendieck_topology.covering_iff_covers_id + theorem category_theory.grothendieck_topology.covering_of_eq_top + def category_theory.grothendieck_topology.covers + theorem category_theory.grothendieck_topology.covers_iff + def category_theory.grothendieck_topology.dense + theorem category_theory.grothendieck_topology.dense_covering + def category_theory.grothendieck_topology.discrete + theorem category_theory.grothendieck_topology.discrete_eq_top + theorem category_theory.grothendieck_topology.intersection_covering + theorem category_theory.grothendieck_topology.intersection_covering_iff + theorem category_theory.grothendieck_topology.is_glb_Inf + theorem category_theory.grothendieck_topology.mem_sieves_iff_coe + theorem category_theory.grothendieck_topology.pullback_stable + def category_theory.grothendieck_topology.right_ore_condition + theorem category_theory.grothendieck_topology.right_ore_of_pullbacks + theorem category_theory.grothendieck_topology.superset_covering + theorem category_theory.grothendieck_topology.top_covering + theorem category_theory.grothendieck_topology.top_covers + theorem category_theory.grothendieck_topology.top_mem + theorem category_theory.grothendieck_topology.transitive + def category_theory.grothendieck_topology.trivial + theorem category_theory.grothendieck_topology.trivial_covering + theorem category_theory.grothendieck_topology.trivial_eq_bot + structure category_theory.grothendieck_topology Modified src/category_theory/sites/sieves.lean + theorem category_theory.sieve.pullback_eq_top_of_mem + theorem category_theory.sieve.pullback_id 2020-10-16 16:28:29 0d9227f feat(category_theory/monad/kleisli): add Kleisli category of a monad (#4542) Adds the Kleisli category of a monad, and shows the Kleisli category for a lawful control monad is equivalent to the Kleisli category of its category-theoretic version. Following discussion at https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/kleisli.20vs.20kleisli. I'd appreciate suggestions for names more sensible than the ones already there. ESTIMATED CHANGES Added src/category_theory/monad/kleisli.lean + def category_theory.kleisli.adjunction.adj + def category_theory.kleisli.adjunction.from_kleisli + def category_theory.kleisli.adjunction.to_kleisli + def category_theory.kleisli.adjunction.to_kleisli_comp_from_kleisli_iso_self + def category_theory.kleisli Modified src/category_theory/monad/types.lean + def category_theory.eq 2020-10-16 07:43:42 f675a00 chore(set_theory/zfc): split long lines (#4641) Also add `Set.subset_def` and rewrite `Set.mem_pair_sep` in tactic mode ESTIMATED CHANGES Modified src/set_theory/zfc.lean +/- theorem Class.sep_hom +/- theorem Set.image.mk +/- theorem Set.map_fval +/- theorem Set.map_is_func +/- theorem Set.map_unique +/- theorem Set.mem_image +/- theorem Set.mem_map +/- theorem Set.mem_pair_sep + theorem Set.subset_def +/- theorem pSet.definable.eq +/- def pSet.resp.eval_aux 2020-10-16 05:34:17 1cce606 feat(analysis/special_functions/trigonometric): some lemmas (#4638) The following changes: - `sin_sub_sin` and friends (sum-to-product lemmas) moved from `trigonometric` to the earlier file `exponential`. (I think the distinction between the files is that `trigonometric` collects the facts that require either differentiation or the definition `pi`, whereas purely algebraic facts about trigonometry go in `exponential`? For example the double-angle formula is in `exponential`). - rewrite proof of `cos_lt_cos_of_nonneg_of_le_pi_div_two` to avoid dependence on `cos_eq_one_iff_of_lt_of_lt` (but not sure if the result is actually simpler, feel free to propose this be reverted) - some new explicit values of trig functions, `cos (π / 3)` and similar - correct a series of lemmas in the `complex` namespace that were stated for real arguments (presumably the author copy-pasted but forgot to rewrite) - lemmas `sin_eq_zero_iff`, `cos_eq_cos_iff`, `sin_eq_sin_iff` ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean +/- theorem complex.cos_add_pi +/- theorem complex.cos_add_pi_div_two +/- theorem complex.cos_add_two_pi + theorem complex.cos_eq_cos_iff +/- theorem complex.cos_pi_div_two_sub +/- theorem complex.cos_pi_sub +/- theorem complex.cos_sub_pi_div_two +/- theorem complex.sin_add_pi +/- theorem complex.sin_add_pi_div_two +/- theorem complex.sin_add_two_pi + theorem complex.sin_eq_sin_iff + theorem complex.sin_eq_zero_iff + theorem complex.sin_ne_zero_iff +/- theorem complex.sin_pi_div_two_sub +/- theorem complex.sin_pi_sub +/- theorem complex.sin_sub_pi_div_two + theorem real.cos_eq_cos_iff + theorem real.cos_pi_div_six + theorem real.cos_pi_div_three - theorem real.cos_sub_cos + theorem real.sin_eq_sin_iff + theorem real.sin_pi_div_six + theorem real.sin_pi_div_three - theorem real.sin_sub_sin + theorem real.square_cos_pi_div_six + theorem real.square_sin_pi_div_three Modified src/data/complex/exponential.lean + theorem complex.cos_add_cos + theorem complex.cos_sub_cos + theorem complex.sin_sub_sin + theorem real.cos_add_cos + theorem real.cos_sub_cos + theorem real.sin_sub_sin 2020-10-16 05:34:15 e7b8421 chore(linear_algebra/finsupp): turn `finsupp.lsum` into `add_equiv` (#4597) ESTIMATED CHANGES Modified src/data/finsupp/basic.lean - theorem finsupp.hom_ext + theorem finsupp.lhom_ext' + theorem finsupp.lhom_ext + theorem finsupp.lift_add_hom_symm_apply_apply Modified src/linear_algebra/direct_sum/finsupp.lean +/- def finsupp_lequiv_direct_sum Modified src/linear_algebra/finsupp.lean +/- def finsupp.lsum + theorem finsupp.lsum_symm_apply 2020-10-16 03:25:42 8280190 chore(scripts): update nolints.txt (#4637) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-10-16 03:25:39 cc14658 chore(algebra/group_powers): Add missing lemmas (#4635) This part of the file defines four equivalences, but goes on to state lemmas about only one of them. This provides the lemmas for the other three. ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem add_monoid_hom.apply_int + theorem add_monoid_hom.apply_nat + theorem gmultiples_hom_apply + theorem gmultiples_hom_symm_apply + theorem gpowers_hom_apply + theorem gpowers_hom_symm_apply - theorem mnat_monoid_hom_eq - theorem mnat_monoid_hom_ext + theorem monoid_hom.apply_mint + theorem monoid_hom.apply_mnat + theorem monoid_hom.ext_mint + theorem monoid_hom.ext_mnat + theorem multiples_hom_apply + theorem multiples_hom_symm_apply 2020-10-16 00:56:13 dca1393 feat(data/equiv/basic): add `equiv.set.compl` (#4630) Given an equivalence between two sets `e₀ : s ≃ t`, the set of `e : α ≃ β` that agree with `e₀` on `s` is equivalent to `sᶜ ≃ tᶜ`. Also add a bunch of lemmas to `data/set/function`; some of them are used in the definition of `equiv.set.compl`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.set.sum_compl_symm_apply + theorem equiv.set.sum_compl_symm_apply_compl + theorem equiv.set.union_symm_apply_left + theorem equiv.set.union_symm_apply_right + def equiv.set_prod_equiv_sigma + theorem equiv.subtype_congr_apply + theorem equiv.subtype_congr_symm_apply Modified src/data/set/function.lean - theorem function.injective.inj_on + theorem set.bij_on.compl + theorem set.inj_on_of_injective + theorem set.inv_on.mono + theorem set.left_inv_on.maps_to + theorem set.left_inv_on.mono +/- theorem set.left_inv_on.surj_on + theorem set.maps_to.mem_iff + theorem set.maps_to.surj_on_compl + theorem set.maps_to_iff_exists_map_subtype +/- theorem set.maps_to_range + theorem set.right_inv_on.maps_to + theorem set.right_inv_on.mono + theorem set.surj_on.maps_to_compl + theorem set.surj_on_iff_exists_map_subtype + theorem set.surjective_maps_to_image_restrict 2020-10-16 00:56:11 b0b61e6 feat(order/category/omega-complete): omega-complete partial orders form a complete category (#4397) as discussed in #4348. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/equalizers.lean - theorem category_theory.limits.cofork.of_π_app_one - theorem category_theory.limits.cofork.of_π_app_zero - theorem category_theory.limits.fork.of_ι_app_one - theorem category_theory.limits.fork.of_ι_app_zero Modified src/category_theory/limits/shapes/products.lean +/- def category_theory.limits.cofan.mk - theorem category_theory.limits.cofan.mk_π_app +/- def category_theory.limits.fan.mk - theorem category_theory.limits.fan.mk_π_app Modified src/category_theory/limits/shapes/types.lean Modified src/order/category/omega_complete_partial_order.lean + def ωCPO.has_equalizers.equalizer + def ωCPO.has_equalizers.equalizer_ι + def ωCPO.has_equalizers.is_equalizer + def ωCPO.has_products.is_product + def ωCPO.has_products.product +/- def ωCPO Modified src/order/omega_complete_partial_order.lean + theorem omega_complete_partial_order.continuous_hom.congr_arg + theorem omega_complete_partial_order.continuous_hom.congr_fun + def omega_complete_partial_order.subtype Modified src/order/preorder_hom.lean + def preorder_hom.subtype.val 2020-10-15 23:48:19 3e12a7b chore(category_theory/limits/binary_products): fixup binary product lemmas (#4376) The main changes in here are: - `prod.map` is now a def, not an abbreviation. I think this is an important change because oftentimes `simp` will reduce it to `lim.map` and then get stuck, which is tough to debug and usually the wrong step to take. Instead, the `prod.map_fst` and `snd` lemmas are proved directly rather than with simp, and these are used to get everything else. - I added a couple of new simp lemmas and rewrote a few others: the overall guide here is that more things can be proved by `rw` or `simp` *without using ext*. The idea of this is that when you're dealing with a chain of compositions containing product morphisms, it's much nicer to be able to rewrite (or simp) the parts you want rather than needing to do an auxiliary `have` and use `ext` in there, then rewrite using this lemma inside your big chain. In this file at least I managed to get rid of a bunch of uses of `ext` (and also convert `tidy` to `simp`) so I'm pretty sure these changes were positive. - Moved around some definitions and lemmas. No big changes here, mostly just putting things which work similarly closer. - Weakened typeclass assumptions: in particular for `prod_comparison`. - Renamed some `prod_` lemmas to `prod.`, since there used to be a mix between the two; so I've made the usage consistent. + dual versions of all the above. ESTIMATED CHANGES Modified src/category_theory/abelian/non_preadditive.lean + theorem category_theory.non_preadditive_abelian.diag_σ +/- def category_theory.non_preadditive_abelian.is_colimit_σ +/- def category_theory.non_preadditive_abelian.r - def category_theory.non_preadditive_abelian.Δ - theorem category_theory.non_preadditive_abelian.Δ_map - theorem category_theory.non_preadditive_abelian.Δ_σ +/- def category_theory.non_preadditive_abelian.σ Modified src/category_theory/closed/cartesian.lean +/- def category_theory.coev + theorem category_theory.coev_naturality +/- def category_theory.ev + theorem category_theory.ev_naturality +/- def category_theory.exp.adjunction Modified src/category_theory/limits/connected.lean +/- def category_theory.prod_preserves_connected_limits.forget_cone +/- def category_theory.prod_preserves_connected_limits.γ₁ +/- def category_theory.prod_preserves_connected_limits.γ₂ Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.coprod.desc_comp - theorem category_theory.limits.coprod.desc_comp_comp + theorem category_theory.limits.coprod.desc_comp_inl_comp_inr + theorem category_theory.limits.coprod.desc_inl_inr + theorem category_theory.limits.coprod.diag_comp +/- theorem category_theory.limits.coprod.inl_map +/- theorem category_theory.limits.coprod.inr_map +/- def category_theory.limits.coprod.map +/- theorem category_theory.limits.coprod.map_codiag - theorem category_theory.limits.coprod.map_comp_codiag + theorem category_theory.limits.coprod.map_comp_id +/- theorem category_theory.limits.coprod.map_comp_inl_inr_codiag +/- theorem category_theory.limits.coprod.map_desc + theorem category_theory.limits.coprod.map_id_comp + theorem category_theory.limits.coprod.map_id_id +/- theorem category_theory.limits.coprod.map_inl_inr_codiag +/- def category_theory.limits.coprod.map_iso - theorem category_theory.limits.coprod.map_iso_hom - theorem category_theory.limits.coprod.map_iso_inv + theorem category_theory.limits.coprod.map_map + theorem category_theory.limits.coprod.map_swap - theorem category_theory.limits.coprod_desc_inl_inr - theorem category_theory.limits.coprod_map_comp_id - theorem category_theory.limits.coprod_map_id_comp - theorem category_theory.limits.coprod_map_id_id - theorem category_theory.limits.coprod_map_map +/- theorem category_theory.limits.inv_prod_comparison_map_fst +/- theorem category_theory.limits.inv_prod_comparison_map_snd + theorem category_theory.limits.prod.comp_diag + theorem category_theory.limits.prod.comp_lift +/- theorem category_theory.limits.prod.diag_map - theorem category_theory.limits.prod.diag_map_comp +/- theorem category_theory.limits.prod.diag_map_fst_snd + def category_theory.limits.prod.functor - theorem category_theory.limits.prod.lift_comp_comp + theorem category_theory.limits.prod.lift_fst_comp_snd_comp + theorem category_theory.limits.prod.lift_fst_snd +/- theorem category_theory.limits.prod.lift_map +/- def category_theory.limits.prod.map + theorem category_theory.limits.prod.map_comp_id +/- theorem category_theory.limits.prod.map_fst + theorem category_theory.limits.prod.map_id_comp + theorem category_theory.limits.prod.map_id_id +/- def category_theory.limits.prod.map_iso - theorem category_theory.limits.prod.map_iso_hom - theorem category_theory.limits.prod.map_iso_inv + theorem category_theory.limits.prod.map_map +/- theorem category_theory.limits.prod.map_snd + theorem category_theory.limits.prod.map_swap +/- def category_theory.limits.prod_comparison +/- theorem category_theory.limits.prod_comparison_inv_natural +/- theorem category_theory.limits.prod_comparison_natural - def category_theory.limits.prod_functor - theorem category_theory.limits.prod_lift_fst_snd - theorem category_theory.limits.prod_map_comp_id - theorem category_theory.limits.prod_map_id_comp - theorem category_theory.limits.prod_map_id_id - theorem category_theory.limits.prod_map_map Modified src/category_theory/monoidal/of_has_finite_products.lean + def category_theory.limits.prod.functor_left_comp + theorem category_theory.limits.prod.left_unitor_hom_naturality + theorem category_theory.limits.prod.left_unitor_inv_naturality + theorem category_theory.limits.prod.right_unitor_hom_naturality - def category_theory.limits.prod_functor_left_comp - theorem category_theory.limits.prod_left_unitor_hom_naturality - theorem category_theory.limits.prod_left_unitor_inv_naturality - theorem category_theory.limits.prod_right_unitor_hom_naturality 2020-10-15 22:31:38 b7d176e feat(category_theory/cones): some isomorphisms relating operations (#4536) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean + def category_theory.functor.map_cocone_precompose + def category_theory.functor.map_cocone_precompose_equivalence_functor + def category_theory.functor.map_cocone_whisker + def category_theory.functor.map_cone_postcompose + def category_theory.functor.map_cone_postcompose_equivalence_functor + def category_theory.functor.map_cone_whisker 2020-10-15 20:34:24 8985e39 feat(archive/100-theorems-list/70_perfect_numbers): Perfect Number Theorem, Direction 2 (#4621) Adds a few extra lemmas about `divisors`, `proper_divisors` and sums of proper divisors Proves Euler's direction of the Perfect Number theorem, finishing Freek 70 ESTIMATED CHANGES Modified archive/100-theorems-list/70_perfect_numbers.lean + theorem nat.eq_pow_two_mul_odd + theorem nat.eq_two_pow_mul_prime_mersenne_of_even_perfect + theorem nat.even_and_perfect_iff Modified docs/100.yaml Modified src/number_theory/divisors.lean + theorem nat.divisors_one - theorem nat.divisors_prime + theorem nat.eq_proper_divisors_of_subset_of_sum_eq_sum +/- theorem nat.fst_mem_divisors_of_mem_antidiagonal +/- theorem nat.map_swap_divisors_antidiagonal + theorem nat.one_mem_proper_divisors_iff_one_lt +/- theorem nat.perfect_iff_sum_divisors_eq_two_mul +/- theorem nat.perfect_iff_sum_proper_divisors + theorem nat.pos_of_mem_divisors + theorem nat.pos_of_mem_proper_divisors + theorem nat.prime.divisors + theorem nat.prime.proper_divisors + theorem nat.prime.sum_divisors + theorem nat.prime.sum_proper_divisors + theorem nat.proper_divisors_eq_singleton_one_iff_prime + theorem nat.proper_divisors_one + theorem nat.proper_divisors_subset_divisors +/- theorem nat.snd_mem_divisors_of_mem_antidiagonal - theorem nat.sum_divisors_prime + theorem nat.sum_proper_divisors_dvd + theorem nat.sum_proper_divisors_eq_one_iff_prime +/- theorem nat.swap_mem_divisors_antidiagonal 2020-10-15 16:29:11 d473517 chore(algebra/group/hom): add `monoid_hom.eval` (#4629) ESTIMATED CHANGES Modified src/algebra/big_operators/pi.lean + theorem monoid_hom.finset_prod_apply +/- theorem pi.list_prod_apply Modified src/algebra/group/hom.lean + def monoid_hom.eval + theorem monoid_hom.eval_apply 2020-10-15 16:29:09 38a5f5d chore(data/equiv/mul_add): add `monoid_hom.to_mul_equiv` (#4628) ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/data/equiv/mul_add.lean + def add_monoid_hom.to_add_equiv + theorem monoid_hom.coe_to_mul_equiv + def monoid_hom.to_mul_equiv + theorem mul_equiv.coe_to_monoid_hom 2020-10-15 16:29:07 46b0528 refactor(data/polynomial): Move some lemmas to `monoid_algebra` (#4627) The `add_monoid_algebra.mul_apply_antidiagonal` lemma is copied verbatim from `monoid_algebra.mul_apply_antidiagonal`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean + theorem add_monoid_algebra.mul_apply_antidiagonal Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean +/- def polynomial.coeff - theorem polynomial.coeff_single Modified src/data/polynomial/coeff.lean 2020-10-15 16:29:05 abaf3c2 feat(algebra/category/Algebra/basic): Add free/forget adjunction. (#4620) This PR adds the usual free/forget adjunction for the category of `R`-algebras. ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean + def Algebra.adj + def Algebra.free 2020-10-15 16:29:03 07ee11e feat(algebra/algebra/basic): Add `map_finsupp_(sum|prod)` to `alg_(hom|equiv)` (#4603) Also copies some lemmas from `alg_hom` to `alg_equiv` that were missing ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem alg_equiv.map_div + theorem alg_equiv.map_finsupp_prod + theorem alg_equiv.map_finsupp_sum + theorem alg_equiv.map_inv +/- theorem alg_equiv.map_neg + theorem alg_equiv.map_prod +/- theorem alg_equiv.map_sub + theorem alg_hom.map_finsupp_prod + theorem alg_hom.map_finsupp_sum 2020-10-15 16:29:00 bb1f549 feat(algebra/gcd_monoid): in a gcd_domain a coprime factor of a power is a power (#4589) The main result is: ``` theorem associated_pow_of_mul_eq_pow {a b c : α} (ha : a ≠ 0) (hb : b ≠ 0) (hab : gcd a b = 1) {k : ℕ} (h : a * b = c ^ k) : ∃ (d : α), associated (d ^ k) a ``` ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean + theorem dvd_gcd_mul_of_dvd_mul + theorem dvd_mul_gcd_of_dvd_mul + theorem exists_associated_pow_of_mul_eq_pow + theorem gcd_pow_left_dvd_pow_gcd + theorem gcd_pow_right_dvd_pow_gcd + theorem pow_dvd_of_mul_eq_pow 2020-10-15 16:28:58 b01ca81 feat(data/matrix/notation): simp lemmas for constant-indexed elements (#4491) If you use the `![]` vector notation to define a vector, then `simp` can extract elements `0` and `1` from that vector, but not element `2` or subsequent elements. (This shows up in particular in geometry if defining a triangle with a concrete vector of vertices and then subsequently doing things that need to extract a particular vertex.) Add `bit0` and `bit1` `simp` lemmas to allow any element indexed by a numeral to be extracted (even when the numeral is larger than the length of the list, such numerals in `fin n` being interpreted mod `n`). This ends up quite long; `bit0` and `bit1` semantics mean extracting alternate elements of the vector in a way that can wrap around to the start of the vector when the numeral is `n` or larger, so the lemmas need to deal with constructing such a vector of alternate elements. As I've implemented it, some definitions also need an extra hypothesis as an argument to control definitional equalities for the vector lengths, to avoid problems with non-defeq types when stating subsequent lemmas. However, even the example added to `test/matrix.lean` of extracting element `123456789` of a 5-element vector is processed quite quickly, so this seems efficient enough. Note also that there are two `@[simp]` lemmas whose proofs are just `by simp`, but that are in fact needed for `simp` to complete extracting some elements and that the `simp` linter does not (at least when used with `#lint` for this single file) complain about. I'm not sure what's going on there, since I didn't think a lemma that `simp` can prove should normally need to be marked as `@[simp]`. ESTIMATED CHANGES Modified src/data/fin.lean + def fin.append Modified src/data/matrix/notation.lean + theorem matrix.cons_append + theorem matrix.cons_vec_alt0 + theorem matrix.cons_vec_alt1 + theorem matrix.cons_vec_bit0_eq_alt0 + theorem matrix.cons_vec_bit1_eq_alt1 + theorem matrix.empty_append + theorem matrix.empty_vec_alt0 + theorem matrix.empty_vec_alt1 + def matrix.vec_alt0 + theorem matrix.vec_alt0_append + def matrix.vec_alt1 + theorem matrix.vec_alt1_append Modified test/matrix.lean 2020-10-15 15:01:02 85d4b57 feat(data/polynomial/eval): bit0_comp, bit1_comp (#4617) ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.bit0_comp + theorem polynomial.bit1_comp 2020-10-15 14:04:18 1444fa5 fix(haar_measure): minor changes (#4623) There were some mistakes in the doc, which made it sound like `chaar` and `haar_outer_measure` coincide on compact sets, which is not generally true. Also cleanup various proofs. ESTIMATED CHANGES Modified src/measure_theory/content.lean + theorem measure_theory.outer_measure.of_content_le Modified src/measure_theory/haar_measure.lean - theorem measure_theory.measure.chaar_le_haar_outer_measure + theorem measure_theory.measure.echaar_le_haar_outer_measure + theorem measure_theory.measure.haar.echaar_self +/- theorem measure_theory.measure.haar.is_left_invariant_chaar + theorem measure_theory.measure.haar.is_left_invariant_echaar +/- theorem measure_theory.measure.haar.is_left_invariant_index - theorem measure_theory.measure.haar_outer_measure_le_chaar + theorem measure_theory.measure.haar_outer_measure_le_echaar 2020-10-15 08:51:18 7559d1c lint(data/num/*): add docs and remove some [has_zero] requirements (#4604) ESTIMATED CHANGES Modified src/data/num/basic.lean +/- def cast_num - def pos_num.sqrt_aux1 - def pos_num.sqrt_aux Modified src/data/num/bitwise.lean Modified src/data/num/lemmas.lean +/- theorem pos_num.cast_bit0 +/- theorem pos_num.cast_bit1 +/- theorem pos_num.cast_one' +/- theorem pos_num.cast_one 2020-10-15 07:30:22 fa65282 chore(category_theory/monoidal): fix typo in docstrings (#4625) ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean +/- theorem category_theory.monoidal_category.left_unitor_conjugation +/- theorem category_theory.monoidal_category.right_unitor_conjugation +/- def category_theory.tensor_iso 2020-10-15 01:11:53 2e1129e chore(scripts): update nolints.txt (#4622) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-14 18:39:39 084b7e7 chore(algebra/order,data/set/intervals): a few more trivial lemmas (#4611) * a few more lemmas for `has_le.le` and `has_lt.lt` namespaces; * a few lemmas about intersections of intervals; * fix section header in `topology/algebra/module`. ESTIMATED CHANGES Modified src/algebra/order.lean + theorem has_le.le.le_or_le +/- theorem has_le.le.le_or_lt +/- theorem has_le.le.lt_or_le + theorem has_lt.lt.lt_or_lt + theorem has_lt.lt.ne' Modified src/data/set/intervals/basic.lean + theorem set.Ioc_inter_Ioo_of_left_lt + theorem set.Ioc_inter_Ioo_of_right_le + theorem set.Ioo_inter_Ioc_of_left_le + theorem set.Ioo_inter_Ioc_of_right_lt Modified src/topology/algebra/module.lean 2020-10-14 18:39:37 d11eb84 fix(tactic/suggest): properly remove "Try this: exact " prefix from library_search hole command (#4609) [See Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/mechanisms.20to.20search.20through.20mathlilb/near/213223321) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/suggest.lean 2020-10-14 17:31:01 40844f0 doc(category_theory/comma): Fix markdown rendering in docs (#4618) ESTIMATED CHANGES Modified src/category_theory/comma.lean 2020-10-14 14:46:32 de46349 feat(data/set/intervals): more lemmas about `unordered_interval` (#4607) Add images/preimages of unordered intervals under common arithmetic operations. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.nonempty.image_const Modified src/data/set/intervals/unordered_interval.lean + theorem set.image_add_const_interval + theorem set.image_const_add_interval + theorem set.image_const_mul_interval + theorem set.image_const_sub_interval + theorem set.image_div_const_interval + theorem set.image_mul_const_interval + theorem set.image_neg_interval + theorem set.image_sub_const_interval + theorem set.preimage_add_const_interval + theorem set.preimage_const_add_interval + theorem set.preimage_const_mul_interval + theorem set.preimage_const_sub_interval + theorem set.preimage_div_const_interval + theorem set.preimage_mul_const_interval + theorem set.preimage_neg_interval + theorem set.preimage_sub_const_interval 2020-10-14 14:46:30 442ef22 feat(linear_algebra/clifford_algebra): Add a definition derived from exterior_algebra.lean (#4430) ESTIMATED CHANGES Added src/linear_algebra/clifford_algebra.lean + def clifford_algebra.as_exterior + theorem clifford_algebra.comp_ι_square_scalar + theorem clifford_algebra.hom_ext + def clifford_algebra.lift + theorem clifford_algebra.lift_comp_ι + theorem clifford_algebra.lift_unique + theorem clifford_algebra.lift_ι_apply + inductive clifford_algebra.rel + def clifford_algebra.ι + theorem clifford_algebra.ι_comp_lift + theorem clifford_algebra.ι_square_scalar + def clifford_algebra Modified src/linear_algebra/exterior_algebra.lean 2020-10-14 15:36:40+02:00 1a1655c doc(docs/100): link to actual triangle inequality (#4614) ESTIMATED CHANGES Modified docs/100.yaml 2020-10-14 09:45:28 f7edbca feat(algebra/char_zero): char_zero.infinite (#4593) ESTIMATED CHANGES Modified src/algebra/char_zero.lean +/- theorem two_ne_zero' Modified src/data/fintype/basic.lean + theorem infinite.nonempty 2020-10-14 09:45:26 6f5ccc1 chore(linear_algebra/linear_independent): review API (#4567) ### API changes #### New definitions and lemmas * `subalgebra.to_submodule_equiv`: a linear equivalence between a subalgebra and its coercion to a submodule; * `algebra.to_submodule_bot`: coercion of `⊥ : subalgebra R A` to `submodule R A` is `submodule.span {1}`; * `submodule.disjoint_def'`: one more expansion of `disjoint` for submodules; * `submodule.is_compl_range_inl_inr`: ranges of `inl` and `inr` are complement submodules; * `finsupp.supported_inter`, `finsupp.disjojint_supported_supported`, `finsupp.disjoint_supported_supported_iff` : more lemmas about `finsupp.supported`; * `finsupp.total_unique`: formula for `finsupp.total` on a `unique` type; * `linear_independent_iff_injective_total`, `linear_independent.injective_total` : relate `linear_independent R v` to `injective (finsupp.total ι M R v)`; * `fintype.linear_independent_iff`: a simplified test for `linear_independent R v` if the domain of `v` is a `fintype`; * `linear_independent.map'`: an injective linear map sends linearly independent families of vectors to linearly independent families of vectors; * `linear_map.linear_independent_iff`: if `f` is an injective linear map, then `f ∘ v` is linearly independent iff `v` is linearly independent; * `linear_independent.disjoint_span_image`: if `v` is a linearly independent family of vectors, then the submodules spanned by disjoint subfamilies of `v` are disjoint; * `linear_independent_sum`: a test for linear independence of a disjoint union of two families of vectors; * `linear_independent.sum_type`: `iff.mpr` from `linear_independent_sum`; * `linear_independent_unique_iff`, `linear_independent_unique`: a test for linear independence of a single-vector family; * `linear_independent_option'`, `linear_independent_option`, `linear_independent.option`: test for linear independence of a family indexed by `option ι`; * `linear_independent_pair`: test for independence of `{v₁, v₂}`; * `linear_independent_fin_cons`, `linear_independent.fin_cons`, `linear_independent_fin_succ`, `linear_independent_fin2`: tests for linear independence of families indexed by `i : fin n`. #### Rename * `_root_.disjoint_span_singleton` → `submodule.disjoint_span_singleton'`; * `linear_independent.image` → `linear_independent.map` * `linear_independent_of_comp` → `linear_independent.of_comp`; #### Changes in type signature * `is_basis.to_dual`, `is_basis.to_dual_flip`, `is_basis.to_dual_equiv`: take `B` as an explicit argument to improve readability of the pretty-printed output; ESTIMATED CHANGES Modified src/algebra/algebra/subalgebra.lean + theorem algebra.to_submodule_bot + def subalgebra.to_submodule_equiv Modified src/data/equiv/basic.lean + theorem equiv.option_equiv_sum_punit_coe +/- theorem equiv.option_equiv_sum_punit_none + theorem equiv.set.insert_apply_left + theorem equiv.set.insert_apply_right + theorem equiv.set.insert_symm_apply_inl + theorem equiv.set.insert_symm_apply_inr Modified src/field_theory/fixed.lean Modified src/linear_algebra/basic.lean + theorem linear_map.is_compl_range_inl_inr +/- theorem linear_map.sup_range_inl_inr + theorem submodule.disjoint_def' + theorem submodule.disjoint_span_singleton' Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dual.lean +/- def is_basis.dual_basis +/- theorem is_basis.to_dual_apply_left +/- theorem is_basis.to_dual_apply_right +/- theorem is_basis.to_dual_eq_equiv_fun +/- theorem is_basis.to_dual_eq_repr +/- def is_basis.to_dual_flip +/- theorem is_basis.to_dual_inj +/- theorem is_basis.to_dual_ker +/- theorem is_basis.to_dual_range +/- theorem is_basis.to_dual_swap_eq_to_dual +/- theorem module.dual.eval_apply Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean + theorem finsupp.disjoint_supported_supported + theorem finsupp.disjoint_supported_supported_iff + theorem finsupp.supported_inter + theorem finsupp.total_unique Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/linear_independent.lean - theorem disjoint_span_singleton + theorem fintype.linear_independent_iff + theorem linear_independent.disjoint_span_image + theorem linear_independent.fin_cons - theorem linear_independent.image' +/- theorem linear_independent.image + theorem linear_independent.map' + theorem linear_independent.map + theorem linear_independent.of_comp - theorem linear_independent.of_subtype_range + theorem linear_independent.option + theorem linear_independent.sum_type + theorem linear_independent.to_subtype_range' +/- theorem linear_independent.to_subtype_range - theorem linear_independent.unique + theorem linear_independent_fin2 + theorem linear_independent_fin_cons + theorem linear_independent_fin_succ + theorem linear_independent_iff_injective_total - theorem linear_independent_of_comp + theorem linear_independent_option' + theorem linear_independent_option + theorem linear_independent_pair + theorem linear_independent_subtype_range + theorem linear_independent_sum - theorem linear_independent_unique + theorem linear_independent_unique_iff 2020-10-14 08:24:05 8511729 refactor(data/int/gcd,ring_theory/int/basic): collect integer divisibility results from various files (#4572) Applying comments from PR #4384. In particular: 1) Move the gcd and lcm results from gcd_monoid to `data/int/gcd.lean` with new proofs (for a few lcm results) that do not need ring theory. 2) Try to collect applications of ring theory to ℕ and ℤ into a new file `ring_theory/int/basic.lean`. ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean - def associates_int_equiv_nat - theorem int.coe_gcd - theorem int.coe_lcm - theorem int.coe_nat_abs_eq_normalize - theorem int.dvd_gcd - theorem int.dvd_lcm_left - theorem int.dvd_lcm_right - theorem int.exists_gcd_one' - theorem int.exists_gcd_one - theorem int.gcd_assoc - theorem int.gcd_comm - theorem int.gcd_div - theorem int.gcd_div_gcd_div_gcd - theorem int.gcd_dvd_gcd_mul_left - theorem int.gcd_dvd_gcd_mul_left_right - theorem int.gcd_dvd_gcd_mul_right - theorem int.gcd_dvd_gcd_mul_right_right - theorem int.gcd_dvd_gcd_of_dvd_left - theorem int.gcd_dvd_gcd_of_dvd_right - theorem int.gcd_dvd_left - theorem int.gcd_dvd_right - theorem int.gcd_eq_left - theorem int.gcd_eq_right - theorem int.gcd_eq_zero_iff - theorem int.gcd_mul_lcm - theorem int.gcd_mul_left - theorem int.gcd_mul_right - theorem int.gcd_one_left - theorem int.gcd_one_right - theorem int.gcd_pos_of_non_zero_left - theorem int.gcd_pos_of_non_zero_right - theorem int.gcd_self - theorem int.gcd_zero_left - theorem int.gcd_zero_right - def int.lcm - theorem int.lcm_assoc - theorem int.lcm_comm - theorem int.lcm_def - theorem int.lcm_dvd - theorem int.lcm_one_left - theorem int.lcm_one_right - theorem int.lcm_self - theorem int.lcm_zero_left - theorem int.lcm_zero_right - theorem int.nat_abs_gcd - theorem int.nat_abs_lcm - theorem int.ne_zero_of_gcd - theorem int.normalize_coe_nat - theorem int.normalize_of_neg - theorem int.normalize_of_nonneg - theorem int.pow_dvd_pow_iff - theorem int.prime.dvd_mul' - theorem int.prime.dvd_mul - theorem irreducible_iff_nat_prime - theorem nat.prime_iff_prime - theorem nat.prime_iff_prime_int - theorem prime_two_or_dvd_of_dvd_two_mul_pow_self_two Modified src/data/int/gcd.lean + theorem int.dvd_gcd + theorem int.dvd_lcm_left + theorem int.dvd_lcm_right + theorem int.exists_gcd_one' + theorem int.exists_gcd_one + theorem int.gcd_assoc + theorem int.gcd_comm + theorem int.gcd_div + theorem int.gcd_div_gcd_div_gcd + theorem int.gcd_dvd_gcd_mul_left + theorem int.gcd_dvd_gcd_mul_left_right + theorem int.gcd_dvd_gcd_mul_right + theorem int.gcd_dvd_gcd_mul_right_right + theorem int.gcd_dvd_gcd_of_dvd_left + theorem int.gcd_dvd_gcd_of_dvd_right + theorem int.gcd_dvd_left + theorem int.gcd_dvd_right + theorem int.gcd_eq_left + theorem int.gcd_eq_right + theorem int.gcd_eq_zero_iff + theorem int.gcd_mul_lcm + theorem int.gcd_mul_left + theorem int.gcd_mul_right + theorem int.gcd_one_left + theorem int.gcd_one_right + theorem int.gcd_pos_of_non_zero_left + theorem int.gcd_pos_of_non_zero_right + theorem int.gcd_self + theorem int.gcd_zero_left + theorem int.gcd_zero_right + def int.lcm + theorem int.lcm_assoc + theorem int.lcm_comm + theorem int.lcm_def + theorem int.lcm_dvd + theorem int.lcm_one_left + theorem int.lcm_one_right + theorem int.lcm_self + theorem int.lcm_zero_left + theorem int.lcm_zero_right + theorem int.ne_zero_of_gcd + theorem int.pow_dvd_pow_iff Deleted src/data/nat/associated.lean - theorem nat.irreducible_iff_prime - theorem nat.prime_iff Modified src/data/nat/multiplicity.lean Deleted src/data/nat/unique_factorization.lean - theorem nat.factors_eq Modified src/data/padics/padic_norm.lean Modified src/data/real/irrational.lean Modified src/number_theory/pythagorean_triples.lean Added src/ring_theory/int/basic.lean + def associates_int_equiv_nat + theorem int.coe_gcd + theorem int.coe_lcm + theorem int.coe_nat_abs_eq_normalize + theorem int.nat_abs_gcd + theorem int.nat_abs_lcm + theorem int.normalize_coe_nat + theorem int.normalize_of_neg + theorem int.normalize_of_nonneg + theorem int.prime.dvd_mul' + theorem int.prime.dvd_mul + theorem irreducible_iff_nat_prime + theorem multiplicity.finite_int_iff + theorem multiplicity.finite_int_iff_nat_abs_finite + theorem nat.factors_eq + theorem nat.irreducible_iff_prime + theorem nat.prime_iff + theorem nat.prime_iff_prime + theorem nat.prime_iff_prime_int + theorem prime_two_or_dvd_of_dvd_two_mul_pow_self_two Modified src/ring_theory/multiplicity.lean - theorem multiplicity.finite_int_iff - theorem multiplicity.finite_int_iff_nat_abs_finite 2020-10-14 08:24:03 20006f1 feat(data/polynomial/field_division, field_theory/splitting_field): Splits if enough roots (#4557) I have added some lemmas about polynomials that split. In particular the fact that if `p` has as many roots as its degree than it can be written as a product of `(X - a)` and so it splits. The proof of this for monic polynomial, in `eq_prod_of_card_roots_monic`, is rather messy and can probably be improved a lot. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.prod_multiset_X_sub_C_dvd + theorem polynomial.prod_multiset_root_eq_finset_root + theorem polynomial.roots_C_mul Modified src/data/polynomial/monomial.lean + theorem polynomial.C_eq_zero +/- theorem polynomial.C_inj Modified src/field_theory/splitting_field.lean + theorem polynomial.C_leading_coeff_mul_prod_multiset_X_sub_C + theorem polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq + theorem polynomial.splits_iff_card_roots 2020-10-14 01:06:37 1c12bd9 chore(scripts): update nolints.txt (#4610) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-13 23:51:13 e2dd1c6 feat(analysis/normed_space): unconditionally convergent series in `R^n` is absolutely convergent (#4551) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean - theorem has_sum_of_bounded_monoid_hom_of_has_sum - theorem has_sum_of_bounded_monoid_hom_of_summable Modified src/analysis/normed_space/finite_dimension.lean + theorem summable_norm_iff Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_map.has_sum_of_summable Modified src/analysis/specific_limits.lean Modified src/data/indicator_function.lean + theorem set.indicator_eq_zero_or_self Modified src/topology/algebra/infinite_sum.lean + theorem summable.of_neg + theorem summable_abs_iff + theorem summable_neg_iff + theorem summable_subtype_and_compl 2020-10-13 21:59:53 2543b68 refactor(*): migrate to `dense` API (#4447) @PatrickMassot introduced `dense` in #4399. In this PR I review the API and migrate many definitions and lemmas to use `dense s` instead of `closure s = univ`. I also generalize `second_countable_of_separable` to a `uniform_space` with a countably generated uniformity filter. ## API changes ### Use `dense` or `dense_range` instead of `closure _ = univ` #### Lemmas - `has_fderiv_within_at.unique_diff_within_at`; - `exists_dense_seq`; - `dense_Inter_of_open_nat`; - `dense_sInter_of_open`; - `dense_bInter_of_open`; - `dense_Inter_of_open`; - `dense_sInter_of_Gδ`; - `dense_bInter_of_Gδ`; - `eventually_residual`; - `mem_residual`; - `dense_bUnion_interior_of_closed`; - `dense_sUnion_interior_of_closed`; - `dense_Union_interior_of_closed`; - `Kuratowski_embeddinng.embedding_of_subset_isometry`; - `continuous_extend_from`; #### Definitions - `unique_diff_within_at`; - `residual`; ### Rename - `submodule.linear_eq_on` → `linear_map.eq_on_span`, `linear_map.eq_on_span'`; - `submodule.linear_map.ext_on` → `linear_map.ext_on_range`; - `filter.is_countably_generated.has_antimono_basis` → `filter.is_countably_generated.exists_antimono_basis`; - `exists_countable_closure_eq_univ` → `exists_countable_dense`, use `dense`; - `dense_seq_dense` → `dense_range_dense_seq`, use `dense`; - `dense_range.separable_space` is now `protected`; - `dense_of_subset_dense` → `dense.mono`; - `dense_inter_of_open_left` → `dense.inter_of_open_left`; - `dense_inter_of_open_right` → `dense.inter_of_open_right`; - `continuous.dense_image_of_dense_range` → `dense_range.dense_image`; - `dense_range.inhabited`, `dense_range.nonempty`: changed API, TODO; - `quotient_dense_of_dense` → `dense.quotient`, use `dense`; - `dense_inducing.separable` → `dense_inducing.separable_space`, add `protected`; - `dense_embedding.separable` → `dense_embedding.separable_space`, add `protected`; - `dense_inter_of_Gδ` → `dense.inter_of_Gδ`; - `stone_cech_unit_dense` → `dense_range_stone_cech_unit`; - `abstract_completion.dense'` → `abstract_completion.closure_range`; - `Cauchy.pure_cauchy_dense` → `Cauchy.dense_range_pure_cauchy`; - `completion.dense` → `completion.dense_range_coe`; - `completion.dense₂` → `completion.dense_range_coe₂`; - `completion.dense₃` → `completion.dense_range_coe₃`; ### New - `has_fderiv_within_at.unique_on` : if `f'` and `f₁'` are two derivatives of `f` within `s` at `x`, then they are equal on the tangent cone to `s` at `x`; - `local_homeomorph.mdifferentiable.mfderiv_bijective`, `local_homeomorph.mdifferentiable.mfderiv_surjective` - `continuous_linear_map.eq_on_closure_span`: if two continuous linear maps are equal on `s`, then they are equal on `closure (submodule.span s)`; - `continuous_linear_map.ext_on`: if two continuous linear maps are equal on a set `s` such that `submodule.span s` is dense, then they are equal; - `dense_closure`: `closure s` is dense iff `s` is dense; - `dense.of_closure`, `dense.closure`: aliases for `dense_closure.mp` and `dense_closure.mpr`; - `dense_univ`: `univ` is dense; - `dense.inter_open_nonempty`: alias for `dense_iff_inter_open.mp`; - `dense.nonempty_iff`: if `s : set α` is a dense set, then `s` is nonempty iff `α` is nonempty; - `dense.nonempty`: a dense set in a nonempty type is nonempty; - `dense_range.some`: given a function with `dense_range` and a point in the codomain, returns a point in the domain; - `function.surjective.dense_range`: a surjective function has dense range; - `continuous.range_subset_closure_image_dense`: closure of the image of a dense set under a continuous function includes the range of this function; - `dense_range.dense_of_maps_to`: if a function with dense range maps a dense set `s` to `t`, then `t` is dense in the codomain; - `dense_range.quotient`; - `dense.prod`: product of two dense sets is dense in the product; - `set.eq_on.closure`; - `continuous.ext_on`; - `linear_map.ext_on` ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_within_at.unique_on Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/geometry/manifold/mfderiv.lean + theorem local_homeomorph.mdifferentiable.mfderiv_bijective + theorem local_homeomorph.mdifferentiable.mfderiv_surjective Modified src/linear_algebra/basic.lean + theorem linear_map.eq_on_span' + theorem linear_map.eq_on_span + theorem linear_map.ext_on + theorem linear_map.ext_on_range - theorem submodule.linear_eq_on - theorem submodule.linear_map.ext_on Modified src/linear_algebra/basis.lean Modified src/measure_theory/simple_func_dense.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.eq_on_closure_span + theorem continuous_linear_map.ext_on Modified src/topology/bases.lean - theorem dense_range.separable_space + theorem topological_space.dense_range_dense_seq - theorem topological_space.dense_seq_dense - theorem topological_space.exists_countable_closure_eq_univ +/- theorem topological_space.exists_dense_seq Modified src/topology/basic.lean - theorem continuous.dense_image_of_dense_range + theorem continuous.range_subset_closure_image_dense + theorem dense.inter_of_open_left + theorem dense.inter_of_open_right + theorem dense.mono + theorem dense.nonempty + theorem dense.nonempty_iff + theorem dense_closure - theorem dense_inter_of_open_left - theorem dense_inter_of_open_right - theorem dense_of_subset_dense +/- theorem dense_range.comp + theorem dense_range.dense_image + theorem dense_range.dense_of_maps_to - def dense_range.inhabited +/- theorem dense_range.nonempty + theorem dense_range.nonempty_iff + def dense_range.some + theorem dense_univ + theorem function.surjective.dense_range Modified src/topology/constructions.lean + theorem dense.prod + theorem dense.quotient - theorem dense_range.prod + theorem dense_range.prod_map + theorem dense_range.quotient - theorem quotient_dense_of_dense Modified src/topology/dense_embedding.lean - theorem dense_embedding.separable - theorem dense_inducing.separable Modified src/topology/extend_from_subset.lean +/- theorem continuous_extend_from Modified src/topology/instances/real.lean Modified src/topology/metric_space/baire.lean + theorem dense.inter_of_Gδ - theorem dense_inter_of_Gδ +/- theorem mem_residual Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/isometry.lean +/- theorem Kuratowski_embedding.embedding_of_subset_isometry Modified src/topology/separation.lean + theorem continuous.ext_on + theorem set.eq_on.closure Modified src/topology/stone_cech.lean + theorem dense_range_pure + theorem dense_range_stone_cech_unit + theorem induced_topology_pure - theorem stone_cech_unit_dense Modified src/topology/uniform_space/abstract_completion.lean + theorem abstract_completion.closure_range - theorem abstract_completion.dense' Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean + theorem Cauchy.dense_range_pure_cauchy - theorem Cauchy.pure_cauchy_dense - theorem uniform_space.completion.dense + theorem uniform_space.completion.dense_range_coe + theorem uniform_space.completion.dense_range_coe₂ + theorem uniform_space.completion.dense_range_coe₃ - theorem uniform_space.completion.dense₂ - theorem uniform_space.completion.dense₃ 2020-10-13 19:48:34 fde3d78 chore(multiset): dedicated notation for multiset.cons (#4600) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/data/dfinsupp.lean Modified src/data/finmap.lean Modified src/data/finset/basic.lean +/- theorem finset.cons_val +/- theorem finset.insert_val' +/- theorem finset.insert_val_of_not_mem +/- theorem finset.mk_cons +/- theorem finset.singleton_val Modified src/data/finset/pi.lean Modified src/data/finsupp/basic.lean Modified src/data/fintype/basic.lean Modified src/data/multiset/antidiagonal.lean +/- theorem multiset.antidiagonal_cons +/- theorem multiset.antidiagonal_zero Modified src/data/multiset/basic.lean +/- theorem multiset.add_cons +/- theorem multiset.card_cons +/- theorem multiset.card_eq_one +/- theorem multiset.card_singleton +/- theorem multiset.cons_add +/- theorem multiset.cons_bind +/- theorem multiset.cons_erase +/- theorem multiset.cons_inj_right +/- theorem multiset.cons_inter_distrib +/- theorem multiset.cons_le_cons +/- theorem multiset.cons_le_cons_iff +/- theorem multiset.cons_ne_zero +/- theorem multiset.cons_subset +/- theorem multiset.cons_swap +/- theorem multiset.cons_union_distrib +/- theorem multiset.count_cons_of_ne +/- theorem multiset.count_cons_self +/- theorem multiset.count_le_count_cons +/- theorem multiset.count_singleton +/- theorem multiset.countp_cons_of_neg +/- theorem multiset.countp_cons_of_pos +/- theorem multiset.disjoint_singleton +/- theorem multiset.erase_cons_head +/- theorem multiset.erase_cons_tail +/- theorem multiset.erase_le_iff_le_cons +/- theorem multiset.exists_cons_of_mem +/- theorem multiset.filter_cons_of_neg +/- theorem multiset.filter_cons_of_pos +/- theorem multiset.foldl_cons +/- theorem multiset.foldr_cons +/- theorem multiset.join_cons +/- theorem multiset.le_cons_erase +/- theorem multiset.le_cons_of_not_mem +/- theorem multiset.le_cons_self +/- theorem multiset.lt_cons_self +/- theorem multiset.lt_iff_cons_le +/- theorem multiset.map_cons +/- theorem multiset.mem_cons +/- theorem multiset.mem_cons_of_mem +/- theorem multiset.mem_cons_self +/- theorem multiset.mem_singleton +/- theorem multiset.mem_singleton_self +/- theorem multiset.prod_cons +/- theorem multiset.prod_singleton +/- theorem multiset.product_singleton +/- theorem multiset.repeat_one +/- theorem multiset.repeat_subset_singleton +/- theorem multiset.repeat_succ +/- theorem multiset.singleton_add +/- theorem multiset.singleton_coe +/- theorem multiset.singleton_disjoint +/- theorem multiset.singleton_eq_singleton +/- theorem multiset.singleton_inj +/- theorem multiset.singleton_le +/- theorem multiset.singleton_ne_zero +/- theorem multiset.sub_cons +/- theorem multiset.zero_ne_cons Modified src/data/multiset/erase_dup.lean +/- theorem multiset.erase_dup_singleton Modified src/data/multiset/finset_ops.lean +/- theorem multiset.ndinsert_of_not_mem +/- theorem multiset.ndinsert_zero Modified src/data/multiset/fold.lean +/- theorem multiset.fold_cons'_left +/- theorem multiset.fold_cons'_right +/- theorem multiset.fold_cons_right +/- theorem multiset.fold_singleton Modified src/data/multiset/functor.lean +/- theorem multiset.pure_def Modified src/data/multiset/gcd.lean +/- theorem multiset.gcd_singleton +/- theorem multiset.lcm_singleton Modified src/data/multiset/intervals.lean +/- theorem multiset.Ico.eq_cons +/- theorem multiset.Ico.succ_top Modified src/data/multiset/lattice.lean +/- theorem multiset.inf_singleton +/- theorem multiset.sup_singleton Modified src/data/multiset/nat_antidiagonal.lean Modified src/data/multiset/nodup.lean +/- theorem multiset.nodup_cons +/- theorem multiset.nodup_cons_of_nodup +/- theorem multiset.nodup_iff_le +/- theorem multiset.nodup_iff_ne_cons_cons +/- theorem multiset.nodup_of_nodup_cons +/- theorem multiset.nodup_singleton +/- theorem multiset.not_mem_of_nodup_cons +/- theorem multiset.not_nodup_pair Modified src/data/multiset/pi.lean +/- def multiset.pi.cons +/- theorem multiset.pi.cons_same +/- theorem multiset.pi_zero Modified src/data/multiset/powerset.lean +/- theorem multiset.powerset_zero Modified src/data/multiset/range.lean +/- theorem multiset.range_succ Modified src/data/multiset/sections.lean +/- theorem multiset.sections_zero Modified src/data/pnat/factors.lean +/- def prime_multiset.of_prime Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.roots_X_sub_C Modified src/data/set/finite.lean Modified src/data/sym.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/perm/sign.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/unique_factorization_domain.lean 2020-10-13 18:44:25 7368d71 chore(number_theory/arithmetic_function): Define in terms of zero_hom (#4606) No need to write these proofs in two places ESTIMATED CHANGES Modified src/number_theory/arithmetic_function.lean +/- theorem nat.arithmetic_function.map_zero +/- theorem nat.arithmetic_function.zero_apply + def nat.arithmetic_function - structure nat.arithmetic_function 2020-10-13 16:46:02 b1c1033 feat(analysis/normed_space/operator_norm): construct a continuous_linear_equiv from a linear_equiv and bounds in both directions (#4583) ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + def linear_equiv.to_continuous_linear_equiv_of_bounds 2020-10-13 16:46:00 7cff825 feat(data/vector2): induction principle, define last, and some lemmas (blocked by #4578) (#4554) ESTIMATED CHANGES Modified src/data/vector2.lean + def vector.induction_on + def vector.last + theorem vector.last_def + theorem vector.nth_cons_nil + theorem vector.reverse_nth_zero + theorem vector.singleton_tail + theorem vector.tail_nil + theorem vector.to_list_reverse + theorem vector.to_list_singleton 2020-10-13 15:24:50 71bb9f2 chore(linear_algebra/finsupp): Implement lsingle in terms of single_add_hom (#4605) While not shorter, this makes it easier to relate the two definitions ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean +/- def finsupp.lapply 2020-10-13 14:02:34 ca6af1c chore(algebra/monoid_algebra): Replace `algebra_map'` with `single_(zero|one)_ring_hom` (#4582) `algebra_map'` is now trivially equal to `single_(zero|one)_ring_hom.comp`, so is no longer needed. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean - def add_monoid_algebra.algebra_map' + def add_monoid_algebra.single_zero_alg_hom + def add_monoid_algebra.single_zero_ring_hom - def monoid_algebra.algebra_map' + def monoid_algebra.single_one_alg_hom + def monoid_algebra.single_one_ring_hom Modified src/data/polynomial/monomial.lean +/- def polynomial.C 2020-10-13 11:12:28 9f9344d feat(algebra/char_p): fields with a hom between them have same char (#4594) ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem ring_hom.char_p_iff_char_p 2020-10-13 09:47:17 dd8bf2c feat(data/polynomial/eval): easy lemmas + speedup (#4596) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean - theorem polynomial.mul_comp Modified src/data/polynomial/eval.lean + theorem polynomial.comp_assoc + theorem polynomial.eval₂_congr + theorem polynomial.mul_comp + theorem polynomial.neg_comp + theorem polynomial.sub_comp 2020-10-13 06:30:22 7fff35f chore(algebra/pointwise): remove `@[simp]` from `singleton_one`/`singleton_zero` (#4592) This lemma simplified `{1}` and `{0}` to `1` and `0` making them unusable for other `singleton` lemmas. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.preimage_mul_left_singleton + theorem set.preimage_mul_right_singleton Modified src/ring_theory/fractional_ideal.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-10-13 06:30:20 c9ae9e6 chore(linear_algebra/dimension): more same-universe versions of `is_basis.mk_eq_dim` (#4591) While all the `lift` magic is good for general theory, it is not that convenient for the case when everything is in `Type`. * add `mk_eq_mk_of_basis'`: same-universe version of `mk_eq_mk_of_basis`; * generalize `is_basis.mk_eq_dim''` to any index type in the same universe as `V`, not necessarily `s : set V`; * reorder lemmas to optimize the total length of the proofs; * drop one `finite_dimensional` assumption in `findim_of_infinite_dimensional`. ESTIMATED CHANGES Modified src/field_theory/tower.lean +/- theorem finite_dimensional.findim_mul_findim Modified src/linear_algebra/dimension.lean +/- theorem is_basis.mk_eq_dim'' + theorem mk_eq_mk_of_basis' Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.findim_of_infinite_dimensional 2020-10-13 04:39:56 766d860 fix(big_operators): fix imports (#4588) Previously `algebra.big_operators.pi` imported `algebra.big_operators.default`. That import direction is now reversed. ESTIMATED CHANGES Modified src/algebra/big_operators/default.lean Modified src/algebra/big_operators/pi.lean Modified src/data/polynomial/iterated_deriv.lean Modified src/deprecated/submonoid.lean 2020-10-13 03:48:58 505b969 feat(archive/imo): formalize IMO 1962 problem Q1 (#4450) The problem statement: Find the smallest natural number $n$ which has the following properties: (a) Its decimal representation has 6 as the last digit. (b) If the last digit 6 is erased and placed in front of the remaining digits, the resulting number is four times as large as the original number $n$. This is a proof that 153846 is the smallest member of the set satisfying these conditions. ESTIMATED CHANGES Added archive/imo/imo1962_q1.lean + theorem case_0_digit + theorem case_1_digit + theorem case_2_digit + theorem case_3_digit + theorem case_4_digit + theorem case_5_digit + theorem case_more_digits + theorem helper_5_digit + theorem imo1962_q1 + theorem no_smaller_solutions + def problem_predicate' + def problem_predicate + theorem satisfied_by_153846 + theorem without_digits 2020-10-13 02:01:14 e957269 chore(scripts): update nolints.txt (#4587) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-10-13 02:01:12 9eb341a feat(mv_polynomial): minor simplification in coeff_mul (#4586) The proof was already golfed in #4472. Use `×` instead of `sigma`. Shorten one line over 100 chars. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2020-10-13 02:01:09 7dcaee1 feat(archive/imo): formalize IMO 1962 problem 4 (#4518) The problem statement: Solve the equation `cos x ^ 2 + cos (2 * x) ^ 2 + cos (3 * x) ^ 2 = 1`. There are a bunch of trig formulas I proved along the way; there are sort of an infinite number of trig formulas so I'm open to feedback on whether some should go in the core libraries. Also possibly some of them have a shorter proof that would render the lemma unnecessary. For what it's worth, the actual method of solution is not how a human would do it; a more intuitive human method is to simplify in terms of `cos x` and then solve, but I think this is simpler in Lean because it doesn't rely on solving `cos x = y` for several different `y`. ESTIMATED CHANGES Added archive/imo/imo1962_q4.lean + theorem alt_equiv + def alt_formula + theorem cos_sum_equiv + theorem finding_zeros + theorem imo1962_q4 + def problem_equation + def solution_set + theorem solve_cos2_half + theorem solve_cos3x_0 Modified src/data/complex/exponential.lean + theorem complex.cos_square' + theorem complex.cos_three_mul + theorem complex.cosh_square + theorem complex.cosh_three_mul + theorem complex.cosh_two_mul + theorem complex.sin_three_mul + theorem complex.sinh_square + theorem complex.sinh_three_mul + theorem complex.sinh_two_mul + theorem real.cos_square' + theorem real.cos_three_mul + theorem real.cos_two_mul' + theorem real.cosh_add_sinh + theorem real.cosh_square + theorem real.cosh_three_mul + theorem real.cosh_two_mul + theorem real.sin_three_mul + theorem real.sinh_add_cosh + theorem real.sinh_square + theorem real.sinh_three_mul + theorem real.sinh_two_mul 2020-10-13 02:01:07 b231d8e feat(archive/imo): formalize IMO 1960 problem 1 (#4366) The problem: Determine all three-digit numbers $N$ having the property that $N$ is divisible by 11, and $\dfrac{N}{11}$ is equal to the sum of the squares of the digits of $N$. Art of Problem Solving offers three solutions to this problem - https://artofproblemsolving.com/wiki/index.php/1960_IMO_Problems/Problem_1 - but they all involve a fairly large amount of bashing through cases and solving basic algebra. This proof is also essentially bashing through cases, using the `iterate` tactic and calls to `norm_num`. ESTIMATED CHANGES Added archive/imo/imo1960_q1.lean + theorem ge_100 + theorem imo1960_q1 + theorem left_direction + theorem lt_1000 + theorem not_zero + def problem_predicate + theorem right_direction + def search_up_to + theorem search_up_to_end + theorem search_up_to_start + theorem search_up_to_step + def solution_predicate + def sum_of_squares 2020-10-12 23:17:41 a6d445d feat(data/finsupp): Add `map_finsupp_prod` to homs (#4585) This is a convenience alias for `map_prod`, which is awkward to use. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem monoid_hom.map_finsupp_prod + theorem mul_equiv.map_finsupp_prod + theorem ring_hom.map_finsupp_prod + theorem ring_hom.map_finsupp_sum 2020-10-12 23:17:40 d1bb5ea feat(topology/category/Compactum): Compact Hausdorff spaces (#4555) This PR provides the equivalence between the category of compact Hausdorff topological spaces and the category of algebras for the ultrafilter monad. ## Notation 1. `Compactum` is the category of algebras for the ultrafilter monad. It's a wrapper around `monad.algebra (of_type_functor $ ultrafilter)`. 2. `CompHaus` is the full subcategory of `Top` consisting of topological spaces which are compact and Hausdorff. ESTIMATED CHANGES Added src/data/set/constructions.lean + inductive has_finite_inter.finite_inter_closure + def has_finite_inter.finite_inter_closure_has_finite_inter + theorem has_finite_inter.finite_inter_closure_insert + theorem has_finite_inter.finite_inter_mem + structure has_finite_inter Modified src/order/filter/ultrafilter.lean + theorem filter.ne_empty_of_mem_ultrafilter + theorem filter.nonempty_of_mem_ultrafilter + theorem filter.ultrafilter_iff_compl_mem_iff_not_mem' Modified src/topology/basic.lean + def Lim' + def filter.ultrafilter.Lim Added src/topology/category/CompHaus.lean + structure CompHaus + def CompHaus_to_Top Added src/topology/category/Compactum.lean + theorem Compactum.Lim_eq_str + def Compactum.adj + theorem Compactum.cl_eq_closure + theorem Compactum.continuous_of_hom + def Compactum.forget + def Compactum.free + def Compactum.hom_of_continuous + def Compactum.incl + theorem Compactum.is_closed_cl + theorem Compactum.is_closed_iff + def Compactum.join + theorem Compactum.join_distrib + theorem Compactum.le_nhds_of_str_eq + def Compactum.str + theorem Compactum.str_eq_of_le_nhds + theorem Compactum.str_hom_commute + theorem Compactum.str_incl + def Compactum + theorem Compactum_to_CompHaus.faithful + def Compactum_to_CompHaus.full + def Compactum_to_CompHaus Modified src/topology/separation.lean + theorem is_open_iff_ultrafilter' 2020-10-12 23:17:37 bc77a23 feat(data/list/*): add left- and right-biased versions of map₂ and zip (#4512) When given lists of different lengths, `map₂` and `zip` truncate the output to the length of the shorter input list. This commit adds variations on `map₂` and `zip` whose output is always as long as the left/right input. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.map₂_flip + theorem list.map₂_left'_nil_right + theorem list.map₂_left_eq_map₂ + theorem list.map₂_left_eq_map₂_left' + theorem list.map₂_left_nil_right + theorem list.map₂_right'_cons_cons + theorem list.map₂_right'_nil_cons + theorem list.map₂_right'_nil_left + theorem list.map₂_right'_nil_right + theorem list.map₂_right_cons_cons + theorem list.map₂_right_eq_map₂ + theorem list.map₂_right_eq_map₂_right' + theorem list.map₂_right_nil_cons + theorem list.map₂_right_nil_left + theorem list.map₂_right_nil_right + theorem list.zip_left'_cons_cons + theorem list.zip_left'_cons_nil + theorem list.zip_left'_nil_left + theorem list.zip_left'_nil_right + theorem list.zip_left_cons_cons + theorem list.zip_left_cons_nil + theorem list.zip_left_eq_zip_left' + theorem list.zip_left_nil_left + theorem list.zip_left_nil_right + theorem list.zip_right'_cons_cons + theorem list.zip_right'_nil_cons + theorem list.zip_right'_nil_left + theorem list.zip_right'_nil_right + theorem list.zip_right_cons_cons + theorem list.zip_right_eq_zip_right' + theorem list.zip_right_nil_cons + theorem list.zip_right_nil_left + theorem list.zip_right_nil_right Modified src/data/list/defs.lean + def list.map₂_left' + def list.map₂_left + def list.map₂_right' + def list.map₂_right + def list.zip_left' + def list.zip_left + def list.zip_right' + def list.zip_right 2020-10-12 20:50:13 d3d70f1 chore(algebra/order*): move `abs`/`min`/`max`, review (#4581) * make `algebra.ordered_group` import `algebra.order_functions`, not vice versa; * move some proofs from `algebra.ordered_functions` to `algebra.ordered_group` and `algebra.ordered_ring`; * deduplicate API; * golf some proofs. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/group_power/basic.lean Modified src/algebra/order_functions.lean - theorem abs_abs_sub_le_abs_sub - theorem abs_add - theorem abs_eq - theorem abs_eq_zero - theorem abs_le - theorem abs_le_abs - theorem abs_le_max_abs_abs - theorem abs_lt - theorem abs_max_sub_max_le_abs - theorem abs_nonpos_iff - theorem abs_one - theorem abs_pos_iff - theorem abs_sub_le_iff - theorem abs_sub_lt_iff - theorem fn_min_mul_fn_max - theorem lt_abs - theorem max_le_add_of_nonneg - theorem max_mul_mul_le_max_mul_max - theorem max_mul_of_nonneg - theorem max_sub_min_eq_abs' - theorem max_sub_min_eq_abs - theorem max_zero_sub_eq_self - theorem min_le_add_of_nonneg_left - theorem min_le_add_of_nonneg_right - theorem min_mul_max - theorem min_mul_of_nonneg - theorem min_sub - theorem mul_max_of_nonneg - theorem mul_min_of_nonneg - theorem sub_abs_le_abs_sub Modified src/algebra/ordered_field.lean + theorem max_div_div_right + theorem max_div_div_right_of_nonpos + theorem min_div_div_right + theorem min_div_div_right_of_nonpos Modified src/algebra/ordered_group.lean +/- theorem abs_abs + theorem abs_abs_sub_abs_le_abs_sub + theorem abs_add - theorem abs_add_le_abs_add_abs + theorem abs_eq + theorem abs_eq_zero + theorem abs_le' + theorem abs_le + theorem abs_le_abs + theorem abs_le_max_abs_abs - theorem abs_le_of_le_of_neg_le + theorem abs_lt - theorem abs_lt_of_lt_of_neg_lt + theorem abs_max_sub_max_le_abs +/- theorem abs_neg + theorem abs_nonpos_iff +/- theorem abs_of_neg +/- theorem abs_of_nonneg +/- theorem abs_of_nonpos +/- theorem abs_of_pos + theorem abs_pos - theorem abs_pos_of_ne_zero +/- theorem abs_pos_of_neg +/- theorem abs_pos_of_pos + theorem abs_sub_le_iff + theorem abs_sub_lt_iff +/- theorem abs_zero - theorem decidable_linear_ordered_add_comm_group.eq_of_abs_sub_nonpos + theorem eq_of_abs_sub_nonpos - theorem eq_zero_of_abs_eq_zero + theorem fn_min_mul_fn_max +/- theorem le_abs_self + theorem lt_abs - theorem max_eq_neg_min_neg_neg + theorem max_le_add_of_nonneg +/- theorem max_neg_neg + theorem max_sub_min_eq_abs' + theorem max_sub_min_eq_abs + theorem max_sub_sub_left + theorem max_sub_sub_right + theorem max_zero_sub_eq_self - theorem min_eq_neg_max_neg_neg + theorem min_le_add_of_nonneg_left + theorem min_le_add_of_nonneg_right + theorem min_mul_max +/- theorem min_neg_neg + theorem min_sub_sub_left + theorem min_sub_sub_right - theorem ne_zero_of_abs_ne_zero +/- theorem neg_le_abs_self Modified src/algebra/ordered_ring.lean - theorem abs_abs_sub_abs_le_abs_sub + def abs_hom + theorem abs_one + def linear_nonneg_ring.to_linear_order + def linear_nonneg_ring.to_linear_ordered_ring + theorem max_mul_mul_le_max_mul_max + theorem max_mul_of_nonneg + theorem min_mul_of_nonneg + theorem mul_max_of_nonneg + theorem mul_min_of_nonneg + def nonneg_ring.to_ordered_ring Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/pow.lean Modified src/data/int/basic.lean Modified src/data/real/hyperreal.lean Modified src/data/set/intervals/basic.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/l1_space.lean Modified src/tactic/monotonicity/basic.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2020-10-12 20:50:11 6ea6200 feat(tactic/rcases): rcases_many (#4569) This allows you to pattern match many variables at once, using the syntax `obtain ⟨a|b, c|d⟩ := ⟨x, y⟩`. This doesn't require any change to the front end documentation, as it is in some sense the obvious thing, but this doesn't break any existing uses because this could never work before (since the expected type of the tuple expression is not known). ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/rcases.lean Modified test/rcases.lean 2020-10-12 20:50:09 9bed456 feta(data/fin): induction principle on fin (n + 1) (#4546) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cases_succ' + def fin.induction + def fin.induction_on Modified src/data/matrix/notation.lean 2020-10-12 20:50:06 8ccfb0a chore(control/functor): linting (#4496) ESTIMATED CHANGES Modified src/control/functor.lean 2020-10-12 18:08:56 9713e96 chore(*): update to Lean 3.21.0c (#4578) The only real change is the removal of notation for `vector.cons`. ESTIMATED CHANGES Modified leanpkg.toml Modified src/computability/halting.lean Modified src/computability/primrec.lean Modified src/computability/tm_to_partrec.lean Modified src/computability/turing_machine.lean Modified src/data/bitvec/core.lean Modified src/data/num/bitwise.lean Modified src/data/sym.lean +/- theorem sym.cons_of_coe_eq Modified src/data/vector2.lean +/- theorem vector.cons_head +/- theorem vector.cons_tail +/- theorem vector.cons_val Modified src/group_theory/sylow.lean +/- theorem sylow.mem_fixed_points_mul_left_cosets_iff_mem_normalizer Modified src/number_theory/sum_four_squares.lean Modified src/topology/list.lean 2020-10-12 18:08:53 6816b83 feat(archive/100-theorems-list/70_perfect_numbers): Direction 1 of the Perfect Number Theorem (#4544) Proves Euclid's half of the Euclid-Euler Theorem that if `2 ^ (k + 1) - 1` is prime, then `2 ^ k * (2 ^ (k + 1) - 1)` is an (even) perfect number. ESTIMATED CHANGES Added archive/100-theorems-list/70_perfect_numbers.lean + theorem nat.even_two_pow_mul_mersenne_of_prime + theorem nat.ne_zero_of_prime_mersenne + theorem nat.perfect_two_pow_mul_mersenne_of_prime + theorem nat.sigma_two_pow_eq_mersenne_succ + theorem odd_mersenne_succ Modified src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.sigma_one_apply Modified src/number_theory/divisors.lean + theorem nat.divisors_prime + theorem nat.divisors_prime_pow + theorem nat.mem_divisors_prime_pow +/- def nat.perfect +/- theorem nat.perfect_iff_sum_divisors_eq_two_mul +/- theorem nat.perfect_iff_sum_proper_divisors + theorem nat.prod_divisors_prime + theorem nat.prod_divisors_prime_pow + theorem nat.sum_divisors_prime + theorem nat.sum_divisors_prime_pow Modified src/number_theory/lucas_lehmer.lean + theorem succ_mersenne 2020-10-12 17:14:21 9379050 chore(data/hash_map): linting (#4498) ESTIMATED CHANGES Modified src/data/hash_map.lean 2020-10-12 14:57:35 266895f fix(algebra/ordered_group): use `add_neg` in autogenerated lemma name (#4580) Explicitly add `sub_le_sub_iff` with `a - b`. ESTIMATED CHANGES Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_group.lean +/- theorem div_le_div_iff' + theorem sub_le_sub_iff 2020-10-12 14:57:33 b3ce883 feat(algebra/*_power): simplify `(-a)^(bit0 _)` and `(-a)^(bit1 _)` (#4573) Works for `pow` and `fpow`. Also simplify powers of `I : ℂ`. ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem neg_fpow_bit0 + theorem neg_fpow_bit1 Modified src/algebra/group_power/basic.lean + theorem bit0_nsmul' + theorem bit1_nsmul' + theorem neg_pow_bit0 + theorem neg_pow_bit1 + theorem pow_bit0' + theorem pow_bit1' Modified src/algebra/group_power/lemmas.lean Modified src/algebra/group_with_zero_power.lean + theorem fpow_add' + theorem fpow_bit0' + theorem fpow_bit0 + theorem fpow_bit1' + theorem fpow_bit1 Modified src/data/complex/basic.lean + theorem complex.I_fpow_bit0 + theorem complex.I_fpow_bit1 + theorem complex.I_pow_bit0 + theorem complex.I_pow_bit1 Modified src/data/int/basic.lean + theorem int.bit0_ne_bit1 + theorem int.bit1_ne_bit0 + theorem int.bit1_ne_zero + theorem int.bodd_bit0 + theorem int.bodd_bit1 +/- theorem int.bodd_two 2020-10-12 14:57:31 38e9ed3 feat(archive/imo): IMO 2020 Q2 (#4565) Add a proof of IMO 2020 Q2 (directly following one of the official solutions; there are many very similar approaches possible). In support of this solution, add `geom_mean_le_arith_mean4_weighted` to `analysis.mean_inequalities`, for both `real` and `nnreal`, analogous to the versions for two and three numbers (and also add `geom_mean_le_arith_mean3_weighted` for `real` as it was only present for `nnreal`). ESTIMATED CHANGES Added archive/imo/imo2020_q2.lean + theorem imo2020_q2 Modified src/analysis/mean_inequalities.lean + theorem nnreal.geom_mean_le_arith_mean4_weighted + theorem real.geom_mean_le_arith_mean3_weighted + theorem real.geom_mean_le_arith_mean4_weighted 2020-10-12 14:57:28 5022425 feat(algebra/free_algebra): Add an inductive principle (#4335) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean + theorem free_algebra.induction 2020-10-12 14:57:26 3d1f16a feat(analysis/normed_space/multilinear): define `mk_pi_algebra` (#4316) I'm going to use this definition for converting `(mv_)power_series` to `formal_multilinear_series`. ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.mk_pi_algebra_apply + theorem continuous_multilinear_map.mk_pi_algebra_fin_apply + theorem continuous_multilinear_map.mk_pi_field_apply_one_eq_self - theorem continuous_multilinear_map.mk_pi_ring_apply_one_eq_self + theorem continuous_multilinear_map.norm_mk_pi_algebra + theorem continuous_multilinear_map.norm_mk_pi_algebra_fin + theorem continuous_multilinear_map.norm_mk_pi_algebra_fin_le_of_pos + theorem continuous_multilinear_map.norm_mk_pi_algebra_fin_succ_le + theorem continuous_multilinear_map.norm_mk_pi_algebra_fin_zero + theorem continuous_multilinear_map.norm_mk_pi_algebra_le + theorem continuous_multilinear_map.norm_mk_pi_algebra_of_empty Modified src/linear_algebra/multilinear.lean + theorem linear_map.coe_comp_multilinear_map +/- def linear_map.comp_multilinear_map + theorem linear_map.comp_multilinear_map_apply + theorem multilinear_map.mk_pi_algebra_apply + theorem multilinear_map.mk_pi_algebra_fin_apply + theorem multilinear_map.mk_pi_algebra_fin_apply_const + def multilinear_map.smul_right + theorem multilinear_map.smul_right_apply Modified src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.to_multilinear_map_inj 2020-10-12 12:21:50 1362701 refactor(field_theory): Adjoin intermediate field (#4468) Refactor adjoin to be an intermediate field rather than a subalgebra. ESTIMATED CHANGES Modified src/field_theory/adjoin.lean - theorem field.adjoin.algebra_map_mem - theorem field.adjoin.mono - theorem field.adjoin.range_algebra_map_subset - def field.adjoin - theorem field.adjoin_adjoin_comm - theorem field.adjoin_adjoin_left - theorem field.adjoin_contains_field_as_subfield - theorem field.adjoin_dim_eq_one_iff - theorem field.adjoin_dim_eq_one_of_sub_bot - theorem field.adjoin_eq_bot - theorem field.adjoin_eq_bot_iff - theorem field.adjoin_eq_range_algebra_map_adjoin - theorem field.adjoin_findim_eq_one_iff - theorem field.adjoin_one - theorem field.adjoin_simple.algebra_map_gen - def field.adjoin_simple.gen - theorem field.adjoin_simple_adjoin_simple - theorem field.adjoin_simple_comm - theorem field.adjoin_simple_dim_eq_one_iff - theorem field.adjoin_simple_dim_eq_one_of_mem_bot - theorem field.adjoin_simple_eq_bot - theorem field.adjoin_simple_eq_bot_iff - theorem field.adjoin_simple_findim_eq_one_iff - theorem field.adjoin_subset_adjoin_iff - theorem field.adjoin_subset_iff - theorem field.adjoin_subset_subfield - theorem field.adjoin_zero - theorem field.bot_eq_top_of_dim_adjoin_eq_one - theorem field.bot_eq_top_of_findim_adjoin_eq_one - theorem field.bot_eq_top_of_findim_adjoin_le_one - theorem field.mem_adjoin_simple_self - theorem field.mem_bot_of_adjoin_simple_dim_eq_one - theorem field.mem_bot_of_adjoin_simple_sub_bot - theorem field.sub_bot_of_adjoin_dim_eq_one - theorem field.sub_bot_of_adjoin_sub_bot - theorem field.subfield_subset_adjoin_self - theorem field.subset_adjoin - theorem field.subset_adjoin_of_subset_left - theorem field.subset_adjoin_of_subset_right + theorem intermediate_field.adjoin.algebra_map_mem + theorem intermediate_field.adjoin.mono + theorem intermediate_field.adjoin.range_algebra_map_subset + def intermediate_field.adjoin + theorem intermediate_field.adjoin_adjoin_comm + theorem intermediate_field.adjoin_adjoin_left + theorem intermediate_field.adjoin_contains_field_as_subfield + theorem intermediate_field.adjoin_eq_bot_iff + theorem intermediate_field.adjoin_eq_range_algebra_map_adjoin + theorem intermediate_field.adjoin_induction + theorem intermediate_field.adjoin_int + theorem intermediate_field.adjoin_le_algebra_adjoin + theorem intermediate_field.adjoin_le_iff + theorem intermediate_field.adjoin_le_subfield + theorem intermediate_field.adjoin_map + theorem intermediate_field.adjoin_nat + theorem intermediate_field.adjoin_one + theorem intermediate_field.adjoin_simple.algebra_map_gen + def intermediate_field.adjoin_simple.gen + theorem intermediate_field.adjoin_simple_adjoin_simple + theorem intermediate_field.adjoin_simple_comm + theorem intermediate_field.adjoin_simple_eq_bot_iff + theorem intermediate_field.adjoin_subset_adjoin_iff + theorem intermediate_field.adjoin_zero + theorem intermediate_field.algebra_adjoin_le_adjoin + theorem intermediate_field.bot_eq_top_of_dim_adjoin_eq_one + theorem intermediate_field.bot_eq_top_of_findim_adjoin_eq_one + theorem intermediate_field.bot_eq_top_of_findim_adjoin_le_one + theorem intermediate_field.bot_to_subalgebra + theorem intermediate_field.coe_bot_eq_self + theorem intermediate_field.coe_top_eq_top + theorem intermediate_field.dim_adjoin_eq_one_iff + theorem intermediate_field.dim_adjoin_simple_eq_one_iff + theorem intermediate_field.dim_intermediate_field_eq_dim_subalgebra + theorem intermediate_field.findim_adjoin_eq_one_iff + theorem intermediate_field.findim_adjoin_simple_eq_one_iff + theorem intermediate_field.findim_intermediate_field_eq_findim_subalgebra + theorem intermediate_field.gc + def intermediate_field.gi + theorem intermediate_field.induction_on_adjoin + theorem intermediate_field.mem_adjoin_simple_self + theorem intermediate_field.mem_bot + theorem intermediate_field.mem_top + theorem intermediate_field.subset_adjoin + theorem intermediate_field.subset_adjoin_of_subset_left + theorem intermediate_field.subset_adjoin_of_subset_right + theorem intermediate_field.subsingleton_of_dim_adjoin_eq_one + theorem intermediate_field.subsingleton_of_findim_adjoin_eq_one + theorem intermediate_field.subsingleton_of_findim_adjoin_le_one + theorem intermediate_field.to_subalgebra_eq_iff + theorem intermediate_field.top_to_subalgebra Modified src/field_theory/intermediate_field.lean + def intermediate_field.lift1 + def intermediate_field.lift2 + theorem intermediate_field.mem_lift2 +/- theorem intermediate_field.pow_mem Modified src/field_theory/primitive_element.lean - theorem field.exists_primitive_element_aux - theorem field.exists_primitive_element_inf Modified src/field_theory/subfield.lean Modified src/order/bounded_lattice.lean + theorem eq_bot_of_bot_eq_top + theorem eq_top_of_bot_eq_top + theorem subsingleton_of_bot_eq_top 2020-10-12 10:16:23 8fa9125 feat(data/polynomial/degree/erase_lead): definition and basic lemmas (#4527) erase_lead serves as the reduction step in an induction, breaking off one monomial from a polynomial. It is used in a later PR to prove that reverse is a multiplicative monoid map on polynomials. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.pred_card_le_card_erase + theorem finset.subset_of_eq Modified src/data/finsupp/basic.lean + theorem finsupp.card_support_eq_one' + theorem finsupp.card_support_eq_one + theorem finsupp.card_support_eq_zero + theorem finsupp.eq_single_iff + theorem finsupp.erase_zero + theorem finsupp.support_eq_singleton' + theorem finsupp.support_eq_singleton Modified src/data/polynomial/basic.lean + theorem polynomial.X_pow_eq_monomial - theorem polynomial.monomial_eq_X_pow Modified src/data/polynomial/degree.lean + theorem polynomial.C_mul_X_pow_eq_self + theorem polynomial.monomial_nat_degree_leading_coeff_eq_self Modified src/data/polynomial/degree/basic.lean + theorem polynomial.leading_coeff_monomial' + theorem polynomial.nat_degree_monomial Added src/data/polynomial/erase_lead.lean + def polynomial.erase_lead + theorem polynomial.erase_lead_C + theorem polynomial.erase_lead_C_mul_X_pow + theorem polynomial.erase_lead_X + theorem polynomial.erase_lead_X_pow + theorem polynomial.erase_lead_add_C_mul_X_pow + theorem polynomial.erase_lead_add_monomial_nat_degree_leading_coeff + theorem polynomial.erase_lead_coeff + theorem polynomial.erase_lead_coeff_nat_degree + theorem polynomial.erase_lead_coeff_of_ne + theorem polynomial.erase_lead_degree_le + theorem polynomial.erase_lead_monomial + theorem polynomial.erase_lead_nat_degree_le + theorem polynomial.erase_lead_nat_degree_lt + theorem polynomial.erase_lead_ne_zero + theorem polynomial.erase_lead_support + theorem polynomial.erase_lead_support_card_lt + theorem polynomial.erase_lead_zero + theorem polynomial.nat_degree_not_mem_erase_lead_support + theorem polynomial.ne_nat_degree_of_mem_erase_lead_support + theorem polynomial.self_sub_C_mul_X_pow + theorem polynomial.self_sub_monomial_nat_degree_leading_coeff 2020-10-12 08:30:01 0bfc68f feat(ring_theory/witt_vector/structure_polynomial): witt_structure_int_prop (#4466) This is the 3rd PR in a series on a fundamental theorem about Witt polynomials. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/ring_theory/witt_vector/structure_polynomial.lean + theorem eq_witt_structure_int + theorem witt_structure_int_exists_unique + theorem witt_structure_int_prop + theorem witt_structure_int_rename + theorem witt_structure_prop 2020-10-12 06:33:28 b953717 feat(set_theory/cardinal): cardinality of powerset (#4576) adds a lemma for cardinality of powerset ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.mk_set 2020-10-12 01:08:24 81b8123 chore(scripts): update nolints.txt (#4575) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-11 21:16:36 665cc13 chore(topology/algebra/group): review (#4570) * Ensure that we don't use `[topological_group G]` when it suffices to ask for, e.g., `[has_continuous_mul G]`. * Introduce `[has_continuous_sub]`, add an instance for `nnreal`. ESTIMATED CHANGES Modified src/analysis/convex/topology.lean Modified src/measure_theory/borel_space.lean Modified src/topology/algebra/group.lean +/- theorem continuous.inv +/- theorem continuous.sub - theorem continuous_at.inv + theorem continuous_at_inv - theorem continuous_inv +/- theorem continuous_on.inv +/- theorem continuous_on.sub +/- theorem continuous_on_inv - theorem continuous_sub +/- theorem continuous_within_at.inv + theorem continuous_within_at.sub + theorem continuous_within_at_inv +/- theorem exists_nhds_split_inv +/- theorem filter.tendsto.inv +/- theorem filter.tendsto.sub +/- theorem is_closed_map_mul_left +/- theorem is_closed_map_mul_right + theorem is_open.mul_left + theorem is_open.mul_right +/- theorem is_open_map_mul_left +/- theorem is_open_map_mul_right - theorem is_open_mul_left - theorem is_open_mul_right +/- theorem nhds_one_symm +/- theorem nhds_translation +/- theorem nhds_translation_mul_inv +/- theorem tendsto_inv Modified src/topology/instances/nnreal.lean - theorem nnreal.continuous.sub - theorem nnreal.continuous_sub 2020-10-11 20:09:45 952a407 feat(data/nat/digits): add norm_digits tactic (#4452) This adds a basic tactic for normalizing expressions of the form `nat.digits a b = l`. As requested on Zulip: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/simplifying.20nat.2Edigits/near/212152395 ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem nat.digits_def' + theorem nat.digits_zero_succ' + theorem nat.norm_digits.digits_one + theorem nat.norm_digits.digits_succ Added test/norm_digits.lean 2020-10-11 20:09:43 b1ca33e feat(analysis/calculus/times_cont_diff, analysis/calculus/inverse): smooth inverse function theorem (#4407) The inverse function theorem, in the C^k and smooth categories. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at.of_local_homeomorph Modified src/analysis/calculus/inverse.lean + theorem times_cont_diff_at.image_mem_to_local_homeomorph_target + def times_cont_diff_at.local_inverse + theorem times_cont_diff_at.local_inverse_apply_image + theorem times_cont_diff_at.mem_to_local_homeomorph_source + def times_cont_diff_at.to_local_homeomorph + theorem times_cont_diff_at.to_local_homeomorph_coe + theorem times_cont_diff_at.to_local_inverse Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_at.has_strict_fderiv_at' + theorem times_cont_diff_at.of_local_homeomorph + theorem times_cont_diff_at_zero + theorem times_cont_diff_within_at_zero 2020-10-11 18:49:02 b48b4ff feat(analysis/normed_space/inner_product): Cauchy-Schwarz equality case and other lemmas (#4571) ESTIMATED CHANGES Modified src/analysis/normed_space/inner_product.lean + theorem abs_inner_div_norm_mul_norm_eq_one_iff + theorem abs_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul + theorem abs_inner_eq_norm_iff +/- def euclidean_space + theorem norm_add_square_eq_norm_square_add_norm_square_of_inner_eq_zero + theorem submodule.bot_orthogonal_eq_top + theorem submodule.eq_top_iff_orthogonal_eq_bot + theorem submodule.is_compl_orthogonal_of_is_complete - theorem submodule.is_compl_orthogonal_of_is_complete_real + theorem submodule.top_orthogonal_eq_bot Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.norm_eq_abs Modified src/geometry/euclidean/basic.lean 2020-10-11 18:49:00 0f085b9 chore(linear_algebra/finite_dimensional): rename `of_finite_basis` (#4562) * rename `of_finite_basis` to `of_fintype_basis`; * add new `of_finite_basis` assuming that the domain the basis is a `finite` set; * allow `s : finset ι` and any function `s → V` in `of_finset_basis`. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/field_theory/tower.lean Modified src/linear_algebra/finite_dimensional.lean +/- theorem finite_dimensional.of_finite_basis +/- theorem finite_dimensional.of_finset_basis + theorem finite_dimensional.of_fintype_basis 2020-10-11 16:27:35 14dcfe0 chore(*): assorted lemmas (#4566) Non-bc changes: * make some lemmas use `coe` instead of `subtype.val`; * make the arguments of `range_comp` explicit, reorder them. ESTIMATED CHANGES Modified src/data/dfinsupp.lean Modified src/data/equiv/basic.lean +/- def equiv.option_equiv_sum_punit + theorem equiv.option_equiv_sum_punit_symm_inl + theorem equiv.option_equiv_sum_punit_symm_inr Modified src/data/finset/basic.lean + theorem finset.subtype_eq_empty Modified src/data/finsupp/basic.lean +/- theorem finsupp.emb_domain_apply + theorem finsupp.emb_domain_eq_zero +/- theorem finsupp.emb_domain_inj + theorem finsupp.emb_domain_injective +/- theorem finsupp.emb_domain_zero + theorem finsupp.subtype_domain_eq_zero_iff' + theorem finsupp.subtype_domain_eq_zero_iff +/- theorem finsupp.support_emb_domain + theorem finsupp.unique_ext + theorem finsupp.unique_ext_iff Modified src/data/option/basic.lean + theorem option.cases_on'_coe + theorem option.cases_on'_none + theorem option.cases_on'_none_coe + theorem option.cases_on'_some Modified src/data/set/basic.lean - theorem function.surjective.range_eq + theorem set.is_compl_range_inl_range_inr + theorem set.pair_comm +/- theorem set.range_comp Modified src/data/set/function.lean Modified src/data/set/lattice.lean + theorem set.subset_Inter_iff Modified src/data/sum.lean + theorem sum.injective_inl + theorem sum.injective_inr Modified src/logic/nontrivial.lean + theorem not_subsingleton Modified src/measure_theory/simple_func_dense.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-10-11 16:27:33 918e5d8 chore(data/finsupp): replace `eq_zero_of_zero_eq_one` with `finsupp.unique_of_right` (#4563) Also add a lemma `semimodule.subsingleton`: if `R` is a subsingleton semiring, then any semimodule over `R` is a subsingleton. ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem is_unit_of_subsingleton Modified src/algebra/group_with_zero.lean + theorem subsingleton_iff_zero_eq_one - theorem subsingleton_of_zero_eq_one Modified src/algebra/module/basic.lean + theorem semimodule.subsingleton Modified src/data/finsupp/basic.lean Modified src/linear_algebra/linear_independent.lean + theorem linear_independent_of_subsingleton - theorem linear_independent_of_zero_eq_one 2020-10-11 15:12:38 33f7870 chore(measure_theory/measurable_space): add `finset.is_measurable_bUnion` etc (#4553) I always forget how to convert `finset` or `set.finite` to `set.countable. Also `finset.is_measurable_bUnion` uses `finset`'s `has_mem`, not coercion to `set`. Also replace `tendsto_at_top_supr_nat` etc with slightly more general versions using a `[semilattice_sup β] [nonempty β]` instead of `nat`. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean Modified src/measure_theory/measurable_space.lean + theorem finset.is_measurable_bInter + theorem finset.is_measurable_bUnion + theorem set.finite.is_measurable_bInter + theorem set.finite.is_measurable_bUnion + theorem set.finite.is_measurable_sInter + theorem set.finite.is_measurable_sUnion Modified src/measure_theory/measure_space.lean Modified src/topology/algebra/ordered.lean +/- theorem supr_eq_of_tendsto + theorem tendsto_at_top_cinfi + theorem tendsto_at_top_infi - theorem tendsto_at_top_infi_nat - theorem tendsto_at_top_supr_nat 2020-10-11 12:30:22 99130d8 chore(algebra/monoid_algebra): Reorder lemmas, name some sections for clarity (#4535) This also reduces the scope of `local attribute [reducible] add_monoid_algebra` to the sections which actually need it. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean 2020-10-11 10:42:23 0487a1d chore(algebra/algebra/basic): fix definition of `ring_hom.to_algebra` (#4561) The new definition uses `to_ring_hom := i` instead of `.. i` to get defeq `algebra_map R S = i`, and adds it as a lemma. ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean + theorem ring_hom.algebra_map_to_algebra 2020-10-11 04:06:05 2c53e5e chore(order/well_founded): move to a file (#4568) I want to use `order/rel_classes` before `data/set/basic`. ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified src/data/fintype/basic.lean Modified src/order/lattice.lean + theorem lt_sup_iff Modified src/order/pilex.lean Modified src/order/rel_classes.lean - theorem well_founded.eq_iff_not_lt_of_le - theorem well_founded.has_min - theorem well_founded.min_mem - theorem well_founded.not_lt_min - theorem well_founded.well_founded_iff_has_max' - theorem well_founded.well_founded_iff_has_min' - theorem well_founded.well_founded_iff_has_min Added src/order/well_founded.lean + theorem well_founded.eq_iff_not_lt_of_le + theorem well_founded.has_min + theorem well_founded.min_mem + theorem well_founded.not_lt_min + theorem well_founded.well_founded_iff_has_max' + theorem well_founded.well_founded_iff_has_min' + theorem well_founded.well_founded_iff_has_min 2020-10-11 03:06:27 4dbebe3 chore(scripts): update nolints.txt (#4564) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt 2020-10-11 01:02:23 d8d6e18 feat(data/finset/basic): equivalence of finsets from equivalence of types (#4560) Broken off from #4259. Given an equivalence `α` to `β`, produce an equivalence between `finset α` and `finset β`, and simp lemmas about it. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem equiv.finset_congr_apply + theorem equiv.finset_congr_symm_apply 2020-10-10 23:06:12 df5adc5 chore(topology/*): golf some proofs (#4528) * move `exists_nhds_split` to `topology/algebra/monoid`, rename to `exists_nhds_one_split`; * add a version `exists_open_nhds_one_split`; * move `exists_nhds_split4` to `topology/algebra/monoid`, rename to `exists_nhds_one_split4`; * move `one_open_separated_mul` to `topology/algebra/monoid`, rename to `exists_open_nhds_one_mul_subset`; * add `mem_prod_nhds_iff`; * golf some proofs. ESTIMATED CHANGES Modified src/topology/algebra/group.lean - theorem exists_nhds_split4 - theorem exists_nhds_split - theorem one_open_separated_mul Modified src/topology/algebra/monoid.lean + theorem exists_nhds_one_split4 + theorem exists_nhds_one_split + theorem exists_open_nhds_one_mul_subset + theorem exists_open_nhds_one_split Modified src/topology/algebra/uniform_group.lean Modified src/topology/constructions.lean +/- theorem exists_nhds_square + theorem filter.has_basis.prod_nhds + theorem mem_nhds_prod_iff 2020-10-10 20:25:23 c726898 feat(data/equiv/basic): equivalence on functions from bool (#4559) An equivalence of functions from bool and pairs, together with some simp lemmas about it. Broken off from #4259. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.bool_to_equiv_prod + theorem equiv.bool_to_equiv_prod_apply + theorem equiv.bool_to_equiv_prod_symm_apply_ff + theorem equiv.bool_to_equiv_prod_symm_apply_tt 2020-10-10 18:28:05 f91e0c6 feat(data/finset/pi): pi singleton lemmas (#4558) Broken off from #4259. Two lemmas to reduce `finset.pi` on singletons. ESTIMATED CHANGES Modified src/data/finset/pi.lean + theorem finset.pi_const_singleton + theorem finset.pi_singletons 2020-10-10 15:18:44 c8738cb feat(topology/uniform_space/cauchy): generalize `second_countable_of_separable` to uniform spaces (#4530) Also generalize `is_countably_generated.has_antimono_basis` to `is_countably_generated.exists_antimono_subbasis` and add a few lemmas about bases of the uniformity filter. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean + theorem filter.has_basis.property_index + theorem filter.has_basis.set_index_mem + theorem filter.has_basis.set_index_subset + theorem filter.is_countably_generated.exists_antimono_basis - theorem filter.is_countably_generated.exists_antimono_seq + theorem filter.is_countably_generated.exists_antimono_subbasis - theorem filter.is_countably_generated.has_antimono_basis +/- theorem filter.is_countably_generated.inf +/- theorem filter.is_countably_generated.inf_principal +/- theorem filter.is_countably_generated_iff_exists_antimono_basis Modified src/topology/bases.lean + theorem topological_space.exists_countable_dense Modified src/topology/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/sequences.lean Modified src/topology/uniform_space/basic.lean +/- theorem nhds_eq_uniformity + theorem uniform_space.is_open_ball + theorem uniform_space.mem_ball_self + theorem uniformity_has_basis_open + theorem uniformity_has_basis_open_symmetric Modified src/topology/uniform_space/cauchy.lean + theorem uniform_space.second_countable_of_separable Modified src/topology/uniform_space/completion.lean 2020-10-10 09:40:05 6676917 feat(analysis/special_functions/*): a few more simp lemmas (#4550) Add more lemmas for simplifying inequalities with `exp`, `log`, and `rpow`. Lemmas that generate more than one inequality are not marked as `simp`. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean Modified src/analysis/special_functions/exp_log.lean +/- theorem real.log_nonneg + theorem real.log_nonneg_iff + theorem real.log_nonpos_iff' + theorem real.log_nonpos_iff Modified src/analysis/special_functions/pow.lean +/- theorem real.one_le_rpow_of_pos_of_le_one_of_nonpos + theorem real.one_lt_rpow_iff + theorem real.one_lt_rpow_iff_of_pos +/- theorem real.one_lt_rpow_of_pos_of_lt_one_of_neg + theorem real.rpow_le_one_iff_of_pos + theorem real.rpow_lt_one_iff + theorem real.rpow_lt_one_iff_of_pos Modified src/data/complex/exponential.lean + theorem real.exp_le_one_iff +/- theorem real.exp_lt_one_iff + theorem real.one_le_exp_iff +/- theorem real.one_lt_exp_iff 2020-10-10 01:04:50 b084a06 chore(scripts): update nolints.txt (#4556) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-10-09 19:22:53 40b55c0 feat(measure_theory): additions (#4324) Many additional lemmas. Notable addition: sequential limits of measurable functions into a metric space are measurable. Rename `integral_map_measure` -> `integral_map` (to be consistent with the version for `lintegral`) Fix the precedence of all notations for integrals. From now on `∫ x, abs ∥f x∥ ∂μ` will be parsed correctly (previously it gave a parse error). Some cleanup (moving lemmas, and some nicer presentation by opening locales and namespaces). ESTIMATED CHANGES Modified src/data/indicator_function.lean + theorem set.indicator_comp_right + theorem set.indicator_prod_one Modified src/data/set/finite.lean + theorem set.Union_Inter_of_monotone Modified src/data/set/lattice.lean + theorem set.Union_Inter_subset + theorem set.Union_inter_of_monotone + theorem set.Union_inter_subset Modified src/logic/basic.lean + theorem ite_and Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.ennnorm_integral_le_lintegral_ennnorm + theorem measure_theory.integral_add' + theorem measure_theory.integral_map - theorem measure_theory.integral_map_measure + theorem measure_theory.integral_neg' + theorem measure_theory.integral_sub' + theorem measure_theory.integral_to_real + theorem measure_theory.integral_zero' + theorem measure_theory.lintegral_coe_eq_integral + theorem measure_theory.simple_func.integral_eq_sum_of_subset Modified src/measure_theory/borel_space.lean +/- theorem ennreal.measurable_coe +/- theorem measurable.ennreal_coe + theorem measurable.inf_nndist +/- theorem measurable.nnnorm +/- theorem measurable.nnreal_coe +/- theorem measurable.norm +/- theorem measurable.sub_nnreal +/- theorem measurable_dist +/- theorem measurable_edist +/- theorem measurable_ennreal_coe_iff +/- def measurable_equiv.ennreal_equiv_nnreal + theorem measurable_inf_nndist + theorem measurable_liminf' + theorem measurable_liminf + theorem measurable_limsup' + theorem measurable_limsup +/- theorem measurable_nndist +/- theorem measurable_nnnorm + theorem measurable_of_tendsto_metric' + theorem measurable_of_tendsto_metric + theorem measurable_of_tendsto_nnreal' + theorem measurable_of_tendsto_nnreal +/- theorem nnreal.measurable_coe Modified src/measure_theory/integration.lean + theorem measure_theory.ae_lt_top + theorem measure_theory.lintegral_comp + theorem measure_theory.lintegral_mul_const' + theorem measure_theory.lintegral_mul_const + theorem measure_theory.lintegral_mul_const_le Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable_smul_const + theorem measure_theory.l1.norm_eq_lintegral + theorem measure_theory.l1.norm_sub_eq_lintegral + theorem measure_theory.l1.of_real_norm_eq_lintegral + theorem measure_theory.l1.of_real_norm_sub_eq_lintegral Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.dirac_ae_eq +/- theorem measure_theory.measure.le_iff' +/- theorem measure_theory.measure.le_iff +/- theorem measure_theory.measure.lt_iff' +/- theorem measure_theory.measure.lt_iff + theorem measure_theory.measure.sum_cond +/- theorem measure_theory.measure.to_outer_measure_le + theorem measure_theory.measure_Union_null_iff + theorem measure_theory.measure_if + theorem measure_theory.measure_union_null_iff Modified src/measure_theory/set_integral.lean + theorem integral_smul_const Modified src/measure_theory/simple_func_dense.lean +/- theorem measure_theory.simple_func.integrable_approx_on +/- theorem measure_theory.simple_func.integrable_approx_on_univ + theorem measure_theory.simple_func.norm_approx_on_zero_le +/- theorem measure_theory.simple_func.tendsto_approx_on_l1_edist +/- theorem measure_theory.simple_func.tendsto_approx_on_univ_l1 +/- theorem measure_theory.simple_func.tendsto_approx_on_univ_l1_edist 2020-10-09 18:15:49 d533e1c feat(ring_theory/power_series): inverse lemmas (#4552) Broken off from #4259. ESTIMATED CHANGES Modified src/ring_theory/power_series.lean + theorem power_series.eq_inv_iff_mul_eq_one + theorem power_series.eq_mul_inv_iff_mul_eq + theorem power_series.inv_eq_iff_mul_eq_one 2020-10-09 15:44:20 b167809 feat(topology/basic): Lim_spec etc. cleanup (#4545) Fixes #4543 See [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/More.20point.20set.20topology.20questions/near/212757136) ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean Modified src/topology/basic.lean - theorem Lim_spec + theorem le_nhds_Lim - theorem lim_spec + theorem tendsto_nhds_lim Modified src/topology/extend_from_subset.lean Modified src/topology/separation.lean + theorem Lim_eq_iff + theorem filter.lim_eq_iff +/- theorem filter.tendsto.lim_eq + theorem is_ultrafilter.Lim_eq_iff_le_nhds Modified src/topology/subset_properties.lean + theorem is_ultrafilter.le_nhds_Lim Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-10-09 13:16:06 fcaf6e9 feat(meta/expr): add parser for generated binder names (#4540) During elaboration, Lean generates a name for anonymous Π binders. This commit adds a parser that recognises such names. ESTIMATED CHANGES Modified src/data/string/defs.lean + def string.is_nat Modified src/data/sum.lean Modified src/meta/expr.lean 2020-10-09 13:16:04 306dc8a chore(algebra/big_operators/basic): add lemma prod_multiset_count' that generalize prod_multiset_count to consider a function to a monoid (#4534) I have added `prod_multiset_count'` that is very similar to `prod_multiset_count` but takes into account a function `f : \a \r M` where `M` is a commutative monoid. The proof is essentially the same (I didn't try to prove it using `prod_multiset_count` because maybe we can remove it and just keep the more general version). ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_multiset_map_count 2020-10-09 11:06:01 656ef0a chore(topology/instances/nnreal): use notation (#4548) ESTIMATED CHANGES Modified src/topology/instances/nnreal.lean +/- theorem nnreal.coe_tsum +/- theorem nnreal.continuous.sub +/- theorem nnreal.continuous_coe +/- theorem nnreal.continuous_sub +/- theorem nnreal.has_sum_coe +/- theorem nnreal.sum_add_tsum_nat_add +/- theorem nnreal.summable_comp_injective +/- theorem nnreal.summable_nat_add +/- theorem nnreal.tendsto.sub +/- theorem nnreal.tendsto_coe 2020-10-09 11:05:59 d0f45f5 lint(various): nolint has_inhabited_instance for injective functions (#4541) `function.embedding`, `homeomorph`, `isometric` represent injective/bijective functions, so it's silly to expect them to be inhabited. ESTIMATED CHANGES Modified src/logic/embedding.lean Modified src/topology/homeomorph.lean Modified src/topology/metric_space/isometry.lean 2020-10-09 08:54:38 cc75e4e chore(data/nat/cast): a few `simp`/`norm_cast` lemmas (#4549) ESTIMATED CHANGES Modified src/data/nat/cast.lean +/- theorem nat.cast_le + theorem nat.cast_le_one + theorem nat.cast_lt_one +/- theorem nat.coe_nat_dvd + theorem nat.one_le_cast + theorem nat.one_lt_cast + theorem nat.strict_mono_cast 2020-10-09 01:44:31 f6836c1 chore(scripts): update nolints.txt (#4547) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/nolints.txt 2020-10-08 23:44:06 8004fb6 chore(topology/algebra/group): move a lemma to `group_theory/coset` (#4522) `quotient_group_saturate` didn't use any topology. Move it to `group_theory/coset` and rename to `quotient_group.preimage_image_coe`. Also rename `quotient_group.open_coe` to `quotient_group.is_open_map_coe` ESTIMATED CHANGES Modified src/group_theory/coset.lean + theorem quotient_group.preimage_image_coe Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.coe_gpow +/- theorem quotient_group.coe_inv +/- theorem quotient_group.coe_mul +/- theorem quotient_group.coe_one +/- theorem quotient_group.coe_pow Modified src/topology/algebra/group.lean + theorem quotient_group.is_open_map_coe - theorem quotient_group.open_coe - theorem quotient_group_saturate 2020-10-08 22:15:42 ce999a8 feat(topology/basic): add `is_open_iff_ultrafilter` (#4529) Requested on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F) by Adam Topaz ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean + theorem filter.le_iff_ultrafilter + theorem filter.mem_iff_ultrafilter Modified src/topology/basic.lean + theorem is_open_iff_ultrafilter 2020-10-08 18:04:05 a912455 fix(bors.toml, build.yml): check for new linter, rename linter to "Lint style" (#4539) ESTIMATED CHANGES Modified .github/workflows/build.yml Modified bors.toml 2020-10-08 15:41:18 73f119e refactor(category_theory/pairwise): change direction of morphisms in the category of pairwise intersections (#4537) Even though this makes some proofs slightly more awkward, this is the more natural definition. In a subsequent PR about another equivalent sheaf condition, it also makes proofs less awkward, too! ESTIMATED CHANGES Modified src/category_theory/category/pairwise.lean + def category_theory.pairwise.cocone + def category_theory.pairwise.cocone_is_colimit + def category_theory.pairwise.cocone_ι_app - def category_theory.pairwise.cone - def category_theory.pairwise.cone_is_limit - def category_theory.pairwise.cone_π_app +/- def category_theory.pairwise.diagram +/- def category_theory.pairwise.diagram_obj Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2020-10-08 15:41:16 0ae4a3d fix(update-copy-mod-doc-exceptions.sh): cleanup, sort properly (#4533) Followup to #4513. ESTIMATED CHANGES Modified scripts/update-copy-mod-doc-exceptions.sh 2020-10-08 15:41:14 427564e chore(algebra/monoid_algebra): Fix TODO about unwanted unfolding (#4532) For whatever reason, supplying `zero` and `add` explicitly makes the proofs work inline. This TODO was added by @johoelzl in f09abb1c47a846c33c0e996ffa9bf12951b40b15. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean 2020-10-08 15:41:12 0c18d96 chore(data/padics/*): linting + squeeze_simp speedup (#4531) ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean +/- def padic_seq 2020-10-08 15:41:08 60be8ed feat(data/equiv/*): to_monoid_hom_injective and to_ring_hom_injective (#4525) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem mul_equiv.to_monoid_hom_injective Modified src/data/equiv/ring.lean + theorem ring_equiv.to_ring_hom_injective 2020-10-08 15:41:06 253f225 lint(computability/halting): docstrings (#4524) Adds docstrings in `computability/halting.lean` ESTIMATED CHANGES Modified src/computability/halting.lean 2020-10-08 15:41:04 e74bd26 chore(*): add a few more `unique` instances (#4511) * `linear_map.unique_of_left`, `linear_map.unique_of_right`, `continuous_linear_map.unique_of_left`, `continuous_linear_map.unique_of_right`: if either `M` or `M₂` is a `subsingleton`, then both `M →ₗ[R] M₂` and `M →L[R] M₂` are `unique`; * `pi.unique`: if each `β a` is `unique`, then `Π a, β a` is `unique`; * rename `function.injective.comap_subsingleton` to `function.injective.subsingleton`; * add `unique.mk'` and `function.injective.unique`; * add a few `simp` lemmas for `default`; * drop `nonempty_unique_or_exists_ne` and `subsingleton_or_exists_ne`; * rename `linear_map.coe_inj` to `coe_injective` and `continuous_linear_map.coe_inj` to `coe_fn_injective`, make them use `function.injective`. Motivated by #4407 ESTIMATED CHANGES Modified src/algebra/category/Module/limits.lean Modified src/algebra/module/basic.lean - theorem linear_map.coe_inj + theorem linear_map.coe_injective +/- theorem linear_map.to_add_monoid_hom_injective Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/data/equiv/basic.lean Modified src/geometry/euclidean/basic.lean Modified src/linear_algebra/basic.lean + theorem linear_map.default_def Modified src/logic/unique.lean - theorem function.injective.comap_subsingleton - def function.surjective.unique - theorem nonempty_unique_or_exists_ne + theorem pi.default_apply + theorem pi.default_def - theorem subsingleton_or_exists_ne + def unique.mk' Modified src/ring_theory/derivation.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_fn_injective - theorem continuous_linear_map.coe_inj + theorem continuous_linear_map.default_def 2020-10-08 15:41:02 7b42c71 feat(archive/imo): revive @kbuzzard's imo2019_q1 (#4377) ESTIMATED CHANGES Added archive/imo/imo2019_q1.lean + theorem imo2019Q1 2020-10-08 15:40:59 9b0d30c feat(number_theory/arithmetic_function): define `is_multiplicative` on `arithmetic_function`s, provides examples (#4312) Provides a few basic examples of important arithmetic functions Defines what it means for an arithmetic function to be multiplicative ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.gcd_mul_gcd_of_coprime_of_mul_eq_mul Modified src/number_theory/arithmetic_function.lean +/- theorem nat.arithmetic_function.add_apply +/- theorem nat.arithmetic_function.coe_coe +/- theorem nat.arithmetic_function.coe_inj +/- theorem nat.arithmetic_function.ext +/- theorem nat.arithmetic_function.ext_iff + def nat.arithmetic_function.id + theorem nat.arithmetic_function.id_apply +/- theorem nat.arithmetic_function.int_coe_apply + theorem nat.arithmetic_function.is_multiplicative.int_cast + theorem nat.arithmetic_function.is_multiplicative.map_mul_of_coprime + theorem nat.arithmetic_function.is_multiplicative.map_one + theorem nat.arithmetic_function.is_multiplicative.mul + theorem nat.arithmetic_function.is_multiplicative.nat_cast + theorem nat.arithmetic_function.is_multiplicative.pmul + theorem nat.arithmetic_function.is_multiplicative.ppow + def nat.arithmetic_function.is_multiplicative + theorem nat.arithmetic_function.is_multiplicative_id + theorem nat.arithmetic_function.is_multiplicative_pow + theorem nat.arithmetic_function.is_multiplicative_sigma + theorem nat.arithmetic_function.is_multiplicative_zeta +/- theorem nat.arithmetic_function.map_zero +/- theorem nat.arithmetic_function.mul_apply + theorem nat.arithmetic_function.mul_zeta_apply +/- theorem nat.arithmetic_function.nat_coe_apply +/- theorem nat.arithmetic_function.one_apply_ne +/- theorem nat.arithmetic_function.one_one + def nat.arithmetic_function.pmul + theorem nat.arithmetic_function.pmul_apply + theorem nat.arithmetic_function.pmul_comm + theorem nat.arithmetic_function.pmul_zeta + def nat.arithmetic_function.pow + theorem nat.arithmetic_function.pow_apply + def nat.arithmetic_function.ppow + theorem nat.arithmetic_function.ppow_apply + theorem nat.arithmetic_function.ppow_succ' + theorem nat.arithmetic_function.ppow_succ + theorem nat.arithmetic_function.ppow_zero + def nat.arithmetic_function.sigma + theorem nat.arithmetic_function.sigma_apply +/- theorem nat.arithmetic_function.to_fun_eq +/- theorem nat.arithmetic_function.zero_apply + def nat.arithmetic_function.zeta + theorem nat.arithmetic_function.zeta_apply + theorem nat.arithmetic_function.zeta_apply_ne + theorem nat.arithmetic_function.zeta_mul_apply + theorem nat.arithmetic_function.zeta_mul_pow_eq_sigma + theorem nat.arithmetic_function.zeta_pmul +/- structure nat.arithmetic_function Modified src/number_theory/divisors.lean +/- def nat.divisors - theorem nat.divisors_eq_proper_divisors_insert_self + theorem nat.divisors_eq_proper_divisors_insert_self_of_pos +/- theorem nat.divisors_zero +/- def nat.proper_divisors 2020-10-08 13:27:56 5a01549 lint(multiset/pi): remove unused instance (#4526) Removes an unused instance from `multiset/pi` ESTIMATED CHANGES Modified src/data/finset/pi.lean Modified src/data/multiset/pi.lean +/- theorem multiset.pi.cons_ne 2020-10-08 13:27:54 48a3604 feat(logic/nontrivial): a tactic to summon nontrivial instances (#4374) ``` Given a goal `a = b` or `a ≤ b` in a type `α`, generates an additional hypothesis `nontrivial α` (as otherwise `α` is a subsingleton and the goal is trivial). Alternatively, given a hypothesis `a ≠ b` or `a < b` in a type `α`, tries to generate a `nontrivial α` hypothesis from existing hypotheses using `nontrivial_of_ne` and `nontrivial_of_lt`. ``` ESTIMATED CHANGES Modified src/linear_algebra/char_poly/coeff.lean - theorem char_poly_monic_of_nontrivial Modified src/logic/nontrivial.lean + theorem nontrivial_of_lt +/- theorem subsingleton_or_nontrivial Added test/nontriviality.lean 2020-10-08 10:23:23 43f52dd chore(algebra/char_zero): rename vars, add `with_top` instance (#4523) Motivated by #3135. * Use `R` as a `Type*` variable; * Add `add_monoid_hom.map_nat_cast` and `with_top.coe_add_hom`; * Drop versions of `char_zero_of_inj_zero`, use `[add_left_cancel_monoid R]` instead. ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/algebra/char_zero.lean - theorem add_group.char_zero_of_inj_zero +/- theorem add_halves' +/- theorem add_self_eq_zero +/- theorem bit0_eq_zero +/- theorem char_zero_of_inj_zero +/- theorem half_add_self +/- theorem half_sub +/- theorem nat.cast_add_one_ne_zero +/- theorem nat.cast_dvd_char_zero +/- theorem nat.cast_eq_zero +/- theorem nat.cast_inj +/- theorem nat.cast_injective +/- theorem nat.cast_ne_zero - theorem ordered_cancel_comm_monoid.char_zero_of_inj_zero +/- theorem sub_half +/- theorem two_ne_zero' Modified src/algebra/ordered_group.lean + def with_top.coe_add_hom + theorem with_top.coe_coe_add_hom Modified src/data/complex/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/nat/cast.lean +/- theorem add_monoid_hom.eq_nat_cast + theorem add_monoid_hom.map_nat_cast 2020-10-08 05:32:06 34a4471 chore(data/quot): `quot.mk` etc are surjective (#4517) ESTIMATED CHANGES Modified src/data/quot.lean +/- theorem quotient.lift_on_beta₂ + theorem quotient.surjective_quotient_mk' + theorem surjective_quot_mk + theorem surjective_quotient_mk 2020-10-08 05:32:04 4f75760 chore(*/hom,equiv): Split `monoid_hom` into more fundamental structures, and reuse them elsewhere (#4423) Notably this adds `add_hom` and `mul_hom`, which become base classes of `add_equiv`, `mul_equiv`, `linear_map`, and `linear_equiv`. Primarily to avoid breaking assumptions of field order in `monoid_hom` and `add_monoid_hom`, this also adds `one_hom` and `zero_hom`. A massive number of lemmas here are totally uninteresting and hold for pretty much all objects that define `coe_to_fun`. This PR translates all those lemmas, but doesn't bother attempting to generalize later ones. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + structure add_hom +/- structure add_monoid_hom +/- theorem monoid_hom.cancel_left +/- theorem monoid_hom.cancel_right +/- theorem monoid_hom.coe_inj +/- theorem monoid_hom.coe_mk +/- def monoid_hom.comp +/- theorem monoid_hom.comp_apply +/- theorem monoid_hom.comp_assoc +/- theorem monoid_hom.comp_id +/- theorem monoid_hom.congr_arg +/- theorem monoid_hom.congr_fun +/- theorem monoid_hom.ext +/- theorem monoid_hom.ext_iff +/- def monoid_hom.id +/- theorem monoid_hom.id_apply +/- theorem monoid_hom.id_comp +/- theorem monoid_hom.map_mul +/- theorem monoid_hom.map_one +/- theorem monoid_hom.one_apply +/- theorem monoid_hom.to_fun_eq_coe +/- structure monoid_hom + theorem mul_hom.cancel_left + theorem mul_hom.cancel_right + theorem mul_hom.coe_inj + theorem mul_hom.coe_mk + def mul_hom.comp + theorem mul_hom.comp_apply + theorem mul_hom.comp_assoc + theorem mul_hom.comp_id + theorem mul_hom.congr_arg + theorem mul_hom.congr_fun + theorem mul_hom.ext + theorem mul_hom.ext_iff + def mul_hom.id + theorem mul_hom.id_apply + theorem mul_hom.id_comp + theorem mul_hom.map_mul + theorem mul_hom.to_fun_eq_coe + structure mul_hom + theorem one_hom.cancel_left + theorem one_hom.cancel_right + theorem one_hom.coe_inj + theorem one_hom.coe_mk + def one_hom.comp + theorem one_hom.comp_apply + theorem one_hom.comp_assoc + theorem one_hom.comp_id + theorem one_hom.congr_arg + theorem one_hom.congr_fun + theorem one_hom.ext + theorem one_hom.ext_iff + def one_hom.id + theorem one_hom.id_apply + theorem one_hom.id_comp + theorem one_hom.map_one + theorem one_hom.one_apply + theorem one_hom.to_fun_eq_coe + structure one_hom + structure zero_hom Modified src/algebra/module/basic.lean Modified src/data/equiv/mul_add.lean +/- structure add_equiv +/- structure mul_equiv Modified src/linear_algebra/basic.lean - def linear_equiv.to_add_equiv + def linear_equiv.to_equiv 2020-10-08 04:37:20 b4dc912 ci(*): run style lint in parallel job, fix update-copy-mod-doc-exceptions.sh (#4513) Followup to #4486: - run the linter in a separate parallel job, per request - the update-*.sh script now correctly generates a full exceptions file - add some more comments to the shell scripts ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/copy-mod-doc-exceptions.txt Modified scripts/lint-copy-mod-doc.sh Modified scripts/update-copy-mod-doc-exceptions.sh 2020-10-08 04:37:18 3d1d4fb feat(data/polynomial/degree/trailing_degree): fixed formatting and streamlined a couple of proofs (#4509) ESTIMATED CHANGES Modified src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.nat_trailing_degree_eq_support_min' + theorem polynomial.nat_trailing_degree_le_of_mem_supp + theorem polynomial.nat_trailing_degree_mem_support_of_nonzero + theorem polynomial.trailing_coeff_eq_zero + theorem polynomial.trailing_coeff_nonzero_iff_nonzero 2020-10-08 03:44:56 7a71554 doc(tactic/slim_check): improve advice in error message (#4520) The error message in `slim_check` suggests to look for `testable` and it now specifies which namespace to find `testable` in. ESTIMATED CHANGES Modified src/tactic/slim_check.lean 2020-10-08 01:08:47 e9d1dc4 chore(scripts): update nolints.txt (#4521) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-10-07 23:27:32 a5b0376 chore(topology/algebra/monoid,group): rename variables (#4516) Use `M`, `N` for monoids, `G`, `H` for groups. ESTIMATED CHANGES Modified src/topology/algebra/group.lean +/- theorem add_group_with_zero_nhd.add_Z +/- theorem add_group_with_zero_nhd.exists_Z_half +/- theorem add_group_with_zero_nhd.neg_Z +/- theorem add_group_with_zero_nhd.nhds_eq +/- theorem add_group_with_zero_nhd.nhds_zero_eq_Z +/- theorem compact_covered_by_mul_left_translates +/- theorem compact_open_separated_mul +/- theorem continuous.inv +/- theorem continuous.sub +/- theorem continuous_at.inv +/- theorem continuous_inv +/- theorem continuous_on.inv +/- theorem continuous_on.sub +/- theorem continuous_on_inv +/- theorem continuous_sub +/- theorem continuous_within_at.inv +/- theorem exists_nhds_split4 +/- theorem exists_nhds_split +/- theorem exists_nhds_split_inv +/- theorem filter.tendsto.inv +/- theorem filter.tendsto.sub +/- theorem is_closed_map_mul_left +/- theorem is_closed_map_mul_right +/- theorem is_open_map_mul_left +/- theorem is_open_map_mul_right +/- theorem is_open_mul_left +/- theorem is_open_mul_right +/- theorem nhds_is_mul_hom +/- theorem nhds_mul +/- theorem nhds_one_symm +/- theorem nhds_translation +/- theorem nhds_translation_mul_inv +/- theorem one_open_separated_mul +/- theorem quotient_group.open_coe +/- theorem quotient_group_saturate +/- theorem tendsto_inv +/- theorem topological_group.regular_space +/- theorem topological_group.t1_space +/- theorem topological_group.t2_space Modified src/topology/algebra/monoid.lean +/- theorem continuous.mul +/- theorem continuous.pow +/- theorem continuous_at.mul +/- theorem continuous_finset_prod +/- theorem continuous_list_prod +/- theorem continuous_mul +/- theorem continuous_mul_left +/- theorem continuous_mul_right +/- theorem continuous_multiset_prod +/- theorem continuous_on.mul +/- theorem continuous_pow +/- theorem continuous_within_at.mul +/- theorem filter.tendsto.mul +/- theorem submonoid.mem_nhds_one +/- theorem tendsto_finset_prod +/- theorem tendsto_list_prod +/- theorem tendsto_mul +/- theorem tendsto_multiset_prod 2020-10-07 21:39:17 d67062f chore(algebra/pointwise): add `###` here and there (#4514) ESTIMATED CHANGES Modified src/algebra/pointwise.lean 2020-10-07 21:39:15 fa8b7ba chore(topology/*): use dot notation for `is_open.prod` and `is_closed.prod` (#4510) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/special_functions/pow.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/compact_open.lean Modified src/topology/constructions.lean + theorem is_closed.prod - theorem is_closed_prod + theorem is_open.prod - theorem is_open_prod Modified src/topology/instances/complex.lean Modified src/topology/instances/real.lean Modified src/topology/local_homeomorph.lean Modified src/topology/topological_fiber_bundle.lean Modified src/topology/uniform_space/compact_separated.lean 2020-10-07 20:25:40 2b89d59 chore(ring_theory/coprime): weaken assumptions of finset.prod_dvd_of_coprime (#4506) ESTIMATED CHANGES Modified src/ring_theory/coprime.lean +/- theorem finset.prod_dvd_of_coprime 2020-10-07 18:09:31 4635aee chore(algebra/continuous_functions): `coninuous` -> `continuous` (#4508) ESTIMATED CHANGES Modified src/topology/algebra/continuous_functions.lean 2020-10-07 18:09:28 4e8427e fix(data/list/defs): remove map_head; rename map_last to modify_last (#4507) `map_head` is removed in favour of the equivalent `modify_head`. `map_last` is renamed to `modify_last` for consistency with the other `modify_*` functions. ESTIMATED CHANGES Modified src/data/list/defs.lean - def list.map_head - def list.map_last + def list.modify_last 2020-10-07 18:09:25 a4a20ac doc(data/num/basic): added doc-strings to most defs (#4439) ESTIMATED CHANGES Modified src/data/num/basic.lean 2020-10-07 16:08:11 8f9c10f feat(data/matrix): add `matrix.mul_sub` and `matrix.sub_mul` (#4505) I was quite surprised that we didn't have this yet, but I guess they weren't needed when `sub_eq_add_neg` was still `@[simp]`. ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2020-10-07 16:08:08 2d34e94 chore(*big_operators*): line length (#4504) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_eq_fold +/- theorem finset.prod_subset +/- theorem ring_hom.map_prod Modified src/algebra/polynomial/big_operators.lean 2020-10-07 16:08:05 6b50fb9 fix(tactic/ring): use int_sub_hack to avoid defeq blowup (#4503) ESTIMATED CHANGES Modified src/tactic/ring.lean Modified test/ring.lean 2020-10-07 14:27:03 4db1c72 ci(scripts/*): linting for copyright, imports, module docstrings, line length (#4486) This PR adds some scripts to check the `.lean` files in `src/` and `archive/` for the following issues (which are out of scope for the current linter): - Malformed or missing copyright header - More than one file imported per line - Module docstring missing, or too late - Lines of length > 100 (unless they contain `http`) The scripts are run at the end of our "tests" job since the "lint" job usually takes longer to run. (This isn't a big deal though, since they're quick.) Current problems are saved in the file `scripts/copy-mod-doc-exceptions.txt` and ignored so that we don't have to fix everything up front. Over time, this should get shorter as we fix things! Separately, this also fixes some warnings in our GitHub actions workflow (see [this blog post](https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/)). ESTIMATED CHANGES Modified .github/workflows/build.yml Added scripts/copy-mod-doc-exceptions.txt Added scripts/lint-copy-mod-doc.py Added scripts/lint-copy-mod-doc.sh Added scripts/update-copy-mod-doc-exceptions.sh Modified scripts/update_nolints.sh 2020-10-07 14:26:58 c9d4567 lint(data/matrix/basic): add definition docstrings (#4478) ESTIMATED CHANGES Modified src/data/matrix/basic.lean 2020-10-07 10:12:05 6a85279 fix(tactic/doc_commands): do not construct json by hand (#4501) Fixes three lines going over the 100 character limit. The first one was a hand-rolled JSON serializer, I took the liberty to migrate it to the new `json` API. ESTIMATED CHANGES Modified src/tactic/doc_commands.lean 2020-10-07 10:12:04 0386ada chore(data/tree): linting (#4499) ESTIMATED CHANGES Modified src/data/tree.lean 2020-10-07 10:12:02 cbbc123 lint(category_theory/equivalence): docstring and a module doc (#4495) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean 2020-10-07 10:12:00 8a4b491 feat(ring_theory/witt_vector/structure_polynomial): {map_}witt_structure_int (#4465) This is the second PR in a series on a fundamental theorem about Witt polynomials. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/ring_theory/witt_vector/structure_polynomial.lean + theorem C_p_pow_dvd_bind₁_rename_witt_polynomial_sub_sum + theorem bind₁_rename_expand_witt_polynomial + theorem map_witt_structure_int + theorem witt_structure_rat_rec + theorem witt_structure_rat_rec_aux 2020-10-07 07:56:34 e5ce9d3 chore(data/quot): linting (#4500) ESTIMATED CHANGES Modified src/data/quot.lean 2020-10-07 07:56:32 ed9ef1b chore(*): normalise copyright headers (#4497) This diff makes sure that all files start with a copyright header of the following shape ``` /- Copyright ... ... Apache ... Author... -/ ``` Some files used to have a short description of the contents in the same comment block. Such comments have *not* been turned into module docstrings, but simply moved to a regular comment block below the copyright header. Turning these comments into good module docstrings is an effort that should be undertaken in future PRs. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/set/function.lean Modified src/measure_theory/category/Meas.lean Modified src/tactic/derive_fintype.lean Modified src/tactic/derive_inhabited.lean Modified src/tactic/interactive.lean Modified src/tactic/omega/clause.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/find_ees.lean Modified src/tactic/omega/find_scalars.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/lin_comb.lean Modified src/tactic/omega/main.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/dnf.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/omega/prove_unsats.lean Modified src/tactic/omega/term.lean 2020-10-07 06:23:11 3c75527 lint(group_theory/*): docstrings and an inhabited instance (#4493) An inhabited instance for `presented_group` Docstrings in `group_theory/abelianization` and `group_theory/congruence`. ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Modified src/group_theory/congruence.lean Modified src/group_theory/presented_group.lean 2020-10-07 04:25:17 8c528b9 lint(group_theory/perm/*): docstrings (#4492) Adds missing docstrings in `group_theory/perm/cycles` and `group_theory/perm/sign`. ESTIMATED CHANGES Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean 2020-10-07 01:06:50 cb3118d chore(scripts): update nolints.txt (#4490) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-10-07 01:06:47 2e77ef6 lint(order/lexographic, pilex): docstrings (#4489) Docstrings in `order/lexographic` and `order/pilex` ESTIMATED CHANGES Modified src/order/lexicographic.lean Modified src/order/pilex.lean 2020-10-07 01:06:45 afffab1 lint(order/order_iso_nat): docstrings (#4488) Adds docstrings to `rel_embedding.nat_lt` and `rel_embedding.nat_gt` ESTIMATED CHANGES Modified src/order/order_iso_nat.lean 2020-10-07 01:06:42 93cdc3a feat(control/traversable/basic): composition of applicative transformations (#4487) Added composition law for applicative transformations, added rest of interface for coercion of applicative transformations to functions (lifted from `monoid_hom`), and proved composition was associative and has an identity. Also corrected some documentation. ESTIMATED CHANGES Modified src/control/traversable/basic.lean + theorem applicative_transformation.app_eq_coe + theorem applicative_transformation.coe_inj + theorem applicative_transformation.coe_mk + def applicative_transformation.comp + theorem applicative_transformation.comp_apply + theorem applicative_transformation.comp_assoc + theorem applicative_transformation.comp_id + theorem applicative_transformation.congr_arg + theorem applicative_transformation.congr_fun + theorem applicative_transformation.ext + theorem applicative_transformation.ext_iff + theorem applicative_transformation.id_comp + theorem applicative_transformation.preserves_map' 2020-10-07 01:06:41 fe8b631 lint(ring_theory/*): docstrings (#4485) Docstrings in `ring_theory/ideal/operations`, `ring_theory/multiplicity`, and `ring_theory/ring_invo`. ESTIMATED CHANGES Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/ring_invo.lean 2020-10-06 22:45:54 7488f8e lint(order/bounded_lattice): docstring (#4484) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean 2020-10-06 22:45:52 f4ccbdf feat(data/nat/basic): add_succ_lt_add (#4483) Add the lemma that, for natural numbers, if `a < b` and `c < d` then `a + c + 1 < b + d` (i.e. a stronger version of `add_lt_add` for the natural number case). `library_search` did not find this in mathlib. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.add_succ_lt_add 2020-10-06 22:45:50 f88234d feat(measure_theory): integral of a non-negative function is >0 iff μ(support f) > 0 (#4410) Also add a few supporting lemmas ESTIMATED CHANGES Modified src/algebra/order.lean + theorem has_le.le.le_iff_eq + theorem has_le.le.lt_iff_ne Modified src/data/indicator_function.lean + theorem set.indicator_of_support_subset + theorem set.indicator_support Modified src/data/support.lean + theorem function.support_eq_empty_iff Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_eq_zero_iff_of_nonneg + theorem measure_theory.integral_eq_zero_iff_of_nonneg_ae + theorem measure_theory.integral_pos_iff_support_of_nonneg + theorem measure_theory.integral_pos_iff_support_of_nonneg_ae Modified src/measure_theory/integration.lean +/- theorem measure_theory.lintegral_eq_zero_iff + theorem measure_theory.lintegral_pos_iff_support Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_eq_integral_of_support_subset + theorem interval_integral.integral_eq_zero_iff_of_le_of_nonneg_ae + theorem interval_integral.integral_eq_zero_iff_of_nonneg_ae + theorem interval_integral.integral_non_measurable + theorem interval_integral.integral_pos_iff_support_of_nonneg_ae' + theorem interval_integral.integral_pos_iff_support_of_nonneg_ae + theorem interval_integral.integral_zero + theorem measure_theory.integrable.interval_integrable Modified src/measure_theory/lebesgue_measure.lean + theorem filter.eventually.volume_pos_of_nhds_real Modified src/measure_theory/set_integral.lean + theorem continuous.integrable_of_compact_closure_support + theorem measure_theory.set_integral_eq_zero_iff_of_nonneg_ae + theorem measure_theory.set_integral_pos_iff_support_of_nonneg_ae Modified src/order/filter/basic.lean + theorem filter.eventually_le.le_iff_eq Modified src/topology/algebra/ordered.lean + theorem filter.eventually.exists_Ioo_subset Modified src/topology/basic.lean + theorem is_open.eventually_mem 2020-10-06 21:23:34 5192fd9 feat(data/polynomial/degree/basic): add lemmas dealing with monomials, their support and their nat_degrees (#4475) ESTIMATED CHANGES Modified src/data/polynomial/degree/basic.lean + theorem polynomial.card_support_C_mul_X_pow_le_one + theorem polynomial.le_degree_of_mem_supp + theorem polynomial.le_nat_degree_of_mem_supp + theorem polynomial.mem_support_C_mul_X_pow + theorem polynomial.nat_degree_C_mul_X_pow + theorem polynomial.nat_degree_C_mul_X_pow_le + theorem polynomial.nat_degree_C_mul_X_pow_of_nonzero + theorem polynomial.nat_degree_eq_support_max' + theorem polynomial.nat_degree_mem_support_of_nonzero + theorem polynomial.nonempty_support_iff + theorem polynomial.support_C_mul_X_pow + theorem polynomial.support_C_mul_X_pow_nonzero 2020-10-06 21:23:32 d768e46 feat(ring_theory/witt_vector/structure_polynomial): witt_structure_rat{_prop} (#4464) This is the first PR in a series on a fundamental theorem for Witt polynomials. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Added src/ring_theory/witt_vector/structure_polynomial.lean + theorem witt_structure_rat_exists_unique + theorem witt_structure_rat_prop 2020-10-06 19:36:49 7948b5a chore(*): fix authorship for split files (#4480) A few files with missing copyright headers in #4477 came from splitting up older files, so the attribution was incorrect: - `data/setoid/partition.lean` was split from `data/setoid.lean` in #2853. - `data/finset/order.lean` was split from `algebra/big_operators.lean` in #3495. - `group_theory/submonoid/operations.lean` was split from `group_theory/submonoid.lean` in #3058. ESTIMATED CHANGES Modified src/data/finset/order.lean Modified src/data/setoid/partition.lean Modified src/group_theory/submonoid/operations.lean 2020-10-06 17:40:04 ac05889 chore(topology/list): one import per line (#4479) This one seems to have slipped through previous efforts ESTIMATED CHANGES Modified src/topology/list.lean 2020-10-06 15:23:11 e559ca9 chore(*): add copyright headers (#4477) ESTIMATED CHANGES Modified src/category_theory/category/pairwise.lean Modified src/category_theory/limits/punit.lean Modified src/data/finset/order.lean Modified src/data/list/indexes.lean Modified src/data/setoid/partition.lean Modified src/group_theory/submonoid/operations.lean Modified src/topology/sheaves/sheaf_condition/pairwise_intersections.lean 2020-10-06 15:23:09 7416127 feat(data/polynomial/ring_division): add multiplicity of sum of polynomials is at least minimum of multiplicities (#4442) I've added the lemma `root_multiplicity_add` inside `data/polynomial/ring_division` that says that the multiplicity of a root in a sum of two polynomials is at least the minimum of the multiplicities. ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean + theorem min_pow_dvd_add Modified src/data/polynomial/ring_division.lean + theorem polynomial.root_multiplicity_X_sub_C_pow + theorem polynomial.root_multiplicity_add + theorem polynomial.root_multiplicity_of_dvd 2020-10-06 12:41:50 8d19939 feat(*): make `int.le` irreducible (#4474) There's very rarely a reason to unfold `int.le` and it can create trouble: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/deep.20recursion.20was.20detected.20at.20'replace' ESTIMATED CHANGES Modified src/algebra/field_power.lean Modified src/algebra/gcd_monoid.lean Modified src/data/int/basic.lean Modified src/data/int/range.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/number_theory/pythagorean_triples.lean Modified src/tactic/linarith/preprocessing.lean Modified src/tactic/omega/eq_elim.lean 2020-10-06 12:41:47 99e308d chore(parity): even and odd in semiring (#4473) Replaces the ad-hoc `nat.even`, `nat.odd`, `int.even` and `int.odd` by definitions that make sense in semirings and get that `odd` can be `rintros`/`rcases`'ed. This requires almost no change except that `even` is not longer usable as a dot notation (which I see as a feature since I find `even n` to be more readable than `n.even`). ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + def even + theorem even_iff_two_dvd + def odd Modified src/analysis/convex/specific_functions.lean +/- theorem convex_on_pow_of_even +/- theorem int_prod_range_nonneg Modified src/analysis/mean_inequalities.lean Modified src/data/int/parity.lean - def int.even +/- theorem int.even_add +/- theorem int.even_bit0 +/- theorem int.even_coe_nat +/- theorem int.even_iff +/- theorem int.even_mul +/- theorem int.even_neg +/- theorem int.even_pow +/- theorem int.even_sub +/- theorem int.even_zero +/- theorem int.mod_two_ne_one +/- theorem int.mod_two_ne_zero +/- theorem int.not_even_bit1 +/- theorem int.not_even_one - def int.odd - theorem int.odd_def + theorem int.odd_iff + theorem int.odd_iff_not_even +/- theorem int.two_dvd_ne_zero Modified src/data/nat/parity.lean +/- theorem nat.even.add +/- theorem nat.even.sub - def nat.even +/- theorem nat.even_add +/- theorem nat.even_bit0 +/- theorem nat.even_iff +/- theorem nat.even_mul +/- theorem nat.even_pow +/- theorem nat.even_sub +/- theorem nat.even_succ +/- theorem nat.mod_two_ne_one +/- theorem nat.mod_two_ne_zero +/- theorem nat.not_even_bit1 - def nat.odd - theorem nat.odd_def + theorem nat.odd_iff + theorem nat.odd_iff_not_even Modified src/number_theory/sum_four_squares.lean 2020-10-06 12:41:45 1d1a041 chore(data/mv_polynomial/basic): coeff_mul, more golfing and speedup (#4472) ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean + theorem mul_eq_zero_of_ne_zero_imp_eq_zero Modified src/data/mv_polynomial/basic.lean 2020-10-06 12:41:43 8cebd2b chore(algebra/algebra): Split subalgebras into their own file (#4471) This matches how `subring` and `submonoid` both have their own files. This also remove `noncomputable theory` which is unnecessary for almost all the definitions ESTIMATED CHANGES Modified src/algebra/algebra/basic.lean - def alg_equiv.of_bijective - def alg_hom.cod_restrict - theorem alg_hom.coe_range - theorem alg_hom.injective_cod_restrict - theorem alg_hom.mem_range - def algebra.adjoin - theorem algebra.bijective_algebra_map_iff - def algebra.bot_equiv - def algebra.bot_equiv_of_injective - theorem algebra.coe_bot - theorem algebra.coe_top - theorem algebra.comap_top - theorem algebra.eq_top_iff - theorem algebra.map_bot - theorem algebra.map_top - theorem algebra.mem_bot - theorem algebra.mem_top - theorem algebra.surjective_algebra_map_iff - def algebra.to_top - theorem mem_subalgebra_of_is_subring - theorem mem_subalgebra_of_subring - theorem mem_subalgebra_of_subsemiring - theorem subalgebra.add_mem - theorem subalgebra.algebra_map_mem - theorem subalgebra.coe_int_mem - theorem subalgebra.coe_nat_mem - theorem subalgebra.coe_val - def subalgebra.comap' - def subalgebra.comap - theorem subalgebra.ext - theorem subalgebra.ext_iff - theorem subalgebra.gsmul_mem - theorem subalgebra.list_prod_mem - theorem subalgebra.list_sum_mem - def subalgebra.map - theorem subalgebra.map_injective - theorem subalgebra.map_le - theorem subalgebra.map_mono - theorem subalgebra.mem_coe - theorem subalgebra.mem_map - theorem subalgebra.mem_to_submodule - theorem subalgebra.mul_mem - theorem subalgebra.multiset_prod_mem - theorem subalgebra.multiset_sum_mem - theorem subalgebra.neg_mem - theorem subalgebra.nsmul_mem - theorem subalgebra.one_mem - theorem subalgebra.pow_mem - theorem subalgebra.prod_mem - theorem subalgebra.range_le - theorem subalgebra.range_subset - theorem subalgebra.range_val - theorem subalgebra.smul_mem - theorem subalgebra.srange_le - theorem subalgebra.sub_mem - theorem subalgebra.sum_mem - def subalgebra.to_submodule - theorem subalgebra.to_submodule_inj - theorem subalgebra.to_submodule_injective - def subalgebra.to_subring - def subalgebra.under - def subalgebra.val - theorem subalgebra.val_apply - theorem subalgebra.zero_mem - structure subalgebra - def subalgebra_of_is_subring - def subalgebra_of_subring - def subalgebra_of_subsemiring Added src/algebra/algebra/subalgebra.lean + def alg_hom.cod_restrict + theorem alg_hom.coe_range + theorem alg_hom.injective_cod_restrict + theorem alg_hom.mem_range + def algebra.adjoin + theorem algebra.bijective_algebra_map_iff + theorem algebra.coe_bot + theorem algebra.coe_top + theorem algebra.comap_top + theorem algebra.eq_top_iff + theorem algebra.map_bot + theorem algebra.map_top + theorem algebra.mem_bot + theorem algebra.mem_top + theorem algebra.surjective_algebra_map_iff + def algebra.to_top + theorem mem_subalgebra_of_is_subring + theorem mem_subalgebra_of_subring + theorem mem_subalgebra_of_subsemiring + theorem subalgebra.add_mem + theorem subalgebra.algebra_map_mem + theorem subalgebra.coe_int_mem + theorem subalgebra.coe_nat_mem + theorem subalgebra.coe_val + def subalgebra.comap' + def subalgebra.comap + theorem subalgebra.ext + theorem subalgebra.ext_iff + theorem subalgebra.gsmul_mem + theorem subalgebra.list_prod_mem + theorem subalgebra.list_sum_mem + def subalgebra.map + theorem subalgebra.map_injective + theorem subalgebra.map_le + theorem subalgebra.map_mono + theorem subalgebra.mem_coe + theorem subalgebra.mem_map + theorem subalgebra.mem_to_submodule + theorem subalgebra.mul_mem + theorem subalgebra.multiset_prod_mem + theorem subalgebra.multiset_sum_mem + theorem subalgebra.neg_mem + theorem subalgebra.nsmul_mem + theorem subalgebra.one_mem + theorem subalgebra.pow_mem + theorem subalgebra.prod_mem + theorem subalgebra.range_le + theorem subalgebra.range_subset + theorem subalgebra.range_val + theorem subalgebra.smul_mem + theorem subalgebra.srange_le + theorem subalgebra.sub_mem + theorem subalgebra.sum_mem + def subalgebra.to_submodule + theorem subalgebra.to_submodule_inj + theorem subalgebra.to_submodule_injective + def subalgebra.to_subring + def subalgebra.under + def subalgebra.val + theorem subalgebra.val_apply + theorem subalgebra.zero_mem + structure subalgebra + def subalgebra_of_is_subring + def subalgebra_of_subring + def subalgebra_of_subsemiring Modified src/algebra/category/Algebra/basic.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/ring_theory/adjoin.lean 2020-10-06 12:41:42 94bc31d lint(logic/unique): module doc, docstring (#4461) ESTIMATED CHANGES Modified src/logic/unique.lean 2020-10-06 12:41:40 2fc6598 lint(group_theory/eckmann_hilton): docs, module docs, unused argument (#4459) ESTIMATED CHANGES Modified src/group_theory/eckmann_hilton.lean +/- def eckmann_hilton.comm_group 2020-10-06 12:41:38 f4207aa feat(data/*): lemmas about lists and finsets (#4457) A part of #4316 ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean +/- theorem finset.prod_mk Modified src/data/fintype/basic.lean + theorem fin.univ_def + theorem finset.univ_eq_empty +/- theorem finset.univ_nonempty + theorem finset.univ_nonempty_iff Modified src/data/fintype/card.lean + theorem fin.prod_of_fn + theorem fin.prod_univ_def Modified src/data/list/basic.lean + theorem list.attach_eq_nil + theorem list.pmap_eq_nil + theorem list.prod_update_nth Modified src/data/list/nodup.lean + theorem list.nodup.map_update Modified src/data/list/of_fn.lean + theorem list.of_fn_const +/- theorem list.of_fn_succ +/- theorem list.of_fn_zero Modified src/data/list/range.lean + theorem list.fin_range_eq_nil + theorem list.fin_range_zero + theorem list.of_fn_eq_map + theorem list.of_fn_id + theorem list.range'_eq_nil + theorem list.range_eq_nil Modified src/data/multiset/basic.lean 2020-10-06 12:41:36 1fa07c2 chore(category_theory/monoidal): add module docs (#4454) ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean 2020-10-06 12:41:33 4d9406e feat(geometry/euclidean/monge_point): orthocentric systems (#4448) Define orthocentric systems of points, and prove some basic properties of them. In particular, if we say that an orthocentric system consists of four points, one of which is the orthocenter of the triangle formed by the other three, then each of the points is the orthocenter of the triangle formed by the other three, and all four triangles have the same circumradius. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.cospherical.affine_independent Modified src/geometry/euclidean/monge_point.lean + theorem euclidean_geometry.affine_span_of_orthocentric_system + theorem euclidean_geometry.exists_dist_eq_circumradius_of_subset_insert_orthocenter + theorem euclidean_geometry.exists_of_range_subset_orthocentric_system + theorem euclidean_geometry.orthocentric_system.affine_independent + theorem euclidean_geometry.orthocentric_system.eq_insert_orthocenter + theorem euclidean_geometry.orthocentric_system.exists_circumradius_eq + def euclidean_geometry.orthocentric_system 2020-10-06 10:22:31 e9b43b6 lint(data/equiv/ring): docstrings, inhabited (#4460) ESTIMATED CHANGES Modified src/data/equiv/ring.lean 2020-10-06 10:22:29 58a54d3 chore(category_theory/*): doc-strings (#4453) ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/monoidal/functor.lean 2020-10-06 10:22:27 6b59725 chore(control/traversable/{basic,equiv,instances,lemmas}): linting (#4444) The `nolint`s in `instances.lean` are there because all the arguments need to be there for `is_lawful_traversable`. In the same file, I moved `traverse_map` because it does not need the `is_lawful_applicative` instances. ESTIMATED CHANGES Modified src/control/traversable/basic.lean + def applicative_transformation.id_transformation Modified src/control/traversable/equiv.lean Modified src/control/traversable/instances.lean Modified src/control/traversable/lemmas.lean 2020-10-06 10:22:25 372d294 feat(data/finsupp): lift a collection of `add_monoid_hom`s to an `add_monoid_hom` on `α →₀ β` (#4395) ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem linear_map.to_add_monoid_hom_injective Modified src/data/finsupp/basic.lean + theorem finsupp.add_closure_Union_range_single + theorem finsupp.add_hom_ext +/- theorem finsupp.hom_ext + def finsupp.lift_add_hom + theorem finsupp.lift_add_hom_apply + theorem finsupp.lift_add_hom_single_add_hom + theorem finsupp.lift_add_hom_symm_apply + theorem finsupp.prod_of_support_subset +/- theorem finsupp.prod_single_index + def finsupp.single_add_hom 2020-10-06 09:02:45 b1d3ef9 chore(data/mv_polynomial/basic): speedup coeff_mul (#4469) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean 2020-10-06 09:02:43 c08a868 feat(trailing_degree): added two lemmas support_X, support_X_empty computing the support of X, simplified a couple of lemmas (#4294) ESTIMATED CHANGES Modified src/data/polynomial/basic.lean + theorem polynomial.monomial_eq_X_pow + theorem polynomial.support_X + theorem polynomial.support_X_empty + theorem polynomial.support_X_pow + theorem polynomial.support_monomial' + theorem polynomial.support_monomial Modified src/data/polynomial/coeff.lean + theorem polynomial.C_mul_X_pow_eq_monomial - theorem polynomial.monomial_eq_smul_X - theorem polynomial.monomial_one_eq_X_pow + theorem polynomial.support_C_mul_X_pow' + theorem polynomial.support_mul_X_pow Modified src/data/polynomial/degree/trailing_degree.lean +/- theorem polynomial.trailing_degree_lt_wf Modified src/data/polynomial/monomial.lean + theorem polynomial.monomial_eq_smul_X + theorem polynomial.monomial_one_eq_X_pow 2020-10-06 09:02:41 fc7e943 feat(normed_space/basic): remove localized notation (#4246) Remove notation for `tendsto` in `nhds`. Also make `is_bounded_linear_map.tendsto` protected. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem lim_norm +/- theorem lim_norm_zero Modified src/analysis/normed_space/bounded_linear_maps.lean - theorem is_bounded_linear_map.tendsto 2020-10-06 07:07:40 32b5b68 chore(topology/compacts): inhabit instances (#4462) ESTIMATED CHANGES Modified src/topology/compacts.lean 2020-10-06 07:07:38 d3b1d65 lint(measure_theory): docstrings and style (#4455) ESTIMATED CHANGES Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/probability_mass_function.lean +/- def pmf.bernoulli +/- theorem pmf.bind_apply +/- def pmf.of_fintype +/- def pmf.pure +/- def pmf.seq +/- theorem pmf.tsum_coe +/- def {u} 2020-10-06 02:54:28 523bddb doc(data/nat/prime, data/int/basic, data/int/modeq): docstrings (#4445) Filling in docstrings on `data/nat/prime`, `data/int/basic`, `data/int/modeq`. ESTIMATED CHANGES Modified src/data/int/basic.lean Modified src/data/int/modeq.lean Modified src/data/nat/prime.lean 2020-10-06 02:54:26 cd78599 lint(category_theory/monad): doc-strings (#4428) ESTIMATED CHANGES Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean 2020-10-06 02:04:28 a228af6 chore(scripts): update nolints.txt (#4456) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-10-06 00:55:20 27b6c23 lint(category_theory/limits): docstrings and inhabited instances (#4435) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves/basic.lean Modified src/category_theory/limits/shapes/products.lean 2020-10-06 00:09:52 37879aa feat(undergrad): minimal polynomial (#4308) Adds minimal polynomial of endomorphisms to the undergrad list, although its use will be hard to guess for undergrads. ESTIMATED CHANGES Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/field_theory/minimal_polynomial.lean Modified src/linear_algebra/eigenspace.lean 2020-10-05 23:18:37 432da5f feat(measure_theory/integration): add lintegral_with_density_eq_lintegral_mul (#4350) This is Exercise 1.2.1 from Terence Tao's "An Epsilon of Room" ESTIMATED CHANGES Modified docs/references.bib Modified src/measure_theory/integration.lean +/- theorem measure_theory.lintegral_add +/- theorem measure_theory.lintegral_add_measure +/- theorem measure_theory.lintegral_const_mul +/- theorem measure_theory.lintegral_smul_measure +/- theorem measure_theory.lintegral_sum_measure + theorem measure_theory.lintegral_with_density_eq_lintegral_mul +/- theorem measure_theory.with_density_apply 2020-10-05 22:01:48 97c444e lint(topology/algebra): docstrings (#4446) ESTIMATED CHANGES Modified src/topology/algebra/group.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean 2020-10-05 19:45:24 21158c4 lint(data/pnat): Docstrings and an unused argument in `pnat.basic`, `pnat.factors` (#4443) Adds docstrings Changes `div_exact` from having one unused input of type `k | m` to `div_exact m k`. ESTIMATED CHANGES Modified src/data/pnat/basic.lean +/- def pnat.div_exact +/- theorem pnat.mul_div_exact Modified src/data/pnat/factors.lean 2020-10-05 19:45:21 45347f9 lint(src/order/rel_iso): docstrings and inhabited (#4441) ESTIMATED CHANGES Modified src/order/rel_iso.lean 2020-10-05 19:45:19 2127165 chore(linear_algebra/basis): split off `linear_independent.lean` (#4440) The file `basis.lean` was getting rather long (1500 lines), so I decided to split it into two not as long files at a natural point: everything using `linear_independent` but not `basis` can go into a new file `linear_independent.lean`. As a result, we can import `basis.lean` a bit later in the `ring_theory` hierarchy. ESTIMATED CHANGES Modified src/linear_algebra/basis.lean - theorem disjoint_span_singleton - theorem eq_of_linear_independent_of_span_subtype - theorem exists_finite_card_le_of_finite_of_linear_independent_of_span - theorem exists_linear_independent - theorem exists_of_linear_independent_of_finite_span - theorem le_of_span_le_span - theorem linear_dependent_iff - theorem linear_independent.comp - theorem linear_independent.image' - theorem linear_independent.image - theorem linear_independent.image_subtype - theorem linear_independent.injective - theorem linear_independent.inl_union_inr - theorem linear_independent.insert - theorem linear_independent.mono - theorem linear_independent.ne_zero - theorem linear_independent.of_subtype_range - def linear_independent.repr - theorem linear_independent.repr_eq - theorem linear_independent.repr_eq_single - theorem linear_independent.repr_ker - theorem linear_independent.repr_range - theorem linear_independent.restrict_of_comp_subtype - theorem linear_independent.to_subtype_range - theorem linear_independent.total_comp_repr - def linear_independent.total_equiv - theorem linear_independent.total_repr - theorem linear_independent.union - theorem linear_independent.unique - def linear_independent - theorem linear_independent_Union_finite - theorem linear_independent_Union_finite_subtype - theorem linear_independent_Union_of_directed - theorem linear_independent_bUnion_of_directed - theorem linear_independent_comp_subtype - theorem linear_independent_comp_subtype_disjoint - theorem linear_independent_empty - theorem linear_independent_empty_type - theorem linear_independent_equiv' - theorem linear_independent_equiv - theorem linear_independent_iff'' - theorem linear_independent_iff' - theorem linear_independent_iff - theorem linear_independent_iff_not_mem_span - theorem linear_independent_iff_not_smul_mem_span - theorem linear_independent_iff_total_on - theorem linear_independent_image - theorem linear_independent_inl_union_inr' - theorem linear_independent_insert' - theorem linear_independent_insert - theorem linear_independent_monoid_hom - theorem linear_independent_of_comp - theorem linear_independent_of_finite - theorem linear_independent_of_zero_eq_one - theorem linear_independent_sUnion_of_directed - theorem linear_independent_singleton - theorem linear_independent_span - theorem linear_independent_subtype - theorem linear_independent_subtype_disjoint - theorem linear_independent_unique - theorem mem_span_insert_exchange - theorem span_le_span_iff - theorem surjective_of_linear_independent_of_span Added src/linear_algebra/linear_independent.lean + theorem disjoint_span_singleton + theorem eq_of_linear_independent_of_span_subtype + theorem exists_finite_card_le_of_finite_of_linear_independent_of_span + theorem exists_linear_independent + theorem exists_of_linear_independent_of_finite_span + theorem le_of_span_le_span + theorem linear_dependent_iff + theorem linear_independent.comp + theorem linear_independent.image' + theorem linear_independent.image + theorem linear_independent.image_subtype + theorem linear_independent.injective + theorem linear_independent.inl_union_inr + theorem linear_independent.insert + theorem linear_independent.mono + theorem linear_independent.ne_zero + theorem linear_independent.of_subtype_range + def linear_independent.repr + theorem linear_independent.repr_eq + theorem linear_independent.repr_eq_single + theorem linear_independent.repr_ker + theorem linear_independent.repr_range + theorem linear_independent.restrict_of_comp_subtype + theorem linear_independent.to_subtype_range + theorem linear_independent.total_comp_repr + def linear_independent.total_equiv + theorem linear_independent.total_repr + theorem linear_independent.union + theorem linear_independent.unique + def linear_independent + theorem linear_independent_Union_finite + theorem linear_independent_Union_finite_subtype + theorem linear_independent_Union_of_directed + theorem linear_independent_bUnion_of_directed + theorem linear_independent_comp_subtype + theorem linear_independent_comp_subtype_disjoint + theorem linear_independent_empty + theorem linear_independent_empty_type + theorem linear_independent_equiv' + theorem linear_independent_equiv + theorem linear_independent_iff'' + theorem linear_independent_iff' + theorem linear_independent_iff + theorem linear_independent_iff_not_mem_span + theorem linear_independent_iff_not_smul_mem_span + theorem linear_independent_iff_total_on + theorem linear_independent_image + theorem linear_independent_inl_union_inr' + theorem linear_independent_insert' + theorem linear_independent_insert + theorem linear_independent_monoid_hom + theorem linear_independent_of_comp + theorem linear_independent_of_finite + theorem linear_independent_of_zero_eq_one + theorem linear_independent_sUnion_of_directed + theorem linear_independent_singleton + theorem linear_independent_span + theorem linear_independent_subtype + theorem linear_independent_subtype_disjoint + theorem linear_independent_unique + theorem mem_span_insert_exchange + theorem span_le_span_iff + theorem surjective_of_linear_independent_of_span Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/noetherian.lean 2020-10-05 19:45:18 88c76ab feat(order/filter/ultrafilter): Add variant of `exists_ultrafilter`. (#4436) The lemma `exists_ultrafilter` tells us that any proper filter can be extended to an ultrafilter (using Zorn's lemma). This PR adds a variant, called `exists_ultrafilter_of_finite_inter_nonempty` which says that any collection of sets `S` can be extended to an ultrafilter whenever it satisfies the property that the intersection of any finite subcollection `T` is nonempty. ESTIMATED CHANGES Modified src/order/filter/ultrafilter.lean + theorem filter.exists_ultrafilter_of_finite_inter_nonempty 2020-10-05 19:45:15 9151532 lint(order/conditionally_complete_lattice): docstrings (#4434) ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean 2020-10-05 19:45:13 221ec60 feat(ring_theory/ideal): ideals in product rings (#4431) ESTIMATED CHANGES Modified src/algebra/group/prod.lean + theorem mul_equiv.coe_prod_comm + theorem mul_equiv.coe_prod_comm_symm + def mul_equiv.prod_comm Modified src/algebra/ring/prod.lean + theorem ring_equiv.coe_coe_prod_comm + theorem ring_equiv.coe_coe_prod_comm_symm + theorem ring_equiv.coe_prod_comm + theorem ring_equiv.coe_prod_comm_symm + theorem ring_equiv.fst_comp_coe_prod_comm + def ring_equiv.prod_comm + theorem ring_equiv.snd_comp_coe_prod_comm Modified src/algebraic_geometry/prime_spectrum.lean + theorem prime_spectrum.prime_spectrum_prod_symm_inl_as_ideal + theorem prime_spectrum.prime_spectrum_prod_symm_inr_as_ideal Modified src/ring_theory/ideal/operations.lean + theorem ideal.map_is_prime_of_equiv + theorem ring_hom.ker_coe_equiv Added src/ring_theory/ideal/prod.lean + theorem ideal.ideal_prod_eq + def ideal.ideal_prod_equiv + theorem ideal.ideal_prod_equiv_symm_apply + theorem ideal.ideal_prod_prime + theorem ideal.ideal_prod_prime_aux + theorem ideal.is_prime_ideal_prod_top' + theorem ideal.is_prime_ideal_prod_top + theorem ideal.is_prime_of_is_prime_prod_top' + theorem ideal.is_prime_of_is_prime_prod_top + theorem ideal.map_fst_prod + theorem ideal.map_prod_comm_prod + theorem ideal.map_snd_prod + theorem ideal.mem_prod + theorem ideal.prime_ideals_equiv_symm_inl + theorem ideal.prime_ideals_equiv_symm_inr + theorem ideal.prod.ext_iff + def ideal.prod + theorem ideal.prod_top_top 2020-10-05 19:45:10 f9e3779 lint(category_theory/whiskering): add doc-strings (#4417) ESTIMATED CHANGES Modified src/category_theory/whiskering.lean +/- def category_theory.functor.left_unitor +/- def category_theory.functor.right_unitor 2020-10-05 19:45:08 d2140ef feat(algebra/gcd_monoid): `gcd_mul_dvd_mul_gcd` (#4386) Adds a `gcd_monoid` version of `nat.gcd_mul_dvd_mul_gcd` ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean + theorem exists_dvd_and_dvd_of_dvd_mul + theorem gcd_mul_dvd_mul_gcd 2020-10-05 17:20:44 c58c4e6 docs(tactic/{fin_cases,lift}): lint (#4421) ESTIMATED CHANGES Modified src/tactic/fin_cases.lean Modified src/tactic/lift.lean 2020-10-05 17:20:42 e89d0ed chore(*/multilinear): generalize `comp_linear_map` to a family of linear maps (#4408) Together with #4316 this will give us multilinear maps corresponding to monomials. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/linear_algebra/multilinear.lean +/- def multilinear_map.comp_linear_map + theorem multilinear_map.comp_linear_map_apply Modified src/logic/function/basic.lean + theorem function.apply_update Modified src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.comp_continuous_linear_map_apply 2020-10-05 15:18:22 7f74e6b feat(data/mv_polynomial/basic): map_map_range_eq_iff (#4438) Split off from #4268 ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.map_map_range_eq_iff 2020-10-05 15:18:20 39f5d6b feat(data/rat/basic): denom_eq_one_iff (#4437) Split off from #4268 ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.denom_eq_one_iff 2020-10-05 15:18:18 22398f3 chore(src/linear_algebra): linting (#4427) ESTIMATED CHANGES Modified src/linear_algebra/dual.lean 2020-10-05 11:39:07 ca269b4 feat(linear_algebra/affine_space/finite_dimensional): collinearity (#4433) Define collinearity of a set of points in an affine space for a vector space (as meaning the `vector_span` has dimension at most 1), and prove some basic lemmas about it, leading to three points being collinear if and only if they are not affinely independent. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_independent_iff_not_collinear + def collinear + theorem collinear_empty + theorem collinear_iff_dim_le_one + theorem collinear_iff_exists_forall_eq_smul_vadd + theorem collinear_iff_findim_le_one + theorem collinear_iff_not_affine_independent + theorem collinear_iff_of_mem + theorem collinear_insert_singleton + theorem collinear_singleton 2020-10-05 11:39:05 b0fe280 chore(category_theory/yoneda): doc-strings (#4429) ESTIMATED CHANGES Modified src/category_theory/products/basic.lean Modified src/category_theory/yoneda.lean 2020-10-05 11:39:03 1501bf6 chore(data/fin2): linting (#4426) ESTIMATED CHANGES Modified src/data/fin2.lean 2020-10-05 11:39:01 dd73dd2 chore(linear_algebra/finsupp*): linting (#4425) ESTIMATED CHANGES Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean 2020-10-05 11:38:58 c058524 chore(data/fintype/basic): linting (#4424) ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2020-10-05 11:38:56 70b8e82 data(data/dlist/{basic,instances}): linting (#4422) ESTIMATED CHANGES Modified src/data/dlist/basic.lean Modified src/data/dlist/instances.lean 2020-10-05 11:38:54 da1265c chore(data/buffer/basic): linting (#4420) ESTIMATED CHANGES Modified src/data/buffer/basic.lean 2020-10-05 11:38:52 768ff76 chore(data/array/lemmas): linting (#4419) ESTIMATED CHANGES Modified src/data/array/lemmas.lean +/- def equiv.d_array_equiv_fin 2020-10-05 11:38:50 c370bd0 chore(data/W): linting (#4418) ESTIMATED CHANGES Modified src/data/W.lean 2020-10-05 11:38:48 6a4fd24 lint(category_theory/adjunction): add doc-strings (#4415) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/limits.lean 2020-10-05 11:38:46 17b607f chore(algebra/direct_sum): linting (#4412) ESTIMATED CHANGES Modified src/algebra/direct_sum.lean Modified src/algebra/lie/basic.lean Modified src/linear_algebra/direct_sum_module.lean 2020-10-05 11:38:43 b44e927 feat(data/finsupp): Make `finsupp.dom_congr` a `≃+` (#4398) Since this has additional structure, it may as well be part of the type ESTIMATED CHANGES Modified src/data/finsupp/basic.lean Modified src/linear_algebra/basic.lean + theorem add_equiv.coe_to_linear_equiv + theorem add_equiv.coe_to_linear_equiv_symm + def add_equiv.to_linear_equiv Modified src/linear_algebra/finsupp.lean 2020-10-05 11:38:41 54a2c6b chore(algebra/group/with_one): prove `group_with_zero` earlier, drop custom lemmas (#4385) ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/group/with_one.lean +/- theorem with_zero.coe_one - theorem with_zero.div_eq_div - theorem with_zero.div_eq_iff_mul_eq - theorem with_zero.div_mul_cancel - theorem with_zero.div_one - theorem with_zero.div_zero - theorem with_zero.mul_comm - theorem with_zero.mul_div_cancel - theorem with_zero.mul_inv_cancel - theorem with_zero.mul_inv_rev - theorem with_zero.mul_left_inv - theorem with_zero.mul_right_inv - theorem with_zero.one_div - theorem with_zero.zero_div Modified src/data/option/basic.lean + theorem option.coe_def 2020-10-05 11:38:39 7236084 refactor(linear_algebra/matrix): consistent naming (#4345) The naming of the maps between `linear_map` and `matrix` was a mess. This PR proposes to clean it up by standardising on two forms: * `linear_map.to_matrix` and `matrix.to_linear_map` are the equivalences (in the respective direction) between `M₁ →ₗ[R] M₂` and `matrix m n R`, given bases for `M₁` and `M₂`. * `linear_map.to_matrix'` and `matrix.to_lin'` are the equivalences between `((n → R) →ₗ[R] (m → R))` and `matrix m n R` in the respective directions The following declarations are renamed: * `comp_to_matrix_mul` -> `linear_map.to_matrix'_comp` * `linear_equiv_matrix` -> `linear_map.to_matrix` * `linear_equiv_matrix_{apply,comp,id,mul,range}` -> `linear_map.to_matrix_{apply,comp,id,mul,range}` * `linear_equiv_matrix_symm_{apply,mul,one}` -> `matrix.to_lin_{apply,mul,one}` * `linear_equiv_matrix'` -> `linear_map.to_matrix'` * `linear_map.to_matrix_id` ->`linear_map.to_matrix'_id` * `matrix.mul_to_lin` -> `matrix.to_lin'_mul` * `matrix.to_lin` -> `matrix.mul_vec_lin` (which should get simplified to `matrix.to_lin'`) * `matrix.to_lin_apply` -> `matrix.to_lin'_apply` * `matrix.to_lin_one` -> `matrix.to_lin'_one` * `to_lin_to_matrix` -> `matrix.to_lin'_to_matrix'` * `to_matrix_to_lin` -> `linear_map.to_matrix'_to_lin'` The following declarations are deleted as unnecessary: * `linear_equiv_matrix_apply'` (use `linear_map.to_matrix_apply` instead) * `linear_equiv_matrix'_apply` (the original `linear_map.to_matrix` doesn't exist any more) * `linear_equiv_matrix'_symm_apply` (the original `matrix.to_lin` doesn't exist any more) * `linear_map.to_matrixₗ` (use `linear_map.to_matrix'` instead) * `linear_map.to_matrix` (use `linear_map.to_matrix'` instead) * `linear_map.to_matrix_of_equiv` (use `linear_map.to_matrix'_apply` instead) * `matrix.eval` (use `matrix.to_lin'` instead) * `matrix.to_lin.is_add_monoid_hom` (use `linear_equiv.to_add_monoid_hom` instead) * `matrix.to_lin_{add,zero,neg}` (use `linear_equiv.map_{add,zero,neg} matrix.to_lin'` instead) * `matrix.to_lin_of_equiv` (use `matrix.to_lin'_apply` instead) Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Refactoring.20.60linear_map.20.3C-.3E.20matrix.60 ESTIMATED CHANGES Modified src/algebra/lie/basic.lean Modified src/field_theory/tower.lean Modified src/linear_algebra/basis.lean + theorem is_basis.range_repr + theorem is_basis.range_repr_self Modified src/linear_algebra/bilinear_form.lean +/- theorem matrix.to_bilin_form_comp +/- theorem matrix_is_adjoint_pair_bilin_form Modified src/linear_algebra/matrix.lean +/- def alg_equiv_matrix' +/- def alg_equiv_matrix - def linear_equiv_matrix' - theorem linear_equiv_matrix'_apply - theorem linear_equiv_matrix'_symm_apply - def linear_equiv_matrix - theorem linear_equiv_matrix_apply' - theorem linear_equiv_matrix_apply - theorem linear_equiv_matrix_id - theorem linear_equiv_matrix_range - theorem linear_equiv_matrix_symm_apply - theorem linear_equiv_matrix_symm_one - theorem linear_equiv_matrix_symm_transpose - theorem linear_equiv_matrix_transpose + def linear_map.to_matrix' + theorem linear_map.to_matrix'_apply + theorem linear_map.to_matrix'_comp + theorem linear_map.to_matrix'_id + theorem linear_map.to_matrix'_mul + theorem linear_map.to_matrix'_symm + theorem linear_map.to_matrix'_to_lin' +/- def linear_map.to_matrix + theorem linear_map.to_matrix_apply' + theorem linear_map.to_matrix_apply + theorem linear_map.to_matrix_comp +/- theorem linear_map.to_matrix_id + theorem linear_map.to_matrix_mul - theorem linear_map.to_matrix_of_equiv + theorem linear_map.to_matrix_range + theorem linear_map.to_matrix_symm + theorem linear_map.to_matrix_symm_transpose + theorem linear_map.to_matrix_to_lin + theorem linear_map.to_matrix_transpose - def linear_map.to_matrixₗ - theorem matrix.comp_to_matrix_mul + theorem matrix.diagonal_to_lin' - theorem matrix.diagonal_to_lin - def matrix.eval + theorem matrix.ker_diagonal_to_lin' - theorem matrix.ker_diagonal_to_lin - theorem matrix.linear_equiv_matrix_comp - theorem matrix.linear_equiv_matrix_mul - theorem matrix.linear_equiv_matrix_symm_mul - theorem matrix.mul_to_lin + def matrix.mul_vec_lin + theorem matrix.mul_vec_lin_apply + theorem matrix.mul_vec_std_basis +/- theorem matrix.rank_vec_mul_vec + def matrix.to_lin' + theorem matrix.to_lin'_apply + theorem matrix.to_lin'_mul + theorem matrix.to_lin'_one + theorem matrix.to_lin'_symm + theorem matrix.to_lin'_to_matrix' +/- def matrix.to_lin - theorem matrix.to_lin_add +/- theorem matrix.to_lin_apply + theorem matrix.to_lin_mul - theorem matrix.to_lin_neg - theorem matrix.to_lin_of_equiv +/- theorem matrix.to_lin_one + theorem matrix.to_lin_symm + theorem matrix.to_lin_to_matrix - theorem matrix.to_lin_zero - theorem to_lin_to_matrix - theorem to_matrix_to_lin Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/special_linear_group.lean + def matrix.special_linear_group.to_lin' + theorem matrix.special_linear_group.to_lin'_mul + theorem matrix.special_linear_group.to_lin'_one - def matrix.special_linear_group.to_lin - theorem matrix.special_linear_group.to_lin_mul - theorem matrix.special_linear_group.to_lin_one 2020-10-05 08:49:57 67b312c chore(logic/relation): linting (#4414) ESTIMATED CHANGES Modified src/logic/relation.lean 2020-10-05 08:49:55 186660c feat(*): assorted `simp` lemmas for IMO 2019 q1 (#4383) * mark some lemmas about cancelling in expressions with `(-)` as `simp`; * simplify `a * b = a * c` to `b = c ∨ a = 0`, and similarly for `a * c = b * c; * change `priority` of `monoid.has_pow` and `group.has_pow` to the default priority. * simplify `monoid.pow` and `group.gpow` to `has_pow.pow`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean +/- theorem add_add_neg_cancel'_right +/- theorem add_add_sub_cancel +/- theorem add_sub_sub_cancel +/- theorem sub_add_add_cancel +/- theorem sub_add_sub_cancel' +/- theorem sub_sub_cancel +/- theorem sub_sub_sub_cancel_left Modified src/algebra/group/commute.lean + theorem commute.inv_mul_cancel_assoc + theorem commute.mul_inv_cancel_assoc + theorem inv_mul_cancel_comm + theorem inv_mul_cancel_comm_assoc + theorem mul_inv_cancel_comm + theorem mul_inv_cancel_comm_assoc Modified src/algebra/group_power/basic.lean + theorem group.gpow_eq_has_pow + theorem monoid.pow_eq_has_pow Modified src/algebra/group_with_zero.lean + theorem mul_eq_mul_left_iff + theorem mul_eq_mul_right_iff Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/data/int/basic.lean Modified src/data/padics/padic_integers.lean - theorem padic_int.cast_pow + theorem padic_int.coet_pow Modified src/set_theory/ordinal_notation.lean 2020-10-05 08:49:53 8f4475b feat(combinatorics/partitions): Add partitions (#4303) ESTIMATED CHANGES Modified src/combinatorics/composition.lean Added src/combinatorics/partition.lean + theorem partition.count_of_sums_of_ne_zero + theorem partition.count_of_sums_zero + def partition.distincts + def partition.indiscrete_partition + def partition.odd_distincts + def partition.odds + def partition.of_composition + theorem partition.of_composition_surj + def partition.of_multiset + def partition.of_sums + structure partition 2020-10-05 07:39:36 ca679ac chore(algebra/direct_limit): linting (#4411) ESTIMATED CHANGES Modified src/algebra/direct_limit.lean - theorem add_comm_group.direct_limit.directed_system +/- theorem add_comm_group.direct_limit.lift_unique +/- theorem add_comm_group.direct_limit.of.zero_exact +/- def add_comm_group.direct_limit +/- theorem module.direct_limit.exists_of +/- theorem module.direct_limit.lift_unique +/- theorem module.direct_limit.of.zero_exact_aux +/- theorem ring.direct_limit.exists_of +/- theorem ring.direct_limit.induction_on +/- theorem ring.direct_limit.lift_unique +/- theorem ring.direct_limit.of.zero_exact_aux +/- theorem ring.direct_limit.of_injective +/- theorem ring.direct_limit.polynomial.exists_of 2020-10-05 07:39:32 581b141 feat(data/complex): norm_cast lemmas (#4405) Mark various existing lemmas such as `abs_of_real` and `of_real_exp` as `norm_cast` lemmas so that `norm_cast` and related tactics can handle expressions involving those functions, and add lemmas `of_real_prod` and `of_real_sum` to allow those tactics to work with sums and products involving coercions from real to complex. ESTIMATED CHANGES Modified src/data/complex/basic.lean +/- theorem complex.abs_of_real + theorem complex.of_real_prod + theorem complex.of_real_sum Modified src/data/complex/exponential.lean +/- theorem complex.of_real_cos +/- theorem complex.of_real_cosh +/- theorem complex.of_real_exp +/- theorem complex.of_real_sin +/- theorem complex.of_real_sinh +/- theorem complex.of_real_tan +/- theorem complex.of_real_tanh 2020-10-05 07:39:30 1c8bb42 feat(linear_algebra/affine_space/finite_dimensional): more lemmas (#4389) Add more lemmas concerning dimensions of affine spans of finite families of points. In particular, various forms of the lemma that `n + 1` points are affinely independent if and only if their `vector_span` has dimension `n` (or equivalently, at least `n`). With suitable definitions, this is equivalent to saying that three points are affinely independent or collinear, four are affinely independent or coplanar, etc., thus preparing for giving a definition of `collinear` (for any set of points in an affine space for a vector space) in terms of dimension and proving some basic properties of it including relating it to affine independence. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean + theorem vector_span_range_eq_span_range_vsub_left_ne + theorem vector_span_range_eq_span_range_vsub_right_ne Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_independent_iff_findim_vector_span_eq + theorem affine_independent_iff_le_findim_vector_span + theorem affine_independent_iff_not_findim_vector_span_le + theorem findim_vector_span_image_finset_le + theorem findim_vector_span_le_iff_not_affine_independent + theorem findim_vector_span_range_le 2020-10-05 07:39:28 565e961 feat(number_theory/arithmetic_function): Define arithmetic functions/the Dirichlet ring (#4352) Defines a type `arithmetic_function A` of functions from `nat` to `A` sending 0 to 0 Defines the Dirichlet ring structure on `arithmetic_function A` ESTIMATED CHANGES Added src/number_theory/arithmetic_function.lean + theorem nat.arithmetic_function.add_apply + theorem nat.arithmetic_function.coe_coe + theorem nat.arithmetic_function.coe_inj + theorem nat.arithmetic_function.ext + theorem nat.arithmetic_function.ext_iff + theorem nat.arithmetic_function.int_coe_apply + theorem nat.arithmetic_function.map_zero + theorem nat.arithmetic_function.mul_apply + theorem nat.arithmetic_function.nat_coe_apply + theorem nat.arithmetic_function.one_apply_ne + theorem nat.arithmetic_function.one_one + theorem nat.arithmetic_function.to_fun_eq + theorem nat.arithmetic_function.zero_apply + structure nat.arithmetic_function Modified src/number_theory/divisors.lean + theorem nat.dvd_of_mem_divisors 2020-10-05 05:24:10 9ab7f05 feat(category_theory/limits/terminal): limit of a diagram with initial object (#4404) If the index category for a functor has an initial object, the image of the functor is a limit. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean +/- def category_theory.limits.as_empty_cocone +/- def category_theory.limits.as_empty_cone + def category_theory.limits.cocone_of_diagram_terminal + def category_theory.limits.colimit_of_diagram_terminal + def category_theory.limits.colimit_of_terminal + def category_theory.limits.cone_of_diagram_initial + def category_theory.limits.limit_of_diagram_initial + def category_theory.limits.limit_of_initial 2020-10-05 05:24:08 91d9e96 chore(algebra/ring/basic): docs, simps (#4375) * add docstrings to all typeclasses in `algebra/ring/basic`; * add `ring_hom.inhabited := ⟨id α⟩` to make linter happy; * given `f : α →+* β`, simplify `f.to_monoid_hom` and `f.to_add_monoid_hom` to coercions; * add `simp` lemmas for coercions of `ring_hom.mk f _ _ _ _` to `monoid_hom` and `add_monoid_hom`. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean - theorem coe_add_monoid_hom - theorem coe_monoid_hom + theorem ring_hom.coe_add_monoid_hom + theorem ring_hom.coe_add_monoid_hom_mk + theorem ring_hom.coe_monoid_hom + theorem ring_hom.coe_monoid_hom_mk + theorem ring_hom.to_add_monoid_hom_eq_coe +/- theorem ring_hom.to_fun_eq_coe + theorem ring_hom.to_monoid_hom_eq_coe Modified src/ring_theory/algebra_tower.lean 2020-10-05 05:24:06 08cdf37 feat(analysis/complex/roots_of_unity): complex (primitive) roots of unity (#4330) ESTIMATED CHANGES Modified docs/undergrad.yaml Added src/analysis/complex/roots_of_unity.lean + theorem complex.card_primitive_roots + theorem complex.card_roots_of_unity + theorem complex.is_primitive_root_exp + theorem complex.is_primitive_root_exp_of_coprime + theorem complex.is_primitive_root_iff + theorem complex.mem_roots_of_unity Modified src/analysis/special_functions/trigonometric.lean + theorem complex.two_pi_I_ne_zero + theorem real.pi_ne_zero 2020-10-05 04:08:17 bf99889 feat(category_theory/limits): lift self limit (#4403) A couple of little lemmas to simplify lift of a limit cone. ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.is_colimit.desc_self + theorem category_theory.limits.is_limit.lift_self 2020-10-05 02:16:27 916b5d3 feat(topology): completion of separable space is separable (#4399) API change: * `dense` renamed to `exists_between`; * new `dense (s : set α)` means `∀ x, x ∈ closure s`. ESTIMATED CHANGES Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/specific_limits.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/infinite.lean Modified src/data/set/intervals/ord_connected.lean Modified src/order/basic.lean - theorem dense + theorem exists_between Modified src/order/bounded_lattice.lean Modified src/order/bounds.lean Modified src/topology/algebra/ordered.lean Modified src/topology/bases.lean + theorem dense_range.separable_space + theorem topological_space.exists_countable_closure_eq_univ Modified src/topology/basic.lean + theorem continuous.dense_image_of_dense_range + theorem dense.closure_eq + def dense + theorem dense_iff_closure_eq +/- theorem dense_of_subset_dense + theorem dense_range.closure_range + theorem dense_range.comp + def dense_range.inhabited + theorem dense_range.nonempty + def dense_range + theorem dense_range_iff_closure_range Modified src/topology/bounded_continuous_function.lean Modified src/topology/constructions.lean + theorem dense_range.prod Modified src/topology/continuous_on.lean + theorem dense_range.nhds_within_ne_bot Modified src/topology/dense_embedding.lean + theorem dense_embedding.separable + theorem dense_inducing.separable - theorem dense_range.closure_range - theorem dense_range.comp - def dense_range.inhabited - theorem dense_range.nhds_within_ne_bot - theorem dense_range.nonempty - theorem dense_range.prod - def dense_range - theorem dense_range_iff_closure_range Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/uniform_space/completion.lean 2020-10-05 01:18:46 fc09dba feat(analysis/special_functions/pow): exp_mul (#4409) Add the lemma that `exp (x * y) = (exp x) ^ y`, for real `x` and `y`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem real.exp_mul 2020-10-04 20:49:23 d13d21b feat(algebra/big_operators/order): bounding finite fibration cardinalities from below (#4396) Also including unrelated change `finset.inter_eq_sdiff_sdiff`. ESTIMATED CHANGES Modified src/algebra/big_operators/order.lean + theorem finset.mul_card_image_le_card + theorem finset.mul_card_image_le_card_of_maps_to Modified src/data/finset/basic.lean + theorem finset.inter_eq_sdiff_sdiff 2020-10-04 19:18:31 f437365 feat(linear_algebra/dimension): one-dimensional spaces (#4400) Add some lemmas about the vectors in spaces and subspaces of dimension at most 1. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.le_span_singleton_iff Modified src/linear_algebra/dimension.lean + theorem dim_le_one_iff + theorem dim_submodule_le_one_iff' + theorem dim_submodule_le_one_iff 2020-10-04 15:27:55 8f53676 feat(data/nat): Slightly strengthen nat.coprime_of_dvd/nat.coprime_of_dvd' (#4368) It is sufficient to consider prime factors. The theorems now depend on nat.prime (data/nat/prime.lean), which depends on data/nat/gcd.lean, so I moved them to prime.lean. ESTIMATED CHANGES Modified archive/imo/imo1959_q1.lean Modified src/data/nat/gcd.lean - theorem nat.coprime_of_dvd' - theorem nat.coprime_of_dvd Modified src/data/nat/modeq.lean Modified src/data/nat/prime.lean + theorem nat.coprime_of_dvd' + theorem nat.coprime_of_dvd Modified src/number_theory/pell.lean 2020-10-04 11:10:48 729b60a feat(data/set/basic): subsingleton_coe (#4388) Add a lemma relating a set being a subsingleton set to its coercion to a type being a subsingleton type. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.subsingleton_coe 2020-10-04 11:10:45 e8b65e6 feat(data/set/basic): eq_singleton_iff_unique_mem (#4387) We have this lemma for `finset`. Add a version for `set` (with the same name). ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.eq_singleton_iff_unique_mem 2020-10-04 11:10:43 e1b1d17 feat(algebra/group): construct `add_monoid_hom` from `map_sub` (#4382) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem add_monoid_hom.coe_of_map_sub +/- theorem add_monoid_hom.map_sub + def add_monoid_hom.of_map_sub + theorem monoid_hom.coe_of_map_mul_inv + def monoid_hom.of_map_mul_inv 2020-10-04 11:10:41 231271d chore(data/equiv/mul_add): add more `equiv` lemmas to `mul_equiv` namespace (#4380) Also make `apply_eq_iff_eq` and `apply_eq_iff_eq_symm_apply` use implicit arguments. ESTIMATED CHANGES Modified src/category_theory/limits/types.lean Modified src/data/equiv/basic.lean +/- theorem equiv.apply_eq_iff_eq +/- theorem equiv.apply_eq_iff_eq_symm_apply Modified src/data/equiv/encodable/basic.lean Modified src/data/equiv/mul_add.lean + theorem mul_equiv.apply_eq_iff_eq + theorem mul_equiv.apply_eq_iff_symm_apply + theorem mul_equiv.eq_symm_apply + theorem mul_equiv.symm_apply_eq Modified src/data/opposite.lean Modified src/group_theory/monoid_localization.lean 2020-10-04 11:10:39 5d35b9a feat(algebra/gcd_monoid, data/*set/gcd): a few lemmas about gcds (#4354) Adds lemmas about gcds useful for proving Gauss's Lemma ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean + theorem gcd_eq_of_dvd_sub_left + theorem gcd_eq_of_dvd_sub_right Modified src/data/finset/gcd.lean + theorem finset.gcd_eq_gcd_filter_ne_zero + theorem finset.gcd_eq_of_dvd_sub + theorem finset.gcd_eq_zero_iff + theorem finset.gcd_mul_left + theorem finset.gcd_mul_right Modified src/data/multiset/gcd.lean + theorem multiset.gcd_eq_zero_iff 2020-10-04 09:48:24 509dd9e feat(linear_algebra/basic): span_singleton smul lemmas (#4394) Add two submodule lemmas relating `span R ({r • x})` and `span R {x}`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.span_singleton_smul_eq + theorem submodule.span_singleton_smul_le 2020-10-04 06:59:45 c3d0835 chore(data/mv_polynomial): rename `pderivative` to `pderiv` (#4381) This name matches `fderiv` and `deriv` we have in `analysis/`. ESTIMATED CHANGES Renamed src/data/mv_polynomial/pderivative.lean to src/data/mv_polynomial/pderiv.lean + def mv_polynomial.pderiv + theorem mv_polynomial.pderiv_C + theorem mv_polynomial.pderiv_C_mul + theorem mv_polynomial.pderiv_eq_zero_of_not_mem_vars + theorem mv_polynomial.pderiv_monomial + theorem mv_polynomial.pderiv_monomial_mul + theorem mv_polynomial.pderiv_monomial_single + theorem mv_polynomial.pderiv_mul - def mv_polynomial.pderivative - theorem mv_polynomial.pderivative_C - theorem mv_polynomial.pderivative_C_mul - theorem mv_polynomial.pderivative_eq_zero_of_not_mem_vars - theorem mv_polynomial.pderivative_monomial - theorem mv_polynomial.pderivative_monomial_mul - theorem mv_polynomial.pderivative_monomial_single - theorem mv_polynomial.pderivative_mul 2020-10-04 05:39:03 e902cae feat(category_theory/limits/cofinal): better API for cofinal functors (#4276) This PR 1. Proves that `F : C ⥤ D` being cofinal is equivalent to `colimit (F ⋙ G) ≅ colimit G` for all `G : D ⥤ E`. (Previously we just had the implication.) 2. Proves that if `F` is cofinal then `limit (F.op ⋙ H) ≅ limit H` for all `H: Dᵒᵖ ⥤ E`. ESTIMATED CHANGES Modified src/category_theory/is_connected.lean + theorem category_theory.zag_symmetric + theorem category_theory.zigzag_symmetric Modified src/category_theory/limits/cofinal.lean + theorem category_theory.cofinal.cofinal_of_colimit_comp_coyoneda_iso_punit + def category_theory.cofinal.colimit_comp_coyoneda_iso + def category_theory.cofinal.cones_equiv + def category_theory.cofinal.extend_cone + def category_theory.cofinal.extend_cone_cocone_to_cone + def category_theory.cofinal.extend_cone_cone_to_cocone + theorem category_theory.cofinal.has_limit_of_comp + def category_theory.cofinal.is_limit_extend_cone_equiv + def category_theory.cofinal.is_limit_whisker_equiv + def category_theory.cofinal.limit_cone_comp + theorem category_theory.cofinal.limit_cone_comp_aux + def category_theory.cofinal.limit_cone_of_comp + def category_theory.cofinal.limit_iso' + def category_theory.cofinal.limit_iso + theorem category_theory.cofinal.limit_pre_is_iso_aux + theorem category_theory.cofinal.zigzag_of_eqv_gen_quot_rel Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.is_limit.of_cone_equiv_apply_desc + theorem category_theory.limits.is_limit.of_cone_equiv_symm_apply_desc Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.colimit_eq + theorem category_theory.limits.types.colimit_equiv_quot_apply + def category_theory.limits.types.quot.rel Added src/category_theory/limits/yoneda.lean + def category_theory.coyoneda.colimit_cocone + def category_theory.coyoneda.colimit_cocone_is_colimit + def category_theory.coyoneda.colimit_coyoneda_iso Modified src/category_theory/opposites.lean 2020-10-04 03:45:24 e738e90 feat(algebra/group_power/identities): named ring identities (#4390) This PR adds a new file containing some "named" ring identities provable by `ring`. ESTIMATED CHANGES Added src/algebra/group_power/identities.lean + theorem pow_four_add_four_mul_pow_four' + theorem pow_four_add_four_mul_pow_four + theorem pow_two_add_mul_pow_two_mul_pow_two_add_mul_pow_two + theorem pow_two_add_pow_two_mul_pow_two_add_pow_two + theorem sum_eight_sq_mul_sum_eight_sq + theorem sum_four_sq_mul_sum_four_sq Modified src/number_theory/sum_four_squares.lean 2020-10-04 01:55:07 f2044a5 chore(scripts): update nolints.txt (#4392) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-10-03 23:52:40 333c216 chore(algebra/group/type_tags): Use ≃ instead of → (#4346) These functions are all equivalences, so we may as well expose that in their type This also fills in some conversions that were missing. Unfortunately this requires some type ascriptions in a handful of places. It might be possible to remove these somehow. This zulip thread contains a mwe: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Type.20inference.20on.20.60.E2.86.92.60.20vs.20.60.E2.89.83.60/near/211922501. ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean + def add_monoid_hom.to_multiplicative'' +/- def add_monoid_hom.to_multiplicative' +/- def add_monoid_hom.to_multiplicative +/- def additive.of_mul +/- def additive.to_mul + def monoid_hom.to_additive'' +/- def monoid_hom.to_additive' +/- def monoid_hom.to_additive +/- def multiplicative.of_add +/- def multiplicative.to_add - theorem of_add_injective - theorem of_mul_injective - theorem to_add_injective - theorem to_mul_injective Modified src/data/equiv/mul_add.lean + def add_equiv.to_multiplicative'' + def add_equiv.to_multiplicative' +/- def add_equiv.to_multiplicative + def mul_equiv.to_additive'' + def mul_equiv.to_additive' +/- def mul_equiv.to_additive Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/ring_theory/roots_of_unity.lean 2020-10-03 20:51:17 a0ba5e7 doc(data/real/*): add a few docstrings, `ereal.has_zero`, and `ereal.inhabited` (#4378) ESTIMATED CHANGES Modified src/data/real/basic.lean Modified src/data/real/ereal.lean Modified src/data/real/nnreal.lean 2020-10-03 20:51:15 e593ffa feat(algebra/ordered*): more simp lemmas (#4359) Simplify expressions like `0 < a * b`, `0 < a / b`, `a / b < 1` etc. to FOL formulas of inequalities on `a`, `b`. ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean Modified src/algebra/group_power/basic.lean +/- theorem pow_nonneg +/- theorem pow_pos Modified src/algebra/group_with_zero.lean + theorem inv_eq_one' Modified src/algebra/order.lean + theorem ne.le_iff_lt + theorem ne.lt_or_lt Modified src/algebra/ordered_field.lean + theorem div_le_one_iff + theorem div_lt_one_iff + theorem div_neg_iff + theorem div_nonneg_iff + theorem div_nonpos_iff + theorem div_pos_iff + theorem inv_le_one_iff + theorem inv_lt_one_iff + theorem inv_lt_one_iff_of_pos + theorem one_le_div_iff + theorem one_le_inv_iff + theorem one_lt_div_iff + theorem one_lt_inv_iff Modified src/algebra/ordered_ring.lean - theorem linear_ordered_ring.eq_zero_or_eq_zero_of_mul_eq_zero + theorem mul_neg_iff + theorem mul_nonneg_iff + theorem mul_nonpos_iff + theorem mul_pos_iff + theorem nonneg_and_nonneg_or_nonpos_and_nonpos_of_mul_nnonneg +/- theorem pos_of_mul_pos_left +/- theorem pos_of_mul_pos_right Modified src/analysis/hofer.lean Modified src/data/int/basic.lean +/- theorem int.coe_nat_nonneg Modified src/data/padics/hensel.lean Modified src/data/rat/order.lean Modified src/data/real/nnreal.lean Modified src/number_theory/lucas_lehmer.lean 2020-10-03 18:56:38 b790b27 feat(slim_check): sampleable instance for generating functions and injective functions (#3967) This also adds `printable_prop` to trace why propositions hold or don't hold and `sampleable_ext` to allow the data structure generated and shrunken by `slim_check` to have a different type from the type we are looking for. ESTIMATED CHANGES Modified src/control/uliftable.lean +/- def uliftable.adapt_up Modified src/data/list/perm.lean Modified src/system/random/basic.lean Modified src/tactic/slim_check.lean Added src/testing/slim_check/functions.lean + def slim_check.injective_function.apply + theorem slim_check.injective_function.apply_id_injective + theorem slim_check.injective_function.apply_id_mem_iff + def slim_check.injective_function.list.apply_id + theorem slim_check.injective_function.list.apply_id_cons + theorem slim_check.injective_function.list.apply_id_eq_self + theorem slim_check.injective_function.list.apply_id_zip_eq + def slim_check.injective_function.perm.slice + def slim_check.injective_function.slice_sizes + inductive slim_check.injective_function + def slim_check.total_function.apply + def slim_check.total_function.list.to_finmap' + def slim_check.total_function.repr_aux + def slim_check.total_function.total.sizeof + inductive slim_check.total_function Modified src/testing/slim_check/gen.lean + def slim_check.gen.choose_nat' + def slim_check.gen.elements + def slim_check.gen.freq + def slim_check.gen.freq_aux - def slim_check.gen.one_of_aux + def slim_check.gen.resize Modified src/testing/slim_check/sampleable.lean + def slim_check.int.has_sizeof + def slim_check.large.mk + def slim_check.large +/- def slim_check.print_samples + def slim_check.rec_shrink_with + theorem slim_check.rec_shrink_with_eq + def slim_check.small.mk + def slim_check.small +/- def slim_check.sum.shrink Modified src/testing/slim_check/testable.lean + def slim_check.add_shrinks +/- def slim_check.add_var_to_counter_example + def slim_check.format_failure' + def slim_check.format_failure +/- def slim_check.minimize +/- def slim_check.minimize_aux - def slim_check.test_result.to_string +/- def slim_check.trace_if_giveup + def slim_check.use_has_to_string.mk + def slim_check.use_has_to_string Added test/mk_slim_check_test.lean Modified test/slim_check.lean 2020-10-03 15:26:49 c39170e doc(*): add a few short module docstrings (#4370) ESTIMATED CHANGES Modified src/algebra/opposites.lean Modified src/data/equiv/basic.lean Modified src/data/opposite.lean 2020-10-03 10:25:54 946ab02 chore(.github/workflows): github action for crossing off PR dependencies (#4367) ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md Added .github/workflows/sync_closed_tasks.yaml 2020-10-03 05:00:16 069952b chore(category_theory/limits/binary_products): weaken assumptions (#4373) weakens the assumptions on which limits need to exist for these constructions not much of a change but the assumptions I used were too strong so just a small fix ESTIMATED CHANGES Modified src/category_theory/limits/shapes/constructions/preserve_binary_products.lean +/- def category_theory.limits.alternative_cone +/- def category_theory.limits.alternative_cone_is_limit 2020-10-03 05:00:15 9e455c1 feat(data/monoid_algebra): Allow R ≠ k in semimodule R (monoid_algebra k G) (#4365) Also does the same for the additive version `semimodule R (add_monoid_algebra k G)`. ESTIMATED CHANGES Modified src/algebra/monoid_algebra.lean +/- theorem add_monoid_algebra.alg_hom_ext +/- theorem add_monoid_algebra.alg_hom_ext_iff +/- def add_monoid_algebra.algebra_map' +/- theorem add_monoid_algebra.coe_algebra_map +/- def add_monoid_algebra.lift +/- theorem monoid_algebra.alg_hom_ext +/- theorem monoid_algebra.coe_algebra_map +/- def monoid_algebra.lift +/- theorem monoid_algebra.lift_apply +/- theorem monoid_algebra.lift_of +/- theorem monoid_algebra.lift_single +/- theorem monoid_algebra.lift_symm_apply +/- theorem monoid_algebra.lift_unique' +/- theorem monoid_algebra.lift_unique + theorem monoid_algebra.single_algebra_map_eq_algebra_map_mul_of 2020-10-03 04:08:49 6ab3eb7 chore(category_theory/limits/equalizers): some equalizer fixups (#4372) A couple of minor changes for equalizers: - Add some `simps` attributes - Removes some redundant brackets - Simplify the construction of an iso between cones (+dual) - Show the equalizer fork is a limit (+dual) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.coequalizer_is_coequalizer +/- theorem category_theory.limits.cofork.condition +/- def category_theory.limits.cofork.ext + def category_theory.limits.equalizer_is_equalizer +/- theorem category_theory.limits.fork.condition +/- def category_theory.limits.fork.ext 2020-10-03 01:06:52 6a52400 chore(scripts): update nolints.txt (#4371) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-10-02 20:49:45 da24add feat(data/multiset): ordered sum lemmas (#4305) Add some lemmas about products in ordered monoids and sums in ordered add monoids, and a multiset count filter lemma (and a rename of a count filter lemma) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.all_one_of_le_one_le_of_prod_eq_one + theorem list.one_le_prod_of_one_le + theorem list.single_le_prod + theorem list.sum_eq_zero_iff Modified src/data/multiset/basic.lean + theorem multiset.all_one_of_le_one_le_of_prod_eq_one - theorem multiset.count_filter + theorem multiset.count_filter_of_neg + theorem multiset.count_filter_of_pos + theorem multiset.one_le_prod_of_one_le + theorem multiset.single_le_prod + theorem multiset.sum_eq_zero_iff 2020-10-02 18:01:52 2634c1b feat(category_theory/cones): map_cone_inv as an equivalence (#4253) When `G` is an equivalence, we have `G.map_cone_inv : cone (F ⋙ G) → cone F`, and that this is an inverse to `G.map_cone`, but not quite that these constitute an equivalence of categories. This PR fixes that. ESTIMATED CHANGES Modified src/category_theory/equivalence.lean + theorem category_theory.equivalence.counit_app_functor - theorem category_theory.equivalence.counit_functor + theorem category_theory.equivalence.counit_inv_app_functor - theorem category_theory.equivalence.functor_unit - theorem category_theory.equivalence.inverse_counit + theorem category_theory.equivalence.unit_app_inverse + theorem category_theory.equivalence.unit_inv_app_inverse - theorem category_theory.equivalence.unit_inverse Modified src/category_theory/limits/cones.lean + def category_theory.functor.map_cocone_inv + def category_theory.functor.map_cocone_inv_map_cocone + def category_theory.functor.map_cocone_map_cocone_inv + def category_theory.limits.cocones.functoriality_equivalence + def category_theory.limits.cones.functoriality_equivalence Modified src/category_theory/limits/limits.lean Modified src/category_theory/monoidal/transport.lean 2020-10-02 13:06:24 2ce359b feat(data/nat/parity,data/int/parity): odd numbers (#4357) As discussed at , define `nat.odd` and `int.odd` to allow a more literal expression (outside of mathlib; for example, in formal olympiad problem statements) of results whose informal statement refers to odd numbers. These definitions are not expected to be used in mathlib beyond the `simp` lemmas added here that translate them back to `¬ even`. This is similar to how `>` is defined but almost all mathlib results are expected to use `<` instead. It's likely that expressing olympiad problem statements literally in Lean will end up using some other such definitions, where avoiding API duplication means almost everything relevant in mathlib is developed in terms of the expansion of the definition. ESTIMATED CHANGES Modified src/data/int/parity.lean + def int.odd + theorem int.odd_def Modified src/data/nat/parity.lean + def nat.odd + theorem nat.odd_def 2020-10-02 12:12:21 53570c0 chore(README): add zulip badge (#4362) ESTIMATED CHANGES Modified README.md 2020-10-02 10:14:33 eeb9bb6 feat(data/polynomial/coeff): single-variate `C_dvd_iff_dvd_coeff` (#4355) Adds a single-variate version of the lemma `mv_polynomial.C_dvd_iff_dvd_coeff` (Useful for Gauss's Lemma) ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.C_dvd_iff_dvd_coeff 2020-10-02 10:14:31 8876ba2 feat(ring_theory/roots_of_unity): (primitive) roots of unity (#4260) ESTIMATED CHANGES Added src/ring_theory/roots_of_unity.lean + theorem card_roots_of_unity + theorem is_primitive_root.card_primitive_roots + theorem is_primitive_root.card_roots_of_unity' + theorem is_primitive_root.card_roots_of_unity + theorem is_primitive_root.coe_subgroup_iff + theorem is_primitive_root.coe_units_iff + theorem is_primitive_root.eq_neg_one_of_two_right + theorem is_primitive_root.eq_pow_of_mem_roots_of_unity + theorem is_primitive_root.eq_pow_of_pow_eq_one + theorem is_primitive_root.fpow_eq_one + theorem is_primitive_root.fpow_eq_one_iff_dvd + theorem is_primitive_root.fpow_of_gcd_eq_one + theorem is_primitive_root.gpow_eq_one + theorem is_primitive_root.gpow_eq_one_iff_dvd + theorem is_primitive_root.gpow_of_gcd_eq_one + theorem is_primitive_root.gpowers_eq + theorem is_primitive_root.iff_def + theorem is_primitive_root.inv' + theorem is_primitive_root.inv + theorem is_primitive_root.inv_iff' + theorem is_primitive_root.inv_iff + theorem is_primitive_root.is_primitive_root_iff' + theorem is_primitive_root.is_primitive_root_iff + theorem is_primitive_root.is_unit + theorem is_primitive_root.mem_roots_of_unity + theorem is_primitive_root.mk_of_lt + theorem is_primitive_root.neg_one + theorem is_primitive_root.one + theorem is_primitive_root.one_right_iff + theorem is_primitive_root.pow_eq_one_iff_dvd + theorem is_primitive_root.pow_iff_coprime + theorem is_primitive_root.pow_inj + theorem is_primitive_root.pow_ne_one_of_pos_of_lt + theorem is_primitive_root.pow_of_coprime + def is_primitive_root.zmod_equiv_gpowers + theorem is_primitive_root.zmod_equiv_gpowers_apply_coe_int + theorem is_primitive_root.zmod_equiv_gpowers_apply_coe_nat + theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_gpow' + theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_gpow + theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_pow' + theorem is_primitive_root.zmod_equiv_gpowers_symm_apply_pow + structure is_primitive_root + theorem map_roots_of_unity + theorem mem_primitive_roots + theorem mem_roots_of_unity + theorem mem_roots_of_unity_iff_mem_nth_roots + def primitive_roots + def roots_of_unity + def roots_of_unity_equiv_nth_roots + theorem roots_of_unity_equiv_nth_roots_apply + theorem roots_of_unity_equiv_nth_roots_symm_apply + theorem roots_of_unity_le_of_dvd 2020-10-02 08:35:04 d631126 chore(algebra): move algebra and monoid algebra to algebra/ (#4298) On the basis that all the basic definitions of algebraic gadgets are otherwise in `src/algebra/`, I'd like to move `ring_theory/algebra.lean`, `ring_theory/algebra_operations.lean`, and `data/monoid_algebra.lean` there too. ESTIMATED CHANGES Renamed src/ring_theory/algebra.lean to src/algebra/algebra/basic.lean Renamed src/ring_theory/algebra_operations.lean to src/algebra/algebra/operations.lean Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/free_algebra.lean Modified src/algebra/lie/basic.lean Renamed src/data/monoid_algebra.lean to src/algebra/monoid_algebra.lean Modified src/algebra/ring_quot.lean Modified src/data/complex/module.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/polynomial/basic.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/finsupp.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/tensor_product.lean Modified src/topology/algebra/module.lean 2020-10-02 07:19:29 1f91d93 chore(ring_theory/power_series): rename variables (#4361) Use `R`, `S`, `T` for (semi)rings and `k` for a field. ESTIMATED CHANGES Modified src/ring_theory/power_series.lean +/- theorem mv_polynomial.coe_C +/- theorem mv_polynomial.coe_add +/- theorem mv_polynomial.coe_monomial +/- theorem mv_polynomial.coe_mul +/- theorem mv_polynomial.coe_one +/- def mv_polynomial.coe_to_mv_power_series.ring_hom +/- theorem mv_polynomial.coe_zero +/- theorem mv_polynomial.coeff_coe +/- def mv_power_series.C +/- def mv_power_series.X +/- theorem mv_power_series.X_def +/- theorem mv_power_series.X_dvd_iff +/- theorem mv_power_series.X_inj +/- theorem mv_power_series.X_pow_dvd_iff +/- def mv_power_series.coeff +/- theorem mv_power_series.coeff_C +/- theorem mv_power_series.coeff_C_mul +/- theorem mv_power_series.coeff_inv +/- theorem mv_power_series.coeff_inv_aux +/- theorem mv_power_series.coeff_inv_of_unit +/- theorem mv_power_series.coeff_map +/- theorem mv_power_series.coeff_monomial' +/- theorem mv_power_series.coeff_monomial +/- theorem mv_power_series.coeff_mul +/- theorem mv_power_series.coeff_mul_C +/- theorem mv_power_series.coeff_smul +/- theorem mv_power_series.coeff_trunc +/- theorem mv_power_series.coeff_zero +/- theorem mv_power_series.coeff_zero_C +/- theorem mv_power_series.coeff_zero_X +/- theorem mv_power_series.coeff_zero_eq_constant_coeff_apply +/- theorem mv_power_series.coeff_zero_mul_X +/- theorem mv_power_series.coeff_zero_one +/- def mv_power_series.constant_coeff +/- theorem mv_power_series.constant_coeff_C +/- theorem mv_power_series.constant_coeff_X +/- theorem mv_power_series.constant_coeff_inv +/- theorem mv_power_series.constant_coeff_inv_of_unit +/- theorem mv_power_series.constant_coeff_map +/- theorem mv_power_series.constant_coeff_one +/- theorem mv_power_series.constant_coeff_zero +/- theorem mv_power_series.ext +/- theorem mv_power_series.ext_iff +/- theorem mv_power_series.inv_eq_zero +/- def mv_power_series.inv_of_unit +/- theorem mv_power_series.inv_of_unit_eq' +/- theorem mv_power_series.inv_of_unit_eq +/- theorem mv_power_series.is_unit_constant_coeff +/- def mv_power_series.map +/- theorem mv_power_series.map_id +/- def mv_power_series.monomial +/- theorem mv_power_series.monomial_mul_monomial +/- theorem mv_power_series.monomial_zero_eq_C +/- theorem mv_power_series.monomial_zero_eq_C_apply +/- theorem mv_power_series.mul_inv_of_unit +/- def mv_power_series.trunc +/- theorem mv_power_series.trunc_C +/- def mv_power_series.trunc_fun +/- theorem mv_power_series.trunc_one +/- def mv_power_series +/- theorem polynomial.coe_C +/- theorem polynomial.coe_add +/- theorem polynomial.coe_monomial +/- theorem polynomial.coe_mul +/- theorem polynomial.coe_one +/- def polynomial.coe_to_power_series.ring_hom +/- theorem polynomial.coe_zero +/- theorem polynomial.coeff_coe +/- def power_series.C +/- def power_series.X +/- theorem power_series.X_dvd_iff +/- theorem power_series.X_eq +/- theorem power_series.X_pow_dvd_iff +/- theorem power_series.X_pow_eq +/- theorem power_series.X_prime +/- def power_series.coeff +/- theorem power_series.coeff_C +/- theorem power_series.coeff_C_mul +/- theorem power_series.coeff_inv +/- theorem power_series.coeff_inv_aux +/- theorem power_series.coeff_inv_of_unit +/- theorem power_series.coeff_map +/- theorem power_series.coeff_mk +/- theorem power_series.coeff_monomial' +/- theorem power_series.coeff_monomial +/- theorem power_series.coeff_mul +/- theorem power_series.coeff_mul_C +/- theorem power_series.coeff_of_lt_order +/- theorem power_series.coeff_one_X +/- theorem power_series.coeff_order +/- theorem power_series.coeff_smul +/- theorem power_series.coeff_succ_mul_X +/- theorem power_series.coeff_trunc +/- theorem power_series.coeff_zero_C +/- theorem power_series.coeff_zero_X +/- theorem power_series.coeff_zero_eq_constant_coeff_apply +/- theorem power_series.coeff_zero_mul_X +/- theorem power_series.coeff_zero_one +/- def power_series.constant_coeff +/- theorem power_series.constant_coeff_C +/- theorem power_series.constant_coeff_X +/- theorem power_series.constant_coeff_inv +/- theorem power_series.constant_coeff_inv_of_unit +/- theorem power_series.constant_coeff_one +/- theorem power_series.constant_coeff_zero +/- theorem power_series.eq_zero_or_eq_zero_of_mul_eq_zero +/- theorem power_series.ext +/- theorem power_series.ext_iff +/- theorem power_series.inv_eq_inv_aux +/- theorem power_series.inv_eq_zero +/- def power_series.inv_of_unit +/- theorem power_series.inv_of_unit_eq' +/- theorem power_series.inv_of_unit_eq +/- theorem power_series.is_unit_constant_coeff +/- theorem power_series.le_order +/- theorem power_series.le_order_add +/- def power_series.map +/- theorem power_series.map_id +/- def power_series.mk +/- def power_series.monomial +/- theorem power_series.monomial_eq_mk +/- theorem power_series.monomial_zero_eq_C +/- theorem power_series.monomial_zero_eq_C_apply +/- theorem power_series.mul_inv_of_unit +/- theorem power_series.nat_le_order +/- def power_series.order +/- theorem power_series.order_X +/- theorem power_series.order_X_pow +/- theorem power_series.order_add_of_order_eq +/- theorem power_series.order_eq +/- theorem power_series.order_eq_nat +/- theorem power_series.order_eq_top +/- theorem power_series.order_finite_of_coeff_ne_zero +/- theorem power_series.order_le +/- theorem power_series.order_monomial +/- theorem power_series.order_monomial_of_ne_zero +/- theorem power_series.order_mul +/- theorem power_series.order_mul_ge +/- theorem power_series.order_one +/- theorem power_series.order_zero +/- theorem power_series.span_X_is_prime +/- def power_series.trunc +/- theorem power_series.trunc_C +/- theorem power_series.trunc_add +/- theorem power_series.trunc_one +/- theorem power_series.trunc_zero +/- def power_series 2020-10-02 05:57:43 140db10 chore(data/monoid_algebra): Make the style in `lift` consistent (#4347) This continues from a06c87ed28989d062aa3d5324e880e62edf4a2f8, which changed add_monoid_algebra.lift but not monoid_algebra.lift. Note only the additive proof needs `erw` (to unfold `multiplicative`). ESTIMATED CHANGES Modified src/data/monoid_algebra.lean 2020-10-02 01:04:21 d41f386 chore(scripts): update nolints.txt (#4358) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-10-01 20:40:02 4ef680b feat(group_theory): subgroups of real numbers (#4334) This fills the last hole in the "Topology of R" section of our undergrad curriculum: additive subgroups of real numbers are either dense or cyclic. Most of this PR is supporting material about ordered abelian groups. Co-Authored-By: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/algebra/archimedean.lean + theorem decidable_linear_ordered_add_comm_group.exists_int_smul_near_of_pos' + theorem decidable_linear_ordered_add_comm_group.exists_int_smul_near_of_pos Modified src/algebra/group_power/basic.lean + theorem gsmul_nonneg + theorem nsmul_lt_nsmul +/- theorem nsmul_nonneg + theorem nsmul_pos Modified src/algebra/group_power/lemmas.lean + theorem gsmul_le_gsmul + theorem gsmul_le_gsmul_iff + theorem gsmul_lt_gsmul + theorem gsmul_lt_gsmul_iff + theorem gsmul_pos + theorem nsmul_le_nsmul_iff + theorem nsmul_lt_nsmul_iff Added src/group_theory/archimedean.lean + theorem add_subgroup.cyclic_of_min + theorem int.subgroup_cyclic Modified src/group_theory/subgroup.lean + theorem add_subgroup.closure_singleton_zero + theorem subgroup.bot_or_exists_ne_one + theorem subgroup.bot_or_nontrivial + theorem subgroup.closure_singleton_one + theorem subgroup.eq_bot_iff_forall + theorem subgroup.nontrivial_iff_exists_ne_one Modified src/group_theory/submonoid/membership.lean + theorem add_submonoid.closure_singleton_zero + theorem submonoid.closure_singleton_one Modified src/group_theory/submonoid/operations.lean + theorem submonoid.bot_or_exists_ne_one + theorem submonoid.bot_or_nontrivial + theorem submonoid.eq_bot_iff_forall + theorem submonoid.nontrivial_iff_exists_ne_one Modified src/order/bounds.lean + theorem is_glb.exists_between_self_add' + theorem is_glb.exists_between_self_add + theorem is_lub.exists_between_sub_self' + theorem is_lub.exists_between_sub_self Modified src/ring_theory/subring.lean + theorem add_subgroup.int_mul_mem Modified src/topology/instances/real.lean + theorem real.mem_closure_iff + theorem real.subgroup_dense_of_no_min + theorem real.subgroup_dense_or_cyclic 2020-10-01 18:43:08 4851857 chore(analysis/normed_space): define `norm_one_class` (#4323) Many normed rings have `∥1⊫1`. Add a typeclass mixin for this property. API changes: * drop `normed_field.norm_one`, use `norm_one` instead; * same with `normed_field.nnnorm_one`; * new typeclass `norm_one_class` for `∥1∥ = 1`; * add `list.norm_prod_le`, `list.norm_prod_le`, `finset.norm_prod_le`, `finset.norm_prod_le'`: norm of the product of finitely many elements is less than or equal to the product of their norms; versions with prime assume that a `list` or a `finset` is nonempty, while the other versions assume `[norm_one_class]`; * rename `norm_pow_le` to `norm_pow_le'`, new `norm_pow_le` assumes `[norm_one_class]` instead of `0 < n`; * add a few supporting lemmas about `list`s and `finset`s. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_mk Modified src/analysis/asymptotics.lean Modified src/analysis/normed_space/basic.lean +/- theorem eventually_norm_pow_le + theorem finset.norm_prod_le' + theorem finset.norm_prod_le + theorem list.norm_prod_le' + theorem list.norm_prod_le +/- theorem mul_left_bound +/- theorem mul_right_bound + theorem nnnorm_one +/- theorem norm_mul_le + theorem norm_pow_le' +/- theorem norm_pow_le + theorem normed_algebra.nontrivial + theorem normed_algebra.norm_one_class - theorem normed_algebra.to_nonzero - theorem normed_field.nnnorm_one - theorem normed_field.norm_one +/- theorem units.norm_pos Modified src/analysis/normed_space/units.lean Modified src/analysis/specific_limits.lean Modified src/data/finset/basic.lean + theorem finset.mk_cons + theorem finset.mk_zero + theorem finset.nonempty_cons + theorem finset.nonempty_mk_coe + theorem finset.not_nonempty_empty Modified src/data/padics/padic_integers.lean - theorem padic_int.norm_one 2020-10-01 17:37:36 d5834ee feat(data/real/irrational): add a lemma to deduce nat_degree from irrational root (#4349) This PR is splitted from #4301 . ESTIMATED CHANGES Modified src/data/real/irrational.lean + theorem nat_degree_gt_one_of_irrational_root 2020-10-01 17:37:34 ddaa325 feat(archive/imo): formalize IMO 1969 problem 1 (#4261) This is a formalization of the problem and solution for the first problem on the 1969 IMO: Prove that there are infinitely many natural numbers $a$ with the following property: the number $z = n^4 + a$ is not prime for any natural number $n$ ESTIMATED CHANGES Added archive/imo/imo1969_q1.lean + theorem factorization + theorem imo1969_q1 + theorem int_large + theorem int_not_prime + theorem left_factor_large + theorem polynomial_not_prime + theorem right_factor_large 2020-10-01 16:43:25 7767ef8 feat(number_theory/divisors): defines the finsets of divisors/proper divisors, perfect numbers, etc. (#4310) Defines `nat.divisors n` to be the set of divisors of `n`, and `nat.proper_divisors` to be the set of divisors of `n` other than `n`. Defines `nat.divisors_antidiagonal` in analogy to other `antidiagonal`s used to define convolutions Defines `nat.perfect`, the predicate for perfect numbers ESTIMATED CHANGES Added src/number_theory/divisors.lean + theorem nat.divisor_le + def nat.divisors + def nat.divisors_antidiagonal + theorem nat.divisors_antidiagonal_one + theorem nat.divisors_antidiagonal_zero + theorem nat.divisors_eq_proper_divisors_insert_self + theorem nat.divisors_zero + theorem nat.fst_mem_divisors_of_mem_antidiagonal + theorem nat.map_swap_divisors_antidiagonal + theorem nat.mem_divisors + theorem nat.mem_divisors_antidiagonal + theorem nat.mem_proper_divisors + def nat.perfect + theorem nat.perfect_iff_sum_divisors_eq_two_mul + theorem nat.perfect_iff_sum_proper_divisors + theorem nat.proper_divisors.not_self_mem + def nat.proper_divisors + theorem nat.proper_divisors_zero + theorem nat.snd_mem_divisors_of_mem_antidiagonal + theorem nat.sum_divisors_eq_sum_proper_divisors_add_self + theorem nat.swap_mem_divisors_antidiagonal 2020-10-01 14:28:11 f10dda0 feat(data/nat/basic): simp-lemmas for bit0 and bit1 mod two (#4343) Co-Authored-By: Gabriel Ebner ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.bit0_mod_two + theorem nat.bit1_mod_two 2020-10-01 14:28:07 0fc7b29 feat(data/mv_polynomial): stub on invertible elements (#4320) More from the Witt vector branch. ESTIMATED CHANGES Added src/data/mv_polynomial/invertible.lean Modified src/ring_theory/algebra_tower.lean + def is_scalar_tower.invertible.algebra_tower + def is_scalar_tower.invertible_algebra_coe_nat 2020-10-01 14:28:01 3d58fce feat(linear_algebra): determinant of `matrix.block_diagonal` (#4300) This PR shows the determinant of `matrix.block_diagonal` is the product of the determinant of each subblock. The only contributing permutations in the expansion of the determinant are those which map each block to the same block. Each of those permutations has the form `equiv.prod_congr_left σ`. Using `equiv.perm.extend` and `equiv.prod_congr_right`, we can compute the sign of `equiv.prod_congr_left σ`, and with a bit of algebraic manipulation we reach the conclusion. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem int.coe_prod + theorem list.prod_to_finset + theorem nat.coe_prod + theorem units.coe_prod Modified src/data/equiv/basic.lean + theorem equiv.perm.eq_of_prod_extend_right_ne + theorem equiv.perm.fst_prod_extend_right + def equiv.perm.prod_extend_right + theorem equiv.perm.prod_extend_right_apply_eq + theorem equiv.perm.prod_extend_right_apply_ne + def equiv.prod_congr_left + theorem equiv.prod_congr_left_apply + theorem equiv.prod_congr_left_trans_prod_comm + theorem equiv.prod_congr_refl_left + theorem equiv.prod_congr_refl_right + def equiv.prod_congr_right + theorem equiv.prod_congr_right_apply + theorem equiv.prod_congr_right_trans_prod_comm + theorem equiv.sigma_congr_right_sigma_equiv_prod + theorem equiv.sigma_equiv_prod_sigma_congr_right Modified src/data/fintype/basic.lean + theorem finset.univ_pi_univ Modified src/group_theory/perm/sign.lean +/- theorem equiv.perm.card_support_swap +/- theorem equiv.perm.eq_swap_of_is_cycle_of_apply_apply_eq_self +/- theorem equiv.perm.is_cycle_swap +/- theorem equiv.perm.is_cycle_swap_mul +/- theorem equiv.perm.is_cycle_swap_mul_aux₁ +/- theorem equiv.perm.is_cycle_swap_mul_aux₂ + theorem equiv.perm.prod_prod_extend_right +/- theorem equiv.perm.sign_cycle + theorem equiv.perm.sign_prod_congr_left + theorem equiv.perm.sign_prod_congr_right + theorem equiv.perm.sign_prod_extend_right +/- theorem equiv.perm.support_swap Modified src/linear_algebra/determinant.lean + theorem matrix.det_block_diagonal 2020-10-01 14:27:59 13e9cc4 feat(linear_algebra/exterior_algebra): Add an exterior algebra (#4297) This adds the basic exterior algebra definitions using a very similar approach to `universal_enveloping_algebra`. It's based off the `exterior_algebra` branch, dropping the `wedge` stuff for now as development in multilinear maps is happening elsewhere. ESTIMATED CHANGES Added src/linear_algebra/exterior_algebra.lean + theorem exterior_algebra.comp_ι_square_zero + theorem exterior_algebra.hom_ext + def exterior_algebra.lift + theorem exterior_algebra.lift_comp_ι + theorem exterior_algebra.lift_unique + theorem exterior_algebra.lift_ι_apply + inductive exterior_algebra.rel + def exterior_algebra.ι + theorem exterior_algebra.ι_comp_lift + theorem exterior_algebra.ι_square_zero + def exterior_algebra 2020-10-01 14:27:57 268073a feat(geometry/manifold): derivative of the zero section of the tangent bundle (#4292) We show that the zero section of the tangent bundle to a smooth manifold is smooth, and compute its derivative. Along the way, some streamlining of supporting material. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean +/- theorem fderiv_const +/- theorem fderiv_id' + theorem fderiv_within_eq_fderiv Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/times_cont_mdiff.lean + theorem basic_smooth_bundle_core.smooth_const_section + theorem smooth.mdifferentiable + theorem smooth.mdifferentiable_at + theorem smooth.mdifferentiable_within_at + theorem tangent_bundle.smooth_zero_section + theorem tangent_bundle.tangent_map_tangent_bundle_pure + def tangent_bundle.zero_section Modified src/topology/topological_fiber_bundle.lean + theorem topological_fiber_bundle_core.continuous_const_section + theorem topological_fiber_bundle_core.local_triv'_apply - theorem topological_fiber_bundle_core.local_triv'_fst - theorem topological_fiber_bundle_core.local_triv'_inv_fst + theorem topological_fiber_bundle_core.local_triv'_symm_apply + theorem topological_fiber_bundle_core.local_triv_apply - theorem topological_fiber_bundle_core.local_triv_fst +/- theorem topological_fiber_bundle_core.mem_local_triv_at_source 2020-10-01 14:27:55 11cdc8c feat(data/polynomial/*) : as_sum_support (#4286) ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/degree/basic.lean - theorem polynomial.as_sum + theorem polynomial.as_sum_range + theorem polynomial.as_sum_support Modified src/data/polynomial/eval.lean + theorem polynomial.eval_finset_sum Modified src/data/polynomial/monic.lean 2020-10-01 12:28:37 0ccc157 feat(data/nat/fact, analysis/specific_limits): rename nat.fact, add few lemmas about its behaviour along at_top (#4309) Main content : - Rename `nat.fact` to `nat.factorial`, and add notation `n!` in locale `factorial`. This fixes #2786 - Generalize `prod_inv_distrib` to `comm_group_with_zero` *without any nonzero assumptions* - `factorial_tendsto_at_top` : n! --> infinity as n--> infinity - `tendsto_factorial_div_pow_self_at_top` : n!/(n^n) --> 0 as n --> infinity ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.pow_eq_prod_const + theorem finset.prod_inv_distrib' Modified src/algebra/big_operators/intervals.lean - theorem finset.prod_Ico_id_eq_fact + theorem finset.prod_Ico_id_eq_factorial + theorem finset.prod_range_add_one_eq_factorial Modified src/algebra/big_operators/order.lean + theorem finset.prod_le_one Modified src/analysis/specific_limits.lean + theorem factorial_tendsto_at_top + theorem tendsto_factorial_div_pow_self_at_top Modified src/data/complex/exponential.lean - theorem complex.sum_div_fact_le + theorem complex.sum_div_factorial_le Modified src/data/fintype/basic.lean +/- theorem fintype.card_perm +/- theorem length_perms_of_list Modified src/data/list/perm.lean +/- theorem list.length_permutations Modified src/data/nat/choose/basic.lean - theorem nat.choose_eq_fact_div_fact + theorem nat.choose_eq_factorial_div_factorial - theorem nat.choose_mul_fact_mul_fact + theorem nat.choose_mul_factorial_mul_factorial - theorem nat.fact_mul_fact_dvd_fact + theorem nat.factorial_mul_factorial_dvd_factorial Modified src/data/nat/choose/dvd.lean Deleted src/data/nat/fact.lean - theorem nat.dvd_fact - def nat.fact - theorem nat.fact_dvd_fact - theorem nat.fact_eq_one - theorem nat.fact_inj - theorem nat.fact_le - theorem nat.fact_lt - theorem nat.fact_mul_pow_le_fact - theorem nat.fact_ne_zero - theorem nat.fact_one - theorem nat.fact_pos - theorem nat.fact_succ - theorem nat.fact_zero - theorem nat.monotone_fact - theorem nat.one_lt_fact Added src/data/nat/factorial.lean + theorem nat.dvd_factorial + def nat.factorial + theorem nat.factorial_dvd_factorial + theorem nat.factorial_eq_one + theorem nat.factorial_inj + theorem nat.factorial_le + theorem nat.factorial_lt + theorem nat.factorial_mul_pow_le_factorial + theorem nat.factorial_ne_zero + theorem nat.factorial_one + theorem nat.factorial_pos + theorem nat.factorial_succ + theorem nat.factorial_zero + theorem nat.monotone_factorial + theorem nat.one_lt_factorial + theorem nat.self_le_factorial Modified src/data/nat/multiplicity.lean - theorem nat.prime.multiplicity_fact + theorem nat.prime.multiplicity_factorial - theorem nat.prime.pow_dvd_fact_iff + theorem nat.prime.pow_dvd_factorial_iff Modified src/data/nat/prime.lean - theorem nat.prime.dvd_fact + theorem nat.prime.dvd_factorial Modified src/number_theory/primorial.lean Modified src/number_theory/quadratic_reciprocity.lean +/- theorem zmod.wilsons_lemma 2020-10-01 09:16:51 9c241b0 feat(*): a few more tests for `summable`, docstrings (#4325) ### Important new theorems: * `summable_geometric_iff_norm_lt_1`: a geometric series in a normed field is summable iff the norm of the common ratio is less than 1; * `summable.tendsto_cofinite_zero`: divergence test: if `f` is a `summable` function, then `f x` tends to zero along `cofinite`; ### API change * rename `cauchy_seq_of_tendsto_nhds` to `filter.tendsto.cauchy_seq` to enable dot syntax. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem summable_geometric_iff_norm_lt_1 Modified src/order/filter/cofinite.lean + theorem finset.eventually_cofinite_nmem + theorem set.finite.compl_mem_cofinite + theorem set.finite.eventually_cofinite_nmem +/- theorem set.infinite_iff_frequently_cofinite Modified src/topology/algebra/infinite_sum.lean + theorem summable.tendsto_cofinite_zero + theorem summable.vanishing +/- theorem summable_iff_cauchy_seq_finset Modified src/topology/instances/ennreal.lean +/- theorem nnreal.exists_le_has_sum_of_le +/- theorem nnreal.has_sum_iff_tendsto_nat +/- theorem nnreal.summable_of_le +/- theorem nnreal.tendsto_sum_nat_add +/- theorem nnreal.tsum_comp_le_tsum_of_inj Modified src/topology/sequences.lean Modified src/topology/uniform_space/cauchy.lean - theorem cauchy_seq_of_tendsto_nhds + theorem filter.tendsto.cauchy_map + theorem filter.tendsto.cauchy_seq 2020-10-01 09:16:49 fb2b1de feat(algebra/ordered_ring): ask for 0 < 1 earlier. (#4296) It used to be that `linear_ordered_semiring` asked for `0 < 1`, while `ordered_semiring` didn't. I'd prefer that `ordered_semiring` asks for this already: 1. because lots of interesting examples (e.g. rings of operators) satisfy this property 2. because the rest of mathlib doesn't care ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean Modified src/order/filter/filter_product.lean 2020-10-01 07:41:14 9ceb114 feat(analysis/normed_space/inner_product): Define the inner product based on `is_R_or_C` (#4057) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem abs_norm_eq_norm Modified src/analysis/normed_space/hahn_banach.lean Added src/analysis/normed_space/inner_product.lean + theorem abs_inner_le_norm + theorem abs_real_inner_div_norm_mul_norm_eq_one_iff + theorem abs_real_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul + theorem abs_real_inner_div_norm_mul_norm_le_one + theorem abs_real_inner_le_norm + def bilin_form_of_real_inner + theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero + theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero + def euclidean_space + theorem exists_norm_eq_infi_of_complete_convex + theorem exists_norm_eq_infi_of_complete_subspace + theorem findim_euclidean_space + theorem findim_euclidean_space_fin + def has_inner.is_R_or_C_to_real + theorem inner_abs_conj_sym + theorem inner_add_add_self + theorem inner_add_left + theorem inner_add_right + theorem inner_conj_sym + theorem inner_eq_zero_sym + theorem inner_im_symm + theorem inner_mul_conj_re_abs + theorem inner_mul_inner_self_le + theorem inner_neg_left + theorem inner_neg_neg + theorem inner_neg_right + structure inner_product_space.core + def inner_product_space.is_R_or_C_to_real + theorem inner_product_space.of_core.abs_inner_le_norm + theorem inner_product_space.of_core.inner_abs_conj_sym + theorem inner_product_space.of_core.inner_add_add_self + theorem inner_product_space.of_core.inner_add_left + theorem inner_product_space.of_core.inner_add_right + theorem inner_product_space.of_core.inner_conj_sym + theorem inner_product_space.of_core.inner_im_symm + theorem inner_product_space.of_core.inner_mul_conj_re_abs + theorem inner_product_space.of_core.inner_mul_inner_self_le + theorem inner_product_space.of_core.inner_neg_left + theorem inner_product_space.of_core.inner_neg_right + theorem inner_product_space.of_core.inner_norm_sq_eq_inner_self + theorem inner_product_space.of_core.inner_re_symm + theorem inner_product_space.of_core.inner_self_eq_norm_square + theorem inner_product_space.of_core.inner_self_eq_zero + theorem inner_product_space.of_core.inner_self_im_zero + theorem inner_product_space.of_core.inner_self_nonneg + theorem inner_product_space.of_core.inner_self_nonneg_im + theorem inner_product_space.of_core.inner_self_re_to_K + theorem inner_product_space.of_core.inner_smul_left + theorem inner_product_space.of_core.inner_smul_right + theorem inner_product_space.of_core.inner_sub_left + theorem inner_product_space.of_core.inner_sub_right + theorem inner_product_space.of_core.inner_sub_sub_self + theorem inner_product_space.of_core.inner_zero_left + theorem inner_product_space.of_core.inner_zero_right + theorem inner_product_space.of_core.norm_eq_sqrt_inner + def inner_product_space.of_core.norm_sq + theorem inner_product_space.of_core.sqrt_norm_sq_eq_norm + def inner_product_space.of_core.to_has_inner + def inner_product_space.of_core.to_has_norm + def inner_product_space.of_core.to_normed_group + def inner_product_space.of_core.to_normed_space + def inner_product_space.of_core + theorem inner_re_symm + theorem inner_re_zero_left + theorem inner_re_zero_right + theorem inner_self_abs_to_K + theorem inner_self_conj + theorem inner_self_eq_norm_square + theorem inner_self_eq_zero + theorem inner_self_im_zero + theorem inner_self_nonneg + theorem inner_self_nonneg_im + theorem inner_self_nonpos + theorem inner_self_re_abs + theorem inner_self_re_to_K + theorem inner_smul_left + theorem inner_smul_right + theorem inner_sub_left + theorem inner_sub_right + theorem inner_sub_sub_self + theorem inner_sum + theorem inner_sum_smul_sum_smul_of_sum_eq_zero + theorem inner_zero_left + theorem inner_zero_right + theorem linear_independent_of_ne_zero_of_inner_eq_zero + theorem norm_add_mul_self + theorem norm_add_mul_self_real + theorem norm_add_pow_two + theorem norm_add_pow_two_real + theorem norm_add_square_eq_norm_square_add_norm_square_iff_real_inner_eq_zero + theorem norm_add_square_eq_norm_square_add_norm_square_real + theorem norm_eq_infi_iff_inner_eq_zero + theorem norm_eq_infi_iff_real_inner_eq_zero + theorem norm_eq_infi_iff_real_inner_le_zero + theorem norm_eq_sqrt_inner + theorem norm_eq_sqrt_real_inner + theorem norm_sub_mul_self + theorem norm_sub_mul_self_real + theorem norm_sub_pow_two + theorem norm_sub_pow_two_real + theorem norm_sub_square_eq_norm_square_add_norm_square_iff_real_inner_eq_zero + theorem norm_sub_square_eq_norm_square_add_norm_square_real + def orthogonal_projection + theorem orthogonal_projection_def + def orthogonal_projection_fn + theorem orthogonal_projection_fn_eq + theorem orthogonal_projection_fn_inner_eq_zero + theorem orthogonal_projection_fn_mem + theorem orthogonal_projection_inner_eq_zero + theorem orthogonal_projection_mem + def orthogonal_projection_of_complete + theorem parallelogram_law + theorem parallelogram_law_with_norm + theorem parallelogram_law_with_norm_real + theorem real_inner_add_add_self + theorem real_inner_add_sub_eq_zero_iff + theorem real_inner_comm + theorem real_inner_div_norm_mul_norm_eq_neg_one_iff + theorem real_inner_div_norm_mul_norm_eq_neg_one_of_ne_zero_of_neg_mul + theorem real_inner_div_norm_mul_norm_eq_one_iff + theorem real_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_pos_mul + theorem real_inner_eq_norm_add_mul_self_sub_norm_mul_self_sub_norm_mul_self_div_two + theorem real_inner_eq_norm_mul_self_add_norm_mul_self_sub_norm_sub_mul_self_div_two + theorem real_inner_eq_re_inner + theorem real_inner_mul_inner_self_le + theorem real_inner_self_abs + theorem real_inner_self_eq_norm_square + theorem real_inner_self_nonneg + theorem real_inner_self_nonpos + theorem real_inner_smul_left + theorem real_inner_smul_right + theorem real_inner_smul_self_left + theorem real_inner_smul_self_right + theorem real_inner_sub_sub_self + def sesq_form_of_inner + theorem submodule.Inf_orthogonal + theorem submodule.findim_add_inf_findim_orthogonal + theorem submodule.inf_orthogonal + theorem submodule.infi_orthogonal + theorem submodule.inner_left_of_mem_orthogonal + theorem submodule.inner_right_of_mem_orthogonal + theorem submodule.is_compl_orthogonal_of_is_complete_real + theorem submodule.le_orthogonal_orthogonal + theorem submodule.mem_orthogonal' + theorem submodule.mem_orthogonal + def submodule.orthogonal + theorem submodule.orthogonal_disjoint + theorem submodule.orthogonal_gc + theorem submodule.orthogonal_le + theorem submodule.sup_orthogonal_inf_of_is_complete + theorem submodule.sup_orthogonal_of_is_complete + theorem sum_inner Deleted src/analysis/normed_space/real_inner_product.lean - theorem abs_inner_div_norm_mul_norm_eq_one_iff - theorem abs_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul - theorem abs_inner_div_norm_mul_norm_le_one - theorem abs_inner_le_norm - def bilin_form_of_inner - theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero - theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero - def euclidean_space - theorem exists_norm_eq_infi_of_complete_convex - theorem exists_norm_eq_infi_of_complete_subspace - theorem findim_euclidean_space - theorem findim_euclidean_space_fin - theorem inner_add_add_self - theorem inner_add_left - theorem inner_add_right - theorem inner_add_sub_eq_zero_iff - theorem inner_comm - theorem inner_div_norm_mul_norm_eq_neg_one_iff - theorem inner_div_norm_mul_norm_eq_neg_one_of_ne_zero_of_neg_mul - theorem inner_div_norm_mul_norm_eq_one_iff - theorem inner_div_norm_mul_norm_eq_one_of_ne_zero_of_pos_mul - theorem inner_eq_norm_add_mul_self_sub_norm_mul_self_sub_norm_mul_self_div_two - theorem inner_eq_norm_add_mul_self_sub_norm_sub_mul_self_div_four - theorem inner_eq_norm_mul_self_add_norm_mul_self_sub_norm_sub_mul_self_div_two - theorem inner_mul_inner_self_le - theorem inner_neg_left - theorem inner_neg_neg - theorem inner_neg_right - structure inner_product_space.core - theorem inner_product_space.of_core.abs_inner_le_norm - theorem inner_product_space.of_core.inner_add_add_self - theorem inner_product_space.of_core.inner_add_left - theorem inner_product_space.of_core.inner_add_right - theorem inner_product_space.of_core.inner_comm - theorem inner_product_space.of_core.inner_mul_inner_self_le - theorem inner_product_space.of_core.inner_self_eq_norm_square - theorem inner_product_space.of_core.inner_smul_left - theorem inner_product_space.of_core.inner_smul_right - theorem inner_product_space.of_core.norm_eq_sqrt_inner - def inner_product_space.of_core.to_has_inner - def inner_product_space.of_core.to_has_norm - def inner_product_space.of_core.to_normed_group - def inner_product_space.of_core.to_normed_space - def inner_product_space.of_core - theorem inner_self_eq_norm_square - theorem inner_self_eq_zero - theorem inner_self_nonneg - theorem inner_self_nonpos - theorem inner_smul_left - theorem inner_smul_right - theorem inner_smul_self_left - theorem inner_smul_self_right - theorem inner_sub_left - theorem inner_sub_right - theorem inner_sub_sub_self - theorem inner_sum - theorem inner_sum_smul_sum_smul_of_sum_eq_zero - theorem inner_zero_left - theorem inner_zero_right - theorem linear_independent_of_ne_zero_of_inner_eq_zero - theorem norm_add_mul_self - theorem norm_add_pow_two - theorem norm_add_square_eq_norm_square_add_norm_square - theorem norm_add_square_eq_norm_square_add_norm_square_iff_inner_eq_zero - theorem norm_eq_infi_iff_inner_eq_zero - theorem norm_eq_infi_iff_inner_le_zero - theorem norm_sub_mul_self - theorem norm_sub_pow_two - theorem norm_sub_square_eq_norm_square_add_norm_square - theorem norm_sub_square_eq_norm_square_add_norm_square_iff_inner_eq_zero - def orthogonal_projection - theorem orthogonal_projection_def - def orthogonal_projection_fn - theorem orthogonal_projection_fn_eq - theorem orthogonal_projection_fn_inner_eq_zero - theorem orthogonal_projection_fn_mem - theorem orthogonal_projection_inner_eq_zero - theorem orthogonal_projection_mem - def orthogonal_projection_of_complete - theorem parallelogram_law - theorem parallelogram_law_with_norm - theorem submodule.Inf_orthogonal - theorem submodule.findim_add_inf_findim_orthogonal - theorem submodule.inf_orthogonal - theorem submodule.infi_orthogonal - theorem submodule.inner_left_of_mem_orthogonal - theorem submodule.inner_right_of_mem_orthogonal - theorem submodule.is_compl_orthogonal_of_is_complete - theorem submodule.le_orthogonal_orthogonal - theorem submodule.mem_orthogonal' - theorem submodule.mem_orthogonal - def submodule.orthogonal - theorem submodule.orthogonal_disjoint - theorem submodule.orthogonal_gc - theorem submodule.orthogonal_le - theorem submodule.sup_orthogonal_inf_of_is_complete - theorem submodule.sup_orthogonal_of_is_complete - theorem sum_inner Modified src/data/complex/is_R_or_C.lean + theorem is_R_or_C.I_im' + theorem is_R_or_C.abs_sqr_re_add_conj' + theorem is_R_or_C.abs_sqr_re_add_conj + theorem is_R_or_C.conj_div + theorem is_R_or_C.conj_inv + theorem is_R_or_C.conj_mul_eq_norm_sq_left + def is_R_or_C.conj_to_ring_equiv + theorem is_R_or_C.div_re_of_real +/- theorem is_R_or_C.inv_def + theorem is_R_or_C.norm_conj +/- theorem is_R_or_C.of_real_add +/- theorem is_R_or_C.of_real_mul + theorem is_R_or_C.of_real_mul_re +/- theorem is_R_or_C.of_real_neg + theorem is_R_or_C.re_eq_abs_of_mul_conj + theorem is_R_or_C.sqrt_norm_sq_eq_norm + theorem is_R_or_C.zero_re' +/- theorem is_R_or_C.zero_re Modified src/geometry/euclidean/basic.lean +/- theorem inner_product_geometry.inner_eq_zero_iff_angle_eq_pi_div_two Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/monge_point.lean Modified src/geometry/euclidean/triangle.lean Modified src/geometry/manifold/instances/real.lean +/- def euclidean_quadrant Modified src/linear_algebra/sesquilinear_form.lean + theorem sesq_form.is_add_monoid_hom_left + theorem sesq_form.is_add_monoid_hom_right + theorem sesq_form.map_sum_left + theorem sesq_form.map_sum_right Modified src/ring_theory/algebra.lean - def subspace.restrict_scalars 2020-10-01 02:57:05 1b97326 feat(data/fintype): pigeonhole principles (#4096) Add pigeonhole principles for finitely and infinitely many pigeons in finitely many holes. There are also strong versions of these, which say that there is a hole containing at least as many pigeons as the average number of pigeons per hole. Fixes #2272. ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.card_eq_sum_card_fiberwise + theorem finset.prod_fiberwise_of_maps_to Modified src/algebra/big_operators/order.lean + theorem finset.card_le_mul_card_image_of_maps_to + theorem finset.exists_lt_of_sum_lt + theorem finset.sum_fiberwise_le_sum_of_sum_fiber_nonneg + theorem finset.sum_le_sum_fiberwise_of_sum_fiber_nonpos Modified src/algebra/ordered_group.lean Added src/combinatorics/pigeonhole.lean + theorem finset.exists_card_fiber_le_of_card_le_mul + theorem finset.exists_card_fiber_lt_of_card_lt_mul + theorem finset.exists_le_card_fiber_of_mul_le_card_of_maps_to + theorem finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum + theorem finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum + theorem finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to + theorem finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum + theorem finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum + theorem finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul + theorem finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul + theorem finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul + theorem finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul + theorem fintype.exists_card_fiber_le_of_card_le_mul + theorem fintype.exists_card_fiber_lt_of_card_lt_mul + theorem fintype.exists_le_card_fiber_of_mul_le_card + theorem fintype.exists_le_sum_fiber_of_nsmul_le_sum + theorem fintype.exists_lt_card_fiber_of_mul_lt_card + theorem fintype.exists_lt_sum_fiber_of_nsmul_lt_sum + theorem fintype.exists_sum_fiber_le_of_sum_le_nsmul + theorem fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Modified src/data/finset/basic.lean + theorem finset.bind_filter_eq_of_maps_to + theorem finset.exists_ne_map_eq_of_card_lt_of_maps_to + theorem finset.fiber_card_ne_zero_iff_mem_image + theorem finset.fiber_nonempty_iff_mem_image + theorem finset.filter_mem_image_eq_image Modified src/data/fintype/basic.lean + theorem finset.univ_nonempty + theorem fintype.exists_infinite_fiber + theorem fintype.exists_ne_map_eq_of_card_lt + theorem fintype.exists_ne_map_eq_of_infinite Modified src/data/fintype/card.lean 2020-10-01 01:07:36 af99416 chore(scripts): update nolints.txt (#4341) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-30 20:29:32 bcc7c02 feat(geometry/manifold): smooth bundled maps (#3641) ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.mul + theorem times_cont_diff.smul +/- theorem times_cont_diff_add + theorem times_cont_diff_at.mul + theorem times_cont_diff_at.smul + theorem times_cont_diff_mul +/- theorem times_cont_diff_neg + theorem times_cont_diff_on.mul + theorem times_cont_diff_on.smul + theorem times_cont_diff_smul + theorem times_cont_diff_within_at.mul + theorem times_cont_diff_within_at.smul Renamed src/geometry/algebra/lie_group.lean to src/geometry/manifold/algebra/lie_group.lean - theorem smooth.mul - theorem smooth_left_mul - theorem smooth_mul - theorem smooth_on.mul - theorem smooth_right_mul Added src/geometry/manifold/algebra/monoid.lean + structure has_smooth_add_core + structure has_smooth_mul_core + theorem smooth.mul + structure smooth_add_monoid_morphism + structure smooth_monoid_morphism + theorem smooth_mul + theorem smooth_mul_left + theorem smooth_mul_right + theorem smooth_on.mul Added src/geometry/manifold/algebra/smooth_functions.lean + def smooth_map.C Added src/geometry/manifold/algebra/structures.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/charted_space.lean Renamed src/geometry/manifold/real_instances.lean to src/geometry/manifold/instances/real.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean - theorem smooth_manifold_with_corners.compatible + theorem smooth_manifold_with_corners_of_times_cont_diff_on Modified src/geometry/manifold/times_cont_mdiff.lean + theorem smooth.smul + theorem smooth_smul Modified src/geometry/manifold/times_cont_mdiff_map.lean +/- theorem times_cont_mdiff_map.coe_inj +/- def times_cont_mdiff_map.comp +/- theorem times_cont_mdiff_map.comp_apply +/- def times_cont_mdiff_map.const +/- def times_cont_mdiff_map.id Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/monoid.lean Modified src/topology/continuous_map.lean +/- def continuous_map.comp +/- def continuous_map.const Modified src/topology/instances/real.lean Modified src/topology/path_connected.lean 2020-09-30 19:43:08 c04e339 feat(archive/imo): formalize IMO 1959 problem 1 (#4340) This is a formalization of the problem and solution for the first problem on the 1959 IMO: Prove that the fraction (21n+4)/(14n+3) is irreducible for every natural number n. ESTIMATED CHANGES Added archive/imo/imo1959_q1.lean + theorem calculation + theorem imo1959_q1 2020-09-30 18:14:45 23b04b0 chore(ring_theory/algebra): Mark algebra.mem_top as simp (#4339) This is consistent with `subsemiring.mem_top` and `submonoid.mem_top`, both of which are marked simp. ESTIMATED CHANGES Modified src/ring_theory/algebra.lean +/- theorem algebra.mem_top 2020-09-30 18:14:43 decd67c feat(analysis/convex): slope_mono_adjacent (#4307) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem concave_on.slope_mono_adjacent + theorem concave_on_real_iff_slope_mono_adjacent + theorem convex_on.slope_mono_adjacent + theorem convex_on_real_iff_slope_mono_adjacent 2020-09-30 16:47:25 a06c87e chore(*): Tidy some proofs and variables (#4338) ESTIMATED CHANGES Modified src/algebra/free_algebra.lean +/- theorem free_algebra.hom_ext +/- def free_algebra.lift +/- theorem free_algebra.lift_comp_ι +/- theorem free_algebra.lift_unique +/- theorem free_algebra.lift_ι_apply +/- theorem free_algebra.ι_comp_lift Modified src/data/monoid_algebra.lean 2020-09-30 16:47:23 9921fe7 fix(ring_theory/algebra): Fix typo "algbera" (#4337) Introduced in e57fc3d6c142835dc8566aa28e812f7688f14512 ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean Modified src/ring_theory/algebra.lean - theorem algebra.bijective_algbera_map_iff + theorem algebra.bijective_algebra_map_iff - theorem algebra.surjective_algbera_map_iff + theorem algebra.surjective_algebra_map_iff 2020-09-30 14:42:25 05038da feat(ring_theory/algebra): some lemmas about numerals in algebras (#4327) ESTIMATED CHANGES Modified src/algebra/group_power/basic.lean Modified src/ring_theory/algebra.lean + theorem algebra.bit0_smul_bit0 + theorem algebra.bit0_smul_bit1 + theorem algebra.bit0_smul_one + theorem algebra.bit1_smul_bit0 + theorem algebra.bit1_smul_bit1 + theorem algebra.bit1_smul_one 2020-09-30 09:51:53 5fd2037 chore(*): rename is_unit_pow to is_unit.pow (#4329) enable dot notation by renaming is_unit_pow to is_unit.pow ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem is_unit.pow - theorem is_unit_pow Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/rational_root.lean 2020-09-30 09:51:51 ac797ad feat(topology/bounded_continuous_function): normed_comm_ring structure on bounded continuous functions (#4326) An instance of the new (#4291) class `normed_comm_ring`. ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean 2020-09-30 09:51:49 e53aa87 feat(order/basic): lemmas about `strict_mono_incr_on` (#4313) Also move the section about `order_dual` up to use it in the proofs. Non-BC API changes: * Now `strict_mono_incr_on` and `strict_mono_decr_on` take `x` and `y` as `⦃⦄` args. ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/data/set/function.lean + theorem strict_mono_decr_on.inj_on + theorem strict_mono_incr_on.inj_on Modified src/order/basic.lean + theorem order_dual.dual_compares - theorem strict_mono.compares +/- theorem strict_mono.injective +/- theorem strict_mono.le_iff_le +/- theorem strict_mono.lt_iff_lt + theorem strict_mono_decr_on.le_iff_le + theorem strict_mono_decr_on.lt_iff_lt + theorem strict_mono_incr_on.le_iff_le + theorem strict_mono_incr_on.lt_iff_lt + theorem subtype.coe_le_coe + theorem subtype.coe_lt_coe + theorem subtype.mk_le_mk + theorem subtype.mk_lt_mk Modified src/order/rel_iso.lean + theorem order_iso.coe_to_order_embedding + def order_iso.to_order_embedding 2020-09-30 09:51:46 e1c0b0a feat(ring_theory/jacobson): Integral extension of Jacobson rings are Jacobson (#4304) Main statement given by `is_jacobson_of_is_integral ` ESTIMATED CHANGES Modified src/ring_theory/ideal/over.lean + theorem ideal.eq_bot_of_comap_eq_bot + theorem ideal.exists_ideal_over_maximal_of_is_integral Modified src/ring_theory/jacobson.lean + theorem ideal.is_jacobson_of_is_integral Modified src/ring_theory/jacobson_ideal.lean + theorem ideal.comap_jacobson 2020-09-30 09:51:44 ff66d92 chore(category_theory/limits): facts about opposites of limit cones (#4250) Simple facts about limit cones and opposite categories. ESTIMATED CHANGES Modified src/category_theory/adjunction/opposites.lean Modified src/category_theory/limits/cones.lean + def category_theory.functor.map_cocone_op + def category_theory.functor.map_cone_op + def category_theory.limits.cocone.op + def category_theory.limits.cocone.unop + def category_theory.limits.cocone_equivalence_op_cone_op + def category_theory.limits.cone.op + def category_theory.limits.cone.unop Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.op + def category_theory.limits.is_colimit.unop + def category_theory.limits.is_colimit_equiv_is_limit_op + def category_theory.limits.is_limit.op + def category_theory.limits.is_limit.unop + def category_theory.limits.is_limit_equiv_is_colimit_op Modified src/category_theory/monad/equiv_mon.lean + def category_theory.Monad.Monad_Mon_equiv.counit_iso + def category_theory.Monad.Monad_Mon_equiv.unit_iso + def category_theory.Monad.Monad_Mon_equiv.unit_iso_hom + def category_theory.Monad.Monad_Mon_equiv.unit_iso_inv - def category_theory.Monad.of_to_mon_end_iso - def category_theory.Monad.to_of_mon_end_iso Modified src/category_theory/opposites.lean + def category_theory.equivalence.op + def category_theory.equivalence.unop + def category_theory.functor.op_hom + def category_theory.functor.op_inv + theorem category_theory.nat_iso.remove_op_hom + theorem category_theory.nat_iso.remove_op_inv +/- theorem category_theory.nat_iso.unop_hom +/- theorem category_theory.nat_iso.unop_inv + theorem category_theory.nat_trans.remove_left_op_app + theorem category_theory.nat_trans.remove_op_id - theorem category_theory.nat_trans.right_op_app +/- theorem category_theory.nat_trans.unop_id Modified src/data/opposite.lean 2020-09-30 07:56:48 da66bb8 feat(*): preparations for roots of unity (#4322) ESTIMATED CHANGES Modified src/algebra/group_power/lemmas.lean + theorem is_unit_of_pow_eq_one Modified src/data/int/gcd.lean + theorem pow_gcd_eq_one Modified src/data/polynomial/ring_division.lean +/- theorem polynomial.card_nth_roots +/- theorem polynomial.mem_nth_roots +/- def polynomial.nth_roots + theorem polynomial.nth_roots_zero Modified src/group_theory/order_of_element.lean 2020-09-29 14:16:59 743f82c feat(algebra/pointwise): Add missing to_additive on finset lemmas (#4306) ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem finset.add_card_le 2020-09-29 12:11:48 669a349 feat(data/prod): mk injective lemmas (#4319) More scattered lemmmas from the Witt vector branch. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/data/prod.lean + theorem prod.mk.inj_left + theorem prod.mk.inj_right 2020-09-29 12:11:45 d301d43 feat(algebra/invertible): invertible.copy (#4318) A useful gadget from the Witt vector project. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/algebra/invertible.lean + def invertible.copy 2020-09-29 12:11:43 fa09f49 feat(analysis/special_functions/*): prove that `exp` etc are measurable (#4314) The modifications in `measure_theory/borel_space` are a part of the proof of measurability of `x^y`, `x : ennreal`, `y : ℝ`, but this proof depends on a refactoring of `arcsin` I'm going to PR soon. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem complex.measurable_exp + theorem measurable.cexp + theorem measurable.exp + theorem measurable.log +/- theorem real.continuous_log' + theorem real.measurable_exp + theorem real.measurable_log Modified src/analysis/special_functions/trigonometric.lean + theorem complex.measurable_cos + theorem complex.measurable_cosh + theorem complex.measurable_sin + theorem complex.measurable_sinh + theorem measurable.ccos + theorem measurable.ccosh + theorem measurable.cos + theorem measurable.cosh + theorem measurable.csin + theorem measurable.csinh + theorem measurable.sin + theorem measurable.sinh + theorem real.measurable_cos + theorem real.measurable_cosh + theorem real.measurable_sin + theorem real.measurable_sinh Modified src/measure_theory/borel_space.lean + theorem ennreal.measurable_mul + theorem ennreal.measurable_of_measurable_nnreal_prod + theorem ennreal.measurable_sub + theorem ennreal.measurable_to_nnreal + theorem ennreal.measurable_to_real +/- theorem measurable.ennreal_mul +/- theorem measurable.ennreal_sub - theorem measurable_ennreal_to_real - theorem measurable_to_nnreal Modified src/measure_theory/measurable_space.lean +/- theorem measurable_const 2020-09-29 12:11:41 744e067 feat(linear_algebra/dual): transpose of linear maps (#4302) This is filling an easy hole from the undergrad curriculum page: the transpose of a linear map. We don't prove much about it but at least we make contact with matrix transpose. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/linear_algebra/basic.lean + theorem linear_equiv.arrow_congr_symm_apply Modified src/linear_algebra/dual.lean + theorem is_basis.dual_basis_apply + theorem is_basis.dual_basis_apply_self + theorem is_basis.dual_basis_equiv_fun + theorem is_basis.dual_basis_repr + theorem is_basis.to_dual_apply_left + theorem is_basis.to_dual_apply_right + theorem is_basis.to_dual_eq_equiv_fun + theorem is_basis.to_dual_total_left + theorem is_basis.to_dual_total_right + theorem is_basis.total_dual_basis + def module.dual.transpose + theorem module.dual.transpose_apply + theorem module.dual.transpose_comp Modified src/linear_algebra/matrix.lean + theorem linear_equiv_matrix'_symm_apply + theorem linear_equiv_matrix_symm_apply + theorem linear_equiv_matrix_symm_transpose + theorem linear_equiv_matrix_transpose 2020-09-29 10:59:46 a5a7a75 feat(analysis/normed_space): define `normed_comm_ring` (#4291) Also use section `variables`. ESTIMATED CHANGES Modified src/algebra/field_power.lean +/- theorem ring_hom.map_fpow Modified src/algebra/group_with_zero_power.lean + theorem monoid_hom.map_fpow Modified src/analysis/normed_space/basic.lean +/- theorem normed_field.continuous_on_inv +/- theorem normed_field.exists_lt_norm +/- theorem normed_field.exists_norm_lt +/- theorem normed_field.exists_norm_lt_one +/- theorem normed_field.exists_one_lt_norm +/- theorem normed_field.nhds_within_is_unit_ne_bot +/- theorem normed_field.nnnorm_inv +/- theorem normed_field.nnnorm_one +/- theorem normed_field.norm_div +/- theorem normed_field.norm_fpow + def normed_field.norm_hom +/- theorem normed_field.norm_inv +/- theorem normed_field.norm_mul +/- theorem normed_field.norm_one +/- theorem normed_field.norm_pow +/- theorem normed_field.norm_prod +/- theorem normed_field.punctured_nhds_ne_bot +/- theorem normed_field.tendsto_inv 2020-09-29 09:53:22 9962bfa doc(data/monoid_algebra): fix typo (#4317) ESTIMATED CHANGES Modified src/data/monoid_algebra.lean 2020-09-29 07:37:23 22d034c feat(algebra/quandle): racks and quandles (#4247) This adds the algebraic structures of racks and quandles, defines a few examples, and provides the universal enveloping group of a rack. A rack is a set that acts on itself bijectively, and sort of the point is that the action `act : α → (α ≃ α)` satisfies ``` act (x ◃ y) = act x * act y * (act x)⁻¹ ``` where `x ◃ y` is the usual rack/quandle notation for `act x y`. (Note: racks do not use `has_scalar` because it's convenient having `x ◃⁻¹ y` for the inverse action of `x` on `y`. Plus, associative racks have a trivial action.) In knot theory, the universal enveloping group of the fundamental quandle is isomorphic to the fundamental group of the knot complement. For oriented knots up to orientation-reversed mirror image, the fundamental quandle is a complete invariant, unlike the fundamental group, which fails to distinguish non-prime knots with chiral summands. ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/quandle.lean + def quandle.conj.map + def quandle.conj + theorem quandle.conj_act_eq_conj + theorem quandle.conj_swap + def quandle.dihedral + theorem quandle.dihedral_act.inv + def quandle.dihedral_act + theorem quandle.fix_inv + def rack.act + theorem rack.act_apply + theorem rack.act_inv_act_eq + theorem rack.act_symm_apply + theorem rack.ad_conj + theorem rack.assoc_iff_id + def rack.envel_action + theorem rack.envel_action_prop + def rack.envel_group + theorem rack.inv_act_act_eq + theorem rack.inv_act_apply + theorem rack.involutory_inv_act_eq_act + def rack.is_abelian + def rack.is_involutory + theorem rack.left_cancel + theorem rack.left_cancel_inv + theorem rack.op_act_op_eq + theorem rack.op_inv_act_op_eq + inductive rack.pre_envel_group + theorem rack.pre_envel_group_rel'.rel + inductive rack.pre_envel_group_rel' + theorem rack.pre_envel_group_rel.refl + theorem rack.pre_envel_group_rel.symm + theorem rack.pre_envel_group_rel.trans + inductive rack.pre_envel_group_rel + theorem rack.self_act_act_eq + theorem rack.self_act_eq_iff_eq + theorem rack.self_act_inv_act_eq + def rack.self_apply_equiv + theorem rack.self_distrib + theorem rack.self_distrib_inv + theorem rack.self_inv_act_act_eq + theorem rack.self_inv_act_eq_iff_eq + theorem rack.self_inv_act_inv_act_eq + def rack.to_conj + def rack.to_envel_group.map + theorem rack.to_envel_group.map_aux.well_def + def rack.to_envel_group.map_aux + theorem rack.to_envel_group.univ + theorem rack.to_envel_group.univ_uniq + def rack.to_envel_group + def shelf_hom.comp + theorem shelf_hom.comp_apply + def shelf_hom.id + theorem shelf_hom.map_act + theorem shelf_hom.to_fun_eq_coe + structure shelf_hom Modified src/data/equiv/mul_add.lean + theorem mul_aut.conj_inv_apply + theorem mul_equiv.to_equiv_apply 2020-09-29 04:58:27 0bb5e5d feat(ring_theory/algebra_tower): Artin--Tate lemma (#4282) ESTIMATED CHANGES Modified src/field_theory/intermediate_field.lean Modified src/linear_algebra/basic.lean + theorem submodule.map_span Modified src/linear_algebra/finsupp.lean + theorem mem_span_finset Modified src/ring_theory/adjoin.lean + theorem algebra.adjoin_image + theorem subalgebra.fg_adjoin_finset + theorem subalgebra.fg_map + theorem subalgebra.fg_of_fg_map + theorem subalgebra.fg_of_submodule_fg + theorem subalgebra.fg_top Modified src/ring_theory/algebra.lean + theorem subalgebra.coe_val + theorem subalgebra.map_injective + theorem subalgebra.map_mono + theorem subalgebra.range_val Modified src/ring_theory/algebra_tower.lean + theorem algebra.fg_trans' + theorem exists_subalgebra_of_fg + theorem fg_of_fg_of_fg +/- theorem is_scalar_tower.aeval_apply +/- theorem is_scalar_tower.of_algebra_map_eq Modified src/ring_theory/noetherian.lean + theorem fg_of_injective + theorem is_noetherian_of_fg_of_noetherian' + theorem is_noetherian_of_injective + theorem submodule.fg_of_fg_map +/- theorem submodule.fg_of_fg_map_of_fg_inf_ker + theorem submodule.fg_of_linear_equiv + theorem submodule.fg_top 2020-09-29 03:32:06 88187ba chore(topology/algebra/ordered): golf a proof (#4311) * generalize `continuous_within_at_Ioi_iff_Ici` from `linear_order α` to `partial_order α`; * base the proof on a more general fact: `continuous_within_at f (s \ {x}) x ↔ continuous_within_at f s x`. ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem continuous_within_at_Ioi_iff_Ici Modified src/topology/continuous_on.lean + theorem continuous_within_at.diff_iff + theorem continuous_within_at_diff_self + theorem continuous_within_at_singleton 2020-09-28 17:22:18 89d8cc3 refactor(data/nat/basic): review API of `nat.find_greatest` (#4274) Other changes: * add `nat.find_eq_iff`; * use weaker assumptions in `measurable_to_encodable` and `measurable_to_nat`; * add `measurable_find`. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.find_eq_iff + theorem nat.find_greatest_eq_iff - theorem nat.find_greatest_eq_zero + theorem nat.find_greatest_eq_zero_iff +/- theorem nat.find_greatest_is_greatest +/- theorem nat.find_greatest_le +/- theorem nat.find_greatest_of_ne_zero +/- theorem nat.find_greatest_spec - theorem nat.find_greatest_spec_and_le Modified src/measure_theory/measurable_space.lean + theorem measurable_find + theorem measurable_find_greatest' +/- theorem measurable_find_greatest 2020-09-28 15:25:45 50dbce9 fix(data/list/basic): Ensure that ball_cons actually works as a simp lemma (#4281) The LHS of the simp lemma `list.ball_cons` (aka `list.forall_mem_cons`) is not in simp-normal form, as `list.mem_cons_iff` rewrites it. This adds a new simp lemma which is the form that `list.mem_cons_iff` rewrites it to. ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.forall_mem_cons' Modified src/data/list/chain.lean Modified src/logic/basic.lean + theorem forall_eq_or_imp Modified src/set_theory/ordinal_arithmetic.lean 2020-09-28 15:25:43 40fb701 feat(data/mv_polynomial): some lemmas on constant_coeff and rename (#4231) Snippet from the Witt project Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.constant_coeff_comp_C + theorem mv_polynomial.constant_coeff_comp_algebra_map Modified src/data/mv_polynomial/rename.lean + theorem mv_polynomial.constant_coeff_rename 2020-09-28 14:08:44 8461a7d feat(geometry/euclidean/monge_point): lemmas on altitudes and orthocenter (#4179) Add more lemmas about altitudes of a simplex and the orthocenter of a triangle. Some of these are just building out basic API that's mathematically trivial (e.g. showing that the altitude as defined is a one-dimensional affine subspace and providing an explicit form of its direction), while the results on the orthocenter have some geometrical content that's part of the preparation for defining and proving basic properties of orthocentric systems. ESTIMATED CHANGES Modified src/geometry/euclidean/monge_point.lean + theorem affine.simplex.affine_span_insert_singleton_eq_altitude_iff + theorem affine.simplex.direction_altitude + theorem affine.simplex.findim_direction_altitude + theorem affine.simplex.mem_altitude + theorem affine.simplex.vector_span_le_altitude_direction_orthogonal + theorem affine.triangle.affine_span_orthocenter_point_le_altitude + theorem affine.triangle.altitude_replace_orthocenter_eq_affine_span + theorem affine.triangle.orthocenter_replace_orthocenter_eq_point 2020-09-28 11:21:24 7bbb759 chore(algebra/free_algebra): Make the second type argument to lift and ι implicit (#4299) These can always be inferred by the context, and just make things longer. This is consistent with how the type argument for `id` is implicit. The changes are applied to downstream uses too. ESTIMATED CHANGES Modified src/algebra/free_algebra.lean +/- theorem free_algebra.quot_mk_eq_ι Modified src/algebra/lie/universal_enveloping.lean +/- theorem universal_enveloping_algebra.lift_ι_apply +/- theorem universal_enveloping_algebra.ι_comp_lift Modified src/linear_algebra/tensor_algebra.lean 2020-09-28 11:21:22 ad680c2 chore(algebra/ordered_ring): remove duplicate lemma (#4295) `ordered_ring.two_pos` and `ordered_ring.zero_lt_two` had ended up identical. I kept `zero_lt_two`. ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean Modified src/algebra/ordered_field.lean +/- theorem half_pos Modified src/algebra/ordered_ring.lean - theorem four_pos - theorem two_pos + theorem zero_lt_four +/- theorem zero_lt_two Modified src/analysis/hofer.lean Modified src/analysis/normed_space/basic.lean +/- theorem real.norm_two Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/real/basic.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.two_ne_zero - theorem ennreal.two_pos + theorem ennreal.zero_lt_two Modified src/data/real/hyperreal.lean Modified src/data/real/pi.lean Modified src/number_theory/pythagorean_triples.lean Modified src/topology/algebra/ordered.lean Modified src/topology/metric_space/basic.lean Modified src/topology/uniform_space/absolute_value.lean 2020-09-28 05:25:33 3986e97 chore(algebra/lie): group Lie algebra files together in their own directory (#4288) ESTIMATED CHANGES Renamed src/algebra/lie_algebra.lean to src/algebra/lie/basic.lean +/- def lie_ideal_subalgebra +/- def lie_module.of_endo_morphism Renamed src/algebra/classical_lie_algebras.lean to src/algebra/lie/classical.lean Renamed src/algebra/universal_enveloping_algebra.lean to src/algebra/lie/universal_enveloping.lean Modified src/ring_theory/derivation.lean Modified test/transport/basic.lean 2020-09-28 05:25:30 d77ac51 chore(data/fintype/card): review API (#4287) API changes: * `finset.filter_mem_eq_inter` now takes `[Π i, decidable (i ∈ t)]`; this way it works better with `classical`; * add `finset.mem_compl` and `finset.coe_compl`; * [DRY] drop `finset.prod_range_eq_prod_fin` and `finset.sum_range_eq_sum_fin`: use `fin.prod_univ_eq_prod_range` and `fin.sum_univ_eq_sum_range` instead; * rename `finset.prod_equiv` to `equiv.prod_comp` to enable dot notation; * add `fintype.prod_dite`: a specialized version of `finset.prod_dite`. Also golf a proof in `analysis/normed_space/multilinear` ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/analysis/normed_space/multilinear.lean Modified src/data/finset/basic.lean +/- theorem finset.filter_mem_eq_inter Modified src/data/fintype/basic.lean + theorem finset.coe_compl + theorem finset.mem_compl Modified src/data/fintype/card.lean + theorem equiv.prod_comp - theorem finset.prod_equiv - theorem finset.prod_range_eq_prod_fin + theorem fintype.prod_dite Modified src/field_theory/chevalley_warning.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/witt_vector/witt_polynomial.lean 2020-09-28 05:25:28 66c87c0 feat(data/*/gcd): adds gcd, lcm of finsets and multisets (#4217) Defines `finset.gcd`, `finset.lcm`, `multiset.gcd`, `multiset.lcm` Proves some basic facts about those, analogous to those in `data.multiset.lattice` and `data.finset.lattice` ESTIMATED CHANGES Modified src/algebra/gcd_monoid.lean + theorem gcd_eq_of_associated_left + theorem gcd_eq_of_associated_right + theorem lcm_eq_of_associated_left + theorem lcm_eq_of_associated_right Added src/data/finset/gcd.lean + theorem finset.dvd_gcd + theorem finset.dvd_gcd_iff + theorem finset.dvd_lcm + def finset.gcd + theorem finset.gcd_congr + theorem finset.gcd_def + theorem finset.gcd_dvd + theorem finset.gcd_empty + theorem finset.gcd_insert + theorem finset.gcd_mono + theorem finset.gcd_mono_fun + theorem finset.gcd_singleton + theorem finset.gcd_union + def finset.lcm + theorem finset.lcm_congr + theorem finset.lcm_def + theorem finset.lcm_dvd + theorem finset.lcm_dvd_iff + theorem finset.lcm_empty + theorem finset.lcm_insert + theorem finset.lcm_mono + theorem finset.lcm_mono_fun + theorem finset.lcm_singleton + theorem finset.lcm_union + theorem finset.normalize_gcd + theorem finset.normalize_lcm Modified src/data/finset/lattice.lean Added src/data/multiset/gcd.lean + theorem multiset.dvd_gcd + theorem multiset.dvd_lcm + def multiset.gcd + theorem multiset.gcd_add + theorem multiset.gcd_cons + theorem multiset.gcd_dvd + theorem multiset.gcd_erase_dup + theorem multiset.gcd_mono + theorem multiset.gcd_ndinsert + theorem multiset.gcd_ndunion + theorem multiset.gcd_singleton + theorem multiset.gcd_union + theorem multiset.gcd_zero + def multiset.lcm + theorem multiset.lcm_add + theorem multiset.lcm_cons + theorem multiset.lcm_dvd + theorem multiset.lcm_erase_dup + theorem multiset.lcm_mono + theorem multiset.lcm_ndinsert + theorem multiset.lcm_ndunion + theorem multiset.lcm_singleton + theorem multiset.lcm_union + theorem multiset.lcm_zero + theorem multiset.normalize_gcd + theorem multiset.normalize_lcm 2020-09-28 04:20:18 1761822 chore(category_theory/limits): some limit lemmas (#4238) A couple of lemmas characterising definitions which are already there (the first part of #4163) ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.has_colimit.iso_of_nat_iso_hom_desc + theorem category_theory.limits.has_limit.lift_iso_of_nat_iso_hom + theorem category_theory.limits.is_colimit.cocone_point_unique_up_to_iso_hom_desc + theorem category_theory.limits.is_colimit.cocone_point_unique_up_to_iso_inv_desc + theorem category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso_hom_desc + theorem category_theory.limits.is_colimit.comp_cocone_points_iso_of_nat_iso_hom + theorem category_theory.limits.is_colimit.comp_cocone_points_iso_of_nat_iso_inv + def category_theory.limits.is_colimit.equiv_iso_colimit + theorem category_theory.limits.is_colimit.equiv_iso_colimit_apply + theorem category_theory.limits.is_colimit.equiv_iso_colimit_symm_apply +/- def category_theory.limits.is_colimit.map + theorem category_theory.limits.is_colimit.of_iso_colimit_desc + theorem category_theory.limits.is_colimit.ι_map + theorem category_theory.limits.is_limit.cone_points_iso_of_nat_iso_hom_comp + theorem category_theory.limits.is_limit.cone_points_iso_of_nat_iso_inv_comp + def category_theory.limits.is_limit.equiv_iso_limit + theorem category_theory.limits.is_limit.equiv_iso_limit_apply + theorem category_theory.limits.is_limit.equiv_iso_limit_symm_apply + theorem category_theory.limits.is_limit.lift_comp_cone_point_unique_up_to_iso_hom + theorem category_theory.limits.is_limit.lift_comp_cone_point_unique_up_to_iso_inv + theorem category_theory.limits.is_limit.lift_comp_cone_points_iso_of_nat_iso_hom +/- def category_theory.limits.is_limit.map + theorem category_theory.limits.is_limit.map_π + theorem category_theory.limits.is_limit.of_iso_limit_lift - theorem category_theory.limits.is_limit_map_π - theorem category_theory.limits.ι_is_colimit_map Modified src/category_theory/limits/preserves/shapes.lean Modified src/category_theory/limits/shapes/biproducts.lean 2020-09-28 01:45:45 d8726bf feat(ring_theory/integral_closure): Explicitly define integral extensions (#4164) * Defined `ring_hom.is_integral_elem` as a generalization of `is_integral` that takes a ring homomorphism rather than an algebra. The old version is is redefined to be `(algebra_map R A).is_integral_elem x`. * Create predicates `ring_hom.is_integral` and `algebra.is_integral` representing when the entire extension is integral over the base ring. ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean Modified src/linear_algebra/eigenspace.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/ideal/over.lean +/- theorem ideal.exists_ideal_over_prime_of_is_integral' +/- theorem ideal.exists_ideal_over_prime_of_is_integral +/- theorem ideal.is_maximal_comap_of_is_integral_of_is_maximal Modified src/ring_theory/integral_closure.lean + def algebra.is_integral +/- theorem algebra.is_integral_trans +/- theorem is_integral_of_surjective +/- theorem is_integral_quotient_of_is_integral +/- theorem is_integral_trans + def ring_hom.is_integral + def ring_hom.is_integral_elem Modified src/ring_theory/jacobson.lean Modified src/ring_theory/localization.lean +/- theorem is_integral_localization 2020-09-28 00:59:38 2fa1bc6 chore(scripts): update nolints.txt (#4293) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-27 20:45:01 3897758 feat(measure_theory): prove that more functions are measurable (#4266) Mostly additions to `borel_space`. Generalize `measurable_bsupr` and `measurable_binfi` to countable sets (instead of encodable underlying types). Use the lemma `countable_encodable` to get the original behavior. Some cleanup in `borel_space`: more instances are in `variables`, and lemmas with the same instances a bit more. One downside: there is a big import bump in `borel_space`, it currently imports `hahn_banach`. This is (only) used in `measurable_smul_const`. If someone has a proof sketch (in math) of `measurable_smul_const` that doesn't involve Hahn Banach (and that maybe generalizes `real` to a topological field or something), please let me know. ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean + theorem closed_embedding_smul_left + theorem is_closed_map_smul_left Modified src/linear_algebra/basic.lean + theorem linear_equiv.ker_to_span_singleton Modified src/measure_theory/borel_space.lean +/- theorem borel_eq_generate_Iio +/- theorem borel_eq_generate_Ioi +/- theorem ennreal.measurable_of_measurable_nnreal +/- theorem ennreal.measurable_of_measurable_nnreal_nnreal +/- theorem is_measurable_interval +/- theorem is_measurable_le' +/- theorem is_measurable_le +/- theorem is_measurable_lt' +/- theorem is_measurable_lt + theorem is_pi_system_is_open +/- theorem measurable.dist +/- theorem measurable.edist +/- theorem measurable.ennreal_add +/- theorem measurable.ennreal_coe +/- theorem measurable.ennreal_mul +/- theorem measurable.ennreal_of_real +/- theorem measurable.ennreal_sub + theorem measurable.ennreal_tsum + theorem measurable.inf_dist + theorem measurable.inf_edist +/- theorem measurable.is_glb +/- theorem measurable.is_lub +/- theorem measurable.max +/- theorem measurable.min + theorem measurable.mul' +/- theorem measurable.nndist +/- theorem measurable.nnreal_coe +/- theorem measurable.nnreal_of_real +/- theorem measurable.sub_nnreal + theorem measurable.to_nnreal + theorem measurable.to_real +/- theorem measurable_binfi +/- theorem measurable_bsupr + theorem measurable_cSup + theorem measurable_comp_iff_of_closed_embedding +/- theorem measurable_dist +/- theorem measurable_edist + theorem measurable_ennnorm + theorem measurable_ennreal_coe_iff + theorem measurable_ennreal_to_real + theorem measurable_inf_dist + theorem measurable_inf_edist +/- theorem measurable_infi +/- theorem measurable_nndist + theorem measurable_of_Ici + theorem measurable_of_Iic + theorem measurable_of_Iio + theorem measurable_of_Ioi + theorem measurable_of_is_closed' + theorem measurable_of_is_closed + theorem measurable_of_is_open + theorem measurable_smul_const +/- theorem measurable_supr + theorem measurable_to_nnreal + theorem nnreal.measurable_coe Modified src/measure_theory/giry_monad.lean + theorem measure_theory.measure.measurable_measure Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean + theorem is_measurable_swap_iff + theorem measurable.of_uncurry_left + theorem measurable.of_uncurry_right + theorem measurable_prod + theorem measurable_prod_mk_left + theorem measurable_prod_mk_right + theorem measurable_swap + theorem measurable_swap_iff Modified src/measure_theory/set_integral.lean Modified src/topology/algebra/module.lean Modified src/topology/homeomorph.lean Modified src/topology/maps.lean + theorem is_closed_map.of_nonempty Modified src/topology/separation.lean + theorem is_closed_map_const 2020-09-27 18:31:22 c322471 feat(undergrad.yaml): missing items (#4290) ESTIMATED CHANGES Modified docs/undergrad.yaml 2020-09-27 16:34:03 2516d7d feat(topology): various additions (#4264) Some if it is used for Fubini, but some of the results were rabbit holes I went into, which I never ended up using, but that still seem useful. ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.has_basis.Liminf_eq_supr_Inf + theorem filter.has_basis.liminf_eq_supr_infi + theorem filter.has_basis.limsup_eq_infi_supr +/- theorem filter.liminf_eq_supr_infi_of_nat' +/- theorem filter.liminf_eq_supr_infi_of_nat +/- theorem filter.limsup_eq_infi_supr_of_nat' +/- theorem filter.limsup_eq_infi_supr_of_nat Modified src/topology/algebra/infinite_sum.lean + theorem pi.has_sum + theorem pi.summable + theorem tsum_apply Modified src/topology/algebra/ordered.lean + theorem is_closed_le_prod + theorem is_open_lt_prod Modified src/topology/constructions.lean + theorem tendsto_pi Modified src/topology/instances/ennreal.lean Modified src/topology/list.lean + theorem filter.tendsto.cons + theorem list.continuous_cons + theorem list.continuous_prod - theorem list.tendsto_cons' +/- theorem list.tendsto_cons +/- theorem list.tendsto_insert_nth + theorem list.tendsto_prod +/- theorem nhds_cons +/- theorem nhds_list +/- theorem nhds_nil +/- theorem vector.continuous_at_remove_nth +/- theorem vector.continuous_insert_nth' +/- theorem vector.continuous_insert_nth +/- theorem vector.continuous_remove_nth +/- theorem vector.tendsto_cons Modified src/topology/metric_space/hausdorff_distance.lean + theorem metric.coe_inf_nndist + theorem metric.continuous_inf_nndist_pt + def metric.inf_nndist + theorem metric.lipschitz_inf_nndist_pt + theorem metric.uniform_continuous_inf_nndist_pt 2020-09-27 08:58:36 b6ce982 refactor(*): create directory field_theory/finite (#4212) facts on finite fields needed facts on polynomials facts on polynomials wanted to use things about finite fields this PR reorganises some of the imports at the moment it also contributes a bit of new stuff, and depends on two other PRs that add new stuff. ESTIMATED CHANGES Modified src/data/zmod/basic.lean Deleted src/data/zmod/polynomial.lean - theorem mv_polynomial.C_dvd_iff_zmod Modified src/field_theory/chevalley_warning.lean Renamed src/field_theory/finite.lean to src/field_theory/finite/basic.lean + theorem zmod.frobenius_zmod Added src/field_theory/finite/polynomial.lean + theorem mv_polynomial.C_dvd_iff_zmod + def mv_polynomial.R + theorem mv_polynomial.degrees_indicator + theorem mv_polynomial.dim_R + theorem mv_polynomial.eq_zero_of_eval_eq_zero + theorem mv_polynomial.eval_indicator_apply_eq_one + theorem mv_polynomial.eval_indicator_apply_eq_zero + def mv_polynomial.evalᵢ + def mv_polynomial.evalₗ + theorem mv_polynomial.evalₗ_apply + theorem mv_polynomial.expand_zmod + theorem mv_polynomial.frobenius_zmod + def mv_polynomial.indicator + theorem mv_polynomial.indicator_mem_restrict_degree + theorem mv_polynomial.ker_evalₗ + theorem mv_polynomial.map_restrict_dom_evalₗ + theorem mv_polynomial.range_evalᵢ Modified src/field_theory/mv_polynomial.lean - def mv_polynomial.R - theorem mv_polynomial.degrees_indicator - theorem mv_polynomial.dim_R - theorem mv_polynomial.eq_zero_of_eval_eq_zero - theorem mv_polynomial.eval_indicator_apply_eq_one - theorem mv_polynomial.eval_indicator_apply_eq_zero - def mv_polynomial.evalᵢ - def mv_polynomial.evalₗ - theorem mv_polynomial.evalₗ_apply - def mv_polynomial.indicator - theorem mv_polynomial.indicator_mem_restrict_degree - theorem mv_polynomial.ker_evalₗ - theorem mv_polynomial.map_restrict_dom_evalₗ - theorem mv_polynomial.range_evalᵢ Modified src/linear_algebra/char_poly/coeff.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean 2020-09-27 07:48:56 95ab6ac docs(overview): expand analysis (#4284) A few additions to the "normed spaces", "convexity", "special functions" and "manifolds" sections of the overview. ESTIMATED CHANGES Modified docs/overview.yaml 2020-09-27 05:22:34 a7e3435 chore(data/option): swap sides in `ne_none_iff_exists` (#4285) * swap lhs and rhs of the equality in `option.ne_none_iff_exists`; the new order matches, e.g., the definition of `set.range` and `can_lift.prf`; * the same in `with_one.ne_one_iff_exists` and `with_zero.ne_zero_iff_exists`; * remove `option.ne_none_iff_exists'`; * restore the original `option.ne_none_iff_exists` as `option.ne_none_iff_exists'` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/group/with_one.lean +/- theorem with_one.ne_one_iff_exists Modified src/data/option/basic.lean +/- theorem option.ne_none_iff_exists' +/- theorem option.ne_none_iff_exists Modified src/data/seq/seq.lean 2020-09-27 01:39:14 5f6b07f chore(scripts): update nolints.txt (#4283) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-27 00:33:40 5c957ec feat(analysis/convex/integral): Jensen's inequality for integrals (#4225) ESTIMATED CHANGES Added src/analysis/convex/integral.lean + theorem convex.integral_mem + theorem convex.smul_integral_mem + theorem convex_on.map_integral_le + theorem convex_on.map_smul_integral_le Modified src/analysis/normed_space/basic.lean + theorem prod.nnnorm_def Modified src/measure_theory/integration.lean + theorem measure_theory.simple_func.sum_range_measure_preimage_singleton Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable.prod_mk Modified src/measure_theory/measure_space.lean + theorem measure_theory.probability_measure.ne_zero Modified src/measure_theory/set_integral.lean + theorem fst_integral + theorem integral_pair + theorem snd_integral 2020-09-26 20:43:15 8600cb0 feat(measure_space): define sigma finite measures (#4265) They are defined as a `Prop`. The noncomputable "eliminator" is called `spanning_sets`, and satisfies monotonicity, even though that is not required to give a `sigma_finite` instance. I define a helper function `accumulate s := ⋃ y ≤ x, s y`. This is helpful, to separate out some monotonicity proofs. It is in its own file purely for import reasons (there is no good file to put it that imports both `set.lattice` and `finset.basic`, the latter is used in 1 lemma). ESTIMATED CHANGES Added src/data/set/accumulate.lean + theorem set.Union_accumulate + def set.accumulate + theorem set.accumulate_def + theorem set.bUnion_accumulate + theorem set.mem_accumulate + theorem set.monotone_accumulate + theorem set.subset_accumulate Modified src/data/set/lattice.lean + theorem set.Union_prod_of_monotone + theorem set.image2_eq_seq Modified src/measure_theory/measure_space.lean + theorem measure_theory.Union_spanning_sets + theorem measure_theory.exists_finite_spanning_sets + theorem measure_theory.is_measurable_spanning_sets + theorem measure_theory.measure.supr_restrict_spanning_sets + theorem measure_theory.measure_bUnion_lt_top + theorem measure_theory.measure_spanning_sets_lt_top + theorem measure_theory.monotone_spanning_sets + def measure_theory.spanning_sets 2020-09-26 19:15:53 253b120 feat(field_theory): prove primitive element theorem (#4153) Proof of the primitive element theorem. The main proof is in `field_theory/primitive_element.lean`. Some lemmas we used have been added to other files. We have also changed the notation for adjoining an element to a field to be easier to use. ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.eval_gcd_eq_zero + theorem polynomial.eval₂_gcd_eq_zero + theorem polynomial.is_root_gcd_iff_is_root_left_right + theorem polynomial.mem_roots_map + theorem polynomial.root_gcd_iff_root_left_right + theorem polynomial.root_left_of_root_gcd + theorem polynomial.root_right_of_root_gcd Modified src/deprecated/subfield.lean + theorem is_subfield.pow_mem Modified src/field_theory/adjoin.lean + theorem field.adjoin_adjoin_comm + theorem field.adjoin_dim_eq_one_iff + theorem field.adjoin_dim_eq_one_of_sub_bot + theorem field.adjoin_eq_bot + theorem field.adjoin_eq_bot_iff + theorem field.adjoin_eq_range_algebra_map_adjoin + theorem field.adjoin_findim_eq_one_iff + theorem field.adjoin_one +/- theorem field.adjoin_simple.algebra_map_gen +/- theorem field.adjoin_simple_adjoin_simple + theorem field.adjoin_simple_comm + theorem field.adjoin_simple_dim_eq_one_iff + theorem field.adjoin_simple_dim_eq_one_of_mem_bot + theorem field.adjoin_simple_eq_bot + theorem field.adjoin_simple_eq_bot_iff + theorem field.adjoin_simple_findim_eq_one_iff - theorem field.adjoin_singleton + theorem field.adjoin_zero + theorem field.bot_eq_top_of_dim_adjoin_eq_one + theorem field.bot_eq_top_of_findim_adjoin_eq_one + theorem field.bot_eq_top_of_findim_adjoin_le_one + theorem field.mem_bot_of_adjoin_simple_dim_eq_one + theorem field.mem_bot_of_adjoin_simple_sub_bot + theorem field.sub_bot_of_adjoin_dim_eq_one + theorem field.sub_bot_of_adjoin_sub_bot Modified src/field_theory/minimal_polynomial.lean + theorem minimal_polynomial.dvd_map_of_is_scalar_tower Added src/field_theory/primitive_element.lean + theorem field.exists_primitive_element + theorem field.exists_primitive_element_aux + theorem field.exists_primitive_element_inf + theorem field.exists_primitive_element_of_fintype_bot + theorem field.exists_primitive_element_of_fintype_top + theorem field.primitive_element_inf_aux + theorem field.primitive_element_inf_aux_exists_c Modified src/field_theory/separable.lean + theorem is_separable_tower_bot_of_is_separable + theorem is_separable_tower_top_of_is_separable + theorem polynomial.eq_X_sub_C_of_separable_of_root_eq + theorem polynomial.separable_gcd_left + theorem polynomial.separable_gcd_right Modified src/field_theory/splitting_field.lean + theorem polynomial.eq_X_sub_C_of_splits_of_single_root + theorem polynomial.splits_of_splits_gcd_left + theorem polynomial.splits_of_splits_gcd_right Modified src/linear_algebra/finite_dimensional.lean +/- theorem findim_top + theorem finite_dimensional_of_dim_eq_one + theorem subalgebra.bot_eq_top_of_dim_eq_one + theorem subalgebra.bot_eq_top_of_findim_eq_one + theorem subalgebra.dim_bot + theorem subalgebra.dim_eq_one_iff + theorem subalgebra.dim_eq_one_of_eq_bot + theorem subalgebra.dim_top + theorem subalgebra.eq_bot_of_dim_one + theorem subalgebra.eq_bot_of_findim_one + theorem subalgebra.findim_bot + theorem subalgebra.findim_eq_one_iff + theorem subalgebra.findim_eq_one_of_eq_bot + theorem subalgebra.finite_dimensional_bot + theorem subalgebra_top_dim_eq_submodule_top_dim + theorem subalgebra_top_findim_eq_submodule_top_findim Modified src/ring_theory/algebra.lean + theorem algebra.coe_bot Modified src/ring_theory/algebra_tower.lean + theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero + theorem is_scalar_tower.aeval_eq_zero_of_aeval_algebra_map_eq_zero_field + theorem is_scalar_tower.algebra_map_aeval Modified src/ring_theory/integral_closure.lean + theorem is_integral_tower_bot_of_is_integral_field 2020-09-26 19:15:50 d0b5947 feat(algebra/universal_enveloping_algebra): construction of universal enveloping algebra and its universal property (#4041) ## Main definitions * `universal_enveloping_algebra` * `universal_enveloping_algebra.algebra` * `universal_enveloping_algebra.lift` * `universal_enveloping_algebra.ι_comp_lift` * `universal_enveloping_algebra.lift_unique` * `universal_enveloping_algebra.hom_ext` ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean + theorem lie_algebra.coe_to_linear_map + theorem lie_algebra.morphism.ext Added src/algebra/universal_enveloping_algebra.lean + theorem universal_enveloping_algebra.hom_ext + def universal_enveloping_algebra.lift + theorem universal_enveloping_algebra.lift_unique + theorem universal_enveloping_algebra.lift_ι_apply + def universal_enveloping_algebra.mk_alg_hom + inductive universal_enveloping_algebra.rel + def universal_enveloping_algebra.ι + theorem universal_enveloping_algebra.ι_comp_lift + def universal_enveloping_algebra Modified src/linear_algebra/tensor_algebra.lean Modified src/ring_theory/algebra.lean 2020-09-26 17:53:17 3ebee15 feat(src/data/polynomial/ring_division.lean): eq_zero_of_infinite_is_root (#4280) add a lemma stating that a polynomial is zero if it has infinitely many roots. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.eq_of_infinite_eval_eq + theorem polynomial.eq_zero_of_infinite_is_root 2020-09-26 17:53:15 376ab30 feat(data/nat/unique_factorization): a `unique_factorization_monoid` instance on N (#4194) Provides a `unique_factorization_monoid` instance on `nat` Shows its equivalence to `nat.factors`, which is list-valued ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associated_eq_eq + theorem associated_iff_eq Added src/data/nat/associated.lean + theorem nat.irreducible_iff_prime + theorem nat.prime_iff Added src/data/nat/unique_factorization.lean + theorem nat.factors_eq 2020-09-26 15:49:19 88e198a feat(data/multiset): count repeat lemma (#4278) A small lemma and renaming (of `count_repeat` to `count_repeat_self`) to count elements in a `multiset.repeat`. One part of #4259. ESTIMATED CHANGES Modified src/data/multiset/basic.lean +/- theorem multiset.count_repeat + theorem multiset.count_repeat_self 2020-09-26 15:49:16 8e83805 chore(analysis/special_functions/pow): +2 lemmas about `nnreal.rpow` (#4272) `λ x, x^y` is continuous in more cases than `λ p, p.1^p.2`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem nnreal.continuous_at_rpow_const + theorem nnreal.continuous_rpow_const 2020-09-26 15:49:14 3177493 feat(ring_theory/algebra, algebra/module): Add add_comm_monoid_to_add_comm_group and semiring_to_ring (#4252) ESTIMATED CHANGES Modified src/algebra/module/basic.lean + def semimodule.add_comm_monoid_to_add_comm_group Modified src/linear_algebra/tensor_product.lean Modified src/ring_theory/algebra.lean +/- theorem algebra.mul_sub_algebra_map_commutes +/- theorem algebra.mul_sub_algebra_map_pow_commutes + def algebra.semiring_to_ring 2020-09-26 15:49:13 7c0c16c feat(data/list/basic): Add lemmas about inits and tails (#4222) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.inits_append + theorem list.inits_cons + theorem list.inits_eq_tails + theorem list.inits_reverse + theorem list.map_reverse_inits + theorem list.map_reverse_tails + theorem list.reverse_involutive + theorem list.tails_append + theorem list.tails_cons + theorem list.tails_eq_inits + theorem list.tails_reverse Modified src/data/list/zip.lean + theorem list.mem_zip_inits_tails Modified src/logic/function/basic.lean + theorem function.involutive.comp_self 2020-09-26 13:57:50 bc3a6cf chore(data/list/basic): Make it clear that `forall_mem_cons` and `ball_cons` are synonyms (#4279) ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.forall_mem_cons 2020-09-26 12:12:06 9b09f90 feat(ennreal): some lemmas about ennreal (#4262) Also some lemmas about norms in (e)nnreal. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- def nnnorm + theorem real.ennnorm_eq_of_real + theorem real.nnnorm_coe_eq_self + theorem real.nnnorm_of_nonneg + theorem real.norm_of_nonneg Modified src/data/real/ennreal.lean + theorem ennreal.mul_lt_top_iff + theorem ennreal.of_real_le_of_le_to_real Modified src/measure_theory/borel_space.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.continuous_coe + theorem ennreal.continuous_coe_iff 2020-09-26 10:16:14 280a42e chore(topology/instances/nnreal): reuse `order_topology_of_ord_connected` (#4277) ESTIMATED CHANGES Modified src/topology/instances/nnreal.lean 2020-09-26 10:16:12 b8b6f5d chore(order/filter/archimedean): move&generalize a few lemmas (#4275) * `tendsto_coe_nat_real_at_top_iff`: `tendsto_coe_nat_at_top_iff`, generalize to a linear ordered archimedean semiring; * `tendsto_coe_nat_real_at_top_at_top`: `tendsto_coe_nat_at_top_at_top`, generalize to a linear ordered archimedean semiring; * `tendsto_coe_int_real_at_top_iff`: `tendsto_coe_int_at_top_iff`, generalize to a linear ordered archimedean ring; * `tendsto_coe_int_real_at_top_at_top`: `tendsto_coe_int_at_top_at_top`, generalize to a linear ordered archimedean ring; * add versions for `ℚ`; * golf the proof of `tendsto_at_top_embedding`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem exists_nat_ge Modified src/analysis/specific_limits.lean Modified src/data/real/ennreal.lean Added src/order/filter/archimedean.lean + theorem tendsto_coe_int_at_top_at_top + theorem tendsto_coe_int_at_top_iff + theorem tendsto_coe_nat_at_top_at_top + theorem tendsto_coe_nat_at_top_iff + theorem tendsto_coe_rat_at_top_iff Modified src/order/filter/at_top_bot.lean Modified src/topology/instances/real.lean - theorem tendsto_coe_int_real_at_top_at_top - theorem tendsto_coe_int_real_at_top_iff - theorem tendsto_coe_nat_real_at_top_at_top - theorem tendsto_coe_nat_real_at_top_iff 2020-09-26 10:16:10 aa11589 feat(algebra/homology, category_theory/abelian): expand API on exactness (#4256) ESTIMATED CHANGES Modified src/algebra/homology/exact.lean - theorem category_theory.exact.w_assoc + theorem category_theory.exact_comp_hom_inv_comp + theorem category_theory.exact_comp_hom_inv_comp_iff + theorem category_theory.exact_comp_mono + theorem category_theory.exact_epi_comp + theorem category_theory.exact_kernel + theorem category_theory.exact_zero_left_of_mono + theorem category_theory.kernel_ι_eq_zero_of_exact_zero_left Modified src/algebra/homology/image_to_kernel_map.lean + theorem category_theory.image_to_kernel_map_comp_hom_inv_comp + theorem category_theory.image_to_kernel_map_comp_left + theorem category_theory.image_to_kernel_map_comp_right +/- theorem category_theory.image_to_kernel_map_epi_of_epi_of_zero +/- theorem category_theory.image_to_kernel_map_epi_of_zero_of_mono Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.epi_of_cokernel_π_eq_zero + theorem category_theory.abelian.epi_of_zero_cokernel + theorem category_theory.abelian.mono_of_kernel_ι_eq_zero + theorem category_theory.abelian.mono_of_zero_kernel Modified src/category_theory/abelian/exact.lean + theorem category_theory.abelian.epi_iff_cokernel_π_eq_zero + theorem category_theory.abelian.epi_iff_exact_zero_right + theorem category_theory.abelian.exact_cokernel + theorem category_theory.abelian.mono_iff_exact_zero_left + theorem category_theory.abelian.mono_iff_kernel_ι_eq_zero + theorem category_theory.abelian.tfae_epi + theorem category_theory.abelian.tfae_mono Modified src/category_theory/limits/shapes/images.lean + def category_theory.limits.image.post_comp_is_iso + theorem category_theory.limits.image.post_comp_is_iso_hom_comp_image_ι + theorem category_theory.limits.image.post_comp_is_iso_inv_comp_image_ι Modified src/category_theory/limits/shapes/kernels.lean 2020-09-26 10:16:08 61897ae feat(data/set/intervals/infinite): intervals are infinite (#4241) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.exists_maximal + theorem finset.exists_minimal Modified src/data/set/finite.lean + theorem set.finite.to_finset.nonempty + theorem set.infinite_mono Added src/data/set/intervals/infinite.lean + theorem set.Icc.infinite + theorem set.Ici.infinite + theorem set.Ico.infinite + theorem set.Iic.infinite + theorem set.Iio.infinite + theorem set.Ioc.infinite + theorem set.Ioi.infinite + theorem set.Ioo.infinite 2020-09-26 10:16:06 e3cc06e feat(algebraic_geometry/presheafed_space): gluing presheaves (#4198) #### `PresheafedSpace C` has colimits. If `C` has limits, then the category `PresheafedSpace C` has colimits, and the forgetful functor to `Top` preserves these colimits. When restricted to a diagram where the underlying continuous maps are open embeddings, this says that we can glue presheaved spaces. Given a diagram `F : J ⥤ PresheafedSpace C`, we first build the colimit of the underlying topological spaces, as `colimit (F ⋙ PresheafedSpace.forget C)`. Call that colimit space `X`. Our strategy is to push each of the presheaves `F.obj j` forward along the continuous map `colimit.ι (F ⋙ PresheafedSpace.forget C) j` to `X`. Since pushforward is functorial, we obtain a diagram `J ⥤ (presheaf C X)ᵒᵖ` of presheaves on a single space `X`. (Note that the arrows now point the other direction, because this is the way `PresheafedSpace C` is set up.) The limit of this diagram then constitutes the colimit presheaf. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean +/- def algebraic_geometry.PresheafedSpace.comp + theorem algebraic_geometry.PresheafedSpace.congr_app Added src/algebraic_geometry/presheafed_space/has_colimits.lean + def algebraic_geometry.PresheafedSpace.colimit + def algebraic_geometry.PresheafedSpace.colimit_cocone + def algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc_c_app + theorem algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit.desc_c_naturality + def algebraic_geometry.PresheafedSpace.colimit_cocone_is_colimit + theorem algebraic_geometry.PresheafedSpace.map_comp_c_app + theorem algebraic_geometry.PresheafedSpace.map_id_c_app + def algebraic_geometry.PresheafedSpace.pushforward_diagram_to_colimit Modified src/algebraic_geometry/sheafed_space.lean Modified src/category_theory/eq_to_hom.lean + theorem category_theory.eq_to_hom_unop + theorem category_theory.nat_trans.congr Modified src/category_theory/grothendieck.lean + theorem category_theory.grothendieck.congr + theorem category_theory.grothendieck.id_fiber' Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/functor_category.lean + theorem category_theory.limits.colimit.ι_desc_app + theorem category_theory.limits.colimit_obj_ext + def category_theory.limits.colimit_obj_iso_colimit_comp_evaluation + theorem category_theory.limits.colimit_obj_iso_colimit_comp_evaluation_ι_app_hom + theorem category_theory.limits.colimit_obj_iso_colimit_comp_evaluation_ι_inv + theorem category_theory.limits.limit.lift_π_app + theorem category_theory.limits.limit_obj_ext + def category_theory.limits.limit_obj_iso_limit_comp_evaluation + theorem category_theory.limits.limit_obj_iso_limit_comp_evaluation_hom_π + theorem category_theory.limits.limit_obj_iso_limit_comp_evaluation_inv_π_app Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.colimit.desc_cocone + theorem category_theory.limits.limit.lift_cone Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.colimit.w_apply + theorem category_theory.limits.types.colimit.ι_desc_apply + theorem category_theory.limits.types.colimit.ι_map_apply - theorem category_theory.limits.types.colimit_w_apply - theorem category_theory.limits.types.lift_π_apply + theorem category_theory.limits.types.limit.lift_π_apply + theorem category_theory.limits.types.limit.map_π_apply + theorem category_theory.limits.types.limit.w_apply - theorem category_theory.limits.types.limit_w_apply - theorem category_theory.limits.types.map_π_apply - theorem category_theory.limits.types.ι_desc_apply - theorem category_theory.limits.types.ι_map_apply Modified src/topology/category/Top/opens.lean + theorem topological_space.opens.map_comp_map Added src/topology/sheaves/limits.lean Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/presheaf.lean - def Top.presheaf.pushforward + theorem Top.presheaf.pushforward_eq_hom_app + theorem Top.presheaf.pushforward_eq_rfl + def Top.presheaf.pushforward_map + def Top.presheaf.pushforward_obj + theorem Top.presheaf.pushforward_obj_map + theorem Top.presheaf.pushforward_obj_obj Modified src/topology/sheaves/stalks.lean 2020-09-26 07:58:50 c2f896f feat(data/set): add some lemmas (#4263) Some lemmas about sets, mostly involving disjointness I also sneaked in the lemma `(λ x : α, y) = const α y` which is useful to rewrite with. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.preimage_swap_prod Modified src/data/set/lattice.lean + theorem disjoint.preimage + theorem disjoint.union_left + theorem disjoint.union_right - theorem set.disjoint.preimage - theorem set.disjoint.union_left - theorem set.disjoint.union_right +/- theorem set.disjoint_iff_inter_eq_empty +/- theorem set.disjoint_left +/- theorem set.disjoint_of_subset_left +/- theorem set.disjoint_of_subset_right +/- theorem set.disjoint_right +/- theorem set.disjoint_singleton_left +/- theorem set.disjoint_singleton_right +/- theorem set.disjoint_union_left +/- theorem set.disjoint_union_right + theorem set.disjoint_univ +/- theorem set.not_disjoint_iff + theorem set.preimage_eq_empty + theorem set.preimage_eq_empty_iff + theorem set.univ_disjoint Modified src/logic/function/basic.lean + theorem function.const_def 2020-09-26 07:58:48 1892724 feat(data/matrix): definition of `block_diagonal` (#4257) This PR defines `matrix.block_diagonal : (o -> matrix m n R) -> matrix (m × o) (n × o) R`. The choice to put `o` on the right hand side of the product will help with relating this to `is_basis.smul`, but it won't be a huge hassle to write `matrix (o × m) (o × m) R` instead if you prefer. I also tried making `m` and `n` depend on `o`, giving `block_diagonal M : matrix (Σ k : o, m k) (Σ k : o, n k) R`, but that turned out to be a shotcut to `eq.rec` hell. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.univ_product_univ Modified src/data/matrix/basic.lean + def matrix.block_diagonal + theorem matrix.block_diagonal_add + theorem matrix.block_diagonal_apply + theorem matrix.block_diagonal_apply_eq + theorem matrix.block_diagonal_apply_ne + theorem matrix.block_diagonal_diagonal + theorem matrix.block_diagonal_mul + theorem matrix.block_diagonal_neg + theorem matrix.block_diagonal_one + theorem matrix.block_diagonal_smul + theorem matrix.block_diagonal_sub + theorem matrix.block_diagonal_transpose + theorem matrix.block_diagonal_zero 2020-09-26 06:09:45 7aef150 feat(category_theory): sieves (#3909) Define sieves, from my topos project. Co-authored by @EdAyers. These definitions and lemmas have been battle-tested quite a bit so I'm reasonably confident they're workable. ESTIMATED CHANGES Added src/category_theory/sites/sieves.lean + theorem category_theory.sieve.arrows_ext + def category_theory.sieve.functor + def category_theory.sieve.functor_inclusion + def category_theory.sieve.galois_coinsertion_of_mono + theorem category_theory.sieve.galois_connection + def category_theory.sieve.galois_insertion_of_split_epi + def category_theory.sieve.generate + inductive category_theory.sieve.generate_sets + def category_theory.sieve.gi_generate + theorem category_theory.sieve.id_mem_iff_eq_top + theorem category_theory.sieve.le_pushforward_pullback + theorem category_theory.sieve.mem_Inf + theorem category_theory.sieve.mem_Sup + theorem category_theory.sieve.mem_inter + theorem category_theory.sieve.mem_pullback + theorem category_theory.sieve.mem_pushforward_of_comp + theorem category_theory.sieve.mem_top + theorem category_theory.sieve.mem_union + def category_theory.sieve.nat_trans_of_le + theorem category_theory.sieve.nat_trans_of_le_comm + def category_theory.sieve.pullback + theorem category_theory.sieve.pullback_comp + theorem category_theory.sieve.pullback_eq_top_iff_mem + theorem category_theory.sieve.pullback_inter + theorem category_theory.sieve.pullback_monotone + theorem category_theory.sieve.pullback_pushforward_le + theorem category_theory.sieve.pullback_top + def category_theory.sieve.pushforward + theorem category_theory.sieve.pushforward_comp + theorem category_theory.sieve.pushforward_monotone + theorem category_theory.sieve.pushforward_union + def category_theory.sieve.set_over + theorem category_theory.sieve.sets_iff_generate + structure category_theory.sieve 2020-09-26 02:31:08 6289adf fix(order/bounded_lattice): fix some misleading theorem names (#4271) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean +/- theorem with_top.coe_lt_top + theorem with_top.le_none - theorem with_top.none_le - theorem with_top.none_lt_some + theorem with_top.some_lt_none 2020-09-26 01:49:24 d76f19f feat(overview): expand measure theory (#4258) ESTIMATED CHANGES Modified docs/overview.yaml 2020-09-26 00:58:04 4b3570f chore(scripts): update nolints.txt (#4270) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-25 19:15:25 85bbf8a feat(data/fin): `zero_eq_one_iff` and `one_eq_zero_iff` (#4255) Just a pair of little lemmas that were handy to me. The main benefit is that `simp` can now prove `if (0 : fin 2) = 1 then 1 else 0 = 0`, which should help with calculations using `data.matrix.notation`. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.one_eq_zero_iff + theorem fin.zero_eq_one_iff 2020-09-25 16:57:57 3a591e8 chore(data/list/defs): mark pairwise.nil simp to match chain.nil (#4254) ESTIMATED CHANGES Modified src/data/list/defs.lean 2020-09-25 16:57:55 5e8d527 feat(ring_theory/witt_vector/witt_polynomial): definition and basic properties (#4236) From the Witt vector project This is the first of a dozen of files on Witt vectors. This file contains the definition of the so-called Witt polynomials. Follow-up PRs will contain: * An important structural result on the Witt polynomials * The definition of the ring of Witt vectors (including the ring structure) * Several common operations on Witt vectors * Identities between thes operations * A comparison isomorphism between the ring of Witt vectors over F_p and the ring of p-adic integers Z_p. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/algebra/invertible.lean + theorem commute_inv_of - def invertible_inv_of Modified src/data/mv_polynomial/variables.lean +/- theorem mv_polynomial.vars_X Added src/ring_theory/witt_vector/witt_polynomial.lean + theorem X_in_terms_of_W_aux + theorem X_in_terms_of_W_eq + theorem X_in_terms_of_W_vars_aux + theorem X_in_terms_of_W_vars_subset + theorem X_in_terms_of_W_zero + theorem aeval_witt_polynomial + theorem bind₁_X_in_terms_of_W_witt_polynomial + theorem bind₁_witt_polynomial_X_in_terms_of_W + theorem constant_coeff_X_in_terms_of_W + theorem constant_coeff_witt_polynomial + theorem map_witt_polynomial + theorem witt_polynomial_eq_sum_C_mul_X_pow + theorem witt_polynomial_one + theorem witt_polynomial_vars + theorem witt_polynomial_vars_subset + theorem witt_polynomial_zero + theorem witt_polynomial_zmod_self 2020-09-25 14:53:58 565efec chore(data/real/ennreal): 3 lemmas stating `∞ / b = ∞` (#4248) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.top_div_coe + theorem ennreal.top_div_of_lt_top + theorem ennreal.top_div_of_ne_top 2020-09-25 14:53:56 1029974 feat(*): finite rings with char = card = n are isomorphic to zmod n (#4234) From the Witt vector project I've made use of the opportunity to remove some unused arguments, and to clean up some code by using namespacing and such. ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem char_p.cast_card_eq_zero + theorem char_p_of_ne_zero + theorem char_p_of_prime_pow_injective Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_ring_hom_inj_iff Modified src/data/fintype/basic.lean + theorem finset.eq_univ_of_card + theorem fintype.bijective_iff_injective_and_card + theorem fintype.bijective_iff_surjective_and_card +/- theorem fintype.card_eq_one_iff +/- def fintype.card_eq_zero_equiv_equiv_pempty +/- theorem fintype.card_eq_zero_iff +/- theorem fintype.card_le_of_injective +/- theorem fintype.card_le_one_iff +/- theorem fintype.card_le_one_iff_subsingleton +/- theorem fintype.card_pos_iff +/- theorem fintype.exists_ne_of_one_lt_card +/- theorem fintype.exists_pair_of_one_lt_card +/- theorem fintype.injective_iff_bijective +/- theorem fintype.injective_iff_surjective +/- theorem fintype.injective_iff_surjective_of_equiv + theorem fintype.nonempty_equiv_of_card_eq +/- theorem fintype.one_lt_card_iff_nontrivial +/- theorem fintype.surjective_iff_bijective Modified src/data/zmod/basic.lean + theorem zmod.cast_hom_bijective + theorem zmod.cast_hom_injective +/- theorem zmod.ring_hom_eq_of_ker_eq +/- theorem zmod.ring_hom_surjective 2020-09-25 14:53:54 aee16bd feat(data/mv_polynomial/basic): counit (#4205) From the Witt vector project ESTIMATED CHANGES Added src/data/mv_polynomial/counit.lean + theorem mv_polynomial.acounit_C + theorem mv_polynomial.acounit_X + theorem mv_polynomial.acounit_surjective + theorem mv_polynomial.counit_C + theorem mv_polynomial.counit_X + theorem mv_polynomial.counit_nat_C + theorem mv_polynomial.counit_nat_X + theorem mv_polynomial.counit_nat_surjective + theorem mv_polynomial.counit_surjective 2020-09-25 14:53:52 5deb96d feat(data/mv_polynomial/funext): function extensionality for polynomials (#4196) over infinite integral domains ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.trans_apply Modified src/data/mv_polynomial/basic.lean +/- theorem mv_polynomial.C_inj +/- theorem mv_polynomial.C_injective Modified src/data/mv_polynomial/equiv.lean + theorem mv_polynomial.fin_succ_equiv_apply + theorem mv_polynomial.fin_succ_equiv_eq Added src/data/mv_polynomial/funext.lean + theorem mv_polynomial.funext + theorem mv_polynomial.funext_iff Modified src/data/polynomial/monomial.lean Modified src/data/polynomial/ring_division.lean + theorem polynomial.funext + theorem polynomial.zero_of_eval_zero Modified src/logic/function/basic.lean + def function.extend + theorem function.extend_apply + theorem function.extend_comp + theorem function.extend_def 2020-09-25 12:54:20 680f877 feat(data/rat/basic): coe_int_div, coe_nat_div (#4233) Snippet from the Witt project ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.coe_int_div + theorem rat.coe_int_div_self + theorem rat.coe_nat_div + theorem rat.coe_nat_div_self 2020-09-25 12:54:18 9591d43 feat(data/*): lemmas on division of polynomials by constant polynomials (#4206) From the Witt vector project We provide a specialized version for polynomials over zmod n, which turns out to be convenient in practice. Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.C_dvd_iff_dvd_coeff + theorem mv_polynomial.C_dvd_iff_map_hom_eq_zero Added src/data/zmod/polynomial.lean + theorem mv_polynomial.C_dvd_iff_zmod 2020-09-25 12:54:16 c7d818c feat(data/mv_polynomial/variables): vars_bind₁ and friends (#4204) From the Witt vector project Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/data/mv_polynomial/rename.lean - theorem mv_polynomial.total_degree_rename_le Modified src/data/mv_polynomial/variables.lean +/- theorem mv_polynomial.aeval_eq_constant_coeff_of_vars + theorem mv_polynomial.degrees_rename + theorem mv_polynomial.eval₂_hom_congr' +/- theorem mv_polynomial.eval₂_hom_eq_constant_coeff_of_vars + theorem mv_polynomial.total_degree_rename_le +/- theorem mv_polynomial.vars_C + theorem mv_polynomial.vars_bind₁ +/- theorem mv_polynomial.vars_monomial + theorem mv_polynomial.vars_rename 2020-09-25 10:07:16 2313602 feat(order/bounded_lattice): custom recursors for with_bot/with_top (#4245) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean + def with_bot.rec_bot_coe + def with_top.rec_top_coe 2020-09-25 10:07:14 f43bd45 fix(tactic/lint/simp): only head-beta reduce, don't whnf (#4237) This is necessary to accept simp lemmas like `injective reverse`. ESTIMATED CHANGES Modified src/data/finset/basic.lean +/- theorem finset.ne_empty_of_mem Modified src/data/list/basic.lean +/- theorem list.cons_injective +/- theorem list.length_injective +/- theorem list.length_injective_iff +/- theorem list.reverse_injective Modified src/tactic/lint/simp.lean Modified test/lint_simp_var_head.lean 2020-09-25 10:07:12 5da451b feat(data/mv_polynomial/expand): replace variables by a power (#4197) From the Witt vectors project. ESTIMATED CHANGES Added src/data/mv_polynomial/expand.lean + theorem mv_polynomial.expand_C + theorem mv_polynomial.expand_X + theorem mv_polynomial.expand_bind₁ + theorem mv_polynomial.expand_comp_bind₁ + theorem mv_polynomial.expand_monomial + theorem mv_polynomial.expand_one + theorem mv_polynomial.expand_one_apply + theorem mv_polynomial.map_expand + theorem mv_polynomial.rename_comp_expand + theorem mv_polynomial.rename_expand 2020-09-25 09:07:07 b6154d9 feat(category_theory/limits): small lemmas (#4251) ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean + def category_theory.limits.limit.iso_limit_cone + theorem category_theory.limits.limit.iso_limit_cone_hom_π + theorem category_theory.limits.limit.iso_limit_cone_inv_π + theorem category_theory.limits.limit.pre_eq 2020-09-25 08:21:16 40f1370 chore(measure_theory/bochner_integration): rename/add lemmas, fix docstring (#4249) * add `integral_nonneg` assuming `0 ≤ f`; * rename `integral_nonpos_of_nonpos_ae` to `integral_nonpos_of_ae`; * add `integral_nonpos` assuming `f ≤ 0`; * rename `integral_mono` to `integral_mono_ae`; * add `integral_mono` assuming `f ≤ g`; * (partially?) fix module docstring. ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_mono + theorem measure_theory.integral_mono_ae + theorem measure_theory.integral_nonneg + theorem measure_theory.integral_nonpos + theorem measure_theory.integral_nonpos_of_ae - theorem measure_theory.integral_nonpos_of_nonpos_ae Modified src/measure_theory/set_integral.lean 2020-09-25 06:57:20 143c074 feat(category_theory/cofinal): cofinal functors (#4218) ESTIMATED CHANGES Modified src/category_theory/is_connected.lean + theorem category_theory.is_preconnected_induction Modified src/category_theory/isomorphism.lean Added src/category_theory/limits/cofinal.lean + def category_theory.cofinal.cocones_equiv + def category_theory.cofinal.colimit_cocone_comp + theorem category_theory.cofinal.colimit_cocone_comp_aux + def category_theory.cofinal.colimit_cocone_of_comp + def category_theory.cofinal.colimit_iso' + def category_theory.cofinal.colimit_iso + theorem category_theory.cofinal.colimit_pre_is_iso_aux + def category_theory.cofinal.extend_cocone + theorem category_theory.cofinal.has_colimit_of_comp + def category_theory.cofinal.hom_to_lift + theorem category_theory.cofinal.induction + def category_theory.cofinal.is_colimit_extend_cocone_equiv + def category_theory.cofinal.is_colimit_whisker_equiv + def category_theory.cofinal.lift + def category_theory.cofinal Modified src/category_theory/limits/limits.lean + def category_theory.limits.colimit.iso_colimit_cocone + theorem category_theory.limits.colimit.iso_colimit_cocone_ι_hom + theorem category_theory.limits.colimit.iso_colimit_cocone_ι_inv + theorem category_theory.limits.colimit.pre_eq + theorem category_theory.limits.is_colimit.of_cocone_equiv_apply_desc + theorem category_theory.limits.is_colimit.of_cocone_equiv_symm_apply_desc Modified src/category_theory/over.lean +/- def category_theory.over +/- def category_theory.under Modified src/category_theory/punit.lean +/- def category_theory.functor.from_punit 2020-09-25 05:46:05 dda82fc chore(*): add missing copyright, cleanup imports (#4229) Add missing copyright, avoid use of `import tactic`, and put each `import` statement on a separate line, for easier analysis via grep. ESTIMATED CHANGES Modified archive/100-theorems-list/42_inverse_triangle_sum.lean Modified archive/100-theorems-list/83_friendship_graphs.lean Modified archive/imo/imo1988_q6.lean Modified src/data/holor.lean Modified src/data/nat/multiplicity.lean Modified src/data/polynomial/degree/trailing_degree.lean Modified src/group_theory/semidirect_product.lean Modified src/number_theory/pythagorean_triples.lean Modified src/ring_theory/derivation.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/multiplicity.lean Modified src/tactic/derive_fintype.lean Modified test/tauto.lean Modified test/unfold_cases.lean 2020-09-25 00:12:04 f9a667d refactor(algebra/group_power, data/nat/basic): remove redundant lemmas (#4243) This removes lemmas about `pow` on `nat` which are redundant with more general versions in the root namespace. One notable removal is `nat.pow_succ`; use `pow_succ'` instead. In order that the general versions are available already in `data.nat.basic`, many lemmas from `algebra.group_power.lemmas` have been moved to `algebra.group_power.basic` (basically as many as possible without adding imports). ESTIMATED CHANGES Modified archive/imo/imo1988_q6.lean Modified archive/miu_language/decision_suf.lean Modified archive/sensitivity.lean Modified src/algebra/associated.lean Modified src/algebra/big_operators/basic.lean - theorem finset.prod_nat_pow Modified src/algebra/char_p.lean Modified src/algebra/group_power/basic.lean + theorem abs_neg_one_pow + theorem add_monoid_hom.map_nsmul + theorem bit0_nsmul + theorem bit1_nsmul + theorem canonically_ordered_semiring.one_le_pow_of_one_le + theorem canonically_ordered_semiring.pow_le_one + theorem canonically_ordered_semiring.pow_le_pow_of_le_left + theorem canonically_ordered_semiring.pow_pos + theorem commute.gpow_gpow + theorem commute.gpow_gpow_self + theorem commute.gpow_left + theorem commute.gpow_right + theorem commute.gpow_self + theorem commute.mul_gpow + theorem commute.mul_pow + theorem commute.self_gpow + theorem dvd_pow + theorem eq_or_eq_neg_of_pow_two_eq_pow_two + theorem gpow_coe_nat + theorem gpow_neg + theorem gpow_neg_one + theorem gpow_neg_succ_of_nat + theorem gpow_of_nat + theorem gpow_one + theorem gpow_zero + theorem gsmul_add + theorem gsmul_coe_nat + theorem gsmul_neg + theorem gsmul_neg_succ_of_nat + theorem gsmul_of_nat + theorem gsmul_sub + theorem gsmul_zero + theorem inv_gpow + theorem inv_pow + theorem is_add_monoid_hom.map_nsmul + theorem is_monoid_hom.map_pow + theorem ite_pow + theorem lt_of_pow_lt_pow + theorem monoid_hom.map_pow + theorem mul_gpow + theorem mul_gpow_neg_one + theorem mul_nsmul' + theorem mul_nsmul + theorem mul_pow + theorem neg_gsmul + theorem neg_nsmul + theorem neg_one_gsmul + theorem neg_one_pow_eq_or + theorem neg_pow + theorem neg_square + theorem nsmul_add + theorem nsmul_add_comm + theorem nsmul_add_sub_nsmul + theorem nsmul_le_nsmul + theorem nsmul_le_nsmul_of_le_right + theorem nsmul_neg_comm + theorem nsmul_nonneg + theorem nsmul_sub + theorem nsmul_zero + theorem of_add_gsmul + theorem of_add_nsmul + theorem one_gpow + theorem one_gsmul + theorem one_le_pow_of_one_le + theorem one_nsmul + theorem one_pow + theorem pow_abs + theorem pow_bit0 + theorem pow_bit1 + theorem pow_boole + theorem pow_dvd_pow + theorem pow_dvd_pow_of_dvd + theorem pow_eq_zero + theorem pow_inv_comm + theorem pow_ite + theorem pow_le_pow + theorem pow_le_pow_of_le_left + theorem pow_left_inj + theorem pow_lt_pow + theorem pow_lt_pow_of_lt_left + theorem pow_mul' + theorem pow_mul + theorem pow_mul_comm + theorem pow_mul_pow_sub + theorem pow_ne_zero + theorem pow_nonneg + theorem pow_one + theorem pow_pos + theorem pow_sub + theorem pow_sub_mul_pow + theorem pow_two_nonneg + theorem pow_two_pos_of_ne_zero + theorem pow_two_sub_pow_two + theorem ring_hom.map_pow + theorem semiconj_by.gpow_right + theorem sq_sub_sq + theorem sub_nsmul_nsmul_add + theorem zero_gsmul + theorem zero_pow Modified src/algebra/group_power/lemmas.lean - theorem abs_neg_one_pow - theorem add_monoid_hom.map_nsmul - theorem bit0_nsmul - theorem bit1_nsmul - theorem canonically_ordered_semiring.one_le_pow_of_one_le - theorem canonically_ordered_semiring.pow_le_one - theorem canonically_ordered_semiring.pow_le_pow_of_le_left - theorem canonically_ordered_semiring.pow_pos - theorem commute.gpow_gpow - theorem commute.gpow_gpow_self - theorem commute.gpow_left - theorem commute.gpow_right - theorem commute.gpow_self - theorem commute.mul_gpow - theorem commute.mul_pow - theorem commute.self_gpow - theorem dvd_pow - theorem eq_or_eq_neg_of_pow_two_eq_pow_two - theorem gpow_coe_nat - theorem gpow_neg - theorem gpow_neg_one - theorem gpow_neg_succ_of_nat - theorem gpow_of_nat - theorem gpow_one - theorem gpow_zero - theorem gsmul_add - theorem gsmul_coe_nat - theorem gsmul_neg - theorem gsmul_neg_succ_of_nat - theorem gsmul_of_nat - theorem gsmul_sub - theorem gsmul_zero - theorem inv_gpow - theorem inv_pow - theorem is_add_monoid_hom.map_nsmul - theorem is_monoid_hom.map_pow - theorem ite_pow - theorem lt_of_pow_lt_pow - theorem monoid_hom.map_pow - theorem mul_gpow - theorem mul_gpow_neg_one - theorem mul_nsmul' - theorem mul_nsmul - theorem mul_pow - theorem neg_gsmul - theorem neg_nsmul - theorem neg_one_gsmul - theorem neg_one_pow_eq_or - theorem neg_pow - theorem neg_square - theorem nsmul_add - theorem nsmul_add_comm - theorem nsmul_add_sub_nsmul - theorem nsmul_le_nsmul - theorem nsmul_le_nsmul_of_le_right - theorem nsmul_neg_comm - theorem nsmul_nonneg - theorem nsmul_sub - theorem nsmul_zero - theorem of_add_gsmul - theorem of_add_nsmul - theorem one_gpow - theorem one_gsmul - theorem one_le_pow_of_one_le - theorem one_nsmul - theorem one_pow - theorem pow_abs - theorem pow_bit0 - theorem pow_bit1 - theorem pow_boole - theorem pow_dvd_pow - theorem pow_dvd_pow_of_dvd - theorem pow_eq_zero - theorem pow_inv_comm - theorem pow_ite - theorem pow_le_pow - theorem pow_le_pow_of_le_left - theorem pow_left_inj - theorem pow_lt_pow - theorem pow_lt_pow_of_lt_left - theorem pow_mul' - theorem pow_mul - theorem pow_mul_comm - theorem pow_mul_pow_sub - theorem pow_ne_zero - theorem pow_nonneg - theorem pow_one - theorem pow_pos - theorem pow_sub - theorem pow_sub_mul_pow - theorem pow_two_nonneg - theorem pow_two_pos_of_ne_zero - theorem pow_two_sub_pow_two - theorem ring_hom.map_pow - theorem semiconj_by.gpow_right - theorem sq_sub_sq - theorem sub_nsmul_nsmul_add - theorem zero_gsmul - theorem zero_pow Modified src/analysis/specific_limits.lean Modified src/computability/primrec.lean Modified src/data/bitvec/basic.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/list/basic.lean Modified src/data/multiset/basic.lean Modified src/data/nat/basic.lean - theorem nat.mul_pow - theorem nat.one_pow - theorem nat.pos_pow_of_pos - theorem nat.pow_add - theorem nat.pow_dvd_pow - theorem nat.pow_dvd_pow_of_dvd - theorem nat.pow_eq_mul_pow_sub - theorem nat.pow_le_pow_of_le_left - theorem nat.pow_one - theorem nat.pow_pos - theorem nat.pow_succ - theorem nat.pow_two - theorem nat.pow_zero - theorem nat.zero_pow Modified src/data/nat/choose/sum.lean Modified src/data/nat/digits.lean Modified src/data/nat/fact.lean Modified src/data/nat/gcd.lean Modified src/data/nat/log.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/parity.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/num/lemmas.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/ring_homs.lean Modified src/data/pnat/basic.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/finite.lean Modified src/field_theory/separable.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/sylow.lean Modified src/number_theory/basic.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/pell.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/multiplicity.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/ordinal_arithmetic.lean Modified src/tactic/ring_exp.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-09-24 22:51:18 46bf8ca fix(topology/path_connected): avoid a slow use of `continuity` (#4244) This corrects the timeout experienced by @Nicknamen in #3641. See https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.233641/near/211107487 ESTIMATED CHANGES Modified src/topology/path_connected.lean 2020-09-24 20:51:05 675f5d4 feat(algebra/char_p): nontrivial_of_char_ne_one (#4232) Also renames `false_of_nonzero_of_char_one` to `false_of_nontrivial_of_char_one` Snippet from the Witt project ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem char_p.false_of_nontrivial_of_char_one - theorem char_p.false_of_nonzero_of_char_one + theorem char_p.nontrivial_of_char_ne_one Modified src/logic/nontrivial.lean + theorem false_of_nontrivial_of_subsingleton 2020-09-24 19:43:34 5eedf32 docs(data/complex/exponential): docstring for de Moivre (#4242) ESTIMATED CHANGES Modified src/data/complex/exponential.lean 2020-09-24 17:38:37 02ca5e2 fix(.github/workflows/add_label_from_review.yml): fix label removal (#4240) The API calls were referencing the wrong field, see for example https://github.com/leanprover-community/mathlib/runs/1161014126?check_suite_focus=true#step:7:3 ESTIMATED CHANGES Modified .github/workflows/add_label_from_review.yml 2020-09-24 17:38:35 d670746 feat(category_theory/monad/algebra): Add faithful instances. (#4227) Adds a `faithful` instance for the forgetful functors from the Eilenberg Moore category associated to a (co)monad. ESTIMATED CHANGES Modified src/category_theory/monad/algebra.lean 2020-09-24 17:38:32 5c31dea feat(field_theory): intermediate fields (#4181) Define `intermediate_field K L` as a structure extending `subalgebra K L` and `subfield L`. This definition required some changes in `subalgebra`, which I added in #4180. ESTIMATED CHANGES Added src/field_theory/intermediate_field.lean + theorem intermediate_field.add_mem + theorem intermediate_field.algebra_map_mem + theorem intermediate_field.coe_add + theorem intermediate_field.coe_int_mem + theorem intermediate_field.coe_inv + theorem intermediate_field.coe_mul + theorem intermediate_field.coe_neg + theorem intermediate_field.coe_one + theorem intermediate_field.coe_to_subalgebra + theorem intermediate_field.coe_to_subfield + theorem intermediate_field.coe_val + theorem intermediate_field.coe_zero + theorem intermediate_field.div_mem + theorem intermediate_field.ext' + theorem intermediate_field.ext + theorem intermediate_field.field_range_le + theorem intermediate_field.gsmul_mem + theorem intermediate_field.inv_mem + theorem intermediate_field.list_prod_mem + theorem intermediate_field.list_sum_mem + def intermediate_field.map + theorem intermediate_field.mem_coe + theorem intermediate_field.mem_mk + theorem intermediate_field.mem_to_subalgebra + theorem intermediate_field.mem_to_subfield + theorem intermediate_field.mul_mem + theorem intermediate_field.multiset_prod_mem + theorem intermediate_field.multiset_sum_mem + theorem intermediate_field.neg_mem + theorem intermediate_field.one_mem + theorem intermediate_field.pow_mem + theorem intermediate_field.prod_mem + theorem intermediate_field.set_range_subset + theorem intermediate_field.smul_mem + theorem intermediate_field.sub_mem + theorem intermediate_field.sum_mem + theorem intermediate_field.to_subalgebra_injective + def intermediate_field.val + theorem intermediate_field.val_mk + theorem intermediate_field.zero_mem + structure intermediate_field + def subalgebra.to_intermediate_field + def subfield.to_intermediate_field Modified src/field_theory/subfield.lean + theorem subfield.sub_mem Modified src/ring_theory/algebra_tower.lean 2020-09-24 17:38:30 e23b97e feat(ring_theory/polynomial): decomposing the kernel of an endomorphism polynomial (#4174) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring_hom.map_bit0 + theorem ring_hom.map_bit1 Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_X_pow + theorem polynomial.aeval_add + theorem polynomial.aeval_bit0 + theorem polynomial.aeval_bit1 + theorem polynomial.aeval_monomial + theorem polynomial.aeval_mul + theorem polynomial.aeval_nat_cast + theorem polynomial.aeval_one + theorem polynomial.aeval_zero Modified src/data/polynomial/eval.lean - theorem polynomial.eval₂_endomorphism_algebra_map Modified src/linear_algebra/basic.lean + theorem linear_map.mul_apply Modified src/ring_theory/algebra.lean + theorem alg_hom.map_bit0 + theorem alg_hom.map_bit1 Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.disjoint_ker_aeval_of_coprime + theorem polynomial.sup_aeval_range_eq_top_of_coprime + theorem polynomial.sup_ker_aeval_eq_ker_aeval_mul_of_coprime + theorem polynomial.sup_ker_aeval_le_ker_aeval_mul 2020-09-24 16:49:35 03894df feat(category_theory/limits/creates): Add has_(co)limit defs (#4239) This PR adds four `def`s: 1. `has_limits_of_shape_of_has_limits_of_shape_creates_limits_of_shape` 2. `has_limits_of_has_limits_creates_limits` 3. `has_colimits_of_shape_of_has_colimits_of_shape_creates_colimits_of_shape` 4. `has_colimits_of_has_colimits_creates_colimits` These show that a category `C` has (co)limits (of a given shape) given a functor `F : C ⥤ D` which creates (co)limits (of the given shape) where `D` has (co)limits (of the given shape). See the associated zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/has_limits.20of.20has_limits.20and.20creates_limits/near/211083395 ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean + theorem category_theory.has_colimits_of_has_colimits_creates_colimits + theorem category_theory.has_colimits_of_shape_of_has_colimits_of_shape_creates_colimits_of_shape + theorem category_theory.has_limits_of_has_limits_creates_limits + theorem category_theory.has_limits_of_shape_of_has_limits_of_shape_creates_limits_of_shape 2020-09-24 14:02:39 03775fb chore(data/mv_polynomial): aeval_rename -> aeval_id_rename (#4230) `aeval_rename` was not general enough, so it is renamed to `aeval_id_rename`. Also: state and prove the more general version of `aeval_rename`. ESTIMATED CHANGES Modified src/data/mv_polynomial/monad.lean + theorem mv_polynomial.aeval_id_rename - theorem mv_polynomial.aeval_rename Modified src/data/mv_polynomial/rename.lean + theorem mv_polynomial.aeval_rename 2020-09-24 10:39:14 3484e8b fix(data/mv_polynomial): fix doc strings (#4219) ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean Modified src/data/mv_polynomial/comap.lean Modified src/data/mv_polynomial/comm_ring.lean Modified src/data/mv_polynomial/equiv.lean Modified src/data/mv_polynomial/pderivative.lean Modified src/data/mv_polynomial/rename.lean Modified src/data/mv_polynomial/variables.lean 2020-09-24 10:39:13 f0713cb refactor(measure_theory/simple_func_dense): split monolithic proof (#4199) In the new proof the sequence of approximating functions has a simpler description: `N`-th function sends `x` to the point `e k` which is the nearest to `f x` among the points `e 0`, ..., `e N`, where `e n` is a dense sequence such that `e 0 = 0`. ESTIMATED CHANGES Modified src/data/list/min_max.lean Modified src/data/nat/basic.lean + theorem nat.range_cases_on + theorem nat.range_of_succ + theorem nat.range_rec + theorem nat.zero_union_range_succ Modified src/data/set/basic.lean +/- theorem set.sep_set_of + theorem set.set_of_and + theorem set.set_of_or Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.tendsto_integral_approx_on_univ Modified src/measure_theory/borel_space.lean + theorem is_measurable_lt' + theorem is_measurable_lt +/- theorem measurable.const_mul +/- theorem measurable.const_smul +/- theorem measurable.mul_const + theorem measurable_edist_left + theorem measurable_edist_right Modified src/measure_theory/integration.lean + theorem measure_theory.simple_func.measurable_bind Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable.add' + theorem measure_theory.integrable.sub' Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.ae_eq_bot Modified src/measure_theory/simple_func_dense.lean + theorem measure_theory.simple_func.approx_on_comp + theorem measure_theory.simple_func.approx_on_mem + theorem measure_theory.simple_func.approx_on_zero + theorem measure_theory.simple_func.edist_approx_on_le + theorem measure_theory.simple_func.edist_approx_on_y0_le + theorem measure_theory.simple_func.edist_nearest_pt_le + theorem measure_theory.simple_func.integrable_approx_on + theorem measure_theory.simple_func.integrable_approx_on_univ + theorem measure_theory.simple_func.nearest_pt_ind_le + theorem measure_theory.simple_func.nearest_pt_ind_succ + theorem measure_theory.simple_func.nearest_pt_ind_zero + theorem measure_theory.simple_func.nearest_pt_zero + theorem measure_theory.simple_func.tendsto_approx_on + theorem measure_theory.simple_func.tendsto_approx_on_l1_edist + theorem measure_theory.simple_func.tendsto_approx_on_univ_l1 + theorem measure_theory.simple_func.tendsto_approx_on_univ_l1_edist + theorem measure_theory.simple_func.tendsto_nearest_pt - theorem measure_theory.simple_func_sequence_tendsto' - theorem measure_theory.simple_func_sequence_tendsto Modified src/topology/bases.lean +/- theorem topological_space.dense_seq_dense 2020-09-24 08:37:51 ba8fa0f feat(logic/embedding): use simps (#4169) Some lemmas are slightly reformulated, and have a worse name. But they are (almost) never typed explicitly, since they are simp lemmas (even the occurrences in other files probably came from `squeeze_simp`). ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/algebra/big_operators/nat_antidiagonal.lean Modified src/data/finset/nat_antidiagonal.lean Modified src/logic/embedding.lean +/- theorem equiv.refl_to_embedding - theorem equiv.to_embedding_coe_fn - theorem function.embedding.coe_image - theorem function.embedding.coe_sigma_map - theorem function.embedding.coe_sigma_mk - theorem function.embedding.refl_apply +/- def function.embedding.sigma_map +/- def function.embedding.sigma_mk - theorem function.embedding.trans_apply - theorem mul_left_embedding_apply - theorem mul_right_embedding_apply - theorem set.coe_embedding_of_subset_apply +/- def set.embedding_of_subset - theorem set.embedding_of_subset_apply_mk Modified src/measure_theory/haar_measure.lean 2020-09-24 06:54:53 5e934cd chore(*): cleanup imports, split off data/finset/preimage from data/set/finite (#4221) Mostly this consists of moving some content from `data.set.finite` to `data.finset.preimage`, in order to reduce imports in `data.set.finite`. ESTIMATED CHANGES Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/data/finset/default.lean Added src/data/finset/preimage.lean + theorem finset.coe_preimage + theorem finset.image_preimage + theorem finset.image_preimage_of_bij + theorem finset.image_subset_iff_subset_preimage + theorem finset.map_subset_iff_subset_preimage + theorem finset.mem_preimage + theorem finset.monotone_preimage + theorem finset.prod_preimage' + theorem finset.prod_preimage + theorem finset.prod_preimage_of_bij + theorem finset.sigma_image_fst_preimage_mk + theorem finset.sigma_preimage_mk + theorem finset.sigma_preimage_mk_of_subset Modified src/data/finsupp/basic.lean Modified src/data/set/finite.lean - theorem finset.coe_preimage - theorem finset.image_preimage - theorem finset.image_preimage_of_bij - theorem finset.image_subset_iff_subset_preimage - theorem finset.map_subset_iff_subset_preimage - theorem finset.mem_preimage - theorem finset.monotone_preimage - theorem finset.prod_preimage' - theorem finset.prod_preimage - theorem finset.prod_preimage_of_bij - theorem finset.sigma_image_fst_preimage_mk - theorem finset.sigma_preimage_mk - theorem finset.sigma_preimage_mk_of_subset Modified src/order/filter/at_top_bot.lean Modified src/topology/bases.lean 2020-09-24 05:52:22 ed07cac feat(data/mv_polynomial/rename): coeff_rename (#4203) Also, use the opportunity to use R as variable for the coefficient ring throughout the file. ESTIMATED CHANGES Modified src/data/mv_polynomial/rename.lean + theorem mv_polynomial.coeff_rename_eq_zero + theorem mv_polynomial.coeff_rename_map_domain + theorem mv_polynomial.coeff_rename_ne_zero +/- theorem mv_polynomial.eval_rename_prodmk +/- theorem mv_polynomial.eval₂_cast_comp +/- theorem mv_polynomial.eval₂_rename_prodmk +/- theorem mv_polynomial.exists_fin_rename +/- theorem mv_polynomial.exists_finset_rename +/- theorem mv_polynomial.map_rename +/- def mv_polynomial.rename +/- theorem mv_polynomial.rename_C +/- theorem mv_polynomial.rename_X +/- theorem mv_polynomial.rename_eq +/- theorem mv_polynomial.rename_eval₂ +/- theorem mv_polynomial.rename_id +/- theorem mv_polynomial.rename_injective +/- theorem mv_polynomial.rename_monomial +/- theorem mv_polynomial.rename_prodmk_eval₂ +/- theorem mv_polynomial.rename_rename +/- theorem mv_polynomial.total_degree_rename_le 2020-09-24 03:33:52 ef18740 feat(linear_algebra/eigenspace): generalized eigenvectors span the entire space (#4111) ESTIMATED CHANGES Modified docs/references.bib Modified src/linear_algebra/basic.lean + theorem linear_map.ker_restrict Modified src/linear_algebra/eigenspace.lean +/- theorem module.End.aeval_apply_of_has_eigenvector +/- def module.End.eigenspace +/- theorem module.End.eigenspace_aeval_polynomial_degree_1 +/- theorem module.End.eigenspace_div +/- theorem module.End.eigenspace_le_generalized_eigenspace +/- theorem module.End.eigenvectors_linear_independent +/- theorem module.End.exists_eigenvalue +/- theorem module.End.exp_ne_zero_of_has_generalized_eigenvalue + def module.End.generalized_eigenrange +/- def module.End.generalized_eigenspace +/- theorem module.End.generalized_eigenspace_eq_generalized_eigenspace_findim_of_le +/- theorem module.End.generalized_eigenspace_mono +/- theorem module.End.generalized_eigenspace_restrict + theorem module.End.generalized_eigenvec_disjoint_range_ker +/- def module.End.has_eigenvalue +/- def module.End.has_eigenvector +/- def module.End.has_generalized_eigenvalue +/- theorem module.End.has_generalized_eigenvalue_of_has_eigenvalue +/- theorem module.End.has_generalized_eigenvalue_of_has_generalized_eigenvalue_of_le +/- def module.End.has_generalized_eigenvector +/- theorem module.End.ker_aeval_ring_hom'_unit_polynomial + theorem module.End.map_generalized_eigenrange_le +/- theorem module.End.mem_eigenspace_iff + theorem module.End.pos_findim_generalized_eigenspace_of_has_eigenvalue + theorem module.End.supr_generalized_eigenspace_eq_top Modified src/ring_theory/algebra.lean + theorem algebra.mul_sub_algebra_map_commutes + theorem algebra.mul_sub_algebra_map_pow_commutes 2020-09-24 02:35:58 4e41445 chore(scripts): update nolints.txt (#4226) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-24 02:35:57 6b35819 refactor(category_theory): make `has_image` and friends a Prop (#4195) This is an obious follow-up to #3995. It changes the following declarations to a `Prop`: * `arrow.has_lift` * `strong_epi` * `has_image`/`has_images` * `has_strong_epi_mono_factorisations` * `has_image_map`/`has_image_maps` The big win is that there is now precisely one notion of exactness in every category with kernels and images, not a (different but provably equal) notion of exactness per `has_kernels` and `has_images` instance like in the pre-#3995 era. ESTIMATED CHANGES Modified src/algebra/category/Group/images.lean - def AddCommGroup.image_iso_range - theorem AddCommGroup.image_map Modified src/category_theory/abelian/basic.lean + def category_theory.abelian.coimage_iso_image' - theorem category_theory.abelian.image_eq_image + def category_theory.abelian.image_iso_image - theorem category_theory.abelian.image_ι_eq_image_ι + theorem category_theory.abelian.images.image_ι_comp_eq_zero - theorem category_theory.abelian.kernel_cokernel_eq_image_ι + theorem category_theory.abelian.strong_epi_of_epi - def category_theory.abelian.strong_epi_of_epi Modified src/category_theory/abelian/exact.lean + def category_theory.abelian.is_limit_image' Modified src/category_theory/abelian/non_preadditive.lean + theorem category_theory.non_preadditive_abelian.strong_epi_of_epi - def category_theory.non_preadditive_abelian.strong_epi_of_epi Modified src/category_theory/abelian/pseudoelements.lean Modified src/category_theory/arrow.lean + theorem category_theory.arrow.has_lift.mk - def category_theory.arrow.lift + structure category_theory.arrow.lift_struct Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.has_image.mk - theorem category_theory.limits.has_image_map.factor_map + def category_theory.limits.has_image_map.image_map + theorem category_theory.limits.has_image_map.mk + theorem category_theory.limits.has_image_map.transport - def category_theory.limits.has_image_map_comp - def category_theory.limits.has_image_map_id + theorem category_theory.limits.has_strong_epi_mono_factorisations.mk +/- def category_theory.limits.image.is_image +/- def category_theory.limits.image.map +/- def category_theory.limits.image.mono_factorisation + structure category_theory.limits.image_factorisation + theorem category_theory.limits.image_map.factor_map + def category_theory.limits.image_map.transport + structure category_theory.limits.image_map + def category_theory.limits.image_map_comp + def category_theory.limits.image_map_id + theorem category_theory.limits.is_image.e_iso_ext_hom + theorem category_theory.limits.is_image.e_iso_ext_inv + theorem category_theory.limits.is_image.iso_ext_hom_m + theorem category_theory.limits.is_image.iso_ext_inv_m + theorem category_theory.limits.is_image.lift_ι + theorem category_theory.limits.strong_epi_factor_thru_image_of_strong_epi_mono_factorisation + theorem category_theory.limits.strong_epi_of_strong_epi_mono_factorisation Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/strong_epi.lean - def category_theory.is_iso_of_mono_of_strong_epi + theorem category_theory.strong_epi_comp - def category_theory.strong_epi_comp + theorem category_theory.strong_epi_of_strong_epi - def category_theory.strong_epi_of_strong_epi Modified src/category_theory/limits/shapes/zero.lean - def category_theory.limits.has_image.zero + def category_theory.limits.image_factorisation_zero +/- def category_theory.limits.image_zero Modified src/category_theory/limits/types.lean - theorem category_theory.limits.types.image_map Modified src/category_theory/simple.lean 2020-09-24 00:15:43 96e81fa feat(data/(lazy_)list): various lemmas and definitions (#4172) ESTIMATED CHANGES Modified src/data/lazy_list/basic.lean + def lazy_list.attach + theorem lazy_list.forall_mem_cons + theorem lazy_list.mem_cons + theorem lazy_list.mem_nil + def lazy_list.pmap Modified src/data/list/basic.lean + theorem list.disjoint_take_drop + theorem list.inter_reverse + theorem list.mem_map_swap + theorem list.mem_of_mem_drop + theorem list.nth_eq_none_iff + theorem list.nth_injective + theorem list.reverse_take + theorem list.sizeof_slice_lt + theorem list.slice_eq Modified src/data/list/defs.lean + def list.slice Modified src/data/list/perm.lean + theorem list.perm.drop_inter + theorem list.perm.inter_append + theorem list.perm.slice_inter + theorem list.perm.take_inter Modified src/data/list/sigma.lean + theorem list.sizeof_erase_dupkeys + theorem list.sizeof_kerase Modified src/data/list/zip.lean + theorem list.nth_zip_eq_some + theorem list.nth_zip_with + theorem list.nth_zip_with_eq_some Modified src/data/sigma/basic.lean + theorem prod.fst_to_sigma + theorem prod.snd_to_sigma + def prod.to_sigma Modified src/tactic/interactive.lean 2020-09-23 20:55:39 6927958 feat(data/real/irrational): add a different formulation for irrationality (#4213) ESTIMATED CHANGES Modified src/data/rat/basic.lean Modified src/data/real/irrational.lean + theorem irrational_iff_ne_rational 2020-09-23 20:55:36 9aeffa8 feat(geometry/manifold): bundled smooth map (#3904) ESTIMATED CHANGES Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/times_cont_mdiff.lean + theorem continuous_linear_map.times_cont_mdiff Added src/geometry/manifold/times_cont_mdiff_map.lean + def smooth_map + theorem times_cont_mdiff_map.coe_inj + def times_cont_mdiff_map.comp + theorem times_cont_mdiff_map.comp_apply + def times_cont_mdiff_map.const + theorem times_cont_mdiff_map.ext + def times_cont_mdiff_map.id + structure times_cont_mdiff_map 2020-09-23 18:48:10 72e5b9f feat(measure_theory): ext lemmas for measures (#3895) Add class `sigma_finite`. Also some cleanup. Rename `measurable_space.is_measurable` -> `measurable_space.is_measurable'`. This is to avoid name clash with `_root_.is_measurable`, which should almost always be used instead. define `is_pi_system`. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.diff_eq_compl_inter + theorem set.diff_inter_self_eq_diff + theorem set.diff_self_inter Modified src/logic/basic.lean + theorem fact.elim Modified src/measure_theory/borel_space.lean +/- theorem measurable.ennreal_add Modified src/measure_theory/content.lean Modified src/measure_theory/haar_measure.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean +/- def is_measurable + def is_pi_system +/- theorem measurable_space.dynkin_system.generate_from_eq + theorem measurable_space.dynkin_system.generate_has_compl + theorem measurable_space.dynkin_system.generate_has_def + theorem measurable_space.dynkin_system.generate_has_subset_generate_measurable + theorem measurable_space.ext_iff +/- theorem measurable_space.generate_from_le +/- theorem measurable_space.generate_from_le_iff +/- theorem measurable_space.induction_on_inter Modified src/measure_theory/measure_space.lean + theorem measure_theory.ext_of_generate_finite + theorem measure_theory.measure.ext_of_generate_from_of_Union +/- def measure_theory.measure.is_complete + theorem measure_theory.measure_compl Modified src/measure_theory/outer_measure.lean 2020-09-23 16:56:11 7cf8fa6 fix(archive/100-thms): update link to 100.yaml in README (#4224) ESTIMATED CHANGES Modified archive/100-theorems-list/README.md 2020-09-23 11:10:37 ecd889a feat(data/polynomial/*): higher order derivative (#4187) ESTIMATED CHANGES Added src/data/polynomial/iterated_deriv.lean + theorem polynomial.coeff_iterated_deriv_as_prod_Ico + theorem polynomial.coeff_iterated_deriv_as_prod_range + def polynomial.iterated_deriv + theorem polynomial.iterated_deriv_C + theorem polynomial.iterated_deriv_C_zero + theorem polynomial.iterated_deriv_X + theorem polynomial.iterated_deriv_X_one + theorem polynomial.iterated_deriv_X_zero + theorem polynomial.iterated_deriv_add + theorem polynomial.iterated_deriv_eq_zero_of_nat_degree_lt + theorem polynomial.iterated_deriv_mul + theorem polynomial.iterated_deriv_neg + theorem polynomial.iterated_deriv_one + theorem polynomial.iterated_deriv_one_zero + theorem polynomial.iterated_deriv_smul + theorem polynomial.iterated_deriv_sub + theorem polynomial.iterated_deriv_succ + theorem polynomial.iterated_deriv_zero_left + theorem polynomial.iterated_deriv_zero_right 2020-09-23 09:47:01 5ab7eb0 feat(analysis/special_functions/trigonometric): continuity and differentiability of arctan (#4138) Added lemmas for continuity and differentiability of arctan, as well as various supporting limit lemmas. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem deriv_arctan + theorem deriv_within_arctan + theorem differentiable.arctan + theorem differentiable_at.arctan + theorem differentiable_on.arctan + theorem differentiable_within_at.arctan + theorem has_deriv_at.arctan + theorem has_deriv_within_at.arctan + theorem real.arctan_mem_Ioo + theorem real.continuous_arctan + theorem real.continuous_on_tan_Ioo + theorem real.deriv_arctan +/- theorem real.deriv_tan_of_mem_Ioo + theorem real.differentiable_at_arctan +/- theorem real.differentiable_at_tan_of_mem_Ioo +/- theorem real.exists_cos_eq +/- theorem real.exists_cos_eq_zero +/- theorem real.exists_sin_eq + theorem real.has_deriv_at_arctan +/- theorem real.has_deriv_at_tan_of_mem_Ioo +/- theorem real.range_cos +/- theorem real.range_sin + def real.tan_homeomorph + theorem real.tan_homeomorph_inv_fun_eq_arctan + theorem real.tendsto_cos_neg_pi_div_two + theorem real.tendsto_cos_pi_div_two + theorem real.tendsto_sin_neg_pi_div_two + theorem real.tendsto_sin_pi_div_two + theorem real.tendsto_tan_neg_pi_div_two + theorem real.tendsto_tan_pi_div_two Modified src/analysis/specific_limits.lean - theorem tendsto_at_top_div - theorem tendsto_at_top_mul_left' - theorem tendsto_at_top_mul_left - theorem tendsto_at_top_mul_right' - theorem tendsto_at_top_mul_right - theorem tendsto_inv_at_top_zero' - theorem tendsto_inv_at_top_zero - theorem tendsto_inv_zero_at_top Modified src/topology/algebra/ordered.lean + theorem tendsto.inv_tendsto_at_top + theorem tendsto.inv_tendsto_zero + theorem tendsto_at_top_div + theorem tendsto_at_top_mul_left' + theorem tendsto_at_top_mul_left + theorem tendsto_at_top_mul_right' + theorem tendsto_at_top_mul_right + theorem tendsto_inv_at_top_zero' + theorem tendsto_inv_at_top_zero + theorem tendsto_inv_zero_at_top + theorem tendsto_mul_at_bot + theorem tendsto_mul_at_top Modified src/topology/homeomorph.lean + def homeomorph.change_inv 2020-09-23 07:33:15 d7aada1 doc(data/list/tfae): Add skeletal docstring (#4220) ESTIMATED CHANGES Modified src/data/list/tfae.lean 2020-09-23 01:02:05 937199a chore(scripts): update nolints.txt (#4216) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-22 19:08:32 392d3e3 feat(archive/imo/*): add IMO 1972 B2, move IMOs to a subdirectory (#4209) ESTIMATED CHANGES Added archive/imo/imo1972_b2.lean Renamed archive/imo1988_q6.lean to archive/imo/imo1988_q6.lean 2020-09-22 17:01:30 994c31d feat(ring_theory/ideal/basic): mem_bot (#4211) Snippet from the Witt project Co-Authored-By: Rob Y. Lewis ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.mem_bot Modified src/ring_theory/ideal/over.lean 2020-09-22 14:52:30 f2458d6 chore(data/mv_polynomial): Rename variables (#4208) I renamed `α` to `R` throughout. I also changed the `\sigma` to `σ` in `basic.lean`, see leanprover-community/doc-gen#62 ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean +/- def mv_polynomial.C +/- theorem mv_polynomial.C_0 +/- theorem mv_polynomial.C_1 +/- theorem mv_polynomial.C_add +/- theorem mv_polynomial.C_eq_coe_nat +/- theorem mv_polynomial.C_mul +/- theorem mv_polynomial.C_pow +/- def mv_polynomial.X +/- theorem mv_polynomial.X_pow_eq_single +/- def mv_polynomial.aeval +/- theorem mv_polynomial.aeval_C +/- theorem mv_polynomial.aeval_def +/- theorem mv_polynomial.aeval_eq_zero +/- theorem mv_polynomial.aeval_monomial +/- theorem mv_polynomial.alg_hom_C +/- theorem mv_polynomial.alg_hom_ext +/- theorem mv_polynomial.algebra_map_eq +/- theorem mv_polynomial.as_sum +/- theorem mv_polynomial.coe_eval₂_hom +/- def mv_polynomial.coeff +/- theorem mv_polynomial.coeff_C_mul +/- theorem mv_polynomial.coeff_add +/- def mv_polynomial.coeff_coe_to_fun +/- theorem mv_polynomial.coeff_map +/- theorem mv_polynomial.coeff_mul +/- theorem mv_polynomial.coeff_mul_X' +/- theorem mv_polynomial.coeff_mul_X +/- theorem mv_polynomial.coeff_sum +/- theorem mv_polynomial.coeff_zero_X +/- theorem mv_polynomial.comp_eval₂_hom +/- def mv_polynomial.constant_coeff +/- theorem mv_polynomial.constant_coeff_C +/- theorem mv_polynomial.constant_coeff_comp_map +/- theorem mv_polynomial.constant_coeff_eq +/- theorem mv_polynomial.constant_coeff_map +/- theorem mv_polynomial.constant_coeff_monomial +/- theorem mv_polynomial.eq_zero_iff +/- def mv_polynomial.eval +/- theorem mv_polynomial.eval_eq' +/- theorem mv_polynomial.eval_eq +/- theorem mv_polynomial.eval_map +/- theorem mv_polynomial.eval_prod +/- theorem mv_polynomial.eval_sum +/- theorem mv_polynomial.eval_unique +/- def mv_polynomial.eval₂ +/- theorem mv_polynomial.eval₂_assoc +/- theorem mv_polynomial.eval₂_comp_left +/- theorem mv_polynomial.eval₂_comp_right +/- theorem mv_polynomial.eval₂_congr +/- theorem mv_polynomial.eval₂_eq' +/- theorem mv_polynomial.eval₂_eq +/- theorem mv_polynomial.eval₂_eq_eval_map +/- theorem mv_polynomial.eval₂_eta +/- def mv_polynomial.eval₂_hom +/- theorem mv_polynomial.eval₂_hom_C +/- theorem mv_polynomial.eval₂_hom_X' +/- theorem mv_polynomial.eval₂_hom_congr +/- theorem mv_polynomial.eval₂_hom_eq_zero +/- theorem mv_polynomial.eval₂_hom_map_hom +/- theorem mv_polynomial.eval₂_hom_monomial +/- theorem mv_polynomial.eval₂_map +/- theorem mv_polynomial.eval₂_one +/- theorem mv_polynomial.eval₂_pow +/- theorem mv_polynomial.eval₂_prod +/- theorem mv_polynomial.eval₂_sum +/- theorem mv_polynomial.eval₂_zero +/- theorem mv_polynomial.exists_coeff_ne_zero +/- theorem mv_polynomial.ext +/- theorem mv_polynomial.ext_iff +/- theorem mv_polynomial.hom_eq_hom +/- theorem mv_polynomial.induction_on' +/- theorem mv_polynomial.induction_on +/- theorem mv_polynomial.is_id +/- def mv_polynomial.map +/- theorem mv_polynomial.map_C +/- theorem mv_polynomial.map_X +/- theorem mv_polynomial.map_eval₂ +/- theorem mv_polynomial.map_eval₂_hom +/- theorem mv_polynomial.map_id +/- theorem mv_polynomial.map_map +/- theorem mv_polynomial.map_monomial +/- theorem mv_polynomial.monic_monomial_eq +/- def mv_polynomial.monomial +/- theorem mv_polynomial.monomial_add +/- theorem mv_polynomial.monomial_eq +/- theorem mv_polynomial.monomial_mul +/- theorem mv_polynomial.monomial_zero +/- theorem mv_polynomial.ne_zero_iff +/- theorem mv_polynomial.ring_hom_ext +/- theorem mv_polynomial.single_eq_C_mul_X +/- theorem mv_polynomial.smul_eq_C_mul +/- theorem mv_polynomial.smul_eval +/- theorem mv_polynomial.support_map_of_injective +/- theorem mv_polynomial.support_map_subset +/- theorem mv_polynomial.support_sum_monomial_coeff +/- def mv_polynomial Modified src/data/mv_polynomial/comm_ring.lean +/- theorem mv_polynomial.C_neg +/- theorem mv_polynomial.C_sub +/- theorem mv_polynomial.coeff_neg +/- theorem mv_polynomial.coeff_sub +/- theorem mv_polynomial.degrees_neg +/- theorem mv_polynomial.degrees_sub +/- theorem mv_polynomial.eval₂_hom_X +/- theorem mv_polynomial.hom_C +/- def mv_polynomial.hom_equiv +/- theorem mv_polynomial.total_degree_neg +/- theorem mv_polynomial.total_degree_sub Modified src/data/mv_polynomial/equiv.lean +/- def mv_polynomial.iter_to_sum +/- theorem mv_polynomial.iter_to_sum_C_C +/- theorem mv_polynomial.iter_to_sum_C_X +/- theorem mv_polynomial.iter_to_sum_X +/- def mv_polynomial.mv_polynomial_equiv_mv_polynomial +/- def mv_polynomial.option_equiv_left +/- def mv_polynomial.option_equiv_right +/- def mv_polynomial.pempty_ring_equiv +/- def mv_polynomial.punit_ring_equiv +/- def mv_polynomial.ring_equiv_congr +/- def mv_polynomial.ring_equiv_of_equiv +/- def mv_polynomial.sum_ring_equiv +/- def mv_polynomial.sum_to_iter +/- theorem mv_polynomial.sum_to_iter_C +/- theorem mv_polynomial.sum_to_iter_Xl +/- theorem mv_polynomial.sum_to_iter_Xr Modified src/data/mv_polynomial/monad.lean Modified src/data/mv_polynomial/variables.lean +/- theorem mv_polynomial.aeval_eq_constant_coeff_of_vars +/- theorem mv_polynomial.coeff_eq_zero_of_total_degree_lt +/- def mv_polynomial.degree_of +/- def mv_polynomial.degrees +/- theorem mv_polynomial.degrees_C +/- theorem mv_polynomial.degrees_X +/- theorem mv_polynomial.degrees_add +/- theorem mv_polynomial.degrees_add_of_disjoint +/- theorem mv_polynomial.degrees_map +/- theorem mv_polynomial.degrees_map_of_injective +/- theorem mv_polynomial.degrees_monomial +/- theorem mv_polynomial.degrees_monomial_eq +/- theorem mv_polynomial.degrees_mul +/- theorem mv_polynomial.degrees_one +/- theorem mv_polynomial.degrees_pow +/- theorem mv_polynomial.degrees_prod +/- theorem mv_polynomial.degrees_sum +/- theorem mv_polynomial.degrees_zero +/- theorem mv_polynomial.eval₂_hom_eq_constant_coeff_of_vars +/- theorem mv_polynomial.exists_degree_lt +/- theorem mv_polynomial.le_degrees_add +/- theorem mv_polynomial.mem_degrees +/- theorem mv_polynomial.mem_support_not_mem_vars_zero +/- def mv_polynomial.total_degree +/- theorem mv_polynomial.total_degree_C +/- theorem mv_polynomial.total_degree_X +/- theorem mv_polynomial.total_degree_add +/- theorem mv_polynomial.total_degree_eq +/- theorem mv_polynomial.total_degree_le_degrees_card +/- theorem mv_polynomial.total_degree_mul +/- theorem mv_polynomial.total_degree_multiset_prod +/- theorem mv_polynomial.total_degree_one +/- theorem mv_polynomial.total_degree_pow +/- theorem mv_polynomial.total_degree_zero +/- def mv_polynomial.vars +/- theorem mv_polynomial.vars_0 +/- theorem mv_polynomial.vars_C +/- theorem mv_polynomial.vars_X +/- theorem mv_polynomial.vars_add_subset +/- theorem mv_polynomial.vars_monomial_single +/- theorem mv_polynomial.vars_mul +/- theorem mv_polynomial.vars_one +/- theorem mv_polynomial.vars_pow +/- theorem mv_polynomial.vars_prod 2020-09-22 12:57:23 516b0df refactor(ring_theory/algebra): re-bundle `subalgebra` (#4180) This PR makes `subalgebra` extend `subsemiring` instead of using `subsemiring` as a field in its definition. The refactor is needed because `intermediate_field` should simultaneously extend `subalgebra` and `subfield`, and so the type of the `carrier` fields should match. I added some copies of definitions that use `subring` instead of `is_subring` if I needed to change these definitions anyway. ESTIMATED CHANGES Modified src/algebra/category/Algebra/limits.lean Modified src/field_theory/adjoin.lean Modified src/field_theory/fixed.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/subfield.lean Modified src/ring_theory/adjoin.lean +/- theorem algebra.adjoin_int Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebra.lean + theorem alg_hom.coe_range + theorem alg_hom.map_div + theorem alg_hom.map_inv + theorem alg_hom.mem_range + theorem algebra.algebra_map_of_subring + theorem algebra.algebra_map_of_subring_apply + theorem algebra.coe_algebra_map_of_subring + theorem algebra.is_subring_algebra_map_apply + theorem algebra.is_subring_coe_algebra_map + theorem algebra.is_subring_coe_algebra_map_hom - theorem algebra.subring_algebra_map_apply - theorem algebra.subring_coe_algebra_map - theorem algebra.subring_coe_algebra_map_hom + theorem mem_subalgebra_of_is_subring +/- theorem mem_subalgebra_of_subring + def subalgebra.to_subring + def subalgebra_of_is_subring +/- def subalgebra_of_subring Modified src/ring_theory/algebra_tower.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/subring.lean + theorem ring_hom.mem_range_self + theorem ring_hom.surjective_onto_range + def set.to_subring + theorem subring.sub_mem - def subring.to_comm_ring 2020-09-22 11:28:53 d09ef4a feat(category_theory/monoidal): transport monoidal structure along an equivalence (#4123) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean +/- theorem category_theory.equivalence.functor_unit_comp Modified src/category_theory/monoidal/category.lean +/- theorem category_theory.monoidal_category.id_tensor_comp_tensor_id +/- theorem category_theory.monoidal_category.tensor_id_comp_id_tensor Modified src/category_theory/monoidal/functor.lean + def category_theory.lax_monoidal_functor.id Added src/category_theory/monoidal/transport.lean + def category_theory.monoidal.from_transported + def category_theory.monoidal.lax_from_transported + def category_theory.monoidal.lax_to_transported + def category_theory.monoidal.to_transported + def category_theory.monoidal.transport + def category_theory.monoidal.transported + def category_theory.monoidal.transported_monoidal_counit_iso + def category_theory.monoidal.transported_monoidal_unit_iso 2020-09-22 11:28:51 caffd02 feat(data/polynomial/degree/trailing_degree): basic definitions and properties (#4113) Adds trailing_degree, trailing_nat_degree, trailing_coeff and various lemmas add functionality to work with trailing coefficients ESTIMATED CHANGES Added src/data/polynomial/degree/trailing_degree.lean + theorem polynomial.coeff_eq_zero_of_lt_nat_trailing_degree + theorem polynomial.coeff_eq_zero_of_trailing_degree_lt + theorem polynomial.coeff_nat_trailing_degree_eq_zero_of_trailing_degree_lt + theorem polynomial.coeff_nat_trailing_degree_pred_eq_zero + theorem polynomial.le_trailing_degree_C + theorem polynomial.le_trailing_degree_C_mul_X_pow + theorem polynomial.le_trailing_degree_X + theorem polynomial.le_trailing_degree_X_pow + theorem polynomial.le_trailing_degree_of_ne_zero + theorem polynomial.monomial_le_trailing_degree + def polynomial.nat_trailing_degree + theorem polynomial.nat_trailing_degree_C + theorem polynomial.nat_trailing_degree_X + theorem polynomial.nat_trailing_degree_X_le + theorem polynomial.nat_trailing_degree_eq_of_trailing_degree_eq + theorem polynomial.nat_trailing_degree_eq_of_trailing_degree_eq_some + theorem polynomial.nat_trailing_degree_int_cast + theorem polynomial.nat_trailing_degree_le_nat_trailing_degree + theorem polynomial.nat_trailing_degree_le_of_ne_zero + theorem polynomial.nat_trailing_degree_le_of_trailing_degree_le + theorem polynomial.nat_trailing_degree_le_trailing_degree + theorem polynomial.nat_trailing_degree_nat_cast + theorem polynomial.nat_trailing_degree_neg + theorem polynomial.nat_trailing_degree_one + theorem polynomial.nat_trailing_degree_zero + theorem polynomial.ne_zero_of_trailing_degree_lt + def polynomial.next_coeff_up + theorem polynomial.next_coeff_up_C_eq_zero + theorem polynomial.next_coeff_up_of_pos_nat_trailing_degree + def polynomial.trailing_coeff + def polynomial.trailing_degree + theorem polynomial.trailing_degree_C + theorem polynomial.trailing_degree_X + theorem polynomial.trailing_degree_eq_iff_nat_trailing_degree_eq + theorem polynomial.trailing_degree_eq_iff_nat_trailing_degree_eq_of_pos + theorem polynomial.trailing_degree_eq_nat_trailing_degree + theorem polynomial.trailing_degree_eq_top + theorem polynomial.trailing_degree_le_trailing_degree + theorem polynomial.trailing_degree_lt_wf + theorem polynomial.trailing_degree_monomial + theorem polynomial.trailing_degree_ne_of_nat_trailing_degree_ne + theorem polynomial.trailing_degree_neg + theorem polynomial.trailing_degree_one + theorem polynomial.trailing_degree_one_le + theorem polynomial.trailing_degree_zero + theorem polynomial.trailing_monic.def + theorem polynomial.trailing_monic.trailing_coeff + def polynomial.trailing_monic 2020-09-22 10:04:16 58d0bfc feat(topology/sheaves): alternate formulation of the sheaf condition (#4190) Currently the sheaf condition is stated as it often is in textbooks, e.g. https://stacks.math.columbia.edu/tag/0072. That is, it is about an equalizer of the two maps `∏ F.obj (U i) ⟶ ∏ F.obj (U i) ⊓ (U j)`. This PR adds an equivalent formulation, saying that `F.obj (supr U)` (with its natural projection maps) is the limit of the diagram consisting of the `F.obj (U i)` and the `F.obj (U i ⊓ U j)`. I'd like to add further reformulations in subsequent PRs, in particular the nice one I saw in Lurie's SAG, just saying that `F.obj (supr U)` is the limit over the diagram of all `F.obj V` where `V` is an open subset of *some* `U i`. This version is actually much nicer to formalise, and I'm hoping we can translate over quite a lot of what we've already done about the sheaf condition to that version ESTIMATED CHANGES Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean Added src/category_theory/category/pairwise.lean + def category_theory.pairwise.comp + def category_theory.pairwise.cone + def category_theory.pairwise.cone_is_limit + def category_theory.pairwise.cone_π_app + def category_theory.pairwise.diagram + def category_theory.pairwise.diagram_map + def category_theory.pairwise.diagram_obj + inductive category_theory.pairwise.hom + def category_theory.pairwise.id + inductive category_theory.pairwise Modified src/category_theory/opposites.lean + theorem category_theory.le_of_op_hom + def category_theory.op_hom_of_le Modified src/topology/sheaves/forget.lean + def Top.presheaf.sheaf_condition.diagram_comp_preserves_limits + def Top.presheaf.sheaf_condition.map_cone_fork + def Top.presheaf.sheaf_condition_equiv_sheaf_condition_comp - def Top.sheaf_condition.diagram_comp_preserves_limits - def Top.sheaf_condition.map_cone_fork - def Top.sheaf_condition_equiv_sheaf_condition_comp Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf.lean + def Top.presheaf.sheaf_condition + def Top.presheaf.sheaf_condition_equiv_of_iso + def Top.presheaf.sheaf_condition_punit - def Top.sheaf_condition.cover.of_open_embedding - def Top.sheaf_condition.diagram.iso_of_iso - def Top.sheaf_condition.diagram.iso_of_open_embedding - def Top.sheaf_condition.diagram - def Top.sheaf_condition.fork.iso_of_iso - def Top.sheaf_condition.fork.iso_of_open_embedding - def Top.sheaf_condition.fork - theorem Top.sheaf_condition.fork_X - theorem Top.sheaf_condition.fork_ι - theorem Top.sheaf_condition.fork_π_app_walking_parallel_pair_one - theorem Top.sheaf_condition.fork_π_app_walking_parallel_pair_zero - def Top.sheaf_condition.left_res - def Top.sheaf_condition.pi_inters.iso_of_iso - def Top.sheaf_condition.pi_inters.iso_of_open_embedding - def Top.sheaf_condition.pi_inters - def Top.sheaf_condition.pi_opens.iso_of_iso - def Top.sheaf_condition.pi_opens.iso_of_open_embedding - def Top.sheaf_condition.pi_opens - def Top.sheaf_condition.res - def Top.sheaf_condition.right_res - theorem Top.sheaf_condition.w - def Top.sheaf_condition - def Top.sheaf_condition_equiv_of_iso - def Top.sheaf_condition_punit Added src/topology/sheaves/sheaf_condition/equalizer_products.lean + def Top.presheaf.sheaf_condition_equalizer_products.cover.of_open_embedding + def Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso + def Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_open_embedding + def Top.presheaf.sheaf_condition_equalizer_products.diagram + def Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_iso + def Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_open_embedding + def Top.presheaf.sheaf_condition_equalizer_products.fork + theorem Top.presheaf.sheaf_condition_equalizer_products.fork_X + theorem Top.presheaf.sheaf_condition_equalizer_products.fork_ι + theorem Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_one + theorem Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero + def Top.presheaf.sheaf_condition_equalizer_products.left_res + def Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso + def Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_open_embedding + def Top.presheaf.sheaf_condition_equalizer_products.pi_inters + def Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso + def Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_open_embedding + def Top.presheaf.sheaf_condition_equalizer_products.pi_opens + def Top.presheaf.sheaf_condition_equalizer_products.res + def Top.presheaf.sheaf_condition_equalizer_products.right_res + theorem Top.presheaf.sheaf_condition_equalizer_products.w Added src/topology/sheaves/sheaf_condition/pairwise_intersections.lean + def Top.presheaf.sheaf_condition_equiv_sheaf_condition_pairwise_intersections + def Top.presheaf.sheaf_condition_equiv_sheaf_condition_preserves_limit_pairwise_intersections + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_counit_iso + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor_obj + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso + def Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app + def Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork + def Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone + def Top.presheaf.sheaf_condition_pairwise_intersections + def Top.presheaf.sheaf_condition_preserves_limit_pairwise_intersections Modified src/topology/sheaves/sheaf_of_functions.lean + def Top.presheaf.to_Type + def Top.presheaf.to_Types - def Top.sheaf_condition.to_Type - def Top.sheaf_condition.to_Types 2020-09-22 08:41:20 b4641ef feat(l1_space): add measurability to integrable (#4170) This PR defines `integrable` such that `integrable` implies `measurable`. The old version is called `has_finite_integral`. This allows us to drop *many* measurability conditions from lemmas that also require integrability. There are some lemmas that have extra measurability conditions, if it has `integrable` as conclusion without corresponding `measurable` hypothesis. There are many results that require an additional `[measurable_space E]` hypothesis, and some that require `[borel_space E]` or `[second_countable_space E]` (usually when using that addition is measurable). ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_add + theorem measure_theory.integral_add_measure' +/- theorem measure_theory.integral_eq +/- theorem measure_theory.integral_eq_lintegral_max_sub_lintegral_min +/- theorem measure_theory.integral_finset_sum +/- theorem measure_theory.integral_mono +/- theorem measure_theory.integral_mono_of_nonneg - theorem measure_theory.integral_non_integrable +/- theorem measure_theory.integral_sub +/- theorem measure_theory.integral_undef +/- theorem measure_theory.l1.integral_of_fun_eq_integral +/- theorem measure_theory.l1.norm_of_fun_eq_integral_norm +/- theorem measure_theory.l1.simple_func.of_simple_func_add +/- theorem measure_theory.l1.simple_func.of_simple_func_sub +/- theorem measure_theory.l1.simple_func.of_simple_func_zero +/- theorem measure_theory.norm_integral_le_of_norm_le +/- theorem measure_theory.simple_func.integrable_pair +/- theorem measure_theory.simple_func.integral_sub +/- theorem measure_theory.tendsto_integral_of_l1 Modified src/measure_theory/borel_space.lean Modified src/measure_theory/interval_integral.lean +/- theorem filter.tendsto.eventually_interval_integrable +/- theorem filter.tendsto.eventually_interval_integrable_ae +/- theorem interval_integrable.add +/- theorem interval_integrable.neg +/- theorem interval_integrable.refl +/- theorem interval_integrable.sub +/- theorem interval_integral.deriv_integral_left +/- theorem interval_integral.deriv_integral_of_tendsto_ae_left +/- theorem interval_integral.deriv_integral_of_tendsto_ae_right +/- theorem interval_integral.deriv_integral_right +/- theorem interval_integral.deriv_within_integral_left +/- theorem interval_integral.deriv_within_integral_of_tendsto_ae_left +/- theorem interval_integral.deriv_within_integral_of_tendsto_ae_right +/- theorem interval_integral.deriv_within_integral_right +/- theorem interval_integral.fderiv_integral +/- theorem interval_integral.fderiv_integral_of_tendsto_ae +/- theorem interval_integral.fderiv_within_integral_of_tendsto_ae +/- theorem interval_integral.integral_add +/- theorem interval_integral.integral_has_deriv_at_left +/- theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_left +/- theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_right +/- theorem interval_integral.integral_has_deriv_at_right +/- theorem interval_integral.integral_has_deriv_within_at_left +/- theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_left +/- theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_right +/- theorem interval_integral.integral_has_deriv_within_at_right +/- theorem interval_integral.integral_has_fderiv_at +/- theorem interval_integral.integral_has_fderiv_at_of_tendsto_ae +/- theorem interval_integral.integral_has_fderiv_within_at +/- theorem interval_integral.integral_has_fderiv_within_at_of_tendsto_ae +/- theorem interval_integral.integral_has_strict_deriv_at_left +/- theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_left +/- theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_right +/- theorem interval_integral.integral_has_strict_deriv_at_right +/- theorem interval_integral.integral_has_strict_fderiv_at +/- theorem interval_integral.integral_has_strict_fderiv_at_of_tendsto_ae +/- theorem interval_integral.integral_sub Modified src/measure_theory/l1_space.lean + theorem measurable.integrable_zero + theorem measure_theory.has_finite_integral.add_measure + theorem measure_theory.has_finite_integral.congr' + theorem measure_theory.has_finite_integral.congr + theorem measure_theory.has_finite_integral.const_mul + theorem measure_theory.has_finite_integral.left_of_add_measure + theorem measure_theory.has_finite_integral.max_zero + theorem measure_theory.has_finite_integral.min_zero + theorem measure_theory.has_finite_integral.mono' + theorem measure_theory.has_finite_integral.mono + theorem measure_theory.has_finite_integral.mono_measure + theorem measure_theory.has_finite_integral.mul_const + theorem measure_theory.has_finite_integral.neg + theorem measure_theory.has_finite_integral.norm + theorem measure_theory.has_finite_integral.right_of_add_measure + theorem measure_theory.has_finite_integral.smul + theorem measure_theory.has_finite_integral.smul_measure + def measure_theory.has_finite_integral + theorem measure_theory.has_finite_integral_add_measure + theorem measure_theory.has_finite_integral_congr' + theorem measure_theory.has_finite_integral_congr + theorem measure_theory.has_finite_integral_const + theorem measure_theory.has_finite_integral_const_iff + theorem measure_theory.has_finite_integral_iff_edist + theorem measure_theory.has_finite_integral_iff_norm + theorem measure_theory.has_finite_integral_iff_of_real + theorem measure_theory.has_finite_integral_neg_iff + theorem measure_theory.has_finite_integral_norm_iff + theorem measure_theory.has_finite_integral_of_bounded + theorem measure_theory.has_finite_integral_of_dominated_convergence + theorem measure_theory.has_finite_integral_smul_iff + theorem measure_theory.has_finite_integral_zero + theorem measure_theory.has_finite_integral_zero_measure +/- theorem measure_theory.integrable.add +/- theorem measure_theory.integrable.congr' +/- theorem measure_theory.integrable.congr + theorem measure_theory.integrable.has_finite_integral +/- theorem measure_theory.integrable.left_of_add_measure + theorem measure_theory.integrable.measurable +/- theorem measure_theory.integrable.mono' +/- theorem measure_theory.integrable.mono +/- theorem measure_theory.integrable.mono_measure +/- theorem measure_theory.integrable.neg +/- theorem measure_theory.integrable.norm +/- theorem measure_theory.integrable.right_of_add_measure +/- theorem measure_theory.integrable.smul +/- theorem measure_theory.integrable.sub +/- def measure_theory.integrable +/- theorem measure_theory.integrable_congr' +/- theorem measure_theory.integrable_congr +/- theorem measure_theory.integrable_finset_sum - theorem measure_theory.integrable_iff_edist - theorem measure_theory.integrable_iff_norm - theorem measure_theory.integrable_iff_of_real +/- theorem measure_theory.integrable_map_measure +/- theorem measure_theory.integrable_neg_iff +/- theorem measure_theory.integrable_norm_iff - theorem measure_theory.integrable_of_bounded - theorem measure_theory.integrable_of_dominated_convergence +/- theorem measure_theory.integrable_smul_iff +/- theorem measure_theory.integrable_zero - theorem measure_theory.integrable_zero_measure +/- theorem measure_theory.l1.dist_to_fun +/- theorem measure_theory.l1.norm_of_fun +/- theorem measure_theory.l1.norm_of_fun_eq_lintegral_norm +/- def measure_theory.l1.of_fun +/- theorem measure_theory.l1.of_fun_add +/- theorem measure_theory.l1.of_fun_eq_mk +/- theorem measure_theory.l1.of_fun_eq_of_fun +/- theorem measure_theory.l1.of_fun_neg +/- theorem measure_theory.l1.of_fun_smul +/- theorem measure_theory.l1.of_fun_sub +/- theorem measure_theory.l1.of_fun_to_fun +/- theorem measure_theory.l1.of_fun_zero +/- theorem measure_theory.l1.to_fun_of_fun +/- def measure_theory.l1 +/- theorem measure_theory.lintegral_edist_lt_top Modified src/measure_theory/set_integral.lean +/- def continuous_linear_map.comp_l1 +/- theorem continuous_linear_map.comp_l1_apply +/- theorem continuous_linear_map.integrable_comp +/- theorem continuous_linear_map.integral_comp_comm +/- theorem continuous_linear_map.integral_comp_l1_comm +/- theorem continuous_linear_map.measurable_comp_l1 +/- theorem continuous_linear_map.norm_comp_l1_apply_le +/- theorem continuous_on.integrable_on_compact +/- theorem is_compact.integrable_on_of_nhds_within + theorem measure_theory.has_finite_integral_restrict_of_bounded +/- theorem measure_theory.integrable_indicator_iff +/- theorem measure_theory.integrable_on_empty +/- theorem measure_theory.integrable_on_finite_union +/- theorem measure_theory.integrable_on_finset_union - theorem measure_theory.integrable_on_of_bounded +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto +/- theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto_ae Modified src/measure_theory/simple_func_dense.lean +/- theorem measure_theory.simple_func_sequence_tendsto' 2020-09-22 06:16:42 2ae199f refactor(ring_theory/unique_factorization_domain): completes the refactor of `unique_factorization_domain` (#4156) Refactors `unique_factorization_domain` to `unique_factorization_monoid` `unique_factorization_monoid` is a predicate `unique_factorization_monoid` now requires no additive/subtractive structure ESTIMATED CHANGES Modified docs/100.yaml Modified docs/overview.yaml Modified scripts/nolints.txt Modified src/algebra/associated.lean - theorem associates.prod_eq_zero_iff Modified src/algebra/gcd_monoid.lean + theorem associates.mk_normalize Modified src/data/multiset/basic.lean + theorem multiset.prod_eq_zero_iff Modified src/field_theory/splitting_field.lean Modified src/ring_theory/discrete_valuation_ring.lean +/- theorem discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization.of_ufd_of_unique_irreducible + theorem discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization.ufd +/- theorem discrete_valuation_ring.of_ufd_of_unique_irreducible Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/rational_root.lean - theorem unique_factorization_domain.integer_of_integral - theorem unique_factorization_domain.integrally_closed + theorem unique_factorization_monoid.integer_of_integral + theorem unique_factorization_monoid.integrally_closed Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean - theorem associates.associates_irreducible_iff_prime - def associates.factors' - def associates.factors +/- theorem associates.factors_mk +/- theorem associates.map_subtype_coe_factors' +/- def associates.{u} - theorem coprime_iff_gcd_eq_one - theorem exists_prime_dvd_of_gcd_ne_one + theorem irreducible_iff_prime_of_exists_prime_of_factor + theorem irreducible_iff_prime_of_exists_unique_irreducible_of_factor + theorem prime_factors_irreducible + theorem prime_factors_unique - theorem unique_factorization_domain.dvd_of_dvd_mul_left_of_no_prime_factors - theorem unique_factorization_domain.dvd_of_dvd_mul_right_of_no_prime_factors - theorem unique_factorization_domain.exists_mem_factors_of_dvd - theorem unique_factorization_domain.exists_reduced_factors' - theorem unique_factorization_domain.exists_reduced_factors - theorem unique_factorization_domain.factors_irreducible - theorem unique_factorization_domain.induction_on_prime - theorem unique_factorization_domain.irreducible_factors - theorem unique_factorization_domain.irreducible_iff_prime - theorem unique_factorization_domain.no_factors_of_no_prime_factors - def unique_factorization_domain.of_unique_irreducible_factorization - def unique_factorization_domain.to_gcd_monoid - theorem unique_factorization_domain.unique + theorem unique_factorization_monoid.dvd_of_dvd_mul_left_of_no_prime_of_factor + theorem unique_factorization_monoid.dvd_of_dvd_mul_right_of_no_prime_of_factor + theorem unique_factorization_monoid.exists_mem_factors_of_dvd + theorem unique_factorization_monoid.exists_prime_of_factor + theorem unique_factorization_monoid.exists_reduced_factors' + theorem unique_factorization_monoid.exists_reduced_factors + theorem unique_factorization_monoid.factors_irreducible + theorem unique_factorization_monoid.factors_prod + theorem unique_factorization_monoid.factors_unique + theorem unique_factorization_monoid.induction_on_prime + theorem unique_factorization_monoid.irreducible_of_factor + theorem unique_factorization_monoid.no_factors_of_no_prime_of_factor + theorem unique_factorization_monoid.normalize_factor + theorem unique_factorization_monoid.of_exists_unique_irreducible_of_factor + theorem unique_factorization_monoid.prime_of_factor + theorem unique_factorization_monoid_iff_exists_prime_of_factor + theorem unique_factorization_monoid_of_exists_prime_of_factor - structure unique_irreducible_factorization + theorem wf_dvd_monoid_of_exists_prime_of_factor 2020-09-22 00:54:05 480c92c chore(scripts): update nolints.txt (#4207) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-21 18:45:31 b91df55 chore(topology/algebra/module): make `topological_module` an abbreviation (#4200) Also prove that a `topological_semiring` is a `topological_semimodule`. ESTIMATED CHANGES Modified src/topology/algebra/module.lean + def topological_module 2020-09-21 16:27:12 92c0125 chore(data/nat/digits): use nat namespace (#4201) ESTIMATED CHANGES Modified docs/100.yaml Modified src/data/nat/digits.lean - theorem base_pow_length_digits_le' - theorem base_pow_length_digits_le - theorem coe_int_of_digits - theorem coe_of_digits - def digits - theorem digits_add - theorem digits_add_two_add_one - def digits_aux - def digits_aux_0 - def digits_aux_1 - theorem digits_aux_def - theorem digits_aux_zero - theorem digits_eq_nil_iff_eq_zero - theorem digits_last - theorem digits_len_le_digits_len_succ - theorem digits_lt_base' - theorem digits_lt_base - theorem digits_ne_nil_iff_ne_zero - theorem digits_of_digits - theorem digits_of_lt - theorem digits_one - theorem digits_one_succ - theorem digits_zero - theorem digits_zero_of_eq_zero - theorem digits_zero_succ - theorem digits_zero_zero - theorem dvd_iff_dvd_digits_sum - theorem dvd_iff_dvd_of_digits - theorem dvd_of_digits_sub_of_digits - theorem eleven_dvd_iff - theorem last_digit_ne_zero - theorem le_digits_len_le - theorem lt_base_pow_length_digits' - theorem lt_base_pow_length_digits - theorem modeq_digits_sum - theorem modeq_eleven_digits_sum - theorem modeq_nine_digits_sum - theorem modeq_three_digits_sum + theorem nat.base_pow_length_digits_le' + theorem nat.base_pow_length_digits_le + theorem nat.coe_int_of_digits + theorem nat.coe_of_digits + def nat.digits + theorem nat.digits_add + theorem nat.digits_add_two_add_one + def nat.digits_aux + def nat.digits_aux_0 + def nat.digits_aux_1 + theorem nat.digits_aux_def + theorem nat.digits_aux_zero + theorem nat.digits_eq_nil_iff_eq_zero + theorem nat.digits_last + theorem nat.digits_len_le_digits_len_succ + theorem nat.digits_lt_base' + theorem nat.digits_lt_base + theorem nat.digits_ne_nil_iff_ne_zero + theorem nat.digits_of_digits + theorem nat.digits_of_lt + theorem nat.digits_one + theorem nat.digits_one_succ + theorem nat.digits_zero + theorem nat.digits_zero_of_eq_zero + theorem nat.digits_zero_succ + theorem nat.digits_zero_zero + theorem nat.dvd_iff_dvd_digits_sum + theorem nat.dvd_iff_dvd_of_digits + theorem nat.dvd_of_digits_sub_of_digits + theorem nat.eleven_dvd_iff + theorem nat.last_digit_ne_zero + theorem nat.le_digits_len_le + theorem nat.lt_base_pow_length_digits' + theorem nat.lt_base_pow_length_digits + theorem nat.modeq_digits_sum + theorem nat.modeq_eleven_digits_sum + theorem nat.modeq_nine_digits_sum + theorem nat.modeq_three_digits_sum + theorem nat.nine_dvd_iff + def nat.of_digits + theorem nat.of_digits_append + theorem nat.of_digits_digits + theorem nat.of_digits_digits_append_digits + theorem nat.of_digits_eq_foldr + theorem nat.of_digits_lt_base_pow_length' + theorem nat.of_digits_lt_base_pow_length + theorem nat.of_digits_mod + theorem nat.of_digits_modeq' + theorem nat.of_digits_modeq + theorem nat.of_digits_neg_one + theorem nat.of_digits_one + theorem nat.of_digits_one_cons + theorem nat.of_digits_singleton + theorem nat.of_digits_zmod + theorem nat.of_digits_zmodeq' + theorem nat.of_digits_zmodeq + theorem nat.pow_length_le_mul_of_digits + theorem nat.three_dvd_iff + theorem nat.zmodeq_of_digits_digits - theorem nine_dvd_iff - def of_digits - theorem of_digits_append - theorem of_digits_digits - theorem of_digits_digits_append_digits - theorem of_digits_eq_foldr - theorem of_digits_lt_base_pow_length' - theorem of_digits_lt_base_pow_length - theorem of_digits_mod - theorem of_digits_modeq' - theorem of_digits_modeq - theorem of_digits_neg_one - theorem of_digits_one - theorem of_digits_one_cons - theorem of_digits_singleton - theorem of_digits_zmod - theorem of_digits_zmodeq' - theorem of_digits_zmodeq - theorem pow_length_le_mul_of_digits - theorem three_dvd_iff - theorem zmodeq_of_digits_digits 2020-09-21 13:06:58 4a8c38e chore(category_theory/limits/lattice): cleanup (#4191) ESTIMATED CHANGES Modified src/category_theory/limits/lattice.lean + def category_theory.limits.complete_lattice.colimit_cocone + def category_theory.limits.complete_lattice.colimit_iso_supr + theorem category_theory.limits.complete_lattice.colimit_iso_supr_hom + theorem category_theory.limits.complete_lattice.colimit_iso_supr_inv + def category_theory.limits.complete_lattice.limit_cone + def category_theory.limits.complete_lattice.limit_iso_infi + theorem category_theory.limits.complete_lattice.limit_iso_infi_hom + theorem category_theory.limits.complete_lattice.limit_iso_infi_inv 2020-09-21 10:21:23 cd4a91f fix(scripts/mk_all): macOS compatibility fix (#4148) `readlink -f` doesn't work macOS unfortunately - there are alternatives but I think it's probably safe to remove it altogether? This assumes `mk_all.sh` isn't a symlink but I can't think of a reason why it should be - and `rm_all.sh` uses `dirname "${BASH_SOURCE[0]}"` directly 🙂 ESTIMATED CHANGES Modified scripts/mk_all.sh 2020-09-21 08:37:54 e483298 feat(ring_theory/unique_factorization_domain): API for coprime, coprime factor of a power is a power (#4049) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.exists_non_zero_rep + theorem associates.exists_rep Modified src/algebra/big_operators/basic.lean + theorem multiset.count_sum' + theorem multiset.exists_smul_of_dvd_count + theorem multiset.to_finset_sum_count_smul_eq Modified src/algebra/group_with_zero_power.lean +/- theorem pow_eq_zero' +/- theorem pow_ne_zero' Modified src/data/list/basic.lean +/- theorem list.dvd_prod Modified src/data/multiset/basic.lean + theorem multiset.count_sum +/- theorem multiset.dvd_prod + theorem multiset.map_repeat Modified src/ring_theory/unique_factorization_domain.lean + theorem associates.associates_irreducible_iff_prime + def associates.bcount + def associates.bfactor_set_mem + theorem associates.coprime_iff_inf_one + def associates.count + theorem associates.count_mul + theorem associates.count_mul_of_coprime' + theorem associates.count_mul_of_coprime + theorem associates.count_of_coprime + theorem associates.count_pow + theorem associates.count_reducible + theorem associates.count_some + theorem associates.count_zero + theorem associates.dvd_count_of_dvd_count_mul + theorem associates.dvd_count_pow + theorem associates.dvd_of_mem_factors' + theorem associates.dvd_of_mem_factors + theorem associates.eq_pow_of_mul_eq_pow + theorem associates.exists_prime_dvd_of_not_inf_one + def associates.factor_set_mem + theorem associates.factor_set_mem_eq_mem + theorem associates.factors_one + theorem associates.factors_prime_pow + theorem associates.is_pow_of_dvd_count + theorem associates.le_of_count_ne_zero + theorem associates.mem_factor_set_some + theorem associates.mem_factor_set_top + theorem associates.mem_factors'_iff_dvd + theorem associates.mem_factors'_of_dvd + theorem associates.mem_factors_iff_dvd + theorem associates.mem_factors_of_dvd + theorem associates.pow_factors + theorem associates.prime_pow_dvd_iff_le + theorem associates.reducible_not_mem_factor_set + theorem coprime_iff_gcd_eq_one + theorem exists_prime_dvd_of_gcd_ne_one 2020-09-21 06:08:33 40f582b feat(data/*/nat_antidiagonal): induction lemmas about antidiagonals (#4193) Adds a `nat.antidiagonal_succ` lemma for `list`, `multiset`, and `finset`, useful for proving facts about power series derivatives ESTIMATED CHANGES Modified src/algebra/big_operators/default.lean Added src/algebra/big_operators/nat_antidiagonal.lean + theorem finset.nat.sum_antidiagonal_succ Modified src/data/finset/nat_antidiagonal.lean + theorem finset.nat.antidiagonal_succ + theorem finset.nat.map_swap_antidiagonal Modified src/data/list/nat_antidiagonal.lean + theorem list.nat.antidiagonal_succ Modified src/data/multiset/nat_antidiagonal.lean + theorem multiset.nat.antidiagonal_succ 2020-09-21 03:23:12 d8e7bb5 feat(tactic/tauto): optional closer tactic for `tauto` (#4189) `tauto` sometimes fails on easy subgoals; instead of backtracking and discarding the work, the user can now supply a closer tactic to the remaining goals, such as `cc`, `simp`, or `linarith`. this also wraps `tauto` in a `focus1`, which allows for better error messages. ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean Modified src/tactic/tauto.lean Modified src/tactic/wlog.lean Modified test/tauto.lean 2020-09-20 23:55:02 f77d5d6 feat(data/finset): add lemma for empty filter (#4188) A little lemma, analogous to `filter_true_of_mem` to make it convenient to reduce a filter which always fails. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.filter_false_of_mem Modified src/data/monoid_algebra.lean 2020-09-20 21:53:36 db9842c feat(analysis/calculus/times_cont_diff): inversion of continuous linear maps is smooth (#4185) - Introduce an `inverse` function on the space of continuous linear maps between two Banach spaces, which is the inverse if the map is a continuous linear equivalence and zero otherwise. - Prove that this function is `times_cont_diff_at` each `continuous_linear_equiv`. - Some of the constructions used had been introduced in #3282 and placed in `analysis.normed_space.operator_norm` (normed spaces); they are moved to the earlier file `topology.algebra.module` (topological vector spaces). ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring.inverse_non_unit +/- theorem ring.inverse_unit Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable_at_inverse - theorem has_fderiv_at_inverse + theorem has_fderiv_at_ring_inverse Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_at.prod - theorem times_cont_diff_at_inverse + theorem times_cont_diff_at_map_inverse + theorem times_cont_diff_at_ring_inverse Modified src/analysis/normed_space/operator_norm.lean - def continuous_linear_equiv.of_unit - def continuous_linear_equiv.to_unit - def continuous_linear_equiv.units_equiv - theorem continuous_linear_equiv.units_equiv_to_continuous_linear_map Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.comp_coe + def continuous_linear_equiv.of_unit + theorem continuous_linear_equiv.refl_symm + theorem continuous_linear_equiv.symm_trans_apply + def continuous_linear_equiv.to_unit + theorem continuous_linear_equiv.trans_apply + def continuous_linear_equiv.units_equiv + theorem continuous_linear_equiv.units_equiv_apply + theorem continuous_linear_map.inverse_equiv + theorem continuous_linear_map.inverse_non_equiv + theorem continuous_linear_map.ring_inverse_eq_map_inverse + theorem continuous_linear_map.ring_inverse_equiv + theorem continuous_linear_map.to_ring_inverse 2020-09-20 21:53:34 d774ef6 feat(topology/path_connected): add lemmas about paths and continuous families of paths (#4063) From the sphere eversion project (see https://github.com/leanprover-community/sphere-eversion/pull/12) ESTIMATED CHANGES Modified src/topology/path_connected.lean + theorem is_path_connected.exists_path_through_family' + theorem is_path_connected.exists_path_through_family + theorem path.continuous_uncurry_extend_of_continuous_family + theorem path.extend_extends' + theorem path.extend_extends + theorem path.extend_le_zero + theorem path.extend_one_le + theorem path.extend_range + theorem path.refl_extend + theorem path.refl_range + theorem path.refl_symm + theorem path.refl_trans_refl + theorem path.symm_cast + theorem path.symm_continuous_family + theorem path.symm_range + theorem path.trans_cast + theorem path.trans_continuous_family + theorem path.trans_range + def path.truncate + theorem path.truncate_const_continuous_family + theorem path.truncate_continuous_family + def path.truncate_of_le + theorem path.truncate_one_one + theorem path.truncate_range + theorem path.truncate_self + theorem path.truncate_zero_one + theorem path.truncate_zero_zero + theorem path_connected_space.exists_path_through_family' + theorem path_connected_space.exists_path_through_family + theorem proj_I_one + theorem proj_I_zero 2020-09-20 20:05:32 884e90b feat(measure_theory): Borel-Cantelli (#4166) ```lean lemma measure_limsup_eq_zero {s : ℕ → set α} (hs : ∀ i, is_measurable (s i)) (hs' : (∑' i, μ (s i)) ≠ ⊤) : μ (limsup at_top s) = 0 ``` There is a converse statement that is also called Borel-Cantelli, but we can't state it yet, because we don't know what independent events are. ESTIMATED CHANGES Modified docs/undergrad.yaml Modified src/data/real/nnreal.lean + theorem nnreal.sub_eq_iff_eq_add + theorem nnreal.sub_lt_iff_lt_add Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_eventually_not_mem + theorem measure_theory.measure_limsup_eq_zero Modified src/order/complete_lattice.lean + theorem infi_ge_eq_infi_nat_add + theorem supr_ge_eq_supr_nat_add Modified src/order/liminf_limsup.lean + theorem filter.liminf_eq_supr_infi_of_nat' + theorem filter.limsup_eq_infi_supr_of_nat' Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_zero_iff + theorem le_has_sum' + theorem le_has_sum + theorem le_tsum' + theorem le_tsum + theorem tsum_eq_zero_iff Modified src/topology/instances/ennreal.lean + theorem ennreal.summable_to_nnreal_of_tsum_ne_top + theorem ennreal.tendsto_sum_nat_add + theorem ennreal.to_nnreal_apply_of_tsum_ne_top + theorem nnreal.tendsto_sum_nat_add Modified src/topology/instances/nnreal.lean + theorem nnreal.sum_add_tsum_nat_add + theorem nnreal.summable_nat_add 2020-09-20 16:28:24 2c9b063 feat(algebra/big_operators): add prod boole lemma (#4192) A small lemma to simplify products of indicator functions ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_boole 2020-09-20 00:47:20 44667ba feat(ring_theory/power_series): power series lemmas (#4171) A couple of little lemmas for multiplication and coefficients ESTIMATED CHANGES Modified src/ring_theory/power_series.lean + theorem mv_power_series.coeff_C_mul + theorem mv_power_series.coeff_smul + theorem power_series.coeff_C_mul + theorem power_series.coeff_smul 2020-09-20 00:00:33 9232032 refactor(linear_algebra/tensor_algebra): build as a quotient of a free algebra (#4079) ESTIMATED CHANGES Modified src/linear_algebra/tensor_algebra.lean +/- theorem tensor_algebra.hom_ext - def tensor_algebra.lift_fun + theorem tensor_algebra.lift_ι_apply - def tensor_algebra.pre.has_add - def tensor_algebra.pre.has_coe_module - def tensor_algebra.pre.has_coe_semiring - def tensor_algebra.pre.has_mul - def tensor_algebra.pre.has_one - def tensor_algebra.pre.has_scalar - def tensor_algebra.pre.has_zero - inductive tensor_algebra.pre +/- inductive tensor_algebra.rel + theorem tensor_algebra.ring_quot_mk_alg_hom_free_algebra_ι_eq_ι +/- def tensor_algebra 2020-09-19 23:11:09 7013e5b feat(category_theory/internal): commutative monoid objects (#4186) This reprises a series of our recent PRs on monoid objects in monoidal categories, developing the same material for commutative monoid objects in braided categories. ESTIMATED CHANGES Modified src/category_theory/monad/equiv_mon.lean Added src/category_theory/monoidal/CommMon_.lean + theorem CommMon_.comp_hom + def CommMon_.equiv_lax_braided_functor_punit.CommMon_to_lax_braided + def CommMon_.equiv_lax_braided_functor_punit.counit_iso + def CommMon_.equiv_lax_braided_functor_punit.lax_braided_to_CommMon + def CommMon_.equiv_lax_braided_functor_punit.unit_iso + def CommMon_.equiv_lax_braided_functor_punit + def CommMon_.forget₂_Mon_ + theorem CommMon_.forget₂_Mon_map_hom + theorem CommMon_.forget₂_Mon_obj_mul + theorem CommMon_.forget₂_Mon_obj_one + theorem CommMon_.id_hom + def CommMon_.trivial + structure CommMon_ + def category_theory.lax_braided_functor.map_CommMon + def category_theory.lax_braided_functor.map_CommMon_functor Added src/category_theory/monoidal/Mod.lean + theorem Mod.assoc_flip + def Mod.comap + def Mod.comp + theorem Mod.comp_hom' + def Mod.forget + structure Mod.hom + def Mod.id + theorem Mod.id_hom' + def Mod.regular + structure Mod Renamed src/category_theory/monoidal/internal.lean to src/category_theory/monoidal/Mon_.lean - theorem Mod.assoc_flip - def Mod.comap - def Mod.comp - theorem Mod.comp_hom' - def Mod.forget - structure Mod.hom - def Mod.id - theorem Mod.id_hom' - def Mod.regular - structure Mod Modified src/category_theory/monoidal/braided.lean + theorem category_theory.braided_functor.comp_to_nat_trans + def category_theory.braided_functor.mk_iso + def category_theory.braided_functor.to_lax_braided_functor + def category_theory.discrete.braided_functor + def category_theory.lax_braided_functor.comp + theorem category_theory.lax_braided_functor.comp_to_nat_trans + def category_theory.lax_braided_functor.id + def category_theory.lax_braided_functor.mk_iso + structure category_theory.lax_braided_functor Modified src/category_theory/monoidal/discrete.lean Modified src/category_theory/monoidal/functor_category.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/category_theory/monoidal/internal/functor_category.lean + def category_theory.monoidal.CommMon_functor_category_equivalence.counit_iso + def category_theory.monoidal.CommMon_functor_category_equivalence.functor + def category_theory.monoidal.CommMon_functor_category_equivalence.inverse + def category_theory.monoidal.CommMon_functor_category_equivalence.unit_iso + def category_theory.monoidal.CommMon_functor_category_equivalence Modified src/category_theory/monoidal/internal/types.lean + def CommMon_Type_equivalence_CommMon.functor + def CommMon_Type_equivalence_CommMon.inverse + def CommMon_Type_equivalence_CommMon + def CommMon_Type_equivalence_CommMon_forget Modified src/category_theory/monoidal/types.lean + theorem category_theory.monoidal.braiding_hom_apply + theorem category_theory.monoidal.braiding_inv_apply 2020-09-19 20:26:57 5b143ff feat(data/set/basic): a few lemmas (#4184) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.image_union_image_compl_eq_range + theorem set.inter_union_compl 2020-09-19 19:45:22 640ba6c feat(geometry/euclidean): cospherical points (#4178) Define cospherical points in a Euclidean space (the general-dimension version of the two-dimensional concept of a set of points being concyclic) and prove some very basic lemmas about them. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + def euclidean_geometry.cospherical + theorem euclidean_geometry.cospherical_def + theorem euclidean_geometry.cospherical_empty + theorem euclidean_geometry.cospherical_insert_singleton + theorem euclidean_geometry.cospherical_singleton + theorem euclidean_geometry.cospherical_subset Modified src/geometry/euclidean/circumcenter.lean + theorem euclidean_geometry.circumcenter_eq_of_cospherical + theorem euclidean_geometry.circumcenter_eq_of_cospherical_subset + theorem euclidean_geometry.circumradius_eq_of_cospherical + theorem euclidean_geometry.circumradius_eq_of_cospherical_subset + theorem euclidean_geometry.cospherical_iff_exists_mem_of_complete + theorem euclidean_geometry.cospherical_iff_exists_mem_of_finite_dimensional + theorem euclidean_geometry.exists_circumcenter_eq_of_cospherical + theorem euclidean_geometry.exists_circumcenter_eq_of_cospherical_subset + theorem euclidean_geometry.exists_circumradius_eq_of_cospherical + theorem euclidean_geometry.exists_circumradius_eq_of_cospherical_subset 2020-09-19 19:03:21 02b492a feat(category_theory/Mon): Mon_ C has limits when C does (#4133) If `C` has limits, so does `Mon_ C`. (This could potentially replace many individual constructions for concrete categories, in particular `Mon`, `SemiRing`, `Ring`, and `Algebra R`.) ESTIMATED CHANGES Modified src/category_theory/functorial.lean + theorem category_theory.functorial.map_comp + theorem category_theory.functorial.map_id + theorem category_theory.map_as_map Modified src/category_theory/monoidal/functorial.lean Modified src/category_theory/monoidal/internal.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/category_theory/monoidal/internal/functor_category.lean Added src/category_theory/monoidal/internal/limits.lean + def Mon_.forget_map_cone_limit_cone_iso + def Mon_.limit + def Mon_.limit_cone + def Mon_.limit_cone_is_limit Modified src/category_theory/monoidal/limits.lean + theorem category_theory.limits.lim_lax_ε + theorem category_theory.limits.lim_lax_μ 2020-09-19 04:51:22 567954f feat(category_theory): `lim : (J ⥤ C) ⥤ C` is lax monoidal when `C` is monoidal (#4132) A step towards constructing limits in `Mon_ C` (and thence towards sheaves of modules as internal objects). ESTIMATED CHANGES Added src/category_theory/monoidal/limits.lean + def category_theory.limits.lim_lax + theorem category_theory.limits.lim_lax_map + theorem category_theory.limits.lim_lax_obj' + theorem category_theory.limits.lim_lax_obj + theorem category_theory.limits.limit_functorial_map 2020-09-19 03:33:07 04fe4b6 feat(algebra/ring_quot): quotients of noncommutative rings (#4078) ESTIMATED CHANGES Added src/algebra/ring_quot.lean + theorem ring_quot.eq_lift_alg_hom_comp_mk_alg_hom + theorem ring_quot.eq_lift_comp_mk_ring_hom + def ring_quot.ideal_quotient_to_ring_quot + theorem ring_quot.ideal_quotient_to_ring_quot_apply + def ring_quot.lift + def ring_quot.lift_alg_hom + theorem ring_quot.lift_alg_hom_mk_alg_hom_apply + theorem ring_quot.lift_alg_hom_unique + theorem ring_quot.lift_mk_ring_hom_apply + theorem ring_quot.lift_unique + def ring_quot.mk_alg_hom + theorem ring_quot.mk_alg_hom_coe + theorem ring_quot.mk_alg_hom_rel + theorem ring_quot.mk_alg_hom_surjective + def ring_quot.mk_ring_hom + theorem ring_quot.mk_ring_hom_rel + theorem ring_quot.mk_ring_hom_surjective + theorem ring_quot.rel.add_right + theorem ring_quot.rel.neg + theorem ring_quot.rel.smul + inductive ring_quot.rel + def ring_quot.ring_quot_equiv_ideal_quotient + theorem ring_quot.ring_quot_ext' + theorem ring_quot.ring_quot_ext + def ring_quot.ring_quot_to_ideal_quotient + theorem ring_quot.ring_quot_to_ideal_quotient_apply + def ring_quot Modified src/data/equiv/ring.lean + def ring_equiv.of_hom_inv + theorem ring_equiv.of_hom_inv_apply + theorem ring_equiv.of_hom_inv_symm_apply Modified src/linear_algebra/basic.lean + theorem submodule.mem_Inf Modified src/ring_theory/ideal/basic.lean + def ideal.of_rel 2020-09-18 21:57:43 bf7a2ed fix(conditionally_complete_lattice): add instance (#4183) there was no instance from `conditionally_complete_linear_order_bot` to `conditionally_complete_linear_order`. It is added by this change. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean 2020-09-18 21:57:41 c2ae6c0 doc(simps): explain short_name (#4182) ESTIMATED CHANGES Modified src/tactic/simps.lean 2020-09-18 21:57:39 0269a76 feat(integration): integral commutes with continuous linear maps (#4167) from the sphere eversion project. Main result: ```lean continuous_linear_map.integral_apply_comm {α : Type*} [measurable_space α] {μ : measure α} {E : Type*} [normed_group E] [second_countable_topology E] [normed_space ℝ E] [complete_space E] [measurable_space E] [borel_space E] {F : Type*} [normed_group F] [second_countable_topology F] [normed_space ℝ F] [complete_space F] [measurable_space F] [borel_space F] {φ : α → E} (L : E →L[ℝ] F) (φ_meas : measurable φ) (φ_int : integrable φ μ) : ∫ a, L (φ a) ∂μ = L (∫ a, φ a ∂μ) ``` ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean - theorem continuous_linear_map.measurable + theorem continuous_linear_map.measurable_comp - theorem measurable.clm_apply Modified src/measure_theory/set_integral.lean + def continuous_linear_map.comp_l1 + def continuous_linear_map.comp_l1L + theorem continuous_linear_map.comp_l1_apply + def continuous_linear_map.comp_l1ₗ + theorem continuous_linear_map.continuous_integral_comp_l1 + theorem continuous_linear_map.integrable_comp + theorem continuous_linear_map.integrable_comp_l1 + theorem continuous_linear_map.integral_comp_comm + theorem continuous_linear_map.integral_comp_l1 + theorem continuous_linear_map.integral_comp_l1_comm + theorem continuous_linear_map.measurable_comp_l1 + theorem continuous_linear_map.norm_comp_l1_apply_le + theorem continuous_linear_map.norm_comp_l1_le + theorem continuous_linear_map.norm_compl1L_le +/- theorem measure_theory.integrable.induction 2020-09-18 20:21:39 4e3729b feat(geometry/euclidean/basic): intersections of circles (#4088) Add two versions of the statement that two circles in two-dimensional space intersect in at most two points, along with some lemmas involved in the proof (some of which can be interpreted in terms of intersections of circles or spheres and lines). ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.dist_smul_vadd_eq_dist + theorem euclidean_geometry.dist_smul_vadd_square + theorem euclidean_geometry.eq_of_dist_eq_of_dist_eq_of_findim_eq_two + theorem euclidean_geometry.eq_of_dist_eq_of_dist_eq_of_mem_of_findim_eq_two + theorem euclidean_geometry.inner_vsub_vsub_of_dist_eq_of_dist_eq 2020-09-18 17:25:27 9051aa7 feat(polynomial): prepare for transcendence of e by adding small lemmas (#4175) This will be a series of pull request to prepare for the proof of transcendence of e by adding lots of small lemmas. ESTIMATED CHANGES Modified src/data/polynomial/basic.lean Modified src/data/polynomial/coeff.lean + theorem polynomial.not_mem_support_iff_coeff_zero Modified src/data/polynomial/degree.lean + theorem polynomial.eq_C_of_nat_degree_eq_zero Modified src/data/polynomial/derivative.lean + theorem polynomial.nat_degree_eq_zero_of_derivative_eq_zero 2020-09-18 11:37:08 ae72826 feat(data/mv_polynomial): define comap (#4161) More from the Witt vector branch. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/algebra/category/CommRing/adjunctions.lean Added src/data/mv_polynomial/comap.lean + theorem mv_polynomial.comap_apply + theorem mv_polynomial.comap_comp + theorem mv_polynomial.comap_comp_apply + theorem mv_polynomial.comap_eq_id_of_eq_id + theorem mv_polynomial.comap_equiv_coe + theorem mv_polynomial.comap_equiv_symm_coe + theorem mv_polynomial.comap_id + theorem mv_polynomial.comap_id_apply + theorem mv_polynomial.comap_rename Modified src/data/mv_polynomial/rename.lean +/- def mv_polynomial.rename 2020-09-18 09:43:35 953a5dc feat(category_theory/monoidal): monoid objects are just lax monoidal functors from punit (#4121) ESTIMATED CHANGES Modified src/category_theory/monoidal/internal.lean + def Mon_.equiv_lax_monoidal_functor_punit.Mon_to_lax_monoidal + def Mon_.equiv_lax_monoidal_functor_punit.counit_iso + def Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon + def Mon_.equiv_lax_monoidal_functor_punit.unit_iso + def Mon_.equiv_lax_monoidal_functor_punit Modified src/category_theory/monoidal/natural_transformation.lean + theorem category_theory.monoidal_nat_iso.of_components.hom_app + theorem category_theory.monoidal_nat_iso.of_components.inv_app + def category_theory.monoidal_nat_iso.of_components + theorem category_theory.monoidal_nat_trans.comp_to_nat_trans'' + theorem category_theory.monoidal_nat_trans.comp_to_nat_trans' Modified src/category_theory/natural_isomorphism.lean 2020-09-18 08:44:32 c158ce8 feat(analysis/calculus): converse mean value inequality (#4173) Also restate mean value inequality in terms of `lipschitz_on_with`. From the sphere eversion project. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem fderiv_at.le_of_lip + theorem has_fderiv_at.le_of_lip Modified src/analysis/calculus/mean_value.lean + theorem convex.lipschitz_on_with_of_norm_deriv_le + theorem convex.lipschitz_on_with_of_norm_deriv_within_le + theorem convex.lipschitz_on_with_of_norm_fderiv_le + theorem convex.lipschitz_on_with_of_norm_fderiv_within_le + theorem convex.lipschitz_on_with_of_norm_has_deriv_within_le + theorem convex.lipschitz_on_with_of_norm_has_fderiv_within_le Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_on_with_empty 2020-09-18 08:44:30 f68c936 feat(analysis/normed_space/real_inner_product): orthogonal subspace lemmas (#4152) Add a few more lemmas about `submodule.orthogonal`. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem submodule.findim_add_inf_findim_orthogonal + theorem submodule.orthogonal_le + theorem submodule.sup_orthogonal_inf_of_is_complete 2020-09-18 08:44:28 b00b01f feat(linear_algebra/affine_space): more lemmas (#4127) Add another batch of lemmas relating to affine spaces. These include factoring out `vector_span_mono` as a combination of two other lemmas that's used several times, and additional variants of lemmas relating to finite-dimensional subspaces. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean + theorem affine_subspace.eq_iff_direction_eq_of_mem + theorem affine_subspace.eq_of_direction_eq_of_nonempty_of_le + theorem vector_span_mono Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_span_eq_of_le_of_affine_independent_of_card_eq_findim_add_one + theorem affine_span_image_finset_eq_of_le_of_affine_independent_of_card_eq_findim_add_one + theorem findim_vector_span_image_finset_of_affine_independent + theorem vector_span_eq_of_le_of_affine_independent_of_card_eq_findim_add_one + theorem vector_span_image_finset_eq_of_le_of_affine_independent_of_card_eq_findim_add_one 2020-09-18 07:44:06 43ff7dc feat(topology/algebra/ordered): generalize two lemmas (#4177) they hold for conditionally complete linear orders, not just for complete linear orders ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean 2020-09-18 05:39:35 58883e3 feat(topology/ωCPO): define Scott topology in connection with ω-complete partial orders (#4037) ESTIMATED CHANGES Modified src/control/lawful_fix.lean Modified src/order/basic.lean + def as_linear_order Modified src/order/bounded_lattice.lean + theorem le_iff_imp Modified src/order/complete_lattice.lean + theorem Inf_le_Inf_of_forall_exists_le + theorem Sup_le_Sup_of_forall_exists_le Modified src/order/lattice.lean + theorem inf_le_iff + theorem le_sup_iff Modified src/order/omega_complete_partial_order.lean + theorem complete_lattice.Sup_continuous' + theorem complete_lattice.Sup_continuous + theorem complete_lattice.bot_continuous + theorem complete_lattice.inf_continuous + theorem complete_lattice.sup_continuous + theorem complete_lattice.top_continuous + theorem omega_complete_partial_order.continuous_hom.monotone Modified src/order/preorder_hom.lean + theorem preorder_hom.monotone Modified src/tactic/monotonicity/basic.lean Added src/topology/omega_complete_partial_order.lean + def Scott.is_open + theorem Scott.is_open_inter + theorem Scott.is_open_sUnion + theorem Scott.is_open_univ + def Scott.is_ωSup + def Scott + theorem Scott_continuous_of_continuous + theorem continuous_of_Scott_continuous + theorem is_ωSup_ωSup + def not_below + theorem not_below_is_open 2020-09-18 00:57:16 52d4b92 chore(scripts): update nolints.txt (#4176) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-17 15:33:38 5a2e7d7 refactor(field-theory/subfield): bundled subfields (#4159) Define bundled subfields. The contents of the new `subfield` file are basically a copy of `subring.lean` with the replacement `subring` -> `subfield`, and the proofs repaired as necessary. As with the other bundled subobject refactors, other files depending on unbundled subfields now import `deprecated.subfield`. ESTIMATED CHANGES Added src/deprecated/subfield.lean + def field.closure + theorem field.closure_mono + theorem field.closure_subset + theorem field.closure_subset_iff + theorem field.mem_closure + theorem field.ring_closure_subset + theorem field.subset_closure + theorem is_subfield_Union_of_directed Modified src/field_theory/adjoin.lean Modified src/field_theory/fixed.lean Modified src/field_theory/subfield.lean - def field.closure - theorem field.closure_mono - theorem field.closure_subset - theorem field.closure_subset_iff - theorem field.mem_closure - theorem field.ring_closure_subset - theorem field.subset_closure - theorem is_subfield_Union_of_directed + def ring_equiv.subfield_congr + def ring_hom.cod_restrict_field + theorem ring_hom.coe_field_range + theorem ring_hom.coe_range_restrict_field + def ring_hom.eq_locus_field + theorem ring_hom.eq_of_eq_on_of_field_closure_eq_top + theorem ring_hom.eq_of_eq_on_subfield_top + theorem ring_hom.eq_on_field_closure + theorem ring_hom.field_closure_preimage_le + def ring_hom.field_range + theorem ring_hom.map_field_closure + theorem ring_hom.map_field_range + theorem ring_hom.mem_field_range + def ring_hom.range_restrict_field + def ring_hom.restrict_field + theorem ring_hom.restrict_field_apply + theorem subfield.Inf_to_subring + theorem subfield.add_mem + def subfield.closure + theorem subfield.closure_Union + theorem subfield.closure_empty + theorem subfield.closure_eq + theorem subfield.closure_eq_of_le + theorem subfield.closure_induction + theorem subfield.closure_le + theorem subfield.closure_mono + theorem subfield.closure_preimage_le + theorem subfield.closure_sUnion + theorem subfield.closure_union + theorem subfield.closure_univ + theorem subfield.coe_Inf + theorem subfield.coe_Sup_of_directed_on + theorem subfield.coe_add + theorem subfield.coe_coe + theorem subfield.coe_comap + theorem subfield.coe_inf + theorem subfield.coe_int_mem + theorem subfield.coe_inv + theorem subfield.coe_map + theorem subfield.coe_mul + theorem subfield.coe_neg + theorem subfield.coe_one + theorem subfield.coe_ssubset_coe + theorem subfield.coe_subset_coe + theorem subfield.coe_subtype + theorem subfield.coe_supr_of_directed + theorem subfield.coe_to_add_subgroup + theorem subfield.coe_to_submonoid + theorem subfield.coe_to_subring + theorem subfield.coe_top + theorem subfield.coe_zero + def subfield.comap + theorem subfield.comap_comap + theorem subfield.comap_inf + theorem subfield.comap_infi + theorem subfield.comap_top + theorem subfield.div_mem + theorem subfield.ext' + theorem subfield.ext + theorem subfield.field_range_subtype + theorem subfield.gc_map_comap + theorem subfield.gsmul_mem + def subfield.inclusion + theorem subfield.inv_mem + theorem subfield.is_glb_Inf + theorem subfield.le_def + theorem subfield.list_prod_mem + theorem subfield.list_sum_mem + def subfield.map + theorem subfield.map_bot + theorem subfield.map_le_iff_le_comap + theorem subfield.map_map + theorem subfield.map_sup + theorem subfield.map_supr + theorem subfield.mem_Inf + theorem subfield.mem_Sup_of_directed_on + theorem subfield.mem_closure + theorem subfield.mem_closure_iff + theorem subfield.mem_coe + theorem subfield.mem_comap + theorem subfield.mem_inf + theorem subfield.mem_map + theorem subfield.mem_mk + theorem subfield.mem_supr_of_directed + theorem subfield.mem_to_add_subgroup + theorem subfield.mem_to_submonoid + theorem subfield.mem_to_subring + theorem subfield.mem_top + theorem subfield.mul_mem + theorem subfield.multiset_prod_mem + theorem subfield.multiset_sum_mem + theorem subfield.neg_mem + theorem subfield.one_mem + theorem subfield.pow_mem + theorem subfield.prod_mem + theorem subfield.subring_closure_le + theorem subfield.subset_closure + def subfield.subtype + theorem subfield.sum_mem + def subfield.to_add_subgroup + def subfield.to_submonoid + theorem subfield.zero_mem + structure subfield + def subring.to_subfield Modified src/ring_theory/subring.lean + theorem subring.coe_eq_zero_iff 2020-09-17 15:33:35 34ebade feat(algebra/free_algebra): free (noncommutative) algebras (#4077) Previously, @adamtopaz constructed the tensor algebra of an `R`-module via a direct construction of a quotient of a free algebra. This uses essentially the same construction to build a free algebra (on a type) directly. In a PR coming shortly, I'll refactor his development of the tensor algebra to use this construction. ESTIMATED CHANGES Added src/algebra/free_algebra.lean + def free_algebra.equiv_monoid_algebra_free_monoid + theorem free_algebra.hom_ext + def free_algebra.lift + theorem free_algebra.lift_comp_ι + def free_algebra.lift_fun + theorem free_algebra.lift_unique + theorem free_algebra.lift_ι_apply + def free_algebra.pre.has_add + def free_algebra.pre.has_coe_generator + def free_algebra.pre.has_coe_semiring + def free_algebra.pre.has_mul + def free_algebra.pre.has_one + def free_algebra.pre.has_scalar + def free_algebra.pre.has_zero + inductive free_algebra.pre + theorem free_algebra.quot_mk_eq_ι + inductive free_algebra.rel + def free_algebra.ι + theorem free_algebra.ι_comp_lift + def free_algebra Modified src/data/monoid_algebra.lean Modified src/linear_algebra/tensor_algebra.lean 2020-09-17 14:29:36 b62dd28 feat(linear_algebra/eigenspace): beginning to relate minimal polynomials to eigenvalues (#4165) rephrases some lemmas in `linear_algebra` to use `aeval` instead of `eval2` and `algebra_map` shows that an eigenvalue of a linear transformation is a root of its minimal polynomial, and vice versa ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean + theorem polynomial.aeval_endomorphism Modified src/linear_algebra/eigenspace.lean + theorem module.End.aeval_apply_of_has_eigenvector + theorem module.End.eigenspace_aeval_polynomial_degree_1 - theorem module.End.eigenspace_eval₂_polynomial_degree_1 + theorem module.End.has_eigenvalue_iff_is_root + theorem module.End.has_eigenvalue_of_is_root + theorem module.End.is_root_of_has_eigenvalue + theorem module.End.ker_aeval_ring_hom'_unit_polynomial - theorem module.End.ker_eval₂_ring_hom'_unit_polynomial Modified src/linear_algebra/matrix.lean + theorem linear_map.findim_linear_map Modified src/ring_theory/polynomial/basic.lean 2020-09-17 05:26:28 265c587 doc(meta/converter/interactive): Add tactic documentation for a subset of `conv` tactics (#4144) ESTIMATED CHANGES Modified src/tactic/lean_core_docs.lean 2020-09-16 18:50:15 7db9e13 feat(data/monoid_algebra): ext lemma (#4162) A small lemma that was useful in the Witt vector project. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/data/monoid_algebra.lean + theorem add_monoid_algebra.alg_hom_ext + theorem add_monoid_algebra.alg_hom_ext_iff 2020-09-16 15:49:12 9f9a8c0 feat(readme): add @hrmacbeth to maintainers list (#4168) ESTIMATED CHANGES Modified README.md 2020-09-16 11:42:42 623c846 feat(data/mv_polynomial/variables): add facts about vars and mul (#4149) More from the Witt vectors branch. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/data/mv_polynomial/variables.lean + theorem mv_polynomial.vars_C_mul + theorem mv_polynomial.vars_mul + theorem mv_polynomial.vars_one + theorem mv_polynomial.vars_pow + theorem mv_polynomial.vars_prod 2020-09-16 09:39:46 6603c6d fix(simps): use coercion for algebra morphisms (#4155) Previously it tried to apply whnf on an open expression, which failed, so it wouldn't find the coercion. Now it applied whnf before opening the expression. Also use `simps` for `fixed_points.to_alg_hom`. The generated lemmas are ```lean fixed_points.to_alg_hom_to_fun : ∀ (G : Type u) (F : Type v) [_inst_4 : group G] [_inst_5 : field F] [_inst_6 : faithful_mul_semiring_action G F], ⇑(to_alg_hom G F) = λ (g : G), {to_fun := (mul_semiring_action.to_semiring_hom G F g).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _, commutes' := _} ``` ESTIMATED CHANGES Modified src/field_theory/fixed.lean - theorem fixed_points.coe_to_alg_hom Modified src/tactic/simps.lean Modified test/simps.lean + structure alg_hom + def my_alg_hom + def my_ring_hom + structure ring_hom 2020-09-16 08:03:28 9a11efb feat(metric_space): add lipschitz_on_with (#4151) The order of the explicit arguments in this definition is open for negotiation. From the sphere eversion project. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem lipschitz_on_with.norm_sub_le + theorem lipschitz_on_with_iff_norm_sub_le Modified src/topology/metric_space/emetric_space.lean + theorem emetric.uniform_continuous_on_iff Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_on_univ + theorem lipschitz_on_with.mono + def lipschitz_on_with + theorem lipschitz_on_with_iff_dist_le_mul + theorem lipschitz_on_with_iff_restrict Modified src/topology/uniform_space/basic.lean + theorem filter.has_basis.uniform_continuous_on_iff + theorem uniform_continuous_on.continuous_on +/- theorem uniform_continuous_on_iff_restrict 2020-09-16 08:03:26 4c9d3a5 feat(operator_norm): smul_right lemmas (#4150) from the sphere eversion project We need a version of `continuous_linear_map.smul_right` that is itself a continuous linear map from a normed space to a space of continuous linear maps. breaking changes: * rename `smul_right_norm` to `norm_smul_right_apply` * in `homothety_norm` remove useless sign assumption and switch from assuming positive dimension to `nontrivial` ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + def continuous_linear_map.apply + def continuous_linear_map.applyₗ + theorem continuous_linear_map.continuous_applyₗ +/- theorem continuous_linear_map.homothety_norm + theorem continuous_linear_map.norm_smul_rightL + theorem continuous_linear_map.norm_smul_rightL_apply + theorem continuous_linear_map.norm_smul_right_apply + def continuous_linear_map.smul_rightL - theorem continuous_linear_map.smul_right_norm Modified src/linear_algebra/basic.lean + theorem submodule.nontrivial_span_singleton Modified src/topology/algebra/module.lean + def continuous_linear_map.smul_rightₗ 2020-09-16 06:06:09 f585ce5 feat(category_theory): monoidal natural transformations and discrete monoidal categories (#4112) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.congr_arg + theorem monoid_hom.congr_fun Modified src/algebra/group_with_zero.lean +/- theorem monoid_hom.map_div Modified src/algebra/ring/basic.lean + theorem ring_hom.congr_arg + theorem ring_hom.congr_fun Modified src/category_theory/discrete_category.lean + theorem category_theory.discrete.eq_of_hom Modified src/category_theory/limits/lattice.lean Added src/category_theory/monoidal/discrete.lean + def category_theory.discrete.monoidal_functor + def category_theory.discrete.monoidal_functor_comp Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/internal.lean + def category_theory.lax_monoidal_functor.map_Mon_functor Added src/category_theory/monoidal/natural_transformation.lean + def category_theory.monoidal_nat_trans.hcomp + def category_theory.monoidal_nat_trans.id + def category_theory.monoidal_nat_trans.vcomp + structure category_theory.monoidal_nat_trans Modified src/topology/instances/real_vector_space.lean 2020-09-15 20:10:38 4c896c5 chore(undergrad.yaml): updates (#4160) Added a bunch of things to `undergrad.yaml`: generalized eigenspaces, conjugacy classes in a group, the orthogonal complement, continuity of monotone functions and their inverses, inverse hyperbolic trig functions, radius of convergence. Also changed (hopefully improved) some translations. ESTIMATED CHANGES Modified docs/undergrad.yaml 2020-09-15 12:59:56 d3a1719 feat(category_theory/is_connected): make `is_connected` a Prop (#4136) Also renames `connected` to `is_connected`, and relies on `classical.arbitrary` slightly less. ESTIMATED CHANGES Renamed src/category_theory/connected.lean to src/category_theory/is_connected.lean +/- theorem category_theory.any_functor_const_on_obj - def category_theory.connected.of_any_functor_const_on_obj - def category_theory.connected.of_constant_of_preserves_morphisms - def category_theory.connected.of_induct - def category_theory.connected_of_zigzag - theorem category_theory.connected_zigzag +/- theorem category_theory.constant_of_preserves_morphisms - def category_theory.discrete_connected_equiv_punit + def category_theory.discrete_is_connected_equiv_punit +/- theorem category_theory.equiv_relation +/- theorem category_theory.exists_zigzag' +/- theorem category_theory.induct_on_objects + theorem category_theory.is_connected.of_any_functor_const_on_obj + theorem category_theory.is_connected.of_constant_of_preserves_morphisms + theorem category_theory.is_connected.of_induct + theorem category_theory.is_connected_of_zigzag + theorem category_theory.is_connected_zigzag + def category_theory.iso_constant - theorem category_theory.nat_trans_from_connected + theorem category_theory.nat_trans_from_is_connected - def category_theory.zigzag_connected + theorem category_theory.zigzag_is_connected Modified src/category_theory/limits/connected.lean +/- def category_theory.prod_preserves_connected_limits Modified src/category_theory/limits/shapes/constructions/over/connected.lean +/- def category_theory.over.creates_connected.raise_cone +/- def category_theory.over.creates_connected.raised_cone_is_limit +/- theorem category_theory.over.creates_connected.raised_cone_lowers_to_original 2020-09-15 11:43:08 427d414 feat(data/enat): some API and a module docstring (#4103) ESTIMATED CHANGES Modified src/data/nat/enat.lean + theorem enat.to_with_top_add 2020-09-15 01:03:57 7c321f8 chore(scripts): update nolints.txt (#4157) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-14 23:27:33 b83362e fix(order/ocpo): remove trace option (#4154) (it did not produce any output) ESTIMATED CHANGES Modified src/order/omega_complete_partial_order.lean 2020-09-14 23:27:32 a0adcc0 chore(category_theory/zero): lemmas for has_zero_morphisms.comp_zero|zero_comp (#4142) The axioms of `has_zero_morphisms` never had lemmas written for them, so everyone has been using the typeclass fields directly. ESTIMATED CHANGES Modified src/algebra/homology/exact.lean Modified src/algebra/homology/homology.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.comp_zero + theorem category_theory.limits.zero_comp Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/preadditive/default.lean Modified src/category_theory/preadditive/schur.lean 2020-09-14 23:27:30 3d73bd8 feat(topology/algebra/ordered): monotone continuous function is homeomorphism, relative version (#4043) A function `f : α → β` restricts to a homeomorphism `(Ioo a b) → β`, if it (1) is order-preserving within the interval; (2) is `continuous_on` the interval; (3) tends to positive infinity at the right endpoint; and (4) tends to negative infinity at the left endpoint. The orders `α`, `β` are required to be conditionally complete, and the order on `α` must also be dense. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.nonempty_Icc_subtype + theorem set.nonempty_Ico_subtype + theorem set.nonempty_Ioc_subtype + theorem set.nonempty_Ioo_subtype Modified src/topology/algebra/ordered.lean + theorem Ioo_at_bot_eq_nhds_within + theorem Ioo_at_top_eq_nhds_within + theorem coe_homeomorph_of_strict_mono_continuous_Ioo 2020-09-14 21:25:17 ff2639d feat(tactic/pretty_cases): provide a skeleton for a proof by induction / cases (#4093) ESTIMATED CHANGES Modified src/tactic/basic.lean Modified src/tactic/interactive.lean Added src/tactic/pretty_cases.lean Added test/pretty_cases.lean 2020-09-14 19:35:47 218ef40 feat(measure_theory): image of Lebesgue measure under shift/rescale (#3760) ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.bInter_bind + theorem finset.bInter_option_to_finset + theorem finset.bUnion_bind + theorem finset.bUnion_option_to_finset + theorem finset.infi_bind + theorem finset.infi_option_to_finset + theorem finset.supr_bind + theorem finset.supr_option_to_finset Modified src/data/indicator_function.lean + theorem set.indicator_Union_apply Modified src/data/set/basic.lean + theorem set_coe.forall' Modified src/data/set/disjointed.lean +/- theorem set.Union_disjointed_of_mono + theorem set.subset_Union_disjointed Modified src/measure_theory/borel_space.lean + theorem real.measure_ext_Ioo_rat Modified src/measure_theory/integration.lean + theorem measure_theory.set_lintegral_congr + theorem measure_theory.set_lintegral_map + theorem measure_theory.set_lintegral_one Modified src/measure_theory/interval_integral.lean + theorem interval_integral.integral_comp_add_right + theorem interval_integral.integral_comp_mul_right + theorem interval_integral.integral_comp_neg + theorem interval_integral.integral_smul_measure Modified src/measure_theory/lebesgue_measure.lean + theorem real.map_volume_add_left + theorem real.map_volume_add_right + theorem real.map_volume_mul_left + theorem real.map_volume_mul_right + theorem real.map_volume_neg + theorem real.smul_map_volume_mul_left + theorem real.smul_map_volume_mul_right +/- theorem real.volume_Icc +/- theorem real.volume_Ico +/- theorem real.volume_Ioc +/- theorem real.volume_Ioo +/- theorem real.volume_interval +/- theorem real.volume_singleton +/- theorem real.volume_val Modified src/measure_theory/measurable_space.lean +/- theorem is_measurable.Union + theorem is_measurable.bUnion_decode2 +/- theorem is_measurable.const +/- theorem is_measurable.diff +/- theorem is_measurable.disjointed +/- theorem is_measurable.inter +/- theorem is_measurable.union Modified src/measure_theory/measure_space.lean + theorem measure_theory.Ico_ae_eq_Icc + theorem measure_theory.Ico_ae_eq_Ioc + theorem measure_theory.Iio_ae_eq_Iic + theorem measure_theory.Ioc_ae_eq_Icc + theorem measure_theory.Ioi_ae_eq_Ici + theorem measure_theory.Ioo_ae_eq_Icc + theorem measure_theory.Ioo_ae_eq_Ico + theorem measure_theory.Ioo_ae_eq_Ioc + theorem measure_theory.ae_eq_empty + theorem measure_theory.ae_le_set + theorem measure_theory.diff_ae_eq_self + theorem measure_theory.insert_ae_eq_self + theorem measure_theory.measure.ext_iff_of_Union_eq_univ + theorem measure_theory.measure.ext_iff_of_bUnion_eq_univ + theorem measure_theory.measure.ext_iff_of_sUnion_eq_univ + theorem measure_theory.measure.ext_of_generate_from_of_cover + theorem measure_theory.measure.ext_of_generate_from_of_cover_subset + theorem measure_theory.measure.restrict_Union_apply_eq_supr + theorem measure_theory.measure.restrict_Union_congr + theorem measure_theory.measure.restrict_bUnion_congr + theorem measure_theory.measure.restrict_congr_meas + theorem measure_theory.measure.restrict_congr_mono + theorem measure_theory.measure.restrict_finset_bUnion_congr + theorem measure_theory.measure.restrict_map + theorem measure_theory.measure.restrict_restrict + theorem measure_theory.measure.restrict_sUnion_congr + theorem measure_theory.measure.restrict_union_add_inter + theorem measure_theory.measure.restrict_union_congr + theorem measure_theory.measure_Inter_eq_infi - theorem measure_theory.measure_Inter_eq_infi_nat + theorem measure_theory.measure_Union_eq_supr - theorem measure_theory.measure_Union_eq_supr_nat + theorem measure_theory.measure_bUnion_eq_supr + theorem measure_theory.measure_countable +/- theorem measure_theory.measure_diff +/- theorem measure_theory.measure_eq_inter_diff + theorem measure_theory.measure_finite + theorem measure_theory.measure_finset + theorem measure_theory.measure_mono_top + theorem measure_theory.measure_union_add_inter - theorem measure_theory.restrict_congr + theorem measure_theory.restrict_congr_set + theorem measure_theory.union_ae_eq_right Modified src/measure_theory/set_integral.lean + theorem measure_theory.set_integral_map Modified src/order/filter/basic.lean + theorem filter.eventually_eq.compl + theorem filter.eventually_eq.diff + theorem filter.eventually_eq.inter + theorem filter.eventually_eq.union + theorem filter.eventually_eq_empty + theorem filter.eventually_le_antisymm_iff 2020-09-14 16:35:45 a18be37 feat(ring_theory/ideal/over): Going up theorem for integral extensions (#4064) The main statement is `exists_ideal_over_prime_of_is_integral` which shows that for an integral extension, every prime ideal of the original ring lies under some prime ideal of the extension ring. `is_field_of_is_integral_of_is_field` is a brute force proof that if `R → S` is an integral extension, and `S` is a field, then `R` is also a field (using the somewhat new `is_field` proposition). `is_maximal_comap_of_is_integral_of_is_maximal` Gives essentially the same statement in terms of maximal ideals. `disjoint_compl` has also been replaced with `disjoint_compl_left` and `disjoint_compl_right` variants. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_eq_sum_range Modified src/data/set/lattice.lean - theorem set.disjoint_compl + theorem set.disjoint_compl_left + theorem set.disjoint_compl_right Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/matrix.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/set_integral.lean Modified src/ring_theory/ideal/operations.lean + theorem ideal.algebra_map_quotient_injective + def ideal.quotient_map Modified src/ring_theory/ideal/over.lean + theorem ideal.exists_ideal_over_prime_of_is_integral' + theorem ideal.exists_ideal_over_prime_of_is_integral + theorem ideal.is_maximal_comap_of_is_integral_of_is_maximal Modified src/ring_theory/integral_closure.lean + theorem is_field_of_is_integral_of_is_field + theorem is_integral_quotient_of_is_integral Modified src/ring_theory/localization.lean + theorem algebra_map_mk' + theorem localization.at_prime.comap_maximal_ideal + theorem localization.at_prime.map_eq_maximal_ideal + theorem localization_algebra_injective 2020-09-14 15:36:04 6babb55 fix(normed_space): fixed a typo from #4099 (#4147) This lemma was less general that it should be because migrating it to its mathlib place messed up the typeclass assumptions. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem norm_smul_of_nonneg 2020-09-14 15:36:02 8877606 chore(ci): teach bors and GitHub about new labels (#4146) ESTIMATED CHANGES Modified .github/workflows/add_label_from_comment.yml Modified .github/workflows/add_label_from_review.yml Modified bors.toml 2020-09-14 15:35:59 49fc7ed feat(measure_theory): assorted integration lemmas (#4145) from the sphere eversion project This is still preparations for differentiation of integals depending on a parameter. ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.continuous_integral + theorem measure_theory.l1.continuous_integral + theorem measure_theory.l1.integral_eq_integral + theorem measure_theory.l1.integral_of_fun_eq_integral + theorem measure_theory.l1.norm_eq_integral_norm + theorem measure_theory.l1.norm_of_fun_eq_integral_norm Modified src/measure_theory/borel_space.lean + theorem continuous_linear_map.measurable + theorem measurable.clm_apply + theorem measurable.const_mul + theorem measurable.mul_const Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable.const_mul + theorem measure_theory.integrable.mul_const + theorem measure_theory.l1.integrable_norm + theorem measure_theory.l1.measurable_norm Modified src/measure_theory/set_integral.lean + theorem measure_theory.integral_indicator_const 2020-09-14 15:35:57 5f45c0c feat(linear_algebra/finite_dimensional): finite-dimensional submodule lemmas / instances (#4128) Add the lemma that a submodule contained in a finite-dimensional submodule is finite-dimensional, and instances that allow type class inference to show some infs and sups involving finite-dimensional submodules are finite-dimensional. These are all useful when working with finite-dimensional submodules in a space that may not be finite-dimensional itself. Given the new instances, `dim_sup_add_dim_inf_eq` gets its type class requirements relaxed to require only the submodules to be finite-dimensional rather than the whole space. `linear_independent_iff_card_eq_findim_span` is added as a variant of `linear_independent_of_span_eq_top_of_card_eq_findim` for vectors not necessarily spanning the whole space (implemented as an `iff` lemma using `findim_span_eq_card` for the other direction). ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem linear_independent_iff_card_eq_findim_span +/- theorem submodule.dim_sup_add_dim_inf_eq + theorem submodule.finite_dimensional_of_le 2020-09-14 14:48:27 d5c58eb chore(category_theory/*): make all forgetful functors use explicit arguments (#4139) As suggested as https://github.com/leanprover-community/mathlib/pull/4131#discussion_r487527599, for the sake of more uniform API. ESTIMATED CHANGES Modified src/algebra/homology/chain_complex.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/category_theory/grothendieck.lean Modified src/category_theory/limits/over.lean +/- def category_theory.functor.to_cocone +/- def category_theory.functor.to_cone +/- def category_theory.over.colimit +/- def category_theory.over.forget_colimit_is_colimit +/- def category_theory.under.forget_limit_is_limit +/- def category_theory.under.limit Modified src/category_theory/limits/shapes/constructions/over/connected.lean +/- def category_theory.over.creates_connected.raise_cone +/- def category_theory.over.creates_connected.raised_cone_is_limit Modified src/category_theory/monad/bundled.lean Modified src/category_theory/monoidal/internal.lean + def Mod.forget Modified src/category_theory/over.lean +/- theorem category_theory.over.forget_map +/- theorem category_theory.over.forget_obj +/- theorem category_theory.under.forget_map +/- theorem category_theory.under.forget_obj 2020-09-14 12:41:02 a998fd1 feat(algebra/category/Module): the monoidal category of R-modules is symmetric (#4140) ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean + def Module.braiding + theorem Module.braiding_naturality + theorem Module.hexagon_forward + theorem Module.hexagon_reverse + theorem Module.monoidal_category.braiding_hom_apply + theorem Module.monoidal_category.braiding_inv_apply 2020-09-14 12:41:00 e35e287 refactor(data/nat/*): cleanup data.nat.basic, split data.nat.choose (#4135) This PR rearranges `data.nat.basic` so the lemmas are now in (hopefully appropriately-named) markdown sections. It also moves several sections (mostly ones that introduced new `def`s) into new files: - `data.nat.fact` - `data.nat.psub` (maybe this could be named `data.nat.partial`?) - `data.nat.log` - `data.nat.with_bot` `data.nat.choose` has been split into a directory: - The definition of `nat.choose` and basic lemmas about it have been moved from `data.nat.basic` into `data.nat.choose.basic` - The binomial theorem and related lemmas involving sums are now in `data.nat.choose.sum`; the following lemmas are now in the `nat` namespace: - `sum_range_choose` - `sum_range_choose_halfway` - `choose_middle_le_pow` - Divisibility properties of binomial coefficients are now in `data.nat.choose.dvd`. Other changes: - added `nat.pow_two_sub_pow_two` to `data.nat.basic`. - module docs & doc strings for `data.nat.sqrt` ESTIMATED CHANGES Modified src/computability/partrec.lean Modified src/data/complex/exponential.lean Modified src/data/list/basic.lean Modified src/data/list/perm.lean Modified src/data/nat/basic.lean - def nat.choose - theorem nat.choose_eq_fact_div_fact - theorem nat.choose_eq_zero_of_lt - theorem nat.choose_mul_fact_mul_fact - theorem nat.choose_mul_succ_eq - theorem nat.choose_one_right - theorem nat.choose_pos - theorem nat.choose_self - theorem nat.choose_succ_right_eq - theorem nat.choose_succ_self - theorem nat.choose_succ_self_right - theorem nat.choose_succ_succ - theorem nat.choose_symm - theorem nat.choose_symm_add - theorem nat.choose_symm_half - theorem nat.choose_symm_of_eq_add - theorem nat.choose_two_right - theorem nat.choose_zero_right - theorem nat.choose_zero_succ - theorem nat.dvd_fact +/- theorem nat.eq_of_mul_eq_mul_right +/- theorem nat.eq_zero_of_dvd_of_div_eq_zero - def nat.fact - theorem nat.fact_dvd_fact - theorem nat.fact_eq_one - theorem nat.fact_inj - theorem nat.fact_le - theorem nat.fact_lt - theorem nat.fact_mul_fact_dvd_fact - theorem nat.fact_mul_pow_le_fact - theorem nat.fact_ne_zero - theorem nat.fact_one - theorem nat.fact_pos - theorem nat.fact_succ - theorem nat.fact_zero +/- theorem nat.le_induction +/- theorem nat.le_rec_on_self - def nat.log - theorem nat.log_pow - theorem nat.monotone_fact - theorem nat.one_lt_fact - theorem nat.pow_le_iff_le_log - theorem nat.pow_log_le_self - theorem nat.pow_succ_log_gt_self - def nat.ppred - theorem nat.ppred_eq_none - theorem nat.ppred_eq_pred - theorem nat.ppred_eq_some - theorem nat.pred_eq_ppred - def nat.psub - theorem nat.psub_add - theorem nat.psub_eq_none - theorem nat.psub_eq_some - theorem nat.psub_eq_sub - theorem nat.sub_eq_psub - theorem nat.succ_mul_choose_eq - theorem nat.triangle_succ - theorem nat.with_bot.add_eq_one_iff - theorem nat.with_bot.add_eq_zero_iff - theorem nat.with_bot.coe_nonneg - theorem nat.with_bot.lt_zero_iff Deleted src/data/nat/choose.lean - theorem add_pow - theorem choose_le_middle - theorem choose_le_succ_of_lt_half_left - theorem choose_middle_le_pow - theorem commute.add_pow - theorem nat.prime.dvd_choose_add - theorem nat.prime.dvd_choose_self - theorem sum_range_choose - theorem sum_range_choose_halfway Added src/data/nat/choose/basic.lean + def nat.choose + theorem nat.choose_eq_fact_div_fact + theorem nat.choose_eq_zero_of_lt + theorem nat.choose_le_middle + theorem nat.choose_le_succ_of_lt_half_left + theorem nat.choose_mul_fact_mul_fact + theorem nat.choose_mul_succ_eq + theorem nat.choose_one_right + theorem nat.choose_pos + theorem nat.choose_self + theorem nat.choose_succ_right_eq + theorem nat.choose_succ_self + theorem nat.choose_succ_self_right + theorem nat.choose_succ_succ + theorem nat.choose_symm + theorem nat.choose_symm_add + theorem nat.choose_symm_half + theorem nat.choose_symm_of_eq_add + theorem nat.choose_two_right + theorem nat.choose_zero_right + theorem nat.choose_zero_succ + theorem nat.fact_mul_fact_dvd_fact + theorem nat.succ_mul_choose_eq + theorem nat.triangle_succ Added src/data/nat/choose/default.lean Added src/data/nat/choose/dvd.lean + theorem nat.prime.dvd_choose_add + theorem nat.prime.dvd_choose_self Added src/data/nat/choose/sum.lean + theorem add_pow + theorem commute.add_pow + theorem nat.choose_middle_le_pow + theorem nat.sum_range_choose + theorem nat.sum_range_choose_halfway Added src/data/nat/fact.lean + theorem nat.dvd_fact + def nat.fact + theorem nat.fact_dvd_fact + theorem nat.fact_eq_one + theorem nat.fact_inj + theorem nat.fact_le + theorem nat.fact_lt + theorem nat.fact_mul_pow_le_fact + theorem nat.fact_ne_zero + theorem nat.fact_one + theorem nat.fact_pos + theorem nat.fact_succ + theorem nat.fact_zero + theorem nat.monotone_fact + theorem nat.one_lt_fact Modified src/data/nat/gcd.lean Added src/data/nat/log.lean + def nat.log + theorem nat.log_pow + theorem nat.pow_le_iff_le_log + theorem nat.pow_log_le_self + theorem nat.pow_succ_log_gt_self Modified src/data/nat/multiplicity.lean Added src/data/nat/psub.lean + def nat.ppred + theorem nat.ppred_eq_none + theorem nat.ppred_eq_pred + theorem nat.ppred_eq_some + theorem nat.pred_eq_ppred + def nat.psub + theorem nat.psub_add + theorem nat.psub_eq_none + theorem nat.psub_eq_some + theorem nat.psub_eq_sub + theorem nat.sub_eq_psub Modified src/data/nat/sqrt.lean Added src/data/nat/with_bot.lean + theorem nat.with_bot.add_eq_one_iff + theorem nat.with_bot.add_eq_zero_iff + theorem nat.with_bot.coe_nonneg + theorem nat.with_bot.lt_zero_iff Modified src/data/num/lemmas.lean Modified src/data/polynomial/degree/basic.lean Modified src/number_theory/primorial.lean Modified src/ring_theory/ideal/operations.lean 2020-09-14 11:13:26 39962b7 chore(data/polynomial/derivative): golf proof of mem_support_derivative (#4134) Golfed proof to be similar to what it was like prior to the refactor. ESTIMATED CHANGES Modified src/data/polynomial/coeff.lean + theorem polynomial.mem_support_iff_coeff_ne_zero Modified src/data/polynomial/derivative.lean 2020-09-14 10:24:38 6756d47 feat(category_theory): Mon_.forget reflects isos (#4131) A step along the way to `sheaf X (Mon_ C) ~ Mon_ (sheaf X C)`. ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/internal.lean Modified src/category_theory/monoidal/internal/Module.lean Modified src/category_theory/monoidal/internal/types.lean 2020-09-14 09:42:31 bbfeff3 feat(data/mv_polynomial/monad): mv_polynomial is a monad in two different ways (#4080) These definitions and lemmas significantly decrease the pain in several computations in the Witt project. ESTIMATED CHANGES Added src/data/mv_polynomial/monad.lean + theorem mv_polynomial.aeval_X_left + theorem mv_polynomial.aeval_X_left_apply + theorem mv_polynomial.aeval_bind₁ + theorem mv_polynomial.aeval_bind₂ + theorem mv_polynomial.aeval_comp_bind₁ + theorem mv_polynomial.aeval_eq_bind₁ + theorem mv_polynomial.aeval_id_eq_join₁ + theorem mv_polynomial.aeval_rename + def mv_polynomial.bind₁ + theorem mv_polynomial.bind₁_C_right + theorem mv_polynomial.bind₁_X_left + theorem mv_polynomial.bind₁_X_right + theorem mv_polynomial.bind₁_bind₁ + theorem mv_polynomial.bind₁_comp_bind₁ + theorem mv_polynomial.bind₁_id + theorem mv_polynomial.bind₁_monomial + theorem mv_polynomial.bind₁_rename + def mv_polynomial.bind₂ + theorem mv_polynomial.bind₂_C_left + theorem mv_polynomial.bind₂_C_right + theorem mv_polynomial.bind₂_X_right + theorem mv_polynomial.bind₂_bind₂ + theorem mv_polynomial.bind₂_comp_C + theorem mv_polynomial.bind₂_comp_bind₂ + theorem mv_polynomial.bind₂_id + theorem mv_polynomial.bind₂_map + theorem mv_polynomial.bind₂_monomial + theorem mv_polynomial.bind₂_monomial_one + theorem mv_polynomial.eval₂_hom_C_eq_bind₁ + theorem mv_polynomial.eval₂_hom_C_id_eq_join₁ + theorem mv_polynomial.eval₂_hom_C_left + theorem mv_polynomial.eval₂_hom_bind₁ + theorem mv_polynomial.eval₂_hom_bind₂ + theorem mv_polynomial.eval₂_hom_comp_C + theorem mv_polynomial.eval₂_hom_comp_bind₂ + theorem mv_polynomial.eval₂_hom_eq_bind₂ + theorem mv_polynomial.eval₂_hom_id_X_eq_join₂ + theorem mv_polynomial.hom_bind₁ + def mv_polynomial.join₁ + theorem mv_polynomial.join₁_rename + def mv_polynomial.join₂ + theorem mv_polynomial.join₂_comp_map + theorem mv_polynomial.join₂_map + theorem mv_polynomial.map_bind₁ + theorem mv_polynomial.map_bind₂ + theorem mv_polynomial.map_comp_C + theorem mv_polynomial.rename_bind₁ 2020-09-14 09:42:28 ed71b2d feat(computability/tm_computable): define computable (in polytime) for TMs, prove id is computable in constant time (#4048) We define computability in polynomial time to be used in our future PR on P and NP. We also prove that id is computable in constant time. ESTIMATED CHANGES Added src/computability/tm_computable.lean + def turing.evals_to.refl + def turing.evals_to.trans + structure turing.evals_to + def turing.evals_to_in_time.refl + def turing.evals_to_in_time.trans + structure turing.evals_to_in_time + def turing.fin_tm2.cfg + def turing.fin_tm2.step + def turing.fin_tm2.stmt + structure turing.fin_tm2 + def turing.halt_list + def turing.id_computable + def turing.id_computable_in_poly_time + def turing.id_computable_in_time + def turing.id_computer + def turing.init_list + structure turing.tm2_computable + structure turing.tm2_computable_aux + def turing.tm2_computable_in_poly_time.to_tm2_computable_in_time + structure turing.tm2_computable_in_poly_time + def turing.tm2_computable_in_time.to_tm2_computable + structure turing.tm2_computable_in_time + def turing.tm2_outputs + def turing.tm2_outputs_in_time.to_tm2_outputs + def turing.tm2_outputs_in_time 2020-09-14 08:03:38 dce6b37 chore(algebra/homology): cleanup instances post #3995 (#4137) ESTIMATED CHANGES Modified src/algebra/homology/exact.lean Modified src/algebra/homology/image_to_kernel_map.lean 2020-09-14 08:03:36 1c2ddbc feat(field_theory/fixed): dimension over fixed field is order of group (#4125) ```lean theorem dim_fixed_points (G : Type u) (F : Type v) [group G] [field F] [fintype G] [faithful_mul_semiring_action G F] : findim (fixed_points G F) F = fintype.card G ```` ESTIMATED CHANGES Added src/algebra/big_operators/finsupp.lean + theorem finset.sum_apply' + theorem finsupp.sum_apply' + theorem finsupp.sum_sum_index' Modified src/algebra/group_ring_action.lean + theorem eq_of_smul_eq_smul + theorem injective_to_semiring_hom Modified src/data/set/function.lean + theorem set.inj_on_insert Modified src/field_theory/fixed.lean + theorem cardinal_mk_alg_hom + theorem findim_alg_hom +/- theorem fixed_points.coe_algebra_map + theorem fixed_points.coe_to_alg_hom + theorem fixed_points.dim_le_card + theorem fixed_points.findim_eq_card + theorem fixed_points.findim_le_card +/- theorem fixed_points.is_integral + theorem fixed_points.linear_independent_smul_of_linear_independent +/- theorem fixed_points.minpoly.eval₂ +/- theorem fixed_points.minpoly.irreducible +/- theorem fixed_points.minpoly.irreducible_aux +/- theorem fixed_points.minpoly.minimal_polynomial +/- theorem fixed_points.minpoly.monic +/- theorem fixed_points.minpoly.ne_one + theorem fixed_points.minpoly.of_eval₂ +/- def fixed_points.minpoly - theorem fixed_points.of_eval₂ +/- theorem fixed_points.smul +/- theorem fixed_points.smul_polynomial + def fixed_points.to_alg_hom + theorem fixed_points.to_alg_hom_apply + theorem linear_independent_to_linear_map Modified src/field_theory/tower.lean + theorem finite_dimensional.findim_linear_map' + theorem finite_dimensional.findim_linear_map + theorem finite_dimensional.right Modified src/group_theory/group_action.lean + def mul_action.to_fun + theorem mul_action.to_fun_apply Modified src/linear_algebra/basis.lean + theorem linear_independent.image' + theorem linear_independent_equiv' + theorem linear_independent_equiv + theorem linear_independent_image + theorem linear_independent_insert' + theorem linear_independent_insert + theorem linear_independent_of_comp Modified src/linear_algebra/dimension.lean + theorem dim_le + theorem is_basis.mk_eq_dim'' + theorem {u₁} Modified src/linear_algebra/finsupp.lean + theorem finsupp.total_apply_of_mem_supported Modified src/ring_theory/algebra.lean + def linear_map.lto_fun Modified src/ring_theory/algebra_tower.lean Modified src/set_theory/cardinal.lean + theorem cardinal.card_le_of 2020-09-14 08:03:35 b1e5a6b doc(measure_theory): docstrings for continuity from above and below (#4122) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean 2020-09-14 08:03:33 5a478f0 doc(category_theory/natural_isomorphism): documentation and cleanup (#4120) ESTIMATED CHANGES Modified src/category_theory/natural_isomorphism.lean +/- def category_theory.iso.app - def category_theory.nat_iso.is_iso_app_of_is_iso 2020-09-14 08:03:31 51608f4 feat(linear_algebra/affine_space,geometry/euclidean): simplex centers and order of points (#4116) Add lemmas that the centroid of an injective indexed family of points does not depend on the indices of those points, only on the set of points in their image, and likewise that the centroid, circumcenter and Monge point of a simplex and thus the orthocenter of a triangle do not depend on the order in which the vertices are indexed by `fin (n + 1)`, only on the set of vertices. ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean + theorem affine.simplex.circumcenter_eq_of_range_eq Modified src/geometry/euclidean/monge_point.lean + theorem affine.simplex.monge_point_eq_of_range_eq + theorem affine.triangle.orthocenter_eq_of_range_eq Modified src/linear_algebra/affine_space/combination.lean + theorem finset.centroid_eq_centroid_image_of_inj_on + theorem finset.centroid_eq_of_inj_on_of_image_eq Modified src/linear_algebra/affine_space/independent.lean + theorem affine.simplex.centroid_eq_of_range_eq 2020-09-14 08:03:29 b19fbd7 feat(ring_theory/algebra_tower): coefficients for a basis in an algebra tower (#4114) This PR gives an expression for `(is_basis.smul hb hc).repr` in terms of `hb.repr` and `hc.repr`, useful if you have a field extension `L / K`, and `x y : L`, and want to write `y` in terms of the power basis of `K(x)`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.linear_map.ext_on Modified src/linear_algebra/basis.lean + theorem is_basis.repr_apply_eq + theorem is_basis.repr_eq_iff Modified src/ring_theory/algebra_tower.lean +/- theorem is_basis.smul + theorem is_basis.smul_repr + theorem is_basis.smul_repr_mk +/- theorem linear_independent_smul 2020-09-14 06:53:07 e355933 chore(category_theory/limits): remove unnecessary typeclass arguments (#4141) Ongoing cleanup post #3995. Previously we couldn't construct things like `instance : has_kernel (0 : X \hom Y)`, because it wouldn't have agreed definitionally with more general instances. Now we can. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean +/- def category_theory.limits.coequalizer.iso_target_of_self +/- theorem category_theory.limits.coequalizer.iso_target_of_self_hom +/- theorem category_theory.limits.coequalizer.iso_target_of_self_inv +/- def category_theory.limits.equalizer.iso_source_of_self +/- theorem category_theory.limits.equalizer.iso_source_of_self_hom +/- theorem category_theory.limits.equalizer.iso_source_of_self_inv Modified src/category_theory/limits/shapes/kernels.lean +/- def category_theory.limits.cokernel.π_of_zero +/- def category_theory.limits.cokernel_zero_iso_target +/- theorem category_theory.limits.cokernel_zero_iso_target_hom +/- theorem category_theory.limits.cokernel_zero_iso_target_inv +/- def category_theory.limits.kernel.ι_of_zero +/- def category_theory.limits.kernel_zero_iso_source +/- theorem category_theory.limits.kernel_zero_iso_source_hom +/- theorem category_theory.limits.kernel_zero_iso_source_inv 2020-09-14 00:14:59 bd385fb chore(category_theory/limits/functor_category): shuffle limits in functor cats (#4124) Give `is_limit` versions for statements about limits in the functor category, and write the `has_limit` versions in terms of those. This also generalises the universes a little. As usual, suggestions for better docstrings or better names appreciated! ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean +/- theorem category_theory.limits.cocone.w +/- theorem category_theory.limits.cone.w Modified src/category_theory/limits/functor_category.lean - theorem category_theory.limits.cocone.functor_w + def category_theory.limits.combine_cocones + def category_theory.limits.combine_cones + def category_theory.limits.combined_is_colimit + def category_theory.limits.combined_is_limit - theorem category_theory.limits.cone.functor_w + def category_theory.limits.evaluate_combined_cocones + def category_theory.limits.evaluate_combined_cones - def category_theory.limits.evaluate_functor_category_colimit_cocone - def category_theory.limits.evaluate_functor_category_limit_cone + def category_theory.limits.evaluation_jointly_reflects_colimits + def category_theory.limits.evaluation_jointly_reflects_limits - def category_theory.limits.functor_category_colimit_cocone - def category_theory.limits.functor_category_is_colimit_cocone - def category_theory.limits.functor_category_is_limit_cone - def category_theory.limits.functor_category_limit_cone 2020-09-13 08:21:22 5d35e62 feat(algebraic_geometry/*): Gamma the global sections functor (#4126) ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean + def algebraic_geometry.Scheme.Γ + theorem algebraic_geometry.Scheme.Γ_def + theorem algebraic_geometry.Scheme.Γ_map + theorem algebraic_geometry.Scheme.Γ_map_op + theorem algebraic_geometry.Scheme.Γ_obj + theorem algebraic_geometry.Scheme.Γ_obj_op Modified src/algebraic_geometry/locally_ringed_space.lean + def algebraic_geometry.LocallyRingedSpace.Γ + theorem algebraic_geometry.LocallyRingedSpace.Γ_def + theorem algebraic_geometry.LocallyRingedSpace.Γ_map + theorem algebraic_geometry.LocallyRingedSpace.Γ_map_op + theorem algebraic_geometry.LocallyRingedSpace.Γ_obj + theorem algebraic_geometry.LocallyRingedSpace.Γ_obj_op Modified src/algebraic_geometry/presheafed_space.lean + def algebraic_geometry.PresheafedSpace.Γ + theorem algebraic_geometry.PresheafedSpace.Γ_map_op + theorem algebraic_geometry.PresheafedSpace.Γ_obj_op Modified src/algebraic_geometry/sheafed_space.lean + def algebraic_geometry.SheafedSpace.Γ + theorem algebraic_geometry.SheafedSpace.Γ_def + theorem algebraic_geometry.SheafedSpace.Γ_map + theorem algebraic_geometry.SheafedSpace.Γ_map_op + theorem algebraic_geometry.SheafedSpace.Γ_obj + theorem algebraic_geometry.SheafedSpace.Γ_obj_op Modified src/topology/category/Top/opens.lean + def topological_space.opens.bot_le + def topological_space.opens.le_map_top + def topological_space.opens.le_top 2020-09-13 03:55:56 f403a8b feat(category_theory/limits/types): is_limit versions of limits in type (#4130) `is_limit` versions for definitions and lemmas about limits in `Type u`. ESTIMATED CHANGES Modified src/category_theory/limits/types.lean + def category_theory.limits.types.is_limit_equiv_sections + theorem category_theory.limits.types.is_limit_equiv_sections_apply + theorem category_theory.limits.types.is_limit_equiv_sections_symm_apply 2020-09-13 01:01:54 dd43823 chore(scripts): update nolints.txt (#4129) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-12 18:30:15 f3326db feat(normed_space): second countability for linear maps (#4099) From the sphere eversion project, various lemmas about continuous linear maps and a theorem: if E is finite dimensional and F is second countable then the space of continuous linear maps from E to F is second countable. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem eq_of_norm_sub_eq_zero + theorem norm_le_insert + theorem norm_smul_of_nonneg + theorem normed_group.tendsto_nhds_nhds Modified src/analysis/normed_space/finite_dimension.lean + theorem is_basis.coe_constrL + def is_basis.constrL + theorem is_basis.constrL_apply + theorem is_basis.constrL_basis + def is_basis.equiv_funL + theorem is_basis.op_norm_le + theorem is_basis.sup_norm_le_norm Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_eq_of_bounds + theorem continuous_linear_map.op_norm_le_of_ball + theorem continuous_of_linear_of_bound Modified src/linear_algebra/basis.lean + theorem is_basis.constr_apply_fintype Modified src/topology/algebra/module.lean + theorem continuous_linear_map.map_sum 2020-09-12 16:34:13 c8771b6 fix(algebra/ring/basic): delete mul_self_sub_mul_self_eq (#4119) It's redundant with `mul_self_sub_mul_self`. Also renamed `mul_self_sub_one_eq` to `mul_self_sub_one`. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean - theorem mul_self_sub_mul_self_eq + theorem mul_self_sub_one - theorem mul_self_sub_one_eq 2020-09-12 15:49:53 169384a feat(slim_check): add test cases (#4100) ESTIMATED CHANGES Modified src/system/random/basic.lean + def io.run_rand_with Modified src/tactic/slim_check.lean Modified src/testing/slim_check/testable.lean +/- def slim_check.testable.check Added test/random.lean + def find_prime + def find_prime_aux + def iterated_primality_test + def iterated_primality_test_aux + def primality_test Modified test/slim_check.lean - def find_prime - def find_prime_aux - def iterated_primality_test - def iterated_primality_test_aux - def primality_test 2020-09-12 09:38:07 c3a6a69 doc(group_theory/subgroup): fix links in module doc (#4115) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2020-09-12 09:38:05 88dd01b chore(category_theory): minor cleanups (#4110) ESTIMATED CHANGES Modified src/algebra/category/Group/colimits.lean + def AddCommGroup.colimits.colimit_cocone_is_colimit - def AddCommGroup.colimits.colimit_is_colimit Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.map - def category_theory.limits.is_colimit_map + def category_theory.limits.is_limit.map - def category_theory.limits.is_limit_map Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/types.lean + theorem category_theory.hom_inv_id_apply + theorem category_theory.inv_hom_id_apply 2020-09-12 07:45:55 b1a210e feat(logic/basic): Add more simp lemmas for forall (#4117) ESTIMATED CHANGES Modified src/computability/partrec_code.lean Modified src/logic/basic.lean + theorem forall_eq_apply_imp_iff' + theorem forall_eq_apply_imp_iff 2020-09-12 06:00:57 3419986 feat(category_theory/limits): make has_limit a Prop (#3995) We change `has_limit` so that it is only an existential statement that limit data exists, and in particular lives in `Prop`. This means we can safely have multiple `has_limit` classes for the same functor, because proof irrelevance ensures Lean sees them all as the same. We still have access to the API which lets us pretend we have consistently chosen limits, but now these limits are provided by the axiom of choice and hence are definitionally opaque. ESTIMATED CHANGES Modified docs/tutorial/category_theory/Ab.lean Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean Modified src/algebra/category/Algebra/limits.lean Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Group/biproducts.lean + def AddCommGroup.binary_product_limit_cone + def AddCommGroup.biprod_iso_prod + def AddCommGroup.biproduct_iso_pi + def AddCommGroup.has_limit.product_limit_cone Modified src/algebra/category/Group/colimits.lean - def AddCommGroup.cokernel_iso_quotient Modified src/algebra/category/Group/limits.lean Modified src/algebra/category/Module/kernels.lean + theorem Module.has_cokernels_Module - def Module.has_cokernels_Module + theorem Module.has_kernels_Module - def Module.has_kernels_Module Modified src/algebra/category/Module/limits.lean Modified src/algebra/category/Mon/colimits.lean Modified src/algebra/category/Mon/limits.lean Modified src/algebra/homology/homology.lean Modified src/algebra/homology/image_to_kernel_map.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.has_finite_biproducts - def category_theory.abelian.has_finite_biproducts + theorem category_theory.abelian.has_pullbacks - def category_theory.abelian.has_pullbacks + theorem category_theory.abelian.has_pushouts - def category_theory.abelian.has_pushouts Modified src/category_theory/abelian/exact.lean Modified src/category_theory/abelian/non_preadditive.lean + theorem category_theory.non_preadditive_abelian.has_colimit_parallel_pair - def category_theory.non_preadditive_abelian.has_colimit_parallel_pair + theorem category_theory.non_preadditive_abelian.has_limit_parallel_pair - def category_theory.non_preadditive_abelian.has_limit_parallel_pair + theorem category_theory.non_preadditive_abelian.pullback_of_mono - def category_theory.non_preadditive_abelian.pullback_of_mono + theorem category_theory.non_preadditive_abelian.pushout_of_epi - def category_theory.non_preadditive_abelian.pushout_of_epi Modified src/category_theory/adjunction/limits.lean + theorem category_theory.adjunction.has_colimit_of_comp_equivalence - def category_theory.adjunction.has_colimit_of_comp_equivalence + theorem category_theory.adjunction.has_limit_of_comp_equivalence - def category_theory.adjunction.has_limit_of_comp_equivalence Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/graded_object.lean - def category_theory.graded_object.total Modified src/category_theory/limits/colimit_limit.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/creates.lean + theorem category_theory.has_colimit_of_created - def category_theory.has_colimit_of_created + theorem category_theory.has_limit_of_created - def category_theory.has_limit_of_created Modified src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean Modified src/category_theory/limits/fubini.lean - def category_theory.limits.diagram_of_cones.mk_of_has_limits - def category_theory.limits.limit_iso_limit_curry_comp_lim - def category_theory.limits.limit_uncurry_iso_limit_comp_lim Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/limits.lean +/- def category_theory.limits.colimit.cocone + theorem category_theory.limits.colimit.cocone_X + structure category_theory.limits.colimit_cocone + def category_theory.limits.get_colimit_cocone + def category_theory.limits.get_limit_cone + theorem category_theory.limits.has_colimit.mk + theorem category_theory.limits.has_colimit.of_cocones_iso - def category_theory.limits.has_colimit.of_cocones_iso + theorem category_theory.limits.has_colimit_of_equivalence_comp - def category_theory.limits.has_colimit_of_equivalence_comp + theorem category_theory.limits.has_colimit_of_iso - def category_theory.limits.has_colimit_of_iso + theorem category_theory.limits.has_colimits_of_shape_of_equivalence - def category_theory.limits.has_colimits_of_shape_of_equivalence + theorem category_theory.limits.has_limit.mk + theorem category_theory.limits.has_limit.of_cones_iso - def category_theory.limits.has_limit.of_cones_iso + theorem category_theory.limits.has_limit_of_equivalence_comp - def category_theory.limits.has_limit_of_equivalence_comp + theorem category_theory.limits.has_limit_of_iso - def category_theory.limits.has_limit_of_iso + theorem category_theory.limits.has_limits_of_shape_of_equivalence - def category_theory.limits.has_limits_of_shape_of_equivalence + def category_theory.limits.is_colimit_map + def category_theory.limits.is_limit_map + theorem category_theory.limits.is_limit_map_π +/- def category_theory.limits.limit.cone + theorem category_theory.limits.limit.cone_X + structure category_theory.limits.limit_cone + theorem category_theory.limits.ι_is_colimit_map Modified src/category_theory/limits/opposites.lean + theorem category_theory.limits.has_colimit_of_has_limit_left_op - def category_theory.limits.has_colimit_of_has_limit_left_op + theorem category_theory.limits.has_colimits_of_shape_op_of_has_limits_of_shape - def category_theory.limits.has_colimits_of_shape_op_of_has_limits_of_shape + theorem category_theory.limits.has_colimits_op_of_has_limits - def category_theory.limits.has_colimits_op_of_has_limits + theorem category_theory.limits.has_coproducts_opposite - def category_theory.limits.has_coproducts_opposite + theorem category_theory.limits.has_limit_of_has_colimit_left_op - def category_theory.limits.has_limit_of_has_colimit_left_op + theorem category_theory.limits.has_limits_of_shape_op_of_has_colimits_of_shape - def category_theory.limits.has_limits_of_shape_op_of_has_colimits_of_shape + theorem category_theory.limits.has_limits_op_of_has_colimits - def category_theory.limits.has_limits_op_of_has_colimits + theorem category_theory.limits.has_products_opposite - def category_theory.limits.has_products_opposite Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/pi.lean + theorem category_theory.pi.has_colimit_of_has_colimit_comp_eval - def category_theory.pi.has_colimit_of_has_colimit_comp_eval + theorem category_theory.pi.has_limit_of_has_limit_comp_eval - def category_theory.pi.has_limit_of_has_limit_comp_eval Modified src/category_theory/limits/preserves/basic.lean Modified src/category_theory/limits/preserves/shapes.lean Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.has_binary_coproducts_of_has_colimit_pair - def category_theory.limits.has_binary_coproducts_of_has_colimit_pair + theorem category_theory.limits.has_binary_products_of_has_limit_pair - def category_theory.limits.has_binary_products_of_has_limit_pair Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.binary_biproduct.bicone + theorem category_theory.limits.binary_biproduct.bicone_fst + theorem category_theory.limits.binary_biproduct.bicone_inl + theorem category_theory.limits.binary_biproduct.bicone_inr + theorem category_theory.limits.binary_biproduct.bicone_snd + def category_theory.limits.binary_biproduct.is_colimit + def category_theory.limits.binary_biproduct.is_limit + structure category_theory.limits.binary_biproduct_data + theorem category_theory.limits.biprod.inl_desc + theorem category_theory.limits.biprod.inr_desc + theorem category_theory.limits.biprod.lift_fst + theorem category_theory.limits.biprod.lift_snd +/- def category_theory.limits.biprod +/- def category_theory.limits.biproduct.bicone + theorem category_theory.limits.biproduct.bicone_ι + theorem category_theory.limits.biproduct.bicone_π - theorem category_theory.limits.biproduct.inl_map +/- def category_theory.limits.biproduct.is_colimit +/- def category_theory.limits.biproduct.is_limit + theorem category_theory.limits.biproduct.lift_π + theorem category_theory.limits.biproduct.map_π + theorem category_theory.limits.biproduct.ι_desc + theorem category_theory.limits.biproduct.ι_map + def category_theory.limits.get_binary_biproduct_data + def category_theory.limits.get_biproduct_data + theorem category_theory.limits.has_binary_biproduct.mk + theorem category_theory.limits.has_binary_biproduct.of_has_binary_coproduct - def category_theory.limits.has_binary_biproduct.of_has_binary_coproduct + theorem category_theory.limits.has_binary_biproduct.of_has_binary_product - def category_theory.limits.has_binary_biproduct.of_has_binary_product + theorem category_theory.limits.has_binary_biproduct_of_total - def category_theory.limits.has_binary_biproduct_of_total + theorem category_theory.limits.has_binary_biproducts.of_has_binary_coproducts - def category_theory.limits.has_binary_biproducts.of_has_binary_coproducts + theorem category_theory.limits.has_binary_biproducts.of_has_binary_products - def category_theory.limits.has_binary_biproducts.of_has_binary_products + theorem category_theory.limits.has_binary_biproducts_of_finite_biproducts - def category_theory.limits.has_binary_biproducts_of_finite_biproducts + theorem category_theory.limits.has_biproduct.mk + theorem category_theory.limits.has_biproduct.of_has_coproduct - def category_theory.limits.has_biproduct.of_has_coproduct + theorem category_theory.limits.has_biproduct.of_has_product - def category_theory.limits.has_biproduct.of_has_product + theorem category_theory.limits.has_biproduct_of_total - def category_theory.limits.has_biproduct_of_total + theorem category_theory.limits.has_finite_biproducts.of_has_finite_coproducts - def category_theory.limits.has_finite_biproducts.of_has_finite_coproducts + theorem category_theory.limits.has_finite_biproducts.of_has_finite_products - def category_theory.limits.has_finite_biproducts.of_has_finite_products + structure category_theory.limits.limit_bicone Modified src/category_theory/limits/shapes/constructions/binary_products.lean + theorem has_binary_products_of_terminal_and_pullbacks - def has_binary_products_of_terminal_and_pullbacks Modified src/category_theory/limits/shapes/constructions/equalizers.lean + theorem category_theory.limits.has_equalizers_of_pullbacks_and_binary_products - def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean + theorem category_theory.limits.finite_limits_from_equalizers_and_finite_products - def category_theory.limits.finite_limits_from_equalizers_and_finite_products + theorem category_theory.limits.limits_from_equalizers_and_products - def category_theory.limits.limits_from_equalizers_and_products Modified src/category_theory/limits/shapes/constructions/over/default.lean Modified src/category_theory/limits/shapes/constructions/over/products.lean + theorem category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit - def category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit + theorem category_theory.over.construct_products.over_binary_product_of_pullback - def category_theory.over.construct_products.over_binary_product_of_pullback + theorem category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks - def category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks + theorem category_theory.over.construct_products.over_product_of_wide_pullback - def category_theory.over.construct_products.over_product_of_wide_pullback + theorem category_theory.over.construct_products.over_products_of_wide_pullbacks - def category_theory.over.construct_products.over_products_of_wide_pullbacks + theorem category_theory.over.over_has_terminal - def category_theory.over.over_has_terminal Modified src/category_theory/limits/shapes/constructions/preserve_binary_products.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean + theorem category_theory.limits.has_colimit_span_of_has_colimit_pair_of_has_colimit_parallel_pair - def category_theory.limits.has_colimit_span_of_has_colimit_pair_of_has_colimit_parallel_pair + theorem category_theory.limits.has_limit_cospan_of_has_limit_pair_of_has_limit_parallel_pair - def category_theory.limits.has_limit_cospan_of_has_limit_pair_of_has_limit_parallel_pair + theorem category_theory.limits.has_pullbacks_of_has_binary_products_of_has_equalizers - def category_theory.limits.has_pullbacks_of_has_binary_products_of_has_equalizers + theorem category_theory.limits.has_pushouts_of_has_binary_coproducts_of_has_coequalizers - def category_theory.limits.has_pushouts_of_has_binary_coproducts_of_has_coequalizers Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.has_coequalizers_of_has_colimit_parallel_pair - def category_theory.limits.has_coequalizers_of_has_colimit_parallel_pair + theorem category_theory.limits.has_equalizers_of_has_limit_parallel_pair - def category_theory.limits.has_equalizers_of_has_limit_parallel_pair Modified src/category_theory/limits/shapes/finite_limits.lean +/- def category_theory.limits.has_finite_colimits + theorem category_theory.limits.has_finite_colimits_of_has_colimits - def category_theory.limits.has_finite_colimits_of_has_colimits +/- def category_theory.limits.has_finite_limits + theorem category_theory.limits.has_finite_limits_of_has_limits - def category_theory.limits.has_finite_limits_of_has_limits +/- def category_theory.limits.has_finite_wide_pullbacks + theorem category_theory.limits.has_finite_wide_pullbacks_of_has_finite_limits - def category_theory.limits.has_finite_wide_pullbacks_of_has_finite_limits +/- def category_theory.limits.has_finite_wide_pushouts + theorem category_theory.limits.has_finite_wide_pushouts_of_has_finite_limits - def category_theory.limits.has_finite_wide_pushouts_of_has_finite_limits Modified src/category_theory/limits/shapes/finite_products.lean +/- def category_theory.limits.has_finite_coproducts + theorem category_theory.limits.has_finite_coproducts_of_has_coproducts - def category_theory.limits.has_finite_coproducts_of_has_coproducts + theorem category_theory.limits.has_finite_coproducts_of_has_finite_colimits - def category_theory.limits.has_finite_coproducts_of_has_finite_colimits +/- def category_theory.limits.has_finite_products + theorem category_theory.limits.has_finite_products_of_has_finite_limits - def category_theory.limits.has_finite_products_of_has_finite_limits + theorem category_theory.limits.has_finite_products_of_has_products - def category_theory.limits.has_finite_products_of_has_products Modified src/category_theory/limits/shapes/kernels.lean +/- def category_theory.limits.has_cokernel +/- def category_theory.limits.has_kernel Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.has_pullbacks_of_has_limit_cospan - def category_theory.limits.has_pullbacks_of_has_limit_cospan + theorem category_theory.limits.has_pushouts_of_has_colimit_span - def category_theory.limits.has_pushouts_of_has_colimit_span Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/terminal.lean + theorem category_theory.limits.has_initial_of_unique - def category_theory.limits.has_initial_of_unique + theorem category_theory.limits.has_terminal_of_unique - def category_theory.limits.has_terminal_of_unique Modified src/category_theory/limits/shapes/types.lean + def category_theory.limits.types.binary_coproduct_limit_cone + def category_theory.limits.types.binary_product_limit_cone - theorem category_theory.limits.types.coprod - theorem category_theory.limits.types.coprod_desc - theorem category_theory.limits.types.coprod_inl - theorem category_theory.limits.types.coprod_inr - theorem category_theory.limits.types.coprod_map + def category_theory.limits.types.coproduct_limit_cone - theorem category_theory.limits.types.initial + def category_theory.limits.types.initial_limit_cone - theorem category_theory.limits.types.pi - theorem category_theory.limits.types.pi_lift - theorem category_theory.limits.types.pi_map - theorem category_theory.limits.types.pi_π - theorem category_theory.limits.types.prod - theorem category_theory.limits.types.prod_fst - theorem category_theory.limits.types.prod_lift - theorem category_theory.limits.types.prod_map - theorem category_theory.limits.types.prod_snd + def category_theory.limits.types.product_limit_cone - theorem category_theory.limits.types.sigma - theorem category_theory.limits.types.sigma_desc - theorem category_theory.limits.types.sigma_map - theorem category_theory.limits.types.sigma_ι - theorem category_theory.limits.types.terminal - theorem category_theory.limits.types.terminal_from + def category_theory.limits.types.terminal_limit_cone - def category_theory.limits.types.types_has_binary_coproducts - def category_theory.limits.types.types_has_binary_products - def category_theory.limits.types.types_has_coproducts - def category_theory.limits.types.types_has_initial - def category_theory.limits.types.types_has_products - def category_theory.limits.types.types_has_terminal Modified src/category_theory/limits/shapes/wide_pullbacks.lean +/- def category_theory.limits.has_wide_pullbacks +/- def category_theory.limits.has_wide_pushouts Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.has_zero_object.has_initial - def category_theory.limits.has_zero_object.has_initial + theorem category_theory.limits.has_zero_object.has_terminal - def category_theory.limits.has_zero_object.has_terminal Modified src/category_theory/limits/types.lean Modified src/category_theory/monad/limits.lean + theorem category_theory.has_limits_of_reflective - def category_theory.has_limits_of_reflective + theorem category_theory.monad.forget_creates_colimits_of_monad_preserves - def category_theory.monad.forget_creates_colimits_of_monad_preserves + theorem category_theory.monad.has_limit_of_comp_forget_has_limit - def category_theory.monad.has_limit_of_comp_forget_has_limit + theorem category_theory.monadic_creates_limits - def category_theory.monadic_creates_limits Added src/category_theory/monoidal/of_chosen_finite_products.lean + def category_theory.limits.binary_fan.assoc + theorem category_theory.limits.binary_fan.assoc_fst + def category_theory.limits.binary_fan.assoc_inv + theorem category_theory.limits.binary_fan.assoc_inv_fst + theorem category_theory.limits.binary_fan.assoc_inv_snd + theorem category_theory.limits.binary_fan.assoc_snd + def category_theory.limits.binary_fan.associator + def category_theory.limits.binary_fan.associator_of_limit_cone + def category_theory.limits.binary_fan.braiding + def category_theory.limits.binary_fan.left_unitor + def category_theory.limits.binary_fan.right_unitor + def category_theory.limits.binary_fan.swap + theorem category_theory.limits.binary_fan.swap_fst + theorem category_theory.limits.binary_fan.swap_snd + theorem category_theory.limits.has_binary_product.swap + def category_theory.limits.is_limit.assoc + def category_theory.limits.is_limit.swap_binary_fan + theorem category_theory.monoidal_of_chosen_finite_products.associator_naturality + theorem category_theory.monoidal_of_chosen_finite_products.braiding_naturality + theorem category_theory.monoidal_of_chosen_finite_products.hexagon_forward + theorem category_theory.monoidal_of_chosen_finite_products.hexagon_reverse + theorem category_theory.monoidal_of_chosen_finite_products.left_unitor_naturality + def category_theory.monoidal_of_chosen_finite_products.monoidal_of_chosen_finite_products_synonym + theorem category_theory.monoidal_of_chosen_finite_products.pentagon + theorem category_theory.monoidal_of_chosen_finite_products.right_unitor_naturality + theorem category_theory.monoidal_of_chosen_finite_products.symmetry + theorem category_theory.monoidal_of_chosen_finite_products.tensor_comp + def category_theory.monoidal_of_chosen_finite_products.tensor_hom + theorem category_theory.monoidal_of_chosen_finite_products.tensor_id + def category_theory.monoidal_of_chosen_finite_products.tensor_obj + theorem category_theory.monoidal_of_chosen_finite_products.triangle + def category_theory.monoidal_of_chosen_finite_products + def category_theory.symmetric_of_chosen_finite_products Modified src/category_theory/monoidal/of_has_finite_products.lean Modified src/category_theory/monoidal/types.lean Modified src/category_theory/over.lean +/- def category_theory.over.iso_mk - theorem category_theory.over.iso_mk_hom_left - theorem category_theory.over.iso_mk_inv_left Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/preadditive/default.lean + theorem category_theory.preadditive.has_coequalizers_of_has_cokernels - def category_theory.preadditive.has_coequalizers_of_has_cokernels + theorem category_theory.preadditive.has_colimit_parallel_pair - def category_theory.preadditive.has_colimit_parallel_pair + theorem category_theory.preadditive.has_equalizers_of_has_kernels - def category_theory.preadditive.has_equalizers_of_has_kernels + theorem category_theory.preadditive.has_limit_parallel_pair - def category_theory.preadditive.has_limit_parallel_pair Modified src/group_theory/quotient_group.lean + theorem quotient_group.lift_quot_mk Modified src/topology/category/Top/limits.lean Modified src/topology/category/Top/opens.lean + theorem topological_space.opens.inf_le_left_apply + theorem topological_space.opens.inf_le_left_apply_mk + theorem topological_space.opens.le_supr_apply_mk Modified src/topology/category/UniformSpace.lean Modified src/topology/sheaves/forget.lean Modified src/topology/sheaves/local_predicate.lean + theorem Top.subpresheaf_to_Types.sheaf_condition_fac + theorem Top.subpresheaf_to_Types.sheaf_condition_uniq Modified src/topology/sheaves/sheaf.lean Modified src/topology/sheaves/sheaf_of_functions.lean Modified src/topology/sheaves/sheafify.lean Modified src/topology/sheaves/stalks.lean 2020-09-12 01:05:19 f6a65cf chore(scripts): update nolints.txt (#4118) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-11 17:48:45 7bade58 feat(logic/basic): Add forall_apply_eq_imp_iff (#4109) Also adds forall_apply_eq_imp_iff' for swapped forall arguments This means that `forall_range_iff` can now be solved by `simp`. This requires changes in data/pfun and measure_theory/borel_space, where non-terminal `simp`s broke. ESTIMATED CHANGES Modified src/data/pfun.lean Modified src/data/set/basic.lean Modified src/logic/basic.lean + theorem forall_apply_eq_imp_iff' + theorem forall_apply_eq_imp_iff Modified src/measure_theory/borel_space.lean 2020-09-11 17:48:43 17a5807 feat(category_theory/limits/fubini): another formulation for limits commuting (#4034) The statement that you can swap limits, rather than just combine into a single limit as we had before. (This just uses two copies of the previous isomorphism.) ESTIMATED CHANGES Modified src/category_theory/limits/fubini.lean + def category_theory.limits.limit_curry_swap_comp_lim_iso_limit_curry_comp_lim + theorem category_theory.limits.limit_curry_swap_comp_lim_iso_limit_curry_comp_lim_hom_π_π + theorem category_theory.limits.limit_curry_swap_comp_lim_iso_limit_curry_comp_lim_inv_π_π Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.has_colimit.iso_of_equivalence_hom_π + theorem category_theory.limits.has_colimit.iso_of_equivalence_inv_π - theorem category_theory.limits.has_colimit.iso_of_equivalence_π + theorem category_theory.limits.has_limit.iso_of_equivalence_hom_π + theorem category_theory.limits.has_limit.iso_of_equivalence_inv_π - theorem category_theory.limits.has_limit.iso_of_equivalence_π Modified src/category_theory/products/basic.lean 2020-09-11 17:48:40 045619e feat(topology/sheaves): sheafification (#3937) # Sheafification of `Type` valued presheaves We construct the sheafification of a `Type` valued presheaf, as the subsheaf of dependent functions into the stalks consisting of functions which are locally germs. We show that the stalks of the sheafification are isomorphic to the original stalks, via `stalk_to_fiber` which evaluates a germ of a dependent function at a point. We construct a morphism `to_sheafify` from a presheaf to (the underlying presheaf of) its sheafification, given by sending a section to its collection of germs. ## Future work Show that the map induced on stalks by `to_sheafify` is the inverse of `stalk_to_fiber`. Show sheafification is a functor from presheaves to sheaves, and that it is the left adjoint of the forgetful functor. ESTIMATED CHANGES Modified src/topology/category/Top/open_nhds.lean + def topological_space.open_nhds.inf_le_left + def topological_space.open_nhds.inf_le_right Modified src/topology/sheaves/local_predicate.lean Added src/topology/sheaves/sheafify.lean + def Top.presheaf.sheafify.is_germ + def Top.presheaf.sheafify.is_locally_germ + def Top.presheaf.sheafify + def Top.presheaf.sheafify_stalk_iso + def Top.presheaf.stalk_to_fiber + theorem Top.presheaf.stalk_to_fiber_injective + theorem Top.presheaf.stalk_to_fiber_surjective + def Top.presheaf.to_sheafify Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.germ_eq + theorem Top.presheaf.germ_res_apply' 2020-09-11 17:48:37 5509a30 feat(category_theory/skeleton): add skeletal categories and construct a special case (#3929) I'm interested in the quotient construction of the skeleton for a thin category in particular for topos and sheafification PRs, but of course the general construction is useful too, so I've marked that as TODO and I'll make a followup PR so that this one doesn't get too big. The advantage of handling this special case separately is that the skeleton of a thin category is a partial order, and so lattice constructions can be used (which is needed for my application), and also there are nice definitional equalities. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/wide_pullbacks.lean Added src/category_theory/skeletal.lean + theorem category_theory.functor.eq_of_iso + theorem category_theory.functor_skeletal + structure category_theory.is_skeleton_of + def category_theory.skeletal + theorem category_theory.thin_skeleton.comp_to_thin_skeleton + theorem category_theory.thin_skeleton.equiv_of_both_ways + def category_theory.thin_skeleton.map + theorem category_theory.thin_skeleton.map_comp_eq + theorem category_theory.thin_skeleton.map_id_eq + theorem category_theory.thin_skeleton.map_iso_eq + def category_theory.thin_skeleton.map_nat_trans + def category_theory.thin_skeleton.map₂ + theorem category_theory.thin_skeleton.skeletal + def category_theory.thin_skeleton + def category_theory.to_thin_skeleton Deleted src/category_theory/sparse.lean - def category_theory.sparse_category Added src/category_theory/thin.lean + def category_theory.iso_of_both_ways + def category_theory.thin_category 2020-09-11 15:53:17 847f87e feat(geometry/euclidean/circumcenter): lemmas on orthogonal projection and reflection (#4087) Add more lemmas about orthogonal projection and the circumcenter of a simplex (so substantially simplifying the proof of `orthogonal_projection_circumcenter`). Then prove a lemma `eq_or_eq_reflection_of_dist_eq` that if we fix a distance a point has to all the vertices of a simplex, any two possible positions of that point in one dimension higher than the simplex are equal or reflections of each other in the subspace of the simplex. ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean + theorem affine.simplex.orthogonal_projection_eq_circumcenter_of_dist_eq + theorem affine.simplex.orthogonal_projection_eq_circumcenter_of_exists_dist_eq + theorem euclidean_geometry.eq_or_eq_reflection_of_dist_eq 2020-09-11 15:53:15 872a37e cleanup(group_theory/presented_group): () -> [], and remove some FIXMEs (#4076) ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Modified src/group_theory/presented_group.lean - theorem presented_group.to_group.inv - theorem presented_group.to_group.mul - theorem presented_group.to_group.one Modified src/group_theory/subgroup.lean +/- theorem group.conjugates_of_set_subset +/- theorem group.conjugates_subset_normal - theorem monoid_hom.normal_ker - theorem subgroup.bot_normal - theorem subgroup.center_normal +/- theorem subgroup.le_normalizer_of_normal +/- theorem subgroup.normal_closure_le_normal - theorem subgroup.normal_closure_normal +/- theorem subgroup.normal_closure_subset_iff - theorem subgroup.normal_comap - theorem subgroup.normal_in_normalizer - theorem subgroup.normal_of_comm 2020-09-11 15:53:13 377c7c9 feat(category_theory/braided): braiding and unitors (#4075) The interaction between braidings and unitors in a braided category. Requested by @cipher1024 for some work he's doing on monads. I've changed the statements of some `@[simp]` lemmas, in particular `left_unitor_tensor`, `left_unitor_tensor_inv`, `right_unitor_tensor`, `right_unitor_tensor_inv`. The new theory is that the components of a unitor indexed by a tensor product object are "more complicated" than other unitors. (We already follow the same principle for simplifying associators using the pentagon equation.) ESTIMATED CHANGES Modified src/category_theory/monoidal/End.lean Modified src/category_theory/monoidal/braided.lean + theorem category_theory.braiding_left_unitor + theorem category_theory.braiding_left_unitor_aux₁ + theorem category_theory.braiding_left_unitor_aux₂ + theorem category_theory.braiding_right_unitor + theorem category_theory.braiding_right_unitor_aux₁ + theorem category_theory.braiding_right_unitor_aux₂ Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.left_unitor_tensor' +/- theorem category_theory.monoidal_category.left_unitor_tensor + theorem category_theory.monoidal_category.left_unitor_tensor_inv' +/- theorem category_theory.monoidal_category.left_unitor_tensor_inv +/- theorem category_theory.monoidal_category.right_unitor_tensor +/- theorem category_theory.monoidal_category.right_unitor_tensor_inv Modified src/category_theory/monoidal/unitors.lean 2020-09-11 15:53:11 a1cbe88 feat(logic/basic, logic/function/basic): involute ite (#4074) Some lemmas about `ite`: - `(d)ite_not`: exchanges the branches of an `(d)ite` when negating the given prop. - `involutive.ite_not`: applying an involutive function to an `ite` negates the prop Other changes: Generalize the arguments for `(d)ite_apply` and `apply_(d)ite(2)` to `Sort*` over `Type*`. ESTIMATED CHANGES Modified src/logic/basic.lean +/- theorem apply_dite2 +/- theorem apply_dite +/- theorem apply_ite2 +/- theorem apply_ite +/- theorem dite_apply + theorem dite_not +/- theorem ite_apply + theorem ite_not Modified src/logic/function/basic.lean 2020-09-11 15:53:09 832acd6 feat(data/{sym2,sym}) decidable version of sym2.mem.other, filling out some of sym API (#4008) Removes `sym2.vmem` and replaces it with `sym2.mem.other'`, which can get the other element of a pair in the presence of decidable equality. Writing `sym2.mem.other'` was beyond my abilities when I created `sym2.vmem`, and seeing that vmem is extremely specialized and has no immediate use, it's probably best to remove it. Adds some assorted simp lemmas, and also an additional lemma that `sym2.mem.other` is, in some sense, an involution. Adds to the API for `sym`. This is from taking some of the interface for multisets. (I was exploring whether `sym2 α` should be re-implemented as `sym α 2` and trying to add enough to `sym` to pull it off, but it doesn't seem to be worth it in the end.) (I'm not committing a recursor for `sym α n`, which lets you represent elements by vectors of length `n`. It needs some cleanup.) ESTIMATED CHANGES Modified src/data/sym.lean + def sym.cons' + def sym.cons + theorem sym.cons_equiv_eq_equiv_cons + theorem sym.cons_inj_left + theorem sym.cons_inj_right + theorem sym.cons_of_coe_eq + theorem sym.cons_swap + def sym.mem + theorem sym.mem_cons + theorem sym.mem_cons_of_mem + theorem sym.mem_cons_self + def sym.nil + def sym.of_vector + theorem sym.sound +/- def sym.sym' +/- def sym.sym_equiv_sym' +/- def sym +/- def vector.perm.is_setoid Modified src/data/sym2.lean + theorem sym2.congr_left +/- theorem sym2.congr_right + theorem sym2.diag_is_diag + theorem sym2.map_pair_eq + def sym2.mem.other' + theorem sym2.mem_from_rel_irrefl_other_ne + theorem sym2.mem_other_mem' + theorem sym2.mem_other_mem + theorem sym2.mem_other_ne + theorem sym2.mem_other_spec' +/- theorem sym2.mem_other_spec - def sym2.mk_has_vmem + theorem sym2.other_eq_other' + theorem sym2.other_invol' + theorem sym2.other_invol - theorem sym2.other_is_mem_other + theorem sym2.sym2_ext - def sym2.vmem.other - def sym2.vmem - theorem sym2.vmem_other_spec 2020-09-11 14:46:51 7886c27 feat(category_theory/monoidal): lax monoidal functors take monoids to monoids (#4108) ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/internal.lean + theorem Mon_.mul_one_hom + theorem Mon_.one_mul_hom + def Mon_.trivial + def category_theory.lax_monoidal_functor.map_Mon 2020-09-11 14:46:48 bd74baa feat(algebra/homology/exact): lemmas about exactness (#4106) These are a few lemmas on the way to showing how `exact` changes under isomorphisms applied to the objects. It's not everthing one might want; I'm salvaging this from an old branch and unlikely to do more in the near future, but hopefully this is mergeable progress as is. ESTIMATED CHANGES Modified src/algebra/homology/exact.lean + theorem category_theory.exact.w_assoc + theorem category_theory.exact_of_zero Modified src/algebra/homology/image_to_kernel_map.lean + theorem category_theory.image_to_kernel_map_comp_iso + theorem category_theory.image_to_kernel_map_iso_comp Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.image.factor_thru_image_pre_comp Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.coequalizer_as_cokernel + theorem category_theory.limits.equalizer_as_kernel 2020-09-11 14:46:45 233a802 feat(algebraic_geometry/Scheme): Spec as Scheme (#4104) ```lean def Spec (R : CommRing) : Scheme ``` ESTIMATED CHANGES Modified src/algebraic_geometry/Scheme.lean + def algebraic_geometry.Scheme.Spec Modified src/algebraic_geometry/Spec.lean + def algebraic_geometry.Spec.LocallyRingedSpace Modified src/algebraic_geometry/presheafed_space.lean + def algebraic_geometry.PresheafedSpace.of_restrict + def algebraic_geometry.PresheafedSpace.restrict_top_iso + def algebraic_geometry.PresheafedSpace.to_restrict_top Modified src/topology/category/Top/opens.lean + def is_open_map.adjunction 2020-09-11 14:46:44 34e0f31 feat(nnreal): absolute value (#4098) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem real.nnreal.norm_eq Modified src/data/real/nnreal.lean + theorem nnreal.abs_eq + theorem nnreal.coe_nnabs + def real.nnabs 2020-09-11 13:30:01 842a324 feat(category_theory): the Grothendieck construction (#3896) Given a functor `F : C ⥤ Cat`, the objects of `grothendieck F` consist of dependent pairs `(b, f)`, where `b : C` and `f : F.obj c`, and a morphism `(b, f) ⟶ (b', f')` is a pair `β : b ⟶ b'` in `C`, and `φ : (F.map β).obj f ⟶ f'`. (This is only a special case of the real thing: we should treat `Cat` as a 2-category and allow `F` to be a 2-functor / pseudofunctor.) ESTIMATED CHANGES Modified src/category_theory/category/Cat.lean + def category_theory.Type_to_Cat Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/eq_to_hom.lean +/- theorem category_theory.eq_to_hom_op +/- theorem category_theory.eq_to_iso_refl + theorem category_theory.inv_eq_to_hom Added src/category_theory/grothendieck.lean + def category_theory.grothendieck.comp + theorem category_theory.grothendieck.ext + def category_theory.grothendieck.forget + def category_theory.grothendieck.grothendieck_Type_to_Cat + structure category_theory.grothendieck.hom + def category_theory.grothendieck.id + structure category_theory.grothendieck Modified src/category_theory/isomorphism.lean + theorem category_theory.is_iso.comp_inv_eq + theorem category_theory.is_iso.comp_is_iso_eq + theorem category_theory.is_iso.eq_inv_comp + theorem category_theory.is_iso.inv_comp_eq 2020-09-11 11:35:29 0c57b2d doc(category_theory): add doc-strings and links to the stacks project (#4107) We'd been discussing adding a `@[stacks "007B"]` tag to add cross-references to the stacks project (and possibly include links back again -- they say they're keen). I'm not certain that we actually have the documentation maintenance enthusiasm to make this viable, so this PR is a more lightweight solution: adding lots of links to the stacks project from doc-strings. I'd be very happy to switch back to the attribute approach later. This is pretty close to exhaustive for the "category theory preliminaries" chapter of the stacks project, but doesn't attempt to go beyond that. I've only included links where we formalise all, or almost all (in which case I've usually left a note), of the corresponding tag. ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/default.lean Modified src/category_theory/connected.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/filtered.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/fubini.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/constructions/over/connected.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/monoidal/braided.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/opposites.lean Modified src/category_theory/over.lean Modified src/category_theory/products/basic.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/types.lean Modified src/category_theory/yoneda.lean +/- def category_theory.yoneda Modified src/topology/sheaves/forget.lean 2020-09-11 11:35:27 3965e06 chore(*): use new `extends_priority` default of 100, part 2 (#4101) This completes the changes started in #4066. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/category/NonemptyFinLinOrd.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/directed.lean Modified src/order/lattice.lean Modified src/order/omega_complete_partial_order.lean Modified src/order/rel_classes.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/discrete_valuation_ring.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/tactic/lint/type_classes.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/ring.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/premetric_space.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified test/simps.lean 2020-09-11 11:35:25 bc78621 feat(geometry/euclidean/monge_point): reflection of circumcenter (#4062) Show that the distance from the orthocenter of a triangle to the reflection of the circumcenter in a side equals the circumradius (a key fact for proving various standard properties of orthocentric systems). ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean + theorem affine.simplex.reflection_circumcenter_eq_affine_combination_of_points_with_circumcenter + def affine.simplex.reflection_circumcenter_weights_with_circumcenter + theorem affine.simplex.sum_reflection_circumcenter_weights_with_circumcenter Modified src/geometry/euclidean/monge_point.lean + theorem affine.triangle.dist_orthocenter_reflection_circumcenter + theorem affine.triangle.dist_orthocenter_reflection_circumcenter_finset 2020-09-11 11:35:23 4ce27a5 feat(category_theory/limits): filtered colimits commute with finite limits (in Type) (#4046) ESTIMATED CHANGES Modified src/algebra/category/Algebra/limits.lean Modified src/category_theory/filtered.lean +/- def category_theory.is_filtered.sup - theorem category_theory.is_filtered.sup_exists' +/- theorem category_theory.is_filtered.sup_exists +/- def category_theory.is_filtered.to_sup +/- theorem category_theory.is_filtered.to_sup_commutes Added src/category_theory/limits/colimit_limit.lean + def category_theory.limits.colimit_limit_to_limit_colimit + theorem category_theory.limits.map_id_left_eq_curry_map + theorem category_theory.limits.map_id_right_eq_curry_swap_map + theorem category_theory.limits.ι_colimit_limit_to_limit_colimit_π + theorem category_theory.limits.ι_colimit_limit_to_limit_colimit_π_apply Added src/category_theory/limits/filtered_colimit_commutes_finite_limit.lean + theorem category_theory.limits.colimit_limit_to_limit_colimit_injective + theorem category_theory.limits.colimit_limit_to_limit_colimit_surjective Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.w +/- theorem category_theory.limits.limit.w Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.colimit_sound' + def category_theory.limits.types.limit.mk + theorem category_theory.limits.types.limit.π_mk Modified src/category_theory/types.lean + def category_theory.is_iso_equiv_bijective 2020-09-11 06:18:46 80a9e4f refactor(data/mv_polynomial/pderivative): make pderivative a linear map (#4095) Make `pderivative i` a linear map as suggested at https://github.com/leanprover-community/mathlib/pull/4083#issuecomment-689712833 ESTIMATED CHANGES Modified src/data/mv_polynomial/pderivative.lean - def mv_polynomial.pderivative.add_monoid_hom - theorem mv_polynomial.pderivative.add_monoid_hom_apply +/- def mv_polynomial.pderivative - theorem mv_polynomial.pderivative_add - theorem mv_polynomial.pderivative_zero 2020-09-11 00:47:31 9a24f68 chore(scripts): update nolints.txt (#4105) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-10 18:33:51 7d88b31 feat(ring_theory/algebra_operations): add le_div_iff_mul_le (#4102) ESTIMATED CHANGES Modified src/ring_theory/algebra_operations.lean + theorem submodule.le_div_iff_mul_le 2020-09-10 16:46:37 e33a777 feat(data/fin): iffs about succ_above ordering (#4092) New lemmas: `succ_above_lt_iff` `lt_succ_above_iff` These help avoid needing to do case analysis when faced with inequalities about `succ_above`. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.lt_succ_above_iff + theorem fin.succ_above_lt_iff 2020-09-10 14:56:55 38d1715 chore(*): update to Lean 3.20.0c, account for nat.pow removal from core (#3985) Outline: * `nat.pow` has been removed from the core library. We now use the instance `monoid.pow` to provide `has_pow ℕ ℕ`. * To accomodate this, `algebra.group_power` has been split into a directory. `algebra.group_power.basic` contains the definitions of `monoid.pow` and `nsmul` and whatever lemmas can be stated with very few imports. It is imported in `data.nat.basic`. The rest of `algebra.group_power` has moved to `algebra.group_power.lemmas`. * The new `has_pow ℕ ℕ` now satisfies a different definitional equality: `a^(n+1) = a * a^n` (rather than `a^(n+1) = a^n * a`). As a temporary measure, the lemma `nat.pow_succ` provides the old equality but I plan to deprecate it in favor of the more general `pow_succ'`. The lemma `nat.pow_eq_pow` is gone--the two sides are now the same in all respects so it can be deleted wherever it was used. * The lemmas from core that mention `nat.pow` have been moved into `data.nat.lemmas` and their proofs adjusted as needed to take into account the new definition. * The module `data.bitvec` from core has moved to `data.bitvec.core` in mathlib. Future plans: * Remove `nat.` lemmas redundant with general `group_power` ones, like `nat.pow_add`. This will be easier after further shuffling of modules. ESTIMATED CHANGES Modified leanpkg.toml Added src/algebra/group_power/basic.lean + theorem add_nsmul + theorem commute.pow_left + theorem commute.pow_pow + theorem commute.pow_pow_self + theorem commute.pow_right + theorem commute.pow_self + theorem commute.self_pow + def gpow + def gsmul + def monoid.pow + def nsmul + theorem nsmul_add_comm' + theorem pow_add + theorem pow_mul_comm' + theorem pow_succ' + theorem pow_succ + theorem pow_two + theorem pow_zero + theorem semiconj_by.pow_right + theorem succ_nsmul' + theorem succ_nsmul + theorem two_nsmul + theorem zero_nsmul Added src/algebra/group_power/default.lean Renamed src/algebra/group_power.lean to src/algebra/group_power/lemmas.lean - theorem add_nsmul - theorem commute.pow_left - theorem commute.pow_pow - theorem commute.pow_pow_self - theorem commute.pow_right - theorem commute.pow_self - theorem commute.self_pow - def gpow - def gsmul - def monoid.pow - theorem nat.pow_eq_pow - def nsmul - theorem nsmul_add_comm' - theorem pow_add - theorem pow_mul_comm' - theorem pow_succ' - theorem pow_succ - theorem pow_two - theorem pow_zero - theorem semiconj_by.pow_right - theorem succ_nsmul' - theorem succ_nsmul - theorem two_nsmul - theorem zero_nsmul Modified src/analysis/specific_limits.lean Modified src/data/bitvec/basic.lean Added src/data/bitvec/core.lean + def bitvec.adc + def bitvec.add_lsb + def bitvec.and + def bitvec.append + def bitvec.bits_to_nat + theorem bitvec.bits_to_nat_to_bool + theorem bitvec.bits_to_nat_to_list + def bitvec.fill_shr + def bitvec.not + theorem bitvec.of_nat_succ + def bitvec.or + def bitvec.sbb + def bitvec.sborrow + def bitvec.sge + def bitvec.sgt + def bitvec.shl + def bitvec.sle + def bitvec.slt + def bitvec.sshr + theorem bitvec.to_nat_append + theorem bitvec.to_nat_of_nat + def bitvec.uborrow + def bitvec.uge + def bitvec.ugt + def bitvec.ule + def bitvec.ult + def bitvec.ushr + def bitvec.xor + def bitvec Modified src/data/fintype/card.lean Modified src/data/nat/basic.lean + theorem nat.mod_pow_succ +/- theorem nat.one_pow + theorem nat.one_shiftl + theorem nat.pos_pow_of_pos + theorem nat.pow_le_pow_of_le_left + theorem nat.pow_le_pow_of_le_right + theorem nat.pow_lt_pow_of_lt_left + theorem nat.pow_lt_pow_of_lt_right + theorem nat.pow_one +/- theorem nat.pow_right_injective +/- theorem nat.pow_right_strict_mono + theorem nat.pow_succ +/- theorem nat.pow_two + theorem nat.pow_zero + theorem nat.shiftl'_tt_eq_mul_pow + theorem nat.shiftl_eq_mul_pow + theorem nat.shiftr_eq_div_pow + theorem nat.zero_pow + theorem nat.zero_shiftl + theorem nat.zero_shiftr Modified src/data/nat/gcd.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/prime.lean Modified src/data/num/bitwise.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/ring_homs.lean +/- theorem padic_int.lim_nth_hom_add +/- theorem padic_int.lim_nth_hom_mul Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/field_theory/separable.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/primorial.lean Modified src/ring_theory/multiplicity.lean Modified src/tactic/norm_num.lean - theorem norm_num.from_nat_pow Modified src/tactic/ring.lean Modified src/tactic/ring_exp.lean Modified test/localized/localized.lean 2020-09-10 13:02:29 d5be9f3 refactor(data/mv_polynomial): move `smul` lemmas into basic.lean (#4097) `C_mul'`, `smul_eq_C_mul` and `smul_eval` seemed a bit out of place in `comm_ring.lean`, since they only need `comm_semiring α`. So I moved them to `basic.lean` where they probably fit in a bit better? I've also golfed the proof of `smul_eq_C_mul`. ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.C_mul' + theorem mv_polynomial.smul_eq_C_mul + theorem mv_polynomial.smul_eval Modified src/data/mv_polynomial/comm_ring.lean - theorem mv_polynomial.C_mul' - theorem mv_polynomial.smul_eq_C_mul - theorem mv_polynomial.smul_eval 2020-09-10 13:02:28 19b9ae6 feat(data/mv_polynomial): a few facts about `constant_coeff` and `aeval` (#4085) A few additional facts about `constant_coeff_map` and `aeval` from the witt vector branch. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/data/mv_polynomial/basic.lean + theorem mv_polynomial.aeval_eq_zero + theorem mv_polynomial.constant_coeff_comp_map + theorem mv_polynomial.constant_coeff_map + theorem mv_polynomial.eval₂_hom_eq_zero 2020-09-10 13:02:25 d857def feat(slim_check): make `shrink` recursive (#4038) Make example shrinking recursive to make it faster and more reliable. It now acts more like a binary search and less like a linear search. ESTIMATED CHANGES Renamed src/data/lazy_list2.lean to src/data/lazy_list/basic.lean + theorem lazy_list.append_assoc + theorem lazy_list.append_bind + theorem lazy_list.append_nil + def lazy_list.find + def lazy_list.mfirst + def lazy_list.reverse Modified src/data/pnat/basic.lean + def pnat.nat_pred Modified src/tactic/interactive.lean Modified src/testing/slim_check/sampleable.lean - def slim_check.int.shrink' - def slim_check.int.shrink + def slim_check.iterate_shrink - def slim_check.lazy_list.lseq + theorem slim_check.list.one_le_sizeof - def slim_check.list.shrink' + def slim_check.list.shrink_one + def slim_check.list.shrink_removes +/- def slim_check.list.shrink_with + theorem slim_check.list.sizeof_append_lt_left + theorem slim_check.list.sizeof_cons_lt_left + theorem slim_check.list.sizeof_cons_lt_right + theorem slim_check.list.sizeof_drop_lt_sizeof_of_lt_length +/- def slim_check.nat.shrink' +/- def slim_check.nat.shrink + def slim_check.no_shrink.get + def slim_check.no_shrink.mk + def slim_check.no_shrink + def slim_check.prod.shrink + def slim_check.rec_shrink +/- def slim_check.sampleable.lift + def slim_check.shrink_fn + def slim_check.sizeof_lt +/- def slim_check.sum.shrink + theorem slim_check.tree.one_le_sizeof +/- def slim_check.tree.shrink_with Modified src/testing/slim_check/testable.lean +/- def slim_check.minimize + def slim_check.minimize_aux 2020-09-10 11:22:25 55cab6c feat(data/{int,nat}/cast): dvd cast lemmas (#4086) ESTIMATED CHANGES Modified src/data/int/cast.lean + theorem int.coe_int_dvd Modified src/data/nat/cast.lean + theorem nat.coe_nat_dvd 2020-09-10 08:56:58 49bb92d feat(ring_theory/dedekind_domain): definitions (#4000) Defines `is_dedekind_domain` in three variants: 1. `is_dedekind_domain`: Noetherian, Integrally closed, Krull dimension 1, thanks to @Vierkantor 2. `is_dedekind_domain_dvr`: Noetherian, localization at every nonzero prime is a DVR 3. `is_dedekind_domain_inv`: Every nonzero ideal is invertible. TODO: prove that these definitions are equivalent. This PR also includes some misc. lemmas required to show the definitions are independent of choice of fraction field. Co-Authored-By: mushokunosora Co-Authored-By: faenuccio Co-Authored-By: Vierkantor ESTIMATED CHANGES Modified docs/references.bib Modified src/ring_theory/algebra.lean +/- theorem alg_equiv.bijective +/- theorem alg_equiv.coe_alg_hom +/- theorem alg_equiv.coe_ring_equiv +/- theorem alg_equiv.commutes +/- theorem alg_equiv.injective +/- theorem alg_equiv.map_add +/- theorem alg_equiv.map_mul +/- theorem alg_equiv.map_one +/- theorem alg_equiv.map_sum +/- theorem alg_equiv.map_zero +/- theorem alg_equiv.surjective + def alg_equiv.to_alg_hom + theorem alg_equiv.to_alg_hom_eq_coe + theorem alg_equiv.to_alg_hom_to_linear_map + theorem alg_equiv.to_linear_equiv_inj + theorem alg_equiv.to_linear_equiv_to_linear_map + def alg_equiv.to_linear_map + theorem alg_equiv.to_linear_map_apply + theorem alg_equiv.to_linear_map_inj + theorem alg_equiv.trans_to_linear_map + theorem subalgebra.mem_map Modified src/ring_theory/algebra_operations.lean + theorem submodule.map_div Added src/ring_theory/dedekind_domain.lean + structure is_dedekind_domain_dvr + theorem is_dedekind_domain_iff + structure is_dedekind_domain_inv + theorem is_dedekind_domain_inv_iff + theorem ring.dimension_le_one.integral_closure + theorem ring.dimension_le_one.principal_ideal_ring + def ring.dimension_le_one Modified src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.coe_mk + theorem ring.fractional_ideal.div_zero + theorem ring.fractional_ideal.exists_ne_zero_mem_is_integer + theorem ring.fractional_ideal.inv_eq + theorem ring.fractional_ideal.inv_zero +/- theorem ring.fractional_ideal.map_add + theorem ring.fractional_ideal.map_coe_ideal +/- theorem ring.fractional_ideal.map_comp + theorem ring.fractional_ideal.map_div + theorem ring.fractional_ideal.map_eq_zero_iff +/- theorem ring.fractional_ideal.map_equiv_apply +/- theorem ring.fractional_ideal.map_id + theorem ring.fractional_ideal.map_inv + theorem ring.fractional_ideal.map_map_symm +/- theorem ring.fractional_ideal.map_mul + theorem ring.fractional_ideal.map_ne_zero + theorem ring.fractional_ideal.map_one + theorem ring.fractional_ideal.map_symm_map + theorem ring.fractional_ideal.map_zero + theorem ring.fractional_ideal.mem_map Modified src/ring_theory/ideal/basic.lean + theorem ideal.bot_lt_of_maximal + theorem ring.exists_not_is_unit_of_not_is_field + theorem ring.not_is_field_iff_exists_ideal_bot_lt_and_lt_top + theorem ring.not_is_field_iff_exists_prime + theorem ring.not_is_field_of_subsingleton Modified src/ring_theory/ideal/operations.lean + theorem ideal.span_mul_span' + theorem ideal.span_singleton_mul_span_singleton Modified src/ring_theory/integral_closure.lean + theorem integral_closure_map_alg_equiv Modified src/ring_theory/localization.lean + def fraction_ring.of + theorem localization.alg_equiv_of_quotient_apply + theorem localization.alg_equiv_of_quotient_symm_apply - def of 2020-09-10 07:43:56 8e9b1f0 feat(linear_algebra): add `restrict` for endomorphisms (#4053) Add a `restrict` function for endomorphisms. Add some lemmas about the new function, including one about generalized eigenspaces. Add some additional lemmas about `linear_map.comp` that I do not use in the final proof, but still consider useful. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.add_comp + theorem linear_map.comp_add + theorem linear_map.comp_neg + theorem linear_map.comp_sub + def linear_map.restrict + theorem linear_map.restrict_apply + theorem linear_map.restrict_eq_cod_restrict_dom_restrict + theorem linear_map.restrict_eq_dom_restrict_cod_restrict + theorem linear_map.sub_comp + theorem linear_map.subtype_comp_restrict Modified src/linear_algebra/eigenspace.lean + theorem module.End.generalized_eigenspace_restrict 2020-09-10 05:42:47 47264da feat(linear_algebra): tiny missing pieces (#4089) From the sphere eversion project. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + def linear_map.applyₗ Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.equiv_fin + theorem finite_dimensional.fin_basis 2020-09-10 01:34:24 9f55ed7 feat(data/polynomial/ring_division): make `polynomial.roots` a multiset (#4061) The original definition of `polynomial.roots` was basically "while ∃ x, p.is_root x { finset.insert x polynomial.roots }", so it was not too hard to replace this with `multiset.cons`. I tried to refactor most usages of `polynomial.roots` to talk about the multiset instead of coercing it to a finset, since that should give a bit more power to the results. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.count_roots - theorem polynomial.exists_finset_roots + theorem polynomial.exists_multiset_roots +/- def polynomial.nth_roots + theorem polynomial.root_multiplicity_X_sub_C + theorem polynomial.root_multiplicity_X_sub_C_self + theorem polynomial.root_multiplicity_eq_zero + theorem polynomial.root_multiplicity_mul + theorem polynomial.root_multiplicity_pos + theorem polynomial.root_multiplicity_zero +/- theorem polynomial.roots_C +/- theorem polynomial.roots_X_sub_C +/- theorem polynomial.roots_mul +/- theorem polynomial.roots_zero Modified src/field_theory/finite.lean Modified src/field_theory/normal.lean Modified src/field_theory/separable.lean + theorem polynomial.count_roots_le_one - theorem polynomial.degree_separable_eq_card_roots - theorem polynomial.eq_prod_roots_of_separable + theorem polynomial.multiplicity_le_one_of_seperable - theorem polynomial.nat_degree_separable_eq_card_roots + theorem polynomial.nodup_roots + theorem polynomial.root_multiplicity_le_one_of_seperable Modified src/field_theory/splitting_field.lean + theorem polynomial.degree_eq_card_roots + theorem polynomial.eq_prod_roots_of_splits + theorem polynomial.nat_degree_eq_card_roots + theorem polynomial.nat_degree_multiset_prod Modified src/linear_algebra/lagrange.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/multiplicity.lean + theorem multiplicity.dvd_iff_multiplicity_pos 2020-09-09 23:56:32 660a6c4 feat(topology): misc topological lemmas (#4091) From the sphere eversion project. ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.is_countably_generated.inf + theorem filter.is_countably_generated.inf_principal + theorem filter.is_countably_generated_principal Modified src/order/filter/basic.lean + theorem filter.diff_mem_inf_principal_compl Modified src/topology/bases.lean + def topological_space.dense_seq + theorem topological_space.dense_seq_dense + theorem topological_space.exists_dense_seq + theorem topological_space.is_countably_generated_nhds + theorem topological_space.is_countably_generated_nhds_within Modified src/topology/continuous_on.lean + theorem diff_mem_nhds_within_compl 2020-09-09 23:56:30 9da39cf feat(ordered_field): missing inequality lemmas (#4090) From the sphere eversion project. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem inv_mul_le_iff' + theorem inv_mul_le_iff + theorem inv_mul_lt_iff' + theorem inv_mul_lt_iff + theorem mul_inv_le_iff' + theorem mul_inv_le_iff + theorem mul_inv_lt_iff' + theorem mul_inv_lt_iff 2020-09-09 22:00:53 0967f84 doc(*): add some docstrings (#4073) ESTIMATED CHANGES Modified src/data/nat/parity.lean Modified src/logic/basic.lean 2020-09-09 16:00:30 44d356c feat(tactic/explode): correctly indent long statements (#4084) `#explode` didn't indent long statements in the proof, such as in this lemma: ```lean import tactic.explode variables (p q r : ℕ → Prop) lemma ex (h : ∃ x, ∀ y, ∃ z, p x ∧ q y ∧ r z) : ∃ z, ∀ y, ∃ x, p x ∧ q y ∧ r z := Exists.rec_on h $ λ x h', Exists.rec_on (h' 0) $ λ z h'', ⟨z, λ y, Exists.rec_on (h' y) $ λ w h''', ⟨x, h''.1, h'''.2.1, h''.2.2⟩⟩ #explode ex ``` ESTIMATED CHANGES Modified src/tactic/explode.lean 2020-09-09 16:00:28 11e62b0 fix(data/mv_polynomial/pderivative): rename variables and file, make it universe polymorphic (#4083) This file originally used different variable names to the rest of `mv_polynomial`. I've changed it to now use the same conventions as the other files. I also renamed the file to `pderivative.lean` to be consistent with `derivative.lean` for polynomials. The types of the coefficient ring and the indexing variables are now universe polymorphic. The diff shows it as new files, but the only changes are fixing the statements and proofs. ESTIMATED CHANGES Deleted src/data/mv_polynomial/pderiv.lean - def mv_polynomial.pderivative.add_monoid_hom - theorem mv_polynomial.pderivative.add_monoid_hom_apply - def mv_polynomial.pderivative - theorem mv_polynomial.pderivative_C - theorem mv_polynomial.pderivative_C_mul - theorem mv_polynomial.pderivative_add - theorem mv_polynomial.pderivative_eq_zero_of_not_mem_vars - theorem mv_polynomial.pderivative_monomial - theorem mv_polynomial.pderivative_monomial_mul - theorem mv_polynomial.pderivative_monomial_single - theorem mv_polynomial.pderivative_mul - theorem mv_polynomial.pderivative_zero Added src/data/mv_polynomial/pderivative.lean + def mv_polynomial.pderivative.add_monoid_hom + theorem mv_polynomial.pderivative.add_monoid_hom_apply + def mv_polynomial.pderivative + theorem mv_polynomial.pderivative_C + theorem mv_polynomial.pderivative_C_mul + theorem mv_polynomial.pderivative_add + theorem mv_polynomial.pderivative_eq_zero_of_not_mem_vars + theorem mv_polynomial.pderivative_monomial + theorem mv_polynomial.pderivative_monomial_mul + theorem mv_polynomial.pderivative_monomial_single + theorem mv_polynomial.pderivative_mul + theorem mv_polynomial.pderivative_zero 2020-09-09 14:54:02 98061d1 fix(tactic/linarith): treat powers like multiplication (#4082) `ring` understands that natural number exponents are repeated multiplication, so it's safe for `linarith` to do the same. This is unlikely to affect anything except `nlinarith` calls, which are now slightly more powerful. ESTIMATED CHANGES Modified src/tactic/linarith/parsing.lean Modified test/linarith.lean 2020-09-09 13:02:22 d6e7ee0 doc(ring_theory/localization): fix docstring typo (#4081) ESTIMATED CHANGES Modified src/ring_theory/localization.lean 2020-09-09 13:02:19 297a14e feat(linear_algebra/affine_space): more lemmas (#4055) Add some more lemmas about affine spaces. One, `affine_span_insert_affine_span`, is extracted from the proof of `exists_unique_dist_eq_of_affine_independent` as it turned out to be useful elsewhere. ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean Modified src/linear_algebra/affine_space/basic.lean + theorem affine_span_insert_affine_span + theorem affine_span_insert_eq_affine_span + theorem affine_span_mono + theorem subset_affine_span Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent_def + theorem affine_independent_iff_of_fintype + theorem affine_independent_of_affine_independent_set_of_injective + theorem affine_independent_of_subset_affine_independent 2020-09-09 13:02:17 40de35a feat(order/conditionally_complete_lattice, topology/algebra/ordered): inherited order properties for `ord_connected` subset (#3991) If `α` is `densely_ordered`, then so is the subtype `s`, for any `ord_connected` subset `s` of `α`. Same result for `order_topology`. Same result for `conditionally_complete_linear_order`, under the hypothesis `inhabited s`. ESTIMATED CHANGES Modified src/data/set/intervals/ord_connected.lean Modified src/order/basic.lean + theorem strict_mono_coe Modified src/order/conditionally_complete_lattice.lean + theorem Inf_within_of_ord_connected + theorem Sup_within_of_ord_connected + theorem monotone.cInf_image_le + theorem monotone.cSup_image_le + theorem monotone.le_cInf_image + theorem monotone.le_cSup_image + theorem subset_Inf_def + theorem subset_Inf_of_within + theorem subset_Sup_def + theorem subset_Sup_of_within Modified src/topology/algebra/ordered.lean 2020-09-09 11:11:47 2ab31f9 chore(*): use new `extends_priority` default of 100 (#4066) This is the first of (most likely) two PRs which remove the use of `set_option default_priority 100` in favor of per-instance priority attributes, taking advantage of Lean 3.19c's new default priority of 100 on instances produced by `extends`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Modified src/algebra/char_p.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/gcd_monoid.lean Modified src/algebra/group/defs.lean Modified src/algebra/group_ring_action.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/module/basic.lean Modified src/algebra/module/ordered.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring/basic.lean Modified src/analysis/normed_space/add_torsor.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/category/default.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/connected.lean Modified src/category_theory/filtered.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monoidal/braided.lean Modified src/computability/primrec.lean Modified src/control/basic.lean Modified src/control/bitraversable/basic.lean Modified src/control/lawful_fix.lean Modified src/control/monad/cont.lean Modified src/control/traversable/basic.lean Modified src/data/complex/is_R_or_C.lean Modified src/data/equiv/denumerable.lean Modified src/deprecated/group.lean Modified src/deprecated/subgroup.lean Modified src/deprecated/subring.lean Modified src/field_theory/subfield.lean Modified src/geometry/algebra/lie_group.lean Modified src/geometry/euclidean/monge_point.lean Modified src/group_theory/group_action.lean Modified src/linear_algebra/linear_action.lean Modified src/logic/nontrivial.lean 2020-09-09 08:45:23 77c8415 refactor(data/mv_polynomial): split into multiple files (#4070) `mv_polynomial.lean` was getting massive and hard to explore. This breaks it into (somewhat arbitrary) pieces. While `basic.lean` is still fairly long, there are a lot of basics about multivariate polynomials, and I think it's reasonable. ESTIMATED CHANGES Deleted src/data/mv_polynomial.lean - def mv_polynomial.C - theorem mv_polynomial.C_0 - theorem mv_polynomial.C_1 - theorem mv_polynomial.C_add - theorem mv_polynomial.C_eq_coe_nat - theorem mv_polynomial.C_inj - theorem mv_polynomial.C_injective - theorem mv_polynomial.C_mul' - theorem mv_polynomial.C_mul - theorem mv_polynomial.C_mul_monomial - theorem mv_polynomial.C_neg - theorem mv_polynomial.C_pow - theorem mv_polynomial.C_sub - def mv_polynomial.X - theorem mv_polynomial.X_pow_eq_single - def mv_polynomial.aeval - theorem mv_polynomial.aeval_C - theorem mv_polynomial.aeval_X - theorem mv_polynomial.aeval_def - theorem mv_polynomial.aeval_eq_constant_coeff_of_vars - theorem mv_polynomial.aeval_eq_eval₂_hom - theorem mv_polynomial.aeval_monomial - theorem mv_polynomial.aeval_zero' - theorem mv_polynomial.aeval_zero - theorem mv_polynomial.alg_hom_C - theorem mv_polynomial.alg_hom_ext - theorem mv_polynomial.algebra_map_eq - theorem mv_polynomial.as_sum - theorem mv_polynomial.coe_eval₂_hom - def mv_polynomial.coeff - theorem mv_polynomial.coeff_C - theorem mv_polynomial.coeff_C_mul - theorem mv_polynomial.coeff_X' - theorem mv_polynomial.coeff_X - theorem mv_polynomial.coeff_X_pow - theorem mv_polynomial.coeff_add - def mv_polynomial.coeff_coe_to_fun - theorem mv_polynomial.coeff_eq_zero_of_total_degree_lt - theorem mv_polynomial.coeff_map - theorem mv_polynomial.coeff_monomial - theorem mv_polynomial.coeff_mul - theorem mv_polynomial.coeff_mul_X' - theorem mv_polynomial.coeff_mul_X - theorem mv_polynomial.coeff_neg - theorem mv_polynomial.coeff_sub - theorem mv_polynomial.coeff_sum - theorem mv_polynomial.coeff_zero - theorem mv_polynomial.coeff_zero_X - theorem mv_polynomial.comp_aeval - theorem mv_polynomial.comp_eval₂_hom - def mv_polynomial.constant_coeff - theorem mv_polynomial.constant_coeff_C - theorem mv_polynomial.constant_coeff_X - theorem mv_polynomial.constant_coeff_eq - theorem mv_polynomial.constant_coeff_monomial - def mv_polynomial.degree_of - def mv_polynomial.degrees - theorem mv_polynomial.degrees_C - theorem mv_polynomial.degrees_X - theorem mv_polynomial.degrees_add - theorem mv_polynomial.degrees_add_of_disjoint - theorem mv_polynomial.degrees_map - theorem mv_polynomial.degrees_map_of_injective - theorem mv_polynomial.degrees_monomial - theorem mv_polynomial.degrees_monomial_eq - theorem mv_polynomial.degrees_mul - theorem mv_polynomial.degrees_neg - theorem mv_polynomial.degrees_one - theorem mv_polynomial.degrees_pow - theorem mv_polynomial.degrees_prod - theorem mv_polynomial.degrees_sub - theorem mv_polynomial.degrees_sum - theorem mv_polynomial.degrees_zero - theorem mv_polynomial.eq_zero_iff - def mv_polynomial.eval - theorem mv_polynomial.eval_C - theorem mv_polynomial.eval_X - theorem mv_polynomial.eval_assoc - theorem mv_polynomial.eval_eq' - theorem mv_polynomial.eval_eq - theorem mv_polynomial.eval_map - theorem mv_polynomial.eval_monomial - theorem mv_polynomial.eval_prod - theorem mv_polynomial.eval_rename_prodmk - theorem mv_polynomial.eval_sum - theorem mv_polynomial.eval_unique - def mv_polynomial.eval₂ - theorem mv_polynomial.eval₂_C - theorem mv_polynomial.eval₂_X - theorem mv_polynomial.eval₂_add - theorem mv_polynomial.eval₂_assoc - theorem mv_polynomial.eval₂_cast_comp - theorem mv_polynomial.eval₂_comp_left - theorem mv_polynomial.eval₂_comp_right - theorem mv_polynomial.eval₂_congr - theorem mv_polynomial.eval₂_eq' - theorem mv_polynomial.eval₂_eq - theorem mv_polynomial.eval₂_eq_eval_map - theorem mv_polynomial.eval₂_eta - def mv_polynomial.eval₂_hom - theorem mv_polynomial.eval₂_hom_C - theorem mv_polynomial.eval₂_hom_X' - theorem mv_polynomial.eval₂_hom_X - theorem mv_polynomial.eval₂_hom_congr - theorem mv_polynomial.eval₂_hom_eq_constant_coeff_of_vars - theorem mv_polynomial.eval₂_hom_map_hom - theorem mv_polynomial.eval₂_hom_monomial - theorem mv_polynomial.eval₂_hom_rename - theorem mv_polynomial.eval₂_map - theorem mv_polynomial.eval₂_monomial - theorem mv_polynomial.eval₂_mul - theorem mv_polynomial.eval₂_mul_monomial - theorem mv_polynomial.eval₂_neg - theorem mv_polynomial.eval₂_one - theorem mv_polynomial.eval₂_pow - theorem mv_polynomial.eval₂_prod - theorem mv_polynomial.eval₂_rename - theorem mv_polynomial.eval₂_rename_prodmk - theorem mv_polynomial.eval₂_sub - theorem mv_polynomial.eval₂_sum - theorem mv_polynomial.eval₂_zero - theorem mv_polynomial.exists_coeff_ne_zero - theorem mv_polynomial.exists_degree_lt - theorem mv_polynomial.exists_fin_rename - theorem mv_polynomial.exists_finset_rename - theorem mv_polynomial.ext - theorem mv_polynomial.ext_iff - def mv_polynomial.fin_succ_equiv - theorem mv_polynomial.hom_C - theorem mv_polynomial.hom_eq_hom - def mv_polynomial.hom_equiv - theorem mv_polynomial.induction_on' - theorem mv_polynomial.induction_on - theorem mv_polynomial.is_id - def mv_polynomial.iter_to_sum - theorem mv_polynomial.iter_to_sum_C_C - theorem mv_polynomial.iter_to_sum_C_X - theorem mv_polynomial.iter_to_sum_X - theorem mv_polynomial.le_degrees_add - def mv_polynomial.map - theorem mv_polynomial.map_C - theorem mv_polynomial.map_X - theorem mv_polynomial.map_aeval - theorem mv_polynomial.map_eval₂ - theorem mv_polynomial.map_eval₂_hom - theorem mv_polynomial.map_id - theorem mv_polynomial.map_injective - theorem mv_polynomial.map_map - theorem mv_polynomial.map_monomial - theorem mv_polynomial.map_rename - theorem mv_polynomial.mem_degrees - theorem mv_polynomial.mem_support_not_mem_vars_zero - theorem mv_polynomial.mem_vars - theorem mv_polynomial.monic_monomial_eq - def mv_polynomial.monomial - theorem mv_polynomial.monomial_add - theorem mv_polynomial.monomial_add_single - theorem mv_polynomial.monomial_eq - theorem mv_polynomial.monomial_mul - theorem mv_polynomial.monomial_single_add - theorem mv_polynomial.monomial_zero - def mv_polynomial.mv_polynomial_equiv_mv_polynomial - theorem mv_polynomial.ne_zero_iff - def mv_polynomial.option_equiv_left - def mv_polynomial.option_equiv_right - def mv_polynomial.pderivative.add_monoid_hom - theorem mv_polynomial.pderivative.add_monoid_hom_apply - def mv_polynomial.pderivative - theorem mv_polynomial.pderivative_C - theorem mv_polynomial.pderivative_C_mul - theorem mv_polynomial.pderivative_add - theorem mv_polynomial.pderivative_eq_zero_of_not_mem_vars - theorem mv_polynomial.pderivative_monomial - theorem mv_polynomial.pderivative_monomial_mul - theorem mv_polynomial.pderivative_monomial_single - theorem mv_polynomial.pderivative_mul - theorem mv_polynomial.pderivative_zero - def mv_polynomial.pempty_ring_equiv - def mv_polynomial.punit_ring_equiv - def mv_polynomial.rename - theorem mv_polynomial.rename_C - theorem mv_polynomial.rename_X - theorem mv_polynomial.rename_eq - theorem mv_polynomial.rename_eval₂ - theorem mv_polynomial.rename_id - theorem mv_polynomial.rename_injective - theorem mv_polynomial.rename_monomial - theorem mv_polynomial.rename_prodmk_eval₂ - theorem mv_polynomial.rename_rename - def mv_polynomial.ring_equiv_congr - def mv_polynomial.ring_equiv_of_equiv - theorem mv_polynomial.ring_hom_ext - theorem mv_polynomial.single_eq_C_mul_X - theorem mv_polynomial.smul_eq_C_mul - theorem mv_polynomial.smul_eval - theorem mv_polynomial.sum_monomial - def mv_polynomial.sum_ring_equiv - def mv_polynomial.sum_to_iter - theorem mv_polynomial.sum_to_iter_C - theorem mv_polynomial.sum_to_iter_Xl - theorem mv_polynomial.sum_to_iter_Xr - theorem mv_polynomial.support_map_of_injective - theorem mv_polynomial.support_map_subset - theorem mv_polynomial.support_sum_monomial_coeff - def mv_polynomial.total_degree - theorem mv_polynomial.total_degree_C - theorem mv_polynomial.total_degree_X - theorem mv_polynomial.total_degree_add - theorem mv_polynomial.total_degree_eq - theorem mv_polynomial.total_degree_finset_prod - theorem mv_polynomial.total_degree_le_degrees_card - theorem mv_polynomial.total_degree_list_prod - theorem mv_polynomial.total_degree_mul - theorem mv_polynomial.total_degree_multiset_prod - theorem mv_polynomial.total_degree_neg - theorem mv_polynomial.total_degree_one - theorem mv_polynomial.total_degree_pow - theorem mv_polynomial.total_degree_rename_le - theorem mv_polynomial.total_degree_sub - theorem mv_polynomial.total_degree_zero - def mv_polynomial.vars - theorem mv_polynomial.vars_0 - theorem mv_polynomial.vars_C - theorem mv_polynomial.vars_X - theorem mv_polynomial.vars_add_of_disjoint - theorem mv_polynomial.vars_add_subset - theorem mv_polynomial.vars_eq_support_bind_support - theorem mv_polynomial.vars_map - theorem mv_polynomial.vars_map_of_injective - theorem mv_polynomial.vars_monomial - theorem mv_polynomial.vars_monomial_single - theorem mv_polynomial.vars_neg - theorem mv_polynomial.vars_sub_of_disjoint - theorem mv_polynomial.vars_sub_subset - theorem mv_polynomial.vars_sum_of_disjoint - theorem mv_polynomial.vars_sum_subset - def mv_polynomial Added src/data/mv_polynomial/basic.lean + def mv_polynomial.C + theorem mv_polynomial.C_0 + theorem mv_polynomial.C_1 + theorem mv_polynomial.C_add + theorem mv_polynomial.C_eq_coe_nat + theorem mv_polynomial.C_inj + theorem mv_polynomial.C_injective + theorem mv_polynomial.C_mul + theorem mv_polynomial.C_mul_monomial + theorem mv_polynomial.C_pow + def mv_polynomial.X + theorem mv_polynomial.X_pow_eq_single + def mv_polynomial.aeval + theorem mv_polynomial.aeval_C + theorem mv_polynomial.aeval_X + theorem mv_polynomial.aeval_def + theorem mv_polynomial.aeval_eq_eval₂_hom + theorem mv_polynomial.aeval_monomial + theorem mv_polynomial.aeval_zero' + theorem mv_polynomial.aeval_zero + theorem mv_polynomial.alg_hom_C + theorem mv_polynomial.alg_hom_ext + theorem mv_polynomial.algebra_map_eq + theorem mv_polynomial.as_sum + theorem mv_polynomial.coe_eval₂_hom + def mv_polynomial.coeff + theorem mv_polynomial.coeff_C + theorem mv_polynomial.coeff_C_mul + theorem mv_polynomial.coeff_X' + theorem mv_polynomial.coeff_X + theorem mv_polynomial.coeff_X_pow + theorem mv_polynomial.coeff_add + def mv_polynomial.coeff_coe_to_fun + theorem mv_polynomial.coeff_map + theorem mv_polynomial.coeff_monomial + theorem mv_polynomial.coeff_mul + theorem mv_polynomial.coeff_mul_X' + theorem mv_polynomial.coeff_mul_X + theorem mv_polynomial.coeff_sum + theorem mv_polynomial.coeff_zero + theorem mv_polynomial.coeff_zero_X + theorem mv_polynomial.comp_aeval + theorem mv_polynomial.comp_eval₂_hom + def mv_polynomial.constant_coeff + theorem mv_polynomial.constant_coeff_C + theorem mv_polynomial.constant_coeff_X + theorem mv_polynomial.constant_coeff_eq + theorem mv_polynomial.constant_coeff_monomial + theorem mv_polynomial.eq_zero_iff + def mv_polynomial.eval + theorem mv_polynomial.eval_C + theorem mv_polynomial.eval_X + theorem mv_polynomial.eval_assoc + theorem mv_polynomial.eval_eq' + theorem mv_polynomial.eval_eq + theorem mv_polynomial.eval_map + theorem mv_polynomial.eval_monomial + theorem mv_polynomial.eval_prod + theorem mv_polynomial.eval_sum + theorem mv_polynomial.eval_unique + def mv_polynomial.eval₂ + theorem mv_polynomial.eval₂_C + theorem mv_polynomial.eval₂_X + theorem mv_polynomial.eval₂_add + theorem mv_polynomial.eval₂_assoc + theorem mv_polynomial.eval₂_comp_left + theorem mv_polynomial.eval₂_comp_right + theorem mv_polynomial.eval₂_congr + theorem mv_polynomial.eval₂_eq' + theorem mv_polynomial.eval₂_eq + theorem mv_polynomial.eval₂_eq_eval_map + theorem mv_polynomial.eval₂_eta + def mv_polynomial.eval₂_hom + theorem mv_polynomial.eval₂_hom_C + theorem mv_polynomial.eval₂_hom_X' + theorem mv_polynomial.eval₂_hom_congr + theorem mv_polynomial.eval₂_hom_map_hom + theorem mv_polynomial.eval₂_hom_monomial + theorem mv_polynomial.eval₂_map + theorem mv_polynomial.eval₂_monomial + theorem mv_polynomial.eval₂_mul + theorem mv_polynomial.eval₂_mul_monomial + theorem mv_polynomial.eval₂_one + theorem mv_polynomial.eval₂_pow + theorem mv_polynomial.eval₂_prod + theorem mv_polynomial.eval₂_sum + theorem mv_polynomial.eval₂_zero + theorem mv_polynomial.exists_coeff_ne_zero + theorem mv_polynomial.ext + theorem mv_polynomial.ext_iff + theorem mv_polynomial.hom_eq_hom + theorem mv_polynomial.induction_on' + theorem mv_polynomial.induction_on + theorem mv_polynomial.is_id + def mv_polynomial.map + theorem mv_polynomial.map_C + theorem mv_polynomial.map_X + theorem mv_polynomial.map_aeval + theorem mv_polynomial.map_eval₂ + theorem mv_polynomial.map_eval₂_hom + theorem mv_polynomial.map_id + theorem mv_polynomial.map_injective + theorem mv_polynomial.map_map + theorem mv_polynomial.map_monomial + theorem mv_polynomial.monic_monomial_eq + def mv_polynomial.monomial + theorem mv_polynomial.monomial_add + theorem mv_polynomial.monomial_add_single + theorem mv_polynomial.monomial_eq + theorem mv_polynomial.monomial_mul + theorem mv_polynomial.monomial_single_add + theorem mv_polynomial.monomial_zero + theorem mv_polynomial.ne_zero_iff + theorem mv_polynomial.ring_hom_ext + theorem mv_polynomial.single_eq_C_mul_X + theorem mv_polynomial.sum_monomial + theorem mv_polynomial.support_map_of_injective + theorem mv_polynomial.support_map_subset + theorem mv_polynomial.support_sum_monomial_coeff + def mv_polynomial Added src/data/mv_polynomial/comm_ring.lean + theorem mv_polynomial.C_mul' + theorem mv_polynomial.C_neg + theorem mv_polynomial.C_sub + theorem mv_polynomial.coeff_neg + theorem mv_polynomial.coeff_sub + theorem mv_polynomial.degrees_neg + theorem mv_polynomial.degrees_sub + theorem mv_polynomial.eval₂_hom_X + theorem mv_polynomial.eval₂_neg + theorem mv_polynomial.eval₂_sub + theorem mv_polynomial.hom_C + def mv_polynomial.hom_equiv + theorem mv_polynomial.smul_eq_C_mul + theorem mv_polynomial.smul_eval + theorem mv_polynomial.total_degree_neg + theorem mv_polynomial.total_degree_sub + theorem mv_polynomial.vars_neg + theorem mv_polynomial.vars_sub_of_disjoint + theorem mv_polynomial.vars_sub_subset Added src/data/mv_polynomial/default.lean Added src/data/mv_polynomial/equiv.lean + def mv_polynomial.fin_succ_equiv + def mv_polynomial.iter_to_sum + theorem mv_polynomial.iter_to_sum_C_C + theorem mv_polynomial.iter_to_sum_C_X + theorem mv_polynomial.iter_to_sum_X + def mv_polynomial.mv_polynomial_equiv_mv_polynomial + def mv_polynomial.option_equiv_left + def mv_polynomial.option_equiv_right + def mv_polynomial.pempty_ring_equiv + def mv_polynomial.punit_ring_equiv + def mv_polynomial.ring_equiv_congr + def mv_polynomial.ring_equiv_of_equiv + def mv_polynomial.sum_ring_equiv + def mv_polynomial.sum_to_iter + theorem mv_polynomial.sum_to_iter_C + theorem mv_polynomial.sum_to_iter_Xl + theorem mv_polynomial.sum_to_iter_Xr Added src/data/mv_polynomial/pderiv.lean + def mv_polynomial.pderivative.add_monoid_hom + theorem mv_polynomial.pderivative.add_monoid_hom_apply + def mv_polynomial.pderivative + theorem mv_polynomial.pderivative_C + theorem mv_polynomial.pderivative_C_mul + theorem mv_polynomial.pderivative_add + theorem mv_polynomial.pderivative_eq_zero_of_not_mem_vars + theorem mv_polynomial.pderivative_monomial + theorem mv_polynomial.pderivative_monomial_mul + theorem mv_polynomial.pderivative_monomial_single + theorem mv_polynomial.pderivative_mul + theorem mv_polynomial.pderivative_zero Added src/data/mv_polynomial/rename.lean + theorem mv_polynomial.eval_rename_prodmk + theorem mv_polynomial.eval₂_cast_comp + theorem mv_polynomial.eval₂_hom_rename + theorem mv_polynomial.eval₂_rename + theorem mv_polynomial.eval₂_rename_prodmk + theorem mv_polynomial.exists_fin_rename + theorem mv_polynomial.exists_finset_rename + theorem mv_polynomial.map_rename + def mv_polynomial.rename + theorem mv_polynomial.rename_C + theorem mv_polynomial.rename_X + theorem mv_polynomial.rename_eq + theorem mv_polynomial.rename_eval₂ + theorem mv_polynomial.rename_id + theorem mv_polynomial.rename_injective + theorem mv_polynomial.rename_monomial + theorem mv_polynomial.rename_prodmk_eval₂ + theorem mv_polynomial.rename_rename + theorem mv_polynomial.total_degree_rename_le Added src/data/mv_polynomial/variables.lean + theorem mv_polynomial.aeval_eq_constant_coeff_of_vars + theorem mv_polynomial.coeff_eq_zero_of_total_degree_lt + def mv_polynomial.degree_of + def mv_polynomial.degrees + theorem mv_polynomial.degrees_C + theorem mv_polynomial.degrees_X + theorem mv_polynomial.degrees_add + theorem mv_polynomial.degrees_add_of_disjoint + theorem mv_polynomial.degrees_map + theorem mv_polynomial.degrees_map_of_injective + theorem mv_polynomial.degrees_monomial + theorem mv_polynomial.degrees_monomial_eq + theorem mv_polynomial.degrees_mul + theorem mv_polynomial.degrees_one + theorem mv_polynomial.degrees_pow + theorem mv_polynomial.degrees_prod + theorem mv_polynomial.degrees_sum + theorem mv_polynomial.degrees_zero + theorem mv_polynomial.eval₂_hom_eq_constant_coeff_of_vars + theorem mv_polynomial.exists_degree_lt + theorem mv_polynomial.le_degrees_add + theorem mv_polynomial.mem_degrees + theorem mv_polynomial.mem_support_not_mem_vars_zero + theorem mv_polynomial.mem_vars + def mv_polynomial.total_degree + theorem mv_polynomial.total_degree_C + theorem mv_polynomial.total_degree_X + theorem mv_polynomial.total_degree_add + theorem mv_polynomial.total_degree_eq + theorem mv_polynomial.total_degree_finset_prod + theorem mv_polynomial.total_degree_le_degrees_card + theorem mv_polynomial.total_degree_list_prod + theorem mv_polynomial.total_degree_mul + theorem mv_polynomial.total_degree_multiset_prod + theorem mv_polynomial.total_degree_one + theorem mv_polynomial.total_degree_pow + theorem mv_polynomial.total_degree_zero + def mv_polynomial.vars + theorem mv_polynomial.vars_0 + theorem mv_polynomial.vars_C + theorem mv_polynomial.vars_X + theorem mv_polynomial.vars_add_of_disjoint + theorem mv_polynomial.vars_add_subset + theorem mv_polynomial.vars_eq_support_bind_support + theorem mv_polynomial.vars_map + theorem mv_polynomial.vars_map_of_injective + theorem mv_polynomial.vars_monomial + theorem mv_polynomial.vars_monomial_single + theorem mv_polynomial.vars_sum_of_disjoint + theorem mv_polynomial.vars_sum_subset Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/polynomial/basic.lean 2020-09-09 04:32:30 d5580f4 feat(data/equiv/basic): add ext_iff for perm (#4067) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.ext_iff + theorem equiv.perm.ext_iff 2020-09-08 21:33:25 f5ee84c feat(analysis/special_functions/pow): Added lemmas bounding rpow in ennreal (#4039) Continuation of #3715. Added lemmas in `ennreal` corresponding to the `real` and `nnreal` lemmas added in that PR ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean +/- theorem ennreal.one_le_rpow + theorem ennreal.one_le_rpow_of_pos_of_le_one_of_neg + theorem ennreal.one_lt_rpow_of_pos_of_lt_one_of_neg +/- theorem ennreal.rpow_le_one + theorem ennreal.rpow_le_one_of_one_le_of_neg +/- theorem ennreal.rpow_lt_one + theorem ennreal.rpow_lt_one_of_one_lt_of_neg 2020-09-08 20:35:35 7354042 fix(topology/metric_space): free universe (#4072) Removes an unneeded and painful universe restriction ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean 2020-09-08 18:11:23 dde8bad doc(*): add docstrings (#4071) Minor docstring fixes ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/ring_theory/principal_ideal_domain.lean 2020-09-08 12:40:23 b2ec2b0 chore(data/padics): fix bad markdown in doc string (#4068) Just noticed this in the docs ESTIMATED CHANGES Modified src/data/padics/ring_homs.lean 2020-09-08 12:40:21 4f1399d feat(geometry/euclidean/basic): reflection lemmas (#4056) Add more lemmas about reflections of points in subspaces. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.reflection_mem_of_le_of_mem + theorem euclidean_geometry.reflection_orthogonal_vadd + theorem euclidean_geometry.reflection_vadd_smul_vsub_orthogonal_projection 2020-09-08 12:40:19 445e883 feat(function): has_uncurry (#3694) By Gabriel Ebner, from the sphere eversion project. See discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/recursive.20uncurry ESTIMATED CHANGES Modified src/logic/function/basic.lean 2020-09-08 10:47:42 1c53f91 doc(tactic/lean_core_docs): congr understands subsingletons (#4060) ESTIMATED CHANGES Modified src/tactic/congr.lean Modified src/tactic/lean_core_docs.lean 2020-09-08 00:47:47 a16112d doc(algebra/group/to_additive): order of to_additive relative to other attributes (#4065) ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean 2020-09-07 19:41:48 c7d6a8e feat(ring_theory/unique_factorization_domain): descending chain condition for divisibility (#4031) Defines the strict divisibility relation `dvd_not_unit` Defines class `wf_dvd_monoid`, indicating that `dvd_not_unit` is well-founded Provides instances of `wf_dvd_monoid` Prepares to refactor `unique_factorization_domain` as a predicate extending `wf_dvd_monoid` ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.dvd_not_unit_iff_lt + theorem associates.dvd_not_unit_of_lt + theorem associates.irreducible_mk - theorem associates.irreducible_mk_iff - theorem associates.le_of_mul_le_mul_right + theorem associates.mk_dvd_not_unit_mk_iff + theorem associates.mk_surjective Modified src/algebra/divisibility.lean + def dvd_not_unit + theorem dvd_not_unit_of_dvd_of_not_dvd Modified src/field_theory/splitting_field.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/noetherian.lean - theorem is_noetherian_ring.exists_factors - theorem is_noetherian_ring.exists_irreducible_factor - theorem is_noetherian_ring.irreducible_induction_on - theorem is_noetherian_ring.well_founded_dvd_not_unit Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean + theorem wf_dvd_monoid.exists_factors + theorem wf_dvd_monoid.exists_irreducible_factor + theorem wf_dvd_monoid.iff_well_founded_associates + theorem wf_dvd_monoid.induction_on_irreducible + theorem wf_dvd_monoid.of_well_founded_associates + theorem wf_dvd_monoid.of_wf_dvd_monoid_associates + theorem wf_dvd_monoid.well_founded_associates 2020-09-07 17:54:54 851e83e feat(category_theory): colimits for pi categories (#4054) ESTIMATED CHANGES Modified src/category_theory/limits/pi.lean + def category_theory.pi.cocone_comp_eval + def category_theory.pi.cocone_of_cocone_comp_eval + def category_theory.pi.cocone_of_cocone_eval_is_colimit + def category_theory.pi.has_colimit_of_has_colimit_comp_eval 2020-09-07 13:36:36 c259305 feat(topology/algebra/floor_ring): add basic topological facts about `floor`, `ceil` and `fract` (#4042) From the sphere eversion project ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem ceil_eq_iff + theorem ceil_eq_on_Ioc' + theorem ceil_eq_on_Ioc + theorem floor_eq_on_Ico' + theorem floor_eq_on_Ico Added src/topology/algebra/floor_ring.lean + theorem continuous_on.comp_fract' + theorem continuous_on.comp_fract + theorem continuous_on_ceil + theorem continuous_on_floor + theorem continuous_on_fract + theorem tendsto_ceil_at_bot + theorem tendsto_ceil_at_top + theorem tendsto_ceil_left' + theorem tendsto_ceil_left + theorem tendsto_ceil_right' + theorem tendsto_ceil_right + theorem tendsto_floor_at_bot + theorem tendsto_floor_at_top + theorem tendsto_floor_left' + theorem tendsto_floor_left + theorem tendsto_floor_right' + theorem tendsto_floor_right + theorem tendsto_fract_left' + theorem tendsto_fract_left + theorem tendsto_fract_right' + theorem tendsto_fract_right Modified src/topology/algebra/ordered.lean + theorem tendsto_inv_nhds_within_Ici + theorem tendsto_inv_nhds_within_Ici_inv + theorem tendsto_inv_nhds_within_Iic + theorem tendsto_inv_nhds_within_Iic_inv 2020-09-07 07:49:55 f253fa0 feat(logic/basic): apply_dite2, apply_ite2 (#4050) Add variants of `apply_dite` and `apply_ite` for two-argument functions (in the case where I wanted `apply_ite`, the function was addition). I don't think there is any need for corresponding versions of `dite_apply` or `ite_apply`, as two-argument versions of those would be exactly the same as applying the one-argument version twice, whereas that's not the case with `apply_dite2` and `apply_ite2`. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem apply_dite2 + theorem apply_ite2 2020-09-07 05:46:33 94b96cf feat(algebraic_geometry/structure_sheaf): stalk_iso (#4047) Given a ring `R` and a prime ideal `p`, construct an isomorphism of rings between the stalk of the structure sheaf of `R` at `p` and the localization of `R` at `p`. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean +/- def prime_spectrum.basic_open - theorem prime_spectrum.basic_open_open Modified src/algebraic_geometry/structure_sheaf.lean + theorem algebraic_geometry.coe_open_to_localization + def algebraic_geometry.const + theorem algebraic_geometry.const_add + theorem algebraic_geometry.const_apply' + theorem algebraic_geometry.const_apply + theorem algebraic_geometry.const_congr + theorem algebraic_geometry.const_ext + theorem algebraic_geometry.const_mul + theorem algebraic_geometry.const_mul_cancel' + theorem algebraic_geometry.const_mul_cancel + theorem algebraic_geometry.const_mul_rev + theorem algebraic_geometry.const_one + theorem algebraic_geometry.const_self + theorem algebraic_geometry.const_zero + theorem algebraic_geometry.exists_const + theorem algebraic_geometry.germ_comp_stalk_to_fiber_ring_hom + theorem algebraic_geometry.germ_to_open + theorem algebraic_geometry.germ_to_top + theorem algebraic_geometry.is_unit_to_basic_open_self + theorem algebraic_geometry.is_unit_to_stalk + theorem algebraic_geometry.localization_to_basic_open + def algebraic_geometry.localization_to_stalk + theorem algebraic_geometry.localization_to_stalk_mk' + theorem algebraic_geometry.localization_to_stalk_of + def algebraic_geometry.open_to_localization + theorem algebraic_geometry.open_to_localization_apply + theorem algebraic_geometry.res_apply + theorem algebraic_geometry.res_const' + theorem algebraic_geometry.res_const +/- def algebraic_geometry.stalk_iso +/- def algebraic_geometry.stalk_to_fiber_ring_hom + theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ' + theorem algebraic_geometry.stalk_to_fiber_ring_hom_germ + theorem algebraic_geometry.stalk_to_fiber_ring_hom_to_stalk + def algebraic_geometry.to_basic_open + theorem algebraic_geometry.to_basic_open_mk' + theorem algebraic_geometry.to_basic_open_to_map + def algebraic_geometry.to_open + theorem algebraic_geometry.to_open_apply + theorem algebraic_geometry.to_open_eq_const + theorem algebraic_geometry.to_open_germ + theorem algebraic_geometry.to_open_res + def algebraic_geometry.to_stalk + theorem algebraic_geometry.to_stalk_comp_stalk_to_fiber_ring_hom Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.germ_ext + theorem Top.presheaf.stalk_hom_ext 2020-09-07 00:51:55 2e198b4 chore(scripts): update nolints.txt (#4058) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-06 23:47:49 4662b20 feat(category_theory): definition of `diag` in `binary_products` (#4051) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.codiag + theorem category_theory.limits.coprod.map_codiag + theorem category_theory.limits.coprod.map_comp_codiag + theorem category_theory.limits.coprod.map_comp_inl_inr_codiag + theorem category_theory.limits.coprod.map_inl_inr_codiag + def category_theory.limits.diag + theorem category_theory.limits.prod.diag_map + theorem category_theory.limits.prod.diag_map_comp + theorem category_theory.limits.prod.diag_map_fst_snd + theorem category_theory.limits.prod.diag_map_fst_snd_comp 2020-09-06 23:08:44 4945c77 cleanup(ring_theory/ring_invo): update old module doc, add ring_invo.involution with cleaner statement (#4052) ESTIMATED CHANGES Modified src/linear_algebra/sesquilinear_form.lean Renamed src/ring_theory/maps.lean to src/ring_theory/ring_invo.lean + theorem ring_invo.involution 2020-09-06 12:14:42 de03e19 feat(analysis/normed_space/real_inner_product): linear independence of orthogonal vectors (#4045) Add the lemma that an indexed family of nonzero, pairwise orthogonal vectors is linearly independent. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem linear_independent_of_ne_zero_of_inner_eq_zero 2020-09-06 12:14:40 1117ae7 feat(linear_algebra): Add lemmas about powers of endomorphisms (#4036) Add lemmas about powers of endomorphisms and the corollary that every generalized eigenvector is a generalized eigenvector for exponent `findim K V`. ESTIMATED CHANGES Modified src/linear_algebra/eigenspace.lean + theorem module.End.generalized_eigenspace_eq_generalized_eigenspace_findim_of_le + theorem module.End.generalized_eigenspace_le_generalized_eigenspace_findim Modified src/linear_algebra/finite_dimensional.lean + theorem module.End.exists_ker_pow_eq_ker_pow_succ + theorem module.End.ker_pow_constant + theorem module.End.ker_pow_eq_ker_pow_findim_of_le + theorem module.End.ker_pow_le_ker_pow_findim + theorem submodule.findim_lt_findim_of_lt 2020-09-06 11:28:33 fabf34f feat(analysis/special_functions/trigonometric): Added lemmas for deriv of tan (#3746) I added lemmas for the derivative of the tangent function in both the complex and real namespaces. I also corrected two typos in comment lines. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem complex.continuous_on_tan +/- theorem complex.continuous_tan + theorem complex.cos_eq_zero_iff + theorem complex.cos_ne_zero_iff + theorem complex.deriv_tan + theorem complex.differentiable_at_tan + theorem complex.exp_pi_mul_I + theorem complex.has_deriv_at_tan + theorem real.continuous_on_tan +/- theorem real.continuous_tan +/- theorem real.cos_eq_zero_iff +/- theorem real.cos_ne_zero_iff + theorem real.cos_nonneg_of_mem_Icc - theorem real.cos_nonneg_of_neg_pi_div_two_le_of_le_pi_div_two + theorem real.cos_pos_of_mem_Ioo - theorem real.cos_pos_of_neg_pi_div_two_lt_of_lt_pi_div_two + theorem real.deriv_tan + theorem real.deriv_tan_of_mem_Ioo + theorem real.differentiable_at_tan + theorem real.differentiable_at_tan_of_mem_Ioo + theorem real.has_deriv_at_tan + theorem real.has_deriv_at_tan_of_mem_Ioo 2020-09-06 06:48:30 6296386 feat(data/mv_polynomial): fill in API for vars (#4018) `mv_polynomial.vars` was missing a lot of API. This doesn't cover everything, but it fleshes out the theory quite a bit. There's probably more coming eventually -- this is what we have now. Co-authored by: Johan Commelin ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.aeval_eq_constant_coeff_of_vars + theorem mv_polynomial.degrees_add_of_disjoint + theorem mv_polynomial.degrees_map + theorem mv_polynomial.degrees_map_of_injective + theorem mv_polynomial.eval₂_hom_eq_constant_coeff_of_vars + theorem mv_polynomial.le_degrees_add + theorem mv_polynomial.mem_degrees + theorem mv_polynomial.mem_vars + theorem mv_polynomial.support_map_of_injective + theorem mv_polynomial.support_map_subset + theorem mv_polynomial.vars_add_of_disjoint + theorem mv_polynomial.vars_add_subset + theorem mv_polynomial.vars_eq_support_bind_support + theorem mv_polynomial.vars_map + theorem mv_polynomial.vars_map_of_injective + theorem mv_polynomial.vars_monomial_single + theorem mv_polynomial.vars_neg + theorem mv_polynomial.vars_sub_of_disjoint + theorem mv_polynomial.vars_sub_subset + theorem mv_polynomial.vars_sum_of_disjoint + theorem mv_polynomial.vars_sum_subset 2020-09-06 05:07:42 7b3c653 chore(data/finset/lattice): remove unneeded assumptions (#4020) ESTIMATED CHANGES Modified src/combinatorics/composition.lean Modified src/data/finset/lattice.lean +/- theorem finset.le_max' +/- theorem finset.max'_singleton +/- theorem finset.min'_le +/- theorem finset.min'_lt_max' +/- theorem finset.min'_lt_max'_of_card +/- theorem finset.min'_singleton Modified src/data/finset/sort.lean + theorem finset.max'_eq_sorted_last + theorem finset.min'_eq_sorted_zero +/- theorem finset.mono_of_fin_last +/- theorem finset.mono_of_fin_zero +/- theorem finset.sorted_last_eq_max' + theorem finset.sorted_last_eq_max'_aux +/- theorem finset.sorted_zero_eq_min' + theorem finset.sorted_zero_eq_min'_aux Modified src/order/filter/at_top_bot.lean 2020-09-05 13:51:33 815a2f9 feat(computability/encoding): define encoding of basic data types (#3976) We define the encoding of natural numbers and booleans to strings for Turing machines to be used in our future PR on polynomial time computation on Turing machines. ESTIMATED CHANGES Added src/computability/encoding.lean + def computability.decode_bool + theorem computability.decode_encode_bool + theorem computability.decode_encode_nat + theorem computability.decode_encode_num + theorem computability.decode_encode_pos_num + def computability.decode_nat + def computability.decode_num + def computability.decode_pos_num + def computability.encode_bool + def computability.encode_nat + def computability.encode_num + def computability.encode_pos_num + theorem computability.encode_pos_num_nonempty + structure computability.encoding + def computability.encoding_nat_bool + def computability.encoding_nat_Γ' + structure computability.fin_encoding + def computability.fin_encoding_bool_bool + def computability.fin_encoding_nat_bool + def computability.fin_encoding_nat_Γ' + def computability.inclusion_bool_Γ' + theorem computability.inclusion_bool_Γ'_injective + theorem computability.left_inverse_section_inclusion + def computability.section_Γ'_bool + theorem computability.unary_decode_encode_nat + def computability.unary_decode_nat + def computability.unary_encode_nat + def computability.unary_fin_encoding_nat + inductive computability.Γ' 2020-09-05 09:19:56 364d5d4 feat(linear_algebra/char_poly): rephrase Cayley-Hamilton with `aeval', define `matrix.min_poly` (#4040) Rephrases the Cayley-Hamilton theorem to use `aeval`, renames it `aeval_self_char_poly` Defines `matrix.min_poly`, the minimal polynomial of a matrix, which divides `char_poly` ESTIMATED CHANGES Modified docs/100.yaml Modified docs/overview.yaml Modified docs/undergrad.yaml Modified src/linear_algebra/char_poly.lean + theorem aeval_self_char_poly - theorem char_poly_map_eval_self Modified src/linear_algebra/char_poly/coeff.lean + theorem matrix.is_integral + theorem matrix.min_poly_dvd_char_poly 2020-09-05 00:55:56 ccd502a chore(scripts): update nolints.txt (#4044) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-04 11:49:24 7c9a86d refactor(geometry/manifold): use a sigma type for the total space of the tangent bundle (#3966) Redefine the total space of the tangent bundle to be a sigma type instead of a product type. Before ``` have p : tangent_bundle I M := sorry, rcases p with ⟨x, v⟩, -- x: M -- v: E ``` After ``` have p : tangent_bundle I M := sorry, rcases p with ⟨x, v⟩, -- x: M -- v: tangent_space I x ``` This seems more natural, and is probably needed to do Riemannian manifolds right. The drawback is that we can not abuse identifications any more between the tangent bundle to a vector space and a product space (but we can still identify the tangent space with the vector space itself, which is the most important thing). ESTIMATED CHANGES Modified src/category_theory/adjunction/fully_faithful.lean Modified src/data/equiv/basic.lean +/- theorem equiv.inv_fun_as_coe +/- theorem equiv.to_fun_as_coe Modified src/data/equiv/local_equiv.lean Modified src/geometry/manifold/basic_smooth_bundle.lean +/- theorem basic_smooth_bundle_core.coe_chart_at_symm_fst +/- theorem basic_smooth_bundle_core.mem_atlas_iff +/- theorem basic_smooth_bundle_core.mem_chart_target_iff + theorem tangent_bundle.proj_apply +/- def tangent_bundle + def tangent_bundle_model_space_homeomorph + theorem tangent_bundle_model_space_homeomorph_coe + theorem tangent_bundle_model_space_homeomorph_coe_symm - theorem tangent_bundle_model_space_topology_eq_prod +/- def tangent_space Modified src/geometry/manifold/mfderiv.lean +/- theorem tangent_map_chart_symm Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/topology/topological_fiber_bundle.lean +/- def topological_fiber_bundle_core.total_space 2020-09-04 00:52:11 ecf18c6 refactor(field_theory/minimal_polynomial, *): make `aeval`, `is_integral`, and `minimal_polynomial` noncommutative (#4001) Makes `aeval`, `is_integral`, and `minimal_polynomial` compatible with noncommutative algebras Renames `eval₂_ring_hom_noncomm` to `eval₂_ring_hom'` ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/eval.lean +/- theorem polynomial.eval₂_list_prod_noncomm +/- theorem polynomial.eval₂_mul_noncomm + def polynomial.eval₂_ring_hom' - def polynomial.eval₂_ring_hom_noncomm Modified src/field_theory/minimal_polynomial.lean Modified src/linear_algebra/eigenspace.lean + theorem module.End.ker_eval₂_ring_hom'_unit_polynomial - theorem module.End.ker_eval₂_ring_hom_noncomm_unit_polynomial Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean - theorem is_integral_of_noetherian' +/- theorem is_integral_of_noetherian + theorem is_integral_of_submodule_noetherian 2020-09-03 21:00:06 e3057ba doc(slim_check): add suggestion (#4024) ESTIMATED CHANGES Modified src/tactic/slim_check.lean 2020-09-03 19:18:55 a056ccb feat(slim_check): subtype instances for `le` `lt` and `list.perm` (#4027) ESTIMATED CHANGES Modified src/data/list/perm.lean + theorem list.perm_insert_nth Modified src/data/list/sort.lean Modified src/testing/slim_check/gen.lean + def slim_check.gen.permutation_of Modified src/testing/slim_check/sampleable.lean Modified src/testing/slim_check/testable.lean 2020-09-03 17:36:08 2d40d9c feat(data/padics): universal property of Z_p (#3950) We establish the universal property of $\mathbb{Z}_p$ as a projective limit. Given a family of compatible ring homs $f_k : R \to \mathbb{Z}/p^n\mathbb{Z}$, there is a unique limit $R \to \mathbb{Z}_p$. In addition, we: * split `padic_integers.lean` into two files, creating `ring_homs.lean` * renamings: `padic_norm_z.*` -> `padic_int.norm_*` ESTIMATED CHANGES Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean - theorem padic_int.appr_lt - theorem padic_int.appr_spec +/- theorem padic_int.coe_sub - theorem padic_int.exists_mem_range + theorem padic_int.exists_pow_neg_lt + theorem padic_int.exists_pow_neg_lt_rat +/- theorem padic_int.ext - theorem padic_int.is_unit_denom - theorem padic_int.ker_to_zmod - theorem padic_int.ker_to_zmod_pow + theorem padic_int.mem_span_pow_iff_le_valuation - def padic_int.mod_part - theorem padic_int.mod_part_lt_p - theorem padic_int.mod_part_nonneg + theorem padic_int.nonarchimedean + theorem padic_int.norm_add_eq_max_of_ne + theorem padic_int.norm_def + theorem padic_int.norm_eq_of_norm_add_lt_left + theorem padic_int.norm_eq_of_norm_add_lt_right + theorem padic_int.norm_eq_padic_norm + theorem padic_int.norm_int_cast_eq_padic_norm + theorem padic_int.norm_int_le_pow_iff_dvd + theorem padic_int.norm_le_one + theorem padic_int.norm_le_pow_iff_le_valuation + theorem padic_int.norm_le_pow_iff_mem_span_pow + theorem padic_int.norm_le_pow_iff_norm_lt_pow_add_one + theorem padic_int.norm_lt_pow_iff_norm_le_pow_sub_one + theorem padic_int.norm_mul + theorem padic_int.norm_one + theorem padic_int.norm_p + theorem padic_int.norm_p_pow + theorem padic_int.norm_pow - theorem padic_int.norm_sub_mod_part - theorem padic_int.norm_sub_mod_part_aux + def padic_int.of_int_seq - theorem padic_int.p_dvd_of_norm_lt_one + theorem padic_int.padic_norm_e_of_padic_int +/- theorem padic_int.pow_p_dvd_int_iff - theorem padic_int.sub_zmod_repr_mem - def padic_int.to_zmod - def padic_int.to_zmod_hom - def padic_int.to_zmod_pow - theorem padic_int.to_zmod_spec - theorem padic_int.zmod_congr_of_sub_mem_max_ideal - theorem padic_int.zmod_congr_of_sub_mem_span - theorem padic_int.zmod_congr_of_sub_mem_span_aux - def padic_int.zmod_repr - theorem padic_int.zmod_repr_lt_p - theorem padic_int.zmod_repr_spec - theorem padic_norm_z.add_eq_max_of_ne - theorem padic_norm_z.eq_of_norm_add_lt_left - theorem padic_norm_z.eq_of_norm_add_lt_right - theorem padic_norm_z.le_one - theorem padic_norm_z.mul - theorem padic_norm_z.nonarchimedean - theorem padic_norm_z.norm_one - theorem padic_norm_z.norm_p - theorem padic_norm_z.norm_p_pow - theorem padic_norm_z.one - theorem padic_norm_z.padic_norm_e_of_padic_int - theorem padic_norm_z.padic_norm_z_eq_padic_norm_e - theorem padic_norm_z.padic_norm_z_of_int - theorem padic_norm_z.padic_val_of_cong_pow_p - theorem padic_norm_z.pow - theorem padic_norm_z Modified src/data/padics/padic_numbers.lean + theorem padic_norm_e.norm_int_le_pow_iff_dvd - theorem padic_norm_e.norm_int_lt_pow_iff_dvd Added src/data/padics/ring_homs.lean + theorem padic_int.appr_lt + theorem padic_int.appr_mono + theorem padic_int.appr_spec + theorem padic_int.cast_to_zmod_pow + theorem padic_int.dense_range_int_cast + theorem padic_int.dense_range_nat_cast + theorem padic_int.dvd_appr_sub_appr + theorem padic_int.exists_mem_range + theorem padic_int.exists_mem_range_of_norm_rat_le_one + theorem padic_int.ext_of_to_zmod_pow + theorem padic_int.is_cau_seq_nth_hom + theorem padic_int.is_unit_denom + theorem padic_int.ker_to_zmod + theorem padic_int.ker_to_zmod_pow + def padic_int.lift + theorem padic_int.lift_self + theorem padic_int.lift_spec + theorem padic_int.lift_sub_val_mem_span + theorem padic_int.lift_unique + def padic_int.lim_nth_hom + theorem padic_int.lim_nth_hom_add + theorem padic_int.lim_nth_hom_mul + theorem padic_int.lim_nth_hom_one + theorem padic_int.lim_nth_hom_spec + theorem padic_int.lim_nth_hom_zero + def padic_int.mod_part + theorem padic_int.mod_part_lt_p + theorem padic_int.mod_part_nonneg + theorem padic_int.norm_sub_mod_part + theorem padic_int.norm_sub_mod_part_aux + def padic_int.nth_hom + def padic_int.nth_hom_seq + theorem padic_int.nth_hom_seq_add + theorem padic_int.nth_hom_seq_mul + theorem padic_int.nth_hom_seq_one + theorem padic_int.nth_hom_zero + theorem padic_int.pow_dvd_nth_hom_sub + theorem padic_int.sub_zmod_repr_mem + def padic_int.to_zmod + def padic_int.to_zmod_hom + def padic_int.to_zmod_pow + theorem padic_int.to_zmod_pow_eq_iff_ext + theorem padic_int.to_zmod_spec + theorem padic_int.zmod_cast_comp_to_zmod_pow + theorem padic_int.zmod_congr_of_sub_mem_max_ideal + theorem padic_int.zmod_congr_of_sub_mem_span + theorem padic_int.zmod_congr_of_sub_mem_span_aux + def padic_int.zmod_repr + theorem padic_int.zmod_repr_lt_p + theorem padic_int.zmod_repr_spec Modified src/data/real/cau_seq.lean + theorem cau_seq.add_equiv_add + theorem cau_seq.neg_equiv_neg Modified src/data/zmod/basic.lean + theorem zmod.cast_neg 2020-09-03 16:43:52 49173c0 ci(scripts/detect_errors.py): enforce silent builds (#4025) Refactor of #3989. This changes the GitHub Actions workflow so that the main build step and the test step run `lean` with `--json`. The JSON output is piped to `detect_errors.py` which now exits at the end of the build if there is any output and also writes a file `src/.noisy_files` with the names of the noisy Lean files. This file is now included in the olean caches uploaded to Azure. The "try to find olean cache" step now uses `src/.noisy_files` to delete all of the `.olean` files corresponding to the noisy Lean files, thus making the results of CI idempotent (hopefully). ESTIMATED CHANGES Modified .github/workflows/build.yml Modified .gitignore Modified scripts/detect_errors.py Modified scripts/fetch_olean_cache.sh Modified src/analysis/specific_limits.lean 2020-09-03 14:47:30 8b277a9 feat(category_theory/filtered): finite diagrams in filtered categories admit cocones (#4026) This is only step towards eventual results about filtered colimits commuting with finite limits, `forget CommRing` preserving filtered colimits, and applications to `Scheme`. ESTIMATED CHANGES Modified src/category_theory/filtered.lean + theorem category_theory.is_filtered.cocone_nonempty + theorem category_theory.is_filtered.coeq_condition + def category_theory.is_filtered.sup + theorem category_theory.is_filtered.sup_exists' + theorem category_theory.is_filtered.sup_exists + theorem category_theory.is_filtered.sup_objs_exists + def category_theory.is_filtered.to_sup + theorem category_theory.is_filtered.to_sup_commutes Added src/category_theory/fin_category.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/linear_algebra/basic.lean Modified src/logic/basic.lean + theorem exists_apply_eq_apply' + theorem exists_apply_eq_apply +/- theorem exists_eq' 2020-09-03 11:22:52 fa6485a feat(category_theory/limits/concrete): simp lemmas (#3973) Some specialisations of simp lemmas about (co)limits for concrete categories, where the equation in morphisms has been applied to an element. This isn't exhaustive; just the things I've wanted recently. ESTIMATED CHANGES Modified src/algebra/category/Group/limits.lean - theorem AddCommGroup.lift_π_apply Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/limits/concrete_category.lean - theorem category_theory.limits.cocone.naturality_concrete + theorem category_theory.limits.cocone.w_apply + theorem category_theory.limits.cocone.w_forget_apply + theorem category_theory.limits.colimit.w_apply + theorem category_theory.limits.colimit.ι_desc_apply - theorem category_theory.limits.cone.naturality_concrete + theorem category_theory.limits.cone.w_apply + theorem category_theory.limits.cone.w_forget_apply + theorem category_theory.limits.limit.lift_π_apply + theorem category_theory.limits.limit.w_apply 2020-09-03 04:04:29 dd633c2 feat(geometry/euclidean/circumcenter): more lemmas (#4028) Add some more basic lemmas about `circumcenter` and `circumradius`. ESTIMATED CHANGES Modified src/geometry/euclidean/circumcenter.lean + theorem affine.simplex.circumcenter_eq_centroid + theorem affine.simplex.circumcenter_eq_point + theorem affine.simplex.circumradius_nonneg + theorem affine.simplex.circumradius_pos + theorem affine.simplex.orthogonal_projection_circumcenter 2020-09-03 01:52:48 c86359f chore(scripts): update nolints.txt (#4030) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-03 01:52:46 ca5703d fix(docs/100.yaml): fix indentation in 100 list (#4029) ESTIMATED CHANGES Modified docs/100.yaml 2020-09-03 00:15:49 7b9db99 fix(test/*): make sure tests produce no output (#3947) Modify tests so that they produce no output. This also means removing all uses of `sorry`/`admit`. Replace `#eval` by `run_cmd` consistently. Tests that produced output before are modified so that it is checked that they roughly produce the right output Add a trace option to the `#simp` command that turns the message of only if the expression is simplified to `true`. All tests are modified so that they simplify to `true`. The randomized tests can produce output when they find a false positive, but that should basically never happen. Add some docstings to `src/tactic/interactive`. ESTIMATED CHANGES Modified src/tactic/interactive.lean Modified src/tactic/simp_command.lean Modified src/tactic/squeeze.lean Added test/README.md Modified test/continuity.lean Modified test/doc_commands.lean Modified test/general_recursion.lean Modified test/library_search/exp_le_exp.lean Modified test/library_search/filter.lean Modified test/library_search/nat.lean Modified test/linarith.lean +/- theorem T.zero_lt_one +/- theorem abs_nonneg' Modified test/lint_coe_t.lean Modified test/lint_coe_to_fun.lean Modified test/lint_simp_comm.lean Modified test/lint_simp_nf.lean Modified test/lint_simp_var_head.lean Modified test/logic_inline.lean Modified test/norm_cast_int.lean Modified test/norm_cast_lemma_order.lean Modified test/norm_cast_sum_lambda.lean Modified test/norm_num.lean Modified test/packaged_goal.lean Modified test/protec_proj.lean Modified test/refine_struct.lean Modified test/simp_command.lean Modified test/slim_check.lean Modified test/squeeze.lean Modified test/zify.lean 2020-09-02 19:38:06 9d42f6c feat(order/rel_iso): define `rel_hom` (relation-preserving maps) (#3946) Creates a typeclass for (unidirectionally) relation-preserving maps that are not necessarily injective (In the case of <= relations, this is essentially a bundled monotone map) Proves that these transfer well-foundedness between relations ESTIMATED CHANGES Modified src/order/ord_continuous.lean Modified src/order/order_iso_nat.lean Modified src/order/rel_iso.lean - def order_embedding.osymm - def order_iso.osymm + theorem rel_embedding.coe_coe_fn + theorem rel_embedding.ext + theorem rel_embedding.ext_iff - def rel_embedding.rsymm + def rel_embedding.to_rel_hom + theorem rel_embedding.to_rel_hom_eq_coe + theorem rel_hom.coe_fn_inj + theorem rel_hom.coe_fn_mk + theorem rel_hom.coe_fn_to_fun + theorem rel_hom.comp_apply + theorem rel_hom.ext + theorem rel_hom.ext_iff + theorem rel_hom.id_apply + theorem rel_hom.injective_of_increasing + theorem rel_hom.map_rel + def rel_hom.preimage + structure rel_hom +/- theorem rel_iso.coe_fn_mk +/- theorem rel_iso.ext + theorem rel_iso.ext_iff - def rel_iso.rsymm + theorem surjective.well_founded_iff Modified src/ring_theory/noetherian.lean 2020-09-02 15:51:17 57463fa feat(linear_algebra/affine_space): more lemmas (#3990) Add another batch of lemmas about affine spaces. These lemmas mostly relate to manipulating centroids and the relations between centroids of points given by different subsets of the index type. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/combination.lean + theorem finset.affine_combination_map + theorem finset.centroid_eq_affine_combination_fintype + theorem finset.centroid_insert_singleton + theorem finset.centroid_insert_singleton_fin + theorem finset.centroid_map + def finset.centroid_weights_indicator + theorem finset.centroid_weights_indicator_def + theorem finset.sum_centroid_weights_indicator + theorem finset.sum_centroid_weights_indicator_eq_one_of_card_eq_add_one + theorem finset.sum_centroid_weights_indicator_eq_one_of_card_ne_zero + theorem finset.sum_centroid_weights_indicator_eq_one_of_nonempty + theorem finset.weighted_vsub_map + theorem finset.weighted_vsub_of_point_map Modified src/linear_algebra/affine_space/finite_dimensional.lean Modified src/linear_algebra/affine_space/independent.lean + theorem affine.simplex.centroid_eq_iff + theorem affine.simplex.face_centroid_eq_centroid + theorem affine.simplex.face_centroid_eq_iff + theorem affine.simplex.range_face_points + theorem affine_independent_of_ne 2020-09-02 15:11:55 71ef45e chore(topology/sheaves): depend less on rfl (#3994) Another backport from the `prop_limits` branch. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/types.lean - theorem category_theory.limits.types.lift_π_apply' + theorem category_theory.limits.types.pi_lift_π_apply + theorem category_theory.limits.types.pi_map_π_apply Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.colimit_sound + theorem category_theory.limits.types.colimit_w_apply + theorem category_theory.limits.types.filtered_colimit.colimit_eq_iff_aux + theorem category_theory.limits.types.limit_w_apply + theorem category_theory.limits.types.map_π_apply + theorem category_theory.limits.types.ι_map_apply Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/stalks.lean 2020-09-02 13:19:05 895f6ee chore(algebra/category/CommRing/limits): don't use deprecated.subring (#4010) ESTIMATED CHANGES Modified src/algebra/category/CommRing/limits.lean + def Ring.sections_subring 2020-09-02 13:19:01 ddbdfeb chore(data/fin): succ_above defn compares fin terms instead of values (#3999) `fin.succ_above` is redefined to use a comparison between two `fin (n + 1)` instead of their coerced values in `nat`. This should delay any "escape" from `fin` into `nat` until necessary. Lemmas are added regarding `fin.succ_above`. Some proofs for existing lemmas reworked for new definition and simplified. Additionally, docstrings are added for related lemmas. New lemmas: Comparison after embedding: `succ_above_lt_ge` `succ_above_lt_gt` Injectivity lemmas: `succ_above_right_inj` `succ_above_right_injective` `succ_above_left_inj` `succ_above_left_injective` finset lemma: `fin.univ_succ_above` prod and sum lemmas: `fin.prod_univ_succ_above` ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_succ_pos +/- theorem fin.pred_above_succ_above +/- def fin.succ_above +/- theorem fin.succ_above_above +/- theorem fin.succ_above_below +/- theorem fin.succ_above_descend + theorem fin.succ_above_left_inj + theorem fin.succ_above_left_injective + theorem fin.succ_above_lt_ge + theorem fin.succ_above_lt_gt +/- theorem fin.succ_above_ne + theorem fin.succ_above_right_inj + theorem fin.succ_above_right_injective Modified src/data/fintype/basic.lean + theorem fin.univ_succ_above Modified src/data/fintype/card.lean +/- theorem fin.prod_univ_cast_succ +/- theorem fin.prod_univ_succ + theorem fin.prod_univ_succ_above +/- theorem fin.prod_univ_zero +/- theorem fin.sum_univ_cast_succ +/- theorem fin.sum_univ_succ + theorem fin.sum_univ_succ_above 2020-09-02 13:18:59 96c80e2 feat(ring_theory/localization): Localizations of integral extensions (#3942) The main definition is the algebra induced by localization at an algebra. Given an algebra `R → S` and a submonoid `M` of `R`, as well as localization maps `f : R → Rₘ` and `g : S → Sₘ`, there is a natural algebra `Rₘ → Sₘ` that makes the entire square commute, and this is defined as `localization_algebra`. The two main theorems are similar but distinct statements about integral elements and localizations: * `is_integral_localization_at_leading_coeff` says that if an element `x` is algebraic over `algebra R S`, then if we localize to a submonoid containing the leading coefficient the image of `x` will be integral. * `is_integral_localization` says that if `R → S` is an integral extension, then the algebra induced by localizing at any particular submonoid will be an integral extension. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean Modified src/data/monoid_algebra.lean Modified src/data/polynomial/degree.lean + theorem polynomial.leading_coeff_map' + theorem polynomial.leading_coeff_map_of_leading_coeff_ne_zero + theorem polynomial.nat_degree_map_of_leading_coeff_ne_zero Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_mul_eq_zero_of_left + theorem polynomial.eval₂_mul_eq_zero_of_right Modified src/data/polynomial/monic.lean + theorem polynomial.monic_mul_C_of_leading_coeff_mul_eq_one Modified src/group_theory/submonoid/operations.lean + theorem submonoid.mem_map_of_mem Modified src/ring_theory/algebra.lean + def algebra.algebra_map_submonoid + theorem algebra.mem_algebra_map_submonoid_of_mem Modified src/ring_theory/integral_closure.lean + theorem is_integral_of_is_integral_mul_unit Modified src/ring_theory/localization.lean - theorem eq_zero_of_ne_zero_of_mul_eq_zero + theorem is_integral_localization + theorem is_integral_localization_at_leading_coeff - theorem le_non_zero_divisors_of_domain - theorem map_mem_non_zero_divisors - theorem map_ne_zero_of_mem_non_zero_divisors - theorem mem_non_zero_divisors_iff_ne_zero - theorem mul_mem_non_zero_divisors - def non_zero_divisors Added src/ring_theory/non_zero_divisors.lean + theorem eq_zero_of_ne_zero_of_mul_left_eq_zero + theorem eq_zero_of_ne_zero_of_mul_right_eq_zero + theorem le_non_zero_divisors_of_domain + theorem map_mem_non_zero_divisors + theorem map_ne_zero_of_mem_non_zero_divisors + theorem mem_non_zero_divisors_iff_ne_zero + theorem mul_mem_non_zero_divisors + def non_zero_divisors Modified src/ring_theory/polynomial/rational_root.lean - theorem coeff_scale_roots - theorem coeff_scale_roots_nat_degree - theorem degree_scale_roots - theorem monic_scale_roots_iff - theorem nat_degree_scale_roots - theorem scale_roots_aeval_eq_zero - theorem scale_roots_aeval_eq_zero_of_aeval_div_eq_zero - theorem scale_roots_eval₂_eq_zero - theorem scale_roots_eval₂_eq_zero_of_eval₂_div_eq_zero - theorem scale_roots_ne_zero - theorem support_scale_roots_eq - theorem support_scale_roots_le - theorem zero_scale_roots Added src/ring_theory/polynomial/scale_roots.lean + theorem coeff_scale_roots + theorem coeff_scale_roots_nat_degree + theorem degree_scale_roots + theorem monic_scale_roots_iff + theorem nat_degree_scale_roots + theorem scale_roots_aeval_eq_zero + theorem scale_roots_aeval_eq_zero_of_aeval_div_eq_zero + theorem scale_roots_eval₂_eq_zero + theorem scale_roots_eval₂_eq_zero_of_eval₂_div_eq_zero + theorem scale_roots_ne_zero + theorem support_scale_roots_eq + theorem support_scale_roots_le + theorem zero_scale_roots 2020-09-02 11:43:54 cd36773 feat(linear_algebra/eigenspace): add generalized eigenspaces (#4015) Add the definition of generalized eigenspaces, eigenvectors and eigenvalues. Add some basic lemmas about them. Another step towards #3864. ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem nsmul_add_sub_nsmul + theorem pow_mul_pow_sub + theorem pow_sub_mul_pow + theorem sub_nsmul_nsmul_add Modified src/linear_algebra/eigenspace.lean + theorem module.End.eigenspace_le_generalized_eigenspace + theorem module.End.exp_ne_zero_of_has_generalized_eigenvalue + def module.End.generalized_eigenspace + theorem module.End.generalized_eigenspace_mono + def module.End.has_generalized_eigenvalue + theorem module.End.has_generalized_eigenvalue_of_has_eigenvalue + theorem module.End.has_generalized_eigenvalue_of_has_generalized_eigenvalue_of_le + def module.End.has_generalized_eigenvector 2020-09-02 08:30:45 7310eab feat(field_theory/adjoin): adjoining elements to fields (#3913) Defines adjoining elements to fields ESTIMATED CHANGES Added src/field_theory/adjoin.lean + theorem field.adjoin.algebra_map_mem + theorem field.adjoin.mono + theorem field.adjoin.range_algebra_map_subset + def field.adjoin + theorem field.adjoin_adjoin_left + theorem field.adjoin_contains_field_as_subfield + theorem field.adjoin_simple.algebra_map_gen + def field.adjoin_simple.gen + theorem field.adjoin_simple_adjoin_simple + theorem field.adjoin_singleton + theorem field.adjoin_subset_adjoin_iff + theorem field.adjoin_subset_iff + theorem field.adjoin_subset_subfield + theorem field.mem_adjoin_simple_self + theorem field.subfield_subset_adjoin_self + theorem field.subset_adjoin + theorem field.subset_adjoin_of_subset_left + theorem field.subset_adjoin_of_subset_right Modified src/ring_theory/algebra.lean + theorem algebra.set_range_subset 2020-09-02 06:01:22 8026ea8 feat(ring_theory/localization): localization away from an element (#4019) ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean + theorem add_submonoid.localization_map.away_map.lift_comp + theorem add_submonoid.localization_map.away_map.lift_eq + def localization.away.inv_self + theorem localization.away.mk_eq_monoid_of_mk' + def localization.away.monoid_of + def localization.away + theorem submonoid.localization_map.away_map.lift_comp + theorem submonoid.localization_map.away_map.lift_eq + def submonoid.localization_map.away_map +/- theorem submonoid.localization_map.mk'_self' +/- theorem submonoid.localization_map.mk'_self Modified src/ring_theory/jacobson.lean - theorem ideal.disjoint_closure_singleton_iff_not_mem + theorem ideal.disjoint_powers_iff_not_mem Modified src/ring_theory/localization.lean + theorem localization.away.mk_eq_mk' + def localization.away.of + theorem localization_map.away_map.lift_comp + theorem localization_map.away_map.lift_eq + def localization_map.away_map 2020-09-02 00:37:30 0b4444c feat(pfun/recursion): unbounded recursion (#3778) ESTIMATED CHANGES Added src/control/fix.lean + def roption.fix.approx + def roption.fix_aux + theorem roption.fix_def' Added src/control/lawful_fix.lean + theorem lawful_fix.fix_eq' + theorem pi.continuous_curry + theorem pi.continuous_uncurry + def pi.monotone_curry + def pi.monotone_uncurry + theorem pi.uncurry_curry_continuous + def roption.fix.approx_chain + theorem roption.fix.approx_le_fix + theorem roption.fix.approx_mem_approx_chain + theorem roption.fix.approx_mono' + theorem roption.fix.approx_mono + theorem roption.fix.exists_fix_le_approx + theorem roption.fix.le_f_of_mem_approx + theorem roption.fix.mem_iff + theorem roption.fix_eq + theorem roption.fix_eq_ωSup + theorem roption.fix_le + theorem roption.to_unit_cont + def roption.to_unit_mono Added src/data/nat/upto.lean + def nat.upto.succ + def nat.upto.zero + def nat.upto Modified src/data/pfun.lean + theorem roption.assert_neg + theorem roption.assert_pos + theorem roption.bind_le + theorem roption.eq_none_or_eq_some + theorem roption.le_total_of_le_of_le Modified src/data/sigma/basic.lean + def sigma.curry + def sigma.uncurry Modified src/order/bounded_lattice.lean Modified src/order/category/Preorder.lean - theorem preorder_hom.coe_id - theorem preorder_hom.coe_inj - def preorder_hom.comp - theorem preorder_hom.comp_id - theorem preorder_hom.ext - def preorder_hom.id - theorem preorder_hom.id_comp - structure preorder_hom Added src/order/category/omega_complete_partial_order.lean + def ωCPO.of + def ωCPO Added src/order/omega_complete_partial_order.lean + theorem omega_complete_partial_order.chain.exists_of_mem_map + def omega_complete_partial_order.chain.map + theorem omega_complete_partial_order.chain.map_comp + theorem omega_complete_partial_order.chain.map_id + theorem omega_complete_partial_order.chain.map_le_map + theorem omega_complete_partial_order.chain.mem_map + theorem omega_complete_partial_order.chain.mem_map_iff + def omega_complete_partial_order.chain.zip + def omega_complete_partial_order.chain + theorem omega_complete_partial_order.const_continuous' + def omega_complete_partial_order.continuous' + theorem omega_complete_partial_order.continuous.of_bundled' + theorem omega_complete_partial_order.continuous.of_bundled + theorem omega_complete_partial_order.continuous.to_bundled + theorem omega_complete_partial_order.continuous.to_monotone + def omega_complete_partial_order.continuous + theorem omega_complete_partial_order.continuous_comp + theorem omega_complete_partial_order.continuous_hom.bind_continuous' + theorem omega_complete_partial_order.continuous_hom.coe_apply + def omega_complete_partial_order.continuous_hom.comp + theorem omega_complete_partial_order.continuous_hom.comp_assoc + theorem omega_complete_partial_order.continuous_hom.comp_id + def omega_complete_partial_order.continuous_hom.const + theorem omega_complete_partial_order.continuous_hom.const_apply + theorem omega_complete_partial_order.continuous_hom.continuous + def omega_complete_partial_order.continuous_hom.flip + theorem omega_complete_partial_order.continuous_hom.forall_forall_merge' + theorem omega_complete_partial_order.continuous_hom.forall_forall_merge + def omega_complete_partial_order.continuous_hom.id + theorem omega_complete_partial_order.continuous_hom.id_comp + theorem omega_complete_partial_order.continuous_hom.ite_continuous' + theorem omega_complete_partial_order.continuous_hom.map_continuous' + def omega_complete_partial_order.continuous_hom.of_fun + def omega_complete_partial_order.continuous_hom.of_mono + def omega_complete_partial_order.continuous_hom.prod.apply + theorem omega_complete_partial_order.continuous_hom.seq_continuous' + def omega_complete_partial_order.continuous_hom.to_mono + theorem omega_complete_partial_order.continuous_hom.ωSup_bind + theorem omega_complete_partial_order.continuous_hom.ωSup_def + theorem omega_complete_partial_order.continuous_hom.ωSup_ωSup + structure omega_complete_partial_order.continuous_hom + theorem omega_complete_partial_order.continuous_id + theorem omega_complete_partial_order.id_continuous' + theorem omega_complete_partial_order.le_ωSup_of_le + def omega_complete_partial_order.preorder_hom.monotone_apply + def omega_complete_partial_order.preorder_hom.to_fun_hom + theorem omega_complete_partial_order.ωSup_le_iff + theorem omega_complete_partial_order.ωSup_le_ωSup_of_le + theorem omega_complete_partial_order.ωSup_total + def pi.monotone_apply + theorem pi.omega_complete_partial_order.flip₁_continuous' + theorem pi.omega_complete_partial_order.flip₂_continuous' + def preorder_hom.bind + def preorder_hom.const + def preorder_hom.prod.diag + def preorder_hom.prod.fst + def preorder_hom.prod.map + def preorder_hom.prod.snd + def preorder_hom.prod.zip + theorem roption.eq_of_chain + theorem roption.mem_chain_of_mem_ωSup + theorem roption.mem_ωSup + theorem roption.ωSup_eq_none + theorem roption.ωSup_eq_some Added src/order/preorder_hom.lean + theorem preorder_hom.coe_fun_mk + theorem preorder_hom.coe_id + theorem preorder_hom.coe_inj + def preorder_hom.comp + theorem preorder_hom.comp_id + theorem preorder_hom.ext + def preorder_hom.id + theorem preorder_hom.id_comp + structure preorder_hom Added test/general_recursion.lean + theorem roption.examples.div.cont + theorem roption.examples.div.equations.eqn_1 + def roption.examples.div.intl + def roption.examples.div + theorem roption.examples.easy.cont + theorem roption.examples.easy.equations.eqn_1 + def roption.examples.easy.intl + def roption.examples.easy + def roption.examples.f91' + theorem roption.examples.f91.cont + theorem roption.examples.f91.equations.eqn_1 + def roption.examples.f91.intl + def roption.examples.f91 + theorem roption.examples.f91_dom + theorem roption.examples.f91_spec' + theorem roption.examples.f91_spec + inductive roption.examples.tree + theorem roption.examples.tree_map'.cont + theorem roption.examples.tree_map'.equations.eqn_1 + theorem roption.examples.tree_map'.equations.eqn_2 + def roption.examples.tree_map'.intl + def roption.examples.tree_map' + theorem roption.examples.tree_map.cont + theorem roption.examples.tree_map.equations.eqn_1 + theorem roption.examples.tree_map.equations.eqn_2 + def roption.examples.tree_map.intl + def roption.examples.tree_map 2020-09-01 23:53:35 d94643c doc(slim_check): improve documentation, swap instances (#4023) ESTIMATED CHANGES Modified src/tactic/slim_check.lean Modified src/testing/slim_check/testable.lean 2020-09-01 23:53:33 ef22a33 feat(slim_check/errors): improve error messages and add useful instances (#4022) ESTIMATED CHANGES Modified src/tactic/slim_check.lean Modified src/testing/slim_check/sampleable.lean Modified src/testing/slim_check/testable.lean 2020-09-01 18:54:03 0c2e77c feat(testing): property based testing (basics) (#3915) Add `gen` monad, `sampleable` and `testable` type classes ESTIMATED CHANGES Modified src/data/lazy_list2.lean + def lazy_list.init + def lazy_list.interleave + def lazy_list.interleave_all Added src/tactic/slim_check.lean Added src/testing/slim_check/gen.lean + def slim_check.gen.choose + def slim_check.gen.choose_any + def slim_check.gen.choose_nat + def slim_check.gen.list_of + def slim_check.gen.one_of + def slim_check.gen.one_of_aux + def slim_check.gen.sized + def slim_check.gen.vector_of + def slim_check.gen + def slim_check.io.run_gen Added src/testing/slim_check/sampleable.lean + def slim_check.int.shrink' + def slim_check.int.shrink + def slim_check.lazy_list.lseq + def slim_check.list.shrink' + def slim_check.list.shrink_with + def slim_check.nat.shrink' + def slim_check.nat.shrink + def slim_check.print_samples + def slim_check.sampleable.lift + def slim_check.sampleable_char + def slim_check.sum.shrink + def slim_check.tree.sample + def slim_check.tree.shrink_with Added src/testing/slim_check/testable.lean + def slim_check.add_to_counter_example + def slim_check.add_var_to_counter_example + def slim_check.and_counter_example + def slim_check.combine + def slim_check.combine_testable + def slim_check.convert_counter_example' + def slim_check.convert_counter_example + def slim_check.give_up + def slim_check.is_failure + def slim_check.minimize + def slim_check.named_binder + def slim_check.or_counter_example + def slim_check.retry + structure slim_check.slim_check_cfg + def slim_check.tactic.decorations_of + def slim_check.test_result.to_string + inductive slim_check.test_result + def slim_check.testable.check' + def slim_check.testable.check + def slim_check.testable.run_suite + def slim_check.testable.run_suite_aux + def slim_check.trace_if_giveup 2020-09-01 12:58:32 329393a feat(analysis/calculus/times_cont_diff): iterated smoothness in terms of deriv (#4017) Currently, iterated smoothness is only formulated in terms of the Fréchet derivative. For one-dimensional functions, it is more handy to use the one-dimensional derivative `deriv`. This PR provides a basic interface in this direction. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_within_of_open Modified src/analysis/calculus/fderiv.lean + theorem fderiv_within_of_open Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_on.continuous_on_deriv_of_open + theorem times_cont_diff_on.continuous_on_deriv_within + theorem times_cont_diff_on.continuous_on_fderiv_of_open + theorem times_cont_diff_on.deriv_of_open + theorem times_cont_diff_on.deriv_within + theorem times_cont_diff_on.fderiv_of_open + theorem times_cont_diff_on_succ_iff_deriv_of_open + theorem times_cont_diff_on_succ_iff_deriv_within + theorem times_cont_diff_on_succ_iff_fderiv_of_open + theorem times_cont_diff_on_top_iff_deriv_of_open + theorem times_cont_diff_on_top_iff_deriv_within + theorem times_cont_diff_on_top_iff_fderiv_of_open 2020-09-01 12:58:30 849a5f9 feat(docs,ci): move overview, undergrad, and 100 theorems lists from website (#4016) See conversation at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/website.20overview/near/208659351 We'll store these lists in mathlib so that we can catch breakage as soon as it happens, rather than continually repairing the website build. This PR adds the lists and a CI step that checks that every declaration name appearing in the lists actually exists in the library. ESTIMATED CHANGES Modified .github/workflows/build.yml Added docs/100.yaml Added docs/overview.yaml Added docs/undergrad.yaml Added scripts/yaml_check.lean + def databases + def fails Added scripts/yaml_check.py 2020-09-01 12:18:06 6a5241f refactor(algebra/category/*, category_theory/concrete_category): generalize universes for concrete categories (#3687) Currently, concrete categories need to be `large_category`s. In particular, if objects live in `Type u`, then morphisms live in `Type (u + 1)`. For the category of modules over some ring R, this is not necessarily true, because we have to take the universe of R into account. One way to deal with this problem is to just force the universe of the ring to be the same as the universe of the module. This [sounds like it shouldn't be much of an issue](https://github.com/leanprover-community/mathlib/pull/1420#discussion_r322607455), but unfortunately, [it is](https://github.com/leanprover-community/mathlib/pull/3621#issue-458293664). This PR * removes the constraint that a concrete category must be a `large_category`, * generalizes `Module R` and `Algebra R` to accept a universe parameter for the module/algebra and * adds a ton of universe annotations which become neccesary because of the change As a reward, we get `abelian AddCommGroup.{u}` for arbitrary `u` without any (additional) work. ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean +/- def Algebra.of Modified src/algebra/category/Algebra/limits.lean +/- def Algebra.limit_π_alg_hom Modified src/algebra/category/CommRing/limits.lean +/- def SemiRing.limit_π_ring_hom Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebra/category/Group/abelian.lean Modified src/algebra/category/Group/limits.lean Modified src/algebra/category/Module/abelian.lean Modified src/algebra/category/Module/basic.lean +/- def Module.of +/- def linear_equiv.to_Module_iso' Modified src/algebra/category/Module/kernels.lean Modified src/algebra/category/Module/limits.lean Modified src/algebra/category/Module/monoidal.lean +/- theorem Module.monoidal_category.associator_hom_apply +/- theorem Module.monoidal_category.hom_apply +/- def Module.monoidal_category.left_unitor +/- theorem Module.monoidal_category.left_unitor_hom_apply +/- def Module.monoidal_category.right_unitor +/- theorem Module.monoidal_category.right_unitor_hom_apply +/- theorem Module.monoidal_category.triangle Modified src/algebra/category/Mon/limits.lean +/- def Mon.limit_π_monoid_hom Modified src/category_theory/concrete_category/basic.lean +/- def category_theory.concrete_category.has_coe_to_sort +/- def category_theory.forget +/- def category_theory.forget₂ +/- def category_theory.has_forget₂.mk' Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/category_theory/concrete_category/reflects_isomorphisms.lean Modified src/category_theory/monoidal/internal/Module.lean +/- theorem Module.Mon_Module_equivalence_Algebra.algebra_map +/- def Module.Mon_Module_equivalence_Algebra.functor +/- def Module.Mon_Module_equivalence_Algebra 2020-09-01 09:54:45 a97d71b feat(data/mv_polynomial): assorted lemmas (#4002) Assorted additions to `mv_polynomial`. This is more from the Witt vector development. Nothing too deep here, just scattered lemmas and the `constant_coeff` ring hom. Coauthored by: Johan Commelin Hopefully this builds -- it's split off from a branch with a lot of other changes. I think it shouldn't have dependencies! ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.aeval_eq_eval₂_hom + theorem mv_polynomial.aeval_monomial + theorem mv_polynomial.aeval_zero' + theorem mv_polynomial.aeval_zero + theorem mv_polynomial.alg_hom_C + theorem mv_polynomial.alg_hom_ext + theorem mv_polynomial.comp_aeval + theorem mv_polynomial.comp_eval₂_hom + def mv_polynomial.constant_coeff + theorem mv_polynomial.constant_coeff_C + theorem mv_polynomial.constant_coeff_X + theorem mv_polynomial.constant_coeff_eq + theorem mv_polynomial.constant_coeff_monomial + theorem mv_polynomial.eval_map + theorem mv_polynomial.eval₂_hom_C + theorem mv_polynomial.eval₂_hom_X' + theorem mv_polynomial.eval₂_hom_map_hom + theorem mv_polynomial.eval₂_hom_monomial + theorem mv_polynomial.eval₂_hom_rename + theorem mv_polynomial.eval₂_map + theorem mv_polynomial.map_aeval + theorem mv_polynomial.map_eval₂_hom + theorem mv_polynomial.ring_hom_ext 2020-09-01 06:48:21 2688d42 feat(archive/100-theorems-list): friendship theorem (nr 83) (#3970) defines friendship graphs proves the friendship theorem (freek #83) ESTIMATED CHANGES Added archive/100-theorems-list/83_friendship_graphs.lean + def common_friends + def exists_politician + theorem friendship.adj_matrix_mul_const_one_mod_p_of_regular + theorem friendship.adj_matrix_pow_mod_p_of_regular + theorem friendship.adj_matrix_pow_three_of_not_adj + theorem friendship.adj_matrix_sq_mod_p_of_regular + theorem friendship.adj_matrix_sq_mul_const_one_of_regular + theorem friendship.adj_matrix_sq_of_ne + theorem friendship.adj_matrix_sq_of_regular + theorem friendship.card_mod_p_of_regular + theorem friendship.card_of_regular + theorem friendship.degree_eq_of_not_adj + theorem friendship.exists_politician_of_degree_eq_two + theorem friendship.exists_politician_of_degree_le_one + theorem friendship.exists_politician_of_degree_le_two + theorem friendship.false_of_three_le_degree + theorem friendship.is_regular_of_not_exists_politician + theorem friendship.neighbor_finset_eq_of_degree_eq_two + def friendship + theorem friendship_theorem + theorem mem_common_friends Modified docs/references.bib 2020-09-01 04:51:03 12763ec chore(*): more use of bundled ring homs (#4012) ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.prod_hom Modified src/data/multiset/basic.lean +/- theorem multiset.prod_hom Modified src/data/polynomial/eval.lean Modified src/ring_theory/ideal/operations.lean 2020-09-01 04:51:01 51546d2 chore(ring_theory/free_ring): use bundled ring homs (#4011) Use bundled ring homs in `free_ring` and `free_comm_ring`. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/ring_theory/free_comm_ring.lean - theorem free_comm_ring.coe_lift_hom +/- def free_comm_ring.lift - theorem free_comm_ring.lift_add +/- theorem free_comm_ring.lift_comp_of - def free_comm_ring.lift_hom - theorem free_comm_ring.lift_hom_comp_of - theorem free_comm_ring.lift_mul - theorem free_comm_ring.lift_neg - theorem free_comm_ring.lift_one - theorem free_comm_ring.lift_pow - theorem free_comm_ring.lift_sub - theorem free_comm_ring.lift_zero - theorem free_comm_ring.map_add - theorem free_comm_ring.map_mul - theorem free_comm_ring.map_neg - theorem free_comm_ring.map_one - theorem free_comm_ring.map_pow - theorem free_comm_ring.map_sub - theorem free_comm_ring.map_zero - theorem free_comm_ring.restriction_add - theorem free_comm_ring.restriction_mul - theorem free_comm_ring.restriction_neg - theorem free_comm_ring.restriction_one - theorem free_comm_ring.restriction_sub - theorem free_comm_ring.restriction_zero Modified src/ring_theory/free_ring.lean +/- def free_ring.lift - theorem free_ring.lift_add - def free_ring.lift_hom - theorem free_ring.lift_mul - theorem free_ring.lift_neg - theorem free_ring.lift_one - theorem free_ring.lift_pow - theorem free_ring.lift_sub - theorem free_ring.lift_zero +/- def free_ring.map - theorem free_ring.map_add - def free_ring.map_hom - theorem free_ring.map_mul - theorem free_ring.map_neg +/- theorem free_ring.map_of - theorem free_ring.map_one - theorem free_ring.map_pow - theorem free_ring.map_sub - theorem free_ring.map_zero 2020-09-01 04:50:59 93468fe chore(algebraic_geometry/Spec): reduce imports (#4007) The main change is to remove some `example`s from `topology.category.TopCommRing`, so that we don't need to know about the real and complex numbers on the way to defining a `Scheme`. While I was staring at `leanproject import-graph --to algebraic_geometry.Scheme`, I also removed a bunch of redundant or unused imports elsewhere. ESTIMATED CHANGES Modified src/algebra/category/Group/limits.lean Modified src/algebraic_geometry/Scheme.lean Modified src/algebraic_geometry/locally_ringed_space.lean Modified src/algebraic_geometry/sheafed_space.lean Modified src/algebraic_geometry/structure_sheaf.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/limits/types.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/localization.lean Modified src/topology/basic.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/local_homeomorph.lean Modified src/topology/sheaves/presheaf_of_functions.lean Modified src/topology/sheaves/sheaf.lean 2020-09-01 04:50:57 551cf8e refactor(algebra/associates): unite `associates.prime` with `prime` (#3988) deletes `associates.prime`, replaces it with the existing `prime` ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.eq_of_mul_eq_mul_right + theorem associates.irreducible_iff_prime_iff + theorem associates.le_of_mul_le_mul_right + theorem associates.mk_dvd_mk - theorem associates.prime.ne_one - theorem associates.prime.ne_zero - def associates.prime +/- theorem dvd_iff_dvd_of_rel_right +/- theorem eq_zero_iff_of_associated +/- theorem irreducible_iff_of_associated +/- theorem irreducible_of_associated + theorem left_dvd_or_dvd_right_of_dvd_prime_mul +/- theorem ne_zero_iff_of_associated + theorem prime.ne_one +/- theorem prime_iff_of_associated +/- theorem prime_of_associated Modified src/ring_theory/integral_domain.lean - theorem left_dvd_or_dvd_right_of_dvd_prime_mul Modified src/ring_theory/principal_ideal_domain.lean +/- theorem principal_ideal_ring.associates_irreducible_iff_prime 2020-09-01 04:50:54 7cd67b5 feat(category_theory/limits/shapes/terminal): is_terminal object (#3957) Add language to talk about when an object is terminal, and generalise some results to use this ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean + theorem category_theory.initial_mono +/- def category_theory.mul_zero +/- def category_theory.pow_zero + def category_theory.strict_initial +/- def category_theory.zero_mul Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.as_empty_cocone + def category_theory.limits.as_empty_cone + def category_theory.limits.initial_is_initial + theorem category_theory.limits.is_initial.epi_to + theorem category_theory.limits.is_initial.hom_ext + def category_theory.limits.is_initial.to + def category_theory.limits.is_initial + def category_theory.limits.is_terminal.from + theorem category_theory.limits.is_terminal.hom_ext + theorem category_theory.limits.is_terminal.mono_from + def category_theory.limits.is_terminal + def category_theory.limits.terminal_is_terminal 2020-09-01 03:18:29 fc57cf4 feat(data/{finset,finsupp,multiset}): more assorted lemmas (#4006) Another grab bag of facts from the Witt vector branch. Coauthored by: Johan Commelin ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.union_subset_union + theorem multiset.disjoint_to_finset + theorem multiset.to_finset_subset + theorem multiset.to_finset_union Modified src/data/finset/fold.lean + theorem finset.fold_sup_bot_singleton + theorem finset.fold_union_empty_singleton Modified src/data/finset/lattice.lean + theorem finset.mem_sup + theorem finset.sup_subset Modified src/data/finsupp/basic.lean + theorem finsupp.mem_to_multiset Modified src/data/multiset/basic.lean + theorem multiset.count_ne_zero 2020-09-01 01:12:55 c33b41b chore(scripts): update nolints.txt (#4009) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-09-01 00:04:06 e053bda feat(category_theory/monoidal/internal): Mon_ (Module R) ≌ Algebra R (#3695) The category of internal monoid objects in `Module R` is equivalent to the category of "native" bundled `R`-algebras. Moreover, this equivalence is compatible with the forgetful functors to `Module R`. ESTIMATED CHANGES Modified src/algebra/category/Module/monoidal.lean - theorem Module.monoidal_category.associator_hom + theorem Module.monoidal_category.associator_hom_apply + theorem Module.monoidal_category.hom_apply - theorem Module.monoidal_category.left_unitor_hom + theorem Module.monoidal_category.left_unitor_hom_apply - theorem Module.monoidal_category.right_unitor_hom + theorem Module.monoidal_category.right_unitor_hom_apply Modified src/algebra/module/basic.lean + theorem linear_map.lcongr_fun Added src/category_theory/monoidal/internal/Module.lean + theorem Module.Mon_Module_equivalence_Algebra.algebra_map + def Module.Mon_Module_equivalence_Algebra.functor + def Module.Mon_Module_equivalence_Algebra.inverse + def Module.Mon_Module_equivalence_Algebra.inverse_obj + def Module.Mon_Module_equivalence_Algebra + def Module.Mon_Module_equivalence_Algebra_forget Modified src/category_theory/monoidal/types.lean Modified src/ring_theory/algebra.lean + theorem algebra.linear_map_apply + def algebra.lmul' + theorem algebra.lmul'_apply 2020-08-31 22:41:43 036527a feat(linear_algebra/finite_dimensional): eq_of_le_of_findim_eq (#4005) Add a variant of `eq_top_of_findim_eq`, where instead of proving a submodule equal to `⊤`, it's shown equal to another finite-dimensional submodule with the same dimension that contains it. The two lemmas are related by the `comap_subtype` lemmas, so the proof is short, but it still seems useful to have this form. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.eq_of_le_of_findim_eq 2020-08-31 22:11:18 be3b175 feat(analysis/normed_space/real_inner_product): inner_add_sub_eq_zero_iff (#4004) Add a lemma that the sum and difference of two vectors are orthogonal if and only if they have the same norm. (This can be interpreted geometrically as saying e.g. that a median of a triangle from a vertex is orthogonal to the opposite edge if and only if the triangle is isosceles at that vertex.) ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem inner_add_sub_eq_zero_iff 2020-08-31 19:25:35 d0a8cc4 feat(analysis/special_functions/trigonometric): ranges of `real.sin` and `real.cos` (#3998) ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem real.exists_cos_eq + theorem real.range_cos + theorem real.range_sin 2020-08-31 17:07:43 d4484a4 fix(widget): workaround for webview rendering bug (#3997) See https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/extension.20performance The bug seems to go away if we collapse the extra nested spans made by `block` in to one span. Still should do some tests to make sure this doesn't break anything else. Minimal breaking example is: ``` import tactic.interactive_expr example : 0+1+2+3+4+5+6+7+8+9 + 0+1+2+3+4+5+6+7+8+9 = 0+1+2+3+4+5+6+7+8+9 := by skip ``` ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-08-31 15:32:01 d2b18a1 feat(algebra/field, ring_theory/ideal/basic): an ideal is maximal iff the quotient is a field (#3986) One half of the theorem was already proven (the implication maximal ideal implies that the quotient is a field), but the other half was not, mainly because it was missing a necessary predicate. I added the predicate is_field that can be used to tell Lean that the usual ring structure on the quotient extends to a field. The predicate along with proofs to move between is_field and field were provided by Kevin Buzzard. I also added a lemma that the inverse is unique in is_field. At the end I also added the iff statement of the theorem. ESTIMATED CHANGES Modified src/algebra/field.lean + theorem field.to_is_field + structure is_field + theorem uniq_inv_of_is_field Modified src/ring_theory/ideal/basic.lean + theorem ideal.quotient.maximal_ideal_iff_is_field_quotient + theorem ideal.quotient.maximal_of_is_field 2020-08-31 14:45:05 8089f50 chore(category_theory/limits): some simp lemmas (#3993) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.binary_cofan.ι_app_left + theorem category_theory.limits.binary_cofan.ι_app_right + theorem category_theory.limits.binary_fan.π_app_left + theorem category_theory.limits.binary_fan.π_app_right 2020-08-31 13:17:44 9e9e318 feat(data/fin): simplify fin.mk (#3996) After the recent changes to make `fin n` a subtype, expressions involving `fin.mk` were not getting simplified as they used to be, since the `simp` lemmas are for the anonymous constructor, which is `subtype.mk` not `fin.mk`. Add a `simp` lemma converting `fin.mk` to the anonymous constructor. In particular, unsimplified expressions involving `fin.mk` were coming out of `fin_cases` (I think this comes from `fin_range` in `data/list/range.lean` using `fin.mk`). I don't know if that should be avoiding creating the `fin.mk` expressions in the first place, but simplifying them seems a good idea in any case. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.mk_eq_subtype_mk 2020-08-31 08:47:27 10ebb71 feat(measure_theory): induction principles in measure theory (#3978) This commit adds three induction principles for measure theory * To prove something for arbitrary simple functions * To prove something for arbitrary measurable functions into `ennreal` * To prove something for arbitrary measurable + integrable functions. This also adds some basic lemmas to various files. Not all of them are used in this PR, some will be used by near-future PRs. ESTIMATED CHANGES Modified src/algebra/group/pi.lean + theorem pi.comp_one + theorem pi.const_one + theorem pi.one_comp Modified src/data/indicator_function.lean + theorem set.comp_indicator + theorem set.indicator_add_eq_left + theorem set.indicator_add_eq_right +/- theorem set.indicator_comp_of_zero + theorem set.indicator_zero' + theorem set.piecewise_eq_indicator Modified src/data/list/indexes.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.div_pos_iff +/- theorem ennreal.div_zero_iff + theorem ennreal.lt_top_of_mul_lt_top_left + theorem ennreal.lt_top_of_mul_lt_top_right +/- theorem ennreal.mul_eq_top +/- theorem ennreal.mul_lt_top +/- theorem ennreal.mul_ne_top +/- theorem ennreal.mul_pos + theorem ennreal.ne_top_of_mul_ne_top_left + theorem ennreal.ne_top_of_mul_ne_top_right + theorem ennreal.not_lt_top +/- theorem ennreal.to_real_eq_to_real +/- theorem ennreal.to_real_mul_to_real Modified src/data/set/basic.lean + theorem eq.subset + theorem set.diff_diff_comm +/- theorem set.image_compl_preimage + theorem set.image_diff_preimage + theorem set.image_preimage_eq_iff + theorem set.range_subset_singleton Modified src/data/set/function.lean + theorem set.comp_piecewise + theorem set.piecewise_same + theorem set.range_piecewise Modified src/logic/function/basic.lean + theorem function.comp_const + theorem function.const_apply + theorem function.const_comp +/- theorem function.injective.of_comp +/- theorem function.left_inverse.comp +/- theorem function.right_inverse.comp +/- theorem function.surjective.of_comp Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/integration.lean + theorem measurable.ennreal_induction Modified src/measure_theory/l1_space.lean Modified src/measure_theory/set_integral.lean + theorem measure_theory.integrable.induction + theorem measure_theory.integrable_add 2020-08-31 08:11:24 bf7487b fix(algebraic_geometry/Spec): inline TeX in heading (#3992) ESTIMATED CHANGES Modified src/algebraic_geometry/Spec.lean 2020-08-31 05:09:37 b79fc03 feature(algebraic_geometry/Scheme): the category of schemes (#3961) The definition of a `Scheme`, and the category of schemes as the full subcategory of locally ringed spaces. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring_hom.is_unit_map Added src/algebraic_geometry/Scheme.lean + def algebraic_geometry.Scheme.empty + def algebraic_geometry.Scheme.to_LocallyRingedSpace + structure algebraic_geometry.Scheme Added src/algebraic_geometry/Spec.lean + def algebraic_geometry.Spec.PresheafedSpace + def algebraic_geometry.Spec.SheafedSpace Added src/algebraic_geometry/locally_ringed_space.lean + def algebraic_geometry.LocallyRingedSpace.comp + def algebraic_geometry.LocallyRingedSpace.forget_to_SheafedSpace + def algebraic_geometry.LocallyRingedSpace.hom + theorem algebraic_geometry.LocallyRingedSpace.hom_ext + def algebraic_geometry.LocallyRingedSpace.id + def algebraic_geometry.LocallyRingedSpace.stalk + def algebraic_geometry.LocallyRingedSpace.stalk_map + def algebraic_geometry.LocallyRingedSpace.to_Top + def algebraic_geometry.LocallyRingedSpace.𝒪 + structure algebraic_geometry.LocallyRingedSpace Modified src/algebraic_geometry/presheafed_space.lean +/- theorem algebraic_geometry.PresheafedSpace.as_coe + def algebraic_geometry.PresheafedSpace.const +/- theorem algebraic_geometry.PresheafedSpace.mk_coe + def algebraic_geometry.PresheafedSpace.restrict + theorem category_theory.functor.map_presheaf_obj_presheaf - theorem category_theory.functor.map_presheaf_obj_𝒪 Modified src/algebraic_geometry/prime_spectrum.lean + def prime_spectrum.basic_open + theorem prime_spectrum.basic_open_open + theorem prime_spectrum.punit Added src/algebraic_geometry/sheafed_space.lean + theorem algebraic_geometry.SheafedSpace.as_coe + theorem algebraic_geometry.SheafedSpace.comp_base + theorem algebraic_geometry.SheafedSpace.comp_c_app + def algebraic_geometry.SheafedSpace.forget + def algebraic_geometry.SheafedSpace.forget_to_PresheafedSpace + theorem algebraic_geometry.SheafedSpace.id_base + theorem algebraic_geometry.SheafedSpace.id_c + theorem algebraic_geometry.SheafedSpace.id_c_app + theorem algebraic_geometry.SheafedSpace.mk_coe + def algebraic_geometry.SheafedSpace.punit + def algebraic_geometry.SheafedSpace.restrict + def algebraic_geometry.SheafedSpace.sheaf + structure algebraic_geometry.SheafedSpace Modified src/algebraic_geometry/stalks.lean +/- def algebraic_geometry.PresheafedSpace.stalk Modified src/algebraic_geometry/structure_sheaf.lean + def algebraic_geometry.stalk_iso + def algebraic_geometry.stalk_iso_Type + def algebraic_geometry.stalk_to_fiber_ring_hom + theorem algebraic_geometry.structure_sheaf_stalk_to_fiber_injective + theorem algebraic_geometry.structure_sheaf_stalk_to_fiber_surjective Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.jointly_surjective' Modified src/data/equiv/transfer_instance.lean Modified src/ring_theory/ideal/basic.lean + theorem is_unit_map_iff + theorem local_of_surjective Modified src/ring_theory/localization.lean Modified src/topology/category/Top/opens.lean + def is_open_map.functor + def topological_space.opens.inclusion + theorem topological_space.opens.inclusion_open_embedding Modified src/topology/opens.lean + theorem topological_space.opens.coe_inf + theorem topological_space.opens.le_def + theorem topological_space.opens.mk_inf_mk + theorem topological_space.opens.supr_mk Modified src/topology/sheaves/local_predicate.lean + theorem Top.prelocal_predicate.sheafify_of Modified src/topology/sheaves/sheaf.lean + def Top.sheaf_condition.cover.of_open_embedding + def Top.sheaf_condition.diagram.iso_of_open_embedding + def Top.sheaf_condition.fork.iso_of_open_embedding + def Top.sheaf_condition.pi_inters.iso_of_open_embedding + def Top.sheaf_condition.pi_opens.iso_of_open_embedding Modified src/topology/sheaves/stalks.lean + theorem Top.presheaf.germ_exist 2020-08-30 23:20:13 e88843c feat(data/finset/sort): range_mono_of_fin (#3987) Add a `simp` lemma giving the range of `mono_of_fin`. ESTIMATED CHANGES Modified src/data/finset/sort.lean + theorem finset.range_mono_of_fin 2020-08-30 18:40:35 861f182 feat(widget): add go to definition button. (#3982) Now you can hit a new button in the tooltip and it will reveal the definition location in the editor! ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-08-30 17:12:27 f9ee416 feat(topology/tactic): optionally make `continuity` verbose with `?` (#3962) ESTIMATED CHANGES Modified src/topology/tactic.lean 2020-08-30 15:37:08 1073204 feat(logic/nontrivial): function.injective.exists_ne (#3983) Add a lemma that an injective function from a nontrivial type has an argument at which it does not take a given value. ESTIMATED CHANGES Modified src/logic/nontrivial.lean 2020-08-30 11:24:28 942c779 feat(meta/widget): Add css classes for indentation as required by group and nest. (#3764) this is a transplant of https://github.com/leanprover-community/lean/pull/439 the relevant css section looks more or less like this: ```css .indent-code { text-indent: calc(var(--indent-level) * -1ch); padding-left: calc(var(--indent-level) * 1ch); } ``` For details, one can play around here: https://jsfiddle.net/xbzhL60m/45/ ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-08-30 05:38:17 ffce8f6 feat(data/complex/is_R_or_C): add typeclass for real or complex (#3934) ESTIMATED CHANGES Added src/data/complex/is_R_or_C.lean + theorem is_R_or_C.I_im + theorem is_R_or_C.I_mul_I + theorem is_R_or_C.I_mul_I_of_nonzero + theorem is_R_or_C.I_re + theorem is_R_or_C.I_to_complex + theorem is_R_or_C.I_to_real + theorem is_R_or_C.abs_abs + theorem is_R_or_C.abs_abs_sub_le_abs_sub + theorem is_R_or_C.abs_add + theorem is_R_or_C.abs_cast_nat + theorem is_R_or_C.abs_conj + theorem is_R_or_C.abs_div + theorem is_R_or_C.abs_eq_zero + theorem is_R_or_C.abs_im_div_abs_le_one + theorem is_R_or_C.abs_im_le_abs + theorem is_R_or_C.abs_inv + theorem is_R_or_C.abs_mul + theorem is_R_or_C.abs_ne_zero + theorem is_R_or_C.abs_neg + theorem is_R_or_C.abs_nonneg + theorem is_R_or_C.abs_of_nat + theorem is_R_or_C.abs_of_nonneg + theorem is_R_or_C.abs_of_real + theorem is_R_or_C.abs_one + theorem is_R_or_C.abs_pos + theorem is_R_or_C.abs_re_div_abs_le_one + theorem is_R_or_C.abs_re_le_abs + theorem is_R_or_C.abs_sub + theorem is_R_or_C.abs_sub_le + theorem is_R_or_C.abs_to_complex + theorem is_R_or_C.abs_to_real + theorem is_R_or_C.abs_two + theorem is_R_or_C.abs_zero + theorem is_R_or_C.add_conj + theorem is_R_or_C.bit0_im + theorem is_R_or_C.bit0_re + theorem is_R_or_C.bit1_im + theorem is_R_or_C.bit1_re + theorem is_R_or_C.char_zero_R_or_C + theorem is_R_or_C.conj_bijective + theorem is_R_or_C.conj_bit0 + theorem is_R_or_C.conj_bit1 + theorem is_R_or_C.conj_conj + theorem is_R_or_C.conj_eq_zero + theorem is_R_or_C.conj_im + theorem is_R_or_C.conj_inj + theorem is_R_or_C.conj_involutive + theorem is_R_or_C.conj_neg_I + theorem is_R_or_C.conj_of_real + theorem is_R_or_C.conj_re + theorem is_R_or_C.conj_to_complex + theorem is_R_or_C.conj_to_real + theorem is_R_or_C.div_I + theorem is_R_or_C.div_im + theorem is_R_or_C.div_re + theorem is_R_or_C.eq_conj_iff_re + theorem is_R_or_C.eq_conj_iff_real + theorem is_R_or_C.ext + theorem is_R_or_C.ext_iff + theorem is_R_or_C.im_le_abs + theorem is_R_or_C.im_sq_le_norm_sq + theorem is_R_or_C.im_to_complex + theorem is_R_or_C.im_to_real + theorem is_R_or_C.int_cast_im + theorem is_R_or_C.int_cast_re + theorem is_R_or_C.inv_I + theorem is_R_or_C.inv_def + theorem is_R_or_C.inv_im + theorem is_R_or_C.inv_re + theorem is_R_or_C.is_cau_seq_abs + theorem is_R_or_C.is_cau_seq_im + theorem is_R_or_C.is_cau_seq_re + theorem is_R_or_C.mul_conj + theorem is_R_or_C.mul_im + theorem is_R_or_C.mul_re + theorem is_R_or_C.mul_self_abs + theorem is_R_or_C.nat_cast_im + theorem is_R_or_C.nat_cast_re + def is_R_or_C.norm_sq + theorem is_R_or_C.norm_sq_add + theorem is_R_or_C.norm_sq_conj + theorem is_R_or_C.norm_sq_div + theorem is_R_or_C.norm_sq_eq_abs + theorem is_R_or_C.norm_sq_eq_def' + theorem is_R_or_C.norm_sq_eq_def + theorem is_R_or_C.norm_sq_eq_zero + theorem is_R_or_C.norm_sq_inv + theorem is_R_or_C.norm_sq_mul + theorem is_R_or_C.norm_sq_neg + theorem is_R_or_C.norm_sq_nonneg + theorem is_R_or_C.norm_sq_of_real + theorem is_R_or_C.norm_sq_one + theorem is_R_or_C.norm_sq_pos + theorem is_R_or_C.norm_sq_sub + theorem is_R_or_C.norm_sq_to_complex + theorem is_R_or_C.norm_sq_to_real + theorem is_R_or_C.norm_sq_zero + theorem is_R_or_C.of_real_add + theorem is_R_or_C.of_real_alg + theorem is_R_or_C.of_real_bit0 + theorem is_R_or_C.of_real_bit1 + theorem is_R_or_C.of_real_div + theorem is_R_or_C.of_real_eq_zero + theorem is_R_or_C.of_real_fpow + def is_R_or_C.of_real_hom + theorem is_R_or_C.of_real_im + theorem is_R_or_C.of_real_inj + theorem is_R_or_C.of_real_int_cast + theorem is_R_or_C.of_real_inv + theorem is_R_or_C.of_real_mul + theorem is_R_or_C.of_real_nat_cast + theorem is_R_or_C.of_real_neg + theorem is_R_or_C.of_real_one + theorem is_R_or_C.of_real_pow + theorem is_R_or_C.of_real_rat_cast + theorem is_R_or_C.of_real_re + theorem is_R_or_C.of_real_sub + theorem is_R_or_C.of_real_to_complex + theorem is_R_or_C.of_real_to_real + theorem is_R_or_C.of_real_zero + theorem is_R_or_C.one_im + theorem is_R_or_C.one_re + theorem is_R_or_C.rat_cast_im + theorem is_R_or_C.rat_cast_re + theorem is_R_or_C.re_add_im + theorem is_R_or_C.re_eq_add_conj + theorem is_R_or_C.re_le_abs + theorem is_R_or_C.re_sq_le_norm_sq + theorem is_R_or_C.re_to_complex + theorem is_R_or_C.re_to_real + theorem is_R_or_C.smul_im' + theorem is_R_or_C.smul_im + theorem is_R_or_C.smul_re' + theorem is_R_or_C.smul_re + theorem is_R_or_C.sub_conj + theorem is_R_or_C.two_ne_zero + theorem is_R_or_C.zero_im + theorem is_R_or_C.zero_re 2020-08-30 04:53:26 a18f142 feat(set_theory/game): computation of grundy_value (nim n + nim m) (#3977) ESTIMATED CHANGES Modified src/data/nat/bitwise.lean + theorem nat.lxor_trichotomy Modified src/set_theory/game/nim.lean + theorem pgame.equiv_iff_grundy_value_eq +/- theorem pgame.equiv_nim_iff_grundy_value_eq + theorem pgame.equiv_zero_iff_grundy_value + theorem pgame.grundy_value_add + theorem pgame.grundy_value_nim_add_nim + theorem pgame.grundy_value_zero + theorem pgame.nim.exists_move_left_eq + theorem pgame.nim.exists_ordinal_move_left_eq + theorem pgame.nim_add_nim_equiv Modified src/set_theory/pgame.lean + theorem pgame.equiv_congr_left + theorem pgame.equiv_congr_right 2020-08-30 01:59:33 dfdb38a feat(data/fin): nontrivial instance (#3979) Add an instance `nontrivial (fin (n + 2))`. ESTIMATED CHANGES Modified src/data/fin.lean 2020-08-29 17:36:23 14e7fe8 feat(linear_algebra/char_poly/coeff,*): prerequisites for friendship theorem (#3953) adds several assorted lemmas about matrices and `zmod p` proves that if `M` is a square matrix with entries in `zmod p`, then `tr M^p = tr M`, needed for friendship theorem ESTIMATED CHANGES Modified src/algebra/char_p.lean +/- theorem add_pow_char + theorem add_pow_char_pow + theorem add_pow_char_pow_of_commute + theorem iterate_frobenius + theorem sub_pow_char + theorem sub_pow_char_of_commute + theorem sub_pow_char_pow + theorem sub_pow_char_pow_of_commute Modified src/data/matrix/basic.lean + theorem matrix.map_sub + theorem matrix.scalar_inj + theorem matrix.subsingleton_of_empty_left + theorem matrix.subsingleton_of_empty_right Added src/data/matrix/char_p.lean Modified src/data/polynomial/basic.lean + theorem polynomial.commute_X Modified src/field_theory/finite.lean + theorem finite_field.expand_card + theorem finite_field.frobenius_pow + theorem finite_field.pow_card +/- theorem finite_field.pow_card_sub_one_eq_one + theorem zmod.card_units + theorem zmod.expand_card + theorem zmod.pow_card + theorem zmod.pow_card_sub_one_eq_one + theorem zmod.units_pow_card_sub_one_eq_one Modified src/field_theory/separable.lean + theorem polynomial.expand_char + theorem polynomial.map_expand + theorem polynomial.map_expand_pow_char Modified src/linear_algebra/char_poly/coeff.lean + theorem finite_field.char_poly_pow_card + theorem finite_field.trace_pow_card + theorem zmod.char_poly_pow_card + theorem zmod.trace_pow_card Modified src/number_theory/quadratic_reciprocity.lean - theorem zmod.card_units - theorem zmod.fermat_little - theorem zmod.fermat_little_units 2020-08-29 17:36:21 4c4243c feat(linear_algebra): determinant of vectors in a basis (#3919) From the sphere eversion project, define the determinant of a family of vectors with respects to a basis. The main result is `is_basis.iff_det` asserting a family of vectors is a basis iff its determinant in some basis is invertible. Also renames `equiv_fun_basis` to `is_basis.equiv_fun` and `equiv_fun_basis_symm_apply` to `is_basis.equiv_fun_symm_apply`, in order to use dot notation. ESTIMATED CHANGES Modified src/algebra/big_operators/pi.lean + theorem fintype.prod_apply Modified src/analysis/normed_space/finite_dimension.lean Modified src/linear_algebra/basic.lean + theorem linear_equiv.map_sum Modified src/linear_algebra/basis.lean - def equiv_fun_basis - theorem equiv_fun_basis_symm_apply + def is_basis.equiv_fun + theorem is_basis.equiv_fun_apply + theorem is_basis.equiv_fun_self + theorem is_basis.equiv_fun_symm_apply + theorem is_basis.equiv_fun_total + theorem is_basis.repr_self_apply Modified src/linear_algebra/matrix.lean + def is_basis.det + theorem is_basis.det_apply + theorem is_basis.det_self + theorem is_basis.iff_det + def is_basis.to_matrix + theorem is_basis.to_matrix_apply + def is_basis.to_matrix_equiv + theorem is_basis.to_matrix_self + theorem is_basis.to_matrix_update + theorem linear_equiv.is_unit_det + def linear_equiv.of_is_unit_det - theorem matrix.linear_equiv.is_unit_det - def matrix.linear_equiv.of_is_unit_det 2020-08-29 15:59:15 94b1292 doc(topology/sheaves): update module docs (#3971) ESTIMATED CHANGES Modified src/topology/sheaves/local_predicate.lean Modified src/topology/sheaves/sheaf_of_functions.lean 2020-08-29 15:59:13 ba41f0a feat(data/nat): API for test_bit and bitwise operations (#3964) ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.bxor_ff_left + theorem bool.bxor_ff_right Modified src/data/nat/basic.lean - theorem nat.bitwise_comm - theorem nat.land_comm - theorem nat.lor_comm - theorem nat.lxor_comm Added src/data/nat/bitwise.lean + theorem nat.bit_ff + theorem nat.bit_tt + theorem nat.bitwise_comm + theorem nat.eq_of_test_bit_eq + theorem nat.exists_most_significant_bit + theorem nat.land_assoc + theorem nat.land_comm + theorem nat.land_zero + theorem nat.lor_assoc + theorem nat.lor_comm + theorem nat.lor_zero + theorem nat.lt_of_test_bit + theorem nat.lxor_assoc + theorem nat.lxor_comm + theorem nat.lxor_eq_zero + theorem nat.lxor_left_inj + theorem nat.lxor_right_inj + theorem nat.lxor_self + theorem nat.lxor_zero + theorem nat.zero_land + theorem nat.zero_lor + theorem nat.zero_lxor + theorem nat.zero_of_test_bit_eq_ff + theorem nat.zero_test_bit 2020-08-29 14:16:16 faf1df4 chore(topology/sheaves/sheaf_of_functions): rely less on defeq (#3972) This backports some changes from the `prop_limits` branch. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.lift_π_apply' Modified src/topology/category/Top/opens.lean Modified src/topology/sheaves/sheaf_of_functions.lean 2020-08-29 14:16:14 fd4628f chore(*): bump to lean 3.19.0c, fin is now a subtype (#3955) * Some `decidable.*` order theorems have been moved to core. * `fin` is now a subtype. This means that the whnf of `fin n` is now `{i // i < n}`. Also, the coercion `fin n → nat` is now preferred over `subtype.val`. The entire library has been refactored accordingly. (Although I probably missed some cases.) * `in_current_file'` was removed since the bug in `in_current_file` was fixed in core. * The syntax of `guard_hyp` in core was changed from `guard_hyp h := t` to `guard_hyp h : t`, so the syntax for the related `guard_hyp'`, `match_hyp` and `guard_hyp_strict` tactics in `tactic.interactive` was changed as well. ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified leanpkg.toml Modified src/algebra/category/Mon/basic.lean Modified src/algebra/linear_recurrence.lean Modified src/algebra/order.lean - theorem decidable.eq_or_lt_of_le - theorem decidable.le_iff_lt_or_eq - theorem decidable.le_imp_le_of_lt_imp_lt - theorem decidable.le_of_not_lt - theorem decidable.le_or_lt - def decidable.lt_by_cases - theorem decidable.lt_or_eq_of_le - theorem decidable.lt_or_gt_of_ne - theorem decidable.lt_or_le - theorem decidable.lt_trichotomy - theorem decidable.ne_iff_lt_or_gt - theorem decidable.not_lt - theorem not_le - theorem not_lt Modified src/analysis/analytic/composition.lean Modified src/combinatorics/composition.lean +/- theorem composition.lt_size_up_to_index_succ +/- theorem composition_as_set.lt_length' +/- theorem composition_as_set.lt_length Modified src/computability/primrec.lean +/- theorem primrec.fin_val Modified src/data/array/lemmas.lean +/- theorem array.write_to_list Modified src/data/bitvec/basic.lean +/- theorem bitvec.to_fin_val Modified src/data/equiv/fin.lean Modified src/data/fin.lean - theorem fin.add_nat_val - theorem fin.cast_add_val - theorem fin.cast_le_val +/- theorem fin.cast_lt_cast_succ - theorem fin.cast_lt_val +/- theorem fin.cast_succ_cast_lt +/- theorem fin.cast_succ_lt_last - theorem fin.cast_succ_val - theorem fin.cast_val +/- def fin.clamp - theorem fin.clamp_val + theorem fin.coe_add + theorem fin.coe_add_nat + theorem fin.coe_cast + theorem fin.coe_cast_add + theorem fin.coe_cast_le + theorem fin.coe_cast_lt + theorem fin.coe_cast_succ + theorem fin.coe_clamp + theorem fin.coe_injective + theorem fin.coe_mul + theorem fin.coe_of_nat_eq_mod' + theorem fin.coe_of_nat_eq_mod + theorem fin.coe_one' + theorem fin.coe_pred + theorem fin.coe_sub_nat + theorem fin.coe_succ +/- theorem fin.coe_val_eq_self +/- theorem fin.eq_last_of_not_lt + theorem fin.ext + theorem fin.ext_iff + theorem fin.is_lt +/- theorem fin.last_val + theorem fin.le_iff_coe_le_coe - theorem fin.le_iff_val_le_val + theorem fin.lt_iff_coe_lt_coe - theorem fin.lt_iff_val_lt_val + theorem fin.mk_coe +/- theorem fin.mk_one +/- theorem fin.mk_zero - theorem fin.pred_val +/- def fin.sub_nat - theorem fin.sub_nat_val +/- theorem fin.succ_pos - theorem fin.succ_val + theorem fin.val_eq_coe - theorem fin.val_injective - theorem fin.val_of_nat_eq_mod' - theorem fin.val_of_nat_eq_mod - theorem function.embedding.coe_fin - def function.embedding.fin Modified src/data/finset/basic.lean Modified src/data/finset/sort.lean Modified src/data/finsupp/basic.lean Modified src/data/fintype/card.lean Modified src/data/hash_map.lean Modified src/data/list/of_fn.lean +/- theorem list.of_fn_nth_le Modified src/data/vector2.lean Modified src/data/zmod/basic.lean Modified src/group_theory/perm/sign.lean Modified src/meta/expr.lean Modified src/order/rel_iso.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/game/short.lean Modified src/set_theory/pgame.lean Modified src/tactic/choose.lean Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/tactic/lint/frontend.lean Modified src/topology/list.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified test/apply_fun.lean Modified test/choose.lean Modified test/equiv_rw.lean Modified test/fin_cases.lean Modified test/generalizes.lean Modified test/lint.lean Modified test/norm_cast.lean Modified test/packaged_goal.lean Modified test/push_neg.lean Modified test/rcases.lean Modified test/rename_var.lean Modified test/rewrite.lean Modified test/set.lean Modified test/tactics.lean Modified test/trunc_cases.lean Modified test/wlog.lean Modified test/zify.lean 2020-08-29 13:43:16 17c4651 feat(algebraic_geometry): structure sheaf on Spec R (#3907) This defines the structure sheaf on Spec R, following Hartshorne, as a sheaf in `CommRing` on `prime_spectrum R`. We still need to show at the stalk at a point is just the localization; this is another page of Hartshorne, and will come in a subsequent PR. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Added src/algebraic_geometry/structure_sheaf.lean + def algebraic_geometry.Spec.Top + def algebraic_geometry.structure_presheaf_comp_forget + def algebraic_geometry.structure_presheaf_in_CommRing + def algebraic_geometry.structure_sheaf.is_fraction + def algebraic_geometry.structure_sheaf.is_fraction_prelocal + def algebraic_geometry.structure_sheaf.is_locally_fraction + theorem algebraic_geometry.structure_sheaf.is_locally_fraction_pred + def algebraic_geometry.structure_sheaf.localizations + def algebraic_geometry.structure_sheaf.sections_subring + def algebraic_geometry.structure_sheaf + def algebraic_geometry.structure_sheaf_in_Type 2020-08-29 11:21:31 84d47a0 refactor(set_theory/game): make impartial a class (#3974) * Misc. style cleanups and code golf * Changed naming and namespace to adhere more closely to the naming convention * Changed `impartial` to be a `class`. I am aware that @semorrison explicitly requested not to make `impartial` a class in the #3855, but after working with the definition a bit I concluded that making it a class is worth it, simply because writing `impartial_add (nim_impartial _) (nim_impartial _)` gets annoying quite quickly, but also because you tend to get goal states of the form `Grundy_value _ = Grundy_value _`. By making `impartial` a class and making the game argument explicit, these goal states look like `grundy_value G = grundy_value H`, which is much nicer to work with. ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean - theorem pgame.equiv_iff_sum_first_loses - theorem pgame.good_left_move_iff_first_wins - theorem pgame.good_right_move_iff_first_wins + theorem pgame.impartial.add_self + theorem pgame.impartial.equiv_iff_sum_first_loses + theorem pgame.impartial.first_loses_symm' + theorem pgame.impartial.first_loses_symm + theorem pgame.impartial.first_wins_symm' + theorem pgame.impartial.first_wins_symm + theorem pgame.impartial.good_left_move_iff_first_wins + theorem pgame.impartial.good_right_move_iff_first_wins + theorem pgame.impartial.le_zero_iff + theorem pgame.impartial.lt_zero_iff + theorem pgame.impartial.neg_equiv_self + theorem pgame.impartial.no_good_left_moves_iff_first_loses + theorem pgame.impartial.no_good_right_moves_iff_first_loses + theorem pgame.impartial.not_first_loses + theorem pgame.impartial.not_first_wins + theorem pgame.impartial.winner_cases +/- def pgame.impartial - theorem pgame.impartial_add - theorem pgame.impartial_add_self - theorem pgame.impartial_first_loses_symm' - theorem pgame.impartial_first_loses_symm - theorem pgame.impartial_first_wins_symm' - theorem pgame.impartial_first_wins_symm - theorem pgame.impartial_move_left_impartial - theorem pgame.impartial_move_right_impartial - theorem pgame.impartial_neg - theorem pgame.impartial_neg_equiv_self - theorem pgame.impartial_not_first_loses - theorem pgame.impartial_not_first_wins - theorem pgame.impartial_winner_cases - theorem pgame.no_good_left_moves_iff_first_loses - theorem pgame.no_good_right_moves_iff_first_loses - theorem pgame.zero_impartial Modified src/set_theory/game/nim.lean - theorem nim.Grundy_value_def - theorem nim.Grundy_value_nim - theorem nim.Sprague_Grundy - theorem nim.equiv_nim_iff_Grundy_value_eq - theorem nim.nim_def - theorem nim.nim_equiv_iff_eq - theorem nim.nim_impartial - theorem nim.nim_non_zero_first_wins - theorem nim.nim_sum_first_loses_iff_eq - theorem nim.nim_sum_first_wins_iff_neq - theorem nim.nim_wf_lemma - theorem nim.nim_zero_first_loses - def nim.nonmoves - theorem nim.nonmoves_nonempty + theorem pgame.equiv_nim_grundy_value + theorem pgame.equiv_nim_iff_grundy_value_eq + theorem pgame.grundy_value_def + theorem pgame.nim.equiv_iff_eq + theorem pgame.nim.grundy_value + theorem pgame.nim.nim_def + theorem pgame.nim.nim_wf_lemma + theorem pgame.nim.non_zero_first_wins + theorem pgame.nim.sum_first_loses_iff_eq + theorem pgame.nim.sum_first_wins_iff_neq + theorem pgame.nim.zero_first_loses + def pgame.nonmoves + theorem pgame.nonmoves_nonempty Modified src/set_theory/game/winner.lean +/- theorem pgame.star_first_wins 2020-08-29 04:30:09 ea177c2 feat(analysis/convex): add correspondence between convex cones and ordered semimodules (#3931) This shows that a convex cone defines an ordered semimodule and vice-versa. ESTIMATED CHANGES Modified src/algebra/module/ordered.lean Modified src/analysis/convex/cone.lean + def convex_cone.blunt + def convex_cone.flat + def convex_cone.pointed + theorem convex_cone.pointed_iff_not_blunt + theorem convex_cone.pointed_of_positive_cone + def convex_cone.positive_cone + def convex_cone.salient + theorem convex_cone.salient_iff_not_flat + theorem convex_cone.salient_of_blunt + theorem convex_cone.salient_of_positive_cone + def convex_cone.to_ordered_add_comm_group + def convex_cone.to_ordered_semimodule + def convex_cone.to_partial_order + def convex_cone.to_preorder 2020-08-29 02:58:36 53275f4 chore(algebra/group_with_zero): adjust some instance priorities (#3968) Use priority 100 for these `extends` instances. ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean 2020-08-29 00:44:57 2d3530d chore(scripts): update nolints.txt (#3969) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-28 16:07:49 4ccbb51 feat(linear_algebra): eigenspaces of linear maps (#3927) Add eigenspaces and eigenvalues of linear maps. Add lemma that in a finite-dimensional vector space over an algebraically closed field, eigenvalues exist. Add lemma that eigenvectors belonging to distinct eigenvalues are linearly independent. This is a rework of #3864, following Cyril's suggestion. Generalized eigenspaces will come in a subsequent PR. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.mem_support_on_finset + theorem finsupp.support_on_finset Modified src/data/multiset/basic.lean + theorem multiset.coe_to_list + theorem multiset.mem_to_list + theorem multiset.prod_eq_zero + theorem multiset.to_list_zero Modified src/field_theory/algebraic_closure.lean + theorem is_alg_closed.degree_eq_one_of_irreducible Modified src/field_theory/splitting_field.lean + theorem polynomial.degree_eq_one_of_irreducible_of_splits Modified src/group_theory/submonoid/basic.lean + theorem is_unit.mem_submonoid_iff + def is_unit.submonoid Added src/linear_algebra/eigenspace.lean + def module.End.eigenspace + theorem module.End.eigenspace_div + theorem module.End.eigenspace_eval₂_polynomial_degree_1 + theorem module.End.eigenvectors_linear_independent + theorem module.End.exists_eigenvalue + def module.End.has_eigenvalue + def module.End.has_eigenvector + theorem module.End.ker_eval₂_ring_hom_noncomm_unit_polynomial + theorem module.End.mem_eigenspace_iff Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.not_linear_independent_of_infinite Modified src/linear_algebra/finsupp.lean + theorem finsupp.total_on_finset Modified src/ring_theory/algebra.lean + theorem module.algebra_map_End_apply + theorem module.algebra_map_End_eq_smul_id + theorem module.ker_algebra_map_End Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.linear_independent_powers_iff_eval₂ Modified src/ring_theory/principal_ideal_domain.lean + theorem principal_ideal_ring.mem_submonoid_of_factors_subset_of_units_subset + theorem principal_ideal_ring.ne_zero_of_mem_factors + theorem principal_ideal_ring.ring_hom_mem_submonoid_of_factors_subset_of_units_subset 2020-08-28 15:21:57 1353b7e chore(group_theory/perm/sign): speed up proofs (#3963) fixes #3958 based on my completely unscientific test methods, this went from 40 seconds to ~~19~~ 17 seconds (on my laptop). What I've done here is just `squeeze_simp`, but further speedup is definitely possible. Suggestions for what to do with `simp [*, eq_inv_iff_eq] at * <|> cc` are welcome, and should speed this file up a bit more. ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean 2020-08-28 14:46:42 d77798a doc(representation_theory/maschke): fix latex (#3965) ESTIMATED CHANGES Modified src/representation_theory/maschke.lean 2020-08-28 14:11:16 31db0bd feat(category_theory/limits): add kernel pairs (#3925) Add a subsingleton data structure expressing that a parallel pair of morphisms is a kernel pair of a given morphism. Another PR from my topos project. A pretty minimal API since I didn't need much there - I also didn't introduce anything like `has_kernel_pairs` largely because I didn't need it, but also because I don't know that it's useful for anyone, and it might conflict with ideas in the prop-limits branch. ESTIMATED CHANGES Added src/category_theory/limits/shapes/kernel_pair.lean + def category_theory.is_kernel_pair.cancel_right + def category_theory.is_kernel_pair.cancel_right_of_mono + def category_theory.is_kernel_pair.comp_of_mono + def category_theory.is_kernel_pair.id_of_mono + def category_theory.is_kernel_pair.lift' + def category_theory.is_kernel_pair.to_coequalizer + structure category_theory.is_kernel_pair 2020-08-28 10:25:09 a08fb2f feat(tactic/congr): additions to the congr' tactic (#3936) This PR gives a way to apply `ext` after `congr'`. `congr' 3 with x y : 2` is a new notation for `congr' 3; ext x y : 2`. New tactic `rcongr` that recursively keeps applying `congr'` and `ext`. Move `congr'` and every tactic depending on it from `tactic/interactive` to a new file `tactic/congr`. The original `tactic.interactive.congr'` is now best called as `tactic.congr'`. Other than the tactics `congr'` and `rcongr` no tactics have been (essentially) changed. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/big_operators/ring.lean Modified src/algebra/group_action_hom.lean Modified src/algebra/linear_recurrence.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/convex/basic.lean Modified src/analysis/hofer.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/exp_log.lean Modified src/category_theory/limits/limits.lean Modified src/computability/turing_machine.lean Modified src/control/monad/cont.lean Modified src/data/finset/lattice.lean Modified src/data/list/func.lean Modified src/data/list/sigma.lean Modified src/data/monoid_algebra.lean Modified src/data/mv_polynomial.lean Modified src/data/pfunctor/multivariate/M.lean Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/pfunctor/univariate/M.lean +/- theorem pfunctor.M.ext' Modified src/data/polynomial/identities.lean Modified src/data/polynomial/integral_normalization.lean Modified src/data/qpf/multivariate/constructions/cofix.lean Modified src/data/qpf/univariate/basic.lean Modified src/data/set/basic.lean Modified src/data/setoid/basic.lean Modified src/geometry/euclidean/basic.lean Modified src/geometry/euclidean/circumcenter.lean Modified src/geometry/euclidean/monge_point.lean Modified src/group_theory/congruence.lean Modified src/group_theory/monoid_localization.lean Modified src/linear_algebra/affine_space/basic.lean Modified src/linear_algebra/affine_space/combination.lean Modified src/linear_algebra/affine_space/independent.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/order/liminf_limsup.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/tactic/basic.lean Added src/tactic/congr.lean Modified src/tactic/ext.lean Modified src/tactic/interactive.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/bases.lean Modified src/topology/opens.lean Modified src/topology/uniform_space/compact_separated.lean Added test/congr.lean Modified test/tactics.lean Modified test/trunc_cases.lean 2020-08-28 07:24:16 ceacf54 feat(category_theory/filtered): filtered categories, and filtered colimits in `Type` (#3960) This is some work @rwbarton did last year. I've merged master, written some comments, and satisfied the linter. ESTIMATED CHANGES Added src/category_theory/filtered.lean Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.filtered_colimit.colimit_eq_iff + theorem category_theory.limits.types.filtered_colimit.is_colimit_eq_iff + theorem category_theory.limits.types.jointly_surjective + theorem category_theory.limits.types.ι_desc_apply Modified src/data/quot.lean + theorem quot.eq 2020-08-28 05:18:40 513f740 feat(topology/sheaves): checking the sheaf condition under a forgetful functor (#3609) # Checking the sheaf condition on the underlying presheaf of types. If `G : C ⥤ D` is a functor which reflects isomorphisms and preserves limits (we assume all limits exist in both `C` and `D`), then checking the sheaf condition for a presheaf `F : presheaf C X` is equivalent to checking the sheaf condition for `F ⋙ G`. The important special case is when `C` is a concrete category with a forgetful functor that preserves limits and reflects isomorphisms. Then to check the sheaf condition it suffices to check it on the underlying sheaf of types. ## References * https://stacks.math.columbia.edu/tag/0073 ESTIMATED CHANGES Added src/topology/sheaves/forget.lean + def Top.sheaf_condition.diagram_comp_preserves_limits + def Top.sheaf_condition.map_cone_fork + def Top.sheaf_condition_equiv_sheaf_condition_comp 2020-08-28 03:16:37 7e6393f feat(topology/sheaves): the sheaf condition for functions satisfying a local predicate (#3906) Functions satisfying a local predicate form a sheaf. This sheaf has a natural map from the stalk to the original fiber, and we give conditions for this map to be injective or surjective. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cofork.ext + def category_theory.limits.fork.ext Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.pi.map_iso + def category_theory.limits.sigma.map_iso Modified src/data/set/basic.lean + theorem set.inclusion_right Modified src/topology/category/Top/open_nhds.lean +/- def topological_space.open_nhds.inclusion +/- theorem topological_space.open_nhds.inclusion_obj +/- def topological_space.open_nhds Added src/topology/sheaves/local_predicate.lean + def Top.continuous_local + def Top.continuous_prelocal + structure Top.local_predicate + def Top.prelocal_predicate.sheafify + structure Top.prelocal_predicate + def Top.sheaf_to_Top + def Top.stalk_to_fiber + theorem Top.stalk_to_fiber_germ + theorem Top.stalk_to_fiber_injective + theorem Top.stalk_to_fiber_surjective + def Top.subpresheaf_continuous_prelocal_iso_presheaf_to_Top + def Top.subpresheaf_to_Types.diagram_subtype + def Top.subpresheaf_to_Types.sheaf_condition + def Top.subpresheaf_to_Types.subtype + def Top.subpresheaf_to_Types + def Top.subsheaf_to_Types Modified src/topology/sheaves/presheaf_of_functions.lean + theorem Top.presheaf_to_Top_obj +/- def Top.presheaf_to_Types + theorem Top.presheaf_to_Types_map + theorem Top.presheaf_to_Types_obj Modified src/topology/sheaves/sheaf.lean + def Top.sheaf_condition.diagram.iso_of_iso + def Top.sheaf_condition.fork.iso_of_iso + def Top.sheaf_condition.pi_inters.iso_of_iso + def Top.sheaf_condition.pi_opens.iso_of_iso + def Top.sheaf_condition_equiv_of_iso Modified src/topology/sheaves/sheaf_of_functions.lean - def Top.sheaf_condition.forget_continuity - def Top.sheaf_condition.to_Top + def Top.sheaf_to_Type + def Top.sheaf_to_Types Modified src/topology/sheaves/stalks.lean + def Top.presheaf.germ + theorem Top.presheaf.germ_res + theorem Top.presheaf.germ_res_apply +/- theorem Top.presheaf.stalk_functor_obj 2020-08-27 20:30:40 eaaac99 feat(geometry/euclidean/basic): reflection (#3932) Define the reflection of a point in an affine subspace, as a bundled isometry, in terms of the orthogonal projection onto that subspace, and prove some basic lemmas about it. ESTIMATED CHANGES Modified src/geometry/euclidean/basic.lean + theorem euclidean_geometry.dist_reflection + theorem euclidean_geometry.dist_reflection_eq_of_mem + theorem euclidean_geometry.orthogonal_projection_linear + theorem euclidean_geometry.orthogonal_projection_orthogonal_projection + def euclidean_geometry.reflection + theorem euclidean_geometry.reflection_apply + theorem euclidean_geometry.reflection_eq_iff_orthogonal_projection_eq + theorem euclidean_geometry.reflection_eq_self_iff + theorem euclidean_geometry.reflection_involutive + theorem euclidean_geometry.reflection_reflection + theorem euclidean_geometry.reflection_symm 2020-08-27 18:31:26 359261e feat(data/nat): commutativity of bitwise operations (#3956) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.bitwise_comm + theorem nat.land_comm + theorem nat.lor_comm + theorem nat.lxor_comm 2020-08-27 14:44:42 6b556cf feat(combinatorics/adjacency_matrix): defines adjacency matrices of simple graphs (#3672) defines the adjacency matrix of a simple graph proves lemmas about adjacency matrix that will form the bulk of the proof of the friendship theorem (freek 83) ESTIMATED CHANGES Added src/combinatorics/adj_matrix.lean + def simple_graph.adj_matrix + theorem simple_graph.adj_matrix_apply + theorem simple_graph.adj_matrix_dot_product + theorem simple_graph.adj_matrix_mul_apply + theorem simple_graph.adj_matrix_mul_self_apply_self + theorem simple_graph.adj_matrix_mul_vec_apply + theorem simple_graph.adj_matrix_mul_vec_const_apply + theorem simple_graph.adj_matrix_mul_vec_const_apply_of_regular + theorem simple_graph.adj_matrix_vec_mul_apply + theorem simple_graph.dot_product_adj_matrix + theorem simple_graph.mul_adj_matrix_apply + theorem simple_graph.trace_adj_matrix + theorem simple_graph.transpose_adj_matrix 2020-08-27 06:25:31 ea9bf31 refactor(analysis/normed_space/real_inner_product,geometry/euclidean): orthogonal projection hypotheses (#3952) As advised by Patrick in #3932, define `orthogonal_projection` (for both real inner product spaces and Euclidean affine spaces) without taking hypotheses of the subspace being nonempty and complete, defaulting to the identity map if those conditions are not satisfied, so making `orthogonal_projection` more convenient to use with those properties only being needed on lemmas but not simply to refer to the orthogonal projection at all. The hypotheses are removed from lemmas that don't need them because they are still true with the identity map. Some `nonempty` hypotheses are also removed where they follow from another hypothesis that gives a point or a nonempty set of points in the subspace. The unbundled `orthogonal_projection_fn` that's used only to prove properties needed to define a bundled linear or affine map still takes the original hypotheses, then a bundled map taking those hypotheses is defined under a new name, then that map is used to define plain `orthogonal_projection` which does not take any of those hypotheses and is the version expected to be used in all lemmas after it has been defined. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean +/- def orthogonal_projection + theorem orthogonal_projection_def +/- theorem orthogonal_projection_inner_eq_zero + def orthogonal_projection_of_complete Modified src/geometry/euclidean/basic.lean +/- def euclidean_geometry.orthogonal_projection + theorem euclidean_geometry.orthogonal_projection_def +/- theorem euclidean_geometry.orthogonal_projection_mem_orthogonal + def euclidean_geometry.orthogonal_projection_of_nonempty_of_complete + theorem euclidean_geometry.orthogonal_projection_of_nonempty_of_complete_eq +/- theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction_orthogonal +/- theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction_orthogonal Modified src/geometry/euclidean/circumcenter.lean +/- theorem euclidean_geometry.dist_eq_iff_dist_orthogonal_projection_eq +/- theorem euclidean_geometry.dist_set_eq_iff_dist_orthogonal_projection_eq +/- theorem euclidean_geometry.exists_unique_dist_eq_of_insert 2020-08-27 00:47:46 5627aed chore(scripts): update nolints.txt (#3954) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-26 20:24:56 c147894 feat(data/fin): flesh out API for fin (#3769) Provide more API for `fin n`. Lemma names chosen to match equivalent lemmas in `nat`. Does not develop docstrings for the lemmas. New lemmas: iff lemmas for comparison `ne_iff_vne` `eq_mk_iff_coe_eq` `succ_le_succ_iff` `succ_lt_succ_iff` lemmas about explicit numerals `val_zero'` `mk_zero` `mk_one` `mk_bit0` `mk_bit1` `cast_succ_zero` `succ_zero_eq_one` `zero_ne_one` `pred_one` lemmas about order `zero_le` `succ_pos` `mk_succ_pos` `one_pos` `one_lt_succ_succ` `succ_succ_ne_one` `pred_mk_succ` `cast_succ_lt_last` `cast_succ_lt_succ` `lt_succ` `last_pos` `le_coe_last` coe lemmas: `coe_eq_cast_succ` `coe_succ_eq_succ` `coe_nat_eq_last` succ_above API: `succ_above_below` `succ_above_zero` `succ_above_last` `succ_above_above` `succ_above_pos` addition API: `add_one_pos` `pred_add_one` Co-authored by: Yury Kudryashov urkud@ya.ru ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean Modified src/data/fin.lean + theorem fin.add_one_pos + theorem fin.cast_succ_lt_last + theorem fin.cast_succ_lt_succ - theorem fin.cast_succ_ne_last + theorem fin.cast_succ_zero + theorem fin.coe_eq_cast_succ + theorem fin.coe_nat_eq_last + theorem fin.coe_succ_eq_succ + theorem fin.eq_mk_iff_coe_eq + theorem fin.last_pos + theorem fin.le_coe_last + theorem fin.lt_succ + theorem fin.mk_bit0 + theorem fin.mk_bit1 + theorem fin.mk_one + theorem fin.mk_succ_pos + theorem fin.mk_zero + theorem fin.ne_iff_vne + theorem fin.one_lt_succ_succ + theorem fin.one_pos + theorem fin.pred_add_one + theorem fin.pred_mk_succ + theorem fin.pred_one + theorem fin.succ_above_above + theorem fin.succ_above_below + theorem fin.succ_above_last + theorem fin.succ_above_pos + theorem fin.succ_above_zero + theorem fin.succ_le_succ_iff + theorem fin.succ_lt_succ_iff + theorem fin.succ_pos + theorem fin.succ_succ_ne_one + theorem fin.succ_zero_eq_one + theorem fin.val_zero' + theorem fin.zero_ne_one - theorem fin.zero_val Modified src/data/fintype/card.lean Modified src/data/matrix/notation.lean +/- theorem matrix.cons_val_zero' Modified src/linear_algebra/multilinear.lean 2020-08-26 18:55:44 26dfea5 feat(algebra/big_operators): sum of two products (#3944) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.mul_prod_diff_singleton + theorem finset.prod_add_prod_eq + theorem finset.prod_inter_mul_prod_diff Modified src/algebra/big_operators/order.lean + theorem finset.prod_add_prod_le' + theorem finset.prod_add_prod_le Modified src/algebra/group_with_zero_power.lean + theorem zero_pow_eq_zero Modified src/algebra/ordered_ring.lean + theorem canonically_ordered_semiring.mul_le_mul_left' + theorem canonically_ordered_semiring.mul_le_mul_right' 2020-08-26 18:55:42 64aad5b feat(category_theory/adjunction): uniqueness of adjunctions (#3940) Co-authored by @thjread ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/opposites.lean + def adjunction.left_adjoint_uniq + def adjunction.left_adjoints_coyoneda_equiv + def adjunction.right_adjoint_uniq 2020-08-26 18:55:40 080746f feat(algebra/category/*/limits): don't rely on definitions (#3873) This is a second attempt (which works **much** better) at #3860, after @TwoFX explained how to do it properly. This PR takes the constructions of limits in the concrete categories `(Add)(Comm)[Mon|Group]`, `(Comm)(Semi)Ring`, `Module R`, and `Algebra R`, and makes sure that they never rely on the actual definitions of limits in "prior" categories. Of course, at this stage the `has_limit` typeclasses still contain data, so it's hard to judge whether we're really not relying on the definitions. I've marked all the `has_limits` instances in these files as irreducible, but the real proof is just that this same code is working over on the `prop_limits` branch. ESTIMATED CHANGES Modified src/algebra/category/Algebra/limits.lean + def Algebra.forget₂_Module_preserves_limits_aux + def Algebra.forget₂_Ring_preserves_limits_aux - def Algebra.has_limits.limit + def Algebra.has_limits.limit_cone + def Algebra.has_limits.limit_cone_is_limit - def Algebra.has_limits.limit_is_limit Modified src/algebra/category/CommRing/limits.lean + def CommRing.forget₂_CommSemiRing_preserves_limits_aux + def CommRing.limit_cone + def CommRing.limit_cone_is_limit + def CommSemiRing.limit_cone + def CommSemiRing.limit_cone_is_limit + def Ring.limit_cone + def Ring.limit_cone_is_limit - def SemiRing.has_limits.limit + def SemiRing.has_limits.limit_cone + def SemiRing.has_limits.limit_cone_is_limit - def SemiRing.has_limits.limit_is_limit Modified src/algebra/category/Group/limits.lean + theorem AddCommGroup.lift_π_apply + def CommGroup.limit_cone + def CommGroup.limit_cone_is_limit + def Group.limit_cone + def Group.limit_cone_is_limit Modified src/algebra/category/Module/limits.lean + def Module.forget₂_AddCommGroup_preserves_limits_aux - def Module.has_limits.limit + def Module.has_limits.limit_cone + def Module.has_limits.limit_cone_is_limit - def Module.has_limits.limit_is_limit Modified src/algebra/category/Mon/limits.lean + def CommMon.limit_cone + def CommMon.limit_cone_is_limit - def Mon.has_limits.limit + def Mon.has_limits.limit_cone + def Mon.has_limits.limit_cone_is_limit - def Mon.has_limits.limit_is_limit Modified src/topology/category/Top/limits.lean - def Top.colimit + def Top.colimit_cocone + def Top.colimit_cocone_is_colimit - def Top.colimit_is_colimit - def Top.limit + def Top.limit_cone + def Top.limit_cone_is_limit - def Top.limit_is_limit 2020-08-26 17:53:30 2d9ab61 feat(ring_theory/ideal/basic): R/I is an ID iff I is prime (#3951) `is_integral_domain_iff_prime (I : ideal α) : is_integral_domain I.quotient ↔ I.is_prime` ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.quotient.is_integral_domain_iff_prime 2020-08-26 16:20:07 2b6924d feat(topology/algebra/ordered): conditions for a strictly monotone function to be a homeomorphism (#3843) If a strictly monotone function between linear orders is surjective, it is a homeomorphism. If a strictly monotone function between conditionally complete linear orders is continuous, and tends to `+∞` at `+∞` and to `-∞` at `-∞`, then it is a homeomorphism. [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Order.20topology) Co-authored by: Yury Kudryashov ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Ici_bot + theorem set.Ici_singleton_of_top + theorem set.Ici_top + theorem set.Iic_singleton_of_bot Added src/data/set/intervals/surj_on.lean + theorem surj_on_Icc_of_monotone_surjective + theorem surj_on_Ici_of_monotone_surjective + theorem surj_on_Ico_of_monotone_surjective + theorem surj_on_Iic_of_monotone_surjective + theorem surj_on_Iio_of_monotone_surjective + theorem surj_on_Ioc_of_monotone_surjective + theorem surj_on_Ioi_of_monotone_surjective + theorem surj_on_Ioo_of_monotone_surjective Modified src/order/basic.lean + theorem strict_mono.bot_preimage_bot + theorem strict_mono.top_preimage_top Modified src/order/bounded_lattice.lean + theorem strict_mono.bot_preimage_bot' + theorem strict_mono.top_preimage_top' Modified src/topology/algebra/ordered.lean + theorem coe_homeomorph_of_strict_mono_continuous + theorem coe_homeomorph_of_strict_mono_surjective + theorem continuous_at_of_strict_mono_surjective + theorem continuous_inv_of_strict_mono_equiv + theorem continuous_left_of_strict_mono_surjective + theorem continuous_of_strict_mono_surjective + theorem continuous_right_of_strict_mono_surjective + theorem surjective_of_continuous' + theorem surjective_of_continuous 2020-08-26 14:45:52 f4f0854 feat(ring_theory/bundled_subring): add bundled subrings (#3886) ESTIMATED CHANGES Modified src/algebra/category/CommRing/limits.lean Added src/deprecated/subring.lean + theorem is_subring.coe_subtype + def is_subring.subtype + theorem is_subring_Union_of_directed + def ring.closure + theorem ring.closure_mono + theorem ring.closure_subset + theorem ring.closure_subset_iff + theorem ring.exists_list_of_mem_closure + theorem ring.image_closure + theorem ring.mem_closure + theorem ring.subset_closure + def ring_hom.cod_restrict Modified src/field_theory/subfield.lean Modified src/group_theory/subgroup.lean + def monoid_hom.cod_restrict + theorem subgroup.coe_supr_of_directed Modified src/linear_algebra/basic.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/subring.lean - theorem is_subring.coe_subtype - def is_subring.subtype - theorem is_subring_Union_of_directed - def ring.closure - theorem ring.closure_mono - theorem ring.closure_subset - theorem ring.closure_subset_iff - theorem ring.exists_list_of_mem_closure - theorem ring.image_closure - theorem ring.mem_closure - theorem ring.subset_closure + def ring_equiv.subring_congr + theorem ring_hom.closure_preimage_le + def ring_hom.cod_restrict' - def ring_hom.cod_restrict + theorem ring_hom.coe_range + theorem ring_hom.coe_range_restrict + def ring_hom.eq_locus + theorem ring_hom.eq_of_eq_on_set_dense + theorem ring_hom.eq_of_eq_on_set_top + theorem ring_hom.eq_on_set_closure + theorem ring_hom.map_closure + theorem ring_hom.map_range + theorem ring_hom.mem_range + def ring_hom.range + def ring_hom.range_restrict + theorem ring_hom.range_top_iff_surjective + theorem ring_hom.range_top_of_surjective + def ring_hom.restrict + theorem ring_hom.restrict_apply + theorem subring.Inf_to_add_subgroup + theorem subring.Inf_to_submonoid + theorem subring.add_mem + def subring.closure + theorem subring.closure_Union + theorem subring.closure_empty + theorem subring.closure_eq + theorem subring.closure_eq_of_le + theorem subring.closure_induction + theorem subring.closure_le + theorem subring.closure_mono + theorem subring.closure_preimage_le + theorem subring.closure_sUnion + theorem subring.closure_union + theorem subring.closure_univ + theorem subring.coe_Inf + theorem subring.coe_Sup_of_directed_on + theorem subring.coe_add + theorem subring.coe_bot + theorem subring.coe_coe + theorem subring.coe_comap + theorem subring.coe_inf + theorem subring.coe_int_mem + theorem subring.coe_map + theorem subring.coe_mk' + theorem subring.coe_mul + theorem subring.coe_neg + theorem subring.coe_one + theorem subring.coe_prod + theorem subring.coe_ssubset_coe + theorem subring.coe_subset_coe + theorem subring.coe_subtype + theorem subring.coe_supr_of_directed + theorem subring.coe_to_add_subgroup + theorem subring.coe_to_submonoid + theorem subring.coe_top + theorem subring.coe_zero + def subring.comap + theorem subring.comap_comap + theorem subring.comap_inf + theorem subring.comap_infi + theorem subring.comap_top + theorem subring.exists_list_of_mem_closure + theorem subring.ext' + theorem subring.ext + theorem subring.gc_map_comap + theorem subring.gsmul_mem + def subring.inclusion + theorem subring.le_def + theorem subring.list_prod_mem + theorem subring.list_sum_mem + def subring.map + theorem subring.map_bot + theorem subring.map_le_iff_le_comap + theorem subring.map_map + theorem subring.map_sup + theorem subring.map_supr + theorem subring.mem_Inf + theorem subring.mem_Sup_of_directed_on + theorem subring.mem_bot + theorem subring.mem_closure + theorem subring.mem_closure_iff + theorem subring.mem_coe + theorem subring.mem_comap + theorem subring.mem_inf + theorem subring.mem_map + theorem subring.mem_mk' + theorem subring.mem_prod + theorem subring.mem_supr_of_directed + theorem subring.mem_to_add_subgroup + theorem subring.mem_to_submonoid + theorem subring.mem_top + theorem subring.mk'_to_add_subgroup + theorem subring.mk'_to_submonoid + theorem subring.mul_mem + theorem subring.multiset_prod_mem + theorem subring.multiset_sum_mem + theorem subring.neg_mem + theorem subring.one_mem + theorem subring.pow_mem + def subring.prod + theorem subring.prod_bot_sup_bot_prod + def subring.prod_equiv + theorem subring.prod_mem + theorem subring.prod_mono + theorem subring.prod_mono_left + theorem subring.prod_mono_right + theorem subring.prod_top + theorem subring.range_fst + theorem subring.range_snd + theorem subring.range_subtype + theorem subring.subset_closure + def subring.subset_comm_ring + def subring.subtype + theorem subring.sum_mem + def subring.to_comm_ring + def subring.to_submonoid + theorem subring.top_prod + theorem subring.top_prod_top + theorem subring.zero_mem + structure subring + def subsemiring.to_subring Modified src/ring_theory/valuation/basic.lean 2020-08-26 14:45:50 0d67a02 feat(ring_theory/noetherian): maximal among set iff Noetherian (#3846) Main theorem is `set_has_maximal_iff_noetherian,` which relates well foundedness of `<` to being noetherian. Most notably a result of `well_founded.well_founded_iff_has_max'` provides the fact that on a partial ordering, `well_founded >` is equivalent to each nonempty set having a maximal element. `well_founded.well_founded_iff_has_min` provides an analogous fact for `well_founded <`. Some other miscellaneous lemmas are as follows `localization_map.integral_domain_of_local_at_prime` is the localization of an integral domain at a prime's complement is an integral domain `ideal.mul_eq_bot` is the fact that in an integral domain if I*J = 0, then at least one is 0. `submodule.nonzero_mem_of_gt_bot` is that if ⊥ < J, then J has a nonzero member. `lt_add_iff_not_mem` is that b is not a member of J iff J < J+(b). `bot_prime` states that 0 is a prime ideal of an integral domain. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.lt_add_iff_not_mem + theorem submodule.nonzero_mem_of_bot_lt Modified src/order/rel_classes.lean + theorem well_founded.eq_iff_not_lt_of_le + theorem well_founded.well_founded_iff_has_max' + theorem well_founded.well_founded_iff_has_min' + theorem well_founded.well_founded_iff_has_min Modified src/ring_theory/ideal/basic.lean + theorem ideal.bot_prime Modified src/ring_theory/ideal/operations.lean + theorem ideal.mul_eq_bot Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean + theorem set_has_maximal_iff_noetherian 2020-08-26 13:12:40 187bfa5 feat(set/basic): additions to prod (#3943) Also add one lemma about `Inter`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.insert_prod + theorem set.mk_preimage_prod_left_eq_empty + theorem set.mk_preimage_prod_left_eq_if + theorem set.mk_preimage_prod_right_eq_empty + theorem set.mk_preimage_prod_right_eq_if +/- theorem set.prod_eq_empty_iff +/- theorem set.prod_insert + theorem set.prod_univ + theorem set.univ_prod Modified src/data/set/lattice.lean + theorem set.Inter_set_of 2020-08-26 13:12:38 fb6046e feat(*/category/*): add coe_of simp lemmas (#3938) ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean + theorem Algebra.coe_of - theorem Algebra.of_apply Modified src/algebra/category/CommRing/basic.lean + theorem CommRing.coe_of + theorem CommSemiRing.coe_of + theorem Ring.coe_of + theorem SemiRing.coe_of Modified src/algebra/category/Group/basic.lean + theorem CommGroup.coe_of + theorem Group.coe_of Modified src/algebra/category/Module/basic.lean + theorem Module.coe_of - theorem Module.of_apply Modified src/algebra/category/Mon/basic.lean + theorem CommMon.coe_of + theorem Mon.coe_of Modified src/measure_theory/category/Meas.lean + theorem Meas.coe_of Modified src/topology/category/Top/basic.lean + theorem Top.coe_of Modified src/topology/category/TopCommRing.lean + theorem TopCommRing.coe_of Modified src/topology/category/UniformSpace.lean + theorem CpltSepUniformSpace.coe_of + theorem UniformSpace.coe_of 2020-08-26 11:39:01 206673e chore(*): trivial golfing using dec_trivial tactic (#3949) ESTIMATED CHANGES Modified src/data/nat/prime.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/ring_theory/multiplicity.lean 2020-08-26 10:32:55 dd742dc feat(finsupp/basic): add hom_ext (#3941) Two R-module homs from finsupp X R which agree on `single x 1` agree everywhere. ``` lemma hom_ext [semiring β] [add_comm_monoid γ] [semimodule β γ] (φ ψ : (α →₀ β) →ₗ[β] γ) (h : ∀ a : α, φ (single a 1) = ψ (single a 1)) : φ = ψ ``` ESTIMATED CHANGES Modified src/data/finsupp/basic.lean + theorem finsupp.hom_ext + theorem finsupp.smul_single_one 2020-08-26 09:56:27 a31096d fix(set_theory/game): remove stray #lint introduced in #3939 (#3948) ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean Modified src/set_theory/game/nim.lean 2020-08-26 00:44:38 da47548 chore(scripts): update nolints.txt (#3945) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-25 19:52:43 666a2e2 feat(algebra/group/with_one): more API for with_zero (#3716) ESTIMATED CHANGES Modified src/algebra/group/with_one.lean + theorem with_one.some_eq_coe Modified src/algebra/ordered_group.lean + theorem with_zero.coe_le_coe + theorem with_zero.coe_lt_coe + theorem with_zero.lt_of_mul_lt_mul_left + theorem with_zero.mul_le_mul_left + theorem with_zero.zero_le + theorem with_zero.zero_lt_coe Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/mean_inequalities.lean Modified src/topology/instances/ennreal.lean 2020-08-25 16:55:18 4478719 feat(data/padic/padic_integers): homs to zmod(p ^ n) (#3882) This is the next PR in a series of PRs on the padic numbers/integers that should culminate in a proof that Z_p is isomorphic to the ring of Witt vectors of zmod p. In this PR we build ring homs from Z_p to zmod (p ^ n). ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.to_nat_zero_of_neg Modified src/data/padics/padic_integers.lean + theorem padic_int.appr_lt + theorem padic_int.appr_spec + theorem padic_int.coe_coe_int + theorem padic_int.coe_int_eq + theorem padic_int.exists_mem_range + theorem padic_int.is_unit_denom + theorem padic_int.ker_to_zmod + theorem padic_int.ker_to_zmod_pow +/- theorem padic_int.maximal_ideal_eq_span_p + def padic_int.mod_part + theorem padic_int.mod_part_lt_p + theorem padic_int.mod_part_nonneg + theorem padic_int.norm_int_lt_one_iff_dvd + theorem padic_int.norm_lt_one_iff_dvd + theorem padic_int.norm_sub_mod_part + theorem padic_int.norm_sub_mod_part_aux + theorem padic_int.pow_p_dvd_int_iff + theorem padic_int.sub_zmod_repr_mem + def padic_int.to_zmod + def padic_int.to_zmod_hom + def padic_int.to_zmod_pow + theorem padic_int.to_zmod_spec + theorem padic_int.valuation_p_pow_mul + theorem padic_int.zmod_congr_of_sub_mem_max_ideal + theorem padic_int.zmod_congr_of_sub_mem_span + theorem padic_int.zmod_congr_of_sub_mem_span_aux + def padic_int.zmod_repr + theorem padic_int.zmod_repr_lt_p + theorem padic_int.zmod_repr_spec + theorem padic_norm_z.padic_norm_z_of_int Modified src/data/padics/padic_norm.lean + theorem padic_norm.dvd_iff_norm_le - theorem padic_norm.le_of_dvd Modified src/data/padics/padic_numbers.lean + theorem padic_norm_e.norm_int_le_one + theorem padic_norm_e.norm_int_lt_one_iff_dvd + theorem padic_norm_e.norm_int_lt_pow_iff_dvd Modified src/data/zmod/basic.lean + theorem zmod.coe_to_nat Modified src/ring_theory/discrete_valuation_ring.lean + theorem discrete_valuation_ring.unit_mul_pow_congr_pow + theorem discrete_valuation_ring.unit_mul_pow_congr_unit 2020-08-25 14:36:42 b03ce61 chore(set_theory/game): various cleanup and code golf (#3939) ESTIMATED CHANGES Modified src/set_theory/game/impartial.lean + theorem pgame.impartial_not_first_loses + theorem pgame.impartial_not_first_wins Modified src/set_theory/game/nim.lean +/- theorem nim.nim_def +/- theorem nim.nim_zero_first_loses Modified src/set_theory/game/winner.lean + theorem pgame.not_first_loses_of_first_wins + theorem pgame.not_first_wins_of_first_loses 2020-08-25 14:36:40 878c44f feat(category_theory/adjunction): restrict adjunction to full subcategory (#3924) Blocked by #3923. ESTIMATED CHANGES Modified src/category_theory/adjunction/fully_faithful.lean + def category_theory.adjunction.restrict_fully_faithful 2020-08-25 13:04:30 a5a9858 feat(data/sigma/basic): cleanup (#3933) Use namespaces Add `sigma.ext_iff`, `psigma.ext` and `sigma.ext_iff` ESTIMATED CHANGES Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/sigma/basic.lean +/- def psigma.elim +/- theorem psigma.elim_val + theorem psigma.ext + theorem psigma.ext_iff +/- def psigma.map +/- theorem psigma.mk.inj_iff +/- theorem sigma.eta - theorem sigma.exists +/- theorem sigma.ext + theorem sigma.ext_iff - theorem sigma.forall +/- def sigma.map +/- theorem sigma.mk.inj_iff + theorem sigma.«exists» + theorem sigma.«forall» 2020-08-25 12:10:39 3409388 doc(ring_theory/*): add some module docstrings (#3880) ESTIMATED CHANGES Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/free_comm_ring.lean +/- theorem free_comm_ring.coe_lift_hom +/- def free_comm_ring.lift +/- theorem free_comm_ring.lift_comp_of +/- def free_comm_ring.lift_hom +/- theorem free_comm_ring.lift_hom_comp_of Modified src/ring_theory/free_ring.lean +/- def free_ring.lift +/- theorem free_ring.lift_comp_of +/- def free_ring.lift_hom Modified src/ring_theory/integral_closure.lean 2020-08-24 23:25:19 d4d33de feat(combinatorics): define simple graphs (#3458) adds basic definition of `simple_graph`s ESTIMATED CHANGES Added src/combinatorics/simple_graph.lean + def complete_graph + theorem simple_graph.adj_iff_exists_edge + theorem simple_graph.card_neighbor_set_eq_degree + theorem simple_graph.complete_graph_degree + theorem simple_graph.complete_graph_is_regular + def simple_graph.degree + def simple_graph.edge_finset + theorem simple_graph.edge_other_ne + def simple_graph.edge_set + theorem simple_graph.edge_symm + theorem simple_graph.irrefl + def simple_graph.is_regular_of_degree + def simple_graph.locally_finite + theorem simple_graph.mem_edge_finset + theorem simple_graph.mem_edge_set + theorem simple_graph.mem_neighbor_finset + theorem simple_graph.mem_neighbor_set + theorem simple_graph.ne_of_adj + def simple_graph.neighbor_finset + theorem simple_graph.neighbor_finset_eq_filter + def simple_graph.neighbor_set + structure simple_graph Modified src/data/sym2.lean + theorem sym2.elems_iff_eq +/- theorem sym2.mem_iff + theorem sym2.mk_has_mem_right +/- inductive sym2.rel + def sym2.rel_bool + theorem sym2.rel_bool_spec +/- def sym2 2020-08-24 19:17:49 8af1579 refactor(geometry/euclidean): split up file (#3926) Split up `geometry/euclidean.lean` into four smaller files in `geometry/euclidean`. There should be no changes to any of the individual definitions, or to the set of definitions present, but module doc strings have been expanded. Various definitions in `geometry/euclidean/basic.lean` are not used by all the other files, so it would be possible to split it up further, but that doesn't seem necessary for now, and more of those things may be used by more other files in future. (For example, `geometry/euclidean/circumcenter.lean` doesn't make any use of angles at present. But a version of the law of sines involving the circumradius would naturally go in `geometry/euclidean/circumcenter.lean`, and would introduce such a dependency.) ESTIMATED CHANGES Deleted src/geometry/euclidean.lean - def affine.simplex.altitude - theorem affine.simplex.altitude_def - theorem affine.simplex.centroid_eq_affine_combination_of_points_with_circumcenter - def affine.simplex.centroid_weights_with_circumcenter - def affine.simplex.circumcenter - def affine.simplex.circumcenter_circumradius - theorem affine.simplex.circumcenter_circumradius_unique_dist_eq - theorem affine.simplex.circumcenter_eq_affine_combination_of_points_with_circumcenter - theorem affine.simplex.circumcenter_mem_affine_span - def affine.simplex.circumcenter_weights_with_circumcenter - def affine.simplex.circumradius - theorem affine.simplex.direction_monge_plane - theorem affine.simplex.dist_circumcenter_eq_circumradius' - theorem affine.simplex.dist_circumcenter_eq_circumradius - theorem affine.simplex.eq_circumcenter_of_dist_eq - theorem affine.simplex.eq_circumradius_of_dist_eq - theorem affine.simplex.eq_monge_point_of_forall_mem_monge_plane - theorem affine.simplex.inner_monge_point_vsub_face_centroid_vsub - def affine.simplex.monge_plane - theorem affine.simplex.monge_plane_comm - theorem affine.simplex.monge_plane_def - def affine.simplex.monge_point - theorem affine.simplex.monge_point_eq_affine_combination_of_points_with_circumcenter - theorem affine.simplex.monge_point_eq_smul_vsub_vadd_circumcenter - theorem affine.simplex.monge_point_mem_affine_span - theorem affine.simplex.monge_point_mem_monge_plane - theorem affine.simplex.monge_point_vsub_face_centroid_eq_weighted_vsub_of_points_with_circumcenter - def affine.simplex.monge_point_vsub_face_centroid_weights_with_circumcenter - theorem affine.simplex.monge_point_vsub_face_centroid_weights_with_circumcenter_eq_sub - def affine.simplex.monge_point_weights_with_circumcenter - theorem affine.simplex.point_eq_affine_combination_of_points_with_circumcenter - def affine.simplex.point_index_embedding - def affine.simplex.point_weights_with_circumcenter - def affine.simplex.points_with_circumcenter - theorem affine.simplex.points_with_circumcenter_eq_circumcenter - inductive affine.simplex.points_with_circumcenter_index - theorem affine.simplex.points_with_circumcenter_point - theorem affine.simplex.sum_centroid_weights_with_circumcenter - theorem affine.simplex.sum_circumcenter_weights_with_circumcenter - theorem affine.simplex.sum_monge_point_vsub_face_centroid_weights_with_circumcenter - theorem affine.simplex.sum_monge_point_weights_with_circumcenter - theorem affine.simplex.sum_point_weights_with_circumcenter - theorem affine.simplex.sum_points_with_circumcenter - theorem affine.triangle.altitude_eq_monge_plane - theorem affine.triangle.eq_orthocenter_of_forall_mem_altitude - def affine.triangle.orthocenter - theorem affine.triangle.orthocenter_eq_monge_point - theorem affine.triangle.orthocenter_eq_smul_vsub_vadd_circumcenter - theorem affine.triangle.orthocenter_mem_affine_span - theorem affine.triangle.orthocenter_mem_altitude - def euclidean_geometry.angle - theorem euclidean_geometry.angle_add_angle_add_angle_eq_pi - theorem euclidean_geometry.angle_add_angle_eq_pi_of_angle_eq_pi - theorem euclidean_geometry.angle_comm - theorem euclidean_geometry.angle_eq_angle_of_angle_eq_pi - theorem euclidean_geometry.angle_eq_angle_of_dist_eq - theorem euclidean_geometry.angle_eq_left - theorem euclidean_geometry.angle_eq_of_ne - theorem euclidean_geometry.angle_eq_right - theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_left - theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_right - theorem euclidean_geometry.angle_le_pi - theorem euclidean_geometry.angle_nonneg - theorem euclidean_geometry.dist_affine_combination - theorem euclidean_geometry.dist_eq_iff_dist_orthogonal_projection_eq - theorem euclidean_geometry.dist_eq_of_angle_eq_angle_of_angle_ne_pi - theorem euclidean_geometry.dist_orthogonal_projection_eq_zero_iff - theorem euclidean_geometry.dist_orthogonal_projection_ne_zero_of_not_mem - theorem euclidean_geometry.dist_set_eq_iff_dist_orthogonal_projection_eq - theorem euclidean_geometry.dist_square_eq_dist_orthogonal_projection_square_add_dist_orthogonal_projection_square - theorem euclidean_geometry.dist_square_eq_dist_square_add_dist_square_iff_angle_eq_pi_div_two - theorem euclidean_geometry.dist_square_eq_dist_square_add_dist_square_sub_two_mul_dist_mul_dist_mul_cos_angle - theorem euclidean_geometry.dist_square_smul_orthogonal_vadd_smul_orthogonal_vadd - theorem euclidean_geometry.exists_dist_eq_iff_exists_dist_orthogonal_projection_eq - theorem euclidean_geometry.exists_unique_dist_eq_of_affine_independent - theorem euclidean_geometry.exists_unique_dist_eq_of_insert - theorem euclidean_geometry.inner_weighted_vsub - theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection - theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection_fn - def euclidean_geometry.orthogonal_projection - theorem euclidean_geometry.orthogonal_projection_eq_self_iff - def euclidean_geometry.orthogonal_projection_fn - theorem euclidean_geometry.orthogonal_projection_fn_eq - theorem euclidean_geometry.orthogonal_projection_fn_mem - theorem euclidean_geometry.orthogonal_projection_fn_mem_orthogonal - theorem euclidean_geometry.orthogonal_projection_fn_vsub_mem_direction_orthogonal - theorem euclidean_geometry.orthogonal_projection_mem - theorem euclidean_geometry.orthogonal_projection_mem_orthogonal - theorem euclidean_geometry.orthogonal_projection_vadd_eq_self - theorem euclidean_geometry.orthogonal_projection_vadd_smul_vsub_orthogonal_projection - theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction - theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction_orthogonal - theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction - theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction_orthogonal - def inner_product_geometry.angle - theorem inner_product_geometry.angle_add_angle_eq_pi_of_angle_eq_pi - theorem inner_product_geometry.angle_add_angle_sub_add_angle_sub_eq_pi - theorem inner_product_geometry.angle_comm - theorem inner_product_geometry.angle_eq_pi_iff - theorem inner_product_geometry.angle_eq_zero_iff - theorem inner_product_geometry.angle_le_pi - theorem inner_product_geometry.angle_neg_left - theorem inner_product_geometry.angle_neg_neg - theorem inner_product_geometry.angle_neg_right - theorem inner_product_geometry.angle_neg_self_of_nonzero - theorem inner_product_geometry.angle_nonneg - theorem inner_product_geometry.angle_self - theorem inner_product_geometry.angle_self_neg_of_nonzero - theorem inner_product_geometry.angle_smul_left_of_neg - theorem inner_product_geometry.angle_smul_left_of_pos - theorem inner_product_geometry.angle_smul_right_of_neg - theorem inner_product_geometry.angle_smul_right_of_pos - theorem inner_product_geometry.angle_sub_eq_angle_sub_rev_of_norm_eq - theorem inner_product_geometry.angle_zero_left - theorem inner_product_geometry.angle_zero_right - theorem inner_product_geometry.cos_angle - theorem inner_product_geometry.cos_angle_add_angle_sub_add_angle_sub_eq_neg_one - theorem inner_product_geometry.cos_angle_mul_norm_mul_norm - theorem inner_product_geometry.cos_angle_sub_add_angle_sub_rev_eq_neg_cos_angle - theorem inner_product_geometry.inner_eq_zero_iff_angle_eq_pi_div_two - theorem inner_product_geometry.norm_add_square_eq_norm_square_add_norm_square' - theorem inner_product_geometry.norm_add_square_eq_norm_square_add_norm_square_iff_angle_eq_pi_div_two - theorem inner_product_geometry.norm_eq_of_angle_sub_eq_angle_sub_rev_of_angle_ne_pi - theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square' - theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square_iff_angle_eq_pi_div_two - theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square_sub_two_mul_norm_mul_norm_mul_cos_angle - theorem inner_product_geometry.sin_angle_add_angle_sub_add_angle_sub_eq_zero - theorem inner_product_geometry.sin_angle_mul_norm_mul_norm - theorem inner_product_geometry.sin_angle_sub_add_angle_sub_rev_eq_sin_angle Added src/geometry/euclidean/basic.lean + def euclidean_geometry.angle + theorem euclidean_geometry.angle_add_angle_eq_pi_of_angle_eq_pi + theorem euclidean_geometry.angle_comm + theorem euclidean_geometry.angle_eq_angle_of_angle_eq_pi + theorem euclidean_geometry.angle_eq_left + theorem euclidean_geometry.angle_eq_of_ne + theorem euclidean_geometry.angle_eq_right + theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_left + theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_right + theorem euclidean_geometry.angle_le_pi + theorem euclidean_geometry.angle_nonneg + theorem euclidean_geometry.dist_affine_combination + theorem euclidean_geometry.dist_orthogonal_projection_eq_zero_iff + theorem euclidean_geometry.dist_orthogonal_projection_ne_zero_of_not_mem + theorem euclidean_geometry.dist_square_eq_dist_orthogonal_projection_square_add_dist_orthogonal_projection_square + theorem euclidean_geometry.dist_square_smul_orthogonal_vadd_smul_orthogonal_vadd + theorem euclidean_geometry.inner_weighted_vsub + theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection + theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection_fn + def euclidean_geometry.orthogonal_projection + theorem euclidean_geometry.orthogonal_projection_eq_self_iff + def euclidean_geometry.orthogonal_projection_fn + theorem euclidean_geometry.orthogonal_projection_fn_eq + theorem euclidean_geometry.orthogonal_projection_fn_mem + theorem euclidean_geometry.orthogonal_projection_fn_mem_orthogonal + theorem euclidean_geometry.orthogonal_projection_fn_vsub_mem_direction_orthogonal + theorem euclidean_geometry.orthogonal_projection_mem + theorem euclidean_geometry.orthogonal_projection_mem_orthogonal + theorem euclidean_geometry.orthogonal_projection_vadd_eq_self + theorem euclidean_geometry.orthogonal_projection_vadd_smul_vsub_orthogonal_projection + theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction + theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction_orthogonal + theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction + theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction_orthogonal + def inner_product_geometry.angle + theorem inner_product_geometry.angle_add_angle_eq_pi_of_angle_eq_pi + theorem inner_product_geometry.angle_comm + theorem inner_product_geometry.angle_eq_pi_iff + theorem inner_product_geometry.angle_eq_zero_iff + theorem inner_product_geometry.angle_le_pi + theorem inner_product_geometry.angle_neg_left + theorem inner_product_geometry.angle_neg_neg + theorem inner_product_geometry.angle_neg_right + theorem inner_product_geometry.angle_neg_self_of_nonzero + theorem inner_product_geometry.angle_nonneg + theorem inner_product_geometry.angle_self + theorem inner_product_geometry.angle_self_neg_of_nonzero + theorem inner_product_geometry.angle_smul_left_of_neg + theorem inner_product_geometry.angle_smul_left_of_pos + theorem inner_product_geometry.angle_smul_right_of_neg + theorem inner_product_geometry.angle_smul_right_of_pos + theorem inner_product_geometry.angle_zero_left + theorem inner_product_geometry.angle_zero_right + theorem inner_product_geometry.cos_angle + theorem inner_product_geometry.cos_angle_mul_norm_mul_norm + theorem inner_product_geometry.inner_eq_zero_iff_angle_eq_pi_div_two + theorem inner_product_geometry.sin_angle_mul_norm_mul_norm Added src/geometry/euclidean/circumcenter.lean + theorem affine.simplex.centroid_eq_affine_combination_of_points_with_circumcenter + def affine.simplex.centroid_weights_with_circumcenter + def affine.simplex.circumcenter + def affine.simplex.circumcenter_circumradius + theorem affine.simplex.circumcenter_circumradius_unique_dist_eq + theorem affine.simplex.circumcenter_eq_affine_combination_of_points_with_circumcenter + theorem affine.simplex.circumcenter_mem_affine_span + def affine.simplex.circumcenter_weights_with_circumcenter + def affine.simplex.circumradius + theorem affine.simplex.dist_circumcenter_eq_circumradius' + theorem affine.simplex.dist_circumcenter_eq_circumradius + theorem affine.simplex.eq_circumcenter_of_dist_eq + theorem affine.simplex.eq_circumradius_of_dist_eq + theorem affine.simplex.point_eq_affine_combination_of_points_with_circumcenter + def affine.simplex.point_index_embedding + def affine.simplex.point_weights_with_circumcenter + def affine.simplex.points_with_circumcenter + theorem affine.simplex.points_with_circumcenter_eq_circumcenter + inductive affine.simplex.points_with_circumcenter_index + theorem affine.simplex.points_with_circumcenter_point + theorem affine.simplex.sum_centroid_weights_with_circumcenter + theorem affine.simplex.sum_circumcenter_weights_with_circumcenter + theorem affine.simplex.sum_point_weights_with_circumcenter + theorem affine.simplex.sum_points_with_circumcenter + theorem euclidean_geometry.dist_eq_iff_dist_orthogonal_projection_eq + theorem euclidean_geometry.dist_set_eq_iff_dist_orthogonal_projection_eq + theorem euclidean_geometry.exists_dist_eq_iff_exists_dist_orthogonal_projection_eq + theorem euclidean_geometry.exists_unique_dist_eq_of_affine_independent + theorem euclidean_geometry.exists_unique_dist_eq_of_insert Added src/geometry/euclidean/default.lean Added src/geometry/euclidean/monge_point.lean + def affine.simplex.altitude + theorem affine.simplex.altitude_def + theorem affine.simplex.direction_monge_plane + theorem affine.simplex.eq_monge_point_of_forall_mem_monge_plane + theorem affine.simplex.inner_monge_point_vsub_face_centroid_vsub + def affine.simplex.monge_plane + theorem affine.simplex.monge_plane_comm + theorem affine.simplex.monge_plane_def + def affine.simplex.monge_point + theorem affine.simplex.monge_point_eq_affine_combination_of_points_with_circumcenter + theorem affine.simplex.monge_point_eq_smul_vsub_vadd_circumcenter + theorem affine.simplex.monge_point_mem_affine_span + theorem affine.simplex.monge_point_mem_monge_plane + theorem affine.simplex.monge_point_vsub_face_centroid_eq_weighted_vsub_of_points_with_circumcenter + def affine.simplex.monge_point_vsub_face_centroid_weights_with_circumcenter + theorem affine.simplex.monge_point_vsub_face_centroid_weights_with_circumcenter_eq_sub + def affine.simplex.monge_point_weights_with_circumcenter + theorem affine.simplex.sum_monge_point_vsub_face_centroid_weights_with_circumcenter + theorem affine.simplex.sum_monge_point_weights_with_circumcenter + theorem affine.triangle.altitude_eq_monge_plane + theorem affine.triangle.eq_orthocenter_of_forall_mem_altitude + def affine.triangle.orthocenter + theorem affine.triangle.orthocenter_eq_monge_point + theorem affine.triangle.orthocenter_eq_smul_vsub_vadd_circumcenter + theorem affine.triangle.orthocenter_mem_affine_span + theorem affine.triangle.orthocenter_mem_altitude Added src/geometry/euclidean/triangle.lean + theorem euclidean_geometry.angle_add_angle_add_angle_eq_pi + theorem euclidean_geometry.angle_eq_angle_of_dist_eq + theorem euclidean_geometry.dist_eq_of_angle_eq_angle_of_angle_ne_pi + theorem euclidean_geometry.dist_square_eq_dist_square_add_dist_square_iff_angle_eq_pi_div_two + theorem euclidean_geometry.dist_square_eq_dist_square_add_dist_square_sub_two_mul_dist_mul_dist_mul_cos_angle + theorem inner_product_geometry.angle_add_angle_sub_add_angle_sub_eq_pi + theorem inner_product_geometry.angle_sub_eq_angle_sub_rev_of_norm_eq + theorem inner_product_geometry.cos_angle_add_angle_sub_add_angle_sub_eq_neg_one + theorem inner_product_geometry.cos_angle_sub_add_angle_sub_rev_eq_neg_cos_angle + theorem inner_product_geometry.norm_add_square_eq_norm_square_add_norm_square' + theorem inner_product_geometry.norm_add_square_eq_norm_square_add_norm_square_iff_angle_eq_pi_div_two + theorem inner_product_geometry.norm_eq_of_angle_sub_eq_angle_sub_rev_of_angle_ne_pi + theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square' + theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square_iff_angle_eq_pi_div_two + theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square_sub_two_mul_norm_mul_norm_mul_cos_angle + theorem inner_product_geometry.sin_angle_add_angle_sub_add_angle_sub_eq_zero + theorem inner_product_geometry.sin_angle_sub_add_angle_sub_rev_eq_sin_angle 2020-08-24 16:57:27 1404ad8 feat(algebra/add_torsor): vsub_vadd_comm (#3928) Add another (commutative) `add_torsor` rearrangement lemma. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem vsub_vadd_comm 2020-08-24 16:23:09 96b559c feat(set_theory/game): grundy number of single-heap nim (#3930) ESTIMATED CHANGES Modified src/set_theory/game/nim.lean + theorem nim.Grundy_value_nim + theorem nim.equiv_nim_iff_Grundy_value_eq + theorem nim.nim_equiv_iff_eq 2020-08-24 01:55:42 1ccdbb9 feat(category_theory/images): unique image (#3921) Show that the strong-epi mono factorisation of a morphism is unique. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean + def category_theory.limits.image.iso_strong_epi_mono + theorem category_theory.limits.image.iso_strong_epi_mono_hom_comp_ι + theorem category_theory.limits.image.iso_strong_epi_mono_inv_comp_mono 2020-08-24 01:55:40 685d9dd feat(category_theory): cancel fully faithful functor (#3920) Construct the natural isomorphism between `F` and `G` given a natural iso between `F ⋙ H` and `G ⋙ H` for a fully faithful `H`. ESTIMATED CHANGES Modified src/category_theory/fully_faithful.lean + def category_theory.fully_faithful_cancel_right + theorem category_theory.fully_faithful_cancel_right_hom_app + theorem category_theory.fully_faithful_cancel_right_inv_app 2020-08-24 01:00:11 ebd3351 chore(category_theory/conj): add a new simp lemma (#3922) Mark a new simp lemma which I think is helpful and simplify some proofs using it. ESTIMATED CHANGES Modified src/category_theory/conj.lean 2020-08-24 01:00:09 f230409 feat(category_theory/adjunction): opposite adjunctions (#3899) Add two constructions for adjoints for opposite functors. ESTIMATED CHANGES Added src/category_theory/adjunction/opposites.lean + def adjunction.adjoint_of_op_adjoint_op + def adjunction.adjoint_of_unop_adjoint_unop + def adjunction.adjoint_op_of_adjoint_unop + def adjunction.adjoint_unop_of_adjoint_op + def adjunction.op_adjoint_of_unop_adjoint + def adjunction.op_adjoint_op_of_adjoint + def adjunction.unop_adjoint_of_op_adjoint + def adjunction.unop_adjoint_unop_of_adjoint Modified src/category_theory/opposites.lean + def category_theory.op_equiv + theorem category_theory.op_equiv_apply + theorem category_theory.op_equiv_symm_apply 2020-08-24 01:00:07 bfc8c66 feat(category_theory/limits/shapes/finite*): finite limits from limits (#3800) Add some missing derivations in the new has_limits hierarchy ESTIMATED CHANGES Modified src/category_theory/limits/shapes/finite_limits.lean + def category_theory.limits.has_finite_colimits_of_has_colimits + def category_theory.limits.has_finite_limits_of_has_limits Modified src/category_theory/limits/shapes/finite_products.lean + def category_theory.limits.has_finite_coproducts_of_has_finite_colimits + def category_theory.limits.has_finite_products_of_has_finite_limits 2020-08-23 23:56:34 bf6cd28 feat(category_theory/fully_faithful): equivalence of homsets (#3923) I was *so sure* I'd already made this PR but I can't find it nor this construction, so here it is. ESTIMATED CHANGES Modified src/category_theory/fully_faithful.lean + def category_theory.equiv_of_fully_faithful + theorem category_theory.equiv_of_fully_faithful_apply + theorem category_theory.equiv_of_fully_faithful_symm_apply 2020-08-23 16:22:06 7d4f773 feat(ring_theory/jacobson): Proof that if a ring is a Jacobson Ring then so is its localization at a single element (#3651) The main result here is that the localization of a Jacobson ring to a single element is also a Jacobson ring, which is one of the things needed for the proof that `R` is Jacobson if and only if `R[x]` is Jacobson. Two characterization of Jacobson rings in terms of their quotient rings are also included, again needed to prove `R[x]` is Jacobson. ESTIMATED CHANGES Modified src/group_theory/submonoid/membership.lean + theorem submonoid.mem_closure_singleton_self Modified src/linear_algebra/basic.lean + theorem submodule.quotient.mk_surjective Modified src/order/complete_lattice.lean + theorem Inf_le_Inf_of_subset_insert_top + theorem Sup_le_Sup_of_subset_instert_bot Modified src/ring_theory/ideal/basic.lean + theorem ideal.mul_unit_mem_iff_mem + theorem ideal.unit_mul_mem_iff_mem Modified src/ring_theory/ideal/operations.lean - theorem ideal.comap.is_maximal + theorem ideal.comap_Inf' + theorem ideal.comap_is_maximal_of_surjective + theorem ideal.comap_is_prime + theorem ideal.map_is_prime_of_surjective + theorem ideal.map_radical_of_surjective + theorem ideal.mk_ker + theorem ring_hom.ker_eq_comap_bot Modified src/ring_theory/jacobson.lean + theorem ideal.disjoint_closure_singleton_iff_not_mem + theorem ideal.is_jacobson_iff_Inf_maximal' + theorem ideal.is_jacobson_localization + theorem ideal.is_maximal_iff_is_maximal_disjoint + theorem ideal.is_maximal_of_is_maximal_disjoint + def ideal.order_iso_of_maximal Modified src/ring_theory/jacobson_ideal.lean + theorem ideal.comap_jacobson_of_surjective + theorem ideal.eq_jacobson_iff_Inf_maximal' + theorem ideal.eq_jacobson_iff_Inf_maximal + theorem ideal.eq_jacobson_iff_not_mem + theorem ideal.eq_radical_of_eq_jacobson - theorem ideal.jacobson.is_maximal + theorem ideal.jacobson_eq_iff_jacobson_quotient_eq_bot + theorem ideal.jacobson_eq_self_of_is_maximal + theorem ideal.map_jacobson_of_surjective + theorem ideal.radical_eq_jacobson_iff_radical_quotient_eq_jacobson_bot + theorem ideal.radical_le_jacobson Modified src/ring_theory/localization.lean + theorem localization_map.comap_map_of_is_prime_disjoint + theorem localization_map.is_prime_iff_is_prime_disjoint + theorem localization_map.is_prime_of_is_prime_disjoint + theorem localization_map.mem_map_to_map_iff + theorem localization_map.mk'_mem_iff + def localization_map.order_iso_of_prime 2020-08-23 15:35:50 e216755 feat(linear_algebra/affine_space): more lemmas (#3918) Add some more affine space lemmas. In particular, this includes lemmas about the dimension of the span of a finite affinely independent family. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean + theorem affine_subspace.direction_eq_top_iff_of_nonempty Modified src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_span_eq_top_of_affine_independent_of_card_eq_findim_add_one + theorem findim_vector_span_of_affine_independent + theorem vector_span_eq_top_of_affine_independent_of_card_eq_findim_add_one Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent_set_of_affine_independent + theorem injective_of_affine_independent 2020-08-23 14:51:36 d80f3ef feat(geometry/euclidean): Monge point and orthocenter (#3872) The main purpose of this PR is to define the orthocenter of a triangle. Simplices in more than two dimensions do not in general have an orthocenter: the altitudes are not necessarily concurrent. However, there is a n-dimensional generalization of the orthocenter in the form of the Monge point of a simplex. Define a Monge plane to be an (n-1)-dimensional subspace that passes through the centroid of an (n-2)-dimensional face of the simplex and is orthogonal to the opposite edge. Then the Monge planes of a simplex are always concurrent, and their point of concurrence is known as the Monge point of the simplex. Furthermore, the circumcenter O, centroid G and Monge point M are collinear in that order on the Euler line, with OG : GM = (n-1) : 2. Here, we use that ratio as a convenient way to define the Monge point in terms of the existing definitions of the circumcenter and the centroid. First we set up some infrastructure for dealing with affine combinations of the vertices of a simplex together with its circumcenter, which can be convenient for computations rather than dealing with combinations of the vertices alone; the use of an inductive type `points_with_circumcenter_index` seemed to be more convenient than other options for how to index such combinations. Then, a straightforward calculation using `inner_weighted_vsub` shows that the point defined in terms of the circumcenter and the centroid does indeed lie in the Monge planes, so justifying the definition as being a definition of the Monge point. It is then shown to be the only point in that intersection (in fact, the only point in the intersection of all the Monge planes where one of the two vertices needed to specify a Monge plane is fixed). The altitudes of a simplex are then defined. In the case of a triangle, the orthocenter is defined to be the Monge point, the altitudes are shown to equal the Monge planes (mathematically trivial, but involves quite a bit of fiddling around with `fin 3`) and thus the orthocenter is shown to lie in the altitudes and to be the unique point lying in any two of them (again, involves various fiddling around with `fin 3` to link up with the previous lemmas). Because of the definition chosen for the Monge point, the position of the orthocenter on the Euler line of the triangle comes for free (not quite `rfl`, but two rewrites of `rfl` lemmas plus `norm_num`). ESTIMATED CHANGES Modified src/geometry/euclidean.lean + def affine.simplex.altitude + theorem affine.simplex.altitude_def + theorem affine.simplex.centroid_eq_affine_combination_of_points_with_circumcenter + def affine.simplex.centroid_weights_with_circumcenter + theorem affine.simplex.circumcenter_eq_affine_combination_of_points_with_circumcenter + def affine.simplex.circumcenter_weights_with_circumcenter + theorem affine.simplex.direction_monge_plane + theorem affine.simplex.eq_monge_point_of_forall_mem_monge_plane + theorem affine.simplex.inner_monge_point_vsub_face_centroid_vsub + def affine.simplex.monge_plane + theorem affine.simplex.monge_plane_comm + theorem affine.simplex.monge_plane_def + def affine.simplex.monge_point + theorem affine.simplex.monge_point_eq_affine_combination_of_points_with_circumcenter + theorem affine.simplex.monge_point_eq_smul_vsub_vadd_circumcenter + theorem affine.simplex.monge_point_mem_affine_span + theorem affine.simplex.monge_point_mem_monge_plane + theorem affine.simplex.monge_point_vsub_face_centroid_eq_weighted_vsub_of_points_with_circumcenter + def affine.simplex.monge_point_vsub_face_centroid_weights_with_circumcenter + theorem affine.simplex.monge_point_vsub_face_centroid_weights_with_circumcenter_eq_sub + def affine.simplex.monge_point_weights_with_circumcenter + theorem affine.simplex.point_eq_affine_combination_of_points_with_circumcenter + def affine.simplex.point_index_embedding + def affine.simplex.point_weights_with_circumcenter + def affine.simplex.points_with_circumcenter + theorem affine.simplex.points_with_circumcenter_eq_circumcenter + inductive affine.simplex.points_with_circumcenter_index + theorem affine.simplex.points_with_circumcenter_point + theorem affine.simplex.sum_centroid_weights_with_circumcenter + theorem affine.simplex.sum_circumcenter_weights_with_circumcenter + theorem affine.simplex.sum_monge_point_vsub_face_centroid_weights_with_circumcenter + theorem affine.simplex.sum_monge_point_weights_with_circumcenter + theorem affine.simplex.sum_point_weights_with_circumcenter + theorem affine.simplex.sum_points_with_circumcenter + theorem affine.triangle.altitude_eq_monge_plane + theorem affine.triangle.eq_orthocenter_of_forall_mem_altitude + def affine.triangle.orthocenter + theorem affine.triangle.orthocenter_eq_monge_point + theorem affine.triangle.orthocenter_eq_smul_vsub_vadd_circumcenter + theorem affine.triangle.orthocenter_mem_affine_span + theorem affine.triangle.orthocenter_mem_altitude 2020-08-23 13:21:25 588e46c feat(tactic/*,meta/expr): refactor and extend binder matching functions (#3830) This PR deals with meta functions that deconstruct expressions starting with pi or lambda binders. Core defines `mk_local_pis` to deconstruct pi binders and `tactic.core` used to contain some ad-hoc variations of its functionality. This PR unifies all these variations and adds several more, for both pi and lambda binders. Specifically: - We remove `mk_local_pis_whnf`. Use `whnf e md >>= mk_local_pis` instead. Note: we reuse the name for another function with different semantics; see below. - We add `mk_{meta,local}_{pis,lambdas}`, `mk_{meta,local}_{pis,lambdas}n`, `mk_{meta,local}_{pis,lambdas}_whnf`, `mk_{meta,local}_{pis,lambdas}n_whnf`. These can all be used to 'open' a pi or lambda binder. The binder is instantiated with a fresh local for the `local` variants and a fresh metavariable for the `meta` variants. The `whnf` variants normalise the input expression before checking for leading binders. The `{pis,lambdas}n` variants match a given number of leading binders. Some of these functions were already defined, but we now implement them in terms of a new function, `mk_binders`, which abstracts over the common functionality. - We rename `get_pi_binders_dep` to `get_pi_binders_nondep`. This function returns the nondependent binders, so the old name was misleading. - We add `expr.match_` for every constructor `C` of `expr`. `match_pi` and `match_lam` are needed to implement the `mk_*` functions; the other functions are added for completeness. - (Bonus) We add `get_app_fn_args_whnf` and `get_app_fn_whnf`. These are variants of `get_app_fn_args` and `get_app_fn`, respectively, which normalise the input expression as necessary. The refactoring might be a slight performance regression because the new implementation adds some indirection. But the affected functions aren't widely used anyway and I suspect that the performance loss is very minor, so having clearer and more concise code is probably worth it. ESTIMATED CHANGES Modified src/control/traversable/derive.lean Modified src/meta/coinductive_predicates.lean Modified src/meta/expr.lean Added src/tactic/binder_matching.lean Modified src/tactic/choose.lean Modified src/tactic/core.lean Modified src/tactic/ext.lean Modified src/tactic/lift.lean Modified src/tactic/lint/simp.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/mk_iff_of_inductive_prop.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/norm_cast.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/simps.lean 2020-08-23 12:27:41 ffd8626 refactor(linear_algebra/affine_space/basic): make more arguments of smul_vsub_vadd_mem implicit (#3917) Came up in #3872. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean 2020-08-23 06:36:27 7d88a30 fix(data/sigma/basic): rename `ext` to `sigma.ext` (#3916) ESTIMATED CHANGES Modified src/data/sigma/basic.lean - theorem ext + theorem sigma.ext 2020-08-23 05:18:43 ff97055 feat(data/finset/basic): insert_singleton_comm (#3914) Add the result that `({a, b} : finset α) = {b, a}`. This came up in #3872, and `library_search` does not show it as already present. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.insert_singleton_comm 2020-08-23 02:34:47 7ac7246 feat(linear_algebra/finite_dimensional): Add `linear_equiv.of_inj_endo` and related lemmas (#3878) This PR prepares #3864. * Move the section `zero_dim` up. * Add several lemmas about finite dimensional vector spaces. The only new definition is `linear_equiv.of_injective_endo`, which produces a linear equivalence from an injective endomorphism. ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem linear_independent_le_dim Modified src/linear_algebra/finite_dimensional.lean +/- theorem findim_bot + theorem finite_dimensional.lt_omega_of_linear_independent + theorem linear_equiv.of_injective_endo_left_inv + theorem linear_equiv.of_injective_endo_right_inv + theorem linear_equiv.of_injective_endo_to_fun + theorem linear_map.is_unit_iff + theorem submodule.eq_top_of_disjoint 2020-08-22 18:09:38 abe4459 feat(analysis/convex): define concavity of functions (#3849) ESTIMATED CHANGES Modified src/algebra/module/ordered.lean Modified src/algebra/ordered_group.lean Modified src/analysis/convex/basic.lean + theorem concave_on.add + theorem concave_on.comp_affine_map + theorem concave_on.comp_linear_map + theorem concave_on.concave_le + theorem concave_on.convex_hypograph + theorem concave_on.convex_lt + theorem concave_on.le_on_segment' + theorem concave_on.le_on_segment + theorem concave_on.smul + theorem concave_on.subset + theorem concave_on.translate_left + theorem concave_on.translate_right + def concave_on + theorem concave_on_const + theorem concave_on_id + theorem concave_on_iff_convex_hypograph + theorem concave_on_iff_div + theorem concave_on_real_of_slope_mono_adjacent +/- theorem convex_on.le_on_segment' +/- theorem convex_on.le_on_segment + theorem linear_order.concave_on_of_lt + theorem neg_concave_on_iff + theorem neg_convex_on_iff Modified src/analysis/convex/extrema.lean + theorem is_max_on.of_is_local_max_of_convex_univ + theorem is_max_on.of_is_local_max_on_of_concave_on +/- theorem is_min_on.of_is_local_min_of_convex_univ +/- theorem is_min_on.of_is_local_min_on_of_convex_on +/- theorem is_min_on.of_is_local_min_on_of_convex_on_Icc 2020-08-22 15:14:00 9e9b380 doc(algebra/linear_recurrence): fix a mistake in module docstring (#3911) ESTIMATED CHANGES Modified src/algebra/linear_recurrence.lean 2020-08-22 15:13:58 65ceb00 fix(topology): simplify proof of Heine-Cantor (#3910) ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem bsupr_le_supr + theorem infi_le_binfi Modified src/topology/uniform_space/compact_separated.lean 2020-08-22 14:33:36 6a85278 feat(data/polynomial/eval): eval_finset.prod (#3903) Evaluating commutes with finset.prod; useful in a variety of situations in numerical analysis. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.eval_prod 2020-08-22 13:26:57 aca785a feat(linear_algebra): linear_equiv_matrix lemmas (#3898) From the sphere eversion project, with help by Anne for the crucial `linear_equiv_matrix_apply`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean + theorem linear_map.comp_coe +/- theorem linear_map.id_apply + theorem linear_map.id_coe Modified src/linear_algebra/matrix.lean +/- def linear_equiv_matrix + theorem linear_equiv_matrix_apply' + theorem linear_equiv_matrix_apply + theorem linear_equiv_matrix_id +/- theorem linear_equiv_matrix_range + theorem linear_equiv_matrix_symm_one + theorem matrix.linear_equiv.is_unit_det + def matrix.linear_equiv.of_is_unit_det +/- theorem matrix.linear_equiv_matrix_comp +/- theorem matrix.linear_equiv_matrix_mul + theorem matrix.linear_equiv_matrix_symm_mul 2020-08-22 12:32:20 e9d1067 feat(category_theory/opposites): isomorphism of opposite functor (#3901) Get some lemmas generated by `simps` and add two isomorphisms for opposite functors. ESTIMATED CHANGES Modified src/category_theory/opposites.lean - theorem category_theory.functor.left_op_map - theorem category_theory.functor.left_op_obj - theorem category_theory.functor.op_hom.map_app - theorem category_theory.functor.op_hom.obj - theorem category_theory.functor.op_inv.map_app - theorem category_theory.functor.op_inv.obj - theorem category_theory.functor.op_map - theorem category_theory.functor.op_obj + def category_theory.functor.op_unop_iso - theorem category_theory.functor.right_op_map - theorem category_theory.functor.right_op_obj - theorem category_theory.functor.unop_map - theorem category_theory.functor.unop_obj + def category_theory.functor.unop_op_iso 2020-08-22 10:07:23 011a262 feat(set_theory/game): impartial games and the Sprague-Grundy theorem (#3855) ESTIMATED CHANGES Added src/set_theory/game/impartial.lean + theorem pgame.equiv_iff_sum_first_loses + theorem pgame.good_left_move_iff_first_wins + theorem pgame.good_right_move_iff_first_wins + def pgame.impartial + theorem pgame.impartial_add + theorem pgame.impartial_add_self + theorem pgame.impartial_def + theorem pgame.impartial_first_loses_symm' + theorem pgame.impartial_first_loses_symm + theorem pgame.impartial_first_wins_symm' + theorem pgame.impartial_first_wins_symm + theorem pgame.impartial_move_left_impartial + theorem pgame.impartial_move_right_impartial + theorem pgame.impartial_neg + theorem pgame.impartial_neg_equiv_self + theorem pgame.impartial_winner_cases + theorem pgame.no_good_left_moves_iff_first_loses + theorem pgame.no_good_right_moves_iff_first_loses + theorem pgame.zero_impartial Added src/set_theory/game/nim.lean + theorem nim.Grundy_value_def + theorem nim.Sprague_Grundy + theorem nim.nim_def + theorem nim.nim_impartial + theorem nim.nim_non_zero_first_wins + theorem nim.nim_sum_first_loses_iff_eq + theorem nim.nim_sum_first_wins_iff_neq + theorem nim.nim_wf_lemma + theorem nim.nim_zero_first_loses + def nim.nonmoves + theorem nim.nonmoves_nonempty + def nim + def ordinal.out + theorem ordinal.type_out' Added src/set_theory/game/winner.lean + def pgame.first_loses + theorem pgame.first_loses_is_zero + theorem pgame.first_loses_of_equiv + theorem pgame.first_loses_of_equiv_iff + def pgame.first_wins + theorem pgame.first_wins_of_equiv + theorem pgame.first_wins_of_equiv_iff + def pgame.left_wins + theorem pgame.left_wins_of_equiv + theorem pgame.left_wins_of_equiv_iff + theorem pgame.omega_left_wins + theorem pgame.one_left_wins + def pgame.right_wins + theorem pgame.right_wins_of_equiv + theorem pgame.right_wins_of_equiv_iff + theorem pgame.star_first_wins + theorem pgame.winner_cases + theorem pgame.zero_first_loses Modified src/set_theory/pgame.lean 2020-08-22 09:35:08 e546e94 fix(data/equiv/transfer_instance): remove stray #lint (#3908) ESTIMATED CHANGES Modified src/data/equiv/transfer_instance.lean 2020-08-22 06:31:00 13881d7 feat(tactic/dec_trivial): make dec_trivial easier to use (#3875) ESTIMATED CHANGES Modified src/tactic/basic.lean Modified src/tactic/core.lean Added src/tactic/dec_trivial.lean Modified src/tactic/interactive.lean Added test/dec_trivial_tactic.lean Added test/revert_target_deps.lean 2020-08-22 04:56:48 83db96b feat(algebra/group/with_one): make with_one and with_zero irreducible. (#3883) ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/continued_fractions/computation/translations.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/group/with_one.lean + theorem with_one.coe_mul - theorem with_one.mul_coe + theorem with_zero.coe_inv + theorem with_zero.coe_mul - theorem with_zero.inv_coe - theorem with_zero.mul_coe + theorem with_zero.mul_comm + theorem with_zero.mul_inv_cancel + theorem with_zero.mul_zero + theorem with_zero.zero_mul Modified src/algebra/ordered_group.lean Modified src/data/polynomial/ring_division.lean Modified src/data/seq/seq.lean 2020-08-22 01:22:48 4b24166 chore(scripts): update nolints.txt (#3905) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-22 00:21:09 278f512 feat(data/real): define the golden ratio and its conjugate, prove irrationality of both and Binet's formula (#3885) Co-authored by @alreadydone and @monadius through their solutions to the corresponding Codewars Kata. ESTIMATED CHANGES Modified src/data/fintype/card.lean + theorem finset.prod_fin_eq_prod_range + theorem finset.prod_range_eq_prod_fin - theorem finset.range_prod_eq_univ_prod Added src/data/real/golden_ratio.lean + theorem fib_is_sol_fib_rec + def fib_rec + theorem fib_rec_char_poly_eq + theorem geom_gold_conj_is_sol_fib_rec + theorem geom_gold_is_sol_fib_rec + theorem gold_add_gold_conj + theorem gold_conj_irrational + theorem gold_conj_mul_gold + theorem gold_conj_ne_zero + theorem gold_conj_neg + theorem gold_conj_sq + theorem gold_irrational + theorem gold_mul_gold_conj + theorem gold_ne_zero + theorem gold_pos + theorem gold_sq + theorem gold_sub_gold_conj + def golden_conj + def golden_ratio + theorem inv_gold + theorem inv_gold_conj + theorem neg_one_lt_gold_conj + theorem one_lt_gold + theorem one_sub_gold + theorem one_sub_gold_conj + theorem real.coe_fib_eq' + theorem real.coe_fib_eq Modified src/number_theory/bernoulli.lean 2020-08-21 22:13:24 9998bee chore(measure_theory/*): remove some `measurable f` arguments (#3902) ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_add_measure Modified src/measure_theory/interval_integral.lean +/- theorem interval_integral.integral_Iic_sub_Iic +/- theorem interval_integral.integral_add_adjacent_intervals +/- theorem interval_integral.integral_add_adjacent_intervals_cancel +/- theorem interval_integral.integral_interval_add_interval_comm +/- theorem interval_integral.integral_interval_sub_interval_comm' +/- theorem interval_integral.integral_interval_sub_interval_comm +/- theorem interval_integral.integral_interval_sub_left Modified src/measure_theory/set_integral.lean +/- theorem measure_theory.integral_add_compl 2020-08-21 20:49:40 4c04f0b feat(topology/algebra/ordered): sum of functions with limits at_top and cst (#3833) Two functions which tend to `at_top` have sum tending to `at_top`. Likewise if one tends to `at_top` and one tends to a constant. Also made a couple of edits relating to [this conversation](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Ordered.20groups.20have.20no.20top.20element) about `no_top` for algebraic structures: ESTIMATED CHANGES Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_ring.lean Modified src/order/filter/at_top_bot.lean + theorem filter.tendsto_at_bot_add + theorem filter.tendsto_at_top_add Modified src/topology/algebra/ordered.lean + theorem tendsto_at_bot_add_tendsto_left + theorem tendsto_at_bot_add_tendsto_right + theorem tendsto_at_top_add_tendsto_left + theorem tendsto_at_top_add_tendsto_right 2020-08-21 19:07:51 1db32c5 feat(set/basic): some results about `set.pi` (#3894) New definition: `function.eval` Also some changes in `set.basic` Name changes: ``` pi_empty_index -> empty_pi pi_insert_index -> insert_pi pi_singleton_index -> singleton_pi set.push_pull -> image_inter_preimage set.push_pull' -> image_preimage_inter ``` ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.empty_pi + theorem set.eval_image_pi + theorem set.eval_image_univ_pi + theorem set.image_compl_preimage + theorem set.image_inter_preimage + theorem set.image_preimage_inter + theorem set.insert_pi + theorem set.mem_pi + theorem set.mem_univ_pi +/- def set.pi - theorem set.pi_empty_index + theorem set.pi_eq_empty + theorem set.pi_eq_empty_iff +/- theorem set.pi_if - theorem set.pi_insert_index + theorem set.pi_nonempty_iff - theorem set.pi_singleton_index + theorem set.singleton_pi + theorem set.subset_pi_eval_image + theorem set.univ_pi_eq_empty + theorem set.univ_pi_eq_empty_iff + theorem set.univ_pi_nonempty_iff + theorem set.update_preimage_pi + theorem set.update_preimage_univ_pi Modified src/field_theory/chevalley_warning.lean Modified src/logic/function/basic.lean + def function.eval + theorem function.eval_apply Modified src/order/filter/basic.lean 2020-08-21 18:31:42 0c7ac83 feat(measure_theory/bochner_integration): add `integral_smul_measure` (#3900) Also add `integral_dirac` ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_add_measure + theorem measure_theory.integral_dirac + theorem measure_theory.integral_eq_zero_of_ae + theorem measure_theory.integral_smul_measure Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_add_measure_iff + theorem measure_theory.ae_smul_measure + theorem measure_theory.measure.smul_apply 2020-08-21 16:04:55 ac56790 feat(order/rel_iso): a new definition of order_iso, using preorder instances (#3838) defines (new) `order_embedding` and `order_iso`, which map both < and <= replaces existing `rel_embedding` and `rel_iso` instances preserving < or <= with the new abbreviations ESTIMATED CHANGES Modified src/data/finsupp/lattice.lean + def finsupp.order_embedding_to_fun + theorem finsupp.order_embedding_to_fun_apply + def finsupp.order_iso_multiset + theorem finsupp.order_iso_multiset_apply + theorem finsupp.order_iso_multiset_symm_apply - def finsupp.rel_embedding_to_fun - theorem finsupp.rel_embedding_to_fun_apply - def finsupp.rel_iso_multiset - theorem finsupp.rel_iso_multiset_apply - theorem finsupp.rel_iso_multiset_symm_apply Modified src/data/setoid/basic.lean +/- def setoid.correspondence Modified src/data/setoid/partition.lean Modified src/group_theory/congruence.lean +/- def con.correspondence Modified src/linear_algebra/basic.lean - def submodule.comap_mkq.le_rel_embedding - def submodule.comap_mkq.lt_rel_embedding + def submodule.comap_mkq.order_embedding - def submodule.map_subtype.le_rel_embedding - def submodule.map_subtype.lt_rel_embedding + def submodule.map_subtype.order_embedding Modified src/order/basic.lean Modified src/order/galois_connection.lean + theorem order_iso.to_galois_connection - theorem rel_iso.to_galois_connection Modified src/order/ord_continuous.lean - theorem left_ord_continuous.coe_to_le_rel_embedding - theorem left_ord_continuous.coe_to_lt_rel_embedding + theorem left_ord_continuous.coe_to_order_embedding - def left_ord_continuous.to_le_rel_embedding - def left_ord_continuous.to_lt_rel_embedding + def left_ord_continuous.to_order_embedding - theorem right_ord_continuous.coe_to_le_rel_embedding - theorem right_ord_continuous.coe_to_lt_rel_embedding + theorem right_ord_continuous.coe_to_order_embedding - def right_ord_continuous.to_le_rel_embedding - def right_ord_continuous.to_lt_rel_embedding + def right_ord_continuous.to_order_embedding Modified src/order/rel_iso.lean +/- def fin.val.rel_embedding +/- def fin_fin.rel_embedding + def order_embedding.lt_embedding + theorem order_embedding.lt_embedding_apply + theorem order_embedding.map_le_iff + theorem order_embedding.map_lt_iff + def order_embedding.osymm + def order_embedding + theorem order_iso.map_bot + def order_iso.osymm + def order_iso - def rel_embedding.lt_embedding_of_le_embedding + def rel_embedding.order_embedding_of_lt_embedding - theorem rel_iso.map_bot Modified src/order/semiconj_Sup.lean Modified src/ring_theory/ideal/operations.lean - def ideal.le_rel_embedding_of_surjective - def ideal.lt_rel_embedding_of_surjective + def ideal.order_embedding_of_surjective +/- def ideal.rel_iso_of_bijective Modified src/ring_theory/localization.lean - def localization_map.le_rel_embedding + def localization_map.order_embedding Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal_ordinal.lean Modified src/set_theory/ordinal.lean + def cardinal.ord.order_embedding + theorem cardinal.ord.order_embedding_coe - def cardinal.ord.rel_embedding - theorem cardinal.ord.rel_embedding_coe 2020-08-21 13:01:05 e3409c6 feat(data/zmod/basic): morphisms to zmod are surjective (deps: #3888) (#3889) ... and determined by their kernel ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.ring_hom_eq_of_ker_eq + theorem zmod.ring_hom_surjective Modified src/group_theory/sylow.lean 2020-08-21 11:41:54 4921be9 feat(analysis/special_functions/arsinh): inverse hyperbolic sine function (#3801) Added the following lemmas and definitions: `cosh_def` `sinh_def` `cosh_pos` `sinh_strict_mono` `sinh_injective` `sinh_surjective` `sinh_bijective` `real.cosh_sq_sub_sinh_sq` `sqrt_one_add_sinh_sq` `sinh_arsinh` `arsinh_sin` This is from the list of UG not in lean. `cosh` coming soon. ESTIMATED CHANGES Added src/analysis/special_functions/arsinh.lean + def real.arsinh + theorem real.arsinh_sinh + theorem real.sinh_arsinh + theorem real.sinh_bijective + theorem real.sinh_injective + theorem real.sinh_surjective + theorem real.sqrt_one_add_sinh_sq Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/trigonometric.lean + theorem real.sinh_strict_mono Modified src/data/complex/exponential.lean + theorem real.cosh_eq + theorem real.cosh_pos + theorem real.cosh_sq_sub_sinh_sq + theorem real.sinh_eq 2020-08-21 10:07:49 7a48761 feat(logic/function): left/right inverse iff (#3897) From the sphere eversion project. ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.left_inverse_iff_comp + theorem function.right_inverse_iff_comp 2020-08-21 10:07:47 de20a39 feat(group_theory/subroup,ring_theory/ideal/operations): lift_of_surjective (#3888) Surjective homomorphisms behave like quotient maps ESTIMATED CHANGES Modified src/group_theory/abelianization.lean Modified src/group_theory/presented_group.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean + theorem monoid_hom.eq_lift_of_surjective + theorem monoid_hom.lift_of_surjective_comp + theorem monoid_hom.lift_of_surjective_comp_apply +/- theorem monoid_hom.mem_ker Modified src/ring_theory/ideal/operations.lean + theorem ring_hom.eq_lift_of_surjective + theorem ring_hom.lift_of_surjective_comp + theorem ring_hom.lift_of_surjective_comp_apply 2020-08-21 10:07:46 045b6c7 chore(topology/basic): use dot notation (#3861) ## API changes * add `set.range_sigma_mk`, `finset.sigma_preimage_mk`, `finset.sigma_preimage_mk_of_subset`, `finset.sigma_image_fst_preimage_mk`, `finset.prod_preimage'`; * rename `filter.monotone.tendsto_at_top_finset` to `filter.tendsto_at_top_finset_of_monotone`, add alias `monotone.tendsto_at_top_finset`; * add `filter.tendsto_finset_preimage_at_top_at_top`; * add `filter.tendsto.frequently`; * add `cluster_pt_principal_iff_frequently`, `mem_closure_iff_frequently`, `filter.frequently.mem_closure`, `filter.frequently.mem_of_closed`, `is_closed.mem_of_frequently_of_tendsto`; * rename `mem_of_closed_of_tendsto` to `is_closed.mem_of_tendsto`; * delete `mem_of_closed_of_tendsto'`; use new `is_closed.mem_of_frequently_of_tendsto` instead; ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_sigma_mk Modified src/data/set/finite.lean + theorem finset.prod_preimage' + theorem finset.sigma_image_fst_preimage_mk + theorem finset.sigma_preimage_mk + theorem finset.sigma_preimage_mk_of_subset Modified src/order/filter/at_top_bot.lean - theorem filter.monotone.tendsto_at_top_finset + theorem filter.tendsto_at_top_finset_of_monotone + theorem filter.tendsto_finset_preimage_at_top_at_top Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean + theorem cluster_pt_principal_iff_frequently + theorem filter.frequently.mem_of_closed + theorem is_closed.mem_of_frequently_of_tendsto + theorem is_closed.mem_of_tendsto + theorem mem_closure_iff_frequently - theorem mem_of_closed_of_tendsto' - theorem mem_of_closed_of_tendsto Modified src/topology/dense_embedding.lean Modified src/topology/extend_from_subset.lean Modified src/topology/metric_space/baire.lean 2020-08-21 10:07:44 d8cde2a feat(measure_theory/interval_integral): more versions of FTC-1 (#3709) Left/right derivative, strict derivative, differentiability in both endpoints. Other changes: * rename `filter.tendsto_le_left` and `filter.tendsto_le_right` to `filter.tendsto.mono_left` and `filter.tendsto.mono_right`, swap arguments; * rename `order_top.tendsto_at_top` to `order_top.tendsto_at_top_nhds`; * introduce `tendsto_Ixx_class` instead of `is_interval_generated`. ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/tangent_cone.lean + theorem unique_diff_on.unique_diff_within_at Modified src/analysis/specific_limits.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/interval_integral.lean + theorem filter.tendsto.eventually_interval_integrable + theorem filter.tendsto.eventually_interval_integrable_ae + theorem interval_integral.FTC_filter.finite_at_inner + theorem interval_integral.deriv_integral_left + theorem interval_integral.deriv_integral_of_tendsto_ae_left + theorem interval_integral.deriv_integral_of_tendsto_ae_right + theorem interval_integral.deriv_integral_right + theorem interval_integral.deriv_within_integral_left + theorem interval_integral.deriv_within_integral_of_tendsto_ae_left + theorem interval_integral.deriv_within_integral_of_tendsto_ae_right + theorem interval_integral.deriv_within_integral_right + theorem interval_integral.fderiv_integral + theorem interval_integral.fderiv_integral_of_tendsto_ae + theorem interval_integral.fderiv_within_integral_of_tendsto_ae + theorem interval_integral.integral_Iic_sub_Iic + theorem interval_integral.integral_const' + theorem interval_integral.integral_const + theorem interval_integral.integral_const_of_cdf + theorem interval_integral.integral_has_deriv_at_left - theorem interval_integral.integral_has_deriv_at_of_tendsto_ae + theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_left + theorem interval_integral.integral_has_deriv_at_of_tendsto_ae_right + theorem interval_integral.integral_has_deriv_at_right + theorem interval_integral.integral_has_deriv_within_at_left + theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_left + theorem interval_integral.integral_has_deriv_within_at_of_tendsto_ae_right + theorem interval_integral.integral_has_deriv_within_at_right + theorem interval_integral.integral_has_fderiv_at + theorem interval_integral.integral_has_fderiv_at_of_tendsto_ae + theorem interval_integral.integral_has_fderiv_within_at + theorem interval_integral.integral_has_fderiv_within_at_of_tendsto_ae + theorem interval_integral.integral_has_strict_deriv_at_left + theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_left + theorem interval_integral.integral_has_strict_deriv_at_of_tendsto_ae_right + theorem interval_integral.integral_has_strict_deriv_at_right + theorem interval_integral.integral_has_strict_fderiv_at + theorem interval_integral.integral_has_strict_fderiv_at_of_tendsto_ae + theorem interval_integral.integral_interval_add_interval_comm + theorem interval_integral.integral_interval_sub_interval_comm' + theorem interval_integral.integral_interval_sub_interval_comm + theorem interval_integral.integral_interval_sub_left - theorem interval_integral.integral_same_has_deriv_at_of_tendsto_ae + theorem interval_integral.integral_smul + theorem interval_integral.integral_sub + theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae_left + theorem interval_integral.integral_sub_integral_sub_linear_is_o_of_tendsto_ae_right +/- theorem interval_integral.integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae_left + theorem interval_integral.measure_integral_sub_integral_sub_linear_is_o_of_tendsto_ae_right + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae' + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_ge' + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_ge + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_le' + theorem interval_integral.measure_integral_sub_linear_is_o_of_tendsto_ae_of_le Modified src/measure_theory/l1_space.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.finite_at_bot + theorem measure_theory.measure_lt_top + theorem measure_theory.measure_ne_top Modified src/measure_theory/set_integral.lean Modified src/order/filter/basic.lean + theorem filter.tendsto.frequently + theorem filter.tendsto.mono_left + theorem filter.tendsto.mono_right +/- theorem filter.tendsto_infi' - theorem filter.tendsto_le_left - theorem filter.tendsto_le_right Modified src/order/filter/interval.lean - theorem filter.has_basis.is_interval_generated + theorem filter.has_basis.tendsto_Ixx_class - theorem filter.has_ord_connected_basis - theorem filter.is_interval_generated_principal_iff +/- theorem filter.tendsto.Icc +/- theorem filter.tendsto.Ico +/- theorem filter.tendsto.Ioc +/- theorem filter.tendsto.Ioo - theorem filter.tendsto.Ixx + theorem filter.tendsto_Ixx_class_inf + theorem filter.tendsto_Ixx_class_of_subset + theorem filter.tendsto_Ixx_class_principal - theorem filter.tendsto_Ixx_same_filter - theorem set.ord_connected.is_interval_generated_inf_principal Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean - theorem order_top.tendsto_at_top + theorem order_top.tendsto_at_top_nhds Modified src/topology/continuous_on.lean + theorem tendsto_const_nhds_within 2020-08-21 08:35:09 bc3e835 feat(tactic/rcases): clear pattern `-` in rcases (#3868) This allows you to write: ```lean example (h : ∃ x : ℕ, true) : true := begin rcases h with ⟨x, -⟩, -- x : ℕ |- true end ``` to clear unwanted hypotheses. Note that dependents are also cleared, meaning that you can get into trouble if you try to keep matching when a variable later in the pattern is deleted. The `_` pattern will match a hypothesis even if it has been deleted, so this is the recommended way to match on variables dependent on a deleted hypothesis. You can use `-` if you prefer, but watch out for unintended variables getting deleted if there are duplicate names! ESTIMATED CHANGES Modified src/tactic/rcases.lean Modified test/rcases.lean 2020-08-21 07:33:42 da6cd55 feat(determinant): towards multilinearity (#3887) From the sphere eversion project. In a PR coming soon, this will be used to prove that the determinant of a family of vectors in a given basis is multi-linear (see [here](https://github.com/leanprover-community/sphere-eversion/blob/2c776f6a92c0f9babb521a02ab0cc341a06d3f3c/src/vec_det.lean) for a preview if needed). ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean + theorem matrix.det_update_column_add + theorem matrix.det_update_column_smul + theorem matrix.det_update_row_add + theorem matrix.det_update_row_smul 2020-08-21 05:29:48 23749aa chore(measure_theory/*): use `_measure` instead of `_meas` (#3892) ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean - theorem measure_theory.integral_add_meas + theorem measure_theory.integral_add_measure - theorem measure_theory.integral_map_meas + theorem measure_theory.integral_map_measure - theorem measure_theory.integral_zero_meas + theorem measure_theory.integral_zero_measure - theorem measure_theory.simple_func.integral_add_meas + theorem measure_theory.simple_func.integral_add_measure Modified src/measure_theory/integration.lean - theorem measure_theory.lintegral_add_meas + theorem measure_theory.lintegral_add_measure - theorem measure_theory.lintegral_smul_meas + theorem measure_theory.lintegral_smul_measure - theorem measure_theory.lintegral_sum_meas + theorem measure_theory.lintegral_sum_measure - theorem measure_theory.lintegral_zero_meas + theorem measure_theory.lintegral_zero_measure Modified src/measure_theory/l1_space.lean - theorem measure_theory.integrable.add_meas + theorem measure_theory.integrable.add_measure - theorem measure_theory.integrable.left_of_add_meas + theorem measure_theory.integrable.left_of_add_measure - theorem measure_theory.integrable.mono_meas + theorem measure_theory.integrable.mono_measure - theorem measure_theory.integrable.right_of_add_meas + theorem measure_theory.integrable.right_of_add_measure - theorem measure_theory.integrable.smul_meas + theorem measure_theory.integrable.smul_measure - theorem measure_theory.integrable_add_meas + theorem measure_theory.integrable_add_measure - theorem measure_theory.integrable_map_meas + theorem measure_theory.integrable_map_measure - theorem measure_theory.integrable_zero_meas + theorem measure_theory.integrable_zero_measure Modified src/measure_theory/set_integral.lean - theorem measure_theory.integrable_on.add_meas + theorem measure_theory.integrable_on.add_measure - theorem measure_theory.integrable_on.mono_meas + theorem measure_theory.integrable_on.mono_measure - theorem measure_theory.integrable_on_add_meas + theorem measure_theory.integrable_on_add_measure +/- theorem measure_theory.integral_empty 2020-08-21 03:53:31 31cd6dd chore(order/bounded_lattice): use `⦃⦄` in `disjoint.symm` (#3893) ESTIMATED CHANGES Modified src/data/set/disjointed.lean Modified src/order/bounded_lattice.lean +/- theorem disjoint.symm 2020-08-21 02:24:33 1719035 feat(category_theory/monad/*): Add category of bundled (co)monads; prove equivalence of monads with monoid objects (#3762) This PR constructs bundled monads, and proves the "usual" equivalence between the category of monads and the category of monoid objects in the endomorphism category. It also includes a definition of morphisms of unbundled monads, and proves some necessary small lemmas in the following two files: 1. `category_theory.functor_category` 2. `category_theory.monoidal.internal` Given any isomorphism in `Cat`, we construct a corresponding equivalence of categories in `Cat.equiv_of_iso`. ESTIMATED CHANGES Modified src/category_theory/category/Cat.lean + def category_theory.Cat.equiv_of_iso Modified src/category_theory/functor_category.lean + theorem category_theory.nat_trans.hcomp_id_app + theorem category_theory.nat_trans.id_hcomp_app Modified src/category_theory/monad/basic.lean + theorem category_theory.comonad_hom.assoc + def category_theory.comonad_hom.comp + theorem category_theory.comonad_hom.comp_id + theorem category_theory.comonad_hom.ext + def category_theory.comonad_hom.id + theorem category_theory.comonad_hom.id_comp + structure category_theory.comonad_hom + theorem category_theory.monad_hom.assoc + def category_theory.monad_hom.comp + theorem category_theory.monad_hom.comp_id + theorem category_theory.monad_hom.ext + def category_theory.monad_hom.id + theorem category_theory.monad_hom.id_comp + structure category_theory.monad_hom Added src/category_theory/monad/bundled.lean + theorem category_theory.Comonad.coassoc_func_app + theorem category_theory.Comonad.comp_to_nat_trans + def category_theory.Comonad.forget + def category_theory.Comonad.hom + def category_theory.Comonad.terminal + structure category_theory.Comonad + theorem category_theory.Monad.assoc_func_app + theorem category_theory.Monad.comp_to_nat_trans + def category_theory.Monad.forget + def category_theory.Monad.hom + def category_theory.Monad.initial + structure category_theory.Monad Added src/category_theory/monad/equiv_mon.lean + def category_theory.Monad.Mon_to_Monad + def category_theory.Monad.Monad_Mon_equiv + def category_theory.Monad.Monad_to_Mon + def category_theory.Monad.of_Mon + def category_theory.Monad.of_to_mon_end_iso + def category_theory.Monad.to_Mon + def category_theory.Monad.to_of_mon_end_iso 2020-08-21 01:44:02 7271f74 chore(scripts): update nolints.txt (#3891) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-21 00:08:35 0a48f0a feat(system/random): a monad for (pseudo-)randomized computations (#3742) ESTIMATED CHANGES Modified src/control/monad/basic.lean + def reader_t.equiv + def state_t.equiv + def state_t.eval Modified src/control/monad/cont.lean + def cont_t.equiv Modified src/control/monad/writer.lean + def writer_t.equiv Added src/control/uliftable.lean + def cont_t.uliftable' + def reader_t.uliftable' + def state_t.uliftable' + def uliftable.adapt_down + def uliftable.adapt_up + def uliftable.down + def uliftable.down_map + theorem uliftable.down_up + def uliftable.up + theorem uliftable.up_down + def uliftable.up_map + def writer_t.uliftable' Added src/data/bitvec/basic.lean + theorem bitvec.add_lsb_div_two + theorem bitvec.add_lsb_eq_twice_add_one + def bitvec.of_fin + theorem bitvec.of_fin_le_of_fin_of_le + theorem bitvec.of_fin_to_fin + theorem bitvec.of_fin_val + theorem bitvec.of_nat_to_nat + theorem bitvec.to_bool_add_lsb_mod_two + def bitvec.to_fin + theorem bitvec.to_fin_le_to_fin_of_le + theorem bitvec.to_fin_of_fin + theorem bitvec.to_fin_val + theorem bitvec.to_nat_eq_foldr_reverse + theorem bitvec.to_nat_lt Modified src/data/bool.lean + def bool.of_nat + theorem bool.of_nat_le_of_nat + theorem bool.of_nat_to_nat + def bool.to_nat + theorem bool.to_nat_le_to_nat Modified src/data/fin.lean + theorem fact.bit0.pos + theorem fact.bit1.pos + theorem fact.pow.pos + theorem fact.succ.pos +/- theorem fin.add_nat_val + def fin.of_nat' + theorem fin.val_of_nat_eq_mod' + theorem fin.val_of_nat_eq_mod Modified src/data/nat/basic.lean + def nat.log + theorem nat.log_pow + theorem nat.pow_le_iff_le_log + theorem nat.pow_log_le_self + theorem nat.pow_succ_log_gt_self Modified src/data/stream/basic.lean + def stream.corec_state + theorem stream.length_take + def stream.take Modified src/set_theory/lists.lean Added src/system/random/basic.lean + def bitvec.random + def bitvec.random_r + theorem bool_of_nat_mem_Icc_of_mem_Icc_to_nat + def io.mk_generator + def io.random + def io.random_r + def io.random_series + def io.random_series_r + def io.run_rand + def rand.random + def rand.random_r + def rand.random_series + def rand.random_series_r + def rand.split + def rand + def rand_g.next + def rand_g + def random_fin_of_pos + def shift_31_left Added test/slim_check.lean + def find_prime + def find_prime_aux + def iterated_primality_test + def iterated_primality_test_aux + def primality_test 2020-08-20 23:05:44 36386fc feat(linear_algebra): some easy linear map/equiv lemmas (#3890) From the sphere eversion project. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_equiv.comp_coe + theorem linear_equiv.eq_of_linear_map_eq + theorem linear_equiv.refl_to_linear_map + theorem linear_equiv.symm_trans + theorem linear_equiv.trans_symm Modified src/linear_algebra/basis.lean + theorem equiv_of_is_basis_comp + theorem equiv_of_is_basis_refl + theorem equiv_of_is_basis_symm_trans + theorem equiv_of_is_basis_trans_symm 2020-08-20 21:33:51 c9704ff chore(data/matrix, linear_algebra): generalize universe parameters (#3879) @PatrickMassot was complaining that `matrix m n R` often doesn't work when the parameters are declared as `m n : Type*` because the universe parameters were equal. This PR makes the universe parameters of `m` and `n` distinct where possible, also generalizing some other linear algebra definitions. The types of `col` and `row` used to be `matrix n punit` but are now `matrix n unit`, otherwise the elaborator can't figure out the universe. This doesn't seem to break anything except for the cases where `punit.{n}` was explicitly written down. There were some breakages, but the total amount of changes is not too big. ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean +/- def lie_algebra.orthogonal.JB +/- def lie_algebra.orthogonal.PB Modified src/data/matrix/basic.lean +/- def matrix.col +/- theorem matrix.from_blocks_multiply +/- def matrix.row +/- def matrix Modified src/data/matrix/notation.lean +/- theorem matrix.empty_val' +/- theorem matrix.smul_mat_empty Modified src/data/matrix/pequiv.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dimension.lean +/- theorem dim_eq_of_injective +/- theorem dim_eq_of_surjective +/- theorem dim_le_of_injective +/- theorem dim_le_of_surjective +/- theorem dim_map_le +/- theorem dim_prod +/- theorem dim_range_add_dim_ker +/- theorem dim_range_le +/- theorem dim_range_of_surjective +/- theorem linear_equiv.dim_eq +/- def rank +/- theorem rank_add_le +/- theorem rank_comp_le1 +/- theorem rank_comp_le2 +/- theorem rank_finset_sum_le +/- theorem rank_le_domain +/- theorem rank_le_range +/- theorem rank_zero Modified src/linear_algebra/matrix.lean +/- theorem matrix.rank_vec_mul_vec 2020-08-20 21:33:49 901c5bc feat(ring_theory/separable): a separable polynomial splits into a product of unique `X - C a` (#3877) Bonus result: the degree of a separable polynomial is the number of roots in the field where it splits. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.bind_singleton_eq_self Modified src/data/multiset/nodup.lean + theorem multiset.nodup_iff_ne_cons_cons Modified src/data/polynomial/ring_division.lean + theorem polynomial.roots_prod + theorem polynomial.roots_prod_X_sub_C Modified src/field_theory/separable.lean + theorem polynomial.degree_separable_eq_card_roots + theorem polynomial.eq_prod_roots_of_separable + theorem polynomial.is_unit_of_self_mul_dvd_separable + theorem polynomial.nat_degree_separable_eq_card_roots + theorem polynomial.nodup_of_separable_prod + theorem polynomial.not_unit_X_sub_C + theorem polynomial.separable.of_dvd 2020-08-20 21:33:47 9f525c7 chore(category_theory/limits/types): cleanup (#3871) Backporting some cleaning up work from `prop_limits`, while it rumbles onwards. ESTIMATED CHANGES Modified src/algebra/category/Module/limits.lean Modified src/algebra/category/Mon/limits.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/preserves/basic.lean + def category_theory.limits.preserves_colimit_of_reflects_of_preserves + def category_theory.limits.preserves_limit_of_reflects_of_preserves Modified src/category_theory/limits/shapes/types.lean Modified src/category_theory/limits/types.lean - def category_theory.limits.types.colimit_ + def category_theory.limits.types.colimit_cocone + def category_theory.limits.types.colimit_cocone_is_colimit + def category_theory.limits.types.colimit_equiv_quot + theorem category_theory.limits.types.colimit_equiv_quot_symm_apply - def category_theory.limits.types.colimit_is_colimit_ + theorem category_theory.limits.types.lift_π_apply - def category_theory.limits.types.limit_ + def category_theory.limits.types.limit_cone + def category_theory.limits.types.limit_cone_is_limit + def category_theory.limits.types.limit_equiv_sections + theorem category_theory.limits.types.limit_equiv_sections_apply + theorem category_theory.limits.types.limit_equiv_sections_symm_apply + theorem category_theory.limits.types.limit_ext - def category_theory.limits.types.limit_is_limit_ + def category_theory.limits.types.quot - theorem category_theory.limits.types.types_colimit - theorem category_theory.limits.types.types_colimit_desc - theorem category_theory.limits.types.types_colimit_map - theorem category_theory.limits.types.types_colimit_pre - theorem category_theory.limits.types.types_colimit_ι - theorem category_theory.limits.types.types_limit - theorem category_theory.limits.types.types_limit_lift - theorem category_theory.limits.types.types_limit_map - theorem category_theory.limits.types.types_limit_pre - theorem category_theory.limits.types.types_limit_π 2020-08-20 16:50:10 7a93d87 doc(src/ring_theory/integral_domain.lean): add module docstring (#3881) ESTIMATED CHANGES Modified src/ring_theory/integral_domain.lean 2020-08-20 11:47:20 4631018 feat(data/polynomial): Add polynomial/eval lemmas (#3876) Add some lemmas about `polynomial`. In particular, add lemmas about `eval2` for the case that the ring `S` that we evaluate into is non-commutative. ESTIMATED CHANGES Modified src/data/polynomial/degree/basic.lean + theorem polynomial.leading_coeff_X_add_C Modified src/data/polynomial/eval.lean + theorem polynomial.eval₂_endomorphism_algebra_map + theorem polynomial.eval₂_list_prod_noncomm + theorem polynomial.eval₂_mul_noncomm + def polynomial.eval₂_ring_hom_noncomm Modified src/data/polynomial/ring_division.lean + theorem polynomial.units_coeff_zero_smul 2020-08-20 08:43:40 e174f42 feat(equiv/transfer_instances): other algebraic structures (#3870) Some updates to `data.equiv.transfer_instances`. 1. Use `@[to_additive]` 2. Add algebraic equivalences between the original and transferred instances. 3. Transfer modules and algebras. ESTIMATED CHANGES Modified src/data/equiv/transfer_instance.lean - theorem equiv.add_def + def equiv.alg_equiv + def equiv.linear_equiv + def equiv.mul_equiv + theorem equiv.mul_equiv_apply + theorem equiv.mul_equiv_symm_apply - theorem equiv.neg_def + def equiv.ring_equiv + theorem equiv.ring_equiv_apply + theorem equiv.ring_equiv_symm_apply + theorem equiv.smul_def - theorem equiv.zero_def 2020-08-20 08:43:38 d7621b9 feat(data/list/basic): lemmas about foldr/foldl (#3865) This PR prepares #3864. * Move lemmas about `foldr`/`foldl` into the appropriate section. * Add variants of the `foldl_map`/`foldr_map` lemmas. * Add lemmas stating that a fold over a list of injective functions is injective. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.foldl_map' + theorem list.foldr_map' + theorem list.injective_foldl_comp 2020-08-20 08:00:59 ba06edc chore(data/complex/module): move `linear_map.{re,im,of_real}` from `analysis` (#3874) I'm going to use these `def`s in `analysis/convex/basic`, and I don't want to `import analysis.normed_space.basic` there. ESTIMATED CHANGES Modified src/analysis/complex/basic.lean - def complex.linear_map.im - theorem complex.linear_map.im_apply - def complex.linear_map.of_real - theorem complex.linear_map.of_real_apply - def complex.linear_map.re - theorem complex.linear_map.re_apply Modified src/data/complex/module.lean + theorem complex.linear_map.coe_im + theorem complex.linear_map.coe_of_real + theorem complex.linear_map.coe_re + def complex.linear_map.im + def complex.linear_map.of_real + def complex.linear_map.re 2020-08-20 06:10:17 34db3c3 feat(order/category): various categories of ordered types (#3841) This is a first step towards the category of simplicial sets (which are presheaves on the category of nonempty finite linear orders). ESTIMATED CHANGES Added src/order/category/LinearOrder.lean + def LinearOrder.of + def LinearOrder Added src/order/category/NonemptyFinLinOrd.lean + def NonemptyFinLinOrd.of + def NonemptyFinLinOrd Added src/order/category/PartialOrder.lean + def PartialOrder.of + def PartialOrder Added src/order/category/Preorder.lean + def Preorder.of + def Preorder + theorem preorder_hom.coe_id + theorem preorder_hom.coe_inj + def preorder_hom.comp + theorem preorder_hom.comp_id + theorem preorder_hom.ext + def preorder_hom.id + theorem preorder_hom.id_comp + structure preorder_hom 2020-08-20 03:32:46 4364798 fix(data/fin): better defeqs in fin.has_le instance (#3869) This ensures that the instances from `fin.decidable_linear_order` match the direct instances. They were defeq before but not at instance reducibility. ESTIMATED CHANGES Modified src/data/fin.lean 2020-08-19 22:20:42 9a8e504 feat(linear_algebra/affine_space/basic): more direction lemmas (#3867) Add a few more lemmas about the directions of affine subspaces. ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean + theorem affine_subspace.direction_inf_of_mem + theorem affine_subspace.direction_inf_of_mem_inf + theorem affine_subspace.vadd_mem_iff_mem_direction 2020-08-19 21:38:08 7e6b8a9 feat(linear_algebra/affine_space/basic): more vector_span lemmas (#3866) Add more lemmas relating `vector_span` to the `submodule.span` of particular subtractions of points. The new lemmas fix one of the points in the subtraction and exclude that point, or its index in the case of an indexed family of points rather than a set, from being on the other side of the subtraction (whereas the previous lemmas don't exclude the trivial subtraction of a point from itself). ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean + theorem vector_span_eq_span_vsub_set_left_ne + theorem vector_span_eq_span_vsub_set_right_ne + theorem vector_span_image_eq_span_vsub_set_left_ne + theorem vector_span_image_eq_span_vsub_set_right_ne 2020-08-19 17:44:57 bd5552a feat(ring_theory/polynomial/basic): Isomorphism between polynomials over a quotient and quotient over polynomials (#3847) The main statement is `polynomial_quotient_equiv_quotient_polynomial`, which gives that If `I` is an ideal of `R`, then the ring polynomials over the quotient ring `I.quotient` is isomorphic to the quotient of `polynomial R` by the ideal `map C I`. Also, `mem_map_C_iff` shows that `map C I` contains exactly the polynomials whose coefficients all lie in `I` ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean + theorem ideal.eval₂_C_mk_eq_zero + theorem ideal.mem_map_C_iff + def ideal.polynomial_quotient_equiv_quotient_polynomial + theorem ideal.quotient_map_C_eq_zero 2020-08-19 13:32:50 15cacf0 feat(analysis/normed_space/real_inner_product): orthogonal subspace order (#3863) Define the Galois connection between `submodule ℝ α` and its `order_dual` given by `submodule.orthogonal`. Thus, deduce that the inf of orthogonal subspaces is the subspace orthogonal to the sup (for three different forms of inf), as well as replacing the proof of `submodule.le_orthogonal_orthogonal` by a use of `galois_connection.le_u_l`. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem submodule.Inf_orthogonal + theorem submodule.inf_orthogonal + theorem submodule.infi_orthogonal + theorem submodule.orthogonal_gc 2020-08-19 13:32:45 d963213 refactor(algebra/add_torsor,linear_algebra/affine_space/basic): vsub_set (#3858) The definition of `vsub_set` in `algebra/add_torsor` does something similar to `set.image2`, but expressed directly with `∃` inside `{...}`. Various lemmas in `linear_algebra/affine_space/basic` likewise express such sets of subtractions with a given point on one side directly rather than using `set.image`. These direct forms can be inconvenient to use with lemmas about `set.image2`, `set.image` and `set.range`; in particular, they have the equality inside the binders expressed the other way round, leading to constructs such as `conv_lhs { congr, congr, funext, conv { congr, funext, rw eq_comm } }` when it's necessary to convert one form to the other. The form of `vsub_set` was suggested in review of #2720, the original `add_torsor` addition, based on what was then used in `algebra/pointwise`. Since then, `image2` has been added to mathlib and `algebra/pointwise` now uses `image2`. Thus, convert these definitions to using `image2` or `''` as appropriate, so simplifying various proofs. This PR deliberately only addresses `vsub_set` and related definitions for such sets of subtractions; it does not attempt to change any other definitions in `linear_algebra/affine_space/basic` that might also be able to use `image2` or `''` but are not such sets of subtractions, and does not change the formulations of lemmas not involving such sets even if a rearrangement of equalities and existential quantifiers in some such lemmas might bring them closer to the formulations about images of sets. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean +/- def vsub_set Modified src/linear_algebra/affine_space/basic.lean 2020-08-19 11:58:06 1e677e6 chore(data/finset/basic): use `finset.map` in `sigma_eq_bind` (#3857) ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean Modified src/data/finset/basic.lean +/- theorem finset.sigma_eq_bind Modified src/logic/embedding.lean + theorem function.embedding.coe_sigma_mk + def function.embedding.sigma_mk 2020-08-19 11:22:59 a100396 doc(linear_algebra/sesquilinear_form): add missing backtick (#3862) ESTIMATED CHANGES Modified src/linear_algebra/sesquilinear_form.lean 2020-08-19 03:25:09 8579a5f fix(test/norm_cast): fix(?) test (#3859) ESTIMATED CHANGES Modified test/norm_cast.lean 2020-08-18 21:50:05 425aee9 feat(analysis/calculus) : L'Hôpital's rule, 0/0 case (#3740) This proves several forms of L'Hôpital's rule for computing 0/0 indeterminate forms, based on the proof given here : [Wikibooks](https://en.wikibooks.org/wiki/Calculus/L%27H%C3%B4pital%27s_Rule). See module docstring for more details. ESTIMATED CHANGES Added src/analysis/calculus/lhopital.lean + theorem deriv.lhopital_zero_at_bot + theorem deriv.lhopital_zero_at_bot_on_Iio + theorem deriv.lhopital_zero_at_top + theorem deriv.lhopital_zero_at_top_on_Ioi + theorem deriv.lhopital_zero_left_on_Ioo + theorem deriv.lhopital_zero_nhds' + theorem deriv.lhopital_zero_nhds + theorem deriv.lhopital_zero_nhds_left + theorem deriv.lhopital_zero_nhds_right + theorem deriv.lhopital_zero_right_on_Ico + theorem deriv.lhopital_zero_right_on_Ioo + theorem has_deriv_at.lhopital_zero_at_bot + theorem has_deriv_at.lhopital_zero_at_bot_on_Iio + theorem has_deriv_at.lhopital_zero_at_top + theorem has_deriv_at.lhopital_zero_at_top_on_Ioi + theorem has_deriv_at.lhopital_zero_left_on_Ioc + theorem has_deriv_at.lhopital_zero_left_on_Ioo + theorem has_deriv_at.lhopital_zero_nhds' + theorem has_deriv_at.lhopital_zero_nhds + theorem has_deriv_at.lhopital_zero_nhds_left + theorem has_deriv_at.lhopital_zero_nhds_right + theorem has_deriv_at.lhopital_zero_right_on_Ico + theorem has_deriv_at.lhopital_zero_right_on_Ioo Modified src/topology/continuous_on.lean + theorem eventually_nhds_within_of_eventually_nhds 2020-08-18 20:22:26 5d2256d feat(miu_language): a formalisation of the MIU language described by D. Hofstadter in "Gödel, Escher, Bach". (#3739) We define an inductive type `derivable` so that `derivable x` represents the notion that the MIU string `x` is derivable in the MIU language. We show `derivable x` is equivalent to `decstr x`, viz. the condition that `x` begins with an `M`, has no `M` in its tail, and for which `count I` is congruent to 1 or 2 modulo 3. By showing `decidable_pred decstr`, we deduce that `derivable` is decidable. ESTIMATED CHANGES Added archive/miu_language/basic.lean + inductive miu.derivable + def miu.lchar_to_miustr + def miu.miu_atom.repr + inductive miu.miu_atom + def miu.miustr.mrepr + def miu.miustr Added archive/miu_language/decision_nec.lean + theorem miu.count_equiv_one_or_two_mod3_of_derivable + def miu.count_equiv_or_equiv_two_mul_mod3 + def miu.decstr + theorem miu.decstr_of_der + def miu.goodm + theorem miu.goodm_of_derivable + theorem miu.goodm_of_rule1 + theorem miu.goodm_of_rule2 + theorem miu.goodm_of_rule3 + theorem miu.goodm_of_rule4 + theorem miu.goodmi + theorem miu.mod3_eq_1_or_mod3_eq_2 + theorem miu.not_derivable_mu Added archive/miu_language/decision_suf.lean + theorem miu.add_mod2 + theorem miu.base_case_suf + theorem miu.count_I_eq_length_of_count_U_zero_and_neg_mem + theorem miu.der_cons_repeat_I_repeat_U_append_of_der_cons_repeat_I_append + theorem miu.der_of_decstr + theorem miu.der_of_der_append_repeat_U_even + theorem miu.der_repeat_I_of_mod3 + theorem miu.eq_append_cons_U_of_count_U_pos + theorem miu.ind_hyp_suf + theorem miu.le_pow2_and_pow2_eq_mod3 + theorem miu.mem_of_count_U_eq_succ + theorem miu.repeat_pow_minus_append Modified docs/references.bib Modified src/data/list/basic.lean + theorem list.exists_cons_of_ne_nil + theorem list.repeat_count_eq_of_count_eq_length + theorem list.tail_append_singleton_of_ne_nil 2020-08-18 17:14:51 0854e83 chore(algebra/euclidean_domain): docstrings (#3816) ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean +/- theorem euclidean_domain.div_add_mod +/- theorem euclidean_domain.div_self +/- theorem euclidean_domain.div_zero +/- theorem euclidean_domain.dvd_gcd +/- theorem euclidean_domain.dvd_lcm_left +/- theorem euclidean_domain.dvd_lcm_right +/- theorem euclidean_domain.dvd_mod_iff +/- theorem euclidean_domain.eq_div_of_mul_eq_left +/- theorem euclidean_domain.eq_div_of_mul_eq_right +/- theorem euclidean_domain.gcd.induction +/- def euclidean_domain.gcd +/- def euclidean_domain.gcd_a +/- def euclidean_domain.gcd_b +/- theorem euclidean_domain.gcd_dvd +/- theorem euclidean_domain.gcd_dvd_left +/- theorem euclidean_domain.gcd_dvd_right +/- theorem euclidean_domain.gcd_eq_gcd_ab +/- theorem euclidean_domain.gcd_eq_left +/- theorem euclidean_domain.gcd_mul_lcm +/- theorem euclidean_domain.gcd_one_left +/- theorem euclidean_domain.gcd_self +/- theorem euclidean_domain.gcd_val +/- theorem euclidean_domain.gcd_zero_left +/- theorem euclidean_domain.gcd_zero_right +/- def euclidean_domain.lcm +/- theorem euclidean_domain.lcm_dvd +/- theorem euclidean_domain.lcm_dvd_iff +/- theorem euclidean_domain.lcm_eq_zero_iff +/- theorem euclidean_domain.lcm_zero_left +/- theorem euclidean_domain.lcm_zero_right +/- theorem euclidean_domain.lt_one +/- theorem euclidean_domain.mod_eq_sub_mul_div +/- theorem euclidean_domain.mod_eq_zero +/- theorem euclidean_domain.mod_lt +/- theorem euclidean_domain.mod_one +/- theorem euclidean_domain.mod_self +/- theorem euclidean_domain.mod_zero +/- theorem euclidean_domain.mul_div_assoc +/- theorem euclidean_domain.mul_div_cancel +/- theorem euclidean_domain.mul_div_cancel_left +/- theorem euclidean_domain.mul_right_not_lt +/- theorem euclidean_domain.val_dvd_le +/- def euclidean_domain.xgcd +/- def euclidean_domain.xgcd_aux +/- theorem euclidean_domain.xgcd_aux_P +/- theorem euclidean_domain.xgcd_aux_fst +/- theorem euclidean_domain.xgcd_aux_rec +/- theorem euclidean_domain.xgcd_aux_val +/- theorem euclidean_domain.xgcd_val +/- theorem euclidean_domain.xgcd_zero_left +/- theorem euclidean_domain.zero_div +/- theorem euclidean_domain.zero_mod 2020-08-18 15:37:53 7877033 chore(logic/basic): `and_iff_left/right_iff_imp`, `or.right_comm` (#3854) Also add `@[simp]` to `forall_bool` and `exists_bool` ESTIMATED CHANGES Modified src/data/bool.lean +/- theorem bool.exists_bool +/- theorem bool.forall_bool Modified src/data/finmap.lean Modified src/data/set/disjointed.lean Modified src/logic/basic.lean + theorem and_iff_left_iff_imp + theorem and_iff_right_iff_imp + theorem or.right_comm Modified src/set_theory/zfc.lean Modified test/qpf.lean 2020-08-18 15:37:47 cb4a5a2 doc(field_theory/tower): correct docstring (#3853) ESTIMATED CHANGES Modified src/field_theory/tower.lean +/- theorem dim_mul_dim 2020-08-18 14:01:34 9a70533 feat(data/option/basic): add ne_none_iff_exists (#3856) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.ne_none_iff_exists' + theorem option.ne_none_iff_exists 2020-08-18 10:28:42 67549d9 feat(order/filter/at_top_bot): add `at_bot` versions for (almost) all `at_top` lemmas (#3845) There are a few lemmas I ignored, either because I thought a `at_bot` version wouldn't be useful (e.g subsequence lemmas), because there is no "order inversing" equivalent of `monotone` (I think ?), or because I just didn't understand the statement so I was unable to tell if it was useful or not. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.at_bot_basis' + theorem filter.at_bot_basis + theorem filter.at_bot_countable_basis + theorem filter.at_bot_ne_bot + theorem filter.eventually.exists_forall_of_at_bot + theorem filter.eventually_at_bot + theorem filter.eventually_le_at_bot + theorem filter.exists_le_of_tendsto_at_bot + theorem filter.exists_lt_of_tendsto_at_bot + theorem filter.frequently.forall_exists_of_at_bot + theorem filter.frequently_at_bot' + theorem filter.frequently_at_bot + theorem filter.frequently_low_scores + theorem filter.inf_map_at_bot_ne_bot_iff + theorem filter.is_countably_generated_at_bot + theorem filter.low_scores + theorem filter.map_at_bot_eq + theorem filter.map_at_bot_eq_of_gc + theorem filter.mem_at_bot_sets + theorem filter.order_bot.at_bot_eq + theorem filter.prod_at_bot_at_bot_eq + theorem filter.prod_map_at_bot_eq + theorem filter.tendsto_at_bot_add_const_left + theorem filter.tendsto_at_bot_add_const_right + theorem filter.tendsto_at_bot_add_left_of_ge' + theorem filter.tendsto_at_bot_add_left_of_ge + theorem filter.tendsto_at_bot_add_nonpos_left' + theorem filter.tendsto_at_bot_add_nonpos_left + theorem filter.tendsto_at_bot_add_nonpos_right' + theorem filter.tendsto_at_bot_add_nonpos_right + theorem filter.tendsto_at_bot_add_right_of_ge' + theorem filter.tendsto_at_bot_add_right_of_ge + theorem filter.tendsto_at_bot_at_bot_iff_of_monotone + theorem filter.tendsto_at_bot_at_bot_of_monotone' + theorem filter.tendsto_at_bot_at_bot_of_monotone + theorem filter.tendsto_at_bot_embedding + theorem filter.tendsto_at_bot_mono' + theorem filter.tendsto_at_bot_mono + theorem filter.tendsto_at_bot_of_add_bdd_below_left' + theorem filter.tendsto_at_bot_of_add_bdd_below_left + theorem filter.tendsto_at_bot_of_add_bdd_below_right' + theorem filter.tendsto_at_bot_of_add_bdd_below_right + theorem filter.tendsto_at_bot_of_add_const_left + theorem filter.tendsto_at_bot_of_add_const_right + theorem filter.tendsto_at_bot_of_monotone_of_filter + theorem filter.tendsto_at_bot_of_monotone_of_subseq + theorem filter.tendsto_at_bot_principal + theorem filter.tendsto_at_bot_pure + theorem filter.unbounded_of_tendsto_at_bot' + theorem filter.unbounded_of_tendsto_at_bot + theorem filter.unbounded_of_tendsto_at_top' 2020-08-18 08:45:02 67e0019 refactor(topology/metric_space/baire): use choose! in Baire theorem (#3852) Use `choose!` in the proof of Baire theorem. ESTIMATED CHANGES Modified src/tactic/choose.lean Modified src/topology/metric_space/baire.lean 2020-08-18 08:45:00 6538274 chore(data/set/finite): explicit `f` in `finset.preimage s f hf` (#3851) Otherwise pretty printer shows just `finset.preimage s _`. ESTIMATED CHANGES Modified src/data/finsupp/basic.lean Modified src/data/set/finite.lean + theorem finset.monotone_preimage Modified src/field_theory/separable.lean Modified src/linear_algebra/finsupp.lean Modified src/order/filter/at_top_bot.lean 2020-08-18 08:44:58 c356148 feat(category_theory/abelian): pseudoelements and a four lemma (#3803) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean + theorem category_theory.abelian.image_ι_eq_image_ι + theorem category_theory.abelian.kernel_cokernel_eq_image_ι Added src/category_theory/abelian/diagram_lemmas/four.lean + theorem category_theory.abelian.mono_of_epi_of_mono_of_mono Modified src/category_theory/abelian/exact.lean + def category_theory.abelian.is_limit_image Added src/category_theory/abelian/pseudoelements.lean + def category_theory.abelian.app + theorem category_theory.abelian.app_hom + def category_theory.abelian.pseudo_equal + theorem category_theory.abelian.pseudo_equal_refl + theorem category_theory.abelian.pseudo_equal_symm + theorem category_theory.abelian.pseudo_equal_trans + theorem category_theory.abelian.pseudoelement.apply_eq_zero_of_comp_eq_zero + theorem category_theory.abelian.pseudoelement.apply_zero + theorem category_theory.abelian.pseudoelement.comp_apply + theorem category_theory.abelian.pseudoelement.comp_comp + theorem category_theory.abelian.pseudoelement.epi_of_pseudo_surjective + theorem category_theory.abelian.pseudoelement.eq_zero_iff + theorem category_theory.abelian.pseudoelement.exact_of_pseudo_exact + def category_theory.abelian.pseudoelement.hom_to_fun + theorem category_theory.abelian.pseudoelement.mono_of_zero_of_map_zero + def category_theory.abelian.pseudoelement.object_to_sort + theorem category_theory.abelian.pseudoelement.over_coe_def + def category_theory.abelian.pseudoelement.over_to_sort + def category_theory.abelian.pseudoelement.pseudo_apply + theorem category_theory.abelian.pseudoelement.pseudo_apply_aux + theorem category_theory.abelian.pseudoelement.pseudo_apply_mk + theorem category_theory.abelian.pseudoelement.pseudo_exact_of_exact + theorem category_theory.abelian.pseudoelement.pseudo_injective_of_mono + theorem category_theory.abelian.pseudoelement.pseudo_pullback + theorem category_theory.abelian.pseudoelement.pseudo_surjective_of_epi + def category_theory.abelian.pseudoelement.pseudo_zero + theorem category_theory.abelian.pseudoelement.pseudo_zero_aux + theorem category_theory.abelian.pseudoelement.pseudo_zero_def + theorem category_theory.abelian.pseudoelement.pseudo_zero_iff + def category_theory.abelian.pseudoelement.setoid + theorem category_theory.abelian.pseudoelement.sub_of_eq_image + theorem category_theory.abelian.pseudoelement.zero_apply + theorem category_theory.abelian.pseudoelement.zero_eq_zero' + theorem category_theory.abelian.pseudoelement.zero_eq_zero + theorem category_theory.abelian.pseudoelement.zero_morphism_ext' + theorem category_theory.abelian.pseudoelement.zero_morphism_ext + theorem category_theory.abelian.pseudoelement.zero_of_map_zero + def category_theory.abelian.pseudoelement Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.image_ι_comp_eq_zero Modified src/category_theory/over.lean + def category_theory.over.coe_from_hom + theorem category_theory.over.coe_hom 2020-08-18 07:06:45 0494807 feat(algebra/ordered_*): cleanup and projection notation (#3850) Also add a few new projection notations. ESTIMATED CHANGES Modified src/algebra/order.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean +/- theorem mul_le_mul_three +/- theorem with_top.zero_lt_coe Modified src/algebra/ordered_ring.lean +/- theorem canonically_ordered_semiring.mul_le_mul +/- theorem canonically_ordered_semiring.zero_lt_one +/- theorem mul_lt_mul +/- theorem one_le_two - theorem ordered_semiring.mul_le_mul_of_nonneg_left - theorem ordered_semiring.mul_le_mul_of_nonneg_right 2020-08-18 00:46:41 cd7c228 chore(scripts): update nolints.txt (#3848) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-17 21:27:17 b68702e chore(field_theory/tower): generalize tower law to modules (#3844) ESTIMATED CHANGES Modified src/field_theory/tower.lean Modified src/ring_theory/algebra_tower.lean 2020-08-17 21:27:15 3ea8e28 feat(tactic/choose): derive local nonempty instances (#3842) This allows `choose!` to work even in cases like `{A : Type} (p : A -> Prop) (h : ∀ x : A, p x → ∃ y : A, p y)`, where we don't know that `A` is nonempty because it is generic, but it can be derived from the inhabitance of other variables in the context of the `∃ y : A` statement. As requested on zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/non.20dependent.20chooser/near/207126587 ESTIMATED CHANGES Modified src/tactic/choose.lean Modified src/tactic/core.lean Modified test/choose.lean 2020-08-17 21:27:14 f77530e feat(ring_theory/localization): Generalize theorems about localization over an integral domain (#3780) A number of theorems about the `fraction_map` from an integral domain to its field of fractions can be generalized to apply to any `localization_map` that were the localization set doesn't contain any zero divisors. The main use for this is to show that localizing an integral domain at any set of non-zero elements is an integral domain, were previously this was only proven for the field of fractions. I made `le_non_zero_divisors` a class so that the integral domain instance can be synthesized automatically once you show that zero isn't in the localization set, but it could be left as just a proposition instead if that seems unnecessary. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean +/- theorem fraction_map.is_unit_map_of_injective + theorem le_non_zero_divisors_of_domain + theorem localization_map.injective + def localization_map.integral_domain_localization + def localization_map.integral_domain_of_le_non_zero_divisors + theorem localization_map.to_map_eq_zero_iff 2020-08-17 20:43:24 f818acb feat(analysis/normed_space): generalize corollaries of Hahn-Banach (#3658) ESTIMATED CHANGES Modified src/analysis/normed_space/dual.lean +/- theorem normed_space.inclusion_in_double_dual_isometry +/- theorem normed_space.norm_le_dual_bound Modified src/analysis/normed_space/hahn_banach.lean +/- theorem coord_norm' - theorem coord_self' +/- theorem exists_dual_vector' +/- theorem exists_dual_vector + theorem norm'_def + theorem norm_norm' Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_equiv.coord_self 2020-08-17 17:33:37 f8bf001 fix(ring_theory/localization): remove coe_submodule instance (#3832) This coe can loop. See zulip discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Unknown.20error.20while.20type-checking.20with.20.60use.60/near/207089095 ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean +/- theorem ring.fractional_ideal.coe_coe_ideal +/- theorem ring.fractional_ideal.coe_one +/- theorem ring.fractional_ideal.mem_coe +/- theorem ring.fractional_ideal.mem_zero_iff Modified src/ring_theory/localization.lean + def localization_map.coe_submodule - theorem localization_map.mem_coe + theorem localization_map.mem_coe_submodule 2020-08-17 16:59:15 472251b feat(algebra): define linear recurrences and prove basic lemmas about them (#3829) We define "linear recurrences", i.e assertions of the form `∀ n : ℕ, u (n + d) = a 0 * u n + a 1 * u (n+1) + ... + a (d-1) * u (n+d-1)`, and we introduce basic related lemmas and definitions (solution space, auxiliary polynomial). Currently, the most advanced theorem is : `q ^ n` is a solution iff `q` is a root of the auxiliary polynomial. ESTIMATED CHANGES Added src/algebra/linear_recurrence.lean + def linear_recurrence.char_poly + theorem linear_recurrence.eq_mk_of_is_sol_of_eq_init' + theorem linear_recurrence.eq_mk_of_is_sol_of_eq_init + theorem linear_recurrence.geom_sol_iff_root_char_poly + theorem linear_recurrence.is_sol_iff_mem_sol_space + theorem linear_recurrence.is_sol_mk_sol + def linear_recurrence.is_solution + def linear_recurrence.mk_sol + theorem linear_recurrence.mk_sol_eq_init + theorem linear_recurrence.sol_eq_of_eq_init + def linear_recurrence.sol_space + theorem linear_recurrence.sol_space_dim + def linear_recurrence.to_init + def linear_recurrence.tuple_succ + structure linear_recurrence 2020-08-17 15:28:54 3edf2b2 feat(ring_theory/DVR,padics/padic_integers): characterize ideals of DVRs, apply to `Z_p` (#3827) Also introduce the p-adic valuation on `Z_p`, stolen from the perfectoid project. Coauthored by: Johan Commelin ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem dvd_pow Modified src/data/padics/padic_integers.lean + theorem padic_int.ideal_eq_span_pow_p + theorem padic_int.irreducible_p + theorem padic_int.maximal_ideal_eq_span_p + def padic_int.mk_units + theorem padic_int.mk_units_eq + theorem padic_int.norm_eq_pow_val + theorem padic_int.norm_units + theorem padic_int.p_dvd_of_norm_lt_one + theorem padic_int.p_nonnunit + theorem padic_int.prime_p + def padic_int.unit_coeff + theorem padic_int.unit_coeff_coe + theorem padic_int.unit_coeff_spec + def padic_int.valuation + theorem padic_int.valuation_nonneg + theorem padic_int.valuation_one + theorem padic_int.valuation_p + theorem padic_int.valuation_zero + theorem padic_norm_z.norm_p + theorem padic_norm_z.norm_p_pow Modified src/ring_theory/discrete_valuation_ring.lean + theorem discrete_valuation_ring.associated_pow_irreducible + theorem discrete_valuation_ring.aux_pid_of_ufd_of_unique_irreducible + theorem discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization.of_ufd_of_unique_irreducible + theorem discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization.unique_irreducible + def discrete_valuation_ring.has_unit_mul_pow_irreducible_factorization + theorem discrete_valuation_ring.ideal_eq_span_pow_irreducible - theorem discrete_valuation_ring.iff_PID_with_one_nonzero_prime + theorem discrete_valuation_ring.iff_pid_with_one_nonzero_prime - theorem discrete_valuation_ring.irreducible_iff_uniformiser + theorem discrete_valuation_ring.irreducible_iff_uniformizer + theorem discrete_valuation_ring.of_has_unit_mul_pow_irreducible_factorization + theorem discrete_valuation_ring.of_ufd_of_unique_irreducible 2020-08-17 15:28:52 d4cb237 feat(algebra/module): define ordered semimodules and generalize convexity of functions (#3728) ESTIMATED CHANGES Added src/algebra/module/ordered.lean + theorem smul_le_smul_of_nonneg + theorem smul_lt_smul_of_pos Modified src/analysis/convex/basic.lean +/- theorem convex_on.add +/- theorem convex_on.comp_affine_map +/- theorem convex_on.comp_linear_map +/- theorem convex_on.convex_epigraph +/- theorem convex_on.convex_le +/- theorem convex_on.convex_lt +/- theorem convex_on.le_on_segment' +/- theorem convex_on.le_on_segment +/- theorem convex_on.smul +/- theorem convex_on.subset +/- theorem convex_on.translate_left +/- theorem convex_on.translate_right +/- def convex_on +/- theorem convex_on_const +/- theorem convex_on_iff_convex_epigraph - theorem convex_on_iff_div: + theorem convex_on_iff_div +/- theorem linear_order.convex_on_of_lt Modified src/analysis/convex/specific_functions.lean +/- theorem convex_on_fpow +/- theorem convex_on_pow +/- theorem convex_on_pow_of_even +/- theorem convex_on_rpow 2020-08-17 13:59:04 bc72d90 refactor(logic/basic): classical -> root, root -> decidable (#3812) This moves all logic lemmas with `decidable` instances into the `decidable` namespace, and moves or adds classical versions of these to the root namespace. This change hits a lot of files, mostly to remove the `classical.` prefix on explicit references to classical lemmas. ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/algebra/module/basic.lean Modified src/algebra/order.lean Modified src/algebraic_geometry/prime_spectrum.lean Modified src/category_theory/preadditive/biproducts.lean Modified src/combinatorics/composition.lean Modified src/data/complex/exponential.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/basic.lean Modified src/data/finset/basic.lean Modified src/data/finsupp/basic.lean Modified src/data/fintype/basic.lean +/- theorem mem_perms_of_list_of_mem Modified src/data/matrix/pequiv.lean Modified src/data/nat/prime.lean Modified src/data/pequiv.lean Modified src/data/polynomial/degree/basic.lean Modified src/data/set/basic.lean Modified src/data/set/lattice.lean Modified src/data/support.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/dynamics/periodic_pts.lean Modified src/field_theory/chevalley_warning.lean Modified src/field_theory/separable.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/order_of_element.lean Modified src/linear_algebra/basis.lean Modified src/logic/basic.lean +/- theorem and_iff_not_or_not + theorem by_contra +/- theorem by_contradiction - theorem classical.iff_iff_not_or_and_or_not - theorem classical.or_not + theorem decidable.iff_iff_not_or_and_or_not + theorem em +/- theorem forall_or_distrib_left +/- theorem forall_or_distrib_right +/- theorem iff_iff_and_or_not_and_not + theorem iff_iff_not_or_and_or_not +/- theorem iff_not_comm +/- theorem imp_iff_not_or +/- theorem imp_imp_imp +/- theorem imp_or_distrib' +/- theorem imp_or_distrib + theorem not.decidable_imp_symm +/- theorem not.imp_symm - theorem not_and_distrib' +/- theorem not_and_distrib +/- theorem not_and_not_right +/- theorem not_ball +/- theorem not_exists_not +/- theorem not_forall +/- theorem not_forall_not +/- theorem not_iff +/- theorem not_iff_comm +/- theorem not_iff_not +/- theorem not_imp +/- theorem not_imp_comm +/- theorem not_imp_not +/- theorem not_not +/- theorem not_or_of_imp +/- theorem of_not_imp +/- theorem of_not_not +/- theorem or_iff_not_and_not +/- theorem or_iff_not_imp_left +/- theorem or_iff_not_imp_right + theorem or_not +/- theorem peirce Modified src/order/basic.lean Modified src/order/bounded_lattice.lean Modified src/order/filter/ultrafilter.lean Modified src/order/lattice.lean Modified src/order/pilex.lean Modified src/order/rel_classes.lean Modified src/order/zorn.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/ideal/operations.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/power_series.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/tauto.lean Modified src/topology/continuous_on.lean Modified src/topology/instances/ennreal.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/separation.lean Modified test/qpf.lean 2020-08-17 12:15:00 1a8f6bf feat(lint): improved ge_or_gt linter (#3810) The linter will now correctly accepts occurrences of `f (≥)` and `∃ x ≥ t, b` The linter will still raise a false positive on `∃ x y ≥ t, b` (with 2+ bound variables in a single binder that involves `>/≥`) In contrast to the previous version of the linter, this one *does* check hypotheses. This should reduce the `@[nolint ge_or_gt]` attributes from ~160 to ~10. ESTIMATED CHANGES Modified src/algebra/order.lean Modified src/algebra/ordered_group.lean Modified src/analysis/convex/cone.lean Modified src/analysis/hofer.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/data/complex/exponential.lean Modified src/data/list/basic.lean +/- theorem list.insert_nth_remove_nth_of_ge Modified src/data/real/cau_seq.lean Modified src/dynamics/periodic_pts.lean Modified src/group_theory/order_of_element.lean Modified src/order/basic.lean Modified src/order/complete_lattice.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/liminf_limsup.lean Modified src/order/rel_classes.lean Modified src/ring_theory/noetherian.lean Modified src/tactic/lint/misc.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.Icc_mem_nhds Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/sequences.lean Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/cauchy.lean 2020-08-17 10:46:14 2a8d7f3 chore(analysis/normed_space/banach): correct typo (#3840) Correct a typo from an old global replace. ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean 2020-08-17 09:54:31 41cbfdc chore(analysis/hofer): use the new choose! (#3839) ESTIMATED CHANGES Modified src/analysis/hofer.lean 2020-08-17 09:11:02 626de47 feat(linear_algebra/affine_space/combination): centroid (#3825) Define the centroid of points in an affine space (given by an indexed family with a `finset` of the index type), when the underlying ring `k` is a division ring, and prove a few lemmas about cases where this does not involve division by zero. For example, the centroid of a triangle or simplex, although none of the definitions and lemmas here require affine independence so they are all stated more generally. (The sort of things that would be appropriate to state specifically for the case of a simplex would be e.g. defining medians and showing that the centroid is the intersection of any two medians.) ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean Modified src/linear_algebra/affine_space/combination.lean + theorem centroid_mem_affine_span_of_card_eq_add_one + theorem centroid_mem_affine_span_of_card_ne_zero + theorem centroid_mem_affine_span_of_cast_card_ne_zero + theorem centroid_mem_affine_span_of_nonempty + def finset.centroid + theorem finset.centroid_def + theorem finset.centroid_singleton + def finset.centroid_weights + theorem finset.centroid_weights_apply + theorem finset.centroid_weights_eq_const + theorem finset.sum_centroid_weights_eq_one_of_card_eq_add_one + theorem finset.sum_centroid_weights_eq_one_of_card_ne_zero + theorem finset.sum_centroid_weights_eq_one_of_cast_card_ne_zero + theorem finset.sum_centroid_weights_eq_one_of_nonempty 2020-08-17 04:44:59 6773f52 feat(category_theory): limits in the category of indexed families (#3737) A continuation of #3735, hopefully useful in #3638. ESTIMATED CHANGES Added src/category_theory/limits/pi.lean + def category_theory.pi.cone_comp_eval + def category_theory.pi.cone_of_cone_comp_eval + def category_theory.pi.cone_of_cone_eval_is_limit + def category_theory.pi.has_limit_of_has_limit_comp_eval Modified src/category_theory/pi/basic.lean + def category_theory.pi' 2020-08-17 04:10:13 b0b5cd4 feat(geometry/euclidean): circumradius simp lemmas (#3834) Mark `dist_circumcenter_eq_circumradius` as a `simp` lemma. Also add a variant of that lemma where the distance is the other way round so `simp` can work with both forms. ESTIMATED CHANGES Modified src/geometry/euclidean.lean + theorem affine.simplex.dist_circumcenter_eq_circumradius' +/- theorem affine.simplex.dist_circumcenter_eq_circumradius 2020-08-17 03:03:18 43337f7 chore(data/nat/digits): refactor proof of `last_digit_ne_zero` (#3836) I thoroughly misunderstood why my prior attempts for #3544 weren't working. I've refactored the proof so the `private` lemma is no longer necessary. ESTIMATED CHANGES Modified src/data/nat/digits.lean 2020-08-17 01:29:28 c1fece3 fix(tactic/refine_struct): accept synonyms for `structure` types (#3828) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified test/refine_struct.lean + def my_semigroup 2020-08-17 00:44:50 56ed455 chore(scripts): update nolints.txt (#3835) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-16 20:46:14 40214fc feat(ring_theory/derivations): stab on derivations (#3688) ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean Modified src/algebra/group/basic.lean + theorem eq_one_of_left_cancel_mul_self + theorem eq_one_of_mul_self_left_cancel + theorem eq_one_of_mul_self_right_cancel + theorem eq_one_of_right_cancel_mul_self Modified src/algebra/group/defs.lean Modified src/algebra/lie_algebra.lean - def lie_algebra.of_associative_algebra - def lie_ring.of_associative_ring - def matrix.lie_algebra - def matrix.lie_ring - theorem ring_commutator.add_left - theorem ring_commutator.add_right - theorem ring_commutator.alternate + theorem ring_commutator.commutator - def ring_commutator.commutator - theorem ring_commutator.jacobi Modified src/algebra/module/basic.lean +/- theorem is_linear_map.is_linear_map_smul Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.smul_algebra_right Modified src/data/complex/module.lean Modified src/data/monoid_algebra.lean Modified src/group_theory/group_action.lean +/- theorem smul_assoc Modified src/representation_theory/maschke.lean Modified src/ring_theory/algebra.lean + theorem algebra_compatible_smul +/- def linear_map_algebra_module + theorem map_smul_eq_smul_map - def module.restrict_scalars' - def module.restrict_scalars - theorem module.restrict_scalars_smul_def + def semimodule.restrict_scalars' + def semimodule.restrict_scalars + theorem semimodule.restrict_scalars_smul_def +/- def smul_algebra_right - theorem smul_algebra_smul +/- theorem smul_algebra_smul_comm +/- def subspace.restrict_scalars Added src/ring_theory/derivation.lean + theorem derivation.Rsmul_apply + theorem derivation.add_apply + theorem derivation.coe_fn_coe + theorem derivation.coe_injective + def derivation.commutator + theorem derivation.commutator_apply + theorem derivation.commutator_coe_linear_map + theorem derivation.ext + theorem derivation.leibniz + theorem derivation.map_add + theorem derivation.map_algebra_map + theorem derivation.map_neg + theorem derivation.map_one_eq_zero + theorem derivation.map_smul + theorem derivation.map_sub + theorem derivation.map_zero + theorem derivation.smul_apply + theorem derivation.smul_to_linear_map_coe + theorem derivation.to_fun_eq_coe + structure derivation + def linear_map.comp_der + theorem linear_map.comp_der_apply 2020-08-16 18:48:55 4f2c958 feat(tactic/interactive/choose): nondependent choose (#3806) Now you can write `choose!` to eliminate propositional arguments from the chosen functions. ``` example (h : ∀n m : ℕ, n < m → ∃i j, m = n + i ∨ m + j = n) : true := begin choose! i j h using h, guard_hyp i := ℕ → ℕ → ℕ, guard_hyp j := ℕ → ℕ → ℕ, guard_hyp h := ∀ (n m : ℕ), n < m → m = n + i n m ∨ m + j n m = n, trivial end ``` ESTIMATED CHANGES Modified src/logic/function/basic.lean + theorem function.sometimes_eq + theorem function.sometimes_spec Modified src/tactic/basic.lean Added src/tactic/choose.lean Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified test/choose.lean 2020-08-16 17:15:55 3d4f085 chore(ring_theory/ideal): docstring for Krull's theorem and a special case (#3831) ESTIMATED CHANGES Modified src/ring_theory/ideal/basic.lean + theorem ideal.exists_maximal 2020-08-16 13:39:50 ee74e7f feat(analysis/special_functions/exp_log): `tendsto real.log at_top at_top` (#3826) ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem real.tendsto_log_at_top 2020-08-16 12:41:57 863bf79 feat(data/padics): more valuations, facts about norms (#3790) Assorted lemmas about the `p`-adics. @jcommelin and I are adding algebraic structure here as part of the Witt vector development. Some of these declarations are stolen shamelessly from the perfectoid project. Coauthored by: Johan Commelin ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean + theorem padic_norm.padic_norm_p + theorem padic_norm.padic_norm_p_lt_one + theorem padic_norm.padic_norm_p_lt_one_of_prime + theorem padic_norm.padic_norm_p_of_prime Modified src/data/padics/padic_numbers.lean +/- theorem padic.cast_eq_of_rat_of_int +/- theorem padic.cast_eq_of_rat_of_nat + theorem padic.norm_eq_pow_val + def padic.valuation + theorem padic.valuation_one + theorem padic.valuation_p + theorem padic.valuation_zero + theorem padic_norm_e.norm_p + theorem padic_norm_e.norm_p_lt_one + theorem padic_norm_e.norm_p_pow + theorem padic_seq.norm_eq_pow_val - theorem padic_seq.norm_image + theorem padic_seq.norm_values_discrete + theorem padic_seq.val_eq_iff_norm_eq + def padic_seq.valuation 2020-08-16 11:27:24 a6f6434 feat(data/fin): bundled embedding (#3822) Add the coercion from `fin n` to `ℕ` as a bundled embedding, an equivalent of `function.embedding.subtype`. Once leanprover-community/lean#359 is fixed (making `fin n` a subtype), this can go away as a duplicate, but until then it is useful. ESTIMATED CHANGES Modified src/data/fin.lean + theorem function.embedding.coe_fin + def function.embedding.fin 2020-08-16 10:08:53 dda2dcd chore(data/*): doc strings on some definitions (#3791) Doc strings on definitions in `data.` which I could figure out what it does. ESTIMATED CHANGES Modified src/data/equiv/nat.lean Modified src/data/int/parity.lean Modified src/data/nat/enat.lean Modified src/data/nat/totient.lean Modified src/data/real/basic.lean 2020-08-16 08:37:23 8f03035 chore(algebra/with_one): docstrings (#3817) ESTIMATED CHANGES Modified src/algebra/group/with_one.lean 2020-08-16 07:20:48 20fe4a1 feat(algebra/euclidean_domain): some cleanup (#3752) Lower the priority of simp-lemmas which have an equivalent version in `group_with_zero`, so that the version of `group_with_zero` is found by `squeeze_simp` for types that have both structures. Add docstrings Remove outdated comment ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean +/- theorem euclidean_domain.div_self +/- theorem euclidean_domain.div_zero +/- theorem euclidean_domain.zero_div Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean 2020-08-16 06:05:27 490d3ce refactor(data/list/palindrome): use decidable_of_iff' (#3823) Follow-up to #3729. `decidable_of_iff'` allows for omitting the `eq.symm`. ESTIMATED CHANGES Modified src/data/list/palindrome.lean 2020-08-16 06:05:25 62374f7 doc(data/real/card): docs and cleanup (#3815) ESTIMATED CHANGES Modified src/data/real/cardinality.lean +/- theorem cardinal.mk_Icc_real +/- theorem cardinal.mk_Ici_real +/- theorem cardinal.mk_Ico_real +/- theorem cardinal.mk_Iic_real +/- theorem cardinal.mk_Iio_real +/- theorem cardinal.mk_Ioc_real +/- theorem cardinal.mk_Ioi_real +/- theorem cardinal.mk_Ioo_real +/- theorem cardinal.mk_real +/- theorem cardinal.mk_univ_real 2020-08-16 06:05:24 8325cf6 feat(*): reorder implicit arguments in tsum, supr, infi (#3809) This is helpful for a future version of the `ge_or_gt` linter to recognize binders: the binding type is the (implicit) argument directly before the binding body. ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- def infi +/- def supr Modified src/tactic/converter/binders.lean Modified src/topology/algebra/infinite_sum.lean +/- def tsum 2020-08-16 06:05:21 dba3018 feat(category_theory): the category of indexed families of objects (#3735) Pulling out a definition from #3638, and add some associated basic material. ESTIMATED CHANGES Modified src/category_theory/graded_object.lean - def category_theory.graded_object.comap - def category_theory.graded_object.comap_comp +/- def category_theory.graded_object.comap_eq - def category_theory.graded_object.comap_id - theorem category_theory.graded_object.comp_apply - theorem category_theory.graded_object.id_apply Added src/category_theory/pi/basic.lean + def category_theory.functor.pi + def category_theory.nat_trans.pi + def category_theory.pi.comap + def category_theory.pi.comap_comp + def category_theory.pi.comap_eval_iso_eval + def category_theory.pi.comap_id + theorem category_theory.pi.comp_apply + def category_theory.pi.eval + theorem category_theory.pi.id_apply + def category_theory.pi.sum Modified src/category_theory/products/associator.lean Modified src/category_theory/products/basic.lean 2020-08-16 06:05:19 3c2ed2a feat(topology/sheaves): construct sheaves of functions (#3608) # Sheaf conditions for presheaves of (continuous) functions. We show that * `Top.sheaf_condition.to_Type`: not-necessarily-continuous functions into a type form a sheaf * `Top.sheaf_condition.to_Types`: in fact, these may be dependent functions into a type family * `Top.sheaf_condition.to_Top`: continuous functions into a topological space form a sheaf ESTIMATED CHANGES Modified src/topology/sheaves/presheaf_of_functions.lean + def Top.presheaf_to_Type + theorem Top.presheaf_to_Type_map + theorem Top.presheaf_to_Type_obj + def Top.presheaf_to_Types Added src/topology/sheaves/sheaf_of_functions.lean + def Top.sheaf_condition.forget_continuity + def Top.sheaf_condition.to_Top + def Top.sheaf_condition.to_Type + def Top.sheaf_condition.to_Types 2020-08-16 06:05:17 765e460 feat(ring_theory/polynomial/homogeneous): definition and basic props (#3223) This PR also move ring_theory/polynomial.lean to ring_theory/polynomial/basic.lean This PR is part of bringing symmetric polynomials to mathlib, and besided that, I also expect to add binomial polynomials and Chebyshev polynomials in the future. Altogether, this motivates the starting of a ring_theory/polynomial directory. The file basic.lean may need cleaning or splitting at some point. ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.coeff_eq_zero_of_total_degree_lt + theorem mv_polynomial.eq_zero_iff + theorem mv_polynomial.exists_coeff_ne_zero + theorem mv_polynomial.ne_zero_iff Added src/ring_theory/polynomial/homogeneous.lean + def mv_polynomial.homogeneous_component + theorem mv_polynomial.homogeneous_component_apply + theorem mv_polynomial.homogeneous_component_eq_zero' + theorem mv_polynomial.homogeneous_component_eq_zero + theorem mv_polynomial.homogeneous_component_is_homogeneous + theorem mv_polynomial.homogeneous_component_zero + theorem mv_polynomial.is_homogeneous.add + theorem mv_polynomial.is_homogeneous.coeff_eq_zero + theorem mv_polynomial.is_homogeneous.inj_right + theorem mv_polynomial.is_homogeneous.mul + theorem mv_polynomial.is_homogeneous.prod + theorem mv_polynomial.is_homogeneous.sum + theorem mv_polynomial.is_homogeneous.total_degree + def mv_polynomial.is_homogeneous + theorem mv_polynomial.is_homogeneous_C + theorem mv_polynomial.is_homogeneous_X + theorem mv_polynomial.is_homogeneous_monomial + theorem mv_polynomial.is_homogeneous_one + theorem mv_polynomial.is_homogeneous_zero + theorem mv_polynomial.sum_homogeneous_component 2020-08-16 04:46:02 b1e7fb2 feat (category_theory/over): composition of `over.map` (#3798) Filtering in some defs from the topos project. ~~Depends on #3797.~~ ESTIMATED CHANGES Modified src/category_theory/over.lean + def category_theory.over.map_comp + def category_theory.over.map_id + def category_theory.under.map_comp + def category_theory.under.map_id 2020-08-16 04:46:00 1037a3a feat(algebra/homology, category_theory/abelian, algebra/category/Module): exactness (#3784) We define what it means for two maps `f` and `g` to be exact and show that for R-modules, this is the case if and only if `range f = ker g`. ESTIMATED CHANGES Modified src/algebra/category/Module/abelian.lean + theorem Module.exact_iff Added src/algebra/homology/exact.lean + theorem category_theory.comp_eq_zero_of_exact + theorem category_theory.fork_ι_comp_cofork_π + theorem category_theory.kernel_comp_cokernel Modified src/algebra/homology/homology.lean Modified src/algebra/homology/image_to_kernel_map.lean +/- def category_theory.image_to_kernel_map Modified src/category_theory/abelian/basic.lean +/- def category_theory.abelian.coimage_iso_image - def category_theory.abelian.coimage_strong_epi_mono_factorisation + def category_theory.abelian.coimages.coimage_strong_epi_mono_factorisation +/- theorem category_theory.abelian.full_image_factorisation +/- theorem category_theory.abelian.image_eq_image - def category_theory.abelian.image_strong_epi_mono_factorisation + def category_theory.abelian.images.image_strong_epi_mono_factorisation + def category_theory.abelian.non_preadditive_abelian Added src/category_theory/abelian/exact.lean + theorem category_theory.abelian.exact_iff' + theorem category_theory.abelian.exact_iff Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.colimit.comp_cocone_point_unique_up_to_iso_hom + theorem category_theory.limits.colimit.comp_cocone_point_unique_up_to_iso_inv + theorem category_theory.limits.is_colimit.comp_cocone_point_unique_up_to_iso_hom + theorem category_theory.limits.is_colimit.comp_cocone_point_unique_up_to_iso_inv + theorem category_theory.limits.is_limit.cone_point_unique_up_to_iso_hom_comp + theorem category_theory.limits.is_limit.cone_point_unique_up_to_iso_inv_comp + theorem category_theory.limits.limit.cone_point_unique_up_to_iso_hom_comp + theorem category_theory.limits.limit.cone_point_unique_up_to_iso_inv_comp Modified src/linear_algebra/basic.lean + theorem linear_map.ker_le_range_iff 2020-08-16 04:45:58 2c930a3 refactor(algebra/gcd_monoid, ring_theory/multiplicity): generalize normalization_domain, gcd_domain, multiplicity (#3779) * generalize `normalization_domain`, `gcd_domain`, `multiplicity` to not reference addition and subtraction * make `gcd_monoid` and `normalization_monoid` into mixins * add instances of `normalization_monoid` for `nat`, `associates` ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associates.coe_unit_eq_one + theorem associates.units_eq_one Renamed src/algebra/gcd_domain.lean to src/algebra/gcd_monoid.lean +/- theorem dvd_normalize_iff + theorem gcd_monoid.irreducible_iff_prime + theorem gcd_monoid.prime_of_irreducible +/- theorem int.coe_gcd +/- theorem int.coe_lcm +/- theorem int.nat_abs_gcd +/- theorem int.nat_abs_lcm + theorem norm_unit_eq_one +/- theorem norm_unit_mul_norm_unit +/- def normalize + theorem normalize_apply +/- theorem normalize_coe_units +/- theorem normalize_dvd_iff + theorem normalize_eq +/- theorem normalize_idem - theorem normalize_mul +/- theorem normalize_one +/- theorem normalize_zero + theorem units_eq_one Modified src/data/nat/basic.lean Modified src/data/nat/multiplicity.lean Modified src/data/padics/padic_norm.lean Modified src/data/polynomial/field_division.lean +/- theorem polynomial.degree_normalize Modified src/data/real/irrational.lean Modified src/number_theory/pythagorean_triples.lean Modified src/ring_theory/multiplicity.lean +/- def multiplicity Modified src/ring_theory/unique_factorization_domain.lean - def unique_factorization_domain.to_gcd_domain + def unique_factorization_domain.to_gcd_monoid 2020-08-16 03:16:51 ae8abf3 chore(order/rel_iso): rename order_iso and order_embedding to rel_iso and rel_embedding (#3750) renames `order_iso` and `order_embedding`, to make it clear they apply to all binary relations makes room for a new definition of `order_embedding` that will deal with order instances ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/data/equiv/encodable/basic.lean Modified src/data/equiv/list.lean Modified src/data/finsupp/lattice.lean - def finsupp.order_embedding_to_fun - theorem finsupp.order_embedding_to_fun_apply - def finsupp.order_iso_multiset - theorem finsupp.order_iso_multiset_apply - theorem finsupp.order_iso_multiset_symm_apply + def finsupp.rel_embedding_to_fun + theorem finsupp.rel_embedding_to_fun_apply + def finsupp.rel_iso_multiset + theorem finsupp.rel_iso_multiset_apply + theorem finsupp.rel_iso_multiset_symm_apply Modified src/data/setoid/basic.lean +/- def setoid.correspondence Modified src/data/setoid/partition.lean - def setoid.partition.order_iso + def setoid.partition.rel_iso Modified src/group_theory/congruence.lean +/- def con.correspondence Modified src/linear_algebra/basic.lean - def submodule.comap_mkq.le_order_embedding + def submodule.comap_mkq.le_rel_embedding - def submodule.comap_mkq.lt_order_embedding + def submodule.comap_mkq.lt_rel_embedding - def submodule.comap_mkq.order_iso + def submodule.comap_mkq.rel_iso - def submodule.map_subtype.le_order_embedding + def submodule.map_subtype.le_rel_embedding - def submodule.map_subtype.lt_order_embedding + def submodule.map_subtype.lt_rel_embedding - def submodule.map_subtype.order_iso + def submodule.map_subtype.rel_iso Modified src/order/galois_connection.lean - theorem order_iso.to_galois_connection + theorem rel_iso.to_galois_connection Modified src/order/ord_continuous.lean - theorem left_ord_continuous.coe_to_le_order_embedding + theorem left_ord_continuous.coe_to_le_rel_embedding - theorem left_ord_continuous.coe_to_lt_order_embedding + theorem left_ord_continuous.coe_to_lt_rel_embedding - def left_ord_continuous.to_le_order_embedding + def left_ord_continuous.to_le_rel_embedding - def left_ord_continuous.to_lt_order_embedding + def left_ord_continuous.to_lt_rel_embedding - theorem right_ord_continuous.coe_to_le_order_embedding + theorem right_ord_continuous.coe_to_le_rel_embedding - theorem right_ord_continuous.coe_to_lt_order_embedding + theorem right_ord_continuous.coe_to_lt_rel_embedding - def right_ord_continuous.to_le_order_embedding + def right_ord_continuous.to_le_rel_embedding - def right_ord_continuous.to_lt_order_embedding + def right_ord_continuous.to_lt_rel_embedding Deleted src/order/order_iso.lean - def fin.val.order_embedding - def fin_fin.order_embedding - theorem injective_of_increasing - def order_embedding.cod_restrict - theorem order_embedding.cod_restrict_apply - theorem order_embedding.coe_fn_inj - theorem order_embedding.coe_fn_mk - theorem order_embedding.coe_fn_to_embedding - theorem order_embedding.eq_preimage - theorem order_embedding.injective - theorem order_embedding.le_map_sup - def order_embedding.lt_embedding_of_le_embedding - theorem order_embedding.map_inf_le - def order_embedding.of_monotone - theorem order_embedding.of_monotone_coe - theorem order_embedding.ord - def order_embedding.preimage - theorem order_embedding.refl_apply - def order_embedding.rsymm - theorem order_embedding.trans_apply - structure order_embedding - theorem order_iso.apply_inv_self - theorem order_iso.apply_symm_apply - theorem order_iso.coe_coe_fn - theorem order_iso.coe_fn_injective - theorem order_iso.coe_fn_mk - theorem order_iso.coe_fn_symm_mk - theorem order_iso.coe_fn_to_equiv - theorem order_iso.coe_mul - theorem order_iso.coe_one - theorem order_iso.ext - theorem order_iso.inv_apply_self - theorem order_iso.map_bot - theorem order_iso.map_inf - theorem order_iso.map_sup - theorem order_iso.map_top - theorem order_iso.mul_apply - theorem order_iso.of_surjective_coe - theorem order_iso.ord'' - theorem order_iso.ord - def order_iso.prod_lex_congr - theorem order_iso.refl_apply - theorem order_iso.rel_symm_apply - def order_iso.rsymm - def order_iso.sum_lex_congr - theorem order_iso.symm_apply_apply - theorem order_iso.symm_apply_rel - theorem order_iso.to_equiv_injective - def order_iso.to_order_embedding - theorem order_iso.to_order_embedding_eq_coe - theorem order_iso.trans_apply - structure order_iso - theorem preimage_equivalence - def set_coe_embedding - theorem subrel.order_embedding_apply - def subrel - theorem subrel_val Modified src/order/order_iso_nat.lean - def order_embedding.nat_gt - def order_embedding.nat_lt - theorem order_embedding.well_founded_iff_no_descending_seq + def rel_embedding.nat_gt + def rel_embedding.nat_lt + theorem rel_embedding.well_founded_iff_no_descending_seq Added src/order/rel_iso.lean + def fin.val.rel_embedding + def fin_fin.rel_embedding + theorem injective_of_increasing + theorem preimage_equivalence + def rel_embedding.cod_restrict + theorem rel_embedding.cod_restrict_apply + theorem rel_embedding.coe_fn_inj + theorem rel_embedding.coe_fn_mk + theorem rel_embedding.coe_fn_to_embedding + theorem rel_embedding.eq_preimage + theorem rel_embedding.injective + theorem rel_embedding.le_map_sup + def rel_embedding.lt_embedding_of_le_embedding + theorem rel_embedding.map_inf_le + theorem rel_embedding.map_rel_iff + def rel_embedding.of_monotone + theorem rel_embedding.of_monotone_coe + def rel_embedding.preimage + theorem rel_embedding.refl_apply + def rel_embedding.rsymm + theorem rel_embedding.trans_apply + structure rel_embedding + theorem rel_iso.apply_inv_self + theorem rel_iso.apply_symm_apply + theorem rel_iso.coe_coe_fn + theorem rel_iso.coe_fn_injective + theorem rel_iso.coe_fn_mk + theorem rel_iso.coe_fn_symm_mk + theorem rel_iso.coe_fn_to_equiv + theorem rel_iso.coe_mul + theorem rel_iso.coe_one + theorem rel_iso.ext + theorem rel_iso.inv_apply_self + theorem rel_iso.map_bot + theorem rel_iso.map_inf + theorem rel_iso.map_rel_iff'' + theorem rel_iso.map_rel_iff + theorem rel_iso.map_sup + theorem rel_iso.map_top + theorem rel_iso.mul_apply + theorem rel_iso.of_surjective_coe + def rel_iso.prod_lex_congr + theorem rel_iso.refl_apply + theorem rel_iso.rel_symm_apply + def rel_iso.rsymm + def rel_iso.sum_lex_congr + theorem rel_iso.symm_apply_apply + theorem rel_iso.symm_apply_rel + theorem rel_iso.to_equiv_injective + def rel_iso.to_rel_embedding + theorem rel_iso.to_rel_embedding_eq_coe + theorem rel_iso.trans_apply + structure rel_iso + def set_coe_embedding + theorem subrel.rel_embedding_apply + def subrel + theorem subrel_val Modified src/order/semiconj_Sup.lean Modified src/ring_theory/ideal/operations.lean - def ideal.le_order_embedding_of_surjective + def ideal.le_rel_embedding_of_surjective - def ideal.lt_order_embedding_of_surjective + def ideal.lt_rel_embedding_of_surjective - def ideal.order_iso_of_bijective - def ideal.order_iso_of_surjective + def ideal.rel_iso_of_bijective + def ideal.rel_iso_of_surjective Modified src/ring_theory/localization.lean - def localization_map.le_order_embedding + def localization_map.le_rel_embedding Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal_ordinal.lean - def cardinal.aleph'.order_iso - theorem cardinal.aleph'.order_iso_coe + def cardinal.aleph'.rel_iso + theorem cardinal.aleph'.rel_iso_coe +/- def cardinal.aleph' - def cardinal.aleph_idx.order_iso - theorem cardinal.aleph_idx.order_iso_coe + def cardinal.aleph_idx.rel_iso + theorem cardinal.aleph_idx.rel_iso_coe Modified src/set_theory/cofinality.lean - theorem order_iso.cof.aux - theorem order_iso.cof +/- theorem ordinal.cof_cof + theorem rel_iso.cof.aux + theorem rel_iso.cof Modified src/set_theory/ordinal.lean - def cardinal.ord.order_embedding - theorem cardinal.ord.order_embedding_coe + def cardinal.ord.rel_embedding + theorem cardinal.ord.rel_embedding_coe +/- def initial_seg.antisymm +/- theorem initial_seg.coe_coe_fn +/- theorem initial_seg.coe_fn_mk - theorem initial_seg.coe_fn_to_order_embedding + theorem initial_seg.coe_fn_to_rel_embedding +/- def initial_seg.of_iso +/- structure initial_seg - def order_embedding.collapse - theorem order_embedding.collapse_F.lt - theorem order_embedding.collapse_F.not_lt - def order_embedding.collapse_F - theorem order_embedding.collapse_apply - theorem ordinal.order_iso_enum' - theorem ordinal.order_iso_enum - def ordinal.order_iso_out + theorem ordinal.rel_iso_enum' + theorem ordinal.rel_iso_enum + def ordinal.rel_iso_out +/- def ordinal.typein_iso +/- theorem principal_seg.coe_coe_fn +/- theorem principal_seg.coe_fn_mk - theorem principal_seg.coe_fn_to_order_embedding + theorem principal_seg.coe_fn_to_rel_embedding +/- def principal_seg.equiv_lt +/- theorem principal_seg.equiv_lt_apply +/- theorem principal_seg.equiv_lt_top +/- structure principal_seg + def rel_embedding.collapse + theorem rel_embedding.collapse_F.lt + theorem rel_embedding.collapse_F.not_lt + def rel_embedding.collapse_F + theorem rel_embedding.collapse_apply Modified src/set_theory/ordinal_arithmetic.lean 2020-08-16 01:06:39 55d06a9 chore(scripts): update nolints.txt (#3820) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-16 01:06:37 bf51f82 feat(ring_theory/integral_closure): Rings lying within an integral extension are integral extensions (#3781) Proofs that if an algebra tower is integral then so are the two extensions making up the tower. I needed these for another proof I'm working on, but it seemed reasonable to create a smaller PR now since they are basically self contained. ESTIMATED CHANGES Modified src/ring_theory/integral_closure.lean + theorem is_integral_of_surjective + theorem is_integral_tower_bot_of_is_integral + theorem is_integral_tower_top_of_is_integral 2020-08-16 01:06:35 a991854 feat(category_theory/limits): a Fubini theorem (#3732) ESTIMATED CHANGES Modified src/category_theory/currying.lean Added src/category_theory/limits/fubini.lean + def category_theory.limits.cone_of_cone_uncurry + def category_theory.limits.cone_of_cone_uncurry_is_limit + def category_theory.limits.diagram_of_cones.cone_points + def category_theory.limits.diagram_of_cones.mk_of_has_limits + theorem category_theory.limits.diagram_of_cones.mk_of_has_limits_cone_points + structure category_theory.limits.diagram_of_cones + def category_theory.limits.limit_iso_limit_curry_comp_lim + theorem category_theory.limits.limit_iso_limit_curry_comp_lim_hom_π_π + theorem category_theory.limits.limit_iso_limit_curry_comp_lim_inv_π + def category_theory.limits.limit_uncurry_iso_limit_comp_lim + theorem category_theory.limits.limit_uncurry_iso_limit_comp_lim_hom_π_π + theorem category_theory.limits.limit_uncurry_iso_limit_comp_lim_inv_π Modified src/category_theory/limits/limits.lean 2020-08-15 23:34:47 ad8c7e5 chore(algebra/group/defs): docstrings (#3819) ESTIMATED CHANGES Modified src/algebra/group/defs.lean 2020-08-15 23:34:45 ad8dcaf chore(algebra/field): docstrings (#3814) ESTIMATED CHANGES Modified src/algebra/field.lean 2020-08-15 23:34:43 598c091 chore(tactic/squeeze): format `simp only []` as `simp only` (#3811) fixes #3150 ESTIMATED CHANGES Modified src/tactic/squeeze.lean 2020-08-15 23:34:42 e75ada7 docs(category_theory/limits/cones): cones documentation and equivalence fixup (#3795) Mostly adding documentation in `ct.limits.cones`, but also shortened a couple of proofs. I also adjusted a couple of statements for `is_equivalence` to match the `is_equivalence` projections which are meant to be used (these statements were only used for cones anyway). ESTIMATED CHANGES Modified src/category_theory/equivalence.lean - theorem category_theory.is_equivalence.counit_inv_functor_comp + theorem category_theory.is_equivalence.inv_fun_id_inv_comp Modified src/category_theory/limits/cones.lean + def category_theory.functor.map_cone_inv_map_cone 2020-08-15 23:34:40 db99f67 docs(category_theory/adjunction): document convenience constructors for adjunctions (#3788) As mentioned here: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/monoid.20object/near/204930460 ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean 2020-08-15 22:44:14 cd1c00d chore(algebra/associated): docstrings (#3813) ESTIMATED CHANGES Modified src/algebra/associated.lean 2020-08-15 22:09:09 8f75f96 feat(geometry/euclidean): circumcenter and circumradius (#3693) Show that every simplex in a Euclidean affine space has a unique circumcenter (in the affine subspace spanned by that simplex) and circumradius. There are four main pieces, which all seem closely enough related to put them all together in the same PR. Both (b) and (c) have quite long proofs, but I don't see obvious pieces to extract from them. (a) Various lemmas about `orthogonal_projection` in relation to points equidistant from families of points. (b) The induction step for the existence and uniqueness of the (circumcenter, circumradius) pair, `exists_unique_dist_eq_of_insert` (this is actually slightly more general than is needed for the induction; it includes going from a set of points that has a unique circumcenter and circumradius despite being infinite or not affine independent, to such a unique circumcenter and circumradius when another point is added outside their affine subspace). This is essentially just a calculation using an explicit expression for the distance of the circumcenter of the new set of points from its orthogonal projection, but still involves quite a lot of manipulation to get things down to a form `field_simp, ring` can handle. (c) The actual induction `exists_unique_dist_eq_of_affine_independent`, giving a unique (circumcenter, circumradius) pair for for any affine independent family indexed by a `fintype`, by induction on the cardinality of that `fintype` and using the result from (b). Given (b), this is essentially a lot of manipulation of trivialities. (d) Extracting definitions and basic properties of `circumcenter` and `circumradius` from the previous result. ESTIMATED CHANGES Modified src/geometry/euclidean.lean + def affine.simplex.circumcenter + def affine.simplex.circumcenter_circumradius + theorem affine.simplex.circumcenter_circumradius_unique_dist_eq + theorem affine.simplex.circumcenter_mem_affine_span + def affine.simplex.circumradius + theorem affine.simplex.dist_circumcenter_eq_circumradius + theorem affine.simplex.eq_circumcenter_of_dist_eq + theorem affine.simplex.eq_circumradius_of_dist_eq + theorem euclidean_geometry.dist_eq_iff_dist_orthogonal_projection_eq + theorem euclidean_geometry.dist_set_eq_iff_dist_orthogonal_projection_eq + theorem euclidean_geometry.exists_dist_eq_iff_exists_dist_orthogonal_projection_eq + theorem euclidean_geometry.exists_unique_dist_eq_of_affine_independent + theorem euclidean_geometry.exists_unique_dist_eq_of_insert 2020-08-15 20:42:02 b97b08b fix(*): remove usages of ge/gt (#3808) These were not caught by the old `ge_or_gt` linter, but they will be caught by the new (upcoming) `ge_or_gt` linter. The `nolint` flags are not yet removed, this will happen in a later PR. Renamings: ``` char_is_prime_of_ge_two -> char_is_prime_of_two_le dist_eq_sub_of_ge -> dist_eq_sub_of_le_right gt_of_mul_lt_mul_neg_right -> lt_of_mul_lt_mul_neg_right ``` ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/char_p.lean - theorem char_p.char_is_prime_of_ge_two + theorem char_p.char_is_prime_of_two_le Modified src/algebra/order_functions.lean +/- theorem max_le_add_of_nonneg +/- theorem min_le_add_of_nonneg_left +/- theorem min_le_add_of_nonneg_right Modified src/data/nat/basic.lean +/- theorem nat.eq_of_mul_eq_mul_right Modified src/data/nat/dist.lean - theorem nat.dist_eq_sub_of_ge + theorem nat.dist_eq_sub_of_le_right Modified src/data/num/lemmas.lean +/- theorem num.cmp_to_nat +/- theorem pos_num.cmp_to_nat +/- theorem pos_num.pred_to_nat +/- theorem znum.cmp_to_int Modified src/data/padics/padic_numbers.lean +/- theorem padic.padic_norm_e_lim_le +/- theorem padic.rat_dense' +/- theorem padic.rat_dense +/- theorem padic_norm_e.defn +/- theorem padic_seq.norm_nonneg Modified src/data/polynomial/degree/basic.lean +/- theorem polynomial.degree_eq_iff_nat_degree_eq_of_pos Modified src/data/real/basic.lean +/- theorem real.le_of_forall_epsilon_le Modified src/data/real/cau_seq.lean +/- theorem cau_seq.cauchy₂ +/- theorem cau_seq.cauchy₃ +/- theorem is_cau_seq.cauchy₂ +/- theorem is_cau_seq.cauchy₃ Modified src/data/real/hyperreal.lean +/- theorem hyperreal.gt_of_neg_of_infinitesimal +/- def hyperreal.infinite_pos +/- theorem hyperreal.infinite_pos_def +/- theorem hyperreal.infinite_pos_iff_infinite_and_pos +/- theorem hyperreal.infinite_pos_iff_infinite_of_nonneg +/- theorem hyperreal.infinite_pos_iff_infinite_of_pos +/- theorem hyperreal.lt_neg_of_pos_of_infinitesimal +/- theorem hyperreal.lt_of_pos_of_infinitesimal +/- theorem hyperreal.pos_of_infinite_pos Modified src/data/real/nnreal.lean +/- theorem nnreal.le_of_forall_epsilon_le +/- theorem nnreal.le_of_real_iff_coe_le +/- theorem nnreal.of_real_lt_iff_lt_coe Modified src/order/basic.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.map_div_at_top_eq_nat Modified src/order/galois_connection.lean +/- theorem nat.galois_connection_mul_div Modified src/set_theory/ordinal_arithmetic.lean +/- theorem ordinal.add_absorp_iff Modified src/tactic/linarith/lemmas.lean +/- theorem linarith.mul_eq +/- theorem linarith.mul_neg +/- theorem linarith.mul_nonpos Modified src/tactic/monotonicity/lemmas.lean - theorem gt_of_mul_lt_mul_neg_right + theorem lt_of_mul_lt_mul_neg_right Modified src/topology/algebra/ordered.lean +/- theorem gt_mem_sets_of_Liminf_gt Modified src/topology/bounded_continuous_function.lean Modified src/topology/metric_space/hausdorff_distance.lean +/- theorem metric.Hausdorff_dist_le_of_inf_dist 2020-08-15 20:42:00 36ced83 chore(linear_algebra/matrix): format doc using markdown (#3807) ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean 2020-08-15 20:41:57 26f2d4e docs(data/sum): fix typo in sum.is_right docs (#3805) ESTIMATED CHANGES Modified src/data/sum.lean 2020-08-15 20:41:56 9339a34 chore(data/list/defs): docstring (#3804) ESTIMATED CHANGES Modified src/data/list/defs.lean - def list.find_indexes_aux 2020-08-15 20:41:54 7f1a489 fix(algebra/order): restore choiceless theorems (#3799) The classical_decidable linter commit made these choiceless proofs use choice again, making them duplicates of other theorems not in the `decidable.` namespace. ESTIMATED CHANGES Modified src/algebra/order.lean +/- theorem decidable.eq_or_lt_of_le +/- theorem decidable.le_iff_le_iff_lt_iff_lt +/- theorem decidable.le_iff_lt_or_eq +/- theorem decidable.le_imp_le_iff_lt_imp_lt +/- theorem decidable.le_imp_le_of_lt_imp_lt +/- theorem decidable.le_of_not_lt +/- theorem decidable.le_or_lt +/- theorem decidable.lt_or_eq_of_le +/- theorem decidable.lt_or_gt_of_ne +/- theorem decidable.lt_or_le +/- theorem decidable.lt_trichotomy +/- theorem decidable.ne_iff_lt_or_gt +/- theorem decidable.not_lt 2020-08-15 20:41:52 2e890e6 feat(category_theory/comma): constructing isos in the comma,over,under cats (#3797) Constructors to give isomorphisms in comma, over and under categories - essentially these just let you omit checking one of the commuting squares using the fact that the components are iso and the other square works. ESTIMATED CHANGES Modified src/category_theory/comma.lean + def category_theory.comma.iso_mk Modified src/category_theory/over.lean +/- def category_theory.over.forget + def category_theory.over.iso_mk + theorem category_theory.over.iso_mk_hom_left + theorem category_theory.over.iso_mk_inv_left - theorem category_theory.over.mk_hom - theorem category_theory.over.mk_left +/- def category_theory.under.forget + def category_theory.under.iso_mk + theorem category_theory.under.iso_mk_hom_right + theorem category_theory.under.iso_mk_inv_right 2020-08-15 20:41:50 c9bf6f2 feat(linear_algebra/affine_space/independent): affinely independent sets (#3794) Prove variants of `affine_independent_iff_linear_independent_vsub` that relate affine independence for a set of points (as opposed to an indexed family of points) to linear independence for a set of vectors, so facilitating linking to results such as `exists_subset_is_basis` expressed in terms of linearly independent sets of vectors. There are two variants, depending on which of the set of points or the set of vectors is given as a hypothesis. Thus, applying `exists_subset_is_basis`, deduce that if `k` is a field, any affinely independent set of points can be extended to such a set that spans the whole space. Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/linear.20suffering ESTIMATED CHANGES Modified src/linear_algebra/affine_space/basic.lean + theorem affine_span_singleton_union_vadd_eq_top_of_span_eq_top Modified src/linear_algebra/affine_space/independent.lean + theorem affine_independent_set_iff_linear_independent_vsub + theorem exists_subset_affine_independent_affine_span_eq_top + theorem linear_independent_set_iff_affine_independent_vadd_union_singleton 2020-08-15 20:41:48 ef3ba8b docs(category_theory/adjunction): lint some adjunction defs (#3793) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean 2020-08-15 20:41:45 d40c06f feat(algebra/ordered_field): rewrite and cleanup (#3751) Group similar lemmas in a more intuitive way Add docstrings, module doc and section headers Simplify some proofs Remove some implications if they had a corresponding `iff` lemma. Add some more variants of some lemmas Rename some lemmas for consistency List of name changes (the lemma on the right might be a bi-implication, if the original version was an implication): `add_midpoint` -> `add_sub_div_two_lt` `le_div_of_mul_le`, `mul_le_of_le_div` -> `le_div_iff` `lt_div_of_mul_lt`, `mul_lt_of_lt_div` -> `lt_div_iff` `div_le_of_le_mul` -> `div_le_iff'` `le_mul_of_div_le` -> `div_le_iff` `div_lt_of_pos_of_lt_mul` -> `div_lt_iff'` `mul_le_of_neg_of_div_le`, `div_le_of_neg_of_mul_le` -> `div_le_iff_of_neg` `mul_lt_of_neg_of_div_lt`, `div_lt_of_neg_of_mul_lt` -> `div_lt_iff_of_neg` `div_le_div_of_pos_of_le` -> `div_le_div_of_le` `div_le_div_of_neg_of_le` -> `div_le_div_of_nonpos_of_le` `div_lt_div_of_pos_of_lt` -> `div_lt_div_of_lt` `div_mul_le_div_mul_of_div_le_div_nonneg` -> `div_mul_le_div_mul_of_div_le_div` `one_le_div_of_le`, `le_of_one_le_div`, `one_le_div_iff_le` -> `one_le_div` `one_lt_div_of_lt`, `lt_of_one_lt_div`, `one_lt_div_iff_lt` -> `one_lt_div` `div_le_one_iff_le` -> `div_le_one` `div_lt_one_iff_lt` -> `div_lt_one` `one_div_le_of_pos_of_one_div_le` -> `one_div_le` `one_div_le_of_neg_of_one_div_le` -> `one_div_le_of_neg` `div_lt_div_of_pos_of_lt_of_pos` -> `div_lt_div_of_lt_left` One regression I noticed in some other files: when using `div_le_iff`, and the argument is proven by some lemma about `linear_ordered_semiring` then Lean gives a type mismatch. Presumably this happens because the instance chain `ordered_field -> has_le` doesn't go via `ordered_semiring`. The fix is to give the type explicitly, for example using `div_le_iff (t : (0 : ℝ) < _)` ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/approximations.lean Modified src/algebra/ordered_field.lean - theorem add_midpoint + theorem add_sub_div_two_lt + theorem div_le_div_of_le +/- theorem div_le_div_of_le_left +/- theorem div_le_div_of_le_of_nonneg - theorem div_le_div_of_neg_of_le + theorem div_le_div_of_nonpos_of_le - theorem div_le_div_of_pos_of_le + theorem div_le_iff_of_neg' + theorem div_le_iff_of_nonneg_of_le - theorem div_le_of_le_mul - theorem div_le_of_neg_of_mul_le + theorem div_le_one - theorem div_le_one_iff_le + theorem div_le_one_of_neg + theorem div_lt_div_of_lt + theorem div_lt_div_of_lt_left - theorem div_lt_div_of_pos_of_lt - theorem div_lt_div_of_pos_of_lt_of_pos + theorem div_lt_iff_of_neg' - theorem div_lt_of_neg_of_mul_lt - theorem div_lt_of_pos_of_lt_mul + theorem div_lt_one - theorem div_lt_one_iff_lt + theorem div_lt_one_of_neg + theorem div_mul_le_div_mul_of_div_le_div - theorem div_mul_le_div_mul_of_div_le_div_nonneg +/- theorem div_two_lt_of_pos +/- theorem exists_add_lt_and_pos_of_lt +/- theorem half_pos +/- theorem inv_le_inv_of_le + theorem inv_le_inv_of_neg + theorem inv_le_of_neg + theorem inv_lt_inv_of_neg + theorem inv_lt_of_neg + theorem le_div_iff_of_neg' - theorem le_div_of_mul_le + theorem le_inv_of_neg - theorem le_mul_of_div_le +/- theorem le_of_forall_sub_le +/- theorem le_of_neg_of_one_div_le_one_div +/- theorem le_of_one_div_le_one_div - theorem le_of_one_le_div + theorem le_one_div + theorem le_one_div_of_neg + theorem lt_div_iff_of_neg' - theorem lt_div_of_mul_lt + theorem lt_inv_of_neg +/- theorem lt_of_neg_of_one_div_lt_one_div +/- theorem lt_of_one_div_lt_one_div - theorem lt_of_one_lt_div + theorem lt_one_div + theorem lt_one_div_of_neg +/- theorem mul_le_mul_of_mul_div_le - theorem mul_le_of_le_div - theorem mul_le_of_neg_of_div_le - theorem mul_lt_of_lt_div - theorem mul_lt_of_neg_of_div_lt +/- theorem one_div_le_neg_one + theorem one_div_le_of_neg - theorem one_div_le_of_neg_of_one_div_le - theorem one_div_le_of_pos_of_one_div_le +/- theorem one_div_le_one_div_of_le + theorem one_div_le_one_div_of_neg +/- theorem one_div_le_one_div_of_neg_of_le +/- theorem one_div_lt_neg_one + theorem one_div_lt_of_neg +/- theorem one_div_lt_one_div_of_lt + theorem one_div_lt_one_div_of_neg +/- theorem one_div_lt_one_div_of_neg_of_lt + theorem one_le_div - theorem one_le_div_iff_le - theorem one_le_div_of_le + theorem one_le_div_of_neg +/- theorem one_le_inv +/- theorem one_le_one_div + theorem one_lt_div - theorem one_lt_div_iff_lt - theorem one_lt_div_of_lt + theorem one_lt_div_of_neg +/- theorem one_lt_one_div Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/pow.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_numbers.lean Modified src/data/real/basic.lean Modified src/data/real/cardinality.lean Modified src/data/real/conjugate_exponents.lean Modified src/data/real/hyperreal.lean Modified src/data/real/pi.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/topology/metric_space/antilipschitz.lean 2020-08-15 20:41:42 f953a9d feat(category_theory/limits/shapes/types): duals (#3738) Just dualising some existing material. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.coprod + theorem category_theory.limits.types.coprod_desc + theorem category_theory.limits.types.coprod_inl + theorem category_theory.limits.types.coprod_inr + theorem category_theory.limits.types.coprod_map + theorem category_theory.limits.types.initial + theorem category_theory.limits.types.sigma + theorem category_theory.limits.types.sigma_desc + theorem category_theory.limits.types.sigma_map + theorem category_theory.limits.types.sigma_ι + def category_theory.limits.types.types_has_binary_coproducts + def category_theory.limits.types.types_has_coproducts + def category_theory.limits.types.types_has_initial 2020-08-15 19:14:07 8ce00af feat(data/set/basic): pairwise_on for equality (#3802) Add another lemma about `pairwise_on`: if and only if `f` takes pairwise equal values on `s`, there is some value it takes everywhere on `s`. This arose from discussion in #3693. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.pairwise_on_eq_iff_exists_eq 2020-08-15 19:14:05 78354e1 feat(tactic/linarith): support case splits in preprocessing (including `ne` hypotheses) (#3786) This adds an API for `linarith` preprocessors to branch. Each branch results in a separate call to `linarith`, so this can be exponentially bad. Use responsibly. Given that the functionality is there, and I needed a way to test it, I've added a feature that people have been begging for that I've resisted: you can now call `linarith {split_ne := tt}` to handle `a ≠ b` hypotheses. Again: 2^n `linarith` calls for `n` disequalities in your context. ESTIMATED CHANGES Modified src/tactic/linarith/datatypes.lean Modified src/tactic/linarith/frontend.lean Modified src/tactic/linarith/preprocessing.lean Modified test/linarith.lean 2020-08-15 17:58:55 050728b feat(data/fintype/basic): card lemma and finset bool alg (#3796) Adds the card lemma ``` finset.card_le_univ [fintype α] (s : finset α) : s.card ≤ fintype.card α ``` which I expected to see in mathlib, and upgrade the bounded_distrib_lattice instance on finset in the presence of fintype to a boolean algebra instance. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.card_compl + theorem finset.card_le_univ + theorem finset.compl_eq_univ_sdiff 2020-08-15 17:58:53 44010bc refactor(linear_algebra/affine_space/combination): bundled affine_combination (#3789) When `weighted_vsub_of_point` and `weighted_vsub` became bundled `linear_map`s on the weights, `affine_combination` was left as an unbundled function with different argument order from the other two related operations. Make it into a bundled `affine_map` on the weights, so making it more consistent with the other two operations and allowing general results on `affine_map`s to be used on `affine_combination` (as illustrated by the changed proofs of `weighted_vsub_vadd_affine_combination` and `affine_combination_vsub`). ESTIMATED CHANGES Modified src/geometry/euclidean.lean Modified src/linear_algebra/affine_space/combination.lean +/- def finset.affine_combination + theorem finset.affine_combination_linear Modified src/linear_algebra/affine_space/independent.lean 2020-08-15 17:58:51 9216dd7 chore(ring_theory): delete `is_algebra_tower` (#3785) Delete the abbreviation `is_algebra_tower` for `is_scalar_tower`, and replace all references (including the usages of the `is_algebra_tower` namespace) with `is_scalar_tower`. Documentation should also have been updated accordingly. This change was requested in a comment on #3717. ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/tower.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_tower.lean - theorem is_algebra_tower.aeval_apply - theorem is_algebra_tower.algebra.ext - theorem is_algebra_tower.algebra_map_apply - theorem is_algebra_tower.algebra_map_eq - theorem is_algebra_tower.algebra_map_smul - theorem is_algebra_tower.comap_eq - theorem is_algebra_tower.of_algebra_map_eq - theorem is_algebra_tower.range_under_adjoin - def is_algebra_tower.restrict_base - theorem is_algebra_tower.restrict_base_apply - theorem is_algebra_tower.smul_left_comm - def is_algebra_tower.to_alg_hom - theorem is_algebra_tower.to_alg_hom_apply - def is_algebra_tower + theorem is_scalar_tower.aeval_apply + theorem is_scalar_tower.algebra.ext + theorem is_scalar_tower.algebra_comap_eq + theorem is_scalar_tower.algebra_map_apply + theorem is_scalar_tower.algebra_map_eq + theorem is_scalar_tower.algebra_map_smul + theorem is_scalar_tower.of_algebra_map_eq + theorem is_scalar_tower.range_under_adjoin + def is_scalar_tower.restrict_base + theorem is_scalar_tower.restrict_base_apply + theorem is_scalar_tower.smul_left_comm + def is_scalar_tower.to_alg_hom + theorem is_scalar_tower.to_alg_hom_apply Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean - theorem is_integral_of_is_algebra_tower + theorem is_integral_of_is_scalar_tower Modified src/ring_theory/localization.lean +/- theorem fraction_map.comap_is_algebraic_iff 2020-08-15 16:25:49 9451f8d feat(data/sum): add sum.{get_left, get_right, is_left, is_right} (#3792) ESTIMATED CHANGES Modified src/data/sum.lean + def sum.get_left + def sum.get_right + def sum.is_left + def sum.is_right 2020-08-15 14:12:32 daafd6f chore(number_theory/pythagorean_triples): added doc-strings (#3787) Added docstrings to: `pythagorean_triple_comm` `pythagorean_triple.zero` `mul` `mul_iff` ESTIMATED CHANGES Modified src/number_theory/pythagorean_triples.lean 2020-08-15 14:12:30 10d4811 feat(algebra/add_torsor): injectivity lemmas (#3767) Add variants of the `add_action` and `add_torsor` cancellation lemmas whose conclusion is stated in terms of `function.injective`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem vadd_left_injective + theorem vadd_right_injective + theorem vsub_left_injective + theorem vsub_right_injective 2020-08-15 12:43:48 5c13693 chore(algebra/classical_lie_algebras): fix some doc strings (#3776) ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean Modified src/linear_algebra/basic.lean 2020-08-15 12:43:45 9ac6e8a refactor(set_theory/pgame): rename pgame lemma (#3775) Renamed `move_left_right_moves_neg_symm` to `move_left_left_moves_neg_symm` to make it consistent with the other 3 related lemmas ESTIMATED CHANGES Modified src/set_theory/pgame.lean + theorem pgame.move_left_left_moves_neg_symm - theorem pgame.move_left_right_moves_neg_symm 2020-08-15 12:43:43 658cd38 feat(tactic/derive_fintype): derive fintype instances (#3772) This adds a `@[derive fintype]` implementation, like so: ``` @[derive fintype] inductive foo (α : Type) | A : α → foo | B : α → α → foo | C : α × α → foo | D : foo ``` ESTIMATED CHANGES Modified src/data/finset/basic.lean + def finset.cons + theorem finset.cons_eq_insert + theorem finset.cons_val + def finset.disj_union + theorem finset.disj_union_eq_union + theorem finset.mem_cons + theorem finset.mem_disj_union Modified src/data/finset/pi.lean Modified src/data/multiset/nodup.lean + theorem multiset.nodup_iff_pairwise Modified src/data/sigma/basic.lean + def psigma.elim + theorem psigma.elim_val Modified src/tactic/default.lean Added src/tactic/derive_fintype.lean + def derive_fintype.finset_above.cons + theorem derive_fintype.finset_above.mem_cons_of_mem + theorem derive_fintype.finset_above.mem_cons_self + theorem derive_fintype.finset_above.mem_union_left + theorem derive_fintype.finset_above.mem_union_right + def derive_fintype.finset_above.nil + def derive_fintype.finset_above.union + def derive_fintype.finset_above + theorem derive_fintype.finset_in.mem_mk + def derive_fintype.finset_in.mk + def derive_fintype.finset_in + def derive_fintype.mk_fintype Modified src/tactic/derive_inhabited.lean Added test/derive_fintype.lean + inductive alphabet + inductive foo2 + inductive foo3 + inductive foo 2020-08-15 12:43:41 18746ef feat(analysis/special_functions/pow): Added lemmas for rpow of neg exponent (#3715) I noticed that the library was missing some lemmas regarding the bounds of rpow of a negative exponent so I added them. I cleaned up the other similar preexisting lemmas for consistency. I then repeated the process for nnreal lemmas. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem nnreal.one_le_rpow_of_pos_of_le_one_of_nonpos + theorem nnreal.one_lt_rpow_of_pos_of_lt_one_of_neg + theorem nnreal.rpow_le_one_of_one_le_of_nonpos +/- theorem nnreal.rpow_lt_one + theorem nnreal.rpow_lt_one_of_one_lt_of_neg +/- theorem real.one_le_rpow + theorem real.one_le_rpow_of_pos_of_le_one_of_nonpos +/- theorem real.one_lt_rpow + theorem real.one_lt_rpow_of_pos_of_lt_one_of_neg +/- theorem real.rpow_le_one + theorem real.rpow_le_one_of_one_le_of_nonpos +/- theorem real.rpow_lt_one + theorem real.rpow_lt_one_of_one_lt_of_neg 2020-08-15 12:43:39 099f070 feat(topology/sheaves): the sheaf condition (#3605) Johan and I have been working with this, and it's at least minimally viable. In follow-up PRs we have finished: * constructing the sheaf of dependent functions to a type family * constructing the sheaf of continuous functions to a fixed topological space * checking the sheaf condition under forgetful functors that reflect isos and preserve limits (https://stacks.math.columbia.edu/tag/0073) Obviously there's more we'd like to see before being confident that a design for sheaves is workable, but we'd like to get started! ESTIMATED CHANGES Added src/category_theory/limits/punit.lean + def category_theory.limits.punit_cocone_is_colimit + def category_theory.limits.punit_cone_is_limit Modified src/topology/order.lean Added src/topology/sheaves/sheaf.lean + def Top.sheaf.forget + structure Top.sheaf + def Top.sheaf_condition.diagram + def Top.sheaf_condition.fork + theorem Top.sheaf_condition.fork_X + theorem Top.sheaf_condition.fork_ι + theorem Top.sheaf_condition.fork_π_app_walking_parallel_pair_one + theorem Top.sheaf_condition.fork_π_app_walking_parallel_pair_zero + def Top.sheaf_condition.left_res + def Top.sheaf_condition.pi_inters + def Top.sheaf_condition.pi_opens + def Top.sheaf_condition.res + def Top.sheaf_condition.right_res + theorem Top.sheaf_condition.w + def Top.sheaf_condition + def Top.sheaf_condition_punit 2020-08-15 12:06:09 36b4a1e refactor(algebra/add_torsor): use `out_param` (#3727) ESTIMATED CHANGES Modified src/algebra/add_torsor.lean - theorem add_action.vadd_assoc - theorem add_action.vadd_comm - theorem add_action.vadd_left_cancel - theorem add_action.vadd_left_cancel_iff - theorem add_action.zero_vadd - theorem add_torsor.eq_of_vsub_eq_zero - theorem add_torsor.eq_vadd_iff_vsub_eq - theorem add_torsor.neg_vsub_eq_vsub_rev - theorem add_torsor.vadd_right_cancel - theorem add_torsor.vadd_right_cancel_iff - theorem add_torsor.vadd_vsub - theorem add_torsor.vadd_vsub_assoc - theorem add_torsor.vadd_vsub_vadd_cancel_left - theorem add_torsor.vadd_vsub_vadd_cancel_right - theorem add_torsor.vsub_add_vsub_cancel - theorem add_torsor.vsub_eq_zero_iff_eq - theorem add_torsor.vsub_left_cancel - theorem add_torsor.vsub_left_cancel_iff - theorem add_torsor.vsub_mem_vsub_set - theorem add_torsor.vsub_right_cancel - theorem add_torsor.vsub_right_cancel_iff - theorem add_torsor.vsub_self - def add_torsor.vsub_set - theorem add_torsor.vsub_set_empty - theorem add_torsor.vsub_set_finite_of_finite - theorem add_torsor.vsub_set_mono - theorem add_torsor.vsub_set_singleton - theorem add_torsor.vsub_sub_vsub_cancel_left - theorem add_torsor.vsub_sub_vsub_cancel_right - theorem add_torsor.vsub_vadd - theorem add_torsor.vsub_vadd_eq_vsub_sub + theorem eq_of_vsub_eq_zero + theorem eq_vadd_iff_vsub_eq + theorem neg_vsub_eq_vsub_rev + theorem vadd_assoc + theorem vadd_comm +/- theorem vadd_eq_add + theorem vadd_left_cancel + theorem vadd_left_cancel_iff + theorem vadd_right_cancel + theorem vadd_right_cancel_iff + theorem vadd_vsub + theorem vadd_vsub_assoc + theorem vadd_vsub_vadd_cancel_left + theorem vadd_vsub_vadd_cancel_right + theorem vsub_add_vsub_cancel +/- theorem vsub_eq_sub + theorem vsub_eq_zero_iff_eq + theorem vsub_left_cancel + theorem vsub_left_cancel_iff + theorem vsub_mem_vsub_set + theorem vsub_right_cancel + theorem vsub_right_cancel_iff + theorem vsub_self + def vsub_set + theorem vsub_set_empty + theorem vsub_set_finite_of_finite + theorem vsub_set_mono + theorem vsub_set_singleton + theorem vsub_sub_vsub_cancel_left + theorem vsub_sub_vsub_cancel_right + theorem vsub_vadd + theorem vsub_vadd_eq_vsub_sub + theorem zero_vadd Modified src/analysis/convex/basic.lean +/- theorem convex.affine_image +/- theorem convex.affine_preimage +/- theorem convex.combo_affine_apply +/- theorem convex_on.comp_affine_map Modified src/analysis/convex/extrema.lean Modified src/analysis/normed_space/add_torsor.lean - theorem add_torsor.dist_eq_norm + theorem dist_eq_norm_vsub +/- theorem dist_vadd_cancel_left +/- theorem dist_vadd_cancel_right +/- theorem isometric.coe_vadd_const +/- theorem isometric.coe_vadd_const_symm - theorem isometric.isometry_vadd_vsub_of_isometry +/- theorem isometric.vadd_const_to_equiv + theorem isometry.vadd_vsub Modified src/analysis/normed_space/mazur_ulam.lean +/- theorem isometric.coe_to_affine_map +/- def isometric.to_affine_map Modified src/geometry/euclidean.lean - def euclidean_affine_space +/- theorem euclidean_geometry.angle_add_angle_eq_pi_of_angle_eq_pi +/- theorem euclidean_geometry.angle_comm +/- theorem euclidean_geometry.angle_eq_angle_of_angle_eq_pi +/- theorem euclidean_geometry.angle_eq_left +/- theorem euclidean_geometry.angle_eq_of_ne +/- theorem euclidean_geometry.angle_eq_right +/- theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_left +/- theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_right +/- theorem euclidean_geometry.angle_le_pi +/- theorem euclidean_geometry.angle_nonneg +/- theorem euclidean_geometry.dist_eq_of_angle_eq_angle_of_angle_ne_pi +/- theorem euclidean_geometry.dist_orthogonal_projection_eq_zero_iff +/- theorem euclidean_geometry.dist_orthogonal_projection_ne_zero_of_not_mem +/- theorem euclidean_geometry.dist_square_smul_orthogonal_vadd_smul_orthogonal_vadd +/- theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection +/- theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection_fn +/- def euclidean_geometry.orthogonal_projection +/- theorem euclidean_geometry.orthogonal_projection_eq_self_iff +/- def euclidean_geometry.orthogonal_projection_fn +/- theorem euclidean_geometry.orthogonal_projection_fn_eq +/- theorem euclidean_geometry.orthogonal_projection_fn_mem +/- theorem euclidean_geometry.orthogonal_projection_fn_mem_orthogonal +/- theorem euclidean_geometry.orthogonal_projection_fn_vsub_mem_direction_orthogonal +/- theorem euclidean_geometry.orthogonal_projection_mem +/- theorem euclidean_geometry.orthogonal_projection_mem_orthogonal +/- theorem euclidean_geometry.orthogonal_projection_vadd_eq_self +/- theorem euclidean_geometry.orthogonal_projection_vadd_smul_vsub_orthogonal_projection +/- theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction +/- theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction_orthogonal +/- theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction +/- theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction_orthogonal Modified src/linear_algebra/affine_space/basic.lean +/- theorem affine_map.add_linear +/- theorem affine_map.affine_apply_line_map +/- theorem affine_map.affine_comp_line_map +/- theorem affine_map.coe_add +/- theorem affine_map.coe_comp +/- theorem affine_map.coe_const +/- theorem affine_map.coe_homothety_hom +/- theorem affine_map.coe_id +/- theorem affine_map.coe_mul +/- theorem affine_map.coe_one +/- theorem affine_map.coe_smul +/- theorem affine_map.coe_zero +/- def affine_map.comp +/- theorem affine_map.comp_apply +/- theorem affine_map.comp_assoc +/- theorem affine_map.comp_id +/- def affine_map.const +/- theorem affine_map.const_linear +/- theorem affine_map.decomp' +/- theorem affine_map.decomp +/- theorem affine_map.ext +/- theorem affine_map.ext_iff +/- def affine_map.homothety +/- def affine_map.homothety_affine +/- theorem affine_map.homothety_apply +/- def affine_map.homothety_hom +/- theorem affine_map.homothety_one +/- theorem affine_map.homothety_zero +/- def affine_map.id +/- theorem affine_map.id_apply +/- theorem affine_map.id_comp +/- theorem affine_map.id_linear +/- def affine_map.line_map +/- theorem affine_map.line_map_zero +/- theorem affine_map.linear_map_vsub +/- theorem affine_map.map_vadd +/- theorem affine_map.to_fun_eq_coe +/- theorem affine_map.vadd_apply +/- theorem affine_map.vsub_apply +/- theorem affine_map.zero_linear +/- structure affine_map - theorem affine_space.affine_span_nonempty - theorem affine_space.mem_span_points - def affine_space.span_points - theorem affine_space.span_points_nonempty - theorem affine_space.subset_span_points - theorem affine_space.vadd_mem_span_points_of_mem_span_points_of_mem_vector_span - def affine_space.vector_span - theorem affine_space.vector_span_def - theorem affine_space.vector_span_empty - theorem affine_space.vector_span_eq_span_vsub_set_left - theorem affine_space.vector_span_eq_span_vsub_set_right - theorem affine_space.vector_span_range_eq_span_range_vsub_left - theorem affine_space.vector_span_range_eq_span_range_vsub_right - theorem affine_space.vector_span_singleton - theorem affine_space.vsub_mem_vector_span - theorem affine_space.vsub_mem_vector_span_of_mem_span_points_of_mem_span_points - theorem affine_space.vsub_set_subset_vector_span - def affine_space +/- def affine_span + theorem affine_span_nonempty +/- theorem affine_subspace.affine_span_coe +/- theorem affine_subspace.affine_span_eq_Inf +/- theorem affine_subspace.bot_coe +/- theorem affine_subspace.coe_affine_span_singleton +/- theorem affine_subspace.coe_direction_eq_vsub_set +/- theorem affine_subspace.coe_direction_eq_vsub_set_left +/- theorem affine_subspace.coe_direction_eq_vsub_set_right +/- def affine_subspace.direction +/- theorem affine_subspace.direction_affine_span_insert +/- theorem affine_subspace.direction_bot +/- theorem affine_subspace.direction_eq_vector_span +/- theorem affine_subspace.direction_inf +/- theorem affine_subspace.direction_le +/- theorem affine_subspace.direction_lt_of_nonempty +/- def affine_subspace.direction_of_nonempty +/- theorem affine_subspace.direction_of_nonempty_eq_direction +/- theorem affine_subspace.direction_sup +/- theorem affine_subspace.direction_top +/- theorem affine_subspace.exists_of_lt +/- theorem affine_subspace.ext +/- theorem affine_subspace.ext_of_direction_eq +/- theorem affine_subspace.inf_coe +/- theorem affine_subspace.inter_eq_singleton_of_nonempty_of_is_compl +/- theorem affine_subspace.inter_nonempty_of_nonempty_of_sup_direction_eq_top +/- theorem affine_subspace.le_def' +/- theorem affine_subspace.le_def +/- theorem affine_subspace.lt_def +/- theorem affine_subspace.lt_iff_le_and_exists +/- theorem affine_subspace.mem_affine_span_insert_iff +/- theorem affine_subspace.mem_coe +/- theorem affine_subspace.mem_direction_iff_eq_vsub +/- theorem affine_subspace.mem_direction_iff_eq_vsub_left +/- theorem affine_subspace.mem_direction_iff_eq_vsub_right +/- theorem affine_subspace.mem_inf_iff +/- theorem affine_subspace.mem_top +/- def affine_subspace.mk' +/- theorem affine_subspace.mk'_eq +/- theorem affine_subspace.not_le_iff_exists +/- theorem affine_subspace.not_mem_bot +/- theorem affine_subspace.span_empty +/- theorem affine_subspace.span_points_subset_coe_of_subset_coe +/- theorem affine_subspace.span_union +/- theorem affine_subspace.span_univ +/- theorem affine_subspace.sup_direction_le +/- theorem affine_subspace.sup_direction_lt_of_nonempty_of_inter_empty +/- theorem affine_subspace.top_coe +/- theorem affine_subspace.vadd_mem_of_mem_direction +/- theorem affine_subspace.vsub_left_mem_direction_iff_mem +/- theorem affine_subspace.vsub_mem_direction +/- theorem affine_subspace.vsub_right_mem_direction_iff_mem +/- structure affine_subspace +/- theorem direction_affine_span +/- def linear_map.to_affine_map +/- theorem mem_affine_span + theorem mem_span_points + def span_points + theorem span_points_nonempty + theorem subset_span_points + theorem vadd_mem_span_points_of_mem_span_points_of_mem_vector_span + def vector_span + theorem vector_span_def + theorem vector_span_empty + theorem vector_span_eq_span_vsub_set_left + theorem vector_span_eq_span_vsub_set_right + theorem vector_span_range_eq_span_range_vsub_left + theorem vector_span_range_eq_span_range_vsub_right + theorem vector_span_singleton + theorem vsub_mem_vector_span + theorem vsub_mem_vector_span_of_mem_span_points_of_mem_span_points + theorem vsub_set_subset_vector_span Modified src/linear_algebra/affine_space/combination.lean + theorem affine_combination_mem_affine_span +/- def affine_map.weighted_vsub_of_point - theorem affine_space.affine_combination_mem_affine_span - theorem affine_space.eq_affine_combination_of_mem_affine_span - theorem affine_space.mem_affine_span_iff_eq_affine_combination - theorem affine_space.mem_vector_span_iff_eq_weighted_vsub - theorem affine_space.weighted_vsub_mem_vector_span + theorem eq_affine_combination_of_mem_affine_span + theorem mem_affine_span_iff_eq_affine_combination + theorem mem_vector_span_iff_eq_weighted_vsub + theorem weighted_vsub_mem_vector_span Modified src/linear_algebra/affine_space/finite_dimensional.lean - theorem affine_space.finite_dimensional_direction_affine_span_of_finite - theorem affine_space.finite_dimensional_vector_span_of_finite + theorem finite_dimensional_direction_affine_span_of_finite + theorem finite_dimensional_vector_span_of_finite Modified src/linear_algebra/affine_space/independent.lean + theorem affine.simplex.ext + theorem affine.simplex.ext_iff + def affine.simplex.face + theorem affine.simplex.face_eq_mk_of_point + theorem affine.simplex.face_points + def affine.simplex.mk_of_point + theorem affine.simplex.mk_of_point_points + structure affine.simplex + def affine.triangle - theorem affine_space.simplex.ext - theorem affine_space.simplex.ext_iff - def affine_space.simplex.face - theorem affine_space.simplex.face_eq_mk_of_point - theorem affine_space.simplex.face_points - def affine_space.simplex.mk_of_point - theorem affine_space.simplex.mk_of_point_points - structure affine_space.simplex - def affine_space.triangle Modified src/topology/algebra/affine.lean +/- theorem affine_map.continuous_iff 2020-08-15 10:36:54 2b8ece6 feat(data/nat/basic): one mod two or higher is one (#3763) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.one_mod 2020-08-15 10:09:19 c444a00 Revert "chore(ring_theory): delete `is_algebra_tower`" This reverts commit c956ce1516ccfb3139ae3ebde7ede9c678d81968. ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/tower.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_tower.lean + theorem is_algebra_tower.aeval_apply + theorem is_algebra_tower.algebra.ext + theorem is_algebra_tower.algebra_map_apply + theorem is_algebra_tower.algebra_map_eq + theorem is_algebra_tower.algebra_map_smul + theorem is_algebra_tower.comap_eq + theorem is_algebra_tower.of_algebra_map_eq + theorem is_algebra_tower.range_under_adjoin + def is_algebra_tower.restrict_base + theorem is_algebra_tower.restrict_base_apply + theorem is_algebra_tower.smul_left_comm + def is_algebra_tower.to_alg_hom + theorem is_algebra_tower.to_alg_hom_apply + def is_algebra_tower - theorem is_scalar_tower.aeval_apply - theorem is_scalar_tower.algebra.ext - theorem is_scalar_tower.algebra_comap_eq - theorem is_scalar_tower.algebra_map_apply - theorem is_scalar_tower.algebra_map_eq - theorem is_scalar_tower.algebra_map_smul - theorem is_scalar_tower.of_algebra_map_eq - theorem is_scalar_tower.range_under_adjoin - def is_scalar_tower.restrict_base - theorem is_scalar_tower.restrict_base_apply - theorem is_scalar_tower.smul_left_comm - def is_scalar_tower.to_alg_hom - theorem is_scalar_tower.to_alg_hom_apply Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean + theorem is_integral_of_is_algebra_tower - theorem is_integral_of_is_scalar_tower Modified src/ring_theory/localization.lean +/- theorem fraction_map.comap_is_algebraic_iff 2020-08-15 10:05:13 c956ce1 chore(ring_theory): delete `is_algebra_tower` Delete the abbreviation `is_algebra_tower` for `is_scalar_tower`, and replace all references (including the usages of the `is_algebra_tower` namespace) with `is_scalar_tower`. Documentation should also have been updated accordingly. This change was requested in a comment on #3717. ESTIMATED CHANGES Modified src/field_theory/algebraic_closure.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/tower.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_tower.lean - theorem is_algebra_tower.aeval_apply - theorem is_algebra_tower.algebra.ext - theorem is_algebra_tower.algebra_map_apply - theorem is_algebra_tower.algebra_map_eq - theorem is_algebra_tower.algebra_map_smul - theorem is_algebra_tower.comap_eq - theorem is_algebra_tower.of_algebra_map_eq - theorem is_algebra_tower.range_under_adjoin - def is_algebra_tower.restrict_base - theorem is_algebra_tower.restrict_base_apply - theorem is_algebra_tower.smul_left_comm - def is_algebra_tower.to_alg_hom - theorem is_algebra_tower.to_alg_hom_apply - def is_algebra_tower + theorem is_scalar_tower.aeval_apply + theorem is_scalar_tower.algebra.ext + theorem is_scalar_tower.algebra_comap_eq + theorem is_scalar_tower.algebra_map_apply + theorem is_scalar_tower.algebra_map_eq + theorem is_scalar_tower.algebra_map_smul + theorem is_scalar_tower.of_algebra_map_eq + theorem is_scalar_tower.range_under_adjoin + def is_scalar_tower.restrict_base + theorem is_scalar_tower.restrict_base_apply + theorem is_scalar_tower.smul_left_comm + def is_scalar_tower.to_alg_hom + theorem is_scalar_tower.to_alg_hom_apply Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean - theorem is_integral_of_is_algebra_tower + theorem is_integral_of_is_scalar_tower Modified src/ring_theory/localization.lean +/- theorem fraction_map.comap_is_algebraic_iff 2020-08-15 08:45:27 67dad7f feat(control/equiv_functor): fintype instance (#3783) Requested at https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/fintype.2Eequiv_congr/near/206773279 ESTIMATED CHANGES Modified src/control/equiv_functor/instances.lean 2020-08-15 07:22:35 b670212 fix(tactic/apply): fix ordering of goals produced by `apply` (#3777) ESTIMATED CHANGES Modified src/tactic/apply.lean Modified test/apply.lean 2020-08-15 07:22:33 c1a5283 refactor(data/list/tfae): tfae.out (#3774) This version of `tfae.out` has slightly better automatic reduction behavior: if `h : [a, b, c].tfae` then the original of `h.out 1 2` proves `[a, b, c].nth_le 1 _ <-> [a, b, c].nth_le 2 _` while the new version of `h.out 1 2` proves `b <-> c`. These are the same, of course, and you can mostly use them interchangeably, but the second one is a bit nicer to look at (and possibly works better with e.g. subsequent rewrites). ESTIMATED CHANGES Modified src/data/list/tfae.lean +/- theorem list.tfae.out 2020-08-15 06:35:10 55f4926 fix(algebra/archimedean): switch to a more natural and general condition in exists_nat_pow_near (#3782) per discussion at https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Starting.20to.20contribute.20to.20mathlib/near/206945824 ESTIMATED CHANGES Modified src/algebra/archimedean.lean +/- theorem exists_nat_pow_near 2020-08-14 17:00:08 3ae44bd fix(tactic/equiv_rw): fix problem with stuck universe metavariables (#3773) ESTIMATED CHANGES Modified src/tactic/equiv_rw.lean Modified test/equiv_rw.lean 2020-08-14 15:47:08 c252800 chore(*): use notation for `filter.prod` (#3768) Also change from `∀ v w ∈ V` to `∀ (v ∈ V) (w ∈ V)` in `exists_nhds_split_inv`, `exists_nhds_half_neg`, `add_group_with_zero_nhd.exists_Z_half`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/order/filter/bases.lean + theorem filter.mem_prod_self_iff Modified src/order/filter/basic.lean +/- theorem filter.prod_eq Modified src/order/filter/lift.lean +/- theorem filter.prod_def +/- theorem filter.prod_same_eq Modified src/topology/algebra/group.lean +/- theorem add_group_with_zero_nhd.add_Z +/- theorem add_group_with_zero_nhd.exists_Z_half Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/constructions.lean +/- theorem nhds_prod_eq Modified src/topology/continuous_on.lean Modified src/topology/list.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean +/- def cauchy Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-08-14 12:28:48 0e5f44b chore(*): assorted lemmas for FTC-1 (#3755) Lemmas from FTC-1 (`has_strict_deriv` version) #3709 ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_o.add_add Modified src/data/set/basic.lean + theorem set.forall_prod_set +/- theorem set.mem_powerset_iff + theorem set.monotone_powerset + theorem set.powerset_empty + theorem set.powerset_inter +/- theorem set.powerset_mono +/- theorem set.powerset_nonempty Modified src/data/set/intervals/disjoint.lean +/- theorem set.Ico_disjoint_Ico +/- theorem set.Ico_disjoint_Ico_same + theorem set.Iic_disjoint_Ioc + theorem set.Iic_disjoint_Ioi +/- theorem set.Ioc_disjoint_Ioc +/- theorem set.Ioc_disjoint_Ioc_same Modified src/data/set/intervals/ord_connected.lean + theorem set.ord_connected_singleton Modified src/order/filter/basic.lean + theorem filter.comap_pure + theorem filter.eventually_pure + theorem filter.principal_singleton - theorem filter.pure_eq_principal + theorem filter.pure_le_iff + theorem filter.tendsto_iff_eventually +/- theorem filter.tendsto_infi +/- theorem filter.tendsto_principal +/- theorem filter.tendsto_principal_principal +/- theorem filter.tendsto_pure + theorem filter.tendsto_pure_left Modified src/order/filter/lift.lean + theorem filter.lift'_bot + theorem filter.lift'_inf + theorem filter.lift'_inf_powerset + theorem filter.lift'_pure + theorem filter.tendsto_lift'_powerset_mono Modified src/topology/continuous_on.lean + theorem pure_le_nhds_within 2020-08-14 00:40:06 b611c5f chore(scripts): update nolints.txt (#3771) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-13 19:36:34 32c6a73 feat(ci): auto label merge conflicts, try 2 (#3766) ESTIMATED CHANGES Modified .github/workflows/merge_conflicts.yml 2020-08-13 19:36:32 627b431 feat(tactic/find_unused): find the dead code in a module (#3701) ESTIMATED CHANGES Modified src/tactic/core.lean Added src/tactic/find_unused.lean Added test/find_unused_decl1.lean + def main_thing + def this_is_unused Added test/find_unused_decl2.lean + def my_list + def other_val + def some_val + def unused1 + inductive unused_type + def used_somewhere_else 2020-08-13 19:36:30 28dfad8 feat(ideals,submonoids,subgroups): mem_sup(r) and mem_inf(i) lemmas (#3697) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.mem_Sup_of_mem + theorem subgroup.mem_sup_left + theorem subgroup.mem_sup_right + theorem subgroup.mem_supr_of_mem Modified src/group_theory/submonoid/membership.lean + theorem submonoid.mem_Sup_of_mem + theorem submonoid.mem_sup_left + theorem submonoid.mem_sup_right + theorem submonoid.mem_supr_of_mem Modified src/linear_algebra/basic.lean + theorem submodule.mem_Sup_of_mem + theorem submodule.mem_sup_left + theorem submodule.mem_sup_right +/- theorem submodule.mem_supr_of_mem Modified src/linear_algebra/finsupp.lean Modified src/ring_theory/ideal/basic.lean + theorem ideal.mem_Sup_of_mem + theorem ideal.mem_inf + theorem ideal.mem_infi + theorem ideal.mem_sup_left + theorem ideal.mem_sup_right + theorem ideal.mem_supr_of_mem 2020-08-13 18:09:00 4cc094b chore(data/int/basic): norm_cast attribute on int.coe_nat_mod (#3765) ESTIMATED CHANGES Modified src/data/int/basic.lean +/- theorem int.coe_nat_mod 2020-08-13 14:29:54 c66ecd3 feat(intervals/image_preimage): preimage under multiplication (#3757) Add lemmas `preimage_mul_const_Ixx` and `preimage_const_mul_Ixx`. Also generalize `equiv.mul_left` and `equiv.mul_right` to `units`. ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem lt_div_iff_of_neg Modified src/data/equiv/mul_add.lean +/- def to_units + theorem units.coe_mul_left + theorem units.coe_mul_right + def units.mul_left + theorem units.mul_left_symm + def units.mul_right + theorem units.mul_right_symm Modified src/data/set/intervals/image_preimage.lean + theorem set.preimage_const_mul_Icc + theorem set.preimage_const_mul_Icc_of_neg + theorem set.preimage_const_mul_Ici + theorem set.preimage_const_mul_Ici_of_neg + theorem set.preimage_const_mul_Ico + theorem set.preimage_const_mul_Ico_of_neg + theorem set.preimage_const_mul_Iic + theorem set.preimage_const_mul_Iic_of_neg + theorem set.preimage_const_mul_Iio + theorem set.preimage_const_mul_Iio_of_neg + theorem set.preimage_const_mul_Ioc + theorem set.preimage_const_mul_Ioc_of_neg + theorem set.preimage_const_mul_Ioi + theorem set.preimage_const_mul_Ioi_of_neg + theorem set.preimage_const_mul_Ioo + theorem set.preimage_const_mul_Ioo_of_neg + theorem set.preimage_mul_const_Icc + theorem set.preimage_mul_const_Icc_of_neg + theorem set.preimage_mul_const_Ici + theorem set.preimage_mul_const_Ici_of_neg + theorem set.preimage_mul_const_Ico + theorem set.preimage_mul_const_Ico_of_neg + theorem set.preimage_mul_const_Iic + theorem set.preimage_mul_const_Iic_of_neg + theorem set.preimage_mul_const_Iio + theorem set.preimage_mul_const_Iio_of_neg + theorem set.preimage_mul_const_Ioc + theorem set.preimage_mul_const_Ioc_of_neg + theorem set.preimage_mul_const_Ioi + theorem set.preimage_mul_const_Ioi_of_neg + theorem set.preimage_mul_const_Ioo + theorem set.preimage_mul_const_Ioo_of_neg Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/group_theory/group_action.lean 2020-08-13 12:59:37 f912f18 feat(ci): auto label merge conflicts (#3761) ESTIMATED CHANGES Added .github/workflows/merge_conflicts.yml 2020-08-13 12:59:35 34352c2 refactor(algebra/associated): change several instances from [integral_domain] to [comm_cancel_monoid_with_zero] (#3744) defines `comm_cancel_monoid_with_zero` replaces some `integral_domain` instances with `comm_cancel_monoid_with_zero` prepares the API for refactoring `normalization_domain`, `gcd_domain`, and `unique_factorization_domain` to monoids ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associated_mul_left_cancel +/- theorem associated_mul_right_cancel +/- theorem associates.prod_eq_zero_iff +/- theorem dvd_and_not_dvd_iff +/- theorem exists_associated_mem_of_dvd_prod +/- theorem irreducible_of_prime +/- theorem pow_dvd_pow_iff +/- theorem succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul Modified src/algebra/divisibility.lean + theorem mul_dvd_mul_iff_right Modified src/algebra/group_with_zero.lean Modified src/algebra/ring/basic.lean - theorem mul_dvd_mul_iff_right 2020-08-13 12:59:33 2c4300b feat(data/polynomial): adds map_comp (#3736) Adds lemma saying that the map of the composition of two polynomials is the composition of the maps, as mentioned [here](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Polynomial.20composition.20and.20map.20commute). ESTIMATED CHANGES Modified src/algebra/big_operators/basic.lean + theorem finset.prod_subset_one_on_sdiff Modified src/data/polynomial/eval.lean + theorem polynomial.map_comp + theorem polynomial.map_sum + theorem polynomial.support_map_subset 2020-08-13 11:32:00 ac2f011 feat(data/*): Add sizeof lemmas. (#3745) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.sizeof_lt_sizeof_of_mem Modified src/data/list/basic.lean + theorem list.sizeof_lt_sizeof_of_mem Modified src/data/list/perm.lean + theorem list.perm.sizeof_eq_sizeof Modified src/data/multiset/basic.lean + theorem multiset.sizeof_lt_sizeof_of_mem 2020-08-13 11:01:00 b1e56a2 feat(analysis/special_functions/trigonometric): Added lemma cos_ne_zero_iff (#3743) I added the theorem `cos_ne_zero_iff`, a corollary to the preexisting theorem `cos_eq_zero_iff` ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem real.cos_ne_zero_iff 2020-08-13 09:23:02 ced7469 chore(data/finset/order): use `[nonempty]` in `directed.finset_le` (#3759) ESTIMATED CHANGES Modified src/data/finset/order.lean Modified src/linear_algebra/basis.lean Modified src/topology/subset_properties.lean 2020-08-13 09:23:00 4c24a09 chore(data/fintype/card): add `prod_bool` (#3758) ESTIMATED CHANGES Modified src/data/fintype/card.lean + theorem fintype.prod_bool Modified src/topology/algebra/infinite_sum.lean 2020-08-13 09:22:58 31a0258 chore(data/fintype/card): DRY using `@... (multiplicative _)` (#3756) ESTIMATED CHANGES Modified src/data/fintype/card.lean 2020-08-13 09:22:56 cc6528e feat(analysis/calculus/fderiv): multiplication by a complex respects real differentiability (#3731) If `f` takes values in a complex vector space and is real-differentiable, then `c f` is also real-differentiable when `c` is a complex number. This PR proves this fact and the obvious variations, in the general case of two fields where one is a normed algebra over the other one. Along the way, some material on `module.restrict_scalars` is added, notably in a normed space context. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem differentiable.const_smul_algebra + theorem differentiable.smul_algebra + theorem differentiable.smul_algebra_const + theorem differentiable_at.const_smul_algebra + theorem differentiable_at.smul_algebra + theorem differentiable_at.smul_algebra_const + theorem differentiable_on.const_smul_algebra + theorem differentiable_on.smul_algebra + theorem differentiable_on.smul_algebra_const + theorem differentiable_within_at.const_smul_algebra + theorem differentiable_within_at.smul_algebra + theorem differentiable_within_at.smul_algebra_const + theorem fderiv_const_smul_algebra + theorem fderiv_smul_algebra + theorem fderiv_smul_algebra_const + theorem fderiv_within_const_smul_algebra + theorem fderiv_within_smul_algebra + theorem fderiv_within_smul_algebra_const + theorem has_fderiv_at.const_smul_algebra + theorem has_fderiv_at.smul_algebra + theorem has_fderiv_at.smul_algebra_const + theorem has_fderiv_at_filter.const_smul_algebra + theorem has_fderiv_within_at.const_smul_algebra + theorem has_fderiv_within_at.smul_algebra + theorem has_fderiv_within_at.smul_algebra_const + theorem has_strict_fderiv_at.const_smul_algebra + theorem has_strict_fderiv_at.smul_algebra + theorem has_strict_fderiv_at.smul_algebra_const Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/basic.lean + def normed_space.restrict_scalars' - def normed_space.restrict_scalars Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_bilinear_map_smul_algebra Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_map.has_sum +/- theorem continuous_linear_map.has_sum_of_summable +/- def continuous_linear_map.restrict_scalars + def continuous_linear_map.smul_algebra_right + theorem continuous_linear_map.smul_algebra_right_apply Modified src/data/complex/module.lean Modified src/ring_theory/algebra.lean + def smul_algebra_right + theorem smul_algebra_right_apply + theorem smul_algebra_smul + theorem smul_algebra_smul_comm 2020-08-13 09:22:52 cfcbea6 feat(data/list/palindrome): define palindromes (#3729) This introduces an inductive type `palindrome`, with conversions to and from the proposition `reverse l = l`. Review of this PR indicates two things: (1) maybe the name `is_palindrome` is better, especially if we define the subtype of palindromic lists; (2) maybe defining palindrome by `reverse l = l` is simpler. We note these for future development. ESTIMATED CHANGES Added src/data/list/palindrome.lean + theorem palindrome.append_reverse + theorem palindrome.iff_reverse_eq + theorem palindrome.of_reverse_eq + theorem palindrome.reverse_eq + inductive palindrome 2020-08-13 07:52:35 c503b7a feat(algebra/order): more lemmas for projection notation (#3753) Also import `tactic.lint` and ensure that the linter passes Move `ge_of_eq` to this file ESTIMATED CHANGES Modified src/algebra/order.lean + theorem eq.trans_le +/- theorem ge_iff_le + theorem ge_of_eq +/- theorem gt_iff_lt + theorem has_le.le.trans_eq +/- theorem le_implies_le_of_le_of_le + theorem le_rfl Modified src/order/basic.lean - theorem ge_of_eq Modified src/order/filter/germ.lean 2020-08-13 06:22:20 6c8b2cd fix(algebra/field) remove `one_div_eq_inv` (#3749) It already existed as `one_div` for `group_with_zero` Also make `one_div` a `simp` lemma and renamed `nnreal.one_div_eq_inv` to `nnreal.one_div`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/field.lean - theorem one_div_eq_inv Modified src/algebra/field_power.lean Modified src/algebra/group_with_zero.lean +/- theorem one_div +/- theorem one_div_one_div Modified src/algebra/ordered_field.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/convex/basic.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/nat/cast.lean Modified src/data/real/conjugate_exponents.lean Modified src/data/real/hyperreal.lean Modified src/data/real/nnreal.lean + theorem nnreal.one_div - theorem nnreal.one_div_eq_inv Modified src/measure_theory/simple_func_dense.lean Modified src/tactic/interactive.lean Modified src/tactic/norm_num.lean Modified src/topology/metric_space/pi_Lp.lean 2020-08-13 01:10:43 d6ffc1a feat(tactic/clear_value): preserve order and naming (#3700) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified test/tactics.lean 2020-08-13 00:42:53 cacb54e chore(scripts): update nolints.txt (#3754) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-12 23:09:20 486830b feat(tactic/choose): `choose` can now decompose conjunctions (#3699) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified test/choose.lean 2020-08-12 20:04:21 f8c8135 feat(tactic/rcases): type ascriptions in rcases (#3730) This is a general rewrite of the `rcases` tactic, with the primary intent of adding support for type ascriptions in `rcases` patterns but it also includes a bunch more documentation, as well as making the grammar simpler, avoiding the strict tuple/alts alternations required by the previous `many` constructor (and the need for `rcases_patt_inverted` for whether the constructor means `tuple` of `alts` or `alts` of `tuple`). From a user perspective, it should not be noticeably different, except: * You can now use parentheses freely in patterns, so things like `a | (b | c)` work * You can use type ascriptions The new `rcases` is backward compatible with the old one, except that `rcases e with a` (where `a` is a name) no longer does any cases and is basically just another way to write `have a := e`; to get the same effect as `cases e with a` you have to write `rcases e with ⟨a⟩` instead. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean Modified src/data/nat/digits.lean Modified src/data/pnat/factors.lean Modified src/tactic/ext.lean Modified src/tactic/lift.lean Modified src/tactic/rcases.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean Modified test/rcases.lean 2020-08-12 16:33:24 4324778 feat(.): add code of conduct (#3747) ESTIMATED CHANGES Added CODE_OF_CONDUCT.md 2020-08-12 15:04:27 eb4b2a0 feat(field_theory/algebraic_closure): algebraic closure (#3733) ```lean instance : is_alg_closed (algebraic_closure k) := ``` TODO: Show that any algebraic extension embeds into any algebraically closed extension (via Zorn's lemma). ESTIMATED CHANGES Modified src/algebra/direct_limit.lean + theorem ring.direct_limit.polynomial.exists_of Modified src/data/mv_polynomial.lean + theorem mv_polynomial.algebra_map_eq Modified src/data/polynomial/field_division.lean + theorem polynomial.degree_pos_of_irreducible + theorem polynomial.monic_map_iff + theorem polynomial.not_irreducible_C Modified src/data/real/ennreal.lean Added src/field_theory/algebraic_closure.lean + theorem algebraic_closure.adjoin_monic.algebra_map + theorem algebraic_closure.adjoin_monic.exists_root + theorem algebraic_closure.adjoin_monic.is_integral + def algebraic_closure.adjoin_monic + theorem algebraic_closure.coe_to_step_of_le + def algebraic_closure.eval_X_self + theorem algebraic_closure.exists_of_step + theorem algebraic_closure.exists_root + theorem algebraic_closure.is_algebraic + theorem algebraic_closure.le_max_ideal + def algebraic_closure.max_ideal + def algebraic_closure.monic_irreducible + def algebraic_closure.of_step + def algebraic_closure.of_step_hom + theorem algebraic_closure.of_step_succ + def algebraic_closure.span_eval + theorem algebraic_closure.span_eval_ne_top + theorem algebraic_closure.step.is_integral + def algebraic_closure.step + def algebraic_closure.step_aux + def algebraic_closure.to_adjoin_monic + def algebraic_closure.to_splitting_field + theorem algebraic_closure.to_splitting_field_eval_X_self + def algebraic_closure.to_step_of_le + theorem algebraic_closure.to_step_succ.exists_root + def algebraic_closure.to_step_succ + def algebraic_closure.to_step_zero + def algebraic_closure + theorem is_alg_closed.of_exists_root + def is_alg_closure + theorem polynomial.splits' Modified src/field_theory/splitting_field.lean + theorem polynomial.map_root_of_splits + def polynomial.root_of_splits + theorem polynomial.splits_of_is_unit Modified src/order/directed.lean Modified src/ring_theory/algebra.lean +/- theorem alg_hom.comp_algebra_map Modified src/ring_theory/valuation/basic.lean 2020-08-12 10:41:14 bfcf640 feat(topology/opens): open_embedding_of_le (#3597) Add `lemma open_embedding_of_le {U V : opens α} (i : U ≤ V) : open_embedding (set.inclusion i)`. Also, I was finding it quite inconvenient to have `x ∈ U` for `U : opens X` being unrelated to `x ∈ (U : set X)`. I propose we just add the simp lemmas in this PR that unfold to the set-level membership operation. (I'd be happy to go the other way if someone has a strong opinion here; just that we pick a simp normal form for talking about membership and inclusion of opens.) ESTIMATED CHANGES Modified src/topology/opens.lean + theorem topological_space.opens.mem_coe + theorem topological_space.opens.mem_supr + theorem topological_space.opens.open_embedding_of_le + theorem topological_space.opens.subset_coe + theorem topological_space.opens.supr_s 2020-08-11 15:31:36 06e1405 docs(category/default): Fix typo for monomorphism (#3741) ESTIMATED CHANGES Modified src/category_theory/category/default.lean 2020-08-11 09:57:43 f92fd0d refactor(algebra/divisibility, associated): generalize instances in divisibility, associated (#3714) generalizes the divisibility relation to noncommutative monoids adds missing headers to algebra/divisibility generalizes the instances in many of the lemmas in algebra/associated reunites (some of the) divisibility API for ordinals with general monoids ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associated_of_dvd_dvd +/- theorem dvd_dvd_iff_associated +/- theorem dvd_dvd_of_associated +/- theorem dvd_iff_dvd_of_rel_left - theorem dvd_mul_unit_iff +/- theorem dvd_of_associated +/- theorem dvd_symm_iff_of_irreducible +/- theorem dvd_symm_of_irreducible +/- theorem exists_mem_multiset_dvd_of_prime +/- theorem irreducible.ne_zero +/- theorem is_unit_iff_dvd_one +/- theorem is_unit_iff_forall_dvd +/- theorem is_unit_of_dvd_one +/- theorem is_unit_of_dvd_unit - theorem mul_dvd_of_is_unit_left - theorem mul_dvd_of_is_unit_right - theorem mul_unit_dvd_iff +/- theorem not_irreducible_zero +/- theorem not_prime_one +/- theorem not_prime_zero +/- theorem prime.div_or_div +/- theorem prime.dvd_of_dvd_pow +/- theorem prime.ne_zero +/- theorem prime.not_unit +/- def prime - theorem unit_mul_dvd_iff Modified src/algebra/divisibility.lean +/- theorem dvd_mul_left + theorem is_unit.dvd + theorem is_unit.dvd_mul_left + theorem is_unit.dvd_mul_right + theorem is_unit.mul_left_dvd + theorem is_unit.mul_right_dvd + theorem mul_dvd_mul_iff_left +/- theorem one_dvd + theorem units.coe_dvd + theorem units.dvd_mul_left + theorem units.dvd_mul_right + theorem units.mul_left_dvd + theorem units.mul_right_dvd Modified src/algebra/gcd_domain.lean Modified src/algebra/group_power.lean +/- theorem pow_dvd_pow +/- theorem pow_dvd_pow_of_dvd +/- theorem pow_eq_zero +/- theorem pow_ne_zero +/- theorem zero_pow Modified src/algebra/group_with_zero.lean Modified src/algebra/ring/basic.lean - theorem is_unit.mul_left_dvd_of_dvd - theorem is_unit.mul_right_dvd_of_dvd - theorem mul_dvd_mul_iff_left +/- theorem two_dvd_bit1 - theorem units.coe_dvd - theorem units.coe_mul_dvd - theorem units.coe_ne_zero - theorem units.dvd_coe - theorem units.dvd_coe_mul Modified src/analysis/normed_space/basic.lean Modified src/data/equiv/ring.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/ring_division.lean Modified src/field_theory/separable.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/ring_theory/ideal/basic.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/polynomial/rational_root.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/set_theory/ordinal_arithmetic.lean - theorem ordinal.dvd_def - theorem ordinal.dvd_mul - theorem ordinal.dvd_mul_of_dvd - theorem ordinal.dvd_trans Modified src/set_theory/ordinal_notation.lean 2020-08-11 07:24:07 57df7f5 feat(haar_measure): define the Haar measure (#3542) Define the Haar measure on a locally compact Hausdorff group. Some additions and simplifications to outer_measure and content. ESTIMATED CHANGES Modified docs/references.bib Modified src/measure_theory/content.lean + theorem measure_theory.inner_content_comap + theorem measure_theory.outer_measure.is_left_invariant_of_content + theorem measure_theory.outer_measure.of_content_caratheodory + theorem measure_theory.outer_measure.of_content_eq_infi + theorem measure_theory.outer_measure.of_content_preimage Added src/measure_theory/haar_measure.lean + theorem measure_theory.measure.chaar_le_haar_outer_measure + def measure_theory.measure.haar.chaar + theorem measure_theory.measure.haar.chaar_empty + theorem measure_theory.measure.haar.chaar_mem_cl_prehaar + theorem measure_theory.measure.haar.chaar_mem_haar_product + theorem measure_theory.measure.haar.chaar_mono + theorem measure_theory.measure.haar.chaar_nonneg + theorem measure_theory.measure.haar.chaar_self + theorem measure_theory.measure.haar.chaar_sup_eq + theorem measure_theory.measure.haar.chaar_sup_le + def measure_theory.measure.haar.cl_prehaar + def measure_theory.measure.haar.echaar + theorem measure_theory.measure.haar.echaar_mono + theorem measure_theory.measure.haar.echaar_sup_le + def measure_theory.measure.haar.haar_product + def measure_theory.measure.haar.index + theorem measure_theory.measure.haar.index_defined + theorem measure_theory.measure.haar.index_elim + theorem measure_theory.measure.haar.index_empty + theorem measure_theory.measure.haar.index_mono + theorem measure_theory.measure.haar.index_pos + theorem measure_theory.measure.haar.index_union_eq + theorem measure_theory.measure.haar.index_union_le + theorem measure_theory.measure.haar.is_left_invariant_chaar + theorem measure_theory.measure.haar.is_left_invariant_index + theorem measure_theory.measure.haar.is_left_invariant_prehaar + theorem measure_theory.measure.haar.le_index_mul + theorem measure_theory.measure.haar.mem_prehaar_empty + theorem measure_theory.measure.haar.mul_left_index_le + theorem measure_theory.measure.haar.nonempty_Inter_cl_prehaar + def measure_theory.measure.haar.prehaar + theorem measure_theory.measure.haar.prehaar_empty + theorem measure_theory.measure.haar.prehaar_le_index + theorem measure_theory.measure.haar.prehaar_mem_haar_product + theorem measure_theory.measure.haar.prehaar_mono + theorem measure_theory.measure.haar.prehaar_nonneg + theorem measure_theory.measure.haar.prehaar_pos + theorem measure_theory.measure.haar.prehaar_self + theorem measure_theory.measure.haar.prehaar_sup_eq + theorem measure_theory.measure.haar.prehaar_sup_le + theorem measure_theory.measure.haar_caratheodory_measurable + def measure_theory.measure.haar_measure + theorem measure_theory.measure.haar_measure_apply + theorem measure_theory.measure.haar_measure_pos_of_is_open + theorem measure_theory.measure.haar_measure_self + def measure_theory.measure.haar_outer_measure + theorem measure_theory.measure.haar_outer_measure_caratheodory + theorem measure_theory.measure.haar_outer_measure_eq_infi + theorem measure_theory.measure.haar_outer_measure_exists_compact + theorem measure_theory.measure.haar_outer_measure_exists_open + theorem measure_theory.measure.haar_outer_measure_le_chaar + theorem measure_theory.measure.haar_outer_measure_lt_top_of_is_compact + theorem measure_theory.measure.haar_outer_measure_of_is_open + theorem measure_theory.measure.haar_outer_measure_pos_of_is_open + theorem measure_theory.measure.haar_outer_measure_self_pos + theorem measure_theory.measure.is_left_invariant_haar_measure + theorem measure_theory.measure.one_le_haar_outer_measure_self + theorem measure_theory.measure.regular_haar_measure Modified src/measure_theory/outer_measure.lean + theorem measure_theory.induced_outer_measure_preimage +/- theorem measure_theory.outer_measure.le_trim_iff Modified src/topology/subset_properties.lean + theorem is_compact.inter_Inter_nonempty 2020-08-11 00:42:24 43ceb3e chore(scripts): update nolints.txt (#3734) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-10 19:28:55 9e03995 chore(algebra/ordered_field): cleanup (#3723) * drop `mul_zero_lt_mul_inv_of_pos` and `mul_zero_lt_mul_inv_of_neg`; * add `iff` lemmas `one_div_pos/neg/nonneg/nonpos` replacing old implications; * some lemmas now assume `≤` instead of `<`; * rename `mul_lt_of_gt_div_of_neg` to `mul_lt_of_neg_of_div_lt` replacing `>` by `<`. * add `mul_sub_mul_div_mul_neg_iff` and `mul_sub_mul_div_mul_nonpos_iff`, generate implications using `alias`; * drop `div_pos_of_pos_of_pos` (use `div_pos`) and `div_nonneg_of_nonneg_of_pos` (use `div_nonneg`); * replace `div_nonpos_of_nonpos_of_pos` with `div_nonpos_of_nonpos_of_nonneg`; * replace `div_nonpos_of_nonneg_of_neg` with `div_nonpos_of_nonneg_of_nonpos`; * replace `div_mul_le_div_mul_of_div_le_div_pos` and `div_mul_le_div_mul_of_div_le_div_pos'` with `div_mul_le_div_mul_of_div_le_div_nonneg`; I failed to find in the history why we had two equivalent lemmas. * merge `le_mul_of_ge_one_right` and `le_mul_of_one_le_right'` into `le_mul_of_one_le_right`, rename old `le_mul_of_one_le_right` to `le_mul_of_one_le_right'`; * ditto with `le_mul_of_ge_one_left`, `le_mul_of_one_le_left`, and `le_mul_of_one_le_left'`; * ditto with `lt_mul_of_gt_one_right`, `lt_mul_of_one_lt_right`, and `lt_mul_of_one_lt_right'`; * rename `div_lt_of_mul_lt_of_pos` to `div_lt_of_pos_of_lt_mul`; * rename `div_lt_of_mul_gt_of_neg` to `div_lt_of_neg_of_mul_lt`; * rename `mul_le_of_div_le_of_neg` to `mul_le_of_neg_of_div_le`; * rename `div_le_of_mul_le_of_neg` to `div_le_of_neg_of_mul_le`; * rename `div_lt_div_of_lt_of_pos` to `div_lt_div_of_pos_of_lt`, swap arguments; * rename `div_le_div_of_le_of_pos` to `div_le_div_of_pos_of_le`, swap arguments; * rename `div_lt_div_of_lt_of_neg` to `div_lt_div_of_neg_of_lt`, swap arguments; * rename `div_le_div_of_le_of_neg` to `div_le_div_of_neg_of_le`, swap arguments; * rename `one_div_lt_one_div_of_lt_of_neg` to `one_div_lt_one_div_of_neg_of_lt`; * rename `one_div_le_one_div_of_le_of_neg` to `one_div_le_one_div_of_neg_of_le`; * rename `le_of_one_div_le_one_div_of_neg` to `le_of_neg_of_one_div_le_one_div`; * rename `lt_of_one_div_lt_one_div_of_neg` to `lt_of_neg_of_one_div_lt_one_div`; * rename `one_div_le_of_one_div_le_of_pos` to `one_div_le_of_pos_of_one_div_le`; * rename `one_div_le_of_one_div_le_of_neg` to `one_div_le_of_neg_of_one_div_le`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/group_with_zero.lean + theorem zero_eq_inv Modified src/algebra/ordered_field.lean - theorem div_le_div_of_le_of_neg - theorem div_le_div_of_le_of_pos - theorem div_le_div_of_mul_sub_mul_div_nonpos + theorem div_le_div_of_neg_of_le + theorem div_le_div_of_pos_of_le +/- theorem div_le_of_le_mul - theorem div_le_of_mul_le_of_neg + theorem div_le_of_neg_of_mul_le - theorem div_lt_div_of_lt_of_neg - theorem div_lt_div_of_lt_of_pos - theorem div_lt_div_of_mul_sub_mul_div_neg + theorem div_lt_div_of_neg_of_lt + theorem div_lt_div_of_pos_of_lt - theorem div_lt_of_mul_gt_of_neg - theorem div_lt_of_mul_lt_of_pos + theorem div_lt_of_neg_of_mul_lt + theorem div_lt_of_pos_of_lt_mul + theorem div_mul_le_div_mul_of_div_le_div_nonneg - theorem div_mul_le_div_mul_of_div_le_div_pos' - theorem div_mul_le_div_mul_of_div_le_div_pos +/- theorem div_neg_of_neg_of_pos +/- theorem div_neg_of_pos_of_neg - theorem div_nonneg' +/- theorem div_nonneg - theorem div_nonneg_of_nonneg_of_pos + theorem div_nonneg_of_nonpos - theorem div_nonneg_of_nonpos_of_neg - theorem div_nonpos_of_nonneg_of_neg + theorem div_nonpos_of_nonneg_of_nonpos + theorem div_nonpos_of_nonpos_of_nonneg - theorem div_nonpos_of_nonpos_of_pos +/- theorem div_pos +/- theorem div_pos_of_neg_of_neg - theorem div_pos_of_pos_of_pos +/- theorem div_two_lt_of_pos +/- theorem inv_lt_zero +/- theorem inv_pos +/- theorem le_mul_of_div_le - theorem le_mul_of_ge_one_left - theorem le_mul_of_ge_one_right + theorem le_of_neg_of_one_div_le_one_div - theorem le_of_one_div_le_one_div_of_neg +/- theorem le_of_one_le_div - theorem lt_mul_of_gt_one_right + theorem lt_of_neg_of_one_div_lt_one_div - theorem lt_of_one_div_lt_one_div_of_neg +/- theorem lt_of_one_lt_div +/- theorem mul_le_mul_of_mul_div_le - theorem mul_le_of_div_le_of_neg + theorem mul_le_of_neg_of_div_le - theorem mul_lt_of_gt_div_of_neg + theorem mul_lt_of_neg_of_div_lt - theorem mul_sub_mul_div_mul_neg + theorem mul_sub_mul_div_mul_neg_iff - theorem mul_sub_mul_div_mul_nonpos + theorem mul_sub_mul_div_mul_nonpos_iff - theorem mul_zero_lt_mul_inv_of_neg - theorem mul_zero_lt_mul_inv_of_pos - theorem neg_of_one_div_neg + theorem one_div_le_of_neg_of_one_div_le - theorem one_div_le_of_one_div_le_of_neg - theorem one_div_le_of_one_div_le_of_pos + theorem one_div_le_of_pos_of_one_div_le - theorem one_div_le_one_div_of_le_of_neg + theorem one_div_le_one_div_of_neg_of_le - theorem one_div_lt_one_div_of_lt_of_neg + theorem one_div_lt_one_div_of_neg_of_lt + theorem one_div_neg - theorem one_div_neg_of_neg + theorem one_div_nonneg + theorem one_div_nonpos + theorem one_div_pos - theorem one_div_pos_of_pos +/- theorem one_le_div_of_le +/- theorem one_lt_div_of_lt - theorem pos_of_one_div_pos Modified src/algebra/ordered_group.lean + theorem le_mul_of_one_le_left' - theorem le_mul_of_one_le_left + theorem le_mul_of_one_le_right' - theorem le_mul_of_one_le_right + theorem lt_mul_of_one_lt_left' - theorem lt_mul_of_one_lt_left + theorem lt_mul_of_one_lt_right' - theorem lt_mul_of_one_lt_right Modified src/algebra/ordered_ring.lean - theorem le_mul_of_one_le_left' + theorem le_mul_of_one_le_left - theorem le_mul_of_one_le_right' + theorem le_mul_of_one_le_right - theorem lt_mul_of_one_lt_right' + theorem lt_mul_of_one_lt_right Modified src/algebra/quadratic_discriminant.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/caratheodory.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/special_functions/pow.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/data/complex/exponential.lean Modified src/data/nat/modeq.lean Modified src/data/padics/hensel.lean Modified src/data/polynomial/div.lean Modified src/data/real/basic.lean Modified src/data/real/conjugate_exponents.lean Modified src/data/real/pi.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/tactic/cancel_denoms.lean Modified src/tactic/norm_num.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/pi_Lp.lean Modified src/topology/uniform_space/absolute_value.lean 2020-08-10 19:28:53 4a75df9 feat(group_theory/group_action): generalize `is_algebra_tower` (#3717) This PR introduces a new typeclass `is_scalar_tower R M N` stating that scalar multiplications between the three types are compatible: `smul_assoc : ((x : R) • (y : M)) • (z : N) = x • (y • z)`. This typeclass is the general form of `is_algebra_tower`. It also generalizes some of the existing instances of `is_algebra_tower`. I didn't try very hard though, so I might have missed some instances. Related Zulip discussions: * https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Effect.20of.20changing.20the.20base.20field.20on.20span * https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/pull.20back.20an.20R.20module.20along.20.60S.20-.3E.2B*.20R.60 ESTIMATED CHANGES Modified src/algebra/module/pi.lean Modified src/algebra/module/ulift.lean Modified src/group_theory/group_action.lean + theorem smul_assoc Modified src/ring_theory/algebra_tower.lean + def is_algebra_tower Modified src/ring_theory/ideal/operations.lean - theorem submodule.smul_assoc 2020-08-10 17:55:47 37e97b5 feat(tactic): fix two bugs with generalize' (#3710) The name generated by `generalize'` will be exactly the given name, even if the name already occurs in the context. There was a bug with `generalize' h : e = x` if `e` occurred in the goal. ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified test/tactics.lean 2020-08-10 15:19:08 4786136 feat(category_theory/limits): explicit isomorphisms between preserved limits (#3602) When `G` preserves limits, it's nice to be able to quickly obtain the iso `G.obj (pi_obj f) ≅ pi_obj (λ j, G.obj (f j))`. ESTIMATED CHANGES Modified src/algebra/category/Group/limits.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/over.lean Renamed src/category_theory/limits/preserves.lean to src/category_theory/limits/preserves/basic.lean Added src/category_theory/limits/preserves/shapes.lean + theorem map_lift_comp_preserves_products_iso_hom + def preserves_limits_iso + theorem preserves_limits_iso_hom_π + def preserves_products_iso + theorem preserves_products_iso_hom_π Modified src/category_theory/limits/shapes/constructions/preserve_binary_products.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/topology/category/Top/limits.lean 2020-08-10 12:46:02 5680428 chore(category_theory/limits): minor changes in equalizers and products (#3603) ESTIMATED CHANGES Modified src/algebra/category/Group/abelian.lean Modified src/algebra/category/Module/abelian.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/opposites.lean + def category_theory.limits.has_colimit_of_has_limit_left_op + def category_theory.limits.has_colimits_of_shape_op_of_has_limits_of_shape + def category_theory.limits.has_colimits_op_of_has_limits + def category_theory.limits.has_coproducts_opposite + def category_theory.limits.has_limit_of_has_colimit_left_op + def category_theory.limits.has_limits_of_shape_op_of_has_colimits_of_shape + def category_theory.limits.has_limits_op_of_has_colimits + def category_theory.limits.has_products_opposite Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.has_binary_coproducts + def category_theory.limits.has_binary_products Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/constructions/equalizers.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/constructions/over/default.lean Modified src/category_theory/limits/shapes/constructions/over/products.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.coequalizer.cofork + theorem category_theory.limits.coequalizer.cofork_ι_app_one + theorem category_theory.limits.coequalizer.cofork_π +/- def category_theory.limits.coequalizer.iso_target_of_self +/- theorem category_theory.limits.coequalizer.iso_target_of_self_hom +/- theorem category_theory.limits.coequalizer.iso_target_of_self_inv - theorem category_theory.limits.coequalizer.π.cofork - theorem category_theory.limits.coequalizer.π.eq_app_one +/- def category_theory.limits.coequalizer.π_of_eq +/- def category_theory.limits.coequalizer + def category_theory.limits.cofork.mk_hom + def category_theory.limits.equalizer.fork + theorem category_theory.limits.equalizer.fork_ι + theorem category_theory.limits.equalizer.fork_π_app_zero +/- def category_theory.limits.equalizer.iso_source_of_self +/- theorem category_theory.limits.equalizer.iso_source_of_self_hom +/- theorem category_theory.limits.equalizer.iso_source_of_self_inv - theorem category_theory.limits.equalizer.ι.eq_app_zero - theorem category_theory.limits.equalizer.ι.fork +/- def category_theory.limits.equalizer.ι_of_eq +/- def category_theory.limits.equalizer + def category_theory.limits.fork.mk_hom + def category_theory.limits.has_coequalizer + def category_theory.limits.has_coequalizers + def category_theory.limits.has_equalizer + def category_theory.limits.has_equalizers Modified src/category_theory/limits/shapes/finite_limits.lean - def category_theory.limits.has_coequalizers_of_has_finite_colimits - def category_theory.limits.has_equalizers_of_has_finite_limits + def category_theory.limits.has_finite_colimits + def category_theory.limits.has_finite_limits + def category_theory.limits.has_finite_wide_pullbacks + def category_theory.limits.has_finite_wide_pushouts - def category_theory.limits.has_pullbacks_of_has_finite_limits - def category_theory.limits.has_pushouts_of_has_finite_colimits Modified src/category_theory/limits/shapes/finite_products.lean + def category_theory.limits.has_finite_coproducts + def category_theory.limits.has_finite_coproducts_of_has_coproducts + def category_theory.limits.has_finite_products + def category_theory.limits.has_finite_products_of_has_products Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.has_coproducts + def category_theory.limits.has_products Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.has_pullback + def category_theory.limits.has_pullbacks + def category_theory.limits.has_pushout + def category_theory.limits.has_pushouts +/- theorem category_theory.limits.pullback.condition +/- def category_theory.limits.pullback.desc' +/- def category_theory.limits.pullback.fst +/- theorem category_theory.limits.pullback.hom_ext +/- def category_theory.limits.pullback.lift' +/- def category_theory.limits.pullback.lift +/- theorem category_theory.limits.pullback.lift_fst +/- theorem category_theory.limits.pullback.lift_snd +/- def category_theory.limits.pullback.snd +/- def category_theory.limits.pullback +/- theorem category_theory.limits.pushout.condition +/- def category_theory.limits.pushout.desc +/- theorem category_theory.limits.pushout.hom_ext +/- def category_theory.limits.pushout.inl +/- theorem category_theory.limits.pushout.inl_desc +/- def category_theory.limits.pushout.inr +/- theorem category_theory.limits.pushout.inr_desc +/- def category_theory.limits.pushout Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.has_initial + def category_theory.limits.has_terminal Modified src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.pi + theorem category_theory.limits.types.pi_lift + theorem category_theory.limits.types.pi_map + theorem category_theory.limits.types.pi_π +/- def category_theory.limits.types.types_has_products Modified src/category_theory/limits/shapes/wide_pullbacks.lean + def category_theory.limits.has_wide_pullbacks + def category_theory.limits.has_wide_pushouts 2020-08-09 01:11:07 17ef529 refactor(linear_algebra/affine_space): split up file (#3726) `linear_algebra/affine_space.lean` was the 10th largest `.lean` file in mathlib. Move it to `linear_algebra/affine_space/basic.lean` and split out some pieces into separate files, so reducing its size to 41st largest as well as reducing dependencies for users not needing all those files. More pieces could also be split out (for example, splitting out `homothety` would eliminate the dependence of `linear_algebra.affine_space.basic` on `linear_algebra.tensor_product`), but this split seems a reasonable starting point. This split is intended to preserve the exact set of definitions present and their namespaces, just moving some of them to different files, even if the existing namespaces aren't very consistent (e.g. some definitions relating to affine combinations are in the `finset` namespace, so allowing dot notation to be used for such combinations, but others are in the `affine_space` namespace, and there may not be a consistent rule for the division between the two). ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/mazur_ulam.lean Modified src/geometry/euclidean.lean Renamed src/linear_algebra/affine_space.lean to src/linear_algebra/affine_space/basic.lean - def affine_independent - theorem affine_independent_embedding_of_affine_independent - theorem affine_independent_iff_indicator_eq_of_affine_combination_eq - theorem affine_independent_iff_linear_independent_vsub - theorem affine_independent_of_subsingleton - theorem affine_independent_subtype_of_affine_independent - def affine_map.weighted_vsub_of_point - theorem affine_space.affine_combination_mem_affine_span - theorem affine_space.eq_affine_combination_of_mem_affine_span - theorem affine_space.finite_dimensional_direction_affine_span_of_finite - theorem affine_space.finite_dimensional_vector_span_of_finite - theorem affine_space.mem_affine_span_iff_eq_affine_combination - theorem affine_space.mem_vector_span_iff_eq_weighted_vsub - theorem affine_space.simplex.ext - theorem affine_space.simplex.ext_iff - def affine_space.simplex.face - theorem affine_space.simplex.face_eq_mk_of_point - theorem affine_space.simplex.face_points - def affine_space.simplex.mk_of_point - theorem affine_space.simplex.mk_of_point_points - structure affine_space.simplex - def affine_space.triangle - theorem affine_space.weighted_vsub_mem_vector_span - theorem affine_span_disjoint_of_disjoint_of_affine_independent - theorem exists_mem_inter_of_exists_mem_inter_affine_span_of_affine_independent - def finset.affine_combination - theorem finset.affine_combination_apply - theorem finset.affine_combination_eq_weighted_vsub_of_point_vadd_of_sum_eq_one - theorem finset.affine_combination_indicator_subset - theorem finset.affine_combination_of_eq_one_of_eq_zero - theorem finset.affine_combination_vsub - theorem finset.eq_affine_combination_subset_iff_eq_affine_combination_subtype - theorem finset.eq_weighted_vsub_of_point_subset_iff_eq_weighted_vsub_of_point_subtype - theorem finset.eq_weighted_vsub_subset_iff_eq_weighted_vsub_subtype - def finset.weighted_vsub - theorem finset.weighted_vsub_apply - theorem finset.weighted_vsub_empty - theorem finset.weighted_vsub_eq_weighted_vsub_of_point_of_sum_eq_zero - theorem finset.weighted_vsub_indicator_subset - def finset.weighted_vsub_of_point - theorem finset.weighted_vsub_of_point_apply - theorem finset.weighted_vsub_of_point_eq_of_sum_eq_zero - theorem finset.weighted_vsub_of_point_erase - theorem finset.weighted_vsub_of_point_indicator_subset - theorem finset.weighted_vsub_of_point_insert - theorem finset.weighted_vsub_of_point_vadd_eq_of_sum_eq_one - theorem finset.weighted_vsub_vadd_affine_combination - theorem mem_affine_span_iff_mem_of_affine_independent - theorem not_mem_affine_span_diff_of_affine_independent Added src/linear_algebra/affine_space/combination.lean + def affine_map.weighted_vsub_of_point + theorem affine_space.affine_combination_mem_affine_span + theorem affine_space.eq_affine_combination_of_mem_affine_span + theorem affine_space.mem_affine_span_iff_eq_affine_combination + theorem affine_space.mem_vector_span_iff_eq_weighted_vsub + theorem affine_space.weighted_vsub_mem_vector_span + def finset.affine_combination + theorem finset.affine_combination_apply + theorem finset.affine_combination_eq_weighted_vsub_of_point_vadd_of_sum_eq_one + theorem finset.affine_combination_indicator_subset + theorem finset.affine_combination_of_eq_one_of_eq_zero + theorem finset.affine_combination_vsub + theorem finset.eq_affine_combination_subset_iff_eq_affine_combination_subtype + theorem finset.eq_weighted_vsub_of_point_subset_iff_eq_weighted_vsub_of_point_subtype + theorem finset.eq_weighted_vsub_subset_iff_eq_weighted_vsub_subtype + def finset.weighted_vsub + theorem finset.weighted_vsub_apply + theorem finset.weighted_vsub_empty + theorem finset.weighted_vsub_eq_weighted_vsub_of_point_of_sum_eq_zero + theorem finset.weighted_vsub_indicator_subset + def finset.weighted_vsub_of_point + theorem finset.weighted_vsub_of_point_apply + theorem finset.weighted_vsub_of_point_eq_of_sum_eq_zero + theorem finset.weighted_vsub_of_point_erase + theorem finset.weighted_vsub_of_point_indicator_subset + theorem finset.weighted_vsub_of_point_insert + theorem finset.weighted_vsub_of_point_vadd_eq_of_sum_eq_one + theorem finset.weighted_vsub_vadd_affine_combination Added src/linear_algebra/affine_space/finite_dimensional.lean + theorem affine_space.finite_dimensional_direction_affine_span_of_finite + theorem affine_space.finite_dimensional_vector_span_of_finite Added src/linear_algebra/affine_space/independent.lean + def affine_independent + theorem affine_independent_embedding_of_affine_independent + theorem affine_independent_iff_indicator_eq_of_affine_combination_eq + theorem affine_independent_iff_linear_independent_vsub + theorem affine_independent_of_subsingleton + theorem affine_independent_subtype_of_affine_independent + theorem affine_space.simplex.ext + theorem affine_space.simplex.ext_iff + def affine_space.simplex.face + theorem affine_space.simplex.face_eq_mk_of_point + theorem affine_space.simplex.face_points + def affine_space.simplex.mk_of_point + theorem affine_space.simplex.mk_of_point_points + structure affine_space.simplex + def affine_space.triangle + theorem affine_span_disjoint_of_disjoint_of_affine_independent + theorem exists_mem_inter_of_exists_mem_inter_affine_span_of_affine_independent + theorem mem_affine_span_iff_mem_of_affine_independent + theorem not_mem_affine_span_diff_of_affine_independent Modified src/topology/algebra/affine.lean 2020-08-08 14:34:18 f23fe9a doc(tactic/lean_core_docs): by_cases is classical (#3718) `by_cases` was changed to use classical reasoning (leanprover-community/mathlib#3354, leanprover-community/lean#409), but the documentation hasn't been updated yet. I leave `by_contra` alone as it still uses `decidable`. ESTIMATED CHANGES Modified src/tactic/lean_core_docs.lean 2020-08-08 13:01:43 d27ddb4 chore(linear_algebra/basic): rewrite `p.comap q.subtype` to `comap q.subtype p` (#3725) @PatrickMassot requested this change in the review of #3720: > I find this statement very difficult to read. I think this is a bad use of dot notation, it really feels like `p` is pulling back `q.subtype` instead of the other way around (and even the docstring is suggesting that!). The same problem happens with filter.(co)map and always try to avoid it. > I would open submodule and then write `comap q.subtype p ≃ₗ[R] p`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem submodule.comap_subtype_self 2020-08-08 10:16:01 1675dc4 chore(order/complete_lattice): use `order_dual` (#3724) ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- theorem infi_exists +/- theorem infi_infi_eq_left +/- theorem infi_infi_eq_right +/- theorem infi_insert +/- theorem supr_exists +/- theorem supr_insert +/- theorem supr_supr_eq_left +/- theorem supr_supr_eq_right 2020-08-08 09:22:19 bf1c7b7 feat(linear_algebra/finite_dimensional): finite dimensional `is_basis` helpers (#3720) If we have a family of vectors in `V` with cardinality equal to the (finite) dimension of `V` over a field `K`, they span the whole space iff they are linearly independent. This PR proves those two facts (in the form that either of the conditions of `is_basis K b` suffices to prove `is_basis K b` if `b` has the right cardinality). We don't need to assume that `V` is finite dimensional, because the case that `findim K V = 0` will generally lead to a contradiction. We do sometimes need to assume that the family is nonempty, which seems like a much nicer condition. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + def submodule.comap_subtype_equiv_of_le + theorem submodule.quotient.nontrivial_of_lt_top Modified src/linear_algebra/finite_dimensional.lean + theorem findim_span_eq_card + theorem findim_span_le_card + theorem findim_span_set_eq_card + theorem finite_dimensional.findim_pos + theorem finite_dimensional.findim_pos_iff + theorem finite_dimensional.findim_pos_iff_exists_ne_zero + theorem finset_is_basis_of_linear_independent_of_card_eq_findim + theorem finset_is_basis_of_span_eq_top_of_card_eq_findim + theorem is_basis_of_linear_independent_of_card_eq_findim + theorem is_basis_of_span_eq_top_of_card_eq_findim + theorem linear_independent_of_span_eq_top_of_card_eq_findim + theorem set_is_basis_of_linear_independent_of_card_eq_findim + theorem set_is_basis_of_span_eq_top_of_card_eq_findim + theorem span_eq_top_of_linear_independent_of_card_eq_findim + theorem span_lt_of_subset_of_card_lt_findim + theorem span_lt_top_of_card_lt_findim + theorem submodule.findim_lt + theorem submodule.findim_mono + theorem submodule.lt_of_le_of_findim_lt_findim + theorem submodule.lt_top_of_findim_lt_findim 2020-08-07 21:33:16 d61bd4a feat(algebra/classical_lie_algebras): add lie_algebra.orthogonal.mem_so (#3711) Also unrelated change to use new notation for direct_sum ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean + theorem lie_algebra.orthogonal.mem_so Modified src/algebra/lie_algebra.lean +/- theorem lie_algebra.direct_sum.bracket_apply 2020-08-07 19:53:30 1cd74b1 fix(linear_algebra/finite_dimensional): universe generalize cardinal_mk_le_findim_of_linear_independent (#3721) ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem {m} Modified src/linear_algebra/finite_dimensional.lean 2020-08-07 18:26:21 00e4c04 doc(linear_algebra/affine_space): expand module doc string (#3719) Make module doc string discuss the main definitions relating to affine spaces. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean 2020-08-07 18:26:19 4e24f4c feat(data/list/*): add indexed versions of some list functions (#2191) Add `foldr_with_index`, `foldl_with_index`, `mfoldr_with_index`, `mfoldl_with_index`, `mmap_with_index` and `mmap_with_index'`. The new functions are proven correct by relating them to their non-indexed counterparts. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_eq_foldr + theorem list.map_eq_foldr + theorem list.map_filter_eq_foldr + theorem list.mfoldl_eq_foldl + theorem list.mfoldr_eq_foldr Modified src/data/list/default.lean Modified src/data/list/defs.lean + def list.foldl_with_index + def list.foldl_with_index_aux + def list.foldr_with_index + def list.foldr_with_index_aux +/- def list.indexes_values - def list.indexes_values_aux + def list.mfoldl_with_index + def list.mfoldr_with_index + def list.mmap_with_index' + def list.mmap_with_index'_aux + def list.mmap_with_index + def list.mmap_with_index_aux Added src/data/list/indexes.lean + theorem list.find_indexes_eq_map_indexes_values + theorem list.foldl_with_index_aux_eq_foldl_with_index_aux_spec + def list.foldl_with_index_aux_spec + theorem list.foldl_with_index_aux_spec_cons + theorem list.foldl_with_index_eq_foldl_enum + theorem list.foldr_with_index_aux_eq_foldr_with_index_aux_spec + def list.foldr_with_index_aux_spec + theorem list.foldr_with_index_aux_spec_cons + theorem list.foldr_with_index_eq_foldr_enum + theorem list.indexes_values_eq_filter_enum + theorem list.mfoldl_with_index_eq_mfoldl_enum + theorem list.mfoldr_with_index_eq_mfoldr_enum + theorem list.mmap_with_index'_aux_eq_mmap_with_index_aux + theorem list.mmap_with_index'_eq_mmap_with_index + theorem list.mmap_with_index_aux_eq_mmap_with_index_aux_spec + def list.mmap_with_index_aux_spec + theorem list.mmap_with_index_aux_spec_cons + theorem list.mmap_with_index_eq_mmap_enum Modified src/data/list/zip.lean + theorem list.map_fst_zip + theorem list.map_snd_zip 2020-08-07 16:49:27 aacd757 feat(measurable_space): more properties of measurable sets in a product (#3703) Add multiple lemmas about `prod` to `set.basic` Some cleanup in `set.basic` Fix the name of the instance `measure_space ℝ` Cleanup and a couple of additions to the `prod` section of `measurable_space`. Rename: `prod_singleton_singleton` -> `singleton_prod_singleton` Use `prod.swap` in the statement of `image_swap_prod`. ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.diff_self +/- theorem set.image_empty +/- theorem set.image_id' +/- theorem set.image_swap_prod +/- theorem set.mem_prod +/- theorem set.mem_prod_eq +/- theorem set.mk_mem_prod + theorem set.mk_preimage_prod_left + theorem set.mk_preimage_prod_right +/- theorem set.prod_empty +/- theorem set.prod_eq +/- theorem set.prod_inter_prod +/- theorem set.prod_mk_mem_set_prod_eq + theorem set.prod_singleton - theorem set.prod_singleton_singleton + theorem set.prod_union +/- theorem set.set_of_eq_eq_singleton + theorem set.singleton_prod + theorem set.singleton_prod_singleton + theorem set.union_prod +/- theorem set.univ_prod_univ Modified src/data/set/lattice.lean +/- theorem set.prod_eq_seq Modified src/measure_theory/integration.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean +/- theorem is_measurable.prod + theorem is_measurable_prod + theorem is_measurable_prod_of_nonempty +/- theorem measurable.fst +/- theorem measurable.prod +/- theorem measurable.prod_mk +/- theorem measurable.snd +/- theorem measurable_fst +/- theorem measurable_snd Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/subset_properties.lean 2020-08-07 00:44:48 49ba4c4 chore(scripts): update nolints.txt (#3712) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-06 16:42:35 1930601 feat(algebra/group_power): lemmas relating pow in `multiplicative int` with multiplication in `int` (#3706) ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem int.of_add_mul + theorem int.to_add_gpow + theorem int.to_add_pow + theorem nat.of_add_mul + theorem nat.to_add_pow 2020-08-06 16:42:33 35ecc7b feat(analysis/calculus): Rolle's and Cauchy's mean value theorems with weaker assumptions (deps : 3590) (#3681) This introduces stronger versions of Rolle's theorem and Cauchy's mean value theorem, essentially by encapsulating an extension by continuity using the newly introduced `extend_from` of #3590 ESTIMATED CHANGES Modified src/analysis/calculus/local_extr.lean + theorem exists_deriv_eq_zero' + theorem exists_has_deriv_at_eq_zero' Modified src/analysis/calculus/mean_value.lean + theorem exists_ratio_deriv_eq_ratio_slope' + theorem exists_ratio_has_deriv_at_eq_ratio_slope' 2020-08-06 16:42:31 e57fc3d feat(field_theory/splitting_field): splitting field unique (#3654) Main theorem: ```lean polynomial.is_splitting_field.alg_equiv {α} (β) [field α] [field β] [algebra α β] (f : polynomial α) [is_splitting_field α β f] : β ≃ₐ[α] splitting_field f ```` ESTIMATED CHANGES Modified src/algebra/group/hom.lean Modified src/data/equiv/ring.lean +/- theorem ring_equiv.ext +/- theorem ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply + theorem ring_equiv.symm_trans +/- theorem ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply + theorem ring_equiv.to_ring_hom_trans + theorem ring_equiv.trans_symm Modified src/data/finset/basic.lean + theorem multiset.to_finset_map Modified src/data/list/basic.lean + theorem list.prod_ne_zero Modified src/data/multiset/basic.lean + theorem multiset.forall_mem_cons + theorem multiset.forall_mem_map_iff + theorem multiset.prod_ne_zero Modified src/data/polynomial/eval.lean + theorem polynomial.map_list_prod + theorem polynomial.map_multiset_prod + theorem polynomial.map_prod Modified src/data/polynomial/field_division.lean + theorem polynomial.map_ne_zero Modified src/data/polynomial/ring_division.lean + theorem polynomial.roots_C + theorem polynomial.roots_list_prod + theorem polynomial.roots_multiset_prod + theorem polynomial.roots_one + theorem polynomial.roots_zero Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/splitting_field.lean + def alg_equiv.adjoin_singleton_equiv_adjoin_root_minimal_polynomial + theorem lift_of_splits + def polynomial.is_splitting_field.alg_equiv + theorem polynomial.is_splitting_field.finite_dimensional + def polynomial.is_splitting_field.lift + theorem polynomial.is_splitting_field.mul + theorem polynomial.is_splitting_field.splits_iff + theorem polynomial.roots_map Modified src/linear_algebra/finite_dimensional.lean + theorem dim_eq_zero + theorem findim_eq_zero + theorem findim_top + theorem linear_map.findim_le_findim_of_injective + theorem linear_map.injective_iff_surjective_of_findim_eq_findim Modified src/ring_theory/adjoin_root.lean + def adjoin_root.alg_hom + theorem adjoin_root.coe_alg_hom Modified src/ring_theory/algebra.lean + def alg_equiv.of_bijective + def alg_hom.cod_restrict + theorem alg_hom.injective_cod_restrict + theorem alg_hom.injective_iff + theorem algebra.bijective_algbera_map_iff + def algebra.bot_equiv + def algebra.bot_equiv_of_injective + theorem algebra.surjective_algbera_map_iff Modified src/ring_theory/algebra_tower.lean - def is_algebra_tower.subalgebra_comap - theorem is_algebra_tower.subalgebra_comap_top + theorem subalgebra.mem_res + def subalgebra.of_under + def subalgebra.res + theorem subalgebra.res_inj + theorem subalgebra.res_top Modified src/ring_theory/subsemiring.lean 2020-08-06 15:42:26 bc2bcac chore(algebra/module): Move submodule to its own file (#3696) ESTIMATED CHANGES Modified src/algebra/module/basic.lean - theorem submodule.add_mem - theorem submodule.add_mem_iff_left - theorem submodule.add_mem_iff_right - theorem submodule.coe_add - theorem submodule.coe_eq_coe - theorem submodule.coe_eq_zero - theorem submodule.coe_injective - theorem submodule.coe_mem - theorem submodule.coe_mk - theorem submodule.coe_neg - theorem submodule.coe_set_eq - theorem submodule.coe_smul - theorem submodule.coe_sort_coe - theorem submodule.coe_sub - theorem submodule.coe_to_add_subgroup - theorem submodule.coe_zero - theorem submodule.ext'_iff - theorem submodule.ext - theorem submodule.mem_coe - theorem submodule.mk_eq_zero - theorem submodule.neg_mem - theorem submodule.neg_mem_iff - theorem submodule.smul_mem - theorem submodule.smul_mem_iff' - theorem submodule.smul_mem_iff - theorem submodule.sub_mem - theorem submodule.subtype_apply - theorem submodule.subtype_eq_val - theorem submodule.sum_mem - theorem submodule.sum_smul_mem - def submodule.to_add_subgroup - theorem submodule.to_add_submonoid_eq - theorem submodule.to_add_submonoid_injective - theorem submodule.zero_mem - structure submodule - def subspace Modified src/algebra/module/default.lean Added src/algebra/module/submodule.lean + theorem submodule.add_mem + theorem submodule.add_mem_iff_left + theorem submodule.add_mem_iff_right + theorem submodule.coe_add + theorem submodule.coe_eq_coe + theorem submodule.coe_eq_zero + theorem submodule.coe_injective + theorem submodule.coe_mem + theorem submodule.coe_mk + theorem submodule.coe_neg + theorem submodule.coe_set_eq + theorem submodule.coe_smul + theorem submodule.coe_sort_coe + theorem submodule.coe_sub + theorem submodule.coe_to_add_subgroup + theorem submodule.coe_zero + theorem submodule.ext'_iff + theorem submodule.ext + theorem submodule.mem_coe + theorem submodule.mk_eq_zero + theorem submodule.neg_mem + theorem submodule.neg_mem_iff + theorem submodule.smul_mem + theorem submodule.smul_mem_iff' + theorem submodule.smul_mem_iff + theorem submodule.sub_mem + theorem submodule.subtype_apply + theorem submodule.subtype_eq_val + theorem submodule.sum_mem + theorem submodule.sum_smul_mem + def submodule.to_add_subgroup + theorem submodule.to_add_submonoid_eq + theorem submodule.to_add_submonoid_injective + theorem submodule.zero_mem + structure submodule + def subspace Modified src/linear_algebra/basic.lean 2020-08-06 14:19:33 224e0f8 docs(tactic/interactive): Add tag `debugging` and doc `mwe` for `extract_goal` (#3708) Requested by @kbuzzard on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Being.20stuck.20-.3E.20MWE/near/206124861). x-ref: leanprover-community/leanprover-community.github.io#105 ESTIMATED CHANGES Modified src/tactic/interactive.lean 2020-08-06 09:35:08 ee7bb12 chore(ring_theory/ideal): Move ideal modules into a single folder (#3707) The main motivation is to fix the odd inconsistency of `ideals` being plural, while most other files have singular names. Besides that, there seems to be precedent for grouping together such files ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebraic_geometry/prime_spectrum.lean Modified src/linear_algebra/adic_completion.lean Modified src/linear_algebra/invariant_basis_number.lean Modified src/number_theory/basic.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/free_comm_ring.lean Renamed src/ring_theory/ideals.lean to src/ring_theory/ideal/basic.lean Renamed src/ring_theory/ideal_operations.lean to src/ring_theory/ideal/operations.lean Renamed src/ring_theory/ideal_over.lean to src/ring_theory/ideal/over.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/jacobson_ideal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/valuation/basic.lean Modified src/topology/algebra/ring.lean 2020-08-06 06:58:32 3eea109 feat(measure_theory/interval_integral): introduce `∫ x in a..b, f x`, prove FTC-1 (#3640) Define `∫ x in a..b, f x ∂μ` as `∫ x in Ioc a b, f x ∂μ - ∫ x in Ioc b a, f x ∂μ`. With this definition for a probability measure `μ` we have `F_μ(b)-F_μ(a)=∫ x in a..b, f x ∂μ`, where `F_μ` is the cumulative distribution function. ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_add_meas + theorem measure_theory.integral_map_meas + theorem measure_theory.integral_mono_of_nonneg + theorem measure_theory.norm_integral_le_of_norm_le + theorem measure_theory.norm_integral_le_of_norm_le_const Added src/measure_theory/interval_integral.lean + theorem interval_integrable.add + theorem interval_integrable.neg + theorem interval_integrable.refl + theorem interval_integrable.smul + theorem interval_integrable.sub + theorem interval_integrable.symm + theorem interval_integrable.trans + def interval_integrable + theorem interval_integral.integral_add + theorem interval_integral.integral_add_adjacent_intervals + theorem interval_integral.integral_add_adjacent_intervals_cancel + theorem interval_integral.integral_cases + theorem interval_integral.integral_has_deriv_at_of_tendsto_ae + theorem interval_integral.integral_neg + theorem interval_integral.integral_of_ge + theorem interval_integral.integral_of_le + theorem interval_integral.integral_same + theorem interval_integral.integral_same_has_deriv_at_of_tendsto_ae + theorem interval_integral.integral_sub_linear_is_o_of_tendsto_ae + theorem interval_integral.integral_symm + theorem interval_integral.norm_integral_eq_norm_integral_Ioc + theorem interval_integral.norm_integral_le_abs_integral_norm + theorem interval_integral.norm_integral_le_integral_norm_Ioc + theorem interval_integral.norm_integral_le_of_norm_le_const + theorem interval_integral.norm_integral_le_of_norm_le_const_ae + def interval_integral Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable.congr' + theorem measure_theory.integrable.mono' - theorem measure_theory.integrable.mono_set - theorem measure_theory.integrable.union + theorem measure_theory.integrable_add_meas + theorem measure_theory.integrable_congr' +/- theorem measure_theory.integrable_const + theorem measure_theory.integrable_const_iff + theorem measure_theory.integrable_map_meas + theorem measure_theory.integrable_of_bounded - theorem measure_theory.integrable_of_integrable_bound + theorem measure_theory.integrable_zero_meas Modified src/measure_theory/set_integral.lean + theorem continuous.integrable_on_compact + theorem continuous_at.integral_sub_linear_is_o_ae + theorem continuous_on.integrable_on_compact + theorem filter.tendsto.integral_sub_linear_is_o_ae + theorem indicator_ae_eq_restrict + theorem indicator_ae_eq_restrict_compl + theorem is_compact.integrable_on_of_nhds_within + theorem measure_theory.integrable.integrable_on' + theorem measure_theory.integrable.integrable_on + theorem measure_theory.integrable_at_filter.filter_mono + theorem measure_theory.integrable_at_filter.inf_ae_iff + theorem measure_theory.integrable_at_filter.inf_of_left + theorem measure_theory.integrable_at_filter.inf_of_right + def measure_theory.integrable_at_filter + theorem measure_theory.integrable_indicator_iff + theorem measure_theory.integrable_on.add_meas + theorem measure_theory.integrable_on.indicator + theorem measure_theory.integrable_on.integrable + theorem measure_theory.integrable_on.left_of_union + theorem measure_theory.integrable_on.mono + theorem measure_theory.integrable_on.mono_meas + theorem measure_theory.integrable_on.mono_set + theorem measure_theory.integrable_on.mono_set_ae + theorem measure_theory.integrable_on.right_of_union + theorem measure_theory.integrable_on.union + def measure_theory.integrable_on + theorem measure_theory.integrable_on_add_meas + theorem measure_theory.integrable_on_const + theorem measure_theory.integrable_on_empty + theorem measure_theory.integrable_on_finite_union + theorem measure_theory.integrable_on_finset_union + theorem measure_theory.integrable_on_of_bounded + theorem measure_theory.integrable_on_union + theorem measure_theory.integrable_on_univ + theorem measure_theory.integrable_on_zero + theorem measure_theory.integral_add_compl + theorem measure_theory.integral_empty + theorem measure_theory.integral_indicator + theorem measure_theory.integral_union + theorem measure_theory.integral_univ + theorem measure_theory.measure.finite_at_filter.integrable_at_filter + theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto + theorem measure_theory.measure.finite_at_filter.integrable_at_filter_of_tendsto_ae + theorem measure_theory.norm_set_integral_le_of_norm_le_const' + theorem measure_theory.norm_set_integral_le_of_norm_le_const + theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae'' + theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae' + theorem measure_theory.norm_set_integral_le_of_norm_le_const_ae + theorem measure_theory.set_integral_const + theorem piecewise_ae_eq_restrict + theorem piecewise_ae_eq_restrict_compl 2020-08-06 03:47:24 5cba21d chore(*): swap order of [fintype A] [decidable_eq A] (#3705) @fpvandoorn suggested in #3603 swapping the order of some `[fintype A] [decidable_eq A]` arguments to solve a linter problem with slow typeclass lookup. The reasoning is that Lean solves typeclass search problems from right to left, and * it's "less likely" that a type is a `fintype` than it has `decidable_eq`, so we can fail earlier if `fintype` comes second * typeclass search for `[decidable_eq]` can already be slow, so it's better to avoid it. This PR applies this suggestion across the library. ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean +/- def matrix.reindex_lie_equiv +/- theorem matrix.reindex_lie_equiv_apply +/- theorem matrix.reindex_lie_equiv_symm_apply +/- def skew_adjoint_matrices_lie_subalgebra_equiv_transpose Modified src/data/equiv/list.lean +/- def encodable.fintype_arrow +/- def encodable.fintype_pi Modified src/data/fintype/basic.lean +/- theorem finset.card_univ_diff +/- def fintype.equiv_fin +/- def fintype.of_surjective +/- def quotient.fin_choice +/- theorem quotient.fin_choice_eq Modified src/data/fintype/card.lean +/- theorem finset.prod_fiberwise +/- theorem fintype.card_fun +/- theorem fintype.card_pi +/- theorem fintype.prod_fiberwise Modified src/data/matrix/basic.lean +/- def matrix.scalar Modified src/field_theory/finite.lean +/- theorem finite_field.card_image_polynomial_eval Modified src/group_theory/order_of_element.lean +/- theorem is_cyclic.card_order_of_eq_totient +/- theorem is_cyclic.card_pow_eq_one_le +/- theorem is_cyclic_of_order_of_eq_card +/- theorem order_of_eq_card_of_forall_mem_gpowers Modified src/linear_algebra/char_poly.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix.lean +/- theorem linear_map.to_matrix_of_equiv Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/special_linear_group.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/integral_domain.lean +/- def field_of_integral_domain Modified src/ring_theory/polynomial_algebra.lean 2020-08-06 00:42:41 f8fd0c3 chore(scripts): update nolints.txt (#3704) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-05 22:44:03 9d3c709 chore(algebra/module): Reuse proofs from subgroup (#3631) Confusingly these have opposite names - someone can always fix the names later though. ESTIMATED CHANGES Modified src/algebra/module/basic.lean +/- theorem submodule.add_mem_iff_left +/- theorem submodule.add_mem_iff_right +/- theorem submodule.sub_mem 2020-08-05 22:44:01 2918b00 feat(topology): define `extend_from`, add lemmas about extension by continuity on sets and intervals and continuity gluing (#3590) #### Add a new file `topology/extend_from_subset` (mostly by @PatrickMassot ) Define `extend_from A f` (where `f : X → Y` and `A : set X`) to be a function `g : X → Y` which maps any `x₀ : X` to the limit of `f` as `x` tends to `x₀`, if such a limit exists. Although this is not really an extension, it maps with the classical meaning of extending a function *defined on a set*, hence the name. In some way it is analogous to `dense_inducing.extend`, but in `set` world. The main theorem about this is `continuous_on_extend_from` about extension by continuity #### Corollaries for extending functions defined on intervals A few lemmas of the form : if `f` is continuous on `Ioo a b`, then `extend_from (Ioo a b) f` is continuous on `I[cc/co/oc] a b`, provided some assumptions about limits on the boundary (and has some other properties, e.g it is equal to `f` on `Ioo a b`) #### More general continuity gluing Lemmas `continuous_on_if'` and its corollaries `continuous_on_if` and `continuous_if'`, and a few other continuity lemmas ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.mem_Ioo_or_eq_endpoints_of_mem_Icc + theorem set.mem_Ioo_or_eq_left_of_mem_Ico + theorem set.mem_Ioo_or_eq_right_of_mem_Ioc Modified src/topology/algebra/ordered.lean + theorem continuous_at_iff_continuous_left'_right' + theorem continuous_at_iff_continuous_left_right + theorem continuous_on_Icc_extend_from_Ioo + theorem continuous_on_Ico_extend_from_Ioo + theorem continuous_on_Ioc_extend_from_Ioo + theorem continuous_within_at_Iio_iff_Iic + theorem continuous_within_at_Ioi_iff_Ici + theorem eq_lim_at_left_extend_from_Ioo + theorem eq_lim_at_right_extend_from_Ioo + theorem nhds_left'_sup_nhds_right + theorem nhds_left_sup_nhds_right' + theorem nhds_left_sup_nhds_right +/- theorem tendsto_inv_nhds_within_Iio +/- theorem tendsto_inv_nhds_within_Iio_inv +/- theorem tendsto_inv_nhds_within_Ioi +/- theorem tendsto_inv_nhds_within_Ioi_inv Modified src/topology/continuous_on.lean + theorem continuous_if' + theorem continuous_on_if' + theorem continuous_on_if + theorem continuous_within_at_of_not_mem_closure Added src/topology/extend_from_subset.lean + theorem continuous_extend_from + theorem continuous_on_extend_from + def extend_from + theorem extend_from_eq + theorem extend_from_extends + theorem tendsto_extend_from 2020-08-05 21:26:53 89ada87 chore(algebra, data/pnat): refactoring comm_semiring_has_dvd into comm_monoid_has_dvd (#3702) changes the instance comm_semiring_has_dvd to apply to any comm_monoid cleans up the pnat API to use this new definition ESTIMATED CHANGES Added src/algebra/divisibility.lean + theorem dvd.elim + theorem dvd.elim_left + theorem dvd.intro + theorem dvd.intro_left + theorem dvd_mul_left + theorem dvd_mul_of_dvd_left + theorem dvd_mul_of_dvd_right + theorem dvd_mul_right + theorem dvd_of_mul_left_dvd + theorem dvd_of_mul_right_dvd + theorem dvd_refl + theorem dvd_trans + theorem dvd_zero + theorem eq_zero_of_zero_dvd + theorem exists_eq_mul_left_of_dvd + theorem exists_eq_mul_right_of_dvd + theorem mul_dvd_mul + theorem mul_dvd_mul_left + theorem mul_dvd_mul_right + theorem one_dvd + theorem zero_dvd_iff Modified src/algebra/ring/basic.lean - theorem dvd.elim - theorem dvd.elim_left - theorem dvd.intro - theorem dvd.intro_left - theorem dvd_mul_left - theorem dvd_mul_of_dvd_left - theorem dvd_mul_of_dvd_right - theorem dvd_mul_right - theorem dvd_of_mul_left_dvd - theorem dvd_of_mul_right_dvd - theorem dvd_refl - theorem dvd_trans - theorem dvd_zero - theorem eq_zero_of_zero_dvd - theorem exists_eq_mul_left_of_dvd - theorem exists_eq_mul_right_of_dvd - theorem mul_dvd_mul - theorem mul_dvd_mul_left - theorem mul_dvd_mul_right - theorem one_dvd - theorem zero_dvd_iff Modified src/data/pnat/basic.lean - theorem pnat.dvd_iff'' +/- theorem pnat.dvd_iff - theorem pnat.dvd_intro +/- theorem pnat.dvd_lcm_left +/- theorem pnat.dvd_lcm_right - theorem pnat.dvd_refl +/- theorem pnat.gcd_dvd_left +/- theorem pnat.gcd_dvd_right - theorem pnat.one_dvd Modified src/data/pnat/factors.lean Modified src/data/pnat/xgcd.lean 2020-08-05 19:30:40 13d4fbe feat(tactic/interactive_attr): `@[interactive]` attribute to export interactive tactics (#3698) Allows one to write ```lean @[interactive] meta def my_tactic := ... ``` instead of ```lean meta def my_tactic := ... run_cmd add_interactive [``my_tactic] ``` ESTIMATED CHANGES Modified src/tactic/core.lean 2020-08-05 16:34:55 5fc6281 chore(data/matrix/basic): rename _val lemmas to _apply (#3297) We use `_apply` for lemmas about applications of functions to arguments. Arguably "picking out the entries of a matrix" could warrant a different name, but as we treat matrices just as functions all over, I think it's better to use the usual names. ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean Modified src/data/matrix/basic.lean + theorem matrix.add_apply - theorem matrix.add_val + theorem matrix.bit0_apply - theorem matrix.bit0_val + theorem matrix.bit1_apply + theorem matrix.bit1_apply_eq + theorem matrix.bit1_apply_ne - theorem matrix.bit1_val - theorem matrix.bit1_val_eq - theorem matrix.bit1_val_ne + theorem matrix.col_apply - theorem matrix.col_val + theorem matrix.diagonal_apply_eq + theorem matrix.diagonal_apply_ne' + theorem matrix.diagonal_apply_ne - theorem matrix.diagonal_val_eq - theorem matrix.diagonal_val_ne' - theorem matrix.diagonal_val_ne + theorem matrix.mul_apply' + theorem matrix.mul_apply - theorem matrix.mul_val' - theorem matrix.mul_val + theorem matrix.neg_apply - theorem matrix.neg_val + theorem matrix.one_apply + theorem matrix.one_apply_eq + theorem matrix.one_apply_ne' + theorem matrix.one_apply_ne - theorem matrix.one_val - theorem matrix.one_val_eq - theorem matrix.one_val_ne' - theorem matrix.one_val_ne + theorem matrix.row_apply + theorem matrix.row_mul_col_apply - theorem matrix.row_mul_col_val - theorem matrix.row_val + theorem matrix.smul_apply - theorem matrix.smul_val + theorem matrix.transpose_apply - theorem matrix.transpose_val + theorem matrix.update_column_apply - theorem matrix.update_column_val + theorem matrix.update_row_apply - theorem matrix.update_row_val + theorem matrix.zero_apply - theorem matrix.zero_val Modified src/data/matrix/pequiv.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/char_poly/coeff.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/nonsingular_inverse.lean + theorem matrix.adjugate_apply - theorem matrix.adjugate_val + theorem matrix.mul_adjugate_apply - theorem matrix.mul_adjugate_val Modified src/ring_theory/matrix_algebra.lean + theorem algebra_map_matrix_apply - theorem algebra_map_matrix_val Modified src/ring_theory/polynomial_algebra.lean 2020-08-05 15:41:26 d952e8b chore(topology/category/Top/opens): module-doc, cleanup, and construct some morphisms (#3601) ESTIMATED CHANGES Modified src/category_theory/category/default.lean + def category_theory.hom_of_le + theorem category_theory.le_of_hom Modified src/category_theory/limits/lattice.lean Modified src/topology/category/Top/opens.lean + def topological_space.opens.inf_le_left + def topological_space.opens.inf_le_right + def topological_space.opens.le_supr - theorem topological_space.opens.map_comp_hom_app - theorem topological_space.opens.map_comp_inv_app - theorem topological_space.opens.map_id_hom_app - theorem topological_space.opens.map_id_inv_app +/- theorem topological_space.opens.map_obj + theorem topological_space.opens.to_Top_map 2020-08-05 11:37:40 c63dad1 chore(ring_theory/ideals): Move the definition of ideals out of algebra/module (#3692) Neatness was the main motivation - it makes it easier to reason about what would need doing in #3635. It also results in somewhere sensible for the docs about ideals. Also adds a very minimal docstring to `ring_theory/ideals.lean`. ESTIMATED CHANGES Modified src/algebra/module/basic.lean - theorem ideal.add_mem_iff_left - theorem ideal.add_mem_iff_right - theorem ideal.mul_mem_left - theorem ideal.mul_mem_right - theorem ideal.neg_mem_iff - def ideal Modified src/ring_theory/ideals.lean + theorem ideal.add_mem_iff_left + theorem ideal.add_mem_iff_right + theorem ideal.mul_mem_left + theorem ideal.mul_mem_right + theorem ideal.neg_mem_iff + def ideal 2020-08-05 11:37:36 4a82e84 feat(algebra/*/ulift): algebraic instances for ulift (#3675) ESTIMATED CHANGES Added src/algebra/group/ulift.lean + theorem ulift.inv_down + theorem ulift.mul_down + def ulift.mul_equiv + theorem ulift.one_down + theorem ulift.sub_down Modified src/algebra/module/pi.lean Added src/algebra/module/ulift.lean + def ulift.semimodule_equiv + theorem ulift.smul_down' + theorem ulift.smul_down Added src/algebra/ring/ulift.lean + def ulift.ring_equiv 2020-08-05 10:42:04 2b9ac69 feat(linear_algebra/affine_space): faces of simplices (#3691) Define a `face` of an `affine_space.simplex` with any given nonempty subset of the vertices, using `finset.mono_of_fin`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + def affine_space.simplex.face + theorem affine_space.simplex.face_eq_mk_of_point + theorem affine_space.simplex.face_points 2020-08-05 10:42:02 ecb5c5f docs(algebra/module): Remove completed TODO (#3690) Today, submodule _does_ extend `add_submonoid`, which is I assume what this TODO was about ESTIMATED CHANGES Modified src/algebra/module/basic.lean 2020-08-05 10:42:00 0531cb0 feat(algebra/classical_lie_algebras): add definitions of missing classical Lie algebras (#3661) Copying from the comments I have added at the top of `classical_lie_algebras.lean`: ## Main definitions * `lie_algebra.symplectic.sp` * `lie_algebra.orthogonal.so` * `lie_algebra.orthogonal.so'` * `lie_algebra.orthogonal.so_indefinite_equiv` * `lie_algebra.orthogonal.type_D` * `lie_algebra.orthogonal.type_B` * `lie_algebra.orthogonal.type_D_equiv_so'` * `lie_algebra.orthogonal.type_B_equiv_so'` ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean + def lie_algebra.orthogonal.JB + theorem lie_algebra.orthogonal.JB_transform + def lie_algebra.orthogonal.JD + theorem lie_algebra.orthogonal.JD_transform + def lie_algebra.orthogonal.PB + theorem lie_algebra.orthogonal.PB_inv + def lie_algebra.orthogonal.PD + theorem lie_algebra.orthogonal.PD_inv + def lie_algebra.orthogonal.Pso + theorem lie_algebra.orthogonal.Pso_inv + def lie_algebra.orthogonal.S + theorem lie_algebra.orthogonal.S_as_blocks + def lie_algebra.orthogonal.indefinite_diagonal + theorem lie_algebra.orthogonal.indefinite_diagonal_assoc + theorem lie_algebra.orthogonal.indefinite_diagonal_transform + theorem lie_algebra.orthogonal.is_unit_PB + theorem lie_algebra.orthogonal.is_unit_PD + theorem lie_algebra.orthogonal.is_unit_Pso + def lie_algebra.orthogonal.so' + def lie_algebra.orthogonal.so + theorem lie_algebra.orthogonal.so_indefinite_equiv_apply + def lie_algebra.orthogonal.type_B + def lie_algebra.orthogonal.type_D + def lie_algebra.symplectic.J + def lie_algebra.symplectic.sp Modified src/algebra/lie_algebra.lean + def alg_equiv.to_lie_equiv + theorem alg_equiv.to_lie_equiv_apply + theorem alg_equiv.to_lie_equiv_symm_apply + theorem mem_skew_adjoint_matrices_lie_subalgebra + theorem mem_skew_adjoint_matrices_lie_subalgebra_unit_smul + def skew_adjoint_matrices_lie_subalgebra_equiv_transpose + theorem skew_adjoint_matrices_lie_subalgebra_equiv_transpose_apply Modified src/data/matrix/basic.lean + def matrix.from_blocks + theorem matrix.from_blocks_add + theorem matrix.from_blocks_apply₁₁ + theorem matrix.from_blocks_apply₁₂ + theorem matrix.from_blocks_apply₂₁ + theorem matrix.from_blocks_apply₂₂ + theorem matrix.from_blocks_diagonal + theorem matrix.from_blocks_multiply + theorem matrix.from_blocks_one + theorem matrix.from_blocks_smul + theorem matrix.from_blocks_to_blocks + theorem matrix.from_blocks_transpose + theorem matrix.to_blocks_from_blocks₁₁ + theorem matrix.to_blocks_from_blocks₁₂ + theorem matrix.to_blocks_from_blocks₂₁ + theorem matrix.to_blocks_from_blocks₂₂ + def matrix.to_blocks₁₁ + def matrix.to_blocks₁₂ + def matrix.to_blocks₂₁ + def matrix.to_blocks₂₂ Modified src/linear_algebra/matrix.lean + theorem matrix.reindex_transpose Modified src/linear_algebra/nonsingular_inverse.lean + theorem matrix.is_unit_det_of_left_inverse + theorem matrix.is_unit_det_of_right_inverse + theorem matrix.nonsing_inv_left_right + theorem matrix.nonsing_inv_right_left Modified src/ring_theory/algebra.lean + def alg_equiv.to_linear_equiv + theorem alg_equiv.to_linear_equiv_apply 2020-08-05 09:56:01 37119b4 feat(topology): normed spaces are (locally) path connected (#3689) ESTIMATED CHANGES Modified src/analysis/convex/topology.lean + theorem convex.is_path_connected Modified src/topology/algebra/module.lean Modified src/topology/continuous_on.lean + theorem continuous_on.comp_continuous Modified src/topology/metric_space/basic.lean + theorem metric.nonempty_ball + theorem metric.nonempty_closed_ball Modified src/topology/path_connected.lean + theorem joined_in.of_line + def path.of_line + theorem path.of_line_mem 2020-08-05 09:09:06 545186c refactor(*): add a notation for `nhds_within` (#3683) The definition is still there and can be used too. ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/calculus/deriv.lean +/- theorem has_deriv_within_at_inter' Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable_within_at_inter' +/- theorem has_fderiv_within_at_inter' Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/calculus/tangent_cone.lean +/- theorem tangent_cone_congr +/- theorem tangent_cone_mono_nhds +/- theorem unique_diff_within_at.inter' +/- theorem unique_diff_within_at_congr +/- theorem unique_diff_within_at_inter' Modified src/analysis/calculus/times_cont_diff.lean +/- theorem times_cont_diff_within_at_inter' Modified src/analysis/normed_space/basic.lean Modified src/analysis/specific_limits.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/local_invariant_properties.lean +/- theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' Modified src/geometry/manifold/mfderiv.lean +/- theorem has_mfderiv_within_at_inter' +/- theorem mdifferentiable_within_at_inter' +/- theorem unique_mdiff_within_at.inter' Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- theorem ext_chart_preimage_mem_nhds_within Modified src/geometry/manifold/times_cont_mdiff.lean +/- theorem times_cont_mdiff_within_at_inter' Modified src/measure_theory/borel_space.lean Modified src/measure_theory/measure_space.lean Modified src/order/filter/basic.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean Modified src/topology/continuous_on.lean +/- theorem continuous_within_at_inter' +/- theorem mem_nhds_within_insert +/- theorem mem_nhds_within_subtype +/- theorem mem_of_mem_nhds_within +/- theorem nhds_within_empty +/- theorem nhds_within_le_of_mem +/- theorem nhds_within_mono +/- theorem nhds_within_restrict'' +/- theorem nhds_within_univ +/- theorem self_mem_nhds_within Modified src/topology/dense_embedding.lean Modified src/topology/local_extr.lean +/- theorem filter.eventually_eq.is_local_extr_on_iff +/- theorem filter.eventually_eq.is_local_max_on_iff +/- theorem filter.eventually_eq.is_local_min_on_iff +/- theorem filter.eventually_le.is_local_max_on +/- theorem filter.eventually_le.is_local_min_on +/- def is_local_extr_on +/- def is_local_max_on +/- def is_local_min_on Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/basic.lean +/- theorem metric.mem_nhds_within_iff Modified src/topology/metric_space/emetric_space.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/uniform_convergence.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-08-05 08:29:26 3b26878 feat(linear_algebra/affine_space): more lemmas (#3615) Add further lemmas on affine spaces. This is the last piece of preparation needed on the affine space side for my definitions of `circumcenter` and `circumradius` for a simplex in a Euclidean affine space. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.eq_vadd_iff_vsub_eq + theorem add_torsor.vsub_set_finite_of_finite Modified src/linear_algebra/affine_space.lean + theorem affine_independent_embedding_of_affine_independent + theorem affine_independent_iff_indicator_eq_of_affine_combination_eq + theorem affine_independent_subtype_of_affine_independent + theorem affine_space.finite_dimensional_direction_affine_span_of_finite + theorem affine_space.finite_dimensional_vector_span_of_finite + theorem affine_span_disjoint_of_disjoint_of_affine_independent + theorem affine_subspace.affine_span_coe + theorem affine_subspace.mem_affine_span_singleton + theorem exists_mem_inter_of_exists_mem_inter_affine_span_of_affine_independent + theorem finset.eq_affine_combination_subset_iff_eq_affine_combination_subtype + theorem finset.eq_weighted_vsub_of_point_subset_iff_eq_weighted_vsub_of_point_subtype + theorem finset.eq_weighted_vsub_subset_iff_eq_weighted_vsub_subtype + theorem mem_affine_span_iff_mem_of_affine_independent + theorem not_mem_affine_span_diff_of_affine_independent 2020-08-04 18:21:00 84b450d feat(topology): path connected spaces (#3627) From the sphere eversion project. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_def + theorem set.Ici_def + theorem set.Ico_def + theorem set.Iic_def + theorem set.Iio_def + theorem set.Ioc_def + theorem set.Ioi_def + theorem set.Ioo_def Modified src/geometry/manifold/real_instances.lean Modified src/order/filter/bases.lean + theorem filter.has_basis.to_has_basis Added src/topology/path_connected.lean + def I_extend + theorem I_extend_extends + theorem I_extend_one + theorem I_extend_range + theorem I_extend_zero + def I_symm + theorem I_symm_one + theorem I_symm_zero + theorem Icc_zero_one_symm + theorem coe_I_one + theorem coe_I_zero + theorem continuous.I_extend + theorem continuous_I_symm + theorem continuous_proj_I + theorem is_open.is_connected_iff_is_path_connected + theorem is_path_connected.image + theorem is_path_connected.joined_in + theorem is_path_connected.mem_path_component + theorem is_path_connected.preimage_coe + theorem is_path_connected.subset_path_component + theorem is_path_connected.union + def is_path_connected + theorem is_path_connected_iff + theorem is_path_connected_iff_eq + theorem is_path_connected_iff_path_connected_space + theorem joined.mem_path_component + theorem joined.refl + def joined.some_path + theorem joined.symm + theorem joined.trans + def joined + theorem joined_in.joined + theorem joined_in.joined_subtype + theorem joined_in.mem + theorem joined_in.mono + theorem joined_in.refl + def joined_in.some_path + theorem joined_in.some_path_mem + theorem joined_in.source_mem + theorem joined_in.symm + theorem joined_in.target_mem + theorem joined_in.trans + def joined_in + theorem joined_in_iff_joined + theorem joined_in_univ + theorem loc_path_connected_of_bases + theorem loc_path_connected_of_is_open + theorem mem_path_component_of_mem + theorem mem_path_component_self + def path.cast + theorem path.cast_coe + theorem path.continuous_extend + def path.extend + theorem path.extend_one + theorem path.extend_zero + def path.map + theorem path.map_coe + def path.refl + def path.symm + def path.trans + structure path + theorem path_component.nonempty + def path_component + theorem path_component_congr + def path_component_in + theorem path_component_in_univ + theorem path_component_subset_component + theorem path_component_symm + def path_connected_space.some_path + theorem path_connected_space_iff_connected_space + theorem path_connected_space_iff_eq + theorem path_connected_space_iff_univ + theorem path_connected_space_iff_zeroth_homotopy + theorem path_connected_subset_basis + def path_setoid + def proj_I + theorem proj_I_I + theorem range_proj_I + theorem surjective_proj_I + def zeroth_homotopy 2020-08-04 16:33:38 f4b2790 feat(data/list/defs): add monadic versions of list.{find,any,all,bor,band} (#3679) Also universe-generalise `mfind` while I'm at it. ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.mall + def list.many + def list.mband + def list.mbfind' + def list.mbfind + def list.mbor +/- def list.mfind 2020-08-04 13:40:24 3ae6cea feat(group_theory/submonoid/operations): transfer galois connection/insertion lemmas (#3657) ESTIMATED CHANGES Modified src/group_theory/submonoid/operations.lean + theorem submonoid.comap_id + theorem submonoid.comap_inf_map_of_injective + theorem submonoid.comap_infi_map_of_injective + theorem submonoid.comap_injective_of_surjective + theorem submonoid.comap_le_comap_iff_of_surjective + theorem submonoid.comap_map_comap + theorem submonoid.comap_map_eq_of_injective + theorem submonoid.comap_strict_mono_of_surjective + theorem submonoid.comap_sup_map_of_injective + theorem submonoid.comap_supr_map_of_injective + theorem submonoid.comap_surjective_of_injective + def submonoid.gci_map_comap + def submonoid.gi_map_comap + theorem submonoid.le_comap_map + theorem submonoid.le_comap_of_map_le + theorem submonoid.map_comap_eq_of_surjective + theorem submonoid.map_comap_le + theorem submonoid.map_comap_map + theorem submonoid.map_inf_comap_of_surjective + theorem submonoid.map_infi_comap_of_surjective + theorem submonoid.map_injective_of_injective + theorem submonoid.map_le_map_iff_of_injective + theorem submonoid.map_le_of_le_comap + theorem submonoid.map_strict_mono_of_injective + theorem submonoid.map_sup_comap_of_surjective + theorem submonoid.map_supr_comap_of_surjective + theorem submonoid.map_surjective_of_surjective + theorem submonoid.monotone_comap + theorem submonoid.monotone_map 2020-08-04 10:47:06 78fe862 chore(measure_theory/lebesgue_measure): review (#3686) * use `ennreal.of_real` instead of `coe ∘ nnreal.of_real`; * avoid some non-finishing `simp`s; * simplify proofs of `lebesgue_outer_Ico/Ioc/Ioo`; * add `instance : locally_finite_measure (volume : measure ℝ)` instead of `real.volume_lt_top_of_bounded` and `real.volume_lt_top_of_compact`. ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.of_real_add_le + theorem ennreal.of_real_coe_nnreal +/- theorem ennreal.of_real_eq_coe_nnreal + theorem ennreal.to_real_of_real' +/- theorem ennreal.to_real_of_real Modified src/measure_theory/lebesgue_measure.lean + theorem measure_theory.borel_le_lebesgue_measurable +/- theorem measure_theory.lebesgue_length_eq_infi_Icc +/- theorem measure_theory.lebesgue_length_eq_infi_Ioo +/- theorem measure_theory.lebesgue_length_mono + theorem measure_theory.lebesgue_outer_Ioc +/- theorem real.volume_Icc +/- theorem real.volume_Ico + theorem real.volume_Ioc +/- theorem real.volume_Ioo - theorem real.volume_lt_top_of_bounded - theorem real.volume_lt_top_of_compact +/- theorem real.volume_singleton Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.diff_null 2020-08-04 10:47:04 8f02ad2 feat(geometry/euclidean): orthogonal projection (#3662) Define orthogonal projection onto an affine subspace of a Euclidean affine space, and prove some basic lemmas about it. ESTIMATED CHANGES Modified src/geometry/euclidean.lean + theorem euclidean_geometry.dist_orthogonal_projection_eq_zero_iff + theorem euclidean_geometry.dist_orthogonal_projection_ne_zero_of_not_mem + theorem euclidean_geometry.dist_square_eq_dist_orthogonal_projection_square_add_dist_orthogonal_projection_square + theorem euclidean_geometry.dist_square_smul_orthogonal_vadd_smul_orthogonal_vadd + theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection + theorem euclidean_geometry.inter_eq_singleton_orthogonal_projection_fn + def euclidean_geometry.orthogonal_projection + theorem euclidean_geometry.orthogonal_projection_eq_self_iff + def euclidean_geometry.orthogonal_projection_fn + theorem euclidean_geometry.orthogonal_projection_fn_eq + theorem euclidean_geometry.orthogonal_projection_fn_mem + theorem euclidean_geometry.orthogonal_projection_fn_mem_orthogonal + theorem euclidean_geometry.orthogonal_projection_fn_vsub_mem_direction_orthogonal + theorem euclidean_geometry.orthogonal_projection_mem + theorem euclidean_geometry.orthogonal_projection_mem_orthogonal + theorem euclidean_geometry.orthogonal_projection_vadd_eq_self + theorem euclidean_geometry.orthogonal_projection_vadd_smul_vsub_orthogonal_projection + theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction + theorem euclidean_geometry.orthogonal_projection_vsub_mem_direction_orthogonal + theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction + theorem euclidean_geometry.vsub_orthogonal_projection_mem_direction_orthogonal 2020-08-04 09:49:04 14d206b feat(order/filter/interval): define class `filter.is_interval_generated` (#3663) ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.exists_finite_iff_finset Modified src/order/filter/bases.lean + theorem filter.has_basis_infi_principal_finite Added src/order/filter/interval.lean + theorem filter.has_basis.is_interval_generated + theorem filter.has_ord_connected_basis + theorem filter.is_interval_generated_principal_iff + theorem filter.tendsto.Icc + theorem filter.tendsto.Ico + theorem filter.tendsto.Ioc + theorem filter.tendsto.Ioo + theorem filter.tendsto.Ixx + theorem filter.tendsto_Ixx_same_filter + theorem set.ord_connected.is_interval_generated_inf_principal Modified src/topology/algebra/ordered.lean 2020-08-04 09:49:02 ed377e1 feat(analysis/convex): a local minimum of a convex function is a global minimum (#3613) ESTIMATED CHANGES Added src/analysis/convex/extrema.lean + theorem is_min_on.of_is_local_min_of_convex_univ + theorem is_min_on.of_is_local_min_on_of_convex_on + theorem is_min_on.of_is_local_min_on_of_convex_on_Icc Modified src/linear_algebra/affine_space.lean + theorem affine_map.decomp' + theorem affine_map.decomp Added src/topology/algebra/affine.lean + theorem affine_map.continuous_iff + theorem affine_map.line_map_continuous 2020-08-04 09:09:02 b4a6651 chore(order/filter/at_top_bot): golf three proofs (#3684) Also add `is_countably_generated_at_top`. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.at_top_finset_eq_infi + theorem filter.is_countably_generated_at_top +/- theorem filter.monotone.tendsto_at_top_finset 2020-08-04 07:11:52 b0de811 chore(measure_theory/borel_space): DRY by using `order_dual` (#3685) ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean 2020-08-04 02:05:22 d9a6e47 feat(measure_theory/group): regular, invariant, and conjugate measures (#3650) Define the notion of a regular measure. I did this in Borel space, which required me to add an import measure_space -> borel_space. Define left invariant and right invariant measures for groups Define the conjugate measure, and show it is left invariant iff the original is right invariant ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem measure_theory.measure.regular.inner_regular_eq + theorem measure_theory.measure.regular.outer_regular_eq + structure measure_theory.measure.regular Added src/measure_theory/group.lean + def measure_theory.is_left_invariant + theorem measure_theory.is_left_invariant_conj' + theorem measure_theory.is_left_invariant_conj + def measure_theory.is_right_invariant + theorem measure_theory.is_right_invariant_conj' + theorem measure_theory.is_right_invariant_conj + theorem measure_theory.measure.conj_apply + theorem measure_theory.measure.conj_conj + theorem measure_theory.measure.map_mul_left_eq_self + theorem measure_theory.measure.map_mul_right_eq_self + theorem measure_theory.measure.regular.conj + theorem measure_theory.regular_conj_iff Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.ext_iff 2020-08-04 00:36:52 acedda0 chore(scripts): update nolints.txt (#3682) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-03 20:53:03 b215e95 fix(data/set/intervals/basic): fix a typo (#3680) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean - theorem set.Ioo_subset_Ioo_union_Ici + theorem set.Ioo_subset_Ioo_union_Ico 2020-08-03 20:53:01 234011d chore(order/filter/lift): prove `has_basis.lift` and `has_basis.lift'` (#3618) ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis_principal Modified src/order/filter/lift.lean + theorem filter.has_basis.lift' + theorem filter.has_basis.lift + theorem filter.has_basis.mem_lift_iff 2020-08-03 19:22:21 50d1c48 feat(order/galois_connection): galois_coinsertions (#3656) ESTIMATED CHANGES Modified src/order/basic.lean + theorem strict_mono_of_le_iff_le +/- theorem strict_mono_of_monotone_of_injective Modified src/order/galois_connection.lean + def galois_coinsertion.dual + theorem galois_coinsertion.l_injective + theorem galois_coinsertion.l_le_l_iff + def galois_coinsertion.lift_bounded_lattice + def galois_coinsertion.lift_complete_lattice + def galois_coinsertion.lift_lattice + def galois_coinsertion.lift_order_bot + def galois_coinsertion.lift_semilattice_inf + def galois_coinsertion.lift_semilattice_sup + def galois_coinsertion.monotone_intro + def galois_coinsertion.of_dual + theorem galois_coinsertion.strict_mono_l + theorem galois_coinsertion.u_inf_l + theorem galois_coinsertion.u_infi_l + theorem galois_coinsertion.u_infi_of_lu_eq_self + theorem galois_coinsertion.u_l_eq + theorem galois_coinsertion.u_sup_l + theorem galois_coinsertion.u_supr_l + theorem galois_coinsertion.u_supr_of_lu_eq_self + theorem galois_coinsertion.u_surjective + structure galois_coinsertion + def galois_connection.lift_order_top + def galois_connection.to_galois_coinsertion + def galois_connection.to_galois_insertion + def galois_insertion.dual - theorem galois_insertion.l_infi_of_ul + theorem galois_insertion.l_infi_of_ul_eq_self - theorem galois_insertion.l_supr_of_ul + theorem galois_insertion.l_supr_of_ul_eq_self + def galois_insertion.of_dual + theorem galois_insertion.strict_mono_u + theorem galois_insertion.u_le_u_iff 2020-08-03 19:22:19 40c6a29 feat(measure_theory/content): define outer measure from content (#3649) Part of the development for the Haar measure: define an outer measure from a content. ESTIMATED CHANGES Added src/measure_theory/content.lean + def measure_theory.inner_content + theorem measure_theory.inner_content_Sup_nat + theorem measure_theory.inner_content_Union_nat + theorem measure_theory.inner_content_empty + theorem measure_theory.inner_content_exists_compact + theorem measure_theory.inner_content_le + theorem measure_theory.inner_content_mono' + theorem measure_theory.inner_content_mono + theorem measure_theory.inner_content_of_is_compact + theorem measure_theory.inner_content_pos + theorem measure_theory.is_left_invariant_inner_content + theorem measure_theory.le_inner_content + theorem measure_theory.outer_measure.le_of_content_compacts + def measure_theory.outer_measure.of_content + theorem measure_theory.outer_measure.of_content_exists_compact + theorem measure_theory.outer_measure.of_content_exists_open + theorem measure_theory.outer_measure.of_content_interior_compacts + theorem measure_theory.outer_measure.of_content_opens + theorem measure_theory.outer_measure.of_content_pos_of_is_open 2020-08-03 17:57:40 018309f chore(linear_algebra/basis): replace explicit arguments for 0 ≠ 1 with nontrivial R (#3678) ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/linear_algebra/basis.lean +/- theorem eq_of_linear_independent_of_span_subtype +/- theorem is_basis.injective +/- theorem le_of_span_le_span +/- theorem linear_independent.injective +/- theorem linear_independent.ne_zero +/- theorem span_le_span_iff +/- theorem surjective_of_linear_independent_of_span Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/matrix.lean Modified src/ring_theory/noetherian.lean 2020-08-03 17:57:38 6186c69 feat(group_theory/subgroup): range_gpowers_hom (#3677) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem add_subgroup.range_gmultiples_hom + theorem subgroup.range_gpowers_hom 2020-08-03 17:57:36 b8df8aa feat(algebra/ring): the codomain of a ring hom is trivial iff ... (#3676) In the discussion of #3488, Johan (currently on vacation, so I'm not pinging him) noted that we were missing the lemma "if `f` is a ring homomorphism, `∀ x, f x = 0` implies that the codomain is trivial". This PR adds a couple of ways to derive from homomorphisms that rings are trivial. I used `0 = 1` to express that the ring is trivial because that seems to be the one that is used in practice. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring_hom.codomain_trivial_iff_map_one_eq_zero + theorem ring_hom.codomain_trivial_iff_range_eq_singleton_zero + theorem ring_hom.codomain_trivial_iff_range_trivial + theorem ring_hom.domain_nontrivial + theorem ring_hom.map_one_ne_zero Modified src/data/polynomial/eval.lean + theorem polynomial.map_monic_ne_zero Modified src/ring_theory/ideal_over.lean +/- theorem ideal.comap_lt_comap_of_integral_mem_sdiff 2020-08-03 17:57:34 5f9e427 feat(analysis/normed_space/add_torsor): isometries of normed_add_torsors (#3666) Add the lemma that an isometry of `normed_add_torsor`s induces an isometry of the corresponding `normed_group`s at any base point. Previously discussed on Zulip, see ; both statement and proof have been revised along the lines indicated in that discussion. ESTIMATED CHANGES Modified src/analysis/normed_space/add_torsor.lean + theorem isometric.isometry_vadd_vsub_of_isometry 2020-08-03 17:57:32 aef7ade feat(data/set/intervals): a few lemmas needed by FTC-1 (#3653) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean +/- theorem set.Ico_diff_Iio +/- theorem set.Ico_inter_Iio + theorem set.Ioc_union_Ioc + theorem set.Ioc_union_Ioc_left + theorem set.Ioc_union_Ioc_right + theorem set.Ioc_union_Ioc_symm + theorem set.Ioc_union_Ioc_union_Ioc_cycle Modified src/data/set/intervals/disjoint.lean + theorem set.Ico_disjoint_Ico_same + theorem set.Ioc_disjoint_Ioc + theorem set.Ioc_disjoint_Ioc_same 2020-08-03 16:25:13 c6381aa chore(algebra/group_ring_action): docstring, move monoid.End to algebra/group/hom (#3671) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem add_monoid.coe_mul + theorem add_monoid.coe_one + theorem monoid.coe_mul + theorem monoid.coe_one Modified src/algebra/group_ring_action.lean - def add_monoid.End - def monoid.End 2020-08-03 14:09:09 b2be1ee feat(measure_theory/measure_space): add 3 typeclasses (#3664) Define `probability_measure`, `finite_measure`, and `locally_finite_measure`. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean Modified src/data/real/ennreal.lean + theorem ennreal.one_lt_top Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.lintegral_congr Modified src/measure_theory/measure_space.lean + theorem is_compact.finite_measure + theorem measure_theory.ae_mono + theorem measure_theory.ae_restrict_iff + theorem measure_theory.finite_at_filter_of_finite + theorem measure_theory.measure.finite_at_filter.filter_mono + theorem measure_theory.measure.finite_at_filter.filter_mono_ae + theorem measure_theory.measure.finite_at_filter.filter_sup + theorem measure_theory.measure.finite_at_filter.inf_ae_iff + theorem measure_theory.measure.finite_at_filter.inf_of_left + theorem measure_theory.measure.finite_at_filter.inf_of_right + def measure_theory.measure.finite_at_filter + theorem measure_theory.measure.finite_at_nhds + theorem measure_theory.measure.finite_at_nhds_within + theorem measure_theory.measure.finite_at_principal + theorem measure_theory.measure.le_sum +/- theorem measure_theory.measure_congr - theorem measure_theory.measure_diff_of_ae_imp + theorem measure_theory.measure_diff_of_ae_le - theorem measure_theory.measure_le_of_ae_imp + theorem measure_theory.measure_mono_ae + theorem measure_theory.restrict_congr + theorem measure_theory.restrict_mono_ae + theorem metric.bounded.finite_measure Modified src/order/filter/basic.lean + theorem filter.eventually_eq.filter_mono - theorem filter.eventually_eq.mem_iff + theorem filter.eventually_eq_set - theorem filter.eventually_set_ext 2020-08-03 11:29:40 3781435 feat(algebra/category/Group): the category of abelian groups is abelian (#3621) ESTIMATED CHANGES Added src/algebra/category/Group/abelian.lean + def AddCommGroup.normal_epi + def AddCommGroup.normal_mono Modified src/algebra/category/Module/abelian.lean +/- def Module.normal_epi +/- def Module.normal_mono Modified src/category_theory/limits/shapes/equalizers.lean +/- def category_theory.limits.parallel_pair Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.comp_nat_iso + def category_theory.limits.iso_of_ι + def category_theory.limits.iso_of_π + def category_theory.limits.of_ι_congr + def category_theory.limits.of_π_congr Modified src/category_theory/limits/shapes/regular_mono.lean + def category_theory.equivalence_reflects_normal_epi + def category_theory.equivalence_reflects_normal_mono Modified src/category_theory/limits/shapes/zero.lean +/- theorem category_theory.limits.equivalence_preserves_zero_morphisms + theorem category_theory.limits.is_equivalence_preserves_zero_morphisms 2020-08-03 11:29:38 6079ef9 feat(analysis/normed_space/real_inner_product): orthogonal projection (#3563) `analysis.normed_space.real_inner_product` proves the existence of orthogonal projections onto complete subspaces, but only in the form of an existence theorem without a corresponding `def` for the function that is proved to exist. Add the corresponding `def` of `orthogonal_projection` as a `linear_map` and lemmas with the basic properties, extracted from the existing results with `some` and `some_spec`. For convenience in constructing the `linear_map`, some lemmas are first proved for a version of the orthogonal projection as an unbundled function, then used in the definition of the bundled `linear_map` version, then restarted for the bundled version (the two versions of each lemma being definitionally equal; the bundled version is considered the main version that should be used in all subsequent code). This is preparation for defining the corresponding operation for Euclidean affine spaces as an `affine_map`. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem eq_orthogonal_projection_fn_of_mem_of_inner_eq_zero + theorem eq_orthogonal_projection_of_mem_of_inner_eq_zero + def orthogonal_projection + def orthogonal_projection_fn + theorem orthogonal_projection_fn_eq + theorem orthogonal_projection_fn_inner_eq_zero + theorem orthogonal_projection_fn_mem + theorem orthogonal_projection_inner_eq_zero + theorem orthogonal_projection_mem 2020-08-03 10:04:53 8e0d111 feat(data/finset/lattice,data/finset/sort): singleton lemmas (#3668) Add lemmas about `min'`, `max'` and `mono_of_fin` for a singleton `finset`. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.max'_singleton + theorem finset.min'_singleton Modified src/data/finset/sort.lean + theorem finset.mono_of_fin_singleton 2020-08-03 10:04:51 61db67d chore(measure_theory/integration): define composition of a `simple_func` and a measurable function (#3667) ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.simple_func.coe_comp + def measure_theory.simple_func.comp + theorem measure_theory.simple_func.range_comp_subset_range 2020-08-03 10:04:49 292c921 doc(category_theory): add library note about 'dsimp, simp' pattern (#3659) ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/default.lean Modified src/category_theory/currying.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/constructions/over/connected.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/over.lean Modified src/category_theory/punit.lean Modified src/category_theory/whiskering.lean Modified src/data/matrix/basic.lean 2020-08-03 09:08:57 3d41e33 feat(group_theory/submonoid/operations): mrange_eq_map (#3673) ESTIMATED CHANGES Modified src/group_theory/submonoid/operations.lean + theorem monoid_hom.mrange_eq_map 2020-08-03 08:41:40 d3e1f5f feat(README): add @Vierkantor to maintainer list (#3674) ESTIMATED CHANGES Modified README.md 2020-08-03 07:29:19 d6c17c9 feat(linear_algebra/affine_space): simplex ext lemmas (#3669) Add `ext` lemmas for `affine_space.simplex`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + theorem affine_space.simplex.ext + theorem affine_space.simplex.ext_iff 2020-08-03 05:29:42 60ba478 feat(algebra/category/Module): the category of R-modules is abelian (#3606) ESTIMATED CHANGES Added src/algebra/category/Module/abelian.lean + def Module.normal_epi + def Module.normal_mono Modified src/algebra/category/Module/basic.lean + def Module.as_hom + theorem Module.epi_of_range_eq_top + theorem Module.ker_eq_bot_of_mono - def Module.kernel_cone - def Module.kernel_is_limit + theorem Module.mono_of_ker_eq_bot + theorem Module.range_eq_top_of_epi + def linear_equiv.to_Module_iso' Added src/algebra/category/Module/kernels.lean + def Module.cokernel_cocone + def Module.cokernel_is_colimit + def Module.has_cokernels_Module + def Module.has_kernels_Module + def Module.kernel_cone + def Module.kernel_is_limit Modified src/linear_algebra/basic.lean + theorem linear_map.comp_ker_subtype + theorem linear_map.ker_eq_bot_of_cancel + theorem linear_map.range_eq_top_of_cancel + theorem linear_map.range_mkq_comp + def submodule.quot_equiv_of_eq 2020-08-03 00:42:24 fb883ea chore(scripts): update nolints.txt (#3670) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-08-02 22:03:03 06df503 chore(analysis/calculus/times_cont_diff): transpose lemmas (#3665) In #3639 , I accidentally placed the new lemma `times_cont_diff_at_inverse` between `times_cont_diff_at.prod_map'` and `times_cont_diff.prod_map`. This fixes that. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean 2020-08-02 16:01:03 4588400 chore(group_theory/*): refactor quotient groups to use bundled subgroups (#3321) ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Group/images.lean +/- def AddCommGroup.factor_thru_image +/- def AddCommGroup.image.ι +/- def AddCommGroup.image Modified src/algebra/group/type_tags.lean + def add_monoid_hom.to_multiplicative' + def monoid_hom.to_additive' Modified src/algebra/group_action_hom.lean Modified src/algebra/group_ring_action.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/category_theory/action.lean +/- def category_theory.action_category.stabilizer_iso_End +/- theorem category_theory.action_category.stabilizer_iso_End_apply Modified src/data/equiv/mul_add.lean Modified src/deprecated/subgroup.lean Modified src/deprecated/submonoid.lean Modified src/field_theory/finite.lean Modified src/group_theory/abelianization.lean +/- theorem abelianization.commutator_subset_ker + theorem abelianization.hom_ext +/- theorem abelianization.lift.of +/- def abelianization.lift +/- def abelianization.of +/- def commutator Modified src/group_theory/coset.lean +/- theorem eq_cosets_of_normal - def is_subgroup.left_coset_equiv_subgroup +/- theorem normal_iff_eq_cosets +/- theorem normal_of_eq_cosets + def quotient_add_group.quotient +/- theorem quotient_group.eq_class_eq_left_coset +/- def quotient_group.left_rel +/- def quotient_group.quotient +/- theorem right_coset_mem_right_coset + def subgroup.left_coset_equiv_subgroup Modified src/group_theory/free_abelian_group.lean +/- def free_abelian_group.lift + def free_abelian_group.map + theorem free_abelian_group.of_mul + theorem free_abelian_group.of_mul_of + theorem free_abelian_group.of_one + theorem free_abelian_group.one_def Modified src/group_theory/free_group.lean + theorem free_group.closure_subset + def free_group.map.to_fun +/- def free_group.map +/- theorem free_group.prod.unique +/- def free_group.prod +/- theorem free_group.to_group.range_subset + def free_group.to_group.to_fun +/- theorem free_group.to_group.unique +/- def free_group.to_group Modified src/group_theory/group_action.lean +/- def mul_action.comp_hom + theorem mul_action.eq_inv_smul_iff + theorem mul_action.inv_smul_eq_iff +/- def mul_action.mul_left_cosets + def mul_action.stabilizer.subgroup + def mul_action.stabilizer.submonoid +/- def mul_action.stabilizer + def mul_action.stabilizer_carrier Modified src/group_theory/order_of_element.lean +/- theorem card_eq_card_quotient_mul_card_subgroup +/- theorem card_quotient_dvd_card +/- theorem card_subgroup_dvd_card +/- theorem card_trivial + theorem mem_powers_iff_mem_gpowers +/- theorem order_eq_card_gpowers +/- theorem powers_eq_gpowers Modified src/group_theory/presented_group.lean +/- theorem presented_group.closure_rels_subset_ker +/- theorem presented_group.to_group.unique +/- def presented_group.to_group +/- theorem presented_group.to_group_eq_one_of_mem_closure Modified src/group_theory/quotient_group.lean +/- def quotient_group.ker_lift +/- def quotient_group.lift +/- theorem quotient_group.lift_mk' +/- theorem quotient_group.lift_mk +/- def quotient_group.map + def quotient_group.mk' + def quotient_group.range_ker_lift + theorem quotient_group.range_ker_lift_injective + theorem quotient_group.range_ker_lift_surjective Modified src/group_theory/subgroup.lean + theorem add_subgroup.gmultiples_subset +/- theorem monoid_hom.mem_ker + def monoid_hom.to_range + theorem monoid_hom.to_range_ker + theorem subgroup.gpowers_subset +/- theorem subgroup.mem_bot + def subgroup.set_normalizer Modified src/group_theory/submonoid/membership.lean + theorem add_submonoid.mem_multiples + def add_submonoid.multiples + theorem add_submonoid.multiples_eq_closure + theorem add_submonoid.multiples_subset + theorem submonoid.mem_powers + def submonoid.powers + theorem submonoid.powers_eq_closure + theorem submonoid.powers_subset Modified src/group_theory/sylow.lean +/- theorem quotient_group.card_preimage_mk +/- def sylow.fixed_points_mul_left_cosets_equiv_quotient +/- theorem sylow.mem_fixed_points_mul_left_cosets_iff_mem_normalizer Modified src/number_theory/quadratic_reciprocity.lean Modified src/ring_theory/free_comm_ring.lean +/- def free_comm_ring.lift +/- theorem free_comm_ring.lift_comp_of + theorem free_comm_ring.lift_hom_comp_of +/- def free_comm_ring.restriction +/- def free_ring.to_free_comm_ring Modified src/ring_theory/free_ring.lean + def free_ring.lift_hom + def free_ring.map_hom Modified src/topology/algebra/group.lean +/- theorem quotient_group_saturate Modified src/topology/algebra/monoid.lean - theorem is_submonoid.mem_nhds_one + theorem submonoid.mem_nhds_one 2020-08-02 11:46:51 6559832 feat(order/filter/lift): a few lemmas about `filter.lift' _ powerset` (#3652) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.powerset_mono + theorem set.powerset_nonempty Modified src/order/filter/lift.lean + theorem filter.eventually_lift'_iff + theorem filter.eventually_lift'_powerset' + theorem filter.eventually_lift'_powerset + theorem filter.eventually_lift'_powerset_eventually + theorem filter.eventually_lift'_powerset_forall 2020-08-02 11:46:49 fe4da7b feat(category_theory/limits): transporting is_limit (#3598) Some lemmas about moving `is_limit` terms around over equivalences, or (post|pre)composing. ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.hom_is_iso + def category_theory.limits.is_colimit.of_left_adjoint + def category_theory.limits.is_colimit.precompose_hom_equiv + def category_theory.limits.is_colimit.precompose_inv_equiv + def category_theory.limits.is_limit.hom_is_iso + def category_theory.limits.is_limit.of_right_adjoint + def category_theory.limits.is_limit.postcompose_hom_equiv + def category_theory.limits.is_limit.postcompose_inv_equiv Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/constructions/over/products.lean 2020-08-02 11:46:47 52c0b42 feat(category_theory): Mon_ (C ⥤ D) ≌ C ⥤ Mon_ D (#3576) When `D` is a monoidal category, monoid objects in `C ⥤ D` are the same thing as functors from `C` into the monoid objects of `D`. This is formalised as: * `Mon_functor_category_equivalence : Mon_ (C ⥤ D) ≌ C ⥤ Mon_ D` The intended application is that as `Ring ≌ Mon_ Ab` (not yet constructed!), we have `presheaf Ring X ≌ presheaf (Mon_ Ab) X ≌ Mon_ (presheaf Ab X)`, and we can model a module over a presheaf of rings as a module object in `presheaf Ab X`. ESTIMATED CHANGES Added src/category_theory/monoidal/internal/functor_category.lean + def category_theory.monoidal.Mon_functor_category_equivalence.counit_iso + def category_theory.monoidal.Mon_functor_category_equivalence.functor + def category_theory.monoidal.Mon_functor_category_equivalence.inverse + def category_theory.monoidal.Mon_functor_category_equivalence.unit_iso + def category_theory.monoidal.Mon_functor_category_equivalence Modified src/category_theory/natural_transformation.lean + theorem category_theory.congr_app 2020-08-02 11:46:45 e99518b feat(category_theory): braided and symmetric categories (#3550) Just the very basics: * the definition of braided and symmetric categories * braided functors, and compositions thereof * the symmetric monoidal structure coming from products * upgrading `Type u` to a symmetric monoidal structure This is prompted by the desire to explore modelling sheaves of modules as the monoidal category of module objects for an internal commutative monoid in sheaves of `Ab`. ESTIMATED CHANGES Added src/category_theory/monoidal/braided.lean + def category_theory.braided_functor.comp + def category_theory.braided_functor.id + structure category_theory.braided_functor Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/of_has_finite_products.lean + def category_theory.symmetric_of_has_finite_coproducts + def category_theory.symmetric_of_has_finite_products Modified src/category_theory/monoidal/types.lean 2020-08-02 11:46:43 8c1e2da feat(linear_algebra/tensor_algebra): Tensor algebras (#3531) This PR constructs the tensor algebra of a module over a commutative ring. The main components are: 1. The construction of the tensor algebra: `tensor_algebra R M` for a module `M` over a commutative ring `R`. 2. The linear map `univ R M` from `M` to `tensor_algebra R M`. 3. Given a linear map `f`from `M`to an `R`-algebra `A`, the lift of `f` to `tensor_algebra R M` is denoted `lift R M f`. 4. A theorem `univ_comp_lift` asserting that the composition of `univ R M` with `lift R M f`is `f`. 5. A theorem `lift_unique` asserting the uniqueness of `lift R M f`with respect to property 4. ESTIMATED CHANGES Modified src/data/quot.lean + theorem quot.lift_on₂_mk + theorem quot.lift₂_mk + theorem quot.map₂_mk Added src/linear_algebra/tensor_algebra.lean + theorem tensor_algebra.hom_ext + def tensor_algebra.lift + theorem tensor_algebra.lift_comp_ι + def tensor_algebra.lift_fun + theorem tensor_algebra.lift_unique + def tensor_algebra.pre.has_add + def tensor_algebra.pre.has_coe_module + def tensor_algebra.pre.has_coe_semiring + def tensor_algebra.pre.has_mul + def tensor_algebra.pre.has_one + def tensor_algebra.pre.has_scalar + def tensor_algebra.pre.has_zero + inductive tensor_algebra.pre + inductive tensor_algebra.rel + def tensor_algebra.ι + theorem tensor_algebra.ι_comp_lift + def tensor_algebra 2020-08-02 10:18:28 58f2c36 feat(dynamics/periodic_pts): definition and basic properties (#3660) Also add more lemmas about `inj/surj/bij_on` and `maps_to`. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.bij_on.inter + theorem set.bij_on.union + theorem set.maps_to.inter + theorem set.maps_to.inter_inter + theorem set.maps_to.union + theorem set.maps_to.union_union + theorem set.surj_on.inter + theorem set.surj_on.inter_inter + theorem set.surj_on.union + theorem set.surj_on.union_union Modified src/data/set/lattice.lean + theorem set.bij_on_Inter + theorem set.bij_on_Inter_of_directed + theorem set.bij_on_Union + theorem set.bij_on_Union_of_directed + theorem set.image_Inter_subset + theorem set.image_bInter_subset + theorem set.image_sInter_subset + theorem set.inj_on.image_Inter_eq + theorem set.inj_on.image_bInter_eq + theorem set.inj_on_Union_of_directed + theorem set.maps_to_Inter + theorem set.maps_to_Inter_Inter + theorem set.maps_to_Union + theorem set.maps_to_Union_Union + theorem set.maps_to_bInter + theorem set.maps_to_bInter_bInter + theorem set.maps_to_bUnion + theorem set.maps_to_bUnion_bUnion + theorem set.maps_to_sInter + theorem set.maps_to_sUnion + theorem set.surj_on_Inter + theorem set.surj_on_Inter_Inter + theorem set.surj_on_Union + theorem set.surj_on_Union_Union + theorem set.surj_on_bUnion + theorem set.surj_on_bUnion_bUnion + theorem set.surj_on_sUnion Added src/dynamics/periodic_pts.lean + theorem function.Union_pnat_pts_of_period + theorem function.bUnion_pts_of_period + theorem function.bij_on_periodic_pts + theorem function.bij_on_pts_of_period + theorem function.directed_pts_of_period_pnat + theorem function.is_fixed_pt.is_periodic_pt + theorem function.is_periodic_id + theorem function.is_periodic_pt.apply_iterate + theorem function.is_periodic_pt.eq_of_apply_eq + theorem function.is_periodic_pt.eq_of_apply_eq_same + theorem function.is_periodic_pt.eq_zero_of_lt_minimal_period + theorem function.is_periodic_pt.left_of_add + theorem function.is_periodic_pt.minimal_period_dvd + theorem function.is_periodic_pt.minimal_period_le + theorem function.is_periodic_pt.minimal_period_pos + theorem function.is_periodic_pt.right_of_add + theorem function.is_periodic_pt.trans_dvd + def function.is_periodic_pt + theorem function.is_periodic_pt_iff_minimal_period_dvd + theorem function.is_periodic_pt_minimal_period + theorem function.is_periodic_pt_zero + theorem function.mem_periodic_pts + theorem function.mem_pts_of_period + def function.minimal_period + theorem function.minimal_period_pos_iff_mem_periodic_pts + theorem function.minimal_period_pos_of_mem_periodic_pts + theorem function.mk_mem_periodic_pts + def function.periodic_pts + def function.pts_of_period + theorem function.semiconj.maps_to_periodic_pts + theorem function.semiconj.maps_to_pts_of_period 2020-08-02 08:31:21 78655b6 feat(data/set/intervals): define `set.ord_connected` (#3647) A set `s : set α`, `[preorder α]` is `ord_connected` if for any `x y ∈ s` we have `[x, y] ⊆ s`. For real numbers this property is equivalent to each of the properties `convex s` and `is_preconnected s`. We define it for any `preorder`, prove some basic properties, and migrate lemmas like `convex_I??` and `is_preconnected_I??` to this API. ESTIMATED CHANGES Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/convex/basic.lean +/- theorem convex_Icc +/- theorem convex_Ici +/- theorem convex_Ico +/- theorem convex_Iic +/- theorem convex_Iio +/- theorem convex_Ioc +/- theorem convex_Ioi +/- theorem convex_Ioo + theorem convex_interval - theorem convex_real_iff + theorem real.convex_iff_ord_connected Modified src/analysis/convex/topology.lean + theorem real.convex_iff_is_preconnected Modified src/data/set/intervals/basic.lean +/- theorem set.Icc_diff_Ico_same +/- theorem set.Icc_diff_Ioc_same +/- theorem set.Icc_diff_Ioo_same +/- theorem set.Icc_diff_both +/- theorem set.Icc_diff_left +/- theorem set.Icc_diff_right +/- theorem set.Ici_diff_Ioi_same +/- theorem set.Ici_diff_left +/- theorem set.Ico_diff_Ioo_same +/- theorem set.Ico_diff_left +/- theorem set.Iic_diff_Iio_same +/- theorem set.Iic_diff_right +/- theorem set.Iio_union_right +/- theorem set.Ioc_diff_Ioo_same +/- theorem set.Ioc_diff_right +/- theorem set.Ioi_union_left Added src/data/set/intervals/ord_connected.lean + theorem set.ord_connected.dual + theorem set.ord_connected.inter + theorem set.ord_connected.interval_subset + def set.ord_connected + theorem set.ord_connected_Icc + theorem set.ord_connected_Ici + theorem set.ord_connected_Ico + theorem set.ord_connected_Iic + theorem set.ord_connected_Iio + theorem set.ord_connected_Inter + theorem set.ord_connected_Ioc + theorem set.ord_connected_Ioi + theorem set.ord_connected_Ioo + theorem set.ord_connected_bInter + theorem set.ord_connected_dual + theorem set.ord_connected_empty + theorem set.ord_connected_iff + theorem set.ord_connected_iff_interval_subset + theorem set.ord_connected_interval + theorem set.ord_connected_of_Ioo + theorem set.ord_connected_sInter + theorem set.ord_connected_univ Modified src/topology/algebra/ordered.lean +/- theorem is_preconnected_Ici +/- theorem is_preconnected_Ico +/- theorem is_preconnected_Iic +/- theorem is_preconnected_Iio +/- theorem is_preconnected_Ioc +/- theorem is_preconnected_Ioi +/- theorem is_preconnected_Ioo - theorem is_preconnected_iff_forall_Icc_subset + theorem is_preconnected_iff_ord_connected + theorem is_preconnected_interval 2020-08-02 08:31:19 f2db6a8 chore(algebra/order): enable dot syntax (#3643) Add dot syntax aliases to some lemmas about order (e.g., `has_le.le.trans`). Also remove `lt_of_le_of_ne'` (was equivalent to `lt_of_le_of_ne`). ESTIMATED CHANGES Modified src/algebra/order.lean + theorem has_le.le.le_or_lt + theorem has_le.le.lt_or_le - theorem lt_of_le_of_ne' Modified src/analysis/normed_space/real_inner_product.lean 2020-08-02 06:44:24 6394e4d feat(algebra/category/*): forget reflects isos (#3600) ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/adjunctions.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Group/images.lean Modified src/algebra/category/Mon/basic.lean Added src/category_theory/concrete_category/reflects_isomorphisms.lean Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocones.cocone_iso_of_hom_iso + def category_theory.limits.cones.cone_iso_of_hom_iso Modified src/category_theory/limits/limits.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/over.lean Deleted src/category_theory/reflect_isomorphisms.lean - def category_theory.cocone_iso_of_hom_iso - def category_theory.cone_iso_of_hom_iso - def category_theory.is_iso_of_reflects_iso Added src/category_theory/reflects_isomorphisms.lean + def category_theory.is_iso_of_reflects_iso Modified src/topology/category/TopCommRing.lean Modified src/topology/sheaves/presheaf_of_functions.lean 2020-08-02 04:10:31 d76c75e feat(measure_theory): cleanup and generalize measure' (#3648) There were two functions `measure'` and `outer_measure'` with undescriptive names, and which were not very general rename `measure'` -> `extend` rename `outer_measure'` -> `induced_outer_measure` generalize both `extend` and `induced_outer_measure` to an arbitrary subset of `set α` (instead of just the measurable sets). Most lemmas still hold in full generality, sometimes with a couple more assumptions. For the lemmas that need more assumptions, we have also kept the version that is just for `is_measurable`. Move functions `extend`, `induced_outer_measure` and `trim` to `outer_measure.lean`. rename `caratheodory_is_measurable` -> `of_function_caratheodory` rename `trim_ge` -> `le_trim` Make the section on caratheodory sets not private (and give a more descriptive name to lemmas). Style in `measurable_space` and `outer_measure` ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.set.image_symm_preimage Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean +/- theorem is_measurable.Union +/- def measurable +/- theorem measurable_space.dynkin_system.ext Modified src/measure_theory/measure_space.lean - def measure_theory.measure' - theorem measure_theory.measure'_Union - theorem measure_theory.measure'_Union_le_tsum_nat' - theorem measure_theory.measure'_Union_le_tsum_nat - theorem measure_theory.measure'_Union_nat - theorem measure_theory.measure'_empty - theorem measure_theory.measure'_eq - theorem measure_theory.measure'_mono - theorem measure_theory.measure'_union + theorem measure_theory.measure_eq_extend + theorem measure_theory.measure_eq_induced_outer_measure - theorem measure_theory.measure_eq_measure' - theorem measure_theory.measure_eq_outer_measure' - def measure_theory.outer_measure' - theorem measure_theory.outer_measure'_eq - theorem measure_theory.outer_measure'_eq_measure' - theorem measure_theory.outer_measure.exists_is_measurable_superset_of_trim_eq_zero - theorem measure_theory.outer_measure.le_trim_iff - def measure_theory.outer_measure.trim - theorem measure_theory.outer_measure.trim_add - theorem measure_theory.outer_measure.trim_congr - theorem measure_theory.outer_measure.trim_eq - theorem measure_theory.outer_measure.trim_eq_infi' - theorem measure_theory.outer_measure.trim_eq_infi - theorem measure_theory.outer_measure.trim_ge - theorem measure_theory.outer_measure.trim_le_trim - theorem measure_theory.outer_measure.trim_smul - theorem measure_theory.outer_measure.trim_sum_ge - theorem measure_theory.outer_measure.trim_trim - theorem measure_theory.outer_measure.trim_zero + theorem measure_theory.to_outer_measure_eq_induced_outer_measure - theorem measure_theory.to_outer_measure_eq_outer_measure' Modified src/measure_theory/outer_measure.lean + def measure_theory.extend + theorem measure_theory.extend_Union + theorem measure_theory.extend_Union_le_tsum_nat' + theorem measure_theory.extend_Union_le_tsum_nat + theorem measure_theory.extend_Union_nat + theorem measure_theory.extend_empty + theorem measure_theory.extend_eq + theorem measure_theory.extend_mono' + theorem measure_theory.extend_mono + theorem measure_theory.extend_union + def measure_theory.induced_outer_measure + theorem measure_theory.induced_outer_measure_caratheodory + theorem measure_theory.induced_outer_measure_eq' + theorem measure_theory.induced_outer_measure_eq + theorem measure_theory.induced_outer_measure_eq_extend' + theorem measure_theory.induced_outer_measure_eq_extend + theorem measure_theory.induced_outer_measure_eq_infi + theorem measure_theory.induced_outer_measure_exists_set + theorem measure_theory.le_extend + def measure_theory.outer_measure.caratheodory_dynkin - theorem measure_theory.outer_measure.caratheodory_is_measurable + theorem measure_theory.outer_measure.exists_is_measurable_superset_of_trim_eq_zero + theorem measure_theory.outer_measure.f_Union + def measure_theory.outer_measure.is_caratheodory - theorem measure_theory.outer_measure.is_caratheodory + theorem measure_theory.outer_measure.is_caratheodory_Union_lt + theorem measure_theory.outer_measure.is_caratheodory_Union_nat + theorem measure_theory.outer_measure.is_caratheodory_compl + theorem measure_theory.outer_measure.is_caratheodory_compl_iff + theorem measure_theory.outer_measure.is_caratheodory_empty + theorem measure_theory.outer_measure.is_caratheodory_iff + theorem measure_theory.outer_measure.is_caratheodory_iff_le' + theorem measure_theory.outer_measure.is_caratheodory_iff_le + theorem measure_theory.outer_measure.is_caratheodory_inter - theorem measure_theory.outer_measure.is_caratheodory_le + theorem measure_theory.outer_measure.is_caratheodory_sum + theorem measure_theory.outer_measure.is_caratheodory_union +/- theorem measure_theory.outer_measure.le_of_function + theorem measure_theory.outer_measure.le_trim + theorem measure_theory.outer_measure.le_trim_iff + theorem measure_theory.outer_measure.measure_inter_union + theorem measure_theory.outer_measure.of_function_caratheodory + theorem measure_theory.outer_measure.of_function_eq +/- theorem measure_theory.outer_measure.of_function_le + def measure_theory.outer_measure.trim + theorem measure_theory.outer_measure.trim_add + theorem measure_theory.outer_measure.trim_congr + theorem measure_theory.outer_measure.trim_eq + theorem measure_theory.outer_measure.trim_eq_infi' + theorem measure_theory.outer_measure.trim_eq_infi + theorem measure_theory.outer_measure.trim_le_trim + theorem measure_theory.outer_measure.trim_smul + theorem measure_theory.outer_measure.trim_sum_ge + theorem measure_theory.outer_measure.trim_trim + theorem measure_theory.outer_measure.trim_zero 2020-08-02 03:20:12 fc65ba0 feat(analysis/calculus/times_cont_diff): inversion is smooth (#3639) At an invertible element of a complete normed algebra, the inversion operation is smooth. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.comp_times_cont_diff_at + theorem times_cont_diff_at.comp + theorem times_cont_diff_at_inverse + theorem times_cont_diff_at_succ_iff_has_fderiv_at Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem continuous_linear_map.lmul_left_right_is_bounded_bilinear Modified src/analysis/normed_space/operator_norm.lean +/- def continuous_linear_map.lmul_left +/- theorem continuous_linear_map.lmul_left_apply + theorem continuous_linear_map.lmul_left_norm + def continuous_linear_map.lmul_left_right + theorem continuous_linear_map.lmul_left_right_apply + theorem continuous_linear_map.lmul_left_right_norm_le +/- def continuous_linear_map.lmul_right +/- theorem continuous_linear_map.lmul_right_apply + theorem continuous_linear_map.lmul_right_norm Modified src/analysis/normed_space/units.lean + theorem units.nhds Modified src/ring_theory/algebra.lean + def algebra.lmul_left_right + theorem algebra.lmul_left_right_apply 2020-08-02 02:10:22 d3de289 feat(topology/local_homeomorph): open_embedding.continuous_at_iff (#3599) ``` lemma continuous_at_iff {f : α → β} {g : β → γ} (hf : open_embedding f) {x : α} : continuous_at (g ∘ f) x ↔ continuous_at g (f x) := ``` ESTIMATED CHANGES Modified src/topology/local_homeomorph.lean + theorem open_embedding.continuous_at_iff 2020-08-01 21:07:07 4274ddd chore(*): bump to Lean 3.18.4 (#3610) * Remove `pi_arity` and the `vm_override` for `by_cases`, which have moved to core * Fix fallout from the change to the definition of `max` * Fix a small number of errors caused by changes to instance caching * Remove `min_add`, which is generalized by `min_add_add_right` and make `to_additive` generate some lemmas ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/order_functions.lean - theorem fn_min_add_fn_max - theorem min_add - theorem min_add_max Modified src/algebra/ordered_group.lean Modified src/computability/primrec.lean +/- theorem primrec.nat_max Modified src/control/traversable/equiv.lean Modified src/data/int/cast.lean Modified src/data/list/min_max.lean Modified src/data/polynomial/monic.lean Modified src/data/rat/cast.lean Modified src/measure_theory/borel_space.lean Modified src/meta/expr.lean Modified src/order/filter/filter_product.lean Modified src/ring_theory/algebra_tower.lean Modified src/set_theory/ordinal.lean Modified src/tactic/core.lean Deleted src/tactic/fix_by_cases.lean Modified src/tactic/interval_cases.lean Modified src/topology/algebra/ordered.lean 2020-08-01 15:55:33 92a20e6 feat(order/filter/extr, topology/local_extr): links between extremas of two eventually le/eq functions (#3624) Add many lemmas that look similar to e.g : if f and g are equal at `a`, and `f ≤ᶠ[l] g` for some filter `l`, then `is_min_filter l f a`implies `is_min_filter l g a` ESTIMATED CHANGES Modified src/order/filter/extr.lean + theorem filter.eventually_eq.is_extr_filter_iff + theorem filter.eventually_eq.is_max_filter_iff + theorem filter.eventually_eq.is_min_filter_iff + theorem filter.eventually_le.is_max_filter + theorem filter.eventually_le.is_min_filter + theorem is_extr_filter.congr + theorem is_max_filter.congr + theorem is_min_filter.congr Modified src/topology/continuous_on.lean + theorem filter.eventually_eq.eq_of_nhds_within Modified src/topology/local_extr.lean + theorem filter.eventually_eq.is_local_extr_iff + theorem filter.eventually_eq.is_local_extr_on_iff + theorem filter.eventually_eq.is_local_max_iff + theorem filter.eventually_eq.is_local_max_on_iff + theorem filter.eventually_eq.is_local_min_iff + theorem filter.eventually_eq.is_local_min_on_iff + theorem filter.eventually_le.is_local_max + theorem filter.eventually_le.is_local_max_on + theorem filter.eventually_le.is_local_min + theorem filter.eventually_le.is_local_min_on + theorem is_local_extr.congr + theorem is_local_extr_on.congr + theorem is_local_max.congr + theorem is_local_max_on.congr + theorem is_local_min.congr + theorem is_local_min_on.congr 2020-08-01 12:08:21 aa67315 chore(order/filter/bases): generalize `has_basis.restrict` (#3645) The old lemma is renamed to `filter.has_basis.restrict_subset` ESTIMATED CHANGES Modified src/order/filter/bases.lean +/- theorem filter.has_basis.restrict + theorem filter.has_basis.restrict_subset 2020-08-01 09:06:29 c6f3399 feat(topology/subset_properties): add `is_compact.induction_on` (#3642) ESTIMATED CHANGES Modified src/topology/subset_properties.lean + theorem is_compact.induction_on 2020-07-31 19:09:51 37ab426 feat(complete_lattice): put supr_congr and infi_congr back (#3646) ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem infi_congr + theorem supr_congr 2020-07-31 17:41:12 7e570ed chore(*): assorted small lemmas (#3644) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_o.trans_le Modified src/analysis/normed_space/indicator_function.lean + theorem nnnorm_indicator_eq_indicator_nnnorm Modified src/data/real/ennreal.lean + theorem ennreal.of_real_lt_top Modified src/order/filter/basic.lean + theorem filter.union_mem_sup Modified src/order/liminf_limsup.lean + theorem filter.is_bounded_under.mono Modified src/topology/instances/ennreal.lean 2020-07-31 17:41:10 396a764 feat(analysis/calculus/fderiv): inversion is differentiable (#3510) At an invertible element `x` of a complete normed algebra, the inversion operation of the algebra is Fréchet-differentiable, with derivative `λ t, - x⁻¹ * t * x⁻¹`. ESTIMATED CHANGES Modified src/algebra/ring/basic.lean + theorem ring.inverse_unit Modified src/analysis/asymptotics.lean + theorem asymptotics.is_o_id_const Modified src/analysis/calculus/fderiv.lean + theorem differentiable_at_inverse + theorem fderiv_inverse + theorem has_fderiv_at_inverse Modified src/analysis/normed_space/basic.lean +/- theorem summable_of_norm_bounded + theorem tsum_of_norm_bounded Modified src/analysis/normed_space/units.lean + theorem normed_ring.inverse_add + theorem normed_ring.inverse_add_norm + theorem normed_ring.inverse_add_norm_diff_first_order + theorem normed_ring.inverse_add_norm_diff_nth_order + theorem normed_ring.inverse_add_norm_diff_second_order + theorem normed_ring.inverse_add_nth_order + theorem normed_ring.inverse_continuous_at + theorem normed_ring.inverse_one_sub + theorem normed_ring.inverse_one_sub_norm + theorem normed_ring.inverse_one_sub_nth_order +/- def units.add +/- theorem units.add_coe +/- theorem units.one_sub_coe +/- def units.unit_of_nearby +/- theorem units.unit_of_nearby_coe Modified src/analysis/specific_limits.lean + theorem normed_ring.tsum_geometric_of_norm_lt_1 Modified src/topology/algebra/ring.lean + theorem mul_left_continuous + theorem mul_right_continuous 2020-07-31 16:13:36 3ae893d fix(tactic/simps): do not reach unreachable code (#3637) Fixes #3636 ESTIMATED CHANGES Modified src/tactic/simps.lean Modified test/simps.lean + structure needs_prop_class + def test_prop_class 2020-07-30 22:46:17 f78a012 feat(group_theory/subgroup): Add `mem_infi` and `coe_infi` (#3634) These already existed for submonoid, but were not lifted to subgroup. Also adds some missing `norm_cast` attributes to similar lemmas. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem subgroup.coe_infi + theorem subgroup.mem_infi Modified src/group_theory/submonoid/basic.lean 2020-07-30 21:46:00 985a56b ci(fetch_olean_cache.sh): error handling (#3628) Previously, the CI would be interrupted if extracting the olean cache failed. After this PR, if that step fails, all oleans are deleted and then CI continues. I also changed the search for ancestor commits with caches to look for `.xz` files instead of `.gz` files, for consistency. ESTIMATED CHANGES Modified scripts/fetch_olean_cache.sh 2020-07-30 20:16:57 1a393e7 feat(tactic/explode): support exploding "let" expressions and improve handling of "have" expressions (#3632) The current #explode has little effect on proofs using "let" expressions, e.g., #explode nat.exists_infinite_primes. #explode also occasionally ignores certain dependencies due to macros occurring in "have" expressions. See examples below. This PR fixes these issues. theorem foo {p q : Prop}: p → p := λ hp, have hh : p, from hp, hh #explode foo -- missing dependencies at forall introduction theorem bar {p q : Prop}: p → p := λ hp, (λ (hh : p), hh) hp #explode bar -- expected behavior ESTIMATED CHANGES Modified src/tactic/explode.lean 2020-07-30 17:59:32 43ccce5 feat(geometry): first stab on Lie groups (#3529) ESTIMATED CHANGES Modified src/algebra/group/defs.lean + def left_mul + def right_mul Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.prod_map + theorem times_cont_diff_add + theorem times_cont_diff_at.prod_map' + theorem times_cont_diff_at.prod_map + theorem times_cont_diff_at_fst + theorem times_cont_diff_at_snd + theorem times_cont_diff_neg - theorem times_cont_diff_on.map_prod + theorem times_cont_diff_on.prod_map + theorem times_cont_diff_within_at.prod_map' + theorem times_cont_diff_within_at.prod_map + theorem times_cont_diff_within_at_fst + theorem times_cont_diff_within_at_snd Modified src/data/equiv/local_equiv.lean Added src/geometry/algebra/lie_group.lean + structure lie_add_group_core + structure lie_add_group_morphism + structure lie_group_core + structure lie_group_morphism + theorem smooth.inv + theorem smooth.mul + theorem smooth_inv + theorem smooth_left_mul + theorem smooth_mul + theorem smooth_on.inv + theorem smooth_on.mul + theorem smooth_pow + theorem smooth_right_mul Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/geometry/manifold/times_cont_mdiff.lean + theorem basic_smooth_bundle_core.smooth_at_proj + theorem basic_smooth_bundle_core.smooth_on_proj + theorem basic_smooth_bundle_core.smooth_proj + theorem basic_smooth_bundle_core.smooth_within_at_proj + theorem basic_smooth_bundle_core.times_cont_mdiff_at_proj + theorem basic_smooth_bundle_core.times_cont_mdiff_on_proj + theorem basic_smooth_bundle_core.times_cont_mdiff_proj + theorem basic_smooth_bundle_core.times_cont_mdiff_within_at_proj + theorem smooth.comp_smooth_on + theorem smooth.prod_map + theorem smooth.prod_mk + theorem smooth.smooth_at + theorem smooth.smooth_on + theorem smooth.times_cont_mdiff + def smooth + theorem smooth_at.prod_map + theorem smooth_at.prod_mk + theorem smooth_at.smooth_within_at + theorem smooth_at.times_cont_mdiff_at + def smooth_at + theorem smooth_at_const + theorem smooth_at_fst + theorem smooth_at_id + theorem smooth_at_snd + theorem smooth_at_univ + theorem smooth_const + theorem smooth_fst + theorem smooth_id + theorem smooth_iff + theorem smooth_iff_proj_smooth + theorem smooth_on.prod_map + theorem smooth_on.prod_mk + theorem smooth_on.times_cont_mdiff_on + def smooth_on + theorem smooth_on_const + theorem smooth_on_fst + theorem smooth_on_id + theorem smooth_on_iff + theorem smooth_on_snd + theorem smooth_on_univ + theorem smooth_snd + theorem smooth_within_at.prod_map + theorem smooth_within_at.prod_mk + theorem smooth_within_at.smooth_at + theorem smooth_within_at.times_cont_mdiff_within_at + def smooth_within_at + theorem smooth_within_at_const + theorem smooth_within_at_fst + theorem smooth_within_at_id + theorem smooth_within_at_iff + theorem smooth_within_at_snd + theorem tangent_bundle.smooth_at_proj + theorem tangent_bundle.smooth_on_proj + theorem tangent_bundle.smooth_proj + theorem tangent_bundle.smooth_within_at_proj + theorem tangent_bundle.times_cont_mdiff_at_proj + theorem tangent_bundle.times_cont_mdiff_on_proj + theorem tangent_bundle.times_cont_mdiff_proj + theorem tangent_bundle.times_cont_mdiff_within_at_proj + theorem times_cont_mdiff.comp_times_cont_mdiff_on + theorem times_cont_mdiff.prod_map + theorem times_cont_mdiff.prod_mk + theorem times_cont_mdiff.smooth +/- theorem times_cont_mdiff_at.comp + theorem times_cont_mdiff_at.prod_map' + theorem times_cont_mdiff_at.prod_map + theorem times_cont_mdiff_at.prod_mk + theorem times_cont_mdiff_at.smooth_at + theorem times_cont_mdiff_at_fst + theorem times_cont_mdiff_at_snd + theorem times_cont_mdiff_fst + theorem times_cont_mdiff_on.prod_map + theorem times_cont_mdiff_on.prod_mk + theorem times_cont_mdiff_on.smooth_on + theorem times_cont_mdiff_on_fst + theorem times_cont_mdiff_on_snd + theorem times_cont_mdiff_snd +/- theorem times_cont_mdiff_within_at.comp' +/- theorem times_cont_mdiff_within_at.comp + theorem times_cont_mdiff_within_at.prod_map' + theorem times_cont_mdiff_within_at.prod_map + theorem times_cont_mdiff_within_at.prod_mk + theorem times_cont_mdiff_within_at.smooth_within_at + theorem times_cont_mdiff_within_at_fst + theorem times_cont_mdiff_within_at_iff + theorem times_cont_mdiff_within_at_snd Modified src/topology/continuous_on.lean + theorem continuous_on_fst + theorem continuous_on_snd + theorem continuous_within_at_fst + theorem continuous_within_at_snd + theorem nhds_within_prod 2020-07-30 13:59:09 77f3fa4 feat(tactic/interactive_expr): add copy button to type tooltip (#3633) There should now be a 'copy expression' button in each tooltip which can be used to copy the current expression to the clipboard. ![image](https://user-images.githubusercontent.com/5064353/88916012-374ff580-d25d-11ea-8260-8149966fc84a.png) I have not tested on windows yet. Also broke out `widget_override.goals_accomplished_message` so that users can override it. For example: ``` meta def my_new_msg {α : Type} : widget.html α := "my message" attribute [vm_override my_new_msg] widget_override.goals_accomplished_message ``` ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-07-30 13:18:00 e7075b8 chore(topology/algebra/ordered): fix assumptions in some lemmas (#3629) * Some `nhds_within_I??_eq_nhds_within_I??` lemmas assumed strict inequalities when this was not needed. * Remove TFAEs that only stated equality of three `nhds_within`s. Prove equality of `nhds_within`s instead. * Genralize `I??_mem_nhds_within_I??` to `order_closed_topology`. ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem Icc_mem_nhds_within_Ici +/- theorem Icc_mem_nhds_within_Iic +/- theorem Icc_mem_nhds_within_Iio +/- theorem Ico_mem_nhds_within_Ici +/- theorem Ico_mem_nhds_within_Iic +/- theorem Ico_mem_nhds_within_Iio +/- theorem Ioc_mem_nhds_within_Iic +/- theorem Ioc_mem_nhds_within_Iio +/- theorem Ioo_mem_nhds_within_Iic +/- theorem Ioo_mem_nhds_within_Iio +/- theorem continuous_within_at_Icc_iff_Ici +/- theorem continuous_within_at_Icc_iff_Iic +/- theorem continuous_within_at_Ico_iff_Ici +/- theorem continuous_within_at_Ioc_iff_Iic +/- theorem continuous_within_at_Ioc_iff_Ioi +/- theorem continuous_within_at_Ioo_iff_Ioi +/- theorem nhds_within_Ico_eq_nhds_within_Ici +/- theorem nhds_within_Ioo_eq_nhds_within_Ioi - theorem tfae_mem_nhds_within_Ici' - theorem tfae_mem_nhds_within_Iic' - theorem tfae_mem_nhds_within_Iio' - theorem tfae_mem_nhds_within_Ioi' 2020-07-30 08:41:45 29d5f11 chore(algebra/group_with_zero): weaken assumptions in some lemmas (#3630) ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem ring_hom.map_div +/- theorem ring_hom.map_inv Modified src/algebra/group/hom.lean +/- theorem monoid_hom.injective_iff Modified src/algebra/group_with_zero.lean +/- theorem monoid_hom.map_units_inv Modified src/algebra/ring/basic.lean +/- theorem ring_hom.injective_iff 2020-07-30 07:34:56 e1fa5cb feat(linear_algebra): invariant basis number property (#3560) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.bot_ne_top Added src/linear_algebra/invariant_basis_number.lean + theorem eq_of_fin_equiv + theorem invariant_basis_number_field + theorem nontrivial_of_invariant_basis_number Modified src/ring_theory/ideals.lean + theorem ideal.map_pi + theorem ideal.mem_pi + def ideal.pi 2020-07-30 05:41:44 03c302d feat(field_theory/fixed): field is separable over fixed subfield under group action (#3568) ESTIMATED CHANGES Modified src/data/polynomial/field_division.lean + theorem polynomial.gcd_map + theorem polynomial.is_coprime_map + theorem polynomial.is_unit_map Modified src/field_theory/fixed.lean Modified src/field_theory/separable.lean + def is_separable + theorem polynomial.separable.inj_of_prod_X_sub_C + theorem polynomial.separable.injective_of_prod_X_sub_C + theorem polynomial.separable_X_sub_C + theorem polynomial.separable_map + theorem polynomial.separable_prod' + theorem polynomial.separable_prod + theorem polynomial.separable_prod_X_sub_C_iff' + theorem polynomial.separable_prod_X_sub_C_iff 2020-07-29 23:48:24 ef89e9a feat(data/qpf): compositional data type framework for inductive / coinductive types (#3317) First milestone of the QPF project. Includes multivariate quotients of polynomial functors and compiler for coinductive types. Not included in this PR * nested inductive / coinductive data types * universe polymorphism with more than one variable * inductive / coinductive families * equation compiler * efficient byte code implementation Those are coming in future PRs ESTIMATED CHANGES Added src/data/pfunctor/multivariate/M.lean + theorem mvpfunctor.M.bisim' + theorem mvpfunctor.M.bisim + theorem mvpfunctor.M.bisim_lemma + theorem mvpfunctor.M.bisim₀ + def mvpfunctor.M.corec' + def mvpfunctor.M.corec + def mvpfunctor.M.corec_contents + def mvpfunctor.M.corec_shape + def mvpfunctor.M.dest' + theorem mvpfunctor.M.dest'_eq_dest' + def mvpfunctor.M.dest + theorem mvpfunctor.M.dest_corec' + theorem mvpfunctor.M.dest_corec + theorem mvpfunctor.M.dest_eq_dest' + theorem mvpfunctor.M.dest_map + theorem mvpfunctor.M.map_dest + def mvpfunctor.M.mk + inductive mvpfunctor.M.path + def mvpfunctor.M.path_dest_left + def mvpfunctor.M.path_dest_right + def mvpfunctor.M + def mvpfunctor.Mp + def mvpfunctor.cast_dropB + def mvpfunctor.cast_lastB Added src/data/pfunctor/multivariate/W.lean + def mvpfunctor.W + theorem mvpfunctor.W_cases + def mvpfunctor.W_dest' + theorem mvpfunctor.W_dest'_W_mk' + theorem mvpfunctor.W_dest'_W_mk + theorem mvpfunctor.W_ind + def mvpfunctor.W_map + theorem mvpfunctor.W_map_W_mk + def mvpfunctor.W_mk' + def mvpfunctor.W_mk + theorem mvpfunctor.W_mk_eq + inductive mvpfunctor.W_path + def mvpfunctor.W_path_cases_on + theorem mvpfunctor.W_path_cases_on_eta + def mvpfunctor.W_path_dest_left + theorem mvpfunctor.W_path_dest_left_W_path_cases_on + def mvpfunctor.W_path_dest_right + theorem mvpfunctor.W_path_dest_right_W_path_cases_on + def mvpfunctor.W_rec + theorem mvpfunctor.W_rec_eq + def mvpfunctor.Wp + theorem mvpfunctor.Wp_ind + def mvpfunctor.Wp_mk + def mvpfunctor.Wp_rec + theorem mvpfunctor.Wp_rec_eq + theorem mvpfunctor.comp_W_path_cases_on + theorem mvpfunctor.map_obj_append1 + def mvpfunctor.obj_append1 Modified src/data/pfunctor/multivariate/basic.lean Modified src/data/pfunctor/univariate/M.lean - theorem pfunctor.M.R_is_bisimulation - theorem pfunctor.M.coinduction' - theorem pfunctor.M.coinduction Modified src/data/qpf/multivariate/basic.lean Added src/data/qpf/multivariate/constructions/cofix.lean + def mvqpf.Mcongr + def mvqpf.Mrepr + def mvqpf.cofix.abs + theorem mvqpf.cofix.abs_repr + theorem mvqpf.cofix.bisim' + theorem mvqpf.cofix.bisim + theorem mvqpf.cofix.bisim_rel + theorem mvqpf.cofix.bisim₂ + def mvqpf.cofix.corec' + def mvqpf.cofix.corec'₁ + def mvqpf.cofix.corec + def mvqpf.cofix.corec₁ + def mvqpf.cofix.dest + theorem mvqpf.cofix.dest_corec' + theorem mvqpf.cofix.dest_corec + theorem mvqpf.cofix.dest_corec₁ + theorem mvqpf.cofix.dest_mk + theorem mvqpf.cofix.ext + theorem mvqpf.cofix.ext_mk + def mvqpf.cofix.map + def mvqpf.cofix.mk + theorem mvqpf.cofix.mk_dest + def mvqpf.cofix.repr + def mvqpf.cofix + def mvqpf.corecF + theorem mvqpf.corecF_eq + theorem mvqpf.corec_roll + def mvqpf.is_precongr + theorem mvqpf.liftr_map + theorem mvqpf.liftr_map_last' + theorem mvqpf.liftr_map_last Added src/data/qpf/multivariate/constructions/comp.lean + theorem mvqpf.comp.get_map + theorem mvqpf.comp.map_mk + def mvqpf.comp Added src/data/qpf/multivariate/constructions/const.lean + theorem mvqpf.const.get_map + theorem mvqpf.const.map_mk + def mvqpf.const Added src/data/qpf/multivariate/constructions/fix.lean + def mvqpf.W_setoid + theorem mvqpf.Wequiv.abs' + theorem mvqpf.Wequiv.refl + theorem mvqpf.Wequiv.symm + inductive mvqpf.Wequiv + theorem mvqpf.Wequiv_map + def mvqpf.Wrepr + theorem mvqpf.Wrepr_W_mk + theorem mvqpf.Wrepr_equiv + def mvqpf.fix.dest + theorem mvqpf.fix.dest_mk + def mvqpf.fix.drec + theorem mvqpf.fix.ind + theorem mvqpf.fix.ind_aux + theorem mvqpf.fix.ind_rec + def mvqpf.fix.map + def mvqpf.fix.mk + theorem mvqpf.fix.mk_dest + def mvqpf.fix.rec + theorem mvqpf.fix.rec_eq + theorem mvqpf.fix.rec_unique + def mvqpf.fix + def mvqpf.fix_to_W + def mvqpf.recF + theorem mvqpf.recF_eq' + theorem mvqpf.recF_eq + theorem mvqpf.recF_eq_of_Wequiv Added src/data/qpf/multivariate/constructions/prj.lean + def mvqpf.prj.P + def mvqpf.prj.abs + def mvqpf.prj.map + def mvqpf.prj.repr + def mvqpf.prj Added src/data/qpf/multivariate/constructions/quot.lean + def mvqpf.quot1.map + def mvqpf.quot1.mvfunctor + def mvqpf.quot1 + def mvqpf.quotient_qpf Added src/data/qpf/multivariate/constructions/sigma.lean + def mvqpf.pi + def mvqpf.sigma Added src/data/qpf/multivariate/default.lean Modified src/data/typevec.lean + theorem typevec.drop_fun_diag + theorem typevec.drop_fun_from_append1_drop_last + theorem typevec.drop_fun_id + theorem typevec.drop_fun_of_subtype + theorem typevec.drop_fun_prod + theorem typevec.drop_fun_rel_last + theorem typevec.drop_fun_subtype_val + theorem typevec.drop_fun_to_subtype + def typevec.from_append1_drop_last + theorem typevec.last_fun_from_append1_drop_last + theorem typevec.last_fun_of_subtype + theorem typevec.last_fun_prod + theorem typevec.last_fun_subtype_val + theorem typevec.last_fun_to_subtype + theorem typevec.prod_map_id + theorem typevec.subtype_val_diag_sub + theorem typevec.to_subtype_of_subtype + theorem typevec.to_subtype_of_subtype_assoc 2020-07-30 01:14:09+02:00 4985ad5 Revert "feat(topology): path connected spaces" This reverts commit 9208c2bd1f6c8dedc0cd1646dd107842f05b0b0c. ESTIMATED CHANGES Modified src/order/filter/bases.lean - theorem filter.has_basis.to_has_basis Deleted src/topology/path_connected.lean - def I_extend - theorem I_extend_extends - theorem I_extend_one - theorem I_extend_range - theorem I_extend_zero - def I_symm - theorem I_symm_one - theorem I_symm_zero - theorem Icc_zero_one_symm - theorem Iic_def - theorem coe_I_one - theorem coe_I_zero - theorem continuous.I_extend - theorem continuous_I_symm - theorem continuous_proj_I - theorem is_open.is_connected_iff_is_path_connected - theorem is_path_connected.image - theorem is_path_connected.joined_in - theorem is_path_connected.mem_path_component - theorem is_path_connected.preimage_coe - theorem is_path_connected.subset_path_component - theorem is_path_connected.union - def is_path_connected - theorem is_path_connected_iff - theorem is_path_connected_iff_eq - theorem is_path_connected_iff_path_connected_space - theorem joined.continuous_extend - def joined.extend - theorem joined.extend_one - theorem joined.extend_zero - theorem joined.mem_path_component - theorem joined.refl - theorem joined.symm - theorem joined.trans - def joined - theorem joined_in.continuous_extend - theorem joined_in.continuous_map - def joined_in.extend - def joined_in.extend_map - theorem joined_in.extend_map_continuous - theorem joined_in.extend_map_one - theorem joined_in.extend_map_zero - theorem joined_in.extend_one - theorem joined_in.extend_zero - theorem joined_in.joined - def joined_in.map - theorem joined_in.map_one - theorem joined_in.map_zero - theorem joined_in.mem - theorem joined_in.mono - theorem joined_in.refl - theorem joined_in.symm - theorem joined_in.trans - def joined_in - theorem joined_in_iff_joined - theorem joined_in_univ - theorem loc_path_connected_of_bases - theorem loc_path_connected_of_is_open - theorem mem_path_component_of_mem - theorem mem_path_component_self - theorem path_component.nonempty - def path_component - theorem path_component_congr - def path_component_in - theorem path_component_in_univ - theorem path_component_subset_component - theorem path_component_symm - theorem path_connected_space.continuous_path - def path_connected_space.path - theorem path_connected_space.path_one - theorem path_connected_space.path_zero - theorem path_connected_space_iff_connected_space - theorem path_connected_space_iff_eq - theorem path_connected_space_iff_univ - theorem path_connected_subset_basis - def proj_I - theorem proj_I_I - theorem range_proj_I 2020-07-30 01:12:56+02:00 9208c2b feat(topology): path connected spaces ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.to_has_basis Added src/topology/path_connected.lean + def I_extend + theorem I_extend_extends + theorem I_extend_one + theorem I_extend_range + theorem I_extend_zero + def I_symm + theorem I_symm_one + theorem I_symm_zero + theorem Icc_zero_one_symm + theorem Iic_def + theorem coe_I_one + theorem coe_I_zero + theorem continuous.I_extend + theorem continuous_I_symm + theorem continuous_proj_I + theorem is_open.is_connected_iff_is_path_connected + theorem is_path_connected.image + theorem is_path_connected.joined_in + theorem is_path_connected.mem_path_component + theorem is_path_connected.preimage_coe + theorem is_path_connected.subset_path_component + theorem is_path_connected.union + def is_path_connected + theorem is_path_connected_iff + theorem is_path_connected_iff_eq + theorem is_path_connected_iff_path_connected_space + theorem joined.continuous_extend + def joined.extend + theorem joined.extend_one + theorem joined.extend_zero + theorem joined.mem_path_component + theorem joined.refl + theorem joined.symm + theorem joined.trans + def joined + theorem joined_in.continuous_extend + theorem joined_in.continuous_map + def joined_in.extend + def joined_in.extend_map + theorem joined_in.extend_map_continuous + theorem joined_in.extend_map_one + theorem joined_in.extend_map_zero + theorem joined_in.extend_one + theorem joined_in.extend_zero + theorem joined_in.joined + def joined_in.map + theorem joined_in.map_one + theorem joined_in.map_zero + theorem joined_in.mem + theorem joined_in.mono + theorem joined_in.refl + theorem joined_in.symm + theorem joined_in.trans + def joined_in + theorem joined_in_iff_joined + theorem joined_in_univ + theorem loc_path_connected_of_bases + theorem loc_path_connected_of_is_open + theorem mem_path_component_of_mem + theorem mem_path_component_self + theorem path_component.nonempty + def path_component + theorem path_component_congr + def path_component_in + theorem path_component_in_univ + theorem path_component_subset_component + theorem path_component_symm + theorem path_connected_space.continuous_path + def path_connected_space.path + theorem path_connected_space.path_one + theorem path_connected_space.path_zero + theorem path_connected_space_iff_connected_space + theorem path_connected_space_iff_eq + theorem path_connected_space_iff_univ + theorem path_connected_subset_basis + def proj_I + theorem proj_I_I + theorem range_proj_I 2020-07-29 21:50:21 86c83c3 feat(topology): two missing connectedness lemmas (#3626) From the sphere eversion project. ESTIMATED CHANGES Modified src/topology/subset_properties.lean + theorem is_connected_iff_connected_space + theorem is_preconnected_iff_preconnected_space 2020-07-29 20:38:16 ebeeee7 feat(filters): a couple more lemmas (#3625) Random lemmas gathered while thinking about https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/nhds_left.20and.20nhds_right ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.union_distrib_Inter_left + theorem set.union_distrib_Inter_right Modified src/order/filter/bases.lean + theorem filter.has_basis.ext + theorem filter.has_basis.sup + theorem filter.has_basis_binfi_principal' Modified src/order/filter/basic.lean + theorem filter.binfi_sup_left + theorem filter.binfi_sup_right - theorem filter.infi_sup_eq + theorem filter.infi_sup_left + theorem filter.infi_sup_right 2020-07-29 13:58:44 652fb2e chore(doc/*): add README files (#3623) ESTIMATED CHANGES Added docs/README.md Added docs/contribute/README.md Added docs/extras/README.md Added docs/install/README.md Added docs/theories/README.md 2020-07-29 11:45:51 37e13a0 feat(tactic/lint): quieter output by default (#3622) * The behavior of `lint-` hasn't changed. * `lint` will now suppress the output of successful checks. If everything succeeds, it will print "All linting checks passed!" * `lint+` behaves like the old `lint`. It prints a confirmation for each test. Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/quiet.20linter ESTIMATED CHANGES Modified scripts/lint_mathlib.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/frontend.lean + inductive lint_verbosity Modified test/lint.lean 2020-07-29 11:19:36 b0d1d17 feat(data/ulift): add `monad ulift` and `monad plift` (#3588) We add `functor`/`applicative`/`monad` instances for `ulift` and `plift`. ESTIMATED CHANGES Modified src/data/ulift.lean +/- theorem plift.rec.constant +/- theorem ulift.rec.constant 2020-07-29 08:21:11 80f2762 feat(topology): assorted topological lemmas (#3619) from the sphere eversion project ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.union_diff_cancel' + theorem subtype.preimage_coe_nonempty Modified src/order/filter/bases.lean + theorem filter.has_basis.ex_mem + theorem filter.has_basis.has_basis_self_subset + theorem filter.has_basis.restrict + theorem filter.has_basis_iff Modified src/order/filter/basic.lean + theorem filter.image_coe_mem_sets + theorem filter.image_mem_sets + theorem filter.not_ne_bot Modified src/topology/basic.lean + theorem closure_eq_interior_union_frontier + theorem closure_eq_self_union_frontier + theorem is_closed_iff_nhds Modified src/topology/order.lean + theorem continuous_induced_rng' Modified src/topology/subset_properties.lean + def connected_component_in + theorem connected_space_iff_connected_component + theorem eq_univ_of_nonempty_clopen + theorem is_connected_range 2020-07-29 00:35:48 e14ba7b chore(scripts): update nolints.txt (#3620) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-28 23:25:03 e245254 feat(category_theory/monoidal): λ_ (𝟙_ C) = ρ_ (𝟙_ C) (#3556) The incredibly tedious proof from the axioms that `λ_ (𝟙_ C) = ρ_ (𝟙_ C)` in any monoidal category. One would hope that it falls out from a coherence theorem, but we're not close to having one, and I suspect that this result might be a step in any proof. ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.left_unitor_conjugation + theorem category_theory.monoidal_category.right_unitor_conjugation Added src/category_theory/monoidal/unitors.lean + theorem category_theory.monoidal_category.unitors_equal.cells_10_13 + theorem category_theory.monoidal_category.unitors_equal.cells_14 + theorem category_theory.monoidal_category.unitors_equal.cells_15 + theorem category_theory.monoidal_category.unitors_equal.cells_1_2 + theorem category_theory.monoidal_category.unitors_equal.cells_1_4 + theorem category_theory.monoidal_category.unitors_equal.cells_1_7 + theorem category_theory.monoidal_category.unitors_equal.cells_3_4 + theorem category_theory.monoidal_category.unitors_equal.cells_4' + theorem category_theory.monoidal_category.unitors_equal.cells_4 + theorem category_theory.monoidal_category.unitors_equal.cells_5_6 + theorem category_theory.monoidal_category.unitors_equal.cells_6' + theorem category_theory.monoidal_category.unitors_equal.cells_6 + theorem category_theory.monoidal_category.unitors_equal.cells_7 + theorem category_theory.monoidal_category.unitors_equal.cells_8 + theorem category_theory.monoidal_category.unitors_equal.cells_9 + theorem category_theory.monoidal_category.unitors_equal.cells_9_13 + theorem category_theory.monoidal_category.unitors_equal 2020-07-28 22:08:48 2e6c488 chore(order/complete_lattice): use `Prop` args in `infi_inf` etc (#3611) This way one can `rw binfi_inf` first, then prove `∃ i, p i`. Also move some code up to make it available near `infi_inf`. ESTIMATED CHANGES Modified src/order/complete_lattice.lean +/- theorem binfi_inf +/- theorem inf_infi +/- theorem infi_inf Modified src/order/filter/at_top_bot.lean Modified src/order/filter/basic.lean +/- theorem filter.prod_infi_left +/- theorem filter.prod_infi_right Modified src/topology/algebra/ordered.lean Modified src/topology/bases.lean Modified src/topology/continuous_on.lean 2020-07-28 21:33:31 aafc486 feat(topology/ordered): intervals frontiers (#3617) from the sphere eversion project ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean + theorem closure_Icc + theorem closure_Ici +/- theorem closure_Ico + theorem closure_Iic +/- theorem closure_Iio +/- theorem closure_Ioc +/- theorem closure_Ioi +/- theorem closure_Ioo + theorem frontier_Icc + theorem frontier_Ici + theorem frontier_Ico + theorem frontier_Iic + theorem frontier_Iio + theorem frontier_Ioc + theorem frontier_Ioi + theorem frontier_Ioo 2020-07-28 20:45:39 5cd6eeb chore(ci): only store oleans in azure cache (#3616) ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/fetch_olean_cache.sh 2020-07-28 20:12:44 4ae8752 chore(data/mv_polynomial): use bundled homs (#3595) I've done a lot of the scut work, but there are still about half a dozen broken proofs, if anyone would like to take a bash at them! ESTIMATED CHANGES Modified src/algebra/category/CommRing/adjunctions.lean Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.coeff_map +/- def mv_polynomial.eval +/- theorem mv_polynomial.eval_C +/- theorem mv_polynomial.eval_X - theorem mv_polynomial.eval_add +/- theorem mv_polynomial.eval_monomial - theorem mv_polynomial.eval_mul - theorem mv_polynomial.eval_neg - theorem mv_polynomial.eval_one - theorem mv_polynomial.eval_pow - theorem mv_polynomial.eval_sub - theorem mv_polynomial.eval_zero +/- theorem mv_polynomial.eval₂_hom_X + theorem mv_polynomial.eval₂_hom_congr +/- theorem mv_polynomial.eval₂_neg +/- theorem mv_polynomial.eval₂_rename +/- theorem mv_polynomial.eval₂_sub +/- def mv_polynomial.map - theorem mv_polynomial.map_add - theorem mv_polynomial.map_mul - theorem mv_polynomial.map_neg - theorem mv_polynomial.map_one - theorem mv_polynomial.map_pow - theorem mv_polynomial.map_sub +/- def mv_polynomial.rename - theorem mv_polynomial.rename_add - theorem mv_polynomial.rename_mul - theorem mv_polynomial.rename_neg - theorem mv_polynomial.rename_one - theorem mv_polynomial.rename_pow - theorem mv_polynomial.rename_sub - theorem mv_polynomial.rename_zero +/- theorem mv_polynomial.smul_eval Modified src/field_theory/chevalley_warning.lean Modified src/field_theory/mv_polynomial.lean +/- theorem mv_polynomial.evalₗ_apply +/- theorem mv_polynomial.map_range_eq_map Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/polynomial/basic.lean 2020-07-28 19:31:16 b765570 chore(topology): rename interior_eq_of_open (#3614) This allows to use dot notation and is more consistent with its closed twin is_closed.closure_eq ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/geometry/manifold/charted_space.lean Modified src/geometry/manifold/local_invariant_properties.lean Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean - theorem interior_eq_of_open + theorem is_open.interior_eq Modified src/topology/continuous_on.lean Modified src/topology/local_homeomorph.lean Modified src/topology/opens.lean Modified src/topology/subset_properties.lean 2020-07-28 17:35:02 9f51e33 feat(measure_theory/measurable_space): introduce `filter.is_measurably_generated` (#3594) Sometimes I want to extract an `is_measurable` witness of a `filter.eventually` statement. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean + theorem is_measurable.nhds_within_is_measurably_generated Modified src/measure_theory/measurable_space.lean + theorem filter.eventually.exists_measurable_mem + theorem filter.principal_is_measurably_generated_iff Modified src/measure_theory/measure_space.lean 2020-07-28 17:35:00 7236938 feat(measure_theory/measure_space): add `count_apply_infinite` (#3592) Also add some supporting lemmas about `set.infinite`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem infinite.exists_subset_card_eq Modified src/data/set/finite.lean + theorem set.infinite.exists_subset_card_eq + theorem set.infinite.to_subtype + theorem set.infinite_coe_iff Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.count_apply_eq_top + theorem measure_theory.measure.count_apply_finite + theorem measure_theory.measure.count_apply_infinite + theorem measure_theory.measure.count_apply_lt_top 2020-07-28 17:02:06 f6f6f8a feat(linear_algebra/affine_space): more affine subspace lemmas (#3552) Add more lemmas on affine subspaces that came up in the course of proving existence and uniqueness of the circumcenter of a simplex in a Euclidean space. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.vsub_set_singleton Modified src/linear_algebra/affine_space.lean + theorem affine_space.vector_span_singleton + theorem affine_subspace.coe_affine_span_singleton + theorem affine_subspace.direction_affine_span_insert + theorem affine_subspace.direction_sup + theorem affine_subspace.mem_affine_span_insert_iff 2020-07-28 15:30:51 7848f28 feat(category_theory): Mon_ (Type u) ≌ Mon.{u} (#3562) Verifying that internal monoid objects in Type are the same thing as bundled monoid objects. ESTIMATED CHANGES Modified src/algebra/category/Group/zero.lean Added src/category_theory/limits/shapes/types.lean + theorem category_theory.limits.types.prod + theorem category_theory.limits.types.prod_fst + theorem category_theory.limits.types.prod_lift + theorem category_theory.limits.types.prod_map + theorem category_theory.limits.types.prod_snd + theorem category_theory.limits.types.terminal + theorem category_theory.limits.types.terminal_from + def category_theory.limits.types.types_has_binary_products + def category_theory.limits.types.types_has_products + def category_theory.limits.types.types_has_terminal Added src/category_theory/monoidal/internal.lean + theorem Mod.assoc_flip + def Mod.comap + def Mod.comp + theorem Mod.comp_hom' + structure Mod.hom + def Mod.id + theorem Mod.id_hom' + def Mod.regular + structure Mod + theorem Mon_.assoc_flip + def Mon_.comp + theorem Mon_.comp_hom' + def Mon_.forget + structure Mon_.hom + def Mon_.id + theorem Mon_.id_hom' + structure Mon_ Added src/category_theory/monoidal/internal/types.lean + def Mon_Type_equivalence_Mon.functor + def Mon_Type_equivalence_Mon.inverse + def Mon_Type_equivalence_Mon + def Mon_Type_equivalence_Mon_forget Modified src/category_theory/monoidal/types.lean + theorem category_theory.monoidal.associator_hom_apply + theorem category_theory.monoidal.associator_inv_apply + theorem category_theory.monoidal.left_unitor_hom_apply + theorem category_theory.monoidal.left_unitor_inv_apply + theorem category_theory.monoidal.right_unitor_hom_apply + theorem category_theory.monoidal.right_unitor_inv_apply + theorem category_theory.monoidal.tensor_apply Modified src/tactic/ext.lean + theorem punit.ext + theorem unit.ext Modified test/ext.lean - theorem unit.ext 2020-07-28 14:20:39 9e841c8 feat(data/list/basic): add a proof that `(a :: l) ≠ l` (#3584) `list.cons_ne_self` is motivated by the existence of `nat.succ_ne_self`. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.cons_ne_self 2020-07-28 13:45:08 f1dfece feat(linear_algebra/affine_space): bundled affine independent families (#3561) Define `affine_space.simplex` as `n + 1` affine independent points, with the specific case of `affine_space.triangle`. I expect most definitions and results for these types (such as `circumcenter` and `circumradius`, which I'm currently working on) will be specific to the case of Euclidean affine spaces, but some make sense in a more general affine space context. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + def affine_space.simplex.mk_of_point + theorem affine_space.simplex.mk_of_point_points + structure affine_space.simplex + def affine_space.triangle 2020-07-28 11:47:58 5a876ca feat(category_theory): monoidal_category (C ⥤ C) (#3557) ESTIMATED CHANGES Added src/category_theory/monoidal/End.lean + def category_theory.endofunctor_monoidal_category + def category_theory.tensoring_right_monoidal Modified src/category_theory/monoidal/category.lean + def category_theory.monoidal_category.tensoring_right Modified src/category_theory/monoidal/functor.lean + theorem category_theory.monoidal_functor.map_left_unitor + theorem category_theory.monoidal_functor.map_right_unitor + theorem category_theory.monoidal_functor.map_tensor 2020-07-28 10:21:52 be99e53 chore(ci): remove unused build step (#3607) ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-07-28 10:21:50 f1ad7a8 docs(topology/sheaves): better docs for presheaf (#3596) Add module doc-strings to two files. ESTIMATED CHANGES Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/presheaf_of_functions.lean 2020-07-28 10:21:48 35f1f63 doc(topology/basic): docstrings for nhds and a few related lemmas (#3548) `nhds` was the only `def` in the file which didn't have an explanation, so I documented it. I also went ahead and documented a few related lemmas which I felt were worth calling out. ESTIMATED CHANGES Modified src/topology/basic.lean 2020-07-28 09:27:12 037821b chore(category_theory/limits/types): remove simp lemmas (#3604) No one wants to see how the sausage is being made. Or at least, no one wants `simp` to show you without asking. ESTIMATED CHANGES Modified src/category_theory/limits/types.lean +/- theorem category_theory.limits.types.types_colimit +/- theorem category_theory.limits.types.types_colimit_desc +/- theorem category_theory.limits.types.types_colimit_map +/- theorem category_theory.limits.types.types_colimit_pre +/- theorem category_theory.limits.types.types_colimit_ι +/- theorem category_theory.limits.types.types_limit +/- theorem category_theory.limits.types.types_limit_lift +/- theorem category_theory.limits.types.types_limit_map +/- theorem category_theory.limits.types.types_limit_pre +/- theorem category_theory.limits.types.types_limit_π 2020-07-28 09:27:10 a574db1 refactor(algebra/category/*/limits): refactor concrete limits (#3463) We used to construct categorical limits for `AddCommGroup` and `CommRing`. Now we construct them for * `(Add)(Comm)Mon` * `(Add)(Comm)Group` * `(Comm)(Semi)Ring` * `Module R` * `Algebra R` Even better, we reuse structure along the way, and show that all the relevant forgetful functors preserve limits. We're still not at the point were this can either be done by * automation, or * noticing that everything is a model of a Lawvere theory but ... maybe one day. ESTIMATED CHANGES Added src/algebra/category/Algebra/limits.lean + def Algebra.has_limits.limit + def Algebra.has_limits.limit_is_limit + def Algebra.limit_π_alg_hom + def Algebra.sections_subalgebra Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/CommRing/limits.lean - def CommRing.CommRing_has_limits.limit - def CommRing.CommRing_has_limits.limit_is_limit - def CommRing.limit_π_ring_hom + def Ring.forget₂_AddCommGroup_preserves_limits_aux + def SemiRing.forget₂_AddCommMon_preserves_limits_aux + def SemiRing.forget₂_Mon_preserves_limits_aux + def SemiRing.has_limits.limit + def SemiRing.has_limits.limit_is_limit + def SemiRing.limit_π_ring_hom + def SemiRing.sections_subsemiring Modified src/algebra/category/Group/limits.lean - def AddCommGroup.AddCommGroup_has_limits.limit - def AddCommGroup.AddCommGroup_has_limits.limit_is_limit +/- def AddCommGroup.kernel_iso_ker_over - def AddCommGroup.limit_π_add_monoid_hom + def CommGroup.forget₂_CommMon_preserves_limits_aux + def Group.sections_subgroup Modified src/algebra/category/Group/zero.lean Added src/algebra/category/Module/limits.lean + def Module.has_limits.limit + def Module.has_limits.limit_is_limit + def Module.limit_π_linear_map + def Module.sections_submodule Modified src/algebra/category/Mon/basic.lean Added src/algebra/category/Mon/limits.lean + def Mon.has_limits.limit + def Mon.has_limits.limit_is_limit + def Mon.limit_π_monoid_hom + def Mon.sections_submonoid Modified src/algebra/module/basic.lean + theorem linear_map.coe_inj - theorem linear_map.coe_injective Modified src/algebra/ring/pi.lean + theorem pi.ring_hom_apply Modified src/analysis/normed_space/operator_norm.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/category_theory/limits/creates.lean + def category_theory.creates_limit_of_fully_faithful_of_iso + def category_theory.creates_limit_of_fully_faithful_of_lift Modified src/category_theory/reflect_isomorphisms.lean Modified src/ring_theory/algebra.lean + theorem pi.algebra_map_apply Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_inj - theorem continuous_linear_map.coe_injective' 2020-07-28 08:55:31 ce70305 feat(category_theory): monoidal_category (C ⥤ D) when D is monoidal (#3571) When `C` is any category, and `D` is a monoidal category, there is a natural "pointwise" monoidal structure on `C ⥤ D`. The initial intended application is tensor product of presheaves. ESTIMATED CHANGES Added src/category_theory/monoidal/functor_category.lean + theorem category_theory.monoidal.associator_hom_app + theorem category_theory.monoidal.associator_inv_app + def category_theory.monoidal.functor_category.tensor_hom + def category_theory.monoidal.functor_category.tensor_obj + theorem category_theory.monoidal.left_unitor_hom_app + theorem category_theory.monoidal.left_unitor_inv_app + theorem category_theory.monoidal.right_unitor_hom_app + theorem category_theory.monoidal.right_unitor_inv_app + theorem category_theory.monoidal.tensor_hom_app + theorem category_theory.monoidal.tensor_obj_map + theorem category_theory.monoidal.tensor_obj_obj + theorem category_theory.monoidal.tensor_unit_map + theorem category_theory.monoidal.tensor_unit_obj 2020-07-28 07:54:19 3576381 chore(ring_theory/subsemiring): tidy up docstrings (#3580) ESTIMATED CHANGES Modified src/ring_theory/subsemiring.lean 2020-07-28 02:35:47 865e888 chore(*): make sure definitions don't generate `s x`, `s : set _` (#3591) Fix the following definitions: `subtype.fintype`, `pfun.dom`, `pfun.as_subtype`, `pfun.equiv_subtype`. ESTIMATED CHANGES Modified src/data/fintype/basic.lean Modified src/data/pfun.lean +/- def pfun.as_subtype +/- def pfun.dom Modified src/data/set/basic.lean +/- theorem subtype.coe_image_subset + theorem subtype.coe_preimage_self Modified src/data/set/countable.lean Modified src/data/set/lattice.lean Modified src/linear_algebra/basic.lean +/- theorem submodule.mem_span_singleton_self 2020-07-28 02:35:45 d04e3fc feat(linear_algebra/char_poly): relates the characteristic polynomial to trace, determinant, and dimension (#3536) adds lemmas about the number of fixed points of a permutation adds lemmas connecting the trace, determinant, and dimension of a matrix to its characteristic polynomial ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.scalar.commute Modified src/group_theory/perm/cycles.lean + theorem equiv.perm.fixed_point_card_lt_of_ne_one + theorem equiv.perm.one_lt_nonfixed_point_card_of_ne_one Added src/linear_algebra/char_poly/coeff.lean + theorem char_matrix_apply_nat_degree + theorem char_matrix_apply_nat_degree_le + theorem char_poly_coeff_eq_prod_coeff_of_le + theorem char_poly_degree_eq_dim + theorem char_poly_monic + theorem char_poly_monic_of_nontrivial + theorem char_poly_nat_degree_eq_dim + theorem char_poly_sub_diagonal_degree_lt + theorem det_eq_sign_char_poly_coeff + theorem det_of_card_zero + theorem eval_det + theorem mat_poly_equiv_eval + theorem trace_eq_neg_char_poly_coeff Modified src/linear_algebra/determinant.lean + theorem matrix.alg_hom.map_det + theorem matrix.ring_hom.map_det 2020-07-28 02:35:42 a9481d9 feat(analysis/convex/basic): add lemmas about transformations of convex sets and functions (#3524) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex.affine_image + theorem convex.affine_preimage + theorem convex.combo_affine_apply + theorem convex.combo_to_vadd + theorem convex.translate_preimage_left + theorem convex.translate_preimage_right + theorem convex_on.comp_affine_map + theorem convex_on.comp_linear_map + theorem convex_on.translate_left + theorem convex_on.translate_right Modified src/analysis/convex/cone.lean 2020-07-28 02:35:40 005201a feat(linear_algebra/adic_completion): basic definitions about completions of modules (#3452) ESTIMATED CHANGES Added src/linear_algebra/adic_completion.lean + theorem Hausdorffification.induction_on + def Hausdorffification.lift + theorem Hausdorffification.lift_comp_of + theorem Hausdorffification.lift_eq + theorem Hausdorffification.lift_of + def Hausdorffification.of + def Hausdorffification + theorem adic_completion.coe_eval + def adic_completion.eval + theorem adic_completion.eval_apply + theorem adic_completion.eval_comp_of + theorem adic_completion.eval_of + theorem adic_completion.ext + def adic_completion.of + theorem adic_completion.of_apply + theorem adic_completion.range_eval + def adic_completion + theorem is_Hausdorff.infi_pow_smul + def is_Hausdorff + def is_adic_complete + def is_precomplete Added src/linear_algebra/smodeq.lean + theorem smodeq.add + theorem smodeq.bot + theorem smodeq.comap + theorem smodeq.map + theorem smodeq.mono + theorem smodeq.refl + theorem smodeq.smul + theorem smodeq.symm + theorem smodeq.top + theorem smodeq.trans + theorem smodeq.zero + def smodeq Modified src/ring_theory/ideal_operations.lean + theorem ideal.top_pow + theorem submodule.map_smul'' 2020-07-28 01:10:52 7cd1e26 feat(data/set/basic): range_unique (#3582) Add a lemma on the `range` of a function from a `unique` type. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_unique 2020-07-28 01:10:50 23bd09a chore(deprecated/ring): removing uses (#3577) This strips out a lot of the use of `deprecated.ring`. It's now only imported by `data.polynomial.eval`, and `ring_theory.free_ring`. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean +/- theorem ring.direct_limit.of_pow Modified src/algebra/group_power.lean - theorem is_semiring_hom.map_pow Modified src/algebra/group_with_zero.lean Modified src/data/complex/exponential.lean Modified src/data/equiv/ring.lean - def ring_equiv.of' - def ring_equiv.of Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.is_id +/- def mv_polynomial.iter_to_sum +/- theorem mv_polynomial.map_eval₂ +/- theorem mv_polynomial.map_id +/- theorem mv_polynomial.map_rename +/- def mv_polynomial.sum_to_iter Modified src/data/polynomial/eval.lean +/- theorem polynomial.map_pow Modified src/deprecated/group.lean Modified src/deprecated/ring.lean Modified src/field_theory/mv_polynomial.lean Modified src/ring_theory/free_comm_ring.lean + def free_ring.of' Modified src/ring_theory/free_ring.lean +/- theorem free_ring.lift_comp_of Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/subring.lean 2020-07-28 01:10:48 7d4d985 chore(data/polynomial): make eval2 irreducible (#3543) A while back @gebner identified that [an unfortunate timeout could be avoided](https://github.com/leanprover-community/mathlib/pull/3380#issuecomment-657449148) by making `polynomial.eval2` irreducible. This PR does that. It's not perfect: on a few occasions I have to temporarily set it back to semireducible, because it looks like the proofs really do some heavy refling. I'd like to make more things irreducible in the polynomial API, but not yet. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/degree.lean Modified src/data/polynomial/eval.lean + theorem polynomial.comp_eq_sum_left + theorem polynomial.eval_eq_sum + theorem polynomial.eval₂_eq_sum Modified src/data/polynomial/identities.lean Modified src/field_theory/fixed.lean Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/separable.lean + theorem polynomial.expand_eq_sum Modified src/ring_theory/algebra.lean + theorem algebra.subring_algebra_map_apply + theorem algebra.subring_coe_algebra_map + theorem algebra.subring_coe_algebra_map_hom Modified src/ring_theory/integral_closure.lean +/- theorem integral_closure_idem + theorem is_integral_of_is_algebra_tower Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.map_restriction Modified src/ring_theory/polynomial/rational_root.lean Modified src/topology/algebra/polynomial.lean 2020-07-28 00:39:31 4afb214 chore(scripts): update nolints.txt (#3593) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-27 20:50:19 7556353 feat(data/int/cast): monoid_hom.ext_int (#3587) ESTIMATED CHANGES Modified src/data/int/cast.lean + theorem monoid_hom.ext_int 2020-07-27 20:50:17 864a22a chore(ci): delete doc generation steps (#3586) Doc generation will be run on schedule in another repo for security reasons. ESTIMATED CHANGES Modified .github/workflows/build.yml Modified bors.toml Deleted scripts/deploy_docs.sh 2020-07-27 20:50:15 2ecf70f feat(data/finset/basic): more lemmas on finsets of subtypes (#3575) Add two more lemmas related to `not_mem_map_subtype_of_not_property`. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.map_subtype_subset + theorem finset.property_of_mem_map_subtype 2020-07-27 15:26:50 3550f4f feat(*): remaining preliminaries for Haar measure (#3541) Define `has_mul (finset α)` more convenient formulation of `is_compact.finite_compact_cover` some lemma additions ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem finset.coe_mul + theorem finset.mem_mul + theorem finset.mul_card_le + theorem finset.mul_def + theorem finset.mul_mem_mul + theorem set.inv_subset + theorem set.inv_subset_inv +/- theorem set.preimage_mul_right_one' Modified src/data/finset/lattice.lean + theorem finset.bInter_insert_update + theorem finset.bUnion_insert_update + theorem finset.infi_insert_update + theorem finset.supr_insert_update Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/eval.lean Modified src/data/set/basic.lean + theorem function.surjective.preimage_subset_preimage_iff + theorem set.preimage_congr Modified src/measure_theory/borel_space.lean +/- theorem measurable.mul +/- theorem measurable_mul + theorem measurable_mul_left + theorem measurable_mul_right Modified src/topology/opens.lean + theorem topological_space.opens.coe_mk Modified src/topology/separation.lean 2020-07-27 14:54:00 adfcfe7 feat(category_theory/concrete_category): epi_of_surjective (#3585) Also, change the proof of `mono_of_injective` to use the fact that the forgetful function reflects monomorphisms. ESTIMATED CHANGES Modified src/category_theory/concrete_category/basic.lean + theorem category_theory.concrete_category.epi_of_surjective 2020-07-27 12:21:03 aeff5fc chore(ci): get xz archive (#3581) We've been storing both .gz and .xz for a while for backward compatibility but will eventually drop .gz support. ESTIMATED CHANGES Modified scripts/fetch_olean_cache.sh 2020-07-27 12:20:59 133067c feat(set_theory/cardinal_ordinal): cardinal.mk_finset_eq_mk (#3578) ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem list.to_finset_surjective Modified src/set_theory/cardinal_ordinal.lean + theorem cardinal.mk_finset_eq_mk 2020-07-27 11:35:50 4a5e25c chore(ci): remove branch update script (#3579) For security reasons, this will move to a scheduled action in a different repo. ESTIMATED CHANGES Modified .github/workflows/build.yml Deleted scripts/update_branch.sh 2020-07-27 11:35:48 8ba59d8 feat(measure_theory/measure_space): 2 lemmas about compact sets (#3573) A compact set `s` has finite (resp., zero) measure if every point of `s` has a neighborhood within `s` of finite (resp., zero) measure. ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem is_compact.finite_measure_of_nhds_within + theorem is_compact.measure_zero_of_nhds_within + theorem measure_theory.compl_mem_ae_iff + theorem measure_theory.measure.compl_mem_cofinite 2020-07-27 11:35:46 da64c7f chore(order/filter/basic): use `set.eq_on` in a few lemmas (#3565) ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean Modified src/geometry/manifold/local_invariant_properties.lean Modified src/order/filter/basic.lean + theorem filter.eventually_eq.eventually + theorem filter.eventually_eq_principal + theorem set.eq_on.eventually_eq 2020-07-27 10:07:11 8c8d6a2 feat(topology/tactic): continuity faster and more powerful (#3545) Following up on the recent introduction of Reid's continuity tactic in #2879, I've made some tweaks that make it both faster and more capable. 1. we use `apply_rules {md:=semireducible}`, taking advantage of #3538. This makes examples like `example : continuous (λ x : ℝ, exp ((max x (-x)) + sin (cos x))^2) := by continuity` viable. 2. in `apply_rules`, if we pull in lemmas using an attribute, we reverse the list of lemmas (on the heuristic that older lemmas are more frequently applicable than newer lemmas) 3. in `continuity`, I removed the `apply_assumption` step in the `tidy` loop, since `apply_rules` is already calling `assumption` 4. also in the `tidy` loop, I moved `intro1` above `apply_rules`. The example in the test file ``` example {κ ι : Type} (K : κ → Type) [∀ k, topological_space (K k)] (I : ι → Type) [∀ i, topological_space (I i)] (e : κ ≃ ι) (F : Π k, homeomorph (K k) (I (e k))) : continuous (λ (f : Π k, K k) (i : ι), F (e.symm i) (f (e.symm i))) := by show_term { continuity } ``` which previously timed out now runs happily even with `-T50000`. ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.coe_continuous Modified src/topology/continuous_map.lean + theorem continuous_map.coe_continuous Modified src/topology/tactic.lean + theorem continuous_id' Modified test/continuity.lean 2020-07-27 06:09:20 4c0881e feat(measure_theory/measure_space): several lemmas about `restrict` (#3574) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_eq_bot + theorem measure_theory.ae_restrict_eq_bot + theorem measure_theory.ae_restrict_ne_bot + theorem measure_theory.measure.measure_univ_eq_zero + theorem measure_theory.measure.restrict_add_restrict_compl + theorem measure_theory.measure.restrict_apply_univ + theorem measure_theory.measure.restrict_compl_add_restrict + theorem measure_theory.measure.restrict_eq_zero + theorem measure_theory.measure.restrict_le_self 2020-07-27 04:33:38 d5d463e chore(topology/subset_properties): +2 lemmas about `is_compact` (#3567) Also use `variables {s t : set α}` ESTIMATED CHANGES Modified src/topology/subset_properties.lean +/- theorem cluster_point_of_compact +/- theorem compact_diff +/- theorem compact_iff_finite_subcover +/- theorem compact_iff_finite_subfamily_closed +/- theorem compact_iff_ultrafilter_le_nhds +/- theorem compact_of_finite_subcover +/- theorem compact_of_finite_subfamily_closed +/- theorem compact_of_is_closed_subset +/- theorem compact_univ_pi +/- theorem embedding.compact_iff_compact_image +/- theorem is_compact.adherence_nhdset + theorem is_compact.compl_mem_sets + theorem is_compact.compl_mem_sets_of_nhds_within +/- theorem is_compact.elim_finite_subcover +/- theorem is_compact.elim_finite_subcover_image +/- theorem is_compact.image +/- theorem is_compact.image_of_continuous_on +/- theorem is_compact.inter_left +/- theorem is_compact.inter_right +/- theorem is_compact.union +/- theorem set.finite.is_compact 2020-07-27 03:38:45 8673f23 chore(data/finsupp): move into finsupp folder (#3566) ESTIMATED CHANGES Renamed src/data/finsupp.lean to src/data/finsupp/basic.lean Added src/data/finsupp/default.lean Modified src/data/finsupp/lattice.lean Modified src/data/finsupp/pointwise.lean Modified src/linear_algebra/basic.lean Modified test/conv/apply_congr.lean 2020-07-27 02:48:13 d6e399f chore(order/filter/basic): add `@[simp]` to `principal_empty/univ` (#3572) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean +/- theorem filter.principal_empty +/- theorem filter.principal_univ Modified src/topology/subset_properties.lean 2020-07-27 01:32:13 d06f62d feat(analysis/calculus/times_cont_diff): more thorough times_cont_diff interface (#3551) Add missing lemmas on smooth functions between vector spaces, that were necessary to solve the manifold exercises in Lftcm2020. Changes the `{x : E}` argument from implicit to explicit in `lemma times_cont_diff_within_at.comp` and `lemma times_cont_diff_within_at.comp'`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem fderiv_id' + theorem fderiv_within_id' Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.comp_times_cont_diff_within_at + theorem times_cont_diff.sum + theorem times_cont_diff.times_cont_diff_within_at + theorem times_cont_diff_at.add + theorem times_cont_diff_at.neg + theorem times_cont_diff_at.sub + theorem times_cont_diff_at.sum + theorem times_cont_diff_on.sum + theorem times_cont_diff_within_at.add + theorem times_cont_diff_within_at.neg + theorem times_cont_diff_within_at.sub + theorem times_cont_diff_within_at.sum Modified src/geometry/manifold/times_cont_mdiff.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean 2020-07-27 00:02:05 ca6cebc feat(data/nat/digits): add `last_digit_ne_zero` (#3544) The proof of `base_pow_length_digits_le` was refactored as suggested by @fpvandoorn in #3498. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.last_repeat_succ Modified src/data/nat/digits.lean +/- theorem base_pow_length_digits_le' + theorem digits_eq_nil_iff_eq_zero + theorem digits_last + theorem digits_ne_nil_iff_ne_zero + theorem last_digit_ne_zero + theorem of_digits_singleton + theorem pow_length_le_mul_of_digits 2020-07-26 23:00:29 3c4abe0 chore(ci): remove update_nolint action (#3570) this action will move to another repository for security reasons ESTIMATED CHANGES Deleted .github/workflows/update_nolints.yml 2020-07-26 22:16:42 4763feb chore(topology/basic): directly use `self_of_nhds` in `eq_of_nhds` (#3569) ESTIMATED CHANGES Modified src/topology/basic.lean 2020-07-26 17:38:11 a6d3d65 chore(data/set/intervals): more `simp` lemmas (#3564) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Ici_diff_Ici + theorem set.Ici_diff_Ioi + theorem set.Iic_diff_Iic + theorem set.Iic_diff_Iio + theorem set.Iio_diff_Iic + theorem set.Iio_diff_Iio + theorem set.Ioi_diff_Ici + theorem set.Ioi_diff_Ioi +/- theorem set.compl_Ici +/- theorem set.compl_Iic +/- theorem set.compl_Iio +/- theorem set.compl_Ioi 2020-07-26 14:16:23 692a689 feat(data/list/chain): chain'.append_overlap (#3559) ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain'.append_overlap 2020-07-26 10:41:56 f4106af feat(order/filters, topology): relation between neighborhoods of a in [a, u), [a, u] and [a,+inf) + various nhds_within lemmas (#3516) Content : - two lemmas about filters, namely `tendsto_sup` and `eventually_eq_inf_principal_iff` - a few lemmas about `nhds_within` - duplicate and move parts of the lemmas `tfae_mem_nhds_within_[Ioi/Iio/Ici/Iic]` that only require `order_closed_topology α` instead of `order_topology α`. This allows to turn any left/right neighborhood of `a` into its "canonical" form (i.e `Ioi`/`Iio`/`Ici`/`Iic`) with a weaker assumption than before ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_eq_inf_principal_iff + theorem filter.tendsto.sup + theorem filter.tendsto_sup Modified src/topology/algebra/ordered.lean + theorem continuous_within_at_Icc_iff_Ici + theorem continuous_within_at_Icc_iff_Iic + theorem continuous_within_at_Ico_iff_Ici + theorem continuous_within_at_Ico_iff_Iio + theorem continuous_within_at_Ioc_iff_Iic + theorem continuous_within_at_Ioc_iff_Ioi + theorem continuous_within_at_Ioo_iff_Iio + theorem continuous_within_at_Ioo_iff_Ioi + theorem tfae_mem_nhds_within_Ici' + theorem tfae_mem_nhds_within_Iic' + theorem tfae_mem_nhds_within_Iio' + theorem tfae_mem_nhds_within_Ioi' Modified src/topology/continuous_on.lean + theorem eventually_eq_nhds_within_iff + theorem eventually_eq_nhds_within_of_eq_on + theorem eventually_nhds_with_of_forall + theorem set.eq_on.eventually_eq_nhds_within + theorem tendsto_nhds_within_congr + theorem tendsto_nhds_within_of_tendsto_nhds_of_eventually_within 2020-07-26 09:05:48 f95e90b chore(order/liminf_limsup): use dot notation and `order_dual` (#3555) ## New * `filter.has_basis.Limsup_eq_infi_Sup` ## Rename ### Namespace `filter` * `is_bounded_of_le` → `is_bounded_mono`; * `is_bounded_under_of_is_bounded` → `is_bounded.is_bounded_under`; * `is_cobounded_of_is_bounded` → `is_bounded.is_cobounded_flip`; * `is_cobounded_of_le` → `is_cobounded.mono`; ### Top namespace * `is_bounded_under_le_of_tendsto` → `filter.tendsto.is_bounded_under_le`; * `is_cobounded_under_ge_of_tendsto` → `filter.tendsto.is_cobounded_under_ge`; * `is_bounded_under_ge_of_tendsto` → `filter.tendsto.is_bounded_under_ge`; * `is_cobounded_under_le_of_tendsto` → `filter.tendsto.is_cobounded_under_le`. ## Remove * `filter.is_trans_le`, `filter.is_trans_ge`: we have both in `order/rel_classes`. ESTIMATED CHANGES Modified src/order/liminf_limsup.lean + theorem filter.has_basis.Limsup_eq_infi_Sup + theorem filter.is_bounded.is_bounded_under + theorem filter.is_bounded.is_cobounded_flip + theorem filter.is_bounded.mono - theorem filter.is_bounded_of_le - theorem filter.is_bounded_under_of_is_bounded + theorem filter.is_cobounded.mono - theorem filter.is_cobounded_of_is_bounded - theorem filter.is_cobounded_of_le Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.is_bounded_under_ge + theorem filter.tendsto.is_bounded_under_le + theorem filter.tendsto.is_cobounded_under_ge + theorem filter.tendsto.is_cobounded_under_le - theorem is_bounded_under_ge_of_tendsto - theorem is_bounded_under_le_of_tendsto - theorem is_cobounded_under_ge_of_tendsto - theorem is_cobounded_under_le_of_tendsto 2020-07-26 09:05:46 493a5b0 feat(data/set/lattice): add lemmas `disjoint.union_left/right` etc (#3554) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.disjoint.union_left + theorem set.disjoint.union_right + theorem set.disjoint_union_left + theorem set.disjoint_union_right Modified src/order/bounded_lattice.lean + theorem disjoint.sup_left + theorem disjoint.sup_right + theorem disjoint_sup_left + theorem disjoint_sup_right 2020-07-26 07:41:04 3c1f332 feat(tactic/to_additive): automate substructure naming (#3553) This is all @cipher1024's work, improving `to_additive` to correctly generate names when we're talking about structures (rather than just operations). ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/free.lean Modified src/algebra/free_monoid.lean Modified src/algebra/group/defs.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/inj_surj.lean Modified src/algebra/group/pi.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/with_one.lean Modified src/algebra/ordered_group.lean Modified src/algebra/punit_instances.lean Modified src/data/equiv/mul_add.lean Modified src/deprecated/group.lean Modified src/deprecated/subgroup.lean Modified src/deprecated/submonoid.lean Modified src/group_theory/congruence.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/basic.lean Modified src/group_theory/submonoid/operations.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/order/filter/germ.lean Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/open_subgroup.lean 2020-07-26 07:03:20 d7fcd8c chore(analysis/normed_space): remove 2 `norm_zero` lemmas (#3558) We have a general `norm_zero` lemma and these lemmas are not used before we introduce `normed_group` instances. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/analysis/normed_space/multilinear.lean - theorem continuous_multilinear_map.norm_zero Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_map.norm_zero Modified src/measure_theory/bochner_integration.lean 2020-07-26 02:39:04 11179d5 feat(algebra/category/Group/*): compare categorical (co)kernels/images with the usual notions (#3443) ESTIMATED CHANGES Modified src/algebra/category/Group/colimits.lean + def AddCommGroup.cokernel_iso_quotient Modified src/algebra/category/Group/images.lean + def AddCommGroup.image_iso_range Modified src/algebra/category/Group/limits.lean + def AddCommGroup.kernel_iso_ker + theorem AddCommGroup.kernel_iso_ker_hom_comp_subtype + theorem AddCommGroup.kernel_iso_ker_inv_comp_ι + def AddCommGroup.kernel_iso_ker_over Modified src/category_theory/limits/concrete_category.lean Added src/category_theory/limits/shapes/concrete_category.lean + theorem category_theory.limits.cokernel_condition_apply + theorem category_theory.limits.kernel_condition_apply 2020-07-25 15:53:29 8582b06 feat(logic/basic): mark cast_eq as a `simp` lemma (#3547) The theorem `cast_eq` is in core and says `theorem cast_eq : ∀ {α : Sort u} (h : α = α) (a : α), cast h a = a` ESTIMATED CHANGES Modified src/data/fin.lean Modified src/logic/basic.lean 2020-07-25 15:23:48 3484194 chore(geometry/manifold/real_instance): remove global fact instance (#3549) Remove global `fact` instance that was used to get a manifold structure on `[0, 1]`, and register only the manifold structure. ESTIMATED CHANGES Modified src/geometry/manifold/real_instances.lean + theorem fact_zero_lt_one 2020-07-25 10:09:45 e90c7b9 feat(data/num/prime): kernel-friendly decision procedure for prime (#3525) ESTIMATED CHANGES Modified src/algebra/ring/basic.lean +/- theorem dvd_iff_dvd_of_dvd_sub +/- theorem dvd_mul_sub_mul + theorem two_dvd_bit0 + theorem two_dvd_bit1 Modified src/data/nat/basic.lean Modified src/data/num/lemmas.lean + theorem pos_num.dvd_to_nat Added src/data/num/prime.lean + def num.min_fac + theorem num.min_fac_to_nat + def num.prime + def pos_num.min_fac + def pos_num.min_fac_aux + theorem pos_num.min_fac_aux_to_nat + theorem pos_num.min_fac_to_nat + def pos_num.prime 2020-07-25 07:31:35 0379d3a chore(*): minor import cleanup (#3546) ESTIMATED CHANGES Modified src/algebra/group/pi.lean Modified src/algebra/ring/pi.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/groupoid.lean Modified src/data/equiv/encodable/lattice.lean Modified src/data/indicator_function.lean Modified src/data/real/nnreal.lean Modified src/topology/algebra/monoid.lean 2020-07-25 06:33:04 2a456a9 feat(topology/*, geometry/*): missing lemmas (#3528) Grab bag of missing lemmas on topology and geometry that were needed for the manifold exercises in Lftcm2020. ESTIMATED CHANGES Modified src/geometry/manifold/mfderiv.lean + theorem mfderiv_within_congr + theorem tangent_map_id + theorem tangent_map_within_congr + theorem tangent_map_within_id Modified src/geometry/manifold/real_instances.lean Modified src/topology/continuous_on.lean + theorem embedding.continuous_on_iff + theorem inducing.continuous_on_iff Modified src/topology/homeomorph.lean + theorem homeomorph.homeomorph_mk_coe + theorem homeomorph.homeomorph_mk_coe_symm Modified src/topology/metric_space/basic.lean + theorem metric.is_closed_sphere 2020-07-25 06:33:02 12a7ce3 feat(category_theory/isomorphism): lemmas about cancelling isomorphisms (#3436) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean + theorem category_theory.equivalence.cancel_counit_inv_right + theorem category_theory.equivalence.cancel_counit_inv_right_assoc' + theorem category_theory.equivalence.cancel_counit_inv_right_assoc + theorem category_theory.equivalence.cancel_counit_right + theorem category_theory.equivalence.cancel_unit_inv_right + theorem category_theory.equivalence.cancel_unit_right + theorem category_theory.equivalence.cancel_unit_right_assoc' + theorem category_theory.equivalence.cancel_unit_right_assoc Modified src/category_theory/isomorphism.lean + theorem category_theory.iso.cancel_iso_hom_left + theorem category_theory.iso.cancel_iso_hom_right + theorem category_theory.iso.cancel_iso_hom_right_assoc + theorem category_theory.iso.cancel_iso_inv_left + theorem category_theory.iso.cancel_iso_inv_right + theorem category_theory.iso.cancel_iso_inv_right_assoc Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.cancel_nat_iso_hom_left + theorem category_theory.nat_iso.cancel_nat_iso_hom_right + theorem category_theory.nat_iso.cancel_nat_iso_hom_right_assoc + theorem category_theory.nat_iso.cancel_nat_iso_inv_left + theorem category_theory.nat_iso.cancel_nat_iso_inv_right + theorem category_theory.nat_iso.cancel_nat_iso_inv_right_assoc 2020-07-25 05:30:35 2d29f80 feat(data/finsupp): lattice structure on finsupp (#3335) adds facts about order_isos respecting lattice operations defines lattice structures on finsupps to N constructs an order_iso out of finsupp.to_multiset ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Added src/data/finsupp/lattice.lean + theorem finsupp.bot_eq_zero + theorem finsupp.disjoint_iff + theorem finsupp.inf_apply + theorem finsupp.le_def + theorem finsupp.monotone_to_fun + theorem finsupp.of_multiset_strict_mono + def finsupp.order_embedding_to_fun + theorem finsupp.order_embedding_to_fun_apply + def finsupp.order_iso_multiset + theorem finsupp.order_iso_multiset_apply + theorem finsupp.order_iso_multiset_symm_apply + theorem finsupp.sup_apply + theorem finsupp.support_inf + theorem finsupp.support_sup 2020-07-25 04:26:19 8d55eda feat(topology/tactic): `continuity` tactic (#2879) ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean +/- def f Modified src/analysis/analytic/basic.lean Modified src/analysis/normed_space/banach.lean Modified src/data/complex/exponential.lean +/- theorem real.exp_monotone Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/topology/algebra/group.lean +/- theorem continuous.sub Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean + theorem continuous.pow Modified src/topology/algebra/multilinear.lean Modified src/topology/algebra/ordered.lean +/- theorem continuous.max +/- theorem continuous.min Modified src/topology/algebra/polynomial.lean Modified src/topology/compact_open.lean Modified src/topology/constructions.lean +/- theorem continuous.prod_mk +/- theorem continuous_fst +/- theorem continuous_inl +/- theorem continuous_inr +/- theorem continuous_quot_lift +/- theorem continuous_quot_mk +/- theorem continuous_snd +/- theorem continuous_subtype_mk +/- theorem continuous_subtype_val +/- theorem continuous_sum_rec +/- theorem continuous_ulift_down +/- theorem continuous_ulift_up Modified src/topology/continuous_map.lean +/- def continuous_map.const +/- def continuous_map.id Modified src/topology/homeomorph.lean Modified src/topology/order.lean +/- theorem continuous_bot +/- theorem continuous_top Added src/topology/tactic.lean Added test/continuity.lean 2020-07-24 21:19:13 6f9da35 feat(tactic/simps): improvements (#3477) Features: * `@[simps]` will look for `has_coe_to_sort` and `has_coe_to_fun` instances, and use those instead of direct projections. This should make it way more applicable for `equiv`, `local_equiv` and all other structures that coerce to a function (and for the few structures that coerce to a type). This works out-of-the-box without special configuration. * Use `has_mul.mul`, `has_zero.zero` and all the other "notation projections" instead of the projections directly. This should make it more useful in category theory and the algebraic hierarchy (note: the `[notation_class]` attribute still needs to be added to all notation classes not defined in `init.core`) * Add an easy way to specify custom projections of structures (like using `⇑e.symm` instead of `e.inv_fun`). They have to be definitionally equal to the projection. Minor changes: * Change the syntax to specify options. * `prod` (and `pprod`) are treated as a special case: we do not recursively apply projections of these structure. This was the most common reason that we had to write the desired projections manually. You can still override this behavior by writing out the projections manually. * A flag to apply `simp` to the rhs of the generated lemma, so that they are in simp-normal-form. * Added an options to add more attributes to the generated lemmas * Added an option which definitions to unfold to determine whether a type is a function type. By default it will unfold reducible definitions and instances (but e.g. not `set α`) * Added an option to unfold definitions in the declaration to determine whether it is a constructor. (default: none) * Added an option to not fully-apply the terms in the generated lemmas. Design decisions: * For every field in a structure there is a specified "projection expression" that acts as the projection for that field. For most fields this is just the projection of the structure, but this will be automatically overridden under certain conditions, like a coercion to functions/sorts existing, or a notation typeclass existing for a certain field. * The first time you call `simps` for a specific structure, these projection expressions are cached using an attribute for that structure, and it is assumed you want to use the same projection expressions every time. * You can also manually specify the projection. See Note [custom simps projection]. ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Mon/colimits.lean Modified src/category_theory/products/associator.lean +/- def category_theory.prod.associator +/- def category_theory.prod.inverse_associator Modified src/category_theory/products/basic.lean +/- def category_theory.evaluation_uncurried +/- def category_theory.functor.prod +/- def category_theory.nat_trans.prod +/- def category_theory.prod.fst +/- def category_theory.prod.sectl +/- def category_theory.prod.sectr +/- def category_theory.prod.snd +/- def category_theory.prod.swap +/- def category_theory.prod.symmetry Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/simps.lean Modified test/simps.lean + def coercing.Group.prod_Semigroup + structure coercing.Semigroup + def coercing.bar + structure coercing.equiv2 + def coercing.foo2 + def coercing.foo + structure coercing.foo_str + def coercing.new_bar + def coercing.voo2 + def coercing.voo + structure coercing.voo_str - def count_nested.nested1 - def count_nested.nested2 + def equiv.trans + structure failty_manual_coercion.equiv + def foo.rfl2 + def foo.rfl3 + def manual_coercion.equiv.simps.inv_fun + def manual_coercion.equiv.symm + structure manual_coercion.equiv + def manual_initialize.equiv.simps.inv_fun + def manual_initialize.equiv.symm + structure manual_initialize.equiv + def my_nat_equiv + structure my_prod + def myprod.map + def nat_set_plus2 + def nat_set_plus3 + def nat_set_plus + def nested_non_fully_applied.equiv.symm2 + def nested_non_fully_applied.equiv.symm3 + def nested_non_fully_applied.equiv.symm + structure nested_non_fully_applied.equiv +/- def partially_applied_term + def pprod_equiv_prod + structure set_plus +/- def short_name1 + def succeed_without_simplification_possible + def test_sneaky +/- def very_partially_applied_term Modified test/tactics.lean 2020-07-24 18:42:44 4d81149 chore(ring_theory/prod): move file to algebra/ring/prod (#3540) ESTIMATED CHANGES Renamed src/ring_theory/prod.lean to src/algebra/ring/prod.lean Modified src/ring_theory/subsemiring.lean 2020-07-24 17:03:22 47efcf3 chore(algebraic_geometry/presheafed_space): use projection rather than fancy coercion (#3507) We'd gone to great effort when writing `PresheafedSpace` to create a coercion from morphisms of `PresheafedSpace`s to morphisms in `Top`. It's hard to read, it's fragile. So this PR rips out that coercion, and renames the "continuous map between base spaces" field from `f` to `base`, and uses that throughout. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean + theorem algebraic_geometry.PresheafedSpace.comp_base - theorem algebraic_geometry.PresheafedSpace.comp_coe - theorem algebraic_geometry.PresheafedSpace.f_as_coe - theorem algebraic_geometry.PresheafedSpace.hom_mk_coe + theorem algebraic_geometry.PresheafedSpace.id_base - theorem algebraic_geometry.PresheafedSpace.id_coe - theorem algebraic_geometry.PresheafedSpace.id_coe_fn Modified src/algebraic_geometry/stalks.lean +/- def algebraic_geometry.PresheafedSpace.stalk_map 2020-07-24 13:04:01 229cf6e feat(data/polynomial): irreducible_of_irreducible_mod_prime (#3539) I was waiting on this, an exercise from Johan's tutorial at LftCM, to see if a participant would PR it. Perhaps not, so I'll contribute this now. ESTIMATED CHANGES Modified src/data/polynomial/ring_division.lean + theorem polynomial.irreducible_of_irreducible_map + theorem polynomial.is_unit_of_is_unit_leading_coeff_of_is_unit_map 2020-07-24 13:03:59 579b142 feat(field_theory/fixed): a field is normal over the fixed subfield under a group action (#3520) From my Galois theory repo. ESTIMATED CHANGES Modified src/algebra/group_action_hom.lean + theorem is_invariant_subring.coe_subtype_hom' + theorem is_invariant_subring.coe_subtype_hom + def is_invariant_subring.subtype_hom + theorem mul_semiring_action_hom.coe_polynomial Modified src/algebra/group_ring_action.lean + theorem list.smul_prod + theorem multiset.smul_prod +/- theorem polynomial.coeff_smul' + theorem polynomial.eval_smul' +/- theorem polynomial.smul_C +/- theorem polynomial.smul_X + theorem polynomial.smul_eval + theorem polynomial.smul_eval_smul + theorem prod_X_sub_smul.coeff + theorem prod_X_sub_smul.eval + theorem prod_X_sub_smul.monic + theorem prod_X_sub_smul.smul + theorem smul_prod Modified src/algebra/module/basic.lean - theorem smul_neg - theorem smul_sub Modified src/data/polynomial/div.lean + theorem polynomial.map_dvd_map Modified src/data/polynomial/field_division.lean + theorem polynomial.irreducible_of_monic + theorem polynomial.map_dvd_map' Modified src/data/polynomial/ring_division.lean + theorem polynomial.eq_of_monic_of_associated Added src/field_theory/fixed.lean + theorem fixed_points.coe_algebra_map + theorem fixed_points.is_integral + theorem fixed_points.minpoly.eval₂ + theorem fixed_points.minpoly.irreducible + theorem fixed_points.minpoly.irreducible_aux + theorem fixed_points.minpoly.minimal_polynomial + theorem fixed_points.minpoly.monic + theorem fixed_points.minpoly.ne_one + def fixed_points.minpoly + theorem fixed_points.of_eval₂ + theorem fixed_points.smul + theorem fixed_points.smul_polynomial Modified src/field_theory/minimal_polynomial.lean + theorem minimal_polynomial.unique' Added src/field_theory/normal.lean + theorem normal.exists_is_splitting_field + theorem normal.is_integral + theorem normal.splits + def normal Modified src/group_theory/group_action.lean + def mul_action.fixed_by + theorem mul_action.fixed_eq_Inter_fixed_by +/- def mul_action.fixed_points + theorem mul_action.injective_of_quotient_stabilizer + theorem mul_action.mem_fixed_by + def mul_action.of_quotient_stabilizer + theorem mul_action.of_quotient_stabilizer_mem_orbit + theorem mul_action.of_quotient_stabilizer_mk + theorem mul_action.of_quotient_stabilizer_smul + theorem smul_neg + theorem smul_sub Modified src/ring_theory/algebra.lean + theorem algebra.coe_top Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.map_to_subring 2020-07-24 11:52:28 a6ad904 feat(tactic/apply_rules): allow apply_cfg argument (#3538) This allows passing an `apply_cfg` argument to `apply_rules` (and simplifies the configuration argument to `solve_by_elim`). This is prompted by the desire to try using `apply_rules` with `md := semireducible` when working on the `continuity` tactic. ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/tactic/suggest.lean Modified test/library_search/basic.lean 2020-07-24 11:07:23 2d47d0c chore(measure_theory/indicator_function): split into 2 files deps: 3503 (#3509) Split `measure_theory/indicator_function` into 2 files. This file formulated all lemmas for `measure.ae` but they hold for any filter. ESTIMATED CHANGES Added src/analysis/normed_space/indicator_function.lean + theorem indicator_norm_le_norm_self + theorem norm_indicator_eq_indicator_norm + theorem norm_indicator_le_norm_self + theorem norm_indicator_le_of_subset Modified src/data/indicator_function.lean + theorem set.indicator_rel_indicator Deleted src/measure_theory/indicator_function.lean - theorem indicator_congr_ae - theorem indicator_congr_of_set - theorem indicator_le_indicator_ae - theorem indicator_norm_le_norm_self - theorem indicator_union_ae - theorem norm_indicator_eq_indicator_norm - theorem norm_indicator_le_norm_self - theorem norm_indicator_le_of_subset - theorem tendsto_indicator_bUnion_finset - theorem tendsto_indicator_of_antimono - theorem tendsto_indicator_of_monotone Modified src/measure_theory/set_integral.lean Modified src/order/filter/basic.lean + theorem filter.eventually_eq.mem_iff + theorem filter.eventually_set_ext Added src/order/filter/indicator_function.lean + theorem indicator_eventually_eq + theorem indicator_eventually_le_indicator + theorem indicator_union_eventually_eq + theorem tendsto_indicator_bUnion_finset + theorem tendsto_indicator_of_antimono + theorem tendsto_indicator_of_monotone 2020-07-24 09:01:42 6fe81bd chore(*): remove `plift` from some lemmas about `infi`/`supr` (#3503) Now `supr_eq_supr_finset` etc assume `ι` is a `Type*` and don't use `plift`. If you want to apply it to a `Sort*`, rewrite on `equiv.plift.surjective.supr_comp` first. ## Full list of API changes: ### `data/equiv/basic` * `equiv.ulift`: change the order of universe arguments to match `ulift`; * add `coe_ulift`, `coe_plift`, `coe_ulift_symm`, `coe_plift_symm`; ### `data/finset/lattice` * `supr_eq_supr_finset`, `infi_eq_infi_finset`: assume `ι` is a `Type*`, avoid `plift`; * `Union_eq_Union_finset`, `Inter_eq_Inter_finset`: same as above; ### `data/set/basic` * `function.surjective.range_comp`: generalize to `Sort*` for 2 of 3 arguments; ### `order/complete_lattice` * remove `supr_congr` and `infi_congr`; * add `function.surjective.supr_comp` and `function.surjective.infi_comp`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.coe_plift + theorem equiv.coe_plift_symm + theorem equiv.coe_ulift + theorem equiv.coe_ulift_symm Modified src/data/finset/lattice.lean + theorem infi_eq_infi_finset' + theorem set.Inter_eq_Inter_finset' + theorem set.Union_eq_Union_finset' + theorem supr_eq_supr_finset' Modified src/data/set/basic.lean +/- theorem function.surjective.range_comp Modified src/linear_algebra/basis.lean Modified src/order/complete_lattice.lean + theorem function.surjective.infi_comp + theorem function.surjective.supr_comp - theorem infi_congr - theorem supr_congr Modified src/order/filter/basic.lean + theorem filter.infi_sets_eq_finite' +/- theorem filter.infi_sets_eq_finite + theorem filter.mem_infi_finite' +/- theorem filter.mem_infi_finite Modified src/set_theory/ordinal.lean 2020-07-24 08:19:54 499cb9b refactor(data/nat/digits): refactor into sections (#3527) Refactor `data.nat.digits` into sections and grouping similar lemmas together. ESTIMATED CHANGES Modified src/data/nat/digits.lean 2020-07-24 07:44:28 5d41ec7 feat(ring_theory/polynomial/basic): remove unnecessary commutativity assumption (#3535) ESTIMATED CHANGES Modified src/ring_theory/polynomial/basic.lean 2020-07-24 00:41:59 c88f8be chore(scripts): update nolints.txt (#3534) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-23 23:18:12 bad4f97 feat(algebra/direct_sum): Add ⨁ notation (#3473) This uses the unicode character "n-ary circled plus operator", which seems to be the usual symbol for this operation ESTIMATED CHANGES Modified src/algebra/direct_sum.lean +/- def direct_sum.mk +/- def direct_sum.of +/- theorem direct_sum.to_group.unique +/- def direct_sum.to_group Modified src/linear_algebra/direct_sum/tensor_product.lean Modified src/linear_algebra/direct_sum_module.lean +/- theorem direct_sum.apply_eq_component +/- def direct_sum.component +/- theorem direct_sum.ext +/- theorem direct_sum.ext_iff +/- def direct_sum.lmk +/- def direct_sum.lof +/- theorem direct_sum.to_module.ext +/- theorem direct_sum.to_module.unique +/- def direct_sum.to_module 2020-07-23 19:52:19 289d17c chore(data/equiv/basic): avoid `λ ⟨a, b⟩` in some defs, add `simp` lemmas (#3530) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.psigma_equiv_sigma_apply + theorem equiv.psigma_equiv_sigma_symm_apply +/- def equiv.sigma_congr_left + theorem equiv.sigma_congr_left_apply + theorem equiv.sigma_congr_right_apply + theorem equiv.sigma_congr_right_symm_apply +/- def equiv.sigma_equiv_prod + theorem equiv.sigma_equiv_prod_apply +/- def equiv.sigma_equiv_prod_of_equiv + theorem equiv.sigma_equiv_prod_symm_apply 2020-07-23 18:29:16 2d395a9 refactor(algebra/pi_instance): delete pi_instance file, and move instances to group/ring etc appropriately (#3513) ESTIMATED CHANGES Modified src/algebra/add_torsor.lean Added src/algebra/big_operators/pi.lean + theorem add_monoid_hom.functions_ext + theorem finset.prod_apply + theorem finset.univ_sum_single + theorem pi.list_prod_apply + theorem pi.multiset_prod_apply + theorem prod.fst_prod + theorem prod.snd_prod + theorem prod_mk_prod + theorem ring_hom.functions_ext Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/category/Group/limits.lean Modified src/algebra/char_p.lean Modified src/algebra/default.lean Modified src/algebra/field.lean Added src/algebra/group/pi.lean + def add_monoid_hom.single + theorem add_monoid_hom.single_apply + def monoid_hom.apply + theorem monoid_hom.apply_apply + theorem pi.inv_apply + theorem pi.mul_apply + theorem pi.one_apply + def pi.single + theorem pi.single_eq_of_ne + theorem pi.single_eq_same + theorem pi.sub_apply Modified src/algebra/group/with_one.lean Modified src/algebra/midpoint.lean Renamed src/algebra/module.lean to src/algebra/module/basic.lean Added src/algebra/module/default.lean Added src/algebra/module/pi.lean + theorem pi.smul_apply' + theorem pi.smul_apply Added src/algebra/module/prod.lean + theorem prod.smul_fst + theorem prod.smul_mk + theorem prod.smul_snd Deleted src/algebra/pi_instances.lean - theorem add_monoid_hom.functions_ext - def add_monoid_hom.single - theorem add_monoid_hom.single_apply - theorem finset.prod_apply - theorem finset.prod_mk_prod - theorem finset.univ_sum_single - def monoid_hom.apply - theorem monoid_hom.apply_apply - theorem pi.finset_prod_apply - theorem pi.inv_apply - theorem pi.list_prod_apply - theorem pi.mul_apply - theorem pi.multiset_prod_apply - theorem pi.one_apply - def pi.single - theorem pi.single_eq_of_ne - theorem pi.single_eq_same - theorem pi.smul_apply' - theorem pi.smul_apply - theorem pi.sub_apply - theorem prod.fst.is_group_hom - theorem prod.fst.is_monoid_hom - theorem prod.fst_inl - theorem prod.fst_inr - theorem prod.fst_prod - def prod.inl - theorem prod.inl_eq_inl - theorem prod.inl_eq_inr - theorem prod.inl_injective - def prod.inr - theorem prod.inr_eq_inl - theorem prod.inr_eq_inr - theorem prod.inr_injective - theorem prod.smul_fst - theorem prod.smul_mk - theorem prod.smul_snd - theorem prod.snd.is_group_hom - theorem prod.snd.is_monoid_hom - theorem prod.snd_inl - theorem prod.snd_inr - theorem prod.snd_prod - def ring_hom.apply - theorem ring_hom.apply_apply - theorem ring_hom.functions_ext Modified src/algebra/pointwise.lean Modified src/algebra/punit_instances.lean Renamed src/algebra/ring.lean to src/algebra/ring/basic.lean Added src/algebra/ring/default.lean Added src/algebra/ring/pi.lean + def ring_hom.apply + theorem ring_hom.apply_apply Modified src/analysis/calculus/tangent_cone.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/holor.lean Modified src/data/indicator_function.lean Modified src/data/matrix/basic.lean Modified src/deprecated/group.lean Modified src/deprecated/ring.lean Modified src/field_theory/mv_polynomial.lean Modified src/group_theory/congruence.lean Modified src/group_theory/free_abelian_group.lean Modified src/linear_algebra/basic.lean +/- def linear_map.inl + theorem linear_map.inl_injective +/- def linear_map.inr + theorem linear_map.inr_injective Modified src/linear_algebra/basis.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/order/filter/filter_product.lean Modified src/order/filter/germ.lean Modified src/order/pilex.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/prod.lean Modified src/topology/algebra/monoid.lean Modified test/lint.lean Modified test/pi_simp.lean 2020-07-23 14:56:16 ed33a99 chore(measure_theory/l1_space): make `measure` argument of `integrable` optional (#3508) Other changes: * a few trivial lemmas; * fix notation for `∀ᵐ`: now Lean can use it for printing, not only for parsing. ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_zero_meas Modified src/measure_theory/l1_space.lean +/- def measure_theory.integrable Modified src/measure_theory/measure_space.lean 2020-07-23 13:44:07 396a66a chore(order/filter/*): use `[nonempty _]` instead of `(_ : nonempty _)` (#3526) In most cases Lean can find an instance automatically. ESTIMATED CHANGES Modified src/order/basic.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.at_top_basis Modified src/order/filter/bases.lean +/- theorem filter.has_basis_generate +/- theorem filter.has_basis_infi_principal Modified src/order/filter/basic.lean +/- theorem filter.infi_ne_bot_of_directed' +/- theorem filter.infi_sets_eq +/- theorem filter.map_infi_eq +/- theorem filter.mem_infi Modified src/order/filter/lift.lean Modified src/topology/metric_space/completion.lean Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/basic.lean 2020-07-23 11:08:28 b9beca0 chore(set_theory/ordinal): split into multiple files (#3517) Split the file `ordinal.lean` into three files, and add docstrings for all definitions and file-level docstrings. This is just shuffling things around: no new content, no erased content. ESTIMATED CHANGES Modified src/data/real/cardinality.lean Modified src/linear_algebra/dimension.lean Modified src/set_theory/cardinal.lean Added src/set_theory/cardinal_ordinal.lean + theorem cardinal.add_eq_left + theorem cardinal.add_eq_left_iff + theorem cardinal.add_eq_max + theorem cardinal.add_eq_right + theorem cardinal.add_eq_right_iff + theorem cardinal.add_eq_self + theorem cardinal.add_lt_of_lt + theorem cardinal.add_one_eq + def cardinal.aleph'.order_iso + theorem cardinal.aleph'.order_iso_coe + def cardinal.aleph' + theorem cardinal.aleph'_aleph_idx + def cardinal.aleph'_equiv + theorem cardinal.aleph'_is_normal + theorem cardinal.aleph'_le + theorem cardinal.aleph'_le_of_limit + theorem cardinal.aleph'_lt + theorem cardinal.aleph'_nat + theorem cardinal.aleph'_omega + theorem cardinal.aleph'_succ + theorem cardinal.aleph'_zero + def cardinal.aleph + theorem cardinal.aleph_idx.init + def cardinal.aleph_idx.initial_seg + theorem cardinal.aleph_idx.initial_seg_coe + def cardinal.aleph_idx.order_iso + theorem cardinal.aleph_idx.order_iso_coe + def cardinal.aleph_idx + theorem cardinal.aleph_idx_aleph' + theorem cardinal.aleph_idx_le + theorem cardinal.aleph_idx_lt + theorem cardinal.aleph_is_normal + theorem cardinal.aleph_le + theorem cardinal.aleph_lt + theorem cardinal.aleph_succ + theorem cardinal.aleph_zero + theorem cardinal.bit0_eq_self + theorem cardinal.bit0_le_bit0 + theorem cardinal.bit0_le_bit1 + theorem cardinal.bit0_lt_bit0 + theorem cardinal.bit0_lt_bit1 + theorem cardinal.bit0_lt_omega + theorem cardinal.bit0_ne_zero + theorem cardinal.bit1_eq_self_iff + theorem cardinal.bit1_le_bit0 + theorem cardinal.bit1_le_bit1 + theorem cardinal.bit1_lt_bit0 + theorem cardinal.bit1_lt_bit1 + theorem cardinal.bit1_lt_omega + theorem cardinal.bit1_ne_zero + theorem cardinal.eq_of_add_eq_of_omega_le + theorem cardinal.exists_aleph + theorem cardinal.extend_function + theorem cardinal.extend_function_finite + theorem cardinal.extend_function_of_lt + theorem cardinal.le_mul_left + theorem cardinal.le_mul_right + theorem cardinal.mk_bounded_set_le + theorem cardinal.mk_bounded_set_le_of_omega_le + theorem cardinal.mk_bounded_subset_le + theorem cardinal.mk_cardinal + theorem cardinal.mk_compl_eq_mk_compl_finite + theorem cardinal.mk_compl_eq_mk_compl_finite_lift + theorem cardinal.mk_compl_eq_mk_compl_finite_same + theorem cardinal.mk_compl_eq_mk_compl_infinite + theorem cardinal.mk_compl_finset_of_omega_le + theorem cardinal.mk_compl_of_omega_le + theorem cardinal.mk_list_eq_mk + theorem cardinal.mul_eq_left + theorem cardinal.mul_eq_left_iff + theorem cardinal.mul_eq_max + theorem cardinal.mul_eq_max_of_omega_le_left + theorem cardinal.mul_eq_right + theorem cardinal.mul_eq_self + theorem cardinal.mul_le_max_of_omega_le_left + theorem cardinal.mul_lt_of_lt + theorem cardinal.omega_le_aleph' + theorem cardinal.omega_le_aleph + theorem cardinal.omega_le_bit0 + theorem cardinal.omega_le_bit1 + theorem cardinal.one_le_bit0 + theorem cardinal.one_le_bit1 + theorem cardinal.one_le_one + theorem cardinal.one_lt_bit0 + theorem cardinal.one_lt_bit1 + theorem cardinal.one_lt_two + theorem cardinal.ord_aleph_is_limit + theorem cardinal.ord_is_limit + theorem cardinal.pow_le + theorem cardinal.power_nat_le + theorem cardinal.power_self_eq + theorem cardinal.powerlt_omega + theorem cardinal.powerlt_omega_le + theorem cardinal.type_cardinal + theorem cardinal.zero_lt_bit0 + theorem cardinal.zero_lt_bit1 Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean - theorem cardinal.add_eq_left - theorem cardinal.add_eq_left_iff - theorem cardinal.add_eq_max - theorem cardinal.add_eq_right - theorem cardinal.add_eq_right_iff - theorem cardinal.add_eq_self - theorem cardinal.add_lt_of_lt - theorem cardinal.add_one_eq - theorem cardinal.add_one_of_omega_le - def cardinal.aleph'.order_iso - theorem cardinal.aleph'.order_iso_coe - def cardinal.aleph' - theorem cardinal.aleph'_aleph_idx - def cardinal.aleph'_equiv - theorem cardinal.aleph'_is_normal - theorem cardinal.aleph'_le - theorem cardinal.aleph'_le_of_limit - theorem cardinal.aleph'_lt - theorem cardinal.aleph'_nat - theorem cardinal.aleph'_omega - theorem cardinal.aleph'_succ - theorem cardinal.aleph'_zero - def cardinal.aleph - theorem cardinal.aleph_idx.init - def cardinal.aleph_idx.initial_seg - theorem cardinal.aleph_idx.initial_seg_coe - def cardinal.aleph_idx.order_iso - theorem cardinal.aleph_idx.order_iso_coe - def cardinal.aleph_idx - theorem cardinal.aleph_idx_aleph' - theorem cardinal.aleph_idx_le - theorem cardinal.aleph_idx_lt - theorem cardinal.aleph_is_normal - theorem cardinal.aleph_le - theorem cardinal.aleph_lt - theorem cardinal.aleph_succ - theorem cardinal.aleph_zero - theorem cardinal.bit0_eq_self - theorem cardinal.bit0_le_bit0 - theorem cardinal.bit0_le_bit1 - theorem cardinal.bit0_lt_bit0 - theorem cardinal.bit0_lt_bit1 - theorem cardinal.bit0_lt_omega - theorem cardinal.bit0_ne_zero - theorem cardinal.bit1_eq_self_iff - theorem cardinal.bit1_le_bit0 - theorem cardinal.bit1_le_bit1 - theorem cardinal.bit1_lt_bit0 - theorem cardinal.bit1_lt_bit1 - theorem cardinal.bit1_lt_omega - theorem cardinal.bit1_ne_zero - theorem cardinal.eq_of_add_eq_of_omega_le - theorem cardinal.exists_aleph - theorem cardinal.extend_function - theorem cardinal.extend_function_finite - theorem cardinal.extend_function_of_lt - theorem cardinal.le_mul_left - theorem cardinal.le_mul_right - theorem cardinal.mk_bounded_set_le - theorem cardinal.mk_bounded_set_le_of_omega_le - theorem cardinal.mk_bounded_subset_le - theorem cardinal.mk_cardinal - theorem cardinal.mk_compl_eq_mk_compl_finite - theorem cardinal.mk_compl_eq_mk_compl_finite_lift - theorem cardinal.mk_compl_eq_mk_compl_finite_same - theorem cardinal.mk_compl_eq_mk_compl_infinite - theorem cardinal.mk_compl_finset_of_omega_le - theorem cardinal.mk_compl_of_omega_le - theorem cardinal.mk_list_eq_mk - theorem cardinal.mul_eq_left - theorem cardinal.mul_eq_left_iff - theorem cardinal.mul_eq_max - theorem cardinal.mul_eq_max_of_omega_le_left - theorem cardinal.mul_eq_right - theorem cardinal.mul_eq_self - theorem cardinal.mul_le_max_of_omega_le_left - theorem cardinal.mul_lt_of_lt - theorem cardinal.omega_le_aleph' - theorem cardinal.omega_le_aleph - theorem cardinal.omega_le_bit0 - theorem cardinal.omega_le_bit1 - theorem cardinal.one_le_bit0 - theorem cardinal.one_le_bit1 - theorem cardinal.one_le_one - theorem cardinal.one_lt_bit0 - theorem cardinal.one_lt_bit1 - theorem cardinal.one_lt_two - theorem cardinal.ord_aleph_is_limit - theorem cardinal.ord_is_limit - theorem cardinal.ord_omega - theorem cardinal.pow_le - theorem cardinal.power_nat_le - theorem cardinal.power_self_eq - theorem cardinal.powerlt_omega - theorem cardinal.powerlt_omega_le - theorem cardinal.type_cardinal - theorem cardinal.zero_lt_bit0 - theorem cardinal.zero_lt_bit1 - def ordinal.CNF - theorem ordinal.CNF_aux - theorem ordinal.CNF_foldr - theorem ordinal.CNF_fst_le - theorem ordinal.CNF_fst_le_log - theorem ordinal.CNF_ne_zero - theorem ordinal.CNF_pairwise - theorem ordinal.CNF_pairwise_aux - theorem ordinal.CNF_rec_ne_zero - theorem ordinal.CNF_rec_zero - theorem ordinal.CNF_snd_lt - theorem ordinal.CNF_sorted - theorem ordinal.CNF_zero - theorem ordinal.add_absorp - theorem ordinal.add_absorp_iff - theorem ordinal.add_is_limit - theorem ordinal.add_is_normal - theorem ordinal.add_le_add_iff_left - theorem ordinal.add_le_add_iff_right - theorem ordinal.add_le_of_limit - theorem ordinal.add_left_cancel - theorem ordinal.add_lt_add_iff_left - theorem ordinal.add_lt_omega - theorem ordinal.add_lt_omega_power - theorem ordinal.add_mul_limit - theorem ordinal.add_mul_limit_aux - theorem ordinal.add_mul_succ - theorem ordinal.add_omega - theorem ordinal.add_omega_power - theorem ordinal.add_right_cancel - theorem ordinal.add_sub_add_cancel - theorem ordinal.add_sub_cancel - theorem ordinal.add_sub_cancel_of_le - theorem ordinal.add_succ - def ordinal.bsup - theorem ordinal.bsup_id - theorem ordinal.bsup_le - theorem ordinal.bsup_type - theorem ordinal.card_eq_nat - theorem ordinal.card_eq_zero - theorem ordinal.card_le_nat - theorem ordinal.card_lt_nat - theorem ordinal.card_mul - theorem ordinal.card_succ - def ordinal.deriv - theorem ordinal.deriv_is_normal - theorem ordinal.deriv_limit - theorem ordinal.deriv_succ - theorem ordinal.deriv_zero - theorem ordinal.div_add_mod - theorem ordinal.div_def - theorem ordinal.div_eq_zero_of_lt - theorem ordinal.div_le - theorem ordinal.div_le_of_le_mul - theorem ordinal.div_lt - theorem ordinal.div_mul_cancel - theorem ordinal.div_one - theorem ordinal.div_self - theorem ordinal.div_zero - theorem ordinal.dvd_add - theorem ordinal.dvd_add_iff - theorem ordinal.dvd_antisymm - theorem ordinal.dvd_def - theorem ordinal.dvd_mul - theorem ordinal.dvd_mul_of_dvd - theorem ordinal.dvd_trans - theorem ordinal.dvd_zero - theorem ordinal.fintype_card - theorem ordinal.has_succ_of_is_limit - theorem ordinal.is_limit.nat_lt - theorem ordinal.is_limit.one_lt - theorem ordinal.is_limit.pos - def ordinal.is_limit - theorem ordinal.is_limit_add_iff - theorem ordinal.is_limit_iff_omega_dvd - theorem ordinal.is_normal.bsup - theorem ordinal.is_normal.bsup_eq - theorem ordinal.is_normal.deriv_fp - theorem ordinal.is_normal.fp_iff_deriv - theorem ordinal.is_normal.inj - theorem ordinal.is_normal.is_limit - theorem ordinal.is_normal.le_iff - theorem ordinal.is_normal.le_nfp - theorem ordinal.is_normal.le_self - theorem ordinal.is_normal.le_set' - theorem ordinal.is_normal.le_set - theorem ordinal.is_normal.limit_le - theorem ordinal.is_normal.limit_lt - theorem ordinal.is_normal.lt_iff - theorem ordinal.is_normal.lt_nfp - theorem ordinal.is_normal.nfp_fp - theorem ordinal.is_normal.nfp_le - theorem ordinal.is_normal.nfp_le_fp - theorem ordinal.is_normal.refl - theorem ordinal.is_normal.sup - theorem ordinal.is_normal.trans - def ordinal.is_normal - theorem ordinal.iterate_le_nfp - theorem ordinal.le_add_sub - theorem ordinal.le_bsup - theorem ordinal.le_div - theorem ordinal.le_log - theorem ordinal.le_nfp_self - theorem ordinal.le_of_dvd - theorem ordinal.le_of_mul_le_mul_left - theorem ordinal.le_power_self - theorem ordinal.le_succ_of_is_limit - theorem ordinal.le_sup - theorem ordinal.lift_add - theorem ordinal.lift_is_limit - theorem ordinal.lift_is_succ - theorem ordinal.lift_mul - theorem ordinal.lift_nat_cast - theorem ordinal.lift_pred - theorem ordinal.lift_succ - theorem ordinal.lift_type_fin - theorem ordinal.limit_le - def ordinal.limit_rec_on - theorem ordinal.limit_rec_on_limit - theorem ordinal.limit_rec_on_succ - theorem ordinal.limit_rec_on_zero - def ordinal.log - theorem ordinal.log_def - theorem ordinal.log_le_log - theorem ordinal.log_le_self - theorem ordinal.log_lt - theorem ordinal.log_not_one_lt - theorem ordinal.log_zero - theorem ordinal.lt_bsup - theorem ordinal.lt_div - theorem ordinal.lt_limit - theorem ordinal.lt_mul_div_add - theorem ordinal.lt_mul_of_limit - theorem ordinal.lt_mul_succ_div - theorem ordinal.lt_of_add_lt_add_right - theorem ordinal.lt_omega - theorem ordinal.lt_power_of_limit - theorem ordinal.lt_power_succ_log - theorem ordinal.lt_pred - theorem ordinal.lt_sub - theorem ordinal.lt_succ - theorem ordinal.lt_sup - theorem ordinal.mk_initial_seg - theorem ordinal.mod_def - theorem ordinal.mod_eq_of_lt - theorem ordinal.mod_lt - theorem ordinal.mod_one - theorem ordinal.mod_self - theorem ordinal.mod_zero - theorem ordinal.mul_add - theorem ordinal.mul_add_div - theorem ordinal.mul_add_one - theorem ordinal.mul_div_cancel - theorem ordinal.mul_div_le - theorem ordinal.mul_is_limit - theorem ordinal.mul_is_limit_left - theorem ordinal.mul_is_normal - theorem ordinal.mul_le_mul - theorem ordinal.mul_le_mul_iff_left - theorem ordinal.mul_le_mul_left - theorem ordinal.mul_le_mul_right - theorem ordinal.mul_le_of_limit - theorem ordinal.mul_lt_mul_iff_left - theorem ordinal.mul_lt_mul_of_pos_left - theorem ordinal.mul_lt_of_lt_div - theorem ordinal.mul_lt_omega - theorem ordinal.mul_lt_omega_power - theorem ordinal.mul_ne_zero - theorem ordinal.mul_omega - theorem ordinal.mul_omega_dvd - theorem ordinal.mul_omega_power_power - theorem ordinal.mul_pos - theorem ordinal.mul_right_inj - theorem ordinal.mul_sub - theorem ordinal.mul_succ - theorem ordinal.mul_zero - theorem ordinal.nat_cast_div - theorem ordinal.nat_cast_eq_zero - theorem ordinal.nat_cast_inj - theorem ordinal.nat_cast_le - theorem ordinal.nat_cast_lt - theorem ordinal.nat_cast_mod - theorem ordinal.nat_cast_mul - theorem ordinal.nat_cast_ne_zero - theorem ordinal.nat_cast_pos - theorem ordinal.nat_cast_power - theorem ordinal.nat_cast_sub - theorem ordinal.nat_cast_succ - theorem ordinal.nat_le_card - theorem ordinal.nat_lt_card - theorem ordinal.nat_lt_limit - theorem ordinal.nat_lt_omega - def ordinal.nfp - theorem ordinal.nfp_eq_self - theorem ordinal.not_succ_is_limit - theorem ordinal.not_succ_of_is_limit - theorem ordinal.not_zero_is_limit - theorem ordinal.omega_is_limit - theorem ordinal.omega_le - theorem ordinal.omega_le_of_is_limit - theorem ordinal.omega_ne_zero - theorem ordinal.omega_pos - theorem ordinal.one_CNF - theorem ordinal.one_add_of_omega_le - theorem ordinal.one_add_omega - theorem ordinal.one_dvd - theorem ordinal.one_le_iff_ne_zero - theorem ordinal.one_le_iff_pos - theorem ordinal.one_lt_omega - theorem ordinal.one_power - def ordinal.power - theorem ordinal.power_add - theorem ordinal.power_dvd_power - theorem ordinal.power_dvd_power_iff - theorem ordinal.power_is_limit - theorem ordinal.power_is_limit_left - theorem ordinal.power_is_normal - theorem ordinal.power_le_of_limit - theorem ordinal.power_le_power_iff_right - theorem ordinal.power_le_power_left - theorem ordinal.power_le_power_right - theorem ordinal.power_limit - theorem ordinal.power_log_le - theorem ordinal.power_lt_omega - theorem ordinal.power_lt_power_iff_right - theorem ordinal.power_lt_power_left_of_succ - theorem ordinal.power_mul - theorem ordinal.power_ne_zero - theorem ordinal.power_omega - theorem ordinal.power_one - theorem ordinal.power_pos - theorem ordinal.power_right_inj - theorem ordinal.power_succ - theorem ordinal.power_zero - def ordinal.pred - theorem ordinal.pred_eq_iff_not_succ - theorem ordinal.pred_le - theorem ordinal.pred_le_self - theorem ordinal.pred_lt_iff_is_succ - theorem ordinal.pred_succ - def ordinal.sub - theorem ordinal.sub_eq_of_add_eq - theorem ordinal.sub_eq_zero_iff_le - theorem ordinal.sub_is_limit - theorem ordinal.sub_le - theorem ordinal.sub_le_self - theorem ordinal.sub_self - theorem ordinal.sub_sub - theorem ordinal.sub_zero - theorem ordinal.succ_inj - theorem ordinal.succ_le_succ - theorem ordinal.succ_log_def - theorem ordinal.succ_lt_of_is_limit - theorem ordinal.succ_lt_of_not_succ - theorem ordinal.succ_lt_succ - theorem ordinal.succ_ne_zero - theorem ordinal.succ_pos - theorem ordinal.succ_pred_iff_is_succ - theorem ordinal.succ_zero - def ordinal.sup - theorem ordinal.sup_le - theorem ordinal.sup_ord - theorem ordinal.sup_succ - theorem ordinal.type_eq_zero_iff_empty - theorem ordinal.type_fin - theorem ordinal.type_mul - theorem ordinal.type_ne_zero_iff_nonempty - theorem ordinal.type_subrel_lt - theorem ordinal.unbounded_range_of_sup_ge - theorem ordinal.zero_CNF - theorem ordinal.zero_div - theorem ordinal.zero_dvd - theorem ordinal.zero_lt_one - theorem ordinal.zero_mod - theorem ordinal.zero_mul - theorem ordinal.zero_or_succ_or_limit - theorem ordinal.zero_power' - theorem ordinal.zero_power - theorem ordinal.zero_sub Added src/set_theory/ordinal_arithmetic.lean + theorem cardinal.add_one_of_omega_le + theorem cardinal.ord_omega + theorem ordinal.CNF_aux + theorem ordinal.CNF_foldr + theorem ordinal.CNF_fst_le + theorem ordinal.CNF_fst_le_log + theorem ordinal.CNF_ne_zero + theorem ordinal.CNF_pairwise + theorem ordinal.CNF_pairwise_aux + theorem ordinal.CNF_rec_ne_zero + theorem ordinal.CNF_rec_zero + theorem ordinal.CNF_snd_lt + theorem ordinal.CNF_sorted + theorem ordinal.CNF_zero + theorem ordinal.add_absorp + theorem ordinal.add_absorp_iff + theorem ordinal.add_is_limit + theorem ordinal.add_is_normal + theorem ordinal.add_le_add_iff_left + theorem ordinal.add_le_add_iff_right + theorem ordinal.add_le_of_limit + theorem ordinal.add_left_cancel + theorem ordinal.add_lt_add_iff_left + theorem ordinal.add_lt_omega + theorem ordinal.add_lt_omega_power + theorem ordinal.add_mul_limit + theorem ordinal.add_mul_limit_aux + theorem ordinal.add_mul_succ + theorem ordinal.add_omega + theorem ordinal.add_omega_power + theorem ordinal.add_right_cancel + theorem ordinal.add_sub_add_cancel + theorem ordinal.add_sub_cancel + theorem ordinal.add_sub_cancel_of_le + theorem ordinal.add_succ + def ordinal.bsup + theorem ordinal.bsup_id + theorem ordinal.bsup_le + theorem ordinal.bsup_type + theorem ordinal.card_eq_nat + theorem ordinal.card_eq_zero + theorem ordinal.card_le_nat + theorem ordinal.card_lt_nat + theorem ordinal.card_mul + theorem ordinal.card_succ + def ordinal.deriv + theorem ordinal.deriv_is_normal + theorem ordinal.deriv_limit + theorem ordinal.deriv_succ + theorem ordinal.deriv_zero + theorem ordinal.div_add_mod + theorem ordinal.div_def + theorem ordinal.div_eq_zero_of_lt + theorem ordinal.div_le + theorem ordinal.div_le_of_le_mul + theorem ordinal.div_lt + theorem ordinal.div_mul_cancel + theorem ordinal.div_one + theorem ordinal.div_self + theorem ordinal.div_zero + theorem ordinal.dvd_add + theorem ordinal.dvd_add_iff + theorem ordinal.dvd_antisymm + theorem ordinal.dvd_def + theorem ordinal.dvd_mul + theorem ordinal.dvd_mul_of_dvd + theorem ordinal.dvd_trans + theorem ordinal.dvd_zero + theorem ordinal.fintype_card + theorem ordinal.has_succ_of_is_limit + theorem ordinal.is_limit.nat_lt + theorem ordinal.is_limit.one_lt + theorem ordinal.is_limit.pos + def ordinal.is_limit + theorem ordinal.is_limit_add_iff + theorem ordinal.is_limit_iff_omega_dvd + theorem ordinal.is_normal.bsup + theorem ordinal.is_normal.bsup_eq + theorem ordinal.is_normal.deriv_fp + theorem ordinal.is_normal.fp_iff_deriv + theorem ordinal.is_normal.inj + theorem ordinal.is_normal.is_limit + theorem ordinal.is_normal.le_iff + theorem ordinal.is_normal.le_nfp + theorem ordinal.is_normal.le_self + theorem ordinal.is_normal.le_set' + theorem ordinal.is_normal.le_set + theorem ordinal.is_normal.limit_le + theorem ordinal.is_normal.limit_lt + theorem ordinal.is_normal.lt_iff + theorem ordinal.is_normal.lt_nfp + theorem ordinal.is_normal.nfp_fp + theorem ordinal.is_normal.nfp_le + theorem ordinal.is_normal.nfp_le_fp + theorem ordinal.is_normal.refl + theorem ordinal.is_normal.sup + theorem ordinal.is_normal.trans + def ordinal.is_normal + theorem ordinal.iterate_le_nfp + theorem ordinal.le_add_sub + theorem ordinal.le_bsup + theorem ordinal.le_div + theorem ordinal.le_log + theorem ordinal.le_nfp_self + theorem ordinal.le_of_dvd + theorem ordinal.le_of_mul_le_mul_left + theorem ordinal.le_power_self + theorem ordinal.le_succ_of_is_limit + theorem ordinal.le_sup + theorem ordinal.lift_add + theorem ordinal.lift_is_limit + theorem ordinal.lift_is_succ + theorem ordinal.lift_mul + theorem ordinal.lift_nat_cast + theorem ordinal.lift_pred + theorem ordinal.lift_succ + theorem ordinal.lift_type_fin + theorem ordinal.limit_le + def ordinal.limit_rec_on + theorem ordinal.limit_rec_on_limit + theorem ordinal.limit_rec_on_succ + theorem ordinal.limit_rec_on_zero + def ordinal.log + theorem ordinal.log_def + theorem ordinal.log_le_log + theorem ordinal.log_le_self + theorem ordinal.log_lt + theorem ordinal.log_not_one_lt + theorem ordinal.log_zero + theorem ordinal.lt_bsup + theorem ordinal.lt_div + theorem ordinal.lt_limit + theorem ordinal.lt_mul_div_add + theorem ordinal.lt_mul_of_limit + theorem ordinal.lt_mul_succ_div + theorem ordinal.lt_of_add_lt_add_right + theorem ordinal.lt_omega + theorem ordinal.lt_power_of_limit + theorem ordinal.lt_power_succ_log + theorem ordinal.lt_pred + theorem ordinal.lt_sub + theorem ordinal.lt_succ + theorem ordinal.lt_sup + theorem ordinal.mk_initial_seg + theorem ordinal.mod_def + theorem ordinal.mod_eq_of_lt + theorem ordinal.mod_lt + theorem ordinal.mod_one + theorem ordinal.mod_self + theorem ordinal.mod_zero + theorem ordinal.mul_add + theorem ordinal.mul_add_div + theorem ordinal.mul_add_one + theorem ordinal.mul_div_cancel + theorem ordinal.mul_div_le + theorem ordinal.mul_is_limit + theorem ordinal.mul_is_limit_left + theorem ordinal.mul_is_normal + theorem ordinal.mul_le_mul + theorem ordinal.mul_le_mul_iff_left + theorem ordinal.mul_le_mul_left + theorem ordinal.mul_le_mul_right + theorem ordinal.mul_le_of_limit + theorem ordinal.mul_lt_mul_iff_left + theorem ordinal.mul_lt_mul_of_pos_left + theorem ordinal.mul_lt_of_lt_div + theorem ordinal.mul_lt_omega + theorem ordinal.mul_lt_omega_power + theorem ordinal.mul_ne_zero + theorem ordinal.mul_omega + theorem ordinal.mul_omega_dvd + theorem ordinal.mul_omega_power_power + theorem ordinal.mul_pos + theorem ordinal.mul_right_inj + theorem ordinal.mul_sub + theorem ordinal.mul_succ + theorem ordinal.mul_zero + theorem ordinal.nat_cast_div + theorem ordinal.nat_cast_eq_zero + theorem ordinal.nat_cast_inj + theorem ordinal.nat_cast_le + theorem ordinal.nat_cast_lt + theorem ordinal.nat_cast_mod + theorem ordinal.nat_cast_mul + theorem ordinal.nat_cast_ne_zero + theorem ordinal.nat_cast_pos + theorem ordinal.nat_cast_power + theorem ordinal.nat_cast_sub + theorem ordinal.nat_cast_succ + theorem ordinal.nat_le_card + theorem ordinal.nat_lt_card + theorem ordinal.nat_lt_limit + theorem ordinal.nat_lt_omega + def ordinal.nfp + theorem ordinal.nfp_eq_self + theorem ordinal.not_succ_is_limit + theorem ordinal.not_succ_of_is_limit + theorem ordinal.not_zero_is_limit + theorem ordinal.omega_is_limit + theorem ordinal.omega_le + theorem ordinal.omega_le_of_is_limit + theorem ordinal.omega_ne_zero + theorem ordinal.omega_pos + theorem ordinal.one_CNF + theorem ordinal.one_add_of_omega_le + theorem ordinal.one_add_omega + theorem ordinal.one_dvd + theorem ordinal.one_le_iff_ne_zero + theorem ordinal.one_le_iff_pos + theorem ordinal.one_lt_omega + theorem ordinal.one_power + def ordinal.power + theorem ordinal.power_add + theorem ordinal.power_dvd_power + theorem ordinal.power_dvd_power_iff + theorem ordinal.power_is_limit + theorem ordinal.power_is_limit_left + theorem ordinal.power_is_normal + theorem ordinal.power_le_of_limit + theorem ordinal.power_le_power_iff_right + theorem ordinal.power_le_power_left + theorem ordinal.power_le_power_right + theorem ordinal.power_limit + theorem ordinal.power_log_le + theorem ordinal.power_lt_omega + theorem ordinal.power_lt_power_iff_right + theorem ordinal.power_lt_power_left_of_succ + theorem ordinal.power_mul + theorem ordinal.power_ne_zero + theorem ordinal.power_omega + theorem ordinal.power_one + theorem ordinal.power_pos + theorem ordinal.power_right_inj + theorem ordinal.power_succ + theorem ordinal.power_zero + def ordinal.pred + theorem ordinal.pred_eq_iff_not_succ + theorem ordinal.pred_le + theorem ordinal.pred_le_self + theorem ordinal.pred_lt_iff_is_succ + theorem ordinal.pred_succ + def ordinal.sub + theorem ordinal.sub_eq_of_add_eq + theorem ordinal.sub_eq_zero_iff_le + theorem ordinal.sub_is_limit + theorem ordinal.sub_le + theorem ordinal.sub_le_self + theorem ordinal.sub_self + theorem ordinal.sub_sub + theorem ordinal.sub_zero + theorem ordinal.succ_inj + theorem ordinal.succ_le_succ + theorem ordinal.succ_log_def + theorem ordinal.succ_lt_of_is_limit + theorem ordinal.succ_lt_of_not_succ + theorem ordinal.succ_lt_succ + theorem ordinal.succ_ne_zero + theorem ordinal.succ_pos + theorem ordinal.succ_pred_iff_is_succ + theorem ordinal.succ_zero + def ordinal.sup + theorem ordinal.sup_le + theorem ordinal.sup_ord + theorem ordinal.sup_succ + theorem ordinal.type_eq_zero_iff_empty + theorem ordinal.type_fin + theorem ordinal.type_mul + theorem ordinal.type_ne_zero_iff_nonempty + theorem ordinal.type_subrel_lt + theorem ordinal.unbounded_range_of_sup_ge + theorem ordinal.zero_CNF + theorem ordinal.zero_div + theorem ordinal.zero_dvd + theorem ordinal.zero_lt_one + theorem ordinal.zero_mod + theorem ordinal.zero_mul + theorem ordinal.zero_or_succ_or_limit + theorem ordinal.zero_power' + theorem ordinal.zero_power + theorem ordinal.zero_sub Modified src/set_theory/ordinal_notation.lean +/- def onote.NF +/- theorem onote.oadd_lt_oadd_1 +/- theorem onote.oadd_lt_oadd_2 +/- theorem onote.oadd_lt_oadd_3 2020-07-23 08:52:03 79df8cc refactor(order/filter/at_top): import order.filter.bases (#3523) This way we can use facts about `filter.has_basis` in `filter.at_top`. Also generalize `is_countably_generated_at_top_finset_nat` to `at_top` filter on any `encodable` type. ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.at_top_basis' + theorem filter.at_top_basis + theorem filter.at_top_countable_basis + theorem filter.has_antimono_basis.tendsto + theorem filter.is_countably_generated.subseq_tendsto + theorem filter.is_countably_generated.tendsto_iff_seq_tendsto + theorem filter.is_countably_generated.tendsto_of_seq_tendsto Modified src/order/filter/bases.lean - theorem filter.at_top_basis' - theorem filter.at_top_basis - theorem filter.has_antimono_basis.tendsto + theorem filter.has_countable_basis.is_countably_generated - theorem filter.is_countably_generated.subseq_tendsto - theorem filter.is_countably_generated.tendsto_iff_seq_tendsto - theorem filter.is_countably_generated.tendsto_of_seq_tendsto - theorem filter.is_countably_generated_at_top_finset_nat 2020-07-23 07:50:13 d974457 feat(ring_theory/ideal_over): a prime ideal lying over a maximal ideal is maximal (#3488) By making the results in `ideal_over.lean` a bit more general, we can transfer to quotient rings. This allows us to prove a strict inclusion `I < J` of ideals in `S` results in a strict inclusion `I.comap f < J.comap f` if `R` if `f : R ->+* S` is nice enough. As a corollary, a prime ideal lying over a maximal ideal is maximal. ESTIMATED CHANGES Modified src/data/polynomial/eval.lean + theorem polynomial.map_monic_eq_zero_iff Modified src/ring_theory/ideal_operations.lean + theorem ideal.comap_eq_top_iff + theorem ideal.mem_quotient_iff_mem Modified src/ring_theory/ideal_over.lean + theorem ideal.coeff_zero_mem_comap_of_root_mem_of_eval_mem + theorem ideal.comap_lt_comap_of_integral_mem_sdiff + theorem ideal.comap_lt_comap_of_root_mem_sdiff +/- theorem ideal.comap_ne_bot_of_algebraic_mem +/- theorem ideal.comap_ne_bot_of_integral_mem + theorem ideal.exists_coeff_mem_comap_sdiff_comap_of_root_mem_sdiff + theorem ideal.exists_coeff_ne_zero_mem_comap_of_non_zero_divisor_root_mem + theorem ideal.integral_closure.comap_lt_comap + theorem ideal.integral_closure.is_maximal_of_is_maximal_comap + theorem ideal.is_maximal_of_is_integral_of_is_maximal_comap + theorem ideal.mem_of_one_mem Modified src/ring_theory/ideals.lean + theorem ideal.quotient.mk_surjective 2020-07-23 02:51:42 7397db7 chore(data/sym2) : simplify proofs (#3522) This shouldn't change any declarations, only proofs. ESTIMATED CHANGES Modified src/data/sym2.lean +/- theorem sym2.from_rel_proj_prop +/- theorem sym2.from_rel_prop +/- def sym2.is_diag +/- theorem sym2.map_comp +/- theorem sym2.map_id +/- theorem sym2.mk_has_mem +/- theorem sym2.rel.is_equivalence +/- theorem sym2.vmem_other_spec 2020-07-23 01:10:58 c149839 chore(topology/uniform_space/basic): golf a proof (#3521) Also prove that a `subsingleton` has a unique `topological_space` structure. ESTIMATED CHANGES Modified src/topology/order.lean Modified src/topology/uniform_space/basic.lean 2020-07-23 01:10:56 4a918fb chore(order/complete_lattice): add `supr/infi_of_empty(')` (#3519) ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem infi_of_empty' + theorem infi_of_empty + theorem supr_of_empty' + theorem supr_of_empty 2020-07-23 01:10:54 827fcd0 feat(analysis/convex/basic): add lemmas about convex combination of endpoints of intervals (#3482) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex.combo_self + theorem convex.mem_Icc + theorem convex.mem_Ico + theorem convex.mem_Ioc + theorem convex.mem_Ioo 2020-07-22 23:58:19 fbcd890 chore(data/subtype,order/complete_lattice): use `coe` instead of `subtype.val` (#3518) ESTIMATED CHANGES Modified src/data/subtype.lean Modified src/measure_theory/measure_space.lean Modified src/order/complete_lattice.lean Modified src/order/filter/bases.lean +/- theorem filter.countable_binfi_eq_infi_seq Modified src/ring_theory/algebraic.lean 2020-07-22 19:30:06 1dd69d3 refactor(data/polynomial): re-organizing (#3512) This builds on #3407, trying to get related material closer together. There shouldn't be any change to the set of declarations, just the order they come in and the imports required to get them. The major changes are: 1. `data.polynomial.derivative` now has much weaker imports 2. generally, material has been moved "upwards" to the first place it can be done (a lot of material moved out of `data.polynomial.degree` into `data.polynomial.degree.basic` -- essentially `degree` is the material about `degree` that also needs `eval` and friends; a further rename might be appropriate) 3. some of the later material is no longer a big chain of linear dependencies, but compiles separately ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean - theorem polynomial.C_inj - theorem polynomial.C_mul' - theorem polynomial.eval_mul - theorem polynomial.eval_pow - theorem polynomial.eval₂_hom - theorem polynomial.root_mul_left_of_is_root - theorem polynomial.root_mul_right_of_is_root Modified src/data/polynomial/basic.lean Modified src/data/polynomial/coeff.lean + theorem polynomial.C_mul' + theorem polynomial.finset_sum_coeff Modified src/data/polynomial/default.lean Modified src/data/polynomial/degree.lean - theorem polynomial.X_pow_sub_C_ne_zero - theorem polynomial.X_sub_C_ne_zero - theorem polynomial.coeff_mul_degree_add_degree - theorem polynomial.coeff_nat_degree_eq_zero_of_degree_lt - theorem polynomial.degree_X_pow - theorem polynomial.degree_X_pow_sub_C - theorem polynomial.degree_X_sub_C - theorem polynomial.degree_add_C - theorem polynomial.degree_add_eq_of_degree_lt - theorem polynomial.degree_add_eq_of_leading_coeff_add_ne_zero - theorem polynomial.degree_add_le - theorem polynomial.degree_erase_le - theorem polynomial.degree_erase_lt - theorem polynomial.degree_le_iff_coeff_zero - theorem polynomial.degree_le_zero_iff - theorem polynomial.degree_lt_degree_mul_X - theorem polynomial.degree_mul' - theorem polynomial.degree_mul - theorem polynomial.degree_mul_le - theorem polynomial.degree_nonneg_iff_ne_zero - theorem polynomial.degree_pow' - theorem polynomial.degree_pow - theorem polynomial.degree_pow_le - theorem polynomial.degree_sub_le - theorem polynomial.degree_sub_lt - theorem polynomial.degree_sum_le - theorem polynomial.eq_C_of_degree_eq_zero - theorem polynomial.eq_C_of_degree_le_zero - theorem polynomial.eq_C_of_nat_degree_le_zero - theorem polynomial.leading_coeff_C - theorem polynomial.leading_coeff_X - theorem polynomial.leading_coeff_X_pow - theorem polynomial.leading_coeff_add_of_degree_eq - theorem polynomial.leading_coeff_add_of_degree_lt - theorem polynomial.leading_coeff_eq_zero - theorem polynomial.leading_coeff_eq_zero_iff_deg_eq_bot - def polynomial.leading_coeff_hom - theorem polynomial.leading_coeff_hom_apply - theorem polynomial.leading_coeff_monomial - theorem polynomial.leading_coeff_mul' - theorem polynomial.leading_coeff_mul - theorem polynomial.leading_coeff_mul_X_pow - theorem polynomial.leading_coeff_one - theorem polynomial.leading_coeff_pow' - theorem polynomial.leading_coeff_pow - theorem polynomial.leading_coeff_zero - theorem polynomial.monic.ne_zero - theorem polynomial.monic.ne_zero_of_zero_ne_one - theorem polynomial.monic_X - theorem polynomial.monic_one - theorem polynomial.nat_degree_X_pow_sub_C - theorem polynomial.nat_degree_X_sub_C - theorem polynomial.nat_degree_X_sub_C_le - theorem polynomial.nat_degree_eq_zero_iff_degree_le_zero - theorem polynomial.nat_degree_mul' - theorem polynomial.nat_degree_mul_le - theorem polynomial.nat_degree_pos_iff_degree_pos - theorem polynomial.nat_degree_pow' - theorem polynomial.ne_zero_of_degree_gt - theorem polynomial.next_coeff_X_sub_C - theorem polynomial.not_is_unit_X - theorem polynomial.subsingleton_of_monic_zero - theorem polynomial.zero_le_degree_iff Modified src/data/polynomial/degree/basic.lean + theorem polynomial.X_pow_sub_C_ne_zero + theorem polynomial.X_sub_C_ne_zero + theorem polynomial.as_sum + theorem polynomial.coeff_mul_degree_add_degree + theorem polynomial.coeff_nat_degree_eq_zero_of_degree_lt + theorem polynomial.degree_X_pow + theorem polynomial.degree_X_pow_sub_C + theorem polynomial.degree_X_sub_C + theorem polynomial.degree_add_C + theorem polynomial.degree_add_eq_of_degree_lt + theorem polynomial.degree_add_eq_of_leading_coeff_add_ne_zero + theorem polynomial.degree_add_le + theorem polynomial.degree_erase_le + theorem polynomial.degree_erase_lt + theorem polynomial.degree_le_iff_coeff_zero + theorem polynomial.degree_le_zero_iff + theorem polynomial.degree_lt_degree_mul_X + theorem polynomial.degree_mul' + theorem polynomial.degree_mul + theorem polynomial.degree_mul_le + theorem polynomial.degree_nonneg_iff_ne_zero + theorem polynomial.degree_pow' + theorem polynomial.degree_pow + theorem polynomial.degree_pow_le + theorem polynomial.degree_sub_le + theorem polynomial.degree_sub_lt + theorem polynomial.degree_sum_le + theorem polynomial.eq_C_of_degree_eq_zero + theorem polynomial.eq_C_of_degree_le_zero + theorem polynomial.eq_C_of_nat_degree_le_zero + theorem polynomial.leading_coeff_C + theorem polynomial.leading_coeff_X + theorem polynomial.leading_coeff_X_pow + theorem polynomial.leading_coeff_add_of_degree_eq + theorem polynomial.leading_coeff_add_of_degree_lt + theorem polynomial.leading_coeff_eq_zero + theorem polynomial.leading_coeff_eq_zero_iff_deg_eq_bot + def polynomial.leading_coeff_hom + theorem polynomial.leading_coeff_hom_apply + theorem polynomial.leading_coeff_monomial + theorem polynomial.leading_coeff_mul' + theorem polynomial.leading_coeff_mul + theorem polynomial.leading_coeff_mul_X_pow + theorem polynomial.leading_coeff_one + theorem polynomial.leading_coeff_pow' + theorem polynomial.leading_coeff_pow + theorem polynomial.leading_coeff_zero + theorem polynomial.monic.ne_zero + theorem polynomial.monic.ne_zero_of_zero_ne_one + theorem polynomial.monic_X + theorem polynomial.monic_one + theorem polynomial.nat_degree_X_pow_sub_C + theorem polynomial.nat_degree_X_sub_C + theorem polynomial.nat_degree_X_sub_C_le + theorem polynomial.nat_degree_eq_zero_iff_degree_le_zero + theorem polynomial.nat_degree_mul' + theorem polynomial.nat_degree_mul_le + theorem polynomial.nat_degree_pos_iff_degree_pos + theorem polynomial.nat_degree_pow' + theorem polynomial.ne_zero_of_degree_gt + theorem polynomial.next_coeff_X_sub_C + theorem polynomial.not_is_unit_X + theorem polynomial.subsingleton_of_monic_zero + theorem polynomial.sum_over_range' + theorem polynomial.sum_over_range + theorem polynomial.zero_le_degree_iff Modified src/data/polynomial/derivative.lean - theorem polynomial.derivative_eval - theorem polynomial.is_coprime_of_is_root_of_eval_derivative_ne_zero Modified src/data/polynomial/div.lean Modified src/data/polynomial/eval.lean + theorem polynomial.eval_mul + theorem polynomial.eval_pow + theorem polynomial.eval₂_hom + theorem polynomial.root_mul_left_of_is_root + theorem polynomial.root_mul_right_of_is_root Modified src/data/polynomial/field_division.lean + theorem polynomial.is_coprime_of_is_root_of_eval_derivative_ne_zero Modified src/data/polynomial/identities.lean + theorem polynomial.derivative_eval Modified src/data/polynomial/induction.lean - theorem polynomial.as_sum - theorem polynomial.finset_sum_coeff - theorem polynomial.sum_over_range' - theorem polynomial.sum_over_range Added src/data/polynomial/integral_normalization.lean + theorem polynomial.integral_normalization_aeval_eq_zero + theorem polynomial.integral_normalization_coeff_degree + theorem polynomial.integral_normalization_coeff_nat_degree + theorem polynomial.integral_normalization_coeff_ne_degree + theorem polynomial.integral_normalization_coeff_ne_nat_degree + theorem polynomial.integral_normalization_eval₂_eq_zero + theorem polynomial.monic_integral_normalization + theorem polynomial.support_integral_normalization Modified src/data/polynomial/monic.lean - theorem polynomial.integral_normalization_aeval_eq_zero - theorem polynomial.integral_normalization_coeff_degree - theorem polynomial.integral_normalization_coeff_nat_degree - theorem polynomial.integral_normalization_coeff_ne_degree - theorem polynomial.integral_normalization_coeff_ne_nat_degree - theorem polynomial.integral_normalization_eval₂_eq_zero - theorem polynomial.monic_integral_normalization - theorem polynomial.support_integral_normalization Modified src/data/polynomial/monomial.lean + theorem polynomial.C_inj Modified src/data/polynomial/ring_division.lean Modified src/field_theory/separable.lean Modified src/ring_theory/algebraic.lean 2020-07-22 16:16:15 36ea9e8 chore(*): cleanup imports (#3511) A not-very-interesting cleanup of imports. I deleted ``` instance orbit_fintype (b : β) [fintype α] [decidable_eq β] : fintype (orbit α b) := set.fintype_range _ ``` which wasn't being used, for the sake of not having to import everything about finiteness into `algebra.group_action`. ESTIMATED CHANGES Modified src/algebra/char_zero.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/units_hom.lean Modified src/algebra/group_power.lean Modified src/algebra/pi_instances.lean Modified src/algebra/pointwise.lean Modified src/algebra/ring.lean Modified src/analysis/convex/basic.lean Modified src/computability/primrec.lean Modified src/computability/turing_machine.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/monoid_algebra.lean Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/ring_division.lean Modified src/data/sigma/basic.lean Modified src/deprecated/group.lean Modified src/deprecated/ring.lean Modified src/group_theory/group_action.lean Modified src/group_theory/submonoid/basic.lean Modified src/logic/embedding.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/order_iso.lean Modified src/order/order_iso_nat.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/topology/metric_space/lipschitz.lean 2020-07-22 16:16:13 a8cedf9 feat(data/nat/digits): a number is bigger than base^(digits length - 1) (#3498) ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem base_pow_length_digits_le' + theorem base_pow_length_digits_le 2020-07-22 14:52:45 acc2802 feat(tactic/extract_goal): remove annoying spaces (#3514) closes #3375 ESTIMATED CHANGES Modified src/tactic/interactive.lean 2020-07-22 14:04:33 a971a88 refactor(linear_algebra/nonsingular_inverse, data/matrix/basic): update_* rectangular matrices (#3403) ESTIMATED CHANGES Modified src/data/matrix/basic.lean + def matrix.update_column + theorem matrix.update_column_ne + theorem matrix.update_column_self + theorem matrix.update_column_transpose + theorem matrix.update_column_val + def matrix.update_row + theorem matrix.update_row_ne + theorem matrix.update_row_self + theorem matrix.update_row_transpose + theorem matrix.update_row_val Modified src/linear_algebra/nonsingular_inverse.lean - def matrix.update_column - theorem matrix.update_column_ne - theorem matrix.update_column_self - theorem matrix.update_column_val - def matrix.update_row - theorem matrix.update_row_ne - theorem matrix.update_row_self - theorem matrix.update_row_transpose - theorem matrix.update_row_val 2020-07-22 11:32:56 90d3386 feat(category_theory/kernels): compute kernel (f ≫ g) when one is an iso (#3438) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel_comp_is_iso + def category_theory.limits.cokernel_is_iso_comp + theorem category_theory.limits.cokernel_π_comp_cokernel_comp_is_iso_hom + theorem category_theory.limits.cokernel_π_comp_cokernel_comp_is_iso_inv + theorem category_theory.limits.cokernel_π_comp_cokernel_is_iso_comp_hom + theorem category_theory.limits.cokernel_π_comp_cokernel_is_iso_comp_inv + def category_theory.limits.kernel_comp_is_iso + theorem category_theory.limits.kernel_comp_is_iso_hom_comp_kernel_ι + theorem category_theory.limits.kernel_comp_is_iso_inv_comp_kernel_ι + def category_theory.limits.kernel_is_iso_comp + theorem category_theory.limits.kernel_is_iso_comp_hom_comp_kernel_ι + theorem category_theory.limits.kernel_is_iso_comp_inv_comp_kernel_ι 2020-07-22 10:18:14 39f8f02 refactor(algebra/big_operators): split file, reduce imports (#3495) I've split up `algebra.big_operators`. It wasn't completely obvious how to divide it up, but this is an attempt to balance coherence / file size / minimal imports. ESTIMATED CHANGES Modified archive/100-theorems-list/42_inverse_triangle_sum.lean Modified archive/sensitivity.lean Renamed src/algebra/big_operators.lean to src/algebra/big_operators/basic.lean - theorem directed.finset_le - theorem finset.abs_sum_le_sum_abs - theorem finset.card_le_mul_card_image - theorem finset.card_pi - theorem finset.dvd_sum - theorem finset.exists_le - theorem finset.exists_le_of_sum_le - theorem finset.exists_pos_of_sum_zero_of_exists_nonzero - theorem finset.le_sum_of_subadditive - theorem finset.mul_sum - theorem finset.prod_Ico_add - theorem finset.prod_Ico_consecutive - theorem finset.prod_Ico_eq_mul_inv - theorem finset.prod_Ico_eq_prod_range - theorem finset.prod_Ico_id_eq_fact - theorem finset.prod_Ico_reflect - theorem finset.prod_Ico_succ_top - theorem finset.prod_add - theorem finset.prod_eq_prod_Ico_succ_bot - theorem finset.prod_le_prod' - theorem finset.prod_le_prod - theorem finset.prod_nat_cast - theorem finset.prod_nonneg - theorem finset.prod_pos - theorem finset.prod_pow_eq_pow_sum - theorem finset.prod_powerset_insert - theorem finset.prod_range_mul_prod_Ico - theorem finset.prod_range_reflect - theorem finset.prod_sum - theorem finset.single_le_sum - theorem finset.sum_Ico_add - theorem finset.sum_Ico_eq_sub - theorem finset.sum_Ico_reflect - theorem finset.sum_Ico_succ_top - theorem finset.sum_boole_mul - theorem finset.sum_div - theorem finset.sum_eq_sum_Ico_succ_bot - theorem finset.sum_eq_zero_iff - theorem finset.sum_eq_zero_iff_of_nonneg - theorem finset.sum_eq_zero_iff_of_nonpos - theorem finset.sum_le_sum - theorem finset.sum_le_sum_of_ne_zero - theorem finset.sum_le_sum_of_subset - theorem finset.sum_le_sum_of_subset_of_nonneg - theorem finset.sum_lt_sum - theorem finset.sum_lt_sum_of_nonempty - theorem finset.sum_lt_sum_of_subset - theorem finset.sum_mono_set - theorem finset.sum_mono_set_of_nonneg - theorem finset.sum_mul - theorem finset.sum_mul_boole - theorem finset.sum_mul_sum - theorem finset.sum_nonneg - theorem finset.sum_nonpos - theorem finset.sum_pow_mul_eq_add_pow - theorem finset.sum_range_id - theorem finset.sum_range_id_mul_two - theorem finset.sum_range_reflect - theorem is_group_hom_finset_prod - theorem with_top.op_sum - theorem with_top.sum_eq_top_iff - theorem with_top.sum_lt_top - theorem with_top.sum_lt_top_iff - theorem with_top.unop_sum Added src/algebra/big_operators/default.lean Added src/algebra/big_operators/intervals.lean + theorem finset.prod_Ico_add + theorem finset.prod_Ico_consecutive + theorem finset.prod_Ico_eq_mul_inv + theorem finset.prod_Ico_eq_prod_range + theorem finset.prod_Ico_id_eq_fact + theorem finset.prod_Ico_reflect + theorem finset.prod_Ico_succ_top + theorem finset.prod_eq_prod_Ico_succ_bot + theorem finset.prod_range_mul_prod_Ico + theorem finset.prod_range_reflect + theorem finset.sum_Ico_add + theorem finset.sum_Ico_eq_sub + theorem finset.sum_Ico_reflect + theorem finset.sum_Ico_succ_top + theorem finset.sum_eq_sum_Ico_succ_bot + theorem finset.sum_range_id + theorem finset.sum_range_id_mul_two + theorem finset.sum_range_reflect Added src/algebra/big_operators/order.lean + theorem finset.abs_sum_le_sum_abs + theorem finset.card_le_mul_card_image + theorem finset.exists_le_of_sum_le + theorem finset.exists_pos_of_sum_zero_of_exists_nonzero + theorem finset.le_sum_of_subadditive + theorem finset.prod_le_prod' + theorem finset.prod_le_prod + theorem finset.prod_nonneg + theorem finset.prod_pos + theorem finset.single_le_sum + theorem finset.sum_eq_zero_iff + theorem finset.sum_eq_zero_iff_of_nonneg + theorem finset.sum_eq_zero_iff_of_nonpos + theorem finset.sum_le_sum + theorem finset.sum_le_sum_of_ne_zero + theorem finset.sum_le_sum_of_subset + theorem finset.sum_le_sum_of_subset_of_nonneg + theorem finset.sum_lt_sum + theorem finset.sum_lt_sum_of_nonempty + theorem finset.sum_lt_sum_of_subset + theorem finset.sum_mono_set + theorem finset.sum_mono_set_of_nonneg + theorem finset.sum_nonneg + theorem finset.sum_nonpos + theorem with_top.op_sum + theorem with_top.sum_eq_top_iff + theorem with_top.sum_lt_top + theorem with_top.sum_lt_top_iff + theorem with_top.unop_sum Added src/algebra/big_operators/ring.lean + theorem finset.dvd_sum + theorem finset.mul_sum + theorem finset.prod_add + theorem finset.prod_nat_cast + theorem finset.prod_pow_eq_pow_sum + theorem finset.prod_powerset_insert + theorem finset.prod_sum + theorem finset.sum_boole_mul + theorem finset.sum_div + theorem finset.sum_mul + theorem finset.sum_mul_boole + theorem finset.sum_mul_sum + theorem finset.sum_pow_mul_eq_add_pow Modified src/algebra/direct_limit.lean Modified src/algebra/geom_sum.lean Modified src/algebra/module.lean - theorem finset.exists_card_smul_ge_sum - theorem finset.exists_card_smul_le_sum - theorem finset.sum_const' Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/preadditive/default.lean Added src/data/finset/order.lean + theorem directed.finset_le + theorem finset.exists_le Modified src/data/finsupp.lean Modified src/data/fintype/card.lean + theorem finset.card_pi Modified src/data/matrix/basic.lean Modified src/data/nat/choose.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/totient.lean Modified src/data/real/cau_seq.lean Modified src/data/real/nnreal.lean Modified src/data/set/finite.lean Modified src/data/support.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/submonoid/membership.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/multilinear.lean Modified src/ring_theory/coprime.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/prime.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/subset_properties.lean Modified test/conv/apply_congr.lean Modified test/fin_cases.lean 2020-07-22 08:55:49 197b501 feat(tactic/extract_goal): better support for `let` expressions (#3496) Improve treatment of let expressions #3375 ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean 2020-07-22 05:08:37 64335de chore(topology/category/): switch to bundled morphisms in Top (#3506) This is a natural follow-up to @Nicknamen's recent PRs splitting bundled continuous maps out of `compact_open`. There is a slight regression in `algebraic_geometry.presheafed_space` and `algebraic_geometry.stalks`, requiring a more explicit coercion. I'd encourage reviewers to ignore this, as I'll make a separate PR simplifying this (basically: having a coercion from morphisms of `PresheafedSpace`s to morphisms of `Top`s is unrealistically ambitious, and moreover harder to read, than just using the projection notation, and removing it makes everything easier). ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean +/- def f Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/topology/category/Top/adjunctions.lean +/- def Top.adj₁ +/- def Top.adj₂ Modified src/topology/category/Top/basic.lean + theorem Top.comp_app Modified src/topology/category/Top/limits.lean Modified src/topology/category/Top/opens.lean +/- theorem topological_space.opens.map_obj Modified src/topology/category/UniformSpace.lean Modified src/topology/continuous_map.lean + theorem continuous_map.coe_inj + def continuous_map.comp + def continuous_map.id Modified src/topology/sheaves/presheaf_of_functions.lean - theorem Top.continuous_functions.add +/- def Top.continuous_functions.map - theorem Top.continuous_functions.mul - theorem Top.continuous_functions.one - theorem Top.continuous_functions.zero 2020-07-22 03:47:11 dced343 feat(data/list/basic): induction from both ends (#3448) This was originally an induction principle on palindromes, but researching Coq solutions made me realize that weakening the statement made it simpler and much easier to prove. - ["The way we proceeded was to prove first an induction principle for lists, considering insertions at both ends..."][1] - ["... generalizing a single variable in that definition would create another inductive definition of a list."][2] [1]: https://www.labri.fr/perso/casteran/CoqArt/inductive-prop-chap/palindrome.html [2]: https://danilafe.com/blog/coq_palindrome/ This also adds the lemmas `length_init` and `init_append_last`. ESTIMATED CHANGES Modified src/data/list/basic.lean + def list.bidirectional_rec + def list.bidirectional_rec_on + theorem list.init_append_last + theorem list.length_init 2020-07-22 02:38:08 55e7dcc fix(ring_theory/jacobson): Clean up documentation in Jacobson Ring definitions (#3501) Fixes to formatting and documentation found after merging the definition of Jacobson Rings in https://github.com/leanprover-community/mathlib/pull/3404 ESTIMATED CHANGES Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/jacobson.lean Modified src/ring_theory/jacobson_ideal.lean 2020-07-22 01:12:15 314b209 chore(scripts): update nolints.txt (#3505) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-22 00:27:14 2219dc1 feat(tactic/linarith): put certificate generation in tactic monad (#3504) ESTIMATED CHANGES Modified src/tactic/linarith/datatypes.lean Modified src/tactic/linarith/elimination.lean Modified src/tactic/linarith/frontend.lean Modified src/tactic/linarith/verification.lean 2020-07-22 00:27:12 219e298 feat(ring_theory/discrete_valuation_ring): add DVR (#3476) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem dvd_dvd_iff_associated + theorem dvd_dvd_of_associated + theorem dvd_of_associated Added src/ring_theory/discrete_valuation_ring.lean + theorem discrete_valuation_ring.associated_of_irreducible + theorem discrete_valuation_ring.exists_irreducible + theorem discrete_valuation_ring.iff_PID_with_one_nonzero_prime + theorem discrete_valuation_ring.irreducible_iff_uniformiser + theorem discrete_valuation_ring.not_a_field Modified src/ring_theory/ideals.lean + theorem ideal.maximal_of_no_maximal + theorem ideal.span_singleton_eq_span_singleton + theorem ideal.span_singleton_mul_left_unit + theorem ideal.span_singleton_mul_right_unit + theorem local_of_unique_nonzero_prime + theorem local_ring.eq_maximal_ideal + theorem local_ring.le_maximal_ideal - theorem local_ring.max_ideal_unique + theorem local_ring.maximal_ideal_unique 2020-07-21 23:16:29 84d6497 fix(algebra/ring): add coe_neg_one lemma to units (#3489) Follow up to #3472 - adds `coe_neg_one`, which allows `norm_cast` to handle hypotheses like `↑-1 = 1` ESTIMATED CHANGES Modified src/algebra/ring.lean 2020-07-21 22:26:30 e448bb1 feat(tactic/linarith): modularize coefficient oracle (#3502) This makes it easy to plug an alternate certificate search method (e.g. simplex-based) into `linarith`, should one desire. ESTIMATED CHANGES Modified src/tactic/linarith/datatypes.lean Modified src/tactic/linarith/elimination.lean Modified src/tactic/linarith/frontend.lean Modified src/tactic/linarith/verification.lean 2020-07-21 21:58:58 c6aa8e7 feat(algebra/invertible): invertible elements are units (#3499) ESTIMATED CHANGES Modified src/algebra/invertible.lean + def unit_of_invertible + theorem unit_of_invertible_inv + theorem unit_of_invertible_val 2020-07-21 21:58:56 2fb6a05 feat(group_theory/semidirect_product): semidirect_product.map (#3492) ESTIMATED CHANGES Modified src/group_theory/semidirect_product.lean + def semidirect_product.map + theorem semidirect_product.map_comp_inl + theorem semidirect_product.map_comp_inr + theorem semidirect_product.map_inl + theorem semidirect_product.map_inr + theorem semidirect_product.map_left + theorem semidirect_product.map_right + theorem semidirect_product.right_hom_comp_map 2020-07-21 21:29:16 dfef07a chore(analysis/special_functions): moved trig vals out of real.pi, added new trig vals (#3497) Moved trigonometric lemmas from real.pi to analysis.special_functions.trigonometric. Also added two new trig lemmas, tan_pi_div_four and arctan_one, to analysis.special_functions.trigonometric. https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Trig.20function.20values ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean + theorem real.arctan_one + theorem real.cos_pi_div_eight + theorem real.cos_pi_div_four + theorem real.cos_pi_div_sixteen + theorem real.cos_pi_div_thirty_two + theorem real.cos_pi_over_two_pow + theorem real.sin_pi_div_eight + theorem real.sin_pi_div_four + theorem real.sin_pi_div_sixteen + theorem real.sin_pi_div_thirty_two + theorem real.sin_pi_over_two_pow_succ + theorem real.sin_square_pi_over_two_pow + theorem real.sin_square_pi_over_two_pow_succ + theorem real.sqrt_two_add_series_lt_two + theorem real.sqrt_two_add_series_monotone_left + theorem real.sqrt_two_add_series_nonneg + theorem real.sqrt_two_add_series_one + theorem real.sqrt_two_add_series_succ + theorem real.sqrt_two_add_series_two + theorem real.sqrt_two_add_series_zero + theorem real.sqrt_two_add_series_zero_nonneg + theorem real.tan_pi_div_four Modified src/data/real/pi.lean - theorem real.cos_pi_div_eight - theorem real.cos_pi_div_four - theorem real.cos_pi_div_sixteen - theorem real.cos_pi_div_thirty_two - theorem real.cos_pi_over_two_pow - theorem real.sin_pi_div_eight - theorem real.sin_pi_div_four - theorem real.sin_pi_div_sixteen - theorem real.sin_pi_div_thirty_two - theorem real.sin_pi_over_two_pow_succ - theorem real.sin_square_pi_over_two_pow - theorem real.sin_square_pi_over_two_pow_succ - theorem real.sqrt_two_add_series_lt_two - theorem real.sqrt_two_add_series_monotone_left - theorem real.sqrt_two_add_series_nonneg - theorem real.sqrt_two_add_series_one - theorem real.sqrt_two_add_series_succ - theorem real.sqrt_two_add_series_two - theorem real.sqrt_two_add_series_zero - theorem real.sqrt_two_add_series_zero_nonneg 2020-07-21 16:25:32 c47d1d0 feat(data/{mv_}polynomial): make args to aeval implicit (#3494) ESTIMATED CHANGES Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.aeval_C +/- theorem mv_polynomial.aeval_X +/- theorem mv_polynomial.aeval_def Modified src/data/polynomial/algebra_map.lean +/- theorem polynomial.aeval_C +/- theorem polynomial.aeval_X +/- theorem polynomial.aeval_alg_hom +/- theorem polynomial.aeval_alg_hom_apply +/- theorem polynomial.aeval_def +/- theorem polynomial.coeff_zero_eq_aeval_zero Modified src/data/polynomial/monic.lean Modified src/data/polynomial/ring_division.lean Modified src/field_theory/minimal_polynomial.lean +/- theorem minimal_polynomial.aeval +/- theorem minimal_polynomial.dvd +/- theorem minimal_polynomial.min +/- theorem minimal_polynomial.unique Modified src/ring_theory/adjoin.lean +/- theorem algebra.adjoin_singleton_eq_range Modified src/ring_theory/adjoin_root.lean +/- theorem adjoin_root.aeval_eq Modified src/ring_theory/algebra_tower.lean +/- theorem is_algebra_tower.aeval_apply Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean +/- theorem is_integral_trans_aux Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial/rational_root.lean +/- theorem denom_dvd_of_is_root +/- theorem is_integer_of_is_root_of_monic +/- theorem num_dvd_of_is_root 2020-07-21 16:25:30 7efdd99 feat(algebra/invertible): lemmas (#3493) Coauthored by: Johan Commelin ESTIMATED CHANGES Modified src/algebra/invertible.lean + def invertible.map 2020-07-21 15:23:28 5776f4c feat(topology): more lemmas about Ici and Iic neighborhoods (#3474) Main feature : add `tfae_mem_nhds_within_Ici` and `tfae_mem_nhds_within_Iic`, analogous to the existing `tfae_mem_nhds_within_Ioi` and `tfae_mem_nhds_within_Iio`, as well as related lemmas (again imitating the open case) I also added a few lemmas in `data/set/intervals/basic.lean` that were useful for this and a few upcoming PRs ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_subset_Ici_self + theorem set.Icc_subset_Iic_self + theorem set.Icc_subset_Ioo + theorem set.Ioc_subset_Ioo_right Modified src/topology/algebra/ordered.lean + theorem Icc_mem_nhds_within_Ici + theorem Icc_mem_nhds_within_Iic + theorem Ico_mem_nhds_within_Ici + theorem Ico_mem_nhds_within_Iic + theorem Ioc_mem_nhds_within_Ici + theorem Ioc_mem_nhds_within_Iic + theorem Ioo_mem_nhds_within_Ici + theorem Ioo_mem_nhds_within_Iic + theorem mem_nhds_within_Ici_iff_exists_Icc_subset' + theorem mem_nhds_within_Ici_iff_exists_mem_Ioc_Ico_subset + theorem mem_nhds_within_Iic_iff_exists_Icc_subset' + theorem mem_nhds_within_Iic_iff_exists_mem_Ico_Ioc_subset + theorem nhds_within_Icc_eq_nhds_within_Ici + theorem nhds_within_Icc_eq_nhds_within_Iic + theorem nhds_within_Ici_ne_bot + theorem nhds_within_Ici_self_ne_bot + theorem nhds_within_Ico_eq_nhds_within_Ici + theorem nhds_within_Iic_ne_bot + theorem nhds_within_Iic_self_ne_bot + theorem nhds_within_Ioc_eq_nhds_within_Iic + theorem tfae_mem_nhds_within_Ici + theorem tfae_mem_nhds_within_Iic 2020-07-21 12:58:53 49049e4 feat(topology): implemented continuous bundled maps (#3486) In this PR we defined continuous bundled maps, adapted the file `compact_open` accordingly, and proved instances of algebraic structures over the type `continuous_map` of continuous bundled maps. This feature was suggested on Zulip multiple times, see for example https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Continuous.20maps ESTIMATED CHANGES Modified src/topology/algebra/continuous_functions.lean - def C + def continuous.C + def continuous_map.C Modified src/topology/algebra/group.lean Modified src/topology/compact_open.lean +/- theorem continuous_map.image_coev +/- def continuous_map.induced - def continuous_map Added src/topology/continuous_map.lean + def continuous_map.const + theorem continuous_map.ext + structure continuous_map 2020-07-21 11:50:25 5c55e15 feat(data/finset/intervals): Lemma about filter and Ico (#3479) Add "if you filter an Ico based on being less than or equal to its bottom element, you get the singleton bottom element". ESTIMATED CHANGES Modified src/data/finset/intervals.lean + theorem finset.Ico.filter_Ico_bot Modified src/data/list/intervals.lean + theorem list.Ico.filter_le_of_bot + theorem list.Ico.filter_lt_of_succ_bot Modified src/data/multiset/intervals.lean + theorem multiset.Ico.filter_le_of_bot 2020-07-21 10:37:37 d57130b feat(field_theory/mv_polynomial): char_p instance (#3491) ESTIMATED CHANGES Modified src/field_theory/mv_polynomial.lean 2020-07-21 09:25:11 1a31e69 chore(algebra/group/anti_hom): remove is_group_anti_hom (#3485) `is_group_anti_hom` is no longer used anywhere, so I'm going to count it as deprecated and propose removing it. ESTIMATED CHANGES Modified src/algebra/big_operators.lean - theorem inv_prod - theorem is_group_anti_hom.map_prod Deleted src/algebra/group/anti_hom.lean - theorem inv_is_group_anti_hom - theorem is_group_anti_hom.map_inv - theorem is_group_anti_hom.map_one Modified src/algebra/group/default.lean 2020-07-21 08:38:58 3169970 feat(category_theory/kernels): helper lemmas for constructing kernels (#3439) This does for kernels what #3398 did for pullbacks. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.is_colimit.of_π + def category_theory.limits.is_colimit_aux + def category_theory.limits.is_limit.of_ι + def category_theory.limits.is_limit_aux 2020-07-21 07:47:44 d174d3d refactor(linear_algebra/*): postpone importing material on direct sums (#3484) This is just a refactor, to avoid needing to develop material on direct sums before we can even define an algebra. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/algebra/lie_algebra.lean Added src/linear_algebra/direct_sum/finsupp.lean + def finsupp_lequiv_direct_sum + theorem finsupp_lequiv_direct_sum_single + theorem finsupp_lequiv_direct_sum_symm_lof + def finsupp_tensor_finsupp + theorem finsupp_tensor_finsupp_single + theorem finsupp_tensor_finsupp_symm_single Added src/linear_algebra/direct_sum/tensor_product.lean + def tensor_product.direct_sum + theorem tensor_product.direct_sum_lof_tmul_lof Modified src/linear_algebra/finsupp.lean - def finsupp_lequiv_direct_sum - theorem finsupp_lequiv_direct_sum_single - theorem finsupp_lequiv_direct_sum_symm_lof - def finsupp_tensor_finsupp - theorem finsupp_tensor_finsupp_single - theorem finsupp_tensor_finsupp_symm_single Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/tensor_product.lean - def tensor_product.direct_sum - theorem tensor_product.direct_sum_lof_tmul_lof 2020-07-21 04:06:36 c71e67a feat(ring_theory/jacobson): definition of Jacobson rings (#3404) ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_ring_hom Modified src/ring_theory/ideal_operations.lean + theorem ideal.comap.is_maximal + theorem ideal.comap_bot_le_of_injective + theorem ideal.comap_le_iff_le_map - theorem ideal.is_local.le_jacobson - theorem ideal.is_local.mem_jacobson_or_exists_inv - def ideal.is_local - theorem ideal.is_local_of_is_maximal_radical - theorem ideal.is_primary_of_is_maximal_radical - def ideal.jacobson - theorem ideal.jacobson_eq_top_iff + theorem ideal.ker_le_comap + theorem ideal.le_map_of_comap_le_of_surjective + theorem ideal.map.is_maximal + theorem ideal.map_Inf + theorem ideal.map_eq_top_or_is_maximal_of_surjective - theorem ideal.mem_jacobson_iff + theorem ideal.mem_map_iff_of_surjective + def ideal.order_iso_of_bijective Modified src/ring_theory/ideals.lean + theorem ideal.bot_is_maximal Added src/ring_theory/jacobson.lean + def ideal.is_jacobson + theorem ideal.is_jacobson_iff_Inf_maximal + theorem ideal.is_jacobson_iff_prime_eq + theorem ideal.is_jacobson_iso + theorem ideal.is_jacobson_of_surjective + theorem ideal.radical_eq_jacobson Added src/ring_theory/jacobson_ideal.lean + theorem ideal.is_local.le_jacobson + theorem ideal.is_local.mem_jacobson_or_exists_inv + def ideal.is_local + theorem ideal.is_local_of_is_maximal_radical + theorem ideal.is_primary_of_is_maximal_radical + theorem ideal.jacobson.is_maximal + def ideal.jacobson + theorem ideal.jacobson_eq_bot + theorem ideal.jacobson_eq_top_iff + theorem ideal.jacobson_mono + theorem ideal.jacobson_top + theorem ideal.le_jacobson + theorem ideal.mem_jacobson_iff 2020-07-21 01:55:48 0322d89 refactor(topology/algebra/monoid): changed topological_monoid into has_continuous_mul (#3481) ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/basic.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/borel_space.lean +/- theorem finset.measurable_prod +/- theorem measurable.mul +/- theorem measurable_mul Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.add_comp +/- theorem continuous_linear_map.coe_coprod +/- theorem continuous_linear_map.comp_add +/- def continuous_linear_map.coprod +/- theorem continuous_linear_map.coprod_apply + theorem submodule.eq_top_of_nonempty_interior' - theorem submodule.eq_top_of_nonempty_interior Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/algebra/open_subgroup.lean +/- theorem open_subgroup.is_closed Modified src/topology/algebra/ring.lean Modified src/topology/instances/ennreal.lean Modified test/apply.lean 2020-07-21 01:05:11 079d409 chore(scripts): update nolints.txt (#3483) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-21 01:05:09 6721ddf refactor(ring_theory): remove unbundled leftovers in `ideal.quotient` (#3467) This PR aims to smooth some corners in the `ideal.quotient` namespace left by the move to bundled `ring_hom`s. The main irritation is the ambiguity between different ways to map `x : R` to the quotient ring: `quot.mk`, `quotient.mk`, `quotient.mk'`, `submodule.quotient.mk`, `ideal.quotient.mk` and `ideal.quotient.mk_hom`, which caused a lot of duplication and more awkward proofs. The specific changes are: * delete function `ideal_quotient.mk` * rename ring hom `ideal.quotient.mk_hom` to `ideal.quotient.mk` * make new `ideal_quotient.mk` the `simp` normal form * delete obsolete `mk_eq_mk_hom` * delete obsolete `mk_...` `simp` lemmas (use `ring_hom.map_...` instead) * delete `quotient.map_mk` which was unused and had no lemmas (`ideal.map quotient.mk` is used elsewhere) ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/number_theory/basic.lean Modified src/ring_theory/adjoin_root.lean +/- def adjoin_root.mk Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean - def ideal.quotient.map_mk +/- def ideal.quotient.mk - theorem ideal.quotient.mk_add + theorem ideal.quotient.mk_eq_mk - theorem ideal.quotient.mk_eq_mk_hom - def ideal.quotient.mk_hom - theorem ideal.quotient.mk_mul - theorem ideal.quotient.mk_neg - theorem ideal.quotient.mk_one - theorem ideal.quotient.mk_pow - theorem ideal.quotient.mk_prod - theorem ideal.quotient.mk_sub - theorem ideal.quotient.mk_sum - theorem ideal.quotient.mk_zero Modified src/ring_theory/noetherian.lean Modified src/ring_theory/valuation/basic.lean 2020-07-21 01:05:07 564ab02 feat(category_theory/kernels): cokernel (image.ι f) ≅ cokernel f (#3441) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel_image_ι 2020-07-20 23:42:11 32c082f fix(tactic/library_search): group monotone lemmas with le lemmas (#3471) This lets `library_search` use `monotone` lemmas to prove `\le` goals, and vice versa, resolving a problem people were experiencing in Patrick's exercises at LftCM2020: ``` import order.filter.basic open filter example {α β γ : Type*} {A : filter α} {B : filter β} {C : filter γ} {f : α → β} {g : β → γ} (hf : tendsto f A B) (hg : tendsto g B C) : tendsto (g ∘ f) A C := calc map (g ∘ f) A = map g (map f A) : by library_search ... ≤ map g B : by library_search! ... ≤ C : by library_search! ``` ESTIMATED CHANGES Modified src/tactic/suggest.lean Added test/library_search/filter.lean 2020-07-20 22:17:29 2915fae feat(data/finset/basic): Cardinality of intersection with singleton (#3480) Intersecting with a singleton produces a set of cardinality either 0 or 1. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.card_singleton_inter 2020-07-20 20:30:53 1f74ddd feat(topology/local_extr): add lemmas on composition with continuous functions (#3459) ESTIMATED CHANGES Modified src/topology/local_extr.lean + theorem is_local_extr_on.comp_continuous_on + theorem is_local_max_on.comp_continuous_on + theorem is_local_min_on.comp_continuous_on 2020-07-20 18:42:24 7aa85c2 fix(algebra/group/units): add missing coe lemmas to units (#3472) Per @kbuzzard's suggestions [here](https://leanprover-community.github.io/archive/stream/113489-new-members/topic/Shortening.20proof.20on.20product.20of.20units.20in.20Z.html#204406319): - Add a new lemma `coe_eq_one` to `units` API - Tag `eq_iff` with `norm_cast` ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem units.coe_eq_one + theorem units.eq_iff Modified src/data/int/basic.lean 2020-07-20 17:56:13 b66d1be feat(data/multivariate/qpf): definition (#3395) Part of #3317 ESTIMATED CHANGES Modified src/control/functor/multivariate.lean Added src/data/pfunctor/multivariate/basic.lean + def mvpfunctor.append_contents + def mvpfunctor.comp.get + theorem mvpfunctor.comp.get_map + theorem mvpfunctor.comp.get_mk + def mvpfunctor.comp.mk + theorem mvpfunctor.comp.mk_get + def mvpfunctor.comp + theorem mvpfunctor.comp_map + def mvpfunctor.const.get + theorem mvpfunctor.const.get_map + theorem mvpfunctor.const.get_mk + def mvpfunctor.const.mk + theorem mvpfunctor.const.mk_get + def mvpfunctor.const + def mvpfunctor.drop + theorem mvpfunctor.id_map + def mvpfunctor.last + theorem mvpfunctor.liftp_iff' + theorem mvpfunctor.liftp_iff + theorem mvpfunctor.liftr_iff + def mvpfunctor.map + theorem mvpfunctor.map_eq + def mvpfunctor.obj + theorem mvpfunctor.supp_eq + structure mvpfunctor Modified src/data/pfunctor/univariate/basic.lean + def pfunctor.W.children + def pfunctor.W.head Added src/data/qpf/multivariate/basic.lean + theorem mvqpf.comp_map + theorem mvqpf.has_good_supp_iff + def mvqpf.is_uniform + theorem mvqpf.liftp_iff + theorem mvqpf.liftp_iff_of_is_uniform + def mvqpf.liftp_preservation + theorem mvqpf.liftp_preservation_iff_uniform + theorem mvqpf.liftr_iff + theorem mvqpf.mem_supp + theorem mvqpf.supp_eq + theorem mvqpf.supp_eq_of_is_uniform + theorem mvqpf.supp_map + def mvqpf.supp_preservation + theorem mvqpf.supp_preservation_iff_liftp_preservation + theorem mvqpf.supp_preservation_iff_uniform 2020-07-20 15:42:49 78f438b feat(tactic/squeeze_*): improve suggestions (#3431) This makes this gives `squeeze_simp`, `squeeze_simpa` and `squeeze_dsimp` the `?` optional argument that indicates that we should consider all `simp` lemmas that are also `_refl_lemma` ESTIMATED CHANGES Modified src/tactic/squeeze.lean 2020-07-20 14:17:48 d0df6b8 feat(data/equiv/mul_add): refl_apply and trans_apply (#3470) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem mul_equiv.refl_apply + theorem mul_equiv.trans_apply 2020-07-20 14:17:46 2994f1b feat(solve_by_elim): add tracing (#3468) When `solve_by_elim` fails, it now prints: ``` `solve_by_elim` failed. Try `solve_by_elim { max_depth := N }` for a larger `N`, or use `set_option trace.solve_by_elim true` to view the search. ``` and with `set_option trace.solve_by_elim true` we get messages like: ``` example (n m : ℕ) (f : ℕ → ℕ → Prop) (h : f n m) : ∃ p : ℕ × ℕ, f p.1 p.2 := begin repeat { fsplit }, solve_by_elim*, end ``` producing: ``` [solve_by_elim . ✅ `n` solves `⊢ ℕ`] [solve_by_elim .. ✅ `n` solves `⊢ ℕ`] [solve_by_elim ... ❌ failed to solve `⊢ f (n, n).fst (n, n).snd`] [solve_by_elim .. ✅ `m` solves `⊢ ℕ`] [solve_by_elim ... ✅ `h` solves `⊢ f (n, m).fst (n, m).snd`] [solve_by_elim .... success!] ``` Fixed #3063 ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/solve_by_elim.lean Modified test/solve_by_elim.lean 2020-07-20 14:17:44 38b95c8 feat(set_theory/cardinal): simp lemmas about numerals (#3450) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean +/- theorem cardinal.one_lt_omega +/- theorem cardinal.zero_lt_one Modified src/set_theory/ordinal.lean + theorem cardinal.bit0_eq_self + theorem cardinal.bit0_le_bit0 + theorem cardinal.bit0_le_bit1 + theorem cardinal.bit0_lt_bit0 + theorem cardinal.bit0_lt_bit1 + theorem cardinal.bit0_lt_omega + theorem cardinal.bit0_ne_zero + theorem cardinal.bit1_eq_self_iff + theorem cardinal.bit1_le_bit0 + theorem cardinal.bit1_le_bit1 + theorem cardinal.bit1_lt_bit0 + theorem cardinal.bit1_lt_bit1 + theorem cardinal.bit1_lt_omega + theorem cardinal.bit1_ne_zero + theorem cardinal.omega_le_bit0 + theorem cardinal.omega_le_bit1 + theorem cardinal.one_le_bit0 + theorem cardinal.one_le_bit1 + theorem cardinal.one_le_one + theorem cardinal.one_lt_bit0 + theorem cardinal.one_lt_bit1 + theorem cardinal.one_lt_two + theorem cardinal.zero_lt_bit0 + theorem cardinal.zero_lt_bit1 2020-07-20 14:17:41 9a92363 feat(logic/basic): nonempty.some (#3449) Could we please have this? I've a number of times been annoyed by the difficulty of extracting an element from a `nonempty`. (Criterion for alternative solutions: `library_search` solves `nonempty X -> X`.) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem Exists.some_spec 2020-07-20 14:17:39 469043f refactor(tactic/generalizes): reimplement generalizes' (#3416) The new implementation is somewhat simpler. It is inspired by the C++ function `generalize_indices` in `library/tactic/cases_tactic.cpp`, which performs essentially the same construction. The only non-internal change is the return type of `generalizes_intro`. ESTIMATED CHANGES Modified src/tactic/generalizes.lean 2020-07-20 12:54:51 593b1bb feat(linear_algebra/affine_space): lemmas on affine spans (#3453) Add more lemmas on affine spans; in particular, that the points in an `affine_span` are exactly the `affine_combination`s where the sum of weights equals 1, provided the underlying ring is nontrivial. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + theorem affine_space.affine_combination_mem_affine_span + theorem affine_space.affine_span_nonempty + theorem affine_space.eq_affine_combination_of_mem_affine_span + theorem affine_space.mem_affine_span_iff_eq_affine_combination + theorem affine_space.mem_vector_span_iff_eq_weighted_vsub + theorem affine_space.span_points_nonempty - theorem affine_space.span_points_nonempty_of_nonempty + theorem affine_space.vector_span_empty + theorem affine_space.vector_span_eq_span_vsub_set_left + theorem affine_space.vector_span_eq_span_vsub_set_right + theorem affine_space.vector_span_range_eq_span_range_vsub_left + theorem affine_space.vector_span_range_eq_span_range_vsub_right + theorem affine_space.weighted_vsub_mem_vector_span + theorem finset.affine_combination_apply + theorem finset.affine_combination_indicator_subset + theorem finset.affine_combination_of_eq_one_of_eq_zero + theorem finset.weighted_vsub_empty + theorem finset.weighted_vsub_indicator_subset + theorem finset.weighted_vsub_of_point_indicator_subset 2020-07-20 12:54:49 65208ed refactor(data/polynomial/*): further refactors (#3435) There's a lot further to go, but I need to do other things for a while so will PR what I have so far. ESTIMATED CHANGES Modified src/data/polynomial/algebra_map.lean Modified src/data/polynomial/basic.lean + theorem polynomial.X_ne_zero + theorem polynomial.coeff_X + theorem polynomial.coeff_X_one + theorem polynomial.coeff_X_zero Modified src/data/polynomial/coeff.lean + theorem polynomial.coeff_X_mul_zero +/- theorem polynomial.coeff_X_pow + theorem polynomial.coeff_X_pow_self +/- theorem polynomial.coeff_mul_X_zero Modified src/data/polynomial/degree.lean Modified src/data/polynomial/degree/basic.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean Modified src/data/polynomial/eval.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/identities.lean Modified src/data/polynomial/induction.lean Modified src/data/polynomial/monic.lean Modified src/data/polynomial/monomial.lean - theorem polynomial.X_ne_zero - theorem polynomial.coeff_X - theorem polynomial.coeff_X_one - theorem polynomial.coeff_X_zero Modified src/data/polynomial/ring_division.lean 2020-07-20 12:54:47 cb06214 feat(tactic/interactive_expr): always select all arguments (#3384) If you hover over `id id 0` in the widget (or really any function with more than one argument), then it is possible to select the partial application `id id`. The popup will then only show the function `id` and the argument `id`, but not the second argument `0`. This PR changes this behavior so that you can't select partial applications and always see all argument in the popup. ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-07-20 11:25:58 4a3755a chore(algebra/ring): fix a mistake (#3469) ESTIMATED CHANGES Modified src/algebra/ring.lean 2020-07-20 09:41:20 4dc0814 feat (algebra/module): lemma about submodules (#3466) Add a 3-line lemma saying that a linear combination of elements of a submodule is still in that submodule. ESTIMATED CHANGES Modified src/algebra/module.lean + theorem submodule.sum_smul_mem 2020-07-20 08:16:52 a400adb fix(tactic/library_search): 1 ≤ n goals in nat (#3462) Fixes #3432. This PR changes `library_search` and `suggest`: 1. instead of just selecting lemma with a single `name` as their head symbol, allows selecting from a `name_set`. 2. when the goal is `≤` on certain `ℕ` goals, set that `name_set` to `[has_lt.lt, has_le.le]`, for more flexible matching of inequality lemmas about `ℕ` 3. now successfully solves `theorem nonzero_gt_one (n : ℕ) : ¬ n = 0 → n ≥ 1 := by library_search!` 4. splits the `test/library_search/basic.lean` file into two parts, one which doesn't import `data.nat.basic`, for faster testing ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean - def test.library_search.lt_one + theorem test.library_search.nonzero_gt_one - theorem test.library_search.zero_lt_one Added test/library_search/nat.lean + def test.library_search.lt_one + theorem test.library_search.zero_lt_one 2020-07-20 06:04:37 5080dd5 feat(data/padics/padic_norm): lemmas about padic_val_nat (#3230) Collection of lemmas about `padic_val_nat`, culminating in `lemma prod_pow_prime_padic_val_nat : ∀ (n : nat) (s : n ≠ 0) (m : nat) (pr : n < m), ∏ p in finset.filter nat.prime (finset.range m), pow p (padic_val_nat p n) = n`. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_multiset_count Modified src/algebra/char_zero.lean + theorem nat.cast_dvd_char_zero Modified src/data/nat/basic.lean + theorem nat.div_div_div_eq_div Modified src/data/nat/cast.lean + theorem nat.cast_dvd Modified src/data/nat/gcd.lean + theorem nat.coprime.coprime_div_left + theorem nat.coprime.coprime_div_right Modified src/data/nat/prime.lean + theorem nat.factors_add_two + theorem nat.prime_dvd_prime_iff_eq Modified src/data/padics/padic_norm.lean + theorem one_le_padic_val_nat_of_dvd + theorem padic_val_nat_eq_factors_count + theorem padic_val_nat_of_not_dvd + theorem padic_val_nat_one + theorem padic_val_nat_primes + theorem padic_val_nat_zero + theorem prod_pow_prime_padic_val_nat 2020-07-20 05:06:14 84d4ea7 feat(data/nat/digits): a bigger number has more digits (#3457) ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem digits_len_le_digits_len_succ + theorem digits_one +/- theorem digits_one_succ + theorem digits_zero_succ + theorem digits_zero_zero + theorem le_digits_len_le 2020-07-20 05:06:12 792f541 feat(field_theory/tower): tower law (#3355) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_extend_by_one Modified src/algebra/pointwise.lean + theorem set.range_smul_range Modified src/data/finset/basic.lean + theorem finset.subset_product Added src/field_theory/tower.lean + theorem dim_mul_dim' + theorem dim_mul_dim + theorem finite_dimensional.findim_mul_findim + theorem finite_dimensional.trans Modified src/linear_algebra/basis.lean + theorem linear_independent_iff'' Modified src/ring_theory/algebra_tower.lean +/- theorem is_algebra_tower.algebra_map_apply +/- theorem is_algebra_tower.algebra_map_eq + theorem is_algebra_tower.algebra_map_smul + theorem is_algebra_tower.smul_left_comm + theorem is_basis.smul + theorem linear_independent_smul + def submodule.restrict_scalars' + theorem submodule.restrict_scalars'_inj + theorem submodule.restrict_scalars'_injective + theorem submodule.restrict_scalars'_top + theorem submodule.smul_mem_span_smul' + theorem submodule.smul_mem_span_smul + theorem submodule.smul_mem_span_smul_of_mem + theorem submodule.span_smul 2020-07-20 03:39:14 501aeb7 feat(data/quot.lean): add lift_on_beta\_2 (#3456) This corresponds to `lift_on\_2` in `library/init/data/quot.lean` just as `lift_beta` and `lift_on_beta` correspond to `lift` and `lift_on`. It greatly simplifies quotient proofs but was, surprisingly, missing. ESTIMATED CHANGES Modified src/data/quot.lean + theorem quotient.lift_on_beta₂ 2020-07-20 03:10:32 697488c feat(tactic/unfold_cases): add unfold_cases tactic (#3396) ESTIMATED CHANGES Modified src/tactic/default.lean Added src/tactic/unfold_cases.lean Added test/unfold_cases.lean + def balance_eqn_compiler + def balance_match + def bar + def baz + inductive color + def foo + inductive node 2020-07-20 00:16:06 2975f93 chore(tactic/interactive): move non-monadic part of `clean` to `expr.clean` (#3461) ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/interactive.lean 2020-07-20 00:16:04 db18144 chore(order/bounded_lattice): add `is_compl.inf_left_eq_bot_iff` etc (#3460) ESTIMATED CHANGES Modified src/order/bounded_lattice.lean + theorem is_compl.disjoint_left_iff + theorem is_compl.disjoint_right_iff + theorem is_compl.inf_left_eq_bot_iff + theorem is_compl.inf_right_eq_bot_iff Modified src/topology/basic.lean 2020-07-19 21:18:59 1bb3d19 refactor(order/filter/basic): add class `filter.ne_bot` (#3454) This way Lean will f`≠ ⊥` in a few most common cases (incl. `nhds_ne_bot`, `at_top_ne_bot`) automatically. Other API changes: * many lemmas now take `[ne_bot l]` instead of `(hl : l ≠ ⊥)`; * some lemmas got `'` versions that take an explicit `(hl : ne_bot l)`; * rename `ultrafilter_unique` to `is_ultrafilter.unique`; * `cauchy_downwards` is now `cauchy.mono` (instance arg) and `cauchy.mono'` (explicit arg); * `cauchy_map` is now `cauchy.map`; * `cauchy_comap` is now `cauchy.comap`; * `totally_bounded_closure` is now `totally_bounded.closure`; * `totally_bounded_image` is now `totally_bounded.image`; ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/hofer.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean + theorem normed_field.nhds_within_is_unit_ne_bot - theorem submodule.eq_top_of_nonempty_interior Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean Modified src/data/padics/hensel.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.coe_le_coe Modified src/data/set/basic.lean + theorem set.nonempty_of_not_subset Modified src/data/set/finite.lean Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/dynamics/fixed_points/topology.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/measure_space.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.at_top_ne_bot Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean +/- theorem filter.comap_ne_bot +/- theorem filter.comap_ne_bot_iff - theorem filter.comap_ne_bot_of_image_mem - theorem filter.comap_ne_bot_of_range_mem - theorem filter.comap_ne_bot_of_surj +/- theorem filter.eventually.exists +/- theorem filter.eventually.frequently +/- theorem filter.eventually_const +/- theorem filter.frequently_const +/- theorem filter.frequently_imp_distrib_left +/- theorem filter.frequently_imp_distrib_right +/- theorem filter.frequently_of_forall +/- theorem filter.frequently_or_distrib_left +/- theorem filter.frequently_or_distrib_right +/- theorem filter.frequently_true_iff_ne_bot +/- theorem filter.infi_ne_bot_iff_of_directed' +/- theorem filter.infi_ne_bot_iff_of_directed +/- theorem filter.infi_ne_bot_of_directed' - theorem filter.map_ne_bot +/- theorem filter.map_ne_bot_iff + theorem filter.ne_bot.comap_of_image_mem + theorem filter.ne_bot.comap_of_range_mem + theorem filter.ne_bot.comap_of_surj + theorem filter.ne_bot.map + theorem filter.ne_bot.mono + theorem filter.ne_bot.ne + theorem filter.ne_bot.nonempty_of_mem + theorem filter.ne_bot.prod + def filter.ne_bot + theorem filter.ne_bot_of_le +/- theorem filter.nonempty_of_mem_sets +/- theorem filter.nonempty_of_ne_bot +/- theorem filter.principal_ne_bot_iff +/- theorem filter.prod_ne_bot - theorem filter.pure_ne_bot +/- theorem filter.tendsto.ne_bot Modified src/order/filter/cofinite.lean - theorem filter.cofinite_ne_bot Modified src/order/filter/filter_product.lean Modified src/order/filter/germ.lean +/- theorem filter.const_eventually_eq' +/- theorem filter.const_eventually_eq +/- theorem filter.germ.const_inj +/- theorem filter.germ.const_le_iff +/- theorem filter.germ.lift_pred_const_iff +/- theorem filter.germ.lift_rel_const_iff Modified src/order/filter/lift.lean +/- theorem filter.lift'_ne_bot_iff +/- theorem filter.lift_ne_bot_iff Modified src/order/filter/pointwise.lean - theorem filter.mul_ne_bot + theorem filter.ne_bot.mul Modified src/order/filter/ultrafilter.lean +/- theorem filter.exists_ultrafilter +/- theorem filter.exists_ultrafilter_iff +/- theorem filter.hyperfilter_ne_bot + theorem filter.is_ultrafilter.unique +/- def filter.is_ultrafilter +/- theorem filter.le_of_ultrafilter +/- theorem filter.ultrafilter_of_spec + theorem filter.ultrafilter_ultrafilter_of' +/- theorem filter.ultrafilter_ultrafilter_of - theorem filter.ultrafilter_unique Modified src/order/liminf_limsup.lean +/- theorem filter.Liminf_le_Limsup +/- theorem filter.is_cobounded_of_is_bounded +/- theorem filter.liminf_const +/- theorem filter.liminf_le_limsup +/- theorem filter.limsup_const Modified src/order/zorn.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean - theorem submodule.eq_top_of_nonempty_interior' + theorem submodule.eq_top_of_nonempty_interior Modified src/topology/algebra/ordered.lean +/- theorem Liminf_eq_of_le_nhds +/- theorem Limsup_eq_of_le_nhds +/- theorem filter.tendsto.liminf_eq +/- theorem filter.tendsto.limsup_eq +/- theorem ge_of_tendsto' +/- theorem ge_of_tendsto +/- theorem le_of_tendsto_of_tendsto' +/- theorem le_of_tendsto_of_tendsto Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean + theorem cluster_pt.ne_bot + theorem cluster_pt.of_le_nhds' +/- theorem cluster_pt.of_le_nhds +/- def cluster_pt - theorem nhds_ne_bot Modified src/topology/bounded_continuous_function.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean +/- theorem dense_inducing.comap_nhds_ne_bot + theorem dense_range.nhds_within_ne_bot Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/order.lean Modified src/topology/separation.lean +/- theorem Lim_eq +/- theorem eq_of_nhds_ne_bot +/- theorem t2_iff_nhds + theorem tendsto_nhds_unique' Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean +/- theorem is_compact.inter_right +/- theorem is_compact.prod +/- def is_compact Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean + theorem cauchy.comap' + theorem cauchy.comap + theorem cauchy.map + theorem cauchy.mono' + theorem cauchy.mono +/- def cauchy - theorem cauchy_comap - theorem cauchy_downwards +/- theorem cauchy_iff_exists_le_nhds - theorem cauchy_map + theorem cauchy_map_iff' +/- theorem cauchy_map_iff_exists_tendsto +/- def sequentially_complete.seq + theorem totally_bounded.closure + theorem totally_bounded.image - theorem totally_bounded_closure - theorem totally_bounded_image Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/pi.lean Modified src/topology/uniform_space/uniform_convergence.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-07-19 21:18:58 953ab3a feat(geometry/manifold/charted_space): open subset of a manifold is a manifold (#3442) An open subset of a charted space is naturally a charted space. If the charted space has structure groupoid `G` (with `G` closed under restriction), then the open subset does also. Most of the work is in `topology/local_homeomorph`, where it is proved that a local homeomorphism whose source is `univ` is an open embedding, and conversely. ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.image_open_of_open' + theorem local_homeomorph.source_preimage_target + theorem local_homeomorph.subtype_restr_coe + theorem local_homeomorph.subtype_restr_def + theorem local_homeomorph.subtype_restr_source + theorem local_homeomorph.subtype_restr_symm_trans_subtype_restr + theorem local_homeomorph.to_open_embedding + theorem open_embedding.continuous_inv_fun + theorem open_embedding.open_target + theorem open_embedding.source + theorem open_embedding.target + theorem open_embedding.to_local_equiv_coe + theorem open_embedding.to_local_equiv_source + theorem open_embedding.to_local_equiv_target + theorem open_embedding.to_local_homeomorph_coe + theorem topological_space.opens.local_homeomorph_subtype_coe_coe + theorem topological_space.opens.local_homeomorph_subtype_coe_source + theorem topological_space.opens.local_homeomorph_subtype_coe_target 2020-07-19 16:12:23 bc278b7 fix(tactic/apply_rules): fix stuck metavariable bug (#3451) `apply_rules` had the same bug `solve_by_elim` used to suffer from: applying a lemma once would fix its arguments, and prevent it from being applied a second time with different arguments. This essentially ports over the fix from `solve_by_elim`: rather than carrying around a `list expr`, we carry a `list (tactic expr)` and generate on demand. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/tactic/core.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Added test/apply_rules.lean Modified test/tactics.lean 2020-07-19 15:29:48 9b0435a fix(tactic/linarith): find correct zero_lt_one (#3455) Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/linarith.20and.20ordinal.20file ESTIMATED CHANGES Modified src/tactic/linarith/verification.lean Modified test/linarith.lean + theorem T.works + theorem T.zero_lt_one 2020-07-19 14:44:28 47ea2a6 feat(topology, analysis) : add lemmas about `has_neg.neg` (preliminaries for L'Hopital's rule) (#3392) This PR contains a few lemmas about the `has_neg.neg` function, such as : - its limit along `at_top` and `at_bot` - its limit along `nhds a`, `nhds_within a (Ioi a)` and similar filters - its differentiability and derivative ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv.neg' + theorem deriv.neg + theorem deriv_neg'' +/- theorem deriv_neg' +/- theorem deriv_neg + theorem deriv_within.neg +/- theorem deriv_within_neg + theorem differentiable_neg + theorem differentiable_on_neg + theorem has_deriv_at_filter_neg + theorem has_deriv_at_neg' + theorem has_deriv_at_neg + theorem has_deriv_within_at_neg + theorem has_strict_deriv_at_neg Modified src/analysis/calculus/mean_value.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.eventually.exists_forall_of_at_top +/- theorem filter.eventually_at_top + theorem filter.eventually_ge_at_top +/- theorem filter.frequently.forall_exists_of_at_top +/- theorem filter.frequently_at_top' +/- theorem filter.frequently_at_top + theorem filter.tendsto_at_bot' + theorem filter.tendsto_at_bot + theorem filter.tendsto_at_bot_at_bot + theorem filter.tendsto_at_bot_at_top +/- theorem filter.tendsto_at_top_at_bot +/- theorem filter.tendsto_at_top_at_top_of_monotone' +/- theorem filter.tendsto_at_top_embedding +/- theorem filter.tendsto_at_top_of_monotone_of_filter +/- theorem filter.tendsto_at_top_of_monotone_of_subseq +/- theorem filter.tendsto_at_top_pure + theorem filter.tendsto_neg_at_bot_at_top + theorem filter.tendsto_neg_at_top_at_bot +/- theorem filter.unbounded_of_tendsto_at_top Modified src/topology/algebra/group.lean + theorem continuous_on_inv + theorem tendsto_inv Modified src/topology/algebra/ordered.lean + theorem tendsto_inv_nhds_within_Iio + theorem tendsto_inv_nhds_within_Iio_inv + theorem tendsto_inv_nhds_within_Ioi + theorem tendsto_inv_nhds_within_Ioi_inv 2020-07-19 14:13:17 8187551 feat(topology/algebra/continuous_functions): algebra structure over continuous functions (#3383) ESTIMATED CHANGES Modified src/topology/algebra/continuous_functions.lean + def C 2020-07-19 09:29:38 5228d55 feat(linear_algebra/basic): add span_zero (#3306) `simp` now proves span_zero for both submodules and ideals ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem submodule.span_singleton_eq_bot + theorem submodule.span_zero Modified src/linear_algebra/basis.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideals.lean +/- theorem ideal.span_singleton_eq_bot + theorem ideal.span_zero 2020-07-19 06:24:31 3354476 feat(data/indicator_function): more lemmas (#3424) Add some lemmas of use when using `set.indicator` to manipulate functions involved in summations. ESTIMATED CHANGES Modified src/data/indicator_function.lean + theorem set.mem_of_indicator_ne_zero + theorem set.sum_indicator_subset + theorem set.sum_indicator_subset_of_eq_zero 2020-07-19 05:43:15 8312419 refactor(data/polynomial): remove has_coe_to_fun, and @[reducible] on monomial (#3420) I'm going to refactor in stages, trying to clean up some of the cruftier aspects of `data/polynomial/*`. This PR: 1. removes the `has_coe_to_fun` on polynomial ESTIMATED CHANGES Modified src/data/polynomial/basic.lean - theorem polynomial.apply_eq_coeff - def polynomial.coeff_coe_to_fun + theorem polynomial.coeff_monomial +/- theorem polynomial.coeff_one_zero + theorem polynomial.monomial_mul_monomial Modified src/data/polynomial/coeff.lean Modified src/data/polynomial/degree/basic.lean Modified src/data/polynomial/derivative.lean Modified src/data/polynomial/div.lean + theorem polynomial.apply_eq_coeff + def polynomial.coeff_coe_to_fun Modified src/data/polynomial/eval.lean Modified src/data/polynomial/monomial.lean +/- theorem polynomial.coeff_C_zero +/- theorem polynomial.coeff_X +/- theorem polynomial.coeff_X_one +/- theorem polynomial.coeff_X_zero Modified src/ring_theory/polynomial_algebra.lean 2020-07-19 04:53:42 eca55c9 feat(category_theory/equivalence): injectivity simp lemmas for equivalences (#3437) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean + theorem category_theory.equivalence.functor_map_inj_iff + theorem category_theory.equivalence.inverse_map_inj_iff 2020-07-19 04:53:40 eb68f4c feat (linear_algebra/matrix): make diag and trace compatible with semirings (#3433) changes ring and related instances to semiring etc. in requirements for matrix.diag and matrix.trace ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean +/- def matrix.diag +/- def matrix.trace 2020-07-19 04:53:38 e6bfe18 feat(topology/algebra/module): pi and proj for CLM (#3430) ESTIMATED CHANGES Modified src/topology/algebra/module.lean + theorem continuous_linear_map.infi_ker_proj + def continuous_linear_map.infi_ker_proj_equiv + def continuous_linear_map.pi + theorem continuous_linear_map.pi_apply + theorem continuous_linear_map.pi_comp + theorem continuous_linear_map.pi_eq_zero + theorem continuous_linear_map.pi_zero + def continuous_linear_map.proj + theorem continuous_linear_map.proj_apply + theorem continuous_linear_map.proj_pi 2020-07-19 03:42:37 f83cf57 feat(data/equiv/mul_add): minor lemmas (#3447) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem add_aut.apply_inv_self + theorem add_aut.inv_apply_self + theorem mul_aut.apply_inv_self + theorem mul_aut.inv_apply_self 2020-07-19 03:42:35 61bd966 feat(data/list/basic): add concat lemmas (#3445) The first two are taken after the `head_eq_of_cons_eq` and `tail_eq_of_cons_eq` lemmas further up in the file. The third, `reverse_concat`, is like `reverse_cons'` but with the `::` and `concat` swapped. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.init_eq_of_concat_eq + theorem list.last_eq_of_concat_eq + theorem list.reverse_concat 2020-07-19 03:15:24 91ca927 feat(geometry/manifold/local_invariant_properties): local structomorphism is `local_invariant_prop` (#3434) For a groupoid `G`, define the property of being a local structomorphism; prove that if `G` is closed under restriction then this property satisfies `local_invariant_prop` (i.e., is local and `G`-invariant). ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + theorem closed_under_restriction' Modified src/geometry/manifold/local_invariant_properties.lean + def structure_groupoid.is_local_structomorph_within_at + theorem structure_groupoid.is_local_structomorph_within_at_local_invariant_prop 2020-07-18 16:49:37 4760a33 feat(algebra/polynomial, data/polynomial): lemmas about monic polynomials (#3402) ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem add_pow_char_of_commute Deleted src/algebra/polynomial/basic.lean - theorem polynomial.coe_aeval_eq_eval - theorem polynomial.coeff_zero_eq_aeval_zero - def polynomial.leading_coeff_hom - theorem polynomial.leading_coeff_hom_apply Modified src/algebra/polynomial/big_operators.lean - theorem polynomial.monic_prod_of_monic + theorem polynomial.nat_degree_prod' + theorem polynomial.nat_degree_prod - theorem polynomial.nat_degree_prod_eq' - theorem polynomial.nat_degree_prod_eq - theorem polynomial.nat_degree_prod_eq_of_monic + theorem polynomial.nat_degree_prod_of_monic + theorem polynomial.prod_X_sub_C_coeff_card_pred + theorem polynomial.prod_X_sub_C_next_coeff Modified src/data/polynomial/algebra_map.lean + theorem polynomial.coe_aeval_eq_eval + theorem polynomial.coeff_zero_eq_aeval_zero + theorem polynomial.pow_comp Modified src/data/polynomial/degree.lean + theorem polynomial.degree_mul' + theorem polynomial.degree_mul - theorem polynomial.degree_mul_eq' + theorem polynomial.degree_pow' + theorem polynomial.degree_pow - theorem polynomial.degree_pow_eq' + def polynomial.leading_coeff_hom + theorem polynomial.leading_coeff_hom_apply + theorem polynomial.leading_coeff_mul + theorem polynomial.leading_coeff_pow + theorem polynomial.nat_degree_mul' - theorem polynomial.nat_degree_mul_eq' + theorem polynomial.nat_degree_pow' - theorem polynomial.nat_degree_pow_eq' + theorem polynomial.next_coeff_X_sub_C Modified src/data/polynomial/degree/basic.lean + def polynomial.next_coeff + theorem polynomial.next_coeff_C_eq_zero + theorem polynomial.next_coeff_of_pos_nat_degree Modified src/data/polynomial/div.lean Modified src/data/polynomial/field_division.lean Modified src/data/polynomial/monic.lean + theorem polynomial.monic.coeff_nat_degree + theorem polynomial.monic.degree_eq_zero_iff_eq_one + theorem polynomial.monic.nat_degree_mul + theorem polynomial.monic.next_coeff_mul + theorem polynomial.monic.next_coeff_prod + theorem polynomial.monic_prod_of_monic Modified src/data/polynomial/ring_division.lean - theorem polynomial.degree_mul_eq - theorem polynomial.degree_pow_eq - theorem polynomial.leading_coeff_mul - theorem polynomial.leading_coeff_pow + theorem polynomial.nat_degree_mul - theorem polynomial.nat_degree_mul_eq + theorem polynomial.nat_degree_pow - theorem polynomial.nat_degree_pow_eq Modified src/linear_algebra/lagrange.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/polynomial/basic.lean 2020-07-18 16:19:16 37cf166 feat(data/complex/exponential): added @[mono] tag to exp_le_exp and exp_lt_exp (#3318) added @[mono] tag to exp_le_exp and exp_lt_exp. ESTIMATED CHANGES Modified src/data/complex/exponential.lean + theorem real.exp_monotone 2020-07-18 12:28:11 e3e0aa0 chore(linear_algebra/direct_sum_module): add dosctrings (#3418) ESTIMATED CHANGES Modified src/linear_algebra/direct_sum_module.lean +/- def direct_sum.lmk 2020-07-18 11:26:57 21a1683 feat(data/finsupp): sums over on_finset (#3427) There aren't many lemmas about `finsupp.on_finset`. Add one that's useful for manipulating sums over `on_finset`. ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.on_finset_sum 2020-07-18 11:26:55 4767b30 feat(algebra/big_operators): more general prod_insert_one (#3426) I found I had a use for a slightly more general version of `prod_insert_one` / `sum_insert_zero`. Add that version and use it in the proof of `prod_insert_one`. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_insert_of_eq_one_if_not_mem 2020-07-18 10:34:10 f81568a feat(group_theory/semidirect_product): mk_eq_inl_mul_inr and hom_ext (#3408) ESTIMATED CHANGES Modified src/group_theory/semidirect_product.lean + theorem semidirect_product.hom_ext + theorem semidirect_product.mk_eq_inl_mul_inr 2020-07-18 09:27:48 907147a feat(linear_algebra/matrix): define equivalences for reindexing matrices with equivalent types (#3409) ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean + def matrix.reindex_lie_equiv + theorem matrix.reindex_lie_equiv_apply + theorem matrix.reindex_lie_equiv_symm_apply Modified src/linear_algebra/matrix.lean + def matrix.reindex + def matrix.reindex_alg_equiv + theorem matrix.reindex_alg_equiv_apply + theorem matrix.reindex_alg_equiv_symm_apply + theorem matrix.reindex_apply + def matrix.reindex_linear_equiv + theorem matrix.reindex_linear_equiv_apply + theorem matrix.reindex_linear_equiv_symm_apply + theorem matrix.reindex_mul + theorem matrix.reindex_symm_apply 2020-07-18 06:56:08 06823d6 chore(*): add copyright header, cleanup imports (#3440) Fixes 1. a missing copyright header 2. moves `tactic.obviously` into the imports of `tactic.basic`, so everyone has `tidy` and `obviously` available. 3. removes a few redundant imports ESTIMATED CHANGES Modified src/algebra/group/basic.lean Modified src/category_theory/category/default.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean Modified src/category_theory/limits/limits.lean Modified src/data/equiv/basic.lean Modified src/order/boolean_algebra.lean Modified src/tactic/basic.lean Modified src/tactic/core.lean Modified src/tactic/ext.lean Modified src/tactic/obviously.lean Modified src/tactic/pi_instances.lean 2020-07-17 14:49:16 9616f44 feat(algebra/ordered_group): decidable_linear_order for multiplicative and additive (#3429) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean 2020-07-17 14:49:14 3acf220 feat(group_theory/semidirect_product): inl_aut_inv (#3410) ESTIMATED CHANGES Modified src/group_theory/semidirect_product.lean + theorem semidirect_product.inl_aut_inv +/- theorem semidirect_product.inl_left_mul_inr_right 2020-07-17 13:47:53 8999625 chore(*): more import reduction (#3421) Another import reduction PR. (This is by hand, not just removing transitive imports.) Mostly this one is from staring at `leanproject import-graph --to data.polynomial.basic` and wondering about weird edges in the graph. ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/polynomial/big_operators.lean Modified src/combinatorics/composition.lean Modified src/data/fintype/card.lean Modified src/data/int/sqrt.lean Modified src/data/nat/digits.lean Modified src/data/polynomial/ring_division.lean Modified src/data/rat/basic.lean Modified src/data/rat/order.lean - theorem rat.exists_mul_self - def rat.sqrt - theorem rat.sqrt_eq - theorem rat.sqrt_nonneg Added src/data/rat/sqrt.lean + theorem rat.exists_mul_self + def rat.sqrt + theorem rat.sqrt_eq + theorem rat.sqrt_nonneg Modified src/data/real/irrational.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/subgroup.lean Modified src/tactic/norm_num.lean 2020-07-17 12:38:22 207a1d4 feat(data/finset/basic): finset of empty type (#3425) In a proof working by cases for whether a type is nonempty, I found I had a use for the result that a `finset` of an empty type is empty. ESTIMATED CHANGES Modified src/data/finset/basic.lean + theorem finset.eq_empty_of_not_nonempty 2020-07-17 09:26:56 4a6b716 fix(tactic/nlinarith): stop nlinarith failing in the presence of squares when there is no order (#3417) As reported by Heather Macbeth at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/app_builder_exception.20in.20.60nlinarith.60/near/204138256 ESTIMATED CHANGES Modified src/tactic/linarith/preprocessing.lean Modified test/linarith.lean + theorem abs_nonneg' 2020-07-17 07:23:09 7d31f77 refactor(measure_theory/*): big refactor (#3373) Big refactor of integrals, fixes #3084 Make `integral (f : α → E) (μ : measure α)` the main definition, and use `notation` for other integrals (over a set and/or w.r.t. the canonical measure `volume`). ESTIMATED CHANGES Modified src/algebra/module.lean + theorem linear_map.coe_injective Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.extend_unique Modified src/data/indicator_function.lean + theorem add_monoid_hom.map_indicator + theorem set.indicator_le' + theorem set.indicator_le + theorem set.indicator_le_self' + theorem set.indicator_le_self Modified src/data/real/ennreal.lean + theorem ennreal.coe_indicator Modified src/data/real/nnreal.lean + theorem nnreal.coe_indicator Modified src/data/set/basic.lean - theorem set.if_preimage + theorem set.set_of_true - theorem set.univ_def Modified src/data/set/function.lean + theorem set.piecewise_preimage Modified src/measure_theory/ae_eq_fun.lean - theorem measure_theory.ae_eq_fun.add_to_fun - theorem measure_theory.ae_eq_fun.all_ae_mk_to_fun + theorem measure_theory.ae_eq_fun.coe_fn_comp + theorem measure_theory.ae_eq_fun.coe_fn_comp₂ + theorem measure_theory.ae_eq_fun.coe_fn_const + theorem measure_theory.ae_eq_fun.coe_fn_edist + theorem measure_theory.ae_eq_fun.coe_fn_inv + theorem measure_theory.ae_eq_fun.coe_fn_le + theorem measure_theory.ae_eq_fun.coe_fn_mk + theorem measure_theory.ae_eq_fun.coe_fn_mul + theorem measure_theory.ae_eq_fun.coe_fn_one + theorem measure_theory.ae_eq_fun.coe_fn_pair + theorem measure_theory.ae_eq_fun.coe_fn_pos_part + theorem measure_theory.ae_eq_fun.coe_fn_smul + theorem measure_theory.ae_eq_fun.coe_fn_sub +/- def measure_theory.ae_eq_fun.comp - def measure_theory.ae_eq_fun.comp_edist - theorem measure_theory.ae_eq_fun.comp_edist_self - theorem measure_theory.ae_eq_fun.comp_edist_to_fun + theorem measure_theory.ae_eq_fun.comp_eq_mk - theorem measure_theory.ae_eq_fun.comp_eq_mk_to_fun +/- theorem measure_theory.ae_eq_fun.comp_mk - theorem measure_theory.ae_eq_fun.comp_to_fun + theorem measure_theory.ae_eq_fun.comp_to_germ +/- def measure_theory.ae_eq_fun.comp₂ + theorem measure_theory.ae_eq_fun.comp₂_eq_mk - theorem measure_theory.ae_eq_fun.comp₂_eq_mk_to_fun + theorem measure_theory.ae_eq_fun.comp₂_eq_pair - theorem measure_theory.ae_eq_fun.comp₂_to_fun + theorem measure_theory.ae_eq_fun.comp₂_to_germ +/- def measure_theory.ae_eq_fun.const - theorem measure_theory.ae_eq_fun.const_to_fun + theorem measure_theory.ae_eq_fun.edist_add_right - theorem measure_theory.ae_eq_fun.edist_eq_add_add + theorem measure_theory.ae_eq_fun.edist_eq_coe' + theorem measure_theory.ae_eq_fun.edist_eq_coe +/- theorem measure_theory.ae_eq_fun.edist_mk_mk +/- theorem measure_theory.ae_eq_fun.edist_smul - theorem measure_theory.ae_eq_fun.edist_to_fun' - theorem measure_theory.ae_eq_fun.edist_to_fun + theorem measure_theory.ae_eq_fun.edist_zero_eq_coe - theorem measure_theory.ae_eq_fun.edist_zero_to_fun - def measure_theory.ae_eq_fun.eintegral - theorem measure_theory.ae_eq_fun.eintegral_add - theorem measure_theory.ae_eq_fun.eintegral_eq_zero_iff - theorem measure_theory.ae_eq_fun.eintegral_le_eintegral - theorem measure_theory.ae_eq_fun.eintegral_mk - theorem measure_theory.ae_eq_fun.eintegral_to_fun - theorem measure_theory.ae_eq_fun.eintegral_zero +/- theorem measure_theory.ae_eq_fun.ext + theorem measure_theory.ae_eq_fun.induction_on + theorem measure_theory.ae_eq_fun.induction_on₂ + theorem measure_theory.ae_eq_fun.induction_on₃ + theorem measure_theory.ae_eq_fun.inv_mk + theorem measure_theory.ae_eq_fun.inv_to_germ - theorem measure_theory.ae_eq_fun.le_iff_to_fun_le +/- def measure_theory.ae_eq_fun.lift_pred +/- def measure_theory.ae_eq_fun.lift_rel + theorem measure_theory.ae_eq_fun.lift_rel_iff_coe_fn - theorem measure_theory.ae_eq_fun.lift_rel_iff_to_fun +/- theorem measure_theory.ae_eq_fun.lift_rel_mk_mk + def measure_theory.ae_eq_fun.lintegral + theorem measure_theory.ae_eq_fun.lintegral_add + theorem measure_theory.ae_eq_fun.lintegral_coe_fn + theorem measure_theory.ae_eq_fun.lintegral_eq_zero_iff + theorem measure_theory.ae_eq_fun.lintegral_mk + theorem measure_theory.ae_eq_fun.lintegral_mono + theorem measure_theory.ae_eq_fun.lintegral_zero +/- def measure_theory.ae_eq_fun.mk - theorem measure_theory.ae_eq_fun.mk_add_mk + theorem measure_theory.ae_eq_fun.mk_coe_fn +/- theorem measure_theory.ae_eq_fun.mk_eq_mk +/- theorem measure_theory.ae_eq_fun.mk_le_mk + theorem measure_theory.ae_eq_fun.mk_mul_mk + theorem measure_theory.ae_eq_fun.mk_sub - theorem measure_theory.ae_eq_fun.mk_sub_mk + theorem measure_theory.ae_eq_fun.mk_to_germ + theorem measure_theory.ae_eq_fun.mul_to_germ - theorem measure_theory.ae_eq_fun.neg_mk - theorem measure_theory.ae_eq_fun.neg_to_fun +/- theorem measure_theory.ae_eq_fun.one_def - theorem measure_theory.ae_eq_fun.one_to_fun + theorem measure_theory.ae_eq_fun.one_to_germ + def measure_theory.ae_eq_fun.pair + theorem measure_theory.ae_eq_fun.pair_eq_mk + theorem measure_theory.ae_eq_fun.pair_mk_mk +/- def measure_theory.ae_eq_fun.pos_part + theorem measure_theory.ae_eq_fun.pos_part_mk - theorem measure_theory.ae_eq_fun.pos_part_to_fun +/- theorem measure_theory.ae_eq_fun.quot_mk_eq_mk + theorem measure_theory.ae_eq_fun.quotient_out'_eq_coe_fn - theorem measure_theory.ae_eq_fun.self_eq_mk - theorem measure_theory.ae_eq_fun.smul_to_fun + theorem measure_theory.ae_eq_fun.smul_to_germ - theorem measure_theory.ae_eq_fun.sub_to_fun + def measure_theory.ae_eq_fun.to_germ + theorem measure_theory.ae_eq_fun.to_germ_eq + theorem measure_theory.ae_eq_fun.to_germ_injective - theorem measure_theory.ae_eq_fun.zero_def - theorem measure_theory.ae_eq_fun.zero_to_fun +/- def measure_theory.ae_eq_fun + def measure_theory.measure.ae_eq_setoid Modified src/measure_theory/bochner_integration.lean +/- def measure_theory.integral + theorem measure_theory.integral_add_meas +/- theorem measure_theory.integral_congr_ae + theorem measure_theory.integral_const +/- theorem measure_theory.integral_div +/- theorem measure_theory.integral_eq +/- theorem measure_theory.integral_eq_lintegral_of_nonneg_ae +/- theorem measure_theory.integral_finset_sum - theorem measure_theory.integral_le_integral - theorem measure_theory.integral_le_integral_ae + theorem measure_theory.integral_mono +/- theorem measure_theory.integral_mul_left +/- theorem measure_theory.integral_mul_right +/- theorem measure_theory.integral_neg +/- theorem measure_theory.integral_non_integrable +/- theorem measure_theory.integral_non_measurable +/- theorem measure_theory.integral_nonneg_of_ae +/- theorem measure_theory.integral_nonpos_of_nonpos_ae +/- theorem measure_theory.integral_smul +/- theorem measure_theory.integral_undef +/- theorem measure_theory.integral_zero +/- def measure_theory.l1.integral +/- theorem measure_theory.l1.integral_add +/- def measure_theory.l1.integral_clm +/- theorem measure_theory.l1.integral_eq +/- theorem measure_theory.l1.integral_eq_norm_pos_part_sub +/- theorem measure_theory.l1.integral_neg +/- theorem measure_theory.l1.integral_smul +/- theorem measure_theory.l1.integral_sub +/- theorem measure_theory.l1.integral_zero +/- theorem measure_theory.l1.norm_integral_le +/- theorem measure_theory.l1.simple_func.add_to_simple_func +/- theorem measure_theory.l1.simple_func.coe_add + theorem measure_theory.l1.simple_func.coe_coe +/- theorem measure_theory.l1.simple_func.coe_neg +/- theorem measure_theory.l1.simple_func.coe_neg_part +/- theorem measure_theory.l1.simple_func.coe_pos_part +/- theorem measure_theory.l1.simple_func.coe_smul +/- theorem measure_theory.l1.simple_func.coe_sub +/- def measure_theory.l1.simple_func.coe_to_l1 +/- theorem measure_theory.l1.simple_func.coe_zero +/- theorem measure_theory.l1.simple_func.dist_eq +/- theorem measure_theory.l1.simple_func.dist_to_simple_func +/- theorem measure_theory.l1.simple_func.edist_eq - theorem measure_theory.l1.simple_func.exists_simple_func_near +/- def measure_theory.l1.simple_func.integral +/- theorem measure_theory.l1.simple_func.integral_add +/- def measure_theory.l1.simple_func.integral_clm +/- theorem measure_theory.l1.simple_func.integral_congr - theorem measure_theory.l1.simple_func.integral_eq_bintegral +/- theorem measure_theory.l1.simple_func.integral_eq_integral +/- theorem measure_theory.l1.simple_func.integral_eq_lintegral +/- theorem measure_theory.l1.simple_func.integral_eq_norm_pos_part_sub + theorem measure_theory.l1.simple_func.integral_l1_eq_integral +/- theorem measure_theory.l1.simple_func.integral_smul +/- theorem measure_theory.l1.simple_func.lintegral_edist_to_simple_func_lt_top +/- def measure_theory.l1.simple_func.neg_part +/- theorem measure_theory.l1.simple_func.neg_part_to_simple_func +/- theorem measure_theory.l1.simple_func.neg_to_simple_func +/- theorem measure_theory.l1.simple_func.norm_eq' +/- theorem measure_theory.l1.simple_func.norm_eq - theorem measure_theory.l1.simple_func.norm_eq_bintegral + theorem measure_theory.l1.simple_func.norm_eq_integral +/- theorem measure_theory.l1.simple_func.norm_integral_le_norm +/- theorem measure_theory.l1.simple_func.norm_of_simple_func +/- theorem measure_theory.l1.simple_func.norm_to_simple_func +/- def measure_theory.l1.simple_func.of_simple_func +/- theorem measure_theory.l1.simple_func.of_simple_func_add +/- theorem measure_theory.l1.simple_func.of_simple_func_eq_mk +/- theorem measure_theory.l1.simple_func.of_simple_func_eq_of_fun +/- theorem measure_theory.l1.simple_func.of_simple_func_neg +/- theorem measure_theory.l1.simple_func.of_simple_func_smul +/- theorem measure_theory.l1.simple_func.of_simple_func_sub +/- theorem measure_theory.l1.simple_func.of_simple_func_to_simple_func +/- theorem measure_theory.l1.simple_func.of_simple_func_zero +/- def measure_theory.l1.simple_func.pos_part +/- theorem measure_theory.l1.simple_func.pos_part_to_simple_func +/- theorem measure_theory.l1.simple_func.smul_to_simple_func +/- theorem measure_theory.l1.simple_func.sub_to_simple_func +/- def measure_theory.l1.simple_func.to_simple_func +/- theorem measure_theory.l1.simple_func.to_simple_func_eq_to_fun +/- theorem measure_theory.l1.simple_func.to_simple_func_of_simple_func +/- theorem measure_theory.l1.simple_func.zero_to_simple_func +/- def measure_theory.l1.simple_func +/- theorem measure_theory.norm_integral_le_integral_norm +/- theorem measure_theory.norm_integral_le_lintegral_norm - def measure_theory.simple_func.bintegral - theorem measure_theory.simple_func.bintegral_add - theorem measure_theory.simple_func.bintegral_congr - theorem measure_theory.simple_func.bintegral_eq_integral' - theorem measure_theory.simple_func.bintegral_eq_integral - theorem measure_theory.simple_func.bintegral_eq_lintegral' - theorem measure_theory.simple_func.bintegral_eq_lintegral - theorem measure_theory.simple_func.bintegral_neg - theorem measure_theory.simple_func.bintegral_smul - theorem measure_theory.simple_func.bintegral_sub + theorem measure_theory.simple_func.fin_meas_supp.integrable - theorem measure_theory.simple_func.fin_vol_supp_of_integrable + theorem measure_theory.simple_func.integrable_iff_fin_meas_supp - theorem measure_theory.simple_func.integrable_iff_fin_vol_supp - theorem measure_theory.simple_func.integrable_iff_integral_lt_top - theorem measure_theory.simple_func.integrable_of_fin_vol_supp +/- theorem measure_theory.simple_func.integrable_pair + def measure_theory.simple_func.integral + theorem measure_theory.simple_func.integral_add + theorem measure_theory.simple_func.integral_add_meas + theorem measure_theory.simple_func.integral_congr + theorem measure_theory.simple_func.integral_eq_integral + theorem measure_theory.simple_func.integral_eq_lintegral' + theorem measure_theory.simple_func.integral_eq_lintegral + theorem measure_theory.simple_func.integral_eq_sum_filter + theorem measure_theory.simple_func.integral_neg + theorem measure_theory.simple_func.integral_smul + theorem measure_theory.simple_func.integral_sub - theorem measure_theory.simple_func.map_bintegral + theorem measure_theory.simple_func.map_integral +/- def measure_theory.simple_func.neg_part - theorem measure_theory.simple_func.norm_bintegral_le_bintegral_norm + theorem measure_theory.simple_func.norm_integral_le_integral_norm +/- def measure_theory.simple_func.pos_part +/- theorem measure_theory.tendsto_integral_of_dominated_convergence + theorem measure_theory.tendsto_integral_of_l1 Modified src/measure_theory/borel_space.lean - theorem is_measurable_eq - theorem is_measurable_singleton Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/giry_monad.lean - theorem measure_theory.measure.integral_bind - theorem measure_theory.measure.integral_join + theorem measure_theory.measure.lintegral_bind + theorem measure_theory.measure.lintegral_join - theorem measure_theory.measure.measurable_integral + theorem measure_theory.measure.measurable_lintegral Modified src/measure_theory/indicator_function.lean +/- theorem indicator_congr_ae +/- theorem indicator_congr_of_set +/- theorem indicator_le_indicator_ae Modified src/measure_theory/integration.lean +/- def measure_theory.lintegral + theorem measure_theory.lintegral_Union + theorem measure_theory.lintegral_Union_le + theorem measure_theory.lintegral_add_meas +/- theorem measure_theory.lintegral_congr_ae + theorem measure_theory.lintegral_const +/- theorem measure_theory.lintegral_const_mul_le + theorem measure_theory.lintegral_dirac +/- theorem measure_theory.lintegral_eq_nnreal - theorem measure_theory.lintegral_eq_supr_eapprox_integral + theorem measure_theory.lintegral_eq_supr_eapprox_lintegral + theorem measure_theory.lintegral_indicator - theorem measure_theory.lintegral_le_lintegral_ae + theorem measure_theory.lintegral_map + theorem measure_theory.lintegral_mono' +/- theorem measure_theory.lintegral_mono + theorem measure_theory.lintegral_mono_ae +/- theorem measure_theory.lintegral_rw₁ +/- theorem measure_theory.lintegral_rw₂ + theorem measure_theory.lintegral_smul_meas + theorem measure_theory.lintegral_sum_meas - theorem measure_theory.lintegral_supr_const +/- theorem measure_theory.lintegral_zero + theorem measure_theory.lintegral_zero_meas + theorem measure_theory.meas_ge_le_lintegral_div - def measure_theory.measure.integral - theorem measure_theory.measure.integral_dirac - theorem measure_theory.measure.integral_map - theorem measure_theory.measure.integral_zero +/- def measure_theory.measure.with_density - theorem measure_theory.measure.with_density_apply +/- theorem measure_theory.monotone_lintegral + theorem measure_theory.mul_meas_ge_le_lintegral - theorem measure_theory.mul_volume_ge_le_lintegral - theorem measure_theory.simple_func.add_integral + theorem measure_theory.simple_func.add_lintegral + theorem measure_theory.simple_func.coe_add + theorem measure_theory.simple_func.coe_const + theorem measure_theory.simple_func.coe_injective + theorem measure_theory.simple_func.coe_le +/- theorem measure_theory.simple_func.coe_map + theorem measure_theory.simple_func.coe_mul + theorem measure_theory.simple_func.coe_neg + theorem measure_theory.simple_func.coe_piecewise + theorem measure_theory.simple_func.coe_range + theorem measure_theory.simple_func.coe_restrict + theorem measure_theory.simple_func.coe_smul + theorem measure_theory.simple_func.coe_sub + theorem measure_theory.simple_func.coe_zero +/- theorem measure_theory.simple_func.const_apply + theorem measure_theory.simple_func.const_lintegral + theorem measure_theory.simple_func.const_lintegral_restrict - theorem measure_theory.simple_func.const_mul_integral + theorem measure_theory.simple_func.const_mul_lintegral + theorem measure_theory.simple_func.const_zero + theorem measure_theory.simple_func.eq_zero_of_mem_range_zero + theorem measure_theory.simple_func.exists_range_iff + theorem measure_theory.simple_func.fin_meas_supp.iff_lintegral_lt_top + theorem measure_theory.simple_func.fin_meas_supp.lintegral_lt_top + theorem measure_theory.simple_func.fin_meas_supp.map_iff + theorem measure_theory.simple_func.fin_meas_supp.meas_preimage_singleton_ne_zero + theorem measure_theory.simple_func.fin_meas_supp.of_lintegral_lt_top + theorem measure_theory.simple_func.fin_meas_supp.of_map + theorem measure_theory.simple_func.fin_meas_supp_iff + theorem measure_theory.simple_func.fin_meas_supp_iff_support - theorem measure_theory.simple_func.fin_vol_supp_map - theorem measure_theory.simple_func.fin_vol_supp_of_fin_vol_supp_map - theorem measure_theory.simple_func.fin_vol_supp_of_integral_lt_top - theorem measure_theory.simple_func.fin_vol_supp_pair + theorem measure_theory.simple_func.finite_range + theorem measure_theory.simple_func.forall_range_iff - def measure_theory.simple_func.integral - theorem measure_theory.simple_func.integral_congr - theorem measure_theory.simple_func.integral_le_integral - theorem measure_theory.simple_func.integral_lt_top_of_fin_vol_supp - theorem measure_theory.simple_func.integral_map - theorem measure_theory.simple_func.integral_map_coe_lt_top - theorem measure_theory.simple_func.integral_sup_le +/- theorem measure_theory.simple_func.is_measurable_cut + theorem measure_theory.simple_func.is_measurable_fiber + theorem measure_theory.simple_func.is_measurable_preimage - def measure_theory.simple_func.ite - theorem measure_theory.simple_func.ite_apply + theorem measure_theory.simple_func.le_sup_lintegral + def measure_theory.simple_func.lintegral + theorem measure_theory.simple_func.lintegral_add + theorem measure_theory.simple_func.lintegral_congr - theorem measure_theory.simple_func.lintegral_eq_integral + theorem measure_theory.simple_func.lintegral_eq_lintegral + theorem measure_theory.simple_func.lintegral_eq_of_measure_preimage + theorem measure_theory.simple_func.lintegral_eq_of_subset +/- theorem measure_theory.simple_func.lintegral_map + theorem measure_theory.simple_func.lintegral_mono + theorem measure_theory.simple_func.lintegral_restrict + theorem measure_theory.simple_func.lintegral_smul + theorem measure_theory.simple_func.lintegral_sum + theorem measure_theory.simple_func.lintegral_zero + def measure_theory.simple_func.lintegralₗ +/- theorem measure_theory.simple_func.map_apply + theorem measure_theory.simple_func.map_coe_ennreal_restrict + theorem measure_theory.simple_func.map_coe_nnreal_restrict + theorem measure_theory.simple_func.map_const - theorem measure_theory.simple_func.map_integral + theorem measure_theory.simple_func.map_lintegral + theorem measure_theory.simple_func.map_restrict_of_zero + theorem measure_theory.simple_func.mem_image_of_mem_range_restrict +/- theorem measure_theory.simple_func.mem_range + theorem measure_theory.simple_func.mem_range_of_measure_ne_zero + theorem measure_theory.simple_func.mem_range_self +/- theorem measure_theory.simple_func.mem_restrict_range +/- theorem measure_theory.simple_func.mul_apply + theorem measure_theory.simple_func.mul_eq_map₂ + def measure_theory.simple_func.piecewise + theorem measure_theory.simple_func.piecewise_apply + theorem measure_theory.simple_func.piecewise_compl + theorem measure_theory.simple_func.piecewise_empty + theorem measure_theory.simple_func.piecewise_univ - theorem measure_theory.simple_func.preimage_measurable +/- theorem measure_theory.simple_func.range_const + theorem measure_theory.simple_func.range_zero +/- def measure_theory.simple_func.restrict +/- theorem measure_theory.simple_func.restrict_apply - theorem measure_theory.simple_func.restrict_const_integral + theorem measure_theory.simple_func.restrict_const_lintegral + theorem measure_theory.simple_func.restrict_empty - theorem measure_theory.simple_func.restrict_integral + theorem measure_theory.simple_func.restrict_lintegral + theorem measure_theory.simple_func.restrict_lintegral_eq_lintegral_restrict + theorem measure_theory.simple_func.restrict_mono + theorem measure_theory.simple_func.restrict_of_not_measurable - theorem measure_theory.simple_func.restrict_preimage' +/- theorem measure_theory.simple_func.restrict_preimage + theorem measure_theory.simple_func.restrict_preimage_singleton + theorem measure_theory.simple_func.restrict_univ +/- theorem measure_theory.simple_func.smul_eq_map +/- theorem measure_theory.simple_func.sup_apply + theorem measure_theory.simple_func.support_eq +/- theorem measure_theory.simple_func.supr_eapprox_apply - theorem measure_theory.simple_func.volume_bUnion_preimage - theorem measure_theory.simple_func.zero_integral + theorem measure_theory.simple_func.zero_lintegral - theorem measure_theory.volume_ge_le_lintegral_div + theorem measure_theory.with_density_apply Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.ae_eq_fun.integrable.add +/- theorem measure_theory.ae_eq_fun.integrable.neg +/- theorem measure_theory.ae_eq_fun.integrable.smul +/- theorem measure_theory.ae_eq_fun.integrable.sub +/- def measure_theory.ae_eq_fun.integrable + theorem measure_theory.ae_eq_fun.integrable_coe_fn - theorem measure_theory.ae_eq_fun.integrable_to_fun +/- theorem measure_theory.ae_eq_fun.integrable_zero +/- theorem measure_theory.all_ae_of_real_F_le_bound +/- theorem measure_theory.all_ae_of_real_f_le_bound +/- theorem measure_theory.all_ae_tendsto_of_real_norm + theorem measure_theory.integrable.add_meas + theorem measure_theory.integrable.congr + theorem measure_theory.integrable.left_of_add_meas +/- theorem measure_theory.integrable.max_zero +/- theorem measure_theory.integrable.min_zero + theorem measure_theory.integrable.mono + theorem measure_theory.integrable.mono_meas + theorem measure_theory.integrable.mono_set +/- theorem measure_theory.integrable.neg +/- theorem measure_theory.integrable.norm + theorem measure_theory.integrable.right_of_add_meas +/- theorem measure_theory.integrable.smul + theorem measure_theory.integrable.smul_meas + theorem measure_theory.integrable.union +/- def measure_theory.integrable + theorem measure_theory.integrable_congr - theorem measure_theory.integrable_congr_ae + theorem measure_theory.integrable_const +/- theorem measure_theory.integrable_iff_edist +/- theorem measure_theory.integrable_iff_norm +/- theorem measure_theory.integrable_iff_of_real +/- theorem measure_theory.integrable_neg_iff +/- theorem measure_theory.integrable_norm_iff - theorem measure_theory.integrable_of_ae_eq +/- theorem measure_theory.integrable_of_integrable_bound - theorem measure_theory.integrable_of_le - theorem measure_theory.integrable_of_le_ae +/- theorem measure_theory.integrable_zero +/- theorem measure_theory.l1.add_to_fun +/- theorem measure_theory.l1.coe_add + theorem measure_theory.l1.coe_coe +/- theorem measure_theory.l1.coe_neg +/- theorem measure_theory.l1.coe_pos_part +/- theorem measure_theory.l1.coe_smul +/- theorem measure_theory.l1.coe_sub +/- theorem measure_theory.l1.coe_zero +/- theorem measure_theory.l1.continuous_neg_part +/- theorem measure_theory.l1.continuous_pos_part +/- theorem measure_theory.l1.dist_eq +/- theorem measure_theory.l1.dist_to_fun +/- theorem measure_theory.l1.edist_eq +/- theorem measure_theory.l1.lintegral_edist_to_fun_lt_top +/- theorem measure_theory.l1.mk_to_fun +/- def measure_theory.l1.neg_part +/- theorem measure_theory.l1.neg_part_to_fun_eq_max +/- theorem measure_theory.l1.neg_part_to_fun_eq_min +/- theorem measure_theory.l1.neg_to_fun +/- theorem measure_theory.l1.norm_eq +/- theorem measure_theory.l1.norm_eq_nnnorm_to_fun +/- theorem measure_theory.l1.norm_eq_norm_to_fun +/- theorem measure_theory.l1.norm_le_norm_of_ae_le +/- def measure_theory.l1.of_fun +/- theorem measure_theory.l1.of_fun_eq_mk +/- theorem measure_theory.l1.of_fun_smul +/- theorem measure_theory.l1.of_fun_to_fun +/- def measure_theory.l1.pos_part +/- theorem measure_theory.l1.pos_part_to_fun +/- theorem measure_theory.l1.smul_to_fun +/- theorem measure_theory.l1.sub_to_fun +/- theorem measure_theory.l1.to_fun_of_fun +/- theorem measure_theory.l1.zero_to_fun +/- def measure_theory.l1 +/- theorem measure_theory.lintegral_nnnorm_zero Modified src/measure_theory/measurable_space.lean +/- theorem is_measurable.compl_iff +/- theorem is_measurable.empty + theorem is_measurable.inl_image + theorem is_measurable.insert + theorem is_measurable.subtype_image +/- theorem is_measurable.univ + theorem is_measurable_eq - theorem is_measurable_inl_image + theorem is_measurable_insert - theorem is_measurable_subtype_image - theorem measurable.if + theorem measurable.indicator + theorem measurable.piecewise - theorem measurable.preimage + theorem measurable.sum_rec +/- def measurable +/- theorem measurable_const + theorem measurable_fst +/- theorem measurable_id + theorem measurable_iff_comap_le + theorem measurable_iff_le_map +/- theorem measurable_inl +/- theorem measurable_inr + theorem measurable_one + theorem measurable_snd + theorem measurable_subtype_coe - theorem measurable_sum_rec - theorem measurable_zero + theorem set.finite.is_measurable Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.ae_eq_refl +/- theorem measure_theory.ae_eq_symm +/- theorem measure_theory.ae_eq_trans +/- theorem measure_theory.ae_iff + theorem measure_theory.ae_map_iff +/- theorem measure_theory.ae_of_all + theorem measure_theory.ae_restrict_eq + theorem measure_theory.coe_to_outer_measure + theorem measure_theory.dirac_ae_eq + theorem measure_theory.eventually_dirac + theorem measure_theory.eventually_eq_dirac' + theorem measure_theory.eventually_eq_dirac + theorem measure_theory.exists_is_measurable_superset_iff_measure_eq_zero + theorem measure_theory.le_to_measure_apply +/- theorem measure_theory.measure.add_apply + theorem measure_theory.measure.coe_add + theorem measure_theory.measure.coe_smul + theorem measure_theory.measure.coe_zero + def measure_theory.measure.cofinite + def measure_theory.measure.comap + theorem measure_theory.measure.comap_apply + theorem measure_theory.measure.count_apply + theorem measure_theory.measure.count_apply_finset + theorem measure_theory.measure.dirac_apply' + theorem measure_theory.measure.dirac_apply_of_mem + theorem measure_theory.measure.eq_zero_of_not_nonempty + theorem measure_theory.measure.eventually_cofinite +/- theorem measure_theory.measure.ext + theorem measure_theory.measure.le_lift_linear_apply + theorem measure_theory.measure.le_restrict_apply + def measure_theory.measure.lift_linear + theorem measure_theory.measure.lift_linear_apply + theorem measure_theory.measure.lt_iff' + theorem measure_theory.measure.lt_iff +/- def measure_theory.measure.map +/- theorem measure_theory.measure.map_apply + theorem measure_theory.measure.map_comap_subtype_coe + theorem measure_theory.measure.mem_cofinite + def measure_theory.measure.restrict + theorem measure_theory.measure.restrict_Union + theorem measure_theory.measure.restrict_Union_apply + theorem measure_theory.measure.restrict_Union_le + theorem measure_theory.measure.restrict_add + theorem measure_theory.measure.restrict_apply + theorem measure_theory.measure.restrict_apply_eq_zero' + theorem measure_theory.measure.restrict_apply_eq_zero + theorem measure_theory.measure.restrict_empty + theorem measure_theory.measure.restrict_mono + theorem measure_theory.measure.restrict_smul + theorem measure_theory.measure.restrict_sum + theorem measure_theory.measure.restrict_union + theorem measure_theory.measure.restrict_union_apply + theorem measure_theory.measure.restrict_union_le + theorem measure_theory.measure.restrict_univ + theorem measure_theory.measure.restrict_zero + def measure_theory.measure.restrictₗ + theorem measure_theory.measure.restrictₗ_apply - theorem measure_theory.measure.smul_apply + theorem measure_theory.measure.smul_to_outer_measure + theorem measure_theory.measure.sum_apply + theorem measure_theory.measure.sum_bool + theorem measure_theory.measure.to_outer_measure_injective - theorem measure_theory.measure.zero_apply +/- theorem measure_theory.measure.zero_to_outer_measure + theorem measure_theory.measure_bUnion_finset_le + theorem measure_theory.measure_bUnion_le + theorem measure_theory.measure_congr + theorem measure_theory.measure_diff_of_ae_imp + theorem measure_theory.measure_le_of_ae_imp +/- theorem measure_theory.measure_zero_iff_ae_nmem +/- theorem measure_theory.mem_ae_iff + theorem measure_theory.mem_ae_map_iff + theorem measure_theory.mem_dirac_ae_iff + theorem measure_theory.nonempty_of_measure_ne_zero +/- theorem measure_theory.outer_measure.trim_eq_infi' +/- theorem measure_theory.outer_measure.trim_smul + theorem measure_theory.sum_measure_preimage_singleton +/- theorem measure_theory.to_measure_to_outer_measure +/- theorem measure_theory.to_outer_measure_apply +/- theorem measure_theory.to_outer_measure_to_measure + theorem measure_theory.tsum_measure_preimage_singleton Modified src/measure_theory/outer_measure.lean +/- theorem measure_theory.outer_measure.add_apply + theorem measure_theory.outer_measure.coe_add + theorem measure_theory.outer_measure.coe_fn_injective + theorem measure_theory.outer_measure.coe_smul + theorem measure_theory.outer_measure.coe_zero + def measure_theory.outer_measure.comap + theorem measure_theory.outer_measure.comap_apply +/- theorem measure_theory.outer_measure.ext +/- def measure_theory.outer_measure.map +/- theorem measure_theory.outer_measure.measure_of_eq_coe + def measure_theory.outer_measure.restrict + theorem measure_theory.outer_measure.restrict_apply +/- theorem measure_theory.outer_measure.smul_apply - theorem measure_theory.outer_measure.zero_apply Modified src/measure_theory/set_integral.lean - theorem integrable_on.add - theorem integrable_on.divide - theorem integrable_on.mul_left - theorem integrable_on.mul_right - theorem integrable_on.neg - theorem integrable_on.smul - theorem integrable_on.sub - theorem integrable_on.subset - theorem integrable_on.union - def integrable_on - theorem integrable_on_congr - theorem integrable_on_congr_ae - theorem integrable_on_empty - theorem integrable_on_norm_iff - theorem integral_on_Union - theorem integral_on_add - theorem integral_on_congr - theorem integral_on_congr_of_ae_eq - theorem integral_on_congr_of_set - theorem integral_on_div - theorem integral_on_le_integral_on - theorem integral_on_le_integral_on_ae - theorem integral_on_mul_left - theorem integral_on_mul_right - theorem integral_on_neg - theorem integral_on_non_integrable - theorem integral_on_non_measurable - theorem integral_on_nonneg - theorem integral_on_nonneg_of_ae - theorem integral_on_nonpos - theorem integral_on_nonpos_of_ae - theorem integral_on_smul - theorem integral_on_sub - theorem integral_on_undef - theorem integral_on_union - theorem integral_on_union_ae - theorem integral_on_zero - theorem is_measurable.inter_preimage - theorem measurable.measurable_on - theorem measurable.measurable_on_univ - theorem measurable_on.subset - theorem measurable_on.union - def measurable_on - theorem measurable_on_empty - theorem measurable_on_singleton - theorem measure_theory.integrable.integrable_on - theorem tendsto_integral_on_of_antimono - theorem tendsto_integral_on_of_monotone Modified src/measure_theory/simple_func_dense.lean +/- theorem measure_theory.simple_func_sequence_tendsto' Modified src/order/complete_lattice.lean +/- theorem infi_eq_bot Modified src/order/filter/basic.lean + theorem filter.eventually_eq.prod_mk + theorem filter.eventually_inf_principal +/- theorem filter.mem_inf_principal Modified src/order/filter/germ.lean + theorem filter.germ.map₂_coe Modified src/topology/algebra/infinite_sum.lean + theorem tsum_subtype Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_injective' + theorem continuous_linear_map.coe_injective + theorem continuous_linear_map.coe_mk' + theorem continuous_linear_map.coe_mk Modified src/topology/algebra/uniform_ring.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean - theorem dense_inducing.extend_e_eq +/- theorem dense_inducing.extend_eq + theorem dense_inducing.extend_eq_at - theorem dense_inducing.extend_eq_of_cont + theorem dense_inducing.extend_eq_of_tendsto + theorem dense_inducing.extend_unique + theorem dense_inducing.extend_unique_at Modified src/topology/stone_cech.lean Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/uniform_embedding.lean + theorem uniformly_extend_unique 2020-07-17 05:45:27 819bd86 feat(tactic/squeeze_*): add `squeeze_dsimp` (#3386) ESTIMATED CHANGES Modified src/tactic/squeeze.lean 2020-07-17 03:52:34 9d74f9b chore(data/polynomial): reduce imports (#3419) Now that @jalex-stark has split up `data.polynomial` into submodules, this PR minimises imports. ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean Modified src/algebra/polynomial/basic.lean Modified src/analysis/calculus/deriv.lean Modified src/data/mv_polynomial.lean Modified src/data/padics/hensel.lean Modified src/data/polynomial/identities.lean Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/separable.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/eisenstein_criterion.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/ring_theory/power_series.lean Modified src/topology/algebra/polynomial.lean 2020-07-17 00:03:26 f1b687c feat (order/order_iso): lemmas about order_isos on lattices (#3397) shows that `order_embedding`s and `order_iso`s respect `lattice` operations ESTIMATED CHANGES Modified src/order/order_iso.lean + theorem order_embedding.le_map_sup + theorem order_embedding.map_inf_le + theorem order_iso.map_bot + theorem order_iso.map_inf + theorem order_iso.map_sup + theorem order_iso.map_top 2020-07-16 19:13:26 33d45bf chore(data/polynomial): break up behemoth file (#3407) Polynomial refactor The goal is to split `data/polynomial.lean` into several self-contained files in the same place. For the time being, the new place for all these files is `data/polynomial/`. Future PRs may simplify proofs, remove duplicate lemmas, and move files out of the `data` directory. ESTIMATED CHANGES Deleted src/data/polynomial.lean - theorem is_integral_domain.polynomial - def polynomial.C - theorem polynomial.C_0 - theorem polynomial.C_1 - theorem polynomial.C_add - theorem polynomial.C_bit0 - theorem polynomial.C_bit1 - theorem polynomial.C_comp - theorem polynomial.C_eq_algebra_map - theorem polynomial.C_eq_int_cast - theorem polynomial.C_eq_nat_cast - theorem polynomial.C_inj - theorem polynomial.C_mul' - theorem polynomial.C_mul - theorem polynomial.C_neg - theorem polynomial.C_pow - theorem polynomial.C_sub - def polynomial.X - theorem polynomial.X_comp - theorem polynomial.X_dvd_iff - theorem polynomial.X_mul - theorem polynomial.X_ne_zero - theorem polynomial.X_pow_mul - theorem polynomial.X_pow_mul_assoc - theorem polynomial.X_pow_sub_C_ne_zero - theorem polynomial.X_sub_C_ne_zero - theorem polynomial.add_comp - def polynomial.aeval - theorem polynomial.aeval_C - theorem polynomial.aeval_X - theorem polynomial.aeval_alg_hom - theorem polynomial.aeval_alg_hom_apply - theorem polynomial.aeval_def - theorem polynomial.alg_hom_eval₂_algebra_map - theorem polynomial.algebra_map_apply - theorem polynomial.apply_eq_coeff - theorem polynomial.as_sum - def polynomial.binom_expansion - theorem polynomial.card_nth_roots - theorem polynomial.card_roots' - theorem polynomial.card_roots - theorem polynomial.card_roots_X_pow_sub_C - theorem polynomial.card_roots_sub_C' - theorem polynomial.card_roots_sub_C - theorem polynomial.coe_eval₂_ring_hom - theorem polynomial.coe_norm_unit - def polynomial.coeff - theorem polynomial.coeff_C - theorem polynomial.coeff_C_mul - theorem polynomial.coeff_C_mul_X - theorem polynomial.coeff_C_zero - theorem polynomial.coeff_X - theorem polynomial.coeff_X_one - theorem polynomial.coeff_X_pow - theorem polynomial.coeff_X_zero - theorem polynomial.coeff_add - def polynomial.coeff_coe_to_fun - theorem polynomial.coeff_coe_units_zero_ne_zero - theorem polynomial.coeff_comp_degree_mul_degree - theorem polynomial.coeff_derivative - theorem polynomial.coeff_eq_zero_of_degree_lt - theorem polynomial.coeff_eq_zero_of_nat_degree_lt - theorem polynomial.coeff_inv_units - theorem polynomial.coeff_map - theorem polynomial.coeff_mk - theorem polynomial.coeff_monomial_mul - theorem polynomial.coeff_monomial_zero_mul - theorem polynomial.coeff_mul - theorem polynomial.coeff_mul_C - theorem polynomial.coeff_mul_X - theorem polynomial.coeff_mul_X_pow - theorem polynomial.coeff_mul_X_sub_C - theorem polynomial.coeff_mul_X_zero - theorem polynomial.coeff_mul_degree_add_degree - theorem polynomial.coeff_mul_monomial - theorem polynomial.coeff_mul_monomial_zero - theorem polynomial.coeff_nat_degree_eq_zero_of_degree_lt - theorem polynomial.coeff_nat_degree_succ_eq_zero - theorem polynomial.coeff_ne_zero_of_eq_degree - theorem polynomial.coeff_neg - theorem polynomial.coeff_one - theorem polynomial.coeff_one_zero - theorem polynomial.coeff_single - theorem polynomial.coeff_smul - theorem polynomial.coeff_sub - theorem polynomial.coeff_sum - theorem polynomial.coeff_zero - theorem polynomial.coeff_zero_eq_eval_zero - def polynomial.comp - theorem polynomial.comp_C - theorem polynomial.comp_X - theorem polynomial.comp_one - theorem polynomial.comp_zero - def polynomial.decidable_dvd_monic - def polynomial.degree - theorem polynomial.degree_C - theorem polynomial.degree_C_le - theorem polynomial.degree_C_mul_X_pow_le - theorem polynomial.degree_X - theorem polynomial.degree_X_le - theorem polynomial.degree_X_pow - theorem polynomial.degree_X_pow_le - theorem polynomial.degree_X_pow_sub_C - theorem polynomial.degree_X_sub_C - theorem polynomial.degree_add_C - theorem polynomial.degree_add_div - theorem polynomial.degree_add_div_by_monic - theorem polynomial.degree_add_eq_of_degree_lt - theorem polynomial.degree_add_eq_of_leading_coeff_add_ne_zero - theorem polynomial.degree_add_le - theorem polynomial.degree_coe_units - theorem polynomial.degree_derivative_eq - theorem polynomial.degree_derivative_le - theorem polynomial.degree_derivative_lt - theorem polynomial.degree_div_X_lt - theorem polynomial.degree_div_by_monic_le - theorem polynomial.degree_div_by_monic_lt - theorem polynomial.degree_div_le - theorem polynomial.degree_div_lt - theorem polynomial.degree_eq_bot - theorem polynomial.degree_eq_degree_of_associated - theorem polynomial.degree_eq_iff_nat_degree_eq - theorem polynomial.degree_eq_iff_nat_degree_eq_of_pos - theorem polynomial.degree_eq_nat_degree - theorem polynomial.degree_eq_one_of_irreducible_of_root - theorem polynomial.degree_eq_zero_of_is_unit - theorem polynomial.degree_erase_le - theorem polynomial.degree_erase_lt - theorem polynomial.degree_le_degree - theorem polynomial.degree_le_iff_coeff_zero - theorem polynomial.degree_le_mul_left - theorem polynomial.degree_le_nat_degree - theorem polynomial.degree_le_zero_iff - theorem polynomial.degree_lt_degree_mul_X - theorem polynomial.degree_lt_wf - theorem polynomial.degree_map' - theorem polynomial.degree_map - theorem polynomial.degree_map_eq_of_injective - theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero - theorem polynomial.degree_map_le - theorem polynomial.degree_mod_by_monic_le - theorem polynomial.degree_mod_by_monic_lt - theorem polynomial.degree_monomial - theorem polynomial.degree_monomial_le - theorem polynomial.degree_mul_eq' - theorem polynomial.degree_mul_eq - theorem polynomial.degree_mul_le - theorem polynomial.degree_mul_leading_coeff_inv - theorem polynomial.degree_ne_of_nat_degree_ne - theorem polynomial.degree_neg - theorem polynomial.degree_nonneg_iff_ne_zero - theorem polynomial.degree_normalize - theorem polynomial.degree_one - theorem polynomial.degree_one_le - theorem polynomial.degree_pos_induction_on - theorem polynomial.degree_pos_of_aeval_root - theorem polynomial.degree_pos_of_eval₂_root - theorem polynomial.degree_pos_of_ne_zero_of_nonunit - theorem polynomial.degree_pos_of_root - theorem polynomial.degree_pow_eq' - theorem polynomial.degree_pow_eq - theorem polynomial.degree_pow_le - theorem polynomial.degree_sub_le - theorem polynomial.degree_sub_lt - theorem polynomial.degree_sum_le - theorem polynomial.degree_zero - def polynomial.derivative - theorem polynomial.derivative_C - theorem polynomial.derivative_X - theorem polynomial.derivative_add - theorem polynomial.derivative_eval - theorem polynomial.derivative_eval₂_C - def polynomial.derivative_hom - def polynomial.derivative_lhom - theorem polynomial.derivative_map - theorem polynomial.derivative_monomial - theorem polynomial.derivative_mul - theorem polynomial.derivative_neg - theorem polynomial.derivative_one - theorem polynomial.derivative_pow - theorem polynomial.derivative_pow_succ - theorem polynomial.derivative_smul - theorem polynomial.derivative_sub - theorem polynomial.derivative_sum - theorem polynomial.derivative_zero - def polynomial.div - def polynomial.div_X - theorem polynomial.div_X_C - theorem polynomial.div_X_add - theorem polynomial.div_X_eq_zero_iff - theorem polynomial.div_X_mul_X_add - def polynomial.div_by_monic - theorem polynomial.div_by_monic_eq_div - theorem polynomial.div_by_monic_eq_of_not_monic - theorem polynomial.div_by_monic_eq_zero_iff - theorem polynomial.div_by_monic_mul_pow_root_multiplicity_eq - theorem polynomial.div_by_monic_one - theorem polynomial.div_by_monic_zero - theorem polynomial.div_def - theorem polynomial.div_eq_zero_iff - theorem polynomial.div_mod_by_monic_unique - theorem polynomial.div_wf_lemma - theorem polynomial.dvd_iff_is_root - theorem polynomial.dvd_iff_mod_by_monic_eq_zero - theorem polynomial.dvd_term_of_dvd_eval_of_dvd_terms - theorem polynomial.dvd_term_of_is_root_of_dvd_terms - theorem polynomial.eq_C_of_degree_eq_zero - theorem polynomial.eq_C_of_degree_le_zero - theorem polynomial.eq_C_of_nat_degree_le_zero - theorem polynomial.eq_X_add_C_of_degree_eq_one - theorem polynomial.eq_X_add_C_of_degree_le_one - theorem polynomial.eq_one_of_is_unit_of_monic - theorem polynomial.eq_zero_of_eq_zero - def polynomial.eval - theorem polynomial.eval_C - theorem polynomial.eval_X - theorem polynomial.eval_add - theorem polynomial.eval_bit0 - theorem polynomial.eval_bit1 - theorem polynomial.eval_comp - theorem polynomial.eval_div_by_monic_pow_root_multiplicity_ne_zero - theorem polynomial.eval_int_cast - theorem polynomial.eval_map - theorem polynomial.eval_monomial - theorem polynomial.eval_mul - theorem polynomial.eval_mul_X_sub_C - theorem polynomial.eval_nat_cast - theorem polynomial.eval_neg - theorem polynomial.eval_one - theorem polynomial.eval_pow - theorem polynomial.eval_smul - theorem polynomial.eval_sub - def polynomial.eval_sub_factor - theorem polynomial.eval_sum - theorem polynomial.eval_unique - theorem polynomial.eval_zero - def polynomial.eval₂ - theorem polynomial.eval₂_C - theorem polynomial.eval₂_X - theorem polynomial.eval₂_X_pow - theorem polynomial.eval₂_add - theorem polynomial.eval₂_algebra_map_X - theorem polynomial.eval₂_algebra_map_int_X - theorem polynomial.eval₂_bit0 - theorem polynomial.eval₂_bit1 - theorem polynomial.eval₂_comp - theorem polynomial.eval₂_eq_eval_map - theorem polynomial.eval₂_hom - theorem polynomial.eval₂_map - theorem polynomial.eval₂_monomial - theorem polynomial.eval₂_mul - theorem polynomial.eval₂_nat_cast - theorem polynomial.eval₂_neg - theorem polynomial.eval₂_one - theorem polynomial.eval₂_pow - def polynomial.eval₂_ring_hom - theorem polynomial.eval₂_smul - theorem polynomial.eval₂_sub - theorem polynomial.eval₂_sum - theorem polynomial.eval₂_zero - theorem polynomial.exists_finset_roots - theorem polynomial.exists_root_of_degree_eq_one - theorem polynomial.ext - theorem polynomial.ext_iff - theorem polynomial.finset_sum_coeff - theorem polynomial.hom_eval₂ - theorem polynomial.integral_normalization_aeval_eq_zero - theorem polynomial.integral_normalization_coeff_degree - theorem polynomial.integral_normalization_coeff_nat_degree - theorem polynomial.integral_normalization_coeff_ne_degree - theorem polynomial.integral_normalization_coeff_ne_nat_degree - theorem polynomial.integral_normalization_eval₂_eq_zero - theorem polynomial.irreducible_X - theorem polynomial.irreducible_X_sub_C - theorem polynomial.irreducible_of_degree_eq_one - theorem polynomial.irreducible_of_degree_eq_one_of_monic - theorem polynomial.is_coprime_of_is_root_of_eval_derivative_ne_zero - theorem polynomial.is_root.def - def polynomial.is_root - theorem polynomial.is_root_of_aeval_algebra_map_eq_zero - theorem polynomial.is_root_of_eval₂_map_eq_zero - theorem polynomial.is_unit_C - theorem polynomial.is_unit_iff - theorem polynomial.is_unit_iff_degree_eq_zero - theorem polynomial.ite_le_nat_degree_coeff - def polynomial.lcoeff - theorem polynomial.lcoeff_apply - theorem polynomial.le_degree_of_ne_zero - theorem polynomial.le_nat_degree_of_ne_zero - def polynomial.leading_coeff - theorem polynomial.leading_coeff_C - theorem polynomial.leading_coeff_X - theorem polynomial.leading_coeff_X_pow - theorem polynomial.leading_coeff_add_of_degree_eq - theorem polynomial.leading_coeff_add_of_degree_lt - theorem polynomial.leading_coeff_comp - theorem polynomial.leading_coeff_eq_zero - theorem polynomial.leading_coeff_eq_zero_iff_deg_eq_bot - theorem polynomial.leading_coeff_map - theorem polynomial.leading_coeff_monomial - theorem polynomial.leading_coeff_mul' - theorem polynomial.leading_coeff_mul - theorem polynomial.leading_coeff_mul_X_pow - theorem polynomial.leading_coeff_of_injective - theorem polynomial.leading_coeff_one - theorem polynomial.leading_coeff_pow' - theorem polynomial.leading_coeff_pow - theorem polynomial.leading_coeff_zero - def polynomial.map - theorem polynomial.map_C - theorem polynomial.map_X - theorem polynomial.map_add - theorem polynomial.map_div - theorem polynomial.map_div_by_monic - theorem polynomial.map_eq_zero - theorem polynomial.map_id - theorem polynomial.map_injective - theorem polynomial.map_map - theorem polynomial.map_mod - theorem polynomial.map_mod_by_monic - theorem polynomial.map_mod_div_by_monic - theorem polynomial.map_monomial - theorem polynomial.map_mul - theorem polynomial.map_nat_cast - theorem polynomial.map_neg - theorem polynomial.map_one - theorem polynomial.map_pow - theorem polynomial.map_sub - theorem polynomial.map_zero - theorem polynomial.mem_map_range - theorem polynomial.mem_nth_roots - theorem polynomial.mem_roots - theorem polynomial.mem_roots_sub_C - theorem polynomial.mem_support_derivative - def polynomial.mod - theorem polynomial.mod_X_sub_C_eq_C_eval - def polynomial.mod_by_monic - theorem polynomial.mod_by_monic_X - theorem polynomial.mod_by_monic_X_sub_C_eq_C_eval - theorem polynomial.mod_by_monic_add_div - theorem polynomial.mod_by_monic_eq_mod - theorem polynomial.mod_by_monic_eq_of_not_monic - theorem polynomial.mod_by_monic_eq_self_iff - theorem polynomial.mod_by_monic_eq_sub_mul_div - theorem polynomial.mod_by_monic_one - theorem polynomial.mod_by_monic_zero - theorem polynomial.mod_def - theorem polynomial.mod_eq_self_iff - theorem polynomial.monic.as_sum - theorem polynomial.monic.def - theorem polynomial.monic.leading_coeff - theorem polynomial.monic.ne_zero - theorem polynomial.monic.ne_zero_of_zero_ne_one - def polynomial.monic - theorem polynomial.monic_X - theorem polynomial.monic_X_add_C - theorem polynomial.monic_X_pow_add - theorem polynomial.monic_X_pow_sub - theorem polynomial.monic_X_sub_C - theorem polynomial.monic_integral_normalization - theorem polynomial.monic_map - theorem polynomial.monic_mul - theorem polynomial.monic_mul_leading_coeff_inv - theorem polynomial.monic_normalize - theorem polynomial.monic_of_degree_le - theorem polynomial.monic_of_injective - theorem polynomial.monic_one - theorem polynomial.monic_pow - def polynomial.monomial - theorem polynomial.monomial_add - theorem polynomial.monomial_eq_smul_X - theorem polynomial.monomial_one_eq_X_pow - theorem polynomial.monomial_zero_left - theorem polynomial.monomial_zero_right - theorem polynomial.mul_X_pow_eq_zero - theorem polynomial.mul_coeff_zero - theorem polynomial.mul_comp - theorem polynomial.mul_div_by_monic_eq_iff_is_root - theorem polynomial.mul_div_eq_iff_is_root - theorem polynomial.multiplicity_X_sub_C_finite - theorem polynomial.multiplicity_finite_of_degree_pos_of_monic - def polynomial.nat_degree - theorem polynomial.nat_degree_C - theorem polynomial.nat_degree_X - theorem polynomial.nat_degree_X_le - theorem polynomial.nat_degree_X_pow_sub_C - theorem polynomial.nat_degree_X_sub_C - theorem polynomial.nat_degree_X_sub_C_le - theorem polynomial.nat_degree_coe_units - theorem polynomial.nat_degree_comp - theorem polynomial.nat_degree_comp_le - theorem polynomial.nat_degree_derivative_lt - theorem polynomial.nat_degree_div_by_monic - theorem polynomial.nat_degree_eq_of_degree_eq - theorem polynomial.nat_degree_eq_of_degree_eq_some - theorem polynomial.nat_degree_eq_zero_iff_degree_le_zero - theorem polynomial.nat_degree_int_cast - theorem polynomial.nat_degree_le_nat_degree - theorem polynomial.nat_degree_le_of_degree_le - theorem polynomial.nat_degree_le_of_dvd - theorem polynomial.nat_degree_map' - theorem polynomial.nat_degree_map - theorem polynomial.nat_degree_mul_eq' - theorem polynomial.nat_degree_mul_eq - theorem polynomial.nat_degree_mul_le - theorem polynomial.nat_degree_nat_cast - theorem polynomial.nat_degree_neg - theorem polynomial.nat_degree_one - theorem polynomial.nat_degree_pos_iff_degree_pos - theorem polynomial.nat_degree_pos_of_aeval_root - theorem polynomial.nat_degree_pos_of_eval₂_root - theorem polynomial.nat_degree_pow_eq' - theorem polynomial.nat_degree_pow_eq - theorem polynomial.nat_degree_zero - theorem polynomial.ne_zero_of_degree_gt - theorem polynomial.ne_zero_of_monic - theorem polynomial.ne_zero_of_monic_of_zero_ne_one - theorem polynomial.ne_zero_of_ne_zero_of_monic - theorem polynomial.nonzero.of_polynomial_ne - theorem polynomial.not_is_unit_X - theorem polynomial.not_is_unit_X_sub_C - theorem polynomial.not_monic_zero - def polynomial.nth_roots - theorem polynomial.of_mem_support_derivative - theorem polynomial.one_comp - theorem polynomial.pairwise_coprime_X_sub - def polynomial.pow_add_expansion - theorem polynomial.pow_root_multiplicity_dvd - def polynomial.pow_sub_pow_factor - theorem polynomial.prime_X - theorem polynomial.prime_X_sub_C - theorem polynomial.prime_of_degree_eq_one - theorem polynomial.prime_of_degree_eq_one_of_monic - theorem polynomial.ring_hom_eval₂_algebra_map_int - theorem polynomial.root_X_sub_C - theorem polynomial.root_mul - theorem polynomial.root_mul_left_of_is_root - theorem polynomial.root_mul_right_of_is_root - def polynomial.root_multiplicity - theorem polynomial.root_multiplicity_eq_multiplicity - theorem polynomial.root_or_root_of_root_mul - theorem polynomial.roots_X_sub_C - theorem polynomial.roots_mul - theorem polynomial.single_eq_C_mul_X - theorem polynomial.subsingleton_of_monic_zero - theorem polynomial.sum_C_index - theorem polynomial.sum_C_mul_X_eq - theorem polynomial.sum_monomial_eq - theorem polynomial.sum_over_range' - theorem polynomial.sum_over_range - theorem polynomial.support_integral_normalization - theorem polynomial.support_zero - theorem polynomial.zero_comp - theorem polynomial.zero_div_by_monic - theorem polynomial.zero_is_root_of_coeff_zero_eq_zero - theorem polynomial.zero_le_degree_iff - theorem polynomial.zero_mod_by_monic - def polynomial Added src/data/polynomial/algebra_map.lean + theorem polynomial.C_eq_algebra_map + theorem polynomial.C_inj + theorem polynomial.C_mul' + def polynomial.aeval + theorem polynomial.aeval_C + theorem polynomial.aeval_X + theorem polynomial.aeval_alg_hom + theorem polynomial.aeval_alg_hom_apply + theorem polynomial.aeval_def + theorem polynomial.alg_hom_eval₂_algebra_map + theorem polynomial.algebra_map_apply + theorem polynomial.dvd_term_of_dvd_eval_of_dvd_terms + theorem polynomial.dvd_term_of_is_root_of_dvd_terms + theorem polynomial.eval_comp + theorem polynomial.eval_mul + theorem polynomial.eval_mul_X_sub_C + theorem polynomial.eval_pow + theorem polynomial.eval_unique + theorem polynomial.eval₂_algebra_map_X + theorem polynomial.eval₂_algebra_map_int_X + theorem polynomial.eval₂_comp + theorem polynomial.eval₂_hom + theorem polynomial.is_root_of_aeval_algebra_map_eq_zero + theorem polynomial.is_root_of_eval₂_map_eq_zero + theorem polynomial.mul_comp + theorem polynomial.not_is_unit_X_sub_C + theorem polynomial.ring_hom_eval₂_algebra_map_int + theorem polynomial.root_mul_left_of_is_root + theorem polynomial.root_mul_right_of_is_root Added src/data/polynomial/basic.lean + def polynomial.X + theorem polynomial.X_mul + theorem polynomial.X_pow_mul + theorem polynomial.X_pow_mul_assoc + theorem polynomial.apply_eq_coeff + def polynomial.coeff + def polynomial.coeff_coe_to_fun + theorem polynomial.coeff_mk + theorem polynomial.coeff_neg + theorem polynomial.coeff_one_zero + theorem polynomial.coeff_single + theorem polynomial.coeff_sub + theorem polynomial.coeff_zero + theorem polynomial.eq_zero_of_eq_zero + theorem polynomial.ext + theorem polynomial.ext_iff + def polynomial.monomial + theorem polynomial.monomial_add + theorem polynomial.monomial_zero_right + theorem polynomial.support_zero + def polynomial Added src/data/polynomial/coeff.lean + theorem polynomial.coeff_C_mul + theorem polynomial.coeff_C_mul_X + theorem polynomial.coeff_X_pow + theorem polynomial.coeff_add + theorem polynomial.coeff_mul + theorem polynomial.coeff_mul_C + theorem polynomial.coeff_mul_X + theorem polynomial.coeff_mul_X_pow + theorem polynomial.coeff_mul_X_zero + theorem polynomial.coeff_one + theorem polynomial.coeff_smul + theorem polynomial.coeff_sum + def polynomial.lcoeff + theorem polynomial.lcoeff_apply + theorem polynomial.monomial_eq_smul_X + theorem polynomial.monomial_one_eq_X_pow + theorem polynomial.mul_X_pow_eq_zero + theorem polynomial.mul_coeff_zero Added src/data/polynomial/default.lean Added src/data/polynomial/degree.lean + theorem polynomial.X_pow_sub_C_ne_zero + theorem polynomial.X_sub_C_ne_zero + theorem polynomial.coeff_mul_degree_add_degree + theorem polynomial.coeff_nat_degree_eq_zero_of_degree_lt + theorem polynomial.degree_X_pow + theorem polynomial.degree_X_pow_sub_C + theorem polynomial.degree_X_sub_C + theorem polynomial.degree_add_C + theorem polynomial.degree_add_eq_of_degree_lt + theorem polynomial.degree_add_eq_of_leading_coeff_add_ne_zero + theorem polynomial.degree_add_le + theorem polynomial.degree_erase_le + theorem polynomial.degree_erase_lt + theorem polynomial.degree_le_iff_coeff_zero + theorem polynomial.degree_le_zero_iff + theorem polynomial.degree_lt_degree_mul_X + theorem polynomial.degree_map' + theorem polynomial.degree_map_eq_of_injective + theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero + theorem polynomial.degree_map_le + theorem polynomial.degree_mul_eq' + theorem polynomial.degree_mul_le + theorem polynomial.degree_nonneg_iff_ne_zero + theorem polynomial.degree_pos_of_eval₂_root + theorem polynomial.degree_pos_of_root + theorem polynomial.degree_pow_eq' + theorem polynomial.degree_pow_le + theorem polynomial.degree_sub_le + theorem polynomial.degree_sub_lt + theorem polynomial.degree_sum_le + theorem polynomial.eq_C_of_degree_eq_zero + theorem polynomial.eq_C_of_degree_le_zero + theorem polynomial.eq_C_of_nat_degree_le_zero + theorem polynomial.leading_coeff_C + theorem polynomial.leading_coeff_X + theorem polynomial.leading_coeff_X_pow + theorem polynomial.leading_coeff_add_of_degree_eq + theorem polynomial.leading_coeff_add_of_degree_lt + theorem polynomial.leading_coeff_eq_zero + theorem polynomial.leading_coeff_eq_zero_iff_deg_eq_bot + theorem polynomial.leading_coeff_monomial + theorem polynomial.leading_coeff_mul' + theorem polynomial.leading_coeff_mul_X_pow + theorem polynomial.leading_coeff_one + theorem polynomial.leading_coeff_pow' + theorem polynomial.leading_coeff_zero + theorem polynomial.monic.ne_zero + theorem polynomial.monic.ne_zero_of_zero_ne_one + theorem polynomial.monic_X + theorem polynomial.monic_one + theorem polynomial.nat_degree_X_pow_sub_C + theorem polynomial.nat_degree_X_sub_C + theorem polynomial.nat_degree_X_sub_C_le + theorem polynomial.nat_degree_comp_le + theorem polynomial.nat_degree_eq_zero_iff_degree_le_zero + theorem polynomial.nat_degree_map' + theorem polynomial.nat_degree_mul_eq' + theorem polynomial.nat_degree_mul_le + theorem polynomial.nat_degree_pos_iff_degree_pos + theorem polynomial.nat_degree_pos_of_eval₂_root + theorem polynomial.nat_degree_pow_eq' + theorem polynomial.ne_zero_of_degree_gt + theorem polynomial.not_is_unit_X + theorem polynomial.subsingleton_of_monic_zero + theorem polynomial.zero_le_degree_iff Added src/data/polynomial/degree/basic.lean + theorem polynomial.C_eq_int_cast + theorem polynomial.coeff_eq_zero_of_degree_lt + theorem polynomial.coeff_eq_zero_of_nat_degree_lt + theorem polynomial.coeff_mul_X_sub_C + theorem polynomial.coeff_nat_degree_succ_eq_zero + theorem polynomial.coeff_ne_zero_of_eq_degree + def polynomial.degree + theorem polynomial.degree_C + theorem polynomial.degree_C_le + theorem polynomial.degree_C_mul_X_pow_le + theorem polynomial.degree_X + theorem polynomial.degree_X_le + theorem polynomial.degree_X_pow_le + theorem polynomial.degree_eq_bot + theorem polynomial.degree_eq_iff_nat_degree_eq + theorem polynomial.degree_eq_iff_nat_degree_eq_of_pos + theorem polynomial.degree_eq_nat_degree + theorem polynomial.degree_le_degree + theorem polynomial.degree_le_nat_degree + theorem polynomial.degree_lt_wf + theorem polynomial.degree_monomial + theorem polynomial.degree_monomial_le + theorem polynomial.degree_ne_of_nat_degree_ne + theorem polynomial.degree_neg + theorem polynomial.degree_one + theorem polynomial.degree_one_le + theorem polynomial.degree_zero + theorem polynomial.eq_X_add_C_of_degree_eq_one + theorem polynomial.eq_X_add_C_of_degree_le_one + theorem polynomial.ite_le_nat_degree_coeff + theorem polynomial.le_degree_of_ne_zero + theorem polynomial.le_nat_degree_of_ne_zero + def polynomial.leading_coeff + theorem polynomial.monic.def + theorem polynomial.monic.leading_coeff + def polynomial.monic + def polynomial.nat_degree + theorem polynomial.nat_degree_C + theorem polynomial.nat_degree_X + theorem polynomial.nat_degree_X_le + theorem polynomial.nat_degree_eq_of_degree_eq + theorem polynomial.nat_degree_eq_of_degree_eq_some + theorem polynomial.nat_degree_int_cast + theorem polynomial.nat_degree_le_nat_degree + theorem polynomial.nat_degree_le_of_degree_le + theorem polynomial.nat_degree_nat_cast + theorem polynomial.nat_degree_neg + theorem polynomial.nat_degree_one + theorem polynomial.nat_degree_zero Added src/data/polynomial/derivative.lean + theorem polynomial.coeff_derivative + theorem polynomial.degree_derivative_eq + theorem polynomial.degree_derivative_le + theorem polynomial.degree_derivative_lt + def polynomial.derivative + theorem polynomial.derivative_C + theorem polynomial.derivative_X + theorem polynomial.derivative_add + theorem polynomial.derivative_eval + theorem polynomial.derivative_eval₂_C + def polynomial.derivative_hom + def polynomial.derivative_lhom + theorem polynomial.derivative_map + theorem polynomial.derivative_monomial + theorem polynomial.derivative_mul + theorem polynomial.derivative_neg + theorem polynomial.derivative_one + theorem polynomial.derivative_pow + theorem polynomial.derivative_pow_succ + theorem polynomial.derivative_smul + theorem polynomial.derivative_sub + theorem polynomial.derivative_sum + theorem polynomial.derivative_zero + theorem polynomial.is_coprime_of_is_root_of_eval_derivative_ne_zero + theorem polynomial.mem_support_derivative + theorem polynomial.nat_degree_derivative_lt + theorem polynomial.of_mem_support_derivative Added src/data/polynomial/div.lean + theorem polynomial.X_dvd_iff + def polynomial.decidable_dvd_monic + theorem polynomial.degree_add_div_by_monic + theorem polynomial.degree_div_X_lt + theorem polynomial.degree_div_by_monic_le + theorem polynomial.degree_div_by_monic_lt + theorem polynomial.degree_mod_by_monic_le + theorem polynomial.degree_mod_by_monic_lt + theorem polynomial.degree_pos_induction_on + def polynomial.div_X + theorem polynomial.div_X_C + theorem polynomial.div_X_add + theorem polynomial.div_X_eq_zero_iff + theorem polynomial.div_X_mul_X_add + def polynomial.div_by_monic + theorem polynomial.div_by_monic_eq_of_not_monic + theorem polynomial.div_by_monic_eq_zero_iff + theorem polynomial.div_by_monic_mul_pow_root_multiplicity_eq + theorem polynomial.div_by_monic_one + theorem polynomial.div_by_monic_zero + theorem polynomial.div_mod_by_monic_unique + theorem polynomial.div_wf_lemma + theorem polynomial.dvd_iff_is_root + theorem polynomial.dvd_iff_mod_by_monic_eq_zero + theorem polynomial.eval_div_by_monic_pow_root_multiplicity_ne_zero + theorem polynomial.map_div_by_monic + theorem polynomial.map_mod_by_monic + theorem polynomial.map_mod_div_by_monic + def polynomial.mod_by_monic + theorem polynomial.mod_by_monic_X + theorem polynomial.mod_by_monic_X_sub_C_eq_C_eval + theorem polynomial.mod_by_monic_add_div + theorem polynomial.mod_by_monic_eq_of_not_monic + theorem polynomial.mod_by_monic_eq_self_iff + theorem polynomial.mod_by_monic_eq_sub_mul_div + theorem polynomial.mod_by_monic_one + theorem polynomial.mod_by_monic_zero + theorem polynomial.mul_div_by_monic_eq_iff_is_root + theorem polynomial.multiplicity_X_sub_C_finite + theorem polynomial.multiplicity_finite_of_degree_pos_of_monic + theorem polynomial.nat_degree_div_by_monic + theorem polynomial.pow_root_multiplicity_dvd + def polynomial.root_multiplicity + theorem polynomial.root_multiplicity_eq_multiplicity + theorem polynomial.zero_div_by_monic + theorem polynomial.zero_mod_by_monic Added src/data/polynomial/eval.lean + theorem polynomial.C_comp + theorem polynomial.C_neg + theorem polynomial.C_sub + theorem polynomial.X_comp + theorem polynomial.add_comp + theorem polynomial.coe_eval₂_ring_hom + theorem polynomial.coeff_map + theorem polynomial.coeff_zero_eq_eval_zero + def polynomial.comp + theorem polynomial.comp_C + theorem polynomial.comp_X + theorem polynomial.comp_one + theorem polynomial.comp_zero + def polynomial.eval + theorem polynomial.eval_C + theorem polynomial.eval_X + theorem polynomial.eval_add + theorem polynomial.eval_bit0 + theorem polynomial.eval_bit1 + theorem polynomial.eval_int_cast + theorem polynomial.eval_map + theorem polynomial.eval_monomial + theorem polynomial.eval_nat_cast + theorem polynomial.eval_neg + theorem polynomial.eval_one + theorem polynomial.eval_smul + theorem polynomial.eval_sub + theorem polynomial.eval_sum + theorem polynomial.eval_zero + def polynomial.eval₂ + theorem polynomial.eval₂_C + theorem polynomial.eval₂_X + theorem polynomial.eval₂_X_pow + theorem polynomial.eval₂_add + theorem polynomial.eval₂_bit0 + theorem polynomial.eval₂_bit1 + theorem polynomial.eval₂_eq_eval_map + theorem polynomial.eval₂_finset_sum + theorem polynomial.eval₂_map + theorem polynomial.eval₂_monomial + theorem polynomial.eval₂_mul + theorem polynomial.eval₂_nat_cast + theorem polynomial.eval₂_neg + theorem polynomial.eval₂_one + theorem polynomial.eval₂_pow + def polynomial.eval₂_ring_hom + theorem polynomial.eval₂_smul + theorem polynomial.eval₂_sub + theorem polynomial.eval₂_sum + theorem polynomial.eval₂_zero + theorem polynomial.hom_eval₂ + theorem polynomial.is_root.def + def polynomial.is_root + def polynomial.map + theorem polynomial.map_C + theorem polynomial.map_X + theorem polynomial.map_add + theorem polynomial.map_id + theorem polynomial.map_injective + theorem polynomial.map_map + theorem polynomial.map_monomial + theorem polynomial.map_mul + theorem polynomial.map_nat_cast + theorem polynomial.map_neg + theorem polynomial.map_one + theorem polynomial.map_pow + theorem polynomial.map_sub + theorem polynomial.map_zero + theorem polynomial.mem_map_range + theorem polynomial.one_comp + theorem polynomial.root_X_sub_C + theorem polynomial.zero_comp + theorem polynomial.zero_is_root_of_coeff_zero_eq_zero Added src/data/polynomial/field_division.lean + theorem polynomial.coe_norm_unit + theorem polynomial.coeff_inv_units + theorem polynomial.degree_add_div + theorem polynomial.degree_div_le + theorem polynomial.degree_div_lt + theorem polynomial.degree_map + theorem polynomial.degree_mul_leading_coeff_inv + theorem polynomial.degree_normalize + theorem polynomial.degree_pos_of_ne_zero_of_nonunit + def polynomial.div + theorem polynomial.div_by_monic_eq_div + theorem polynomial.div_def + theorem polynomial.div_eq_zero_iff + theorem polynomial.exists_root_of_degree_eq_one + theorem polynomial.irreducible_of_degree_eq_one + theorem polynomial.is_unit_iff_degree_eq_zero + theorem polynomial.leading_coeff_map + theorem polynomial.map_div + theorem polynomial.map_eq_zero + theorem polynomial.map_mod + def polynomial.mod + theorem polynomial.mod_X_sub_C_eq_C_eval + theorem polynomial.mod_by_monic_eq_mod + theorem polynomial.mod_def + theorem polynomial.mod_eq_self_iff + theorem polynomial.monic_mul_leading_coeff_inv + theorem polynomial.monic_normalize + theorem polynomial.mul_div_eq_iff_is_root + theorem polynomial.nat_degree_map + theorem polynomial.pairwise_coprime_X_sub + theorem polynomial.prime_of_degree_eq_one Added src/data/polynomial/identities.lean + def polynomial.binom_expansion + def polynomial.eval_sub_factor + def polynomial.pow_add_expansion + def polynomial.pow_sub_pow_factor Added src/data/polynomial/induction.lean + theorem polynomial.as_sum + theorem polynomial.coeff_monomial_mul + theorem polynomial.coeff_monomial_zero_mul + theorem polynomial.coeff_mul_monomial + theorem polynomial.coeff_mul_monomial_zero + theorem polynomial.finset_sum_coeff + theorem polynomial.sum_C_mul_X_eq + theorem polynomial.sum_monomial_eq + theorem polynomial.sum_over_range' + theorem polynomial.sum_over_range Added src/data/polynomial/monic.lean + theorem polynomial.eq_one_of_is_unit_of_monic + theorem polynomial.integral_normalization_aeval_eq_zero + theorem polynomial.integral_normalization_coeff_degree + theorem polynomial.integral_normalization_coeff_nat_degree + theorem polynomial.integral_normalization_coeff_ne_degree + theorem polynomial.integral_normalization_coeff_ne_nat_degree + theorem polynomial.integral_normalization_eval₂_eq_zero + theorem polynomial.is_unit_C + theorem polynomial.leading_coeff_of_injective + theorem polynomial.monic.as_sum + theorem polynomial.monic_X_add_C + theorem polynomial.monic_X_pow_add + theorem polynomial.monic_X_pow_sub + theorem polynomial.monic_X_sub_C + theorem polynomial.monic_integral_normalization + theorem polynomial.monic_map + theorem polynomial.monic_mul + theorem polynomial.monic_of_degree_le + theorem polynomial.monic_of_injective + theorem polynomial.monic_pow + theorem polynomial.ne_zero_of_monic + theorem polynomial.ne_zero_of_monic_of_zero_ne_one + theorem polynomial.ne_zero_of_ne_zero_of_monic + theorem polynomial.not_monic_zero + theorem polynomial.support_integral_normalization Added src/data/polynomial/monomial.lean + def polynomial.C + theorem polynomial.C_0 + theorem polynomial.C_1 + theorem polynomial.C_add + theorem polynomial.C_bit0 + theorem polynomial.C_bit1 + theorem polynomial.C_eq_nat_cast + theorem polynomial.C_mul + theorem polynomial.C_pow + theorem polynomial.X_ne_zero + theorem polynomial.coeff_C + theorem polynomial.coeff_C_zero + theorem polynomial.coeff_X + theorem polynomial.coeff_X_one + theorem polynomial.coeff_X_zero + theorem polynomial.monomial_zero_left + theorem polynomial.nonzero.of_polynomial_ne + theorem polynomial.single_eq_C_mul_X + theorem polynomial.sum_C_index Added src/data/polynomial/ring_division.lean + theorem is_integral_domain.polynomial + theorem polynomial.card_nth_roots + theorem polynomial.card_roots' + theorem polynomial.card_roots + theorem polynomial.card_roots_X_pow_sub_C + theorem polynomial.card_roots_sub_C' + theorem polynomial.card_roots_sub_C + theorem polynomial.coeff_coe_units_zero_ne_zero + theorem polynomial.coeff_comp_degree_mul_degree + theorem polynomial.degree_coe_units + theorem polynomial.degree_eq_degree_of_associated + theorem polynomial.degree_eq_one_of_irreducible_of_root + theorem polynomial.degree_eq_zero_of_is_unit + theorem polynomial.degree_le_mul_left + theorem polynomial.degree_mul_eq + theorem polynomial.degree_pos_of_aeval_root + theorem polynomial.degree_pow_eq + theorem polynomial.exists_finset_roots + theorem polynomial.irreducible_X + theorem polynomial.irreducible_X_sub_C + theorem polynomial.irreducible_of_degree_eq_one_of_monic + theorem polynomial.is_unit_iff + theorem polynomial.leading_coeff_comp + theorem polynomial.leading_coeff_mul + theorem polynomial.leading_coeff_pow + theorem polynomial.mem_nth_roots + theorem polynomial.mem_roots + theorem polynomial.mem_roots_sub_C + theorem polynomial.nat_degree_coe_units + theorem polynomial.nat_degree_comp + theorem polynomial.nat_degree_le_of_dvd + theorem polynomial.nat_degree_mul_eq + theorem polynomial.nat_degree_pos_of_aeval_root + theorem polynomial.nat_degree_pow_eq + def polynomial.nth_roots + theorem polynomial.prime_X + theorem polynomial.prime_X_sub_C + theorem polynomial.prime_of_degree_eq_one_of_monic + theorem polynomial.root_mul + theorem polynomial.root_or_root_of_root_mul + theorem polynomial.roots_X_sub_C + theorem polynomial.roots_mul 2020-07-16 18:00:07 6fd4f8f feat(meta/expr): add tactic_format instance for declaration (#3390) This allows you to `trace d` where `d : declaration`. Useful for debugging metaprograms. ESTIMATED CHANGES Modified src/meta/expr.lean 2020-07-16 14:24:27 25be04a feat(data/nat/digits): add lemmas about digits (#3406) Added `lt_base_pow_length_digits`, `of_digits_lt_base_pow_length`, `of_digits_append` and `of_digits_digits_append_digits` ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem lt_base_pow_length_digits' + theorem lt_base_pow_length_digits + theorem of_digits_append + theorem of_digits_digits_append_digits + theorem of_digits_lt_base_pow_length' + theorem of_digits_lt_base_pow_length 2020-07-16 12:55:24 a8c10e1 chore(topology/algebra/ordered): rename `lim*_eq_of_tendsto` to `tendsto.lim*_eq` (#3415) Also add `tendsto_of_le_liminf_of_limsup_le` ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/measure_theory/integration.lean Modified src/topology/algebra/ordered.lean + theorem filter.tendsto.liminf_eq + theorem filter.tendsto.limsup_eq - theorem liminf_eq_of_tendsto - theorem limsup_eq_of_tendsto + theorem tendsto_of_le_liminf_of_limsup_le 2020-07-16 07:53:56 1311eb2 feat(tactic/obviously): improve error reporting (#3412) If `obviously` (used for auto_params) fails, it now prints a more useful message than "chain tactic made no progress" If the goal presented to obviously contains `sorry`, it just uses `sorry` to discard it. ESTIMATED CHANGES Modified src/category_theory/category/default.lean Modified src/meta/expr.lean Modified src/tactic/core.lean Added src/tactic/obviously.lean 2020-07-16 06:45:37 9ca3ce6 chore(data/opposite): pp_nodot on op and unop (#3413) Since it's not possible to write `X.op`, its extremely unhelpful for the pretty printer to output this. ESTIMATED CHANGES Modified src/data/opposite.lean 2020-07-15 23:05:39 c1a5ae9 chore(order/directed): use implicit args in `iff`s (#3411) ESTIMATED CHANGES Modified src/analysis/convex/cone.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid/membership.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/linear_pmap.lean Modified src/order/complete_lattice.lean + theorem Sup_eq_supr' Modified src/order/directed.lean +/- theorem directed_comp Modified src/ring_theory/subsemiring.lean Modified src/topology/algebra/infinite_sum.lean 2020-07-15 16:50:18 5fe67b7 feat(measure_theory): preliminaries for Haar measure (#3195) Move properties about lattice operations on encodable types to a new file. These are generalized from lemmas in the measure theory folder, for lattice operations and not just for `ennreal`. Also move them to the `encodable` namespace. Rename `outer_measure.Union_aux` to `encodable.Union_decode2`. Generalize some properties for outer measures to arbitrary complete lattices. This is useful for operations that behave like outer measures on a subset of `set α`. ESTIMATED CHANGES Modified src/data/equiv/denumerable.lean Renamed src/data/equiv/encodable.lean to src/data/equiv/encodable/basic.lean Added src/data/equiv/encodable/lattice.lean + theorem encodable.Union_decode2 + theorem encodable.Union_decode2_cases + theorem encodable.Union_decode2_disjoint_on + theorem encodable.supr_decode2 + theorem finset.nonempty_encodable Modified src/data/rat/basic.lean Modified src/measure_theory/borel_space.lean + theorem is_compact.is_measurable Modified src/measure_theory/measurable_space.lean - theorem encodable.Union_decode2 - theorem encodable.Union_decode2_cases - theorem measurable_space.Union_decode2_disjoint_on Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.smul_apply + theorem measure_theory.outer_measure.exists_is_measurable_superset_of_trim_eq_zero + theorem measure_theory.outer_measure.trim_smul +/- theorem measure_theory.outer_measure.trim_zero Modified src/measure_theory/outer_measure.lean - theorem measure_theory.outer_measure.Union_aux + theorem measure_theory.outer_measure.le_inter_add_diff + theorem measure_theory.outer_measure.measure_of_eq_coe Modified src/order/ideal.lean Modified src/tactic/default.lean Modified src/topology/algebra/infinite_sum.lean + theorem rel_sup_add + theorem rel_supr_sum + theorem rel_supr_tsum + theorem tsum_Union_decode2 + theorem tsum_supr_decode2 2020-07-15 13:56:45 5f5d641 feat(algebra/ordered_group): instances for additive/multiplicative (#3405) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean 2020-07-15 11:42:20 a41a307 refactor(topology/algebra/infinite_sum): review (#3371) ## Rename - `has_sum_unique` → `has_sum.unique`; - `summable.summable_comp_of_injective` → `summable.comp_injective`; - `has_sum_iff_tendsto_nat_of_summable` → `summable.has_sum_iff_tendsto_nat`; - `tsum_eq_has_sum` → `has_sum.tsum_eq`; - `support_comp` → `support_comp_subset`, delete `support_comp'`; ## Change arguments - `tsum_eq_tsum_of_ne_zero_bij`, `has_sum_iff_has_sum_of_ne_zero_bij`: use functions from `support` instead of `Π x, f x ≠ 0 → β`; ## Add - `indicator_compl_add_self_apply`, `indicator_compl_add_self`; - `indicator_self_add_compl_apply`, `indicator_self_add_compl`; - `support_subset_iff`, `support_subset_iff'`; - `support_subset_comp`; - `support_prod_mk`; - `embedding.coe_subtype`; ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/specific_limits.lean Modified src/data/indicator_function.lean +/- theorem set.indicator_compl + theorem set.indicator_compl_add_self + theorem set.indicator_compl_add_self_apply + theorem set.indicator_self_add_compl + theorem set.indicator_self_add_compl_apply Modified src/data/set/basic.lean + theorem set.eq_empty_of_not_nonempty + theorem set.insert_diff_self_of_not_mem Modified src/data/support.lean - theorem function.support_comp' - theorem function.support_comp - theorem function.support_comp_eq' + theorem function.support_comp_subset + theorem function.support_prod_mk + theorem function.support_subset_comp + theorem function.support_subset_iff' + theorem function.support_subset_iff Modified src/logic/embedding.lean + theorem function.embedding.coe_subtype Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean +/- theorem pmf.tsum_coe Modified src/measure_theory/set_integral.lean Modified src/order/filter/at_top_bot.lean + theorem filter.map_at_top_finset_prod_le_of_prod_eq + theorem function.injective.map_at_top_finset_prod_eq Modified src/topology/algebra/infinite_sum.lean + theorem equiv.has_sum_iff_of_support + theorem equiv.summable_iff_of_has_sum_iff + theorem equiv.summable_iff_of_support + theorem equiv.tsum_eq + theorem equiv.tsum_eq_tsum_of_has_sum_iff_has_sum + theorem equiv.tsum_eq_tsum_of_support + theorem finset.tsum_subtype + theorem function.injective.has_sum_iff + theorem function.injective.summable_iff + theorem has_sum.add_compl + theorem has_sum.compl_add + theorem has_sum.has_sum_compl_iff + theorem has_sum.has_sum_iff_compl - theorem has_sum.has_sum_ne_zero +/- theorem has_sum.has_sum_of_sum_eq +/- theorem has_sum.mul_left +/- theorem has_sum.neg + theorem has_sum.prod_fiberwise +/- theorem has_sum.sigma_of_has_sum + theorem has_sum.tsum_eq + theorem has_sum.unique - theorem has_sum_hom +/- theorem has_sum_iff_has_sum - theorem has_sum_iff_has_sum_of_iso - theorem has_sum_iff_has_sum_of_ne_zero +/- theorem has_sum_iff_has_sum_of_ne_zero_bij - theorem has_sum_iff_tendsto_nat_of_summable - theorem has_sum_of_iso - theorem has_sum_subtype_iff' - theorem has_sum_subtype_iff + theorem has_sum_subtype_iff_indicator - theorem has_sum_subtype_iff_of_eq_zero + theorem has_sum_subtype_iff_of_support_subset + theorem has_sum_subtype_support - theorem has_sum_unique + theorem set.finite.summable_compl_iff + theorem sum_add_tsum_compl - theorem sum_add_tsum_subtype + theorem summable.add_compl + theorem summable.comp_injective + theorem summable.compl_add + theorem summable.has_sum_iff_tendsto_nat + theorem summable.prod_factor + theorem summable.prod_symm + theorem summable.subtype - theorem summable.summable_comp_of_injective + theorem summable.summable_compl_iff +/- theorem summable.summable_of_eq_zero_or_self - theorem summable_iff_summable_ne_zero - theorem summable_iff_summable_ne_zero_bij + theorem summable_of_ne_finset_zero - theorem summable_subtype_iff - theorem summable_sum_of_ne_finset_zero + theorem tsum_add_tsum_compl + theorem tsum_comm' + theorem tsum_comm - theorem tsum_eq_has_sum - theorem tsum_eq_tsum_of_iso - theorem tsum_eq_tsum_of_ne_zero +/- theorem tsum_eq_tsum_of_ne_zero_bij +/- theorem tsum_eq_zero_add - theorem tsum_equiv + theorem tsum_prod' + theorem tsum_prod - theorem tsum_subtype_eq_sum +/- theorem tsum_zero Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean +/- theorem nnreal.has_sum_coe +/- theorem nnreal.summable_coe 2020-07-15 09:51:42 503a40a feat(logic/basic) forall_imp (#3391) Added a missing lemma, which is the one-way implication version of `forall_congr`. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem forall_imp 2020-07-15 05:11:12 51a75ff feat(category_theory/pullback): make the is_limit helper lemmas more ergonomic (#3398) ESTIMATED CHANGES Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/limits/shapes/pullbacks.lean - def category_theory.limits.pullback_cone.is_limit.mk' +/- def category_theory.limits.pullback_cone.is_limit.mk + def category_theory.limits.pullback_cone.is_limit_aux' + def category_theory.limits.pullback_cone.is_limit_aux - def category_theory.limits.pushout_cocone.is_colimit.mk' +/- def category_theory.limits.pushout_cocone.is_colimit.mk + def category_theory.limits.pushout_cocone.is_colimit_aux' + def category_theory.limits.pushout_cocone.is_colimit_aux 2020-07-15 00:57:03 8495f76 feat(geometry/manifold/times_cont_mdiff): smooth functions between manifolds (#3387) We define smooth functions between smooth manifolds, and prove their basic properties (including the facts that a composition of smooth functions is smooth, and that the tangent map of a smooth map is smooth). To avoid reproving always the same stuff in manifolds, we build a general theory of local invariant properties in the model space (i.e., properties which are local, and invariant under the structure groupoids) and show that the lift of such properties to charted spaces automatically inherit all the good behavior of the original property. We apply this general machinery to prove most basic properties of smooth functions between manifolds. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/data/equiv/local_equiv.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/charted_space.lean - theorem chart_at_model_space_eq + theorem chart_at_self_eq + theorem charted_space_self_atlas +/- theorem mem_groupoid_of_pregroupoid - theorem model_space_atlas + theorem structure_groupoid.id_mem_maximal_atlas Added src/geometry/manifold/local_invariant_properties.lean + def charted_space.lift_prop + def charted_space.lift_prop_at + def charted_space.lift_prop_on + def charted_space.lift_prop_within_at + theorem structure_groupoid.lift_prop_on_univ + theorem structure_groupoid.lift_prop_within_at_univ + theorem structure_groupoid.local_invariant_prop.lift_prop_at_chart + theorem structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm + theorem structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq + theorem structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq + theorem structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at + theorem structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas + theorem structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas + theorem structure_groupoid.local_invariant_prop.lift_prop_id + theorem structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on + theorem structure_groupoid.local_invariant_prop.lift_prop_on_chart + theorem structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm + theorem structure_groupoid.local_invariant_prop.lift_prop_on_congr + theorem structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff + theorem structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart + theorem structure_groupoid.local_invariant_prop.lift_prop_on_mono + theorem structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop + theorem structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on + theorem structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas + theorem structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_congr + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_inter + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_mono + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at + theorem structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds + structure structure_groupoid.local_invariant_prop Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/real_instances.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- theorem ext_chart_preimage_inter_eq +/- def smooth_manifold_with_corners.maximal_atlas Added src/geometry/manifold/times_cont_mdiff.lean + theorem filter.eventually_eq.times_cont_mdiff_at_iff + theorem filter.eventually_eq.times_cont_mdiff_within_at_iff + theorem times_cont_diff_within_at_local_invariant_prop + theorem times_cont_diff_within_at_local_invariant_prop_id + theorem times_cont_diff_within_at_local_invariant_prop_mono + def times_cont_diff_within_at_prop + theorem times_cont_mdiff.comp + theorem times_cont_mdiff.continuous + theorem times_cont_mdiff.continuous_tangent_map + theorem times_cont_mdiff.mdifferentiable + theorem times_cont_mdiff.of_le + theorem times_cont_mdiff.of_succ + theorem times_cont_mdiff.times_cont_mdiff_at + theorem times_cont_mdiff.times_cont_mdiff_on + theorem times_cont_mdiff.times_cont_mdiff_tangent_map + def times_cont_mdiff + theorem times_cont_mdiff_at.comp + theorem times_cont_mdiff_at.congr_of_eventually_eq + theorem times_cont_mdiff_at.continuous_at + theorem times_cont_mdiff_at.mdifferentiable_at + theorem times_cont_mdiff_at.of_le + theorem times_cont_mdiff_at.of_succ + theorem times_cont_mdiff_at.times_cont_mdiff_within_at + def times_cont_mdiff_at + theorem times_cont_mdiff_at_const + theorem times_cont_mdiff_at_id + theorem times_cont_mdiff_at_iff_times_cont_diff_at + theorem times_cont_mdiff_at_iff_times_cont_mdiff_on_nhds + theorem times_cont_mdiff_at_top + theorem times_cont_mdiff_const + theorem times_cont_mdiff_id + theorem times_cont_mdiff_iff + theorem times_cont_mdiff_iff_times_cont_diff + theorem times_cont_mdiff_of_locally_times_cont_mdiff_on + theorem times_cont_mdiff_on.comp' + theorem times_cont_mdiff_on.comp + theorem times_cont_mdiff_on.congr + theorem times_cont_mdiff_on.continuous_on + theorem times_cont_mdiff_on.continuous_on_tangent_map_within + theorem times_cont_mdiff_on.continuous_on_tangent_map_within_aux + theorem times_cont_mdiff_on.mdifferentiable_on + theorem times_cont_mdiff_on.mono + theorem times_cont_mdiff_on.of_le + theorem times_cont_mdiff_on.of_succ + theorem times_cont_mdiff_on.times_cont_mdiff_on_tangent_map_within + theorem times_cont_mdiff_on.times_cont_mdiff_on_tangent_map_within_aux + def times_cont_mdiff_on + theorem times_cont_mdiff_on_chart + theorem times_cont_mdiff_on_chart_symm + theorem times_cont_mdiff_on_congr + theorem times_cont_mdiff_on_const + theorem times_cont_mdiff_on_id + theorem times_cont_mdiff_on_iff + theorem times_cont_mdiff_on_iff_times_cont_diff_on + theorem times_cont_mdiff_on_of_locally_times_cont_mdiff_on + theorem times_cont_mdiff_on_of_mem_maximal_atlas + theorem times_cont_mdiff_on_symm_of_mem_maximal_atlas + theorem times_cont_mdiff_on_top + theorem times_cont_mdiff_on_univ + theorem times_cont_mdiff_top + theorem times_cont_mdiff_within_at.comp' + theorem times_cont_mdiff_within_at.comp + theorem times_cont_mdiff_within_at.congr + theorem times_cont_mdiff_within_at.congr_of_eventually_eq + theorem times_cont_mdiff_within_at.continuous_within_at + theorem times_cont_mdiff_within_at.mdifferentiable_within_at + theorem times_cont_mdiff_within_at.mono + theorem times_cont_mdiff_within_at.of_le + theorem times_cont_mdiff_within_at.of_succ + theorem times_cont_mdiff_within_at.times_cont_mdiff_at + def times_cont_mdiff_within_at + theorem times_cont_mdiff_within_at_congr + theorem times_cont_mdiff_within_at_const + theorem times_cont_mdiff_within_at_id + theorem times_cont_mdiff_within_at_iff_nat + theorem times_cont_mdiff_within_at_iff_times_cont_diff_within_at + theorem times_cont_mdiff_within_at_iff_times_cont_mdiff_on_nhds + theorem times_cont_mdiff_within_at_inter' + theorem times_cont_mdiff_within_at_inter + theorem times_cont_mdiff_within_at_top + theorem times_cont_mdiff_within_at_univ Modified src/topology/basic.lean + theorem filter.eventually_eq.eq_of_nhds Modified src/topology/continuous_on.lean + theorem continuous_within_at.congr_mono Modified src/topology/local_homeomorph.lean +/- theorem local_homeomorph.of_set_trans_of_set +/- theorem local_homeomorph.of_set_univ_eq_refl + theorem local_homeomorph.preimage_open_of_open + theorem local_homeomorph.preimage_open_of_open_symm +/- theorem local_homeomorph.refl_local_equiv +/- theorem local_homeomorph.refl_symm 2020-07-14 16:40:34 708e481 chore(data/set/basic): simp attribute on set.image_subset_iff (#3394) see discussion here with @sgouezel : https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.233387.3A.20smooth.20functions.20on.20manifolds/near/203751071 ESTIMATED CHANGES Modified src/data/analysis/filter.lean Modified src/data/set/basic.lean +/- theorem set.image_subset_iff Modified src/topology/basic.lean 2020-07-14 15:06:30 6c1ae3b chore(category_theory/natural_isomorphism): move lemmas to correct namespace, add simp lemma (#3401) ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/natural_isomorphism.lean +/- def category_theory.iso.app + theorem category_theory.iso.hom_inv_id_app + theorem category_theory.iso.inv_hom_id_app - theorem category_theory.nat_iso.hom_app_inv_app_id - theorem category_theory.nat_iso.hom_inv_id_app - theorem category_theory.nat_iso.inv_app_hom_app_id - theorem category_theory.nat_iso.inv_hom_id_app Modified src/category_theory/opposites.lean Modified src/category_theory/types.lean + theorem category_theory.functor_to_types.hom_inv_id_app_apply + theorem category_theory.functor_to_types.inv_hom_id_app_apply 2020-07-14 15:06:28 f7825bf feat(algebra/polynomial): big_operators lemmas for polynomials (#3378) This starts a new folder algebra/polynomial. As we refactor data/polynomial.lean, much of that content should land in this folder. ESTIMATED CHANGES Added src/algebra/polynomial/basic.lean + theorem polynomial.coe_aeval_eq_eval + theorem polynomial.coeff_zero_eq_aeval_zero + def polynomial.leading_coeff_hom + theorem polynomial.leading_coeff_hom_apply Added src/algebra/polynomial/big_operators.lean + theorem polynomial.leading_coeff_prod' + theorem polynomial.leading_coeff_prod + theorem polynomial.monic_prod_of_monic + theorem polynomial.nat_degree_prod_eq' + theorem polynomial.nat_degree_prod_eq + theorem polynomial.nat_degree_prod_eq_of_monic + theorem polynomial.nat_degree_prod_le 2020-07-14 14:42:05 bcf61df feat(data/qpf): uniformity iff preservation of supp (#3388) ESTIMATED CHANGES Modified src/data/pfunctor/univariate/basic.lean + theorem pfunctor.liftp_iff' + theorem pfunctor.supp_eq Modified src/data/qpf/univariate/basic.lean + def qpf.liftp_preservation + theorem qpf.liftp_preservation_iff_uniform + def qpf.supp_preservation + theorem qpf.supp_preservation_iff_liftp_preservation + theorem qpf.supp_preservation_iff_uniform 2020-07-14 14:05:54 02f2f94 refactor(category_theory/finite_limits): missing piece of #3320 (#3400) A recent PR #3320 did some refactoring of special shapes of limits. It seems I forgot to include `wide_pullbacks` in that refactor, so I've done that here. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/wide_pullbacks.lean + def category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan + inductive category_theory.limits.wide_pullback_shape.hom + theorem category_theory.limits.wide_pullback_shape.hom_id + def category_theory.limits.wide_pullback_shape.wide_cospan + def category_theory.limits.wide_pullback_shape + def category_theory.limits.wide_pushout_shape.diagram_iso_wide_span + inductive category_theory.limits.wide_pushout_shape.hom + theorem category_theory.limits.wide_pushout_shape.hom_id + def category_theory.limits.wide_pushout_shape.wide_span + def category_theory.limits.wide_pushout_shape - def wide_pullback_shape.diagram_iso_wide_cospan - inductive wide_pullback_shape.hom - theorem wide_pullback_shape.hom_id - def wide_pullback_shape.wide_cospan - def wide_pullback_shape - def wide_pushout_shape.diagram_iso_wide_span - inductive wide_pushout_shape.hom - theorem wide_pushout_shape.hom_id - def wide_pushout_shape.wide_span - def wide_pushout_shape 2020-07-14 11:42:20 a0846da chore(category_theory/limits/over): split a slow file (#3399) This was previously the last file to finish compiling when compiling `category_theory/`. This PR splits it into some smaller pieces which can compile in parallel (and some pieces now come earlier in the import hierarchy). No change to content. ESTIMATED CHANGES Modified src/category_theory/connected.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/over.lean - def category_theory.over.construct_products.cones_equiv - def category_theory.over.construct_products.cones_equiv_counit_iso - def category_theory.over.construct_products.cones_equiv_functor - def category_theory.over.construct_products.cones_equiv_inverse - def category_theory.over.construct_products.cones_equiv_inverse_obj - def category_theory.over.construct_products.cones_equiv_unit_iso - def category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit - def category_theory.over.construct_products.over_binary_product_of_pullback - def category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks - def category_theory.over.construct_products.over_product_of_wide_pullback - def category_theory.over.construct_products.over_products_of_wide_pullbacks - def category_theory.over.construct_products.wide_pullback_diagram_of_diagram_over - def category_theory.over.creates_connected.nat_trans_in_over - def category_theory.over.creates_connected.raise_cone - def category_theory.over.creates_connected.raised_cone_is_limit - theorem category_theory.over.creates_connected.raised_cone_lowers_to_original - def category_theory.over.over_has_terminal Added src/category_theory/limits/shapes/constructions/over/connected.lean + def category_theory.over.creates_connected.nat_trans_in_over + def category_theory.over.creates_connected.raise_cone + def category_theory.over.creates_connected.raised_cone_is_limit + theorem category_theory.over.creates_connected.raised_cone_lowers_to_original Added src/category_theory/limits/shapes/constructions/over/default.lean Added src/category_theory/limits/shapes/constructions/over/products.lean + def category_theory.over.construct_products.cones_equiv + def category_theory.over.construct_products.cones_equiv_counit_iso + def category_theory.over.construct_products.cones_equiv_functor + def category_theory.over.construct_products.cones_equiv_inverse + def category_theory.over.construct_products.cones_equiv_inverse_obj + def category_theory.over.construct_products.cones_equiv_unit_iso + def category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit + def category_theory.over.construct_products.over_binary_product_of_pullback + def category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks + def category_theory.over.construct_products.over_product_of_wide_pullback + def category_theory.over.construct_products.over_products_of_wide_pullbacks + def category_theory.over.construct_products.wide_pullback_diagram_of_diagram_over + def category_theory.over.over_has_terminal 2020-07-14 11:42:18 0fff477 feat(analysis/normed_space): complex Hahn-Banach theorem (#3286) This proves the complex Hahn-Banach theorem by reducing it to the real version. The corollaries from #3021 should be generalized as well at some point. ESTIMATED CHANGES Added src/analysis/normed_space/extend.lean + theorem norm_bound Modified src/analysis/normed_space/hahn_banach.lean + theorem complex.exists_extension_norm_eq Modified src/data/complex/basic.lean + theorem complex.I_mul + theorem complex.abs_ne_zero + theorem complex.of_real_smul 2020-07-14 11:05:58 5f01b54 feat(category_theory/kernels): kernel_iso_of_eq (#3372) This provides two useful isomorphisms when working with abstract (co)kernels: ``` def kernel_zero_iso_source [has_kernel (0 : X ⟶ Y)] : kernel (0 : X ⟶ Y) ≅ X := def kernel_iso_of_eq {f g : X ⟶ Y} [has_kernel f] [has_kernel g] (h : f = g) : kernel f ≅ kernel g := ``` and some associated simp lemmas. ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean - theorem category_theory.limits.has_colimit.iso_of_nat_iso_hom_π + theorem category_theory.limits.has_colimit.iso_of_nat_iso_ι_hom Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.coequalizer.iso_target_of_self + theorem category_theory.limits.coequalizer.iso_target_of_self_hom + theorem category_theory.limits.coequalizer.iso_target_of_self_inv - def category_theory.limits.coequalizer.π_of_self + def category_theory.limits.equalizer.iso_source_of_self + theorem category_theory.limits.equalizer.iso_source_of_self_hom + theorem category_theory.limits.equalizer.iso_source_of_self_inv - def category_theory.limits.equalizer.ι_of_self Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel_iso_of_eq + theorem category_theory.limits.cokernel_iso_of_eq_refl + theorem category_theory.limits.cokernel_iso_of_eq_trans + def category_theory.limits.cokernel_zero_iso_target + theorem category_theory.limits.cokernel_zero_iso_target_hom + theorem category_theory.limits.cokernel_zero_iso_target_inv + def category_theory.limits.kernel_iso_of_eq + theorem category_theory.limits.kernel_iso_of_eq_refl + theorem category_theory.limits.kernel_iso_of_eq_trans + def category_theory.limits.kernel_zero_iso_source + theorem category_theory.limits.kernel_zero_iso_source_hom + theorem category_theory.limits.kernel_zero_iso_source_inv 2020-07-14 09:01:17 58dde5b chore(*): generalize tensor product to semirings (#3389) ESTIMATED CHANGES Modified src/data/polynomial.lean Modified src/linear_algebra/tensor_product.lean + inductive tensor_product.eqv - theorem tensor_product.lift_aux.add +/- theorem tensor_product.lift_aux.smul +/- def tensor_product.lift_aux + theorem tensor_product.lift_aux_tmul - def tensor_product.relators +/- def tensor_product.smul.aux + theorem tensor_product.smul.aux_of + theorem tensor_product.smul_tmul' +/- def tensor_product.tmul +/- theorem tensor_product.tmul_zero +/- theorem tensor_product.zero_tmul Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/polynomial_algebra.lean Modified src/ring_theory/tensor_product.lean 2020-07-14 01:25:26 0410946 chore(linear_algebra/nonsingular_inverse): swap update_row/column names (#3393) The names for `update_row` and `update_column` did not correspond to their definitions. Doing a global swap of the names keep all the proofs valid and makes the semantics match. ESTIMATED CHANGES Modified src/linear_algebra/nonsingular_inverse.lean +/- theorem matrix.cramer_apply +/- def matrix.cramer_map +/- def matrix.update_column +/- theorem matrix.update_column_ne +/- theorem matrix.update_column_self - theorem matrix.update_column_transpose +/- theorem matrix.update_column_val +/- def matrix.update_row +/- theorem matrix.update_row_ne +/- theorem matrix.update_row_self + theorem matrix.update_row_transpose +/- theorem matrix.update_row_val 2020-07-13 20:57:57 32c75d0 feat(linear_algebra/affine_space): more lemmas on directions of affine subspaces (#3377) Add more lemmas on directions of affine subspaces, motivated by uses for Euclidean geometry. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + theorem affine_subspace.coe_direction_eq_vsub_set_left + theorem affine_subspace.coe_direction_eq_vsub_set_right + theorem affine_subspace.direction_le + theorem affine_subspace.direction_lt_of_nonempty + theorem affine_subspace.inter_eq_singleton_of_nonempty_of_is_compl + theorem affine_subspace.inter_nonempty_of_nonempty_of_sup_direction_eq_top + theorem affine_subspace.mem_direction_iff_eq_vsub_left + theorem affine_subspace.mem_direction_iff_eq_vsub_right + theorem affine_subspace.sup_direction_le + theorem affine_subspace.sup_direction_lt_of_nonempty_of_inter_empty + theorem affine_subspace.vsub_left_mem_direction_iff_mem + theorem affine_subspace.vsub_right_mem_direction_iff_mem 2020-07-13 20:02:35 1132237 feat(ring_theory/ideal_over): lemmas for nonzero ideals lying over nonzero ideals (#3385) Let `f` be a ring homomorphism from `R` to `S` and `I` be an ideal in `S`. To show that `I.comap f` is not the zero ideal, we can show `I` contains a non-zero root of some non-zero polynomial `p : polynomial R`. As a corollary, if `S` is algebraic over `R` (e.g. the integral closure of `R`), nonzero ideals in `S` lie over nonzero ideals in `R`. I created a new file because `integral_closure.comap_ne_bot` depends on `comap_ne_bot_of_algebraic_mem`, but `ring_theory/algebraic.lean` imports `ring_theory/integral_closure.lean` and I didn't see any obvious join in the dependency graph where they both belonged. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Added src/ring_theory/ideal_over.lean + theorem ideal.coeff_zero_mem_comap_of_root_mem + theorem ideal.comap_ne_bot_of_algebraic_mem + theorem ideal.comap_ne_bot_of_integral_mem + theorem ideal.comap_ne_bot_of_root_mem + theorem ideal.exists_coeff_ne_zero_mem_comap_of_root_mem + theorem ideal.integral_closure.comap_ne_bot + theorem ideal.integral_closure.eq_bot_of_comap_eq_bot Modified src/ring_theory/integral_closure.lean + theorem integral_closure.is_integral 2020-07-13 19:35:16 45477c8 feat(analysis/normed_space/real_inner_product): orthogonal subspaces (#3369) Define the subspace of vectors orthogonal to a given subspace and prove some basic properties of it, building on the existing results about minimizers. This is in preparation for doing similar things in Euclidean geometry (working with the affine subspace through a given point and orthogonal to a given affine subspace, for example). ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem submodule.inner_left_of_mem_orthogonal + theorem submodule.inner_right_of_mem_orthogonal + theorem submodule.is_compl_orthogonal_of_is_complete + theorem submodule.le_orthogonal_orthogonal + theorem submodule.mem_orthogonal' + theorem submodule.mem_orthogonal + def submodule.orthogonal + theorem submodule.orthogonal_disjoint + theorem submodule.sup_orthogonal_of_is_complete 2020-07-13 19:01:01 2ae7ad8 feat(functor): definition multivariate functors (#3360) One part of #3317 ESTIMATED CHANGES Added src/control/functor/multivariate.lean + theorem mvfunctor.exists_iff_exists_of_mono + theorem mvfunctor.id_map' + theorem mvfunctor.id_map + def mvfunctor.liftp' + def mvfunctor.liftp + theorem mvfunctor.liftp_def + theorem mvfunctor.liftp_last_pred_iff + def mvfunctor.liftr' + def mvfunctor.liftr + theorem mvfunctor.liftr_def + theorem mvfunctor.liftr_last_rel_iff + theorem mvfunctor.map_map + theorem mvfunctor.of_mem_supp + def mvfunctor.supp Added src/data/fin2.lean + def fin2.add + def fin2.elim0 + def fin2.insert_perm + def fin2.left + def fin2.of_nat' + def fin2.opt_of_nat + def fin2.remap_left + def fin2.to_nat + inductive fin2 Added src/data/typevec.lean + def typevec.append1 + def typevec.append1_cases + theorem typevec.append1_cases_append1 + theorem typevec.append1_drop_last + def typevec.append_fun + theorem typevec.append_fun_aux + theorem typevec.append_fun_comp' + theorem typevec.append_fun_comp + theorem typevec.append_fun_comp_id + theorem typevec.append_fun_comp_split_fun + theorem typevec.append_fun_id_id + theorem typevec.append_fun_inj + theorem typevec.append_prod_append_fun + def typevec.arrow.mp + def typevec.arrow.mpr + def typevec.arrow + def typevec.comp + theorem typevec.comp_assoc + theorem typevec.comp_id + theorem typevec.const_append1 + theorem typevec.const_iff_true + theorem typevec.const_nil + def typevec.curry + def typevec.diag_sub + theorem typevec.diag_sub_val + def typevec.drop + theorem typevec.drop_append1' + theorem typevec.drop_append1 + def typevec.drop_fun + theorem typevec.drop_fun_append_fun + theorem typevec.drop_fun_comp + theorem typevec.drop_fun_split_fun + def typevec.drop_repeat + theorem typevec.eq_nil_fun + theorem typevec.eq_of_drop_last_eq + theorem typevec.fst_diag + theorem typevec.fst_prod_mk + def typevec.id + theorem typevec.id_comp + theorem typevec.id_eq_nil_fun + def typevec.last + theorem typevec.last_append1 + def typevec.last_fun + theorem typevec.last_fun_append_fun + theorem typevec.last_fun_comp + theorem typevec.last_fun_split_fun + def typevec.nil_fun + theorem typevec.nil_fun_comp + def typevec.of_repeat + def typevec.of_subtype' + def typevec.of_subtype + def typevec.pred_last' + def typevec.pred_last + def typevec.prod.diag + def typevec.prod.fst + def typevec.prod.mk + def typevec.prod.snd + def typevec.prod + theorem typevec.prod_id + def typevec.rel_last' + def typevec.rel_last + def typevec.repeat + def typevec.repeat_eq + theorem typevec.repeat_eq_append1 + theorem typevec.repeat_eq_iff_eq + theorem typevec.repeat_eq_nil + theorem typevec.snd_diag + theorem typevec.snd_prod_mk + theorem typevec.split_drop_fun_last_fun + def typevec.split_fun + theorem typevec.split_fun_comp + theorem typevec.split_fun_inj + def typevec.subtype_ + def typevec.subtype_val + theorem typevec.subtype_val_nil + def typevec.to_append1_drop_last + def typevec.to_subtype' + def typevec.to_subtype + def typevec.typevec_cases_cons₂ + theorem typevec.typevec_cases_cons₂_append_fun + def typevec.typevec_cases_cons₃ + def typevec.typevec_cases_nil₂ + theorem typevec.typevec_cases_nil₂_append_fun + def typevec.typevec_cases_nil₃ + def typevec Modified src/number_theory/dioph.lean - def fin2.add - def fin2.elim0 - def fin2.insert_perm - def fin2.left - def fin2.of_nat' - def fin2.opt_of_nat - def fin2.remap_left - def fin2.to_nat - inductive fin2 2020-07-13 12:37:11 f034899 feat(data/equiv/mul_add): conj as a mul_aut (#3367) ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem add_aut.inv_def + theorem add_aut.mul_apply + theorem add_aut.mul_def + theorem add_aut.one_apply + theorem add_aut.one_def + def mul_aut.conj + theorem mul_aut.conj_apply + theorem mul_aut.conj_symm_apply + theorem mul_aut.inv_def + theorem mul_aut.mul_apply + theorem mul_aut.mul_def + theorem mul_aut.one_apply + theorem mul_aut.one_def Modified src/group_theory/semidirect_product.lean 2020-07-13 09:46:22 e26b459 feat(data/polynomial): some lemmas about eval2 and algebra_map (#3382) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.C_eq_algebra_map + theorem polynomial.alg_hom_eval₂_algebra_map + theorem polynomial.eval₂_algebra_map_X + theorem polynomial.eval₂_algebra_map_int_X + theorem polynomial.ring_hom_eval₂_algebra_map_int Modified src/ring_theory/algebra.lean + theorem algebra.algebra_ext + def ring_hom.to_int_alg_hom 2020-07-13 08:17:18 792faae chore(data/polynomial): missing a simp attribute (#3381) ESTIMATED CHANGES Modified src/data/polynomial.lean 2020-07-13 08:17:16 afa534c chore(tactic/show_term): use Try this: (#3374) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/show_term.lean Modified src/tactic/suggest.lean 2020-07-12 23:29:02 eb851ae chore(data/nat/prime): @[pp_nodot] nat.prime (#3379) ESTIMATED CHANGES Modified src/data/nat/prime.lean 2020-07-12 10:32:15 a8d6bdf feat(algebra/category/AddCommGroup): has_image_maps (#3366) ESTIMATED CHANGES Modified src/algebra/category/Group/images.lean + theorem AddCommGroup.image_map Modified src/category_theory/arrow.lean + def category_theory.functor.map_arrow Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.image_map 2020-07-12 09:02:34 fa6c45a feat(data/polynomial): simp lemmas for bit0 / bit1 (#3376) Add lemmas on polynomials and bit0/bit1 (as suggested [here](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Eval.20of.20constant.20polynomial)) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.C_bit0 + theorem polynomial.C_bit1 + theorem polynomial.eval_bit0 + theorem polynomial.eval_bit1 + theorem polynomial.eval₂_bit0 + theorem polynomial.eval₂_bit1 2020-07-12 07:43:26 4e603f4 feat(geometry/manifold/charted_space): typeclass `closed_under_restriction` for structure groupoids (#3347) * Define a typeclass `closed_under_restriction` for structure groupoids. * Prove that it is equivalent to requiring that the structure groupoid contain all local homeomorphisms equivalent to the restriction of the identity to an open subset. * Verify that `continuous_groupoid` and `times_cont_diff_groupoid` satisfy `closed_under_restriction`. * Show that a charted space defined by a single chart is `has_groupoid` for any structure groupoid satisfying `closed_under_restriction`. [Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Restriction.20in.20structure.20groupoid) ESTIMATED CHANGES Modified src/geometry/manifold/charted_space.lean + theorem closed_under_restriction_iff_id_le + def id_restr_groupoid + theorem id_restr_groupoid_mem + def singleton_charted_space + theorem singleton_charted_space_one_chart + theorem singleton_has_groupoid Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.of_set_trans_of_set + theorem local_homeomorph.of_set_univ_eq_refl 2020-07-12 05:07:52 0e1c2bc feat(algebra/add_torsor): more cancellation lemmas (#3368) Add more cancellation lemmas for `vsub`, similar to lemmas already present for `vadd`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.vsub_left_cancel + theorem add_torsor.vsub_left_cancel_iff + theorem add_torsor.vsub_right_cancel + theorem add_torsor.vsub_right_cancel_iff 2020-07-12 03:42:43 b047396 feat(data/set/finite): add a version of `prod_preimage` for `inj_on` (#3342) * rename `finset.prod_preimage` to `finset.prod_preimage_of_bij`; * new `prod_preimage` assumes `∀ x ∈ s, x ∉ range f, g x = 1`; * rename `finset.image_preimage` to `finset.image_preimage_of_bij`; * new `finset.image_preimage` says `image f (preimage s hf) = s.filter (λ x, x ∈ set.range f)`; * change the order of implicit arguments in the definition of `set.inj_on`; * add `prod_filter_of_ne`; * use `coe` instead of `subtype.val` in `prod_attach`; * add `finset.image_subset_iff`, `finset.image_subset_iff_subset_preimage`, `finset.map_subset_iff_subset_preimage`. ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_attach + theorem finset.prod_filter_of_ne Modified src/data/finset/basic.lean + theorem finset.image_subset_iff Modified src/data/finsupp.lean Modified src/data/set/countable.lean Modified src/data/set/finite.lean +/- theorem finset.image_preimage + theorem finset.image_preimage_of_bij + theorem finset.image_subset_iff_subset_preimage + theorem finset.map_subset_iff_subset_preimage + theorem finset.prod_preimage_of_bij Modified src/data/set/function.lean + theorem set.bij_on.subset_range + theorem set.surj_on.subset_range Modified src/linear_algebra/basis.lean Modified src/logic/function/basic.lean +/- theorem function.inv_fun_on_eq' Modified src/ring_theory/noetherian.lean 2020-07-12 00:42:49 298caa0 chore(scripts): update nolints.txt (#3370) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-11 10:11:11 d7ac180 feat(data/fintype/basic): set.to_finset_empty (#3361) Add set.to_finset_empty, analogously to set.to_finset_univ. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem set.to_finset_empty 2020-07-11 10:11:09 34d3fe1 chore(category_theory/comma): split into three files (#3358) Just reorganisation. ESTIMATED CHANGES Added src/category_theory/arrow.lean + def category_theory.arrow.hom_mk' + def category_theory.arrow.hom_mk + theorem category_theory.arrow.id_left + theorem category_theory.arrow.id_right + theorem category_theory.arrow.lift.fac_left + theorem category_theory.arrow.lift.fac_right + def category_theory.arrow.lift + theorem category_theory.arrow.lift_mk'_left + theorem category_theory.arrow.lift_mk'_right + def category_theory.arrow.mk + theorem category_theory.arrow.w + def category_theory.arrow Modified src/category_theory/comma.lean - def category_theory.arrow.hom_mk' - def category_theory.arrow.hom_mk - theorem category_theory.arrow.id_left - theorem category_theory.arrow.id_right - theorem category_theory.arrow.lift.fac_left - theorem category_theory.arrow.lift.fac_right - def category_theory.arrow.lift - theorem category_theory.arrow.lift_mk'_left - theorem category_theory.arrow.lift_mk'_right - def category_theory.arrow.mk - theorem category_theory.arrow.w - def category_theory.arrow - theorem category_theory.over.comp_left - def category_theory.over.forget - theorem category_theory.over.forget_map - theorem category_theory.over.forget_obj - def category_theory.over.hom_mk - theorem category_theory.over.id_left - def category_theory.over.iterated_slice_backward - theorem category_theory.over.iterated_slice_backward_forget_forget - def category_theory.over.iterated_slice_equiv - def category_theory.over.iterated_slice_forward - theorem category_theory.over.iterated_slice_forward_forget - def category_theory.over.map - theorem category_theory.over.map_map_left - theorem category_theory.over.map_obj_hom - theorem category_theory.over.map_obj_left - def category_theory.over.mk - theorem category_theory.over.mk_hom - theorem category_theory.over.mk_left - theorem category_theory.over.over_morphism.ext - theorem category_theory.over.over_right - def category_theory.over.post - theorem category_theory.over.w - def category_theory.over - theorem category_theory.under.comp_right - def category_theory.under.forget - theorem category_theory.under.forget_map - theorem category_theory.under.forget_obj - def category_theory.under.hom_mk - theorem category_theory.under.id_right - def category_theory.under.map - theorem category_theory.under.map_map_right - theorem category_theory.under.map_obj_hom - theorem category_theory.under.map_obj_right - def category_theory.under.mk - def category_theory.under.post - theorem category_theory.under.under_left - theorem category_theory.under.under_morphism.ext - theorem category_theory.under.w - def category_theory.under Modified src/category_theory/elements.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/shapes/strong_epi.lean Added src/category_theory/over.lean + theorem category_theory.over.comp_left + def category_theory.over.forget + theorem category_theory.over.forget_map + theorem category_theory.over.forget_obj + def category_theory.over.hom_mk + theorem category_theory.over.id_left + def category_theory.over.iterated_slice_backward + theorem category_theory.over.iterated_slice_backward_forget_forget + def category_theory.over.iterated_slice_equiv + def category_theory.over.iterated_slice_forward + theorem category_theory.over.iterated_slice_forward_forget + def category_theory.over.map + theorem category_theory.over.map_map_left + theorem category_theory.over.map_obj_hom + theorem category_theory.over.map_obj_left + def category_theory.over.mk + theorem category_theory.over.mk_hom + theorem category_theory.over.mk_left + theorem category_theory.over.over_morphism.ext + theorem category_theory.over.over_right + def category_theory.over.post + theorem category_theory.over.w + def category_theory.over + theorem category_theory.under.comp_right + def category_theory.under.forget + theorem category_theory.under.forget_map + theorem category_theory.under.forget_obj + def category_theory.under.hom_mk + theorem category_theory.under.id_right + def category_theory.under.map + theorem category_theory.under.map_map_right + theorem category_theory.under.map_obj_hom + theorem category_theory.under.map_obj_right + def category_theory.under.mk + def category_theory.under.post + theorem category_theory.under.under_left + theorem category_theory.under.under_morphism.ext + theorem category_theory.under.w + def category_theory.under 2020-07-11 08:43:40 f742a3d refactor(tactic/push_neg): simp ¬ (p ∧ q) better (#3362) This simplifies `¬ (p ∧ q)` to `(p → ¬ q)` instead of `¬ p ∨ ¬ q`. This has better behavior when going between `\forall x, P -> Q` and `\exists x, P /\ Q'` where `Q` and `Q'` are opposite. ESTIMATED CHANGES Modified src/data/pequiv.lean Modified src/order/filter/at_top_bot.lean Modified src/tactic/push_neg.lean +/- theorem push_neg.not_and_eq Modified src/topology/instances/ennreal.lean Modified src/topology/sequences.lean 2020-07-11 08:43:39 36a25d9 feat(algebra/category/*): get rid of the local reducible hack (#3354) I thought I did this back in April, but apparently never made the PR. We currently use a strange hack when setting up concrete categories, making them locally reducible. There's a library note about this, which ends: ``` TODO: Probably @[derive] should be able to create instances of the required form (without `id`), and then we could use that instead of this obscure `local attribute [reducible]` method. ``` This PR makes the small change required to `delta_instance` to make this happen, and then stops using the hack in setting up concrete categories (and deletes the library note explaining this hack). ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/computability/halting.lean Modified src/linear_algebra/finsupp.lean Modified src/measure_theory/category/Meas.lean +/- def Meas Modified src/tactic/basic.lean Modified src/tactic/core.lean Added src/tactic/delta_instance.lean Added src/tactic/fix_by_cases.lean Modified src/tactic/omega/coeffs.lean Modified src/topology/category/Top/basic.lean +/- def Top Modified src/topology/category/UniformSpace.lean +/- def UniformSpace 2020-07-11 07:58:56 75b9cfa feat(category/has_shift): missing simp lemmas (#3365) ESTIMATED CHANGES Modified src/category_theory/graded_object.lean + theorem category_theory.graded_object.shift_functor_map_apply + theorem category_theory.graded_object.shift_functor_obj_apply 2020-07-11 07:58:54 f669a78 chore(category_theory/functor): explain how to type 𝟭 (#3364) ESTIMATED CHANGES Modified docs/tutorial/category_theory/intro.lean Modified src/category_theory/functor.lean 2020-07-11 06:47:13 574dac5 feat(tactic/interval_cases): add `with h` option (#3353) closes #2881 ESTIMATED CHANGES Modified src/tactic/interval_cases.lean Modified test/interval_cases.lean 2020-07-11 00:41:45 5ddbdc1 chore(scripts): update nolints.txt (#3363) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-10 19:01:46 1aff3af feat(interactive_expr): bigger accomplishment (#3359) Lean is difficult, we need more incentives. ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-07-10 17:35:22 960fc8e feat(data/univariate/qpf): compositional data type framework for (co)inductive types (#3325) Define univariate QPFs (quotients of polynomial functors). This is the first part of #3317. ESTIMATED CHANGES Modified docs/references.bib Modified src/control/functor.lean + def functor.liftp + def functor.liftr + theorem functor.of_mem_supp + def functor.supp Added src/data/pfunctor/univariate/M.lean + theorem pfunctor.M.R_is_bisimulation + inductive pfunctor.M.agree' + theorem pfunctor.M.agree'_refl + theorem pfunctor.M.agree_iff_agree' + theorem pfunctor.M.approx_mk + theorem pfunctor.M.bisim' + theorem pfunctor.M.bisim + theorem pfunctor.M.bisim_equiv + theorem pfunctor.M.cases_mk + theorem pfunctor.M.cases_on_mk' + theorem pfunctor.M.cases_on_mk + def pfunctor.M.children + theorem pfunctor.M.children_mk + theorem pfunctor.M.coinduction' + theorem pfunctor.M.coinduction + def pfunctor.M.corec' + theorem pfunctor.M.corec_def + def pfunctor.M.corec_on + theorem pfunctor.M.corec_unique + def pfunctor.M.corec₁ + theorem pfunctor.M.default_consistent + def pfunctor.M.dest + theorem pfunctor.M.dest_corec + theorem pfunctor.M.dest_mk + theorem pfunctor.M.eq_of_bisim + theorem pfunctor.M.ext' + theorem pfunctor.M.ext + theorem pfunctor.M.ext_aux + theorem pfunctor.M.head'_eq_head + def pfunctor.M.head + theorem pfunctor.M.head_eq_head' + theorem pfunctor.M.head_mk + theorem pfunctor.M.head_succ + def pfunctor.M.ichildren + theorem pfunctor.M.ichildren_mk + structure pfunctor.M.is_bisimulation + inductive pfunctor.M.is_path + theorem pfunctor.M.is_path_cons' + theorem pfunctor.M.is_path_cons + def pfunctor.M.iselect + theorem pfunctor.M.iselect_cons + theorem pfunctor.M.iselect_eq_default + theorem pfunctor.M.iselect_nil + def pfunctor.M.isubtree + theorem pfunctor.M.isubtree_cons + theorem pfunctor.M.mk_dest + theorem pfunctor.M.mk_inj + theorem pfunctor.M.nth_of_bisim + theorem pfunctor.M.truncate_approx + def pfunctor.M + structure pfunctor.M_intl + theorem pfunctor.approx.P_corec + inductive pfunctor.approx.agree + theorem pfunctor.approx.agree_children + theorem pfunctor.approx.agree_trival + def pfunctor.approx.all_agree + theorem pfunctor.approx.approx_eta + def pfunctor.approx.children' + inductive pfunctor.approx.cofix_a + theorem pfunctor.approx.cofix_a_eq_zero + def pfunctor.approx.head' + theorem pfunctor.approx.head_succ' + def pfunctor.approx.path + def pfunctor.approx.s_corec + def pfunctor.approx.truncate + theorem pfunctor.approx.truncate_eq_of_agree Added src/data/pfunctor/univariate/basic.lean + def pfunctor.Idx + def pfunctor.W.dest + theorem pfunctor.W.dest_mk + def pfunctor.W.mk + theorem pfunctor.W.mk_dest + def pfunctor.W + def pfunctor.comp.get + def pfunctor.comp.mk + def pfunctor.comp + theorem pfunctor.fst_map + theorem pfunctor.iget_map + theorem pfunctor.liftp_iff + theorem pfunctor.liftr_iff + def pfunctor.map + def pfunctor.obj.iget + def pfunctor.obj + structure pfunctor Added src/data/pfunctor/univariate/default.lean Added src/data/qpf/univariate/basic.lean + def qpf.Mcongr + def qpf.W_setoid + theorem qpf.Wequiv.abs' + theorem qpf.Wequiv.refl + theorem qpf.Wequiv.symm + inductive qpf.Wequiv + def qpf.Wrepr + theorem qpf.Wrepr_equiv + theorem qpf.cofix.bisim' + theorem qpf.cofix.bisim + theorem qpf.cofix.bisim_rel + def qpf.cofix.corec + def qpf.cofix.dest + theorem qpf.cofix.dest_corec + def qpf.cofix + def qpf.comp + theorem qpf.comp_map + def qpf.corecF + theorem qpf.corecF_eq + def qpf.fix.dest + theorem qpf.fix.dest_mk + theorem qpf.fix.ind + theorem qpf.fix.ind_aux + theorem qpf.fix.ind_rec + def qpf.fix.mk + theorem qpf.fix.mk_dest + def qpf.fix.rec + theorem qpf.fix.rec_eq + theorem qpf.fix.rec_unique + def qpf.fix + def qpf.fix_to_W + theorem qpf.has_good_supp_iff + theorem qpf.id_map + theorem qpf.is_lawful_functor + def qpf.is_precongr + def qpf.is_uniform + theorem qpf.liftp_iff' + theorem qpf.liftp_iff + theorem qpf.liftp_iff_of_is_uniform + theorem qpf.liftr_iff + theorem qpf.mem_supp + def qpf.quotient_qpf + def qpf.recF + theorem qpf.recF_eq' + theorem qpf.recF_eq + theorem qpf.recF_eq_of_Wequiv + theorem qpf.supp_eq + theorem qpf.supp_eq_of_is_uniform + theorem qpf.supp_map Modified src/data/quot.lean + def quot.factor + theorem quot.factor_mk_eq Modified src/data/sigma/basic.lean + theorem ext Modified src/tactic/ext.lean Added test/qpf.lean + theorem ex.equivalence_foo.R + def ex.foo.R + def ex.foo.map + theorem ex.foo.map_mk' + theorem ex.foo.map_mk + theorem ex.foo.map_tt + def ex.foo.mk + def ex.foo + theorem ex.foo_not_uniform + def ex.prod.pfunctor + theorem ex.supp_mk_ff' + theorem ex.supp_mk_ff₀ + theorem ex.supp_mk_ff₁ + theorem ex.supp_mk_tt' + theorem ex.supp_mk_tt + def qpf.box + def qpf.liftp' + def qpf.supp' 2020-07-10 12:28:46 d1e63f3 chore(category_theory/limits): remove an unnecessary import (#3357) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/biproducts.lean 2020-07-10 12:28:40 699c915 feat(number_theory): pythagorean triples (#3200) The classification of pythagorean triples (one of the "100 theorems") ESTIMATED CHANGES Modified src/algebra/gcd_domain.lean + theorem int.exists_gcd_one' + theorem int.exists_gcd_one + theorem int.gcd_div_gcd_div_gcd + theorem int.ne_zero_of_gcd + theorem int.pow_dvd_pow_iff + theorem int.prime.dvd_mul' + theorem int.prime.dvd_mul + theorem prime_two_or_dvd_of_dvd_two_mul_pow_self_two Modified src/algebra/group_power.lean + theorem eq_or_eq_neg_of_pow_two_eq_pow_two + theorem pow_dvd_pow_of_dvd + theorem pow_two_pos_of_ne_zero + theorem pow_two_sub_pow_two Modified src/data/int/basic.lean + theorem int.sub_mod Modified src/data/int/gcd.lean + theorem int.prime.dvd_nat_abs_of_coe_dvd_pow_two Modified src/data/nat/prime.lean + theorem nat.prime.not_coprime_iff_dvd Modified src/data/rat/basic.lean + theorem rat.denom_div_eq_of_coprime + theorem rat.div_int_inj + theorem rat.num_div_eq_of_coprime Added src/number_theory/pythagorean_triples.lean + theorem circle_equiv_apply + def circle_equiv_gen + theorem circle_equiv_symm_apply + theorem pythagorean_triple.classification + theorem pythagorean_triple.classified + theorem pythagorean_triple.coprime_classification + theorem pythagorean_triple.coprime_of_coprime + theorem pythagorean_triple.eq + theorem pythagorean_triple.even_odd_of_coprime + theorem pythagorean_triple.gcd_dvd + def pythagorean_triple.is_classified + theorem pythagorean_triple.is_classified_of_is_primitive_classified + theorem pythagorean_triple.is_classified_of_normalize_is_primitive_classified + def pythagorean_triple.is_primitive_classified + theorem pythagorean_triple.is_primitive_classified_aux + theorem pythagorean_triple.is_primitive_classified_of_coprime + theorem pythagorean_triple.is_primitive_classified_of_coprime_of_odd_of_pos + theorem pythagorean_triple.is_primitive_classified_of_coprime_of_pos + theorem pythagorean_triple.is_primitive_classified_of_coprime_of_zero_left + theorem pythagorean_triple.mul + theorem pythagorean_triple.mul_iff + theorem pythagorean_triple.mul_is_classified + theorem pythagorean_triple.ne_zero_of_coprime + theorem pythagorean_triple.normalize + theorem pythagorean_triple.symm + theorem pythagorean_triple.zero + def pythagorean_triple + theorem pythagorean_triple_comm 2020-07-10 11:15:29 e52108d chore(data/int/basic): move content requiring advanced imports (#3334) `data.int.basic` had grown to require substantial imports from `algebra.*`. This PR moves out the end of this file into separate files. As a consequence it's then possible to separate out `data.multiset.basic` into some further pieces. ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean Modified src/algebra/group_power.lean Modified src/data/fintype/basic.lean Modified src/data/hash_map.lean Modified src/data/int/basic.lean - theorem add_monoid_hom.eq_int_cast - theorem add_monoid_hom.eq_int_cast_hom - theorem add_monoid_hom.ext_int - theorem int.cast_abs - theorem int.cast_add - def int.cast_add_hom - theorem int.cast_bit0 - theorem int.cast_bit1 - theorem int.cast_coe_nat' - theorem int.cast_coe_nat - theorem int.cast_commute - theorem int.cast_eq_zero - theorem int.cast_id - theorem int.cast_inj - theorem int.cast_injective - theorem int.cast_le - theorem int.cast_lt - theorem int.cast_lt_zero - theorem int.cast_max - theorem int.cast_min - theorem int.cast_mul - theorem int.cast_ne_zero - theorem int.cast_neg - theorem int.cast_neg_of_nat - theorem int.cast_neg_succ_of_nat - theorem int.cast_nonneg - theorem int.cast_nonpos - theorem int.cast_of_nat - theorem int.cast_one - theorem int.cast_pos - def int.cast_ring_hom - theorem int.cast_sub - theorem int.cast_sub_nat_nat - theorem int.cast_two - theorem int.cast_zero - theorem int.coe_cast_add_hom - theorem int.coe_cast_ring_hom - theorem int.coe_nat_bit0 - theorem int.coe_nat_bit1 - theorem int.commute_cast - theorem int.mem_range_iff - theorem int.nat_cast_eq_coe_nat - def int.of_nat_hom - def int.range - theorem ring_hom.eq_int_cast' - theorem ring_hom.eq_int_cast - theorem ring_hom.ext_int - theorem ring_hom.map_int_cast Added src/data/int/cast.lean + theorem add_monoid_hom.eq_int_cast + theorem add_monoid_hom.eq_int_cast_hom + theorem add_monoid_hom.ext_int + theorem int.cast_abs + theorem int.cast_add + def int.cast_add_hom + theorem int.cast_bit0 + theorem int.cast_bit1 + theorem int.cast_coe_nat' + theorem int.cast_coe_nat + theorem int.cast_commute + theorem int.cast_id + theorem int.cast_le + theorem int.cast_lt + theorem int.cast_lt_zero + theorem int.cast_max + theorem int.cast_min + theorem int.cast_mul + theorem int.cast_neg + theorem int.cast_neg_of_nat + theorem int.cast_neg_succ_of_nat + theorem int.cast_nonneg + theorem int.cast_nonpos + theorem int.cast_of_nat + theorem int.cast_one + theorem int.cast_pos + def int.cast_ring_hom + theorem int.cast_sub + theorem int.cast_sub_nat_nat + theorem int.cast_two + theorem int.cast_zero + theorem int.coe_cast_add_hom + theorem int.coe_cast_ring_hom + theorem int.coe_nat_bit0 + theorem int.coe_nat_bit1 + theorem int.commute_cast + theorem int.nat_cast_eq_coe_nat + def int.of_nat_hom + theorem ring_hom.eq_int_cast' + theorem ring_hom.eq_int_cast + theorem ring_hom.ext_int + theorem ring_hom.map_int_cast Added src/data/int/char_zero.lean + theorem int.cast_eq_zero + theorem int.cast_inj + theorem int.cast_injective + theorem int.cast_ne_zero Added src/data/int/range.lean + theorem int.mem_range_iff + def int.range Modified src/data/list/basic.lean Modified src/data/multiset/basic.lean - theorem multiset.card_range - theorem multiset.mem_range - theorem multiset.not_mem_range_self - def multiset.range - theorem multiset.range_subset - theorem multiset.range_succ - theorem multiset.range_zero - theorem multiset.self_mem_range_succ Modified src/data/multiset/nodup.lean Added src/data/multiset/range.lean + theorem multiset.card_range + theorem multiset.mem_range + theorem multiset.not_mem_range_self + def multiset.range + theorem multiset.range_subset + theorem multiset.range_succ + theorem multiset.range_zero + theorem multiset.self_mem_range_succ Modified src/data/nat/prime.lean Modified src/data/num/lemmas.lean Modified src/data/rat/basic.lean +/- theorem rat.coe_int_inj Modified src/data/rat/cast.lean Modified src/tactic/ring.lean Modified src/tactic/zify.lean Modified test/norm_cast_int.lean 2020-07-10 10:35:29 a348944 chore(topology): rename compact to is_compact (#3356) ESTIMATED CHANGES Modified src/analysis/convex/topology.lean +/- theorem compact_std_simplex Modified src/measure_theory/lebesgue_measure.lean +/- theorem real.volume_lt_top_of_compact Modified src/topology/algebra/group.lean +/- theorem compact_covered_by_mul_left_translates +/- theorem compact_open_separated_mul Modified src/topology/algebra/ordered.lean - theorem compact.Inf_mem - theorem compact.Sup_mem - theorem compact.bdd_above - theorem compact.bdd_below - theorem compact.exists_Inf_image_eq - theorem compact.exists_Sup_image_eq - theorem compact.exists_forall_ge - theorem compact.exists_forall_le - theorem compact.exists_is_glb - theorem compact.exists_is_greatest - theorem compact.exists_is_least - theorem compact.exists_is_lub - theorem compact.is_glb_Inf - theorem compact.is_greatest_Sup - theorem compact.is_least_Inf - theorem compact.is_lub_Sup +/- theorem eq_Icc_of_connected_compact + theorem is_compact.Inf_mem + theorem is_compact.Sup_mem + theorem is_compact.bdd_above + theorem is_compact.bdd_below + theorem is_compact.exists_Inf_image_eq + theorem is_compact.exists_Sup_image_eq + theorem is_compact.exists_forall_ge + theorem is_compact.exists_forall_le + theorem is_compact.exists_is_glb + theorem is_compact.exists_is_greatest + theorem is_compact.exists_is_least + theorem is_compact.exists_is_lub + theorem is_compact.is_glb_Inf + theorem is_compact.is_greatest_Sup + theorem is_compact.is_least_Inf + theorem is_compact.is_lub_Sup Modified src/topology/bounded_continuous_function.lean Modified src/topology/compact_open.lean Modified src/topology/compacts.lean +/- def topological_space.compacts +/- def topological_space.nonempty_compacts +/- def topological_space.positive_compacts: Modified src/topology/homeomorph.lean +/- theorem homeomorph.compact_image +/- theorem homeomorph.compact_preimage Modified src/topology/instances/real.lean +/- theorem compact_Icc Modified src/topology/metric_space/basic.lean +/- theorem metric.bounded_of_compact Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.countable_closure_of_compact Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/separation.lean - theorem compact.binary_compact_cover - theorem compact.finite_compact_cover - theorem compact.inter - theorem compact.is_closed + theorem is_compact.binary_compact_cover + theorem is_compact.finite_compact_cover + theorem is_compact.inter + theorem is_compact.is_closed +/- theorem locally_compact_of_compact_nhds Modified src/topology/sequences.lean - theorem compact.seq_compact - theorem compact.tendsto_subseq' - theorem compact.tendsto_subseq + theorem is_compact.is_seq_compact + theorem is_compact.tendsto_subseq' + theorem is_compact.tendsto_subseq + theorem is_seq_compact.subseq_of_frequently_in + theorem is_seq_compact.totally_bounded + def is_seq_compact +/- theorem metric.compact_iff_seq_compact - theorem seq_compact.subseq_of_frequently_in - theorem seq_compact.totally_bounded - def seq_compact Modified src/topology/subset_properties.lean - theorem compact.adherence_nhdset - theorem compact.elim_finite_subcover - theorem compact.elim_finite_subcover_image - theorem compact.elim_finite_subfamily_closed - theorem compact.image - theorem compact.image_of_continuous_on - theorem compact.inter_left - theorem compact.inter_right - theorem compact.nonempty_Inter_of_directed_nonempty_compact_closed - theorem compact.nonempty_Inter_of_sequence_nonempty_compact_closed - theorem compact.prod - theorem compact.union - def compact +/- theorem compact_diff +/- theorem compact_empty +/- theorem compact_iff_compact_space +/- theorem compact_iff_compact_univ +/- theorem compact_singleton +/- theorem compact_univ +/- theorem compact_univ_pi +/- theorem generalized_tube_lemma + theorem is_compact.adherence_nhdset + theorem is_compact.elim_finite_subcover + theorem is_compact.elim_finite_subcover_image + theorem is_compact.elim_finite_subfamily_closed + theorem is_compact.image + theorem is_compact.image_of_continuous_on + theorem is_compact.inter_left + theorem is_compact.inter_right + theorem is_compact.nonempty_Inter_of_directed_nonempty_compact_closed + theorem is_compact.nonempty_Inter_of_sequence_nonempty_compact_closed + theorem is_compact.prod + theorem is_compact.union + def is_compact +/- theorem nhds_contain_boxes_of_compact - theorem set.finite.compact + theorem set.finite.is_compact Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean - theorem compact.uniform_continuous_on_of_continuous' - theorem compact.uniform_continuous_on_of_continuous + theorem is_compact.uniform_continuous_on_of_continuous' + theorem is_compact.uniform_continuous_on_of_continuous 2020-07-10 07:09:28 79bb8b7 feat(linear_algebra/cayley_hamilton): the Cayley-Hamilton theorem (#3276) The Cayley-Hamilton theorem, following the proof at http://drorbn.net/AcademicPensieve/2015-12/CayleyHamilton.pdf. ESTIMATED CHANGES Added src/linear_algebra/char_poly.lean + def char_matrix + theorem char_matrix_apply_eq + theorem char_matrix_apply_ne + def char_poly + theorem char_poly_map_eval_self + theorem mat_poly_equiv_char_matrix Modified src/ring_theory/polynomial_algebra.lean 2020-07-10 06:31:16 66db1ad refactor(algebra/homology): handle co/homology uniformly (#3316) A refactor of `algebra/homology` so homology and cohomology are handled uniformly, and factor out a file `image_to_kernel_map.lean` which gains some extra lemmas (which will be useful for talking about exact sequences). ESTIMATED CHANGES Modified src/algebra/homology/chain_complex.lean - theorem chain_complex.comm - theorem chain_complex.comm_at - theorem chain_complex.d_squared - def chain_complex.forget - theorem cochain_complex.comm - theorem cochain_complex.comm_at - theorem cochain_complex.d_squared - def cochain_complex.forget + theorem homological_complex.comm + theorem homological_complex.comm_at + theorem homological_complex.d_squared + def homological_complex.forget + def homological_complex Modified src/algebra/homology/homology.lean +/- def cochain_complex.cohomology - def cochain_complex.cohomology_functor + def cochain_complex.cohomology_group +/- def cochain_complex.cohomology_map - theorem cochain_complex.cohomology_map_comp - theorem cochain_complex.cohomology_map_condition - theorem cochain_complex.cohomology_map_id + def cochain_complex.graded_cohomology - def cochain_complex.image_map - theorem cochain_complex.image_map_ι - def cochain_complex.image_to_kernel_map - theorem cochain_complex.image_to_kernel_map_condition - theorem cochain_complex.induced_maps_commute - def cochain_complex.kernel_functor - def cochain_complex.kernel_map - theorem cochain_complex.kernel_map_comp - theorem cochain_complex.kernel_map_condition - theorem cochain_complex.kernel_map_id + def homological_complex.graded_homology + def homological_complex.homology + def homological_complex.homology_group + def homological_complex.homology_map + theorem homological_complex.homology_map_comp + theorem homological_complex.homology_map_condition + theorem homological_complex.homology_map_id + def homological_complex.image_map + theorem homological_complex.image_map_ι + def homological_complex.image_to_kernel_map + theorem homological_complex.image_to_kernel_map_comp_kernel_map + theorem homological_complex.image_to_kernel_map_condition + def homological_complex.kernel_functor + def homological_complex.kernel_map + theorem homological_complex.kernel_map_comp + theorem homological_complex.kernel_map_condition + theorem homological_complex.kernel_map_id Added src/algebra/homology/image_to_kernel_map.lean + def category_theory.image_to_kernel_map + theorem category_theory.image_to_kernel_map_epi_of_epi_of_zero + theorem category_theory.image_to_kernel_map_epi_of_zero_of_mono + theorem category_theory.image_to_kernel_map_zero_left + theorem category_theory.image_to_kernel_map_zero_right Modified src/category_theory/limits/shapes/kernels.lean 2020-07-10 05:40:16 bcf733f feat(data/matrix): add matrix.map and supporting lemmas (#3352) As [requested](https://github.com/leanprover-community/mathlib/pull/3276/files#r452366674). ESTIMATED CHANGES Modified src/data/matrix/basic.lean + def add_monoid_hom.map_matrix + theorem add_monoid_hom.map_matrix_apply + theorem matrix.diagonal_map - theorem matrix.elementary_eq_basis_mul_basis + def matrix.map + theorem matrix.map_add + theorem matrix.map_apply + theorem matrix.map_mul + theorem matrix.map_zero - theorem matrix.matrix_eq_sum_elementary + theorem matrix.matrix_eq_sum_std_basis + theorem matrix.one_map + theorem matrix.std_basis_eq_basis_mul_basis + theorem matrix.transpose_map +/- theorem matrix.transpose_mul +/- theorem matrix.transpose_neg +/- theorem matrix.transpose_smul +/- theorem matrix.transpose_sub + def ring_hom.map_matrix + theorem ring_hom.map_matrix_apply Modified src/ring_theory/matrix_algebra.lean - theorem matrix_equiv_tensor_apply_elementary + theorem matrix_equiv_tensor_apply_std_basis Modified src/ring_theory/polynomial_algebra.lean 2020-07-10 04:14:30 8b630df feat(ring_theory/matrix_algebra): drop commutativity assumption (#3351) Remove the unnecessary assumption that `A` is commutative in `matrix n n A ≃ₐ[R] (A ⊗[R] matrix n n R)`. (This didn't cause a problem for Cayley-Hamilton, but @alexjbest and Bassem Safieldeen [realised it's not necessary](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Tensor.20product.20of.20matrices).) ESTIMATED CHANGES Modified src/ring_theory/matrix_algebra.lean 2020-07-10 04:14:28 c949dd4 chore(logic/embedding): reuse proofs from `data.*` (#3341) Other changes: * rename `injective.prod` to `injective.prod_map`; * add `surjective.prod_map`; * redefine `sigma.map` without pattern matching; * rename `sigma_map_injective` to `injective.sigma_map`; * add `surjective.sigma_map`; * add `injective.sum_map` and `surjective.sum_map`; * rename `embedding.prod_congr` to `embedding.prod_map`; * rename `embedding.sum_congr` to `embedding.sum_map`; * delete `embedding.sigma_congr_right`, add more general `embedding.sigma_map`. ESTIMATED CHANGES Modified src/data/prod.lean - theorem function.injective.prod + theorem function.injective.prod_map + theorem function.surjective.prod_map Modified src/data/sigma/basic.lean + theorem function.injective.sigma_map + theorem function.surjective.sigma_map +/- def sigma.map - theorem sigma_map_injective Modified src/data/sum.lean + theorem function.injective.sum_map + theorem function.surjective.sum_map Modified src/logic/embedding.lean + theorem function.embedding.coe_prod_map + theorem function.embedding.coe_sigma_map + theorem function.embedding.coe_sum_map - def function.embedding.prod_congr + def function.embedding.prod_map - def function.embedding.sigma_congr_right + def function.embedding.sigma_map - def function.embedding.sum_congr - theorem function.embedding.sum_congr_apply_inl - theorem function.embedding.sum_congr_apply_inr + def function.embedding.sum_map Modified src/set_theory/cardinal.lean Modified src/set_theory/game/domineering.lean Modified src/set_theory/ordinal.lean Modified src/topology/constructions.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-07-10 02:38:09 92d508a chore(*): import tactic.basic as early as possible, and reduce imports (#3333) As discussed on [zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/import.20refactor.20and.20library_search), #3235 had the unfortunate effect of making `library_search` and `#where` and various other things unavailable in many places in mathlib. This PR makes an effort to import `tactic.basic` as early as possible, while otherwise reducing unnecessary imports. 1. import `tactic.basic` "as early as possible" (i.e. in any file that `tactic.basic` doesn't depend on, and which imports any tactic strictly between `tactic.core` and `tactic.basic`, just `import tactic.basic` itself 2. add `tactic.finish`, `tactic.tauto` and `tactic.norm_cast` to tactic.basic (doesn't requires adding any dependencies) 3. delete various unnecessary imports ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/group/basic.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/defs.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/semiconj.lean Modified src/algebra/group/units.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/homology/homology.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring.lean Modified src/category_theory/category/default.lean Modified src/category_theory/concrete_category/bundled.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/types.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/local_equiv.lean Modified src/data/finset/sort.lean Modified src/data/fintype/card.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/forall2.lean Modified src/data/list/func.lean Modified src/data/list/pairwise.lean Modified src/data/nat/basic.lean Modified src/data/opposite.lean Modified src/data/option/basic.lean Modified src/data/polynomial.lean Modified src/data/prod.lean Modified src/data/seq/computation.lean Modified src/data/set/basic.lean Modified src/data/set/intervals/basic.lean Modified src/data/sym.lean Modified src/data/sym2.lean Modified src/data/vector2.lean Modified src/group_theory/eckmann_hilton.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/logic/nontrivial.lean Modified src/logic/relation.lean Modified src/logic/unique.lean Modified src/order/basic.lean Modified src/order/bounded_lattice.lean Modified src/order/rel_classes.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_operations.lean Modified src/tactic/basic.lean Modified src/tactic/chain.lean Modified src/tactic/interactive.lean Modified src/tactic/noncomm_ring.lean Modified src/tactic/push_neg.lean Modified src/tactic/wlog.lean Modified test/mk_iff_of_inductive.lean 2020-07-10 00:38:39 997025d chore(scripts): update nolints.txt (#3350) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-09 22:44:21 270e3c9 chore(data/fintype/basic): add `finset.order_top` and `finset.bounded_distrib_lattice` (#3345) ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2020-07-09 22:44:20 f5fa614 chore(*): some monotonicity lemmas (#3344) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.bInter_mono' + theorem set.bInter_mono Modified src/order/filter/basic.lean +/- theorem filter.comap_mono +/- theorem filter.map_mono +/- theorem filter.monotone_principal +/- theorem filter.prod_mono +/- theorem filter.seq_mono Modified src/tactic/monotonicity/lemmas.lean 2020-07-09 21:17:53 d6e9f97 feat(topology/basic): yet another mem_closure (#3348) ESTIMATED CHANGES Modified src/order/filter/basic.lean +/- theorem filter.comap_ne_bot + theorem filter.comap_ne_bot_iff Modified src/topology/basic.lean + theorem mem_closure_iff_comap_ne_bot 2020-07-09 21:17:51 ac62213 chore(order/filter/at_top_bot): in `order_top` `at_top = pure ⊤` (#3346) ESTIMATED CHANGES Modified src/order/filter/at_top_bot.lean + theorem filter.order_top.at_top_eq + theorem filter.tendsto_at_top_pure Modified src/topology/basic.lean + theorem order_top.tendsto_at_top 2020-07-09 21:17:48 4a63f3f feat(data/indicator_function): add `indicator_range_comp` (#3343) Add * `comp_eq_of_eq_on_range`; * `piecewise_eq_on`; * `piecewise_eq_on_compl`; * `piecewise_compl`; * `piecewise_range_comp`; * `indicator_range_comp`. ESTIMATED CHANGES Modified src/data/indicator_function.lean +/- theorem set.indicator_le_indicator + theorem set.indicator_range_comp Modified src/data/set/function.lean + theorem set.comp_eq_of_eq_on_range + theorem set.piecewise_compl + theorem set.piecewise_eq_on + theorem set.piecewise_eq_on_compl + theorem set.piecewise_range_comp 2020-07-09 16:34:14 d6ecb44 feat(topology/basic): closure in term of subtypes (#3339) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.nonempty_inter_iff_exists_left + theorem set.nonempty_inter_iff_exists_right Modified src/topology/basic.lean + theorem mem_closure_iff_nhds' 2020-07-09 15:24:02 593a4c8 fix(tactic/norm_cast): remove bad norm_cast lemma (#3340) This was identified as a move_cast lemma, which meant it was rewriting to the LHS which it couldn't reduce. It's better to let the conditional rewriting handle nat subtraction -- if the right inequality is in the context there's no need to go to `int.sub_nat_nat`. ESTIMATED CHANGES Modified src/data/int/basic.lean +/- theorem int.cast_sub_nat_nat Modified src/number_theory/bernoulli.lean 2020-07-09 14:50:06 33ca9f1 doc(category_theory/terminal): add doc-strings (#3338) Just adding some doc-strings. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean 2020-07-09 13:55:03 9d47b28 feat(data): Mark all `sqrt`s as `@[pp_nodot]` (#3337) ESTIMATED CHANGES Modified src/data/int/sqrt.lean +/- def int.sqrt Modified src/data/nat/sqrt.lean +/- def nat.sqrt Modified src/data/rat/order.lean +/- def rat.sqrt Modified src/data/real/basic.lean 2020-07-09 05:00:10-07:00 e4ecf14 I'm just another maintainer ESTIMATED CHANGES Modified README.md 2020-07-09 10:43:05 be2e42f chore(ring_theory/algebraic): speedup slow proof (#3336) ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + theorem subalgebra.val_apply Modified src/ring_theory/algebraic.lean 2020-07-09 06:11:02 c06f500 feat(logic/basic): add eq_iff_true_of_subsingleton (#3308) I'm surprised we didn't have this already. ```lean example (x y : unit) : x = y := by simp ``` ESTIMATED CHANGES Modified src/linear_algebra/basis.lean Modified src/logic/basic.lean + theorem eq_iff_true_of_subsingleton Modified src/tactic/fin_cases.lean Modified src/tactic/norm_num.lean Modified test/fin_cases.lean Modified test/tidy.lean - def tidy.test.tidy_test_0 2020-07-09 03:35:05 95cc1b1 refactor(topology/dense_embedding): simplify proof (#3329) Using filter bases, we can give a cleaner proof of continuity of extension by continuity. Also switch to use the "new" `continuous_at` in the statement. ESTIMATED CHANGES Modified src/topology/basic.lean + theorem nhds_basis_opens' Modified src/topology/dense_embedding.lean + theorem dense_inducing.continuous_at_extend - theorem dense_inducing.tendsto_extend Modified src/topology/separation.lean + theorem closed_nhds_basis 2020-07-09 03:35:03 d5cfa87 fix(tactic/lint/type_classes): add missing unfreeze_local_instances (#3328) ESTIMATED CHANGES Modified src/tactic/cache.lean Modified src/tactic/lint/simp.lean Modified src/tactic/lint/type_classes.lean Modified test/lint_coe_to_fun.lean + structure with_tc_param.equiv + structure with_tc_param.sparkling_equiv 2020-07-09 03:06:58 b535b0a fix(tactic/default): add transport, equiv_rw (#3330) Also added a tactic doc entry for `transport`. ESTIMATED CHANGES Modified src/tactic/default.lean Modified src/tactic/transport.lean 2020-07-09 00:41:30 65dcf4d chore(scripts): update nolints.txt (#3331) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-08 20:57:45 782013d fix(tactic/monotonicity): support monotone in mono (#3310) This PR allow the `mono` tactic to use lemmas stated using `monotone`. Mostly authored by Simon Hudon ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/tactic/monotonicity/basic.lean Modified src/tactic/monotonicity/interactive.lean Modified test/monotonicity/test_cases.lean + theorem test 2020-07-08 17:40:17 19225c3 chore(*): update to 3.17.1 (#3327) ESTIMATED CHANGES Modified leanpkg.toml 2020-07-08 14:31:06 27f622e chore(data/fintype/basic): split, and reduce imports (#3319) Following on from #3256 and #3235, this slices a little out of `data.fintype.basic`, and reduces imports, mostly in the vicinity of `data.fintype.basic`. ESTIMATED CHANGES Modified src/combinatorics/composition.lean Modified src/control/bifunctor.lean Modified src/control/bitraversable/basic.lean Modified src/control/bitraversable/instances.lean Modified src/data/equiv/list.lean Modified src/data/finset/basic.lean + def finset.fin_range + theorem finset.fin_range_card + theorem finset.mem_fin_range Modified src/data/finset/sort.lean + theorem finset.mono_of_fin_unique' Modified src/data/fintype/basic.lean - theorem finset.mono_of_fin_unique' Added src/data/fintype/sort.lean Modified src/data/polynomial.lean Modified src/data/set/basic.lean Modified src/data/set/intervals/basic.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/multilinear.lean Modified src/order/rel_classes.lean Modified src/tactic/equiv_rw.lean 2020-07-08 14:31:04 f90fcc9 chore(*): use is_algebra_tower instead of algebra.comap and generalize some constructions to semirings (#3299) `algebra.comap` is now reserved to the **creation** of new algebra instances. For assumptions of theorems / constructions, `is_algebra_tower` is the new way to do it. For example: ```lean variables [algebra K L] [algebra L A] lemma is_algebraic_trans (L_alg : is_algebraic K L) (A_alg : is_algebraic L A) : is_algebraic K (comap K L A) := ``` is now written as: ```lean variables [algebra K L] [algebra L A] [algebra K A] [is_algebra_tower K L A] lemma is_algebraic_trans (L_alg : is_algebraic K L) (A_alg : is_algebraic L A) : is_algebraic K A := ``` ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean Modified src/data/mv_polynomial.lean Modified src/data/polynomial.lean + theorem polynomial.aeval_alg_hom + theorem polynomial.aeval_alg_hom_apply +/- theorem polynomial.dvd_term_of_dvd_eval_of_dvd_terms +/- theorem polynomial.dvd_term_of_is_root_of_dvd_terms Modified src/field_theory/splitting_field.lean Modified src/linear_algebra/tensor_product.lean +/- theorem linear_map.map_neg₂ +/- def tensor_product.map +/- def tensor_product.mk Modified src/ring_theory/adjoin.lean + theorem algebra.adjoin_eq_ring_closure +/- theorem algebra.adjoin_int +/- theorem algebra.adjoin_singleton_eq_range + theorem algebra.mem_adjoin_iff Modified src/ring_theory/algebra.lean + def alg_hom_nat + theorem mem_subalgebra_of_subsemiring + theorem span_nat_eq + theorem span_nat_eq_add_group_closure + theorem subalgebra.add_mem + theorem subalgebra.algebra_map_mem + theorem subalgebra.coe_int_mem + theorem subalgebra.coe_nat_mem + theorem subalgebra.gsmul_mem + theorem subalgebra.list_prod_mem + theorem subalgebra.list_sum_mem + theorem subalgebra.mem_to_submodule +/- theorem subalgebra.mul_mem + theorem subalgebra.multiset_prod_mem + theorem subalgebra.multiset_sum_mem + theorem subalgebra.neg_mem + theorem subalgebra.nsmul_mem + theorem subalgebra.one_mem + theorem subalgebra.pow_mem + theorem subalgebra.prod_mem +/- theorem subalgebra.range_le + theorem subalgebra.range_subset + theorem subalgebra.smul_mem + theorem subalgebra.srange_le + theorem subalgebra.sub_mem + theorem subalgebra.sum_mem + theorem subalgebra.to_submodule_inj + theorem subalgebra.to_submodule_injective +/- def subalgebra.under + theorem subalgebra.zero_mem + def subalgebra_of_subsemiring Modified src/ring_theory/algebra_operations.lean +/- theorem submodule.map_mul Modified src/ring_theory/algebra_tower.lean + theorem is_algebra_tower.aeval_apply + def is_algebra_tower.restrict_base + theorem is_algebra_tower.restrict_base_apply + theorem is_algebra_tower.to_alg_hom_apply Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean + theorem is_integral_alg_hom +/- theorem is_integral_trans_aux Modified src/ring_theory/localization.lean +/- theorem fraction_map.comap_is_algebraic_iff +/- def integral_closure.fraction_map_of_finite_extension + theorem localization_map.algebra_map_eq +/- theorem localization_map.integer_normalization_aeval_eq_zero Modified src/ring_theory/subsemiring.lean +/- theorem subsemiring.ext + theorem subsemiring.mem_closure_iff + theorem subsemiring.mem_closure_iff_exists_list 2020-07-08 14:31:02 ba8af8c feat(ring_theory/polynomial_algebra): polynomial A ≃ₐ[R] (A ⊗[R] polynomial R) (#3275) This is a formal nonsense preliminary to the Cayley-Hamilton theorem, which comes in the next PR. We produce the algebra isomorphism `polynomial A ≃ₐ[R] (A ⊗[R] polynomial R)`, and as a consequence also the algebra isomorphism ``` matrix n n (polynomial R) ≃ₐ[R] polynomial (matrix n n R) ``` which is characterized by ``` coeff (matrix_polynomial_equiv_polynomial_matrix m) k i j = coeff (m i j) k ``` ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/monoid_algebra.lean +/- def add_monoid_algebra.algebra_map' +/- def monoid_algebra.algebra_map' Modified src/data/polynomial.lean +/- def polynomial.C + theorem polynomial.algebra_map_apply Added src/ring_theory/polynomial_algebra.lean + theorem mat_poly_equiv_coeff_apply + theorem mat_poly_equiv_coeff_apply_aux_1 + theorem mat_poly_equiv_coeff_apply_aux_2 + theorem mat_poly_equiv_smul_one + theorem mat_poly_equiv_symm_apply_coeff + def poly_equiv_tensor.equiv + def poly_equiv_tensor.inv_fun + theorem poly_equiv_tensor.inv_fun_add + theorem poly_equiv_tensor.left_inv + theorem poly_equiv_tensor.right_inv + def poly_equiv_tensor.to_fun + def poly_equiv_tensor.to_fun_alg_hom + theorem poly_equiv_tensor.to_fun_alg_hom_apply_tmul + def poly_equiv_tensor.to_fun_bilinear + def poly_equiv_tensor.to_fun_linear + theorem poly_equiv_tensor.to_fun_linear_algebra_map_tmul_one + theorem poly_equiv_tensor.to_fun_linear_mul_tmul_mul + theorem poly_equiv_tensor.to_fun_linear_mul_tmul_mul_aux_1 + theorem poly_equiv_tensor.to_fun_linear_mul_tmul_mul_aux_2 + def poly_equiv_tensor.to_fun_linear_right + def poly_equiv_tensor + theorem poly_equiv_tensor_apply + theorem poly_equiv_tensor_symm_apply_tmul Modified src/ring_theory/tensor_product.lean 2020-07-08 13:22:00 8f6090c feat(algebra/ordered_field): missing lemma (#3324) ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem one_div_le 2020-07-08 11:56:25 97853b9 doc(tactic/lean_core_docs): remove "hypothesis management" tag (#3323) ESTIMATED CHANGES Modified src/tactic/lean_core_docs.lean 2020-07-08 10:26:52 a3e21a8 feat(category_theory/zero): lemmas about zero objects and zero morphisms, and improve docs (#3315) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.cokernel.desc_zero - def category_theory.limits.cokernel.π_zero_is_iso + theorem category_theory.limits.kernel.lift_zero - def category_theory.limits.kernel.ι_zero_is_iso Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.epi_of_target_iso_zero + def category_theory.limits.has_image.zero - theorem category_theory.limits.has_zero_object.zero_of_from_zero - theorem category_theory.limits.has_zero_object.zero_of_to_zero + theorem category_theory.limits.id_zero + def category_theory.limits.id_zero_equiv_iso_zero + theorem category_theory.limits.id_zero_equiv_iso_zero_apply_hom + theorem category_theory.limits.id_zero_equiv_iso_zero_apply_inv + theorem category_theory.limits.image.ι_zero' + theorem category_theory.limits.image.ι_zero + def category_theory.limits.image_zero' + def category_theory.limits.image_zero + def category_theory.limits.is_iso_zero_equiv + def category_theory.limits.is_iso_zero_equiv_iso_zero + def category_theory.limits.is_iso_zero_self_equiv + def category_theory.limits.is_iso_zero_self_equiv_iso_zero + def category_theory.limits.mono_factorisation_zero + theorem category_theory.limits.mono_of_source_iso_zero + theorem category_theory.limits.zero_of_from_zero + theorem category_theory.limits.zero_of_source_iso_zero + theorem category_theory.limits.zero_of_target_iso_zero + theorem category_theory.limits.zero_of_to_zero 2020-07-08 10:26:50 fbb49cb refactor(*): place map_map in the functor namespace (#3309) Renames `_root_.map_map` to `functor.map_map` and `filter.comap_comap_comp` to `filter.comap_comap` (which is consistent with `filter.map_map`). ESTIMATED CHANGES Modified src/control/basic.lean + theorem functor.map_map Modified src/order/filter/basic.lean + theorem filter.comap_comap - theorem filter.comap_comap_comp Modified src/topology/algebra/uniform_group.lean Modified src/topology/dense_embedding.lean Modified src/topology/metric_space/basic.lean Modified src/topology/uniform_space/basic.lean + theorem uniform_space.comap_comap - theorem uniform_space.comap_comap_comp Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-07-08 09:01:29 afae2c4 doc(tactic/localized): unnecessary escape characters (#3322) This is probably left over from when it was a string literal instead of a doc string. ESTIMATED CHANGES Modified src/tactic/localized.lean 2020-07-08 08:25:47 18246ac refactor(category_theory/finite_limits): reorganise import hierarchy (#3320) Previously, all of the "special shapes" that happened to be finite imported `category_theory.limits.shapes.finite_limits`. Now it's the other way round, which I think ends up being cleaner. This also results in some significant reductions to the dependency graph (e.g. talking about homology of complexes no longer requires compiling `data.fintype.basic` and all its antecedents). No actual content, just moving content around. ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean Modified docs/tutorial/category_theory/intro.lean Modified src/algebra/homology/chain_complex.lean Modified src/category_theory/abelian/non_preadditive.lean Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/connected.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/shapes/binary_products.lean - theorem category_theory.limits.braid_natural - def category_theory.limits.coprod.associator - theorem category_theory.limits.coprod.associator_naturality - def category_theory.limits.coprod.braiding - def category_theory.limits.coprod.left_unitor - theorem category_theory.limits.coprod.pentagon - def category_theory.limits.coprod.right_unitor - theorem category_theory.limits.coprod.symmetry' - theorem category_theory.limits.coprod.symmetry - theorem category_theory.limits.coprod.triangle - def category_theory.limits.prod.associator - theorem category_theory.limits.prod.associator_naturality - def category_theory.limits.prod.braiding - def category_theory.limits.prod.left_unitor - theorem category_theory.limits.prod.pentagon - def category_theory.limits.prod.right_unitor - theorem category_theory.limits.prod.symmetry' - theorem category_theory.limits.prod.symmetry - theorem category_theory.limits.prod.triangle - def category_theory.limits.prod_functor_left_comp - theorem category_theory.limits.prod_left_unitor_hom_naturality - theorem category_theory.limits.prod_left_unitor_inv_naturality - theorem category_theory.limits.prod_right_unitor_hom_naturality - theorem category_theory.limits.prod_right_unitor_inv_naturality Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/default.lean Modified src/category_theory/limits/shapes/equalizers.lean - def category_theory.limits.has_coequalizers_of_has_finite_colimits - def category_theory.limits.has_equalizers_of_has_finite_limits Modified src/category_theory/limits/shapes/finite_limits.lean + def category_theory.limits.has_coequalizers_of_has_finite_colimits + def category_theory.limits.has_equalizers_of_has_finite_limits + def category_theory.limits.has_finite_wide_pullbacks_of_has_finite_limits + def category_theory.limits.has_finite_wide_pushouts_of_has_finite_limits + def category_theory.limits.has_pullbacks_of_has_finite_limits + def category_theory.limits.has_pushouts_of_has_finite_colimits Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/kernels.lean - def category_theory.limits.has_cokernels_of_has_finite_colimits - def category_theory.limits.has_kernels_of_has_finite_limits Modified src/category_theory/limits/shapes/pullbacks.lean - def category_theory.limits.has_pullbacks_of_has_finite_limits - def category_theory.limits.has_pushouts_of_has_finite_colimits Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/shapes/wide_pullbacks.lean - def has_finite_wide_pullbacks_of_has_finite_limits - def has_finite_wide_pushouts_of_has_finite_limits Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/monoidal/of_has_finite_products.lean + theorem category_theory.limits.braid_natural + def category_theory.limits.coprod.associator + theorem category_theory.limits.coprod.associator_naturality + def category_theory.limits.coprod.braiding + def category_theory.limits.coprod.left_unitor + theorem category_theory.limits.coprod.pentagon + def category_theory.limits.coprod.right_unitor + theorem category_theory.limits.coprod.symmetry' + theorem category_theory.limits.coprod.symmetry + theorem category_theory.limits.coprod.triangle + def category_theory.limits.prod.associator + theorem category_theory.limits.prod.associator_naturality + def category_theory.limits.prod.braiding + def category_theory.limits.prod.left_unitor + theorem category_theory.limits.prod.pentagon + def category_theory.limits.prod.right_unitor + theorem category_theory.limits.prod.symmetry' + theorem category_theory.limits.prod.symmetry + theorem category_theory.limits.prod.triangle + def category_theory.limits.prod_functor_left_comp + theorem category_theory.limits.prod_left_unitor_hom_naturality + theorem category_theory.limits.prod_left_unitor_inv_naturality + theorem category_theory.limits.prod_right_unitor_hom_naturality + theorem category_theory.limits.prod_right_unitor_inv_naturality Modified src/category_theory/monoidal/types.lean Modified src/category_theory/punit.lean 2020-07-08 07:12:45 13eea4c chore(category_theory/images): cleanup (#3314) Just some cleanup, and adding two easy lemmas. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.epi_image_of_epi + theorem category_theory.limits.image.eq_fac + theorem category_theory.limits.image.ext 2020-07-08 07:12:43 eb271b2 feat(data/int/basic): some lemmas (#3313) A few small lemmas about `to_nat` that I wanted while playing with exact sequences. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.le_add_one + theorem int.to_nat_add + theorem int.to_nat_add_one + theorem int.to_nat_coe_nat_add_one + theorem int.to_nat_one + theorem int.to_nat_zero 2020-07-08 05:45:29 ff1aea5 feat(data/equiv): α × α ≃ α for [subsingleton α] (#3312) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def subsingleton_prod_self_equiv Modified src/logic/basic.lean 2020-07-08 00:37:50 e987f62 chore(scripts): update nolints.txt (#3311) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-07 19:51:20 23f449b feat(topology/metric_space/basic): add closed_ball_mem_nhds (#3305) I found this lemma handy when converting between the epsilon-N definition of convergence and the filter definition ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.closed_ball_mem_nhds 2020-07-07 17:45:54 35940dd feat(linear_algebra/finite_dimensional): add dim_sup_add_dim_inf_eq (#3304) Adding a finite-dimensional version of dim(W+X)+dim(W \cap X)=dim(W)+dim(X) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem submodule.dim_sup_add_dim_inf_eq 2020-07-07 16:39:23 ea10944 feat(data/list/defs): list.singleton_append and list.bind_singleton (#3298) I found these useful when working with palindromes and Fibonacci words respectively. While `bind_singleton` is available as a monad law, I find the specialized version more convenient. ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.bind_singleton + theorem list.singleton_append 2020-07-07 15:15:11 11ba687 chore(algebra/big_operators): use proper `*_with_zero` class in `prod_eq_zero(_iff)` (#3303) Also add a missing instance `comm_semiring → comm_monoid_with_zero`. ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/ring.lean Modified src/data/support.lean + theorem function.mem_support +/- theorem function.support_prod + theorem function.support_prod_subset 2020-07-07 09:59:21 12c2acb feat(algebra/continued_fractions): add first set of approximation lemmas (#3218) ESTIMATED CHANGES Added src/algebra/continued_fractions/computation/approximations.lean + theorem generalized_continued_fraction.exists_int_eq_of_part_denom + theorem generalized_continued_fraction.fib_le_of_continuants_aux_b + theorem generalized_continued_fraction.int_fract_pair.nth_stream_fr_lt_one + theorem generalized_continued_fraction.int_fract_pair.nth_stream_fr_nonneg + theorem generalized_continued_fraction.int_fract_pair.nth_stream_fr_nonneg_lt_one + theorem generalized_continued_fraction.int_fract_pair.one_le_succ_nth_stream_b + theorem generalized_continued_fraction.int_fract_pair.succ_nth_stream_b_le_nth_stream_fr_inv + theorem generalized_continued_fraction.le_of_succ_nth_denom + theorem generalized_continued_fraction.le_of_succ_succ_nth_continuants_aux_b + theorem generalized_continued_fraction.of_denom_mono + theorem generalized_continued_fraction.of_one_le_nth_part_denom + theorem generalized_continued_fraction.of_part_num_eq_one + theorem generalized_continued_fraction.of_part_num_eq_one_and_exists_int_part_denom_eq + theorem generalized_continued_fraction.succ_nth_fib_le_of_nth_denom + theorem generalized_continued_fraction.zero_le_of_continuants_aux_b + theorem generalized_continued_fraction.zero_le_of_denom Modified src/algebra/continued_fractions/computation/correctness_terminating.lean - theorem generalized_continued_fraction.comp_exact_value_correctness_of_stream_eq_none + theorem generalized_continued_fraction.of_correctness_of_nth_stream_eq_none Modified src/algebra/continued_fractions/computation/translations.lean + theorem generalized_continued_fraction.int_fract_pair.exists_succ_nth_stream_of_fr_zero + theorem generalized_continued_fraction.int_fract_pair.exists_succ_nth_stream_of_gcf_of_nth_eq_some - theorem generalized_continued_fraction.int_fract_pair.obtain_succ_nth_stream_of_fr_zero - theorem generalized_continued_fraction.int_fract_pair.obtain_succ_nth_stream_of_gcf_of_nth_eq_some Modified src/algebra/continued_fractions/continuants_recurrence.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/continued_fractions/terminated_stable.lean Modified src/algebra/continued_fractions/translations.lean + theorem generalized_continued_fraction.exists_conts_a_of_num + theorem generalized_continued_fraction.exists_conts_b_of_denom + theorem generalized_continued_fraction.exists_s_a_of_part_num + theorem generalized_continued_fraction.exists_s_b_of_part_denom + theorem generalized_continued_fraction.first_continuant_eq + theorem generalized_continued_fraction.first_denominator_eq + theorem generalized_continued_fraction.first_numerator_eq - theorem generalized_continued_fraction.obtain_conts_a_of_num - theorem generalized_continued_fraction.obtain_conts_b_of_denom - theorem generalized_continued_fraction.obtain_s_a_of_part_num - theorem generalized_continued_fraction.obtain_s_b_of_part_denom + theorem generalized_continued_fraction.second_continuant_aux_eq + theorem generalized_continued_fraction.zeroth_denominator_eq_one + theorem generalized_continued_fraction.zeroth_numerator_eq_h 2020-07-07 09:25:12 08ffbbb feat(analysis/normed_space/operator_norm): normed algebra of continuous linear maps (#3282) Given a normed space `E`, its continuous linear endomorphisms form a normed ring, and a normed algebra if `E` is nonzero. Moreover, the units of this ring are precisely the continuous linear equivalences. ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + def continuous_linear_equiv.of_unit + def continuous_linear_equiv.to_unit + def continuous_linear_equiv.units_equiv + theorem continuous_linear_equiv.units_equiv_to_continuous_linear_map 2020-07-07 04:39:03 095445e refactor(order/*): make `data.set.basic` import `order.bounded_lattice` (#3285) I have two goals: * make it possible to refactor `set` to use `lattice` operations; * make `submonoid.basic` independent of `data.nat.basic`. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/data/equiv/encodable.lean Modified src/data/nat/basic.lean Modified src/data/set/basic.lean + theorem set.bot_eq_empty +/- theorem set.image_eq_range + theorem set.inf_eq_inter + theorem set.le_eq_subset + theorem set.lt_eq_ssubset - def set.strict_subset + theorem set.sup_eq_union Modified src/data/set/intervals/basic.lean Modified src/data/set/lattice.lean - theorem set.bot_eq_empty - theorem set.inf_eq_inter - theorem set.le_eq_subset - theorem set.lt_eq_ssubset - theorem set.sup_eq_union Modified src/data/setoid/basic.lean Modified src/group_theory/congruence.lean + theorem con.rel_eq_coe Modified src/order/basic.lean - theorem directed.mono - theorem directed.mono_comp - def directed - theorem directed_comp - theorem directed_on.mono - def directed_on - theorem directed_on_iff_directed - theorem directed_on_image Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean + theorem bot_apply + theorem inf_apply + theorem sup_apply + theorem top_apply Modified src/order/complete_lattice.lean - def Inf +/- theorem Inf_apply - def Sup +/- theorem Sup_apply +/- theorem infi_apply +/- theorem supr_apply Added src/order/directed.lean + theorem directed.mono + theorem directed.mono_comp + def directed + theorem directed_comp + theorem directed_of_inf + theorem directed_of_sup + theorem directed_on.mono + def directed_on + theorem directed_on_iff_directed + theorem directed_on_image Modified src/order/filter/bases.lean Modified src/order/lattice.lean - theorem directed_of_inf - theorem directed_of_mono - theorem directed_of_sup Modified src/order/order_iso.lean - def order_embedding.nat_gt - def order_embedding.nat_lt - theorem order_embedding.well_founded_iff_no_descending_seq Added src/order/order_iso_nat.lean + def order_embedding.nat_gt + def order_embedding.nat_lt + theorem order_embedding.well_founded_iff_no_descending_seq Modified src/order/rel_classes.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/noetherian.lean Modified src/tactic/pi_instances.lean Modified src/topology/subset_properties.lean 2020-07-07 00:37:33 d62e71d chore(scripts): update nolints.txt (#3302) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-06 20:20:45 f548db4 feat(linear_algebra/affine_space): lattice structure on affine subspaces (#3288) Define a `complete_lattice` instance on affine subspaces of an affine space, and prove a few basic lemmas relating to it. (There are plenty more things that could be proved about it, that I think can reasonably be added later.) ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.vsub_set_empty Modified src/linear_algebra/affine_space.lean + theorem affine_space.vector_span_def + theorem affine_subspace.affine_span_eq_Inf + theorem affine_subspace.bot_coe + theorem affine_subspace.direction_bot + theorem affine_subspace.direction_inf + theorem affine_subspace.direction_top + theorem affine_subspace.exists_of_lt + theorem affine_subspace.inf_coe + theorem affine_subspace.le_def' + theorem affine_subspace.le_def + theorem affine_subspace.lt_def + theorem affine_subspace.lt_iff_le_and_exists + theorem affine_subspace.mem_inf_iff + theorem affine_subspace.mem_top - theorem affine_subspace.mem_univ + theorem affine_subspace.not_le_iff_exists + theorem affine_subspace.not_mem_bot + theorem affine_subspace.span_Union + theorem affine_subspace.span_empty + theorem affine_subspace.span_points_subset_coe_of_subset_coe + theorem affine_subspace.span_union + theorem affine_subspace.span_univ + theorem affine_subspace.top_coe - def affine_subspace.univ - theorem affine_subspace.univ_coe 2020-07-06 19:04:56 edd29d0 chore(ring_theory/power_series): weaken assumptions for nontrivial (#3301) ESTIMATED CHANGES Modified src/logic/nontrivial.lean Modified src/ring_theory/power_series.lean +/- theorem mv_power_series.X_inj 2020-07-06 17:34:23 c0926f0 chore(*): update to lean 3.17.0 (#3300) ESTIMATED CHANGES Modified leanpkg.toml Modified src/control/fold.lean Modified src/tactic/interactive_expr.lean 2020-07-06 16:58:21 f06e4e0 feat(data/sym2) Defining the symmetric square (unordered pairs) (#3264) This adds a type for the symmetric square of a type, which is the quotient of the cartesian square by permutations. These are also known as unordered pairs. Additionally, this provides some definitions and lemmas for equalities, functoriality, membership, and a relationship between symmetric relations and terms of the symmetric square. I preferred `sym2` over `unordered_pairs` out of a combination of familiarity and brevity, but I could go either way for naming. ESTIMATED CHANGES Added src/data/sym.lean + def sym.sym' + def sym.sym_equiv_sym' + def sym + def vector.perm.is_setoid Added src/data/sym2.lean + theorem sym2.congr_right + def sym2.diag + theorem sym2.eq_iff + theorem sym2.eq_swap + def sym2.equiv_multiset + def sym2.equiv_sym + def sym2.from_rel + theorem sym2.from_rel_irreflexive + theorem sym2.from_rel_proj_prop + theorem sym2.from_rel_prop + def sym2.is_diag + theorem sym2.is_diag_iff_proj_eq + def sym2.map + theorem sym2.map_comp + theorem sym2.map_id + def sym2.mem + theorem sym2.mem_iff + theorem sym2.mem_other_spec + theorem sym2.mk_has_mem + def sym2.mk_has_vmem + theorem sym2.other_is_mem_other + theorem sym2.rel.is_equivalence + theorem sym2.rel.symm + theorem sym2.rel.trans + inductive sym2.rel + def sym2.sym2_equiv_sym' + def sym2.vmem.other + def sym2.vmem + theorem sym2.vmem_other_spec + def sym2 2020-07-06 15:34:25 e3a1a61 feat(tactic/interactive): identity tactic (#3295) A surprisingly missing tactic combinator. ESTIMATED CHANGES Modified src/tactic/interactive.lean 2020-07-06 14:12:29 33b6cba refactor(*): replace nonzero with nontrivial (#3296) Introduce a typeclass `nontrivial` saying that a type has at least two distinct elements, and use it instead of the predicate `nonzero` requiring that `0` is different from `1`. These two predicates are equivalent in monoids with zero, which cover essentially all relevant ring-like situations, but `nontrivial` applies also to say that a vector space is nontrivial, for instance. Along the way, fix some quirks in the alebraic hierarchy (replacing fields `zero_ne_one` in many structures with extending `nontrivial`, for instance). Also, `quadratic_reciprocity` was timing out. I guess it was just below the threshold before the refactoring, and some of the changes related to typeclass inference made it just above after the change. So, I squeeze_simped it, going from 47s to 1.7s on my computer. Zulip discussion at https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/nonsingleton/near/202865366 ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem associated_zero_iff_eq_zero Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/char_p.lean +/- theorem char_p.false_of_nonzero_of_char_one +/- theorem char_p.ring_char_ne_one Modified src/algebra/classical_lie_algebras.lean +/- theorem lie_algebra.special_linear.sl_non_abelian Modified src/algebra/direct_limit.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_with_zero.lean +/- theorem is_unit.ne_zero +/- theorem not_is_unit_zero +/- theorem one_ne_zero - theorem subsingleton_or_nonzero +/- theorem units.ne_zero +/- theorem zero_ne_one Modified src/algebra/opposites.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring.lean +/- structure is_integral_domain - theorem nonzero.of_ne +/- theorem pred_ne_self +/- theorem succ_ne_self +/- theorem units.coe_ne_zero Modified src/analysis/normed_space/basic.lean +/- theorem frontier_closed_ball' +/- theorem interior_closed_ball' +/- theorem normed_algebra.to_nonzero +/- theorem units.norm_pos Modified src/analysis/normed_space/hahn_banach.lean +/- theorem exists_dual_vector' Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_equiv.norm_pos +/- theorem continuous_linear_equiv.norm_symm_pos +/- theorem continuous_linear_equiv.one_le_norm_mul_norm_symm +/- theorem continuous_linear_map.norm_id Modified src/analysis/normed_space/units.lean Modified src/data/complex/basic.lean Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/fintype/basic.lean + theorem fintype.card_le_one_iff_subsingleton + theorem fintype.one_lt_card_iff_nontrivial Modified src/data/int/basic.lean Modified src/data/matrix/pequiv.lean +/- theorem pequiv.to_matrix_injective Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.total_degree_X Modified src/data/nat/basic.lean Modified src/data/num/lemmas.lean Modified src/data/padics/padic_integers.lean Modified src/data/polynomial.lean +/- theorem polynomial.monic.ne_zero +/- theorem polynomial.nonzero.of_polynomial_ne Modified src/data/rat/basic.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/nnreal.lean Modified src/data/zmod/basic.lean Modified src/data/zsqrtd/basic.lean +/- theorem zsqrtd.conj_mul Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/perfect_closure.lean Modified src/field_theory/subfield.lean Modified src/group_theory/free_abelian_group.lean + theorem free_abelian_group.mul_def Modified src/linear_algebra/dimension.lean + theorem dim_pos +/- theorem dim_pos_iff_exists_ne_zero + theorem dim_pos_iff_nontrivial +/- theorem exists_mem_ne_zero_of_dim_pos +/- theorem is_basis.le_span Added src/logic/nontrivial.lean + theorem exists_ne + theorem exists_pair_ne + theorem nontrivial_iff + theorem nontrivial_of_ne + theorem not_nontrivial_iff_subsingleton + theorem subsingleton_iff + theorem subsingleton_or_nontrivial Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/order/filter/filter_product.lean Modified src/order/filter/germ.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/fintype.lean +/- theorem card_units_lt Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/ideal_operations.lean +/- theorem ring_hom.not_one_mem_ker Modified src/ring_theory/ideals.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean +/- theorem finite_of_linear_independent Modified src/ring_theory/polynomial/basic.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/prod.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/set_theory/cardinal.lean + theorem cardinal.one_lt_iff_nontrivial Modified src/set_theory/ordinal.lean Modified src/topology/metric_space/isometry.lean 2020-07-06 13:27:20 2c9d9bd chore(scripts/nolints_summary.sh): list number of nolints per file ESTIMATED CHANGES Added scripts/nolints_summary.sh 2020-07-06 07:16:47 5ff099b feat(topology): preliminaries for Haar measure (#3194) Define group operations on sets Define compacts, in a similar way to opens Prove some "separation" properties for topological groups Rename `continuous.comap` to `opens.comap` (so that we can have comaps for other kinds of sets in topological spaces) Rename `inf_val` to `inf_def` (unused) Move some definitions from `topology.opens` to `topology.compacts` ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.inf_coe + theorem finset.inf_def - theorem finset.inf_val + theorem finset.sup_coe Modified src/data/real/ennreal.lean + theorem ennreal.div_lt_top + theorem ennreal.infi_mul + theorem ennreal.inv_lt_top + theorem ennreal.mul_infi + theorem ennreal.mul_pos Modified src/order/bounded_lattice.lean Modified src/topology/algebra/group.lean + theorem compact_covered_by_mul_left_translates + theorem compact_open_separated_mul + theorem one_open_separated_mul Modified src/topology/algebra/infinite_sum.lean + theorem tsum_subtype_eq_sum Modified src/topology/basic.lean + theorem is_closed.preimage + theorem is_open.preimage Added src/topology/compacts.lean + def topological_space.closeds + theorem topological_space.compacts.bot_val + theorem topological_space.compacts.equiv_to_fun_val + theorem topological_space.compacts.finset_sup_val + theorem topological_space.compacts.map_val + theorem topological_space.compacts.sup_val + def topological_space.compacts + def topological_space.nonempty_compacts.to_closeds + def topological_space.nonempty_compacts + def topological_space.positive_compacts: Modified src/topology/constructions.lean + theorem exists_nhds_square Modified src/topology/homeomorph.lean + theorem homeomorph.is_open_preimage Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/opens.lean - def continuous.comap - theorem continuous.comap_id - theorem continuous.comap_mono - def topological_space.closeds - def topological_space.nonempty_compacts.to_closeds - def topological_space.nonempty_compacts + def topological_space.open_nhds_of +/- theorem topological_space.opens.Sup_s + theorem topological_space.opens.coe_comap + def topological_space.opens.comap + theorem topological_space.opens.comap_id + theorem topological_space.opens.comap_mono + theorem topological_space.opens.comap_val +/- theorem topological_space.opens.ext + theorem topological_space.opens.ext_iff +/- theorem topological_space.opens.gc +/- def topological_space.opens.gi +/- def topological_space.opens.is_basis + theorem topological_space.opens.supr_def + theorem topological_space.opens.val_eq_coe Modified src/topology/separation.lean + theorem compact.binary_compact_cover + theorem compact.finite_compact_cover + theorem compact.inter + theorem exists_compact_superset + theorem exists_open_with_compact_closure Modified src/topology/subset_properties.lean + theorem compact_univ_pi + theorem exists_compact_subset 2020-07-06 05:41:46 2e140f1 refactor(algebra/inj_surj): more lemmas, move to files, rename (#3290) * use names `function.?jective.monoid` etc; * move definitions to different files; * add versions for `semimodules` and various `*_with_zero`; * add `funciton.surjective.forall` etc. ESTIMATED CHANGES Added src/algebra/group/inj_surj.lean Modified src/algebra/group_with_zero.lean Deleted src/algebra/inj_surj.lean - def comm_group_of_injective - def comm_group_of_surjective - def comm_monoid_of_injective - def comm_monoid_of_surjective - def comm_ring_of_injective - def comm_ring_of_surjective - def comm_semigroup_of_injective - def comm_semigroup_of_surjective - def comm_semiring_of_injective - def comm_semiring_of_surjective - def group_of_injective - def group_of_surjective - def monoid_of_injective - def monoid_of_surjective - def ring_of_injective - def ring_of_surjective - def semigroup_of_injective - def semigroup_of_surjective - def semiring_of_injective - def semiring_of_surjective Modified src/algebra/module.lean Modified src/algebra/ring.lean +/- theorem ring_hom.cancel_left +/- theorem ring_hom.cancel_right Modified src/group_theory/group_action.lean - theorem mul_action.bijective Modified src/group_theory/submonoid/basic.lean + theorem submonoid.coe_injective Modified src/group_theory/submonoid/operations.lean Modified src/logic/function/basic.lean + theorem function.injective.eq_iff' + theorem function.injective.ne_iff' + theorem function.surjective.exists + theorem function.surjective.exists₂ + theorem function.surjective.exists₃ + theorem function.surjective.forall + theorem function.surjective.forall₂ + theorem function.surjective.forall₃ 2020-07-06 04:31:33 ffa504c fix(finset/lattice): undo removal of bUnion_preimage_singleton (#3293) In #3189 I removed it, which was a mistake. ESTIMATED CHANGES Modified src/data/finset/lattice.lean + theorem finset.bUnion_preimage_singleton 2020-07-06 00:39:48 e1f6ed2 chore(scripts): update nolints.txt (#3294) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-05 10:40:51 0cd500e doc(tactic/explode): expand doc string (#3271) Explanation copied from @digama0's Zulip message [here](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/.23explode.20error/near/202396813). Also removed a redundant function and added some type ascriptions. ESTIMATED CHANGES Modified src/tactic/explode.lean - def tactic.explode.head' +/- inductive tactic.explode.status 2020-07-05 10:13:00 293287d chore(category_theory/over/limits): change instance to def (#3281) Having this as an instance causes confusion since it's a different terminal object to the one inferred by the other limit constructions in the file. ESTIMATED CHANGES Modified src/category_theory/limits/over.lean + def category_theory.over.over_has_terminal 2020-07-05 09:46:41 f39e0d7 chore(algebra/category): use preadditivity for biproducts (#3280) We can avoid some scary calculations thanks to abstract nonsense. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean - def AddCommGroup.has_colimit.desc - theorem AddCommGroup.has_colimit.desc_apply 2020-07-04 19:11:32 023d4f7 feat(ring_theory/localization): order embedding of ideals, local ring instance (#3287) ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean + def ideal.prime_compl + def localization.at_prime + def localization_map.at_prime +/- def localization_map.codomain + def localization_map.le_order_embedding + theorem localization_map.map_comap + theorem localization_map.mk'_mul_mk'_eq_one' + theorem localization_map.mk'_mul_mk'_eq_one +/- theorem localization_map.mk'_self + theorem localization_map.mk'_surjective 2020-07-04 15:02:36 08e1adc feat(data/pnat): basic pnat facts needed for perfect numbers (3094) (#3274) define pnat.coprime add some basic lemmas pnats, mostly about coprime, gcd designate some existing lemmas with @[simp] ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.coe_eq_one_iff + theorem pnat.coe_inj + theorem pnat.coprime.coprime_dvd_left + theorem pnat.coprime.factor_eq_gcd_left + theorem pnat.coprime.factor_eq_gcd_left_right + theorem pnat.coprime.factor_eq_gcd_right + theorem pnat.coprime.factor_eq_gcd_right_right + theorem pnat.coprime.gcd_mul + theorem pnat.coprime.gcd_mul_left_cancel + theorem pnat.coprime.gcd_mul_left_cancel_right + theorem pnat.coprime.gcd_mul_right_cancel + theorem pnat.coprime.gcd_mul_right_cancel_right + theorem pnat.coprime.mul + theorem pnat.coprime.mul_right + theorem pnat.coprime.pow + theorem pnat.coprime.symm + def pnat.coprime + theorem pnat.coprime_coe + theorem pnat.coprime_one + theorem pnat.dvd_prime + theorem pnat.eq_one_of_lt_two + theorem pnat.exists_prime_and_dvd + theorem pnat.gcd_comm + theorem pnat.gcd_eq_left + theorem pnat.gcd_eq_left_iff_dvd + theorem pnat.gcd_eq_right_iff_dvd + theorem pnat.gcd_one + theorem pnat.le_of_dvd + theorem pnat.not_prime_one + theorem pnat.one_coprime + theorem pnat.one_gcd + theorem pnat.prime.ne_one + theorem pnat.prime.not_dvd_one + theorem pnat.prime.one_lt + theorem pnat.prime_two Modified test/interval_cases.lean 2020-07-04 08:32:44 0d249d7 feat(analysis/normed_space/*): group of units of a normed ring is open (#3210) In a complete normed ring, the group of units is an open subset of the ring ([Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Inversion.20is.20analytic)) Supporting material: * `topology.metric_space.basic`, `analysis.normed_space.basic`, `normed_space.operator_norm`: some lemmas about limits and infinite sums in metric and normed spaces * `analysis.normed_space.basic`, `normed_space.operator_norm`: left- and right- multiplication in a normed ring (algebra) is a bounded homomorphism (linear map); the algebra/linear-map versions are not needed for the main result but included for completeness * `analysis.normed_space.basic`: a normed algebra is `nonzero` (not needed for the main result) ([Zulip](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Dangerous.20instance)) * `algebra.group_with_zero`: the `subsingleton_or_nonzero` dichotomy for monoids with zero ([Zulip](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/zero.20ring/near/202202187)) (written by @jcommelin ) * `analysis.specific_limits`: results on geometric series in a complete `normed_ring`; relies on * `algebra.geom_sum`: "left" variants of some existing "right" lemmas on finite geometric series; relies on * `algebra.opposites`, `algebra.group_power`, `algebra.big_operators`: lemmas about the opposite ring ([Zulip](https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Finite.20geometric.20series)) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem with_top.op_sum + theorem with_top.unop_sum Modified src/algebra/geom_sum.lean + theorem mul_geom_sum + theorem mul_neg_geom_sum + theorem op_geom_series Modified src/algebra/group_power.lean + theorem units.op_pow + theorem units.unop_pow Modified src/algebra/group_with_zero.lean + theorem subsingleton_or_nonzero Modified src/algebra/opposites.lean + theorem opposite.coe_op_add_hom + theorem opposite.coe_unop_add_hom + def opposite.op_add_hom + theorem opposite.op_sub + def opposite.unop_add_hom + theorem opposite.unop_sub Modified src/algebra/ring.lean Modified src/analysis/normed_space/basic.lean + theorem add_monoid_hom.continuous_of_bound + theorem add_monoid_hom.lipschitz_of_bound + theorem eventually_norm_pow_le + theorem has_sum_of_bounded_monoid_hom_of_has_sum + theorem has_sum_of_bounded_monoid_hom_of_summable + theorem mul_left_bound + theorem mul_right_bound + theorem normed_algebra.norm_one + theorem normed_algebra.to_nonzero + theorem normed_algebra.zero_ne_one + theorem squeeze_zero_norm' + theorem squeeze_zero_norm + theorem summable_of_norm_bounded_eventually + theorem units.norm_pos Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.has_sum + theorem continuous_linear_map.has_sum_of_summable + def continuous_linear_map.lmul_left + theorem continuous_linear_map.lmul_left_apply + def continuous_linear_map.lmul_right + theorem continuous_linear_map.lmul_right_apply Added src/analysis/normed_space/units.lean + def units.add + theorem units.add_coe + theorem units.is_open + def units.one_sub + theorem units.one_sub_coe + def units.unit_of_nearby + theorem units.unit_of_nearby_coe Modified src/analysis/specific_limits.lean + theorem geom_series_mul_neg + theorem mul_neg_geom_series + theorem normed_ring.summable_geometric_of_norm_lt_1 +/- theorem tendsto_pow_at_top_nhds_0_of_norm_lt_1 Modified src/topology/metric_space/basic.lean + theorem squeeze_zero' 2020-07-04 06:17:21 c2886d3 fix(tactic/default): import tactic.basic (#3284) Some basic tactics and commands (e.g. `#explode`) were not available even if `import tactic` was used. I added `import tactic.basic` to `tactic/default.lean` to remedy this. ESTIMATED CHANGES Modified src/tactic/default.lean 2020-07-04 00:39:31 2a43e26 chore(scripts): update nolints.txt (#3283) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-03 23:00:44 742dc88 feat(ring_theory/polynomial): rational root theorem and integral root theorem (#3241) Prove the rational root theorem for a unique factorization domain `A`: Let `K` be the field of fractions of `A` and `p` a polynomial over `A`. If `x : K` is a root of `p`, then the numerator of `x` divides the constant coefficient and the denominator of `x` divides the leading coefficient. (This required defining the numerator and denominator.) As a corollary we have the integral root theorem: if `p` is monic, then its roots in `K` are in fact elements of `A`. As a second corollary, the integral closure of `A` in `K` is `A` itself. ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem dvd_symm_iff_of_irreducible + theorem dvd_symm_of_irreducible + theorem prime.dvd_of_dvd_pow Modified src/algebra/field.lean + theorem ring_hom.map_units_inv Modified src/algebra/group/units.lean + theorem is_unit.mul Modified src/algebra/group_with_zero.lean + theorem monoid_hom.map_units_inv Modified src/algebra/ring.lean + theorem is_unit.mul_left_dvd_of_dvd + theorem is_unit.mul_right_dvd_of_dvd Modified src/data/polynomial.lean + theorem polynomial.dvd_term_of_dvd_eval_of_dvd_terms + theorem polynomial.dvd_term_of_is_root_of_dvd_terms + theorem polynomial.is_root_of_aeval_algebra_map_eq_zero + theorem polynomial.is_root_of_eval₂_map_eq_zero Modified src/ring_theory/integral_domain.lean + theorem left_dvd_or_dvd_right_of_dvd_prime_mul Modified src/ring_theory/localization.lean + theorem fraction_map.eq_zero_of_num_eq_zero + theorem fraction_map.exists_reduced_fraction + theorem fraction_map.is_integer_of_is_unit_denom + theorem fraction_map.is_unit_denom_of_num_eq_zero + theorem fraction_map.mk'_num_denom + theorem fraction_map.num_denom_reduced + theorem fraction_map.num_mul_denom_eq_num_iff_eq' + theorem fraction_map.num_mul_denom_eq_num_iff_eq + theorem fraction_map.num_mul_denom_eq_num_mul_denom_iff_eq + theorem mul_mem_non_zero_divisors Added src/ring_theory/polynomial/rational_root.lean + theorem coeff_scale_roots + theorem coeff_scale_roots_nat_degree + theorem degree_scale_roots + theorem denom_dvd_of_is_root + theorem is_integer_of_is_root_of_monic + theorem monic_scale_roots_iff + theorem nat_degree_scale_roots + theorem num_dvd_of_is_root + theorem num_is_root_scale_roots_of_aeval_eq_zero + theorem scale_roots_aeval_eq_zero + theorem scale_roots_aeval_eq_zero_of_aeval_div_eq_zero + theorem scale_roots_aeval_eq_zero_of_aeval_mk'_eq_zero + theorem scale_roots_eval₂_eq_zero + theorem scale_roots_eval₂_eq_zero_of_eval₂_div_eq_zero + theorem scale_roots_ne_zero + theorem support_scale_roots_eq + theorem support_scale_roots_le + theorem unique_factorization_domain.integer_of_integral + theorem unique_factorization_domain.integrally_closed + theorem zero_scale_roots Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_domain.dvd_of_dvd_mul_left_of_no_prime_factors + theorem unique_factorization_domain.dvd_of_dvd_mul_right_of_no_prime_factors + theorem unique_factorization_domain.exists_reduced_factors' + theorem unique_factorization_domain.exists_reduced_factors + theorem unique_factorization_domain.no_factors_of_no_prime_factors 2020-07-03 22:00:28 c4bf9e4 chore(algebra/ordered_group): deduplicate (#3279) For historical reasons we have some lemmas duplicated for `ordered_comm_monoid` and `ordered_cancel_comm_monoid`. This PR merges some duplicates. ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/group_power.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ordered_group.lean - theorem le_mul_of_le_of_one_le' - theorem le_mul_of_one_le_left'' - theorem le_mul_of_one_le_of_le' - theorem le_mul_of_one_le_right'' - theorem lt_of_mul_lt_mul_left'' - theorem lt_of_mul_lt_mul_right'' - theorem mul_eq_one_iff_eq_one_and_eq_one_of_one_le_of_one_le - theorem mul_le_mul_left'' +/- theorem mul_le_mul_left' - theorem mul_le_mul_right'' +/- theorem mul_le_mul_right' - theorem mul_le_one'' - theorem mul_le_one_of_le_one_of_le_one - theorem mul_one_lt' - theorem mul_one_lt - theorem mul_one_lt_of_one_le_of_one_lt' - theorem mul_one_lt_of_one_le_of_one_lt - theorem mul_one_lt_of_one_lt_of_one_le' - theorem mul_one_lt_of_one_lt_of_one_le - theorem one_le_mul' - theorem one_le_mul_of_one_le_of_one_le + theorem one_lt_mul' + theorem one_lt_mul_of_le_of_lt' + theorem one_lt_mul_of_lt_of_le' Modified src/algebra/pi_instances.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/exponential.lean Modified src/data/list/basic.lean Modified src/data/multiset/basic.lean Modified src/data/nat/enat.lean Modified src/data/padics/padic_norm.lean Modified src/data/polynomial.lean Modified src/data/real/ennreal.lean Modified src/geometry/euclidean.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/lagrange.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/outer_measure.lean Modified src/order/filter/at_top_bot.lean +/- theorem filter.tendsto_at_top_add_left_of_le' +/- theorem filter.tendsto_at_top_add_nonneg_left' +/- theorem filter.tendsto_at_top_add_nonneg_right' +/- theorem filter.tendsto_at_top_add_right_of_le' +/- theorem filter.tendsto_at_top_mono' +/- theorem filter.tendsto_at_top_of_add_bdd_above_left' +/- theorem filter.tendsto_at_top_of_add_bdd_above_right' Modified src/order/filter/germ.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/hausdorff_distance.lean 2020-07-03 22:00:26 f1637e5 feat(field_theory/splitting_field): definition of splitting field (#3272) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.X_dvd_iff + theorem polynomial.X_sub_C_ne_zero + theorem polynomial.irreducible_X + theorem polynomial.irreducible_X_sub_C + theorem polynomial.nat_degree_X + theorem polynomial.nat_degree_X_le +/- theorem polynomial.nat_degree_X_sub_C + theorem polynomial.nat_degree_div_by_monic + theorem polynomial.nat_degree_le_nat_degree +/- theorem polynomial.nat_degree_le_of_degree_le + theorem polynomial.not_is_unit_X + theorem polynomial.not_is_unit_X_sub_C + theorem polynomial.prime_X + theorem polynomial.prime_X_sub_C + theorem polynomial.root_mul + theorem polynomial.roots_X_sub_C + theorem polynomial.roots_mul Modified src/field_theory/splitting_field.lean + theorem polynomial.X_sub_C_mul_remove_factor + def polynomial.factor + theorem polynomial.factor_dvd_of_degree_ne_zero + theorem polynomial.factor_dvd_of_nat_degree_ne_zero + theorem polynomial.factor_dvd_of_not_is_unit + theorem polynomial.nat_degree_remove_factor' + theorem polynomial.nat_degree_remove_factor + def polynomial.remove_factor + theorem polynomial.splits_of_splits_of_dvd + theorem polynomial.splitting_field.adjoin_roots + def polynomial.splitting_field.lift + def polynomial.splitting_field + theorem polynomial.splitting_field_aux.adjoin_roots + theorem polynomial.splitting_field_aux.algebra_map_succ + theorem polynomial.splitting_field_aux.exists_lift + theorem polynomial.splitting_field_aux.succ + def polynomial.splitting_field_aux Modified src/ring_theory/adjoin_root.lean + theorem adjoin_root.adjoin_root_eq_top + theorem adjoin_root.aeval_eq + theorem adjoin_root.algebra_map_eq + theorem adjoin_root.induction_on + theorem adjoin_root.lift_comp_of +/- theorem adjoin_root.lift_root + theorem adjoin_root.mk_X Modified src/ring_theory/algebra.lean + theorem algebra.comap_top + theorem algebra.map_bot + theorem algebra.map_top + def subalgebra.comap' + def subalgebra.map + theorem subalgebra.map_le Added src/ring_theory/algebra_tower.lean + theorem algebra.adjoin_algebra_map' + theorem algebra.adjoin_algebra_map + theorem is_algebra_tower.algebra.ext + theorem is_algebra_tower.algebra_map_apply + theorem is_algebra_tower.algebra_map_eq + theorem is_algebra_tower.comap_eq + theorem is_algebra_tower.of_algebra_map_eq + theorem is_algebra_tower.range_under_adjoin + def is_algebra_tower.subalgebra_comap + theorem is_algebra_tower.subalgebra_comap_top + def is_algebra_tower.to_alg_hom Modified src/ring_theory/polynomial/basic.lean + theorem polynomial.exists_irreducible_of_degree_pos + theorem polynomial.exists_irreducible_of_nat_degree_ne_zero + theorem polynomial.exists_irreducible_of_nat_degree_pos 2020-07-03 20:42:56 48dea2f feat(algebra/pointwise): make instances global (#3240) add image2 and image3, the images of binary and ternary functions cleanup in algebra/pointwise make many variables implicit make many names shorter add some lemmas add more simp lemmas add type set_semiring as alias for set, with semiring instance using union as "addition" ESTIMATED CHANGES Modified src/algebra/pointwise.lean +/- theorem mem_inv_smul_set_iff +/- theorem mem_smul_set_iff_inv_smul_mem + theorem set.Union_mul_left_image + theorem set.Union_mul_right_image - def set.add_comm_monoid - def set.comm_monoid + theorem set.compl_inv + theorem set.empty_mul - theorem set.empty_pointwise_mul + theorem set.finite.mul + def set.fintype_mul + theorem set.image2_mul + theorem set.image2_smul + def set.image_hom + theorem set.image_inv + theorem set.image_mul + theorem set.image_mul_left' + theorem set.image_mul_left + theorem set.image_mul_prod + theorem set.image_mul_right' + theorem set.image_mul_right + theorem set.image_one - theorem set.image_pointwise_mul + theorem set.image_smul + theorem set.image_smul_prod + theorem set.inter_inv + theorem set.inv_mem_inv + theorem set.inv_preimage + theorem set.mem_inv + theorem set.mem_mul + theorem set.mem_one - theorem set.mem_pointwise_mul - theorem set.mem_pointwise_one + theorem set.mem_smul +/- theorem set.mem_smul_set + theorem set.mul_empty + theorem set.mul_mem_mul - theorem set.mul_mem_pointwise_mul + theorem set.mul_singleton + theorem set.mul_subset_mul + theorem set.mul_union + theorem set.nonempty.mul - theorem set.nonempty.pointwise_mul + theorem set.one_mem_one + theorem set.one_nonempty + theorem set.one_subset - def set.pointwise_add_fintype - def set.pointwise_inv - def set.pointwise_mul - def set.pointwise_mul_comm_semiring - theorem set.pointwise_mul_empty - theorem set.pointwise_mul_eq_Union_mul_left - theorem set.pointwise_mul_eq_Union_mul_right - theorem set.pointwise_mul_eq_image - theorem set.pointwise_mul_finite - def set.pointwise_mul_fintype - def set.pointwise_mul_image_ring_hom - def set.pointwise_mul_monoid - def set.pointwise_mul_semigroup - def set.pointwise_mul_semiring - theorem set.pointwise_mul_subset_mul - theorem set.pointwise_mul_union - def set.pointwise_one - def set.pointwise_smul + theorem set.preimage_mul_left_one' + theorem set.preimage_mul_left_one + theorem set.preimage_mul_preimage_subset + theorem set.preimage_mul_right_one' + theorem set.preimage_mul_right_one - theorem set.preimage_pointwise_mul_preimage_subset + def set.set_semiring - theorem set.singleton.is_monoid_hom + def set.singleton_hom + theorem set.singleton_mul + theorem set.singleton_mul_singleton + theorem set.singleton_one + theorem set.singleton_smul +/- theorem set.smul_mem_smul_set - def set.smul_set - def set.smul_set_action +/- theorem set.smul_set_empty - theorem set.smul_set_eq_image - theorem set.smul_set_eq_pointwise_smul_singleton +/- theorem set.smul_set_mono +/- theorem set.smul_set_union + theorem set.union_inv + theorem set.union_mul - theorem set.union_pointwise_mul + theorem set.univ_mul_univ - theorem set.univ_pointwise_mul_univ +/- theorem zero_smul_set Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/convex/topology.lean Modified src/data/set/basic.lean + def set.image2 + theorem set.image2_congr' + theorem set.image2_congr + theorem set.image2_empty_left + theorem set.image2_empty_right + theorem set.image2_image2_left + theorem set.image2_image2_right + theorem set.image2_image_left + theorem set.image2_image_right + theorem set.image2_inter_subset_left + theorem set.image2_inter_subset_right + theorem set.image2_left + theorem set.image2_right + theorem set.image2_singleton + theorem set.image2_singleton_left + theorem set.image2_singleton_right + theorem set.image2_subset + theorem set.image2_swap + theorem set.image2_union_left + theorem set.image2_union_right + def set.image3 + theorem set.image3_congr' + theorem set.image3_congr + theorem set.image_eta + theorem set.image_image2 + theorem set.image_prod + theorem set.mem_image2 + theorem set.mem_image2_eq + theorem set.mem_image2_iff + theorem set.mem_image2_of_mem + theorem set.mem_image3 + theorem set.nonempty.image2 + theorem set.nonempty_def Modified src/data/set/finite.lean + theorem set.finite.image2 Modified src/data/set/intervals/image_preimage.lean +/- theorem set.image_add_const_Ici +/- theorem set.image_add_const_Iic +/- theorem set.image_add_const_Iio +/- theorem set.image_add_const_Ioi +/- theorem set.image_neg_Icc +/- theorem set.image_neg_Ici +/- theorem set.image_neg_Ico +/- theorem set.image_neg_Iic +/- theorem set.image_neg_Iio +/- theorem set.image_neg_Ioc +/- theorem set.image_neg_Ioi +/- theorem set.image_neg_Ioo +/- theorem set.preimage_neg_Icc +/- theorem set.preimage_neg_Ici +/- theorem set.preimage_neg_Ico +/- theorem set.preimage_neg_Iic +/- theorem set.preimage_neg_Iio +/- theorem set.preimage_neg_Ioc +/- theorem set.preimage_neg_Ioi +/- theorem set.preimage_neg_Ioo Modified src/data/set/lattice.lean + theorem set.Union_image_left + theorem set.Union_image_right Modified src/group_theory/group_action.lean + theorem eq_inv_smul_iff + theorem inv_smul_eq_iff Modified src/logic/function/basic.lean + theorem function.injective2.eq_iff + def function.injective2 Modified src/order/filter/pointwise.lean + theorem filter.map.is_monoid_hom - theorem filter.map_pointwise_mul - theorem filter.map_pointwise_one + theorem filter.mem_mul + theorem filter.mem_one - theorem filter.mem_pointwise_mul - theorem filter.mem_pointwise_one + theorem filter.mul_mem_mul - theorem filter.mul_mem_pointwise_mul + theorem filter.mul_ne_bot - theorem filter.pointwise_add_map_is_add_monoid_hom - def filter.pointwise_mul - theorem filter.pointwise_mul_assoc - theorem filter.pointwise_mul_le_mul - theorem filter.pointwise_mul_map_is_monoid_hom - def filter.pointwise_mul_monoid - theorem filter.pointwise_mul_ne_bot - theorem filter.pointwise_mul_one - def filter.pointwise_one - theorem filter.pointwise_one_mul Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra_operations.lean +/- theorem submodule.mul_subset_mul +/- theorem submodule.pow_subset_pow +/- theorem submodule.smul_def +/- theorem submodule.smul_le_smul +/- def submodule.span.ring_hom Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideals.lean +/- theorem ideal.span_singleton_one Modified src/ring_theory/noetherian.lean Modified src/topology/algebra/group.lean + theorem is_open_mul_left + theorem is_open_mul_right - theorem is_open_pointwise_mul_left - theorem is_open_pointwise_mul_right +/- theorem nhds_is_mul_hom + theorem nhds_mul - theorem nhds_pointwise_mul Modified src/topology/metric_space/gromov_hausdorff.lean 2020-07-03 15:04:51 f9f0ca6 feat(analysic/calculus/times_cont_diff): add times_cont_diff_within_at (#3262) I want to refactor manifolds, defining local properties in the model space and showing that they automatically inherit nice behavior in manifolds. In this PR, we modify a little bit the definition of smooth functions in vector spaces by introducing a predicate `times_cont_diff_within_at` (just like we already have `continuous_within_at` or `differentiable_within_at`) and using it in all definitions and proofs. This will be the basis of the locality argument in manifolds. ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem continuous_linear_equiv.comp_times_cont_diff_within_at_iff + theorem continuous_linear_equiv.times_cont_diff_within_at_comp_iff + theorem filter.eventually_eq.times_cont_diff_within_at_iff + theorem times_cont_diff.times_cont_diff_at + theorem times_cont_diff_at.continuous_at + theorem times_cont_diff_at.continuous_linear_map_comp + theorem times_cont_diff_at.differentiable + theorem times_cont_diff_at.has_strict_fderiv_at + theorem times_cont_diff_at.of_le + theorem times_cont_diff_at.times_cont_diff_within_at + def times_cont_diff_at + theorem times_cont_diff_at_const + theorem times_cont_diff_at_top + theorem times_cont_diff_iff_times_cont_diff_at + theorem times_cont_diff_on.comp' - theorem times_cont_diff_on.has_strict_fderiv_at + theorem times_cont_diff_on.times_cont_diff_within_at - theorem times_cont_diff_on_nat + theorem times_cont_diff_within_at.comp' + theorem times_cont_diff_within_at.comp + theorem times_cont_diff_within_at.comp_continuous_linear_map + theorem times_cont_diff_within_at.congr + theorem times_cont_diff_within_at.congr_of_eventually_eq' + theorem times_cont_diff_within_at.congr_of_eventually_eq + theorem times_cont_diff_within_at.continuous_linear_map_comp + theorem times_cont_diff_within_at.continuous_within_at' + theorem times_cont_diff_within_at.continuous_within_at + theorem times_cont_diff_within_at.differentiable_within_at' + theorem times_cont_diff_within_at.differentiable_within_at + theorem times_cont_diff_within_at.mono + theorem times_cont_diff_within_at.of_le + theorem times_cont_diff_within_at.prod + theorem times_cont_diff_within_at.times_cont_diff_at + theorem times_cont_diff_within_at.times_cont_diff_on + def times_cont_diff_within_at + theorem times_cont_diff_within_at_const + theorem times_cont_diff_within_at_inter' + theorem times_cont_diff_within_at_inter + theorem times_cont_diff_within_at_nat + theorem times_cont_diff_within_at_succ_iff_has_fderiv_within_at + theorem times_cont_diff_within_at_top + theorem times_cont_diff_within_at_univ Modified src/data/set/basic.lean + theorem set.insert_inter Modified src/topology/continuous_on.lean + theorem mem_nhds_within_insert 2020-07-03 09:21:25 53c1531 feat(geometry/manifold/smooth_manifold_with_corners): product of smooth manifolds with corners (#3250) ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_on.map_prod + theorem times_cont_diff_on_fst + theorem times_cont_diff_on_snd Modified src/data/prod.lean +/- theorem prod.map_fst' +/- theorem prod.map_fst +/- theorem prod.map_snd' +/- theorem prod.map_snd + theorem prod_map Modified src/geometry/manifold/basic_smooth_bundle.lean +/- theorem basic_smooth_bundle_core.mem_atlas_iff Modified src/geometry/manifold/charted_space.lean + def model_prod + theorem model_prod_range_prod_id + theorem prod_charted_space_chart_at Modified src/geometry/manifold/mfderiv.lean +/- theorem tangent_map_chart_symm Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem model_with_corners_prod_coe + theorem model_with_corners_prod_coe_symm + theorem model_with_corners_prod_to_local_equiv + theorem times_cont_diff_groupoid_prod 2020-07-03 08:38:36 e236160 chore(order/filter/basic): implicit arg in `eventually_of_forall` (#3277) Make `l : filter α` argument of `eventually_of_forall` implicit because everywhere in `mathlib` it was used as `eventually_of_forall _`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/measure_theory/measure_space.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/basic.lean +/- theorem filter.eventually_of_forall Modified src/order/filter/filter_product.lean Modified src/order/filter/germ.lean Modified src/order/liminf_limsup.lean Modified src/topology/algebra/ordered.lean 2020-07-03 07:27:21 56ed551 fix(algebra/group_with_zero): fix left/right (#3278) Rename `mul_inv_cancel_left'`/`mul_inv_cancel_right'` to match `mul_inv_cancel_left`/`mul_inv_cancel_right`. ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean +/- theorem inv_mul_cancel_left' +/- theorem inv_mul_cancel_right' +/- theorem mul_inv_cancel_left' +/- theorem mul_inv_cancel_right' Modified src/ring_theory/valuation/basic.lean 2020-07-03 04:28:12 303740d feat(category_theory/abelian): every abelian category is preadditive (#3247) ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean + def category_theory.abelian.has_finite_biproducts + def category_theory.non_preadditive_abelian.abelian Added src/category_theory/abelian/non_preadditive.lean + theorem category_theory.non_preadditive_abelian.add_assoc + theorem category_theory.non_preadditive_abelian.add_comm + theorem category_theory.non_preadditive_abelian.add_comp + theorem category_theory.non_preadditive_abelian.add_def + theorem category_theory.non_preadditive_abelian.add_neg + theorem category_theory.non_preadditive_abelian.add_neg_self + theorem category_theory.non_preadditive_abelian.add_zero + theorem category_theory.non_preadditive_abelian.comp_add + theorem category_theory.non_preadditive_abelian.comp_sub + def category_theory.non_preadditive_abelian.epi_is_cokernel_of_kernel + theorem category_theory.non_preadditive_abelian.epi_of_zero_cancel + theorem category_theory.non_preadditive_abelian.epi_of_zero_cokernel + def category_theory.non_preadditive_abelian.has_add + def category_theory.non_preadditive_abelian.has_colimit_parallel_pair + def category_theory.non_preadditive_abelian.has_limit_parallel_pair + def category_theory.non_preadditive_abelian.has_neg + def category_theory.non_preadditive_abelian.has_sub + def category_theory.non_preadditive_abelian.is_colimit_σ + def category_theory.non_preadditive_abelian.is_iso_of_mono_of_epi + theorem category_theory.non_preadditive_abelian.lift_map + theorem category_theory.non_preadditive_abelian.lift_sub_lift + theorem category_theory.non_preadditive_abelian.lift_σ + def category_theory.non_preadditive_abelian.mono_is_kernel_of_cokernel + theorem category_theory.non_preadditive_abelian.mono_of_cancel_zero + theorem category_theory.non_preadditive_abelian.mono_of_zero_kernel + theorem category_theory.non_preadditive_abelian.neg_add + theorem category_theory.non_preadditive_abelian.neg_add_self + theorem category_theory.non_preadditive_abelian.neg_def + theorem category_theory.non_preadditive_abelian.neg_neg + theorem category_theory.non_preadditive_abelian.neg_sub' + theorem category_theory.non_preadditive_abelian.neg_sub + def category_theory.non_preadditive_abelian.preadditive + def category_theory.non_preadditive_abelian.pullback_of_mono + def category_theory.non_preadditive_abelian.pushout_of_epi + def category_theory.non_preadditive_abelian.r + def category_theory.non_preadditive_abelian.strong_epi_of_epi + theorem category_theory.non_preadditive_abelian.sub_add + theorem category_theory.non_preadditive_abelian.sub_comp + theorem category_theory.non_preadditive_abelian.sub_def + theorem category_theory.non_preadditive_abelian.sub_self + theorem category_theory.non_preadditive_abelian.sub_sub_sub + theorem category_theory.non_preadditive_abelian.sub_zero + def category_theory.non_preadditive_abelian.zero_cokernel_of_zero_cancel + def category_theory.non_preadditive_abelian.zero_kernel_of_cancel_zero + def category_theory.non_preadditive_abelian.Δ + theorem category_theory.non_preadditive_abelian.Δ_map + theorem category_theory.non_preadditive_abelian.Δ_σ + def category_theory.non_preadditive_abelian.σ + theorem category_theory.non_preadditive_abelian.σ_comp Modified src/category_theory/discrete_category.lean + def category_theory.discrete.nat_iso_functor Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.has_finite_biproducts.of_has_finite_coproducts + def category_theory.limits.has_finite_biproducts.of_has_finite_products Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.cokernel_cofork.π_of_π + theorem category_theory.limits.kernel_fork.ι_of_ι 2020-07-03 00:58:35 9b086e1 chore(*): reduce imports (#3235) The RFC pull request simply removes some `import tactic` or `import tactic.basic`, and then makes the necessary changes in later files to import things as needed. I'm not sure if it's useful or not ESTIMATED CHANGES Modified archive/100-theorems-list/73_ascending_descending_sequences.lean Modified src/algebra/big_operators.lean Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/free.lean Modified src/category_theory/category/default.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/preadditive/biproducts.lean Modified src/category_theory/types.lean Modified src/control/traversable/instances.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/local_equiv.lean Modified src/data/int/basic.lean Modified src/data/int/modeq.lean Modified src/data/list/forall2.lean Modified src/data/list/func.lean Modified src/data/list/pairwise.lean Modified src/data/option/basic.lean Modified src/data/polynomial.lean Modified src/data/set/basic.lean Modified src/data/set/intervals/basic.lean Modified src/data/vector2.lean Modified src/field_theory/finite.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/logic/relation.lean Modified src/number_theory/lucas_lehmer.lean Modified src/number_theory/primorial.lean Modified src/order/rel_classes.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/matrix_algebra.lean Modified src/ring_theory/tensor_product.lean Modified src/tactic/ring_exp.lean Modified test/library_search/basic.lean Modified test/library_search/ordered_ring.lean Modified test/library_search/ring_theory.lean 2020-07-03 00:22:34 6a49975 feat(category_theory/limits): fully faithful functors reflect limits and colimits (#3269) A fully faithful functor reflects limits and colimits ESTIMATED CHANGES Modified src/category_theory/limits/preserves.lean + def category_theory.limits.fully_faithful_reflects_colimits + def category_theory.limits.fully_faithful_reflects_limits 2020-07-02 20:45:17 838dc66 feat(topology/basic): add `eventually_eventually_nhds` (#3266) ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.bind_inf_principal + theorem filter.bind_le - theorem filter.bind_mono2 +/- theorem filter.bind_mono - theorem filter.bind_sup + theorem filter.eventually_bind + theorem filter.eventually_eq.le + theorem filter.eventually_eq.trans_le + theorem filter.eventually_eq_bind + theorem filter.eventually_le.antisymm + theorem filter.eventually_le.congr + theorem filter.eventually_le.refl + theorem filter.eventually_le.trans + theorem filter.eventually_le.trans_eq + def filter.eventually_le + theorem filter.eventually_le_bind + theorem filter.eventually_le_congr +/- theorem filter.inf_principal_ne_bot_iff + theorem filter.join_le + theorem filter.join_mono + theorem filter.mem_bind_sets' + theorem filter.sup_bind Modified src/order/filter/germ.lean - theorem filter.eventually_eq.le - theorem filter.eventually_eq.trans_le - theorem filter.eventually_le.antisymm - theorem filter.eventually_le.congr - theorem filter.eventually_le.refl - theorem filter.eventually_le.trans - theorem filter.eventually_le.trans_eq - def filter.eventually_le - theorem filter.eventually_le_congr Modified src/topology/basic.lean + theorem cluster_pt_principal_iff + theorem eventually_eventually_eq_nhds + theorem eventually_eventually_le_nhds + theorem eventually_eventually_nhds + theorem eventually_nhds_iff + theorem filter.eventually.eventually_nhds + theorem filter.eventually_eq.eventually_eq_nhds + theorem filter.eventually_le.eventually_le_nhds + theorem nhds_bind_nhds Modified src/topology/continuous_on.lean + theorem eventually_nhds_nhds_within + theorem eventually_nhds_within_iff + theorem eventually_nhds_within_nhds_within + theorem nhds_bind_nhds_within 2020-07-02 19:38:26 d84c48c feat(data/real/cardinality): cardinalities of intervals of reals (#3252) Use the existing result `mk_real` to deduce corresponding results for all eight kinds of intervals of reals. It's convenient for this result to add a new lemma to `data.set.intervals.image_preimage` about the image of an interval under `inv`. Just as there are only a few results there about images of intervals under multiplication rather than a full set, so I just added the result I needed rather than all the possible variants. (I think there are something like 36 reasonable variants of that lemma that could be stated, for (image or preimage - the same thing in this case, but still separate statements) x (interval in positive or negative reals) x (end closer to 0 is 0 (open), nonzero (open) or nonzero (closed)) x (other end is open, closed or infinite).) ESTIMATED CHANGES Modified src/data/real/cardinality.lean + theorem cardinal.mk_Icc_real + theorem cardinal.mk_Ici_real + theorem cardinal.mk_Ico_real + theorem cardinal.mk_Iic_real + theorem cardinal.mk_Iio_real + theorem cardinal.mk_Ioc_real + theorem cardinal.mk_Ioi_real + theorem cardinal.mk_Ioo_real + theorem cardinal.mk_univ_real Modified src/data/set/intervals/image_preimage.lean + theorem set.image_inv_Ioo_0_left Modified src/set_theory/cardinal.lean + theorem cardinal.mk_union_le 2020-07-02 18:55:47 e4fdc75 refactor(analysis/calculus/*deriv): use eventually_eq in congruence statements (#3261) Use `eventually_eq` instead of `mem_sets` for congruence lemmas in continuity and differentiability statements. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean - theorem deriv_congr_of_mem_nhds - theorem deriv_within_congr_of_mem_nhds_within + theorem filter.eventually_eq.deriv_eq + theorem filter.eventually_eq.deriv_within_eq + theorem filter.eventually_eq.has_deriv_at_filter_iff + theorem has_deriv_at.congr_of_eventually_eq - theorem has_deriv_at.congr_of_mem_nhds + theorem has_deriv_at_filter.congr_of_eventually_eq - theorem has_deriv_at_filter.congr_of_mem_sets - theorem has_deriv_at_filter_congr_of_mem_sets + theorem has_deriv_within_at.congr_of_eventually_eq - theorem has_deriv_within_at.congr_of_mem_nhds_within Modified src/analysis/calculus/fderiv.lean + theorem differentiable_at.congr_of_eventually_eq - theorem differentiable_at.congr_of_mem_nhds + theorem differentiable_within_at.comp' + theorem differentiable_within_at.congr_of_eventually_eq - theorem differentiable_within_at.congr_of_mem_nhds_within - theorem fderiv_congr_of_mem_nhds - theorem fderiv_within_congr_of_mem_nhds_within + theorem filter.eventually_eq.fderiv_eq + theorem filter.eventually_eq.fderiv_within_eq + theorem filter.eventually_eq.has_fderiv_at_filter_iff + theorem filter.eventually_eq.has_strict_fderiv_at_iff + theorem has_fderiv_at.congr_of_eventually_eq - theorem has_fderiv_at.congr_of_mem_nhds + theorem has_fderiv_at_filter.congr_of_eventually_eq - theorem has_fderiv_at_filter.congr_of_mem_sets - theorem has_fderiv_at_filter_congr_of_mem_sets + theorem has_fderiv_within_at.congr_of_eventually_eq - theorem has_fderiv_within_at.congr_of_mem_nhds_within + theorem has_strict_fderiv_at.congr_of_eventually_eq - theorem has_strict_fderiv_at.congr_of_mem_sets - theorem has_strict_fderiv_at_congr_of_mem_sets Modified src/analysis/calculus/inverse.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/special_functions/pow.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean + theorem filter.eventually_eq.mdifferentiable_within_at_iff + theorem filter.eventually_eq.mfderiv_eq + theorem filter.eventually_eq.mfderiv_within_eq + theorem has_mfderiv_at.congr_of_eventually_eq - theorem has_mfderiv_at.congr_of_mem_nhds + theorem has_mfderiv_within_at.congr_of_eventually_eq - theorem has_mfderiv_within_at.congr_of_mem_nhds_within + theorem mdifferentiable_at.congr_of_eventually_eq - theorem mdifferentiable_at.congr_of_mem_nhds + theorem mdifferentiable_within_at.congr_of_eventually_eq - theorem mdifferentiable_within_at.congr_of_mem_nhds_within - theorem mdifferentiable_within_at_congr_of_mem_nhds_within - theorem mfderiv_congr_of_mem_nhds - theorem mfderiv_within_congr_of_mem_nhds_within Modified src/order/filter/basic.lean + theorem filter.eventually.exists_mem + theorem filter.eventually_eq.exists_mem + theorem filter.eventually_eq_iff_exists_mem + theorem filter.eventually_eq_of_mem + theorem filter.eventually_iff_exists_mem Modified src/topology/continuous_on.lean + theorem continuous_on.comp' + theorem continuous_within_at.comp' + theorem continuous_within_at.congr_of_eventually_eq - theorem continuous_within_at.congr_of_mem_nhds_within 2020-07-02 18:14:59 237b1ea feat(analysis/specific_limits): proof of harmonic series diverging and preliminaries (#3233) This PR is made of two parts : - A few new generic lemmas, mostly by @PatrickMassot , in `order/filter/at_top_bot.lean` and `topology/algebra/ordered.lean` - Definition of the harmonic series, basic lemmas about it, and proof of its divergence, in `analysis/specific_limits.lean` Zulip : https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Harmonic.20Series.20Divergence/near/201651652 ESTIMATED CHANGES Modified src/analysis/calculus/local_extr.lean Modified src/analysis/specific_limits.lean + theorem half_le_harmonic_double_sub_harmonic + def harmonic_series + theorem harmonic_tendsto_at_top + theorem mono_harmonic + theorem self_div_two_le_harmonic_two_pow Modified src/order/filter/at_top_bot.lean +/- theorem filter.monotone.tendsto_at_top_finset +/- theorem filter.prod_at_top_at_top_eq +/- theorem filter.prod_map_at_top_eq + theorem filter.tendsto_at_top_at_top_iff_of_monotone + theorem filter.tendsto_at_top_at_top_of_monotone' +/- theorem filter.tendsto_at_top_at_top_of_monotone +/- theorem filter.tendsto_at_top_mono + theorem filter.tendsto_at_top_of_monotone_of_filter + theorem filter.tendsto_at_top_of_monotone_of_subseq +/- theorem filter.tendsto_finset_image_at_top_at_top + theorem filter.unbounded_of_tendsto_at_top Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean +/- theorem filter.filter_eq_bot_of_not_nonempty + theorem filter.tendsto_bot +/- theorem filter.tendsto_congr' + theorem filter.tendsto_of_not_nonempty Modified src/topology/algebra/ordered.lean + theorem tendsto_at_top_csupr + theorem tendsto_at_top_supr + theorem tendsto_of_monotone 2020-07-02 13:05:20 8be66ee fix(library_search): fix a bug with iff lemmas where both sides match (#3270) Also add a proper failure message for `library_search`, using Mario's text. ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean Added test/library_search/exp_le_exp.lean 2020-07-02 13:05:18 18a80ea chore(tactic/noncomm_ring): allow simp to fail (#3268) Fixes #3267. ESTIMATED CHANGES Modified src/tactic/noncomm_ring.lean Modified test/noncomm_ring.lean 2020-07-02 10:27:52 dc1d936 feat(data/polynomial): preliminaries for Cayley-Hamilton (#3243) Many cheerful facts about polynomials! ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_range_div' + theorem finset.sum_range_sub' Modified src/data/polynomial.lean - theorem polynomial.C_def + theorem polynomial.coeff_monomial_mul + theorem polynomial.coeff_monomial_zero_mul + theorem polynomial.coeff_mul_C +/- theorem polynomial.coeff_mul_X + theorem polynomial.coeff_mul_X_sub_C + theorem polynomial.coeff_mul_monomial + theorem polynomial.coeff_mul_monomial_zero + theorem polynomial.coeff_nat_degree_succ_eq_zero + theorem polynomial.eq_zero_of_eq_zero + theorem polynomial.eval_monomial + theorem polynomial.eval_mul_X_sub_C + theorem polynomial.eval₂_eq_eval_map +/- theorem polynomial.eval₂_sum + theorem polynomial.map_monomial + theorem polynomial.monomial_add + theorem polynomial.monomial_zero_left + theorem polynomial.monomial_zero_right + theorem polynomial.mul_coeff_zero + theorem polynomial.nat_degree_X_pow_sub_C + theorem polynomial.nat_degree_X_sub_C + theorem polynomial.nat_degree_X_sub_C_le + theorem polynomial.nat_degree_mul_le + theorem polynomial.sum_C_index + theorem polynomial.sum_monomial_eq + theorem polynomial.sum_over_range' + theorem polynomial.sum_over_range 2020-07-02 00:35:42 cd29ede chore(scripts): update nolints.txt (#3265) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-01 23:16:08 9309910 chore(algebra/*): deduplicate `*_with_zero`/`semiring`/`field` (#3259) All moved/renamed/merged lemmas were generalized to use `*_with_zero`/`nonzero`/`mul_zero_class` instead of `(semi)ring`/`division_ring`/`field`. ## Moved to `group_with_zero` The following lemmas were formulated for `(semi_)ring`s/`division_ring`s/`field`s. Some of them had strictly more general “prime” versions for `*_with_zero`. I either moved a lemma to `algebra/group_with_zero` and adjusted the requirements or removed the non-prime version and `'` from the name of the prime version. Sometimes I also made some arguments implicit. TL;DR: moved to `group_with_zero`, removed `name'` lemma if it was there. * `is_unit_zero_iff`; * `not_is_unit_zero`; * `div_eq_one_iff_eq`; * `eq_div_iff_mul_eq`; * `eq_div_of_mul_eq`; * `eq_one_div_of_mul_eq_one`; * `eq_one_div_of_mul_eq_one_left`; * `one_div_one_div`; * `eq_of_one_div_eq_one_div`; * `one_div_div`; * `mul_eq_of_eq_div`; * `mul_mul_div`; * `eq_zero_of_zero_eq_one`; * `eq_inv_of_mul_right_eq_one`; * `eq_inv_of_mul_left_eq_one`; * `div_right_comm`; * `div_div_div_cancel_right`; * `div_mul_div_cancel`; ## Renamed/merged * rename `mul_inv''` to `mul_inv'` and merge `mul_inv'` into `mul_inv_rev'`; * `coe_unit_mul_inv`, `coe_unit_inv_mul`: `units.mul_inv'`, `units.inv_mul'` * `division_ring.inv_eq_iff`: `inv_eq_iff`; * `division_ring.inv_inj`: `inv_inj'`; * `domain.mul_left_inj`: `mul_left_inj'`; * `domain.mul_right_inj`: `mul_right_inj'`; * `eq_of_mul_eq_mul_of_nonzero_left` and `eq_of_mul_eq_mul_left`: `mul_left_cancel'`; * `eq_of_mul_eq_mul_of_nonzero_right` and `eq_of_mul_eq_mul_right`: `mul_right_cancel'`; * `inv_inj`, `inv_inj'`, `inv_inj''`: `inv_injective`, `inv_inj`, and `inv_inj'`, respectively; * `mul_inv_cancel_assoc_left`, `mul_inv_cancel_assoc_right`, `inv_mul_cancel_assoc_left`, `inv_mul_cancel_assoc_right`: `mul_inv_cancel_left'`, `mul_inv_cacnel_right'`, `inv_mul_cancel_left'`, `inv_mul_cancel_right'`; * `ne_zero_and_ne_zero_of_mul_ne_zero` : `ne_zero_and_ne_zero_of_mul`. * `ne_zero_of_mul_left_eq_one`: `left_ne_zero_of_mul_eq_one` * `ne_zero_of_mul_ne_zero_left` : `right_ne_zero_of_mul`; * `ne_zero_of_mul_ne_zero_right` : `left_ne_zero_of_mul`; * `ne_zero_of_mul_right_eq_one`: `left_ne_zero_of_mul_eq_one` * `neg_inj` and `neg_inj` renamed to `neg_injective` and `neg_inj`; * `one_inv_eq`: merged into `inv_one`; * `unit_ne_zero`: `units.ne_zero`; * `units.mul_inv'` and `units.inv_mul'`: `units.mul_inv_of_eq` and `units.inv_mul_of_eq`; * `units.mul_left_eq_zero_iff_eq_zero`, `units.mul_right_eq_zero_iff_eq_zero`: `units.mul_left_eq_zero`, `units.mul_right_eq_zero`; ## New * `class cancel_monoid_with_zero`: a `monoid_with_zero` such that left/right multiplication by a non-zero element is injective; the main instances are `group_with_zero`s and `domain`s; * `monoid_hom.map_ne_zero`, `monoid_hom.map_eq_zero`, `monoid_hom.map_inv'`, `monoid_hom.map_div`, `monoid_hom.injective`: lemmas about monoid homomorphisms of two groups with zeros such that `f 0 = 0`; * `mul_eq_zero_of_left`, `mul_eq_zero_of_right`, `ne_zero_of_eq_one` * `unique_of_zero_eq_one`, `eq_of_zero_eq_one`, `nonzero_psum_unique`, `zero_ne_one_or_forall_eq_0`; * `mul_left_inj'`, `mul_right_inj'` ## Misc changes * `eq_of_div_eq_one` no more requires `b ≠ 0`; ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem is_unit_zero_iff - theorem not_is_unit_zero Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean - theorem div_eq_one_iff_eq - theorem division_ring.inv_eq_iff - theorem division_ring.inv_inj - theorem eq_div_iff_mul_eq - theorem eq_div_of_mul_eq - theorem eq_of_div_eq_one - theorem eq_of_one_div_eq_one_div - theorem eq_one_div_of_mul_eq_one - theorem eq_one_div_of_mul_eq_one_left - theorem mul_eq_of_eq_div - theorem mul_inv' - theorem mul_mul_div - theorem one_div_div - theorem one_div_one_div - theorem ring_hom.injective +/- theorem ring_hom.map_div +/- theorem ring_hom.map_eq_zero +/- theorem ring_hom.map_inv +/- theorem ring_hom.map_ne_zero Modified src/algebra/gcd_domain.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/basic.lean - theorem eq_of_inv_eq_inv - theorem inv_inj' +/- theorem inv_inj + theorem inv_injective Modified src/algebra/group/units.lean - theorem units.inv_mul' + theorem units.inv_mul_of_eq - theorem units.mul_inv' + theorem units.mul_inv_of_eq Modified src/algebra/group_ring_action.lean Modified src/algebra/group_with_zero.lean - theorem coe_unit_inv_mul' - theorem coe_unit_mul_inv' - theorem div_div_div_cancel_right' + theorem div_div_div_cancel_right +/- theorem div_eq_mul_inv + theorem div_eq_of_eq_mul + theorem div_eq_one_iff_eq +/- theorem div_eq_zero_iff - theorem div_mul_div_cancel' + theorem div_mul_div_cancel - theorem div_right_comm' + theorem div_right_comm + theorem eq_div_iff_mul_eq + theorem eq_div_of_mul_eq - theorem eq_inv_of_mul_left_eq_one' + theorem eq_inv_of_mul_left_eq_one - theorem eq_inv_of_mul_right_eq_one' + theorem eq_inv_of_mul_right_eq_one - theorem eq_mul_inv_of_mul_eq' + theorem eq_of_div_eq_one - theorem eq_of_mul_eq_mul_of_nonzero_left - theorem eq_of_mul_eq_mul_of_nonzero_right - theorem eq_of_one_div_eq_one_div' + theorem eq_of_one_div_eq_one_div + theorem eq_of_zero_eq_one - theorem eq_one_div_of_mul_eq_one' + theorem eq_one_div_of_mul_eq_one - theorem eq_one_div_of_mul_eq_one_left' + theorem eq_one_div_of_mul_eq_one_left + theorem eq_zero_of_mul_eq_self_left + theorem eq_zero_of_mul_eq_self_right +/- theorem eq_zero_of_mul_self_eq_zero + theorem eq_zero_of_zero_eq_one - theorem inv_inj'' + theorem inv_inj' - theorem inv_mul_cancel_assoc_left - theorem inv_mul_cancel_assoc_right + theorem inv_mul_cancel_left' + theorem inv_mul_cancel_right' +/- theorem inv_one + theorem is_unit.mul_left_eq_zero + theorem is_unit.mul_right_eq_zero + theorem is_unit.ne_zero + theorem is_unit_zero_iff + theorem left_ne_zero_of_mul + theorem left_ne_zero_of_mul_eq_one + theorem monoid_hom.map_div + theorem monoid_hom.map_eq_zero + theorem monoid_hom.map_inv' + theorem monoid_hom.map_ne_zero + theorem mul_eq_zero_of_left + theorem mul_eq_zero_of_right - theorem mul_inv'' + theorem mul_inv' - theorem mul_inv_cancel_assoc_left - theorem mul_inv_cancel_assoc_right + theorem mul_inv_cancel_left' + theorem mul_inv_cancel_right' - theorem mul_inv_eq_of_eq_mul' +/- theorem mul_left_cancel' +/- theorem mul_left_inj' + theorem mul_mul_div +/- theorem mul_right_cancel' + theorem mul_right_inj' +/- theorem mul_zero + theorem ne_zero_and_ne_zero_of_mul + theorem ne_zero_of_eq_one - theorem ne_zero_of_mul_left_eq_one' - theorem ne_zero_of_mul_right_eq_one' + theorem not_is_unit_zero - theorem one_div_div' + theorem one_div_div - theorem one_div_one_div' + theorem one_div_one_div - theorem one_inv_eq +/- theorem one_ne_zero + theorem right_ne_zero_of_mul + theorem right_ne_zero_of_mul_eq_one + theorem subsingleton_of_zero_eq_one + def unique_of_zero_eq_one - theorem unit_ne_zero + theorem units.coe_inv' +/- theorem units.exists_iff_ne_zero - theorem units.inv_eq_inv + theorem units.inv_mul' + theorem units.mul_inv' + theorem units.mul_left_eq_zero + theorem units.mul_right_eq_zero + theorem units.ne_zero +/- theorem zero_mul +/- theorem zero_ne_one + theorem zero_ne_one_or_forall_eq_0 Modified src/algebra/group_with_zero_power.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean + theorem units.zero_lt - theorem zero_lt_unit Modified src/algebra/ordered_field.lean Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/ring.lean - theorem domain.mul_left_inj - theorem domain.mul_right_inj - theorem eq_of_mul_eq_mul_left - theorem eq_of_mul_eq_mul_left_of_ne_zero - theorem eq_of_mul_eq_mul_right - theorem eq_of_mul_eq_mul_right_of_ne_zero - theorem eq_zero_of_mul_eq_self_left - theorem eq_zero_of_mul_eq_self_right - theorem eq_zero_of_zero_eq_one - theorem is_unit.mul_left_eq_zero_iff_eq_zero - theorem is_unit.mul_right_eq_zero_iff_eq_zero +/- theorem mul_self_eq_mul_self_iff +/- theorem mul_self_eq_one_iff - theorem ne_zero_and_ne_zero_of_mul_ne_zero - theorem ne_zero_of_mul_ne_zero_left - theorem ne_zero_of_mul_ne_zero_right - theorem ring.mul_zero - theorem ring.zero_mul - theorem subsingleton_of_zero_eq_one - theorem units.mul_left_eq_zero_iff_eq_zero - theorem units.mul_right_eq_zero_iff_eq_zero - theorem zero_ne_one_or_forall_eq_0 Modified src/analysis/calculus/darboux.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/category_theory/preadditive/default.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/num/lemmas.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/polynomial.lean Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean Modified src/data/real/cau_seq.lean Modified src/data/real/nnreal.lean Modified src/data/zsqrtd/basic.lean Modified src/deprecated/subgroup.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/subfield.lean Modified src/geometry/euclidean.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/subgroup.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/prime.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/ring_theory/valuation/basic.lean Modified src/tactic/cancel_denoms.lean Modified src/tactic/norm_num.lean +/- theorem norm_num.inv_one Modified src/tactic/ring2.lean 2020-07-01 18:46:03 1a419a9 feat(data/nat/digits): add digits_lt_base (#3246) ESTIMATED CHANGES Modified src/data/nat/digits.lean + theorem digits_lt_base' + theorem digits_lt_base 2020-07-01 17:12:55 f00b7c0 chore(*): work on removing deprecated is_X_hom typeclasses (#3258) It's far from over, but as I was bumping up against issues in `polynomial.lean` and `mv_polynomial.lean`, I'm going to PR this part for now, and then wait to return to it when other PRs affecting `polynomial.lean` have cleared. ESTIMATED CHANGES Modified src/algebra/field_power.lean - theorem is_ring_hom.map_fpow Modified src/algebra/pointwise.lean - theorem set.pointwise_mul_image_is_semiring_hom + def set.pointwise_mul_image_ring_hom Modified src/algebra/punit_instances.lean Modified src/category_theory/conj.lean Modified src/data/complex/basic.lean +/- def complex.conj - theorem complex.conj_add - theorem complex.conj_div - theorem complex.conj_inv - theorem complex.conj_mul - theorem complex.conj_neg - theorem complex.conj_one - theorem complex.conj_pow - theorem complex.conj_sub - theorem complex.conj_zero Modified src/data/complex/exponential.lean Modified src/data/complex/module.lean Modified src/data/equiv/ring.lean Modified src/data/finsupp.lean + def finsupp.map_range.add_monoid_hom Modified src/data/padics/padic_integers.lean + def padic_int.coe.ring_hom Modified src/data/padics/padic_norm.lean Modified src/data/pnat/factors.lean Modified src/data/polynomial.lean Modified src/data/zsqrtd/gaussian_int.lean +/- def gaussian_int.to_complex +/- theorem gaussian_int.to_complex_add +/- theorem gaussian_int.to_complex_mul +/- theorem gaussian_int.to_complex_neg +/- theorem gaussian_int.to_complex_one +/- theorem gaussian_int.to_complex_sub +/- theorem gaussian_int.to_complex_zero Deleted src/deprecated/field.lean - theorem is_ring_hom.injective - theorem is_ring_hom.map_div - theorem is_ring_hom.map_eq_zero - theorem is_ring_hom.map_inv - theorem is_ring_hom.map_ne_zero Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/mv_polynomial.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean +/- def equiv.perm.of_subtype - theorem equiv.perm.of_subtype_one Modified src/ring_theory/algebra_operations.lean + def submodule.span.ring_hom Modified src/ring_theory/power_series.lean + def mv_polynomial.coe_to_mv_power_series.ring_hom + def polynomial.coe_to_power_series.ring_hom Modified src/ring_theory/subring.lean 2020-07-01 12:12:44 e803c85 feat(field_theory/separable): relating irreducibility and separability (#3198) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_derivative_le + theorem polynomial.degree_derivative_lt + theorem polynomial.derivative_eval₂_C + theorem polynomial.derivative_map + theorem polynomial.derivative_pow + theorem polynomial.derivative_pow_succ + theorem polynomial.eval₂_nat_cast + theorem polynomial.is_unit_iff + theorem polynomial.map_nat_cast + theorem polynomial.nat_degree_derivative_lt + theorem polynomial.nat_degree_le_of_dvd + theorem polynomial.of_mem_support_derivative Modified src/field_theory/separable.lean + theorem irreducible.separable + theorem polynomial.coe_expand + theorem polynomial.coeff_contract + theorem polynomial.coeff_expand + theorem polynomial.coeff_expand_mul' + theorem polynomial.coeff_expand_mul + theorem polynomial.derivative_expand + theorem polynomial.exists_separable_of_irreducible + theorem polynomial.expand_C + theorem polynomial.expand_X + theorem polynomial.expand_contract + theorem polynomial.expand_eq_C + theorem polynomial.expand_eq_map_domain + theorem polynomial.expand_eq_zero + theorem polynomial.expand_expand + theorem polynomial.expand_inj + theorem polynomial.expand_monomial + theorem polynomial.expand_mul + theorem polynomial.expand_one + theorem polynomial.expand_pow + theorem polynomial.is_local_ring_hom_expand + theorem polynomial.is_unit_or_eq_zero_of_separable_expand + theorem polynomial.nat_degree_expand + theorem polynomial.of_irreducible_expand + theorem polynomial.of_irreducible_expand_pow + theorem polynomial.separable.is_coprime + theorem polynomial.separable.map + theorem polynomial.separable.of_pow' + theorem polynomial.separable.of_pow + theorem polynomial.separable_C + theorem polynomial.separable_iff_derivative_ne_zero + theorem polynomial.separable_or + theorem polynomial.unique_separable_of_irreducible Modified src/ring_theory/algebra.lean + theorem alg_hom.map_nat_cast Modified src/ring_theory/ideals.lean + theorem of_irreducible_map Modified src/ring_theory/polynomial/basic.lean 2020-07-01 10:05:14 a7cdab5 chore(data/set/basic): simp attribute on mem_range_self (#3260) ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.mem_range_self 2020-07-01 10:05:12 7bd19b3 chore(data/finset, data/multiset): split into smaller files (#3256) This follows on from #2341, which split the second half of `data.list.basic` into separate files. This now does the same (trying to follow a similar split) for `data.multiset` and `data.finset`. ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/algebra/big_operators.lean Modified src/control/equiv_functor/instances.lean Modified src/data/finmap.lean Renamed src/data/finset.lean to src/data/finset/basic.lean - theorem finset.Ico.card - theorem finset.Ico.diff_left - theorem finset.Ico.diff_right - theorem finset.Ico.disjoint_consecutive - theorem finset.Ico.eq_empty_iff - theorem finset.Ico.eq_empty_of_le - theorem finset.Ico.filter_le - theorem finset.Ico.filter_le_of_le - theorem finset.Ico.filter_le_of_le_bot - theorem finset.Ico.filter_le_of_top_le - theorem finset.Ico.filter_lt - theorem finset.Ico.filter_lt_of_ge - theorem finset.Ico.filter_lt_of_le_bot - theorem finset.Ico.filter_lt_of_top_le - theorem finset.Ico.image_add - theorem finset.Ico.image_const_sub - theorem finset.Ico.image_sub - theorem finset.Ico.insert_succ_bot - theorem finset.Ico.inter_consecutive - theorem finset.Ico.mem - theorem finset.Ico.not_mem_top - theorem finset.Ico.pred_singleton - theorem finset.Ico.self_eq_empty - theorem finset.Ico.subset_iff - theorem finset.Ico.succ_singleton - theorem finset.Ico.succ_top' - theorem finset.Ico.succ_top - theorem finset.Ico.to_finset - theorem finset.Ico.union_consecutive - theorem finset.Ico.val - theorem finset.Ico.zero_bot - def finset.Ico - theorem finset.Ico_ℤ.card - theorem finset.Ico_ℤ.mem - def finset.Ico_ℤ - theorem finset.bInter_coe - theorem finset.bInter_finset_image - theorem finset.bInter_insert - theorem finset.bInter_inter - theorem finset.bInter_singleton - theorem finset.bUnion_coe - theorem finset.bUnion_finset_image - theorem finset.bUnion_insert - theorem finset.bUnion_singleton - theorem finset.bUnion_union - theorem finset.card_powerset - theorem finset.card_powerset_len - theorem finset.comp_inf_eq_inf_comp - theorem finset.comp_inf_eq_inf_comp_of_is_total - theorem finset.comp_sup_eq_sup_comp - theorem finset.comp_sup_eq_sup_comp_of_is_total - theorem finset.empty_mem_powerset - theorem finset.exists_max_image - theorem finset.exists_min_image - theorem finset.exists_nat_subset_range - def finset.fold - theorem finset.fold_congr - theorem finset.fold_empty - theorem finset.fold_hom - theorem finset.fold_image - theorem finset.fold_insert - theorem finset.fold_insert_idem - theorem finset.fold_map - theorem finset.fold_max_le - theorem finset.fold_max_lt - theorem finset.fold_min_le - theorem finset.fold_min_lt - theorem finset.fold_op_distrib - theorem finset.fold_op_rel_iff_and - theorem finset.fold_op_rel_iff_or - theorem finset.fold_singleton - theorem finset.fold_union_inter - def finset.inf - theorem finset.inf_congr - theorem finset.inf_empty - theorem finset.inf_eq_infi - theorem finset.inf_insert - theorem finset.inf_le - theorem finset.inf_mono - theorem finset.inf_mono_fun - theorem finset.inf_singleton - theorem finset.inf_union - theorem finset.inf_val - theorem finset.infi_coe - theorem finset.infi_finset_image - theorem finset.infi_insert - theorem finset.infi_singleton - theorem finset.infi_union - theorem finset.le_fold_max - theorem finset.le_fold_min - theorem finset.le_inf - theorem finset.le_inf_iff - theorem finset.le_max' - theorem finset.le_max_of_mem - theorem finset.le_min' - theorem finset.le_sup - theorem finset.length_sort - theorem finset.lt_fold_max - theorem finset.lt_fold_min - theorem finset.lt_inf_iff - def finset.max' - theorem finset.max'_le - theorem finset.max'_mem - theorem finset.max_empty - theorem finset.max_eq_none - theorem finset.max_eq_sup_with_bot - theorem finset.max_insert - theorem finset.max_of_mem - theorem finset.max_of_nonempty - theorem finset.max_singleton - theorem finset.mem_of_max - theorem finset.mem_of_min - theorem finset.mem_pi - theorem finset.mem_powerset - theorem finset.mem_powerset_len - theorem finset.mem_powerset_self - theorem finset.mem_sort - def finset.min' - theorem finset.min'_le - theorem finset.min'_lt_max' - theorem finset.min'_lt_max'_of_card - theorem finset.min'_mem - theorem finset.min_empty - theorem finset.min_eq_inf_with_top - theorem finset.min_eq_none - theorem finset.min_insert - theorem finset.min_le_of_mem - theorem finset.min_of_mem - theorem finset.min_of_nonempty - theorem finset.min_singleton - def finset.mono_of_fin - theorem finset.mono_of_fin_bij_on - theorem finset.mono_of_fin_eq_mono_of_fin_iff - theorem finset.mono_of_fin_injective - theorem finset.mono_of_fin_last - theorem finset.mono_of_fin_strict_mono - theorem finset.mono_of_fin_unique - theorem finset.mono_of_fin_zero - def finset.nat.antidiagonal - theorem finset.nat.antidiagonal_zero - theorem finset.nat.card_antidiagonal - theorem finset.nat.mem_antidiagonal - theorem finset.not_mem_of_mem_powerset_of_not_mem - def finset.pi.cons - theorem finset.pi.cons_ne - theorem finset.pi.cons_same - def finset.pi.empty - def finset.pi - theorem finset.pi_cons_injective - theorem finset.pi_disjoint_of_disjoint - theorem finset.pi_empty - theorem finset.pi_insert - theorem finset.pi_subset - theorem finset.pi_val - def finset.powerset - theorem finset.powerset_empty - theorem finset.powerset_insert - def finset.powerset_len - theorem finset.powerset_len_mono - theorem finset.powerset_mono - theorem finset.range_eq_Ico - theorem finset.range_image_pred_top_sub - def finset.sort - theorem finset.sort_eq - theorem finset.sort_nodup - theorem finset.sort_sorted - theorem finset.sort_sorted_lt - theorem finset.sort_to_finset - theorem finset.sorted_last_eq_max' - theorem finset.sorted_zero_eq_min' - theorem finset.subset_range_sup_succ - def finset.sup - theorem finset.sup_congr - theorem finset.sup_def - theorem finset.sup_empty - theorem finset.sup_eq_supr - theorem finset.sup_insert - theorem finset.sup_le - theorem finset.sup_le_iff - theorem finset.sup_lt_iff - theorem finset.sup_mono - theorem finset.sup_mono_fun - theorem finset.sup_singleton - theorem finset.sup_union - theorem finset.supr_coe - theorem finset.supr_finset_image - theorem finset.supr_insert - theorem finset.supr_singleton - theorem finset.supr_union - theorem infi_eq_infi_finset - theorem multiset.count_sup - theorem set.Inter_eq_Inter_finset - theorem set.Union_eq_Union_finset - theorem supr_eq_supr_finset Added src/data/finset/default.lean Added src/data/finset/fold.lean + def finset.fold + theorem finset.fold_congr + theorem finset.fold_empty + theorem finset.fold_hom + theorem finset.fold_image + theorem finset.fold_insert + theorem finset.fold_insert_idem + theorem finset.fold_map + theorem finset.fold_max_le + theorem finset.fold_max_lt + theorem finset.fold_min_le + theorem finset.fold_min_lt + theorem finset.fold_op_distrib + theorem finset.fold_op_rel_iff_and + theorem finset.fold_op_rel_iff_or + theorem finset.fold_singleton + theorem finset.fold_union_inter + theorem finset.le_fold_max + theorem finset.le_fold_min + theorem finset.lt_fold_max + theorem finset.lt_fold_min Added src/data/finset/intervals.lean + theorem finset.Ico.card + theorem finset.Ico.diff_left + theorem finset.Ico.diff_right + theorem finset.Ico.disjoint_consecutive + theorem finset.Ico.eq_empty_iff + theorem finset.Ico.eq_empty_of_le + theorem finset.Ico.filter_le + theorem finset.Ico.filter_le_of_le + theorem finset.Ico.filter_le_of_le_bot + theorem finset.Ico.filter_le_of_top_le + theorem finset.Ico.filter_lt + theorem finset.Ico.filter_lt_of_ge + theorem finset.Ico.filter_lt_of_le_bot + theorem finset.Ico.filter_lt_of_top_le + theorem finset.Ico.image_add + theorem finset.Ico.image_const_sub + theorem finset.Ico.image_sub + theorem finset.Ico.insert_succ_bot + theorem finset.Ico.inter_consecutive + theorem finset.Ico.mem + theorem finset.Ico.not_mem_top + theorem finset.Ico.pred_singleton + theorem finset.Ico.self_eq_empty + theorem finset.Ico.subset_iff + theorem finset.Ico.succ_singleton + theorem finset.Ico.succ_top' + theorem finset.Ico.succ_top + theorem finset.Ico.to_finset + theorem finset.Ico.union_consecutive + theorem finset.Ico.val + theorem finset.Ico.zero_bot + def finset.Ico + theorem finset.Ico_ℤ.card + theorem finset.Ico_ℤ.mem + def finset.Ico_ℤ + theorem finset.range_eq_Ico + theorem finset.range_image_pred_top_sub Added src/data/finset/lattice.lean + theorem finset.bInter_coe + theorem finset.bInter_finset_image + theorem finset.bInter_insert + theorem finset.bInter_inter + theorem finset.bInter_singleton + theorem finset.bUnion_coe + theorem finset.bUnion_finset_image + theorem finset.bUnion_insert + theorem finset.bUnion_singleton + theorem finset.bUnion_union + theorem finset.comp_inf_eq_inf_comp + theorem finset.comp_inf_eq_inf_comp_of_is_total + theorem finset.comp_sup_eq_sup_comp + theorem finset.comp_sup_eq_sup_comp_of_is_total + theorem finset.exists_max_image + theorem finset.exists_min_image + theorem finset.exists_nat_subset_range + def finset.inf + theorem finset.inf_congr + theorem finset.inf_empty + theorem finset.inf_eq_infi + theorem finset.inf_insert + theorem finset.inf_le + theorem finset.inf_mono + theorem finset.inf_mono_fun + theorem finset.inf_singleton + theorem finset.inf_union + theorem finset.inf_val + theorem finset.infi_coe + theorem finset.infi_finset_image + theorem finset.infi_insert + theorem finset.infi_singleton + theorem finset.infi_union + theorem finset.le_inf + theorem finset.le_inf_iff + theorem finset.le_max' + theorem finset.le_max_of_mem + theorem finset.le_min' + theorem finset.le_sup + theorem finset.lt_inf_iff + def finset.max' + theorem finset.max'_le + theorem finset.max'_mem + theorem finset.max_empty + theorem finset.max_eq_none + theorem finset.max_eq_sup_with_bot + theorem finset.max_insert + theorem finset.max_of_mem + theorem finset.max_of_nonempty + theorem finset.max_singleton + theorem finset.mem_of_max + theorem finset.mem_of_min + def finset.min' + theorem finset.min'_le + theorem finset.min'_lt_max' + theorem finset.min'_lt_max'_of_card + theorem finset.min'_mem + theorem finset.min_empty + theorem finset.min_eq_inf_with_top + theorem finset.min_eq_none + theorem finset.min_insert + theorem finset.min_le_of_mem + theorem finset.min_of_mem + theorem finset.min_of_nonempty + theorem finset.min_singleton + theorem finset.subset_range_sup_succ + def finset.sup + theorem finset.sup_congr + theorem finset.sup_def + theorem finset.sup_empty + theorem finset.sup_eq_supr + theorem finset.sup_insert + theorem finset.sup_le + theorem finset.sup_le_iff + theorem finset.sup_lt_iff + theorem finset.sup_mono + theorem finset.sup_mono_fun + theorem finset.sup_singleton + theorem finset.sup_union + theorem finset.supr_coe + theorem finset.supr_finset_image + theorem finset.supr_insert + theorem finset.supr_singleton + theorem finset.supr_union + theorem infi_eq_infi_finset + theorem multiset.count_sup + theorem set.Inter_eq_Inter_finset + theorem set.Union_eq_Union_finset + theorem supr_eq_supr_finset Added src/data/finset/nat_antidiagonal.lean + def finset.nat.antidiagonal + theorem finset.nat.antidiagonal_zero + theorem finset.nat.card_antidiagonal + theorem finset.nat.mem_antidiagonal Added src/data/finset/pi.lean + theorem finset.mem_pi + def finset.pi.cons + theorem finset.pi.cons_ne + theorem finset.pi.cons_same + def finset.pi.empty + def finset.pi + theorem finset.pi_cons_injective + theorem finset.pi_disjoint_of_disjoint + theorem finset.pi_empty + theorem finset.pi_insert + theorem finset.pi_subset + theorem finset.pi_val Added src/data/finset/powerset.lean + theorem finset.card_powerset + theorem finset.card_powerset_len + theorem finset.empty_mem_powerset + theorem finset.mem_powerset + theorem finset.mem_powerset_len + theorem finset.mem_powerset_self + theorem finset.not_mem_of_mem_powerset_of_not_mem + def finset.powerset + theorem finset.powerset_empty + theorem finset.powerset_insert + def finset.powerset_len + theorem finset.powerset_len_mono + theorem finset.powerset_mono Added src/data/finset/sort.lean + theorem finset.length_sort + theorem finset.mem_sort + def finset.mono_of_fin + theorem finset.mono_of_fin_bij_on + theorem finset.mono_of_fin_eq_mono_of_fin_iff + theorem finset.mono_of_fin_injective + theorem finset.mono_of_fin_last + theorem finset.mono_of_fin_strict_mono + theorem finset.mono_of_fin_unique + theorem finset.mono_of_fin_zero + def finset.sort + theorem finset.sort_eq + theorem finset.sort_nodup + theorem finset.sort_sorted + theorem finset.sort_sorted_lt + theorem finset.sort_to_finset + theorem finset.sorted_last_eq_max' + theorem finset.sorted_zero_eq_min' Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean Modified src/data/list/default.lean Renamed src/data/list/antidiagonal.lean to src/data/list/nat_antidiagonal.lean Added src/data/multiset/antidiagonal.lean + def multiset.antidiagonal + theorem multiset.antidiagonal_coe' + theorem multiset.antidiagonal_coe + theorem multiset.antidiagonal_cons + theorem multiset.antidiagonal_map_fst + theorem multiset.antidiagonal_map_snd + theorem multiset.antidiagonal_zero + theorem multiset.card_antidiagonal + theorem multiset.mem_antidiagonal + theorem multiset.prod_map_add Renamed src/data/multiset.lean to src/data/multiset/basic.lean - theorem multiset.Ico.add_consecutive - theorem multiset.Ico.card - theorem multiset.Ico.eq_cons - theorem multiset.Ico.eq_zero_iff - theorem multiset.Ico.eq_zero_of_le - theorem multiset.Ico.filter_le - theorem multiset.Ico.filter_le_of_le - theorem multiset.Ico.filter_le_of_le_bot - theorem multiset.Ico.filter_le_of_top_le - theorem multiset.Ico.filter_lt - theorem multiset.Ico.filter_lt_of_ge - theorem multiset.Ico.filter_lt_of_le_bot - theorem multiset.Ico.filter_lt_of_top_le - theorem multiset.Ico.inter_consecutive - theorem multiset.Ico.map_add - theorem multiset.Ico.map_sub - theorem multiset.Ico.mem - theorem multiset.Ico.nodup - theorem multiset.Ico.not_mem_top - theorem multiset.Ico.pred_singleton - theorem multiset.Ico.self_eq_zero - theorem multiset.Ico.succ_singleton - theorem multiset.Ico.succ_top - theorem multiset.Ico.zero_bot - def multiset.Ico - def multiset.antidiagonal - theorem multiset.antidiagonal_coe' - theorem multiset.antidiagonal_coe - theorem multiset.antidiagonal_cons - theorem multiset.antidiagonal_map_fst - theorem multiset.antidiagonal_map_snd - theorem multiset.antidiagonal_zero - theorem multiset.attach_ndinsert - theorem multiset.bind_def - theorem multiset.card_antidiagonal - theorem multiset.card_pi - theorem multiset.card_powerset - theorem multiset.card_powerset_len - theorem multiset.card_sections - theorem multiset.coe_erase_dup - theorem multiset.coe_fold_l - theorem multiset.coe_fold_r - theorem multiset.coe_ndinsert - theorem multiset.coe_ndinter - theorem multiset.coe_ndunion - theorem multiset.coe_nodup - theorem multiset.coe_sections - theorem multiset.coe_sort - theorem multiset.comp_traverse - theorem multiset.cons_ndinter_of_mem - theorem multiset.cons_ndunion - theorem multiset.count_eq_one_of_mem - theorem multiset.disjoint_ndinsert_left - theorem multiset.disjoint_ndinsert_right - theorem multiset.disjoint_of_nodup_add - def multiset.erase_dup - theorem multiset.erase_dup_add - theorem multiset.erase_dup_cons - theorem multiset.erase_dup_cons_of_mem - theorem multiset.erase_dup_cons_of_not_mem - theorem multiset.erase_dup_eq_self - theorem multiset.erase_dup_eq_zero - theorem multiset.erase_dup_ext - theorem multiset.erase_dup_le - theorem multiset.erase_dup_map_erase_dup_eq - theorem multiset.erase_dup_singleton - theorem multiset.erase_dup_subset' - theorem multiset.erase_dup_subset - theorem multiset.erase_dup_zero - theorem multiset.fmap_def - def multiset.fold - theorem multiset.fold_add - theorem multiset.fold_cons'_left - theorem multiset.fold_cons'_right - theorem multiset.fold_cons_left - theorem multiset.fold_cons_right - theorem multiset.fold_distrib - theorem multiset.fold_eq_foldl - theorem multiset.fold_eq_foldr - theorem multiset.fold_erase_dup_idem - theorem multiset.fold_hom - theorem multiset.fold_singleton - theorem multiset.fold_union_inter - theorem multiset.fold_zero - theorem multiset.forall_of_pairwise - theorem multiset.id_traverse - def multiset.inf - theorem multiset.inf_add - theorem multiset.inf_cons - theorem multiset.inf_erase_dup - theorem multiset.inf_le - theorem multiset.inf_mono - theorem multiset.inf_ndinsert - theorem multiset.inf_ndunion - theorem multiset.inf_singleton - theorem multiset.inf_union - theorem multiset.inf_zero - theorem multiset.inter_le_ndinter - theorem multiset.le_erase_dup - theorem multiset.le_iff_subset - theorem multiset.le_inf - theorem multiset.le_ndinsert_self - theorem multiset.le_ndinter - theorem multiset.le_ndunion_left - theorem multiset.le_ndunion_right - theorem multiset.le_smul_erase_dup - theorem multiset.le_sup - theorem multiset.length_ndinsert_of_mem - theorem multiset.length_ndinsert_of_not_mem - theorem multiset.length_sort - theorem multiset.lift_beta - theorem multiset.map_comp_coe - theorem multiset.map_eq_map_of_bij_of_nodup - theorem multiset.map_single_le_powerset - theorem multiset.map_traverse - theorem multiset.mem_antidiagonal - theorem multiset.mem_erase_dup - theorem multiset.mem_erase_iff_of_nodup - theorem multiset.mem_erase_of_nodup - theorem multiset.mem_ndinsert - theorem multiset.mem_ndinsert_of_mem - theorem multiset.mem_ndinsert_self - theorem multiset.mem_ndinter - theorem multiset.mem_ndunion - theorem multiset.mem_pi - theorem multiset.mem_powerset - theorem multiset.mem_powerset_aux - theorem multiset.mem_powerset_len - theorem multiset.mem_powerset_len_aux - theorem multiset.mem_sections - theorem multiset.mem_sort - theorem multiset.mem_sub_of_nodup - def multiset.nat.antidiagonal - theorem multiset.nat.antidiagonal_zero - theorem multiset.nat.card_antidiagonal - theorem multiset.nat.mem_antidiagonal - theorem multiset.nat.nodup_antidiagonal - theorem multiset.naturality - def multiset.ndinsert - theorem multiset.ndinsert_le - theorem multiset.ndinsert_of_mem - theorem multiset.ndinsert_of_not_mem - theorem multiset.ndinsert_zero - def multiset.ndinter - theorem multiset.ndinter_cons_of_not_mem - theorem multiset.ndinter_eq_inter - theorem multiset.ndinter_eq_zero_iff_disjoint - theorem multiset.ndinter_le_left - theorem multiset.ndinter_le_right - theorem multiset.ndinter_subset_left - theorem multiset.ndinter_subset_right - def multiset.ndunion - theorem multiset.ndunion_eq_union - theorem multiset.ndunion_le - theorem multiset.ndunion_le_add - theorem multiset.ndunion_le_union - def multiset.nodup - theorem multiset.nodup_add - theorem multiset.nodup_add_of_nodup - theorem multiset.nodup_attach - theorem multiset.nodup_bind - theorem multiset.nodup_cons - theorem multiset.nodup_cons_of_nodup - theorem multiset.nodup_erase_dup - theorem multiset.nodup_erase_eq_filter - theorem multiset.nodup_erase_of_nodup - theorem multiset.nodup_ext - theorem multiset.nodup_filter - theorem multiset.nodup_filter_map - theorem multiset.nodup_iff_count_le_one - theorem multiset.nodup_iff_le - theorem multiset.nodup_inter_left - theorem multiset.nodup_inter_right - theorem multiset.nodup_map - theorem multiset.nodup_map_on - theorem multiset.nodup_ndinsert - theorem multiset.nodup_ndinter - theorem multiset.nodup_ndunion - theorem multiset.nodup_of_le - theorem multiset.nodup_of_nodup_cons - theorem multiset.nodup_of_nodup_map - theorem multiset.nodup_pi - theorem multiset.nodup_pmap - theorem multiset.nodup_powerset - theorem multiset.nodup_powerset_len - theorem multiset.nodup_product - theorem multiset.nodup_range - theorem multiset.nodup_sigma - theorem multiset.nodup_singleton - theorem multiset.nodup_union - theorem multiset.nodup_zero - theorem multiset.not_mem_of_nodup_cons - theorem multiset.not_nodup_pair - theorem multiset.pairwise_of_nodup - def multiset.pi.cons - theorem multiset.pi.cons_ne - theorem multiset.pi.cons_same - theorem multiset.pi.cons_swap - def multiset.pi.empty - def multiset.pi - theorem multiset.pi_cons - theorem multiset.pi_cons_injective - theorem multiset.pi_zero - def multiset.powerset - def multiset.powerset_aux' - theorem multiset.powerset_aux'_cons - theorem multiset.powerset_aux'_nil - theorem multiset.powerset_aux'_perm - def multiset.powerset_aux - theorem multiset.powerset_aux_eq_map_coe - theorem multiset.powerset_aux_perm - theorem multiset.powerset_aux_perm_powerset_aux' - theorem multiset.powerset_coe' - theorem multiset.powerset_coe - theorem multiset.powerset_cons - def multiset.powerset_len - def multiset.powerset_len_aux - theorem multiset.powerset_len_aux_cons - theorem multiset.powerset_len_aux_eq_map_coe - theorem multiset.powerset_len_aux_nil - theorem multiset.powerset_len_aux_perm - theorem multiset.powerset_len_aux_zero - theorem multiset.powerset_len_coe' - theorem multiset.powerset_len_coe - theorem multiset.powerset_len_cons - theorem multiset.powerset_len_le_powerset - theorem multiset.powerset_len_mono - theorem multiset.powerset_len_zero_left - theorem multiset.powerset_len_zero_right - theorem multiset.powerset_zero - theorem multiset.prod_map_add - theorem multiset.prod_map_sum - theorem multiset.pure_def - theorem multiset.range_le - theorem multiset.revzip_powerset_aux' - theorem multiset.revzip_powerset_aux - theorem multiset.revzip_powerset_aux_lemma - theorem multiset.revzip_powerset_aux_perm - theorem multiset.revzip_powerset_aux_perm_aux' - def multiset.sections - theorem multiset.sections_add - theorem multiset.sections_cons - theorem multiset.sections_zero - def multiset.sort - theorem multiset.sort_eq - theorem multiset.sort_sorted - theorem multiset.subset_erase_dup' - theorem multiset.subset_erase_dup - theorem multiset.subset_ndunion_left - theorem multiset.subset_ndunion_right - def multiset.sup - theorem multiset.sup_add - theorem multiset.sup_cons - theorem multiset.sup_erase_dup - theorem multiset.sup_le - theorem multiset.sup_mono - theorem multiset.sup_ndinsert - theorem multiset.sup_ndunion - theorem multiset.sup_singleton - theorem multiset.sup_union - theorem multiset.sup_zero - def multiset.traverse - theorem multiset.traverse_map - theorem multiset.zero_ndinter - theorem multiset.zero_ndunion Added src/data/multiset/default.lean Added src/data/multiset/erase_dup.lean + theorem multiset.coe_erase_dup + def multiset.erase_dup + theorem multiset.erase_dup_cons_of_mem + theorem multiset.erase_dup_cons_of_not_mem + theorem multiset.erase_dup_eq_self + theorem multiset.erase_dup_eq_zero + theorem multiset.erase_dup_ext + theorem multiset.erase_dup_le + theorem multiset.erase_dup_map_erase_dup_eq + theorem multiset.erase_dup_singleton + theorem multiset.erase_dup_subset' + theorem multiset.erase_dup_subset + theorem multiset.erase_dup_zero + theorem multiset.le_erase_dup + theorem multiset.mem_erase_dup + theorem multiset.nodup_erase_dup + theorem multiset.subset_erase_dup' + theorem multiset.subset_erase_dup Added src/data/multiset/finset_ops.lean + theorem multiset.attach_ndinsert + theorem multiset.coe_ndinsert + theorem multiset.coe_ndinter + theorem multiset.coe_ndunion + theorem multiset.cons_ndinter_of_mem + theorem multiset.cons_ndunion + theorem multiset.disjoint_ndinsert_left + theorem multiset.disjoint_ndinsert_right + theorem multiset.erase_dup_add + theorem multiset.erase_dup_cons + theorem multiset.inter_le_ndinter + theorem multiset.le_ndinsert_self + theorem multiset.le_ndinter + theorem multiset.le_ndunion_left + theorem multiset.le_ndunion_right + theorem multiset.length_ndinsert_of_mem + theorem multiset.length_ndinsert_of_not_mem + theorem multiset.mem_ndinsert + theorem multiset.mem_ndinsert_of_mem + theorem multiset.mem_ndinsert_self + theorem multiset.mem_ndinter + theorem multiset.mem_ndunion + def multiset.ndinsert + theorem multiset.ndinsert_le + theorem multiset.ndinsert_of_mem + theorem multiset.ndinsert_of_not_mem + theorem multiset.ndinsert_zero + def multiset.ndinter + theorem multiset.ndinter_cons_of_not_mem + theorem multiset.ndinter_eq_inter + theorem multiset.ndinter_eq_zero_iff_disjoint + theorem multiset.ndinter_le_left + theorem multiset.ndinter_le_right + theorem multiset.ndinter_subset_left + theorem multiset.ndinter_subset_right + def multiset.ndunion + theorem multiset.ndunion_eq_union + theorem multiset.ndunion_le + theorem multiset.ndunion_le_add + theorem multiset.ndunion_le_union + theorem multiset.nodup_ndinsert + theorem multiset.nodup_ndinter + theorem multiset.nodup_ndunion + theorem multiset.subset_ndunion_left + theorem multiset.subset_ndunion_right + theorem multiset.zero_ndinter + theorem multiset.zero_ndunion Added src/data/multiset/fold.lean + theorem multiset.coe_fold_l + theorem multiset.coe_fold_r + def multiset.fold + theorem multiset.fold_add + theorem multiset.fold_cons'_left + theorem multiset.fold_cons'_right + theorem multiset.fold_cons_left + theorem multiset.fold_cons_right + theorem multiset.fold_distrib + theorem multiset.fold_eq_foldl + theorem multiset.fold_eq_foldr + theorem multiset.fold_erase_dup_idem + theorem multiset.fold_hom + theorem multiset.fold_singleton + theorem multiset.fold_union_inter + theorem multiset.fold_zero + theorem multiset.le_smul_erase_dup Added src/data/multiset/functor.lean + theorem multiset.bind_def + theorem multiset.comp_traverse + theorem multiset.fmap_def + theorem multiset.id_traverse + theorem multiset.lift_beta + theorem multiset.map_comp_coe + theorem multiset.map_traverse + theorem multiset.naturality + theorem multiset.pure_def + def multiset.traverse + theorem multiset.traverse_map Added src/data/multiset/intervals.lean + theorem multiset.Ico.add_consecutive + theorem multiset.Ico.card + theorem multiset.Ico.eq_cons + theorem multiset.Ico.eq_zero_iff + theorem multiset.Ico.eq_zero_of_le + theorem multiset.Ico.filter_le + theorem multiset.Ico.filter_le_of_le + theorem multiset.Ico.filter_le_of_le_bot + theorem multiset.Ico.filter_le_of_top_le + theorem multiset.Ico.filter_lt + theorem multiset.Ico.filter_lt_of_ge + theorem multiset.Ico.filter_lt_of_le_bot + theorem multiset.Ico.filter_lt_of_top_le + theorem multiset.Ico.inter_consecutive + theorem multiset.Ico.map_add + theorem multiset.Ico.map_sub + theorem multiset.Ico.mem + theorem multiset.Ico.nodup + theorem multiset.Ico.not_mem_top + theorem multiset.Ico.pred_singleton + theorem multiset.Ico.self_eq_zero + theorem multiset.Ico.succ_singleton + theorem multiset.Ico.succ_top + theorem multiset.Ico.zero_bot + def multiset.Ico Added src/data/multiset/lattice.lean + def multiset.inf + theorem multiset.inf_add + theorem multiset.inf_cons + theorem multiset.inf_erase_dup + theorem multiset.inf_le + theorem multiset.inf_mono + theorem multiset.inf_ndinsert + theorem multiset.inf_ndunion + theorem multiset.inf_singleton + theorem multiset.inf_union + theorem multiset.inf_zero + theorem multiset.le_inf + theorem multiset.le_sup + def multiset.sup + theorem multiset.sup_add + theorem multiset.sup_cons + theorem multiset.sup_erase_dup + theorem multiset.sup_le + theorem multiset.sup_mono + theorem multiset.sup_ndinsert + theorem multiset.sup_ndunion + theorem multiset.sup_singleton + theorem multiset.sup_union + theorem multiset.sup_zero Added src/data/multiset/nat_antidiagonal.lean + def multiset.nat.antidiagonal + theorem multiset.nat.antidiagonal_zero + theorem multiset.nat.card_antidiagonal + theorem multiset.nat.mem_antidiagonal + theorem multiset.nat.nodup_antidiagonal Added src/data/multiset/nodup.lean + theorem multiset.coe_nodup + theorem multiset.count_eq_one_of_mem + theorem multiset.disjoint_of_nodup_add + theorem multiset.forall_of_pairwise + theorem multiset.le_iff_subset + theorem multiset.map_eq_map_of_bij_of_nodup + theorem multiset.mem_erase_iff_of_nodup + theorem multiset.mem_erase_of_nodup + theorem multiset.mem_sub_of_nodup + def multiset.nodup + theorem multiset.nodup_add + theorem multiset.nodup_add_of_nodup + theorem multiset.nodup_attach + theorem multiset.nodup_bind + theorem multiset.nodup_cons + theorem multiset.nodup_cons_of_nodup + theorem multiset.nodup_erase_eq_filter + theorem multiset.nodup_erase_of_nodup + theorem multiset.nodup_ext + theorem multiset.nodup_filter + theorem multiset.nodup_filter_map + theorem multiset.nodup_iff_count_le_one + theorem multiset.nodup_iff_le + theorem multiset.nodup_inter_left + theorem multiset.nodup_inter_right + theorem multiset.nodup_map + theorem multiset.nodup_map_on + theorem multiset.nodup_of_le + theorem multiset.nodup_of_nodup_cons + theorem multiset.nodup_of_nodup_map + theorem multiset.nodup_pmap + theorem multiset.nodup_powerset + theorem multiset.nodup_powerset_len + theorem multiset.nodup_product + theorem multiset.nodup_range + theorem multiset.nodup_sigma + theorem multiset.nodup_singleton + theorem multiset.nodup_union + theorem multiset.nodup_zero + theorem multiset.not_mem_of_nodup_cons + theorem multiset.not_nodup_pair + theorem multiset.pairwise_of_nodup + theorem multiset.range_le Added src/data/multiset/pi.lean + theorem multiset.card_pi + theorem multiset.mem_pi + theorem multiset.nodup_pi + def multiset.pi.cons + theorem multiset.pi.cons_ne + theorem multiset.pi.cons_same + theorem multiset.pi.cons_swap + def multiset.pi.empty + def multiset.pi + theorem multiset.pi_cons + theorem multiset.pi_cons_injective + theorem multiset.pi_zero Added src/data/multiset/powerset.lean + theorem multiset.card_powerset + theorem multiset.card_powerset_len + theorem multiset.map_single_le_powerset + theorem multiset.mem_powerset + theorem multiset.mem_powerset_aux + theorem multiset.mem_powerset_len + theorem multiset.mem_powerset_len_aux + def multiset.powerset + def multiset.powerset_aux' + theorem multiset.powerset_aux'_cons + theorem multiset.powerset_aux'_nil + theorem multiset.powerset_aux'_perm + def multiset.powerset_aux + theorem multiset.powerset_aux_eq_map_coe + theorem multiset.powerset_aux_perm + theorem multiset.powerset_aux_perm_powerset_aux' + theorem multiset.powerset_coe' + theorem multiset.powerset_coe + theorem multiset.powerset_cons + def multiset.powerset_len + def multiset.powerset_len_aux + theorem multiset.powerset_len_aux_cons + theorem multiset.powerset_len_aux_eq_map_coe + theorem multiset.powerset_len_aux_nil + theorem multiset.powerset_len_aux_perm + theorem multiset.powerset_len_aux_zero + theorem multiset.powerset_len_coe' + theorem multiset.powerset_len_coe + theorem multiset.powerset_len_cons + theorem multiset.powerset_len_le_powerset + theorem multiset.powerset_len_mono + theorem multiset.powerset_len_zero_left + theorem multiset.powerset_len_zero_right + theorem multiset.powerset_zero + theorem multiset.revzip_powerset_aux' + theorem multiset.revzip_powerset_aux + theorem multiset.revzip_powerset_aux_lemma + theorem multiset.revzip_powerset_aux_perm + theorem multiset.revzip_powerset_aux_perm_aux' Added src/data/multiset/sections.lean + theorem multiset.card_sections + theorem multiset.coe_sections + theorem multiset.mem_sections + theorem multiset.prod_map_sum + def multiset.sections + theorem multiset.sections_add + theorem multiset.sections_cons + theorem multiset.sections_zero Added src/data/multiset/sort.lean + theorem multiset.coe_sort + theorem multiset.length_sort + theorem multiset.mem_sort + def multiset.sort + theorem multiset.sort_eq + theorem multiset.sort_sorted Modified src/data/pnat/factors.lean Modified src/data/pnat/intervals.lean Modified src/data/polynomial.lean Modified src/data/real/nnreal.lean Modified test/ext.lean Modified test/mk_iff_of_inductive.lean Modified test/where.lean 2020-07-01 10:05:10 8ba7595 feat(category/preadditive): properties of preadditive biproducts (#3245) ### Basic facts about morphisms between biproducts in preadditive categories. * In any category (with zero morphisms), if `biprod.map f g` is an isomorphism, then both `f` and `g` are isomorphisms. The remaining lemmas hold in any preadditive category. * If `f` is a morphism `X₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂` whose `X₁ ⟶ Y₁` entry is an isomorphism, then we can construct isomorphisms `L : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂` and `R : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂` so that `L.hom ≫ g ≫ R.hom` is diagonal (with `X₁ ⟶ Y₁` component still `f`), via Gaussian elimination. * As a corollary of the previous two facts, if we have an isomorphism `X₁ ⊞ X₂ ≅ Y₁ ⊞ Y₂` whose `X₁ ⟶ Y₁` entry is an isomorphism, we can construct an isomorphism `X₂ ≅ Y₂`. * If `f : W ⊞ X ⟶ Y ⊞ Z` is an isomorphism, either `𝟙 W = 0`, or at least one of the component maps `W ⟶ Y` and `W ⟶ Z` is nonzero. * If `f : ⨁ S ⟶ ⨁ T` is an isomorphism, then every column (corresponding to a nonzero summand in the domain) has some nonzero matrix entry. This PR is preliminary to some work on semisimple categories. ESTIMATED CHANGES Added src/category_theory/preadditive/biproducts.lean + theorem category_theory.biprod.column_nonzero_of_iso + def category_theory.biprod.gaussian' + def category_theory.biprod.gaussian + theorem category_theory.biprod.inl_of_components + theorem category_theory.biprod.inr_of_components + def category_theory.biprod.iso_elim' + def category_theory.biprod.iso_elim + def category_theory.biprod.of_components + theorem category_theory.biprod.of_components_comp + theorem category_theory.biprod.of_components_eq + theorem category_theory.biprod.of_components_fst + theorem category_theory.biprod.of_components_snd + def category_theory.biprod.unipotent_lower + def category_theory.biprod.unipotent_upper + theorem category_theory.biproduct.column_nonzero_of_iso' + def category_theory.biproduct.column_nonzero_of_iso + def category_theory.is_iso_left_of_is_iso_biprod_map + def category_theory.is_iso_right_of_is_iso_biprod_map Renamed src/category_theory/preadditive.lean to src/category_theory/preadditive/default.lean Renamed src/category_theory/schur.lean to src/category_theory/preadditive/schur.lean 2020-07-01 09:03:47 aff951a chore(algebra/big_operators): don't use omega (#3255) Postpone importing `omega` a little bit longer. ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/nat/choose.lean Modified src/ring_theory/coprime.lean 2020-07-01 07:55:07 e68503a feat(ring_theory/valuation): definition and basic properties of valuations (#3222) From the perfectoid project. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/linear_ordered_comm_group_with_zero.lean + theorem eq_one_of_pow_eq_one + theorem one_le_pow_iff + theorem one_le_pow_of_one_le' + theorem pow_eq_one_iff + theorem pow_le_one_iff + theorem pow_le_one_of_le_one Modified src/algebra/ordered_group.lean + theorem mul_le_one_of_le_one_of_le_one + theorem one_le_mul_of_one_le_of_one_le Added src/ring_theory/valuation/basic.lean + theorem valuation.coe_coe + def valuation.comap + theorem valuation.comap_comp + theorem valuation.comap_id + theorem valuation.comap_on_quot_eq + theorem valuation.comap_supp + theorem valuation.ext + theorem valuation.ext_iff + theorem valuation.is_equiv.comap + theorem valuation.is_equiv.map + theorem valuation.is_equiv.ne_zero + theorem valuation.is_equiv.of_eq + theorem valuation.is_equiv.refl + theorem valuation.is_equiv.symm + theorem valuation.is_equiv.trans + theorem valuation.is_equiv.val_eq + def valuation.is_equiv + theorem valuation.is_equiv_of_map_strict_mono + theorem valuation.is_equiv_of_val_le_one + def valuation.map + theorem valuation.map_add + theorem valuation.map_add_of_distinct_val + theorem valuation.map_add_supp + theorem valuation.map_eq_of_sub_lt + theorem valuation.map_inv + theorem valuation.map_mul + theorem valuation.map_neg + theorem valuation.map_neg_one + theorem valuation.map_one + theorem valuation.map_pow + theorem valuation.map_sub_le_max + theorem valuation.map_sub_swap + theorem valuation.map_units_inv + theorem valuation.map_zero + theorem valuation.mem_supp_iff + theorem valuation.ne_zero_iff + def valuation.on_quot + theorem valuation.on_quot_comap_eq + def valuation.on_quot_val + theorem valuation.self_le_supp_comap + def valuation.supp + theorem valuation.supp_quot + theorem valuation.supp_quot_supp + def valuation.to_preorder + theorem valuation.unit_map_eq + theorem valuation.zero_iff + structure valuation 2020-07-01 03:39:36 a22cd4d chore(algebra/group_with_zero): nolint (#3254) Adding two doc strings to make the file lint-free again. cf. #3253. ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean 2020-07-01 01:31:04 859edfb chore(scripts): update nolints.txt (#3253) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-07-01 00:28:03 89f3bbc feat(data/matrix): std_basis_matrix (#3244) The definition of ``` def std_basis_matrix (i : m) (j : n) (a : α) : matrix m n α := (λ i' j', if i' = i ∧ j' = j then a else 0) ``` and associated lemmas, and some refactoring of `src/ring_theory/matrix_algebra.lean` to use it. This is work of @jalex-stark which I'm PR'ing as part of getting Cayley-Hamilton ready. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_product' + theorem mul_equiv.map_prod Modified src/data/matrix/basic.lean + theorem matrix.coe_scalar + theorem matrix.elementary_eq_basis_mul_basis + theorem matrix.matrix_eq_sum_elementary + theorem matrix.scalar_apply_eq + theorem matrix.scalar_apply_ne + theorem matrix.smul_std_basis_matrix + def matrix.std_basis_matrix + theorem matrix.std_basis_matrix_add + theorem matrix.std_basis_matrix_zero Modified src/ring_theory/algebra.lean + theorem alg_equiv.map_sum + theorem alg_equiv.trans_apply Modified src/ring_theory/matrix_algebra.lean + theorem matrix_equiv_tensor_apply_elementary 2020-07-01 00:02:51 a40be98 feat(category_theory/limits/shapes): simp lemmas to decompose pullback_cone.mk.fst (#3249) Decompose `(pullback_cone.mk _ _ _).fst` into its first component (+symmetrical and dual versions) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.pullback_cone.mk_fst + theorem category_theory.limits.pullback_cone.mk_snd + theorem category_theory.limits.pushout_cocone.mk_inl + theorem category_theory.limits.pushout_cocone.mk_inr 2020-06-30 22:34:44 0625691 chore(topology/*): use dot syntax for some lemmas (#3251) Rename: * `closure_eq_of_is_closed` to `is_closed.closure_eq`; * `closed_of_compact` to `compact.is_closed`; * `bdd_above_of_compact` to `compact.bdd_above`; * `bdd_below_of_compact` to `compact.bdd_below`. * `is_complete_of_is_closed` to `is_closed.is_complete` * `is_closed_of_is_complete` to `is_complete.is_closed` * `is_closed_iff_nhds` to `is_closed_iff_cluster_pt` * `closure_subset_iff_subset_of_is_closed` to `is_closed.closure_subset_iff` Add: * `closure_closed_ball` (`@[simp]` lemma) * `is_closed.closure_subset : is_closed s → closure s ⊆ s` ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/inverse.lean Modified src/analysis/convex/topology.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/ordered.lean - theorem bdd_above_of_compact - theorem bdd_below_of_compact + theorem compact.bdd_above + theorem compact.bdd_below Modified src/topology/basic.lean +/- theorem closure_empty_iff - theorem closure_eq_of_is_closed + theorem closure_subset_iff_is_closed - theorem closure_subset_iff_subset_of_is_closed + theorem is_closed.closure_eq + theorem is_closed.closure_subset + theorem is_closed.closure_subset_iff + theorem is_closed_iff_cluster_pt - theorem is_closed_iff_nhds Modified src/topology/bounded_continuous_function.lean Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean + theorem metric.closure_closed_ball Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/opens.lean Modified src/topology/separation.lean - theorem closed_of_compact + theorem compact.is_closed Modified src/topology/sequences.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean + theorem is_closed.is_complete - theorem is_complete_of_is_closed Modified src/topology/uniform_space/complete_separated.lean - theorem is_closed_of_is_complete + theorem is_complete.is_closed Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-06-30 17:14:16 b391563 feat(algebra/lie_algebra): conjugation transformation for Lie algebras of skew-adjoint endomorphims, matrices (#3229) The two main results are the lemmas: * skew_adjoint_lie_subalgebra_equiv * skew_adjoint_matrices_lie_subalgebra_equiv The latter is expected to be useful when defining the classical Lie algebras of type B and D. ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean +/- theorem bilin_form.is_skew_adjoint_bracket - def bilin_form.skew_adjoint_lie_subalgebra - def bilin_form.skew_adjoint_matrices_lie_embedding - def bilin_form.skew_adjoint_matrices_lie_subalgebra + theorem lie_algebra.equiv.apply_symm_apply + theorem lie_algebra.equiv.coe_to_lie_equiv + theorem lie_algebra.equiv.coe_to_linear_equiv + def lie_algebra.equiv.of_eq + theorem lie_algebra.equiv.of_eq_apply + theorem lie_algebra.equiv.of_injective_apply + def lie_algebra.equiv.of_subalgebra + theorem lie_algebra.equiv.of_subalgebra_apply + def lie_algebra.equiv.of_subalgebras + theorem lie_algebra.equiv.of_subalgebras_apply + theorem lie_algebra.equiv.of_subalgebras_symm_apply + theorem lie_algebra.equiv.one_apply + theorem lie_algebra.equiv.refl_apply + theorem lie_algebra.equiv.symm_apply_apply + theorem lie_algebra.equiv.symm_symm + theorem lie_algebra.equiv.symm_trans_apply + theorem lie_algebra.equiv.trans_apply +/- def lie_algebra.morphism.range + theorem lie_algebra.morphism.range_bracket + theorem lie_equiv_matrix'_apply + theorem lie_equiv_matrix'_symm_apply + theorem lie_subalgebra.coe_bracket + theorem lie_subalgebra.ext + theorem lie_subalgebra.ext_iff +/- def lie_subalgebra.incl + def lie_subalgebra.map + theorem lie_subalgebra.mem_coe' + theorem lie_subalgebra.mem_coe + theorem lie_subalgebra.mem_map_submodule + def linear_equiv.lie_conj + theorem linear_equiv.lie_conj_apply + theorem linear_equiv.lie_conj_symm + theorem matrix.is_skew_adjoint_bracket + theorem matrix.lie_conj_apply + theorem matrix.lie_conj_symm_apply + theorem matrix.lie_transpose + def skew_adjoint_lie_subalgebra + def skew_adjoint_lie_subalgebra_equiv + theorem skew_adjoint_lie_subalgebra_equiv_apply + theorem skew_adjoint_lie_subalgebra_equiv_symm_apply + def skew_adjoint_matrices_lie_subalgebra + theorem skew_adjoint_matrices_lie_subalgebra_equiv_apply Modified src/data/matrix/basic.lean + theorem matrix.transpose_sub Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.conj_apply + theorem linear_equiv.conj_comp + theorem linear_equiv.conj_trans + theorem linear_equiv.of_injective_apply + def linear_equiv.of_submodule + theorem linear_equiv.of_submodule_apply + theorem linear_equiv.of_submodule_symm_apply + def linear_equiv.of_submodules + theorem linear_equiv.of_submodules_apply + theorem linear_equiv.of_submodules_symm_apply + theorem linear_equiv.symm_conj_apply + def linear_map.dom_restrict + theorem linear_map.dom_restrict_apply + theorem submodule.mem_map_equiv Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.comp_injective + theorem bilin_form.is_pair_self_adjoint_equiv + theorem bilin_form.mem_is_pair_self_adjoint_submodule + theorem matrix.is_adjoint_pair_equiv + theorem matrix.to_bilin_form_comp +/- theorem matrix_is_adjoint_pair_bilin_form + theorem mem_self_adjoint_matrices_submodule + theorem mem_skew_adjoint_matrices_submodule - def pair_self_adjoint_matrices_linear_embedding - theorem pair_self_adjoint_matrices_linear_embedding_apply - theorem pair_self_adjoint_matrices_linear_embedding_injective Modified src/linear_algebra/matrix.lean +/- theorem matrix.diagonal_comp_std_basis +/- theorem matrix.diagonal_to_lin +/- theorem matrix.proj_diagonal + def matrix.to_linear_equiv + theorem matrix.to_linear_equiv_apply + theorem matrix.to_linear_equiv_symm_apply Modified test/noncomm_ring.lean 2020-06-30 16:18:08 ea961f7 chore(ring_theory/polynomial): move `ring_theory.polynomial` to `ring_theory.polynomial.basic` (#3248) This PR is the intersection of #3223 and #3241, allowing them to be merged in either order. Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/where.20should.20these.20definitions.20live.3F ESTIMATED CHANGES Renamed src/ring_theory/polynomial.lean to src/ring_theory/polynomial/basic.lean Added src/ring_theory/polynomial/default.lean 2020-06-30 14:58:52 9524dee feat(topology): real.image_Icc (#3224) The image of a segment under a real-valued continuous function is a segment. ESTIMATED CHANGES Modified src/order/complete_lattice.lean - theorem has_Inf_to_nonempty - theorem has_Sup_to_nonempty Modified src/order/conditionally_complete_lattice.lean + theorem subset_Icc_cInf_cSup Modified src/topology/algebra/ordered.lean + theorem compact.Inf_mem + theorem compact.Sup_mem + theorem compact.exists_Inf_image_eq + theorem compact.exists_Sup_image_eq + theorem compact.exists_is_glb + theorem compact.exists_is_greatest + theorem compact.exists_is_least + theorem compact.exists_is_lub + theorem compact.is_glb_Inf + theorem compact.is_greatest_Sup + theorem compact.is_least_Inf + theorem compact.is_lub_Sup + theorem eq_Icc_cInf_cSup_of_connected_bdd_closed + theorem eq_Icc_of_connected_compact +/- theorem is_closed.cInf_mem +/- theorem is_closed.cSup_mem + theorem is_connected.Icc_subset Modified src/topology/instances/real.lean + theorem real.image_Icc 2020-06-30 12:42:26 1bc6eba fix(tactic/interactive_expr): show let-values in tactic state widget (#3228) Fixes the missing let-values in the tactic state widget: ![let_widget](https://user-images.githubusercontent.com/313929/86048315-9d740d80-ba50-11ea-9a8c-09c853687343.png) ESTIMATED CHANGES Modified src/tactic/interactive_expr.lean 2020-06-30 11:46:05 b82ed0c fix(tactic/apply_fun): beta reduction was too aggressive (#3214) The beta reduction performed by `apply_fun` was previously too aggressive -- in particular it was unfolding `A * B` to `A.mul B` when `A` and `B` are matrices. This fix avoids using `dsimp`, and instead calls `head_beta` separately on the left and right sides of the new hypothesis. ESTIMATED CHANGES Modified src/tactic/apply_fun.lean Modified test/apply_fun.lean 2020-06-30 09:50:40 6d0f40a chore(topology/algebra/ordered): use `continuous_at`, rename (#3231) * rename `Sup_mem_of_is_closed` and `Inf_mem_of_is_closed` to `is_closed.Sup_mem` and `is_closed.Inf_mem`, similarly with `cSup` and `cInf`; * make `Sup_of_continuous` etc take `continuous_at` instead of `continuous`, rename to `Sup_of_continuous_at_of_monotone` etc, similarly with `cSup`/`cInf`. ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem Inf_mem_closure - theorem Inf_mem_of_is_closed - theorem Inf_of_continuous' - theorem Inf_of_continuous +/- theorem Sup_mem_closure - theorem Sup_mem_of_is_closed - theorem Sup_of_continuous' - theorem Sup_of_continuous - theorem cInf_mem_of_is_closed - theorem cInf_of_cInf_of_monotone_of_continuous - theorem cSup_mem_of_is_closed - theorem cSup_of_cSup_of_monotone_of_continuous - theorem cinfi_of_cinfi_of_monotone_of_continuous - theorem csupr_of_csupr_of_monotone_of_continuous - theorem infi_of_continuous' - theorem infi_of_continuous + theorem is_closed.Inf_mem + theorem is_closed.Sup_mem + theorem is_closed.cInf_mem + theorem is_closed.cSup_mem + theorem map_Inf_of_continuous_at_of_monotone' + theorem map_Inf_of_continuous_at_of_monotone + theorem map_Sup_of_continuous_at_of_monotone' + theorem map_Sup_of_continuous_at_of_monotone + theorem map_cInf_of_continuous_at_of_monotone + theorem map_cSup_of_continuous_at_of_monotone + theorem map_cinfi_of_continuous_at_of_monotone + theorem map_csupr_of_continuous_at_of_monotone + theorem map_infi_of_continuous_at_of_monotone' + theorem map_infi_of_continuous_at_of_monotone + theorem map_supr_of_continuous_at_of_monotone' + theorem map_supr_of_continuous_at_of_monotone - theorem supr_of_continuous' - theorem supr_of_continuous Modified src/topology/instances/ennreal.lean + theorem ennreal.infi_mul_left + theorem ennreal.infi_mul_right Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean +/- def Gromov_Hausdorff.HD +/- theorem Gromov_Hausdorff.HD_below_aux1 +/- theorem Gromov_Hausdorff.HD_below_aux2 +/- theorem Gromov_Hausdorff.HD_candidates_b_dist_le Modified src/topology/metric_space/hausdorff_distance.lean 2020-06-30 08:06:04 a143c38 refactor(linear_algebra/affine_space): allow empty affine subspaces (#3219) When definitions of affine spaces and subspaces were added in #2816, there was some discussion of whether an affine subspace should be allowed to be empty. After further consideration of what lemmas need to be added to fill out the interface for affine subspaces, I've concluded that it does indeed make sense to allow empty affine subspaces, with `nonempty` hypotheses then added for those results that need them, to avoid artificial `nonempty` hypotheses for other results on affine spans and intersections of affine subspaces that don't depend on any way on affine subspaces being nonempty and can be more cleanly stated if they can be empty. Thus, change the definition to allow affine subspaces to be empty and remove the bundled `direction`. The new definition of `direction` (as the `vector_span` of the points in the subspace, i.e. the `submodule.span` of the `vsub_set` of the points) is the zero submodule for both empty affine subspaces and for those consisting of a single point (and it's proved that in the nonempty case it contains exactly the pairwise subtractions of points in the affine subspace). This doesn't generally add new lemmas beyond those used in reproving existing results (including what were previously the `add` and `sub` axioms for affine subspaces) with the new definitions. It also doesn't add the complete lattice structure for affine subspaces, just helps enable adding it later. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.vsub_mem_vsub_set + theorem add_torsor.vsub_set_mono Modified src/linear_algebra/affine_space.lean + theorem affine_space.subset_span_points + theorem affine_space.vsub_mem_vector_span + theorem affine_space.vsub_set_subset_vector_span +/- def affine_span - theorem affine_span_coe - theorem affine_span_mem + theorem affine_subspace.coe_direction_eq_vsub_set + def affine_subspace.direction + theorem affine_subspace.direction_eq_vector_span + theorem affine_subspace.direction_mk' - theorem affine_subspace.direction_mk_of_point_of_direction + def affine_subspace.direction_of_nonempty + theorem affine_subspace.direction_of_nonempty_eq_direction + theorem affine_subspace.mem_direction_iff_eq_vsub - theorem affine_subspace.mem_mk_of_point_of_direction + def affine_subspace.mk' + theorem affine_subspace.mk'_eq + theorem affine_subspace.mk'_nonempty - def affine_subspace.mk_of_point_of_direction - theorem affine_subspace.mk_of_point_of_direction_eq + theorem affine_subspace.self_mem_mk' + theorem affine_subspace.vadd_mem_mk' + theorem affine_subspace.vadd_mem_of_mem_direction + theorem affine_subspace.vsub_mem_direction + theorem coe_affine_span + theorem direction_affine_span + theorem mem_affine_span 2020-06-30 05:20:57 e250eb4 feat(category/schur): a small corollary of the baby schur's lemma (#3239) ESTIMATED CHANGES Modified src/category_theory/schur.lean + def category_theory.is_iso_equiv_nonzero Modified src/category_theory/simple.lean + theorem category_theory.id_nonzero 2020-06-30 05:20:54 d788d4b chore(data/set/intervals): split `I??_union_I??_eq_I??` (#3237) For each lemma `I??_union_I??_eq_I??` add a lemma `I??_subset_I??_union_I??` with no assumptions. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_subset_Icc_union_Icc + theorem set.Icc_subset_Icc_union_Ioc + theorem set.Icc_subset_Ico_union_Icc +/- theorem set.Icc_union_Icc_eq_Icc + theorem set.Icc_union_Ici_eq_Ici - theorem set.Icc_union_Ici_eq_Ioi +/- theorem set.Icc_union_Ico_eq_Ico +/- theorem set.Icc_union_Ioc_eq_Icc + theorem set.Icc_union_Ioi_eq_Ici - theorem set.Icc_union_Ioi_eq_Ioi +/- theorem set.Icc_union_Ioo_eq_Ico + theorem set.Ici_subset_Icc_union_Ici + theorem set.Ici_subset_Icc_union_Ioi + theorem set.Ici_subset_Ico_union_Ici + theorem set.Ico_subset_Icc_union_Ico + theorem set.Ico_subset_Icc_union_Ioo + theorem set.Ico_subset_Ico_union_Ico +/- theorem set.Ico_union_Icc_eq_Icc + theorem set.Ico_union_Ici_eq_Ici - theorem set.Ico_union_Ici_eq_Ioi +/- theorem set.Ico_union_Ico_eq_Ico + theorem set.Iic_subset_Iic_union_Icc + theorem set.Iic_subset_Iic_union_Ioc + theorem set.Iic_subset_Iio_union_Icc + theorem set.Iio_subset_Iic_union_Ico + theorem set.Iio_subset_Iic_union_Ioo + theorem set.Iio_subset_Iio_union_Ico + theorem set.Ioc_subset_Ioc_union_Icc + theorem set.Ioc_subset_Ioc_union_Ioc + theorem set.Ioc_subset_Ioo_union_Icc +/- theorem set.Ioc_union_Icc_eq_Ioc +/- theorem set.Ioc_union_Ico_eq_Ioo +/- theorem set.Ioc_union_Ioc_eq_Ioc +/- theorem set.Ioc_union_Ioo_eq_Ioo + theorem set.Ioi_subset_Ioc_union_Ici + theorem set.Ioi_subset_Ioc_union_Ioi + theorem set.Ioi_subset_Ioo_union_Ici + theorem set.Ioo_subset_Ioc_union_Ico + theorem set.Ioo_subset_Ioc_union_Ioo + theorem set.Ioo_subset_Ioo_union_Ici +/- theorem set.Ioo_union_Icc_eq_Ioc +/- theorem set.Ioo_union_Ico_eq_Ioo 2020-06-30 05:20:51 af53c9d chore(algebra/ring): move some classes to `group_with_zero` (#3232) Move `nonzero`, `mul_zero_class` and `no_zero_divisors` to `group_with_zero`: these classes don't need `(+)`. ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/algebra/group_with_zero.lean + theorem commute.zero_left + theorem commute.zero_right + theorem eq_zero_of_mul_self_eq_zero + theorem mul_eq_zero + theorem mul_eq_zero_comm + theorem mul_ne_zero + theorem mul_ne_zero_comm + theorem mul_ne_zero_iff + theorem mul_self_eq_zero + theorem mul_zero + theorem one_ne_zero + theorem semiconj_by.zero_left + theorem semiconj_by.zero_right + theorem zero_eq_mul + theorem zero_eq_mul_self + theorem zero_mul + theorem zero_ne_one Modified src/algebra/ring.lean - theorem commute.zero_left - theorem commute.zero_right - theorem eq_zero_of_mul_self_eq_zero - theorem eq_zero_or_eq_zero_of_mul_eq_zero +/- theorem left_distrib - theorem mul_eq_zero - theorem mul_eq_zero_comm - theorem mul_ne_zero - theorem mul_ne_zero_comm - theorem mul_ne_zero_iff - theorem mul_self_eq_zero - theorem mul_zero - theorem one_ne_zero +/- theorem right_distrib - theorem semiconj_by.zero_left - theorem semiconj_by.zero_right - theorem zero_eq_mul - theorem zero_eq_mul_self - theorem zero_mul - theorem zero_ne_one Modified src/data/real/hyperreal.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean 2020-06-30 05:20:45 da481e7 chore(data/polynomial): partial move from is_ring_hom to ring_hom (#3213) This does not attempt to do a complete refactor of `polynomial.lean` and `mv_polynomial.lean` to remove use of `is_ring_hom`, but only to fix `eval₂` which we need for the current work on Cayley-Hamilton. Having struggled with these two files for the last few days, I'm keen to get them cleaned up, so I'll promise to return to this more thoroughly in a later PR. ESTIMATED CHANGES Modified src/data/mv_polynomial.lean +/- def mv_polynomial.C Modified src/data/polynomial.lean +/- def polynomial.eval + theorem polynomial.eval₂_X_pow +/- theorem polynomial.eval₂_comp +/- theorem polynomial.eval₂_hom +/- theorem polynomial.eval₂_map + theorem polynomial.eval₂_monomial +/- theorem polynomial.eval₂_neg +/- theorem polynomial.eval₂_pow +/- theorem polynomial.eval₂_sub +/- theorem polynomial.hom_eval₂ +/- def polynomial.map Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial.lean 2020-06-30 04:15:21 38904ac feat(data/fintype/basic): card_eq_zero_equiv_equiv_pempty (#3238) Adds a constructive equivalence `α ≃ pempty.{v+1}` given `fintype.card α = 0`, which I think wasn't available previously. I would have stated this as an `iff`, but as the right hand side is data is an `equiv` itself. ESTIMATED CHANGES Modified src/data/fintype/basic.lean + def fintype.card_eq_zero_equiv_equiv_pempty 2020-06-30 04:15:19 1588d81 feat(category_theory): remove nearly all universe annotations (#3221) Due to some recent changes to mathlib (does someone know the relevant versions/commits?) most of the universe annotations `.{v}` and `include 𝒞` statements that were previously needed in the category_theory library are no longer necessary. This PR removes them! ESTIMATED CHANGES Modified src/algebra/category/Algebra/basic.lean +/- def category_theory.iso.to_alg_equiv Modified src/algebra/category/CommRing/adjunctions.lean +/- def CommRing.free Modified src/algebra/category/CommRing/basic.lean +/- def category_theory.iso.CommRing_iso_to_ring_equiv +/- def category_theory.iso.Ring_iso_to_ring_equiv Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/CommRing/limits.lean +/- def CommRing.CommRing_has_limits.limit +/- def CommRing.CommRing_has_limits.limit_is_limit +/- def CommRing.limit_π_ring_hom Modified src/algebra/category/Group/adjunctions.lean +/- def AddCommGroup.free Modified src/algebra/category/Group/basic.lean +/- def category_theory.iso.CommGroup_iso_to_mul_equiv +/- def category_theory.iso.Group_iso_to_mul_equiv Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Group/images.lean Modified src/algebra/category/Group/limits.lean +/- def AddCommGroup.AddCommGroup_has_limits.limit +/- def AddCommGroup.AddCommGroup_has_limits.limit_is_limit +/- def AddCommGroup.limit_π_add_monoid_hom Modified src/algebra/category/Group/preadditive.lean Modified src/algebra/category/Group/zero.lean Modified src/algebra/category/Module/basic.lean +/- def category_theory.iso.to_linear_equiv Modified src/algebra/category/Module/monoidal.lean +/- theorem Module.monoidal_category.left_unitor_hom Modified src/algebra/category/Mon/basic.lean +/- def category_theory.iso.CommMon_iso_to_mul_equiv +/- def category_theory.iso.Mon_iso_to_mul_equiv Modified src/algebra/category/Mon/colimits.lean Modified src/algebra/homology/chain_complex.lean +/- theorem chain_complex.d_squared +/- theorem cochain_complex.d_squared Modified src/algebra/homology/homology.lean +/- def cochain_complex.cohomology_functor +/- def cochain_complex.cohomology_map +/- theorem cochain_complex.cohomology_map_comp +/- theorem cochain_complex.cohomology_map_condition +/- theorem cochain_complex.cohomology_map_id +/- def cochain_complex.image_map +/- theorem cochain_complex.image_map_ι +/- theorem cochain_complex.induced_maps_commute +/- def cochain_complex.kernel_functor +/- theorem cochain_complex.kernel_map_comp +/- theorem cochain_complex.kernel_map_id Modified src/algebraic_geometry/presheafed_space.lean +/- theorem algebraic_geometry.PresheafedSpace.as_coe +/- def algebraic_geometry.PresheafedSpace.comp +/- theorem algebraic_geometry.PresheafedSpace.comp_c_app +/- theorem algebraic_geometry.PresheafedSpace.comp_coe +/- theorem algebraic_geometry.PresheafedSpace.ext +/- theorem algebraic_geometry.PresheafedSpace.f_as_coe +/- def algebraic_geometry.PresheafedSpace.forget +/- structure algebraic_geometry.PresheafedSpace.hom +/- theorem algebraic_geometry.PresheafedSpace.hom_mk_coe +/- def algebraic_geometry.PresheafedSpace.id +/- theorem algebraic_geometry.PresheafedSpace.id_c +/- theorem algebraic_geometry.PresheafedSpace.id_c_app +/- theorem algebraic_geometry.PresheafedSpace.id_coe +/- theorem algebraic_geometry.PresheafedSpace.id_coe_fn +/- def category_theory.functor.map_presheaf +/- theorem category_theory.functor.map_presheaf_map_c +/- theorem category_theory.functor.map_presheaf_map_f +/- theorem category_theory.functor.map_presheaf_obj_X +/- theorem category_theory.functor.map_presheaf_obj_𝒪 Modified src/algebraic_geometry/stalks.lean +/- def algebraic_geometry.PresheafedSpace.stalk +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.comp +/- theorem algebraic_geometry.PresheafedSpace.stalk_map.id +/- def algebraic_geometry.PresheafedSpace.stalk_map Modified src/category_theory/abelian/basic.lean +/- def category_theory.abelian.has_pullbacks +/- def category_theory.abelian.has_pushouts Modified src/category_theory/action.lean Modified src/category_theory/category/Rel.lean Modified src/category_theory/category/default.lean Modified src/category_theory/closed/cartesian.lean +/- def category_theory.binary_product_exponentiable +/- def category_theory.cartesian_closed +/- def category_theory.exponentiable +/- def category_theory.mul_zero +/- def category_theory.pow_zero +/- def category_theory.prod_coprod_distrib +/- def category_theory.terminal_exponentiable +/- def category_theory.zero_mul Modified src/category_theory/conj.lean +/- theorem category_theory.iso.refl_conj Modified src/category_theory/differential_object.lean +/- theorem category_theory.differential_object.comp_f +/- def category_theory.differential_object.forget +/- def category_theory.differential_object.hom.comp +/- def category_theory.differential_object.hom.id +/- structure category_theory.differential_object.hom +/- theorem category_theory.differential_object.id_f +/- theorem category_theory.differential_object.zero_f Modified src/category_theory/elements.lean Modified src/category_theory/endomorphism.lean +/- def category_theory.End Modified src/category_theory/epi_mono.lean +/- def category_theory.retraction +/- def category_theory.section_ Modified src/category_theory/graded_object.lean +/- theorem category_theory.graded_object.zero_apply Modified src/category_theory/groupoid.lean +/- def category_theory.groupoid.of_is_iso Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/functor_category.lean +/- def category_theory.limits.functor_category_is_colimit_cocone Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.pre_map' +/- theorem category_theory.limits.limit.map_pre' Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/over.lean +/- def category_theory.over.construct_products.over_binary_product_of_pullback +/- def category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks +/- def category_theory.over.construct_products.over_product_of_wide_pullback +/- def category_theory.over.construct_products.over_products_of_wide_pullbacks Modified src/category_theory/limits/preserves.lean +/- def category_theory.limits.preserves_colimit_iso +/- def category_theory.limits.preserves_limit_iso Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.coprod.map +/- def category_theory.limits.prod.map Modified src/category_theory/limits/shapes/biproducts.lean +/- def category_theory.limits.binary_bicone.to_cocone +/- theorem category_theory.limits.binary_bicone.to_cocone_X +/- theorem category_theory.limits.binary_bicone.to_cocone_ι_app_left +/- theorem category_theory.limits.binary_bicone.to_cocone_ι_app_right +/- def category_theory.limits.binary_bicone.to_cone +/- theorem category_theory.limits.binary_bicone.to_cone_X +/- theorem category_theory.limits.binary_bicone.to_cone_π_app_left +/- theorem category_theory.limits.binary_bicone.to_cone_π_app_right +/- def category_theory.limits.biprod.desc +/- def category_theory.limits.biprod.fst +/- theorem category_theory.limits.biprod.hom_ext' +/- theorem category_theory.limits.biprod.hom_ext +/- def category_theory.limits.biprod.inl +/- theorem category_theory.limits.biprod.inl_fst +/- theorem category_theory.limits.biprod.inl_map +/- theorem category_theory.limits.biprod.inl_snd +/- def category_theory.limits.biprod.inr +/- theorem category_theory.limits.biprod.inr_fst +/- theorem category_theory.limits.biprod.inr_map +/- theorem category_theory.limits.biprod.inr_snd +/- def category_theory.limits.biprod.lift +/- def category_theory.limits.biprod.map' +/- def category_theory.limits.biprod.map +/- theorem category_theory.limits.biprod.map_eq +/- theorem category_theory.limits.biprod.map_eq_map' +/- theorem category_theory.limits.biprod.map_fst +/- def category_theory.limits.biprod.map_iso +/- theorem category_theory.limits.biprod.map_snd +/- def category_theory.limits.biprod.snd +/- def category_theory.limits.biprod +/- def category_theory.limits.biprod_iso +/- theorem category_theory.limits.biproduct.hom_ext' +/- theorem category_theory.limits.biproduct.hom_ext +/- theorem category_theory.limits.biproduct.inl_map +/- def category_theory.limits.biproduct.map' +/- def category_theory.limits.biproduct.map +/- theorem category_theory.limits.biproduct.map_eq +/- theorem category_theory.limits.biproduct.map_eq_map' +/- def category_theory.limits.has_binary_biproduct.of_has_binary_coproduct +/- def category_theory.limits.has_binary_biproduct.of_has_binary_product +/- def category_theory.limits.has_binary_biproducts.of_has_binary_coproducts +/- def category_theory.limits.has_binary_biproducts.of_has_binary_products +/- def category_theory.limits.has_binary_biproducts_of_finite_biproducts +/- def category_theory.limits.has_biproduct.of_has_coproduct +/- def category_theory.limits.has_biproduct.of_has_product Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/constructions/equalizers.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/constructions/preserve_binary_products.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/limits/shapes/equalizers.lean +/- theorem category_theory.limits.cofork.of_cocone_ι +/- def category_theory.limits.diagram_iso_parallel_pair +/- theorem category_theory.limits.fork.of_cone_π +/- def category_theory.limits.has_coequalizers_of_has_finite_colimits +/- def category_theory.limits.has_equalizers_of_has_finite_limits +/- def category_theory.limits.parallel_pair +/- theorem category_theory.limits.walking_parallel_pair_hom_id Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/images.lean +/- structure category_theory.limits.strong_epi_mono_factorisation Modified src/category_theory/limits/shapes/kernels.lean +/- def category_theory.limits.has_cokernels_of_has_finite_colimits +/- def category_theory.limits.has_kernels_of_has_finite_limits Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean +/- def category_theory.limits.cospan +/- def category_theory.limits.has_pullbacks_of_has_finite_limits +/- def category_theory.limits.has_pushouts_of_has_finite_colimits +/- def category_theory.limits.span Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/terminal.lean +/- def category_theory.limits.has_initial_of_unique +/- def category_theory.limits.has_terminal_of_unique +/- def category_theory.limits.initial.to +/- def category_theory.limits.initial +/- def category_theory.limits.terminal.from +/- def category_theory.limits.terminal Modified src/category_theory/limits/shapes/wide_pullbacks.lean +/- def has_finite_wide_pullbacks_of_has_finite_limits +/- def has_finite_wide_pushouts_of_has_finite_limits Modified src/category_theory/limits/shapes/zero.lean +/- theorem category_theory.limits.has_zero_morphisms.ext +/- def category_theory.limits.has_zero_object.has_initial +/- def category_theory.limits.has_zero_object.has_terminal +/- def category_theory.limits.has_zero_object.zero_morphisms_of_zero_object Modified src/category_theory/limits/types.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean +/- structure category_theory.comonad.coalgebra +/- structure category_theory.monad.algebra Modified src/category_theory/monad/limits.lean +/- def category_theory.has_limits_of_reflective +/- def category_theory.monadic_creates_limits Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functorial.lean Modified src/category_theory/monoidal/of_has_finite_products.lean +/- def category_theory.monoidal_of_has_finite_coproducts +/- def category_theory.monoidal_of_has_finite_products Modified src/category_theory/preadditive.lean +/- def category_theory.preadditive.has_coequalizers_of_has_cokernels +/- def category_theory.preadditive.has_equalizers_of_has_kernels Modified src/category_theory/schur.lean +/- def category_theory.is_iso_of_hom_simple Modified src/category_theory/shift.lean +/- def category_theory.shift Modified src/category_theory/simple.lean +/- def category_theory.is_iso_of_epi_of_nonzero +/- def category_theory.is_iso_of_mono_of_nonzero +/- theorem category_theory.simple.ext +/- def category_theory.simple_of_cosimple +/- theorem category_theory.zero_not_simple 2020-06-30 03:05:21 056a72a perf(linarith): don't repeat nonneg proofs for nat-to-int casts (#3226) This performance issue showed up particularly when using `nlinarith` over `nat`s. Proofs that `(n : int) >= 0` were being repeated many times, which led to quadratic blowup in the `nlinarith` preprocessing. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean +/- theorem real.cos_le_cos_of_nonneg_of_le_pi +/- theorem real.cos_lt_cos_of_nonneg_of_le_pi +/- theorem real.cos_lt_cos_of_nonneg_of_le_pi_div_two +/- theorem real.tan_lt_tan_of_lt_of_lt_pi_div_two +/- theorem real.tan_lt_tan_of_nonneg_of_lt_pi_div_two Modified src/meta/rb_map.lean Modified src/tactic/linarith/preprocessing.lean Modified test/linarith.lean 2020-06-30 03:05:19 791744b feat(analysis/normed_space/real_inner_product,geometry/euclidean): inner products of weighted subtractions (#3203) Express the inner product of two weighted sums, where the weights in each sum add to 0, in terms of the norms of pairwise differences. Thus, express inner products for vectors expressed in terms of `weighted_vsub` and distances for points expressed in terms of `affine_combination`. This is a general form of the standard formula for a distance between points expressed in terms of barycentric coordinates: if the difference between the normalized barycentric coordinates (with respect to triangle ABC) for two points is (x, y, z) then the squared distance between them is -(a^2 yz + b^2 zx + c^2 xy). Although some of the lemmas are given with the two vectors expressed as sums over different indexed families of vectors or points (since nothing in the statement or proof depends on them being the same), I expect almost all uses will be in cases where the two indexed families are the same and only the weights vary. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem inner_sum_smul_sum_smul_of_sum_eq_zero Modified src/geometry/euclidean.lean + theorem euclidean_geometry.dist_affine_combination + theorem euclidean_geometry.inner_weighted_vsub Modified src/linear_algebra/affine_space.lean + theorem finset.weighted_vsub_apply 2020-06-30 01:43:20 4fcd6fd chore(*): import expression widgets from core (#3181) With widgets, the rendering of the tactic state is implemented in pure Lean code. I would like to move this part (temporarily) into mathlib to facilitate collaborative improvement and rapid iteration under a mature community review procedure. (That is, I want other people to tweak it themselves without having to wait a week for the next Lean release to see the effect.) I didn't need to change anything in the source code (except for adding some doc strings). So it should be easy to copy it back to core if we want to. There are no changes required to core for this PR. ESTIMATED CHANGES Modified src/tactic/core.lean Added src/tactic/interactive_expr.lean 2020-06-30 00:37:07 e8fd085 chore(scripts): update nolints.txt (#3234) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-29 19:03:51 45904fb chore(*): change notation for `set.compl` (#3212) * introduce typeclass `has_compl` and notation `∁` for `has_compl.compl` * use it instead of `has_neg` for `set` and `boolean_algebra` ESTIMATED CHANGES Modified src/algebra/punit_instances.lean Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/normed_space/basic.lean Modified src/data/analysis/filter.lean Modified src/data/equiv/basic.lean +/- theorem equiv.set.sum_compl_apply_inr Modified src/data/indicator_function.lean +/- theorem set.indicator_compl Modified src/data/pfun.lean +/- theorem pfun.compl_dom_subset_core +/- theorem pfun.core_eq +/- theorem pfun.core_res Modified src/data/real/hyperreal.lean Modified src/data/set/basic.lean +/- theorem set.compl_compl +/- theorem set.compl_empty +/- theorem set.compl_empty_iff +/- theorem set.compl_eq_univ_diff +/- theorem set.compl_image +/- theorem set.compl_inter +/- theorem set.compl_inter_self +/- theorem set.compl_set_of +/- theorem set.compl_singleton_eq +/- theorem set.compl_subset_comm +/- theorem set.compl_subset_compl +/- theorem set.compl_subset_iff_union +/- theorem set.compl_union +/- theorem set.compl_union_self +/- theorem set.compl_univ +/- theorem set.compl_univ_iff +/- theorem set.diff_compl +/- theorem set.diff_eq - theorem set.fix_set_compl +/- theorem set.image_compl_eq +/- theorem set.image_compl_subset +/- theorem set.inter_compl_nonempty_iff +/- theorem set.inter_compl_self +/- theorem set.inter_eq_compl_compl_union_compl +/- theorem set.inter_subset +/- theorem set.mem_compl +/- theorem set.mem_compl_eq +/- theorem set.mem_compl_iff +/- theorem set.mem_compl_singleton_iff +/- theorem set.nonempty_compl +/- theorem set.not_mem_of_mem_compl +/- theorem set.preimage_compl +/- theorem set.subset_compl_comm +/- theorem set.subset_compl_iff_disjoint +/- theorem set.subset_compl_singleton_iff +/- theorem set.subset_image_compl +/- theorem set.union_compl_self +/- theorem set.union_eq_compl_compl_inter_compl Modified src/data/set/disjointed.lean +/- def set.disjointed Modified src/data/set/enumerate.lean Modified src/data/set/intervals/basic.lean +/- theorem set.compl_Ici +/- theorem set.compl_Iic +/- theorem set.compl_Iio +/- theorem set.compl_Ioi Modified src/data/set/lattice.lean +/- theorem set.Inter_eq_comp_Union_comp +/- theorem set.Union_eq_comp_Inter_comp +/- theorem set.compl_Inter +/- theorem set.compl_Union +/- theorem set.compl_bInter +/- theorem set.compl_bUnion +/- theorem set.disjoint_compl - theorem set.sub_eq_diff Modified src/linear_algebra/matrix.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean +/- theorem is_measurable.compl +/- theorem is_measurable.compl_iff +/- theorem is_measurable.of_compl - theorem is_measurable.sub +/- theorem measurable_space.dynkin_system.has_compl_iff Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.mem_ae_iff Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/simple_func_dense.lean Modified src/order/boolean_algebra.lean - theorem boolean_algebra.sub_le_sub +/- theorem compl_bot +/- theorem compl_compl' +/- theorem compl_inf +/- theorem compl_inf_eq_bot +/- theorem compl_inj_iff +/- theorem compl_injective +/- theorem compl_le_compl +/- theorem compl_le_compl_iff_le +/- theorem compl_le_iff_compl_le +/- theorem compl_le_of_compl_le +/- theorem compl_sup +/- theorem compl_sup_eq_top +/- theorem compl_top +/- theorem compl_unique +/- theorem inf_compl_eq_bot + theorem is_compl.compl_eq - theorem is_compl.neg_eq + theorem is_compl_compl - theorem is_compl_neg +/- theorem le_compl_of_le_compl + theorem sdiff_eq + theorem sdiff_eq_left + theorem sdiff_le_sdiff - theorem sub_eq - theorem sub_eq_left +/- theorem sup_compl_eq_top + theorem sup_sdiff_same - theorem sup_sub_same Modified src/order/complete_boolean_algebra.lean +/- theorem compl_Inf +/- theorem compl_Sup +/- theorem compl_infi +/- theorem compl_supr Modified src/order/filter/basic.lean +/- theorem filter.inf_principal_eq_bot +/- theorem filter.is_compl_principal +/- theorem filter.mem_sets_of_eq_bot Modified src/order/filter/cofinite.lean +/- theorem filter.mem_cofinite Modified src/order/filter/ultrafilter.lean +/- theorem filter.mem_hyperfilter_of_finite_compl Modified src/set_theory/cardinal.lean +/- theorem cardinal.mk_sum_compl Modified src/set_theory/ordinal.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/ordered.lean Modified src/topology/basic.lean +/- theorem closure_compl +/- theorem closure_diff +/- theorem closure_eq_compl_interior_compl +/- theorem frontier_compl +/- theorem interior_compl +/- def is_closed +/- theorem is_closed_compl_iff +/- theorem is_open_compl_iff Modified src/topology/maps.lean Modified src/topology/metric_space/baire.lean Modified src/topology/order.lean Modified src/topology/separation.lean +/- theorem compl_singleton_mem_nhds Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean +/- theorem is_clopen_compl +/- theorem is_clopen_compl_iff +/- theorem is_clopen_diff Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compact_separated.lean Modified src/topology/uniform_space/separation.lean 2020-06-29 16:12:00 d3006ba chore(init_/): remove this directory (#3227) * remove `init_/algebra`; * move `init_/data/nat` to `data/nat/basic`; * move `init_/data/int` to `data/int/basic`. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.abs_eq_nat_abs + theorem int.nat_abs_abs + theorem int.sign_mul_abs Modified src/data/nat/basic.lean + theorem nat.eq_of_mul_eq_mul_right + theorem nat.le_mul_self + theorem nat.mul_self_le_mul_self + theorem nat.mul_self_le_mul_self_iff + theorem nat.mul_self_lt_mul_self + theorem nat.mul_self_lt_mul_self_iff + theorem nat.one_add Modified src/data/nat/sqrt.lean Deleted src/init_/algebra/default.lean Deleted src/init_/algebra/norm_num.lean - def norm_num.add1 - theorem norm_num.add1_bit0 - theorem norm_num.add1_bit1 - theorem norm_num.add1_bit1_helper - theorem norm_num.add1_one - theorem norm_num.add1_zero - theorem norm_num.add_comm_four - theorem norm_num.add_comm_middle - theorem norm_num.add_div_helper - theorem norm_num.bin_add_zero - theorem norm_num.bin_zero_add - theorem norm_num.bit0_add_bit0 - theorem norm_num.bit0_add_bit0_helper - theorem norm_num.bit0_add_bit1 - theorem norm_num.bit0_add_bit1_helper - theorem norm_num.bit0_add_one - theorem norm_num.bit1_add_bit0 - theorem norm_num.bit1_add_bit0_helper - theorem norm_num.bit1_add_bit1 - theorem norm_num.bit1_add_bit1_helper - theorem norm_num.bit1_add_one - theorem norm_num.bit1_add_one_helper - theorem norm_num.div_add_helper - theorem norm_num.div_eq_div_helper - theorem norm_num.div_helper - theorem norm_num.div_mul_helper - theorem norm_num.mk_cong - theorem norm_num.mul_bit0 - theorem norm_num.mul_bit0_helper - theorem norm_num.mul_bit1 - theorem norm_num.mul_bit1_helper - theorem norm_num.mul_div_helper - theorem norm_num.mul_one - theorem norm_num.mul_zero - theorem norm_num.neg_add_neg_eq_of_add_add_eq_zero - theorem norm_num.neg_add_neg_helper - theorem norm_num.neg_add_pos_eq_of_eq_add - theorem norm_num.neg_add_pos_helper1 - theorem norm_num.neg_add_pos_helper2 - theorem norm_num.neg_mul_neg_helper - theorem norm_num.neg_mul_pos_helper - theorem norm_num.neg_neg_helper - theorem norm_num.neg_zero_helper - theorem norm_num.nonneg_bit0_helper - theorem norm_num.nonneg_bit1_helper - theorem norm_num.nonzero_of_div_helper - theorem norm_num.nonzero_of_neg_helper - theorem norm_num.nonzero_of_pos_helper - theorem norm_num.one_add_bit0 - theorem norm_num.one_add_bit1 - theorem norm_num.one_add_bit1_helper - theorem norm_num.one_add_one - theorem norm_num.pos_add_neg_helper - theorem norm_num.pos_bit0_helper - theorem norm_num.pos_bit1_helper - theorem norm_num.pos_mul_neg_helper - theorem norm_num.sub_nat_pos_helper - theorem norm_num.sub_nat_zero_helper - theorem norm_num.subst_into_div - theorem norm_num.subst_into_prod - theorem norm_num.subst_into_subtr - theorem norm_num.subst_into_sum - theorem norm_num.zero_mul Deleted src/init_/data/int/basic.lean Deleted src/init_/data/int/order.lean - theorem int.abs_eq_nat_abs - theorem int.nat_abs_abs - theorem int.sign_mul_abs Deleted src/init_/data/nat/lemmas.lean - theorem nat.eq_of_mul_eq_mul_right - theorem nat.le_mul_self - theorem nat.mul_self_le_mul_self - theorem nat.mul_self_le_mul_self_iff - theorem nat.mul_self_lt_mul_self - theorem nat.mul_self_lt_mul_self_iff - theorem nat.one_add Deleted src/init_/default.lean Modified test/library_search/ordered_ring.lean Modified test/nth_rewrite.lean Modified test/push_neg.lean Modified test/rewrite.lean 2020-06-29 15:01:42 eb05a94 feat(order/filter/germ): define `filter.germ` (#3172) Actually we already had this definition under the name `filter_product`. ESTIMATED CHANGES Modified src/data/real/hyperreal.lean - theorem hyperreal.cast_div +/- theorem hyperreal.coe_abs + theorem hyperreal.coe_add + theorem hyperreal.coe_bit0 + theorem hyperreal.coe_bit1 + theorem hyperreal.coe_div +/- theorem hyperreal.coe_eq_coe + theorem hyperreal.coe_eq_one + theorem hyperreal.coe_eq_zero + theorem hyperreal.coe_inv +/- theorem hyperreal.coe_le_coe +/- theorem hyperreal.coe_lt_coe +/- theorem hyperreal.coe_max +/- theorem hyperreal.coe_min + theorem hyperreal.coe_mul + theorem hyperreal.coe_neg + theorem hyperreal.coe_one + theorem hyperreal.coe_pos + theorem hyperreal.coe_sub + theorem hyperreal.coe_zero +/- theorem hyperreal.epsilon_lt_pos - theorem hyperreal.hyperfilter_ne_bot' - theorem hyperreal.hyperfilter_ne_bot +/- def hyperreal.is_st +/- theorem hyperreal.is_st_Sup +/- theorem hyperreal.not_real_of_infinite +/- theorem hyperreal.st_eq_Sup +/- def hyperreal Modified src/order/filter/filter_product.lean - def filter.bigly_equal - theorem filter.filter_product.abs_def - theorem filter.filter_product.coe_inj - def filter.filter_product.lift - theorem filter.filter_product.lift_id - def filter.filter_product.lift_rel - def filter.filter_product.lift_rel₂ - def filter.filter_product.lift₂ - theorem filter.filter_product.lt_def' - theorem filter.filter_product.lt_def - theorem filter.filter_product.max_def - theorem filter.filter_product.min_def - def filter.filter_product.of - theorem filter.filter_product.of_abs - theorem filter.filter_product.of_add - theorem filter.filter_product.of_bit0 - theorem filter.filter_product.of_bit1 - theorem filter.filter_product.of_div - theorem filter.filter_product.of_eq - theorem filter.filter_product.of_eq_coe - theorem filter.filter_product.of_eq_zero - theorem filter.filter_product.of_injective - theorem filter.filter_product.of_inv - theorem filter.filter_product.of_le - theorem filter.filter_product.of_le_of_le - theorem filter.filter_product.of_lt - theorem filter.filter_product.of_lt_of_lt - theorem filter.filter_product.of_max - theorem filter.filter_product.of_min - theorem filter.filter_product.of_mul - theorem filter.filter_product.of_ne - theorem filter.filter_product.of_ne_zero - theorem filter.filter_product.of_neg - theorem filter.filter_product.of_one - theorem filter.filter_product.of_rel - theorem filter.filter_product.of_rel_of_rel - theorem filter.filter_product.of_rel_of_rel₂ - theorem filter.filter_product.of_rel₂ - def filter.filter_product.of_seq - theorem filter.filter_product.of_seq_add - theorem filter.filter_product.of_seq_fun - theorem filter.filter_product.of_seq_fun₂ - theorem filter.filter_product.of_seq_inv - theorem filter.filter_product.of_seq_mul - theorem filter.filter_product.of_seq_neg - theorem filter.filter_product.of_seq_one - theorem filter.filter_product.of_seq_zero - theorem filter.filter_product.of_sub - theorem filter.filter_product.of_zero - def filter.filterprod + theorem filter.germ.abs_def + theorem filter.germ.coe_lt + theorem filter.germ.coe_pos + theorem filter.germ.const_abs + theorem filter.germ.const_div + theorem filter.germ.const_lt + theorem filter.germ.const_max + theorem filter.germ.const_min + theorem filter.germ.lt_def + theorem filter.germ.max_def + theorem filter.germ.min_def Added src/order/filter/germ.lean + theorem filter.const_eventually_eq' + theorem filter.const_eventually_eq + theorem filter.eventually_eq.comp_tendsto + theorem filter.eventually_eq.le + theorem filter.eventually_eq.trans_le + theorem filter.eventually_le.antisymm + theorem filter.eventually_le.congr + theorem filter.eventually_le.refl + theorem filter.eventually_le.trans + theorem filter.eventually_le.trans_eq + def filter.eventually_le + theorem filter.eventually_le_congr + theorem filter.germ.coe_coe_mul_hom + theorem filter.germ.coe_coe_ring_hom + theorem filter.germ.coe_comp_tendsto' + theorem filter.germ.coe_comp_tendsto + theorem filter.germ.coe_eq + theorem filter.germ.coe_inv + theorem filter.germ.coe_le + theorem filter.germ.coe_mul + def filter.germ.coe_mul_hom + theorem filter.germ.coe_one + def filter.germ.coe_ring_hom + theorem filter.germ.coe_smul' + theorem filter.germ.coe_smul + theorem filter.germ.coe_sub + theorem filter.germ.coe_tendsto + def filter.germ.comp_tendsto' + theorem filter.germ.comp_tendsto'_coe + def filter.germ.comp_tendsto + theorem filter.germ.const_bot + theorem filter.germ.const_comp_tendsto' + theorem filter.germ.const_comp_tendsto + theorem filter.germ.const_inf + theorem filter.germ.const_inj + theorem filter.germ.const_le + theorem filter.germ.const_le_iff + theorem filter.germ.const_sup + theorem filter.germ.const_top + theorem filter.germ.induction_on + theorem filter.germ.induction_on₂ + theorem filter.germ.induction_on₃ + def filter.germ.lift_on + def filter.germ.lift_pred + theorem filter.germ.lift_pred_coe + theorem filter.germ.lift_pred_const + theorem filter.germ.lift_pred_const_iff + def filter.germ.lift_rel + theorem filter.germ.lift_rel_coe + theorem filter.germ.lift_rel_const + theorem filter.germ.lift_rel_const_iff + def filter.germ.map' + theorem filter.germ.map'_coe + def filter.germ.map + theorem filter.germ.map_coe + theorem filter.germ.map_const + theorem filter.germ.map_id + theorem filter.germ.map_map + def filter.germ.map₂ + theorem filter.germ.map₂_const + theorem filter.germ.mk'_eq_coe + theorem filter.germ.quot_mk_eq_coe + def filter.germ + def filter.germ_setoid Modified src/order/filter/ultrafilter.lean + theorem filter.bot_ne_hyperfilter + theorem filter.hyperfilter_ne_bot + theorem filter.is_ultrafilter.em + theorem filter.is_ultrafilter.eventually_imp + theorem filter.is_ultrafilter.eventually_not + theorem filter.is_ultrafilter.eventually_or 2020-06-29 13:48:28 4907d5d feat(algebra/ring): ite_mul_one and ite_mul_zero_... (#3217) Three simple lemmas about if statements involving multiplication, useful while rewriting. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem ite_mul_one Modified src/algebra/ring.lean + theorem ite_mul_zero_left + theorem ite_mul_zero_right 2020-06-29 13:48:26 964f0e5 feat(data/polynomial): work over noncommutative rings where possible (#3193) After downgrading `C` from an algebra homomorphism to a ring homomorphism in [69931ac](https://github.com/leanprover-community/mathlib/commit/69931acfe7b6a29f988bcf7094e090767b34fb85), which requires a few tweaks, everything else is straightforward. ESTIMATED CHANGES Modified src/data/finsupp.lean +/- theorem finsupp.sum_smul_index Modified src/data/monoid_algebra.lean + def add_monoid_algebra.algebra_map' + def monoid_algebra.algebra_map' Modified src/data/polynomial.lean +/- def polynomial.C + theorem polynomial.C_eq_int_cast + theorem polynomial.C_eq_nat_cast +/- theorem polynomial.C_neg +/- theorem polynomial.C_sub + theorem polynomial.X_mul + theorem polynomial.X_pow_mul + theorem polynomial.X_pow_mul_assoc +/- theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero +/- theorem polynomial.degree_map_le +/- theorem polynomial.degree_pos_of_root +/- def polynomial.derivative_hom +/- theorem polynomial.derivative_neg +/- theorem polynomial.derivative_sub + theorem polynomial.eval_int_cast +/- theorem polynomial.eval_map + theorem polynomial.eval_nat_cast + theorem polynomial.eval_smul +/- theorem polynomial.eval₂_neg +/- theorem polynomial.eval₂_smul +/- theorem polynomial.eval₂_sub - theorem polynomial.int_cast_eq_C +/- theorem polynomial.map_map +/- theorem polynomial.map_mul +/- theorem polynomial.map_pow +/- theorem polynomial.monic.ne_zero +/- theorem polynomial.monic_map - theorem polynomial.nat_cast_eq_C Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/localization.lean 2020-06-29 13:48:23 a708f85 feat(category/limits/shapes): fix biproducts (#3175) This is a second attempt at #3102. Previously the definition of a (binary) biproduct in a category with zero morphisms (but not necessarily) preadditive was just wrong. The definition for a "bicone" was just something that was simultaneously a cone and a cocone, with the same cone points. It was a "biproduct bicone" if the cone was a limit cone and the cocone was a colimit cocone. However, this definition was not particularly useful. In particular, there was no way to prove that the two different `map` constructions providing a morphism `W ⊞ X ⟶ Y ⊞ Z` (i.e. by treating the biproducts either as cones, or as cocones) were actually equal. Blech. So, I've added the axioms `inl ≫ fst = 𝟙 P`, `inl ≫ snd = 0`, `inr ≫ fst = 0`, and `inr ≫ snd = 𝟙 Q` to `bicone P Q`. (Note these only require the exist of zero morphisms, not preadditivity.) Now the two map constructions are equal. I've then entirely removed the `has_preadditive_biproduct` typeclass. Instead we have 1. additional theorems providing `total`, when `preadditive C` is available 2. alternative constructors for `has_biproduct` that use `total` rather than `is_limit` and `is_colimit`. This PR also introduces some abbreviations along the lines of `abbreviation has_binary_product (X Y : C) := has_limit (pair X Y)`, just to improve readability. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.coprod.desc' +/- def category_theory.limits.coprod.desc +/- theorem category_theory.limits.coprod.desc_comp_comp +/- theorem category_theory.limits.coprod.hom_ext +/- def category_theory.limits.coprod.inl +/- theorem category_theory.limits.coprod.inl_desc +/- def category_theory.limits.coprod.inr +/- theorem category_theory.limits.coprod.inr_desc + def category_theory.limits.coprod.map_iso + theorem category_theory.limits.coprod.map_iso_hom + theorem category_theory.limits.coprod.map_iso_inv +/- def category_theory.limits.coprod + def category_theory.limits.has_binary_coproduct + def category_theory.limits.has_binary_product +/- def category_theory.limits.prod.fst +/- theorem category_theory.limits.prod.hom_ext +/- def category_theory.limits.prod.lift' +/- def category_theory.limits.prod.lift +/- theorem category_theory.limits.prod.lift_comp_comp +/- theorem category_theory.limits.prod.lift_fst +/- theorem category_theory.limits.prod.lift_snd + def category_theory.limits.prod.map_iso + theorem category_theory.limits.prod.map_iso_hom + theorem category_theory.limits.prod.map_iso_inv +/- def category_theory.limits.prod.snd +/- def category_theory.limits.prod + def category_theory.limits.walking_pair.equiv_bool + theorem category_theory.limits.walking_pair.equiv_bool_apply_left + theorem category_theory.limits.walking_pair.equiv_bool_apply_right + theorem category_theory.limits.walking_pair.equiv_bool_symm_apply_ff + theorem category_theory.limits.walking_pair.equiv_bool_symm_apply_tt + def category_theory.limits.walking_pair.swap + theorem category_theory.limits.walking_pair.swap_apply_left + theorem category_theory.limits.walking_pair.swap_apply_right + theorem category_theory.limits.walking_pair.swap_symm_apply_ff + theorem category_theory.limits.walking_pair.swap_symm_apply_tt Modified src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.bicone.to_binary_bicone + def category_theory.limits.bicone.to_binary_bicone_is_colimit + def category_theory.limits.bicone.to_binary_bicone_is_limit +/- def category_theory.limits.bicone.to_cocone +/- def category_theory.limits.bicone.to_cone +/- structure category_theory.limits.bicone + theorem category_theory.limits.bicone_ι_π_ne + theorem category_theory.limits.bicone_ι_π_self + theorem category_theory.limits.binary_bicone.to_cocone_X + theorem category_theory.limits.binary_bicone.to_cocone_ι_app_left + theorem category_theory.limits.binary_bicone.to_cocone_ι_app_right + theorem category_theory.limits.binary_bicone.to_cone_X + theorem category_theory.limits.binary_bicone.to_cone_π_app_left + theorem category_theory.limits.binary_bicone.to_cone_π_app_right + theorem category_theory.limits.biprod.braid_natural + def category_theory.limits.biprod.braiding' + theorem category_theory.limits.biprod.braiding'_eq_braiding + def category_theory.limits.biprod.braiding + theorem category_theory.limits.biprod.braiding_map_braiding + theorem category_theory.limits.biprod.desc_eq - theorem category_theory.limits.biprod.fst_add_snd - theorem category_theory.limits.biprod.inl_add_inr +/- theorem category_theory.limits.biprod.inl_fst + theorem category_theory.limits.biprod.inl_map +/- theorem category_theory.limits.biprod.inl_snd +/- theorem category_theory.limits.biprod.inr_fst + theorem category_theory.limits.biprod.inr_map +/- theorem category_theory.limits.biprod.inr_snd + theorem category_theory.limits.biprod.lift_eq + def category_theory.limits.biprod.map' +/- def category_theory.limits.biprod.map + theorem category_theory.limits.biprod.map_eq + theorem category_theory.limits.biprod.map_eq_map' + theorem category_theory.limits.biprod.map_fst + def category_theory.limits.biprod.map_iso + theorem category_theory.limits.biprod.map_snd + theorem category_theory.limits.biprod.symmetry' + theorem category_theory.limits.biprod.symmetry + def category_theory.limits.biproduct.bicone + theorem category_theory.limits.biproduct.desc_eq + theorem category_theory.limits.biproduct.hom_ext' + theorem category_theory.limits.biproduct.hom_ext + theorem category_theory.limits.biproduct.inl_map + def category_theory.limits.biproduct.is_colimit + def category_theory.limits.biproduct.is_limit + theorem category_theory.limits.biproduct.lift_desc + theorem category_theory.limits.biproduct.lift_eq + def category_theory.limits.biproduct.map' +/- def category_theory.limits.biproduct.map + theorem category_theory.limits.biproduct.map_eq + theorem category_theory.limits.biproduct.map_eq_map' + theorem category_theory.limits.biproduct.total +/- def category_theory.limits.biproduct.ι + theorem category_theory.limits.biproduct.ι_π + theorem category_theory.limits.biproduct.ι_π_ne + theorem category_theory.limits.biproduct.ι_π_self +/- def category_theory.limits.biproduct.π +/- def category_theory.limits.biproduct +/- def category_theory.limits.biproduct_iso + def category_theory.limits.has_binary_biproduct.of_has_binary_coproduct + def category_theory.limits.has_binary_biproduct.of_has_binary_product + def category_theory.limits.has_binary_biproduct_of_total + def category_theory.limits.has_binary_biproducts.of_has_binary_coproducts + def category_theory.limits.has_binary_biproducts.of_has_binary_products + def category_theory.limits.has_binary_biproducts_of_finite_biproducts + def category_theory.limits.has_biproduct.of_has_coproduct + def category_theory.limits.has_biproduct.of_has_product + def category_theory.limits.has_biproduct_of_total - def category_theory.limits.has_preadditive_binary_biproduct.of_has_colimit_pair - def category_theory.limits.has_preadditive_binary_biproduct.of_has_limit_pair - def category_theory.limits.has_preadditive_binary_biproducts_of_has_binary_coproducts - def category_theory.limits.has_preadditive_binary_biproducts_of_has_binary_products Modified src/category_theory/limits/shapes/products.lean + def category_theory.limits.has_coproduct + def category_theory.limits.has_coproducts_of_shape + def category_theory.limits.has_product + def category_theory.limits.has_products_of_shape +/- def category_theory.limits.pi.lift +/- def category_theory.limits.pi.map +/- def category_theory.limits.pi.π +/- def category_theory.limits.pi_obj +/- def category_theory.limits.sigma.desc +/- def category_theory.limits.sigma.map +/- def category_theory.limits.sigma.ι +/- def category_theory.limits.sigma_obj 2020-06-29 13:48:21 78beab4 feat(linear_algebra/affine_space): affine independence (#3140) Define affine independent indexed families of points (in terms of no nontrivial `weighted_vsub` in the family being zero), prove that a family of at most one point is affine independent, and prove a family of points is affine independent if and only if a corresponding family of subtractions is linearly independent. There are of course other equivalent descriptions of affine independent families it will be useful to add later (that the affine span of all proper subfamilies is smaller than the affine span of the whole family, that each point is not in the affine span of the rest; in the case of a family indexed by a `fintype`, that the dimension of the affine span is one less than the cardinality). But I think the definition and one equivalent formulation is a reasonable starting point. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_insert_one + theorem finset.prod_subtype_eq_prod_filter + theorem finset.prod_subtype_map_embedding + theorem finset.prod_subtype_of_mem Modified src/data/finset.lean +/- theorem finset.filter_true + theorem finset.filter_true_of_mem + theorem finset.not_mem_map_subtype_of_not_property + theorem finset.subtype_map + theorem finset.subtype_map_of_mem Modified src/linear_algebra/affine_space.lean + def affine_independent + theorem affine_independent_iff_linear_independent_vsub + theorem affine_independent_of_subsingleton + theorem finset.weighted_vsub_of_point_erase + theorem finset.weighted_vsub_of_point_insert 2020-06-29 12:45:16 36ce13f chore(finset/nat/antidiagonal): simplify some proofs (#3225) Replace some proofs with `rfl`, and avoid `multiset.to_finset` when there is a `nodup` available. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.card_mk Modified src/data/list/antidiagonal.lean Modified src/data/multiset.lean 2020-06-29 08:15:17 c4f9176 feat(linear_algebra/tensor_product): ite_tmul (#3216) ``` ((if P then x₁ else 0) ⊗ₜ[R] x₂) = if P then (x₁ ⊗ₜ x₂) else 0 ``` and the symmetric version. ESTIMATED CHANGES Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.ite_tmul + theorem tensor_product.tmul_ite 2020-06-29 06:59:46 ca44926 chore(ring_theory/tensor_product): missing simp lemmas (#3215) A few missing `simp` lemmas. ESTIMATED CHANGES Modified src/ring_theory/tensor_product.lean + theorem algebra.tensor_product.alg_hom_of_linear_map_tensor_product_apply + theorem algebra.tensor_product.include_left_apply + theorem algebra.tensor_product.include_right_apply - theorem algebra.tensor_product.mul_tmul + theorem algebra.tensor_product.tmul_mul_tmul + theorem algebra.tensor_product.tmul_pow 2020-06-29 04:45:10 a443d8b feat(simp_nf): instructions for linter timeout (#3205) ESTIMATED CHANGES Modified src/tactic/lint/simp.lean - theorem add_zero - theorem zero_add_zero 2020-06-29 04:21:12 9a1c0a6 feat(data/padics/padic_norm) Fix namespacing of padic_val_nat (#3207) No longer need we `padic_val_rat.padic_val_nat`. ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean + def padic_val_nat + theorem padic_val_nat_def - def padic_val_rat.padic_val_nat - theorem padic_val_rat.padic_val_nat_def - theorem padic_val_rat.padic_val_rat_of_nat - theorem padic_val_rat.zero_le_padic_val_rat_of_nat + theorem padic_val_rat_of_nat + theorem zero_le_padic_val_rat_of_nat 2020-06-29 03:57:10 9acf590 feat(data/matrix/notation): smul matrix lemmas (#3208) ESTIMATED CHANGES Modified src/data/matrix/notation.lean + theorem matrix.smul_mat_cons + theorem matrix.smul_mat_empty 2020-06-29 03:20:59 d2b46ab chore(category_theory/punit): use discrete punit instead of punit (#3201) Analogous to #3191 for `punit`. I also removed some `simp` lemmas which can be generated instead by `[simps]`. ESTIMATED CHANGES Modified src/algebra/homology/chain_complex.lean Modified src/category_theory/comma.lean - theorem category_theory.arrow.hom_mk'_left - theorem category_theory.arrow.hom_mk'_right - theorem category_theory.arrow.hom_mk_left - theorem category_theory.arrow.hom_mk_right - theorem category_theory.arrow.mk_hom - theorem category_theory.comma.fst_map - theorem category_theory.comma.fst_obj - theorem category_theory.comma.map_left_comp_hom_app_left - theorem category_theory.comma.map_left_comp_hom_app_right - theorem category_theory.comma.map_left_comp_inv_app_left - theorem category_theory.comma.map_left_comp_inv_app_right - theorem category_theory.comma.map_left_id_hom_app_left - theorem category_theory.comma.map_left_id_hom_app_right - theorem category_theory.comma.map_left_id_inv_app_left - theorem category_theory.comma.map_left_id_inv_app_right - theorem category_theory.comma.map_left_map_left - theorem category_theory.comma.map_left_map_right - theorem category_theory.comma.map_left_obj_hom - theorem category_theory.comma.map_left_obj_left - theorem category_theory.comma.map_left_obj_right - theorem category_theory.comma.map_right_comp_hom_app_left - theorem category_theory.comma.map_right_comp_hom_app_right - theorem category_theory.comma.map_right_comp_inv_app_left - theorem category_theory.comma.map_right_comp_inv_app_right - theorem category_theory.comma.map_right_id_hom_app_left - theorem category_theory.comma.map_right_id_hom_app_right - theorem category_theory.comma.map_right_id_inv_app_left - theorem category_theory.comma.map_right_id_inv_app_right - theorem category_theory.comma.map_right_map_left - theorem category_theory.comma.map_right_map_right - theorem category_theory.comma.map_right_obj_hom - theorem category_theory.comma.map_right_obj_left - theorem category_theory.comma.map_right_obj_right - theorem category_theory.comma.snd_map - theorem category_theory.comma.snd_obj - theorem category_theory.over.hom_mk_left +/- def category_theory.over.map - theorem category_theory.over.over_morphism_right +/- def category_theory.over - theorem category_theory.under.hom_mk_right +/- def category_theory.under.map - theorem category_theory.under.mk_hom - theorem category_theory.under.mk_right - theorem category_theory.under.under_morphism_left +/- def category_theory.under Modified src/category_theory/connected.lean + def category_theory.discrete_connected_equiv_punit Modified src/category_theory/discrete_category.lean + def category_theory.discrete.equiv_of_equivalence Modified src/category_theory/elements.lean +/- def category_theory.category_of_elements.comma_equivalence + theorem category_theory.category_of_elements.comma_equivalence_functor + theorem category_theory.category_of_elements.comma_equivalence_inverse +/- def category_theory.category_of_elements.from_comma +/- def category_theory.category_of_elements.to_comma - theorem category_theory.category_of_elements.π_map - theorem category_theory.category_of_elements.π_obj Modified src/category_theory/groupoid.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/punit.lean + def category_theory.functor.equiv + def category_theory.functor.from_punit + theorem category_theory.functor.punit_ext' + def category_theory.functor.punit_ext +/- def category_theory.functor.star - theorem category_theory.functor.star_map - theorem category_theory.functor.star_obj 2020-06-29 02:24:01 b503fb4 chore(docs/tutorial): change category declarations (#3220) change category declarations to match syntax in recent commit (i.e. no more explicit typeclass naming), delete unnecessary "include" lines as they are no longer needed for Lean to include the typeclass, update tutorial text to explain new syntax ESTIMATED CHANGES Modified docs/tutorial/category_theory/intro.lean 2020-06-28 22:51:22 2ec83dc chore(group_theory/submonoid): split into 3 files (#3058) Now * `group_theory.submonoid.basic` contains the definition, `complete_lattice` structure, and some basic facts about `closure`; * `group_theory.submonoid.operations` contains definitions of various operations on submonoids; * `group_theory.submonoid.membership` contains various facts about membership in a submonoid or the submonoid closure of a set. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean Deleted src/group_theory/submonoid.lean - theorem add_submonoid.closure_singleton_eq - theorem add_submonoid.mem_closure_singleton - def add_submonoid.of_submonoid - theorem add_submonoid.smul_mem - def add_submonoid.to_submonoid - structure add_submonoid - theorem free_monoid.closure_range_of - def monoid_hom.cod_mrestrict - theorem monoid_hom.coe_mrange - theorem monoid_hom.coe_mrange_restrict - def monoid_hom.eq_mlocus - theorem monoid_hom.eq_of_eq_on_mdense - theorem monoid_hom.eq_of_eq_on_mtop - theorem monoid_hom.eq_on_mclosure - theorem monoid_hom.map_mclosure - theorem monoid_hom.map_mrange - theorem monoid_hom.mclosure_preimage_le - theorem monoid_hom.mem_mrange - def monoid_hom.mrange - def monoid_hom.mrange_restrict - theorem monoid_hom.mrange_top_iff_surjective - theorem monoid_hom.mrange_top_of_surjective - def monoid_hom.mrestrict - theorem monoid_hom.mrestrict_apply - def mul_equiv.submonoid_congr - def submonoid.add_submonoid_equiv - theorem submonoid.bot_prod_bot - def submonoid.closure - theorem submonoid.closure_Union - theorem submonoid.closure_empty - theorem submonoid.closure_eq - theorem submonoid.closure_eq_mrange - theorem submonoid.closure_eq_of_le - theorem submonoid.closure_induction - theorem submonoid.closure_le - theorem submonoid.closure_mono - theorem submonoid.closure_singleton_eq - theorem submonoid.closure_union - theorem submonoid.closure_univ - theorem submonoid.coe_Inf - theorem submonoid.coe_Sup_of_directed_on - theorem submonoid.coe_bot - theorem submonoid.coe_coe - theorem submonoid.coe_comap - theorem submonoid.coe_copy - theorem submonoid.coe_eq_coe - theorem submonoid.coe_inf - theorem submonoid.coe_infi - theorem submonoid.coe_map - theorem submonoid.coe_mul - theorem submonoid.coe_one - theorem submonoid.coe_prod - theorem submonoid.coe_ssubset_coe - theorem submonoid.coe_subset_coe - theorem submonoid.coe_subtype - theorem submonoid.coe_supr_of_directed - theorem submonoid.coe_top - def submonoid.comap - theorem submonoid.comap_comap - theorem submonoid.comap_inf - theorem submonoid.comap_infi - theorem submonoid.comap_top - def submonoid.copy - theorem submonoid.copy_eq - theorem submonoid.exists_list_of_mem_closure - theorem submonoid.ext' - theorem submonoid.ext - theorem submonoid.gc_map_comap - def submonoid.inclusion - theorem submonoid.le_def - theorem submonoid.list_prod_mem - def submonoid.map - theorem submonoid.map_bot - theorem submonoid.map_id - theorem submonoid.map_inl - theorem submonoid.map_inr - theorem submonoid.map_le_iff_le_comap - theorem submonoid.map_map - theorem submonoid.map_sup - theorem submonoid.map_supr - theorem submonoid.mem_Inf - theorem submonoid.mem_Sup_of_directed_on - theorem submonoid.mem_bot - theorem submonoid.mem_carrier - theorem submonoid.mem_closure - theorem submonoid.mem_closure_singleton - theorem submonoid.mem_coe - theorem submonoid.mem_comap - theorem submonoid.mem_inf - theorem submonoid.mem_infi - theorem submonoid.mem_map - theorem submonoid.mem_prod - theorem submonoid.mem_sup - theorem submonoid.mem_supr_of_directed - theorem submonoid.mem_top - theorem submonoid.mul_mem - theorem submonoid.multiset_prod_mem - def submonoid.of_add_submonoid - theorem submonoid.one_mem - theorem submonoid.pow_mem - def submonoid.prod - theorem submonoid.prod_bot_sup_bot_prod - def submonoid.prod_equiv - theorem submonoid.prod_mem - theorem submonoid.prod_mono - theorem submonoid.prod_mono_left - theorem submonoid.prod_mono_right - theorem submonoid.prod_top - theorem submonoid.range_fst - theorem submonoid.range_inl' - theorem submonoid.range_inl - theorem submonoid.range_inl_sup_range_inr - theorem submonoid.range_inr' - theorem submonoid.range_inr - theorem submonoid.range_snd - theorem submonoid.range_subtype - theorem submonoid.subset_closure - def submonoid.subtype - theorem submonoid.sup_eq_range - def submonoid.to_add_submonoid - theorem submonoid.top_prod - theorem submonoid.top_prod_top - structure submonoid Added src/group_theory/submonoid/basic.lean + structure add_submonoid + theorem monoid_hom.coe_of_mdense + def monoid_hom.eq_mlocus + theorem monoid_hom.eq_of_eq_on_mdense + theorem monoid_hom.eq_of_eq_on_mtop + theorem monoid_hom.eq_on_mclosure + def monoid_hom.of_mdense + def submonoid.closure + theorem submonoid.closure_Union + theorem submonoid.closure_empty + theorem submonoid.closure_eq + theorem submonoid.closure_eq_of_le + theorem submonoid.closure_induction + theorem submonoid.closure_le + theorem submonoid.closure_mono + theorem submonoid.closure_union + theorem submonoid.closure_univ + theorem submonoid.coe_Inf + theorem submonoid.coe_bot + theorem submonoid.coe_coe + theorem submonoid.coe_copy + theorem submonoid.coe_eq_coe + theorem submonoid.coe_inf + theorem submonoid.coe_infi + theorem submonoid.coe_ssubset_coe + theorem submonoid.coe_subset_coe + theorem submonoid.coe_top + def submonoid.copy + theorem submonoid.copy_eq + theorem submonoid.dense_induction + theorem submonoid.ext' + theorem submonoid.ext + theorem submonoid.le_def + theorem submonoid.mem_Inf + theorem submonoid.mem_bot + theorem submonoid.mem_carrier + theorem submonoid.mem_closure + theorem submonoid.mem_coe + theorem submonoid.mem_inf + theorem submonoid.mem_infi + theorem submonoid.mem_top + theorem submonoid.mul_mem + theorem submonoid.one_mem + theorem submonoid.subset_closure + structure submonoid Added src/group_theory/submonoid/default.lean Added src/group_theory/submonoid/membership.lean + theorem add_submonoid.closure_singleton_eq + theorem add_submonoid.mem_closure_singleton + theorem add_submonoid.nsmul_mem + theorem free_monoid.closure_range_of + theorem submonoid.closure_eq_mrange + theorem submonoid.closure_singleton_eq + theorem submonoid.coe_Sup_of_directed_on + theorem submonoid.coe_supr_of_directed + theorem submonoid.exists_list_of_mem_closure + theorem submonoid.list_prod_mem + theorem submonoid.mem_Sup_of_directed_on + theorem submonoid.mem_closure_singleton + theorem submonoid.mem_sup + theorem submonoid.mem_supr_of_directed + theorem submonoid.multiset_prod_mem + theorem submonoid.pow_mem + theorem submonoid.prod_mem + theorem submonoid.sup_eq_range Added src/group_theory/submonoid/operations.lean + def add_submonoid.of_submonoid + def add_submonoid.to_submonoid + def monoid_hom.cod_mrestrict + theorem monoid_hom.coe_mrange + theorem monoid_hom.coe_mrange_restrict + theorem monoid_hom.map_mclosure + theorem monoid_hom.map_mrange + theorem monoid_hom.mclosure_preimage_le + theorem monoid_hom.mem_mrange + def monoid_hom.mrange + def monoid_hom.mrange_restrict + theorem monoid_hom.mrange_top_iff_surjective + theorem monoid_hom.mrange_top_of_surjective + def monoid_hom.mrestrict + theorem monoid_hom.mrestrict_apply + def mul_equiv.submonoid_congr + def submonoid.add_submonoid_equiv + theorem submonoid.bot_prod_bot + theorem submonoid.coe_comap + theorem submonoid.coe_map + theorem submonoid.coe_mul + theorem submonoid.coe_one + theorem submonoid.coe_prod + theorem submonoid.coe_subtype + def submonoid.comap + theorem submonoid.comap_comap + theorem submonoid.comap_inf + theorem submonoid.comap_infi + theorem submonoid.comap_top + theorem submonoid.gc_map_comap + def submonoid.inclusion + def submonoid.map + theorem submonoid.map_bot + theorem submonoid.map_id + theorem submonoid.map_inl + theorem submonoid.map_inr + theorem submonoid.map_le_iff_le_comap + theorem submonoid.map_map + theorem submonoid.map_sup + theorem submonoid.map_supr + theorem submonoid.mem_comap + theorem submonoid.mem_map + theorem submonoid.mem_prod + theorem submonoid.mrange_fst + theorem submonoid.mrange_inl' + theorem submonoid.mrange_inl + theorem submonoid.mrange_inl_sup_mrange_inr + theorem submonoid.mrange_inr' + theorem submonoid.mrange_inr + theorem submonoid.mrange_snd + def submonoid.of_add_submonoid + def submonoid.prod + theorem submonoid.prod_bot_sup_bot_prod + def submonoid.prod_equiv + theorem submonoid.prod_mono + theorem submonoid.prod_top + theorem submonoid.range_subtype + def submonoid.subtype + def submonoid.to_add_submonoid + theorem submonoid.top_prod + theorem submonoid.top_prod_top Modified src/ring_theory/subsemiring.lean + theorem subsemiring.nsmul_mem - theorem subsemiring.smul_mem 2020-06-28 22:28:30 4ad82e5 feat(uniform_space): compact uniform spaces, Heine-Cantor (#3180) feat(uniform_space): compact uniform spaces Compact Hausdorff spaces are uniquely uniformizable and continuous functions on them are uniformly continuous (Heine-Cantor). ESTIMATED CHANGES Added src/topology/uniform_space/compact_separated.lean + theorem compact.uniform_continuous_on_of_continuous' + theorem compact.uniform_continuous_on_of_continuous + theorem compact_space.uniform_continuous_of_continuous + theorem compact_space_uniformity + def uniform_space_of_compact_t2 + theorem unique_uniformity_of_compact_t2 2020-06-28 21:26:32 3d72c97 chore(measure_theory/outer_measure,measure_space): use `complete_lattice_of_Inf/Sup` (#3185) Also add a few supporting lemmas about `bsupr`/`binfi` to `order/complete_lattice` ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.coe_supr Modified src/order/complete_lattice.lean +/- theorem binfi_inf + theorem binfi_le + theorem binfi_le_binfi + theorem bsupr_le + theorem bsupr_le_bsupr +/- theorem infi_lt_iff + theorem le_binfi + theorem le_bsupr +/- theorem lt_supr_iff 2020-06-28 13:39:01 35fbfe0 fix(tactic/linarith): use refine instead of apply to avoid apply bug (#3199) closes #3142 ESTIMATED CHANGES Modified src/tactic/linarith/frontend.lean Modified test/linarith.lean + def leα 2020-06-28 09:35:54 da210bf doc(contribute/bors.md): update some outdated info (#3209) ESTIMATED CHANGES Modified docs/contribute/bors.md 2020-06-28 08:10:20 2f6a5f5 feat(nat, lattice): preliminaries for Haar measure (#3190) PR 2/5 to put the Haar measure in mathlib. This PR: results about lattices and lattice operations on `nat`. add some simp lemmas for `nat.find` (simplifying a proof in `sum_four_squares`) rename `finset.sup_val` to `finset.sup_def` (it was unused). In PR 3 I will add a new declaration `finset.sup_val` `Inf_nat_def` and `Sup_nat_def` renamed to `nat.Inf_def` and `nat.Sup_def`, and use `set.nonempty` in statement (they were unused outside that file) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.sup_def - theorem finset.sup_val Modified src/data/nat/basic.lean + theorem nat.find_eq_zero + theorem nat.find_pos Modified src/number_theory/sum_four_squares.lean Modified src/order/bounded_lattice.lean Modified src/order/complete_lattice.lean +/- theorem Inf_range +/- theorem Sup_range +/- def complete_lattice_of_Inf + theorem infi_and' +/- theorem infi_apply + theorem infi_congr +/- theorem infi_congr_Prop +/- theorem infi_prod +/- theorem infi_sigma +/- theorem infi_sum + theorem supr_and' +/- theorem supr_apply + theorem supr_congr +/- theorem supr_congr_Prop +/- theorem supr_prod +/- theorem supr_sigma +/- theorem supr_sum Modified src/order/conditionally_complete_lattice.lean - theorem Inf_nat_def - theorem Sup_nat_def + theorem nat.Inf_def + theorem nat.Inf_eq_zero + theorem nat.Inf_mem + theorem nat.Sup_def + theorem nat.not_mem_of_lt_Inf 2020-06-28 07:12:16 4e2b46a feat(algebra/big_operators): add induction principles (#3197) add sum_induction and prod_induction ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_induction 2020-06-28 06:01:24 a220286 feat(subtype): standardize (#3204) Add simp lemma from x.val to coe x Use correct ext/ext_iff naming scheme Use coe in more places in the library ESTIMATED CHANGES Modified archive/100-theorems-list/82_cubing_a_cube.lean Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Group/images.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/module.lean +/- theorem submodule.coe_eq_coe +/- theorem submodule.mk_eq_zero Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/exp_log.lean Modified src/analysis/special_functions/pow.lean Modified src/category_theory/elements.lean Modified src/category_theory/limits/types.lean Modified src/computability/tm_to_partrec.lean Modified src/data/dfinsupp.lean +/- def dfinsupp.mk +/- theorem dfinsupp.mk_add +/- theorem dfinsupp.mk_apply Modified src/data/equiv/basic.lean Modified src/data/equiv/denumerable.lean Modified src/data/finset.lean + theorem finset.range_coe - theorem finset.range_val Modified src/data/hash_map.lean +/- theorem hash_map.mk_as_list +/- def hash_map.mk_idx +/- theorem hash_map.mk_valid Modified src/data/holor.lean Modified src/data/list/range.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean +/- theorem padic_int.ext Modified src/data/polynomial.lean Modified src/data/real/nnreal.lean Modified src/data/seq/wseq.lean Modified src/data/set/basic.lean - theorem set.preimage_coe_eq_preimage_coe_iff - theorem set.range_coe_subtype + theorem set.set_of_set + theorem subtype.coe_image + theorem subtype.coe_image_subset + theorem subtype.coe_image_univ +/- theorem subtype.image_preimage_val +/- theorem subtype.mem + theorem subtype.preimage_coe_eq_preimage_coe_iff + theorem subtype.range_coe + theorem subtype.range_coe_subtype +/- theorem subtype.range_val + theorem subtype.range_val_subtype - theorem subtype.val_image - theorem subtype.val_image_subset - theorem subtype.val_image_univ - theorem subtype.val_range Modified src/data/set/countable.lean Modified src/data/set/finite.lean Modified src/data/set/function.lean Modified src/data/set/lattice.lean Modified src/data/setoid/basic.lean Modified src/data/setoid/partition.lean +/- theorem setoid.is_partition.pairwise_disjoint +/- theorem setoid.is_partition.sUnion_eq_univ Modified src/data/subtype.lean +/- theorem subtype.coe_eta - theorem subtype.coe_ext + theorem subtype.coe_injective +/- theorem subtype.coe_mk + theorem subtype.coe_prop - theorem subtype.exists - theorem subtype.ext + theorem subtype.ext_iff + theorem subtype.ext_iff_val + theorem subtype.ext_val - theorem subtype.forall' - theorem subtype.forall +/- theorem subtype.mk_eq_mk + theorem subtype.prop +/- theorem subtype.restrict_def +/- theorem subtype.val_eq_coe - theorem subtype.val_prop' +/- theorem subtype.val_prop Modified src/data/vector2.lean Modified src/data/zmod/basic.lean Modified src/field_theory/subfield.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/real_instances.lean Modified src/group_theory/congruence.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/dual.lean + theorem vector_space.erange_coe - theorem vector_space.eval_range Modified src/linear_algebra/finite_dimensional.lean +/- theorem finite_dimensional.of_finset_basis Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/linear_pmap.lean - theorem subtype.coe_prop Modified src/linear_algebra/special_linear_group.lean Modified src/logic/embedding.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/probability_mass_function.lean Modified src/order/complete_lattice.lean Modified src/order/filter/basic.lean Modified src/order/filter/ultrafilter.lean Modified src/order/zorn.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/localization.lean +/- theorem localization_map.mk'_self'' Modified src/ring_theory/noetherian.lean Modified src/ring_theory/subring.lean Modified src/ring_theory/subsemiring.lean Modified src/ring_theory/unique_factorization_domain.lean + theorem associates.map_subtype_coe_factors' - theorem associates.map_subtype_val_factors' Modified src/set_theory/ordinal.lean Modified src/tactic/subtype_instance.lean Modified src/topology/algebra/module.lean Modified src/topology/category/Top/opens.lean Modified src/topology/constructions.lean + theorem continuous_at_subtype_coe - theorem continuous_at_subtype_val + theorem embedding_subtype_coe - theorem embedding_subtype_val + theorem is_closed.closed_embedding_subtype_coe - theorem is_closed.closed_embedding_subtype_val + theorem is_open.is_open_map_subtype_coe - theorem is_open.is_open_map_subtype_val + theorem is_open.open_embedding_subtype_coe - theorem is_open.open_embedding_subtype_val + theorem map_nhds_subtype_coe_eq - theorem map_nhds_subtype_val_eq Modified src/topology/continuous_on.lean + theorem nhds_within_eq_map_subtype_coe - theorem nhds_within_eq_map_subtype_val Modified src/topology/dense_embedding.lean Modified src/topology/instances/ennreal.lean Modified src/topology/list.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean + theorem isometry_subtype_coe - theorem isometry_subtype_val Modified src/topology/opens.lean +/- theorem topological_space.opens.ext Modified src/topology/separation.lean Modified src/topology/subset_properties.lean +/- theorem compact_iff_compact_univ Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-06-28 00:34:00 dd2f1b9 chore(scripts): update nolints.txt (#3206) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-27 18:19:16 247fe80 feat(category_theory/cones): cone functoriality is fully faithful (#3202) The functors `cones.functoriality` and `cocones.functoriality` are fully faithful if the transformation functor is as well. ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean +/- def category_theory.limits.cocones.functoriality +/- def category_theory.limits.cones.functoriality 2020-06-27 10:10:55 adcd09d chore(tactic/linarith): remove final linting error (#3196) ESTIMATED CHANGES Modified src/tactic/linarith/lemmas.lean 2020-06-27 05:25:00 e7e9f30 feat(set): preliminaries for Haar measure (#3189) `comp_sup_eq_sup_comp` is renamed `comp_sup_eq_sup_comp_of_is_total` and there is a new version that doesn't assume that the order is linear. `set.image_injective` is renamed `function.injective.image_injective` (in the same way as the existing `function.surjective.preimage_injective`). `set.image_injective` is now an `iff`. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.bInter_coe + theorem finset.bInter_finset_image + theorem finset.bInter_insert + theorem finset.bInter_inter + theorem finset.bInter_singleton + theorem finset.bUnion_finset_image - theorem finset.bUnion_preimage_singleton + theorem finset.card_union_eq +/- theorem finset.comp_inf_eq_inf_comp + theorem finset.comp_inf_eq_inf_comp_of_is_total +/- theorem finset.comp_sup_eq_sup_comp + theorem finset.comp_sup_eq_sup_comp_of_is_total + theorem finset.infi_finset_image + theorem finset.infi_insert + theorem finset.infi_singleton + theorem finset.infi_union + def finset.subtype_insert_equiv_option + theorem finset.supr_finset_image + theorem finset.supr_insert + theorem finset.supr_singleton +/- theorem finset.supr_union Modified src/data/set/basic.lean + theorem function.injective.image_injective + theorem function.injective.nonempty_apply_iff + theorem function.injective.preimage_surjective + theorem function.surjective.image_surjective +/- theorem function.surjective.preimage_injective + theorem set.diff_inter_diff +/- theorem set.image_injective + theorem set.image_surjective + theorem set.preimage_id' + theorem set.preimage_injective + theorem set.preimage_preimage + theorem set.preimage_surjective + theorem set.subset.rfl Modified src/data/set/lattice.lean + theorem set.disjoint.preimage + theorem set.disjoint_iff_inter_eq_empty + theorem set.disjoint_of_subset + theorem set.disjoint_of_subset_left + theorem set.disjoint_of_subset_right + theorem set.subset_diff Modified src/logic/embedding.lean Modified src/logic/function/basic.lean +/- theorem function.injective.ne + theorem function.injective.ne_iff Modified src/topology/metric_space/basic.lean 2020-06-27 03:21:26 8413b3f feat(analysis/normed_space/real_inner_product): sums and bilinear form (#3187) Add lemmas about distributing the inner product into a sum. The natural approach to proving those seems to be to use the corresponding lemmas for bilinear forms, so also add a construction of a `bilin_form ℝ α` from the inner product. I realise this might all get refactored later if inner products get refactored to cover the case of complex inner products as well. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + def bilin_form_of_inner + theorem inner_sum + theorem sum_inner 2020-06-27 02:52:56 6ed3325 feat(category_theory/limits): limit of point iso (#3188) Prove a cone is a limit given that the canonical morphism from it to a limiting cone is an iso. ESTIMATED CHANGES Modified src/algebra/category/Group/limits.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.of_point_iso + def category_theory.limits.is_limit.of_point_iso Modified src/category_theory/reflect_isomorphisms.lean Modified src/topology/category/Top/limits.lean 2020-06-27 00:32:10 c6fd69d chore(scripts): update nolints.txt (#3192) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-26 23:51:42 78d6780 chore(category_theory/pempty): use discrete pempty instead of a special pempty category (#3191) Use `discrete pempty` instead of a specialised `pempty` category. Motivation: Since we have a good API for `discrete` categories, there doesn't seem to be much point in defining a specialised `pempty` category with an equivalence, instead we might as well just use `discrete pempty`. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/pempty.lean +/- def category_theory.functor.empty + theorem category_theory.functor.empty_ext' +/- def category_theory.functor.empty_ext + def category_theory.functor.unique_from_empty 2020-06-26 16:35:02 2d270ff feat(data/set/basic): +2 lemmas, +2 `simp` attrs (#3182) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.image_diff + theorem set.subset_image_diff + theorem subtype.image_preimage_coe +/- theorem subtype.image_preimage_val 2020-06-26 15:11:50 ef62d1c chore(*): last preparations for Heine (#3179) This is hopefully the last preparatory PR before we study compact uniform spaces. It has almost no mathematical content, except that I define `uniform_continuous_on`, and check it is equivalent to uniform continuity for the induced uniformity. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.diagonal_eq_range + theorem set.mem_diagonal Modified src/order/complete_lattice.lean + theorem infi_split + theorem infi_split_single + theorem supr_split + theorem supr_split_single Modified src/order/filter/basic.lean + theorem filter.comap_const_of_mem + theorem filter.comap_const_of_not_mem + theorem filter.comap_prod + theorem filter.le_iff_forall_inf_principal_compl + theorem filter.mem_iff_inf_principal_compl + theorem filter.principal_le_iff + theorem filter.subtype_coe_map_comap_prod Modified src/topology/basic.lean + theorem cluster_pt.of_inf_left + theorem cluster_pt.of_inf_right + theorem cluster_pt_iff - theorem cluster_pt_of_inf_left - theorem cluster_pt_of_inf_right + theorem mem_closure_iff_cluster_pt + theorem subset_interior_iff_nhds Modified src/topology/metric_space/basic.lean + theorem metric.uniform_continuous_on_iff Modified src/topology/separation.lean + theorem disjoint_nested_nhds Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean + theorem nhds_eq_comap_uniformity_aux + theorem nhds_le_uniformity + def uniform_continuous_on + theorem uniform_continuous_on_iff_restrict Modified src/topology/uniform_space/separation.lean +/- theorem eq_of_uniformity_inf_nhds 2020-06-26 13:39:18 6624509 feat(algebra/big_operators): telescoping sums (#3184) generalize sum_range_sub_of_monotone, a theorem about nats, to a theorem about commutative groups ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_range_div + theorem finset.sum_range_sub 2020-06-26 09:59:19 5b97da6 feat(ring_theory/matrix_equiv_tensor): matrix n n A ≃ₐ[R] (A ⊗[R] matrix n n R) (#3177) When `A` is an `R`-algebra, matrices over `A` are equivalent (as an algebra) to `A ⊗[R] matrix n n R`. ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem ring_hom.to_fun_eq_coe Modified src/data/matrix/basic.lean + theorem matrix.mul_mul_left + theorem matrix.mul_mul_right + def matrix.scalar + theorem ring_hom.map_matrix_mul Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.sum_tmul + theorem tensor_product.tmul_sum Modified src/logic/basic.lean + theorem apply_dite + theorem apply_ite + theorem dite_apply + theorem ite_apply Modified src/ring_theory/algebra.lean + theorem alg_equiv.symm_symm + theorem algebra.algebra_map_eq_smul_one Added src/ring_theory/matrix_algebra.lean + theorem algebra_map_matrix_val + def matrix_equiv_tensor.equiv + def matrix_equiv_tensor.inv_fun + theorem matrix_equiv_tensor.inv_fun_add + theorem matrix_equiv_tensor.inv_fun_algebra_map + theorem matrix_equiv_tensor.inv_fun_smul + theorem matrix_equiv_tensor.inv_fun_zero + theorem matrix_equiv_tensor.left_inv + theorem matrix_equiv_tensor.right_inv + def matrix_equiv_tensor.to_fun + def matrix_equiv_tensor.to_fun_alg_hom + theorem matrix_equiv_tensor.to_fun_alg_hom_apply + def matrix_equiv_tensor.to_fun_bilinear + def matrix_equiv_tensor.to_fun_linear + def matrix_equiv_tensor.to_fun_right_linear + def matrix_equiv_tensor + theorem matrix_equiv_tensor_apply + theorem matrix_equiv_tensor_apply_symm Modified src/ring_theory/tensor_product.lean 2020-06-26 07:16:55 3cfc0e7 chore(category/*): linting (#3178) Some linting work on `category_theory/`. ESTIMATED CHANGES Modified src/algebra/category/Group/basic.lean Modified src/category_theory/category/Cat.lean Modified src/category_theory/concrete_category/bundled.lean Modified src/category_theory/conj.lean Modified src/category_theory/const.lean +/- theorem category_theory.functor.const.op_obj_unop_hom_app +/- theorem category_theory.functor.const.op_obj_unop_inv_app Modified src/category_theory/core.lean Modified src/category_theory/currying.lean Modified src/category_theory/elements.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean - def category_theory.functor.ulift_down - def category_theory.functor.ulift_up Modified src/category_theory/functor_category.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/natural_isomorphism.lean - def category_theory.functor.ulift_down_up - def category_theory.functor.ulift_up_down Modified src/category_theory/natural_transformation.lean +/- structure category_theory.nat_trans Modified src/category_theory/products/associator.lean +/- def category_theory.prod.associator +/- def category_theory.prod.inverse_associator Modified src/category_theory/punit.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/sums/associator.lean +/- def category_theory.sum.associator +/- def category_theory.sum.inverse_associator 2020-06-26 06:18:21 c3923e3 feat(data/fintype): trunc_sigma_of_exists (#3166) When working over a `fintype`, you can lift existential statements to `trunc` statements. This PR adds: ``` def trunc_of_nonempty_fintype {α} (h : nonempty α) [fintype α] : trunc α def trunc_sigma_of_exists {α} [fintype α] {P : α → Prop} [decidable_pred P] (h : ∃ a, P a) : trunc (Σ' a, P a) ``` ESTIMATED CHANGES Modified src/data/fintype/basic.lean + def trunc_of_card_pos + def trunc_of_multiset_exists_mem + def trunc_of_nonempty_fintype + def trunc_sigma_of_exists 2020-06-26 01:23:06 616cb5e chore(category_theory/equivalence) explicit transitivity transformation (#3176) Modifies the construction of the transitive equivalence to be explicit in what exactly the natural transformations are. The motivation for this is two-fold: firstly we get auto-generated projection lemmas for extracting the functor and inverse, and the natural transformations aren't obscured through `adjointify_η`. ESTIMATED CHANGES Modified src/category_theory/equivalence.lean +/- def category_theory.equivalence.trans 2020-06-26 00:34:33 abae5a3 chore(scripts): update nolints.txt (#3174) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-25 23:10:54 43a2b24 feat(tactic/abel) teach abel to gsmul_zero (#3173) As reported by Heather Macbeth in: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/limitations.20of.20.60abel.60 `abel` was not negating zero to zero. ESTIMATED CHANGES Modified src/tactic/abel.lean Modified test/abel.lean 2020-06-25 16:36:04 db7a53a refactor(ring_theory/ideals): make local_ring a prop class (#3171) ESTIMATED CHANGES Modified src/ring_theory/ideals.lean - def is_local_ring - def local_of_is_local_ring + theorem local_of_nonunits_ideal - def local_of_nonunits_ideal + theorem local_of_unique_max_ideal - def local_of_unique_max_ideal - def local_of_unit_or_unit_one_sub + def local_ring.maximal_ideal + theorem local_ring.mem_maximal_ideal - theorem local_ring.mem_nonunits_ideal - def local_ring.nonunits_ideal +/- def local_ring.residue_field +/- theorem map_nonunit Modified src/ring_theory/power_series.lean - theorem mv_power_series.is_local_ring - theorem power_series.is_local_ring 2020-06-25 15:51:37 afc1c24 feat(category/default): comp_dite (#3163) Adds lemmas to "distribute" composition over `if` statements. ESTIMATED CHANGES Modified src/category_theory/category/default.lean + theorem category_theory.comp_dite + theorem category_theory.dite_comp 2020-06-25 15:51:35 c6f629b feat(category_theory/limits): isos from reindexing limits (#3100) Three related constructions which are helpful when identifying "the same limit written different ways". 1. The categories of cones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic (possibly after changing the indexing category by an equivalence). 2. We can prove two cone points `(s : cone F).X` and `(t.cone F).X` are isomorphic if * both cones are limit cones * their indexing categories are equivalent via some `e : J ≌ K`, * the triangle of functors commutes up to a natural isomorphism: `e.functor ⋙ G ≅ F`. 3. The chosen limits of `F : J ⥤ C` and `G : K ⥤ C` are isomorphic, if there is an equivalence `e : J ≌ K` making the triangle commute up to natural isomorphism. ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocones.equivalence_of_reindexing + theorem category_theory.limits.cocones.equivalence_of_reindexing_functor_obj + def category_theory.limits.cocones.whiskering + def category_theory.limits.cocones.whiskering_equivalence + def category_theory.limits.cones.equivalence_of_reindexing + theorem category_theory.limits.cones.equivalence_of_reindexing_functor_obj + def category_theory.limits.cones.whiskering + def category_theory.limits.cones.whiskering_equivalence Modified src/category_theory/limits/limits.lean + def category_theory.limits.colim_map + def category_theory.limits.has_colimit.iso_of_equivalence + theorem category_theory.limits.has_colimit.iso_of_equivalence_π + def category_theory.limits.has_colimit.iso_of_nat_iso + theorem category_theory.limits.has_colimit.iso_of_nat_iso_hom_π + def category_theory.limits.has_limit.iso_of_equivalence + theorem category_theory.limits.has_limit.iso_of_equivalence_π + def category_theory.limits.has_limit.iso_of_nat_iso + theorem category_theory.limits.has_limit.iso_of_nat_iso_hom_π + def category_theory.limits.is_colimit.cocone_points_iso_of_equivalence + def category_theory.limits.is_colimit.cocone_points_iso_of_nat_iso + def category_theory.limits.is_colimit.whisker_equivalence + def category_theory.limits.is_limit.cone_points_iso_of_equivalence + def category_theory.limits.is_limit.cone_points_iso_of_nat_iso + def category_theory.limits.is_limit.whisker_equivalence + def category_theory.limits.lim_map + theorem category_theory.limits.lim_map_π + theorem category_theory.limits.ι_colim_map 2020-06-25 14:32:01 158e84a feat(*): bump to Lean 3.16.5 (#3170) There should be no changes required in mathlib. ESTIMATED CHANGES Modified leanpkg.toml 2020-06-25 13:06:57 7d331eb chore(*): assorted lemmas about `set` and `finset` (#3158) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.bUnion_coe + theorem finset.bUnion_preimage_singleton Modified src/data/indicator_function.lean + theorem set.eq_on_indicator + theorem set.indicator_preimage_of_not_mem + theorem set.mem_range_indicator Modified src/data/set/basic.lean + theorem set.preimage_const + theorem set.preimage_const_of_mem + theorem set.preimage_const_of_not_mem +/- theorem set.preimage_inter_range + theorem set.preimage_range + theorem set.preimage_range_inter + theorem set.preimage_singleton_eq_empty + theorem set.preimage_singleton_nonempty + theorem set.sep_mem_eq Modified src/data/set/disjointed.lean + theorem pairwise_disjoint_fiber + theorem set.pairwise_on_univ Modified src/data/set/lattice.lean + theorem set.bUnion_preimage_singleton + theorem set.bUnion_range_preimage_singleton + theorem set.pairwise_on_disjoint_fiber Modified src/logic/basic.lean + theorem ite_eq_iff Modified src/measure_theory/integration.lean 2020-06-25 13:06:55 80a0877 feat(category_theory): show a pullback of a regular mono is regular (#2780) And adds two methods for constructing limits which I've found much easier to use in practice. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cofork.is_colimit.mk' + def category_theory.limits.fork.is_limit.mk' Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback_cone.flip_is_limit + def category_theory.limits.pullback_cone.is_limit.mk' + def category_theory.limits.pushout_cocone.flip_is_colimit + def category_theory.limits.pushout_cocone.is_colimit.mk' Modified src/category_theory/limits/shapes/regular_mono.lean + def category_theory.normal_of_is_pullback_fst_of_normal + def category_theory.normal_of_is_pullback_snd_of_normal + def category_theory.normal_of_is_pushout_fst_of_normal + def category_theory.normal_of_is_pushout_snd_of_normal + def category_theory.regular_of_is_pullback_fst_of_regular + def category_theory.regular_of_is_pullback_snd_of_regular + def category_theory.regular_of_is_pushout_fst_of_regular + def category_theory.regular_of_is_pushout_snd_of_regular 2020-06-25 12:26:52 3f868fa feat(filter, topology): cluster_pt and principal notation, redefine compactness (#3160) This PR implements what is discussed in https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Picking.20sides. It introduces a notation for `filter.principal`, defines `cluster_pt` and uses it to redefine compactness in a way which makes the library more consistent by always putting the neighborhood filter on the left, as in the description of closures and `nhds_within`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/order/filter/at_top_bot.lean +/- def filter.at_bot +/- def filter.at_top + theorem filter.inf_map_at_top_ne_bot_iff - theorem filter.map_at_top_inf_ne_bot_iff Modified src/order/filter/bases.lean +/- theorem filter.is_countably_generated_of_seq +/- theorem filter.is_countably_generated_seq +/- theorem filter_basis.eq_infi_principal Modified src/order/filter/basic.lean +/- theorem filter.comap_principal +/- theorem filter.inf_principal +/- theorem filter.inf_principal_eq_bot +/- theorem filter.is_compl_principal +/- theorem filter.join_principal_eq_Sup +/- theorem filter.le_principal_iff +/- theorem filter.mem_principal_self +/- theorem filter.mem_principal_sets +/- theorem filter.mem_sets_of_eq_bot +/- theorem filter.monotone_principal +/- theorem filter.principal_empty +/- theorem filter.principal_eq_bot_iff +/- theorem filter.principal_eq_iff_eq +/- theorem filter.principal_mono +/- theorem filter.principal_ne_bot_iff +/- theorem filter.principal_univ +/- theorem filter.pure_eq_principal +/- theorem filter.sup_principal +/- theorem filter.supr_principal Modified src/order/filter/countable_Inter.lean Modified src/order/filter/extr.lean +/- def is_extr_on +/- def is_max_on +/- def is_min_on Modified src/order/filter/lift.lean +/- theorem filter.lift_principal2 Modified src/order/filter/partial.lean Modified src/order/filter/ultrafilter.lean +/- theorem filter.le_of_ultrafilter Modified src/order/liminf_limsup.lean +/- theorem filter.is_bounded_principal Modified src/topology/algebra/ordered.lean Modified src/topology/bases.lean +/- theorem topological_space.first_countable_topology.tendsto_subseq Modified src/topology/basic.lean + theorem closure_eq_cluster_pts - theorem closure_eq_nhds + theorem cluster_pt.mono + theorem cluster_pt.of_le_nhds + theorem cluster_pt.of_nhds_le + def cluster_pt + theorem cluster_pt_of_inf_left + theorem cluster_pt_of_inf_right +/- theorem interior_eq_nhds +/- theorem is_closed_iff_nhds +/- theorem is_open_iff_nhds + def map_cluster_pt + theorem map_cluster_pt_iff + theorem map_cluster_pt_of_comp +/- def nhds +/- theorem nhds_def +/- theorem nhds_le_of_le Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean +/- def nhds_within Modified src/topology/dense_embedding.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.nhds_of_ne_top +/- theorem ennreal.nhds_top +/- theorem ennreal.nhds_zero Modified src/topology/local_extr.lean Modified src/topology/maps.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean +/- theorem metric.uniformity_edist Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.nhds_eq Modified src/topology/order.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean +/- def compact Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/basic.lean +/- theorem refl_le_uniformity Modified src/topology/uniform_space/cauchy.lean +/- def is_complete Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-06-25 07:40:04 e7db701 feat(category/adjunction): missing simp lemmas (#3168) Just two missing simp lemmas. ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + theorem category_theory.functor.left_adjoint_of_is_equivalence + theorem category_theory.functor.right_adjoint_of_is_equivalence 2020-06-25 07:40:02 d86f1c8 chore(category/discrete): missing simp lemmas (#3165) Some obvious missing `simp` lemmas for `discrete.nat_iso`. ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean + theorem category_theory.discrete.nat_iso_app + theorem category_theory.discrete.nat_iso_hom_app + theorem category_theory.discrete.nat_iso_inv_app 2020-06-25 07:40:01 266d316 chore(category/equivalence): cleanup (#3164) Previously some "shorthands" like ``` @[simp] def unit (e : C ≌ D) : 𝟭 C ⟶ e.functor ⋙ e.inverse := e.unit_iso.hom ``` had been added in `equivalence.lean`. These were a bit annoying, as even though they were marked as `simp` sometimes the syntactic difference between `e.unit` and `e.unit_iso.hom` would get in the way of tactics working. This PR turns these into abbreviations. This comes at a slight cost: apparently expressions like `{ X := X }.Y` won't reduce when `.Y` is an abbreviation for `.X.Z`, so we add some `@[simp]` lemmas back in to achieve this. ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/equivalence.lean +/- def category_theory.equivalence.counit - theorem category_theory.equivalence.counit_def +/- def category_theory.equivalence.counit_inv - theorem category_theory.equivalence.counit_inv_def + theorem category_theory.equivalence.equivalence_mk'_counit + theorem category_theory.equivalence.equivalence_mk'_counit_inv + theorem category_theory.equivalence.equivalence_mk'_unit + theorem category_theory.equivalence.equivalence_mk'_unit_inv + theorem category_theory.equivalence.functor_as_equivalence + theorem category_theory.equivalence.functor_inv +/- theorem category_theory.equivalence.functor_unit_comp + theorem category_theory.equivalence.inverse_as_equivalence + theorem category_theory.equivalence.inverse_inv +/- def category_theory.equivalence.unit - theorem category_theory.equivalence.unit_def +/- def category_theory.equivalence.unit_inv - theorem category_theory.equivalence.unit_inv_def + theorem category_theory.functor.as_equivalence_functor + theorem category_theory.functor.as_equivalence_inverse + theorem category_theory.functor.inv_inv 2020-06-25 07:39:59 e8187ac feat(category/preadditive): comp_sum (#3162) Adds lemmas to distribute composition over `finset.sum`, in a preadditive category. ESTIMATED CHANGES Modified src/category_theory/preadditive.lean + theorem category_theory.preadditive.comp_sum + theorem category_theory.preadditive.sum_comp 2020-06-25 06:32:59 3875012 feat(data/quot): add `map'`, `hrec_on'`, and `hrec_on₂'` (#3148) Also add a few `simp` lemmas ESTIMATED CHANGES Modified src/data/quot.lean +/- theorem quotient.choice_eq + theorem quotient.hrec_on'_mk' + theorem quotient.hrec_on₂'_mk' + theorem quotient.map'_mk' + theorem quotient.map_mk + theorem quotient.map₂'_mk' 2020-06-25 05:38:59 553e453 feat(algebra/big_operators): prod_dite_eq (#3167) Add `finset.prod_dite_eq`, the dependent analogue of `finset.prod_ite_eq`, and its primed version for the flipped equality. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_dite_eq' + theorem finset.prod_dite_eq 2020-06-25 04:35:29 8f04a92 refactor(algebra/*): small API fixes (#3157) ## Changes to `canonically_ordered_comm_semiring` * in the definition of `canonically_ordered_comm_semiring` replace `mul_eq_zero_iff` with `eq_zero_or_eq_zero_of_mul_eq_zero`; the other implication is always true because of `[semiring]`; * add instance `canonically_ordered_comm_semiring.to_no_zero_divisors`; ## Changes to `with_top` * use `to_additive` for `with_top.has_one`, `with_top.coe_one` etc; * move `with_top.coe_ne_zero` to `algebra.ordered_group`; * add `with_top.has_add`, make `coe_add`, `coe_bit*` require only `[has_add α]`; * use proper instances for lemmas about multiplication in `with_top`, not just `canonically_ordered_comm_semiring` for everything; ## Changes to `associates` * merge `associates.mk_zero_eq` and `associates.mk_eq_zero_iff_eq_zero` into `associates.mk_eq_zero`; * drop `associates.mul_zero`, `associates.zero_mul`, `associates.zero_ne_one`, and `associates.mul_eq_zero_iff` in favor of typeclass instances; ## Misc changes * drop `mul_eq_zero_iff_eq_zero_or_eq_zero` in favor of `mul_eq_zero`; * drop `ennreal.mul_eq_zero` in favor of `mul_eq_zero` from instance. ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.mk_eq_zero - theorem associates.mk_eq_zero_iff_eq_zero - theorem associates.mk_zero_eq - theorem associates.mul_eq_zero_iff - theorem associates.mul_zero - theorem associates.zero_ne_one Modified src/algebra/big_operators.lean Modified src/algebra/ordered_group.lean +/- theorem with_top.coe_add +/- theorem with_top.coe_bit0 +/- theorem with_top.coe_bit1 +/- theorem with_top.coe_eq_one - theorem with_top.coe_eq_zero +/- theorem with_top.coe_one - theorem with_top.coe_zero + theorem with_top.one_eq_coe + theorem with_top.one_ne_top + theorem with_top.top_ne_one Modified src/algebra/ordered_ring.lean +/- theorem with_top.coe_mul - theorem with_top.top_ne_zero - theorem with_top.zero_eq_coe - theorem with_top.zero_ne_top Modified src/algebra/ring.lean - theorem eq_zero_of_mul_eq_self_left' +/- theorem eq_zero_of_mul_eq_self_left - theorem eq_zero_of_mul_eq_self_right' +/- theorem eq_zero_of_mul_eq_self_right - theorem mul_eq_zero_iff_eq_zero_or_eq_zero Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean +/- theorem with_top.coe_nat Modified src/data/padics/padic_integers.lean Modified src/data/real/ennreal.lean - theorem ennreal.mul_eq_zero Modified src/data/real/nnreal.lean Modified src/number_theory/dioph.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/topology/instances/ennreal.lean 2020-06-25 01:09:38 e1a72b5 feat(archive/100-theorems-list/73_ascending_descending_sequences): Erdős–Szekeres (#3074) Prove the Erdős-Szekeres theorem on ascending or descending sequences ESTIMATED CHANGES Added archive/100-theorems-list/73_ascending_descending_sequences.lean + theorem erdos_szekeres Modified src/data/nat/basic.lean + theorem nat.succ_injective Modified src/order/basic.lean + theorem injective_of_lt_imp_ne + def strict_mono_decr_on + def strict_mono_incr_on 2020-06-25 00:34:07 5c7e1a2 chore(scripts): update nolints.txt (#3161) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-24 19:51:54 2aa08c1 chore(algebra/ordered_group): merge `add_le_add'` with `add_le_add` (#3159) Also drop `mul_le_mul''` (was a weaker version of `mul_le_mul'`). ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/group_power.lean Modified src/algebra/ordered_group.lean - theorem mul_le_mul'' Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/enorm.lean Modified src/data/polynomial.lean Modified src/data/real/ennreal.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/order/filter/extr.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/lipschitz.lean 2020-06-24 14:36:47 04a5bdb feat(linear_algebra/finsupp_vector_space): is_basis.tensor_product (#3147) If `b : ι → M` and `c : κ → N` are bases then so is `λ i, b i.1 ⊗ₜ c i.2 : ι × κ → M ⊗ N`. ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.sum_smul_index' Modified src/linear_algebra/basis.lean + theorem module_equiv_finsupp_apply_basis Modified src/linear_algebra/finsupp.lean + theorem finsupp.coe_lsum + theorem finsupp.dom_lcongr_single + def finsupp.lcongr + theorem finsupp.lcongr_single +/- def finsupp.lsum +/- theorem finsupp.lsum_apply + theorem finsupp.lsum_single + def finsupp_lequiv_direct_sum + theorem finsupp_lequiv_direct_sum_single + theorem finsupp_lequiv_direct_sum_symm_lof + def finsupp_tensor_finsupp + theorem finsupp_tensor_finsupp_single + theorem finsupp_tensor_finsupp_symm_single Modified src/linear_algebra/finsupp_vector_space.lean + theorem finsupp.is_basis.tensor_product +/- theorem finsupp.is_basis_single + theorem finsupp.is_basis_single_one Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.congr_tmul + theorem tensor_product.direct_sum_lof_tmul_lof 2020-06-24 10:22:57 dd9b5c6 refactor(tactic/linarith): big refactor and docs (#3113) This PR: * Splits `linarith` into multiple files for organizational purposes * Uses the general `zify` and `cancel_denom` tactics instead of weaker custom versions * Refactors many components of `linarith`, in particular, * Modularizes `linarith` preprocessing, so that users can insert custom steps * Implements `nlinarith` preprocessing as such a custom step, so it happens at the correct point of the preprocessing stage * Better encapsulates the FM elimination module, to make it easier to plug in alternate oracles if/when they exist * Docs, docs, docs The change to zification means that some goals which involved multiplication of natural numbers will no longer be solved. However, others are now in scope. `nlinarith` is a possible drop-in replacement; otherwise, generalize the product of naturals to a single natural, and `linarith` should still succeed. ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified src/data/list/defs.lean + def list.mfind + def list.mmap_upper_triangle Modified src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/tactic/cancel_denoms.lean Modified src/tactic/core.lean Deleted src/tactic/linarith.lean - theorem linarith.add_subst - def linarith.comp.vars - structure linarith.comp - def linarith.comp_source.to_string - inductive linarith.comp_source - theorem linarith.div_subst - theorem linarith.eq_of_eq_of_eq - theorem linarith.eq_of_not_lt_of_not_gt - def linarith.ineq.cmp - def linarith.ineq.max - def linarith.ineq.to_string - inductive linarith.ineq - theorem linarith.int.coe_nat_bit0 - theorem linarith.int.coe_nat_bit0_mul - theorem linarith.int.coe_nat_bit1 - theorem linarith.int.coe_nat_bit1_mul - theorem linarith.int.coe_nat_mul_bit0 - theorem linarith.int.coe_nat_mul_bit1 - theorem linarith.int.coe_nat_mul_one - theorem linarith.int.coe_nat_mul_zero - theorem linarith.int.coe_nat_one_mul - theorem linarith.int.coe_nat_zero_mul - theorem linarith.le_of_eq_of_le - theorem linarith.le_of_le_of_eq - def linarith.linexp.cmp - def linarith.linexp.contains - def linarith.linexp.get - def linarith.linexp.scale - def linarith.linexp.vars - def linarith.linexp.zfind - def linarith.linexp - theorem linarith.lt_of_eq_of_lt - theorem linarith.lt_of_lt_of_eq - theorem linarith.mul_eq - theorem linarith.mul_neg - theorem linarith.mul_nonpos - theorem linarith.mul_subst - theorem linarith.mul_zero_eq - theorem linarith.nat_eq_subst - theorem linarith.nat_le_subst - theorem linarith.nat_lt_subst - theorem linarith.neg_subst - theorem linarith.sub_into_lt - theorem linarith.sub_subst - theorem linarith.zero_mul_eq Added src/tactic/linarith/datatypes.lean + def linarith.comp.coeff_of + def linarith.comp.scale + def linarith.comp.vars + structure linarith.comp + def linarith.ineq.cmp + def linarith.ineq.max + def linarith.ineq.to_string + inductive linarith.ineq + def linarith.linexp.cmp + def linarith.linexp.contains + def linarith.linexp.get + def linarith.linexp.scale + def linarith.linexp.vars + def linarith.linexp.zfind + def linarith.linexp Added src/tactic/linarith/default.lean Added src/tactic/linarith/elimination.lean + def linarith.comp_source.to_string + inductive linarith.comp_source Added src/tactic/linarith/frontend.lean Added src/tactic/linarith/lemmas.lean + theorem linarith.eq_of_eq_of_eq + theorem linarith.eq_of_not_lt_of_not_gt + theorem linarith.int.coe_nat_bit0 + theorem linarith.int.coe_nat_bit0_mul + theorem linarith.int.coe_nat_bit1 + theorem linarith.int.coe_nat_bit1_mul + theorem linarith.int.coe_nat_mul_bit0 + theorem linarith.int.coe_nat_mul_bit1 + theorem linarith.int.coe_nat_mul_one + theorem linarith.int.coe_nat_mul_zero + theorem linarith.int.coe_nat_one_mul + theorem linarith.int.coe_nat_zero_mul + theorem linarith.le_of_eq_of_le + theorem linarith.le_of_le_of_eq + theorem linarith.lt_of_eq_of_lt + theorem linarith.lt_of_lt_of_eq + theorem linarith.mul_eq + theorem linarith.mul_neg + theorem linarith.mul_nonpos + theorem linarith.mul_zero_eq + theorem linarith.nat_eq_subst + theorem linarith.nat_le_subst + theorem linarith.nat_lt_subst + theorem linarith.zero_mul_eq Added src/tactic/linarith/parsing.lean Added src/tactic/linarith/preprocessing.lean Added src/tactic/linarith/verification.lean Modified src/tactic/zify.lean Modified test/linarith.lean + theorem norm_eq_zero_iff + theorem norm_nonpos_left + theorem norm_nonpos_right 2020-06-24 09:30:51 194edc1 feat(ring_theory/localization): integral closure in field extension (#3096) Let `A` be an integral domain with field of fractions `K` and `L` a finite extension of `K`. This PR shows the integral closure of `A` in `L` has fraction field `L`. If those definitions existed, the corollary is that the ring of integers of a number field is a number ring. For this, we need two constructions on polynomials: * If `p` is a nonzero polynomial, `integral_normalization p` is a monic polynomial with roots `z * a` for `z` a root of `p` and `a` the leading coefficient of `p` * If `f` is the localization map from `A` to `K` and `p` has coefficients in `K`, then `f.integer_normalization p` is a polynomial with coefficients in `A` (think: `∀ i, is_integer (f.integer_normalization p).coeff i`) with the same roots as `p`. ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.coeff_ne_zero_of_eq_degree + theorem polynomial.degree_ne_of_nat_degree_ne + theorem polynomial.degree_pos_of_aeval_root + theorem polynomial.degree_pos_of_eval₂_root + theorem polynomial.eq_C_of_nat_degree_le_zero + theorem polynomial.eval₂_smul + theorem polynomial.integral_normalization_aeval_eq_zero + theorem polynomial.integral_normalization_coeff_degree + theorem polynomial.integral_normalization_coeff_nat_degree + theorem polynomial.integral_normalization_coeff_ne_degree + theorem polynomial.integral_normalization_coeff_ne_nat_degree + theorem polynomial.integral_normalization_eval₂_eq_zero + theorem polynomial.monic_integral_normalization +/- theorem polynomial.nat_degree_eq_of_degree_eq + theorem polynomial.nat_degree_pos_iff_degree_pos + theorem polynomial.nat_degree_pos_of_aeval_root + theorem polynomial.nat_degree_pos_of_eval₂_root + theorem polynomial.support_integral_normalization Modified src/ring_theory/algebraic.lean + theorem algebra.is_algebraic_of_finite + theorem exists_integral_multiple Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean + theorem fraction_map.comap_is_algebraic_iff + theorem fraction_map.integer_normalization_eq_zero_iff + def integral_closure.fraction_map_of_algebraic + def integral_closure.fraction_map_of_finite_extension + theorem localization_map.coeff_integer_normalization_mem_support + theorem localization_map.exist_integer_multiples_of_finset + theorem localization_map.integer_normalization_aeval_eq_zero + theorem localization_map.integer_normalization_coeff + theorem localization_map.integer_normalization_eval₂_eq_zero + theorem localization_map.integer_normalization_map_to_map + theorem localization_map.integer_normalization_spec + theorem localization_map.map_smul 2020-06-24 07:12:51 8ecf53d feat(order/filter/countable_Inter): `sup` and `inf` (#3154) ESTIMATED CHANGES Modified src/order/filter/countable_Inter.lean 2020-06-24 06:13:13 617b07e feat(uniform_space/separation): add separated_set (#3130) Also add documentation and simplify the proof of separated => t2 and add the converse. ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean +/- theorem uniform_space.completion.is_add_group_hom_extension Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean +/- def uniform_space.completion.extension_hom Modified src/topology/category/UniformSpace.lean +/- def CpltSepUniformSpace.of Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/separation.lean +/- theorem is_closed_diagonal + theorem t2_iff_is_closed_diagonal Modified src/topology/uniform_space/abstract_completion.lean +/- theorem abstract_completion.extend_map Modified src/topology/uniform_space/complete_separated.lean +/- theorem is_closed_of_is_complete Modified src/topology/uniform_space/completion.lean +/- theorem Cauchy.separated_pure_cauchy_injective +/- theorem uniform_space.completion.dense_embedding_coe +/- theorem uniform_space.completion.extension_map +/- theorem uniform_space.completion.uniform_embedding_coe Modified src/topology/uniform_space/pi.lean Modified src/topology/uniform_space/separation.lean + theorem eq_of_uniformity_inf_nhds + theorem eq_of_uniformity_inf_nhds_of_is_separated + theorem id_rel_sub_separation_relation + theorem is_closed_separation_rel + def is_separated + theorem is_separated_def' + theorem is_separated_def + theorem is_separated_iff_induced + theorem is_separated_of_separated_space - def separated +/- theorem separated_equiv + theorem separated_iff_t2 + def separated_space + theorem separation_rel_comap + theorem separation_rel_eq_inter_closure +/- theorem uniform_space.eq_of_separated_of_uniform_continuous +/- def uniform_space.separation_quotient.lift +/- theorem uniform_space.separation_quotient.lift_mk +/- theorem uniform_space.separation_quotient.uniform_continuous_lift + theorem univ_separated_iff Modified src/topology/uniform_space/uniform_embedding.lean 2020-06-24 00:48:46 985cce7 chore(scripts): update nolints.txt (#3156) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-24 00:18:26 d57ac08 feat(field_theory/separable): definition and basic properties (#3155) ESTIMATED CHANGES Added src/field_theory/separable.lean + theorem polynomial.separable.mul + theorem polynomial.separable.of_mul_left + theorem polynomial.separable.of_mul_right + def polynomial.separable + theorem polynomial.separable_X + theorem polynomial.separable_X_add_C + theorem polynomial.separable_def' + theorem polynomial.separable_def + theorem polynomial.separable_one Modified src/ring_theory/coprime.lean + theorem is_coprime.add_mul_left_left + theorem is_coprime.add_mul_left_left_iff + theorem is_coprime.add_mul_left_right + theorem is_coprime.add_mul_left_right_iff + theorem is_coprime.add_mul_right_left + theorem is_coprime.add_mul_right_left_iff + theorem is_coprime.add_mul_right_right + theorem is_coprime.add_mul_right_right_iff + theorem is_coprime.mul_add_left_left + theorem is_coprime.mul_add_left_left_iff + theorem is_coprime.mul_add_left_right + theorem is_coprime.mul_add_left_right_iff + theorem is_coprime.mul_add_right_left + theorem is_coprime.mul_add_right_left_iff + theorem is_coprime.mul_add_right_right + theorem is_coprime.mul_add_right_right_iff + theorem is_coprime.of_add_mul_left_left + theorem is_coprime.of_add_mul_left_right + theorem is_coprime.of_add_mul_right_left + theorem is_coprime.of_add_mul_right_right + theorem is_coprime.of_mul_add_left_left + theorem is_coprime.of_mul_add_left_right + theorem is_coprime.of_mul_add_right_left + theorem is_coprime.of_mul_add_right_right 2020-06-23 22:02:55 340d5a9 refactor(geometry/manifold/*): rename to charted_space and tangent_map (#3103) @PatrickMassot had asked some time ago if what is currently called `manifold` in mathlib could be renamed to `charted_space`, and in a recent PR he asked if `bundled_mfderiv` could be called `tangent_map`. Both changes make sense. They are implemented in this PR, together with several tiny improvements to the manifold library. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/convex/basic.lean Modified src/data/equiv/local_equiv.lean +/- theorem equiv.refl_to_local_equiv +/- theorem equiv.symm_to_local_equiv +/- theorem equiv.to_local_equiv_coe +/- theorem equiv.to_local_equiv_source +/- theorem equiv.to_local_equiv_symm_coe +/- theorem equiv.to_local_equiv_target +/- theorem equiv.trans_to_local_equiv +/- theorem local_equiv.coe_mk +/- theorem local_equiv.coe_symm_mk +/- theorem local_equiv.coe_trans +/- theorem local_equiv.coe_trans_symm + theorem local_equiv.image_inter_source_eq' + theorem local_equiv.image_inter_source_eq +/- theorem local_equiv.inv_fun_as_coe - theorem local_equiv.inv_image_eq_source_inter_preimage +/- theorem local_equiv.left_inv +/- theorem local_equiv.map_source +/- theorem local_equiv.map_target +/- theorem local_equiv.of_set_coe +/- theorem local_equiv.of_set_source +/- theorem local_equiv.of_set_symm +/- theorem local_equiv.of_set_target +/- theorem local_equiv.prod_coe +/- theorem local_equiv.prod_coe_symm +/- theorem local_equiv.prod_source + theorem local_equiv.prod_symm +/- theorem local_equiv.prod_target + theorem local_equiv.prod_trans +/- theorem local_equiv.refl_coe +/- theorem local_equiv.refl_restr_source +/- theorem local_equiv.refl_restr_target +/- theorem local_equiv.refl_source +/- theorem local_equiv.refl_symm +/- theorem local_equiv.refl_target +/- theorem local_equiv.refl_trans +/- theorem local_equiv.restr_coe +/- theorem local_equiv.restr_coe_symm +/- theorem local_equiv.restr_source +/- theorem local_equiv.restr_target +/- theorem local_equiv.restr_univ +/- theorem local_equiv.right_inv + theorem local_equiv.symm_image_eq_source_inter_preimage + theorem local_equiv.symm_image_inter_target_eq' + theorem local_equiv.symm_image_inter_target_eq +/- theorem local_equiv.symm_source +/- theorem local_equiv.symm_symm +/- theorem local_equiv.symm_target +/- theorem local_equiv.to_fun_as_coe +/- theorem local_equiv.trans_refl +/- theorem local_equiv.trans_source +/- theorem local_equiv.trans_target Modified src/data/monoid_algebra.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pnat/xgcd.lean Modified src/geometry/manifold/basic_smooth_bundle.lean +/- theorem basic_smooth_bundle_core.base_set +/- theorem basic_smooth_bundle_core.chart_source +/- theorem basic_smooth_bundle_core.chart_target +/- theorem basic_smooth_bundle_core.coe_chart_at_fst +/- theorem basic_smooth_bundle_core.coe_chart_at_symm_fst +/- theorem basic_smooth_bundle_core.mem_chart_source_iff +/- theorem basic_smooth_bundle_core.mem_chart_target_iff +/- theorem tangent_bundle_model_space_chart_at +/- theorem tangent_bundle_model_space_coe_chart_at +/- theorem tangent_bundle_model_space_coe_chart_at_symm Renamed src/geometry/manifold/manifold.lean to src/geometry/manifold/charted_space.lean +/- theorem chart_at_model_space_eq + def charted_space_core.local_homeomorph + theorem charted_space_core.open_source' + theorem charted_space_core.open_target + def charted_space_core.to_charted_space + structure charted_space_core - def manifold_core.local_homeomorph - theorem manifold_core.open_source' - theorem manifold_core.open_target - def manifold_core.to_manifold - structure manifold_core + theorem mem_maximal_atlas_iff +/- theorem model_space_atlas +/- def structomorph.refl + theorem structure_groupoid.chart_mem_maximal_atlas + theorem structure_groupoid.compatible + theorem structure_groupoid.compatible_of_mem_maximal_atlas + theorem structure_groupoid.eq_on_source + theorem structure_groupoid.id_mem + theorem structure_groupoid.le_iff + theorem structure_groupoid.locality + def structure_groupoid.maximal_atlas + theorem structure_groupoid.mem_maximal_atlas_of_mem_atlas + theorem structure_groupoid.symm + theorem structure_groupoid.trans Modified src/geometry/manifold/mfderiv.lean - def bundle_mfderiv - theorem bundle_mfderiv_chart - theorem bundle_mfderiv_chart_symm - theorem bundle_mfderiv_comp - theorem bundle_mfderiv_comp_at - theorem bundle_mfderiv_proj - theorem bundle_mfderiv_tangent_bundle_proj - def bundle_mfderiv_within - theorem bundle_mfderiv_within_comp_at - theorem bundle_mfderiv_within_eq_bundle_mfderiv - theorem bundle_mfderiv_within_proj - theorem bundle_mfderiv_within_subset - theorem bundle_mfderiv_within_tangent_bundle_proj - theorem bundle_mfderiv_within_univ +/- theorem has_mfderiv_within_at_univ +/- theorem mfderiv_const +/- theorem mfderiv_id +/- theorem mfderiv_within_univ + def tangent_map + theorem tangent_map_chart + theorem tangent_map_chart_symm + theorem tangent_map_comp + theorem tangent_map_comp_at + theorem tangent_map_proj + theorem tangent_map_tangent_bundle_proj + def tangent_map_within + theorem tangent_map_within_comp_at + theorem tangent_map_within_eq_tangent_map + theorem tangent_map_within_proj + theorem tangent_map_within_subset + theorem tangent_map_within_tangent_bundle_proj + theorem tangent_map_within_univ + theorem unique_mdiff_on_univ +/- def written_in_ext_chart_at +/- theorem written_in_ext_chart_model_space Modified src/geometry/manifold/real_instances.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean +/- def ext_chart_at +/- theorem ext_chart_at_to_inv +/- theorem ext_chart_model_space_eq_id +/- theorem mem_ext_chart_source +/- theorem model_with_corners.left_inv' +/- theorem model_with_corners.left_inv +/- theorem model_with_corners.mk_coe +/- theorem model_with_corners.mk_coe_symm +/- theorem model_with_corners.right_inv +/- theorem model_with_corners.target +/- theorem model_with_corners.to_local_equiv_coe +/- theorem model_with_corners.to_local_equiv_coe_symm +/- theorem model_with_corners_self_coe +/- theorem model_with_corners_self_coe_symm +/- theorem model_with_corners_self_local_equiv + theorem smooth_manifold_with_corners.chart_mem_maximal_atlas + theorem smooth_manifold_with_corners.compatible + theorem smooth_manifold_with_corners.compatible_of_mem_maximal_atlas + def smooth_manifold_with_corners.maximal_atlas + theorem smooth_manifold_with_corners.mem_maximal_atlas_of_mem_atlas Modified src/group_theory/monoid_localization.lean Modified src/linear_algebra/basis.lean Modified src/order/complete_boolean_algebra.lean Modified src/ring_theory/localization.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/transport.lean Modified src/topology/algebra/module.lean Modified src/topology/local_homeomorph.lean +/- theorem homeomorph.refl_to_local_homeomorph +/- theorem homeomorph.symm_to_local_homeomorph +/- theorem homeomorph.to_local_homeomorph_coe +/- theorem homeomorph.to_local_homeomorph_coe_symm +/- theorem homeomorph.to_local_homeomorph_source +/- theorem homeomorph.to_local_homeomorph_target +/- theorem homeomorph.trans_to_local_homeomorph +/- theorem local_homeomorph.coe_coe +/- theorem local_homeomorph.coe_coe_symm +/- theorem local_homeomorph.coe_trans +/- theorem local_homeomorph.coe_trans_symm + theorem local_homeomorph.image_eq_target_inter_inv_preimage + theorem local_homeomorph.image_inter_source_eq +/- theorem local_homeomorph.inv_fun_eq_coe +/- theorem local_homeomorph.left_inv +/- theorem local_homeomorph.map_source +/- theorem local_homeomorph.map_target +/- theorem local_homeomorph.mk_coe +/- theorem local_homeomorph.mk_coe_symm +/- theorem local_homeomorph.of_set_coe +/- theorem local_homeomorph.of_set_symm +/- theorem local_homeomorph.of_set_to_local_equiv +/- theorem local_homeomorph.prod_coe +/- theorem local_homeomorph.prod_coe_symm + theorem local_homeomorph.prod_symm +/- theorem local_homeomorph.prod_to_local_equiv + theorem local_homeomorph.prod_trans +/- theorem local_homeomorph.refl_coe +/- theorem local_homeomorph.refl_local_equiv +/- theorem local_homeomorph.refl_symm +/- theorem local_homeomorph.refl_trans +/- theorem local_homeomorph.restr_coe +/- theorem local_homeomorph.restr_coe_symm +/- theorem local_homeomorph.restr_open_to_local_equiv +/- theorem local_homeomorph.restr_to_local_equiv +/- theorem local_homeomorph.restr_univ +/- theorem local_homeomorph.right_inv + theorem local_homeomorph.symm_image_eq_source_inter_preimage + theorem local_homeomorph.symm_image_inter_target_eq +/- theorem local_homeomorph.symm_symm +/- theorem local_homeomorph.symm_to_local_equiv +/- theorem local_homeomorph.to_fun_eq_coe +/- theorem local_homeomorph.to_homeomorph_coe +/- theorem local_homeomorph.to_homeomorph_symm_coe +/- theorem local_homeomorph.trans_refl +/- theorem local_homeomorph.trans_to_local_equiv Modified src/topology/topological_fiber_bundle.lean +/- theorem bundle_trivialization.coe_coe +/- theorem bundle_trivialization.coe_fst +/- theorem bundle_trivialization.coe_mk +/- theorem topological_fiber_bundle_core.local_triv'_fst +/- theorem topological_fiber_bundle_core.local_triv'_inv_fst +/- theorem topological_fiber_bundle_core.local_triv_at_ext_to_local_homeomorph +/- theorem topological_fiber_bundle_core.local_triv_at_fst +/- theorem topological_fiber_bundle_core.local_triv_at_symm_fst +/- theorem topological_fiber_bundle_core.local_triv_fst +/- theorem topological_fiber_bundle_core.local_triv_symm_fst +/- theorem topological_fiber_bundle_core.mem_local_triv'_source +/- theorem topological_fiber_bundle_core.mem_local_triv'_target +/- theorem topological_fiber_bundle_core.mem_local_triv_at_source +/- theorem topological_fiber_bundle_core.mem_local_triv_source +/- theorem topological_fiber_bundle_core.mem_local_triv_target +/- theorem topological_fiber_bundle_core.mem_triv_change_source +/- def topological_fiber_bundle_core.proj Modified test/equiv_rw.lean 2020-06-23 17:57:24 bc3ed51 chore(data/set/finite): use dot notation (#3151) Rename: * `finite_insert` to `finite.insert`; * `finite_union` to `finite.union`; * `finite_subset` to `finite.subset`; * `finite_image` to `finite.image`; * `finite_dependent_image` to `finite.dependent_image`; * `finite_map` to `finite.map`; * `finite_image_iff_on` to `finite_image_iff`; * `finite_preimage` to `finite.preimage`; * `finite_sUnion` to `finite.sUnion`; * `finite_bUnion` to `finite.bUnion`, merge with `finite_bUnion'` and use `f : Π i ∈ s, set α` instead of `f : ι → set α`; * `finite_prod` to `finite.prod`; * `finite_seq` to `finite.seq`; * `finite_subsets_of_finite` to `finite.finite_subsets`; * `bdd_above_finite` to `finite.bdd_above`; * `bdd_above_finite_union` to `finite.bdd_above_bUnion`; * `bdd_below_finite` to `finite.bdd_below`; * `bdd_below_finite_union` to `finite.bdd_below_bUnion`. Delete * `finite_of_finite_image_on`, was a copy of `finite_of_fintie_image`; * `finite_bUnion'`: merge with `finite_bUnion` into `finite.bUnion`. ESTIMATED CHANGES Modified src/algebra/pointwise.lean Modified src/analysis/analytic/composition.lean Modified src/data/analysis/filter.lean Modified src/data/analysis/topology.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/real/hyperreal.lean Modified src/data/set/finite.lean - theorem finset.bdd_above - theorem finset.bdd_below - theorem set.bdd_above_finite - theorem set.bdd_above_finite_union - theorem set.bdd_below_finite - theorem set.bdd_below_finite_union + theorem set.finite.bUnion + theorem set.finite.bdd_above_bUnion + theorem set.finite.bdd_below_bUnion + theorem set.finite.dependent_image + theorem set.finite.finite_subsets + theorem set.finite.image + theorem set.finite.insert + theorem set.finite.map + theorem set.finite.preimage + theorem set.finite.prod + theorem set.finite.sUnion + theorem set.finite.seq + theorem set.finite.subset + theorem set.finite.union - theorem set.finite_bUnion' - theorem set.finite_bUnion - theorem set.finite_dependent_image - theorem set.finite_image + theorem set.finite_image_iff - theorem set.finite_image_iff_on - theorem set.finite_insert - theorem set.finite_map +/- theorem set.finite_of_finite_image - theorem set.finite_of_finite_image_on - theorem set.finite_preimage - theorem set.finite_prod - theorem set.finite_sUnion - theorem set.finite_seq - theorem set.finite_subset - theorem set.finite_subsets_of_finite - theorem set.finite_union Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean Modified src/measure_theory/integration.lean - theorem measure_theory.simple_func.measurable Modified src/measure_theory/simple_func_dense.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/filter/cofinite.lean Modified src/order/filter/ultrafilter.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/topology/algebra/ordered.lean Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-06-23 17:15:59 26918a0 feat(topology/metric_space/baire): define filter `residual` (#3149) Fixes #2265. Also define a typeclass `countable_Inter_filter` and prove that both `residual` and `μ.ae` have this property. ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_ball_iff Added src/order/filter/countable_Inter.lean + theorem countable_Inter_mem_sets + theorem countable_bInter_mem_sets + theorem countable_sInter_mem_sets + theorem eventually_countable_ball + theorem eventually_countable_forall Modified src/topology/basic.lean + theorem dense_inter_of_open_left + theorem dense_inter_of_open_right Modified src/topology/instances/ennreal.lean + theorem emetric.is_closed_ball Modified src/topology/metric_space/baire.lean + theorem eventually_residual + theorem mem_residual + def residual Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean + theorem emetric.nhds_basis_closed_eball 2020-06-23 16:11:19 62e1364 chore(linear_algebra/nonsingular_inverse): `matrix.nonsing_inv` no longer requires base ring to carry `has_inv` instance (#3136) ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem is_unit.unit_spec + theorem units.inv_eq_of_mul_eq_one + theorem units.inv_mul' + theorem units.inv_unique + theorem units.mul_inv' Modified src/algebra/invertible.lean + theorem invertible_unique Modified src/linear_algebra/nonsingular_inverse.lean + theorem matrix.is_unit_det_transpose + theorem matrix.is_unit_iff_is_unit_det + theorem matrix.is_unit_nonsing_inv_det +/- theorem matrix.mul_nonsing_inv - def matrix.nonsing_inv + theorem matrix.nonsing_inv_apply + theorem matrix.nonsing_inv_det +/- theorem matrix.nonsing_inv_mul + theorem matrix.nonsing_inv_nonsing_inv - theorem matrix.nonsing_inv_val +/- theorem matrix.transpose_nonsing_inv 2020-06-23 14:59:38 ea665e7 fix(algebra/ordered*): add norm_cast attribute (#3132) ESTIMATED CHANGES Modified src/algebra/group_power.lean Modified src/algebra/ordered_group.lean +/- theorem with_bot.coe_add + theorem with_bot.coe_bit0 + theorem with_bot.coe_bit1 + theorem with_bot.coe_eq_zero +/- theorem with_bot.coe_one +/- theorem with_bot.coe_zero +/- theorem with_top.coe_add + theorem with_top.coe_bit0 + theorem with_top.coe_bit1 + theorem with_top.coe_eq_one + theorem with_top.coe_eq_zero + theorem with_top.coe_one + theorem with_top.coe_zero +/- theorem with_top.zero_lt_coe Modified src/algebra/ordered_ring.lean - theorem with_top.coe_eq_zero - theorem with_top.coe_zero Modified src/order/bounded_lattice.lean +/- theorem with_bot.coe_le_coe +/- theorem with_top.coe_le_coe Modified src/ring_theory/unique_factorization_domain.lean 2020-06-23 13:58:52 d287d34 refactor(order/filter/basic): define `filter.eventually_eq` (#3134) * Define `eventually_eq` (`f =^f[l] g`) and `eventually_le` (`f ≤^f[l] g`). * Use new notation and definitions in some files. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/data/padics/hensel.lean Modified src/measure_theory/indicator_function.lean Modified src/order/filter/at_top_bot.lean Modified src/order/filter/basic.lean + theorem filter.eventually.filter_mono + theorem filter.eventually_eq.comp₂ + theorem filter.eventually_eq.div + theorem filter.eventually_eq.fun_comp + theorem filter.eventually_eq.inv + theorem filter.eventually_eq.mul + theorem filter.eventually_eq.refl + theorem filter.eventually_eq.rw + theorem filter.eventually_eq.sub + theorem filter.eventually_eq.symm + theorem filter.eventually_eq.trans + def filter.eventually_eq - theorem filter.map_cong + theorem filter.map_congr Modified src/topology/continuous_on.lean +/- theorem continuous_on.congr +/- theorem continuous_on_congr 2020-06-23 08:40:54 421ed70 chore(topology/metric_space/baire): review (#3146) * Simplify some proofs in `topology/metric_space/baire`; * Allow dependency on `hi : i ∈ S` in some `bUnion`/`bInter` lemmas. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/data/set/basic.lean + theorem set.eq_univ_of_subset Modified src/data/set/countable.lean +/- theorem set.countable.bUnion Modified src/data/set/lattice.lean +/- theorem set.bInter_eq_Inter +/- theorem set.bUnion_eq_Union +/- theorem set.sInter_bUnion +/- theorem set.sInter_eq_Inter +/- theorem set.sInter_range +/- theorem set.sUnion_bUnion +/- theorem set.sUnion_eq_Union +/- theorem set.sUnion_range Modified src/measure_theory/measure_space.lean Modified src/topology/basic.lean Modified src/topology/metric_space/baire.lean +/- theorem dense_bInter_of_Gδ + theorem dense_inter_of_Gδ + theorem is_Gδ.inter + theorem is_Gδ_Inter +/- theorem is_Gδ_Inter_of_open + theorem is_Gδ_bInter +/- theorem is_Gδ_bInter_of_open + theorem is_Gδ_univ 2020-06-23 08:40:52 159766e chore(topology/metric_space/basic): rename `uniform_continuous_dist'` (#3145) * rename `uniform_continuous_dist'` to `uniform_continuous_dist`; * rename `uniform_continuous_dist` to `uniform_continuous.dist`; * add `uniform_continuous.nndist`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem uniform_continuous.dist + theorem uniform_continuous.nndist - theorem uniform_continuous_dist' +/- theorem uniform_continuous_dist Modified src/topology/metric_space/completion.lean 2020-06-23 07:31:42 02d880b perf(tactic/cache): call `freeze_local_instances` after `reset_instance_cache` (#3128) Calling `unfreeze_local_instances` unfreezes the local instances of the main goal, and thereby disables the type-class cache (for this goal). It is therefore advisable to call `freeze_local_instances` afterwards as soon as possible. (The type-class cache will still be trashed when you switch between goals with different local instances, but that's only half as bad as disabling the cache entirely.) To this end this PR contains several changes: * The `reset_instance_cache` function (and `resetI` tactic) immediately call `freeze_local_instances`. * The `unfreezeI` tactic is removed. Instead we introduce `unfreezingI { tac }`, which only temporarily unfreezes the local instances while executing `tac`. Try to keep `tac` as small as possible. * We add `substI h` and `casesI t` tactics (which are short for `unfreezingI { subst h }` and `unfreezingI { casesI t }`, resp.) as abbreviations for the most common uses of `unfreezingI`. * Various other uses of `unfreeze_local_instances` are eliminated. Avoid use of `unfreeze_local_instances` if possible. Use the `unfreezing tac` combinator instead (the non-interactive version of `unfreezingI`). See discussion at https://github.com/leanprover-community/mathlib/pull/3113#issuecomment-647150256 ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/category_theory/abelian/basic.lean Modified src/category_theory/category/default.lean Modified src/category_theory/closed/cartesian.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/simple.lean Modified src/control/bitraversable/instances.lean Modified src/control/traversable/equiv.lean Modified src/data/analysis/filter.lean Modified src/data/fin.lean Modified src/data/fintype/card.lean Modified src/data/seq/computation.lean Modified src/data/seq/parallel.lean Modified src/data/set/countable.lean Modified src/data/set/finite.lean Modified src/data/zmod/basic.lean Modified src/field_theory/finite.lean Modified src/group_theory/order_of_element.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/multilinear.lean Modified src/logic/embedding.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/order/basic.lean Modified src/order/bounded_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/copy.lean Modified src/order/lattice.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/game/short.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_notation.lean Modified src/tactic/cache.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/lint/simp.lean Modified src/tactic/trunc_cases.lean Modified src/topology/metric_space/basic.lean Added test/instance_cache.lean 2020-06-23 04:53:57 c0d74a3 refactor(group/perm) bundle sign of a perm as a monoid_hom (#3143) We're trying to bundle everything right? ESTIMATED CHANGES Modified src/group_theory/perm/sign.lean +/- theorem equiv.perm.eq_sign_of_surjective_hom +/- def equiv.perm.sign 2020-06-23 03:11:26 23d6141 chore(algebra/ring,char_zero): generalize some lemmas (#3141) `mul_eq_zero` etc only need `[mul_zero_class]` and `[no_zero_divisors]`. In particular, they don't need `has_neg`. Also deduplicate with `group_with_zero.*`. ESTIMATED CHANGES Modified src/algebra/char_zero.lean Modified src/algebra/field.lean - theorem division_ring.mul_ne_zero - theorem division_ring.one_div_mul_one_div +/- theorem mul_inv' - theorem mul_ne_zero_comm Modified src/algebra/group_with_zero.lean +/- theorem div_eq_zero_iff +/- theorem div_ne_zero_iff - theorem mul_eq_zero' - theorem mul_eq_zero_iff' - theorem mul_ne_zero'' - theorem mul_ne_zero_comm'' - theorem mul_ne_zero_iff Modified src/algebra/group_with_zero_power.lean Modified src/algebra/linear_ordered_comm_group_with_zero.lean Modified src/algebra/ring.lean + theorem mul_eq_zero_comm - theorem mul_ne_zero' +/- theorem mul_ne_zero - theorem mul_ne_zero_comm' + theorem mul_ne_zero_comm + theorem mul_ne_zero_iff +/- theorem mul_self_eq_zero +/- theorem zero_eq_mul_self Modified src/data/rat/cast.lean Modified src/data/real/nnreal.lean Modified src/data/support.lean - theorem function.support_mul' +/- theorem function.support_mul Modified src/geometry/euclidean.lean Modified src/number_theory/quadratic_reciprocity.lean 2020-06-23 00:34:00 52abfcf chore(scripts): update nolints.txt (#3144) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-22 20:52:37 b562575 feat(data/finset): add card_insert_of_mem (#3137) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.card_insert_of_mem 2020-06-22 19:11:00 36e3b9f chore(*): update to Lean 3.16.4c (#3139) ESTIMATED CHANGES Modified leanpkg.toml 2020-06-22 19:10:58 67844a8 feat(order/complete_lattice): complete lattice of Sup (#3138) Construct a complete lattice from a least upper bound function. From a Xena group discussion. ESTIMATED CHANGES Modified src/order/complete_lattice.lean + def complete_lattice_of_Sup 2020-06-22 18:22:19 f059336 fix(algebra/pi_instances): improve definitions of `pi.*` (#3116) The new `test/pi_simp.lean` fails with current `master`. Note that this is a workaround, not a proper fix for `tactic.pi_instance`. See also [Zulip chat](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/.60id.60.20in.20pi_instances) Also use `@[to_additive]` to generate additive definitions, add ordered multiplicative monoids, and add `semimodule (Π i, f i) (Π, g i)`. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/pi_instances.lean - theorem pi.add_apply +/- theorem pi.inv_apply +/- theorem pi.mul_apply - theorem pi.neg_apply +/- theorem pi.one_apply + theorem pi.smul_apply' +/- theorem pi.smul_apply - theorem pi.zero_apply Modified src/topology/metric_space/pi_Lp.lean Added test/pi_simp.lean + def test.eval_default + theorem test.eval_default_one 2020-06-22 16:12:16 54cc126 feat(data/finset,data/fintype,algebra/big_operators): some more lemmas (#3124) Add some `finset`, `fintype` and `algebra.big_operators` lemmas that were found useful in proving things related to affine independent families. (In all cases where results are proved for products, and then derived for sums where possible using `to_additive`, it was the result for sums that I actually had a use for. In the case of `eq_one_of_card_le_one_of_prod_eq_one` and `eq_zero_of_card_le_one_of_sum_eq_zero`, `to_additive` couldn't be used because it also tries to convert the `1` in `s.card ≤ 1` to `0`.) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.eq_of_card_le_one_of_prod_eq + theorem finset.eq_of_card_le_one_of_sum_eq + theorem finset.eq_one_of_prod_eq_one + theorem finset.prod_erase Modified src/data/finset.lean + theorem finset.eq_of_mem_of_not_mem_erase Modified src/data/fintype/basic.lean + theorem finset.card_le_one_of_subsingleton Modified src/data/fintype/card.lean + theorem fintype.eq_of_subsingleton_of_prod_eq 2020-06-22 13:19:55 86dcd5c feat(analysis/calculus): C^1 implies strictly differentiable (#3119) Over the reals, a continuously differentiable function is strictly differentiable. Supporting material: Add a standard mean-value-theorem-related trick as its own lemma, and refactor another proof (in `calculus/extend_deriv`) to use that lemma. Other material: an _equality_ (rather than _inequality_) version of the mean value theorem for domains; slight refactor of `normed_space/dual`. ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean - theorem has_fderiv_at_boundary_of_tendsto_fderiv_aux Modified src/analysis/calculus/mean_value.lean + theorem convex.norm_image_sub_le_of_norm_fderiv_le' + theorem convex.norm_image_sub_le_of_norm_fderiv_within_le' + theorem convex.norm_image_sub_le_of_norm_has_fderiv_within_le' + theorem domain_mvt + theorem strict_fderiv_of_cont_diff Modified src/analysis/calculus/times_cont_diff.lean + theorem has_ftaylor_series_up_to_on.has_strict_fderiv_at + theorem times_cont_diff.has_strict_fderiv_at + theorem times_cont_diff_on.has_strict_fderiv_at Modified src/analysis/normed_space/dual.lean + theorem normed_space.norm_le_dual_bound Modified src/topology/continuous_on.lean + theorem nhds_of_nhds_within_of_nhds 2020-06-22 11:57:27 46a8894 feat(linear_algebra/affine_space): affine combinations for finsets (#3122) Extend the definitions of affine combinations over a `fintype` to the case of sums over a `finset` of an arbitrary index type (which is appropriate for use cases such as affine independence of a possibly infinite family of points). Also change to have only bundled versions of `weighted_vsub_of_point` and `weighted_vsub`, following review, so avoiding duplicating parts of `linear_map` API. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean - def affine_space.affine_combination - theorem affine_space.affine_combination_eq_weighted_vsub_of_point_vadd_of_sum_eq_one - theorem affine_space.affine_combination_vsub - def affine_space.weighted_vsub - theorem affine_space.weighted_vsub_add - theorem affine_space.weighted_vsub_eq_weighted_vsub_of_point_of_sum_eq_zero - theorem affine_space.weighted_vsub_neg - def affine_space.weighted_vsub_of_point - theorem affine_space.weighted_vsub_of_point_add - theorem affine_space.weighted_vsub_of_point_eq_of_sum_eq_zero - def affine_space.weighted_vsub_of_point_linear - theorem affine_space.weighted_vsub_of_point_linear_apply - theorem affine_space.weighted_vsub_of_point_neg - theorem affine_space.weighted_vsub_of_point_smul - theorem affine_space.weighted_vsub_of_point_sub - theorem affine_space.weighted_vsub_of_point_vadd_eq_of_sum_eq_one - theorem affine_space.weighted_vsub_of_point_zero - theorem affine_space.weighted_vsub_smul - theorem affine_space.weighted_vsub_sub - theorem affine_space.weighted_vsub_vadd_affine_combination - theorem affine_space.weighted_vsub_zero + def finset.affine_combination + theorem finset.affine_combination_eq_weighted_vsub_of_point_vadd_of_sum_eq_one + theorem finset.affine_combination_vsub + def finset.weighted_vsub + theorem finset.weighted_vsub_eq_weighted_vsub_of_point_of_sum_eq_zero + def finset.weighted_vsub_of_point + theorem finset.weighted_vsub_of_point_apply + theorem finset.weighted_vsub_of_point_eq_of_sum_eq_zero + theorem finset.weighted_vsub_of_point_vadd_eq_of_sum_eq_one + theorem finset.weighted_vsub_vadd_affine_combination 2020-06-22 10:46:14 105fa17 feat(linear_algebra/matrix): trace of an endomorphism independent of basis (#3125) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.of_injective_apply Modified src/linear_algebra/basic.lean + theorem linear_equiv.arrow_congr_trans + theorem linear_equiv.symm_trans_apply + def linear_map.fun_congr_left + theorem linear_map.fun_congr_left_apply + theorem linear_map.fun_congr_left_comp + theorem linear_map.fun_congr_left_id + theorem linear_map.fun_congr_left_symm + def linear_map.fun_left + theorem linear_map.fun_left_apply + theorem linear_map.fun_left_comp + theorem linear_map.fun_left_id Modified src/linear_algebra/basis.lean + theorem is_basis.range Modified src/linear_algebra/matrix.lean + theorem linear_equiv_matrix'_apply + theorem linear_equiv_matrix_range + theorem linear_map.to_matrix_of_equiv + def linear_map.trace + def linear_map.trace_aux + theorem linear_map.trace_aux_def + theorem linear_map.trace_aux_eq' + theorem linear_map.trace_aux_eq + theorem linear_map.trace_aux_range + theorem linear_map.trace_eq_matrix_trace + theorem linear_map.trace_mul_comm + theorem matrix.linear_equiv_matrix_comp + theorem matrix.linear_equiv_matrix_mul + theorem matrix.to_lin_of_equiv 2020-06-22 08:01:57 068aaaf chore(data/finmap): nolint (#3131) ESTIMATED CHANGES Modified src/data/finmap.lean +/- def finmap.disjoint +/- theorem finmap.insert_insert +/- theorem finmap.insert_singleton_eq +/- theorem finmap.lookup_list_to_finmap +/- theorem finmap.lookup_union_left_of_not_in +/- theorem finmap.mem_list_to_finmap +/- def finmap.singleton +/- theorem finmap.to_finmap_cons +/- theorem finmap.to_finmap_nil +/- theorem finmap.union_cancel +/- def list.to_finmap 2020-06-22 07:22:10 3f9b52a refactor(ring_theory/*): make PID class a predicate (#3114) ESTIMATED CHANGES Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/splitting_field.lean Modified src/number_theory/sum_two_squares.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideals.lean + theorem ideal.factors_decreasing Modified src/ring_theory/principal_ideal_domain.lean +/- theorem is_prime.to_maximal_ideal - theorem principal_ideal_domain.associates_irreducible_iff_prime - theorem principal_ideal_domain.factors_decreasing - theorem principal_ideal_domain.factors_spec - theorem principal_ideal_domain.irreducible_iff_prime - theorem principal_ideal_domain.is_maximal_of_irreducible + theorem principal_ideal_ring.associates_irreducible_iff_prime + theorem principal_ideal_ring.factors_spec + theorem principal_ideal_ring.irreducible_iff_prime + theorem principal_ideal_ring.is_maximal_of_irreducible 2020-06-22 00:33:41 6aba958 chore(scripts): update nolints.txt (#3133) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-21 21:04:24 d59adc1 chore(data/list/alist): nolint (#3129) ESTIMATED CHANGES Modified src/data/list/alist.lean +/- def alist.disjoint 2020-06-21 19:44:08 5b5ff79 fix(tactic/delta_instance): bug in computing pi arity (#3127) ESTIMATED CHANGES Modified src/tactic/core.lean 2020-06-21 19:09:48 eff9ed3 feat(topology/uniform_space): some basic lemmas (#3123) This is the second PR on the road to Heine. It contains various elementary lemmas about uniform spaces. ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem closure_eq_uniformity + theorem comp_comp_symm_mem_uniformity_sets + theorem comp_rel_mono + theorem comp_symm_mem_uniformity_sets + theorem mem_comp_comp + theorem mem_comp_of_mem_ball + theorem subset_comp_self + theorem subset_comp_self_of_mem_uniformity + theorem symmetric_rel_inter + theorem uniform_space.ball_mem_nhds + theorem uniform_space.has_basis_nhds + theorem uniform_space.has_basis_nhds_prod + theorem uniform_space.mem_nhds_iff + theorem uniform_space.mem_nhds_iff_symm + theorem uniformity_comap + theorem uniformity_has_basis_closed + theorem uniformity_has_basis_closure 2020-06-21 17:25:22 7073c8b feat(tactic/cancel_denoms): try to remove numeral denominators (#3109) ESTIMATED CHANGES Added src/tactic/cancel_denoms.lean + theorem cancel_factors.add_subst + theorem cancel_factors.cancel_factors_eq + theorem cancel_factors.cancel_factors_eq_div + theorem cancel_factors.cancel_factors_le + theorem cancel_factors.cancel_factors_lt + theorem cancel_factors.div_subst + theorem cancel_factors.mul_subst + theorem cancel_factors.neg_subst + theorem cancel_factors.sub_subst Modified src/tactic/default.lean Modified src/tactic/interactive.lean Added test/cancel_denoms.lean 2020-06-21 16:23:00 b7d056a feat(tactic/zify): move nat propositions to int (#3108) ESTIMATED CHANGES Modified src/tactic/default.lean Modified src/tactic/lift.lean Modified src/tactic/norm_cast.lean Added src/tactic/zify.lean + theorem int.coe_nat_ne_coe_nat_iff Added test/zify.lean 2020-06-21 15:04:19 d097161 fix(tactic/set): use provided type for new variable (#3126) closes #3111 ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Added test/set.lean + def S + def T + def p + def u + def v 2020-06-20 19:21:52 8729fe2 feat(tactic/simps): option `trace.simps.verbose` prints generated lemmas (#3121) ESTIMATED CHANGES Modified src/tactic/simps.lean 2020-06-20 15:10:42 e8ff6ff feat(*): random lemmas about sets and filters (#3118) This is the first in a series of PR that will culminate in a proof of Heine's theorem (a continuous function from a compact separated uniform space to any uniform space is uniformly continuous). I'm slicing a 600 lines files into PRs. This first PR is only about sets, filters and a bit of topology. Uniform spaces stuff will come later. ESTIMATED CHANGES Modified src/data/set/basic.lean + def set.diagonal + theorem set.inter_compl_nonempty_iff + theorem set.preimage_coe_coe_diagonal Modified src/order/filter/bases.lean + theorem filter.comap_has_basis + theorem filter.has_basis.prod' + theorem filter.has_basis.sInter_sets + theorem filter.has_basis_self Modified src/order/filter/basic.lean + theorem filter.inf_principal_ne_bot_iff + theorem filter.subtype_coe_map_comap + theorem filter.tendsto.prod_map Modified src/topology/algebra/ordered.lean Modified src/topology/continuous_on.lean + theorem continuous_on.prod_map + theorem continuous_within_at.prod_map 2020-06-20 11:22:01 cd9e8b5 fix(tactic/group): bugfix for inverse of 1 (#3117) The new group tactic made goals like ```lean example {G : Type*} [group G] (x : G) (h : x = 1) : x = 1 := begin group, -- x * 1 ^(-1) = 1 exact h, end ``` worse, presumably from trying to move the rhs to the lhs we end up with `x * 1^(-1) = 1`, we add a couple more lemmas to try to fix this. ESTIMATED CHANGES Modified src/tactic/group.lean Modified test/group.lean 2020-06-19 13:54:55 103743e doc(tactic/core,uniform_space/basic): minor doc fixes (#3115) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/topology/uniform_space/basic.lean 2020-06-19 04:18:45 8e44b9f feat(algebra/big_operators): `prod_apply_dite` and `prod_dite` (#3110) Generalize `prod_apply_ite` and `prod_ite` to dependent if-then-else. Since the proofs require `prod_attach`, it needed to move to an earlier line. Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/prod_ite_eq ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_apply_dite + theorem finset.prod_dite 2020-06-19 00:33:30 56a580d chore(scripts): update nolints.txt (#3112) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-18 22:26:13 ed44541 chore(*): regularize naming using injective (#3071) This begins some of the naming regularization discussed at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/naming.20of.20injectivity.20lemmas Some general rules: 1. Lemmas should have `injective` in the name iff they have `injective` in the conclusion 2. `X_injective` is preferable to `injective_X`. 3. Unidirectional `inj` lemmas should be dropped in favour of bidirectional ones. Mostly, this PR tried to fix the names of lemmas that conclude `injective` (also `surjective` and `bijective`, but they seemed to be much better already). A lot of the changes are from `injective_X` to `X_injective` style ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/algebra/big_operators.lean Modified src/algebra/direct_limit.lean - theorem ring.direct_limit.of_inj + theorem ring.direct_limit.of_injective Modified src/algebra/direct_sum.lean - theorem direct_sum.mk_inj + theorem direct_sum.mk_injective - theorem direct_sum.of_inj + theorem direct_sum.of_injective Modified src/algebra/field_power.lean + theorem fpow_injective - theorem injective_fpow Modified src/algebra/group/type_tags.lean - theorem of_add_inj + theorem of_add_injective - theorem of_mul_inj + theorem of_mul_injective - theorem to_add_inj + theorem to_add_injective - theorem to_mul_inj + theorem to_mul_injective Modified src/algebra/module.lean + theorem submodule.coe_injective +/- theorem submodule.coe_set_eq - theorem submodule.ext' +/- theorem submodule.ext Modified src/algebra/opposites.lean Modified src/algebra/pi_instances.lean - theorem prod.injective_inl - theorem prod.injective_inr + theorem prod.inl_injective + theorem prod.inr_injective Modified src/algebra/ring.lean - theorem ring_hom.coe_add_monoid_hom_inj + theorem ring_hom.coe_add_monoid_hom_injective - theorem ring_hom.coe_monoid_hom_inj + theorem ring_hom.coe_monoid_hom_injective Modified src/analysis/analytic/basic.lean - theorem formal_multilinear_series.change_origin_summable_aux_j_inj + theorem formal_multilinear_series.change_origin_summable_aux_j_injective Modified src/analysis/analytic/composition.lean Modified src/analysis/normed_space/point_reflection.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/fully_faithful.lean - theorem category_theory.functor.injectivity + theorem category_theory.functor.map_injective Modified src/category_theory/graded_object.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/opposites.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/types.lean Modified src/category_theory/yoneda.lean Modified src/combinatorics/composition.lean - theorem composition.embedding_inj + theorem composition.embedding_injective Modified src/computability/partrec_code.lean + theorem nat.partrec.code.const_inj + theorem nat.partrec.code.curry_inj - theorem nat.partrec.code.injective_const - theorem nat.partrec.code.injective_curry +/- theorem nat.partrec.code.smn Modified src/control/fold.lean Modified src/data/dfinsupp.lean - theorem dfinsupp.mk_inj + theorem dfinsupp.mk_injective Modified src/data/equiv/list.lean Modified src/data/equiv/mul_add.lean - theorem equiv.point_reflection_fixed_iff_of_bit0_inj + theorem equiv.point_reflection_fixed_iff_of_bit0_injective Modified src/data/fin.lean + theorem fin.cast_le_injective + theorem fin.cast_succ_injective - theorem fin.injective_cast_le - theorem fin.injective_cast_succ - theorem fin.injective_succ - theorem fin.injective_val + theorem fin.succ_injective + theorem fin.val_injective Modified src/data/finset.lean - theorem finset.injective_pi_cons + theorem finset.pi_cons_injective Modified src/data/finsupp.lean - theorem finsupp.injective_map_domain - theorem finsupp.injective_single + theorem finsupp.map_domain_injective + theorem finsupp.single_injective Modified src/data/int/basic.lean Modified src/data/list/basic.lean - theorem list.cons_inj' +/- theorem list.cons_inj + theorem list.cons_injective - theorem list.injective_length - theorem list.injective_length_iff - theorem list.injective_map_iff + theorem list.length_injective + theorem list.length_injective_iff + theorem list.map_injective_iff - theorem list.mem_map_of_inj + theorem list.mem_map_of_injective Modified src/data/multiset.lean - theorem multiset.injective_map - theorem multiset.injective_pi_cons + theorem multiset.map_injective - theorem multiset.mem_map_of_inj + theorem multiset.mem_map_of_injective + theorem multiset.pi_cons_injective Modified src/data/mv_polynomial.lean - theorem mv_polynomial.injective_rename + theorem mv_polynomial.rename_injective Modified src/data/nat/cast.lean Modified src/data/opposite.lean - theorem opposite.op_inj + theorem opposite.op_injective - theorem opposite.unop_inj + theorem opposite.unop_injective Modified src/data/option/basic.lean - theorem option.injective_map - theorem option.injective_some + theorem option.map_injective + theorem option.some_injective Modified src/data/pnat/factors.lean - theorem prime_multiset.coe_nat_inj + theorem prime_multiset.coe_nat_injective - theorem prime_multiset.coe_pnat_inj + theorem prime_multiset.coe_pnat_injective Modified src/data/real/cardinality.lean + theorem cardinal.cantor_function_injective - theorem cardinal.injective_cantor_function Modified src/data/real/hyperreal.lean Modified src/data/set/basic.lean - theorem function.surjective.injective_preimage + theorem function.surjective.preimage_injective + theorem set.image_injective - theorem set.injective_image Modified src/data/set/lattice.lean - theorem set.bijective_sigma_to_Union - theorem set.injective_sigma_to_Union + theorem set.sigma_to_Union_bijective + theorem set.sigma_to_Union_injective + theorem set.sigma_to_Union_surjective - theorem set.surjective_sigma_to_Union Modified src/data/setoid/basic.lean - theorem setoid.injective_ker_lift + theorem setoid.ker_lift_injective Modified src/data/sigma/basic.lean - theorem injective_sigma_map - theorem injective_sigma_mk + theorem sigma_map_injective + theorem sigma_mk_injective Modified src/deprecated/subgroup.lean - theorem is_group_hom.inj_iff_trivial_ker - theorem is_group_hom.inj_of_trivial_ker + theorem is_group_hom.injective_iff_trivial_ker + theorem is_group_hom.injective_of_trivial_ker - theorem is_group_hom.trivial_ker_of_inj + theorem is_group_hom.trivial_ker_of_injective Modified src/group_theory/congruence.lean - theorem con.injective_ker_lift + theorem con.ker_lift_injective Modified src/group_theory/order_of_element.lean - theorem conj_inj + theorem conj_injective Modified src/group_theory/quotient_group.lean - theorem quotient_group.injective_ker_lift + theorem quotient_group.ker_lift_injective Modified src/group_theory/sylow.lean - theorem sylow.mk_vector_prod_eq_one_inj + theorem sylow.mk_vector_prod_eq_one_injective Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean - theorem dim_eq_injective + theorem dim_eq_of_injective + theorem dim_eq_of_surjective - theorem dim_eq_surjective - theorem dim_le_injective + theorem dim_le_of_injective + theorem dim_le_of_surjective - theorem dim_le_surjective Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/logic/embedding.lean - theorem function.embedding.inj + theorem function.embedding.injective Modified src/order/boolean_algebra.lean - theorem compl_inj + theorem compl_injective Modified src/order/complete_boolean_algebra.lean Modified src/order/filter/basic.lean - theorem filter.pure_inj + theorem filter.pure_injective Modified src/order/filter/filter_product.lean + theorem filter.filter_product.coe_inj - theorem filter.filter_product.coe_injective - theorem filter.filter_product.of_inj + theorem filter.filter_product.of_injective Modified src/order/order_iso.lean + theorem order_embedding.coe_fn_inj - theorem order_embedding.coe_fn_injective - theorem order_embedding.inj + theorem order_embedding.injective Modified src/ring_theory/algebra.lean - theorem alg_hom.coe_add_monoid_hom_inj + theorem alg_hom.coe_add_monoid_hom_injective - theorem alg_hom.coe_monoid_hom_inj + theorem alg_hom.coe_monoid_hom_injective - theorem alg_hom.coe_ring_hom_inj + theorem alg_hom.coe_ring_hom_injective Modified src/ring_theory/ideal_operations.lean - theorem ideal.bijective_quotient_inf_to_pi_quotient + theorem ideal.quotient_inf_to_pi_quotient_bijective - theorem ring_hom.inj_iff_ker_eq_bot + theorem ring_hom.injective_iff_ker_eq_bot Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/set_theory/cardinal.lean - theorem cardinal.mk_range_eq_of_inj + theorem cardinal.mk_range_eq_of_injective Modified src/set_theory/ordinal.lean - theorem ordinal.injective_typein + theorem ordinal.typein_injective Modified src/set_theory/schroeder_bernstein.lean - theorem function.embedding.injective_min + theorem function.embedding.min_injective Modified src/topology/algebra/open_subgroup.lean + theorem open_subgroup.coe_injective - theorem open_subgroup.ext' +/- theorem open_subgroup.ext Modified src/topology/constructions.lean Modified src/topology/uniform_space/completion.lean - theorem Cauchy.injective_separated_pure_cauchy + theorem Cauchy.separated_pure_cauchy_injective 2020-06-18 21:08:16 e060c93 feat(category_theory/discrete): build equivalence from equiv (#3099) * renames all the construction building functors/transformations out of discrete categories as `discrete.functor`, `discrete.nat_trans`, `discrete.nat_iso`, rather than names using `of_function`. * adds `def discrete.equivalence {I J : Type u₁} (e : I ≃ J) : discrete I ≌ discrete J`, * removes some redundant definitions * breaks some long lines, * and adds doc-strings. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean Modified src/category_theory/discrete_category.lean + def category_theory.discrete.equivalence + def category_theory.discrete.functor + theorem category_theory.discrete.functor_map + theorem category_theory.discrete.functor_obj - def category_theory.discrete.lift + def category_theory.discrete.nat_iso + def category_theory.discrete.nat_trans + theorem category_theory.discrete.nat_trans_app - def category_theory.functor.of_function - theorem category_theory.functor.of_function_map - theorem category_theory.functor.of_function_obj - def category_theory.nat_iso.of_isos - def category_theory.nat_trans.of_function - theorem category_theory.nat_trans.of_function_app - def category_theory.nat_trans.of_homs - theorem category_theory.nat_trans.of_homs_app Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/biproducts.lean +/- def category_theory.limits.biproduct.ι +/- def category_theory.limits.biproduct.π +/- def category_theory.limits.biproduct +/- def category_theory.limits.biproduct_iso Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/constructions/preserve_binary_products.lean Modified src/category_theory/limits/shapes/products.lean +/- def category_theory.limits.cofan +/- def category_theory.limits.fan +/- def category_theory.limits.pi.lift +/- def category_theory.limits.pi.π +/- def category_theory.limits.pi_obj +/- def category_theory.limits.sigma.desc +/- def category_theory.limits.sigma.ι +/- def category_theory.limits.sigma_obj Modified src/category_theory/limits/shapes/zero.lean 2020-06-18 21:08:14 73caeaa perf(tactic/linarith): implement redundancy test to reduce number of comparisons (#3079) This implements a redundancy check in `linarith` which can drastically reduce the size of the sets of comparisons that the tactic needs to deal with. `linarith` iteratively transforms sets of inequalities to equisatisfiable sets by eliminating a single variable. If there are `n` comparisons in the set, we expect `O(n^2)` comparisons after one elimination step. Many of these comparisons are redundant, i.e. removing them from the set does not change its satisfiability. Deciding redundancy is expensive, but there are cheap approximations that are very useful in practice. This PR tests comparisons for non-minimal history (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.51.493&rep=rep1&type=pdf p.13, theorem 7). Non-minimal history implies redundancy. ESTIMATED CHANGES Modified src/analysis/special_functions/trigonometric.lean +/- theorem real.sin_le_sin_of_le_of_le_pi_div_two +/- theorem real.sin_lt_sin_of_le_of_le_pi_div_two Modified src/meta/rb_map.lean Modified src/tactic/linarith.lean + def linarith.comp.vars + structure linarith.comp + def linarith.comp_source.to_string + inductive linarith.comp_source + def linarith.linexp.vars 2020-06-18 20:37:24 21bf873 refactor(category_theory/abelian): use has_finite_products (#2917) This doesn't go nearly as far as I wanted. Really I'd like to factor out `additive`, which is a `preadditive` category with all finite biproducts, and then layer `abelian` on top of that (with (co)kernels and every epi/mono normal). I can't do that immediately, because: 1. we don't provide the instances from `has_finite_biproducts` to `has_finite_(co)products` 2. we don't define the preadditive version of finite biproducts (we only did the binary ones) 3. hence we don't show that in a preadditive category finite products give rise to finite biproducts @TwoFX, @b-mehta, if either of you are interested in doing any of these, that would be great. I'll hopefully get to them eventually. ESTIMATED CHANGES Modified src/category_theory/abelian/basic.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/zero.lean + def category_theory.limits.has_zero_object.has_initial - def category_theory.limits.has_zero_object.has_initial_of_has_zero_object + def category_theory.limits.has_zero_object.has_terminal - def category_theory.limits.has_zero_object.has_terminal_of_has_zero_object 2020-06-18 13:45:55 53af714 chore(*): update to lean 3.16.3 (#3107) The changes to mathlib are from https://github.com/leanprover-community/lean/pull/321 which removed some redundant lemmas: * `int.of_nat_inj` -> `int.of_nat.inj` * `int.neg_succ_of_nat_inj` -> `int.neg_succ_of_nat.inj` * `nat.succ_inj` -> `nat.succ.inj` ESTIMATED CHANGES Modified leanpkg.toml Modified src/analysis/normed_space/finite_dimension.lean Modified src/data/complex/exponential.lean Modified src/data/finset.lean Modified src/data/fintype/basic.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/zip.lean Modified src/data/nat/basic.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/xgcd.lean Modified src/tactic/alias.lean Modified src/topology/algebra/infinite_sum.lean Modified test/lint.lean 2020-06-18 11:39:55 24792be chore(data/finset): minor review (#3105) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/data/equiv/basic.lean +/- theorem equiv.nonempty_iff_nonempty Modified src/data/finset.lean +/- theorem finset.coe_erase +/- theorem finset.coe_filter +/- theorem finset.coe_image +/- theorem finset.coe_insert +/- theorem finset.coe_map +/- theorem finset.coe_nonempty +/- theorem finset.coe_sdiff +/- theorem finset.coe_ssubset +/- theorem finset.coe_subset +/- theorem finset.comp_inf_eq_inf_comp - theorem finset.lt_inf + theorem finset.lt_inf_iff +/- theorem finset.ssubset_iff Modified src/data/multiset.lean + theorem multiset.ndinter_subset_left + theorem multiset.subset_ndunion_right Modified src/data/set/basic.lean + theorem set.ssubset_iff_insert Modified src/data/set/lattice.lean + theorem set.bot_eq_empty + theorem set.inf_eq_inter + theorem set.le_eq_subset + theorem set.lt_eq_ssubset + theorem set.sup_eq_union Modified src/logic/function/basic.lean +/- def function.injective.decidable_eq Modified src/order/basic.lean - theorem monotone.order_dual Modified src/order/lattice.lean + theorem monotone.map_inf + theorem monotone.map_sup 2020-06-18 09:54:38 eb5b7fb fix(tactic/linarith): don't fail trying to preprocess irrelevant hypotheses (#3104) ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2020-06-18 01:11:41 b91909e chore(category_theory/closed/cartesian): style (#3098) Just breaking long lines, and using braces in a multi-goal proof, for a recently added file. (#2894) ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean +/- theorem category_theory.ev_coev 2020-06-17 19:57:11 b5baf55 feat(algebra/linear_ordered_comm_group_with_zero) define linear_ordered_comm_group_with_zero (#3072) ESTIMATED CHANGES Added src/algebra/linear_ordered_comm_group_with_zero.lean + theorem div_le_div' + theorem inv_le_inv'' + theorem inv_lt_inv'' + theorem le_mul_inv_of_mul_le + theorem le_of_le_mul_right + theorem le_zero_iff + theorem mul_inv_le_of_le_mul + theorem mul_inv_lt_of_lt_mul' + theorem mul_lt_mul'''' + theorem mul_lt_right' + theorem ne_zero_of_lt + theorem not_lt_zero' + theorem zero_le' + theorem zero_le_one' + theorem zero_lt_iff + theorem zero_lt_one' + theorem zero_lt_unit Modified src/algebra/ordered_group.lean + theorem div_le_div_iff' Modified src/data/real/nnreal.lean 2020-06-17 19:10:21 48c4f40 refactor(measure_theory): make `volume` a bundled measure (#3075) This way we can `apply` and `rw` lemmas about `measure`s without introducing a `volume`-specific version. ESTIMATED CHANGES Modified src/data/set/disjointed.lean + theorem pairwise.pairwise_on + theorem set.pairwise_on.on_injective Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.measure.integral_zero Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean + theorem measure_theory.ae_all_iff + theorem measure_theory.ae_eq_refl + theorem measure_theory.ae_eq_symm + theorem measure_theory.ae_eq_trans + theorem measure_theory.ae_iff + theorem measure_theory.ae_of_all - def measure_theory.all_ae - theorem measure_theory.all_ae_all_iff - theorem measure_theory.all_ae_and_iff - theorem measure_theory.all_ae_congr - theorem measure_theory.all_ae_eq_refl - theorem measure_theory.all_ae_eq_symm - theorem measure_theory.all_ae_eq_trans - theorem measure_theory.all_ae_iff - theorem measure_theory.all_ae_imp_distrib_left - theorem measure_theory.all_ae_of_all - theorem measure_theory.all_ae_or_distrib_left - theorem measure_theory.all_ae_or_distrib_right + theorem measure_theory.exists_nonempty_inter_of_measure_univ_lt_sum_measure + theorem measure_theory.exists_nonempty_inter_of_measure_univ_lt_tsum_measure - theorem measure_theory.exists_nonempty_inter_of_volume_univ_lt_sum_volume - theorem measure_theory.exists_nonempty_inter_of_volume_univ_lt_tsum_volume - def measure_theory.measure.a_e + def measure_theory.measure.ae - theorem measure_theory.measure.mem_a_e_iff + theorem measure_theory.measure_bUnion_finset + theorem measure_theory.measure_zero_iff_ae_nmem + theorem measure_theory.mem_ae_iff + theorem measure_theory.sum_measure_le_measure_univ - theorem measure_theory.sum_volume_le_volume_univ + theorem measure_theory.tsum_measure_le_measure_univ - theorem measure_theory.tsum_volume_le_volume_univ - def measure_theory.volume - theorem measure_theory.volume_Union - theorem measure_theory.volume_Union_le - theorem measure_theory.volume_Union_null - theorem measure_theory.volume_bUnion - theorem measure_theory.volume_bUnion_finset - theorem measure_theory.volume_diff - theorem measure_theory.volume_empty - theorem measure_theory.volume_mono - theorem measure_theory.volume_mono_null - theorem measure_theory.volume_sUnion - theorem measure_theory.volume_union - theorem measure_theory.volume_union_le - theorem measure_theory.volume_union_null - theorem measure_theory.volume_zero_iff_all_ae_nmem Modified src/measure_theory/set_integral.lean Modified src/measure_theory/simple_func_dense.lean 2020-06-17 12:07:34 0736c95 chore(order/filter/basic): move some parts to new files (#3087) Move `at_top`/`at_bot`, `cofinite`, and `ultrafilter` to new files. ESTIMATED CHANGES Modified src/algebra/continued_fractions/computation/correctness_terminating.lean Modified src/data/analysis/filter.lean Added src/order/filter/at_top_bot.lean + theorem filter.Iio_mem_at_bot + theorem filter.Ioi_mem_at_top + def filter.at_bot + def filter.at_top + theorem filter.at_top_ne_bot + theorem filter.eventually.exists_forall_of_at_top + theorem filter.eventually_at_top + theorem filter.exists_le_of_tendsto_at_top + theorem filter.exists_lt_of_tendsto_at_top + theorem filter.extraction_of_eventually_at_top + theorem filter.extraction_of_frequently_at_top' + theorem filter.extraction_of_frequently_at_top + theorem filter.frequently.forall_exists_of_at_top + theorem filter.frequently_at_top' + theorem filter.frequently_at_top + theorem filter.frequently_high_scores + theorem filter.high_scores + theorem filter.map_add_at_top_eq_nat + theorem filter.map_at_top_eq + theorem filter.map_at_top_eq_of_gc + theorem filter.map_at_top_inf_ne_bot_iff + theorem filter.map_div_at_top_eq_nat + theorem filter.map_sub_at_top_eq_nat + theorem filter.mem_at_bot + theorem filter.mem_at_top + theorem filter.mem_at_top_sets + theorem filter.monotone.tendsto_at_top_finset + theorem filter.prod_at_top_at_top_eq + theorem filter.prod_map_at_top_eq + theorem filter.strict_mono_subseq_of_id_le + theorem filter.strict_mono_subseq_of_tendsto_at_top + theorem filter.strict_mono_tendsto_at_top + theorem filter.tendsto_add_at_top_iff_nat + theorem filter.tendsto_add_at_top_nat + theorem filter.tendsto_at_top' + theorem filter.tendsto_at_top + theorem filter.tendsto_at_top_add_const_left + theorem filter.tendsto_at_top_add_const_right + theorem filter.tendsto_at_top_add_left_of_le' + theorem filter.tendsto_at_top_add_left_of_le + theorem filter.tendsto_at_top_add_nonneg_left' + theorem filter.tendsto_at_top_add_nonneg_left + theorem filter.tendsto_at_top_add_nonneg_right' + theorem filter.tendsto_at_top_add_nonneg_right + theorem filter.tendsto_at_top_add_right_of_le' + theorem filter.tendsto_at_top_add_right_of_le + theorem filter.tendsto_at_top_at_bot + theorem filter.tendsto_at_top_at_top + theorem filter.tendsto_at_top_at_top_of_monotone + theorem filter.tendsto_at_top_embedding + theorem filter.tendsto_at_top_mono' + theorem filter.tendsto_at_top_mono + theorem filter.tendsto_at_top_of_add_bdd_above_left' + theorem filter.tendsto_at_top_of_add_bdd_above_left + theorem filter.tendsto_at_top_of_add_bdd_above_right' + theorem filter.tendsto_at_top_of_add_bdd_above_right + theorem filter.tendsto_at_top_of_add_const_left + theorem filter.tendsto_at_top_of_add_const_right + theorem filter.tendsto_at_top_principal + theorem filter.tendsto_finset_image_at_top_at_top + theorem filter.tendsto_finset_range + theorem filter.tendsto_sub_at_top_nat Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean - theorem filter.Iio_mem_at_bot - theorem filter.Ioi_mem_at_top - def filter.at_bot - def filter.at_top - theorem filter.at_top_ne_bot - def filter.cofinite - theorem filter.cofinite_ne_bot - theorem filter.compl_mem_hyperfilter_of_finite - theorem filter.eventually.exists_forall_of_at_top - theorem filter.eventually_at_top - theorem filter.exists_le_of_tendsto_at_top - theorem filter.exists_lt_of_tendsto_at_top - theorem filter.exists_ultrafilter - theorem filter.exists_ultrafilter_iff - theorem filter.extraction_of_eventually_at_top - theorem filter.extraction_of_frequently_at_top' - theorem filter.extraction_of_frequently_at_top - theorem filter.frequently.forall_exists_of_at_top - theorem filter.frequently_at_top' - theorem filter.frequently_at_top - theorem filter.frequently_cofinite_iff_infinite - theorem filter.frequently_high_scores - theorem filter.high_scores - theorem filter.hyperfilter_le_cofinite - def filter.is_ultrafilter - theorem filter.is_ultrafilter_hyperfilter - theorem filter.le_of_ultrafilter - theorem filter.map_add_at_top_eq_nat - theorem filter.map_at_top_eq - theorem filter.map_at_top_eq_of_gc - theorem filter.map_at_top_inf_ne_bot_iff - theorem filter.map_div_at_top_eq_nat - theorem filter.map_sub_at_top_eq_nat - theorem filter.mem_at_bot - theorem filter.mem_at_top - theorem filter.mem_at_top_sets - theorem filter.mem_cofinite - theorem filter.mem_hyperfilter_of_finite_compl - theorem filter.mem_of_finite_Union_ultrafilter - theorem filter.mem_of_finite_sUnion_ultrafilter - theorem filter.mem_or_compl_mem_of_ultrafilter - theorem filter.mem_or_mem_of_ultrafilter - theorem filter.monotone.tendsto_at_top_finset - theorem filter.nat.cofinite_eq_at_top - theorem filter.nmem_hyperfilter_of_finite - theorem filter.prod_at_top_at_top_eq - theorem filter.prod_map_at_top_eq - theorem filter.set.infinite_iff_frequently_cofinite - theorem filter.strict_mono_subseq_of_id_le - theorem filter.strict_mono_subseq_of_tendsto_at_top - theorem filter.strict_mono_tendsto_at_top - theorem filter.sup_of_ultrafilters - theorem filter.tendsto_add_at_top_iff_nat - theorem filter.tendsto_add_at_top_nat - theorem filter.tendsto_at_top' - theorem filter.tendsto_at_top - theorem filter.tendsto_at_top_add_const_left - theorem filter.tendsto_at_top_add_const_right - theorem filter.tendsto_at_top_add_left_of_le' - theorem filter.tendsto_at_top_add_left_of_le - theorem filter.tendsto_at_top_add_nonneg_left' - theorem filter.tendsto_at_top_add_nonneg_left - theorem filter.tendsto_at_top_add_nonneg_right' - theorem filter.tendsto_at_top_add_nonneg_right - theorem filter.tendsto_at_top_add_right_of_le' - theorem filter.tendsto_at_top_add_right_of_le - theorem filter.tendsto_at_top_at_bot - theorem filter.tendsto_at_top_at_top - theorem filter.tendsto_at_top_at_top_of_monotone - theorem filter.tendsto_at_top_embedding - theorem filter.tendsto_at_top_mono' - theorem filter.tendsto_at_top_mono - theorem filter.tendsto_at_top_of_add_bdd_above_left' - theorem filter.tendsto_at_top_of_add_bdd_above_left - theorem filter.tendsto_at_top_of_add_bdd_above_right' - theorem filter.tendsto_at_top_of_add_bdd_above_right - theorem filter.tendsto_at_top_of_add_const_left - theorem filter.tendsto_at_top_of_add_const_right - theorem filter.tendsto_at_top_principal - theorem filter.tendsto_finset_image_at_top_at_top - theorem filter.tendsto_finset_range - theorem filter.tendsto_iff_ultrafilter - theorem filter.tendsto_sub_at_top_nat - def filter.ultrafilter.bind - theorem filter.ultrafilter.eq_iff_val_le_val - def filter.ultrafilter.map - def filter.ultrafilter.pure - def filter.ultrafilter - theorem filter.ultrafilter_bind - theorem filter.ultrafilter_iff_compl_mem_iff_not_mem - theorem filter.ultrafilter_map - theorem filter.ultrafilter_of_le - theorem filter.ultrafilter_of_spec - theorem filter.ultrafilter_of_ultrafilter - theorem filter.ultrafilter_pure - theorem filter.ultrafilter_ultrafilter_of - theorem filter.ultrafilter_unique Added src/order/filter/cofinite.lean + def filter.cofinite + theorem filter.cofinite_ne_bot + theorem filter.frequently_cofinite_iff_infinite + theorem filter.mem_cofinite + theorem nat.cofinite_eq_at_top + theorem set.infinite_iff_frequently_cofinite Modified src/order/filter/filter_product.lean Added src/order/filter/ultrafilter.lean + theorem filter.compl_mem_hyperfilter_of_finite + theorem filter.exists_ultrafilter + theorem filter.exists_ultrafilter_iff + theorem filter.hyperfilter_le_cofinite + def filter.is_ultrafilter + theorem filter.is_ultrafilter_hyperfilter + theorem filter.le_of_ultrafilter + theorem filter.mem_hyperfilter_of_finite_compl + theorem filter.mem_of_finite_Union_ultrafilter + theorem filter.mem_of_finite_sUnion_ultrafilter + theorem filter.mem_or_compl_mem_of_ultrafilter + theorem filter.mem_or_mem_of_ultrafilter + theorem filter.nmem_hyperfilter_of_finite + theorem filter.sup_of_ultrafilters + theorem filter.tendsto_iff_ultrafilter + def filter.ultrafilter.bind + theorem filter.ultrafilter.eq_iff_val_le_val + def filter.ultrafilter.map + def filter.ultrafilter.pure + def filter.ultrafilter + theorem filter.ultrafilter_bind + theorem filter.ultrafilter_iff_compl_mem_iff_not_mem + theorem filter.ultrafilter_map + theorem filter.ultrafilter_of_le + theorem filter.ultrafilter_of_spec + theorem filter.ultrafilter_of_ultrafilter + theorem filter.ultrafilter_pure + theorem filter.ultrafilter_ultrafilter_of + theorem filter.ultrafilter_unique Modified src/order/liminf_limsup.lean Modified src/topology/basic.lean 2020-06-17 11:06:54 077cd7c feat(algebra/category/Algebra): basic setup for category of bundled R-algebras (#3047) Just boilerplate. If I don't run out of enthusiasm I'll do tensor product of R-algebras soon. (#3050) ESTIMATED CHANGES Added src/algebra/category/Algebra/basic.lean + theorem Algebra.coe_comp + theorem Algebra.id_apply + def Algebra.of + theorem Algebra.of_apply + def Algebra.of_self_iso + structure Algebra + def alg_equiv.to_Algebra_iso + def alg_equiv_iso_Algebra_iso + def category_theory.iso.to_alg_equiv Modified src/algebra/category/Module/basic.lean - def linear_equiv_iso_Group_iso + def linear_equiv_iso_Module_iso Modified src/ring_theory/algebra.lean + theorem alg_equiv.coe_fun_injective + theorem alg_equiv.coe_ring_equiv_injective + theorem alg_equiv.ext 2020-06-17 09:57:50 54441b5 feat(algebra/group_action_hom): define equivariant maps (#2866) ESTIMATED CHANGES Added src/algebra/group_action_hom.lean + theorem distrib_mul_action_hom.coe_fn_coe' + theorem distrib_mul_action_hom.coe_fn_coe + def distrib_mul_action_hom.comp + theorem distrib_mul_action_hom.comp_apply + theorem distrib_mul_action_hom.comp_id + theorem distrib_mul_action_hom.ext + theorem distrib_mul_action_hom.ext_iff + theorem distrib_mul_action_hom.id_apply + theorem distrib_mul_action_hom.id_comp + theorem distrib_mul_action_hom.map_add + theorem distrib_mul_action_hom.map_neg + theorem distrib_mul_action_hom.map_smul + theorem distrib_mul_action_hom.map_sub + theorem distrib_mul_action_hom.map_zero + structure distrib_mul_action_hom + def mul_action_hom.comp + theorem mul_action_hom.comp_apply + theorem mul_action_hom.comp_id + theorem mul_action_hom.ext + theorem mul_action_hom.ext_iff + theorem mul_action_hom.id_apply + theorem mul_action_hom.id_comp + theorem mul_action_hom.map_smul + def mul_action_hom.to_quotient + theorem mul_action_hom.to_quotient_apply + structure mul_action_hom + theorem mul_semiring_action_hom.coe_fn_coe' + theorem mul_semiring_action_hom.coe_fn_coe + def mul_semiring_action_hom.comp + theorem mul_semiring_action_hom.comp_apply + theorem mul_semiring_action_hom.comp_id + theorem mul_semiring_action_hom.ext + theorem mul_semiring_action_hom.ext_iff + theorem mul_semiring_action_hom.id_apply + theorem mul_semiring_action_hom.id_comp + theorem mul_semiring_action_hom.map_add + theorem mul_semiring_action_hom.map_mul + theorem mul_semiring_action_hom.map_neg + theorem mul_semiring_action_hom.map_one + theorem mul_semiring_action_hom.map_smul + theorem mul_semiring_action_hom.map_sub + theorem mul_semiring_action_hom.map_zero + structure mul_semiring_action_hom 2020-06-17 03:12:21 e40de30 chore(category_theory/closed): move one thing to monoidal closed and fix naming (#3090) Move one of the CCC defs to MCC as an example, and make the naming consistent. ESTIMATED CHANGES Modified src/category_theory/closed/cartesian.lean + def category_theory.cartesian_closed.curry + def category_theory.cartesian_closed.uncurry - def category_theory.is_cartesian_closed.curry - def category_theory.is_cartesian_closed.uncurry +/- def category_theory.terminal_exponentiable Modified src/category_theory/closed/monoidal.lean + def category_theory.unit_closed Modified src/category_theory/monoidal/category.lean 2020-06-17 00:45:09 a19dca6 chore(scripts): update nolints.txt (#3091) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-16 19:33:00 e3c9fd8 feat(topology): sequential compactness (#3061) This is the long overdue PR bringing Bolzano-Weierstrass to mathlib. I'm sorry it's a bit large. I did use a couple of preliminary PRs, that one is really about converging subsequences, but supporting material is spread in many files. ESTIMATED CHANGES Modified src/data/nat/basic.lean + def nat.strong_rec_on' + theorem nat.strong_rec_on_beta' Modified src/data/set/finite.lean + theorem set.seq_of_forall_finite_exists Modified src/data/set/lattice.lean + theorem set.bUnion_mono + theorem set.bUnion_subset_bUnion Modified src/order/basic.lean + theorem strict_mono.id_le Modified src/order/filter/bases.lean + theorem filter.is_countably_generated.subseq_tendsto Modified src/order/filter/basic.lean + theorem filter.exists_le_of_tendsto_at_top + theorem filter.exists_lt_of_tendsto_at_top + theorem filter.extraction_of_eventually_at_top + theorem filter.extraction_of_frequently_at_top' + theorem filter.extraction_of_frequently_at_top + theorem filter.frequently_high_scores + theorem filter.frequently_of_forall + theorem filter.high_scores + theorem filter.strict_mono_subseq_of_id_le + theorem filter.strict_mono_subseq_of_tendsto_at_top + theorem filter.strict_mono_tendsto_at_top Modified src/tactic/monotonicity/lemmas.lean Modified src/topology/bases.lean + theorem topological_space.first_countable_topology.tendsto_subseq Modified src/topology/metric_space/basic.lean + theorem metric.ball_eq_ball' + theorem metric.ball_eq_ball + theorem metric.bounded_closure_of_bounded + theorem metric.finite_approx_of_totally_bounded +/- theorem metric.totally_bounded_of_finite_discretization Modified src/topology/sequences.lean + theorem compact.seq_compact + theorem compact.tendsto_subseq' + theorem compact.tendsto_subseq + theorem compact_space.tendsto_subseq + theorem lebesgue_number_lemma_seq + theorem metric.compact_iff_seq_compact + theorem metric.compact_space_iff_seq_compact_space + theorem seq_compact.lebesgue_number_lemma_of_metric + theorem seq_compact.subseq_of_frequently_in + theorem seq_compact.totally_bounded + def seq_compact + theorem seq_compact_space.tendsto_subseq + theorem tendsto_subseq_of_bounded + theorem tendsto_subseq_of_frequently_bounded + theorem uniform_space.compact_space_iff_seq_compact_space Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq.mem_entourage + theorem totally_bounded_of_forall_symm 2020-06-16 17:58:48 a478f91 chore(algebra/ring): move `add_mul_self_eq` to `comm_semiring` (#3089) Also use `alias` instead of `def ... := @...` to make linter happy. Fixes https://github.com/leanprover-community/lean/issues/232 ESTIMATED CHANGES Modified src/algebra/ring.lean - def dvd.trans - def dvd_of_mul_left_eq - def dvd_of_mul_right_eq 2020-06-16 17:08:01 ae6bf56 feat(ring_theory/tensor_product): tensor product of algebras (#3050) The R-algebra structure on the tensor product of two R-algebras. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.coe_coe +/- theorem linear_equiv.coe_to_equiv + theorem linear_equiv.inv_fun_apply + theorem linear_equiv.mk_apply + theorem linear_equiv.to_fun_apply Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.comm_tmul Modified src/ring_theory/algebra.lean + theorem alg_equiv.coe_alg_hom - theorem alg_equiv.coe_to_alg_equiv + theorem alg_equiv.inv_fun_apply + theorem alg_equiv.mk_apply + def alg_equiv.of_alg_hom + theorem alg_equiv.to_fun_apply +/- theorem alg_hom.ext + theorem alg_hom.ext_iff Added src/ring_theory/tensor_product.lean + def algebra.tensor_product.alg_equiv_of_linear_equiv_tensor_product + theorem algebra.tensor_product.alg_equiv_of_linear_equiv_tensor_product_apply + def algebra.tensor_product.alg_equiv_of_linear_equiv_triple_tensor_product + theorem algebra.tensor_product.alg_equiv_of_linear_equiv_triple_tensor_product_apply + def algebra.tensor_product.alg_hom_of_linear_map_tensor_product + theorem algebra.tensor_product.algebra_map_apply + theorem algebra.tensor_product.assoc_aux_1 + theorem algebra.tensor_product.assoc_aux_2 + theorem algebra.tensor_product.comm_tmul + def algebra.tensor_product.congr + theorem algebra.tensor_product.congr_apply + theorem algebra.tensor_product.congr_symm_apply + theorem algebra.tensor_product.ext + def algebra.tensor_product.include_left + def algebra.tensor_product.include_right + theorem algebra.tensor_product.lid_tmul + def algebra.tensor_product.map + theorem algebra.tensor_product.map_tmul + def algebra.tensor_product.mul + theorem algebra.tensor_product.mul_apply + theorem algebra.tensor_product.mul_assoc' + theorem algebra.tensor_product.mul_assoc + def algebra.tensor_product.mul_aux + theorem algebra.tensor_product.mul_aux_apply + theorem algebra.tensor_product.mul_one + theorem algebra.tensor_product.mul_tmul + theorem algebra.tensor_product.one_def + theorem algebra.tensor_product.one_mul + theorem algebra.tensor_product.rid_tmul + def algebra.tensor_product.tensor_algebra_map 2020-06-16 06:49:06 a432a3a feat(analysis/convex): Carathéodory's convexity theorem (#2960) ``` theorem caratheodory (s : set E) : convex_hull s = ⋃ (t : finset E) (w : ↑t ⊆ s) (b : t.card ≤ findim ℝ E + 1), convex_hull ↑t ``` and more explicitly ``` theorem eq_center_mass_card_dim_succ_of_mem_convex_hull (s : set E) (x : E) (h : x ∈ convex_hull s) : ∃ (t : finset E) (w : ↑t ⊆ s) (b : t.card ≤ findim ℝ E + 1) (f : E → ℝ), (∀ y ∈ t, 0 ≤ f y) ∧ t.sum f = 1 ∧ t.center_mass f id = x ``` ESTIMATED CHANGES Added src/analysis/convex/caratheodory.lean + theorem caratheodory.mem_convex_hull_erase + theorem caratheodory.shrink' + theorem caratheodory.shrink + theorem caratheodory.step + theorem convex_hull_eq_union + theorem convex_hull_subset_union + theorem eq_center_mass_card_le_dim_succ_of_mem_convex_hull + theorem eq_pos_center_mass_card_le_dim_succ_of_mem_convex_hull 2020-06-16 04:03:38 b51028f chore(linear_algebra/finite_dimensional): lin-indep lemma typos (#3086) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean 2020-06-16 02:35:24 e087174 feat(linear_algebra/finite_dimensional): bases given by finsets (#3041) In some cases, it might be more straightforward working with finsets of the vector space instead of indexed types or carrying around a proof of set.finite. Also provide a lemma on equal dimension and basis cardinality lemma that uses a finset basis. ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.exists_is_basis_finset + theorem finite_dimensional.findim_eq_card_finset_basis + theorem finite_dimensional.of_finset_basis 2020-06-15 23:58:09 a796008 feat(category_theory): cartesian closed categories (#2894) Cartesian closed categories, from my topos project. ESTIMATED CHANGES Added src/category_theory/closed/cartesian.lean + def category_theory.binary_product_exponentiable + def category_theory.cartesian_closed + def category_theory.cartesian_closed_of_equiv + def category_theory.coev + theorem category_theory.coev_ev + theorem category_theory.curry_eq + theorem category_theory.curry_eq_iff + theorem category_theory.curry_id_eq_coev + theorem category_theory.curry_injective + theorem category_theory.curry_natural_left + theorem category_theory.curry_natural_right + theorem category_theory.curry_uncurry + theorem category_theory.eq_curry_iff + def category_theory.ev + theorem category_theory.ev_coev + def category_theory.exp.adjunction + def category_theory.exp + def category_theory.exp_comparison + theorem category_theory.exp_comparison_natural_left + theorem category_theory.exp_comparison_natural_right + def category_theory.exp_terminal_iso_self + def category_theory.exponentiable + def category_theory.internal_hom + def category_theory.internalize_hom + def category_theory.is_cartesian_closed.curry + def category_theory.is_cartesian_closed.uncurry + def category_theory.mul_zero + def category_theory.pow_zero + def category_theory.pre + theorem category_theory.pre_id + theorem category_theory.pre_map + theorem category_theory.pre_post_comm + def category_theory.prod_coprod_distrib + def category_theory.terminal_exponentiable + theorem category_theory.uncurry_curry + theorem category_theory.uncurry_eq + theorem category_theory.uncurry_id_eq_ev + theorem category_theory.uncurry_injective + theorem category_theory.uncurry_natural_left + theorem category_theory.uncurry_natural_right + def category_theory.zero_mul Added src/category_theory/closed/monoidal.lean Modified src/category_theory/epi_mono.lean + def category_theory.is_iso_of_epi_of_split_mono + def category_theory.is_iso_of_mono_of_split_epi Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.inv_prod_comparison_map_fst + theorem category_theory.limits.inv_prod_comparison_map_snd + theorem category_theory.limits.prod_comparison_inv_natural Modified src/category_theory/monoidal/category.lean + def category_theory.monoidal_category.tensor_left + def category_theory.monoidal_category.tensor_left_tensor + theorem category_theory.monoidal_category.tensor_left_tensor_hom_app + theorem category_theory.monoidal_category.tensor_left_tensor_inv_app + def category_theory.monoidal_category.tensor_right + def category_theory.monoidal_category.tensor_right_tensor + theorem category_theory.monoidal_category.tensor_right_tensor_hom_app + theorem category_theory.monoidal_category.tensor_right_tensor_inv_app Modified src/category_theory/monoidal/of_has_finite_products.lean + theorem category_theory.monoidal_of_has_finite_coproducts.tensor_hom + theorem category_theory.monoidal_of_has_finite_coproducts.tensor_obj + theorem category_theory.monoidal_of_has_finite_products.tensor_hom + theorem category_theory.monoidal_of_has_finite_products.tensor_obj 2020-06-15 20:59:03 25e414d feat(tactic/linarith): nlinarith tactic (#2637) Based on Coq's [nra](https://coq.inria.fr/refman/addendum/micromega.html#coq:tacn.nra) tactic, and requested on [Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/nonlinear.20linarith). ESTIMATED CHANGES Modified src/data/bool.lean Modified src/data/list/defs.lean + def list.mmap'_diag Modified src/tactic/linarith.lean + theorem linarith.mul_zero_eq + theorem linarith.zero_mul_eq Modified test/linarith.lean - theorem test6 2020-06-15 16:49:19 2e752e1 feat(tactic/group): group normalization tactic (#3062) A tactic to normalize expressions in multiplicative groups. ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem mul_gpow_neg_one + theorem mul_gpow_self + theorem mul_self_gpow Modified src/tactic/default.lean Added src/tactic/group.lean + theorem tactic.group.gpow_trick + theorem tactic.group.gpow_trick_one' + theorem tactic.group.gpow_trick_one + theorem tactic.group.gpow_trick_sub Added test/group.lean + def commutator3 + def commutator 2020-06-15 15:45:46 aa35f36 feat(analysis/hofer): Hofer's lemma (#3064) Adds Hofer's lemma about complete metric spaces, with supporting material. ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem div_pow_le + theorem pos_div_pow_pos Added src/analysis/hofer.lean + theorem hofer Modified src/analysis/specific_limits.lean + theorem geom_lt + theorem sum_geometric_two_le + theorem tendsto_at_top_of_geom_lt Modified src/order/filter/basic.lean + theorem filter.Iio_mem_at_bot + theorem filter.Ioi_mem_at_top + theorem filter.inf_eq_bot_iff + theorem filter.mem_at_bot + theorem filter.tendsto.not_tendsto Modified src/topology/algebra/ordered.lean + theorem Iio_mem_nhds + theorem Ioi_mem_nhds + theorem Ioo_mem_nhds + theorem disjoint_nhds_at_bot + theorem disjoint_nhds_at_top + theorem inf_nhds_at_bot + theorem inf_nhds_at_top + theorem not_tendsto_at_bot_of_tendsto_nhds + theorem not_tendsto_at_top_of_tendsto_nhds + theorem not_tendsto_nhds_of_tendsto_at_bot + theorem not_tendsto_nhds_of_tendsto_at_top 2020-06-15 13:00:34 4843bb1 chore(linear_algebra/finsupp_vector_space): remove leftover pp.universes (#3081) See also #1608. ESTIMATED CHANGES Modified src/linear_algebra/finsupp_vector_space.lean 2020-06-15 08:05:05 758806e feat(linear_algebra/affine_space): more on affine subspaces (#3076) Add extensionality lemmas for affine subspaces, and a constructor to make an affine subspace from a point and a direction. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + theorem affine_subspace.direction_mk_of_point_of_direction + theorem affine_subspace.ext + theorem affine_subspace.ext_of_direction_eq + theorem affine_subspace.mem_mk_of_point_of_direction + def affine_subspace.mk_of_point_of_direction + theorem affine_subspace.mk_of_point_of_direction_eq 2020-06-15 02:06:19 543359c feat(field_theory/finite): Chevalley–Warning (#1564) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.coe_subtype_equiv_codomain + theorem equiv.coe_subtype_equiv_codomain_symm + def equiv.subtype_equiv_codomain + theorem equiv.subtype_equiv_codomain_apply + theorem equiv.subtype_equiv_codomain_symm_apply + theorem equiv.subtype_equiv_codomain_symm_apply_eq + theorem equiv.subtype_equiv_codomain_symm_apply_ne Modified src/data/finsupp.lean + theorem finsupp.prod_fintype Modified src/data/mv_polynomial.lean + theorem mv_polynomial.eval_eq' + theorem mv_polynomial.eval_eq + theorem mv_polynomial.eval_prod + theorem mv_polynomial.eval_sum + theorem mv_polynomial.eval₂_eq' + theorem mv_polynomial.eval₂_eq + theorem mv_polynomial.exists_degree_lt Added src/field_theory/chevalley_warning.lean + theorem char_dvd_card_solutions + theorem char_dvd_card_solutions_family + theorem mv_polynomial.sum_mv_polynomial_eq_zero 2020-06-15 01:22:53 3a66d9a feat(polynomial): generalising some material to (noncomm_)semiring (#3043) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/data/polynomial.lean +/- theorem polynomial.coeff_sum + theorem polynomial.monomial_eq_smul_X + theorem polynomial.monomial_one_eq_X_pow +/- def polynomial Modified src/field_theory/splitting_field.lean Modified src/ring_theory/adjoin_root.lean 2020-06-15 00:49:47 01732f7 chore(scripts): update nolints.txt (#3078) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-15 00:15:36 c91fc15 chore(geometry/manifold/real_instances): use euclidean_space (#3077) Now that `euclidean_space` has been refactored to use the product topology, we can fix the geometry file that used a version of the product space (with the sup norm!) called `euclidean_space2`, using now instead the proper `euclidean_space`. ESTIMATED CHANGES Modified src/geometry/manifold/real_instances.lean +/- def euclidean_quadrant - def euclidean_space2 - theorem findim_euclidean_space2 2020-06-14 20:40:58 c4a32e7 doc(topology/uniform_space/basic): library note on forgetful inheritance (#3070) A (long) library note explaining design decisions related to forgetful inheritance, and reference to this note in various places (I have probably forgotten a few of them). ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/pi_Lp.lean Modified src/topology/uniform_space/basic.lean 2020-06-14 19:26:34 797177c feat(linear_algebra/affine_space): affine combinations of points (#2979) Some basic definitions and lemmas related to affine combinations of points, in preparation for defining barycentric coordinates for use in geometry. This version for sums over a `fintype` is probably the most convenient for geometrical uses (where the type will be `fin 3` in the case of a triangle, or more generally `fin (n + 1)` for an n-simplex), but other use cases may find that `finset` or `finsupp` versions of these definitions are of use as well. The definition `weighted_vsub` is expected to be used with weights that sum to zero, and the definition `affine_combination` is expected to be used with weights that sum to 1, but such a hypothesis is only specified for lemmas that need it rather than for those definitions. I expect that most nontrivial geometric uses of barycentric coordinates will need to prove such a hypothesis at some point, but that it will still be more convenient not to need to pass it to all the definitions and trivial lemmas. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem pi.vadd_apply Modified src/linear_algebra/affine_space.lean + def affine_map.weighted_vsub_of_point + def affine_space.affine_combination + theorem affine_space.affine_combination_eq_weighted_vsub_of_point_vadd_of_sum_eq_one + theorem affine_space.affine_combination_vsub + def affine_space.weighted_vsub + theorem affine_space.weighted_vsub_add + theorem affine_space.weighted_vsub_eq_weighted_vsub_of_point_of_sum_eq_zero + theorem affine_space.weighted_vsub_neg + def affine_space.weighted_vsub_of_point + theorem affine_space.weighted_vsub_of_point_add + theorem affine_space.weighted_vsub_of_point_eq_of_sum_eq_zero + def affine_space.weighted_vsub_of_point_linear + theorem affine_space.weighted_vsub_of_point_linear_apply + theorem affine_space.weighted_vsub_of_point_neg + theorem affine_space.weighted_vsub_of_point_smul + theorem affine_space.weighted_vsub_of_point_sub + theorem affine_space.weighted_vsub_of_point_vadd_eq_of_sum_eq_one + theorem affine_space.weighted_vsub_of_point_zero + theorem affine_space.weighted_vsub_smul + theorem affine_space.weighted_vsub_sub + theorem affine_space.weighted_vsub_vadd_affine_combination + theorem affine_space.weighted_vsub_zero 2020-06-14 16:36:35 77c5dfe perf(*): avoid `user_attribute.get_param` (#3073) Recent studies have shown that `monoid_localization.lean` is the slowest file in mathlib. One hundred and three seconds (93%) of its class-leading runtime are spent in constructing the attribute cache for `_to_additive`. This is due to the use of the `user_attribute.get_param` function inside `get_cache`. See the [library note on user attribute parameters](https://leanprover-community.github.io/mathlib_docs/notes.html#user%20attribute%20parameters) for more information on this anti-pattern. This PR removes two uses of `user_attribute.get_param`, one in `to_additive` and the other in `ancestor`. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/tactic/algebra.lean 2020-06-14 16:36:33 0d05299 chore(data/finset): rename `ext`/`ext'`/`ext_iff` (#3069) Now * `ext` is the `@[ext]` lemma; * `ext_iff` is the lemma `s₁ = s₂ ↔ ∀ a, a ∈ s₁ ↔ a ∈ s₂`. Also add 2 `norm_cast` attributes and a lemma `ssubset_iff_of_subset`. ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/complex/exponential.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/denumerable.lean Modified src/data/finmap.lean Modified src/data/finset.lean +/- theorem finset.coe_inj - theorem finset.ext' +/- theorem finset.ext + theorem finset.ext_iff +/- theorem finset.mem_coe + theorem finset.ssubset_iff_of_subset Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean Modified src/data/fintype/card.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/totient.lean Modified src/data/set/basic.lean + theorem set.ssubset_iff_of_subset Modified src/data/set/finite.lean Modified src/field_theory/finite.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basis.lean Modified src/measure_theory/outer_measure.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/topology/metric_space/emetric_space.lean 2020-06-14 16:36:31 1f16da1 refactor(analysis/normed_space/real_inner_product): extend normed_space in the definition (#3060) Currently, inner product spaces do not extend normed spaces, and a norm is constructed from the inner product. This makes it impossible to put an instance on reals, because it would lead to two non-defeq norms. We refactor inner product spaces to extend normed spaces, with the condition that the norm is equal (but maybe not defeq) to the square root of the inner product, to solve this issue. The possibility to construct a norm from a well-behaved inner product is still given by a constructor `inner_product_space.of_core`. We also register the inner product structure on a finite product of inner product spaces (not on the Pi type, which has the sup norm, but on `pi_Lp 2 one_le_two \alpha` which has the right norm). ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean - theorem euclidean_space.inner_def +/- def euclidean_space + theorem findim_euclidean_space + theorem findim_euclidean_space_fin + structure inner_product_space.core + theorem inner_product_space.of_core.abs_inner_le_norm + theorem inner_product_space.of_core.inner_add_add_self + theorem inner_product_space.of_core.inner_add_left + theorem inner_product_space.of_core.inner_add_right + theorem inner_product_space.of_core.inner_comm + theorem inner_product_space.of_core.inner_mul_inner_self_le + theorem inner_product_space.of_core.inner_self_eq_norm_square + theorem inner_product_space.of_core.inner_smul_left + theorem inner_product_space.of_core.inner_smul_right + theorem inner_product_space.of_core.norm_eq_sqrt_inner + def inner_product_space.of_core.to_has_inner + def inner_product_space.of_core.to_has_norm + def inner_product_space.of_core.to_normed_group + def inner_product_space.of_core.to_normed_space + def inner_product_space.of_core +/- theorem inner_self_nonneg - theorem norm_eq_sqrt_inner - def pi.inner_product_space - def real.inner_product_space Modified src/geometry/manifold/real_instances.lean + theorem findim_euclidean_space2 - theorem findim_euclidean_space 2020-06-14 15:09:35 85b8bdc perf(tactic/linarith): use key/value lists instead of rb_maps to represent linear expressions (#3004) This has essentially no effect on the test file, but scales much better. See discussion at https://leanprover.zulipchat.com/#narrow/stream/187764-Lean-for.20teaching/topic/Real.20analysis for an example which is in reach with this change. ESTIMATED CHANGES Modified src/meta/rb_map.lean Modified src/tactic/linarith.lean + def linarith.ineq.cmp - def linarith.ineq.is_lt + def linarith.linexp.cmp + def linarith.linexp.contains + def linarith.linexp.get + def linarith.linexp.scale + def linarith.linexp.zfind + def linarith.linexp Modified test/linarith.lean + theorem test6 2020-06-14 12:37:42 7f60a62 chore(order/basic): move unbundled order classes to `rel_classes (#3066) Reason: these classes are rarely used in `mathlib`, we don't need to mix them with classes extending `has_le`. ESTIMATED CHANGES Modified src/data/list/basic.lean Modified src/order/basic.lean - theorem antisymm_of_asymm - def bounded - def decidable_linear_order_of_STO' - theorem is_antisymm.swap - theorem is_asymm.swap - theorem is_irrefl.swap - theorem is_irrefl_of_is_asymm - theorem is_linear_order.swap - theorem is_order_connected.neg_trans - theorem is_partial_order.swap - theorem is_preorder.swap - theorem is_refl.swap - theorem is_strict_order.swap - theorem is_strict_total_order'.swap - theorem is_strict_weak_order_of_is_order_connected - theorem is_total.swap - theorem is_total_preorder.swap - theorem is_trans.swap - theorem is_trichotomous.swap - def linear_order_of_STO' - theorem not_bounded_iff - theorem not_unbounded_iff - def partial_order_of_SO - theorem trans_trichotomous_left - theorem trans_trichotomous_right - def unbounded - theorem well_founded.has_min - theorem well_founded.min_mem - theorem well_founded.not_lt_min Modified src/order/order_iso.lean Added src/order/rel_classes.lean + def bounded + def decidable_linear_order_of_STO' + theorem is_antisymm.swap + theorem is_asymm.swap + theorem is_irrefl.swap + theorem is_linear_order.swap + theorem is_order_connected.neg_trans + theorem is_partial_order.swap + theorem is_preorder.swap + theorem is_refl.swap + theorem is_strict_order.swap + theorem is_strict_total_order'.swap + theorem is_strict_weak_order_of_is_order_connected + theorem is_total.swap + theorem is_total_preorder.swap + theorem is_trans.swap + theorem is_trichotomous.swap + def linear_order_of_STO' + theorem not_bounded_iff + theorem not_unbounded_iff + def partial_order_of_SO + theorem trans_trichotomous_left + theorem trans_trichotomous_right + def unbounded + theorem well_founded.has_min + theorem well_founded.min_mem + theorem well_founded.not_lt_min 2020-06-14 12:37:40 2c97f23 feat(tactic/library_search): small improvements (#3037) This makes the following small improvements to `library_search`: 1. ~~Don't use `*.inj` lemmas, which are rarely useful. (Cuts test file from 95 seconds to 90 seconds.)~~ 2. Some refactoring for reusability in other tactics. 3. `apply_declaration` now reports how many subgoals were successfully closed by `solve_by_elim` (for use by new tactics) ESTIMATED CHANGES Modified src/tactic/suggest.lean 2020-06-14 12:37:38 a6534db feat(normed_space/dual): (topological) dual of a normed space (#3021) Define the topological dual of a normed space, and prove that over the reals, the inclusion into the double dual is an isometry. Supporting material: a corollary of Hahn-Banach; material about spans of singletons added to `linear_algebra.basic` and `normed_space.operator_norm`; material about homotheties added to `normed_space.operator_norm`. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Added src/analysis/normed_space/dual.lean + theorem normed_space.double_dual_bound + theorem normed_space.dual_def + def normed_space.inclusion_in_double_dual' + def normed_space.inclusion_in_double_dual + theorem normed_space.inclusion_in_double_dual_isometry Modified src/analysis/normed_space/hahn_banach.lean + theorem coord_norm' + theorem coord_self' + theorem exists_dual_vector' + theorem exists_dual_vector Modified src/analysis/normed_space/operator_norm.lean + def continuous_linear_equiv.coord + theorem continuous_linear_equiv.coord_norm + theorem continuous_linear_equiv.homothety_inverse + def continuous_linear_equiv.of_homothety + def continuous_linear_equiv.to_span_nonzero_singleton + theorem continuous_linear_equiv.to_span_nonzero_singleton_homothety + theorem continuous_linear_map.homothety_norm + def continuous_linear_map.of_homothety + def continuous_linear_map.to_span_singleton + theorem continuous_linear_map.to_span_singleton_homothety + theorem continuous_linear_map.to_span_singleton_norm Modified src/linear_algebra/basic.lean + def linear_equiv.coord + theorem linear_equiv.coord_self + def linear_equiv.to_span_nonzero_singleton + theorem linear_equiv.to_span_nonzero_singleton_one + theorem linear_map.span_singleton_eq_range + def linear_map.to_span_singleton + theorem linear_map.to_span_singleton_one + theorem submodule.mem_span_singleton_self Modified src/linear_algebra/finite_dimensional.lean Modified src/ring_theory/algebra.lean + def subspace.restrict_scalars 2020-06-14 11:55:48 4e88687 chore(data/complex/basic): rearrange into sections (#3068) Also: * reworded some docstrings, * removed dependence on `deprecated.field` by changing the proofs of `of_real_div` and `of_real_fpow` to use `ring_hom` lemmas instead of `is_ring_hom` lemma, * renamed the instance `of_real.is_ring_hom` too `coe.is_ring_hom`, * renamed `real_prod_equiv*` to `equiv_prod_real*`, and * `conj_two` was removed in favor of `conj_bit0` and `conj_bit1`. ESTIMATED CHANGES Modified src/data/complex/basic.lean +/- theorem complex.abs_abs_sub_le_abs_sub + theorem complex.conj_bit0 + theorem complex.conj_bit1 - theorem complex.conj_two + def complex.equiv_real_prod + theorem complex.equiv_real_prod_apply + theorem complex.equiv_real_prod_symm_im + theorem complex.equiv_real_prod_symm_re +/- theorem complex.of_real_add +/- theorem complex.of_real_bit0 +/- theorem complex.of_real_bit1 +/- theorem complex.of_real_int_cast +/- theorem complex.of_real_rat_cast - def complex.real_prod_equiv - theorem complex.real_prod_equiv_apply - theorem complex.real_prod_equiv_symm_im - theorem complex.real_prod_equiv_symm_re Modified src/data/complex/exponential.lean Modified src/topology/instances/complex.lean 2020-06-14 09:10:57 2cd329f feat(algebra/continued_fractions): add correctness of terminating computations (#2911) ### What Add correctness lemmas for terminating computations of continued fractions ### Why To show that the continued fractions algorithm is computing the right thing in case of termination. For non-terminating sequences, lemmas about the limit will be added in a later PR. ### How 1. Show that the value to be approximated can always be obtained by adding the corresponding, remaining fractional part stored in `int_fract_pair.stream`. 2. Use this to derive that once the fractional part becomes 0 (and hence the continued fraction terminates), we have exactly computed the value. ESTIMATED CHANGES Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/continued_fractions/computation/basic.lean Added src/algebra/continued_fractions/computation/correctness_terminating.lean + theorem generalized_continued_fraction.comp_exact_value_correctness_of_stream_eq_none + theorem generalized_continued_fraction.comp_exact_value_correctness_of_stream_eq_some + theorem generalized_continued_fraction.of_correctness_at_top_of_terminates + theorem generalized_continued_fraction.of_correctness_of_terminated_at + theorem generalized_continued_fraction.of_correctness_of_terminates Modified src/algebra/continued_fractions/computation/default.lean Modified src/algebra/continued_fractions/continuants_recurrence.lean Modified src/algebra/continued_fractions/convergents_equiv.lean 2020-06-14 08:08:09 fdc326c feat(geometry/euclidean): sum of angles of a triangle (#2994) Item 27 from the 100-theorems list. ESTIMATED CHANGES Modified src/geometry/euclidean.lean + theorem euclidean_geometry.angle_add_angle_add_angle_eq_pi + theorem inner_product_geometry.angle_add_angle_sub_add_angle_sub_eq_pi + theorem inner_product_geometry.cos_angle_add_angle_sub_add_angle_sub_eq_neg_one + theorem inner_product_geometry.cos_angle_sub_add_angle_sub_rev_eq_neg_cos_angle + theorem inner_product_geometry.sin_angle_add_angle_sub_add_angle_sub_eq_zero + theorem inner_product_geometry.sin_angle_sub_add_angle_sub_rev_eq_sin_angle 2020-06-14 04:30:41 c8c1869 refactor(order/basic): make `*order.lift` use `[]` argument (#3067) Take an order on the codomain as a `[*order β]` argument. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/analysis/convex/cone.lean Modified src/data/fin.lean Modified src/data/real/nnreal.lean Modified src/geometry/manifold/manifold.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/basic.lean Modified src/order/basic.lean +/- def decidable_linear_order.lift +/- def linear_order.lift +/- def partial_order.lift +/- def preorder.lift Modified src/order/zorn.lean Modified src/ring_theory/subsemiring.lean Modified src/topology/algebra/open_subgroup.lean 2020-06-14 01:30:16 67f7288 doc(measure_theory): document basic measure theory files (#3057) ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean 2020-06-14 00:41:33 0f98c37 chore(scripts): update nolints.txt (#3065) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-13 19:37:02 e33245c feat(topology/metric_space/pi_Lp): L^p distance on finite products (#3059) `L^p` edistance (or distance, or norm) on finite products of emetric spaces (or metric spaces, or normed groups), put on a type synonym `pi_Lp p hp α` to avoid instance clashes, and being careful to register as uniformity the product uniformity. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.mul_rpow_of_nonneg +/- theorem ennreal.rpow_eq_top_iff +/- theorem ennreal.rpow_eq_zero_iff + theorem ennreal.to_real_rpow +/- theorem ennreal.top_rpow_of_neg +/- theorem ennreal.top_rpow_of_pos +/- theorem ennreal.zero_rpow_of_neg +/- theorem ennreal.zero_rpow_of_pos + theorem nnreal.rpow_neg_one Added src/topology/metric_space/pi_Lp.lean + theorem pi_Lp.add_apply + theorem pi_Lp.antilipschitz_with_equiv + theorem pi_Lp.aux_uniformity_eq + def pi_Lp.emetric_aux + theorem pi_Lp.lipschitz_with_equiv + theorem pi_Lp.neg_apply + theorem pi_Lp.norm_eq + theorem pi_Lp.smul_apply + theorem pi_Lp.sub_apply + def pi_Lp 2020-06-13 13:42:10 cc16d35 feat(linear_algebra/finite_dimensional): cardinalities and linear independence (#3056) ESTIMATED CHANGES Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.cardinal_mk_le_findim_of_linear_independent + theorem finite_dimensional.exists_nontrivial_relation_of_dim_lt_card + theorem finite_dimensional.exists_nontrivial_relation_sum_zero_of_dim_succ_lt_card + theorem finite_dimensional.exists_relation_sum_zero_pos_coefficient_of_dim_succ_lt_card + theorem finite_dimensional.finset_card_le_findim_of_linear_independent + theorem finite_dimensional.fintype_card_le_findim_of_linear_independent 2020-06-13 12:38:45 b7048a4 feat(tactic/linarith): improve parsing expressions into linear form (#2995) This PR generalizes the parsing stage of `linarith`. It will try harder to recognize expressions as linear combinations of monomials, and will match monomials up to commutativity. ```lean example (u v r s t : ℚ) (h : 0 < u*(t*v + t*r + s)) : 0 < (t*(r + v) + s)*3*u := by linarith ``` This is helpful for #2637 . ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2020-06-13 11:08:59 4bb29ab doc(algebra/group/to_additive): add doc strings and tactic doc entry (#3055) ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean +/- structure to_additive.value_type 2020-06-13 11:08:57 a22b657 refactor(topology/uniform_space): docstring and notation (#3052) The goal of this PR is to make `topology/uniform_space/basic.lean` more accessible. First it introduces the standard notation for relation composition that was inexplicably not used before. I used a non-standard unicode circle here `\ciw` but this is up for discussion as long as it looks like a composition circle. Then I introduced balls as discussed on [this Zulip topic](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/notations.20for.20uniform.20spaces). There could be used more, but at least this should be mostly sufficient for following PRs. And of course I put a huge module docstring. As with `order/filter/basic.lean`, I think we need more mathematical explanations than in the average mathlib file. I also added a bit of content about symmetric entourages but I don't have enough courage to split this off unless someone really insists. ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean + theorem ball_eq_of_symmetry + theorem ball_mono + theorem ball_subset_of_comp_subset +/- theorem comp_le_uniformity +/- theorem id_comp_rel + theorem is_open_iff_ball_subset + theorem mem_ball_comp + theorem mem_ball_symmetry + def symmetric_rel + theorem symmetric_symmetrize_rel + theorem symmetrize_mem_uniformity + theorem symmetrize_mono + def symmetrize_rel + theorem symmetrize_rel_subset_self + theorem uniform_continuous_iff_eventually + def uniform_space.ball + theorem uniform_space.has_basis_symmetric + theorem uniform_space.has_seq_basis 2020-06-13 09:51:05 938b73a feat(topology/metric_space/pi_lp): Holder and Minkowski inequalities in ennreal (#2988) Hölder and Minkowski inequalities for finite sums. Versions for ennreals. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem with_top.sum_eq_top_iff Modified src/analysis/mean_inequalities.lean + theorem ennreal.Lp_add_le + theorem ennreal.inner_le_Lp_mul_Lq Modified src/data/real/ennreal.lean + theorem ennreal.one_to_nnreal + theorem ennreal.one_to_real + theorem ennreal.sum_eq_top_iff 2020-06-13 09:19:08 dc69dc3 refactor(ci): only update nolints once a day (#3036) This PR moves the update nolints step to a new GitHub actions workflow `update_nolints.yml` which runs once a day. ESTIMATED CHANGES Modified .github/workflows/build.yml Added .github/workflows/update_nolints.yml Modified scripts/update_nolints.sh 2020-06-13 07:27:55 1645542 feat(linear_algebra): elements of a dim zero space (#3054) ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem dim_pos_iff_exists_ne_zero + theorem dim_zero_iff_forall_zero Modified src/linear_algebra/finite_dimensional.lean + theorem bot_eq_top_of_dim_eq_zero + theorem findim_bot + theorem findim_eq_zero_of_dim_eq_zero + theorem finite_dimensional_bot + theorem finite_dimensional_of_dim_eq_zero Modified src/set_theory/cardinal.lean + theorem cardinal.mk_emptyc_iff 2020-06-12 18:08:42 51ad2a1 chore(*): update to Lean 3.16.2c (#3053) ESTIMATED CHANGES Modified leanpkg.toml 2020-06-12 18:08:40 ce594be feat(linear_algebra/affine_space): define a few affine maps (#2981) ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + theorem affine_map.add_linear + theorem affine_map.affine_apply_line_map + theorem affine_map.affine_comp_line_map + theorem affine_map.coe_add + theorem affine_map.coe_const + theorem affine_map.coe_homothety_affine + theorem affine_map.coe_homothety_hom + theorem affine_map.coe_mul + theorem affine_map.coe_one + theorem affine_map.coe_smul + theorem affine_map.coe_zero + theorem affine_map.comp_assoc + theorem affine_map.comp_id + def affine_map.const + theorem affine_map.const_linear +/- theorem affine_map.ext + theorem affine_map.ext_iff + def affine_map.homothety + theorem affine_map.homothety_add + def affine_map.homothety_affine + theorem affine_map.homothety_apply + theorem affine_map.homothety_def + def affine_map.homothety_hom + theorem affine_map.homothety_mul + theorem affine_map.homothety_one + theorem affine_map.homothety_zero + theorem affine_map.id_comp + theorem affine_map.id_linear + def affine_map.line_map + theorem affine_map.line_map_apply + theorem affine_map.line_map_apply_zero + theorem affine_map.line_map_linear + theorem affine_map.line_map_vadd_neg + theorem affine_map.line_map_zero + theorem affine_map.linear_map_vsub - theorem affine_map.map_vsub + theorem affine_map.vadd_apply + theorem affine_map.vsub_apply + theorem affine_map.zero_linear + theorem linear_map.coe_to_affine_map + def linear_map.to_affine_map + theorem linear_map.to_affine_map_linear 2020-06-12 16:33:01 1429279 feat(data/*): lemmas converting finset, set.finite, and their card (#3042) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.attach_eq_univ Modified src/data/set/finite.lean + theorem set.finite.card_to_finset 2020-06-12 16:32:59 c955537 fix(library_search): only unfold reducible definitions when matching (#3038) By default `library_search` only unfolds `reducible` definitions when attempting to match lemmas against the goal. Previously, it would unfold most definitions, sometimes giving surprising answers, or slow answers. The old behaviour is still available via `library_search!`. ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean Modified test/library_search/ring_theory.lean 2020-06-12 15:35:03 5c0000c chore(*): remove extra author info (#3051) Removing changes to author headers in files with recent changes. Authorship should be cited in the headers only for significant contributions. ESTIMATED CHANGES Modified src/data/matrix/basic.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/matrix.lean 2020-06-12 13:27:48 64461b8 chore(scripts): update nolints.txt (#3049) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-12 12:19:15 6aa2464 chore(scripts): update nolints.txt (#3048) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-12 11:43:13 f78693d chore(data/complex/exponential): linting and pp_nodot (#3045) ESTIMATED CHANGES Modified src/data/complex/exponential.lean +/- def complex.cos +/- def complex.cosh +/- def complex.exp' +/- def complex.exp +/- theorem complex.is_cau_exp +/- def complex.sin +/- def complex.sinh +/- def complex.tan +/- def complex.tanh +/- theorem is_cau_geo_series_const +/- theorem is_cau_series_of_abv_le_cau +/- def real.cos +/- theorem real.cos_bound +/- def real.cosh +/- def real.exp +/- def real.sin +/- theorem real.sin_bound +/- def real.sinh +/- def real.tan +/- def real.tanh 2020-06-12 11:43:11 5808afc feat(analysis/mean_inequalities): Holder and Minkowski inequalities (#3025) ESTIMATED CHANGES Modified src/analysis/mean_inequalities.lean + theorem nnreal.Lp_add_le - theorem nnreal.am_gm2_weighted - theorem nnreal.am_gm3_weighted - theorem nnreal.am_gm_weighted + theorem nnreal.arith_mean_le_rpow_mean + theorem nnreal.geom_mean_le_arith_mean2_weighted + theorem nnreal.geom_mean_le_arith_mean3_weighted + theorem nnreal.geom_mean_le_arith_mean_weighted + theorem nnreal.inner_le_Lp_mul_Lq + theorem nnreal.is_greatest_Lp - theorem nnreal.pow_am_le_am_pow + theorem nnreal.pow_arith_mean_le_arith_mean_pow - theorem nnreal.rpow_am_le_am_rpow + theorem nnreal.rpow_arith_mean_le_arith_mean_rpow + theorem real.Lp_add_le + theorem real.Lp_add_le_of_nonneg - theorem real.am_gm2_weighted - theorem real.am_gm_weighted + theorem real.arith_mean_le_rpow_mean - theorem real.fpow_am_le_am_fpow + theorem real.fpow_arith_mean_le_arith_mean_fpow + theorem real.geom_mean_le_arith_mean2_weighted + theorem real.geom_mean_le_arith_mean_weighted + theorem real.inner_le_Lp_mul_Lq + theorem real.inner_le_Lp_mul_Lq_of_nonneg - theorem real.pow_am_le_am_pow - theorem real.pow_am_le_am_pow_of_even + theorem real.pow_arith_mean_le_arith_mean_pow + theorem real.pow_arith_mean_le_arith_mean_pow_of_even - theorem real.rpow_am_le_am_rpow + theorem real.rpow_arith_mean_le_arith_mean_rpow 2020-06-12 11:10:43 27a0946 chore(scripts): update nolints.txt (#3046) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-12 10:19:27 30e620c chore(data/real/cau_seq): linting (#3040) ESTIMATED CHANGES Modified src/data/real/cau_seq.lean +/- theorem cau_seq.cauchy₂ +/- theorem cau_seq.cauchy₃ +/- theorem cau_seq.equiv_def₃ +/- def cau_seq.inv +/- def cau_seq.lim_zero +/- theorem is_cau_seq.cauchy₂ +/- theorem is_cau_seq.cauchy₃ 2020-06-12 09:31:29 0f6b3ca doc(data/complex/basic): docstrings and pp_nodots (#3044) ESTIMATED CHANGES Modified src/data/complex/basic.lean +/- def complex.norm_sq 2020-06-12 05:32:43 96676a7 chore(scripts): update nolints.txt (#3039) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-12 03:49:42 4ec7cc5 refactor(*): fix field names in `linear_map` and `submodule` (#3032) * `linear_map` now uses `map_add'` and `map_smul`'; * `submodule` now `extends add_submonoid` and adds `smul_mem'`; * no more `submodule.is_add_subgroup` instance; * `open_subgroup` now uses bundled subgroups; * `is_linear_map` is not a `class` anymore: we had a couple of `instances` but zero lemmas taking it as a typeclass argument; * `subgroup.mem_coe` now takes `{g : G}` as it should, not `[g : G]`. ESTIMATED CHANGES Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/lie_algebra.lean +/- def lie_algebra.Ad Modified src/algebra/module.lean - theorem is_linear_map.map_add - theorem is_linear_map.map_smul +/- def is_linear_map.mk' + structure is_linear_map +/- theorem linear_map.is_linear +/- theorem linear_map.map_add +/- theorem linear_map.map_smul +/- theorem submodule.add_mem + theorem submodule.coe_set_eq + theorem submodule.coe_sort_coe + theorem submodule.coe_to_add_subgroup +/- theorem submodule.ext' + theorem submodule.ext'_iff +/- theorem submodule.ext +/- theorem submodule.neg_mem_iff +/- theorem submodule.smul_mem +/- theorem submodule.sum_mem + def submodule.to_add_subgroup + theorem submodule.to_add_submonoid_eq + theorem submodule.to_add_submonoid_injective +/- theorem submodule.zero_mem Modified src/analysis/analytic/composition.lean Modified src/analysis/complex/basic.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/enorm.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/data/monoid_algebra.lean Modified src/data/polynomial.lean Modified src/group_theory/subgroup.lean +/- theorem subgroup.mem_coe Modified src/linear_algebra/affine_space.lean Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.map_add +/- theorem linear_equiv.map_smul +/- def linear_equiv.to_add_equiv Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/direct_sum_module.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/lagrange.lean Modified src/linear_algebra/linear_action.lean Modified src/linear_algebra/linear_pmap.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/quadratic_form.lean Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/bochner_integration.lean Modified src/ring_theory/algebra.lean +/- theorem span_int_eq Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/polynomial.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/algebra/open_subgroup.lean +/- theorem ideal.is_open_of_open_subideal + structure open_add_subgroup - theorem open_subgroup.coe_injective + theorem open_subgroup.coe_subgroup_le + theorem open_subgroup.coe_subset +/- theorem open_subgroup.ext' +/- theorem open_subgroup.ext + theorem open_subgroup.ext_iff - theorem open_subgroup.is_open_of_nonempty_open_subset - theorem open_subgroup.is_open_of_open_subgroup - theorem open_subgroup.le_iff + theorem open_subgroup.mem_coe + theorem open_subgroup.mem_coe_opens + theorem open_subgroup.mem_coe_subgroup + structure open_subgroup - def open_subgroup + theorem subgroup.is_open_mono + theorem subgroup.is_open_of_mem_nhds + theorem subgroup.is_open_of_open_subgroup + theorem submodule.is_open_mono - theorem submodule.is_open_of_open_submodule Modified src/topology/algebra/ring.lean 2020-06-12 02:45:20 338bbd2 chore(measure/theory): remove useless module instances (#3031) Remove useless `module` and `vector_space` instances, as these words are now synonyms of `semimodule`. ESTIMATED CHANGES Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/ring_theory/power_series.lean 2020-06-11 22:32:06 593f731 chore(scripts): update nolints.txt (#3035) I am happy to remove some nolints for you! ESTIMATED CHANGES 2020-06-11 21:56:33 5444945 chore(scripts): update nolints.txt (#3034) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-11 21:56:31 f71e359 chore(ring_theory/power_series): avoid id in instances (#3033) The power series instances contain a spurious `id`, that we remove. ESTIMATED CHANGES Modified src/ring_theory/power_series.lean 2020-06-11 20:24:50 9a7151c feat(data/finsupp): set.finite {m | m ≤ n} (#3029) ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.finite_le_nat + theorem finsupp.finite_lt_nat 2020-06-11 20:24:48 666b9e5 refactor(analysis/mean_inequalities): review (#3023) Also add several lemmas to other files ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean + theorem div_mul_cancel_of_imp + theorem mul_div_cancel_left_of_imp + theorem mul_div_cancel_of_imp' + theorem mul_div_cancel_of_imp Modified src/analysis/convex/basic.lean + theorem convex_on_const + theorem convex_on_id Modified src/analysis/convex/specific_functions.lean Modified src/analysis/mean_inequalities.lean +/- theorem nnreal.am_gm2_weighted +/- theorem nnreal.am_gm3_weighted +/- theorem nnreal.am_gm_weighted +/- theorem nnreal.pow_am_le_am_pow + theorem nnreal.rpow_am_le_am_rpow +/- theorem nnreal.young_inequality +/- theorem real.am_gm2_weighted +/- theorem real.am_gm_weighted +/- theorem real.fpow_am_le_am_fpow +/- theorem real.pow_am_le_am_pow +/- theorem real.pow_am_le_am_pow_of_even + theorem real.rpow_am_le_am_rpow +/- theorem real.young_inequality + theorem real.young_inequality_of_nonneg Modified src/analysis/special_functions/pow.lean +/- theorem nnreal.rpow_add + theorem nnreal.rpow_le_rpow_iff + theorem nnreal.rpow_lt_rpow_iff + theorem nnreal.rpow_sub' + theorem nnreal.rpow_sub + theorem real.rpow_le_rpow_iff + theorem real.rpow_lt_rpow_iff + theorem real.rpow_sub' + theorem real.rpow_sub Modified src/data/real/conjugate_exponents.lean + theorem real.is_conjugate_exponent.conjugate_eq + theorem real.is_conjugate_exponent.mul_eq_add + theorem real.is_conjugate_exponent.nonneg + theorem real.is_conjugate_exponent.one_div_nonneg + theorem real.is_conjugate_exponent.sub_one_mul_conj + theorem real.is_conjugate_exponent.sub_one_pos Modified src/data/real/nnreal.lean - theorem nnreal.div_mul_cancel + theorem nnreal.div_self_le 2020-06-11 18:53:58 257d1b7 feat(*): preparations for Caratheodory's convexity theorem (#3030) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.exists_pos_of_sum_zero_of_exists_nonzero Modified src/algebra/ordered_field.lean Modified src/data/equiv/basic.lean + theorem equiv.set.apply_range_symm + theorem equiv.set.sum_diff_subset_apply_inl + theorem equiv.set.sum_diff_subset_apply_inr + theorem equiv.set.sum_diff_subset_symm_apply_of_mem + theorem equiv.set.sum_diff_subset_symm_apply_of_not_mem Modified src/data/finset.lean + theorem finset.coe_mem + theorem finset.filter_ne' + theorem finset.filter_ne + theorem finset.mk_coe Modified src/data/set/basic.lean + theorem set.coe_inclusion Modified src/data/set/finite.lean + theorem finset.finite_to_set_to_finset Modified src/data/set/lattice.lean + theorem set.subset_subset_Union Modified src/linear_algebra/basis.lean + theorem exists_sum_is_basis + theorem linear_dependent_iff Modified src/linear_algebra/dimension.lean + theorem cardinal_le_dim_of_linear_independent' + theorem cardinal_le_dim_of_linear_independent Modified src/logic/embedding.lean + def function.embedding.inl + def function.embedding.inr 2020-06-11 18:53:56 447a2d6 chore(data/matrix/basic): move numeral section into diagonal (#3022) Since the numeral section defines numerals for matrices as scalar multiples of `one_val`, which is the identity matrix, these are defined solely for diagonal matrices of type `matrix n n r`. So the numeral section should be in the diagonal section. ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.bit0_val +/- theorem matrix.diagonal_add 2020-06-11 18:19:12 1df9301 feat(group_theory/semidirect_product): introduce semidirect_products of groups (#3028) ESTIMATED CHANGES Added src/group_theory/semidirect_product.lean + def semidirect_product.inl + theorem semidirect_product.inl_aut + theorem semidirect_product.inl_inj + theorem semidirect_product.inl_injective + theorem semidirect_product.inl_left_mul_inr_right + def semidirect_product.inr + theorem semidirect_product.inr_inj + theorem semidirect_product.inr_injective + theorem semidirect_product.inv_left + theorem semidirect_product.inv_right + theorem semidirect_product.left_inl + theorem semidirect_product.left_inr + def semidirect_product.lift + theorem semidirect_product.lift_comp_inl + theorem semidirect_product.lift_comp_inr + theorem semidirect_product.lift_inl + theorem semidirect_product.lift_inr + theorem semidirect_product.lift_unique + theorem semidirect_product.mul_left + theorem semidirect_product.mul_right + theorem semidirect_product.one_left + theorem semidirect_product.one_right + theorem semidirect_product.range_inl_eq_ker_right_hom + def semidirect_product.right_hom + theorem semidirect_product.right_hom_comp_inl + theorem semidirect_product.right_hom_comp_inr + theorem semidirect_product.right_hom_eq_right + theorem semidirect_product.right_hom_inl + theorem semidirect_product.right_hom_inr + theorem semidirect_product.right_hom_surjective + theorem semidirect_product.right_inl + theorem semidirect_product.right_inr + structure semidirect_product 2020-06-11 15:35:28 ce48b6b chore(data/finsupp): drop `finsupp.module` and `vector_space` (#3009) These instances are not needed as `module` and `vector_space` are abbreviations for `semimodule`. Also add two bundled versions of `eval`: as `add_monoid_hom` and as `linear_map`. ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.coe_leval' + theorem finsupp.coe_leval + def finsupp.eval_add_hom + theorem finsupp.eval_add_hom_apply + def finsupp.leval' + def finsupp.leval Modified src/data/monoid_algebra.lean Modified src/data/mv_polynomial.lean Modified src/data/polynomial.lean Modified src/field_theory/mv_polynomial.lean Modified test/library_search/ring_theory.lean 2020-06-11 11:41:18 cf0c6b8 chore(*): use prod and sum notation (#3027) ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_Ico_id_eq_fact +/- theorem finset.prod_mul_distrib Modified src/algebra/pi_instances.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean +/- theorem continuous_multilinear_map.bound +/- theorem continuous_multilinear_map.le_op_norm +/- theorem continuous_multilinear_map.norm_def +/- def continuous_multilinear_map.op_norm +/- theorem continuous_multilinear_map.op_norm_le_bound +/- theorem continuous_multilinear_map.ratio_le_op_norm +/- theorem multilinear_map.continuous_of_bound +/- def multilinear_map.mk_continuous Modified src/data/complex/exponential.lean +/- theorem complex.exp_sum +/- theorem real.exp_sum Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/fintype/card.lean +/- theorem fin.prod_univ_zero Modified src/data/monoid_algebra.lean Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.as_sum +/- theorem mv_polynomial.support_sum_monomial_coeff Modified src/data/real/nnreal.lean Modified src/data/set/finite.lean Modified src/deprecated/submonoid.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/determinant.lean +/- theorem matrix.det_diagonal Modified src/linear_algebra/multilinear.lean Modified src/measure_theory/borel_space.lean Modified src/ring_theory/subsemiring.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/multilinear.lean 2020-06-11 09:43:11 5129aed chore(algebra/group/to_additive): improve warning message (#3024) Also prevent `group_theory/subgroup` from generating this warning. ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/group_theory/subgroup.lean 2020-06-11 08:03:33 ade196f chore(scripts): update nolints.txt (#3026) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-11 06:36:39 8863666 feat(ring_theory/ideals): prod_dvd_of_coprime (#2815) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.pairwise_coprime_X_sub Added src/ring_theory/coprime.lean + theorem finset.prod_dvd_of_coprime + theorem fintype.prod_dvd_of_coprime + theorem is_coprime.dvd_of_dvd_mul_left + theorem is_coprime.dvd_of_dvd_mul_right + theorem is_coprime.is_unit_of_dvd + theorem is_coprime.map + theorem is_coprime.mul_dvd + theorem is_coprime.mul_left + theorem is_coprime.mul_left_iff + theorem is_coprime.mul_right + theorem is_coprime.mul_right_iff + theorem is_coprime.of_mul_left_left + theorem is_coprime.of_mul_left_right + theorem is_coprime.of_mul_right_left + theorem is_coprime.of_mul_right_right + theorem is_coprime.of_prod_left + theorem is_coprime.of_prod_right + theorem is_coprime.pow + theorem is_coprime.pow_left + theorem is_coprime.pow_right + theorem is_coprime.prod_left + theorem is_coprime.prod_left_iff + theorem is_coprime.prod_right + theorem is_coprime.prod_right_iff + theorem is_coprime.symm + def is_coprime + theorem is_coprime_comm + theorem is_coprime_one_left + theorem is_coprime_one_right + theorem is_coprime_self + theorem is_coprime_zero_left + theorem is_coprime_zero_right + theorem nat.is_coprime_iff_coprime Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/ideals.lean - def ideal.is_coprime - theorem ideal.is_coprime_def - theorem ideal.is_coprime_self 2020-06-10 19:03:46 2779093 feat(linear_algebra/matrix): matrix has finite dim (#3013) Using the fact that currying is a linear operation, we give matrix a finite dimensional instance. This allows one to invoke `findim` on matrices, giving the expected dimensions for a finite-dim matrix. The import is changed to linear_algebra.finite_dimension, which brings in the previous linear_algebra.dimension import. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Modified src/linear_algebra/matrix.lean + theorem matrix.findim_matrix 2020-06-10 15:54:19 067a96b chore(*): update to lean 3.16.1c (#3020) ESTIMATED CHANGES Modified leanpkg.toml 2020-06-10 15:54:17 76e7d29 chore(scripts): update nolints.txt (#3019) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-10 15:54:15 f7654b3 feat(tactic/generalizes): tactic for generalizing over multiple expressions (#2982) This commit adds a tactic `generalizes` which works like `generalize` but for multiple expressions at once. The tactic is more powerful than calling `generalize` multiple times since this usually fails when there are dependencies between the expressions. By contrast, `generalizes` handles at least some such situations. ESTIMATED CHANGES Modified src/tactic/basic.lean Modified src/tactic/core.lean Added src/tactic/generalizes.lean Added test/generalizes.lean + inductive Vec.eq + theorem Vec.eq_cons_inversion + inductive Vec.fancy_unit + theorem Vec.test₁ + theorem Vec.test₂ + inductive Vec + theorem example_from_docs₁ + theorem example_from_docs₂ 2020-06-10 14:24:39 daed8a4 style(*): use rcases patterns with ext (#3018) ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/convex/basic.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/data/equiv/basic.lean Modified src/data/finset.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/set/countable.lean Modified src/ring_theory/noetherian.lean Modified src/tactic/ext.lean Modified src/topology/constructions.lean 2020-06-10 14:24:37 026d639 ci(build.yml): add -T100000 to test step (#3017) cf. #2276. This will also prevent some confusing timeouts, see e.g. https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Tests.20fail ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-06-10 12:50:03 614d1ca chore(*): update to lean 3.16.0 (#3016) The only change relevant to mathlib is that the precedence of unary `-` has changed, so that `-a^n` parses as `-(a^n)` and not (as formerly) `(-a)^n`. ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/group_power.lean +/- theorem neg_one_pow_eq_pow_mod_two Modified src/group_theory/perm/sign.lean 2020-06-10 12:50:01 4b62261 chore(algebra/field): deduplicate with group_with_zero (#3015) For historical reasons there are lots of lemmas we prove for `group_with_zero`, then again for a `division_ring`. Merge some of them. ESTIMATED CHANGES Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/field.lean - theorem div_div_div_div_eq - theorem div_div_eq_div_mul - theorem div_div_eq_mul_div - theorem div_eq_mul_one_div - theorem div_helper - theorem div_mul_cancel - theorem div_mul_div - theorem div_mul_eq_div_mul_one_div - theorem div_mul_eq_mul_div - theorem div_mul_eq_mul_div_comm - theorem div_mul_left - theorem div_mul_right - theorem div_one - theorem div_self - theorem division_def - theorem eq_of_mul_eq_mul_of_nonzero_left - theorem eq_of_mul_eq_mul_of_nonzero_right - theorem eq_zero_of_one_div_eq_zero - theorem inv_mul_cancel - theorem inv_ne_zero - theorem inv_one - theorem mul_div_assoc - theorem mul_div_cancel' - theorem mul_div_cancel - theorem mul_div_cancel_left - theorem mul_div_mul_left - theorem mul_div_mul_right - theorem mul_eq_mul_of_div_eq_div - theorem mul_inv_cancel - theorem mul_one_div_cancel - theorem ne_zero_of_one_div_ne_zero - theorem one_div_mul_cancel - theorem one_div_mul_one_div - theorem one_div_ne_zero - theorem one_div_one - theorem one_inv_eq - theorem zero_div Modified src/algebra/group_with_zero.lean - theorem div_div_div_div_eq' + theorem div_div_div_div_eq - theorem div_div_eq_div_mul' + theorem div_div_eq_div_mul - theorem div_div_eq_mul_div' + theorem div_div_eq_mul_div - theorem div_eq_mul_one_div' + theorem div_eq_mul_one_div - theorem div_helper' + theorem div_helper - theorem div_mul_cancel' + theorem div_mul_cancel - theorem div_mul_div' + theorem div_mul_div - theorem div_mul_eq_div_mul_one_div' + theorem div_mul_eq_div_mul_one_div - theorem div_mul_eq_mul_div' + theorem div_mul_eq_mul_div - theorem div_mul_eq_mul_div_comm' + theorem div_mul_eq_mul_div_comm - theorem div_mul_left' + theorem div_mul_left - theorem div_mul_right' + theorem div_mul_right - theorem div_one' + theorem div_one - theorem div_self' + theorem div_self - theorem eq_of_mul_eq_mul_of_nonzero_left' + theorem eq_of_mul_eq_mul_of_nonzero_left - theorem eq_of_mul_eq_mul_of_nonzero_right' + theorem eq_of_mul_eq_mul_of_nonzero_right - theorem eq_zero_of_one_div_eq_zero' + theorem eq_zero_of_one_div_eq_zero - theorem inv_mul_cancel' + theorem inv_mul_cancel - theorem inv_ne_zero' + theorem inv_ne_zero - theorem inv_one' + theorem inv_one - theorem mul_div_assoc'' + theorem mul_div_assoc - theorem mul_div_cancel''' - theorem mul_div_cancel'' + theorem mul_div_cancel' + theorem mul_div_cancel - theorem mul_div_cancel_left' + theorem mul_div_cancel_left - theorem mul_div_mul_left' + theorem mul_div_mul_left - theorem mul_div_mul_right' + theorem mul_div_mul_right - theorem mul_eq_mul_of_div_eq_div' + theorem mul_eq_mul_of_div_eq_div - theorem mul_inv_cancel' + theorem mul_inv_cancel - theorem mul_one_div_cancel' + theorem mul_one_div_cancel - theorem ne_zero_of_one_div_ne_zero' + theorem ne_zero_of_one_div_ne_zero - theorem one_div_mul_cancel' + theorem one_div_mul_cancel - theorem one_div_mul_one_div' + theorem one_div_mul_one_div - theorem one_div_ne_zero' + theorem one_div_ne_zero - theorem one_div_one' + theorem one_div_one + theorem one_inv_eq - theorem zero_div' + theorem zero_div Modified src/algebra/group_with_zero_power.lean Modified src/algebra/invertible.lean Modified src/data/real/nnreal.lean Modified src/geometry/euclidean.lean 2020-06-10 12:49:59 b427ebf chore(data/equiv/basic): add many docstrings, review (#3008) Non-docstring changes: * drop `decidable_eq_of_equiv` (was a copy of `equiv.decidable_eq`); * rename `inhabited_of_equiv` to `equiv.inhabited`; * rename `unique_of_equiv` to `equiv.unique`, take `unique β` as an instance argument; * better defeq for `equiv.list_equiv_of_equiv`; * use `coe` instead of `subtype.val` in `equiv.set.union'`; * use `s ∩ t ⊆ ∅` instead of `s ∩ t = ∅` in `equiv.set.union`; this way it agrees with `disjoint`; * use `[decidable_pred (λ x, x ∈ s)]` instead of `[decidable_pred s]` in `equiv.set.union`; * use `coe` instead of `subtype.val` in `equiv.set.sep`; * make `f` an explicit argument in `equiv.of_bijective f hf`; ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean Modified src/data/equiv/basic.lean +/- def equiv.Pi_congr_right + theorem equiv.coe_of_bijective - def equiv.decidable_eq_of_equiv - def equiv.equiv_pempty - def equiv.inhabited_of_equiv +/- def equiv.list_equiv_of_equiv - theorem equiv.of_bijective_to_fun +/- def equiv.psigma_equiv_sigma +/- theorem equiv.set.union_apply_left +/- theorem equiv.set.union_apply_right +/- def equiv.sigma_congr_right +/- def equiv.subtype_congr_right + def equiv.subtype_equiv_of_subtype - def equiv.unique_of_equiv + def equiv.{u' Modified src/data/fin_enum.lean Modified src/data/fintype/basic.lean Modified src/data/set/finite.lean Modified src/data/set/lattice.lean Modified src/data/setoid/basic.lean Modified src/group_theory/congruence.lean Modified src/group_theory/group_action.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/quotient_group.lean Modified src/linear_algebra/determinant.lean Modified src/logic/embedding.lean Modified src/order/order_iso.lean Modified src/ring_theory/ideal_operations.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.mk_subtype_of_equiv +/- theorem cardinal.mk_union_add_mk_inter +/- theorem cardinal.mk_union_of_disjoint Modified src/set_theory/schroeder_bernstein.lean 2020-06-10 12:49:57 671284e feat(control/equiv_functor/instances): allow equiv_rw on finset (#2997) Allows moving `finset` over an `equiv` using `equiv_rw`, as requested by @jcommelin. e.g. ``` import data.finset import tactic.equiv_rw example (σ τ : Type) (e : σ ≃ τ) : finset σ ≃ finset τ := by { equiv_rw e, refl, } ``` ESTIMATED CHANGES Modified src/control/equiv_functor/instances.lean Modified src/data/finset.lean +/- theorem finset.map_refl Modified src/logic/embedding.lean + theorem equiv.refl_to_embedding + theorem equiv.trans_to_embedding Modified src/tactic/equiv_rw.lean 2020-06-10 11:19:50 b932a51 feat(data/set/function): add lemmas about `semiconj` (#3007) Also redefine `set.maps_to` to avoid unfolding `mem_preimage`. ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean Modified src/data/set/function.lean + theorem function.semiconj.bij_on_image + theorem function.semiconj.bij_on_range + theorem function.semiconj.inj_on_image + theorem function.semiconj.inj_on_preimage + theorem function.semiconj.inj_on_range + theorem function.semiconj.maps_to_image + theorem function.semiconj.maps_to_preimage + theorem function.semiconj.maps_to_range + theorem function.semiconj.surj_on_image + theorem function.semiconj.surj_on_range +/- theorem set.inv_on.bij_on +/- def set.maps_to Modified src/linear_algebra/basis.lean 2020-06-10 09:47:17 836c0a2 chore(*): use sum notation (#3014) The biggest field test of the new summation notation. ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.exists_le_of_sum_le Modified src/algebra/direct_sum.lean Modified src/algebra/geom_sum.lean Modified src/algebra/pi_instances.lean Modified src/algebra/ring.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/convex/basic.lean +/- theorem convex.sum_mem +/- theorem finset.center_mass_eq_of_sum_1 +/- theorem finset.center_mass_insert Modified src/analysis/mean_inequalities.lean +/- theorem nnreal.am_gm_weighted +/- theorem nnreal.pow_am_le_am_pow Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean +/- theorem nnnorm_sum_le +/- theorem norm_sum_le Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/specific_limits.lean Modified src/combinatorics/composition.lean +/- theorem composition.sum_blocks_fun Modified src/data/complex/exponential.lean +/- def complex.exp' +/- theorem complex.exp_sum +/- theorem complex.is_cau_exp +/- theorem is_cau_geo_series_const +/- theorem is_cau_series_of_abv_cau +/- theorem real.exp_sum Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/fintype/card.lean Modified src/data/holor.lean Modified src/data/indicator_function.lean Modified src/data/matrix/basic.lean Modified src/data/monoid_algebra.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/totient.lean +/- theorem nat.sum_totient Modified src/data/polynomial.lean Modified src/data/real/cau_seq.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/data/support.lean Modified src/field_theory/mv_polynomial.lean Modified src/group_theory/group_action.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/matrix.lean +/- theorem matrix.trace_diag Modified src/linear_algebra/multilinear.lean +/- theorem multilinear_map.map_sum_finset_aux Modified src/linear_algebra/nonsingular_inverse.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean +/- def pmf.of_fintype Modified src/measure_theory/set_integral.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/representation_theory/maschke.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/subsemiring.lean Modified src/topology/algebra/infinite_sum.lean +/- def has_sum +/- theorem has_sum_fintype +/- theorem has_sum_sum_of_ne_finset_zero +/- theorem tsum_fintype Modified src/topology/algebra/module.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean 2020-06-10 08:49:53 d9934b2 feat(linear_algebra/basic): curry is linear_equiv (#3012) Currying provides a linear_equiv. This can be used to show that matrix lookup is a linear operation. This should allow to easily provide a finite_dimensional instance for matrices. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_equiv.coe_uncurry + theorem linear_equiv.coe_uncurry_symm 2020-06-10 07:15:39 6a0412e chore(data/fintype): generalise `to_finset_card` (#2316) Slight generalisation of a lemma, allowing a more flexible `fintype` instance. Also americanises some spelling. :-) ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified archive/sensitivity.lean Modified src/data/equiv/basic.lean Modified src/data/fintype/basic.lean + theorem set.to_finset_card Modified src/data/set/finite.lean - theorem set.to_finset_card +/- theorem set.to_finset_inter 2020-06-10 00:06:07 f1df14c feat(group_theory/subgroup): normal_closure and gpowers (#2959) Transfer some more proofs from `deprecated/subgroup` ESTIMATED CHANGES Modified src/deprecated/subgroup.lean - theorem group.conj_mem_conjugates_of_set - def group.conjugates - def group.conjugates_of_set - theorem group.conjugates_of_set_mono + theorem group.conjugates_of_set_subset' - theorem group.conjugates_of_set_subset - theorem group.mem_conjugates_of_set_iff - theorem group.mem_conjugates_self - theorem group.subset_conjugates_of_set - theorem injective_mul Modified src/group_theory/subgroup.lean + theorem add_subgroup.coe_gsmul + theorem add_subgroup.coe_smul + def add_subgroup.gmultiples + theorem add_subgroup.gmultiples_eq_closure + theorem add_subgroup.mem_gmultiples + structure add_subgroup.normal + theorem group.conj_mem_conjugates_of_set + def group.conjugates + def group.conjugates_of_set + theorem group.conjugates_of_set_mono + theorem group.conjugates_of_set_subset + theorem group.conjugates_subset_normal + theorem group.mem_conjugates_of_set_iff + theorem group.mem_conjugates_self + theorem group.subset_conjugates_of_set +/- theorem monoid_hom.normal_ker +/- def monoid_hom.range + theorem monoid_hom.range_eq_map +/- theorem subgroup.bot_normal + theorem subgroup.coe_gpow +/- theorem subgroup.coe_inv +/- theorem subgroup.coe_mk +/- theorem subgroup.coe_mul +/- theorem subgroup.coe_one + theorem subgroup.coe_pow + theorem subgroup.conjugates_of_set_subset_normal_closure + def subgroup.gpowers + theorem subgroup.gpowers_eq_closure +/- theorem subgroup.le_normalizer_of_normal + theorem subgroup.mem_gpowers + theorem subgroup.normal.comap - theorem subgroup.normal.conj_mem + structure subgroup.normal + def subgroup.normal_closure + theorem subgroup.normal_closure_eq_infi + theorem subgroup.normal_closure_le_normal + theorem subgroup.normal_closure_mono + theorem subgroup.normal_closure_normal + theorem subgroup.normal_closure_subset_iff + theorem subgroup.normal_comap + def subgroup.of_div + theorem subgroup.subset_normal_closure 2020-06-09 21:53:37 4e1558b chore(algebra/group_power): simp attribute on nsmul_eq_mul and gsmul_eq_mul (#2983) Also fix the resulting lint failures, corresponding to the fact that several lemmas are not in simp normal form any more. ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem commute.cast_int_mul_cast_int_mul + theorem commute.cast_int_mul_left + theorem commute.cast_int_mul_right + theorem commute.cast_int_mul_self + theorem commute.cast_nat_mul_cast_nat_mul + theorem commute.cast_nat_mul_left + theorem commute.cast_nat_mul_right + theorem commute.cast_nat_mul_self - theorem commute.gsmul_gsmul - theorem commute.gsmul_left - theorem commute.gsmul_right - theorem commute.gsmul_self - theorem commute.nsmul_left - theorem commute.nsmul_nsmul - theorem commute.nsmul_right - theorem commute.nsmul_self + theorem commute.self_cast_int_mul + theorem commute.self_cast_int_mul_cast_int_mul + theorem commute.self_cast_nat_mul + theorem commute.self_cast_nat_mul_cast_nat_mul - theorem commute.self_gsmul - theorem commute.self_gsmul_gsmul - theorem commute.self_nsmul - theorem commute.self_nsmul_nsmul +/- theorem gsmul_eq_mul +/- theorem nat.nsmul_eq_mul +/- theorem nsmul_eq_mul + theorem semiconj_by.cast_int_mul_cast_int_mul + theorem semiconj_by.cast_int_mul_left + theorem semiconj_by.cast_int_mul_right + theorem semiconj_by.cast_nat_mul_cast_nat_mul + theorem semiconj_by.cast_nat_mul_left + theorem semiconj_by.cast_nat_mul_right - theorem semiconj_by.gsmul_gsmul - theorem semiconj_by.gsmul_left - theorem semiconj_by.gsmul_right - theorem semiconj_by.nsmul_left - theorem semiconj_by.nsmul_nsmul - theorem semiconj_by.nsmul_right Modified src/analysis/special_functions/trigonometric.lean - theorem real.angle.coe_gsmul + theorem real.angle.coe_int_mul_eq_gsmul + theorem real.angle.coe_nat_mul_eq_nsmul - theorem real.angle.coe_smul Modified src/data/real/nnreal.lean 2020-06-09 20:16:58 a02ab48 refactor(group_theory/subgroup): swap `mul_mem_cancel_left/right` (#3011) This way the name follows the position of the term we cancel. ESTIMATED CHANGES Modified src/deprecated/subgroup.lean +/- theorem is_subgroup.mul_mem_cancel_left +/- theorem is_subgroup.mul_mem_cancel_right Modified src/group_theory/coset.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean + theorem subgroup.inv_mem_iff +/- theorem subgroup.mul_mem_cancel_left +/- theorem subgroup.mul_mem_cancel_right Modified src/group_theory/sylow.lean 2020-06-09 19:36:31 df34ee2 chore(scripts): update nolints.txt (#3010) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-09 17:36:44 1a4f0c2 refactor(algebra/ordered_group): multiplicative versions of ordered monoids/groups (#2844) This PR defines multiplicative versions of ordered monoids and groups. It also lints the file. ESTIMATED CHANGES Modified src/algebra/group/defs.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/ordered_group.lean - theorem add_eq_zero_iff' - theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg - theorem add_eq_zero_iff_eq_zero_of_nonneg - theorem add_le_add' - theorem add_le_add - theorem add_le_add_iff_left - theorem add_le_add_iff_right - theorem add_le_add_left' - theorem add_le_add_left - theorem add_le_add_right' - theorem add_le_add_right - theorem add_le_add_three - theorem add_le_iff_nonpos_left - theorem add_le_iff_nonpos_right - theorem add_le_of_le_neg_add - theorem add_le_of_le_of_nonpos' - theorem add_le_of_le_of_nonpos - theorem add_le_of_nonpos_of_le' - theorem add_le_of_nonpos_of_le - theorem add_lt_add - theorem add_lt_add_iff_left - theorem add_lt_add_iff_right - theorem add_lt_add_left - theorem add_lt_add_of_le_of_lt - theorem add_lt_add_of_lt_of_le - theorem add_lt_add_right - theorem add_lt_iff_neg_left - theorem add_lt_iff_neg_right - theorem add_lt_of_le_of_neg - theorem add_lt_of_lt_neg_add - theorem add_lt_of_lt_of_neg' - theorem add_lt_of_lt_of_neg - theorem add_lt_of_lt_of_nonpos' - theorem add_lt_of_lt_of_nonpos - theorem add_lt_of_neg_of_le - theorem add_lt_of_neg_of_lt' - theorem add_lt_of_neg_of_lt - theorem add_lt_of_nonpos_of_lt' - theorem add_lt_of_nonpos_of_lt - theorem add_neg' - theorem add_neg - theorem add_neg_le_iff_le_add' - theorem add_neg_le_iff_le_add - theorem add_neg_of_neg_of_nonpos' - theorem add_neg_of_neg_of_nonpos - theorem add_neg_of_nonpos_of_neg' - theorem add_neg_of_nonpos_of_neg - theorem add_nonneg' - theorem add_nonneg - theorem add_nonpos' - theorem add_nonpos - theorem add_pos' - theorem add_pos - theorem add_pos_of_nonneg_of_pos' - theorem add_pos_of_nonneg_of_pos - theorem add_pos_of_pos_of_nonneg' - theorem add_pos_of_pos_of_nonneg +/- theorem bit0_pos +/- theorem dist_bdd_within_interval + theorem inv_inv_of_one_lt + theorem inv_le' + theorem inv_le_iff_one_le_mul + theorem inv_le_inv' + theorem inv_le_inv_iff + theorem inv_le_of_inv_le + theorem inv_le_one' + theorem inv_le_one_of_one_le + theorem inv_le_self + theorem inv_lt' + theorem inv_lt_inv' + theorem inv_lt_inv_iff + theorem inv_lt_of_inv_lt + theorem inv_lt_one' + theorem inv_lt_one_iff_one_lt + theorem inv_mul_le_iff_le_mul' + theorem inv_mul_le_iff_le_mul + theorem inv_mul_le_left_of_le_mul + theorem inv_mul_le_of_le_mul + theorem inv_mul_le_right_of_le_mul + theorem inv_mul_lt_iff_lt_mul + theorem inv_mul_lt_iff_lt_mul_right + theorem inv_mul_lt_left_of_lt_mul + theorem inv_mul_lt_of_lt_mul + theorem inv_mul_lt_right_of_lt_mul + theorem inv_of_one_lt_inv - theorem le_add_iff_nonneg_left - theorem le_add_iff_nonneg_right - theorem le_add_of_le_of_nonneg' - theorem le_add_of_le_of_nonneg - theorem le_add_of_neg_add_le - theorem le_add_of_neg_add_le_left - theorem le_add_of_neg_add_le_right - theorem le_add_of_nonneg_left' - theorem le_add_of_nonneg_left - theorem le_add_of_nonneg_of_le' - theorem le_add_of_nonneg_of_le - theorem le_add_of_nonneg_right' - theorem le_add_of_nonneg_right + theorem le_inv' + theorem le_inv_iff_mul_le_one + theorem le_inv_mul_iff_mul_le + theorem le_inv_mul_of_mul_le + theorem le_inv_of_le_inv + theorem le_mul_iff_one_le_left' + theorem le_mul_iff_one_le_right' + theorem le_mul_of_inv_mul_le + theorem le_mul_of_inv_mul_le_left + theorem le_mul_of_inv_mul_le_right + theorem le_mul_of_le_of_one_le' + theorem le_mul_of_le_of_one_le + theorem le_mul_of_one_le_left'' + theorem le_mul_of_one_le_left + theorem le_mul_of_one_le_of_le' + theorem le_mul_of_one_le_of_le + theorem le_mul_of_one_le_right'' + theorem le_mul_of_one_le_right - theorem le_neg - theorem le_neg_add_iff_add_le - theorem le_neg_add_of_add_le - theorem le_neg_iff_add_nonpos - theorem le_neg_of_le_neg - theorem le_of_add_le_add_left - theorem le_of_add_le_add_right + theorem le_of_inv_le_inv + theorem le_of_mul_le_mul_left' + theorem le_of_mul_le_mul_right' - theorem le_of_neg_le_neg + theorem le_one_of_one_le_inv - theorem lt_add_iff_pos_left - theorem lt_add_iff_pos_right - theorem lt_add_of_le_of_pos - theorem lt_add_of_lt_of_nonneg' - theorem lt_add_of_lt_of_nonneg - theorem lt_add_of_lt_of_pos' - theorem lt_add_of_lt_of_pos - theorem lt_add_of_neg_add_lt - theorem lt_add_of_neg_add_lt_left - theorem lt_add_of_neg_add_lt_right - theorem lt_add_of_nonneg_of_lt' - theorem lt_add_of_nonneg_of_lt - theorem lt_add_of_pos_left - theorem lt_add_of_pos_of_le - theorem lt_add_of_pos_of_lt' - theorem lt_add_of_pos_of_lt - theorem lt_add_of_pos_right + theorem lt_inv' + theorem lt_inv_mul_iff_mul_lt + theorem lt_inv_mul_of_mul_lt + theorem lt_inv_of_lt_inv + theorem lt_mul_iff_one_lt_left' + theorem lt_mul_iff_one_lt_right' + theorem lt_mul_of_inv_mul_lt + theorem lt_mul_of_inv_mul_lt_left + theorem lt_mul_of_inv_mul_lt_right + theorem lt_mul_of_le_of_one_lt + theorem lt_mul_of_lt_of_one_le' + theorem lt_mul_of_lt_of_one_le + theorem lt_mul_of_lt_of_one_lt' + theorem lt_mul_of_lt_of_one_lt + theorem lt_mul_of_one_le_of_lt' + theorem lt_mul_of_one_le_of_lt + theorem lt_mul_of_one_lt_left + theorem lt_mul_of_one_lt_of_le + theorem lt_mul_of_one_lt_of_lt' + theorem lt_mul_of_one_lt_of_lt + theorem lt_mul_of_one_lt_right - theorem lt_neg - theorem lt_neg_add_iff_add_lt - theorem lt_neg_add_of_add_lt - theorem lt_neg_of_lt_neg - theorem lt_of_add_lt_add_left' - theorem lt_of_add_lt_add_left - theorem lt_of_add_lt_add_right' - theorem lt_of_add_lt_add_right + theorem lt_of_inv_lt_inv + theorem lt_of_mul_lt_mul_left'' + theorem lt_of_mul_lt_mul_left' + theorem lt_of_mul_lt_mul_right'' + theorem lt_of_mul_lt_mul_right' - theorem lt_of_neg_lt_neg - theorem monotone.add - theorem monotone.add_const - theorem monotone.add_strict_mono - theorem monotone.const_add + theorem monotone.const_mul' + theorem monotone.mul' + theorem monotone.mul_const' + theorem monotone.mul_strict_mono' + theorem mul_eq_one_iff' + theorem mul_eq_one_iff_eq_one_and_eq_one_of_one_le_of_one_le + theorem mul_eq_one_iff_eq_one_of_one_le + theorem mul_inv_le_iff_le_mul' + theorem mul_inv_le_iff_le_mul + theorem mul_le_iff_le_one_left' + theorem mul_le_iff_le_one_right' + theorem mul_le_mul'' + theorem mul_le_mul' + theorem mul_le_mul_iff_left + theorem mul_le_mul_iff_right + theorem mul_le_mul_left'' + theorem mul_le_mul_left' + theorem mul_le_mul_right'' + theorem mul_le_mul_right' + theorem mul_le_mul_three + theorem mul_le_of_le_inv_mul + theorem mul_le_of_le_of_le_one' + theorem mul_le_of_le_of_le_one + theorem mul_le_of_le_one_of_le' + theorem mul_le_of_le_one_of_le + theorem mul_le_one'' + theorem mul_le_one' + theorem mul_lt_iff_lt_one_left' + theorem mul_lt_iff_lt_one_right' + theorem mul_lt_mul''' + theorem mul_lt_mul_iff_left + theorem mul_lt_mul_iff_right + theorem mul_lt_mul_left' + theorem mul_lt_mul_of_le_of_lt + theorem mul_lt_mul_of_lt_of_le + theorem mul_lt_mul_right' + theorem mul_lt_of_le_of_lt_one + theorem mul_lt_of_le_one_of_lt' + theorem mul_lt_of_le_one_of_lt + theorem mul_lt_of_lt_inv_mul + theorem mul_lt_of_lt_of_le_one' + theorem mul_lt_of_lt_of_le_one + theorem mul_lt_of_lt_of_lt_one' + theorem mul_lt_of_lt_of_lt_one + theorem mul_lt_of_lt_one_of_le + theorem mul_lt_of_lt_one_of_lt' + theorem mul_lt_of_lt_one_of_lt + theorem mul_lt_one' + theorem mul_lt_one + theorem mul_lt_one_of_le_one_of_lt_one' + theorem mul_lt_one_of_le_one_of_lt_one + theorem mul_lt_one_of_lt_one_of_le_one' + theorem mul_lt_one_of_lt_one_of_le_one + theorem mul_one_lt' + theorem mul_one_lt + theorem mul_one_lt_of_one_le_of_one_lt' + theorem mul_one_lt_of_one_le_of_one_lt + theorem mul_one_lt_of_one_lt_of_one_le' + theorem mul_one_lt_of_one_lt_of_one_le - theorem neg_add_le_iff_le_add' - theorem neg_add_le_iff_le_add - theorem neg_add_le_left_of_le_add - theorem neg_add_le_of_le_add - theorem neg_add_le_right_of_le_add - theorem neg_add_lt_iff_lt_add - theorem neg_add_lt_iff_lt_add_right - theorem neg_add_lt_left_of_lt_add - theorem neg_add_lt_of_lt_add - theorem neg_add_lt_right_of_lt_add - theorem neg_le - theorem neg_le_iff_add_nonneg - theorem neg_le_neg - theorem neg_le_neg_iff - theorem neg_le_of_neg_le - theorem neg_le_self - theorem neg_lt - theorem neg_lt_neg - theorem neg_lt_neg_iff - theorem neg_lt_of_neg_lt - theorem neg_lt_zero - theorem neg_neg_iff_pos - theorem neg_neg_of_pos - theorem neg_nonneg - theorem neg_nonneg_of_nonpos - theorem neg_nonpos - theorem neg_nonpos_of_nonneg - theorem neg_of_neg_pos - theorem neg_pos - theorem neg_pos_of_neg - theorem nonneg_of_neg_nonpos - theorem nonpos_of_neg_nonneg + theorem one_le_inv' + theorem one_le_inv_of_le_one + theorem one_le_mul' + theorem one_le_mul + theorem one_le_of_inv_le_one + theorem one_lt_inv' + theorem one_lt_inv_of_inv + theorem one_lt_of_inv_inv - theorem ordered_add_comm_group.add_lt_add_left - theorem ordered_add_comm_group.le_of_add_le_add_left - theorem ordered_add_comm_group.lt_of_add_lt_add_left - def ordered_add_comm_group.mk' + theorem ordered_comm_group.le_of_mul_le_mul_left + theorem ordered_comm_group.lt_of_mul_lt_mul_left + def ordered_comm_group.mk' + theorem ordered_comm_group.mul_lt_mul_left' - theorem pos_of_neg_neg + theorem self_le_inv - theorem self_le_neg - theorem strict_mono.add_const - theorem strict_mono.add_monotone - theorem strict_mono.const_add + theorem strict_mono.const_mul' + theorem strict_mono.mul_const' + theorem strict_mono.mul_monotone' +/- theorem units.coe_le_coe +/- theorem units.coe_lt_coe 2020-06-09 17:00:44 f098c16 feat(ring_theory/localization): more lemmas and defs about fields of fractions (#3005) ESTIMATED CHANGES Modified src/ring_theory/localization.lean +/- theorem eq_zero_of_ne_zero_of_mul_eq_zero + theorem fraction_map.is_unit_map_of_injective + theorem fraction_map.lift_mk' + theorem fraction_map.mk'_eq_div + theorem fraction_ring.mk_eq_div + def fraction_ring + theorem map_mem_non_zero_divisors + theorem map_ne_zero_of_mem_non_zero_divisors +/- theorem mem_non_zero_divisors_iff_ne_zero + def of 2020-06-09 12:21:46 ccdf1d2 feat(category_theory/limits): prod.lift_comp_comp (#2968) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.coprod.desc_comp_comp + theorem category_theory.limits.prod.lift_comp_comp 2020-06-09 11:36:39 7cb0a85 refactor(topology): rename `lim` to `Lim` (#2977) Also introduce `lim (f : filter α) (g : α → β)`. ESTIMATED CHANGES Modified src/dynamics/circle/rotation_number/translation_number.lean Modified src/topology/basic.lean + theorem Lim_spec +/- theorem lim_spec Modified src/topology/dense_embedding.lean +/- theorem dense_inducing.extend_eq Modified src/topology/separation.lean + theorem Lim_eq + theorem Lim_nhds + theorem Lim_nhds_within + theorem continuous.lim_eq + theorem filter.tendsto.lim_eq - theorem lim_eq - theorem lim_nhds_eq - theorem lim_nhds_eq_of_closure + theorem lim_nhds_id + theorem lim_nhds_within_id Modified src/topology/uniform_space/cauchy.lean + theorem cauchy.le_nhds_Lim + theorem cauchy_seq.tendsto_lim - theorem le_nhds_lim_of_cauchy Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-06-09 11:05:31 76792dc feat(algebra/add_torsor): add `prod.add_torsor` (#2980) ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem prod.fst_vadd + theorem prod.fst_vsub + theorem prod.mk_vadd_mk + theorem prod.mk_vsub_mk + theorem prod.snd_vadd + theorem prod.snd_vsub 2020-06-09 09:07:38 4281343 refactor(data/polynomial): redefine `C` as an `alg_hom` (#3003) As a side effect Lean parses `C 1` as `polynomial nat`. If you need `polynomial R`, then use `C (1:R)`. ESTIMATED CHANGES Modified src/analysis/calculus/specific_functions.lean Modified src/data/polynomial.lean +/- def polynomial.C +/- theorem polynomial.C_0 +/- theorem polynomial.C_1 +/- theorem polynomial.C_add + theorem polynomial.C_def +/- theorem polynomial.C_mul +/- theorem polynomial.C_neg +/- theorem polynomial.C_pow +/- theorem polynomial.C_sub +/- theorem polynomial.int_cast_eq_C +/- def polynomial.lcoeff +/- theorem polynomial.nat_cast_eq_C Modified src/field_theory/minimal_polynomial.lean 2020-06-09 08:13:56 34302c6 chore(ring_theory/algebra): add comments explaining absence of 2 `simp` attrs (#3002) ESTIMATED CHANGES Modified src/ring_theory/algebra.lean 2020-06-09 08:13:54 03c345f chore(data/real/nnreal): +2 lemmas (#3000) ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.div_le_iff + theorem nnreal.sum_div 2020-06-09 08:13:52 1091462 feat(analysis/special_functions/pow): `inv_rpow`, `div_rpow` (#2999) Also use notation `ℝ≥0` and use `nnreal.eq` instead of `rw ← nnreal.coe_eq`. ESTIMATED CHANGES Modified src/analysis/special_functions/exp_log.lean + theorem real.log_inv Modified src/analysis/special_functions/pow.lean +/- theorem ennreal.coe_mul_rpow +/- theorem ennreal.coe_rpow_of_ne_zero +/- theorem ennreal.coe_rpow_of_nonneg +/- theorem filter.tendsto.nnrpow +/- theorem nnreal.coe_rpow +/- theorem nnreal.continuous_at_rpow + theorem nnreal.div_rpow + theorem nnreal.inv_rpow +/- theorem nnreal.mul_rpow +/- theorem nnreal.one_le_rpow +/- theorem nnreal.one_lt_rpow +/- theorem nnreal.one_rpow +/- theorem nnreal.pow_nat_rpow_nat_inv + theorem nnreal.rpow_add' +/- theorem nnreal.rpow_add +/- theorem nnreal.rpow_eq_pow +/- theorem nnreal.rpow_eq_zero_iff +/- theorem nnreal.rpow_le_one +/- theorem nnreal.rpow_le_rpow +/- theorem nnreal.rpow_le_rpow_of_exponent_ge +/- theorem nnreal.rpow_le_rpow_of_exponent_le +/- theorem nnreal.rpow_lt_one +/- theorem nnreal.rpow_lt_rpow +/- theorem nnreal.rpow_lt_rpow_of_exponent_gt +/- theorem nnreal.rpow_lt_rpow_of_exponent_lt +/- theorem nnreal.rpow_mul +/- theorem nnreal.rpow_nat_cast +/- theorem nnreal.rpow_nat_inv_pow_nat +/- theorem nnreal.rpow_neg +/- theorem nnreal.rpow_one +/- theorem nnreal.rpow_zero +/- theorem nnreal.zero_rpow + theorem real.div_rpow + theorem real.inv_rpow +/- theorem real.one_le_rpow 2020-06-09 07:06:53 45567dc chore(algebra/big_operators): add `@[simp] lemma sum_eq_zero_iff` (#2998) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.sum_eq_zero_iff 2020-06-09 05:24:03 24ce416 chore(data/matrix/basic): clean up of new lemmas on matrix numerals (#2996) Generalise and improve use of `@[simp]` for some newly added lemmas about matrix numerals. ESTIMATED CHANGES Modified src/data/matrix/basic.lean - theorem matrix.bit0_apply_apply + theorem matrix.bit0_val - theorem matrix.bit1_apply_apply + theorem matrix.bit1_val + theorem matrix.bit1_val_eq + theorem matrix.bit1_val_ne 2020-06-08 20:32:11 7bb2d89 feat(dynamics/fixed_points/topology): new file (#2991) * Move `is_fixed_pt_of_tendsto_iterate` from `topology.metric_space.contracting`, reformulate it without `∃`. * Add `is_closed_fixed_points`. * Move `dynamics.fixed_points` to `dynamics.fixed_points.basic`. ESTIMATED CHANGES Modified src/dynamics/circle/rotation_number/translation_number.lean Renamed src/dynamics/fixed_points.lean to src/dynamics/fixed_points/basic.lean Added src/dynamics/fixed_points/topology.lean + theorem is_closed_fixed_points + theorem is_fixed_pt_of_tendsto_iterate Modified src/order/fixed_points.lean Modified src/topology/basic.lean + theorem continuous_at.tendsto Modified src/topology/metric_space/contracting.lean - theorem is_fixed_pt_of_tendsto_iterate 2020-06-08 19:36:45 470ccd3 chore(scripts): update nolints.txt (#2993) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-08 19:36:43 94deddd feat(data/real/conjugate_exponents): define real conjugate exponents (#2992) ESTIMATED CHANGES Added src/data/real/conjugate_exponents.lean + def real.conjugate_exponent + theorem real.is_conjugate_exponent.conj_eq + theorem real.is_conjugate_exponent.ne_zero + theorem real.is_conjugate_exponent.one_div_ne_zero + theorem real.is_conjugate_exponent.one_div_pos + theorem real.is_conjugate_exponent.pos + theorem real.is_conjugate_exponent.sub_one_ne_zero + structure real.is_conjugate_exponent + theorem real.is_conjugate_exponent_conjugate_exponent + theorem real.is_conjugate_exponent_iff 2020-06-08 19:36:41 4ee67ac chore(*): use prod notation (#2989) The biggest field test of the new product notation. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/mean_inequalities.lean Modified src/data/monoid_algebra.lean Modified src/data/real/ennreal.lean Modified src/data/support.lean Modified src/field_theory/finite.lean Modified src/field_theory/mv_polynomial.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/number_theory/quadratic_reciprocity.lean +/- theorem zmod.prod_Ico_one_prime Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/multiplicity.lean 2020-06-08 19:36:39 a377993 feat(geometry/euclidean): angles and some basic lemmas (#2865) Define angles (undirected, between 0 and π, in terms of inner product), and prove some basic lemmas involving angles, for real inner product spaces and Euclidean affine spaces. From the 100-theorems list, this provides versions of * 04 Pythagorean Theorem, * 65 Isosceles Triangle Theorem and * 94 The Law of Cosines, with various existing definitions implicitly providing * 91 The Triangle Inequality. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem abs_inner_div_norm_mul_norm_eq_one_iff + theorem abs_inner_div_norm_mul_norm_eq_one_of_ne_zero_of_ne_zero_mul + theorem abs_inner_div_norm_mul_norm_le_one + theorem inner_div_norm_mul_norm_eq_neg_one_iff + theorem inner_div_norm_mul_norm_eq_neg_one_of_ne_zero_of_neg_mul + theorem inner_div_norm_mul_norm_eq_one_iff + theorem inner_div_norm_mul_norm_eq_one_of_ne_zero_of_pos_mul + theorem inner_eq_norm_add_mul_self_sub_norm_mul_self_sub_norm_mul_self_div_two + theorem inner_eq_norm_add_mul_self_sub_norm_sub_mul_self_div_four + theorem inner_eq_norm_mul_self_add_norm_mul_self_sub_norm_sub_mul_self_div_two + theorem inner_smul_self_left + theorem inner_smul_self_right + theorem norm_add_square_eq_norm_square_add_norm_square + theorem norm_add_square_eq_norm_square_add_norm_square_iff_inner_eq_zero + theorem norm_sub_square_eq_norm_square_add_norm_square + theorem norm_sub_square_eq_norm_square_add_norm_square_iff_inner_eq_zero Modified src/geometry/euclidean.lean + def euclidean_geometry.angle + theorem euclidean_geometry.angle_add_angle_eq_pi_of_angle_eq_pi + theorem euclidean_geometry.angle_comm + theorem euclidean_geometry.angle_eq_angle_of_angle_eq_pi + theorem euclidean_geometry.angle_eq_angle_of_dist_eq + theorem euclidean_geometry.angle_eq_left + theorem euclidean_geometry.angle_eq_of_ne + theorem euclidean_geometry.angle_eq_right + theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_left + theorem euclidean_geometry.angle_eq_zero_of_angle_eq_pi_right + theorem euclidean_geometry.angle_le_pi + theorem euclidean_geometry.angle_nonneg + theorem euclidean_geometry.dist_eq_of_angle_eq_angle_of_angle_ne_pi + theorem euclidean_geometry.dist_square_eq_dist_square_add_dist_square_iff_angle_eq_pi_div_two + theorem euclidean_geometry.dist_square_eq_dist_square_add_dist_square_sub_two_mul_dist_mul_dist_mul_cos_angle + def inner_product_geometry.angle + theorem inner_product_geometry.angle_add_angle_eq_pi_of_angle_eq_pi + theorem inner_product_geometry.angle_comm + theorem inner_product_geometry.angle_eq_pi_iff + theorem inner_product_geometry.angle_eq_zero_iff + theorem inner_product_geometry.angle_le_pi + theorem inner_product_geometry.angle_neg_left + theorem inner_product_geometry.angle_neg_neg + theorem inner_product_geometry.angle_neg_right + theorem inner_product_geometry.angle_neg_self_of_nonzero + theorem inner_product_geometry.angle_nonneg + theorem inner_product_geometry.angle_self + theorem inner_product_geometry.angle_self_neg_of_nonzero + theorem inner_product_geometry.angle_smul_left_of_neg + theorem inner_product_geometry.angle_smul_left_of_pos + theorem inner_product_geometry.angle_smul_right_of_neg + theorem inner_product_geometry.angle_smul_right_of_pos + theorem inner_product_geometry.angle_sub_eq_angle_sub_rev_of_norm_eq + theorem inner_product_geometry.angle_zero_left + theorem inner_product_geometry.angle_zero_right + theorem inner_product_geometry.cos_angle + theorem inner_product_geometry.cos_angle_mul_norm_mul_norm + theorem inner_product_geometry.inner_eq_zero_iff_angle_eq_pi_div_two + theorem inner_product_geometry.norm_add_square_eq_norm_square_add_norm_square' + theorem inner_product_geometry.norm_add_square_eq_norm_square_add_norm_square_iff_angle_eq_pi_div_two + theorem inner_product_geometry.norm_eq_of_angle_sub_eq_angle_sub_rev_of_angle_ne_pi + theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square' + theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square_iff_angle_eq_pi_div_two + theorem inner_product_geometry.norm_sub_square_eq_norm_square_add_norm_square_sub_two_mul_norm_mul_norm_mul_cos_angle + theorem inner_product_geometry.sin_angle_mul_norm_mul_norm 2020-06-08 19:05:30 dbbd696 feat(order/ideal): order ideals, cofinal sets and the Rasiowa-Sikorski lemma (#2850) We define order ideals and cofinal sets, and use them to prove the (very simple) Rasiowa-Sikorski lemma: given a countable family of cofinal subsets of an inhabited preorder, there is an upwards directed set meeting each one. This provides an API for certain recursive constructions. ESTIMATED CHANGES Added src/order/ideal.lean + theorem order.cofinal.above_mem + theorem order.cofinal.le_above + structure order.cofinal + theorem order.cofinal_meets_ideal_of_cofinals + def order.ideal.principal + structure order.ideal + def order.ideal_of_cofinals + theorem order.mem_ideal_of_cofinals + theorem order.sequence_of_cofinals.encode_mem + theorem order.sequence_of_cofinals.monotone 2020-06-08 17:34:19 d204daa chore(*): add docs and nolints (#2990) Other changes: * Reuse `gmultiples_hom` for `AddCommGroup.as_hom`. * Reuse `add_monoid_hom.ext_int` for `AddCommGroup.int_hom_ext`. * Drop the following definitions, define an `instance` right away instead: - `algebra.div`; - `monoid_hom.one`, `add_monoid_hom.zero`; - `monoid_hom.mul`, `add_monoid_hom.add`; - `monoid_hom.inv`, `add_monoid_hom.neg`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/field.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/defs.lean Modified src/algebra/group/hom.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean 2020-06-08 17:34:17 9fba817 refactor(algebra/*): move `commute` below `ring` in `import`s (#2973) Fixes #1865 API changes: * drop lemmas about unbundled `center`; * add `to_additive` to `semiconj_by` and `commute`; * drop `inv_comm_of_comm` in favor of `commute.left_inv`, same with `inv_comm_of_comm` and `commute.left_inv'`; * rename `monoid_hom.map_commute` to `commute.map`, same with `semiconj_by`; * drop `commute.cast_*_*` and `nat/int/rat.mul_cast_comm`, add `nat/int/rat.cast_commute` and `nat.int.rat.commute_cast`; * add `commute.mul_fpow`. ESTIMATED CHANGES Deleted src/algebra/commute.lean - theorem add_monoid.centralizer_closure - def centralizer.add_submonoid - theorem centralizer.inter_units_is_subgroup - def centralizer - theorem commute.add_left - theorem commute.add_right - theorem commute.cast_int_left - theorem commute.cast_int_right - theorem commute.cast_nat_left - theorem commute.cast_nat_right - theorem commute.div_left - theorem commute.div_right - theorem commute.finv_finv - theorem commute.finv_left - theorem commute.finv_left_iff - theorem commute.finv_right - theorem commute.finv_right_iff - theorem commute.gpow_gpow - theorem commute.gpow_gpow_self - theorem commute.gpow_left - theorem commute.gpow_right - theorem commute.gpow_self - theorem commute.gsmul_gsmul - theorem commute.gsmul_left - theorem commute.gsmul_right - theorem commute.gsmul_self - theorem commute.inv_inv - theorem commute.inv_inv_iff - theorem commute.inv_left - theorem commute.inv_left_iff - theorem commute.inv_right - theorem commute.inv_right_iff - theorem commute.list_prod_left - theorem commute.list_prod_right - theorem commute.mul_left - theorem commute.mul_right - theorem commute.neg_left - theorem commute.neg_left_iff - theorem commute.neg_one_left - theorem commute.neg_one_right - theorem commute.neg_right - theorem commute.neg_right_iff - theorem commute.nsmul_left - theorem commute.nsmul_nsmul - theorem commute.nsmul_right - theorem commute.nsmul_self - theorem commute.one_left - theorem commute.one_right - theorem commute.pow_left - theorem commute.pow_pow - theorem commute.pow_pow_self - theorem commute.pow_right - theorem commute.pow_self - theorem commute.self_gpow - theorem commute.self_gsmul - theorem commute.self_gsmul_gsmul - theorem commute.self_nsmul - theorem commute.self_nsmul_nsmul - theorem commute.self_pow - theorem commute.sub_left - theorem commute.sub_right - theorem commute.units_coe - theorem commute.units_coe_iff - theorem commute.units_inv_left - theorem commute.units_inv_left_iff - theorem commute.units_inv_right - theorem commute.units_inv_right_iff - theorem commute.units_of_coe - theorem commute.zero_left - theorem commute.zero_right - def commute - theorem group.centralizer_closure - theorem mem_centralizer - theorem monoid.centralizer_closure - theorem neg_pow - theorem ring.centralizer_closure - def set.centralizer.add_submonoid - def submonoid.centralizer - def submonoid.set.centralizer Modified src/algebra/geom_sum.lean Modified src/algebra/group/basic.lean - theorem inv_comm_of_comm Added src/algebra/group/commute.lean + theorem commute.inv_inv + theorem commute.inv_inv_iff + theorem commute.inv_left + theorem commute.inv_left_iff + theorem commute.inv_right + theorem commute.inv_right_iff + theorem commute.mul_left + theorem commute.mul_right + theorem commute.one_left + theorem commute.one_right + theorem commute.units_coe + theorem commute.units_coe_iff + theorem commute.units_inv_left + theorem commute.units_inv_left_iff + theorem commute.units_inv_right + theorem commute.units_inv_right_iff + theorem commute.units_of_coe + def commute Modified src/algebra/group/hom.lean Added src/algebra/group/semiconj.lean + theorem semiconj_by.conj_mk + theorem semiconj_by.inv_inv_symm + theorem semiconj_by.inv_inv_symm_iff + theorem semiconj_by.inv_right + theorem semiconj_by.inv_right_iff + theorem semiconj_by.inv_symm_left + theorem semiconj_by.inv_symm_left_iff + theorem semiconj_by.mul_left + theorem semiconj_by.mul_right + theorem semiconj_by.one_left + theorem semiconj_by.one_right + theorem semiconj_by.units_coe + theorem semiconj_by.units_coe_iff + theorem semiconj_by.units_inv_right + theorem semiconj_by.units_inv_right_iff + theorem semiconj_by.units_inv_symm_left + theorem semiconj_by.units_inv_symm_left_iff + theorem semiconj_by.units_of_coe + def semiconj_by + theorem units.mk_semiconj_by Modified src/algebra/group_power.lean + theorem commute.gpow_gpow + theorem commute.gpow_gpow_self + theorem commute.gpow_left + theorem commute.gpow_right + theorem commute.gpow_self + theorem commute.gsmul_gsmul + theorem commute.gsmul_left + theorem commute.gsmul_right + theorem commute.gsmul_self + theorem commute.mul_gpow + theorem commute.mul_pow + theorem commute.nsmul_left + theorem commute.nsmul_nsmul + theorem commute.nsmul_right + theorem commute.nsmul_self + theorem commute.pow_left + theorem commute.pow_pow + theorem commute.pow_pow_self + theorem commute.pow_right + theorem commute.pow_self + theorem commute.self_gpow + theorem commute.self_gsmul + theorem commute.self_gsmul_gsmul + theorem commute.self_nsmul + theorem commute.self_nsmul_nsmul + theorem commute.self_pow + theorem commute.units_gpow_left + theorem commute.units_gpow_right +/- theorem gpow_one +/- theorem mul_gpow + theorem neg_pow +/- theorem pow_mul_comm' + theorem semiconj_by.gpow_right + theorem semiconj_by.gsmul_gsmul + theorem semiconj_by.gsmul_left + theorem semiconj_by.gsmul_right + theorem semiconj_by.nsmul_left + theorem semiconj_by.nsmul_nsmul + theorem semiconj_by.nsmul_right + theorem semiconj_by.pow_right + theorem semiconj_by.units_gpow_right + theorem units.conj_pow' + theorem units.conj_pow Modified src/algebra/group_with_zero.lean + theorem commute.div_left + theorem commute.div_right + theorem commute.inv_inv' + theorem commute.inv_left' + theorem commute.inv_left_iff' + theorem commute.inv_right' + theorem commute.inv_right_iff' - theorem inv_comm_of_comm' + theorem semiconj_by.div_right + theorem semiconj_by.inv_right' + theorem semiconj_by.inv_right_iff' + theorem semiconj_by.inv_symm_left' + theorem semiconj_by.inv_symm_left_iff' Modified src/algebra/group_with_zero_power.lean + theorem commute.fpow_fpow + theorem commute.fpow_fpow_self + theorem commute.fpow_left + theorem commute.fpow_right + theorem commute.fpow_self + theorem commute.mul_fpow + theorem commute.self_fpow - theorem fpow_mul_comm +/- theorem mul_fpow + theorem semiconj_by.fpow_right Modified src/algebra/ring.lean + theorem commute.add_left + theorem commute.add_right + theorem commute.neg_left + theorem commute.neg_left_iff + theorem commute.neg_one_left + theorem commute.neg_one_right + theorem commute.neg_right + theorem commute.neg_right_iff + theorem commute.sub_left + theorem commute.sub_right + theorem commute.zero_left + theorem commute.zero_right + theorem semiconj_by.add_left + theorem semiconj_by.add_right + theorem semiconj_by.neg_left + theorem semiconj_by.neg_left_iff + theorem semiconj_by.neg_one_left + theorem semiconj_by.neg_one_right + theorem semiconj_by.neg_right + theorem semiconj_by.neg_right_iff + theorem semiconj_by.sub_left + theorem semiconj_by.sub_right + theorem semiconj_by.zero_left + theorem semiconj_by.zero_right Deleted src/algebra/semiconj.lean - theorem semiconj_by.add_left - theorem semiconj_by.add_right - theorem semiconj_by.cast_nat_left - theorem semiconj_by.cast_nat_right - theorem semiconj_by.conj_mk - theorem semiconj_by.finv_symm_left - theorem semiconj_by.finv_symm_left_iff - theorem semiconj_by.gpow_right - theorem semiconj_by.gsmul_gsmul - theorem semiconj_by.gsmul_left - theorem semiconj_by.gsmul_right - theorem semiconj_by.inv_inv_symm - theorem semiconj_by.inv_inv_symm_iff - theorem semiconj_by.inv_right - theorem semiconj_by.inv_right_iff - theorem semiconj_by.inv_symm_left - theorem semiconj_by.inv_symm_left_iff - theorem semiconj_by.mul_left - theorem semiconj_by.mul_right - theorem semiconj_by.neg_left - theorem semiconj_by.neg_left_iff - theorem semiconj_by.neg_one_left - theorem semiconj_by.neg_one_right - theorem semiconj_by.neg_right - theorem semiconj_by.neg_right_iff - theorem semiconj_by.nsmul_left - theorem semiconj_by.nsmul_nsmul - theorem semiconj_by.nsmul_right - theorem semiconj_by.one_left - theorem semiconj_by.one_right - theorem semiconj_by.pow_right - theorem semiconj_by.sub_left - theorem semiconj_by.sub_right - theorem semiconj_by.units_coe - theorem semiconj_by.units_coe_iff - theorem semiconj_by.units_gpow_right - theorem semiconj_by.units_inv_right - theorem semiconj_by.units_inv_right_iff - theorem semiconj_by.units_inv_symm_left - theorem semiconj_by.units_inv_symm_left_iff - theorem semiconj_by.units_of_coe - theorem semiconj_by.zero_left - theorem semiconj_by.zero_right - def semiconj_by - theorem units.conj_pow' - theorem units.conj_pow - theorem units.mk_semiconj_by Modified src/data/int/basic.lean + theorem int.cast_commute + theorem int.commute_cast - theorem int.mul_cast_comm Modified src/data/nat/cast.lean + theorem nat.cast_commute +/- theorem nat.coe_cast_ring_hom + theorem nat.commute_cast - theorem nat.mul_cast_comm Modified src/data/nat/choose.lean Modified src/data/rat/cast.lean + theorem rat.cast_commute + theorem rat.commute_cast - theorem rat.mul_cast_comm Modified src/ring_theory/algebra.lean 2020-06-08 16:39:55 2caf479 feat(data/matrix/basic): add bit0, bit1 lemmas (#2987) Based on a conversation in https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Matrix.20equality.20by.20extensionality we define simp lemmas for matrices represented by numerals. This should result in better representation of scalar multiples of `one_val : matrix n n a`. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.bit0_apply_apply + theorem matrix.bit1_apply_apply 2020-06-08 15:06:15 3ca4c27 chore(algebra/ordered_ring): use le instead of ge (#2986) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean +/- theorem le_of_mul_le_mul_left +/- theorem le_of_mul_le_mul_right - theorem le_of_mul_le_of_ge_one + theorem le_of_mul_le_of_one_le +/- theorem lt_of_mul_lt_mul_left +/- theorem lt_of_mul_lt_mul_right +/- theorem mul_lt_mul' +/- theorem mul_neg_of_neg_of_pos +/- theorem mul_neg_of_pos_of_neg +/- theorem mul_nonpos_of_nonneg_of_nonpos +/- theorem mul_nonpos_of_nonpos_of_nonneg + theorem neg_one_lt_zero +/- theorem nonneg_le_nonneg_of_squares_le + theorem one_le_two +/- theorem one_lt_two - theorem two_ge_one - theorem two_gt_one - theorem zero_gt_neg_one 2020-06-08 15:06:12 47f7335 feat(data/nat/digits): digits, and divisibility tests for Freek 85 (#2686) I couldn't quite believe how much low hanging fruit there is on Lean's attempt at Freek's list, and so took a moment to do surely the lowest of the low... This provides `digits b n`, which extracts the digits of a natural number `n` with respect to a base `b`, and `of_digits b L`, which reconstitutes a number from its digits, proves a few simple facts about these functions, and proves the usual divisibility by 3, 9, and 11 tests. ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem dvd_iff_dvd_of_dvd_sub + theorem dvd_mul_sub_mul Modified src/data/fintype/card.lean + theorem list.alternating_prod_eq_finset_prod + theorem list.alternating_sum_eq_finset_sum Modified src/data/int/basic.lean +/- theorem int.nat_cast_eq_coe_nat Modified src/data/list/basic.lean + theorem list.alternating_prod_cons_cons + theorem list.alternating_prod_nil + theorem list.alternating_prod_singleton + theorem list.alternating_sum_cons_cons Modified src/data/list/defs.lean + def list.alternating_prod + def list.alternating_sum Modified src/data/nat/basic.lean + theorem nat.div_lt_self' Added src/data/nat/digits.lean + theorem coe_int_of_digits + theorem coe_of_digits + def digits + theorem digits_add + theorem digits_add_two_add_one + def digits_aux + def digits_aux_0 + def digits_aux_1 + theorem digits_aux_def + theorem digits_aux_zero + theorem digits_of_digits + theorem digits_of_lt + theorem digits_one_succ + theorem digits_zero + theorem digits_zero_of_eq_zero + theorem dvd_iff_dvd_digits_sum + theorem dvd_iff_dvd_of_digits + theorem dvd_of_digits_sub_of_digits + theorem eleven_dvd_iff + theorem modeq_digits_sum + theorem modeq_eleven_digits_sum + theorem modeq_nine_digits_sum + theorem modeq_three_digits_sum + theorem nine_dvd_iff + def of_digits + theorem of_digits_digits + theorem of_digits_eq_foldr + theorem of_digits_mod + theorem of_digits_modeq' + theorem of_digits_modeq + theorem of_digits_neg_one + theorem of_digits_one + theorem of_digits_one_cons + theorem of_digits_zmod + theorem of_digits_zmodeq' + theorem of_digits_zmodeq + theorem three_dvd_iff + theorem zmodeq_of_digits_digits 2020-06-08 13:54:41 a793042 feat(ring_theory/fractional_ideal): pushforward of fractional ideals (#2984) Extend `submodule.map` to fractional ideals by showing that the pushforward is also fractional. For this, we need a slightly tweaked definition of fractional ideal: if we localize `R` at the submonoid `S`, the old definition required a nonzero `x : R` such that `xI ≤ R`, and the new definition requires `x ∈ S` instead. In the most common case, `S = non_zero_divisors R`, the results are exactly the same, and all operations are still the same. A practical use of these pushforwards is included: `canonical_equiv` states fractional ideals don't depend on choice of localization map. ESTIMATED CHANGES Modified src/data/equiv/ring.lean + theorem ring_equiv.coe_add_equiv_refl + theorem ring_equiv.coe_mul_equiv_refl + theorem ring_equiv.refl_apply + theorem ring_equiv.to_add_monoid_hom_refl - theorem ring_equiv.to_fun_eq_coe + theorem ring_equiv.to_fun_eq_coe_fun + theorem ring_equiv.to_monoid_hom_refl + theorem ring_equiv.to_ring_hom_refl Modified src/group_theory/submonoid.lean + theorem submonoid.map_id Modified src/ring_theory/algebra.lean + theorem alg_equiv.coe_refl + theorem alg_equiv.comp_symm + theorem alg_equiv.symm_comp Modified src/ring_theory/algebra_operations.lean + theorem submodule.map_mul Modified src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.coe_add + theorem ring.fractional_ideal.coe_coe_ideal + theorem ring.fractional_ideal.coe_ideal_span_singleton + theorem ring.fractional_ideal.coe_inv_of_nonzero + theorem ring.fractional_ideal.coe_map + theorem ring.fractional_ideal.coe_mul + theorem ring.fractional_ideal.coe_ne_bot_iff_nonzero + theorem ring.fractional_ideal.coe_one +/- theorem ring.fractional_ideal.coe_span_singleton + theorem ring.fractional_ideal.coe_zero +/- theorem ring.fractional_ideal.eq_span_singleton_of_principal +/- theorem ring.fractional_ideal.ext + theorem ring.fractional_ideal.fractional_map - theorem ring.fractional_ideal.invertible_of_principal + theorem ring.fractional_ideal.is_principal_iff + def ring.fractional_ideal.map + theorem ring.fractional_ideal.map_add + theorem ring.fractional_ideal.map_comp + def ring.fractional_ideal.map_equiv + theorem ring.fractional_ideal.map_equiv_apply + theorem ring.fractional_ideal.map_equiv_refl + theorem ring.fractional_ideal.map_id + theorem ring.fractional_ideal.map_mul +/- theorem ring.fractional_ideal.mem_singleton_mul + theorem ring.fractional_ideal.mul_generator_self_inv - theorem ring.fractional_ideal.nonzero_iff_val_nonzero +/- def ring.fractional_ideal.span_singleton + theorem ring.fractional_ideal.span_singleton_eq_zero_iff +/- theorem ring.fractional_ideal.span_singleton_fractional +/- theorem ring.fractional_ideal.span_singleton_mul_span_singleton +/- theorem ring.fractional_ideal.span_singleton_one +/- theorem ring.fractional_ideal.span_singleton_zero - theorem ring.fractional_ideal.val_add - theorem ring.fractional_ideal.val_coe_ideal + theorem ring.fractional_ideal.val_eq_coe - theorem ring.fractional_ideal.val_inv_of_nonzero - theorem ring.fractional_ideal.val_mul - theorem ring.fractional_ideal.val_one - theorem ring.fractional_ideal.val_span_singleton - theorem ring.fractional_ideal.val_zero 2020-06-08 07:55:43 c360e01 feat(ring/localization): add fraction map for int to rat cast (#2921) ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.mul_denom_eq_num - theorem rat.mul_own_denom_eq_num Modified src/ring_theory/localization.lean + def fraction_map.int.fraction_map 2020-06-08 07:00:32 592f769 feat(dynamics/circle): define translation number of a lift of a circle homeo (#2974) Define a structure `circle_deg1_lift`, a function `translation_number : circle_deg1_lift → ℝ`, and prove some basic properties ESTIMATED CHANGES Modified src/algebra/semiconj.lean - theorem semiconj_by.units_conj_mk + theorem units.conj_pow' + theorem units.conj_pow + theorem units.mk_semiconj_by Added src/dynamics/circle/rotation_number/translation_number.lean + theorem circle_deg1_lift.ceil_map_map_zero_le + theorem circle_deg1_lift.coe_inj + theorem circle_deg1_lift.coe_mk + theorem circle_deg1_lift.coe_mul + theorem circle_deg1_lift.coe_one + theorem circle_deg1_lift.coe_pow + theorem circle_deg1_lift.commute_add_int + theorem circle_deg1_lift.commute_add_nat + theorem circle_deg1_lift.commute_iff_commute + theorem circle_deg1_lift.commute_int_add + theorem circle_deg1_lift.commute_nat_add + theorem circle_deg1_lift.commute_sub_int + theorem circle_deg1_lift.commute_sub_nat + theorem circle_deg1_lift.continuous_pow + theorem circle_deg1_lift.dist_map_map_zero_lt + theorem circle_deg1_lift.dist_map_zero_lt_of_semiconj + theorem circle_deg1_lift.dist_map_zero_lt_of_semiconj_by + theorem circle_deg1_lift.dist_map_zero_translation_number_le + theorem circle_deg1_lift.dist_pow_map_zero_mul_translation_number_le + theorem circle_deg1_lift.exists_eq_add_translation_number + theorem circle_deg1_lift.ext + theorem circle_deg1_lift.ext_iff + theorem circle_deg1_lift.floor_map_map_zero_le + theorem circle_deg1_lift.floor_sub_le_translation_number + theorem circle_deg1_lift.forall_map_sub_of_Icc + theorem circle_deg1_lift.inf_apply + theorem circle_deg1_lift.iterate_eq_of_map_eq_add_int + theorem circle_deg1_lift.iterate_le_of_map_le_add_int + theorem circle_deg1_lift.iterate_mono + theorem circle_deg1_lift.iterate_monotone + theorem circle_deg1_lift.iterate_pos_eq_iff + theorem circle_deg1_lift.iterate_pos_le_iff + theorem circle_deg1_lift.iterate_pos_lt_iff + theorem circle_deg1_lift.le_ceil_map_map_zero + theorem circle_deg1_lift.le_floor_map_map_zero + theorem circle_deg1_lift.le_iterate_of_add_int_le_map + theorem circle_deg1_lift.le_iterate_pos_iff + theorem circle_deg1_lift.le_map_map_zero + theorem circle_deg1_lift.le_map_of_map_zero + theorem circle_deg1_lift.le_translation_number_of_add_int_le + theorem circle_deg1_lift.le_translation_number_of_add_le + theorem circle_deg1_lift.le_translation_number_of_add_nat_le + theorem circle_deg1_lift.lt_iterate_pos_iff + theorem circle_deg1_lift.lt_map_map_zero + theorem circle_deg1_lift.lt_map_of_int_lt_translation_number + theorem circle_deg1_lift.lt_map_of_nat_lt_translation_number + theorem circle_deg1_lift.lt_translation_number_of_forall_add_lt + theorem circle_deg1_lift.map_add_int + theorem circle_deg1_lift.map_add_nat + theorem circle_deg1_lift.map_add_one + theorem circle_deg1_lift.map_fract_sub_fract_eq + theorem circle_deg1_lift.map_int_add + theorem circle_deg1_lift.map_int_of_map_zero + theorem circle_deg1_lift.map_le_of_map_zero + theorem circle_deg1_lift.map_lt_of_translation_number_lt_int + theorem circle_deg1_lift.map_lt_of_translation_number_lt_nat + theorem circle_deg1_lift.map_map_zero_le + theorem circle_deg1_lift.map_map_zero_lt + theorem circle_deg1_lift.map_nat_add + theorem circle_deg1_lift.map_one_add + theorem circle_deg1_lift.map_sub_int + theorem circle_deg1_lift.map_sub_nat + theorem circle_deg1_lift.mono + theorem circle_deg1_lift.mul_apply + theorem circle_deg1_lift.mul_floor_map_zero_le_floor_iterate_zero + theorem circle_deg1_lift.pow_mono + theorem circle_deg1_lift.pow_monotone + theorem circle_deg1_lift.semiconj_by_iff_semiconj + theorem circle_deg1_lift.sup_apply + theorem circle_deg1_lift.tendsto_translation_number' + theorem circle_deg1_lift.tendsto_translation_number + theorem circle_deg1_lift.tendsto_translation_number_aux + theorem circle_deg1_lift.tendsto_translation_number_of_dist_bounded_aux + theorem circle_deg1_lift.tendsto_translation_number₀' + theorem circle_deg1_lift.tendsto_translation_number₀ + def circle_deg1_lift.translate + theorem circle_deg1_lift.translate_apply + theorem circle_deg1_lift.translate_gpow + theorem circle_deg1_lift.translate_inv_apply + theorem circle_deg1_lift.translate_iterate + theorem circle_deg1_lift.translate_pow + def circle_deg1_lift.translation_number + theorem circle_deg1_lift.translation_number_conj_eq' + theorem circle_deg1_lift.translation_number_conj_eq + theorem circle_deg1_lift.translation_number_eq_int_iff + theorem circle_deg1_lift.translation_number_eq_of_dist_bounded + theorem circle_deg1_lift.translation_number_eq_of_semiconj + theorem circle_deg1_lift.translation_number_eq_of_semiconj_by + theorem circle_deg1_lift.translation_number_eq_of_tendsto_aux + theorem circle_deg1_lift.translation_number_eq_of_tendsto₀' + theorem circle_deg1_lift.translation_number_eq_of_tendsto₀ + theorem circle_deg1_lift.translation_number_eq_rat_iff + theorem circle_deg1_lift.translation_number_le_ceil_sub + theorem circle_deg1_lift.translation_number_le_of_le_add + theorem circle_deg1_lift.translation_number_le_of_le_add_int + theorem circle_deg1_lift.translation_number_le_of_le_add_nat + theorem circle_deg1_lift.translation_number_lt_of_forall_lt_add + theorem circle_deg1_lift.translation_number_map_id + theorem circle_deg1_lift.translation_number_mono + theorem circle_deg1_lift.translation_number_mul_of_commute + theorem circle_deg1_lift.translation_number_of_eq_add_int + theorem circle_deg1_lift.translation_number_of_map_pow_eq_add_int + theorem circle_deg1_lift.translation_number_pow + theorem circle_deg1_lift.translation_number_translate + def circle_deg1_lift.transnum_aux_seq + theorem circle_deg1_lift.transnum_aux_seq_def + theorem circle_deg1_lift.transnum_aux_seq_dist_lt + theorem circle_deg1_lift.transnum_aux_seq_zero + theorem circle_deg1_lift.units_coe + structure circle_deg1_lift 2020-06-07 17:42:45 edd0209 ci(deploy_docs.sh): generalize for use in doc-gen CI (#2978) This moves some installation steps out of `deploy_docs.sh` script and makes it accept several path arguments so that it can be re-used in the CI for `doc-gen`. The associated `doc-gen` PR: https://github.com/leanprover-community/doc-gen/pull/27 will be updated after this is merged. ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/deploy_docs.sh 2020-06-07 16:14:35 be21b9a fix(data/nat/basic): use protected attribute (#2976) ESTIMATED CHANGES Modified src/data/nat/basic.lean 2020-06-07 11:42:06 516d9b5 chore(scripts): update nolints.txt (#2975) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-07 09:39:31 a7f0069 chore(algebra/ring): fix docs, `def`/`lemma` (#2972) ESTIMATED CHANGES Modified src/algebra/ring.lean - def add_mul - def mul_add - def mul_sub - def sub_mul Modified src/analysis/normed_space/basic.lean +/- theorem norm_tsum_le_tsum_norm 2020-06-07 04:23:17 16ad1b4 chore(topology/basic): remove unneeded `mk_protected` (#2971) It was already fixed by adding `@[protect_proj]`. ESTIMATED CHANGES Modified src/topology/basic.lean 2020-06-07 03:29:48 b59f777 feat(category_theory/eq_to_hom): functor extensionality using heq (#2712) Used in https://github.com/rwbarton/lean-homotopy-theory. Also proves `faithful.div_comp`, but using it would create an import loop so for now I just leave a comment. ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean + theorem category_theory.functor.hext Modified src/category_theory/fully_faithful.lean 2020-06-06 20:56:40 2a36d25 chore(analysis/normed_space/mazur_ulam): add `to_affine_map` (#2963) ESTIMATED CHANGES Modified src/analysis/normed_space/mazur_ulam.lean + theorem isometric.coe_to_affine_map + def isometric.to_affine_map Modified src/linear_algebra/affine_space.lean + theorem affine_map.coe_mk' + def affine_map.mk' + theorem affine_map.mk'_linear 2020-06-06 18:14:53 a44c9a1 chore(*): protect some definitions to get rid of _root_ (#2846) These were amongst the worst offenders. ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/computability/primrec.lean Modified src/data/complex/exponential.lean Modified src/data/list/basic.lean Modified src/data/monoid_algebra.lean Modified src/data/nat/basic.lean Modified src/data/nat/choose.lean Modified src/data/nat/parity.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/padics/padic_norm.lean Modified src/data/pnat/basic.lean Modified src/data/real/cardinality.lean Modified src/data/real/cau_seq.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/multiplicity.lean Modified src/topology/basic.lean Modified test/ring_exp.lean 2020-06-06 17:40:41 e48c2af feat(data/padics/padic_norm): New padic_val_nat convenience functions (#2970) Convenience functions to allow us to deal either with the p-adic valuation or with multiplicity in the naturals, depending on what is locally convenient. ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean + def padic_val_rat.padic_val_nat + theorem padic_val_rat.padic_val_nat_def + theorem padic_val_rat.padic_val_rat_of_nat + theorem padic_val_rat.zero_le_padic_val_rat_of_nat 2020-06-06 17:40:39 589bdb9 feat(number_theory/lucas_lehmer): prime (2^127 - 1) (#2842) This PR 1. proves the sufficiency of the Lucas-Lehmer test for Mersenne primes 2. provides a tactic that uses `norm_num` to do each step of the calculation of Lucas-Lehmer residues 3. proves 2^127 - 1 = 170141183460469231731687303715884105727 is prime It doesn't 1. prove the necessity of the Lucas-Lehmer test (mathlib certainly has the necessary material if someone wants to do this) 2. use the trick `n ≡ (n % 2^p) + (n / 2^p) [MOD 2^p - 1]` that is essential to calculating Lucas-Lehmer residues quickly 3. manage to prove any "computer era" primes are prime! (Although my guess is that 2^521 - 1 would run in <1 day with the current implementation.) I think using "the trick" is very plausible, and would be a fun project for someone who wanted to experiment with certified/fast arithmetic in Lean. It likely would make much larger Mersenne primes accessible. This is a tidy-up and completion of work started by a student, Ainsley Pahljina. ESTIMATED CHANGES Added archive/examples/mersenne_primes.lean Modified src/data/nat/parity.lean + theorem nat.two_not_dvd_two_mul_add_one + theorem nat.two_not_dvd_two_mul_sub_one Added src/number_theory/lucas_lehmer.lean + theorem lucas_lehmer.X.X_card + theorem lucas_lehmer.X.add_fst + theorem lucas_lehmer.X.add_snd + theorem lucas_lehmer.X.bit0_fst + theorem lucas_lehmer.X.bit0_snd + theorem lucas_lehmer.X.bit1_fst + theorem lucas_lehmer.X.bit1_snd + theorem lucas_lehmer.X.closed_form + theorem lucas_lehmer.X.coe_mul + theorem lucas_lehmer.X.coe_nat + theorem lucas_lehmer.X.ext + theorem lucas_lehmer.X.int_coe_fst + theorem lucas_lehmer.X.int_coe_snd + theorem lucas_lehmer.X.left_distrib + theorem lucas_lehmer.X.mul_fst + theorem lucas_lehmer.X.mul_snd + theorem lucas_lehmer.X.nat_coe_fst + theorem lucas_lehmer.X.nat_coe_snd + theorem lucas_lehmer.X.neg_fst + theorem lucas_lehmer.X.neg_snd + theorem lucas_lehmer.X.one_fst + theorem lucas_lehmer.X.one_snd + theorem lucas_lehmer.X.right_distrib + theorem lucas_lehmer.X.units_card + def lucas_lehmer.X.ω + theorem lucas_lehmer.X.ω_mul_ωb + def lucas_lehmer.X.ωb + theorem lucas_lehmer.X.ωb_mul_ω + def lucas_lehmer.X + theorem lucas_lehmer.int.coe_nat_pow_pred + theorem lucas_lehmer.int.coe_nat_two_pow_pred + def lucas_lehmer.lucas_lehmer_residue + def lucas_lehmer.lucas_lehmer_test + theorem lucas_lehmer.mersenne_coe_X + theorem lucas_lehmer.mersenne_int_ne_zero + theorem lucas_lehmer.order_ineq + theorem lucas_lehmer.order_ω + def lucas_lehmer.q + theorem lucas_lehmer.residue_eq_zero_iff_s_mod_eq_zero + def lucas_lehmer.s + def lucas_lehmer.s_mod + theorem lucas_lehmer.s_mod_lt + theorem lucas_lehmer.s_mod_mod + theorem lucas_lehmer.s_mod_nonneg + theorem lucas_lehmer.s_mod_succ + def lucas_lehmer.s_zmod + theorem lucas_lehmer.s_zmod_eq_s + theorem lucas_lehmer.s_zmod_eq_s_mod + theorem lucas_lehmer.two_lt_q + theorem lucas_lehmer.ω_pow_eq_neg_one + theorem lucas_lehmer.ω_pow_eq_one + theorem lucas_lehmer.ω_pow_formula + def lucas_lehmer.ω_unit + theorem lucas_lehmer.ω_unit_coe + theorem lucas_lehmer_sufficiency + def mersenne + theorem mersenne_pos + theorem modeq_mersenne 2020-06-06 15:39:02 ed5f636 chore(algebra/group_with_zero_power): review (#2966) List of changes: * Rename `gpow_neg_succ` to `gpow_neg_succ_of_nat` to match other names in `int` namespace. * Add `units.coe_gpow`. * Remove `fpow_neg_succ`, leave `fpow_neg_succ_of_nat`. * Rewrite the proof of `fpow_add` in the same way I rewrote the proof of `gpow_add`. * Make argument `a` implicit in some lemmas because they have an argument `ha : a ≠ 0`. * Remove `fpow_inv`. This was a copy of `fpow_neg_one` with a misleading name. * Remove `unit_pow` in favor of a more general `units.coe_pow`. * Remove `unit_gpow`, add a more general `units.coe_gpow'` instead. ESTIMATED CHANGES Modified src/algebra/commute.lean Modified src/algebra/field_power.lean Modified src/algebra/group_power.lean - theorem gpow_neg_succ + theorem gpow_neg_succ_of_nat - theorem gsmul_neg_succ + theorem gsmul_neg_succ_of_nat + theorem units.coe_gpow Modified src/algebra/group_with_zero_power.lean +/- theorem fpow_add +/- theorem fpow_add_one - theorem fpow_inv - theorem fpow_neg_succ +/- theorem fpow_neg_succ_of_nat +/- theorem fpow_one_add + theorem fpow_sub_one - theorem unit_gpow - theorem unit_pow + theorem units.coe_gpow' Modified src/algebra/semiconj.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean 2020-06-06 15:05:30 2f028a8 feat(analysis/convex/specific_functions): convexity of rpow (#2965) The function `x -> x^p` is convex on `[0, +\infty)` when `p \ge 1`. ESTIMATED CHANGES Modified src/analysis/convex/specific_functions.lean + theorem convex_on_rpow Modified src/analysis/special_functions/pow.lean 2020-06-06 13:23:11 f096a74 fix(tactic/ring_exp): `ring_exp` now recognizes that `2^(n+1+1) = 2 * 2^(n+1)` (#2929) [Zulip thread with bug report](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/ring_exp.20needs.20ring). The problem was a missing lemma so that `norm_num` could fire on `x^y` if `x` and `y` are coefficients. ESTIMATED CHANGES Modified src/tactic/ring_exp.lean + theorem tactic.ring_exp.pow_pf_c_c Modified test/ring_exp.lean 2020-06-06 09:55:46 6f27271 fix(documentation): fix a typo in the readme (#2969) ESTIMATED CHANGES Modified README.md 2020-06-06 08:01:08 d1ae307 chore(algebra/ordered_group): add `exists_pos_add_of_lt` (#2967) Also drop `protected` on `_root_.zero_lt_iff_ne_zero`. ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem exists_pos_add_of_lt + theorem zero_lt_iff_ne_zero 2020-06-06 07:15:17 d18061f chore(algebra/add_torsor): a few more lemmas and implicit args (#2964) ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_action.vadd_left_cancel_iff + theorem add_torsor.vadd_right_cancel_iff Modified src/linear_algebra/affine_space.lean 2020-06-05 16:16:43 1b2048d feat(analysis/special_functions/pow): rpow is differentiable (#2930) Differentiability of the real power function `x ↦ x^p`. Also register the lemmas about the composition with a function to make sure that the simplifier can handle automatically the differentiability of `x ↦ (f x)^p` and more complicated expressions involving powers. ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean + theorem has_deriv_at_interval_right_endpoint_of_tendsto_deriv + theorem has_deriv_at_of_has_deriv_at_of_ne - theorem has_fderiv_at_interval_right_endpoint_of_tendsto_deriv Modified src/analysis/special_functions/exp_log.lean + theorem real.exp_log_of_neg Modified src/analysis/special_functions/pow.lean + theorem complex.cpow_neg_one + theorem deriv_rpow + theorem deriv_rpow_of_one_le + theorem deriv_sqrt + theorem deriv_within_rpow + theorem deriv_within_rpow_of_one_le + theorem deriv_within_sqrt + theorem differentiable.rpow + theorem differentiable.rpow_of_one_le + theorem differentiable.sqrt + theorem differentiable_at.rpow + theorem differentiable_at.rpow_of_one_le + theorem differentiable_at.sqrt + theorem differentiable_on.rpow + theorem differentiable_on.rpow_of_one_le + theorem differentiable_on.sqrt + theorem differentiable_within_at.rpow + theorem differentiable_within_at.rpow_of_one_le + theorem differentiable_within_at.sqrt + theorem has_deriv_at.rpow + theorem has_deriv_at.rpow_of_one_le + theorem has_deriv_at.sqrt + theorem has_deriv_within_at.rpow + theorem has_deriv_within_at.rpow_of_one_le + theorem has_deriv_within_at.sqrt + theorem real.has_deriv_at_rpow + theorem real.has_deriv_at_rpow_of_neg + theorem real.has_deriv_at_rpow_of_one_le + theorem real.has_deriv_at_rpow_of_pos + theorem real.has_deriv_at_rpow_zero_of_one_le + theorem real.le_rpow_add + theorem real.rpow_add' +/- theorem real.rpow_add + theorem real.rpow_neg_one + theorem real.zero_rpow_le_one + theorem real.zero_rpow_nonneg 2020-06-05 13:39:37 5c851bd fix(tactic/squeeze_simp): make `squeeze_simp [←...]` work (#2961) `squeeze_simp` parses the argument list using a function in core Lean, and when support for backwards arguments was added to `simp`, it used a new function to parse the additional structure. This PR fixes the TODO left in the code to switch `squeeze_simp` to the new function by deleting the code that needed it - it wasn't used anyway! To add a test for the fix, I moved the single existing `squeeze_simp` test from the deprecated file `examples.lean` to a new file. ESTIMATED CHANGES Modified src/tactic/squeeze.lean Modified test/examples.lean Added test/squeeze.lean 2020-06-05 11:58:53 a433eb0 feat(analysis/special_functions/pow): real powers on ennreal (#2951) Real powers of extended nonnegative real numbers. We develop an API based on that of real powers of reals and nnreals, proving the corresponding lemmas. ESTIMATED CHANGES Modified src/analysis/special_functions/pow.lean + theorem ennreal.coe_mul_rpow + theorem ennreal.coe_rpow_of_ne_zero + theorem ennreal.coe_rpow_of_nonneg + theorem ennreal.mul_rpow_of_ne_top + theorem ennreal.mul_rpow_of_ne_zero + theorem ennreal.one_le_rpow + theorem ennreal.one_lt_rpow + theorem ennreal.one_rpow + theorem ennreal.rpow_add + theorem ennreal.rpow_eq_pow + theorem ennreal.rpow_eq_top_iff + theorem ennreal.rpow_eq_zero_iff + theorem ennreal.rpow_le_one + theorem ennreal.rpow_le_rpow + theorem ennreal.rpow_le_rpow_of_exponent_ge + theorem ennreal.rpow_le_rpow_of_exponent_le + theorem ennreal.rpow_lt_one + theorem ennreal.rpow_lt_rpow + theorem ennreal.rpow_lt_rpow_of_exponent_gt + theorem ennreal.rpow_lt_rpow_of_exponent_lt + theorem ennreal.rpow_mul + theorem ennreal.rpow_nat_cast + theorem ennreal.rpow_neg + theorem ennreal.rpow_neg_one + theorem ennreal.rpow_one + theorem ennreal.rpow_zero + theorem ennreal.top_rpow_def + theorem ennreal.top_rpow_of_neg + theorem ennreal.top_rpow_of_pos + theorem ennreal.zero_rpow_def + theorem ennreal.zero_rpow_of_neg + theorem ennreal.zero_rpow_of_pos +/- theorem nnreal.rpow_add +/- theorem nnreal.rpow_le_one +/- theorem real.rpow_le_one 2020-06-05 10:41:53 fd623d6 feat(data/set/intervals/image_preimage): new file (#2958) * Create a file for lemmas like `(λ x, x + a) '' Icc b c = Icc (b + a) (b + c)`. * Prove lemmas about images and preimages of all intervals under `x ↦ x ± a`, `x ↦ a ± x`, and `x ↦ -x`. * Move lemmas about multiplication from `basic`. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Modified src/data/set/intervals/basic.lean - theorem set.image_add_left_Icc - theorem set.image_add_right_Icc - theorem set.image_mul_left_Icc' - theorem set.image_mul_left_Icc - theorem set.image_mul_right_Icc' - theorem set.image_mul_right_Icc - theorem set.image_neg_Iic - theorem set.image_neg_Iio Added src/data/set/intervals/image_preimage.lean + theorem set.image_add_const_Icc + theorem set.image_add_const_Ici + theorem set.image_add_const_Ico + theorem set.image_add_const_Iic + theorem set.image_add_const_Iio + theorem set.image_add_const_Ioc + theorem set.image_add_const_Ioi + theorem set.image_add_const_Ioo + theorem set.image_const_add_Icc + theorem set.image_const_add_Ici + theorem set.image_const_add_Ico + theorem set.image_const_add_Iic + theorem set.image_const_add_Iio + theorem set.image_const_add_Ioc + theorem set.image_const_add_Ioi + theorem set.image_const_add_Ioo + theorem set.image_const_sub_Icc + theorem set.image_const_sub_Ici + theorem set.image_const_sub_Ico + theorem set.image_const_sub_Iic + theorem set.image_const_sub_Iio + theorem set.image_const_sub_Ioc + theorem set.image_const_sub_Ioi + theorem set.image_const_sub_Ioo + theorem set.image_mul_left_Icc' + theorem set.image_mul_left_Icc + theorem set.image_mul_right_Icc' + theorem set.image_mul_right_Icc + theorem set.image_neg_Icc + theorem set.image_neg_Ici + theorem set.image_neg_Ico + theorem set.image_neg_Iic + theorem set.image_neg_Iio + theorem set.image_neg_Ioc + theorem set.image_neg_Ioi + theorem set.image_neg_Ioo + theorem set.image_sub_const_Icc + theorem set.image_sub_const_Ici + theorem set.image_sub_const_Ico + theorem set.image_sub_const_Iic + theorem set.image_sub_const_Iio + theorem set.image_sub_const_Ioc + theorem set.image_sub_const_Ioi + theorem set.image_sub_const_Ioo + theorem set.preimage_add_const_Icc + theorem set.preimage_add_const_Ici + theorem set.preimage_add_const_Ico + theorem set.preimage_add_const_Iic + theorem set.preimage_add_const_Iio + theorem set.preimage_add_const_Ioc + theorem set.preimage_add_const_Ioi + theorem set.preimage_add_const_Ioo + theorem set.preimage_const_add_Icc + theorem set.preimage_const_add_Ici + theorem set.preimage_const_add_Ico + theorem set.preimage_const_add_Iic + theorem set.preimage_const_add_Iio + theorem set.preimage_const_add_Ioc + theorem set.preimage_const_add_Ioi + theorem set.preimage_const_add_Ioo + theorem set.preimage_const_sub_Icc + theorem set.preimage_const_sub_Ici + theorem set.preimage_const_sub_Ico + theorem set.preimage_const_sub_Iic + theorem set.preimage_const_sub_Iio + theorem set.preimage_const_sub_Ioc + theorem set.preimage_const_sub_Ioi + theorem set.preimage_const_sub_Ioo + theorem set.preimage_neg_Icc + theorem set.preimage_neg_Ici + theorem set.preimage_neg_Ico + theorem set.preimage_neg_Iic + theorem set.preimage_neg_Iio + theorem set.preimage_neg_Ioc + theorem set.preimage_neg_Ioi + theorem set.preimage_neg_Ioo + theorem set.preimage_sub_const_Icc + theorem set.preimage_sub_const_Ici + theorem set.preimage_sub_const_Ico + theorem set.preimage_sub_const_Iic + theorem set.preimage_sub_const_Iio + theorem set.preimage_sub_const_Ioc + theorem set.preimage_sub_const_Ioi + theorem set.preimage_sub_const_Ioo 2020-06-05 10:10:03 1ef65c9 feat(linear_algebra/quadratic_form): more constructions for quadratic forms (#2949) Define multiplication of two linear forms to give a quadratic form and addition of quadratic forms. With these definitions, we can write a generic binary quadratic form as `a • proj R₁ 0 0 + b • proj R₁ 0 1 + c • proj R₁ 1 1 : quadratic_form R₁ (fin 2 → R₁)`. In order to prove the linearity conditions on the constructions, there are new `simp` lemmas `polar_add_left`, `polar_smul_left`, `polar_add_right` and `polar_smul_right` copying from the corresponding fields of the `quadratic_form` structure, that use `⇑ Q` instead of `Q.to_fun`. The original field names have a `'` appended to avoid name clashes. ESTIMATED CHANGES Modified src/linear_algebra/bilinear_form.lean + def bilin_form.lin_mul_lin + theorem bilin_form.lin_mul_lin_apply + theorem bilin_form.lin_mul_lin_comp + theorem bilin_form.lin_mul_lin_comp_left + theorem bilin_form.lin_mul_lin_comp_right Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.add_apply + theorem quadratic_form.add_lin_mul_lin +/- def quadratic_form.associated + theorem quadratic_form.associated_lin_mul_lin - theorem quadratic_form.associated_smul + theorem quadratic_form.coe_fn_add + theorem quadratic_form.coe_fn_neg + theorem quadratic_form.coe_fn_smul +/- theorem quadratic_form.discr_smul + def quadratic_form.lin_mul_lin + theorem quadratic_form.lin_mul_lin_add + theorem quadratic_form.lin_mul_lin_apply + theorem quadratic_form.lin_mul_lin_comp + theorem quadratic_form.lin_mul_lin_self_pos_def + def quadratic_form.mk_left + theorem quadratic_form.neg_apply +/- def quadratic_form.polar + theorem quadratic_form.polar_add + theorem quadratic_form.polar_add_left + theorem quadratic_form.polar_add_right + theorem quadratic_form.polar_comm + theorem quadratic_form.polar_neg + theorem quadratic_form.polar_smul + theorem quadratic_form.polar_smul_left + theorem quadratic_form.polar_smul_right + theorem quadratic_form.pos_def.add + theorem quadratic_form.pos_def.smul + def quadratic_form.proj + theorem quadratic_form.proj_apply +/- theorem quadratic_form.smul_apply - theorem quadratic_form.smul_pos_def_of_nonzero - theorem quadratic_form.smul_pos_def_of_smul_nonzero + theorem quadratic_form.zero_apply 2020-06-05 08:41:12 31ceb62 feat(data/int|nat/basic): add `add_monoid_hom.ext_nat/int` (#2957) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.eq_on_inv Modified src/algebra/group_power.lean Modified src/data/int/basic.lean +/- theorem add_monoid_hom.eq_int_cast + theorem add_monoid_hom.eq_int_cast_hom + theorem add_monoid_hom.ext_int + def int.cast_add_hom + theorem int.coe_cast_add_hom Modified src/data/nat/cast.lean +/- theorem add_monoid_hom.eq_nat_cast + theorem add_monoid_hom.ext_nat +/- theorem nat.abs_cast +/- theorem nat.cast_bit0 +/- theorem nat.cast_bit1 +/- theorem nat.cast_max +/- theorem nat.cast_min +/- theorem nat.cast_pred +/- theorem nat.cast_sub +/- theorem nat.coe_cast_add_monoid_hom +/- theorem ring_hom.eq_nat_cast +/- theorem ring_hom.ext_nat +/- theorem ring_hom.map_nat_cast 2020-06-05 08:41:10 edb4422 feat(algebra/add_torsor): add `equiv.const_vadd` and `equiv.vadd_const` (#2907) Also define their `isometric.*` versions in `analysis/normed_space/add_torsor`. ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem add_torsor.vadd_vsub_vadd_cancel_left + theorem add_torsor.vadd_vsub_vadd_cancel_right + theorem add_torsor.vsub_sub_vsub_cancel_left + theorem add_torsor.vsub_sub_vsub_cancel_right - theorem add_torsor.vsub_sub_vsub_left_cancel - theorem add_torsor.vsub_sub_vsub_right_cancel + theorem equiv.coe_const_vadd + theorem equiv.coe_vadd_const + theorem equiv.coe_vadd_const_symm + def equiv.const_vadd + theorem equiv.const_vadd_add + def equiv.const_vadd_hom + theorem equiv.const_vadd_zero + def equiv.vadd_const Modified src/analysis/normed_space/add_torsor.lean + theorem dist_vadd_cancel_left + theorem dist_vadd_cancel_right + theorem isometric.coe_const_vadd + theorem isometric.coe_vadd_const + theorem isometric.coe_vadd_const_symm + def isometric.const_vadd + theorem isometric.const_vadd_zero + def isometric.vadd_const + theorem isometric.vadd_const_to_equiv 2020-06-05 07:28:47 a130c73 feat(topology/algebra/ordered): list of preconnected sets (#2943) A subset of a densely ordered conditionally complete lattice (e.g., `ℝ`) with order topology is preconnected if and only if it is one of the intervals. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.diff_compl + theorem set.diff_diff_cancel_left + theorem set.diff_diff_right + theorem set.diff_inter +/- theorem set.mem_diff_singleton + theorem set.subset_diff_singleton Modified src/data/set/intervals/basic.lean - theorem set.Icc_diff_Ico_eq_singleton + theorem set.Icc_diff_Ico_same - theorem set.Icc_diff_Ioc_eq_singleton + theorem set.Icc_diff_Ioc_same + theorem set.Icc_diff_Ioo_same + theorem set.Icc_diff_both + theorem set.Icc_diff_left + theorem set.Icc_diff_right + theorem set.Ici_diff_Ioi_same + theorem set.Ici_diff_left - theorem set.Ico_diff_Ioo_eq_singleton + theorem set.Ico_diff_Ioo_same + theorem set.Ico_diff_left + theorem set.Iic_diff_Iio_same + theorem set.Iic_diff_right + theorem set.Iio_union_right - theorem set.Ioc_diff_Ioo_eq_singleton + theorem set.Ioc_diff_Ioo_same + theorem set.Ioc_diff_right + theorem set.Ioi_union_left + theorem set.mem_Icc_Ico_Ioc_Ioo_of_subset_of_subset + theorem set.mem_Ici_Ioi_of_subset_of_subset + theorem set.mem_Iic_Iio_of_subset_of_subset Modified src/order/bounds.lean + theorem nonempty_of_not_bdd_above + theorem nonempty_of_not_bdd_below + theorem not_bdd_above_iff' + theorem not_bdd_above_iff + theorem not_bdd_below_iff' + theorem not_bdd_below_iff Modified src/topology/algebra/ordered.lean +/- theorem cInf_mem_closure +/- theorem cInf_mem_of_is_closed +/- theorem cSup_mem_closure +/- theorem cSup_mem_of_is_closed + theorem is_connected.Ioo_cInf_cSup_subset + theorem is_glb.nhds_within_ne_bot + theorem is_lub.nhds_within_ne_bot + theorem is_preconnected.Icc_subset + theorem is_preconnected.Iio_cSup_subset + theorem is_preconnected.Ioi_cInf_subset + theorem is_preconnected.eq_univ_of_unbounded - theorem is_preconnected.forall_Icc_subset + theorem is_preconnected.mem_intervals +/- theorem mem_closure_of_is_glb +/- theorem mem_closure_of_is_lub +/- theorem mem_of_is_glb_of_is_closed +/- theorem mem_of_is_lub_of_is_closed - theorem nhds_principal_ne_bot_of_is_glb - theorem nhds_principal_ne_bot_of_is_lub + theorem set_of_is_preconnected_eq_of_ordered + theorem set_of_is_preconnected_subset_of_ordered Modified src/topology/subset_properties.lean 2020-06-05 05:31:21 8f89bd8 chore(algebra/group_power): simplify a proof (#2955) ESTIMATED CHANGES Modified src/algebra/group_power.lean +/- theorem gpow_add +/- theorem gpow_add_one +/- theorem gpow_mul + theorem gpow_sub + theorem gpow_sub_one + theorem sub_gsmul 2020-06-05 05:31:19 d7fa405 chore(algebra/*): merge `inv_inv''` with `inv_inv'` (#2954) ESTIMATED CHANGES Modified src/algebra/field.lean - theorem inv_inv' Modified src/algebra/group_with_zero.lean - theorem inv_inv'' + theorem inv_inv' Modified src/algebra/group_with_zero_power.lean Modified src/algebra/ordered_field.lean Modified src/algebra/pointwise.lean 2020-06-05 05:31:17 8161888 feat(group_theory/subgroup): define normal bundled subgroups (#2947) Most proofs are adapted from `deprecated/subgroup`. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem add_subgroup.sub_mem + theorem monoid_hom.normal_ker - theorem monoid_hom.rang_top_of_surjective + theorem monoid_hom.range_top_of_surjective + theorem subgroup.bot_normal + def subgroup.center + theorem subgroup.center_normal +/- theorem subgroup.coe_inv + theorem subgroup.coe_mk + theorem subgroup.le_normalizer + theorem subgroup.le_normalizer_of_normal + theorem subgroup.mem_center_iff + theorem subgroup.mem_normalizer_iff + theorem subgroup.mul_mem_cancel_left + theorem subgroup.mul_mem_cancel_right + theorem subgroup.normal.conj_mem + theorem subgroup.normal.mem_comm + theorem subgroup.normal.mem_comm_iff + theorem subgroup.normal_in_normalizer + theorem subgroup.normal_of_comm + def subgroup.normalizer 2020-06-05 05:31:15 2131382 feat(data/setoid/partition): some lemmas about partitions (#2937) ESTIMATED CHANGES Modified src/data/setoid/partition.lean + theorem setoid.is_partition.pairwise_disjoint + theorem setoid.is_partition.sUnion_eq_univ + theorem setoid.is_partition_classes 2020-06-05 04:53:19 80a52e9 chore(analysis/convex/basic): add `finset.convex_hull_eq` (#2956) ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem finset.convex_hull_eq 2020-06-04 18:38:01 2ceb7f7 feat(analysis/convex): preparatory statement for caratheodory (#2944) Proves ```lean lemma convex_hull_eq_union_convex_hull_finite_subsets (s : set E) : convex_hull s = ⋃ (t : finset E) (w : ↑t ⊆ s), convex_hull ↑t ``` ESTIMATED CHANGES Modified src/analysis/convex/basic.lean + theorem convex_hull_eq_union_convex_hull_finite_subsets + theorem convex_hull_singleton 2020-06-04 18:05:52 beb5d45 chore(scripts): update nolints.txt (#2952) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-04 16:18:37 1a29796 chore(is_ring_hom): remove some uses of is_ring_hom (#2884) This PR deletes the definitions `is_ring_anti_hom` and `ring_anti_equiv`, in favour of using the bundled `R →+* Rᵒᵖ` and `R ≃+* Rᵒᵖ`. It also changes the definition of `ring_invo`. This is work towards removing the deprecated `is_*_hom` family. ESTIMATED CHANGES Modified src/algebra/opposites.lean + theorem opposite.op_eq_one_iff + theorem opposite.op_eq_zero_iff + theorem opposite.unop_eq_one_iff + theorem opposite.unop_eq_zero_iff Modified src/data/equiv/mul_add.lean + theorem mul_equiv.to_fun_apply Modified src/data/equiv/ring.lean + theorem ring_equiv.to_fun_eq_coe + def ring_equiv.to_opposite + theorem ring_equiv.to_opposite_apply + theorem ring_equiv.to_opposite_symm_apply Modified src/data/opposite.lean + def opposite.equiv_to_opposite + theorem opposite.equiv_to_opposite_apply + theorem opposite.equiv_to_opposite_symm_apply Modified src/linear_algebra/sesquilinear_form.lean +/- theorem sesq_form.neg_left +/- theorem sesq_form.neg_right +/- theorem sesq_form.smul_right +/- theorem sesq_form.zero_left +/- theorem sesq_form.zero_right +/- structure sesq_form +/- theorem sym_sesq_form.is_refl +/- def sym_sesq_form.is_sym +/- theorem sym_sesq_form.sym Modified src/ring_theory/maps.lean - def comm_ring.anti_equiv_to_equiv - theorem comm_ring.anti_hom_to_hom - def comm_ring.equiv_to_anti_equiv - theorem comm_ring.hom_to_anti_hom - theorem is_ring_anti_hom.map_neg - theorem is_ring_anti_hom.map_sub - theorem is_ring_anti_hom.map_zero - theorem ring_anti_equiv.bijective - theorem ring_anti_equiv.map_add - theorem ring_anti_equiv.map_mul - theorem ring_anti_equiv.map_neg - theorem ring_anti_equiv.map_neg_one - theorem ring_anti_equiv.map_one - theorem ring_anti_equiv.map_sub - theorem ring_anti_equiv.map_zero - theorem ring_anti_equiv.map_zero_iff - structure ring_anti_equiv - theorem ring_equiv.bijective - theorem ring_equiv.map_zero_iff - theorem ring_invo.bijective + theorem ring_invo.coe_ring_equiv - theorem ring_invo.map_add + theorem ring_invo.map_eq_zero_iff - theorem ring_invo.map_mul - theorem ring_invo.map_neg - theorem ring_invo.map_neg_one - theorem ring_invo.map_one - theorem ring_invo.map_sub - theorem ring_invo.map_zero - theorem ring_invo.map_zero_iff + def ring_invo.mk' + theorem ring_invo.to_fun_eq_coe - def ring_invo.to_ring_anti_equiv +/- structure ring_invo Modified src/topology/algebra/uniform_ring.lean + def uniform_space.completion.coe_ring_hom + def uniform_space.completion.extension_hom + def uniform_space.completion.map_ring_hom 2020-06-04 15:38:26 7d803a9 feat(topology/metric_space/isometry): group structure on isometries (#2950) Closes #2908 ESTIMATED CHANGES Modified src/topology/metric_space/isometry.lean + theorem isometric.apply_inv_self + theorem isometric.coe_mul + theorem isometric.coe_one + theorem isometric.inv_apply_self + theorem isometric.mul_apply 2020-06-04 15:38:24 add0c9a feat(ring/localization): add construction of localization as a quotient type (#2922) ESTIMATED CHANGES Modified src/group_theory/congruence.lean Modified src/group_theory/monoid_localization.lean + theorem localization.ind + theorem localization.induction_on + theorem localization.induction_on₂ + theorem localization.induction_on₃ + def localization.mk + theorem localization.mk_eq_monoid_of_mk' + theorem localization.mk_eq_monoid_of_mk'_apply + theorem localization.mk_one_eq_monoid_of_mk + def localization.monoid_of + theorem localization.mul_equiv_of_quotient_apply + theorem localization.mul_equiv_of_quotient_mk' + theorem localization.mul_equiv_of_quotient_mk + theorem localization.mul_equiv_of_quotient_monoid_of + theorem localization.mul_equiv_of_quotient_symm_mk' + theorem localization.mul_equiv_of_quotient_symm_mk + theorem localization.mul_equiv_of_quotient_symm_monoid_of + theorem localization.one_rel + def localization.r' + def localization.r + theorem localization.r_eq_r' + theorem localization.r_iff_exists + theorem localization.r_of_eq + def localization - def submonoid.localization.r' - def submonoid.localization.r - theorem submonoid.localization.r_eq_r' - theorem submonoid.localization.r_iff_exists - def submonoid.localization Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean +/- def fraction_map - def localization.codomain - theorem localization.epic_of_localization_map - theorem localization.eq_iff_eq - theorem localization.eq_iff_exists - theorem localization.eq_mk'_iff_mul_eq - theorem localization.eq_of_eq - theorem localization.eq_zero_of_fst_eq_zero - theorem localization.exists_integer_multiple' - theorem localization.exists_integer_multiple - theorem localization.ext - theorem localization.ext_iff - def localization.is_integer - theorem localization.is_integer_add - theorem localization.is_integer_mul - theorem localization.is_integer_smul - theorem localization.is_unit_comp - theorem localization.lift_comp - theorem localization.lift_eq - theorem localization.lift_eq_iff - theorem localization.lift_id - theorem localization.lift_injective_iff - theorem localization.lift_left_inverse - theorem localization.lift_mk' - theorem localization.lift_mk'_spec - theorem localization.lift_of_comp - theorem localization.lift_surjective_iff - theorem localization.lift_unique - def localization.lin_coe - theorem localization.lin_coe_apply - theorem localization.map_comp - theorem localization.map_comp_map - theorem localization.map_eq - theorem localization.map_id - theorem localization.map_left_cancel - theorem localization.map_map - theorem localization.map_mk' - theorem localization.map_right_cancel - theorem localization.map_units - theorem localization.mem_coe - theorem localization.mk'_add - theorem localization.mk'_eq_iff_eq - theorem localization.mk'_eq_iff_eq_mul - theorem localization.mk'_eq_iff_mk'_eq - theorem localization.mk'_eq_mul_mk'_one - theorem localization.mk'_eq_of_eq - theorem localization.mk'_mul - theorem localization.mk'_mul_cancel_left - theorem localization.mk'_mul_cancel_right - theorem localization.mk'_one - theorem localization.mk'_sec - theorem localization.mk'_self'' - theorem localization.mk'_self' - theorem localization.mk'_self - theorem localization.mk'_spec' - theorem localization.mk'_spec + theorem localization.mk_eq_mk' + theorem localization.mk_eq_mk'_apply + theorem localization.mk_one_eq_of + theorem localization.monoid_of_eq_of - theorem localization.mul_mk'_eq_mk'_of_mul + def localization.of - theorem localization.of_id + theorem localization.ring_equiv_of_quotient_apply + theorem localization.ring_equiv_of_quotient_mk' + theorem localization.ring_equiv_of_quotient_mk + theorem localization.ring_equiv_of_quotient_of + theorem localization.ring_equiv_of_quotient_symm_mk' + theorem localization.ring_equiv_of_quotient_symm_mk + theorem localization.ring_equiv_of_quotient_symm_of - theorem localization.ring_equiv_of_ring_equiv_eq - theorem localization.ring_equiv_of_ring_equiv_eq_map - theorem localization.ring_equiv_of_ring_equiv_eq_map_apply - theorem localization.ring_equiv_of_ring_equiv_mk' - theorem localization.sec_spec' - theorem localization.sec_spec - theorem localization.surj - def localization.to_map - theorem localization.to_map_injective - structure localization + def localization_map.codomain + theorem localization_map.epic_of_localization_map + theorem localization_map.eq_iff_eq + theorem localization_map.eq_iff_exists + theorem localization_map.eq_mk'_iff_mul_eq + theorem localization_map.eq_of_eq + theorem localization_map.eq_zero_of_fst_eq_zero + theorem localization_map.exists_integer_multiple' + theorem localization_map.exists_integer_multiple + theorem localization_map.ext + theorem localization_map.ext_iff + def localization_map.is_integer + theorem localization_map.is_integer_add + theorem localization_map.is_integer_mul + theorem localization_map.is_integer_smul + theorem localization_map.is_unit_comp + theorem localization_map.lift_comp + theorem localization_map.lift_eq + theorem localization_map.lift_eq_iff + theorem localization_map.lift_id + theorem localization_map.lift_injective_iff + theorem localization_map.lift_left_inverse + theorem localization_map.lift_mk' + theorem localization_map.lift_mk'_spec + theorem localization_map.lift_of_comp + theorem localization_map.lift_surjective_iff + theorem localization_map.lift_unique + def localization_map.lin_coe + theorem localization_map.lin_coe_apply + theorem localization_map.map_comp + theorem localization_map.map_comp_map + theorem localization_map.map_eq + theorem localization_map.map_id + theorem localization_map.map_left_cancel + theorem localization_map.map_map + theorem localization_map.map_mk' + theorem localization_map.map_right_cancel + theorem localization_map.map_units + theorem localization_map.mem_coe + theorem localization_map.mk'_add + theorem localization_map.mk'_eq_iff_eq + theorem localization_map.mk'_eq_iff_eq_mul + theorem localization_map.mk'_eq_iff_mk'_eq + theorem localization_map.mk'_eq_mul_mk'_one + theorem localization_map.mk'_eq_of_eq + theorem localization_map.mk'_mul + theorem localization_map.mk'_mul_cancel_left + theorem localization_map.mk'_mul_cancel_right + theorem localization_map.mk'_one + theorem localization_map.mk'_sec + theorem localization_map.mk'_self'' + theorem localization_map.mk'_self' + theorem localization_map.mk'_self + theorem localization_map.mk'_spec' + theorem localization_map.mk'_spec + theorem localization_map.mul_mk'_eq_mk'_of_mul + theorem localization_map.of_id + theorem localization_map.ring_equiv_of_ring_equiv_eq + theorem localization_map.ring_equiv_of_ring_equiv_eq_map + theorem localization_map.ring_equiv_of_ring_equiv_eq_map_apply + theorem localization_map.ring_equiv_of_ring_equiv_mk' + theorem localization_map.sec_spec' + theorem localization_map.sec_spec + theorem localization_map.surj + def localization_map.to_map + theorem localization_map.to_map_injective + structure localization_map - def ring_hom.to_localization + def ring_hom.to_localization_map + def submonoid.localization_map.to_ring_localization 2020-06-04 15:06:53 2dbf550 feat(ring_theory/eisenstein_criterion): Eisenstein's criterion (#2946) ESTIMATED CHANGES Added src/ring_theory/eisenstein_criterion.lean + theorem polynomial.eisenstein_criterion_aux.eval_zero_mem_ideal_of_eq_mul_X_pow + theorem polynomial.eisenstein_criterion_aux.is_unit_of_nat_degree_eq_zero_of_forall_dvd_is_unit + theorem polynomial.eisenstein_criterion_aux.le_nat_degree_of_map_eq_mul_X_pow + theorem polynomial.eisenstein_criterion_aux.map_eq_C_mul_X_pow_of_forall_coeff_mem + theorem polynomial.irreducible_of_eisenstein_criterion Added src/ring_theory/prime.lean + theorem mul_eq_mul_prime_pow + theorem mul_eq_mul_prime_prod 2020-06-04 14:28:44 c2e78d2 refactor(data/zmod): generalize zmod.cast_hom (#2900) Currently, `zmod.cast_hom` would cast `zmod n` to rings `R` of characteristic `n`. This PR builds `cast_hom` for rings `R` with characteristic `m` that divides `n`. ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.cast_add' +/- theorem zmod.cast_add +/- def zmod.cast_hom +/- theorem zmod.cast_hom_apply + theorem zmod.cast_int_cast' +/- theorem zmod.cast_int_cast + theorem zmod.cast_mul' +/- theorem zmod.cast_mul + theorem zmod.cast_nat_cast' +/- theorem zmod.cast_nat_cast + theorem zmod.cast_one' +/- theorem zmod.cast_one + theorem zmod.cast_pow' + theorem zmod.cast_pow + theorem zmod.cast_sub' + theorem zmod.cast_sub Modified src/field_theory/finite.lean Modified src/linear_algebra/basis.lean 2020-06-04 07:22:09 e397b4c chore(scripts): update nolints.txt (#2948) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-04 04:42:31 5744f89 chore(*): fix some `ge_or_gt` lint issues (#2945) Also rename a few definitions: * `ge_of_forall_ge_sub` : `le_of_forall_sub_le`; * `power_series.order_ge_nat` : `power_series.nat_le_order`; * `power_series.order_ge`: `power_series.le_order`; ESTIMATED CHANGES Modified src/algebra/ordered_field.lean +/- theorem exists_add_lt_and_pos_of_lt - theorem ge_of_forall_ge_sub + theorem le_of_forall_sub_le Modified src/algebra/ordered_group.lean +/- theorem abs_nonneg +/- theorem abs_of_nonneg +/- theorem abs_of_pos +/- theorem abs_pos_of_ne_zero +/- theorem abs_pos_of_neg +/- theorem abs_pos_of_pos +/- theorem le_add_of_nonneg_left +/- theorem le_add_of_nonneg_right +/- theorem lt_add_of_pos_left +/- theorem lt_add_of_pos_right +/- theorem sub_le_self +/- theorem sub_lt_self Modified src/analysis/normed_space/basic.lean Modified src/data/complex/exponential.lean Modified src/data/real/pi.lean +/- theorem real.pi_gt_sqrt_two_add_series +/- theorem real.sqrt_two_add_series_nonneg +/- theorem real.sqrt_two_add_series_zero_nonneg Modified src/group_theory/order_of_element.lean Modified src/measure_theory/integration.lean Modified src/number_theory/dioph.lean +/- theorem dioph.pell_dioph +/- theorem dioph.xn_dioph Modified src/number_theory/pell.lean +/- theorem pell.d_pos +/- theorem pell.eq_of_xn_modeq' +/- theorem pell.eq_of_xn_modeq +/- theorem pell.eq_of_xn_modeq_le +/- theorem pell.eq_of_xn_modeq_lem3 +/- theorem pell.eq_pell_lem +/- theorem pell.eq_pow_of_pell_lem +/- theorem pell.matiyasevic +/- theorem pell.modeq_of_xn_modeq +/- theorem pell.x_pos +/- theorem pell.xy_modeq_of_modeq Modified src/order/complete_lattice.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series.lean + theorem power_series.le_order + theorem power_series.le_order_add + theorem power_series.nat_le_order - theorem power_series.order_add_ge - theorem power_series.order_ge - theorem power_series.order_ge_nat Modified src/tactic/lint/misc.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean +/- theorem eq_of_forall_dist_le +/- theorem metric.diam_ball +/- theorem metric.diam_closed_ball +/- theorem metric.mem_ball_self +/- theorem metric.mem_closed_ball_self +/- theorem metric.pos_of_mem_ball Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem eq_of_forall_edist_le Modified src/topology/uniform_space/absolute_value.lean 2020-06-03 16:19:29 ef6d8d9 refactor(analysis/specific_limits): prove `0 < r → (1+r)^n→∞` for semirings (#2935) * Add `add_one_pow_unbounded_of_pos` and `tendsto_add_one_pow_at_top_at_top_of_pos` assuming `[linear_ordered_semiring α]` `[archimedean α]`. * Rename `tendsto_pow_at_top_at_top_of_gt_1` to `tendsto_pow_at_top_at_top_of_one_lt`, generalize to an archimedean ordered ring. * Rename `tendsto_pow_at_top_at_top_of_gt_1_nat` to `nat.tendsto_pow_at_top_at_top_of_one_lt`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem add_one_pow_unbounded_of_pos +/- theorem pow_unbounded_of_one_lt Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/specific_limits.lean + theorem nat.tendsto_pow_at_top_at_top_of_one_lt + theorem tendsto_add_one_pow_at_top_at_top_of_pos - theorem tendsto_pow_at_top_at_top_of_gt_1 - theorem tendsto_pow_at_top_at_top_of_gt_1_nat + theorem tendsto_pow_at_top_at_top_of_one_lt Modified src/data/padics/hensel.lean 2020-06-03 15:11:28 1adf204 chore(scripts): update nolints.txt (#2942) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-03 15:11:26 494b43e chore(category_theory/limits/over): granularity in forget preserving colimits (#2941) a bit more granularity for instances about forget preserving colimits ESTIMATED CHANGES Modified src/category_theory/limits/over.lean 2020-06-03 15:11:24 97265f9 feat(category_theory/limits): dualise a limits result (#2940) Add the dual of `is_limit.of_cone_equiv`. ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + def category_theory.adjunction.of_left_adjoint + def category_theory.adjunction.of_right_adjoint Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.of_cocone_equiv +/- def category_theory.limits.is_limit.of_cone_equiv Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean + def category_theory.limits.preserves_colimit_of_iso 2020-06-03 13:41:29 e205228 feat(data/fintype/basic): to_finset_inj (#2938) ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem set.to_finset_inj 2020-06-03 13:41:27 74037cb feat(topology/algebra/ordered): IVT for two functions (#2933) Also rename some `is_connected_I*` lemmas to `is_preconnected_I*`. ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem closure_le_eq +/- theorem closure_lt_subset_le +/- theorem intermediate_value_univ + theorem intermediate_value_univ₂ + theorem is_closed.is_closed_le - theorem is_connected_Icc - theorem is_connected_Ioo + theorem is_preconnected.intermediate_value₂ + theorem is_preconnected_Icc + theorem is_preconnected_Ioo +/- theorem tendsto_abs_at_top_at_top Modified src/topology/subset_properties.lean +/- theorem is_preirreducible.is_preconnected 2020-06-03 13:41:25 f44509c chore(tactic/localized): lower priority of bad decidability instances in classical locale (#2932) Also add a decidability instance for complex numbers. https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/monoid_algebra.2Emul_apply/near/199595932 https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/slow.20elaboration/near/199543997 ESTIMATED CHANGES Modified src/data/complex/basic.lean Modified src/data/real/basic.lean Modified src/measure_theory/indicator_function.lean +/- theorem tendsto_indicator_bUnion_finset +/- theorem tendsto_indicator_of_antimono +/- theorem tendsto_indicator_of_monotone Modified src/tactic/localized.lean 2020-06-03 12:09:46 ed91bb2 feat(data/setoid/partition): sUnion _classes (#2936) ESTIMATED CHANGES Modified src/data/setoid/partition.lean + theorem setoid.sUnion_classes 2020-06-03 12:09:44 c3221f7 feat(data/rat): denom_div_cast_eq_one_iff (#2934) ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.coe_int_inj + theorem rat.denom_div_cast_eq_one_iff 2020-06-03 12:09:43 1f2102d chore(group_theory/group_action): protect_proj attribute for mul_action (#2931) ESTIMATED CHANGES Modified src/group_theory/group_action.lean 2020-06-03 12:09:41 687fc51 ci(bors): set `cut_body_after` to `---` (#2927) ESTIMATED CHANGES Added .github/PULL_REQUEST_TEMPLATE.md Modified bors.toml 2020-06-03 12:09:39 9fc2413 feat(order/iterate): a few more lemmas about `f^[n]` (#2925) ESTIMATED CHANGES Modified src/algebra/order.lean + theorem ordering.compares_iff_of_compares_impl Modified src/logic/function/iterate.lean +/- theorem function.iterate_id Modified src/order/iterate.lean + theorem function.commute.iterate_pos_eq_iff_map_eq + theorem function.commute.iterate_pos_le_iff_map_le' + theorem function.commute.iterate_pos_le_iff_map_le + theorem monotone.iterate_ge_of_ge + theorem monotone.iterate_le_of_le 2020-06-03 12:09:37 0ec9c0e feat(algebra/iterate_hom): add `mul_left_iterate` etc (#2923) ESTIMATED CHANGES Modified src/algebra/iterate_hom.lean + theorem add_left_iterate + theorem add_right_iterate + theorem mul_left_iterate + theorem mul_right_iterate 2020-06-03 11:09:01 8d9e541 feat(group_theory/group_action): some lemmas about orbits (#2928) also remove the simp attribute unfolding the definition of orbit. Depends on #2924 ESTIMATED CHANGES Modified src/group_theory/group_action.lean +/- theorem mul_action.mem_orbit_iff + theorem mul_action.mem_orbit_smul + theorem mul_action.smul_mem_orbit_smul 2020-06-03 09:28:49 5020285 chore(group_theory/group_action): simp attributes on inv_smul_smul and smul_inv_smul (#2924) ESTIMATED CHANGES Modified src/group_theory/group_action.lean +/- theorem mul_action.inv_smul_smul +/- theorem mul_action.smul_inv_smul 2020-06-03 07:59:41 3904374 chore(algebra/ordered_group)`: add `strict_mono.add_const/const_add` (#2926) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem strict_mono.add_const + theorem strict_mono.const_add 2020-06-03 06:31:17 879bad2 feat(analysis/normed_space/enorm): define extended norm (#2897) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem nnnorm_eq_zero + theorem normed_field.nnnorm_inv + theorem normed_field.nnnorm_one + theorem real.nnnorm_coe_nat + theorem real.nnnorm_two + theorem real.norm_coe_nat +/- theorem real.norm_eq_abs +/- theorem real.norm_two Added src/analysis/normed_space/enorm.lean + theorem enorm.coe_fn_injective + theorem enorm.coe_max + def enorm.emetric_space + theorem enorm.eq_zero_iff + theorem enorm.ext + theorem enorm.ext_iff + theorem enorm.finite_dist_eq + theorem enorm.finite_edist_eq + theorem enorm.finite_norm_eq + def enorm.finite_subspace + theorem enorm.map_add_le + theorem enorm.map_neg + theorem enorm.map_smul + theorem enorm.map_sub_le + theorem enorm.map_sub_rev + theorem enorm.map_zero + theorem enorm.max_map + theorem enorm.top_map + structure enorm 2020-06-02 21:15:28 efae3d9 feat(data/mv_polynomial): C_inj and C_injective (#2920) ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.C_inj + theorem mv_polynomial.C_injective 2020-06-02 19:58:24 607286e feat(data/*): ring_hom.ext_{nat,int,rat,zmod} (#2918) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem ring_hom.ext_int Modified src/data/nat/cast.lean + theorem ring_hom.ext_nat Modified src/data/rat/cast.lean + theorem ring_hom.ext_rat Modified src/data/zmod/basic.lean + theorem ring_hom.ext_zmod 2020-06-02 17:27:51 62ec2c5 feat(linear_algebra/matrix): add alg_equiv_matrix (#2919) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_equiv.arrow_congr_apply + theorem linear_equiv.arrow_congr_comp + theorem linear_equiv.conj_apply + theorem linear_equiv.conj_id Modified src/linear_algebra/matrix.lean + def alg_equiv_matrix' + def alg_equiv_matrix + def linear_equiv.alg_conj 2020-06-02 07:41:15 1a4de99 feat(category_theory/limits) equalizer morphism is regular mono (#2916) The equalizer morphism is a regular mono, and its dual ESTIMATED CHANGES Modified src/category_theory/limits/shapes/regular_mono.lean 2020-06-02 06:13:44 1494cc1 feat(order/semiconj_Sup): use `Sup` to semiconjugate functions (#2895) Formalize two lemmas from a paper by É. Ghys. ESTIMATED CHANGES Modified docs/references.bib Modified src/order/bounds.lean + theorem is_glb.mono + theorem is_greatest.mono + theorem is_least.mono + theorem is_lub.mono Modified src/order/complete_lattice.lean Added src/order/semiconj_Sup.lean + theorem function.Sup_div_semiconj + theorem function.cSup_div_semiconj + theorem function.semiconj.symm_adjoint + theorem function.semiconj_of_is_lub + theorem is_order_right_adjoint.right_mono + theorem is_order_right_adjoint.unique + def is_order_right_adjoint + theorem is_order_right_adjoint_Sup + theorem is_order_right_adjoint_cSup 2020-06-02 02:13:40 4372d17 chore(scripts): update nolints.txt (#2914) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-02 00:43:24 eb616cf chore(*): split long lines (#2913) ESTIMATED CHANGES Modified docs/tutorial/category_theory/Ab.lean Modified docs/tutorial/category_theory/intro.lean Modified roadmap/topology/shrinking_lemma.lean Modified src/data/equiv/encodable.lean Modified src/data/equiv/list.lean +/- theorem encodable.length_sorted_univ Modified src/data/equiv/local_equiv.lean Modified src/data/fin_enum.lean +/- theorem fin_enum.finset.mem_enum +/- theorem fin_enum.mem_pi +/- def fin_enum.of_nodup_list +/- theorem fin_enum.pi.mem_enum +/- def fin_enum.pi Modified src/data/finset.lean +/- theorem finset.coe_inter +/- theorem finset.coe_union +/- theorem finset.disjoint_filter_filter +/- theorem finset.exists_max_image +/- theorem finset.exists_min_image +/- theorem finset.fold_insert +/- theorem finset.image_to_finset +/- theorem finset.insert_union_distrib +/- theorem finset.mem_insert_of_mem +/- theorem finset.mem_of_mem_inter_left +/- theorem finset.mem_of_mem_inter_right +/- theorem finset.mem_union_left +/- theorem finset.mem_union_right +/- def finset.pi.cons +/- theorem finset.pi.cons_ne +/- theorem finset.pi.cons_same +/- theorem finset.sdiff_subset_sdiff +/- theorem finset.sigma_eq_bind Modified src/data/int/basic.lean +/- theorem int.cast_eq_zero +/- theorem int.cast_inj +/- theorem int.coe_nat_bit0 +/- theorem int.coe_nat_bit1 +/- theorem int.coe_nat_inj' +/- theorem int.coe_nat_le +/- theorem int.coe_nat_lt +/- theorem int.shiftr_neg_succ +/- theorem int.test_bit_ldiff Modified src/data/int/modeq.lean +/- theorem int.modeq.modeq_add_cancel_left +/- theorem int.modeq.modeq_add_cancel_right Modified src/data/list/bag_inter.lean Modified src/data/list/basic.lean +/- theorem list.exists_of_mem_map +/- theorem list.map_subset_iff Modified src/data/list/defs.lean +/- def list.split_on_p_aux Modified src/data/list/forall2.lean +/- theorem list.forall₂_cons_left_iff Modified src/data/list/func.lean +/- theorem list.func.pointwise_nil Modified src/data/list/min_max.lean Modified src/data/list/nodup.lean +/- theorem list.nodup_erase_eq_filter +/- theorem list.nodup_join +/- theorem list.nth_le_index_of Modified src/data/list/pairwise.lean Modified src/data/list/perm.lean +/- theorem list.length_permutations_aux +/- theorem list.permutations_aux2_snd_cons Modified src/data/list/range.lean +/- theorem list.map_sub_range' Modified src/data/list/zip.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_norm.lean Modified src/data/pequiv.lean +/- theorem pequiv.single_trans_single Modified src/data/pnat/basic.lean +/- theorem pnat.bit0_le_bit0 +/- theorem pnat.bit0_le_bit1 +/- theorem pnat.bit1_le_bit0 +/- theorem pnat.bit1_le_bit1 Modified src/data/polynomial.lean +/- theorem polynomial.coeff_add +/- theorem polynomial.coeff_derivative +/- theorem polynomial.coeff_nat_degree_eq_zero_of_degree_lt +/- theorem polynomial.coeff_sub +/- theorem polynomial.derivative_eval +/- theorem polynomial.mod_by_monic_X_sub_C_eq_C_eval Modified src/data/quot.lean +/- theorem quotient.lift_beta +/- theorem quotient.lift_on_beta Modified src/data/rat/basic.lean Modified src/data/real/cau_seq.lean +/- theorem cau_seq.const_inv Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.of_real_le_of_real_iff +/- theorem ennreal.of_real_lt_of_real_iff Modified src/data/real/nnreal.lean Modified src/data/seq/computation.lean +/- theorem computation.destruct_map Modified src/data/seq/wseq.lean +/- theorem wseq.destruct_flatten +/- theorem wseq.destruct_terminates_of_nth_terminates +/- theorem wseq.head_terminates_of_nth_terminates +/- theorem wseq.nth_terminates_le Modified src/data/ulift.lean +/- theorem plift.rec.constant +/- theorem ulift.rec.constant Modified src/data/zmod/basic.lean Modified src/deprecated/group.lean Modified src/logic/relation.lean +/- theorem relation.equivalence_join +/- theorem relation.refl_trans_gen.trans +/- theorem relation.refl_trans_gen_of_transitive_reflexive Modified src/logic/relator.lean +/- theorem relator.rel_exists_of_left_total +/- theorem relator.rel_forall_of_right_total Modified src/measure_theory/borel_space.lean Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.integrable_smul_iff +/- theorem measure_theory.l1.dist_to_fun +/- theorem measure_theory.l1.norm_eq_norm_to_fun +/- theorem measure_theory.l1.norm_of_fun Modified test/conv/apply_congr.lean Modified test/equiv_rw.lean Modified test/hint.lean Modified test/norm_cast_cardinal.lean +/- theorem coe_bit1 Modified test/nth_rewrite.lean Modified test/ring_exp.lean Modified test/tauto.lean 2020-06-01 23:39:34 b95f165 chore(group_theory/sub*): move unbundled submonoids and subgroups to `deprecated` (#2912) * move unbundled submonoids to `deprecated/submonoid.lean`; * move unbundled subgroups to `deprecated/subgroup.lean`; * move bundled subgroups to `group_theory/subgroup.lean`; * unbundled versions import bundled. ESTIMATED CHANGES Added src/deprecated/subgroup.lean + inductive add_group.in_closure + theorem additive.is_add_subgroup + theorem additive.is_add_subgroup_iff + theorem additive.normal_add_subgroup + theorem additive.normal_add_subgroup_iff + theorem additive.simple_add_group_iff + def gmultiples + theorem gmultiples_subset + def gpowers + theorem gpowers_subset + def group.closure + theorem group.closure_eq_mclosure + theorem group.closure_mono + theorem group.closure_subgroup + theorem group.closure_subset + theorem group.closure_subset_iff + theorem group.conj_mem_conjugates_of_set + def group.conjugates + def group.conjugates_of_set + theorem group.conjugates_of_set_mono + theorem group.conjugates_of_set_subset + theorem group.conjugates_of_set_subset_normal_closure + theorem group.conjugates_subset + theorem group.exists_list_of_mem_closure + theorem group.gpowers_eq_closure + theorem group.image_closure + inductive group.in_closure + theorem group.mclosure_inv_subset + theorem group.mclosure_subset + theorem group.mem_closure + theorem group.mem_closure_union_iff + theorem group.mem_conjugates_of_set_iff + theorem group.mem_conjugates_self + def group.normal_closure + theorem group.normal_closure_mono + theorem group.normal_closure_subset + theorem group.normal_closure_subset_iff + theorem group.subset_closure + theorem group.subset_conjugates_of_set + theorem group.subset_normal_closure + theorem injective_mul + theorem is_add_subgroup.gsmul_coe + theorem is_add_subgroup.gsmul_mem + theorem is_add_subgroup.of_sub + theorem is_add_subgroup.sub_mem + theorem is_group_hom.inj_iff_trivial_ker + theorem is_group_hom.inj_of_trivial_ker + theorem is_group_hom.inv_iff_ker' + theorem is_group_hom.inv_iff_ker + theorem is_group_hom.inv_ker_one' + theorem is_group_hom.inv_ker_one + def is_group_hom.ker + theorem is_group_hom.mem_ker + theorem is_group_hom.one_iff_ker_inv' + theorem is_group_hom.one_iff_ker_inv + theorem is_group_hom.one_ker_inv' + theorem is_group_hom.one_ker_inv + theorem is_group_hom.trivial_ker_iff_eq_one + theorem is_group_hom.trivial_ker_of_inj + def is_subgroup.center + theorem is_subgroup.coe_gpow + theorem is_subgroup.coe_inv + theorem is_subgroup.eq_trivial_iff + theorem is_subgroup.gpow_mem + theorem is_subgroup.inv_mem_iff + theorem is_subgroup.mem_center + theorem is_subgroup.mem_norm_comm + theorem is_subgroup.mem_norm_comm_iff + theorem is_subgroup.mem_trivial + theorem is_subgroup.mul_mem_cancel_left + theorem is_subgroup.mul_mem_cancel_right + def is_subgroup.normalizer + theorem is_subgroup.of_div + theorem is_subgroup.subset_normalizer + def is_subgroup.trivial + theorem is_subgroup.trivial_eq_closure + theorem is_subgroup_Union_of_directed + theorem mem_gmultiples + theorem mem_gpowers + def monoid_hom.range_factorization + def monoid_hom.range_subtype_val + theorem multiplicative.is_subgroup + theorem multiplicative.is_subgroup_iff + theorem multiplicative.normal_subgroup + theorem multiplicative.normal_subgroup_iff + theorem multiplicative.simple_group_iff + theorem normal_subgroup_of_comm_group + theorem simple_group_of_surjective + def subgroup.of Added src/deprecated/submonoid.lean + inductive add_monoid.in_closure + theorem additive.is_add_submonoid + theorem additive.is_add_submonoid_iff + theorem image.is_submonoid + theorem is_add_submonoid.multiple_subset + theorem is_add_submonoid.smul_coe + theorem is_add_submonoid.smul_mem + theorem is_submonoid.coe_mul + theorem is_submonoid.coe_one + theorem is_submonoid.coe_pow + theorem is_submonoid.finset_prod_mem + theorem is_submonoid.list_prod_mem + theorem is_submonoid.multiset_prod_mem + theorem is_submonoid.pow_mem + theorem is_submonoid.power_subset + theorem is_submonoid_Union_of_directed + def monoid.closure + theorem monoid.closure_mono + theorem monoid.closure_singleton + theorem monoid.closure_subset + theorem monoid.exists_list_of_mem_closure + theorem monoid.image_closure + inductive monoid.in_closure + theorem monoid.mem_closure_union_iff + theorem monoid.subset_closure + theorem multiples.add_mem + theorem multiples.self_mem + theorem multiples.zero_mem + def multiples + theorem multiplicative.is_submonoid + theorem multiplicative.is_submonoid_iff + theorem powers.mul_mem + theorem powers.one_mem + theorem powers.self_mem + def powers + def submonoid.of Deleted src/group_theory/bundled_subgroup.lean - theorem add_subgroup.gsmul_mem - theorem add_subgroup.mem_closure_singleton - def add_subgroup.of_subgroup - def add_subgroup.to_subgroup - structure add_subgroup - theorem monoid_hom.coe_range - theorem monoid_hom.comap_ker - def monoid_hom.eq_locus - theorem monoid_hom.eq_of_eq_on_dense - theorem monoid_hom.eq_of_eq_on_top - theorem monoid_hom.eq_on_closure - theorem monoid_hom.gclosure_preimage_le - def monoid_hom.ker - theorem monoid_hom.map_closure - theorem monoid_hom.map_range - theorem monoid_hom.mem_ker - theorem monoid_hom.mem_range - theorem monoid_hom.rang_top_of_surjective - def monoid_hom.range - theorem monoid_hom.range_top_iff_surjective - def mul_equiv.subgroup_congr - def subgroup.add_subgroup_equiv - theorem subgroup.bot_prod_bot - def subgroup.closure - theorem subgroup.closure_Union - theorem subgroup.closure_empty - theorem subgroup.closure_eq - theorem subgroup.closure_eq_of_le - theorem subgroup.closure_induction - theorem subgroup.closure_le - theorem subgroup.closure_mono - theorem subgroup.closure_union - theorem subgroup.closure_univ - theorem subgroup.coe_Inf - theorem subgroup.coe_bot - theorem subgroup.coe_coe - theorem subgroup.coe_comap - theorem subgroup.coe_inf - theorem subgroup.coe_inv - theorem subgroup.coe_map - theorem subgroup.coe_mul - theorem subgroup.coe_one - theorem subgroup.coe_prod - theorem subgroup.coe_subset_coe - theorem subgroup.coe_subtype - theorem subgroup.coe_to_submonoid - theorem subgroup.coe_top - def subgroup.comap - theorem subgroup.comap_comap - theorem subgroup.comap_inf - theorem subgroup.comap_infi - theorem subgroup.comap_top - theorem subgroup.ext' - theorem subgroup.ext - theorem subgroup.gc_map_comap - theorem subgroup.gpow_mem - theorem subgroup.inv_mem - theorem subgroup.le_def - theorem subgroup.list_prod_mem - def subgroup.map - theorem subgroup.map_bot - theorem subgroup.map_le_iff_le_comap - theorem subgroup.map_map - theorem subgroup.map_sup - theorem subgroup.map_supr - theorem subgroup.mem_Inf - theorem subgroup.mem_Sup_of_directed_on - theorem subgroup.mem_bot - theorem subgroup.mem_closure - theorem subgroup.mem_closure_singleton - theorem subgroup.mem_coe - theorem subgroup.mem_comap - theorem subgroup.mem_inf - theorem subgroup.mem_map - theorem subgroup.mem_prod - theorem subgroup.mem_supr_of_directed - theorem subgroup.mem_top - theorem subgroup.mul_mem - theorem subgroup.multiset_prod_mem - def subgroup.of - def subgroup.of_add_subgroup - theorem subgroup.one_mem - theorem subgroup.pow_mem - def subgroup.prod - def subgroup.prod_equiv - theorem subgroup.prod_mem - theorem subgroup.prod_mono - theorem subgroup.prod_mono_left - theorem subgroup.prod_mono_right - theorem subgroup.prod_top - theorem subgroup.subset_closure - def subgroup.subtype - def subgroup.to_add_subgroup - theorem subgroup.top_prod - theorem subgroup.top_prod_top - structure subgroup Modified src/group_theory/coset.lean Modified src/group_theory/free_group.lean Modified src/group_theory/subgroup.lean - inductive add_group.in_closure + theorem add_subgroup.gsmul_mem + theorem add_subgroup.mem_closure_singleton + def add_subgroup.of_subgroup + def add_subgroup.to_subgroup + structure add_subgroup - theorem additive.is_add_subgroup - theorem additive.is_add_subgroup_iff - theorem additive.normal_add_subgroup - theorem additive.normal_add_subgroup_iff - theorem additive.simple_add_group_iff - def gmultiples - theorem gmultiples_subset - def gpowers - theorem gpowers_subset - def group.closure - theorem group.closure_eq_mclosure - theorem group.closure_mono - theorem group.closure_subgroup - theorem group.closure_subset - theorem group.closure_subset_iff - theorem group.conj_mem_conjugates_of_set - def group.conjugates - def group.conjugates_of_set - theorem group.conjugates_of_set_mono - theorem group.conjugates_of_set_subset - theorem group.conjugates_of_set_subset_normal_closure - theorem group.conjugates_subset - theorem group.exists_list_of_mem_closure - theorem group.gpowers_eq_closure - theorem group.image_closure - inductive group.in_closure - theorem group.mclosure_inv_subset - theorem group.mclosure_subset - theorem group.mem_closure - theorem group.mem_closure_union_iff - theorem group.mem_conjugates_of_set_iff - theorem group.mem_conjugates_self - def group.normal_closure - theorem group.normal_closure_mono - theorem group.normal_closure_subset - theorem group.normal_closure_subset_iff - theorem group.subset_closure - theorem group.subset_conjugates_of_set - theorem group.subset_normal_closure - theorem injective_mul - theorem is_add_subgroup.gsmul_coe - theorem is_add_subgroup.gsmul_mem - theorem is_add_subgroup.of_sub - theorem is_add_subgroup.sub_mem - theorem is_group_hom.inj_iff_trivial_ker - theorem is_group_hom.inj_of_trivial_ker - theorem is_group_hom.inv_iff_ker' - theorem is_group_hom.inv_iff_ker - theorem is_group_hom.inv_ker_one' - theorem is_group_hom.inv_ker_one - def is_group_hom.ker - theorem is_group_hom.mem_ker - theorem is_group_hom.one_iff_ker_inv' - theorem is_group_hom.one_iff_ker_inv - theorem is_group_hom.one_ker_inv' - theorem is_group_hom.one_ker_inv - theorem is_group_hom.trivial_ker_iff_eq_one - theorem is_group_hom.trivial_ker_of_inj - def is_subgroup.center - theorem is_subgroup.coe_gpow - theorem is_subgroup.coe_inv - theorem is_subgroup.eq_trivial_iff - theorem is_subgroup.gpow_mem - theorem is_subgroup.inv_mem_iff - theorem is_subgroup.mem_center - theorem is_subgroup.mem_norm_comm - theorem is_subgroup.mem_norm_comm_iff - theorem is_subgroup.mem_trivial - theorem is_subgroup.mul_mem_cancel_left - theorem is_subgroup.mul_mem_cancel_right - def is_subgroup.normalizer - theorem is_subgroup.of_div - theorem is_subgroup.subset_normalizer - def is_subgroup.trivial - theorem is_subgroup.trivial_eq_closure - theorem is_subgroup_Union_of_directed - theorem mem_gmultiples - theorem mem_gpowers + theorem monoid_hom.coe_range + theorem monoid_hom.comap_ker + def monoid_hom.eq_locus + theorem monoid_hom.eq_of_eq_on_dense + theorem monoid_hom.eq_of_eq_on_top + theorem monoid_hom.eq_on_closure + theorem monoid_hom.gclosure_preimage_le + def monoid_hom.ker + theorem monoid_hom.map_closure + theorem monoid_hom.map_range + theorem monoid_hom.mem_ker + theorem monoid_hom.mem_range + theorem monoid_hom.rang_top_of_surjective + def monoid_hom.range - def monoid_hom.range_factorization - def monoid_hom.range_subtype_val + theorem monoid_hom.range_top_iff_surjective + def mul_equiv.subgroup_congr - theorem multiplicative.is_subgroup - theorem multiplicative.is_subgroup_iff - theorem multiplicative.normal_subgroup - theorem multiplicative.normal_subgroup_iff - theorem multiplicative.simple_group_iff - theorem normal_subgroup_of_comm_group - theorem simple_group_of_surjective + def subgroup.add_subgroup_equiv + theorem subgroup.bot_prod_bot + def subgroup.closure + theorem subgroup.closure_Union + theorem subgroup.closure_empty + theorem subgroup.closure_eq + theorem subgroup.closure_eq_of_le + theorem subgroup.closure_induction + theorem subgroup.closure_le + theorem subgroup.closure_mono + theorem subgroup.closure_union + theorem subgroup.closure_univ + theorem subgroup.coe_Inf + theorem subgroup.coe_bot + theorem subgroup.coe_coe + theorem subgroup.coe_comap + theorem subgroup.coe_inf + theorem subgroup.coe_inv + theorem subgroup.coe_map + theorem subgroup.coe_mul + theorem subgroup.coe_one + theorem subgroup.coe_prod + theorem subgroup.coe_subset_coe + theorem subgroup.coe_subtype + theorem subgroup.coe_to_submonoid + theorem subgroup.coe_top + def subgroup.comap + theorem subgroup.comap_comap + theorem subgroup.comap_inf + theorem subgroup.comap_infi + theorem subgroup.comap_top + theorem subgroup.ext' + theorem subgroup.ext + theorem subgroup.gc_map_comap + theorem subgroup.gpow_mem + theorem subgroup.inv_mem + theorem subgroup.le_def + theorem subgroup.list_prod_mem + def subgroup.map + theorem subgroup.map_bot + theorem subgroup.map_le_iff_le_comap + theorem subgroup.map_map + theorem subgroup.map_sup + theorem subgroup.map_supr + theorem subgroup.mem_Inf + theorem subgroup.mem_Sup_of_directed_on + theorem subgroup.mem_bot + theorem subgroup.mem_closure + theorem subgroup.mem_closure_singleton + theorem subgroup.mem_coe + theorem subgroup.mem_comap + theorem subgroup.mem_inf + theorem subgroup.mem_map + theorem subgroup.mem_prod + theorem subgroup.mem_supr_of_directed + theorem subgroup.mem_top + theorem subgroup.mul_mem + theorem subgroup.multiset_prod_mem + def subgroup.of_add_subgroup + theorem subgroup.one_mem + theorem subgroup.pow_mem + def subgroup.prod + def subgroup.prod_equiv + theorem subgroup.prod_mem + theorem subgroup.prod_mono + theorem subgroup.prod_mono_left + theorem subgroup.prod_mono_right + theorem subgroup.prod_top + theorem subgroup.subset_closure + def subgroup.subtype + def subgroup.to_add_subgroup + theorem subgroup.top_prod + theorem subgroup.top_prod_top + structure subgroup Modified src/group_theory/submonoid.lean - inductive add_monoid.in_closure - theorem additive.is_add_submonoid - theorem additive.is_add_submonoid_iff - theorem image.is_submonoid - theorem is_add_submonoid.multiple_subset - theorem is_add_submonoid.smul_coe - theorem is_add_submonoid.smul_mem - theorem is_submonoid.coe_mul - theorem is_submonoid.coe_one - theorem is_submonoid.coe_pow - theorem is_submonoid.finset_prod_mem - theorem is_submonoid.list_prod_mem - theorem is_submonoid.multiset_prod_mem - theorem is_submonoid.pow_mem - theorem is_submonoid.power_subset - theorem is_submonoid_Union_of_directed - def monoid.closure - theorem monoid.closure_mono - theorem monoid.closure_singleton - theorem monoid.closure_subset - theorem monoid.exists_list_of_mem_closure - theorem monoid.image_closure - inductive monoid.in_closure - theorem monoid.mem_closure_union_iff - theorem monoid.subset_closure - theorem multiples.add_mem - theorem multiples.self_mem - theorem multiples.zero_mem - def multiples - theorem multiplicative.is_submonoid - theorem multiplicative.is_submonoid_iff - theorem powers.mul_mem - theorem powers.one_mem - theorem powers.self_mem - def powers - def submonoid.of Modified src/ring_theory/subring.lean 2020-06-01 21:26:03 66ce5d0 feat(representation_theory/maschke): Maschke's theorem (#2762) The final theorem is ``` lemma monoid_algebra.submodule.exists_is_compl (not_dvd : ¬(ring_char k ∣ fintype.card G)) (p : submodule (monoid_algebra k G) V) : ∃ q : submodule (monoid_algebra k G) V, is_compl p q ``` for `[field k]`. The core computation, turning a `k`-linear retraction of `k[G]`-linear map into a `k[G]`-linear retraction by averaging over `G`, happens over an arbitrary `[comm_ring k]` in which `[invertible (fintype.card G : k)]`. ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.smul_single' Modified src/data/monoid_algebra.lean + def monoid_algebra.equivariant_of_linear_of_comm + theorem monoid_algebra.equivariant_of_linear_of_comm_apply + def monoid_algebra.group_smul.linear_map + theorem monoid_algebra.group_smul.linear_map_apply + theorem monoid_algebra.single_one_comm Modified src/logic/embedding.lean + def mul_left_embedding + theorem mul_left_embedding_apply + def mul_right_embedding + theorem mul_right_embedding_apply Added src/representation_theory/maschke.lean + def conjugate + theorem conjugate_i + def equivariant_projection + theorem equivariant_projection_condition + theorem monoid_algebra.exists_left_inverse_of_injective + theorem monoid_algebra.submodule.exists_is_compl + def sum_of_conjugates + def sum_of_conjugates_equivariant Modified src/ring_theory/algebra.lean 2020-06-01 19:40:48 085aade chore(linear_algebra/affine_space): use implicit args (#2905) Whenever we have an argument `f : affine_map k V P`, Lean can figure out `k`, `V`, and `P`. ESTIMATED CHANGES Modified src/linear_algebra/affine_space.lean + theorem affine_map.coe_comp + theorem affine_map.coe_id +/- theorem affine_map.comp_apply +/- theorem affine_map.id_apply 2020-06-01 17:01:58 17296e9 feat(category_theory/abelian): Schur's lemma (#2838) I wrote this mostly to gain some familiarity with @TwoFX's work on abelian categories from #2817. That all looked great, and Schur's lemma was pleasantly straightforward. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.epi_of_epi_image Modified src/category_theory/limits/shapes/kernels.lean +/- def category_theory.limits.cokernel.cokernel_iso +/- def category_theory.limits.cokernel.of_epi +/- def category_theory.limits.cokernel.of_iso_comp +/- theorem category_theory.limits.cokernel.π_of_epi +/- def category_theory.limits.cokernel.π_of_zero + def category_theory.limits.cokernel.π_zero_is_iso + theorem category_theory.limits.cokernel_not_iso_of_nonzero + theorem category_theory.limits.cokernel_not_mono_of_nonzero + theorem category_theory.limits.eq_zero_of_epi_kernel + theorem category_theory.limits.eq_zero_of_mono_cokernel + def category_theory.limits.has_cokernel + def category_theory.limits.has_kernel +/- def category_theory.limits.kernel.iso_kernel +/- def category_theory.limits.kernel.of_comp_iso +/- def category_theory.limits.kernel.of_mono +/- theorem category_theory.limits.kernel.ι_of_mono +/- def category_theory.limits.kernel.ι_of_zero +/- def category_theory.limits.kernel.ι_zero_is_iso + theorem category_theory.limits.kernel_not_epi_of_nonzero + theorem category_theory.limits.kernel_not_iso_of_nonzero Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.eq_zero_of_image_eq_zero + theorem category_theory.limits.has_zero_object.from_zero_ext + theorem category_theory.limits.has_zero_object.to_zero_ext + theorem category_theory.limits.nonzero_image_of_nonzero Modified src/category_theory/preadditive.lean + theorem category_theory.preadditive.epi_of_cokernel_zero +/- def category_theory.preadditive.has_colimit_parallel_pair +/- def category_theory.preadditive.has_limit_parallel_pair + theorem category_theory.preadditive.mono_of_kernel_zero Added src/category_theory/schur.lean + def category_theory.is_iso_of_hom_simple Added src/category_theory/simple.lean + theorem category_theory.cokernel_zero_of_nonzero_to_simple + theorem category_theory.epi_from_simple_zero_of_not_iso + def category_theory.is_iso_of_epi_of_nonzero + def category_theory.is_iso_of_mono_of_nonzero + theorem category_theory.kernel_zero_of_nonzero_from_simple + theorem category_theory.mono_to_simple_zero_of_not_iso + theorem category_theory.simple.ext + def category_theory.simple_of_cosimple + theorem category_theory.zero_not_simple 2020-06-01 15:13:02 2812cdc fix(ci): check nolints.txt against master (#2906) Currently, leanprover-community-bot makes an "update nolints" PR if both of the following hold: - the `nolints` branch doesn't exist, meaning there isn't already an open nolints PR - `nolints.txt` has been modified compared to HEAD. This can lead to a duplicate nolints PR (see e.g. #2899 and #2901), since a nolints PR might have been merged after this build on `master` started, but before this step runs. This PR changes the second check so that it instead compares `nolints.txt` against the most recent `master` commit, which should fix this. ESTIMATED CHANGES Modified scripts/update_nolints.sh 2020-06-01 12:17:18 f142b42 fix(scripts/deploy_docs): correct git push syntax (#2903) The suggestion I made in #2893 didn't work. ESTIMATED CHANGES Modified scripts/deploy_docs.sh 2020-06-01 12:17:17 b405a5e fix(tactic/equiv_rw): use kdepends_on rather than occurs (#2898) `kdepends_on t e` and `e.occurs t` sometimes give different answers, and it seems `equiv_rw` wants the behaviour that `kdepends_on` provides. There is a new test which failed with `occurs`, and succeeds using `kdepends_on`. No other changes. ESTIMATED CHANGES Modified src/tactic/equiv_rw.lean Modified test/equiv_rw.lean 2020-06-01 11:48:05 b9d485d chore(data/mv_polynomial): swap the order of mv_polynomial.ext_iff (#2902) The previous order of implications is not the one you usually want to simp or rw with. ESTIMATED CHANGES Modified src/data/mv_polynomial.lean 2020-06-01 10:50:43 0485e0f feat(scripts/deploy_docs): force push generated docs (#2893) (1) We build the full html docs in every CI run, even though they only get saved on master builds. Just compiling the .lean files used in doc generation should be enough to catch 95% of breaks. I think the bit of extra risk is worth speeding up the CI runs, especially since linting is now as fast as tests + docs. (2) The repo hosting the html pages was 1.3gb because we kept every revision. Half of the time spent on doc builds was just checking out the repo. I've deleted the history. This PR changes the build script to overwrite the previous version. ESTIMATED CHANGES Modified scripts/deploy_docs.sh 2020-06-01 09:01:28 9172cdf feat(linear_algebra/affine_space): affine spaces (#2816) Define (very minimally) affine spaces (as an abbreviation for add_torsor in the case where the group is a vector space), affine subspaces, the affine span of a set of points and affine maps. ESTIMATED CHANGES Added src/linear_algebra/affine_space.lean + theorem affine_map.coe_mk + def affine_map.comp + theorem affine_map.comp_apply + theorem affine_map.ext + def affine_map.id + theorem affine_map.id_apply + theorem affine_map.map_vadd + theorem affine_map.map_vsub + theorem affine_map.to_fun_eq_coe + structure affine_map + theorem affine_space.mem_span_points + def affine_space.span_points + theorem affine_space.span_points_nonempty_of_nonempty + theorem affine_space.vadd_mem_span_points_of_mem_span_points_of_mem_vector_span + def affine_space.vector_span + theorem affine_space.vsub_mem_vector_span_of_mem_span_points_of_mem_span_points + def affine_space + def affine_span + theorem affine_span_coe + theorem affine_span_mem + theorem affine_subspace.mem_coe + theorem affine_subspace.mem_univ + def affine_subspace.univ + theorem affine_subspace.univ_coe + structure affine_subspace 2020-06-01 06:43:53 6beebb0 chore(scripts): update nolints.txt (#2899) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-01 05:31:26 7263917 chore(order/complete_lattice): redefine `ord_continuous` (#2886) Redefine `ord_continuous` using `is_lub` to ensure that the definition makes sense for `conditionally_complete_lattice`s. ESTIMATED CHANGES Modified src/order/bounds.lean Modified src/order/complete_lattice.lean - theorem ord_continuous.mono - theorem ord_continuous.sup - def ord_continuous Added src/order/ord_continuous.lean + theorem left_ord_continuous.coe_to_le_order_embedding + theorem left_ord_continuous.coe_to_lt_order_embedding + theorem left_ord_continuous.comp + theorem left_ord_continuous.le_iff + theorem left_ord_continuous.lt_iff + theorem left_ord_continuous.map_Sup' + theorem left_ord_continuous.map_Sup + theorem left_ord_continuous.map_cSup + theorem left_ord_continuous.map_csupr + theorem left_ord_continuous.map_is_greatest + theorem left_ord_continuous.map_sup + theorem left_ord_continuous.map_supr + theorem left_ord_continuous.mono + def left_ord_continuous.to_le_order_embedding + def left_ord_continuous.to_lt_order_embedding + def left_ord_continuous + theorem right_ord_continuous.coe_to_le_order_embedding + theorem right_ord_continuous.coe_to_lt_order_embedding + theorem right_ord_continuous.comp + theorem right_ord_continuous.le_iff + theorem right_ord_continuous.lt_iff + theorem right_ord_continuous.map_Inf' + theorem right_ord_continuous.map_Inf + theorem right_ord_continuous.map_cInf + theorem right_ord_continuous.map_cinfi + theorem right_ord_continuous.map_inf + theorem right_ord_continuous.map_infi + theorem right_ord_continuous.map_is_least + theorem right_ord_continuous.mono + def right_ord_continuous.to_le_order_embedding + def right_ord_continuous.to_lt_order_embedding + def right_ord_continuous 2020-06-01 04:59:52 ea76bd8 chore(scripts): update nolints.txt (#2896) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-06-01 03:45:00 5c27885 feat(order/order_iso): group structure on order automorphisms (#2875) Also add a few missing lemmas about `order_iso` ESTIMATED CHANGES Modified src/order/order_iso.lean + theorem order_iso.apply_inv_self +/- theorem order_iso.apply_symm_apply +/- theorem order_iso.coe_fn_injective + theorem order_iso.coe_mul + theorem order_iso.coe_one + theorem order_iso.ext + theorem order_iso.inv_apply_self + theorem order_iso.mul_apply - def order_iso.preimage + theorem order_iso.rel_symm_apply + def order_iso.rsymm +/- theorem order_iso.symm_apply_apply + theorem order_iso.symm_apply_rel + theorem order_iso.to_equiv_injective - theorem order_iso.to_equiv_to_fun +/- theorem order_iso.trans_apply Modified src/set_theory/ordinal.lean 2020-06-01 01:58:08 73f95a7 chore(algebra/group): move defs to `defs.lean` (#2885) Also delete the aliases `eq_of_add_eq_add_left` and `eq_of_add_eq_add_right`. ESTIMATED CHANGES Modified src/algebra/group/basic.lean - def eq_of_add_eq_add_left - def eq_of_add_eq_add_right - theorem group.mul_left_cancel - theorem group.mul_right_cancel - theorem inv_eq_of_mul_eq_one - theorem inv_inv - theorem inv_mul_cancel_left - def inv_mul_self - theorem left_inv_eq_right_inv - theorem mul_assoc - theorem mul_comm - theorem mul_inv_cancel_right - def mul_inv_self - theorem mul_left_cancel - theorem mul_left_cancel_iff - theorem mul_left_inj - theorem mul_left_injective - theorem mul_left_inv - theorem mul_one - theorem mul_right_cancel - theorem mul_right_cancel_iff - theorem mul_right_inj - theorem mul_right_injective - theorem mul_right_inv - theorem one_mul - theorem sub_eq_add_neg Added src/algebra/group/defs.lean + theorem inv_eq_of_mul_eq_one + theorem inv_inv + theorem inv_mul_cancel_left + theorem inv_mul_self + theorem left_inv_eq_right_inv + theorem mul_assoc + theorem mul_comm + theorem mul_inv_cancel_right + theorem mul_inv_self + theorem mul_left_cancel + theorem mul_left_cancel_iff + theorem mul_left_inj + theorem mul_left_injective + theorem mul_left_inv + theorem mul_one + theorem mul_right_cancel + theorem mul_right_cancel_iff + theorem mul_right_inj + theorem mul_right_injective + theorem mul_right_inv + theorem one_mul + theorem sub_eq_add_neg Modified src/set_theory/ordinal.lean Modified src/topology/algebra/uniform_group.lean 2020-05-31 20:01:07 d3fc918 chore(scripts): update nolints.txt (#2892) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-31 18:58:17 1fd5195 chore(data/equiv/mul_add): review (#2874) * make `mul_aut` and `add_aut` reducible to get `coe_fn` * add some `coe_*` lemmas ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + theorem add_aut.coe_mul + theorem add_aut.coe_one + theorem equiv.coe_inv + theorem equiv.coe_mul_left + theorem equiv.coe_mul_right + theorem equiv.inv_symm + theorem equiv.mul_left_symm + theorem equiv.mul_right_symm + theorem mul_aut.coe_mul + theorem mul_aut.coe_one 2020-05-31 17:05:57 7c7e866 chore(*): update to lean 3.15.0 (#2851) The main effect for mathlib comes from https://github.com/leanprover-community/lean/pull/282, which changes the elaboration strategy for structure instance literals (`{ foo := 42 }`). There are two points where we need to pay attention: 1. Avoid sourcing (`{ ..e }` where e.g. `e : euclidean_domain α`) for fields like `add`, `mul`, `zero`, etc. Instead write `{ add := (+), mul := (*), zero := 0, ..e }`. The reason is that `{ ..e }` is equivalent to `{ mul := euclidean_domain.mul, ..e }`. And `euclidean_domain.mul` should never be mentioned. I'm not completely sure if this issue remains visible once the structure literal has been elaborated, but this hasn't changed since 3.14. For now, my advice is: if you get weird errors like "cannot unify `a * b` and `?m_1 * ?m_2` in a structure literal, add `mul := (*)`. 2. `refine { le := (≤), .. }; simp` is slower. This is because references to `(≤)` are no longer reduced to `le` in the subgoals. If a subgoal like `a ≤ b → b ≤ a → a = b` was stated for preorders (because `partial_order` extends `preorder`), then the `(≤)` will contain a `preorder` subterm. This subterm also contains other subgoals (proofs of reflexivity and transitivity). Therefore the goals are larger than you might expect: ``` ∀ (a b : α), @has_le.le.{u} α (@preorder.to_has_le.{u} α (@preorder.mk.{u} α le (@lattice.lt._default.{u} α le) (@conditionally_complete_lattice.copy._aux_1.{u} α c le eq_le sup eq_sup inf eq_inf Sup eq_Sup Inf eq_Inf) (@conditionally_complete_lattice.copy._aux_2.{u} α c le eq_le sup eq_sup inf eq_inf Sup eq_Sup Inf eq_Inf) (λ (a b : α), iff.refl (@has_lt.lt.{u} α (@has_lt.mk.{u} α (@lattice.lt._default.{u} α le)) a b)))) a b → @has_le.le.{u} α (@preorder.to_has_le.{u} α (@preorder.mk.{u} α le (@lattice.lt._default.{u} α le) (@conditionally_complete_lattice.copy._aux_1.{u} α c le eq_le sup eq_sup inf eq_inf Sup eq_Sup Inf eq_Inf) (@conditionally_complete_lattice.copy._aux_2.{u} α c le eq_le sup eq_sup inf eq_inf Sup eq_Sup Inf eq_Inf) (λ (a b : α), iff.refl (@has_lt.lt.{u} α (@has_lt.mk.{u} α (@lattice.lt._default.{u} α le)) a b)))) b a → @eq.{u+1} α a b ``` Advice: in cases such as this, try `refine { le := (≤), .. }; abstract { simp }` to reduce the size of the (dependent) subgoals. [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Lean.203.2E15.2E0). ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/category/CommRing/adjunctions.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/free.lean Modified src/category_theory/elements.lean + theorem category_theory.category_of_elements.comp_val + theorem category_theory.category_of_elements.ext + theorem category_theory.category_of_elements.id_val Modified src/category_theory/endomorphism.lean Modified src/category_theory/types.lean Modified src/control/applicative.lean Modified src/control/fold.lean Modified src/control/traversable/instances.lean Modified src/data/erased.lean + theorem erased.bind_def + def erased.map + theorem erased.map_def + theorem erased.map_out +/- theorem erased.nonempty_iff + theorem erased.out_inj +/- def erased.out_type + theorem erased.pure_def +/- def erased Modified src/data/list/defs.lean - def list.map_with_index - def list.map_with_index_core Modified src/data/multiset.lean + theorem multiset.bind_def + theorem multiset.fmap_def + theorem multiset.pure_def Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean - def padic_int.add - theorem padic_int.add_def +/- theorem padic_int.coe_add +/- theorem padic_int.coe_coe +/- theorem padic_int.coe_mul +/- theorem padic_int.coe_neg +/- theorem padic_int.coe_one +/- theorem padic_int.coe_zero + theorem padic_int.ext +/- theorem padic_int.mk_coe - def padic_int.mul - theorem padic_int.mul_def - def padic_int.neg +/- theorem padic_int.val_eq_coe - theorem padic_int.zero_def + theorem padic_norm_z - def padic_norm_z Modified src/data/semiquot.lean + theorem semiquot.bind_def + theorem semiquot.map_def Modified src/data/set/lattice.lean Modified src/data/string/basic.lean Modified src/group_theory/submonoid.lean + theorem submonoid.coe_eq_coe Modified src/linear_algebra/dual.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/order/copy.lean Modified src/tactic/doc_commands.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/category/UniformSpace.lean 2020-05-31 15:03:10 25fc0a8 feat(field_theory/splitting_field): lemmas (#2887) ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean + theorem polynomial.splits_X_sub_C + theorem polynomial.splits_id_iff_splits + theorem polynomial.splits_mul_iff + theorem polynomial.splits_one + theorem polynomial.splits_prod + theorem polynomial.splits_prod_iff 2020-05-31 06:22:54 13b34b3 chore(*): split long lines (#2883) Also move docs for `control/fold` from a comment to a module docstring. ESTIMATED CHANGES Modified src/algebra/commute.lean Modified src/algebra/free.lean +/- def free_add_semigroup.lift' +/- theorem free_semigroup.traverse_pure' +/- theorem free_semigroup.traverse_pure Modified src/algebra/pi_instances.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/connected.lean +/- theorem category_theory.constant_of_preserves_morphisms Modified src/category_theory/endomorphism.lean Modified src/category_theory/natural_isomorphism.lean +/- theorem category_theory.nat_iso.hom_inv_id_app +/- theorem category_theory.nat_iso.inv_hom_id_app Modified src/category_theory/products/basic.lean Modified src/control/fold.lean +/- def monoid.mfoldl +/- theorem traversable.foldl.of_free_monoid_comp_free_mk +/- theorem traversable.foldr.of_free_monoid_comp_free_mk +/- theorem traversable.mfoldl.of_free_monoid_comp_free_mk +/- theorem traversable.mfoldr.of_free_monoid_comp_free_mk Modified src/data/finsupp.lean +/- theorem finsupp.prod_comm Modified src/data/list/pairwise.lean Modified src/data/option/basic.lean +/- theorem option.bind_eq_some' +/- theorem option.bind_eq_some +/- theorem option.map_eq_some' +/- theorem option.map_eq_some Modified src/group_theory/subgroup.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/sesquilinear_form.lean +/- theorem sesq_form.ext +/- structure sesq_form Modified src/measure_theory/measurable_space.lean Modified src/meta/expr.lean Modified src/topology/basic.lean Modified src/topology/category/Top/opens.lean +/- theorem topological_space.opens.map_comp_hom_app +/- theorem topological_space.opens.map_comp_inv_app +/- theorem topological_space.opens.map_comp_obj' +/- theorem topological_space.opens.map_comp_obj +/- theorem topological_space.opens.map_comp_obj_unop +/- theorem topological_space.opens.op_map_comp_obj Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/order.lean +/- theorem continuous_of_discrete_topology Modified src/topology/uniform_space/basic.lean 2020-05-31 04:59:04 a285049 chore(algebra/group_hom): rename `add_monoid.smul` to `nsmul` (#2861) Also drop `•` as a notation for two `smul`s declared in this file, use `•ℕ` and `•ℤ` instead. This way one can immediately see that a lemma uses `nsmul`/`gsmul`, not `has_scalar.smul`. ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/big_operators.lean + theorem finset.sum_nsmul - theorem finset.sum_smul' Modified src/algebra/commute.lean + theorem commute.nsmul_left + theorem commute.nsmul_nsmul + theorem commute.nsmul_right + theorem commute.nsmul_self + theorem commute.self_nsmul + theorem commute.self_nsmul_nsmul - theorem commute.self_smul - theorem commute.self_smul_smul - theorem commute.smul_left - theorem commute.smul_right - theorem commute.smul_self - theorem commute.smul_smul Modified src/algebra/geom_sum.lean Modified src/algebra/group_power.lean +/- theorem add_gsmul - theorem add_monoid.add_smul - theorem add_monoid.mul_smul' - theorem add_monoid.mul_smul - theorem add_monoid.mul_smul_assoc - theorem add_monoid.mul_smul_left - theorem add_monoid.neg_smul - theorem add_monoid.one_smul - def add_monoid.smul - theorem add_monoid.smul_add - theorem add_monoid.smul_eq_mul' - theorem add_monoid.smul_eq_mul - theorem add_monoid.smul_le_smul - theorem add_monoid.smul_le_smul_of_le_right - theorem add_monoid.smul_neg_comm - theorem add_monoid.smul_nonneg - theorem add_monoid.smul_one - theorem add_monoid.smul_sub - theorem add_monoid.smul_zero - theorem add_monoid.zero_smul +/- theorem add_monoid_hom.map_gsmul + theorem add_monoid_hom.map_nsmul - theorem add_monoid_hom.map_smul + theorem add_nsmul +/- theorem add_one_gsmul +/- theorem bit0_gsmul + theorem bit0_nsmul - theorem bit0_smul +/- theorem bit1_gsmul + theorem bit1_nsmul - theorem bit1_smul +/- theorem gsmul_add_comm +/- theorem gsmul_coe_nat +/- theorem gsmul_mul' +/- theorem gsmul_mul +/- theorem gsmul_neg_succ +/- theorem gsmul_of_nat +/- theorem gsmul_one +/- theorem gsmul_zero + theorem is_add_monoid_hom.map_nsmul - theorem is_add_monoid_hom.map_smul +/- theorem list.sum_repeat + theorem mul_nsmul' + theorem mul_nsmul + theorem mul_nsmul_assoc + theorem mul_nsmul_left + theorem nat.nsmul_eq_mul - theorem nat.smul_eq_mul +/- theorem neg_gsmul + theorem neg_nsmul +/- theorem neg_one_gsmul + def nsmul + theorem nsmul_add + theorem nsmul_add_comm' + theorem nsmul_add_comm + theorem nsmul_eq_mul' + theorem nsmul_eq_mul + theorem nsmul_le_nsmul + theorem nsmul_le_nsmul_of_le_right + theorem nsmul_neg_comm + theorem nsmul_nonneg + theorem nsmul_one + theorem nsmul_sub + theorem nsmul_zero + theorem of_add_nsmul - theorem of_add_smul +/- theorem one_add_gsmul +/- theorem one_gsmul + theorem one_nsmul - theorem smul_add_comm' - theorem smul_add_comm + theorem succ_nsmul' + theorem succ_nsmul - theorem succ_smul' - theorem succ_smul + theorem two_nsmul - theorem two_smul' + theorem with_bot.coe_nsmul - theorem with_bot.coe_smul +/- theorem zero_gsmul + theorem zero_nsmul Modified src/algebra/iterate_hom.lean Modified src/algebra/module.lean - theorem semimodule.add_monoid_smul_eq_smul + theorem semimodule.nsmul_eq_smul Modified src/algebra/semiconj.lean + theorem semiconj_by.nsmul_left + theorem semiconj_by.nsmul_nsmul + theorem semiconj_by.nsmul_right - theorem semiconj_by.smul_left - theorem semiconj_by.smul_right - theorem semiconj_by.smul_smul Modified src/analysis/analytic/composition.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/exponential.lean Modified src/data/finset.lean + theorem multiset.to_finset_nsmul - theorem multiset.to_finset_smul Modified src/data/finsupp.lean +/- theorem finsupp.to_multiset_single Modified src/data/multiset.lean +/- theorem multiset.count_smul +/- theorem multiset.sum_repeat Modified src/data/mv_polynomial.lean Modified src/data/nat/multiplicity.lean Modified src/data/pnat/factors.lean Modified src/data/polynomial.lean +/- theorem polynomial.degree_pow_le Modified src/data/real/nnreal.lean + theorem nnreal.nsmul_coe - theorem nnreal.smul_coe Modified src/field_theory/finite.lean Modified src/field_theory/mv_polynomial.lean Modified src/group_theory/submonoid.lean +/- theorem multiples.self_mem +/- theorem multiples.zero_mem +/- def multiples Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/multilinear.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/subsemiring.lean Modified src/tactic/abel.lean +/- def tactic.abel.smul +/- def tactic.abel.smulg +/- def tactic.abel.term +/- def tactic.abel.termg 2020-05-31 01:56:14 28e79d4 chore(data/set/basic): add some lemmas to `function.surjective` (#2876) This way they can be used with dot notation. Also rename `set.surjective_preimage` to `function.surjective.injective_preimage`. I think that the old name was misleading. ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem function.surjective.injective_preimage + theorem function.surjective.range_comp + theorem function.surjective.range_eq - theorem set.surjective_preimage 2020-05-31 01:56:12 297806e feat(topology/homeomorph): sum_prod_distrib (#2870) Also modify the `inv_fun` of `equiv.sum_prod_distrib` to have more useful definitional behavior. This also simplifies `measurable_equiv.sum_prod_distrib`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/measure_theory/measurable_space.lean Modified src/topology/constructions.lean +/- theorem continuous_inl +/- theorem continuous_inr +/- theorem embedding_inl +/- theorem embedding_inr + theorem is_open_map_sum + theorem is_open_sum_iff + theorem open_embedding_inl + theorem open_embedding_inr Modified src/topology/homeomorph.lean + def homeomorph.prod_sum_distrib + def homeomorph.sum_congr + def homeomorph.sum_prod_distrib 2020-05-30 22:43:58 0827a30 feat(tactic/noncomm_ring): add noncomm_ring tactic (#2858) Fixes https://github.com/leanprover-community/mathlib/issues/2727 ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean Modified src/algebra/group_power.lean + theorem bit0_mul + theorem bit1_mul + theorem mul_bit0 + theorem mul_bit1 Modified src/algebra/lie_algebra.lean Modified src/linear_algebra/bilinear_form.lean Modified src/tactic/default.lean Added src/tactic/noncomm_ring.lean Added test/noncomm_ring.lean 2020-05-30 21:15:08 6e581ef chore(scripts): update nolints.txt (#2878) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-30 19:55:19 c034b4c chore(order/bounds): +2 lemmas, fix a name (#2877) ESTIMATED CHANGES Modified src/order/bounds.lean + theorem mem_lower_bounds + theorem mem_upper_bounds + theorem monotone.le_is_glb_image - theorem monotone.le_is_glb_image_le 2020-05-30 19:08:27 9d76ac2 chore(scripts): update nolints.txt (#2873) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-30 18:01:32 f05acc8 feat(group_theory/group_action): orbit_equiv_quotient_stabilizer_symm_apply and docs (#2864) ESTIMATED CHANGES Modified src/group_theory/group_action.lean + theorem mul_action.orbit_equiv_quotient_stabilizer_symm_apply 2020-05-30 16:24:08 67f1951 refactor(algebra/module): change module into an abbreviation for semimodule (#2848) The file `algebra/module.lean` contains the lines ``` There were several attempts to make `module` an abbreviation of `semimodule` but this makes class instance search too hard for Lean 3. ``` It turns out that this was too hard for Lean 3 until recently, but this is not too hard for Lean 3.14. This PR removes these two lines, and changes the files accordingly. This means that the basic objects of linear algebra are now semimodules over semiring, making it possible to talk about matrices with natural number coefficients or apply general results on multilinear maps to get the binomial or the multinomial formula. A linear map is now defined over semirings, between semimodules which are `add_comm_monoid`s. For some statements, you need to have an `add_comm_group`, and a `ring` or a `comm_semiring` or a `comm_ring`. I have not tried to lower the possible typeclass assumptions like this in all files, but I have done it carefully in the following files: * `algebra/module` * `linear_algebra/basic` * `linear_algebra/multilinear` * `topology/algebra/module` * `topology/algebra/multilinear` Other files can be optimised later in the same way when needed, but this PR is already big enough. I have also fixed the breakage in all the other files. It was sometimes completely mysterious (in tensor products, I had to replace several times `linear_map.id.flip` with `linear_map.flip linear_map.id`), but globally all right. I have tweaked a few instance priorities to make sure that things don't go too bad: there are often additional steps in typeclass inference, going from `ring` to `semiring` and from `add_comm_group` to `add_comm_monoid`, so I have increased their priority (putting it strictly between 100 and 1000), and adjusted some other priorities to get more canonical instance paths, fixing some preexisting weirdnesses (notably in multilinear maps). One place where I really had to help Lean is with normed spaces of continuous multilinear maps, where instance search is just too big. I am aware that this will be a nightmare to refer, but as often with big refactor it's an "all or nothing" PR, impossible to split in tiny pieces. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/algebra/group/basic.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean +/- theorem is_linear_map.is_linear_map_neg +/- theorem is_linear_map.is_linear_map_smul' +/- theorem is_linear_map.is_linear_map_smul +/- theorem is_linear_map.map_neg +/- def linear_map.id +/- theorem linear_map.id_apply +/- theorem linear_map.map_sum - structure module.core +/- theorem module.gsmul_eq_smul_cast - def module.of_core + def module - def ring_hom.to_module + structure semimodule.core + def semimodule.of_core +/- theorem smul_neg +/- theorem submodule.add_mem_iff_left +/- theorem submodule.add_mem_iff_right +/- theorem submodule.neg_mem_iff +/- structure submodule +/- def subspace +/- def vector_space Modified src/algebra/pi_instances.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring.lean Modified src/analysis/calculus/darboux.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/data/dfinsupp.lean +/- theorem dfinsupp.smul_apply +/- def dfinsupp.to_has_scalar - def dfinsupp.to_module + def dfinsupp.to_semimodule Modified src/data/finsupp.lean +/- def finsupp.restrict_support_equiv Modified src/data/holor.lean Modified src/data/matrix/basic.lean Modified src/field_theory/finite.lean Modified src/linear_algebra/basic.lean +/- theorem is_linear_map.is_linear_map_add +/- theorem is_linear_map.is_linear_map_sub +/- theorem linear_equiv.eq_bot_of_equiv +/- def linear_equiv.refl +/- theorem linear_equiv.refl_apply +/- theorem linear_map.finsupp_sum + theorem linear_map.ker_eq_bot_of_injective +/- theorem linear_map.range_range_restrict +/- theorem submodule.mem_span_insert' +/- theorem submodule.sup_eq_range Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/contraction.lean +/- def contract_right Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/direct_sum_module.lean Modified src/linear_algebra/dual.lean +/- def module.dual.eval Modified src/linear_algebra/finsupp.lean +/- def finsupp.supported_equiv_finsupp Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/matrix.lean +/- theorem matrix.diagonal_to_lin +/- theorem matrix.to_lin_neg Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/tensor_product.lean +/- def linear_map.flip +/- def linear_map.lcomp +/- def tensor_product.uncurry Modified src/measure_theory/bochner_integration.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.add_comp +/- theorem continuous_linear_map.comp_add +/- theorem continuous_linear_map.is_complete_ker +/- theorem continuous_linear_map.smul_right_comp +/- theorem continuous_linear_map.smul_right_one_pow Modified src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.coe_coe +/- def continuous_multilinear_map.to_multilinear_map_linear Modified src/topology/basic.lean Modified src/topology/bounded_continuous_function.lean 2020-05-30 15:05:49 cc06d53 feat(algebra/big_operators): prod_ne_zero (#2863) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_ne_zero_iff 2020-05-30 13:12:33 b40ac2a chore(topology): make topological_space fields protected (#2867) This uses the recent `protect_proj` attribute (#2855). ESTIMATED CHANGES Modified src/topology/bases.lean Modified src/topology/basic.lean +/- structure topological_space Modified src/topology/opens.lean +/- def topological_space.opens Modified src/topology/order.lean 2020-05-30 07:33:44 62cb7f2 feat(geometry/euclidean): Euclidean space (#2852) Define Euclidean affine spaces (not necessarily finite-dimensional), and a corresponding instance for the standard Euclidean space `fin n → ℝ`. This just defines the type class and the instance, with some other basic geometric definitions and results to be added separately once this is in. I haven't attempted to do anything about the `euclidean_space` definition in geometry/manifold/real_instances.lean that comes with a comment that it uses the wrong norm. That might better be refactored by someone familiar with the manifold code. By defining Euclidean spaces such that they are defined to be metric spaces, and providing an instance, this probably implicitly gives item 91 "The Triangle Inequality" from the 100-theorems list, if that's taken to have a geometric interpretation as in the Coq version, but it's not very clear how something implicit like that from various different pieces of the library, and where the item on the list could be interpreted in several different ways anyway, should be entered in 100.yaml. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean + theorem euclidean_space.inner_def + def euclidean_space +/- theorem inner_self_eq_norm_square +/- theorem inner_self_eq_zero + theorem inner_self_nonpos + def pi.inner_product_space + def real.inner_product_space Added src/geometry/euclidean.lean + def euclidean_affine_space Modified src/geometry/manifold/real_instances.lean +/- def euclidean_quadrant + def euclidean_space2 - def euclidean_space +/- theorem findim_euclidean_space 2020-05-30 06:12:38 74d446d feat(order/iterate): some inequalities on `f^[n] x` and `g^[n] x` (#2859) ESTIMATED CHANGES Added src/order/iterate.lean + theorem function.commute.iterate_le_of_map_le + theorem function.commute.iterate_pos_lt_iff_map_lt' + theorem function.commute.iterate_pos_lt_iff_map_lt + theorem function.commute.iterate_pos_lt_of_map_lt' + theorem function.commute.iterate_pos_lt_of_map_lt 2020-05-30 04:46:16 aa47bba feat(data/equiv): equiv_of_subsingleton_of_subsingleton (#2856) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv_of_subsingleton_of_subsingleton 2020-05-30 00:45:00 5455fe1 chore(scripts): update nolints.txt (#2862) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-29 22:20:28 f95e809 chore(algebra): displace zero_ne_one_class with nonzero and make no_zero_divisors a Prop (#2847) - `[nonzero_semiring α]` becomes `[semiring α] [nonzero α]` - `[nonzero_comm_semiring α]` becomes `[comm_semiring α] [nonzero α]` - `[nonzero_comm_ring α]` becomes `[comm_ring α] [nonzero α]` - `no_zero_divisors` is now a `Prop` - `units.ne_zero` (originally for `domain`) merges into `units.coe_ne_zero` (originally for `nonzero_comm_semiring`) ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem not_is_unit_zero Modified src/algebra/char_p.lean +/- theorem char_p.false_of_nonzero_of_char_one +/- theorem char_p.ring_char_ne_one Modified src/algebra/classical_lie_algebras.lean +/- theorem lie_algebra.special_linear.sl_non_abelian Modified src/algebra/direct_limit.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/gcd_domain.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/opposites.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring.lean +/- theorem eq_zero_of_mul_self_eq_zero +/- theorem eq_zero_or_eq_zero_of_mul_eq_zero + theorem nonzero.of_ne - def nonzero_comm_ring.of_ne - def nonzero_comm_semiring.of_ne +/- theorem one_ne_zero +/- theorem pred_ne_self +/- theorem succ_ne_self +/- theorem units.coe_ne_zero - theorem units.ne_zero +/- theorem zero_ne_one Modified src/analysis/special_functions/pow.lean Modified src/data/complex/exponential.lean Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/matrix/pequiv.lean +/- theorem pequiv.to_matrix_injective Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.total_degree_X Modified src/data/padics/padic_integers.lean Modified src/data/polynomial.lean +/- theorem polynomial.monic.ne_zero + theorem polynomial.nonzero.of_polynomial_ne - def polynomial.nonzero_comm_ring.of_polynomial_ne - def polynomial.nonzero_comm_semiring.of_polynomial_ne Modified src/data/rat/basic.lean Modified src/data/real/basic.lean Modified src/data/real/nnreal.lean Modified src/data/zmod/basic.lean Modified src/data/zsqrtd/basic.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/subfield.lean Modified src/init_/data/int/basic.lean Modified src/init_/data/nat/lemmas.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/lagrange.lean Modified src/order/filter/filter_product.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/fintype.lean +/- theorem card_units_lt Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/ideal_operations.lean +/- theorem ring_hom.not_one_mem_ker Modified src/ring_theory/ideals.lean Modified src/ring_theory/noetherian.lean +/- theorem finite_of_linear_independent Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/prod.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/ordinal.lean Modified test/lint.lean 2020-05-29 20:46:37 b2f643e feat(dynamics/fixed_points): define `is_fixed_pt` (#2857) Define `function.is_fixed_pt` and prove some basic properties. ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean Added src/dynamics/fixed_points.lean + theorem function.bij_on_fixed_pts_comp + theorem function.commute.inv_on_fixed_pts_comp + theorem function.commute.left_bij_on_fixed_pts_comp + theorem function.commute.right_bij_on_fixed_pts_comp + def function.fixed_points + theorem function.inv_on_fixed_pts_comp + theorem function.is_fixed_pt.left_of_comp + theorem function.is_fixed_pt.to_left_inverse + def function.is_fixed_pt + theorem function.is_fixed_pt_id + theorem function.maps_to_fixed_pts_comp + theorem function.mem_fixed_points + theorem function.semiconj.maps_to_fixed_pts Modified src/logic/function/iterate.lean + theorem function.commute.comp_iterate + theorem function.commute.iterate_iterate_self + theorem function.commute.iterate_self + theorem function.commute.self_iterate + theorem function.comp_iterate_pred_of_pos + theorem function.iterate_pred_comp_of_pos Modified src/order/fixed_points.lean - def fixed_points Modified src/topology/metric_space/contracting.lean +/- theorem contracting_with.dist_le_of_fixed_point - theorem contracting_with.efixed_point_is_fixed' - theorem contracting_with.efixed_point_is_fixed + theorem contracting_with.efixed_point_is_fixed_pt' + theorem contracting_with.efixed_point_is_fixed_pt - theorem contracting_with.fixed_point_is_fixed + theorem contracting_with.fixed_point_is_fixed_pt +/- theorem contracting_with.fixed_point_unique' +/- theorem contracting_with.fixed_point_unique - theorem fixed_point_of_tendsto_iterate + theorem is_fixed_pt_of_tendsto_iterate 2020-05-29 16:24:04 836184a feat(tactic/protect_proj): protect_proj attribute for structures (#2855) This attribute protect the projections of a structure that is being defined. There were some errors in Euclidean domain caused by `rw` using `euclidean_domain.mul_assoc` instead of `mul_assoc` because the `euclidean_domain` namespace was open. This fixes this problem, and makes the `group` and `ring` etc. namespaces more usable. ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/gcd_domain.lean Modified src/algebra/group/basic.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring.lean Modified src/group_theory/subgroup.lean Modified src/tactic/core.lean Added src/tactic/protected.lean Added test/protec_proj.lean + structure X + structure foo 2020-05-29 16:24:02 77674a0 chore(category_theory): T50000 challenge (#2840) A lame effort at making something compile with `-T50000`. No actual speed improvement, just split up a definition into pieces. ESTIMATED CHANGES Modified src/category_theory/limits/over.lean + def category_theory.over.construct_products.cones_equiv_counit_iso + def category_theory.over.construct_products.cones_equiv_inverse_obj + def category_theory.over.construct_products.cones_equiv_unit_iso Modified src/category_theory/limits/shapes/binary_products.lean 2020-05-29 16:24:00 07cdafe feat(tactic/with_local_reducibility): alter reducibility attributes locally (#2820) ESTIMATED CHANGES Modified src/tactic/core.lean Added src/tactic/with_local_reducibility.lean + def tactic.decl_reducibility.to_attribute + inductive tactic.decl_reducibility Added test/with_local_reducibility.lean + def test.wlr_irred + def test.wlr_red + def test.wlr_semired 2020-05-29 14:48:35 4a5799e feat(data/equiv/basic): subtype_prod_equiv_prod (#2717) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.subtype_prod_equiv_prod 2020-05-29 06:50:56 b013b2d feat(ring_theory): define subsemirings (#2837) ~~Depends on #2836,~~ needs a better module docstring. Some lemmas are missing, most notably `(subsemiring.closure s : set R) = add_submonoid.closure (submonoid.closure s)`. ESTIMATED CHANGES Modified src/group_theory/congruence.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/submonoid.lean - theorem monoid_hom.closure_preimage_le + def monoid_hom.cod_mrestrict - def monoid_hom.cod_restrict + theorem monoid_hom.coe_mrange_restrict - theorem monoid_hom.coe_range_restrict + theorem monoid_hom.mclosure_preimage_le + def monoid_hom.mrange_restrict + def monoid_hom.mrestrict + theorem monoid_hom.mrestrict_apply - def monoid_hom.range_restrict - def monoid_hom.restrict - theorem monoid_hom.restrict_apply - theorem monoid_hom.restrict_eq + theorem submonoid.coe_Sup_of_directed_on + theorem submonoid.coe_supr_of_directed Modified src/ring_theory/localization.lean Added src/ring_theory/subsemiring.lean + def ring_equiv.subsemiring_congr + def ring_hom.cod_srestrict + theorem ring_hom.coe_srange + theorem ring_hom.coe_srange_restrict + theorem ring_hom.eq_of_eq_on_sdense + theorem ring_hom.eq_of_eq_on_stop + theorem ring_hom.eq_on_sclosure + def ring_hom.eq_slocus + theorem ring_hom.map_sclosure + theorem ring_hom.map_srange + theorem ring_hom.mem_srange + theorem ring_hom.sclosure_preimage_le + def ring_hom.srange + def ring_hom.srange_restrict + theorem ring_hom.srange_top_iff_surjective + theorem ring_hom.srange_top_of_surjective + def ring_hom.srestrict + theorem ring_hom.srestrict_apply + theorem subsemiring.Inf_to_add_submonoid + theorem subsemiring.Inf_to_submonoid + theorem subsemiring.add_mem + def subsemiring.closure + theorem subsemiring.closure_Union + theorem subsemiring.closure_empty + theorem subsemiring.closure_eq + theorem subsemiring.closure_eq_of_le + theorem subsemiring.closure_induction + theorem subsemiring.closure_le + theorem subsemiring.closure_mono + theorem subsemiring.closure_sUnion + theorem subsemiring.closure_union + theorem subsemiring.closure_univ + theorem subsemiring.coe_Inf + theorem subsemiring.coe_Sup_of_directed_on + theorem subsemiring.coe_bot + theorem subsemiring.coe_coe + theorem subsemiring.coe_comap + theorem subsemiring.coe_inf + theorem subsemiring.coe_map + theorem subsemiring.coe_mk' + theorem subsemiring.coe_mul + theorem subsemiring.coe_nat_mem + theorem subsemiring.coe_one + theorem subsemiring.coe_prod + theorem subsemiring.coe_ssubset_coe + theorem subsemiring.coe_subset_coe + theorem subsemiring.coe_subtype + theorem subsemiring.coe_supr_of_directed + theorem subsemiring.coe_to_add_submonoid + theorem subsemiring.coe_to_submonoid + theorem subsemiring.coe_top + def subsemiring.comap + theorem subsemiring.comap_comap + theorem subsemiring.comap_inf + theorem subsemiring.comap_infi + theorem subsemiring.comap_top + theorem subsemiring.ext' + theorem subsemiring.ext + theorem subsemiring.gc_map_comap + def subsemiring.inclusion + theorem subsemiring.le_def + theorem subsemiring.list_prod_mem + theorem subsemiring.list_sum_mem + def subsemiring.map + theorem subsemiring.map_bot + theorem subsemiring.map_le_iff_le_comap + theorem subsemiring.map_map + theorem subsemiring.map_sup + theorem subsemiring.map_supr + theorem subsemiring.mem_Inf + theorem subsemiring.mem_Sup_of_directed_on + theorem subsemiring.mem_bot + theorem subsemiring.mem_closure + theorem subsemiring.mem_coe + theorem subsemiring.mem_comap + theorem subsemiring.mem_inf + theorem subsemiring.mem_map + theorem subsemiring.mem_mk' + theorem subsemiring.mem_prod + theorem subsemiring.mem_supr_of_directed + theorem subsemiring.mem_to_add_submonoid + theorem subsemiring.mem_to_submonoid + theorem subsemiring.mem_top + theorem subsemiring.mk'_to_add_submonoid + theorem subsemiring.mk'_to_submonoid + theorem subsemiring.mul_mem + theorem subsemiring.multiset_prod_mem + theorem subsemiring.multiset_sum_mem + theorem subsemiring.one_mem + theorem subsemiring.pow_mem + def subsemiring.prod + theorem subsemiring.prod_bot_sup_bot_prod + def subsemiring.prod_equiv + theorem subsemiring.prod_mem + theorem subsemiring.prod_mono + theorem subsemiring.prod_mono_left + theorem subsemiring.prod_mono_right + theorem subsemiring.prod_top + theorem subsemiring.range_fst + theorem subsemiring.range_snd + theorem subsemiring.smul_mem + theorem subsemiring.srange_subtype + theorem subsemiring.subset_closure + def subsemiring.subtype + theorem subsemiring.sum_mem + theorem subsemiring.top_prod + theorem subsemiring.top_prod_top + theorem subsemiring.zero_mem + structure subsemiring 2020-05-29 05:57:08 6c046c7 chore(data/setoid): split into `basic` and `partition` (#2853) The `basic` part has slightly fewer dependencies and `partition` part is never used in `mathlib`. ESTIMATED CHANGES Renamed src/data/setoid.lean to src/data/setoid/basic.lean - def setoid.classes - theorem setoid.classes_eqv_classes - theorem setoid.classes_inj - theorem setoid.classes_mk_classes +/- def setoid.correspondence - theorem setoid.empty_not_mem_classes - theorem setoid.eq_eqv_class_of_mem - theorem setoid.eq_iff_classes_eq - theorem setoid.eq_of_mem_classes - theorem setoid.eq_of_mem_eqv_class - theorem setoid.eqv_class_mem - theorem setoid.eqv_classes_disjoint - theorem setoid.eqv_classes_of_disjoint_union - theorem setoid.exists_of_mem_partition - def setoid.is_partition - theorem setoid.ker_apply_eq_preimage + theorem setoid.ker_def + theorem setoid.ker_iff_mem_preimage + def setoid.lift_equiv - theorem setoid.mem_classes - def setoid.mk_classes - theorem setoid.mk_classes_classes - theorem setoid.nonempty_of_mem_partition - def setoid.partition.order_iso - theorem setoid.rel_iff_exists_classes - def setoid.setoid_of_disjoint_union Added src/data/setoid/partition.lean + def setoid.classes + theorem setoid.classes_eqv_classes + theorem setoid.classes_inj + theorem setoid.classes_mk_classes + theorem setoid.empty_not_mem_classes + theorem setoid.eq_eqv_class_of_mem + theorem setoid.eq_iff_classes_eq + theorem setoid.eq_of_mem_classes + theorem setoid.eq_of_mem_eqv_class + theorem setoid.eqv_class_mem + theorem setoid.eqv_classes_disjoint + theorem setoid.eqv_classes_of_disjoint_union + theorem setoid.exists_of_mem_partition + def setoid.is_partition + theorem setoid.mem_classes + def setoid.mk_classes + theorem setoid.mk_classes_classes + theorem setoid.nonempty_of_mem_partition + def setoid.partition.order_iso + theorem setoid.rel_iff_exists_classes + def setoid.setoid_of_disjoint_union Modified src/group_theory/congruence.lean Modified src/topology/metric_space/contracting.lean 2020-05-28 23:10:08 543ae52 feat(analysis/normed_space/add_torsor): normed_add_torsor (#2814) Define the metric space structure on torsors of additive normed group actions. The motivating case is Euclidean affine spaces. See https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Some.20olympiad.20formalisations for the discussion leading to this particular handling of the distance. Note: I'm not sure what the right way is to address the dangerous_instance linter error "The following arguments become metavariables. argument 1: (V : Type u_1)". ESTIMATED CHANGES Modified src/algebra/add_torsor.lean + theorem vadd_eq_add + theorem vsub_eq_sub Added src/analysis/normed_space/add_torsor.lean + theorem add_torsor.dist_eq_norm + def metric_space_of_normed_group_of_add_torsor Modified src/analysis/normed_space/basic.lean +/- theorem norm_eq_zero 2020-05-28 13:26:09 e9ba32d chore(scripts): update nolints.txt (#2849) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-28 11:54:54 ca95726 feat(algebra/free) additive versions, docs. (#2755) https://github.com/leanprover-community/mathlib/issues/930 ESTIMATED CHANGES Modified src/algebra/free.lean + inductive add_magma.free_add_semigroup.r + def free_add_magma.length + def free_add_magma.lift + def free_add_magma.map + inductive free_add_magma + def free_add_semigroup.lift' +/- def free_magma.length +/- def free_magma.lift +/- theorem free_magma.lift_mul +/- theorem free_magma.lift_of +/- def free_magma.map +/- theorem free_magma.map_mul' +/- theorem free_magma.map_mul +/- theorem free_magma.map_of +/- theorem free_magma.map_pure +/- theorem free_magma.mul_bind + theorem free_magma.mul_eq +/- theorem free_magma.mul_map_seq +/- theorem free_magma.mul_seq +/- theorem free_magma.pure_bind +/- theorem free_magma.pure_seq + def free_magma.rec_on' - def free_magma.repr' +/- theorem free_magma.traverse_eq +/- theorem free_magma.traverse_mul' +/- theorem free_magma.traverse_mul +/- theorem free_magma.traverse_pure' +/- theorem free_magma.traverse_pure +/- def free_semigroup.lift' +/- theorem free_semigroup.lift_mul +/- theorem free_semigroup.lift_of +/- theorem free_semigroup.lift_of_mul +/- theorem free_semigroup.map_mul' +/- theorem free_semigroup.map_mul +/- theorem free_semigroup.map_of +/- theorem free_semigroup.map_pure +/- theorem free_semigroup.mul_bind +/- theorem free_semigroup.mul_map_seq +/- theorem free_semigroup.mul_seq +/- theorem free_semigroup.pure_bind +/- theorem free_semigroup.pure_seq + def free_semigroup.rec_on' - def free_semigroup.traverse' +/- theorem free_semigroup.traverse_eq +/- theorem free_semigroup.traverse_mul' +/- theorem free_semigroup.traverse_mul +/- theorem free_semigroup.traverse_pure' +/- theorem free_semigroup.traverse_pure +/- theorem free_semigroup_free_magma_mul +/- theorem magma.free_semigroup.lift_mul +/- theorem magma.free_semigroup.lift_of +/- theorem magma.free_semigroup.map_mul +/- theorem magma.free_semigroup.map_of +/- theorem magma.free_semigroup.of_mul_assoc +/- inductive magma.free_semigroup.r 2020-05-28 08:37:23 cbf4740 refactor(data/equiv/local_equiv): use dot notation for `eq_on_source` (#2830) Also reuse more lemmas from `data/set/function`. ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean - theorem local_equiv.apply_eq_of_eq_on_source + theorem local_equiv.eq_on_source.eq_on + theorem local_equiv.eq_on_source.restr + theorem local_equiv.eq_on_source.source_eq + theorem local_equiv.eq_on_source.source_inter_preimage_eq + theorem local_equiv.eq_on_source.symm' + theorem local_equiv.eq_on_source.symm_eq_on + theorem local_equiv.eq_on_source.target_eq + theorem local_equiv.eq_on_source.trans' - theorem local_equiv.eq_on_source_preimage - theorem local_equiv.eq_on_source_restr - theorem local_equiv.eq_on_source_symm - theorem local_equiv.eq_on_source_trans - theorem local_equiv.inv_apply_eq_of_eq_on_source - theorem local_equiv.source_eq_of_eq_on_source + theorem local_equiv.symm_maps_to - theorem local_equiv.target_eq_of_eq_on_source Modified src/data/set/function.lean - theorem set.eq_on_of_left_inv_of_right_inv + theorem set.eq_on_of_left_inv_on_of_right_inv_on Modified src/geometry/manifold/manifold.lean Modified src/topology/local_homeomorph.lean - theorem local_homeomorph.apply_eq_of_eq_on_source + theorem local_homeomorph.eq_on_source.eq_on + theorem local_homeomorph.eq_on_source.restr + theorem local_homeomorph.eq_on_source.source_eq + theorem local_homeomorph.eq_on_source.symm' + theorem local_homeomorph.eq_on_source.symm_eq_on_target + theorem local_homeomorph.eq_on_source.target_eq + theorem local_homeomorph.eq_on_source.trans' - theorem local_homeomorph.eq_on_source_restr - theorem local_homeomorph.eq_on_source_symm - theorem local_homeomorph.eq_on_source_trans - theorem local_homeomorph.inv_apply_eq_of_eq_on_source - theorem local_homeomorph.source_eq_of_eq_on_source - theorem local_homeomorph.target_eq_of_eq_on_source Modified src/topology/topological_fiber_bundle.lean 2020-05-28 08:37:21 28dc2ed fix(tactic/suggest): normalize synonyms uniformly in goal and lemma (#2829) This change is intended to make `library_search` and `suggest` a bit more robust in unfolding the types of the goal and lemma in order to determine which lemmas it will try to apply. Before, there were two ad-hoc systems to map a head symbol to the name(s) that it should match, now there is only one ad-hoc function that does so. As a consequence, `library_search` should be able to use a lemma with return type `a > b` to close the goal `b < a`, and use `lemma foo : p → false` to close the goal `¬ p`. (The `>` normalization shouldn't "really" be needed if we all strictly followed the `gt_or_ge` linter but we don't and the failure has already caused confusion.) [Discussion on Zulip starts here](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/How.20to.20get.20familiar.20enough.20with.20Mathlib.20to.20use.20it/near/198746479) ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean + inductive test.library_search.P + theorem test.library_search.lemma_with_false_in_head + theorem test.library_search.lemma_with_gt_in_head 2020-05-28 07:50:25 005763e feat(linear_algebra/lagrange): Lagrange interpolation (#2764) Fixes #2600. ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_sub_le Added src/linear_algebra/lagrange.lean + def lagrange.basis + theorem lagrange.basis_empty + theorem lagrange.degree_interpolate_lt + theorem lagrange.eq_interpolate + theorem lagrange.eq_of_eval_eq + theorem lagrange.eq_zero_of_eval_eq_zero + theorem lagrange.eval_basis + theorem lagrange.eval_basis_ne + theorem lagrange.eval_basis_self + theorem lagrange.eval_interpolate + def lagrange.fun_equiv_degree_lt + def lagrange.interpolate + theorem lagrange.interpolate_add + theorem lagrange.interpolate_empty + theorem lagrange.interpolate_neg + theorem lagrange.interpolate_smul + theorem lagrange.interpolate_sub + theorem lagrange.interpolate_zero + def lagrange.linterpolate + theorem lagrange.nat_degree_basis Modified src/ring_theory/polynomial.lean +/- theorem polynomial.degree_le_mono + def polynomial.degree_lt + theorem polynomial.degree_lt_eq_span_X_pow + theorem polynomial.degree_lt_mono + theorem polynomial.mem_degree_lt 2020-05-28 07:50:22 fa371f7 feat(linear_algebra/bilinear_form): introduce adjoints of linear maps (#2746) We also use this to define the Lie algebra structure on skew-adjoint endomorphisms / matrices. The motivation is to enable us to define the classical Lie algebras. ESTIMATED CHANGES Modified src/algebra/classical_lie_algebras.lean Modified src/algebra/lie_algebra.lean + theorem bilin_form.is_skew_adjoint_bracket + def bilin_form.skew_adjoint_lie_subalgebra + def bilin_form.skew_adjoint_matrices_lie_embedding + def bilin_form.skew_adjoint_matrices_lie_subalgebra + def lie_algebra.morphism.range + def lie_equiv_matrix' + def lie_subalgebra.incl +/- def matrix.lie_algebra +/- def matrix.lie_ring Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.is_adjoint_pair.add + theorem bilin_form.is_adjoint_pair.comp + theorem bilin_form.is_adjoint_pair.eq + theorem bilin_form.is_adjoint_pair.mul + theorem bilin_form.is_adjoint_pair.smul + theorem bilin_form.is_adjoint_pair.sub + def bilin_form.is_adjoint_pair + theorem bilin_form.is_adjoint_pair_id + theorem bilin_form.is_adjoint_pair_iff_comp_left_eq_comp_right + theorem bilin_form.is_adjoint_pair_zero + def bilin_form.is_pair_self_adjoint + def bilin_form.is_pair_self_adjoint_submodule + def bilin_form.is_self_adjoint + def bilin_form.is_skew_adjoint + theorem bilin_form.is_skew_adjoint_iff_neg_self_adjoint + theorem bilin_form.mem_self_adjoint_submodule + theorem bilin_form.mem_skew_adjoint_submodule + theorem bilin_form.neg_apply + def bilin_form.self_adjoint_submodule + def bilin_form.skew_adjoint_submodule + def matrix.is_adjoint_pair + def matrix.is_self_adjoint + def matrix.is_skew_adjoint + theorem matrix_is_adjoint_pair_bilin_form + theorem mem_pair_self_adjoint_matrices_submodule + def pair_self_adjoint_matrices_linear_embedding + theorem pair_self_adjoint_matrices_linear_embedding_apply + theorem pair_self_adjoint_matrices_linear_embedding_injective + def pair_self_adjoint_matrices_submodule + def self_adjoint_matrices_submodule + def skew_adjoint_matrices_submodule + theorem to_bilin_form_to_matrix + theorem to_matrix_to_bilin_form Modified src/linear_algebra/matrix.lean + theorem matrix.comp_to_matrix_mul + theorem matrix.to_lin_neg 2020-05-28 07:02:07 315ba3e feat(category_theory): show an epi regular mono is an iso (#2781) a really minor proof to show that a regular mono which is epi is an iso ESTIMATED CHANGES Modified src/category_theory/limits/shapes/regular_mono.lean + def category_theory.is_iso_of_regular_epi_of_mono + def category_theory.is_iso_of_regular_mono_of_epi 2020-05-27 21:30:17 efb4e95 refactor(*iterate*): move to `function`; renamings (#2832) * move lemmas about `iterate` from `data.nat.basic` to `logic.function.iterate`; * move lemmas like `nat.iterate_succ` to `function` namespace; * rename some lemmas: - `iterate₀` to `iterate_fixed`, - `iterate₁` to `semiconj.iterate_right`, see also `commute.iterate_left` and `commute.iterate_right`; - `iterate₂` to `semiconj₂.iterate`; - `iterate_cancel` to `left_inverse.iterate` and `right_inverse.iterate`; * move lemmas `*_hom.iterate_map_*` to `algebra/iterate_hom`. ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/algebra/group_power.lean - theorem add_monoid_hom.iterate_map_smul - theorem monoid_hom.iterate_map_pow - theorem ring_hom.coe_pow - theorem ring_hom.iterate_map_pow - theorem ring_hom.iterate_map_smul Added src/algebra/iterate_hom.lean + theorem add_monoid_hom.iterate_map_gsmul + theorem add_monoid_hom.iterate_map_smul + theorem add_monoid_hom.iterate_map_sub + theorem monoid_hom.iterate_map_gpow + theorem monoid_hom.iterate_map_inv + theorem monoid_hom.iterate_map_mul + theorem monoid_hom.iterate_map_one + theorem monoid_hom.iterate_map_pow + theorem ring_hom.coe_pow + theorem ring_hom.iterate_map_add + theorem ring_hom.iterate_map_gsmul + theorem ring_hom.iterate_map_mul + theorem ring_hom.iterate_map_neg + theorem ring_hom.iterate_map_one + theorem ring_hom.iterate_map_pow + theorem ring_hom.iterate_map_smul + theorem ring_hom.iterate_map_sub + theorem ring_hom.iterate_map_zero Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/iterated_deriv.lean +/- theorem iterated_deriv_eq_iterate Modified src/analysis/normed_space/banach.lean Modified src/analysis/special_functions/exp_log.lean Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/computability/turing_machine.lean Modified src/data/nat/basic.lean - theorem function.bijective.iterate - theorem function.injective.iterate - theorem function.surjective.iterate - theorem monoid_hom.iterate_map_inv - theorem monoid_hom.iterate_map_mul - theorem monoid_hom.iterate_map_one - theorem monoid_hom.iterate_map_sub - theorem nat.iterate_add - theorem nat.iterate_add_apply - theorem nat.iterate_cancel - theorem nat.iterate_ind - theorem nat.iterate_mul - theorem nat.iterate_one - theorem nat.iterate_succ' - theorem nat.iterate_succ - theorem nat.iterate_succ_apply' - theorem nat.iterate_succ_apply - theorem nat.iterate_zero - theorem nat.iterate_zero_apply - theorem nat.iterate₀ - theorem nat.iterate₁ - theorem nat.iterate₂ - theorem ring_hom.iterate_map_add - theorem ring_hom.iterate_map_mul - theorem ring_hom.iterate_map_neg - theorem ring_hom.iterate_map_one - theorem ring_hom.iterate_map_sub - theorem ring_hom.iterate_map_zero Modified src/field_theory/perfect_closure.lean + theorem left_inverse_pth_root_frobenius Added src/logic/function/iterate.lean + theorem function.bijective.iterate + theorem function.commute.iterate_eq_of_map_eq + theorem function.commute.iterate_iterate + theorem function.commute.iterate_left + theorem function.commute.iterate_right + theorem function.injective.iterate + theorem function.iterate_add + theorem function.iterate_add_apply + theorem function.iterate_fixed + theorem function.iterate_id + theorem function.iterate_mul + theorem function.iterate_one + theorem function.iterate_succ' + theorem function.iterate_succ + theorem function.iterate_succ_apply' + theorem function.iterate_succ_apply + theorem function.iterate_zero + theorem function.iterate_zero_apply + theorem function.left_inverse.iterate + theorem function.right_inverse.iterate + theorem function.semiconj.iterate_left + theorem function.semiconj.iterate_right + theorem function.semiconj₂.iterate + theorem function.surjective.iterate Modified src/order/order_iso.lean Modified src/set_theory/ordinal.lean +/- theorem initial_seg.eq_or_principal +/- theorem ordinal.lift_lift +/- theorem principal_seg.cod_restrict_apply +/- theorem principal_seg.cod_restrict_top +/- theorem principal_seg.init_iff +/- theorem principal_seg.trans_apply +/- theorem principal_seg.trans_top Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/lipschitz.lean 2020-05-27 18:57:00 1988364 feat(src/ring_theory): in a PID, all fractional ideals are invertible (#2826) This would show that all PIDs are Dedekind domains, once we have a definition of Dedekind domain (we could define it right now, but it would depend on the choice of field of fractions). In `localization.lean`, I added a few small lemmas on localizations (`localization.exists_integer_multiple` and `fraction_map.to_map_eq_zero_iff`). @101damnations, are these additions compatible with your branches? I'm happy to change them if not. ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.coe_span_singleton + theorem ring.fractional_ideal.eq_span_singleton_of_principal + theorem ring.fractional_ideal.exists_eq_span_singleton_mul + theorem ring.fractional_ideal.invertible_of_principal + theorem ring.fractional_ideal.mem_coe + theorem ring.fractional_ideal.mem_singleton_mul + theorem ring.fractional_ideal.mul_inv_cancel_iff + theorem ring.fractional_ideal.one_mem_one + theorem ring.fractional_ideal.span_fractional_iff + def ring.fractional_ideal.span_singleton + theorem ring.fractional_ideal.span_singleton_fractional + theorem ring.fractional_ideal.span_singleton_mul_span_singleton + theorem ring.fractional_ideal.span_singleton_one + theorem ring.fractional_ideal.span_singleton_zero + theorem ring.fractional_ideal.val_coe_ideal + theorem ring.fractional_ideal.val_inv_of_nonzero + theorem ring.fractional_ideal.val_one + theorem ring.fractional_ideal.val_span_singleton Modified src/ring_theory/localization.lean + theorem fraction_map.to_map_eq_zero_iff + theorem localization.exists_integer_multiple' + theorem localization.exists_integer_multiple + theorem localization.lin_coe_apply 2020-05-27 13:41:59 c812ebe feat(category_theory/abelian): abelian categories (#2817) ~~Depends on #2779.~~ Closes #2178. I will give instances for `AddCommGroup` and `Module`, but since this PR is large already, I'll wait until the next PR with that. ESTIMATED CHANGES Modified docs/references.bib Added src/category_theory/abelian/basic.lean + def category_theory.abelian.biproduct_to_pushout_is_cokernel.biproduct_to_pushout + def category_theory.abelian.biproduct_to_pushout_is_cokernel.biproduct_to_pushout_cofork + def category_theory.abelian.biproduct_to_pushout_is_cokernel.is_colimit_biproduct_to_pushout + def category_theory.abelian.coimage_iso_image + def category_theory.abelian.coimage_strong_epi_mono_factorisation + def category_theory.abelian.epi_is_cokernel_of_kernel + theorem category_theory.abelian.full_image_factorisation + def category_theory.abelian.has_pullbacks + def category_theory.abelian.has_pushouts + theorem category_theory.abelian.image_eq_image + def category_theory.abelian.image_strong_epi_mono_factorisation + def category_theory.abelian.is_iso_of_mono_of_epi + def category_theory.abelian.mono_is_kernel_of_cokernel + def category_theory.abelian.pullback_to_biproduct_is_kernel.is_limit_pullback_to_biproduct + def category_theory.abelian.pullback_to_biproduct_is_kernel.pullback_to_biproduct + def category_theory.abelian.pullback_to_biproduct_is_kernel.pullback_to_biproduct_fork + def category_theory.abelian.strong_epi_of_epi Modified src/category_theory/limits/shapes/biproducts.lean + theorem category_theory.limits.biprod.hom_ext' + theorem category_theory.limits.biprod.hom_ext Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.cofork.π_eq_app_one + theorem category_theory.limits.fork.ι_eq_app_zero Modified src/category_theory/limits/shapes/strong_epi.lean + def category_theory.is_iso_of_mono_of_strong_epi - def category_theory.mono_strong_epi_is_iso Modified src/category_theory/preadditive.lean +/- theorem category_theory.preadditive.comp_neg +/- theorem category_theory.preadditive.comp_sub +/- theorem category_theory.preadditive.neg_comp +/- theorem category_theory.preadditive.neg_comp_neg +/- theorem category_theory.preadditive.sub_comp 2020-05-27 12:11:16 2deb6b4 feat(algebra/continued_fractions): add computation definitions and basic translation lemmas (#2797) ### What - add definitions of the computation of a continued fraction for a given value (in a given floor field) - add very basic, mostly technical lemmas to convert between the different structures used by the computation ### Why - I want to be able to compute the continued fraction of a value. I next will add termination, approximation, and correctness lemmas for the definitions in this commit (I already have them lying around on my PC for ages :cold_sweat: ) - The technical lemmas are needed for the next bunch of commits. ### How - Follow the straightforward approach as described, for example, on [Wikipedia](https://en.wikipedia.org/wiki/Continued_fraction#Calculating_continued_fraction_representations) ESTIMATED CHANGES Added src/algebra/continued_fractions/computation/basic.lean + theorem generalized_continued_fraction.int_fract_pair.coe_to_int_fract_pair + theorem generalized_continued_fraction.int_fract_pair.stream_is_seq + structure generalized_continued_fraction.int_fract_pair Added src/algebra/continued_fractions/computation/default.lean Added src/algebra/continued_fractions/computation/translations.lean + theorem generalized_continued_fraction.int_fract_pair.nth_seq1_eq_succ_nth_stream + theorem generalized_continued_fraction.int_fract_pair.obtain_succ_nth_stream_of_fr_zero + theorem generalized_continued_fraction.int_fract_pair.obtain_succ_nth_stream_of_gcf_of_nth_eq_some + theorem generalized_continued_fraction.int_fract_pair.seq1_fst_eq_of + theorem generalized_continued_fraction.int_fract_pair.stream_eq_none_of_fr_eq_zero + theorem generalized_continued_fraction.int_fract_pair.succ_nth_stream_eq_none_iff + theorem generalized_continued_fraction.int_fract_pair.succ_nth_stream_eq_some_iff + theorem generalized_continued_fraction.nth_of_eq_some_of_nth_int_fract_pair_stream_fr_ne_zero + theorem generalized_continued_fraction.nth_of_eq_some_of_succ_nth_int_fract_pair_stream + theorem generalized_continued_fraction.of_h_eq_floor + theorem generalized_continued_fraction.of_h_eq_int_fract_pair_seq1_fst_b + theorem generalized_continued_fraction.of_terminated_at_iff_int_fract_pair_seq1_terminated_at + theorem generalized_continued_fraction.of_terminated_at_n_iff_succ_nth_int_fract_pair_stream_eq_none Modified src/algebra/continued_fractions/default.lean 2020-05-27 12:11:14 798c61b feat(data/nat/prime): eq_prime_pow_of_dvd_least_prime_pow (#2791) Proves ```lean lemma eq_prime_pow_of_dvd_least_prime_pow (a p k : ℕ) (pp : prime p) (h₁ : ¬(a ∣ p^k)) (h₂ : a ∣ p^(k+1)) : a = p^(k+1) ``` ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.pow_dvd_pow_iff_le_right' + theorem nat.pow_dvd_pow_iff_le_right + theorem nat.pow_dvd_pow_iff_pow_le_pow Modified src/data/nat/prime.lean + theorem nat.eq_prime_pow_of_dvd_least_prime_pow 2020-05-27 12:11:12 85f08ec feat(CI): add -T100000 to the build step in CI (#2276) This PR adds `-T100000` to CI. This is the default timeout setting in the VS Code extension and emacs. With some exceptions, noted with `FIXME` comments mentioning `-T50000`, the library now compiles with `-T50000`: - [ ] `has_sum.has_sum_ne_zero` in `src/topology/algebra/infinite_sum.lean`, where I don't really understand why it is slow. - [ ] `exists_norm_eq_infi_of_complete_convex` in `src/analysis/normed_space/real_inner_product.lean`, which has a giant proof which should be rewritten in several steps. - [ ] `tangent_bundle_core.coord_change_comp` in `src/geometry/manifold/basic_smooth_bundle.lean`. - [ ] `change_origin_radius` in `src/analysis/analytic/basic.lean` There are 3 `def`s related to category theory which also don't compile: - [ ] `adj₁` in `src/topology/category/Top/adjunctions.lean` - [x] `cones_equiv_inverse` in `src/category_theory/limits/over.lean` (addressed in #2840) - [ ] `prod_functor` in `src/category_theory/limits/shapes/binary_products.lean` This proof no longer causes problems with `-T50000`, but it should still be broken up at some point. - [ ] `simple_func_sequence_tendsto` in `src/measure_theory/simple_func_dense.lean`, which has a giant proof which should be rewritten in several steps. ~~This one is really bad, and doesn't even compile with `-T100000`.~~ [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/-T50000.20challenge). ESTIMATED CHANGES Modified .github/workflows/build.yml Modified src/analysis/analytic/basic.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/measure_theory/simple_func_dense.lean Modified src/topology/category/Top/adjunctions.lean 2020-05-27 11:24:35 7c5eab3 chore(scripts): update nolints.txt (#2841) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-27 08:57:27 a7063ec feat(ring_theory/prod): ring homs to/from `R × S` (#2836) * move some instances from `algebra/pi_instances`; * add `prod.comm_semiring`; * define `ring_hom.fst`, `ring_hom.snd`, `ring_hom.prod`, and `ring_hom.prod_map`. ESTIMATED CHANGES Modified src/algebra/group/prod.lean +/- theorem monoid_hom.coe_prod_map Modified src/algebra/pi_instances.lean Added src/ring_theory/prod.lean + theorem ring_hom.coe_fst + theorem ring_hom.coe_prod_map + theorem ring_hom.coe_snd + def ring_hom.fst + theorem ring_hom.fst_comp_prod + theorem ring_hom.prod_apply + theorem ring_hom.prod_comp_prod_map + def ring_hom.prod_map + theorem ring_hom.prod_map_def + theorem ring_hom.prod_unique + def ring_hom.snd + theorem ring_hom.snd_comp_prod 2020-05-27 08:57:25 6ee3a47 chore(data/equiv/basic): simplify some defs, add `coe` lemmas (#2835) Use functions like `prod.map`, `curry`, `uncurry`, `sum.elim`, `sum.map` to define equivalences. ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- theorem equiv.apply_symm_apply + theorem equiv.coe_prod_comm + theorem equiv.coe_prod_congr + theorem equiv.coe_refl + theorem equiv.coe_trans +/- def equiv.empty_prod +/- theorem equiv.of_bijective_to_fun +/- def equiv.pempty_prod + theorem equiv.prod_assoc_sym_apply +/- def equiv.prod_comm - theorem equiv.prod_comm_apply + theorem equiv.prod_comm_symm +/- def equiv.prod_congr - theorem equiv.prod_congr_apply + theorem equiv.prod_congr_symm +/- def equiv.prod_empty +/- def equiv.prod_pempty +/- def equiv.prod_punit +/- def equiv.psum_equiv_sum +/- def equiv.punit_prod +/- theorem equiv.punit_prod_apply +/- theorem equiv.refl_apply + theorem equiv.self_comp_symm +/- def equiv.sigma_congr +/- def equiv.sigma_congr_left' + theorem equiv.sum_comm_apply - theorem equiv.sum_comm_apply_inl - theorem equiv.sum_comm_apply_inr +/- theorem equiv.sum_comm_symm +/- def equiv.sum_congr + theorem equiv.sum_congr_apply - theorem equiv.sum_congr_apply_inl - theorem equiv.sum_congr_apply_inr +/- theorem equiv.sum_congr_symm +/- def equiv.sum_empty +/- def equiv.sum_pempty +/- theorem equiv.symm_apply_apply + theorem equiv.symm_comp_self +/- theorem equiv.trans_apply Modified src/data/equiv/functor.lean Modified src/data/polynomial.lean Modified src/data/sum.lean + theorem sum.map_comp_map + theorem sum.map_id_id + theorem sum.map_inl + theorem sum.map_inr + theorem sum.map_map 2020-05-27 08:57:23 2a48225 feat(computability/tm_to_partrec): partrec functions are TM-computable (#2792) A construction of a Turing machine that can evaluate any partial recursive function. This PR contains the bulk of the work but the end to end theorem (which asserts that any `computable` function can be evaluated by a Turing machine) has not yet been stated. ESTIMATED CHANGES Added src/computability/tm_to_partrec.lean + def turing.partrec_to_TM2.K'.elim + theorem turing.partrec_to_TM2.K'.elim_update_aux + theorem turing.partrec_to_TM2.K'.elim_update_main + theorem turing.partrec_to_TM2.K'.elim_update_rev + theorem turing.partrec_to_TM2.K'.elim_update_stack + inductive turing.partrec_to_TM2.K' + def turing.partrec_to_TM2.cfg' + theorem turing.partrec_to_TM2.clear_ok + inductive turing.partrec_to_TM2.cont' + def turing.partrec_to_TM2.cont_stack + theorem turing.partrec_to_TM2.copy_ok + def turing.partrec_to_TM2.halt + def turing.partrec_to_TM2.head + theorem turing.partrec_to_TM2.head_main_ok + theorem turing.partrec_to_TM2.head_stack_ok + def turing.partrec_to_TM2.init + def turing.partrec_to_TM2.move_excl + theorem turing.partrec_to_TM2.move_ok + def turing.partrec_to_TM2.move₂ + theorem turing.partrec_to_TM2.move₂_ok + def turing.partrec_to_TM2.nat_end + def turing.partrec_to_TM2.peek' + def turing.partrec_to_TM2.pop' + theorem turing.partrec_to_TM2.pred_ok + def turing.partrec_to_TM2.push' + def turing.partrec_to_TM2.split_at_pred + theorem turing.partrec_to_TM2.split_at_pred_eq + theorem turing.partrec_to_TM2.split_at_pred_ff + def turing.partrec_to_TM2.stmt' + theorem turing.partrec_to_TM2.succ_ok + def turing.partrec_to_TM2.tr + def turing.partrec_to_TM2.tr_cfg + def turing.partrec_to_TM2.tr_cont + def turing.partrec_to_TM2.tr_cont_stack + theorem turing.partrec_to_TM2.tr_eval + theorem turing.partrec_to_TM2.tr_init + def turing.partrec_to_TM2.tr_list + theorem turing.partrec_to_TM2.tr_list_ne_Cons + def turing.partrec_to_TM2.tr_llist + def turing.partrec_to_TM2.tr_nat + theorem turing.partrec_to_TM2.tr_nat_nat_end + theorem turing.partrec_to_TM2.tr_nat_zero + def turing.partrec_to_TM2.tr_normal + theorem turing.partrec_to_TM2.tr_normal_respects + def turing.partrec_to_TM2.tr_num + theorem turing.partrec_to_TM2.tr_num_nat_end + def turing.partrec_to_TM2.tr_pos_num + theorem turing.partrec_to_TM2.tr_pos_num_nat_end + theorem turing.partrec_to_TM2.tr_respects + theorem turing.partrec_to_TM2.tr_ret_respects + def turing.partrec_to_TM2.unrev + theorem turing.partrec_to_TM2.unrev_ok + inductive turing.partrec_to_TM2.Γ' + inductive turing.partrec_to_TM2.Λ' + def turing.to_partrec.cfg.then + inductive turing.to_partrec.cfg + def turing.to_partrec.code.eval + theorem turing.to_partrec.code.exists_code.comp + theorem turing.to_partrec.code.exists_code + def turing.to_partrec.code.head + theorem turing.to_partrec.code.head_eval + def turing.to_partrec.code.id + theorem turing.to_partrec.code.id_eval + def turing.to_partrec.code.nil + theorem turing.to_partrec.code.nil_eval + theorem turing.to_partrec.code.ok.zero + def turing.to_partrec.code.ok + def turing.to_partrec.code.prec + def turing.to_partrec.code.pred + theorem turing.to_partrec.code.pred_eval + def turing.to_partrec.code.rfind + def turing.to_partrec.code.zero + theorem turing.to_partrec.code.zero_eval + inductive turing.to_partrec.code + theorem turing.to_partrec.code_is_ok + def turing.to_partrec.cont.eval + def turing.to_partrec.cont.then + theorem turing.to_partrec.cont.then_eval + inductive turing.to_partrec.cont + theorem turing.to_partrec.cont_eval_fix + def turing.to_partrec.step + theorem turing.to_partrec.step_normal.is_ret + def turing.to_partrec.step_normal + theorem turing.to_partrec.step_normal_eval + theorem turing.to_partrec.step_normal_then + def turing.to_partrec.step_ret + theorem turing.to_partrec.step_ret_eval + theorem turing.to_partrec.step_ret_then Modified src/computability/turing_machine.lean +/- def turing.TM2.step +/- def turing.TM2.step_aux + def turing.eval_induction Modified src/data/list/basic.lean + theorem list.tail_subset + theorem list.tail_suffix Modified src/data/option/defs.lean Modified src/data/pfun.lean + theorem roption.pure_eq_some Modified src/data/vector2.lean + theorem vector.cons_head + theorem vector.cons_tail + theorem vector.cons_val + theorem vector.tail_val Modified src/logic/function/basic.lean + theorem function.update_comm + theorem function.update_idem Modified src/logic/relation.lean Modified src/topology/list.lean - theorem vector.cons_val 2020-05-27 07:09:31 0d6d0b0 chore(*): split long lines, unindent in namespaces (#2834) The diff is large but here is the word diff (search for `[-` or `[+`): ``` shellsession $ git diff --word-diff=plain --ignore-all-space master | grep '(^---|\[-|\[\+)' --- a/src/algebra/big_operators.lean [-λ l, @is_group_anti_hom.map_prod _ _ _ _ _ inv_is_group_anti_hom l-]-- TODO there is probably a cleaner proof of this { have : [-(to_finset s).sum (λx,-]{+∑ x in s.to_finset,+} ite (x = a) 1 [-0)-]{+0+} = [-({a} : finset α).sum (λx,-]{+∑ x in {a},+} ite (x = a) 1 [-0),-] [- { apply (finset.sum_subset _ _).symm,-]{+0,+} { [-intros _ H, rwa mem_singleton.1 H },-] [- { exact λ _ _ H, if_neg (mt finset.mem_singleton.2 H) }-]{+rw [finset.sum_ite_eq', if_pos h, finset.sum_singleton, if_pos rfl],+} }, --- a/src/algebra/category/Group/basic.lean [-a-]{+an+} `add_equiv` between `add_group`s."] --- a/src/algebra/category/Group/colimits.lean --- a/src/algebra/category/Mon/basic.lean [-a-]{+an+} `add_equiv` between `add_monoid`s."] [-a-]{+an+} `add_equiv` between `add_comm_monoid`s."] --- a/src/algebra/free.lean --- a/src/algebra/group/units.lean --- a/src/algebra/group/units_hom.lean --- a/src/category_theory/category/default.lean [-universes v u-]-- The order in this declaration matters: v often needs to be explicitly specified while u often --- a/src/control/monad/cont.lean simp [-[call_cc,except_t.call_cc,call_cc_bind_right,except_t.goto_mk_label,map_eq_bind_pure_comp,bind_assoc,@call_cc_bind_left-]{+[call_cc,except_t.call_cc,call_cc_bind_right,except_t.goto_mk_label,map_eq_bind_pure_comp,+} call_cc_bind_left := by { intros, simp [-[call_cc,option_t.call_cc,call_cc_bind_right,option_t.goto_mk_label,map_eq_bind_pure_comp,bind_assoc,@call_cc_bind_left-]{+[call_cc,option_t.call_cc,call_cc_bind_right,+} call_cc_bind_left := by { intros, simp [-[call_cc,state_t.call_cc,call_cc_bind_left,(>>=),state_t.bind,state_t.goto_mk_label],-]{+[call_cc,state_t.call_cc,call_cc_bind_left,(>>=),+} call_cc_dummy := by { intros, simp [-[call_cc,state_t.call_cc,call_cc_bind_right,(>>=),state_t.bind,@call_cc_dummy-]{+[call_cc,state_t.call_cc,call_cc_bind_right,(>>=),+} call_cc_bind_left := by { intros, simp [-[call_cc,reader_t.call_cc,call_cc_bind_left,reader_t.goto_mk_label],-]{+[call_cc,reader_t.call_cc,call_cc_bind_left,+} --- a/src/control/monad/writer.lean --- a/src/control/traversable/basic.lean online at [-Synopsis-] --- a/src/data/analysis/filter.lean --- a/src/data/equiv/basic.lean --- a/src/data/fin.lean --- a/src/data/finset.lean [-by-]{+{+} rw [-[eq],-]{+[eq] },+} --- a/src/data/hash_map.lean --- a/src/data/int/basic.lean --- a/src/data/list/basic.lean --- a/src/data/list/tfae.lean --- a/src/data/num/lemmas.lean [-Properties of the binary representation of integers.-] --- a/src/data/zsqrtd/basic.lean --- a/src/group_theory/congruence.lean with [-a-]{+an+} addition."] @[to_additive Sup_eq_add_con_gen "The supremum of a set of additive congruence relations [-S-]{+`S`+} equals --- a/src/group_theory/monoid_localization.lean --- a/src/group_theory/submonoid.lean --- a/src/number_theory/dioph.lean --- a/src/set_theory/ordinal.lean --- a/src/tactic/apply.lean --- a/src/tactic/lean_core_docs.lean --- a/src/tactic/lint/type_classes.lean --- a/src/tactic/omega/main.lean --- a/test/coinductive.lean --- a/test/localized/import3.lean --- a/test/norm_num.lean --- a/test/tidy.lean --- a/test/where.lean ``` P.S.: I don't know how to make `git diff` hide all non-interesting chunks. ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/category/Group/basic.lean +/- def mul_equiv.to_CommGroup_iso Modified src/algebra/category/Group/colimits.lean +/- theorem AddCommGroup.colimits.quot_add +/- theorem AddCommGroup.colimits.quot_neg Modified src/algebra/category/Mon/basic.lean Modified src/algebra/free.lean +/- theorem free_magma.map_mul' +/- theorem free_magma.mul_bind +/- theorem free_magma.mul_map_seq +/- theorem free_magma.mul_seq +/- theorem free_magma.traverse_mul' +/- theorem free_magma.traverse_mul +/- theorem free_semigroup.map_mul' +/- theorem free_semigroup.map_pure +/- theorem free_semigroup.mul_bind +/- theorem free_semigroup.mul_map_seq +/- theorem free_semigroup.mul_seq +/- theorem free_semigroup.pure_seq +/- def free_semigroup.traverse' +/- theorem free_semigroup.traverse_mul' +/- theorem free_semigroup.traverse_mul +/- def free_semigroup_free_magma +/- theorem magma.free_semigroup.of_mul_assoc_left Modified src/algebra/group/units.lean Modified src/algebra/group/units_hom.lean +/- theorem units.map_comp Modified src/category_theory/category/default.lean +/- theorem category_theory.epi_of_epi_fac +/- theorem category_theory.eq_of_comp_left_eq' +/- theorem category_theory.eq_of_comp_right_eq' +/- theorem category_theory.mono_of_mono_fac Modified src/control/monad/cont.lean +/- def option_t.call_cc +/- def reader_t.call_cc +/- def state_t.call_cc +/- def writer_t.call_cc Modified src/control/monad/writer.lean Modified src/control/traversable/basic.lean Modified src/data/analysis/filter.lean +/- theorem filter.realizer.map_F Modified src/data/equiv/basic.lean +/- def equiv.Pi_curry +/- theorem equiv.swap_apply_self Modified src/data/fin.lean +/- theorem fin.succ_above_descend Modified src/data/finset.lean +/- theorem finset.image_inter +/- theorem finset.image_union Modified src/data/hash_map.lean +/- theorem hash_map.append_of_modify +/- theorem hash_map.contains_aux_iff +/- theorem hash_map.find_aux_iff +/- theorem hash_map.valid.as_list_nodup +/- theorem hash_map.valid.contains_aux_iff +/- theorem hash_map.valid.find_aux_iff +/- def mk_hash_map Modified src/data/int/basic.lean +/- theorem int.cast_neg_of_nat +/- theorem int.cast_one +/- theorem int.cast_sub_nat_nat Modified src/data/list/basic.lean +/- theorem list.all_cons +/- theorem list.any_cons +/- theorem list.append_inj' +/- theorem list.append_inj +/- theorem list.append_inj_left' +/- theorem list.append_inj_left +/- theorem list.append_inj_right' +/- theorem list.append_inj_right +/- theorem list.count_erase_of_ne +/- theorem list.count_erase_self +/- theorem list.disjoint_of_disjoint_append_left_left +/- theorem list.disjoint_of_disjoint_append_left_right +/- theorem list.disjoint_of_disjoint_append_right_left +/- theorem list.disjoint_of_disjoint_append_right_right +/- theorem list.disjoint_of_subset_left +/- theorem list.disjoint_of_subset_right +/- theorem list.eq_of_infix_of_length_eq +/- theorem list.eq_of_mem_map_const +/- theorem list.eq_of_prefix_of_length_eq +/- theorem list.eq_of_sublist_of_length_le +/- theorem list.eq_of_suffix_of_length_eq +/- theorem list.erase_cons +/- theorem list.erase_cons_tail +/- theorem list.erasep_append_right +/- theorem list.erasep_cons +/- theorem list.erasep_cons_of_neg +/- theorem list.exists_of_mem_bind +/- theorem list.ext_le +/- theorem list.filter_false +/- theorem list.filter_true +/- theorem list.foldl1_eq_foldr1 +/- theorem list.foldl_eq_foldr' +/- theorem list.foldl_eq_foldr +/- theorem list.foldl_eq_of_comm' +/- theorem list.foldl_eq_of_comm_of_assoc +/- theorem list.foldl_reverse +/- theorem list.foldr_eq_of_comm' +/- theorem list.foldr_reverse +/- theorem list.head_append +/- theorem list.head_mul_tail_prod' +/- theorem list.index_of_cons +/- theorem list.index_of_nth +/- theorem list.index_of_nth_le +/- theorem list.le_count_iff_repeat_sublist +/- theorem list.length_bind +/- theorem list.length_erase_of_mem +/- theorem list.mem_bind +/- theorem list.mem_bind_of_mem +/- theorem list.nth_le_reverse_aux1 +/- theorem list.sublist_or_mem_of_sublist +/- theorem list.suffix_iff_eq_append Modified src/data/list/tfae.lean Modified src/data/num/lemmas.lean +/- def int.of_snum +/- theorem num.add_of_nat +/- theorem num.add_one +/- theorem num.add_succ +/- theorem num.add_to_nat +/- theorem num.add_to_znum +/- theorem num.add_zero +/- theorem num.bit0_of_bit0 +/- theorem num.bit1_of_bit1 +/- theorem num.bit_to_nat +/- theorem num.bitwise_to_nat +/- theorem num.cast_add +/- theorem num.cast_bit0 +/- theorem num.cast_bit1 +/- theorem num.cast_inj +/- theorem num.cast_le +/- theorem num.cast_lt +/- theorem num.cast_mul +/- theorem num.cast_of_znum +/- theorem num.cast_one +/- theorem num.cast_pos +/- theorem num.cast_sub' +/- theorem num.cast_succ' +/- theorem num.cast_succ +/- theorem num.cast_to_int +/- theorem num.cast_to_nat +/- theorem num.cast_to_znum +/- theorem num.cast_to_znum_neg +/- theorem num.cast_zero' +/- theorem num.cast_zero +/- theorem num.cmp_eq +/- theorem num.cmp_swap +/- theorem num.cmp_to_nat +/- theorem num.div_to_nat +/- theorem num.dvd_iff_mod_eq_zero +/- theorem num.dvd_to_nat +/- theorem num.gcd_to_nat +/- theorem num.gcd_to_nat_aux +/- theorem num.land_to_nat +/- theorem num.ldiff_to_nat +/- theorem num.le_iff_cmp +/- theorem num.le_to_nat +/- theorem num.lor_to_nat +/- theorem num.lt_iff_cmp +/- theorem num.lt_to_nat +/- theorem num.lxor_to_nat +/- theorem num.mem_of_znum' +/- theorem num.mod_to_nat +/- theorem num.mul_to_nat +/- theorem num.nat_size_to_nat +/- theorem num.of_nat'_eq +/- theorem num.of_nat_cast +/- theorem num.of_nat_inj +/- theorem num.of_nat_to_znum +/- theorem num.of_nat_to_znum_neg +/- theorem num.of_to_nat +/- theorem num.of_znum'_to_nat +/- theorem num.of_znum_to_nat +/- theorem num.ppred_to_nat +/- theorem num.pred_to_nat +/- theorem num.shiftl_to_nat +/- theorem num.shiftr_to_nat +/- theorem num.size_eq_nat_size +/- theorem num.size_to_nat +/- theorem num.sub_to_nat +/- theorem num.succ'_to_nat +/- theorem num.succ_to_nat +/- theorem num.test_bit_to_nat +/- theorem num.to_nat_inj +/- theorem num.to_nat_to_int +/- theorem num.to_of_nat +/- theorem num.to_znum_inj +/- theorem num.zero_add +/- theorem num.zneg_to_znum +/- theorem num.zneg_to_znum_neg +/- theorem pos_num.add_one +/- theorem pos_num.add_succ +/- theorem pos_num.add_to_nat +/- theorem pos_num.bit0_of_bit0 +/- theorem pos_num.bit1_of_bit1 +/- theorem pos_num.bit_to_nat +/- theorem pos_num.cast_add +/- theorem pos_num.cast_bit0 +/- theorem pos_num.cast_bit1 +/- theorem pos_num.cast_inj +/- theorem pos_num.cast_le +/- theorem pos_num.cast_lt +/- theorem pos_num.cast_mul +/- theorem pos_num.cast_one' +/- theorem pos_num.cast_one +/- theorem pos_num.cast_pos +/- theorem pos_num.cast_sub' +/- theorem pos_num.cast_succ +/- theorem pos_num.cast_to_int +/- theorem pos_num.cast_to_nat +/- theorem pos_num.cast_to_num +/- theorem pos_num.cast_to_znum +/- theorem pos_num.cmp_eq +/- theorem pos_num.cmp_swap +/- theorem pos_num.cmp_to_nat +/- theorem pos_num.cmp_to_nat_lemma +/- theorem pos_num.div'_to_nat +/- theorem pos_num.divmod_to_nat +/- theorem pos_num.divmod_to_nat_aux +/- theorem pos_num.le_iff_cmp +/- theorem pos_num.le_to_nat +/- theorem pos_num.lt_iff_cmp +/- theorem pos_num.lt_to_nat +/- theorem pos_num.mod'_to_nat +/- theorem pos_num.mul_to_nat +/- theorem pos_num.nat_size_pos +/- theorem pos_num.nat_size_to_nat +/- theorem pos_num.of_to_nat +/- theorem pos_num.one_add +/- theorem pos_num.one_le_cast +/- theorem pos_num.one_sub' +/- theorem pos_num.pred'_succ' +/- theorem pos_num.pred'_to_nat +/- theorem pos_num.pred_to_nat +/- theorem pos_num.size_eq_nat_size +/- theorem pos_num.size_to_nat +/- theorem pos_num.sub'_one +/- theorem pos_num.succ'_pred' +/- theorem pos_num.succ_to_nat +/- theorem pos_num.to_int_eq_succ_pred +/- theorem pos_num.to_nat_eq_succ_pred +/- theorem pos_num.to_nat_inj +/- theorem pos_num.to_nat_pos +/- theorem pos_num.to_nat_to_int +/- theorem znum.abs_to_nat +/- theorem znum.abs_to_znum +/- theorem znum.add_one +/- theorem znum.add_zero +/- theorem znum.bit0_of_bit0 +/- theorem znum.bit1_of_bit1 +/- theorem znum.cast_add +/- theorem znum.cast_bit0 +/- theorem znum.cast_bit1 +/- theorem znum.cast_bitm1 +/- theorem znum.cast_inj +/- theorem znum.cast_le +/- theorem znum.cast_lt +/- theorem znum.cast_mul +/- theorem znum.cast_neg +/- theorem znum.cast_one +/- theorem znum.cast_pos +/- theorem znum.cast_succ +/- theorem znum.cast_to_int +/- theorem znum.cast_zero' +/- theorem znum.cast_zero +/- theorem znum.cast_zneg +/- theorem znum.cmp_to_int +/- theorem znum.div_to_int +/- theorem znum.dvd_iff_mod_eq_zero +/- theorem znum.dvd_to_int +/- theorem znum.gcd_to_nat +/- theorem znum.le_to_int +/- theorem znum.lt_to_int +/- theorem znum.mod_to_int +/- theorem znum.mul_to_int +/- theorem znum.neg_of_int +/- theorem znum.neg_zero +/- theorem znum.of_int'_eq +/- theorem znum.of_int_cast +/- theorem znum.of_nat_cast +/- theorem znum.of_to_int +/- theorem znum.to_int_inj +/- theorem znum.to_of_int +/- theorem znum.zero_add +/- theorem znum.zneg_bit1 +/- theorem znum.zneg_bitm1 +/- theorem znum.zneg_neg +/- theorem znum.zneg_pos +/- theorem znum.zneg_pred +/- theorem znum.zneg_succ +/- theorem znum.zneg_zneg Modified src/data/zsqrtd/basic.lean +/- def zsqrtd.add +/- theorem zsqrtd.add_def +/- theorem zsqrtd.add_im +/- theorem zsqrtd.add_re +/- theorem zsqrtd.bit0_im +/- theorem zsqrtd.bit0_re +/- theorem zsqrtd.bit1_im +/- theorem zsqrtd.bit1_re +/- theorem zsqrtd.coe_int_im +/- theorem zsqrtd.coe_int_re +/- theorem zsqrtd.coe_int_val +/- theorem zsqrtd.coe_nat_im +/- theorem zsqrtd.coe_nat_re +/- theorem zsqrtd.coe_nat_val +/- def zsqrtd.conj +/- theorem zsqrtd.conj_im +/- theorem zsqrtd.conj_mul +/- theorem zsqrtd.conj_re +/- theorem zsqrtd.d_pos +/- theorem zsqrtd.decompose +/- theorem zsqrtd.divides_sq_eq_zero +/- theorem zsqrtd.divides_sq_eq_zero_z +/- theorem zsqrtd.ext +/- theorem zsqrtd.le_antisymm +/- theorem zsqrtd.le_arch +/- theorem zsqrtd.le_of_le_le +/- theorem zsqrtd.le_refl +/- def zsqrtd.mul +/- theorem zsqrtd.mul_conj +/- theorem zsqrtd.mul_im +/- theorem zsqrtd.mul_re +/- theorem zsqrtd.muld_val +/- def zsqrtd.neg +/- theorem zsqrtd.neg_im +/- theorem zsqrtd.neg_re +/- def zsqrtd.nonneg +/- theorem zsqrtd.nonneg_add +/- theorem zsqrtd.nonneg_add_lem +/- theorem zsqrtd.nonneg_antisymm +/- theorem zsqrtd.nonneg_cases +/- theorem zsqrtd.nonneg_iff_zero_le +/- theorem zsqrtd.nonneg_mul +/- theorem zsqrtd.nonneg_mul_lem +/- theorem zsqrtd.nonneg_muld +/- theorem zsqrtd.nonneg_smul +/- def zsqrtd.nonnegg +/- theorem zsqrtd.nonnegg_cases_left +/- theorem zsqrtd.nonnegg_cases_right +/- theorem zsqrtd.nonnegg_comm +/- theorem zsqrtd.nonnegg_neg_pos +/- theorem zsqrtd.nonnegg_pos_neg +/- theorem zsqrtd.not_divides_square +/- theorem zsqrtd.not_sq_le_succ +/- def zsqrtd.of_int +/- theorem zsqrtd.of_int_eq_coe +/- theorem zsqrtd.of_int_im +/- theorem zsqrtd.of_int_re +/- def zsqrtd.one +/- theorem zsqrtd.one_im +/- theorem zsqrtd.one_re +/- theorem zsqrtd.smul_val +/- theorem zsqrtd.smuld_val +/- def zsqrtd.sq_le +/- theorem zsqrtd.sq_le_add +/- theorem zsqrtd.sq_le_add_mixed +/- theorem zsqrtd.sq_le_cancel +/- theorem zsqrtd.sq_le_mul +/- theorem zsqrtd.sq_le_of_le +/- theorem zsqrtd.sq_le_smul +/- def zsqrtd.sqrtd +/- theorem zsqrtd.sqrtd_im +/- theorem zsqrtd.sqrtd_re +/- def zsqrtd.zero +/- theorem zsqrtd.zero_im +/- theorem zsqrtd.zero_re Modified src/group_theory/congruence.lean +/- def con.correspondence Modified src/group_theory/monoid_localization.lean Modified src/group_theory/submonoid.lean +/- theorem add_submonoid.mem_closure_singleton Modified src/number_theory/dioph.lean +/- theorem dioph.abs_poly_dioph +/- theorem dioph.add_dioph +/- theorem dioph.and_dioph +/- theorem dioph.const_dioph +/- theorem dioph.dioph_comp2 +/- theorem dioph.dioph_comp +/- def dioph.dioph_fn +/- theorem dioph.dioph_fn_comp1 +/- theorem dioph.dioph_fn_comp2 +/- theorem dioph.dioph_fn_comp +/- theorem dioph.dioph_fn_compn +/- theorem dioph.dioph_fn_iff_pfun +/- theorem dioph.dioph_fn_vec +/- theorem dioph.dioph_fn_vec_comp1 +/- theorem dioph.dioph_list_all +/- def dioph.dioph_pfun +/- theorem dioph.dioph_pfun_comp1 +/- theorem dioph.dioph_pfun_vec +/- theorem dioph.div_dioph +/- theorem dioph.dom_dioph +/- theorem dioph.dvd_dioph +/- theorem dioph.eq_dioph +/- theorem dioph.ex1_dioph +/- theorem dioph.ex_dioph +/- theorem dioph.ext +/- theorem dioph.inject_dummies +/- theorem dioph.inject_dummies_lem +/- theorem dioph.le_dioph +/- theorem dioph.lt_dioph +/- theorem dioph.mod_dioph +/- theorem dioph.modeq_dioph +/- theorem dioph.mul_dioph +/- theorem dioph.ne_dioph +/- theorem dioph.of_no_dummies +/- theorem dioph.or_dioph +/- theorem dioph.pell_dioph +/- theorem dioph.pow_dioph +/- theorem dioph.proj_dioph +/- theorem dioph.proj_dioph_of_nat +/- theorem dioph.reindex_dioph +/- theorem dioph.reindex_dioph_fn +/- theorem dioph.sub_dioph +/- theorem dioph.vec_ex1_dioph +/- theorem dioph.xn_dioph +/- theorem list_all.imp +/- theorem list_all_congr +/- theorem list_all_cons +/- theorem list_all_map +/- theorem vector3.append_insert +/- theorem vector_allp_iff_forall Modified src/set_theory/ordinal.lean Modified src/tactic/apply.lean Modified src/tactic/lean_core_docs.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/omega/main.lean Modified test/coinductive.lean Modified test/localized/import3.lean Modified test/norm_num.lean Modified test/tidy.lean Modified test/where.lean 2020-05-27 01:18:54 2792c93 feat(ring_theory/fintype): in a finite nonzero_semiring, fintype.card (units R) < fintype.card R (#2793) ESTIMATED CHANGES Modified src/algebra/associated.lean +/- theorem not_is_unit_zero Modified src/algebra/gcd_domain.lean Modified src/algebra/group/units.lean +/- def is_unit Modified src/algebra/group/units_hom.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/ring.lean Modified src/analysis/asymptotics.lean Modified src/data/fintype/basic.lean + theorem card_lt_card_of_injective_of_not_mem + theorem mem_image_univ_iff_mem_range Modified src/group_theory/group_action.lean Modified src/group_theory/monoid_localization.lean Added src/ring_theory/fintype.lean + theorem card_units_lt Modified src/ring_theory/ideals.lean Modified src/ring_theory/power_series.lean 2020-05-26 17:35:27 63b8c52 chore(scripts): update nolints.txt (#2833) I am happy to remove some nolints for you! ESTIMATED CHANGES 2020-05-26 16:47:21 4dfd706 chore(scripts): update nolints.txt (#2831) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-26 16:47:19 4ca776e feat(linear_algebra/quadratic_form): equivalence of quadratic forms (#2769) ESTIMATED CHANGES Modified src/linear_algebra/quadratic_form.lean + theorem quadratic_form.equivalent.refl + theorem quadratic_form.equivalent.symm + theorem quadratic_form.equivalent.trans + def quadratic_form.equivalent + theorem quadratic_form.isometry.map_app + def quadratic_form.isometry.refl + def quadratic_form.isometry.symm + def quadratic_form.isometry.trans + structure quadratic_form.isometry 2020-05-26 15:15:29 9630eca feat(data/nat/primes): lemmas about min_fac (#2790) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.min_fac_eq_one_iff + theorem nat.min_fac_eq_two_iff + theorem nat.min_fac_sq_le_self 2020-05-26 13:30:46 895f568 perf(tactic/lint): speed up nolint attribute (#2828) Looking up the nolint attribute only takes 15 seconds out of the 45 minutes, so speeding up this part has little effect. More importantly, this PR removes one branch from the mathlib repository. ESTIMATED CHANGES Modified src/tactic/lint/basic.lean 2020-05-26 13:30:44 1cf59fc chore(src/algebra/ordered_ring.lean): fix linting errors (#2827) [Mentioned, but not really discussed, in this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/How.20to.20get.20familiar.20enough.20with.20Mathlib.20to.20use.20it/near/198747067). This PR also removes `mul_pos'` and `mul_nonneg'` lemmas because they are now identical to the improved `mul_pos` and `mul_nonneg`. ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean +/- theorem four_pos +/- theorem gt_of_mul_lt_mul_neg_left - theorem mul_nonneg' +/- theorem mul_nonneg - theorem mul_pos' +/- theorem mul_pos +/- theorem mul_self_nonneg +/- theorem pos_and_pos_or_neg_and_neg_of_mul_pos +/- theorem two_ge_one +/- theorem two_gt_one +/- theorem with_top.coe_eq_zero +/- theorem with_top.coe_zero +/- theorem with_top.top_ne_zero +/- theorem with_top.zero_eq_coe +/- theorem with_top.zero_ne_top Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/data/rat/order.lean Modified src/geometry/manifold/real_instances.lean 2020-05-26 13:30:42 7d86475 feat(data/polynomial): eq_one_of_is_unit_of_monic (#2823) ~~Depends on #2822 ~~ ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_nonneg_iff_ne_zero + theorem polynomial.eq_one_of_is_unit_of_monic + theorem polynomial.nat_degree_eq_zero_iff_degree_le_zero 2020-05-26 13:30:40 099ffd3 chore(algebra/free_monoid): use implicit args in `lift` (#2821) ESTIMATED CHANGES Modified src/algebra/free_monoid.lean +/- theorem free_monoid.comp_lift + theorem free_monoid.hom_map_lift +/- theorem free_monoid.lift_apply +/- theorem free_monoid.lift_comp_of +/- theorem free_monoid.lift_eval_of +/- theorem free_monoid.lift_restrict + theorem free_monoid.lift_symm_apply Modified src/algebra/group/hom.lean + theorem monoid_hom.coe_mk' Modified src/group_theory/submonoid.lean +/- theorem submonoid.closure_eq_mrange 2020-05-26 13:30:38 fc79089 feat(number_theory/primorial): Bound on the primorial function (#2701) This lemma is needed for Erdös's proof of Bertrand's postulate, but it may be of independent interest. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.self_mem_range_succ Modified src/data/list/range.lean + theorem list.self_mem_range_succ Modified src/data/multiset.lean + theorem multiset.self_mem_range_succ Modified src/data/nat/basic.lean + theorem nat.choose_symm_half Modified src/data/nat/choose.lean +/- theorem choose_le_middle + theorem choose_middle_le_pow Added src/number_theory/primorial.lean + theorem dvd_choose_of_middling_prime + def primorial + theorem primorial_le_4_pow + theorem primorial_succ + theorem prod_primes_dvd 2020-05-26 11:43:31 2c40bd3 feat(tactic/push_cast): take list of extra simp lemmas (#2825) closes #2783 ESTIMATED CHANGES Modified src/tactic/norm_cast.lean Modified test/norm_cast.lean 2020-05-26 10:40:07 ab2e52e feat(order/filter/basic): a local left inverse locally equals a local right inverse (#2808) ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean + theorem has_strict_fderiv_at.local_inverse_tendsto + theorem has_strict_fderiv_at.local_inverse_unique Modified src/order/filter/basic.lean + theorem filter.eventually_eq_of_left_inv_of_right_inv 2020-05-26 10:40:05 8c36b32 feat(order/filter/basic): add `eventually.curry` (#2807) I'm not sure that this is a good name. Suggestions of better names are welcome. ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually.curry + theorem filter.eventually_prod_iff Modified src/topology/constructions.lean + theorem filter.eventually.curry_nhds 2020-05-26 10:40:03 597946d feat(analysis/calculus/implicit): Implicit function theorem (#2749) Fixes #1849 [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/2749.20Implicit.20function.20theorem). ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean - theorem has_strict_fderiv_at.has_strict_deriv_at Added src/analysis/calculus/implicit.lean + theorem has_strict_fderiv_at.eq_implicit_function + theorem has_strict_fderiv_at.eq_implicit_function_of_complemented + def has_strict_fderiv_at.implicit_function + def has_strict_fderiv_at.implicit_function_data_of_complemented + def has_strict_fderiv_at.implicit_function_of_complemented + def has_strict_fderiv_at.implicit_to_local_homeomorph + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_apply_ker + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_fst + def has_strict_fderiv_at.implicit_to_local_homeomorph_of_complemented + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_of_complemented_apply + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_of_complemented_apply_ker + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_of_complemented_fst + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_of_complemented_self + theorem has_strict_fderiv_at.implicit_to_local_homeomorph_self + theorem has_strict_fderiv_at.map_implicit_function_eq + theorem has_strict_fderiv_at.map_implicit_function_of_complemented_eq + theorem has_strict_fderiv_at.mem_implicit_to_local_homeomorph_of_complemented_source + theorem has_strict_fderiv_at.mem_implicit_to_local_homeomorph_of_complemented_target + theorem has_strict_fderiv_at.mem_implicit_to_local_homeomorph_source + theorem has_strict_fderiv_at.mem_implicit_to_local_homeomorph_target + theorem has_strict_fderiv_at.to_implicit_function + theorem has_strict_fderiv_at.to_implicit_function_of_complemented + def implicit_function_data.implicit_function + theorem implicit_function_data.implicit_function_apply_image + theorem implicit_function_data.implicit_function_has_strict_fderiv_at + theorem implicit_function_data.left_map_implicit_function + theorem implicit_function_data.map_pt_mem_to_local_homeomorph_target + def implicit_function_data.prod_fun + theorem implicit_function_data.prod_fun_apply + theorem implicit_function_data.prod_map_implicit_function + theorem implicit_function_data.pt_mem_to_local_homeomorph_source + theorem implicit_function_data.right_map_implicit_function + def implicit_function_data.to_local_homeomorph + theorem implicit_function_data.to_local_homeomorph_apply + theorem implicit_function_data.to_local_homeomorph_coe + structure implicit_function_data Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.is_O_comp Modified src/topology/algebra/module.lean + theorem continuous_linear_map.is_complete_ker 2020-05-26 09:33:44 b4d4d9a feat(ring_theory/algebra): more on restrict_scalars (#2445) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/data/complex/module.lean Modified src/ring_theory/algebra.lean + def algebra.restrict_scalars_equiv + theorem algebra.restrict_scalars_equiv_apply + theorem algebra.restrict_scalars_equiv_symm_apply +/- def linear_map.restrict_scalars + theorem linear_map_algebra_module.smul_apply + def module.restrict_scalars' +/- def module.restrict_scalars + theorem module.restrict_scalars_smul_def + theorem restrict_scalars_ker + def submodule.restrict_scalars + theorem submodule.restrict_scalars_bot + theorem submodule.restrict_scalars_mem + theorem submodule.restrict_scalars_top 2020-05-26 08:11:51 ea403b3 feat(algebra/group_with_zero): mul_self_mul_inv (#2795) I found this lemma was useful for simplifying some expressions without needing to split into cases or provide a proof that the denominator is nonzero, and it doesn't show up with library_search. ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean + theorem div_div_self + theorem div_self_mul_self + theorem inv_mul_mul_self + theorem mul_inv_mul_self + theorem mul_self_div_self + theorem mul_self_mul_inv 2020-05-26 06:41:18 1c265e2 feat(data/nat/basic): with_bot lemmas (#2822) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.with_bot.coe_nonneg + theorem nat.with_bot.lt_zero_iff 2020-05-26 05:06:40 9bb9956 feat(data/nat/basic): inequalities (#2801) Adds some simple inequalities about `nat.pow`. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.lt_two_pow + theorem nat.one_le_pow' + theorem nat.one_le_pow + theorem nat.one_le_two_pow + theorem nat.one_lt_pow' + theorem nat.one_lt_pow + theorem nat.one_lt_two_pow' + theorem nat.one_lt_two_pow 2020-05-26 00:59:03 4b616e6 feat(category_theory/limits): transport lemmas for kernels (#2779) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel.cokernel_iso + def category_theory.limits.cokernel.of_iso_comp + def category_theory.limits.is_cokernel.cokernel_iso + def category_theory.limits.is_cokernel.of_iso_comp + def category_theory.limits.is_kernel.iso_kernel + def category_theory.limits.is_kernel.of_comp_iso + def category_theory.limits.kernel.iso_kernel + def category_theory.limits.kernel.of_comp_iso 2020-05-25 20:20:32 aad2dfc fix(group_with_zero): fix definition of comm_monoid_with_zero (#2818) Also generate instance comm_group_with_zero -> comm_monoid_with_zero. ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean 2020-05-25 15:03:03 ae5b55b feat(algebra/ring): ring_hom.map_dvd (#2813) ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem ring_hom.map_dvd 2020-05-25 12:50:28 52b839f feat(data/polynomial): is_unit_C (#2812) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.is_unit_C 2020-05-25 12:50:26 3e0668e feat(linear_algebra/projection): add `equiv_prod_of_surjective_of_is_compl` (#2787) If kernels of two surjective linear maps `f`, `g` are complement subspaces, then `x ↦ (f x, g x)` defines a linear equivalence. I also add a version of this equivalence for continuous maps. Depends on #2785 ESTIMATED CHANGES Modified src/analysis/normed_space/complemented.lean + theorem continuous_linear_map.coe_equiv_prod_of_surjective_of_is_compl + def continuous_linear_map.equiv_prod_of_surjective_of_is_compl + theorem continuous_linear_map.equiv_prod_of_surjective_of_is_compl_apply + theorem continuous_linear_map.equiv_prod_of_surjective_of_is_compl_to_linear_equiv Modified src/linear_algebra/basis.lean Modified src/linear_algebra/projection.lean + theorem linear_map.coe_equiv_prod_of_surjective_of_is_compl + def linear_map.equiv_prod_of_surjective_of_is_compl + theorem linear_map.equiv_prod_of_surjective_of_is_compl_apply +/- theorem linear_map.is_compl_of_proj +/- theorem linear_map.ker_id_sub_eq_of_proj + theorem linear_map.range_eq_of_proj Modified src/topology/algebra/module.lean 2020-05-25 12:07:49 60f0b01 feat(logic/function): define `semiconj` and `commute` (#2788) ESTIMATED CHANGES Added src/logic/function/conjugate.lean + theorem function.commute.comp_left + theorem function.commute.comp_right + theorem function.commute.id_left + theorem function.commute.id_right + theorem function.commute.refl + theorem function.commute.symm + def function.commute + theorem function.semiconj.commute + theorem function.semiconj.comp_left + theorem function.semiconj.comp_right + theorem function.semiconj.id_left + theorem function.semiconj.id_right + theorem function.semiconj.inverses_right + def function.semiconj + theorem function.semiconj₂.comp + theorem function.semiconj₂.id_left + def function.semiconj₂ 2020-05-25 10:18:13 96f318c feat(algebra/group_power): int.nat_abs_pow_two (#2811) ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem int.nat_abs_pow_two Modified src/number_theory/sum_four_squares.lean 2020-05-25 10:18:11 9da47ad feat(data/zmod): lemmas about coercions to zmod (#2802) I'm not particularly happy with the location of these new lemmas within the file `data.zmod`. If anyone has a suggestion that they should be some particular place higher or lower in the file, that would be welcome. ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem char_p.int_coe_eq_int_coe_iff Modified src/data/zmod/basic.lean + theorem zmod.cast_mod_int + theorem zmod.int_coe_eq_int_coe_iff + theorem zmod.int_coe_zmod_eq_zero_iff_dvd + theorem zmod.nat_coe_eq_nat_coe_iff + theorem zmod.nat_coe_zmod_eq_zero_iff_dvd 2020-05-25 08:49:00 dd062f0 feat(data/nat/prime): pow_not_prime (#2810) ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.pow_not_prime 2020-05-25 07:24:08 a2d5007 chore(topology/algebra/module): prove `fst.prod snd = id` (#2806) ESTIMATED CHANGES Modified src/topology/algebra/module.lean + theorem continuous_linear_map.fst_prod_snd 2020-05-25 07:24:07 ccf646d chore(set_theory/ordinal): use a `protected lemma` to drop a `nolint` (#2805) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + theorem ordinal.div_def - def ordinal.div_def 2020-05-25 07:24:05 a3b3aa6 fix(tactic/norm_num): workaround int.sub unfolding bug (#2804) Fixes https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/certificates.20for.20calculations/near/198631936 . Or rather, it works around an issue in how the kernel unfolds applications. The real fix is probably to adjust the definitional height or other heuristics around `add_group_has_sub` and `int.sub` so that tries to prove that they are defeq that way rather than unfolding `bit0` and `bit1`. Here is a MWE for the issue: ```lean example : int.has_sub = add_group_has_sub := rfl example : (@has_sub.sub ℤ int.has_sub 5000 2 : ℤ) = (@has_sub.sub ℤ add_group_has_sub 5000 2) := rfl -- deep recursion ``` ESTIMATED CHANGES Modified src/tactic/norm_num.lean + theorem norm_num.int_sub_hack Modified test/norm_num.lean 2020-05-25 06:35:44 6552f21 feat(algebra/add_torsor): torsors of additive group actions (#2720) Define torsors of additive group actions, to the extent needed for (and with notation motivated by) affine spaces, to the extent needed for Euclidean spaces. See https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Some.20olympiad.20formalisations for the discussion leading to this particular structure. ESTIMATED CHANGES Added src/algebra/add_torsor.lean + theorem add_action.vadd_assoc + theorem add_action.vadd_comm + theorem add_action.vadd_left_cancel + theorem add_action.zero_vadd + theorem add_torsor.eq_of_vsub_eq_zero + theorem add_torsor.neg_vsub_eq_vsub_rev + theorem add_torsor.vadd_right_cancel + theorem add_torsor.vadd_vsub + theorem add_torsor.vadd_vsub_assoc + theorem add_torsor.vsub_add_vsub_cancel + theorem add_torsor.vsub_eq_zero_iff_eq + theorem add_torsor.vsub_self + def add_torsor.vsub_set + theorem add_torsor.vsub_sub_vsub_left_cancel + theorem add_torsor.vsub_sub_vsub_right_cancel + theorem add_torsor.vsub_vadd + theorem add_torsor.vsub_vadd_eq_vsub_sub 2020-05-25 05:05:19 518d0fd feat(data/int/basic): eq_zero_of_dvd_of_nonneg_of_lt (#2803) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.eq_zero_of_dvd_of_nonneg_of_lt + theorem int.nat_abs_lt_nat_abs_of_nonneg_of_lt 2020-05-24 19:02:14 8d352b2 feat(char_p): generalize zmod.neg_one_ne_one (#2796) ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem char_p.neg_one_ne_one Modified src/data/zmod/basic.lean 2020-05-24 17:52:18 61b57cd chore(scripts): update nolints.txt (#2799) I am happy to remove some nolints for you! ESTIMATED CHANGES 2020-05-24 17:03:59 1445e08 chore(scripts): update nolints.txt (#2798) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-24 16:14:04 8590081 feat(category_theory): Product comparison (#2753) Construct the product comparison morphism, and show it's an iso iff F preserves binary products. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.prod_comparison + theorem category_theory.limits.prod_comparison_natural Added src/category_theory/limits/shapes/constructions/preserve_binary_products.lean + def category_theory.limits.alternative_cone + def category_theory.limits.alternative_cone_is_limit + def category_theory.limits.preserves_binary_prod_of_prod_comparison_iso 2020-05-24 15:07:07 292fc04 feat(category_theory): adjunction convenience defs (#2754) Transport adjunctions along natural isomorphisms, and `is_left_adjoint` or `is_right_adjoint` versions of existing adjunction properties. ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + def category_theory.adjunction.equiv_homset_left_of_nat_iso + theorem category_theory.adjunction.equiv_homset_left_of_nat_iso_apply + theorem category_theory.adjunction.equiv_homset_left_of_nat_iso_symm_apply + def category_theory.adjunction.equiv_homset_right_of_nat_iso + theorem category_theory.adjunction.equiv_homset_right_of_nat_iso_apply + theorem category_theory.adjunction.equiv_homset_right_of_nat_iso_symm_apply + def category_theory.adjunction.left_adjoint_of_nat_iso + def category_theory.adjunction.of_nat_iso_left + def category_theory.adjunction.of_nat_iso_right + def category_theory.adjunction.right_adjoint_of_nat_iso 2020-05-24 09:09:11 2ef444a feat(linear_algebra/basic): range of `linear_map.prod` (#2785) Also make `ker_prod` a `simp` lemma. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- theorem linear_map.ker_prod + theorem linear_map.range_prod_eq + theorem linear_map.range_prod_le Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.eq_symm_apply + theorem continuous_linear_equiv.symm_apply_eq + theorem continuous_linear_map.ker_prod + theorem continuous_linear_map.range_prod_eq + theorem continuous_linear_map.range_prod_le 2020-05-24 07:37:41 5449203 chore(order/basic): change "minimum" in descriptions to "minimal" (#2789) ESTIMATED CHANGES Modified src/order/basic.lean 2020-05-23 13:13:15 79e296b doc(archive/100-theorems-list): Update README.md (#2750) Making the 100.yaml file more discoverable. ESTIMATED CHANGES Modified archive/100-theorems-list/README.md 2020-05-23 12:26:58 2a3f59a chore(scripts): update nolints.txt (#2782) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-23 11:01:14 2b79f1d feat(ring_theory/ideal_operations): lemmas about ideals and galois connections (#2767) depends on #2766 ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem monotone.le_map_Sup + theorem monotone.map_Inf_le Modified src/order/galois_connection.lean + theorem galois_connection.l_unique + theorem galois_connection.u_unique Modified src/ring_theory/ideal_operations.lean + theorem ideal.comap_Inf + theorem ideal.comap_comap + theorem ideal.comap_id + theorem ideal.comap_infi + theorem ideal.comap_injective_of_surjective + theorem ideal.comap_map_comap +/- theorem ideal.comap_top + theorem ideal.gc_map_comap + def ideal.gi_map_comap + theorem ideal.le_comap_map + theorem ideal.le_comap_of_map_le + theorem ideal.map_Sup +/- theorem ideal.map_bot + theorem ideal.map_comap_le + theorem ideal.map_comap_map + theorem ideal.map_eq_bot_iff_le_ker + theorem ideal.map_id + theorem ideal.map_inf_comap_of_surjective + theorem ideal.map_infi_comap_of_surjective + theorem ideal.map_le_of_le_comap + theorem ideal.map_map +/- theorem ideal.map_sup + theorem ideal.map_sup_comap_of_surjective + theorem ideal.map_supr + theorem ideal.map_supr_comap_of_surjective + theorem ideal.map_surjective_of_surjective + theorem ideal.mul_le_left + theorem ideal.mul_le_right + theorem ideal.mul_left_self_sup + theorem ideal.mul_right_self_sup + theorem ideal.sup_mul_left_self + theorem ideal.sup_mul_right_self +/- theorem submodule.annihilator_supr +/- theorem submodule.infi_colon_supr 2020-05-23 09:33:06 ceb13ba chore(order/basic): add `monotone.order_dual`, `strict_mono.order_dual` (#2778) Also split long lines and lint. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/order/basic.lean +/- def decidable_linear_order_of_STO' +/- theorem is_strict_total_order'.swap +/- theorem le_of_forall_ge_of_dense +/- theorem le_of_forall_le_of_dense + theorem monotone.order_dual + theorem strict_mono.order_dual 2020-05-23 09:33:05 90abd3b feat(data/fintype): finset.univ_map_embedding (#2765) Adds the lemma ``` lemma finset.univ_map_embedding {α : Type*} [fintype α] (e : α ↪ α) : (finset.univ).map e = finset.univ := ``` ESTIMATED CHANGES Modified src/data/fintype/basic.lean + theorem finset.univ_map_embedding + theorem finset.univ_map_equiv_to_embedding + theorem function.embedding.equiv_of_fintype_self_embedding_to_embedding 2020-05-23 09:33:02 6948505 feat(data/polynomial): prime_of_degree_eq_one_of_monic (#2745) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_normalize + theorem polynomial.irreducible_of_degree_eq_one_of_monic + theorem polynomial.prime_of_degree_eq_one + theorem polynomial.prime_of_degree_eq_one_of_monic 2020-05-23 07:44:20 8c1793f chore(data/equiv): make `equiv.ext` args use { } (#2776) Other changes: * rename lemmas `eq_of_to_fun_eq` to `coe_fn_injective`; * add `left_inverse.eq_right_inverse` and use it to prove `equiv.ext`. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.coe_fn_injective - theorem equiv.eq_of_to_fun_eq +/- theorem equiv.ext +/- theorem equiv.perm.ext +/- theorem equiv.symm_trans +/- theorem equiv.trans_symm Modified src/data/equiv/local_equiv.lean Modified src/data/equiv/mul_add.lean Modified src/data/equiv/ring.lean Modified src/data/fintype/basic.lean Modified src/group_theory/group_action.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.ext Modified src/linear_algebra/determinant.lean Modified src/logic/function/basic.lean + theorem function.left_inverse.eq_right_inverse Modified src/order/order_iso.lean + theorem order_embedding.coe_fn_injective - theorem order_embedding.eq_of_to_fun_eq + theorem order_iso.coe_fn_injective - theorem order_iso.eq_of_to_fun_eq Modified src/set_theory/ordinal.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/isometry.lean 2020-05-22 09:41:03 f66caaa chore(scripts): update nolints.txt (#2777) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-22 08:09:58 c6aab26 feat(algebra/invertible): invertible_of_ring_char_not_dvd (#2775) ``` def invertible_of_ring_char_not_dvd {R : Type*} [field R] {t : ℕ} (not_dvd : ¬(ring_char R ∣ t)) : invertible (t : R) ``` ESTIMATED CHANGES Modified src/algebra/invertible.lean + def invertible_of_char_p_not_dvd + def invertible_of_ring_char_not_dvd 2020-05-22 08:09:56 58789f7 feat(analysis/normed_space/banach): add `continuous_linear_equiv.of_bijective` (#2774) ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean + theorem continuous_linear_equiv.coe_fn_of_bijective + theorem continuous_linear_equiv.of_bijective_apply_symm_apply + theorem continuous_linear_equiv.of_bijective_symm_apply_apply 2020-05-22 07:28:22 80ad9ed refactor(ring_theory/localization): characterise ring localizations up to isomorphism (#2714) Beginnings of ```ring_theory/localization``` refactor from #2675. It's a bit sad that using the characteristic predicate means Lean can't infer the R-algebra structure of the localization. I've tried to get round this, but I'm not using •, and I've duplicated some fairly random lemmas about modules & algebras to take ```f``` as an explicit argument - mostly just what I needed to make ```fractional_ideal``` work. Should I duplicate more? My comments in the ```fractional_ideal``` docs about 'preserving definitional equalities' wrt getting an R-module structure from an R-algebra structure: do they make sense? I had some errors about definitional equality of instances which I *think* I fixed after making sure the R-module structure always came from the R-algebra structure, as well as doing a few other things. I never chased up exactly what the errors were or how they went away, so I'm just guessing at my explanation. Things I've got left to PR to ```ring_theory/localization``` after this: - ```away``` (localization at submonoid generated by one element) - localization as a quotient type & proof it satisfies the char pred - localization at the complement of a prime ideal and the fact this is a local ring - more lemmas about fields of fractions - the order embedding for ideals of the localization vs. ideals of the original ring ESTIMATED CHANGES Modified src/ring_theory/fractional_ideal.lean +/- theorem ring.fractional_ideal.bot_eq_zero +/- theorem ring.fractional_ideal.coe_mem_one +/- theorem ring.fractional_ideal.div_nonzero +/- theorem ring.fractional_ideal.div_one +/- theorem ring.fractional_ideal.eq_zero_iff +/- theorem ring.fractional_ideal.ext +/- theorem ring.fractional_ideal.fractional_div_of_nonzero +/- theorem ring.fractional_ideal.fractional_inf +/- theorem ring.fractional_ideal.fractional_mul +/- theorem ring.fractional_ideal.fractional_of_subset_one +/- theorem ring.fractional_ideal.fractional_sup +/- theorem ring.fractional_ideal.inv_nonzero +/- theorem ring.fractional_ideal.le_iff +/- theorem ring.fractional_ideal.mem_one_iff +/- theorem ring.fractional_ideal.mem_zero_iff +/- theorem ring.fractional_ideal.mul_left_mono +/- theorem ring.fractional_ideal.mul_right_mono +/- theorem ring.fractional_ideal.ne_zero_of_mul_eq_one +/- theorem ring.fractional_ideal.nonzero_iff_val_nonzero +/- theorem ring.fractional_ideal.right_inverse_eq +/- theorem ring.fractional_ideal.sup_eq_add +/- theorem ring.fractional_ideal.val_add +/- theorem ring.fractional_ideal.val_mul +/- theorem ring.fractional_ideal.val_zero +/- theorem ring.fractional_ideal.zero_le +/- def ring.fractional_ideal +/- def ring.is_fractional Modified src/ring_theory/localization.lean + theorem eq_zero_of_ne_zero_of_mul_eq_zero + def fraction_map.to_integral_domain + def fraction_map - def localization.at_prime - def localization.away.inv_self - theorem localization.away.lift_coe - theorem localization.away.lift_comp_of - theorem localization.away.lift_of - def localization.away + def localization.codomain - theorem localization.coe_add - theorem localization.coe_is_unit' - theorem localization.coe_is_unit - theorem localization.coe_mul - theorem localization.coe_mul_eq_smul - theorem localization.coe_mul_mk - theorem localization.coe_neg - theorem localization.coe_one - theorem localization.coe_pow - theorem localization.coe_smul - theorem localization.coe_sub - theorem localization.coe_zero + theorem localization.epic_of_localization_map + theorem localization.eq_iff_eq + theorem localization.eq_iff_exists + theorem localization.eq_mk'_iff_mul_eq + theorem localization.eq_of_eq + theorem localization.eq_zero_of_fst_eq_zero - def localization.equiv_of_equiv + theorem localization.ext + theorem localization.ext_iff - theorem localization.fraction_ring.eq_zero_of - theorem localization.fraction_ring.eq_zero_of_ne_zero_of_mul_eq_zero - def localization.fraction_ring.equiv_of_equiv - def localization.fraction_ring.inv_aux - def localization.fraction_ring.map - theorem localization.fraction_ring.map_coe - theorem localization.fraction_ring.map_comp_of - theorem localization.fraction_ring.map_of - theorem localization.fraction_ring.mem_non_zero_divisors_iff_ne_zero - theorem localization.fraction_ring.mk_eq_div' - theorem localization.fraction_ring.mk_eq_div - theorem localization.fraction_ring.mk_inv' - theorem localization.fraction_ring.mk_inv - theorem localization.fraction_ring.of.injective - def localization.fraction_ring +/- def localization.is_integer +/- theorem localization.is_integer_add - theorem localization.is_integer_coe +/- theorem localization.is_integer_mul +/- theorem localization.is_integer_smul + theorem localization.is_unit_comp - def localization.le_order_embedding - def localization.lift' - theorem localization.lift'_apply_coe - theorem localization.lift'_coe - theorem localization.lift'_comp_of - theorem localization.lift'_mk - theorem localization.lift'_of - theorem localization.lift_apply_coe - theorem localization.lift_coe + theorem localization.lift_comp - theorem localization.lift_comp_of + theorem localization.lift_eq + theorem localization.lift_eq_iff + theorem localization.lift_id + theorem localization.lift_injective_iff + theorem localization.lift_left_inverse + theorem localization.lift_mk' + theorem localization.lift_mk'_spec - theorem localization.lift_of + theorem localization.lift_of_comp + theorem localization.lift_surjective_iff + theorem localization.lift_unique +/- def localization.lin_coe - theorem localization.lin_coe_apply - def localization.map - theorem localization.map_coe - theorem localization.map_comap + theorem localization.map_comp +/- theorem localization.map_comp_map - theorem localization.map_comp_of + theorem localization.map_eq +/- theorem localization.map_id + theorem localization.map_left_cancel +/- theorem localization.map_map + theorem localization.map_mk' - theorem localization.map_of + theorem localization.map_right_cancel + theorem localization.map_units + theorem localization.mem_coe + theorem localization.mk'_add + theorem localization.mk'_eq_iff_eq + theorem localization.mk'_eq_iff_eq_mul + theorem localization.mk'_eq_iff_mk'_eq + theorem localization.mk'_eq_mul_mk'_one + theorem localization.mk'_eq_of_eq + theorem localization.mk'_mul + theorem localization.mk'_mul_cancel_left + theorem localization.mk'_mul_cancel_right + theorem localization.mk'_one + theorem localization.mk'_sec + theorem localization.mk'_self'' + theorem localization.mk'_self' + theorem localization.mk'_self + theorem localization.mk'_spec' + theorem localization.mk'_spec - def localization.mk - theorem localization.mk_eq - theorem localization.mk_eq_mul_mk_one - theorem localization.mk_mul_cancel_left - theorem localization.mk_mul_cancel_right - theorem localization.mk_mul_mk - theorem localization.mk_self'' - theorem localization.mk_self' - theorem localization.mk_self - theorem localization.mul_coe_eq_smul + theorem localization.mul_mk'_eq_mk'_of_mul - def localization.non_zero_divisors - theorem localization.non_zero_divisors_one_val - def localization.of - theorem localization.of_add +/- theorem localization.of_id - theorem localization.of_is_unit' - theorem localization.of_is_unit - theorem localization.of_mul - theorem localization.of_neg - theorem localization.of_one - theorem localization.of_pow - theorem localization.of_smul - theorem localization.of_sub - theorem localization.of_zero - def localization.r - theorem localization.r_of_eq - theorem localization.refl + theorem localization.ring_equiv_of_ring_equiv_eq + theorem localization.ring_equiv_of_ring_equiv_eq_map + theorem localization.ring_equiv_of_ring_equiv_eq_map_apply + theorem localization.ring_equiv_of_ring_equiv_mk' + theorem localization.sec_spec' + theorem localization.sec_spec + theorem localization.surj - theorem localization.symm + def localization.to_map + theorem localization.to_map_injective - def localization.to_units - theorem localization.to_units_coe - theorem localization.trans + structure localization - def localization + theorem mem_non_zero_divisors_iff_ne_zero + def non_zero_divisors + def ring_hom.to_localization 2020-05-22 06:26:36 a012d76 chore(linear_algebra/projection): use implicit args in lemmas (#2773) ESTIMATED CHANGES Modified src/analysis/normed_space/complemented.lean Modified src/linear_algebra/projection.lean + theorem submodule.linear_proj_of_is_compl_comp_subtype 2020-05-22 06:26:34 749e39f feat(category_theory): preadditive binary biproducts (#2747) This PR introduces "preadditive binary biproducts", which correspond to the second definition of biproducts given in #2177. * Preadditive binary biproducts are binary biproducts. * In a preadditive category, a binary product is a preadditive binary biproduct. * This directly implies that `AddCommGroup` has preadditive binary biproducts. The existence of binary coproducts in `AddCommGroup` is then a consequence of abstract nonsense. ESTIMATED CHANGES Modified src/algebra/category/Group/biproducts.lean Modified src/category_theory/limits/shapes/biproducts.lean + theorem category_theory.limits.biprod.fst_add_snd + theorem category_theory.limits.biprod.inl_add_inr + theorem category_theory.limits.biprod.inl_fst + theorem category_theory.limits.biprod.inl_snd + theorem category_theory.limits.biprod.inr_fst + theorem category_theory.limits.biprod.inr_snd + theorem category_theory.limits.biprod.lift_desc + theorem category_theory.limits.biprod.total + def category_theory.limits.has_preadditive_binary_biproduct.of_has_colimit_pair + def category_theory.limits.has_preadditive_binary_biproduct.of_has_limit_pair + def category_theory.limits.has_preadditive_binary_biproducts_of_has_binary_coproducts + def category_theory.limits.has_preadditive_binary_biproducts_of_has_binary_products 2020-05-22 05:08:46 5585e3c chore(linear_algebra/basic): redefine le on submodule (#2766) Previously, to prove an `S \le T`, there would be a coercion in the statement after `intro x`. This fixes that. ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/projection.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean 2020-05-21 22:53:42 a9960ce chore(scripts): update nolints.txt (#2771) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-21 20:35:43 6c71874 feat(analysis/normed_space): complemented subspaces (#2738) Define complemented subspaces and prove some basic facts. ESTIMATED CHANGES Added src/analysis/normed_space/complemented.lean + theorem continuous_linear_map.ker_closed_complemented_of_finite_dimensional_range + theorem subspace.closed_complemented_iff_has_closed_compl + theorem subspace.closed_complemented_of_closed_compl + theorem subspace.closed_complemented_of_quotient_finite_dimensional + theorem subspace.coe_continuous_linear_proj_of_closed_compl' + theorem subspace.coe_continuous_linear_proj_of_closed_compl + theorem subspace.coe_prod_equiv_of_closed_compl + theorem subspace.coe_prod_equiv_of_closed_compl_symm + def subspace.linear_proj_of_closed_compl + def subspace.prod_equiv_of_closed_compl Modified src/linear_algebra/projection.lean + theorem linear_map.ker_id_sub_eq_of_proj Modified src/topology/algebra/module.lean + theorem continuous_linear_map.closed_complemented_ker_of_right_inverse + theorem continuous_linear_map.ker_cod_restrict + theorem submodule.closed_complemented.has_closed_complement + def submodule.closed_complemented + theorem submodule.closed_complemented_bot + theorem submodule.closed_complemented_top 2020-05-21 20:35:41 fd45e28 fix(*): do not nolint simp_nf (#2734) The `nolint simp_nf` for `subgroup.coe_coe` was hiding an actual nontermination issue. Please just ping me if you're unsure about the `simp_nf` linter. ESTIMATED CHANGES Modified src/algebra/field.lean - theorem div_zero - theorem inv_zero Modified src/algebra/group_with_zero.lean - theorem div_zero' + theorem div_zero - theorem inv_zero' + theorem inv_zero Modified src/group_theory/bundled_subgroup.lean 2020-05-21 18:58:04 ec01a0d perf(tactic/lint/simp): speed up `simp_comm` linter (#2760) This is a fairly unimportant linter, but takes 35% of the linting runtime in my unscientific small-case profiling run. ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean +/- theorem euclidean_domain.xgcd_aux_rec Modified src/data/int/gcd.lean +/- theorem nat.xgcd_aux_rec Modified src/tactic/lint/simp.lean 2020-05-21 15:42:46 d532eb6 feat(order/lattice): sup_left_idem and similar (#2768) ESTIMATED CHANGES Modified src/order/lattice.lean + theorem inf_left_idem + theorem inf_right_idem + theorem sup_left_idem + theorem sup_right_idem 2020-05-21 07:51:07 951b967 refactor(data/nat/basic): use function equality for `iterate` lemmas (#2748) ESTIMATED CHANGES Modified src/algebra/group_power.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/special_functions/exp_log.lean Modified src/computability/turing_machine.lean Modified src/data/nat/basic.lean +/- theorem nat.iterate_add + theorem nat.iterate_add_apply +/- theorem nat.iterate_succ' +/- theorem nat.iterate_succ + theorem nat.iterate_succ_apply' + theorem nat.iterate_succ_apply +/- theorem nat.iterate_zero + theorem nat.iterate_zero_apply Modified src/field_theory/perfect_closure.lean Modified src/topology/metric_space/contracting.lean 2020-05-20 19:37:56 a540d79 chore(archive/sensitivity): Clean up function coercion in sensitivity proof (depends on #2756) (#2758) This formalizes the proof of an old conjecture: `is_awesome Gabriel`. I also took the opportunity to remove type class struggling, which I think is related to the proof of `is_awesome Floris`. I think @jcommelin should also update this sensitivity file to use his sum notations if applicable. ESTIMATED CHANGES Modified archive/sensitivity.lean - def V.add_comm_monoid - def V.add_comm_semigroup - def V.has_add - def V.has_scalar - def V.module 2020-05-20 18:10:11 3c9bf6b chore(scripts): update nolints.txt (#2763) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-20 15:35:04 d6420bd feat(ring_theory/principal_ideal_domain): definition of principal submodule (#2761) This PR generalizes the definition of principal ideals to principal submodules. It turns out that it's essentially enough to replace `ideal R` with `submodule R M` in the relevant places. With this change, it's possible to talk about principal fractional ideals (although that development will have to wait #2714 gets merged). Since the PR already changes the variables used in this file, I took the opportunity to rename them so `[ring α]` becomes `[ring R]`. ESTIMATED CHANGES Modified src/ring_theory/principal_ideal_domain.lean - theorem ideal.is_principal.eq_bot_iff_generator_eq_zero - theorem ideal.is_principal.generator_mem - theorem ideal.is_principal.mem_iff_generator_dvd - theorem ideal.is_principal.span_singleton_generator +/- theorem is_prime.to_maximal_ideal +/- theorem mod_mem_iff +/- theorem principal_ideal_domain.associates_irreducible_iff_prime +/- theorem principal_ideal_domain.factors_decreasing +/- theorem principal_ideal_domain.factors_spec +/- theorem principal_ideal_domain.irreducible_iff_prime +/- theorem principal_ideal_domain.is_maximal_of_irreducible + theorem submodule.is_principal.eq_bot_iff_generator_eq_zero + theorem submodule.is_principal.generator_mem + theorem submodule.is_principal.mem_iff_eq_smul_generator + theorem submodule.is_principal.mem_iff_generator_dvd + theorem submodule.is_principal.span_singleton_generator 2020-05-20 15:35:02 4c3e1a9 feat(algebra): the R-module structure on S-linear maps, for S an R-algebra (#2759) I couldn't find this already in mathlib, but perhaps I've missed it. ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + def linear_map_algebra_has_scalar + def linear_map_algebra_module 2020-05-20 15:34:59 6df77a6 chore(*): update to Lean 3.14.0 (#2756) This is an optimistic PR, betting *nothing* will break when moving to Lean 3.14.0. ESTIMATED CHANGES Modified leanpkg.toml 2020-05-20 15:34:58 164c2e3 chore(category_theory): attributes and a transport proof (#2751) A couple of cleanups, modified a proof or two so that `@[simps]` can be used, which let me clean up some other proofs. Also a proof that we can transfer that `F` preserves the limit `K` along an isomorphism in `K`. (Preparation for some PRs from my topos project) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean +/- def category_theory.equivalence.refl +/- def category_theory.equivalence.symm Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/preserves.lean + def category_theory.limits.preserves_limit_of_iso Modified src/category_theory/natural_isomorphism.lean +/- theorem category_theory.nat_iso.hom_inv_id_app +/- theorem category_theory.nat_iso.inv_hom_id_app +/- theorem category_theory.nat_iso.of_components.app +/- theorem category_theory.nat_iso.of_components.hom_app +/- theorem category_theory.nat_iso.of_components.inv_app +/- def category_theory.nat_iso.of_components 2020-05-20 12:01:53 ab5d0f1 feat(category_theory/binary_products): some product lemmas and their dual (#2752) A bunch of lemmas about binary products. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.braid_natural +/- theorem category_theory.limits.coprod.inl_map +/- theorem category_theory.limits.coprod.inr_map + theorem category_theory.limits.coprod.map_desc + theorem category_theory.limits.coprod_desc_inl_inr + theorem category_theory.limits.coprod_map_comp_id + theorem category_theory.limits.coprod_map_id_comp + theorem category_theory.limits.coprod_map_id_id + theorem category_theory.limits.coprod_map_map + theorem category_theory.limits.prod.lift_map +/- theorem category_theory.limits.prod.map_fst +/- theorem category_theory.limits.prod.map_snd +/- theorem category_theory.limits.prod.symmetry' +/- theorem category_theory.limits.prod.symmetry + def category_theory.limits.prod_functor_left_comp + theorem category_theory.limits.prod_left_unitor_hom_naturality + theorem category_theory.limits.prod_left_unitor_inv_naturality + theorem category_theory.limits.prod_lift_fst_snd + theorem category_theory.limits.prod_map_comp_id + theorem category_theory.limits.prod_map_id_comp + theorem category_theory.limits.prod_map_id_id + theorem category_theory.limits.prod_map_map + theorem category_theory.limits.prod_right_unitor_hom_naturality + theorem category_theory.limits.prod_right_unitor_inv_naturality 2020-05-20 11:03:44 1f00282 docs(linear_algebra/sesquilinear_form): correct module docs (#2757) @PatrickMassot mentioned that the docs for `sesquilinear_form` mention bilinear forms instead in a few places. This PR corrects them to use "sesquilinear form" everywhere. ESTIMATED CHANGES Modified src/linear_algebra/sesquilinear_form.lean 2020-05-20 06:18:22 cbe80ed feat(linear_algebra/projection): projection to a subspace (#2739) Define equivalence between complement subspaces and projections. ESTIMATED CHANGES Modified src/algebra/module.lean +/- theorem submodule.add_mem_iff_left +/- theorem submodule.add_mem_iff_right Modified src/data/prod.lean + theorem prod.fst_eq_iff + theorem prod.snd_eq_iff Modified src/linear_algebra/basic.lean + theorem linear_equiv.coe_of_eq_apply + theorem linear_equiv.coe_of_top_symm_apply + def linear_equiv.of_eq + theorem linear_equiv.of_eq_symm +/- theorem linear_equiv.of_top_symm_apply + theorem linear_map.coe_quotient_inf_to_sup_quotient + theorem linear_map.map_eq_top_iff + theorem linear_map.map_le_map_iff' +/- theorem linear_map.map_le_map_iff + theorem linear_map.quot_ker_equiv_range_apply_mk + theorem linear_map.quot_ker_equiv_range_symm_apply_image + theorem linear_map.quotient_inf_equiv_sup_quotient_apply_mk + theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_eq_zero_iff + theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_left + theorem linear_map.quotient_inf_equiv_sup_quotient_symm_apply_right + theorem linear_map.range_range_restrict + theorem submodule.coe_quot_equiv_of_eq_bot_symm + theorem submodule.map_mkq_eq_top + theorem submodule.mem_left_iff_eq_zero_of_disjoint + theorem submodule.mem_right_iff_eq_zero_of_disjoint + def submodule.quot_equiv_of_eq_bot + theorem submodule.quot_equiv_of_eq_bot_apply_mk + theorem submodule.quot_equiv_of_eq_bot_symm_apply - theorem submodule.range_range_restrict Modified src/linear_algebra/basis.lean + theorem submodule.exists_is_compl Modified src/linear_algebra/dimension.lean Added src/linear_algebra/projection.lean + theorem linear_map.is_compl_of_proj + theorem linear_map.linear_proj_of_is_compl_of_proj + theorem submodule.coe_is_compl_equiv_proj_apply + theorem submodule.coe_is_compl_equiv_proj_symm_apply + theorem submodule.coe_prod_equiv_of_is_compl' + theorem submodule.coe_prod_equiv_of_is_compl + def submodule.is_compl_equiv_proj + def submodule.linear_proj_of_is_compl + theorem submodule.linear_proj_of_is_compl_apply_eq_zero_iff + theorem submodule.linear_proj_of_is_compl_apply_left + theorem submodule.linear_proj_of_is_compl_apply_right' + theorem submodule.linear_proj_of_is_compl_apply_right + theorem submodule.linear_proj_of_is_compl_idempotent + theorem submodule.linear_proj_of_is_compl_ker + theorem submodule.linear_proj_of_is_compl_range + theorem submodule.mk_quotient_equiv_of_is_compl_apply + def submodule.prod_equiv_of_is_compl + theorem submodule.prod_equiv_of_is_compl_symm_apply_fst_eq_zero + theorem submodule.prod_equiv_of_is_compl_symm_apply_left + theorem submodule.prod_equiv_of_is_compl_symm_apply_right + theorem submodule.prod_equiv_of_is_compl_symm_apply_snd_eq_zero + def submodule.quotient_equiv_of_is_compl + theorem submodule.quotient_equiv_of_is_compl_apply_mk_coe + theorem submodule.quotient_equiv_of_is_compl_symm_apply 2020-05-19 22:34:25 3c1f9f9 feat(data/nat/choose): sum_range_choose_halfway (#2688) This is a lemma on the way to proving that the product of primes less than `n` is less than `4 ^ n`, which is itself a lemma in Bertrand's postulate. The lemma itself is of dubious significance, but it will eventually be necessary for Bertrand, and I want to commit early and often. Brief discussion of this decision at https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Candidate.20for.20inclusion.20in.20mathlib/near/197619722 . This is my second PR to mathlib; the code is definitely verbose and poorly structured, but I don't know how to fix it. I'm expecting almost no lines of the original to remain by the end of this! ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/nat/choose.lean + theorem sum_range_choose_halfway 2020-05-19 18:38:27 e3aca90 feat(logic/basic): spaces with a zero or a one are nonempty (#2743) Register instances that a space with a zero or a one is not empty, with low priority as we don't want to embark on a search for a zero or a one if this is not necessary. Discussion on Zulip at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/inhabited.20and.20nonempty.20instances/near/198030072 ESTIMATED CHANGES Modified src/analysis/calculus/inverse.lean Modified src/analysis/normed_space/banach.lean Modified src/group_theory/bundled_subgroup.lean Modified src/group_theory/sylow.lean Modified src/logic/basic.lean 2020-05-19 17:00:43 607767e feat(algebra/big_operators): reversing an interval doesn't change the product (#2740) Also use Gauss summation in the Gauss summation formula. Inspired by #2688 ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_Ico_reflect + theorem finset.prod_range_reflect + theorem finset.sum_Ico_reflect + theorem finset.sum_range_reflect Modified src/data/finset.lean + theorem finset.Ico.image_const_sub + theorem finset.range_image_pred_top_sub 2020-05-19 15:54:58 62c22da fix(ci): replace 2 old secret names (#2744) [`lean-3.13.2`](https://github.com/leanprover-community/mathlib/tree/lean-3.13.2) is out of date, since I missed two instances of `DEPLOY_NIGHTLY_GITHUB_TOKEN` in #2737. ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-05-19 11:50:10 1e18512 chore(*): remove non-canonical `option.decidable_eq_none` instance (#2741) I also removed the hack in `ulower.primcodable` where I had to use `none = o` instead of `o = none`. ESTIMATED CHANGES Modified src/computability/primrec.lean Modified src/data/list/sigma.lean Modified src/data/option/defs.lean + def option.decidable_eq_none Modified src/data/seq/seq.lean 2020-05-19 09:58:39 93b41e5 fix(*): put headings in multiline module docs on their own lines (#2742) found using regex: `/-! #([^-/])*$`. These don't render correctly in the mathlib docs. Module doc strings that consist of a heading on its own line are OK so I haven't changed them. I also moved some descriptive text from copyright headers to module docs, or removed such text if there was already a module doc string. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/local_extr.lean Modified src/category_theory/shift.lean Modified src/computability/turing_machine.lean Modified src/data/matrix/basic.lean Modified src/data/set/basic.lean Modified src/data/set/function.lean Modified src/data/set/intervals/disjoint.lean Modified src/geometry/manifold/mfderiv.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/quadratic_form.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/bases.lean Modified src/order/filter/extr.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/localization.lean Modified src/tactic/core.lean Modified src/topology/algebra/ordered.lean Modified src/topology/local_extr.lean Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/uniform_space/cauchy.lean 2020-05-19 09:58:37 3d948bf feat(analysis/normed_space): interior of `closed_ball` etc (#2723) * define `sphere x r` * prove formulas for `interior`, `closure`, and `frontier` of open and closed balls in real normed vector spaces. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem closure_ball + theorem frontier_ball + theorem frontier_closed_ball' + theorem frontier_closed_ball + theorem interior_closed_ball' + theorem interior_closed_ball +/- theorem submodule.eq_top_of_nonempty_interior Modified src/topology/basic.lean + theorem preimage_interior_subset_interior_preimage Modified src/topology/continuous_on.lean Modified src/topology/metric_space/basic.lean +/- theorem metric.ball_eq_empty_iff_nonpos + theorem metric.ball_subset_interior_closed_ball + theorem metric.ball_union_sphere + theorem metric.closed_ball_diff_ball + theorem metric.closed_ball_diff_sphere + theorem metric.closed_ball_eq_empty_iff_neg + theorem metric.closed_ball_zero + theorem metric.closure_ball_subset_closed_ball + theorem metric.frontier_ball_subset_sphere + theorem metric.frontier_closed_ball_subset_sphere + def metric.sphere + theorem metric.sphere_disjoint_ball + theorem metric.sphere_subset_closed_ball + theorem metric.sphere_union_ball Modified src/topology/metric_space/closeds.lean 2020-05-19 08:28:09 f2cb546 fix(ci): setup git before nolints, rename secret (#2737) Oops, I broke the update nolints step on master. This should fix it. ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/deploy_docs.sh Modified scripts/update_nolints.sh 2020-05-19 08:28:08 3968f7f feat(linear_algebra): equiv_of_is_basis' and module.fintype_of_fintype (#2735) ESTIMATED CHANGES Modified src/linear_algebra/basis.lean + def equiv_of_is_basis' +/- def equiv_of_is_basis + def module.fintype_of_fintype 2020-05-19 08:28:05 80b7f97 feat(tactic/localized): fail if unused locale is open (#2718) This is more in line with the behavior of `open`. Closes #2702 ESTIMATED CHANGES Modified src/measure_theory/simple_func_dense.lean Modified src/tactic/localized.lean Modified test/localized/localized.lean 2020-05-19 08:28:03 3ba7d12 feat(algebra): obtaining algebraic classes through in/surjective maps (#2638) This is needed for the definition of Witt vectors. ESTIMATED CHANGES Added src/algebra/inj_surj.lean + def comm_group_of_injective + def comm_group_of_surjective + def comm_monoid_of_injective + def comm_monoid_of_surjective + def comm_ring_of_injective + def comm_ring_of_surjective + def comm_semigroup_of_injective + def comm_semigroup_of_surjective + def comm_semiring_of_injective + def comm_semiring_of_surjective + def group_of_injective + def group_of_surjective + def monoid_of_injective + def monoid_of_surjective + def ring_of_injective + def ring_of_surjective + def semigroup_of_injective + def semigroup_of_surjective + def semiring_of_injective + def semiring_of_surjective 2020-05-19 07:10:15 52aa128 feat(data/equiv): add add_equiv.to_multiplicative (#2732) We already have `add_monoid_hom.to_multiplicative`. This adds `add_equiv.to_multiplicative`. It is placed in `data/equiv/mul_add.lean` because `data/equiv/mul_add.lean` already imports `algebra/group/type_tags.lean`. ESTIMATED CHANGES Modified src/data/equiv/mul_add.lean + def add_equiv.to_multiplicative + def mul_equiv.to_additive 2020-05-19 06:13:04 906220c feat(topology/bounded_continuous_function): Normed algebra of bounded continuous functions (#2722) The space `C(α, γ)` of bounded continuous functions into a normed algebra γ is a normed algebra. The space of bounded continuous functions into a normed 𝕜-space is a `C(α, 𝕜)`-module. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/topology/bounded_continuous_function.lean + def bounded_continuous_function.C + theorem bounded_continuous_function.norm_smul_le 2020-05-19 03:26:24 01efaeb feat(ci): run lint and tests in parallel (#2736) Actions doesn't let us run *steps* in parallel, but we can run *jobs* in parallel. The lint and test jobs are part of the same *workflow*. Understanding Actions terminology is half the battle. ESTIMATED CHANGES Modified .github/workflows/build.yml Modified bors.toml Modified scripts/deploy_docs.sh 2020-05-18 18:12:30 f01260a feat(algebra/char_p): eq_iff_modeq_int (#2731) ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem eq_iff_modeq_int 2020-05-18 16:18:17 9d762df chore(scripts): update nolints.txt (#2733) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-18 13:38:47 ff3130d feat(topology/constructions): topology on ulift (#2716) ESTIMATED CHANGES Modified src/topology/constructions.lean + theorem continuous_ulift_down + theorem continuous_ulift_up Modified src/topology/homeomorph.lean + def homeomorph.{u 2020-05-18 13:38:45 4026bd8 feat(category_theory/full_subcategory): induced category from a groupoid is a groupoid (#2715) Also some minor cleanup to the same file. ESTIMATED CHANGES Modified src/category_theory/full_subcategory.lean - theorem category_theory.induced_functor.hom - theorem category_theory.induced_functor.obj +/- def category_theory.induced_functor 2020-05-18 13:38:43 2fa1d7c Revert "fix(category_theory/eq_to_hom): remove bad simp lemmas (#1346)" (#2713) These are good simp lemmas: they push things into a proof-irrelevant position. This reverts commit 5a309a3aa30fcec122a26f379f05b466ee46fc7a. ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean +/- theorem category_theory.eq_to_hom_app +/- theorem category_theory.eq_to_hom_map +/- theorem category_theory.eq_to_iso_map 2020-05-18 13:38:41 8b42245 refactor(algebra): merge init_.algebra into algebra (#2707) This is a big refactor PR. It depends on #2697, which brings in the algebra hierarchy without any change to the file structure. This PR merges `init_.algebra.group` into `algebra.group` and so on for the rest of the algebraic hierarchy. ESTIMATED CHANGES Modified archive/100-theorems-list/42_inverse_triangle_sum.lean Modified archive/sensitivity.lean Modified scripts/nolints.txt Modified src/algebra/char_zero.lean Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/continued_fractions/convergents_equiv.lean Modified src/algebra/field.lean +/- theorem add_div' + theorem add_div_eq_mul_add_div +/- theorem div_add' + theorem div_add_div + theorem div_add_div_same + theorem div_div_div_div_eq + theorem div_div_eq_div_mul + theorem div_div_eq_mul_div + theorem div_eq_mul_one_div + theorem div_eq_one_iff_eq + theorem div_helper + theorem div_mul_cancel + theorem div_mul_div + theorem div_mul_eq_div_mul_one_div + theorem div_mul_eq_mul_div + theorem div_mul_eq_mul_div_comm + theorem div_mul_left + theorem div_mul_right + theorem div_neg_eq_neg_div + theorem div_one + theorem div_self +/- theorem div_sub' + theorem div_sub_div + theorem div_sub_div_same + theorem div_zero + theorem division_def + theorem division_ring.mul_ne_zero + theorem division_ring.one_div_mul_one_div + theorem eq_div_iff_mul_eq + theorem eq_div_of_mul_eq + theorem eq_of_div_eq_one + theorem eq_of_mul_eq_mul_of_nonzero_left + theorem eq_of_mul_eq_mul_of_nonzero_right + theorem eq_of_one_div_eq_one_div + theorem eq_one_div_of_mul_eq_one + theorem eq_one_div_of_mul_eq_one_left + theorem eq_zero_of_one_div_eq_zero + theorem inv_eq_one_div + theorem inv_inv' + theorem inv_mul_cancel + theorem inv_ne_zero +/- theorem inv_one + theorem inv_zero - theorem is_ring_hom.injective - theorem is_ring_hom.map_div - theorem is_ring_hom.map_eq_zero - theorem is_ring_hom.map_inv - theorem is_ring_hom.map_ne_zero +/- theorem mul_div_assoc' + theorem mul_div_assoc + theorem mul_div_cancel' + theorem mul_div_cancel + theorem mul_div_cancel_left + theorem mul_div_mul_left + theorem mul_div_mul_right + theorem mul_eq_mul_of_div_eq_div + theorem mul_eq_of_eq_div + theorem mul_inv' + theorem mul_inv_cancel + theorem mul_mul_div + theorem mul_ne_zero_comm + theorem mul_one_div_cancel + theorem ne_zero_of_one_div_ne_zero +/- theorem neg_div' + theorem neg_div + theorem neg_div_neg_eq + theorem one_div_add_one_div + theorem one_div_div + theorem one_div_eq_inv + theorem one_div_mul_add_mul_one_div_eq_one_div_add_one_div + theorem one_div_mul_cancel + theorem one_div_mul_one_div + theorem one_div_mul_sub_mul_one_div_eq_one_div_add_one_div + theorem one_div_ne_zero + theorem one_div_neg_eq_neg_one_div + theorem one_div_neg_one_eq_neg_one + theorem one_div_one + theorem one_div_one_div + theorem one_inv_eq +/- theorem sub_div' + theorem zero_div Modified src/algebra/floor.lean Modified src/algebra/free.lean Modified src/algebra/gcd_domain.lean Modified src/algebra/group/basic.lean +/- theorem add_add_neg_cancel'_right +/- theorem add_add_sub_cancel + theorem add_eq_of_eq_sub' + theorem add_eq_of_eq_sub + theorem add_sub + theorem add_sub_add_left_eq_sub + theorem add_sub_add_right_eq_sub + theorem add_sub_assoc +/- theorem add_sub_cancel' +/- theorem add_sub_cancel'_right + theorem add_sub_cancel + theorem add_sub_comm +/- theorem add_sub_sub_cancel +/- theorem bit0_zero +/- theorem bit1_zero + theorem eq_add_of_sub_eq' + theorem eq_add_of_sub_eq + theorem eq_inv_mul_of_mul_eq + theorem eq_inv_of_eq_inv + theorem eq_inv_of_mul_eq_one + theorem eq_mul_inv_of_mul_eq + theorem eq_mul_of_inv_mul_eq + theorem eq_mul_of_mul_inv_eq + def eq_of_add_eq_add_left + def eq_of_add_eq_add_right + theorem eq_of_sub_eq_zero + theorem eq_sub_of_add_eq' + theorem eq_sub_of_add_eq + theorem group.mul_left_cancel + theorem group.mul_right_cancel + theorem inv_eq_of_mul_eq_one + theorem inv_inj + theorem inv_inv +/- theorem inv_involutive + theorem inv_mul_cancel_left + theorem inv_mul_cancel_right + theorem inv_mul_eq_of_eq_mul + def inv_mul_self +/- theorem inv_unique +/- theorem left_inverse_add_left_sub +/- theorem left_inverse_add_right_neg_add +/- theorem left_inverse_neg_add_add_right +/- theorem left_inverse_sub_add_left + theorem mul_assoc + theorem mul_comm + theorem mul_eq_of_eq_inv_mul + theorem mul_eq_of_eq_mul_inv + theorem mul_inv + theorem mul_inv_cancel_left + theorem mul_inv_cancel_right + theorem mul_inv_eq_of_eq_mul + theorem mul_inv_rev + def mul_inv_self + theorem mul_left_cancel + theorem mul_left_cancel_iff + theorem mul_left_comm +/- theorem mul_left_inj +/- theorem mul_left_injective + theorem mul_left_inv +/- theorem mul_mul_mul_comm + theorem mul_one + theorem mul_right_cancel + theorem mul_right_cancel_iff + theorem mul_right_comm +/- theorem mul_right_inj +/- theorem mul_right_injective + theorem mul_right_inv +/- theorem neg_add' + theorem neg_add_eq_sub + theorem neg_neg_sub_neg + theorem neg_sub +/- theorem neg_sub_neg + theorem one_inv + theorem one_mul + theorem sub_add +/- theorem sub_add_add_cancel + theorem sub_add_cancel + theorem sub_add_eq_add_sub + theorem sub_add_eq_sub_sub + theorem sub_add_eq_sub_sub_swap +/- theorem sub_add_sub_cancel' +/- theorem sub_add_sub_cancel + theorem sub_eq_add_neg +/- theorem sub_eq_neg_add + theorem sub_eq_of_eq_add' + theorem sub_eq_of_eq_add + theorem sub_eq_sub_add_sub +/- theorem sub_eq_sub_iff_add_eq_add +/- theorem sub_eq_sub_iff_sub_eq_sub + theorem sub_eq_zero_iff_eq + theorem sub_eq_zero_of_eq + theorem sub_ne_zero_of_ne + theorem sub_neg_eq_add +/- theorem sub_right_comm + theorem sub_self + theorem sub_sub +/- theorem sub_sub_cancel + theorem sub_sub_self +/- theorem sub_sub_sub_cancel_left +/- theorem sub_sub_sub_cancel_right + theorem sub_zero + theorem zero_sub Modified src/algebra/group/conj.lean Modified src/algebra/group/default.lean Modified src/algebra/group/hom.lean - theorem add_monoid_hom.coe_mul_left - def add_monoid_hom.mul_left - def add_monoid_hom.mul_right - theorem add_monoid_hom.mul_right_apply Deleted src/algebra/group/is_unit.lean - theorem is_unit.coe_lift_right - theorem is_unit.lift_right_inv_mul - theorem is_unit.map - theorem is_unit.mul_left_inj - theorem is_unit.mul_lift_right_inv - theorem is_unit.mul_right_inj - def is_unit - theorem is_unit_iff_exists_inv' - theorem is_unit_iff_exists_inv - theorem is_unit_nat - theorem is_unit_of_mul_eq_one - theorem is_unit_of_mul_is_unit_left - theorem is_unit_of_mul_is_unit_right - theorem is_unit_one - theorem is_unit_unit - theorem units.is_unit_mul_units Modified src/algebra/group/to_additive.lean Modified src/algebra/group/units.lean +/- def divp +/- theorem divp_assoc +/- theorem divp_divp_eq_divp_mul +/- theorem divp_eq_iff_mul_eq +/- theorem divp_eq_one_iff_eq +/- theorem divp_inv +/- theorem divp_left_inj +/- theorem divp_mul_cancel +/- theorem divp_one +/- theorem divp_self + theorem is_unit.mul_left_inj + theorem is_unit.mul_right_inj + def is_unit + theorem is_unit_iff_exists_inv' + theorem is_unit_iff_exists_inv + theorem is_unit_of_mul_eq_one + theorem is_unit_of_mul_is_unit_left + theorem is_unit_of_mul_is_unit_right + theorem is_unit_one + theorem is_unit_unit +/- theorem mul_divp_cancel - theorem nat.add_units_eq_zero - theorem nat.units_eq_one +/- theorem one_divp - theorem units.coe_val_hom + theorem units.is_unit_mul_units - def units.val_hom Modified src/algebra/group/units_hom.lean + theorem is_unit.coe_lift_right + theorem is_unit.lift_right_inv_mul + theorem is_unit.map + theorem is_unit.mul_lift_right_inv Modified src/algebra/group/with_one.lean Modified src/algebra/group_power.lean Modified src/algebra/group_ring_action.lean Modified src/algebra/group_with_zero.lean +/- theorem div_eq_div_iff +/- theorem div_eq_iff +/- theorem eq_div_iff Modified src/algebra/lie_algebra.lean Modified src/algebra/opposites.lean Modified src/algebra/ordered_field.lean + theorem abs_div +/- theorem abs_inv + theorem abs_one_div + theorem add_halves + theorem add_midpoint + theorem add_self_div_two +/- theorem div_le_div_of_le_left + theorem div_le_div_of_le_of_neg +/- theorem div_le_div_of_le_of_nonneg + theorem div_le_div_of_le_of_pos + theorem div_le_div_of_mul_sub_mul_div_nonpos + theorem div_le_of_le_mul + theorem div_le_of_mul_le_of_neg + theorem div_lt_div_of_lt_of_neg + theorem div_lt_div_of_lt_of_pos + theorem div_lt_div_of_mul_sub_mul_div_neg + theorem div_lt_div_of_pos_of_lt_of_pos + theorem div_lt_of_mul_gt_of_neg + theorem div_lt_of_mul_lt_of_pos + theorem div_mul_le_div_mul_of_div_le_div_pos' + theorem div_mul_le_div_mul_of_div_le_div_pos + theorem div_neg_of_neg_of_pos + theorem div_neg_of_pos_of_neg +/- theorem div_nonneg' + theorem div_nonneg_of_nonneg_of_pos + theorem div_nonneg_of_nonpos_of_neg + theorem div_nonpos_of_nonneg_of_neg + theorem div_nonpos_of_nonpos_of_pos + theorem div_pos_of_neg_of_neg + theorem div_pos_of_pos_of_pos + theorem div_two_lt_of_pos + theorem div_two_sub_self + theorem exists_add_lt_and_pos_of_lt + theorem ge_of_forall_ge_sub +/- theorem inv_le_inv_of_le +/- theorem inv_le_one +/- theorem inv_lt_one +/- theorem inv_nonneg +/- theorem inv_nonpos + theorem le_div_of_mul_le + theorem le_mul_of_div_le + theorem le_mul_of_ge_one_left + theorem le_mul_of_ge_one_right + theorem le_of_one_div_le_one_div + theorem le_of_one_div_le_one_div_of_neg + theorem le_of_one_le_div + theorem lt_div_of_mul_lt + theorem lt_mul_of_gt_one_right + theorem lt_of_one_div_lt_one_div + theorem lt_of_one_div_lt_one_div_of_neg + theorem lt_of_one_lt_div + theorem mul_le_mul_of_mul_div_le + theorem mul_le_of_div_le_of_neg + theorem mul_le_of_le_div + theorem mul_lt_of_gt_div_of_neg + theorem mul_lt_of_lt_div +/- theorem mul_self_inj_of_nonneg + theorem mul_sub_mul_div_mul_neg + theorem mul_sub_mul_div_mul_nonpos + theorem mul_zero_lt_mul_inv_of_neg + theorem mul_zero_lt_mul_inv_of_pos - theorem nat.inv_pos_of_nat - theorem nat.one_div_le_one_div - theorem nat.one_div_lt_one_div - theorem nat.one_div_pos_of_nat + theorem neg_of_one_div_neg + theorem one_div_le_neg_one + theorem one_div_le_of_one_div_le_of_neg + theorem one_div_le_of_one_div_le_of_pos + theorem one_div_le_one_div_of_le + theorem one_div_le_one_div_of_le_of_neg + theorem one_div_lt_neg_one + theorem one_div_lt_one_div_of_lt + theorem one_div_lt_one_div_of_lt_of_neg + theorem one_div_neg_of_neg + theorem one_div_pos_of_pos + theorem one_le_div_of_le +/- theorem one_le_inv + theorem one_le_one_div + theorem one_lt_div_of_lt + theorem one_lt_one_div + theorem pos_of_one_div_pos + theorem sub_self_div_two Modified src/algebra/ordered_group.lean + def abs + theorem abs_abs + theorem abs_add_le_abs_add_abs + theorem abs_add_three + theorem abs_by_cases + theorem abs_le_of_le_of_neg_le + theorem abs_lt_of_lt_of_neg_lt + theorem abs_neg + theorem abs_nonneg + theorem abs_of_neg + theorem abs_of_nonneg + theorem abs_of_nonpos + theorem abs_of_pos + theorem abs_pos_of_ne_zero + theorem abs_pos_of_neg + theorem abs_pos_of_pos + theorem abs_sub + theorem abs_sub_abs_le_abs_sub + theorem abs_sub_le + theorem abs_zero + theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg + theorem add_le_add + theorem add_le_add_left + theorem add_le_add_right + theorem add_le_add_three +/- theorem add_le_iff_nonpos_left +/- theorem add_le_iff_nonpos_right + theorem add_le_of_le_neg_add + theorem add_le_of_le_of_nonpos + theorem add_le_of_le_sub_left + theorem add_le_of_le_sub_right + theorem add_le_of_nonpos_of_le + theorem add_lt_add + theorem add_lt_add_left + theorem add_lt_add_of_le_of_lt + theorem add_lt_add_of_lt_of_le + theorem add_lt_add_right +/- theorem add_lt_iff_neg_left +/- theorem add_lt_iff_neg_right + theorem add_lt_of_le_of_neg + theorem add_lt_of_lt_neg_add + theorem add_lt_of_lt_of_neg + theorem add_lt_of_lt_of_nonpos + theorem add_lt_of_lt_sub_left + theorem add_lt_of_lt_sub_right + theorem add_lt_of_neg_of_le + theorem add_lt_of_neg_of_lt + theorem add_lt_of_nonpos_of_lt + theorem add_neg + theorem add_neg_of_neg_of_nonpos + theorem add_neg_of_nonpos_of_neg + theorem add_nonneg + theorem add_nonpos + theorem add_pos + theorem add_pos_of_nonneg_of_pos + theorem add_pos_of_pos_of_nonneg + theorem decidable_linear_ordered_add_comm_group.add_lt_add_left +/- theorem decidable_linear_ordered_add_comm_group.eq_of_abs_sub_nonpos + theorem dist_bdd_within_interval + theorem eq_of_abs_sub_eq_zero + theorem eq_zero_of_abs_eq_zero + theorem eq_zero_of_neg_eq + theorem le_abs_self + theorem le_add_of_le_of_nonneg + theorem le_add_of_neg_add_le + theorem le_add_of_neg_add_le_left + theorem le_add_of_neg_add_le_right + theorem le_add_of_neg_le_sub_left + theorem le_add_of_neg_le_sub_right + theorem le_add_of_nonneg_left + theorem le_add_of_nonneg_of_le + theorem le_add_of_nonneg_right + theorem le_add_of_sub_left_le + theorem le_add_of_sub_right_le + theorem le_neg_add_of_add_le + theorem le_neg_of_le_neg + theorem le_of_add_le_add_left + theorem le_of_add_le_add_right + theorem le_of_neg_le_neg + theorem le_of_sub_nonneg + theorem le_of_sub_nonpos + theorem le_sub_left_of_add_le + theorem le_sub_right_of_add_le + theorem lt_add_of_le_of_pos + theorem lt_add_of_lt_of_nonneg + theorem lt_add_of_lt_of_pos + theorem lt_add_of_neg_add_lt + theorem lt_add_of_neg_add_lt_left + theorem lt_add_of_neg_add_lt_right + theorem lt_add_of_neg_lt_sub_left + theorem lt_add_of_neg_lt_sub_right + theorem lt_add_of_nonneg_of_lt + theorem lt_add_of_pos_left + theorem lt_add_of_pos_of_le + theorem lt_add_of_pos_of_lt + theorem lt_add_of_pos_right + theorem lt_add_of_sub_left_lt + theorem lt_add_of_sub_right_lt + theorem lt_neg_add_of_add_lt + theorem lt_neg_of_lt_neg + theorem lt_of_add_lt_add_left + theorem lt_of_add_lt_add_right + theorem lt_of_neg_lt_neg + theorem lt_of_sub_neg + theorem lt_of_sub_pos + theorem lt_sub_left_of_add_lt + theorem lt_sub_right_of_add_lt + theorem max_add_add_left + theorem max_add_add_right + theorem max_eq_neg_min_neg_neg + theorem max_neg_neg + theorem min_add_add_left + theorem min_add_add_right + theorem min_eq_neg_max_neg_neg + theorem min_neg_neg + theorem ne_zero_of_abs_ne_zero + theorem neg_add_le_left_of_le_add + theorem neg_add_le_of_le_add + theorem neg_add_le_right_of_le_add + theorem neg_add_lt_left_of_lt_add + theorem neg_add_lt_of_lt_add + theorem neg_add_lt_right_of_lt_add + theorem neg_le_abs_self + theorem neg_le_neg + theorem neg_le_of_neg_le + theorem neg_le_sub_left_of_le_add + theorem neg_le_sub_right_of_le_add + theorem neg_lt_neg + theorem neg_lt_of_neg_lt + theorem neg_lt_sub_left_of_lt_add + theorem neg_lt_sub_right_of_lt_add + theorem neg_neg_of_pos + theorem neg_nonneg_of_nonpos + theorem neg_nonpos_of_nonneg + theorem neg_of_neg_pos + theorem neg_pos_of_neg + theorem nonneg_of_neg_nonpos + theorem nonpos_of_neg_nonneg + theorem ordered_add_comm_group.add_lt_add_left + theorem ordered_add_comm_group.le_of_add_le_add_left + theorem ordered_add_comm_group.lt_of_add_lt_add_left + theorem pos_of_neg_neg + theorem sub_le_of_sub_le + theorem sub_le_self + theorem sub_le_sub + theorem sub_le_sub_left + theorem sub_le_sub_right + theorem sub_left_le_of_le_add + theorem sub_left_lt_of_lt_add + theorem sub_lt_of_sub_lt + theorem sub_lt_self + theorem sub_lt_sub + theorem sub_lt_sub_left + theorem sub_lt_sub_of_le_of_lt + theorem sub_lt_sub_of_lt_of_le + theorem sub_lt_sub_right + theorem sub_neg_of_lt + theorem sub_nonneg_of_le + theorem sub_nonpos_of_le + theorem sub_pos_of_lt + theorem sub_right_le_of_le_add + theorem sub_right_lt_of_lt_add Modified src/algebra/ordered_ring.lean + theorem abs_abs_sub_abs_le_abs_sub + theorem abs_mul + theorem abs_mul_abs_self + theorem abs_mul_self + theorem abs_sub_square +/- theorem abs_two +/- theorem bit0_le_bit0 +/- theorem bit0_lt_bit0 +/- theorem bit1_le_bit1 +/- theorem bit1_lt_bit1 +/- theorem bit1_pos' +/- theorem bit1_pos +/- theorem canonically_ordered_semiring.mul_pos +/- theorem decidable.mul_le_mul_left +/- theorem decidable.mul_le_mul_right + theorem eq_zero_of_mul_self_add_mul_self_eq_zero + theorem four_pos + theorem gt_of_mul_lt_mul_neg_left +/- theorem le_mul_iff_one_le_left +/- theorem le_mul_iff_one_le_right +/- theorem le_mul_of_one_le_left' +/- theorem le_mul_of_one_le_right' + theorem le_of_mul_le_mul_left + theorem le_of_mul_le_mul_right + theorem le_of_mul_le_of_ge_one + theorem linear_ordered_ring.eq_zero_or_eq_zero_of_mul_eq_zero +/- theorem lt_mul_iff_one_lt_left +/- theorem lt_mul_iff_one_lt_right +/- theorem lt_mul_of_one_lt_right' + theorem lt_of_mul_lt_mul_left + theorem lt_of_mul_lt_mul_right +/- theorem mul_le_iff_le_one_left +/- theorem mul_le_iff_le_one_right + theorem mul_le_mul +/- theorem mul_le_mul_left + theorem mul_le_mul_of_nonneg_left + theorem mul_le_mul_of_nonneg_right + theorem mul_le_mul_of_nonpos_left + theorem mul_le_mul_of_nonpos_right +/- theorem mul_le_mul_right +/- theorem mul_le_of_le_one_left +/- theorem mul_le_of_le_one_right +/- theorem mul_le_one +/- theorem mul_lt_iff_lt_one_left +/- theorem mul_lt_iff_lt_one_right +/- theorem mul_lt_mul'' + theorem mul_lt_mul' + theorem mul_lt_mul +/- theorem mul_lt_mul_left + theorem mul_lt_mul_of_neg_left + theorem mul_lt_mul_of_neg_right + theorem mul_lt_mul_of_pos_left + theorem mul_lt_mul_of_pos_right +/- theorem mul_lt_mul_right +/- theorem mul_lt_one_of_nonneg_of_lt_one_left +/- theorem mul_lt_one_of_nonneg_of_lt_one_right + theorem mul_neg_of_neg_of_pos + theorem mul_neg_of_pos_of_neg +/- theorem mul_nonneg' + theorem mul_nonneg +/- theorem mul_nonneg_iff_right_nonneg_of_pos + theorem mul_nonneg_of_nonpos_of_nonpos + theorem mul_nonpos_of_nonneg_of_nonpos + theorem mul_nonpos_of_nonpos_of_nonneg +/- theorem mul_pos' + theorem mul_pos + theorem mul_pos_of_neg_of_neg + theorem mul_self_le_mul_self + theorem mul_self_le_mul_self_iff + theorem mul_self_lt_mul_self + theorem mul_self_lt_mul_self_iff + theorem mul_self_nonneg + theorem neg_of_mul_neg_left + theorem neg_of_mul_neg_right +/- theorem neg_of_mul_pos_left +/- theorem neg_of_mul_pos_right + theorem nonneg_le_nonneg_of_squares_le + theorem nonneg_of_mul_nonneg_left + theorem nonneg_of_mul_nonneg_right +/- theorem nonpos_of_mul_nonneg_left +/- theorem nonpos_of_mul_nonneg_right + theorem nonpos_of_mul_nonpos_left + theorem nonpos_of_mul_nonpos_right +/- theorem one_le_bit1 +/- theorem one_lt_bit1 +/- theorem one_lt_mul +/- theorem one_lt_mul_of_le_of_lt +/- theorem one_lt_mul_of_lt_of_le + theorem ordered_ring.mul_le_mul_of_nonneg_left + theorem ordered_ring.mul_le_mul_of_nonneg_right + theorem ordered_ring.mul_lt_mul_of_pos_left + theorem ordered_ring.mul_lt_mul_of_pos_right + theorem ordered_ring.mul_nonneg + theorem ordered_semiring.mul_le_mul_of_nonneg_left + theorem ordered_semiring.mul_le_mul_of_nonneg_right + theorem pos_and_pos_or_neg_and_neg_of_mul_pos + theorem pos_of_mul_pos_left + theorem pos_of_mul_pos_right + theorem sub_le_of_abs_sub_le_left + theorem sub_le_of_abs_sub_le_right + theorem sub_lt_of_abs_sub_lt_left + theorem sub_lt_of_abs_sub_lt_right + theorem two_ge_one + theorem two_gt_one + theorem two_ne_zero + theorem two_pos - theorem with_top.add_one_le_of_lt - theorem with_top.coe_nat - theorem with_top.nat_induction - theorem with_top.nat_ne_top - theorem with_top.top_ne_nat + theorem zero_gt_neg_one +/- theorem zero_le_bit0 +/- theorem zero_le_mul_left +/- theorem zero_le_mul_right + theorem zero_le_one +/- theorem zero_lt_bit0 +/- theorem zero_lt_mul_left +/- theorem zero_lt_mul_right + theorem zero_lt_one Modified src/algebra/ring.lean + theorem add_monoid_hom.coe_mul_left + def add_monoid_hom.mul_left + def add_monoid_hom.mul_right + theorem add_monoid_hom.mul_right_apply + def add_mul + theorem add_mul_self_eq + theorem distrib_three_right +/- theorem domain.mul_left_inj +/- theorem domain.mul_right_inj + theorem dvd.elim + theorem dvd.elim_left + theorem dvd.intro + theorem dvd.intro_left + def dvd.trans + theorem dvd_add + theorem dvd_add_iff_left + theorem dvd_add_iff_right +/- theorem dvd_add_left +/- theorem dvd_add_right +/- theorem dvd_add_self_left +/- theorem dvd_add_self_right + theorem dvd_mul_left + theorem dvd_mul_of_dvd_left + theorem dvd_mul_of_dvd_right + theorem dvd_mul_right +/- theorem dvd_neg + theorem dvd_neg_iff_dvd + theorem dvd_neg_of_dvd + theorem dvd_of_dvd_neg + theorem dvd_of_mul_left_dvd + def dvd_of_mul_left_eq + theorem dvd_of_mul_right_dvd + def dvd_of_mul_right_eq + theorem dvd_of_neg_dvd + theorem dvd_refl + theorem dvd_sub + theorem dvd_trans + theorem dvd_zero + theorem eq_of_mul_eq_mul_left +/- theorem eq_of_mul_eq_mul_left_of_ne_zero + theorem eq_of_mul_eq_mul_right +/- theorem eq_of_mul_eq_mul_right_of_ne_zero +/- theorem eq_zero_of_mul_eq_self_left' + theorem eq_zero_of_mul_eq_self_left +/- theorem eq_zero_of_mul_eq_self_right' + theorem eq_zero_of_mul_eq_self_right + theorem eq_zero_of_mul_self_eq_zero + theorem eq_zero_of_zero_dvd + theorem eq_zero_or_eq_zero_of_mul_eq_zero + theorem exists_eq_mul_left_of_dvd + theorem exists_eq_mul_right_of_dvd - theorem is_ring_hom.comp - theorem is_ring_hom.map_neg - theorem is_ring_hom.map_sub - theorem is_ring_hom.map_zero - theorem is_ring_hom.of_semiring - theorem is_semiring_hom.comp + theorem left_distrib + def mul_add +/- theorem mul_add_eq_mul_add_iff_sub_mul_add_eq + theorem mul_dvd_mul +/- theorem mul_dvd_mul_iff_left +/- theorem mul_dvd_mul_iff_right + theorem mul_dvd_mul_left + theorem mul_dvd_mul_right +/- theorem mul_eq_zero + theorem mul_eq_zero_iff_eq_zero_or_eq_zero +/- theorem mul_ne_zero' + theorem mul_ne_zero +/- theorem mul_ne_zero_comm' + theorem mul_neg_eq_neg_mul_symm +/- theorem mul_neg_one + theorem mul_self_eq_mul_self_iff + theorem mul_self_eq_one_iff +/- theorem mul_self_eq_zero +/- theorem mul_self_sub_mul_self + theorem mul_self_sub_mul_self_eq + theorem mul_self_sub_one_eq + def mul_sub + theorem mul_sub_left_distrib + theorem mul_sub_right_distrib + theorem mul_zero +/- theorem ne_zero_and_ne_zero_of_mul_ne_zero + theorem ne_zero_of_mul_ne_zero_left + theorem ne_zero_of_mul_ne_zero_right +/- theorem neg_dvd + theorem neg_dvd_iff_dvd + theorem neg_dvd_of_dvd + theorem neg_eq_neg_one_mul + theorem neg_mul_comm + theorem neg_mul_eq_mul_neg + theorem neg_mul_eq_neg_mul + theorem neg_mul_eq_neg_mul_symm + theorem neg_mul_neg +/- theorem neg_one_mul + theorem one_add_one_eq_two + theorem one_dvd + theorem one_ne_zero + theorem right_distrib + theorem ring.mul_zero + theorem ring.zero_mul - theorem ring_hom.coe_of +/- theorem ring_hom.id_apply - def ring_hom.of + def sub_mul +/- theorem sub_mul_add_eq_of_mul_add_eq_mul_add + theorem two_mul +/- theorem units.inv_eq_self_iff +/- theorem zero_dvd_iff +/- theorem zero_eq_mul +/- theorem zero_eq_mul_self + theorem zero_mul + theorem zero_ne_one Modified src/analysis/analytic/basic.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/control/applicative.lean - theorem comp.applicative_comp_id - theorem comp.applicative_id_comp - theorem comp.map_pure - theorem comp.pure_seq_eq_map - theorem comp.seq_assoc - theorem comp.seq_pure + theorem functor.comp.applicative_comp_id + theorem functor.comp.applicative_id_comp + theorem functor.comp.map_pure + theorem functor.comp.pure_seq_eq_map + theorem functor.comp.seq_assoc + theorem functor.comp.seq_pure Modified src/control/functor.lean Modified src/control/monad/writer.lean Modified src/control/traversable/basic.lean Modified src/control/traversable/instances.lean Modified src/control/traversable/lemmas.lean Modified src/data/array/lemmas.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/complex/module.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/fin.lean Modified src/data/hash_map.lean Modified src/data/int/basic.lean Modified src/data/list/basic.lean Modified src/data/list/defs.lean Modified src/data/monoid_algebra.lean Modified src/data/multiset.lean Modified src/data/nat/basic.lean + theorem nat.add_units_eq_zero + theorem nat.units_eq_one Modified src/data/nat/cast.lean + theorem nat.inv_pos_of_nat + theorem nat.one_div_le_one_div + theorem nat.one_div_lt_one_div + theorem nat.one_div_pos_of_nat + theorem with_top.add_one_le_of_lt + theorem with_top.coe_nat + theorem with_top.nat_induction + theorem with_top.nat_ne_top + theorem with_top.top_ne_nat Modified src/data/nat/multiplicity.lean Modified src/data/nat/pairing.lean Modified src/data/nat/sqrt.lean Modified src/data/num/lemmas.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pnat/basic.lean - theorem pnat.dvd_trans Modified src/data/pnat/xgcd.lean +/- theorem pnat.gcd_eq Modified src/data/polynomial.lean Modified src/data/rat/basic.lean Modified src/data/rat/meta_defs.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean - theorem cau_seq.mul_pos Modified src/data/real/cau_seq_completion.lean Modified src/data/seq/computation.lean Modified src/data/vector2.lean Modified src/data/zsqrtd/basic.lean Added src/deprecated/field.lean + theorem is_ring_hom.injective + theorem is_ring_hom.map_div + theorem is_ring_hom.map_eq_zero + theorem is_ring_hom.map_inv + theorem is_ring_hom.map_ne_zero Modified src/deprecated/group.lean Added src/deprecated/ring.lean + theorem is_ring_hom.comp + theorem is_ring_hom.map_neg + theorem is_ring_hom.map_sub + theorem is_ring_hom.map_zero + theorem is_ring_hom.of_semiring + theorem is_semiring_hom.comp + theorem ring_hom.coe_of + def ring_hom.of Modified src/group_theory/eckmann_hilton.lean Modified src/group_theory/free_group.lean Modified src/group_theory/monoid_localization.lean Modified src/init_/algebra/default.lean Deleted src/init_/algebra/field.lean - theorem add_div_eq_mul_add_div - theorem div_add_div - theorem div_add_div_same - theorem div_div_div_div_eq - theorem div_div_eq_div_mul - theorem div_div_eq_mul_div - theorem div_eq_mul_one_div - theorem div_eq_one_iff_eq - theorem div_helper - theorem div_mul_cancel - theorem div_mul_div - theorem div_mul_eq_div_mul_one_div - theorem div_mul_eq_mul_div - theorem div_mul_eq_mul_div_comm - theorem div_mul_left - theorem div_mul_right - theorem div_neg_eq_neg_div - theorem div_one - theorem div_self - theorem div_sub_div - theorem div_sub_div_same - theorem div_zero - theorem division_def - theorem division_ring.mul_ne_zero - theorem division_ring.one_div_mul_one_div - theorem eq_div_iff_mul_eq - theorem eq_div_of_mul_eq - theorem eq_of_div_eq_one - theorem eq_of_mul_eq_mul_of_nonzero_left - theorem eq_of_mul_eq_mul_of_nonzero_right - theorem eq_of_one_div_eq_one_div - theorem eq_one_div_of_mul_eq_one - theorem eq_one_div_of_mul_eq_one_left - theorem eq_zero_of_one_div_eq_zero - theorem inv_eq_one_div - theorem inv_inv' - theorem inv_mul_cancel - theorem inv_ne_zero - theorem inv_zero - theorem mul_div_assoc - theorem mul_div_cancel' - theorem mul_div_cancel - theorem mul_div_cancel_left - theorem mul_div_mul_left - theorem mul_div_mul_right - theorem mul_eq_mul_of_div_eq_div - theorem mul_eq_of_eq_div - theorem mul_inv' - theorem mul_inv_cancel - theorem mul_mul_div - theorem mul_ne_zero_comm - theorem mul_one_div_cancel - theorem ne_zero_of_one_div_ne_zero - theorem neg_div - theorem neg_div_neg_eq - theorem one_div_add_one_div - theorem one_div_div - theorem one_div_eq_inv - theorem one_div_mul_add_mul_one_div_eq_one_div_add_one_div - theorem one_div_mul_cancel - theorem one_div_mul_one_div - theorem one_div_mul_sub_mul_one_div_eq_one_div_add_one_div - theorem one_div_ne_zero - theorem one_div_neg_eq_neg_one_div - theorem one_div_neg_one_eq_neg_one - theorem one_div_one - theorem one_div_one_div - theorem one_inv_eq - theorem zero_div Deleted src/init_/algebra/functions.lean - theorem abs_abs - theorem abs_abs_sub_abs_le_abs_sub - theorem abs_add_le_abs_add_abs - theorem abs_add_three - theorem abs_by_cases - theorem abs_div - theorem abs_le_of_le_of_neg_le - theorem abs_lt_of_lt_of_neg_lt - theorem abs_mul - theorem abs_mul_abs_self - theorem abs_mul_self - theorem abs_neg - theorem abs_nonneg - theorem abs_of_neg - theorem abs_of_nonneg - theorem abs_of_nonpos - theorem abs_of_pos - theorem abs_one_div - theorem abs_pos_of_ne_zero - theorem abs_pos_of_neg - theorem abs_pos_of_pos - theorem abs_sub - theorem abs_sub_abs_le_abs_sub - theorem abs_sub_le - theorem abs_sub_square - theorem abs_zero - theorem dist_bdd_within_interval - theorem eq_of_abs_sub_eq_zero - theorem eq_zero_of_abs_eq_zero - theorem eq_zero_of_mul_self_add_mul_self_eq_zero - theorem eq_zero_of_neg_eq - theorem le_abs_self - theorem max_add_add_left - theorem max_add_add_right - theorem max_eq_neg_min_neg_neg - theorem max_neg_neg - theorem min_add_add_left - theorem min_add_add_right - theorem min_eq_neg_max_neg_neg - theorem min_neg_neg - theorem ne_zero_of_abs_ne_zero - theorem neg_le_abs_self - theorem sub_le_of_abs_sub_le_left - theorem sub_le_of_abs_sub_le_right - theorem sub_lt_of_abs_sub_lt_left - theorem sub_lt_of_abs_sub_lt_right Deleted src/init_/algebra/group.lean - theorem add_eq_of_eq_sub' - theorem add_eq_of_eq_sub - def add_neg_self - theorem add_sub - theorem add_sub_add_left_eq_sub - theorem add_sub_add_right_eq_sub - theorem add_sub_assoc - theorem add_sub_cancel - theorem add_sub_comm - theorem eq_add_of_sub_eq' - theorem eq_add_of_sub_eq - theorem eq_inv_mul_of_mul_eq - theorem eq_inv_of_eq_inv - theorem eq_inv_of_mul_eq_one - theorem eq_mul_inv_of_mul_eq - theorem eq_mul_of_inv_mul_eq - theorem eq_mul_of_mul_inv_eq - def eq_of_add_eq_add_left - def eq_of_add_eq_add_right - theorem eq_of_sub_eq_zero - theorem eq_sub_of_add_eq' - theorem eq_sub_of_add_eq - theorem group.mul_left_cancel - theorem group.mul_right_cancel - theorem inv_eq_of_mul_eq_one - theorem inv_inj - theorem inv_inv - theorem inv_mul_cancel_left - theorem inv_mul_cancel_right - theorem inv_mul_eq_of_eq_mul - def inv_mul_self - theorem mul_assoc - theorem mul_comm - theorem mul_eq_of_eq_inv_mul - theorem mul_eq_of_eq_mul_inv - theorem mul_inv - theorem mul_inv_cancel_left - theorem mul_inv_cancel_right - theorem mul_inv_eq_of_eq_mul - theorem mul_inv_rev - def mul_inv_self - theorem mul_left_cancel - theorem mul_left_cancel_iff - theorem mul_left_comm - theorem mul_left_inv - theorem mul_one - theorem mul_right_cancel - theorem mul_right_cancel_iff - theorem mul_right_comm - theorem mul_right_inv - theorem neg_add_eq_sub - def neg_add_self - theorem neg_neg_sub_neg - theorem neg_sub - theorem one_inv - theorem one_mul - theorem sub_add - theorem sub_add_cancel - theorem sub_add_eq_add_sub - theorem sub_add_eq_sub_sub - theorem sub_add_eq_sub_sub_swap - theorem sub_eq_add_neg - theorem sub_eq_of_eq_add' - theorem sub_eq_of_eq_add - theorem sub_eq_sub_add_sub - theorem sub_eq_zero_iff_eq - theorem sub_eq_zero_of_eq - theorem sub_ne_zero_of_ne - theorem sub_neg_eq_add - theorem sub_self - theorem sub_sub - theorem sub_sub_self - theorem sub_zero - theorem zero_sub Modified src/init_/algebra/norm_num.lean Deleted src/init_/algebra/ordered_field.lean - theorem add_halves - theorem add_midpoint - theorem add_self_div_two - theorem div_le_div_of_le_of_neg - theorem div_le_div_of_le_of_pos - theorem div_le_div_of_mul_sub_mul_div_nonpos - theorem div_le_of_le_mul - theorem div_le_of_mul_le_of_neg - theorem div_lt_div_of_lt_of_neg - theorem div_lt_div_of_lt_of_pos - theorem div_lt_div_of_mul_sub_mul_div_neg - theorem div_lt_div_of_pos_of_lt_of_pos - theorem div_lt_of_mul_gt_of_neg - theorem div_lt_of_mul_lt_of_pos - theorem div_mul_le_div_mul_of_div_le_div_pos' - theorem div_mul_le_div_mul_of_div_le_div_pos - theorem div_neg_of_neg_of_pos - theorem div_neg_of_pos_of_neg - theorem div_nonneg_of_nonneg_of_pos - theorem div_nonneg_of_nonpos_of_neg - theorem div_nonpos_of_nonneg_of_neg - theorem div_nonpos_of_nonpos_of_pos - theorem div_pos_of_neg_of_neg - theorem div_pos_of_pos_of_pos - theorem div_two_lt_of_pos - theorem div_two_sub_self - theorem exists_add_lt_and_pos_of_lt - theorem ge_of_forall_ge_sub - theorem le_div_of_mul_le - theorem le_mul_of_div_le - theorem le_mul_of_ge_one_left - theorem le_mul_of_ge_one_right - theorem le_of_one_div_le_one_div - theorem le_of_one_div_le_one_div_of_neg - theorem le_of_one_le_div - theorem lt_div_of_mul_lt - theorem lt_mul_of_gt_one_right - theorem lt_of_one_div_lt_one_div - theorem lt_of_one_div_lt_one_div_of_neg - theorem lt_of_one_lt_div - theorem mul_le_mul_of_mul_div_le - theorem mul_le_of_div_le_of_neg - theorem mul_le_of_le_div - theorem mul_lt_of_gt_div_of_neg - theorem mul_lt_of_lt_div - theorem mul_sub_mul_div_mul_neg - theorem mul_sub_mul_div_mul_nonpos - theorem mul_zero_lt_mul_inv_of_neg - theorem mul_zero_lt_mul_inv_of_pos - theorem neg_of_one_div_neg - theorem one_div_le_neg_one - theorem one_div_le_of_one_div_le_of_neg - theorem one_div_le_of_one_div_le_of_pos - theorem one_div_le_one_div_of_le - theorem one_div_le_one_div_of_le_of_neg - theorem one_div_lt_neg_one - theorem one_div_lt_one_div_of_lt - theorem one_div_lt_one_div_of_lt_of_neg - theorem one_div_neg_of_neg - theorem one_div_pos_of_pos - theorem one_le_div_of_le - theorem one_le_one_div - theorem one_lt_div_of_lt - theorem one_lt_one_div - theorem pos_of_one_div_pos - theorem sub_self_div_two Deleted src/init_/algebra/ordered_group.lean - theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg - theorem add_le_add - theorem add_le_add_left - theorem add_le_add_right - theorem add_le_add_three - theorem add_le_of_le_neg_add - theorem add_le_of_le_of_nonpos - theorem add_le_of_le_sub_left - theorem add_le_of_le_sub_right - theorem add_le_of_nonpos_of_le - theorem add_lt_add - theorem add_lt_add_left - theorem add_lt_add_of_le_of_lt - theorem add_lt_add_of_lt_of_le - theorem add_lt_add_right - theorem add_lt_of_le_of_neg - theorem add_lt_of_lt_neg_add - theorem add_lt_of_lt_of_neg - theorem add_lt_of_lt_of_nonpos - theorem add_lt_of_lt_sub_left - theorem add_lt_of_lt_sub_right - theorem add_lt_of_neg_of_le - theorem add_lt_of_neg_of_lt - theorem add_lt_of_nonpos_of_lt - theorem add_neg - theorem add_neg_of_neg_of_nonpos - theorem add_neg_of_nonpos_of_neg - theorem add_nonneg - theorem add_nonpos - theorem add_pos - theorem add_pos_of_nonneg_of_pos - theorem add_pos_of_pos_of_nonneg - theorem decidable_linear_ordered_add_comm_group.add_lt_add_left - theorem le_add_of_le_of_nonneg - theorem le_add_of_neg_add_le - theorem le_add_of_neg_add_le_left - theorem le_add_of_neg_add_le_right - theorem le_add_of_neg_le_sub_left - theorem le_add_of_neg_le_sub_right - theorem le_add_of_nonneg_left - theorem le_add_of_nonneg_of_le - theorem le_add_of_nonneg_right - theorem le_add_of_sub_left_le - theorem le_add_of_sub_right_le - theorem le_neg_add_of_add_le - theorem le_neg_of_le_neg - theorem le_of_add_le_add_left - theorem le_of_add_le_add_right - theorem le_of_neg_le_neg - theorem le_of_sub_nonneg - theorem le_of_sub_nonpos - theorem le_sub_left_of_add_le - theorem le_sub_right_of_add_le - theorem lt_add_of_le_of_pos - theorem lt_add_of_lt_of_nonneg - theorem lt_add_of_lt_of_pos - theorem lt_add_of_neg_add_lt - theorem lt_add_of_neg_add_lt_left - theorem lt_add_of_neg_add_lt_right - theorem lt_add_of_neg_lt_sub_left - theorem lt_add_of_neg_lt_sub_right - theorem lt_add_of_nonneg_of_lt - theorem lt_add_of_pos_left - theorem lt_add_of_pos_of_le - theorem lt_add_of_pos_of_lt - theorem lt_add_of_pos_right - theorem lt_add_of_sub_left_lt - theorem lt_add_of_sub_right_lt - theorem lt_neg_add_of_add_lt - theorem lt_neg_of_lt_neg - theorem lt_of_add_lt_add_left - theorem lt_of_add_lt_add_right - theorem lt_of_neg_lt_neg - theorem lt_of_sub_neg - theorem lt_of_sub_pos - theorem lt_sub_left_of_add_lt - theorem lt_sub_right_of_add_lt - theorem neg_add_le_left_of_le_add - theorem neg_add_le_of_le_add - theorem neg_add_le_right_of_le_add - theorem neg_add_lt_left_of_lt_add - theorem neg_add_lt_of_lt_add - theorem neg_add_lt_right_of_lt_add - theorem neg_le_neg - theorem neg_le_of_neg_le - theorem neg_le_sub_left_of_le_add - theorem neg_le_sub_right_of_le_add - theorem neg_lt_neg - theorem neg_lt_of_neg_lt - theorem neg_lt_sub_left_of_lt_add - theorem neg_lt_sub_right_of_lt_add - theorem neg_neg_of_pos - theorem neg_nonneg_of_nonpos - theorem neg_nonpos_of_nonneg - theorem neg_of_neg_pos - theorem neg_pos_of_neg - theorem nonneg_of_neg_nonpos - theorem nonpos_of_neg_nonneg - theorem ordered_add_comm_group.add_lt_add_left - theorem ordered_add_comm_group.le_of_add_le_add_left - theorem ordered_add_comm_group.lt_of_add_lt_add_left - theorem pos_of_neg_neg - theorem sub_le_of_sub_le - theorem sub_le_self - theorem sub_le_sub - theorem sub_le_sub_left - theorem sub_le_sub_right - theorem sub_left_le_of_le_add - theorem sub_left_lt_of_lt_add - theorem sub_lt_of_sub_lt - theorem sub_lt_self - theorem sub_lt_sub - theorem sub_lt_sub_left - theorem sub_lt_sub_of_le_of_lt - theorem sub_lt_sub_of_lt_of_le - theorem sub_lt_sub_right - theorem sub_neg_of_lt - theorem sub_nonneg_of_le - theorem sub_nonpos_of_le - theorem sub_pos_of_lt - theorem sub_right_le_of_le_add - theorem sub_right_lt_of_lt_add Deleted src/init_/algebra/ordered_ring.lean - theorem four_pos - theorem gt_of_mul_lt_mul_neg_left - theorem le_of_mul_le_mul_left - theorem le_of_mul_le_mul_right - theorem le_of_mul_le_of_ge_one - theorem linear_ordered_ring.eq_zero_or_eq_zero_of_mul_eq_zero - theorem lt_of_mul_lt_mul_left - theorem lt_of_mul_lt_mul_right - theorem mul_le_mul - theorem mul_le_mul_of_nonneg_left - theorem mul_le_mul_of_nonneg_right - theorem mul_le_mul_of_nonpos_left - theorem mul_le_mul_of_nonpos_right - theorem mul_lt_mul' - theorem mul_lt_mul - theorem mul_lt_mul_of_neg_left - theorem mul_lt_mul_of_neg_right - theorem mul_lt_mul_of_pos_left - theorem mul_lt_mul_of_pos_right - theorem mul_neg_of_neg_of_pos - theorem mul_neg_of_pos_of_neg - theorem mul_nonneg - theorem mul_nonneg_of_nonpos_of_nonpos - theorem mul_nonpos_of_nonneg_of_nonpos - theorem mul_nonpos_of_nonpos_of_nonneg - theorem mul_pos - theorem mul_pos_of_neg_of_neg - theorem mul_self_le_mul_self - theorem mul_self_le_mul_self_iff - theorem mul_self_lt_mul_self - theorem mul_self_lt_mul_self_iff - theorem mul_self_nonneg - theorem neg_of_mul_neg_left - theorem neg_of_mul_neg_right - theorem nonneg_le_nonneg_of_squares_le - theorem nonneg_of_mul_nonneg_left - theorem nonneg_of_mul_nonneg_right - theorem nonpos_of_mul_nonpos_left - theorem nonpos_of_mul_nonpos_right - theorem ordered_ring.mul_le_mul_of_nonneg_left - theorem ordered_ring.mul_le_mul_of_nonneg_right - theorem ordered_ring.mul_lt_mul_of_pos_left - theorem ordered_ring.mul_lt_mul_of_pos_right - theorem ordered_ring.mul_nonneg - theorem ordered_semiring.mul_le_mul_of_nonneg_left - theorem ordered_semiring.mul_le_mul_of_nonneg_right - theorem pos_and_pos_or_neg_and_neg_of_mul_pos - theorem pos_of_mul_pos_left - theorem pos_of_mul_pos_right - theorem two_ge_one - theorem two_gt_one - theorem two_ne_zero - theorem two_pos - theorem zero_gt_neg_one - theorem zero_le_one - theorem zero_lt_one Deleted src/init_/algebra/ring.lean - def add_mul - theorem add_mul_self_eq - theorem distrib_three_right - theorem dvd.elim - theorem dvd.elim_left - theorem dvd.intro - theorem dvd.intro_left - def dvd.trans - theorem dvd_add - theorem dvd_add_iff_left - theorem dvd_add_iff_right - theorem dvd_mul_left - theorem dvd_mul_of_dvd_left - theorem dvd_mul_of_dvd_right - theorem dvd_mul_right - theorem dvd_neg_iff_dvd - theorem dvd_neg_of_dvd - theorem dvd_of_dvd_neg - theorem dvd_of_mul_left_dvd - def dvd_of_mul_left_eq - theorem dvd_of_mul_right_dvd - def dvd_of_mul_right_eq - theorem dvd_of_neg_dvd - theorem dvd_refl - theorem dvd_sub - theorem dvd_trans - theorem dvd_zero - theorem eq_of_mul_eq_mul_left - theorem eq_of_mul_eq_mul_right - theorem eq_zero_of_mul_eq_self_left - theorem eq_zero_of_mul_eq_self_right - theorem eq_zero_of_mul_self_eq_zero - theorem eq_zero_of_zero_dvd - theorem eq_zero_or_eq_zero_of_mul_eq_zero - theorem exists_eq_mul_left_of_dvd - theorem exists_eq_mul_right_of_dvd - theorem left_distrib - def mul_add - theorem mul_dvd_mul - theorem mul_dvd_mul_left - theorem mul_dvd_mul_right - theorem mul_eq_zero_iff_eq_zero_or_eq_zero - theorem mul_ne_zero - theorem mul_neg_eq_neg_mul_symm - theorem mul_self_eq_mul_self_iff - theorem mul_self_eq_one_iff - theorem mul_self_sub_mul_self_eq - theorem mul_self_sub_one_eq - def mul_sub - theorem mul_sub_left_distrib - theorem mul_sub_right_distrib - theorem mul_zero - theorem ne_zero_of_mul_ne_zero_left - theorem ne_zero_of_mul_ne_zero_right - theorem neg_dvd_iff_dvd - theorem neg_dvd_of_dvd - theorem neg_eq_neg_one_mul - theorem neg_mul_comm - theorem neg_mul_eq_mul_neg - theorem neg_mul_eq_neg_mul - theorem neg_mul_eq_neg_mul_symm - theorem neg_mul_neg - theorem one_add_one_eq_two - theorem one_dvd - theorem one_ne_zero - theorem right_distrib - theorem ring.mul_zero - theorem ring.zero_mul - def sub_mul - theorem two_mul - theorem zero_mul - theorem zero_ne_one Modified src/init_/data/int/basic.lean Modified src/init_/data/int/order.lean Modified src/init_/data/nat/lemmas.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dual.lean +/- def is_basis.coord_fun Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/quadratic_form.lean Modified src/logic/basic.lean Modified src/measure_theory/outer_measure.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/order/filter/filter_product.lean Modified src/ring_theory/integral_domain.lean Modified src/set_theory/ordinal_notation.lean Modified src/tactic/abel.lean Modified src/tactic/algebra.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/norm_num.lean + theorem norm_num.subst_into_add + theorem norm_num.subst_into_mul Modified src/tactic/ring.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified test/coinductive.lean Modified test/finish4.lean +/- def append1 Modified test/library_search/ordered_ring.lean Modified test/lint.lean Modified test/lint_simp_comm.lean Modified test/mk_iff_of_inductive.lean Modified test/monotonicity.lean Modified test/norm_cast_int.lean Modified test/norm_cast_lemma_order.lean Modified test/norm_num.lean Modified test/nth_rewrite.lean Modified test/push_neg.lean Modified test/refine_struct.lean Modified test/rewrite.lean Modified test/ring.lean Modified test/simp_rw.lean Modified test/tactics.lean 2020-05-18 13:38:39 18217e9 feat(nat/choose): Generalise nat.dvd_choose (#2703) Spin-off from #2701. ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/data/nat/choose.lean - theorem nat.prime.dvd_choose + theorem nat.prime.dvd_choose_add + theorem nat.prime.dvd_choose_self +/- theorem sum_range_choose 2020-05-18 11:24:28 434e6a6 chore(*): update to lean 3.13.2 (#2728) This should fix the bug with the missing module doc strings in the documentation. ESTIMATED CHANGES Modified leanpkg.toml 2020-05-17 23:39:12 93119dd chore(scripts): update nolints.txt (#2721) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-17 22:37:56 7325104 feat(ci): store xz archives (#2719) https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/olean.20cache ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-05-17 20:01:37 cdf97dc refactor(field_theory): preparations for Chevalley–Warning (#2590) This PR adds some preparations for the Chevalley–Warning theorem. depends on: ~#2606, #2607, #2623~ ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem units.coe_val_hom + def units.val_hom Modified src/field_theory/finite.lean +/- theorem finite_field.card' +/- theorem finite_field.card +/- theorem finite_field.card_image_polynomial_eval + theorem finite_field.cast_card_eq_zero +/- theorem finite_field.exists_root_sum_quadratic - def finite_field.field_of_integral_domain + theorem finite_field.forall_pow_eq_one_iff +/- theorem finite_field.pow_card_sub_one_eq_one + theorem finite_field.sum_pow_lt_card_sub_one + theorem finite_field.sum_pow_units Modified src/ring_theory/integral_domain.lean +/- theorem card_fiber_eq_of_mem_range +/- theorem card_nth_roots_subgroup_units + def field_of_integral_domain + theorem is_cyclic_of_subgroup_integral_domain 2020-05-17 17:58:04 f23c361 chore(*): bump to lean-3.13.1 (#2697) ## Move algebra to mathlib The algebraic hierarchy has moved from the core library to `init_`. In later PRs this can be integrated into the existing directory structure of mathlib. ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified leanpkg.toml Modified scripts/nolints.txt Modified src/data/int/gcd.lean Added src/init_/algebra/default.lean Added src/init_/algebra/field.lean + theorem add_div_eq_mul_add_div + theorem div_add_div + theorem div_add_div_same + theorem div_div_div_div_eq + theorem div_div_eq_div_mul + theorem div_div_eq_mul_div + theorem div_eq_mul_one_div + theorem div_eq_one_iff_eq + theorem div_helper + theorem div_mul_cancel + theorem div_mul_div + theorem div_mul_eq_div_mul_one_div + theorem div_mul_eq_mul_div + theorem div_mul_eq_mul_div_comm + theorem div_mul_left + theorem div_mul_right + theorem div_neg_eq_neg_div + theorem div_one + theorem div_self + theorem div_sub_div + theorem div_sub_div_same + theorem div_zero + theorem division_def + theorem division_ring.mul_ne_zero + theorem division_ring.one_div_mul_one_div + theorem eq_div_iff_mul_eq + theorem eq_div_of_mul_eq + theorem eq_of_div_eq_one + theorem eq_of_mul_eq_mul_of_nonzero_left + theorem eq_of_mul_eq_mul_of_nonzero_right + theorem eq_of_one_div_eq_one_div + theorem eq_one_div_of_mul_eq_one + theorem eq_one_div_of_mul_eq_one_left + theorem eq_zero_of_one_div_eq_zero + theorem inv_eq_one_div + theorem inv_inv' + theorem inv_mul_cancel + theorem inv_ne_zero + theorem inv_zero + theorem mul_div_assoc + theorem mul_div_cancel' + theorem mul_div_cancel + theorem mul_div_cancel_left + theorem mul_div_mul_left + theorem mul_div_mul_right + theorem mul_eq_mul_of_div_eq_div + theorem mul_eq_of_eq_div + theorem mul_inv' + theorem mul_inv_cancel + theorem mul_mul_div + theorem mul_ne_zero_comm + theorem mul_one_div_cancel + theorem ne_zero_of_one_div_ne_zero + theorem neg_div + theorem neg_div_neg_eq + theorem one_div_add_one_div + theorem one_div_div + theorem one_div_eq_inv + theorem one_div_mul_add_mul_one_div_eq_one_div_add_one_div + theorem one_div_mul_cancel + theorem one_div_mul_one_div + theorem one_div_mul_sub_mul_one_div_eq_one_div_add_one_div + theorem one_div_ne_zero + theorem one_div_neg_eq_neg_one_div + theorem one_div_neg_one_eq_neg_one + theorem one_div_one + theorem one_div_one_div + theorem one_inv_eq + theorem zero_div Added src/init_/algebra/functions.lean + theorem abs_abs + theorem abs_abs_sub_abs_le_abs_sub + theorem abs_add_le_abs_add_abs + theorem abs_add_three + theorem abs_by_cases + theorem abs_div + theorem abs_le_of_le_of_neg_le + theorem abs_lt_of_lt_of_neg_lt + theorem abs_mul + theorem abs_mul_abs_self + theorem abs_mul_self + theorem abs_neg + theorem abs_nonneg + theorem abs_of_neg + theorem abs_of_nonneg + theorem abs_of_nonpos + theorem abs_of_pos + theorem abs_one_div + theorem abs_pos_of_ne_zero + theorem abs_pos_of_neg + theorem abs_pos_of_pos + theorem abs_sub + theorem abs_sub_abs_le_abs_sub + theorem abs_sub_le + theorem abs_sub_square + theorem abs_zero + theorem dist_bdd_within_interval + theorem eq_of_abs_sub_eq_zero + theorem eq_zero_of_abs_eq_zero + theorem eq_zero_of_mul_self_add_mul_self_eq_zero + theorem eq_zero_of_neg_eq + theorem le_abs_self + theorem max_add_add_left + theorem max_add_add_right + theorem max_eq_neg_min_neg_neg + theorem max_neg_neg + theorem min_add_add_left + theorem min_add_add_right + theorem min_eq_neg_max_neg_neg + theorem min_neg_neg + theorem ne_zero_of_abs_ne_zero + theorem neg_le_abs_self + theorem sub_le_of_abs_sub_le_left + theorem sub_le_of_abs_sub_le_right + theorem sub_lt_of_abs_sub_lt_left + theorem sub_lt_of_abs_sub_lt_right Added src/init_/algebra/group.lean + theorem add_eq_of_eq_sub' + theorem add_eq_of_eq_sub + def add_neg_self + theorem add_sub + theorem add_sub_add_left_eq_sub + theorem add_sub_add_right_eq_sub + theorem add_sub_assoc + theorem add_sub_cancel + theorem add_sub_comm + theorem eq_add_of_sub_eq' + theorem eq_add_of_sub_eq + theorem eq_inv_mul_of_mul_eq + theorem eq_inv_of_eq_inv + theorem eq_inv_of_mul_eq_one + theorem eq_mul_inv_of_mul_eq + theorem eq_mul_of_inv_mul_eq + theorem eq_mul_of_mul_inv_eq + def eq_of_add_eq_add_left + def eq_of_add_eq_add_right + theorem eq_of_sub_eq_zero + theorem eq_sub_of_add_eq' + theorem eq_sub_of_add_eq + theorem group.mul_left_cancel + theorem group.mul_right_cancel + theorem inv_eq_of_mul_eq_one + theorem inv_inj + theorem inv_inv + theorem inv_mul_cancel_left + theorem inv_mul_cancel_right + theorem inv_mul_eq_of_eq_mul + def inv_mul_self + theorem mul_assoc + theorem mul_comm + theorem mul_eq_of_eq_inv_mul + theorem mul_eq_of_eq_mul_inv + theorem mul_inv + theorem mul_inv_cancel_left + theorem mul_inv_cancel_right + theorem mul_inv_eq_of_eq_mul + theorem mul_inv_rev + def mul_inv_self + theorem mul_left_cancel + theorem mul_left_cancel_iff + theorem mul_left_comm + theorem mul_left_inv + theorem mul_one + theorem mul_right_cancel + theorem mul_right_cancel_iff + theorem mul_right_comm + theorem mul_right_inv + theorem neg_add_eq_sub + def neg_add_self + theorem neg_neg_sub_neg + theorem neg_sub + theorem one_inv + theorem one_mul + theorem sub_add + theorem sub_add_cancel + theorem sub_add_eq_add_sub + theorem sub_add_eq_sub_sub + theorem sub_add_eq_sub_sub_swap + theorem sub_eq_add_neg + theorem sub_eq_of_eq_add' + theorem sub_eq_of_eq_add + theorem sub_eq_sub_add_sub + theorem sub_eq_zero_iff_eq + theorem sub_eq_zero_of_eq + theorem sub_ne_zero_of_ne + theorem sub_neg_eq_add + theorem sub_self + theorem sub_sub + theorem sub_sub_self + theorem sub_zero + theorem zero_sub Added src/init_/algebra/norm_num.lean + def norm_num.add1 + theorem norm_num.add1_bit0 + theorem norm_num.add1_bit1 + theorem norm_num.add1_bit1_helper + theorem norm_num.add1_one + theorem norm_num.add1_zero + theorem norm_num.add_comm_four + theorem norm_num.add_comm_middle + theorem norm_num.add_div_helper + theorem norm_num.bin_add_zero + theorem norm_num.bin_zero_add + theorem norm_num.bit0_add_bit0 + theorem norm_num.bit0_add_bit0_helper + theorem norm_num.bit0_add_bit1 + theorem norm_num.bit0_add_bit1_helper + theorem norm_num.bit0_add_one + theorem norm_num.bit1_add_bit0 + theorem norm_num.bit1_add_bit0_helper + theorem norm_num.bit1_add_bit1 + theorem norm_num.bit1_add_bit1_helper + theorem norm_num.bit1_add_one + theorem norm_num.bit1_add_one_helper + theorem norm_num.div_add_helper + theorem norm_num.div_eq_div_helper + theorem norm_num.div_helper + theorem norm_num.div_mul_helper + theorem norm_num.mk_cong + theorem norm_num.mul_bit0 + theorem norm_num.mul_bit0_helper + theorem norm_num.mul_bit1 + theorem norm_num.mul_bit1_helper + theorem norm_num.mul_div_helper + theorem norm_num.mul_one + theorem norm_num.mul_zero + theorem norm_num.neg_add_neg_eq_of_add_add_eq_zero + theorem norm_num.neg_add_neg_helper + theorem norm_num.neg_add_pos_eq_of_eq_add + theorem norm_num.neg_add_pos_helper1 + theorem norm_num.neg_add_pos_helper2 + theorem norm_num.neg_mul_neg_helper + theorem norm_num.neg_mul_pos_helper + theorem norm_num.neg_neg_helper + theorem norm_num.neg_zero_helper + theorem norm_num.nonneg_bit0_helper + theorem norm_num.nonneg_bit1_helper + theorem norm_num.nonzero_of_div_helper + theorem norm_num.nonzero_of_neg_helper + theorem norm_num.nonzero_of_pos_helper + theorem norm_num.one_add_bit0 + theorem norm_num.one_add_bit1 + theorem norm_num.one_add_bit1_helper + theorem norm_num.one_add_one + theorem norm_num.pos_add_neg_helper + theorem norm_num.pos_bit0_helper + theorem norm_num.pos_bit1_helper + theorem norm_num.pos_mul_neg_helper + theorem norm_num.sub_nat_pos_helper + theorem norm_num.sub_nat_zero_helper + theorem norm_num.subst_into_div + theorem norm_num.subst_into_prod + theorem norm_num.subst_into_subtr + theorem norm_num.subst_into_sum + theorem norm_num.zero_mul Added src/init_/algebra/ordered_field.lean + theorem add_halves + theorem add_midpoint + theorem add_self_div_two + theorem div_le_div_of_le_of_neg + theorem div_le_div_of_le_of_pos + theorem div_le_div_of_mul_sub_mul_div_nonpos + theorem div_le_of_le_mul + theorem div_le_of_mul_le_of_neg + theorem div_lt_div_of_lt_of_neg + theorem div_lt_div_of_lt_of_pos + theorem div_lt_div_of_mul_sub_mul_div_neg + theorem div_lt_div_of_pos_of_lt_of_pos + theorem div_lt_of_mul_gt_of_neg + theorem div_lt_of_mul_lt_of_pos + theorem div_mul_le_div_mul_of_div_le_div_pos' + theorem div_mul_le_div_mul_of_div_le_div_pos + theorem div_neg_of_neg_of_pos + theorem div_neg_of_pos_of_neg + theorem div_nonneg_of_nonneg_of_pos + theorem div_nonneg_of_nonpos_of_neg + theorem div_nonpos_of_nonneg_of_neg + theorem div_nonpos_of_nonpos_of_pos + theorem div_pos_of_neg_of_neg + theorem div_pos_of_pos_of_pos + theorem div_two_lt_of_pos + theorem div_two_sub_self + theorem exists_add_lt_and_pos_of_lt + theorem ge_of_forall_ge_sub + theorem le_div_of_mul_le + theorem le_mul_of_div_le + theorem le_mul_of_ge_one_left + theorem le_mul_of_ge_one_right + theorem le_of_one_div_le_one_div + theorem le_of_one_div_le_one_div_of_neg + theorem le_of_one_le_div + theorem lt_div_of_mul_lt + theorem lt_mul_of_gt_one_right + theorem lt_of_one_div_lt_one_div + theorem lt_of_one_div_lt_one_div_of_neg + theorem lt_of_one_lt_div + theorem mul_le_mul_of_mul_div_le + theorem mul_le_of_div_le_of_neg + theorem mul_le_of_le_div + theorem mul_lt_of_gt_div_of_neg + theorem mul_lt_of_lt_div + theorem mul_sub_mul_div_mul_neg + theorem mul_sub_mul_div_mul_nonpos + theorem mul_zero_lt_mul_inv_of_neg + theorem mul_zero_lt_mul_inv_of_pos + theorem neg_of_one_div_neg + theorem one_div_le_neg_one + theorem one_div_le_of_one_div_le_of_neg + theorem one_div_le_of_one_div_le_of_pos + theorem one_div_le_one_div_of_le + theorem one_div_le_one_div_of_le_of_neg + theorem one_div_lt_neg_one + theorem one_div_lt_one_div_of_lt + theorem one_div_lt_one_div_of_lt_of_neg + theorem one_div_neg_of_neg + theorem one_div_pos_of_pos + theorem one_le_div_of_le + theorem one_le_one_div + theorem one_lt_div_of_lt + theorem one_lt_one_div + theorem pos_of_one_div_pos + theorem sub_self_div_two Added src/init_/algebra/ordered_group.lean + theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg + theorem add_le_add + theorem add_le_add_left + theorem add_le_add_right + theorem add_le_add_three + theorem add_le_of_le_neg_add + theorem add_le_of_le_of_nonpos + theorem add_le_of_le_sub_left + theorem add_le_of_le_sub_right + theorem add_le_of_nonpos_of_le + theorem add_lt_add + theorem add_lt_add_left + theorem add_lt_add_of_le_of_lt + theorem add_lt_add_of_lt_of_le + theorem add_lt_add_right + theorem add_lt_of_le_of_neg + theorem add_lt_of_lt_neg_add + theorem add_lt_of_lt_of_neg + theorem add_lt_of_lt_of_nonpos + theorem add_lt_of_lt_sub_left + theorem add_lt_of_lt_sub_right + theorem add_lt_of_neg_of_le + theorem add_lt_of_neg_of_lt + theorem add_lt_of_nonpos_of_lt + theorem add_neg + theorem add_neg_of_neg_of_nonpos + theorem add_neg_of_nonpos_of_neg + theorem add_nonneg + theorem add_nonpos + theorem add_pos + theorem add_pos_of_nonneg_of_pos + theorem add_pos_of_pos_of_nonneg + theorem decidable_linear_ordered_add_comm_group.add_lt_add_left + theorem le_add_of_le_of_nonneg + theorem le_add_of_neg_add_le + theorem le_add_of_neg_add_le_left + theorem le_add_of_neg_add_le_right + theorem le_add_of_neg_le_sub_left + theorem le_add_of_neg_le_sub_right + theorem le_add_of_nonneg_left + theorem le_add_of_nonneg_of_le + theorem le_add_of_nonneg_right + theorem le_add_of_sub_left_le + theorem le_add_of_sub_right_le + theorem le_neg_add_of_add_le + theorem le_neg_of_le_neg + theorem le_of_add_le_add_left + theorem le_of_add_le_add_right + theorem le_of_neg_le_neg + theorem le_of_sub_nonneg + theorem le_of_sub_nonpos + theorem le_sub_left_of_add_le + theorem le_sub_right_of_add_le + theorem lt_add_of_le_of_pos + theorem lt_add_of_lt_of_nonneg + theorem lt_add_of_lt_of_pos + theorem lt_add_of_neg_add_lt + theorem lt_add_of_neg_add_lt_left + theorem lt_add_of_neg_add_lt_right + theorem lt_add_of_neg_lt_sub_left + theorem lt_add_of_neg_lt_sub_right + theorem lt_add_of_nonneg_of_lt + theorem lt_add_of_pos_left + theorem lt_add_of_pos_of_le + theorem lt_add_of_pos_of_lt + theorem lt_add_of_pos_right + theorem lt_add_of_sub_left_lt + theorem lt_add_of_sub_right_lt + theorem lt_neg_add_of_add_lt + theorem lt_neg_of_lt_neg + theorem lt_of_add_lt_add_left + theorem lt_of_add_lt_add_right + theorem lt_of_neg_lt_neg + theorem lt_of_sub_neg + theorem lt_of_sub_pos + theorem lt_sub_left_of_add_lt + theorem lt_sub_right_of_add_lt + theorem neg_add_le_left_of_le_add + theorem neg_add_le_of_le_add + theorem neg_add_le_right_of_le_add + theorem neg_add_lt_left_of_lt_add + theorem neg_add_lt_of_lt_add + theorem neg_add_lt_right_of_lt_add + theorem neg_le_neg + theorem neg_le_of_neg_le + theorem neg_le_sub_left_of_le_add + theorem neg_le_sub_right_of_le_add + theorem neg_lt_neg + theorem neg_lt_of_neg_lt + theorem neg_lt_sub_left_of_lt_add + theorem neg_lt_sub_right_of_lt_add + theorem neg_neg_of_pos + theorem neg_nonneg_of_nonpos + theorem neg_nonpos_of_nonneg + theorem neg_of_neg_pos + theorem neg_pos_of_neg + theorem nonneg_of_neg_nonpos + theorem nonpos_of_neg_nonneg + theorem ordered_add_comm_group.add_lt_add_left + theorem ordered_add_comm_group.le_of_add_le_add_left + theorem ordered_add_comm_group.lt_of_add_lt_add_left + theorem pos_of_neg_neg + theorem sub_le_of_sub_le + theorem sub_le_self + theorem sub_le_sub + theorem sub_le_sub_left + theorem sub_le_sub_right + theorem sub_left_le_of_le_add + theorem sub_left_lt_of_lt_add + theorem sub_lt_of_sub_lt + theorem sub_lt_self + theorem sub_lt_sub + theorem sub_lt_sub_left + theorem sub_lt_sub_of_le_of_lt + theorem sub_lt_sub_of_lt_of_le + theorem sub_lt_sub_right + theorem sub_neg_of_lt + theorem sub_nonneg_of_le + theorem sub_nonpos_of_le + theorem sub_pos_of_lt + theorem sub_right_le_of_le_add + theorem sub_right_lt_of_lt_add Added src/init_/algebra/ordered_ring.lean + theorem four_pos + theorem gt_of_mul_lt_mul_neg_left + theorem le_of_mul_le_mul_left + theorem le_of_mul_le_mul_right + theorem le_of_mul_le_of_ge_one + theorem linear_ordered_ring.eq_zero_or_eq_zero_of_mul_eq_zero + theorem lt_of_mul_lt_mul_left + theorem lt_of_mul_lt_mul_right + theorem mul_le_mul + theorem mul_le_mul_of_nonneg_left + theorem mul_le_mul_of_nonneg_right + theorem mul_le_mul_of_nonpos_left + theorem mul_le_mul_of_nonpos_right + theorem mul_lt_mul' + theorem mul_lt_mul + theorem mul_lt_mul_of_neg_left + theorem mul_lt_mul_of_neg_right + theorem mul_lt_mul_of_pos_left + theorem mul_lt_mul_of_pos_right + theorem mul_neg_of_neg_of_pos + theorem mul_neg_of_pos_of_neg + theorem mul_nonneg + theorem mul_nonneg_of_nonpos_of_nonpos + theorem mul_nonpos_of_nonneg_of_nonpos + theorem mul_nonpos_of_nonpos_of_nonneg + theorem mul_pos + theorem mul_pos_of_neg_of_neg + theorem mul_self_le_mul_self + theorem mul_self_le_mul_self_iff + theorem mul_self_lt_mul_self + theorem mul_self_lt_mul_self_iff + theorem mul_self_nonneg + theorem neg_of_mul_neg_left + theorem neg_of_mul_neg_right + theorem nonneg_le_nonneg_of_squares_le + theorem nonneg_of_mul_nonneg_left + theorem nonneg_of_mul_nonneg_right + theorem nonpos_of_mul_nonpos_left + theorem nonpos_of_mul_nonpos_right + theorem ordered_ring.mul_le_mul_of_nonneg_left + theorem ordered_ring.mul_le_mul_of_nonneg_right + theorem ordered_ring.mul_lt_mul_of_pos_left + theorem ordered_ring.mul_lt_mul_of_pos_right + theorem ordered_ring.mul_nonneg + theorem ordered_semiring.mul_le_mul_of_nonneg_left + theorem ordered_semiring.mul_le_mul_of_nonneg_right + theorem pos_and_pos_or_neg_and_neg_of_mul_pos + theorem pos_of_mul_pos_left + theorem pos_of_mul_pos_right + theorem two_ge_one + theorem two_gt_one + theorem two_ne_zero + theorem two_pos + theorem zero_gt_neg_one + theorem zero_le_one + theorem zero_lt_one Added src/init_/algebra/ring.lean + def add_mul + theorem add_mul_self_eq + theorem distrib_three_right + theorem dvd.elim + theorem dvd.elim_left + theorem dvd.intro + theorem dvd.intro_left + def dvd.trans + theorem dvd_add + theorem dvd_add_iff_left + theorem dvd_add_iff_right + theorem dvd_mul_left + theorem dvd_mul_of_dvd_left + theorem dvd_mul_of_dvd_right + theorem dvd_mul_right + theorem dvd_neg_iff_dvd + theorem dvd_neg_of_dvd + theorem dvd_of_dvd_neg + theorem dvd_of_mul_left_dvd + def dvd_of_mul_left_eq + theorem dvd_of_mul_right_dvd + def dvd_of_mul_right_eq + theorem dvd_of_neg_dvd + theorem dvd_refl + theorem dvd_sub + theorem dvd_trans + theorem dvd_zero + theorem eq_of_mul_eq_mul_left + theorem eq_of_mul_eq_mul_right + theorem eq_zero_of_mul_eq_self_left + theorem eq_zero_of_mul_eq_self_right + theorem eq_zero_of_mul_self_eq_zero + theorem eq_zero_of_zero_dvd + theorem eq_zero_or_eq_zero_of_mul_eq_zero + theorem exists_eq_mul_left_of_dvd + theorem exists_eq_mul_right_of_dvd + theorem left_distrib + def mul_add + theorem mul_dvd_mul + theorem mul_dvd_mul_left + theorem mul_dvd_mul_right + theorem mul_eq_zero_iff_eq_zero_or_eq_zero + theorem mul_ne_zero + theorem mul_neg_eq_neg_mul_symm + theorem mul_self_eq_mul_self_iff + theorem mul_self_eq_one_iff + theorem mul_self_sub_mul_self_eq + theorem mul_self_sub_one_eq + def mul_sub + theorem mul_sub_left_distrib + theorem mul_sub_right_distrib + theorem mul_zero + theorem ne_zero_of_mul_ne_zero_left + theorem ne_zero_of_mul_ne_zero_right + theorem neg_dvd_iff_dvd + theorem neg_dvd_of_dvd + theorem neg_eq_neg_one_mul + theorem neg_mul_comm + theorem neg_mul_eq_mul_neg + theorem neg_mul_eq_neg_mul + theorem neg_mul_eq_neg_mul_symm + theorem neg_mul_neg + theorem one_add_one_eq_two + theorem one_dvd + theorem one_ne_zero + theorem right_distrib + theorem ring.mul_zero + theorem ring.zero_mul + def sub_mul + theorem two_mul + theorem zero_mul + theorem zero_ne_one Added src/init_/data/int/basic.lean Added src/init_/data/int/order.lean + theorem int.abs_eq_nat_abs + theorem int.nat_abs_abs + theorem int.sign_mul_abs Added src/init_/data/nat/lemmas.lean + theorem nat.eq_of_mul_eq_mul_right + theorem nat.le_mul_self + theorem nat.mul_self_le_mul_self + theorem nat.mul_self_le_mul_self_iff + theorem nat.mul_self_lt_mul_self + theorem nat.mul_self_lt_mul_self_iff + theorem nat.one_add Added src/init_/default.lean Modified src/logic/basic.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/simps.lean Modified test/doc_commands.lean 2020-05-17 15:08:29 3449510 feat(algebra/big_operators): Alternative phrasing of prod-bij (#2709) Requested by @ChrisHughes24 in https://github.com/leanprover-community/mathlib/pull/2688/files#r426184248 A repaired version of #2708. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_bij' 2020-05-17 12:00:04 a206df1 chore(scripts): update nolints.txt (#2711) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-17 07:42:04 b530cdb refactor(normed_space): require `norm_smul_le` instead of `norm_smul` (#2693) While in many cases we can prove `norm_smul` directly, in some cases (e.g., for the operator norm) it's easier to prove `norm_smul_le`. Redefine `normed_space` to avoid repeating the same trick over and over. ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/analysis/normed_space/basic.lean + theorem prod.norm_def Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.norm_def +/- theorem continuous_multilinear_map.op_norm_neg - theorem continuous_multilinear_map.op_norm_smul + theorem continuous_multilinear_map.op_norm_smul_le Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.norm_def +/- def continuous_linear_map.op_norm +/- theorem continuous_linear_map.op_norm_neg - theorem continuous_linear_map.op_norm_smul + theorem continuous_linear_map.op_norm_smul_le Modified src/analysis/normed_space/real_inner_product.lean Modified src/group_theory/group_action.lean + theorem inv_smul_smul' + theorem is_unit.smul_eq_zero + theorem mul_action.inv_smul_smul + theorem mul_action.smul_inv_smul + theorem smul_inv_smul' + theorem units.inv_smul_smul + theorem units.smul_eq_zero + theorem units.smul_inv_smul + theorem units.smul_ne_zero Modified src/measure_theory/l1_space.lean Modified src/topology/bounded_continuous_function.lean +/- theorem bounded_continuous_function.abs_diff_coe_le_dist + theorem bounded_continuous_function.add_apply +/- theorem bounded_continuous_function.coe_add + theorem bounded_continuous_function.coe_const - theorem bounded_continuous_function.coe_diff +/- theorem bounded_continuous_function.coe_neg + theorem bounded_continuous_function.coe_smul + theorem bounded_continuous_function.coe_sub + theorem bounded_continuous_function.const_apply + theorem bounded_continuous_function.dist_le_two_norm' +/- theorem bounded_continuous_function.dist_le_two_norm + theorem bounded_continuous_function.ext_iff + theorem bounded_continuous_function.neg_apply + theorem bounded_continuous_function.norm_const_eq + theorem bounded_continuous_function.norm_const_le + theorem bounded_continuous_function.norm_of_normed_group_le - theorem bounded_continuous_function.norm_smul - theorem bounded_continuous_function.norm_smul_le + theorem bounded_continuous_function.smul_apply + theorem bounded_continuous_function.sub_apply Modified src/topology/metric_space/isometry.lean 2020-05-17 04:33:06 39af0f6 chore(algebra/ring): drop an unneeded instance (#2705) We're incompatible with Lean 3.4.2 for a long time. ESTIMATED CHANGES Modified src/algebra/ring.lean - def has_div_of_division_ring Modified src/order/filter/filter_product.lean 2020-05-17 02:07:24 1580cd8 fix(algebra/big_operators): typo fix (#2704) Fix cut-and-paste typos in the doc string for `∑ x, f x`. ESTIMATED CHANGES Modified src/algebra/big_operators.lean 2020-05-17 02:07:22 4f484a1 feat(archive/100-theorems-list): Sum of the Reciprocals of the Triangular Numbers (#2692) Adds a folder `archive/100-theorems-list`, moves our proof of 82 into it, and provides a proof of 42. There's a readme, I haven't really thought about what should go in there. ESTIMATED CHANGES Added archive/100-theorems-list/42_inverse_triangle_sum.lean + theorem inverse_triangle_sum Renamed archive/cubing_a_cube.lean to archive/100-theorems-list/82_cubing_a_cube.lean Added archive/100-theorems-list/README.md Modified src/algebra/big_operators.lean + theorem finset.prod_range_induction +/- theorem finset.sum_range_id_mul_two + theorem finset.sum_range_induction 2020-05-17 00:07:54 21bdb78 feat(ring_theory/ideal_operations): jacobson radical, is_local, and primary ideals (#768) ESTIMATED CHANGES Modified src/ring_theory/ideal_operations.lean + theorem ideal.is_local.le_jacobson + theorem ideal.is_local.mem_jacobson_or_exists_inv + def ideal.is_local + theorem ideal.is_local_of_is_maximal_radical + theorem ideal.is_primary.to_is_prime + def ideal.is_primary + theorem ideal.is_primary_inf + theorem ideal.is_primary_of_is_maximal_radical + theorem ideal.is_prime.comap + theorem ideal.is_prime_radical + def ideal.jacobson + theorem ideal.jacobson_eq_top_iff + theorem ideal.mem_jacobson_iff + theorem ideal.mem_radical_of_pow_mem Modified src/ring_theory/ideals.lean + theorem ideal.mem_Inf 2020-05-16 21:18:08 00024db refactor(group_theory/monoid_localization): use old_structure_cmd (#2683) Second bit of #2675. The change to ```old_structure_cmd``` is so ring localizations can use this file more easily. I've not made sure the map ```f``` is implicit when it can be because ```f.foo``` notation means it doesn't make much difference, but I'll change this if needed.* I have changed some of the bad names at the end; they are still not great. Does anyone have any alternative suggestions? Things to come in future PRs: the group completion of a comm monoid and some examples, ```away``` (localization at a submonoid generated by one element), more stuff on the localization as a quotient type & the fact it satisfies the char pred. I think I've learnt some stuff about the ```@[simp]``` linter today. Hopefully I'll be making fewer commits trying and failing to appease it. *edit: I mean I haven't checked how many places I can make ```f``` implicit & remove the appropriate ```f.```'s. ESTIMATED CHANGES Modified src/group_theory/monoid_localization.lean +/- structure add_submonoid.localization_map + def monoid_hom.to_localization_map - theorem submonoid.localization_map.comp_mul_equiv_symm_comap_apply - theorem submonoid.localization_map.comp_mul_equiv_symm_map_apply + theorem submonoid.localization_map.eq_iff_exists +/- theorem submonoid.localization_map.eq_of_eq +/- theorem submonoid.localization_map.ext +/- theorem submonoid.localization_map.ext_iff +/- theorem submonoid.localization_map.lift_comp +/- theorem submonoid.localization_map.lift_id + theorem submonoid.localization_map.map_left_cancel + theorem submonoid.localization_map.map_right_cancel + theorem submonoid.localization_map.map_units +/- theorem submonoid.localization_map.mk'_mul_cancel_right +/- theorem submonoid.localization_map.mk'_one +/- theorem submonoid.localization_map.mk'_sec +/- theorem submonoid.localization_map.mul_equiv_of_localizations_apply + theorem submonoid.localization_map.mul_equiv_of_localizations_left_inv + theorem submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply + theorem submonoid.localization_map.mul_equiv_of_localizations_right_inv + theorem submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply +/- theorem submonoid.localization_map.mul_equiv_of_localizations_symm_apply + theorem submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations +/- theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map +/- theorem submonoid.localization_map.mul_equiv_of_mul_equiv_mk' - theorem submonoid.localization_map.mul_equiv_of_to_mul_equiv - theorem submonoid.localization_map.mul_equiv_of_to_mul_equiv_apply - def submonoid.localization_map.of_mul_equiv - theorem submonoid.localization_map.of_mul_equiv_eq - theorem submonoid.localization_map.of_mul_equiv_id + def submonoid.localization_map.of_mul_equiv_of_dom + theorem submonoid.localization_map.of_mul_equiv_of_dom_apply + theorem submonoid.localization_map.of_mul_equiv_of_dom_comp + theorem submonoid.localization_map.of_mul_equiv_of_dom_comp_symm + theorem submonoid.localization_map.of_mul_equiv_of_dom_eq + theorem submonoid.localization_map.of_mul_equiv_of_dom_id + def submonoid.localization_map.of_mul_equiv_of_localizations + theorem submonoid.localization_map.of_mul_equiv_of_localizations_apply + theorem submonoid.localization_map.of_mul_equiv_of_localizations_comp + theorem submonoid.localization_map.of_mul_equiv_of_localizations_eq + theorem submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq + theorem submonoid.localization_map.of_mul_equiv_of_localizations_id + theorem submonoid.localization_map.of_mul_equiv_of_mul_equiv + theorem submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply +/- theorem submonoid.localization_map.sec_spec' +/- theorem submonoid.localization_map.sec_spec + theorem submonoid.localization_map.surj + theorem submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' + theorem submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply - theorem submonoid.localization_map.symm_of_mul_equiv_apply - theorem submonoid.localization_map.symm_to_mul_equiv_apply - theorem submonoid.localization_map.to_fun_inj + def submonoid.localization_map.to_map + theorem submonoid.localization_map.to_map_injective - def submonoid.localization_map.to_mul_equiv - theorem submonoid.localization_map.to_mul_equiv_comp - theorem submonoid.localization_map.to_mul_equiv_eq - theorem submonoid.localization_map.to_mul_equiv_eq_iff_eq - theorem submonoid.localization_map.to_mul_equiv_id - theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv - theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_apply - theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_of_mul_equiv - theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_of_mul_equiv_apply +/- structure submonoid.localization_map 2020-05-16 17:50:21 a7b17cd feat(data/finset): remove uses of choice for infima (#2699) This PR removes the dependence of many lemmas about inf of finset sets on the axiom of choice. The motivation for this is to make `category_theory.limits.has_finite_limits_of_semilattice_inf_top` not depend on choice, which I would like so that I can prove independence results about topos models of set theory from the axiom of choice. This does make the decidable_classical linter fail. ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.inf_mono_fun +/- theorem finset.le_inf_iff +/- theorem finset.sup_mono_fun 2020-05-16 14:49:11 c81be77 feat(data/finset) Another finset disjointness lemma (#2698) I couldn't find this anywhere, and I wanted it. Naming question: this is "obviously" called `disjoint_filter`, except there's already a lemma with that name. I know I've broken one of the rules of using `simp` here ("don't do it at the beginning"), but this proof is much longer than I'd have thought would be necessary so I'm rather expecting someone to hop in with a one-liner. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.disjoint_filter_filter 2020-05-16 07:36:54 4b71428 doc(tactic/solve_by_elim): improve docs (#2696) ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/solve_by_elim.lean 2020-05-16 02:47:42 74286f5 feat(category_theory/limits/shapes): avoid choice for binary products (#2695) A tiny change to liberate binary products from the axiom of choice ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean 2020-05-15 21:05:48 1b85e3c chore(*): bump to lean-3.12.0 (#2681) ## Changes to bracket notation * `{a}` now requires an instance `has_singleton`; * `insert a ∅ = {a}` is called `insert_emptyc_eq`, provided by an `is_lawful_singleton` instance; * `a ∈ ({b} : set α)` is now defeq `a = b`, not `a = b ∨ false`; * `({a} : set α)` is no longer defeq `insert a ∅`; * `({a} : finset α)` now means `⟨⟨[a]⟩, _⟩` (used to be called `finset.singleton a`), not `insert a ∅`; * removed `finset.singleton`; * `{a, b}` is now `insert a {b}`, not `insert b {a}`. * `finset.univ : finset bool` is now `{tt, ff}`; * `(({a} : finset α) : set α)` is no longer defeq `{a}`. ## Tactic `norm_num` The interactive tactic `norm_num` was recently rewritten in Lean. The non-interactive `tactic.norm_num` has been removed in Lean 3.12 so that we can migrate the algebraic hierarchy to mathlib in 3.13. ## Tactic combinators https://github.com/leanprover-community/lean/pull/212 renames a bunch of tactic combinators. We change to using the new names. ## Tactic `case` https://github.com/leanprover-community/lean/pull/228 slightly changes the semantics of the `case` tactic. We fix the resulting breakage to be conform the new semantics. ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/big_operators.lean Modified src/algebra/classical_lie_algebras.lean Modified src/algebra/direct_limit.lean Modified src/algebra/direct_sum.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/convex/basic.lean +/- theorem finset.center_mass_singleton Modified src/analysis/special_functions/trigonometric.lean Modified src/computability/reduce.lean Modified src/computability/turing_machine.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/basic.lean +/- theorem equiv.apply_eq_iff_eq Modified src/data/equiv/mul_add.lean Modified src/data/fin_enum.lean Modified src/data/finmap.lean Modified src/data/finset.lean +/- theorem finset.card_eq_one +/- theorem finset.card_erase_le +/- theorem finset.card_erase_lt_of_mem +/- theorem finset.card_erase_of_mem +/- theorem finset.card_singleton +/- theorem finset.coe_singleton +/- theorem finset.fold_singleton +/- theorem finset.image_singleton - theorem finset.inf_singleton' +/- theorem finset.inf_singleton + theorem finset.infi_coe - theorem finset.insert_empty_eq_singleton - theorem finset.insert_singleton_self_eq' +/- theorem finset.insert_singleton_self_eq +/- theorem finset.inter_singleton_of_mem +/- theorem finset.inter_singleton_of_not_mem +/- theorem finset.map_singleton - theorem finset.max_singleton' +/- theorem finset.max_singleton +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_self - theorem finset.min_singleton' +/- theorem finset.min_singleton +/- theorem finset.ne_empty_of_mem + theorem finset.nonempty.ne_empty +/- theorem finset.not_mem_singleton +/- theorem finset.powerset_empty - def finset.singleton +/- theorem finset.singleton_bind - theorem finset.singleton_eq_singleton +/- theorem finset.singleton_iff_unique_mem +/- theorem finset.singleton_inj +/- theorem finset.singleton_inter_of_mem +/- theorem finset.singleton_inter_of_not_mem +/- theorem finset.singleton_ne_empty + theorem finset.singleton_nonempty + theorem finset.singleton_subset_set_iff +/- theorem finset.singleton_val - theorem finset.sup_singleton' +/- theorem finset.sup_singleton + theorem finset.supr_coe +/- theorem infi_eq_infi_finset +/- theorem option.to_finset_some +/- theorem supr_eq_supr_finset Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean +/- theorem fintype.univ_bool Modified src/data/fintype/card.lean Modified src/data/list/antidiagonal.lean Modified src/data/list/basic.lean +/- theorem list.doubleton_eq +/- theorem list.singleton_eq Modified src/data/list/nodup.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/basic.lean Modified src/data/nat/gcd.lean Modified src/data/num/lemmas.lean Modified src/data/pequiv.lean Modified src/data/polynomial.lean Modified src/data/set/basic.lean +/- theorem set.singleton_def +/- theorem set.singleton_nonempty Modified src/data/set/finite.lean Modified src/data/subtype.lean Modified src/field_theory/minimal_polynomial.lean Modified src/geometry/manifold/manifold.lean Modified src/geometry/manifold/real_instances.lean Modified src/group_theory/congruence.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/logic/embedding.lean Modified src/logic/function/basic.lean + theorem function.left_inverse.right_inverse + theorem function.left_inverse.surjective + theorem function.right_inverse.injective + theorem function.right_inverse.left_inverse Modified src/logic/relation.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/integration.lean Modified src/meta/coinductive_predicates.lean Modified src/order/bounds.lean Modified src/order/complete_lattice.lean Modified src/order/zorn.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/zfc.lean - theorem Set.mem_singleton' +/- theorem Set.mem_singleton Modified src/tactic/abel.lean Modified src/tactic/converter/apply_congr.lean Modified src/tactic/core.lean Modified src/tactic/derive_inhabited.lean Modified src/tactic/finish.lean Modified src/tactic/linarith.lean Modified src/tactic/mk_iff_of_inductive_prop.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/ring_exp.lean Modified src/tactic/slice.lean Modified src/tactic/tauto.lean Modified src/tactic/transport.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean Modified src/topology/maps.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.diam_insert Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-05-15 21:05:46 f5f7a3c feat(analysis/special_functions/exp_log): power series for log around 1 (#2646) This PR adds the power series expansion for the real logarithm around `1`, in the form ```lean has_sum (λ (n : ℕ), x ^ (n + 1) / (n + 1)) (-log (1 - x)) ``` ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem div_le_div Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/mean_value.lean +/- theorem convex.norm_image_sub_le_of_norm_deriv_le + theorem convex.norm_image_sub_le_of_norm_deriv_within_le + theorem convex.norm_image_sub_le_of_norm_fderiv_le + theorem convex.norm_image_sub_le_of_norm_fderiv_within_le + theorem convex.norm_image_sub_le_of_norm_has_deriv_within_le + theorem convex.norm_image_sub_le_of_norm_has_fderiv_within_le Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.norm_id_field' + theorem continuous_linear_map.norm_id_field Modified src/analysis/special_functions/exp_log.lean + theorem real.abs_log_sub_add_sum_range_le + theorem real.has_sum_pow_div_log_of_abs_lt_1 2020-05-15 18:16:25 14a82b3 fix(tactic/norm_num): div/mod with negative first arg (#2689) bugfix from https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/norm_num.20doesn't.20prove/near/197674516 ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2020-05-15 16:34:16 a4266a0 chore(scripts): update nolints.txt (#2690) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-15 13:15:27 471d29e perf(tactic/ring): use new norm_num, avoid mk_app (#2685) Remove `tactic.norm_num` from `ring`, and do some performance upgrades borrowed from the `norm_num` overhaul while I'm at it. ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified src/tactic/ring.lean +/- theorem tactic.ring.horner_pow + theorem tactic.ring.pow_succ Modified test/ring.lean 2020-05-15 07:57:55 b44fa3c chore(data/int/basic): mark cast_sub with simp attribute (#2687) I think the reason this didn't have the `simp` attribute already was from the time when `sub_eq_add_neg` was a `simp` lemma, so it wasn't necessary. I'm adding the `simp` attribute back now that `sub_eq_add_neg` is not a `simp` lemma. ESTIMATED CHANGES Modified src/data/int/basic.lean +/- theorem int.cast_sub 2020-05-15 04:51:31 f07ac36 feat(category_theory/limits/lattice): finite limits in a semilattice (#2665) Construct finite limits in a semilattice_inf_top category, and finite colimits in a semilattice_sup_bot category. ESTIMATED CHANGES Modified src/category_theory/limits/lattice.lean 2020-05-15 03:11:30 378aa0d feat(data/nat/choose): Sum a row of Pascal's triangle (#2684) Add the "sum of the nth row of Pascal's triangle" theorem. Naming is hard, of course, and this is my first PR to mathlib, so naming suggestions are welcome. Briefly discussed at https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/Candidate.20for.20inclusion.20in.20mathlib/near/197619403 . ESTIMATED CHANGES Modified src/data/nat/choose.lean + theorem sum_range_choose 2020-05-14 18:21:52 be03a3d chore(scripts): update nolints.txt (#2682) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-14 18:21:50 606be81 perf(tactic/ext): NEVER USE `user_attribute.get_param` (#2674) Refactor the extensionality attribute a bit so that it avoids `get_param`, which is a performance nightmare because it uses `eval_expr`. ```lean import all set_option profiler true example (f g : bool → bool → set bool) : f = g := by ext -- before: tactic execution took 2.19s -- after: tactic execution took 33ms ``` ESTIMATED CHANGES Modified src/tactic/ext.lean Modified src/tactic/lint/basic.lean Modified src/tactic/norm_cast.lean 2020-05-14 18:21:48 7427f8e feat(topology): a few properties of `tendsto _ _ (𝓤 α)` (#2645) - prove that `λ f g, tendsto (λ x, (f x, g x)) l (𝓤 α)` is an equivalence realtion; - in case of a metric space, restate this relation as `tendsto (λ x, dist (f x) (g x)) l (𝓝 0)`; - prove that `tendsto f l (𝓝 a) ↔ tendsto g l (𝓝 b)` provided that `tendsto (λ x, (f x, g x)) l (𝓤 α)`. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem filter.tendsto.congr_dist + theorem tendsto_iff_of_dist + theorem tendsto_uniformity_iff_dist_tendsto_zero Modified src/topology/uniform_space/basic.lean + theorem filter.tendsto.congr_uniformity + theorem filter.tendsto.uniformity_symm + theorem filter.tendsto.uniformity_trans + theorem tendsto_diag_uniformity + theorem uniform.tendsto_congr 2020-05-14 15:22:51 d412cfd chore(algebra/ring): lemmas about units in a semiring (#2680) The lemmas in non-localization files from #2675. (Apart from one, which wasn't relevant to #2675). (Edit: I am bad at git. I was hoping there would only be 1 commit here. I hope whatever I'm doing wrong is inconsequential...) ESTIMATED CHANGES Modified src/algebra/group/is_unit.lean + theorem is_unit.mul_left_inj + theorem is_unit.mul_right_inj Modified src/algebra/ring.lean + theorem is_unit.mul_left_eq_zero_iff_eq_zero + theorem is_unit.mul_right_eq_zero_iff_eq_zero + theorem units.mul_left_eq_zero_iff_eq_zero + theorem units.mul_right_eq_zero_iff_eq_zero 2020-05-14 11:14:27 03c272e chore(scripts): update nolints.txt (#2679) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-14 11:14:24 2871bd1 chore(logic/function): drop `function.uncurry'` (#2678) See [lean#161](https://github.com/leanprover-community/lean/pull/161/files#diff-42c23da308a4d5900f9f3244953701daR132) Also add `uniform_continuous.prod_map` and `uniform_continuous₂.bicompl` ESTIMATED CHANGES Modified src/logic/function/basic.lean - theorem function.curry_uncurry' - def function.uncurry' - theorem function.uncurry'_bicompr - theorem function.uncurry'_curry + theorem function.uncurry_bicompl Modified src/order/filter/extr.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/uniform_space/abstract_completion.lean +/- theorem abstract_completion.extension₂_coe_coe +/- theorem abstract_completion.uniform_continuous_map₂ Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous.prod_map + theorem uniform_continuous₂.bicompl + theorem uniform_continuous₂.uniform_continuous +/- def uniform_continuous₂ +/- theorem uniform_continuous₂_curry +/- theorem uniform_continuous₂_def Modified src/topology/uniform_space/completion.lean +/- theorem uniform_space.completion.extension₂_coe_coe +/- theorem uniform_space.completion.map₂_coe_coe +/- theorem uniform_space.completion.uniform_continuous_map₂ 2020-05-14 11:14:19 3da777a chore(linear_algebra/basis): use dot notation, simplify some proofs (#2671) ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean +/- theorem continuous_equiv_fun_basis + theorem continuous_linear_map.exists_right_inverse_of_surjective Modified src/linear_algebra/basis.lean +/- theorem constr_basis +/- theorem exists_is_basis - theorem exists_left_inverse_linear_map_of_injective - theorem exists_right_inverse_linear_map_of_surjective + theorem linear_independent.inl_union_inr + theorem linear_independent.ne_zero + theorem linear_independent.union - theorem linear_independent_inl_union_inr - theorem linear_independent_union + theorem linear_map.exists_left_inverse_of_injective + theorem linear_map.exists_right_inverse_of_surjective - theorem ne_zero_of_linear_independent Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean 2020-05-14 07:53:24 d0beb49 doc(*): move most docs to website, update links (#2676) The relaunched https://leanprover-community.github.io now contains copies of most of the doc files. This PR replaces the corresponding markdown files on mathlib with pointers to their new locations so that they only need to be maintained in one place. The two remaining markdown files are `docs/contribute/bors.md` and `docs/contribute/code-review.md`. Fixes #2168. ESTIMATED CHANGES Modified .github/CONTRIBUTING.md Modified README.md Modified archive/README.md Modified docs/contribute/doc.md Modified docs/contribute/index.md Modified docs/contribute/naming.md Modified docs/contribute/style.md Modified docs/extras.md Modified docs/extras/calc.md Modified docs/extras/conv.md Modified docs/extras/simp.md Modified docs/extras/tactic_writing.md Modified docs/extras/well_founded_recursion.md Modified docs/install/debian.md Modified docs/install/debian_details.md Deleted docs/install/extensions-icon.png Modified docs/install/linux.md Modified docs/install/macos.md Deleted docs/install/new-extensions-icon.png Modified docs/install/project.md Modified docs/install/windows.md Modified docs/mathlib-overview.md Modified docs/theories.md Modified docs/theories/category_theory.md Modified docs/theories/naturals.md Modified docs/theories/padics.md Modified docs/theories/sets.md Modified docs/theories/topology.md Modified src/tactic/doc_commands.lean Modified src/topology/basic.lean 2020-05-14 04:40:05 7077b58 chore(logic/function): move to `logic/function/basic` (#2677) Also add some docstrings. I'm going to add more `logic.function.*` files with theorems that can't go to `basic` because of imports. ESTIMATED CHANGES Modified src/algebra/group/basic.lean Modified src/algebra/group/units.lean Modified src/category_theory/fully_faithful.lean Modified src/control/bifunctor.lean Modified src/data/set/function.lean Renamed src/logic/function.lean to src/logic/function/basic.lean +/- theorem function.cantor_injective +/- theorem function.cantor_surjective Modified src/order/boolean_algebra.lean 2020-05-14 04:40:03 6ffb613 chore(algebra/free_monoid): add a custom `rec_on` (#2670) ESTIMATED CHANGES Modified src/algebra/free_monoid.lean +/- theorem free_monoid.mul_def + theorem free_monoid.of_def - theorem free_monoid.of_mul_eq_cons +/- theorem free_monoid.one_def + def free_monoid.rec_on Modified src/group_theory/submonoid.lean 2020-05-14 00:19:02 f7cb363 refactor(order/lattice): adjust proofs to avoid choice (#2666) For foundational category theoretic reasons, I'd like these lattice properties to avoid choice. In particular, I'd like the proof here: https://github.com/leanprover-community/mathlib/pull/2665 to be intuitionistic. For most of them it was very easy, eg changing `finish` to `simp`. For `sup_assoc` and `inf_assoc` it's a bit more complex though - for `inf_assoc` I wrote out a term mode proof, and for `sup_assoc` I used `ifinish`. I realise `ifinish` is deprecated because it isn't always intuitionistic, but in this case it did give an intuitionistic proof. I think both should be proved the same way, but I'm including one of each to see which is preferred. ESTIMATED CHANGES Modified src/order/lattice.lean +/- theorem inf_le_inf_left +/- theorem inf_le_inf_right 2020-05-13 18:31:18 fc0c025 refactor(scripts/mk_all): generate a single deterministic all.lean file (#2673) The current `mk_all.sh` script is non-deterministic, and creates invalid Lean code for the `data.matrix.notation` import. The generated `all.lean` files are also slow: they take two minutes to compile on my machine. The new script fixes all of that. The single generated `all.lean` file takes only 27 seconds to compile now. ESTIMATED CHANGES Modified scripts/mk_all.sh 2020-05-13 12:20:02 9f16f86 feat(topology/algebra/infinite_sum): sums on subtypes (#2659) For `f` a summable function defined on the integers, we prove the formula ``` (∑ i in range k, f i) + (∑' i, f (i + k)) = (∑' i, f i) ``` This is deduced from a general version on subtypes of the form `univ - s` where `s` is a finset. ESTIMATED CHANGES Modified src/data/finset.lean + theorem coe_not_mem_range_equiv + theorem coe_not_mem_range_equiv_symm + def not_mem_range_equiv Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_iff_tendsto_nat_of_summable + theorem has_sum_nat_add_iff' + theorem has_sum_nat_add_iff + theorem has_sum_subtype_iff' + theorem has_sum_subtype_iff + theorem has_sum_subtype_iff_of_eq_zero + theorem sum_add_tsum_nat_add + theorem sum_add_tsum_subtype + theorem summable_nat_add_iff + theorem summable_subtype_iff 2020-05-13 10:27:15 c9f2cbc chore(scripts): update nolints.txt (#2669) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-13 10:27:13 506a71f feat(category_theory): preadditive categories (#2663) [As discussed](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Lean.20in.20the.20wild/near/197168926), here is the pedestrian definition of preadditive categories. Hopefully, it is not here to stay, but it will allow me to start PRing abelian categories. ESTIMATED CHANGES Modified src/algebra/category/Group/default.lean Added src/algebra/category/Group/preadditive.lean Modified src/algebra/category/Group/zero.lean Modified src/algebra/category/Module/basic.lean Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.cofork.π_of_π + theorem category_theory.limits.fork.ι_of_ι Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/zero.lean - theorem category_theory.limits.zero_of_comp_epi +/- theorem category_theory.limits.zero_of_comp_mono + theorem category_theory.limits.zero_of_epi_comp Added src/category_theory/preadditive.lean + theorem category_theory.preadditive.comp_neg + theorem category_theory.preadditive.comp_sub + theorem category_theory.preadditive.epi_iff_cancel_zero + theorem category_theory.preadditive.epi_of_cancel_zero + def category_theory.preadditive.has_coequalizers_of_has_cokernels + def category_theory.preadditive.has_colimit_parallel_pair + def category_theory.preadditive.has_equalizers_of_has_kernels + def category_theory.preadditive.has_limit_parallel_pair + def category_theory.preadditive.left_comp + theorem category_theory.preadditive.mono_iff_cancel_zero + theorem category_theory.preadditive.mono_of_cancel_zero + theorem category_theory.preadditive.neg_comp + theorem category_theory.preadditive.neg_comp_neg + def category_theory.preadditive.right_comp + theorem category_theory.preadditive.sub_comp 2020-05-13 10:27:11 ce86d33 feat(analysis/calculus/(f)deriv): differentiability of a finite sum of functions (#2657) We show that, if each `f i` is differentiable, then `λ y, ∑ i in s, f i y` is also differentiable when `s` is a finset, and give the lemmas around this for `fderiv` and `deriv`. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.sum + theorem asymptotics.is_O_with.sum + theorem asymptotics.is_O_with_zero' +/- theorem asymptotics.is_O_with_zero +/- theorem asymptotics.is_O_zero + theorem asymptotics.is_o.sum Modified src/analysis/calculus/deriv.lean + theorem deriv_div_const + theorem deriv_sum + theorem deriv_within_div_const + theorem deriv_within_sum + theorem differentiable.div_const + theorem differentiable_at.div_const + theorem differentiable_on.div_const + theorem differentiable_within_at.div_const + theorem has_deriv_at.sum + theorem has_deriv_at_filter.sum + theorem has_deriv_within_at.has_fderiv_within_at + theorem has_deriv_within_at.sum + theorem has_strict_deriv_at.sum Modified src/analysis/calculus/fderiv.lean + theorem differentiable.sum + theorem differentiable_at.sum + theorem differentiable_on.sum + theorem differentiable_within_at.sum + theorem fderiv_sum + theorem fderiv_within_sum + theorem has_fderiv_at.sum + theorem has_fderiv_at_filter.sum + theorem has_fderiv_within_at.sum + theorem has_strict_fderiv_at.sum Modified src/topology/algebra/module.lean + theorem continuous_linear_map.sum_apply 2020-05-13 07:01:46 ed183f9 chore(group_theory/submonoid): use `complete_lattice_of_Inf` (#2661) * Use `complete_lattice_of_Inf` for `submonoid` and `subgroup` lattices. * Add `sub*.copy`. * Add a few `@[simp]` lemmas. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.to_fun_eq_coe Modified src/group_theory/bundled_subgroup.lean +/- theorem subgroup.closure_empty +/- theorem subgroup.closure_eq - theorem subgroup.coe_ssubset_coe + theorem subgroup.coe_to_submonoid Modified src/group_theory/submonoid.lean + theorem submonoid.coe_copy + theorem submonoid.coe_infi + def submonoid.copy + theorem submonoid.copy_eq +/- theorem submonoid.ext' + theorem submonoid.mem_carrier + theorem submonoid.mem_infi Modified src/order/bounds.lean + theorem is_glb.of_image + theorem is_lub.of_image Modified src/order/complete_lattice.lean + theorem is_glb_binfi + theorem is_lub_bsupr 2020-05-13 03:44:20 51e2b4c feat(topology/separation): add `subtype.t1_space` and `subtype.regular` (#2667) Also simplify the proof of `exists_open_singleton_of_fintype` ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.filter_ssubset Modified src/topology/separation.lean + theorem exists_open_singleton_of_open_finset 2020-05-13 03:44:18 4857284 feat(topology/bounded_continuous_function): the normed space C^0 (#2660) For β a normed (vector) space over a nondiscrete normed field 𝕜, we construct the normed 𝕜-space structure on the set of bounded continuous functions from a topological space into β. ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean +/- theorem bounded_continuous_function.dist_eq +/- theorem bounded_continuous_function.dist_set_exists + theorem bounded_continuous_function.norm_eq + theorem bounded_continuous_function.norm_smul + theorem bounded_continuous_function.norm_smul_le 2020-05-13 01:57:37 cbffb34 feat(analysis/specific_limits): more geometric series (#2658) Currently, the sum of a geometric series is only known for real numbers in `[0,1)`. We prove it for any element of a normed field with norm `< 1`, and specialize it to real numbers in `(-1, 1)`. Some lemmas in `analysis/specific_limits` are also moved around (but their content is not changed) to get a better organization of this file. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean + theorem filter.tendsto.div_const + theorem has_sum_iff_tendsto_nat_of_summable_norm Modified src/analysis/specific_limits.lean - theorem has_sum_geometric + theorem has_sum_geometric_of_abs_lt_1 + theorem has_sum_geometric_of_lt_1 + theorem has_sum_geometric_of_norm_lt_1 - theorem summable_geometric + theorem summable_geometric_of_abs_lt_1 + theorem summable_geometric_of_lt_1 + theorem summable_geometric_of_norm_lt_1 + theorem tendsto_pow_at_top_nhds_0_of_abs_lt_1 - theorem tendsto_pow_at_top_nhds_0_of_lt_1_normed_field + theorem tendsto_pow_at_top_nhds_0_of_norm_lt_1 - theorem tsum_geometric + theorem tsum_geometric_of_abs_lt_1 + theorem tsum_geometric_of_lt_1 + theorem tsum_geometric_of_norm_lt_1 Modified src/data/real/cardinality.lean 2020-05-12 18:35:33 437fdaf feat(category_theory/creates): creates limits => preserves limits (#2639) Show that `F` preserves limits if it creates them and the target category has them. ESTIMATED CHANGES Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.cocone_point_unique_up_to_iso - def category_theory.limits.is_colimit.cone_point_unique_up_to_iso Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/equalizers.lean 2020-05-12 15:37:33 1141533 feat(data/matrix): matrix and vector notation (#2656) This PR adds notation for matrices and vectors [as discussed on Zulip a couple of months ago](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Notation.20for.20matrices.20and.20vectors), so that `![![a, b], ![c, d]]` constructs a 2x2 matrix with rows `![a, b] : fin 2 -> α` and `![c, d]`. It also adds corresponding `simp` lemmas for all matrix operations defined in `data.matrix.basic`. These lemmas should apply only when the input already contains `![...]`. To express the `simp` lemmas nicely, I defined a function `dot_product : (v w : n -> α) -> α` which returns the sum of the entrywise product of two vectors. IMO, this makes the definitions of `matrix.mul`, `matrix.mul_vec` and `matrix.vec_mul` clearer, and it allows us to share some proofs. I could also inline `dot_product` (restoring the old situation) if the reviewers prefer. ESTIMATED CHANGES Modified src/data/matrix/basic.lean + theorem matrix.add_dot_product + theorem matrix.diagonal_dot_product + theorem matrix.diagonal_transpose + def matrix.dot_product + theorem matrix.dot_product_add + theorem matrix.dot_product_assoc + theorem matrix.dot_product_comm + theorem matrix.dot_product_diagonal' + theorem matrix.dot_product_diagonal + theorem matrix.dot_product_neg + theorem matrix.dot_product_punit + theorem matrix.dot_product_smul + theorem matrix.dot_product_zero' + theorem matrix.dot_product_zero + theorem matrix.mul_vec_neg + theorem matrix.neg_dot_product + theorem matrix.neg_mul_vec + theorem matrix.neg_vec_mul + theorem matrix.row_mul_col_val + theorem matrix.smul_dot_product + theorem matrix.vec_mul_neg + theorem matrix.zero_dot_product' + theorem matrix.zero_dot_product Added src/data/matrix/notation.lean + theorem matrix.add_cons + theorem matrix.col_cons + theorem matrix.col_empty + theorem matrix.cons_add + theorem matrix.cons_dot_product + theorem matrix.cons_eq_zero_iff + theorem matrix.cons_head_tail + theorem matrix.cons_mul + theorem matrix.cons_mul_vec + theorem matrix.cons_nonzero_iff + theorem matrix.cons_transpose + theorem matrix.cons_val' + theorem matrix.cons_val_fin_one + theorem matrix.cons_val_one + theorem matrix.cons_val_succ' + theorem matrix.cons_val_succ + theorem matrix.cons_val_zero' + theorem matrix.cons_val_zero + theorem matrix.cons_vec_mul + theorem matrix.cons_vec_mul_vec + theorem matrix.cons_zero_zero + theorem matrix.dot_product_cons + theorem matrix.dot_product_empty + theorem matrix.empty_add_empty + theorem matrix.empty_eq + theorem matrix.empty_mul + theorem matrix.empty_mul_empty + theorem matrix.empty_mul_vec + theorem matrix.empty_val' + theorem matrix.empty_vec_mul + theorem matrix.empty_vec_mul_vec + theorem matrix.head_cons + theorem matrix.head_transpose + theorem matrix.head_val' + theorem matrix.head_zero + theorem matrix.minor_cons_row + theorem matrix.minor_empty + theorem matrix.mul_empty + theorem matrix.mul_val_succ + theorem matrix.mul_vec_cons + theorem matrix.mul_vec_empty + theorem matrix.neg_cons + theorem matrix.neg_empty + theorem matrix.row_cons + theorem matrix.row_empty + theorem matrix.smul_cons + theorem matrix.smul_empty + theorem matrix.tail_cons + theorem matrix.tail_transpose + theorem matrix.tail_val' + theorem matrix.tail_zero + theorem matrix.transpose_empty_cols + theorem matrix.transpose_empty_rows + def matrix.vec_cons + def matrix.vec_empty + def matrix.vec_head + theorem matrix.vec_mul_cons + theorem matrix.vec_mul_empty + theorem matrix.vec_mul_vec_cons + theorem matrix.vec_mul_vec_empty + def matrix.vec_tail + theorem matrix.zero_empty Modified src/data/matrix/pequiv.lean Added test/matrix.lean 2020-05-12 15:37:31 34a0c8c chore(*): unify use of left and right for injectivity lemmas (#2655) This is the evil twin of #2652 using the opposite convention: the name of a lemma stating that a function in two arguments is injective in one of the arguments refers to the argument that changes. Example: ```lean lemma sub_right_inj : a - b = a - c ↔ b = c ``` See also the [Zulip discussion](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/pow_(left.7Cright)_inj(ective)). This PR renames lemmas following the other convention. The following lemmas were renamed: `algebra/group/basic.lean`: * `mul_left_injective` ↔ `mul_right_injective` * `mul_left_inj` ↔ `mul_right_inj` * `sub_left_inj` ↔ `sub_right_inj` `algebra/goup/units.lean`: * `mul_left_inj` ↔ `mul_right_inj` * `divp_right_inj` → `divp_left_inj` `algebra/group_power.lean`: * `pow_right_inj` → `pow_left_inj` `algebra/group_with_zero.lean`: * `div_right_inj'` → ` div_left_inj'` * `mul_right_inj'` → `mul_left_inj'` `algebra/ring.lean`: * `domain.mul_right_inj` ↔ `domain.mul_left_inj` `data/finsupp.lean`: * `single_right_inj` → `single_left_inj` `data/list/basic.lean`: * `append_inj_left` ↔ `append_inj_right` * `append_inj_left'` ↔ `append_inj_right'` * `append_left_inj` ↔ `append_right_inj` * `prefix_append_left_inj` → `prefix_append_right_inj` `data/nat/basic.lean`: * `mul_left_inj` ↔ `mul_right_inj` `data/real/ennreal.lean`: * `add_left_inj` ↔ `add_right_inj` * `sub_left_inj` → `sub_right_inj` `set_theory/ordinal.lean`: * `mul_left_inj` → `mul_right_inj` ESTIMATED CHANGES Modified docs/contribute/naming.md Modified src/algebra/associated.lean Modified src/algebra/char_p.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/gcd_domain.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/basic.lean +/- theorem mul_left_inj +/- theorem mul_left_injective +/- theorem mul_right_inj +/- theorem mul_right_injective +/- theorem sub_left_inj +/- theorem sub_right_inj Modified src/algebra/group/units.lean + theorem divp_left_inj - theorem divp_right_inj +/- theorem units.mul_left_inj +/- theorem units.mul_right_inj Modified src/algebra/group_power.lean + theorem pow_left_inj - theorem pow_right_inj Modified src/algebra/group_with_zero.lean + theorem div_left_inj' - theorem div_right_inj' + theorem mul_left_inj' - theorem mul_right_inj' Modified src/algebra/ring.lean +/- theorem domain.mul_left_inj +/- theorem domain.mul_right_inj Modified src/analysis/convex/basic.lean Modified src/analysis/special_functions/trigonometric.lean Modified src/combinatorics/composition.lean Modified src/data/complex/exponential.lean Modified src/data/finsupp.lean + theorem finsupp.single_left_inj - theorem finsupp.single_right_inj Modified src/data/fintype/basic.lean Modified src/data/list/basic.lean +/- theorem list.append_inj_left' +/- theorem list.append_inj_left +/- theorem list.append_inj_right' +/- theorem list.append_inj_right +/- theorem list.append_left_inj +/- theorem list.append_right_inj - theorem list.prefix_append_left_inj + theorem list.prefix_append_right_inj Modified src/data/nat/basic.lean Modified src/data/nat/modeq.lean Modified src/data/nat/prime.lean Modified src/data/nat/totient.lean Modified src/data/pnat/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.add_left_inj +/- theorem ennreal.add_right_inj - theorem ennreal.sub_left_inj + theorem ennreal.sub_right_inj Modified src/field_theory/finite.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/determinant.lean Modified src/measure_theory/integration.lean Modified src/number_theory/quadratic_reciprocity.lean Modified src/number_theory/sum_four_squares.lean Modified src/ring_theory/integral_domain.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/set_theory/game/domineering.lean Modified src/set_theory/ordinal.lean - theorem ordinal.mul_left_inj + theorem ordinal.mul_right_inj Modified src/tactic/omega/eq_elim.lean Modified src/topology/algebra/infinite_sum.lean 2020-05-12 15:37:29 77b3d50 chore(topology/instances/ennreal): add +1 version of `tsum_eq_supr_sum` (#2633) Also add a few lemmas about `supr` and monotone functions. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.sum_mono_set + theorem finset.sum_mono_set_of_nonneg Modified src/measure_theory/integration.lean Modified src/order/complete_lattice.lean + theorem le_infi_comp + theorem monotone.infi_comp_eq + theorem monotone.le_map_supr2 + theorem monotone.le_map_supr - theorem monotone.map_supr2_ge - theorem monotone.map_supr_ge + theorem monotone.supr_comp_eq + theorem supr_comp_le Modified src/topology/instances/ennreal.lean 2020-05-12 15:37:27 ff184e6 feat(analysis/normed_space): add Mazur-Ulam theorem (#2214) Based on a proof by Jussi Väisälä, see [journal version](https://www.jstor.org/stable/3647749) or [preprint on web.archive](https://web.archive.org/web/20180516125105/http://www.helsinki.fi/~jvaisala/mazurulam.pdf). Also rename `reflection` to `point_reflection` as was suggested by @rwbarton and @PatrickMassot ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/midpoint.lean + theorem equiv.point_reflection_midpoint_left + theorem equiv.point_reflection_midpoint_right - theorem equiv.reflection_midpoint_left - theorem equiv.reflection_midpoint_right Added src/analysis/normed_space/mazur_ulam.lean + theorem isometric.coe_to_real_linear_equiv_of_map_zero + theorem isometric.coe_to_real_linear_equiv_of_map_zero_symm + theorem isometric.map_midpoint + theorem isometric.midpoint_fixed + def isometric.to_real_linear_equiv + theorem isometric.to_real_linear_equiv_apply + def isometric.to_real_linear_equiv_of_map_zero + theorem isometric.to_real_linear_equiv_symm_apply Added src/analysis/normed_space/point_reflection.lean + theorem equiv.point_reflection_fixed_iff_of_module + def isometric.point_reflection + theorem isometric.point_reflection_apply + theorem isometric.point_reflection_dist_fixed + theorem isometric.point_reflection_dist_self' + theorem isometric.point_reflection_dist_self + theorem isometric.point_reflection_dist_self_real + theorem isometric.point_reflection_fixed_iff + theorem isometric.point_reflection_involutive + theorem isometric.point_reflection_midpoint_left + theorem isometric.point_reflection_midpoint_right + theorem isometric.point_reflection_self + theorem isometric.point_reflection_symm + theorem isometric.point_reflection_to_equiv Modified src/analysis/normed_space/real_inner_product.lean Deleted src/analysis/normed_space/reflection.lean - theorem equiv.reflection_fixed_iff_of_module - def isometric.reflection - theorem isometric.reflection_apply - theorem isometric.reflection_dist_fixed - theorem isometric.reflection_dist_self' - theorem isometric.reflection_dist_self - theorem isometric.reflection_dist_self_real - theorem isometric.reflection_fixed_iff - theorem isometric.reflection_involutive - theorem isometric.reflection_midpoint_left - theorem isometric.reflection_midpoint_right - theorem isometric.reflection_self - theorem isometric.reflection_symm - theorem isometric.reflection_to_equiv Modified src/data/equiv/mul_add.lean + def equiv.point_reflection + theorem equiv.point_reflection_apply + theorem equiv.point_reflection_fixed_iff_of_bit0_inj + theorem equiv.point_reflection_involutive + theorem equiv.point_reflection_self + theorem equiv.point_reflection_symm - def equiv.reflection - theorem equiv.reflection_apply - theorem equiv.reflection_fixed_iff_of_bit0_inj - theorem equiv.reflection_involutive - theorem equiv.reflection_self - theorem equiv.reflection_symm Modified src/order/conditionally_complete_lattice.lean +/- theorem cinfi_le +/- theorem le_csupr Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean + theorem isometric.add_left_symm + theorem isometric.add_left_to_equiv + theorem isometric.add_right_apply + theorem isometric.add_right_symm + theorem isometric.add_right_to_equiv + theorem isometric.coe_add_left + theorem isometric.coe_add_right + theorem isometric.coe_neg + theorem isometric.neg_symm + theorem isometric.neg_to_equiv + theorem isometric.symm_symm + theorem isometric.symm_trans_apply 2020-05-12 13:39:55 3f216bc feat(number_theory/basic): dvd_sub_pow_of_dvd_sub (#2640) Co-authored with: Kenny Lau ESTIMATED CHANGES Modified src/algebra/geom_sum.lean + theorem geom_series₂_self + theorem ring_hom.map_geom_series + theorem ring_hom.map_geom_series₂ Added src/number_theory/basic.lean + theorem dvd_sub_pow_of_dvd_sub Modified src/ring_theory/ideals.lean + theorem ideal.quotient.mk_eq_mk_hom 2020-05-12 11:31:31 61b59ec fix(order/filter/basic): markdown error in module doc (#2664) ESTIMATED CHANGES Modified src/order/filter/basic.lean 2020-05-12 06:37:08 295b87e feat(ring_theory/integral_domain): sum in integral domain indexed by finite group (#2623) In other words: nontrivial sums are trivial Moved from `field_theory.finite` to the new `ring_theory.integral_domain`: - `card_nth_roots_subgroup_units` - `subgroup_units_cyclic` ESTIMATED CHANGES Modified src/algebra/group/units_hom.lean + theorem monoid_hom.coe_to_hom_units + def monoid_hom.to_hom_units Modified src/data/fintype/card.lean + theorem finset.prod_subtype Modified src/field_theory/finite.lean - theorem card_nth_roots_subgroup_units Modified src/group_theory/order_of_element.lean + theorem is_cyclic.exists_monoid_generator Added src/ring_theory/integral_domain.lean + theorem card_fiber_eq_of_mem_range + theorem card_nth_roots_subgroup_units + theorem sum_hom_units + theorem sum_hom_units_eq_zero 2020-05-12 05:22:17 f0e7817 chore(scripts): update nolints.txt (#2662) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-12 01:24:40 8c88721 feat(data/list): assorted lemmas (#2651) Some lemmas I found useful for #2578 ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.cons_head'_tail + theorem list.head_mem_head' + theorem list.ilast_eq_last' + theorem list.init_append_last' + theorem list.is_nil_iff_eq_nil + theorem list.last'_append_cons + theorem list.last'_append_of_ne_nil + theorem list.last'_is_none + theorem list.last'_is_some +/- theorem list.last_cons + theorem list.last_mem + theorem list.mem_last'_eq_last + theorem list.mem_of_mem_head' + theorem list.mem_of_mem_last' + theorem list.prod_eq_foldr Modified src/data/list/chain.lean + theorem list.chain'.append + theorem list.chain'.cons' + theorem list.chain'.imp_head + theorem list.chain'.rel_head' + theorem list.chain'.rel_head + theorem list.chain'_cons' Modified src/data/list/defs.lean 2020-05-11 13:23:56 eb9e382 test(tactic/norm_num): import tests from lean core (#2654) ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2020-05-11 11:46:09 a87f326 chore(scripts): update nolints.txt (#2653) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-11 09:42:50 e777d0b refactor(data/real/pi): add tactics for pi computation (#2641) Depends on #2589. Moves pi bounds from @fpvandoorn's gist to mathlib, and also adds a small tactic to uniformize the proofs (and also skip some unsqueezed proofs), making the compilation even faster (just around 1 second for the longest proofs). ESTIMATED CHANGES Modified src/data/real/pi.lean + theorem real.pi_gt_3141592 + theorem real.pi_gt_31415 +/- theorem real.pi_gt_314 +/- theorem real.pi_gt_three + theorem real.pi_lower_bound_start + theorem real.pi_lt_3141593 + theorem real.pi_lt_31416 +/- theorem real.pi_lt_315 + theorem real.pi_upper_bound_start +/- theorem real.sqrt_two_add_series_step_down +/- theorem real.sqrt_two_add_series_step_up 2020-05-11 06:32:55 ff37fb8 feat(algebra/ring): monoid structure on `R →+* R` (#2649) Also add `comp_id` and `id_comp` ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem ring_hom.coe_pow Modified src/algebra/ring.lean + theorem ring_hom.coe_mul + theorem ring_hom.coe_one + theorem ring_hom.comp_id + theorem ring_hom.id_comp +/- def ring_hom.mk' + theorem ring_hom.mul_def + theorem ring_hom.one_def 2020-05-11 03:53:42 7146082 refactor(data/fintype/basic): weaken assumptions of set.fintype (#2650) ESTIMATED CHANGES Modified src/data/fintype/basic.lean 2020-05-10 20:24:02 b9bdc67 feat(*): prove some `*.iterate` theorems (#2647) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/order/basic.lean + theorem strict_mono_id Modified src/topology/algebra/module.lean + theorem continuous_linear_map.coe_mul +/- theorem continuous_linear_map.mul_apply + theorem continuous_linear_map.mul_def + theorem continuous_linear_map.smul_right_one_pow Modified src/topology/basic.lean + theorem continuous.iterate + theorem continuous_at.iterate 2020-05-10 17:09:22 8c6b14e fix(library_search): use custom apply tactic for the main goal, as well as subgoals (#2648) cf https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/List.20lemmas ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean + theorem test.library_search.bind_singleton 2020-05-10 07:14:07 3710744 feat(meta/uchange): universe lifting and lowering in meta (#2627) We define the meta type `uchange (α : Type v) : Type u`, which permits us to change the universe of a type analogously to `ulift`. However since `uchange` is meta, it can both lift and lower the universe. As requested on Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/widget/near/196808542 ESTIMATED CHANGES Added src/meta/uchange.lean 2020-05-10 04:05:15 b248481 chore(algebra/char_zero): add `∀ n : ℕ, (n + 1 : α) ≠ 0` (#2644) ESTIMATED CHANGES Modified src/algebra/char_zero.lean + theorem nat.cast_add_one_ne_zero 2020-05-10 04:05:14 7590090 chore(scripts): update nolints.txt (#2643) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-10 00:45:41 81f97bd chore(*): move to lean-3.11.0 (#2632) Related Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/lean.23211.20don't.20unfold.20irred.20defs ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/opposites.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/opposites.lean Modified src/category_theory/yoneda.lean Modified src/data/array/lemmas.lean Modified src/data/complex/basic.lean Modified src/data/padics/padic_norm.lean Modified src/data/pfun.lean Modified src/data/polynomial.lean +/- def polynomial.pow_sub_pow_factor Modified src/data/real/hyperreal.lean +/- theorem hyperreal.infinitesimal_add +/- theorem hyperreal.infinitesimal_mul +/- theorem hyperreal.infinitesimal_neg Modified src/geometry/manifold/real_instances.lean Modified src/measure_theory/bochner_integration.lean Modified src/set_theory/cofinality.lean Modified src/topology/metric_space/emetric_space.lean 2020-05-09 23:30:16 a584d52 chore(scripts): update nolints.txt (#2642) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-09 20:30:31 9f33b7d feat(algebra/ordered_*): arithmetic operations on monotone functions (#2634) Also move `strict_mono` to `order/basic` and add a module docstring. ESTIMATED CHANGES Modified src/algebra/order_functions.lean - theorem monotone_mul_left_of_nonneg - theorem monotone_mul_right_of_nonneg - theorem strict_mono.compares - theorem strict_mono.injective - theorem strict_mono.le_iff_le - theorem strict_mono.lt_iff_lt - theorem strict_mono.monotone - def strict_mono - theorem strict_mono_of_monotone_of_injective Modified src/algebra/ordered_field.lean + theorem monotone.div_const + theorem strict_mono.div_const Modified src/algebra/ordered_group.lean + theorem monotone.add + theorem monotone.add_const + theorem monotone.add_strict_mono + theorem monotone.const_add + theorem strict_mono.add_monotone Modified src/algebra/ordered_ring.lean + theorem monotone.const_mul + theorem monotone.mul + theorem monotone.mul_const + theorem monotone.mul_strict_mono + theorem monotone_mul_left_of_nonneg + theorem monotone_mul_right_of_nonneg + theorem strict_mono.const_mul + theorem strict_mono.mul + theorem strict_mono.mul_const + theorem strict_mono.mul_monotone + theorem strict_mono_mul_left_of_pos + theorem strict_mono_mul_right_of_pos Modified src/order/basic.lean + theorem strict_mono.comp + theorem strict_mono.compares + theorem strict_mono.injective + theorem strict_mono.le_iff_le + theorem strict_mono.lt_iff_lt + theorem strict_mono.monotone + def strict_mono + theorem strict_mono_of_monotone_of_injective 2020-05-09 20:30:29 d04429f chore(logic/embedding,order/order_iso): review (#2618) * swap `inj` with `inj'` to match other bundled homomorphisms; * make some arguments explicit to avoid `embedding.of_surjective _` in the pretty printer output; * make `set_value` computable. ESTIMATED CHANGES Modified src/computability/turing_machine.lean Modified src/data/finset.lean Modified src/data/finsupp.lean Modified src/data/pnat/intervals.lean Modified src/data/set/countable.lean Modified src/data/setoid.lean Modified src/group_theory/congruence.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/dimension.lean Modified src/logic/embedding.lean + theorem function.embedding.coe_image - theorem function.embedding.inj' + theorem function.embedding.inj + def function.embedding.set_value +/- theorem function.embedding.set_value_eq + theorem set.coe_embedding_of_subset_apply +/- def set.embedding_of_subset + theorem set.embedding_of_subset_apply_mk Modified src/order/galois_connection.lean Modified src/order/order_iso.lean + theorem order_embedding.inj - theorem order_embedding.ord' + theorem order_embedding.ord - theorem order_iso.ord' + theorem order_iso.ord + theorem order_iso.to_order_embedding_eq_coe Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean 2020-05-09 20:30:27 08d4316 refactor(computability/turing_machine): add list_blank (#2605) This ended up being a major refactor of `computability.turing_machine`. It started as a change of the definition of turing machine so that the tape is a quotient of lists up to the relation "ends with blanks", but the file is quite old and I updated it to pass the linter as well. I'm not up to speed on the new documentation requirements, but now is a good time to request them for this file. This doesn't add many new theorems, it's mostly just fixes to make it compile again after the change. (Some of the turing machine constructions are also simplified.) ESTIMATED CHANGES Modified src/computability/turing_machine.lean +/- def turing.TM0.cfg.map +/- def turing.TM0.eval +/- theorem turing.TM0.machine.map_respects +/- theorem turing.TM0.machine.map_step +/- theorem turing.TM0.map_init +/- def turing.TM0.stmt.map +/- def turing.TM1.eval +/- def turing.TM1to1.tr_tape' +/- def turing.TM1to1.tr_tape - theorem turing.TM1to1.tr_tape_drop_right + theorem turing.TM1to1.tr_tape_mk' - theorem turing.TM1to1.tr_tape_take_right + def turing.TM2to1.add_bottom + theorem turing.TM2to1.add_bottom_head_fst + theorem turing.TM2to1.add_bottom_map + theorem turing.TM2to1.add_bottom_modify_nth + theorem turing.TM2to1.add_bottom_nth_snd + theorem turing.TM2to1.add_bottom_nth_succ_fst - def turing.TM2to1.stackel.get - def turing.TM2to1.stackel.is_bottom - def turing.TM2to1.stackel.is_top - inductive turing.TM2to1.stackel - def turing.TM2to1.stackel_equiv + theorem turing.TM2to1.stk_nth_val +/- theorem turing.TM2to1.supports_run +/- theorem turing.TM2to1.tr_normal_run +/- theorem turing.TM2to1.tr_respects_aux₁ +/- theorem turing.TM2to1.tr_respects_aux₃ - def turing.TM2to1.tr_stk +/- theorem turing.TM2to1.tr_stmts₁_run +/- def turing.TM2to1.Γ' + def turing.blank_extends.above + theorem turing.blank_extends.above_of_le + theorem turing.blank_extends.below_of_le + theorem turing.blank_extends.refl + theorem turing.blank_extends.trans + def turing.blank_extends + def turing.blank_rel.above + def turing.blank_rel.below + theorem turing.blank_rel.equivalence + theorem turing.blank_rel.refl + def turing.blank_rel.setoid + theorem turing.blank_rel.symm + theorem turing.blank_rel.trans + def turing.blank_rel - def turing.dwrite - theorem turing.dwrite_eq - theorem turing.dwrite_ne - theorem turing.dwrite_self + def turing.list_blank.append + theorem turing.list_blank.append_assoc + theorem turing.list_blank.append_mk + def turing.list_blank.bind + theorem turing.list_blank.bind_mk + def turing.list_blank.cons + theorem turing.list_blank.cons_bind + theorem turing.list_blank.cons_head_tail + theorem turing.list_blank.cons_mk + theorem turing.list_blank.exists_cons + theorem turing.list_blank.ext + def turing.list_blank.head + theorem turing.list_blank.head_cons + theorem turing.list_blank.head_map + theorem turing.list_blank.head_mk + def turing.list_blank.map + theorem turing.list_blank.map_cons + theorem turing.list_blank.map_mk + theorem turing.list_blank.map_modify_nth + def turing.list_blank.mk + def turing.list_blank.modify_nth + def turing.list_blank.nth + theorem turing.list_blank.nth_map + theorem turing.list_blank.nth_mk + theorem turing.list_blank.nth_modify_nth + theorem turing.list_blank.nth_succ + theorem turing.list_blank.nth_zero + def turing.list_blank.tail + theorem turing.list_blank.tail_cons + theorem turing.list_blank.tail_map + theorem turing.list_blank.tail_mk + def turing.list_blank + theorem turing.pointed_map.head_map + theorem turing.pointed_map.map_pt + theorem turing.pointed_map.mk_val - def turing.pointed_map + def turing.proj + theorem turing.proj_map_nth + theorem turing.tape.exists_mk' + def turing.tape.left₀ +/- def turing.tape.map +/- theorem turing.tape.map_fst + theorem turing.tape.map_mk' - theorem turing.tape.map_mk + theorem turing.tape.map_mk₁ + theorem turing.tape.map_mk₂ +/- theorem turing.tape.map_write +/- def turing.tape.mk' + theorem turing.tape.mk'_head + theorem turing.tape.mk'_left + theorem turing.tape.mk'_left_right₀ + theorem turing.tape.mk'_nth_nat + theorem turing.tape.mk'_right + theorem turing.tape.mk'_right₀ - def turing.tape.mk + def turing.tape.mk₁ + def turing.tape.mk₂ + theorem turing.tape.move_left_mk' + theorem turing.tape.move_left_right + theorem turing.tape.move_right_left + theorem turing.tape.move_right_mk' + theorem turing.tape.move_right_n_head +/- theorem turing.tape.move_right_nth +/- def turing.tape.nth +/- theorem turing.tape.nth_zero + def turing.tape.right₀ + theorem turing.tape.right₀_nth +/- def turing.tape.write + theorem turing.tape.write_mk' + theorem turing.tape.write_move_right_n +/- theorem turing.tape.write_self + structure turing.tape - def turing.tape + structure turing.{u Modified src/data/list/basic.lean + theorem list.head'_map - theorem list.nth_concat_length: + theorem list.nth_concat_length Modified src/data/nat/basic.lean + theorem nat.add_sub_eq_max 2020-05-09 20:30:25 b769846 feat(tactic/norm_num): new all-lean norm_num (#2589) This is a first draft of the lean replacement for `tactic.norm_num` in core. This isn't completely polished yet; the rest of `norm_num` can now be a little less "global-recursive" since the primitives for e.g. adding and multiplying natural numbers are exposed. I'm also trying out a new approach using functions like `match_neg` and `match_numeral` instead of directly pattern matching on exprs, because this generates smaller (and hopefully more efficient) code. (Without this, some of the matches were hitting the equation compiler depth limit.) I'm open to new feature suggestions as well here. `nat.succ` and coercions seem useful to support in the core part, and additional flexibility using `def_replacer` is also on the agenda. ESTIMATED CHANGES Modified src/analysis/specific_limits.lean Modified src/data/rat/meta_defs.lean Modified src/tactic/core.lean Modified src/tactic/norm_num.lean + theorem norm_num.adc_bit0_bit0 + theorem norm_num.adc_bit0_bit1 + theorem norm_num.adc_bit0_one + theorem norm_num.adc_bit1_bit0 + theorem norm_num.adc_bit1_bit1 + theorem norm_num.adc_bit1_one + theorem norm_num.adc_one_bit0 + theorem norm_num.adc_one_bit1 + theorem norm_num.adc_one_one + theorem norm_num.adc_zero + theorem norm_num.add_bit0_bit0 + theorem norm_num.add_bit0_bit1 + theorem norm_num.add_bit1_bit0 + theorem norm_num.add_bit1_bit1 + theorem norm_num.add_neg_neg + theorem norm_num.add_neg_pos_neg + theorem norm_num.add_neg_pos_pos + theorem norm_num.add_pos_neg_neg + theorem norm_num.add_pos_neg_pos + theorem norm_num.bit0_mul + theorem norm_num.bit0_succ - theorem norm_num.bit0_zero + theorem norm_num.bit1_succ - theorem norm_num.bit1_zero + theorem norm_num.clear_denom_add + theorem norm_num.clear_denom_div + theorem norm_num.clear_denom_le + theorem norm_num.clear_denom_lt + theorem norm_num.clear_denom_mul + theorem norm_num.clear_denom_simple_div + theorem norm_num.clear_denom_simple_nat + theorem norm_num.div_eq + theorem norm_num.dvd_eq_int + theorem norm_num.dvd_eq_nat + theorem norm_num.from_nat_pow + theorem norm_num.int_cast_bit0 + theorem norm_num.int_cast_bit1 + theorem norm_num.int_cast_ne + theorem norm_num.int_cast_neg + theorem norm_num.int_cast_one + theorem norm_num.int_cast_zero + theorem norm_num.int_div - theorem norm_num.int_div_helper + theorem norm_num.int_div_neg + theorem norm_num.int_mod - theorem norm_num.int_mod_helper + theorem norm_num.int_mod_neg + theorem norm_num.inv_div + theorem norm_num.inv_div_one + theorem norm_num.inv_neg + theorem norm_num.inv_one + theorem norm_num.inv_one_div + theorem norm_num.le_bit0_bit0 + theorem norm_num.le_bit0_bit1 + theorem norm_num.le_bit1_bit0 + theorem norm_num.le_bit1_bit1 + theorem norm_num.le_neg_pos + theorem norm_num.le_one_bit0 + theorem norm_num.le_one_bit1 - theorem norm_num.lt_add_of_pos_helper + theorem norm_num.lt_bit0_bit0 + theorem norm_num.lt_bit0_bit1 + theorem norm_num.lt_bit1_bit0 + theorem norm_num.lt_bit1_bit1 + theorem norm_num.lt_neg_pos + theorem norm_num.lt_one_bit0 + theorem norm_num.lt_one_bit1 +/- theorem norm_num.min_fac_helper_3 +/- theorem norm_num.min_fac_helper_4 + theorem norm_num.mul_bit0' + theorem norm_num.mul_bit0_bit0 + theorem norm_num.mul_bit1_bit1 + theorem norm_num.mul_neg_neg + theorem norm_num.mul_neg_pos + theorem norm_num.mul_pos_neg + theorem norm_num.nat_cast_bit0 + theorem norm_num.nat_cast_bit1 + theorem norm_num.nat_cast_ne + theorem norm_num.nat_cast_one + theorem norm_num.nat_cast_zero + theorem norm_num.nat_div - theorem norm_num.nat_div_helper + theorem norm_num.nat_mod - theorem norm_num.nat_mod_helper + theorem norm_num.nat_succ_eq + theorem norm_num.ne_zero_neg + theorem norm_num.ne_zero_of_pos + theorem norm_num.nonneg_pos + theorem norm_num.not_refl_false_intro + theorem norm_num.one_add + theorem norm_num.one_succ + theorem norm_num.pow_bit0 - theorem norm_num.pow_bit0_helper + theorem norm_num.pow_bit1 - theorem norm_num.pow_bit1_helper + theorem norm_num.rat_cast_bit0 + theorem norm_num.rat_cast_bit1 + theorem norm_num.rat_cast_div + theorem norm_num.rat_cast_ne + theorem norm_num.rat_cast_neg + theorem norm_num.sle_bit0_bit0 + theorem norm_num.sle_bit0_bit1 + theorem norm_num.sle_bit1_bit0 + theorem norm_num.sle_bit1_bit1 + theorem norm_num.sle_one_bit0 + theorem norm_num.sle_one_bit1 + theorem norm_num.sub_nat_neg + theorem norm_num.sub_nat_pos + theorem norm_num.sub_neg + theorem norm_num.sub_pos + theorem norm_num.zero_adc + theorem norm_num.zero_succ Modified test/norm_num.lean 2020-05-09 17:40:41 20c7418 chore(data/finset): drop `to_set`, use `has_lift` instead (#2629) Also cleanup `coe_to_finset` lemmas. Now we have `set.finite.coe_to_finset` and `set.coe_to_finset`. ESTIMATED CHANGES Modified src/algebra/direct_sum.lean Modified src/data/finset.lean + theorem finset.coe_injective - def finset.to_set - theorem finset.to_set_injective - theorem finset.to_set_sdiff Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean + theorem set.coe_to_finset Modified src/data/set/finite.lean +/- theorem finset.coe_preimage - theorem finset.coe_to_finset' - theorem finset.coe_to_finset +/- theorem set.finite.coe_to_finset Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/ordinal.lean 2020-05-09 14:34:49 e1192f3 feat(data/nat/basic): add `mod_add_mod` and `add_mod_mod` (#2635) Added the `mod_add_mod` and `add_mod_mod` lemmas for `data.nat.basic`. I copied them from `data.int.basic`, and just changed the data type. Would there be issues with it being labelled `@[simp]`? Also, would it make sense to refactor `add_mod` above it to use `mod_add_mod` and `add_mod_mod`? It'd make it considerably shorter. (Tangential note, there's a disparity between the `mod` lemmas for `nat` and the `mod` lemmas for `int`, for example `int` doesn't have `add_mod`, should that be added in a separate PR?) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.add_mod + theorem int.mul_mod Modified src/data/nat/basic.lean + theorem nat.add_mod_eq_add_mod_left + theorem nat.add_mod_eq_add_mod_right + theorem nat.add_mod_mod + theorem nat.mod_add_mod 2020-05-09 08:33:21 96efc22 feat(data/nat/cast): nat.cast_with_bot (#2636) As requested on Zulip: https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/with_bot/near/196979007 ESTIMATED CHANGES Modified src/data/nat/cast.lean + theorem nat.cast_with_bot 2020-05-08 21:01:31 67e19cd feat(src/ring_theory/algebra): define equivalence of algebras (#2625) ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + theorem alg_equiv.apply_symm_apply + theorem alg_equiv.bijective + theorem alg_equiv.coe_ring_equiv + theorem alg_equiv.coe_to_alg_equiv + theorem alg_equiv.commutes + theorem alg_equiv.injective + theorem alg_equiv.map_add + theorem alg_equiv.map_mul + theorem alg_equiv.map_neg + theorem alg_equiv.map_one + theorem alg_equiv.map_sub + theorem alg_equiv.map_zero + def alg_equiv.refl + theorem alg_equiv.surjective + def alg_equiv.symm + theorem alg_equiv.symm_apply_apply + def alg_equiv.trans + structure alg_equiv 2020-05-08 16:39:26 fc8c4b9 chore(`analysis/normed_space/banach`): minor review (#2631) * move comment to module docstring; * don't import `bounded_linear_maps`; * reuse `open_mapping` in `linear_equiv.continuous_symm`; * add a few `simp` lemmas. ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean + theorem linear_equiv.coe_fn_to_continuous_linear_equiv_of_continuous + theorem linear_equiv.coe_fn_to_continuous_linear_equiv_of_continuous_symm +/- theorem linear_equiv.continuous_symm +/- def linear_equiv.to_continuous_linear_equiv_of_continuous 2020-05-08 01:30:44 ac3fb4e chore(scripts): update nolints.txt (#2628) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-07 22:43:02 a7e8039 feat(data/equiv/encodable): `ulower` lowers countable types to `Type 0` (#2574) Given a type `α : Type u`, we can lift it into a higher universe using `ulift α : Type (max u v)`. This PR introduces an analogous construction going in the other direction. Given an encodable (= countable) type `α : Type u`, we can lower it to the very bottom using `ulower α : Type 0`. The equivalence is primitive recursive if the type is primcodable. The definition of the equivalence was already present as `encodable.equiv_range_encode`. However it is very inconvenient to use since it requires decidability instances (`encodable.decidable_range_encode`) that are not enabled by default because they would introduce overlapping instances that are not definitionally equal. ESTIMATED CHANGES Modified src/computability/primrec.lean + theorem primrec.option_get + theorem primrec.option_get_or_else + theorem primrec.subtype_mk + theorem primrec.ulower_down + theorem primrec.ulower_up Modified src/data/equiv/encodable.lean + theorem encodable.subtype.encode_eq + def ulower.down + theorem ulower.down_eq_down + theorem ulower.down_up + def ulower.equiv + def ulower.up + theorem ulower.up_down + theorem ulower.up_eq_up + def ulower 2020-05-07 21:02:37 ed453c7 chore(data/polynomial): remove unused argument (#2626) ESTIMATED CHANGES Modified src/data/polynomial.lean +/- theorem polynomial.map_injective 2020-05-07 18:46:03 bdce195 chore(linear_algebra/basic): review (#2616) * several new `simp` lemmas; * use `linear_equiv.coe_coe` instead of `coe_apply`; * rename `sup_quotient_to_quotient_inf` to `quotient_inf_to_sup_quotient` because it better reflects the definition; similarly for `equiv`. * make `general_linear_group` reducible. ESTIMATED CHANGES Modified src/algebra/module.lean + theorem submodule.coe_eq_coe + theorem submodule.coe_eq_zero + theorem submodule.coe_mem +/- theorem submodule.mk_eq_zero +/- theorem submodule.neg_mem_iff +/- theorem submodule.smul_mem_iff' Modified src/analysis/convex/cone.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/linear_algebra/basic.lean - theorem linear_equiv.coe_apply + theorem linear_equiv.coe_coe + theorem linear_equiv.coe_to_add_equiv + theorem linear_equiv.coe_to_equiv + theorem linear_equiv.eq_symm_apply + theorem linear_equiv.map_eq_comap + theorem linear_equiv.refl_trans + theorem linear_equiv.symm_apply_eq + theorem linear_equiv.trans_refl +/- def linear_map.general_linear_group + theorem linear_map.map_coe_ker + theorem linear_map.mem_range_self + def linear_map.quotient_inf_to_sup_quotient + theorem linear_map.range_coprod + def linear_map.range_restrict - def linear_map.sup_quotient_to_quotient_inf + theorem submodule.comap_subtype_eq_top + theorem submodule.comap_subtype_self +/- theorem submodule.disjoint_iff_comap_eq_bot +/- theorem submodule.map_coe + theorem submodule.mem_sup' + theorem submodule.quot_hom_ext + theorem submodule.range_range_restrict + theorem submodule.sup_eq_range 2020-05-07 15:51:38 5d3b830 refactor(order/lattice): add `sup/inf_eq_*`, rename `inf_le_inf_*` (#2624) ## New lemmas: * `sup_eq_right : a ⊔ b = b ↔a ≤ b`, and similarly for `sup_eq_left`, `left_eq_sup`, `right_eq_sup`, `inf_eq_right`, `inf_eq_left`, `left_eq_inf`, and `right_eq_inf`; all these lemmas are `@[simp]`; * `sup_elim` and `inf_elim`: if `(≤)` is a total order, then `p a → p b → p (a ⊔ b)`, and similarly for `inf`. ## Renamed * `inf_le_inf_right` is now `inf_le_inf_left` and vice versa. This agrees with `sup_le_sup_left`/`sup_le_sup_right`, and the rest of the library. * `ord_continuous_sup` -> `ord_continuous.sup`; * `ord_continuous_mono` -> `ord_continuous.mono`. ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean Modified src/linear_algebra/basic.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean + theorem ord_continuous.mono + theorem ord_continuous.sup - theorem ord_continuous_mono - theorem ord_continuous_sup Modified src/order/filter/basic.lean Modified src/order/filter/lift.lean Modified src/order/fixed_points.lean Modified src/order/lattice.lean + theorem inf_eq_left + theorem inf_eq_right + theorem inf_ind +/- theorem inf_le_inf_left +/- theorem inf_le_inf_right + theorem left_eq_inf + theorem left_eq_sup + theorem right_eq_inf + theorem right_eq_sup + theorem sup_eq_left + theorem sup_eq_right + theorem sup_ind Modified src/topology/basic.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-05-07 13:09:37 6c48444 feat(algebra/lie_algebra): `lie_algebra.of_associative_algebra` is functorial (#2620) More precisely we: * define the Lie algebra homomorphism associated to a morphism of associative algebras * prove that the correspondence is functorial * prove that subalgebras and Lie subalgebras correspond ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean + def lie_algebra.of_associative_algebra_hom + theorem lie_algebra.of_associative_algebra_hom_comp + theorem lie_algebra.of_associative_algebra_hom_id + def lie_subalgebra_of_subalgebra Modified src/ring_theory/algebra.lean + theorem subalgebra.mul_mem 2020-05-07 10:25:22 da10afc feat(*): define `equiv.reflection` and `isometry.reflection` (#2609) Define reflection in a point and prove basic properties. It is defined both as an `equiv.perm` of an `add_comm_group` and as an `isometric` of a `normed_group`. Other changes: * rename `two_smul` to `two_smul'`, add `two_smul` using `semimodule` instead of `add_monoid.smul`; * minor review of `algebra.midpoint`; * arguments of `isometry.dist_eq` and `isometry.edist_eq` are now explicit; * rename `isometry.inv` to `isometry.right_inv`; now it takes `right_inverse` instead of `equiv`; * drop `isometry_inv_fun`: use `h.symm.isometry` instead; * pull a few more lemmas about `equiv` and `isometry` to the `isometric` namespace. ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem two_smul' - theorem two_smul Modified src/algebra/midpoint.lean + theorem add_monoid_hom.coe_of_map_midpoint + def add_monoid_hom.of_map_midpoint + theorem equiv.reflection_midpoint_left + theorem equiv.reflection_midpoint_right + theorem midpoint_add_self + theorem midpoint_zero_add Modified src/algebra/module.lean + theorem two_smul Modified src/analysis/normed_space/basic.lean + theorem real.norm_two Added src/analysis/normed_space/reflection.lean + theorem equiv.reflection_fixed_iff_of_module + def isometric.reflection + theorem isometric.reflection_apply + theorem isometric.reflection_dist_fixed + theorem isometric.reflection_dist_self' + theorem isometric.reflection_dist_self + theorem isometric.reflection_dist_self_real + theorem isometric.reflection_fixed_iff + theorem isometric.reflection_involutive + theorem isometric.reflection_midpoint_left + theorem isometric.reflection_midpoint_right + theorem isometric.reflection_self + theorem isometric.reflection_symm + theorem isometric.reflection_to_equiv Modified src/data/equiv/mul_add.lean + def equiv.reflection + theorem equiv.reflection_apply + theorem equiv.reflection_fixed_iff_of_bit0_inj + theorem equiv.reflection_involutive + theorem equiv.reflection_self + theorem equiv.reflection_symm Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean - theorem isometric.coe_eq_to_homeomorph + theorem isometric.coe_to_homeomorph +/- theorem isometric.ext - theorem isometric.isometry_inv_fun + theorem isometric.to_equiv_inj +/- theorem isometric.to_homeomorph_to_equiv +/- theorem isometry.dist_eq +/- theorem isometry.edist_eq - theorem isometry.inv +/- theorem isometry.isometric_on_range_apply + theorem isometry.right_inv 2020-05-07 07:12:04 a6415d7 chore(data/set/basic): use implicit args in `set.ext_iff` (#2619) Most other `ext_iff` lemmas use implicit arguments, let `set.ext_iff` use them too. ESTIMATED CHANGES Modified src/data/finset.lean Modified src/data/semiquot.lean Modified src/data/set/basic.lean +/- theorem set.ext_iff Modified src/data/setoid.lean Modified src/linear_algebra/basic.lean Modified src/set_theory/zfc.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean 2020-05-07 02:39:51 f6edeba chore(scripts): update nolints.txt (#2622) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-07 00:42:46 a8eafb6 chore(scripts): update nolints.txt (#2621) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-06 22:41:38 0c8d2e2 chore(data/set/countable): use dot syntax here and there (#2617) Renamed: * `exists_surjective_of_countable` -> `countable.exists_surjective`; * `countable_subset` -> `countable.mono`; * `countable_image` -> `countable.image`; * `countable_bUnion` -> `countable.bUnion`; * `countable_sUnion` -> `countable.sUnion`; * `countable_union` -> `countable.union`; * `countable_insert` -> `countable.insert`; * `countable_finite` -> `finite.countable`; Add: * `finset.countable_to_set` ESTIMATED CHANGES Modified src/data/set/countable.lean + theorem finset.countable_to_set + theorem set.countable.bUnion + theorem set.countable.exists_surjective + theorem set.countable.image + theorem set.countable.insert + theorem set.countable.mono + theorem set.countable.sUnion + theorem set.countable.union - theorem set.countable_bUnion - theorem set.countable_finite - theorem set.countable_image - theorem set.countable_insert - theorem set.countable_sUnion - theorem set.countable_subset - theorem set.countable_union - theorem set.exists_surjective_of_countable + theorem set.finite.countable Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.range_const Modified src/measure_theory/measure_space.lean Modified src/order/filter/bases.lean +/- def filter.is_countably_generated.countable_filter_basis Modified src/topology/bases.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean 2020-05-06 19:39:53 c3d76d0 chore(*): a few missing `simp` lemmas (#2615) Also replaces `monoid_hom.exists_inv_of_comp_exists_inv` with `monoid_hom.map_exists_right_inv` and adds `monoid_hom.map_exists_left_inv`. ESTIMATED CHANGES Modified src/algebra/group/hom.lean - theorem monoid_hom.exists_inv_of_comp_exists_inv + theorem monoid_hom.id_apply + theorem monoid_hom.map_exists_left_inv + theorem monoid_hom.map_exists_right_inv + theorem monoid_hom.map_mul_eq_one Modified src/data/equiv/mul_add.lean + theorem mul_equiv.coe_mk + theorem mul_equiv.coe_symm_mk Modified src/data/sigma/basic.lean + theorem sigma.eta 2020-05-06 19:39:51 460d9d4 refactor(data/equiv/local_equiv, topology/local_homeomorph): use coercions (#2603) Local equivs and local homeomorphisms use `e.to_fun x` and `e.inv_fun x`, instead of coercions as in most of mathlib, as there were problems with coercions that made them unusable in manifolds. These problems have been fixed in Lean 3.10, so we switch to coercions for them also. This is 95% a refactor PR, erasing `.to_fun` and replacing `.inv_fun` with `.symm` in several files, and fixing proofs. Plus a few simp lemmas on the coercions to let things go smoothly. I have also linted all the files I have touched. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/inverse.lean + theorem approximates_linear_on.to_local_homeomorph_coe - theorem approximates_linear_on.to_local_homeomorph_to_fun + theorem has_strict_fderiv_at.to_local_homeomorph_coe - theorem has_strict_fderiv_at.to_local_homeomorph_to_fun Modified src/data/equiv/local_equiv.lean + theorem equiv.to_local_equiv_coe - theorem equiv.to_local_equiv_inv_fun + theorem equiv.to_local_equiv_symm_coe - theorem equiv.to_local_equiv_to_fun +/- theorem local_equiv.bij_on_source + theorem local_equiv.coe_mk + theorem local_equiv.coe_symm_mk + theorem local_equiv.coe_trans + theorem local_equiv.coe_trans_symm +/- theorem local_equiv.image_source_eq_target +/- theorem local_equiv.image_trans_source + theorem local_equiv.inv_fun_as_coe +/- theorem local_equiv.inv_image_target_eq_source +/- theorem local_equiv.inv_image_trans_target + theorem local_equiv.left_inv + theorem local_equiv.map_source + theorem local_equiv.map_target + theorem local_equiv.of_set_coe - theorem local_equiv.of_set_inv_fun - theorem local_equiv.of_set_to_fun + theorem local_equiv.prod_coe + theorem local_equiv.prod_coe_symm - theorem local_equiv.prod_inv_fun - theorem local_equiv.prod_to_fun + theorem local_equiv.refl_coe - theorem local_equiv.refl_inv_fun - theorem local_equiv.refl_to_fun + theorem local_equiv.restr_coe + theorem local_equiv.restr_coe_symm - theorem local_equiv.restr_inv_fun +/- theorem local_equiv.restr_target - theorem local_equiv.restr_to_fun + theorem local_equiv.right_inv +/- theorem local_equiv.source_subset_preimage_target - theorem local_equiv.symm_inv_fun - theorem local_equiv.symm_to_fun +/- theorem local_equiv.target_subset_preimage_source + theorem local_equiv.to_fun_as_coe - theorem local_equiv.trans_apply - theorem local_equiv.trans_inv_apply - theorem local_equiv.trans_inv_fun +/- theorem local_equiv.trans_source'' +/- theorem local_equiv.trans_source' +/- theorem local_equiv.trans_source +/- theorem local_equiv.trans_target'' +/- theorem local_equiv.trans_target' +/- theorem local_equiv.trans_target - theorem local_equiv.trans_to_fun Modified src/geometry/manifold/basic_smooth_bundle.lean - theorem basic_smooth_bundle_core.chart_at_inv_fun_fst - theorem basic_smooth_bundle_core.chart_at_to_fun_fst + theorem basic_smooth_bundle_core.coe_chart_at_fst + theorem basic_smooth_bundle_core.coe_chart_at_symm_fst + theorem tangent_bundle_model_space_coe_chart_at + theorem tangent_bundle_model_space_coe_chart_at_symm + def trivial_basic_smooth_bundle_core Modified src/geometry/manifold/manifold.lean + def continuous_pregroupoid Modified src/geometry/manifold/mfderiv.lean + theorem bundle_mfderiv_chart - theorem bundle_mfderiv_chart_inv_fun + theorem bundle_mfderiv_chart_symm - theorem bundle_mfderiv_chart_to_fun + theorem local_homeomorph.mdifferentiable.comp_symm_deriv - theorem local_homeomorph.mdifferentiable.inv_fun_to_fun_deriv - theorem local_homeomorph.mdifferentiable.mdifferentiable_at_inv_fun + theorem local_homeomorph.mdifferentiable.mdifferentiable_at_symm - theorem local_homeomorph.mdifferentiable.mdifferentiable_at_to_fun + theorem local_homeomorph.mdifferentiable.symm_comp_deriv - theorem local_homeomorph.mdifferentiable.to_fun_inv_fun_deriv + theorem mdifferentiable_at_atlas - theorem mdifferentiable_at_atlas_inv_fun + theorem mdifferentiable_at_atlas_symm - theorem mdifferentiable_at_atlas_to_fun + theorem mdifferentiable_on_atlas - theorem mdifferentiable_on_atlas_inv_fun + theorem mdifferentiable_on_atlas_symm - theorem mdifferentiable_on_atlas_to_fun + theorem model_with_corners.mdifferentiable + theorem model_with_corners.mdifferentiable_on_symm - theorem model_with_corners_mdifferentiable_on_inv_fun - theorem model_with_corners_mdifferentiable_on_to_fun Modified src/geometry/manifold/real_instances.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean + theorem ext_chart_at_coe + theorem ext_chart_at_coe_symm + theorem ext_chart_at_continuous_at - theorem ext_chart_at_continuous_at_to_fun + theorem ext_chart_at_continuous_on - theorem ext_chart_at_continuous_on_inv_fun + theorem ext_chart_at_continuous_on_symm - theorem ext_chart_at_continuous_on_to_fun - theorem ext_chart_continuous_at_inv_fun' - theorem ext_chart_continuous_at_inv_fun + theorem ext_chart_continuous_at_symm' + theorem ext_chart_continuous_at_symm +/- theorem ext_chart_preimage_inter_eq + theorem model_with_corners.continuous_symm + theorem model_with_corners.left_inv' + theorem model_with_corners.left_inv + theorem model_with_corners.mk_coe + theorem model_with_corners.mk_coe_symm + theorem model_with_corners.right_inv + theorem model_with_corners.target + theorem model_with_corners.to_local_equiv_coe + theorem model_with_corners.to_local_equiv_coe_symm + theorem model_with_corners.unique_diff + theorem model_with_corners.unique_diff_at_image + theorem model_with_corners.unique_diff_preimage + theorem model_with_corners.unique_diff_preimage_source - theorem model_with_corners_inv_fun_comp - theorem model_with_corners_left_inv - theorem model_with_corners_right_inv + theorem model_with_corners_self_coe + theorem model_with_corners_self_coe_symm +/- theorem model_with_corners_self_local_equiv - theorem model_with_corners_target Modified src/topology/local_homeomorph.lean + theorem homeomorph.to_local_homeomorph_coe + theorem homeomorph.to_local_homeomorph_coe_symm - theorem homeomorph.to_local_homeomorph_inv_fun +/- theorem homeomorph.to_local_homeomorph_source +/- theorem homeomorph.to_local_homeomorph_target - theorem homeomorph.to_local_homeomorph_to_fun +/- theorem local_homeomorph.apply_eq_of_eq_on_source + theorem local_homeomorph.coe_coe + theorem local_homeomorph.coe_coe_symm + theorem local_homeomorph.coe_trans + theorem local_homeomorph.coe_trans_symm - theorem local_homeomorph.continuous_at_inv_fun + theorem local_homeomorph.continuous_at_symm - theorem local_homeomorph.continuous_at_to_fun + theorem local_homeomorph.continuous_on_symm +/- theorem local_homeomorph.image_open_of_open +/- theorem local_homeomorph.image_trans_source +/- theorem local_homeomorph.inv_apply_eq_of_eq_on_source + theorem local_homeomorph.inv_fun_eq_coe - theorem local_homeomorph.inv_fun_tendsto +/- theorem local_homeomorph.inv_image_trans_target + theorem local_homeomorph.left_inv + theorem local_homeomorph.map_source + theorem local_homeomorph.map_target + theorem local_homeomorph.mk_coe + theorem local_homeomorph.mk_coe_symm + theorem local_homeomorph.of_set_coe - theorem local_homeomorph.of_set_inv_fun +/- theorem local_homeomorph.of_set_source +/- theorem local_homeomorph.of_set_symm +/- theorem local_homeomorph.of_set_target - theorem local_homeomorph.of_set_to_fun + theorem local_homeomorph.prod_coe + theorem local_homeomorph.prod_coe_symm - theorem local_homeomorph.prod_inv_fun - theorem local_homeomorph.prod_to_fun + theorem local_homeomorph.refl_coe - theorem local_homeomorph.refl_inv_fun +/- theorem local_homeomorph.refl_source +/- theorem local_homeomorph.refl_symm +/- theorem local_homeomorph.refl_target - theorem local_homeomorph.refl_to_fun + theorem local_homeomorph.restr_coe + theorem local_homeomorph.restr_coe_symm - theorem local_homeomorph.restr_inv_fun - theorem local_homeomorph.restr_to_fun + theorem local_homeomorph.right_inv - theorem local_homeomorph.symm_inv_fun - theorem local_homeomorph.symm_to_fun + theorem local_homeomorph.tendsto_symm + theorem local_homeomorph.to_fun_eq_coe + theorem local_homeomorph.to_homeomorph_coe - theorem local_homeomorph.to_homeomorph_inv_fun + theorem local_homeomorph.to_homeomorph_symm_coe - theorem local_homeomorph.to_homeomorph_to_fun - theorem local_homeomorph.trans_inv_fun +/- theorem local_homeomorph.trans_source'' +/- theorem local_homeomorph.trans_source' +/- theorem local_homeomorph.trans_source +/- theorem local_homeomorph.trans_target'' +/- theorem local_homeomorph.trans_target' +/- theorem local_homeomorph.trans_target - theorem local_homeomorph.trans_to_fun Modified src/topology/topological_fiber_bundle.lean + theorem bundle_trivialization.coe_coe + theorem bundle_trivialization.coe_fst + theorem bundle_trivialization.coe_mk 2020-05-06 19:39:49 b1c0398 feat(analysis/analytic/composition): the composition of formal series is associative (#2513) The composition of formal multilinear series is associative. I will need this when doing the analytic local inverse theorem, and I was surprised by how nontrivial this is: one should show that two double sums coincide by reindexing, but the reindexing is combinatorially tricky (it involves joining and splitting lists carefully). Preliminary material on lists, sums and compositions is done in #2501 and #2554, and the proof is in this PR. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean + theorem composition.blocks_fun_sigma_composition_aux + def composition.gather + theorem composition.length_gather + theorem composition.length_sigma_composition_aux + def composition.sigma_composition_aux + theorem composition.sigma_composition_eq_iff + def composition.sigma_equiv_sigma_pi + theorem composition.sigma_pi_composition_eq_iff + theorem composition.size_up_to_size_up_to_add + theorem formal_multilinear_series.apply_composition_ones + theorem formal_multilinear_series.comp_along_composition_apply + theorem formal_multilinear_series.comp_assoc + theorem formal_multilinear_series.comp_coeff_zero'' + theorem formal_multilinear_series.comp_coeff_zero' + theorem formal_multilinear_series.comp_coeff_zero + theorem formal_multilinear_series.comp_id + def formal_multilinear_series.id + theorem formal_multilinear_series.id_apply_ne_one + theorem formal_multilinear_series.id_apply_one' + theorem formal_multilinear_series.id_apply_one + theorem formal_multilinear_series.id_comp Modified src/analysis/calculus/times_cont_diff.lean + theorem formal_multilinear_series.congr Modified src/combinatorics/composition.lean + def composition.blocks_fin_equiv + theorem composition.blocks_fun_congr + theorem composition.index_embedding + theorem composition.inv_embedding_comp + theorem list.nth_le_split_wrt_composition + theorem list.nth_le_split_wrt_composition_aux 2020-05-06 16:31:27 0a7ff10 feat(algebra/units): some norm_cast attributes (#2612) ESTIMATED CHANGES Modified src/algebra/group/units.lean +/- theorem units.coe_inv +/- theorem units.coe_mul +/- theorem units.coe_one Modified src/algebra/group_power.lean +/- theorem units.coe_pow Modified src/group_theory/subgroup.lean +/- theorem is_add_subgroup.gsmul_coe +/- theorem is_subgroup.coe_gpow Modified src/group_theory/submonoid.lean +/- theorem is_add_submonoid.smul_coe +/- theorem is_submonoid.coe_pow 2020-05-06 14:05:37 93a64da chore(data/pnat/basic): add `mk_le_mk`, `mk_lt_mk`, `coe_le_coe`, `coe_lt_coe` (#2613) ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.coe_le_coe + theorem pnat.coe_lt_coe + theorem pnat.mk_le_mk + theorem pnat.mk_lt_mk Modified src/data/pnat/intervals.lean +/- theorem pnat.Ico.mem 2020-05-06 09:03:06 5593155 feat(*): lemmas on sums and products over fintypes (#2598) ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.prod_pow Modified src/data/fintype/card.lean + theorem finset.prod_fiberwise +/- theorem fintype.card_eq_sum_ones + theorem fintype.prod_congr + theorem fintype.prod_eq_one + theorem fintype.prod_fiberwise + theorem fintype.prod_sum_type + theorem fintype.prod_unique 2020-05-06 02:11:34 4503f8f chore(scripts): update nolints.txt (#2610) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-05 22:33:19 c7593cc refactor(field_theory): move finite_card.lean into finite.lean (#2607) ESTIMATED CHANGES Modified src/field_theory/finite.lean + theorem finite_field.card' + theorem finite_field.card Deleted src/field_theory/finite_card.lean - theorem finite_field.card' - theorem finite_field.card 2020-05-05 22:33:16 0db59db feat(data/equiv/basic): some elementary equivs (#2602) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.fun_unique + theorem equiv.fun_unique_apply + theorem equiv.fun_unique_symm_apply + theorem equiv.sigma_preimage_equiv_apply + theorem equiv.sigma_preimage_equiv_symm_apply_fst + theorem equiv.sigma_preimage_equiv_symm_apply_snd_fst + def equiv.subtype_preimage + theorem equiv.subtype_preimage_apply + theorem equiv.subtype_preimage_symm_apply_coe + theorem equiv.subtype_preimage_symm_apply_coe_neg + theorem equiv.subtype_preimage_symm_apply_coe_pos + def equiv.sum_compl + theorem equiv.sum_compl_apply_inl + theorem equiv.sum_compl_apply_inr + theorem equiv.sum_compl_apply_symm_of_neg + theorem equiv.sum_compl_apply_symm_of_pos 2020-05-05 20:16:28 359031f refactor(*): remove instance max depth (#2608) With current Lean, all the manual increases of the maximum instance depth have become unnecessary. This PR removes them all. ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/data/padics/padic_numbers.lean Modified src/field_theory/mv_polynomial.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/special_linear_group.lean Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/l1_space.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/tactic/ring.lean Modified src/topology/algebra/module.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2020-05-05 19:08:14 a66d0a8 chore(field_theory/finite): meaningful variable names (#2606) ESTIMATED CHANGES Modified src/field_theory/finite.lean +/- theorem card_nth_roots_subgroup_units +/- theorem finite_field.card_image_polynomial_eval +/- theorem finite_field.card_units +/- theorem finite_field.exists_root_sum_quadratic +/- def finite_field.field_of_integral_domain +/- theorem finite_field.pow_card_sub_one_eq_one 2020-05-05 14:29:27 0c1b60b feat(group_theory/order_of_element): order_of_eq_prime (#2604) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem order_of_eq_prime 2020-05-05 08:02:15 7a367f3 feat(algebra/char_p): add lemma ring_char_ne_one (#2595) This lemma is more useful than the extant `false_of_nonzero_of_char_one` when we are working with the function `ring_char` rather than the `char_p` Prop. ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem char_p.ring_char_ne_one Modified src/algebra/ring.lean 2020-05-05 06:09:07 91b3906 feat(data/polynomial): misc on derivatives of polynomials (#2596) Co-authored by: @alexjbest ESTIMATED CHANGES Modified src/data/polynomial.lean + def polynomial.derivative_hom + def polynomial.derivative_lhom + theorem polynomial.derivative_neg + theorem polynomial.derivative_smul + theorem polynomial.derivative_sub + theorem polynomial.is_coprime_of_is_root_of_eval_derivative_ne_zero 2020-05-05 04:42:12 d6ddfd2 feat(algebra/midpoint): define `midpoint`, prove basic properties (#2599) Part of #2214 ESTIMATED CHANGES Added src/algebra/midpoint.lean + def midpoint + theorem midpoint_add_add + theorem midpoint_add_left + theorem midpoint_add_right + theorem midpoint_comm + theorem midpoint_def + theorem midpoint_eq_iff + theorem midpoint_neg_neg + theorem midpoint_self + theorem midpoint_smul_smul + theorem midpoint_sub_left + theorem midpoint_sub_right + theorem midpoint_sub_sub + theorem midpoint_unique 2020-05-04 22:27:29 1c4b5ec feat(ring_theory/ideals): quotient map to residue field as ring hom (#2597) ESTIMATED CHANGES Modified src/ring_theory/ideals.lean + def local_ring.residue 2020-05-04 10:57:29 14aa1f7 feat(combinatorics/composition): refactor compositions, split a list wrt a composition (#2554) Refactor `composition`, replacing in its definition a list of positive integers with a list of integers which are positive. This avoids going back and forth all the time between `nat` and `pnat`. Also introduce the ability to split a list of length `n` with respect to a composition `c` of `n`, giving rise to a list of `c.length` sublists whose join is the original list. ESTIMATED CHANGES Modified src/analysis/analytic/composition.lean Modified src/combinatorics/composition.lean - def composition.blocks +/- theorem composition.blocks_length - theorem composition.blocks_pnat_length - theorem composition.blocks_pos - theorem composition.blocks_sum + theorem composition.eq_ones_iff + theorem composition.eq_single_iff +/- def composition.length + theorem composition.monotone_size_up_to + theorem composition.ne_ones_iff + theorem composition.of_fn_blocks_fun + def composition.ones + theorem composition.ones_blocks + theorem composition.ones_blocks_fun + theorem composition.ones_embedding + theorem composition.ones_length + theorem composition.ones_size_up_to - theorem composition.sigma_eq_iff_blocks_pnat_eq + def composition.single + theorem composition.single_blocks + theorem composition.single_blocks_fun + theorem composition.single_embedding + theorem composition.single_length - theorem composition.to_composition_as_set_blocks_pnat - def composition_as_set.blocks_pnat - theorem composition_as_set.blocks_pnat_length - theorem composition_as_set.coe_blocks_pnat_eq_blocks - theorem composition_as_set.to_composition_blocks_pnat + theorem list.join_split_wrt_composition + theorem list.join_split_wrt_composition_aux + theorem list.length_pos_of_mem_split_wrt_composition + theorem list.length_split_wrt_composition + theorem list.length_split_wrt_composition_aux + theorem list.map_length_split_wrt_composition + theorem list.map_length_split_wrt_composition_aux + def list.split_wrt_composition + def list.split_wrt_composition_aux + theorem list.split_wrt_composition_aux_cons + theorem list.split_wrt_composition_join + theorem list.sum_take_map_length_split_wrt_composition 2020-05-04 05:40:22 70245f4 feat(algebra/big_operators): prod_comp (#2594) This is a lemma that @jcommelin looks like he could have used in Chevalley Warning, and is probably useful elsewhere. ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_comp + theorem finset.sum_comp 2020-05-03 12:27:43 08a17d6 chore(scripts): update nolints.txt (#2593) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-05-03 08:34:26 a223bbb chore(*): switch to lean 3.10.0 (#2587) There have been two changes in Lean 3.10 that have a significant effect on mathlib: - `rename'` has been moved to core. Therefore `rename'` has been removed. - Given a term `⇑f x`, the simplifier can now rewrite in both `f` and `x`. In many cases we had both `⇑f = ⇑f'` and `⇑f x = ⇑f' x` as simp lemmas; the latter is redundant now and has been removed (or just not marked simp anymore). The new and improved congruence lemmas are also used by `convert` and `congr`, these tactics have become more powerful as well. I've also sneaked in two related changes that I noticed while fixing the proofs affected by the changes above: - `@[to_additive, simp]` has been replaced by `@[simp, to_additive]` in the monoid localization file. The difference is that `@[to_additive, simp]` only marks the multiplicative lemma as simp. - `def prod_comm : α × β ≃ β × α` (etc.) is no longer marked `@[simp]`. Marking this kind of lemmas as simp causes the simplifier to unfold the definition of `prod_comm` (instead of just rewriting `α × β` to `β × α` in the `≃` simp relation). This has become a bigger issue now since the simplifier can rewrite the `f` in `⇑f x`. ESTIMATED CHANGES Modified leanpkg.toml Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/normed_space/multilinear.lean Modified src/category_theory/limits/concrete_category.lean Modified src/data/equiv/basic.lean +/- def equiv.arrow_punit_equiv_punit +/- def equiv.empty_arrow_equiv_punit +/- def equiv.empty_prod +/- def equiv.empty_sum + theorem equiv.empty_sum_apply_inr +/- def equiv.false_arrow_equiv_punit +/- def equiv.nat_sum_punit_equiv_nat +/- def equiv.option_equiv_sum_punit + theorem equiv.option_equiv_sum_punit_none + theorem equiv.option_equiv_sum_punit_some +/- def equiv.pempty_arrow_equiv_punit +/- def equiv.pempty_prod +/- def equiv.pempty_sum + theorem equiv.pempty_sum_apply_inr +/- def equiv.prod_assoc +/- def equiv.prod_comm + theorem equiv.prod_comm_apply +/- def equiv.prod_empty +/- def equiv.prod_pempty +/- def equiv.prod_punit +/- def equiv.punit_arrow_equiv +/- def equiv.punit_prod +/- def equiv.sum_assoc +/- def equiv.sum_comm + theorem equiv.sum_comm_apply_inl + theorem equiv.sum_comm_apply_inr + theorem equiv.sum_comm_symm +/- def equiv.sum_empty + theorem equiv.sum_empty_apply_inl +/- def equiv.sum_pempty + theorem equiv.sum_pempty_apply_inl - theorem equiv.symm_symm_apply Modified src/data/finsupp.lean Modified src/data/finsupp/pointwise.lean Modified src/data/list/defs.lean - def list.after Modified src/data/list/sigma.lean Modified src/data/pequiv.lean - theorem pequiv.refl_trans_apply - theorem pequiv.symm_refl_apply - theorem pequiv.symm_single_apply - theorem pequiv.symm_symm_apply - theorem pequiv.trans_refl_apply Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean Modified src/group_theory/monoid_localization.lean +/- theorem submonoid.localization_map.comp_mul_equiv_symm_comap_apply +/- theorem submonoid.localization_map.mul_equiv_of_localizations_apply +/- theorem submonoid.localization_map.mul_equiv_of_localizations_symm_apply +/- theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq +/- theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map +/- theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply - theorem submonoid.localization_map.of_mul_equiv_apply +/- theorem submonoid.localization_map.of_mul_equiv_eq - theorem submonoid.localization_map.to_mul_equiv_apply +/- theorem submonoid.localization_map.to_mul_equiv_eq +/- theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv +/- theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_of_mul_equiv +/- theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_of_mul_equiv_apply Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basic.lean - theorem linear_equiv.symm_symm_apply Modified src/linear_algebra/matrix.lean Modified src/ring_theory/algebra.lean +/- theorem alg_hom.coe_to_add_monoid_hom +/- theorem alg_hom.coe_to_monoid_hom Modified src/ring_theory/power_series.lean +/- theorem mv_power_series.coeff_zero_eq_constant_coeff_apply +/- theorem mv_power_series.coeff_zero_one +/- theorem mv_power_series.monomial_zero_eq_C_apply +/- theorem power_series.coeff_zero_C +/- theorem power_series.coeff_zero_X +/- theorem power_series.coeff_zero_eq_constant_coeff_apply +/- theorem power_series.coeff_zero_mul_X +/- theorem power_series.coeff_zero_one +/- def power_series.mk +/- theorem power_series.monomial_zero_eq_C_apply Modified src/set_theory/ordinal.lean Modified src/set_theory/pgame.lean Modified src/tactic/basic.lean Deleted src/tactic/rename.lean Modified src/topology/algebra/module.lean +/- theorem continuous_linear_equiv.symm_symm_apply Modified test/tactics.lean 2020-05-02 22:38:27 d1eae21 chore(build.yml): Don't build nolints branch (#2591) ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-05-02 15:22:25 a99f9b5 refactor(algebra/big_operators): introduce notation for finset.prod and finset.sum (#2582) I have not gone through all of mathlib to use this notation everywhere. I think we can maybe transition naturally. ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.card_eq_sum_ones +/- theorem finset.exists_le_of_sum_le +/- theorem finset.exists_ne_one_of_prod_ne_one +/- theorem finset.mul_sum +/- theorem finset.nonempty_of_prod_ne_one - theorem finset.prod_Ico_eq_div + theorem finset.prod_Ico_eq_mul_inv +/- theorem finset.prod_Ico_id_eq_fact +/- theorem finset.prod_attach +/- theorem finset.prod_const +/- theorem finset.prod_const_one +/- theorem finset.prod_empty +/- theorem finset.prod_eq_fold +/- theorem finset.prod_eq_one +/- theorem finset.prod_eq_zero +/- theorem finset.prod_eq_zero_iff +/- theorem finset.prod_filter_ne_one +/- theorem finset.prod_insert +/- theorem finset.prod_inv_distrib +/- theorem finset.prod_mul_distrib +/- theorem finset.prod_pos +/- theorem finset.prod_sdiff +/- theorem finset.prod_singleton +/- theorem finset.prod_subset +/- theorem finset.prod_union +/- theorem finset.single_le_sum +/- theorem finset.sum_eq_zero_iff_of_nonneg +/- theorem finset.sum_eq_zero_iff_of_nonpos +/- theorem finset.sum_le_sum +/- theorem finset.sum_le_sum_of_subset +/- theorem finset.sum_mul +/- theorem finset.sum_nonneg +/- theorem finset.sum_nonpos +/- theorem finset.sum_range_id + theorem finset.sum_range_succ +/- theorem finset.sum_sub_distrib Modified src/algebra/category/Group/biproducts.lean Modified src/algebra/geom_sum.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/exponential.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/choose.lean Modified src/group_theory/order_of_element.lean Modified src/ring_theory/power_series.lean 2020-05-02 12:33:54 1cc83e9 chore(algebra/ordered_field): move inv_neg to field and prove for division ring (#2588) `neg_inv` this lemma with the equality swapped was already in the library, so maybe we should just get rid of this or `neg_inv` [Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/inv_neg/near/196042954) ESTIMATED CHANGES Modified src/algebra/field.lean + theorem inv_neg Modified src/algebra/ordered_field.lean - theorem inv_neg 2020-05-02 09:41:43 b902f6e feat(*): several `@[simp]` lemmas (#2579) Also add an explicit instance for `submodule.has_coe_to_sort`. This way `rintro ⟨x, hx⟩` results in `(hx : x ∈ p)`. Also fixes some timeouts introduced by #2363. See Zulip: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/partrec_code ESTIMATED CHANGES Modified src/algebra/group/prod.lean + theorem prod.mk_eq_one Modified src/algebra/module.lean + theorem submodule.mk_eq_zero Modified src/analysis/convex/cone.lean Modified src/computability/partrec.lean Modified src/computability/partrec_code.lean Modified src/data/finset.lean Modified src/data/set/basic.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/linear_pmap.lean Modified src/logic/basic.lean + theorem exists_comm + theorem exists_exists_and_eq_and + theorem exists_exists_eq_and Modified src/set_theory/cofinality.lean Modified src/tactic/converter/binders.lean +/- theorem {u 2020-05-02 09:41:41 06bae3e fix(data/int/basic): use has_coe_t to prevent looping (#2573) The file `src/computability/partrec.lean` no longer opens in vscode because type-class search times out. This happens because we have the instance `has_coe ℤ α` which causes non-termination because coercions are chained transitively (`has_coe ℤ ℤ`, `has_coe ℤ ℤ`, ...). Even if the coercions would not apply to integers (and maybe avoid non-termination), it would still enumerate all `0,1,+,-` structures, of which there are unfortunately very many. This PR therefore downgrades such instances to `has_coe_t` to prevent non-termination due to transitivity. It also adds a linter to prevent this kind of error in the future. ESTIMATED CHANGES Modified src/data/fp/basic.lean Modified src/data/int/basic.lean Modified src/data/nat/cast.lean Modified src/data/num/basic.lean Modified src/data/rat/cast.lean Modified src/data/zmod/basic.lean Modified src/group_theory/coset.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/norm_cast.lean +/- theorem ite_cast Modified test/lint.lean - def foo_instance Added test/lint_coe_t.lean + def a_to_quot + def int_to_a 2020-05-02 09:41:39 9d57f68 feat(order/bounded_lattice): introduce `is_compl` predicate (#2569) Also move `disjoint` from `data/set/lattice` ESTIMATED CHANGES Modified src/combinatorics/composition.lean Modified src/data/set/lattice.lean - theorem disjoint.comm - theorem disjoint.eq_bot - theorem disjoint.mono - theorem disjoint.mono_left - theorem disjoint.mono_right - theorem disjoint.ne - theorem disjoint.symm - def disjoint - theorem disjoint_bot_left - theorem disjoint_bot_right - theorem disjoint_iff - theorem disjoint_self Modified src/order/boolean_algebra.lean + theorem is_compl.neg_eq + theorem is_compl_neg Modified src/order/bounded_lattice.lean + theorem disjoint.comm + theorem disjoint.eq_bot + theorem disjoint.mono + theorem disjoint.mono_left + theorem disjoint.mono_right + theorem disjoint.ne + theorem disjoint.symm + def disjoint + theorem disjoint_bot_left + theorem disjoint_bot_right + theorem disjoint_iff + theorem disjoint_self + theorem is_compl.antimono + theorem is_compl.inf_eq_bot + theorem is_compl.inf_sup + theorem is_compl.le_left_iff + theorem is_compl.le_right_iff + theorem is_compl.left_le_iff + theorem is_compl.left_unique + theorem is_compl.of_eq + theorem is_compl.right_le_iff + theorem is_compl.right_unique + theorem is_compl.sup_eq_top + theorem is_compl.sup_inf + theorem is_compl.to_order_dual + structure is_compl + theorem is_compl_bot_top + theorem is_compl_top_bot Modified src/order/filter/basic.lean + theorem filter.is_compl_principal +/- theorem filter.map_at_top_eq_of_gc Modified src/order/lattice.lean + theorem eq_of_inf_eq_sup_eq - theorem eq_of_sup_eq_inf_eq + theorem le_of_inf_le_sup_le 2020-05-02 08:31:10 738bbae feat(algebra/group_ring_action): action on polynomials (#2586) ESTIMATED CHANGES Modified src/algebra/group_ring_action.lean + theorem polynomial.coeff_smul' + theorem polynomial.smul_C + theorem polynomial.smul_X 2020-05-02 06:01:16 d0a1d77 doc(tactic/rcases): mention the "rfl" pattern (#2585) Edited from @jcommelin's answer on Zulip here: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/noob.20question%28s%29/near/184491982 ESTIMATED CHANGES Modified src/tactic/rcases.lean 2020-05-01 21:31:28 eb383b1 chore(group_theory/perm): delete duplicate lemmas (#2584) `sum_univ_perm` is a special case of `sum_equiv`, so it's not necessary. I also moved `sum_equiv` into the `finset` namespace. ESTIMATED CHANGES Modified src/data/fintype/card.lean + theorem finset.prod_equiv - theorem prod_equiv Modified src/group_theory/perm/sign.lean - theorem finset.prod_univ_perm - theorem finset.sum_univ_perm Modified src/linear_algebra/determinant.lean Modified src/number_theory/sum_four_squares.lean 2020-05-01 15:51:57 4daa7e8 feat(algebra/lie_algebra): define simple Lie algebras and define classical Lie algebra, slₙ (#2567) The changes here introduce a few important properties of Lie algebras and also begin providing definitions of the classical Lie algebras. The key changes are the following definitions: * `lie_algebra.is_abelian` * `lie_module.is_irreducible` * `lie_algebra.is_simple` * `lie_algebra.special_linear.sl` Some simple related proofs are also included such as: * `commutative_ring_iff_abelian_lie_ring` * `lie_algebra.special_linear.sl_non_abelian` ESTIMATED CHANGES Added src/algebra/classical_lie_algebras.lean + theorem lie_algebra.matrix_trace_commutator_zero + def lie_algebra.special_linear.E + theorem lie_algebra.special_linear.E_apply_one + theorem lie_algebra.special_linear.E_apply_zero + theorem lie_algebra.special_linear.E_diag_zero + theorem lie_algebra.special_linear.E_trace_zero + def lie_algebra.special_linear.Eb + theorem lie_algebra.special_linear.Eb_val + def lie_algebra.special_linear.sl + theorem lie_algebra.special_linear.sl_bracket + theorem lie_algebra.special_linear.sl_non_abelian Modified src/algebra/lie_algebra.lean + theorem commutative_ring_iff_abelian_lie_ring + theorem lie_ring.of_associative_ring_bracket - def lie_subalgebra_lie_algebra - def lie_subalgebra_lie_ring Modified src/data/fintype/basic.lean + theorem fintype.exists_pair_of_one_lt_card Modified src/linear_algebra/matrix.lean + theorem matrix.diag_apply + theorem matrix.trace_diag 2020-05-01 12:56:42 6a2559a chore(algebra/group_with_zero): rename div_eq_inv_mul' to div_eq_inv_mul (#2583) There are no occurrences of the name without ' in either core or mathlib so this change in name (from #2242) seems to have been unnecessary. ESTIMATED CHANGES Modified src/algebra/group_with_zero.lean - theorem div_eq_inv_mul' + theorem div_eq_inv_mul Modified src/algebra/ordered_field.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/data/real/cau_seq_completion.lean Modified src/measure_theory/probability_mass_function.lean Modified src/topology/metric_space/antilipschitz.lean 2020-05-01 10:09:30 ee488b2 fix(tactic/lint/basic): remove default argument for auto_decl and enable more linters (#2580) Run more linters on automatically-generated declarations. Quite a few linters should have been run on them, but I forgot about it because the `auto_decls` flag is optional and off by default. I've made it non-optional so that you don't forget about it when defining a linter. https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/simp.20linter.20and.20structure.20fields/near/195810856 ESTIMATED CHANGES Modified src/data/list/forall2.lean +/- theorem list.forall₂_nil_left_iff +/- theorem list.forall₂_nil_right_iff Modified src/tactic/lint/basic.lean Modified src/tactic/lint/misc.lean Modified src/tactic/lint/simp.lean Modified src/tactic/lint/type_classes.lean Modified test/lint.lean 2020-05-01 07:42:20 67f3fde feat(algebra/group_ring_action) define group actions on rings (#2566) Define group action on rings. Related Zulip discussions: - https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.232566.20group.20actions.20on.20ring - https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mul_action ESTIMATED CHANGES Added src/algebra/group_ring_action.lean + def add_monoid.End + def distrib_mul_action.hom_add_monoid_hom + def distrib_mul_action.to_add_equiv + def distrib_mul_action.to_add_monoid_hom + def monoid.End + def mul_semiring_action.to_semiring_equiv + def mul_semiring_action.to_semiring_hom + theorem smul_inv + theorem smul_mul' + theorem smul_pow Modified src/group_theory/group_action.lean 2020-05-01 05:59:47 74d24ab feat(topology/instances/real_vector_space): `E →+ F` to `E →L[ℝ] F` (#2577) A continuous additive map between two vector spaces over `ℝ` is `ℝ`-linear. ESTIMATED CHANGES Added src/topology/instances/real_vector_space.lean + theorem add_monoid_hom.coe_to_real_linear_map + theorem add_monoid_hom.map_real_smul + def add_monoid_hom.to_real_linear_map 2020-05-01 04:49:00 d3140fb feat(data/mv_polynomial): lemmas on total_degree (#2575) This is a small preparation for the Chevalley–Warning theorem. ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.eval_one + theorem mv_polynomial.eval_pow +/- theorem mv_polynomial.total_degree_C + theorem mv_polynomial.total_degree_X + theorem mv_polynomial.total_degree_neg +/- theorem mv_polynomial.total_degree_one + theorem mv_polynomial.total_degree_pow + theorem mv_polynomial.total_degree_sub +/- theorem mv_polynomial.total_degree_zero 2020-04-30 21:10:46 c568bb4 fix(scripts): stop updating mathlib-nightly repository (#2576) The `gothub` tool that we've used to push the nightlies doesn't build at the moment. Now that we have `leanproject`, we no longer need the separate nightlies repository. ESTIMATED CHANGES Modified .github/workflows/build.yml Deleted scripts/deploy_nightly.sh Added scripts/update_branch.sh 2020-04-30 21:10:44 06adf7d chore(scripts): update nolints.txt (#2572) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-30 18:20:23 caf93b7 feat(*): small additions that prepare for Chevalley-Warning (#2560) A number a small changes that prepare for #1564. ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem is_unit.mk0 - theorem is_unit_iff_ne_zero Modified src/algebra/big_operators.lean + theorem finset.sum_mul_sum Modified src/algebra/group_with_zero.lean + theorem is_unit.mk0 + theorem is_unit_iff_ne_zero + theorem units.exists_iff_ne_zero Modified src/data/fintype/basic.lean + theorem finset.inter_univ + theorem finset.univ_inter + theorem set.to_finset_univ Modified src/data/fintype/card.lean + theorem fintype.prod_extend_by_one Modified src/group_theory/order_of_element.lean + theorem image_range_order_of + theorem is_cyclic.image_range_card + theorem is_cyclic.image_range_order_of 2020-04-30 14:07:21 8fa8f17 refactor(tsum): use ∑' instead of ∑ as notation (#2571) As discussed in: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/big.20ops/near/195821357 This is the result of ``` git grep -l '∑' | grep -v "mean_ineq" | xargs sed -i "s/∑/∑'/g" ``` after manually cleaning some occurences of `∑` in TeX strings. Probably `∑` has now also been changed in a lot of comments and docstrings, but my reasoning is that if the string "tsum" occurs in the file, then it doesn't do harm to write `∑'` instead of `∑` in the comments as well. ESTIMATED CHANGES Modified src/algebra/geom_sum.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean +/- theorem norm_tsum_le_tsum_norm Modified src/analysis/specific_limits.lean +/- theorem ennreal.tsum_geometric +/- theorem tsum_geometric +/- theorem tsum_geometric_nnreal +/- theorem tsum_geometric_two' +/- theorem tsum_geometric_two Modified src/data/real/cardinality.lean +/- def cardinal.cantor_function Modified src/measure_theory/integration.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.measure_Union_le Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean +/- theorem pmf.bind_apply +/- theorem pmf.tsum_coe Modified src/measure_theory/set_integral.lean Modified src/number_theory/bernoulli.lean Modified src/topology/algebra/infinite_sum.lean +/- theorem summable.has_sum +/- theorem summable.has_sum_iff +/- theorem tsum_add +/- theorem tsum_eq_has_sum +/- theorem tsum_eq_zero_add +/- theorem tsum_eq_zero_of_not_summable +/- theorem tsum_equiv +/- theorem tsum_fintype +/- theorem tsum_ite_eq +/- theorem tsum_le_tsum +/- theorem tsum_mul_left +/- theorem tsum_mul_right +/- theorem tsum_neg +/- theorem tsum_nonneg +/- theorem tsum_nonpos +/- theorem tsum_sub +/- theorem tsum_zero Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean +/- theorem nnreal.coe_tsum 2020-04-30 14:07:19 ee70afb doc(.github): remove pull-request template (#2568) Move the pull-request template to `CONTRIBUTING.md`. This reduces the boilerplate in the PR description that almost nobody reads anyhow. ESTIMATED CHANGES Renamed .github/PULL_REQUEST_TEMPLATE.md to .github/CONTRIBUTING.md 2020-04-30 11:23:34 9c8bc7a fix(tactic/interactive): make `inhabit` work on quantified goals (#2570) This didn't work before because of the `∀` in the goal: ```lean lemma c {α} [nonempty α] : ∀ n : ℕ, ∃ b : α, n = n := by inhabit α; intro; use default _; refl ``` ESTIMATED CHANGES Modified src/tactic/interactive.lean Added test/inhabit.lean + theorem a + theorem c 2020-04-30 07:10:15 b14a26e refactor(analysis/complex/exponential): split into three files in special_functions/ (#2565) The file `analysis/complex/exponential.lean` was growing out of control (2500 lines) and was dealing with complex and real exponentials, trigonometric functions, and power functions. I split it into three files corresponding to these three topics, and put them instead in `analysis/special_functions/`, as it was not specifically complex. This is purely a refactor, so absolutely no new material nor changed proof. Related Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.232565.20exponential.20split ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/real_inner_product.lean Added src/analysis/special_functions/exp_log.lean + theorem complex.continuous_exp + theorem complex.deriv_exp + theorem complex.differentiable_at_exp + theorem complex.differentiable_exp + theorem complex.has_deriv_at_exp + theorem complex.iter_deriv_exp + theorem deriv_cexp + theorem deriv_exp + theorem deriv_log' + theorem deriv_within_cexp + theorem deriv_within_exp + theorem deriv_within_log' + theorem differentiable.cexp + theorem differentiable.exp + theorem differentiable.log + theorem differentiable_at.cexp + theorem differentiable_at.exp + theorem differentiable_at.log + theorem differentiable_on.cexp + theorem differentiable_on.exp + theorem differentiable_on.log + theorem differentiable_within_at.cexp + theorem differentiable_within_at.exp + theorem differentiable_within_at.log + theorem has_deriv_at.cexp + theorem has_deriv_at.exp + theorem has_deriv_at.log + theorem has_deriv_within_at.cexp + theorem has_deriv_within_at.exp + theorem has_deriv_within_at.log + theorem real.continuous_at_log + theorem real.continuous_exp + theorem real.continuous_log' + theorem real.continuous_log + theorem real.deriv_exp + theorem real.differentiable_at_exp + theorem real.differentiable_exp + theorem real.exists_exp_eq_of_pos + theorem real.exp_log + theorem real.exp_log_eq_abs + theorem real.has_deriv_at_exp + theorem real.has_deriv_at_log + theorem real.has_deriv_at_log_of_pos + theorem real.iter_deriv_exp + theorem real.log_abs + theorem real.log_exp + theorem real.log_le_log + theorem real.log_lt_log + theorem real.log_lt_log_iff + theorem real.log_mul + theorem real.log_neg + theorem real.log_neg_eq_log + theorem real.log_neg_iff + theorem real.log_nonneg + theorem real.log_nonpos + theorem real.log_one + theorem real.log_pos + theorem real.log_pos_iff + theorem real.log_zero + theorem real.tendsto_exp_at_top + theorem real.tendsto_exp_div_pow_at_top + theorem real.tendsto_exp_neg_at_top_nhds_0 + theorem real.tendsto_log_one_zero + theorem real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Added src/analysis/special_functions/pow.lean + theorem complex.abs_cpow_inv_nat + theorem complex.abs_cpow_real + theorem complex.cpow_add + theorem complex.cpow_def + theorem complex.cpow_eq_pow + theorem complex.cpow_eq_zero_iff + theorem complex.cpow_int_cast + theorem complex.cpow_mul + theorem complex.cpow_nat_cast + theorem complex.cpow_nat_inv_pow + theorem complex.cpow_neg + theorem complex.cpow_one + theorem complex.cpow_zero + theorem complex.of_real_cpow + theorem complex.one_cpow + theorem complex.zero_cpow + theorem filter.tendsto.nnrpow + theorem nnreal.coe_rpow + theorem nnreal.continuous_at_rpow + theorem nnreal.mul_rpow + theorem nnreal.one_le_rpow + theorem nnreal.one_lt_rpow + theorem nnreal.one_rpow + theorem nnreal.pow_nat_rpow_nat_inv + theorem nnreal.rpow_add + theorem nnreal.rpow_eq_pow + theorem nnreal.rpow_eq_zero_iff + theorem nnreal.rpow_le_one + theorem nnreal.rpow_le_rpow + theorem nnreal.rpow_le_rpow_of_exponent_ge + theorem nnreal.rpow_le_rpow_of_exponent_le + theorem nnreal.rpow_lt_one + theorem nnreal.rpow_lt_rpow + theorem nnreal.rpow_lt_rpow_of_exponent_gt + theorem nnreal.rpow_lt_rpow_of_exponent_lt + theorem nnreal.rpow_mul + theorem nnreal.rpow_nat_cast + theorem nnreal.rpow_nat_inv_pow_nat + theorem nnreal.rpow_neg + theorem nnreal.rpow_one + theorem nnreal.rpow_zero + theorem nnreal.zero_rpow + theorem real.abs_rpow_le_abs_rpow + theorem real.continuous_at_rpow + theorem real.continuous_at_rpow_of_ne_zero + theorem real.continuous_at_rpow_of_pos + theorem real.continuous_rpow + theorem real.continuous_rpow_aux1 + theorem real.continuous_rpow_aux2 + theorem real.continuous_rpow_aux3 + theorem real.continuous_rpow_of_ne_zero + theorem real.continuous_rpow_of_pos + theorem real.continuous_sqrt + theorem real.mul_rpow + theorem real.one_le_rpow + theorem real.one_lt_rpow + theorem real.one_rpow + theorem real.pow_nat_rpow_nat_inv + theorem real.rpow_add + theorem real.rpow_def + theorem real.rpow_def_of_neg + theorem real.rpow_def_of_nonneg + theorem real.rpow_def_of_nonpos + theorem real.rpow_def_of_pos + theorem real.rpow_eq_pow + theorem real.rpow_eq_zero_iff_of_nonneg + theorem real.rpow_int_cast + theorem real.rpow_le_one + theorem real.rpow_le_rpow + theorem real.rpow_le_rpow_of_exponent_ge + theorem real.rpow_le_rpow_of_exponent_le + theorem real.rpow_lt_one + theorem real.rpow_lt_rpow + theorem real.rpow_lt_rpow_of_exponent_gt + theorem real.rpow_lt_rpow_of_exponent_lt + theorem real.rpow_mul + theorem real.rpow_nat_cast + theorem real.rpow_nat_inv_pow_nat + theorem real.rpow_neg + theorem real.rpow_nonneg_of_nonneg + theorem real.rpow_one + theorem real.rpow_pos_of_pos + theorem real.rpow_zero + theorem real.sqrt_eq_rpow + theorem real.zero_rpow Renamed src/analysis/complex/exponential.lean to src/analysis/special_functions/trigonometric.lean - theorem complex.abs_cpow_inv_nat - theorem complex.abs_cpow_real - theorem complex.continuous_exp - theorem complex.cpow_add - theorem complex.cpow_def - theorem complex.cpow_eq_pow - theorem complex.cpow_eq_zero_iff - theorem complex.cpow_int_cast - theorem complex.cpow_mul - theorem complex.cpow_nat_cast - theorem complex.cpow_nat_inv_pow - theorem complex.cpow_neg - theorem complex.cpow_one - theorem complex.cpow_zero - theorem complex.deriv_exp - theorem complex.differentiable_at_exp - theorem complex.differentiable_exp - theorem complex.has_deriv_at_exp - theorem complex.iter_deriv_exp - theorem complex.of_real_cpow - theorem complex.one_cpow - theorem complex.zero_cpow - theorem deriv_cexp - theorem deriv_exp - theorem deriv_log' - theorem deriv_within_cexp - theorem deriv_within_exp - theorem deriv_within_log' - theorem differentiable.cexp - theorem differentiable.exp - theorem differentiable.log - theorem differentiable_at.cexp - theorem differentiable_at.exp - theorem differentiable_at.log - theorem differentiable_on.cexp - theorem differentiable_on.exp - theorem differentiable_on.log - theorem differentiable_within_at.cexp - theorem differentiable_within_at.exp - theorem differentiable_within_at.log - theorem filter.tendsto.nnrpow - theorem has_deriv_at.cexp - theorem has_deriv_at.exp - theorem has_deriv_at.log - theorem has_deriv_at.rexp - theorem has_deriv_within_at.cexp - theorem has_deriv_within_at.exp - theorem has_deriv_within_at.log - theorem has_deriv_within_at.rexp - theorem nnreal.coe_rpow - theorem nnreal.continuous_at_rpow - theorem nnreal.mul_rpow - theorem nnreal.one_le_rpow - theorem nnreal.one_lt_rpow - theorem nnreal.one_rpow - theorem nnreal.pow_nat_rpow_nat_inv - theorem nnreal.rpow_add - theorem nnreal.rpow_eq_pow - theorem nnreal.rpow_eq_zero_iff - theorem nnreal.rpow_le_one - theorem nnreal.rpow_le_rpow - theorem nnreal.rpow_le_rpow_of_exponent_ge - theorem nnreal.rpow_le_rpow_of_exponent_le - theorem nnreal.rpow_lt_one - theorem nnreal.rpow_lt_rpow - theorem nnreal.rpow_lt_rpow_of_exponent_gt - theorem nnreal.rpow_lt_rpow_of_exponent_lt - theorem nnreal.rpow_mul - theorem nnreal.rpow_nat_cast - theorem nnreal.rpow_nat_inv_pow_nat - theorem nnreal.rpow_neg - theorem nnreal.rpow_one - theorem nnreal.rpow_zero - theorem nnreal.zero_rpow - theorem real.abs_rpow_le_abs_rpow - theorem real.continuous_at_log - theorem real.continuous_at_rpow - theorem real.continuous_at_rpow_of_ne_zero - theorem real.continuous_at_rpow_of_pos - theorem real.continuous_exp - theorem real.continuous_log' - theorem real.continuous_log - theorem real.continuous_rpow - theorem real.continuous_rpow_aux1 - theorem real.continuous_rpow_aux2 - theorem real.continuous_rpow_aux3 - theorem real.continuous_rpow_of_ne_zero - theorem real.continuous_rpow_of_pos - theorem real.continuous_sqrt - theorem real.deriv_exp - theorem real.differentiable_at_exp - theorem real.differentiable_exp - theorem real.exists_exp_eq_of_pos - theorem real.exp_log - theorem real.exp_log_eq_abs - theorem real.has_deriv_at_exp - theorem real.has_deriv_at_log - theorem real.has_deriv_at_log_of_pos - theorem real.iter_deriv_exp - theorem real.log_abs - theorem real.log_exp - theorem real.log_le_log - theorem real.log_lt_log - theorem real.log_lt_log_iff - theorem real.log_mul - theorem real.log_neg - theorem real.log_neg_eq_log - theorem real.log_neg_iff - theorem real.log_nonneg - theorem real.log_nonpos - theorem real.log_one - theorem real.log_pos - theorem real.log_pos_iff - theorem real.log_zero - theorem real.mul_rpow - theorem real.one_le_rpow - theorem real.one_lt_rpow - theorem real.one_rpow - theorem real.pow_nat_rpow_nat_inv - theorem real.rpow_add - theorem real.rpow_def - theorem real.rpow_def_of_neg - theorem real.rpow_def_of_nonneg - theorem real.rpow_def_of_nonpos - theorem real.rpow_def_of_pos - theorem real.rpow_eq_pow - theorem real.rpow_eq_zero_iff_of_nonneg - theorem real.rpow_int_cast - theorem real.rpow_le_one - theorem real.rpow_le_rpow - theorem real.rpow_le_rpow_of_exponent_ge - theorem real.rpow_le_rpow_of_exponent_le - theorem real.rpow_lt_one - theorem real.rpow_lt_rpow - theorem real.rpow_lt_rpow_of_exponent_gt - theorem real.rpow_lt_rpow_of_exponent_lt - theorem real.rpow_mul - theorem real.rpow_nat_cast - theorem real.rpow_nat_inv_pow_nat - theorem real.rpow_neg - theorem real.rpow_nonneg_of_nonneg - theorem real.rpow_one - theorem real.rpow_pos_of_pos - theorem real.rpow_zero - theorem real.sqrt_eq_rpow - theorem real.tendsto_exp_at_top - theorem real.tendsto_exp_div_pow_at_top - theorem real.tendsto_exp_neg_at_top_nhds_0 - theorem real.tendsto_log_one_zero - theorem real.tendsto_pow_mul_exp_neg_at_top_nhds_0 - theorem real.zero_rpow Modified src/data/real/pi.lean Modified test/differentiable.lean Modified test/simp_command.lean 2020-04-29 17:26:19 e6491de chore(data/equiv/ring): make ring_aut reducible (#2563) This makes the coercion to fun work. This is the same approach as we used for `perm` and it worked okay for `perm`. Related Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/ring_aut.20coerce.20to.20function ESTIMATED CHANGES Modified src/data/equiv/ring.lean +/- def ring_aut 2020-04-29 16:12:56 8490c54 refactor(analysis/complex/exponential): define log x = log |x| for x < 0 (#2564) Previously we had `log x = 0` for `x < 0`. This PR changes it to `log x = log (-x)`, to make sure that the formulas `log (xy) = log x + log y` and `log' = 1/x` are true for all nonzero variables. Also, add a few simp lemmas on the differentiability properties of `log` to make sure that the following works: ```lean example (x : ℝ) (h : x ≠ 0) : deriv (λ x, x * (log x - 1)) x = log x := by simp [h] ``` Related Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/definition.20of.20real.20log ESTIMATED CHANGES Modified src/analysis/complex/exponential.lean + theorem complex.log_of_real_re + theorem deriv_log' + theorem deriv_within_log' + theorem differentiable.log + theorem differentiable_at.log + theorem differentiable_on.log + theorem differentiable_within_at.log + theorem has_deriv_at.log + theorem has_deriv_within_at.log +/- theorem real.exp_log + theorem real.exp_log_eq_abs +/- theorem real.has_deriv_at_log + theorem real.has_deriv_at_log_of_pos + theorem real.log_abs +/- theorem real.log_le_log +/- theorem real.log_mul + theorem real.log_neg_eq_log +/- theorem real.log_nonpos +/- theorem real.log_pos +/- theorem real.log_pos_iff +/- theorem real.rpow_def_of_neg Modified test/differentiable.lean 2020-04-29 13:32:57 4580069 feat(field_theory/subfield): is_subfield.inter and is_subfield.Inter (#2562) Prove that intersection of subfields is subfield. ESTIMATED CHANGES Modified src/field_theory/subfield.lean 2020-04-29 10:32:44 84f8b39 chore(data/nat/basic): move `iterate_inj` to `injective.iterate` (#2561) Also add versions for `surjective` and `bijective` ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem function.bijective.iterate + theorem function.injective.iterate + theorem function.surjective.iterate + theorem nat.iterate_ind - theorem nat.iterate_inj Modified src/field_theory/perfect_closure.lean 2020-04-29 07:43:15 f8fe596 chore(algebra/*): missing `simp`/`inj` lemmas (#2557) Sometimes I have a specialized `ext` lemma for `A →+ B` that uses structure of `A` (e.g., `A = monoid_algebra α R`) and want to apply it to `A →+* B` or `A →ₐ[R] B`. These `coe_*_inj` lemmas make it easier. Also add missing `simp` lemmas for bundled multiplication and rename `pow_of_add` and `gpow_of_add` to `of_add_smul` and `of_add_gsmul`, respectively. ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem add_monoid_hom.coe_mul_left + theorem add_monoid_hom.mul_right_apply Modified src/algebra/group_power.lean - theorem gpow_of_add + theorem mnat_monoid_hom_eq + theorem mnat_monoid_hom_ext + theorem of_add_gsmul + theorem of_add_smul - theorem pow_of_add + theorem powers_hom_apply + theorem powers_hom_symm_apply Modified src/algebra/ring.lean - theorem coe_add_monoid_hom' +/- theorem coe_add_monoid_hom - theorem coe_monoid_hom' +/- theorem coe_monoid_hom + theorem ring_hom.coe_add_monoid_hom_inj + theorem ring_hom.coe_monoid_hom_inj Modified src/ring_theory/algebra.lean + theorem alg_hom.coe_add_monoid_hom_inj + theorem alg_hom.coe_fn_inj + theorem alg_hom.coe_monoid_hom_inj + theorem alg_hom.coe_ring_hom_inj + theorem alg_hom.coe_to_add_monoid_hom 2020-04-29 05:44:26 cb3a017 chore(category_theory): remove `[𝒞 : category.{v₁} C] / include 𝒞` (#2556) It is no longer necessary in Lean 3.9.0, thanks to https://github.com/leanprover-community/lean/commit/01063857bb6814374156433e8cbc0c94a9483f52 ESTIMATED CHANGES Modified docs/theories/category_theory.md Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/default.lean Modified src/category_theory/comma.lean Modified src/category_theory/connected.lean Modified src/category_theory/const.lean Modified src/category_theory/core.lean Modified src/category_theory/currying.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/functorial.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/hom_functor.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/isomorphism_classes.lean Modified src/category_theory/limits/concrete_category.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/constructions/equalizers.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/strong_epi.lean Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/limits/shapes/wide_pullbacks.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/basic.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/of_has_finite_products.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/natural_transformation.lean Modified src/category_theory/opposites.lean Modified src/category_theory/pempty.lean Modified src/category_theory/products/associator.lean Modified src/category_theory/products/basic.lean Modified src/category_theory/products/bifunctor.lean Modified src/category_theory/punit.lean Modified src/category_theory/reflect_isomorphisms.lean Modified src/category_theory/shift.lean Modified src/category_theory/sums/associator.lean Modified src/category_theory/sums/basic.lean Modified src/category_theory/types.lean Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean 2020-04-29 04:34:22 ba9fc4d doc(install/*): remove outdated youtube links (#2559) Fixes #2558. ESTIMATED CHANGES Modified docs/install/macos.md Modified docs/install/windows.md 2020-04-28 23:03:24 94ff59a chore(scripts): update nolints.txt (#2555) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-28 19:57:52 d12db89 chore(category): rename to control (#2516) This is parallel to https://github.com/leanprover-community/lean/pull/202 for community Lean (now merged). It seems the changes are actually completely independent; this compiles against current community Lean, and that PR. (I'm surprised, but I guess it's just that everything is in the root namespace, and in `init/`.) This PR anticipates then renaming `category_theory/` to `category/`. ESTIMATED CHANGES Deleted src/category/traversable/default.lean Modified src/category_theory/core.lean Renamed src/category/applicative.lean to src/control/applicative.lean Renamed src/category/basic.lean to src/control/basic.lean Renamed src/category/bifunctor.lean to src/control/bifunctor.lean Renamed src/category/bitraversable/basic.lean to src/control/bitraversable/basic.lean Renamed src/category/bitraversable/instances.lean to src/control/bitraversable/instances.lean Renamed src/category/bitraversable/lemmas.lean to src/control/bitraversable/lemmas.lean Renamed src/category/equiv_functor.lean to src/control/equiv_functor.lean Renamed src/category/equiv_functor/instances.lean to src/control/equiv_functor/instances.lean Renamed src/category/fold.lean to src/control/fold.lean Renamed src/category/functor.lean to src/control/functor.lean Renamed src/category/monad/basic.lean to src/control/monad/basic.lean Renamed src/category/monad/cont.lean to src/control/monad/cont.lean Renamed src/category/monad/writer.lean to src/control/monad/writer.lean Renamed src/category/traversable/basic.lean to src/control/traversable/basic.lean Added src/control/traversable/default.lean Renamed src/category/traversable/derive.lean to src/control/traversable/derive.lean Renamed src/category/traversable/equiv.lean to src/control/traversable/equiv.lean Renamed src/category/traversable/instances.lean to src/control/traversable/instances.lean Renamed src/category/traversable/lemmas.lean to src/control/traversable/lemmas.lean Modified src/data/array/lemmas.lean Modified src/data/buffer/basic.lean Modified src/data/dlist/instances.lean Modified src/data/equiv/functor.lean Modified src/data/fin_enum.lean Modified src/data/lazy_list2.lean Modified src/data/multiset.lean Modified src/tactic/converter/old_conv.lean Modified src/tactic/core.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/squeeze.lean Modified test/equiv_rw.lean Modified test/traversable.lean 2020-04-28 19:57:50 c435b1c feat(analysis/calculus/inverse): Inverse function theorem (#2228) Ref #1849 ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_o.def' + theorem asymptotics.is_o.right_is_O_add + theorem asymptotics.is_o.right_is_O_sub Modified src/analysis/calculus/deriv.lean + theorem has_deriv_at.has_fderiv_at_equiv + theorem has_deriv_at.of_local_left_inverse + theorem has_strict_deriv_at.has_strict_fderiv_at_equiv + theorem has_strict_deriv_at.of_local_left_inverse Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at.of_local_left_inverse + theorem has_fderiv_at_filter.is_O_sub_rev - theorem has_strict_fderiv_at.comp - theorem has_strict_fderiv_at.continuous_at - theorem has_strict_fderiv_at.differentiable_at - theorem has_strict_fderiv_at.has_fderiv_at + theorem has_strict_fderiv_at.is_O_sub_rev + theorem has_strict_fderiv_at.of_local_left_inverse - theorem has_strict_fderiv_at.prod Added src/analysis/calculus/inverse.lean + theorem approximates_linear_on.closed_ball_subset_target + def approximates_linear_on.inverse_approx_map + theorem approximates_linear_on.inverse_approx_map_contracts_on + theorem approximates_linear_on.inverse_approx_map_dist_self + theorem approximates_linear_on.inverse_approx_map_dist_self_le + theorem approximates_linear_on.inverse_approx_map_fixed_iff + theorem approximates_linear_on.inverse_approx_map_maps_to + theorem approximates_linear_on.inverse_approx_map_sub + theorem approximates_linear_on.inverse_continuous_on + theorem approximates_linear_on.lipschitz_sub + theorem approximates_linear_on.mono_num + theorem approximates_linear_on.mono_set + theorem approximates_linear_on.surj_on_closed_ball + def approximates_linear_on.to_local_equiv + def approximates_linear_on.to_local_homeomorph + theorem approximates_linear_on.to_local_homeomorph_source + theorem approximates_linear_on.to_local_homeomorph_target + theorem approximates_linear_on.to_local_homeomorph_to_fun + def approximates_linear_on + def has_strict_deriv_at.local_inverse + theorem has_strict_deriv_at.to_local_inverse + theorem has_strict_deriv_at.to_local_left_inverse + theorem has_strict_fderiv_at.approximates_deriv_on_nhds + theorem has_strict_fderiv_at.approximates_deriv_on_open_nhds + theorem has_strict_fderiv_at.eventually_left_inverse + theorem has_strict_fderiv_at.eventually_right_inverse + theorem has_strict_fderiv_at.image_mem_to_local_homeomorph_target + def has_strict_fderiv_at.local_inverse + theorem has_strict_fderiv_at.local_inverse_apply_image + theorem has_strict_fderiv_at.local_inverse_continuous_at + theorem has_strict_fderiv_at.mem_to_local_homeomorph_source + def has_strict_fderiv_at.to_local_homeomorph + theorem has_strict_fderiv_at.to_local_homeomorph_to_fun + theorem has_strict_fderiv_at.to_local_inverse + theorem has_strict_fderiv_at.to_local_left_inverse Modified src/analysis/complex/exponential.lean + theorem real.has_deriv_at_log Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_equiv.is_O_comp + theorem continuous_linear_equiv.is_O_comp_rev + theorem continuous_linear_equiv.is_O_sub + theorem continuous_linear_equiv.is_O_sub_rev Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.inv_fun_tendsto Modified src/topology/metric_space/antilipschitz.lean 2020-04-28 17:54:30 3c02800 chore(data/dfinsupp): use more precise `decidable` requirement (#2535) Removed `decidable_zero_symm` and replaced all `[Π i, decidable_pred (eq (0 : β i))]` with `[Π i (x : β i), decidable (x ≠ 0)]`. This should work better with `open_locale classical` because now the lemmas and definitions don't assume that `[Π i (x : β i), decidable (x ≠ 0)]` comes from `decidable_zero_symm`. ESTIMATED CHANGES Modified src/data/dfinsupp.lean - def decidable_zero_symm +/- theorem dfinsupp.eq_mk_support +/- theorem dfinsupp.map_range_def +/- def dfinsupp.prod +/- theorem dfinsupp.prod_add_index +/- theorem dfinsupp.prod_neg_index +/- theorem dfinsupp.prod_single_index +/- theorem dfinsupp.prod_subtype_domain_index +/- theorem dfinsupp.prod_zero_index +/- theorem dfinsupp.single_apply +/- theorem dfinsupp.smul_apply +/- theorem dfinsupp.sub_apply +/- theorem dfinsupp.subtype_domain_add +/- theorem dfinsupp.subtype_domain_neg +/- theorem dfinsupp.subtype_domain_sub +/- def dfinsupp.sum +/- theorem dfinsupp.sum_add +/- theorem dfinsupp.sum_neg +/- theorem dfinsupp.sum_sub_index +/- theorem dfinsupp.sum_zero +/- theorem dfinsupp.support_add +/- theorem dfinsupp.support_mk_subset +/- theorem dfinsupp.support_neg +/- def dfinsupp.to_has_scalar +/- def dfinsupp.to_module +/- def dfinsupp.zip_with +/- def dfinsupp 2020-04-28 15:02:18 f6c9372 feat(data/fin): add some lemmas about coercions (#2522) Two of these lemmas allow norm_cast to work with inequalities involving fin values converted to ℕ. The rest are for simplifying expressions where coercions are used to convert from ℕ to fin, in cases where an inequality means those coercions do not in fact change the value. There are very few lemmas relating to coercions from ℕ to fin in mathlib at present; the lemma of_nat_eq_coe (and val_add on which it depends, and a few similarly trivial lemmas alongside val_add) is moved from data.zmod.basic to fin.basic for use in proving the other lemmas, while the nat lemma add_mod is moved to data.nat.basic for use in the proof of of_nat_eq_coe, and mul_mod is moved alongside it as suggested in review. These lemmas were found useful in formalising solutions to an olympiad problem, see , and seem more generally relevant than to just that particular problem. ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.coe_coe_eq_self + theorem fin.coe_coe_of_lt + theorem fin.coe_fin_le + theorem fin.coe_fin_lt + theorem fin.coe_val_eq_self + theorem fin.coe_val_of_lt + theorem fin.of_nat_eq_coe + theorem fin.one_val + theorem fin.val_add + theorem fin.val_mul + theorem fin.zero_val Modified src/data/nat/basic.lean + theorem nat.add_mod + theorem nat.mul_mod Modified src/data/nat/modeq.lean - theorem nat.add_mod - theorem nat.mul_mod Modified src/data/zmod/basic.lean - theorem fin.of_nat_eq_coe - theorem fin.one_val - theorem fin.val_add - theorem fin.val_mul - theorem fin.zero_val 2020-04-28 12:08:15 f567962 feat(data/complex/basic): inv_I and div_I (#2550) ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.div_I + theorem complex.inv_I 2020-04-28 12:08:13 9c81886 fix(tactic/doc_commands): clean up copy_doc_string command (#2543) #2471 added a command for copying a doc string from one decl to another. This PR: * documents this command * extends it to copy to a list of decls * moves `add_doc_string` from root to the `tactic` namespace ESTIMATED CHANGES Modified src/tactic/doc_commands.lean Modified src/tactic/nth_rewrite/default.lean 2020-04-28 06:54:15 ae06db3 feat(category_theory/concrete): make constructing morphisms easier (#2502) Previously, if you wrote: ```lean example (R : CommMon.{u}) : R ⟶ R := { to_fun := λ x, _, map_one' := sorry, map_mul' := sorry, } ``` you were told the expected type was `↥(bundled.map comm_monoid.to_monoid R)`, which is not particularly reassuring unless you understand the details of how we've set up concrete categories. If you called `dsimp`, this got better, just giving `R.α`. This still isn't ideal, as we prefer to talk about the underlying type of a bundled object via the coercion, not the structure projection. After this PR, which provides a slightly different mechanism for constructing "induced" categories from bundled categories, the expected type is exactly what you might have hoped for: `↥R`. There seems to be one place where we used to get away with writing `𝟙 _` and now have to write `𝟙 A`, but otherwise there appear to be no ill-effects of this change. (For follow-up, I think I can entirely get rid of our `local attribute [reducible]` work-arounds when setting up concrete categories, and in fact construct most of the instances in `@[derive]` handlers, but these will be separate PRs.) ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean +/- def CommRing +/- def CommSemiRing +/- def Ring Modified src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebra/category/Group/basic.lean +/- def CommGroup +/- def Group Modified src/algebra/category/Mon/basic.lean +/- def CommMon Modified src/category_theory/concrete_category/bundled_hom.lean + def category_theory.bundled_hom.map + def category_theory.bundled_hom.map_hom Modified src/tactic/interactive.lean 2020-04-27 16:34:48 fd3afb4 chore(ring_theory/algebra): move instances about complex to get rid of dependency (#2549) Previously `ring_theory.algebra` imported the complex numbers. This PR moves some instances in order to get rid of that dependency. ESTIMATED CHANGES Modified src/analysis/convex/basic.lean Added src/data/complex/module.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/power_series.lean Modified src/topology/algebra/polynomial.lean 2020-04-27 14:30:55 948d0ff chore(topology/algebra/module): don't use unbundled homs for `algebra` instance (#2545) Define special `algebra.of_semimodule` and `algebra.of_semimodule'` constructors instead. ref. #2534 ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + def algebra.of_semimodule' + def algebra.of_semimodule Modified src/topology/algebra/module.lean + theorem continuous_linear_map.mul_apply 2020-04-27 05:41:19 2fc9b15 chore(data/real/*): use bundled homs to prove `coe_sum` etc (#2533) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem ring_hom.map_list_prod + theorem ring_hom.map_list_sum + theorem ring_hom.map_multiset_prod + theorem ring_hom.map_multiset_sum Modified src/data/real/ennreal.lean + theorem ennreal.coe_of_nnreal_hom + def ennreal.of_nnreal_hom Modified src/data/real/nnreal.lean + theorem nnreal.coe_to_real_hom + def nnreal.to_real_hom 2020-04-26 21:58:07 134c5a5 chore(scripts): update nolints.txt (#2548) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-26 20:47:49 039c5a6 chore(ring_theory/adjoin_root): drop `is_ring_hom` instance (#2546) ref #2534 ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2020-04-26 19:06:10 942b795 doc(field_theory/subfield): don't mention unbundled homs in the comment (#2544) ref #2534 ESTIMATED CHANGES Modified src/field_theory/subfield.lean 2020-04-26 13:59:51 fa13d16 chore(scripts): update nolints.txt (#2542) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-26 12:04:36 30ae5ba chore(scripts): update nolints.txt (#2541) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-26 12:04:34 74b9647 feat(measure_theory/measure_space): pigeonhole principle in a measure space (#2538) ref #2272 ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.exists_nonempty_inter_of_volume_univ_lt_sum_volume + theorem measure_theory.exists_nonempty_inter_of_volume_univ_lt_tsum_volume + theorem measure_theory.sum_volume_le_volume_univ + theorem measure_theory.tsum_volume_le_volume_univ 2020-04-26 09:29:30 c170ce3 chore(data/finset): add `coe_map`, `coe_image_subset_range`, and `coe_map_subset_range` (#2530) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.coe_image_subset_range + theorem finset.coe_map + theorem finset.coe_map_subset_range 2020-04-26 09:29:28 40e97d3 feat(topology/algebra/module): ker, range, cod_restrict, subtype_val, coprod (#2525) Also move `smul_right` to `general_ring` and define some maps/equivalences useful for the inverse/implicit function theorem. ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem units.coe_mk Modified src/topology/algebra/module.lean + def continuous_linear_equiv.equiv_of_inverse + theorem continuous_linear_equiv.equiv_of_inverse_apply + def continuous_linear_equiv.equiv_of_right_inverse + theorem continuous_linear_equiv.equiv_of_right_inverse_symm_apply + theorem continuous_linear_equiv.ext₁ + theorem continuous_linear_equiv.fst_equiv_of_right_inverse + theorem continuous_linear_equiv.snd_equiv_of_right_inverse + theorem continuous_linear_equiv.symm_equiv_of_inverse + def continuous_linear_equiv.units_equiv_aut + theorem continuous_linear_equiv.units_equiv_aut_apply + theorem continuous_linear_equiv.units_equiv_aut_apply_symm + theorem continuous_linear_equiv.units_equiv_aut_symm_apply + theorem continuous_linear_map.apply_ker + def continuous_linear_map.cod_restrict + theorem continuous_linear_map.coe_cod_restrict + theorem continuous_linear_map.coe_cod_restrict_apply + theorem continuous_linear_map.coe_coprod + theorem continuous_linear_map.coe_prod_map' + theorem continuous_linear_map.coe_proj_ker_of_right_inverse_apply + theorem continuous_linear_map.coe_subtype_val + def continuous_linear_map.coprod + theorem continuous_linear_map.coprod_apply + theorem continuous_linear_map.is_closed_ker + def continuous_linear_map.ker + theorem continuous_linear_map.ker_coe + theorem continuous_linear_map.mem_ker + theorem continuous_linear_map.mem_range - theorem continuous_linear_map.prod_map_apply + def continuous_linear_map.proj_ker_of_right_inverse + theorem continuous_linear_map.proj_ker_of_right_inverse_apply_idem + theorem continuous_linear_map.proj_ker_of_right_inverse_comp_inv + def continuous_linear_map.range + theorem continuous_linear_map.range_coe + theorem continuous_linear_map.smul_right_comp + def continuous_linear_map.subtype_val + theorem continuous_linear_map.subtype_val_apply 2020-04-26 09:29:26 11ccc1b feat(analysis/calculus/deriv): define `has_strict_deriv_at` (#2524) Also make more proofs explicitly use their `has_fderiv*` counterparts and mark some lemmas in `fderiv` as `protected`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem continuous_linear_map.deriv + theorem continuous_linear_map.deriv_within + theorem continuous_linear_map.has_deriv_at + theorem continuous_linear_map.has_deriv_at_filter + theorem continuous_linear_map.has_deriv_within_at + theorem continuous_linear_map.has_strict_deriv_at - theorem has_deriv_at_inv_one + theorem has_fderiv_at.has_deriv_at + theorem has_fderiv_at_filter.has_deriv_at_filter + theorem has_fderiv_within_at.has_deriv_within_at + theorem has_strict_deriv_at.add + theorem has_strict_deriv_at.comp + theorem has_strict_deriv_at.has_deriv_at + theorem has_strict_deriv_at.mul + theorem has_strict_deriv_at.neg + theorem has_strict_deriv_at.scomp + theorem has_strict_deriv_at.smul + theorem has_strict_deriv_at.sub + def has_strict_deriv_at + theorem has_strict_deriv_at_const + theorem has_strict_deriv_at_fpow + theorem has_strict_deriv_at_id + theorem has_strict_deriv_at_inv + theorem has_strict_deriv_at_pow + theorem has_strict_fderiv_at.has_strict_deriv_at + theorem has_strict_fderiv_at_iff_has_strict_deriv_at - theorem is_linear_map.deriv - theorem is_linear_map.deriv_within - theorem is_linear_map.differentiable - theorem is_linear_map.differentiable_at - theorem is_linear_map.differentiable_on - theorem is_linear_map.differentiable_within_at - theorem is_linear_map.has_deriv_at - theorem is_linear_map.has_deriv_at_filter - theorem is_linear_map.has_deriv_within_at + theorem linear_map.deriv + theorem linear_map.deriv_within + theorem linear_map.has_deriv_at + theorem linear_map.has_deriv_at_filter + theorem linear_map.has_deriv_within_at + theorem linear_map.has_strict_deriv_at Modified src/analysis/calculus/fderiv.lean - theorem differentiable.fst - theorem differentiable.snd - theorem differentiable_at.fst - theorem differentiable_at.prod_map - theorem differentiable_at.snd - theorem differentiable_on.fst - theorem differentiable_on.snd - theorem differentiable_within_at.fst - theorem differentiable_within_at.snd - theorem has_fderiv_at.fst - theorem has_fderiv_at.prod_map - theorem has_fderiv_at.snd - theorem has_fderiv_at_filter.fst - theorem has_fderiv_at_filter.snd - theorem has_fderiv_within_at.fst - theorem has_fderiv_within_at.snd + theorem has_strict_fderiv_at.congr_of_mem_sets - theorem has_strict_fderiv_at.fst - theorem has_strict_fderiv_at.prod_map Modified src/analysis/normed_space/operator_norm.lean + def linear_map.to_continuous_linear_map₁ + theorem linear_map.to_continuous_linear_map₁_apply + theorem linear_map.to_continuous_linear_map₁_coe Modified src/linear_algebra/basic.lean 2020-04-26 06:46:28 21b7292 feat(data/nat/basic): add `iterate_one` and `iterate_mul` (#2540) ESTIMATED CHANGES Modified src/data/nat/basic.lean +/- theorem nat.iterate_cancel + theorem nat.iterate_mul + theorem nat.iterate_one +/- theorem nat.iterate₂ 2020-04-26 06:46:26 21d8e0a chore(data/real/ennreal): +2 simple lemmas (#2539) Extracted from #2311 ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.exists_nat_mul_gt 2020-04-26 06:46:24 401d321 feat(analysis/normed_space/basic): add continuous_at.div (#2532) When proving a particular function continuous at a particular point, lemmas such as continuous_at.mul, continuous_at.add and continuous_at.comp can be used to build this up from continuity properties of simpler functions. It's convenient to have something similar for division as well. This adds continuous_at.div for normed fields, as suggested by Yury. If mathlib gets topological (semi)fields in future, this should become a result for those. ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem continuous_at.div 2020-04-26 06:46:22 1182e91 refactor(tactic/nth_rewrite): enable rewriting hypotheses, add docstrings (#2471) This PR * renames the interactive tactic `perform_nth_rewrite` to `nth_rewrite` * enables rewriting at hypotheses, instead of only the target * renames the directory and namespace `rewrite_all` to `nth_rewrite` * adds a bunch of docstrings ESTIMATED CHANGES Added src/meta/expr_lens.lean + def expr_lens.dir.to_string + inductive expr_lens.dir Modified src/tactic/doc_commands.lean Added src/tactic/nth_rewrite/basic.lean Added src/tactic/nth_rewrite/congr.lean Added src/tactic/nth_rewrite/default.lean Deleted src/tactic/rewrite_all/congr.lean Deleted src/tactic/rewrite_all/default.lean Added test/expr_lens.lean Renamed test/rewrite_all.lean to test/nth_rewrite.lean 2020-04-26 03:56:10 c34add7 chore(scripts): update nolints.txt (#2537) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-26 03:56:08 bda206a chore(data/option,order/bounded_lattice): 2 simple lemmas about `get_or_else` (#2531) I'm going to use these lemmas for `polynomial.nat_degree`. I don't want to PR this change to `data/polynomial` because this would create merge conflicts later. ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.get_or_else_of_ne_none Modified src/order/bounded_lattice.lean +/- theorem with_bot.bot_lt_coe +/- theorem with_bot.bot_lt_some + theorem with_bot.le_coe_get_or_else 2020-04-26 03:56:06 ee6f20a chore(algebra/module): use bundled homs for `smul_sum` and `sum_smul` (#2529) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + def monoid_hom.flip + theorem monoid_hom.flip_apply + theorem monoid_hom.inv_apply + theorem monoid_hom.mul_apply + theorem monoid_hom.one_apply Modified src/algebra/module.lean + def smul_add_hom + theorem smul_add_hom_apply Modified src/group_theory/group_action.lean + def const_smul_hom + theorem const_smul_hom_apply Modified src/ring_theory/noetherian.lean 2020-04-25 23:03:27 5219ca1 doc(data/nat/modeq): add module docstring and lemma (#2528) I add a simple docstrong and also a lemma which I found useful for a codewars kata. ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem nat.modeq.modeq_iff_dvd' 2020-04-25 23:03:25 ba4dc1a doc(algebra/order_functions): add docstring and lemma (#2526) I added a missing lemma, and then figured that while I was here I should add a docstring ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem lt_abs 2020-04-25 19:55:53 a8ae8e8 feat(data/bool): add de Morgan's laws (#2523) I will go away with my tail between my legs if someone can show me that our esteemed mathematics library already contains de Morgan's laws for booleans. I also added a docstring. I can't lint the file because it's so high up in the import heirarchy, but I also added a docstring for the two instances. ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.bnot_band + theorem bool.bnot_bor + theorem bool.bnot_inj 2020-04-25 19:55:51 94fd41a refactor(data/padics/*): use [fact p.prime] to assume that p is prime (#2519) ESTIMATED CHANGES Modified docs/theories/padics.md Modified src/data/padics/hensel.lean +/- theorem padic_polynomial_dist Modified src/data/padics/padic_integers.lean +/- def padic_int Modified src/data/padics/padic_norm.lean +/- theorem padic_val_rat.finite_int_prime_iff +/- theorem padic_val_rat_def Modified src/data/padics/padic_numbers.lean +/- theorem padic.rat_dense' +/- theorem padic.rat_dense +/- def padic +/- theorem padic_norm_e.eq_of_norm_add_lt_left +/- theorem padic_norm_e.eq_of_norm_add_lt_right +/- def padic_norm_e +/- def padic_seq Modified src/data/real/irrational.lean 2020-04-25 18:43:05 632c4ba feat(continued_fractions) add equivalence of convergents computations (#2459) ### What Add lemmas showing that the two methods for computing the convergents of a continued fraction (recurrence relation vs direct evaluation) coincide. A high-level overview on how the proof works is given in the header of the file. ### Why One wants to be able to relate both computations. The recurrence relation can be faster to compute, the direct evaluation is more intuitive and might be easier for some proofs. ### How The proof of the equivalence is by induction. To make the induction work, one needs to "squash" a sequence into a shorter one while maintaining the value of the convergents computations. Most lemmas in this commit deal with this squashing operation. ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/continued_fractions/basic.lean +/- def generalized_continued_fraction.continuants +/- def generalized_continued_fraction.continuants_aux +/- def generalized_continued_fraction.convergents' +/- def generalized_continued_fraction.convergents'_aux +/- def generalized_continued_fraction.convergents +/- def generalized_continued_fraction.denominators +/- def generalized_continued_fraction.next_continuants +/- def generalized_continued_fraction.next_denominator +/- def generalized_continued_fraction.next_numerator +/- def generalized_continued_fraction.numerators Modified src/algebra/continued_fractions/continuants_recurrence.lean +/- theorem generalized_continued_fraction.continuants_aux_recurrence +/- theorem generalized_continued_fraction.continuants_recurrence +/- theorem generalized_continued_fraction.continuants_recurrence_aux +/- theorem generalized_continued_fraction.denominators_recurrence +/- theorem generalized_continued_fraction.numerators_recurrence Added src/algebra/continued_fractions/convergents_equiv.lean + theorem continued_fraction.convergents_eq_convergents' + theorem generalized_continued_fraction.continuants_aux_eq_continuants_aux_squash_gcf_of_le + theorem generalized_continued_fraction.convergents_eq_convergents' + def generalized_continued_fraction.squash_gcf + theorem generalized_continued_fraction.squash_gcf_eq_self_of_terminated + theorem generalized_continued_fraction.squash_gcf_nth_of_lt + def generalized_continued_fraction.squash_seq + theorem generalized_continued_fraction.squash_seq_eq_self_of_terminated + theorem generalized_continued_fraction.squash_seq_nth_of_lt + theorem generalized_continued_fraction.squash_seq_nth_of_not_terminated + theorem generalized_continued_fraction.squash_seq_succ_n_tail_eq_squash_seq_tail_n + theorem generalized_continued_fraction.succ_nth_convergent'_eq_squash_gcf_nth_convergent' + theorem generalized_continued_fraction.succ_nth_convergent_eq_squash_gcf_nth_convergent + theorem generalized_continued_fraction.succ_succ_nth_convergent'_aux_eq_succ_nth_convergent'_aux_squash_seq Modified src/algebra/continued_fractions/default.lean Modified src/algebra/continued_fractions/terminated_stable.lean +/- theorem generalized_continued_fraction.convergents'_aux_stable_of_terminated +/- theorem generalized_continued_fraction.convergents'_aux_stable_step_of_terminated Modified src/algebra/continued_fractions/translations.lean +/- theorem generalized_continued_fraction.obtain_conts_a_of_num +/- theorem generalized_continued_fraction.obtain_conts_b_of_denom +/- theorem generalized_continued_fraction.zeroth_convergent'_aux_eq_zero 2020-04-25 09:58:14 d9327e4 refactor(geometry/manifold/real_instances): use fact instead of lt_class (#2521) To define a manifold with boundary structure on the interval `[x, y]`, typeclass inference needs to know that `x < y`. This used to be provided by the introduction of a dummy class `lt_class`. The new mechanism based on `fact` makes it possible to remove this dummy class. ESTIMATED CHANGES Modified src/geometry/manifold/real_instances.lean +/- def Icc_left_chart +/- def Icc_right_chart - def lt_class 2020-04-25 09:58:12 2b95532 refactor(*): use [fact p.prime] for frobenius and perfect_closure (#2518) This also removes the dependency of `algebra.char_p` on `data.padics.padic_norm`, which was only there to make `nat.prime` a class. I also used this opportunity to rename all alphas and betas to `K` and `L` in the perfect closure file. ESTIMATED CHANGES Modified src/algebra/char_p.lean +/- theorem frobenius_inj +/- theorem monoid_hom.iterate_map_frobenius +/- theorem ring_hom.iterate_map_frobenius Modified src/field_theory/perfect_closure.lean +/- theorem coe_frobenius_equiv +/- theorem coe_frobenius_equiv_symm +/- theorem eq_pth_root_iff +/- def frobenius_equiv +/- theorem frobenius_pth_root +/- theorem monoid_hom.map_iterate_pth_root +/- theorem monoid_hom.map_pth_root +/- theorem perfect_closure.eq_iff' +/- theorem perfect_closure.eq_iff +/- theorem perfect_closure.eq_pth_root +/- theorem perfect_closure.frobenius_mk +/- theorem perfect_closure.induction_on +/- theorem perfect_closure.int_cast +/- def perfect_closure.lift +/- def perfect_closure.lift_on +/- theorem perfect_closure.lift_on_mk +/- def perfect_closure.mk +/- theorem perfect_closure.mk_add_mk +/- theorem perfect_closure.mk_mul_mk +/- theorem perfect_closure.mk_zero +/- theorem perfect_closure.nat_cast +/- theorem perfect_closure.nat_cast_eq_iff +/- theorem perfect_closure.neg_mk +/- def perfect_closure.of +/- theorem perfect_closure.of_apply +/- theorem perfect_closure.one_def +/- theorem perfect_closure.quot_mk_eq_mk +/- theorem perfect_closure.r.sound +/- inductive perfect_closure.r +/- theorem perfect_closure.zero_def +/- def perfect_closure +/- def pth_root +/- theorem pth_root_eq_iff +/- theorem pth_root_frobenius +/- theorem ring_hom.map_iterate_pth_root +/- theorem ring_hom.map_pth_root 2020-04-25 08:51:08 f192f2f chore(*): move quadratic_reciprocity to number_theory/ (#2520) I've never really understood why we put all these cool theorems under the data/ directory, so I suggest moving them out of there, and into the place where thy "belong". ESTIMATED CHANGES Modified src/data/zsqrtd/gaussian_int.lean Renamed src/data/zmod/quadratic_reciprocity.lean to src/number_theory/quadratic_reciprocity.lean 2020-04-25 05:42:30 3c8584d feat(order/filter/bases): add `exists_iff` and `forall_iff` (#2507) ESTIMATED CHANGES Modified src/order/filter/bases.lean + theorem filter.has_basis.exists_iff + theorem filter.has_basis.forall_iff 2020-04-25 05:42:28 199f6fe refactor(tactic/suggest): call library_search and suggest with additional lemmas, better lemma caching (#2429) This PR is mainly a refactoring of suggest. The changes include: * Removed `(discharger : tactic unit := done)` from `library_search`, `suggest`, `suggest_scripts` `suggest_core`, `suggest_core'`, `apply_declaration` and `apply_and_solve` and replaced by `(opt : by_elim_opt := { })` from `solve_by_elim`. * Replaced all occurences of `discharger` by `opt`, `opt.discharger`, or `..opt`. * inserted a do block into the interactive `library_search` function. * Added `asms ← mk_assumption_set no_dflt hs attr_names`, to the interactive `suggest` and `library_search` functions. This is so `library_search` and `suggest` don't rebuild the assumption set each time a lemma is applied. * Added several inputs for the interactive `library_search` and `suggest` function. These parameters were lifted from the interactive `solve_by_elim` function and allow the user to control how `solve_by_elim` is utilized by `library_search` and `suggest`. * Removed the `message` function (redundant code.) * Removed several unnecessary `g ← instantiate_mvars g`, lines. ESTIMATED CHANGES Modified src/tactic/solve_by_elim.lean Modified src/tactic/suggest.lean Modified test/library_search/basic.lean + def test.library_search.map_from_sum 2020-04-25 04:11:06 06f8c55 chore(scripts): update nolints.txt (#2517) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-25 02:22:56 22d89c4 chore(scripts): update nolints.txt (#2515) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-24 23:37:04 e918f72 refactor(zmod): merge `zmodp` into `zmod`, use `[fact p.prime]` for tc search (#2511) This PR introduces the class `fact P := P` for `P : Prop`, which is a way to inject elementary propositions into the type class system. This desing is inspired by @cipher1024 's https://gist.github.com/cipher1024/9bd785a75384a4870b331714ec86ad6f#file-zmod_redesign-lean. We use this to endow `zmod p` with a `field` instance under the assumption `[fact p.prime]`. As a consequence, the type `zmodp` is no longer needed, which removes a lot of duplicate code. Besides that, we redefine `zmod n`, so that `n` is a natural number instead of a *positive* natural number, and `zmod 0` is now definitionally the integers. To preserve computational properties, `zmod n` is not defined as quotient type, but rather as `int` and `fin n`, depending on whether `n` is `0` or `(k+1)`. The rest of this PR is adapting the library to the new definitions (most notably quadratic reciprocity and Lagrange's four squares theorem). Future work: Refactor the padics to use `[fact p.prime]` instead of making `nat.prime` a class in those files. This will address #1601 and #1648. Once that is done, we can clean up the mess in `char_p` (where the imports are really tangled) and finally get some movement in #1564. ESTIMATED CHANGES Modified src/algebra/char_p.lean +/- theorem char_p.char_is_prime + theorem char_p.char_is_prime_of_pos + theorem char_p.false_of_nonzero_of_char_one + theorem char_p.int_cast_eq_zero_iff - def zmod.cast_hom Modified src/data/nat/basic.lean + theorem nat.dvd_sub_mod Modified src/data/nat/modeq.lean + theorem nat.add_mod + theorem nat.mul_mod Modified src/data/nat/prime.lean Modified src/data/nat/totient.lean - theorem zmod.card_units_eq_totient Modified src/data/zmod/basic.lean + def fin.add_comm_semigroup + def fin.comm_ring + def fin.comm_semigroup + def fin.has_neg + theorem fin.of_nat_eq_coe + theorem fin.one_val + theorem fin.val_add + theorem fin.val_mul + theorem fin.zero_val - theorem zmod.add_val + theorem zmod.card + theorem zmod.card_units_eq_totient - theorem zmod.card_zmod +/- def zmod.cast + theorem zmod.cast_add + def zmod.cast_hom + theorem zmod.cast_hom_apply + theorem zmod.cast_id + theorem zmod.cast_int_cast - theorem zmod.cast_mod_int' - theorem zmod.cast_mod_int - theorem zmod.cast_mod_nat' +/- theorem zmod.cast_mod_nat + theorem zmod.cast_mul - theorem zmod.cast_mul_left_val_cast - theorem zmod.cast_mul_right_val_cast +/- theorem zmod.cast_nat_abs_val_min_abs + theorem zmod.cast_nat_cast + theorem zmod.cast_one + theorem zmod.cast_self' + theorem zmod.cast_self - theorem zmod.cast_self_eq_zero +/- theorem zmod.cast_unit_of_coprime +/- theorem zmod.cast_val - theorem zmod.cast_val_cast_of_dvd + theorem zmod.cast_zero + theorem zmod.coe_mul_inv_eq_one - theorem zmod.coe_val_cast_int +/- theorem zmod.coe_val_min_abs - theorem zmod.eq_iff_modeq_int' - theorem zmod.eq_iff_modeq_int - theorem zmod.eq_iff_modeq_nat' +/- theorem zmod.eq_iff_modeq_nat - theorem zmod.eq_zero_iff_dvd_int - theorem zmod.eq_zero_iff_dvd_nat + theorem zmod.int_cast_surjective + def zmod.inv + theorem zmod.inv_coe_unit + theorem zmod.inv_mul_of_unit + theorem zmod.inv_zero +/- theorem zmod.le_div_two_iff_lt_neg - theorem zmod.mk_eq_cast + theorem zmod.mul_inv_eq_gcd + theorem zmod.mul_inv_of_unit - theorem zmod.mul_val +/- theorem zmod.nat_abs_val_min_abs_le +/- theorem zmod.nat_abs_val_min_abs_neg + theorem zmod.nat_cast_surjective + theorem zmod.nat_cast_val +/- theorem zmod.ne_neg_self +/- theorem zmod.neg_eq_self_mod_two + theorem zmod.neg_one_ne_one +/- theorem zmod.neg_val' +/- theorem zmod.neg_val - theorem zmod.one_val + theorem zmod.prime_ne_zero +/- def zmod.unit_of_coprime +/- def zmod.units_equiv_coprime + def zmod.val + theorem zmod.val_add - theorem zmod.val_cast_int +/- theorem zmod.val_cast_nat +/- theorem zmod.val_cast_of_lt + theorem zmod.val_coe_unit_coprime +/- theorem zmod.val_eq_ite_val_min_abs + theorem zmod.val_eq_zero + theorem zmod.val_injective + theorem zmod.val_lt +/- def zmod.val_min_abs + theorem zmod.val_min_abs_def_pos + theorem zmod.val_min_abs_def_zero +/- theorem zmod.val_min_abs_eq_zero +/- theorem zmod.val_min_abs_zero + theorem zmod.val_mul + theorem zmod.val_one + theorem zmod.val_one_eq_one_mod + theorem zmod.val_zero - theorem zmod.zero_val +/- def zmod - theorem zmodp.add_val - theorem zmodp.card_zmodp - theorem zmodp.cast_mod_int - theorem zmodp.cast_mod_nat - theorem zmodp.cast_nat_abs_val_min_abs - theorem zmodp.cast_self_eq_zero: - theorem zmodp.cast_val - theorem zmodp.coe_val_cast_int - theorem zmodp.coe_val_min_abs - theorem zmodp.eq_iff_modeq_int - theorem zmodp.eq_iff_modeq_nat - theorem zmodp.eq_zero_iff_dvd_int - theorem zmodp.eq_zero_iff_dvd_nat - theorem zmodp.le_div_two_iff_lt_neg - theorem zmodp.mk_eq_cast - theorem zmodp.mul_inv_eq_gcd - theorem zmodp.mul_val - theorem zmodp.nat_abs_val_min_abs_le - theorem zmodp.nat_abs_val_min_abs_neg - theorem zmodp.ne_neg_self - theorem zmodp.one_val - theorem zmodp.prime_ne_zero - theorem zmodp.val_cast_int - theorem zmodp.val_cast_nat - theorem zmodp.val_cast_of_lt - theorem zmodp.val_eq_ite_val_min_abs - def zmodp.val_min_abs - theorem zmodp.val_min_abs_eq_zero - theorem zmodp.val_min_abs_zero - theorem zmodp.zero_val - def zmodp Modified src/data/zmod/quadratic_reciprocity.lean + theorem zmod.card_units + theorem zmod.eisenstein_lemma + theorem zmod.euler_criterion + theorem zmod.euler_criterion_units + theorem zmod.exists_pow_two_eq_neg_one_iff_mod_four_ne_three + theorem zmod.exists_pow_two_eq_prime_iff_of_mod_four_eq_one + theorem zmod.exists_pow_two_eq_prime_iff_of_mod_four_eq_three + theorem zmod.exists_pow_two_eq_two_iff + theorem zmod.fermat_little + theorem zmod.fermat_little_units + theorem zmod.gauss_lemma + def zmod.legendre_sym + theorem zmod.legendre_sym_eq_one_iff + theorem zmod.legendre_sym_eq_one_or_neg_one + theorem zmod.legendre_sym_eq_pow + theorem zmod.legendre_sym_eq_zero_iff + theorem zmod.legendre_sym_two + theorem zmod.pow_div_two_eq_neg_one_or_one + theorem zmod.prod_Ico_one_prime + theorem zmod.quadratic_reciprocity + theorem zmod.wilsons_lemma - theorem zmodp.card_units_zmodp - theorem zmodp.eisenstein_lemma - theorem zmodp.euler_criterion - theorem zmodp.euler_criterion_units - theorem zmodp.exists_pow_two_eq_neg_one_iff_mod_four_ne_three - theorem zmodp.exists_pow_two_eq_prime_iff_of_mod_four_eq_one - theorem zmodp.exists_pow_two_eq_prime_iff_of_mod_four_eq_three - theorem zmodp.exists_pow_two_eq_two_iff - theorem zmodp.fermat_little - theorem zmodp.gauss_lemma - def zmodp.legendre_sym - theorem zmodp.legendre_sym_eq_one_iff - theorem zmodp.legendre_sym_eq_one_or_neg_one - theorem zmodp.legendre_sym_eq_pow - theorem zmodp.legendre_sym_two - theorem zmodp.pow_div_two_eq_neg_one_or_one - theorem zmodp.prod_Ico_one_prime - theorem zmodp.quadratic_reciprocity - theorem zmodp.wilsons_lemma Modified src/data/zsqrtd/gaussian_int.lean +/- theorem gaussian_int.mod_four_eq_three_of_nat_prime_of_prime +/- theorem gaussian_int.prime_iff_mod_four_eq_three_of_nat_prime +/- theorem gaussian_int.prime_of_nat_prime_of_mod_four_eq_three +/- theorem gaussian_int.sum_two_squares_of_nat_prime_of_not_irreducible Modified src/field_theory/finite.lean +/- theorem char_p.sum_two_squares +/- theorem zmod.pow_totient + theorem zmod.sum_two_squares - theorem zmodp.sum_two_squares Modified src/field_theory/finite_card.lean +/- theorem finite_field.card' +/- theorem finite_field.card Modified src/group_theory/order_of_element.lean Modified src/group_theory/sylow.lean +/- theorem sylow.exists_prime_order_of_dvd_card +/- theorem sylow.exists_subgroup_card_pow_prime +/- theorem sylow.one_mem_fixed_points_rotate +/- def sylow.rotate_vectors_prod_eq_one Modified src/logic/basic.lean + def fact Modified src/number_theory/sum_four_squares.lean +/- theorem int.exists_sum_two_squares_add_one_eq_k Modified src/number_theory/sum_two_squares.lean +/- theorem nat.prime.sum_two_squares 2020-04-24 23:37:01 3e54e97 chore(topology/separation): prove that `{y | y ≠ x}` is open (#2506) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/data/set/basic.lean + theorem set.compl_singleton_eq Modified src/topology/instances/ennreal.lean +/- theorem ennreal.is_open_ne_top Modified src/topology/separation.lean + theorem is_open_ne 2020-04-24 21:12:05 ee8451b feat(data/list): more lemmas on joins and sums (#2501) A few more lemmas on lists (especially joins) and sums. I also linted the file `lists/basic.lean` and converted some comments to section headers. Some lemmas got renamed: `of_fn_prod_take` -> `prod_take_of_fn` `of_fn_sum_take` -> `sum_take_of_fn` `of_fn_prod` ->`prod_of_fn` `of_fn_sum` -> `sum_of_fn` The arguments of `nth_le_repeat` were changed for better `simp` efficiency ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.sum_range_sub_of_monotone Modified src/analysis/analytic/composition.lean Modified src/combinatorics/composition.lean Modified src/data/fintype/basic.lean + theorem finset.univ_sigma_univ Modified src/data/fintype/card.lean + theorem fin.prod_univ_eq_prod_range - theorem list.of_fn_prod - theorem list.of_fn_prod_take - theorem list.of_fn_sum_take + theorem list.prod_of_fn + theorem list.prod_take_of_fn + theorem list.sum_take_of_fn + theorem prod_equiv Modified src/data/list/basic.lean + theorem list.drop_append + theorem list.drop_sum_join + theorem list.drop_take_succ_eq_cons_nth_le + theorem list.drop_take_succ_join_eq_nth_le + theorem list.eq_cons_of_length_one + theorem list.eq_iff_join_eq + theorem list.forall_mem_map_iff + theorem list.nth_le_drop' + theorem list.nth_le_drop + theorem list.nth_le_join + theorem list.nth_le_of_eq +/- theorem list.nth_le_repeat + theorem list.nth_le_take' + theorem list.nth_le_take + theorem list.sum_take_map_length_lt1 + theorem list.sum_take_map_length_lt2 + theorem list.take_append + theorem list.take_repeat + theorem list.take_sum_join Modified src/data/list/of_fn.lean + theorem list.forall_mem_of_fn_iff + theorem list.mem_of_fn Modified src/data/nat/modeq.lean 2020-04-24 20:10:09 6795c9d chore(scripts): update nolints.txt (#2514) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-24 17:09:09 3162c1c feat(tactic/delta_instance): protect names and deal with functions (#2477) There were (at least) two issues with the `delta_instance` derive handler: * It couldn't protect the names of the instances it generated, so they had to be ugly to avoid clashes. * It didn't deal well with deriving instances on function types, so `@[derive monad]` usually failed. This should fix both. The first is possible with recent(ish) additions to core. closes #1951 ESTIMATED CHANGES Modified src/category_theory/limits/shapes/wide_pullbacks.lean Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/linarith.lean Modified src/tactic/ring.lean Modified src/tactic/ring_exp.lean Modified test/delta_instance.lean 2020-04-24 14:15:51 2f6b8d7 chore(scripts): update nolints.txt (#2510) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-24 14:15:48 7a71866 chore(topology/algebra/module): make `id` use explicit args (#2509) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean +/- theorem fderiv_id +/- theorem has_fderiv_at_id - theorem has_strict_fderiv_at.snd Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.norm_id +/- theorem continuous_linear_map.norm_id_le Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean +/- theorem mfderiv_id Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.coe_id' +/- theorem continuous_linear_map.coe_id +/- theorem continuous_linear_map.comp_id +/- theorem continuous_linear_map.id_apply +/- theorem continuous_linear_map.id_comp 2020-04-24 14:15:46 62feebc chore(*): add missing copyright headers (#2505) I think these are close to the last remaining files without copyright headers. (We decided at some point to allow that `import`-only files don't need one.) ESTIMATED CHANGES Modified src/data/string/defs.lean Modified src/deprecated/group.lean Modified src/tactic/transform_decl.lean Modified src/topology/algebra/open_subgroup.lean 2020-04-24 14:15:44 c8946c9 chore(tactic/*): remove some unused args in commands (#2498) ESTIMATED CHANGES Modified src/tactic/localized.lean Modified src/tactic/replacer.lean Modified src/tactic/restate_axiom.lean 2020-04-24 11:14:03 00d7da2 docs(*): merge rewrite tactic tag into rewriting (#2512) We had two overlapping tags in the docs. ESTIMATED CHANGES Modified src/tactic/converter/apply_congr.lean Modified src/tactic/elide.lean Modified src/tactic/ext.lean Modified src/tactic/interactive.lean Modified src/tactic/lean_core_docs.lean Modified src/tactic/rewrite.lean 2020-04-24 11:14:01 13393e3 chore(data/list/*): various renamings to use dot notation (#2481) * use dot notation * add a version of `list.perm.prod_eq` that only assumes that elements of the list pairwise commute instead of commutativity of the monoid. ## List of renamed symbols ### `data/list/basic` * `append_sublist_append_of_sublist_right` : `sublist.append_right`; * `reverse_sublist` : `sublist.reverse`; * `append_sublist_append` : `sublist.append`; * `subset_of_sublist`: `sublist.subset`; * `sublist_antisymm` : `sublist.antisymm`; * `filter_map_sublist_filter_map` : `sublist.filter_map` * `map_sublist_map` : `sublist.map` * `erasep_sublist_erasep`: `sublist.erasep` * `erase_sublist_erase` : `sublist.erase`; * `diff_sublist_of_sublist` : `sublist.diff_right`; ### `data/list/perm` * `perm.skip` : `perm.cons`; * `perm_comm` (new); * `perm_subset` : `perm.subset`; * `mem_of_perm` : `perm.mem_iff`; * `perm_app_left` : `perm.append_right` (note `right` vs `left`) * `perm_app_right` : `perm.append_left` (note `right` vs `left`) * `perm_app` : `perm.append`; * `perm_app_cons` : `perm.append_cons`; * `perm_cons_app` : `perm_append_singleton`; * `perm_app_comm` : `perm_append_comm`; * `perm_length` : `perm.length_eq`; * `eq_nil_of_perm_nil` : `perm.eq_nil` and `perm.nil_eq` with different choices of lhs/rhs; * `eq_singleton_of_perm_inv` : `perm.eq_singleton` and `perm.singleton_eq` with different choices of lhs/rhs; * `perm_singleton` and `singleton_perm`: `iff` versions of `perm.eq_singleton` and `perm.singleton_eq`; * `eq_singleton_of_perm` : `singleton_perm_singleton`; * `perm_cons_app_cons` : `perm_cons_append_cons`; * `perm_repeat` : `repeat_perm`; new `perm_repeat` differs from it in the choice of lhs/rhs; * `perm_erase` : `perm_cons_erase`; * `perm_filter_map` : `perm.filter_map`; * `perm_map` : `perm.map`; * `perm_pmap` : `perm.pmap`; * `perm_filter` : `perm.filter`; * `subperm_of_sublist` : `sublist.subperm`; * `subperm_of_perm` : `perm.subperm`; * `subperm.refl` : now has `@[refl]` attribute; * `subperm.trans` : now has `@[trans]` attribute; * `length_le_of_subperm` : `subperm.length_le`; * `subset_of_subperm` : `subperm.subset`; * `exists_perm_append_of_sublist` : `sublist.exists_perm_append`; * `perm_countp` : `perm.countp_eq`; * `countp_le_of_subperm` : `subperm.countp_le`; * `perm_count` : `perm.count_eq`; * `count_le_of_subperm` : `subperm.count_le`; * `foldl_eq_of_perm` : `perm.foldl_eq`, added a primed version with slightly weaker assumptions; * `foldr_eq_of_perm` : `perm.foldr_eq`; * `rec_heq_of_perm` : `perm.eec_heq`; * `fold_op_eq_of_perm` : `perm.fold_op_eq`; * `prod_eq_of_perm`: `perm.prod_eq` and `perm.prod_eq'`; * `perm_cons_inv` : `perm.cons_inv`; * `perm_cons` : now is a `@[simp]` lemma; * `perm_app_right_iff` : `perm_append_right_iff`; * `subperm_app_left` : `subperm_append_left`; * `subperm_app_right` : `subperm_append_right`; * `perm_ext_sublist_nodup` : `nodup.sublist_ext`; * `erase_perm_erase` : `perm.erase`; * `subperm_cons_erase` (new); * `erase_subperm_erase` : `subperm.erase`; * `perm_diff_left` : `perm.diff_right` (note `left` vs `right`); * `perm_diff_right` : `perm.diff_left` (note `left` vs `right`); * `perm.diff`, `subperm.diff_right`, `erase_cons_subperm_cons_erase` (new); * `perm_bag_inter_left` : `perm.bag_inter_right` (note `left` vs `right`); * `perm_bag_inter_right` : `perm.bag_inter_left` (note `left` vs `right`); * `perm.bag_inter` (new); * `perm_erase_dup_of_perm` : `perm.erase_dup`; * `perm_union_left` : `perm.union_right` (note `left` vs `right`); * `perm_union_right` : `perm.union_left` (note `left` vs `right`); * `perm_union` : `perm.union`; * `perm_inter_left` : `perm.inter_right` (note `left` vs `right`); * `perm_inter_right` : `perm.inter_left` (note `left` vs `right`); * `perm_inter` : `perm.inter`; * `perm_nodup` : `perm.nodup_iff`; * `perm_bind_left` : `perm.bind_right` (note `left` vs `right`); * `perm_bind_right` : `perm.bind_left` (note `left` vs `right`); * `perm_product_left` : `perm.product_right` (note `left` vs `right`); * `perm_product_right` : `peerm.product_left` (note `left` vs `right`); * `perm_product` : `perm.product`; * `perm_erasep` : `perm.erasep`; ### `data/list/sigma` * `nodupkeys.pairwise_ne` (new); * `perm_kreplace` : `perm.kreplace`; * `perm_kerase` : `perm.kerase`; * `perm_kinsert` : `perm.kinsert`; * `erase_dupkeys_cons` : now take `x : sigma β` instead of `{x : α}` and `{y : β x}`; * `perm_kunion_left` : `perm.kunion_right` (note `left` vs `right`); * `perm_kunion_right` : `perm.kunion_left` (note `left` vs `right`); * `perm_kunion` : `perm.kunion`; * ESTIMATED CHANGES Modified src/data/fintype/basic.lean Modified src/data/list/alist.lean +/- theorem alist.entries_to_alist +/- theorem alist.insert_insert +/- theorem alist.insert_singleton_eq +/- theorem alist.to_alist_cons +/- theorem alist.union_comm_of_disjoint Modified src/data/list/basic.lean - theorem list.append_sublist_append - theorem list.append_sublist_append_of_sublist_right - theorem list.diff_sublist_of_sublist - theorem list.erase_sublist_erase - theorem list.erasep_sublist_erasep - theorem list.filter_map_sublist_filter_map - theorem list.map_sublist_map - theorem list.reverse_sublist +/- theorem list.span_eq_take_drop + theorem list.sublist.antisymm + theorem list.sublist.append + theorem list.sublist.append_right + theorem list.sublist.diff_right + theorem list.sublist.erase + theorem list.sublist.erasep + theorem list.sublist.filter_map + theorem list.sublist.map + theorem list.sublist.reverse + theorem list.sublist.subset - theorem list.sublist_antisymm - theorem list.subset_of_sublist +/- theorem list.take_while_append_drop Modified src/data/list/pairwise.lean Modified src/data/list/perm.lean - theorem list.count_le_of_subperm - theorem list.countp_le_of_subperm - theorem list.eq_nil_of_perm_nil - theorem list.eq_singleton_of_perm - theorem list.eq_singleton_of_perm_inv + theorem list.erase_cons_subperm_cons_erase - theorem list.erase_perm_erase - theorem list.erase_subperm_erase - theorem list.exists_perm_append_of_sublist - theorem list.fold_op_eq_of_perm - theorem list.foldl_eq_of_perm - theorem list.foldr_eq_of_perm - theorem list.length_le_of_subperm - theorem list.mem_of_perm + theorem list.nodup.sublist_ext + theorem list.perm.append + theorem list.perm.append_cons + theorem list.perm.append_left + theorem list.perm.append_right + theorem list.perm.bag_inter + theorem list.perm.bag_inter_left + theorem list.perm.bag_inter_right + theorem list.perm.bind_left + theorem list.perm.bind_right + theorem list.perm.cons_inv + theorem list.perm.count_eq + theorem list.perm.countp_eq + theorem list.perm.diff + theorem list.perm.diff_left + theorem list.perm.diff_right + theorem list.perm.eq_nil + theorem list.perm.eq_singleton + theorem list.perm.erase + theorem list.perm.erase_dup + theorem list.perm.erasep + theorem list.perm.filter + theorem list.perm.filter_map + theorem list.perm.fold_op_eq + theorem list.perm.foldl_eq' + theorem list.perm.foldl_eq + theorem list.perm.foldr_eq + theorem list.perm.insert + theorem list.perm.inter + theorem list.perm.inter_left + theorem list.perm.inter_right + theorem list.perm.length_eq + theorem list.perm.map + theorem list.perm.mem_iff + theorem list.perm.nil_eq + theorem list.perm.nodup_iff + theorem list.perm.pairwise_iff + theorem list.perm.pmap + theorem list.perm.prod_eq' + theorem list.perm.prod_eq + theorem list.perm.product + theorem list.perm.product_left + theorem list.perm.product_right + theorem list.perm.rec_heq + theorem list.perm.singleton_eq + theorem list.perm.subperm + theorem list.perm.subset + theorem list.perm.union + theorem list.perm.union_left + theorem list.perm.union_right - theorem list.perm_app - theorem list.perm_app_comm - theorem list.perm_app_cons - theorem list.perm_app_left - theorem list.perm_app_left_iff - theorem list.perm_app_right - theorem list.perm_app_right_iff + theorem list.perm_append_comm + theorem list.perm_append_left_iff + theorem list.perm_append_right_iff + theorem list.perm_append_singleton - theorem list.perm_bag_inter_left - theorem list.perm_bag_inter_right - theorem list.perm_bind_left - theorem list.perm_bind_right + theorem list.perm_comm +/- theorem list.perm_cons - theorem list.perm_cons_app - theorem list.perm_cons_app_cons + theorem list.perm_cons_append_cons + theorem list.perm_cons_erase - theorem list.perm_cons_inv - theorem list.perm_count - theorem list.perm_countp - theorem list.perm_diff_left - theorem list.perm_diff_right - theorem list.perm_erase - theorem list.perm_erase_dup_of_perm - theorem list.perm_erasep +/- theorem list.perm_ext - theorem list.perm_ext_sublist_nodup - theorem list.perm_filter - theorem list.perm_filter_map - theorem list.perm_insert - theorem list.perm_inter - theorem list.perm_inter_left - theorem list.perm_inter_right - theorem list.perm_length - theorem list.perm_map - theorem list.perm_nodup - theorem list.perm_pairwise - theorem list.perm_pmap - theorem list.perm_product - theorem list.perm_product_left - theorem list.perm_product_right +/- theorem list.perm_repeat + theorem list.perm_singleton - theorem list.perm_subset - theorem list.perm_union - theorem list.perm_union_left - theorem list.perm_union_right - theorem list.prod_eq_of_perm - theorem list.rec_heq_of_perm + theorem list.repeat_perm + theorem list.singleton_perm + theorem list.singleton_perm_singleton + theorem list.sublist.exists_perm_append + theorem list.sublist.subperm + theorem list.subperm.count_le + theorem list.subperm.countp_le + theorem list.subperm.diff_right + theorem list.subperm.erase + theorem list.subperm.length_le +/- theorem list.subperm.refl + theorem list.subperm.subset +/- theorem list.subperm.trans - theorem list.subperm_app_left - theorem list.subperm_app_right + theorem list.subperm_append_left + theorem list.subperm_append_right + theorem list.subperm_cons_erase - theorem list.subperm_of_perm - theorem list.subperm_of_sublist - theorem list.subset_of_subperm Modified src/data/list/range.lean Modified src/data/list/sigma.lean +/- theorem list.erase_dupkeys_cons +/- theorem list.kerase_kerase + theorem list.nodupkeys.pairwise_ne +/- theorem list.nodupkeys_of_sublist + theorem list.perm.kerase + theorem list.perm.kinsert + theorem list.perm.kreplace + theorem list.perm.kunion + theorem list.perm.kunion_left + theorem list.perm.kunion_right - theorem list.perm_kerase - theorem list.perm_kinsert - theorem list.perm_kreplace - theorem list.perm_kunion - theorem list.perm_kunion_left - theorem list.perm_kunion_right Modified src/data/list/sort.lean Modified src/data/multiset.lean +/- theorem multiset.card_erase_of_mem +/- theorem multiset.coe_filter_map +/- theorem multiset.cons_ndunion +/- theorem multiset.erase_add_left_neg +/- theorem multiset.erase_add_right_neg +/- theorem multiset.erase_add_right_pos Modified src/data/nat/prime.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean 2020-04-24 11:13:59 3ae22de feat(linear_algebra): quadratic forms (#2480) Define quadratic forms over a module, maps from quadratic forms to bilinear forms and matrices, positive definite quadratic forms and the discriminant of quadratic forms. Along the way, I added some definitions to `data/matrix/basic.lean` and `linear_algebra/bilinear_form.lean` and did some cleaning up. ESTIMATED CHANGES Modified src/algebra/module.lean + theorem linear_map.coe_fn_congr Modified src/data/matrix/basic.lean + theorem matrix.col_add + theorem matrix.col_mul_vec + theorem matrix.col_smul + theorem matrix.col_val + theorem matrix.col_vec_mul + theorem matrix.mul_vec_mul_vec + theorem matrix.mul_vec_zero + theorem matrix.row_add + theorem matrix.row_mul_vec + theorem matrix.row_smul + theorem matrix.row_val + theorem matrix.row_vec_mul + theorem matrix.transpose_col + theorem matrix.transpose_row + theorem matrix.vec_mul_diagonal + theorem matrix.vec_mul_one + theorem matrix.vec_mul_vec_mul + theorem matrix.vec_mul_zero Modified src/linear_algebra/basic.lean + theorem linear_map.coe_fn_sum Modified src/linear_algebra/bilinear_form.lean + theorem bilin_form.add_apply + theorem bilin_form.coe_fn_congr + theorem bilin_form.coe_fn_mk + theorem bilin_form.coe_fn_to_linear_map + def bilin_form.comp + theorem bilin_form.comp_apply + def bilin_form.comp_left + theorem bilin_form.comp_left_apply + theorem bilin_form.comp_left_comp_right + def bilin_form.comp_right + theorem bilin_form.comp_right_apply + theorem bilin_form.comp_right_comp_left + theorem bilin_form.map_sum_left + theorem bilin_form.map_sum_right + theorem bilin_form.mul_to_matrix + theorem bilin_form.mul_to_matrix_mul + theorem bilin_form.smul_apply + def bilin_form.to_matrix + theorem bilin_form.to_matrix_apply + theorem bilin_form.to_matrix_comp + theorem bilin_form.to_matrix_comp_left + theorem bilin_form.to_matrix_comp_right + theorem bilin_form.to_matrix_mul + theorem bilin_form.to_matrix_smul + def bilin_form.to_matrixₗ + def bilin_form_equiv_matrix + def matrix.to_bilin_form + theorem matrix.to_bilin_form_apply + def matrix.to_bilin_formₗ Modified src/linear_algebra/matrix.lean + theorem linear_map.to_matrix_id Added src/linear_algebra/quadratic_form.lean + theorem bilin_form.polar_to_quadratic_form + def bilin_form.to_quadratic_form + theorem bilin_form.to_quadratic_form_apply + def matrix.to_quadratic_form + def quadratic_form.associated + theorem quadratic_form.associated_apply + theorem quadratic_form.associated_comp + theorem quadratic_form.associated_is_sym + theorem quadratic_form.associated_left_inverse + theorem quadratic_form.associated_right_inverse + theorem quadratic_form.associated_smul + theorem quadratic_form.associated_to_quadratic_form + def quadratic_form.comp + theorem quadratic_form.comp_apply + def quadratic_form.discr + theorem quadratic_form.discr_comp + theorem quadratic_form.discr_smul + theorem quadratic_form.ext + theorem quadratic_form.map_add_self + theorem quadratic_form.map_neg + theorem quadratic_form.map_smul + theorem quadratic_form.map_sub + theorem quadratic_form.map_zero + def quadratic_form.polar + def quadratic_form.pos_def + theorem quadratic_form.smul_apply + theorem quadratic_form.smul_pos_def_of_nonzero + theorem quadratic_form.smul_pos_def_of_smul_nonzero + theorem quadratic_form.to_fun_eq_apply + def quadratic_form.to_matrix + theorem quadratic_form.to_matrix_comp + theorem quadratic_form.to_matrix_smul + structure quadratic_form 2020-04-24 06:43:01 e7bd312 chore(tactic/pi_instance): add a docstring, remove a little bit of redundancy (#2500) ESTIMATED CHANGES Modified src/tactic/pi_instances.lean 2020-04-24 04:03:04 b7af283 feat(algebra): define `invertible` typeclass (#2504) In the discussion for #2480, we decided that the definitions would be cleaner if the elaborator could supply us with a suitable value of `1/2`. With these changes, we can now add an `[invertible 2]` argument to write `⅟ 2`. Related to Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.232480.20bilinear.20forms ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem left_inv_eq_right_inv Added src/algebra/invertible.lean + theorem div_mul_cancel_of_invertible + theorem div_self_of_invertible + theorem inv_mul_cancel_of_invertible + theorem inv_of_div + theorem inv_of_eq_group_inv + theorem inv_of_eq_inv + theorem inv_of_eq_right_inv + theorem inv_of_inv_of + theorem inv_of_mul + theorem inv_of_mul_self + theorem inv_of_neg + theorem inv_of_one + def invertible_div + def invertible_inv + def invertible_inv_of + def invertible_mul + def invertible_neg + def invertible_of_group + def invertible_of_nonzero + def invertible_one + theorem is_unit_of_invertible + theorem mul_div_cancel_of_invertible + theorem mul_inv_cancel_of_invertible + theorem mul_inv_of_mul_self_cancel + theorem mul_inv_of_self + theorem mul_mul_inv_of_self_cancel + theorem nonzero_of_invertible 2020-04-24 01:03:57 02d7308 feat(cmd/simp): let `#simp` use declared `variables` (#2478) Let `#simp` see declared `variables`. ~~Sits atop the minor `tactic.core` rearrangement in #2465.~~ @semorrison It turns out that `push_local_scope` and `pop_local_scope` weren't required; the parser is smarter than we thought, and if you declared some `variables` and then tried to `#simp` them, lean would half-know what you are talking about. Indeed, the parsed `pexpr` from the command would include this information, but `to_expr` would report `no such 'blah'` when called afterward. To fix this you have to add the local variables you want `simp` to be able to see as local hypotheses in the same `tactic_state` in which you invoke `expr.simp`---so no wrapping your call to `expr.simp` directly in `lean.parser.of_tactic` (since this cooks up a fresh `tactic_state` for you). Closes #2475.

ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/simp_command.lean Modified test/simp_command.lean +/- def f + theorem inst.spell' 2020-04-23 23:53:50 0196748 chore(scripts): update nolints.txt (#2503) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-23 21:05:16 fdbf22d doc(tactic/*): doc entries for some missing tactics (#2489) This covers most of the remaining list in the old issue #450. I've already checked off my additions. ESTIMATED CHANGES Modified src/tactic/default.lean Modified src/tactic/ring2.lean Modified src/tactic/scc.lean Modified src/tactic/slice.lean Modified src/tactic/split_ifs.lean Modified src/tactic/subtype_instance.lean Modified src/tactic/wlog.lean 2020-04-23 18:01:07 fc7ac67 feat(data/string): add docstrings and improve semantics (#2497) Could have gone in #2493, but I didn't want to hold up #2478. Besides, what's a tiny pull request between friends. This "writing docstrings" thing really lets helps you discover tiny little tweaks here and here.


ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/data/string/defs.lean +/- def string.map_tokens - def string.over_list +/- def string.split_on Modified src/tactic/replacer.lean 2020-04-23 15:14:10 9ccfa92 feat(data/string): add phrasings common to conventional languages (#2493) Just add a pair of string comparison functions with semantics which are common to conventional programming languages.


ESTIMATED CHANGES Modified src/data/string/defs.lean + def string.ends_with + def string.starts_with 2020-04-23 12:15:02 64e464f chore(*): remove unnecessary transitive imports (#2496) This removes all imports which have already been imported by other imports. Overall, this is slightly over a third of the total import lines. This should have no effect whatsoever on compilation, but should make `leanproject import-graph` somewhat... leaner! ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/associated.lean Modified src/algebra/big_operators.lean Modified src/algebra/category/CommRing/adjunctions.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/CommRing/default.lean Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Group/adjunctions.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Group/default.lean Modified src/algebra/category/Group/images.lean Modified src/algebra/category/Group/limits.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/category/Mon/default.lean Modified src/algebra/char_p.lean Modified src/algebra/char_zero.lean Modified src/algebra/commute.lean Modified src/algebra/continued_fractions/default.lean Modified src/algebra/default.lean Modified src/algebra/direct_limit.lean Modified src/algebra/field.lean Modified src/algebra/field_power.lean Modified src/algebra/floor.lean Modified src/algebra/free.lean Modified src/algebra/free_monoid.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/default.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/units.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_with_zero_power.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean Modified src/algebra/order_functions.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/pi_instances.lean Modified src/algebra/pointwise.lean Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/semiconj.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/basic.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/category/bifunctor.lean Modified src/category/bitraversable/basic.lean Modified src/category/bitraversable/instances.lean Modified src/category/equiv_functor/instances.lean Modified src/category/fold.lean Modified src/category/functor.lean Modified src/category/monad/cont.lean Modified src/category/monad/writer.lean Modified src/category/traversable/basic.lean Modified src/category/traversable/default.lean Modified src/category/traversable/derive.lean Modified src/category/traversable/instances.lean Modified src/category/traversable/lemmas.lean Modified src/category_theory/action.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/Groupoid.lean Modified src/category_theory/comma.lean Modified src/category_theory/concrete_category/default.lean Modified src/category_theory/conj.lean Modified src/category_theory/const.lean Modified src/category_theory/core.lean Modified src/category_theory/currying.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/elements.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/hom_functor.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/isomorphism_classes.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/biproducts.lean Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/default.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/of_has_finite_products.lean Modified src/category_theory/monoidal/types.lean Modified src/category_theory/opposites.lean Modified src/category_theory/pempty.lean Modified src/category_theory/products/basic.lean Modified src/category_theory/quotient.lean Modified src/category_theory/reflect_isomorphisms.lean Modified src/category_theory/single_obj.lean Modified src/category_theory/sums/basic.lean Modified src/category_theory/types.lean Modified src/category_theory/yoneda.lean Modified src/computability/turing_machine.lean Modified src/data/W.lean Modified src/data/buffer/basic.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/list.lean Modified src/data/equiv/mul_add.lean Modified src/data/equiv/nat.lean Modified src/data/fin_enum.lean Modified src/data/finset.lean Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean Modified src/data/fintype/card.lean Modified src/data/fintype/intervals.lean Modified src/data/hash_map.lean Modified src/data/indicator_function.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/int/modeq.lean Modified src/data/int/parity.lean Modified src/data/list/basic.lean Modified src/data/list/forall2.lean Modified src/data/list/func.lean Modified src/data/matrix/basic.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean Modified src/data/nat/choose.lean Modified src/data/nat/enat.lean Modified src/data/nat/modeq.lean Modified src/data/nat/parity.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/nat/totient.lean Modified src/data/num/lemmas.lean Modified src/data/option/basic.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pequiv.lean Modified src/data/pfun.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/factors.lean Modified src/data/pnat/xgcd.lean Modified src/data/polynomial.lean Modified src/data/rat/basic.lean Modified src/data/rat/default.lean Modified src/data/rat/floor.lean Modified src/data/real/basic.lean Modified src/data/real/cardinality.lean Modified src/data/real/cau_seq.lean Modified src/data/real/ennreal.lean Modified src/data/real/hyperreal.lean Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean Modified src/data/rel.lean Modified src/data/semiquot.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/set/countable.lean Modified src/data/set/default.lean Modified src/data/set/disjointed.lean Modified src/data/set/finite.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/default.lean Modified src/data/set/intervals/disjoint.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/data/set/lattice.lean Modified src/data/setoid.lean Modified src/data/support.lean Modified src/data/vector2.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/data/zsqrtd/basic.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/finite.lean Modified src/field_theory/finite_card.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/congruence.lean Modified src/group_theory/coset.lean Modified src/group_theory/free_group.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/submonoid.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/linear_algebra/special_linear_group.lean Modified src/logic/embedding.lean Modified src/logic/relation.lean Modified src/measure_theory/indicator_function.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/pell.lean Modified src/number_theory/sum_four_squares.lean Modified src/order/basic.lean Modified src/order/bounds.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/default.lean Modified src/order/filter/basic.lean Modified src/order/filter/default.lean Modified src/order/filter/extr.lean Modified src/order/filter/partial.lean Modified src/order/galois_connection.lean Modified src/order/lexicographic.lean Modified src/order/liminf_limsup.lean Modified src/order/order_iso.lean Modified src/order/pilex.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/subring.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/lists.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/tactic/abel.lean Modified src/tactic/alias.lean Modified src/tactic/apply_fun.lean Modified src/tactic/auto_cases.lean Modified src/tactic/basic.lean Modified src/tactic/chain.lean Modified src/tactic/converter/binders.lean Modified src/tactic/core.lean Modified src/tactic/default.lean Modified src/tactic/elide.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/ext.lean Modified src/tactic/finish.lean Modified src/tactic/interval_cases.lean Modified src/tactic/linarith.lean Modified src/tactic/local_cache.lean Modified src/tactic/localized.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_num.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/main.lean Modified src/tactic/pi_instances.lean Modified src/tactic/replacer.lean Modified src/tactic/rewrite_all/basic.lean Modified src/tactic/rewrite_all/congr.lean Modified src/tactic/ring.lean Modified src/tactic/ring2.lean Modified src/tactic/scc.lean Modified src/tactic/show_term.lean Modified src/tactic/subtype_instance.lean Modified src/tactic/tauto.lean Modified src/tactic/tfae.lean Modified src/tactic/tidy.lean Modified src/tactic/trunc_cases.lean Modified src/tactic/where.lean Modified src/tactic/wlog.lean Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/bases.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/category/Top/default.lean Modified src/topology/category/Top/limits.lean Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/Top/opens.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/homeomorph.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/metric_space/premetric_space.lean Modified src/topology/opens.lean Modified src/topology/sequences.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/presheaf_of_functions.lean Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean 2020-04-23 09:12:20 8a7b94f chore(tactic/suggest): add a docstring (#2499) ESTIMATED CHANGES Modified src/tactic/suggest.lean 2020-04-23 02:52:58 7c10fd2 feat(category_theory/epi_mono): opposite epi mono properties (#2479) Relating epis and monos to the opposite category. ESTIMATED CHANGES Modified src/category_theory/epi_mono.lean 2020-04-23 01:10:17 4d94de4 feat(category_theory): wide pullbacks and limits in the over category (#2461) This PR introduces [wide pullbacks](https://ncatlab.org/nlab/show/wide+pullback). Ordinary pullbacks are then defined as a special case of wide pullbacks, which simplifies some of the definitions and proofs there. Finally we show that the existence of wide pullbacks in `C` gives products in the slice `C/B`, and in fact gives all limits. ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + theorem category_theory.adjunction.eq_hom_equiv_apply + theorem category_theory.adjunction.hom_equiv_apply_eq Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_limit.of_cone_equiv Modified src/category_theory/limits/over.lean + def category_theory.over.construct_products.cones_equiv + def category_theory.over.construct_products.cones_equiv_functor + def category_theory.over.construct_products.cones_equiv_inverse + def category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit + def category_theory.over.construct_products.over_binary_product_of_pullback + def category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks + def category_theory.over.construct_products.over_product_of_wide_pullback + def category_theory.over.construct_products.over_products_of_wide_pullbacks + def category_theory.over.construct_products.wide_pullback_diagram_of_diagram_over - theorem category_theory.over.over_prod_fst_left - theorem category_theory.over.over_prod_map_left - theorem category_theory.over.over_prod_pair_hom - theorem category_theory.over.over_prod_pair_left - theorem category_theory.over.over_prod_snd_left - def category_theory.over.over_product_of_pullbacks Modified src/category_theory/limits/shapes/pullbacks.lean - theorem category_theory.limits.cocone.of_pushout_cocone_ι - theorem category_theory.limits.cone.of_pullback_cone_π +/- def category_theory.limits.pullback_cone.fst - theorem category_theory.limits.pullback_cone.of_cone_π +/- def category_theory.limits.pullback_cone.snd +/- def category_theory.limits.pushout_cocone.inl +/- def category_theory.limits.pushout_cocone.inr - theorem category_theory.limits.pushout_cocone.of_cocone_ι - def category_theory.limits.walking_cospan.hom.comp + def category_theory.limits.walking_cospan.hom.id + def category_theory.limits.walking_cospan.hom.inl + def category_theory.limits.walking_cospan.hom.inr + def category_theory.limits.walking_cospan.hom - inductive category_theory.limits.walking_cospan.hom - theorem category_theory.limits.walking_cospan.hom_id + def category_theory.limits.walking_cospan.left + def category_theory.limits.walking_cospan.one + def category_theory.limits.walking_cospan.right + def category_theory.limits.walking_cospan - inductive category_theory.limits.walking_cospan - def category_theory.limits.walking_span.hom.comp + def category_theory.limits.walking_span.hom.fst + def category_theory.limits.walking_span.hom.id + def category_theory.limits.walking_span.hom.snd + def category_theory.limits.walking_span.hom - inductive category_theory.limits.walking_span.hom - theorem category_theory.limits.walking_span.hom_id + def category_theory.limits.walking_span.left + def category_theory.limits.walking_span.right + def category_theory.limits.walking_span.zero + def category_theory.limits.walking_span - inductive category_theory.limits.walking_span Added src/category_theory/limits/shapes/wide_pullbacks.lean + def has_finite_wide_pullbacks_of_has_finite_limits + def has_finite_wide_pushouts_of_has_finite_limits + def wide_pullback_shape.diagram_iso_wide_cospan + inductive wide_pullback_shape.hom + theorem wide_pullback_shape.hom_id + def wide_pullback_shape.wide_cospan + def wide_pullback_shape + def wide_pushout_shape.diagram_iso_wide_span + inductive wide_pushout_shape.hom + theorem wide_pushout_shape.hom_id + def wide_pushout_shape.wide_span + def wide_pushout_shape 2020-04-22 23:11:50 4dadd26 chore(scripts): update nolints.txt (#2495) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-22 21:20:58 bcbdeba chore(tactic/apply_fun): add doc string and remove duplication (#2485) I was just adding a docstring to `tactic.apply_fun`, and then saw some duplication and removed it. An example of a use of #2484.


ESTIMATED CHANGES Modified src/tactic/apply_fun.lean 2020-04-22 18:31:17 691a230 chore(scripts): update nolints.txt (#2494) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-22 18:31:15 2fb6022 feat(mk_iff_of_inductive_prop): add, use, and document command (#2490) This existed as an (undocumented) tactic that was being called with `run_cmd`. It deserves to be a documented user command. ESTIMATED CHANGES Modified src/data/list/chain.lean Modified src/data/list/forall2.lean Modified src/data/list/pairwise.lean Modified src/data/multiset.lean Modified src/field_theory/perfect_closure.lean Modified src/logic/relation.lean Modified src/tactic/mk_iff_of_inductive_prop.lean Modified test/mk_iff_of_inductive.lean 2020-04-22 16:17:53 591a0a0 chore(*): only import one file per line (#2470) This perhaps-unnecessarily-obsessive PR puts every import statement on its own line. Why? 1. it's nice to be able to grep for `import X` 2. ~~if we enforced this, it would be easier deal with commands after imports, etc.~~ (irrelevant in 3.9) 3. it means I can remove all unnecessary transitive imports with a script 4. it's just tidier. :-) ESTIMATED CHANGES Modified archive/cubing_a_cube.lean Modified docs/contribute/doc.md Modified docs/contribute/style.md Modified scripts/lint_mathlib.lean Modified src/algebra/archimedean.lean Modified src/algebra/associated.lean Modified src/algebra/big_operators.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/char_p.lean Modified src/algebra/char_zero.lean Modified src/algebra/commute.lean Modified src/algebra/default.lean Modified src/algebra/direct_limit.lean Modified src/algebra/direct_sum.lean Modified src/algebra/field.lean Modified src/algebra/field_power.lean Modified src/algebra/floor.lean Modified src/algebra/free.lean Modified src/algebra/free_monoid.lean Modified src/algebra/gcd_domain.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/basic.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/default.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/prod.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/units.lean Modified src/algebra/group/units_hom.lean Modified src/algebra/group/with_one.lean Modified src/algebra/group_power.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/group_with_zero_power.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean Modified src/algebra/order_functions.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/pointwise.lean Modified src/algebra/punit_instances.lean Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/ring.lean Modified src/algebra/semiconj.lean Modified src/algebraic_geometry/prime_spectrum.lean Modified src/analysis/ODE/gronwall.lean Modified src/analysis/analytic/basic.lean Modified src/analysis/analytic/composition.lean Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/iterated_deriv.lean Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/specific_functions.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/basic.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/convex/specific_functions.lean Modified src/analysis/convex/topology.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/hahn_banach.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/normed_space/riesz_lemma.lean Modified src/analysis/specific_limits.lean Modified src/category/applicative.lean Modified src/category/bifunctor.lean Modified src/category/bitraversable/basic.lean Modified src/category/bitraversable/instances.lean Modified src/category/bitraversable/lemmas.lean Modified src/category/equiv_functor.lean Modified src/category/fold.lean Modified src/category/functor.lean Modified src/category/monad/basic.lean Modified src/category/monad/cont.lean Modified src/category/monad/writer.lean Modified src/category/traversable/basic.lean Modified src/category/traversable/default.lean Modified src/category/traversable/derive.lean Modified src/category/traversable/equiv.lean Modified src/category/traversable/instances.lean Modified src/category/traversable/lemmas.lean Modified src/category_theory/action.lean Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/default.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/conj.lean Modified src/category_theory/connected.lean Modified src/category_theory/const.lean Modified src/category_theory/core.lean Modified src/category_theory/currying.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/functor.lean Modified src/category_theory/functorial.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/isomorphism_classes.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/constructions/equalizers.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/monad/default.lean Modified src/category_theory/monad/types.lean Modified src/category_theory/natural_transformation.lean Modified src/category_theory/quotient.lean Modified src/category_theory/single_obj.lean Modified src/combinatorics/composition.lean Modified src/computability/halting.lean Modified src/computability/partrec.lean Modified src/computability/reduce.lean Modified src/computability/turing_machine.lean Modified src/data/W.lean Modified src/data/analysis/topology.lean Modified src/data/array/lemmas.lean Modified src/data/buffer/basic.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/dfinsupp.lean Modified src/data/dlist/basic.lean Modified src/data/dlist/instances.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/encodable.lean Modified src/data/equiv/fin.lean Modified src/data/equiv/functor.lean Modified src/data/equiv/list.lean Modified src/data/equiv/local_equiv.lean Modified src/data/equiv/mul_add.lean Modified src/data/equiv/nat.lean Modified src/data/equiv/ring.lean Modified src/data/equiv/transfer_instance.lean Modified src/data/erased.lean Modified src/data/finmap.lean Modified src/data/finset.lean Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean Modified src/data/fintype/card.lean Modified src/data/fp/basic.lean Modified src/data/hash_map.lean Modified src/data/indicator_function.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/int/modeq.lean Modified src/data/int/parity.lean Modified src/data/int/sqrt.lean Modified src/data/lazy_list2.lean Modified src/data/list/basic.lean Modified src/data/list/defs.lean Modified src/data/list/sigma.lean Modified src/data/matrix/basic.lean Modified src/data/matrix/pequiv.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean Modified src/data/nat/choose.lean Modified src/data/nat/enat.lean Modified src/data/nat/modeq.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/parity.lean Modified src/data/nat/prime.lean +/- theorem nat.factors_prime Modified src/data/nat/sqrt.lean Modified src/data/nat/totient.lean Modified src/data/num/bitwise.lean Modified src/data/num/lemmas.lean Modified src/data/option/basic.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pequiv.lean Modified src/data/pfun.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/factors.lean Modified src/data/pnat/xgcd.lean Modified src/data/polynomial.lean Modified src/data/prod.lean Modified src/data/rat/basic.lean Modified src/data/rat/denumerable.lean Modified src/data/rat/meta_defs.lean Modified src/data/real/basic.lean Modified src/data/real/cardinality.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean Modified src/data/real/ereal.lean Modified src/data/real/hyperreal.lean Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean Modified src/data/real/pi.lean Modified src/data/rel.lean Modified src/data/semiquot.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/set/basic.lean Modified src/data/set/countable.lean Modified src/data/set/default.lean Modified src/data/set/disjointed.lean Modified src/data/set/enumerate.lean Modified src/data/set/finite.lean Modified src/data/set/function.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/default.lean Modified src/data/set/intervals/disjoint.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/data/set/lattice.lean Modified src/data/setoid.lean Modified src/data/sigma/basic.lean Modified src/data/stream/basic.lean Modified src/data/string/basic.lean Modified src/data/support.lean Modified src/data/tree.lean Modified src/data/vector2.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/data/zsqrtd/basic.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/deprecated/group.lean Modified src/field_theory/finite.lean Modified src/field_theory/finite_card.lean Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/perfect_closure.lean Modified src/field_theory/splitting_field.lean Modified src/field_theory/subfield.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/manifold.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/real_instances.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/congruence.lean Modified src/group_theory/coset.lean Modified src/group_theory/eckmann_hilton.lean Modified src/group_theory/group_action.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/order_of_element.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/presented_group.lean Modified src/group_theory/submonoid.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/direct_sum_module.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/matrix.lean Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/linear_algebra/tensor_product.lean Modified src/logic/basic.lean Modified src/logic/embedding.lean Modified src/logic/function.lean Modified src/logic/relation.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/indicator_function.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean Modified src/measure_theory/set_integral.lean Modified src/measure_theory/simple_func_dense.lean Modified src/meta/expr.lean Modified src/number_theory/bernoulli.lean Modified src/number_theory/dioph.lean Modified src/number_theory/pell.lean Modified src/number_theory/sum_four_squares.lean Modified src/order/basic.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/bounds.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/copy.lean Modified src/order/default.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/filter/default.lean Modified src/order/filter/extr.lean Modified src/order/filter/filter_product.lean Modified src/order/filter/pointwise.lean Modified src/order/galois_connection.lean Modified src/order/lattice.lean Modified src/order/liminf_limsup.lean Modified src/order/order_iso.lean Modified src/order/pilex.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/maps.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/subring.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/lists.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/tactic/abel.lean Modified src/tactic/algebra.lean Modified src/tactic/alias.lean Modified src/tactic/apply_fun.lean Modified src/tactic/basic.lean Modified src/tactic/clear.lean Modified src/tactic/converter/apply_congr.lean Modified src/tactic/converter/binders.lean Modified src/tactic/converter/interactive.lean Modified src/tactic/core.lean Modified src/tactic/default.lean Modified src/tactic/derive_inhabited.lean Modified src/tactic/doc_commands.lean Modified src/tactic/elide.lean Modified src/tactic/explode.lean Modified src/tactic/ext.lean Modified src/tactic/finish.lean Modified src/tactic/linarith.lean Modified src/tactic/lint/default.lean Modified src/tactic/local_cache.lean Modified src/tactic/localized.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_cast.lean Modified src/tactic/norm_num.lean Modified src/tactic/omega/clause.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/find_ees.lean Modified src/tactic/omega/find_scalars.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/lin_comb.lean Modified src/tactic/omega/main.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/dnf.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/omega/prove_unsats.lean Modified src/tactic/omega/term.lean Modified src/tactic/pi_instances.lean Modified src/tactic/rcases.lean Modified src/tactic/rename_var.lean Modified src/tactic/replacer.lean Modified src/tactic/restate_axiom.lean Modified src/tactic/rewrite.lean Modified src/tactic/rewrite_all/basic.lean Modified src/tactic/ring.lean Modified src/tactic/ring2.lean Modified src/tactic/scc.lean Modified src/tactic/simpa.lean Modified src/tactic/subtype_instance.lean Modified src/tactic/suggest.lean Modified src/tactic/tauto.lean Modified src/tactic/tfae.lean Modified src/tactic/transfer.lean Modified src/tactic/transform_decl.lean Modified src/tactic/wlog.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/polynomial.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/category/UniformSpace.lean Modified src/topology/compact_open.lean Modified src/topology/homeomorph.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/local_extr.lean Modified src/topology/local_homeomorph.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/metric_space/premetric_space.lean Modified src/topology/opens.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean Modified src/topology/topological_fiber_bundle.lean Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compare_reals.lean Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/pi.lean Modified src/topology/uniform_space/uniform_convergence.lean Modified src/topology/uniform_space/uniform_embedding.lean Modified test/tactics.lean 2020-04-22 15:09:08 8865b00 chore(scripts): update nolints.txt (#2491) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-22 12:17:00 d40662f chore(tactic/auto_cases): add docstring and remove duplication (#2488) I was just adding a docstring, and I saw some duplication so I removed it too.


ESTIMATED CHANGES Modified src/tactic/auto_cases.lean 2020-04-22 12:16:58 f760ad5 chore(meta/expr): add a docstring (#2487) Add a docstring.


ESTIMATED CHANGES Modified src/meta/expr.lean 2020-04-22 12:16:56 62a613f feat(data/option): add `option.mmap` and `option.maybe` (#2484) Please let me know if something like this exists already! Over the last few days I've wanted it multiple times, and it is used in #2485.


ESTIMATED CHANGES Modified src/data/option/defs.lean + def option.{u 2020-04-22 12:16:54 e4abced chore(data/polynomial): rename type vars (#2483) Rename `α` to `R` etc; use `ι` for index types No other changes ESTIMATED CHANGES Modified src/data/polynomial.lean +/- theorem is_integral_domain.polynomial +/- def polynomial.C +/- theorem polynomial.C_0 +/- theorem polynomial.C_1 +/- theorem polynomial.C_mul' +/- def polynomial.X +/- theorem polynomial.X_ne_zero +/- theorem polynomial.X_pow_sub_C_ne_zero +/- theorem polynomial.as_sum +/- def polynomial.binom_expansion +/- theorem polynomial.card_nth_roots +/- theorem polynomial.card_roots' +/- theorem polynomial.card_roots_X_pow_sub_C +/- theorem polynomial.card_roots_sub_C' +/- theorem polynomial.card_roots_sub_C +/- theorem polynomial.coe_eval₂_ring_hom +/- theorem polynomial.coe_norm_unit +/- def polynomial.coeff +/- theorem polynomial.coeff_C_mul +/- theorem polynomial.coeff_C_mul_X +/- theorem polynomial.coeff_X +/- theorem polynomial.coeff_X_one +/- theorem polynomial.coeff_X_zero +/- theorem polynomial.coeff_add +/- def polynomial.coeff_coe_to_fun +/- theorem polynomial.coeff_coe_units_zero_ne_zero +/- theorem polynomial.coeff_derivative +/- theorem polynomial.coeff_eq_zero_of_nat_degree_lt +/- theorem polynomial.coeff_inv_units +/- theorem polynomial.coeff_mk +/- theorem polynomial.coeff_mul +/- theorem polynomial.coeff_mul_X +/- theorem polynomial.coeff_mul_X_pow +/- theorem polynomial.coeff_mul_X_zero +/- theorem polynomial.coeff_mul_degree_add_degree +/- theorem polynomial.coeff_neg +/- theorem polynomial.coeff_one +/- theorem polynomial.coeff_one_zero +/- theorem polynomial.coeff_smul +/- theorem polynomial.coeff_sub +/- theorem polynomial.coeff_sum +/- theorem polynomial.coeff_zero +/- theorem polynomial.coeff_zero_eq_eval_zero +/- def polynomial.comp +/- theorem polynomial.comp_zero +/- def polynomial.decidable_dvd_monic +/- def polynomial.degree +/- theorem polynomial.degree_C_mul_X_pow_le +/- theorem polynomial.degree_X +/- theorem polynomial.degree_X_le +/- theorem polynomial.degree_X_pow +/- theorem polynomial.degree_X_pow_le +/- theorem polynomial.degree_X_pow_sub_C +/- theorem polynomial.degree_X_sub_C +/- theorem polynomial.degree_add_le +/- theorem polynomial.degree_coe_units +/- theorem polynomial.degree_derivative_eq +/- theorem polynomial.degree_div_by_monic_le +/- theorem polynomial.degree_div_by_monic_lt +/- theorem polynomial.degree_div_le +/- theorem polynomial.degree_eq_iff_nat_degree_eq +/- theorem polynomial.degree_eq_iff_nat_degree_eq_of_pos +/- theorem polynomial.degree_eq_one_of_irreducible_of_root +/- theorem polynomial.degree_erase_le +/- theorem polynomial.degree_le_iff_coeff_zero +/- theorem polynomial.degree_le_mul_left +/- theorem polynomial.degree_lt_wf +/- theorem polynomial.degree_map' +/- theorem polynomial.degree_map +/- theorem polynomial.degree_map_eq_of_injective +/- theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero +/- theorem polynomial.degree_map_le +/- theorem polynomial.degree_mod_by_monic_le +/- theorem polynomial.degree_mod_by_monic_lt +/- theorem polynomial.degree_monomial_le +/- theorem polynomial.degree_mul_le +/- theorem polynomial.degree_mul_leading_coeff_inv +/- theorem polynomial.degree_neg +/- theorem polynomial.degree_one +/- theorem polynomial.degree_one_le +/- theorem polynomial.degree_pow_eq +/- theorem polynomial.degree_pow_le +/- theorem polynomial.degree_sum_le +/- theorem polynomial.degree_zero +/- def polynomial.derivative +/- theorem polynomial.derivative_C +/- theorem polynomial.derivative_X +/- theorem polynomial.derivative_add +/- theorem polynomial.derivative_eval +/- theorem polynomial.derivative_monomial +/- theorem polynomial.derivative_mul +/- theorem polynomial.derivative_one +/- theorem polynomial.derivative_sum +/- theorem polynomial.derivative_zero +/- def polynomial.div +/- def polynomial.div_X +/- theorem polynomial.div_X_C +/- theorem polynomial.div_X_mul_X_add +/- def polynomial.div_by_monic +/- theorem polynomial.div_by_monic_eq_div +/- theorem polynomial.div_by_monic_eq_of_not_monic +/- theorem polynomial.div_by_monic_one +/- theorem polynomial.div_by_monic_zero +/- theorem polynomial.div_mod_by_monic_unique +/- def polynomial.eval +/- theorem polynomial.eval_map +/- theorem polynomial.eval_neg +/- theorem polynomial.eval_one +/- theorem polynomial.eval_sub +/- def polynomial.eval_sub_factor +/- theorem polynomial.eval_sum +/- theorem polynomial.eval_zero +/- def polynomial.eval₂ +/- theorem polynomial.eval₂_comp +/- theorem polynomial.eval₂_hom +/- theorem polynomial.eval₂_map +/- theorem polynomial.eval₂_neg +/- theorem polynomial.eval₂_one +/- def polynomial.eval₂_ring_hom +/- theorem polynomial.eval₂_sub +/- theorem polynomial.eval₂_sum +/- theorem polynomial.eval₂_zero +/- theorem polynomial.exists_finset_roots +/- theorem polynomial.ext +/- theorem polynomial.ext_iff +/- theorem polynomial.finset_sum_coeff +/- theorem polynomial.hom_eval₂ +/- theorem polynomial.int_cast_eq_C +/- def polynomial.is_root +/- theorem polynomial.ite_le_nat_degree_coeff +/- def polynomial.lcoeff +/- theorem polynomial.lcoeff_apply +/- def polynomial.leading_coeff +/- theorem polynomial.leading_coeff_C +/- theorem polynomial.leading_coeff_X +/- theorem polynomial.leading_coeff_X_pow +/- theorem polynomial.leading_coeff_map +/- theorem polynomial.leading_coeff_monomial +/- theorem polynomial.leading_coeff_mul +/- theorem polynomial.leading_coeff_mul_X_pow +/- theorem polynomial.leading_coeff_of_injective +/- theorem polynomial.leading_coeff_one +/- theorem polynomial.leading_coeff_pow +/- theorem polynomial.leading_coeff_zero +/- def polynomial.map +/- theorem polynomial.map_div +/- theorem polynomial.map_div_by_monic +/- theorem polynomial.map_eq_zero +/- theorem polynomial.map_injective +/- theorem polynomial.map_map +/- theorem polynomial.map_mod +/- theorem polynomial.map_mod_by_monic +/- theorem polynomial.map_mod_div_by_monic +/- theorem polynomial.map_neg +/- theorem polynomial.map_one +/- theorem polynomial.map_sub +/- theorem polynomial.map_zero +/- theorem polynomial.mem_map_range +/- theorem polynomial.mem_nth_roots +/- theorem polynomial.mem_roots_sub_C +/- theorem polynomial.mem_support_derivative +/- def polynomial.mod +/- theorem polynomial.mod_X_sub_C_eq_C_eval +/- def polynomial.mod_by_monic +/- theorem polynomial.mod_by_monic_X +/- theorem polynomial.mod_by_monic_X_sub_C_eq_C_eval +/- theorem polynomial.mod_by_monic_add_div +/- theorem polynomial.mod_by_monic_eq_mod +/- theorem polynomial.mod_by_monic_eq_of_not_monic +/- theorem polynomial.mod_by_monic_eq_sub_mul_div +/- theorem polynomial.mod_by_monic_one +/- theorem polynomial.mod_by_monic_zero +/- theorem polynomial.monic.as_sum +/- theorem polynomial.monic.leading_coeff +/- theorem polynomial.monic.ne_zero +/- theorem polynomial.monic.ne_zero_of_zero_ne_one +/- def polynomial.monic +/- theorem polynomial.monic_X +/- theorem polynomial.monic_X_add_C +/- theorem polynomial.monic_X_sub_C +/- theorem polynomial.monic_map +/- theorem polynomial.monic_of_injective +/- theorem polynomial.monic_one +/- def polynomial.monomial +/- theorem polynomial.mul_X_pow_eq_zero +/- theorem polynomial.multiplicity_X_sub_C_finite +/- theorem polynomial.nat_cast_eq_C +/- def polynomial.nat_degree +/- theorem polynomial.nat_degree_C +/- theorem polynomial.nat_degree_coe_units +/- theorem polynomial.nat_degree_eq_of_degree_eq +/- theorem polynomial.nat_degree_eq_of_degree_eq_some +/- theorem polynomial.nat_degree_int_cast +/- theorem polynomial.nat_degree_le_of_degree_le +/- theorem polynomial.nat_degree_map' +/- theorem polynomial.nat_degree_map +/- theorem polynomial.nat_degree_nat_cast +/- theorem polynomial.nat_degree_neg +/- theorem polynomial.nat_degree_one +/- theorem polynomial.nat_degree_pow_eq +/- theorem polynomial.nat_degree_zero +/- theorem polynomial.ne_zero_of_monic_of_zero_ne_one +/- def polynomial.nonzero_comm_ring.of_polynomial_ne +/- def polynomial.nonzero_comm_semiring.of_polynomial_ne +/- theorem polynomial.not_monic_zero +/- def polynomial.nth_roots +/- theorem polynomial.one_comp +/- def polynomial.pow_add_expansion +/- theorem polynomial.pow_root_multiplicity_dvd +/- def polynomial.pow_sub_pow_factor +/- theorem polynomial.root_mul_left_of_is_root +/- theorem polynomial.root_mul_right_of_is_root +/- def polynomial.root_multiplicity +/- theorem polynomial.root_multiplicity_eq_multiplicity +/- theorem polynomial.subsingleton_of_monic_zero +/- theorem polynomial.sum_C_mul_X_eq +/- theorem polynomial.support_zero +/- theorem polynomial.zero_comp +/- theorem polynomial.zero_div_by_monic +/- theorem polynomial.zero_is_root_of_coeff_zero_eq_zero +/- theorem polynomial.zero_le_degree_iff +/- theorem polynomial.zero_mod_by_monic +/- def polynomial Modified src/ring_theory/adjoin.lean 2020-04-22 12:16:52 5965370 feat(data/monoid_algebra): algebra structure, lift of morphisms (#2366) Prove that for a monoid homomorphism `f : G →* R` from a monoid `G` to a `k`-algebra `R` there exists a unique algebra morphism `g : k[G] →ₐ[k] R` such that `∀ x : G, g (single x 1) = f x`. This is expressed as `def lift : (G →* R) ≃ (monoid_algebra k G →ₐ[k] R)`. I want to use this to define `aeval` and `eval₂` for polynomials. This way we'll have many properties for free. ESTIMATED CHANGES Modified src/algebra/ring.lean +/- theorem coe_add_monoid_hom' +/- theorem coe_add_monoid_hom +/- theorem coe_monoid_hom' +/- theorem coe_monoid_hom Modified src/data/monoid_algebra.lean + theorem add_monoid_algebra.coe_algebra_map + def add_monoid_algebra.lift + theorem add_monoid_algebra.mul_apply + theorem add_monoid_algebra.mul_single_apply_aux + theorem add_monoid_algebra.mul_single_zero_apply + def add_monoid_algebra.of + theorem add_monoid_algebra.of_apply + theorem add_monoid_algebra.single_mul_apply_aux +/- theorem add_monoid_algebra.single_mul_single + theorem add_monoid_algebra.single_zero_mul_apply + theorem monoid_algebra.alg_hom_ext + theorem monoid_algebra.coe_algebra_map + def monoid_algebra.lift + theorem monoid_algebra.lift_apply + theorem monoid_algebra.lift_of + theorem monoid_algebra.lift_single + theorem monoid_algebra.lift_symm_apply + theorem monoid_algebra.lift_unique' + theorem monoid_algebra.lift_unique + theorem monoid_algebra.mul_apply_antidiagonal + theorem monoid_algebra.mul_single_apply_aux + theorem monoid_algebra.mul_single_one_apply + def monoid_algebra.of + theorem monoid_algebra.of_apply + theorem monoid_algebra.single_eq_algebra_map_mul_of + theorem monoid_algebra.single_mul_apply_aux +/- theorem monoid_algebra.single_mul_single + theorem monoid_algebra.single_one_mul_apply + theorem monoid_algebra.single_pow Modified src/data/padics/padic_integers.lean Modified src/data/polynomial.lean Modified src/ring_theory/algebra.lean + theorem alg_hom.coe_mk + theorem alg_hom.coe_to_monoid_hom + theorem alg_hom.coe_to_ring_hom + theorem alg_hom.map_pow + theorem alg_hom.map_prod + theorem alg_hom.map_smul + theorem alg_hom.map_sum + def ring_hom.to_algebra' +/- def ring_hom.to_algebra Modified src/ring_theory/localization.lean Modified src/topology/algebra/module.lean 2020-04-22 09:12:07 142f001 chore(cmd/where): remove unused argument (#2486) Just remove an unused argument from the `#where` declaration, satisfying the linter.


ESTIMATED CHANGES Modified src/tactic/where.lean 2020-04-22 03:48:09 5e2025f feat(group_theory/bundled_subgroup): bundled subgroup (#2140) Add bundled subgroups. While `is_subgroup` is a class taking `s : set G` as an argument, `subgroup G` is a structure with a field `carrier : set G` and a coercion to `set G`. ESTIMATED CHANGES Added src/group_theory/bundled_subgroup.lean + theorem add_subgroup.gsmul_mem + theorem add_subgroup.mem_closure_singleton + def add_subgroup.of_subgroup + def add_subgroup.to_subgroup + structure add_subgroup + theorem monoid_hom.coe_range + theorem monoid_hom.comap_ker + def monoid_hom.eq_locus + theorem monoid_hom.eq_of_eq_on_dense + theorem monoid_hom.eq_of_eq_on_top + theorem monoid_hom.eq_on_closure + theorem monoid_hom.gclosure_preimage_le + def monoid_hom.ker + theorem monoid_hom.map_closure + theorem monoid_hom.map_range + theorem monoid_hom.mem_ker + theorem monoid_hom.mem_range + theorem monoid_hom.rang_top_of_surjective + def monoid_hom.range + theorem monoid_hom.range_top_iff_surjective + def mul_equiv.subgroup_congr + def subgroup.add_subgroup_equiv + theorem subgroup.bot_prod_bot + def subgroup.closure + theorem subgroup.closure_Union + theorem subgroup.closure_empty + theorem subgroup.closure_eq + theorem subgroup.closure_eq_of_le + theorem subgroup.closure_induction + theorem subgroup.closure_le + theorem subgroup.closure_mono + theorem subgroup.closure_union + theorem subgroup.closure_univ + theorem subgroup.coe_Inf + theorem subgroup.coe_bot + theorem subgroup.coe_coe + theorem subgroup.coe_comap + theorem subgroup.coe_inf + theorem subgroup.coe_inv + theorem subgroup.coe_map + theorem subgroup.coe_mul + theorem subgroup.coe_one + theorem subgroup.coe_prod + theorem subgroup.coe_ssubset_coe + theorem subgroup.coe_subset_coe + theorem subgroup.coe_subtype + theorem subgroup.coe_top + def subgroup.comap + theorem subgroup.comap_comap + theorem subgroup.comap_inf + theorem subgroup.comap_infi + theorem subgroup.comap_top + theorem subgroup.ext' + theorem subgroup.ext + theorem subgroup.gc_map_comap + theorem subgroup.gpow_mem + theorem subgroup.inv_mem + theorem subgroup.le_def + theorem subgroup.list_prod_mem + def subgroup.map + theorem subgroup.map_bot + theorem subgroup.map_le_iff_le_comap + theorem subgroup.map_map + theorem subgroup.map_sup + theorem subgroup.map_supr + theorem subgroup.mem_Inf + theorem subgroup.mem_Sup_of_directed_on + theorem subgroup.mem_bot + theorem subgroup.mem_closure + theorem subgroup.mem_closure_singleton + theorem subgroup.mem_coe + theorem subgroup.mem_comap + theorem subgroup.mem_inf + theorem subgroup.mem_map + theorem subgroup.mem_prod + theorem subgroup.mem_supr_of_directed + theorem subgroup.mem_top + theorem subgroup.mul_mem + theorem subgroup.multiset_prod_mem + def subgroup.of + def subgroup.of_add_subgroup + theorem subgroup.one_mem + theorem subgroup.pow_mem + def subgroup.prod + def subgroup.prod_equiv + theorem subgroup.prod_mem + theorem subgroup.prod_mono + theorem subgroup.prod_mono_left + theorem subgroup.prod_mono_right + theorem subgroup.prod_top + theorem subgroup.subset_closure + def subgroup.subtype + def subgroup.to_add_subgroup + theorem subgroup.top_prod + theorem subgroup.top_prod_top + structure subgroup 2020-04-21 20:46:05 585d77a chore(scripts): update nolints.txt (#2482) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-21 17:16:35 ffa97d0 fix(tactic/where): remove hackery from `#where`, using Lean 3c APIs (#2465) We remove almost all of the hackery from `#where`, using the Lean 3c APIs exposed by @cipher1024. In doing so we add pair of library functions which make this a tad more convenient. The last "hack" which remains is by far the most mild; we expose `lean.parser.get_current_namespace`, which creates a dummy definition in the environment in order to obtain the current namespace. Of course this should be replaced with an exposed C++ function when the time comes (crossref with the leanprover-community/lean issue here: https://github.com/leanprover-community/lean/issues/196). ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/where.lean - def where.inflate Added test/where.lean 2020-04-21 10:37:45 533a552 feat(tactic/hint): if hint can solve the goal, say so (#2474) It used to be that `hint` would print: ``` the following tactics make progress: ---- tac1 tac2 tac3 ``` with the tactics listed in order of number of resulting goals. In particular, if `tac1` and `tac2` actually solve the goal, while `tac3` only makes progress, this isn't explained. With this PR, if any of those tactics actually close the goal, we only print those tactics, with text: ``` the following tactics solve the goal: ---- tac1 tac2 ``` ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/hint.lean Modified test/hint.lean 2020-04-21 10:37:42 15d35b1 feat(tactic/#simp): a user_command for #simp (#2446) ```lean #simp 5 - 5 ``` prints `0`. If anyone knows how to get access to local `variables` while parsing an expression, that would be awesome. Then we could write ```lean variable (x : ℝ) #simp [exp_ne_zero] : deriv (λ x, (sin x) / (exp x)) x ``` as well as ```lean #simp [exp_ne_zero] : λ x, deriv (λ x, (sin x) / (exp x)) x ``` ESTIMATED CHANGES Modified src/tactic/basic.lean Added src/tactic/simp_command.lean Added test/simp_command.lean + def f 2020-04-21 07:42:40 df84064 fix(tactic/clear): don't use rb_map unnecessarily (#2325) The `clear_dependent` tactic seems to unnecessarily convert `list` back and forth to an `rb_map`, for no purpose, and this makes the internal tactic unnecessarily difficult to call. ESTIMATED CHANGES Modified src/tactic/clear.lean Modified src/tactic/equiv_rw.lean Modified test/tactics.lean 2020-04-21 05:12:16 3edb6a4 fix(category_theory/concrete): access the carrier type by the coercion (#2473) This should marginally reduce the pain of using concrete categories, as the underlying types of a bundled object should more uniformly described via a coercion, rather than the `.α` projection. (There's still some separate pain involving `bundled.map`, but it has an orthogonal fix which I'm working on in another branch.) ESTIMATED CHANGES Modified src/category_theory/concrete_category/bundled.lean + theorem category_theory.bundled.coe_mk Modified src/category_theory/concrete_category/bundled_hom.lean 2020-04-21 01:17:00 7a13a11 chore(category_theory): delete two empty files (#2472) ESTIMATED CHANGES Deleted src/category_theory/limits/shapes/constructions/finite_products.lean Deleted src/category_theory/limits/shapes/constructions/sums.lean 2020-04-20 18:19:41 5d0a724 chore(docs/naming): update (#2468) This file has been bit-rotting. ESTIMATED CHANGES Modified docs/contribute/naming.md 2020-04-20 15:36:57 7626763 fix(algebra/category/*/colimits): cleaning up (#2469) With the passage of time, it seems some difficulties have dissolved away, and steps in the semi-automated construction of colimits in algebraic categories which previously required `rw` or even `erw`, can now be handled by `simp`. Yay! ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Mon/colimits.lean 2020-04-20 15:36:55 8adfafd feat(data/nat,data/int): add some modular arithmetic lemmas (#2460) These lemmas (a) were found useful in formalising solutions to some olympiad problems, see ; (b) seem more generally relevant than to just those particular problems; (c) do not show up through library_search as being already present. ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.dvd_sub_of_mod_eq + theorem int.eq_of_mod_eq_of_nat_abs_sub_lt_nat_abs + theorem int.eq_zero_of_dvd_of_nat_abs_lt_nat_abs Modified src/data/nat/basic.lean + theorem nat.eq_zero_of_dvd_of_lt + theorem nat.sub_mod_eq_zero_of_mod_eq 2020-04-20 15:36:53 d1ba87a feat(category_theory/faithful): faithful.of_iso (#2453) A minor useful lemma, about to be abandoned on another branch. ESTIMATED CHANGES Modified src/category_theory/fully_faithful.lean + theorem category_theory.faithful.of_comp_iso + theorem category_theory.faithful.of_iso 2020-04-20 15:36:51 51e03aa feat(data/monoid_algebra): the distrib_mul_action (#2417) ESTIMATED CHANGES Modified src/data/finsupp.lean + def finsupp.comap_distrib_mul_action + def finsupp.comap_distrib_mul_action_self + def finsupp.comap_has_scalar + def finsupp.comap_mul_action + theorem finsupp.comap_smul_apply + theorem finsupp.comap_smul_single Modified src/data/monoid_algebra.lean Modified src/group_theory/group_action.lean + def mul_action.regular 2020-04-20 14:24:18 036b038 chore(category_theory/opposites): typo fix (#2466) As mentioned in #2464. ESTIMATED CHANGES Modified src/category_theory/opposites.lean 2020-04-20 13:15:51 59a767e chore(scripts): update nolints.txt (#2467) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-20 11:18:14 4474382 feat(category_theory/opposites): some opposite category properties (#2464) Add some more basic properties relating to the opposite category. Make sure you have: * [x] reviewed and applied the coding style: [coding](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/style.md), [naming](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/naming.md) * [x] reviewed and applied [the documentation requirements](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/doc.md) * [x] make sure definitions and lemmas are put in the right files * [x] make sure definitions and lemmas are not redundant For reviewers: [code review check list](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/code-review.md) If you're confused by comments on your PR like `bors r+` or `bors d+`, please see our [notes on bors](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/bors.md) for information on our merging workflow. ESTIMATED CHANGES Modified src/category_theory/opposites.lean + def category_theory.op_op_equivalence + def category_theory.unop_unop 2020-04-20 08:26:52 58088cc fix(tactic/delta_instance): handle universe metavariables (#2463) ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified test/delta_instance.lean 2020-04-20 07:17:35 9b25578 fix(category_theory/limits): avoid a rewrite in a definition (#2458) The proof that every equalizer of `f` and `g` is an isomorphism if `f = g` had an ugly rewrite in a definition (introduced by yours truly). This PR reformulates the proof in a cleaner way by working with two morphisms `f` and `g` and a proof of `f = g` right from the start, which is easy to specialze to the case `(f, f)`, instead of trying to reduce the `(f, g)` case to the `(f, f)` case by rewriting. This also lets us get rid of `fork.eq_of_ι_ι`, unless someone wants to keep it, but personally I don't think that using it is ever a good idea. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean - def category_theory.limits.cocone_parallel_pair_self - theorem category_theory.limits.cocone_parallel_pair_self_X - theorem category_theory.limits.cocone_parallel_pair_self_ι_app_one + def category_theory.limits.coequalizer.π_of_eq - def category_theory.limits.coequalizer.π_of_self' - theorem category_theory.limits.cofork.eq_of_π_π - def category_theory.limits.colimit_cocone_parallel_pair_self_is_iso' - def category_theory.limits.colimit_cocone_parallel_pair_self_is_iso - def category_theory.limits.cone_parallel_pair_self - theorem category_theory.limits.cone_parallel_pair_self_X - theorem category_theory.limits.cone_parallel_pair_self_π_app_zero - def category_theory.limits.epi_limit_cone_parallel_pair_is_iso + def category_theory.limits.equalizer.ι_of_eq - def category_theory.limits.equalizer.ι_of_self' - theorem category_theory.limits.fork.eq_of_ι_ι + def category_theory.limits.id_cofork + def category_theory.limits.id_fork - def category_theory.limits.is_colimit_cocone_parallel_pair_self + def category_theory.limits.is_colimit_id_cofork + def category_theory.limits.is_iso_colimit_cocone_parallel_pair_of_eq + def category_theory.limits.is_iso_colimit_cocone_parallel_pair_of_self + def category_theory.limits.is_iso_limit_cocone_parallel_pair_of_epi + def category_theory.limits.is_iso_limit_cone_parallel_pair_of_epi + def category_theory.limits.is_iso_limit_cone_parallel_pair_of_eq + def category_theory.limits.is_iso_limit_cone_parallel_pair_of_self - def category_theory.limits.is_limit_cone_parallel_pair_self + def category_theory.limits.is_limit_id_fork - def category_theory.limits.limit_cone_parallel_pair_self_is_iso' - def category_theory.limits.limit_cone_parallel_pair_self_is_iso - def category_theory.limits.mono_limit_cocone_parallel_pair_is_iso Modified src/category_theory/limits/shapes/kernels.lean 2020-04-20 01:36:42 c0afa80 chore(tactic/simp_result): forgot to import in tactic.basic (#2462) When I write a new tactic, I tend not to import it into `tactic.basic` or `tactic.interactive` while testing it and PR'ing it, to save having to recompile the whole library every time I tweak the tactic. But then, inevitably, I forget to add the import before the review process is finished. This imports `simp_result`, from #2356, into `tactic.basic`. ESTIMATED CHANGES Modified src/tactic/basic.lean 2020-04-19 15:18:08 a8edb5e fix(category_theory/limits): make image.map_comp a simp lemma (#2456) This was not possible in Lean 3.8. Many thanks to @gebner for tracking down and fixing leanprover-community/lean#181 in Lean 3.9. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean 2020-04-19 15:18:06 e6aa533 fix(category_theory/limits): remove an unnecessary axiom in has_image_map (#2455) I somehow missed the fact that `has_image_map.factor_map` is actually a consequence of `has_image_map.map_ι` together with the fact that `image.ι` is always a monomorphism. ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.has_image_map.factor_map 2020-04-19 14:00:03 aa55f8b feat(category_theory/eq_to_iso): missing simp lemma (#2454) A missing simp lemma. ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean + theorem category_theory.eq_to_iso.inv 2020-04-19 14:00:01 9801c1c feat(continued_fractions) add stabilisation under termination lemmas (#2451) - continued fractions: add lemmas for stabilisation of computations under termination and add them to default exports - seq: make argument in seq.terminated_stable explicit ESTIMATED CHANGES Modified src/algebra/continued_fractions/default.lean Added src/algebra/continued_fractions/terminated_stable.lean + theorem generalized_continued_fraction.continuants_aux_stable_of_terminated + theorem generalized_continued_fraction.continuants_aux_stable_step_of_terminated + theorem generalized_continued_fraction.continuants_stable_of_terminated + theorem generalized_continued_fraction.convergents'_aux_stable_of_terminated + theorem generalized_continued_fraction.convergents'_aux_stable_step_of_terminated + theorem generalized_continued_fraction.convergents'_stable_of_terminated + theorem generalized_continued_fraction.convergents_stable_of_terminated + theorem generalized_continued_fraction.denominators_stable_of_terminated + theorem generalized_continued_fraction.numerators_stable_of_terminated + theorem generalized_continued_fraction.terminated_stable Modified src/data/seq/seq.lean +/- theorem seq.terminated_stable 2020-04-19 13:02:57 6054f7c chore(number_theory/sum_four_squares): slightly shorten proof (#2457) This proof was unnecessarily long due to a ring bug which has now been fixed. ESTIMATED CHANGES Modified src/number_theory/sum_four_squares.lean 2020-04-19 19:50:13+10:00 d344310 chore(category_theory/monoidal): some arguments that need to be made explicit in 3.8 ESTIMATED CHANGES Modified src/category_theory/monoidal/functorial.lean 2020-04-19 07:58:32 11d89a2 chore(algebra/module): replace typeclass arguments with inferred arguments (#2444) This doesn't change the explicit type signature of any functions, but makes some inferable typeclass arguments implicit. Beyond the potential performance improvement, my motivation for doing this was that in `monoid_algebra` we currently have two possible `module k (monoid_algebra k G)` instances: one directly from `monoid_algebra.module`, and another one via `restrict_scalars`. These are equal, but not definitionally. In another experimental branch, I couldn't even express the isomorphism between these module structures, because type inference was filling in the `monoid_algebra.module` instance in composition of linear maps, and then failing because one of the linear maps was actually using the other module structure... This change fixes this. ESTIMATED CHANGES Modified src/algebra/module.lean +/- def linear_map.comp +/- theorem linear_map.comp_apply +/- theorem linear_map.ext +/- theorem linear_map.ext_iff +/- def linear_map.id +/- theorem linear_map.id_apply +/- def linear_map.to_add_monoid_hom +/- theorem linear_map.to_add_monoid_hom_coe +/- theorem linear_map.to_fun_eq_coe +/- theorem submodule.ext' +/- theorem submodule.ext +/- theorem submodule.subtype_eq_val Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.apply_symm_apply +/- theorem linear_equiv.coe_apply +/- theorem linear_equiv.coe_prod +/- theorem linear_equiv.eq_bot_of_equiv +/- theorem linear_equiv.ext +/- theorem linear_equiv.map_add +/- theorem linear_equiv.map_eq_zero_iff +/- theorem linear_equiv.map_ne_zero_iff +/- theorem linear_equiv.map_neg +/- theorem linear_equiv.map_smul +/- theorem linear_equiv.map_sub +/- theorem linear_equiv.map_zero +/- theorem linear_equiv.of_bijective_apply +/- def linear_equiv.of_linear +/- theorem linear_equiv.of_linear_apply +/- theorem linear_equiv.of_linear_symm_apply +/- def linear_equiv.of_top +/- theorem linear_equiv.of_top_apply +/- theorem linear_equiv.of_top_symm_apply +/- theorem linear_equiv.prod_apply +/- theorem linear_equiv.prod_symm +/- def linear_equiv.refl +/- theorem linear_equiv.refl_apply +/- theorem linear_equiv.skew_prod_apply +/- theorem linear_equiv.skew_prod_symm_apply +/- def linear_equiv.symm +/- theorem linear_equiv.symm_apply_apply +/- theorem linear_equiv.symm_symm +/- theorem linear_equiv.symm_symm_apply +/- def linear_equiv.to_add_equiv +/- def linear_equiv.trans +/- theorem linear_equiv.trans_apply 2020-04-19 01:55:09 0ceac44 feat(data/nat/prime) factors of a prime number is the list [p] (#2452) The factors of a prime number are [p]. ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.factors_prime 2020-04-18 23:47:08 99245b3 chore(*): switch to lean 3.9.0 (#2449) It's been too long since the last Lean release. ESTIMATED CHANGES Modified leanpkg.toml Modified src/data/array/lemmas.lean - theorem array.read_foreach_aux +/- theorem array.read_map Modified src/meta/expr.lean 2020-04-18 23:47:06 d76a882 feat(category_theory/limits/over): over category has connected limits (#2438) Show that the forgetful functor from the over category creates connected limits. The key consequence of this is that the over category has equalizers, which we will use to show that it has all (finite) limits if the base category does. I've also moved the connected category examples into `category_theory/connected.lean`. Also I removed the proof of `instance {B : C} [has_pullbacks.{v} C] : has_pullbacks.{v} (over B)` which I wrote and semorrison massively improved, as the new instances generalise it. I also added a `reassoc` for `is_limit.fac`, which simplified one of the proofs I had. ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/comma.lean Modified src/category_theory/connected.lean Modified src/category_theory/limits/connected.lean Modified src/category_theory/limits/creates.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/over.lean + def category_theory.over.creates_connected.nat_trans_in_over + def category_theory.over.creates_connected.raise_cone + def category_theory.over.creates_connected.raised_cone_is_limit + theorem category_theory.over.creates_connected.raised_cone_lowers_to_original 2020-04-18 21:59:03 8ec447d fix(*): remove `@[nolint simp_nf]` (#2450) This removes a couple more nolints: - `coe_units_equiv_ne_zero` doesn't cause any problems anymore - `coe_mk` is redundant - `mk_eq_div` was not in simp-normal form (previously the linter timed out instead of reporting it as an error) - `factor_set.coe_add` is redundant ESTIMATED CHANGES Modified src/data/equiv/ring.lean Modified src/data/real/nnreal.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/unique_factorization_domain.lean 2020-04-18 17:48:38 5107c2b fix(docs/extra/calc.md): remove extra space (#2448) This was breaking the rendered doc at https://leanprover-community.github.io/mathlib_docs/calc.html#using-more-than-one-operator ESTIMATED CHANGES Modified docs/extras/calc.md 2020-04-18 17:48:36 16552e6 fix(group_theory/submonoid): looping simp lemma (#2447) Removes a `@[nolint simp_nf]`. I have no idea why I didn't notice this earlier, but `coe_coe` loops due to `coe_sort_coe_base` since `submonoid` doesn't have it's own `has_coe_to_sort` instance. ESTIMATED CHANGES Modified src/group_theory/submonoid.lean 2020-04-18 15:15:21 4e87223 feat(tactic/transport): transport structures across equivalences (#2251) ~~Blocked by #2246.~~ ~~Blocked on #2319 and #2334, which both fix lower tactic layers used by `transport`.~~ From the doc-string: --- Given a goal `⊢ S β` for some parametrized structure type `S`, `transport` will look for a hypothesis `s : S α` and an equivalence `e : α ≃ β`, and attempt to close the goal by transporting `s` across the equivalence `e`. ```lean example {α : Type} [ring α] {β : Type} (e : α ≃ β) : ring β := by transport. ``` You can specify the object to transport using `transport s`, and the equivalence to transport across using `transport s using e`. --- You can just as easily transport a [`semilattice_sup_top`](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/lattice.20with.20antiautomorphism) or a `lie_ring`. In the `test/transport.lean` file we transport `semiring` from `nat` to `mynat`, and verify that it's possible to do simple things with the transported structure. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.apply_eq_iff_eq_symm_apply Modified src/tactic/core.lean Added src/tactic/transport.lean Modified test/equiv_rw.lean +/- def monoid.map Added test/transport/basic.lean + def lie_ring.map + inductive mynat + theorem mynat_add_def + def mynat_equiv + theorem mynat_equiv_apply_succ + theorem mynat_equiv_apply_zero + theorem mynat_equiv_symm_apply_succ + theorem mynat_equiv_symm_apply_zero + theorem mynat_mul_def + theorem mynat_one_def + theorem mynat_zero_def + def semiring.map + def sup_top.map 2020-04-18 12:23:55 ffb99a3 chore(algebra/group/type_tags): add `additive.to_mul` etc (#2363) Don't make `additive` and `multiplicative` irreducible (yet?) because it breaks compilation here and there. Also prove that homomorphisms from `ℕ`, `ℤ` and their `multiplicative` versions are defined by the image of `1`. ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean + def additive.of_mul + def additive.to_mul + def multiplicative.of_add + def multiplicative.to_add + theorem of_add_add + theorem of_add_inj + theorem of_add_neg + theorem of_add_to_add + theorem of_add_zero + theorem of_mul_inj + theorem of_mul_inv + theorem of_mul_mul + theorem of_mul_one + theorem of_mul_to_mul + theorem to_add_inj + theorem to_add_inv + theorem to_add_mul + theorem to_add_of_add + theorem to_add_one + theorem to_mul_add + theorem to_mul_inj + theorem to_mul_neg + theorem to_mul_of_mul + theorem to_mul_zero Modified src/algebra/group_power.lean + def gmultiples_hom + theorem gpow_of_add + def gpowers_hom + def multiples_hom + theorem pow_of_add + def powers_hom Modified src/group_theory/submonoid.lean + theorem add_submonoid.closure_singleton_eq +/- theorem add_submonoid.mem_closure_singleton + theorem submonoid.closure_singleton_eq 2020-04-18 10:03:42 8b21231 chore(data/mv_polynomial): adding a comment about a T50000 regression (#2442) ESTIMATED CHANGES Modified src/data/mv_polynomial.lean 2020-04-18 07:33:17 a530a81 refactor(data/nat/fib): simplify proof of fib_succ_succ (#2443) By tweaking some of the lemmas, I managed to shorten `fib_succ_succ` from 7 complicated lines to a single call to `simp`. An alternative expression would be: ```lean unfold fib, repeat { rw fib_aux_stream_succ }, unfold fib_aux_step, ``` I can change to that if you think the `simp` is too pithy. ESTIMATED CHANGES Modified src/data/nat/fib.lean 2020-04-18 04:12:58 1ef989f docs(install/*): put extra emphasis (#2439) Put extra emphasis on creating and working with projects If people like this change I'll also make it on the other pages. ESTIMATED CHANGES Modified docs/install/debian.md Modified docs/install/debian_details.md Modified docs/install/linux.md Modified docs/install/macos.md Modified docs/install/windows.md 2020-04-18 00:48:02 6b09575 feat(tactic/lint): lint for missing has_coe_to_fun instances (#2437) Enforces the library note "function coercion": https://github.com/leanprover-community/mathlib/blob/715be9f7466f30f1d4cbff4e870530af43767fba/src/logic/basic.lean#L69-L94 See #2434 for a recent PR where this issue popped up. ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean + theorem algebraic_geometry.PresheafedSpace.id_coe_fn Modified src/tactic/abel.lean Modified src/tactic/lint/default.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/ring.lean Added test/lint_coe_to_fun.lean + structure equiv + structure sparkling_equiv 2020-04-17 21:00:09 24d464c fix(github/workflows): ignore new bors branch (#2441) Two hours ago, bors renamed the temporary branches. https://github.com/bors-ng/bors-ng/pull/933 :roll_eyes: ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-04-17 19:48:56 da29275 chore(scripts): update nolints.txt (#2440) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-17 16:30:37 64f6903 chore(*): migrate `nat/int/rat.eq_cast` to bundled homs (#2427) Now it is `ring_hom.eq_*_cast`, `ring_hom.map_*_cast`, `add_monoid_hom.eq_int/nat_cast`. Also turn `complex.of_real` into a `ring_hom`. ESTIMATED CHANGES Modified src/algebra/group_power.lean Modified src/data/complex/basic.lean +/- def complex.of_real Modified src/data/int/basic.lean + theorem add_monoid_hom.eq_int_cast +/- theorem int.cast_id - theorem int.eq_cast + def int.of_nat_hom Modified src/data/nat/cast.lean + theorem add_monoid_hom.eq_nat_cast +/- theorem nat.cast_id - theorem nat.eq_cast' - theorem nat.eq_cast + theorem ring_hom.eq_nat_cast +/- theorem ring_hom.map_nat_cast Modified src/data/polynomial.lean Modified src/data/rat/cast.lean - theorem rat.eq_cast - theorem rat.eq_cast_of_ne_zero + theorem ring_hom.eq_rat_cast + theorem ring_hom.map_rat_cast Modified src/data/real/basic.lean +/- def real.of_rat 2020-04-17 13:44:40 855e70b feat(data/nat): Results about nat.choose (#2421) A convenience lemma for symmetry of choose and inequalities about choose. More results from my combinatorics project. ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.choose_symm_add + theorem nat.choose_symm_of_eq_add Modified src/data/nat/choose.lean + theorem choose_le_middle + theorem choose_le_succ_of_lt_half_left 2020-04-17 09:39:01 0bc15f8 feat(analysis/analytic/composition): the composition of analytic functions is analytic (#2399) The composition of analytic functions is analytic. The argument is the following. Assume `g z = ∑ qₙ (z, ..., z)` and `f y = ∑ pₖ (y, ..., y)`. Then ``` g (f y) = ∑ qₙ (∑ pₖ (y, ..., y), ..., ∑ pₖ (y, ..., y)) = ∑ qₙ (p_{i₁} (y, ..., y), ..., p_{iₙ} (y, ..., y)). ``` For each `n` and `i₁, ..., iₙ`, define a `i₁ + ... + iₙ` multilinear function mapping `(y₀, ..., y_{i₁ + ... + iₙ - 1})` to `qₙ (p_{i₁} (y₀, ..., y_{i₁-1}), p_{i₂} (y_{i₁}, ..., y_{i₁ + i₂ - 1}), ..., p_{iₙ} (....)))`. Then `g ∘ f` is obtained by summing all these multilinear functions. The main difficulty is to make sense of this (especially the ellipsis) in a way that Lean understands. For this, this PR uses a structure containing a decomposition of `n` as a sum `i_1 + ... i_k` (called `composition`), and a whole interface around it developed in #2398. Once it is available, the main proof is not too hard. This supersedes #2328, after a new start implementing compositions using sequences. ESTIMATED CHANGES Added src/analysis/analytic/composition.lean + theorem analytic_at.comp + def formal_multilinear_series.apply_composition + theorem formal_multilinear_series.apply_composition_update + def formal_multilinear_series.comp_along_composition + def formal_multilinear_series.comp_along_composition_multilinear + theorem formal_multilinear_series.comp_along_composition_multilinear_bound + theorem formal_multilinear_series.comp_along_composition_nnnorm + theorem formal_multilinear_series.comp_along_composition_norm + def formal_multilinear_series.comp_change_of_variables + theorem formal_multilinear_series.comp_change_of_variables_blocks_fun + theorem formal_multilinear_series.comp_change_of_variables_length + theorem formal_multilinear_series.comp_partial_sum + def formal_multilinear_series.comp_partial_sum_source + def formal_multilinear_series.comp_partial_sum_target + def formal_multilinear_series.comp_partial_sum_target_set + theorem formal_multilinear_series.comp_partial_sum_target_subset_image_comp_partial_sum_source + theorem formal_multilinear_series.comp_partial_sum_target_tendsto_at_top + theorem formal_multilinear_series.comp_summable_nnreal + theorem formal_multilinear_series.le_comp_radius_of_summable + theorem formal_multilinear_series.mem_comp_partial_sum_source_iff + theorem formal_multilinear_series.mem_comp_partial_sum_target_iff + theorem has_fpower_series_at.comp Modified src/analysis/normed_space/basic.lean + theorem nnnorm_sum_le Modified src/data/real/ennreal.lean + theorem ennreal.pow_le_pow Modified src/data/set/function.lean + theorem function.update_comp_eq_of_injective + theorem function.update_comp_eq_of_not_mem_range Modified src/order/filter/basic.lean + theorem filter.monotone.tendsto_at_top_finset 2020-04-17 06:57:05 715be9f chore(scripts): update nolints.txt (#2436) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-17 05:53:51 0567b7f feat(category_theory/limits): strong epimorphisms and strong epi-mono factorizations (#2433) This PR contains the changes I mentioned in #2374. It contains: * the definition of a lift of a commutative square * the definition of a strong epimorphism * a proof that every regular epimorphism is strong * the definition of a strong epi-mono factorization * the class `has_strong_epi_images` * the construction `has_strong_epi_images` -> `has_image_maps` * a small number of changes which should have been part of #2423 ESTIMATED CHANGES Modified src/category_theory/comma.lean + theorem category_theory.arrow.lift.fac_left + theorem category_theory.arrow.lift.fac_right + def category_theory.arrow.lift + theorem category_theory.arrow.lift_mk'_left + theorem category_theory.arrow.lift_mk'_right + theorem category_theory.arrow.w Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.image.fac_lift + theorem category_theory.limits.is_image.fac_lift + def category_theory.limits.strong_epi_mono_factorisation.to_mono_is_image + structure category_theory.limits.strong_epi_mono_factorisation Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel_cofork.is_colimit.desc' - def category_theory.limits.cokernel_cofork.is_limit.desc' Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/shapes/regular_mono.lean + def category_theory.normal_epi.desc' + def category_theory.normal_mono.lift' + def category_theory.regular_epi.desc' + def category_theory.regular_mono.lift' Added src/category_theory/limits/shapes/strong_epi.lean + def category_theory.mono_strong_epi_is_iso + def category_theory.strong_epi_comp + def category_theory.strong_epi_of_strong_epi 2020-04-17 04:14:01 f347147 feat(category_theory): creation of limits and reflection of isomorphisms (#2426) Define creation of limits and reflection of isomorphisms. Part 2 of a sequence of PRs aiming to resolve my TODO [here](https://github.com/leanprover-community/mathlib/blob/cf89963e14cf535783cefba471247ae4470fa8c3/src/category_theory/limits/over.lean#L143) - that the forgetful functor from the over category creates connected limits. Remaining: - [x] Add an instance or def which gives that if `F` creates limits and `K ⋙ F` `has_limit` then `has_limit K` as well. - [x] Move the forget creates limits proof to limits/over, and remove the existing proof since this one is strictly stronger - make sure to keep the statement there though using the previous point. - [x] Add more docstrings Probably relevant to @semorrison and @TwoFX. ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean +/- def category_theory.adjunction.functoriality_counit' +/- def category_theory.adjunction.functoriality_counit +/- def category_theory.adjunction.functoriality_unit' +/- def category_theory.adjunction.functoriality_unit Modified src/category_theory/limits/cones.lean +/- def category_theory.functor.map_cocone +/- def category_theory.functor.map_cocone_morphism +/- def category_theory.functor.map_cone - theorem category_theory.functor.map_cone_inv_X + def category_theory.functor.map_cone_map_cone_inv +/- def category_theory.functor.map_cone_morphism Added src/category_theory/limits/creates.lean + def category_theory.creates_colimit_of_reflects_iso + def category_theory.creates_limit_of_reflects_iso + def category_theory.has_colimit_of_created + def category_theory.has_limit_of_created + def category_theory.id_lifts_cocone + def category_theory.id_lifts_cone + def category_theory.lift_colimit + def category_theory.lift_limit + structure category_theory.liftable_cocone + structure category_theory.liftable_cone + def category_theory.lifted_colimit_is_colimit + def category_theory.lifted_colimit_maps_to_original + def category_theory.lifted_limit_is_limit + def category_theory.lifted_limit_maps_to_original + structure category_theory.lifts_to_colimit + def category_theory.lifts_to_colimit_of_creates + structure category_theory.lifts_to_limit + def category_theory.lifts_to_limit_of_creates Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_limit.map_cone_equiv Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/monad/algebra.lean + def category_theory.monad.algebra_iso_of_iso Modified src/category_theory/monad/limits.lean - def category_theory.monad.forget_creates_colimits.c +/- def category_theory.monad.forget_creates_colimits.lambda + def category_theory.monad.forget_creates_colimits.lifted_cocone + def category_theory.monad.forget_creates_colimits.lifted_cocone_is_colimit + def category_theory.monad.forget_creates_colimits.new_cocone - def category_theory.monad.forget_creates_limits.c +/- def category_theory.monad.forget_creates_limits.cone_point + def category_theory.monad.forget_creates_limits.lifted_cone + def category_theory.monad.forget_creates_limits.lifted_cone_is_limit + def category_theory.monad.forget_creates_limits.new_cone - def category_theory.monad.forget_creates_limits + def category_theory.monad.has_limit_of_comp_forget_has_limit Added src/category_theory/reflect_isomorphisms.lean + def category_theory.cocone_iso_of_hom_iso + def category_theory.cone_iso_of_hom_iso + def category_theory.is_iso_of_reflects_iso 2020-04-17 02:42:19 0d3e546 chore(scripts): update nolints.txt (#2435) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-17 01:11:58 d2db3e8 chore(algebra/lie_algebra): add function coercion for morphisms (#2434) In fact three different changes are being made here: 1. Adding direct function coercion for `lie_algebra.morphism`, allowing us to tidy up `map_lie` and increase simp scope 2. Providing a zero element for `lie_subalgebra`, thus allowing removal of a `has_inhabited_instance` exception in nolints.txt 3. Providing a zero element for `lie_submodule`, thus allowing removal of a `has_inhabited_instance` exception in nolints.txt ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean - theorem lie_algebra.map_lie' +/- theorem lie_algebra.map_lie 2020-04-16 14:03:47 c3d943e feat(computability): strong reducibility and degrees (#1203) ESTIMATED CHANGES Modified docs/references.bib Modified src/computability/halting.lean Modified src/computability/partrec.lean Modified src/computability/partrec_code.lean + theorem nat.partrec.code.injective_const + theorem nat.partrec.code.injective_curry + theorem nat.partrec.code.smn Modified src/computability/primrec.lean Added src/computability/reduce.lean + theorem computable.equiv₂ + theorem computable.eqv + theorem computable_pred.computable_of_many_one_reducible + theorem computable_pred.computable_of_one_one_reducible + theorem disjoin_le + theorem disjoin_many_one_reducible + theorem equiv.computable.symm + theorem equiv.computable.trans + def equiv.computable + theorem equivalence_of_many_one_equiv + theorem equivalence_of_one_one_equiv + def many_one_degree.add + theorem many_one_degree.add_le' + theorem many_one_degree.add_le + def many_one_degree.comap + def many_one_degree.le + theorem many_one_degree.le_add_left' + theorem many_one_degree.le_add_left + theorem many_one_degree.le_add_right' + theorem many_one_degree.le_add_right + theorem many_one_degree.le_antisymm + theorem many_one_degree.le_comap_left + theorem many_one_degree.le_comap_right + theorem many_one_degree.le_refl + theorem many_one_degree.le_trans + def many_one_degree.of + theorem many_one_degree.of_le_of' + theorem many_one_degree.of_le_of + def many_one_degree + theorem many_one_equiv.congr_left + theorem many_one_equiv.congr_right + theorem many_one_equiv.le_congr_left + theorem many_one_equiv.le_congr_right + theorem many_one_equiv.of_equiv + theorem many_one_equiv.symm + theorem many_one_equiv.trans + def many_one_equiv + theorem many_one_equiv_refl + def many_one_equiv_setoid + theorem many_one_reducible.mk + theorem many_one_reducible.trans + def many_one_reducible + theorem many_one_reducible_refl + theorem one_one_equiv.congr_left + theorem one_one_equiv.congr_right + theorem one_one_equiv.le_congr_left + theorem one_one_equiv.le_congr_right + theorem one_one_equiv.of_equiv + theorem one_one_equiv.symm + theorem one_one_equiv.to_many_one + theorem one_one_equiv.trans + def one_one_equiv + theorem one_one_equiv_refl + theorem one_one_reducible.disjoin_left + theorem one_one_reducible.disjoin_right + theorem one_one_reducible.mk + theorem one_one_reducible.of_equiv + theorem one_one_reducible.of_equiv_symm + theorem one_one_reducible.to_many_one + theorem one_one_reducible.trans + def one_one_reducible + theorem one_one_reducible_refl + theorem reflexive_many_one_reducible + theorem reflexive_one_one_reducible + theorem transitive_many_one_reducible + theorem transitive_one_one_reducible 2020-04-16 12:26:28 a113d6e chore(scripts): update nolints.txt (#2432) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-16 11:10:10 846cbab feat(analysis/calculus): let simp compute derivatives (#2422) After this PR: ```lean example (x : ℝ) : deriv (λ x, cos (sin x) * exp x) x = (cos(sin(x))-sin(sin(x))*cos(x))*exp(x) := by { simp, ring } ``` Excerpts from the docstrings: The simplifier is set up to prove automatically that some functions are differentiable, or differentiable at a point (but not differentiable on a set or within a set at a point, as checking automatically that the good domains are mapped one to the other when using composition is not something the simplifier can easily do). This means that one can write `example (x : ℝ) : differentiable ℝ (λ x, sin (exp (3 + x^2)) - 5 * cos x) := by simp`. If there are divisions, one needs to supply to the simplifier proofs that the denominators do not vanish, as in ```lean example (x : ℝ) (h : 1 + sin x ≠ 0) : differentiable_at ℝ (λ x, exp x / (1 + sin x)) x := by simp [h] ``` The simplifier is not set up to compute the Fréchet derivative of maps (as these are in general complicated multidimensional linear maps), but it will compute one-dimensional derivatives. To make sure that the simplifier can prove automatically that functions are differentiable, we tag many lemmas with the `simp` attribute, for instance those saying that the sum of differentiable functions is differentiable, as well as their product, their cartesian product, and so on. A notable exception is the chain rule: we do not mark as a simp lemma the fact that, if `f` and `g` are differentiable, then their composition also is: `simp` would always be able to match this lemma, by taking `f` or `g` to be the identity. Instead, for every reasonable function (say, `exp`), we add a lemma that if `f` is differentiable then so is `(λ x, exp (f x))`. This means adding some boilerplate lemmas, but these can also be useful in their own right. Tests for this ability of the simplifier (with more examples) are provided in `tests/differentiable.lean`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem deriv_add +/- theorem deriv_div + theorem deriv_id'' + theorem deriv_inv' +/- theorem deriv_mul + theorem deriv_pow'' +/- theorem deriv_sub + theorem deriv_within_inv' + theorem deriv_within_pow' +/- theorem differentiable.div + theorem differentiable.inv + theorem differentiable.pow +/- theorem differentiable_at.div + theorem differentiable_at.inv + theorem differentiable_at.pow + theorem differentiable_on.inv + theorem differentiable_on.pow + theorem differentiable_within_at.inv + theorem differentiable_within_at.pow + theorem has_deriv_at.inv + theorem has_deriv_at.pow + theorem has_deriv_at_id' + theorem has_deriv_within_at.inv + theorem has_deriv_within_at.pow Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable.add +/- theorem differentiable.fst +/- theorem differentiable.mul +/- theorem differentiable.neg +/- theorem differentiable.smul +/- theorem differentiable.snd +/- theorem differentiable.sub +/- theorem differentiable_at.add +/- theorem differentiable_at.fst +/- theorem differentiable_at.mul +/- theorem differentiable_at.neg +/- theorem differentiable_at.prod_map +/- theorem differentiable_at.smul +/- theorem differentiable_at.snd +/- theorem differentiable_at.sub +/- theorem differentiable_at_const + theorem differentiable_at_id' +/- theorem differentiable_at_id +/- theorem differentiable_const + theorem differentiable_id' +/- theorem differentiable_id Modified src/analysis/complex/exponential.lean + theorem complex.differentiable_at_cos + theorem complex.differentiable_at_cosh + theorem complex.differentiable_at_exp + theorem complex.differentiable_at_sin + theorem complex.differentiable_at_sinh + theorem deriv_ccos + theorem deriv_ccosh + theorem deriv_cexp + theorem deriv_cos + theorem deriv_cosh + theorem deriv_csin + theorem deriv_csinh + theorem deriv_exp + theorem deriv_sin + theorem deriv_sinh + theorem deriv_within_ccos + theorem deriv_within_ccosh + theorem deriv_within_cexp + theorem deriv_within_cos + theorem deriv_within_cosh + theorem deriv_within_csin + theorem deriv_within_csinh + theorem deriv_within_exp + theorem deriv_within_sin + theorem deriv_within_sinh + theorem differentiable.ccos + theorem differentiable.ccosh + theorem differentiable.cexp + theorem differentiable.cos + theorem differentiable.cosh + theorem differentiable.csin + theorem differentiable.csinh + theorem differentiable.exp + theorem differentiable.sin + theorem differentiable.sinh + theorem differentiable_at.ccos + theorem differentiable_at.ccosh + theorem differentiable_at.cexp + theorem differentiable_at.cos + theorem differentiable_at.cosh + theorem differentiable_at.csin + theorem differentiable_at.csinh + theorem differentiable_at.exp + theorem differentiable_at.sin + theorem differentiable_at.sinh + theorem differentiable_on.ccos + theorem differentiable_on.ccosh + theorem differentiable_on.cexp + theorem differentiable_on.cos + theorem differentiable_on.cosh + theorem differentiable_on.csin + theorem differentiable_on.csinh + theorem differentiable_on.exp + theorem differentiable_on.sin + theorem differentiable_on.sinh + theorem differentiable_within_at.ccos + theorem differentiable_within_at.ccosh + theorem differentiable_within_at.cexp + theorem differentiable_within_at.cos + theorem differentiable_within_at.cosh + theorem differentiable_within_at.csin + theorem differentiable_within_at.csinh + theorem differentiable_within_at.exp + theorem differentiable_within_at.sin + theorem differentiable_within_at.sinh + theorem has_deriv_at.ccos + theorem has_deriv_at.ccosh +/- theorem has_deriv_at.cexp + theorem has_deriv_at.cos + theorem has_deriv_at.cosh + theorem has_deriv_at.csin + theorem has_deriv_at.csinh + theorem has_deriv_at.exp + theorem has_deriv_at.sin + theorem has_deriv_at.sinh + theorem has_deriv_within_at.ccos + theorem has_deriv_within_at.ccosh +/- theorem has_deriv_within_at.cexp + theorem has_deriv_within_at.cos + theorem has_deriv_within_at.cosh + theorem has_deriv_within_at.csin + theorem has_deriv_within_at.csinh + theorem has_deriv_within_at.exp + theorem has_deriv_within_at.sin + theorem has_deriv_within_at.sinh + theorem real.differentiable_at_cos + theorem real.differentiable_at_cosh + theorem real.differentiable_at_exp + theorem real.differentiable_at_sin + theorem real.differentiable_at_sinh Modified src/analysis/convex/specific_functions.lean Added test/differentiable.lean 2020-04-16 11:10:08 ec80061 refactor(analysis/asymptotics): make is_o irreducible (#2416) `is_o` is currently not irreducible. Since it is a complicated type, Lean can have trouble checking if two types with `is_o` are defeq or not, leading to timeouts as described in https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/undergraduate.20calculus/near/193776607 This PR makes `is_o` irreducible. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.of_bound + theorem asymptotics.is_O_iff + theorem asymptotics.is_O_iff_is_O_with + theorem asymptotics.is_O_with.of_bound + theorem asymptotics.is_O_with_iff + theorem asymptotics.is_o.def + theorem asymptotics.is_o_iff + theorem asymptotics.is_o_iff_forall_is_O_with Modified src/analysis/calculus/extend_deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/bounded_linear_maps.lean 2020-04-16 08:33:27 5fd4afc refactor(tactic/norm_cast): simplified attributes and numeral support (#2407) This is @pnmadelaine's work, I'm just updating it to work with current mathlib. New and improved version of `norm_cast` as described in the paper "normalizing casts and coercions": https://arxiv.org/abs/2001.10594 The main new user-facing feature are the simplified attributes. There is now only the `@[norm_cast]` attribute which subsumes the previous `norm_cast`, `elim_cast`, `squash_cast`, and `move_cast` attributes. There is a new `set_option trace.norm_cast true` option to enable debugging output. ESTIMATED CHANGES Modified src/algebra/char_zero.lean +/- theorem nat.cast_eq_zero +/- theorem nat.cast_inj +/- theorem nat.cast_ne_zero Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/field_power.lean +/- theorem rat.cast_fpow Modified src/algebra/group_power.lean +/- theorem int.cast_pow +/- theorem int.coe_nat_pow +/- theorem nat.cast_pow Modified src/algebra/module.lean +/- theorem submodule.coe_add +/- theorem submodule.coe_mk +/- theorem submodule.coe_neg +/- theorem submodule.coe_smul +/- theorem submodule.coe_sub +/- theorem submodule.coe_zero Modified src/algebra/ring.lean + theorem coe_add_monoid_hom' +/- theorem coe_add_monoid_hom + theorem coe_monoid_hom' +/- theorem coe_monoid_hom Modified src/analysis/complex/exponential.lean +/- theorem nnreal.coe_rpow Modified src/analysis/convex/cone.lean +/- theorem convex_cone.mem_coe Modified src/analysis/normed_space/basic.lean +/- theorem int.norm_cast_rat +/- theorem int.norm_cast_real +/- theorem rat.norm_cast_real Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.restrict_scalars_coe_eq_coe' +/- theorem continuous_linear_map.restrict_scalars_coe_eq_coe +/- theorem linear_map.mk_continuous_coe +/- theorem linear_map.mk_continuous_of_exists_bound_coe Modified src/data/complex/basic.lean +/- theorem complex.abs_cast_nat +/- theorem complex.int_cast_im +/- theorem complex.int_cast_re +/- theorem complex.nat_cast_im +/- theorem complex.nat_cast_re +/- theorem complex.of_real_add +/- theorem complex.of_real_bit0 +/- theorem complex.of_real_bit1 +/- theorem complex.of_real_div +/- theorem complex.of_real_fpow +/- theorem complex.of_real_im +/- theorem complex.of_real_inj +/- theorem complex.of_real_int_cast +/- theorem complex.of_real_inv +/- theorem complex.of_real_mul +/- theorem complex.of_real_nat_cast +/- theorem complex.of_real_neg +/- theorem complex.of_real_one +/- theorem complex.of_real_pow +/- theorem complex.of_real_rat_cast +/- theorem complex.of_real_re +/- theorem complex.of_real_sub +/- theorem complex.of_real_zero +/- theorem complex.rat_cast_im +/- theorem complex.rat_cast_re Modified src/data/equiv/ring.lean +/- theorem ring_equiv.coe_add_equiv +/- theorem ring_equiv.coe_mul_equiv Modified src/data/fin.lean +/- theorem fin.coe_last +/- theorem fin.coe_mk Modified src/data/finset.lean +/- theorem finset.coe_nonempty +/- theorem finset.piecewise_coe Modified src/data/int/basic.lean +/- theorem int.bodd_coe +/- theorem int.cast_abs +/- theorem int.cast_add +/- theorem int.cast_bit0 +/- theorem int.cast_bit1 +/- theorem int.cast_coe_nat +/- theorem int.cast_id +/- theorem int.cast_inj +/- theorem int.cast_le +/- theorem int.cast_lt +/- theorem int.cast_max +/- theorem int.cast_min +/- theorem int.cast_mul +/- theorem int.cast_neg +/- theorem int.cast_neg_of_nat +/- theorem int.cast_neg_succ_of_nat +/- theorem int.cast_one +/- theorem int.cast_sub +/- theorem int.cast_sub_nat_nat +/- theorem int.cast_zero +/- theorem int.coe_nat_abs +/- theorem int.coe_nat_bit0 +/- theorem int.coe_nat_bit1 +/- theorem int.coe_nat_div +/- theorem int.coe_nat_dvd +/- theorem int.coe_nat_inj' +/- theorem int.coe_nat_le +/- theorem int.coe_nat_lt Modified src/data/nat/cast.lean +/- theorem nat.abs_cast +/- theorem nat.cast_add +/- theorem nat.cast_bit0 +/- theorem nat.cast_bit1 +/- theorem nat.cast_id +/- theorem nat.cast_ite +/- theorem nat.cast_le +/- theorem nat.cast_lt +/- theorem nat.cast_max +/- theorem nat.cast_min +/- theorem nat.cast_mul +/- theorem nat.cast_one +/- theorem nat.cast_pred +/- theorem nat.cast_sub +/- theorem nat.cast_succ +/- theorem nat.cast_zero Modified src/data/nat/enat.lean +/- theorem enat.coe_add +/- theorem enat.coe_get +/- theorem enat.coe_le_coe +/- theorem enat.coe_lt_coe +/- theorem enat.coe_one +/- theorem enat.coe_zero +/- theorem enat.get_coe Modified src/data/nat/multiplicity.lean Modified src/data/num/basic.lean - def int.of_snum - def nzsnum.bit0 - def nzsnum.bit1 - def nzsnum.drec' - def nzsnum.head - def nzsnum.not - def nzsnum.sign - def nzsnum.tail - inductive nzsnum - def snum.bit0 - def snum.bit1 - def snum.bit - theorem snum.bit_one - theorem snum.bit_zero - def snum.bits - def snum.cadd - def snum.czadd - def snum.drec' - def snum.head - def snum.not - def snum.pred - def snum.rec' - def snum.sign - def snum.succ - def snum.tail - def snum.test_bit - inductive snum Modified src/data/num/bitwise.lean + def nzsnum.bit0 + def nzsnum.bit1 + def nzsnum.drec' + def nzsnum.head + def nzsnum.not + def nzsnum.sign + def nzsnum.tail + inductive nzsnum + def snum.bit0 + def snum.bit1 + def snum.bit + theorem snum.bit_one + theorem snum.bit_zero + def snum.bits + def snum.cadd + def snum.czadd + def snum.drec' + def snum.head + def snum.not + def snum.pred + def snum.rec' + def snum.sign + def snum.succ + def snum.tail + def snum.test_bit + inductive snum Modified src/data/num/lemmas.lean + def int.of_snum +/- theorem num.add_of_nat +/- theorem num.cast_add +/- theorem num.cast_bit0 +/- theorem num.cast_bit1 +/- theorem num.cast_mul +/- theorem num.cast_one +/- theorem num.cast_to_int +/- theorem num.cast_to_nat +/- theorem num.cast_to_znum +/- theorem num.cast_zero +/- theorem num.div_to_nat +/- theorem num.land_to_nat +/- theorem num.ldiff_to_nat +/- theorem num.lor_to_nat +/- theorem num.lxor_to_nat +/- theorem num.mod_to_nat +/- theorem num.of_nat_inj +/- theorem num.of_to_nat +/- theorem num.shiftl_to_nat +/- theorem num.shiftr_to_nat +/- theorem num.sub_to_nat +/- theorem num.to_nat_inj +/- theorem num.to_nat_to_int +/- theorem pos_num.cast_bit0 +/- theorem pos_num.cast_bit1 +/- theorem pos_num.cast_one +/- theorem pos_num.cast_to_int +/- theorem pos_num.cast_to_nat +/- theorem pos_num.to_nat_inj +/- theorem pos_num.to_nat_to_int +/- theorem znum.cast_add +/- theorem znum.cast_bit0 +/- theorem znum.cast_bit1 +/- theorem znum.cast_one +/- theorem znum.cast_to_int +/- theorem znum.cast_zero +/- theorem znum.cast_zneg +/- theorem znum.div_to_int +/- theorem znum.dvd_to_int +/- theorem znum.mod_to_int +/- theorem znum.mul_to_int +/- theorem znum.neg_of_int +/- theorem znum.of_int_cast +/- theorem znum.of_nat_cast +/- theorem znum.of_to_int Modified src/data/padics/padic_integers.lean +/- theorem padic_int.cast_pow +/- theorem padic_int.coe_add +/- theorem padic_int.coe_coe +/- theorem padic_int.coe_mul +/- theorem padic_int.coe_neg +/- theorem padic_int.coe_one +/- theorem padic_int.coe_sub +/- theorem padic_int.coe_zero Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean +/- theorem padic.coe_add +/- theorem padic.coe_div +/- theorem padic.coe_inj +/- theorem padic.coe_mul +/- theorem padic.coe_neg +/- theorem padic.coe_one +/- theorem padic.coe_sub +/- theorem padic.coe_zero Modified src/data/rat/basic.lean +/- theorem rat.coe_int_denom +/- theorem rat.coe_int_num +/- theorem rat.coe_nat_denom +/- theorem rat.coe_nat_num Modified src/data/rat/cast.lean +/- theorem rat.cast_abs +/- theorem rat.cast_add +/- theorem rat.cast_add_of_ne_zero +/- theorem rat.cast_bit0 +/- theorem rat.cast_bit1 +/- theorem rat.cast_coe_int +/- theorem rat.cast_coe_nat +/- theorem rat.cast_div +/- theorem rat.cast_div_of_ne_zero +/- theorem rat.cast_id +/- theorem rat.cast_inj +/- theorem rat.cast_inv +/- theorem rat.cast_inv_of_ne_zero +/- theorem rat.cast_le +/- theorem rat.cast_lt +/- theorem rat.cast_max +/- theorem rat.cast_min +/- theorem rat.cast_mk +/- theorem rat.cast_mk_of_ne_zero +/- theorem rat.cast_mul +/- theorem rat.cast_mul_of_ne_zero +/- theorem rat.cast_neg +/- theorem rat.cast_nonneg +/- theorem rat.cast_one +/- theorem rat.cast_pow +/- theorem rat.cast_sub +/- theorem rat.cast_sub_of_ne_zero +/- theorem rat.cast_zero Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_add +/- theorem ennreal.coe_bit0 +/- theorem ennreal.coe_bit1 +/- theorem ennreal.coe_div +/- theorem ennreal.coe_eq_coe +/- theorem ennreal.coe_eq_one +/- theorem ennreal.coe_eq_zero +/- theorem ennreal.coe_finset_prod +/- theorem ennreal.coe_finset_sum +/- theorem ennreal.coe_inv +/- theorem ennreal.coe_inv_two +/- theorem ennreal.coe_le_coe +/- theorem ennreal.coe_le_one_iff +/- theorem ennreal.coe_lt_coe +/- theorem ennreal.coe_lt_one_iff +/- theorem ennreal.coe_max +/- theorem ennreal.coe_min +/- theorem ennreal.coe_mul +/- theorem ennreal.coe_nat +/- theorem ennreal.coe_nat_le_coe_nat +/- theorem ennreal.coe_nat_lt_coe_nat +/- theorem ennreal.coe_nonneg +/- theorem ennreal.coe_one +/- theorem ennreal.coe_pos +/- theorem ennreal.coe_pow +/- theorem ennreal.coe_sub +/- theorem ennreal.coe_zero +/- theorem ennreal.one_eq_coe +/- theorem ennreal.one_le_coe_iff +/- theorem ennreal.one_lt_coe_iff +/- theorem ennreal.to_nnreal_coe +/- theorem ennreal.zero_eq_coe Modified src/data/real/ereal.lean Modified src/data/real/hyperreal.lean Modified src/data/real/nnreal.lean +/- theorem nnreal.coe_list_prod +/- theorem nnreal.coe_list_sum +/- theorem nnreal.coe_max +/- theorem nnreal.coe_min +/- theorem nnreal.coe_multiset_prod +/- theorem nnreal.coe_multiset_sum +/- theorem nnreal.coe_ne_zero +/- theorem nnreal.coe_pow +/- theorem nnreal.coe_prod +/- theorem nnreal.coe_sum +/- theorem nnreal.smul_coe Modified src/group_theory/submonoid.lean Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.coe_prod Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.l1.simple_func.coe_add +/- theorem measure_theory.l1.simple_func.coe_neg +/- theorem measure_theory.l1.simple_func.coe_neg_part +/- theorem measure_theory.l1.simple_func.coe_pos_part +/- theorem measure_theory.l1.simple_func.coe_smul +/- theorem measure_theory.l1.simple_func.coe_sub +/- theorem measure_theory.l1.simple_func.coe_zero +/- theorem measure_theory.l1.simple_func.integral_eq_integral Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.l1.coe_add +/- theorem measure_theory.l1.coe_neg +/- theorem measure_theory.l1.coe_pos_part +/- theorem measure_theory.l1.coe_smul +/- theorem measure_theory.l1.coe_sub +/- theorem measure_theory.l1.coe_zero Modified src/meta/expr.lean Modified src/order/filter/filter_product.lean +/- theorem filter.filter_product.of_add +/- theorem filter.filter_product.of_bit0 +/- theorem filter.filter_product.of_bit1 +/- theorem filter.filter_product.of_div +/- theorem filter.filter_product.of_inv +/- theorem filter.filter_product.of_mul +/- theorem filter.filter_product.of_neg +/- theorem filter.filter_product.of_one +/- theorem filter.filter_product.of_sub +/- theorem filter.filter_product.of_zero Modified src/ring_theory/algebra.lean +/- theorem linear_map.coe_restrict_scalars_eq_coe Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/power_series.lean +/- theorem mv_polynomial.coe_C +/- theorem mv_polynomial.coe_X +/- theorem mv_polynomial.coe_add +/- theorem mv_polynomial.coe_monomial +/- theorem mv_polynomial.coe_mul +/- theorem mv_polynomial.coe_one +/- theorem mv_polynomial.coe_zero +/- theorem mv_polynomial.coeff_coe +/- theorem polynomial.coe_C +/- theorem polynomial.coe_X +/- theorem polynomial.coe_add +/- theorem polynomial.coe_monomial +/- theorem polynomial.coe_mul +/- theorem polynomial.coe_one +/- theorem polynomial.coe_zero +/- theorem polynomial.coeff_coe Modified src/set_theory/cardinal.lean +/- theorem cardinal.nat_cast_inj +/- theorem cardinal.nat_cast_le +/- theorem cardinal.nat_cast_lt +/- theorem cardinal.nat_cast_pow +/- theorem cardinal.nat_succ Modified src/set_theory/ordinal.lean Modified src/tactic/core.lean Modified src/tactic/norm_cast.lean - theorem ge_from_le - theorem gt_from_lt +/- theorem ite_cast - theorem ne_from_not_eq + def norm_cast.label.of_string + inductive norm_cast.label Modified src/topology/algebra/group_completion.lean +/- theorem uniform_space.completion.coe_zero Modified src/topology/algebra/module.lean +/- theorem continuous_linear_equiv.coe_coe +/- theorem continuous_linear_equiv.coe_prod +/- theorem continuous_linear_equiv.coe_refl' +/- theorem continuous_linear_equiv.coe_refl +/- theorem continuous_linear_equiv.prod_apply +/- theorem continuous_linear_map.coe_add' +/- theorem continuous_linear_map.coe_add +/- theorem continuous_linear_map.coe_apply' +/- theorem continuous_linear_map.coe_apply +/- theorem continuous_linear_map.coe_coe +/- theorem continuous_linear_map.coe_comp' +/- theorem continuous_linear_map.coe_comp +/- theorem continuous_linear_map.coe_fst' +/- theorem continuous_linear_map.coe_fst +/- theorem continuous_linear_map.coe_id' +/- theorem continuous_linear_map.coe_id +/- theorem continuous_linear_map.coe_neg' +/- theorem continuous_linear_map.coe_neg +/- theorem continuous_linear_map.coe_prod +/- theorem continuous_linear_map.coe_prod_map +/- theorem continuous_linear_map.coe_snd' +/- theorem continuous_linear_map.coe_snd +/- theorem continuous_linear_map.coe_sub' +/- theorem continuous_linear_map.coe_sub +/- theorem continuous_linear_map.coe_zero' +/- theorem continuous_linear_map.coe_zero +/- theorem continuous_linear_map.prod_apply +/- theorem continuous_linear_map.prod_map_apply Modified src/topology/algebra/uniform_ring.lean +/- theorem uniform_space.completion.coe_one Modified src/topology/instances/ennreal.lean +/- theorem ennreal.tendsto_coe Modified src/topology/instances/nnreal.lean +/- theorem nnreal.coe_tsum +/- theorem nnreal.has_sum_coe +/- theorem nnreal.summable_coe Modified src/topology/instances/real.lean +/- theorem int.dist_cast_rat +/- theorem int.dist_cast_real +/- theorem rat.dist_cast Modified src/topology/metric_space/basic.lean Modified test/norm_cast.lean + theorem ennreal.half_lt_self_bis + theorem hidden.coe_inj + theorem hidden.coe_one + theorem hidden.mul_coe + def hidden.with_zero Added test/norm_cast_cardinal.lean + theorem coe_bit0 + theorem coe_bit1 Added test/norm_cast_coe_fn.lean + theorem coe_f1 + def f1 + def f2 + structure hom + theorem hom_plus.coe_fn + structure hom_plus Added test/norm_cast_int.lean Added test/norm_cast_lemma_order.lean Added test/norm_cast_sum_lambda.lean 2020-04-16 04:20:38 7270af9 chore(scripts): update nolints.txt (#2430) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-16 01:05:50 5ac2b48 feat(category_theory): connected categories (#2413) - Define connected categories (using the convention that they must be nonempty) by asserting every functor to a discrete category is isomorphic to a constant functor. We also give some equivalent conditions which are more useful in practice: for instance that any function which is constant for objects which have a single morphism between them is constant everywhere. - Give the definition of connected category as specified on wikipedia, and show it's equivalent. (This is more intuitive but it seems harder to both prove and use in lean, it also seems nicer stated with `head'`. If reviewers believe this should be removed, I have no objection, but I include it for now since it is the more familiar definition). - Give three examples of connected categories. - Prove that `X × -` preserves connected limits. This PR is the first of three PRs aiming to resolve my TODO [here](https://github.com/leanprover-community/mathlib/blob/cf89963e14cf535783cefba471247ae4470fa8c3/src/category_theory/limits/over.lean#L143) - that the forgetful functor from the over category creates connected limits. Make sure you have: * [x] reviewed and applied the coding style: [coding](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/style.md), [naming](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/naming.md) * [x] reviewed and applied [the documentation requirements](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/doc.md) * [x] make sure definitions and lemmas are put in the right files * [x] make sure definitions and lemmas are not redundant If this PR is related to a discussion on Zulip, please include a link in the discussion. For reviewers: [code review check list](https://github.com/leanprover-community/mathlib/blob/master/docs/contribute/code-review.md) ESTIMATED CHANGES Added src/category_theory/connected.lean + theorem category_theory.any_functor_const_on_obj + def category_theory.connected.of_any_functor_const_on_obj + def category_theory.connected.of_constant_of_preserves_morphisms + def category_theory.connected.of_induct + def category_theory.connected_of_zigzag + theorem category_theory.connected_zigzag + theorem category_theory.constant_of_preserves_morphisms + theorem category_theory.equiv_relation + theorem category_theory.exists_zigzag' + theorem category_theory.induct_on_objects + theorem category_theory.nat_trans_from_connected + def category_theory.zag + def category_theory.zigzag + def category_theory.zigzag_connected Added src/category_theory/limits/connected.lean + def category_theory.prod_preserves_connected_limits.forget_cone + def category_theory.prod_preserves_connected_limits.γ₁ + def category_theory.prod_preserves_connected_limits.γ₂ + def category_theory.prod_preserves_connected_limits Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.prod_functor Modified src/data/list/chain.lean + theorem list.chain.induction + theorem list.exists_chain_of_relation_refl_trans_gen Modified src/data/list/defs.lean 2020-04-15 22:29:29 66cc298 feat(data/finset): existence of a smaller set (#2420) Show the existence of a smaller finset contained in a given finset. The next in my series of lemmas for my combinatorics project. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.exists_intermediate_set + theorem finset.exists_smaller_set 2020-04-15 18:44:26 8510f07 chore(scripts): update nolints.txt (#2425) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-15 17:53:24 1e212d7 fix(data/zmod/basic): typo (#2424) ESTIMATED CHANGES Modified src/data/zmod/basic.lean 2020-04-15 16:47:40 ce72cde feat(category_theory/limits): special shapes API cleanup (#2423) This is the 2.5th PR in a series of most likely three PRs about the cohomology functor. This PR has nothing to do with cohomology, but I'm going to need a lemma from this pull request in the final PR in the series. In this PR, I * perform various documentation and cleanup tasks * add lemmas similar to the ones seen in #2396 for equalizers, kernels and pullbacks (NB: these are not needed for biproducts since the `simp` and `ext` lemmas for products and coproducts readily fire) * generalize `prod.hom_ext` to the situation where we have a `binary_fan X Y` and an `is_limit` for that specific fan (and similar for the other shapes) * add "bundled" versions of lift and desc. Here is the most important example: ```lean def kernel.lift' {W : C} (k : W ⟶ X) (h : k ≫ f = 0) : {l : W ⟶ kernel f // l ≫ kernel.ι f = k} := ⟨kernel.lift f k h, kernel.lift_ι _ _ _⟩ ``` This definition doesn't really do anything by itself, but it makes proofs comforable and readable. For example, if you say `obtain ⟨t, ht⟩ := kernel.lift' g p hpg`, then the interesting property of `t` is right there in the tactic view, which I find helpful in keeping track of things when a proof invokes a lot of universal properties. ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.binary_cofan.inl + def category_theory.limits.binary_cofan.inr + def category_theory.limits.binary_cofan.is_colimit.desc' + theorem category_theory.limits.binary_cofan.is_colimit.hom_ext + def category_theory.limits.binary_fan.fst + theorem category_theory.limits.binary_fan.is_limit.hom_ext + def category_theory.limits.binary_fan.is_limit.lift' + def category_theory.limits.binary_fan.snd + def category_theory.limits.coprod.desc' +/- theorem category_theory.limits.coprod.hom_ext +/- theorem category_theory.limits.coprod.inl_desc + theorem category_theory.limits.coprod.inl_map +/- theorem category_theory.limits.coprod.inr_desc + theorem category_theory.limits.coprod.inr_map +/- theorem category_theory.limits.prod.hom_ext + def category_theory.limits.prod.lift' +/- theorem category_theory.limits.prod.lift_fst +/- theorem category_theory.limits.prod.lift_snd + theorem category_theory.limits.prod.map_fst + theorem category_theory.limits.prod.map_snd Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/limits/shapes/equalizers.lean - theorem category_theory.limits.cocone_parallel_pair_ext - theorem category_theory.limits.cocone_parallel_pair_left - theorem category_theory.limits.cocone_parallel_pair_right + def category_theory.limits.coequalizer.desc' + theorem category_theory.limits.coequalizer.π_desc + theorem category_theory.limits.cofork.coequalizer_ext + def category_theory.limits.cofork.is_colimit.desc' + theorem category_theory.limits.cofork.is_colimit.hom_ext + theorem category_theory.limits.cofork.left_app_one + theorem category_theory.limits.cofork.right_app_one +/- def category_theory.limits.cofork.π - theorem category_theory.limits.cone_parallel_pair_ext - theorem category_theory.limits.cone_parallel_pair_left - theorem category_theory.limits.cone_parallel_pair_right +/- theorem category_theory.limits.epi_of_is_colimit_parallel_pair + def category_theory.limits.equalizer.lift' + theorem category_theory.limits.equalizer.lift_ι + theorem category_theory.limits.fork.app_zero_left + theorem category_theory.limits.fork.app_zero_right + theorem category_theory.limits.fork.equalizer_ext + theorem category_theory.limits.fork.is_limit.hom_ext + def category_theory.limits.fork.is_limit.lift' +/- def category_theory.limits.fork.ι +/- theorem category_theory.limits.mono_of_is_limit_parallel_pair +/- inductive category_theory.limits.walking_parallel_pair +/- inductive category_theory.limits.walking_parallel_pair_hom Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel.desc' + theorem category_theory.limits.cokernel.π_desc + def category_theory.limits.cokernel_cofork.is_limit.desc' + def category_theory.limits.kernel.lift' + theorem category_theory.limits.kernel.lift_ι + def category_theory.limits.kernel_fork.is_limit.lift' Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback.desc' +/- def category_theory.limits.pullback.fst + def category_theory.limits.pullback.lift' + theorem category_theory.limits.pullback.lift_fst + theorem category_theory.limits.pullback.lift_snd +/- def category_theory.limits.pullback.snd + theorem category_theory.limits.pullback_cone.is_limit.hom_ext + def category_theory.limits.pullback_cone.is_limit.lift' +/- def category_theory.limits.pushout.inl + theorem category_theory.limits.pushout.inl_desc +/- def category_theory.limits.pushout.inr + theorem category_theory.limits.pushout.inr_desc + def category_theory.limits.pushout_cocone.is_colimit.desc' + theorem category_theory.limits.pushout_cocone.is_colimit.hom_ext +/- inductive category_theory.limits.walking_cospan.hom +/- inductive category_theory.limits.walking_cospan +/- inductive category_theory.limits.walking_span.hom +/- inductive category_theory.limits.walking_span 2020-04-15 13:54:37 9b797ee feat(library_search): (efficiently) try calling symmetry before searching the library (#2415) This fixes a gap in `library_search` we've known about for a long time: it misses lemmas stated "the other way round" than what you were looking for. This PR fixes that. I cache the `tactic_state` after calling `symmetry`, so it is only called once, regardless of how much of the library we're searching. When `library_search` was already succeeding, it should still succeed, with the same run time. When it was failing, it will now either succeed (because it found a lemma after calling `symmetry`), or fail (in the same time, if `symmetry` fails, or approximately twice the time, if `symmetry` succeeds). I think this is a reasonable time trade-off for better search results. ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean 2020-04-15 07:41:54 8e8037f chore(category_theory/limits): remove dependency on concrete_categories (#2411) Just move some content around, so that `category_theory/limits/cones.lean` doesn't need to depend on the development of `concrete_category`. ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Mon/colimits.lean Modified src/category_theory/differential_object.lean Modified src/category_theory/graded_object.lean Added src/category_theory/limits/concrete_category.lean + theorem category_theory.limits.cocone.naturality_concrete + theorem category_theory.limits.cone.naturality_concrete Modified src/category_theory/limits/cones.lean - theorem category_theory.limits.cocone.naturality_concrete - theorem category_theory.limits.cone.naturality_concrete 2020-04-14 12:45:29 fd0dc27 chore(scripts): update nolints.txt (#2418) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-14 11:02:03 96a07a7 refactor(analysis/calculus/deriv): split comp and scomp (#2410) The derivative of the composition of a function and a scalar function was written using `smul`, regardless of the fact that the first function was vector-valued (in which case `smul` is not avoidable) or scalar-valued (in which case it can be replaced by `mul`). Instead, this PR introduces two sets of lemmas (named `scomp` for the first type and `comp` for the second type) to get the usual multiplication in the formula for the derivative of the composition of two scalar functions. ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/calculus/deriv.lean + theorem deriv.scomp + theorem deriv_within.scomp + theorem has_deriv_at.scomp + theorem has_deriv_at.scomp_has_deriv_within_at + theorem has_deriv_at_filter.scomp + theorem has_deriv_within_at.scomp Modified src/analysis/complex/exponential.lean 2020-04-14 11:02:02 15fcb8a feat(algebra/lie_algebra): define equivalences, direct sums of Lie algebras (#2404) This pull request does two things: 1. Defines equivalences of Lie algebras (and proves that these do indeed form an equivalence relation) 2. Defines direct sums of Lie algebras The intention is to knock another chip off https://github.com/leanprover-community/mathlib/issues/1093 ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean + theorem lie_algebra.direct_sum.bracket_apply + def lie_algebra.equiv.refl + def lie_algebra.equiv.symm + def lie_algebra.equiv.trans + structure lie_algebra.equiv +/- theorem lie_algebra.map_lie' +/- theorem lie_algebra.map_lie + def lie_algebra.morphism.comp + theorem lie_algebra.morphism.comp_apply + def lie_algebra.morphism.inverse +/- structure lie_algebra.morphism 2020-04-14 08:19:33 ba154bc fix(library_search): find id (#2414) Previously `library_search` could not find theorems that did not have a head symbol (e.g. were function types with source and target both "variables all the way down"). Now it can, so it solves: ```lean example (α : Prop) : α → α := by library_search -- says: `exact id` example (p : Prop) [decidable p] : (¬¬p) → p := by library_search -- says: `exact not_not.mp` example (a b : Prop) (h : a ∧ b) : a := by library_search -- says: `exact h.left` example (P Q : Prop) [decidable P] [decidable Q]: (¬ Q → ¬ P) → (P → Q) := by library_search -- says: `exact not_imp_not.mp` ``` ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/library_search/basic.lean 2020-04-14 07:18:15 af27ee3 chore(analysis): two more -T50000 challenges (#2393) Refactor two proofs to bring them under `-T50000`, in the hope that we can later add this requirement to CI, per #2276. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + def formal_multilinear_series.change_origin_summable_aux_j + theorem formal_multilinear_series.change_origin_summable_aux_j_inj Modified src/analysis/complex/basic.lean + theorem has_deriv_at_real_of_complex_aux 2020-04-13 17:33:51 8356b79 feat(logic/basic): a few simp lemmas about `and` and `or` (#2408) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem and_self_left + theorem and_self_right + theorem or_self_left + theorem or_self_right 2020-04-13 17:33:49 fe878ea feat(algebra/big-operators): some big operator lemmas (#2152) Lemmas I found useful in my [combinatorics](https://b-mehta.github.io/combinatorics/) project Make sure you have: * [x] reviewed and applied the coding style: [coding](https://github.com/leanprover/mathlib/blob/master/docs/contribute/style.md), [naming](https://github.com/leanprover/mathlib/blob/master/docs/contribute/naming.md) * [x] reviewed and applied [the documentation requirements](https://github.com/leanprover/mathlib/blob/master/docs/contribute/doc.md) * [x] make sure definitions and lemmas are put in the right files * [x] make sure definitions and lemmas are not redundant If this PR is related to a discussion on Zulip, please include a link in the discussion. For reviewers: [code review check list](https://github.com/leanprover/mathlib/blob/master/docs/contribute/code-review.md) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_flip + theorem finset.sum_const_nat + theorem finset.sum_div + theorem finset.sum_flip + theorem finset.sum_lt_sum_of_nonempty 2020-04-13 17:33:47 67e363f feat(data/finset): finset lemmas from combinatorics (#2149) The beginnings of moving results from my combinatorics project Make sure you have: * [x] reviewed and applied the coding style: [coding](https://github.com/leanprover/mathlib/blob/master/docs/contribute/style.md), [naming](https://github.com/leanprover/mathlib/blob/master/docs/contribute/naming.md) * [x] reviewed and applied [the documentation requirements](https://github.com/leanprover/mathlib/blob/master/docs/contribute/doc.md) * [x] make sure definitions and lemmas are put in the right files * [x] make sure definitions and lemmas are not redundant For reviewers: [code review check list](https://github.com/leanprover/mathlib/blob/master/docs/contribute/code-review.md) ESTIMATED CHANGES Modified archive/cubing_a_cube.lean Modified src/data/finset.lean + theorem finset.bind_subset_bind_of_subset_left + theorem finset.disjoint_sdiff_inter + theorem finset.disjoint_self_iff_empty + theorem finset.exists_max_image - theorem finset.exists_min + theorem finset.exists_min_image + theorem finset.inter_eq_inter_of_sdiff_eq_sdiff + theorem finset.inter_union_self + theorem finset.min'_lt_max'_of_card + theorem finset.not_mem_sdiff_of_mem_right + theorem finset.sdiff_eq_self_iff_disjoint + theorem finset.sdiff_eq_self_of_disjoint + theorem finset.sdiff_idem + theorem finset.sdiff_sdiff_self_left + theorem finset.sdiff_singleton_eq_erase + theorem finset.sdiff_union_distrib + theorem finset.sdiff_union_inter + theorem finset.union_eq_empty_iff + theorem finset.union_sdiff_distrib + theorem finset.union_sdiff_self Modified src/data/set/finite.lean + theorem set.exists_max_image - theorem set.exists_min + theorem set.exists_min_image 2020-04-13 14:53:40 f3ac7b7 feat(combinatorics/composition): introduce compositions of an integer (#2398) A composition of an integer `n` is a decomposition of `{0, ..., n-1}` into blocks of consecutive integers. Equivalently, it is a decomposition `n = i₀ + ... + i_{k-1}` into a sum of positive integers. We define compositions in this PR, and introduce a whole interface around it. The goal is to use this as a tool in the proof that the composition of analytic functions is analytic ESTIMATED CHANGES Modified src/algebra/group/basic.lean Added src/combinatorics/composition.lean + def composition.blocks + def composition.blocks_fun + theorem composition.blocks_length + theorem composition.blocks_pnat_length + theorem composition.blocks_pos' + theorem composition.blocks_pos + theorem composition.blocks_sum + def composition.boundaries + def composition.boundary + theorem composition.boundary_last + theorem composition.boundary_zero + theorem composition.card_boundaries_eq_succ_length + theorem composition.disjoint_range + def composition.embedding + theorem composition.embedding_comp_inv + theorem composition.embedding_inj + def composition.index + theorem composition.index_exists + def composition.inv_embedding + def composition.length + theorem composition.length_le + theorem composition.length_pos_of_pos + theorem composition.lt_size_up_to_index_succ + theorem composition.mem_range_embedding + theorem composition.mem_range_embedding_iff' + theorem composition.mem_range_embedding_iff + theorem composition.mono_of_fin_boundaries + theorem composition.one_le_blocks' + theorem composition.one_le_blocks + theorem composition.sigma_eq_iff_blocks_eq + theorem composition.sigma_eq_iff_blocks_pnat_eq + def composition.size_up_to + theorem composition.size_up_to_index_le + theorem composition.size_up_to_le + theorem composition.size_up_to_length + theorem composition.size_up_to_of_length_le + theorem composition.size_up_to_strict_mono + theorem composition.size_up_to_succ' + theorem composition.size_up_to_succ + theorem composition.size_up_to_zero + theorem composition.strict_mono_boundary + theorem composition.sum_blocks_fun + def composition.to_composition_as_set + theorem composition.to_composition_as_set_blocks + theorem composition.to_composition_as_set_blocks_pnat + theorem composition.to_composition_as_set_boundaries + theorem composition.to_composition_as_set_length + structure composition + def composition_as_set.blocks + def composition_as_set.blocks_fun + theorem composition_as_set.blocks_fun_pos + theorem composition_as_set.blocks_length + theorem composition_as_set.blocks_partial_sum + def composition_as_set.blocks_pnat + theorem composition_as_set.blocks_pnat_length + theorem composition_as_set.blocks_sum + theorem composition_as_set.boundaries_nonempty + def composition_as_set.boundary + theorem composition_as_set.boundary_length + theorem composition_as_set.boundary_zero + theorem composition_as_set.card_boundaries_eq_succ_length + theorem composition_as_set.card_boundaries_pos + theorem composition_as_set.coe_blocks_pnat_eq_blocks + def composition_as_set.length + theorem composition_as_set.length_lt_card_boundaries + theorem composition_as_set.lt_length' + theorem composition_as_set.lt_length + theorem composition_as_set.mem_boundaries_iff_exists_blocks_sum_take_eq + def composition_as_set.to_composition + theorem composition_as_set.to_composition_blocks + theorem composition_as_set.to_composition_blocks_pnat + theorem composition_as_set.to_composition_boundaries + theorem composition_as_set.to_composition_length + structure composition_as_set + theorem composition_as_set_card + def composition_as_set_equiv + theorem composition_card + def composition_equiv Modified src/data/fin.lean + theorem fin.coe_last +/- theorem fin.coe_mk + theorem fin.strict_mono_iff_lt_succ Modified src/data/finset.lean - theorem finset.bij_on_mono_of_fin + theorem finset.mono_of_fin_bij_on + theorem finset.mono_of_fin_eq_mono_of_fin_iff + theorem finset.mono_of_fin_injective Modified src/data/fintype/basic.lean Modified src/data/fintype/card.lean + theorem list.of_fn_prod + theorem list.of_fn_prod_take + theorem list.of_fn_sum_take Modified src/data/list/basic.lean + theorem list.eq_of_sum_take_eq + theorem list.length_le_sum_of_one_le + theorem list.monotone_sum_take Modified src/data/list/of_fn.lean + theorem list.map_of_fn + theorem list.nth_le_of_fn' +/- theorem list.nth_le_of_fn Modified src/data/set/finite.lean + theorem set.finite_dependent_image 2020-04-13 13:52:21 01ac691 feat(category_theory/limits/shapes/binary_products): add some basic API for prod and coprod (#2396) Adding explicit proofs of some basic results about maps into A x B and maps from A coprod B ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.coprod.hom_ext + theorem category_theory.limits.coprod.inl_desc + theorem category_theory.limits.coprod.inr_desc + theorem category_theory.limits.prod.hom_ext + theorem category_theory.limits.prod.lift_fst + theorem category_theory.limits.prod.lift_snd 2020-04-13 12:55:12 cf89963 chore(scripts): update nolints.txt (#2405) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-13 08:52:34 17b2d06 refactor(order/filter): refactor filters infi and bases (#2384) This PR expands what Yury wrote about filter bases, and takes the opportunity to bring long overdue clarification to our treatment of infimums of filters (and also improve documentation and ordering in filter.basic). I'm sorry it mixes reorganization and some new content, but this was hard to avoid (I do keep what motivated all this for a later PR). The fundamental problem is that the infimum construction remained mysterious in filter.basic. All lemmas about it assume a directed family of filters. Yet there are many uses of infimums without this condition, notatably things like `⨅ i, principal (s i)` without condition on the indexed family of sets `s`. Related to this, `filter.generate` stayed mysterious. It was used only as a technical device to lift the complete lattice structure from `set (set a)`. However it has a perfectly valid mathematical existence, as explained by the lemma ```lean lemma sets_iff_generate {s : set (set α)} {f : filter α} : f ≤ filter.generate s ↔ s ⊆ f.sets ``` which justifies the docstring of `generate`: `generate g` is the smallest filter containing the sets `g`. As an example of the mess this created, consider: https://github.com/leanprover-community/mathlib/blob/e758263/src/topology/bases.lean#L25 ```lean def has_countable_basis (f : filter α) : Prop := ∃ s : set (set α), countable s ∧ f = ⨅ t ∈ s, principal t ``` As it stands, this definition is not clearly related to asking for the existence of a countable `s` such that `f = generate s`. Here the main mathematical content this PR adds in this direction: ```lean lemma mem_generate_iff (s : set $ set α) {U : set α} : U ∈ generate s ↔ ∃ t ⊆ s, finite t ∧ ⋂₀ t ⊆ U lemma infi_eq_generate (s : ι → filter α) : infi s = generate (⋃ i, (s i).sets) lemma mem_infi_iff {ι} {s : ι → filter α} {U : set α} : (U ∈ ⨅ i, s i) ↔ ∃ I : set ι, finite I ∧ ∃ V : {i | i ∈ I} → set α, (∀ i, V i ∈ s i) ∧ (⋂ i, V i) ⊆ U ``` All the other changes in filter.basic are either: * moving out stuff that should have been in other files (such as the lemmas that used to be at the very top of this file) * reordering lemmas so that we can have section headers and things are easier to find, * adding to the module docstring. This module docstring contains more mathematical explanation than our usual ones. I feel this is needed because many people think filters are exotic (whereas I'm more and more convinced we should teach filters). The reordering stuff makes it clear we could split this file into a linear chain of files, like we did with topology, but this is open for discussion. Next I added a lot to `filter.bases`. Here the issue is filter bases are used in two different ways. If you already have a filter, but you want to point out it suffices to use certain sets in it. Here you want to use Yury's `has_basis`. Or you can start with a (small) family of sets having nice properties, and build a filter out of it. Currently we don't have this in mathlib, but this is crucial for incoming PRs from the perfectoid project. For instance, in order to define the I-adic topology, you start with powers of I, make a filter and then make a topology. This also reduces the gap with Bourbaki which uses filter bases everywhere. I turned `has_basis` into a single field structure. It makes it very slightly less convenient to prove (you need an extra pair of angle brackets) but much easier to extend when you want to record more properties of the basis, like being countable or decreasing. Also I proved the fundamental property that `f.has_basis p s` implies that `s` (filtered by `p`) actually *is* a filter basis. This is of course easy but crucial to connect with real world maths. At the end of this file, I moved the countable filter basis stuff that is currently in topology.bases (aiming for first countable topologies) except that I used the foundational work on filter.basic to clearly prove all different formulations. In particular: ```lean lemma generate_eq_generate_inter (s : set (set α)) : generate s = generate (sInter '' { t | finite t ∧ t ⊆ s}) ``` clarifies things because the right-hand colleciton is countable if `s` is, and has the nice directedness condition. I also took the opportunity to simplify a proof in topology.sequences, showcasing the power of the newly introduced ```lean lemma has_antimono_basis.tendsto [semilattice_sup ι] [nonempty ι] {l : filter α} {p : ι → Prop} {s : ι → set α} (hl : l.has_antimono_basis p s) {φ : ι → α} (h : ∀ i : ι, φ i ∈ s i) : tendsto φ at_top l ``` (I will add more to that sequences file in the next PR). ESTIMATED CHANGES Modified docs/theories/topology.md Modified src/data/set/finite.lean + theorem set.eq_finite_Union_of_finite_subset_Union Modified src/data/set/lattice.lean + theorem set.directed_on_Union + theorem set.sInter_Union Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/set_integral.lean Modified src/order/complete_lattice.lean + theorem infi_subtype'' Modified src/order/filter/bases.lean + theorem filter.antimono_seq_of_seq + theorem filter.countable_binfi_eq_infi_seq' + theorem filter.countable_binfi_eq_infi_seq + theorem filter.countable_binfi_principal_eq_seq_infi + structure filter.countable_filter_basis + def filter.filter_basis.of_sets + theorem filter.generate_eq_generate_inter + theorem filter.has_antimono_basis.tendsto + structure filter.has_antimono_basis + theorem filter.has_basis.eq_generate + theorem filter.has_basis.filter_eq + theorem filter.has_basis.is_basis + theorem filter.has_basis_generate + structure filter.has_countable_basis + structure filter.is_antimono_basis + theorem filter.is_basis.filter_eq_generate + theorem filter.is_basis.mem_filter_basis_iff + structure filter.is_countable_basis + def filter.is_countably_generated.countable_filter_basis + theorem filter.is_countably_generated.countable_generating_set + theorem filter.is_countably_generated.eq_generate + theorem filter.is_countably_generated.exists_antimono_seq' + theorem filter.is_countably_generated.exists_antimono_seq + theorem filter.is_countably_generated.exists_countable_infi_principal + theorem filter.is_countably_generated.exists_seq + theorem filter.is_countably_generated.filter_basis_filter + def filter.is_countably_generated.generating_set + theorem filter.is_countably_generated.has_antimono_basis + theorem filter.is_countably_generated.has_countable_basis + theorem filter.is_countably_generated.tendsto_iff_seq_tendsto + theorem filter.is_countably_generated.tendsto_of_seq_tendsto + def filter.is_countably_generated + theorem filter.is_countably_generated_at_top_finset_nat + theorem filter.is_countably_generated_binfi_principal + theorem filter.is_countably_generated_iff_exists_antimono_basis + theorem filter.is_countably_generated_of_seq + theorem filter.is_countably_generated_seq + theorem filter.of_sets_filter_eq_generate + theorem filter_basis.eq_infi_principal + theorem filter_basis.mem_filter_iff + theorem filter_basis.mem_filter_of_mem + structure filter_basis Modified src/order/filter/basic.lean - theorem directed_of_chain - theorem directed_on_Union + theorem filter.infi_eq_generate + theorem filter.map_at_top_inf_ne_bot_iff + theorem filter.mem_generate_iff + theorem filter.mem_infi_iff +/- theorem filter.mem_traverse_sets_iff + theorem filter.nat.cofinite_eq_at_top + theorem filter.sInter_mem_sets_of_finite + theorem filter.set.infinite_iff_frequently_cofinite - theorem nat.cofinite_eq_at_top - theorem set.infinite_iff_frequently_cofinite Modified src/order/zorn.lean + theorem directed_of_chain Modified src/topology/bases.lean - theorem filter.has_countable_basis.comap - theorem filter.has_countable_basis.tendsto_iff_seq_tendsto - theorem filter.has_countable_basis.tendsto_of_seq_tendsto - def filter.has_countable_basis - theorem filter.has_countable_basis_at_top_finset_nat - theorem filter.has_countable_basis_iff_mono_seq' - theorem filter.has_countable_basis_iff_mono_seq - theorem filter.has_countable_basis_iff_seq - theorem filter.has_countable_basis_of_seq - theorem filter.mono_seq_of_has_countable_basis - theorem filter.seq_of_has_countable_basis Modified src/topology/basic.lean Modified src/topology/continuous_on.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.mem_nhds_iff +/- theorem emetric.uniformity_has_countable_basis Modified src/topology/sequences.lean Modified src/topology/uniform_space/cauchy.lean 2020-04-13 08:52:32 92c8d93 feat(algebra/homology): the cohomology functor (#2374) This is the second in a series of most likely three PRs about the cohomology functor. As such, this PR depends on #2373. In the project laid out in `homology.lean`, @semorrison asks what the minimal assumptions are that are needed to get induced maps on images. In this PR, I offer a tautologial answer to this question: We get induced maps on images when there are induced maps on images. In this way, we can let type class resolution answer the question whether cohomology is functorial. In particular, the third PR will contain the fact that if our images are strong epi-mono factorizations, then we get induced maps on images. Since the regular coimage construction in regular categories is a strong epi-mono factorization, the approach in this PR generalizes the previous suggestion of requiring `V` to be regular. A quick remark about cohomology and dependent types: As you can see, at one point Lean forces us to write `i - 1 + 1` instead of `i` because these two things are not definitionally equal. I am afraid, as we do more with cohomology, there will be many cases of this issue, and to compose morphisms whose types contain different incarnations of the same integer, we will have to insert some `eq_to_hom`-esque glue and pray that we will be able to rewrite them all away in the proofs without getting the beloved `motive is not type correct` error. Maybe there is some better way to solve this problem? (Or am I overthinking this and it is not actually going to be an issue at all?) ESTIMATED CHANGES Modified src/algebra/homology/homology.lean + def cochain_complex.cohomology_functor + def cochain_complex.cohomology_map + theorem cochain_complex.cohomology_map_comp + theorem cochain_complex.cohomology_map_condition + theorem cochain_complex.cohomology_map_id + def cochain_complex.image_map + theorem cochain_complex.image_map_ι + theorem cochain_complex.image_to_kernel_map_condition + theorem cochain_complex.induced_maps_commute 2020-04-13 07:55:23 ca98659 chore(scripts): update nolints.txt (#2403) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-13 05:19:08 51f7319 chore(algebra/module): rename type vars, minor cleanup, add module docstring (#2392) * Use `R`, `S` for rings, `k` for a field, `M`, `M₂` etc for modules; * Add a `semiring` version of `ring_hom.to_module`; * Stop using `{rα : ring α}` trick as Lean 3.7 tries unification before class search; * Add a short module docstring ESTIMATED CHANGES Modified src/algebra/module.lean +/- def add_monoid_hom.to_int_linear_map +/- def add_monoid_hom.to_rat_linear_map +/- theorem finset.sum_const' +/- theorem finset.sum_smul +/- def ideal +/- theorem is_linear_map.is_linear_map_neg +/- theorem is_linear_map.is_linear_map_smul' +/- theorem is_linear_map.is_linear_map_smul +/- theorem is_linear_map.map_neg +/- theorem is_linear_map.map_smul +/- theorem is_linear_map.map_sub +/- theorem is_linear_map.map_zero +/- def is_linear_map.mk' +/- theorem is_linear_map.mk'_apply +/- theorem linear_map.coe_mk +/- def linear_map.comp +/- theorem linear_map.comp_apply +/- theorem linear_map.ext +/- theorem linear_map.ext_iff +/- def linear_map.id +/- theorem linear_map.id_apply +/- theorem linear_map.is_linear +/- theorem linear_map.map_add +/- theorem linear_map.map_neg +/- theorem linear_map.map_smul +/- theorem linear_map.map_sub +/- theorem linear_map.map_sum +/- def linear_map.to_add_monoid_hom +/- theorem linear_map.to_add_monoid_hom_coe +/- theorem linear_map.to_fun_eq_coe +/- structure linear_map +/- theorem list.sum_smul +/- structure module.core +/- theorem module.gsmul_eq_smul +/- def module.of_core +/- theorem multiset.sum_smul +/- theorem neg_one_smul +/- def ring_hom.to_module + def ring_hom.to_semimodule +/- theorem semimodule.add_monoid_smul_eq_smul +/- theorem semimodule.eq_zero_of_zero_eq_one +/- theorem smul_eq_mul +/- theorem smul_sub +/- theorem sub_smul +/- theorem submodule.coe_add +/- theorem submodule.coe_mk +/- theorem submodule.coe_neg +/- theorem submodule.coe_smul +/- theorem submodule.coe_sub +/- theorem submodule.coe_zero +/- theorem submodule.ext' +/- theorem submodule.ext +/- theorem submodule.mem_coe +/- theorem submodule.neg_mem +/- theorem submodule.smul_mem +/- theorem submodule.smul_mem_iff' +/- theorem submodule.subtype_eq_val +/- theorem submodule.sum_mem +/- theorem submodule.zero_mem +/- structure submodule +/- def subspace +/- def vector_space +/- theorem zero_smul 2020-04-13 03:08:38 64fa9a2 chore(*): futureproof import syntax (#2402) The next community version of Lean will treat a line starting in the first column after an import as a new command, not a continuation of the import. ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean 2020-04-12 20:36:49 ef4d235 feat(category_theory): biproducts, and biproducts in AddCommGroup (#2187) This PR 1. adds typeclasses `has_biproducts` (implicitly restricting to finite biproducts, which is the only interesting case) and `has_binary_biproducts`, and the usual tooling for special shapes of limits. 2. provides customised `has_products` and `has_coproducts` instances for `AddCommGroup`, which are both just dependent functions (for `has_coproducts` we have to assume the indexed type is finite and decidable) 3. because these custom instances have identical underlying objects, it's trivial to put them together to get a `has_biproducts AddCommGroup`. 4. as for 2 & 3 with binary biproducts for AddCommGroup, implemented simply as the cartesian group. ESTIMATED CHANGES Added src/algebra/category/Group/biproducts.lean + def AddCommGroup.has_colimit.desc + theorem AddCommGroup.has_colimit.desc_apply + def AddCommGroup.has_limit.lift + theorem AddCommGroup.has_limit.lift_apply Modified src/algebra/pi_instances.lean +/- theorem add_monoid_hom.single_apply Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/shapes/binary_products.lean Added src/category_theory/limits/shapes/biproducts.lean + def category_theory.limits.bicone.to_cocone + def category_theory.limits.bicone.to_cone + structure category_theory.limits.bicone + def category_theory.limits.binary_bicone.to_cocone + def category_theory.limits.binary_bicone.to_cone + structure category_theory.limits.binary_bicone + def category_theory.limits.biprod.desc + def category_theory.limits.biprod.fst + def category_theory.limits.biprod.inl + def category_theory.limits.biprod.inr + def category_theory.limits.biprod.lift + def category_theory.limits.biprod.map + def category_theory.limits.biprod.snd + def category_theory.limits.biprod + def category_theory.limits.biprod_iso + def category_theory.limits.biproduct.desc + def category_theory.limits.biproduct.lift + def category_theory.limits.biproduct.map + def category_theory.limits.biproduct.ι + def category_theory.limits.biproduct.π + def category_theory.limits.biproduct + def category_theory.limits.biproduct_iso 2020-04-12 18:17:30 1433f05 fix(tactic/norm_cast): typo (#2400) ESTIMATED CHANGES Modified src/tactic/norm_cast.lean 2020-04-12 06:01:35 d84de80 feat(set_theory/game): short games, boards, and domineering (#1540) This is a do-over of my previous attempt to implement the combinatorial game of domineering. This time, we get a nice clean definition, and it computes! To achieve this, I follow Reid's advice: generalise! We define ``` class state (S : Type u) := (turn_bound : S → ℕ) (L : S → finset S) (R : S → finset S) (left_bound : ∀ {s t : S} (m : t ∈ L s), turn_bound t < turn_bound s) (right_bound : ∀ {s t : S} (m : t ∈ R s), turn_bound t < turn_bound s) ``` a typeclass describing `S` as "the state of a game", and provide `pgame.of [state S] : S \to pgame`. This allows a short and straightforward definition of Domineering: ```lean /-- A Domineering board is an arbitrary finite subset of `ℤ × ℤ`. -/ def board := finset (ℤ × ℤ) ... /-- The instance describing allowed moves on a Domineering board. -/ instance state : state board := { turn_bound := λ s, s.card / 2, L := λ s, (left s).image (move_left s), R := λ s, (right s).image (move_right s), left_bound := _ right_bound := _, } ``` which computes: ``` example : (domineering ([(0,0), (0,1), (1,0), (1,1)].to_finset) ≈ pgame.of_lists [1] [-1]) := dec_trivial ``` ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem pred_ne_self + theorem succ_ne_self Added src/set_theory/game/domineering.lean + def pgame.domineering.L + def pgame.domineering.board + theorem pgame.domineering.card_of_mem_left + theorem pgame.domineering.card_of_mem_right + def pgame.domineering.left + def pgame.domineering.move_left + theorem pgame.domineering.move_left_card + theorem pgame.domineering.move_left_smaller + def pgame.domineering.move_right + theorem pgame.domineering.move_right_card + theorem pgame.domineering.move_right_smaller + def pgame.domineering.one + def pgame.domineering.right + def pgame.domineering.shift_right + def pgame.domineering.shift_up + def pgame.domineering Added src/set_theory/game/short.lean + def pgame.fintype_left + def pgame.fintype_right + def pgame.le_lt_decidable + inductive pgame.list_short + def pgame.move_left_short' + def pgame.move_right_short' + def pgame.short.mk' + inductive pgame.short + def pgame.short_of_equiv_empty + def pgame.short_of_relabelling Added src/set_theory/game/state.lean + def game.of + def pgame.left_moves_of + def pgame.left_moves_of_aux + def pgame.of + def pgame.of_aux + def pgame.of_aux_relabelling + def pgame.relabelling_move_left + def pgame.relabelling_move_left_aux + def pgame.relabelling_move_right + def pgame.relabelling_move_right_aux + def pgame.right_moves_of + def pgame.right_moves_of_aux + theorem pgame.turn_bound_ne_zero_of_left_move + theorem pgame.turn_bound_ne_zero_of_right_move + theorem pgame.turn_bound_of_left + theorem pgame.turn_bound_of_right Modified src/set_theory/pgame.lean +/- theorem pgame.relabel_move_left' +/- theorem pgame.relabel_move_left +/- theorem pgame.relabel_move_right' +/- theorem pgame.relabel_move_right + def pgame.relabelling.trans 2020-04-12 00:32:35 0f89392 chore(scripts): update nolints.txt (#2395) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-11 22:53:11 ee8cb15 feat(category_theory): functorial images (#2373) This is the first in a series of most likely three PRs about the cohomology functor. In this PR, I * add documentation for `comma.lean`, * introduce the arrow category as a special case of the comma construction, and * introduce the notion of functorial images, which means that commutative squares induce morphisms on images making the obvious diagram commute. ESTIMATED CHANGES Modified src/category_theory/comma.lean + def category_theory.arrow.hom_mk' + theorem category_theory.arrow.hom_mk'_left + theorem category_theory.arrow.hom_mk'_right + def category_theory.arrow.hom_mk + theorem category_theory.arrow.hom_mk_left + theorem category_theory.arrow.hom_mk_right + theorem category_theory.arrow.id_left + theorem category_theory.arrow.id_right + def category_theory.arrow.mk + theorem category_theory.arrow.mk_hom + def category_theory.arrow + theorem category_theory.comma.id_left + theorem category_theory.comma.id_right +/- def category_theory.comma.map_right_comp Modified src/category_theory/limits/shapes/images.lean + def category_theory.limits.has_image_map_comp + def category_theory.limits.has_image_map_id + def category_theory.limits.im + theorem category_theory.limits.image.factor_map + def category_theory.limits.image.map + theorem category_theory.limits.image.map_comp + theorem category_theory.limits.image.map_hom_mk'_ι + theorem category_theory.limits.image.map_id + theorem category_theory.limits.image.map_ι 2020-04-11 21:19:21 aa42f3b chore(scripts): update nolints.txt (#2391) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-11 18:44:17 5f1bfcf chore(tactic/lean_core_docs): add API docs for core Lean tactics (#2371) This is an attempt to get some documentation of most core Lean tactics into the API docs. See https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/undocumented.20core.20tactics (and the link in my second message in that thread) for background. Co-Authored-By: Rob Lewis Co-Authored-By: Scott Morrison Co-Authored-By: Bryan Gin-ge Chen ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Added src/tactic/lean_core_docs.lean 2020-04-11 18:44:15 80340d8 feat(category_theory): define action_category (#2358) This is a simple construction that I couldn't find anywhere else: given a monoid/group action on X, we get a category/groupoid structure on X. The plan is to use to use the action groupoid in the proof of Nielsen-Schreier, where the projection onto the single object groupoid is thought of as a covering map. To make sense of "stabilizer is mul_equiv to End", I added the simple fact that the stabilizer of any multiplicative action is a submonoid. This already existed for group actions. As far as I can tell, this instance shouldn't cause any problems as it is a Prop. ESTIMATED CHANGES Added src/category_theory/action.lean + def category_theory.action_as_functor + theorem category_theory.action_category.hom_as_subtype + def category_theory.action_category.obj_equiv + def category_theory.action_category.stabilizer_iso_End + theorem category_theory.action_category.stabilizer_iso_End_apply + theorem category_theory.action_category.stabilizer_iso_End_symm_apply + def category_theory.action_category.π + theorem category_theory.action_category.π_map + theorem category_theory.action_category.π_obj + def category_theory.action_category Modified src/category_theory/elements.lean +/- def category_theory.functor.elements Modified src/group_theory/group_action.lean 2020-04-11 16:16:28 e1feab4 refactor(*): rename ordered groups/monoids to ordered add_ groups/monoids (#2347) In the perfectoid project we need ordered commutative monoids, and they are multiplicative. So the additive versions should be renamed to make some place. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/archimedean.lean Modified src/algebra/big_operators.lean +/- theorem finset.le_sum_of_subadditive +/- theorem with_top.sum_lt_top +/- theorem with_top.sum_lt_top_iff Modified src/algebra/group_power.lean +/- theorem add_monoid.smul_nonneg Modified src/algebra/order_functions.lean Modified src/algebra/ordered_group.lean + theorem nonneg_add_comm_group.nonneg_def + theorem nonneg_add_comm_group.nonneg_total_iff + theorem nonneg_add_comm_group.not_zero_pos + theorem nonneg_add_comm_group.pos_def + def nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group + theorem nonneg_add_comm_group.zero_lt_iff_nonneg_nonneg - theorem nonneg_comm_group.nonneg_def - theorem nonneg_comm_group.nonneg_total_iff - theorem nonneg_comm_group.not_zero_pos - theorem nonneg_comm_group.pos_def - def nonneg_comm_group.to_decidable_linear_ordered_add_comm_group - theorem nonneg_comm_group.zero_lt_iff_nonneg_nonneg + def ordered_add_comm_group.mk' - def ordered_comm_group.mk' +/- theorem with_bot.add_bot +/- theorem with_bot.bot_add +/- theorem with_top.add_eq_top +/- theorem with_top.add_lt_top +/- theorem with_top.add_top +/- theorem with_top.top_add +/- theorem with_top.zero_lt_coe +/- theorem with_top.zero_lt_top + def with_zero.ordered_add_comm_monoid - def with_zero.ordered_comm_monoid Modified src/algebra/ordered_ring.lean Modified src/algebra/pi_instances.lean Modified src/algebra/punit_instances.lean Modified src/data/finsupp.lean +/- theorem finsupp.add_eq_zero_iff +/- theorem finsupp.le_iff Modified src/data/multiset.lean +/- theorem multiset.le_sum_of_subadditive Modified src/data/nat/enat.lean Modified src/data/pnat/factors.lean Modified src/data/rat/order.lean Modified src/data/real/basic.lean Modified src/data/real/nnreal.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/order/filter/basic.lean Modified src/order/filter/extr.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/game.lean Modified src/set_theory/surreal.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean + theorem decidable_linear_ordered_add_comm_group.tendsto_nhds - theorem decidable_linear_ordered_comm_group.tendsto_nhds Modified src/topology/local_extr.lean 2020-04-11 14:27:08 c9fca15 chore(algebra/category): remove some [reducible] after Lean 3.8 (#2389) Now that Lean 3.8 has arrived, we can essentially revert #2290, but leave in the examples verifying that everything still works. Lovely! ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/category_theory/concrete_category/bundled.lean Modified src/category_theory/full_subcategory.lean 2020-04-11 13:00:39 83359d1 chore(scripts): update nolints.txt (#2390) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-11 09:58:11 4fa2924 chore(scripts): update nolints.txt (#2388) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-11 09:58:09 81d8104 feat(actions): manage labels on PR review (#2387) Github actions will now add "ready-to-merge" to PRs that are approved by writing "bors r+" / "bors merge" in a PR reviews. It will also remove the "request-review" label, if present. ESTIMATED CHANGES Renamed .github/workflows/add_label.yml to .github/workflows/add_label_from_comment.yml Added .github/workflows/add_label_from_review.yml 2020-04-11 09:58:07 c68f23d chore(category_theory/types): add documentation, remove bad simp lemmas and instances, add notation for functions as morphisms (#2383) * Add module doc and doc strings for `src/category_theory/types.lean`. * Remove some bad simp lemmas and instances in that file and `src/category_theory/category/default.lean`. * Add a notation `↾f` which enables Lean to see a function `f : α → β` as a morphism `α ⟶ β` in the category of types. ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean Modified src/category_theory/category/default.lean + theorem category_theory.epi_comp + theorem category_theory.mono_comp Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/types.lean + def category_theory.as_hom - theorem category_theory.functor_to_types.map_comp + theorem category_theory.functor_to_types.map_comp_apply - theorem category_theory.functor_to_types.map_id + theorem category_theory.functor_to_types.map_id_apply +/- theorem category_theory.types_comp + theorem category_theory.types_comp_apply +/- theorem category_theory.types_hom +/- theorem category_theory.types_id + theorem category_theory.types_id_apply Modified src/category_theory/yoneda.lean Modified src/topology/metric_space/lipschitz.lean 2020-04-11 09:58:05 00b510e perf(data/*): add inline attributes (#2380) This is part of an effort to bring `rewrite_search` to mathlib. Depends on #2375. ESTIMATED CHANGES Modified src/data/list/basic.lean Modified src/data/option/defs.lean 2020-04-11 09:58:03 690643a fix(tactic/equiv_rw): don't use `subst` unnecessarily (#2334) This removes an unnecessary `subst` from the algorithm in `equiv_rw`, which was responsible for inserting `eq.rec`'s in data terms. ESTIMATED CHANGES Modified src/tactic/cache.lean Modified src/tactic/equiv_rw.lean Modified test/equiv_rw.lean 2020-04-11 07:17:19 8556499 feat(category_theory): make defining groupoids easier (#2360) The point of this PR is to lower the burden of proof in showing that a category is a groupoid. Rather than constructing well-defined two-sided inverses everywhere, with `groupoid.of_trunc_split_mono` you'll only need to show that every morphism has some retraction. This makes defining the free groupoid painless. There the retractions are defined by recursion on a quotient, so this saves the work of showing that all the retractions agree. I used `trunc` instead of `nonempty` to avoid choice / noncomputability. I don't understand why the @'s are needed: it seems Lean doesn't know what category structure C has without specifying it? ESTIMATED CHANGES Modified src/category_theory/epi_mono.lean + def category_theory.is_iso.of_epi_section + def category_theory.is_iso.of_mono_retraction Modified src/category_theory/groupoid.lean + def category_theory.groupoid.of_is_iso + def category_theory.groupoid.of_trunc_split_mono Modified src/tactic/basic.lean 2020-04-11 04:27:56 597704a chore(*): switch to lean 3.8.0 (#2361) Switch to Lean 3.8. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified docs/tutorial/category_theory/intro.lean Modified leanpkg.toml Modified src/algebra/archimedean.lean Modified src/algebra/big_operators.lean Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Group/colimits.lean Modified src/algebra/category/Module/basic.lean +/- def Module.of Modified src/algebra/category/Mon/colimits.lean Modified src/algebra/char_p.lean Modified src/algebra/char_zero.lean Modified src/algebra/direct_limit.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/group/anti_hom.lean Modified src/algebra/group/prod.lean Modified src/algebra/group_power.lean Modified src/algebra/group_with_zero.lean Modified src/algebra/homology/homology.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean +/- theorem zero_smul Modified src/algebra/order_functions.lean +/- theorem abs_le_abs +/- theorem min_add +/- theorem min_sub Modified src/algebra/ordered_group.lean + theorem decidable_linear_ordered_add_comm_group.eq_of_abs_sub_nonpos - theorem decidable_linear_ordered_comm_group.eq_of_abs_sub_nonpos +/- theorem neg_neg_iff_pos + def nonneg_comm_group.to_decidable_linear_ordered_add_comm_group - def nonneg_comm_group.to_decidable_linear_ordered_comm_group Modified src/algebra/ordered_ring.lean Modified src/algebra/pi_instances.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/basic.lean Modified src/category/basic.lean Modified src/category/equiv_functor.lean Modified src/category/monad/writer.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/concrete_category/unbundled_hom.lean Modified src/category_theory/core.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/functorial.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/limits.lean +/- def category_theory.limits.colimit.cocone +/- def category_theory.limits.limit.cone Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/images.lean +/- def category_theory.limits.image.is_image +/- def category_theory.limits.image.mono_factorisation Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/regular_mono.lean Modified src/category_theory/limits/shapes/zero.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/basic.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monad/types.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/shift.lean +/- def category_theory.shift Modified src/computability/primrec.lean Modified src/computability/turing_machine.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/encodable.lean Modified src/data/fin_enum.lean Modified src/data/finset.lean Modified src/data/finsupp.lean Modified src/data/fintype/basic.lean Modified src/data/holor.lean Modified src/data/list/basic.lean +/- theorem list.exists_le_of_sum_le +/- theorem list.exists_lt_of_sum_lt +/- theorem list.length_pos_of_sum_pos Modified src/data/list/defs.lean Modified src/data/list/forall2.lean Modified src/data/list/min_max.lean Modified src/data/list/perm.lean Modified src/data/matrix/pequiv.lean Modified src/data/mllist.lean Modified src/data/monoid_algebra.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/basic.lean Modified src/data/num/lemmas.lean Modified src/data/option/defs.lean Modified src/data/polynomial.lean Modified src/data/prod.lean +/- theorem prod.map_fst + theorem prod.map_mk +/- theorem prod.map_snd Modified src/data/rat/meta_defs.lean Modified src/data/rat/order.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/real/nnreal.lean +/- theorem nnreal.inv_inv Modified src/data/seq/wseq.lean Modified src/data/set/basic.lean Modified src/data/set/function.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/unordered_interval.lean Modified src/data/sum.lean Modified src/data/tree.lean Modified src/data/zmod/basic.lean Modified src/data/zsqrtd/basic.lean +/- structure zsqrtd Modified src/deprecated/group.lean Modified src/field_theory/perfect_closure.lean Modified src/field_theory/subfield.lean Modified src/geometry/manifold/manifold.lean Modified src/geometry/manifold/mfderiv.lean Modified src/group_theory/congruence.lean Modified src/group_theory/free_group.lean Modified src/group_theory/group_action.lean +/- theorem one_smul Modified src/group_theory/order_of_element.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/linear_action.lean Modified src/logic/relation.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/simple_func_dense.lean Modified src/meta/expr.lean Modified src/order/basic.lean Modified src/order/bounded_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/basic.lean Modified src/order/filter/extr.lean Modified src/order/filter/filter_product.lean +/- theorem filter.filter_product.abs_def +/- theorem filter.filter_product.of_abs Modified src/order/lattice.lean Modified src/order/lexicographic.lean Modified src/order/pilex.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/maps.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/subring.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/game.lean + def game.ordered_add_comm_group_game - def game.ordered_comm_group_game Modified src/set_theory/lists.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/surreal.lean Modified src/tactic/ext.lean Modified src/tactic/lift.lean Modified src/tactic/norm_num.lean +/- theorem norm_num.lt_add_of_pos_helper Modified src/tactic/ring_exp.lean Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean +/- theorem tendsto_abs_at_top_at_top Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/local_extr.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/order.lean Modified src/topology/sheaves/presheaf_of_functions.lean Modified src/topology/subset_properties.lean Modified test/coinductive.lean Modified test/delta_instance.lean Modified test/monotonicity/test_cases.lean Modified test/tactics.lean +/- def dummy +/- def right_param +/- def wrong_param Modified test/traversable.lean Modified test/trunc_cases.lean +/- def u 2020-04-10 20:56:06 ebdeb3b chore(scripts): update nolints.txt (#2386) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-10 18:03:50 29080c8 feat(data/list/range): add sum lemmas (#2385) Adding the proof that left and right multiplication in a ring commute with list sum. ESTIMATED CHANGES Modified src/algebra/group/hom.lean +/- theorem add_monoid_hom.map_sub + def add_monoid_hom.mul_left + def add_monoid_hom.mul_right Modified src/data/list/basic.lean + theorem list.prod_map_hom + theorem list.sum_map_mul_left + theorem list.sum_map_mul_right Modified src/data/list/range.lean + theorem list.prod_range_succ' 2020-04-10 18:03:48 61fa489 feat(tactic/trunc_cases): a tactic for case analysis on trunc hypotheses (#2368) ``` /-- Perform case analysis on a `trunc` expression, preferentially using the recursor `trunc.rec_on_subsingleton` when the goal is a subsingleton, and using `trunc.rec` otherwise. Additionally, if the new hypothesis is a type class, reset the instance cache. -/ ``` ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/equiv_rw.lean Modified src/tactic/finish.lean Modified src/tactic/interval_cases.lean Added src/tactic/trunc_cases.lean Added test/trunc_cases.lean + theorem eq_rec_prod + def u 2020-04-10 15:39:37 3cc7a32 feat(order/complete_lattice): add a constructor from `partial_order` and `Inf` (#2359) Also use `∃!` in `data/setoid`. ESTIMATED CHANGES Modified src/data/setoid.lean - theorem setoid.Inf_le +/- theorem setoid.classes_eqv_classes +/- theorem setoid.eq_of_mem_eqv_class +/- theorem setoid.eqv_class_mem +/- theorem setoid.eqv_classes_disjoint - theorem setoid.le_Inf +/- def setoid.mk_classes + theorem setoid.rel_iff_exists_classes Modified src/group_theory/congruence.lean - theorem con.Inf_le +/- theorem con.con_gen_of_con - theorem con.le_Inf Modified src/order/bounded_lattice.lean Modified src/order/bounds.lean +/- theorem lower_bounds_insert +/- theorem lower_bounds_singleton +/- theorem upper_bounds_insert +/- theorem upper_bounds_singleton Modified src/order/complete_lattice.lean + def complete_lattice_of_Inf 2020-04-10 13:48:32 5169595 chore(tactic/omega): add trace.omega option to show internal representation (#2377) This is helpful when debugging issues such as #2376 and #1484. ESTIMATED CHANGES Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/main.lean Modified src/tactic/omega/nat/main.lean 2020-04-10 13:48:30 bf8f25a feat(algebra/lie_algebra): quotients of Lie modules are Lie modules (#2335) ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean + theorem lie_submodule.quotient.lie_quotient_action_apply + def lie_submodule.quotient.lie_submodule_invariant Modified src/linear_algebra/basic.lean + theorem submodule.comap_le_comap_smul + def submodule.compatible_maps + theorem submodule.inf_comap_le_comap_add + def submodule.mapq_linear 2020-04-10 12:54:03 1a099b3 chore(scripts): update nolints.txt (#2381) I am happy to remove some nolints for you! ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-10 12:54:02 a714245 feat(group_theory/order_of_element): order_of_dvd_iff_pow_eq_one (#2364) ESTIMATED CHANGES Modified src/group_theory/order_of_element.lean + theorem order_of_dvd_iff_pow_eq_one 2020-04-10 11:53:26 55814dc fix(.github/workflows/add_label): add missing outputs (#2379) I hope this fixes the `add_label` workflow. ESTIMATED CHANGES Modified .github/workflows/add_label.yml 2020-04-10 11:53:24 808fa8d chore(.github): remove linebreaks from pull request template (#2378) github treats a newline in the markdown text as a linebreak. ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md 2020-04-10 10:19:59 e758263 refactor(ring_theory/algebra): use bundled homs, allow semirings (#2303) Fixes #2297 Build fails because of some class instance problems, asked [on Zulip](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Need.20help.20with.20class.20instance.20resolution), no answer yet. ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean Modified src/analysis/normed_space/basic.lean Modified src/data/matrix/basic.lean Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.aeval_C +/- theorem mv_polynomial.aeval_def Modified src/data/padics/padic_integers.lean Modified src/data/polynomial.lean +/- theorem polynomial.aeval_C +/- theorem polynomial.aeval_def + theorem polynomial.coe_eval₂_ring_hom +/- theorem polynomial.degree_map +/- theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero +/- theorem polynomial.degree_map_le + def polynomial.eval₂_ring_hom +/- theorem polynomial.leading_coeff_map +/- theorem polynomial.map_div +/- theorem polynomial.map_div_by_monic +/- theorem polynomial.map_eq_zero +/- theorem polynomial.map_id +/- theorem polynomial.map_injective +/- theorem polynomial.map_map +/- theorem polynomial.map_mod +/- theorem polynomial.map_mod_by_monic +/- theorem polynomial.map_mod_div_by_monic +/- theorem polynomial.map_neg +/- theorem polynomial.map_sub +/- theorem polynomial.monic_map +/- theorem polynomial.nat_degree_map Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/splitting_field.lean +/- theorem polynomial.splits_comp_of_splits +/- theorem polynomial.splits_map_iff +/- theorem polynomial.splits_of_splits_id Modified src/ring_theory/adjoin.lean Modified src/ring_theory/adjoin_root.lean +/- theorem adjoin_root.eval₂_root +/- theorem adjoin_root.is_root_root Modified src/ring_theory/algebra.lean +/- theorem alg_hom.commutes + theorem alg_hom.comp_algebra_map +/- theorem alg_hom.ext - theorem alg_hom.id_to_linear_map +/- def algebra.comap.of_comap +/- def algebra.comap.to_comap +/- def algebra.comap +/- theorem algebra.commutes +/- theorem algebra.id.map_eq_self +/- theorem algebra.left_comm - theorem algebra.map_add - theorem algebra.map_mul - theorem algebra.map_neg - theorem algebra.map_one - theorem algebra.map_sub - theorem algebra.map_zero +/- theorem algebra.mem_bot +/- def algebra.of_id +/- theorem algebra.of_id_apply - def algebra.of_ring_hom +/- theorem algebra.smul_def'' +/- theorem algebra.smul_def +/- theorem algebra.to_comap_apply +/- def algebra_map + def ring_hom.to_algebra +/- theorem subalgebra.range_le Modified src/ring_theory/algebraic.lean Modified src/ring_theory/integral_closure.lean +/- theorem is_integral_algebra_map Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series.lean Modified src/topology/algebra/module.lean Modified src/topology/metric_space/isometry.lean 2020-04-10 07:02:46 f723f37 feat(ci): switch from mergify to bors (#2322) This PR (joint work with @gebner) changes the automation that merges our PRs from mergify to a service called [bors](https://bors.tech/). Currently, the "time-to-master" of an approved PR grows linearly with the number of currently queued PRs, since mergify builds PRs against master one at a time. bors batches approved PRs together before building them against master so that most PRs should merge within 2*(current build time). As far as day-to-day use goes, the main difference is that maintainers will approve PRs by commenting with the magic words "`bors r+`" instead of "approving" on Github and adding the "ready-to-merge" label. Contributors should be aware that pushing additional commits to an approved PR will now require a new approval. Some longer notes on bors and mathlib can be found [here](https://github.com/leanprover-community/mathlib/blob/2ea15d65c32574aaf513e27feb24424354340eea/docs/contribute/bors.md). ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md Added .github/workflows/add_label.yml Modified .github/workflows/build.yml Deleted .mergify.yml Modified README.md Added bors.toml Added docs/contribute/bors.md Modified docs/contribute/index.md Modified scripts/fetch_olean_cache.sh Deleted scripts/look_up_olean_hash.py Modified scripts/update_nolints.sh Deleted scripts/write_azure_table_entry.py 2020-04-10 06:01:10 495deb9 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-10 05:27:11 6152d45 refactor(field_theory/perfect_closure): use bundled homs, review (#2357) * refactor(field_theory/perfect_closure): use bundled homs, review Also add lemmas like `monoid_hom.iterate_map_mul`. * Fix a typo spotted by `lint` * Apply suggestions from code review Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/algebra/char_p.lean +/- def frobenius +/- theorem frobenius_add +/- theorem frobenius_def +/- theorem frobenius_inj +/- theorem frobenius_mul +/- theorem frobenius_nat_cast +/- theorem frobenius_neg +/- theorem frobenius_one +/- theorem frobenius_sub +/- theorem frobenius_zero - theorem is_monoid_hom.map_frobenius + theorem monoid_hom.iterate_map_frobenius + theorem monoid_hom.map_frobenius + theorem monoid_hom.map_iterate_frobenius + theorem ring_hom.iterate_map_frobenius + theorem ring_hom.map_frobenius + theorem ring_hom.map_iterate_frobenius Modified src/algebra/group_power.lean + theorem add_monoid_hom.iterate_map_smul + theorem monoid_hom.iterate_map_pow + theorem ring_hom.iterate_map_pow + theorem ring_hom.iterate_map_smul +/- theorem ring_hom.map_pow Modified src/data/nat/basic.lean + theorem monoid_hom.iterate_map_inv + theorem monoid_hom.iterate_map_mul + theorem monoid_hom.iterate_map_one + theorem monoid_hom.iterate_map_sub + theorem ring_hom.iterate_map_add + theorem ring_hom.iterate_map_mul + theorem ring_hom.iterate_map_neg + theorem ring_hom.iterate_map_one + theorem ring_hom.iterate_map_sub + theorem ring_hom.iterate_map_zero Modified src/field_theory/perfect_closure.lean + theorem coe_frobenius_equiv + theorem coe_frobenius_equiv_symm + theorem eq_pth_root_iff + def frobenius_equiv +/- theorem frobenius_pth_root - theorem is_ring_hom.pth_root + theorem monoid_hom.map_iterate_pth_root + theorem monoid_hom.map_pth_root - def perfect_closure.UMP +/- theorem perfect_closure.eq_iff' +/- theorem perfect_closure.eq_pth_root - def perfect_closure.frobenius_equiv - theorem perfect_closure.frobenius_equiv_apply +/- theorem perfect_closure.frobenius_mk + theorem perfect_closure.induction_on +/- theorem perfect_closure.int_cast + def perfect_closure.lift + def perfect_closure.lift_on + theorem perfect_closure.lift_on_mk + def perfect_closure.mk + theorem perfect_closure.mk_add_mk + theorem perfect_closure.mk_mul_mk +/- theorem perfect_closure.mk_zero +/- theorem perfect_closure.nat_cast +/- theorem perfect_closure.nat_cast_eq_iff + theorem perfect_closure.neg_mk +/- def perfect_closure.of + theorem perfect_closure.of_apply + theorem perfect_closure.one_def + theorem perfect_closure.quot_mk_eq_mk +/- theorem perfect_closure.r.sound +/- inductive perfect_closure.r + theorem perfect_closure.zero_def +/- def perfect_closure + def pth_root + theorem pth_root_eq_iff +/- theorem pth_root_frobenius + theorem ring_hom.map_iterate_pth_root + theorem ring_hom.map_pth_root 2020-04-10 02:46:37 b15c213 chore(*): replace uses of `---` delimiter in tactic docs (#2372) * update abel doc string the tactic doc entry seems completely fine as the doc string, I don't know why these were separated * replace uses of --- in docs ESTIMATED CHANGES Modified src/tactic/abel.lean Modified src/tactic/clear.lean Modified src/tactic/doc_commands.lean Modified src/tactic/hint.lean Modified src/tactic/interval_cases.lean Modified src/tactic/linarith.lean Modified src/tactic/omega/main.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/rename.lean Modified src/tactic/rename_var.lean Modified src/tactic/suggest.lean Modified src/tactic/tauto.lean Modified src/tactic/tfae.lean 2020-04-09 23:56:46 19e1a96 doc(add_tactic_doc): slight improvement to docs (#2365) * doc(add_tactic_doc): slight improvement to docs * Update docs/contribute/doc.md Co-Authored-By: Yury G. Kudryashov * sentence * update add_tactic_doc doc entry ESTIMATED CHANGES Modified docs/contribute/doc.md Modified src/tactic/doc_commands.lean 2020-04-09 21:05:16 4a1dc42 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-09 20:31:33 6a7db27 feat(tactic/ring_exp) allow ring_exp inside of conv blocks (#2369) * allow ring_exp inside of conv blocks * Update test/ring_exp.lean * Update test/ring_exp.lean * Update test/ring_exp.lean * add docstrings ESTIMATED CHANGES Modified src/tactic/doc_commands.lean Modified src/tactic/ring.lean Modified src/tactic/ring_exp.lean Modified test/ring_exp.lean 2020-04-09 17:41:23 d240f38 feat(tactic/simp_result): tactics for simplifying the results of other tactics (#2356) * feat(tactic/simp_result): tactics for simplifying the results of other tactics * word * better tests * order of arguments * Revert "order of arguments" This reverts commit 38cfec6867459fcc4c5ef2d41f5313a5b0466c53. * fix add_tactic_doc * slightly robustify testing * improve documentation ESTIMATED CHANGES Added src/tactic/simp_result.lean Added test/simp_result.lean 2020-04-09 12:44:49 63fc23a feat(data/list): chain_iff_nth_le (#2354) * feat(data/list): chain_iff_nth_le * Update src/data/list/basic.lean Co-Authored-By: Johan Commelin * move * fix ESTIMATED CHANGES Modified src/data/list/chain.lean + theorem list.chain'_iff_nth_le + theorem list.chain_iff_nth_le Modified src/data/nat/basic.lean + theorem nat.lt_of_lt_pred 2020-04-09 10:08:54 bda8a05 doc(docs/extras/tactic_writing) add cheap method (#2198) * doc(docs/extras/tactic_writing) add cheap method About 50% of my personal use cases for writing tactics are just because I want a simple way of stringing several tactics together, so I propose adding this so I will know where to look when I realise I can't remember the syntax. * style fixes * Update tactic_writing.md * Update tactic_writing.md * Update docs/extras/tactic_writing.md ESTIMATED CHANGES Modified docs/extras/tactic_writing.md 2020-04-09 09:03:53 a8797ce feat(data/set/basic): add lemmata (#2353) * feat(data/set/basic): add lemmata * switch to term mode proof * removing dupe * make linter happy * Update src/data/set/basic.lean Co-Authored-By: sgouezel * change proof ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.exists_range_iff' + theorem set.mem_compl_singleton_iff + theorem set.subset_compl_singleton_iff 2020-04-09 06:10:23 80d3ed8 fix(algebra/euclidean_domain): remove decidable_eq assumption (#2362) This PR removes the `decidable_eq` assumption on the `field.to_euclidean_domain` instance. Decidable equality was only used to define the remainder with an if-then-else, but this can also be done by exploiting the fact that `0⁻¹ = 0`. The current instance is a bit problematic since it can cause `a + b : ℝ` to be noncomputable if type-class inference happens to choose the wrong instance (going through `euclidean_domain` instead of "directly" through some kind of ring). ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean 2020-04-09 03:16:05 67b121e chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-09 02:50:30 fbc9592 chore(data/list): move some sections to separate files (#2341) * move list.func namespace to its own file * move erase_dup to its own file * move rotate to its own file * move tfae to its own file * move bag_inter and intervals * move range out * move nodup * move chain and pairwise * move zip * move forall2 * move of_fn * add copyright headers * remove unnecessary sections, move defns to func.set and tfae * fixes * oops, forgot to add file ESTIMATED CHANGES Modified src/category/traversable/instances.lean Modified src/data/int/basic.lean Added src/data/list/antidiagonal.lean + def list.nat.antidiagonal + theorem list.nat.antidiagonal_zero + theorem list.nat.length_antidiagonal + theorem list.nat.mem_antidiagonal + theorem list.nat.nodup_antidiagonal Added src/data/list/bag_inter.lean + theorem list.bag_inter_nil + theorem list.bag_inter_nil_iff_inter_nil + theorem list.bag_inter_sublist_left + theorem list.cons_bag_inter_of_neg + theorem list.cons_bag_inter_of_pos + theorem list.count_bag_inter + theorem list.mem_bag_inter + theorem list.nil_bag_inter Modified src/data/list/basic.lean - theorem list.Ico.append_consecutive - theorem list.Ico.bag_inter_consecutive - theorem list.Ico.chain'_succ - theorem list.Ico.eq_cons - theorem list.Ico.eq_empty_iff - theorem list.Ico.eq_nil_of_le - theorem list.Ico.filter_le - theorem list.Ico.filter_le_of_le - theorem list.Ico.filter_le_of_le_bot - theorem list.Ico.filter_le_of_top_le - theorem list.Ico.filter_lt - theorem list.Ico.filter_lt_of_ge - theorem list.Ico.filter_lt_of_le_bot - theorem list.Ico.filter_lt_of_top_le - theorem list.Ico.inter_consecutive - theorem list.Ico.length - theorem list.Ico.map_add - theorem list.Ico.map_sub - theorem list.Ico.mem - theorem list.Ico.nodup - theorem list.Ico.not_mem_top - theorem list.Ico.pairwise_lt - theorem list.Ico.pred_singleton - theorem list.Ico.self_empty - theorem list.Ico.succ_singleton - theorem list.Ico.succ_top - theorem list.Ico.trichotomy - theorem list.Ico.zero_bot - def list.Ico - theorem list.array_eq_of_fn - theorem list.bag_inter_nil - theorem list.bag_inter_nil_iff_inter_nil - theorem list.bag_inter_sublist_left - theorem list.bi_unique_forall₂ - theorem list.chain'.cons - theorem list.chain'.iff - theorem list.chain'.iff_mem - theorem list.chain'.imp - theorem list.chain'.tail - theorem list.chain'_cons - theorem list.chain'_iff_pairwise - theorem list.chain'_map - theorem list.chain'_map_of_chain' - theorem list.chain'_nil - theorem list.chain'_of_chain'_map - theorem list.chain'_pair - theorem list.chain'_reverse - theorem list.chain'_singleton - theorem list.chain'_split - theorem list.chain.iff - theorem list.chain.iff_mem - theorem list.chain.imp' - theorem list.chain.imp - theorem list.chain_iff_pairwise - theorem list.chain_lt_range' - theorem list.chain_map - theorem list.chain_map_of_chain - theorem list.chain_of_chain_cons - theorem list.chain_of_chain_map - theorem list.chain_of_pairwise - theorem list.chain_singleton - theorem list.chain_split - theorem list.chain_succ_range' - theorem list.cons_bag_inter_of_neg - theorem list.cons_bag_inter_of_pos - theorem list.count_bag_inter - theorem list.count_eq_one_of_mem - theorem list.diff_eq_filter_of_nodup - theorem list.disjoint_of_nodup_append - theorem list.enum_from_map_fst - theorem list.enum_map_fst - theorem list.erase_dup_append - theorem list.erase_dup_cons_of_mem' - theorem list.erase_dup_cons_of_mem - theorem list.erase_dup_cons_of_not_mem' - theorem list.erase_dup_cons_of_not_mem - theorem list.erase_dup_eq_self - theorem list.erase_dup_idempotent - theorem list.erase_dup_nil - theorem list.erase_dup_sublist - theorem list.erase_dup_subset - theorem list.filter_map_cons - def list.fin_range - theorem list.forall_mem_ne - theorem list.forall_mem_pw_filter - theorem list.forall_of_forall_of_pairwise - theorem list.forall_of_pairwise - theorem list.forall₂.flip - theorem list.forall₂.imp - theorem list.forall₂.mp - theorem list.forall₂_and_left - theorem list.forall₂_cons - theorem list.forall₂_cons_left_iff - theorem list.forall₂_cons_right_iff - theorem list.forall₂_drop - theorem list.forall₂_drop_append - theorem list.forall₂_eq_eq_eq - theorem list.forall₂_iff_zip - theorem list.forall₂_length_eq - theorem list.forall₂_map_left_iff - theorem list.forall₂_map_right_iff - theorem list.forall₂_nil_left_iff - theorem list.forall₂_nil_right_iff - theorem list.forall₂_refl - theorem list.forall₂_same - theorem list.forall₂_take - theorem list.forall₂_take_append - theorem list.forall₂_zip - theorem list.func.add_nil - theorem list.func.eq_get_of_mem - theorem list.func.eq_of_equiv - theorem list.func.equiv_of_eq - theorem list.func.equiv_refl - theorem list.func.equiv_symm - theorem list.func.equiv_trans - theorem list.func.forall_val_of_forall_mem - theorem list.func.get_add - theorem list.func.get_eq_default_of_le - theorem list.func.get_map' - theorem list.func.get_map - theorem list.func.get_neg - theorem list.func.get_nil - theorem list.func.get_pointwise - theorem list.func.get_set - theorem list.func.get_set_eq_of_ne - theorem list.func.get_sub - theorem list.func.length_add - theorem list.func.length_neg - theorem list.func.length_pointwise - theorem list.func.length_set - theorem list.func.length_sub - theorem list.func.map_add_map - theorem list.func.mem_get_of_le - theorem list.func.mem_get_of_ne_zero - theorem list.func.nil_add - theorem list.func.nil_pointwise - theorem list.func.nil_sub - theorem list.func.pointwise_nil - theorem list.func.sub_nil - theorem list.iota_eq_reverse_range' - theorem list.left_unique_forall₂ - theorem list.length_fin_range - theorem list.length_iota - theorem list.length_of_fn - theorem list.length_of_fn_aux - theorem list.length_range' - theorem list.length_range - theorem list.length_revzip - theorem list.length_rotate' - theorem list.length_rotate - theorem list.length_zip - theorem list.map_add_range' - theorem list.map_sub_range' - theorem list.mem_bag_inter - theorem list.mem_diff_iff_of_nodup - theorem list.mem_erase_dup - theorem list.mem_erase_iff_of_nodup - theorem list.mem_erase_of_nodup - theorem list.mem_fin_range - theorem list.mem_iota - theorem list.mem_range' - theorem list.mem_range - theorem list.mem_rotate - theorem list.mem_sections - theorem list.mem_sections_length - theorem list.mem_zip - def list.nat.antidiagonal - theorem list.nat.antidiagonal_zero - theorem list.nat.length_antidiagonal - theorem list.nat.mem_antidiagonal - theorem list.nat.nodup_antidiagonal - theorem list.nil_bag_inter - theorem list.nodup_append - theorem list.nodup_append_comm - theorem list.nodup_append_of_nodup - theorem list.nodup_attach - theorem list.nodup_bind - theorem list.nodup_concat - theorem list.nodup_cons - theorem list.nodup_cons_of_nodup - theorem list.nodup_diff - theorem list.nodup_erase_dup - theorem list.nodup_erase_eq_filter - theorem list.nodup_erase_of_nodup - theorem list.nodup_filter - theorem list.nodup_filter_map - theorem list.nodup_fin_range - theorem list.nodup_iff_count_le_one - theorem list.nodup_iff_nth_le_inj - theorem list.nodup_iff_sublist - theorem list.nodup_insert - theorem list.nodup_inter_of_nodup - theorem list.nodup_iota - theorem list.nodup_join - theorem list.nodup_map - theorem list.nodup_map_iff - theorem list.nodup_map_on - theorem list.nodup_middle - theorem list.nodup_nil - theorem list.nodup_of_fn - theorem list.nodup_of_nodup_append_left - theorem list.nodup_of_nodup_append_right - theorem list.nodup_of_nodup_cons - theorem list.nodup_of_nodup_map - theorem list.nodup_of_sublist - theorem list.nodup_pmap - theorem list.nodup_product - theorem list.nodup_range' - theorem list.nodup_range - theorem list.nodup_repeat - theorem list.nodup_reverse - theorem list.nodup_sigma - theorem list.nodup_singleton - theorem list.nodup_sublists' - theorem list.nodup_sublists - theorem list.nodup_sublists_len - theorem list.nodup_union - theorem list.nodup_update_nth - theorem list.not_mem_of_nodup_cons - theorem list.not_mem_range_self - theorem list.not_nodup_cons_of_mem - theorem list.not_nodup_pair - theorem list.nth_le_index_of - theorem list.nth_le_of_fn - theorem list.nth_le_range - theorem list.nth_of_fn - theorem list.nth_of_fn_aux - theorem list.nth_range' - theorem list.nth_range - theorem list.of_fn_eq_pmap - theorem list.of_fn_nth_le - theorem list.of_fn_succ - theorem list.of_fn_zero - theorem list.pairwise.and - theorem list.pairwise.and_mem - theorem list.pairwise.chain' - theorem list.pairwise.iff - theorem list.pairwise.iff_of_mem - theorem list.pairwise.imp - theorem list.pairwise.imp_mem - theorem list.pairwise.imp_of_mem - theorem list.pairwise.imp₂ - theorem list.pairwise_append - theorem list.pairwise_append_comm - theorem list.pairwise_filter - theorem list.pairwise_filter_map - theorem list.pairwise_filter_map_of_pairwise - theorem list.pairwise_filter_of_pairwise - theorem list.pairwise_gt_iota - theorem list.pairwise_iff_nth_le - theorem list.pairwise_join - theorem list.pairwise_lt_range' - theorem list.pairwise_lt_range - theorem list.pairwise_map - theorem list.pairwise_map_of_pairwise - theorem list.pairwise_middle - theorem list.pairwise_of_forall - theorem list.pairwise_of_pairwise_cons - theorem list.pairwise_of_pairwise_map - theorem list.pairwise_of_sublist - theorem list.pairwise_pair - theorem list.pairwise_pw_filter - theorem list.pairwise_reverse - theorem list.pairwise_singleton - theorem list.pairwise_sublists' - theorem list.pairwise_sublists - theorem list.prod_range_succ - theorem list.prod_rotate_eq_one_of_prod_eq_one - theorem list.pw_filter_cons_of_neg - theorem list.pw_filter_cons_of_pos - theorem list.pw_filter_eq_self - theorem list.pw_filter_idempotent - theorem list.pw_filter_map - theorem list.pw_filter_nil - theorem list.pw_filter_sublist - theorem list.pw_filter_subset - theorem list.range'_append - theorem list.range'_concat - theorem list.range'_eq_map_range - theorem list.range'_sublist_right - theorem list.range'_subset_right - theorem list.range_concat - theorem list.range_core_range' - theorem list.range_eq_range' - theorem list.range_sublist - theorem list.range_subset - theorem list.range_succ_eq_map - theorem list.rel_append - theorem list.rel_bind - theorem list.rel_filter - theorem list.rel_filter_map - theorem list.rel_foldl - theorem list.rel_foldr - theorem list.rel_join - theorem list.rel_map - theorem list.rel_mem - theorem list.rel_nodup - theorem list.rel_of_chain_cons - theorem list.rel_of_pairwise_cons - theorem list.rel_prod - theorem list.rel_sections - theorem list.reverse_range' - theorem list.reverse_revzip - theorem list.revzip_map_fst - theorem list.revzip_map_snd - theorem list.revzip_swap - theorem list.right_unique_forall₂ - theorem list.rotate'_cons_succ - theorem list.rotate'_eq_take_append_drop - theorem list.rotate'_length - theorem list.rotate'_length_mul - theorem list.rotate'_mod - theorem list.rotate'_nil - theorem list.rotate'_rotate' - theorem list.rotate'_zero - theorem list.rotate_cons_succ - theorem list.rotate_eq_rotate' - theorem list.rotate_eq_take_append_drop - theorem list.rotate_length - theorem list.rotate_length_mul - theorem list.rotate_mod - theorem list.rotate_nil - theorem list.rotate_rotate - theorem list.rotate_zero - theorem list.subset_erase_dup - theorem list.tfae.out - theorem list.tfae_cons_cons - theorem list.tfae_cons_of_mem - theorem list.tfae_nil - theorem list.tfae_of_cycle - theorem list.tfae_of_forall - theorem list.tfae_singleton - theorem list.unzip_cons - theorem list.unzip_eq_map - theorem list.unzip_left - theorem list.unzip_nil - theorem list.unzip_revzip - theorem list.unzip_right - theorem list.unzip_swap - theorem list.unzip_zip - theorem list.unzip_zip_left - theorem list.unzip_zip_right - theorem list.zip_append - theorem list.zip_cons_cons - theorem list.zip_map' - theorem list.zip_map - theorem list.zip_map_left - theorem list.zip_map_right - theorem list.zip_nil_left - theorem list.zip_nil_right - theorem list.zip_swap - theorem list.zip_unzip - theorem option.to_list_nodup Added src/data/list/chain.lean + theorem list.chain'.cons + theorem list.chain'.iff + theorem list.chain'.iff_mem + theorem list.chain'.imp + theorem list.chain'.tail + theorem list.chain'_cons + theorem list.chain'_iff_pairwise + theorem list.chain'_map + theorem list.chain'_map_of_chain' + theorem list.chain'_nil + theorem list.chain'_of_chain'_map + theorem list.chain'_pair + theorem list.chain'_reverse + theorem list.chain'_singleton + theorem list.chain'_split + theorem list.chain.iff + theorem list.chain.iff_mem + theorem list.chain.imp' + theorem list.chain.imp + theorem list.chain_iff_pairwise + theorem list.chain_map + theorem list.chain_map_of_chain + theorem list.chain_of_chain_cons + theorem list.chain_of_chain_map + theorem list.chain_of_pairwise + theorem list.chain_singleton + theorem list.chain_split + theorem list.pairwise.chain' + theorem list.rel_of_chain_cons Modified src/data/list/defs.lean - def list.func.add - def list.func.equiv - def list.func.get - def list.func.neg - def list.func.pointwise - def list.func.set - def list.func.sub - def list.tfae Added src/data/list/erase_dup.lean + theorem list.erase_dup_append + theorem list.erase_dup_cons_of_mem' + theorem list.erase_dup_cons_of_mem + theorem list.erase_dup_cons_of_not_mem' + theorem list.erase_dup_cons_of_not_mem + theorem list.erase_dup_eq_self + theorem list.erase_dup_idempotent + theorem list.erase_dup_nil + theorem list.erase_dup_sublist + theorem list.erase_dup_subset + theorem list.mem_erase_dup + theorem list.nodup_erase_dup + theorem list.subset_erase_dup Added src/data/list/forall2.lean + theorem list.bi_unique_forall₂ + theorem list.filter_map_cons + theorem list.forall₂.flip + theorem list.forall₂.imp + theorem list.forall₂.mp + theorem list.forall₂_and_left + theorem list.forall₂_cons + theorem list.forall₂_cons_left_iff + theorem list.forall₂_cons_right_iff + theorem list.forall₂_drop + theorem list.forall₂_drop_append + theorem list.forall₂_eq_eq_eq + theorem list.forall₂_iff_zip + theorem list.forall₂_length_eq + theorem list.forall₂_map_left_iff + theorem list.forall₂_map_right_iff + theorem list.forall₂_nil_left_iff + theorem list.forall₂_nil_right_iff + theorem list.forall₂_refl + theorem list.forall₂_same + theorem list.forall₂_take + theorem list.forall₂_take_append + theorem list.forall₂_zip + theorem list.left_unique_forall₂ + theorem list.rel_append + theorem list.rel_bind + theorem list.rel_filter + theorem list.rel_filter_map + theorem list.rel_foldl + theorem list.rel_foldr + theorem list.rel_join + theorem list.rel_map + theorem list.rel_mem + theorem list.rel_prod + theorem list.right_unique_forall₂ Added src/data/list/func.lean + def list.func.add + theorem list.func.add_nil + theorem list.func.eq_get_of_mem + theorem list.func.eq_of_equiv + def list.func.equiv + theorem list.func.equiv_of_eq + theorem list.func.equiv_refl + theorem list.func.equiv_symm + theorem list.func.equiv_trans + theorem list.func.forall_val_of_forall_mem + def list.func.get + theorem list.func.get_add + theorem list.func.get_eq_default_of_le + theorem list.func.get_map' + theorem list.func.get_map + theorem list.func.get_neg + theorem list.func.get_nil + theorem list.func.get_pointwise + theorem list.func.get_set + theorem list.func.get_set_eq_of_ne + theorem list.func.get_sub + theorem list.func.length_add + theorem list.func.length_neg + theorem list.func.length_pointwise + theorem list.func.length_set + theorem list.func.length_sub + theorem list.func.map_add_map + theorem list.func.mem_get_of_le + theorem list.func.mem_get_of_ne_zero + def list.func.neg + theorem list.func.nil_add + theorem list.func.nil_pointwise + theorem list.func.nil_sub + def list.func.pointwise + theorem list.func.pointwise_nil + def list.func.set + def list.func.sub + theorem list.func.sub_nil Added src/data/list/intervals.lean + theorem list.Ico.append_consecutive + theorem list.Ico.bag_inter_consecutive + theorem list.Ico.chain'_succ + theorem list.Ico.eq_cons + theorem list.Ico.eq_empty_iff + theorem list.Ico.eq_nil_of_le + theorem list.Ico.filter_le + theorem list.Ico.filter_le_of_le + theorem list.Ico.filter_le_of_le_bot + theorem list.Ico.filter_le_of_top_le + theorem list.Ico.filter_lt + theorem list.Ico.filter_lt_of_ge + theorem list.Ico.filter_lt_of_le_bot + theorem list.Ico.filter_lt_of_top_le + theorem list.Ico.inter_consecutive + theorem list.Ico.length + theorem list.Ico.map_add + theorem list.Ico.map_sub + theorem list.Ico.mem + theorem list.Ico.nodup + theorem list.Ico.not_mem_top + theorem list.Ico.pairwise_lt + theorem list.Ico.pred_singleton + theorem list.Ico.self_empty + theorem list.Ico.succ_singleton + theorem list.Ico.succ_top + theorem list.Ico.trichotomy + theorem list.Ico.zero_bot + def list.Ico Added src/data/list/nodup.lean + theorem list.count_eq_one_of_mem + theorem list.diff_eq_filter_of_nodup + theorem list.disjoint_of_nodup_append + theorem list.forall_mem_ne + theorem list.mem_diff_iff_of_nodup + theorem list.mem_erase_iff_of_nodup + theorem list.mem_erase_of_nodup + theorem list.nodup_append + theorem list.nodup_append_comm + theorem list.nodup_append_of_nodup + theorem list.nodup_attach + theorem list.nodup_bind + theorem list.nodup_concat + theorem list.nodup_cons + theorem list.nodup_cons_of_nodup + theorem list.nodup_diff + theorem list.nodup_erase_eq_filter + theorem list.nodup_erase_of_nodup + theorem list.nodup_filter + theorem list.nodup_filter_map + theorem list.nodup_iff_count_le_one + theorem list.nodup_iff_nth_le_inj + theorem list.nodup_iff_sublist + theorem list.nodup_insert + theorem list.nodup_inter_of_nodup + theorem list.nodup_join + theorem list.nodup_map + theorem list.nodup_map_iff + theorem list.nodup_map_on + theorem list.nodup_middle + theorem list.nodup_nil + theorem list.nodup_of_nodup_append_left + theorem list.nodup_of_nodup_append_right + theorem list.nodup_of_nodup_cons + theorem list.nodup_of_nodup_map + theorem list.nodup_of_sublist + theorem list.nodup_pmap + theorem list.nodup_product + theorem list.nodup_repeat + theorem list.nodup_reverse + theorem list.nodup_sigma + theorem list.nodup_singleton + theorem list.nodup_sublists' + theorem list.nodup_sublists + theorem list.nodup_sublists_len + theorem list.nodup_union + theorem list.nodup_update_nth + theorem list.not_mem_of_nodup_cons + theorem list.not_nodup_cons_of_mem + theorem list.not_nodup_pair + theorem list.nth_le_index_of + theorem list.rel_nodup + theorem option.to_list_nodup Added src/data/list/of_fn.lean + theorem list.array_eq_of_fn + theorem list.length_of_fn + theorem list.length_of_fn_aux + theorem list.nth_le_of_fn + theorem list.nth_of_fn + theorem list.nth_of_fn_aux + theorem list.of_fn_nth_le + theorem list.of_fn_succ + theorem list.of_fn_zero Added src/data/list/pairwise.lean + theorem list.forall_mem_pw_filter + theorem list.forall_of_forall_of_pairwise + theorem list.forall_of_pairwise + theorem list.pairwise.and + theorem list.pairwise.and_mem + theorem list.pairwise.iff + theorem list.pairwise.iff_of_mem + theorem list.pairwise.imp + theorem list.pairwise.imp_mem + theorem list.pairwise.imp_of_mem + theorem list.pairwise.imp₂ + theorem list.pairwise_append + theorem list.pairwise_append_comm + theorem list.pairwise_filter + theorem list.pairwise_filter_map + theorem list.pairwise_filter_map_of_pairwise + theorem list.pairwise_filter_of_pairwise + theorem list.pairwise_iff_nth_le + theorem list.pairwise_join + theorem list.pairwise_map + theorem list.pairwise_map_of_pairwise + theorem list.pairwise_middle + theorem list.pairwise_of_forall + theorem list.pairwise_of_pairwise_cons + theorem list.pairwise_of_pairwise_map + theorem list.pairwise_of_sublist + theorem list.pairwise_pair + theorem list.pairwise_pw_filter + theorem list.pairwise_reverse + theorem list.pairwise_singleton + theorem list.pairwise_sublists' + theorem list.pairwise_sublists + theorem list.pw_filter_cons_of_neg + theorem list.pw_filter_cons_of_pos + theorem list.pw_filter_eq_self + theorem list.pw_filter_idempotent + theorem list.pw_filter_map + theorem list.pw_filter_nil + theorem list.pw_filter_sublist + theorem list.pw_filter_subset + theorem list.rel_of_pairwise_cons Modified src/data/list/perm.lean Added src/data/list/range.lean + theorem list.chain_lt_range' + theorem list.chain_succ_range' + theorem list.enum_from_map_fst + theorem list.enum_map_fst + def list.fin_range + theorem list.iota_eq_reverse_range' + theorem list.length_fin_range + theorem list.length_iota + theorem list.length_range' + theorem list.length_range + theorem list.map_add_range' + theorem list.map_sub_range' + theorem list.mem_fin_range + theorem list.mem_iota + theorem list.mem_range' + theorem list.mem_range + theorem list.nodup_fin_range + theorem list.nodup_iota + theorem list.nodup_of_fn + theorem list.nodup_range' + theorem list.nodup_range + theorem list.not_mem_range_self + theorem list.nth_le_range + theorem list.nth_range' + theorem list.nth_range + theorem list.of_fn_eq_pmap + theorem list.pairwise_gt_iota + theorem list.pairwise_lt_range' + theorem list.pairwise_lt_range + theorem list.prod_range_succ + theorem list.range'_append + theorem list.range'_concat + theorem list.range'_eq_map_range + theorem list.range'_sublist_right + theorem list.range'_subset_right + theorem list.range_concat + theorem list.range_core_range' + theorem list.range_eq_range' + theorem list.range_sublist + theorem list.range_subset + theorem list.range_succ_eq_map + theorem list.reverse_range' Added src/data/list/rotate.lean + theorem list.length_rotate' + theorem list.length_rotate + theorem list.mem_rotate + theorem list.prod_rotate_eq_one_of_prod_eq_one + theorem list.rotate'_cons_succ + theorem list.rotate'_eq_take_append_drop + theorem list.rotate'_length + theorem list.rotate'_length_mul + theorem list.rotate'_mod + theorem list.rotate'_nil + theorem list.rotate'_rotate' + theorem list.rotate'_zero + theorem list.rotate_cons_succ + theorem list.rotate_eq_rotate' + theorem list.rotate_eq_take_append_drop + theorem list.rotate_length + theorem list.rotate_length_mul + theorem list.rotate_mod + theorem list.rotate_nil + theorem list.rotate_rotate + theorem list.rotate_zero Added src/data/list/sections.lean + theorem list.mem_sections + theorem list.mem_sections_length + theorem list.rel_sections Modified src/data/list/sigma.lean Added src/data/list/tfae.lean + theorem list.tfae.out + def list.tfae + theorem list.tfae_cons_cons + theorem list.tfae_cons_of_mem + theorem list.tfae_nil + theorem list.tfae_of_cycle + theorem list.tfae_of_forall + theorem list.tfae_singleton Added src/data/list/zip.lean + theorem list.length_revzip + theorem list.length_zip + theorem list.mem_zip + theorem list.reverse_revzip + theorem list.revzip_map_fst + theorem list.revzip_map_snd + theorem list.revzip_swap + theorem list.unzip_cons + theorem list.unzip_eq_map + theorem list.unzip_left + theorem list.unzip_nil + theorem list.unzip_revzip + theorem list.unzip_right + theorem list.unzip_swap + theorem list.unzip_zip + theorem list.unzip_zip_left + theorem list.unzip_zip_right + theorem list.zip_append + theorem list.zip_cons_cons + theorem list.zip_map' + theorem list.zip_map + theorem list.zip_map_left + theorem list.zip_map_right + theorem list.zip_nil_left + theorem list.zip_nil_right + theorem list.zip_swap + theorem list.zip_unzip Modified src/data/multiset.lean Modified src/data/nat/modeq.lean Modified src/data/vector2.lean Modified src/group_theory/sylow.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/tfae.lean 2020-04-09 00:00:42 e4e483e Bugfix for norm num when testing divisibility of integers (#2355) they were assumed nats somehow ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2020-04-08 21:12:22 c3d9cf9 feat(analysis/analytic/basic): change origin of power series (#2327) * feat(analysis/analytic/basic): move basepoint of power series * docstring * Update src/analysis/analytic/basic.lean Co-Authored-By: Scott Morrison * Update src/analysis/analytic/basic.lean Co-Authored-By: Scott Morrison * Update src/analysis/analytic/basic.lean Co-Authored-By: Scott Morrison ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + def formal_multilinear_series.change_origin + theorem formal_multilinear_series.change_origin_eval + theorem formal_multilinear_series.change_origin_has_sum + theorem formal_multilinear_series.change_origin_radius + theorem formal_multilinear_series.change_origin_summable_aux1 + theorem formal_multilinear_series.change_origin_summable_aux2 + theorem formal_multilinear_series.change_origin_summable_aux3 + theorem has_fpower_series_on_ball.analytic_at_of_mem + theorem has_fpower_series_on_ball.change_origin + theorem is_open_analytic_at Modified src/topology/instances/ennreal.lean 2020-04-08 18:19:54 dae7154 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-08 17:46:11 55d430c feat(tactic/linter): add decidable_classical linter (#2352) * feat(tactic/linter): add decidable_classical linter * docstring * cleanup * fix build, cleanup * fix test * Update src/tactic/lint/type_classes.lean Co-Authored-By: Scott Morrison * Update src/tactic/lint/type_classes.lean Co-Authored-By: Scott Morrison * Update src/tactic/lint/default.lean Co-Authored-By: Scott Morrison * Update src/tactic/lint/type_classes.lean Co-Authored-By: Scott Morrison * Update src/data/dfinsupp.lean Co-Authored-By: Yury G. Kudryashov ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/floor.lean +/- theorem ceil_nonneg +/- theorem lt_nat_ceil +/- theorem nat_ceil_lt_add_one Modified src/algebra/module.lean +/- theorem submodule.sum_mem Modified src/algebra/order.lean +/- theorem decidable.eq_or_lt_of_le +/- theorem decidable.le_iff_le_iff_lt_iff_lt +/- theorem decidable.le_iff_lt_or_eq +/- theorem decidable.le_imp_le_iff_lt_imp_lt +/- theorem decidable.le_imp_le_of_lt_imp_lt +/- theorem decidable.le_of_not_lt +/- theorem decidable.le_or_lt +/- theorem decidable.lt_or_eq_of_le +/- theorem decidable.lt_or_gt_of_ne +/- theorem decidable.lt_or_le +/- theorem decidable.lt_trichotomy +/- theorem decidable.ne_iff_lt_or_gt +/- theorem decidable.not_lt Modified src/algebra/pi_instances.lean +/- theorem finset.prod_apply Modified src/analysis/convex/specific_functions.lean Modified src/category_theory/graded_object.lean Modified src/computability/halting.lean Modified src/data/dfinsupp.lean +/- theorem dfinsupp.map_range_def +/- theorem dfinsupp.subtype_domain_sum +/- theorem dfinsupp.support_zip_with +/- theorem dfinsupp.zip_with_def Modified src/data/equiv/denumerable.lean Modified src/data/finset.lean +/- theorem finset.card_eq_of_bijective +/- theorem finset.card_le_card_of_inj_on +/- theorem finset.card_le_of_inj_on +/- theorem finset.disjoint_bind_left +/- theorem finset.disjoint_bind_right +/- theorem finset.fold_op_rel_iff_and +/- theorem finset.fold_op_rel_iff_or +/- theorem finset.singleton_bind +/- theorem finset.subset_image_iff +/- theorem finset.subset_union_elim Modified src/data/hash_map.lean +/- theorem hash_map.valid.modify Modified src/data/int/basic.lean +/- theorem int.div_eq_div_of_mul_eq_mul +/- theorem int.eq_mul_div_of_mul_eq_mul_of_dvd_left +/- theorem int.exists_greatest_of_bdd +/- theorem int.exists_least_of_bdd Modified src/data/list/sigma.lean Modified src/data/matrix/pequiv.lean +/- theorem pequiv.equiv_to_pequiv_to_matrix +/- theorem pequiv.matrix_mul_apply +/- theorem pequiv.mul_matrix_apply +/- theorem pequiv.single_mul_single +/- theorem pequiv.single_mul_single_of_ne +/- theorem pequiv.single_mul_single_right +/- def pequiv.to_matrix +/- theorem pequiv.to_matrix_bot +/- theorem pequiv.to_matrix_injective +/- theorem pequiv.to_matrix_refl +/- theorem pequiv.to_matrix_swap +/- theorem pequiv.to_matrix_symm +/- theorem pequiv.to_matrix_trans +/- theorem pequiv.to_pequiv_mul_matrix Modified src/data/multiset.lean +/- theorem multiset.length_ndinsert_of_mem +/- theorem multiset.length_ndinsert_of_not_mem Modified src/data/pequiv.lean +/- theorem pequiv.single_trans_of_eq_none +/- theorem pequiv.trans_single_of_eq_none Modified src/data/rat/basic.lean Modified src/data/real/basic.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.sum_lt_top +/- theorem ennreal.sum_lt_top_iff +/- theorem ennreal.to_nnreal_sum +/- theorem ennreal.to_real_sum Modified src/data/set/basic.lean +/- theorem set.not_not_mem Modified src/field_theory/finite.lean +/- theorem card_nth_roots_subgroup_units +/- theorem finite_field.card_units +/- theorem finite_field.pow_card_sub_one_eq_one +/- theorem finite_field.prod_univ_units_id_eq_neg_one Modified src/group_theory/order_of_element.lean +/- theorem order_of_pos Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.supported_eq_span_single Modified src/linear_algebra/multilinear.lean +/- theorem multilinear_map.sum_apply Modified src/logic/basic.lean +/- theorem not_exists_not +/- theorem not_forall_not +/- theorem not_imp +/- theorem not_not Modified src/ring_theory/adjoin.lean +/- theorem algebra.adjoin_eq_range +/- theorem algebra.adjoin_singleton_eq_range Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/multiplicity.lean +/- theorem multiplicity.finset.prod Modified src/ring_theory/unique_factorization_domain.lean +/- theorem associates.factor_set.sup_add_inf_eq_add +/- def associates.{u} Modified src/tactic/lint/default.lean Modified src/tactic/lint/type_classes.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/push_neg.lean +/- theorem imp_of_not_imp_not Modified src/topology/algebra/multilinear.lean +/- theorem continuous_multilinear_map.sum_apply Modified src/topology/separation.lean +/- theorem exists_open_singleton_of_fintype Modified test/push_neg.lean 2020-04-08 15:10:31 65a5dc0 feat(data/support): define support of a function and prove some properties (#2340) * feat(data/support): define support of a function and prove some properties * Add `support_mul'` for `group_with_zero` ESTIMATED CHANGES Modified src/data/indicator_function.lean + theorem set.support_indicator Added src/data/support.lean + theorem function.nmem_support + def function.support + theorem function.support_add + theorem function.support_binop_subset + theorem function.support_comp' + theorem function.support_comp + theorem function.support_comp_eq' + theorem function.support_comp_eq + theorem function.support_div + theorem function.support_inf + theorem function.support_infi + theorem function.support_inv + theorem function.support_max + theorem function.support_min + theorem function.support_mul' + theorem function.support_mul + theorem function.support_neg + theorem function.support_prod + theorem function.support_sub + theorem function.support_sum + theorem function.support_sup + theorem function.support_supr 2020-04-08 12:29:19 b550c16 fix(tactic/solve_by_elim): fix metavariable bug from #2269 (#2289) * chore(tactic/solve_by_elim): fix metavariable bug from #2269 * tests * forgot to save file? * fix bug, and tweak docs * fix * oops, remove stray * provide both `lemmas` and `lemma_thunks` fields * fix * fix * remove code duplication * fix indenting * add comments about evaluating thunks in mk_assumption_set ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/solve_by_elim.lean Modified test/solve_by_elim.lean 2020-04-08 09:55:55 bd21cff feat(data/list/basic): some lemmas about sum/head/tail for list ℕ (#2342) * feat(data/list/basic): some lemmas about sum/head/tail for list ℕ * Add comment * remove lemma, moving to another PR * suggestion from review ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.head_add_tail_sum + theorem list.head_le_sum + theorem list.head_mul_tail_prod' + theorem list.tail_sum Modified src/data/option/basic.lean + theorem option.get_or_else_some 2020-04-08 07:20:14 cb8d8ac feat (data/list/basic): lemmas about prod and take (#2345) * feat (data/list/basic): lemmas about prod and take * move lemma * one more * using to_additive properly ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.length_pos_of_prod_ne_one + theorem list.length_pos_of_sum_ne_zero + theorem list.length_pos_of_sum_pos + theorem list.prod_take_mul_prod_drop + theorem list.prod_take_succ + theorem list.sum_take_add_sum_drop + theorem list.sum_take_succ 2020-04-08 01:12:13 732f710 feat(data/list/basic): nth_le 0 = head (#2350) * feat(data/list/basic): nth_le 0 = head * oops ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_le_zero 2020-04-07 22:38:07 0e2970c feat(algebra/group/basic.lean): add inv_mul_eq_one (#2349) ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem inv_mul_eq_one 2020-04-07 19:50:30 34ae62a feat(algebra/homology): functoriality of induced maps on cycles (#2338) * feat(algebra/homology): Functoriality of induced maps on cycles * Rename cycles to cocycles, induced_maps_on_cocycles_functor to kernels_functor * update names ESTIMATED CHANGES Modified src/algebra/homology/homology.lean - def cochain_complex.induced_map_on_cycles + def cochain_complex.kernel_functor + def cochain_complex.kernel_map + theorem cochain_complex.kernel_map_comp + theorem cochain_complex.kernel_map_condition + theorem cochain_complex.kernel_map_id Modified src/category_theory/differential_object.lean + theorem category_theory.differential_object.zero_f Modified src/category_theory/graded_object.lean + theorem category_theory.graded_object.zero_apply 2020-04-07 17:07:59 e2fa8b2 chore(test/refine_struct): remove dead code (#2348) ESTIMATED CHANGES Modified test/refine_struct.lean 2020-04-07 16:06:37 abccc30 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-07 15:31:37 6f75c57 refactor(measure_theory/borel): `borel` is not an `instance` (#2326) Redo Borel spaces in a way similar to `closed_order_topology`/`order_topology`. * `borel` is no longer an `instance`; * define typeclass `opens_measurable_space` for a space with `measurable_space` and `topological_space` structures such that all open sets are measurable; * define typeclass `borel_space` for a space with `measurable_space` and `topological_space` structures such that `measurable_space` structure is equal to `borel`; * use dot syntax in more cases; * review some proofs that started to fail because of this change. ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.option_is_some_equiv Modified src/measure_theory/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.smul_mk Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean +/- def borel - theorem borel_eq_subtype + theorem borel_eq_top_of_discrete + theorem borel_eq_top_of_encodable - theorem borel_induced - theorem borel_prod - theorem borel_prod_le + theorem continuous.borel_measurable + theorem continuous.measurable2 + theorem continuous.measurable - def ennreal.ennreal_equiv_nnreal - theorem ennreal.measurable.add - theorem ennreal.measurable.mul - theorem ennreal.measurable.sub + theorem finset.measurable_prod +/- def homemorph.to_measurable_equiv + def homeomorph.to_measurable_equiv + theorem is_closed.is_measurable +/- theorem is_measurable_Icc +/- theorem is_measurable_Ici +/- theorem is_measurable_Iic +/- theorem is_measurable_Iio +/- theorem is_measurable_Ioi +/- theorem is_measurable_Ioo +/- theorem is_measurable_ball + theorem is_measurable_closed_ball + theorem is_measurable_eball + theorem is_measurable_eq +/- theorem is_measurable_interior +/- theorem is_measurable_interval + theorem is_measurable_le' +/- theorem is_measurable_le - theorem is_measurable_of_is_closed - theorem is_measurable_of_is_open + theorem is_open.is_measurable - theorem measurable.add - theorem measurable.coe_nnnorm + theorem measurable.const_smul +/- theorem measurable.dist +/- theorem measurable.edist + theorem measurable.ennnorm + theorem measurable.ennreal_add + theorem measurable.ennreal_coe + theorem measurable.ennreal_mul + theorem measurable.ennreal_of_real + theorem measurable.ennreal_sub - theorem measurable.infi +/- theorem measurable.infi_Prop + theorem measurable.inv' + theorem measurable.inv +/- theorem measurable.is_glb +/- theorem measurable.is_lub +/- theorem measurable.max +/- theorem measurable.min +/- theorem measurable.mul - theorem measurable.neg +/- theorem measurable.nndist +/- theorem measurable.nnnorm + theorem measurable.nnreal_coe + theorem measurable.nnreal_of_real +/- theorem measurable.norm + theorem measurable.of_inv - theorem measurable.smul' +/- theorem measurable.smul +/- theorem measurable.sub + theorem measurable.sub_nnreal - theorem measurable.supr +/- theorem measurable.supr_Prop + theorem measurable_binfi + theorem measurable_bsupr - theorem measurable_coe_int_real + theorem measurable_const_smul_iff +/- theorem measurable_dist +/- theorem measurable_edist + def measurable_equiv.ennreal_equiv_nnreal - theorem measurable_finset_sum + theorem measurable_infi + theorem measurable_inv' + theorem measurable_inv + theorem measurable_inv_iff + theorem measurable_mul - theorem measurable_neg_iff +/- theorem measurable_nndist +/- theorem measurable_nnnorm +/- theorem measurable_norm - theorem measurable_of_continuous2 - theorem measurable_of_continuous + theorem measurable_of_continuous_on_compl_singleton - theorem measurable_smul_iff + theorem measurable_supr - theorem nnreal.measurable.add - theorem nnreal.measurable.mul - theorem nnreal.measurable.sub - theorem nnreal.measurable_of_real + theorem prod_le_borel_prod Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/indicator_function.lean Modified src/measure_theory/integration.lean + theorem measure_theory.le_infi2_lintegral + theorem measure_theory.le_infi_lintegral + theorem measure_theory.lintegral_congr + theorem measure_theory.lintegral_infi - theorem measure_theory.lintegral_le_lintegral + theorem measure_theory.lintegral_mono + theorem measure_theory.monotone_lintegral + theorem measure_theory.mul_volume_ge_le_lintegral +/- theorem measure_theory.simple_func.approx_apply +/- theorem measure_theory.simple_func.approx_comp + theorem measure_theory.supr2_lintegral_le + theorem measure_theory.supr_lintegral_le + theorem measure_theory.volume_ge_le_lintegral_div Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.ae_eq_fun.integrable.add +/- theorem measure_theory.ae_eq_fun.integrable.sub +/- theorem measure_theory.ae_eq_fun.integrable_mk +/- theorem measure_theory.integrable.add +/- theorem measure_theory.integrable.sub +/- theorem measure_theory.integrable_finset_sum +/- theorem measure_theory.l1.of_fun_smul +/- def measure_theory.l1 +/- theorem measure_theory.lintegral_edist_lt_top +/- theorem measure_theory.lintegral_edist_triangle +/- theorem measure_theory.lintegral_nnnorm_add +/- theorem measure_theory.tendsto_lintegral_norm_of_dominated_convergence Modified src/measure_theory/measurable_space.lean + theorem is_measurable.congr + theorem is_measurable.of_compl + theorem is_measurable.prod - theorem is_measurable_set_prod + theorem measurable.mono + theorem measurable.subtype_coe - theorem measurable.subtype_val + theorem measurable_from_top + theorem measurable_of_measurable_on_compl_singleton + theorem measurable_to_encodable + theorem subsingleton.is_measurable + theorem subsingleton.measurable Modified src/measure_theory/set_integral.lean +/- theorem integrable_on.add +/- theorem integrable_on.sub +/- theorem integrable_on.union +/- theorem measurable_on_singleton Modified src/measure_theory/simple_func_dense.lean Modified src/order/complete_lattice.lean + theorem monotone.map_infi2_le + theorem monotone.map_infi_le + theorem monotone.map_supr2_ge + theorem monotone.map_supr_ge Modified src/topology/homeomorph.lean + def homeomorph.set_congr Modified src/topology/instances/ennreal.lean + theorem ennreal.continuous_on_to_nnreal + def ennreal.lt_top_homeomorph_nnreal + def ennreal.ne_top_homeomorph_nnreal 2020-04-07 12:40:05 97c4302 feat(data/list/basic): add map_take/drop_take (#2344) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.map_drop + theorem list.map_take 2020-04-07 10:10:41 2f2e016 chore(data/list/basic): rename take_all -> take_length (#2343) * chore(data/list/basic): rename take_all -> take_length * also rename drop_all ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.drop_all + theorem list.drop_length - theorem list.take_all + theorem list.take_length 2020-04-07 08:48:42 d936c28 feat(data/real/nnreal): coe_max and coe_min (#2346) ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.coe_max + theorem nnreal.coe_min 2020-04-07 06:44:18 c85453d fix(tactic/refine_struct): don't add unnecessary `eq.mpr` or `id` (#2319) * fix(tactic/interactive): don't unfold non-Prop goals The old behaviour caused `eq.mpr`'s in `pi_instance` output. * add a test file * move test * actually move test * Update test/refine_struct.lean * test: fix compile * Apply suggestions from code review Co-Authored-By: Gabriel Ebner * Try a fix by @gebner and @cipher1024 * Update test/refine_struct.lean Co-Authored-By: Gabriel Ebner * apply Gabriel's suggestion ESTIMATED CHANGES Modified src/tactic/interactive.lean Modified test/refine_struct.lean + structure bar + structure foo 2020-04-07 04:14:25 df64ea9 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-07 03:42:42 60d1457 chore(algebra/big_operators): drop some `decidable_eq` assumptions (#2332) * chore(algebra/big_operators): drop some `decidable_eq` assumptions I wonder why `lint` didn't report them. * Drop unused arguments ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/big_operators.lean +/- theorem finset.prod_comm +/- theorem finset.prod_sum +/- theorem finset.prod_union_inter +/- theorem finset.sum_le_sum_of_ne_zero Modified src/data/finset.lean +/- theorem finset.filter_and +/- theorem finset.filter_not +/- theorem finset.filter_or +/- theorem finset.filter_union_filter_neg_eq Modified src/linear_algebra/matrix.lean +/- theorem matrix.mul_to_lin +/- theorem matrix.rank_vec_mul_vec +/- theorem matrix.trace_mul_comm +/- theorem matrix.trace_transpose_mul 2020-04-06 23:32:14 7628c6c chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-06 23:05:14 48cc0c8 feat(algebra/group_with_zero): groups with a zero element adjoined (#2242) * feat(algebra/group_with_zero*): Basics on groups with a zero adjoined * feat(algebra/group_with_zero*): Basics on groups with a zero adjoined * Make argument implicit * Move inv_eq_zero out of gwz namespace * Partial refactor * Remove open_locale classical * Fix build * Factor out monoid_with_zero * Fix linter errors, hopefully * Fix build * Fix tests * Replace G with G0 * Add spaces around `^` * Add spaces and backticks in docstrings * Fix docstring of `mk0` * Fix statement of inv_eq_iff * Golf inv_injective * Golf inv_eq_zero * Remove the gwz namespace * Fix build ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/field.lean - theorem div_eq_div_iff - theorem div_eq_iff - theorem div_eq_iff_mul_eq - theorem div_eq_inv_mul - theorem div_eq_mul_inv - theorem div_eq_zero_iff - theorem div_mul_comm - theorem div_mul_div_cancel - theorem div_ne_zero - theorem div_ne_zero_iff - theorem div_right_inj - theorem division_ring.inv_comm_of_comm - theorem divp_eq_div - theorem divp_mk0 - theorem eq_div_iff - theorem field.div_div_cancel - theorem field.div_div_div_cancel_right - theorem field.div_right_comm - theorem inv_div - theorem inv_div_left - theorem inv_eq_zero - theorem inv_inv'' - theorem inv_involutive' - theorem mul_comm_div - theorem mul_div_comm - theorem mul_div_right_comm - theorem units.inv_eq_inv - def units.mk0 - theorem units.mk0_coe - theorem units.mk0_inj - theorem units.mk0_val Modified src/algebra/field_power.lean - def fpow - theorem fpow_add - theorem fpow_eq_gpow - theorem fpow_eq_zero - theorem fpow_inv - theorem fpow_mul - theorem fpow_ne_zero_of_ne_zero - theorem fpow_neg - theorem fpow_neg_mul_fpow_self - theorem fpow_neg_succ_of_nat - theorem fpow_of_nat - theorem fpow_one - theorem fpow_sub - theorem fpow_zero - theorem mul_fpow - theorem one_fpow - theorem unit_pow - theorem zero_fpow - theorem zero_gpow Modified src/algebra/geom_sum.lean Modified src/algebra/group_power.lean +/- def add_monoid.smul - theorem div_pow - theorem div_sq_cancel - theorem division_ring.inv_pow - theorem inv_pow' +/- def monoid.pow - theorem one_div_pow - theorem pow_div - theorem pow_inv Added src/algebra/group_with_zero.lean + theorem coe_unit_inv_mul' + theorem coe_unit_mul_inv' + theorem div_div_cancel' + theorem div_div_div_cancel_right' + theorem div_div_div_div_eq' + theorem div_div_eq_div_mul' + theorem div_div_eq_mul_div' + theorem div_eq_div_iff + theorem div_eq_iff + theorem div_eq_iff_mul_eq + theorem div_eq_inv_mul' + theorem div_eq_mul_inv + theorem div_eq_mul_one_div' + theorem div_eq_zero_iff + theorem div_helper' + theorem div_mul_cancel' + theorem div_mul_comm' + theorem div_mul_div' + theorem div_mul_div_cancel' + theorem div_mul_eq_div_mul_one_div' + theorem div_mul_eq_mul_div' + theorem div_mul_eq_mul_div_comm' + theorem div_mul_left' + theorem div_mul_right' + theorem div_ne_zero + theorem div_ne_zero_iff + theorem div_one' + theorem div_right_comm' + theorem div_right_inj' + theorem div_self' + theorem div_zero' + theorem divp_eq_div + theorem divp_mk0 + theorem eq_div_iff + theorem eq_inv_of_mul_left_eq_one' + theorem eq_inv_of_mul_right_eq_one' + theorem eq_mul_inv_of_mul_eq' + theorem eq_of_mul_eq_mul_of_nonzero_left' + theorem eq_of_mul_eq_mul_of_nonzero_right' + theorem eq_of_one_div_eq_one_div' + theorem eq_one_div_of_mul_eq_one' + theorem eq_one_div_of_mul_eq_one_left' + theorem eq_zero_of_one_div_eq_zero' + theorem inv_comm_of_comm' + theorem inv_div + theorem inv_div_left + theorem inv_eq_iff + theorem inv_eq_zero + theorem inv_inj'' + theorem inv_injective' + theorem inv_inv'' + theorem inv_involutive' + theorem inv_mul_cancel' + theorem inv_mul_cancel_assoc_left + theorem inv_mul_cancel_assoc_right + theorem inv_ne_zero' + theorem inv_one' + theorem inv_zero' + theorem mul_comm_div' + theorem mul_div_assoc'' + theorem mul_div_cancel''' + theorem mul_div_cancel'' + theorem mul_div_cancel_left' + theorem mul_div_comm + theorem mul_div_mul_left' + theorem mul_div_mul_right' + theorem mul_div_right_comm + theorem mul_eq_mul_of_div_eq_div' + theorem mul_eq_zero' + theorem mul_eq_zero_iff' + theorem mul_inv'' + theorem mul_inv_cancel' + theorem mul_inv_cancel_assoc_left + theorem mul_inv_cancel_assoc_right + theorem mul_inv_eq_of_eq_mul' + theorem mul_inv_rev' + theorem mul_left_cancel' + theorem mul_ne_zero'' + theorem mul_ne_zero_comm'' + theorem mul_ne_zero_iff + theorem mul_one_div_cancel' + theorem mul_right_cancel' + theorem mul_right_inj' + theorem ne_zero_of_mul_left_eq_one' + theorem ne_zero_of_mul_right_eq_one' + theorem ne_zero_of_one_div_ne_zero' + theorem one_div + theorem one_div_div' + theorem one_div_mul_cancel' + theorem one_div_mul_one_div' + theorem one_div_mul_one_div_rev + theorem one_div_ne_zero' + theorem one_div_one' + theorem one_div_one_div' + theorem unit_ne_zero + theorem units.coe_mk0 + theorem units.inv_eq_inv + def units.mk0 + theorem units.mk0_coe + theorem units.mk0_inj + theorem zero_div' Added src/algebra/group_with_zero_power.lean + theorem div_fpow + theorem div_pow + theorem div_sq_cancel + def fpow + theorem fpow_add + theorem fpow_add_one + theorem fpow_coe_nat + theorem fpow_eq_zero + theorem fpow_inv + theorem fpow_mul' + theorem fpow_mul + theorem fpow_mul_comm + theorem fpow_ne_zero + theorem fpow_ne_zero_of_ne_zero + theorem fpow_neg + theorem fpow_neg_mul_fpow_self + theorem fpow_neg_one + theorem fpow_neg_succ + theorem fpow_neg_succ_of_nat + theorem fpow_of_nat + theorem fpow_one + theorem fpow_one_add + theorem fpow_sub + theorem fpow_zero + theorem inv_fpow + theorem inv_pow' + theorem mul_fpow + theorem one_div_fpow + theorem one_div_pow + theorem one_fpow + theorem pow_eq_zero' + theorem pow_inv_comm' + theorem pow_ne_zero' + theorem pow_sub' + theorem unit_gpow + theorem unit_pow + theorem zero_fpow + theorem zero_pow' Modified src/algebra/ordered_field.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/convex/basic.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/rat/cast.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean + theorem nnreal.ne_iff Modified src/data/zmod/quadratic_reciprocity.lean Modified src/field_theory/finite.lean Modified src/measure_theory/probability_mass_function.lean Modified src/topology/metric_space/antilipschitz.lean Modified src/topology/metric_space/closeds.lean Modified test/ring_exp.lean 2020-04-06 21:01:55 89fdec6 fix(data/finset): add comment (#2336) * doc(data/finset): adding comment * fix(topology/metric_space/basic): comment typo ESTIMATED CHANGES Modified src/data/finset.lean Modified src/topology/metric_space/basic.lean 2020-04-06 18:20:25 7b120a3 feat(data/mv_polynomial): add pderivative_eq_zero_of_not_mem_vars (#2324) * feat(data/mv_polynomial): add pderivative_eq_zero_of_not_mem_vars * Added doc comment for `pderivative.add_monoid_hom` * Fix formatting * fixed issues from review * change begin end to braces. * fix issues from review ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.as_sum + theorem mv_polynomial.mem_support_not_mem_vars_zero + def mv_polynomial.pderivative.add_monoid_hom + theorem mv_polynomial.pderivative.add_monoid_hom_apply + theorem mv_polynomial.pderivative_eq_zero_of_not_mem_vars + theorem mv_polynomial.support_sum_monomial_coeff 2020-04-06 15:34:03 ff910dc feat(topology/bounded_continuous_function): composition of limits when uniform convergence (#2260) * feat(topology/bounded_continuous_function): composition of limits when uniform convergence * better statement * uniform space version * cleanup * fix linter * reviewer's comments ESTIMATED CHANGES Modified src/analysis/analytic/basic.lean + theorem has_fpower_series_on_ball.tendsto_locally_uniformly_on' + theorem has_fpower_series_on_ball.tendsto_locally_uniformly_on + theorem has_fpower_series_on_ball.tendsto_uniformly_on' + theorem has_fpower_series_on_ball.tendsto_uniformly_on + theorem has_fpower_series_on_ball.uniform_geometric_approx - theorem has_fpower_series_on_ball.uniform_limit Modified src/data/real/nnreal.lean + theorem nnreal.val_eq_coe Modified src/topology/basic.lean + theorem filter.eventually.self_of_nhds Modified src/topology/bounded_continuous_function.lean - theorem continuous_at_of_locally_uniform_limit_of_continuous_at - theorem continuous_of_locally_uniform_limit_of_continuous - theorem continuous_of_uniform_limit_of_continuous - theorem continuous_on_of_locally_uniform_limit_of_continuous_on - theorem continuous_on_of_uniform_limit_of_continuous_on - theorem continuous_within_at_of_locally_uniform_limit_of_continuous_within_at Modified src/topology/continuous_on.lean + theorem filter.eventually.self_of_nhds_within Modified src/topology/metric_space/basic.lean + theorem metric.emetric_ball_nnreal + theorem metric.emetric_closed_ball_nnreal + theorem metric.tendsto_locally_uniformly_iff + theorem metric.tendsto_locally_uniformly_on_iff + theorem metric.tendsto_uniformly_iff + theorem metric.tendsto_uniformly_on_iff Modified src/topology/metric_space/emetric_space.lean + theorem emetric.tendsto_locally_uniformly_iff + theorem emetric.tendsto_locally_uniformly_on_iff + theorem emetric.tendsto_uniformly_iff + theorem emetric.tendsto_uniformly_on_iff Modified src/topology/uniform_space/basic.lean - theorem mem_nhds_uniformity_iff + theorem mem_nhds_uniformity_iff_left + theorem mem_nhds_uniformity_iff_right + theorem uniform.continuous_at_iff'_left + theorem uniform.continuous_at_iff'_right + theorem uniform.continuous_iff'_left + theorem uniform.continuous_iff'_right + theorem uniform.continuous_on_iff'_left + theorem uniform.continuous_on_iff'_right + theorem uniform.continuous_within_at_iff'_left + theorem uniform.continuous_within_at_iff'_right + theorem uniform.tendsto_nhds_left + theorem uniform.tendsto_nhds_right Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/separation.lean Added src/topology/uniform_space/uniform_convergence.lean + theorem continuous_at_of_locally_uniform_approx_of_continuous_at + theorem continuous_of_locally_uniform_approx_of_continuous + theorem continuous_of_uniform_approx_of_continuous + theorem continuous_on_of_locally_uniform_approx_of_continuous_on + theorem continuous_on_of_uniform_approx_of_continuous_on + theorem continuous_within_at_of_locally_uniform_approx_of_continuous_within_at + theorem tendsto_comp_of_locally_uniform_limit + theorem tendsto_comp_of_locally_uniform_limit_within + theorem tendsto_locally_uniformly.comp + theorem tendsto_locally_uniformly.continuous + theorem tendsto_locally_uniformly.tendsto_comp + def tendsto_locally_uniformly + theorem tendsto_locally_uniformly_on.comp + theorem tendsto_locally_uniformly_on.continuous_on + theorem tendsto_locally_uniformly_on.mono + theorem tendsto_locally_uniformly_on.tendsto_comp + def tendsto_locally_uniformly_on + theorem tendsto_locally_uniformly_on_univ + theorem tendsto_uniformly.comp + theorem tendsto_uniformly.continuous + theorem tendsto_uniformly.tendsto_comp + theorem tendsto_uniformly.tendsto_locally_uniformly + theorem tendsto_uniformly.tendsto_uniformly_on + def tendsto_uniformly + theorem tendsto_uniformly_on.comp + theorem tendsto_uniformly_on.continuous_on + theorem tendsto_uniformly_on.mono + theorem tendsto_uniformly_on.tendsto_comp + theorem tendsto_uniformly_on.tendsto_locally_uniformly_on + def tendsto_uniformly_on + theorem tendsto_uniformly_on_univ 2020-04-06 12:39:52 572fad1 chore(topology/instances/ennreal): prove `tendsto_iff_edist_tendsto_0` (#2333) ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem tendsto_iff_edist_tendsto_0 2020-04-06 10:15:13 3d60e13 chore(algebra/field): move some lemmas from `field` to `division_ring` (#2331) ESTIMATED CHANGES Modified src/algebra/field.lean 2020-04-05 23:39:22 a2e7639 feat(order/filter): more eventually/frequently API (#2330) * feat(order/filter): more eventually/frequently API * Update after review * Add simp attribute * Update src/order/filter/basic.lean Co-Authored-By: Yury G. Kudryashov * Update src/order/filter/basic.lean Co-Authored-By: Yury G. Kudryashov ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually_comap + theorem filter.eventually_iff + theorem filter.eventually_map + theorem filter.eventually_of_mem + theorem filter.frequently_at_top' + theorem filter.frequently_comap + theorem filter.frequently_iff + theorem filter.frequently_map + theorem filter.inf_ne_bot_iff + theorem filter.inf_ne_bot_iff_frequently_left + theorem filter.inf_ne_bot_iff_frequently_right 2020-04-05 17:46:07 26bf273 feat(logic/embedding): embedding punit/prod (#2315) * feat(logic/embedding): embedding punit/prod * renaming to sectl * Revert disambiguations no longer needed ESTIMATED CHANGES Modified src/category_theory/products/basic.lean - def category_theory.prod.inl - def category_theory.prod.inr + def category_theory.prod.sectl + def category_theory.prod.sectr +/- theorem category_theory.prod_id_fst +/- theorem category_theory.prod_id_snd Modified src/logic/embedding.lean + theorem function.embedding.equiv_symm_to_embedding_trans_to_embedding + theorem function.embedding.equiv_to_embedding_trans_symm_to_embedding + def function.embedding.punit + def function.embedding.sectl + def function.embedding.sectr 2020-04-05 05:53:08 23681c3 feat(tactic/linarith): split conjunctions in hypotheses (#2320) * feat(tactic/linarith): split conjunctions in hypotheses * update doc ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2020-04-04 17:59:00 dea8bd4 feat(*/multilinear): more material (#2197) * feat(*/multilinear): more material * improvements * docstring * elaboration strategy * remove begin ... end * fix build * linter ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.continuous_eval_left + theorem continuous_multilinear_map.has_sum_eval + theorem continuous_multilinear_map.norm_restr + def continuous_multilinear_map.restr + theorem multilinear_map.restr_norm_le Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.map_sum + theorem multilinear_map.map_sum_finset + theorem multilinear_map.map_sum_finset_aux + theorem multilinear_map.sum_apply Modified src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.map_sum + theorem continuous_multilinear_map.map_sum_finset + theorem continuous_multilinear_map.sum_apply 2020-04-04 16:43:46 8406896 chore(ci): always push release to azure (#2321) PR #2048 changed the CI so that olean caches are not pushed to Azure if a later commit on the same branch occurs. The reasoning was that it was unlikely that anyone would fetch those caches. That's changed as of #2278, since `fetch_olean_cache.sh` now looks for caches from commits earlier in the history. This means that currently, we can observe the following wasteful sequence of events in several PRs (e.g. #2258): 1. commit A gets pushed to a certain branch and CI_A starts. 2. While CI_A is still running the `leanpkg build` step, commit B is pushed and CI_B starts. 3. CI_A finishes `leanpkg build` but doesn't upload its cache to Azure because of #2048 4. Now commit C is pushed and can't use the results of CI_A 5. CI_B finishes `leanpkg build` but doesn't upload its cache 6. Commit D is pushed and can't use the results of CI_A or CI_B ... (This can keep happening as long as the next commit arrives before the most recent CI uploads to Azure). I also cleaned up some stuff that was left over from when we ran the build on both "pr" and "push" events. ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-04-04 08:11:40 63aa8b1 feat(data/mv_polynomial): add partial derivatives (#2298) * feat(data/mv_polynomial): add partial derivatives * Added suggestions from PR. * trying to placate simp linter * Updated implementation of `pderivative` * formatting suggestions from Bryan Co-Authored-By: Bryan Gin-ge Chen * Suggestions from review. * rearrange aux lemmas ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.add_sub_single_one + theorem finsupp.erase_add + theorem finsupp.erase_single + theorem finsupp.erase_single_ne + theorem finsupp.single_sub + theorem finsupp.sub_single_one_add Modified src/data/mv_polynomial.lean + theorem mv_polynomial.induction_on' + theorem mv_polynomial.monomial_add + theorem mv_polynomial.monomial_mul + theorem mv_polynomial.monomial_zero + def mv_polynomial.pderivative + theorem mv_polynomial.pderivative_C + theorem mv_polynomial.pderivative_C_mul + theorem mv_polynomial.pderivative_add + theorem mv_polynomial.pderivative_monomial + theorem mv_polynomial.pderivative_monomial_mul + theorem mv_polynomial.pderivative_monomial_single + theorem mv_polynomial.pderivative_mul + theorem mv_polynomial.pderivative_zero + theorem mv_polynomial.single_eq_C_mul_X + theorem mv_polynomial.sum_monomial Modified src/data/nat/basic.lean + theorem nat.add_succ_sub_one + theorem nat.succ_add_sub_one 2020-04-04 05:20:52 906874e feat(category_theory): quotient categories (#2310) This constructs the quotient of a category by an arbitrary family of relations on its hom-sets. Analogous to "quotient of a group by the normal closure of a subset", as opposed to "quotient of a group by a normal subgroup". The plan is to eventually use this together with the path category to construct the free groupoid on a graph. ESTIMATED CHANGES Added src/category_theory/quotient.lean + def category_theory.quotient.comp + inductive category_theory.quotient.comp_closure + theorem category_theory.quotient.comp_left + theorem category_theory.quotient.comp_mk + theorem category_theory.quotient.comp_right + def category_theory.quotient.functor + def category_theory.quotient.hom + def category_theory.quotient.lift.is_lift + theorem category_theory.quotient.lift.is_lift_hom + theorem category_theory.quotient.lift.is_lift_inv + def category_theory.quotient.lift + structure category_theory.quotient 2020-04-03 12:34:08 a590d4b feat(group_theory/monoid_localization): some homs induced on localizations: lift, map (#2118) * should I be changing and committing toml idk * initial monoid loc lemmas * responding to PR comments * removing bad @[simp] * inhabited instances * remove #lint * additive inhabited instance * using is_unit & is_add_unit * doc string * remove simp * submonoid.monoid_loc... -> submonoid.localization * submonoid.monoid_loc... -> submonoid.localization * generalize inhabited instance * remove inhabited instance * 2nd section * docs and linting * removing questionable `@[simp]s` * removing away * adding lemmas, removing 'include' * removing import * responding to PR comments * use eq_of_eq to prove comp_eq_of_eq * name change * trying to update mathlib * make lemma names consistent * Update src/algebra/group/is_unit.lean * Update src/algebra/group/is_unit.lean * fix build * documentation and minor changes * spacing * fix build * applying comments ESTIMATED CHANGES Modified src/algebra/group/is_unit.lean +/- theorem is_unit.coe_lift_right + theorem is_unit.lift_right_inv_mul +/- theorem is_unit.map + theorem is_unit.mul_lift_right_inv +/- theorem is_unit_iff_exists_inv' +/- theorem is_unit_iff_exists_inv + theorem is_unit_of_mul_eq_one - theorem is_unit_of_mul_one +/- theorem is_unit_unit Modified src/algebra/group/units_hom.lean +/- theorem units.coe_lift_right + theorem units.lift_right_inv_mul + theorem units.mul_lift_right_inv Modified src/group_theory/monoid_localization.lean + theorem submonoid.localization_map.comp_eq_of_eq + theorem submonoid.localization_map.comp_mul_equiv_symm_comap_apply + theorem submonoid.localization_map.comp_mul_equiv_symm_map_apply + theorem submonoid.localization_map.epic_of_localization_map +/- theorem submonoid.localization_map.eq_mk'_iff_mul_eq + theorem submonoid.localization_map.eq_of_eq - theorem submonoid.localization_map.exists_of_sec +/- theorem submonoid.localization_map.exists_of_sec_mk' + theorem submonoid.localization_map.ext + theorem submonoid.localization_map.ext_iff +/- theorem submonoid.localization_map.inv_inj +/- theorem submonoid.localization_map.inv_unique + theorem submonoid.localization_map.is_unit_comp + theorem submonoid.localization_map.lift_comp + theorem submonoid.localization_map.lift_eq + theorem submonoid.localization_map.lift_eq_iff + theorem submonoid.localization_map.lift_id + theorem submonoid.localization_map.lift_injective_iff + theorem submonoid.localization_map.lift_left_inverse + theorem submonoid.localization_map.lift_mk' + theorem submonoid.localization_map.lift_mk'_spec + theorem submonoid.localization_map.lift_mul_left + theorem submonoid.localization_map.lift_mul_right + theorem submonoid.localization_map.lift_of_comp + theorem submonoid.localization_map.lift_spec + theorem submonoid.localization_map.lift_spec_mul + theorem submonoid.localization_map.lift_surjective_iff + theorem submonoid.localization_map.lift_unique + theorem submonoid.localization_map.map_comp + theorem submonoid.localization_map.map_comp_map + theorem submonoid.localization_map.map_eq + theorem submonoid.localization_map.map_id + theorem submonoid.localization_map.map_map + theorem submonoid.localization_map.map_mk' + theorem submonoid.localization_map.map_mul_left + theorem submonoid.localization_map.map_mul_right + theorem submonoid.localization_map.map_spec +/- theorem submonoid.localization_map.mk'_eq_iff_eq_mul +/- theorem submonoid.localization_map.mk'_mul +/- theorem submonoid.localization_map.mk'_mul_cancel_left +/- theorem submonoid.localization_map.mk'_mul_cancel_right +/- theorem submonoid.localization_map.mk'_mul_eq_mk'_of_mul +/- theorem submonoid.localization_map.mk'_sec + theorem submonoid.localization_map.mul_equiv_of_localizations_apply + theorem submonoid.localization_map.mul_equiv_of_localizations_symm_apply + theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq + theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map + theorem submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply + theorem submonoid.localization_map.mul_equiv_of_mul_equiv_mk' + theorem submonoid.localization_map.mul_equiv_of_to_mul_equiv + theorem submonoid.localization_map.mul_equiv_of_to_mul_equiv_apply +/- theorem submonoid.localization_map.mul_inv +/- theorem submonoid.localization_map.mul_inv_left +/- theorem submonoid.localization_map.mul_inv_right +/- theorem submonoid.localization_map.mul_mk'_eq_mk'_of_mul +/- theorem submonoid.localization_map.mul_mk'_one_eq_mk' + def submonoid.localization_map.of_mul_equiv + theorem submonoid.localization_map.of_mul_equiv_apply + theorem submonoid.localization_map.of_mul_equiv_eq + theorem submonoid.localization_map.of_mul_equiv_id +/- theorem submonoid.localization_map.sec_spec' +/- theorem submonoid.localization_map.sec_spec + theorem submonoid.localization_map.symm_of_mul_equiv_apply + theorem submonoid.localization_map.symm_to_mul_equiv_apply + theorem submonoid.localization_map.to_fun_inj + def submonoid.localization_map.to_mul_equiv + theorem submonoid.localization_map.to_mul_equiv_apply + theorem submonoid.localization_map.to_mul_equiv_comp + theorem submonoid.localization_map.to_mul_equiv_eq + theorem submonoid.localization_map.to_mul_equiv_eq_iff_eq + theorem submonoid.localization_map.to_mul_equiv_id + theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv + theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_apply + theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_of_mul_equiv + theorem submonoid.localization_map.to_mul_equiv_of_mul_equiv_of_mul_equiv_apply Modified src/group_theory/submonoid.lean + theorem monoid_hom.restrict_eq Modified src/ring_theory/ideals.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series.lean 2020-04-03 08:57:48 6af5901 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-03 08:24:57 8af4bb8 refactor(tactic/lint): split into multiple files (#2299) The `lint.lean` file is getting too long for me to comfortably navigate. This PR splits the file up into several parts: * `tactic.lint.basic` defining the `linter` structure and the `@[linter]` and `@[nolint]` attributes * `tactic.lint.frontend` defined the functions to run the linters and the various `#lint` commands * The linters are split into three separate files, the simp linters, the type class linters, and the rest. * `tactic.lint` imports all of the files above so `import tactic.lint` still works as before ESTIMATED CHANGES Deleted src/tactic/lint.lean - theorem add_zero - theorem zero_add_zero Added src/tactic/lint/basic.lean Added src/tactic/lint/default.lean Added src/tactic/lint/frontend.lean Added src/tactic/lint/misc.lean Added src/tactic/lint/simp.lean + theorem add_zero + theorem zero_add_zero Added src/tactic/lint/type_classes.lean Modified test/lint.lean 2020-04-03 06:55:45 cb0a1b5 feat(order/filter): add lemmas about `∀ᶠ`, `∃ᶠ` and logic operations (#2314) * feat(order/filter): add lemmas about `∀ᶠ`, `∃ᶠ` and logic operations * Remove `@[congr]` * Apply suggestions from code review Co-Authored-By: Gabriel Ebner ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean + theorem measure_theory.all_ae_and_iff + theorem measure_theory.all_ae_imp_distrib_left + theorem measure_theory.all_ae_or_distrib_left + theorem measure_theory.all_ae_or_distrib_right + theorem measure_theory.volume_zero_iff_all_ae_nmem Modified src/order/filter/basic.lean +/- theorem filter.eventually.congr - theorem filter.eventually.congr_iff + theorem filter.eventually_and + theorem filter.eventually_congr + theorem filter.eventually_const +/- theorem filter.eventually_false_iff_eq_bot + theorem filter.eventually_imp_distrib_left + theorem filter.eventually_imp_distrib_right + theorem filter.eventually_or_distrib_left + theorem filter.eventually_or_distrib_right +/- theorem filter.frequently_bot + theorem filter.frequently_const +/- theorem filter.frequently_false + theorem filter.frequently_imp_distrib + theorem filter.frequently_imp_distrib_left + theorem filter.frequently_imp_distrib_right + theorem filter.frequently_or_distrib + theorem filter.frequently_or_distrib_left + theorem filter.frequently_or_distrib_right +/- theorem filter.frequently_true_iff_ne_bot Modified src/order/liminf_limsup.lean 2020-04-03 04:11:38 1b24e0a chore(test/*): move tests into individual files (#2317) ESTIMATED CHANGES Added test/back_chaining.lean + theorem inter_def + theorem subset_def + theorem subset_inter + theorem union_def + theorem union_subset Added test/choose.lean Modified test/coinductive.lean Modified test/examples.lean - inductive either - def ex - theorem inter_def - structure my_struct2 - structure my_struct - inductive my_tree - inductive rec_data3 - theorem subset_def - theorem subset_inter - theorem union_def - theorem union_subset - def x Modified test/ext.lean - def my_bar - def my_foo Added test/refine_struct.lean + def my_bar + def my_foo Added test/traversable.lean + inductive either + def ex + structure my_struct2 + structure my_struct + inductive my_tree + inductive rec_data3 + def x 2020-04-02 19:25:32 d3b8622 fix(tactic/lint): simp_nf: do not ignore errors (#2266) This PR fixes some bugs in the `simp_nf` linter. Previously it ignored all errors (from failing tactics). I've changed this so that errors from linters are handled centrally and reported as linter warnings. The `simp_is_conditional` function was also broken. As usual, new linters find new issues: 1. Apparently Lean sometimes throws away simp lemmas. https://github.com/leanprover-community/lean/issues/163 2. Some types define `has_coe` but have an incorrect `has_coe_to_fun`, causing the simplifier to loop `⇑f a = ⇑↑f a = ⇑f a`. See the new library note: ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem is_ring_hom.map_eq_zero +/- theorem is_ring_hom.map_ne_zero Modified src/category_theory/monoidal/functorial.lean Modified src/data/indicator_function.lean +/- theorem set.indicator_apply Modified src/data/set/basic.lean +/- theorem set.ne_empty_iff_nonempty Modified src/linear_algebra/basic.lean Modified src/logic/basic.lean Modified src/order/order_iso.lean +/- theorem order_iso.coe_coe_fn Modified src/set_theory/ordinal.lean - theorem initial_seg.of_iso_apply Modified src/tactic/core.lean Modified src/tactic/lint.lean Modified src/topology/algebra/module.lean Modified src/topology/basic.lean - theorem subsingleton.is_closed - theorem subsingleton.is_open Modified src/topology/order.lean + theorem is_closed_discrete 2020-04-02 16:19:33 654533f feat(logic/basic): a few lemmas about `exists_unique` (#2283) The goal is to be able to deal with formulas like `∃! x ∈ s, p x`. Lean parses them as `∃! x, ∃! (hx : x ∈ s), p x`. While this is equivalent to `∃! x, x ∈ s ∧ p x`, it is not defeq to this formula. ESTIMATED CHANGES Modified src/logic/basic.lean + theorem exists_unique.elim2 + theorem exists_unique.exists2 + theorem exists_unique.exists + theorem exists_unique.intro2 + theorem exists_unique.unique2 + theorem exists_unique.unique + theorem exists_unique_iff_exists 2020-04-02 13:55:30 a88356f chore(topology/metric_space): use dot notation (#2313) * in `continuous.dist` and `continuous.edist`; * in `tendsto.dist` and `tendsto.edist`. ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/ennreal.lean + theorem continuous.edist - theorem continuous_edist' +/- theorem continuous_edist + theorem filter.tendsto.edist - theorem tendsto_edist Modified src/topology/metric_space/basic.lean + theorem continuous.dist + theorem continuous.nndist - theorem continuous_dist' +/- theorem continuous_dist - theorem continuous_nndist' +/- theorem continuous_nndist + theorem filter.tendsto.dist + theorem filter.tendsto.nndist - theorem tendsto_dist - theorem tendsto_nndist' - theorem uniform_continuous_nndist' + theorem uniform_continuous_nndist 2020-04-02 11:19:51 3c27d28 feat(algebra/pi_instances): bundled homs for apply and single (#2186) feat(algebra/pi_instances): bundled homs for apply and single (#2186) This adds some bundled monoid homomorphisms, in particular ``` def monoid_hom.apply (i : I) : (Π i, f i) →* f i := ... ``` and ``` def add_monoid_hom.single (i : I) : f i →+ Π i, f i := ``` and supporting lemmas. ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem ring_hom.map_sum Modified src/algebra/group/prod.lean Modified src/algebra/pi_instances.lean + theorem add_monoid_hom.functions_ext + def add_monoid_hom.single + theorem add_monoid_hom.single_apply + theorem finset.prod_apply + theorem finset.univ_sum_single + def monoid_hom.apply + theorem monoid_hom.apply_apply + def pi.single + theorem pi.single_eq_of_ne + theorem pi.single_eq_same + def ring_hom.apply + theorem ring_hom.apply_apply + theorem ring_hom.functions_ext 2020-04-02 08:17:59 313cc2f chore(category_theory/concrete_category): take an instance, rather than extending, category (#2195) chore(category_theory/concrete_category): take an instance, rather than extending, category (#2195) Our current design for `concrete_category` has it extend `category`. This PR changes that so that is takes an instance, instead. I want to do this because I ran into a problem defining `concrete_monoidal_category`, which is meant to be a monoidal category, whose faithful functor to Type is lax monoidal. (The prime example here is `Module R`, where there's a map `F(X) \otimes F(Y) \to F(X \otimes Y)`, but not the other way: here `F(X) \otimes F(Y)` is just the monoidal product in Type, i.e. cartesian product, and the function here is `(x, y) \mapsto x \otimes y`.) Now, `monoidal_category` does not extend `category`, but instead takes a typeclass, so with the old design `concrete_monoidal_category` was going to be a Frankenstein, extending `concrete_category` and taking a `[monoidal_category]` type class. However, when 3.7 landed this went horribly wrong, and even defining `concrete_monoidal_category` caused an unbounded typeclass search. So.... I've made everything simpler, and just not used `extends` at all. It's all just typeclasses. This makes some places a bit more verbose, as we have to summon lots of separate typeclasses, but besides that everything works smoothly. (Note, this PR makes the change to `concrete_category`, but does not yet introduce `concrete_monoidal_category`.) ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/category_theory/concrete_category/basic.lean +/- def category_theory.concrete_category.has_coe_to_sort +/- def category_theory.forget +/- def category_theory.forget₂ +/- def category_theory.has_forget₂.mk' Modified src/category_theory/differential_object.lean Modified src/category_theory/graded_object.lean Modified src/category_theory/limits/cones.lean Modified src/topology/category/TopCommRing.lean Modified src/topology/category/UniformSpace.lean 2020-04-02 05:51:39 f55e3ce refactor(*): move `algebra` below `polynomial` in the `import` chain (#2294) * Move `algebra` below `polynomial` in the `import` chain This PR only moves code and slightly generalizes `mv_polynomial.aeval`. * Fix compile * Update src/data/mv_polynomial.lean * Apply suggestions from code review * Apply suggestions from code review Co-Authored-By: Bryan Gin-ge Chen ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/data/mv_polynomial.lean + def mv_polynomial.aeval + theorem mv_polynomial.aeval_C + theorem mv_polynomial.aeval_X + theorem mv_polynomial.aeval_def + theorem mv_polynomial.eval_unique Modified src/data/polynomial.lean + def polynomial.aeval + theorem polynomial.aeval_C + theorem polynomial.aeval_X + theorem polynomial.aeval_def + theorem polynomial.eval_unique Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra.lean - def mv_polynomial.aeval - theorem mv_polynomial.aeval_C - theorem mv_polynomial.aeval_X - theorem mv_polynomial.aeval_def - theorem mv_polynomial.eval_unique - def polynomial.aeval - theorem polynomial.aeval_C - theorem polynomial.aeval_X - theorem polynomial.aeval_def - theorem polynomial.eval_unique Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/free_comm_ring.lean 2020-04-02 03:27:11 652fc17 chore(data/set/lattice): add `set_of_exists` and `set_of_forall` (#2312) ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.set_of_exists + theorem set.set_of_forall 2020-04-01 22:05:57 5b972be chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-01 21:30:30 33764ab chore(tactic/transport): rename to transform_decl (#2308) * chore(tactic/transport): rename to transform_decl * satisfying the linter * oops, wrong comment format ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Added src/tactic/transform_decl.lean Deleted src/tactic/transport.lean 2020-04-01 18:42:34 badc615 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-01 18:06:00 a8076b2 refactor(data/real/irrational): review (#2304) * refactor(data/real/irrational): review * Update src/data/real/irrational.lean * Update src/data/real/irrational.lean * Apply suggestions from code review ESTIMATED CHANGES Modified src/data/real/irrational.lean - theorem irr_add_rat_iff_irr - theorem irr_mul_rat_iff_irr - theorem irr_neg - theorem irr_nrt_of_n_not_dvd_multiplicity - theorem irr_nrt_of_notint_nrt - theorem irr_of_irr_mul_self - theorem irr_rat_add_iff_irr - theorem irr_rat_add_of_irr - theorem irr_sqrt_of_multiplicity_odd - theorem irr_sqrt_of_prime - theorem irr_sqrt_rat_iff - theorem irr_sqrt_two + theorem irrational.add_cases + theorem irrational.add_rat + theorem irrational.div_cases + theorem irrational.mul_cases + theorem irrational.mul_rat + theorem irrational.of_add_rat + theorem irrational.of_fpow + theorem irrational.of_inv + theorem irrational.of_mul_rat + theorem irrational.of_mul_self + theorem irrational.of_neg + theorem irrational.of_one_div + theorem irrational.of_pow + theorem irrational.of_rat_add + theorem irrational.of_rat_div + theorem irrational.of_rat_mul + theorem irrational.of_rat_sub + theorem irrational.of_sub_rat + theorem irrational.rat_add + theorem irrational.rat_mul + theorem irrational.rat_sub + theorem irrational.sub_rat +/- def irrational + theorem irrational_add_rat_iff + theorem irrational_inv_iff + theorem irrational_neg_iff + theorem irrational_nrt_of_n_not_dvd_multiplicity + theorem irrational_nrt_of_notint_nrt + theorem irrational_rat_add_iff + theorem irrational_rat_sub_iff + theorem irrational_sqrt_of_multiplicity_odd + theorem irrational_sqrt_rat_iff + theorem irrational_sqrt_two + theorem irrational_sub_rat_iff + theorem nat.prime.irrational_sqrt + theorem rat.not_irrational 2020-04-01 13:29:58 203ebb2 feat(tactic/simp_rw): support `<-` in `simp_rw` (#2309) ESTIMATED CHANGES Modified src/tactic/simp_rw.lean Modified test/simp_rw.lean 2020-04-01 10:26:28 fb658ac chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-04-01 09:50:28 003141c chore(algebra/module): cleanup `is_linear_map` (#2296) * reuse facts about `→+`; * add `map_smul` * add a few docstrings ESTIMATED CHANGES Modified src/algebra/module.lean +/- theorem is_linear_map.map_add +/- theorem is_linear_map.map_neg + theorem is_linear_map.map_smul +/- theorem is_linear_map.map_sub +/- theorem is_linear_map.map_zero +/- def linear_map.id 2020-04-01 06:47:48 c7fb84b refactor(group_theory/submonoid): review API (#2173) The old API was mirroring the API for unbundled submonoids, while the new one is based on the API of `submodule`. Also move some facts about `monoid`/`group` structure on `M × N` to `algebra/group/prod`. ESTIMATED CHANGES Modified src/algebra/free_monoid.lean + theorem free_monoid.comp_lift + theorem free_monoid.lift_apply + theorem free_monoid.lift_comp_of Modified src/algebra/group/default.lean Modified src/algebra/group/hom.lean + theorem monoid_hom.comp_id + theorem monoid_hom.id_comp Added src/algebra/group/prod.lean + theorem monoid_hom.coe_fst + theorem monoid_hom.coe_prod_map + theorem monoid_hom.coe_snd + theorem monoid_hom.comp_coprod + def monoid_hom.coprod + theorem monoid_hom.coprod_apply + theorem monoid_hom.coprod_comp_inl + theorem monoid_hom.coprod_comp_inr + theorem monoid_hom.coprod_inl_inr + theorem monoid_hom.coprod_unique + def monoid_hom.fst + theorem monoid_hom.fst_comp_inl + theorem monoid_hom.fst_comp_inr + theorem monoid_hom.fst_comp_prod + def monoid_hom.inl + theorem monoid_hom.inl_apply + def monoid_hom.inr + theorem monoid_hom.inr_apply + theorem monoid_hom.prod_apply + theorem monoid_hom.prod_comp_prod_map + def monoid_hom.prod_map + theorem monoid_hom.prod_map_def + theorem monoid_hom.prod_unique + def monoid_hom.snd + theorem monoid_hom.snd_comp_inl + theorem monoid_hom.snd_comp_inr + theorem monoid_hom.snd_comp_prod + theorem prod.fst_inv + theorem prod.fst_mul + theorem prod.fst_mul_snd + theorem prod.fst_one + theorem prod.fst_sub + theorem prod.inv_mk + theorem prod.mk_mul_mk + theorem prod.mk_sub_mk + theorem prod.one_eq_mk + theorem prod.snd_inv + theorem prod.snd_mul + theorem prod.snd_one + theorem prod.snd_sub Modified src/algebra/pi_instances.lean - theorem prod.fst_inv - theorem prod.fst_mul - theorem prod.fst_one - theorem prod.fst_sub - theorem prod.inv_mk - theorem prod.mk_mul_mk - theorem prod.mk_sub_mk - def prod.monoid_hom.fst - def prod.monoid_hom.inl - def prod.monoid_hom.inr - def prod.monoid_hom.snd - theorem prod.one_eq_mk - theorem prod.snd_inv - theorem prod.snd_mul - theorem prod.snd_one - theorem prod.snd_sub - def submonoid.prod Modified src/data/prod.lean + theorem prod.fst_injective + theorem prod.fst_surjective + theorem prod.snd_injective + theorem prod.snd_surjective Modified src/group_theory/congruence.lean +/- theorem con.ker_lift_range_eq +/- theorem con.lift_range Modified src/group_theory/submonoid.lean - theorem add_monoid.closure'_singleton - theorem add_submonoid.coe_smul + theorem add_submonoid.mem_closure_singleton - theorem add_submonoid.multiples.self_mem - def add_submonoid.multiples - theorem add_submonoid.multiples_subset +/- theorem add_submonoid.smul_mem + theorem free_monoid.closure_range_of - def monoid.closure' - theorem monoid.closure'_le - theorem monoid.closure'_mono - theorem monoid.closure'_singleton - theorem monoid.exists_list_of_mem_closure' - theorem monoid.image_closure' - theorem monoid.le_closure' - theorem monoid.mem_closure'_union_iff + theorem monoid_hom.closure_preimage_le + def monoid_hom.cod_restrict + theorem monoid_hom.coe_mrange + theorem monoid_hom.coe_range_restrict - def monoid_hom.comap + def monoid_hom.eq_mlocus + theorem monoid_hom.eq_of_eq_on_mdense + theorem monoid_hom.eq_of_eq_on_mtop + theorem monoid_hom.eq_on_mclosure - def monoid_hom.map + theorem monoid_hom.map_mclosure + theorem monoid_hom.map_mrange + theorem monoid_hom.mem_mrange + def monoid_hom.mrange + theorem monoid_hom.mrange_top_iff_surjective + theorem monoid_hom.mrange_top_of_surjective - def monoid_hom.range - def monoid_hom.range_mk + def monoid_hom.range_restrict - theorem monoid_hom.range_top_of_surjective +/- def monoid_hom.restrict + theorem monoid_hom.restrict_apply - def monoid_hom.set_inclusion - def monoid_hom.subtype_mk - theorem submonoid.Inf_le' - def submonoid.Union_of_directed - def submonoid.bot + theorem submonoid.bot_prod_bot + def submonoid.closure + theorem submonoid.closure_Union + theorem submonoid.closure_empty + theorem submonoid.closure_eq + theorem submonoid.closure_eq_mrange + theorem submonoid.closure_eq_of_le + theorem submonoid.closure_induction + theorem submonoid.closure_le + theorem submonoid.closure_mono + theorem submonoid.closure_union + theorem submonoid.closure_univ + theorem submonoid.coe_Inf + theorem submonoid.coe_bot + theorem submonoid.coe_coe + theorem submonoid.coe_comap + theorem submonoid.coe_inf + theorem submonoid.coe_map - theorem submonoid.coe_pow + theorem submonoid.coe_prod + theorem submonoid.coe_ssubset_coe + theorem submonoid.coe_subset_coe + theorem submonoid.coe_subtype + theorem submonoid.coe_top + def submonoid.comap + theorem submonoid.comap_comap + theorem submonoid.comap_inf + theorem submonoid.comap_infi + theorem submonoid.comap_top + theorem submonoid.exists_list_of_mem_closure - theorem submonoid.finset_prod_mem + theorem submonoid.gc_map_comap + def submonoid.inclusion - def submonoid.inf - theorem submonoid.le_Inf' +/- theorem submonoid.le_def +/- theorem submonoid.list_prod_mem + def submonoid.map + theorem submonoid.map_bot + theorem submonoid.map_inl + theorem submonoid.map_inr + theorem submonoid.map_le_iff_le_comap + theorem submonoid.map_map + theorem submonoid.map_sup + theorem submonoid.map_supr + theorem submonoid.mem_Sup_of_directed_on + theorem submonoid.mem_closure + theorem submonoid.mem_closure_singleton +/- theorem submonoid.mem_coe + theorem submonoid.mem_comap +/- theorem submonoid.mem_inf + theorem submonoid.mem_map + theorem submonoid.mem_prod + theorem submonoid.mem_sup + theorem submonoid.mem_supr_of_directed + def submonoid.of +/- theorem submonoid.pow_mem - theorem submonoid.powers.self_mem - def submonoid.powers - theorem submonoid.powers_subset + def submonoid.prod + theorem submonoid.prod_bot_sup_bot_prod + def submonoid.prod_equiv + theorem submonoid.prod_mono + theorem submonoid.prod_mono_left + theorem submonoid.prod_mono_right + theorem submonoid.prod_top + theorem submonoid.range_fst + theorem submonoid.range_inl' + theorem submonoid.range_inl + theorem submonoid.range_inl_sup_range_inr + theorem submonoid.range_inr' + theorem submonoid.range_inr + theorem submonoid.range_snd + theorem submonoid.range_subtype + theorem submonoid.subset_closure +/- def submonoid.subtype - theorem submonoid.subtype_apply - theorem submonoid.subtype_eq_val + theorem submonoid.sup_eq_range + theorem submonoid.top_prod + theorem submonoid.top_prod_top - def submonoid.univ Modified src/order/galois_connection.lean 2020-04-01 04:05:06 67e7f90 fix(algebra/category): make has_coe_to_sort instances for bundled categories reducible (#2290) * fix(algebra/category): make has_coe_to_sort instances for bundled categories reducible * fix library notes * fix import * Update src/algebra/category/CommRing/basic.lean Co-Authored-By: Gabriel Ebner * fix notes ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/category_theory/concrete_category/bundled.lean Modified src/category_theory/full_subcategory.lean 2020-04-01 01:14:10 cc20a86 feat(data/nat/basic): `simp` lemmas about inequalities with `bit*` (#2207) * feat(data/nat/basic): `simp` lemmas about inequalities with `bit*` * Fix compile of `computability/partrec_code` * Fix `nat.bit_cases` to work for `Type*` too * Generalize some lemmas to `linear_ordered_semiring`s * Apply suggestions from code review Co-Authored-By: Gabriel Ebner * Apply suggestions from code review Co-Authored-By: Scott Morrison * fixing a proof ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem bit0_le_bit0 + theorem bit0_lt_bit0 + theorem bit1_le_bit1 + theorem bit1_lt_bit1 + theorem one_le_bit1 + theorem one_lt_bit1 + theorem zero_le_bit0 + theorem zero_le_mul_left + theorem zero_le_mul_right + theorem zero_lt_bit0 + theorem zero_lt_mul_left + theorem zero_lt_mul_right Modified src/computability/partrec_code.lean Modified src/data/nat/basic.lean + theorem nat.bit0_le_bit1_iff + theorem nat.bit0_lt_bit1_iff + theorem nat.bit1_le_bit0_iff + theorem nat.bit1_lt_bit0_iff + def nat.bit_cases + theorem nat.bit_le_bit1_iff + theorem nat.bit_le_bit_iff + theorem nat.bit_lt_bit_iff + theorem nat.one_le_bit0_iff + theorem nat.one_lt_bit0_iff Modified src/data/real/pi.lean 2020-03-31 22:26:22 7d89f2e feat(data/fintype/card): prod_univ_sum (#2284) * feat(data/fintype/card): prod_univ_sum * Update src/data/fintype.lean * Update src/data/fintype/card.lean * docstrings * fix build * remove unused argument * fix build ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/finset.lean +/- theorem finset.card_map Modified src/data/fintype/basic.lean +/- theorem fintype.pi_finset_univ Modified src/data/fintype/card.lean + theorem finset.prod_univ_pi + theorem finset.prod_univ_sum Modified src/linear_algebra/determinant.lean 2020-03-31 19:02:55 224ba7e feat(data/finset): card_image_le (#2295) * feat(data/finset): card_image_le * add list.to_finset_card_le ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.card_image_le + theorem list.to_finset_card_le + theorem multiset.to_finset_card_le 2020-03-31 16:02:27 72d3b6e feat(tactic/equiv_rw): incorporating equiv_functor (#2301) * feat(tactic): rewriting along equivalences * header * minor * type * actually, rewriting the goal under functors is easy * rewriting inside function types * more * way better * improving comments * fun * feat(data/equiv): pi_congr * various * feat(data/equiv): sigma_congr * docstrings * change case for consistency * tidying up * minor * minor * switching names * fixes * add some tracing routines for convenience * feat(tactic/core): trace_for * typo * oops * oops * various * chore(tactic/solve_by_elim): cleanup * cleanup * what happened to my commit? * fix * fix * rename to trace_if_enabled * fixed? * Tweak comments * feat(tactic/solve_by_elim): add accept parameter to prune tree search * when called with empty lemmas, use the same default set as the interactive tactic * trace_state_if_enabled * Update src/data/equiv/basic.lean * implicit arguments * stop cheating with [] ~ none * indenting * yay, working via solve_by_elim * pretty good * various * various * docstring * fix docstrings * more docs * docs * feat(data/equiv/functor): bifunctor.map_equiv * bifunctors * test rewriting under unique * start * sketch of equiv_functor * rewriting in subtypes * add documentation, and make the function an explicit argument * documentation * fix doc-strings * typos * minor * adding demonstration of transporting semigroup * update * removing unimpressive inhabited example; easier later * Update .vscode/settings.json * err * trying to transport through monoid * err? * much better * improve documentation of accept, and add doc-string * fix duplicated namespace * improve docs * feat(logic/basic): trivial transport lemmas * try again with documentation * update * oops * oops * omit * revert unnecessary change * fix doc-string * chore(data/equiv/basic): simp to_fun to coe * feat(tactic/equiv_rw): incorporating equiv_functor * rename adapt_equiv * simplify the equivalence produced, and provide a tactic to access the equivalence * add max_steps option * add decl_name to add_tactic_doc * fix add_tactic_doc * satisfying linter * fix names * finish fix * add defaults for cfg arguments * remove simplify_term, which already existed as expr.simp * remove duplicate functions that have been PRd separately * no need for accept * Update src/tactic/equiv_rw.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/tactic/equiv_rw.lean Co-Authored-By: Gabriel Ebner * replace max_steps with max_depth * use solve_aux * add missing simp lemmas about arrow_congr' * fix failing test, by making sure we don't leave any ≃ goals on the table * add comment * comment out trace output * fix fields ESTIMATED CHANGES Modified src/category/equiv_functor.lean Added src/category/equiv_functor/instances.lean Modified src/tactic/equiv_rw.lean Modified test/equiv_rw.lean + theorem semigroup.id_map - theorem semigroup.map_comp - def semigroup.map_equiv - theorem semigroup.map_id + theorem semigroup.map_map 2020-03-31 14:30:05 b508d0e feat(tactic/equiv_rw): rewriting along equivalences (#2246) * feat(tactic): rewriting along equivalences * header * minor * type * actually, rewriting the goal under functors is easy * rewriting inside function types * more * way better * improving comments * fun * feat(data/equiv): pi_congr * various * feat(data/equiv): sigma_congr * docstrings * change case for consistency * tidying up * minor * minor * switching names * fixes * add some tracing routines for convenience * feat(tactic/core): trace_for * typo * oops * oops * various * chore(tactic/solve_by_elim): cleanup * cleanup * what happened to my commit? * fix * fix * rename to trace_if_enabled * fixed? * Tweak comments * feat(tactic/solve_by_elim): add accept parameter to prune tree search * when called with empty lemmas, use the same default set as the interactive tactic * trace_state_if_enabled * Update src/data/equiv/basic.lean * implicit arguments * stop cheating with [] ~ none * indenting * yay, working via solve_by_elim * pretty good * various * various * docstring * fix docstrings * more docs * docs * feat(data/equiv/functor): bifunctor.map_equiv * bifunctors * test rewriting under unique * rewriting in subtypes * add documentation, and make the function an explicit argument * documentation * fix doc-strings * typos * minor * adding demonstration of transporting semigroup * Update .vscode/settings.json * err * trying to transport through monoid * err? * much better * improve documentation of accept, and add doc-string * fix duplicated namespace * improve docs * try again with documentation * update * oops * rename adapt_equiv * simplify the equivalence produced, and provide a tactic to access the equivalence * add max_steps option * add decl_name to add_tactic_doc * fix add_tactic_doc * satisfying linter * add defaults for cfg arguments * remove simplify_term, which already existed as expr.simp * remove duplicate functions that have been PRd separately * no need for accept * Update src/tactic/equiv_rw.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/tactic/equiv_rw.lean Co-Authored-By: Gabriel Ebner * replace max_steps with max_depth * use solve_aux * add missing simp lemmas about arrow_congr' * fix failing test, by making sure we don't leave any ≃ goals on the table * add comment * comment out trace output ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.Pi_congr' + def equiv.arrow_congr' + theorem equiv.arrow_congr'_apply + theorem equiv.arrow_congr'_refl + theorem equiv.arrow_congr'_symm + theorem equiv.arrow_congr'_trans + def equiv.of_iff Modified src/data/equiv/functor.lean + theorem bifunctor.map_equiv_refl_refl + theorem functor.map_equiv_refl Modified src/set_theory/pgame.lean Added src/tactic/equiv_rw.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/tidy.lean Added test/equiv_rw.lean + def monoid.map + def semigroup.map + theorem semigroup.map_comp + def semigroup.map_equiv + theorem semigroup.map_id 2020-03-31 11:30:19 2669062 feat(data/monoid_algebra): some lemmas about group rings (#2239) * feat(algebra/ring): generalize mul_ite * fix proofs * going off the deep-end * cleaning up * much better * getting there * no new congr lemma * oops * ... * to_additive * removing bad simp lemmas again... * fix proof * fix' * oops * feat(data/monoid_algebra): some lemmas about group rings * Update src/algebra/ring.lean * remove unnecessary arguments, thanks linter * err.. marking simp again, because I can't remember what goes wrong and need CI to compile for me * handing it back to CI for another try * fix prod_ite as well * cast_ite * gross fix for quadratic reciprocity argument * remove simp from add_ite, add comment * sadness * slight improvement * remove redundant lemmas ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.prod_comm + theorem finsupp.prod_ite_eq' + theorem finsupp.prod_ite_eq +/- theorem finsupp.smul_apply Modified src/data/monoid_algebra.lean + theorem monoid_algebra.mul_apply + theorem monoid_algebra.mul_apply_left + theorem monoid_algebra.mul_apply_right + theorem monoid_algebra.mul_single_apply + theorem monoid_algebra.single_mul_apply Modified src/data/polynomial.lean 2020-03-31 09:10:23 1763220 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-31 08:35:51 85affa4 refactor(*): migrate more files to bundled `ring_hom`s (#2286) * refactor(*): migrate more files to bundled `ring_hom`s * Fix lint ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/char_p.lean + def zmod.cast_hom Modified src/algebra/module.lean - def is_ring_hom.to_module + def ring_hom.to_module Modified src/data/equiv/basic.lean +/- def function.involutive.to_equiv Modified src/data/int/basic.lean + def int.cast_ring_hom + theorem int.coe_cast_ring_hom - theorem int.eq_cast' - theorem is_ring_hom.map_int_cast + theorem ring_hom.eq_int_cast' + theorem ring_hom.eq_int_cast +/- theorem ring_hom.map_int_cast Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.C_sub + theorem mv_polynomial.coe_eval₂_hom +/- theorem mv_polynomial.eval_sub + def mv_polynomial.eval₂_hom +/- theorem mv_polynomial.eval₂_sub +/- theorem mv_polynomial.map_sub Modified src/data/nat/cast.lean - theorem is_semiring_hom.map_nat_cast + def nat.cast_add_monoid_hom + def nat.cast_ring_hom + theorem nat.coe_cast_add_monoid_hom + theorem nat.coe_cast_ring_hom +/- theorem ring_hom.map_nat_cast Modified src/data/polynomial.lean Modified src/data/real/nnreal.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/field_theory/finite.lean Modified src/field_theory/finite_card.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/free_comm_ring.lean 2020-03-31 05:47:42 66f3090 feat(analysis/analytic): first take on analytic functions (#2199) * analytic: first definitions * docstrings * cleanup * Update src/analysis/analytic/basic.lean Co-Authored-By: Johan Commelin * comment on polydisk of convergence * coefficient at 0 * protect sum * rename with_top.dense_coe ESTIMATED CHANGES Added src/analysis/analytic/basic.lean + theorem analytic_at.add + theorem analytic_at.continuous_at + theorem analytic_at.neg + theorem analytic_at.sub + def analytic_at + theorem formal_multilinear_series.bound_of_lt_radius + theorem formal_multilinear_series.continuous_on + theorem formal_multilinear_series.geometric_bound_of_lt_radius + theorem formal_multilinear_series.has_fpower_series_on_ball + theorem formal_multilinear_series.le_radius_of_bound + theorem formal_multilinear_series.min_radius_le_radius_add + def formal_multilinear_series.partial_sum + theorem formal_multilinear_series.partial_sum_continuous + def formal_multilinear_series.radius + theorem formal_multilinear_series.radius_neg + theorem has_fpower_series_at.add + theorem has_fpower_series_at.analytic_at + theorem has_fpower_series_at.coeff_zero + theorem has_fpower_series_at.continuous_at + theorem has_fpower_series_at.neg + theorem has_fpower_series_at.radius_pos + theorem has_fpower_series_at.sub + def has_fpower_series_at + theorem has_fpower_series_on_ball.add + theorem has_fpower_series_on_ball.analytic_at + theorem has_fpower_series_on_ball.coeff_zero + theorem has_fpower_series_on_ball.continuous_on + theorem has_fpower_series_on_ball.has_fpower_series_at + theorem has_fpower_series_on_ball.mono + theorem has_fpower_series_on_ball.neg + theorem has_fpower_series_on_ball.radius_pos + theorem has_fpower_series_on_ball.sub + theorem has_fpower_series_on_ball.sum + theorem has_fpower_series_on_ball.uniform_limit + structure has_fpower_series_on_ball Modified src/data/real/ennreal.lean + theorem ennreal.lt_iff_exists_nnreal_btwn Modified src/data/set/finite.lean + theorem finset.bdd_above + theorem finset.bdd_below Modified src/order/bounded_lattice.lean - theorem with_top.dense_coe + theorem with_top.lt_iff_exists_coe_btwn Modified src/topology/metric_space/emetric_space.lean 2020-03-31 03:13:56 20bff2c chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-31 02:43:53 4168aba refactor(data/fintype): move data/fintype to data/fintype/basic (#2285) ESTIMATED CHANGES Modified docs/theories/sets.md Modified src/algebra/char_p.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/computability/turing_machine.lean Modified src/data/W.lean Modified src/data/equiv/denumerable.lean Modified src/data/equiv/list.lean Modified src/data/fin_enum.lean Renamed src/data/fintype.lean to src/data/fintype/basic.lean Modified src/data/fintype/card.lean Modified src/data/fintype/intervals.lean Modified src/data/matrix/basic.lean Modified src/data/set/finite.lean Modified src/data/zmod/basic.lean Modified src/group_theory/free_group.lean Modified src/group_theory/perm/sign.lean Modified src/number_theory/bernoulli.lean Modified src/tactic/fin_cases.lean Modified test/omega.lean 2020-03-31 00:17:23 c5181d1 feat(*): more `prod`-related (continuous) linear maps and their derivatives (#2277) * feat(*): more `prod`-related (continuous) linear maps and their derivatives * Make `R` argument of `continuous_linear_equiv.refl` explicit ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem differentiable.fst + theorem differentiable.snd + theorem differentiable_at.fst + theorem differentiable_at.prod_map + theorem differentiable_at.snd + theorem differentiable_at_fst + theorem differentiable_at_snd + theorem differentiable_fst + theorem differentiable_on.fst + theorem differentiable_on.snd + theorem differentiable_on_fst + theorem differentiable_on_snd + theorem differentiable_snd + theorem differentiable_within_at.fst + theorem differentiable_within_at.snd + theorem differentiable_within_at_fst + theorem differentiable_within_at_snd + theorem fderiv.fst + theorem fderiv.snd + theorem fderiv_fst + theorem fderiv_snd + theorem fderiv_within.fst + theorem fderiv_within.snd + theorem fderiv_within_fst + theorem fderiv_within_snd + theorem has_fderiv_at.fst + theorem has_fderiv_at.prod_map + theorem has_fderiv_at.snd + theorem has_fderiv_at_filter.fst + theorem has_fderiv_at_filter.snd + theorem has_fderiv_at_filter_fst + theorem has_fderiv_at_filter_snd + theorem has_fderiv_at_fst + theorem has_fderiv_at_snd + theorem has_fderiv_within_at.fst + theorem has_fderiv_within_at.snd + theorem has_fderiv_within_at_fst + theorem has_fderiv_within_at_snd + theorem has_strict_fderiv_at.fst + theorem has_strict_fderiv_at.prod_map + theorem has_strict_fderiv_at.snd + theorem has_strict_fderiv_at_fst + theorem has_strict_fderiv_at_id + theorem has_strict_fderiv_at_snd Modified src/linear_algebra/basic.lean + theorem linear_equiv.coe_prod + theorem linear_equiv.skew_prod_apply + theorem linear_equiv.skew_prod_symm_apply + def linear_map.prod_map + theorem linear_map.prod_map_apply Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.coe_def_rev + theorem continuous_linear_equiv.coe_prod + theorem continuous_linear_equiv.coe_refl' + theorem continuous_linear_equiv.coe_refl + def continuous_linear_equiv.prod + theorem continuous_linear_equiv.prod_apply + def continuous_linear_equiv.skew_prod + theorem continuous_linear_equiv.skew_prod_apply + theorem continuous_linear_equiv.skew_prod_symm_apply +/- theorem continuous_linear_map.coe_fst' +/- theorem continuous_linear_map.coe_fst + theorem continuous_linear_map.coe_prod_map +/- theorem continuous_linear_map.coe_snd' +/- theorem continuous_linear_map.coe_snd + def continuous_linear_map.fst + def continuous_linear_map.prod_map + theorem continuous_linear_map.prod_map_apply + def continuous_linear_map.snd Modified src/topology/basic.lean +/- theorem nhds_basis_opens Modified src/topology/constructions.lean + theorem continuous.prod_map 2020-03-30 20:48:51 64f835b chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-30 20:13:52 8a61723 fix(algebra/punit_instance): punit.smul_eq is marked simp and can be proved by simp (#2291) ESTIMATED CHANGES Modified src/algebra/punit_instances.lean +/- theorem punit.smul_eq 2020-03-30 16:48:08 3f0e700 doc(algebra/group/type_tags): add docs (#2287) * doc(algebra/group/type_tags): add docs * Update src/algebra/group/type_tags.lean ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean 2020-03-30 13:16:33 1331e29 chore(*): completing most of the -T50000 challenge (#2281) ESTIMATED CHANGES Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/category_theory/limits/over.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/simple_func_dense.lean Modified src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.ne_zero_of_mul_eq_one Modified src/topology/algebra/infinite_sum.lean Modified src/topology/category/Top/adjunctions.lean Modified src/topology/category/UniformSpace.lean 2020-03-30 10:46:51 37212a7 feat(data/fin*): uniqueness of increasing bijection (#2258) * feat(data/fin*): uniqueness of increasing bijection * protect * remove tidy call * Update src/data/finset.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/data/finset.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/data/fintype/card.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/data/fintype/card.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/data/fintype/card.lean Co-Authored-By: Bryan Gin-ge Chen * prove prod_add, and use this to prove sum_pow_mul_eq_add_pow * forgot to save * fix build * remove card_sub_card ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_add + theorem finset.sum_pow_mul_eq_add_pow Modified src/data/fin.lean Modified src/data/finset.lean + theorem finset.disjoint_iff_disjoint_coe + theorem finset.mono_of_fin_last + theorem finset.mono_of_fin_strict_mono + theorem finset.mono_of_fin_unique + theorem finset.mono_of_fin_zero + theorem finset.range_eq_Ico Modified src/data/fintype.lean + theorem finset.mono_of_fin_unique' + theorem fintype.coe_image_univ Modified src/data/fintype/card.lean + theorem fin.sum_pow_mul_eq_add_pow + theorem fintype.sum_pow_mul_eq_add_pow 2020-03-30 08:09:21 cd38923 docs(algebraic_geometry/prime_spectrum): linkify url in module docs (#2288) ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean 2020-03-30 06:25:08 9288d10 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-30 05:50:58 51553e3 chore(data/set/lattice): use dot syntax for `disjoint.*` (#2282) ESTIMATED CHANGES Modified src/data/finsupp.lean Modified src/data/set/lattice.lean + theorem disjoint.mono + theorem disjoint.mono_left + theorem disjoint.mono_right + theorem disjoint.ne - theorem disjoint_mono - theorem disjoint_mono_left - theorem disjoint_mono_right - theorem ne_of_disjoint +/- def set.kern_image + theorem set.pairwise_disjoint.elim + theorem set.pairwise_disjoint.range + theorem set.pairwise_disjoint.subset - theorem set.pairwise_disjoint_elim - theorem set.pairwise_disjoint_range - theorem set.pairwise_disjoint_subset Modified src/data/setoid.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/order/conditionally_complete_lattice.lean Modified src/topology/separation.lean 2020-03-30 03:22:11 cf64860 chore(*): remove 'using_well_founded wf_tacs', fixed in core (#2280) ESTIMATED CHANGES Modified docs/extras/well_founded_recursion.md Modified src/computability/partrec_code.lean Modified src/data/list/basic.lean Modified src/data/list/sort.lean Modified src/data/vector2.lean Modified src/tactic/basic.lean Deleted src/tactic/well_founded_tactics.lean 2020-03-30 00:45:51 8c1e32f chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-30 00:11:57 7dad872 feat(ci): try fetching olean caches from older commits (#2278) * feat(ci): try fetching older branch oleans * docstring edits for set_theory.surreal * debug * debug 2 * formatting * try fetching * just increase depth * improve script, improve surreal docstrings * env context * quieter curl * fix overwriting * git clean * ci test: delete surreal.lean * fix env var GIT_HISTORY_DEPTH * add back surreal * reviewer comments ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/fetch_olean_cache.sh Modified src/set_theory/surreal.lean +/- theorem pgame.lt_iff_le_not_le 2020-03-29 21:31:54 c14c84e chore(topology/algebra/ordered): `le_of_tendsto`: use `∀ᶠ`, add primed versions (#2270) Also fix two typos in `order/filter/basic` ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/l1_space.lean Modified src/order/filter/basic.lean - theorem filter.tendso_add_at_top_nat - theorem filter.tendso_sub_at_top_nat + theorem filter.tendsto_add_at_top_nat + theorem filter.tendsto_sub_at_top_nat Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean + theorem ge_of_tendsto' + theorem le_of_tendsto' + theorem le_of_tendsto_of_tendsto' Modified src/topology/bounded_continuous_function.lean 2020-03-29 19:03:26 8b679d9 fix(tactic/squeeze): make suggestion at correct location (#2279) Fixes #2267. ESTIMATED CHANGES Modified src/tactic/squeeze.lean 2020-03-29 16:22:44 38544f1 feat(tactic/core): basic interaction monad functions (#1658) * feat(tactic/core): basic interaction monad functions * review * remove get_result * update comments * whitespace * american spelling ESTIMATED CHANGES Modified src/tactic/core.lean 2020-03-29 13:46:46 c4fb403 fix(tactic/core): remove all_goals option from apply_any (#2275) * fix(tactic/core): remove all_goals option from any_apply * remove unnecessary imports ESTIMATED CHANGES Modified src/set_theory/pgame.lean Modified src/tactic/core.lean Modified src/tactic/solve_by_elim.lean 2020-03-29 11:19:27 da8b23f chore(data/opposite): two trivial lemmas (#2274) ESTIMATED CHANGES Modified src/data/opposite.lean + theorem opposite.op_eq_iff_eq_unop + theorem opposite.unop_eq_iff_eq_op 2020-03-29 08:42:21 79880e8 chore(data/fintype/intervals): `simp` `Ico_*_card` lemmas (#2271) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.Ico_ℤ.card Modified src/data/fintype/intervals.lean + theorem set.Ico_pnat_card + theorem set.Ico_ℕ_card + theorem set.Ico_ℤ_card Modified src/data/pnat/intervals.lean + theorem pnat.Ico.card 2020-03-29 05:46:53 5d9e7f5 feat(analysis/calculus/fderiv): define `has_strict_fderiv_at` (#2249) * Move code aroud * general constructions (product, chain rule) before arithmetic; * bundled `E →L[𝕜] F` maps before unbundled * Use `maps_to` instead of `f '' _ ⊆ _` * feat(analysis/calculus/fderiv): define `has_strict_fderiv_at` Prove strict differentiability of all functions found in this file, cleanup. * Update src/analysis/calculus/fderiv.lean Co-Authored-By: sgouezel * Docs, var name ESTIMATED CHANGES Modified src/algebra/pi_instances.lean + theorem prod.mk_sub_mk Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O_fst_prod' + theorem asymptotics.is_O_snd_prod' Modified src/analysis/calculus/fderiv.lean + theorem continuous_linear_equiv.comp_has_strict_fderiv_at_iff - theorem continuous_linear_map.has_fderiv_at_filter +/- theorem has_fderiv_at_filter.is_O_sub - theorem has_fderiv_within_at.image_tangent_cone_subset + theorem has_fderiv_within_at.maps_to_tangent_cone +/- theorem has_fderiv_within_at.mul_const + theorem has_strict_fderiv_at.add + theorem has_strict_fderiv_at.add_const + theorem has_strict_fderiv_at.comp + theorem has_strict_fderiv_at.const_add + theorem has_strict_fderiv_at.const_mul + theorem has_strict_fderiv_at.const_smul + theorem has_strict_fderiv_at.const_sub + theorem has_strict_fderiv_at.continuous_at + theorem has_strict_fderiv_at.differentiable_at + theorem has_strict_fderiv_at.has_fderiv_at + theorem has_strict_fderiv_at.is_O_sub + theorem has_strict_fderiv_at.mul + theorem has_strict_fderiv_at.mul_const + theorem has_strict_fderiv_at.neg + theorem has_strict_fderiv_at.prod + theorem has_strict_fderiv_at.restrict_scalars + theorem has_strict_fderiv_at.smul + theorem has_strict_fderiv_at.smul_const + theorem has_strict_fderiv_at.sub + theorem has_strict_fderiv_at.sub_const + def has_strict_fderiv_at + theorem has_strict_fderiv_at_congr_of_mem_sets + theorem has_strict_fderiv_at_const +/- theorem is_bounded_bilinear_map.differentiable_within_at + theorem is_bounded_bilinear_map.has_strict_fderiv_at Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_bilinear_map.is_O_comp Modified src/order/filter/basic.lean + theorem filter.eventually.prod_inl + theorem filter.eventually.prod_inr + theorem filter.eventually.prod_mk + theorem filter.tendsto.eventually Modified src/topology/constructions.lean + theorem continuous_at.prod_map' + theorem continuous_at.prod_map + theorem continuous_at_fst + theorem continuous_at_snd + theorem filter.eventually.prod_inl_nhds + theorem filter.eventually.prod_inr_nhds + theorem filter.eventually.prod_mk_nhds 2020-03-29 03:24:03 de8c207 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-29 02:52:21 8454c10 doc(ring_theory/noetherian): add docstring, normalise notation (#2219) * change notation; add module docstring * adding reference to A-M * Update src/ring_theory/noetherian.lean Co-Authored-By: Bryan Gin-ge Chen * Apply suggestions from code review ESTIMATED CHANGES Modified docs/references.bib Modified src/ring_theory/noetherian.lean +/- theorem finite_of_linear_independent +/- theorem is_noetherian_of_fg_of_noetherian +/- theorem is_noetherian_of_linear_equiv +/- theorem is_noetherian_of_quotient_of_noetherian +/- theorem is_noetherian_of_submodule_of_noetherian +/- theorem is_noetherian_of_surjective +/- theorem is_noetherian_ring.exists_factors +/- theorem is_noetherian_ring.exists_irreducible_factor +/- theorem is_noetherian_ring.irreducible_induction_on +/- theorem is_noetherian_ring.well_founded_dvd_not_unit +/- def is_noetherian_ring +/- theorem is_noetherian_span_of_finite +/- theorem is_noetherian_submodule +/- theorem is_noetherian_submodule_left +/- theorem is_noetherian_submodule_right +/- def submodule.fg +/- theorem submodule.fg_bot +/- theorem submodule.fg_def +/- theorem submodule.fg_map +/- theorem submodule.fg_of_fg_map_of_fg_inf_ker +/- theorem submodule.fg_pow +/- theorem submodule.fg_prod +/- theorem submodule.fg_sup +/- theorem well_founded_submodule_gt 2020-03-29 00:11:06 ecdb138 feat(category/equiv_functor): type-level functoriality w.r.t. equiv (#2255) * feat(data/equiv/functor): bifunctor.map_equiv * start * sketch of equiv_functor * update * removing unimpressive inhabited example; easier later * omit * revert unnecessary change * fix doc-string * fix names * finish fix ESTIMATED CHANGES Added src/category/equiv_functor.lean + def equiv_functor.map_equiv + theorem equiv_functor.map_equiv_apply + theorem equiv_functor.map_equiv_symm_apply Modified src/category_theory/core.lean + def category_theory.of_equiv_functor Modified src/category_theory/types.lean + theorem category_theory.iso.to_equiv_comp + theorem category_theory.iso.to_equiv_id Modified src/data/equiv/basic.lean +/- def equiv.prod_congr Modified src/logic/unique.lean 2020-03-28 21:19:19 d500210 feat(algebra/big_operators): missing lemmas (#2259) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_le_prod' + theorem finset.prod_pow_eq_pow_sum + theorem finset.sum_lt_sum_of_subset 2020-03-28 18:32:12 ad53e0b feat(tactic/solve_by_elim): add accept parameter to prune tree search (#2245) * chore(tactic/solve_by_elim): cleanup * cleanup * what happened to my commit? * fix * fix * fixed? * Tweak comments * feat(tactic/solve_by_elim): add accept parameter to prune tree search * when called with empty lemmas, use the same default set as the interactive tactic * stop cheating with [] ~ none * indenting * various * various * docstring * fix docstrings * more docs * docs * fix doc-strings * improve documentation of accept, and add doc-string * improve docs * try again with documentation * clarify when accept runs * Update src/tactic/solve_by_elim.lean Co-Authored-By: Rob Lewis * Update src/tactic/solve_by_elim.lean * Update src/tactic/solve_by_elim.lean ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/solve_by_elim.lean Modified test/solve_by_elim.lean + def solve_by_elim_use_b 2020-03-28 17:37:54 0187cb5 fix(scripts/deploy_docs.sh): cd before git log (#2264) * fix(scripts/deploy_docs.sh): cd before git log * Update scripts/deploy_docs.sh ESTIMATED CHANGES Modified scripts/deploy_docs.sh 2020-03-28 12:46:28 17f8340 chore(data/equiv/basic): simp to_fun to coe (#2256) * chore(data/equiv/basic): simp to_fun to coe * fix proofs * Update src/data/equiv/basic.lean * fix proof * partially removing to_fun * finish switching to coercions ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.inv_fun_as_coe + theorem equiv.to_fun_as_coe Modified src/topology/metric_space/gromov_hausdorff.lean 2020-03-28 06:05:30 d470ae7 fix(tactic/squeeze): do not fail when closing the goal (#2262) ESTIMATED CHANGES Modified src/tactic/squeeze.lean Modified test/examples.lean 2020-03-28 03:34:11 6732788 feat(analysis/normed_space/operator_norm): a few more estimates (#2233) * feat(*): a few more theorems about `unique` and `subsingleton` * Fix compile, fix two non-terminate `simp`s * Update src/topology/metric_space/antilipschitz.lean This lemma will go to another PR * feat(analysis/normed_space/operator_norm): a few more estimates * `le_op_norm_of_le` : `∥x∥ ≤ c → ∥f x∥ ≤ ∥f∥ * c`; * `norm_id` → `norm_id_le`, new `norm_id` assumes `∃ x : E, x ≠ 0` * estimates on the norm of `e : E ≃L[𝕜] F`` and `e.symm`. * rename `(anti)lipschitz_with.to_inverse` to `to_right_inverse` ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean - theorem continuous_linear_equiv.antilipschitz - theorem continuous_linear_equiv.lipschitz + theorem continuous_linear_equiv.norm_pos + theorem continuous_linear_equiv.norm_symm_pos + theorem continuous_linear_equiv.one_le_norm_mul_norm_symm + theorem continuous_linear_equiv.subsingleton_or_nnnorm_symm_pos + theorem continuous_linear_equiv.subsingleton_or_norm_symm_pos +/- theorem continuous_linear_equiv.uniform_embedding + theorem continuous_linear_map.le_op_norm_of_le +/- theorem continuous_linear_map.norm_id + theorem continuous_linear_map.norm_id_le +/- theorem continuous_linear_map.op_norm_comp_le Modified src/topology/metric_space/antilipschitz.lean - theorem antilipschitz_with.to_inverse + theorem antilipschitz_with.to_right_inverse - theorem lipschitz_with.to_inverse + theorem lipschitz_with.to_right_inverse 2020-03-28 02:36:23 1b13ccd chore(scripts/deploy_docs.sh): skip gen_docs if already built (#2263) * chore(scripts/deploy_docs.sh): skip gen_docs if already built * Update scripts/deploy_docs.sh ESTIMATED CHANGES Modified scripts/deploy_docs.sh 2020-03-28 00:46:23 211c5d1 chore(data/int/basic): change instance order (#2257) ESTIMATED CHANGES Modified src/data/int/basic.lean 2020-03-27 22:08:58 3c0b35c chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-27 21:37:51 d0a8507 feat(algebra/ring): generalize mul_ite (#2223) * feat(algebra/ring): generalize mul_ite * fix proofs * going off the deep-end * cleaning up * much better * getting there * no new congr lemma * oops * ... * to_additive * removing bad simp lemmas again... * fix proof * fix' * oops * Update src/algebra/ring.lean * err.. marking simp again, because I can't remember what goes wrong and need CI to compile for me * handing it back to CI for another try * fix prod_ite as well * cast_ite * gross fix for quadratic reciprocity argument * remove simp from add_ite, add comment ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_apply_ite +/- theorem finset.prod_ite + theorem finset.prod_pow_boole + theorem finset.sum_boole Modified src/algebra/group_power.lean + theorem ite_pow + theorem pow_boole + theorem pow_ite Modified src/algebra/ring.lean + theorem boole_mul +/- theorem ite_mul + theorem mul_boole +/- theorem mul_ite Modified src/analysis/convex/basic.lean Modified src/analysis/convex/specific_functions.lean Modified src/data/equiv/basic.lean Modified src/data/nat/cast.lean + theorem nat.cast_ite Modified src/data/nat/multiplicity.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/linear_algebra/nonsingular_inverse.lean 2020-03-27 18:48:08 786c737 feat(logic/basic): trivial transport lemmas (#2254) * feat(logic/basic): trivial transport lemmas * oops ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean Modified src/data/nat/basic.lean Modified src/logic/basic.lean + theorem eq_mp_rfl + theorem eq_mpr_rfl + theorem eq_rec_constant 2020-03-27 16:08:17 451de27 chore(tactic/lint): typo (#2253) ESTIMATED CHANGES Modified src/tactic/lint.lean 2020-03-27 13:19:03 21ad1d3 chore(tactic/*): update tags (#2224) * add missing tactic tags * add missing command tags * add missing hole command tags * add missing attribute tags * combine tags 'type class' and 'type classes' * combine tags 'logical manipulation' and 'logic' * attribute additions and changes * more tag updates * hypothesis management -> context management * remove 'simplification', add more tags * classical reasoning -> classical logic * substitution -> rewrite * normalization -> simplification ESTIMATED CHANGES Modified src/tactic/cache.lean Modified src/tactic/core.lean Modified src/tactic/elide.lean Modified src/tactic/ext.lean Modified src/tactic/finish.lean Modified src/tactic/hint.lean Modified src/tactic/interactive.lean Modified src/tactic/linarith.lean Modified src/tactic/localized.lean Modified src/tactic/norm_cast.lean Modified src/tactic/omega/main.lean Modified src/tactic/pi_instances.lean Modified src/tactic/replacer.lean Modified src/tactic/restate_axiom.lean Modified src/tactic/ring.lean Modified src/tactic/ring_exp.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/tidy.lean 2020-03-27 12:12:17 d3cbd4d chore(ci): update nolints before docs and leanchecker (#2250) * Update build.yml * run lint+tests if build step succeeds (see #2250) (#2252) * run lint+tests if build succeeds * move lint (and nolints.txt) before tests * Apply suggestions from code review ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-03-26 16:57:24-04:00 de39b9a chore(.mergify.yml): cleanup (#2248) remove [skip-ci] and pr bits that no longer apply. ESTIMATED CHANGES Modified .mergify.yml 2020-03-26 20:55:31 2fbf007 doc(docs/install/project.md): mention that projects are git repositories (#2244) ESTIMATED CHANGES Modified docs/install/project.md 2020-03-26 20:00:59 75b4ee8 feat(data/equiv/local_equiv): construct from `bij_on` or `inj_on` (#2232) * feat(data/equiv/local_equiv): construct from `bij_on` or `inj_on` Also fix usage of `nonempty` vs `inhabited` in `set/function`. Linter didn't catch these bugs because the types use the `.to_nonempty` projection of the `[inhabited]` arguments. * Add `simps`/`simp` attrs ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean Modified src/data/set/function.lean +/- theorem set.bij_on.inv_on_inv_fun_on +/- theorem set.inj_on.inv_fun_on_image +/- theorem set.inj_on.left_inv_on_inv_fun_on +/- theorem set.surj_on.bij_on_subset +/- theorem set.surj_on.inv_on_inv_fun_on +/- theorem set.surj_on.maps_to_inv_fun_on +/- theorem set.surj_on.right_inv_on_inv_fun_on 2020-03-26 17:30:38 8943351 feat(topology/algebra/module): define `fst` and `snd`, review (#2247) * feat(topology/algebra/module): define `fst` and `snd`, review * Fix compile ESTIMATED CHANGES Modified src/geometry/manifold/mfderiv.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.bijective + theorem continuous_linear_equiv.injective + theorem continuous_linear_equiv.surjective + theorem continuous_linear_map.coe_fst' + theorem continuous_linear_map.coe_fst + theorem continuous_linear_map.coe_prod + theorem continuous_linear_map.coe_snd' + theorem continuous_linear_map.coe_snd - def continuous_linear_map.prod + theorem continuous_linear_map.prod_apply - def continuous_linear_map.zero 2020-03-26 14:41:41 5b44363 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-26 13:38:06 0fc4e6a refactor(data/set/function): move `function.restrict` to `set`, redefine (#2243) * refactor(data/set/function): move `function.restrict` to `set`, redefine We had `subtype.restrict` and `function.restrict` both defined in the same way using `subtype.val`. This PR moves `function.restrict` to `set.restrict` and makes it use `coe` instead of `subtype.val`. * Fix compile * Update src/data/set/function.lean ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/complex/exponential.lean Modified src/data/set/basic.lean + theorem set.preimage_coe_eq_preimage_coe_iff - theorem set.subtype.val_range +/- theorem subtype.val_range Modified src/data/set/countable.lean Modified src/data/set/function.lean + def set.cod_restrict + theorem set.coe_cod_restrict_apply +/- theorem set.range_restrict + def set.restrict + theorem set.restrict_apply + theorem set.restrict_eq Modified src/data/subtype.lean +/- theorem subtype.val_eq_coe Modified src/linear_algebra/basis.lean Modified src/logic/function.lean - def function.restrict - theorem function.restrict_eq Modified src/measure_theory/integration.lean Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.cod_restrict - theorem antilipschitz_with.id + theorem antilipschitz_with.restrict + theorem antilipschitz_with.subtype_coe + theorem antilipschitz_with.to_right_inv_on' + theorem antilipschitz_with.to_right_inv_on Modified src/topology/metric_space/basic.lean +/- theorem subtype.dist_eq Modified src/topology/metric_space/contracting.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem subtype.edist_eq Modified src/topology/metric_space/lipschitz.lean 2020-03-26 11:00:48 fa36a8e chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-26 10:05:36 ea10e17 feat(data/equiv/functor): bifunctor.map_equiv (#2241) * feat(data/equiv/functor): bifunctor.map_equiv * add documentation, and make the function an explicit argument * Update src/data/equiv/functor.lean ESTIMATED CHANGES Modified src/data/equiv/functor.lean + def bifunctor.map_equiv + theorem bifunctor.map_equiv_apply + theorem bifunctor.map_equiv_symm_apply +/- def functor.map_equiv + theorem functor.map_equiv_apply + theorem functor.map_equiv_symm_apply Modified src/ring_theory/free_comm_ring.lean 2020-03-26 07:48:43 ab33237 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-26 06:56:37 dbc4284 feat(tactic/squeeze): improve suggestion of `cases x; squeeze_simp` (#2218) * feat(tactic/squeeze): improve produced argument list and format * feat(tactic/squeeze): combine suggestions of repeated executions * add documentation * remove dead code * suggestion from reviewers * Apply suggestions from code review Co-Authored-By: Gabriel Ebner * Update squeeze.lean * Apply suggestions from code review Co-Authored-By: Bryan Gin-ge Chen * simplify and remove comparison of proof terms * simplify goal comparison data structure * add documentation and fix meta-variable handling * add example * fix tests * move tests * use binders with trivial names to abstract meta variables ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/squeeze.lean + def tactic.squeeze_loc_attr_carrier Modified test/examples.lean Added test/packaged_goal.lean 2020-03-26 04:20:05 30146a0 chore(tactic/solve_by_elim): refactor (#2222) * chore(tactic/solve_by_elim): cleanup * cleanup * what happened to my commit? * fix * fix * fixed? * Tweak comments * when called with empty lemmas, use the same default set as the interactive tactic * stop cheating with [] ~ none * indenting * docstring * fix docstrings ESTIMATED CHANGES Modified src/set_theory/pgame.lean Modified src/tactic/core.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/solve_by_elim.lean Modified test/solve_by_elim.lean 2020-03-26 01:26:44 2755eae chore(ci): only run on push (#2237) * chore(ci): only run on push * update contribution docs ESTIMATED CHANGES Modified .github/workflows/build.yml Modified docs/contribute/index.md 2020-03-26 00:32:53 6e6c81a feat(algebra/homology): chain complexes (#2174) * thoughts on chain complexes * minor * feat(category_theory): split epis and monos, and a result about (co)projections * total functor faithful * homology! * remove lint * something something homology * comment out broken stuff * adding comments * various * rewrite * fixes * Update src/category_theory/epi_mono.lean * Update src/category_theory/epi_mono.lean * Update src/category_theory/epi_mono.lean * better use of ext * feat(category_theory): subsingleton (has_zero_morphisms) * revert some independent changes moved to #2180 * revert some independent changes moved to #2181 * revert independent changes moved to #2182 * fix * Apply suggestions from code review Co-Authored-By: Johan Commelin * changes from review * module docs * various * Update src/category_theory/shift.lean Co-Authored-By: Kevin Buzzard * various * various fixes * fix * all the minor suggestions Co-Authored-By: Markus Himmel * ugh... fix reverting stuff from #2180 * off by one * various * use abbreviation * chain as well as cochain * satisfy the linter * some simp lemmas * simp lemmas ESTIMATED CHANGES Added src/algebra/homology/chain_complex.lean + theorem chain_complex.comm + theorem chain_complex.comm_at + theorem chain_complex.d_squared + def chain_complex.forget + def chain_complex + theorem cochain_complex.comm + theorem cochain_complex.comm_at + theorem cochain_complex.d_squared + def cochain_complex.forget + def cochain_complex Added src/algebra/homology/homology.lean + def cochain_complex.cohomology + def cochain_complex.image_to_kernel_map + def cochain_complex.induced_map_on_cycles Modified src/category_theory/concrete_category/basic.lean Added src/category_theory/differential_object.lean + theorem category_theory.differential_object.comp_f + def category_theory.differential_object.forget + def category_theory.differential_object.hom.comp + def category_theory.differential_object.hom.id + structure category_theory.differential_object.hom + theorem category_theory.differential_object.id_f + structure category_theory.differential_object Modified src/category_theory/equivalence.lean + def category_theory.equivalence.pow + theorem category_theory.equivalence.pow_minus_one + theorem category_theory.equivalence.pow_one + theorem category_theory.equivalence.pow_zero Added src/category_theory/graded_object.lean + def category_theory.graded_object.comap + def category_theory.graded_object.comap_comp + def category_theory.graded_object.comap_eq + theorem category_theory.graded_object.comap_eq_symm + theorem category_theory.graded_object.comap_eq_trans + def category_theory.graded_object.comap_equiv + def category_theory.graded_object.comap_id + theorem category_theory.graded_object.comp_apply + theorem category_theory.graded_object.id_apply + def category_theory.graded_object.total + def category_theory.graded_object + def category_theory.graded_object_with_shift Modified src/category_theory/limits/shapes/zero.lean Added src/category_theory/shift.lean + def category_theory.shift + theorem category_theory.shift_zero_eq_zero 2020-03-25 21:56:35 e04892e feat(topology/metric_space/isometry): add_left/right, neg (#2234) Also add some lemmas from `equiv` namespace to `isometric`. ESTIMATED CHANGES Modified src/topology/metric_space/isometry.lean + theorem isometric.apply_symm_apply + theorem isometric.eq_symm_apply + theorem isometric.ext + theorem isometric.symm_apply_apply + theorem isometric.symm_apply_eq + theorem isometric.trans_apply 2020-03-25 19:18:04 bb01537 feat(topology/local_homeomorph): a few facts about `local_homeomorph` (#2231) * `eventually_inv_right`, `eventually_inv_left` * `is_O_congr`, `is_o_congr` ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem homeomorph.is_O_congr + theorem homeomorph.is_O_with_congr + theorem homeomorph.is_o_congr + theorem local_homeomorph.is_O_congr + theorem local_homeomorph.is_O_with_congr + theorem local_homeomorph.is_o_congr Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.eventually_left_inverse' + theorem local_homeomorph.eventually_left_inverse + theorem local_homeomorph.eventually_right_inverse' + theorem local_homeomorph.eventually_right_inverse 2020-03-25 16:34:50 05aa955 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-25 15:44:21 bedb810 feat(*): a few more theorems about `unique` and `subsingleton` (#2230) * feat(*): a few more theorems about `unique` and `subsingleton` * Fix compile, fix two non-terminate `simp`s * Update src/topology/metric_space/antilipschitz.lean This lemma will go to another PR ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/set/basic.lean + theorem set.subsingleton_univ + theorem subsingleton.eq_univ_of_nonempty + theorem subsingleton.set_cases Modified src/logic/unique.lean + theorem function.injective.comap_subsingleton + def function.surjective.unique + theorem nonempty_unique_or_exists_ne + theorem subsingleton_or_exists_ne - def unique.of_surjective Modified src/topology/basic.lean + theorem subsingleton.is_closed + theorem subsingleton.is_open Modified src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.of_subsingleton 2020-03-25 13:11:33 1eae0be feat(data/equiv): pi_congr (#2204) * feat(data/equiv): pi_congr * docstrings * change case for consistency * tidying up * switching names * fixes * Update src/data/equiv/basic.lean * implicit arguments ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.Pi_congr + def equiv.Pi_congr_left' + theorem equiv.Pi_congr_left'_apply + theorem equiv.Pi_congr_left'_symm_apply + def equiv.Pi_congr_left 2020-03-25 10:30:42 83014bf chore(README): add Bryan; alphabetize (#2238) ESTIMATED CHANGES Modified README.md 2020-03-25 03:10:56 d9083bc chore(algebra/ordered_field): merge `inv_pos` / `zero_lt_inv` with `inv_pos'` / `inv_neg` (#2226) * chore(algebra/ordered_field): merge `inv_pos` / `zero_lt_inv` with `inv_pos'` / `inv_neg` Also move some lemmas to `linear_ordered_field` * Update src/data/real/hyperreal.lean * Fix compile * Actually fix compile of `data/real/hyperreal` ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/ordered_field.lean +/- theorem inv_lt_zero - theorem inv_neg' - theorem inv_pos' +/- theorem inv_pos Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/convex/basic.lean Modified src/analysis/convex/cone.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/specific_limits.lean Modified src/data/complex/exponential.lean Modified src/data/rat/cast.lean Modified src/data/real/basic.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.omega_pos Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-03-25 00:53:41 24b82c9 feat(tactic/core): trace_if_enabled (#2209) * feat(tactic/core): trace_for * typo * oops * oops * rename to trace_if_enabled * trace_state_if_enabled ESTIMATED CHANGES Modified src/tactic/chain.lean Modified src/tactic/core.lean Modified src/tactic/finish.lean Modified src/tactic/suggest.lean 2020-03-24 22:07:53 efdc850 feat(tactic/conv/apply_congr): using congruence lemmas inside conv (#2221) * Update interactive.lean Added Keeley Hoeks Zoom tactic. * Add files via upload Added operand.lean file to the tactic folder. * Add files via upload Added the test files for zoom and operand. * Rename operand_test.lean to operand.lean * Update and rename zoom_test.lean to zoom.lean Fixed the imports * Update operand.lean * Update tactics.md * Update operand.lean Fixed the lamda problem. * Update operand.lean Added tests without lamdas * Update operand.lean Added header * Update operand.lean Added header * Update operand.lean deleted zoom * Update zoom.lean Added comment to self * Update operand.lean Added doc_string to operand * Update interactive.lean Added doc_string to zoom * Update tactics.md Fixed colon and brackets in operand doc * Update operand.lean Fixed colon placements and brackets * merge * feat(tactic/converter/apply_congr): apply congruence lemmas in conv * last example * fix docs * Apply suggestions from code review Co-Authored-By: Bryan Gin-ge Chen * remove docs from tactics.md * merge doc comment fragments * import in tactic.basic * docs * add to conv doc tactic ESTIMATED CHANGES Modified src/tactic/basic.lean Added src/tactic/converter/apply_congr.lean Modified src/tactic/converter/interactive.lean Modified src/tactic/doc_commands.lean Added test/conv/apply_congr.lean 2020-03-24 18:51:00 5437b10 feat(tactic/show_term): show_term { t } prints the term constructed by t (#2227) * feat(tactic): show_term { t } prints the term constructed by t * add to tactic.basic * move tests * silencing * Update src/tactic/show_term.lean Co-Authored-By: Gabriel Ebner * clean up * remove tests * Update src/tactic/show_term.lean Co-Authored-By: Gabriel Ebner ESTIMATED CHANGES Modified src/tactic/basic.lean Added src/tactic/show_term.lean 2020-03-24 16:01:34 5f376b2 feat(data/equiv): sigma_congr (#2205) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.sigma_congr + def equiv.sigma_congr_left' 2020-03-24 12:31:39 bb6e1d4 chore(README,docs/*): replace tactic doc files with links to mathlib docs (#2225) * chore(README,doc/*): replace tactic doc files with links to mathlib docs Other cleanup: - replaced leanprover/lean and leanprover/mathlib with leanprover-community/lean and leanprover-community/mathlib - updated pull request template and instructions for contributors with info about tactic doc entries - formatting / style for simp.md and tactic_writing.md - fixed broken link in category_theory.category.default * reword contributor suggestion for tactic tests * reviewer comments ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md Modified README.md Modified archive/README.md Modified docs/commands.md Modified docs/contribute/doc.md Modified docs/contribute/index.md Modified docs/extras/calc.md Modified docs/extras/conv.md Modified docs/extras/simp.md Modified docs/extras/tactic_writing.md Modified docs/extras/well_founded_recursion.md Modified docs/holes.md Modified docs/tactics.md Modified docs/theories/category_theory.md Modified src/category_theory/category/default.lean 2020-03-24 09:46:52 b504430 feat(linear_algebra): add range_le_ker_iff (#2229) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.range_le_ker_iff 2020-03-23 18:23:19 6a7e55e chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-23 17:30:32 9a9794d doc(data/int/gcd): attribution + module doc (#2217) * doc(data/int/gcd): attribution + module doc * reword ESTIMATED CHANGES Modified src/data/int/gcd.lean +/- theorem nat.gcd_eq_gcd_ab +/- theorem nat.xgcd_aux_P +/- theorem nat.xgcd_aux_rec 2020-03-23 14:57:34 9832fba refactor(topology/metric_space/contracting): redefine using emetric (#2070) * refactor(topology/metric_space/contracting): redefine using emetric * Fix a typo produced by "copy+paste" * Fix compile * Refactor `efixed_point`, `efixed_point'` * Prove a version of Banach fixed point theorem for a map contracting on a complete forward-invariant set. * Separately prove "primed" lemmas. I Tried to define `efixed_point'` in terms of `efixed_point` and failed: every time I use it, it generates a goal `complete_space ↥s`. So, I decided to deduce `exists_fixed_point'` from `exists_fixed_point`, then use it in the proofs. ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.maps_to.coe_restrict_apply + theorem set.maps_to.iterate + theorem set.maps_to.iterate_restrict + def set.maps_to.restrict Modified src/data/subtype.lean + theorem subtype.val_eq_coe Modified src/topology/constructions.lean + theorem continuous_subtype_coe Modified src/topology/metric_space/contracting.lean + theorem contracting_with.apriori_edist_iterate_efixed_point_le' + theorem contracting_with.apriori_edist_iterate_efixed_point_le +/- theorem contracting_with.dist_fixed_point_le + theorem contracting_with.edist_efixed_point_le' + theorem contracting_with.edist_efixed_point_le + theorem contracting_with.edist_efixed_point_lt_top' + theorem contracting_with.edist_efixed_point_lt_top + theorem contracting_with.edist_inequality + theorem contracting_with.edist_le_of_fixed_point + theorem contracting_with.efixed_point_eq_of_edist_lt_top' + theorem contracting_with.efixed_point_eq_of_edist_lt_top + theorem contracting_with.efixed_point_is_fixed' + theorem contracting_with.efixed_point_is_fixed + theorem contracting_with.efixed_point_mem' + theorem contracting_with.eq_or_edist_eq_top_of_fixed_points + theorem contracting_with.exists_fixed_point' +/- theorem contracting_with.exists_fixed_point + def contracting_with.fixed_point +/- theorem contracting_with.fixed_point_is_fixed +/- theorem contracting_with.fixed_point_unique + theorem contracting_with.one_sub_K_ne_top + theorem contracting_with.one_sub_K_ne_zero + theorem contracting_with.one_sub_K_pos' +/- theorem contracting_with.one_sub_K_pos + theorem contracting_with.restrict + theorem contracting_with.tendsto_iterate_efixed_point' + theorem contracting_with.tendsto_iterate_efixed_point + theorem contracting_with.tendsto_iterate_fixed_point +/- theorem contracting_with.to_lipschitz_with Modified src/topology/metric_space/emetric_space.lean + def emetric.edist_lt_top_setoid Modified src/topology/metric_space/lipschitz.lean + theorem lipschitz_with.edist_lt_top 2020-03-23 12:25:53 25df50e chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-23 11:21:48 5b2c952 feat(analysis/convex.cone): prove M. Riesz extension theorem, Hahn-Banach theorem (#2120) * feat(analysis/convex.cone): prove M. Riesz extension theorem WIP * Complete the proof TODO: move many facts to `linear_algebra/basic`, fix possible build failures in other files * Fix compile of `analysis/convex/cone` * Cleanup, rewrite using `linear_pmap`s * Deduce Hahn-Banach theorem from M. Riesz extension theorem * Fix lint * Apply suggestions from code review [skip_ci] Co-Authored-By: sgouezel * Expand comments, prove properties of `convex.to_cone`. * Docstrings * Apply suggestions from code review Co-Authored-By: sgouezel * Update src/analysis/convex/cone.lean * Update src/linear_algebra/basic.lean ESTIMATED CHANGES Modified src/algebra/module.lean + theorem smul_eq_zero + theorem submodule.coe_mk +/- theorem submodule.coe_sub Modified src/analysis/convex/basic.lean + theorem convex_iff_forall_pos Added src/analysis/convex/cone.lean + theorem convex.mem_to_cone' + theorem convex.mem_to_cone + theorem convex.subset_to_cone + def convex.to_cone + theorem convex.to_cone_eq_Inf + theorem convex.to_cone_is_least + theorem convex_cone.add_mem + theorem convex_cone.coe_inf + def convex_cone.comap + theorem convex_cone.comap_comap + theorem convex_cone.comap_id + theorem convex_cone.convex + theorem convex_cone.ext' + theorem convex_cone.ext + def convex_cone.map + theorem convex_cone.map_id + theorem convex_cone.map_map + theorem convex_cone.mem_Inf + theorem convex_cone.mem_bot + theorem convex_cone.mem_coe + theorem convex_cone.mem_comap + theorem convex_cone.mem_inf + theorem convex_cone.mem_mk + theorem convex_cone.mem_top + theorem convex_cone.smul_mem + theorem convex_cone.smul_mem_iff + structure convex_cone + theorem convex_hull_to_cone_eq_Inf + theorem convex_hull_to_cone_is_least + theorem exists_extension_of_le_sublinear + theorem riesz_extension.exists_top + theorem riesz_extension.step + theorem riesz_extension Added src/analysis/normed_space/hahn_banach.lean + theorem exists_extension_norm_eq Modified src/data/set/basic.lean + theorem set.bex_image_iff + theorem set_coe.exists' Modified src/linear_algebra/basic.lean + theorem linear_equiv.prod_apply + theorem linear_equiv.prod_symm + theorem linear_equiv.refl_apply + theorem submodule.coe_of_le + theorem submodule.disjoint_span_singleton +/- theorem submodule.of_le_apply Added src/linear_algebra/linear_pmap.lean + def linear_map.comp_pmap + theorem linear_map.comp_pmap_apply + def linear_map.to_pmap + theorem linear_map.to_pmap_apply + def linear_pmap.cod_restrict + def linear_pmap.comp + def linear_pmap.coprod + theorem linear_pmap.coprod_apply + theorem linear_pmap.domain_mk_span_singleton + theorem linear_pmap.domain_mono + theorem linear_pmap.domain_sup + def linear_pmap.eq_locus + theorem linear_pmap.eq_of_le_of_domain_eq + theorem linear_pmap.fst_apply + theorem linear_pmap.le_of_eq_locus_ge + theorem linear_pmap.map_add + theorem linear_pmap.map_neg + theorem linear_pmap.map_smul + theorem linear_pmap.map_sub + theorem linear_pmap.map_zero + theorem linear_pmap.mk_apply + theorem linear_pmap.mk_span_singleton_apply + theorem linear_pmap.neg_apply + theorem linear_pmap.snd_apply + theorem linear_pmap.sup_apply + theorem linear_pmap.sup_h_of_disjoint + theorem linear_pmap.to_fun_eq_coe + structure linear_pmap + theorem subtype.coe_prop Modified src/order/basic.lean + theorem directed.mono - theorem directed_mono + theorem directed_on.mono + theorem directed_on_image Modified src/order/conditionally_complete_lattice.lean + theorem exists_between_of_forall_le 2020-03-23 04:27:27 d3d78a9 chore(ring_theory/algebra): generalize restrict_scalars to noncommutative algebras (#2216) ESTIMATED CHANGES Modified src/ring_theory/algebra.lean 2020-03-23 01:53:56 fe40a15 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-23 01:05:38 6aa5572 feat(algebra/module): `f : E →+ F` is `ℚ`-linear (#2215) * feat(algebra/module): `f : E →+ F` is `ℚ`-linear Also cleanup similar lemmas about `ℕ` and `ℤ`. * Fix a typo ESTIMATED CHANGES Modified src/algebra/direct_limit.lean +/- theorem add_comm_group.direct_limit.directed_system Modified src/algebra/module.lean + theorem add_monoid_hom.map_int_cast_smul + theorem add_monoid_hom.map_nat_cast_smul + theorem add_monoid_hom.map_rat_cast_smul + theorem add_monoid_hom.map_rat_module_smul - theorem add_monoid_hom.map_smul_cast + def add_monoid_hom.to_int_linear_map + def add_monoid_hom.to_rat_linear_map - def is_add_group_hom.to_linear_map - theorem module.add_monoid_smul_eq_smul +/- theorem module.gsmul_eq_smul_cast - theorem module.smul_eq_smul + theorem semimodule.add_monoid_smul_eq_smul + theorem semimodule.smul_eq_smul 2020-03-22 22:10:26 b9ee94d chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-22 21:15:30 7f103fd fix(tactic/transport): make `to_additive` copy `protected`status (#2212) * fix(tactic/transport): make `to_additive` copy `protected`status Fixes #2210, also slightly cleanup `algebra/group/units` * Fix compile (protected `finset.sum`) * Fix usage of `finset.sum` * Update src/tactic/transport.lean Co-Authored-By: Gabriel Ebner * fix build ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean Modified src/algebra/group/units.lean - theorem nat.add_units_eq_one + theorem nat.add_units_eq_zero Modified src/data/complex/exponential.lean Modified src/data/polynomial.lean Modified src/linear_algebra/nonsingular_inverse.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/measure_space.lean Modified src/tactic/transport.lean Modified src/topology/algebra/infinite_sum.lean 2020-03-22 17:01:05 6febc8c feat(tactic/doc_commands): allow doc strings on add_tactic_doc (#2201) * feat(tactic/doc_commands): allow doc strings on add_tactic_doc * Add link to Lean issue. * Update src/tactic/doc_commands.lean Co-Authored-By: Rob Lewis * Change all `description :=` to docstrings. * Change suggested by Bryan. * Use docstrings in library_note * Factor out `tactic.eval_pexpr`. * Add add_decl_doc command. * Update docs/contribute/doc.md * Update src/tactic/doc_commands.lean * Update src/tactic/doc_commands.lean Co-Authored-By: Bryan Gin-ge Chen ESTIMATED CHANGES Modified docs/commands.md Modified docs/contribute/doc.md Modified src/algebra/category/Mon/basic.lean Modified src/algebra/module.lean Modified src/deprecated/group.lean Modified src/group_theory/coset.lean Modified src/logic/basic.lean Modified src/meta/expr.lean Modified src/tactic/cache.lean - def tactic.interactive.my_id Modified src/tactic/doc_commands.lean + def f Modified src/tactic/elide.lean Modified src/tactic/ext.lean Modified src/tactic/finish.lean Added src/tactic/fix_reflect_string.lean Modified src/tactic/lint.lean Modified src/tactic/localized.lean Modified src/tactic/norm_cast.lean Modified src/tactic/norm_num.lean - def tactic.interactive.a - def tactic.interactive.normed_a Added test/doc_commands.lean + def bar.foo 2020-03-22 13:55:54 4e46b30 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-22 13:06:37 7d02c23 chore(linear_algebra/*): rename copair, pair to coprod, prod (#2213) * chore(linear_algebra/*): rename copair, pair to coprod, prod * add back mistakenly deleted lemma * fix sensitivity, change comments to module docs * docstrings, linting * Update archive/sensitivity.lean ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.symm_symm_apply +/- theorem linear_equiv.trans_apply +/- theorem linear_map.comap_le_comap_iff - theorem linear_map.comap_pair_prod + theorem linear_map.comap_prod_prod - def linear_map.copair - theorem linear_map.copair_apply - theorem linear_map.copair_inl - theorem linear_map.copair_inl_inr - theorem linear_map.copair_inr + def linear_map.coprod + theorem linear_map.coprod_apply + theorem linear_map.coprod_inl + theorem linear_map.coprod_inl_inr + theorem linear_map.coprod_inr - theorem linear_map.fst_eq_copair + theorem linear_map.fst_eq_coprod - theorem linear_map.fst_pair + theorem linear_map.fst_prod - theorem linear_map.inl_eq_pair + theorem linear_map.inl_eq_prod - theorem linear_map.inr_eq_pair + theorem linear_map.inr_eq_prod +/- theorem linear_map.is_linear_map_prod_iso - theorem linear_map.ker_pair + theorem linear_map.ker_prod - theorem linear_map.map_copair_prod + theorem linear_map.map_coprod_prod - def linear_map.pair - theorem linear_map.pair_apply +/- theorem linear_map.pair_fst_snd +/- def linear_map.prod + theorem linear_map.prod_apply - theorem linear_map.snd_eq_copair + theorem linear_map.snd_eq_coprod - theorem linear_map.snd_pair + theorem linear_map.snd_prod Modified src/linear_algebra/basis.lean +/- theorem constr_smul +/- theorem is_basis_empty_bot +/- theorem linear_independent.image_subtype +/- theorem linear_independent.total_comp_repr +/- def linear_independent.total_equiv +/- theorem linear_independent_iff_not_mem_span +/- theorem linear_independent_singleton Modified src/linear_algebra/dimension.lean 2020-03-22 08:44:10 3a71499 feat(ring_theory/algebra) : generalize `rat.algebra_rat` to `division_ring` (#2208) Other changes: * add lemmas about field inverse to `algebra/semiconj` and `algebra/commute`; * drop `rat.cast`, define `instance : has_coe` right away to avoid accidental use of `rat.cast` in theorems; * define `rat.cast_hom` instead of `is_ring_hom rat.cast`; * generalize some theorems about from `field` to `division_ring`. ESTIMATED CHANGES Modified src/algebra/commute.lean + theorem commute.div_left + theorem commute.div_right + theorem commute.finv_finv + theorem commute.finv_left + theorem commute.finv_left_iff + theorem commute.finv_right + theorem commute.finv_right_iff Modified src/algebra/field_power.lean - theorem cast_fpow + theorem rat.cast_fpow Modified src/algebra/semiconj.lean + theorem semiconj_by.finv_symm_left + theorem semiconj_by.finv_symm_left_iff Modified src/data/padics/padic_numbers.lean Modified src/data/rat/cast.lean +/- theorem rat.cast_div + def rat.cast_hom +/- theorem rat.cast_inv +/- theorem rat.cast_mk +/- theorem rat.cast_nonneg +/- theorem rat.cast_pow + theorem rat.coe_cast_hom Modified src/ring_theory/algebra.lean 2020-03-22 04:38:42 9485a85 fix(linear_algebra/basic): make R explicit in linear_equiv.refl (#2161) * fix(linear_algebra/basic): make R explicit in linear_equiv.refl * getting mathlib to compile again * better variablism ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- def linear_equiv.congr_right Modified src/topology/algebra/module.lean 2020-03-22 02:00:48 19de416 doc(ring_theory/adjoin_root): add docstring (#2211) * docstring for adjoin_root * adding some quotes ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean 2020-03-21 14:18:51-07:00 09401b7 revert accidental push to master ESTIMATED CHANGES Modified src/tactic/chain.lean Modified src/tactic/core.lean Modified src/tactic/finish.lean Modified src/tactic/suggest.lean Modified src/tactic/tidy.lean 2020-03-21 14:00:51-07:00 3375126 feat(tactic/core): trace_for ESTIMATED CHANGES Modified src/tactic/chain.lean Modified src/tactic/core.lean Modified src/tactic/finish.lean Modified src/tactic/suggest.lean Modified src/tactic/tidy.lean 2020-03-21 19:24:58 af0cf30 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-21 18:41:30 0bd8b94 refactor(scripts/mk_nolint): produce nolints.txt file during linting (#2194) * Factor out code to determine automatically-generated declarations. * Mark bool.decidable_eq and decidable.to_bool as [inline] * Execute linters in parallel. * Add lint_mathlib.lean script. * Switch CI to new lint_mathlib.lean script. * Make linter fail. * Revert "Make linter fail." This reverts commit 8b509c5815d862d0d060eac407cf6d22d743f960. * Remove one line from nolints.txt * Change shebang in rm_all.sh to be nixos-compatible * Disable parallel checking. * Make linter fail. * Revert "Make linter fail." This reverts commit 8f5ec62030ecaec93d01981b273c2a737d67eddf. * Move is_auto_decl to meta/expr.lean * Remove list.mmap_async * Factor out name.from_string ESTIMATED CHANGES Modified .github/workflows/build.yml Modified .gitignore Added scripts/lint_mathlib.lean Modified scripts/mk_all.sh Deleted scripts/mk_nolint.lean Modified scripts/rm_all.sh Modified scripts/update_nolints.sh Modified src/logic/basic.lean Modified src/logic/function.lean Modified src/meta/expr.lean Modified src/tactic/lint.lean Modified test/lint.lean 2020-03-21 10:35:34 dd85db0 doc(docs/contribute/index.md): remove obsolete recommendation to use lean-3.7.2 branch (#2206) ESTIMATED CHANGES Modified docs/contribute/index.md 2020-03-21 08:46:38 bc84a20 chore(leanpkg.toml): Lean 3.7.2c (#2203) * chore(leanpkg.toml): Lean 3.7.2c Lean 3.7.1c had a bug that prevented Lean on windows from importing oleans properly (see https://github.com/leanprover-community/lean/pull/155). This is fixed in Lean 3.7.2c. * update contribute/index.md ESTIMATED CHANGES Modified docs/contribute/index.md Modified leanpkg.toml 2020-03-21 02:10:50 34bac8d feat(category_theory): add naturality_assoc simp lemma (#2200) ESTIMATED CHANGES Modified src/category_theory/natural_transformation.lean 2020-03-20 23:38:07 99ba8f4 chore(category_theory): change monoidal_of_has_finite_products to use binary products (#2190) * chore(category_theory): change monoidal_of_has_finite_products to use binary products * remove some simp annotations for now * fixes ESTIMATED CHANGES Modified src/category_theory/monoidal/of_has_finite_products.lean + theorem category_theory.monoidal_of_has_finite_coproducts.associator_hom + theorem category_theory.monoidal_of_has_finite_coproducts.left_unitor_hom + theorem category_theory.monoidal_of_has_finite_coproducts.left_unitor_inv + theorem category_theory.monoidal_of_has_finite_coproducts.right_unitor_hom + theorem category_theory.monoidal_of_has_finite_coproducts.right_unitor_inv +/- def category_theory.monoidal_of_has_finite_coproducts + theorem category_theory.monoidal_of_has_finite_products.associator_hom + theorem category_theory.monoidal_of_has_finite_products.left_unitor_hom + theorem category_theory.monoidal_of_has_finite_products.left_unitor_inv + theorem category_theory.monoidal_of_has_finite_products.right_unitor_hom + theorem category_theory.monoidal_of_has_finite_products.right_unitor_inv +/- def category_theory.monoidal_of_has_finite_products 2020-03-20 21:22:50 9420167 feat(category_theory): unbundled functors and lax monoidal functors (#2193) * feat(category_theory): unbundled functors and lax monoidal functors * doc string ESTIMATED CHANGES Modified src/category_theory/functor.lean Added src/category_theory/functorial.lean + def category_theory.functor.of + def category_theory.functorial_comp + def category_theory.map + theorem category_theory.map_functorial_obj Added src/category_theory/monoidal/functorial.lean + def category_theory.lax_monoidal_functor.of 2020-03-20 18:53:45 b224943 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-20 17:26:39 8d44098 feat(finsupp): move convolution product to type wrapper `add_monoid_algebra`. (#2135) * pulling out convolution product * various * chore(ring_theory/polynomial): refactor proof of is_noetherian_ring_fin * not there yet * feat(ring_theory/polynomial): refactor of is_integral_domain_fin * fix * .. * refactor * fix * yay * cleanup * satisfying the linter * linter * improving documentation * add distrib instance for pointwise multiplication * move files per Johan's suggestion * fix import * Update src/data/polynomial.lean Co-Authored-By: Johan Commelin * type annotation ESTIMATED CHANGES Modified src/data/finsupp.lean - theorem finsupp.mul_def - theorem finsupp.one_def - theorem finsupp.prod_single - theorem finsupp.single_mul_single - theorem finsupp.support_mul Added src/data/finsupp/pointwise.lean + theorem finsupp.mul_apply + theorem finsupp.support_mul Added src/data/monoid_algebra.lean + theorem add_monoid_algebra.mul_def + theorem add_monoid_algebra.one_def + theorem add_monoid_algebra.prod_single + theorem add_monoid_algebra.single_mul_single + theorem add_monoid_algebra.support_mul + def add_monoid_algebra + theorem monoid_algebra.mul_def + theorem monoid_algebra.one_def + theorem monoid_algebra.prod_single + theorem monoid_algebra.single_mul_single + theorem monoid_algebra.support_mul + def monoid_algebra Modified src/data/mv_polynomial.lean + def mv_polynomial.coeff_coe_to_fun +/- def mv_polynomial Modified src/data/polynomial.lean +/- def polynomial.C +/- def polynomial.X + def polynomial.monomial +/- theorem polynomial.single_eq_C_mul_X +/- def polynomial Modified src/linear_algebra/finsupp.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean - def polynomial.monomial 2020-03-20 15:01:46 0f1b465 feat(category_theory/limits): the isomorphism expressing preservation of chosen limits (#2192) * feat(category_theory/limits): the isomorphism expressing preservation of chosen limits * Update src/category_theory/limits/limits.lean ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.cone_point_unique_up_to_iso + def category_theory.limits.is_limit.cone_point_unique_up_to_iso Modified src/category_theory/limits/preserves.lean + def category_theory.limits.preserves_colimit_iso + def category_theory.limits.preserves_limit_iso 2020-03-20 12:24:26 c66c4af chore(algebra/Module/monoidal): add the simp lemmas for unitors and associativity (#2196) * feat(algebra/category/Module/monoidal): simp lemmas * oops * depressingly easy * order of arguments ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean - def Module.of_self + def Module.of_self_iso Modified src/algebra/category/Module/monoidal.lean + theorem Module.monoidal_category.associator_hom + theorem Module.monoidal_category.left_unitor_hom + theorem Module.monoidal_category.right_unitor_hom 2020-03-20 10:05:42 d93e0dd chore(category_theory): missing simp lemmas (#2188) * chore(category_theory): missing simp lemmas * Apply suggestions from code review Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/category_theory/types.lean + theorem category_theory.functor_to_types.map_hom_map_inv_apply + theorem category_theory.functor_to_types.map_inv_map_hom_apply 2020-03-20 07:32:29 b4e6313 feat(category_theory): subsingleton (has_zero_morphisms) (#2180) * feat(category_theory): subsingleton (has_zero_morphisms) * fix * Update src/category_theory/limits/shapes/zero.lean Co-Authored-By: Markus Himmel * Update src/category_theory/limits/shapes/zero.lean Co-Authored-By: Markus Himmel * non-terminal simp * add warning message * Update src/category_theory/discrete_category.lean Co-Authored-By: Markus Himmel * Apply suggestions from code review ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean Modified src/category_theory/limits/shapes/zero.lean + theorem category_theory.limits.equivalence_preserves_zero_morphisms + theorem category_theory.limits.has_zero_morphisms.ext Modified src/tactic/ext.lean - theorem ulift.ext 2020-03-20 05:08:55 cc04132 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-20 03:59:59 6c97ce0 feat(category_theory): some natural isomorphisms related to composition by functors (#2189) * feat(category_theory): some natural isomorphisms related to composition by functors * tidy up * cleanup * fix * better design ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.map_pair + def category_theory.limits.map_pair_iso +/- theorem category_theory.limits.map_pair_left +/- theorem category_theory.limits.map_pair_right + def category_theory.limits.pair_comp - def category_theory.limits.pair_function +/- theorem category_theory.limits.pair_obj_left +/- theorem category_theory.limits.pair_obj_right Modified src/category_theory/pempty.lean + def category_theory.functor.empty_ext 2020-03-20 01:35:59 d12bbc0 feat(data/zmod): lemmas about totient and zmod (#2158) * feat(data/zmod): lemmas about totient and zmod * docstring * Changes based on Johan's comments * fix build * subsingleton (units(zmod 2)) ESTIMATED CHANGES Modified src/data/fintype.lean Modified src/data/nat/totient.lean + theorem nat.totient_zero + theorem zmod.card_units_eq_totient Modified src/data/zmod/basic.lean + theorem zmod.cast_unit_of_coprime + def zmod.unit_of_coprime Modified src/data/zmod/quadratic_reciprocity.lean Modified src/field_theory/finite.lean + theorem nat.modeq.pow_totient + theorem zmod.pow_totient 2020-03-19 23:15:04 3dd95a2 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-19 21:56:33 1a398a7 docs(category_theory/limits): adding many docstrings (#2185) * lots of comments! * remove #lint * Apply suggestions from code review lots of missing "co"s Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean 2020-03-19 18:52:34 344a41e feat(data/finset): monotone bijection from fin k (#2163) * feat(data/finset): increasing bijection between fin k and an ordered finset * fix build * fix linter * make argument explicit * add equiv for fintype ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem dite_comp_equiv_update Modified src/data/finset.lean + theorem finset.bij_on_mono_of_fin + def finset.mono_of_fin +/- theorem finset.sort_sorted_lt + theorem finset.sorted_last_eq_max' + theorem finset.sorted_zero_eq_min' Modified src/data/fintype.lean + theorem finset.card_fin + theorem fintype.card_finset Modified src/data/list/sort.lean + theorem list.nth_le_of_sorted_of_le Modified src/group_theory/sylow.lean 2020-03-19 16:32:37 b3ef685 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-19 15:12:14 9dbc606 refactor(*): drop `lattice` namespace (#2166) * refactor(*): drop `lattice` namespace Other changes: * rename `*neg*` to `*compl*` in `boolean_algebra`. I didn't touch `sub` in `boolean_algebra`; should it become `sdiff`? * Fix some compile failures * Fix the rest of compile failures Drop `real.Sup` and `real.Inf`, define instances instead. * fix build * fix build * Fix build ESTIMATED CHANGES Modified docs/tactics.md Modified scripts/nolints.txt Modified src/algebra/associated.lean Modified src/algebra/direct_limit.lean Modified src/algebra/order_functions.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/punit_instances.lean Modified src/analysis/ODE/gronwall.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/limits/lattice.lean Modified src/data/analysis/filter.lean Modified src/data/equiv/denumerable.lean Modified src/data/finset.lean + theorem infi_eq_infi_finset - theorem lattice.infi_eq_infi_finset - theorem lattice.supr_eq_supr_finset + theorem supr_eq_supr_finset Modified src/data/list/min_max.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/enat.lean Modified src/data/pequiv.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/factors.lean Modified src/data/polynomial.lean Modified src/data/rat/order.lean Modified src/data/real/basic.lean + theorem real.Inf_def +/- theorem real.Inf_empty +/- theorem real.Inf_of_not_bdd_below + theorem real.Sup_def +/- theorem real.Sup_empty +/- theorem real.Sup_of_not_bdd_above +/- theorem real.Sup_univ Modified src/data/real/ennreal.lean Modified src/data/real/ereal.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.is_st_Sup +/- theorem hyperreal.st_eq_Sup Modified src/data/real/nnreal.lean Modified src/data/rel.lean Modified src/data/semiquot.lean Modified src/data/set/basic.lean Modified src/data/set/disjointed.lean Modified src/data/set/finite.lean Modified src/data/set/intervals/basic.lean Modified src/data/set/intervals/disjoint.lean Modified src/data/set/lattice.lean Modified src/data/setoid.lean Modified src/field_theory/mv_polynomial.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/manifold.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/group_theory/congruence.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp.lean Modified src/linear_algebra/finsupp_vector_space.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/indicator_function.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/simple_func_dense.lean Modified src/order/boolean_algebra.lean + theorem boolean_algebra.sub_le_sub + theorem compl_bot + theorem compl_compl' + theorem compl_inf + theorem compl_inf_eq_bot + theorem compl_inj + theorem compl_inj_iff + theorem compl_le_compl + theorem compl_le_compl_iff_le + theorem compl_le_iff_compl_le + theorem compl_le_of_compl_le + theorem compl_sup + theorem compl_sup_eq_top + theorem compl_top + theorem compl_unique + theorem inf_compl_eq_bot - theorem lattice.inf_neg_eq_bot - theorem lattice.le_neg_of_le_neg - theorem lattice.neg_bot - theorem lattice.neg_eq_neg_iff - theorem lattice.neg_eq_neg_of_eq - theorem lattice.neg_inf - theorem lattice.neg_inf_eq_bot - theorem lattice.neg_le_iff_neg_le - theorem lattice.neg_le_neg - theorem lattice.neg_le_neg_iff_le - theorem lattice.neg_le_of_neg_le - theorem lattice.neg_neg - theorem lattice.neg_sup - theorem lattice.neg_sup_eq_top - theorem lattice.neg_top - theorem lattice.neg_unique - theorem lattice.sub_eq - theorem lattice.sub_eq_left - theorem lattice.sub_le_sub - theorem lattice.sup_neg_eq_top - theorem lattice.sup_sub_same + theorem le_compl_of_le_compl + theorem sub_eq + theorem sub_eq_left + theorem sup_compl_eq_top + theorem sup_sub_same Modified src/order/bounded_lattice.lean + theorem bot_inf_eq + theorem bot_le + theorem bot_lt_iff_ne_bot + theorem bot_sup_eq + theorem bot_unique + theorem bounded_lattice.ext + theorem eq_bot_iff + theorem eq_bot_mono + theorem eq_top_iff + theorem eq_top_mono + theorem inf_bot_eq + theorem inf_eq_bot_iff_le_compl + theorem inf_eq_top_iff + theorem inf_top_eq - theorem lattice.bot_inf_eq - theorem lattice.bot_le - theorem lattice.bot_lt_iff_ne_bot - theorem lattice.bot_sup_eq - theorem lattice.bot_unique - theorem lattice.bounded_lattice.ext - theorem lattice.eq_bot_iff - theorem lattice.eq_bot_mono - theorem lattice.eq_top_iff - theorem lattice.eq_top_mono - theorem lattice.inf_bot_eq - theorem lattice.inf_eq_bot_iff_le_compl - theorem lattice.inf_eq_top_iff - theorem lattice.inf_top_eq - theorem lattice.le_bot_iff - theorem lattice.le_top - theorem lattice.lt_top_iff_ne_top - theorem lattice.monotone_and - theorem lattice.monotone_or - theorem lattice.ne_bot_of_gt - theorem lattice.ne_bot_of_le_ne_bot - theorem lattice.ne_top_of_le_ne_top - theorem lattice.ne_top_of_lt - theorem lattice.not_lt_bot - theorem lattice.not_top_lt - theorem lattice.order_bot.ext - theorem lattice.order_bot.ext_bot - theorem lattice.order_top.ext - theorem lattice.order_top.ext_top - theorem lattice.sup_bot_eq - theorem lattice.sup_eq_bot_iff - theorem lattice.sup_top_eq - theorem lattice.top_inf_eq - theorem lattice.top_le_iff - theorem lattice.top_sup_eq - theorem lattice.top_unique + theorem le_bot_iff + theorem le_top + theorem lt_top_iff_ne_top + theorem monotone_and + theorem monotone_or + theorem ne_bot_of_gt + theorem ne_bot_of_le_ne_bot + theorem ne_top_of_le_ne_top + theorem ne_top_of_lt + theorem not_lt_bot + theorem not_top_lt + theorem order_bot.ext + theorem order_bot.ext_bot + theorem order_top.ext + theorem order_top.ext_top + theorem sup_bot_eq + theorem sup_eq_bot_iff + theorem sup_top_eq + theorem top_inf_eq + theorem top_le_iff + theorem top_sup_eq + theorem top_unique Modified src/order/bounds.lean Modified src/order/complete_boolean_algebra.lean + theorem Inf_sup_Inf + theorem Inf_sup_eq + theorem Sup_inf_Sup + theorem Sup_inf_eq + theorem compl_Inf + theorem compl_Sup + theorem compl_infi + theorem compl_supr + theorem inf_Sup_eq - theorem lattice.Inf_sup_Inf - theorem lattice.Inf_sup_eq - theorem lattice.Sup_inf_Sup - theorem lattice.Sup_inf_eq - theorem lattice.inf_Sup_eq - theorem lattice.neg_Inf - theorem lattice.neg_Sup - theorem lattice.neg_infi - theorem lattice.neg_supr - theorem lattice.sup_Inf_eq + theorem sup_Inf_eq Modified src/order/complete_lattice.lean + def Inf + theorem Inf_Prop_eq + theorem Inf_apply + theorem Inf_empty + theorem Inf_eq_bot + theorem Inf_eq_infi + theorem Inf_eq_top + theorem Inf_image + theorem Inf_insert + theorem Inf_le + theorem Inf_le_Inf + theorem Inf_le_Sup + theorem Inf_le_of_le + theorem Inf_lt_iff + theorem Inf_pair + theorem Inf_range + theorem Inf_singleton + theorem Inf_union + theorem Inf_univ + def Sup + theorem Sup_Prop_eq + theorem Sup_apply + theorem Sup_empty + theorem Sup_eq_bot + theorem Sup_eq_supr + theorem Sup_eq_top + theorem Sup_image + theorem Sup_insert + theorem Sup_inter_le + theorem Sup_le + theorem Sup_le_Sup + theorem Sup_le_iff + theorem Sup_pair + theorem Sup_range + theorem Sup_singleton + theorem Sup_union + theorem Sup_univ + theorem binfi_inf + theorem has_Inf_to_nonempty + theorem has_Sup_to_nonempty + theorem inf_infi + def infi + theorem infi_Prop_eq + theorem infi_and + theorem infi_apply + theorem infi_bool_eq + theorem infi_comm + theorem infi_congr_Prop + theorem infi_const + theorem infi_empty + theorem infi_emptyset + theorem infi_eq_bot + theorem infi_eq_dif + theorem infi_eq_if + theorem infi_eq_top + theorem infi_exists + theorem infi_false + theorem infi_image + theorem infi_inf + theorem infi_inf_eq + theorem infi_infi_eq_left + theorem infi_infi_eq_right + theorem infi_insert + theorem infi_le' + theorem infi_le + theorem infi_le_infi2 + theorem infi_le_infi + theorem infi_le_infi_const + theorem infi_le_infi_of_subset + theorem infi_le_of_le + theorem infi_lt_iff + theorem infi_neg + theorem infi_or + theorem infi_pair + theorem infi_pos + theorem infi_prod + theorem infi_range + theorem infi_sigma + theorem infi_singleton + theorem infi_subtype' + theorem infi_subtype + theorem infi_sum + theorem infi_top + theorem infi_true + theorem infi_union + theorem infi_unit + theorem infi_univ + theorem is_glb.Inf_eq + theorem is_glb.infi_eq + theorem is_glb_Inf + theorem is_glb_infi + theorem is_lub.Sup_eq + theorem is_lub.supr_eq + theorem is_lub_Sup + theorem is_lub_supr - def lattice.Inf - theorem lattice.Inf_Prop_eq - theorem lattice.Inf_apply - theorem lattice.Inf_empty - theorem lattice.Inf_eq_bot - theorem lattice.Inf_eq_infi - theorem lattice.Inf_eq_top - theorem lattice.Inf_image - theorem lattice.Inf_insert - theorem lattice.Inf_le - theorem lattice.Inf_le_Inf - theorem lattice.Inf_le_Sup - theorem lattice.Inf_le_of_le - theorem lattice.Inf_lt_iff - theorem lattice.Inf_pair - theorem lattice.Inf_range - theorem lattice.Inf_singleton - theorem lattice.Inf_union - theorem lattice.Inf_univ - def lattice.Sup - theorem lattice.Sup_Prop_eq - theorem lattice.Sup_apply - theorem lattice.Sup_empty - theorem lattice.Sup_eq_bot - theorem lattice.Sup_eq_supr - theorem lattice.Sup_eq_top - theorem lattice.Sup_image - theorem lattice.Sup_insert - theorem lattice.Sup_inter_le - theorem lattice.Sup_le - theorem lattice.Sup_le_Sup - theorem lattice.Sup_le_iff - theorem lattice.Sup_pair - theorem lattice.Sup_range - theorem lattice.Sup_singleton - theorem lattice.Sup_union - theorem lattice.Sup_univ - theorem lattice.binfi_inf - theorem lattice.has_Inf_to_nonempty - theorem lattice.has_Sup_to_nonempty - theorem lattice.inf_infi - def lattice.infi - theorem lattice.infi_Prop_eq - theorem lattice.infi_and - theorem lattice.infi_apply - theorem lattice.infi_bool_eq - theorem lattice.infi_comm - theorem lattice.infi_congr_Prop - theorem lattice.infi_const - theorem lattice.infi_empty - theorem lattice.infi_emptyset - theorem lattice.infi_eq_bot - theorem lattice.infi_eq_dif - theorem lattice.infi_eq_if - theorem lattice.infi_eq_top - theorem lattice.infi_exists - theorem lattice.infi_false - theorem lattice.infi_image - theorem lattice.infi_inf - theorem lattice.infi_inf_eq - theorem lattice.infi_infi_eq_left - theorem lattice.infi_infi_eq_right - theorem lattice.infi_insert - theorem lattice.infi_le' - theorem lattice.infi_le - theorem lattice.infi_le_infi2 - theorem lattice.infi_le_infi - theorem lattice.infi_le_infi_const - theorem lattice.infi_le_infi_of_subset - theorem lattice.infi_le_of_le - theorem lattice.infi_lt_iff - theorem lattice.infi_neg - theorem lattice.infi_or - theorem lattice.infi_pair - theorem lattice.infi_pos - theorem lattice.infi_prod - theorem lattice.infi_range - theorem lattice.infi_sigma - theorem lattice.infi_singleton - theorem lattice.infi_subtype' - theorem lattice.infi_subtype - theorem lattice.infi_sum - theorem lattice.infi_top - theorem lattice.infi_true - theorem lattice.infi_union - theorem lattice.infi_unit - theorem lattice.infi_univ - theorem lattice.is_glb_Inf - theorem lattice.is_glb_infi - theorem lattice.is_lub_Sup - theorem lattice.is_lub_supr - theorem lattice.le_Inf - theorem lattice.le_Inf_iff - theorem lattice.le_Inf_inter - theorem lattice.le_Sup - theorem lattice.le_Sup_of_le - theorem lattice.le_infi - theorem lattice.le_infi_iff - theorem lattice.le_supr' - theorem lattice.le_supr - theorem lattice.le_supr_iff - theorem lattice.le_supr_of_le - theorem lattice.lt_Sup_iff - theorem lattice.lt_supr_iff - theorem lattice.monotone_Inf_of_monotone - theorem lattice.monotone_Sup_of_monotone - def lattice.ord_continuous - theorem lattice.ord_continuous_mono - theorem lattice.ord_continuous_sup - def lattice.supr - theorem lattice.supr_Prop_eq - theorem lattice.supr_and - theorem lattice.supr_apply - theorem lattice.supr_bool_eq - theorem lattice.supr_bot - theorem lattice.supr_comm - theorem lattice.supr_congr_Prop - theorem lattice.supr_const - theorem lattice.supr_empty - theorem lattice.supr_emptyset - theorem lattice.supr_eq_bot - theorem lattice.supr_eq_dif - theorem lattice.supr_eq_if - theorem lattice.supr_eq_top - theorem lattice.supr_exists - theorem lattice.supr_false - theorem lattice.supr_image - theorem lattice.supr_insert - theorem lattice.supr_le - theorem lattice.supr_le_iff - theorem lattice.supr_le_supr2 - theorem lattice.supr_le_supr - theorem lattice.supr_le_supr_const - theorem lattice.supr_le_supr_of_subset - theorem lattice.supr_neg - theorem lattice.supr_or - theorem lattice.supr_pair - theorem lattice.supr_pos - theorem lattice.supr_prod - theorem lattice.supr_range - theorem lattice.supr_sigma - theorem lattice.supr_singleton - theorem lattice.supr_subtype' - theorem lattice.supr_subtype - theorem lattice.supr_sum - theorem lattice.supr_sup_eq - theorem lattice.supr_supr_eq_left - theorem lattice.supr_supr_eq_right - theorem lattice.supr_true - theorem lattice.supr_union - theorem lattice.supr_unit - theorem lattice.supr_univ + theorem le_Inf + theorem le_Inf_iff + theorem le_Inf_inter + theorem le_Sup + theorem le_Sup_of_le + theorem le_infi + theorem le_infi_iff + theorem le_supr' + theorem le_supr + theorem le_supr_iff + theorem le_supr_of_le + theorem lt_Sup_iff + theorem lt_supr_iff + theorem monotone_Inf_of_monotone + theorem monotone_Sup_of_monotone + def ord_continuous + theorem ord_continuous_mono + theorem ord_continuous_sup + def supr + theorem supr_Prop_eq + theorem supr_and + theorem supr_apply + theorem supr_bool_eq + theorem supr_bot + theorem supr_comm + theorem supr_congr_Prop + theorem supr_const + theorem supr_empty + theorem supr_emptyset + theorem supr_eq_bot + theorem supr_eq_dif + theorem supr_eq_if + theorem supr_eq_top + theorem supr_exists + theorem supr_false + theorem supr_image + theorem supr_insert + theorem supr_le + theorem supr_le_iff + theorem supr_le_supr2 + theorem supr_le_supr + theorem supr_le_supr_const + theorem supr_le_supr_of_subset + theorem supr_neg + theorem supr_or + theorem supr_pair + theorem supr_pos + theorem supr_prod + theorem supr_range + theorem supr_sigma + theorem supr_singleton + theorem supr_subtype' + theorem supr_subtype + theorem supr_sum + theorem supr_sup_eq + theorem supr_supr_eq_left + theorem supr_supr_eq_right + theorem supr_true + theorem supr_union + theorem supr_unit + theorem supr_univ Modified src/order/conditionally_complete_lattice.lean + theorem Inf_nat_def + theorem Sup_nat_def + theorem cInf_Ici + theorem cInf_insert + theorem cInf_intro + theorem cInf_le + theorem cInf_le_cInf + theorem cInf_le_cSup + theorem cInf_le_of_le + theorem cInf_lt_of_lt + theorem cInf_singleton + theorem cInf_union + theorem cInf_upper_bounds_eq_cSup + theorem cSup_Iic + theorem cSup_empty + theorem cSup_insert + theorem cSup_inter_le + theorem cSup_intro' + theorem cSup_intro + theorem cSup_le + theorem cSup_le_cSup + theorem cSup_le_iff + theorem cSup_lower_bounds_eq_cInf + theorem cSup_singleton + theorem cSup_union + theorem cinfi_const + theorem cinfi_le + theorem cinfi_le_cinfi + theorem csupr_const + theorem csupr_le + theorem csupr_le_csupr + theorem exists_lt_of_cInf_lt + theorem exists_lt_of_cinfi_lt + theorem exists_lt_of_lt_cSup + theorem exists_lt_of_lt_csupr + theorem is_glb.cInf_eq + theorem is_glb_cInf + theorem is_greatest.cSup_eq + theorem is_least.cInf_eq + theorem is_lub.cSup_eq + theorem is_lub_cSup - theorem lattice.Inf_nat_def - theorem lattice.Sup_nat_def - theorem lattice.cInf_Ici - theorem lattice.cInf_insert - theorem lattice.cInf_intro - theorem lattice.cInf_le - theorem lattice.cInf_le_cInf - theorem lattice.cInf_le_cSup - theorem lattice.cInf_le_of_le - theorem lattice.cInf_lt_of_lt - theorem lattice.cInf_singleton - theorem lattice.cInf_union - theorem lattice.cInf_upper_bounds_eq_cSup - theorem lattice.cSup_Iic - theorem lattice.cSup_empty - theorem lattice.cSup_insert - theorem lattice.cSup_inter_le - theorem lattice.cSup_intro' - theorem lattice.cSup_intro - theorem lattice.cSup_le - theorem lattice.cSup_le_cSup - theorem lattice.cSup_le_iff - theorem lattice.cSup_lower_bounds_eq_cInf - theorem lattice.cSup_singleton - theorem lattice.cSup_union - theorem lattice.cinfi_const - theorem lattice.cinfi_le - theorem lattice.cinfi_le_cinfi - theorem lattice.csupr_const - theorem lattice.csupr_le - theorem lattice.csupr_le_csupr - theorem lattice.exists_lt_of_cInf_lt - theorem lattice.exists_lt_of_cinfi_lt - theorem lattice.exists_lt_of_lt_cSup - theorem lattice.exists_lt_of_lt_csupr - theorem lattice.is_glb_cInf - theorem lattice.is_lub_cSup - theorem lattice.le_cInf - theorem lattice.le_cInf_iff - theorem lattice.le_cInf_inter - theorem lattice.le_cSup - theorem lattice.le_cSup_of_le - theorem lattice.le_cinfi - theorem lattice.le_csupr - theorem lattice.lt_cSup_of_lt + theorem le_cInf + theorem le_cInf_iff + theorem le_cInf_inter + theorem le_cSup + theorem le_cSup_of_le + theorem le_cinfi + theorem le_csupr + theorem lt_cSup_of_lt Modified src/order/copy.lean + def bounded_lattice.copy + def complete_distrib_lattice.copy + def complete_lattice.copy + def conditionally_complete_lattice.copy + def distrib_lattice.copy - def lattice.bounded_lattice.copy - def lattice.complete_distrib_lattice.copy - def lattice.complete_lattice.copy - def lattice.conditionally_complete_lattice.copy - def lattice.distrib_lattice.copy Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean Modified src/order/filter/extr.lean Modified src/order/filter/lift.lean Modified src/order/filter/pointwise.lean Modified src/order/fixed_points.lean + theorem fixed_points.Sup_le_f_of_fixed_points + theorem fixed_points.f_le_Inf_of_fixed_points + theorem fixed_points.f_le_inf_of_fixed_points + def fixed_points.next + theorem fixed_points.next_eq + def fixed_points.next_fixed + theorem fixed_points.next_le + def fixed_points.prev + theorem fixed_points.prev_eq + def fixed_points.prev_fixed + theorem fixed_points.prev_le + theorem fixed_points.sup_le_f_of_fixed_points + def fixed_points + def gfp + theorem gfp_comp + theorem gfp_eq + theorem gfp_gfp + theorem gfp_induct + theorem gfp_le - theorem lattice.fixed_points.Sup_le_f_of_fixed_points - theorem lattice.fixed_points.f_le_Inf_of_fixed_points - theorem lattice.fixed_points.f_le_inf_of_fixed_points - def lattice.fixed_points.next - theorem lattice.fixed_points.next_eq - def lattice.fixed_points.next_fixed - theorem lattice.fixed_points.next_le - def lattice.fixed_points.prev - theorem lattice.fixed_points.prev_eq - def lattice.fixed_points.prev_fixed - theorem lattice.fixed_points.prev_le - theorem lattice.fixed_points.sup_le_f_of_fixed_points - def lattice.fixed_points - def lattice.gfp - theorem lattice.gfp_comp - theorem lattice.gfp_eq - theorem lattice.gfp_gfp - theorem lattice.gfp_induct - theorem lattice.gfp_le - theorem lattice.le_gfp - theorem lattice.le_lfp - def lattice.lfp - theorem lattice.lfp_comp - theorem lattice.lfp_eq - theorem lattice.lfp_induct - theorem lattice.lfp_le - theorem lattice.lfp_lfp - theorem lattice.monotone_gfp - theorem lattice.monotone_lfp + theorem le_gfp + theorem le_lfp + def lfp + theorem lfp_comp + theorem lfp_eq + theorem lfp_induct + theorem lfp_le + theorem lfp_lfp + theorem monotone_gfp + theorem monotone_lfp Modified src/order/galois_connection.lean Modified src/order/lattice.lean + theorem directed_of_inf + theorem directed_of_mono + theorem directed_of_sup + theorem eq_of_sup_eq_inf_eq + theorem forall_le_or_exists_lt_inf + theorem forall_le_or_exists_lt_sup + theorem inf_assoc + theorem inf_comm + theorem inf_eq_min + theorem inf_idem + theorem inf_le_inf + theorem inf_le_inf_left + theorem inf_le_inf_right + theorem inf_le_left' + theorem inf_le_left + theorem inf_le_left_of_le + theorem inf_le_right' + theorem inf_le_right + theorem inf_le_right_of_le + theorem inf_left_comm + theorem inf_of_le_left + theorem inf_of_le_right + theorem inf_sup_left + theorem inf_sup_right + theorem inf_sup_self - theorem lattice.directed_of_antimono - theorem lattice.directed_of_inf - theorem lattice.directed_of_mono - theorem lattice.directed_of_sup - theorem lattice.eq_of_sup_eq_inf_eq +/- theorem lattice.ext - theorem lattice.forall_le_or_exists_lt_inf - theorem lattice.forall_le_or_exists_lt_sup - theorem lattice.inf_assoc - theorem lattice.inf_comm - theorem lattice.inf_eq_min - theorem lattice.inf_idem - theorem lattice.inf_le_inf - theorem lattice.inf_le_inf_left - theorem lattice.inf_le_inf_right - theorem lattice.inf_le_left' - theorem lattice.inf_le_left - theorem lattice.inf_le_left_of_le - theorem lattice.inf_le_right' - theorem lattice.inf_le_right - theorem lattice.inf_le_right_of_le - theorem lattice.inf_left_comm - theorem lattice.inf_of_le_left - theorem lattice.inf_of_le_right - theorem lattice.inf_sup_left - theorem lattice.inf_sup_right - theorem lattice.inf_sup_self - theorem lattice.le_inf - theorem lattice.le_inf_iff - theorem lattice.le_inf_sup - theorem lattice.le_of_inf_eq - theorem lattice.le_of_sup_eq - theorem lattice.le_sup_inf - theorem lattice.le_sup_left' - theorem lattice.le_sup_left - theorem lattice.le_sup_left_of_le - theorem lattice.le_sup_right' - theorem lattice.le_sup_right - theorem lattice.le_sup_right_of_le - theorem lattice.lt_inf_iff - theorem lattice.semilattice_inf.ext - theorem lattice.semilattice_inf.ext_inf - theorem lattice.semilattice_sup.ext - theorem lattice.semilattice_sup.ext_sup - theorem lattice.sup_assoc - theorem lattice.sup_comm - theorem lattice.sup_eq_max - theorem lattice.sup_idem - theorem lattice.sup_inf_le - theorem lattice.sup_inf_left - theorem lattice.sup_inf_right - theorem lattice.sup_inf_self - theorem lattice.sup_le - theorem lattice.sup_le_iff - theorem lattice.sup_le_sup - theorem lattice.sup_le_sup_left - theorem lattice.sup_le_sup_right - theorem lattice.sup_left_comm - theorem lattice.sup_lt_iff - theorem lattice.sup_of_le_left - theorem lattice.sup_of_le_right +/- theorem le_antisymm' + theorem le_inf + theorem le_inf_iff + theorem le_inf_sup + theorem le_of_inf_eq + theorem le_of_sup_eq + theorem le_sup_inf + theorem le_sup_left' + theorem le_sup_left + theorem le_sup_left_of_le + theorem le_sup_right' + theorem le_sup_right + theorem le_sup_right_of_le + theorem lt_inf_iff + theorem semilattice_inf.ext + theorem semilattice_inf.ext_inf + theorem semilattice_sup.ext + theorem semilattice_sup.ext_sup + theorem sup_assoc + theorem sup_comm + theorem sup_eq_max + theorem sup_idem + theorem sup_inf_le + theorem sup_inf_left + theorem sup_inf_right + theorem sup_inf_self + theorem sup_le + theorem sup_le_iff + theorem sup_le_sup + theorem sup_le_sup_left + theorem sup_le_sup_right + theorem sup_left_comm + theorem sup_lt_iff + theorem sup_of_le_left + theorem sup_of_le_right Modified src/order/liminf_limsup.lean Modified src/ring_theory/adjoin.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/fractional_ideal.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/unique_factorization_domain.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/tactic/converter/binders.lean - theorem Inf_image - theorem Sup_image Modified src/tactic/interval_cases.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/category/Top/limits.lean Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/real.lean Modified src/topology/local_extr.lean Modified src/topology/maps.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/opens.lean Modified src/topology/order.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/absolute_value.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/compare_reals.lean Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/pi.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-03-19 10:59:44 a20f378 chore(category_theory/images): fix some minor problems (#2182) * chore(category_theory/images): fix some minor problems * minor * oops, misplaced comment ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean + theorem category_theory.limits.as_factor_thru_image - theorem category_theory.limits.image.as_c - def category_theory.limits.image.c - theorem category_theory.limits.image.c_ι 2020-03-19 08:46:53 4bc32ae feat(category_theory): regular monos (#2154) * feat(category_theory): regular and normal monos * fixes * Apply suggestions from code review Co-Authored-By: Markus Himmel * shorter proofs * typos, thanks Co-Authored-By: Markus Himmel * Update src/category_theory/limits/shapes/regular_mono.lean Co-Authored-By: Markus Himmel * linting ESTIMATED CHANGES Modified src/category_theory/epi_mono.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.epi_of_is_colimit_parallel_pair + theorem category_theory.limits.mono_of_is_limit_parallel_pair Modified src/category_theory/limits/shapes/images.lean Added src/category_theory/limits/shapes/regular_mono.lean 2020-03-19 06:18:29 445e332 chore(category_theory/isomorphism): use @[simps] (#2181) ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean +/- def category_theory.iso.refl - theorem category_theory.iso.refl_hom - theorem category_theory.iso.refl_inv +/- def category_theory.iso.trans - theorem category_theory.iso.trans_hom - theorem category_theory.iso.trans_inv 2020-03-19 03:47:29 e2b0e38 chore(category_theory/binary_products): tweak spacing in notation (#2184) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean 2020-03-19 01:12:44 034685b chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-18 23:51:31 00d9f1d feat(topology/algebra/infinite_sum): dot notation, cauchy sequences (#2171) * more material on infinite sums * minor fixes * cleanup * yury's comments ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean + theorem cauchy_seq_finset_iff_vanishing_norm + theorem cauchy_seq_finset_of_norm_bounded + theorem cauchy_seq_finset_of_summable_norm + theorem edist_eq_coe_nnnorm_sub + theorem has_sum_of_subseq_of_summable +/- theorem summable_iff_vanishing_norm + theorem summable_of_nnnorm_bounded +/- theorem summable_of_norm_bounded + theorem summable_of_summable_nnnorm Modified src/analysis/specific_limits.lean + theorem cauchy_seq_finset_of_geometric_bound + theorem dist_partial_sum_le_of_le_geometric + theorem nnreal.tendsto_const_div_at_top_nhds_0_nat + theorem nnreal.tendsto_inverse_at_top_nhds_0_nat + theorem norm_sub_le_of_geometric_bound_of_has_sum Modified src/data/option/basic.lean + def option.cases_on' Modified src/data/real/cardinality.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean +/- theorem pmf.summable_coe Modified src/order/liminf_limsup.lean Modified src/topology/algebra/infinite_sum.lean + theorem cauchy_seq_finset_iff_vanishing + theorem equiv.has_sum_iff + theorem equiv.summable_iff + theorem has_sum.add + theorem has_sum.has_sum_ne_zero + theorem has_sum.has_sum_of_sum_eq + theorem has_sum.mul_left + theorem has_sum.mul_right + theorem has_sum.neg + theorem has_sum.sigma + theorem has_sum.sigma_of_has_sum + theorem has_sum.sub + theorem has_sum.summable + theorem has_sum.tendsto_sum_nat - theorem has_sum_add - theorem has_sum_iff_of_summable - theorem has_sum_mul_left + theorem has_sum_mul_left_iff - theorem has_sum_mul_right + theorem has_sum_mul_right_iff - theorem has_sum_neg - theorem has_sum_of_has_sum - theorem has_sum_of_has_sum_ne_zero - theorem has_sum_sigma - theorem has_sum_sub - theorem has_sum_tsum +/- theorem has_sum_unique - def option.cases_on' + theorem summable.add + theorem summable.has_sum + theorem summable.has_sum_iff + theorem summable.mul_left + theorem summable.mul_right + theorem summable.neg + theorem summable.sigma' + theorem summable.sigma + theorem summable.sigma_factor + theorem summable.sub + theorem summable.summable_comp_of_injective + theorem summable.summable_of_eq_zero_or_self - theorem summable_add - theorem summable_comp_of_summable_of_injective - theorem summable_iff_cauchy + theorem summable_iff_cauchy_seq_finset - theorem summable_mul_left + theorem summable_mul_left_iff - theorem summable_mul_right + theorem summable_mul_right_iff - theorem summable_neg - theorem summable_of_summable_of_sub - theorem summable_sigma - theorem summable_spec - theorem summable_sub +/- theorem summable_zero - theorem tendsto_sum_nat_of_has_sum +/- theorem tsum_eq_has_sum + theorem tsum_eq_zero_of_not_summable + theorem tsum_le_tsum_of_inj + theorem tsum_nonneg + theorem tsum_nonpos + theorem tsum_sigma' Modified src/topology/instances/ennreal.lean + theorem nnreal.tsum_comp_le_tsum_of_inj + theorem tsum_comp_le_tsum_of_inj Modified src/topology/instances/nnreal.lean Modified src/topology/uniform_space/cauchy.lean + theorem tendsto_nhds_of_cauchy_seq_of_subseq 2020-03-18 21:14:22 e719f8e chore(*): switch to lean 3.7.1c (#2106) * fix(deprecated/group): remove dangerous instances * Update Lean version to nightly. * Remove composition instances for group homomorphisms. * Remove dangerous is_submonoid instances. * Flip instance arguments. * Various Lean 3.7 fixes. * Correctly use lemma. * Use new elan 0.8.0 lean version name. * Remove dangerous *.comp instances. * Fix comp instance fallout. * Fix more *.comp fallout * Fix more *.comp fallout. * More *.comp fallout. * Fix *.comp fallout * Fix *.comp fallout * Port to has_attribute and copy_attribute changes. * Fix monad_writer_adapter_trans instance. * Revert 3.6 hacks. * Update library note for *.comp morphisms. * fix(scripts/deploy_docs.sh): use lean_version from mathlib leanpkg.toml * Do not mention is_mul_hom.mul in library note. * Update lean version to 3.7.0. * Remove of_tactic' * switch to 3.7.1c ESTIMATED CHANGES Modified leanpkg.toml Modified scripts/deploy_docs.sh Modified src/algebra/direct_limit.lean Modified src/algebra/direct_sum.lean +/- theorem direct_sum.to_group.unique Modified src/algebra/euclidean_domain.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring.lean + theorem is_ring_hom.comp + theorem is_semiring_hom.comp Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/category/monad/writer.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/monad/limits.lean +/- def category_theory.has_limits_of_reflective Modified src/data/fintype.lean Modified src/data/mv_polynomial.lean Modified src/data/polynomial.lean Modified src/deprecated/group.lean + theorem is_group_hom.comp + theorem is_monoid_hom.comp + theorem is_mul_hom.comp Modified src/field_theory/splitting_field.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean Modified src/group_theory/presented_group.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean + theorem additive.is_add_submonoid + theorem multiplicative.is_submonoid Modified src/ring_theory/algebra.lean Modified src/ring_theory/localization.lean Modified src/set_theory/ordinal.lean Modified src/tactic/alias.lean Modified src/tactic/core.lean Modified src/tactic/lint.lean Modified src/tactic/reassoc_axiom.lean Modified src/tactic/squeeze.lean Modified src/tactic/transport.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean + theorem add_comm_group.is_Z_bilin.comp_hom Modified src/topology/algebra/uniform_ring.lean 2020-03-18 18:36:06 69f7bf8 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-18 17:04:44 5f62d3b feat(topology/bounded_continuous_functions): more general uniform convergence (#2165) * feat(topology/buonded_continuous_functions): more general uniform convergence * yury's comments ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean +/- def bounded_continuous_function + theorem continuous_at_of_locally_uniform_limit_of_continuous_at +/- theorem continuous_of_locally_uniform_limit_of_continuous +/- theorem continuous_of_uniform_limit_of_continuous + theorem continuous_on_of_locally_uniform_limit_of_continuous_on + theorem continuous_on_of_uniform_limit_of_continuous_on + theorem continuous_within_at_of_locally_uniform_limit_of_continuous_within_at Modified src/topology/continuous_on.lean + theorem continuous_on.continuous_at + theorem continuous_on.continuous_within_at + theorem continuous_on_empty +/- theorem continuous_on_iff_is_closed Modified src/topology/metric_space/basic.lean + theorem metric.ball_zero + theorem metric.continuous_at_iff' + theorem metric.continuous_on_iff' + theorem metric.continuous_on_iff + theorem metric.continuous_within_at_iff' + theorem metric.continuous_within_at_iff Modified src/topology/metric_space/emetric_space.lean + theorem emetric.ball_zero 2020-03-18 14:55:37 739e831 feat(analysis/complex/exponential): real powers of nnreals (#2164) * feat(analysis/complex/exponential): real powers of nnreals * cleanup * mean inequalities in nnreal * mean inequalities * use < instead of > * reviewer's comments ESTIMATED CHANGES Modified src/analysis/complex/exponential.lean + theorem complex.cpow_eq_pow + theorem complex.cpow_eq_zero_iff + theorem filter.tendsto.nnrpow + theorem nnreal.coe_rpow + theorem nnreal.continuous_at_rpow + theorem nnreal.mul_rpow + theorem nnreal.one_le_rpow + theorem nnreal.one_lt_rpow + theorem nnreal.one_rpow + theorem nnreal.pow_nat_rpow_nat_inv + theorem nnreal.rpow_add + theorem nnreal.rpow_eq_pow + theorem nnreal.rpow_eq_zero_iff + theorem nnreal.rpow_le_one + theorem nnreal.rpow_le_rpow + theorem nnreal.rpow_le_rpow_of_exponent_ge + theorem nnreal.rpow_le_rpow_of_exponent_le + theorem nnreal.rpow_lt_one + theorem nnreal.rpow_lt_rpow + theorem nnreal.rpow_lt_rpow_of_exponent_gt + theorem nnreal.rpow_lt_rpow_of_exponent_lt + theorem nnreal.rpow_mul + theorem nnreal.rpow_nat_cast + theorem nnreal.rpow_nat_inv_pow_nat + theorem nnreal.rpow_neg + theorem nnreal.rpow_one + theorem nnreal.rpow_zero + theorem nnreal.zero_rpow + theorem real.continuous_at_rpow + theorem real.rpow_eq_pow + theorem real.rpow_eq_zero_iff_of_nonneg + theorem real.rpow_nat_inv_pow_nat Modified src/analysis/mean_inequalities.lean 2020-03-18 03:19:02 f07a1eb feat(category_theory): images in Ab and Type (#2101) * not stacked on top of limits/colimits * comment * add ext to add_monoid_hom.ext * fix * cleanup * suggestions from review * fix * use more existing structure * fix names * oops * linter ESTIMATED CHANGES Modified src/algebra/category/Group/adjunctions.lean +/- def AddCommGroup.adj Modified src/algebra/category/Group/basic.lean + def AddCommGroup.as_hom + theorem AddCommGroup.as_hom_apply + theorem AddCommGroup.as_hom_injective + theorem AddCommGroup.injective_of_mono + theorem AddCommGroup.int_hom_ext Added src/algebra/category/Group/images.lean + def AddCommGroup.factor_thru_image + theorem AddCommGroup.image.fac + theorem AddCommGroup.image.lift_fac + def AddCommGroup.image.ι + def AddCommGroup.image + def AddCommGroup.mono_factorisation Modified src/algebra/group_power.lean + theorem gsmul_int_int + theorem gsmul_int_one Modified src/category_theory/concrete_category/basic.lean + theorem category_theory.concrete_category.hom_ext + theorem category_theory.concrete_category.mono_of_injective Modified src/category_theory/limits/shapes/images.lean Modified src/category_theory/limits/types.lean + theorem category_theory.limits.types.image.lift_fac + def category_theory.limits.types.image.ι + def category_theory.limits.types.image + def category_theory.limits.types.mono_factorisation Modified src/group_theory/subgroup.lean + def monoid_hom.range_factorization + def monoid_hom.range_subtype_val 2020-03-18 00:03:33 6af37d3 fix(category_theory/limits): require explicit instances of has_zero_morphisms (#2169) * fix(category_theory/limits): require explicit instances of has_zero_morphisms * Fix unused arguments ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/zero.lean 2020-03-17 14:49:48+01:00 422f640 fix(scripts/mk_nolint): fix error introduced by #2090 (#2170) ESTIMATED CHANGES Modified scripts/mk_nolint.lean 2020-03-17 03:38:32 e94fef0 feat(lint): run some linters on automatically generated declarations (#2090) * style(lint): remove double periods remove spacing in the OK-results of #lint add newline after ever failed result of #lint_mathlib (1 newline between two files, 2 newlines between two linters) * run some linters on automatically generated declarations * fix doc string * fix mk_nolint * fix test * fix linter errors also explain how to fix linter errors for automatically generated declarations * fix linter errors ESTIMATED CHANGES Modified scripts/mk_nolint.lean Modified src/analysis/normed_space/basic.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/images.lean Modified src/data/fin_enum.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/tactic/lint.lean Modified src/topology/subset_properties.lean Modified test/lint.lean 2020-03-17 01:31:51 496939c feat(data/real/*nnreal): add division lemmas (#2167) * feat(data/real/*nnreal): add division lemmas * fix build * elim_cast * another elim_cast ESTIMATED CHANGES Modified src/data/real/ennreal.lean - theorem ennreal.coe_sub_infty + theorem ennreal.div_eq_top +/- theorem ennreal.div_le_iff_le_mul + theorem ennreal.div_one +/- theorem ennreal.le_div_iff_mul_le + theorem ennreal.lt_iff_exists_add_pos_lt + theorem ennreal.lt_sub_iff_add_lt + theorem ennreal.mul_div_assoc +/- theorem ennreal.none_eq_top +/- theorem ennreal.some_eq_coe Modified src/data/real/nnreal.lean + theorem nnreal.add_div' + theorem nnreal.coe_ne_zero + theorem nnreal.div_add' + theorem nnreal.div_add_div + theorem nnreal.div_div_eq_div_mul + theorem nnreal.div_div_eq_mul_div + theorem nnreal.div_eq_div_iff + theorem nnreal.div_eq_iff + theorem nnreal.div_eq_mul_one_div + theorem nnreal.div_lt_iff + theorem nnreal.div_lt_one_of_lt + theorem nnreal.div_mul_eq_mul_div + theorem nnreal.div_pow + theorem nnreal.eq_div_iff + theorem nnreal.inv_eq_one_div + theorem nnreal.lt_sub_iff_add_lt + theorem nnreal.mul_div_assoc' + theorem nnreal.mul_ne_zero' + theorem nnreal.one_div_div + theorem nnreal.one_div_eq_inv + theorem nnreal.pow_eq_zero + theorem nnreal.pow_ne_zero Modified src/topology/instances/ennreal.lean 2020-03-16 23:16:44 4754368 feat(category_theory): split epis and monos, and a result about (co)projections (#2146) * feat(category_theory): split epis and monos, and a result about (co)projections * rearranging * reviewers' suggestions * A split mono `f` equalizes `(retraction f ≫ f)` and `(𝟙 Y)`. * fix * cleanup * split_epi_coequalizes * fix * cleanup * reduce priorities * Update src/category_theory/epi_mono.lean Co-Authored-By: Yury G. Kudryashov * Update src/category_theory/epi_mono.lean ESTIMATED CHANGES Modified src/category_theory/epi_mono.lean + def category_theory.retraction + def category_theory.section_ + theorem category_theory.split_epi.id + theorem category_theory.split_mono.id Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cocone_of_split_epi + theorem category_theory.limits.cocone_of_split_epi_ι_app_one + theorem category_theory.limits.cocone_of_split_epi_ι_app_zero + def category_theory.limits.cone_of_split_mono + theorem category_theory.limits.cone_of_split_mono_π_app_one + theorem category_theory.limits.cone_of_split_mono_π_app_zero + theorem category_theory.limits.parallel_pair_obj_one + theorem category_theory.limits.parallel_pair_obj_zero + def category_theory.limits.split_epi_coequalizes + def category_theory.limits.split_mono_equalizes Modified src/category_theory/limits/shapes/kernels.lean Modified src/category_theory/limits/shapes/zero.lean - def category_theory.limits.zero_of_zero_object 2020-03-16 21:22:20 bc087d8 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-16 20:04:17 7a5496f chore(order/liminf_limsup): lint and cleanup the file (#2162) * chore(order/liminf_limsup): lint and cleanup the file, add some statements * use eventually_mono ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually.congr + theorem filter.eventually.congr_iff Modified src/order/liminf_limsup.lean +/- theorem filter.Liminf_le_Limsup +/- theorem filter.Limsup_le_of_le + theorem filter.eventually_lt_of_limsup_lt + theorem filter.eventually_lt_of_lt_liminf +/- theorem filter.le_Liminf_of_le + theorem filter.liminf_congr + theorem filter.liminf_const + theorem filter.limsup_congr + theorem filter.limsup_const 2020-03-16 19:22:51 007b575 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-16 17:51:32 42b92aa feat(tactic): command for adding tactic, command, and attribute documentation (#2114) * chore(*): switch to lean 3.6.0 * begin tactic_doc command * merge add_tactic_doc with library_note * fix library_note imports * undo accidental revert * better attribute description * unneeded to_expr * fix doc string attribution * unicode input error Co-Authored-By: Bryan Gin-ge Chen * display and collect doc entries * missing doc string * update for lean 3.6 * document core tactics I considered adding these as doc strings in core. But the entry for `conv` mentions mathlib-specific things. * move tfae and rcases docs * move rintros and obtain * simpa * move part of tactic.interactive * move more of tactic.interactive * finish tactic.interactive * move omega * move renaming tactics * move more * move norm_cast * more * move more * doc commands in core + docstring tweaks * abel, alias, cache * elide, finish * hint, linearith, pi_instances * norm_num, rewrite * ring, ring_exp * solve_by_elim, suggest * doc_commands, rcases * ext * explode, find * lint * tidy * localized * reassoc_axiom, replacer, restate_axiom, where * simps * markdown files * interactive * new additions * revert changes to md files * fix merge * allow entries with different categories to share the same name * better error messages * fix merge * linter errors * use derive handler for inhabited instances * shorten doc entry names after category fix * copy simp.md to doc entry, tag: "simp" -> "simplification" * update add_tactic_doc_command docstring and doc.md * simp doc entry changed to its doc string * Apply suggestions from code review * doc: horizontal rules must be surrounded by new lines * address reviewer suggestions * Update docs/contribute/doc.md Co-Authored-By: Gabriel Ebner * fix add_tactic_doc_command docstring ESTIMATED CHANGES Modified docs/contribute/doc.md Modified docs/extras.md Modified docs/extras/simp.md Modified src/logic/basic.lean Modified src/tactic/abel.lean Modified src/tactic/alias.lean + theorem alias1 + theorem alias2 + theorem tactic.alias.alias1 + theorem tactic.alias.alias2 Modified src/tactic/apply_fun.lean Modified src/tactic/cache.lean + def tactic.interactive.my_id Modified src/tactic/clear.lean Modified src/tactic/core.lean Modified src/tactic/derive_inhabited.lean Added src/tactic/doc_commands.lean + inductive doc_category + def string.hash + structure tactic_doc_entry Modified src/tactic/elide.lean Modified src/tactic/explode.lean Modified src/tactic/ext.lean Modified src/tactic/fin_cases.lean Modified src/tactic/find.lean Modified src/tactic/finish.lean Modified src/tactic/hint.lean Modified src/tactic/interactive.lean Modified src/tactic/interval_cases.lean Deleted src/tactic/library_note.lean - def string.hash Modified src/tactic/lift.lean Modified src/tactic/linarith.lean Modified src/tactic/lint.lean Modified src/tactic/localized.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/norm_cast.lean Modified src/tactic/norm_num.lean + def tactic.interactive.a + def tactic.interactive.normed_a Modified src/tactic/omega/main.lean Modified src/tactic/pi_instances.lean Modified src/tactic/push_neg.lean Modified src/tactic/rcases.lean Modified src/tactic/reassoc_axiom.lean +/- theorem category_theory.reassoc_of Modified src/tactic/rename.lean Modified src/tactic/rename_var.lean Modified src/tactic/replacer.lean Modified src/tactic/restate_axiom.lean Modified src/tactic/rewrite.lean Modified src/tactic/ring.lean Modified src/tactic/ring_exp.lean Modified src/tactic/simp_rw.lean Modified src/tactic/simpa.lean Modified src/tactic/simps.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/squeeze.lean Modified src/tactic/suggest.lean Modified src/tactic/tauto.lean Modified src/tactic/tfae.lean Modified src/tactic/tidy.lean Modified src/tactic/where.lean 2020-03-16 15:33:24 04c7381 doc(docs/install/windows): emphasize projects link (#2150) You can't use mathlib in the test project created in step 6. I've seen a couple of Windows users get tripped up here. ESTIMATED CHANGES Modified docs/install/windows.md 2020-03-16 14:46:06 555528e feat(category_theory/image): comparison maps for precomposition (#2153) * feat(category_theory/image): comparison maps for precomposition * remove duplicate argument * unused argument ESTIMATED CHANGES Modified src/category_theory/limits/shapes/images.lean + def category_theory.limits.image.eq_to_hom + def category_theory.limits.image.eq_to_iso + def category_theory.limits.image.pre_comp + theorem category_theory.limits.image.pre_comp_comp 2020-03-16 09:18:06 1e38cb1 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-16 08:00:01 ff84bf4 feat(category_theory/monad/limits): forgetful creates colimits (#2138) * forgetful creates colimits * tidy up proofs * add docs * suggestions from review ESTIMATED CHANGES Modified src/category_theory/monad/limits.lean + def category_theory.monad.forget_creates_colimits.c + def category_theory.monad.forget_creates_colimits.cocone_point + theorem category_theory.monad.forget_creates_colimits.commuting + def category_theory.monad.forget_creates_colimits.lambda + def category_theory.monad.forget_creates_colimits.γ + def category_theory.monad.forget_creates_colimits_of_monad_preserves +/- def category_theory.monad.forget_creates_limits 2020-03-16 05:54:25 4aed862 feat(analysis/normed_space/operator_norm): completeness of the space of operators (#2160) * feat(analysis/normed_space/operator_norm): completeness of the space of operators * add some comments ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean 2020-03-16 03:42:23 d8e5d99 feat(category_theory/limits): Convenience methods for building limit (co)forks (#2155) * feat(category_theory/limits): Convenience methods for building limit (co)forks * Formatting * Rework a proof about kernels * feat(category_theory/limits): kernel forks ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cofork.is_colimit.mk + def category_theory.limits.fork.is_limit.mk Modified src/category_theory/limits/shapes/kernels.lean 2020-03-16 01:31:06 c240fcb feat(category_theory/limits): pullbacks from binary products and equalizers (#2143) * feat(category_theory/limits): derive has_binary_products from has_limit (pair X Y) * Rename *_of_diagram to diagram_iso_* * feat(category_theory/limits): pullbacks from binary products and equalizers * Fix build * Fix indentation * typos * Fix proof * Remove some simp lemmas that were duplicated during merge ESTIMATED CHANGES Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/shapes/constructions/equalizers.lean Modified src/category_theory/limits/shapes/constructions/pullbacks.lean + def category_theory.limits.has_colimit_span_of_has_colimit_pair_of_has_colimit_parallel_pair + def category_theory.limits.has_limit_cospan_of_has_limit_pair_of_has_limit_parallel_pair + def category_theory.limits.has_pullbacks_of_has_binary_products_of_has_equalizers + def category_theory.limits.has_pushouts_of_has_binary_coproducts_of_has_coequalizers Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.pullback_cone.is_limit.mk - theorem category_theory.limits.pullback_cone.mk_left - theorem category_theory.limits.pullback_cone.mk_right + theorem category_theory.limits.pullback_cone.mk_π_app_left + theorem category_theory.limits.pullback_cone.mk_π_app_one + theorem category_theory.limits.pullback_cone.mk_π_app_right + def category_theory.limits.pushout_cocone.is_colimit.mk + theorem category_theory.limits.pushout_cocone.mk_ι_app_left + theorem category_theory.limits.pushout_cocone.mk_ι_app_right + theorem category_theory.limits.pushout_cocone.mk_ι_app_zero 2020-03-15 23:30:43 fbe2ce0 feat(category_theory/limits): kernel forks (#2156) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.cokernel_cofork.app_zero + theorem category_theory.limits.cokernel_cofork.condition + def category_theory.limits.cokernel_cofork.of_π + def category_theory.limits.cokernel_cofork + theorem category_theory.limits.kernel_fork.app_one + theorem category_theory.limits.kernel_fork.condition + def category_theory.limits.kernel_fork.of_ι + def category_theory.limits.kernel_fork 2020-03-15 21:15:49 87f8ab2 chore(nnreal): replace coe_le with coe_le_coe (#2159) ESTIMATED CHANGES Modified src/analysis/convex/topology.lean Modified src/analysis/mean_inequalities.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/specific_limits.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/simple_func_dense.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean 2020-03-15 15:21:50 7104132 chore(field_theory/finite): spelling mistake (#2157) ESTIMATED CHANGES Modified src/field_theory/finite.lean 2020-03-15 04:22:33 0cbfbab refactor(logic/function): inv_fun takes a nonempty instance instead of inhabited (#2148) ESTIMATED CHANGES Modified src/logic/function.lean +/- theorem function.inv_fun_neg +/- theorem function.inv_fun_on_neg 2020-03-15 03:04:18 b314df2 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-15 01:43:38 8c2a254 feat(category_theory): comonads and coalgebras (#2134) * Comonads and coalgebras * Update docstring * add docstrings * Update src/category_theory/monad/algebra.lean Co-Authored-By: Johan Commelin * Update src/category_theory/monad/algebra.lean Co-Authored-By: Johan Commelin * Update src/category_theory/monad/algebra.lean Co-Authored-By: Johan Commelin * make the linter happy * revert change to nolints * disable inhabited instance linter ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/category_theory/monad/algebra.lean + def category_theory.comonad.adj + def category_theory.comonad.coalgebra.hom.comp + def category_theory.comonad.coalgebra.hom.id + structure category_theory.comonad.coalgebra.hom + structure category_theory.comonad.coalgebra + def category_theory.comonad.cofree + def category_theory.comonad.forget Modified src/category_theory/monad/basic.lean 2020-03-15 00:49:28 e4bf0bf chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-14 23:31:44 5433973 feat(category_theory): limits and colimits in Ab (#2097) * limits and colimits in AddCommGroup * feat(category_theory): limits and colimits in Ab * to_additive comes last * add to nolints * Update src/algebra/category/Group/limits.lean Co-Authored-By: Johan Commelin * docstrings * use bundled homs throughout * comment about better model of colimits * fix comments * fixes * linter ESTIMATED CHANGES Added docs/tutorial/category_theory/Ab.lean Modified scripts/nolints.txt Modified src/algebra/category/CommRing/colimits.lean +/- def CommRing.colimits.desc_morphism Renamed src/algebra/category/Group.lean to src/algebra/category/Group/basic.lean + def Ab + theorem CommGroup.one_apply + theorem Group.one_apply Added src/algebra/category/Group/colimits.lean + def AddCommGroup.colimits.cocone_fun + def AddCommGroup.colimits.cocone_morphism + theorem AddCommGroup.colimits.cocone_naturality + theorem AddCommGroup.colimits.cocone_naturality_components + def AddCommGroup.colimits.colimit + def AddCommGroup.colimits.colimit_cocone + def AddCommGroup.colimits.colimit_is_colimit + def AddCommGroup.colimits.colimit_setoid + def AddCommGroup.colimits.colimit_type + def AddCommGroup.colimits.desc_fun + def AddCommGroup.colimits.desc_fun_lift + def AddCommGroup.colimits.desc_morphism + inductive AddCommGroup.colimits.prequotient + theorem AddCommGroup.colimits.quot_add + theorem AddCommGroup.colimits.quot_neg + theorem AddCommGroup.colimits.quot_zero + inductive AddCommGroup.colimits.relation Added src/algebra/category/Group/default.lean Added src/algebra/category/Group/limits.lean + def AddCommGroup.AddCommGroup_has_limits.limit + def AddCommGroup.AddCommGroup_has_limits.limit_is_limit + def AddCommGroup.limit_π_add_monoid_hom Added src/algebra/category/Group/zero.lean Modified src/algebra/category/Mon/colimits.lean +/- def Mon.colimits.desc_morphism 2020-03-14 21:19:35 2e781eb doc(docs/install/*): emphasize projects link (#2151) ESTIMATED CHANGES Modified docs/install/debian_details.md Modified docs/install/linux.md Modified docs/install/macos.md 2020-03-14 20:14:08 2065438 feat(category_theory/comma): some limits in the over category and iterated slices (#2131) * iterated slice and limits in over category * A bit more docs * changes from review * removed simp attributes * over prod map left * Update src/category_theory/comma.lean Co-Authored-By: Johan Commelin * simplify equivalence definition * fix indentation * make lemmas simp again * removed simp * fix equalizers proof ESTIMATED CHANGES Modified src/category_theory/comma.lean + def category_theory.over.iterated_slice_backward + theorem category_theory.over.iterated_slice_backward_forget_forget + def category_theory.over.iterated_slice_equiv + def category_theory.over.iterated_slice_forward + theorem category_theory.over.iterated_slice_forward_forget Modified src/category_theory/limits/over.lean + theorem category_theory.over.over_prod_fst_left + theorem category_theory.over.over_prod_map_left + theorem category_theory.over.over_prod_pair_hom + theorem category_theory.over.over_prod_pair_left + theorem category_theory.over.over_prod_snd_left + def category_theory.over.over_product_of_pullbacks Modified src/category_theory/limits/shapes/constructions/equalizers.lean Modified src/category_theory/limits/shapes/pullbacks.lean +/- theorem category_theory.limits.pullback_cone.condition + theorem category_theory.limits.pullback_cone.mk_left + theorem category_theory.limits.pullback_cone.mk_right 2020-03-14 18:14:17 cc39a15 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-14 17:09:36 7b2be40 refactor(data/equiv/algebra): split (#2147) * refactor(data/equiv/algebra): split I want to use `≃*` without importing `ring`. * Update src/data/equiv/ring.lean ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/free_monoid.lean Modified src/algebra/semiconj.lean Modified src/category_theory/endomorphism.lean Modified src/category_theory/single_obj.lean Deleted src/data/equiv/algebra.lean - def add_aut.to_perm - theorem add_equiv.map_sub - structure add_equiv - theorem equiv.add_def - theorem equiv.coe_units_equiv_ne_zero - theorem equiv.inv_def - theorem equiv.mul_def - theorem equiv.neg_def - theorem equiv.one_def - def equiv.units_equiv_ne_zero - theorem equiv.zero_def - def mul_aut.to_perm - def mul_aut - theorem mul_equiv.apply_symm_apply - theorem mul_equiv.ext - theorem mul_equiv.map_eq_one_iff - theorem mul_equiv.map_inv - theorem mul_equiv.map_mul - theorem mul_equiv.map_ne_one_iff - theorem mul_equiv.map_one - def mul_equiv.mk' - def mul_equiv.refl - def mul_equiv.symm - theorem mul_equiv.symm_apply_apply - theorem mul_equiv.symm_to_monoid_hom_apply_to_monoid_hom_apply - theorem mul_equiv.to_equiv_symm - def mul_equiv.to_monoid_hom - theorem mul_equiv.to_monoid_hom_apply_symm_to_monoid_hom_apply - def mul_equiv.to_ring_equiv - def mul_equiv.trans - structure mul_equiv - def ring_aut.to_add_aut - def ring_aut.to_mul_aut - def ring_aut.to_perm - def ring_aut - theorem ring_equiv.apply_symm_apply - theorem ring_equiv.coe_add_equiv - theorem ring_equiv.coe_mul_equiv - theorem ring_equiv.ext - theorem ring_equiv.image_eq_preimage - theorem ring_equiv.map_add - theorem ring_equiv.map_eq_one_iff - theorem ring_equiv.map_eq_zero_iff - theorem ring_equiv.map_mul - theorem ring_equiv.map_ne_one_iff - theorem ring_equiv.map_ne_zero_iff - theorem ring_equiv.map_neg - theorem ring_equiv.map_neg_one - theorem ring_equiv.map_one - theorem ring_equiv.map_sub - theorem ring_equiv.map_zero - def ring_equiv.of' - def ring_equiv.of - theorem ring_equiv.symm_apply_apply - theorem ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply - def ring_equiv.to_add_monoid_hom - def ring_equiv.to_monoid_hom - def ring_equiv.to_ring_hom - theorem ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply - structure ring_equiv - def to_units - def units.map_equiv Added src/data/equiv/mul_add.lean + def add_aut.to_perm + theorem add_equiv.map_sub + structure add_equiv + def mul_aut.to_perm + def mul_aut + theorem mul_equiv.apply_symm_apply + theorem mul_equiv.ext + theorem mul_equiv.map_eq_one_iff + theorem mul_equiv.map_inv + theorem mul_equiv.map_mul + theorem mul_equiv.map_ne_one_iff + theorem mul_equiv.map_one + def mul_equiv.mk' + def mul_equiv.refl + def mul_equiv.symm + theorem mul_equiv.symm_apply_apply + theorem mul_equiv.to_equiv_symm + def mul_equiv.to_monoid_hom + theorem mul_equiv.to_monoid_hom_apply + def mul_equiv.trans + structure mul_equiv + def to_units + def units.map_equiv Added src/data/equiv/ring.lean + theorem equiv.coe_units_equiv_ne_zero + def equiv.units_equiv_ne_zero + def mul_equiv.to_ring_equiv + def ring_aut.to_add_aut + def ring_aut.to_mul_aut + def ring_aut.to_perm + def ring_aut + theorem ring_equiv.apply_symm_apply + theorem ring_equiv.coe_add_equiv + theorem ring_equiv.coe_mul_equiv + theorem ring_equiv.ext + theorem ring_equiv.image_eq_preimage + theorem ring_equiv.map_add + theorem ring_equiv.map_eq_one_iff + theorem ring_equiv.map_eq_zero_iff + theorem ring_equiv.map_mul + theorem ring_equiv.map_ne_one_iff + theorem ring_equiv.map_ne_zero_iff + theorem ring_equiv.map_neg + theorem ring_equiv.map_neg_one + theorem ring_equiv.map_one + theorem ring_equiv.map_sub + theorem ring_equiv.map_zero + def ring_equiv.of' + def ring_equiv.of + theorem ring_equiv.symm_apply_apply + theorem ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply + def ring_equiv.to_add_monoid_hom + def ring_equiv.to_monoid_hom + def ring_equiv.to_ring_hom + theorem ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply + structure ring_equiv Added src/data/equiv/transfer_instance.lean + theorem equiv.add_def + theorem equiv.inv_def + theorem equiv.mul_def + theorem equiv.neg_def + theorem equiv.one_def + theorem equiv.zero_def Modified src/data/mv_polynomial.lean Modified src/field_theory/finite.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/basic.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/maps.lean Modified src/ring_theory/noetherian.lean Modified src/topology/algebra/group.lean 2020-03-14 15:02:52 e6ccfe0 feat(algebra): the forgetful functor Module ℤ ⥤ Ab is an equivalence (#2130) * feat(algebra): the forgetful functor Module ℤ ⥤ Ab is an equivalence * oops, forgot to add file * missing conversion * not there yet * fixes * doc-strings, and remove more instances * various * oops * revert * Delete multilinear.olean.lock * revert * move instances * Remove note about a bug fixed in #1586. * whitespace ESTIMATED CHANGES Modified src/algebra/category/Group.lean + theorem CommGroup.ext + theorem Group.ext Added src/algebra/category/Group/Z_Module_equivalence.lean Modified src/algebra/category/Module/basic.lean Modified src/algebra/module.lean + def add_comm_group.int_module + def add_comm_monoid.nat_semimodule + theorem add_monoid_hom.map_int_module_smul + theorem add_monoid_hom.map_smul_cast + def linear_map.to_add_monoid_hom + theorem linear_map.to_add_monoid_hom_coe + theorem module.add_monoid_smul_eq_smul + theorem module.gsmul_eq_smul + theorem module.gsmul_eq_smul_cast + theorem module_ext 2020-03-14 12:47:55 d313d14 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-14 11:28:34 559921a feat(algebra/category/Group): the free-forgetful adjunction for AddCommGroup (#2141) * feat(algebra/category/Group): the free-forgetful adjunction for AddCommGroup * fixes * Update src/group_theory/free_abelian_group.lean * oops ESTIMATED CHANGES Added src/algebra/category/Group/adjunctions.lean + def AddCommGroup.adj + def AddCommGroup.free + theorem AddCommGroup.free_map_coe + theorem AddCommGroup.free_obj_coe Modified src/algebra/group/hom.lean Modified src/group_theory/free_abelian_group.lean + def free_abelian_group.hom_equiv + theorem free_abelian_group.hom_equiv_apply + theorem free_abelian_group.hom_equiv_symm_apply - def free_abelian_group.lift.universal + theorem free_abelian_group.lift_comp + theorem free_abelian_group.map_of 2020-03-14 09:21:38 465f599 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-14 08:02:49 81d3ebf feat(algebra): monoidal category of R-modules (#2125) * feat(algebra): monoidal category of R-modules * docstrings * minor * tweaks * fix import * fixes * reduce use of @ * broken * fixes * Update src/algebra/category/Module/basic.lean Co-Authored-By: Bryan Gin-ge Chen ESTIMATED CHANGES Modified src/algebra/category/Module/basic.lean +/- def Module.kernel_is_limit + def Module.of_self + def category_theory.iso.to_linear_equiv + def linear_equiv.to_Module_iso + def linear_equiv_iso_Group_iso Added src/algebra/category/Module/monoidal.lean + def Module.monoidal_category.associator + theorem Module.monoidal_category.associator_naturality + def Module.monoidal_category.left_unitor + theorem Module.monoidal_category.left_unitor_naturality + theorem Module.monoidal_category.pentagon + def Module.monoidal_category.right_unitor + theorem Module.monoidal_category.right_unitor_naturality + theorem Module.monoidal_category.tensor_comp + def Module.monoidal_category.tensor_hom + theorem Module.monoidal_category.tensor_id + def Module.monoidal_category.tensor_obj + theorem Module.monoidal_category.triangle Modified src/category_theory/limits/types.lean - def category_theory.limits.types.colimit + def category_theory.limits.types.colimit_ - def category_theory.limits.types.colimit_is_colimit + def category_theory.limits.types.colimit_is_colimit_ - def category_theory.limits.types.limit + def category_theory.limits.types.limit_ - def category_theory.limits.types.limit_is_limit + def category_theory.limits.types.limit_is_limit_ +/- theorem category_theory.limits.types.types_limit_map +/- theorem category_theory.limits.types.types_limit_π Modified src/linear_algebra/basic.lean +/- def linear_equiv.refl +/- def linear_equiv.symm +/- def linear_equiv.trans + theorem linear_equiv.trans_apply Modified src/linear_algebra/tensor_product.lean + theorem tensor_product.assoc_tmul + theorem tensor_product.ext_fourfold + theorem tensor_product.ext_threefold + theorem tensor_product.lid_tmul + theorem tensor_product.rid_tmul 2020-03-14 04:10:31 3d621b5 refactor(ring_theory/subring): use bundled homs (#2144) ESTIMATED CHANGES Modified src/field_theory/subfield.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/subring.lean + theorem is_subring.coe_subtype + def is_subring.subtype +/- theorem ring.image_closure 2020-03-14 01:59:21 ade1ee3 feat(category_theory/limits): derive has_binary_products from has_limit (pair X Y) (#2139) * feat(category_theory/limits): derive has_binary_products from has_limit (pair X Y) * Rename *_of_diagram to diagram_iso_* ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.diagram_iso_pair + def category_theory.limits.has_binary_coproducts_of_has_colimit_pair + def category_theory.limits.has_binary_products_of_has_limit_pair Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.diagram_iso_parallel_pair + def category_theory.limits.has_coequalizers_of_has_colimit_parallel_pair + def category_theory.limits.has_equalizers_of_has_limit_parallel_pair Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.diagram_iso_cospan + def category_theory.limits.diagram_iso_span + def category_theory.limits.has_pullbacks_of_has_limit_cospan + def category_theory.limits.has_pushouts_of_has_colimit_span 2020-03-13 18:31:09 49f5fb8 chore(algebra/category/CommRing/limits): avoid `is_ring_hom` (#2142) define a `ring_hom` instead ESTIMATED CHANGES Modified src/algebra/category/CommRing/limits.lean + def CommRing.limit_π_ring_hom 2020-03-13 12:20:20 32c2768 chore(linear_algebra/basic): simplify two proofs (#2123) * chore(linear_algebra/basic): simplify two proofs Also drop `linear_map.congr_right` in favor of `linear_equiv.congr_right`. I'll restore the deleted `congr_right` as `comp_map : (M₂ →ₗ[R] M₃) →ₗ[R] (M →ₗ[R] M₂) →ₗ[R] (M →ₗ[R] M₃)` soon. * Fix compile * Restore `congr_right` under the name `comp_right`. ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- def linear_equiv.conj + def linear_map.comp_right - def linear_map.congr_right - theorem submodule.Union_coe_of_directed + theorem submodule.coe_supr_of_directed +/- theorem submodule.mem_supr_of_directed Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/polynomial.lean 2020-03-13 10:18:27 aec62dc chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-13 09:00:12 b54960d refactor(*): migrate some files to bundled ring homs (#2133) * refactor(*): migrate some files to bundled ring homs * Rename ring_hom.is_local back to is_local_ring_hom * Apply suggestions from code review Co-Authored-By: Johan Commelin * Restore 2 instances, make `map` use bundled homs * More bundled homs * Add a docstring ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem ring_hom.map_prod + theorem ring_hom.map_sum Modified src/algebra/direct_limit.lean +/- def ring.direct_limit.lift +/- theorem ring.direct_limit.lift_add + def ring.direct_limit.lift_hom +/- theorem ring.direct_limit.lift_mul +/- theorem ring.direct_limit.lift_neg +/- theorem ring.direct_limit.lift_one +/- theorem ring.direct_limit.lift_pow +/- theorem ring.direct_limit.lift_sub +/- theorem ring.direct_limit.lift_zero Modified src/algebra/pi_instances.lean Modified src/algebra/ring.lean + theorem ring_hom.coe_mk Modified src/ring_theory/adjoin.lean Modified src/ring_theory/adjoin_root.lean +/- theorem adjoin_root.coe_injective +/- theorem adjoin_root.eval₂_root +/- theorem adjoin_root.is_root_root +/- def adjoin_root.lift +/- theorem adjoin_root.lift_mk +/- theorem adjoin_root.lift_of +/- theorem adjoin_root.lift_root +/- def adjoin_root.mk + theorem adjoin_root.mk_C +/- theorem adjoin_root.mk_self +/- theorem adjoin_root.mul_div_root_cancel +/- def adjoin_root.of +/- def adjoin_root.root +/- def adjoin_root Modified src/ring_theory/free_comm_ring.lean + theorem free_comm_ring.coe_lift_hom + def free_comm_ring.lift_hom +/- def free_comm_ring.map +/- theorem free_comm_ring.map_add +/- theorem free_comm_ring.map_mul +/- theorem free_comm_ring.map_neg +/- theorem free_comm_ring.map_of +/- theorem free_comm_ring.map_one +/- theorem free_comm_ring.map_pow +/- theorem free_comm_ring.map_sub +/- theorem free_comm_ring.map_zero Modified src/ring_theory/ideal_operations.lean - theorem ideal.is_ring_hom_quotient_inf_to_pi_quotient - theorem is_ring_hom.inj_iff_ker_eq_bot - theorem is_ring_hom.injective_iff - def is_ring_hom.ker - theorem is_ring_hom.ker_eq - theorem is_ring_hom.ker_eq_bot_iff_eq_zero - theorem is_ring_hom.ker_is_prime - theorem is_ring_hom.mem_ker - theorem is_ring_hom.not_one_mem_ker + theorem ring_hom.inj_iff_ker_eq_bot + def ring_hom.ker + theorem ring_hom.ker_eq + theorem ring_hom.ker_eq_bot_iff_eq_zero + theorem ring_hom.ker_is_prime + theorem ring_hom.mem_ker + theorem ring_hom.not_one_mem_ker Modified src/ring_theory/ideals.lean +/- def ideal.quotient.lift +/- theorem ideal.quotient.lift_mk + def ideal.quotient.mk_hom + theorem ideal.quotient.mk_prod + theorem ideal.quotient.mk_sum +/- theorem is_unit_of_map_unit Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series.lean Modified src/ring_theory/subring.lean + def ring_hom.cod_restrict 2020-03-12 18:52:10 1c449b6 chore(algebra/field*, field_theory/subfield): drop some `x ≠ 0`, use `division_ring` (#2136) * chore(algebra/field*, field_theory/subfield): drop some `x ≠ 0`, use `division_ring` We have `0⁻¹=0` in `division_ring` now, so no need to assume `field` in `ring_hom.map_inv` etc. * Fix lint ESTIMATED CHANGES Modified src/algebra/field.lean - theorem is_ring_hom.map_div' - theorem is_ring_hom.map_inv' - theorem neg_inv' - theorem ring_hom.map_div' - theorem ring_hom.map_inv' Modified src/algebra/field_power.lean - theorem is_ring_hom.map_fpow' +/- theorem is_ring_hom.map_fpow - theorem ring_hom.map_fpow' +/- theorem ring_hom.map_fpow Modified src/field_theory/subfield.lean 2020-03-12 16:38:40 5fe72b6 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-12 15:18:41 f5787f5 doc(*): switch from update-mathlib to leanproject (#2093) * doc(*): switch from update-mathlib to leanproject * Apply suggestions from code review Co-Authored-By: sgouezel * Use shiny new `leanproject new` and `leanproject get` * documentation tweaks * project.md tweaks ESTIMATED CHANGES Modified docs/contribute/index.md Modified docs/install/debian.md Modified docs/install/debian_details.md Modified docs/install/linux.md Modified docs/install/project.md Modified docs/install/windows.md 2020-03-12 13:07:30 8131108 feat(category_theory/opposites): add nat_iso.unop (#2132) * Add nat_iso.unop * Add docstrings to nat_iso.op, nat_iso.unop ESTIMATED CHANGES Modified src/category_theory/opposites.lean + theorem category_theory.nat_iso.unop_hom + theorem category_theory.nat_iso.unop_inv 2020-03-12 10:56:40 7d357d7 Fix a typo (#2137) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.binary_cofan.mk_ι_app_left + theorem category_theory.limits.binary_cofan.mk_ι_app_right - theorem category_theory.limits.binary_cofan.mk_π_app_left - theorem category_theory.limits.binary_cofan.mk_π_app_right 2020-03-12 05:14:27 35a6e68 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-12 04:06:30 1b0a749 feat(topology): is_closed_proj_of_compact (#2069) * feat(lattice): add inf_le_inf_left/right * feat(set/lattice): image_inter_subset * feat(set/lattice): push_pull * feat(order/filter): push_pull and product notation * feat(topology/subset_properties): is_closed_proj_of_compact * feat(set/lattice): push_pull' * fix(order/filter): forgotten doc * lint (including old missing docstrings in filter). * Apply Yury's suggestions. * Forgotten style fix * urkud's suggestions Co-Authored-By: Yury G. Kudryashov * Update src/order/filter/basic.lean Co-Authored-By: Scott Morrison ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.image_inter_subset - theorem set.mono_image Modified src/data/set/lattice.lean Modified src/order/filter/basic.lean +/- theorem filter.bot_prod + theorem filter.map_ne_bot_iff +/- theorem filter.prod_bot +/- theorem filter.prod_comm' +/- theorem filter.prod_comm +/- theorem filter.prod_eq_bot +/- theorem filter.prod_ne_bot +/- theorem filter.prod_pure_pure +/- theorem filter.tendsto_fst +/- theorem filter.tendsto_snd Modified src/order/lattice.lean + theorem lattice.inf_le_inf_left + theorem lattice.inf_le_inf_right Modified src/ring_theory/free_comm_ring.lean Modified src/topology/algebra/ordered.lean Modified src/topology/subset_properties.lean + theorem cluster_point_of_compact + theorem is_closed_proj_of_compact Modified src/topology/uniform_space/uniform_embedding.lean 2020-03-11 22:56:21 7c8dc2a feat(category_theory/limits): construct equalizers from pullbacks and products (#2124) * construct equalizers from pullbacks and products * ... * changes from review * Add docstrings * golf proofs a little * linter ESTIMATED CHANGES Modified src/category_theory/category/default.lean + theorem category_theory.eq_whisker + theorem category_theory.whisker_eq Added src/category_theory/limits/shapes/constructions/equalizers.lean + def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.construct_equalizer + def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.equalizer_cone + def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.equalizer_cone_is_limit + def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.pullback_fst + theorem category_theory.limits.has_equalizers_of_pullbacks_and_binary_products.pullback_fst_eq_pullback_snd + def category_theory.limits.has_equalizers_of_pullbacks_and_binary_products 2020-03-11 18:57:43 7cffe25 chore(category_theory/cones): make functor argument of forget explicit (#2128) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean +/- def category_theory.limits.cocones.forget +/- def category_theory.limits.cones.forget Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/kernels.lean - def category_theory.limits.cokernel.of_kernel_of_mono - def category_theory.limits.kernel.of_cokernel_of_epi 2020-03-11 10:15:41 43431be chore(category_theory): remove functor.of (#2127) * chore(category_theory): remove functor.of * fix ESTIMATED CHANGES Modified src/category_theory/comma.lean +/- def category_theory.over.map +/- def category_theory.over +/- def category_theory.under.map +/- def category_theory.under Modified src/category_theory/elements.lean +/- def category_theory.category_of_elements.comma_equivalence +/- def category_theory.category_of_elements.from_comma +/- def category_theory.category_of_elements.to_comma Modified src/category_theory/punit.lean - theorem category_theory.functor.of.map_app - theorem category_theory.functor.of.obj_map - theorem category_theory.functor.of.obj_obj - def category_theory.functor.of 2020-03-11 07:13:33 d909a61 fix(algebra/category): avoid deprecated lemmas (#2126) ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/Mon/colimits.lean 2020-03-10 19:54:59 36ac916 Add two missing duals (#2122) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.cofork.of_π_app_one + theorem category_theory.limits.cofork.of_π_app_zero 2020-03-10 17:38:33 699401b feat(ci): look for equivalent oleans on Azure (#2094) * first attempt at avoiding recompilation in ci * avoid using leanproject * delete most of library for testing * modify non-lean file for testing * Revert "delete most of library for testing" This reverts commit b4f298e866513a6e1517f7fb370fcf9e03eb8030. * unnecessary to look up the exact git sha * simplify * apply Gabriel's suggestion * untar all and only src directory * Revert "modify non-lean file for testing" This reverts commit 3157cb1d0d0b3530445c36f8a1e9f725847f71ce. * simplify * add git reset to script * Revert "add git reset to script" This reverts commit c63a8281fef1a16ad0133521b7c8b002ef47907e. ESTIMATED CHANGES Modified .github/workflows/build.yml Added scripts/fetch_olean_cache.sh Added scripts/look_up_olean_hash.py Added scripts/write_azure_table_entry.py 2020-03-10 15:29:25 668a98e feat(measurable_space): is_measurable_supr lemma (#2092) * feat(data/set/lattice): add @[simp] to lemmas * feat(measurable_space): is_measurable_supr lemma * fix proof * fix proof * fix proof * oops * fix proofs * typo in doc string * remove @[simp] ESTIMATED CHANGES Modified src/measure_theory/measurable_space.lean + theorem measurable_space.is_measurable_Sup + theorem measurable_space.is_measurable_sup + theorem measurable_space.is_measurable_supr 2020-03-10 13:12:10 9feefee feat(ring_theory/polynomial): refactor of is_integral_domain_fin (#2119) * chore(ring_theory/polynomial): refactor proof of is_noetherian_ring_fin * not there yet * feat(ring_theory/polynomial): refactor of is_integral_domain_fin * fix * refactor * fix * fix * suggestion from linter * Update src/data/mv_polynomial.lean ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + def mv_polynomial.fin_succ_equiv Modified src/data/polynomial.lean + theorem is_integral_domain.polynomial Modified src/ring_theory/polynomial.lean +/- theorem mv_polynomial.is_integral_domain_fin + theorem mv_polynomial.is_integral_domain_fin_zero 2020-03-10 10:57:20 cdc56ba feat(analysis/calculus/tangent_cone): prove that all intervals are `unique_diff_on` (#2108) * feat(analysis/calculus/tangent_cone): prove that all intervals are `unique_diff_on` * Drop some unneeded assumptions ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean + theorem unique_diff_on_Icc + theorem unique_diff_on_Ici + theorem unique_diff_on_Ico + theorem unique_diff_on_Iic + theorem unique_diff_on_Iio + theorem unique_diff_on_Ioc + theorem unique_diff_on_Ioi + theorem unique_diff_on_Ioo + theorem unique_diff_on_empty 2020-03-10 06:39:45 e8ad2e3 feat(category_theory/limits): the pullback of a monomorphism is a monomorphism (#2113) * The pullback of a monomorphism is a monomorphism * The pushout of an epimorphism is an epimorphism * Fix a proof * renaming ESTIMATED CHANGES Modified src/category_theory/limits/shapes/constructions/binary_products.lean Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.pullback.hom_ext + theorem category_theory.limits.pullback_cone.equalizer_ext + theorem category_theory.limits.pushout.hom_ext + theorem category_theory.limits.pushout_cocone.coequalizer_ext 2020-03-10 04:22:40 945845d feat(linter): include linter name in report (#2116) * feat(linter): include linter name in report (closes #2098) * Update src/tactic/lint.lean ESTIMATED CHANGES Modified src/tactic/lint.lean 2020-03-10 02:12:06 4089712 chore(ring_theory/polynomial): refactor proof of is_noetherian_ring_fin (#2117) ESTIMATED CHANGES Modified src/ring_theory/polynomial.lean +/- theorem mv_polynomial.is_noetherian_ring_fin + theorem mv_polynomial.is_noetherian_ring_fin_0 2020-03-09 23:57:38 25df884 reflexive transitive closure is symmetric of original (#2115) * reflexive transitive closure is symmetric if original * Update src/logic/relation.lean Co-Authored-By: Johan Commelin * Update src/logic/relation.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/logic/relation.lean + theorem relation.refl_trans_gen.symmetric 2020-03-09 21:54:46 f90803c feat(algebra/group/hom): cancel injective/surjective `monoid_hom`s (#2112) * feat(algebra/group/hom): cancel injective/surjective `monoid_hom`s * Add a `ring_hom` version ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.cancel_left + theorem monoid_hom.cancel_right Modified src/algebra/ring.lean + theorem ring_hom.cancel_left + theorem ring_hom.cancel_right 2020-03-09 19:43:42 b39713f feat(analysis/calculus/darboux): IVT for derivatives (#2110) * feat(analysis/calculus/darboux): IVT for derivatives * whitespace Co-Authored-By: sgouezel ESTIMATED CHANGES Added src/analysis/calculus/darboux.lean + theorem convex_image_has_deriv_at + theorem deriv_forall_lt_or_forall_gt_of_forall_ne + theorem exists_has_deriv_within_at_eq_of_gt_of_lt + theorem exists_has_deriv_within_at_eq_of_lt_of_gt Modified src/analysis/calculus/local_extr.lean 2020-03-09 14:27:32 62abc4d feat(category_theory): images (#2100) * feat(category_theory): images * oops, forgot to add file * Update src/category_theory/category/default.lean Co-Authored-By: Johan Commelin * some improvements * linting * oops * Update src/category_theory/limits/shapes/images.lean ESTIMATED CHANGES Modified src/category_theory/category/default.lean +/- theorem category_theory.cancel_epi + theorem category_theory.cancel_epi_id +/- theorem category_theory.cancel_mono + theorem category_theory.cancel_mono_id + theorem category_theory.epi_of_epi + theorem category_theory.epi_of_epi_fac + theorem category_theory.mono_of_mono + theorem category_theory.mono_of_mono_fac Modified src/category_theory/limits/shapes/equalizers.lean - theorem category_theory.limits.coequalizer.π_epi - theorem category_theory.limits.equalizer.ι_mono Added src/category_theory/limits/shapes/images.lean + def category_theory.limits.factor_thru_image + theorem category_theory.limits.has_image.uniq + theorem category_theory.limits.image.as_c + theorem category_theory.limits.image.as_ι + def category_theory.limits.image.c + theorem category_theory.limits.image.c_ι + theorem category_theory.limits.image.fac + def category_theory.limits.image.is_image + def category_theory.limits.image.lift + theorem category_theory.limits.image.lift_fac + def category_theory.limits.image.mono_factorisation + def category_theory.limits.image.ι + def category_theory.limits.image + def category_theory.limits.image_mono_iso_source + theorem category_theory.limits.image_mono_iso_source_hom_self + theorem category_theory.limits.image_mono_iso_source_inv_ι + def category_theory.limits.is_image.iso_ext + def category_theory.limits.is_image.self + structure category_theory.limits.is_image + theorem category_theory.limits.mono_factorisation.ext + def category_theory.limits.mono_factorisation.self + structure category_theory.limits.mono_factorisation 2020-03-09 12:22:18 d8d0927 refactor(topology/algebra/ordered): rename `tendsto_of_tendsto_of_tendsto_of_le_of_le` to `tendsto_of_tendsto_of_tendsto_of_le_of_le'` (#2111) The new `tendsto_of_tendsto_of_tendsto_of_le_of_le` assumes that the inequalities hold everywhere. ESTIMATED CHANGES Modified src/analysis/normed_space/real_inner_product.lean Modified src/topology/algebra/ordered.lean + theorem tendsto_of_tendsto_of_tendsto_of_le_of_le' Modified src/topology/metric_space/basic.lean 2020-03-09 10:19:36 4258f5e refactor(analysis/normed_space/banach): use bundled `→L[𝕜]` maps (#2107) ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean +/- theorem exists_approx_preimage_norm_le +/- theorem exists_preimage_norm_le + theorem linear_equiv.continuous_symm - theorem linear_equiv.is_bounded_inv +/- theorem open_mapping 2020-03-09 07:16:17 434b629 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-09 05:00:06 ce7248a doc(docs/tutorial/category_theory): introductory category theory tutorial (#2104) * doc(docs/tutorial/category_theory): Adding WIP beginner category theory docs * linewraps * presumably uncontroversial edits * oops * whitespace * explaining more about universes * warning about definitional associativity * add TODO * Update docs/tutorial/category_theory/category_theory_intro.md * rename * cleanup * adding lean version * various * add a note about debugging universe problems * rename * delete old markdown tutorial * adding sections to make variable names nicer * tidy up universes * url escape parentheses inside links * tweaking text * Update docs/tutorial/category_theory/intro.lean Co-Authored-By: sgouezel ESTIMATED CHANGES Added docs/tutorial/category_theory/intro.lean 2020-03-09 02:49:14 61d70ce chore(algebra/group): streamlining imports (#2099) * chore(algebra/group): streamlining imports * reducing imports ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/char_zero.lean Modified src/algebra/group_power.lean Modified src/algebra/ordered_group.lean Modified src/algebra/pi_instances.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring.lean Modified src/group_theory/free_group.lean 2020-03-09 00:56:10 ca370cb fix(deprecated/group): remove dangerous instances (#2096) ESTIMATED CHANGES Modified src/deprecated/group.lean + theorem additive.is_add_group_hom + theorem additive.is_add_hom + theorem additive.is_add_monoid_hom + theorem multiplicative.is_group_hom + theorem multiplicative.is_monoid_hom + theorem multiplicative.is_mul_hom Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean + theorem additive.is_add_subgroup + theorem additive.normal_add_subgroup +/- def is_group_hom.ker +/- theorem is_group_hom.mem_ker + theorem multiplicative.is_subgroup + theorem multiplicative.normal_subgroup 2020-03-08 22:46:03 15d3268 chore(category_theory/functor): make arguments implicit (#2103) ESTIMATED CHANGES Modified src/category_theory/functor.lean +/- theorem category_theory.functor.comp_map 2020-03-08 05:53:07 b7444b0 Remove limits.lean which is superseded by limits_of_products_and_equalizers.lean (#2105) ESTIMATED CHANGES Deleted src/category_theory/limits/shapes/constructions/limits.lean 2020-03-07 21:37:38 d53bbb6 feat(data/fin_enum): `fin_enum` class for finite types with an enumeration order (#1368) * feat(data/enum): `enumerable` class for finite types with an enumeration order * little fixes * Update enum.lean * Update enum.lean * Update finset.lean * add documentation * Update src/data/enum.lean Co-Authored-By: Scott Morrison * Update src/data/enum.lean [skip ci] Co-Authored-By: Scott Morrison * Update fin.lean [skip ci[ * Update enum.lean * Update enum.lean * Update fin.lean [skip ci] * Update enum.lean * Update src/data/enum.lean [skip ci] Co-Authored-By: Bryan Gin-ge Chen * Update interactive.lean [skip ci] * Rename enum.lean to fin_enum.lean [skip ci] * add `mono using` to doc/tactics.md [skip ci] * update to Lean 3.5.1 * address lint comments * Update src/data/fin_enum.lean Co-Authored-By: Scott Morrison * Update fin_enum.lean * Apply suggestions from code review Co-Authored-By: Scott Morrison * remove unneeded lemmas * add `nodup_to_list` ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/fin.lean Added src/data/fin_enum.lean + def fin_enum.finset.enum + theorem fin_enum.finset.mem_enum + theorem fin_enum.mem_pi + theorem fin_enum.mem_to_list + theorem fin_enum.nodup_to_list + def fin_enum.of_equiv + def fin_enum.of_list + def fin_enum.of_nodup_list + def fin_enum.of_surjective + def fin_enum.pi.cons + def fin_enum.pi.enum + theorem fin_enum.pi.mem_enum + def fin_enum.pi.tail + def fin_enum.pi + def fin_enum.to_list Modified src/data/finset.lean + theorem finset.sdiff_empty + theorem finset.sdiff_eq_self + theorem finset.sdiff_inter_distrib_right + theorem finset.sdiff_inter_self_left + theorem finset.sdiff_inter_self_right + theorem finset.sdiff_self + theorem finset.sdiff_subset_self + theorem finset.superset.trans Modified src/data/list/basic.lean + theorem list.mem_pure Modified src/tactic/monotonicity/interactive.lean 2020-03-07 02:22:02 726d83f feat(lint): add two new linters (#2089) * feat(lint): add two new linters checks whether type-class inference searches end relatively quickly checks that there are no instances has_coe a t with variable a * remove `is_fast` from `has_coe_variable` * add link to note * typo in priority * fix error, implement comments ESTIMATED CHANGES Modified docs/commands.md Modified src/tactic/core.lean Modified src/tactic/lint.lean Modified test/lint.lean + def dangerous_instance_test + def foo_has_mul + def foo_instance + def impossible_instance_test 2020-03-07 00:15:07 c5437b4 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-06 21:32:35 6c23bad feat(data/set/lattice): add @[simp] to lemmas (#2091) * feat(data/set/lattice): add @[simp] to lemmas * fix proof * fix proof * fix proof * oops * fix proofs * typo in doc string ESTIMATED CHANGES Modified src/data/set/finite.lean Modified src/data/set/lattice.lean +/- theorem set.bInter_image +/- theorem set.bInter_range +/- theorem set.bUnion_image +/- theorem set.bUnion_range Modified src/measure_theory/integration.lean Modified src/topology/instances/real.lean Modified src/topology/uniform_space/cauchy.lean 2020-03-06 19:21:21 4f10d1e refactor(group_theory/monoid_localization): use characteristic predicate (#2004) * should I be changing and committing toml idk * initial monoid loc lemmas * responding to PR comments * removing bad @[simp] * inhabited instances * remove #lint * additive inhabited instance * using is_unit & is_add_unit * doc string * remove simp * submonoid.monoid_loc... -> submonoid.localization * submonoid.monoid_loc... -> submonoid.localization * generalize inhabited instance * remove inhabited instance ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem inv_unique Modified src/algebra/group/hom.lean + theorem monoid_hom.exists_inv_of_comp_exists_inv Modified src/algebra/group/is_unit.lean +/- theorem is_unit.coe_lift_right +/- theorem is_unit.map +/- theorem is_unit_iff_exists_inv' +/- theorem is_unit_iff_exists_inv +/- theorem is_unit_of_mul_is_unit_right +/- theorem is_unit_of_mul_one +/- theorem is_unit_one +/- theorem is_unit_unit +/- theorem units.is_unit_mul_units Modified src/algebra/group/units.lean + structure add_units + theorem nat.add_units_eq_one +/- theorem units.coe_inv +/- theorem units.coe_mk_of_mul_eq_one +/- theorem units.coe_mul +/- theorem units.coe_one +/- theorem units.eq_inv_mul_iff_mul_eq +/- theorem units.eq_mul_inv_iff_mul_eq +/- theorem units.ext +/- theorem units.ext_iff +/- theorem units.inv_mul +/- theorem units.inv_mul_cancel_left +/- theorem units.inv_mul_cancel_right +/- theorem units.inv_mul_eq_iff_eq_mul +/- def units.mk_of_mul_eq_one +/- theorem units.mul_inv +/- theorem units.mul_inv_cancel_left +/- theorem units.mul_inv_cancel_right +/- theorem units.mul_inv_eq_iff_eq_mul +/- theorem units.mul_left_inj +/- theorem units.mul_right_inj +/- theorem units.val_coe Modified src/algebra/group/units_hom.lean +/- theorem units.coe_hom_apply +/- theorem units.coe_lift_right +/- theorem units.coe_map +/- theorem units.map_comp +/- theorem units.map_id Modified src/algebra/pi_instances.lean + def prod.monoid_hom.inl + def prod.monoid_hom.inr Modified src/group_theory/monoid_localization.lean + structure add_submonoid.localization_map - theorem add_submonoid.r'.add - theorem add_submonoid.r'.transitive - def add_submonoid.r' - def monoid_localization.aux - theorem monoid_localization.exists_rep - theorem monoid_localization.funext - theorem monoid_localization.ind - theorem monoid_localization.induction_on - theorem monoid_localization.is_unit_of_of_comp - def monoid_localization.lift' - theorem monoid_localization.lift'_apply_of - theorem monoid_localization.lift'_comp_of - theorem monoid_localization.lift'_eq_iff - theorem monoid_localization.lift'_mk - theorem monoid_localization.lift'_of - theorem monoid_localization.lift_apply_of - theorem monoid_localization.lift_comp_of - theorem monoid_localization.lift_eq_iff - theorem monoid_localization.lift_mk - theorem monoid_localization.lift_of - theorem monoid_localization.lift_on_beta - def monoid_localization.map - theorem monoid_localization.map_comp_map - theorem monoid_localization.map_comp_of - theorem monoid_localization.map_eq - theorem monoid_localization.map_ext - theorem monoid_localization.map_id - theorem monoid_localization.map_map - theorem monoid_localization.map_mk - theorem monoid_localization.map_of - def monoid_localization.mk - theorem monoid_localization.mk_eq - theorem monoid_localization.mk_eq_iff_of_eq - theorem monoid_localization.mk_eq_mul_mk_one - theorem monoid_localization.mk_eq_of_eq - theorem monoid_localization.mk_is_unit' - theorem monoid_localization.mk_is_unit - theorem monoid_localization.mk_mul_cancel_left - theorem monoid_localization.mk_mul_cancel_right - theorem monoid_localization.mk_mul_mk - theorem monoid_localization.mk_self' - theorem monoid_localization.mk_self - def monoid_localization.of - theorem monoid_localization.of_eq_mk - theorem monoid_localization.of_is_unit' - theorem monoid_localization.of_is_unit - theorem monoid_localization.of_ker_iff - theorem monoid_localization.of_mul_mk - theorem monoid_localization.one_rel - theorem monoid_localization.r_le_ker_aux - def monoid_localization.to_units - theorem monoid_localization.to_units_inv - theorem monoid_localization.to_units_map_inv - theorem monoid_localization.to_units_mk - def monoid_localization.units_restrict - theorem monoid_localization.units_restrict_mul - def monoid_localization + def submonoid.localization.r' + def submonoid.localization.r + theorem submonoid.localization.r_eq_r' + theorem submonoid.localization.r_iff_exists + def submonoid.localization + theorem submonoid.localization_map.eq_iff_eq + theorem submonoid.localization_map.eq_mk'_iff_mul_eq + theorem submonoid.localization_map.exists_of_sec + theorem submonoid.localization_map.exists_of_sec_mk' + theorem submonoid.localization_map.inv_inj + theorem submonoid.localization_map.inv_unique + theorem submonoid.localization_map.mk'_eq_iff_eq + theorem submonoid.localization_map.mk'_eq_iff_eq_mul + theorem submonoid.localization_map.mk'_eq_iff_mk'_eq + theorem submonoid.localization_map.mk'_eq_of_eq + theorem submonoid.localization_map.mk'_mul + theorem submonoid.localization_map.mk'_mul_cancel_left + theorem submonoid.localization_map.mk'_mul_cancel_right + theorem submonoid.localization_map.mk'_mul_eq_mk'_of_mul + theorem submonoid.localization_map.mk'_one + theorem submonoid.localization_map.mk'_sec + theorem submonoid.localization_map.mk'_self' + theorem submonoid.localization_map.mk'_self + theorem submonoid.localization_map.mk'_spec' + theorem submonoid.localization_map.mk'_spec + theorem submonoid.localization_map.mk'_surjective + theorem submonoid.localization_map.mul_inv + theorem submonoid.localization_map.mul_inv_left + theorem submonoid.localization_map.mul_inv_right + theorem submonoid.localization_map.mul_mk'_eq_mk'_of_mul + theorem submonoid.localization_map.mul_mk'_one_eq_mk' + theorem submonoid.localization_map.sec_spec' + theorem submonoid.localization_map.sec_spec + structure submonoid.localization_map - def submonoid.r' - def submonoid.r - theorem submonoid.r_eq_r' Modified src/group_theory/submonoid.lean + def monoid_hom.restrict 2020-03-06 11:43:23 36b336c chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-06 09:04:50 8fb9881 fix(category_theory/limits): Add some missing instances for special shapes of limits (#2083) * Add some instances for limit shapes * Deduce has_(equalizers|kernels|pullbacks) from has_finite_limits ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.has_coequalizers_of_has_finite_colimits + def category_theory.limits.has_equalizers_of_has_finite_limits +/- inductive category_theory.limits.walking_parallel_pair_hom Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.has_cokernels_of_has_finite_colimits + def category_theory.limits.has_kernels_of_has_finite_limits Modified src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.has_pullbacks_of_has_finite_limits + def category_theory.limits.has_pushouts_of_has_finite_colimits +/- inductive category_theory.limits.walking_cospan.hom +/- inductive category_theory.limits.walking_span.hom 2020-03-06 06:56:58 f81f861 feat(category_theory/limits): the kernel of the cokernel of an epimorphism is an isomorphism (#2088) * The kernel of the cokernel of an epimorphism is an isomorphism * Fix unused argument warnings * Remove a set_option * Fix a typo ESTIMATED CHANGES Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.cocone_parallel_pair_ext + theorem category_theory.limits.cocone_parallel_pair_left + theorem category_theory.limits.cocone_parallel_pair_right + def category_theory.limits.cocone_parallel_pair_self + theorem category_theory.limits.cocone_parallel_pair_self_X + theorem category_theory.limits.cocone_parallel_pair_self_ι_app_one + theorem category_theory.limits.coequalizer.hom_ext + theorem category_theory.limits.coequalizer.π.cofork + theorem category_theory.limits.coequalizer.π.eq_app_one + theorem category_theory.limits.coequalizer.π_epi + def category_theory.limits.coequalizer.π_of_self' + def category_theory.limits.coequalizer.π_of_self + theorem category_theory.limits.cofork.eq_of_π_π + def category_theory.limits.colimit_cocone_parallel_pair_self_is_iso' + def category_theory.limits.colimit_cocone_parallel_pair_self_is_iso + def category_theory.limits.equalizer.ι_of_self' + def category_theory.limits.equalizer.ι_of_self + def category_theory.limits.is_colimit_cocone_parallel_pair_self + def category_theory.limits.limit_cone_parallel_pair_self_is_iso' + def category_theory.limits.mono_limit_cocone_parallel_pair_is_iso Modified src/category_theory/limits/shapes/kernels.lean + def category_theory.limits.cokernel.is_colimit_cocone_zero_cocone + def category_theory.limits.cokernel.of_epi + def category_theory.limits.cokernel.of_kernel_of_mono + def category_theory.limits.cokernel.zero_cocone + theorem category_theory.limits.cokernel.π_of_epi + def category_theory.limits.cokernel.π_of_zero + def category_theory.limits.kernel.of_cokernel_of_epi + def category_theory.limits.kernel.of_mono + theorem category_theory.limits.kernel.ι_of_mono + def category_theory.limits.kernel.ι_of_zero 2020-03-05 18:58:12-08:00 0f9751c feat(data/traversable): improve support for instances for recursive types (#2072) ESTIMATED CHANGES Modified src/category/traversable/derive.lean Modified test/examples.lean + def ex + inductive my_tree + def x 2020-03-06 01:31:18 093ac77 feat(analysis/calculus/specific_functions): smoothness of exp(-1/x) (#2087) * feat(analysis/calculus/specific_functions): smoothness of exp(-1/x) * use namespace; shorter names * fix field_simp ESTIMATED CHANGES Modified src/algebra/field.lean + theorem div_sub' + theorem sub_div' Added src/analysis/calculus/specific_functions.lean + def exp_neg_inv_glue.f_aux + theorem exp_neg_inv_glue.f_aux_deriv + theorem exp_neg_inv_glue.f_aux_deriv_pos + theorem exp_neg_inv_glue.f_aux_deriv_zero + theorem exp_neg_inv_glue.f_aux_has_deriv_at + theorem exp_neg_inv_glue.f_aux_iterated_deriv + theorem exp_neg_inv_glue.f_aux_limit + theorem exp_neg_inv_glue.f_aux_zero_eq + theorem exp_neg_inv_glue.nonneg + theorem exp_neg_inv_glue.pos_of_pos + theorem exp_neg_inv_glue.smooth + theorem exp_neg_inv_glue.zero_of_nonpos + def exp_neg_inv_glue Modified test/ring.lean 2020-03-05 16:05:27 50c4adf chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-05 13:17:04 78ffbae chore(*): switch to lean 3.6.1 (#2064) * chore(*): switch to lean 3.6.0 * Port `src/linear_algebra` to Lean 3.6c * Port `src/ring_theory` to Lean 3.6c * Port `src/algebra` and its dependencies to Lean 3.6c * Port `src/group_theory` to Lean 3.6c * WIP: Ports part of `src/data` to Lean 3.6c * Port `src/data` (and dependencies) to Lean 3.6 * fix set_theory.lists * fix ring2 * fix pell.lean these aren't the cleanest proofs, but pell.lean is kind of a standalone thing. * fix dioph.lean * Port `src/number_theory/sum_four_squares.lean` to Lean 3.6c * Port `src/field_theory` to Lean 3.6 * Port `src/computability` to Lean 3.6c * Port `src/measure_theory` (and dependencies) to Lean 3.6c * fix manifold/real_instances * fix analysis/complex/polynomial * Fix some compile errors in `real_inner_product` * Upgrade to Lean 3.6.1 * perf: speed up calls to linarith * Reduce instance priorities for potentially noncomputable instances. * Remove cyclic instance. * Make arguments {implicit} in instances where they can be filled in via unification. * Make inner_product_space compile. * Style. * Port data.nat.modeq * Port data.int.parity * Port data.int.modeq * Port data.real.hyperreal * fix(ci): always run git setup step closes #2079 (cherry picked from commit 8a0157dc8dfc946d98eba02417052c3c9556559e) * Remove pre-3.6 legacy code. * Fix test/monotonicity.lean * Fix test/ring_exp.lean * Fix test/conv.lean * Fix archive/imo1988_q6.lean * Fix docs/tutorial/Zmod37.lean * Fix archive/sensitivity.lean * refactor(algebra/lie_algebra): lie_algebra should not extend lie_ring * remove unused argument * add doc-string to instance that became a def * add docstring * Fix linting error ☺ * Fix data.real.irrational * fixing a proof * cleaning up proof * fix broken proof * fix proof * fix some more proofs * fix * fix proofs ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified archive/sensitivity.lean Modified docs/tutorial/Zmod37.lean Modified leanpkg.toml Modified scripts/nolints.txt Modified src/algebra/archimedean.lean Modified src/algebra/direct_limit.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean - theorem div_div_cancel - theorem div_div_div_cancel_right +/- theorem div_neg - theorem div_right_comm +/- theorem division_ring.inv_eq_iff +/- theorem division_ring.inv_inj +/- theorem field.div_div_cancel +/- theorem field.div_div_div_cancel_right +/- theorem field.div_right_comm +/- theorem inv_div +/- theorem inv_div_left + theorem inv_inv'' - theorem inv_inv' +/- theorem inv_involutive' +/- theorem neg_inv Modified src/algebra/field_power.lean +/- theorem is_ring_hom.map_fpow +/- theorem ring_hom.map_fpow Modified src/algebra/floor.lean Modified src/algebra/geom_sum.lean Modified src/algebra/group/basic.lean +/- theorem neg_sub_neg + theorem sub_eq_sub_iff_add_eq_add Modified src/algebra/group_power.lean +/- theorem div_pow +/- theorem division_ring.inv_pow +/- theorem inv_pow' +/- theorem one_div_pow +/- theorem pow_div Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean +/- theorem submodule.coe_sub +/- def vector_space Modified src/algebra/opposites.lean Modified src/algebra/order_functions.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean + def linear_nonneg_ring.to_decidable_linear_ordered_comm_ring Modified src/algebra/pi_instances.lean + theorem pi.sub_apply + theorem prod.fst_sub + theorem prod.snd_sub Modified src/algebra/pointwise.lean Modified src/algebra/quadratic_discriminant.lean Modified src/algebra/ring.lean Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/complex/basic.lean Modified src/analysis/complex/exponential.lean +/- theorem real.arcsin_eq_pi_div_two_sub_arccos Modified src/analysis/complex/polynomial.lean Modified src/analysis/convex/topology.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/computability/turing_machine.lean Modified src/data/array/lemmas.lean Modified src/data/complex/basic.lean Modified src/data/complex/exponential.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/algebra.lean Modified src/data/equiv/list.lean Modified src/data/finset.lean - theorem finset.has_insert_eq_insert Modified src/data/finsupp.lean Modified src/data/fintype.lean Modified src/data/fp/basic.lean Modified src/data/hash_map.lean Modified src/data/holor.lean Modified src/data/int/basic.lean Modified src/data/int/gcd.lean Modified src/data/int/modeq.lean Modified src/data/int/parity.lean Modified src/data/list/basic.lean +/- theorem list.mem_enum_from Modified src/data/list/perm.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/basic.lean Modified src/data/nat/cast.lean Modified src/data/nat/dist.lean Modified src/data/nat/enat.lean Modified src/data/nat/modeq.lean Modified src/data/nat/multiplicity.lean Modified src/data/nat/pairing.lean Modified src/data/nat/sqrt.lean Modified src/data/num/lemmas.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/polynomial.lean +/- theorem polynomial.degree_map +/- theorem polynomial.leading_coeff_map +/- theorem polynomial.map_div +/- theorem polynomial.map_eq_zero +/- theorem polynomial.map_mod +/- theorem polynomial.nat_degree_map Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean +/- theorem rat.cast_div +/- theorem rat.cast_inv +/- theorem rat.cast_mk +/- theorem rat.cast_pow Modified src/data/rat/order.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.inv_epsilon_eq_omega Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean +/- theorem nnreal.inv_inv Modified src/data/real/pi.lean Modified src/data/set/basic.lean - theorem set.insert_of_has_insert Modified src/data/set/enumerate.lean Modified src/data/set/lattice.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/data/zsqrtd/basic.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/finite.lean +/- theorem finite_field.pow_card_sub_one_eq_one Modified src/field_theory/finite_card.lean Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/mv_polynomial.lean +/- theorem mv_polynomial.is_basis_monomials +/- theorem mv_polynomial.mem_restrict_degree +/- theorem mv_polynomial.mem_restrict_degree_iff_sup +/- def mv_polynomial.restrict_degree Modified src/field_theory/perfect_closure.lean +/- def perfect_closure.UMP +/- theorem perfect_closure.eq_pth_root Modified src/field_theory/splitting_field.lean Modified src/field_theory/subfield.lean Modified src/geometry/manifold/real_instances.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean Modified src/group_theory/order_of_element.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/contraction.lean Modified src/linear_algebra/dimension.lean +/- theorem dim_of_field Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean +/- theorem finite_dimensional.dim_lt_omega +/- theorem finite_dimensional.findim_eq_dim +/- def finite_dimensional Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/matrix.lean +/- theorem matrix.rank_diagonal Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/lebesgue_measure.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/simple_func_dense.lean Modified src/number_theory/dioph.lean Modified src/number_theory/pell.lean Modified src/number_theory/sum_four_squares.lean Modified src/order/filter/filter_product.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebraic.lean Modified src/ring_theory/ideals.lean +/- theorem ideal.eq_bot_of_prime +/- theorem ideal.eq_bot_or_top Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series.lean Modified src/set_theory/lists.lean Modified src/tactic/abel.lean Modified src/tactic/algebra.lean Modified src/tactic/linarith.lean Modified src/tactic/lint.lean Modified src/tactic/ring.lean Modified src/tactic/ring2.lean Modified src/tactic/ring_exp.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/subset_properties.lean Modified test/conv.lean Modified test/monotonicity.lean Modified test/ring_exp.lean 2020-03-05 00:24:49 8535132 refactor(algebra/lie_algebra): lie_algebra should not extend lie_ring (#2084) * refactor(algebra/lie_algebra): lie_algebra should not extend lie_ring * Fix linting error ☺ ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean +/- theorem lie_algebra.endo_algebra_bracket +/- def lie_algebra.of_associative_algebra +/- theorem lie_smul +/- def lie_subalgebra_lie_algebra + def lie_subalgebra_lie_ring + def matrix.lie_ring +/- theorem smul_lie Modified src/algebra/ordered_group.lean +/- theorem add_neg_le_iff_le_add 2020-03-04 22:23:00 7d6c4fb fix(congruence): use has_coe_t instead of has_coe (#2086) * fix(congruence): use has_coe_t instead of has_coe * capitalization Does that matter for doc generation? ESTIMATED CHANGES Modified src/group_theory/congruence.lean 2020-03-04 19:56:00 9fc675c chore(analysis/normed_space/basic): rename `ne_mem_of_tendsto_norm_at_top` (#2085) It uses `∀ᶠ` now, so rename to `eventually_ne_of_tendsto_norm_at_top`. ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/basic.lean + theorem eventually_ne_of_tendsto_norm_at_top - theorem ne_mem_of_tendsto_norm_at_top 2020-03-04 13:10:10 f112408 fix(ci): adjust conditions for fixing steps (#2082) * fix(ci): always run git setup step closes #2079 * fix(ci): always test doc gen documentation will still be pushed only under the same conditions as before closes #2081 * Update scripts/deploy_docs.sh Co-Authored-By: Gabriel Ebner ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/deploy_docs.sh 2020-03-04 07:09:20 cc4ac8a chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-03 20:45:05-08:00 0f1eb80 fix(CI/documentation): add a name back ESTIMATED CHANGES Modified src/tactic/interactive.lean 2020-03-03 22:24:50 13f04c0 feat(tactic/extract_goal): improve formatting to put assumptions on their own line (#2076) ESTIMATED CHANGES Modified src/tactic/interactive.lean 2020-03-03 20:14:28 545dd03 feat(topology/metric_space/antilipschitz): define `antilipschitz_with` (#2075) * chore(data/real/ennreal): weaker assumptions in `sub_mul`, add `coe_inv_le` * feat(topology/metric_space/antilipschitz): define `antilipschitz_with` Also make some proofs use facts about `antilipschitz_with`. * Rename inequalities, move `K` to the other side This way it's easier to glue it with the rest of the library, and we can avoid assuming `0 < K` in many lemmas. ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/normed_space/basic.lean + theorem abs_dist_sub_le_dist_add_add + theorem antilipschitz_with.add_lipschitz_with + theorem edist_add_add_le + theorem lipschitz_with.add + theorem lipschitz_with.neg + theorem lipschitz_with.sub + theorem nndist_add_add_le Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_equiv.antilipschitz + theorem continuous_linear_equiv.lipschitz + theorem continuous_linear_equiv.uniform_embedding + theorem continuous_linear_map.antilipschitz_of_uniform_embedding - theorem continuous_linear_map.bound_of_uniform_embedding + theorem continuous_linear_map.op_norm_le_of_lipschitz +/- theorem continuous_linear_map.uniform_embedding_of_bound + theorem linear_map.antilipschitz_of_bound Modified src/measure_theory/bochner_integration.lean Modified src/topology/bounded_continuous_function.lean Added src/topology/metric_space/antilipschitz.lean + theorem antilipschitz_with.comp + theorem antilipschitz_with.id + theorem antilipschitz_with.mul_le_dist + theorem antilipschitz_with.mul_le_edist + theorem antilipschitz_with.to_inverse + theorem antilipschitz_with.uniform_embedding + def antilipschitz_with + theorem antilipschitz_with_iff_le_mul_dist + theorem lipschitz_with.to_inverse Modified src/topology/metric_space/contracting.lean - theorem contracting_with.dist_le + theorem contracting_with.dist_le_mul Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean + theorem isometry.antilipschitz +/- theorem isometry.injective + theorem isometry.lipschitz Modified src/topology/metric_space/lipschitz.lean - theorem lipschitz_with.edist_le + theorem lipschitz_with.edist_le_mul + theorem lipschitz_with.mul_edist_le - theorem lipschitz_with_iff_dist_le + theorem lipschitz_with_iff_dist_le_mul 2020-03-03 14:39:18 02d22c3 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-03 11:51:46 f7e82d0 feat(tactic/lint): check for redundant simp lemmas (#2066) * chore(*): fix simp lemmas * feat(tactic/lint): check for redundant simp lemmas ESTIMATED CHANGES Modified docs/commands.md Modified src/algebra/associated.lean +/- theorem dvd_mul_unit_iff +/- theorem mul_unit_dvd_iff Modified src/algebra/big_operators.lean +/- theorem finset.prod_const_one +/- theorem finset.sum_const_zero Modified src/algebra/category/Group.lean Modified src/algebra/char_zero.lean +/- theorem nat.cast_ne_zero Modified src/algebra/commute.lean +/- theorem commute.inv_left +/- theorem commute.inv_right +/- theorem commute.neg_left +/- theorem commute.neg_right +/- theorem commute.units_inv_left +/- theorem commute.units_inv_right Modified src/algebra/free.lean +/- theorem free_semigroup.lift_of_mul Modified src/algebra/group/basic.lean Modified src/algebra/group_power.lean +/- theorem list.prod_repeat +/- theorem list.sum_repeat Modified src/algebra/lie_algebra.lean + theorem lie_algebra.map_lie' +/- theorem lie_algebra.map_lie Modified src/algebra/ring.lean +/- theorem ring_hom.comp_apply Modified src/category_theory/discrete_category.lean +/- theorem category_theory.functor.of_function_map Modified src/category_theory/functor_category.lean +/- theorem category_theory.nat_trans.vcomp_app' Modified src/category_theory/monoidal/category.lean +/- theorem category_theory.monoidal_category.triangle_assoc_comp_left Modified src/category_theory/natural_isomorphism.lean +/- theorem category_theory.nat_iso.app_hom +/- theorem category_theory.nat_iso.app_inv +/- theorem category_theory.nat_iso.hom_app_inv_app_id +/- theorem category_theory.nat_iso.inv_app_hom_app_id Modified src/computability/partrec.lean +/- theorem nat.rfind_dom' Modified src/data/bool.lean +/- theorem bool.coe_to_bool Modified src/data/complex/basic.lean +/- theorem complex.abs_of_nat +/- theorem complex.of_real_ne_zero Modified src/data/dfinsupp.lean +/- theorem dfinsupp.erase_ne +/- theorem dfinsupp.filter_apply_neg +/- theorem dfinsupp.filter_apply_pos +/- theorem dfinsupp.mem_support_iff +/- theorem dfinsupp.single_eq_of_ne Modified src/data/equiv/algebra.lean +/- theorem equiv.coe_units_equiv_ne_zero Modified src/data/equiv/denumerable.lean +/- theorem denumerable.decode_eq_of_nat Modified src/data/fin.lean +/- theorem fin.mk_val Modified src/data/finset.lean +/- theorem finset.image_val_of_inj_on +/- theorem finset.insert_empty_eq_singleton +/- theorem finset.mem_image_of_mem +/- theorem finset.mem_map_of_mem +/- theorem finset.piecewise_eq_of_mem +/- theorem finset.piecewise_eq_of_not_mem +/- theorem finset.piecewise_insert_of_ne +/- theorem finset.sdiff_union_of_subset +/- theorem finset.singleton_eq_singleton +/- theorem finset.union_sdiff_of_subset +/- theorem finset.union_self Modified src/data/fintype.lean +/- theorem fintype.card_unit +/- theorem fintype.univ_unit Modified src/data/int/basic.lean +/- theorem int.cast_ne_zero +/- theorem int.coe_nat_ne_zero +/- theorem int.mod_one +/- theorem int.mod_self +/- theorem int.mod_zero +/- theorem int.zero_mod Modified src/data/int/gcd.lean Modified src/data/list/basic.lean +/- theorem list.cons_inj' +/- theorem list.cons_ne_nil +/- theorem list.count_cons_of_ne +/- theorem list.count_eq_zero_of_not_mem +/- theorem list.disjoint_singleton +/- theorem list.erase_of_not_mem +/- theorem list.index_of_cons_ne +/- theorem list.index_of_of_not_mem +/- theorem list.insert_of_mem +/- theorem list.insert_of_not_mem +/- theorem list.mem_insert_of_mem +/- theorem list.mem_map_of_inj +/- theorem list.singleton_disjoint +/- theorem list.sublists'_singleton Modified src/data/list/sigma.lean +/- theorem list.kerase_cons_eq +/- theorem list.kerase_cons_ne +/- theorem list.kerase_of_not_mem_keys +/- theorem list.mem_keys_kerase_of_ne Modified src/data/list/sort.lean Modified src/data/multiset.lean +/- theorem multiset.cons_erase +/- theorem multiset.cons_ndinter_of_mem +/- theorem multiset.count_cons_of_ne +/- theorem multiset.count_eq_zero_of_not_mem +/- theorem multiset.count_erase_of_ne +/- theorem multiset.disjoint_singleton +/- theorem multiset.erase_cons_tail +/- theorem multiset.erase_of_not_mem - theorem multiset.forall_mem_ne +/- theorem multiset.length_ndinsert_of_mem +/- theorem multiset.length_ndinsert_of_not_mem +/- theorem multiset.map_id +/- theorem multiset.mem_map_of_inj +/- theorem multiset.mem_ndinsert_of_mem +/- theorem multiset.nat.nodup_antidiagonal +/- theorem multiset.ndinsert_of_mem +/- theorem multiset.ndinsert_of_not_mem +/- theorem multiset.ndinter_cons_of_not_mem +/- theorem multiset.ndinter_eq_inter +/- theorem multiset.ndunion_eq_union +/- theorem multiset.singleton_disjoint Modified src/data/nat/basic.lean Modified src/data/nat/enat.lean +/- theorem enat.coe_add_get + theorem enat.get_coe Modified src/data/num/lemmas.lean +/- theorem num.add_to_nat +/- theorem num.cast_inj +/- theorem num.cast_le +/- theorem num.cast_lt +/- theorem num.dvd_to_nat +/- theorem num.land_to_nat +/- theorem num.ldiff_to_nat +/- theorem num.le_to_nat +/- theorem num.lor_to_nat +/- theorem num.lt_to_nat +/- theorem num.lxor_to_nat +/- theorem num.mul_to_nat +/- theorem num.of_nat_cast +/- theorem num.shiftl_to_nat +/- theorem num.shiftr_to_nat +/- theorem num.to_of_nat +/- theorem pos_num.add_to_nat +/- theorem pos_num.cast_add +/- theorem pos_num.cast_inj +/- theorem pos_num.cast_le +/- theorem pos_num.cast_lt +/- theorem pos_num.cast_mul +/- theorem pos_num.cast_succ +/- theorem pos_num.le_to_nat +/- theorem pos_num.lt_to_nat +/- theorem pos_num.mul_to_nat +/- theorem znum.cast_inj +/- theorem znum.cast_le +/- theorem znum.cast_lt +/- theorem znum.le_to_int +/- theorem znum.lt_to_int +/- theorem znum.to_of_int Modified src/data/padics/padic_integers.lean +/- theorem padic_int.add_def +/- theorem padic_int.mul_def +/- theorem padic_norm_z.norm_one Modified src/data/pequiv.lean Modified src/data/pnat/basic.lean +/- theorem pnat.to_pnat'_coe Modified src/data/polynomial.lean +/- theorem polynomial.coeff_C_mul_X +/- theorem polynomial.coeff_one Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean +/- theorem rat.cast_ne_zero Modified src/data/real/ennreal.lean +/- theorem ennreal.inv_le_inv +/- theorem ennreal.two_ne_top +/- theorem ennreal.two_ne_zero +/- theorem ennreal.zero_lt_coe_iff Modified src/data/real/hyperreal.lean + theorem hyperreal.cast_div + theorem hyperreal.coe_abs + theorem hyperreal.coe_eq_coe + theorem hyperreal.coe_le_coe + theorem hyperreal.coe_lt_coe + theorem hyperreal.coe_max + theorem hyperreal.coe_min + theorem hyperreal.hyperfilter_ne_bot' + theorem hyperreal.hyperfilter_ne_bot Modified src/data/real/nnreal.lean +/- theorem nnreal.coe_mk Modified src/data/seq/seq.lean +/- theorem seq.join_cons Modified src/data/set/basic.lean +/- theorem set.ball_image_iff +/- theorem set.compl_compl +/- theorem set.image_id' +/- theorem set.image_id +/- theorem set.insert_of_has_insert - theorem set.set_of_mem +/- theorem subtype.range_val +/- theorem subtype.val_range Modified src/data/set/function.lean +/- theorem set.piecewise_eq_of_mem +/- theorem set.piecewise_eq_of_not_mem +/- theorem set.piecewise_insert_of_ne Modified src/data/set/lattice.lean +/- theorem set.mem_sUnion Modified src/data/sigma/basic.lean +/- theorem sigma.mk.inj_iff Modified src/data/subtype.lean +/- theorem subtype.mk_eq_mk Modified src/data/sum.lean +/- theorem sum.inl.inj_iff +/- theorem sum.inl_ne_inr +/- theorem sum.inr.inj_iff +/- theorem sum.inr_ne_inl Modified src/data/zmod/basic.lean +/- theorem zmod.cast_mod_int' +/- theorem zmod.cast_mod_nat' Modified src/group_theory/perm/sign.lean - theorem equiv.perm.swap_mul_self - theorem equiv.perm.swap_swap_apply Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.map_ne_zero_iff Modified src/linear_algebra/special_linear_group.lean +/- theorem matrix.special_linear_group.det_coe_fun Modified src/logic/basic.lean +/- theorem coe_fn_coe_trans +/- theorem coe_sort_coe_trans +/- theorem false_ne_true +/- theorem imp_true_iff +/- theorem not_and_not_right Modified src/order/complete_lattice.lean +/- theorem lattice.Inf_singleton +/- theorem lattice.Sup_singleton +/- theorem lattice.infi_const - theorem lattice.insert_of_has_insert +/- theorem lattice.supr_const Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/basic.lean +/- theorem filter.principal_ne_bot_iff Modified src/order/filter/filter_product.lean + theorem filter.filter_product.coe_injective +/- theorem filter.filter_product.of_add + theorem filter.filter_product.of_bit0 + theorem filter.filter_product.of_bit1 +/- theorem filter.filter_product.of_div +/- theorem filter.filter_product.of_eq_zero +/- theorem filter.filter_product.of_inv +/- theorem filter.filter_product.of_mul +/- theorem filter.filter_product.of_ne_zero +/- theorem filter.filter_product.of_neg +/- theorem filter.filter_product.of_one +/- theorem filter.filter_product.of_sub +/- theorem filter.filter_product.of_zero Modified src/ring_theory/localization.lean +/- theorem localization.fraction_ring.mk_eq_div +/- theorem localization.mk_mul_cancel_left +/- theorem localization.mk_mul_cancel_right +/- theorem localization.mk_self'' +/- theorem localization.mk_self' +/- theorem localization.mk_self Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/power_series.lean +/- theorem mv_power_series.coeff_zero_C +/- theorem mv_power_series.coeff_zero_X +/- theorem mv_power_series.coeff_zero_mul_X +/- theorem mv_power_series.coeff_zero_one +/- theorem mv_power_series.inv_of_unit_eq +/- theorem power_series.inv_of_unit_eq Modified src/ring_theory/unique_factorization_domain.lean +/- theorem associates.factor_set.coe_add Modified src/set_theory/cardinal.lean +/- theorem cardinal.mk_unit Modified src/set_theory/ordinal.lean +/- theorem initial_seg.coe_coe_fn +/- theorem initial_seg.of_iso_apply +/- theorem ordinal.nat_cast_ne_zero +/- theorem ordinal.one_add_of_omega_le +/- theorem ordinal.type_ne_zero_iff_nonempty +/- theorem principal_seg.coe_coe_fn +/- theorem principal_seg.equiv_lt_apply +/- theorem principal_seg.lt_le_apply +/- theorem principal_seg.of_element_apply +/- theorem principal_seg.trans_apply +/- theorem principal_seg.trans_top Modified src/set_theory/pgame.lean Modified src/tactic/converter/binders.lean - theorem mem_image Modified src/tactic/lint.lean + theorem add_zero + theorem zero_add_zero Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.id_apply + theorem continuous_linear_map.sub_apply' +/- theorem continuous_linear_map.sub_apply Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/Top/opens.lean Modified src/topology/metric_space/hausdorff_distance.lean +/- theorem emetric.Hausdorff_edist_self_closure +/- theorem metric.Hausdorff_dist_self_closure Modified src/topology/sheaves/presheaf.lean +/- theorem Top.presheaf.pushforward.id_hom_app Modified test/lint_simp_nf.lean 2020-03-03 09:04:21 2d1bd45 fix some docstrings [ci skip] (#2078) ESTIMATED CHANGES Modified src/category/monad/writer.lean Modified src/category_theory/concrete_category/bundled_hom.lean 2020-03-03 07:18:28 2a9ad03 feat(data/list/basic): more lemmas about `list.chain'`; `chain'_of_pairwise` → `pairwise.chain'` (#2071) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.chain'.cons + theorem list.chain'.tail + theorem list.chain'_cons + theorem list.chain'_nil - theorem list.chain'_of_pairwise + theorem list.chain'_pair + theorem list.chain'_reverse +/- theorem list.chain'_singleton + theorem list.chain.imp' + theorem list.pairwise.chain' 2020-03-03 05:29:57 e003014 feat(analysis/calculus/iterated_deriv): iterated derivative of a function defined on the base field (#2067) * iterated deriv * cleanup * fix docstring * add iterated_deriv_within_succ' * remove n.succ * n+1 -> n + 1 ESTIMATED CHANGES Added src/analysis/calculus/iterated_deriv.lean + def iterated_deriv + theorem iterated_deriv_eq_equiv_comp + theorem iterated_deriv_eq_iterate + theorem iterated_deriv_eq_iterated_fderiv + theorem iterated_deriv_one + theorem iterated_deriv_succ' + theorem iterated_deriv_succ + def iterated_deriv_within + theorem iterated_deriv_within_eq_equiv_comp + theorem iterated_deriv_within_eq_iterate + theorem iterated_deriv_within_eq_iterated_fderiv_within + theorem iterated_deriv_within_one + theorem iterated_deriv_within_succ' + theorem iterated_deriv_within_succ + theorem iterated_deriv_within_univ + theorem iterated_deriv_within_zero + theorem iterated_deriv_zero + theorem iterated_fderiv_apply_eq_iterated_deriv_mul_prod + theorem iterated_fderiv_eq_equiv_comp + theorem iterated_fderiv_within_apply_eq_iterated_deriv_within_mul_prod + theorem iterated_fderiv_within_eq_equiv_comp + theorem times_cont_diff.continuous_iterated_deriv + theorem times_cont_diff.differentiable_iterated_deriv + theorem times_cont_diff_iff_iterated_deriv + theorem times_cont_diff_of_differentiable_iterated_deriv + theorem times_cont_diff_on.continuous_on_iterated_deriv_within + theorem times_cont_diff_on.differentiable_on_iterated_deriv_within + theorem times_cont_diff_on_iff_continuous_on_differentiable_on_deriv + theorem times_cont_diff_on_of_continuous_on_differentiable_on_deriv + theorem times_cont_diff_on_of_differentiable_on_deriv Modified src/analysis/calculus/times_cont_diff.lean +/- theorem iterated_fderiv_succ_apply_left +/- theorem iterated_fderiv_succ_apply_right +/- theorem iterated_fderiv_within_succ_apply_left 2020-03-03 00:17:40 262a39e chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-03-02 21:45:35 fe9d7ff feat(tactic/nat_cases): a tactic to case bash inequalities on natural numbers (#1596) * starting on finset_cases * looking pretty nice * moving lemma that rewrites nat.add back to (+) * update tactics.md * cleanup * suggestions from review * Update src/tactic/fin_cases.lean Co-Authored-By: semorrison * incomplete implementation of `with` syntax * looks good * failed attempt to use unification * test showing elaboration problem * elaborating the `with` argument with respect to the expected type * testing the type of A in `x ∈ A` using unification rather than syntactic matching * refactor and cleanup * refactor * initial start on nat_cases * initial start on nat_cases * resuming work on nat_cases * looks reasonable * documentation * reverting bad merge in fin_cases * fix module comment * move non-meta lemmas * add tests for Chris' use case * cleanup * oops * starting on fintype instances for Icos * finishing fintypes * minor * not really sure what to do next * oops, forgot to commit?? * oops * bit more work * more progress * everything works? * moving everything to their natural homes * rearrange * cleanup * linting * doc-strings * merge two interactive tactics, via `using` keyword * improve documentation, in response to review * add interval_cases to tactic.default * Apply suggestions from code review ESTIMATED CHANGES Modified docs/tactics.md Modified src/algebra/ordered_group.lean +/- theorem bot_eq_zero Modified src/data/finset.lean +/- theorem finset.Ico_ℤ.mem Modified src/data/fintype/intervals.lean Modified src/data/list/basic.lean + theorem list.Ico.trichotomy Modified src/data/nat/basic.lean + theorem nat.add_one_le_iff + theorem nat.one_add_le_iff + theorem nat.pos_of_bit0_pos Modified src/data/pnat/basic.lean + theorem pnat.add_one_le_iff + theorem pnat.bit0_le_bit0 + theorem pnat.bit0_le_bit1 + theorem pnat.bit1_le_bit0 + theorem pnat.bit1_le_bit1 + theorem pnat.bot_eq_zero + theorem pnat.lt_add_one_iff + theorem pnat.mk_bit0 + theorem pnat.mk_bit1 + theorem pnat.mk_one + theorem pnat.one_le Added src/data/pnat/intervals.lean + theorem pnat.Ico.mem + def pnat.Ico Modified src/tactic/default.lean Modified src/tactic/fin_cases.lean Added src/tactic/interval_cases.lean + theorem tactic.interval_cases.mem_set_elems + def tactic.interval_cases.set_elems Modified test/fin_cases.lean Added test/interval_cases.lean 2020-03-02 19:54:08 1d82a7c doc(data/fin): add docs; fin_zero_elim -> fin.elim0; fin_zero_elim' -> fin_zero_elim (#2055) * doc(data/fin): add some docs Also drom `fin_zero_elim` in favor of `fin.elim0` from `stdlib` and rename `fin_zero_elim'` to `fin_zero_elim`. * Update src/data/fin.lean Co-Authored-By: Rob Lewis * Update docs, fix `Π` vs `∀`. ESTIMATED CHANGES Modified src/data/fin.lean - def fin_zero_elim' +/- def fin_zero_elim 2020-03-02 18:11:18 8919541 feat(data/finset): new basic material on finsets and fintypes (#2068) * feat(data/finset): additional basic material * minor fixes * golfed * Update src/data/finset.lean Co-Authored-By: Johan Commelin * Update src/data/finset.lean Co-Authored-By: Johan Commelin * Update src/data/finset.lean Co-Authored-By: Johan Commelin * golfed ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.le_max' +/- theorem finset.le_min' + theorem finset.left_eq_union_iff_subset +/- def finset.max' +/- theorem finset.max'_le +/- theorem finset.max'_mem +/- def finset.min' +/- theorem finset.min'_le +/- theorem finset.min'_lt_max' +/- theorem finset.min'_mem + theorem finset.pi_disjoint_of_disjoint + theorem finset.pi_subset + theorem finset.right_eq_union_iff_subset + theorem finset.sdiff_subset + theorem finset.singleton_subset_iff + theorem finset.union_eq_left_iff_subset + theorem finset.union_eq_right_iff_subset Modified src/data/fintype.lean + theorem finset.card_le_one_iff + theorem finset.one_lt_card_iff + theorem fintype.mem_pi_finset + def fintype.pi_finset + theorem fintype.pi_finset_disjoint_of_disjoint + theorem fintype.pi_finset_subset + theorem fintype.pi_finset_univ Modified src/data/fintype/card.lean + theorem fintype.card_pi_finset Modified src/measure_theory/integration.lean 2020-03-02 16:19:30 62756bd chore(data/real/ennreal): weaker assumptions in `sub_mul`, add `coe_inv_le` (#2074) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.coe_inv_le +/- theorem ennreal.mul_sub +/- theorem ennreal.sub_mul + theorem ennreal.sub_mul_ge 2020-03-02 14:25:59 bfbd093 chore(algebra/group): move `is_mul/monoid/group_hom` to `deprecated/` (#2056) * Move `is_mul/monoid/group_hom` to `deprecated/` Also improve deprecation docstring. TODO: fix compile * chore(algebra/group): move `is_mul/monoid/group_hom` to `deprecated/` Also migrate a few definitions to bundled homs: * use `monoid_hom.map_is_conj` instead of `is_group_hom.is_conj`; * `with_one.lift` and `with_one.map` now take `f` and an explicit argument `h : ∀ x y, f (x * y) = f x * f y` instead of `f` and `[is_mul_hom f]`, and produce a `monoid_hom`. As a side effect, they are now defined for semigroup homomorphisms only. * Adjust module docstring * Update src/algebra/group/with_one.lean I wonder if mergify will do its job now. ESTIMATED CHANGES Modified src/algebra/group/conj.lean Modified src/algebra/group/hom.lean - theorem inv.is_group_hom - theorem is_add_group_hom.map_sub - theorem is_add_group_hom.sub - theorem is_group_hom.injective_iff - theorem is_group_hom.inv - theorem is_group_hom.map_inv - theorem is_group_hom.map_one - theorem is_group_hom.mk' - theorem is_group_hom.mul - theorem is_monoid_hom.map_mul - theorem is_monoid_hom.of_mul - theorem is_mul_hom.inv - theorem is_mul_hom.mul - theorem monoid_hom.coe_of - def monoid_hom.of Modified src/algebra/group/is_unit.lean - theorem is_unit.map' Modified src/algebra/group/type_tags.lean Modified src/algebra/group/units_hom.lean - theorem units.coe_map' - def units.map' Modified src/algebra/group/with_one.lean +/- def with_one.lift +/- theorem with_one.lift_coe +/- theorem with_one.lift_one +/- theorem with_one.lift_unique +/- def with_one.map - theorem with_one.map_eq Modified src/algebra/ring.lean Added src/deprecated/group.lean + theorem inv.is_group_hom + theorem is_add_group_hom.map_sub + theorem is_add_group_hom.sub + theorem is_group_hom.injective_iff + theorem is_group_hom.inv + theorem is_group_hom.map_inv + theorem is_group_hom.map_one + theorem is_group_hom.mk' + theorem is_group_hom.mul + theorem is_monoid_hom.map_mul + theorem is_monoid_hom.of_mul + theorem is_mul_hom.inv + theorem is_mul_hom.mul + theorem is_unit.map' + theorem monoid_hom.coe_of + def monoid_hom.of + theorem units.coe_map' + def units.map' Modified src/group_theory/perm/sign.lean 2020-03-02 12:33:13 3055b3c chore(topology/metric_space/isometry): rename `(e)metric.isometry.diam_image` to `isometry.(e)diam_image` (#2073) This way we can use dot notation to access these lemmas. Also add `(e)diam_range`. ESTIMATED CHANGES Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean - theorem emetric.isometry.diam_image + theorem isometry.diam_image + theorem isometry.diam_range + theorem isometry.ediam_image + theorem isometry.ediam_range - theorem metric.isometry.diam_image 2020-03-02 10:42:53 2683fa0 feat(order/galois_connection): lemmas about galois insertions and supr/infi (#2052) * feat(order/galois_connection): lemmas about galois insertions and supr/infi * Fix build, hopefully ESTIMATED CHANGES Modified src/order/galois_connection.lean + theorem galois_insertion.l_inf_u + theorem galois_insertion.l_infi_of_ul + theorem galois_insertion.l_infi_u + theorem galois_insertion.l_sup_u + theorem galois_insertion.l_supr_of_ul + theorem galois_insertion.l_supr_u + theorem galois_insertion.l_surjective +/- theorem galois_insertion.l_u_eq + theorem galois_insertion.u_injective +/- theorem order_iso.to_galois_connection Modified src/topology/opens.lean 2020-03-02 08:53:22 d5d907b feat(algebra/free_monoid): define `lift` and `map`, move out of `algebra/group` (#2060) * Move `free_monoid` from `algebra/group/` to `algebra/` * feat(algebra/free_monoid): define `lift` and `map` * Expand docstring, drop unneeded arguments to `to_additive` * Fix compile * Update src/algebra/free_monoid.lean Co-Authored-By: sgouezel ESTIMATED CHANGES Added src/algebra/free_monoid.lean + theorem free_monoid.hom_eq + def free_monoid.lift + theorem free_monoid.lift_eval_of + theorem free_monoid.lift_of_comp_eq_map + theorem free_monoid.lift_restrict + def free_monoid.map + theorem free_monoid.map_comp + theorem free_monoid.map_of + theorem free_monoid.mul_def + def free_monoid.of + theorem free_monoid.of_mul_eq_cons + theorem free_monoid.one_def + def free_monoid Modified src/algebra/group/default.lean Deleted src/algebra/group/free_monoid.lean - theorem free_monoid.mul_def - theorem free_monoid.one_def - def free_monoid Modified src/category/fold.lean Modified src/ring_theory/free_ring.lean 2020-03-01 23:09:46-08:00 aec54b3 fix(.mergify.yml): remove " (leanprover-community/lean:3.5.1)" (#2077) ESTIMATED CHANGES Modified .mergify.yml 2020-02-28 18:23:59+01:00 19a9bdc fix(tactic/omega): reify nonconstant ints and nats (#1748) ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified docs/tactics.md Modified scripts/nolints.txt Modified src/tactic/omega/clause.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/find_ees.lean Modified src/tactic/omega/find_scalars.lean Modified src/tactic/omega/int/dnf.lean +/- theorem omega.int.clauses_sat_dnf_core +/- def omega.int.dnf +/- def omega.int.dnf_core +/- theorem omega.int.implies_neg_elim +/- def omega.int.is_nnf +/- theorem omega.int.is_nnf_nnf +/- theorem omega.int.is_nnf_push_neg +/- def omega.int.neg_elim +/- def omega.int.neg_free +/- theorem omega.int.neg_free_neg_elim +/- def omega.int.nnf +/- theorem omega.int.nnf_equiv +/- def omega.int.push_neg +/- theorem omega.int.unsat_of_clauses_unsat Modified src/tactic/omega/int/form.lean - def omega.int.form.equiv - def omega.int.form.fresh_index - def omega.int.form.holds - def omega.int.form.implies - def omega.int.form.repr - def omega.int.form.sat - theorem omega.int.form.sat_of_implies_of_sat - theorem omega.int.form.sat_or - def omega.int.form.unsat - def omega.int.form.valid - inductive omega.int.form + def omega.int.preform.equiv + def omega.int.preform.fresh_index + def omega.int.preform.holds + def omega.int.preform.implies + def omega.int.preform.repr + def omega.int.preform.sat + theorem omega.int.preform.sat_of_implies_of_sat + theorem omega.int.preform.sat_or + def omega.int.preform.unsat + def omega.int.preform.valid + inductive omega.int.preform +/- def omega.int.univ_close +/- theorem omega.int.univ_close_of_valid +/- theorem omega.int.valid_of_unsat_not Modified src/tactic/omega/int/main.lean +/- theorem omega.int.univ_close_of_unsat_clausify Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/lin_comb.lean Modified src/tactic/omega/main.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/dnf.lean +/- def omega.nat.dnf +/- def omega.nat.dnf_core +/- theorem omega.nat.exists_clause_holds +/- theorem omega.nat.exists_clause_sat +/- theorem omega.nat.unsat_of_unsat_dnf Modified src/tactic/omega/nat/form.lean - def omega.nat.form.equiv - def omega.nat.form.fresh_index - def omega.nat.form.holds - theorem omega.nat.form.holds_constant - def omega.nat.form.implies - def omega.nat.form.neg_free - def omega.nat.form.repr - def omega.nat.form.sat - theorem omega.nat.form.sat_of_implies_of_sat - theorem omega.nat.form.sat_or - def omega.nat.form.sub_free - def omega.nat.form.unsat - def omega.nat.form.valid - inductive omega.nat.form + def omega.nat.preform.equiv + def omega.nat.preform.fresh_index + def omega.nat.preform.holds + theorem omega.nat.preform.holds_constant + def omega.nat.preform.implies + def omega.nat.preform.neg_free + def omega.nat.preform.repr + def omega.nat.preform.sat + theorem omega.nat.preform.sat_of_implies_of_sat + theorem omega.nat.preform.sat_or + def omega.nat.preform.sub_free + def omega.nat.preform.unsat + def omega.nat.preform.valid + inductive omega.nat.preform +/- def omega.nat.univ_close +/- theorem omega.nat.univ_close_of_valid +/- theorem omega.nat.valid_of_unsat_not Modified src/tactic/omega/nat/main.lean +/- theorem omega.nat.univ_close_of_unsat_neg_elim_not Modified src/tactic/omega/nat/neg_elim.lean +/- theorem omega.nat.implies_neg_elim +/- theorem omega.nat.implies_neg_elim_core +/- def omega.nat.is_nnf +/- theorem omega.nat.is_nnf_nnf +/- theorem omega.nat.is_nnf_push_neg +/- def omega.nat.neg_elim +/- def omega.nat.neg_elim_core +/- theorem omega.nat.neg_free_neg_elim +/- def omega.nat.nnf +/- theorem omega.nat.nnf_equiv +/- def omega.nat.push_neg Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/omega/nat/sub_elim.lean - def omega.nat.form.sub_subst - def omega.nat.form.sub_terms +/- def omega.nat.is_diff + def omega.nat.preform.sub_subst + def omega.nat.preform.sub_terms +/- theorem omega.nat.sat_sub_elim +/- def omega.nat.sub_elim +/- def omega.nat.sub_elim_core +/- def omega.nat.sub_fresh_index +/- theorem omega.nat.unsat_of_unsat_sub_elim Modified src/tactic/omega/prove_unsats.lean Modified src/tactic/omega/term.lean Modified test/omega.lean 2020-02-28 16:36:14+01:00 354a4ed chore(ci): remove unneeded Lean version restrictions (#2065) * remove lean version from CI * more version references * fix? * persist environment var between steps ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/deploy_docs.sh Modified scripts/deploy_nightly.sh 2020-02-28 15:33:18 0760829 feat(ring_theory): Fractional ideals (#2062) * Some WIP work on fractional ideals * Fill in the `sorry` * A lot of instances for fractional_ideal * Show that an invertible fractional ideal `I` has inverse `1 : I` * Cleanup and documentation * Move `has_div submodule` to algebra_operations * More cleanup and documentation * Explain the `non_zero_divisors R` in the `quotient` section * whitespace Co-Authored-By: Scott Morrison * `has_inv` instance for `fractional_ideal` * `set.univ.image` -> `set.range` * Fix: `mem_div_iff.mpr` should be `mem_div_iff.mp` (but both reduce to reflexivity anyway) * Add `mem_div_iff_smul_subset` Since that is how the definition of `I / J` is traditionally done, but it is not as convenient to work with, I didn't change the definition but added a lemma stating the two are equivalent * whitespace again (it got broken because I merged changes incorrectly) * Fix unused argument to `inv_nonzero` ESTIMATED CHANGES Modified src/ring_theory/algebra_operations.lean + theorem submodule.le_div_iff + theorem submodule.mem_div_iff_forall_mul_mem + theorem submodule.mem_div_iff_smul_subset Added src/ring_theory/fractional_ideal.lean + theorem ring.fractional_ideal.bot_eq_zero + theorem ring.fractional_ideal.coe_mem_one + theorem ring.fractional_ideal.div_nonzero + theorem ring.fractional_ideal.div_one + theorem ring.fractional_ideal.eq_zero_iff + theorem ring.fractional_ideal.ext + theorem ring.fractional_ideal.fractional_div_of_nonzero + theorem ring.fractional_ideal.fractional_inf + theorem ring.fractional_ideal.fractional_mul + theorem ring.fractional_ideal.fractional_of_subset_one + theorem ring.fractional_ideal.fractional_sup + theorem ring.fractional_ideal.inv_nonzero + theorem ring.fractional_ideal.le_iff + theorem ring.fractional_ideal.mem_one_iff + theorem ring.fractional_ideal.mem_zero_iff + theorem ring.fractional_ideal.mul_left_mono + theorem ring.fractional_ideal.mul_right_mono + theorem ring.fractional_ideal.nonzero_iff_val_nonzero + theorem ring.fractional_ideal.right_inverse_eq + theorem ring.fractional_ideal.sup_eq_add + theorem ring.fractional_ideal.val_add + theorem ring.fractional_ideal.val_mul + theorem ring.fractional_ideal.val_zero + theorem ring.fractional_ideal.zero_le + def ring.fractional_ideal + def ring.is_fractional Modified src/ring_theory/localization.lean + theorem localization.coe_mul_eq_smul + theorem localization.coe_smul + def localization.is_integer + theorem localization.is_integer_add + theorem localization.is_integer_coe + theorem localization.is_integer_mul + theorem localization.is_integer_smul + def localization.lin_coe + theorem localization.lin_coe_apply + theorem localization.mul_coe_eq_smul + theorem localization.of_id + theorem localization.of_smul 2020-02-28 13:49:48 4149099 fix(tactic/ring): more precise pattern match for div (#1557) * fix(tactic/ring): more precise pattern match for div * add test * fix instance check for div * chore(algebra/quadratic_discriminant): add braces in have steps * use norm_num instead of ring to evaluate exponents * fix norm_num uses * fix norm_num pow bug * bugfix * fix proof ESTIMATED CHANGES Modified src/algebra/quadratic_discriminant.lean Modified src/linear_algebra/determinant.lean Modified src/tactic/norm_num.lean Modified src/tactic/ring.lean Modified test/ring.lean 2020-02-28 04:02:06 0bf2064 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-28 01:50:01 4637e5c refactor(analysis/calculus/times_cont_diff): massive refactor (#2012) * feat(data/fin): append * Update fin.lean * Update fintype.lean * replace but_last with init * cons and append commute * feat(*/multilinear): better multilinear * docstrings * snoc * fix build * comp_snoc and friends * refactor(analysis/calculus/times_cont_diff): massive refactor * fix docstring * move notation * fix build * linter * linter again * Update src/analysis/calculus/times_cont_diff.lean Co-Authored-By: Scott Morrison * Update src/analysis/calculus/times_cont_diff.lean Co-Authored-By: Scott Morrison * Update src/analysis/calculus/times_cont_diff.lean Co-Authored-By: Scott Morrison * Update src/analysis/calculus/times_cont_diff.lean Co-Authored-By: Scott Morrison * Update src/analysis/calculus/times_cont_diff.lean Co-Authored-By: Scott Morrison * curryfication -> currying ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem with_top.add_one_le_of_lt Modified src/analysis/calculus/times_cont_diff.lean + theorem continuous_linear_equiv.comp_times_cont_diff_on_iff + theorem continuous_linear_equiv.times_cont_diff_on_comp_iff + theorem continuous_linear_map.times_cont_diff + def formal_multilinear_series.shift + def formal_multilinear_series.unshift + def formal_multilinear_series + def ftaylor_series + def ftaylor_series_within + theorem ftaylor_series_within_univ + theorem has_ftaylor_series_up_to.continuous + theorem has_ftaylor_series_up_to.differentiable + theorem has_ftaylor_series_up_to.has_fderiv_at + theorem has_ftaylor_series_up_to.has_ftaylor_series_up_to_on + theorem has_ftaylor_series_up_to.of_le + theorem has_ftaylor_series_up_to.zero_eq' + structure has_ftaylor_series_up_to + theorem has_ftaylor_series_up_to_on.comp_continuous_linear_map + theorem has_ftaylor_series_up_to_on.congr + theorem has_ftaylor_series_up_to_on.continuous_linear_map_comp + theorem has_ftaylor_series_up_to_on.continuous_on + theorem has_ftaylor_series_up_to_on.differentiable_on + theorem has_ftaylor_series_up_to_on.eq_ftaylor_series_of_unique_diff_on + theorem has_ftaylor_series_up_to_on.has_fderiv_within_at + theorem has_ftaylor_series_up_to_on.mono + theorem has_ftaylor_series_up_to_on.of_le + theorem has_ftaylor_series_up_to_on.prod + theorem has_ftaylor_series_up_to_on.zero_eq' + structure has_ftaylor_series_up_to_on + theorem has_ftaylor_series_up_to_on_succ_iff_left + theorem has_ftaylor_series_up_to_on_succ_iff_right + theorem has_ftaylor_series_up_to_on_top_iff + theorem has_ftaylor_series_up_to_on_univ_iff + theorem has_ftaylor_series_up_to_on_zero_iff + theorem has_ftaylor_series_up_to_succ_iff_right + theorem has_ftaylor_series_up_to_zero_iff - def iterated_continuous_linear_map.normed_group_rec - def iterated_continuous_linear_map.normed_space_rec - def iterated_continuous_linear_map - def iterated_fderiv + theorem iterated_fderiv_one_apply - theorem iterated_fderiv_succ + theorem iterated_fderiv_succ_apply_left + theorem iterated_fderiv_succ_apply_right + theorem iterated_fderiv_succ_eq_comp_left + theorem iterated_fderiv_succ_eq_comp_right - def iterated_fderiv_within +/- theorem iterated_fderiv_within_congr + theorem iterated_fderiv_within_inter' +/- theorem iterated_fderiv_within_inter +/- theorem iterated_fderiv_within_inter_open + theorem iterated_fderiv_within_one_apply - theorem iterated_fderiv_within_succ + theorem iterated_fderiv_within_succ_apply_left + theorem iterated_fderiv_within_succ_apply_right + theorem iterated_fderiv_within_succ_eq_comp_left + theorem iterated_fderiv_within_succ_eq_comp_right +/- theorem iterated_fderiv_within_univ - theorem iterated_fderiv_within_zero + theorem iterated_fderiv_within_zero_apply + theorem iterated_fderiv_within_zero_eq_comp + theorem iterated_fderiv_within_zero_fun - theorem iterated_fderiv_zero + theorem iterated_fderiv_zero_apply + theorem iterated_fderiv_zero_eq_comp + theorem times_cont_diff.comp_continuous_linear_map - theorem times_cont_diff.comp_is_bounded_linear +/- theorem times_cont_diff.continuous +/- theorem times_cont_diff.continuous_fderiv +/- theorem times_cont_diff.continuous_fderiv_apply + theorem times_cont_diff.continuous_linear_map_comp + theorem times_cont_diff.differentiable +/- theorem times_cont_diff.of_le - theorem times_cont_diff.of_succ +/- theorem times_cont_diff.times_cont_diff_fderiv_apply +/- theorem times_cont_diff.times_cont_diff_on - def times_cont_diff + theorem times_cont_diff_iff_continuous_differentiable - theorem times_cont_diff_iff_times_cont_diff_rec + theorem times_cont_diff_of_differentiable_iterated_fderiv +/- theorem times_cont_diff_on.comp + theorem times_cont_diff_on.comp_continuous_linear_map - theorem times_cont_diff_on.comp_is_bounded_linear +/- theorem times_cont_diff_on.congr - theorem times_cont_diff_on.congr_mono' +/- theorem times_cont_diff_on.congr_mono + theorem times_cont_diff_on.continuous_linear_map_comp +/- theorem times_cont_diff_on.continuous_on +/- theorem times_cont_diff_on.continuous_on_fderiv_within + theorem times_cont_diff_on.continuous_on_iterated_fderiv_within +/- theorem times_cont_diff_on.differentiable_on + theorem times_cont_diff_on.differentiable_on_iterated_fderiv_within + theorem times_cont_diff_on.fderiv_within + theorem times_cont_diff_on.ftaylor_series_within +/- theorem times_cont_diff_on.mono - theorem times_cont_diff_on.of_succ - def times_cont_diff_on + theorem times_cont_diff_on_congr +/- theorem times_cont_diff_on_const - theorem times_cont_diff_on_fderiv_within - theorem times_cont_diff_on_fderiv_within_nat + theorem times_cont_diff_on_iff_continuous_on_differentiable_on + theorem times_cont_diff_on_iff_ftaylor_series - theorem times_cont_diff_on_iff_times_cont_diff_on_rec + theorem times_cont_diff_on_nat + theorem times_cont_diff_on_of_continuous_on_differentiable_on + theorem times_cont_diff_on_of_differentiable_on +/- theorem times_cont_diff_on_of_locally_times_cont_diff_on - theorem times_cont_diff_on_rec.continuous_on_iterated_fderiv_within - theorem times_cont_diff_on_rec.differentiable_on - theorem times_cont_diff_on_rec.of_succ - def times_cont_diff_on_rec - theorem times_cont_diff_on_rec_succ - theorem times_cont_diff_on_rec_univ - theorem times_cont_diff_on_rec_zero - theorem times_cont_diff_on_succ + theorem times_cont_diff_on_succ_iff_fderiv_within + theorem times_cont_diff_on_succ_iff_has_fderiv_within_at + theorem times_cont_diff_on_top_iff_fderiv_within +/- theorem times_cont_diff_on_univ - theorem times_cont_diff_rec.continuous - theorem times_cont_diff_rec.differentiable - theorem times_cont_diff_rec.of_succ - def times_cont_diff_rec - theorem times_cont_diff_rec_succ - theorem times_cont_diff_rec_zero - theorem times_cont_diff_succ + theorem times_cont_diff_succ_iff_fderiv +/- theorem times_cont_diff_top + theorem times_cont_diff_top_iff_fderiv + theorem times_cont_diff_zero_fun Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_bilinear_map.is_bounded_linear_map_left + theorem is_bounded_bilinear_map.is_bounded_linear_map_right + theorem is_bounded_bilinear_map_comp_multilinear + theorem is_bounded_linear_map_continuous_multilinear_map_comp_linear + theorem is_bounded_linear_map_prod_multilinear Modified src/analysis/normed_space/multilinear.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean Modified src/geometry/manifold/real_instances.lean Modified src/geometry/manifold/smooth_manifold_with_corners.lean Modified src/linear_algebra/multilinear.lean Modified src/topology/algebra/multilinear.lean Modified src/topology/continuous_on.lean + theorem mem_of_mem_nhds_within 2020-02-27 22:04:31 0e4eb09 feat(ci): avoid push to Azure if branch has been updated (#2048) * avoid push to Azure if branch has been updated * changes to git config in deploy_nightly.sh break git fetch * I don't understand why this is different than on my own repo * artifact upload breaks fetch, I guess? * factor out git config * fix env variable * adjustments * removed repo check ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/deploy_nightly.sh Modified scripts/update_nolints.sh 2020-02-27 17:35:47 691456c chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-27 15:18:39 7907f8f feat(tactic/tidy): include norm_cast in tidy (#2063) * feat(tactic/tidy): include norm_cast in tidy * Update src/tactic/core.lean ESTIMATED CHANGES Modified src/tactic/auto_cases.lean Modified src/tactic/core.lean Modified src/tactic/hint.lean Modified src/tactic/tidy.lean 2020-02-27 13:32:50 6c2411b chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-27 11:54:47 a46b3e5 doc(data/finsupp): module docs and docstrings (#2059) * doc(data/finsupp): module docs and docstrings * chore(data/finsupp): squeeze_simp, cleanup, style * reviewer comments ESTIMATED CHANGES Modified src/data/finsupp.lean + def finsupp.comap_domain +/- def finsupp.frange +/- theorem finsupp.map_domain_id +/- theorem finsupp.neg_apply +/- theorem finsupp.one_def +/- theorem finsupp.single_apply +/- theorem finsupp.single_eq_of_ne +/- theorem finsupp.single_eq_same +/- theorem finsupp.smul_apply' + def finsupp.split + def finsupp.split_comp +/- theorem finsupp.sub_apply +/- theorem finsupp.support_zero +/- theorem finsupp.zero_apply 2020-02-27 01:35:32 ef1e38e chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-26 23:31:28 f0bb2f8 feat(ring_theory/polynomial): mv_polynomial.integral_domain (#2021) * feat(ring_theory/polynomial): mv_polynomial.integral_domain * Add docstrings * Add docstrings * Fix import * Fix build * Please linter, please * Update src/algebra/ring.lean * Clean up code, process comments * Update src/data/equiv/fin.lean * Update src/data/equiv/fin.lean * Update src/data/equiv/fin.lean * Update src/ring_theory/polynomial.lean ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem integral_domain.to_is_integral_domain + def is_integral_domain.to_integral_domain + structure is_integral_domain Modified src/data/equiv/algebra.lean Modified src/data/equiv/fin.lean + def fin_succ_equiv + def fin_zero_equiv' Modified src/data/mv_polynomial.lean + theorem mv_polynomial.exists_fin_rename + theorem mv_polynomial.exists_finset_rename Modified src/ring_theory/adjoin.lean Modified src/ring_theory/polynomial.lean - theorem is_noetherian_ring_mv_polynomial_fin - theorem is_noetherian_ring_mv_polynomial_of_fintype - theorem is_noetherian_ring_polynomial + def mv_polynomial.integral_domain_fintype + theorem mv_polynomial.is_integral_domain_fin + theorem mv_polynomial.is_integral_domain_fintype + theorem mv_polynomial.is_noetherian_ring_fin 2020-02-26 10:53:53 73b41b2 chore(data/prod): rename `injective_prod` to `injective.prod` (#2058) This way we can use dot notation ESTIMATED CHANGES Modified src/data/prod.lean + theorem function.injective.prod - theorem function.injective_prod Modified src/topology/uniform_space/uniform_embedding.lean 2020-02-25 22:59:53 6a6beaa chore(data/list/basic): drop `append_foldl` and `append_foldr`, add `map_nil` and `prod_singleton` (#2057) `append_foldl` and `append_foldr` were unused duplicates of `foldl_append` and `foldr_append` ESTIMATED CHANGES Modified src/data/list/basic.lean - theorem list.append_foldl - theorem list.append_foldr + theorem list.map_nil + theorem list.prod_singleton 2020-02-25 21:09:35 7be3e93 chore(field_theory/minimal_polynomial): fix timeout (#2054) * chore(field_theory/minimal_polynomial): fix timeout * Update src/field_theory/minimal_polynomial.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/field_theory/minimal_polynomial.lean 2020-02-25 19:22:49 06c5594 chore(analyis/normed_space/banach): split proof to avoid timeout (#2053) * chore(analyis/normed_space/banach): split proof to avoid timeout * delay introducing unnecessary variable * Apply suggestions from code review Co-Authored-By: sgouezel * fix indent ESTIMATED CHANGES Modified src/analysis/normed_space/banach.lean + theorem exists_approx_preimage_norm_le 2020-02-25 16:06:50 089d058 feat(tactic/lint): linter for commutativity lemmas that are marked simp (#2045) * feat(tactic/lint): linter for commutativity lemmas that are marked simp * chore(*): remove simp from commutativity lemmas * doc(*): document simp_comm linter ESTIMATED CHANGES Modified docs/commands.md Modified src/data/finmap.lean +/- theorem finmap.erase_erase Modified src/data/finset.lean +/- theorem finset.inter_comm +/- theorem finset.inter_left_comm +/- theorem finset.inter_right_comm +/- theorem finset.union_comm Modified src/data/hash_map.lean Modified src/data/list/alist.lean +/- theorem alist.erase_erase Modified src/data/list/basic.lean +/- theorem list.disjoint_comm + theorem list.disjoint_nil_right Modified src/data/multiset.lean +/- theorem multiset.disjoint_comm Modified src/data/nat/dist.lean +/- theorem nat.dist_comm Modified src/linear_algebra/basis.lean Modified src/tactic/lint.lean Modified src/topology/algebra/infinite_sum.lean Added test/lint_simp_comm.lean + theorem list.filter_congr_decidable 2020-02-25 14:16:23 450dcdf refactor(order/bounds): use dot notation, reorder, prove more properties (#2028) * refactor(order/bounds): use dot notation, prove more properties Also make parts of `complete_lattice` and `conditionally_complete_lattice` use these lemmas. * Comments * Add a module docstring * Fixes from review, +4 lemmas about images * Fix a typo in the previous commit * Update src/order/bounds.lean * Update src/order/bounds.lean ESTIMATED CHANGES Modified src/data/set/finite.lean Modified src/data/set/lattice.lean Modified src/order/basic.lean Modified src/order/bounds.lean + theorem bdd_above.insert + theorem bdd_above.inter_of_left + theorem bdd_above.inter_of_right - theorem bdd_above.mk + theorem bdd_above.mono + theorem bdd_above.union +/- def bdd_above + theorem bdd_above_Icc + theorem bdd_above_Ico + theorem bdd_above_Iic + theorem bdd_above_Iio + theorem bdd_above_Ioc + theorem bdd_above_Ioo +/- theorem bdd_above_empty +/- theorem bdd_above_iff_subset_Iic +/- theorem bdd_above_insert - theorem bdd_above_inter_left - theorem bdd_above_inter_right - theorem bdd_above_of_bdd_above_of_monotone +/- theorem bdd_above_singleton - theorem bdd_above_subset - theorem bdd_above_top +/- theorem bdd_above_union + theorem bdd_below.insert + theorem bdd_below.inter_of_left + theorem bdd_below.inter_of_right - theorem bdd_below.mk + theorem bdd_below.mono + theorem bdd_below.union +/- def bdd_below + theorem bdd_below_Ici + theorem bdd_below_Ioi +/- theorem bdd_below_bdd_above_iff_subset_Icc - theorem bdd_below_bot +/- theorem bdd_below_empty +/- theorem bdd_below_iff_subset_Ici +/- theorem bdd_below_insert - theorem bdd_below_inter_left - theorem bdd_below_inter_right - theorem bdd_below_of_bdd_below_of_monotone +/- theorem bdd_below_singleton - theorem bdd_below_subset +/- theorem bdd_below_union - theorem eq_of_is_glb_of_is_glb - theorem eq_of_is_greatest_of_is_greatest - theorem eq_of_is_least_of_is_least - theorem eq_of_is_lub_of_is_lub + theorem is_glb.bdd_below + theorem is_glb.insert + theorem is_glb.lower_bounds_eq + theorem is_glb.nonempty + theorem is_glb.of_subset_of_superset + theorem is_glb.union + theorem is_glb.unique +/- theorem is_glb_Icc +/- theorem is_glb_Ici +/- theorem is_glb_Ico +/- theorem is_glb_Ioc +/- theorem is_glb_Ioi +/- theorem is_glb_Ioo +/- theorem is_glb_empty - theorem is_glb_iff_eq_of_is_glb - theorem is_glb_iff_inf_eq - theorem is_glb_insert_inf + theorem is_glb_le_is_lub +/- theorem is_glb_lt_iff + theorem is_glb_pair +/- theorem is_glb_singleton - theorem is_glb_union_inf + theorem is_glb_univ + theorem is_greatest.bdd_above + theorem is_greatest.insert + theorem is_greatest.is_greatest_iff_eq + theorem is_greatest.is_lub + theorem is_greatest.nonempty + theorem is_greatest.union + theorem is_greatest.unique + theorem is_greatest.upper_bounds_eq + theorem is_greatest_Icc + theorem is_greatest_Iic + theorem is_greatest_Ioc - theorem is_greatest_iff_eq_of_is_greatest + theorem is_greatest_pair + theorem is_greatest_singleton + theorem is_greatest_union_iff + theorem is_greatest_univ + theorem is_least.bdd_below + theorem is_least.insert + theorem is_least.is_glb + theorem is_least.is_least_iff_eq + theorem is_least.lower_bounds_eq + theorem is_least.nonempty + theorem is_least.union + theorem is_least.unique + theorem is_least_Icc + theorem is_least_Ici + theorem is_least_Ico - theorem is_least_iff_eq_of_is_least + theorem is_least_pair + theorem is_least_singleton + theorem is_least_union_iff + theorem is_least_univ + theorem is_lub.bdd_above + theorem is_lub.insert + theorem is_lub.nonempty + theorem is_lub.of_subset_of_superset + theorem is_lub.union + theorem is_lub.unique + theorem is_lub.upper_bounds_eq +/- theorem is_lub_Icc +/- theorem is_lub_Ico +/- theorem is_lub_Iic +/- theorem is_lub_Iio +/- theorem is_lub_Ioc +/- theorem is_lub_Ioo +/- theorem is_lub_empty - theorem is_lub_iff_eq_of_is_lub - theorem is_lub_iff_sup_eq - theorem is_lub_insert_sup +/- theorem is_lub_le_iff + theorem is_lub_lt_iff + theorem is_lub_pair +/- theorem is_lub_singleton - theorem is_lub_union_sup + theorem is_lub_univ +/- theorem le_is_glb_iff + theorem lower_bound_Ioc + theorem lower_bounds_Icc + theorem lower_bounds_Ici + theorem lower_bounds_Ico + theorem lower_bounds_Ioi + theorem lower_bounds_Ioo + theorem lower_bounds_empty + theorem lower_bounds_insert + theorem lower_bounds_le_upper_bounds +/- theorem lower_bounds_mono + theorem lower_bounds_mono_mem + theorem lower_bounds_mono_set + theorem lower_bounds_singleton + theorem lower_bounds_union + theorem lt_is_glb_iff +/- theorem lt_is_lub_iff - theorem mem_lower_bounds_image - theorem mem_upper_bounds_image + theorem monotone.is_lub_image_le + theorem monotone.le_is_glb_image_le + theorem monotone.map_bdd_above + theorem monotone.map_bdd_below + theorem monotone.map_is_greatest + theorem monotone.map_is_least + theorem monotone.mem_lower_bounds_image + theorem monotone.mem_upper_bounds_image + theorem no_bot_order.lower_bounds_univ + theorem no_top_order.upper_bounds_univ - theorem nonempty_of_is_glb - theorem nonempty_of_is_lub + theorem order_bot.lower_bounds_univ + theorem order_top.upper_bounds_univ + theorem union_lower_bounds_subset_lower_bounds_inter + theorem union_upper_bounds_subset_upper_bounds_inter + theorem upper_bounds_Icc + theorem upper_bounds_Ico + theorem upper_bounds_Iic + theorem upper_bounds_Iio + theorem upper_bounds_Ioc + theorem upper_bounds_Ioo + theorem upper_bounds_empty + theorem upper_bounds_insert +/- theorem upper_bounds_mono + theorem upper_bounds_mono_mem + theorem upper_bounds_mono_set + theorem upper_bounds_singleton + theorem upper_bounds_union Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean +/- theorem lattice.Inf_le_Sup + theorem lattice.Inf_pair + theorem lattice.Sup_pair +/- theorem lattice.infi_const +/- theorem lattice.is_glb_Inf - theorem lattice.is_glb_iff_Inf_eq - theorem lattice.is_glb_iff_infi_eq +/- theorem lattice.is_glb_infi +/- theorem lattice.is_lub_Sup - theorem lattice.is_lub_iff_Sup_eq - theorem lattice.is_lub_iff_supr_eq +/- theorem lattice.is_lub_supr +/- theorem lattice.supr_const Modified src/order/conditionally_complete_lattice.lean + theorem lattice.cInf_Ici +/- theorem lattice.cInf_insert - theorem lattice.cInf_interval +/- theorem lattice.cInf_le_cSup - theorem lattice.cInf_of_mem_of_le +/- theorem lattice.cInf_union + theorem lattice.cSup_Iic +/- theorem lattice.cSup_insert - theorem lattice.cSup_interval +/- theorem lattice.cSup_le_iff - theorem lattice.cSup_of_mem_of_le +/- theorem lattice.cSup_union +/- theorem lattice.is_glb_cInf +/- theorem lattice.is_lub_cSup +/- theorem lattice.le_cInf_iff Modified src/order/galois_connection.lean Modified src/topology/algebra/ordered.lean Modified src/topology/instances/ennreal.lean 2020-02-25 12:27:02 a227e06 Unify naming of lemmas related to the (co)lim functor (#2040) ESTIMATED CHANGES Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/limits/limits.lean - theorem category_theory.limits.colim.ι_map + theorem category_theory.limits.colimit.ι_map - theorem category_theory.limits.lim.map_π + theorem category_theory.limits.limit.map_π Modified src/topology/sheaves/stalks.lean 2020-02-25 10:39:52 f77cb57 chore(data/fintype): move results depending on big_operators (#2044) ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/analysis/normed_space/multilinear.lean Modified src/data/fintype.lean - theorem card_vector - theorem fin.prod_univ_cast_succ - theorem fin.prod_univ_succ - theorem fin.prod_univ_zero - theorem fin.sum_univ_cast_succ - theorem fin.sum_univ_succ - theorem finset.prod_attach_univ - theorem finset.range_prod_eq_univ_prod - theorem fintype.card_eq_sum_ones - theorem fintype.card_fun - theorem fintype.card_pi - theorem fintype.card_sigma - theorem fintype.card_sum Added src/data/fintype/card.lean + theorem card_vector + theorem fin.prod_univ_cast_succ + theorem fin.prod_univ_succ + theorem fin.prod_univ_zero + theorem fin.sum_univ_cast_succ + theorem fin.sum_univ_succ + theorem finset.prod_attach_univ + theorem finset.range_prod_eq_univ_prod + theorem fintype.card_eq_sum_ones + theorem fintype.card_fun + theorem fintype.card_pi + theorem fintype.card_sigma + theorem fintype.card_sum Modified src/data/set/finite.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/determinant.lean Modified src/number_theory/bernoulli.lean Modified src/set_theory/cardinal.lean 2020-02-25 08:51:21 61d75bb chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-25 06:38:57 17a33f0 refactor(order/copy): move complete_lattice.copy to its own file (#2050) * refactor(order/copy): move complete_lattice.copy to its own file * Docstrings * Update src/order/copy.lean ESTIMATED CHANGES Modified src/data/setoid.lean Added src/order/copy.lean + def lattice.bounded_lattice.copy + def lattice.complete_distrib_lattice.copy + def lattice.complete_lattice.copy + def lattice.conditionally_complete_lattice.copy + def lattice.distrib_lattice.copy Modified src/order/filter/basic.lean - def lattice.complete_lattice.copy Modified src/topology/opens.lean 2020-02-24 23:51:03 5770369 refactor(topology/metric_space/isometry): remove isometry_inv_fun from isometric (#2051) * refactor(topology/metric_space/isometry): remove isometry_inv_fun from isometric; it is automatic * Alternative constructor for isometric bijections ESTIMATED CHANGES Modified src/topology/metric_space/isometry.lean + theorem isometric.isometry_inv_fun + def isometric.mk' 2020-02-24 22:06:59 3ff50d9 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-24 19:58:16 fb878e7 feat(tactic/lint): add linter for simp lemmas whose lhs has a variable as head symbol (#2038) ESTIMATED CHANGES Modified docs/commands.md Modified src/algebra/field.lean +/- theorem is_ring_hom.map_div +/- theorem is_ring_hom.map_inv Modified src/algebra/module.lean +/- theorem is_linear_map.map_add +/- theorem is_linear_map.map_neg +/- theorem is_linear_map.map_sub +/- theorem is_linear_map.map_zero Modified src/data/list/basic.lean +/- theorem list.find_some Modified src/tactic/lint.lean Added test/lint_simp_var_head.lean 2020-02-24 18:12:09 cb4bdd8 doc(category_theory): add a few docstrings (#2046) * doc(category_theory): add a few docstrings * Apply suggestions from code review Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/category_theory/core.lean Modified src/category_theory/isomorphism.lean 2020-02-24 17:33:16+01:00 8030469 Revert "Update README.md" This reverts commit 4d3ef8368051e45e1b20e77462b958be3e427c87. ESTIMATED CHANGES Modified README.md 2020-02-24 17:31:46+01:00 4d3ef83 Update README.md ESTIMATED CHANGES Modified README.md 2020-02-24 15:43:04 0fc45dc feat(tactic/lint): support @[nolint unused_arguments] (#2041) * feat(tactic/lint): support @[nolint unused_arguments] * refactor(scripts/mk_nolint): include failing linter name in nolints.txt * chore(scripts/nolints): update nolints.txt * doc(category/functor): add docstrings ESTIMATED CHANGES Modified docs/commands.md Modified scripts/mk_all.sh Modified scripts/mk_nolint.lean Modified scripts/nolints.txt Modified src/category/functor.lean +/- def functor.const Modified src/category/monad/writer.lean Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/number_theory/pell.lean +/- def pell.pell Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean +/- theorem filter.mem_at_top_sets Modified src/order/lattice.lean Modified src/ring_theory/algebra.lean +/- def algebra.comap Modified src/ring_theory/localization.lean Modified src/set_theory/ordinal.lean +/- def cardinal.ord_eq_min +/- def ordinal.div_def Modified src/tactic/core.lean Modified src/tactic/interactive.lean +/- theorem tactic.interactive.{u} Modified src/tactic/linarith.lean Modified src/tactic/lint.lean Modified src/topology/algebra/ordered.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/topological_fiber_bundle.lean +/- def topological_fiber_bundle_core.base +/- def topological_fiber_bundle_core.fiber +/- def topological_fiber_bundle_core.index +/- def topological_fiber_bundle_core.total_space Modified src/topology/uniform_space/cauchy.lean Modified test/lint.lean +/- def bar.foo 2020-02-24 11:42:56 32b32ad docs(data/set/basic): add module docstring (#1991) * adding module docstring * tidying up * markdown fixes * more md tidying * remove some unnecessary {alpha : Type*} * responding to comments * responding to comments ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.compl_image_set_of +/- theorem set.empty_diff +/- theorem set.exists_of_ssubset +/- theorem set.mem_image +/- theorem set.mem_of_eq_of_mem +/- theorem set.mem_of_mem_of_subset +/- theorem set.sep_set_of +/- theorem set.set_of_subset_set_of +/- theorem set.univ_eq_empty_iff 2020-02-23 17:01:48 28e4bdf feat(topology): an `is_complete` set is a `complete_space` (#2037) * feat(*): misc simple lemmas * +1 lemma * Rename `inclusion_range` to `range_inclusion` Co-Authored-By: Johan Commelin * feat(topology): an `is_complete` set is a `complete_space` Also simplify a proof in `topology/metric_space/closeds`. * Use in `finite_dimension` ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/opens.lean +/- def topological_space.nonempty_compacts.to_closeds Modified src/topology/uniform_space/cauchy.lean + theorem complete_space_iff_is_complete_univ Modified src/topology/uniform_space/uniform_embedding.lean + theorem complete_space_coe_iff_is_complete + theorem complete_space_congr + theorem complete_space_iff_is_complete_range + theorem is_closed.complete_space_coe + theorem is_complete.complete_space_coe + theorem is_complete_of_complete_image + theorem uniform_embedding_set_inclusion + theorem uniform_embedding_subtype_coe + theorem uniform_embedding_subtype_val 2020-02-23 13:57:52 16c1d9d chore(*): minimise imports of data.list.basic (#2042) ESTIMATED CHANGES Modified src/algebra/group_power.lean Modified src/category/fold.lean Modified src/data/array/lemmas.lean Modified src/data/int/basic.lean Modified src/data/nat/prime.lean Modified src/data/seq/wseq.lean Modified src/group_theory/free_group.lean Modified src/tactic/linarith.lean Modified src/tactic/omega/coeffs.lean Modified test/monotonicity.lean 2020-02-23 12:16:38 256bedc chore(test): don't use sorry in tests, to reduce noise (#2043) ESTIMATED CHANGES Modified test/apply.lean Modified test/tactics.lean 2020-02-22 22:26:53 bfa2465 refactor(topology/metric_space/lipschitz): redefine for an `emetric_space` (#2035) * refactor(topology/metric_space/lipschitz): redefine for an `emetric_space` * Fix compile * Fixes, thanks @sgouzel ESTIMATED CHANGES Modified src/analysis/ODE/gronwall.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/data/real/ennreal.lean + theorem ennreal.div_le_of_le_mul + theorem ennreal.mul_lt_of_lt_div Modified src/topology/bounded_continuous_function.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/contracting.lean + theorem contracting_with.dist_le +/- def contracting_with Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/lipschitz.lean +/- theorem lipschitz_with.diam_image_le +/- theorem lipschitz_with.ediam_image_le + theorem lipschitz_with.edist_iterate_succ_le_geometric + theorem lipschitz_with.edist_le - theorem lipschitz_with.edist_map_le + theorem lipschitz_with.nndist_le - theorem lipschitz_with.nndist_map_le +/- def lipschitz_with + theorem lipschitz_with_iff_dist_le 2020-02-22 20:47:15 ea149c8 feat(algebraic_geometry/prime_spectrum): prime spectrum of a ring is compact (#1987) * wip * wip * wip * wip * WIP * WIP * Reset changes that belong to other PR * Docstrings * Add Heine--Borel to docstring * Cantor's intersection theorem * Cantor for sequences * Revert "Reset changes that belong to other PR" This reverts commit e6026b8819570ef6a763582a25d7ae5ad508134b. * Move submodule lemmas to other file * Fix build * Update prime_spectrum.lean * Docstring * Update prime_spectrum.lean * Slight improvement? * Slightly improve structure of proof * WIP * Cleaning up proofs * Final fixes ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean Modified src/linear_algebra/basic.lean + theorem submodule.mem_supr + theorem submodule.span_singleton_le_iff_mem + theorem submodule.supr_eq_span Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.mem_span_iff_total +/- theorem linear_map.map_finsupp_total + theorem submodule.exists_finset_of_mem_supr Modified src/order/complete_lattice.lean + theorem lattice.le_supr_iff 2020-02-22 19:10:31 d615ee6 feat(ci): skip Azure upload if archive already exists (#2039) * skip upload if archive already exists * simplify script * remove unused variable * fix ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-02-22 16:24:24 1c6a317 feat(*): misc simple lemmas (#2036) * feat(*): misc simple lemmas * +1 lemma * Rename `inclusion_range` to `range_inclusion` Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nndist_smul Modified src/data/set/basic.lean + theorem set.range_inclusion Modified src/order/filter/basic.lean + theorem filter.comap_ne_bot_of_image_mem Modified src/topology/metric_space/emetric_space.lean + theorem emetric.is_closed_ball_top + theorem prod.edist_eq 2020-02-22 13:59:03 603c7ba chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-22 12:05:43 eabcd13 feat(category_theory/limits): kernels (#1988) * chore(category_theory): require morphisms live in Type * move back to Type * fixes * feat(category_theory/limits): kernels * finishing basic API for kernels * update post #1412 * fix * documentation * documentation * more docs * replacing dumb code * forall -> Pi * removing all instances * working on Reid's suggested lemmas * experiments * lots to do * Show that equalizers are monomorphisms * Show that equalizer of (f, f) is always an iso * Show that an equalizer that is an epimorphism is an isomorphism * Clean up * Show that the kernel of a monomorphism is zero * Fix * Show that the kernel of a linear map is a kernel in the categorical sense * Modify proof * Compactify proof * Various cleanup * Some more cleanup * Fix bibtex * Address some issues raised during discussion of the PR * Fix some more incorrect indentation * Some more minor fixes * Unify capitalization in Bibtex entries * Replace equalizer.lift.uniq with equalizer.hom_ext * Some more slight refactors * Typo ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/category/Module/basic.lean + def Module.kernel_cone + def Module.kernel_is_limit + theorem Module.of_apply Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/shapes/equalizers.lean +/- theorem category_theory.limits.coequalizer.condition + theorem category_theory.limits.cone_parallel_pair_ext + theorem category_theory.limits.cone_parallel_pair_left + theorem category_theory.limits.cone_parallel_pair_right + def category_theory.limits.cone_parallel_pair_self + theorem category_theory.limits.cone_parallel_pair_self_X + theorem category_theory.limits.cone_parallel_pair_self_π_app_zero + def category_theory.limits.epi_limit_cone_parallel_pair_is_iso +/- theorem category_theory.limits.equalizer.condition + theorem category_theory.limits.equalizer.hom_ext + theorem category_theory.limits.equalizer.ι.eq_app_zero + theorem category_theory.limits.equalizer.ι.fork + theorem category_theory.limits.equalizer.ι_mono + theorem category_theory.limits.fork.eq_of_ι_ι + def category_theory.limits.is_limit_cone_parallel_pair_self + def category_theory.limits.limit_cone_parallel_pair_self_is_iso Added src/category_theory/limits/shapes/kernels.lean + theorem category_theory.limits.cokernel.condition + def category_theory.limits.cokernel.desc + def category_theory.limits.cokernel.π + def category_theory.limits.cokernel + theorem category_theory.limits.kernel.condition + def category_theory.limits.kernel.is_limit_cone_zero_cone + def category_theory.limits.kernel.lift + def category_theory.limits.kernel.zero_cone + def category_theory.limits.kernel.ι + def category_theory.limits.kernel.ι_zero_is_iso + def category_theory.limits.kernel Modified src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.has_initial_of_unique + def category_theory.limits.has_terminal_of_unique Added src/category_theory/limits/shapes/zero.lean + def category_theory.limits.has_zero_object.has_initial_of_has_zero_object + def category_theory.limits.has_zero_object.has_terminal_of_has_zero_object + def category_theory.limits.has_zero_object.zero_morphisms_of_zero_object + theorem category_theory.limits.has_zero_object.zero_of_from_zero + theorem category_theory.limits.has_zero_object.zero_of_to_zero + theorem category_theory.limits.zero_of_comp_epi + theorem category_theory.limits.zero_of_comp_mono + def category_theory.limits.zero_of_zero_object 2020-02-22 11:14:19+01:00 a9ed54c feat(ci): upload all branch builds to Azure server (#2032) ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-02-22 09:45:22 928496a feat(category_theory/limits) Binary product from pullbacks and terminal object (#1998) * Binary product from pullbacks and terminal object * Update binary_products.lean * simplifications * pare down the proof a bit more * changes from review * adjust simp to rw ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean + theorem category_theory.nat_trans.of_homs_app Modified src/category_theory/equivalence.lean Added src/category_theory/limits/shapes/constructions/binary_products.lean + def has_binary_products_of_terminal_and_pullbacks 2020-02-22 08:15:14 03af46c chore(presheafed_space): avoid deterministic timeout (#1617) * chore(presheafed_space): avoid deterministic timeout * fix proofs: now works with -T16000 * fix ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/stalks.lean 2020-02-22 00:36:59 11797e6 chore(topology/metric_space/emetric_space): use filter bases in 2 proofs (#2034) ESTIMATED CHANGES Modified src/topology/metric_space/emetric_space.lean 2020-02-21 22:47:11 ffb6d6e feat(tactic): add various tactics about local definitions (#1953) * feat(tactic): add various tactics about local definitions * remove {α β} * rename generalize' in monotonicity. * updates after reviews ESTIMATED CHANGES Modified src/data/option/defs.lean Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/tactic/monotonicity/interactive.lean Modified test/tactics.lean 2020-02-21 21:54:18+01:00 86c9417 doc(topology/dense_embedding): fix list syntax in a comment (#2033) ESTIMATED CHANGES Modified src/topology/dense_embedding.lean 2020-02-21 19:29:22 ff36e0f chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-21 17:46:31 472156f feat(tactic/lint): check that left-hand side of all simp lemmas is in simp-normal form (#2017) * feat(tactic/lint): check that lhs of simp lemmas are in simp nf * fix(topology/metric_space/basic): remove @[simp] from lemmas with {x,y} on the lhs * chore(topology/local_homeomorph): remove redundant lemmas from the simp set * fix(topology/algebra/module): fix simp-nf lints * chore(ring_theory/localization): mark fewer things as simp * fix(set_theory/ordinal): put lhs into simp-normal form * chore(algebra/big_operators): fix simp lemmas * chore(data/set/lattice): remove redundant simp lemmas * chore(data/set/basic): remove redundant simp lemma * chore(data/zsqrtd/basic): make simp_nf lint happy * fix(order/complete_lattice): remove lemmas from simp set * chore(order/filter/filter_product): fix linting issues * feat(data/mv_polynomial): add simp lemmas about neg * fix(data/multiset): fix simp_nf linter issues * chore(data/list/sigma): fix simp_nf linter issues * fix(data/list/basic): remove redundant and unapplicable simp lemmas * fix(measure_theory/set_integral): remove redundant simp lemma * fix(measure_theory/l1_space): remove redundant simp lemmas * fix(algebra/group_power): remove simp lemmas that are not in nf * fix(algebra/field): remove redundant simp lemma * chore(data/list/alist): remove simp lemmas * fix(data/int/basic): simp-normal form for coercions... * fix(data/finset): formulate simp-lemmas for simp-nf * fix(data/int/parity): use simp-normal form * fix(data/equiv/denumerable): remove redundant simp lemma * fix(category_theory/**): fix simp-normal forms * fix(set_theory/zfc): put simp lemmas in simp-normal form * fix(tactlic/lint): ignore sub_eq_add_neg for simp_nf lint * doc(tactic/lint): add simp_nf linter to module doc * doc(docs/commands): add simp_nf linter * fix(*): put lemmas in simp-normal form ESTIMATED CHANGES Modified docs/commands.md Modified scripts/mk_all.sh Modified src/algebra/big_operators.lean +/- theorem finset.sum_boole_mul +/- theorem finset.sum_mul_boole Modified src/algebra/field.lean - theorem units.mk0_inv Modified src/algebra/group_power.lean +/- theorem gpow_of_nat +/- theorem gsmul_of_nat +/- theorem one_div_pow Modified src/algebra/ring.lean + theorem ite_mul Modified src/algebraic_geometry/prime_spectrum.lean +/- theorem prime_spectrum.zero_locus_bot + theorem prime_spectrum.zero_locus_singleton_zero Modified src/analysis/normed_space/multilinear.lean + theorem continuous_multilinear_map.apply_zero_curry0 +/- theorem continuous_multilinear_map.curry0_norm + theorem continuous_multilinear_map.fin0_apply_norm +/- theorem continuous_multilinear_map.uncurry0_curry0 Modified src/category_theory/const.lean +/- def category_theory.functor.const_comp - theorem category_theory.functor.const_comp_hom_app - theorem category_theory.functor.const_comp_inv_app Modified src/category_theory/equivalence.lean +/- theorem category_theory.equivalence.functor_unit_comp Modified src/category_theory/functor.lean Modified src/category_theory/functor_category.lean + theorem category_theory.nat_trans.vcomp_app' Modified src/category_theory/isomorphism.lean +/- theorem category_theory.functor.map_hom_inv +/- theorem category_theory.functor.map_inv_hom Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.ι_cocone_morphism +/- theorem category_theory.limits.limit.cone_morphism_π Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.coprod.symmetry' +/- theorem category_theory.limits.coprod.symmetry + theorem category_theory.limits.prod.symmetry' +/- theorem category_theory.limits.prod.symmetry Modified src/category_theory/limits/shapes/pullbacks.lean +/- theorem category_theory.limits.cospan_map_id +/- theorem category_theory.limits.span_map_id Modified src/category_theory/natural_isomorphism.lean +/- theorem category_theory.nat_iso.naturality_1 +/- theorem category_theory.nat_iso.naturality_2 Modified src/category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.vcomp_app Modified src/data/equiv/denumerable.lean +/- theorem denumerable.decode_is_some Modified src/data/fin.lean Modified src/data/finset.lean + theorem finset.inf_singleton' +/- theorem finset.inf_singleton + theorem finset.insert_singleton_self_eq' +/- theorem finset.insert_singleton_self_eq +/- theorem finset.max_singleton + theorem finset.min_singleton' +/- theorem finset.min_singleton + theorem finset.sup_singleton' +/- theorem finset.sup_singleton +/- theorem finset.supr_union Modified src/data/int/basic.lean +/- theorem int.cast_coe_nat' +/- theorem int.cast_of_nat Modified src/data/int/parity.lean +/- theorem int.mod_two_ne_zero + theorem int.two_dvd_ne_zero Modified src/data/list/alist.lean +/- theorem alist.insert_insert_of_ne Modified src/data/list/basic.lean +/- theorem list.concat_append +/- theorem list.concat_cons +/- theorem list.concat_ne_nil +/- theorem list.concat_nil +/- theorem list.count_concat +/- theorem list.exists_mem_cons_iff + theorem list.infix_append' +/- theorem list.infix_append +/- theorem list.length_concat +/- theorem list.prefix_concat Modified src/data/list/sigma.lean +/- theorem list.lookup_kinsert +/- theorem list.lookup_kinsert_ne +/- theorem list.mem_keys_kinsert Modified src/data/multiset.lean +/- theorem multiset.map_singleton +/- theorem multiset.prod_map_one +/- theorem multiset.sum_map_zero Modified src/data/mv_polynomial.lean + theorem mv_polynomial.coeff_neg + theorem mv_polynomial.rename_neg Modified src/data/option/basic.lean + theorem option.lift_or_get_none_left + theorem option.lift_or_get_none_right + theorem option.lift_or_get_some_some Modified src/data/set/basic.lean +/- theorem set.nmem_set_of_eq +/- theorem set.subset_preimage_univ Modified src/data/set/lattice.lean +/- theorem set.bInter_empty +/- theorem set.bInter_univ +/- theorem set.bUnion_empty +/- theorem set.bUnion_univ Modified src/data/zsqrtd/basic.lean +/- theorem zsqrtd.of_int_im +/- theorem zsqrtd.of_int_re Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.lintegral_nnnorm_zero Modified src/measure_theory/set_integral.lean +/- theorem integral_on_zero Modified src/order/complete_lattice.lean +/- theorem lattice.infi_emptyset +/- theorem lattice.infi_insert +/- theorem lattice.infi_pair +/- theorem lattice.infi_singleton +/- theorem lattice.infi_union +/- theorem lattice.infi_univ +/- theorem lattice.supr_emptyset +/- theorem lattice.supr_insert +/- theorem lattice.supr_pair +/- theorem lattice.supr_singleton +/- theorem lattice.supr_union +/- theorem lattice.supr_univ Modified src/order/filter/filter_product.lean +/- theorem filter.filter_product.abs_def +/- theorem filter.filter_product.of_seq_one +/- theorem filter.filter_product.of_seq_zero Modified src/ring_theory/localization.lean +/- theorem localization.coe_is_unit' +/- theorem localization.coe_is_unit +/- theorem localization.coe_mul_mk +/- theorem localization.lift'_mk +/- theorem localization.mk_mul_mk +/- theorem localization.to_units_coe Modified src/ring_theory/power_series.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/zfc.lean + theorem Set.eval_mk +/- theorem pSet.resp.eval_val Modified src/tactic/core.lean Modified src/tactic/lint.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.self_comp_symm' +/- theorem continuous_linear_equiv.self_comp_symm + theorem continuous_linear_equiv.symm_comp_self' +/- theorem continuous_linear_equiv.symm_comp_self Modified src/topology/local_homeomorph.lean +/- theorem local_homeomorph.of_set_inv_fun +/- theorem local_homeomorph.of_set_source +/- theorem local_homeomorph.of_set_symm +/- theorem local_homeomorph.of_set_target +/- theorem local_homeomorph.of_set_to_fun +/- theorem local_homeomorph.prod_inv_fun +/- theorem local_homeomorph.prod_source +/- theorem local_homeomorph.prod_target +/- theorem local_homeomorph.prod_to_fun +/- theorem local_homeomorph.refl_inv_fun +/- theorem local_homeomorph.refl_source +/- theorem local_homeomorph.refl_target +/- theorem local_homeomorph.refl_to_fun +/- theorem local_homeomorph.restr_inv_fun +/- theorem local_homeomorph.restr_open_source +/- theorem local_homeomorph.restr_source +/- theorem local_homeomorph.restr_target +/- theorem local_homeomorph.restr_to_fun +/- theorem local_homeomorph.symm_inv_fun +/- theorem local_homeomorph.symm_source +/- theorem local_homeomorph.symm_target +/- theorem local_homeomorph.symm_to_fun +/- theorem local_homeomorph.trans_inv_fun +/- theorem local_homeomorph.trans_to_fun Modified src/topology/metric_space/basic.lean +/- theorem metric.diam_pair +/- theorem metric.diam_triple Added test/lint_simp_nf.lean + def c + theorem c_eq_d + def d + def f + theorem f_c + def h + theorem h_c + structure morphism 2020-02-21 11:26:12 bb7631f feat(algebraic_geometry/prime_spectrum): vanishing ideal (#1972) * wip * wip * Remove stuff for next PR * Update prime_spectrum.lean * Process comments ESTIMATED CHANGES Modified src/algebraic_geometry/prime_spectrum.lean - theorem prime_spectrum.Inter_zero_locus + theorem prime_spectrum.coe_vanishing_ideal + theorem prime_spectrum.gc + theorem prime_spectrum.gc_set + theorem prime_spectrum.is_closed_zero_locus + theorem prime_spectrum.le_vanishing_ideal_zero_locus + theorem prime_spectrum.mem_vanishing_ideal + theorem prime_spectrum.subset_vanishing_ideal_zero_locus + theorem prime_spectrum.subset_zero_locus_iff_le_vanishing_ideal + theorem prime_spectrum.subset_zero_locus_iff_subset_vanishing_ideal + theorem prime_spectrum.subset_zero_locus_vanishing_ideal + theorem prime_spectrum.sup_vanishing_ideal_le +/- theorem prime_spectrum.union_zero_locus - theorem prime_spectrum.union_zero_locus_ideal + def prime_spectrum.vanishing_ideal + theorem prime_spectrum.vanishing_ideal_Union + theorem prime_spectrum.vanishing_ideal_union + theorem prime_spectrum.vanishing_ideal_univ +/- theorem prime_spectrum.zero_locus_Union + theorem prime_spectrum.zero_locus_bot + theorem prime_spectrum.zero_locus_empty + theorem prime_spectrum.zero_locus_empty_iff_eq_top + theorem prime_spectrum.zero_locus_inf - theorem prime_spectrum.zero_locus_is_closed + theorem prime_spectrum.zero_locus_sup + theorem prime_spectrum.zero_locus_supr + theorem prime_spectrum.zero_locus_union + theorem prime_spectrum.zero_locus_vanishing_ideal_eq_closure 2020-02-21 05:36:39 b30b5e9 feat(tactic/hint): update tactic list (#2024) * feat(tactic/hint): update tactic list * Removing `fsplit` in favour of `fconstructor`. Co-Authored-By: Floris van Doorn * fix test * silence a test ESTIMATED CHANGES Modified src/tactic/hint.lean Modified src/tactic/norm_cast.lean Modified test/hint.lean Modified test/tidy.lean 2020-02-21 02:50:57 888e75b refactor(*/multilinear): better right curryfication (#1985) * feat(data/fin): append * Update fin.lean * Update fintype.lean * replace but_last with init * cons and append commute * feat(*/multilinear): better multilinear * docstrings * snoc * fix build * comp_snoc and friends * fix docstring * typo ESTIMATED CHANGES Modified src/analysis/normed_space/multilinear.lean + theorem continuous_linear_map.norm_map_tail_le - theorem continuous_linear_map.norm_map_tail_right_le + theorem continuous_multilinear_curry_fin0_apply + theorem continuous_multilinear_curry_fin0_symm_apply + def continuous_multilinear_curry_fin1 + theorem continuous_multilinear_curry_fin1_apply + theorem continuous_multilinear_curry_fin1_symm_apply + theorem continuous_multilinear_curry_left_equiv_apply + theorem continuous_multilinear_curry_left_equiv_symm_apply + theorem continuous_multilinear_curry_right_equiv_apply + theorem continuous_multilinear_curry_right_equiv_symm_apply + theorem continuous_multilinear_map.norm_map_init_le + theorem continuous_multilinear_map.norm_map_snoc_le - theorem continuous_multilinear_map.norm_map_tail_left_le + theorem continuous_multilinear_map.uncurry0_apply Modified src/linear_algebra/multilinear.lean + def linear_map.comp_multilinear_map + def multilinear_map.comp_linear_map + def multilinear_map.prod + theorem multilinear_map.snoc_add + theorem multilinear_map.snoc_smul +/- def multilinear_map.uncurry_right Modified src/topology/algebra/multilinear.lean + def continuous_linear_map.comp_continuous_multilinear_map + theorem continuous_linear_map.comp_continuous_multilinear_map_coe + def continuous_multilinear_map.comp_continuous_linear_map + def continuous_multilinear_map.prod + theorem continuous_multilinear_map.prod_apply 2020-02-20 15:52:23-08:00 eeedc6a fix(*): remove loopy simp lemmas (#2026) ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- theorem equiv.conj_comp Modified src/order/basic.lean +/- theorem order_dual.dual_le +/- theorem order_dual.dual_lt 2020-02-20 21:25:20 b0eeea4 fix(data/bool): remove simp attribute from commutativity lemmas (#2027) ESTIMATED CHANGES Modified src/data/bool.lean +/- theorem bool.band_comm +/- theorem bool.band_left_comm +/- theorem bool.bor_comm +/- theorem bool.bor_left_comm +/- theorem bool.bxor_comm +/- theorem bool.bxor_left_comm Modified src/data/int/basic.lean + theorem int.bodd_coe 2020-02-20 16:55:22 aefdb86 feat(data/int/basic): format -42 as -42 instead of -(41+1) (#2025) ESTIMATED CHANGES Modified src/data/int/basic.lean 2020-02-20 15:24:23 d933ea5 doc(lint): add linter missing from list of defaults (#2023) ESTIMATED CHANGES Modified docs/commands.md Modified src/tactic/lint.lean 2020-02-20 14:50:00+01:00 43dd938 chore(ci): check roadmap directory (#2022) * chore(ci): check roadmap directory partially addresses #2016 * fix roadmap compilation ESTIMATED CHANGES Modified .github/workflows/build.yml Modified roadmap/topology/paracompact.lean Modified roadmap/topology/shrinking_lemma.lean 2020-02-20 11:06:30 4e398cc chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-20 09:21:34 68b9c16 feat(algebra/group): add `units.lift_right` and `is_unit.lift_right` (#2020) * Rename type variables, add a docstring * feat(algebra/group): add `units.lift_right` and `is_unit.lift_right` These defs/lemmas may be useful for `monoid_localization`. ESTIMATED CHANGES Modified src/algebra/group/is_unit.lean + theorem is_unit.coe_lift_right Modified src/algebra/group/units_hom.lean +/- def units.coe_hom +/- theorem units.coe_hom_apply + theorem units.coe_lift_right +/- theorem units.coe_map' +/- theorem units.coe_map + def units.lift_right +/- def units.map' +/- def units.map +/- theorem units.map_comp +/- theorem units.map_id 2020-02-20 02:23:59 d42d29b fix(tactic/tauto): fix typos (#2019) * fix(tactic/tauto): fix typos * fix same error in tactics.md ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/tauto.lean 2020-02-20 00:52:33 34724f4 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-19 23:20:36 2d6556d feat(analysis/mean_inequalities) : Prove AM-GM (#1836) * feat(analysis/mean_inequalities) : Prove AM-GM * Update, add more inequalities * Update src/analysis/convex/specific_functions.lean Co-Authored-By: sgouezel * Update src/analysis/mean_inequalities.lean Co-Authored-By: sgouezel * Update src/analysis/mean_inequalities.lean * Small fixes, thanks @sgouezel * Update src/analysis/mean_inequalities.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_fpow + theorem deriv_within_fpow + theorem differentiable_at_fpow + theorem differentiable_on_fpow + theorem differentiable_within_at_fpow + theorem has_deriv_at_fpow + theorem has_deriv_within_at_fpow + theorem iter_deriv_fpow + theorem iter_deriv_pow' + theorem iter_deriv_pow Added src/analysis/convex/specific_functions.lean + theorem convex_on_exp + theorem convex_on_fpow + theorem convex_on_pow + theorem convex_on_pow_of_even + theorem finset.prod_nonneg_of_card_nonpos_even + theorem int_prod_range_nonneg Added src/analysis/mean_inequalities.lean + theorem nnreal.am_gm2_weighted + theorem nnreal.am_gm3_weighted + theorem nnreal.am_gm_weighted + theorem nnreal.pow_am_le_am_pow + theorem nnreal.young_inequality + theorem real.am_gm2_weighted + theorem real.am_gm_weighted + theorem real.fpow_am_le_am_fpow + theorem real.pow_am_le_am_pow + theorem real.pow_am_le_am_pow_of_even + theorem real.young_inequality Modified src/data/nat/parity.lean + theorem nat.even.add + theorem nat.even.sub Modified src/data/real/nnreal.lean + theorem nnreal.coe_mk Modified src/data/set/intervals/basic.lean + theorem set.compl_Ici + theorem set.compl_Iic + theorem set.compl_Iio + theorem set.compl_Ioi Modified src/topology/algebra/ordered.lean + theorem interior_Icc + theorem interior_Ici + theorem interior_Ico + theorem interior_Iic + theorem interior_Iio + theorem interior_Ioc + theorem interior_Ioi + theorem interior_Ioo +/- theorem is_open_Iio +/- theorem is_open_Ioi +/- theorem is_open_Ioo 2020-02-19 21:46:28 5b77b64 refactor(analysis/calculus/tangent_cone): split a proof into parts (#2013) * refactor(analysis/calculus/tangent_cone): split a proof into parts Prove `submodule.eq_top_of_nonempty_interior` and use it in the proof of `unique_diff_on_convex`. * Update src/analysis/normed_space/basic.lean Co-Authored-By: sgouezel * Fix a docstring. * Update src/topology/algebra/module.lean ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem is_unit_iff_ne_zero Modified src/algebra/module.lean + theorem submodule.smul_mem_iff' Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/basic.lean + theorem normed_field.punctured_nhds_ne_bot + theorem submodule.eq_top_of_nonempty_interior Modified src/topology/algebra/module.lean + theorem submodule.eq_top_of_nonempty_interior' 2020-02-19 12:42:42 bcdb4c3 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-19 11:05:33 8563695 refactor(algebra/associated): move `is_unit` def to `algebra/group` (#2015) * refactor(algebra/associated): move `is_unit` def to `algebra/group` I think it makes sense to have it near `units`. * Add a docstring to `units`, mention `is_unit` there. ESTIMATED CHANGES Modified src/algebra/associated.lean - theorem is_unit.map' - theorem is_unit.map - def is_unit - theorem is_unit_iff_exists_inv' - theorem is_unit_iff_exists_inv - theorem is_unit_nat - theorem is_unit_of_mul_is_unit_left - theorem is_unit_of_mul_is_unit_right - theorem is_unit_of_mul_one - theorem is_unit_one - theorem is_unit_unit - theorem units.is_unit_mul_units Modified src/algebra/group/default.lean Added src/algebra/group/is_unit.lean + theorem is_unit.map' + theorem is_unit.map + def is_unit + theorem is_unit_iff_exists_inv' + theorem is_unit_iff_exists_inv + theorem is_unit_nat + theorem is_unit_of_mul_is_unit_left + theorem is_unit_of_mul_is_unit_right + theorem is_unit_of_mul_one + theorem is_unit_one + theorem is_unit_unit + theorem units.is_unit_mul_units Modified src/algebra/group/units.lean 2020-02-19 08:48:40 177c06f chore(measure_theory/*): make a few proofs slightly shorter (#2014) ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/simple_func_dense.lean 2020-02-18 23:13:13 8700aa7 feat(docs): install mathlibtools package with pip (#2010) ESTIMATED CHANGES Modified docs/contribute/index.md Modified docs/install/debian_details.md Modified docs/install/linux.md Modified docs/install/macos.md Modified docs/install/windows.md 2020-02-18 20:06:18 2198d2c feat(roadmap): add some formal roadmaps in topology (#1914) * feat(roadmap): add some formal roadmaps in topology * Update roadmap/topology/paracompact.lean Co-Authored-By: Johan Commelin * Update roadmap/todo.lean * Update roadmap/topology/shrinking_lemma.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * add `todo` tactic as a wrapper for `exact todo` * Update roadmap/topology/shrinking_lemma.lean Co-Authored-By: Johan Commelin * copyright notices and module docs * oops ESTIMATED CHANGES Added roadmap/todo.lean Added roadmap/topology/paracompact.lean + theorem normal_of_paracompact_t2 + theorem paracompact_of_compact + theorem paracompact_of_metric + theorem paracompact_space.precise_refinement Added roadmap/topology/shrinking_lemma.lean + theorem shrinking_lemma 2020-02-18 17:07:17 0c2dbd5 chore(analysis/normed_space/basic): implicit args (#2011) Arguments to these `iff`s should be implicit. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean +/- theorem nnnorm_eq_zero +/- theorem norm_eq_zero +/- theorem norm_le_zero_iff +/- theorem norm_pos_iff +/- theorem norm_zero Modified src/analysis/normed_space/multilinear.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/specific_limits.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_numbers.lean Modified src/measure_theory/simple_func_dense.lean Modified src/topology/metric_space/cau_seq_filter.lean 2020-02-18 14:56:44 8a660ec feat(scripts/deploy_nightly): change pre-release to release (#2009) The `--pre-release` doesn't really achieve anything as far as we can tell, and complicates some scripting: see https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/mathlib.20nightlies ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-02-18 12:09:47 115e513 chore(topology/constructions): rename `tendsto_prod_mk_nhds` (#2008) New name is `tendsto.prod_mk_nhds`. Also use it in a few proofs and generalize `tendsto_smul` to a `topological_semimodule`. ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/basic.lean - theorem tendsto_smul - theorem tendsto_smul_const Modified src/topology/algebra/module.lean +/- theorem continuous.smul + theorem filter.tendsto.smul + theorem tendsto_smul Modified src/topology/algebra/monoid.lean Modified src/topology/constructions.lean + theorem filter.tendsto.prod_mk_nhds - theorem tendsto_prod_mk_nhds Modified src/topology/continuous_on.lean Modified src/topology/instances/ennreal.lean 2020-02-18 09:33:08 1435a19 refactor(topology/maps): split the proof of `is_open_map_iff_nhds_le` (#2007) Extract a lemma `is_open_map.image_mem_nhds` from the proof, and make the proof use this lemma. ESTIMATED CHANGES Modified src/topology/maps.lean + theorem is_open_map.image_mem_nhds +/- def is_open_map +/- theorem is_open_map_iff_nhds_le 2020-02-18 02:10:56 2d00f20 feat(data/fin): init and snoc (#1978) * feat(data/fin): append * Update fin.lean * Update fintype.lean * replace but_last with init * cons and append commute * change append to snoc * comp_snoc and friends * markdown in docstrings * fix docstring ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_succ_fin_succ + theorem fin.comp_cons + theorem fin.comp_init + theorem fin.comp_snoc + theorem fin.comp_tail + theorem fin.cons_snoc_eq_snoc_cons + theorem fin.eq_last_of_not_lt + def fin.init + theorem fin.init_snoc + theorem fin.init_update_cast_succ + theorem fin.init_update_last + def fin.snoc + theorem fin.snoc_cast_succ + theorem fin.snoc_init_self + theorem fin.snoc_last + theorem fin.snoc_update + theorem fin.succ_last + theorem fin.tail_init_eq_init_tail + theorem fin.update_snoc_last Modified src/data/fintype.lean + theorem fin.prod_univ_cast_succ + theorem fin.sum_univ_cast_succ + theorem fin.univ_cast_succ Modified src/logic/function.lean + theorem function.comp_update 2020-02-18 00:40:07 b373dae feat(linear_algebra/contraction): define contraction maps between a module and its dual (#1973) * feat(linear_algebra/contraction): define contraction maps between a module and its dual * Implicit carrier types for smul_comm * Add comment with license and file description * Build on top of extant linear_map.smul_right * Feedback from code review ESTIMATED CHANGES Modified src/group_theory/group_action.lean + theorem smul_comm Modified src/linear_algebra/basic.lean + def linear_map.smul_rightₗ + theorem linear_map.smul_rightₗ_apply Added src/linear_algebra/contraction.lean + def contract_left + theorem contract_left_apply + def contract_right + theorem contract_right_apply + def dual_tensor_hom + theorem dual_tensor_hom_apply 2020-02-17 23:10:41 4299a80 refactor(topology/subset_properties): use finite subcovers indexed by types (#1980) * wip * wip * wip * wip * WIP * WIP * Reset changes that belong to other PR * Docstrings * Add Heine--Borel to docstring * Cantor's intersection theorem * Cantor for sequences * Generalise Cantor intersection thm * More fixes ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean Modified src/topology/subset_properties.lean +/- theorem compact.elim_finite_subcover + theorem compact.elim_finite_subfamily_closed + theorem compact.nonempty_Inter_of_directed_nonempty_compact_closed + theorem compact.nonempty_Inter_of_sequence_nonempty_compact_closed + theorem compact_iff_finite_subfamily_closed + theorem compact_of_finite_subfamily_closed + theorem compact_space_of_finite_subfamily_closed +/- theorem set.finite.compact_bUnion 2020-02-17 21:45:03 bbf5d1a refactor(algebra/field): partially migrate to bundled homs (#1999) * refactor(algebra/field): partially migrate to bundled homs * Add a few `@[simp]` attrs ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem is_ring_hom.injective +/- theorem is_ring_hom.map_div' +/- theorem is_ring_hom.map_div +/- theorem is_ring_hom.map_eq_zero +/- theorem is_ring_hom.map_inv' +/- theorem is_ring_hom.map_inv +/- theorem is_ring_hom.map_ne_zero + theorem ring_hom.injective + theorem ring_hom.map_div' + theorem ring_hom.map_div + theorem ring_hom.map_eq_zero + theorem ring_hom.map_inv' + theorem ring_hom.map_inv + theorem ring_hom.map_ne_zero Modified src/algebra/field_power.lean + theorem ring_hom.map_fpow' + theorem ring_hom.map_fpow Modified src/field_theory/subfield.lean 2020-02-17 20:10:20 6cdd96b chore(*): reduce proof size (#2006) ESTIMATED CHANGES Modified src/data/dfinsupp.lean Modified src/measure_theory/ae_eq_fun.lean 2020-02-17 18:37:15 5eefae2 chore(set_theory/ordinal): shorten proofs (#2005) ESTIMATED CHANGES Modified src/set_theory/ordinal.lean +/- theorem initial_seg.lt_or_eq_apply_left +/- theorem initial_seg.lt_or_eq_apply_right 2020-02-17 17:00:24 5f06692 feat(data/set/intervals): add `Ici_subset_Ici`, `Iic_subset_Iic` (#2003) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Ici_subset_Ici + theorem set.Iic_subset_Iic 2020-02-17 13:55:11 f8d0931 feat(tactic/rename_var): A teaching tactic (#1974) * feat(tactic/rename_var): A teaching tactic The goal is to teach that bound variables names are irrelevant, and also help clarify local context. * allow rename_var to act on several locations at once * Apply suggestions from code review by Rob. Co-Authored-By: Rob Lewis ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Added src/tactic/rename_var.lean Added test/rename_var.lean 2020-02-17 12:19:30 cd0e2f6 add "Try this: " to squeeze_simp and suggest (#1990) * add "Try this" to squeeze_simp and suggest * update docs * fix suggest tests * add "try this" to rcases, rintro, and tidy * add "try this" to hint ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/hint.lean Modified src/tactic/rcases.lean Modified src/tactic/squeeze.lean Modified src/tactic/suggest.lean Modified src/tactic/tidy.lean Modified test/suggest.lean Modified test/tidy.lean 2020-02-17 10:45:46 557b01d chore(analysis/calculus/tangent_cone): simplify a proof (#2002) Use `linear_map.span_inl_union_inr` instead of repeating its proof. ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean 2020-02-17 09:07:47 b42e568 chore(algebra/group_power): rename type vars, minor cleanup (#1997) The only non-BC change should be removing is_group_hom.map_gpow` / `is_add_group_hom.map_gsmul` in favor of `monoid_hom.map_gpow`. ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean +/- def add_monoid_hom.to_multiplicative +/- def monoid_hom.to_additive Modified src/algebra/group_power.lean +/- theorem abs_neg_one_pow +/- theorem add_gsmul +/- theorem add_monoid.add_smul +/- theorem add_monoid.mul_smul' +/- theorem add_monoid.mul_smul +/- theorem add_monoid.mul_smul_assoc +/- theorem add_monoid.mul_smul_left +/- theorem add_monoid.neg_smul +/- theorem add_monoid.one_smul +/- def add_monoid.smul +/- theorem add_monoid.smul_add +/- theorem add_monoid.smul_eq_mul' +/- theorem add_monoid.smul_eq_mul +/- theorem add_monoid.smul_le_smul +/- theorem add_monoid.smul_le_smul_of_le_right +/- theorem add_monoid.smul_neg_comm +/- theorem add_monoid.smul_nonneg +/- theorem add_monoid.smul_one +/- theorem add_monoid.smul_sub +/- theorem add_monoid.smul_zero +/- theorem add_monoid.zero_smul +/- theorem add_monoid_hom.map_gsmul +/- theorem add_monoid_hom.map_smul +/- theorem add_one_gsmul +/- theorem bit0_gsmul +/- theorem bit0_smul +/- theorem bit1_gsmul +/- theorem bit1_smul +/- theorem canonically_ordered_semiring.one_le_pow_of_one_le +/- theorem canonically_ordered_semiring.pow_le_one +/- theorem canonically_ordered_semiring.pow_le_pow_of_le_left +/- theorem canonically_ordered_semiring.pow_pos +/- theorem div_pow +/- theorem division_ring.inv_pow +/- def gpow +/- theorem gpow_add +/- theorem gpow_add_one +/- theorem gpow_bit0 +/- theorem gpow_bit1 +/- theorem gpow_coe_nat +/- theorem gpow_mul' +/- theorem gpow_mul +/- theorem gpow_mul_comm +/- theorem gpow_neg +/- theorem gpow_neg_one +/- theorem gpow_neg_succ +/- theorem gpow_of_nat +/- theorem gpow_one +/- theorem gpow_one_add +/- theorem gpow_zero +/- def gsmul +/- theorem gsmul_add +/- theorem gsmul_add_comm +/- theorem gsmul_coe_nat +/- theorem gsmul_eq_mul' +/- theorem gsmul_eq_mul +/- theorem gsmul_mul' +/- theorem gsmul_mul +/- theorem gsmul_neg +/- theorem gsmul_neg_succ +/- theorem gsmul_of_nat +/- theorem gsmul_one +/- theorem gsmul_sub +/- theorem gsmul_zero +/- theorem int.cast_pow +/- theorem inv_gpow +/- theorem inv_pow' +/- theorem inv_pow - theorem is_add_group_hom.gsmul - theorem is_add_group_hom.map_gsmul - theorem is_add_group_hom.map_smul +/- theorem is_add_monoid_hom.map_smul - theorem is_group_hom.map_gpow - theorem is_group_hom.map_pow +/- theorem is_monoid_hom.map_pow +/- theorem is_semiring_hom.map_pow +/- theorem list.prod_repeat +/- theorem list.sum_repeat +/- theorem lt_of_pow_lt_pow +/- def monoid.pow +/- theorem monoid_hom.map_gpow +/- theorem monoid_hom.map_pow +/- theorem mul_gpow +/- theorem mul_gsmul_assoc +/- theorem mul_gsmul_left +/- theorem mul_pow +/- theorem nat.cast_pow +/- theorem neg_gsmul +/- theorem neg_one_gsmul +/- theorem neg_one_pow_eq_or +/- theorem neg_one_pow_eq_pow_mod_two +/- theorem one_add_gsmul +/- theorem one_add_mul_le_pow' +/- theorem one_add_mul_le_pow +/- theorem one_add_sub_mul_le_pow +/- theorem one_div_pow +/- theorem one_gpow +/- theorem one_gsmul +/- theorem one_le_pow_of_one_le +/- theorem one_pow +/- theorem pow_abs +/- theorem pow_add +/- theorem pow_bit0 +/- theorem pow_bit1 +/- theorem pow_div +/- theorem pow_dvd_pow +/- theorem pow_eq_zero +/- theorem pow_inv +/- theorem pow_inv_comm +/- theorem pow_le_one +/- theorem pow_le_pow +/- theorem pow_le_pow_of_le_left +/- theorem pow_le_pow_of_le_one +/- theorem pow_lt_pow +/- theorem pow_lt_pow_of_lt_left +/- theorem pow_lt_pow_of_lt_one +/- theorem pow_mul' +/- theorem pow_mul +/- theorem pow_mul_comm' +/- theorem pow_mul_comm +/- theorem pow_ne_zero +/- theorem pow_nonneg +/- theorem pow_one +/- theorem pow_pos +/- theorem pow_right_inj +/- theorem pow_sub +/- theorem pow_succ' +/- theorem pow_succ +/- theorem pow_two +/- theorem pow_two_nonneg +/- theorem pow_zero +/- theorem ring_hom.map_pow +/- theorem smul_add_comm' +/- theorem smul_add_comm +/- theorem sq_sub_sq +/- theorem succ_smul' +/- theorem succ_smul +/- theorem two_smul +/- theorem units.coe_pow +/- theorem with_bot.coe_smul +/- theorem zero_gsmul +/- theorem zero_pow Modified src/algebra/lie_algebra.lean Modified src/analysis/complex/exponential.lean +/- theorem real.angle.coe_gsmul + theorem real.angle.coe_smul Modified src/category_theory/conj.lean Modified src/group_theory/quotient_group.lean 2020-02-17 07:29:08 d673e55 feat(ring_theory/algebra): add ext_iff (#1996) * feat(ring_theory/algebra): add ext_iff * also add eq_top_iff * Update src/ring_theory/algebra.lean ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + theorem algebra.eq_top_iff + theorem subalgebra.ext_iff 2020-02-17 05:59:51 770c56b doc(topology/metric_space/basic): add 1 docstring (#2000) * doc(topology/metric_space/basic): add 1 docstring * Update src/topology/metric_space/basic.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean 2020-02-17 04:35:05 dbb21c8 chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-17 02:59:50 1b1b626 chore(topology/sequences): use filter bases, minor fixes (#2001) ESTIMATED CHANGES Modified src/topology/sequences.lean +/- def is_seq_closed 2020-02-15 23:38:34 c7eb6f8 chore(algebra/group/hom): add a missing `simp` lemma (#1994) ESTIMATED CHANGES Modified src/algebra/group/hom.lean + theorem monoid_hom.coe_mk 2020-02-15 13:33:39 dbb61ea feat(tactic/hint): try out a customisable list of tactics, and report which ones make progress (#1955) * feat(tactic/hint): try out a fixed list of tactics, and report which ones make progress * add hint to tactic.default * make the list of hint tactics customisable * suggestion * fix linting errors * simplify use of add_hint, and add hints * remove TODO * Update src/tactic/hint.lean Co-Authored-By: Rob Lewis * various * Update docs/tactics.md ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/core.lean Modified src/tactic/finish.lean Added src/tactic/hint.lean Modified src/tactic/linarith.lean Modified src/tactic/norm_num.lean Modified src/tactic/omega/main.lean Modified src/tactic/ring.lean Modified src/tactic/split_ifs.lean Modified src/tactic/tauto.lean Modified src/tactic/tidy.lean Added test/hint.lean 2020-02-15 09:59:41 0b6d398 chore(algebra/group/basic): rename type vars (#1989) ESTIMATED CHANGES Modified src/algebra/group/basic.lean +/- theorem add_add_neg_cancel'_right +/- theorem add_add_sub_cancel +/- theorem add_sub_cancel' +/- theorem add_sub_cancel'_right +/- theorem add_sub_sub_cancel +/- theorem bit0_zero +/- theorem bit1_zero +/- theorem eq_iff_eq_of_sub_eq_sub +/- theorem eq_inv_iff_eq_inv +/- theorem eq_inv_iff_mul_eq_one +/- theorem eq_inv_mul_iff_mul_eq +/- theorem eq_mul_inv_iff_mul_eq +/- theorem eq_of_inv_eq_inv +/- theorem eq_sub_iff_add_eq' +/- theorem eq_sub_iff_add_eq +/- theorem inv_comm_of_comm +/- theorem inv_eq_iff_inv_eq +/- theorem inv_eq_iff_mul_eq_one +/- theorem inv_eq_one +/- theorem inv_inj' +/- theorem inv_mul_eq_iff_eq_mul +/- theorem inv_ne_one +/- theorem left_inverse_add_left_sub +/- theorem left_inverse_add_right_neg_add +/- theorem left_inverse_inv +/- theorem left_inverse_neg_add_add_right +/- theorem left_inverse_sub_add_left +/- theorem mul_eq_one_iff_eq_inv +/- theorem mul_eq_one_iff_inv_eq +/- theorem mul_inv_eq_iff_eq_mul +/- theorem mul_inv_eq_one +/- theorem mul_left_inj +/- theorem mul_left_injective +/- theorem mul_left_surjective +/- theorem mul_mul_mul_comm +/- theorem mul_right_inj +/- theorem mul_right_injective +/- theorem mul_right_surjective +/- theorem mul_self_iff_eq_one +/- theorem neg_add' +/- theorem neg_sub_neg +/- theorem sub_add_add_cancel +/- theorem sub_add_sub_cancel' +/- theorem sub_add_sub_cancel +/- theorem sub_eq_iff_eq_add' +/- theorem sub_eq_iff_eq_add +/- theorem sub_eq_neg_add +/- theorem sub_eq_sub_iff_sub_eq_sub +/- theorem sub_eq_zero +/- theorem sub_left_inj +/- theorem sub_ne_zero +/- theorem sub_right_comm +/- theorem sub_right_inj +/- theorem sub_sub_assoc_swap +/- theorem sub_sub_cancel +/- theorem sub_sub_sub_cancel_left +/- theorem sub_sub_sub_cancel_right 2020-02-14 17:55:38 d36930b chore(scripts): update nolints.txt ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-14 16:27:08 edefe20 feat(ci): update nolints.txt after master builds (#1979) * feat(ci): update nolints.txt after master builds * avoid failure when no changes * update for production * update condition * header override is already unset ESTIMATED CHANGES Modified .github/workflows/build.yml Added scripts/update_nolints.sh 2020-02-14 10:30:14 938960e fix(scripts/deploy_docs): remove last trace of nightly builds (#1986) ESTIMATED CHANGES Modified scripts/deploy_docs.sh 2020-02-14 01:44:12 4441394 chore(category_theory/conj): avoid `is_mul_hom` (#1984) ESTIMATED CHANGES Modified src/category_theory/conj.lean 2020-02-14 00:07:30 9a91125 chore(group_theory/sub*) : rename type vars (#1982) Use `M`, `G`, `A` instead of greek letters ESTIMATED CHANGES Modified src/group_theory/subgroup.lean +/- inductive add_group.in_closure +/- theorem additive.normal_add_subgroup_iff +/- theorem additive.simple_add_group_iff +/- def gmultiples +/- theorem gmultiples_subset +/- def gpowers +/- theorem gpowers_subset +/- def group.closure +/- theorem group.closure_eq_mclosure +/- theorem group.closure_mono +/- theorem group.closure_subgroup +/- theorem group.closure_subset +/- theorem group.closure_subset_iff +/- theorem group.conj_mem_conjugates_of_set +/- def group.conjugates +/- def group.conjugates_of_set +/- theorem group.conjugates_of_set_mono +/- theorem group.conjugates_of_set_subset +/- theorem group.conjugates_subset +/- theorem group.exists_list_of_mem_closure +/- theorem group.gpowers_eq_closure +/- theorem group.image_closure +/- inductive group.in_closure +/- theorem group.mclosure_inv_subset +/- theorem group.mclosure_subset +/- theorem group.mem_closure +/- theorem group.mem_closure_union_iff +/- theorem group.mem_conjugates_of_set_iff +/- theorem group.mem_conjugates_self +/- def group.normal_closure +/- theorem group.normal_closure_mono +/- theorem group.normal_closure_subset +/- theorem group.normal_closure_subset_iff +/- theorem group.subset_closure +/- theorem injective_mul +/- theorem is_add_subgroup.gsmul_coe +/- theorem is_add_subgroup.gsmul_mem +/- theorem is_add_subgroup.of_sub +/- theorem is_add_subgroup.sub_mem +/- theorem is_group_hom.inj_iff_trivial_ker +/- theorem is_group_hom.inj_of_trivial_ker +/- theorem is_group_hom.inv_iff_ker' +/- theorem is_group_hom.inv_iff_ker +/- theorem is_group_hom.inv_ker_one' +/- theorem is_group_hom.inv_ker_one +/- def is_group_hom.ker +/- theorem is_group_hom.mem_ker +/- theorem is_group_hom.one_iff_ker_inv' +/- theorem is_group_hom.one_iff_ker_inv +/- theorem is_group_hom.one_ker_inv' +/- theorem is_group_hom.one_ker_inv +/- theorem is_group_hom.trivial_ker_iff_eq_one +/- theorem is_group_hom.trivial_ker_of_inj +/- def is_subgroup.center +/- theorem is_subgroup.coe_gpow +/- theorem is_subgroup.coe_inv +/- theorem is_subgroup.eq_trivial_iff +/- theorem is_subgroup.gpow_mem +/- theorem is_subgroup.mem_center +/- theorem is_subgroup.mem_norm_comm +/- theorem is_subgroup.mem_norm_comm_iff +/- theorem is_subgroup.mem_trivial +/- def is_subgroup.normalizer +/- theorem is_subgroup.of_div +/- theorem is_subgroup.subset_normalizer +/- def is_subgroup.trivial +/- theorem is_subgroup.trivial_eq_closure +/- theorem mem_gmultiples +/- theorem mem_gpowers +/- theorem multiplicative.normal_subgroup_iff +/- theorem multiplicative.simple_group_iff +/- theorem normal_subgroup_of_comm_group - theorem simple_add_group_of_surjective +/- theorem simple_group_of_surjective Modified src/group_theory/submonoid.lean +/- theorem add_monoid.closure'_singleton +/- inductive add_monoid.in_closure +/- theorem add_submonoid.coe_smul +/- theorem add_submonoid.multiples.self_mem +/- def add_submonoid.multiples +/- theorem add_submonoid.multiples_subset +/- def add_submonoid.of_submonoid +/- theorem add_submonoid.smul_mem +/- def add_submonoid.to_submonoid +/- structure add_submonoid +/- theorem image.is_submonoid +/- theorem is_add_submonoid.multiple_subset +/- theorem is_add_submonoid.smul_coe +/- theorem is_add_submonoid.smul_mem +/- theorem is_submonoid.coe_mul +/- theorem is_submonoid.coe_one +/- theorem is_submonoid.finset_prod_mem +/- theorem is_submonoid.list_prod_mem +/- theorem is_submonoid.multiset_prod_mem +/- theorem is_submonoid.pow_mem +/- theorem is_submonoid.power_subset +/- def monoid.closure +/- theorem monoid.closure_mono +/- theorem monoid.closure_singleton +/- theorem monoid.closure_subset +/- theorem monoid.exists_list_of_mem_closure +/- theorem monoid.image_closure +/- inductive monoid.in_closure +/- theorem monoid.mem_closure_union_iff +/- theorem monoid.subset_closure +/- theorem multiples.add_mem +/- theorem multiples.self_mem +/- theorem multiples.zero_mem +/- def multiples +/- theorem powers.mul_mem +/- theorem powers.one_mem +/- theorem powers.self_mem +/- def powers +/- def submonoid.add_submonoid_equiv +/- def submonoid.of_add_submonoid +/- def submonoid.to_add_submonoid +/- structure submonoid 2020-02-13 22:27:55 db1c500 refactor(data/set/function): use dot notation (#1934) ESTIMATED CHANGES Modified src/data/equiv/local_equiv.lean Modified src/data/finsupp.lean Modified src/data/set/basic.lean - def set.eq_on - theorem set.image_eq_image_of_eq_on Modified src/data/set/countable.lean Modified src/data/set/finite.lean Modified src/data/set/function.lean + theorem function.injective.comp_inj_on + theorem function.injective.inj_on + theorem function.surjective.surj_on + theorem set.bij_on.comp + theorem set.bij_on.congr + theorem set.bij_on.image_eq + theorem set.bij_on.inj_on + theorem set.bij_on.inv_on_inv_fun_on + theorem set.bij_on.maps_to +/- theorem set.bij_on.mk + theorem set.bij_on.surj_on +/- def set.bij_on - theorem set.bij_on_comp + theorem set.bij_on_empty - theorem set.bij_on_of_eq_on - theorem set.bij_on_of_inv_on +/- theorem set.bijective_iff_bij_on_univ + theorem set.eq_on.bij_on_iff + theorem set.eq_on.image_eq + theorem set.eq_on.inj_on_iff + theorem set.eq_on.maps_to_iff + theorem set.eq_on.mono + theorem set.eq_on.surj_on_iff + theorem set.eq_on.symm + theorem set.eq_on.trans + def set.eq_on + theorem set.eq_on_comm +/- theorem set.eq_on_of_left_inv_of_right_inv + theorem set.eq_on_refl - theorem set.image_eq_of_bij_on - theorem set.image_eq_of_maps_to_of_surj_on - theorem set.image_subset_of_maps_to - theorem set.image_subset_of_maps_to_of_subset + theorem set.inj_on.bij_on_image + theorem set.inj_on.comp + theorem set.inj_on.congr + theorem set.inj_on.inv_fun_on_image + theorem set.inj_on.left_inv_on_inv_fun_on + theorem set.inj_on.mono + theorem set.inj_on.right_inv_on_of_left_inv_on - theorem set.inj_on.to_bij_on +/- def set.inj_on - theorem set.inj_on_comp - theorem set.inj_on_comp_of_injective_left +/- theorem set.inj_on_iff_injective - theorem set.inj_on_of_bij_on - theorem set.inj_on_of_eq_on - theorem set.inj_on_of_inj_on_of_subset - theorem set.inj_on_of_injective - theorem set.inj_on_of_left_inv_on +/- theorem set.inj_on_preimage +/- theorem set.injective_iff_inj_on_univ - theorem set.inv_fun_on_image + theorem set.inv_on.bij_on + theorem set.inv_on.symm +/- def set.inv_on + theorem set.left_inv_on.comp + theorem set.left_inv_on.congr_left + theorem set.left_inv_on.congr_right + theorem set.left_inv_on.eq + theorem set.left_inv_on.eq_on + theorem set.left_inv_on.inj_on + theorem set.left_inv_on.surj_on +/- def set.left_inv_on - theorem set.left_inv_on_comp - theorem set.left_inv_on_of_eq_on_left - theorem set.left_inv_on_of_eq_on_right - theorem set.left_inv_on_of_surj_on_right_inv_on +/- theorem set.maps_to' + theorem set.maps_to.comp + theorem set.maps_to.congr + theorem set.maps_to.image_subset + theorem set.maps_to.mono +/- def set.maps_to - theorem set.maps_to_comp + theorem set.maps_to_empty +/- theorem set.maps_to_image - theorem set.maps_to_of_bij_on - theorem set.maps_to_of_eq_on + theorem set.maps_to_preimage +/- theorem set.maps_to_range +/- theorem set.maps_to_univ +/- theorem set.range_restrict + theorem set.right_inv_on.comp + theorem set.right_inv_on.congr_left + theorem set.right_inv_on.congr_right + theorem set.right_inv_on.eq + theorem set.right_inv_on.eq_on + theorem set.right_inv_on.surj_on +/- def set.right_inv_on - theorem set.right_inv_on_comp - theorem set.right_inv_on_of_eq_on_left - theorem set.right_inv_on_of_eq_on_right - theorem set.right_inv_on_of_inj_on_of_left_inv_on - theorem set.subset_image_iff - theorem set.subset_range_iff + theorem set.surj_on.bij_on_subset + theorem set.surj_on.comap_nonempty + theorem set.surj_on.comp + theorem set.surj_on.congr + theorem set.surj_on.image_eq_of_maps_to + theorem set.surj_on.inv_on_inv_fun_on + theorem set.surj_on.left_inv_on_of_right_inv_on + theorem set.surj_on.maps_to_inv_fun_on + theorem set.surj_on.mono + theorem set.surj_on.right_inv_on_inv_fun_on +/- def set.surj_on - theorem set.surj_on_comp + theorem set.surj_on_empty + theorem set.surj_on_iff_exists_bij_on_subset +/- theorem set.surj_on_iff_surjective - theorem set.surj_on_of_bij_on - theorem set.surj_on_of_eq_on - theorem set.surj_on_of_right_inv_on +/- theorem set.surjective_iff_surj_on_univ Modified src/data/subtype.lean Modified src/linear_algebra/basis.lean Modified src/topology/continuous_on.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-02-13 21:47:45+01:00 0372fb0 fix(scripts/deploy_docs.sh): header override is already unset Before, the nightly and doc deploys were running in different builds. Now they're in the same build, so we don't need to (and can't) unset the variable twice. ESTIMATED CHANGES Modified scripts/deploy_docs.sh 2020-02-13 20:44:53 56a5240 feat(calculus/fderiv): invariance of fderiv under linear equivs (#1977) * feat(calculus/fderiv): invariance of fderiv under linear equivs * missing material * coherent naming conventions * fix build * coherent naming conventions * yury's comments ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem continuous_linear_equiv.comp_differentiable_at_iff + theorem continuous_linear_equiv.comp_differentiable_iff + theorem continuous_linear_equiv.comp_differentiable_on_iff + theorem continuous_linear_equiv.comp_differentiable_within_at_iff + theorem continuous_linear_equiv.comp_fderiv + theorem continuous_linear_equiv.comp_fderiv_within + theorem continuous_linear_equiv.comp_has_fderiv_at_iff' + theorem continuous_linear_equiv.comp_has_fderiv_at_iff + theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff' + theorem continuous_linear_equiv.comp_has_fderiv_within_at_iff + theorem continuous_linear_equiv.unique_diff_on_preimage_iff + theorem differentiable.comp_differentiable_on + theorem differentiable.differentiable_at + theorem differentiable_at.comp_differentiable_within_at + theorem differentiable_on_congr + theorem fderiv.comp_fderiv_within +/- theorem fderiv_const + theorem fderiv_const_apply - theorem fderiv_within_const + theorem fderiv_within_const_apply Modified src/analysis/normed_space/basic.lean + theorem norm_prod_le_iff Modified src/linear_algebra/basic.lean + theorem linear_equiv.symm_symm + theorem linear_equiv.symm_symm_apply Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.comp_continuous_iff + theorem continuous_linear_equiv.comp_continuous_on_iff + theorem continuous_linear_equiv.self_comp_symm + theorem continuous_linear_equiv.symm_comp_self + theorem continuous_linear_equiv.symm_symm + theorem continuous_linear_equiv.symm_symm_apply + theorem continuous_linear_map.comp_assoc Modified src/topology/continuous_on.lean + theorem continuous_on_congr Modified src/topology/homeomorph.lean + theorem homeomorph.comp_continuous_iff + theorem homeomorph.comp_continuous_on_iff 2020-02-13 19:03:11 a79a055 refactor(group_theory/submonoid): redefine `subtype.monoid` manually (#1981) * refactor(group_theory/submonoid): redefine `subtype.monoid` manually This way `group.to_monoid subtype.group` is defeq `subtype.monoid group.to_monoid`. * Fix compile of `ring_theory/integral_closure` ESTIMATED CHANGES Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/subring.lean 2020-02-13 18:26:28+01:00 b7ffc6f fix(mergify): remove references to nightly builds ESTIMATED CHANGES Modified .mergify.yml 2020-02-13 13:18:09+01:00 aa4da84 chore(ci): don't build with Lean nightly (#1975) * chore(ci): don't build with Lean nightly * fix condition for doc upload ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-02-11 15:33:16 abd412b chore(scripts): update nolints (#1976) ESTIMATED CHANGES Modified scripts/nolints.txt 2020-02-11 13:43:45 176852d feat(tactic/lint): check if inhabited instances should be nonempty (#1971) * add inhabited vs nonempty linter * add new linter to ci * start updating files to pass linter * more linter fixes * fix more linter errors * more fixes * fix build * remove unnecessary instances * nicer proof * adjust inhabit tactic * improve proof * move instance to better place * generalize instance * fix build * inhabited -> nonempty * fix build ESTIMATED CHANGES Modified scripts/mk_all.sh Modified scripts/mk_nolint.lean Modified src/data/list/basic.lean +/- theorem list.func.get_neg Modified src/data/set/basic.lean +/- theorem set.empty_ne_univ Modified src/data/set/countable.lean +/- theorem set.countable_iff_exists_surjective Modified src/data/set/lattice.lean +/- theorem set.Inter_const +/- theorem set.Inter_inter +/- theorem set.Union_const +/- theorem set.Union_union +/- theorem set.diff_Union +/- theorem set.inter_Inter +/- theorem set.union_Union Modified src/linear_algebra/basis.lean +/- theorem constr_range Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.lmap_domain_supported Modified src/logic/basic.lean +/- theorem exists_const +/- theorem forall_const + theorem nonempty.elim_to_inhabited Modified src/logic/function.lean Modified src/measure_theory/integration.lean Modified src/order/filter/basic.lean +/- theorem filter.prod_at_top_at_top_eq +/- theorem filter.prod_map_at_top_eq Modified src/tactic/interactive.lean Modified src/tactic/lint.lean Modified src/topology/basic.lean Modified src/topology/instances/ennreal.lean +/- theorem emetric.cauchy_seq_iff_le_tendsto_0 Modified src/topology/metric_space/basic.lean +/- theorem cauchy_seq_iff_tendsto_dist_at_top_0 Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.cauchy_seq_iff' +/- theorem emetric.cauchy_seq_iff +/- theorem emetric.cauchy_seq_iff_nnreal +/- theorem emetric.tendsto_at_top Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/separation.lean Modified src/topology/uniform_space/cauchy.lean +/- theorem cauchy_seq_iff_tendsto +/- theorem cauchy_seq_of_controlled +/- theorem filter.has_basis.cauchy_seq_iff' +/- theorem filter.has_basis.cauchy_seq_iff 2020-02-11 09:25:41 4e2c7e3 feat(topology/subset_properties): alternative definitions of irreducible and connected (#1970) * refactor(topology/*): irreducible and connected sets are nonempty * Fix typos * Fix more typos * Update src/topology/subset_properties.lean Co-Authored-By: sgouezel * Update src/topology/subset_properties.lean Co-Authored-By: sgouezel * Refactor 'nonempty' fields * Fix spacing in set-builder * Use dot notation * Write a comment on the nonempty assumption * Apply suggestions from code review * irreducible_iff statements * Fix build * Tiny improvements * Justify that connected spaces are nonempty * Add docstrings * Update src/topology/subset_properties.lean Co-Authored-By: sgouezel * Update subset_properties.lean ESTIMATED CHANGES Modified src/topology/subset_properties.lean + theorem is_connected_iff_sUnion_disjoint_open + theorem is_irreducible_iff_sInter + theorem is_irreducible_iff_sUnion_closed + theorem is_preconnected_iff_subset_of_disjoint + theorem is_preirreducible_iff_closed_union_closed + theorem subtype.connected_space + theorem subtype.irreducible_space + theorem subtype.preconnected_space + theorem subtype.preirreducible_space 2020-02-10 16:32:09 93ba8b6 refactor(topology/metric_space): introduce&use `edist`/`dist` bases (#1969) * refactor(topology/metric_space): introduce&use `edist`/`dist` bases * Introduce bases for `emetric_space` and `metric_space`. * Make some proofs use general facts about filter bases. * Fix some lint errors * Update src/topology/metric_space/emetric_space.lean Co-Authored-By: sgouezel * +2 docstrings ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/order/filter/bases.lean + theorem filter.has_basis.eventually_iff Modified src/topology/algebra/infinite_sum.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean - theorem metric.exists_delta_of_continuous - theorem metric.mem_closure_iff' + theorem metric.mem_closure_iff + theorem metric.nhds_basis_ball + theorem metric.nhds_basis_ball_inv_nat_pos + theorem metric.nhds_basis_ball_inv_nat_succ + theorem metric.nhds_basis_closed_ball - theorem metric.nhds_eq + theorem metric.nhds_within_basis_ball + theorem metric.uniformity_basis_dist + theorem metric.uniformity_basis_dist_inv_nat_pos + theorem metric.uniformity_basis_dist_inv_nat_succ + theorem metric.uniformity_basis_dist_le - theorem metric.uniformity_dist' - theorem metric.uniformity_dist + theorem metric.uniformity_edist - theorem uniformity_edist Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean - theorem emetric.mem_closure_iff' + theorem emetric.mem_closure_iff +/- theorem emetric.mem_nhds_iff + theorem emetric.nhds_basis_eball +/- theorem emetric.nhds_eq - theorem mem_uniformity_edist_inv_nat + theorem uniformity_basis_edist' + theorem uniformity_basis_edist + theorem uniformity_basis_edist_inv_nat + theorem uniformity_basis_edist_le' + theorem uniformity_basis_edist_le + theorem uniformity_basis_edist_nnreal - theorem uniformity_edist'' - theorem uniformity_edist' + theorem uniformity_edist - theorem uniformity_edist_inv_nat - theorem uniformity_edist_nnreal Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/uniform_space/basic.lean + theorem filter.has_basis.mem_uniformity_iff + theorem filter.has_basis.uniform_continuous_iff + theorem nhds_basis_uniformity' + theorem nhds_basis_uniformity Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_iff' - theorem cauchy_seq_iff_prod_map + theorem cauchy_seq_iff_tendsto + theorem filter.has_basis.cauchy_iff + theorem filter.has_basis.cauchy_seq_iff' + theorem filter.has_basis.cauchy_seq_iff 2020-02-09 09:33:32 777f214 refactor(data/matrix,linear_algebra): Use `matrix.mul` as default multiplication in matrix lemmas (#1959) * Change `has_mul.mul` to `matrix.mul` in a few `simp` lemmas * Standardise more lemmas for matrix multiplication * Generalize `to_pequiv_mul_matrix` to rectangular matrices ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.diagonal_mul_diagonal' +/- theorem matrix.diagonal_mul_diagonal Modified src/data/matrix/pequiv.lean +/- theorem pequiv.to_pequiv_mul_matrix Modified src/linear_algebra/determinant.lean +/- theorem matrix.det_mul +/- theorem matrix.det_transpose 2020-02-08 13:25:39 bcb63eb refactor(topology/*): irreducible and connected sets are nonempty (#1964) * refactor(topology/*): irreducible and connected sets are nonempty * Fix typos * Fix more typos * Update src/topology/subset_properties.lean Co-Authored-By: sgouezel * Update src/topology/subset_properties.lean Co-Authored-By: sgouezel * Refactor 'nonempty' fields * Fix spacing in set-builder * Use dot notation * Write a comment on the nonempty assumption * Apply suggestions from code review * Fix build * Tiny improvements ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean +/- theorem intermediate_value_univ - theorem is_connected.forall_Icc_subset - theorem is_connected.intermediate_value +/- theorem is_connected_Icc - theorem is_connected_Ici - theorem is_connected_Ico - theorem is_connected_Iic - theorem is_connected_Iio - theorem is_connected_Ioc - theorem is_connected_Ioi +/- theorem is_connected_Ioo - theorem is_connected_iff_forall_Icc_subset + theorem is_preconnected.forall_Icc_subset + theorem is_preconnected.intermediate_value + theorem is_preconnected_Ici + theorem is_preconnected_Ico + theorem is_preconnected_Iic + theorem is_preconnected_Iio + theorem is_preconnected_Ioc + theorem is_preconnected_Ioi + theorem is_preconnected_iff_forall_Icc_subset Modified src/topology/basic.lean + theorem set.nonempty.closure Modified src/topology/subset_properties.lean - theorem exists_irreducible - theorem exists_mem_inter + theorem exists_preirreducible + theorem irreducible_component_property - theorem irreducible_exists_mem_inter +/- theorem is_clopen_iff + theorem is_connected.is_preconnected + theorem is_connected.nonempty +/- theorem is_connected.union - theorem is_connected_closed_iff - theorem is_connected_empty - theorem is_connected_of_forall - theorem is_connected_of_forall_pair - theorem is_connected_of_is_irreducible - theorem is_connected_sUnion + theorem is_irreducible.closure + theorem is_irreducible.image + theorem is_irreducible.is_connected + theorem is_irreducible.is_preirreducible + theorem is_irreducible.nonempty - theorem is_irreducible_closure - theorem is_irreducible_empty + theorem is_preconnected.closure + theorem is_preconnected.image + theorem is_preconnected.union + def is_preconnected + theorem is_preconnected_closed_iff + theorem is_preconnected_empty + theorem is_preconnected_of_forall + theorem is_preconnected_of_forall_pair + theorem is_preconnected_sUnion + theorem is_preirreducible.closure + theorem is_preirreducible.image + theorem is_preirreducible.is_preconnected + def is_preirreducible + theorem is_preirreducible_empty + theorem nonempty_inter + theorem nonempty_preirreducible_inter +/- theorem subset_connected_component 2020-02-08 10:42:31 2e18388 feat(linear_algebra): The Special linear group SL(n, R) (#1960) * Define the special linear group * Make definitions independent of PR #1959 That PR changes `det_mul` to have another, still definitionally equal, type. If the invocations to `det_mul` are independent of syntactic equality, i.e. we only pass `det_mul` to `erw`, this branch should be compatible with the state before the change and after. * Documentation and code style improvements * Improve module docstring * Fix documentation `matrix.special_linear_group` is not a set but a type Co-Authored-By: sgouezel * Don't directly coerce from SL to linear maps Now we coerce from `matrix.special_linear_group n R` to `matrix n n R` instead of `general_linear_group R (n -> R)` * Whitespace fixes * Fix failing build in `src/linear_algebra/dual.lean` * Give an almost generic formula for `det_adjugate` * Move `det_eq_one_of_card_eq_zero` to the correct section * Replace the ad-hoc assumption of `det_adjugate_of_invertible` with `is_unit` * Fix linting error There was an unnecessary assumption [decidable_eq α] floating around * Replace `special_linear_group.val` with the appropriate coercions * whitespace Correctly indent continued line Co-Authored-By: sgouezel * Docstrings for the `det_adjugate_of_...` lemmas ESTIMATED CHANGES Modified src/algebra/module.lean + theorem linear_map.to_fun_eq_coe Modified src/data/fintype.lean + theorem univ_eq_singleton_of_card_one Modified src/data/matrix/basic.lean + theorem matrix.mul_vec_one + theorem matrix.smul_eq_diagonal_mul + theorem matrix.smul_eq_mul_diagonal Modified src/linear_algebra/determinant.lean + theorem matrix.det_eq_one_of_card_eq_zero + theorem matrix.det_eq_zero_of_column_eq_zero + theorem matrix.det_smul Modified src/linear_algebra/dual.lean Modified src/linear_algebra/matrix.lean + theorem matrix.to_lin_one Modified src/linear_algebra/nonsingular_inverse.lean + theorem matrix.adjugate_eq_one_of_card_eq_one + theorem matrix.adjugate_zero + theorem matrix.det_adjugate_eq_one + theorem matrix.det_adjugate_of_cancel + theorem matrix.det_adjugate_of_is_unit Added src/linear_algebra/special_linear_group.lean + theorem matrix.special_linear_group.coe_to_GL + theorem matrix.special_linear_group.det_coe_fun + theorem matrix.special_linear_group.det_coe_matrix + def matrix.special_linear_group.embedding_GL + theorem matrix.special_linear_group.ext + theorem matrix.special_linear_group.ext_iff + theorem matrix.special_linear_group.inv_apply + theorem matrix.special_linear_group.inv_val + theorem matrix.special_linear_group.mul_apply + theorem matrix.special_linear_group.mul_val + theorem matrix.special_linear_group.one_apply + theorem matrix.special_linear_group.one_val + def matrix.special_linear_group.to_GL + theorem matrix.special_linear_group.to_GL_mul + theorem matrix.special_linear_group.to_GL_one + def matrix.special_linear_group.to_lin + theorem matrix.special_linear_group.to_lin_mul + theorem matrix.special_linear_group.to_lin_one + def matrix.special_linear_group.to_linear_equiv + def matrix.special_linear_group 2020-02-07 16:57:48 2007d34 feat(analysis/normed_space/multilinear): norm on continuous multilinear maps (#1956) * feat(analysis/normed_space/multilinear): norm on continuous multilinear maps * docstring * improved docstrings ESTIMATED CHANGES Added src/analysis/normed_space/multilinear.lean + theorem continuous_linear_map.curry_uncurry_left + theorem continuous_linear_map.norm_map_tail_right_le + def continuous_linear_map.uncurry_left + theorem continuous_linear_map.uncurry_left_apply + theorem continuous_linear_map.uncurry_left_norm + def continuous_multilinear_curry_fin0 + def continuous_multilinear_curry_fin0_aux + def continuous_multilinear_curry_left_equiv + def continuous_multilinear_curry_left_equiv_aux + def continuous_multilinear_curry_right_equiv + def continuous_multilinear_curry_right_equiv_aux + theorem continuous_multilinear_map.bound + theorem continuous_multilinear_map.bounds_bdd_below + theorem continuous_multilinear_map.bounds_nonempty + theorem continuous_multilinear_map.continuous_eval + def continuous_multilinear_map.curry0 + theorem continuous_multilinear_map.curry0_apply + theorem continuous_multilinear_map.curry0_norm + theorem continuous_multilinear_map.curry0_uncurry0 + def continuous_multilinear_map.curry_left + theorem continuous_multilinear_map.curry_left_apply + theorem continuous_multilinear_map.curry_left_norm + def continuous_multilinear_map.curry_right + theorem continuous_multilinear_map.curry_right_apply + theorem continuous_multilinear_map.curry_right_norm + theorem continuous_multilinear_map.curry_uncurry_right + theorem continuous_multilinear_map.le_op_norm + theorem continuous_multilinear_map.mk_pi_field_apply + theorem continuous_multilinear_map.mk_pi_ring_apply_one_eq_self + theorem continuous_multilinear_map.norm_image_sub_le_of_bound' + theorem continuous_multilinear_map.norm_image_sub_le_of_bound + theorem continuous_multilinear_map.norm_map_cons_le + theorem continuous_multilinear_map.norm_map_tail_left_le + theorem continuous_multilinear_map.norm_zero + def continuous_multilinear_map.op_norm + theorem continuous_multilinear_map.op_norm_add_le + theorem continuous_multilinear_map.op_norm_le_bound + theorem continuous_multilinear_map.op_norm_neg + theorem continuous_multilinear_map.op_norm_nonneg + theorem continuous_multilinear_map.op_norm_smul + theorem continuous_multilinear_map.op_norm_zero_iff + theorem continuous_multilinear_map.ratio_le_op_norm + def continuous_multilinear_map.uncurry0 + theorem continuous_multilinear_map.uncurry0_curry0 + theorem continuous_multilinear_map.uncurry0_norm + theorem continuous_multilinear_map.uncurry_curry_left + theorem continuous_multilinear_map.uncurry_curry_right + def continuous_multilinear_map.uncurry_right + theorem continuous_multilinear_map.uncurry_right_apply + theorem continuous_multilinear_map.uncurry_right_norm + theorem continuous_multilinear_map.unit_le_op_norm + theorem multilinear_map.continuous_of_bound + theorem multilinear_map.exists_bound_of_continuous + def multilinear_map.mk_continuous + theorem multilinear_map.mk_continuous_norm_le + theorem multilinear_map.norm_image_sub_le_of_bound' + theorem multilinear_map.norm_image_sub_le_of_bound 2020-02-07 06:21:24 f912a6b feat(algebraic_geometry/prime_spectrum): first definitions (#1957) * Start on prime spectrum * Define comap betwee prime spectra; prove continuity * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: sgouezel * chore(*): rename `filter.inhabited_of_mem_sets` to `nonempty_of_mem_sets` (#1943) In other names `inhabited` means that we have a `default` element. * refactor(linear_algebra/multilinear): cleanup of multilinear maps (#1921) * staging [ci skip] * staging * staging * cleanup norms * complete currying * docstrings * docstrings * cleanup * nonterminal simp * golf * missing bits for derivatives * sub_apply * cleanup * better docstrings * remove two files * reviewer's comments * use fintype * line too long * feat(ring_theory/power_series): several simp lemmas (#1945) * Small start on generating functions * Playing with Bernoulli * Finished sum_bernoulli * Some updates after PRs * Analogue for mv_power_series * Cleanup after merged PRs * feat(ring_theory/power_series): several simp lemmas * Remove file that shouldn't be there yet * Update src/ring_theory/power_series.lean Co-Authored-By: sgouezel * Generalise lemma to canonically_ordered_monoid * Update name * Fix build * feat(tactic/lint): Three new linters, update illegal_constants (#1947) * add three new linters * fix failing declarations * restrict and rename illegal_constants linter * update doc * update ge_or_gt test * update mk_nolint * fix error * Update scripts/mk_nolint.lean Co-Authored-By: Rob Lewis * Update src/meta/expr.lean Co-Authored-By: Rob Lewis * clarify unfolds_to_class * fix names since name is no longer protected also change one declaration back to instance, since it did not cause a linter failure * fix errors, move notes to docstrings * add comments to docstring * update mk_all.sh * fix linter errors * feat(number_theory/bernoulli): Add definition of Bernoulli numbers (#1952) * Small start on generating functions * Playing with Bernoulli * Finished sum_bernoulli * Some updates after PRs * Analogue for mv_power_series * Cleanup after merged PRs * feat(number_theory/bernoulli): Add definition of Bernoulli numbers * Remove old file * Process comments * feat(topology/algebra/multilinear): define continuous multilinear maps (#1948) * feat(data/set/intervals): define intervals and prove basic properties (#1949) * things about intervals * better documentation * better file name * add segment_eq_interval * better proof for is_measurable_interval * better import and better proof * better proof * refactor(*): migrate from `≠ ∅` to `set.nonempty` (#1954) * refactor(*): migrate from `≠ ∅` to `set.nonempty` Sorry for a huge PR but it's easier to do it in one go. Basically, I got rid of all `≠ ∅` in theorem/def types, then fixed compile. I also removed most lemmas about `≠ ∅` from `set/basic` to make sure that I didn't miss something I should change elsewhere. Should I restore (some of) them? * Fix compile of `archive/` * Drop +1 unneeded argument, thanks @sgouezel. * Fix build * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: sgouezel * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: sgouezel * Change I to s, and little fixes * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/algebraic_geometry/prime_spectrum.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Indentation * Update prime_spectrum.lean * fix build ESTIMATED CHANGES Added src/algebraic_geometry/prime_spectrum.lean + theorem prime_spectrum.Inter_zero_locus + def prime_spectrum.as_ideal + def prime_spectrum.comap + theorem prime_spectrum.comap_as_ideal + theorem prime_spectrum.comap_comp + theorem prime_spectrum.comap_continuous + theorem prime_spectrum.comap_id + theorem prime_spectrum.ext + theorem prime_spectrum.is_closed_iff_zero_locus + theorem prime_spectrum.is_open_iff + theorem prime_spectrum.mem_zero_locus + theorem prime_spectrum.preimage_comap_zero_locus + theorem prime_spectrum.union_zero_locus + theorem prime_spectrum.union_zero_locus_ideal + def prime_spectrum.zero_locus + theorem prime_spectrum.zero_locus_Union + theorem prime_spectrum.zero_locus_empty_of_one_mem + theorem prime_spectrum.zero_locus_is_closed + theorem prime_spectrum.zero_locus_span + theorem prime_spectrum.zero_locus_univ + def prime_spectrum Modified src/topology/basic.lean + def topological_space.of_closed 2020-02-06 15:25:57 fb160f0 refactor(topology/continuous_on): use filter bases (#1968) ESTIMATED CHANGES Modified src/topology/continuous_on.lean + theorem nhds_within_basis_open + theorem nhds_within_has_basis 2020-02-06 12:20:38 0e533d0 refactor(topology/basic): rewrite some proofs using filter bases (#1967) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem mem_closure_iff_nhds_basis + theorem nhds_basis_opens - theorem nhds_sets Modified src/topology/bounded_continuous_function.lean Modified src/topology/order.lean 2020-02-06 10:51:04 b4c2ec2 chore(topology/metric_space/basic): simplify `tendsto_nhds` (#1966) * chore(topology/metric_space/basic): simplify `tendsto_nhds` No reason to have an extra `∃ n ∈ f`. * whitespace Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/metric_space/basic.lean 2020-02-06 09:12:40 34f9a17 feat(*): a few simple lemmas (#1965) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.nonempty.not_subset_empty Modified src/order/complete_lattice.lean + theorem lattice.supr_subtype' Modified src/order/filter/basic.lean + theorem filter.nonempty_of_ne_bot Modified src/topology/algebra/ordered.lean + theorem infi_of_continuous' +/- theorem infi_of_continuous + theorem supr_of_continuous' +/- theorem supr_of_continuous 2020-02-05 20:37:51 8c086a6 chore(tactic/basic,default): add missing tactics (#1962) ESTIMATED CHANGES Modified src/tactic/basic.lean Modified src/tactic/default.lean 2020-02-05 17:46:23 8786ea6 refactor(measure_theory/set_integral): move set integral into namespace set and add some lemmas (#1950) * move set integral into namespace set and add some lemmas * Update bochner_integration.lean * better theorem names * Update set_integral.lean * Update set_integral.lean ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_nonneg_of_ae - theorem measure_theory.integral_nonneg_of_nonneg_ae +/- theorem measure_theory.integral_zero - theorem measure_theory.l1.integral_coe_eq_integral + theorem measure_theory.l1.simple_func.integral_eq_integral Modified src/measure_theory/set_integral.lean +/- theorem integrable_on.smul +/- def integrable_on +/- theorem integrable_on_congr_ae +/- theorem integrable_on_empty - theorem integrable_on_of_integrable +/- theorem integral_on_congr + theorem integral_on_non_integrable + theorem integral_on_non_measurable + theorem integral_on_nonneg + theorem integral_on_nonneg_of_ae + theorem integral_on_nonpos + theorem integral_on_nonpos_of_ae + theorem integral_on_undef + theorem measurable.measurable_on_univ +/- def measurable_on +/- theorem measurable_on_empty +/- theorem measurable_on_singleton - theorem measurable_on_univ + theorem measure_theory.integrable.integrable_on 2020-02-05 14:27:45 08581cc feat(tactic/rename): Add improved renaming tactic (#1916) * feat(tactic/rename): Add improved renaming tactic We add a tactic `rename'` which works like `rename`, with the following improvements: * Multiple hypotheses can be renamed at once. * Renaming always preserve the position of a hypothesis in the context. * Move private def `drop_until_inclusive` to `list.after` * Change `rename'` docs to rely less on knowledge of `rename` * Improve formatting of list.after docs ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/list/defs.lean + def list.after Modified src/tactic/basic.lean Added src/tactic/rename.lean Modified test/tactics.lean 2020-02-05 13:11:44+01:00 6845aaa chore(*): bump Lean version to 3.5.1c (#1958) * chore(leanpkg.toml): bump lean version to 3.5.0 * update CI to build with 3.5.0 * update mergify * update contribute docs * update deploy_nightly.sh * 3.5.0 -> 3.5.1 ESTIMATED CHANGES Modified .github/workflows/build.yml Modified .mergify.yml Modified docs/contribute/index.md Modified leanpkg.toml Modified scripts/deploy_nightly.sh Modified src/algebra/ring.lean Modified src/tactic/squeeze.lean 2020-02-05 06:25:59 dd8da51 refactor(*): migrate from `≠ ∅` to `set.nonempty` (#1954) * refactor(*): migrate from `≠ ∅` to `set.nonempty` Sorry for a huge PR but it's easier to do it in one go. Basically, I got rid of all `≠ ∅` in theorem/def types, then fixed compile. I also removed most lemmas about `≠ ∅` from `set/basic` to make sure that I didn't miss something I should change elsewhere. Should I restore (some of) them? * Fix compile of `archive/` * Drop +1 unneeded argument, thanks @sgouezel. ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified src/algebra/pointwise.lean + theorem set.nonempty.pointwise_mul - theorem set.pointwise_mul_ne_empty Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/tangent_cone.lean +/- theorem unique_diff_on_convex Modified src/analysis/complex/polynomial.lean Modified src/analysis/normed_space/real_inner_product.lean +/- theorem exists_norm_eq_infi_of_complete_convex +/- theorem exists_norm_eq_infi_of_complete_subspace +/- theorem norm_eq_infi_iff_inner_eq_zero +/- theorem norm_eq_infi_iff_inner_le_zero Modified src/analysis/normed_space/riesz_lemma.lean Modified src/computability/halting.lean Modified src/data/analysis/filter.lean Modified src/data/analysis/topology.lean Modified src/data/real/basic.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_Inf Modified src/data/real/nnreal.lean Modified src/data/semiquot.lean - theorem semiquot.ne_empty + theorem semiquot.nonempty Modified src/data/set/basic.lean - theorem set.coe_nonempty_iff_ne_empty + theorem set.empty_not_nonempty - theorem set.exists_mem_of_ne_empty +/- theorem set.fst_image_prod - theorem set.insert_ne_empty - theorem set.inter_singleton_ne_empty - theorem set.ne_empty_iff_exists_mem +/- theorem set.ne_empty_iff_nonempty - theorem set.ne_empty_of_mem +/- theorem set.nmem_singleton_empty + theorem set.nonempty.to_subtype +/- theorem set.nonempty_compl - theorem set.nonempty_iff_univ_ne_empty - theorem set.nonempty_of_inter_nonempty_left - theorem set.nonempty_of_inter_nonempty_right - theorem set.not_eq_empty_iff_exists + theorem set.not_nonempty_iff_eq_empty - theorem set.prod_ne_empty_iff +/- theorem set.range_eq_empty - theorem set.range_ne_empty - theorem set.range_ne_empty_iff_nonempty + theorem set.range_nonempty + theorem set.range_nonempty_iff_nonempty - theorem set.singleton_ne_empty +/- theorem set.snd_image_prod - theorem set.subset_ne_empty - theorem set.univ_ne_empty +/- theorem set.univ_nonempty Modified src/data/set/countable.lean +/- theorem set.countable_iff_exists_surjective_to_subtype +/- theorem set.exists_surjective_of_countable Modified src/data/set/finite.lean +/- theorem set.finite.exists_maximal_wrt Modified src/data/set/intervals/basic.lean - theorem set.Ici_ne_empty - theorem set.Iic_ne_empty - theorem set.Iio_ne_empty - theorem set.Ioi_ne_empty Modified src/data/set/lattice.lean Modified src/data/setoid.lean - theorem setoid.ne_empty_of_mem_partition + theorem setoid.nonempty_of_mem_partition Modified src/geometry/manifold/manifold.lean Modified src/geometry/manifold/real_instances.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean +/- theorem measure_theory.outer_measure.Inf_gen_nonempty1 +/- theorem measure_theory.outer_measure.top_apply Modified src/measure_theory/simple_func_dense.lean Modified src/order/bounds.lean - theorem ne_empty_of_is_glb - theorem ne_empty_of_is_lub + theorem nonempty_of_is_glb + theorem nonempty_of_is_lub Modified src/order/conditionally_complete_lattice.lean +/- theorem lattice.cInf_insert +/- theorem lattice.cInf_intro +/- theorem lattice.cInf_le_cInf +/- theorem lattice.cInf_le_cSup +/- theorem lattice.cInf_union +/- theorem lattice.cInf_upper_bounds_eq_cSup +/- theorem lattice.cSup_insert +/- theorem lattice.cSup_inter_le +/- theorem lattice.cSup_intro' +/- theorem lattice.cSup_intro +/- theorem lattice.cSup_le +/- theorem lattice.cSup_le_cSup +/- theorem lattice.cSup_le_iff +/- theorem lattice.cSup_lower_bounds_eq_cInf +/- theorem lattice.cSup_union +/- theorem lattice.cinfi_const +/- theorem lattice.cinfi_le +/- theorem lattice.cinfi_le_cinfi +/- theorem lattice.csupr_const +/- theorem lattice.csupr_le +/- theorem lattice.csupr_le_csupr +/- theorem lattice.exists_lt_of_cInf_lt +/- theorem lattice.exists_lt_of_cinfi_lt +/- theorem lattice.exists_lt_of_lt_cSup +/- theorem lattice.exists_lt_of_lt_csupr +/- theorem lattice.is_glb_cInf +/- theorem lattice.is_lub_cSup +/- theorem lattice.le_cInf +/- theorem lattice.le_cInf_iff +/- theorem lattice.le_cInf_inter +/- theorem lattice.le_cinfi +/- theorem lattice.le_csupr +/- theorem with_top.coe_Inf Modified src/order/filter/basic.lean +/- theorem filter.comap_ne_bot - theorem filter.forall_sets_ne_empty_iff_ne_bot +/- theorem filter.nonempty_of_mem_sets + theorem filter.principal_ne_bot_iff Modified src/order/filter/lift.lean +/- theorem filter.lift'_ne_bot_iff Modified src/order/filter/pointwise.lean Modified src/order/liminf_limsup.lean +/- theorem filter.Liminf_principal +/- theorem filter.Limsup_principal Modified src/order/zorn.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean +/- theorem mem_closure_of_is_glb +/- theorem mem_closure_of_is_lub +/- theorem mem_of_is_glb_of_is_closed +/- theorem mem_of_is_lub_of_is_closed +/- theorem nhds_principal_ne_bot_of_is_glb +/- theorem nhds_principal_ne_bot_of_is_lub Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean +/- theorem dense_iff_inter_open +/- theorem mem_closure_iff +/- theorem mem_closure_iff_nhds Modified src/topology/bounded_continuous_function.lean Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean Modified src/topology/instances/ennreal.lean +/- theorem ennreal.Sup_add Modified src/topology/instances/real.lean Modified src/topology/metric_space/baire.lean +/- theorem nonempty_interior_of_Union_of_closed Modified src/topology/metric_space/basic.lean +/- theorem metric.diam_union' Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.diam_union' Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean +/- theorem emetric.Hausdorff_edist_empty +/- theorem emetric.Hausdorff_edist_le_ediam + theorem emetric.empty_or_nonempty_of_Hausdorff_edist_ne_top - theorem emetric.ne_empty_of_Hausdorff_edist_ne_top + theorem emetric.nonempty_of_Hausdorff_edist_ne_top +/- theorem metric.Hausdorff_dist_le_diam - theorem metric.Hausdorff_edist_ne_top_of_ne_empty_of_bounded + theorem metric.Hausdorff_edist_ne_top_of_nonempty_of_bounded +/- theorem metric.exists_dist_lt_of_inf_dist_lt +/- theorem metric.inf_dist_le_inf_dist_of_subset +/- theorem metric.inf_edist_ne_top +/- theorem metric.mem_closure_iff_inf_dist_zero +/- theorem metric.mem_iff_inf_dist_zero_of_closed Modified src/topology/metric_space/isometry.lean Modified src/topology/opens.lean +/- def topological_space.nonempty_compacts Modified src/topology/order.lean Modified src/topology/sequences.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-02-04 22:11:27 253f75c feat(data/set/intervals): define intervals and prove basic properties (#1949) * things about intervals * better documentation * better file name * add segment_eq_interval * better proof for is_measurable_interval * better import and better proof * better proof ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem max_sub_min_eq_abs' + theorem max_sub_min_eq_abs Modified src/analysis/convex/basic.lean + theorem segment_eq_interval Modified src/data/indicator_function.lean + theorem set.indicator_apply + theorem set.indicator_comp_of_zero + theorem set.indicator_mul + theorem set.indicator_nonneg' + theorem set.indicator_nonneg + theorem set.indicator_nonpos' + theorem set.indicator_nonpos Modified src/data/set/intervals/basic.lean + theorem set.Icc_inter_Icc_eq_singleton Modified src/data/set/intervals/default.lean Added src/data/set/intervals/unordered_interval.lean + theorem set.Icc_subset_interval' + theorem set.Icc_subset_interval + theorem set.abs_sub_le_of_subinterval + theorem set.abs_sub_left_of_mem_interval + theorem set.abs_sub_right_of_mem_interval + theorem set.bdd_below_bdd_above_iff_subset_interval + def set.interval + theorem set.interval_of_ge + theorem set.interval_of_gt + theorem set.interval_of_le + theorem set.interval_of_lt + theorem set.interval_of_not_ge + theorem set.interval_of_not_le + theorem set.interval_self + theorem set.interval_subset_interval + theorem set.interval_subset_interval_iff_le + theorem set.interval_subset_interval_iff_mem + theorem set.interval_subset_interval_left + theorem set.interval_subset_interval_right + theorem set.interval_swap + theorem set.left_mem_interval + theorem set.mem_interval_of_ge + theorem set.mem_interval_of_le + theorem set.nonempty_interval + theorem set.right_mem_interval Modified src/measure_theory/borel_space.lean + theorem is_measurable_interval Modified src/measure_theory/lebesgue_measure.lean - theorem measure_theory.real.volume_Icc - theorem measure_theory.real.volume_Ico - theorem measure_theory.real.volume_Ioo - theorem measure_theory.real.volume_singleton - theorem measure_theory.real.volume_val + theorem real.volume_Icc + theorem real.volume_Ico + theorem real.volume_Ioo + theorem real.volume_interval + theorem real.volume_lt_top_of_bounded + theorem real.volume_lt_top_of_compact + theorem real.volume_singleton + theorem real.volume_val Modified src/order/bounds.lean + theorem bdd_above_iff_subset_Iic + theorem bdd_below_bdd_above_iff_subset_Icc + theorem bdd_below_iff_subset_Ici 2020-02-04 19:56:41 475a669 feat(topology/algebra/multilinear): define continuous multilinear maps (#1948) ESTIMATED CHANGES Modified src/linear_algebra/multilinear.lean +/- theorem multilinear_map.map_smul Added src/topology/algebra/multilinear.lean + theorem continuous_multilinear_map.add_apply + theorem continuous_multilinear_map.cons_add + theorem continuous_multilinear_map.cons_smul + theorem continuous_multilinear_map.ext + theorem continuous_multilinear_map.map_add + theorem continuous_multilinear_map.map_add_univ + theorem continuous_multilinear_map.map_coord_zero + theorem continuous_multilinear_map.map_piecewise_add + theorem continuous_multilinear_map.map_piecewise_smul + theorem continuous_multilinear_map.map_smul + theorem continuous_multilinear_map.map_smul_univ + theorem continuous_multilinear_map.map_sub + theorem continuous_multilinear_map.map_zero + theorem continuous_multilinear_map.neg_apply + theorem continuous_multilinear_map.smul_apply + theorem continuous_multilinear_map.sub_apply + def continuous_multilinear_map.to_continuous_linear_map + def continuous_multilinear_map.to_multilinear_map_linear + theorem continuous_multilinear_map.zero_apply + structure continuous_multilinear_map 2020-02-04 14:32:21 9dbc894 feat(number_theory/bernoulli): Add definition of Bernoulli numbers (#1952) * Small start on generating functions * Playing with Bernoulli * Finished sum_bernoulli * Some updates after PRs * Analogue for mv_power_series * Cleanup after merged PRs * feat(number_theory/bernoulli): Add definition of Bernoulli numbers * Remove old file * Process comments ESTIMATED CHANGES Added src/number_theory/bernoulli.lean + def bernoulli + theorem bernoulli_def' + theorem bernoulli_def + theorem bernoulli_four + theorem bernoulli_one + theorem bernoulli_three + theorem bernoulli_two + theorem bernoulli_zero + theorem sum_bernoulli 2020-02-04 12:42:22 c5febb5 feat(tactic/lint): Three new linters, update illegal_constants (#1947) * add three new linters * fix failing declarations * restrict and rename illegal_constants linter * update doc * update ge_or_gt test * update mk_nolint * fix error * Update scripts/mk_nolint.lean Co-Authored-By: Rob Lewis * Update src/meta/expr.lean Co-Authored-By: Rob Lewis * clarify unfolds_to_class * fix names since name is no longer protected also change one declaration back to instance, since it did not cause a linter failure * fix errors, move notes to docstrings * add comments to docstring * update mk_all.sh * fix linter errors ESTIMATED CHANGES Modified docs/commands.md Modified scripts/mk_all.sh Modified scripts/mk_nolint.lean Modified src/algebra/lie_algebra.lean + def lie_subalgebra_lie_algebra Modified src/category/monad/writer.lean Modified src/category_theory/adjunction/limits.lean + def category_theory.adjunction.left_adjoint_preserves_colimits + def category_theory.adjunction.right_adjoint_preserves_limits Modified src/category_theory/concrete_category/bundled_hom.lean Modified src/data/list/defs.lean + def list.indexes_values + def list.indexes_values_aux + def list.is_nil Modified src/meta/expr.lean Modified src/order/filter/filter_product.lean Modified src/order/fixed_points.lean Modified src/order/pilex.lean Modified src/ring_theory/ideal_operations.lean Modified src/tactic/core.lean Modified src/tactic/lint.lean Modified src/topology/algebra/uniform_ring.lean Added test/expr.lean Modified test/lint.lean + theorem foo.bar + def incorrect_type_class_argument_test 2020-02-03 13:52:06 bfa7055 feat(ring_theory/power_series): several simp lemmas (#1945) * Small start on generating functions * Playing with Bernoulli * Finished sum_bernoulli * Some updates after PRs * Analogue for mv_power_series * Cleanup after merged PRs * feat(ring_theory/power_series): several simp lemmas * Remove file that shouldn't be there yet * Update src/ring_theory/power_series.lean Co-Authored-By: sgouezel * Generalise lemma to canonically_ordered_monoid * Update name * Fix build ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.add_eq_zero_iff Modified src/data/mv_polynomial.lean Modified src/data/polynomial.lean Modified src/ring_theory/power_series.lean + theorem mv_power_series.coeff_mul_C + theorem mv_power_series.coeff_zero_mul_X + theorem power_series.coeff_mul_C + theorem power_series.coeff_succ_mul_X + theorem power_series.coeff_zero_mul_X 2020-02-03 11:26:46 6264667 refactor(linear_algebra/multilinear): cleanup of multilinear maps (#1921) * staging [ci skip] * staging * staging * cleanup norms * complete currying * docstrings * docstrings * cleanup * nonterminal simp * golf * missing bits for derivatives * sub_apply * cleanup * better docstrings * remove two files * reviewer's comments * use fintype * line too long ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_update_of_mem + theorem finset.prod_update_of_not_mem + theorem finset.sum_update_of_mem Modified src/analysis/complex/basic.lean Modified src/analysis/normed_space/basic.lean + theorem norm_le_of_mem_closed_ball + theorem norm_le_pi_norm + theorem norm_lt_of_mem_ball Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean + def linear_map.mk_continuous + theorem linear_map.mk_continuous_apply + theorem linear_map.mk_continuous_coe + theorem linear_map.mk_continuous_norm_le + def linear_map.mk_continuous_of_exists_bound + theorem linear_map.mk_continuous_of_exists_bound_apply + theorem linear_map.mk_continuous_of_exists_bound_coe - def linear_map.with_bound - theorem linear_map_with_bound_apply - theorem linear_map_with_bound_coe Modified src/data/finset.lean + theorem finset.update_eq_piecewise Modified src/linear_algebra/multilinear.lean + theorem linear_map.curry_uncurry_left + def linear_map.uncurry_left + theorem linear_map.uncurry_left_apply + def multilinear_curry_left_equiv + def multilinear_curry_right_equiv + def multilinear_map.curry_left + theorem multilinear_map.curry_left_apply + def multilinear_map.curry_right + theorem multilinear_map.curry_right_apply + theorem multilinear_map.curry_uncurry_right - def multilinear_map.linear_to_multilinear_equiv_multilinear + theorem multilinear_map.mk_pi_ring_apply + theorem multilinear_map.mk_pi_ring_apply_one_eq_self - def multilinear_map.multilinear_to_linear_equiv_multilinear + theorem multilinear_map.uncurry_curry_left + theorem multilinear_map.uncurry_curry_right + def multilinear_map.uncurry_right + theorem multilinear_map.uncurry_right_apply Modified src/measure_theory/bochner_integration.lean Modified src/topology/constructions.lean + theorem continuous_update Modified src/topology/metric_space/basic.lean + theorem metric.continuous_at_iff Modified src/topology/metric_space/lipschitz.lean + theorem continuous_at_of_locally_lipschitz 2020-02-03 09:55:20 59629da chore(*): rename `filter.inhabited_of_mem_sets` to `nonempty_of_mem_sets` (#1943) In other names `inhabited` means that we have a `default` element. ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/order/filter/bases.lean Modified src/order/filter/basic.lean - theorem filter.inhabited_of_mem_sets + theorem filter.nonempty_of_mem_sets Modified src/order/liminf_limsup.lean Modified src/topology/algebra/ordered.lean Modified src/topology/dense_embedding.lean Modified src/topology/metric_space/basic.lean Modified src/topology/order.lean Modified src/topology/uniform_space/cauchy.lean +/- def sequentially_complete.seq Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-02-03 07:14:34 a342132 refactor(topology/metric_space/emetric_space): redefine `diam` (#1941) * feat(data/set/basic): define `set.subsingleton` Also rename `nonempty.of_subset` to `nonempty.mono` * Add a missing lemma * refactor(topology/metric_space/emetric_space): redefine `diam` * Give a more readable definition of `emetric.diam`; * Add a few lemmas including diameter of a pair and of a triple of points; * Simplify some proofs; * Reformulate some theorems to use `∀ (x ∈ s) (y ∈ s)` instead of `∀ x y ∈ s` because the former plays better with existing `simp` lemmas. * Redefine `set.subsingleton` using `(x ∈ s) (y ∈ s)`, prove `metric.diam_triangle` ESTIMATED CHANGES Modified src/analysis/convex/topology.lean Modified src/data/real/ennreal.lean + theorem ennreal.add_ne_top + theorem ennreal.max_zero_left + theorem ennreal.max_zero_right + theorem ennreal.of_real_to_real_le + theorem ennreal.sup_eq_max + theorem ennreal.to_real_add_le + theorem ennreal.to_real_le_of_le_of_real + theorem ennreal.to_real_max Modified src/data/set/basic.lean + theorem set.subsingleton.mono +/- theorem set.subsingleton_empty Modified src/order/bounded_lattice.lean + theorem lattice.ne_top_of_le_ne_top Modified src/topology/metric_space/basic.lean + theorem edist_lt_top + theorem metric.bounded.ediam_ne_top - theorem metric.bounded_iff_diam_ne_top + theorem metric.bounded_iff_ediam_ne_top +/- theorem metric.diam_le_of_forall_dist_le + theorem metric.diam_le_of_forall_dist_le_of_nonempty +/- theorem metric.diam_nonneg + theorem metric.diam_pair + theorem metric.diam_subsingleton + theorem metric.diam_triple + theorem metric.dist_le_diam_of_mem' + theorem metric.ediam_le_of_forall_dist_le Modified src/topology/metric_space/emetric_space.lean +/- def emetric.diam + theorem emetric.diam_eq_zero_iff + theorem emetric.diam_insert + theorem emetric.diam_le_iff_forall_edist_le +/- theorem emetric.diam_le_of_forall_edist_le + theorem emetric.diam_pair + theorem emetric.diam_pos_iff + theorem emetric.diam_subsingleton + theorem emetric.diam_triple Modified src/topology/metric_space/isometry.lean Modified src/topology/metric_space/lipschitz.lean 2020-02-02 12:18:31 1843bfc feat(algebra/pointwise): pointwise scalar-multiplication lemmas (#1925) * feat(algebra/pointwise): more lemmas about scaling sets - rename `smul_set` to `scale_set` for disambiguation - define `scale_set_action`, which subsumes `one_smul_set` - additional lemmas lemmas * fix(analysis/convex): refactor proofs for `scale_set` * feat(algebra/pointwise): re-organise file - subsume `pointwise_mul_action` * feat(algebra/pointwise): remove `pointwise_mul_action` - subsumed by `smul_set_action` with left-regular action. ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem mem_inv_smul_set_iff + theorem mem_smul_set_iff_inv_smul_mem +/- theorem set.mem_smul_set - theorem set.one_smul_set - def set.pointwise_mul_action + theorem set.smul_mem_smul_set + def set.smul_set_action + theorem set.smul_set_empty +/- theorem set.smul_set_eq_image + theorem set.smul_set_mono + theorem set.smul_set_union Modified src/analysis/convex/basic.lean Modified src/analysis/convex/topology.lean 2020-02-02 10:49:49 58899d4 feat(data/set/basic): define `set.subsingleton` (#1939) * feat(data/set/basic): define `set.subsingleton` Also rename `nonempty.of_subset` to `nonempty.mono` * Add a missing lemma ESTIMATED CHANGES Modified src/data/finset.lean Modified src/data/set/basic.lean + theorem set.bex_insert_iff + theorem set.eq_empty_or_nonempty + theorem set.image_pair + theorem set.nonempty.image + theorem set.nonempty.mono + theorem set.nonempty.of_image - theorem set.nonempty.of_ssubset' - theorem set.nonempty.of_subset - theorem set.nonempty_image + theorem set.nonempty_image_iff + theorem set.nonempty_of_ssubset' + theorem set.subset_diff_union - theorem set.subset_insert_diff + theorem set.subsingleton.eq_empty_or_singleton + theorem set.subsingleton.eq_singleton_of_mem + theorem set.subsingleton.image + theorem set.subsingleton_empty + theorem set.subsingleton_singleton Modified src/order/filter/bases.lean 2020-02-02 01:12:16 bacd4da chore(data/subtype): fix `∀` vs `Π` (#1940) ESTIMATED CHANGES Modified src/data/subtype.lean +/- def subtype.restrict +/- theorem subtype.restrict_apply 2020-02-01 23:40:10 11b9497 feat(data/fintype): range_prod_eq_univ_prod (#1937) * feat(algebra/big_operators): range_prod_eq_univ_prod * fix build, part 1 * fix build, part 2 * fix build, part 3 * Fix build, part 4 ESTIMATED CHANGES Modified src/data/fintype.lean + theorem finset.range_prod_eq_univ_prod 2020-02-01 18:15:45 6e6e6da feat(data/nat/basic): two identities for `choose` (#1936) * feat(data/nat/basic): two identities for `choose` * fix build ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.choose_mul_succ_eq + theorem nat.choose_succ_self_right 2020-02-01 16:26:13 a500c24 Update units.lean (#1938) ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem units.coe_mk_of_mul_eq_one 2020-02-01 10:59:44 50bbb8d fix(data/nat/basic): make arguments to `choose_succ_right_eq` explicit (#1935) ESTIMATED CHANGES Modified src/data/nat/basic.lean +/- theorem nat.choose_succ_right_eq 2020-01-31 17:07:56 5ce0c0a feat(linear_algebra/matrix): Add proof that trace AB = trace BA, for matrices. (#1913) * feat(linear_algebra/matrix): trace AB = trace BA * Remove now-redundant matrix.smul_sum In a striking coincidence, https://github.com/leanprover-community/mathlib/pull/1910 was merged almost immediately before https://github.com/leanprover-community/mathlib/pull/1883 thus rendering matrix.smul_sum redundant. * Make arguments explicit for matrix.trace, matrix.diag * Tidy up whitespace * Remove now-redundant type ascriptions * Update src/linear_algebra/matrix.lean Co-Authored-By: Johan Commelin * Feedback from code review * Generalize diag_transpose, trace_transpose. With apologies to the CI for triggering another build :-/ * Explicit arguments trace, diag defs but not lemmas ESTIMATED CHANGES Modified src/linear_algebra/matrix.lean +/- def matrix.diag + theorem matrix.diag_transpose +/- def matrix.trace + theorem matrix.trace_mul_comm + theorem matrix.trace_transpose + theorem matrix.trace_transpose_mul 2020-01-31 14:13:56+01:00 ddba2ae chore(scripts/nolints): regenerate ESTIMATED CHANGES Modified scripts/nolints.txt 2020-01-31 12:11:16 a8ba81b feat(analysis/convex): define convex hull (#1915) * feat(analysis/convex): define convex hull fixes #1851 * Fix compile * Drop an unused argument * Split line * Rename some `_iff`s, drop others * Mention `std_simplex` in the docs * More docs * Rename `α` to `ι`, other small fixes * Use `range` instead of `f '' univ` * More docs ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_sum_elim Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/convex/basic.lean +/- theorem convex.add +/- theorem convex.affinity +/- theorem convex.center_mass_mem - theorem convex.closure + theorem convex.convex_hull_eq +/- theorem convex.inter - theorem convex.interior +/- theorem convex.is_linear_image +/- theorem convex.is_linear_preimage +/- theorem convex.linear_image +/- theorem convex.linear_preimage +/- theorem convex.neg +/- theorem convex.neg_preimage +/- theorem convex.prod + theorem convex.segment_subset +/- theorem convex.smul +/- theorem convex.smul_preimage +/- theorem convex.sub +/- theorem convex.sum_mem +/- theorem convex.translate +/- def convex +/- theorem convex_Inter - theorem convex_ball - theorem convex_closed_ball + theorem convex_convex_hull +/- theorem convex_empty +/- theorem convex_halfspace_ge +/- theorem convex_halfspace_gt +/- theorem convex_halfspace_le +/- theorem convex_halfspace_lt + def convex_hull + theorem convex_hull_basis_eq_std_simplex + theorem convex_hull_eq + theorem convex_hull_min + theorem convex_hull_mono +/- theorem convex_hyperplane - theorem convex_iff: + theorem convex_iff_pointwise_add_subset: + theorem convex_iff_segment_subset - theorem convex_iff₂: - theorem convex_iff₃: +/- theorem convex_on.add +/- theorem convex_on.convex_epigraph +/- theorem convex_on.convex_le +/- theorem convex_on.convex_lt + theorem convex_on.exists_ge_of_center_mass + theorem convex_on.exists_ge_of_mem_convex_hull - theorem convex_on.le_on_interval + theorem convex_on.le_on_segment' + theorem convex_on.le_on_segment +/- theorem convex_on.map_center_mass_le +/- theorem convex_on.map_sum_le +/- theorem convex_on.smul +/- theorem convex_on.subset +/- def convex_on - theorem convex_on_dist - theorem convex_on_iff +/- theorem convex_on_iff_convex_epigraph +/- theorem convex_on_real_of_slope_mono_adjacent +/- theorem convex_real_iff +/- theorem convex_sInter +/- theorem convex_segment - theorem convex_segment_iff +/- theorem convex_singleton + theorem convex_std_simplex +/- theorem convex_univ +/- theorem finset.center_mass_empty + theorem finset.center_mass_eq_of_sum_1 + theorem finset.center_mass_filter_ne_zero +/- theorem finset.center_mass_insert + theorem finset.center_mass_ite_eq + theorem finset.center_mass_mem_convex_hull +/- theorem finset.center_mass_pair + theorem finset.center_mass_segment' + theorem finset.center_mass_segment +/- theorem finset.center_mass_singleton + theorem finset.center_mass_smul + theorem finset.center_mass_subset + theorem is_linear_map.convex_hull_image + theorem is_linear_map.image_convex_hull + theorem ite_eq_mem_std_simplex +/- theorem left_mem_segment + theorem linear_map.convex_hull_image + theorem linear_map.image_convex_hull +/- theorem linear_order.convex_on_of_lt + theorem mem_Icc_of_mem_std_simplex - theorem mem_segment_iff' - theorem mem_segment_iff + theorem mem_segment_translate +/- theorem right_mem_segment +/- def segment +/- theorem segment_eq_Icc' + theorem segment_eq_image' + theorem segment_eq_image - theorem segment_eq_image_Icc_zero_one' - theorem segment_eq_image_Icc_zero_one + theorem segment_eq_image₂ + theorem segment_same +/- theorem segment_symm - theorem segment_translate +/- theorem segment_translate_image +/- theorem segment_translate_preimage + theorem set.finite.convex_hull_eq + theorem set.finite.convex_hull_eq_image + def std_simplex + theorem std_simplex_eq_inter +/- theorem submodule.convex + theorem subset_convex_hull +/- theorem subspace.convex Added src/analysis/convex/topology.lean + theorem bounded_convex_hull + theorem bounded_std_simplex + theorem compact_std_simplex + theorem convex.closure + theorem convex.interior + theorem convex_ball + theorem convex_closed_ball + theorem convex_hull_diam + theorem convex_hull_ediam + theorem convex_hull_exists_dist_ge2 + theorem convex_hull_exists_dist_ge + theorem convex_on_dist + theorem is_closed_std_simplex + theorem set.finite.compact_convex_hull + theorem set.finite.is_closed_convex_hull + theorem std_simplex_subset_closed_ball Modified src/analysis/normed_space/finite_dimension.lean +/- theorem linear_map.continuous_of_finite_dimensional +/- def linear_map.to_continuous_linear_map Modified src/analysis/normed_space/real_inner_product.lean Modified src/data/finset.lean + theorem finset.filter_mem_eq_inter + theorem finset.union_inter_cancel_left + theorem finset.union_inter_cancel_right Modified src/data/real/nnreal.lean + theorem nnreal.div_one + theorem nnreal.div_self Modified src/geometry/manifold/real_instances.lean Modified src/group_theory/group_action.lean + theorem ite_smul + theorem smul_ite Modified src/measure_theory/outer_measure.lean Modified src/topology/algebra/monoid.lean 2020-01-30 15:28:23-08:00 cae9cc9 chore(ci): remove unused olean-rs setup from build (#1932) ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-01-30 18:49:20 80f5bd5 feat(ci): build and push html documentation (#1927) * feat(ci): build and push html doc generation * fix(scripts/deploy_docs): change from temporary doc repo * chore(ci): re-enable check for deployment * fix git add * Update scripts/deploy_docs.sh Co-Authored-By: Gabriel Ebner * Update .github/workflows/build.yml Co-Authored-By: Gabriel Ebner * Update scripts/deploy_docs.sh Co-Authored-By: Gabriel Ebner * Update scripts/deploy_docs.sh Co-Authored-By: Gabriel Ebner * remove chmod line * revert additional check for testing purposes * is this the error? Try a test build before I get to the office * rmeove _test * reapply author attribution change * revert change for testing * missing -- * revert email and name config ESTIMATED CHANGES Modified .github/workflows/build.yml Added scripts/deploy_docs.sh 2020-01-30 17:24:56 4c2d678 fix(data/set/finite): finite.fintype is a def (#1931) ESTIMATED CHANGES Modified src/data/set/finite.lean 2020-01-30 15:16:25 b7e5f75 fix(tactic/scc): detect Props (#1930) * fix(tactic/scc): detect Props * test(test/tactics): add test ESTIMATED CHANGES Modified src/tactic/scc.lean Modified test/tactics.lean 2020-01-30 13:41:06 1bd23bf feat(tactic/use): apply exists_prop after use (#1882) * feat(tactic/use): apply exists_prop after use * change implementation ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/interactive.lean 2020-01-30 11:13:26 dcbc719 fix(tactic/squeeze): compatibility with `simp [<-...]` (#1923) * Add polyfills to `squeeze_simp` which should ensure compatibility with Lean 3.4 and 3.5 * Use `decode_simp_arg_list` so `squeeze_simp` doesn't have to pattern-match (Except of course for the polyfill `has_to_tactic_format simp_arg_type` instance...) * Reword comment for `erase_simp_args` ESTIMATED CHANGES Modified src/tactic/squeeze.lean 2020-01-30 08:20:49 9bc0178 fix(tactic/finish): fix one classical leak, document another (#1929) * fix(tactic/finish): fix one classical leak, document another * fix(src/tactic): deprecate intuitionistic versions in docstrings. Closes #1927. ESTIMATED CHANGES Modified src/tactic/finish.lean 2020-01-30 00:09:21 868333b feat(data/W): show finitely branching W types are encodable (#1817) * feat(data/equiv,data/fintype): an encodable fintype is equiv to a fin * feat(data/W): finitely branching W types are encodable * feat(archive/examples/prop_encodable): show a type of propositional formulas is encodable * fix(data/W): remove unused type class argument * fix(data/equiv): add two docstrings * fix(*): multiple fixes from code review ESTIMATED CHANGES Added archive/examples/prop_encodable.lean + def mk_fn0 + def mk_fn1 + def mk_fn2 + inductive prop_form Added src/data/W.lean + def W.depth + theorem W.depth_lt_depth_mk + theorem W.depth_pos + inductive W Modified src/data/equiv/encodable.lean + def encodable.encode' Modified src/data/equiv/list.lean + def encodable.fintype_equiv_fin + theorem encodable.length_sorted_univ + theorem encodable.mem_sorted_univ + def encodable.sorted_univ + theorem encodable.sorted_univ_nodup Modified src/data/fintype.lean + def fintype.equiv_fin_of_forall_mem_list Modified src/order/basic.lean 2020-01-29 18:36:33 4ac87ab chore(category_theory): use the new @[ext] attribute on structures (#1663) * chore(category_theory): use the new @[ext] attribute on structures * fixes * unnecessary repeated exts ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/comma.lean - theorem category_theory.comma_morphism.ext +/- structure category_theory.comma_morphism Modified src/category_theory/limits/cones.lean - theorem category_theory.limits.cocone_morphism.ext +/- structure category_theory.limits.cocone_morphism - theorem category_theory.limits.cone_morphism.ext +/- structure category_theory.limits.cone_morphism Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/monad/algebra.lean - theorem category_theory.monad.algebra.hom.ext +/- structure category_theory.monad.algebra.hom Modified src/category_theory/natural_transformation.lean - theorem category_theory.nat_trans.ext +/- structure category_theory.nat_trans Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean 2020-01-29 17:00:12 4aa3eee chore(*): add inhabited instances (#1898) * chore(*): add inhabited instances * Fix linting errors. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/associated.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/continued_fractions/basic.lean + def continued_fraction.of_integer + def generalized_continued_fraction.of_integer + def simple_continued_fraction.of_integer Modified src/algebra/direct_sum.lean Modified src/algebra/free.lean Modified src/algebra/group/free_monoid.lean - theorem free_add_monoid.add_def - theorem free_add_monoid.zero_def - def free_add_monoid +/- theorem free_monoid.mul_def +/- theorem free_monoid.one_def Modified src/algebra/group/hom.lean Modified src/algebra/group/to_additive.lean Modified src/algebra/group/type_tags.lean Modified src/algebra/group/units.lean Modified src/algebra/group/with_one.lean Modified src/algebra/module.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/basic.lean +/- structure normed_group.core Modified src/category/fold.lean Modified src/category_theory/category/Groupoid.lean Modified src/category_theory/category/Rel.lean Modified src/category_theory/discrete_category.lean Modified src/computability/partrec_code.lean Modified src/computability/turing_machine.lean Modified src/data/buffer/basic.lean Modified src/data/dlist/instances.lean Modified src/data/equiv/algebra.lean Modified src/data/finmap.lean Modified src/data/fp/basic.lean Modified src/data/hash_map.lean Modified src/data/lazy_list2.lean - def lazy_list.thunk.mk + def thunk.mk Modified src/data/list/alist.lean + theorem alist.ext_iff Modified src/data/matrix/basic.lean Modified src/data/mv_polynomial.lean Modified src/data/nat/enat.lean Modified src/data/nat/prime.lean Modified src/data/num/basic.lean Modified src/data/opposite.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pfun.lean Modified src/data/pnat/basic.lean Modified src/data/pnat/factors.lean Modified src/data/pnat/xgcd.lean Modified src/data/polynomial.lean Modified src/data/quot.lean Modified src/data/real/cau_seq.lean Modified src/data/rel.lean Modified src/data/semiquot.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/seq/wseq.lean Modified src/data/stream/basic.lean Modified src/data/tree.lean Modified src/data/zmod/basic.lean Modified src/data/zsqrtd/basic.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/perfect_closure.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/congruence.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean Modified src/group_theory/monoid_localization.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/multilinear.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/linear_algebra/tensor_product.lean Modified src/logic/basic.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean Modified src/measure_theory/measurable_space.lean Modified src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/order/bounded_lattice.lean Modified src/order/filter/basic.lean Modified src/order/filter/filter_product.lean Modified src/order/lexicographic.lean Modified src/order/pilex.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/free_ring.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/maps.lean Modified src/ring_theory/power_series.lean Modified src/set_theory/game.lean Modified src/set_theory/lists.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/pgame.lean Modified src/set_theory/surreal.lean Modified src/set_theory/zfc.lean + def arity.const + theorem pSet.arity.equiv_const Modified src/tactic/abel.lean Modified src/tactic/core.lean Added src/tactic/derive_inhabited.lean Modified src/tactic/explode.lean Modified src/tactic/finish.lean Modified src/tactic/linarith.lean Modified src/tactic/lint.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/find_ees.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/omega/term.lean Modified src/tactic/rewrite_all/basic.lean Modified src/tactic/ring.lean Modified src/tactic/ring2.lean Modified src/tactic/ring_exp.lean Modified src/tactic/suggest.lean Modified src/tactic/tfae.lean +/- inductive tactic.tfae.arrow Modified src/topology/algebra/module.lean Modified src/topology/compact_open.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/opens.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/compare_reals.lean +/- def compare_reals.Q Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean 2020-01-28 21:32:29+01:00 b368312 fix(ci): set GITHUB_TOKEN environment variable for gothub (#1920) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-01-28 20:04:21+01:00 99962ad fix(ci): unshallow repo before pushing nightly tags (#1919) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-01-28 18:53:21 a948e31 chore(analysis/convex): move to `analysis/convex/basic` (#1918) ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Renamed src/analysis/convex.lean to src/analysis/convex/basic.lean Modified src/analysis/normed_space/real_inner_product.lean 2020-01-28 18:27:54+01:00 e36d7ec fix(ci): work around github hack ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-01-28 16:36:42+01:00 8e0d47a fix(ci): try again to fix authentication ESTIMATED CHANGES Modified .github/workflows/build.yml Modified scripts/deploy_nightly.sh 2020-01-28 14:09:28+01:00 75743ac fix(scripts/deploy_nightly.sh): try to fix CI (#1917) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-01-28 11:49:19 cafd193 chore(*): use filter.eventually (#1897) * chore(*): use filter.eventually * Update src/measure_theory/integration.lean Co-Authored-By: Yury G. Kudryashov * Fix closeds.complete_space. * Fix tendsto_integral_of_dominated_convergence * Fix tendsto_exp_at_top * Fix exists_norm_eq_infi_of_complete_convex * Use obtain. * Use filter.eventually_of_forall ESTIMATED CHANGES Modified src/analysis/asymptotics.lean +/- theorem asymptotics.is_O_zero_right_iff Modified src/analysis/calculus/deriv.lean +/- theorem deriv_congr_of_mem_nhds Modified src/analysis/calculus/fderiv.lean +/- theorem fderiv_congr_of_mem_nhds Modified src/analysis/calculus/local_extr.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/data/real/hyperreal.lean Modified src/geometry/manifold/basic_smooth_bundle.lean Modified src/geometry/manifold/mfderiv.lean +/- theorem mfderiv_congr_of_mem_nhds Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.integral_congr Modified src/measure_theory/measure_space.lean +/- def measure_theory.all_ae Modified src/order/filter/basic.lean + theorem filter.eventually.exists_forall_of_at_top + theorem filter.eventually_Sup + theorem filter.eventually_at_top + theorem filter.eventually_bot + theorem filter.eventually_principal + theorem filter.eventually_sup + theorem filter.eventually_supr + theorem filter.eventually_top + theorem filter.frequently.forall_exists_of_at_top + theorem filter.frequently_Sup + theorem filter.frequently_at_top + theorem filter.frequently_bot + theorem filter.frequently_false + theorem filter.frequently_principal + theorem filter.frequently_sup + theorem filter.frequently_supr + theorem filter.frequently_top + theorem filter.frequently_true_iff_ne_bot + theorem filter.not_eventually + theorem filter.not_frequently +/- theorem filter.tendsto_principal Modified src/order/filter/extr.lean +/- def is_max_filter +/- def is_min_filter Modified src/order/filter/filter_product.lean +/- theorem filter.filter_product.of_seq_fun +/- theorem filter.filter_product.of_seq_fun₂ Modified src/order/liminf_limsup.lean +/- def filter.Liminf +/- theorem filter.Liminf_eq_supr_Inf +/- def filter.Limsup +/- theorem filter.Limsup_eq_infi_Sup +/- def filter.is_bounded +/- theorem filter.is_cobounded.mk +/- def filter.is_cobounded +/- theorem filter.liminf_eq +/- theorem filter.liminf_eq_supr_infi +/- theorem filter.limsup_eq +/- theorem filter.limsup_eq_infi_supr Modified src/topology/algebra/ordered.lean +/- theorem ge_mem_nhds +/- theorem gt_mem_nhds +/- theorem le_mem_nhds +/- theorem lt_mem_nhds Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/sequences.lean 2020-01-27 20:50:19 bba8473 feat(linear_algebra): Matrix inverses for square nonsingular matrices (#1816) * Prove that some matrices have inverses * Finish the proof: show that the determinant is 0 if a column is repeated * Show that nonsingular_inv is also a right inverse * Cleanup and code movement * Small lemmata on transpose * WIP: some work on inverse matrices * Code cleanup and documentation * More cleanup and documentation * Generalize det_zero_of_column_eq to remove the linear order assumption * Fix linting issues. * Unneeded import can be removed * A little bit more cleanup * Generalize nonsing_inv to any ring with inverse * Improve comments for `nonsingular_inverse` * Remove the less general `det_zero_of_column_eq_of_char_ne_two` proof * Rename `cramer_map_val` -> `cramer_map_def` Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * whitespace Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * whitespace: indent tactic proofs * More renaming `cramer_map_val` -> `cramer_map_def` * `swap_mul_self_mul` can be a `simp` lemma * Make parameter σ to `swap_mul_eq_iff` implicit * Update usage of `function.update_same` and `function.update_noteq` * Replace `det_permute` with `det_permutation` Although the statement now gives the determinant of a permutation matrix, the proof is easier if we write it as a permuted identity matrix. Thus the proof is basically the same, except a different line showing that the entries are the same. * Re-introduce `matrix.det_permute` (now based on `matrix.det_permutation`) * Delete `cramer_at` and clean up the proofs depending on it * Replace `cramer_map` with `cramer` after defining `cramer` * Apply suggestions from code review Co-Authored-By: sgouezel * Clean up imports * Formatting: move } to previous lines * Move assumptions of `det_zero_of_repeated_column` from variable to argument * whitespace Insert space between `finset.filter` and the filter condition. Co-Authored-By: sgouezel * Improve docstrings * Make argument to `prod_cancels_of_partition_cancels` explicit * Rename `replace_column` and `replace_row` to `update_column` and `update_row` * Replace `update_column_eq` with `update_column_self` + rewriting step * whitespace Newlines between all lemmas * whitespace Newline before 'begin' * Fix conflicts with latest mathlib * Remove unnecessary explicitification of arguments ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_cancels_of_partition_cancels + theorem finset.prod_ite_eq' +/- theorem finset.prod_ite_eq Modified src/data/finset.lean + theorem finset.filter_eq' Modified src/data/matrix/basic.lean + theorem matrix.transpose_one + theorem matrix.transpose_smul + theorem matrix.transpose_val Modified src/data/matrix/pequiv.lean + theorem pequiv.equiv_to_pequiv_to_matrix + theorem pequiv.to_pequiv_mul_matrix Modified src/data/pequiv.lean + theorem equiv.to_pequiv_apply Modified src/group_theory/perm/sign.lean + theorem equiv.perm.swap_mul_eq_iff + theorem equiv.perm.swap_mul_self_mul Modified src/linear_algebra/determinant.lean + theorem matrix.det_permutation + theorem matrix.det_permute + theorem matrix.det_transpose + theorem matrix.det_zero_of_column_eq + def matrix.mod_swap Added src/linear_algebra/nonsingular_inverse.lean + def matrix.adjugate + theorem matrix.adjugate_def + theorem matrix.adjugate_mul + theorem matrix.adjugate_transpose + theorem matrix.adjugate_val + def matrix.cramer + theorem matrix.cramer_apply + theorem matrix.cramer_column_self + theorem matrix.cramer_is_linear + def matrix.cramer_map + theorem matrix.cramer_map_is_linear + theorem matrix.mul_adjugate + theorem matrix.mul_adjugate_val + theorem matrix.mul_nonsing_inv + def matrix.nonsing_inv + theorem matrix.nonsing_inv_mul + theorem matrix.nonsing_inv_val + theorem matrix.sum_cramer + theorem matrix.sum_cramer_apply + theorem matrix.transpose_nonsing_inv + def matrix.update_column + theorem matrix.update_column_ne + theorem matrix.update_column_self + theorem matrix.update_column_transpose + theorem matrix.update_column_val + def matrix.update_row + theorem matrix.update_row_ne + theorem matrix.update_row_self + theorem matrix.update_row_val 2020-01-27 16:29:02 5f01591 fix(.github/workflows/build): set pipefail (#1911) Without `pipefail`, the shell command `false | cat` terminates successfully. ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-01-27 14:52:05 898cd70 fix(archive/cubing_a_cube): roof broken by #1903 (#1912) ESTIMATED CHANGES Modified archive/cubing_a_cube.lean +/- theorem nonempty_bcubes 2020-01-26 21:08:12 497e692 feat(linear_algebra/matrix): define the trace of a square matrix (#1883) * feat(linear_algebra/matrix): define the trace of a square matrix * Move ring carrier to correct universe * Add lemma trace_one, and define diag as linear map * Define diag and trace solely as linear functions * Diag and trace for module-valued matrices * Fix cyclic import * Rename matrix.mul_sum' --> matrix.smul_sum Co-Authored-By: Johan Commelin * Trigger CI ESTIMATED CHANGES Modified src/data/matrix/basic.lean Modified src/linear_algebra/matrix.lean + def matrix.diag + theorem matrix.diag_one + def matrix.trace + theorem matrix.trace_one Modified src/ring_theory/algebra.lean 2020-01-26 19:37:06 587b312 refactor(order/filter/basic): redefine `filter.pure` (#1889) * refactor(order/filter/basic): redefine `filter.pure` New definition has `s ∈ pure a` definitionally equal to `a ∈ s`. * Update src/order/filter/basic.lean Co-Authored-By: Gabriel Ebner * Minor fixes suggested by @gebner * Fix compile * Update src/order/filter/basic.lean ESTIMATED CHANGES Modified src/measure_theory/indicator_function.lean Modified src/order/filter/basic.lean + theorem filter.join_pure + theorem filter.le_pure_iff - theorem filter.mem_pure - theorem filter.mem_pure_iff +/- theorem filter.mem_pure_sets + theorem filter.pure_bind - theorem filter.pure_def + theorem filter.pure_eq_principal + theorem filter.pure_inj + theorem filter.pure_sets +/- theorem filter.tendsto_const_pure + theorem filter.tendsto_pure Modified src/topology/list.lean Modified src/topology/order.lean Modified src/topology/stone_cech.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean 2020-01-26 15:54:48 ce2e7a8 feat(linear_algebra/multilinear): image of sum (#1908) * staging * fix build * linting * staging * docstring ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_piecewise + theorem finset.prod_powerset_insert Modified src/data/finset.lean + theorem finset.empty_sdiff + theorem finset.insert_sdiff_of_mem + theorem finset.insert_sdiff_of_not_mem +/- theorem finset.lt_wf + theorem finset.ne_insert_of_not_mem + theorem finset.not_mem_of_mem_powerset_of_not_mem + def finset.piecewise + theorem finset.piecewise_coe + theorem finset.piecewise_empty + theorem finset.piecewise_eq_of_mem + theorem finset.piecewise_eq_of_not_mem + theorem finset.piecewise_insert + theorem finset.piecewise_insert_of_ne + theorem finset.piecewise_insert_self + theorem finset.powerset_empty + theorem finset.powerset_insert Modified src/data/fintype.lean + theorem finset.piecewise_univ Modified src/data/set/basic.lean - theorem set.insert_diff + theorem set.insert_diff_of_mem + theorem set.insert_diff_of_not_mem + theorem set.ne_insert_of_not_mem Modified src/data/set/function.lean + theorem set.piecewise_empty + theorem set.piecewise_eq_of_mem + theorem set.piecewise_eq_of_not_mem + theorem set.piecewise_insert + theorem set.piecewise_insert_of_ne + theorem set.piecewise_insert_self + theorem set.piecewise_univ Modified src/linear_algebra/multilinear.lean + theorem multilinear_map.map_add_univ + theorem multilinear_map.map_piecewise_add + theorem multilinear_map.map_piecewise_smul + theorem multilinear_map.map_smul_univ + theorem multilinear_map.map_sub Modified src/logic/function.lean + def set.piecewise 2020-01-26 13:49:29 ab155ef refactor(*): refactor `sum_smul`/`smul_sum` (#1910) * refactor(*): refactor `sum_smul`/`smul_sum` API changes: * Define both versions for `list, `multiset`, and `finset`; * new `finset.smul_sum` is the old `finset.smul_sum` or `_root_.sum_smul.symm`` * new `finset.sum_smul` is the old `finset.smul_sum'` * new `smul_smul` doesn't need a `Type` argument * some lemmas are generalized to a `semimodule` or a `distrib_mul_action` * Fix compile ESTIMATED CHANGES Modified src/algebra/module.lean +/- theorem finset.sum_smul + theorem list.sum_smul + theorem multiset.sum_smul + theorem nat.smul_def - theorem smul_smul Modified src/group_theory/group_action.lean + theorem finset.smul_sum + theorem list.smul_sum + theorem multiset.smul_sum + theorem smul_smul Modified src/linear_algebra/basic.lean - theorem finset.smul_sum' - theorem finset.smul_sum Modified src/linear_algebra/basis.lean Modified src/linear_algebra/tensor_product.lean Modified src/measure_theory/bochner_integration.lean Modified src/ring_theory/ideal_operations.lean 2020-01-26 03:58:09 2297d20 feat(tactic/clear): add clear' tactic (#1899) * feat(tactic/clear): add clear' tactic We add an improved version of the `clear` tactic. When clearing multiple hypotheses, `clear` can fail even though all hypotheses could be cleared. This happens when the hypotheses depend on each other and are given in the wrong order: ```lean example : ∀ {α : Type} {β : α → Type} (a : α) (b : β a), unit := begin intros α β a b, clear a b, -- fails exact () end ``` When `clear` tries to clear `a`, `b`, which depends on `a`, is still in the context, so the operation fails. We give a tactic `clear'` which recognises this and clears `b` before `a`. * refactor(tactic/clear): better implementation of clear' We refactor `clear'`, replacing the old implementation with one that is more concise and should be faster. The new implementation strategy also gives us a new variant of `clear`, `clear_dependent`, almost for free. `clear_dependent` works like `clear'`, but in addition to the given hypotheses, it also clears any other hypotheses which depend on them. * style(test/tactics, docs/tactics): less indentation * test(test/tactics): better tests for clear' and clear_dependent We make the tests for `clear'` and `clear_dependent` more meaningful: They now permit less illegal behaviours. * refactor(tactic/clear): simplify error message formatting ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Added src/tactic/clear.lean Modified test/tactics.lean 2020-01-26 01:12:21 9decec2 feat(*): some simple lemmas about sets and finite sets (#1903) * feat(*): some simple lemmas about sets and finite sets * More lemmas, simplify proofs * Introduce `finsup.nonempty` and use it. * Update src/algebra/big_operators.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Revert "Update src/algebra/big_operators.lean" This reverts commit 17c89a808545203dc5a80a4f11df4f62e949df8d. It breaks compile if we rewrite right to left. * simp, to_additive * Add a missing docstring ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.exists_le_of_sum_le +/- theorem finset.exists_ne_one_of_prod_ne_one + theorem finset.nonempty_of_prod_ne_one +/- theorem finset.prod_Ico_id_eq_fact + theorem finset.prod_filter_ne_one + theorem finset.sum_lt_sum Modified src/algebra/module.lean + theorem finset.exists_card_smul_ge_sum + theorem finset.exists_card_smul_le_sum +/- theorem finset.sum_const' Modified src/data/finset.lean +/- theorem finset.card_pos + theorem finset.coe_nonempty + theorem finset.eq_empty_or_nonempty - theorem finset.exists_mem_iff_ne_empty - theorem finset.exists_mem_of_ne_empty +/- theorem finset.exists_min +/- theorem finset.image_const +/- def finset.max' - theorem finset.max_of_ne_empty + theorem finset.max_of_nonempty +/- def finset.min' - theorem finset.min_of_ne_empty + theorem finset.min_of_nonempty + theorem finset.nonempty.bex + theorem finset.nonempty.image + theorem finset.nonempty.mono +/- theorem finset.nonempty_iff_ne_empty + theorem finset.nonempty_of_ne_empty Modified src/data/finsupp.lean +/- def finsupp.split_support Modified src/data/fintype.lean + theorem fin.prod_univ_succ + theorem fin.prod_univ_zero + theorem fin.sum_univ_succ + theorem fin.univ_succ Modified src/data/nat/totient.lean Modified src/data/set/finite.lean +/- theorem set.exists_min Modified src/data/set/lattice.lean + theorem set.Inter_subset_Inter2 + theorem set.Inter_subset_Inter + theorem set.Inter_subset_of_subset +/- theorem set.Union_subset_iff +/- theorem set.mem_Inter_of_mem +/- theorem set.subset_Inter Modified src/group_theory/order_of_element.lean 2020-01-25 23:45:34 d3e5621 feat(data/real/ereal): add `ereal` := [-oo,oo] (#1703) * feat(data/real/ereal): add `ereal` := [-oo,oo] * some updates * some cleanup in ereal * move pattern attribute * works * more docstring * don't understand why this file was broken * more tidyup * deducing complete lattice from type class inference * another neg theorem * adding some module doc * tinkering * deriving addition ESTIMATED CHANGES Added src/data/real/ereal.lean + theorem ereal.le_neg_of_le_neg + theorem ereal.neg_eq_iff_neg_eq + theorem ereal.neg_inj + def ereal Modified src/order/bounded_lattice.lean 2020-01-25 21:18:30 d4aa088 fix(scripts/deploy_nightly): fill in blank env vars (#1909) * fix(scripts/deploy_nightly): fill in blank env vars * fix: LEAN_VERSION="lean-3.4.2" ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-01-25 14:01:56 7077242 doc (analysis/normed_space/operator_norm): cleanup (#1906) * doc (analysis/normed_space/operator_norm): cleanup * typo ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean 2020-01-25 12:31:17 8c9a15e feat(topology/instances/ennreal): continuity of multiplication by const (#1905) * feat(topology/instances/ennreal): continuity of multiplication by const * Fix compile ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/closeds.lean 2020-01-25 10:51:17 20f153a fix(scripts/deploy_nightly): token is now just the PAT, need to add user (#1907) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2020-01-25 08:42:04 3bbf8eb feat(data/real/nnreal): a few lemmas about subtraction (#1904) ESTIMATED CHANGES Modified src/data/real/nnreal.lean +/- theorem nnreal.sub_eq_zero + theorem nnreal.sub_le_self + theorem nnreal.sub_self + theorem nnreal.sub_sub_cancel_of_le + theorem nnreal.sub_zero 2020-01-24 23:34:43 3b9ee8e doc(geometry/manifold): fix markdown (#1901) * doc(geometry/manifold): fix markdown * Update src/geometry/manifold/manifold.lean * Update src/geometry/manifold/manifold.lean * Update src/geometry/manifold/manifold.lean * Update src/geometry/manifold/manifold.lean ESTIMATED CHANGES Modified src/geometry/manifold/manifold.lean 2020-01-24 21:56:45+01:00 d075695 fix(build): typo in deploy_nightly script name (#1902) ESTIMATED CHANGES Modified .github/workflows/build.yml 2020-01-24 20:01:58+01:00 2db02b8 feat(.github): switch to github actions for ci (#1893) ESTIMATED CHANGES Added .github/workflows/build.yml Modified .mergify.yml Deleted .travis.yml Modified README.md Deleted purge_olean.sh Modified scripts/deploy_nightly.sh Deleted travis_long.sh 2020-01-24 12:07:12 601d5b1 feat(tactic/simp_rw): add `simp_rw` tactic, a mix of `simp` and `rw` (#1900) * add `simp_rw` tactic that is a mix of `simp` and `rw` * Style fixes * Module documentation for the file `tactic/simp_rw.lean` * Apply suggestions to improve documentation of `simp_rw` * Documentation and tests for `simp_rw [...] at ...` ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/default.lean Added src/tactic/simp_rw.lean Added test/simp_rw.lean Modified test/tactics.lean 2020-01-24 09:09:29 69099f0 feat(order/filter/bases): define `filter.has_basis` (#1896) * feat(*): assorted simple lemmas, simplify some proofs * feat(order/filter/bases): define `filter.has_basis` * Add `@[nolint]` * +1 lemma, +1 simplified proof * Remove whitespaces Co-Authored-By: sgouezel * Ref. note nolint_ge ESTIMATED CHANGES Added src/order/filter/bases.lean + theorem filter.at_top_basis' + theorem filter.at_top_basis + theorem filter.basis_sets + theorem filter.has_basis.comap + theorem filter.has_basis.eq_binfi + theorem filter.has_basis.eq_infi + theorem filter.has_basis.forall_nonempty_iff_ne_bot + theorem filter.has_basis.ge_iff + theorem filter.has_basis.inf + theorem filter.has_basis.inf_principal + theorem filter.has_basis.le_basis_iff + theorem filter.has_basis.le_iff + theorem filter.has_basis.map + theorem filter.has_basis.mem_iff + theorem filter.has_basis.mem_of_mem + theorem filter.has_basis.mem_of_superset + theorem filter.has_basis.prod + theorem filter.has_basis.prod_self + theorem filter.has_basis.tendsto_iff + theorem filter.has_basis.tendsto_left_iff + theorem filter.has_basis.tendsto_right_iff + theorem filter.has_basis_binfi_principal + theorem filter.has_basis_infi_principal + theorem filter.tendsto.basis_both + theorem filter.tendsto.basis_left + theorem filter.tendsto.basis_right 2020-01-24 00:47:07 aad853b docs(data/mv_polynomial): add module docstring [ci skip] (#1892) * adding docstring * fix markdown Co-Authored-By: Gabriel Ebner * fix markdown Co-Authored-By: Gabriel Ebner * variables have type sigma Co-Authored-By: Gabriel Ebner * don't tell the reader about the interface Co-Authored-By: Gabriel Ebner * consistent conventions for monomial Co-Authored-By: Gabriel Ebner * variables are terms of type sigma Co-Authored-By: Gabriel Ebner * Update src/data/mv_polynomial.lean Co-Authored-By: Gabriel Ebner * Update src/data/mv_polynomial.lean Co-Authored-By: Gabriel Ebner * version 2 * one last tinker * removing $ signs * next attempt * Update src/data/mv_polynomial.lean * Update src/data/mv_polynomial.lean * Update src/data/mv_polynomial.lean ESTIMATED CHANGES Modified src/data/mv_polynomial.lean 2020-01-22 20:10:27 b686bc2 feat(algebra/lie_algebra): define Lie subalgebras, morphisms, modules, submodules, quotients (#1835) * feat(algebra/lie_algebra): define Lie subalgebras, morphisms, modules, submodules, quotients * Code review: colons at end of line * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Catch up after GH commits from code review * Remove accidentally-included '#lint' * Rename: lie_subalgebra.bracket --> lie_subalgebra.lie_mem * Lie ideals are subalgebras * Add missing doc string * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Allow quotients of lie_modules by lie_submodules (part 1) The missing piece is the construction of a lie_module structure on the quotient by a lie_submodule, i.e.,: `instance lie_quotient_lie_module : lie_module R L N.quotient := ...` I will add this in due course. * Code review: minor fixes * New lie_module approach based on add_action, linear_action * Remove add_action by merging into linear_action. I would prefer to keep add_action, and especially like to keep the feature that linear_action extends has_scalar, but unfortunately this is not possible with the current typeclass resolution algorithm since we should never extend a class with fewer carrier types. * Add missing doc string * Simplify Lie algebra adjoing action definitions * whitespace tweaks * Remove redundant explicit type * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Catch up after rename bracket --> map_lie in morphism * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/linear_action.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/algebra/lie_algebra.lean + theorem lie_act +/- def lie_algebra.Ad - def lie_algebra.bil_lie + theorem lie_algebra.endo_algebra_bracket + theorem lie_algebra.map_lie + structure lie_algebra.morphism - def lie_algebra.of_endomorphism_algebra + def lie_ideal + def lie_ideal_subalgebra + theorem lie_mem_left + theorem lie_mem_right + def lie_module.of_endo_morphism + structure lie_subalgebra + theorem lie_submodule.quotient.is_quotient_mk + def lie_submodule.quotient.mk + theorem lie_submodule.quotient.mk_bracket + def lie_submodule.quotient + structure lie_submodule Added src/linear_algebra/linear_action.lean + def linear_action.of_endo_map + def linear_action.to_endo_map + theorem linear_action_act_add + theorem linear_action_act_smul + theorem linear_action_add_act + theorem linear_action_smul_act + theorem linear_action_zero + theorem zero_linear_action 2020-01-22 00:57:34 96ee2a6 feat(order/filter/basic): prove `@cofinite ℕ = at_top` (#1888) * feat(order/filter/basic): prove `@cofinite ℕ = at_top` Also generalize `not_injective_(nat/int)_fintype`, and use `[infinite α]` instead of `set.infinite (@univ α)` as an argument. * Update src/data/equiv/basic.lean Co-Authored-By: Gabriel Ebner * Drop a duplicate definition, thanks @ChrisHughes24 ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/data/fintype.lean + theorem not_injective_infinite_fintype + theorem not_surjective_fintype_infinite Modified src/data/real/hyperreal.lean Modified src/data/set/finite.lean + theorem set.infinite_univ + theorem set.infinite_univ_iff - theorem set.infinite_univ_nat - theorem set.not_injective_int_fintype - theorem set.not_injective_nat_fintype Modified src/group_theory/order_of_element.lean Modified src/order/filter/basic.lean +/- theorem filter.cofinite_ne_bot +/- theorem filter.compl_mem_hyperfilter_of_finite + theorem filter.frequently_cofinite_iff_infinite +/- theorem filter.hyperfilter_le_cofinite +/- theorem filter.is_ultrafilter_hyperfilter + theorem filter.mem_cofinite +/- theorem filter.mem_hyperfilter_of_finite_compl +/- theorem filter.nmem_hyperfilter_of_finite + theorem nat.cofinite_eq_at_top + theorem set.infinite_iff_frequently_cofinite 2020-01-21 21:29:04 aa6cc06 feat(measure_theory/set_integral): integrals over subsets (#1875) * feat(measure_theory/set_integral): integral on a set * mismached variables * move if_preimage * Update src/measure_theory/l1_space.lean Co-Authored-By: Yury G. Kudryashov * Small fixes * Put indicator_function into data folder * Use antimono as names * Change name to antimono * Fix everything * Use binder notation for integrals * delete an extra space * Update set_integral.lean * adjust implicit and explicit variables * measurable_on_singleton * prove integral_on_Union * Update indicator_function.lean * Update set_integral.lean * lint * Update bochner_integration.lean * reviewer's comment * use Yury's proof ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.bUnion_insert + theorem finset.bUnion_singleton + theorem finset.bUnion_union + theorem finset.supr_union Added src/data/indicator_function.lean + def set.indicator + theorem set.indicator_add + theorem set.indicator_compl + theorem set.indicator_congr + theorem set.indicator_empty + theorem set.indicator_finset_bUnion + theorem set.indicator_finset_sum + theorem set.indicator_indicator + theorem set.indicator_le_indicator + theorem set.indicator_le_indicator_of_subset + theorem set.indicator_neg + theorem set.indicator_of_mem + theorem set.indicator_of_not_mem + theorem set.indicator_preimage + theorem set.indicator_smul + theorem set.indicator_sub + theorem set.indicator_union_of_disjoint + theorem set.indicator_union_of_not_mem_inter + theorem set.indicator_univ + theorem set.indicator_zero Modified src/data/set/basic.lean + theorem set.if_preimage Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_div + theorem measure_theory.integral_finset_sum + theorem measure_theory.integral_le_integral + theorem measure_theory.integral_le_integral_ae - theorem measure_theory.integral_le_integral_of_le_ae + theorem measure_theory.integral_mul_left + theorem measure_theory.integral_mul_right +/- theorem measure_theory.integral_neg +/- theorem measure_theory.integral_non_integrable +/- theorem measure_theory.integral_non_measurable +/- theorem measure_theory.integral_nonneg_of_nonneg_ae +/- theorem measure_theory.integral_nonpos_of_nonpos_ae +/- theorem measure_theory.integral_smul +/- theorem measure_theory.integral_undef +/- theorem measure_theory.integral_zero +/- theorem measure_theory.l1.simple_func.of_simple_func_zero +/- theorem measure_theory.norm_integral_le_integral_norm Modified src/measure_theory/borel_space.lean + theorem is_measurable_Icc + theorem is_measurable_Ici +/- theorem is_measurable_Ico + theorem is_measurable_Iic + theorem is_measurable_Ioc + theorem is_measurable_Ioi Added src/measure_theory/indicator_function.lean + theorem indicator_congr_ae + theorem indicator_congr_of_set + theorem indicator_le_indicator_ae + theorem indicator_norm_le_norm_self + theorem indicator_union_ae + theorem norm_indicator_eq_indicator_norm + theorem norm_indicator_le_norm_self + theorem norm_indicator_le_of_subset + theorem tendsto_indicator_bUnion_finset + theorem tendsto_indicator_of_antimono + theorem tendsto_indicator_of_monotone Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.integrable.add +/- theorem measure_theory.integrable.neg +/- theorem measure_theory.integrable.smul +/- theorem measure_theory.integrable.sub + theorem measure_theory.integrable_congr_ae + theorem measure_theory.integrable_finset_sum - theorem measure_theory.integrable_iff_of_ae_eq +/- theorem measure_theory.integrable_neg_iff + theorem measure_theory.integrable_of_le +/- theorem measure_theory.integrable_smul_iff +/- theorem measure_theory.integrable_zero +/- theorem measure_theory.l1.of_fun_zero Added src/measure_theory/set_integral.lean + theorem integrable_on.add + theorem integrable_on.divide + theorem integrable_on.mul_left + theorem integrable_on.mul_right + theorem integrable_on.neg + theorem integrable_on.smul + theorem integrable_on.sub + theorem integrable_on.subset + theorem integrable_on.union + def integrable_on + theorem integrable_on_congr + theorem integrable_on_congr_ae + theorem integrable_on_empty + theorem integrable_on_norm_iff + theorem integrable_on_of_integrable + theorem integral_on_Union + theorem integral_on_add + theorem integral_on_congr + theorem integral_on_congr_of_ae_eq + theorem integral_on_congr_of_set + theorem integral_on_div + theorem integral_on_le_integral_on + theorem integral_on_le_integral_on_ae + theorem integral_on_mul_left + theorem integral_on_mul_right + theorem integral_on_neg + theorem integral_on_smul + theorem integral_on_sub + theorem integral_on_union + theorem integral_on_union_ae + theorem integral_on_zero + theorem is_measurable.inter_preimage + theorem measurable.measurable_on + theorem measurable_on.subset + theorem measurable_on.union + def measurable_on + theorem measurable_on_empty + theorem measurable_on_singleton + theorem measurable_on_univ + theorem tendsto_integral_on_of_antimono + theorem tendsto_integral_on_of_monotone Modified src/topology/bases.lean + theorem filter.has_countable_basis_at_top_finset_nat 2020-01-21 18:58:28 217b5e7 refactor(algebra/char_zero): use `function.injective` (#1894) No need to require `↔` in the definition. ESTIMATED CHANGES Modified src/algebra/char_zero.lean +/- theorem nat.cast_eq_zero +/- theorem nat.cast_injective +/- theorem nat.cast_ne_zero Modified src/data/padics/padic_numbers.lean Modified src/data/real/ennreal.lean + theorem ennreal.coe_nat_le_coe_nat +/- theorem ennreal.coe_nat_lt_coe_nat + theorem ennreal.coe_nat_mono Modified src/data/zsqrtd/basic.lean 2020-01-21 09:56:58 f3835fa feat(*): assorted simple lemmas, simplify some proofs (#1895) * feat(*): assorted simple lemmas, simplify some proofs * +1 lemma, +1 simplified proof ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.of_real_lt_of_real_iff_of_nonneg Modified src/data/real/nnreal.lean + theorem nnreal.of_real_lt_of_real_iff_of_nonneg Modified src/data/set/basic.lean + theorem set.inter_singleton_nonempty Modified src/data/set/intervals/basic.lean + theorem set.nonempty_Iio + theorem set.nonempty_Ioi Modified src/order/basic.lean + theorem directed.mono_comp Modified src/order/bounded_lattice.lean + theorem with_top.dense_coe Modified src/order/filter/basic.lean + theorem filter.forall_sets_nonempty_iff_ne_bot Modified src/topology/basic.lean Modified src/topology/continuous_on.lean Modified src/topology/sequences.lean 2020-01-18 08:16:09 d32c797 feat(data/bool): coe_bool_iff (#1891) ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.coe_bool_iff 2020-01-18 05:20:13 d548d92 chore(ring_theory/polynomial): remove decidable_eq assumptions (#1890) ESTIMATED CHANGES Modified src/ring_theory/polynomial.lean +/- theorem is_noetherian_ring_mv_polynomial_of_fintype 2020-01-17 18:46:09 c8ae79d feat(measure_theory/bochner_integration): dominated convergence theorem for filters (#1884) * Dominated convergence theorem for filters * Update bases.lean * Update bochner_integration.lean * reviewer's comments ESTIMATED CHANGES Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.tendsto_integral_filter_of_dominated_convergence +/- theorem measure_theory.tendsto_integral_of_dominated_convergence Modified src/measure_theory/integration.lean + theorem measure_theory.tendsto_lintegral_filter_of_dominated_convergence Modified src/measure_theory/l1_space.lean Modified src/topology/bases.lean + theorem filter.has_countable_basis.tendsto_iff_seq_tendsto + theorem filter.has_countable_basis.tendsto_of_seq_tendsto 2020-01-17 03:02:01 9ac26cb feat(geometry/manifold/mfderiv): derivative of functions between smooth manifolds (#1872) * feat(geometry/manifold/mfderiv): derivative of functions between smooth manifolds * Update src/geometry/manifold/mfderiv.lean Co-Authored-By: Yury G. Kudryashov * more details in docstrings [ci skip] * fix docstrings [ci skip] * reviewer's comments ESTIMATED CHANGES Modified src/geometry/manifold/basic_smooth_bundle.lean Added src/geometry/manifold/mfderiv.lean + def bundle_mfderiv + theorem bundle_mfderiv_chart_inv_fun + theorem bundle_mfderiv_chart_to_fun + theorem bundle_mfderiv_comp + theorem bundle_mfderiv_comp_at + theorem bundle_mfderiv_proj + theorem bundle_mfderiv_tangent_bundle_proj + def bundle_mfderiv_within + theorem bundle_mfderiv_within_comp_at + theorem bundle_mfderiv_within_eq_bundle_mfderiv + theorem bundle_mfderiv_within_proj + theorem bundle_mfderiv_within_subset + theorem bundle_mfderiv_within_tangent_bundle_proj + theorem bundle_mfderiv_within_univ + theorem has_mfderiv_at.comp + theorem has_mfderiv_at.comp_has_mfderiv_within_at + theorem has_mfderiv_at.congr_of_mem_nhds + theorem has_mfderiv_at.continuous_at + theorem has_mfderiv_at.has_mfderiv_within_at + theorem has_mfderiv_at.mdifferentiable_at + theorem has_mfderiv_at.mfderiv + def has_mfderiv_at + theorem has_mfderiv_at_const + theorem has_mfderiv_at_id + theorem has_mfderiv_at_unique + theorem has_mfderiv_within_at.comp + theorem has_mfderiv_within_at.congr_mono + theorem has_mfderiv_within_at.congr_of_mem_nhds_within + theorem has_mfderiv_within_at.continuous_within_at + theorem has_mfderiv_within_at.has_mfderiv_at + theorem has_mfderiv_within_at.mdifferentiable_within_at + theorem has_mfderiv_within_at.mfderiv_within + theorem has_mfderiv_within_at.mono + theorem has_mfderiv_within_at.nhds_within + theorem has_mfderiv_within_at.union + def has_mfderiv_within_at + theorem has_mfderiv_within_at_const + theorem has_mfderiv_within_at_id + theorem has_mfderiv_within_at_inter' + theorem has_mfderiv_within_at_inter + theorem has_mfderiv_within_at_univ + theorem is_open.unique_mdiff_on + theorem is_open.unique_mdiff_within_at + theorem local_homeomorph.mdifferentiable.inv_fun_to_fun_deriv + theorem local_homeomorph.mdifferentiable.mdifferentiable_at_inv_fun + theorem local_homeomorph.mdifferentiable.mdifferentiable_at_to_fun + theorem local_homeomorph.mdifferentiable.range_mfderiv_eq_univ + theorem local_homeomorph.mdifferentiable.symm + theorem local_homeomorph.mdifferentiable.to_fun_inv_fun_deriv + theorem local_homeomorph.mdifferentiable.trans + def local_homeomorph.mdifferentiable + theorem mdifferentiable.comp + theorem mdifferentiable.continuous + theorem mdifferentiable.mdifferentiable_on + theorem mdifferentiable.mfderiv_within + def mdifferentiable + theorem mdifferentiable_at.comp + theorem mdifferentiable_at.congr_of_mem_nhds + theorem mdifferentiable_at.continuous_at + theorem mdifferentiable_at.has_mfderiv_at + theorem mdifferentiable_at.mdifferentiable_within_at + theorem mdifferentiable_at.mfderiv + def mdifferentiable_at + theorem mdifferentiable_at_atlas_inv_fun + theorem mdifferentiable_at_atlas_to_fun + theorem mdifferentiable_at_const + theorem mdifferentiable_at_id + theorem mdifferentiable_at_iff_differentiable_at + theorem mdifferentiable_chart + theorem mdifferentiable_const + theorem mdifferentiable_id + theorem mdifferentiable_iff_differentiable + theorem mdifferentiable_of_mem_atlas + theorem mdifferentiable_on.comp + theorem mdifferentiable_on.congr_mono + theorem mdifferentiable_on.continuous_on + theorem mdifferentiable_on.mono + def mdifferentiable_on + theorem mdifferentiable_on_atlas_inv_fun + theorem mdifferentiable_on_atlas_to_fun + theorem mdifferentiable_on_const + theorem mdifferentiable_on_id + theorem mdifferentiable_on_iff_differentiable_on + theorem mdifferentiable_on_of_locally_mdifferentiable_on + theorem mdifferentiable_on_univ + theorem mdifferentiable_within_at.comp + theorem mdifferentiable_within_at.congr + theorem mdifferentiable_within_at.congr_mono + theorem mdifferentiable_within_at.congr_of_mem_nhds_within + theorem mdifferentiable_within_at.continuous_within_at + theorem mdifferentiable_within_at.has_mfderiv_within_at + theorem mdifferentiable_within_at.mdifferentiable_at + theorem mdifferentiable_within_at.mfderiv_within + theorem mdifferentiable_within_at.mfderiv_within_congr_mono + theorem mdifferentiable_within_at.mono + def mdifferentiable_within_at + theorem mdifferentiable_within_at_congr_of_mem_nhds_within + theorem mdifferentiable_within_at_const + theorem mdifferentiable_within_at_id + theorem mdifferentiable_within_at_iff + theorem mdifferentiable_within_at_iff_differentiable_within_at + theorem mdifferentiable_within_at_inter' + theorem mdifferentiable_within_at_inter + theorem mdifferentiable_within_at_univ + def mfderiv + theorem mfderiv_comp + theorem mfderiv_congr_of_mem_nhds + theorem mfderiv_const + theorem mfderiv_eq_fderiv + theorem mfderiv_id + def mfderiv_within + theorem mfderiv_within_comp + theorem mfderiv_within_congr_of_mem_nhds_within + theorem mfderiv_within_const + theorem mfderiv_within_eq_fderiv_within + theorem mfderiv_within_id + theorem mfderiv_within_inter + theorem mfderiv_within_subset + theorem mfderiv_within_univ + theorem mfderiv_within_zero_of_not_mdifferentiable_within_at + theorem mfderiv_zero_of_not_mdifferentiable_at + theorem model_with_corners_mdifferentiable_on_inv_fun + theorem model_with_corners_mdifferentiable_on_to_fun + theorem unique_mdiff_on.eq + theorem unique_mdiff_on.inter + theorem unique_mdiff_on.smooth_bundle_preimage + theorem unique_mdiff_on.tangent_bundle_proj_preimage + theorem unique_mdiff_on.unique_diff_on + theorem unique_mdiff_on.unique_diff_on_inter_preimage + theorem unique_mdiff_on.unique_mdiff_on_preimage + def unique_mdiff_on + theorem unique_mdiff_on_iff_unique_diff_on + theorem unique_mdiff_within_at.eq + theorem unique_mdiff_within_at.inter' + theorem unique_mdiff_within_at.inter + theorem unique_mdiff_within_at.mono + def unique_mdiff_within_at + theorem unique_mdiff_within_at_iff + theorem unique_mdiff_within_at_iff_unique_diff_within_at + theorem unique_mdiff_within_at_univ + def written_in_ext_chart_at + theorem written_in_ext_chart_comp + theorem written_in_ext_chart_model_space Modified src/geometry/manifold/smooth_manifold_with_corners.lean + def ext_chart_at + theorem ext_chart_at_continuous_at_to_fun + theorem ext_chart_at_continuous_on_inv_fun + theorem ext_chart_at_continuous_on_to_fun + theorem ext_chart_at_open_source + theorem ext_chart_at_source + theorem ext_chart_at_source_mem_nhds + theorem ext_chart_at_target_mem_nhds_within + theorem ext_chart_at_to_inv + theorem ext_chart_continuous_at_inv_fun' + theorem ext_chart_continuous_at_inv_fun + theorem ext_chart_model_space_eq_id + theorem ext_chart_preimage_inter_eq + theorem ext_chart_preimage_mem_nhds + theorem ext_chart_preimage_mem_nhds_within' + theorem ext_chart_preimage_mem_nhds_within + theorem mem_ext_chart_source + theorem nhds_within_ext_chart_target_eq Modified src/topology/continuous_on.lean + theorem continuous_within_at.union 2020-01-16 11:40:38 4f81942 feat(logic/basic): forall_or_distrib (#1887) ESTIMATED CHANGES Modified src/logic/basic.lean + theorem forall_or_distrib_right 2020-01-16 10:23:06 58610ff chore(order/filter/*): use `s ∈ f` instead of `s ∈ f.sets` (#1885) Other changes: * compose old `mem_infi` and `mem_binfi` with `mem_Union` and `mem_bUnion_iff` to avoid `.sets` and simplify usage (it was `rw [mem_infi, mem_Union]` every time) * drop `lift_sets_eq` and `mem_lift_iff` in favor of `mem_lift_sets` ESTIMATED CHANGES Modified src/order/filter/basic.lean Modified src/order/filter/lift.lean +/- theorem filter.lift'_cong +/- theorem filter.lift'_mono' +/- theorem filter.lift_mono' - theorem filter.lift_sets_eq +/- theorem filter.mem_lift' +/- theorem filter.mem_lift'_sets +/- theorem filter.mem_lift - theorem filter.mem_lift_iff +/- theorem filter.principal_le_lift' Modified src/order/filter/pointwise.lean Modified src/topology/algebra/ordered.lean 2020-01-16 08:11:17 05457fd feat(analysis/calculus/tangent_cone): define and use `tangent_cone_congr` (#1886) * feat(analysis/calculus/tangent_cone): define and use `tangent_cone_congr` This way some proofs become shorter and hopefully more readable. * Add a docstring ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean + theorem tangent_cone_congr + theorem tangent_cone_mono_nhds + theorem unique_diff_within_at.mono_nhds + theorem unique_diff_within_at_congr 2020-01-15 15:04:46 b3ed6e6 chore(*): use `ne_` instead of `neq_` in lemma names (#1878) One exception: `mem_sets_of_neq_bot` is now `mem_sets_of_eq_bot` because it has an equality as an assumption. Also add `filter.infi_ne_bot_(iff_?)of_directed'` with a different `nonempty` assumption, and use it to simplify the proof of `lift_ne_bot_iff`. ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/order/bounded_lattice.lean + theorem lattice.ne_bot_of_le_ne_bot - theorem lattice.neq_bot_of_le_neq_bot Modified src/order/filter/basic.lean + theorem filter.comap_ne_bot + theorem filter.comap_ne_bot_of_surj - theorem filter.comap_neq_bot - theorem filter.comap_neq_bot_of_surj + theorem filter.forall_sets_ne_empty_iff_ne_bot - theorem filter.forall_sets_neq_empty_iff_neq_bot + theorem filter.infi_ne_bot_iff_of_directed' + theorem filter.infi_ne_bot_iff_of_directed + theorem filter.infi_ne_bot_of_directed' + theorem filter.infi_ne_bot_of_directed - theorem filter.infi_neq_bot_iff_of_directed - theorem filter.infi_neq_bot_of_directed + theorem filter.mem_sets_of_eq_bot - theorem filter.mem_sets_of_neq_bot + theorem filter.prod_ne_bot - theorem filter.prod_neq_bot + theorem filter.pure_ne_bot - theorem filter.pure_neq_bot Modified src/order/filter/lift.lean + theorem filter.lift'_ne_bot_iff - theorem filter.lift'_neq_bot_iff + theorem filter.lift_ne_bot_iff - theorem filter.lift_neq_bot_iff Modified src/order/filter/pointwise.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean + theorem nhds_ne_bot - theorem nhds_neq_bot Modified src/topology/constructions.lean Modified src/topology/continuous_on.lean Modified src/topology/dense_embedding.lean + theorem dense_inducing.comap_nhds_ne_bot - theorem dense_inducing.comap_nhds_neq_bot Modified src/topology/order.lean Modified src/topology/separation.lean + theorem eq_of_nhds_ne_bot - theorem eq_of_nhds_neq_bot Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/uniform_embedding.lean 2020-01-15 10:13:40 8e70388 docs(README): add new maintainers (#1881) ESTIMATED CHANGES Modified README.md 2020-01-15 09:15:30 d614736 feat(linear_algebra/tensor_product): tensor product right identity (#1880) * feat(linear_algebra/tensor_product): tensor product right identity * Golf proof of tensor_product.rid * Add missing docstrings ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/linear_algebra/tensor_product.lean 2020-01-15 07:24:37 819939f refactor(order/lattice): generalize `directed_of_mono` (#1879) It suffices to have `semilattice_sup`, not `decidable_linear_order`. Also add `directed_of_antimono`. ESTIMATED CHANGES Modified src/order/basic.lean - theorem directed_of_mono Modified src/order/lattice.lean + theorem lattice.directed_of_antimono + theorem lattice.directed_of_mono Modified src/topology/bases.lean Modified src/topology/sequences.lean 2020-01-14 16:00:47 9f7ae9a chore(data/set/lattice): use `∃ x ∈ s` instead of `∃ x, x ∈ s ∧` in `mem_bUnion_iff` (#1877) This seems to be more in line with the rest of the library ESTIMATED CHANGES Modified src/data/semiquot.lean +/- def semiquot.get Modified src/data/set/lattice.lean Modified src/group_theory/subgroup.lean +/- theorem group.mem_conjugates_of_set_iff Modified src/topology/bounded_continuous_function.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-01-14 14:20:21 416b7d8 fix doc strings (#1876) ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/bounded_linear_maps.lean 2020-01-14 06:33:00 e095e30 feat(analysis/ODE/gronwall): A version of Grönwall's inequality (#1846) * feat(analysis/ODE/gronwall): A version of Gronwall's inequality + uniqueness of solutions of an ODE with a Lipschitz continuous RHS * Consistently use ö in Grönwall * Fix a typo * Fix docs, drop assumption `0 < K`, add a version for functions `ℝ → ℝ`. * Fix docs Co-Authored-By: sgouezel * Fix docs ESTIMATED CHANGES Modified docs/references.bib Added src/analysis/ODE/gronwall.lean + theorem ODE_solution_unique + theorem ODE_solution_unique_of_mem_set + theorem dist_le_of_approx_trajectories_ODE + theorem dist_le_of_approx_trajectories_ODE_of_mem_set + theorem dist_le_of_trajectories_ODE + theorem dist_le_of_trajectories_ODE_of_mem_set + theorem gronwall_bound_K0 + theorem gronwall_bound_continuous_ε + theorem gronwall_bound_of_K_ne_0 + theorem gronwall_bound_x0 + theorem gronwall_bound_ε0 + theorem gronwall_bound_ε0_δ0 + theorem has_deriv_at_gronwall_bound + theorem has_deriv_at_gronwall_bound_shift + theorem le_gronwall_bound_of_liminf_deriv_right_le + theorem norm_le_gronwall_bound_of_norm_deriv_right_le Modified src/analysis/calculus/mean_value.lean + theorem image_le_of_liminf_slope_right_lt_deriv_boundary' 2020-01-12 06:48:46 c5d91bc feat(topology/algebra/ordered): add order topology for partial orders… (#1276) * feat(topology/algebra/ordered): doc, add convergence in ordered groups criterion * docstring * reviewer's comments ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/analysis/calculus/mean_value.lean Modified src/analysis/specific_limits.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.approx_apply +/- theorem measure_theory.simple_func.approx_comp +/- theorem measure_theory.simple_func.supr_approx_apply Modified src/tactic/lint.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean +/- theorem Inf_mem_closure +/- theorem Inf_mem_of_is_closed +/- theorem Sup_mem_closure +/- theorem Sup_mem_of_is_closed +/- theorem cInf_mem_closure +/- theorem cInf_mem_of_is_closed +/- theorem cSup_mem_closure +/- theorem cSup_mem_of_is_closed + theorem decidable_linear_ordered_comm_group.tendsto_nhds + theorem induced_order_topology' + theorem induced_order_topology - theorem induced_orderable_topology' - theorem induced_orderable_topology +/- theorem infi_eq_of_tendsto + theorem nhds_bot_order - theorem nhds_bot_orderable + theorem nhds_eq_order - theorem nhds_eq_orderable + theorem nhds_order_unbounded - theorem nhds_orderable_unbounded + theorem nhds_top_order - theorem nhds_top_orderable + theorem order_topology.t2_space + theorem order_topology_of_nhds_abs - theorem orderable_topology.t2_space - theorem orderable_topology_of_nhds_abs + def preorder.topology +/- theorem supr_eq_of_tendsto +/- theorem tendsto_at_top_infi_nat +/- theorem tendsto_at_top_supr_nat + theorem tendsto_order + theorem tendsto_order_unbounded - theorem tendsto_orderable - theorem tendsto_orderable_unbounded Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/gromov_hausdorff.lean 2020-01-11 14:51:07 25dded2 chore(measure_theory/bochner_integration): make proofs shorter (#1871) * More consistent use of the dot notation * Revert "More consistent use of the dot notation" This reverts commit 854a499a9be105b42ca486eb25593a2379b07404. * Revert "Revert "More consistent use of the dot notation"" This reverts commit 57aaf22695c031fc8dcc581110cc9d1ac397f695. * fix things ESTIMATED CHANGES Modified src/measure_theory/ae_eq_fun.lean +/- def measure_theory.ae_eq_fun.comp_edist +/- theorem measure_theory.ae_eq_fun.smul_mk Modified src/measure_theory/bochner_integration.lean +/- theorem measure_theory.integral_add +/- theorem measure_theory.integral_eq - theorem measure_theory.integral_eq_zero_of_non_integrable - theorem measure_theory.integral_eq_zero_of_non_measurable + theorem measure_theory.integral_non_integrable + theorem measure_theory.integral_non_measurable +/- theorem measure_theory.integral_smul +/- theorem measure_theory.integral_sub + theorem measure_theory.integral_undef +/- def measure_theory.l1.simple_func Modified src/measure_theory/borel_space.lean + theorem measurable.coe_nnnorm + theorem measurable.dist + theorem measurable.edist + theorem measurable.nndist + theorem measurable.nnnorm + theorem measurable.norm + theorem measurable.smul' + theorem measurable.smul + theorem measurable_dist + theorem measurable_edist + theorem measurable_nndist + theorem measurable_nnnorm + theorem measurable_norm + theorem measurable_smul_iff - theorem measure_theory.measurable_coe_nnnorm - theorem measure_theory.measurable_dist' - theorem measure_theory.measurable_dist - theorem measure_theory.measurable_edist' - theorem measure_theory.measurable_edist - theorem measure_theory.measurable_nndist' - theorem measure_theory.measurable_nndist - theorem measure_theory.measurable_nnnorm' - theorem measure_theory.measurable_nnnorm - theorem measure_theory.measurable_norm' - theorem measure_theory.measurable_norm - theorem measure_theory.measurable_smul' - theorem measure_theory.measurable_smul - theorem measure_theory.measurable_smul_iff Modified src/measure_theory/l1_space.lean - theorem measure_theory.integrable.smul_iff + theorem measure_theory.integrable_smul_iff +/- def measure_theory.l1 Modified src/measure_theory/measurable_space.lean + theorem measurable_zero Modified src/measure_theory/simple_func_dense.lean 2020-01-11 00:42:53 f67df78 chore(algebra/module): add some missing `*_cast` tags (#1863) ESTIMATED CHANGES Modified src/algebra/module.lean +/- theorem submodule.coe_add +/- theorem submodule.coe_neg +/- theorem submodule.coe_smul +/- theorem submodule.coe_sub +/- theorem submodule.coe_zero 2020-01-10 01:05:49 ff2a41e refactor(docs): additions, modifications, reorganization (#1815) * move cc.md to tactics.md * change h3 to h2 * remove h3 * update simp.md headers * updates to casts.md * update holes.md * update docstrings * add commands.md * hole commands in emacs * reference library_search from find * delete casts.md * minor updates * minor fixes * more minor fixes * fix header level * updating mathlib-overview and removing a bunch of useless files ESTIMATED CHANGES Added docs/commands.md Deleted docs/extras/casts.md Deleted docs/extras/cc.md Modified docs/extras/conv.md Modified docs/extras/simp.md Modified docs/extras/tactic_writing.md Modified docs/extras/well_founded_recursion.md Modified docs/holes.md Modified docs/mathlib-overview.md Modified docs/tactics.md Deleted docs/theories/functions.md Deleted docs/theories/groups.md Deleted docs/theories/integers.md Deleted docs/theories/linear_algebra.md Deleted docs/theories/measure.md Modified docs/theories/naturals.md Deleted docs/theories/number_theory.md Deleted docs/theories/orders.md Deleted docs/theories/polynomials.md Deleted docs/theories/relations.md Deleted docs/theories/rings_fields.md Modified src/tactic/alias.lean Modified src/tactic/core.lean Modified src/tactic/where.lean 2020-01-09 22:58:55 baa3aa7 refactor(data/set/basic): change def of `⊂` to match `<` (#1862) ESTIMATED CHANGES Modified src/data/finset.lean Modified src/data/set/basic.lean + theorem set.eq_or_ssubset_of_subset + theorem set.nonempty_diff +/- theorem set.not_subset +/- theorem set.ssubset_def + theorem set.ssubset_iff_subset_ne - theorem set.ssubset_iff_subset_not_subset +/- def set.strict_subset Modified src/data/set/finite.lean Modified src/data/set/lattice.lean Modified src/linear_algebra/basic.lean + theorem submodule.exists_of_lt +/- theorem submodule.le_def' +/- theorem submodule.le_def + theorem submodule.lt_def + theorem submodule.lt_iff_le_and_exists + theorem submodule.not_le_iff_exists +/- def submodule.of_le +/- theorem submodule.of_le_apply Modified src/order/zorn.lean 2020-01-09 21:23:09 d7cebcf feat(linear_algebra/multilinear): basics of multilinear maps (#1814) * multilinear maps * progress * isomorphisms * Update src/logic/function.lean Co-Authored-By: Johan Commelin * better docstring * variable module * dep cons * make everything dependent * remove print statement * fix build * Update src/linear_algebra/multilinear.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/linear_algebra/multilinear.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * fixes * docstrings * reviewer's comments * cleanup ESTIMATED CHANGES Modified archive/cubing_a_cube.lean Modified src/data/fin.lean + theorem fin.cast_succ_ne_last +/- def fin.cons + theorem fin.cons_self_tail +/- theorem fin.cons_succ + theorem fin.cons_update +/- theorem fin.cons_zero + theorem fin.injective_cast_succ + theorem fin.injective_succ + theorem fin.succ_inj +/- def fin.tail +/- theorem fin.tail_cons + theorem fin.tail_update_succ + theorem fin.tail_update_zero + theorem fin.update_cons_zero + def fin_zero_elim' - def {u} Added src/linear_algebra/multilinear.lean + theorem multilinear_map.add_apply + theorem multilinear_map.cons_add + theorem multilinear_map.cons_smul + theorem multilinear_map.ext + def multilinear_map.linear_to_multilinear_equiv_multilinear + theorem multilinear_map.map_add + theorem multilinear_map.map_coord_zero + theorem multilinear_map.map_smul + theorem multilinear_map.map_zero + def multilinear_map.multilinear_to_linear_equiv_multilinear + theorem multilinear_map.neg_apply + theorem multilinear_map.smul_apply + def multilinear_map.to_linear_map + theorem multilinear_map.zero_apply + structure multilinear_map Modified src/logic/function.lean + theorem function.update_comp + theorem function.update_eq_self +/- theorem function.update_noteq +/- theorem function.update_same Modified src/order/filter/basic.lean 2020-01-09 04:14:44 39c10cd docs(tactic/tauto): elaborate tauto docs [ci skip] (#1869) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/tauto.lean 2020-01-09 02:47:17 5289994 feat(analysis/calculus/mean_value): add generalized "fencing" inequality (#1838) * feat(analysis/calculus/mean_value): add generalized "fencing" inequality This version can be used to deduce, e.g., Gronwall inequality as well as its generalized version that deals with approximate solutions. * Adjust to merged branches, use `liminf` instead of `limsup`, add more variations * Go through dim-1 liminf estimates * Fix: use `b ∈ Ioc a c` as a hypothesis for `I??_mem_nhds_within_Iio` * Update src/analysis/calculus/mean_value.lean Co-Authored-By: sgouezel * Drop `Prop`-valued `variables`, add some docs * More docstrings * Drop `Prop`-valued `variables`, drop assumption `x ∉ s`. ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.liminf_right_norm_slope_le + theorem has_deriv_within_at.liminf_right_slope_le + theorem has_deriv_within_at.liminf_right_slope_norm_le + theorem has_deriv_within_at.limsup_norm_slope_le + theorem has_deriv_within_at.limsup_slope_le' + theorem has_deriv_within_at.limsup_slope_le + theorem has_deriv_within_at.limsup_slope_norm_le + theorem has_deriv_within_at_iff_tendsto_slope' Modified src/analysis/calculus/mean_value.lean + theorem image_le_of_deriv_right_le_deriv_boundary + theorem image_le_of_deriv_right_lt_deriv_boundary' + theorem image_le_of_deriv_right_lt_deriv_boundary + theorem image_le_of_liminf_slope_right_le_deriv_boundary + theorem image_le_of_liminf_slope_right_lt_deriv_boundary + theorem image_norm_le_of_liminf_right_slope_norm_lt_deriv_boundary + theorem image_norm_le_of_norm_deriv_right_le_deriv_boundary' + theorem image_norm_le_of_norm_deriv_right_le_deriv_boundary + theorem image_norm_le_of_norm_deriv_right_lt_deriv_boundary' + theorem image_norm_le_of_norm_deriv_right_lt_deriv_boundary + theorem norm_image_sub_le_of_norm_deriv_le_segment' +/- theorem norm_image_sub_le_of_norm_deriv_le_segment + theorem norm_image_sub_le_of_norm_deriv_le_segment_01' + theorem norm_image_sub_le_of_norm_deriv_le_segment_01 + theorem norm_image_sub_le_of_norm_deriv_right_le_segment Modified src/analysis/normed_space/basic.lean + theorem filter.tendsto.nnnorm + theorem filter.tendsto.norm Modified src/topology/algebra/ordered.lean + theorem Icc_mem_nhds_within_Iio + theorem Ico_mem_nhds_within_Iio + theorem Ioc_mem_nhds_within_Iio + theorem Ioo_mem_nhds_within_Iio 2020-01-08 20:16:58 9afc6f2 docs(tactics): tautology (#1860) * added a short description of the tautology tactic * added a short description of the tautology tactic * Update docs/tactics.md Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified docs/tactics.md 2020-01-08 13:16:54 92841c2 refactor(analysis/asymptotics): introduce `is_O_with` (#1857) * refactor(analysis/asymptotics): introduce `is_O_with` I use it to factor out common parts of the proofs of facts about `is_O` and `is_o`. It can also be used with `principal s` filter to operate with `∀ x ∈ s, ∥f x∥ ≤ C * ∥g x∥` is a manner similar to `is_O`. * lint * Fix compile * Drop `(s)mul_same` lemmas. It's easy to use `(s)mul_is_O (is_O_refl _ _)` or `(is_O_refl _ _).mul_is_o _` instead * docs: say explicitly that `is_O` is better than `is_O_with` ESTIMATED CHANGES Modified src/analysis/asymptotics.lean +/- theorem asymptotics.is_O.add + theorem asymptotics.is_O.add_is_o - theorem asymptotics.is_O.comp + theorem asymptotics.is_O.comp_tendsto + theorem asymptotics.is_O.congr' +/- theorem asymptotics.is_O.congr +/- theorem asymptotics.is_O.congr_left +/- theorem asymptotics.is_O.congr_of_sub +/- theorem asymptotics.is_O.congr_right + theorem asymptotics.is_O.const_mul_left + theorem asymptotics.is_O.const_mul_right' + theorem asymptotics.is_O.const_mul_right + theorem asymptotics.is_O.exists_nonneg + theorem asymptotics.is_O.exists_pos + theorem asymptotics.is_O.join +/- theorem asymptotics.is_O.mono + theorem asymptotics.is_O.mul + theorem asymptotics.is_O.mul_is_o + theorem asymptotics.is_O.of_const_mul_right + theorem asymptotics.is_O.prod_left + theorem asymptotics.is_O.prod_left_fst + theorem asymptotics.is_O.prod_left_snd +/- theorem asymptotics.is_O.prod_rightl +/- theorem asymptotics.is_O.prod_rightr + theorem asymptotics.is_O.smul + theorem asymptotics.is_O.smul_is_o +/- theorem asymptotics.is_O.sub +/- theorem asymptotics.is_O.symm +/- theorem asymptotics.is_O.trans +/- theorem asymptotics.is_O.trans_is_o + theorem asymptotics.is_O.trans_le +/- theorem asymptotics.is_O.trans_tendsto + theorem asymptotics.is_O.trans_tendsto_nhds - theorem asymptotics.is_O.tri + theorem asymptotics.is_O.triangle +/- def asymptotics.is_O + theorem asymptotics.is_O_bot +/- theorem asymptotics.is_O_comm +/- theorem asymptotics.is_O_congr - theorem asymptotics.is_O_congr_left - theorem asymptotics.is_O_congr_right + theorem asymptotics.is_O_const_const - theorem asymptotics.is_O_const_mul_left + theorem asymptotics.is_O_const_mul_left_iff' +/- theorem asymptotics.is_O_const_mul_left_iff + theorem asymptotics.is_O_const_mul_right_iff' +/- theorem asymptotics.is_O_const_mul_right_iff + theorem asymptotics.is_O_const_mul_self + theorem asymptotics.is_O_const_of_tendsto +/- theorem asymptotics.is_O_const_one - theorem asymptotics.is_O_const_smul_left +/- theorem asymptotics.is_O_const_smul_left_iff +/- theorem asymptotics.is_O_const_smul_right + theorem asymptotics.is_O_fst_prod - theorem asymptotics.is_O_iff - theorem asymptotics.is_O_join - theorem asymptotics.is_O_mul +/- theorem asymptotics.is_O_neg_left +/- theorem asymptotics.is_O_neg_right +/- theorem asymptotics.is_O_norm_left + theorem asymptotics.is_O_norm_norm +/- theorem asymptotics.is_O_norm_right - theorem asymptotics.is_O_of_is_O_const_mul_right + theorem asymptotics.is_O_of_le' + theorem asymptotics.is_O_of_le +/- theorem asymptotics.is_O_one_of_tendsto +/- theorem asymptotics.is_O_prod_left +/- theorem asymptotics.is_O_refl +/- theorem asymptotics.is_O_refl_left + theorem asymptotics.is_O_self_const_mul' + theorem asymptotics.is_O_self_const_mul - theorem asymptotics.is_O_smul + theorem asymptotics.is_O_snd_prod + theorem asymptotics.is_O_with.add + theorem asymptotics.is_O_with.add_is_o + theorem asymptotics.is_O_with.comp_tendsto + theorem asymptotics.is_O_with.congr' + theorem asymptotics.is_O_with.congr + theorem asymptotics.is_O_with.congr_const + theorem asymptotics.is_O_with.congr_left + theorem asymptotics.is_O_with.congr_right + theorem asymptotics.is_O_with.const_mul_left + theorem asymptotics.is_O_with.const_mul_right' + theorem asymptotics.is_O_with.const_mul_right + theorem asymptotics.is_O_with.const_smul_left + theorem asymptotics.is_O_with.exists_nonneg + theorem asymptotics.is_O_with.exists_pos + theorem asymptotics.is_O_with.is_O + theorem asymptotics.is_O_with.join' + theorem asymptotics.is_O_with.join + theorem asymptotics.is_O_with.mono + theorem asymptotics.is_O_with.mul + theorem asymptotics.is_O_with.of_const_mul_right + theorem asymptotics.is_O_with.prod_left + theorem asymptotics.is_O_with.prod_left_fst + theorem asymptotics.is_O_with.prod_left_same + theorem asymptotics.is_O_with.prod_left_snd + theorem asymptotics.is_O_with.prod_rightl + theorem asymptotics.is_O_with.prod_rightr + theorem asymptotics.is_O_with.right_le_add_of_lt_1 + theorem asymptotics.is_O_with.right_le_sub_of_lt_1 + theorem asymptotics.is_O_with.smul + theorem asymptotics.is_O_with.sub + theorem asymptotics.is_O_with.sub_is_o + theorem asymptotics.is_O_with.symm + theorem asymptotics.is_O_with.trans + theorem asymptotics.is_O_with.trans_is_o + theorem asymptotics.is_O_with.trans_le + theorem asymptotics.is_O_with.triangle + theorem asymptotics.is_O_with.weaken + def asymptotics.is_O_with + theorem asymptotics.is_O_with_bot + theorem asymptotics.is_O_with_comm + theorem asymptotics.is_O_with_congr + theorem asymptotics.is_O_with_const_const + theorem asymptotics.is_O_with_const_mul_self + theorem asymptotics.is_O_with_const_one + theorem asymptotics.is_O_with_fst_prod + theorem asymptotics.is_O_with_neg_left + theorem asymptotics.is_O_with_neg_right + theorem asymptotics.is_O_with_norm_left + theorem asymptotics.is_O_with_norm_norm + theorem asymptotics.is_O_with_norm_right + theorem asymptotics.is_O_with_of_le' + theorem asymptotics.is_O_with_of_le + theorem asymptotics.is_O_with_prod_left + theorem asymptotics.is_O_with_refl + theorem asymptotics.is_O_with_self_const_mul' + theorem asymptotics.is_O_with_self_const_mul + theorem asymptotics.is_O_with_snd_prod + theorem asymptotics.is_O_with_zero + theorem asymptotics.is_O_with_zero_right_iff +/- theorem asymptotics.is_O_zero +/- theorem asymptotics.is_O_zero_right_iff +/- theorem asymptotics.is_o.add + theorem asymptotics.is_o.add_is_O + theorem asymptotics.is_o.add_is_O_with - theorem asymptotics.is_o.comp + theorem asymptotics.is_o.comp_tendsto + theorem asymptotics.is_o.congr' +/- theorem asymptotics.is_o.congr +/- theorem asymptotics.is_o.congr_left +/- theorem asymptotics.is_o.congr_of_sub +/- theorem asymptotics.is_o.congr_right + theorem asymptotics.is_o.const_mul_left + theorem asymptotics.is_o.const_mul_right' + theorem asymptotics.is_o.const_mul_right + theorem asymptotics.is_o.is_O + theorem asymptotics.is_o.is_O_with + theorem asymptotics.is_o.join +/- theorem asymptotics.is_o.mono + theorem asymptotics.is_o.mul + theorem asymptotics.is_o.mul_is_O + theorem asymptotics.is_o.of_const_mul_right + theorem asymptotics.is_o.prod_left + theorem asymptotics.is_o.prod_left_fst + theorem asymptotics.is_o.prod_left_snd +/- theorem asymptotics.is_o.prod_rightl +/- theorem asymptotics.is_o.prod_rightr + theorem asymptotics.is_o.smul + theorem asymptotics.is_o.smul_is_O +/- theorem asymptotics.is_o.sub +/- theorem asymptotics.is_o.symm + theorem asymptotics.is_o.tendsto_0 - theorem asymptotics.is_o.to_is_O + theorem asymptotics.is_o.trans' +/- theorem asymptotics.is_o.trans +/- theorem asymptotics.is_o.trans_is_O + theorem asymptotics.is_o.trans_is_O_with +/- theorem asymptotics.is_o.trans_tendsto - theorem asymptotics.is_o.tri + theorem asymptotics.is_o.triangle +/- def asymptotics.is_o + theorem asymptotics.is_o_bot +/- theorem asymptotics.is_o_comm +/- theorem asymptotics.is_o_congr - theorem asymptotics.is_o_congr_left - theorem asymptotics.is_o_congr_right + theorem asymptotics.is_o_const_iff + theorem asymptotics.is_o_const_iff_is_o_one - theorem asymptotics.is_o_const_mul_left + theorem asymptotics.is_o_const_mul_left_iff' +/- theorem asymptotics.is_o_const_mul_left_iff - theorem asymptotics.is_o_const_mul_right + theorem asymptotics.is_o_const_mul_right_iff' + theorem asymptotics.is_o_const_mul_right_iff +/- theorem asymptotics.is_o_const_smul_left +/- theorem asymptotics.is_o_const_smul_left_iff +/- theorem asymptotics.is_o_const_smul_right - theorem asymptotics.is_o_join - theorem asymptotics.is_o_mul - theorem asymptotics.is_o_mul_left - theorem asymptotics.is_o_mul_right +/- theorem asymptotics.is_o_neg_left +/- theorem asymptotics.is_o_neg_right +/- theorem asymptotics.is_o_norm_left + theorem asymptotics.is_o_norm_norm +/- theorem asymptotics.is_o_norm_right - theorem asymptotics.is_o_of_is_o_const_mul_right +/- theorem asymptotics.is_o_one_iff +/- theorem asymptotics.is_o_prod_left +/- theorem asymptotics.is_o_refl_left - theorem asymptotics.is_o_smul +/- theorem asymptotics.is_o_zero +/- theorem asymptotics.is_o_zero_right_iff - theorem asymptotics.tendsto_nhds_zero_of_is_o Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean 2020-01-07 00:44:17 69e07e2 chore(order/zorn): add docstrings, drop `chain.directed` (#1861) `chain.directed_on` is almost the same and uses a named predicate. ESTIMATED CHANGES Modified src/order/zorn.lean - theorem zorn.chain.directed +/- def zorn.succ_chain +/- def zorn.super_chain 2020-01-06 23:48:35 a1b7312 feat(topology/maps): a few lemmas about `is_open_map` (#1855) * feat(topology/maps): a few lemmas about `is_open_map` Also fix arguments order in all `*.comp` in this file. * Use restricted version of `continuous_of_left_inverse` to prove non-restricted * Fix compile by reverting a name change ESTIMATED CHANGES Modified src/topology/constructions.lean + theorem is_closed.closed_embedding_subtype_val + theorem is_open.is_open_map_subtype_val + theorem is_open.open_embedding_subtype_val + theorem is_open_map.restrict - theorem subtype_val.closed_embedding - theorem subtype_val.open_embedding Modified src/topology/continuous_on.lean + theorem is_open_map.continuous_on_image_of_left_inv_on + theorem is_open_map.continuous_on_range_of_left_inverse Modified src/topology/maps.lean +/- theorem closed_embedding.comp +/- theorem embedding.comp - theorem inducing.comp + theorem is_open_map.is_open_range + theorem is_open_map.nhds_le +/- theorem is_open_map_iff_nhds_le +/- theorem open_embedding.comp +/- def quotient_map 2020-01-06 03:49:33 15c434a chore(*): various simple lemmas about `*_equiv`, add missing attrs (#1854) * chore(*): various simple lemmas about `*_equiv`, add missing attrs * Fix compile of `ring_theory/localization` ESTIMATED CHANGES Modified src/data/equiv/algebra.lean +/- theorem mul_equiv.map_eq_one_iff +/- theorem mul_equiv.map_ne_one_iff +/- theorem ring_equiv.map_add + theorem ring_equiv.map_eq_one_iff + theorem ring_equiv.map_eq_zero_iff +/- theorem ring_equiv.map_mul + theorem ring_equiv.map_ne_one_iff + theorem ring_equiv.map_ne_zero_iff +/- theorem ring_equiv.map_neg +/- theorem ring_equiv.map_neg_one +/- theorem ring_equiv.map_one +/- theorem ring_equiv.map_sub +/- theorem ring_equiv.map_zero Modified src/data/set/function.lean + theorem set.inj_on.to_bij_on Modified src/linear_algebra/basic.lean + theorem linear_equiv.map_add + theorem linear_equiv.map_eq_zero_iff + theorem linear_equiv.map_ne_zero_iff + theorem linear_equiv.map_neg + theorem linear_equiv.map_smul + theorem linear_equiv.map_sub + theorem linear_equiv.map_zero +/- def linear_equiv.refl +/- def linear_equiv.symm + def linear_equiv.to_add_equiv +/- def linear_equiv.trans Modified src/ring_theory/localization.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_equiv.coe_comp_coe_symm + theorem continuous_linear_equiv.coe_symm_comp_coe + theorem continuous_linear_equiv.map_eq_zero_iff 2020-01-05 21:25:17 63670b5 feat(data/real/nnreal): add a few simple lemmas (#1856) ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.div_mul_cancel + theorem nnreal.div_pos + theorem nnreal.half_pos + theorem nnreal.mul_div_cancel' + theorem nnreal.mul_div_cancel 2020-01-04 15:28:27 585e107 feat(topology/algebra/module): continuous linear equiv (#1839) * feat(topology/algebra/module): continuous linear equiv * linting * reviewer's comments ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_within_at.unique_diff_within_at_of_continuous_linear_equiv Modified src/analysis/normed_space/banach.lean +/- theorem linear_equiv.is_bounded_inv + def linear_equiv.to_continuous_linear_equiv_of_continuous Modified src/analysis/normed_space/finite_dimension.lean + def linear_equiv.to_continuous_linear_equiv + def linear_map.to_continuous_linear_map Modified src/analysis/normed_space/operator_norm.lean Modified src/topology/algebra/module.lean +/- theorem continuous.smul + theorem continuous_linear_equiv.apply_symm_apply + theorem continuous_linear_equiv.coe_apply + theorem continuous_linear_equiv.coe_coe + theorem continuous_linear_equiv.ext + theorem continuous_linear_equiv.map_add + theorem continuous_linear_equiv.map_neg + theorem continuous_linear_equiv.map_smul + theorem continuous_linear_equiv.map_sub + theorem continuous_linear_equiv.map_zero + theorem continuous_linear_equiv.symm_apply_apply + theorem continuous_linear_equiv.symm_to_linear_equiv + def continuous_linear_equiv.to_continuous_linear_map + def continuous_linear_equiv.to_homeomorph + theorem continuous_linear_equiv.trans_to_linear_equiv + structure continuous_linear_equiv +/- theorem continuous_linear_map.add_comp +/- theorem continuous_linear_map.coe_add' +/- theorem continuous_linear_map.coe_add +/- theorem continuous_linear_map.coe_apply' +/- theorem continuous_linear_map.coe_apply +/- theorem continuous_linear_map.coe_coe +/- theorem continuous_linear_map.coe_comp' +/- theorem continuous_linear_map.coe_comp +/- theorem continuous_linear_map.coe_id' +/- theorem continuous_linear_map.coe_id +/- theorem continuous_linear_map.coe_neg' +/- theorem continuous_linear_map.coe_neg +/- theorem continuous_linear_map.coe_sub' +/- theorem continuous_linear_map.coe_sub +/- theorem continuous_linear_map.coe_zero' +/- theorem continuous_linear_map.coe_zero +/- def continuous_linear_map.comp +/- theorem continuous_linear_map.comp_add +/- theorem continuous_linear_map.comp_zero +/- theorem continuous_linear_map.ext +/- theorem continuous_linear_map.ext_iff +/- def continuous_linear_map.id +/- theorem continuous_linear_map.id_apply +/- theorem continuous_linear_map.map_zero +/- theorem continuous_linear_map.one_apply +/- def continuous_linear_map.prod +/- def continuous_linear_map.smul_right +/- theorem continuous_linear_map.smul_right_apply +/- theorem continuous_linear_map.smul_right_one_eq_iff +/- theorem continuous_linear_map.smul_right_one_one +/- theorem continuous_linear_map.sub_apply +/- def continuous_linear_map.zero +/- theorem continuous_linear_map.zero_apply +/- theorem continuous_linear_map.zero_comp +/- theorem continuous_smul +/- theorem is_closed_map_smul_of_ne_zero +/- theorem is_closed_map_smul_of_unit +/- theorem is_open_map_smul_of_ne_zero +/- theorem is_open_map_smul_of_unit +/- def topological_vector_space 2020-01-02 22:16:08 5c3606d feat(order/filter/basic): define `filter.eventually` and `filter.frequently` (#1845) * feat(order/filter/basic): define `filter.eventually` and `filter.frequently` As suggested in #119 * More lemmas, use notation * Fix a typo * Update src/order/filter/basic.lean Co-Authored-By: Johan Commelin * Update src/order/filter/basic.lean * Add a short file docstring * Update src/order/filter/basic.lean ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.eventually.exists + theorem filter.eventually.frequently + theorem filter.eventually.mono + theorem filter.eventually.mp + theorem filter.eventually_false_iff_eq_bot + theorem filter.eventually_of_forall + theorem filter.eventually_true + theorem filter.frequently.and_eventually + theorem filter.frequently.exists + theorem filter.frequently.mono + theorem filter.frequently.mp + theorem filter.frequently_iff_forall_eventually_exists_and 2020-01-02 19:10:24 840bd1f feat(analysis/calculus/deriv): add aliases for `const op f` and `f op const` (#1843) * feat(analysis/calculus/deriv): add aliases for `const op f` and `f op const` Often this leads to simpler answers. * Docs * Fix compile of `mean_value.lean` * Drop comments, use `open_locale classical` ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_add_const + theorem deriv_const_add + theorem deriv_const_mul + theorem deriv_const_smul + theorem deriv_const_sub + theorem deriv_mul_const - theorem deriv_smul' + theorem deriv_smul + theorem deriv_smul_const + theorem deriv_sub_const + theorem deriv_within_add_const + theorem deriv_within_const_add + theorem deriv_within_const_mul + theorem deriv_within_const_smul + theorem deriv_within_const_sub + theorem deriv_within_mul_const - theorem deriv_within_smul' + theorem deriv_within_smul + theorem deriv_within_smul_const + theorem deriv_within_sub_const + theorem has_deriv_at.add_const + theorem has_deriv_at.const_add + theorem has_deriv_at.const_mul + theorem has_deriv_at.const_smul + theorem has_deriv_at.const_sub + theorem has_deriv_at.mul_const - theorem has_deriv_at.smul' + theorem has_deriv_at.smul + theorem has_deriv_at.smul_const + theorem has_deriv_at.sub_const + theorem has_deriv_at_filter.add_const + theorem has_deriv_at_filter.const_add + theorem has_deriv_at_filter.const_sub + theorem has_deriv_at_filter.sub_const + theorem has_deriv_within_at.add_const + theorem has_deriv_within_at.const_add + theorem has_deriv_within_at.const_mul + theorem has_deriv_within_at.const_smul + theorem has_deriv_within_at.const_sub + theorem has_deriv_within_at.mul_const - theorem has_deriv_within_at.smul' + theorem has_deriv_within_at.smul + theorem has_deriv_within_at.smul_const + theorem has_deriv_within_at.sub_const Modified src/analysis/calculus/fderiv.lean + theorem differentiable.add_const + theorem differentiable.const_add + theorem differentiable.const_mul + theorem differentiable.const_smul + theorem differentiable.const_sub + theorem differentiable.mul_const - theorem differentiable.smul' +/- theorem differentiable.smul + theorem differentiable.smul_const + theorem differentiable.sub_const + theorem differentiable_at.add_const + theorem differentiable_at.const_add + theorem differentiable_at.const_mul + theorem differentiable_at.const_smul + theorem differentiable_at.const_sub + theorem differentiable_at.mul_const - theorem differentiable_at.smul' +/- theorem differentiable_at.smul + theorem differentiable_at.smul_const + theorem differentiable_at.sub_const + theorem differentiable_on.add_const + theorem differentiable_on.const_add + theorem differentiable_on.const_mul + theorem differentiable_on.const_smul + theorem differentiable_on.const_sub + theorem differentiable_on.mul_const - theorem differentiable_on.smul' +/- theorem differentiable_on.smul + theorem differentiable_on.smul_const + theorem differentiable_on.sub_const + theorem differentiable_within_at.add_const + theorem differentiable_within_at.const_add + theorem differentiable_within_at.const_mul + theorem differentiable_within_at.const_smul + theorem differentiable_within_at.const_sub + theorem differentiable_within_at.mul_const - theorem differentiable_within_at.smul' +/- theorem differentiable_within_at.smul + theorem differentiable_within_at.smul_const + theorem differentiable_within_at.sub_const + theorem fderiv_add_const + theorem fderiv_const_add + theorem fderiv_const_mul + theorem fderiv_const_smul + theorem fderiv_const_sub + theorem fderiv_mul_const - theorem fderiv_smul' +/- theorem fderiv_smul + theorem fderiv_smul_const + theorem fderiv_sub_const + theorem fderiv_within_add_const + theorem fderiv_within_const_add + theorem fderiv_within_const_mul + theorem fderiv_within_const_smul + theorem fderiv_within_const_sub + theorem fderiv_within_mul_const - theorem fderiv_within_smul' + theorem fderiv_within_smul_const + theorem fderiv_within_sub_const + theorem has_fderiv_at.add_const + theorem has_fderiv_at.const_add + theorem has_fderiv_at.const_mul + theorem has_fderiv_at.const_smul + theorem has_fderiv_at.const_sub + theorem has_fderiv_at.mul_const - theorem has_fderiv_at.smul' +/- theorem has_fderiv_at.smul + theorem has_fderiv_at.smul_const + theorem has_fderiv_at.sub_const + theorem has_fderiv_at_filter.add_const + theorem has_fderiv_at_filter.const_add + theorem has_fderiv_at_filter.const_smul + theorem has_fderiv_at_filter.const_sub - theorem has_fderiv_at_filter.smul + theorem has_fderiv_at_filter.sub_const + theorem has_fderiv_within_at.add_const + theorem has_fderiv_within_at.const_add + theorem has_fderiv_within_at.const_mul + theorem has_fderiv_within_at.const_smul + theorem has_fderiv_within_at.const_sub + theorem has_fderiv_within_at.mul_const - theorem has_fderiv_within_at.smul' +/- theorem has_fderiv_within_at.smul + theorem has_fderiv_within_at.smul_const + theorem has_fderiv_within_at.sub_const Modified src/analysis/calculus/mean_value.lean Modified src/analysis/complex/exponential.lean + theorem has_deriv_at.cexp + theorem has_deriv_at.rexp + theorem has_deriv_within_at.cexp + theorem has_deriv_within_at.rexp 2020-01-02 18:35:24 7b18bbf feat(topology/algebra/ordered): add `*_mem_nhds_within_Ioi`, reorder args of `is_closed.Icc_subset_of_forall_exists_gt` (#1844) ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean + theorem Icc_mem_nhds_within_Ioi + theorem Ico_mem_nhds_within_Ioi + theorem Ioc_mem_nhds_within_Ioi + theorem Ioo_mem_nhds_within_Ioi + theorem mem_nhds_within_Iio_iff_exists_mem_Ico_Ioo_subset + theorem mem_nhds_within_Ioi_iff_exists_mem_Ioc_Ioo_subset 2020-01-02 10:40:36 033ecbf chore(topology/*): add a few more trivial `continuous_(within_)at` lemmas (#1842) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem continuous_at.inv + theorem continuous_within_at.inv Modified src/topology/algebra/monoid.lean + theorem continuous_at.mul + theorem continuous_within_at.mul Modified src/topology/basic.lean + theorem continuous_at_const + theorem continuous_at_id Modified src/topology/continuous_on.lean + theorem continuous_on_id + theorem continuous_within_at_const + theorem continuous_within_at_id 2020-01-02 09:04:12 ffa9785 feat(topology/algebra/ordered): prove that `nhds_within (Ioi a) b ≠ ⊥` if `a ≤ b` (#1841) + few similar statements Also drop decidability assumption in `closure_Ioo` etc. We don't care about using classical reasoning anyway, and usage of `classical.DLO` here doesn't lead to any `noncomputable` defs. ESTIMATED CHANGES Modified src/order/bounds.lean Modified src/topology/algebra/ordered.lean + theorem nhds_within_Iio_ne_bot' + theorem nhds_within_Iio_ne_bot + theorem nhds_within_Iio_self_ne_bot' + theorem nhds_within_Iio_self_ne_bot + theorem nhds_within_Ioi_ne_bot' + theorem nhds_within_Ioi_ne_bot + theorem nhds_within_Ioi_self_ne_bot' + theorem nhds_within_Ioi_self_ne_bot 2020-01-01 22:13:19 d08d509 fix(metric_space/gromo_hausdorff): lemma should be instance + linting (#1840) ESTIMATED CHANGES Modified src/topology/metric_space/gromov_hausdorff.lean +/- theorem Gromov_Hausdorff.GH_dist_le_of_approx_subsets - theorem Gromov_Hausdorff.second_countable 2019-12-29 08:52:23 acf2038 feat(analysis/calculus/mean_value): more corollaries of the MVT (#1819) * feat(analysis/calculus/mean_value): more corolaries of the MVT * Fix compile, add "strict inequalities" versions of some theorems, add docs * Update src/analysis/calculus/mean_value.lean * Add theorems for `convex_on univ` * Fix comments * @sgouezel adds missing articles Thanks a lot! We don't have them in Russian, so it's hard for me to put them right. Co-Authored-By: sgouezel * Update src/analysis/calculus/mean_value.lean Co-Authored-By: sgouezel * Add more `univ` versions ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean + theorem antimono_of_deriv_nonpos + theorem convex.antimono_of_deriv_nonpos + theorem convex.image_sub_le_mul_sub_of_deriv_le + theorem convex.image_sub_lt_mul_sub_of_deriv_lt + theorem convex.mono_of_deriv_nonneg + theorem convex.mul_sub_le_image_sub_of_le_deriv + theorem convex.mul_sub_lt_image_sub_of_lt_deriv + theorem convex.strict_antimono_of_deriv_neg + theorem convex.strict_mono_of_deriv_pos + theorem convex_on_of_deriv2_nonneg + theorem convex_on_of_deriv_mono + theorem convex_on_univ_of_deriv2_nonneg + theorem convex_on_univ_of_deriv_mono + theorem image_sub_le_mul_sub_of_deriv_le + theorem image_sub_lt_mul_sub_of_deriv_lt + theorem is_const_of_fderiv_eq_zero + theorem mono_of_deriv_nonneg + theorem mul_sub_le_image_sub_of_le_deriv + theorem mul_sub_lt_image_sub_of_lt_deriv + theorem strict_antimono_of_deriv_neg + theorem strict_mono_of_deriv_pos Modified src/analysis/convex.lean - theorem convex_on_linorder + theorem convex_on_real_of_slope_mono_adjacent + theorem linear_order.convex_on_of_lt 2019-12-28 20:31:03 64770a8 feat(analysis/calculus/deriv): Prove equivalence of Fréchet derivative and the classical definition (#1834) * feat(analysis/calculus/deriv): Prove equivalence of Fréchet derivative and the classical definition * Fix a typo * Move, change doc, add versions for `has_deriv_within_at` and `has_deriv_at`. * Fix docstring, remove an unsed argument ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_at_filter_iff_tendsto_slope + theorem has_deriv_at_iff_tendsto_slope + theorem has_deriv_within_at_iff_tendsto_slope Modified src/analysis/calculus/fderiv.lean Modified src/order/filter/basic.lean - theorem filter.tendsto.congr'r + theorem filter.tendsto_congr' + theorem filter.tendsto_congr Modified src/topology/basic.lean + theorem tendsto_inf_principal_nhds_iff_of_forall_eq 2019-12-28 13:01:45 e43905b refactor(topology/algebra/ordered): formulate a few "Icc induction" principles (#1833) * refactor(topology/algebra/ordered): use `tfae`, prove equality of some `nhds_within` * Add missing `order_dual.*` instances * Try to fix the build * Fix formatting, rename some variables * refactor(topology/algebra/ordered): formulate a few "Icc induction" principles They have other applications than proving `is_connected_Icc`. * Fix doc Co-Authored-By: sgouezel * Rephraze docs * Drop an unused argument ESTIMATED CHANGES Modified src/topology/algebra/ordered.lean + theorem is_closed.Icc_subset_of_forall_exists_gt + theorem is_closed.Icc_subset_of_forall_mem_nhds_within + theorem is_closed.mem_of_ge_of_forall_exists_gt 2019-12-28 11:42:42 a6a8a11 refactor(data/equiv/encodable): bring `directed.sequence*` from `integration`, use `quotient.rep` instead of `quot.rep` (#1825) * refactor(data/equiv/encodable): bring `directed.sequence*` from `integration`, use `quotient.rep` instead of `quot.rep` `sequence_of_directed` in `measure_theory/integration` did not belong there. Also add some docstrings. * doc/style fixes by @sgouezel Co-Authored-By: sgouezel * Remove an unused argument, add a docstring * Completely remove the `reflexive r` assumption ESTIMATED CHANGES Modified src/data/equiv/encodable.lean + theorem directed.le_sequence + theorem directed.rel_sequence + theorem directed.sequence_mono + theorem directed.sequence_mono_nat + def encodable_quotient - def quot.encodable_quotient - def quot.rep - theorem quot.rep_spec + def quotient.rep + theorem quotient.rep_spec Modified src/measure_theory/integration.lean - theorem le_sequence_of_directed + theorem measure_theory.simple_func.seq_apply - theorem monotone_sequence_of_directed Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.all_ae_of_all 2019-12-28 10:05:30 340fa14 feat(analysis/specific_limits): add a few more limits (#1832) * feat(analysis/specific_limits): add a few more limits * Drop 1 lemma, generalize two others. * Rename `tendsto_inverse_at_top_nhds_0`, fix compile ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/specific_limits.lean + theorem lim_norm_zero' + theorem normed_field.tendsto_norm_inverse_nhds_within_0_at_top + theorem tendsto_inv_at_top_zero' + theorem tendsto_inv_at_top_zero - theorem tendsto_inverse_at_top_nhds_0 + theorem tendsto_norm_at_top_at_top Modified src/topology/algebra/ordered.lean + theorem tendsto_abs_at_top_at_top 2019-12-27 20:26:09 0a9a1ff refactor(topology/algebra/ordered): use `tfae`, prove equality of some `nhds_within` (#1831) * refactor(topology/algebra/ordered): use `tfae`, prove equality of some `nhds_within` * Add missing `order_dual.*` instances * Try to fix the build * Fix formatting, rename some variables * Fix compile ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/order/basic.lean Modified src/topology/algebra/ordered.lean + theorem nhds_within_Ico_eq_nhds_within_Iio + theorem nhds_within_Ioc_eq_nhds_within_Ioi + theorem nhds_within_Ioo_eq_nhds_within_Iio + theorem nhds_within_Ioo_eq_nhds_within_Ioi + theorem tfae_mem_nhds_within_Iio + theorem tfae_mem_nhds_within_Ioi 2019-12-27 18:11:30 82ca731 refactor(calculus): simplify derivative extension (#1826) * refactor(calculus): simplify derivative extension * generalize continuous_within_at.closure_le * Simplify proof following Sébastien * Update src/analysis/calculus/extend_deriv.lean ESTIMATED CHANGES Modified src/analysis/calculus/extend_deriv.lean Modified src/topology/algebra/ordered.lean + theorem continuous_within_at.closure_le Modified src/topology/continuous_on.lean + theorem continuous_within_at.image_closure + theorem continuous_within_at.mem_closure + theorem nhds_within_prod_eq 2019-12-27 15:35:17 3a78f49 feat(order/basic): add `dual_le` and `dual_lt` lemmas (#1830) ESTIMATED CHANGES Modified src/order/basic.lean + theorem order_dual.dual_le + theorem order_dual.dual_lt 2019-12-27 14:05:28 c9a81b0 refactor(*): unify API of `list/multiset/finset.prod_hom` (#1820) * refactor(*): unify API of `list/multiset/finset.prod_hom` Also remove `is_group_hom.map_prod`; use `*.prod_hom.symm` or `monoid_hom.map_*prod` instead. * Update src/ring_theory/ideal_operations.lean Co-Authored-By: sgouezel * Restore explicit args of `list.fold(l/r)_hom` * Fix `group_theory/perm/sign` * Fix `quadratic_reciprocity` * Fix compile ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_hom - theorem is_group_hom.map_finset_prod - theorem is_group_hom.map_multiset_prod - theorem is_group_hom.map_prod + theorem monoid_hom.map_prod Modified src/algebra/module.lean Modified src/algebra/pi_instances.lean Modified src/analysis/normed_space/basic.lean Modified src/category/fold.lean Modified src/data/complex/exponential.lean + theorem complex.exp_list_sum + theorem complex.exp_multiset_sum + theorem complex.exp_sum + theorem real.exp_list_sum + theorem real.exp_multiset_sum + theorem real.exp_sum Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/list/basic.lean +/- theorem list.foldl_hom +/- theorem list.foldl_map +/- theorem list.foldr_hom +/- theorem list.foldr_map + theorem list.prod_hom + theorem list.prod_hom_rel + theorem monoid_hom.map_list_prod Modified src/data/matrix/basic.lean Modified src/data/multiset.lean + theorem monoid_hom.map_multiset_prod +/- theorem multiset.prod_hom + theorem multiset.prod_hom_rel - theorem multiset.sum_hom Modified src/data/mv_polynomial.lean Modified src/data/pnat/factors.lean Modified src/data/polynomial.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean + theorem nnreal.coe_list_prod + theorem nnreal.coe_list_sum + theorem nnreal.coe_multiset_prod + theorem nnreal.coe_multiset_sum + theorem nnreal.coe_prod + theorem nnreal.coe_sum - theorem nnreal.prod_coe - theorem nnreal.sum_coe Modified src/data/zmod/quadratic_reciprocity.lean Modified src/field_theory/mv_polynomial.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basic.lean Modified src/measure_theory/probability_mass_function.lean Modified src/order/order_iso.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/power_series.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean 2019-12-27 12:40:25 0a87dd8 feat(topology/basic): a few simple lemmas (#1829) * feat(topology/basic): a few simple lemmas * Fix compile ESTIMATED CHANGES Modified src/topology/basic.lean + theorem closure_inter_subset_inter_closure + theorem frontier_inter_subset + theorem frontier_union_subset + theorem is_closed.frontier_eq + theorem is_open.frontier_eq + theorem monotone_closure 2019-12-27 11:08:24 89854fa refactor(analysis/calculus/deriv): Use equality of functions (#1818) * refactor(analysis/calculus/deriv): Use equality of functions This way we can rewrite, e.g., in `deriv (deriv sin)`. * Restore some old lemmas * Restore old `deriv_cos`, fix `deriv_id'` * Update src/analysis/calculus/deriv.lean Co-Authored-By: Johan Commelin * Fix compile ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_const' + theorem deriv_id' +/- theorem deriv_id + theorem deriv_neg' +/- theorem deriv_neg + theorem deriv_pow' +/- theorem deriv_pow Modified src/analysis/complex/exponential.lean + theorem complex.deriv_cos' +/- theorem complex.deriv_cos +/- theorem complex.deriv_cosh +/- theorem complex.deriv_exp +/- theorem complex.deriv_sin +/- theorem complex.deriv_sinh + theorem complex.iter_deriv_exp + theorem real.deriv_cos' +/- theorem real.deriv_cos +/- theorem real.deriv_cosh +/- theorem real.deriv_exp +/- theorem real.deriv_sin +/- theorem real.deriv_sinh + theorem real.iter_deriv_exp 2019-12-27 09:41:58 c1a993d feat(data/set/intervals): unions of adjacent intervals (#1827) ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Icc_union_Icc_eq_Icc + theorem set.Icc_union_Ici_eq_Ioi + theorem set.Icc_union_Ico_eq_Ico + theorem set.Icc_union_Ioc_eq_Icc + theorem set.Icc_union_Ioi_eq_Ioi + theorem set.Icc_union_Ioo_eq_Ico + theorem set.Ico_union_Icc_eq_Icc + theorem set.Ico_union_Ici_eq_Ioi + theorem set.Ico_union_Ico_eq_Ico + theorem set.Iic_union_Icc_eq_Iic +/- theorem set.Iic_union_Ici + theorem set.Iic_union_Ico_eq_Iio + theorem set.Iic_union_Ioc_eq_Iic +/- theorem set.Iic_union_Ioi + theorem set.Iic_union_Ioo_eq_Iio + theorem set.Iio_union_Icc_eq_Iic +/- theorem set.Iio_union_Ici + theorem set.Iio_union_Ico_eq_Iio + theorem set.Ioc_union_Icc_eq_Ioc + theorem set.Ioc_union_Ici_eq_Ioi + theorem set.Ioc_union_Ico_eq_Ioo + theorem set.Ioc_union_Ioc_eq_Ioc + theorem set.Ioc_union_Ioi_eq_Ioi + theorem set.Ioc_union_Ioo_eq_Ioo + theorem set.Ioo_union_Icc_eq_Ioc + theorem set.Ioo_union_Ici_eq_Ioi + theorem set.Ioo_union_Ico_eq_Ioo +/- theorem set.nonempty_Ici +/- theorem set.nonempty_Iic + theorem set.nonempty_Ioo 2019-12-26 16:34:12 7e2d4b8 feat(analysis/calculus/extend_deriv): extend differentiability to the boundary (#1794) * feat(analysis/calculus/extend_deriv): extend differentiability to the boundary * fix build ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.congr + theorem has_deriv_within_at.union Added src/analysis/calculus/extend_deriv.lean + theorem has_deriv_at_interval_left_endpoint_of_tendsto_deriv + theorem has_fderiv_at_boundary_of_tendsto_fderiv + theorem has_fderiv_at_boundary_of_tendsto_fderiv_aux + theorem has_fderiv_at_interval_right_endpoint_of_tendsto_deriv Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_within_at.congr + theorem has_fderiv_within_at.union Modified src/analysis/specific_limits.lean + theorem tendsto_inv_zero_at_top Modified src/data/set/intervals/basic.lean + theorem set.Iic_union_Ici + theorem set.Iic_union_Ioi + theorem set.Iio_union_Ici 2019-12-24 05:40:16 9a9f617 fix(topology/algebra/infinite_sum): add a hint to speed up elaboration (#1824) Fix suggested by Joe on Zulip. ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean 2019-12-23 23:32:58 64921a4 refactor(topology/*): migrate to `uniform_space.complete_of_convergent_controlled_sequences` (#1821) * refactor(topology/*): migrate to `uniform_space.complete_of_convergent_controlled_sequences` Also rewrite `uniform_space.complete_of_convergent_controlled_sequences` in terms of `has_countable_basis`, and add a lemma useful to prove `l = ⨅ i, f i` for filters. * Revert some implicit/explicit argument changes No reason to have them, at least in this PR * Fix docstrings * Fix a docstring * Fix imports * `cau_seq_filter`: change namespaces, adjust `hensel` * Fix compile * Update src/topology/metric_space/cau_seq_filter.lean * Update src/topology/uniform_space/cauchy.lean ESTIMATED CHANGES Modified src/analysis/calculus/tangent_cone.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_numbers.lean Modified src/order/filter/basic.lean + theorem filter.eq_Inf_of_mem_sets_iff_exists_mem + theorem filter.eq_binfi_of_mem_sets_iff_exists_mem + theorem filter.eq_infi_of_mem_sets_iff_exists_mem Modified src/topology/bases.lean + theorem filter.has_countable_basis.comap + theorem filter.has_countable_basis_iff_mono_seq' Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean + theorem metric.complete_of_cauchy_seq_tendsto + theorem metric.complete_of_convergent_controlled_sequences Modified src/topology/metric_space/cau_seq_filter.lean + theorem cau_seq.cauchy_seq + theorem cau_seq.tendsto_limit - theorem cauchy_of_filter_cauchy + theorem cauchy_seq.is_cau_seq - theorem complete_of_cauchy_seq_tendsto - theorem emetric.complete_of_convergent_controlled_sequences - theorem ennreal.cauchy_seq_of_edist_le_half_pow - theorem ennreal.edist_le_two_mul_half_pow - theorem ennreal.half_pow_add_succ - theorem ennreal.half_pow_mono - theorem ennreal.half_pow_pos - theorem ennreal.half_pow_tendsto_zero - theorem filter_cauchy_of_cauchy - theorem metric.complete_of_convergent_controlled_sequences - theorem sequentially_complete.B2_lim - theorem sequentially_complete.B2_pos - theorem sequentially_complete.le_nhds_cau_filter_lim - theorem sequentially_complete.mono_of_mono_succ - theorem sequentially_complete.seq_of_cau_filter_bound - theorem sequentially_complete.seq_of_cau_filter_is_cauchy - theorem sequentially_complete.seq_of_cau_filter_mem_set_seq - def sequentially_complete.set_seq_of_cau_filter - theorem sequentially_complete.set_seq_of_cau_filter_inhabited - theorem sequentially_complete.set_seq_of_cau_filter_mem_sets - theorem sequentially_complete.set_seq_of_cau_filter_monotone' - theorem sequentially_complete.set_seq_of_cau_filter_monotone - theorem sequentially_complete.set_seq_of_cau_filter_spec - theorem tendsto_limit Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean + theorem emetric.complete_of_cauchy_seq_tendsto + theorem emetric.complete_of_convergent_controlled_sequences + theorem emetric.uniformity_has_countable_basis + theorem mem_uniformity_edist_inv_nat + theorem uniformity_edist_inv_nat Modified src/topology/uniform_space/cauchy.lean +/- theorem uniform_space.complete_of_convergent_controlled_sequences 2019-12-23 22:13:46 439ac4e feat(analysis/calculus/local_extr): Fermat's Theorem, Rolle's Theorem, Lagrange's MVT, Cauchy's MVT (#1807) * feat(analysis/calculus/local_extr): Rolle's Theorem, Lagrange's MVT, Cauchy's MVT * feat(order/filter/extr,topology/algebra/local_extr): local min/max points This commit contains facts that do not require smooth structure on the domain. * Rewrite: introduce `is_min_filter`, `pos_tangent_cone_at`. * Fix compile, move code around * Drop a TODO, add some docs * Fix compile * Fix a typo * Fix #lint error * Add some docstrings * Add some missing lemmas * Use `differentiable_on` * Add/rewrite file-level docs, rename some lemmas. * Update src/analysis/calculus/local_extr.lean * Update src/order/filter/extr.lean * Fix a docstring, add Wiki links * Add refs and tags * File docstring: provide Lean names of the main lemmas. * Update src/analysis/calculus/local_extr.lean * Update src/analysis/calculus/local_extr.lean ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean + theorem has_deriv_within_at.has_deriv_at Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_within_at.has_fderiv_at Added src/analysis/calculus/local_extr.lean + theorem exists_Ioo_extr_on_Icc + theorem exists_deriv_eq_zero + theorem exists_has_deriv_at_eq_zero + theorem exists_local_extr_Ioo + theorem is_local_extr.deriv_eq_zero + theorem is_local_extr.fderiv_eq_zero + theorem is_local_extr.has_deriv_at_eq_zero + theorem is_local_extr.has_fderiv_at_eq_zero + theorem is_local_max.deriv_eq_zero + theorem is_local_max.fderiv_eq_zero + theorem is_local_max.has_deriv_at_eq_zero + theorem is_local_max.has_fderiv_at_eq_zero + theorem is_local_max_on.fderiv_within_eq_zero + theorem is_local_max_on.fderiv_within_nonpos + theorem is_local_max_on.has_fderiv_within_at_eq_zero + theorem is_local_max_on.has_fderiv_within_at_nonpos + theorem is_local_min.deriv_eq_zero + theorem is_local_min.fderiv_eq_zero + theorem is_local_min.has_deriv_at_eq_zero + theorem is_local_min.has_fderiv_at_eq_zero + theorem is_local_min_on.fderiv_within_eq_zero + theorem is_local_min_on.fderiv_within_nonneg + theorem is_local_min_on.has_fderiv_within_at_eq_zero + theorem is_local_min_on.has_fderiv_within_at_nonneg + theorem mem_pos_tangent_cone_at_of_segment_subset + def pos_tangent_cone_at + theorem pos_tangent_cone_at_mono + theorem pos_tangent_cone_at_univ Modified src/analysis/calculus/mean_value.lean + theorem convex.is_const_of_fderiv_within_eq_zero + theorem convex.norm_image_sub_le_of_norm_deriv_le + theorem exists_deriv_eq_slope + theorem exists_has_deriv_at_eq_slope + theorem exists_ratio_deriv_eq_ratio_slope + theorem exists_ratio_has_deriv_at_eq_ratio_slope - theorem norm_image_sub_le_of_norm_deriv_le_convex Modified src/analysis/complex/polynomial.lean Modified src/order/filter/basic.lean Added src/order/filter/extr.lean + theorem is_extr_filter.comp_antimono + theorem is_extr_filter.comp_mono + theorem is_extr_filter.comp_tendsto + theorem is_extr_filter.filter_inf + theorem is_extr_filter.filter_mono + theorem is_extr_filter.neg + def is_extr_filter + theorem is_extr_filter_const + theorem is_extr_filter_dual_iff + theorem is_extr_on.comp_antimono + theorem is_extr_on.comp_mono + theorem is_extr_on.elim + theorem is_extr_on.inter + theorem is_extr_on.neg + theorem is_extr_on.on_preimage + theorem is_extr_on.on_subset + def is_extr_on + theorem is_extr_on_const + theorem is_extr_on_dual_iff + theorem is_max_filter.add + theorem is_max_filter.bicomp_mono + theorem is_max_filter.comp_antimono + theorem is_max_filter.comp_mono + theorem is_max_filter.comp_tendsto + theorem is_max_filter.filter_inf + theorem is_max_filter.filter_mono + theorem is_max_filter.inf + theorem is_max_filter.is_extr + theorem is_max_filter.max + theorem is_max_filter.min + theorem is_max_filter.neg + theorem is_max_filter.sub + theorem is_max_filter.sup + def is_max_filter + theorem is_max_filter_const + theorem is_max_filter_dual_iff + theorem is_max_on.add + theorem is_max_on.bicomp_mono + theorem is_max_on.comp_antimono + theorem is_max_on.comp_mono + theorem is_max_on.inf + theorem is_max_on.inter + theorem is_max_on.is_extr + theorem is_max_on.max + theorem is_max_on.min + theorem is_max_on.neg + theorem is_max_on.on_preimage + theorem is_max_on.on_subset + theorem is_max_on.sub + theorem is_max_on.sup + def is_max_on + theorem is_max_on_const + theorem is_max_on_dual_iff + theorem is_max_on_iff + theorem is_max_on_univ_iff + theorem is_min_filter.add + theorem is_min_filter.bicomp_mono + theorem is_min_filter.comp_antimono + theorem is_min_filter.comp_mono + theorem is_min_filter.comp_tendsto + theorem is_min_filter.filter_inf + theorem is_min_filter.filter_mono + theorem is_min_filter.inf + theorem is_min_filter.is_extr + theorem is_min_filter.max + theorem is_min_filter.min + theorem is_min_filter.neg + theorem is_min_filter.sub + theorem is_min_filter.sup + def is_min_filter + theorem is_min_filter_const + theorem is_min_filter_dual_iff + theorem is_min_on.add + theorem is_min_on.bicomp_mono + theorem is_min_on.comp_antimono + theorem is_min_on.comp_mono + theorem is_min_on.inf + theorem is_min_on.inter + theorem is_min_on.is_extr + theorem is_min_on.max + theorem is_min_on.min + theorem is_min_on.neg + theorem is_min_on.on_preimage + theorem is_min_on.on_subset + theorem is_min_on.sub + theorem is_min_on.sup + def is_min_on + theorem is_min_on_const + theorem is_min_on_dual_iff + theorem is_min_on_iff + theorem is_min_on_univ_iff Modified src/topology/algebra/ordered.lean Added src/topology/local_extr.lean + theorem is_extr_on.is_local_extr + theorem is_extr_on.localize + theorem is_local_extr.comp_antimono + theorem is_local_extr.comp_continuous + theorem is_local_extr.comp_continuous_on + theorem is_local_extr.comp_mono + theorem is_local_extr.elim + theorem is_local_extr.neg + theorem is_local_extr.on + def is_local_extr + theorem is_local_extr_const + theorem is_local_extr_on.comp_antimono + theorem is_local_extr_on.comp_mono + theorem is_local_extr_on.elim + theorem is_local_extr_on.inter + theorem is_local_extr_on.is_local_extr + theorem is_local_extr_on.neg + theorem is_local_extr_on.on_subset + def is_local_extr_on + theorem is_local_extr_on_const + theorem is_local_max.add + theorem is_local_max.bicomp_mono + theorem is_local_max.comp_antimono + theorem is_local_max.comp_continuous + theorem is_local_max.comp_continuous_on + theorem is_local_max.comp_mono + theorem is_local_max.inf + theorem is_local_max.max + theorem is_local_max.min + theorem is_local_max.neg + theorem is_local_max.on + theorem is_local_max.sub + theorem is_local_max.sup + def is_local_max + theorem is_local_max_const + theorem is_local_max_on.add + theorem is_local_max_on.bicomp_mono + theorem is_local_max_on.comp_antimono + theorem is_local_max_on.comp_mono + theorem is_local_max_on.inf + theorem is_local_max_on.inter + theorem is_local_max_on.is_local_max + theorem is_local_max_on.max + theorem is_local_max_on.min + theorem is_local_max_on.neg + theorem is_local_max_on.on_subset + theorem is_local_max_on.sub + theorem is_local_max_on.sup + def is_local_max_on + theorem is_local_max_on_const + theorem is_local_min.add + theorem is_local_min.bicomp_mono + theorem is_local_min.comp_antimono + theorem is_local_min.comp_continuous + theorem is_local_min.comp_continuous_on + theorem is_local_min.comp_mono + theorem is_local_min.inf + theorem is_local_min.max + theorem is_local_min.min + theorem is_local_min.neg + theorem is_local_min.on + theorem is_local_min.sub + theorem is_local_min.sup + def is_local_min + theorem is_local_min_const + theorem is_local_min_on.add + theorem is_local_min_on.bicomp_mono + theorem is_local_min_on.comp_antimono + theorem is_local_min_on.comp_mono + theorem is_local_min_on.inf + theorem is_local_min_on.inter + theorem is_local_min_on.is_local_min + theorem is_local_min_on.max + theorem is_local_min_on.min + theorem is_local_min_on.neg + theorem is_local_min_on.on_subset + theorem is_local_min_on.sub + theorem is_local_min_on.sup + def is_local_min_on + theorem is_local_min_on_const + theorem is_max_on.is_local_max + theorem is_max_on.localize + theorem is_min_on.is_local_min + theorem is_min_on.localize Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2019-12-20 20:34:56 883d974 feat(algebra/module): sum_smul' (for semimodules) (#1752) * feat(algebra/module): sum_smul' (for semimodules) * adding docstring * use `classical` tactic * moving ' name to the weaker theorem ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.sum_smul' - theorem finset.sum_smul Modified src/algebra/module.lean + theorem finset.sum_smul 2019-12-19 06:24:53 e875492 chore(algebra/module) remove an unneeded commutativity assumption (#1813) ESTIMATED CHANGES Modified src/algebra/module.lean +/- theorem is_linear_map.is_linear_map_smul' 2019-12-18 12:57:28 5dae5d2 chore(ring_theory/algebra): redefine module structure of Z-algebra instance (#1812) This redefines the Z-algebra instance, so that the module structure is definitionally equal to the Z-module structure of any `add_comm_group` ESTIMATED CHANGES Modified src/ring_theory/algebra.lean 2019-12-18 09:23:47 bec46af refactor(topology/*): use dot notation with `compact`, prove `compact.image` with `continuous_on` (#1809) * refactor(topology/*): use dot notation, prove `compact.image` with `continuous_on` * Apply suggestions from code review Co-Authored-By: sgouezel * Fix compile, update some proofs * Make `range_quot_mk` a `simp` lemma * Fix lint errors ESTIMATED CHANGES Modified src/analysis/complex/polynomial.lean Modified src/data/set/basic.lean + theorem set.range_inl_union_range_inr + theorem set.range_quot_mk Modified src/measure_theory/lebesgue_measure.lean Modified src/order/filter/basic.lean + theorem filter.comap_inf_principal_ne_bot_of_image_mem +/- theorem filter.comap_mono + theorem filter.comap_ne_bot_of_range_mem +/- theorem filter.map_inf + theorem filter.map_inf_le +/- theorem filter.map_mono - theorem filter.monotone_comap - theorem filter.monotone_map + theorem filter.tendsto.inf + theorem filter.tendsto.ne_bot Modified src/order/filter/lift.lean Modified src/topology/algebra/ordered.lean + theorem compact.exists_forall_ge + theorem compact.exists_forall_le - theorem exists_forall_ge_of_compact_of_continuous - theorem exists_forall_le_of_compact_of_continuous Modified src/topology/bounded_continuous_function.lean Modified src/topology/continuous_on.lean + theorem is_closed.mem_of_nhds_within_ne_bot + theorem nhds_within_ne_bot_of_mem Modified src/topology/homeomorph.lean Modified src/topology/instances/complex.lean +/- def complex.real_prod_homeo Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean + theorem compact.adherence_nhdset + theorem compact.elim_finite_subcover + theorem compact.elim_finite_subcover_image + theorem compact.image + theorem compact.image_of_continuous_on + theorem compact.inter_left + theorem compact.inter_right + theorem compact.prod + theorem compact.union + theorem compact_Union - theorem compact_Union_of_compact - theorem compact_adherence_nhdset - theorem compact_bUnion_of_compact - theorem compact_elim_finite_subcover - theorem compact_elim_finite_subcover_image - theorem compact_iff_compact_image_of_embedding - theorem compact_image - theorem compact_inter - theorem compact_of_closed - theorem compact_of_finite - theorem compact_prod - theorem compact_union_of_compact + theorem embedding.compact_iff_compact_image + theorem is_closed.compact + theorem set.finite.compact + theorem set.finite.compact_bUnion Modified src/topology/uniform_space/basic.lean 2019-12-18 06:01:42 1207518 feat(*): add command for declaring library notes (#1810) * feat(*): add command for declaring library notes * add missing file * make note names private * update docs * Update library_note.lean * Update library_note.lean ESTIMATED CHANGES Modified docs/tactics.md Modified src/algebra/category/Mon/basic.lean Modified src/algebra/group/hom.lean Modified src/algebra/module.lean Modified src/category_theory/limits/preserves.lean Modified src/group_theory/coset.lean Modified src/logic/basic.lean Modified src/meta/expr.lean Modified src/tactic/core.lean Added src/tactic/library_note.lean + def string.hash Modified src/tactic/lint.lean Modified src/tactic/localized.lean - def string_hash 2019-12-17 22:12:07 acdf272 chore(data/fintype): use `list.fin_range` for `fin.fintype` (#1811) ESTIMATED CHANGES Modified src/data/fintype.lean Modified src/data/list/basic.lean 2019-12-17 18:02:26 52e1872 refactor(topology/algebra/ordered): prove IVT for a connected set (#1806) * refactor(topology/algebra/ordered): prove IVT for a connected set Also prove that intervals are connected, and deduce the classical IVT from this. * Rewrite the proof, move `min_le_max` to the root namespace * Adjust `analysis/complex/exponential` * Add comments/`obtain` * Add some docs * Add more docs * Move some proofs to a section with weaker running assumptions * Remove empty lines, fix a docstring * +1 docstring ESTIMATED CHANGES Modified src/algebra/order.lean - theorem decidable.min_le_max Modified src/algebra/order_functions.lean + theorem min_le_max Modified src/analysis/complex/exponential.lean +/- theorem real.exists_cos_eq_zero +/- theorem real.exists_sin_eq Modified src/topology/algebra/ordered.lean + theorem intermediate_value_Icc' + theorem intermediate_value_Icc + theorem intermediate_value_univ + theorem is_connected.forall_Icc_subset + theorem is_connected.intermediate_value + theorem is_connected_Icc + theorem is_connected_Ici + theorem is_connected_Ico + theorem is_connected_Iic + theorem is_connected_Iio + theorem is_connected_Ioc + theorem is_connected_Ioi + theorem is_connected_Ioo + theorem is_connected_iff_forall_Icc_subset Modified src/topology/instances/real.lean - theorem real.intermediate_value' - theorem real.intermediate_value Modified src/topology/subset_properties.lean + theorem is_connected.closure + theorem is_connected.image + theorem is_connected.union + theorem is_connected_closed_iff - theorem is_connected_closure + theorem is_connected_of_forall + theorem is_connected_of_forall_pair - theorem is_connected_union 2019-12-17 14:48:50 d8dc144 feat(geometry/manifold): smooth bundles, tangent bundle (#1607) * feat(geometry/manifold): smooth bundles, tangent bundle * remove decidable in preamble * Update src/geometry/manifold/basic_smooth_bundle.lean Co-Authored-By: Johan Commelin * Update src/geometry/manifold/basic_smooth_bundle.lean Co-Authored-By: Johan Commelin * Update src/geometry/manifold/basic_smooth_bundle.lean Co-Authored-By: Johan Commelin * comments * cleanup * oops, forgot squeeze_simp * simpa instead of simp * oops * much better docstrings * improved formatting * space after forall * fix build * fix build, continuous.smul * minor improvements ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/analysis/convex.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/operator_norm.lean Added src/geometry/manifold/basic_smooth_bundle.lean + theorem basic_smooth_bundle_core.base_set + def basic_smooth_bundle_core.chart + theorem basic_smooth_bundle_core.chart_at_inv_fun_fst + theorem basic_smooth_bundle_core.chart_at_to_fun_fst + theorem basic_smooth_bundle_core.chart_source + theorem basic_smooth_bundle_core.chart_target + theorem basic_smooth_bundle_core.mem_atlas_iff + theorem basic_smooth_bundle_core.mem_chart_source_iff + theorem basic_smooth_bundle_core.mem_chart_target_iff + def basic_smooth_bundle_core.to_topological_fiber_bundle_core + structure basic_smooth_bundle_core + def tangent_bundle.proj + def tangent_bundle + def tangent_bundle_core + theorem tangent_bundle_model_space_chart_at + theorem tangent_bundle_model_space_topology_eq_prod + theorem tangent_bundle_proj_continuous + theorem tangent_bundle_proj_open + def tangent_space Modified src/measure_theory/borel_space.lean Modified src/topology/algebra/module.lean + theorem continuous.smul - theorem continuous_smul' +/- theorem continuous_smul + def topological_vector_space Modified src/topology/topological_fiber_bundle.lean 2019-12-17 13:38:54 308a08c refactor(topology/metric_space/closeds): migrate to `cauchy_seq_of_edist_le_geometric_two` (#1760) * feat(data/real/ennreal): more lemmas, `*_cast` tags, use `lift` tactic * Undo name change * Fix compile * nnreal: add `move_cast` * ennreal: more lemmas * Fix compile * feat(topology/instances/ennreal): more lemmas * Fix compile * Rewrite `cauchy_seq_of_edist_le_geometric` etc in terms of `ennreal`s I tried to actually use `nnreal`s, and it leads to coercions nightmare. * Simplify some proofs using new lemmas * Fix compile * Fix compile * refactor(topology/metric_space/closeds): migrate to `cauchy_seq_of_edist_le_geometric_two` ESTIMATED CHANGES Modified src/topology/metric_space/closeds.lean 2019-12-17 08:52:57 3053a16 feat(tactic/field_simp): tactic to reduce to one division in fields (#1792) * feat(algebra/field): simp set to reduce to one division in fields * tactic field_simp * fix docstring * fix build ESTIMATED CHANGES Modified docs/tactics.md Modified src/algebra/char_zero.lean +/- theorem two_ne_zero' Modified src/algebra/field.lean + theorem add_div' + theorem div_add' + theorem div_eq_iff + theorem eq_div_iff + theorem mul_div_assoc' + theorem neg_div' Modified src/algebra/group_power.lean +/- theorem inv_pow' + theorem pow_div +/- theorem pow_ne_zero Modified src/data/real/nnreal.lean Modified src/field_theory/perfect_closure.lean Modified src/tactic/interactive.lean Modified test/ring.lean Modified test/ring_exp.lean 2019-12-17 07:44:28 abea298 refactor(analysis/specific_limits): use `ennreal`s instead of `nnreal`s in `*_edist_le_geometric` (#1759) * feat(data/real/ennreal): more lemmas, `*_cast` tags, use `lift` tactic * Undo name change * Fix compile * nnreal: add `move_cast` * ennreal: more lemmas * Fix compile * feat(topology/instances/ennreal): more lemmas * Fix compile * Rewrite `cauchy_seq_of_edist_le_geometric` etc in terms of `ennreal`s I tried to actually use `nnreal`s, and it leads to coercions nightmare. * Simplify some proofs using new lemmas * Fix compile * Fix compile ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem cauchy_seq_of_edist_le_geometric_two + theorem edist_le_of_edist_le_geometric_two_of_tendsto + theorem edist_le_of_edist_le_geometric_two_of_tendsto₀: + theorem ennreal.tendsto_pow_at_top_nhds_0_of_lt_1 + theorem ennreal.tsum_geometric - theorem has_sum_geometric_nnreal + theorem nnreal.has_sum_geometric + theorem nnreal.summable_geometric + theorem nnreal.tendsto_pow_at_top_nhds_0_of_lt_1 - theorem summable_geometric_nnreal Modified src/topology/instances/ennreal.lean + theorem cauchy_seq_of_edist_le_of_tsum_ne_top +/- theorem edist_le_tsum_of_edist_le_of_tendsto +/- theorem edist_le_tsum_of_edist_le_of_tendsto₀ Modified src/topology/metric_space/cau_seq_filter.lean 2019-12-16 14:15:11 cd53e27 chore(topology/algebra/ordered): use interval notation here and there (#1802) * chore(topology/algebra/ordered): use interval notation here and there Also prove a slightly more general version of `mem_nhds_orderable_dest` * Fix a few compile errors * Rename a lemma, fix compile, add docs and `dual_I??` lemmas * Fix names, add comments * Make some lemmas simp ESTIMATED CHANGES Modified src/data/set/intervals/basic.lean + theorem set.Ici_subset_Ioi + theorem set.Iic_subset_Iio + theorem set.dual_Icc + theorem set.dual_Ici + theorem set.dual_Ico + theorem set.dual_Iic + theorem set.dual_Iio + theorem set.dual_Ioc + theorem set.dual_Ioi + theorem set.dual_Ioo +/- theorem set.nonempty_Icc +/- theorem set.nonempty_Ico +/- theorem set.nonempty_Ioc Modified src/measure_theory/borel_space.lean Modified src/order/basic.lean Modified src/order/filter/basic.lean + theorem filter.binfi_sets_eq - theorem filter.infi_sets_eq' + theorem filter.mem_binfi Modified src/order/filter/lift.lean Modified src/topology/algebra/ordered.lean + theorem closure_lt_subset_le + theorem exists_Ico_subset_of_mem_nhds' + theorem exists_Ico_subset_of_mem_nhds + theorem exists_Ioc_subset_of_mem_nhds' + theorem exists_Ioc_subset_of_mem_nhds - theorem mem_nhds_orderable_dest +/- theorem nhds_eq_orderable Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/instances/ennreal.lean 2019-12-16 10:20:01 de25b10 refactor(analysis/convex): simplify proofs, use implicit args and dot notation (#1804) * feat(data/set/intervals): add `nonempty_Icc` etc, `image_(add/mul)_(left/right)_Icc` * refactor(analysis/convex): simplify proofs, use implicit args and dot notation * Use dot notation. * Swap LHS and RHS of `image_Icc_zero_one_eq_segment`. * Introduce `finset.center_mass`, prove basic properties. * Deduce Jensen's inequality from the corresponding property of convex sets; rename corresponding lemmas. * Fix a typo Co-Authored-By: sgouezel * Update src/analysis/convex.lean ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_pair Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/convex.lean + theorem convex.add + theorem convex.affinity + theorem convex.center_mass_mem + theorem convex.closure + theorem convex.inter + theorem convex.interior + theorem convex.is_linear_image + theorem convex.is_linear_preimage + theorem convex.linear_image + theorem convex.linear_preimage + theorem convex.neg + theorem convex.neg_preimage + theorem convex.prod + theorem convex.smul + theorem convex.smul_preimage + theorem convex.sub + theorem convex.sum_mem + theorem convex.translate +/- theorem convex_Inter - theorem convex_add - theorem convex_affinity - theorem convex_closure - theorem convex_halfplane +/- theorem convex_halfspace_ge +/- theorem convex_halfspace_gt +/- theorem convex_halfspace_le +/- theorem convex_halfspace_lt + theorem convex_hyperplane + theorem convex_iff_sum_mem - theorem convex_inter - theorem convex_interior - theorem convex_le_of_convex_on - theorem convex_linear_image' - theorem convex_linear_image - theorem convex_linear_preimage' - theorem convex_linear_preimage - theorem convex_lt_of_convex_on - theorem convex_neg - theorem convex_neg_preimage + theorem convex_on.add + theorem convex_on.convex_epigraph + theorem convex_on.convex_le + theorem convex_on.convex_lt + theorem convex_on.le_on_interval + theorem convex_on.map_center_mass_le + theorem convex_on.map_sum_le + theorem convex_on.smul + theorem convex_on.subset - theorem convex_on_add + theorem convex_on_iff_convex_epigraph +/- theorem convex_on_linorder - theorem convex_on_smul - theorem convex_on_subset - theorem convex_on_sum - theorem convex_prod + theorem convex_real_iff + theorem convex_sInter - theorem convex_smul - theorem convex_smul_preimage - theorem convex_sub - theorem convex_submodule - theorem convex_subspace - theorem convex_sum - theorem convex_sum_iff - theorem convex_translation + theorem finset.center_mass_empty + theorem finset.center_mass_insert + theorem finset.center_mass_pair + theorem finset.center_mass_singleton - theorem image_Icc_zero_one_eq_segment - theorem le_on_interval_of_convex_on +/- theorem left_mem_segment +/- theorem right_mem_segment +/- def segment + theorem segment_eq_Icc' + theorem segment_eq_image_Icc_zero_one' + theorem segment_eq_image_Icc_zero_one +/- theorem segment_translate + theorem segment_translate_preimage + theorem submodule.convex + theorem subspace.convex Modified src/analysis/normed_space/real_inner_product.lean 2019-12-16 08:11:28 6188b99 feat(topology/instances/ennreal): more lemmas about tsum (#1756) * feat(data/real/ennreal): more lemmas, `*_cast` tags, use `lift` tactic * Undo name change * Fix compile * nnreal: add `move_cast` * ennreal: more lemmas * Fix compile * feat(topology/instances/ennreal): more lemmas * Fix compile ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean +/- theorem ennreal.tendsto_coe + theorem ennreal.tendsto_nat_nhds_top + theorem ennreal.tsum_coe_ne_top_iff_summable 2019-12-16 07:01:34 ee981c2 refactor(analysis/calculus/fderiv): prove `has_fderiv_within_at.lim` for any filter (#1805) * refactor(analysis/calculus/fderiv): prove `has_fderiv_within_at.lim` for any filter Also prove two versions of "directional derivative agrees with `has_fderiv_at`": `has_fderiv_at.lim` and `has_fderiv_at.lim_real`. * Rename a lemma as suggested by @sgouezel ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at.lim + theorem has_fderiv_at.lim_real +/- theorem has_fderiv_at_filter_real_equiv +/- theorem has_fderiv_within_at.lim Modified src/analysis/calculus/tangent_cone.lean +/- theorem tangent_cone_at.lim_zero Modified src/analysis/normed_space/basic.lean + theorem ne_mem_of_tendsto_norm_at_top 2019-12-15 22:29:01 699da42 feat(data/set/intervals): add `nonempty_Icc` etc, `image_(add/mul)_(left/right)_Icc` (#1803) ESTIMATED CHANGES Modified src/algebra/ordered_field.lean - theorem ivl_stretch - theorem ivl_translate Modified src/data/set/basic.lean +/- theorem set.inter_singleton_ne_empty + theorem set.nonempty.image_const Modified src/data/set/intervals/basic.lean + theorem set.image_add_left_Icc + theorem set.image_add_right_Icc + theorem set.image_mul_left_Icc' + theorem set.image_mul_left_Icc + theorem set.image_mul_right_Icc' + theorem set.image_mul_right_Icc + theorem set.nonempty_Icc + theorem set.nonempty_Ici + theorem set.nonempty_Ico + theorem set.nonempty_Iic + theorem set.nonempty_Ioc 2019-12-15 21:28:53 7cda8bb feat(data/real/ennreal): more lemmas, `*_cast` tags, use `lift` tactic (#1754) * feat(data/real/ennreal): more lemmas, `*_cast` tags, use `lift` tactic * Undo name change * Fix compile * nnreal: add `move_cast` * ennreal: more lemmas * Fix compile ESTIMATED CHANGES Modified src/analysis/specific_limits.lean Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_div + theorem ennreal.coe_inv_two +/- theorem ennreal.coe_le_one_iff + theorem ennreal.coe_lt_coe_nat +/- theorem ennreal.coe_lt_one_iff +/- theorem ennreal.coe_nat + theorem ennreal.coe_nat_lt_coe + theorem ennreal.coe_nat_lt_coe_nat + theorem ennreal.coe_nat_ne_top + theorem ennreal.coe_sub_infty + theorem ennreal.coe_two +/- theorem ennreal.div_self + theorem ennreal.div_top + theorem ennreal.inv_lt_one + theorem ennreal.inv_mul_cancel + theorem ennreal.inv_one + theorem ennreal.inv_two_add_inv_two + theorem ennreal.le_sub_add_self + theorem ennreal.max_eq_zero_iff + theorem ennreal.max_mul + theorem ennreal.mul_div_cancel' + theorem ennreal.mul_div_cancel + theorem ennreal.mul_eq_mul_right +/- theorem ennreal.mul_inv_cancel - theorem ennreal.mul_le_if_le_inv + theorem ennreal.mul_le_iff_le_inv + theorem ennreal.mul_le_mul + theorem ennreal.mul_le_mul_right + theorem ennreal.mul_left_mono + theorem ennreal.mul_lt_mul_left + theorem ennreal.mul_lt_mul_right + theorem ennreal.mul_max + theorem ennreal.mul_ne_top + theorem ennreal.mul_right_mono + theorem ennreal.mul_sub + theorem ennreal.one_half_lt_one +/- theorem ennreal.one_le_coe_iff +/- theorem ennreal.one_lt_coe_iff + theorem ennreal.one_lt_two + theorem ennreal.one_sub_inv_two + theorem ennreal.pow_eq_top + theorem ennreal.pow_lt_top + theorem ennreal.pow_ne_top + theorem ennreal.sub_eq_of_add_eq + theorem ennreal.sub_half + theorem ennreal.sub_le_sub_add_sub + theorem ennreal.sub_mul +/- theorem ennreal.to_nnreal_coe + theorem ennreal.top_div + theorem ennreal.top_pow + theorem ennreal.two_ne_top + theorem ennreal.two_ne_zero + theorem ennreal.two_pos + theorem ennreal.zero_div +/- theorem ennreal.zero_lt_coe_iff Modified src/data/real/nnreal.lean + theorem nnreal.inv_one + theorem nnreal.two_inv_lt_one 2019-12-15 19:32:42 871a36f feat(group_theory/monoid_localization) add localizations of commutative monoids at submonoids (#1798) * 1st half of monoid_localization * change in implementation notes * fixing naming clashes * change additive version's name * oops, had a /- instead of /-- * generalize comm_monoid instance * remove notes to self * responding to PR comments ESTIMATED CHANGES Modified src/group_theory/congruence.lean +/- def con.ker_lift Added src/group_theory/monoid_localization.lean + theorem add_submonoid.r'.add + theorem add_submonoid.r'.transitive + def add_submonoid.r' + def monoid_localization.aux + theorem monoid_localization.exists_rep + theorem monoid_localization.funext + theorem monoid_localization.ind + theorem monoid_localization.induction_on + theorem monoid_localization.is_unit_of_of_comp + def monoid_localization.lift' + theorem monoid_localization.lift'_apply_of + theorem monoid_localization.lift'_comp_of + theorem monoid_localization.lift'_eq_iff + theorem monoid_localization.lift'_mk + theorem monoid_localization.lift'_of + theorem monoid_localization.lift_apply_of + theorem monoid_localization.lift_comp_of + theorem monoid_localization.lift_eq_iff + theorem monoid_localization.lift_mk + theorem monoid_localization.lift_of + theorem monoid_localization.lift_on_beta + def monoid_localization.map + theorem monoid_localization.map_comp_map + theorem monoid_localization.map_comp_of + theorem monoid_localization.map_eq + theorem monoid_localization.map_ext + theorem monoid_localization.map_id + theorem monoid_localization.map_map + theorem monoid_localization.map_mk + theorem monoid_localization.map_of + def monoid_localization.mk + theorem monoid_localization.mk_eq + theorem monoid_localization.mk_eq_iff_of_eq + theorem monoid_localization.mk_eq_mul_mk_one + theorem monoid_localization.mk_eq_of_eq + theorem monoid_localization.mk_is_unit' + theorem monoid_localization.mk_is_unit + theorem monoid_localization.mk_mul_cancel_left + theorem monoid_localization.mk_mul_cancel_right + theorem monoid_localization.mk_mul_mk + theorem monoid_localization.mk_self' + theorem monoid_localization.mk_self + def monoid_localization.of + theorem monoid_localization.of_eq_mk + theorem monoid_localization.of_is_unit' + theorem monoid_localization.of_is_unit + theorem monoid_localization.of_ker_iff + theorem monoid_localization.of_mul_mk + theorem monoid_localization.one_rel + theorem monoid_localization.r_le_ker_aux + def monoid_localization.to_units + theorem monoid_localization.to_units_inv + theorem monoid_localization.to_units_map_inv + theorem monoid_localization.to_units_mk + def monoid_localization.units_restrict + theorem monoid_localization.units_restrict_mul + def monoid_localization + def submonoid.r' + def submonoid.r + theorem submonoid.r_eq_r' 2019-12-15 17:52:56 7dfbcdd (docs/tactics.md) adding `norm_num` [ci skip] (#1799) * (docs/tactics.md) adding `norm_num` [ci skip] * fixing example * clarifying explanation, adding more examples * one more example * one more example * editing norm_num docstring ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/norm_num.lean 2019-12-15 16:39:49 9a37e3f refactor(*): make vector_space an abbreviation for module (#1793) * refactor(*): make vector_space an abbreviation for module * Remove superfluous instances * Fix build * Add Note[vector space definition] * Update src/algebra/module.lean * Fix build (hopefully) * Update src/measure_theory/bochner_integration.lean ESTIMATED CHANGES Modified src/algebra/module.lean + def vector_space Modified src/algebra/pi_instances.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/linear_algebra/basic.lean Modified src/measure_theory/bochner_integration.lean Modified src/ring_theory/algebra.lean 2019-12-13 22:04:36 a3844c8 chore(algebra/group/basic): DRY, add `mul_left_surjective` (#1801) Some lemmas explicitly listed arguments already declared using `variables`, remove them. ESTIMATED CHANGES Modified src/algebra/group/basic.lean +/- theorem inv_comm_of_comm +/- theorem mul_inv_eq_one +/- theorem mul_left_eq_self + theorem mul_left_surjective +/- theorem mul_right_eq_self + theorem mul_right_surjective 2019-12-13 18:10:30+01:00 bb7d4c9 chore(data/set/lattice): drop `Union_eq_sUnion_range` and `Inter_eq_sInter_range` (#1800) * chore(data/set/lattice): drop `Union_eq_sUnion_range` and `Inter_eq_sInter_range` Two reasons: * we already have `sUnion_range` and `sInter_range`, no need to repeat ourselves; * proofs used wrong universes. * Try to fix compile ESTIMATED CHANGES Modified src/data/set/lattice.lean - theorem set.Inter_eq_sInter_range - theorem set.Union_eq_sUnion_range Modified src/set_theory/cofinality.lean 2019-12-12 21:45:20 3281698 feat(data/padics/padic_integers): algebra structure Z_p -> Q_p (#1796) * feat(data/padics/padic_integers): algebra structure Z_p -> Q_p * Update src/data/padics/padic_integers.lean Co-Authored-By: Floris van Doorn * Fix build ESTIMATED CHANGES Modified src/data/padics/padic_integers.lean 2019-12-12 09:05:22 69e861e feat(measure_theory/bochner_integration): connecting the Bochner integral with the integral on `ennreal`-valued functions (#1790) * shorter proof * feat(measure_theory/bochner_integration): connecting the Bochner integral with the integral on `ennreal` This PR proves that `∫ f = ∫ f⁺ - ∫ f⁻`, with the first integral sign being the Bochner integral of a real-valued function `f : α → ℝ`, and second and third integral sign being the integral on `ennreal`-valued functions. See `integral_eq_lintegral_max_sub_lintegral_min`. I feel that most of the basic properties of the Bochner integral are proved. Please let me know if you think something else is needed. * various things : * add guides for typeclass inference; * add `norm_cast` tags; * prove some corollaries; * add doc strings; * other fixes * Update bochner_integration.lean * add some doc strings * Fix doc strings * Update bochner_integration.lean * Update bochner_integration.lean * fix doc strings * Update bochner_integration.lean * Use dot notation * use dot notation * Update Meas.lean ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem abs_max_sub_max_le_abs + theorem max_zero_sub_eq_self Modified src/measure_theory/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.neg_mk + def measure_theory.ae_eq_fun.pos_part + theorem measure_theory.ae_eq_fun.pos_part_to_fun Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_eq_lintegral_max_sub_lintegral_min + theorem measure_theory.integral_eq_lintegral_of_nonneg_ae + theorem measure_theory.integral_le_integral_of_le_ae + theorem measure_theory.integral_nonneg_of_nonneg_ae + theorem measure_theory.integral_nonpos_of_nonpos_ae + theorem measure_theory.l1.integral_coe_eq_integral + theorem measure_theory.l1.integral_eq_norm_pos_part_sub +/- theorem measure_theory.l1.simple_func.coe_add +/- theorem measure_theory.l1.simple_func.coe_neg + theorem measure_theory.l1.simple_func.coe_neg_part + theorem measure_theory.l1.simple_func.coe_pos_part +/- theorem measure_theory.l1.simple_func.coe_smul +/- theorem measure_theory.l1.simple_func.coe_sub +/- theorem measure_theory.l1.simple_func.coe_zero +/- def measure_theory.l1.simple_func.integral + theorem measure_theory.l1.simple_func.integral_eq_bintegral + theorem measure_theory.l1.simple_func.integral_eq_norm_pos_part_sub + def measure_theory.l1.simple_func.neg_part + theorem measure_theory.l1.simple_func.neg_part_to_simple_func + def measure_theory.l1.simple_func.pos_part + theorem measure_theory.l1.simple_func.pos_part_to_simple_func + theorem measure_theory.norm_integral_le_integral_norm - theorem measure_theory.of_real_norm_integral_le_lintegral_norm + theorem measure_theory.simple_func.bintegral_neg + theorem measure_theory.simple_func.bintegral_sub + def measure_theory.simple_func.neg_part + theorem measure_theory.simple_func.neg_part_map_norm + def measure_theory.simple_func.pos_part + theorem measure_theory.simple_func.pos_part_map_norm + theorem measure_theory.simple_func.pos_part_sub_neg_part Modified src/measure_theory/borel_space.lean + def borel + theorem borel_comap + theorem borel_eq_generate_Iio + theorem borel_eq_generate_Ioi + theorem borel_eq_generate_from_of_subbasis + theorem borel_eq_subtype + theorem borel_induced + theorem borel_prod + theorem borel_prod_le + theorem ennreal.measurable.add + theorem ennreal.measurable.mul + theorem ennreal.measurable.sub - theorem ennreal.measurable_add - theorem ennreal.measurable_mul - theorem ennreal.measurable_sub + theorem is_measurable_Ico + theorem is_measurable_Iio + theorem is_measurable_Ioo + theorem is_measurable_ball + theorem is_measurable_closure + theorem is_measurable_interior + theorem is_measurable_le + theorem is_measurable_of_is_closed + theorem is_measurable_of_is_open + theorem is_measurable_singleton + theorem measurable.add + theorem measurable.infi + theorem measurable.infi_Prop + theorem measurable.is_glb + theorem measurable.is_lub + theorem measurable.max + theorem measurable.min + theorem measurable.mul + theorem measurable.neg + theorem measurable.sub + theorem measurable.supr + theorem measurable.supr_Prop + theorem measurable_coe_int_real + theorem measurable_finset_sum + theorem measurable_neg_iff + theorem measurable_of_continuous2 + theorem measurable_of_continuous - def measure_theory.borel - theorem measure_theory.borel_comap - theorem measure_theory.borel_eq_generate_Iio - theorem measure_theory.borel_eq_generate_Ioi - theorem measure_theory.borel_eq_generate_from_of_subbasis - theorem measure_theory.borel_eq_subtype - theorem measure_theory.borel_induced - theorem measure_theory.borel_prod - theorem measure_theory.borel_prod_le - theorem measure_theory.is_measurable_Ico - theorem measure_theory.is_measurable_Iio - theorem measure_theory.is_measurable_Ioo - theorem measure_theory.is_measurable_ball - theorem measure_theory.is_measurable_closure - theorem measure_theory.is_measurable_interior - theorem measure_theory.is_measurable_of_is_closed - theorem measure_theory.is_measurable_of_is_open - theorem measure_theory.is_measurable_singleton - theorem measure_theory.measurable.infi - theorem measure_theory.measurable.infi_Prop - theorem measure_theory.measurable.is_glb - theorem measure_theory.measurable.is_lub - theorem measure_theory.measurable.supr - theorem measure_theory.measurable.supr_Prop - theorem measure_theory.measurable_add - theorem measure_theory.measurable_coe_int_real - theorem measure_theory.measurable_finset_sum - theorem measure_theory.measurable_le - theorem measure_theory.measurable_mul - theorem measure_theory.measurable_neg - theorem measure_theory.measurable_neg_iff - theorem measure_theory.measurable_of_continuous2 - theorem measure_theory.measurable_of_continuous - theorem measure_theory.measurable_sub + theorem nnreal.measurable.add + theorem nnreal.measurable.mul + theorem nnreal.measurable.sub - theorem nnreal.measurable_add - theorem nnreal.measurable_mul - theorem nnreal.measurable_sub Modified src/measure_theory/category/Meas.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/l1_space.lean + theorem measure_theory.ae_eq_fun.integrable.add + theorem measure_theory.ae_eq_fun.integrable.neg + theorem measure_theory.ae_eq_fun.integrable.smul + theorem measure_theory.ae_eq_fun.integrable.sub - theorem measure_theory.ae_eq_fun.integrable_add - theorem measure_theory.ae_eq_fun.integrable_neg - theorem measure_theory.ae_eq_fun.integrable_smul - theorem measure_theory.ae_eq_fun.integrable_sub + theorem measure_theory.integrable.add + theorem measure_theory.integrable.max_zero + theorem measure_theory.integrable.min_zero + theorem measure_theory.integrable.neg + theorem measure_theory.integrable.norm + theorem measure_theory.integrable.smul + theorem measure_theory.integrable.smul_iff + theorem measure_theory.integrable.sub - theorem measure_theory.integrable_add - theorem measure_theory.integrable_neg - theorem measure_theory.integrable_norm + theorem measure_theory.integrable_of_le_ae - theorem measure_theory.integrable_smul - theorem measure_theory.integrable_smul_iff - theorem measure_theory.integrable_sub +/- theorem measure_theory.l1.coe_add +/- theorem measure_theory.l1.coe_neg + theorem measure_theory.l1.coe_pos_part +/- theorem measure_theory.l1.coe_smul +/- theorem measure_theory.l1.coe_sub +/- theorem measure_theory.l1.coe_zero + theorem measure_theory.l1.continuous_neg_part + theorem measure_theory.l1.continuous_pos_part + def measure_theory.l1.neg_part + theorem measure_theory.l1.neg_part_to_fun_eq_max + theorem measure_theory.l1.neg_part_to_fun_eq_min + theorem measure_theory.l1.norm_le_norm_of_ae_le + theorem measure_theory.l1.norm_of_fun_eq_lintegral_norm + theorem measure_theory.l1.of_fun_sub + def measure_theory.l1.pos_part + theorem measure_theory.l1.pos_part_to_fun +/- theorem measure_theory.lintegral_nnnorm_add + theorem measure_theory.lintegral_norm_eq_lintegral_edist Modified src/measure_theory/measurable_space.lean + theorem measurable.fst + theorem measurable.prod_mk + theorem measurable.snd + theorem measurable.subtype_mk + theorem measurable.subtype_val - theorem measurable_fst - theorem measurable_prod_mk - theorem measurable_snd - theorem measurable_subtype_mk - theorem measurable_subtype_val Modified src/measure_theory/simple_func_dense.lean 2019-12-11 17:17:17 a8f6e23 feat(data/list/basic): list.lex.not_nil_right (#1797) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.lex.not_nil_right 2019-12-11 09:52:57 23e8ac7 feat(ring_theory/algebra): elementary simp-lemmas for aeval (#1795) ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + theorem mv_polynomial.aeval_C + theorem mv_polynomial.aeval_X + theorem polynomial.aeval_C + theorem polynomial.aeval_X 2019-12-10 19:03:24+01:00 3a10c60 chore(.mergify.yml): don't wait for travis when [ci skip] is present (#1789) ESTIMATED CHANGES Modified .mergify.yml 2019-12-10 16:39:32 361793a refactor(linear_algebra/finite_dimensional): universe polymorphism, doc (#1784) * refactor(linear_algebra/finite_dimensional): universe polymorphism, doc * docstrings * improvements * typo * Update src/linear_algebra/dimension.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/finite_dimensional.lean Co-Authored-By: Johan Commelin * Update src/linear_algebra/finite_dimensional.lean Co-Authored-By: Johan Commelin * fix comments * fix build * fix build * remove pp.universe * keep docstring in sync ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/normed_space/finite_dimension.lean +/- theorem continuous_equiv_fun_basis +/- theorem linear_map.continuous_on_pi Modified src/linear_algebra/basic.lean +/- theorem linear_map.pi_apply_eq_sum_univ + theorem submodule.map_subtype_top Modified src/linear_algebra/basis.lean - theorem linear_equiv.is_basis Modified src/linear_algebra/dimension.lean - theorem dim_quotient + theorem dim_quotient_add_dim + theorem dim_quotient_le Modified src/linear_algebra/finite_dimensional.lean - theorem finite_dimensional.card_eq_findim - theorem finite_dimensional.dim_eq_card + theorem finite_dimensional.dim_eq_card_basis +/- theorem finite_dimensional.exists_is_basis_finite - theorem finite_dimensional.fg_of_finite_basis - theorem finite_dimensional.findim_eq_card + theorem finite_dimensional.findim_eq_card_basis' + theorem finite_dimensional.findim_eq_card_basis - theorem finite_dimensional.findim_submodule_le - theorem finite_dimensional.finite_dimensional_of_finite_basis + theorem finite_dimensional.iff_fg - theorem finite_dimensional.of_fg + theorem finite_dimensional.of_finite_basis + theorem finite_dimensional.span_of_finite + theorem linear_equiv.findim_eq + theorem linear_map.comp_eq_id_comm + theorem linear_map.finite_dimensional_of_surjective + theorem submodule.fg_iff_finite_dimensional + theorem submodule.findim_le + theorem submodule.findim_quotient_add_findim + theorem submodule.findim_quotient_le Modified src/ring_theory/noetherian.lean + theorem is_noetherian_span_of_finite 2019-12-10 14:22:20 6bb1728 feat(analysis/convex): interiors/closures of convex sets are convex in a tvs (#1781) * feat(topology/algebra/module): scalar multiplication homeomorphisms * feat(topology/algebra/module): more lemmas - homeomorphisms given by scalar multiplication by unit is open/closed map. * feat(analysis/convex): interior of convex set is convex in a tvs - in separate file for interpretation time reasons. * feat(analysis/convex): extract lemma * feat(analysis/convex): closure of a convext set is convex * style(analysis/convex): place lemmas at reasonable locations * style(topology/algebra/module): fix bracketing style * feat(analysis/convex): introduce `smul_set` and `pointwise_mul` - also additional equivalent statements for convexity using those definitions. * feat(algebra/pointwise): lemmas for `smul_set` * doc(algebra/pointwise): add docstrings * doc(algebra/pointwise): add global docstring * docs(algebra/pointwise): amend global docstring ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.one_smul_set + def set.pointwise_smul + def set.smul_set + theorem set.smul_set_eq_pointwise_smul_singleton + theorem zero_smul_set Modified src/analysis/convex.lean + theorem convex_closure + theorem convex_iff₂: + theorem convex_iff₃: + theorem convex_interior Modified src/topology/algebra/module.lean + theorem is_closed_map_smul_of_ne_zero + theorem is_closed_map_smul_of_unit + theorem is_open_map_smul_of_ne_zero + theorem is_open_map_smul_of_unit 2019-12-09 20:49:33 5c09372 A `ring_exp` tactic for dealing with exponents in rings (#1715) * Test for ring_exp * Implement -a/b * -a/b = a/b * a/b * Hide extra information in the `ex` type in `ex_info` * Some attempts to make the proof returned by ring_exp shorter * Fix that ring_exp wouldn't handle pow that isn't monomial.has_pow * Some optimizations in ring_exp * Make all proofs explicit, halving execution time more or less * Cache `has_add` and `has_mul` instances for another 2x speedup * ring_exp can replace ring to compile mathlib * Revert `ring` to non-test version * Code cleanup and documentation * Revert the test changes to `linarith` * Undo the test changes to `ring2` * Whitespace cleanup * Fix overzealous error handling Instead of catching any `fail` in eval, we just catch the operations that can safely `fail` (i.e. `invert` and `negate`). This should make internal errors visible again. * Fix the TODO's * Example use of ring_exp in data.polynomial * Check that `ring_exp` deals well with natural number subtraction * Fix incorrect docstring * Improve documentation * Small stylistic fixes * Fix slow behaviour on large exponents * Add `ring_exp` to the default tactics * Use applicative notation where appropriate * The `ring_exp` tactic also does normalization Co-Authored-By: Rob Lewis * Move `normalize` from `tactic.interactive` to `ring_exp` namespace * Fix name collision between `equiv` in data.equiv.basic and `equiv` in `test/tactics.lean` I just renamed the definition in `test/tactics.lean` to `my_equiv` and the operator to `my≅`. * Fixes for the linter * Fix the usage of type classes for `sub_pf` and `div_pf` * Fix an additional linting error * Optimization: we don't need norm_num to determine `x * 1 = x` * Improve documentation of `test/ring_exp.lean` * Rename `resolve_atoms` to `resolve_atom_aux` for clarity * Small stylistic fixes * Remove unneccessary hidden fields to `ex` * Control how much unfolding `ring_exp` does by putting a `!` after it * Reword comment for `ex_type` * Use `ring_exp!` to deal with `(n : ℕ) + 1 - 1 = n` * Document the `!` flag for `ring`, `ring_exp` and `ring_exp_eq` * Get rid of searching for another cached instance * Fix `ring_exp` failing on terms on the form `0^succ (succ ...)` ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/polynomial.lean Modified src/tactic/default.lean Added src/tactic/ring_exp.lean + theorem tactic.ring_exp.add_overlap_pf + theorem tactic.ring_exp.add_overlap_pf_zero + theorem tactic.ring_exp.add_pf_sum_gt + theorem tactic.ring_exp.add_pf_sum_lt + theorem tactic.ring_exp.add_pf_sum_overlap + theorem tactic.ring_exp.add_pf_sum_overlap_zero + theorem tactic.ring_exp.add_pf_sum_z + theorem tactic.ring_exp.add_pf_z_sum + theorem tactic.ring_exp.atom_to_sum_pf + theorem tactic.ring_exp.base_to_exp_pf + structure tactic.ring_exp.coeff + theorem tactic.ring_exp.div_pf + inductive tactic.ring_exp.ex_type + theorem tactic.ring_exp.exp_congr + theorem tactic.ring_exp.exp_to_prod_pf + theorem tactic.ring_exp.inverse_pf + theorem tactic.ring_exp.mul_coeff_pf_mul_one + theorem tactic.ring_exp.mul_coeff_pf_one_mul + theorem tactic.ring_exp.mul_p_pf_sum + theorem tactic.ring_exp.mul_p_pf_zero + theorem tactic.ring_exp.mul_pf_c_c + theorem tactic.ring_exp.mul_pf_c_prod + theorem tactic.ring_exp.mul_pf_prod_c + theorem tactic.ring_exp.mul_pf_sum + theorem tactic.ring_exp.mul_pf_zero + theorem tactic.ring_exp.mul_pp_pf_overlap + theorem tactic.ring_exp.mul_pp_pf_prod_gt + theorem tactic.ring_exp.mul_pp_pf_prod_lt + theorem tactic.ring_exp.negate_pf + theorem tactic.ring_exp.pow_e_pf_exp + theorem tactic.ring_exp.pow_p_pf_cons + theorem tactic.ring_exp.pow_p_pf_one + theorem tactic.ring_exp.pow_p_pf_singleton + theorem tactic.ring_exp.pow_p_pf_succ + theorem tactic.ring_exp.pow_p_pf_zero + theorem tactic.ring_exp.pow_pf_sum + theorem tactic.ring_exp.pow_pf_zero + theorem tactic.ring_exp.pow_pp_pf_c + theorem tactic.ring_exp.pow_pp_pf_one + theorem tactic.ring_exp.pow_pp_pf_prod + theorem tactic.ring_exp.prod_congr + theorem tactic.ring_exp.prod_to_sum_pf + theorem tactic.ring_exp.simple_pf_exp_one + theorem tactic.ring_exp.simple_pf_prod_neg_one + theorem tactic.ring_exp.simple_pf_prod_one + theorem tactic.ring_exp.simple_pf_sum_zero + theorem tactic.ring_exp.simple_pf_var_one + theorem tactic.ring_exp.sub_pf + theorem tactic.ring_exp.sum_congr Added test/ring_exp.lean + def pow_sub_pow_factor Modified test/tactics.lean - structure equiv +/- def eta_expansion_test2 + structure my_equiv 2019-12-09 11:40:19 1809eb4 feat(tactic/default): import suggest (#1791) ESTIMATED CHANGES Modified src/tactic/default.lean 2019-12-09 07:40:52 acd769a feat(analysis/calculus/deriv): derivative of division and polynomials (#1769) * feat(data/set/intervals): more properties of intervals * fix docstrings * blank space * iff versions * fix docstring * more details in docstrings * initial commit * div_deriv * more derivatives * cleanup * better docstring * fix * better * minor fix * simp attributes * Update src/analysis/calculus/deriv.lean Co-Authored-By: Rob Lewis * Update src/analysis/calculus/deriv.lean Co-Authored-By: Rob Lewis * nolint * pow derivative * Update src/topology/continuous_on.lean Co-Authored-By: Johan Commelin * comp_add and friends * remove useless variable ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_div + theorem deriv_inv + theorem deriv_pow + theorem deriv_within_div + theorem deriv_within_inv + theorem deriv_within_pow + theorem differentiable.div + theorem differentiable_at.div + theorem differentiable_at_inv + theorem differentiable_at_pow + theorem differentiable_on.div + theorem differentiable_on_inv + theorem differentiable_on_pow + theorem differentiable_pow + theorem differentiable_within_at.div + theorem differentiable_within_at_inv + theorem differentiable_within_at_pow + theorem fderiv_inv + theorem fderiv_within_inv + theorem has_deriv_at.div + theorem has_deriv_at_inv + theorem has_deriv_at_inv_one + theorem has_deriv_at_pow + theorem has_deriv_within_at.div + theorem has_deriv_within_at.nhds_within + theorem has_deriv_within_at_inv + theorem has_deriv_within_at_pow + theorem has_fderiv_at_inv + theorem has_fderiv_within_at_inv Modified src/analysis/calculus/fderiv.lean - theorem continuous_linear_map.differentiable - theorem continuous_linear_map.differentiable_at - theorem continuous_linear_map.differentiable_on - theorem continuous_linear_map.differentiable_within_at - theorem continuous_linear_map.fderiv - theorem continuous_linear_map.fderiv_within - theorem continuous_linear_map.has_fderiv_at - theorem continuous_linear_map.has_fderiv_within_at + theorem has_fderiv_within_at.nhds_within + theorem has_fderiv_within_at_of_not_mem_closure + theorem is_bounded_bilinear_map.continuous_left + theorem is_bounded_bilinear_map.continuous_right Modified src/analysis/calculus/mean_value.lean Modified src/analysis/normed_space/basic.lean + theorem filter.tendsto.div + theorem filter.tendsto.inv' + theorem normed_field.continuous_on_inv + theorem normed_field.tendsto_inv Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_bilinear_map_smul_right Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean + theorem continuous_linear_map.add_comp + theorem continuous_linear_map.comp_add + theorem continuous_linear_map.comp_id + theorem continuous_linear_map.comp_smul + theorem continuous_linear_map.comp_zero + theorem continuous_linear_map.id_comp + theorem continuous_linear_map.smul_comp + theorem continuous_linear_map.zero_comp Modified src/topology/continuous_on.lean Modified src/topology/metric_space/basic.lean + theorem metric.mem_nhds_within_iff + theorem metric.tendsto_nhds_within_nhds + theorem metric.tendsto_nhds_within_nhds_within Modified src/topology/sequences.lean + theorem mem_closure_iff_seq_limit 2019-12-07 19:47:19 4c382b1 (tactic/tidy): add docstring [skip ci] (#1788) * (tactic/tidy): add docstring [skip ci] * Update src/tactic/tidy.lean * mention [tidy] attribute ESTIMATED CHANGES Modified src/tactic/tidy.lean 2019-12-07 17:48:37 3c9f8f0 feat(algebra/field_power): fpow is a strict mono (#1778) * WIP * feat(algebra/field): remove is_field_hom A field homomorphism is just a ring homomorphism. This is one trivial tiny step in moving over to bundled homs. * Fix up nolints.txt * Process comments from reviews * Rename lemma ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem cast_fpow +/- def fpow +/- theorem fpow_add +/- theorem fpow_eq_gpow + theorem fpow_eq_zero + theorem fpow_inj +/- theorem fpow_inv + theorem fpow_le_iff_le +/- theorem fpow_le_of_le +/- theorem fpow_le_one_of_nonpos + theorem fpow_lt_iff_lt +/- theorem fpow_mul +/- theorem fpow_ne_zero_of_ne_zero +/- theorem fpow_neg + theorem fpow_neg_mul_fpow_self +/- theorem fpow_neg_succ_of_nat +/- theorem fpow_nonneg_of_nonneg +/- theorem fpow_of_nat +/- theorem fpow_one +/- theorem fpow_pos_of_pos + theorem fpow_strict_mono +/- theorem fpow_sub +/- theorem fpow_zero + theorem injective_fpow + theorem is_ring_hom.map_fpow' +/- theorem mul_fpow + theorem nat.fpow_ne_zero_of_pos + theorem nat.fpow_pos_of_pos +/- theorem one_fpow +/- theorem one_le_fpow_of_nonneg +/- theorem one_lt_fpow +/- theorem one_lt_pow +/- theorem pow_le_max_of_min_le +/- theorem unit_pow +/- theorem zero_fpow +/- theorem zero_gpow 2019-12-07 13:49:21 0455962 refactor(order/bounds,*): move code around to make `order.bounds` not depend on `complete_lattice` (#1783) * refactor(order/bounds,*): move code around to make `order.bounds` not depend on `complete_lattice` In another PR I'm going to prove more facts in `order/bounds`, then replace many proofs of lemmas about `(c)Sup`/`(c)Inf` with references to lemmas about `is_lub`/`is_glb`. * Move more code to `basic`, rewrite the only remaining proof in `default` * Rename * Add `default.lean` ESTIMATED CHANGES Modified archive/cubing_a_cube.lean Modified src/data/set/finite.lean + theorem set.bdd_above_finite + theorem set.bdd_above_finite_union + theorem set.bdd_below_finite + theorem set.bdd_below_finite_union Renamed src/data/set/intervals.lean to src/data/set/intervals/basic.lean - theorem set.eq_of_Ico_disjoint - theorem set.is_glb_Icc - theorem set.is_glb_Ici - theorem set.is_glb_Ico - theorem set.is_glb_Ioc - theorem set.is_glb_Ioi - theorem set.is_glb_Ioo - theorem set.is_lub_Icc - theorem set.is_lub_Ico - theorem set.is_lub_Iic - theorem set.is_lub_Iio - theorem set.is_lub_Ioc - theorem set.is_lub_Ioo Added src/data/set/intervals/default.lean Added src/data/set/intervals/disjoint.lean + theorem set.Ico_disjoint_Ico + theorem set.eq_of_Ico_disjoint Modified src/order/bounds.lean + theorem bdd_above.mk + def bdd_above + theorem bdd_above_empty + theorem bdd_above_insert + theorem bdd_above_inter_left + theorem bdd_above_inter_right + theorem bdd_above_of_bdd_above_of_monotone + theorem bdd_above_singleton + theorem bdd_above_subset + theorem bdd_above_top + theorem bdd_above_union + theorem bdd_below.mk + def bdd_below + theorem bdd_below_bot + theorem bdd_below_empty + theorem bdd_below_insert + theorem bdd_below_inter_left + theorem bdd_below_inter_right + theorem bdd_below_of_bdd_below_of_monotone + theorem bdd_below_singleton + theorem bdd_below_subset + theorem bdd_below_union + theorem is_glb_Icc + theorem is_glb_Ici + theorem is_glb_Ico - theorem is_glb_Inf + theorem is_glb_Ioc + theorem is_glb_Ioi + theorem is_glb_Ioo - theorem is_glb_iff_Inf_eq - theorem is_glb_iff_infi_eq - theorem is_glb_infi + theorem is_lub_Icc + theorem is_lub_Ico + theorem is_lub_Iic + theorem is_lub_Iio + theorem is_lub_Ioc + theorem is_lub_Ioo - theorem is_lub_Sup - theorem is_lub_iff_Sup_eq - theorem is_lub_iff_supr_eq - theorem is_lub_supr Modified src/order/complete_lattice.lean + theorem lattice.is_glb_Inf + theorem lattice.is_glb_iff_Inf_eq + theorem lattice.is_glb_iff_infi_eq + theorem lattice.is_glb_infi + theorem lattice.is_lub_Sup + theorem lattice.is_lub_iff_Sup_eq + theorem lattice.is_lub_iff_supr_eq + theorem lattice.is_lub_supr Modified src/order/conditionally_complete_lattice.lean - theorem bdd_above.mk - def bdd_above - theorem bdd_above_empty - theorem bdd_above_finite - theorem bdd_above_finite_union - theorem bdd_above_insert - theorem bdd_above_inter_left - theorem bdd_above_inter_right - theorem bdd_above_of_bdd_above_of_monotone - theorem bdd_above_singleton - theorem bdd_above_subset - theorem bdd_above_top - theorem bdd_above_union - theorem bdd_below.mk - def bdd_below - theorem bdd_below_bot - theorem bdd_below_empty - theorem bdd_below_finite - theorem bdd_below_finite_union - theorem bdd_below_insert - theorem bdd_below_inter_left - theorem bdd_below_inter_right - theorem bdd_below_of_bdd_below_of_monotone - theorem bdd_below_singleton - theorem bdd_below_subset - theorem bdd_below_union Modified src/order/galois_connection.lean 2019-12-06 22:09:41 6968d74 chore(travis): add instance priority linter to CI (#1787) * add instance priority to linter * Update mk_nolint.lean * fix fintype.compact_space prio ESTIMATED CHANGES Modified scripts/mk_all.sh Modified scripts/mk_nolint.lean Modified src/topology/subset_properties.lean 2019-12-06 16:24:38 8ca9263 feat(topology/subset_properties): fintype.compact_space (#1786) Finite topological spaces are compact. ESTIMATED CHANGES Modified src/topology/subset_properties.lean 2019-12-06 15:20:53 7084182 feat(topology/dense_embedding): dense_range.equalizer (#1785) * feat(topology/dense_embedding): dense_range.equalizer Two continuous functions to a t2-space that agree on a dense set are equal. * Fix docstring ESTIMATED CHANGES Modified src/topology/dense_embedding.lean + theorem dense_range.equalizer 2019-12-05 21:00:24 7221900 feat(data/set/basic): more lemmas about `set.nonempty` (#1780) * feat(data/set/basic): more lemmas about `set.nonempty` * Fix compile ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.insert_nonempty + theorem set.nonempty.ne_empty +/- theorem set.singleton_ne_empty + theorem set.singleton_nonempty 2019-12-05 17:22:16 2adc122 feat(data/set/finite): remove exists_finset_of_finite (#1782) * feat(data/set/finite): remove exists_finset_of_finite exists_finset_of_finite is a duplicate of finite.exists_finset_coe At same time, provide a `can_lift` instance to lift sets to finsets. * Add docstring ESTIMATED CHANGES Modified src/data/set/finite.lean - theorem set.exists_finset_of_finite 2019-12-05 15:23:56 3e6fe84 feat(meta/expr): use structure_fields (#1766) removes is_structure_like simplifies definition of is_structure renames and simplifies definition get_projections. It is now called structure_fields_full ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/simps.lean Modified test/simps.lean Modified test/tactics.lean 2019-12-05 06:07:31 de377ea feat(algebra/field): remove is_field_hom (#1777) * feat(algebra/field): remove is_field_hom A field homomorphism is just a ring homomorphism. This is one trivial tiny step in moving over to bundled homs. * Fix up nolints.txt * Remove duplicate instances ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/algebra/direct_limit.lean Modified src/algebra/field.lean - theorem is_field_hom.injective - theorem is_field_hom.map_div' - theorem is_field_hom.map_div - theorem is_field_hom.map_eq_zero - theorem is_field_hom.map_inv' - theorem is_field_hom.map_inv - theorem is_field_hom.map_ne_zero - def is_field_hom + theorem is_ring_hom.injective + theorem is_ring_hom.map_div' + theorem is_ring_hom.map_div + theorem is_ring_hom.map_eq_zero + theorem is_ring_hom.map_inv' + theorem is_ring_hom.map_inv + theorem is_ring_hom.map_ne_zero Modified src/algebra/field_power.lean - theorem is_field_hom.map_fpow + theorem is_ring_hom.map_fpow Modified src/data/complex/basic.lean Modified src/data/polynomial.lean +/- theorem polynomial.degree_map +/- theorem polynomial.leading_coeff_map +/- theorem polynomial.map_div +/- theorem polynomial.map_eq_zero +/- theorem polynomial.map_mod +/- theorem polynomial.nat_degree_map Modified src/field_theory/minimal_polynomial.lean Modified src/field_theory/splitting_field.lean +/- theorem polynomial.splits_comp_of_splits +/- theorem polynomial.splits_map_iff Modified src/field_theory/subfield.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/localization.lean 2019-12-05 01:31:42 324ae4b feat(data/set/basic): define `set.nonempty` (#1779) * Define `set.nonempty` and prove some basic lemmas * Migrate `well_founded.min` to `set.nonempty` * Fix a docstring and a few names Based on comments in PR * More docs * Linebreaks * +2 docstrings * Fix compile * Fix compile of `archive/imo1988_q6` ESTIMATED CHANGES Modified archive/imo1988_q6.lean Modified src/data/set/basic.lean +/- theorem set.empty_prod +/- theorem set.ne_empty_iff_exists_mem + theorem set.ne_empty_iff_nonempty + theorem set.nonempty.fst + theorem set.nonempty.inl + theorem set.nonempty.inr + theorem set.nonempty.left + theorem set.nonempty.of_diff + theorem set.nonempty.of_ssubset' + theorem set.nonempty.of_subset + theorem set.nonempty.prod + theorem set.nonempty.right + theorem set.nonempty.snd + theorem set.nonempty_iff_univ_nonempty + theorem set.nonempty_of_mem + theorem set.nonempty_of_ssubset +/- theorem set.prod_empty + theorem set.prod_ne_empty_iff - theorem set.prod_neq_empty_iff + theorem set.prod_nonempty_iff + theorem set.union_nonempty + theorem set.univ_nonempty Modified src/field_theory/minimal_polynomial.lean Modified src/logic/basic.lean Modified src/order/basic.lean Modified src/order/pilex.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean Modified src/topology/constructions.lean 2019-12-04 19:03:55 d4ee5b6 fix(order.basic|ring_theory.algebra): lower instance priority (#1729) * algebra * algebra2 * algebra3 * algebra4 * order.basic * module * algebra/ring * explain default priority of 100 * undo priority changes ESTIMATED CHANGES Modified src/algebra/module.lean + theorem gsmul_eq_smul Modified src/order/basic.lean Modified src/ring_theory/algebra.lean + theorem algebra.smul_def'' +/- theorem algebra.smul_def + theorem subalgebra.range_le Modified src/ring_theory/integral_closure.lean Modified src/tactic/lint.lean 2019-12-04 15:51:17 4353167 doc(topology/basic): add a few doc strings [skip ci] (#1775) * doc(topology/basic): add a few doc strings * Apply suggestions from code review ESTIMATED CHANGES Modified src/topology/basic.lean 2019-12-04 13:46:21 c43b332 feat(data/set/intervals): more properties of intervals (#1753) * feat(data/set/intervals): more properties of intervals * fix docstrings * blank space * iff versions * fix docstring * more details in docstrings ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/data/set/intervals.lean +/- theorem set.Ico_subset_Iio_self + theorem set.Iio_subset_Iic + theorem set.Iio_subset_Iic_iff + theorem set.Iio_subset_Iic_self + theorem set.Iio_subset_Iio + theorem set.Iio_subset_Iio_iff + theorem set.Ioc_subset_Icc_self + theorem set.Ioc_subset_Ioi_self + theorem set.Ioi_subset_Ici + theorem set.Ioi_subset_Ici_iff + theorem set.Ioi_subset_Ici_self + theorem set.Ioi_subset_Ioi + theorem set.Ioi_subset_Ioi_iff + theorem set.Ioo_subset_Iio_self + theorem set.Ioo_subset_Ioc_self + theorem set.Ioo_subset_Ioi_self + theorem set.is_glb_Icc + theorem set.is_glb_Ici + theorem set.is_glb_Ico + theorem set.is_glb_Ioc + theorem set.is_glb_Ioi + theorem set.is_glb_Ioo + theorem set.is_lub_Icc + theorem set.is_lub_Ico + theorem set.is_lub_Iic + theorem set.is_lub_Iio + theorem set.is_lub_Ioc + theorem set.is_lub_Ioo Modified src/topology/algebra/ordered.lean + theorem closure_Ico + theorem closure_Iio' + theorem closure_Iio + theorem closure_Ioc + theorem closure_Ioi' + theorem closure_Ioi + theorem closure_Ioo + theorem is_closed_Ici + theorem is_closed_Iic + theorem mem_nhds_iff_exists_Ioo_subset' + theorem mem_nhds_iff_exists_Ioo_subset + theorem mem_nhds_within_Ici_iff_exists_Icc_subset + theorem mem_nhds_within_Ici_iff_exists_Ico_subset' + theorem mem_nhds_within_Ici_iff_exists_Ico_subset + theorem mem_nhds_within_Iic_iff_exists_Icc_subset + theorem mem_nhds_within_Iic_iff_exists_Ioc_subset' + theorem mem_nhds_within_Iic_iff_exists_Ioc_subset + theorem mem_nhds_within_Iio_iff_exists_Ico_subset + theorem mem_nhds_within_Iio_iff_exists_Ioo_subset' + theorem mem_nhds_within_Iio_iff_exists_Ioo_subset + theorem mem_nhds_within_Ioi_iff_exists_Ioc_subset + theorem mem_nhds_within_Ioi_iff_exists_Ioo_subset' + theorem mem_nhds_within_Ioi_iff_exists_Ioo_subset Modified src/topology/continuous_on.lean + theorem continuous.continuous_within_at + theorem continuous_within_at.tendsto +/- theorem mem_nhds_within + theorem mem_nhds_within_iff_exists_mem_nhds_inter 2019-12-04 09:12:47 2c2cbb0 feat(data/nat/prime): monoid.prime_pow and docs (#1772) * feat(data/nat/prime): monoid.prime_pow and docs From the perfectoid project. Also add some documentation. * Add backticks in docs ESTIMATED CHANGES Modified src/data/nat/prime.lean 2019-12-04 06:44:31 71247eb feat(lift): check whether target is proposition (#1767) * feat(lift): check whether target is proposition * simplify ESTIMATED CHANGES Modified src/tactic/lift.lean Modified test/tactics.lean 2019-12-04 04:29:28 c1105de feat(tactic): mk_simp_attribute command that includes doc string (#1763) * feat(tactic): mk_simp_attr command that includes doc string * Update tactics.md * rename mk_simp_attr to mk_simp_set * rename again to mk_simp_attribute * explain syntax better * simp with, not simp using * simp with, not simp using * avoid parsing ambiguity * fix build * Update docs/tactics.md Co-Authored-By: Floris van Doorn ESTIMATED CHANGES Modified docs/tactics.md Modified scripts/nolints.txt Modified src/category/basic.lean Modified src/category/monad/basic.lean Modified src/data/nat/parity.lean Modified src/measure_theory/bochner_integration.lean Modified src/tactic/core.lean Modified src/tactic/norm_cast.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/split_ifs.lean 2019-12-04 00:28:08 b031290 feat(data/finset): lemmas for folding min and max (#1774) From the perfectoid project. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.fold_max_le + theorem finset.fold_max_lt + theorem finset.fold_min_le + theorem finset.fold_min_lt + theorem finset.fold_op_rel_iff_and + theorem finset.fold_op_rel_iff_or + theorem finset.le_fold_max + theorem finset.le_fold_min + theorem finset.lt_fold_max + theorem finset.lt_fold_min 2019-12-03 20:55:07 827e78b feat(lint): avoid Travis error when declarations are renamed (#1771) ESTIMATED CHANGES Modified scripts/mk_nolint.lean Modified scripts/nolints.txt Modified src/tactic/lint.lean 2019-12-03 18:35:15 866be5f feat(data/polynomial): monic.as_sum (#1773) From the perfectoid project. It is often useful to write a monic polynomial f in the form `X^n + sum of lower degree terms`. ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.monic.as_sum 2019-12-03 16:50:35 922a4eb feat(set_theory/cardinal): eq_one_iff_subsingleton_and_nonempty (#1770) * feat(set_theory/cardinal): eq_one_iff_subsingleton_and_nonempty From the perfectoid project * Update src/set_theory/cardinal.lean ESTIMATED CHANGES Modified src/set_theory/cardinal.lean + theorem cardinal.eq_one_iff_subsingleton_and_nonempty 2019-12-03 14:47:38 3266b96 feat(tactic/lift): automatically handle pi types (#1755) * feat(tactic/lift): automatically handle pi types * Add missing docs * Update docs/tactics.md Co-Authored-By: sgouezel ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/lift.lean Modified test/tactics.lean 2019-12-03 07:46:12 89e7f6f feat(README): add link to Lean Links [skip ci] (#1768) ESTIMATED CHANGES Modified README.md 2019-12-02 17:29:31 3913d30 refactor(topology/algebra): use dot notation in tendsto.add and friends (#1765) ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean Modified src/data/padics/hensel.lean Modified src/data/real/hyperreal.lean Modified src/measure_theory/decomposition.lean Modified src/topology/algebra/group.lean + theorem filter.tendsto.inv + theorem filter.tendsto.sub - theorem tendsto.inv - theorem tendsto.sub Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/monoid.lean + theorem filter.tendsto.mul - theorem tendsto.mul Modified src/topology/algebra/uniform_group.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2019-12-02 14:48:24 87929bf doc(*): correct bad markdown (#1764) * Update bochner_integration.lean * Update mean_value.lean * Update expr.lean * Update doc.md ESTIMATED CHANGES Modified docs/contribute/doc.md Modified src/analysis/calculus/mean_value.lean Modified src/measure_theory/bochner_integration.lean Modified src/meta/expr.lean 2019-12-02 09:14:36 1c4a296 chore(topology/*): dots for continuity proofs (#1762) * chore(topology/*): dots for continuity proofs This is a sequel to 431551a891a270260b6ece53dcdff39a0527cf78 * fix build ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/geometry/manifold/real_instances.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/nnreal.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean 2019-12-02 07:57:47 89fd088 feat(topology/uniform_space/cauchy): sequentially complete space with a countable basis is complete (#1761) * feat(topology/uniform_space/cauchy): sequentially complete space with a countable basis is complete This is a more general version of what is currently proved in `cau_seq_filter`. Migration of the latter file to the new code will be done in a separate PR. * Add docs, drop unused section vars, make arguments `U` and `U'` explicit. * Update src/topology/uniform_space/cauchy.lean Co-Authored-By: sgouezel * Fix some comments ESTIMATED CHANGES Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq_of_controlled + theorem le_nhds_of_cauchy_adhp_aux + theorem sequentially_complete.le_nhds_of_seq_tendsto_nhds + def sequentially_complete.seq + theorem sequentially_complete.seq_is_cauchy_seq + theorem sequentially_complete.seq_mem + theorem sequentially_complete.seq_pair_mem + def sequentially_complete.set_seq + def sequentially_complete.set_seq_aux + theorem sequentially_complete.set_seq_mem + theorem sequentially_complete.set_seq_mono + theorem sequentially_complete.set_seq_prod_subset + theorem sequentially_complete.set_seq_sub_aux + theorem uniform_space.complete_of_cauchy_seq_tendsto + theorem uniform_space.complete_of_convergent_controlled_sequences 2019-12-01 17:32:14 177cced feat(measure/bochner_integration): dominated convergence theorem (#1757) * feat(measure/bochner_integration): dominated convergence theorem This PR * proves the dominated convergence theorem * and some other lemmas including `integral_congr_ae`, `norm_integral_le_lintegral_norm`. * adds several equivalent definitions of the predicate `integrable` and shortens some proofs. * fix linting error * Add some section doc strings * Indentation is very wrong * Remove useless assumptions; fix doc strings * remove `private`; add a doc string for Lebesgue's dominated convergence theorem * Update basic.lean ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem edist_eq_coe_nnnorm + theorem of_real_norm_eq_coe_nnnorm Modified src/measure_theory/bochner_integration.lean + theorem measure_theory.integral_congr_ae +/- theorem measure_theory.integral_smul + theorem measure_theory.l1.norm_Integral_le_one + theorem measure_theory.l1.norm_integral_le + theorem measure_theory.norm_integral_le_lintegral_norm + theorem measure_theory.of_real_norm_integral_le_lintegral_norm + theorem measure_theory.tendsto_integral_of_dominated_convergence Modified src/measure_theory/integration.lean - theorem measure_theory.dominated_convergence_nn + theorem measure_theory.tendsto_lintegral_of_dominated_convergence Modified src/measure_theory/l1_space.lean + theorem measure_theory.all_ae_of_real_F_le_bound + theorem measure_theory.all_ae_of_real_f_le_bound + theorem measure_theory.all_ae_tendsto_of_real_norm + theorem measure_theory.integrable_iff_edist - theorem measure_theory.integrable_iff_lintegral_edist + theorem measure_theory.integrable_iff_norm +/- theorem measure_theory.integrable_iff_of_ae_eq + theorem measure_theory.integrable_iff_of_real + theorem measure_theory.integrable_norm_iff + theorem measure_theory.integrable_of_dominated_convergence + theorem measure_theory.integrable_of_integrable_bound + theorem measure_theory.l1.norm_eq_nnnorm_to_fun + theorem measure_theory.l1.norm_eq_norm_to_fun - theorem measure_theory.l1.norm_to_fun + theorem measure_theory.tendsto_lintegral_norm_of_dominated_convergence Modified src/measure_theory/simple_func_dense.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.tendsto_to_real 2019-12-01 16:14:54 8a89b06 refactor(analysis/calculus/mean_value): prove the mean value theorem using 1D derivative (#1740) * refactor(analysis/calculus/mean_value): prove the mean value theorem using 1D derivative * docstring * use iff.rfl * fix build * fix docstring ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem deriv_smul' + theorem deriv_within_smul' + theorem fderiv.comp_deriv + theorem fderiv_within.comp_deriv_within + theorem has_deriv_at.smul' + theorem has_deriv_within_at.smul' + theorem has_fderiv_at.comp_has_deriv_at + theorem has_fderiv_at.comp_has_deriv_within_at + theorem has_fderiv_within_at.comp_has_deriv_within_at Modified src/analysis/calculus/fderiv.lean - theorem differentiable.fderiv_within + theorem differentiable_at.fderiv_within Modified src/analysis/calculus/mean_value.lean 2019-12-01 15:07:11 431551a refactor(topology/algebra): use the dot notation in `continuous_mul` and friends (#1758) * continuous_add * fixes * more fixes * fix * tendsto_add * fix tendsto * last fix ESTIMATED CHANGES Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean Modified src/data/padics/hensel.lean Modified src/data/real/hyperreal.lean Modified src/geometry/manifold/real_instances.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/decomposition.lean Modified src/order/filter/pointwise.lean + theorem filter.tendsto.mul_mul - theorem filter.tendsto_mul_mul Modified src/topology/algebra/group.lean + theorem continuous.inv + theorem continuous.sub - theorem continuous_inv' +/- theorem continuous_inv - theorem continuous_sub' +/- theorem continuous_sub + theorem tendsto.inv + theorem tendsto.sub - theorem tendsto_inv - theorem tendsto_sub Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/monoid.lean + theorem continuous.mul - theorem continuous_mul' +/- theorem continuous_mul + theorem tendsto.mul - theorem tendsto_mul' +/- theorem tendsto_mul Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ordered.lean + theorem continuous.max + theorem continuous.min - theorem continuous_max - theorem continuous_min + theorem tendsto.max + theorem tendsto.min - theorem tendsto_max - theorem tendsto_min Modified src/topology/algebra/polynomial.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean + theorem uniform_continuous.add + theorem uniform_continuous.neg + theorem uniform_continuous.sub - theorem uniform_continuous_add' +/- theorem uniform_continuous_add - theorem uniform_continuous_neg' +/- theorem uniform_continuous_neg - theorem uniform_continuous_sub' +/- theorem uniform_continuous_sub Modified src/topology/algebra/uniform_ring.lean + theorem uniform_space.completion.continuous.mul - theorem uniform_space.completion.continuous_mul' +/- theorem uniform_space.completion.continuous_mul Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/complex.lean + theorem complex.continuous.inv - theorem complex.continuous_inv' +/- theorem complex.continuous_inv Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean + theorem nnreal.continuous.sub - theorem nnreal.continuous_sub' +/- theorem nnreal.continuous_sub + theorem nnreal.tendsto.sub - theorem nnreal.tendsto_sub Modified src/topology/instances/real.lean + theorem real.continuous.inv - theorem real.continuous_inv' +/- theorem real.continuous_inv Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/uniform_space/basic.lean - theorem mem_uniformity_of_uniform_continuous_invarant + theorem mem_uniformity_of_uniform_continuous_invariant Modified test/apply.lean 2019-12-01 15:36:14+01:00 a350f03 chore(scripts/nolint.txt): regenerate ESTIMATED CHANGES Modified scripts/nolints.txt 2019-11-30 16:23:56 343c54d feat(analysis/complex/exponential): limits of exp (#1744) * staging * exp div pow * cleanup * oops * better proof * cleanup * docstring * typo in docstring ESTIMATED CHANGES Modified src/analysis/complex/exponential.lean +/- theorem real.sin_gt_sub_cube + theorem real.tendsto_exp_at_top + theorem real.tendsto_exp_div_pow_at_top + theorem real.tendsto_exp_neg_at_top_nhds_0 + theorem real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Modified src/analysis/specific_limits.lean + theorem tendsto_at_top_div + theorem tendsto_at_top_mul_left' + theorem tendsto_at_top_mul_left + theorem tendsto_at_top_mul_right' + theorem tendsto_at_top_mul_right +/- theorem tendsto_pow_at_top_at_top_of_gt_1 2019-11-29 21:47:26 e68b2be doc(docs/contribute, meta/expr): sectioning doc strings (#1723) * doc(docs/contribute, meta/expr): explain sectioning doc strings and show in practice * updates ESTIMATED CHANGES Modified docs/contribute/doc.md Modified src/meta/expr.lean 2019-11-29 20:59:58 b46ef84 doc(windows.md): update [ci skip] (#1742) * doc(windows.md): update [ci skip] * small * Update docs/install/windows.md Co-Authored-By: Bryan Gin-ge Chen * wording ESTIMATED CHANGES Modified docs/install/windows.md 2019-11-29 18:51:59 9bb69dc feat(analysis/specific_limits): add `cauchy_seq_of_edist_le_geometric` (#1743) * feat(analysis/specific_limits): add `cauchy_seq_of_edist_le_geometric` Other changes: * Estimates on the convergence rate both in `edist` and `dist` cases. * Swap lhs with lhs in `ennreal.tsum_coe` and `nnreal.tsum_coe`, rename accordingly * Use `(1 - r)⁻¹` instead of `1 / (1 - r)` in `has_sum_geometric` * Add some docstrings * Update src/analysis/specific_limits.lean ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem aux_has_sum_of_le_geometric + theorem cauchy_seq_of_edist_le_geometric +/- theorem cauchy_seq_of_le_geometric + theorem cauchy_seq_of_le_geometric_two + theorem dist_le_of_le_geometric_of_tendsto + theorem dist_le_of_le_geometric_of_tendsto₀ + theorem dist_le_of_le_geometric_two_of_tendsto + theorem dist_le_of_le_geometric_two_of_tendsto₀ + theorem edist_le_of_edist_le_geometric_of_tendsto + theorem edist_le_of_edist_le_geometric_of_tendsto₀ + theorem has_sum_geometric_nnreal + theorem summable_geometric_nnreal +/- theorem tsum_geometric + theorem tsum_geometric_nnreal Modified src/data/real/cardinality.lean Modified src/measure_theory/probability_mass_function.lean Modified src/topology/instances/ennreal.lean + theorem edist_le_tsum_of_edist_le_of_tendsto + theorem edist_le_tsum_of_edist_le_of_tendsto₀ Modified src/topology/instances/nnreal.lean + theorem nnreal.coe_tsum +/- theorem nnreal.has_sum_coe +/- theorem nnreal.summable_coe + theorem nnreal.summable_comp_injective - theorem nnreal.tsum_coe 2019-11-29 16:54:30 817711d feat(measure_theory/bochner_integration): linearity of the Bochner Integral (#1745) * Linearity of the Bochner Integral * prove integral_neg and integral_smul with less assumptions; make integral irreducible * remove simp tag * create simp set for integral * Add simp_attr.integral to nolint * Make it possible to unfold the definition of `integral` and other things. * Update nolints.txt * Make it possible to unfold l1.integral * Update bochner_integration.lean * Update bochner_integration.lean ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.extend_zero Modified src/measure_theory/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.smul_mk Modified src/measure_theory/bochner_integration.lean + def measure_theory.integral + theorem measure_theory.integral_add + theorem measure_theory.integral_eq + theorem measure_theory.integral_eq_zero_of_non_integrable + theorem measure_theory.integral_eq_zero_of_non_measurable + theorem measure_theory.integral_neg + theorem measure_theory.integral_smul + theorem measure_theory.integral_sub + theorem measure_theory.integral_zero + def measure_theory.l1.integral + theorem measure_theory.l1.integral_add + def measure_theory.l1.integral_clm + theorem measure_theory.l1.integral_eq + theorem measure_theory.l1.integral_neg + theorem measure_theory.l1.integral_smul + theorem measure_theory.l1.integral_sub + theorem measure_theory.l1.integral_zero Modified src/measure_theory/borel_space.lean + theorem measure_theory.measurable_neg_iff + theorem measure_theory.measurable_smul_iff Modified src/measure_theory/l1_space.lean + theorem measure_theory.integrable_neg_iff + theorem measure_theory.integrable_smul_iff 2019-11-29 14:50:53 65bdbab chore(topology/instances/ennreal): simplify some statements&proofs (#1750) API changes: * `nhds_top`: use `⨅a ≠ ∞` instead of `⨅a:{a:ennreal // a ≠ ⊤}` * `nhds_zero`, `nhds_of_ne_top` : similarly to `nhds_top` * `tendsto_nhds`: get rid of the intermediate set `n`. ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean +/- theorem ennreal.nhds_of_ne_top +/- theorem ennreal.nhds_top +/- theorem ennreal.nhds_zero 2019-11-29 13:45:43 8f11c46 feat(data/real/ennreal): more simp lemmas about `inv` and continuity of `inv` (#1749) * Prove some algebraic properties of `ennreal.inv` * More algebraic lemmas * Prove continuity of `inv` ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_one +/- theorem ennreal.coe_zero + theorem ennreal.inv_bijective + theorem ennreal.inv_eq_inv + theorem ennreal.inv_involutive + theorem ennreal.inv_le_iff_inv_le + theorem ennreal.inv_le_inv + theorem ennreal.inv_lt_iff_inv_lt + theorem ennreal.inv_lt_inv + theorem ennreal.inv_pos + theorem ennreal.le_inv_iff_le_inv + theorem ennreal.lt_inv_iff_lt_inv Modified src/topology/instances/ennreal.lean 2019-11-29 11:45:14 1b3347d feat(algebra/*,data/real/*): add some inequalities about `canonically_ordered_comm_semiring`s (#1746) Use them for `nnreal` and `ennreal`. ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem canonically_ordered_semiring.one_le_pow_of_one_le + theorem canonically_ordered_semiring.pow_le_one + theorem canonically_ordered_semiring.pow_le_pow_of_le_left + theorem canonically_ordered_semiring.pow_pos Modified src/algebra/ordered_ring.lean +/- theorem canonically_ordered_semiring.mul_le_mul + theorem canonically_ordered_semiring.mul_pos + theorem canonically_ordered_semiring.zero_lt_one Modified src/data/real/ennreal.lean 2019-11-29 07:22:29 8e74c62 chore(data/finset,order/filter): simplify a few proofs (#1747) Also add `finset.image_mono` and `finset.range_mono`. ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.image_mono + theorem finset.range_mono + theorem finset.subset_range_sup_succ Modified src/order/filter/basic.lean 2019-11-27 19:49:59 198fb09 feat(analysis/complex/exponential): derivatives (#1695) * feat(analysis/complex/exponential): derivatives * nhds * nhds * remove omega * remove set_option * simp attributes, field type * restrict scalar * staging * complete proof * staging * cleanup * staging * cleanup * docstring * docstring * reviewer's comments * real derivatives of exp, sin, cos, sinh, cosh * fix build * remove priority * better proofs ESTIMATED CHANGES Modified src/analysis/asymptotics.lean +/- theorem asymptotics.is_O_const_mul_left +/- theorem asymptotics.is_O_const_mul_left_iff +/- theorem asymptotics.is_O_const_mul_right_iff +/- theorem asymptotics.is_O_const_smul_left +/- theorem asymptotics.is_O_const_smul_left_iff +/- theorem asymptotics.is_O_const_smul_right +/- theorem asymptotics.is_O_mul +/- theorem asymptotics.is_O_of_is_O_const_mul_right +/- theorem asymptotics.is_O_smul +/- theorem asymptotics.is_o_const_mul_left +/- theorem asymptotics.is_o_const_mul_left_iff +/- theorem asymptotics.is_o_const_mul_right +/- theorem asymptotics.is_o_const_smul_left +/- theorem asymptotics.is_o_const_smul_left_iff +/- theorem asymptotics.is_o_const_smul_right +/- theorem asymptotics.is_o_iff_tendsto +/- theorem asymptotics.is_o_mul +/- theorem asymptotics.is_o_mul_left +/- theorem asymptotics.is_o_mul_right +/- theorem asymptotics.is_o_of_is_o_const_mul_right + theorem asymptotics.is_o_pow_id + theorem asymptotics.is_o_pow_pow +/- theorem asymptotics.is_o_smul +/- theorem asymptotics.tendsto_nhds_zero_of_is_o Modified src/analysis/calculus/deriv.lean +/- theorem deriv_congr_of_mem_nhds +/- theorem deriv_within_inter +/- theorem has_deriv_at.has_deriv_at_filter + theorem has_deriv_at_iff_is_o_nhds_zero +/- theorem has_deriv_within_at_inter Modified src/analysis/calculus/fderiv.lean + theorem has_fderiv_at_iff_is_o_nhds_zero Modified src/analysis/complex/exponential.lean + theorem complex.deriv_cos + theorem complex.deriv_cosh + theorem complex.deriv_exp + theorem complex.deriv_sin + theorem complex.deriv_sinh + theorem complex.differentiable_cos + theorem complex.differentiable_cosh + theorem complex.differentiable_exp + theorem complex.differentiable_sin + theorem complex.differentiable_sinh + theorem complex.has_deriv_at_cos + theorem complex.has_deriv_at_cosh + theorem complex.has_deriv_at_exp + theorem complex.has_deriv_at_sin + theorem complex.has_deriv_at_sinh - theorem complex.tendsto_exp_zero_one + theorem real.deriv_cos + theorem real.deriv_cosh + theorem real.deriv_exp + theorem real.deriv_sin + theorem real.deriv_sinh + theorem real.differentiable_cos + theorem real.differentiable_cosh + theorem real.differentiable_exp + theorem real.differentiable_sin + theorem real.differentiable_sinh + theorem real.has_deriv_at_cos + theorem real.has_deriv_at_cosh + theorem real.has_deriv_at_exp + theorem real.has_deriv_at_sin + theorem real.has_deriv_at_sinh Modified src/analysis/normed_space/real_inner_product.lean Modified src/data/complex/exponential.lean + theorem complex.abs_exp_sub_one_sub_id_le 2019-11-27 17:34:07 01b1576 feat(topology/algebra/infinite_sum): prove `cauchy_seq_of_edist_le_of_summable` (#1739) * feat(topology/algebra/infinite_sum): prove `cauchy_seq_of_edist_le_of_summable` Other changes: * Add estimates on the distance to the limit (`dist` version only) * Simplify some proofs * Add some supporting lemmas * Fix a typo in a lemma name in `ennreal` * Add `move_cast` attrs * More `*_cast` tags, use `norm_cast` ESTIMATED CHANGES Modified src/data/real/ennreal.lean +/- theorem ennreal.coe_add +/- theorem ennreal.coe_bit0 +/- theorem ennreal.coe_bit1 +/- theorem ennreal.coe_eq_coe +/- theorem ennreal.coe_eq_one +/- theorem ennreal.coe_eq_zero +/- theorem ennreal.coe_finset_prod +/- theorem ennreal.coe_finset_sum +/- theorem ennreal.coe_le_coe +/- theorem ennreal.coe_lt_coe + theorem ennreal.coe_max + theorem ennreal.coe_min + theorem ennreal.coe_mono +/- theorem ennreal.coe_mul +/- theorem ennreal.coe_nonneg +/- theorem ennreal.coe_pos + theorem ennreal.coe_pow +/- theorem ennreal.coe_sub +/- theorem ennreal.one_eq_coe + theorem ennreal.one_lt_coe_iff - theorem ennreal.one_lt_zero_iff +/- theorem ennreal.zero_eq_coe Modified src/data/real/nnreal.lean + theorem nnreal.coe_pow + theorem nnreal.le_div_iff_mul_le - theorem nnreal.mul_le_if_le_inv + theorem nnreal.mul_le_iff_le_inv +/- theorem nnreal.prod_coe +/- theorem nnreal.smul_coe + theorem nnreal.sub_def + theorem nnreal.sub_pos +/- theorem nnreal.sum_coe Modified src/order/filter/basic.lean + theorem filter.tendsto_finset_range Modified src/topology/algebra/infinite_sum.lean + theorem cauchy_seq_of_dist_le_of_summable + theorem cauchy_seq_of_edist_le_of_summable + theorem dist_le_tsum_dist_of_tendsto + theorem dist_le_tsum_dist_of_tendsto₀ + theorem dist_le_tsum_of_dist_le_of_tendsto + theorem dist_le_tsum_of_dist_le_of_tendsto₀ Modified src/topology/metric_space/basic.lean + theorem nnreal.dist_eq + theorem nnreal.nndist_eq Modified src/topology/metric_space/emetric_space.lean + theorem emetric.cauchy_seq_iff_nnreal Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq_of_tendsto_nhds 2019-11-26 14:35:37 255bebc feat(data/nat/multiplicity): multiplicity_choose and others (#1704) ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem nat.le_mod_add_mod_of_dvd_add_of_not_dvd Added src/data/nat/multiplicity.lean + theorem nat.multiplicity_eq_card_pow_dvd + theorem nat.prime.multiplicity_choose + theorem nat.prime.multiplicity_choose_aux + theorem nat.prime.multiplicity_choose_prime_pow + theorem nat.prime.multiplicity_fact + theorem nat.prime.multiplicity_le_multiplicity_choose_add + theorem nat.prime.multiplicity_mul + theorem nat.prime.multiplicity_one + theorem nat.prime.multiplicity_pow + theorem nat.prime.multiplicity_pow_self + theorem nat.prime.multiplicity_self + theorem nat.prime.pow_dvd_fact_iff 2019-11-26 12:10:33 3443a7d feat(analysis/complex/basic): restriction of scalars, real differentiability of complex functions (#1716) * restrict scalar * staging * complete proof * staging * cleanup * staging * cleanup * docstring * docstring * reviewer's comments * Update src/analysis/complex/basic.lean Co-Authored-By: Rob Lewis * Update src/analysis/calculus/fderiv.lean Co-Authored-By: Rob Lewis * add ! in docstrings [ci skip] * more doc formatting in fderiv * fix comments * add docstrings ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/analysis/calculus/deriv.lean +/- theorem deriv_fderiv +/- theorem deriv_within_fderiv_within + theorem has_deriv_at_iff_has_fderiv_at + theorem has_deriv_within_at_iff_has_fderiv_within_at Modified src/analysis/calculus/fderiv.lean + theorem continuous_linear_map.differentiable + theorem continuous_linear_map.differentiable_at + theorem continuous_linear_map.differentiable_on + theorem continuous_linear_map.differentiable_within_at + theorem continuous_linear_map.fderiv + theorem continuous_linear_map.fderiv_within + theorem continuous_linear_map.has_fderiv_at + theorem continuous_linear_map.has_fderiv_at_filter + theorem continuous_linear_map.has_fderiv_within_at + theorem differentiable.restrict_scalars + theorem differentiable_at.restrict_scalars + theorem differentiable_on.restrict_scalars + theorem differentiable_within_at.restrict_scalars + theorem has_fderiv_at.restrict_scalars + theorem has_fderiv_within_at.restrict_scalars Modified src/analysis/calculus/mean_value.lean Added src/analysis/complex/basic.lean + def complex.continuous_linear_map.im + theorem complex.continuous_linear_map.im_apply + theorem complex.continuous_linear_map.im_coe + theorem complex.continuous_linear_map.im_norm + def complex.continuous_linear_map.of_real + theorem complex.continuous_linear_map.of_real_apply + theorem complex.continuous_linear_map.of_real_coe + theorem complex.continuous_linear_map.of_real_isometry + theorem complex.continuous_linear_map.of_real_norm + def complex.continuous_linear_map.re + theorem complex.continuous_linear_map.re_apply + theorem complex.continuous_linear_map.re_coe + theorem complex.continuous_linear_map.re_norm + def complex.linear_map.im + theorem complex.linear_map.im_apply + def complex.linear_map.of_real + theorem complex.linear_map.of_real_apply + def complex.linear_map.re + theorem complex.linear_map.re_apply + theorem complex.norm_eq_abs + theorem complex.norm_int + theorem complex.norm_int_of_nonneg + theorem complex.norm_nat + theorem complex.norm_rat + theorem complex.norm_real + theorem has_deriv_at_real_of_complex Modified src/analysis/normed_space/basic.lean - theorem complex.norm_int - theorem complex.norm_int_of_nonneg - theorem complex.norm_nat - theorem complex.norm_rat - theorem complex.norm_real + theorem norm_algebra_map_eq + def normed_space.restrict_scalars Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.isometry_iff_norm_image_eq_norm + def continuous_linear_map.restrict_scalars + theorem continuous_linear_map.restrict_scalars_coe_eq_coe' + theorem continuous_linear_map.restrict_scalars_coe_eq_coe Modified src/ring_theory/algebra.lean + theorem linear_map.coe_restrict_scalars_eq_coe + def linear_map.restrict_scalars + def module.restrict_scalars Modified src/topology/metric_space/isometry.lean + theorem algebra_map_isometry 2019-11-26 09:03:27 33df7e8 feat(order/conditionally_complete_lattice): with_top (with_bot L) ins… (#1725) * feat(order/conditionally_complete_lattice): with_top (with_bot L) instances * dealing with most of Sebastien's comments * initial defs. Now what happens? * half way there * compiles! * tidy * removing dead code * docstring tinkering * removing unused code * is_lub_Sup' added * refactor final proofs * conforming to mathlib conventions * def -> lemma ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean + theorem with_bot.cSup_empty - theorem with_top.has_glb - theorem with_top.has_lub + theorem with_top.is_glb_Inf' +/- theorem with_top.is_glb_Inf + theorem with_top.is_lub_Sup' +/- theorem with_top.is_lub_Sup 2019-11-25 19:40:41 ef47de4 chore(data/nat/basic): add some docs, drop unused arguments (#1741) * add a docstring * chore(data/nat/basic): add some docs, drop unused arguments ESTIMATED CHANGES Modified src/data/nat/basic.lean +/- theorem nat.pow_left_injective 2019-11-25 17:00:45 73735ad feat(topology/metric_space/basic): define `cauchy_seq_of_le_tendsto_0` (#1738) * Define `cauchy_seq_of_le_tendsto_0` Sometimes it is convenient to avoid proving `0 ≤ b n`. * Fix the comment, generalize to an inhabitted `sup`-semilattice. ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem cauchy_seq_of_le_tendsto_0 2019-11-25 09:29:09 242159f feat(measure_theory/bochner_integration): bochner integral of simple functions (#1676) * Bochner integral of simple functions * Update bochner_integration.lean * Change notation for simple functions in L1 space; Fill in blanks in `calc` proofs * Better definitions of operations on integrable simple functions * Update src/measure_theory/bochner_integration.lean Co-Authored-By: sgouezel * Update src/measure_theory/bochner_integration.lean Co-Authored-By: sgouezel * Update src/measure_theory/bochner_integration.lean Co-Authored-By: sgouezel * Update src/measure_theory/bochner_integration.lean Co-Authored-By: sgouezel * Update src/measure_theory/bochner_integration.lean Co-Authored-By: sgouezel * Update src/measure_theory/bochner_integration.lean Co-Authored-By: sgouezel * Several fixes - listed below * K -> \bbk * remove indentation after `calc` * use local instances * one tactic per line * add `elim_cast` attributes * remove definitions from nolints.txt * use `linear_map.with_bound` to get continuity * Update documentation and comments * Fix things * norm_triangle_sum -> norm_sum_le * fix documentations and comments (The Bochner integral) * Fix typos and grammatical errors * Update src/measure_theory/ae_eq_fun.lean Co-Authored-By: sgouezel ESTIMATED CHANGES Modified scripts/nolints.txt Modified src/linear_algebra/basic.lean + theorem finset.smul_sum' Modified src/measure_theory/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.edist_smul +/- theorem measure_theory.ae_eq_fun.smul_mk +/- theorem measure_theory.ae_eq_fun.smul_to_fun Modified src/measure_theory/bochner_integration.lean - def measure_theory.integral - def measure_theory.l1.integral + theorem measure_theory.l1.simple_func.add_to_simple_func + theorem measure_theory.l1.simple_func.coe_add + theorem measure_theory.l1.simple_func.coe_neg + theorem measure_theory.l1.simple_func.coe_smul + theorem measure_theory.l1.simple_func.coe_sub + def measure_theory.l1.simple_func.coe_to_l1 + theorem measure_theory.l1.simple_func.coe_zero - theorem measure_theory.l1.simple_func.dense_embedding_of_simple_func + theorem measure_theory.l1.simple_func.dist_eq + theorem measure_theory.l1.simple_func.dist_to_simple_func + theorem measure_theory.l1.simple_func.edist_eq +/- theorem measure_theory.l1.simple_func.exists_simple_func_near +/- def measure_theory.l1.simple_func.integral + theorem measure_theory.l1.simple_func.integral_add + def measure_theory.l1.simple_func.integral_clm + theorem measure_theory.l1.simple_func.integral_congr + theorem measure_theory.l1.simple_func.integral_eq_lintegral + theorem measure_theory.l1.simple_func.integral_smul + theorem measure_theory.l1.simple_func.lintegral_edist_to_simple_func_lt_top - def measure_theory.l1.simple_func.mk + theorem measure_theory.l1.simple_func.neg_to_simple_func + theorem measure_theory.l1.simple_func.norm_Integral_le_one + theorem measure_theory.l1.simple_func.norm_eq' + theorem measure_theory.l1.simple_func.norm_eq + theorem measure_theory.l1.simple_func.norm_eq_bintegral + theorem measure_theory.l1.simple_func.norm_integral_le_norm + theorem measure_theory.l1.simple_func.norm_of_simple_func + theorem measure_theory.l1.simple_func.norm_to_simple_func + def measure_theory.l1.simple_func.of_simple_func + theorem measure_theory.l1.simple_func.of_simple_func_add + theorem measure_theory.l1.simple_func.of_simple_func_eq_mk + theorem measure_theory.l1.simple_func.of_simple_func_eq_of_fun + theorem measure_theory.l1.simple_func.of_simple_func_neg + theorem measure_theory.l1.simple_func.of_simple_func_smul + theorem measure_theory.l1.simple_func.of_simple_func_sub + theorem measure_theory.l1.simple_func.of_simple_func_to_simple_func + theorem measure_theory.l1.simple_func.of_simple_func_zero + theorem measure_theory.l1.simple_func.smul_to_simple_func + theorem measure_theory.l1.simple_func.sub_to_simple_func +/- def measure_theory.l1.simple_func.to_simple_func + theorem measure_theory.l1.simple_func.to_simple_func_eq_to_fun + theorem measure_theory.l1.simple_func.to_simple_func_of_simple_func - theorem measure_theory.l1.simple_func.uniform_continuous_of_simple_func - theorem measure_theory.l1.simple_func.uniform_embedding_of_simple_func + theorem measure_theory.l1.simple_func.zero_to_simple_func + def measure_theory.simple_func.bintegral + theorem measure_theory.simple_func.bintegral_add + theorem measure_theory.simple_func.bintegral_congr + theorem measure_theory.simple_func.bintegral_eq_integral' + theorem measure_theory.simple_func.bintegral_eq_integral + theorem measure_theory.simple_func.bintegral_eq_lintegral' + theorem measure_theory.simple_func.bintegral_eq_lintegral + theorem measure_theory.simple_func.bintegral_smul + theorem measure_theory.simple_func.fin_vol_supp_of_integrable + theorem measure_theory.simple_func.integrable_iff_fin_vol_supp + theorem measure_theory.simple_func.integrable_iff_integral_lt_top + theorem measure_theory.simple_func.integrable_of_fin_vol_supp + theorem measure_theory.simple_func.integrable_pair + theorem measure_theory.simple_func.map_bintegral + theorem measure_theory.simple_func.norm_bintegral_le_bintegral_norm Modified src/measure_theory/l1_space.lean +/- theorem measure_theory.ae_eq_fun.integrable_smul +/- theorem measure_theory.integrable_smul - theorem measure_theory.l1.add_def - theorem measure_theory.l1.all_ae_mk_to_fun + theorem measure_theory.l1.coe_add + theorem measure_theory.l1.coe_neg + theorem measure_theory.l1.coe_smul + theorem measure_theory.l1.coe_sub + theorem measure_theory.l1.coe_zero - theorem measure_theory.l1.dist_def + theorem measure_theory.l1.dist_eq + theorem measure_theory.l1.edist_eq - theorem measure_theory.l1.ext_iff - def measure_theory.l1.mk - theorem measure_theory.l1.mk_add - theorem measure_theory.l1.mk_eq_mk + theorem measure_theory.l1.mk_to_fun - theorem measure_theory.l1.mk_zero - theorem measure_theory.l1.neg_mk +/- theorem measure_theory.l1.neg_to_fun - theorem measure_theory.l1.norm_def + theorem measure_theory.l1.norm_eq - theorem measure_theory.l1.norm_mk + theorem measure_theory.l1.norm_of_fun + def measure_theory.l1.of_fun + theorem measure_theory.l1.of_fun_add + theorem measure_theory.l1.of_fun_eq_mk + theorem measure_theory.l1.of_fun_eq_of_fun + theorem measure_theory.l1.of_fun_neg + theorem measure_theory.l1.of_fun_smul + theorem measure_theory.l1.of_fun_to_fun + theorem measure_theory.l1.of_fun_zero - theorem measure_theory.l1.self_eq_mk - theorem measure_theory.l1.smul_def - theorem measure_theory.l1.smul_mk +/- theorem measure_theory.l1.smul_to_fun + theorem measure_theory.l1.to_fun_of_fun - theorem measure_theory.l1.zero_def 2019-11-25 00:45:56 6af35ec feat(topology/algebra/infinite_sum): add `has_sum` versions of a few `tsum` lemmas (#1737) Also add a few lemmas in `analysis/specific_limits` ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem summable_geometric_two' + theorem tendsto_const_div_at_top_nhds_0_nat - theorem tendsto_one_div_at_top_nhds_0_nat + theorem tsum_geometric_two' Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_fintype + theorem has_sum_single + theorem sum_le_has_sum + theorem sum_le_tsum 2019-11-24 23:51:18 bf509d7 feat(order/filter/basic): add more lemmas about `tendsto _ _ at_top` (#1713) * feat(order/filter/basic): add more lemmas about `tendsto _ _ at_top` * Use explicit arguments as suggested by @sgouezel * Add lemmas for an `ordered_comm_group` * Add a missing lemma ESTIMATED CHANGES Modified src/order/filter/basic.lean + theorem filter.tendsto_at_top_add_const_left + theorem filter.tendsto_at_top_add_const_right + theorem filter.tendsto_at_top_add_left_of_le' + theorem filter.tendsto_at_top_add_left_of_le + theorem filter.tendsto_at_top_add_nonneg_left' + theorem filter.tendsto_at_top_add_nonneg_left + theorem filter.tendsto_at_top_add_nonneg_right' + theorem filter.tendsto_at_top_add_nonneg_right + theorem filter.tendsto_at_top_add_right_of_le' + theorem filter.tendsto_at_top_add_right_of_le + theorem filter.tendsto_at_top_at_top_of_monotone + theorem filter.tendsto_at_top_mono' + theorem filter.tendsto_at_top_mono + theorem filter.tendsto_at_top_of_add_bdd_above_left' + theorem filter.tendsto_at_top_of_add_bdd_above_left + theorem filter.tendsto_at_top_of_add_bdd_above_right' + theorem filter.tendsto_at_top_of_add_bdd_above_right + theorem filter.tendsto_at_top_of_add_const_left + theorem filter.tendsto_at_top_of_add_const_right 2019-11-24 23:02:27 a03a072 chore(topology/metric_space/emetric_space): define `edist_le_zero` (#1735) This makes a few proofs slightly more readable. ESTIMATED CHANGES Modified src/topology/metric_space/emetric_space.lean + theorem edist_le_zero 2019-11-24 20:38:04 13fedc1 feat(algebra/group): define `mul/add_left/right_injective` (#1730) Same as `mul_left_cancel` etc but uses `function.injective`. This makes it easier to use functions from `function.injective` namespace. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem mul_left_injective + theorem mul_right_injective 2019-11-24 19:51:44 7b1cdd4 feat(topology/metric_space/emetric_space): polygonal inequalities (#1736) Migrate #1572 from `dist` to `edist` ESTIMATED CHANGES Modified src/topology/metric_space/emetric_space.lean + theorem edist_le_Ico_sum_edist + theorem edist_le_Ico_sum_of_edist_le + theorem edist_le_range_sum_edist + theorem edist_le_range_sum_of_edist_le 2019-11-24 17:44:38 ca53b5d feat(data/real/ennreal): 3 simple lemmas (#1734) ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.coe_to_real + theorem ennreal.to_nnreal_pos_iff + theorem ennreal.to_real_pos_iff 2019-11-24 10:11:36 2d54a70 feat(analysis/normed_space): prove more lemmas, rename some old lemmas (#1733) Renamed lemmas: * `norm_triangle` → `norm_add_le` * `norm_triangle_sub` → `norm_sub_le` * `norm_triangle_sum` → `norm_sum_le` * `norm_reverse_triangle'` → `norm_sub_norm_le` * `norm_reverse_triangle`: deleted; was a duplicate of `abs_norm_sub_norm_le` * `nnorm_triangle` → `nnorm_add_le` New lemmas: * `dist_add_left`, `dist_add_right`, `dist_neg_neg`, dist_sub_left`, dist_sub_right`, `dist_smul`, `dist_add_add_le`, `dist_sub_sub_le`: operate with distances without rewriting them as norms. * `norm_add_le_of_le`, `dist_add_add_le_of_le`, `dist_sub_sub_le_of_le`, `norm_sum_le_of_le` : chain a triangle-like inequality with an appropriate estimates on the right hand side. Also simplify a few proofs and fix a typo in a comment. ESTIMATED CHANGES Modified archive/sensitivity.lean Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/convex.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean + theorem dist_add_add_le + theorem dist_add_add_le_of_le + theorem dist_add_left + theorem dist_add_right + theorem dist_le_norm_add_norm + theorem dist_neg_neg + theorem dist_smul + theorem dist_sub_left + theorem dist_sub_right + theorem dist_sub_sub_le + theorem dist_sub_sub_le_of_le + theorem nnnorm_add_le - theorem nnnorm_triangle + theorem norm_add_le + theorem norm_add_le_of_le - theorem norm_reverse_triangle' - theorem norm_reverse_triangle + theorem norm_sub_le + theorem norm_sub_le_of_le + theorem norm_sub_norm_le + theorem norm_sum_le + theorem norm_sum_le_of_le - theorem norm_triangle - theorem norm_triangle_sub - theorem norm_triangle_sum +/- theorem norm_zero Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_add_le - theorem continuous_linear_map.op_norm_triangle Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_numbers.lean Modified src/measure_theory/l1_space.lean Modified src/topology/bounded_continuous_function.lean + theorem bounded_continuous_function.dist_le_two_norm Modified src/topology/metric_space/cau_seq_filter.lean 2019-11-23 11:38:03 f95c01e feat(algebra/ordered_*): add three simple lemmas (#1731) ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem div_le_div_of_le_of_nonneg Modified src/algebra/ordered_ring.lean + theorem abs_two + theorem zero_lt_two 2019-11-23 00:15:59 f86abc7 fix(*): lower instance priority (#1724) * fix(*): lower instance priority use lower instance priority for instances that always apply also do this for automatically generated instances using the `extend` keyword also add a comment to most places where we short-circuit type-class inference. This can lead to greatly increased search times (see issue #1561), so we might want to delete some/all of them. * put default_priority option inside section Default priority also applies to all instances, not just automatically-generates ones the scope of set_option is limited to a section * two more low priorities * fix some broken proofs * fix proof * more fixes * more fixes * increase max_depth a bit * update notes * fix linter issues ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/Group.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/char_zero.lean Modified src/algebra/euclidean_domain.lean Modified src/algebra/field.lean Modified src/algebra/gcd_domain.lean Modified src/algebra/group/hom.lean Modified src/algebra/lie_algebra.lean Modified src/algebra/module.lean Modified src/algebra/order_functions.lean Modified src/algebra/ordered_field.lean Modified src/algebra/ordered_group.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/ring.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/category/basic.lean Modified src/category/bitraversable/basic.lean Modified src/category/monad/cont.lean Modified src/category/monad/writer.lean Modified src/category/traversable/basic.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/default.lean Modified src/category_theory/concrete_category/basic.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/groupoid.lean Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/monad/adjunction.lean Modified src/computability/primrec.lean Modified src/data/analysis/topology.lean + def ctop.to_topsp Modified src/data/equiv/denumerable.lean Modified src/data/fintype.lean +/- theorem fintype.card_subtype_lt Modified src/data/int/basic.lean +/- theorem int.cast_abs +/- theorem int.cast_max +/- theorem int.cast_min Modified src/data/string/basic.lean Modified src/field_theory/subfield.lean Modified src/geometry/manifold/real_instances.lean Modified src/group_theory/group_action.lean Modified src/group_theory/subgroup.lean Modified src/logic/relator.lean Modified src/logic/unique.lean Modified src/measure_theory/measure_space.lean Modified src/order/basic.lean Modified src/order/boolean_algebra.lean Modified src/order/bounded_lattice.lean Modified src/order/complete_boolean_algebra.lean Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/lattice.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/maps.lean Modified src/ring_theory/noetherian.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/subring.lean Modified src/set_theory/cardinal.lean Modified src/tactic/linarith.lean Modified src/tactic/lint.lean Modified src/tactic/ring.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/module.lean Modified src/topology/algebra/ordered.lean + theorem orderable_topology.t2_space Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/bases.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/premetric_space.lean Modified src/topology/separation.lean Modified src/topology/sequences.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/pi.lean - theorem Pi.uniform_space_topology Modified src/topology/uniform_space/separation.lean 2019-11-22 21:37:11 2b3eaa8 feat(README) Point users to the tutorial project (#1728) I think the tutorial project is a good place to start, and if other people don't think it is then I think they might want to consider adding more files to the tutorial project. I think mathlib is intimidating for beginners and this is a much better idea. However the link to the tutorial project is not even available on the main page -- you have to click through an installation procedure and find it at the bottom, and even then the first thing is suggests is that you make a new project, which I think is harder than getting the tutorial project up and running. This PR proposes that we point people directly to the tutorial project -- they will probably notice the existence of the tutorial project before they have even installed Lean/mathlib and will hence have it at the back of their mind once they've got things up and running. ESTIMATED CHANGES Modified README.md 2019-11-22 21:18:35 013e914 fix(docs/install/project) compiling is quick (#1727) I think the "it takes a long time" comment must either have been from before `update-mathlib` or from when we were pointing people to the perfectoid project. ESTIMATED CHANGES Modified docs/install/project.md 2019-11-22 20:20:52 62c1bc5 doc(topology/metric_space,measure_theory): move text in copyright docs to module docs (#1726) ESTIMATED CHANGES Modified src/measure_theory/measure_space.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/metric_space/premetric_space.lean 2019-11-22 17:45:25+01:00 5a1a469 docs(README): revert 96ebf8cc Revert "docs(README): Remove Patrick from the maintainer list." This reverts commit 96ebf8cc7c446e977637a13740645a7f8e0c8992. ESTIMATED CHANGES Modified README.md 2019-11-21 22:11:03 004618a feat(data/nat): two lemmas about choose (#1717) * Two lemmas about choose * swap choose_symm order ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.choose_succ_right_eq + theorem nat.choose_symm 2019-11-21 19:22:23 58fc830 fix(tactic/ext): handle case where goal is solved early (#1721) * fix(tactic/ext): handle case where goal is solved early * add test ESTIMATED CHANGES Modified src/tactic/ext.lean Modified test/ext.lean + structure dumb 2019-11-21 17:17:19 a13027a feat(data/finset): add cardinality of map (#1722) * Add cardinality of map * Update src/data/finset.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.card_map 2019-11-21 11:57:54 faf3289 add div_le_div_iff (#1720) ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem div_le_div_iff 2019-11-21 07:04:43 af9dcb9 make set_of_eq_eq_singleton a simp lemma (#1719) ESTIMATED CHANGES Modified src/data/set/basic.lean 2019-11-20 20:03:27 9d031be feat(group_theory/congruence): quotients of monoids by congruence relations (#1710) * add congruence.lean * add has_mul * add definition of congruence relation * minor changes * Tidy up second half of congruence.lean * tidying docstrings * tidying * constructive 3rd isom in setoid used in congruence * remove import * open namespaces earlier * responding to PR comments ESTIMATED CHANGES Modified src/data/setoid.lean +/- def setoid.comap + theorem setoid.comap_eq +/- def setoid.map + def setoid.quotient_quotient_equiv_quotient Modified src/group_theory/congruence.lean + theorem con.coe_one + def con.comap + theorem con.comap_eq + theorem con.comp_mk'_apply + def con.correspondence + theorem con.injective_ker_lift + def con.ker + theorem con.ker_apply_eq_preimage + theorem con.ker_eq_lift_of_injective + def con.ker_lift + theorem con.ker_lift_mk + theorem con.ker_lift_range_eq + theorem con.ker_rel + theorem con.le_iff + def con.lift + theorem con.lift_apply_mk' + theorem con.lift_coe + theorem con.lift_comp_mk' + theorem con.lift_funext + theorem con.lift_mk' + theorem con.lift_range + theorem con.lift_surjective_of_surjective + theorem con.lift_unique + def con.map + theorem con.map_apply + def con.map_gen + def con.map_of_surjective + theorem con.map_of_surjective_eq_map_gen + theorem con.mem_coe + def con.mk' + theorem con.mk'_ker + theorem con.mk'_surjective + def con.of_submonoid + def con.quotient_quotient_equiv_quotient + theorem con.to_submonoid_inj Modified src/group_theory/submonoid.lean + def mul_equiv.submonoid_congr 2019-11-20 17:12:35 f34bb6b refactor(topology/metric_space/lipschitz): review API of `lipschitz_with` (#1700) * refactor(topology/metric_space/lipschitz): review API of `lipschitz_with` * Take `K : ℝ≥0` instead of using a conjuction; * Rename each `*_of_lipschitz` to `lipschitz_with.*`; * Define convenience constructors (e.g., `of_le_add`); * Move facts about contracting maps to a separate file&namespace; * Adjust other files to API changes. * Make the first argument of `lipschitz_with.weaken` implicit Co-Authored-By: sgouezel * Fix compile * Fix 'unused args' bug reported by `#lint` ESTIMATED CHANGES Modified src/analysis/normed_space/finite_dimension.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.lipschitz + theorem linear_map.lipschitz_of_bound + theorem linear_map.uniform_continuous_of_bound Modified src/topology/bounded_continuous_function.lean +/- def bounded_continuous_function.comp +/- theorem bounded_continuous_function.continuous_comp + theorem bounded_continuous_function.lipschitz_comp + theorem bounded_continuous_function.uniform_continuous_comp Modified src/topology/metric_space/closeds.lean + theorem metric.lipschitz_inf_dist + theorem metric.lipschitz_inf_dist_set Added src/topology/metric_space/contracting.lean + theorem contracting_with.aposteriori_dist_iterate_fixed_point_le + theorem contracting_with.apriori_dist_iterate_fixed_point_le + theorem contracting_with.dist_fixed_point_fixed_point_of_dist_le' + theorem contracting_with.dist_fixed_point_le + theorem contracting_with.dist_inequality + theorem contracting_with.dist_le_of_fixed_point + theorem contracting_with.exists_fixed_point + theorem contracting_with.fixed_point_is_fixed + theorem contracting_with.fixed_point_lipschitz_in_map + theorem contracting_with.fixed_point_unique' + theorem contracting_with.fixed_point_unique + theorem contracting_with.one_sub_K_pos + theorem contracting_with.to_lipschitz_with + def contracting_with + theorem fixed_point_of_tendsto_iterate Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean - theorem metric.continuous_inf_dist + theorem metric.continuous_inf_dist_pt + theorem metric.lipschitz_inf_dist_pt - theorem metric.uniform_continuous_inf_dist + theorem metric.uniform_continuous_inf_dist_pt Modified src/topology/metric_space/lipschitz.lean - theorem continuous_of_lipschitz - theorem fixed_point_of_tendsto_iterate + theorem lipschitz_with.diam_image_le - theorem lipschitz_with.dist_inequality_of_contraction + theorem lipschitz_with.dist_iterate_succ_le_geometric + theorem lipschitz_with.ediam_image_le + theorem lipschitz_with.edist_map_le - theorem lipschitz_with.exists_fixed_point_of_contraction - theorem lipschitz_with.fixed_point_unique_of_contraction + theorem lipschitz_with.nndist_map_le +/- def lipschitz_with - theorem uniform_continuous_of_le_add - theorem uniform_continuous_of_lipschitz 2019-11-20 15:36:42 5a6a67f fix(data/padics): misstated lemma (#1718) ESTIMATED CHANGES Modified src/data/padics/padic_numbers.lean +/- theorem padic.coe_zero 2019-11-20 01:38:56 0744a3a feat(analysis/normed_space/operator_norm): extension of a uniform continuous function (#1649) * Extension of a uniform continuous function * Use characteristic properties of an extended function, instead of the explicit construction * Add documentation on similar results in the library * Update src/topology/algebra/uniform_extension.lean Co-Authored-By: sgouezel * Travis failed for no reason * Update uniform_extension.lean * eliminate `uniform_extension.lean` * Update operator_norm.lean * Update operator_norm.lean * Remove `M` * Fix docstring; extend_zero should be a simp lemma ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + def continuous_linear_map.extend + theorem continuous_linear_map.extend_zero + theorem continuous_linear_map.op_norm_extend_le - theorem continuous_linear_map.uniform_continuous 2019-11-19 23:41:43 d67e527 feat(algebra/group_power): prove Bernoulli's inequality for `a ≥ -2` (#1709) * feat(algebra/group_power): prove Bernoulli's inequality for `a ≥ -2` * Restate inequalities as suggested by @fpvandoorn * Fix docs ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/algebra/group_power.lean + theorem one_add_mul_le_pow' +/- theorem one_add_mul_le_pow Modified src/algebra/ordered_group.lean + theorem le_neg_iff_add_nonpos + theorem neg_le_iff_add_nonneg + theorem neg_le_self + theorem self_le_neg Modified src/analysis/specific_limits.lean +/- theorem tendsto_pow_at_top_at_top_of_gt_1 2019-11-19 20:49:00 d4fd722 feat(algebra/group; data/nat) lemmas for sub sub assoc (#1712) * Lemmas for sub sub assoc * Removed a lemma ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem sub_sub_assoc_swap Modified src/data/nat/basic.lean + theorem nat.sub_sub_assoc +/- theorem nat.succ_div_of_dvd +/- theorem nat.succ_div_of_not_dvd 2019-11-19 18:41:34 db6eab2 fix(tactic/ring): bugfix ring sub (#1714) ESTIMATED CHANGES Modified src/tactic/ring.lean Modified test/ring.lean 2019-11-19 18:03:43 740168b feat(.travis): add linting of new changes to CI (#1634) * feat(.travis): add linting of new changes to CI * explicitly list which linters to use * upate nolints * fix nolints.txt * fix nolints * remove instance_priority test ESTIMATED CHANGES Modified .gitignore Modified .travis.yml Modified scripts/mk_all.sh Modified scripts/rm_all.sh 2019-11-19 16:06:05+01:00 02659d6 chore(scripts/nolint): regenerate nolints ESTIMATED CHANGES Modified scripts/mk_nolint.lean Modified scripts/nolints.txt 2019-11-19 13:09:36 8d7f093 fix(tactic/omega): use eval_expr' (#1711) * fix(tactic/omega): use eval_expr' * add test ESTIMATED CHANGES Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/nat/main.lean Modified test/omega.lean 2019-11-19 11:07:21 e3be70d lemmas about powers of elements (#1688) * feat(algebra/archimedean): add alternative version of exists_int_pow_near - also add docstrings * feat(analysis/normed_space/basic): additional inequality lemmas - that there exists elements with large and small norms in a nondiscrete normed field. * doc(algebra/archimedean): edit docstrings * Apply suggestions from code review Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem exists_int_pow_near' Modified src/analysis/normed_space/basic.lean + theorem normed_field.exists_lt_norm + theorem normed_field.exists_norm_lt 2019-11-19 04:28:27 b0520a3 feat(algebra/order): define `forall_lt_iff_le` and `forall_lt_iff_le'` (#1707) ESTIMATED CHANGES Modified src/algebra/order.lean + theorem forall_lt_iff_le' + theorem forall_lt_iff_le 2019-11-19 02:27:10 5d5da7e feat(data/set/intervals): more lemmas (#1665) * feat(data/set/intervals): more lemmas * Use `simp` in more proofs, drop two `@[simp]` attrs * Drop more `@[simp]` attrs It's not clear which side is simpler. ESTIMATED CHANGES Modified src/data/set/intervals.lean + theorem set.Icc_diff_Ioc_eq_singleton + theorem set.Icc_inter_Icc + theorem set.Ici_inter_Ici + theorem set.Ici_inter_Iic + theorem set.Ici_inter_Iio + theorem set.Ico_inter_Ico + theorem set.Iic_inter_Iic + theorem set.Iio_inter_Iio + theorem set.Ioc_diff_Ioo_eq_singleton + theorem set.Ioc_inter_Ioc + theorem set.Ioi_inter_Iic + theorem set.Ioi_inter_Iio + theorem set.Ioi_inter_Ioi +/- theorem set.Ioo_inter_Ioo +/- theorem set.left_mem_Icc + theorem set.left_mem_Ici +/- theorem set.left_mem_Ico +/- theorem set.left_mem_Ioc +/- theorem set.left_mem_Ioo +/- theorem set.right_mem_Icc +/- theorem set.right_mem_Ico + theorem set.right_mem_Iic +/- theorem set.right_mem_Ioc +/- theorem set.right_mem_Ioo 2019-11-18 23:52:03 895f1ae feat(data/option): add `some_ne_none`, `bex_ne_none`, `ball_ne_none` (#1708) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.ball_ne_none + theorem option.bex_ne_none + theorem option.some_ne_none 2019-11-18 20:32:48 6b408eb feat(data/real/nnreal): define `nnreal.gi : galois_insertion of_real coe` (#1699) ESTIMATED CHANGES Modified src/data/real/nnreal.lean + theorem nnreal.le_coe_of_real +/- theorem nnreal.of_real_coe Modified src/order/galois_connection.lean + def galois_insertion.monotone_intro 2019-11-18 18:18:25 af43a2b feat(data/nat/enat): add_right_cancel and other (#1705) ESTIMATED CHANGES Modified src/data/nat/enat.lean + theorem enat.add_eq_top_iff + theorem enat.ne_top_iff_dom 2019-11-18 16:16:44 0d94020 feat(algebra/order_functions): define `min/max_mul_of_nonneg` (#1698) Also define `monotone_mul_right_of_nonneg` and rename `monotone_mul_of_nonneg` to `monotone_mul_left_of_nonneg`. ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem max_mul_of_nonneg + theorem min_mul_of_nonneg + theorem monotone_mul_left_of_nonneg - theorem monotone_mul_of_nonneg + theorem monotone_mul_right_of_nonneg 2019-11-18 14:10:09 3f9c4d8 chore(data/set): use `Sort*` in more lemmas (#1706) Also replace `nonempty_of_nonempty_range` with `range_ne_empty_iff_nonempty` and `range_ne_empty`. The old lemma is equivalent to `range_ne_empty_iff_nonempty.mp`. ESTIMATED CHANGES Modified src/data/set/basic.lean - theorem set.nonempty_of_nonempty_range +/- theorem set.range_const +/- theorem set.range_const_subset + theorem set.range_ne_empty + theorem set.range_ne_empty_iff_nonempty +/- theorem set.range_subset_iff 2019-11-18 12:21:07 428aec9 feat(group_theory/congruence): create file about congruence relations (#1690) * add congruence.lean * add has_mul * add definition of congruence relation * minor changes * responding to review comments * fix docstring mistake in setoid.lean ESTIMATED CHANGES Modified src/data/setoid.lean Added src/group_theory/congruence.lean + structure add_con + inductive add_con_gen.rel + theorem con.Inf_def + theorem con.Inf_le + theorem con.Inf_to_setoid + theorem con.Sup_def + theorem con.Sup_eq_con_gen + theorem con.coe_eq + theorem con.coe_mul + theorem con.con_gen_eq + theorem con.con_gen_idem + theorem con.con_gen_le + theorem con.con_gen_mono + theorem con.con_gen_of_con + theorem con.ext' + theorem con.ext'_iff + theorem con.ext + theorem con.ext_iff + theorem con.inf_def + theorem con.inf_iff_and + theorem con.le_Inf + theorem con.le_def + def con.mul_ker + theorem con.mul_ker_mk_eq + def con.pi + theorem con.sup_def + theorem con.sup_eq_con_gen + theorem con.to_setoid_inj + structure con + inductive con_gen.rel + def con_gen 2019-11-18 10:15:17 0a794fa feat(data/finset): new union, set difference, singleton lemmas (#1702) * Singleton iff unique element lemma * Set difference lemmas * Changes from review ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.eq_singleton_iff_unique_mem + theorem finset.sdiff_eq_empty_iff_subset + theorem finset.sdiff_union_self_eq_union + theorem finset.singleton_iff_unique_mem + theorem finset.union_sdiff_self_eq_union + theorem finset.union_sdiff_symm 2019-11-18 08:08:24 fafdcfd chore(data/set/lattice): get most proofs from `pi` instance. (#1685) This way we only provide proofs that don't come from `pi` ESTIMATED CHANGES Modified src/data/set/lattice.lean 2019-11-18 04:03:50 d19f7bc feat(analysis/normed_space/finite_dimension): finite-dimensional spaces on complete fields (#1687) * feat(analysis/normed_space/finite_dimension): equivalence of norms, continuity of linear maps * improve doc * cleanup * cleanup * Update src/data/equiv/basic.lean Co-Authored-By: Johan Commelin * exact_mod_cast, remove classical * unfreezeI * remove typeclass assumption * Update src/analysis/normed_space/finite_dimension.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/linear_algebra/basic.lean Co-Authored-By: Bryan Gin-ge Chen * Update src/linear_algebra/finite_dimensional.lean Co-Authored-By: Bryan Gin-ge Chen * cleanup ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem pi_norm_le_iff Added src/analysis/normed_space/finite_dimension.lean + theorem continuous_equiv_fun_basis + theorem finite_dimensional.complete + theorem finite_dimensional.proper + theorem linear_map.continuous_of_finite_dimensional + theorem linear_map.continuous_on_pi + theorem submodule.closed_of_finite_dimensional + theorem submodule.complete_of_finite_dimensional Modified src/data/equiv/basic.lean + theorem equiv.range_eq_univ Modified src/linear_algebra/basic.lean + theorem linear_map.pi_apply_eq_sum_univ + theorem pi_eq_sum_univ Modified src/linear_algebra/basis.lean + theorem equiv_fun_basis_symm_apply Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.findim_eq_card + theorem finite_dimensional.findim_of_field + theorem finite_dimensional.findim_submodule_le + theorem linear_map.findim_range_add_findim_ker Modified src/topology/metric_space/basic.lean + theorem metric.proper_image_of_proper 2019-11-18 02:08:50 7c5f282 chore(algebra/order_functions): rename `min/max_distrib_of_monotone` (#1697) New names `monotone.map_min/max` better align with `monoid_hom.map_mul` etc. ESTIMATED CHANGES Modified src/algebra/order_functions.lean - theorem max_distrib_of_monotone - theorem min_distrib_of_monotone + theorem monotone.map_max + theorem monotone.map_min Modified src/topology/metric_space/basic.lean 2019-11-18 00:18:22 9607bbf feat(algebra/big_operators): sum_Ico_succ_top and others (#1692) * feat(Ico): sum_Ico_succ_top and others * get rid of succ_bot and rename eq_cons ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_Ico_succ_top + theorem finset.prod_eq_prod_Ico_succ_bot + theorem finset.sum_Ico_succ_top + theorem finset.sum_eq_sum_Ico_succ_bot Modified src/data/finset.lean - theorem finset.Ico.eq_cons + theorem finset.Ico.insert_succ_bot 2019-11-17 21:17:19 f5385fe chore(order_functions): use weakly implicit brackets in strict mono (#1701) * chore(order_functions): use weakly implicit brackets in strict mono * fix build ESTIMATED CHANGES Modified src/algebra/order_functions.lean Modified src/data/finsupp.lean 2019-11-17 19:31:14 474004f fix(topology/dense_embeddings): tweaks (#1684) * fix(topology/dense_embeddings): tweaks This fixes some small issues with last summer dense embedding refactors. This is preparation for helping with Bochner integration. Some of those fixes are backported from the perfectoid project. * chore(dense_embedding): remove is_closed_property' * Update src/topology/uniform_space/completion.lean * Update src/topology/dense_embedding.lean ESTIMATED CHANGES Modified src/topology/dense_embedding.lean + theorem dense_range.closure_range + theorem dense_range.induction_on + theorem dense_range.induction_on₂ + theorem dense_range.induction_on₃ + theorem dense_range.prod - theorem dense_range_iff_closure_eq + theorem dense_range_iff_closure_range - theorem dense_range_prod +/- theorem is_closed_property2 +/- theorem is_closed_property3 Modified src/topology/uniform_space/abstract_completion.lean Modified src/topology/uniform_space/completion.lean +/- theorem uniform_space.completion.dense +/- theorem uniform_space.completion.dense₂ - theorem uniform_space.completion.induction_on₄ 2019-11-17 17:46:28 1805f16 refactor(order/bounds): make the first argument of `x ∈ upper_bounds s` implicit (#1691) * refactor(order/bounds): make the first argument of `x ∈ upper_bounds s` implicit * Use `∈ *_bounds` in the definition of `conditionally_complete_lattice`. ESTIMATED CHANGES Modified src/data/real/basic.lean Modified src/data/real/nnreal.lean Modified src/order/bounds.lean +/- def lower_bounds +/- def upper_bounds Modified src/order/conditionally_complete_lattice.lean +/- theorem bdd_above.mk +/- def bdd_above +/- theorem bdd_below.mk +/- def bdd_below Modified src/order/galois_connection.lean Modified src/topology/algebra/ordered.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean 2019-11-17 15:38:07 1034357 feat(data/int/parity): not_even_iff (#1694) ESTIMATED CHANGES Modified src/data/int/parity.lean + theorem int.not_even_iff Modified src/data/nat/parity.lean + theorem nat.not_even_iff 2019-11-17 05:49:52 e863c08 feat(algebra/pointwise): set.add_comm_monoid (#1696) * feat(algebra/pointwise): set.add_comm_monoid * defs not instances * fixing instance names ESTIMATED CHANGES Modified src/algebra/pointwise.lean + def set.add_comm_monoid + def set.comm_monoid Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean 2019-11-17 01:34:34 6b1ab64 Add lemma for injective pow (#1683) * Add lemma for injective pow * Rename lemma and remove spaces * Use strict-mono for monotonic pow * Rename iff statements * Add left injective pow as well ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.pow_le_iff_le_left + theorem nat.pow_le_iff_le_right + theorem nat.pow_left_injective + theorem nat.pow_left_strict_mono + theorem nat.pow_lt_iff_lt_left + theorem nat.pow_lt_iff_lt_right + theorem nat.pow_right_injective + theorem nat.pow_right_strict_mono 2019-11-15 16:11:27 6ebb7e7 feat(data/nat/modeq): add_div and others (#1689) * feat(data/nat/modeq): add_div and others * remove unnecessary positivity assumptions. * fix build * brackets ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem nat.add_div + theorem nat.add_div_eq_of_add_mod_lt + theorem nat.add_div_eq_of_le_mod_add_mod + theorem nat.add_div_le_add_div + theorem nat.add_mod_add_ite + theorem nat.add_mod_add_of_le_add_mod + theorem nat.add_mod_of_add_mod_lt 2019-11-14 21:06:24 40de4fc doc(order/bounds,order/conditionaly_complete_lattice): add some docs (#1686) * doc(order/bounds,order/conditionaly_complete_lattice): add some docs * Fixes by @jcommelin Co-Authored-By: Johan Commelin * Fix docs: `is_least` are not unique unless we have a partial order. ESTIMATED CHANGES Modified src/order/bounds.lean Modified src/order/conditionally_complete_lattice.lean 2019-11-13 22:27:06 6fbf9f7 doc(*): proper markdown urls [ci skip] (#1680) ESTIMATED CHANGES Modified .vscode/settings.json Modified src/algebra/continued_fractions/basic.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/category/bitraversable/basic.lean Modified src/category/bitraversable/instances.lean Modified src/category/bitraversable/lemmas.lean Modified src/category/monad/cont.lean Modified src/category/traversable/basic.lean Modified src/category/traversable/lemmas.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/elements.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/of_has_finite_products.lean Modified src/data/holor.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/real/pi.lean Modified src/data/tree.lean Modified src/group_theory/coset.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/bilinear_form.lean Modified src/linear_algebra/sesquilinear_form.lean Modified src/logic/basic.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/measurable_space.lean Modified src/ring_theory/maps.lean Modified src/set_theory/cardinal.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/ring.lean Modified src/tactic/scc.lean Modified src/topology/maps.lean Modified src/topology/sheaves/stalks.lean 2019-11-13 20:20:04 10ced76 doc(*): move detailed headers into real module docs (#1681) * doc(*): move detailed headers into real module docs * update zmod ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/complex/exponential.lean Modified src/category_theory/category/default.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/linear_algebra/finite_dimensional.lean Modified src/tactic/finish.lean Modified src/tactic/localized.lean Modified src/topology/metric_space/gluing.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/sequences.lean 2019-11-13 17:53:09 4729624 doc(data/rel): add docs to some definitions (#1678) * doc(data/rel): add docs to some definitions * Update src/data/rel.lean Co-Authored-By: Johan Commelin * Update src/data/rel.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/data/rel.lean 2019-11-13 14:36:39 6f5ad3c add dvd_gcd_iff for nat (#1682) ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.dvd_gcd_iff 2019-11-13 12:44:49 6625f66 feat(analysis/calculus/deriv): one-dimensional derivatives (#1670) * feat(analysis/calculus/deriv): one-dimensional derivatives * Typos. * Define deriv f x as fderiv 𝕜 f x 1 * Proof style. * Fix failing proofs. ESTIMATED CHANGES Added src/analysis/calculus/deriv.lean + theorem deriv.comp + def deriv + theorem deriv_add + theorem deriv_congr_of_mem_nhds + theorem deriv_const + theorem deriv_fderiv + theorem deriv_id + theorem deriv_mul + theorem deriv_neg + theorem deriv_sub + theorem deriv_within.comp + def deriv_within + theorem deriv_within_add + theorem deriv_within_congr + theorem deriv_within_congr_of_mem_nhds_within + theorem deriv_within_const + theorem deriv_within_fderiv_within + theorem deriv_within_id + theorem deriv_within_inter + theorem deriv_within_mul + theorem deriv_within_neg + theorem deriv_within_sub + theorem deriv_within_subset + theorem deriv_within_univ + theorem deriv_within_zero_of_not_differentiable_within_at + theorem deriv_zero_of_not_differentiable_at + theorem differentiable_at.deriv_within + theorem differentiable_at.has_deriv_at + theorem differentiable_within_at.has_deriv_within_at + theorem fderiv_deriv + theorem fderiv_within_deriv_within + theorem has_deriv_at.add + theorem has_deriv_at.comp + theorem has_deriv_at.comp_has_deriv_within_at + theorem has_deriv_at.congr_of_mem_nhds + theorem has_deriv_at.continuous_at + theorem has_deriv_at.deriv + theorem has_deriv_at.differentiable_at + theorem has_deriv_at.has_deriv_at_filter + theorem has_deriv_at.has_deriv_within_at + theorem has_deriv_at.mul + theorem has_deriv_at.neg + theorem has_deriv_at.prod + theorem has_deriv_at.sub + def has_deriv_at + theorem has_deriv_at_const + theorem has_deriv_at_filter.add + theorem has_deriv_at_filter.comp + theorem has_deriv_at_filter.congr_of_mem_sets + theorem has_deriv_at_filter.is_O_sub + theorem has_deriv_at_filter.mono + theorem has_deriv_at_filter.neg + theorem has_deriv_at_filter.prod + theorem has_deriv_at_filter.sub + theorem has_deriv_at_filter.tendsto_nhds + def has_deriv_at_filter + theorem has_deriv_at_filter_congr_of_mem_sets + theorem has_deriv_at_filter_const + theorem has_deriv_at_filter_id + theorem has_deriv_at_filter_iff_tendsto + theorem has_deriv_at_id + theorem has_deriv_at_iff_tendsto + theorem has_deriv_at_unique + theorem has_deriv_within_at.add + theorem has_deriv_within_at.comp + theorem has_deriv_within_at.congr_mono + theorem has_deriv_within_at.congr_of_mem_nhds_within + theorem has_deriv_within_at.continuous_within_at + theorem has_deriv_within_at.deriv_within + theorem has_deriv_within_at.differentiable_within_at + theorem has_deriv_within_at.mono + theorem has_deriv_within_at.mul + theorem has_deriv_within_at.neg + theorem has_deriv_within_at.prod + theorem has_deriv_within_at.sub + def has_deriv_within_at + theorem has_deriv_within_at_const + theorem has_deriv_within_at_id + theorem has_deriv_within_at_iff_tendsto + theorem has_deriv_within_at_inter' + theorem has_deriv_within_at_inter + theorem has_deriv_within_at_univ + theorem has_fderiv_at_filter_iff_has_deriv_at_filter + theorem has_fderiv_at_iff_has_deriv_at + theorem has_fderiv_within_at_iff_has_deriv_within_at + theorem is_linear_map.deriv + theorem is_linear_map.deriv_within + theorem is_linear_map.differentiable + theorem is_linear_map.differentiable_at + theorem is_linear_map.differentiable_on + theorem is_linear_map.differentiable_within_at + theorem is_linear_map.has_deriv_at + theorem is_linear_map.has_deriv_at_filter + theorem is_linear_map.has_deriv_within_at + theorem unique_diff_within_at.eq_deriv Modified src/analysis/calculus/fderiv.lean + theorem fderiv_within_zero_of_not_differentiable_within_at + theorem fderiv_zero_of_not_differentiable_at Modified src/ring_theory/algebra.lean + theorem algebra.id.map_eq_self + theorem algebra.id.smul_eq_mul Modified src/topology/algebra/module.lean + theorem continuous_linear_map.one_apply + theorem continuous_linear_map.smul_right_apply + theorem continuous_linear_map.smul_right_one_eq_iff + theorem continuous_linear_map.smul_right_one_one 2019-11-13 10:53:30 3bb2b5c feat(algebra/big_operators): dvd_sum (#1679) * feat(data/multiset): dvd_sum * feat(algebra/big_operators): dvd_sum * fix build * fix build * fix build ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.dvd_sum Modified src/data/list/basic.lean + theorem list.dvd_sum Modified src/data/multiset.lean + theorem multiset.dvd_sum 2019-11-12 23:38:13 dfd25ff chore(meta/expr): delete local_binder_info; rename to_implicit (#1668) * chore(meta/expr): delete local_binder_info; rename to_implicit local_binder_info duplicated local_binding_info. to_implicit has been renamed to_implicit_local_const, to distinguish it from to_implicit_binder * file missing from commit ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/ext.lean 2019-11-12 18:51:50 1749a8d feat(group_theory/submonoid): add bundled submonoids and various lemmas (#1623) * WIP -- removing and everything is broken * test * test * tidy * fixed localization * starting on coset * WIP * submonoid.lean now compiles but no to_additive stuff * submonoid.lean compiles * putting is_submonoid back * docstrings * terrible docstrings up to line 370 * finished docstrings * more to_additive stuff * WIP -- removing and everything is broken * test * test * tidy * fixed localization * starting on coset * WIP * submonoid.lean now compiles but no to_additive stuff * submonoid.lean compiles * putting is_submonoid back * docstrings * terrible docstrings up to line 370 * finished docstrings * more to_additive stuff * WIP quotient monoids * quotient monoids WIP * quotient_monoid w/o ideals.lean all compiles * removing lemma * adjunction * some tidying * remove pointless equiv * completion compiles (very slowly) * add lemma * tidying * more tidying * mul -> smul oops * might now compile * tidied! I think * fix * breaking/adding stuff & switching branch * add Inf relation * removing sorrys * nearly updated quotient_monoid * updated quotient_monoid * resurrecting computability * tidied congruence.lean, added some docstrings * extending setoids instead, WIP * starting Galois insertion * a few more bits of to_additive and docs * no battery * up to line 800 * congruence'll compile when data.setoid exists now * more updates modulo existence of data.setoid * rearranging stuff * docstrings * starting additive docstrings * using newer additive docstring format in submonoid * docstrings, tidying * fixes and to_additive stuff, all WIP * temporary congruence fixes * slightly better approach to kernels, general chaos * aahh * more mess * deleting doomed inductive congruence closure * many fixes and better char pred isoms * docstrings for group_theory.submonoid * removing everything but bundled submonoids/lemmas * removing things etc * removing random empty folder * tidy * adding lemma back * tidying * responding to PR comments * change 2 defs to lemmas * @[simp] group_power.lean lemmas * responding to commute.lean comments * Remove unnecessary add_semiconj_by.eq * Change prod.submonoid to submonoid.prod * replacing a / at the end of docstring Sorry - don't make commits on your phone when your laptop's playing up :/ * removing some not very useful to_additives * fix pi_instances namespaces * remove unnecessary prefix * change extensionality to ext not sure this is necessary because surely merging will change this automatically, but Travis told me to, and I really want it to compile, and I am not at my laptop ESTIMATED CHANGES Modified src/algebra/commute.lean + def centralizer.add_submonoid + def set.centralizer.add_submonoid + def submonoid.centralizer + def submonoid.set.centralizer Modified src/algebra/group/hom.lean + theorem monoid_hom.comp_apply + theorem monoid_hom.comp_assoc + theorem monoid_hom.injective_iff Modified src/algebra/group/units.lean + theorem units.eq_inv_mul_iff_mul_eq + theorem units.eq_mul_inv_iff_mul_eq + theorem units.inv_mul_eq_iff_eq_mul + theorem units.mul_inv_eq_iff_eq_mul Modified src/algebra/group_power.lean + theorem add_monoid_hom.map_gsmul + theorem add_monoid_hom.map_smul + theorem monoid_hom.map_gpow + theorem monoid_hom.map_pow + theorem ring_hom.map_pow Modified src/algebra/pi_instances.lean + def prod.monoid_hom.fst + def prod.monoid_hom.snd + def submonoid.prod Modified src/algebra/ring.lean + theorem ring_hom.comp_assoc + theorem ring_hom.injective_iff Modified src/data/equiv/algebra.lean + def mul_equiv.mk' + def mul_equiv.to_ring_equiv + def ring_equiv.to_add_monoid_hom + def ring_equiv.to_monoid_hom Modified src/group_theory/coset.lean +/- theorem mem_own_right_coset +/- theorem mem_right_coset_right_coset Modified src/group_theory/submonoid.lean + theorem add_monoid.closure'_singleton + theorem add_submonoid.coe_smul + theorem add_submonoid.multiples.self_mem + def add_submonoid.multiples + theorem add_submonoid.multiples_subset + def add_submonoid.of_submonoid + theorem add_submonoid.smul_mem + def add_submonoid.to_submonoid + structure add_submonoid +/- theorem is_submonoid.coe_pow + def monoid.closure' + theorem monoid.closure'_le + theorem monoid.closure'_mono + theorem monoid.closure'_singleton + theorem monoid.exists_list_of_mem_closure' + theorem monoid.image_closure' + theorem monoid.le_closure' + theorem monoid.mem_closure'_union_iff + def monoid_hom.comap + def monoid_hom.map + def monoid_hom.range + def monoid_hom.range_mk + theorem monoid_hom.range_top_of_surjective + def monoid_hom.set_inclusion + def monoid_hom.subtype_mk +/- theorem multiples.add_mem +/- theorem powers.mul_mem + theorem submonoid.Inf_le' + def submonoid.Union_of_directed + def submonoid.add_submonoid_equiv + def submonoid.bot + theorem submonoid.coe_mul + theorem submonoid.coe_one + theorem submonoid.coe_pow + theorem submonoid.ext' + theorem submonoid.ext + theorem submonoid.finset_prod_mem + def submonoid.inf + theorem submonoid.le_Inf' + theorem submonoid.le_def + theorem submonoid.list_prod_mem + theorem submonoid.mem_Inf + theorem submonoid.mem_bot + theorem submonoid.mem_coe + theorem submonoid.mem_inf + theorem submonoid.mem_top + theorem submonoid.mul_mem + theorem submonoid.multiset_prod_mem + def submonoid.of_add_submonoid + theorem submonoid.one_mem + theorem submonoid.pow_mem + theorem submonoid.powers.self_mem + def submonoid.powers + theorem submonoid.powers_subset + theorem submonoid.prod_mem + def submonoid.subtype + theorem submonoid.subtype_apply + theorem submonoid.subtype_eq_val + def submonoid.to_add_submonoid + def submonoid.univ + structure submonoid 2019-11-12 16:51:10 7b07932 feat(analysis/normed_space/operator_norm): continuity of linear forms; swap directions of `nnreal.coe_*` (#1655) * feat(analysis/normed_space/operator_norm): continuity of linear forms * use lift, change nnreal.coe_le direction ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.bound_of_uniform_embedding + theorem continuous_linear_map.uniform_continuous + theorem continuous_linear_map.uniform_embedding_of_bound + theorem linear_equiv.uniform_embedding + theorem linear_map.bound_of_continuous + theorem linear_map.continuous_iff_is_closed_ker +/- theorem linear_map.continuous_of_bound +/- def linear_map.with_bound +/- theorem linear_map_with_bound_apply +/- theorem linear_map_with_bound_coe Modified src/analysis/normed_space/riesz_lemma.lean Modified src/data/real/ennreal.lean Modified src/data/real/nnreal.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/simple_func_dense.lean Modified src/topology/metric_space/basic.lean + theorem ball_pi + theorem closed_ball_pi + theorem dist_pi_le_iff + theorem dist_pi_lt_iff + theorem metric.uniform_embedding_iff' + theorem proper_space_of_compact_closed_ball_of_le Modified src/topology/metric_space/emetric_space.lean + theorem emetric.uniform_embedding_iff' Modified src/topology/metric_space/isometry.lean 2019-11-12 15:22:02 14435eb feat(algebra/lie_algebra): Define lie algebras (#1644) * feat(algebra/module): define abbreviation module.End The algebra of endomorphisms of a module over a commutative ring. * feat(ring_theory/algebra): define algebra structure on square matrices over a commutative ring * feat(algebra/lie_algebras.lean): define Lie algebras * feat(algebra/lie_algebras.lean): simp lemmas for Lie rings Specifically: * zero_left * zero_right * neg_left * leg_right * feat(algebra/lie_algebras): more simp lemmas for Lie rings Specifically: * gsmul_left * gsmul_right * style(algebra/lie_algebras): more systematic naming * Update src/algebra/lie_algebras.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebras.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebras.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebras.lean Co-Authored-By: Johan Commelin * Update src/algebra/lie_algebras.lean Catch up with renaming in recent Co-authored commits * Rename src/algebra/lie_algebras.lean --> src/algebra/lie_algebra.lean * Place lie_ring simp lemmas into global namespace * Place lie_smul simp lemma into global namespace * Drop now-redundant namespace qualifiers * Update src/algebra/lie_algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/algebra/lie_algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Catch up after recent Co-authored commits making carrier types implicit * Add missing docstrings * feat(algebra/lie_algebra): replace `instance` definitions with vanilla `def`s * style(algebra/lie_algebra): Apply suggestions from code review Co-Authored-By: Patrick Massot * Update src/algebra/lie_algebra.lean Co-Authored-By: Johan Commelin * Minor tidy ups ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/lie_algebra.lean + theorem add_lie + theorem gsmul_lie + theorem lie_add + def lie_algebra.Ad + def lie_algebra.bil_lie + def lie_algebra.of_associative_algebra + def lie_algebra.of_endomorphism_algebra + theorem lie_gsmul + theorem lie_neg + def lie_ring.of_associative_ring + theorem lie_self + theorem lie_skew + theorem lie_smul + theorem lie_zero + def matrix.lie_algebra + theorem neg_lie + theorem ring_commutator.add_left + theorem ring_commutator.add_right + theorem ring_commutator.alternate + def ring_commutator.commutator + theorem ring_commutator.jacobi + theorem smul_lie + theorem zero_lie Modified src/algebra/module.lean + def module.End Modified src/ring_theory/algebra.lean 2019-11-12 13:20:50 08880c9 feat(data/equiv,category_theory): prove equivalences are the same as isos (#1587) * refactor(category_theory,algebra/category): make algebraic categories not [reducible] Adapted from part of #1438. * Update src/algebra/category/CommRing/basic.lean Co-Authored-By: Scott Morrison * adding missing forget2 instances * Converting Reid's comment to a [Note] * adding examples testing coercions * feat(data/equiv/algebra): equivalence of algebraic equivalences and categorical isomorphisms * more @[simps] * more @[simps] ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean + def category_theory.iso.CommRing_iso_to_ring_equiv + def category_theory.iso.Ring_iso_to_ring_equiv + def ring_equiv.to_CommRing_iso + def ring_equiv.to_Ring_iso + def ring_equiv_iso_CommRing_iso + def ring_equiv_iso_Ring_iso Modified src/algebra/category/Group.lean + def category_theory.Aut.iso_perm + def category_theory.Aut.mul_equiv_perm + def category_theory.iso.CommGroup_iso_to_mul_equiv + def category_theory.iso.Group_iso_to_mul_equiv + def mul_equiv.to_CommGroup_iso + def mul_equiv.to_Group_iso + def mul_equiv_iso_CommGroup_iso + def mul_equiv_iso_Group_iso Modified src/algebra/category/Mon/basic.lean + def category_theory.iso.CommMon_iso_to_mul_equiv + def category_theory.iso.Mon_iso_to_mul_equiv + def mul_equiv.to_CommMon_iso + theorem mul_equiv.to_CommMon_iso_hom + theorem mul_equiv.to_CommMon_iso_inv + def mul_equiv.to_Mon_iso + theorem mul_equiv.to_Mon_iso_hom + theorem mul_equiv.to_Mon_iso_inv + def mul_equiv_iso_CommMon_iso + def mul_equiv_iso_Mon_iso Modified src/algebra/group/to_additive.lean Modified src/category_theory/concrete_category/basic.lean + theorem category_theory.coe_hom_inv_id + theorem category_theory.coe_inv_hom_id Modified src/category_theory/conj.lean Modified src/category_theory/endomorphism.lean + def category_theory.Aut.units_End_equiv_Aut - def category_theory.Aut.units_End_eqv_Aut Modified src/category_theory/single_obj.lean Modified src/category_theory/types.lean + def equiv_equiv_iso + theorem equiv_equiv_iso_hom + theorem equiv_equiv_iso_inv + def equiv_iso_iso Modified src/data/equiv/algebra.lean + theorem mul_equiv.symm_to_monoid_hom_apply_to_monoid_hom_apply + theorem mul_equiv.to_monoid_hom_apply_symm_to_monoid_hom_apply + theorem ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply + theorem ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply 2019-11-12 11:23:31 2cbeed9 style(*): use notation `𝓝` for `nhds` (#1582) * chore(*): notation for nhds * Convert new uses of nhds ESTIMATED CHANGES Modified docs/contribute/style.md Modified docs/theories/topology.md Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/fderiv.lean +/- theorem differentiable_within_at_inter +/- theorem fderiv_congr_of_mem_nhds +/- theorem fderiv_within_inter +/- theorem has_fderiv_at.has_fderiv_at_filter +/- theorem has_fderiv_within_at_inter Modified src/analysis/calculus/tangent_cone.lean +/- theorem tangent_cone_inter_nhds +/- theorem unique_diff_within_at.inter +/- theorem unique_diff_within_at_inter Modified src/analysis/calculus/times_cont_diff.lean +/- theorem iterated_fderiv_within_inter Modified src/analysis/complex/exponential.lean +/- theorem complex.tendsto_exp_zero_one +/- theorem real.tendsto_log_one_zero Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean +/- theorem tendsto_inverse_at_top_nhds_0 +/- theorem tendsto_inverse_at_top_nhds_0_nat +/- theorem tendsto_one_div_at_top_nhds_0_nat Modified src/data/analysis/topology.lean Modified src/data/padics/hensel.lean Modified src/data/real/hyperreal.lean +/- theorem hyperreal.gt_of_tendsto_zero_of_neg +/- theorem hyperreal.is_st_of_tendsto +/- theorem hyperreal.lt_of_tendsto_zero_of_pos +/- theorem hyperreal.neg_lt_of_tendsto_zero_of_pos Modified src/measure_theory/decomposition.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/simple_func_dense.lean Modified src/order/filter/pointwise.lean Modified src/topology/algebra/group.lean +/- theorem add_group_with_zero_nhd.nhds_eq +/- theorem add_group_with_zero_nhd.nhds_zero_eq_Z +/- theorem exists_nhds_split4 +/- theorem exists_nhds_split +/- theorem exists_nhds_split_inv +/- theorem nhds_is_mul_hom +/- theorem nhds_one_symm +/- theorem nhds_pointwise_mul +/- theorem nhds_translation Modified src/topology/algebra/infinite_sum.lean +/- def has_sum Modified src/topology/algebra/monoid.lean +/- theorem tendsto_mul' Modified src/topology/algebra/open_subgroup.lean +/- theorem open_subgroup.mem_nhds_one Modified src/topology/algebra/ordered.lean +/- theorem Liminf_eq_of_le_nhds +/- theorem Liminf_nhds +/- theorem Limsup_eq_of_le_nhds +/- theorem Limsup_nhds +/- theorem ge_mem_nhds +/- theorem gt_mem_nhds +/- theorem is_bounded_ge_nhds +/- theorem is_bounded_le_nhds +/- theorem is_cobounded_ge_nhds +/- theorem is_cobounded_le_nhds +/- theorem le_mem_nhds +/- theorem lt_mem_nhds +/- theorem mem_nhds_orderable_dest +/- theorem tendsto_max +/- theorem tendsto_min Modified src/topology/algebra/uniform_group.lean +/- theorem is_Z_bilin.tendsto_zero_left +/- theorem is_Z_bilin.tendsto_zero_right +/- theorem uniformity_eq_comap_nhds_zero' +/- theorem uniformity_eq_comap_nhds_zero Modified src/topology/bases.lean Modified src/topology/basic.lean +/- theorem closure_eq_nhds +/- def continuous_at +/- theorem interior_eq_nhds +/- theorem is_closed_iff_nhds +/- theorem is_open_iff_mem_nhds +/- theorem is_open_iff_nhds +/- theorem le_nhds_iff +/- theorem lim_spec +/- theorem mem_closure_iff_nhds +/- theorem mem_of_nhds +/- theorem nhds_def +/- theorem nhds_le_of_le +/- theorem nhds_neq_bot +/- theorem nhds_sets +/- theorem pure_le_nhds +/- theorem tendsto_const_nhds Modified src/topology/bounded_continuous_function.lean Modified src/topology/compact_open.lean Modified src/topology/constructions.lean +/- theorem map_nhds_subtype_val_eq +/- theorem nhds_prod_eq +/- theorem nhds_swap Modified src/topology/continuous_on.lean +/- theorem continuous_within_at_inter +/- theorem inter_mem_nhds_within +/- theorem mem_nhds_within_of_mem_nhds +/- def nhds_within +/- theorem nhds_within_restrict' +/- theorem nhds_within_univ Modified src/topology/dense_embedding.lean +/- theorem dense_inducing.comap_nhds_neq_bot +/- theorem dense_inducing.extend_eq +/- theorem dense_inducing.tendsto_comap_nhds_nhds Modified src/topology/instances/complex.lean +/- theorem complex.tendsto_inv Modified src/topology/instances/ennreal.lean +/- theorem ennreal.Icc_mem_nhds +/- theorem ennreal.coe_range_mem_nhds +/- theorem ennreal.nhds_coe +/- theorem ennreal.nhds_coe_coe +/- theorem ennreal.nhds_of_ne_top +/- theorem ennreal.nhds_top +/- theorem ennreal.nhds_zero +/- theorem ennreal.tendsto_of_real Modified src/topology/instances/nnreal.lean +/- theorem nnreal.tendsto_of_real Modified src/topology/instances/real.lean +/- theorem real.tendsto_inv Modified src/topology/list.lean +/- theorem nhds_list +/- theorem nhds_nil Modified src/topology/local_homeomorph.lean Modified src/topology/maps.lean +/- theorem inducing.map_nhds_eq +/- theorem is_open_map_iff_nhds_le Modified src/topology/metric_space/basic.lean +/- theorem metric.ball_mem_nhds +/- theorem metric.mem_nhds_iff +/- theorem metric.nhds_eq +/- theorem nhds_comap_dist Modified src/topology/metric_space/cau_seq_filter.lean +/- theorem ennreal.half_pow_tendsto_zero +/- theorem sequentially_complete.B2_lim +/- theorem sequentially_complete.le_nhds_cau_filter_lim Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.ball_mem_nhds +/- theorem emetric.mem_nhds_iff +/- theorem emetric.nhds_eq Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/order.lean +/- theorem map_nhds_induced_eq Modified src/topology/separation.lean +/- theorem compl_singleton_mem_nhds +/- theorem eq_of_nhds_neq_bot +/- theorem lim_eq +/- theorem lim_nhds_eq +/- theorem locally_compact_of_compact_nhds +/- theorem nhds_eq_nhds_iff +/- theorem nhds_is_closed +/- theorem nhds_le_nhds_iff +/- theorem t2_iff_nhds Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean +/- theorem convergent_eqv_pure +/- theorem ultrafilter_comap_pure_nhds Modified src/topology/subset_properties.lean +/- def compact Modified src/topology/topological_fiber_bundle.lean Modified src/topology/uniform_space/basic.lean +/- theorem nhds_eq_comap_uniformity +/- theorem nhds_eq_uniformity +/- theorem tendsto_left_nhds_uniformity +/- theorem tendsto_right_nhds_uniformity Modified src/topology/uniform_space/cauchy.lean +/- theorem cauchy_nhds +/- def is_complete Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/pi.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2019-11-12 07:05:03 3cae70d feat(extensionality): generate ext_iff for structures (#1656) * feat(extensionality): generate ext_iff for structures * fix * core.lean [skip ci] * Update ext.lean * Update ext.lean * Update tactics.md * Update src/tactic/ext.lean Co-Authored-By: Rob Lewis ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/ext.lean Modified test/tactics.lean 2019-11-12 05:02:30 f58f340 feat(order/lattice): add `monotone.le_map_sup` and `monotone.map_inf_le` (#1673) Use it to simplify some proofs in `data/rel`. ESTIMATED CHANGES Modified src/data/rel.lean +/- theorem rel.core_mono + theorem rel.core_subset +/- theorem rel.core_union +/- theorem rel.image_mono + theorem rel.image_subset Modified src/order/lattice.lean + theorem monotone.le_map_sup + theorem monotone.map_inf_le 2019-11-12 03:02:15 c28497f chore(*): use `iff.rfl` instead of `iff.refl _` (#1675) ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/algebra/order.lean +/- theorem ge_iff_le +/- theorem gt_iff_lt Modified src/data/equiv/basic.lean Modified src/data/fin.lean +/- theorem fin.le_iff_val_le_val +/- theorem fin.lt_iff_val_lt_val Modified src/data/finmap.lean Modified src/data/opposite.lean +/- theorem opposite.op_inj_iff +/- theorem opposite.unop_inj_iff Modified src/data/pfun.lean Modified src/data/rel.lean Modified src/data/set/basic.lean +/- theorem set.set_of_app_iff Modified src/data/set/lattice.lean Modified src/group_theory/free_group.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.all_ae_iff +/- theorem measure_theory.measure.mem_a_e_iff Modified src/order/filter/basic.lean Modified src/order/filter/partial.lean Modified src/set_theory/zfc.lean +/- theorem Class.mem_hom_right +/- theorem Class.subset_hom Modified src/topology/instances/nnreal.lean Modified src/topology/order.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean 2019-11-11 21:44:54 d077887 cleanup(data/equiv/basic): drop `quot_equiv_of_quot'`, rename `quot_equiv_of_quot` (#1672) * cleanup(data/equiv/basic): drop `quot_equiv_of_quot'`, rename `quot_equiv_of_quot` * `quot_equiv_of_quot` was the same as `quot.congr` * rename `quot_equiv_of_quot` to `quot.congr_left` to match `quot.congr` and `quot.congr_right`. * Add docs ESTIMATED CHANGES Modified src/data/equiv/basic.lean - def equiv.quot_equiv_of_quot' - def equiv.quot_equiv_of_quot 2019-11-11 15:19:29 a5b3af3 fix(tactic/core): correct `of_int` doc string (#1671) ESTIMATED CHANGES Modified src/tactic/core.lean 2019-11-11 02:02:13 6ecdefc chore(analysis/calculus/deriv): rename to fderiv (#1661) ESTIMATED CHANGES Renamed src/analysis/calculus/deriv.lean to src/analysis/calculus/fderiv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/times_cont_diff.lean 2019-11-10 23:56:06 886b15b doc(measure_theory/l1_space): add doc and some lemmas (#1657) * Add doc and lemmas * Remove unnecessary assumption * Fix integrable_neg * Remove extra assumptions * Wrong variable used ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem nnnorm_norm Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_const_mul' + theorem measure_theory.lintegral_const_mul_le Modified src/measure_theory/l1_space.lean +/- def measure_theory.ae_eq_fun.integrable +/- theorem measure_theory.ae_eq_fun.integrable_add +/- theorem measure_theory.ae_eq_fun.integrable_mk +/- theorem measure_theory.ae_eq_fun.integrable_neg +/- theorem measure_theory.ae_eq_fun.integrable_smul + theorem measure_theory.ae_eq_fun.integrable_sub + theorem measure_theory.ae_eq_fun.integrable_to_fun +/- theorem measure_theory.ae_eq_fun.integrable_zero +/- def measure_theory.integrable +/- theorem measure_theory.integrable_add + theorem measure_theory.integrable_iff_lintegral_edist + theorem measure_theory.integrable_iff_of_ae_eq +/- theorem measure_theory.integrable_neg + theorem measure_theory.integrable_norm + theorem measure_theory.integrable_of_ae_eq +/- theorem measure_theory.integrable_smul + theorem measure_theory.integrable_sub +/- theorem measure_theory.integrable_zero +/- theorem measure_theory.l1.add_def + theorem measure_theory.l1.add_to_fun + theorem measure_theory.l1.all_ae_mk_to_fun +/- theorem measure_theory.l1.dist_def + theorem measure_theory.l1.dist_to_fun + theorem measure_theory.l1.ext_iff + theorem measure_theory.l1.lintegral_edist_to_fun_lt_top +/- def measure_theory.l1.mk + theorem measure_theory.l1.mk_add + theorem measure_theory.l1.mk_eq_mk + theorem measure_theory.l1.mk_zero + theorem measure_theory.l1.neg_mk + theorem measure_theory.l1.neg_to_fun +/- theorem measure_theory.l1.norm_def + theorem measure_theory.l1.norm_mk + theorem measure_theory.l1.norm_to_fun + theorem measure_theory.l1.self_eq_mk +/- theorem measure_theory.l1.smul_def + theorem measure_theory.l1.smul_mk + theorem measure_theory.l1.smul_to_fun + theorem measure_theory.l1.sub_to_fun +/- theorem measure_theory.l1.zero_def + theorem measure_theory.l1.zero_to_fun +/- def measure_theory.l1 + theorem measure_theory.lintegral_edist_lt_top + theorem measure_theory.lintegral_edist_triangle +/- theorem measure_theory.lintegral_nnnorm_add + theorem measure_theory.lintegral_nnnorm_eq_lintegral_edist +/- theorem measure_theory.lintegral_nnnorm_neg +/- theorem measure_theory.lintegral_nnnorm_zero Modified src/measure_theory/measure_space.lean + theorem measure_theory.all_ae_eq_refl + theorem measure_theory.all_ae_eq_symm + theorem measure_theory.all_ae_eq_trans 2019-11-10 21:49:19 ce48727 fix(order/conditionally_complete_lattice): fix 2 misleading names (#1666) * `cSup_upper_bounds_eq_cInf` → `cSup_lower_bounds_eq_cInf`; * `cInf_lower_bounds_eq_cSup` → `cInf_upper_bounds_eq_cSup`. ESTIMATED CHANGES Modified src/order/conditionally_complete_lattice.lean - theorem lattice.cInf_lower_bounds_eq_cSup + theorem lattice.cInf_upper_bounds_eq_cSup + theorem lattice.cSup_lower_bounds_eq_cInf - theorem lattice.cSup_upper_bounds_eq_cInf Modified src/order/liminf_limsup.lean 2019-11-10 19:42:35 f738ec7 refactor(data/zmod/quadratic_reciprocity): simplify proof of quadratic reciprocity and prove when 2 is a square (#1609) * feat(number_theory/sum_four_squares): every natural number is the sum of four square numbers * gauss_lemma * Johan's suggestions * some better parity proofs * refactor(data/finset): restate disjoint_filter * fix build * fix silly lemmas in finite_fields * generalize a lemma * work on add_sum_mul_div_eq_mul * fix build * Update src/number_theory/sum_four_squares.lean * feat(data/multiset): map_eq_map_of_bij_of_nodup * finish proof of quad_rec * minor fix * Add docs * add docs in correct style * Use Ico 1 p instead of (range p).erase 0 ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_Ico_id_eq_fact - theorem finset.prod_range_id_eq_fact Modified src/data/nat/parity.lean + theorem nat.even_div + theorem nat.neg_one_pow_eq_one_iff_even Modified src/data/zmod/basic.lean + theorem zmod.cast_nat_abs_val_min_abs + theorem zmod.nat_abs_mod_two + theorem zmod.nat_abs_val_min_abs_neg + theorem zmod.neg_eq_self_mod_two + theorem zmod.val_eq_ite_val_min_abs + theorem zmodp.cast_nat_abs_val_min_abs + theorem zmodp.nat_abs_val_min_abs_neg + theorem zmodp.val_eq_ite_val_min_abs Modified src/data/zmod/quadratic_reciprocity.lean + theorem Ico_map_val_min_abs_nat_abs_eq_Ico_map_id + theorem div_eq_filter_card - theorem quadratic_reciprocity_aux.card_range_p_mul_q_filter_not_coprime - theorem quadratic_reciprocity_aux.filter_range_p_mul_q_div_two_eq - theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_div_two_eq - theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_div_two_eq_prod_product - theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_div_two_mod_p_eq - theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_not_coprime_eq - theorem quadratic_reciprocity_aux.prod_range_div_two_erase_zero - theorem quadratic_reciprocity_aux.prod_range_p_mul_q_div_two_ite_eq - theorem quadratic_reciprocity_aux.prod_range_p_mul_q_filter_coprime_mod_p - theorem quadratic_reciprocity_aux.range_p_product_range_q_div_two_prod + theorem zmodp.eisenstein_lemma + theorem zmodp.exists_pow_two_eq_two_iff + theorem zmodp.gauss_lemma + theorem zmodp.legendre_sym_eq_one_iff +/- theorem zmodp.legendre_sym_eq_pow + theorem zmodp.legendre_sym_two + theorem zmodp.prod_Ico_one_prime - theorem zmodp.prod_range_prime_erase_zero +/- theorem zmodp.quadratic_reciprocity 2019-11-10 17:58:18 4e68129 feat(data/finset): Ico.subset (#1669) Does not have the `m1 < n1` assumption required for `subset_iff` ESTIMATED CHANGES Modified src/data/finset.lean 2019-11-10 15:51:47 2cd59b4 feat(coinduction): add identifier list to `coinduction` tactic (#1653) * feat(coinduction): add identifier list to `coinduction` tactic * Update coinductive_predicates.lean * two doc strings [skip ci] * Update coinductive_predicates.lean * fix merge * move definitions around * move more stuff * fix build * move and document functions ESTIMATED CHANGES Modified src/meta/coinductive_predicates.lean - def name.last_string Modified src/meta/expr.lean + def name.last_string Modified src/tactic/core.lean Modified src/tactic/mk_iff_of_inductive_prop.lean Modified test/examples.lean 2019-11-10 13:45:26 209e039 cleanup(tactic/core): removing unused tactics (#1641) * doc(tactic/core): begin to add docstrings * a few more doc strings * more additions * more doc * deal with an undocumented definition by removing it * minor * add doc string * remove some unused core tactics * Revert "remove some unused core tactics" This reverts commit 52de333c0c3fd4294930b270eeac503425f0070f. * document get_classes * Revert "deal with an undocumented definition by removing it" This reverts commit 07b56e7456911466a15f1c340d9964e08aab195e. * more doc strings * dead code * revert changing `subobject_names` to private * remaining doc strings * cleanup(tactic/core): removing unused tactics * remove file_simp_attribute_decl and simp_lemmas_from_file * delete drop_binders * fix merge, delete check_defn ESTIMATED CHANGES Modified src/tactic/core.lean 2019-11-10 11:28:40 4ecc17b fix(scripts/mk_all): don't add `lint_mathlib` to `all.lean` [ci skip] (#1667) ESTIMATED CHANGES Modified scripts/mk_all.sh 2019-11-09 22:41:00 c497f96 feat(tactic/norm_cast): add push_cast simp attribute (#1647) * feat(tactic/norm_cast): add push_cast simp attribute * test and docs ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/norm_cast.lean Modified test/norm_cast.lean 2019-11-09 19:14:09 1236ced feat(data/nat/basic): succ_div (#1664) * feat(data/nat/basic): succ_div Rather long proof, but it was the best I could do. * Update basic.lean * add the two lemmas for each case * get rid of positivity assumption ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.succ_div + theorem nat.succ_div_of_dvd + theorem nat.succ_div_of_not_dvd 2019-11-09 14:11:28 1c24f92 feat(data/list/basic): nth_le_append_right (#1662) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nth_le_append_right + theorem list.nth_le_append_right_aux 2019-11-09 11:29:30 b0c36df feat(measure_theory/integration) lemmas for calculating integral of simple functions (#1659) * lemmas for calculating integration on simple functions * Updates * `finsupp` changed to `fin_vol_supp` * less conditions for `to_real_mul_to_real` * `sum_lt_top` with more abstraction * Fix extra arguments * One tactic per line ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem with_top.sum_lt_top + theorem with_top.sum_lt_top_iff Modified src/data/real/ennreal.lean +/- theorem ennreal.le_of_real_iff_to_real_le +/- theorem ennreal.of_real_eq_coe_nnreal +/- theorem ennreal.of_real_lt_iff_lt_to_real + theorem ennreal.sum_lt_top + theorem ennreal.sum_lt_top_iff + theorem ennreal.to_nnreal_sum + theorem ennreal.to_real_eq_to_real + theorem ennreal.to_real_mul_to_real + theorem ennreal.to_real_mul_top +/- theorem ennreal.to_real_of_real_mul + theorem ennreal.to_real_sum + theorem ennreal.to_real_top_mul Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_rw₁ + theorem measure_theory.lintegral_rw₂ +/- theorem measure_theory.simple_func.approx_apply +/- theorem measure_theory.simple_func.approx_comp +/- theorem measure_theory.simple_func.ennreal_rat_embed_encode + theorem measure_theory.simple_func.fin_vol_supp_map + theorem measure_theory.simple_func.fin_vol_supp_of_fin_vol_supp_map + theorem measure_theory.simple_func.fin_vol_supp_of_integral_lt_top + theorem measure_theory.simple_func.fin_vol_supp_pair + theorem measure_theory.simple_func.integral_lt_top_of_fin_vol_supp +/- theorem measure_theory.simple_func.integral_map + theorem measure_theory.simple_func.integral_map_coe_lt_top + theorem measure_theory.simple_func.lintegral_map + theorem measure_theory.simple_func.map_preimage + theorem measure_theory.simple_func.map_preimage_singleton + theorem measure_theory.simple_func.pair_preimage + theorem measure_theory.simple_func.pair_preimage_singleton + theorem measure_theory.simple_func.preimage_eq_empty_iff + theorem measure_theory.simple_func.smul_apply + theorem measure_theory.simple_func.smul_eq_map + theorem measure_theory.simple_func.volume_bUnion_preimage Modified src/measure_theory/simple_func_dense.lean 2019-11-08 14:09:26+01:00 ca21616 chore(scripts): add linter and update nolints ESTIMATED CHANGES Modified scripts/mk_nolint.lean Modified scripts/nolints.txt 2019-11-08 13:57:15+01:00 8afcc5a feat(scripts): add nolints.txt ESTIMATED CHANGES Added scripts/nolints.txt 2019-11-08 11:03:46 3223ba7 doc(linear_algebra): rename lin_equiv to linear_equiv (#1660) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean Modified src/linear_algebra/matrix.lean - def lin_equiv_matrix' - def lin_equiv_matrix + def linear_equiv_matrix' + def linear_equiv_matrix 2019-11-07 23:25:38 362acb5 feat(tactic/lint, script/mk_nolint): generate list of failing declarations to be ignored (#1636) * feat(tactic/lint): return names of failing declarations * feat(scripts/mk_nolint): produce sorted list of declarations failing lint tests * fix copyright * fix test * Update scripts/mk_nolint.lean ESTIMATED CHANGES Added scripts/mk_nolint.lean Modified src/tactic/lint.lean Modified test/lint.lean 2019-11-07 03:43:41 c718a22 feat(extensionality): rename to `ext`; generate `ext` rules for structures (#1645) * Update core.lean * Update tactics.lean * integrate generation of extensionality lemma of structures into `ext` * Update src/tactic/ext.lean [skip ci] Co-Authored-By: Rob Lewis * Update src/tactic/ext.lean [skip ci] Co-Authored-By: Rob Lewis * Update src/tactic/ext.lean Co-Authored-By: Rob Lewis * Update ext.lean [skip ci] * Update tactics.md [skip ci] * fix build * fix build ESTIMATED CHANGES Modified docs/tactics.md Modified src/algebra/continued_fractions/basic.lean Modified src/algebra/group/hom.lean Modified src/algebra/group/units.lean +/- theorem units.ext Modified src/algebra/module.lean +/- theorem linear_map.ext +/- theorem submodule.ext Modified src/algebra/ring.lean +/- theorem ring_hom.ext Modified src/algebraic_geometry/presheafed_space.lean +/- theorem algebraic_geometry.PresheafedSpace.ext Modified src/category/monad/basic.lean Modified src/category/monad/cont.lean Modified src/category/monad/writer.lean Modified src/category_theory/comma.lean +/- theorem category_theory.comma_morphism.ext +/- theorem category_theory.over.over_morphism.ext +/- theorem category_theory.under.under_morphism.ext Modified src/category_theory/endomorphism.lean Modified src/category_theory/isomorphism.lean +/- theorem category_theory.iso.ext Modified src/category_theory/limits/cones.lean +/- theorem category_theory.limits.cocone_morphism.ext +/- def category_theory.limits.cocones.ext +/- theorem category_theory.limits.cone_morphism.ext +/- def category_theory.limits.cones.ext Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.hom_ext +/- theorem category_theory.limits.limit.hom_ext Modified src/category_theory/monad/algebra.lean +/- theorem category_theory.monad.algebra.hom.ext Modified src/category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.ext Modified src/data/buffer/basic.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/algebra.lean +/- theorem ring_equiv.ext Modified src/data/equiv/basic.lean +/- theorem equiv.ext +/- theorem equiv.perm.ext Modified src/data/equiv/local_equiv.lean Modified src/data/finmap.lean +/- theorem finmap.ext Modified src/data/finset.lean Modified src/data/finsupp.lean Modified src/data/list/alist.lean +/- theorem alist.ext Modified src/data/list/basic.lean Modified src/data/matrix/basic.lean +/- theorem matrix.ext Modified src/data/multiset.lean Modified src/data/option/basic.lean +/- theorem option.ext Modified src/data/pequiv.lean +/- theorem pequiv.ext Modified src/data/polynomial.lean +/- theorem polynomial.ext Modified src/data/seq/seq.lean Modified src/data/set/basic.lean Modified src/data/setoid.lean +/- theorem setoid.ext' Modified src/data/stream/basic.lean Modified src/data/vector2.lean +/- theorem vector.ext Modified src/linear_algebra/basic.lean +/- theorem linear_equiv.ext Modified src/linear_algebra/bilinear_form.lean +/- theorem bilin_form.ext Modified src/linear_algebra/direct_sum_module.lean +/- theorem direct_sum.ext Modified src/linear_algebra/sesquilinear_form.lean +/- theorem sesq_form.ext Modified src/logic/embedding.lean +/- theorem function.embedding.ext Modified src/measure_theory/ae_eq_fun.lean +/- theorem measure_theory.ae_eq_fun.ext Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.ext Modified src/measure_theory/measurable_space.lean +/- theorem measurable_space.dynkin_system.ext +/- theorem measurable_space.ext Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.measure.ext Modified src/measure_theory/outer_measure.lean +/- theorem measure_theory.outer_measure.ext Modified src/measure_theory/probability_mass_function.lean Modified src/order/filter/basic.lean Modified src/ring_theory/algebra.lean +/- theorem subalgebra.ext Modified src/ring_theory/ideals.lean +/- theorem ideal.ext Modified src/ring_theory/power_series.lean +/- theorem mv_power_series.ext +/- theorem power_series.ext Modified src/tactic/ext.lean +/- theorem plift.ext +/- theorem ulift.ext Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.ext Modified src/topology/algebra/open_subgroup.lean Modified src/topology/basic.lean Modified src/topology/bounded_continuous_function.lean +/- theorem bounded_continuous_function.ext Modified src/topology/local_homeomorph.lean Modified src/topology/opens.lean +/- theorem topological_space.opens.ext Modified src/topology/sheaves/presheaf_of_functions.lean Modified src/topology/uniform_space/basic.lean Modified test/ext.lean +/- theorem df.ext +/- theorem unit.ext Modified test/tactics.lean + structure foo 2019-11-06 22:22:23 17a7f69 doc(measure_theory/ae_eq_fun): add documentations and some lemmas (#1650) * Add documentations. `to_fun`. * More precise comments ESTIMATED CHANGES Modified src/measure_theory/ae_eq_fun.lean + theorem measure_theory.ae_eq_fun.add_to_fun + theorem measure_theory.ae_eq_fun.all_ae_mk_to_fun + theorem measure_theory.ae_eq_fun.comp_edist_to_fun + theorem measure_theory.ae_eq_fun.comp_eq_mk_to_fun + theorem measure_theory.ae_eq_fun.comp_mk + theorem measure_theory.ae_eq_fun.comp_to_fun + theorem measure_theory.ae_eq_fun.comp₂_eq_mk_to_fun + theorem measure_theory.ae_eq_fun.comp₂_to_fun + theorem measure_theory.ae_eq_fun.const_to_fun + theorem measure_theory.ae_eq_fun.edist_to_fun' + theorem measure_theory.ae_eq_fun.edist_to_fun + theorem measure_theory.ae_eq_fun.edist_zero_to_fun + theorem measure_theory.ae_eq_fun.eintegral_to_fun + theorem measure_theory.ae_eq_fun.ext + theorem measure_theory.ae_eq_fun.le_iff_to_fun_le + theorem measure_theory.ae_eq_fun.lift_rel_iff_to_fun +/- theorem measure_theory.ae_eq_fun.mk_add_mk + theorem measure_theory.ae_eq_fun.mk_sub_mk + theorem measure_theory.ae_eq_fun.neg_to_fun + theorem measure_theory.ae_eq_fun.one_to_fun + theorem measure_theory.ae_eq_fun.self_eq_mk + theorem measure_theory.ae_eq_fun.smul_to_fun + theorem measure_theory.ae_eq_fun.sub_to_fun + theorem measure_theory.ae_eq_fun.zero_to_fun 2019-11-06 07:01:00 3c8bbdc chore(topology/subset_properties): simplify a proof (#1652) ESTIMATED CHANGES Modified src/topology/subset_properties.lean 2019-11-05 23:56:57 62815e3 doc(tactic/core): docstrings on all definitions (#1632) * doc(tactic/core): begin to add docstrings * a few more doc strings * more additions * more doc * deal with an undocumented definition by removing it * minor * add doc string * remove some unused core tactics * Revert "remove some unused core tactics" This reverts commit 52de333c0c3fd4294930b270eeac503425f0070f. * document get_classes * Revert "deal with an undocumented definition by removing it" This reverts commit 07b56e7456911466a15f1c340d9964e08aab195e. * more doc strings * dead code * revert changing `subobject_names` to private * remaining doc strings * Apply suggestions from code review Co-Authored-By: Bryan Gin-ge Chen * remove todo ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/core.lean 2019-11-05 21:26:42 d9578a6 docs(tactic/lint) add code fence around #print statement to avoid its args looking like html tags. (#1651) ESTIMATED CHANGES Modified src/tactic/lint.lean 2019-11-05 15:37:42 986e58c refactor(sum_two_square): extract lemmas about primes in Z[i] (#1643) * refactor(sum_two_square): extract lemmas about primes in Z[i] * forgot to save * docztring * module docstrings ESTIMATED CHANGES Modified src/data/zsqrtd/gaussian_int.lean + theorem gaussian_int.mod_four_eq_three_of_nat_prime_of_prime + theorem gaussian_int.prime_iff_mod_four_eq_three_of_nat_prime + theorem gaussian_int.prime_of_nat_prime_of_mod_four_eq_three + theorem gaussian_int.sum_two_squares_of_nat_prime_of_not_irreducible Modified src/number_theory/sum_two_squares.lean 2019-11-04 22:23:15 f3f1fd8 feat(floor): one more lemma (#1646) * feat(floor): one more lemma and #lint fix * Update src/algebra/floor.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/algebra/floor.lean +/- theorem abs_sub_lt_one_of_floor_eq_floor + theorem le_of_nat_ceil_le 2019-11-04 20:13:48 2dcc6c2 fix(tactic/tfae,scc): change the strongly connected component algorithm (#1600) * fix(tactic/tfae,scc): change the strongly connected component algorithm * add example * fix scc algorithm and add documentation * documentation [skip ci] * Update scc.lean [skip ci] * Update src/tactic/scc.lean Co-Authored-By: Scott Morrison * Update scc.lean * Update tactics.lean * Update src/tactic/scc.lean Co-Authored-By: Rob Lewis * rename mk_closure, add line breaks, grammar tweaks * Update scc.lean * add to `to_tactic_format` output and docstring, more minor fixes ESTIMATED CHANGES Modified src/tactic/scc.lean Modified src/tactic/tfae.lean Modified test/tactics.lean 2019-11-04 15:02:31 ee5b38d feat(simps): allow the user to specify the projections (#1630) * feat(simps): allow the user to specify the projections Also add option to shorten generated lemma names Add the attribute to more places in the category_theory library The projection lemmas of inl_ and inr_ are now called inl__obj and similar * use simps partially in limits/cones and whiskering * revert whiskering * rename last_name to short_name * Update src/category_theory/products/basic.lean * Update src/category_theory/limits/cones.lean Co-Authored-By: Scott Morrison * Update src/category_theory/products/associator.lean Co-Authored-By: Scott Morrison * Update src/data/string/defs.lean Co-Authored-By: Scott Morrison * clarify is_eta_expansion docstrings ESTIMATED CHANGES Modified docs/tactics.md Modified src/category_theory/limits/cones.lean +/- def category_theory.limits.cocone_left_op_of_cone - theorem category_theory.limits.cocone_left_op_of_cone_X +/- def category_theory.limits.cocone_of_cone_left_op - theorem category_theory.limits.cocone_of_cone_left_op_X +/- def category_theory.limits.cone_left_op_of_cocone - theorem category_theory.limits.cone_left_op_of_cocone_X +/- def category_theory.limits.cone_of_cocone_left_op - theorem category_theory.limits.cone_of_cocone_left_op_X Modified src/category_theory/products/associator.lean +/- def category_theory.prod.associator - theorem category_theory.prod.associator_map - theorem category_theory.prod.associator_obj +/- def category_theory.prod.inverse_associator - theorem category_theory.prod.inverse_associator_map - theorem category_theory.prod.inverse_associator_obj Modified src/category_theory/products/basic.lean +/- def category_theory.evaluation - theorem category_theory.evaluation_map_app - theorem category_theory.evaluation_obj_map - theorem category_theory.evaluation_obj_obj +/- def category_theory.evaluation_uncurried - theorem category_theory.evaluation_uncurried_map - theorem category_theory.evaluation_uncurried_obj +/- def category_theory.functor.prod - theorem category_theory.functor.prod_map - theorem category_theory.functor.prod_obj +/- def category_theory.nat_trans.prod - theorem category_theory.nat_trans.prod_app +/- def category_theory.prod.fst - theorem category_theory.prod.fst_map - theorem category_theory.prod.fst_obj +/- def category_theory.prod.inl - theorem category_theory.prod.inl_map - theorem category_theory.prod.inl_obj +/- def category_theory.prod.inr - theorem category_theory.prod.inr_map - theorem category_theory.prod.inr_obj +/- def category_theory.prod.snd - theorem category_theory.prod.snd_map - theorem category_theory.prod.snd_obj +/- def category_theory.prod.swap - theorem category_theory.prod.swap_map - theorem category_theory.prod.swap_obj +/- def category_theory.prod.symmetry Modified src/category_theory/sums/basic.lean +/- def category_theory.sum.inl_ - theorem category_theory.sum.inl_map - theorem category_theory.sum.inl_obj +/- def category_theory.sum.inr_ - theorem category_theory.sum.inr_map - theorem category_theory.sum.inr_obj Modified src/data/list/defs.lean + def list.get_rest Modified src/data/string/defs.lean + def string.get_rest Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/simps.lean Modified test/simps.lean + def short_name1 + def specify.specify1 + def specify.specify2 + def specify.specify3 + def specify.specify4 + def specify.specify5 2019-11-03 15:40:43 a6ace34 feat(analysis/normed_space): Riesz's lemma (#1642) * fix(topology/metric_space/hausdorff_distance): fix typo * feat(analysis/normed_space): Riesz's Lemma * fix(analysis/normed_space): fix silly mistake in statement of riesz lemma * style(analysis/normed_space/riesz_lemma): variable names & indent * doc(analysis/normed_space/riesz_lemma): add attribution * doc(analysis/normed_space/riesz_lemma): fix module docstring style * style(analysis/normed_space/riesz_lemma): more style & documentation - recall statement in module header comment - typecast instead of unfold ESTIMATED CHANGES Added src/analysis/normed_space/riesz_lemma.lean + theorem riesz_lemma Modified src/topology/metric_space/hausdorff_distance.lean - theorem metric.mem_iff_ind_dist_zero_of_closed + theorem metric.mem_iff_inf_dist_zero_of_closed 2019-11-01 11:28:15 9af7e5b refactor(linear_algebra/basic): use smul_right (#1640) * refactor(linear_algebra/basic): use smul_right * Update src/linear_algebra/basic.lean Co-Authored-By: Scott Morrison * Update src/linear_algebra/basic.lean Co-Authored-By: Scott Morrison ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/mean_value.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.bound - theorem continuous_linear_map.scalar_prod_space_iso_norm + theorem continuous_linear_map.smul_right_norm Modified src/linear_algebra/basic.lean - def linear_map.scalar_prod_space_iso +/- theorem linear_map.sum_apply Modified src/topology/algebra/module.lean - def continuous_linear_map.scalar_prod_space_iso + def continuous_linear_map.smul_right 2019-11-01 03:25:06 1710fd8 feat(lint): add priority test for instances that always apply (#1625) * feat(lint): add priority test for instances that always apply also move a defn from coinductive_predicates to expr also slightly refactor incorrect_def_lemma * update doc * add priorities to linters Now they are run in the order specified by the doc * always run tests in the extra set even when they are slow and is false * move some more declarations from coinductive_predicates to expr remove coinductive_predicates as import from some (but not all) files * reviewer comments * remove unsafe prefixes ESTIMATED CHANGES Modified docs/tactics.md Modified src/meta/coinductive_predicates.lean Modified src/meta/expr.lean Modified src/tactic/alias.lean Modified src/tactic/core.lean Modified src/tactic/explode.lean Modified src/tactic/lint.lean 2019-11-01 01:22:43 5f17abc fix(tactic/elide): was untested and buggy. Fixed a few issues (#1638) * fix(tactic/elide): was untested and buggy. Fixed a few issues * Update tactics.lean * add copyright header * Update src/tactic/elide.lean Co-Authored-By: Rob Lewis ESTIMATED CHANGES Modified src/logic/basic.lean +/- def hidden Modified src/tactic/elide.lean Modified test/tactics.lean 2019-10-31 23:37:26 df91623 chore(category_theory/whiskering): clean up (#1613) * chore(category_theory/whiskering): clean up * ugh, the stalks proofs are so fragile * fixes * minor * fix * fix ESTIMATED CHANGES Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/opposites.lean - theorem category_theory.nat_trans.op_app + theorem category_theory.nat_trans.op_id - theorem category_theory.nat_trans.unop_app + theorem category_theory.nat_trans.unop_id Modified src/category_theory/whiskering.lean - theorem category_theory.whisker_left.app +/- def category_theory.whisker_left - theorem category_theory.whisker_right.app +/- def category_theory.whisker_right +/- def category_theory.whiskering_left - theorem category_theory.whiskering_left_map_app_app - theorem category_theory.whiskering_left_obj_map - theorem category_theory.whiskering_left_obj_obj +/- def category_theory.whiskering_right - theorem category_theory.whiskering_right_map_app_app - theorem category_theory.whiskering_right_obj_map - theorem category_theory.whiskering_right_obj_obj Modified src/topology/sheaves/stalks.lean 2019-10-31 21:03:05 cd0bc32 chore(data/set/finite): move defns up hierarchy; rename fintype_of_finset, card_fintype_of_finset (#1615) * chore(data/set/finite): move defns up hierarchy * get namespaces right * fixes * fix build ESTIMATED CHANGES Modified src/data/finsupp.lean Modified src/data/fintype.lean + theorem fintype.card_of_finset' + theorem fintype.card_of_finset + def fintype.of_finset + theorem set.mem_to_finset + theorem set.mem_to_finset_val + def set.to_finset Modified src/data/fintype/intervals.lean Modified src/data/set/finite.lean - theorem set.card_fintype_of_finset' - theorem set.card_fintype_of_finset - def set.fintype_of_finset - theorem set.mem_to_finset - theorem set.mem_to_finset_val - def set.to_finset Modified src/group_theory/order_of_element.lean 2019-10-31 13:24:24 6b51787 feat(order/conditionally_complete_lattice): add complete_linear_order instance for enat (#1633) ESTIMATED CHANGES Modified src/data/nat/enat.lean + theorem enat.with_top_equiv_coe + theorem enat.with_top_equiv_le + theorem enat.with_top_equiv_lt + theorem enat.with_top_equiv_symm_coe + theorem enat.with_top_equiv_symm_le + theorem enat.with_top_equiv_symm_lt + theorem enat.with_top_equiv_symm_top + theorem enat.with_top_equiv_symm_zero + theorem enat.with_top_equiv_top + theorem enat.with_top_equiv_zero Modified src/order/conditionally_complete_lattice.lean 2019-10-31 11:20:33 780cbc9 feat(tactic/simps): allow let-expressions (#1626) * feat(simps); allow let-expressions * Update src/meta/expr.lean Co-Authored-By: Rob Lewis ESTIMATED CHANGES Modified docs/tactics.md Modified src/meta/expr.lean Modified src/tactic/simps.lean Modified test/simps.lean + def let1 + def let2 + def let3 + def let4 2019-10-30 20:31:06 d43f7f9 feat(.travis.yml): add linting to test stage (#1606) ESTIMATED CHANGES Modified .travis.yml Modified scripts/mk_all.sh 2019-10-30 17:35:02 aadfde6 feat(data/fintype): fintype.card_subtype_lt (#1635) * feat(data/fintype): fintype.card_subtype_lt * Update src/data/fintype.lean Co-Authored-By: Rob Lewis ESTIMATED CHANGES Modified src/data/fintype.lean + theorem fintype.card_subtype_lt 2019-10-29 22:34:46 ca90081 feat(number_theory/sum_four_squares): every natural number is the sum of four square numbers (#1560) * feat(number_theory/sum_four_squares): every natural number is the sum of four square numbers * Johan's suggestions * some better parity proofs * fix silly lemmas in finite_fields * generalize a lemma * fix build * Update src/number_theory/sum_four_squares.lean * add docs in correct style ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_eq_multiset_prod Modified src/data/int/basic.lean + theorem is_ring_hom.map_int_cast + theorem ring_hom.map_int_cast Modified src/data/int/parity.lean + theorem int.even_neg Modified src/data/nat/cast.lean + theorem is_semiring_hom.map_nat_cast + theorem ring_hom.map_nat_cast Modified src/data/zmod/quadratic_reciprocity.lean Modified src/field_theory/finite.lean + theorem char_p.sum_two_squares + theorem zmodp.sum_two_squares Added src/number_theory/sum_four_squares.lean + theorem int.exists_sum_two_squares_add_one_eq_k + theorem int.sum_two_squares_of_two_mul_sum_two_squares + theorem nat.sum_four_squares 2019-10-29 09:22:53 6030ff0 chore(category_theory): speed-up monoidal.of_has_finite_products (#1616) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.coprod.associator_naturality + theorem category_theory.limits.coprod.pentagon + theorem category_theory.limits.coprod.triangle + theorem category_theory.limits.prod.associator_naturality + theorem category_theory.limits.prod.pentagon + theorem category_theory.limits.prod.triangle Modified src/category_theory/monoidal/of_has_finite_products.lean 2019-10-29 07:16:16 e6e25d0 cleanup(order|string) (#1629) move data.string to data.string.basic remove classical.decidable_linear_order. was duplicate of classical.DLO ESTIMATED CHANGES Modified src/data/multiset.lean Renamed src/data/string.lean to src/data/string/basic.lean Modified src/order/basic.lean Modified src/order/pilex.lean Modified src/tactic/subtype_instance.lean 2019-10-29 05:05:10 b9e3dbb feat(rat): give Q-algebra structure on field (#1628) also move around some declarations in rat.cast the only new declaration in that file is is_ring_hom_cast ESTIMATED CHANGES Modified src/data/rat/cast.lean +/- theorem rat.cast_add +/- theorem rat.cast_bit0 +/- theorem rat.cast_bit1 +/- theorem rat.cast_mul +/- theorem rat.cast_sub Modified src/ring_theory/algebra.lean 2019-10-29 03:03:51 b5b674c fix(*): use has_coe_t (#1627) ESTIMATED CHANGES Modified src/data/seq/computation.lean Modified src/group_theory/coset.lean Modified src/order/filter/filter_product.lean Modified src/ring_theory/localization.lean Modified src/topology/uniform_space/completion.lean 2019-10-29 00:42:49 0ea3dfe feat(tactic/rcases): transport the `cases h : e` syntax to `rcases` (#1611) * Update rcases.lean * Update rcases.lean * Update rcases.lean * Update lift.lean * Update rcases.lean * Update tactics.md * Update rcases.lean ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/lift.lean Modified src/tactic/rcases.lean Modified test/rcases.lean 2019-10-28 21:23:53 7a8f53e feat(tactic/lint): silent linting (#1580) * feat(tactic/lint): silent linting * doc(tactic/lint): doc silent linting and nolint features * fix test * change notation for silent linting * style(tactic/lint): remove commented lines ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/lint.lean Modified test/lint.lean 2019-10-28 16:28:58 94e368c chore(ring_theory/algebra): add docstring to algebra.comap and remove unused instances (#1624) * doc(ring_theory/algebra): add docstring to algebra.comap * Update algebra.lean ESTIMATED CHANGES Modified src/ring_theory/algebra.lean +/- def algebra.comap 2019-10-28 10:34:50 c2e81dd fix(tactic/omega): fix omega bugs, add docstring (closes #1484) (#1620) * Fix omega bugs, add docstring * style(tactic/omega/main): trivial cleaning ESTIMATED CHANGES Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/main.lean Modified src/tactic/omega/nat/main.lean Modified test/omega.lean 2019-10-27 17:05:13 1fa03c2 feat(linear_algebra/basic): define algebra structure on endomorphisms of module (#1618) * feat(linear_algebra/basic): define algebra structure on endomorphisms of module * Update algebra.lean ESTIMATED CHANGES Modified src/ring_theory/algebra.lean 2019-10-27 07:06:37 89ece14 fix(data/mv_polynomial): generalize equivs to comm_semiring (#1621) This apparently makes the elaborator's job a lot easier, and reduces the compile time of the whole module by a factor of 3. ESTIMATED CHANGES Modified src/data/mv_polynomial.lean +/- def mv_polynomial.mv_polynomial_equiv_mv_polynomial +/- def mv_polynomial.ring_equiv_congr 2019-10-27 02:35:54 8a45d98 chore(category_theory): remove superfluous lemma (#1614) ESTIMATED CHANGES Modified src/category_theory/category/default.lean - theorem category_theory.category.assoc_symm Modified src/category_theory/equivalence.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/limits/limits.lean 2019-10-26 12:58:23 8eaf478 feat(linear_algebra/basis): Dedekind's linear independence of characters (#1595) * feat(linear_algebra/basis): Dedekind's linear independence of characters * feat(linear_algebra/basis): generalize independence of characters to integral domains * chore(linear_algebra/basis): change proofs * commenting the proof ESTIMATED CHANGES Modified src/data/finset.lean Modified src/linear_algebra/basis.lean + theorem linear_independent_iff' + theorem linear_independent_monoid_hom 2019-10-26 10:17:39 b9798dc feat(data/nat): a lemma about min_fac (#1603) * feat(data/nat): a lemma about min_fac * feat(data/nat): a lemma about min_fac * use Rob's proof * fix * let's play golf * newline * use Chris' proof * cleaning up * rename per Chris' suggestions ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.eq_of_dvd_of_div_eq_one - theorem nat.eq_of_dvd_quot_one + theorem nat.eq_zero_of_dvd_of_div_eq_zero Modified src/data/nat/prime.lean + theorem nat.min_fac_le_div 2019-10-26 08:23:59 b46f5b0 feat(data/set/intervals): fintype instances for ℕ and ℤ (#1602) * starting on fintype instances for Icos * finishing fintypes * minor * move file * oops * redone * formatting * cleaning up ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.Ico_ℤ.mem + def finset.Ico_ℤ Added src/data/fintype/intervals.lean Modified src/data/int/basic.lean + theorem int.to_nat_sub_of_le 2019-10-25 15:46:12 6ee8bf9 refactor(data/rat/meta): rename to meta_defs (#1612) * refactor(data/rat/meta): rename to meta_defs * fix build ESTIMATED CHANGES Modified src/data/rat/default.lean Renamed src/data/rat/meta.lean to src/data/rat/meta_defs.lean Modified src/tactic/norm_num.lean Modified test/rat.lean 2019-10-24 21:13:25 9db43a5 chore(data/nat/basic): remove pos_iff_ne_zero' (#1610) This used to be different from pos_iff_ne_zero because the latter was phrased in terms of `n > 0`, not `0 < n`. Since #1436 they are the same. ESTIMATED CHANGES Modified src/analysis/complex/exponential.lean Modified src/data/nat/basic.lean - theorem nat.pos_iff_ne_zero' Modified src/ring_theory/multiplicity.lean 2019-10-24 17:11:21 151bcbe feat(meta/expr,data/rat/basic): add rat.reflect (#1565) * feat(meta/expr,data/rat/basic): add rat.reflect * doc(meta/expr,data/rat/basic): clarify type restrictions for mk_numeral functions * fix name clash with norm_num functions * fix doc string to expr.of_rat * Update src/data/rat/basic.lean Co-Authored-By: Reid Barton * fix declaration and move to new file * tests * fix import * protect rat.reflect * to_pos_rat --> to_nonneg_rat * correctly test rat.reflect ESTIMATED CHANGES Modified src/data/rat/default.lean Added src/data/rat/meta.lean Modified src/meta/expr.lean Modified src/tactic/norm_num.lean Added test/rat.lean 2019-10-24 15:08:35 3f8a492 chore(category_theory): replace some @[simp] with @[simps] (#1605) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.coprod.associator +/- def category_theory.limits.coprod.braiding +/- def category_theory.limits.coprod.left_unitor +/- def category_theory.limits.coprod.right_unitor +/- def category_theory.limits.prod.associator +/- def category_theory.limits.prod.braiding +/- def category_theory.limits.prod.left_unitor +/- def category_theory.limits.prod.right_unitor 2019-10-24 13:48:11 b1f44ba chore(group_theory/free_group,order/zorn): rename zorn.zorn and sum.sum (#1604) * chore(order/zorn): rename zorn.zorn * chore(group_theory/free_group): rename sum.sum * chore(group_theory/free_group,order/zorn): remove nolint ESTIMATED CHANGES Modified src/group_theory/free_group.lean + theorem free_group.sum.mul - theorem free_group.sum.sum Modified src/order/filter/basic.lean Modified src/order/zorn.lean + theorem zorn.exists_maximal_of_chains_bounded - theorem zorn.zorn 2019-10-24 11:26:19 5da754c fix(tactic/solve_by_elim): parameter parsing (#1591) * fix(tactic/solve_by_elim): parameter parsing * revert accidental commenting out * doc comments for solve_by_elim * fix build ESTIMATED CHANGES Modified src/tactic/solve_by_elim.lean Modified src/tactic/suggest.lean Modified test/solve_by_elim.lean Modified test/suggest.lean 2019-10-24 06:28:15 4b9cdf4 chore(*): pass dup_namespace and def_lemma lint tests (#1599) * chore(*): pass dup_namespace and def_lemma lint tests * Update src/group_theory/free_group.lean Co-Authored-By: Johan Commelin * Update src/number_theory/pell.lean Co-Authored-By: Johan Commelin * Update src/order/lattice.lean Co-Authored-By: Johan Commelin * Update src/set_theory/ordinal.lean Co-Authored-By: Johan Commelin * Update src/set_theory/ordinal.lean Co-Authored-By: Johan Commelin * Update src/tactic/transfer.lean Co-Authored-By: Johan Commelin * Update src/group_theory/free_group.lean Co-Authored-By: Reid Barton * using nolint ESTIMATED CHANGES Modified src/group_theory/free_group.lean +/- theorem free_group.sum.sum Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.finite_dimensional_of_finite_basis - def finite_dimensional.finite_dimensional_of_finite_basis Modified src/number_theory/pell.lean +/- def pell.pell Modified src/order/lattice.lean + theorem lattice.ext - theorem lattice.lattice.ext Modified src/order/zorn.lean +/- theorem zorn.zorn Modified src/ring_theory/algebraic.lean + theorem subalgebra.is_algebraic_iff - def subalgebra.is_algebraic_iff Modified src/set_theory/ordinal.lean +/- def cardinal.ord_eq_min +/- def ordinal.div_def Modified src/tactic/reassoc_axiom.lean + theorem category_theory.reassoc_of - def category_theory.reassoc_of Modified src/tactic/transfer.lean 2019-10-24 02:49:46 31c73c1 feat(data/multiset): map_eq_map_of_bij_of_nodup (#1590) ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/multiset.lean + theorem multiset.eq_zero_iff_forall_not_mem + theorem multiset.map_eq_map_of_bij_of_nodup 2019-10-24 00:47:18 08977be feat(algebra/semiconj): define `semiconj_by` and some operations (#1576) * feat(algebra/semiconj): define `semiconj_by` and some operations Also rewrite `algebra/commute` to reuse results from `algebra/semiconj`. * Some `@[simp]` attributes * Fixes by @rwbarton, more docs * Add two more constructors ESTIMATED CHANGES Modified src/algebra/commute.lean +/- theorem commute.add_left +/- theorem commute.add_right +/- theorem commute.cast_nat_left +/- theorem commute.cast_nat_right +/- theorem commute.gpow_gpow +/- theorem commute.gpow_gpow_self +/- theorem commute.gpow_left +/- theorem commute.gpow_right +/- theorem commute.gsmul_gsmul +/- theorem commute.gsmul_left +/- theorem commute.gsmul_right +/- theorem commute.gsmul_self +/- theorem commute.inv_inv +/- theorem commute.inv_inv_iff +/- theorem commute.inv_left +/- theorem commute.inv_left_iff +/- theorem commute.inv_right +/- theorem commute.inv_right_iff +/- theorem commute.list_prod_left +/- theorem commute.list_prod_right +/- theorem commute.neg_left +/- theorem commute.neg_left_iff +/- theorem commute.neg_one_left +/- theorem commute.neg_one_right +/- theorem commute.neg_right +/- theorem commute.neg_right_iff +/- theorem commute.one_left +/- theorem commute.one_right +/- theorem commute.pow_pow +/- theorem commute.pow_right +/- theorem commute.self_gsmul +/- theorem commute.self_gsmul_gsmul +/- theorem commute.self_smul +/- theorem commute.self_smul_smul +/- theorem commute.smul_left +/- theorem commute.smul_right +/- theorem commute.smul_self +/- theorem commute.smul_smul +/- theorem commute.sub_left +/- theorem commute.sub_right +/- theorem commute.units_coe + theorem commute.units_coe_iff +/- theorem commute.units_inv_left +/- theorem commute.units_inv_right + theorem commute.units_of_coe +/- theorem commute.zero_left +/- theorem commute.zero_right +/- def commute Added src/algebra/semiconj.lean + theorem semiconj_by.add_left + theorem semiconj_by.add_right + theorem semiconj_by.cast_nat_left + theorem semiconj_by.cast_nat_right + theorem semiconj_by.conj_mk + theorem semiconj_by.gpow_right + theorem semiconj_by.gsmul_gsmul + theorem semiconj_by.gsmul_left + theorem semiconj_by.gsmul_right + theorem semiconj_by.inv_inv_symm + theorem semiconj_by.inv_inv_symm_iff + theorem semiconj_by.inv_right + theorem semiconj_by.inv_right_iff + theorem semiconj_by.inv_symm_left + theorem semiconj_by.inv_symm_left_iff + theorem semiconj_by.mul_left + theorem semiconj_by.mul_right + theorem semiconj_by.neg_left + theorem semiconj_by.neg_left_iff + theorem semiconj_by.neg_one_left + theorem semiconj_by.neg_one_right + theorem semiconj_by.neg_right + theorem semiconj_by.neg_right_iff + theorem semiconj_by.one_left + theorem semiconj_by.one_right + theorem semiconj_by.pow_right + theorem semiconj_by.smul_left + theorem semiconj_by.smul_right + theorem semiconj_by.smul_smul + theorem semiconj_by.sub_left + theorem semiconj_by.sub_right + theorem semiconj_by.units_coe + theorem semiconj_by.units_coe_iff + theorem semiconj_by.units_conj_mk + theorem semiconj_by.units_gpow_right + theorem semiconj_by.units_inv_right + theorem semiconj_by.units_inv_right_iff + theorem semiconj_by.units_inv_symm_left + theorem semiconj_by.units_inv_symm_left_iff + theorem semiconj_by.units_of_coe + theorem semiconj_by.zero_left + theorem semiconj_by.zero_right + def semiconj_by 2019-10-23 23:11:12 e2a8e63 feat(geometry/manifold): improvements for smooth manifolds (#1593) * feat(geometry/manifold): improvements to smooth manifolds * fix * better definition for half-space * fix docstring * address comments * more comments ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff.add + theorem times_cont_diff.comp_times_cont_diff_on + theorem times_cont_diff.neg + theorem times_cont_diff.sub + theorem times_cont_diff_on.add + theorem times_cont_diff_on.neg + theorem times_cont_diff_on.sub + theorem times_cont_diff_on_const Modified src/geometry/manifold/manifold.lean - def groupoid_of_pregroupoid + theorem has_groupoid_of_pregroupoid + theorem mem_pregroupoid_of_eq_on_source + def pregroupoid.groupoid Added src/geometry/manifold/real_instances.lean + def Icc_left_chart + def Icc_right_chart + def euclidean_half_space + def euclidean_quadrant + def euclidean_space + theorem findim_euclidean_space + def lt_class + def model_with_corners_euclidean_half_space + def model_with_corners_euclidean_quadrant + theorem range_half_space + theorem range_quadrant Modified src/geometry/manifold/smooth_manifold_with_corners.lean - def euclidean_half_space - def euclidean_space - def model_with_corners_euclidean_half_space + theorem of_set_mem_times_cont_diff_groupoid - theorem range_half_space + theorem symm_trans_mem_times_cont_diff_groupoid +/- def times_cont_diff_groupoid +/- theorem times_cont_diff_groupoid_le +/- theorem times_cont_diff_groupoid_zero_eq Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.findim_fin_fun + theorem finite_dimensional.findim_fintype_fun_eq_card 2019-10-23 20:48:14 b433afa feat(algebra/big_operators): sum_ite (#1598) * feat(algebra/big_operators): sum_ite rename the current `sum_ite` to `sum_ite_eq` and add a more general version * Update src/algebra/big_operators.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_ite + theorem finset.prod_ite_eq 2019-10-23 20:28:52 36dfcfc doc(topology/topological_fiber_bundle): documentation improvements (#1594) * feat(topology/topological_fiber_bundle): improvements * minor fixes ESTIMATED CHANGES Modified src/topology/topological_fiber_bundle.lean +/- def topological_fiber_bundle_core.base +/- def topological_fiber_bundle_core.fiber +/- def topological_fiber_bundle_core.index +/- def topological_fiber_bundle_core.total_space 2019-10-23 17:05:43 d214c61 feat(data/nat/modeq): div_mod_eq_mod_mul_div (#1597) ESTIMATED CHANGES Modified src/data/nat/modeq.lean + theorem nat.div_mod_eq_mod_mul_div 2019-10-23 14:43:45 36f7113 fix(suggest): focus1 at the correct moment (#1592) ESTIMATED CHANGES Modified src/tactic/suggest.lean Modified test/suggest.lean 2019-10-23 12:50:43 24dd80b chore(src/data/mv_polynomial): doc comments and removing unused arguments (#1585) * chore(src/data/mv_polynomial): doc comments and removing unused arguments * Update src/data/mv_polynomial.lean ESTIMATED CHANGES Modified src/data/mv_polynomial.lean - def mv_polynomial.tmp.coe 2019-10-23 10:48:29 079e6ec feat(analysis/normed_space): norms on ℤ and ℚ (#1570) * feat(analysis/normed_space): norms on ℤ and ℚ * Add some `elim_cast` lemmas * Add `@[simp]`, thanks @robertylewis Co-Authored-By: Rob Lewis ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem int.norm_cast_rat + theorem int.norm_cast_real + theorem rat.norm_cast_real Modified src/topology/instances/real.lean + theorem int.dist_cast_rat + theorem int.dist_cast_real + theorem int.dist_eq + theorem rat.dist_cast 2019-10-23 07:50:35 ee5518c fix(category_theory/adjunctions): fix deterministic timeouts (#1586) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/limits.lean + def category_theory.adjunction.cocones_iso_component_hom + def category_theory.adjunction.cocones_iso_component_inv + def category_theory.adjunction.cones_iso_component_hom + def category_theory.adjunction.cones_iso_component_inv + def category_theory.adjunction.functoriality_counit' + def category_theory.adjunction.functoriality_counit + def category_theory.adjunction.functoriality_left_adjoint + def category_theory.adjunction.functoriality_right_adjoint + def category_theory.adjunction.functoriality_unit' + def category_theory.adjunction.functoriality_unit Modified src/category_theory/limits/cones.lean 2019-10-23 00:26:28 5722ee8 refactor(data/finset): restate disjoint_filter (#1583) * refactor(data/finset): restate disjoint_filter * fix build * fix build ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/data/finset.lean Modified src/data/nat/totient.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/group_theory/order_of_element.lean 2019-10-22 16:25:55 31906d8 chore(algebra/category/CommRing/limits): fix typo, remove private (#1584) * chore(algebra/category/CommRing/limits): fix typo, remove private * Update src/algebra/category/CommRing/limits.lean Co-Authored-By: Johan Commelin * Update src/algebra/category/CommRing/limits.lean * Update src/algebra/category/CommRing/limits.lean * bleh * Update src/algebra/category/CommRing/limits.lean ESTIMATED CHANGES Modified src/algebra/category/CommRing/limits.lean + def CommRing.CommRing_has_limits.limit + def CommRing.CommRing_has_limits.limit_is_limit 2019-10-22 14:30:51 e8bdb05 feat(algebra/group): conversion between `→*` and `→+` (#1569) * feat(algebra/group): conversion between `→*` and `→+` * docs * Rename to allow use of projection notation ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean + def add_monoid_hom.to_multiplicative + def monoid_hom.to_additive 2019-10-22 12:22:04 93b1786 feat(archive): add proof of sensitivity conjecture (#1553) * feat(*): various lemmas from the sensitivity project * fix proof broken by nonterminal simp * Update src/linear_algebra/dual.lean Co-Authored-By: Johan Commelin * lint dual.lean * remove decidable_mem_of_fintype instance this leads to loops with `subtype.fintype` under the right decidable_eq assumptions * dual_lc is invalid simp lemma * fix namespace * add extra lemma * feat(archive): add proof of sensitivity conjecture * suggestions from Johan * undo removed whitespace * update header ESTIMATED CHANGES Added archive/sensitivity.lean + theorem Q.adj_iff_proj_adj + theorem Q.adj_iff_proj_eq + theorem Q.adjacent.symm + def Q.adjacent + theorem Q.card + theorem Q.not_adjacent_zero + theorem Q.succ_n_eq + def V.add_comm_monoid + def V.add_comm_semigroup + def V.has_add + def V.has_scalar + def V.module + def V + theorem dim_V + def dual_pair_e_ε + theorem duality + theorem e_zero_apply + theorem epsilon_total + theorem exists_eigenvalue + theorem f_image_g + theorem f_matrix + theorem f_squared + theorem f_succ_apply + theorem f_zero + theorem findim_V + theorem g_apply + theorem g_injective + theorem huang_degree_theorem + def π 2019-10-22 08:36:07 1b4d1ea chore(algebra/category/*/colimits): remove unnecessary projections (#1588) * refactor(category_theory,algebra/category): make algebraic categories not [reducible] Adapted from part of #1438. * Update src/algebra/category/CommRing/basic.lean Co-Authored-By: Scott Morrison * adding missing forget2 instances * Converting Reid's comment to a [Note] * adding examples testing coercions * chore(algebra/category/*/colimits): remove unnecessary projections ESTIMATED CHANGES Modified src/algebra/category/CommRing/colimits.lean +/- def CommRing.colimits.cocone_fun Modified src/algebra/category/Mon/colimits.lean +/- def Mon.colimits.cocone_fun 2019-10-22 06:42:16 2b98d47 feat(category_theory): add `reassoc` annotations (#1558) * feat(category_theory): add `reassoc` annotations * Update reassoc_axiom.lean * Update src/tactic/reassoc_axiom.lean Co-Authored-By: Scott Morrison * Update src/tactic/reassoc_axiom.lean Co-Authored-By: Scott Morrison * Update src/tactic/reassoc_axiom.lean Co-Authored-By: Scott Morrison * Update src/tactic/reassoc_axiom.lean * Update src/tactic/reassoc_axiom.lean * Update reassoc_axiom.lean * Update tactics.lean * Update tactics.md * Update reassoc_axiom.lean ESTIMATED CHANGES Modified docs/tactics.md Modified src/category_theory/comma.lean +/- theorem category_theory.over.w Modified src/category_theory/functor.lean Modified src/tactic/reassoc_axiom.lean + def category_theory.reassoc_of + def tactic.calculated_Prop Modified test/tactics.lean 2019-10-22 04:37:39 1741a1d feat(data/nat/basic): division inequalities (#1579) * feat(data/nat/basic): division inequalities * whitespace * fix * shorten proof ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.div_mul_div_le_div + theorem nat.mul_div_le_mul_div_assoc 2019-10-22 02:29:49 c9ba7a5 refactor(category_theory,algebra/category): make algebraic categories not [reducible] (#1491) * refactor(category_theory,algebra/category): make algebraic categories not [reducible] Adapted from part of #1438. * Update src/algebra/category/CommRing/basic.lean Co-Authored-By: Scott Morrison * adding missing forget2 instances * Converting Reid's comment to a [Note] * adding examples testing coercions ESTIMATED CHANGES Modified src/algebra/category/CommRing/basic.lean - theorem CommRing.comp_eq - theorem CommRing.forget_map_eq_coe - theorem CommRing.forget_obj_eq_coe - theorem CommRing.id_eq +/- def CommRing +/- def CommSemiRing +/- def Ring +/- def SemiRing Modified src/algebra/category/CommRing/colimits.lean Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Group.lean +/- def CommGroup +/- def Group Modified src/algebra/category/Mon/basic.lean +/- def CommMon.of +/- def CommMon Modified src/algebra/category/Mon/colimits.lean Modified src/category_theory/concrete_category/basic.lean + theorem category_theory.coe_comp + theorem category_theory.coe_id + def category_theory.concrete_category.has_coe_to_fun + def category_theory.concrete_category.has_coe_to_sort + theorem category_theory.forget_map_eq_coe + theorem category_theory.forget_obj_eq_coe Modified src/category_theory/concrete_category/bundled.lean +/- def category_theory.bundled.map Modified src/category_theory/concrete_category/bundled_hom.lean - theorem category_theory.bundled_hom.coe_comp - theorem category_theory.bundled_hom.coe_id - def category_theory.bundled_hom.full_subcategory_has_forget₂ - def category_theory.bundled_hom.has_coe_to_fun Modified src/category_theory/full_subcategory.lean +/- def category_theory.induced_functor Modified src/category_theory/limits/cones.lean - theorem category_theory.limits.cocone.naturality_bundled + theorem category_theory.limits.cocone.naturality_concrete - theorem category_theory.limits.cone.naturality_bundled + theorem category_theory.limits.cone.naturality_concrete 2019-10-22 00:57:19 340178d feat(data/finset): inj_on_of_surj_on_of_card_le (#1578) * feat(data/finset): inj_on_of_surj_on_of_card_le * Type ascriptions * function namespace ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.inj_on_of_surj_on_of_card_le 2019-10-21 22:57:07 39092ab feat(*): various lemmas from the sensitivity project (#1550) * feat(*): various lemmas from the sensitivity project * fix proof broken by nonterminal simp * Update src/linear_algebra/dual.lean Co-Authored-By: Johan Commelin * lint dual.lean * remove decidable_mem_of_fintype instance this leads to loops with `subtype.fintype` under the right decidable_eq assumptions * dual_lc is invalid simp lemma * fix namespace * add extra lemma * fix sum_const * remove unnecessary dec_eq assumptions * remove decidable_eq assumptions * document dual.lean * use classical locale * remove some unnecessary includes * remove an unused variable * Update src/linear_algebra/dual.lean * fixing a doc comment ESTIMATED CHANGES Modified src/algebra/module.lean + theorem finset.sum_const' + theorem module.smul_eq_smul Modified src/algebra/ring.lean + theorem mul_ite Modified src/data/set/finite.lean + theorem fintype.exists_max + def set.decidable_mem_of_fintype + theorem set.to_finset_card + theorem set.to_finset_inter Modified src/linear_algebra/dual.lean + def dual_pair.coeffs + theorem dual_pair.coeffs_apply + theorem dual_pair.coeffs_lc + theorem dual_pair.decomposition + theorem dual_pair.dual_lc + theorem dual_pair.eq_dual + theorem dual_pair.is_basis + def dual_pair.lc + theorem dual_pair.mem_of_mem_span + structure dual_pair +/- theorem is_basis.to_dual_to_dual Modified src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.dim_eq_card + theorem finite_dimensional.fg_of_finite_basis + def finite_dimensional.finite_dimensional_of_finite_basis Modified src/linear_algebra/finsupp.lean + theorem linear_map.map_finsupp_total Modified src/ring_theory/power_series.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.nat_cast_pow 2019-10-21 20:49:04+02:00 96ebf8c docs(README): Remove Patrick from the maintainer list. ESTIMATED CHANGES Modified README.md 2019-10-21 15:12:24 6cf3d04 fix(algebra/group/hom): Fix spurrious arguments (#1581) This bug was introduced in eb230d3b48f4da49b ESTIMATED CHANGES Modified src/algebra/group/hom.lean 2019-10-21 14:34:56 f19dbf2 feat(geometric/manifold): smooth manifolds (#1555) * smooth manifolds * fix docstrings * update docstring * remove out_param ESTIMATED CHANGES Added src/geometry/manifold/smooth_manifold_with_corners.lean + def euclidean_half_space + def euclidean_space + theorem model_with_corners.image + def model_with_corners.prod + def model_with_corners.tangent + structure model_with_corners + def model_with_corners_euclidean_half_space + theorem model_with_corners_inv_fun_comp + theorem model_with_corners_left_inv + theorem model_with_corners_right_inv + def model_with_corners_self + theorem model_with_corners_self_local_equiv + theorem model_with_corners_target + theorem range_half_space + def times_cont_diff_groupoid + theorem times_cont_diff_groupoid_le + theorem times_cont_diff_groupoid_zero_eq 2019-10-21 12:39:30 f52e952 feat(data/finset): define `finset.Ico.subset_iff` (#1574) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.Ico.subset_iff Modified src/data/nat/basic.lean + theorem nat.le_of_pred_lt 2019-10-21 10:18:48 a4bbbde feat(topology/topological_fiber_bundle): topological fiber bundles (#1421) * feat(topology/topological_fiber_bundle): topological fiber bundles * better definition of fiber bundles ESTIMATED CHANGES Added src/topology/topological_fiber_bundle.lean + theorem bundle_trivialization.continuous_at_proj + structure bundle_trivialization + theorem is_topological_fiber_bundle.continuous_proj + theorem is_topological_fiber_bundle.is_open_map_proj + def is_topological_fiber_bundle + theorem is_topological_fiber_bundle_fst + theorem is_topological_fiber_bundle_snd + def topological_fiber_bundle_core.base + theorem topological_fiber_bundle_core.continuous_proj + def topological_fiber_bundle_core.fiber + def topological_fiber_bundle_core.index + theorem topological_fiber_bundle_core.is_open_map_proj + theorem topological_fiber_bundle_core.is_topological_fiber_bundle + def topological_fiber_bundle_core.local_triv' + theorem topological_fiber_bundle_core.local_triv'_fst + theorem topological_fiber_bundle_core.local_triv'_inv_fst + theorem topological_fiber_bundle_core.local_triv'_trans + def topological_fiber_bundle_core.local_triv + def topological_fiber_bundle_core.local_triv_at + def topological_fiber_bundle_core.local_triv_at_ext + theorem topological_fiber_bundle_core.local_triv_at_ext_to_local_homeomorph + theorem topological_fiber_bundle_core.local_triv_at_fst + theorem topological_fiber_bundle_core.local_triv_at_symm_fst + def topological_fiber_bundle_core.local_triv_ext + theorem topological_fiber_bundle_core.local_triv_fst + theorem topological_fiber_bundle_core.local_triv_symm_fst + theorem topological_fiber_bundle_core.local_triv_trans + theorem topological_fiber_bundle_core.mem_local_triv'_source + theorem topological_fiber_bundle_core.mem_local_triv'_target + theorem topological_fiber_bundle_core.mem_local_triv_at_source + theorem topological_fiber_bundle_core.mem_local_triv_source + theorem topological_fiber_bundle_core.mem_local_triv_target + theorem topological_fiber_bundle_core.mem_triv_change_source + theorem topological_fiber_bundle_core.open_source' + theorem topological_fiber_bundle_core.open_target' + def topological_fiber_bundle_core.proj + def topological_fiber_bundle_core.total_space + def topological_fiber_bundle_core.triv_change + structure topological_fiber_bundle_core 2019-10-21 08:23:05 d2d29ff feat(algebra/geom_sum): sum of a geom_series over an Ico (#1573) * feat(algebra/geom_sum): sum of a geom_series over an Ico * Add two more versions as requested by @jcommelin ESTIMATED CHANGES Modified src/algebra/geom_sum.lean + theorem geom_sum_Ico + theorem geom_sum_Ico_mul + theorem geom_sum_Ico_mul_neg 2019-10-21 08:06:20 0b660a9 fix(scripts): sanity_check -> lint [ci skip] (#1575) * fix(scripts): sanity_check -> lint [ci skip] * also fix in .gitignore ESTIMATED CHANGES Modified .gitignore Modified scripts/mk_all.sh Modified scripts/rm_all.sh 2019-10-21 12:08:57+11:00 809276c feat(topology/metric_space): polygonal version of the triangle inequality (#1572) * feat(topology/metric_space): "polygon" version of the triangle inequality * Add two more versions of the "polygonal" inequality * Use `dist_le_Ico_sum_dist` in `cauchy_seq_of_summable_dist` ESTIMATED CHANGES Modified src/data/real/nnreal.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/metric_space/basic.lean + theorem dist_le_Ico_sum_dist + theorem dist_le_Ico_sum_of_dist_le + theorem dist_le_range_sum_dist + theorem dist_le_range_sum_of_dist_le 2019-10-20 15:33:20 b1654df feat(meta/rb_map,tactic/monotonicity): replace rb_map.insert_cons (#1571) rb_map key (list value) is the same as rb_lmap. Usages of this function should be replaced with rb_lmap.insert ESTIMATED CHANGES Modified src/meta/rb_map.lean Modified src/tactic/monotonicity/basic.lean 2019-10-20 10:46:47 74bed0c feat(tactic/suggest): generalize and reimplement library_search (#1552) * Create refine_list.lean The refine_list tactic. * Create refine_list.lean The refine_list.lean file * Update tactics.md Added refine_list docs. * Update library_search.lean Added replace_mvars function * Update library_search.lean Added tactic_statement function and some code in the main library_search function which uses it. * commits * refine_list commits * Scott's work * update tactics.md * doc strings * update * Update refine_list.lean Removes stray TODO line and changed the docstring for the main refine_list function. * Update refine_list.lean Spelling... * get_state and set_state replace by read and write * Combined functions and removed run_and_save_state * removed symmetry from library_search * removing test that doesn't work without symmetry * test properly * rename `refine_list` to `suggest` * cleaning up * minor * better sorting of results * oops, turn off trace messages again * type annotation * optimisation, and simpler logic * further explanation * a little more cleanup * Update src/tactic/library_search.lean Rob Lewis's refactoring of `tactic_statement` Co-Authored-By: Rob Lewis * Update src/tactic/suggest.lean Remove `do` in line 82 Co-Authored-By: Rob Lewis * Update src/tactic/suggest.lean Rob's update of suggest in tactic.interactive. Co-Authored-By: Rob Lewis * changed interactive to tactic.interactive * used /--/ for copyright headers * adding comments explaining logic in apply_and_solve, and an optimisation * refactor no_mvars_in_target * add missing argument to interactive tactic * move all printing to the interactive tactic * refactoring * cleanup * refactoring * complete refactor; library_search is defined in terms of suggest_core now * restore protect to list.traverse and option.traverse * Update src/tactic/suggest.lean Co-Authored-By: Rob Lewis * some doc comments ESTIMATED CHANGES Modified docs/tactics.md Modified src/category/basic.lean Modified src/data/list/defs.lean Modified src/data/mllist.lean Modified src/data/option/basic.lean +/- theorem option.eq_some_iff_get_eq Modified src/data/option/defs.lean Modified src/tactic/basic.lean Modified src/tactic/core.lean Deleted src/tactic/library_search.lean - def tactic.library_search.head_symbol_match.to_string - inductive tactic.library_search.head_symbol_match Modified src/tactic/rewrite_all/congr.lean Added src/tactic/suggest.lean + def tactic.suggest.head_symbol_match.to_string + inductive tactic.suggest.head_symbol_match Modified test/library_search/basic.lean Modified test/library_search/ordered_ring.lean Modified test/library_search/ring_theory.lean Modified test/mllist.lean Added test/suggest.lean 2019-10-19 22:11:22 f544632 feat(algebra/big_operators): products and sums over `finset.Ico` (#1567) ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_Ico_add + theorem finset.prod_Ico_consecutive + theorem finset.prod_Ico_eq_div + theorem finset.prod_Ico_eq_prod_range + theorem finset.prod_range_mul_prod_Ico + theorem finset.sum_Ico_add + theorem finset.sum_Ico_eq_sub Modified src/data/finset.lean + theorem finset.Ico.disjoint_consecutive +/- theorem finset.Ico.inter_consecutive +/- theorem finset.Ico.self_eq_empty +/- theorem finset.Ico.succ_singleton 2019-10-19 19:57:42 173e70a feat(tactic/lint): rename and refactor sanity_check (#1556) * chore(*): rename sanity_check to lint * rename sanity_check files to lint * refactor(tactic/lint): use attributes to add new linters * feat(tactic/lint): restrict which linters are run * doc(tactic/lint): document * doc(tactic/lint): document list_linters * chore(tactic/doc_blame): turn doc_blame into a linter * remove doc_blame import * fix(test/lint) * feat(meta/rb_map): add name_set.insert_list * feat(tactic/lint): better control over which linters are run * ignore instances in doc_blame * update lint documentation * minor refactor * correct docs * correct command doc strings * doc rb_map.lean * consistently use key/value * fix command doc strings ESTIMATED CHANGES Modified docs/tactics.md Modified src/category/functor.lean +/- def functor.const Modified src/measure_theory/l1_space.lean Modified src/meta/rb_map.lean Modified src/tactic/basic.lean Modified src/tactic/core.lean Deleted src/tactic/doc_blame.lean Modified src/tactic/interactive.lean +/- theorem tactic.interactive.{u} Added src/tactic/lint.lean Deleted src/tactic/sanity_check.lean Renamed test/sanity_check.lean to test/lint.lean +/- def bar.foo 2019-10-19 19:04:46 ee398b6 feat(algebra/floor): prove `⌈x⌉ ≤ ⌊x⌋ + 1` (#1568) ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem ceil_le_floor_add_one 2019-10-18 19:41:32 05102ec chore(category_theory): using simps (#1500) * chore(category_theory): using simps * more simps * remove simp lemma * revertings overlapping @[simps] ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean +/- def category_theory.cocones - theorem category_theory.cocones_map - theorem category_theory.cocones_obj +/- def category_theory.cones - theorem category_theory.cones_map - theorem category_theory.cones_obj +/- def category_theory.limits.cocone.whisker - theorem category_theory.limits.cocone.whisker_ι_app - theorem category_theory.limits.cocones.comp.hom +/- def category_theory.limits.cocones.ext - theorem category_theory.limits.cocones.ext_hom_hom +/- def category_theory.limits.cocones.forget - theorem category_theory.limits.cocones.forget_map - theorem category_theory.limits.cocones.forget_obj +/- def category_theory.limits.cocones.functoriality - theorem category_theory.limits.cocones.id.hom +/- def category_theory.limits.cocones.precompose - theorem category_theory.limits.cocones.precompose_map_hom - theorem category_theory.limits.cocones.precompose_obj_X - theorem category_theory.limits.cocones.precompose_obj_ι +/- def category_theory.limits.cone.whisker - theorem category_theory.limits.cone.whisker_π_app - theorem category_theory.limits.cones.comp.hom +/- def category_theory.limits.cones.ext - theorem category_theory.limits.cones.ext_hom_hom +/- def category_theory.limits.cones.forget - theorem category_theory.limits.cones.forget_map - theorem category_theory.limits.cones.forget_obj +/- def category_theory.limits.cones.functoriality - theorem category_theory.limits.cones.id.hom +/- def category_theory.limits.cones.postcompose - theorem category_theory.limits.cones.postcompose_map_hom - theorem category_theory.limits.cones.postcompose_obj_X - theorem category_theory.limits.cones.postcompose_obj_π Modified src/category_theory/limits/functor_category.lean +/- def category_theory.limits.functor_category_colimit_cocone +/- def category_theory.limits.functor_category_limit_cone Modified src/category_theory/limits/over.lean +/- def category_theory.functor.to_cocone - theorem category_theory.functor.to_cocone_X - theorem category_theory.functor.to_cocone_ι +/- def category_theory.functor.to_cone - theorem category_theory.functor.to_cone_X - theorem category_theory.functor.to_cone_π +/- def category_theory.over.colimit - theorem category_theory.over.colimit_X_hom - theorem category_theory.over.colimit_ι_app +/- def category_theory.under.limit - theorem category_theory.under.limit_X_hom - theorem category_theory.under.limit_π_app Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean - theorem category_theory.monad.algebra.comp_f +/- def category_theory.monad.algebra.hom.comp - theorem category_theory.monad.algebra.hom.comp_f +/- def category_theory.monad.algebra.hom.id - theorem category_theory.monad.algebra.hom.id_f - theorem category_theory.monad.algebra.id_f +/- def category_theory.monad.forget - theorem category_theory.monad.forget_map +/- def category_theory.monad.free - theorem category_theory.monad.free_map_f - theorem category_theory.monad.free_obj_a Modified src/category_theory/monad/limits.lean +/- def category_theory.monad.forget_creates_limits.c - theorem category_theory.monad.forget_creates_limits.c_π +/- def category_theory.monad.forget_creates_limits.cone_point - theorem category_theory.monad.forget_creates_limits.cone_point_a +/- def category_theory.monad.forget_creates_limits.γ - theorem category_theory.monad.forget_creates_limits.γ_app Modified src/category_theory/monoidal/functor.lean +/- def category_theory.lax_monoidal_functor.comp - theorem category_theory.lax_monoidal_functor.comp_map - theorem category_theory.lax_monoidal_functor.comp_obj - theorem category_theory.lax_monoidal_functor.comp_ε - theorem category_theory.lax_monoidal_functor.comp_μ +/- def category_theory.monoidal_functor.id - theorem category_theory.monoidal_functor.id_map - theorem category_theory.monoidal_functor.id_obj - theorem category_theory.monoidal_functor.id_ε - theorem category_theory.monoidal_functor.id_μ Modified src/category_theory/whiskering.lean +/- def category_theory.functor.associator - theorem category_theory.functor.associator_hom_app - theorem category_theory.functor.associator_inv_app +/- def category_theory.functor.left_unitor - theorem category_theory.functor.left_unitor_hom_app - theorem category_theory.functor.left_unitor_inv_app +/- def category_theory.functor.right_unitor - theorem category_theory.functor.right_unitor_hom_app - theorem category_theory.functor.right_unitor_inv_app Modified src/category_theory/yoneda.lean - theorem category_theory.coyoneda.map_app - theorem category_theory.coyoneda.obj_map - theorem category_theory.coyoneda.obj_obj +/- def category_theory.coyoneda - theorem category_theory.yoneda.map_app - theorem category_theory.yoneda.obj_map - theorem category_theory.yoneda.obj_obj +/- def category_theory.yoneda 2019-10-18 03:27:47 a1c0ad5 feat(category_theory): def `is_isomorphic_setoid`, `groupoid.iso_equiv_hom` (#1506) * feat(category_theory): def `is_isomorphic_setoid`, `groupoid.iso_equiv_hom` * Move to a dedicated file, define `isomorphic_class_functor` * explicit/implicit arguments * Update src/category_theory/groupoid.lean * Update src/category_theory/groupoid.lean * Update src/category_theory/isomorphism_classes.lean * Update src/category_theory/isomorphism_classes.lean * Update src/category_theory/isomorphism_classes.lean ESTIMATED CHANGES Modified src/category_theory/groupoid.lean + def category_theory.groupoid.iso_equiv_hom Added src/category_theory/isomorphism_classes.lean + theorem category_theory.groupoid.is_isomorphic_iff_nonempty_hom + def category_theory.is_isomorphic + def category_theory.is_isomorphic_setoid + def category_theory.isomorphism_classes 2019-10-17 20:03:17 e5fc2a7 refactor(topology,calculus): change subset condition for composition (#1549) * refactor(topology,calculus): change subset condition for composition * improve docstrings * add is_open Ioi * reviewer's comments * typo ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem differentiable_on.congr + theorem differentiable_within_at.congr + theorem differentiable_within_at_inter' +/- theorem has_fderiv_within_at.comp + theorem has_fderiv_within_at.image_tangent_cone_subset + theorem has_fderiv_within_at.lim + theorem has_fderiv_within_at.unique_diff_within_at Modified src/analysis/calculus/mean_value.lean Modified src/analysis/calculus/tangent_cone.lean + theorem unique_diff_on.inter - theorem unique_diff_on_inter + theorem unique_diff_within_at.inter' + theorem unique_diff_within_at_inter' Modified src/analysis/calculus/times_cont_diff.lean Modified src/data/equiv/local_equiv.lean Modified src/data/set/basic.lean + theorem set.prod_range_univ_eq + theorem set.prod_subset_preimage_fst + theorem set.prod_subset_preimage_snd + theorem set.prod_univ_range_eq + theorem set.subset_preimage_univ Modified src/geometry/manifold/manifold.lean Modified src/topology/algebra/ordered.lean + theorem is_open_Ioi Modified src/topology/continuous_on.lean + theorem continuous_on.congr + theorem continuous_within_at.congr + theorem continuous_within_at.mem_closure_image + theorem continuous_within_at.preimage_mem_nhds_within' + theorem mem_closure_iff_nhds_within_ne_bot + theorem mem_nhds_within_of_mem_nhds Modified src/topology/local_homeomorph.lean + theorem local_homeomorph.continuous_at_iff_continuous_at_comp_left + theorem local_homeomorph.continuous_at_iff_continuous_at_comp_right + theorem local_homeomorph.continuous_at_inv_fun + theorem local_homeomorph.continuous_at_to_fun +/- theorem local_homeomorph.continuous_on_iff_continuous_on_comp_left + theorem local_homeomorph.continuous_within_at_iff_continuous_within_at_comp_left + theorem local_homeomorph.continuous_within_at_iff_continuous_within_at_comp_right + theorem local_homeomorph.image_open_of_open + theorem local_homeomorph.to_homeomorph_inv_fun + def local_homeomorph.to_homeomorph_of_source_eq_univ_target_eq_univ + theorem local_homeomorph.to_homeomorph_to_fun 2019-10-17 21:46:14+02:00 cc19e30 docs(project): change example project [ci skip] ESTIMATED CHANGES Modified docs/install/project.md 2019-10-17 07:58:42 905beb0 fix(topology/metric_space): fix uniform structure on Pi types (#1551) * fix(topology/metric_space): fix uniform structure on pi tpype * cleanup * better construction of metric from emetric * use simp only instead of simp ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.sup_le_iff - theorem finset.sup_lt + theorem finset.sup_lt_iff Modified src/order/filter/basic.lean + theorem filter.Inter_mem_sets_of_fintype + theorem filter.infi_principal_finset + theorem filter.infi_principal_fintype Modified src/topology/metric_space/basic.lean + def emetric_space.to_metric_space_of_dist Modified src/topology/metric_space/emetric_space.lean 2019-10-16 21:40:58 ee863ec feat(ring_theory/algebraic): algebraic extensions, algebraic elements (#1519) * chore(ring_theory/algebra): make first type argument explicit in alg_hom Now this works, and it didn't work previously even with `@` ```lean structure alg_equiv (α β γ : Type*) [comm_ring α] [ring β] [ring γ] [algebra α β] [algebra α γ] extends alg_hom α β γ := ``` * Update algebra.lean * feat(field_theory/algebraic_closure) * Remove sorries about minimal polynomials * Define alg_equiv.symm * typo * Remove another sorry, in base_extension * Work in progress * Remove a sorry in maximal_extension_chain * Merge two sorries * More sorries removed * More work on transitivity of algebraicity * WIP * Sorry-free definition of algebraic closure * More or less sorries * Removing some sorries * WIP * Fix algebraic.lean * Fix build, mostly * Remove stuff about UMP of alg clos * Prove transitivity of algebraic extensions * Add some docstrings * Remove files with stuff for future PRs * Add a bit to the module docstring * Fix module docstring * Include assumption in section injective * Aesthetic changes to is_integral_of_mem_of_fg * Little improvements of proofs in algebraic.lean * Improve some proofs in integral_closure.lean * Make variable name explicit * Process comments ESTIMATED CHANGES Modified src/data/polynomial.lean +/- theorem polynomial.degree_map' +/- theorem polynomial.degree_map_eq_of_injective + theorem polynomial.leading_coeff_of_injective + theorem polynomial.map_injective +/- theorem polynomial.map_pow + theorem polynomial.mem_map_range + theorem polynomial.monic.ne_zero + theorem polynomial.monic.ne_zero_of_zero_ne_one + theorem polynomial.monic_of_injective +/- theorem polynomial.nat_degree_map' Modified src/field_theory/minimal_polynomial.lean Added src/ring_theory/algebraic.lean + def algebra.is_algebraic + theorem algebra.is_algebraic_iff + theorem algebra.is_algebraic_trans + def is_algebraic + theorem is_algebraic_iff_is_integral + theorem is_integral.is_algebraic + def subalgebra.is_algebraic + def subalgebra.is_algebraic_iff Modified src/ring_theory/integral_closure.lean + theorem algebra.is_integral_trans +/- theorem is_integral_of_mem_of_fg +/- theorem is_integral_of_noetherian + theorem is_integral_trans + theorem is_integral_trans_aux 2019-10-16 18:45:00 cbf81df archive(imo1988_q6): a formalization of Q6 on IMO1988 (#1455) * archive(imo1988_q6): a formalization of Q6 on IMO1988 * WIP * Clean up, document, and use omega * Remove some non-terminal simps * Non-terminal simp followed by ring is fine * Include copyright statement * Add comment justifying example * Process review comments * Oops, forgot a line * Improve comments in the proof ESTIMATED CHANGES Added archive/imo1988_q6.lean + theorem constant_descent_vieta_jumping + theorem imo1988_q6 2019-10-16 17:05:22 ad8387c feat(field_theory/finite): cardinality of images of polynomials (#1554) * feat(field_theory/finite): cardinality of images of polynomials * docstrings * Johan's suggestions * slightly shorten proof ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.card_eq_sum_card_image + theorem finset.card_le_mul_card_image Modified src/data/polynomial.lean + theorem polynomial.card_roots_sub_C' + theorem polynomial.card_roots_sub_C + theorem polynomial.degree_add_C + theorem polynomial.mem_roots_sub_C + theorem polynomial.nat_degree_neg Modified src/field_theory/finite.lean + theorem finite_field.card_image_polynomial_eval + theorem finite_field.exists_root_sum_quadratic 2019-10-16 03:46:48 09fd631 feat(data/zmod/basic): val_min_abs (#1548) * feat(data/zmod/basic): val_min_abs * Update basic.lean * docstring and fix `zmodp` versions ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.coe_val_min_abs + theorem zmod.nat_abs_val_min_abs_le + def zmod.val_min_abs + theorem zmod.val_min_abs_eq_zero + theorem zmod.val_min_abs_zero + theorem zmodp.coe_val_min_abs + theorem zmodp.nat_abs_val_min_abs_le + def zmodp.val_min_abs + theorem zmodp.val_min_abs_eq_zero + theorem zmodp.val_min_abs_zero 2019-10-14 12:13:21 c3d1bd7 feat(data/polynomial): card_roots' (#1546) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.card_roots' 2019-10-13 12:52:09 0ee1272 fix(doc/contribute): fix broken link (#1547) ESTIMATED CHANGES Modified docs/contribute/doc.md 2019-10-13 09:57:58 d716648 docs(topology): some more module docstrings (#1544) ESTIMATED CHANGES Modified src/topology/constructions.lean Modified src/topology/maps.lean Modified src/topology/order.lean 2019-10-13 08:08:28 d10fd1e feat(data/int/basic): int.nat_abs_eq_zero (#1545) * feat(data/int/basic): int.nat_abs_eq_zero * Update basic.lean * Update basic.lean ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.nat_abs_eq_zero 2019-10-12 20:07:23 646c035 refactor(topology): mild reorganization (#1541) * refactor(topology): mild reorganization Another attempt to increase cohesion of modules in topology. The old `constructions` module was starting to turn into a collection of miscellaneous results, and didn't actually contain any constructions themselves. The major changes are: * `constructions` now contains the definitions of the product, subspace, ... topologies, which used to be in `order`. This means that theorems involving concepts from `maps` (e.g., embeddings) and constructions (e.g., products) are now in `constructions`, not `maps`. * `subset_properties` and `separation` now import `constructions` rather than the other way around. This means that theorems like "a product of compact spaces is compact" are now in `subset_properties`, not `constructions`. * `homeomorph` is split off into its own file, which was easy because it was at the end of `constructions` anyways. * reorder universes in constructions * move README.md to docs/theories/topology.md * expand documentation of metric/uniform spaces slightly * update pointers to docs/theories/topological_spaces.md ESTIMATED CHANGES Modified docs/theories.md Renamed docs/theories/topological_spaces.md to docs/theories/topology.md Modified src/topology/algebra/group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/compact_open.lean Modified src/topology/constructions.lean - theorem closed_of_compact - theorem compact_compact_separated - theorem compact_iff_compact_image_of_embedding - theorem compact_iff_compact_in_subtype - theorem compact_iff_compact_space - theorem compact_iff_compact_univ - theorem compact_pi_infinite - theorem compact_prod - def dense_embedding.subtype_emb - theorem dense_range_prod - theorem diagonal_eq_range_diagonal_map + theorem embedding.prod_mk - theorem generalized_tube_lemma - theorem homeomorph.coe_eq_to_equiv - theorem homeomorph.coinduced_eq - theorem homeomorph.compact_image - theorem homeomorph.compact_preimage - def homeomorph.homeomorph_of_continuous_open - theorem homeomorph.image_symm - theorem homeomorph.induced_eq - theorem homeomorph.preimage_symm - def homeomorph.prod_assoc - def homeomorph.prod_comm - def homeomorph.prod_congr - theorem homeomorph.range_coe - theorem homeomorph.self_comp_symm - def homeomorph.sigma_prod_distrib - theorem homeomorph.symm_comp_self - structure homeomorph + theorem inducing.prod_mk - theorem is_closed_diagonal - theorem is_closed_eq - theorem is_closed_property2 - theorem is_closed_property3 - theorem is_closed_property +/- theorem is_open_prod_iff' - theorem locally_compact_of_compact_nhds + theorem mem_nhds_subtype - theorem nhds_contain_boxes.comm - theorem nhds_contain_boxes.symm - def nhds_contain_boxes - theorem nhds_contain_boxes_of_compact - theorem nhds_contain_boxes_of_singleton + theorem nhds_subtype - theorem normal_of_compact_t2 - theorem prod_subset_compl_diagonal_iff_disjoint + theorem quotient_dense_of_dense + theorem subtype_val.closed_embedding + theorem subtype_val.open_embedding Modified src/topology/dense_embedding.lean + def dense_embedding.subtype_emb + theorem dense_range_prod + theorem is_closed_property2 + theorem is_closed_property3 + theorem is_closed_property Added src/topology/homeomorph.lean + theorem homeomorph.coe_eq_to_equiv + theorem homeomorph.coinduced_eq + theorem homeomorph.compact_image + theorem homeomorph.compact_preimage + def homeomorph.homeomorph_of_continuous_open + theorem homeomorph.image_symm + theorem homeomorph.induced_eq + theorem homeomorph.preimage_symm + def homeomorph.prod_assoc + def homeomorph.prod_comm + def homeomorph.prod_congr + theorem homeomorph.range_coe + theorem homeomorph.self_comp_symm + def homeomorph.sigma_prod_distrib + theorem homeomorph.symm_comp_self + structure homeomorph Modified src/topology/local_homeomorph.lean Modified src/topology/maps.lean - theorem embedding.prod_mk - theorem inducing.prod_mk - theorem subtype_val.closed_embedding - theorem subtype_val.open_embedding Modified src/topology/metric_space/emetric_space.lean Modified src/topology/opens.lean Modified src/topology/order.lean - theorem mem_nhds_subtype - theorem nhds_subtype - theorem quotient_dense_of_dense Modified src/topology/separation.lean + theorem closed_of_compact + theorem compact_compact_separated + theorem diagonal_eq_range_diagonal_map + theorem is_closed_diagonal + theorem is_closed_eq + theorem locally_compact_of_compact_nhds + theorem normal_of_compact_t2 + theorem prod_subset_compl_diagonal_iff_disjoint Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean + theorem compact_iff_compact_image_of_embedding + theorem compact_iff_compact_in_subtype + theorem compact_iff_compact_space + theorem compact_iff_compact_univ +/- theorem compact_image + theorem compact_pi_infinite + theorem compact_prod +/- theorem compact_range + theorem generalized_tube_lemma + theorem nhds_contain_boxes.comm + theorem nhds_contain_boxes.symm + def nhds_contain_boxes + theorem nhds_contain_boxes_of_compact + theorem nhds_contain_boxes_of_singleton Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/complete_separated.lean Modified src/topology/uniform_space/uniform_embedding.lean 2019-10-12 18:21:51 92a9a78 fix(topology/continuous_on): avoid duplicate instance arguments (#1542) This was broken by #1516, caught by sanity_check. ESTIMATED CHANGES Modified src/topology/continuous_on.lean 2019-10-12 18:05:26 995add3 fix(topology/algebra/group_completion): remove redundant instance parameters (#1543) ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean +/- theorem uniform_space.completion.is_add_group_hom_map 2019-10-12 16:02:53+02:00 76090be chore(docs/install/debian): Remove old sentence [ci skip] ESTIMATED CHANGES Modified docs/install/debian.md 2019-10-12 10:28:08 2751561 minor updates to the installation instructions (#1538) ESTIMATED CHANGES Modified docs/install/linux.md Modified docs/install/macos.md Modified docs/install/windows.md 2019-10-11 17:54:17 d5de803 refactor(ring_theory/algebra): alg_hom extends ring_hom and use curly brackets (#1529) * chore(algebra/ring): use curly brackets for ring_hom where possible * refactor(ring_theory/algebra): alg_hom extends ring_hom and use curly brackets * fix build * Update src/ring_theory/algebra.lean Co-Authored-By: Johan Commelin * fix build ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem ring_hom.comp_apply + theorem ring_hom.id_apply Modified src/ring_theory/algebra.lean +/- def alg_hom.comp 2019-10-11 13:15:04 6b7377a chore(algebra/ring): use curly brackets for ring_hom where possible (#1525) * chore(algebra/ring): use curly brackets for ring_hom where possible * add comments explaining motivation * move explanation to header * fix build * Update src/algebra/ring.lean * scott's suggestion ESTIMATED CHANGES Modified src/algebra/ring.lean +/- theorem coe_add_monoid_hom +/- theorem coe_monoid_hom 2019-10-11 11:48:51 38a0ffe refactor(ring_theory/algebra): algebra should extend has_scalar not module (#1532) * refactor(ring_theory/algebra): algebra should extend has_scalar not module * fix build * fix build * Update algebra.lean * Update module.lean * fx build * fix build * fix again * fix build * fix build ESTIMATED CHANGES Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/integral_closure.lean 2019-10-11 11:26:29 338146b fix(algebra/char_p): typo in docstring (#1537) I don't know anything about semirings but I do know there isn't a homomorphism from int to them in general. Do people talk about kernels? (this would be some semi-ideal or something). My change is probably better than what we had but someone who knows what a semiring is might want to check that my suggestion makes sense. ESTIMATED CHANGES Modified src/algebra/char_p.lean 2019-10-11 03:41:02 eb230d3 chore(algebra/group/hom): use curly brackets for instances where possible (#1524) * chore(algebra/group/hom): use curly brackets for instances where possible * add comments mentioning motivation behind brackets * move explanation to header * fix build * Update src/algebra/group/hom.lean ESTIMATED CHANGES Modified src/algebra/group/hom.lean 2019-10-11 01:59:31 364c26e chore(algebra/module): use curly brackets instead of square brackets in more places (#1523) * chore(algebra/module): use curly brackets instead of square brackets in more places * Add explanation behind implicit brackets * Update src/algebra/module.lean ESTIMATED CHANGES Modified src/algebra/module.lean 2019-10-10 11:14:36 43d3dee chore(linear_algebra): rename type variables (#1521) * doc(linear_algebra/basis): add doc * doc(linear_algebra/basis): shorten docstrings * refactor(linear_algebra/basis): rename type vars * style(linear_algebra/basic): change variable names * chore(linear_algebra/dimension): rename type variables * remove commented code * style(linear_algebra/bilinear_form): change variable names * style(linear_algebra/direct_sum_module): change variable names * style(linear_algebra/matrix): change variable names * Rename variables in finsupp_vector_space.lean * style(linear_algebra/sesquilinear_form): change variable names * style(linear_algebra/tensor_product): change variable names * change kappas to bb k's * style(linear_algebra/finsupp): change variable names * change universe levels * change bb k to K ESTIMATED CHANGES Modified src/linear_algebra/basic.lean +/- def equiv.to_linear_equiv +/- theorem finset.smul_sum +/- theorem finsupp.smul_sum +/- theorem is_linear_map.is_linear_map_add +/- theorem is_linear_map.is_linear_map_sub +/- theorem linear_equiv.apply_symm_apply +/- def linear_equiv.arrow_congr +/- theorem linear_equiv.coe_apply +/- def linear_equiv.congr_right +/- def linear_equiv.conj +/- theorem linear_equiv.eq_bot_of_equiv +/- theorem linear_equiv.ext +/- theorem linear_equiv.of_bijective_apply +/- def linear_equiv.of_linear +/- theorem linear_equiv.of_linear_apply +/- theorem linear_equiv.of_linear_symm_apply +/- def linear_equiv.of_top +/- theorem linear_equiv.of_top_apply +/- theorem linear_equiv.of_top_symm_apply +/- def linear_equiv.refl +/- def linear_equiv.smul_of_ne_zero +/- def linear_equiv.smul_of_unit +/- def linear_equiv.symm +/- theorem linear_equiv.symm_apply_apply +/- theorem linear_equiv.to_equiv_injective +/- def linear_equiv.trans +/- structure linear_equiv +/- theorem linear_map.add_apply +/- def linear_map.cod_restrict +/- theorem linear_map.cod_restrict_apply +/- theorem linear_map.comap_cod_restrict +/- theorem linear_map.comap_injective +/- theorem linear_map.comap_le_comap_iff +/- theorem linear_map.comap_map_eq +/- theorem linear_map.comap_map_eq_self +/- theorem linear_map.comap_pair_prod +/- theorem linear_map.comp_assoc +/- theorem linear_map.comp_cod_restrict +/- theorem linear_map.comp_smul +/- theorem linear_map.comp_zero +/- def linear_map.congr_right +/- def linear_map.copair +/- theorem linear_map.copair_apply +/- theorem linear_map.copair_inl +/- theorem linear_map.copair_inl_inr +/- theorem linear_map.copair_inr +/- def linear_map.diag +/- theorem linear_map.disjoint_inl_inr +/- theorem linear_map.disjoint_ker' +/- theorem linear_map.disjoint_ker +/- theorem linear_map.finsupp_sum +/- def linear_map.fst +/- theorem linear_map.fst_apply +/- theorem linear_map.fst_eq_copair +/- theorem linear_map.fst_pair +/- def linear_map.general_linear_group.general_linear_equiv +/- theorem linear_map.general_linear_group.general_linear_equiv_to_linear_map +/- def linear_map.general_linear_group.of_linear_equiv +/- def linear_map.general_linear_group.to_linear_equiv +/- def linear_map.general_linear_group +/- theorem linear_map.infi_ker_proj +/- theorem linear_map.inj_of_disjoint_ker +/- def linear_map.inl +/- theorem linear_map.inl_apply +/- theorem linear_map.inl_eq_pair +/- def linear_map.inr +/- theorem linear_map.inr_apply +/- theorem linear_map.inr_eq_pair +/- def linear_map.inverse +/- theorem linear_map.is_linear_map_prod_iso +/- def linear_map.ker +/- theorem linear_map.ker_cod_restrict +/- theorem linear_map.ker_comp +/- theorem linear_map.ker_eq_bot' +/- theorem linear_map.ker_eq_bot +/- theorem linear_map.ker_eq_top +/- theorem linear_map.ker_id +/- theorem linear_map.ker_le_ker_comp +/- theorem linear_map.ker_pair +/- theorem linear_map.ker_pi +/- theorem linear_map.ker_smul' +/- theorem linear_map.ker_smul +/- theorem linear_map.ker_std_basis +/- theorem linear_map.ker_zero +/- theorem linear_map.le_ker_iff_map +/- theorem linear_map.map_cod_restrict +/- theorem linear_map.map_comap_eq +/- theorem linear_map.map_comap_eq_self +/- theorem linear_map.map_copair_prod +/- theorem linear_map.map_injective +/- theorem linear_map.map_le_map_iff +/- theorem linear_map.map_le_range +/- theorem linear_map.mem_ker +/- theorem linear_map.mem_range +/- theorem linear_map.mul_app +/- theorem linear_map.neg_apply +/- theorem linear_map.one_app +/- def linear_map.pair +/- theorem linear_map.pair_apply +/- theorem linear_map.pair_fst_snd +/- def linear_map.pi +/- theorem linear_map.pi_apply +/- theorem linear_map.pi_comp +/- theorem linear_map.pi_eq_zero +/- theorem linear_map.pi_zero +/- def linear_map.prod +/- theorem linear_map.prod_eq_inf_comap +/- theorem linear_map.prod_eq_sup_map +/- def linear_map.proj +/- theorem linear_map.proj_apply +/- theorem linear_map.proj_comp_std_basis +/- theorem linear_map.proj_pi +/- theorem linear_map.proj_std_basis_ne +/- theorem linear_map.proj_std_basis_same +/- def linear_map.range +/- theorem linear_map.range_cod_restrict +/- theorem linear_map.range_coe +/- theorem linear_map.range_comp +/- theorem linear_map.range_comp_le_range +/- theorem linear_map.range_eq_top +/- theorem linear_map.range_id +/- theorem linear_map.range_le_bot_iff +/- theorem linear_map.range_le_iff_comap +/- theorem linear_map.range_smul' +/- theorem linear_map.range_smul +/- theorem linear_map.range_zero +/- def linear_map.scalar_prod_space_iso +/- theorem linear_map.smul_apply +/- theorem linear_map.smul_comp +/- def linear_map.smul_right +/- theorem linear_map.smul_right_apply +/- def linear_map.snd +/- theorem linear_map.snd_apply +/- theorem linear_map.snd_eq_copair +/- theorem linear_map.snd_pair +/- theorem linear_map.span_inl_union_inr +/- def linear_map.std_basis +/- theorem linear_map.std_basis_apply +/- theorem linear_map.std_basis_eq_single +/- theorem linear_map.std_basis_ne +/- theorem linear_map.std_basis_same +/- theorem linear_map.sub_apply +/- theorem linear_map.sub_mem_ker_iff +/- theorem linear_map.subtype_comp_cod_restrict +/- theorem linear_map.sum_apply +/- def linear_map.sup_quotient_to_quotient_inf +/- theorem linear_map.supr_range_std_basis +/- theorem linear_map.update_apply +/- theorem linear_map.zero_apply +/- theorem linear_map.zero_comp +/- theorem submodule.Inf_coe +/- theorem submodule.add_eq_sup +/- theorem submodule.bot_coe +/- def submodule.comap +/- theorem submodule.comap_bot +/- theorem submodule.comap_coe +/- theorem submodule.comap_comp +/- theorem submodule.comap_fst +/- theorem submodule.comap_inf +/- theorem submodule.comap_infi +/- theorem submodule.comap_liftq +/- theorem submodule.comap_mkq_embedding_eq +/- theorem submodule.comap_mono +/- theorem submodule.comap_smul' +/- theorem submodule.comap_smul +/- theorem submodule.comap_snd +/- theorem submodule.comap_top +/- theorem submodule.comap_zero +/- theorem submodule.disjoint_def +/- theorem submodule.disjoint_iff_comap_eq_bot +/- theorem submodule.eq_bot_of_zero_eq_one +/- theorem submodule.eq_top_iff' +/- theorem submodule.eq_zero_of_bot_submodule +/- theorem submodule.gc_map_comap +/- theorem submodule.inf_coe +/- theorem submodule.infi_coe +/- theorem submodule.ker_inl +/- theorem submodule.ker_inr +/- theorem submodule.ker_liftq +/- theorem submodule.ker_liftq_eq_bot +/- theorem submodule.ker_of_le +/- theorem submodule.le_comap_map +/- theorem submodule.le_comap_mkq +/- theorem submodule.le_def' +/- theorem submodule.le_def +/- def submodule.liftq +/- theorem submodule.liftq_apply +/- theorem submodule.liftq_mkq +/- theorem submodule.linear_eq_on +/- def submodule.map +/- theorem submodule.map_bot +/- theorem submodule.map_coe +/- theorem submodule.map_comap_le +/- theorem submodule.map_comp +/- theorem submodule.map_inf_eq_map_inf_comap +/- theorem submodule.map_inl +/- theorem submodule.map_inr +/- theorem submodule.map_le_iff_le_comap +/- theorem submodule.map_liftq +/- theorem submodule.map_mono +/- theorem submodule.map_smul' +/- theorem submodule.map_smul +/- theorem submodule.map_subtype_embedding_eq +/- theorem submodule.map_subtype_le +/- theorem submodule.map_sup +/- theorem submodule.map_supr +/- theorem submodule.map_top +/- theorem submodule.map_zero +/- def submodule.mapq +/- theorem submodule.mapq_apply +/- theorem submodule.mapq_mkq +/- theorem submodule.mem_Sup_of_directed +/- theorem submodule.mem_bot +/- theorem submodule.mem_comap +/- theorem submodule.mem_inf +/- theorem submodule.mem_infi +/- theorem submodule.mem_map +/- theorem submodule.mem_map_of_mem +/- theorem submodule.mem_prod +/- theorem submodule.mem_span +/- theorem submodule.mem_span_insert' +/- theorem submodule.mem_span_insert +/- theorem submodule.mem_span_singleton +/- theorem submodule.mem_supr_of_mem +/- theorem submodule.mem_top +/- def submodule.mkq +/- theorem submodule.mkq_apply +/- def submodule.of_le +/- theorem submodule.of_le_apply +/- def submodule.prod +/- theorem submodule.prod_bot +/- theorem submodule.prod_comap_inl +/- theorem submodule.prod_comap_inr +/- theorem submodule.prod_map_fst +/- theorem submodule.prod_map_snd +/- theorem submodule.prod_mono +/- theorem submodule.prod_top +/- theorem submodule.quotient.mk'_eq_mk +/- def submodule.quotient.mk +/- theorem submodule.quotient.mk_eq_mk +/- theorem submodule.quotient.quot_mk_eq_mk +/- def submodule.quotient_rel +/- theorem submodule.range_fst +/- theorem submodule.range_liftq +/- theorem submodule.range_of_le +/- theorem submodule.range_snd +/- def submodule.span +/- theorem submodule.span_Union +/- theorem submodule.span_empty +/- theorem submodule.span_eq +/- theorem submodule.span_eq_bot +/- theorem submodule.span_eq_of_le +/- theorem submodule.span_image +/- theorem submodule.span_induction +/- theorem submodule.span_insert_eq_span +/- theorem submodule.span_le +/- theorem submodule.span_mono +/- theorem submodule.span_prod_le +/- theorem submodule.span_singleton_eq_bot +/- theorem submodule.span_singleton_eq_range +/- theorem submodule.span_span +/- theorem submodule.span_union +/- theorem submodule.span_univ +/- theorem submodule.subset_span +/- theorem submodule.subtype_comp_of_le +/- theorem submodule.top_coe +/- theorem submodule.zero_eq_bot Modified src/linear_algebra/basis.lean +/- theorem constr_add +/- theorem constr_basis +/- theorem constr_eq +/- theorem constr_neg +/- theorem constr_range +/- theorem constr_self +/- theorem constr_smul +/- theorem constr_sub +/- theorem constr_zero +/- theorem disjoint_span_singleton +/- theorem eq_of_linear_independent_of_span_subtype +/- def equiv_fun_basis +/- def equiv_of_is_basis +/- theorem exists_is_basis +/- theorem exists_left_inverse_linear_map_of_injective +/- theorem exists_linear_independent +/- theorem exists_of_linear_independent_of_finite_span +/- theorem exists_right_inverse_linear_map_of_surjective +/- theorem exists_subset_is_basis +/- theorem is_basis.comp +/- def is_basis.constr +/- theorem is_basis.constr_apply +/- theorem is_basis.ext +/- theorem is_basis.injective +/- theorem is_basis.mem_span +/- def is_basis.repr +/- theorem is_basis.repr_range +/- theorem is_basis.repr_total +/- theorem is_basis.total_comp_repr +/- theorem is_basis.total_repr +/- def is_basis +/- theorem is_basis_empty +/- theorem is_basis_empty_bot +/- theorem is_basis_inl_union_inr +/- theorem is_basis_singleton_one +/- theorem is_basis_span +/- theorem le_of_span_le_span +/- theorem linear_equiv.is_basis +/- theorem linear_independent.image +/- theorem linear_independent.image_subtype +/- theorem linear_independent.injective +/- theorem linear_independent.insert +/- theorem linear_independent.mono +/- def linear_independent.repr +/- theorem linear_independent.total_comp_repr +/- def linear_independent.total_equiv +/- theorem linear_independent.total_repr +/- theorem linear_independent.unique +/- def linear_independent +/- theorem linear_independent_Union_finite_subtype +/- theorem linear_independent_bUnion_of_directed +/- theorem linear_independent_empty +/- theorem linear_independent_empty_type +/- theorem linear_independent_iff +/- theorem linear_independent_iff_not_mem_span +/- theorem linear_independent_iff_total_on +/- theorem linear_independent_inl_union_inr' +/- theorem linear_independent_inl_union_inr +/- theorem linear_independent_of_finite +/- theorem linear_independent_of_zero_eq_one +/- theorem linear_independent_sUnion_of_directed +/- theorem linear_independent_singleton +/- theorem linear_independent_span +/- theorem linear_independent_subtype +/- theorem linear_independent_subtype_disjoint +/- theorem linear_independent_union +/- theorem linear_independent_unique +/- theorem mem_span_insert_exchange +/- theorem module.card_fintype +/- def module_equiv_finsupp +/- theorem pi.is_basis_fun +/- theorem pi.is_basis_fun₀ +/- theorem pi.is_basis_std_basis +/- theorem quotient_prod_linear_equiv +/- theorem span_le_span_iff +/- theorem vector_space.card_fintype Modified src/linear_algebra/bilinear_form.lean +/- def alt_bilin_form.is_alt +/- theorem alt_bilin_form.neg +/- theorem alt_bilin_form.self_eq_zero +/- theorem bilin_form.add_left +/- theorem bilin_form.add_right +/- def bilin_form.bilin_linear_map_equiv +/- theorem bilin_form.ext +/- def bilin_form.is_ortho +/- theorem bilin_form.neg_left +/- theorem bilin_form.neg_right +/- theorem bilin_form.ortho_smul_left +/- theorem bilin_form.ortho_smul_right +/- theorem bilin_form.ortho_zero +/- theorem bilin_form.smul_left +/- theorem bilin_form.smul_right +/- theorem bilin_form.sub_left +/- theorem bilin_form.sub_right +/- def bilin_form.to_linear_map +/- theorem bilin_form.zero_left +/- theorem bilin_form.zero_right +/- structure bilin_form +/- def linear_map.to_bilin +/- theorem refl_bilin_form.eq_zero +/- def refl_bilin_form.is_refl +/- theorem refl_bilin_form.ortho_sym +/- def sym_bilin_form.is_sym +/- theorem sym_bilin_form.ortho_sym +/- theorem sym_bilin_form.sym Modified src/linear_algebra/dimension.lean +/- theorem dim_add_le_dim_add_dim +/- theorem dim_bot +/- theorem dim_eq_injective +/- theorem dim_eq_surjective +/- theorem dim_fin_fun +/- theorem dim_fun' +/- theorem dim_fun +/- theorem dim_le_injective +/- theorem dim_le_of_submodule +/- theorem dim_le_surjective +/- theorem dim_map_le +/- theorem dim_of_field +/- theorem dim_pi +/- theorem dim_prod +/- theorem dim_quotient +/- theorem dim_range_add_dim_ker +/- theorem dim_range_le +/- theorem dim_range_of_surjective +/- theorem dim_span +/- theorem dim_span_le +/- theorem dim_span_of_finset +/- theorem dim_span_set +/- theorem dim_submodule_le +/- theorem dim_sup_add_dim_inf_eq +/- theorem dim_top +/- theorem exists_is_basis_fintype +/- theorem exists_mem_ne_zero_of_dim_pos +/- theorem exists_mem_ne_zero_of_ne_bot +/- theorem is_basis.le_span +/- theorem is_basis.mk_eq_dim +/- theorem is_basis.mk_range_eq_dim +/- theorem linear_equiv.dim_eq +/- theorem linear_equiv.dim_eq_lift +/- theorem mk_eq_mk_of_basis +/- def rank +/- theorem rank_add_le +/- theorem rank_comp_le1 +/- theorem rank_comp_le2 +/- theorem rank_finset_sum_le +/- theorem rank_le_domain +/- theorem rank_le_range +/- theorem rank_zero Modified src/linear_algebra/direct_sum_module.lean +/- theorem direct_sum.apply_eq_component +/- theorem direct_sum.component.lof_self +/- theorem direct_sum.component.of +/- def direct_sum.component +/- theorem direct_sum.ext +/- theorem direct_sum.ext_iff +/- def direct_sum.lmk +/- def direct_sum.lof +/- theorem direct_sum.lof_apply +/- theorem direct_sum.mk_smul +/- theorem direct_sum.of_smul +/- theorem direct_sum.single_eq_lof +/- theorem direct_sum.to_module.ext +/- theorem direct_sum.to_module.unique +/- def direct_sum.to_module +/- theorem direct_sum.to_module_lof Modified src/linear_algebra/finsupp.lean +/- theorem finsupp.infi_ker_lapply_le_bot +/- theorem finsupp.ker_lsingle +/- def finsupp.lapply +/- theorem finsupp.lapply_apply +/- def finsupp.lmap_domain +/- theorem finsupp.lmap_domain_apply +/- theorem finsupp.lmap_domain_id +/- theorem finsupp.lmap_domain_total +/- def finsupp.lsingle +/- theorem finsupp.lsingle_apply +/- def finsupp.lsubtype_domain +/- theorem finsupp.lsubtype_domain_apply +/- def finsupp.lsum +/- theorem finsupp.lsum_apply +/- theorem finsupp.mem_span_iff_total +/- theorem finsupp.mem_supported' +/- theorem finsupp.mem_supported +/- theorem finsupp.range_total +/- def finsupp.restrict_dom +/- theorem finsupp.restrict_dom_apply +/- theorem finsupp.single_mem_supported +/- theorem finsupp.span_single_image +/- def finsupp.supported +/- theorem finsupp.supported_empty +/- theorem finsupp.supported_eq_span_single +/- theorem finsupp.supported_univ +/- theorem finsupp.supr_lsingle_range +/- theorem finsupp.total_apply +/- theorem finsupp.total_emb_domain +/- theorem finsupp.total_map_domain +/- theorem finsupp.total_on_range +/- theorem finsupp.total_range +/- theorem finsupp.total_single Modified src/linear_algebra/finsupp_vector_space.lean +/- theorem cardinal_lt_omega_of_dim_lt_omega +/- theorem cardinal_mk_eq_cardinal_mk_field_pow_dim +/- theorem eq_bot_iff_dim_eq_zero +/- def equiv_of_dim_eq_dim +/- theorem finsupp.dim_eq +/- theorem finsupp.is_basis_single +/- theorem finsupp.linear_independent_single +/- theorem injective_of_surjective Modified src/linear_algebra/matrix.lean +/- def lin_equiv_matrix' +/- def lin_equiv_matrix +/- def linear_map.to_matrix +/- def linear_map.to_matrixₗ +/- theorem matrix.diagonal_comp_std_basis +/- theorem matrix.diagonal_to_lin +/- def matrix.eval +/- theorem matrix.ker_diagonal_to_lin +/- theorem matrix.mul_to_lin +/- theorem matrix.proj_diagonal +/- theorem matrix.range_diagonal +/- theorem matrix.rank_diagonal +/- theorem matrix.rank_vec_mul_vec +/- def matrix.to_lin +/- theorem matrix.to_lin_add +/- theorem matrix.to_lin_apply +/- theorem matrix.to_lin_zero +/- theorem to_lin_to_matrix +/- theorem to_matrix_to_lin Modified src/linear_algebra/sesquilinear_form.lean +/- def alt_sesq_form.is_alt +/- theorem alt_sesq_form.neg +/- theorem alt_sesq_form.self_eq_zero +/- theorem refl_sesq_form.eq_zero +/- def refl_sesq_form.is_refl +/- theorem refl_sesq_form.ortho_sym +/- theorem sesq_form.add_left +/- theorem sesq_form.add_right +/- theorem sesq_form.ext +/- def sesq_form.is_ortho +/- theorem sesq_form.neg_left +/- theorem sesq_form.neg_right +/- theorem sesq_form.ortho_smul_left +/- theorem sesq_form.ortho_smul_right +/- theorem sesq_form.ortho_zero +/- theorem sesq_form.smul_left +/- theorem sesq_form.smul_right +/- theorem sesq_form.sub_left +/- theorem sesq_form.sub_right +/- theorem sesq_form.zero_left +/- theorem sesq_form.zero_right +/- structure sesq_form +/- theorem sym_sesq_form.is_refl +/- def sym_sesq_form.is_sym +/- theorem sym_sesq_form.ortho_sym +/- theorem sym_sesq_form.sym Modified src/linear_algebra/tensor_product.lean +/- def tensor_product.direct_sum 2019-10-10 09:00:38 dc788a0 feat(topology/sequences): every first-countable space is sequential (#1528) * feat(topology/sequences): every first-countable space is sequential * fixup style * fixup comments * remove redundant type ascription ESTIMATED CHANGES Modified src/data/set/countable.lean + theorem set.countable_iff_exists_surjective_to_subtype Modified src/order/basic.lean + theorem directed_of_mono Modified src/order/complete_lattice.lean + theorem lattice.infi_subtype' Modified src/topology/bases.lean + def filter.has_countable_basis + theorem filter.has_countable_basis_iff_mono_seq + theorem filter.has_countable_basis_iff_seq + theorem filter.has_countable_basis_of_seq + theorem filter.mono_seq_of_has_countable_basis + theorem filter.seq_of_has_countable_basis Modified src/topology/sequences.lean 2019-10-09 19:53:01 7d792ec chore(ring_theory/adjoin_root): remove some unused decidable_eq (#1530) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean +/- def adjoin_root 2019-10-09 16:00:50 a17a9a6 fix(tactic/{use,ring}): instantiate metavariables in goal (#1520) `use` now tidies up the subgoals that it leaves behind after instantiating constructors. `ring` is sensitive to the presence of such metavariables, and we can't guarantee that it doesn't see any, so it should check for them before it runs. ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/ring.lean 2019-10-09 14:59:54 45633aa refactor(topology/algebra/polynomial): move topology.instances.polynomial (#1527) ESTIMATED CHANGES Modified src/analysis/complex/polynomial.lean Modified src/data/padics/hensel.lean Renamed src/topology/instances/polynomial.lean to src/topology/algebra/polynomial.lean 2019-10-09 14:24:19 0ea83c0 docs(data/holor): some additional documentation (#1526) ESTIMATED CHANGES Modified src/data/holor.lean 2019-10-09 05:24:44 6ccfe5a feat(algebra/ordered...): Two tiny lemmas (#1522) * feat(algebra/ordered...): Two tiny lemmas * style(src/algebra/ordered_field) Co-Authored-By: Reid Barton ESTIMATED CHANGES Modified src/algebra/floor.lean + theorem lt_of_nat_ceil_lt +/- theorem nat_ceil_lt_add_one Modified src/algebra/ordered_field.lean + theorem one_div_lt 2019-10-08 16:33:02 7c56051 doc(linear_algebra/basis): add doc (#1503) * doc(linear_algebra/basis): add doc * doc(linear_algebra/basis): shorten docstrings ESTIMATED CHANGES Modified src/linear_algebra/basis.lean 2019-10-08 15:54:18 6b15eb2 chore(analysis): put lemmas in normed_field namespace (#1517) The motivation is to be able to state, say norm_mul for subrings of a normed field, typically p-adic integers. That way we can have padic_int.norm_mul, open the padic_int namespace and have no ambiguous name. ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/tangent_cone.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean +/- theorem complex.norm_int_of_nonneg - theorem exists_norm_lt_one - theorem exists_one_lt_norm - theorem norm_div - theorem norm_fpow - theorem norm_inv - theorem norm_mul - theorem norm_one - theorem norm_pow +/- theorem norm_pow_le - theorem norm_prod + theorem normed_field.exists_norm_lt_one + theorem normed_field.exists_one_lt_norm + theorem normed_field.norm_div + theorem normed_field.norm_fpow + theorem normed_field.norm_inv + theorem normed_field.norm_mul + theorem normed_field.norm_one + theorem normed_field.norm_pow + theorem normed_field.norm_prod Modified src/analysis/normed_space/operator_norm.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean +/- theorem padic_norm_z.norm_one Modified src/data/padics/padic_numbers.lean 2019-10-08 13:51:59 afda1a2 refactor(topology/continuous_on): move continuous_{on,within_at} to own file (#1516) * refactor(topology/continuous_on): move continuous_{on,within_at} to own file * Update src/topology/continuous_on.lean ESTIMATED CHANGES Modified src/topology/algebra/monoid.lean Modified src/topology/basic.lean + theorem continuous.continuous_at + theorem continuous_at.comp + theorem continuous_at.preimage_mem_nhds - def continuous_on - def continuous_within_at - theorem inter_mem_nhds_within - theorem map_nhds_within - theorem mem_nhds_within - def nhds_within - theorem nhds_within_empty - theorem nhds_within_eq - theorem nhds_within_eq_nhds_within - theorem nhds_within_eq_of_open - theorem nhds_within_inter' - theorem nhds_within_inter - theorem nhds_within_le_of_mem - theorem nhds_within_mono - theorem nhds_within_restrict'' - theorem nhds_within_restrict' - theorem nhds_within_restrict - theorem nhds_within_union - theorem nhds_within_univ - theorem self_mem_nhds_within - theorem tendsto_if_nhds_within - theorem tendsto_nhds_within_mono_left - theorem tendsto_nhds_within_mono_right - theorem tendsto_nhds_within_of_tendsto_nhds Modified src/topology/constructions.lean - theorem continuous_on.prod - theorem continuous_within_at.prod Added src/topology/continuous_on.lean + theorem continuous.comp_continuous_on + theorem continuous.continuous_on + theorem continuous_at.continuous_within_at + theorem continuous_iff_continuous_on_univ + theorem continuous_on.comp + theorem continuous_on.congr_mono + theorem continuous_on.mono + theorem continuous_on.preimage_closed_of_closed + theorem continuous_on.preimage_interior_subset_interior_preimage + theorem continuous_on.preimage_open_of_open + theorem continuous_on.prod + def continuous_on + theorem continuous_on_const + theorem continuous_on_iff' + theorem continuous_on_iff + theorem continuous_on_iff_continuous_restrict + theorem continuous_on_iff_is_closed + theorem continuous_on_of_locally_continuous_on + theorem continuous_on_open_iff + theorem continuous_on_open_of_generate_from + theorem continuous_within_at.comp + theorem continuous_within_at.congr_of_mem_nhds_within + theorem continuous_within_at.continuous_at + theorem continuous_within_at.mono + theorem continuous_within_at.preimage_mem_nhds_within + theorem continuous_within_at.prod + theorem continuous_within_at.tendsto_nhds_within_image + def continuous_within_at + theorem continuous_within_at_iff_continuous_at_restrict + theorem continuous_within_at_iff_ptendsto_res + theorem continuous_within_at_inter' + theorem continuous_within_at_inter + theorem continuous_within_at_univ + theorem inter_mem_nhds_within + theorem map_nhds_within + theorem mem_nhds_within + theorem mem_nhds_within_subtype + def nhds_within + theorem nhds_within_empty + theorem nhds_within_eq + theorem nhds_within_eq_map_subtype_val + theorem nhds_within_eq_nhds_within + theorem nhds_within_eq_of_open + theorem nhds_within_inter' + theorem nhds_within_inter + theorem nhds_within_le_comap + theorem nhds_within_le_of_mem + theorem nhds_within_mono + theorem nhds_within_restrict'' + theorem nhds_within_restrict' + theorem nhds_within_restrict + theorem nhds_within_subtype + theorem nhds_within_union + theorem nhds_within_univ + theorem principal_subtype + theorem self_mem_nhds_within + theorem tendsto_if_nhds_within + theorem tendsto_nhds_within_iff_subtype + theorem tendsto_nhds_within_mono_left + theorem tendsto_nhds_within_mono_right + theorem tendsto_nhds_within_of_tendsto_nhds Modified src/topology/local_homeomorph.lean Modified src/topology/order.lean - theorem continuous.comp_continuous_on - theorem continuous.continuous_at - theorem continuous.continuous_on - theorem continuous_at.comp - theorem continuous_at.continuous_within_at - theorem continuous_at.preimage_mem_nhds - theorem continuous_iff_continuous_on_univ - theorem continuous_on.comp - theorem continuous_on.congr_mono - theorem continuous_on.mono - theorem continuous_on.preimage_closed_of_closed - theorem continuous_on.preimage_interior_subset_interior_preimage - theorem continuous_on.preimage_open_of_open - theorem continuous_on_const - theorem continuous_on_iff' - theorem continuous_on_iff - theorem continuous_on_iff_continuous_restrict - theorem continuous_on_iff_is_closed - theorem continuous_on_of_locally_continuous_on - theorem continuous_on_open_iff - theorem continuous_on_open_of_generate_from - theorem continuous_within_at.comp - theorem continuous_within_at.congr_of_mem_nhds_within - theorem continuous_within_at.continuous_at - theorem continuous_within_at.mono - theorem continuous_within_at.preimage_mem_nhds_within - theorem continuous_within_at.tendsto_nhds_within_image - theorem continuous_within_at_iff_continuous_at_restrict - theorem continuous_within_at_iff_ptendsto_res - theorem continuous_within_at_inter' - theorem continuous_within_at_inter - theorem continuous_within_at_univ - theorem mem_nhds_within_subtype - theorem nhds_within_eq_map_subtype_val - theorem nhds_within_le_comap - theorem nhds_within_subtype - theorem principal_subtype - theorem tendsto_nhds_within_iff_subtype 2019-10-08 02:26:24 045d931 feat(tactic/find): find defs as well as theorems (#1512) * feat(tactic/find): find defs as well as theorems * use env.mfold * use try ESTIMATED CHANGES Modified src/tactic/find.lean 2019-10-08 00:28:49 ef7248f feat(data/quot): define `quotient.map₂'`, use it for group quotient (#1507) ESTIMATED CHANGES Modified src/data/quot.lean Modified src/group_theory/quotient_group.lean 2019-10-07 22:43:00 bf22408 chore(topology/algebra/group_completion): missing namespace (#1518) ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean - theorem coe_zero + theorem uniform_space.completion.coe_zero 2019-10-07 21:52:59 1bf831f refactor(topology/dense_embedding): move dense embeddings to new file (#1515) ESTIMATED CHANGES Modified src/topology/constructions.lean Added src/topology/dense_embedding.lean + theorem dense_embedding.inj_iff + theorem dense_embedding.mk' + theorem dense_embedding.to_embedding + structure dense_embedding + theorem dense_inducing.closure_image_nhds_of_nhds + theorem dense_inducing.closure_range + theorem dense_inducing.comap_nhds_neq_bot + theorem dense_inducing.continuous_extend + def dense_inducing.extend + theorem dense_inducing.extend_e_eq + theorem dense_inducing.extend_eq + theorem dense_inducing.extend_eq_of_cont + theorem dense_inducing.mk' + theorem dense_inducing.nhds_eq_comap + theorem dense_inducing.self_sub_closure_image_preimage_of_open + theorem dense_inducing.tendsto_comap_nhds_nhds + theorem dense_inducing.tendsto_extend + structure dense_inducing + theorem dense_range.comp + def dense_range.inhabited + theorem dense_range.nonempty + def dense_range + theorem dense_range_iff_closure_eq Modified src/topology/maps.lean - theorem dense_embedding.inj_iff - theorem dense_embedding.mk' - theorem dense_embedding.to_embedding - structure dense_embedding - theorem dense_inducing.closure_image_nhds_of_nhds - theorem dense_inducing.closure_range - theorem dense_inducing.comap_nhds_neq_bot - theorem dense_inducing.continuous_extend - def dense_inducing.extend - theorem dense_inducing.extend_e_eq - theorem dense_inducing.extend_eq - theorem dense_inducing.extend_eq_of_cont - theorem dense_inducing.mk' - theorem dense_inducing.nhds_eq_comap - theorem dense_inducing.self_sub_closure_image_preimage_of_open - theorem dense_inducing.tendsto_comap_nhds_nhds - theorem dense_inducing.tendsto_extend - structure dense_inducing - theorem dense_range.comp - def dense_range.inhabited - theorem dense_range.nonempty - def dense_range - theorem dense_range_iff_closure_eq 2019-10-07 21:06:26 b3eb34d doc(topology/order): module and definition docstrings (#1505) ESTIMATED CHANGES Modified src/topology/basic.lean Modified src/topology/order.lean 2019-10-07 17:24:46 f519a12 refactor(topology/list): move topology of lists, vectors to new file (#1514) ESTIMATED CHANGES Modified src/topology/constructions.lean - theorem list.continuous_at_length - theorem list.continuous_insert_nth - theorem list.continuous_remove_nth - theorem list.tendsto_cons' - theorem list.tendsto_cons - theorem list.tendsto_cons_iff - theorem list.tendsto_insert_nth' - theorem list.tendsto_insert_nth - theorem list.tendsto_nhds - theorem list.tendsto_remove_nth - theorem vector.cons_val - theorem vector.continuous_at_remove_nth - theorem vector.continuous_insert_nth' - theorem vector.continuous_insert_nth - theorem vector.continuous_remove_nth - theorem vector.tendsto_cons - theorem vector.tendsto_insert_nth Added src/topology/list.lean + theorem list.continuous_at_length + theorem list.continuous_insert_nth + theorem list.continuous_remove_nth + theorem list.tendsto_cons' + theorem list.tendsto_cons + theorem list.tendsto_cons_iff + theorem list.tendsto_insert_nth' + theorem list.tendsto_insert_nth + theorem list.tendsto_nhds + theorem list.tendsto_remove_nth + theorem nhds_cons + theorem nhds_list + theorem nhds_nil + theorem vector.cons_val + theorem vector.continuous_at_remove_nth + theorem vector.continuous_insert_nth' + theorem vector.continuous_insert_nth + theorem vector.continuous_remove_nth + theorem vector.tendsto_cons + theorem vector.tendsto_insert_nth Modified src/topology/order.lean - theorem nhds_cons - theorem nhds_list - theorem nhds_nil 2019-10-07 16:34:46 ddbeb7e refactor(topology/maps): avoid repetition in dense embeddings (#1513) ESTIMATED CHANGES Modified src/topology/maps.lean 2019-10-05 15:44:17 78a78ef feat(group_theory/submonoid): define `subtype.comm_monoid` (#1511) ESTIMATED CHANGES Modified src/group_theory/submonoid.lean 2019-10-05 12:20:29 7df0e35 chore(topology): sanity_check pass (#1510) * chore(topology): sanity_check pass * fix(topology/uniform_space/separation): fix build * fix(topology/metric_space): some more namespace fixes ESTIMATED CHANGES Modified src/topology/algebra/open_subgroup.lean +/- theorem open_subgroup.is_closed +/- theorem open_subgroup.is_open_of_nonempty_open_subset +/- theorem open_subgroup.is_open_of_open_subgroup Modified src/topology/algebra/uniform_ring.lean Modified src/topology/constructions.lean +/- theorem is_open_prod_iff' Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean - def Kuratowski_embedding.Kuratowski_embedding - theorem Kuratowski_embedding.Kuratowski_embedding_isometry - def Kuratowski_embedding.nonempty_compacts.Kuratowski_embedding - def Kuratowski_embedding.ℓ_infty_ℝ + def Kuratowski_embedding + def nonempty_compacts.Kuratowski_embedding + def ℓ_infty_ℝ Modified src/topology/stone_cech.lean Modified src/topology/uniform_space/separation.lean 2019-10-05 05:18:27 98dbe27 feat(algebra/opposites): add some trivial `@[simp]` lemmas (#1508) ESTIMATED CHANGES Modified src/algebra/opposites.lean + theorem opposite.op_add + theorem opposite.op_inv + theorem opposite.op_mul + theorem opposite.op_neg + theorem opposite.op_one + theorem opposite.op_zero + theorem opposite.unop_add + theorem opposite.unop_inv + theorem opposite.unop_mul + theorem opposite.unop_neg + theorem opposite.unop_one + theorem opposite.unop_zero 2019-10-04 14:25:15 2f1bd1e fix(data/list/min_max): docs typo (#1504) ESTIMATED CHANGES Modified src/data/list/min_max.lean 2019-10-04 14:08:27 343237d feat(algebra/Module): the category of R-modules (#1420) * Adds Module category * Move punit module instance to punit_instances.lean * Minor formatting * Use coercions for Module morphisms to functions * Small formatting improvements to Module * Move module_id to id_apply * Be specific about the universe Modules live in * Minor indentation formatting * updates for #1380 * oops * remove ext lemma, unnecessary * reverting changes in TopCommRing * Change name of `module_hom_comp` Co-Authored-By: Johan Commelin * Update todo in src/algebra/category/Module/basic.lean Co-Authored-By: Scott Morrison ESTIMATED CHANGES Added src/algebra/category/Module/basic.lean + theorem Module.coe_comp + theorem Module.id_apply + def Module.of + structure Module Modified src/algebra/punit_instances.lean 2019-10-04 11:56:55 494132e feat(algebra): commuting elements (#1089) * Not sure how this works * Small refactor of geometric sums * Properties of commuting elements * Geometric sums moved to geom_sum.lean * Geometric sums, two commuting variables * Import geom_sum.lean * Cover commuting elements of noncommutative rings * Whitespace * Add file headers * Delete stray file * Sum/prod over range 0, range 1 * Add simp lemmas * Various changes from PR review * Add semigroup case * Changes from PR review * Corrected all_commute to commute.all * Minor changes from PR review * Change line endings back to unix * `@[to_additive]` can't be a `local attribute` * Rename `add_pow_comm` to `add_pow_of_commute` as suggested by @jcommelin * Add a few missing instances * DRY * Notation for `gsmul` should go into `add_group`, not `group` * Prove `gsmul_one` * Reorder `algebra/commute`, add more lemmas * Add docs, rename `geom_sum₂_mul_add_comm` to `commute.geom_sum₂_mul_add`. * Rename, add a docstring * Fix a typo spotted by @ChrisHughes24 * Move common args to `variables` * Rename `commute.mul` to `commute.mul_right` etc. * Add some `@[simp]` attributes. * More `@[simp]` * Add some `_iff` versions ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_range_one + theorem finset.prod_range_zero + theorem finset.sum_range_one - theorem geom_sum - theorem geom_sum_inv - theorem geom_sum_mul - theorem geom_sum_mul_add Added src/algebra/commute.lean + theorem add_monoid.centralizer_closure + theorem centralizer.inter_units_is_subgroup + def centralizer + theorem commute.add_left + theorem commute.add_right + theorem commute.cast_int_left + theorem commute.cast_int_right + theorem commute.cast_nat_left + theorem commute.cast_nat_right + theorem commute.gpow_gpow + theorem commute.gpow_gpow_self + theorem commute.gpow_left + theorem commute.gpow_right + theorem commute.gpow_self + theorem commute.gsmul_gsmul + theorem commute.gsmul_left + theorem commute.gsmul_right + theorem commute.gsmul_self + theorem commute.inv_inv + theorem commute.inv_inv_iff + theorem commute.inv_left + theorem commute.inv_left_iff + theorem commute.inv_right + theorem commute.inv_right_iff + theorem commute.list_prod_left + theorem commute.list_prod_right + theorem commute.mul_left + theorem commute.mul_right + theorem commute.neg_left + theorem commute.neg_left_iff + theorem commute.neg_one_left + theorem commute.neg_one_right + theorem commute.neg_right + theorem commute.neg_right_iff + theorem commute.one_left + theorem commute.one_right + theorem commute.pow_left + theorem commute.pow_pow + theorem commute.pow_pow_self + theorem commute.pow_right + theorem commute.pow_self + theorem commute.self_gpow + theorem commute.self_gsmul + theorem commute.self_gsmul_gsmul + theorem commute.self_pow + theorem commute.self_smul + theorem commute.self_smul_smul + theorem commute.smul_left + theorem commute.smul_right + theorem commute.smul_self + theorem commute.smul_smul + theorem commute.sub_left + theorem commute.sub_right + theorem commute.units_coe + theorem commute.units_inv_left + theorem commute.units_inv_left_iff + theorem commute.units_inv_right + theorem commute.units_inv_right_iff + theorem commute.zero_left + theorem commute.zero_right + def commute + theorem group.centralizer_closure + theorem mem_centralizer + theorem monoid.centralizer_closure + theorem neg_pow + theorem ring.centralizer_closure Added src/algebra/geom_sum.lean + def geom_series + theorem geom_series_def + theorem geom_series_one + theorem geom_series_zero + def geom_series₂ + theorem geom_series₂_def + theorem geom_series₂_one + theorem geom_series₂_with_one + theorem geom_series₂_zero + theorem geom_sum + theorem geom_sum_inv + theorem geom_sum_mul + theorem geom_sum_mul_add + theorem geom_sum_mul_neg + theorem geom_sum₂_mul + theorem geom_sum₂_mul_add + theorem geom_sum₂_mul_comm Modified src/algebra/group_power.lean + theorem gsmul_one Modified src/analysis/specific_limits.lean Modified src/data/complex/exponential.lean Modified src/data/nat/choose.lean +/- theorem add_pow + theorem commute.add_pow Modified src/data/set/lattice.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean - theorem is_submonoid.inter Modified src/ring_theory/subring.lean 2019-10-04 00:45:14 3c58f16 doc(linear_algebra/basic): add module and declaration doc strings (#1501) * doc(linear_algebra/basic): declaration doc strings * doc(linear_algebra/basic): improve module doc * Update src/linear_algebra/basic.lean Co-Authored-By: Floris van Doorn ESTIMATED CHANGES Modified src/linear_algebra/basic.lean 2019-10-03 19:53:03 f854371 feat(tactic/squeeze_simp): better handling of private declarations (#1498) * feat(tactic/squeeze_simp): better handling of private declarations * Update core.lean ESTIMATED CHANGES Modified src/tactic/core.lean 2019-10-03 17:37:55 4ca1e63 chore(*): fix errors in library and sanity_check (#1499) * chore(*): some cleanup by sanity_check * fix(is_auto_generated): also check for ginductives * fix(sanity_check): imp_intro is sanity_skip * fix(sanity_check): don't report names of instances * first errors * second errors * doc(logic/basic): add note * add link to note * mention letI ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_eq_one +/- theorem finset.sum_le_sum_of_ne_zero Modified src/algebra/order_functions.lean + theorem abs_add - def abs_add + theorem sub_abs_le_abs_sub - def sub_abs_le_abs_sub Modified src/analysis/complex/exponential.lean - def real.angle.angle + def real.angle Modified src/category/functor.lean +/- def functor.const Modified src/category_theory/isomorphism.lean + theorem category_theory.is_iso.inv_inv - theorem category_theory.is_iso.is_iso.inv_inv Modified src/category_theory/limits/preserves.lean Modified src/computability/turing_machine.lean + def turing.TM2to1.{l} - theorem turing.TM2to1.{l} Modified src/data/finset.lean +/- theorem finset.card_le_card_of_inj_on +/- theorem finset.card_lt_card +/- theorem finset.fold_map +/- theorem finset.image_const +/- theorem finset.image_singleton +/- theorem finset.map_empty +/- def finset.pi.empty +/- theorem finset.subset_image_iff +/- theorem finset.subset_insert Modified src/data/finsupp.lean Modified src/data/fintype.lean Modified src/data/list/basic.lean Modified src/data/list/defs.lean Modified src/data/opposite.lean - def opposite.opposite + def opposite Modified src/data/rat/order.lean Modified src/data/seq/computation.lean + theorem computation.corec_eq - def computation.corec_eq + theorem computation.lift_rel_aux.ret_left - def computation.lift_rel_aux.ret_left + theorem computation.lift_rel_aux.ret_right - def computation.lift_rel_aux.ret_right Modified src/data/set/finite.lean +/- theorem finset.coe_to_finset' +/- def set.fintype_of_fintype_image Modified src/data/set/function.lean +/- theorem set.right_inv_on_of_eq_on_left Modified src/logic/basic.lean + theorem Exists.imp - def Exists.imp +/- theorem exists_imp_exists' Modified src/meta/expr.lean + def name.has_prefix Modified src/meta/rb_map.lean Modified src/set_theory/ordinal.lean +/- theorem principal_seg.equiv_lt_apply +/- theorem principal_seg.equiv_lt_top +/- theorem principal_seg.lt_le_top +/- theorem principal_seg.of_element_top +/- theorem principal_seg.top_eq Modified src/tactic/core.lean Modified src/tactic/interactive.lean +/- theorem tactic.interactive.{u} Modified src/tactic/sanity_check.lean Modified src/topology/category/Top/open_nhds.lean - def topological_space.open_nhds.open_nhds + def topological_space.open_nhds Modified test/sanity_check.lean 2019-10-03 09:33:33 4bb8d44 feat(data/equiv/algebra): automorphism groups for other structures (#1141) * Added automorphism groups to data/algebra/lean * feat(data/equiv/algebra): added automorphism groups * feat(data/equiv/algebra) Added automorphism groups * Minor formatting * feat(data/equiv/algebra): add automorphism groups * Changes based on comments * minor change * changes to namespaces and comments added * expanding comments * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Update src/data/equiv/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> * Added monoid case * Changed Type to Type* also further up in the file * typo * I made it compile but not pretty * More changes * fixed typo * fix universes * update docs * minor change * use coercion rather than to_fun in ext lemmas * Use ≃+* and coercion in ring_equiv.ext * arguments of group.aut? * generalize ring_equiv.ext to semirings * Various changes * Use only `mul_aut`, `add_aut`, and `ring_aut` for automorphisms. * Make `*_equiv.ext` arguments agree with `equiv.ext`. * Adjust documentation. * Fix compile, add `add_aut.to_perm` ESTIMATED CHANGES Modified src/data/equiv/algebra.lean + def add_aut.to_perm + def mul_aut.to_perm + def mul_aut + theorem mul_equiv.ext + def ring_aut.to_add_aut + def ring_aut.to_mul_aut + def ring_aut.to_perm + def ring_aut + theorem ring_equiv.ext 2019-10-02 16:42:34 bea1c20 fix(dioph): remove global vector3 notation (#1502) * fix(dioph): remove global vector3 notation it overloads list notation, and then tries to find a coercion from vector3 to list * also make other notations in dioph local * undo localizing ++, overloading that is probably fine * add comment ESTIMATED CHANGES Modified src/number_theory/dioph.lean 2019-10-02 17:27:04+02:00 39ca4f1 chore(.): delete CODEOWNERS ESTIMATED CHANGES Deleted CODEOWNERS 2019-10-01 18:48:13 5ed5f59 feat(tactic/delta_instance): handle parameters and use in library (#1483) * feat(tactic/core): improve delta_instance handler * feat(*): use delta_instance derive handler * feat(tactic/delta_instance): cleaner handling of application under binders * Revert "feat(tactic/delta_instance): cleaner handling of application under binders" This reverts commit 4005a2fad571bf922c98f94cbc1154666abc259d. * comment apply_under_pis * properly get unused name * feat(tactic/delta_instance): run with high priority and don't run on inductives * Update src/tactic/core.lean Co-Authored-By: Floris van Doorn ESTIMATED CHANGES Modified src/category_theory/comma.lean Modified src/data/nat/modeq.lean Modified src/data/rel.lean Modified src/field_theory/mv_polynomial.lean Modified src/linear_algebra/dual.lean - def module.dual Modified src/tactic/core.lean Modified src/topology/uniform_space/compare_reals.lean +/- def compare_reals.Q Modified test/delta_instance.lean + inductive P + def S + def X + def id_ring 2019-10-01 07:53:40 800dba4 chore(linear_map): use curly brackets for type class in linear_map coe_to_fun (#1493) * chore(linear_map): use curly brackets for type class in linear_map coe_to_fun * fix ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/field_theory/mv_polynomial.lean 2019-09-30 14:17:53 374c290 chore(linear_algebra): continue removing decidable_eq assumptions (#1404) * chore(linear_algebra): continue remocing decidable_eq assumptions * chore(data/mv_polynomial): get rid of unnecessary changes to instance depth * fix build * change class instance depth * class_instance depth t Please enter the commit message for your changes. Lines starting * delete some more decidable_eq * Update finite_dimensional.lean * Update finite_dimensional.lean * Update finite_dimensional.lean ESTIMATED CHANGES Modified src/field_theory/finite_card.lean Modified src/linear_algebra/basic.lean +/- theorem linear_map.std_basis_eq_single Modified src/linear_algebra/basis.lean +/- theorem constr_smul +/- theorem is_basis_singleton_one +/- theorem pi.is_basis_std_basis +/- theorem pi.linear_independent_std_basis Modified src/linear_algebra/dimension.lean +/- theorem dim_quotient +/- theorem dim_span +/- theorem dim_span_set +/- theorem exists_is_basis_fintype +/- theorem is_basis.le_span +/- theorem is_basis.mk_eq_dim +/- theorem is_basis.mk_range_eq_dim +/- theorem linear_equiv.dim_eq_lift +/- theorem mk_eq_mk_of_basis Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finite_dimensional.lean +/- theorem finite_dimensional.card_eq_findim +/- theorem finite_dimensional.of_fg Modified src/linear_algebra/finsupp_vector_space.lean Modified src/linear_algebra/matrix.lean +/- def lin_equiv_matrix' +/- def lin_equiv_matrix +/- theorem matrix.rank_diagonal +/- theorem to_matrix_to_lin Modified src/ring_theory/noetherian.lean 2019-09-30 08:55:58 c6fab42 feat(ring_theory/power_series): order (#1292) * First start on power_series * Innocent changes * Almost a comm_semiring * Defined hom from mv_polynomial to mv_power_series; sorrys remain * Attempt that seem to go nowhere * Working on coeff_mul for polynomials * Small progress * Finish mv_polynomial.coeff_mul * Cleaner proof of mv_polynomial.coeff_mul * Fix build * WIP * Finish proof of mul_assoc * WIP * Golfing coeff_mul * WIP * Crazy wf is crazy * mv_power_series over local ring is local * WIP * Add empty line * wip * wip * WIP * WIP * WIP * Add header comments * WIP * WIP * Fix finsupp build * Fix build, hopefully * Fix build: ideals * More docs * Update src/data/power_series.lean Fix typo. * Fix build -- bump instance search depth * Make changes according to some of the review comments * Use 'formal' in the names * Use 'protected' in more places, remove '@simp's * Make 'inv_eq_zero' an iff * Generalize to non-commutative scalars * Order of a power series * Start on formal Laurent series * WIP * Remove file. It's for another PR. * Add stuff about order * Remove old file * Basics on order of power series * Lots of stuff * Move stuff on kernels * Move stuff on ker to the right place * Fix build * Add elim_cast attributes, update documentation * Bundle homs * Fix build * Remove duplicate trunc_C * Fix build ESTIMATED CHANGES Modified src/ring_theory/ideal_operations.lean + theorem is_ring_hom.ker_is_prime + theorem is_ring_hom.mem_ker + theorem is_ring_hom.not_one_mem_ker Modified src/ring_theory/power_series.lean + theorem mv_polynomial.coe_C + theorem mv_polynomial.coe_X + theorem mv_polynomial.coe_add + theorem mv_polynomial.coe_monomial + theorem mv_polynomial.coe_mul + theorem mv_polynomial.coe_one + theorem mv_polynomial.coe_zero + theorem mv_polynomial.coeff_coe - def mv_polynomial.to_mv_power_series - theorem mv_polynomial.to_mv_power_series_coeff +/- def mv_power_series.C - theorem mv_power_series.C_add - theorem mv_power_series.C_mul - theorem mv_power_series.C_one - theorem mv_power_series.C_zero +/- def mv_power_series.X + theorem mv_power_series.X_def + theorem mv_power_series.X_dvd_iff + theorem mv_power_series.X_inj + theorem mv_power_series.X_pow_dvd_iff + theorem mv_power_series.X_pow_eq +/- def mv_power_series.coeff - theorem mv_power_series.coeff_C_zero - theorem mv_power_series.coeff_X'' - theorem mv_power_series.coeff_X' + theorem mv_power_series.coeff_X_pow - theorem mv_power_series.coeff_add + theorem mv_power_series.coeff_comp_monomial + theorem mv_power_series.coeff_index_single_X + theorem mv_power_series.coeff_index_single_self_X +/- theorem mv_power_series.coeff_inv +/- theorem mv_power_series.coeff_map +/- theorem mv_power_series.coeff_mul - theorem mv_power_series.coeff_neg +/- theorem mv_power_series.coeff_one - theorem mv_power_series.coeff_one_zero +/- theorem mv_power_series.coeff_trunc +/- theorem mv_power_series.coeff_zero + theorem mv_power_series.coeff_zero_C + theorem mv_power_series.coeff_zero_X + theorem mv_power_series.coeff_zero_eq_constant_coeff + theorem mv_power_series.coeff_zero_eq_constant_coeff_apply - theorem mv_power_series.coeff_zero_inv - theorem mv_power_series.coeff_zero_inv_of_unit + theorem mv_power_series.coeff_zero_one + def mv_power_series.constant_coeff + theorem mv_power_series.constant_coeff_C + theorem mv_power_series.constant_coeff_X + theorem mv_power_series.constant_coeff_comp_C + theorem mv_power_series.constant_coeff_inv + theorem mv_power_series.constant_coeff_inv_of_unit + theorem mv_power_series.constant_coeff_map + theorem mv_power_series.constant_coeff_one + theorem mv_power_series.constant_coeff_zero +/- theorem mv_power_series.ext +/- theorem mv_power_series.inv_of_unit_eq' +/- theorem mv_power_series.inv_of_unit_eq - theorem mv_power_series.is_unit_coeff_zero + theorem mv_power_series.is_unit_constant_coeff +/- def mv_power_series.map - theorem mv_power_series.map_add +/- theorem mv_power_series.map_comp +/- theorem mv_power_series.map_id - theorem mv_power_series.map_mul - theorem mv_power_series.map_one - theorem mv_power_series.map_zero +/- def mv_power_series.monomial - theorem mv_power_series.monomial_add + theorem mv_power_series.monomial_mul_monomial - theorem mv_power_series.monomial_zero + theorem mv_power_series.monomial_zero_eq_C + theorem mv_power_series.monomial_zero_eq_C_apply +/- theorem mv_power_series.mul_inv_of_unit +/- def mv_power_series.trunc +/- theorem mv_power_series.trunc_C - theorem mv_power_series.trunc_add + def mv_power_series.trunc_fun +/- theorem mv_power_series.trunc_one - theorem mv_power_series.trunc_zero + theorem polynomial.coe_C + theorem polynomial.coe_X + theorem polynomial.coe_add + theorem polynomial.coe_monomial + theorem polynomial.coe_mul + theorem polynomial.coe_one + theorem polynomial.coe_zero + theorem polynomial.coeff_coe + def polynomial.monomial - def polynomial.to_power_series - theorem polynomial.to_power_series_coeff +/- def power_series.C - theorem power_series.C_add - theorem power_series.C_mul - theorem power_series.C_one - theorem power_series.C_zero + theorem power_series.X_dvd_iff + theorem power_series.X_eq + theorem power_series.X_pow_dvd_iff + theorem power_series.X_pow_eq + theorem power_series.X_prime +/- def power_series.coeff - theorem power_series.coeff_C_zero - theorem power_series.coeff_X' + theorem power_series.coeff_X_pow + theorem power_series.coeff_X_pow_self - theorem power_series.coeff_add + theorem power_series.coeff_comp_monomial + theorem power_series.coeff_def +/- theorem power_series.coeff_mk + theorem power_series.coeff_of_lt_order + theorem power_series.coeff_one_X - theorem power_series.coeff_one_zero + theorem power_series.coeff_order - theorem power_series.coeff_zero + theorem power_series.coeff_zero_C + theorem power_series.coeff_zero_X + theorem power_series.coeff_zero_eq_constant_coeff + theorem power_series.coeff_zero_eq_constant_coeff_apply - theorem power_series.coeff_zero_inv - theorem power_series.coeff_zero_inv_of_unit + theorem power_series.coeff_zero_one + def power_series.constant_coeff + theorem power_series.constant_coeff_C + theorem power_series.constant_coeff_X + theorem power_series.constant_coeff_comp_C + theorem power_series.constant_coeff_inv + theorem power_series.constant_coeff_inv_of_unit + theorem power_series.constant_coeff_one + theorem power_series.constant_coeff_zero + theorem power_series.eq_zero_or_eq_zero_of_mul_eq_zero +/- theorem power_series.ext +/- theorem power_series.ext_iff +/- theorem power_series.inv_of_unit_eq' +/- theorem power_series.inv_of_unit_eq + theorem power_series.is_unit_constant_coeff +/- def power_series.map - theorem power_series.map_add +/- theorem power_series.map_comp +/- theorem power_series.map_id - theorem power_series.map_mul - theorem power_series.map_one - theorem power_series.map_zero +/- def power_series.monomial - theorem power_series.monomial_add - theorem power_series.monomial_zero + theorem power_series.monomial_zero_eq_C + theorem power_series.monomial_zero_eq_C_apply +/- theorem power_series.mul_inv_of_unit + def power_series.order + theorem power_series.order_X + theorem power_series.order_X_pow + theorem power_series.order_add_ge + theorem power_series.order_add_of_order_eq + theorem power_series.order_eq + theorem power_series.order_eq_nat + theorem power_series.order_eq_top + theorem power_series.order_finite_of_coeff_ne_zero + theorem power_series.order_ge + theorem power_series.order_ge_nat + theorem power_series.order_le + theorem power_series.order_monomial + theorem power_series.order_monomial_of_ne_zero + theorem power_series.order_mul + theorem power_series.order_mul_ge + theorem power_series.order_one + theorem power_series.order_zero + theorem power_series.span_X_is_prime +/- theorem power_series.trunc_C 2019-09-28 22:44:16 30aa8d2 chore(order/basic): rename `monotone_comp` to `monotone.comp`, reorder arguments (#1497) ESTIMATED CHANGES Modified src/order/basic.lean - theorem monotone_comp Modified src/order/filter/lift.lean Modified src/order/fixed_points.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean 2019-09-27 22:59:45 708faa9 feat(geometry/manifold/manifold): define manifolds (#1422) * feat(geometry/manifold/manifold): define manifolds * Update src/geometry/manifold/manifold.lean Typo Co-Authored-By: Johan Commelin * reviewer comments * notations, comments * Update src/geometry/manifold/manifold.lean Co-Authored-By: Scott Morrison * Update src/geometry/manifold/manifold.lean Co-Authored-By: Scott Morrison * manifolds: reviewers comments * comment on notation for composition * add documentation on atlases and structomorphisms ESTIMATED CHANGES Added src/geometry/manifold/manifold.lean + theorem chart_at_model_space_eq + def continuous_groupoid + def groupoid_of_pregroupoid + theorem groupoid_of_pregroupoid_le + theorem has_groupoid_of_le + def id_groupoid + def manifold_core.local_homeomorph + theorem manifold_core.open_source' + theorem manifold_core.open_target + def manifold_core.to_manifold + structure manifold_core + theorem mem_groupoid_of_pregroupoid + theorem model_space_atlas + structure pregroupoid + def structomorph.refl + def structomorph.symm + def structomorph.trans + structure structomorph + structure structure_groupoid 2019-09-27 18:10:21 e0c204e chore(algebra/group_power): move inv_one from group_power to field (#1495) * chore(algebra/group_power): move inv_one from group_power to field * fix ESTIMATED CHANGES Modified src/algebra/field.lean + theorem inv_one Modified src/algebra/group_power.lean - theorem inv_one 2019-09-27 16:05:10 74f09d0 chore(algebra/char_p): remove some decidable_eq assumptions (#1492) * chore(algebra/char_p): remove some decidable_eq assumptions * fix build ESTIMATED CHANGES Modified src/algebra/char_p.lean +/- theorem char_p.char_is_prime +/- theorem char_p.char_ne_zero_of_fintype Modified src/data/set/finite.lean +/- theorem set.not_injective_int_fintype +/- theorem set.not_injective_nat_fintype 2019-09-27 14:10:25 ce7c94f feat(reduce_projections): add reduce_projections attribute (#1402) * feat(reduce_projections): add attribute This attribute automatically generates simp-lemmas for an instance of a structure stating what the projections of this instance are * add tactic doc * use lean code blocks * missing `lemma` * checkpoint * recursively apply reduce_projections and eta-reduce structures * reviewer comments, shorten name new name is simps * avoid name clashes * remove recursive import * fix eta-expansion bug * typo * apply whnf to type * add test * replace nm by decl_name ESTIMATED CHANGES Modified docs/tactics.md Modified src/meta/expr.lean Modified src/tactic/basic.lean Modified src/tactic/core.lean Modified src/tactic/default.lean Added src/tactic/simps.lean Added test/simps.lean + structure automorphism_plus_data + def bar + def baz + def count_nested.nested1 + def count_nested.nested2 + structure equiv + structure equiv_plus_data + def foo.bar1 + def foo.bar2 + def foo.foo + def my_equiv + def name_clash + def name_clash_fst + def name_clash_snd + def name_clash_snd_2 + structure partially_applied_str + def partially_applied_term + def refl_with_data' + def refl_with_data + def test + structure very_partially_applied_str + def very_partially_applied_term Modified test/tactics.lean + def dummy + structure equiv + def eta_expansion_test2 + def eta_expansion_test + structure my_str + def right_param + def wrong_param 2019-09-27 11:47:32 efd5ab2 feat(logic/function): define `function.involutive` (#1474) * feat(logic/function): define `function.involutive` * Prove that `inv`, `neg`, and `complex.conj` are involutive. * Move `inv_inv'` to `algebra/field` ESTIMATED CHANGES Modified src/algebra/field.lean + theorem inv_inv' + theorem inv_involutive' Modified src/algebra/group/basic.lean + theorem inv_involutive Modified src/algebra/group_power.lean - theorem inv_inv' Modified src/analysis/complex/polynomial.lean Modified src/data/complex/basic.lean +/- theorem complex.conj_bijective + theorem complex.conj_involutive Modified src/data/equiv/basic.lean + def function.involutive.to_equiv Modified src/data/real/hyperreal.lean +/- theorem hyperreal.inv_epsilon_eq_omega Modified src/data/real/nnreal.lean +/- theorem nnreal.inv_inv Modified src/logic/function.lean + def function.involutive + theorem function.involutive_iff_iter_2_eq_id 2019-09-27 09:36:44 6a79f8a feat(data/int/basic): to_nat lemmas (#1479) * feat(data/int/basic): of_nat lemmas * Adding lt_of_to_nat_lt * reversing sides of <-> ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.lt_of_to_nat_lt + theorem int.lt_to_nat +/- theorem int.to_nat_le + theorem int.to_nat_lt_to_nat 2019-09-27 07:02:36 0bc5de5 chore(*): drop some unused args reported by `#sanity_check_mathlib` (#1490) * Drop some unused arguments * Drop more unused arguments * Move `round` to the bottom of `algebra/archimedean` Suggested by @rwbarton ESTIMATED CHANGES Modified src/algebra/archimedean.lean +/- theorem exists_nat_one_div_lt +/- theorem exists_rat_near +/- theorem rat.cast_round Modified src/algebra/associated.lean +/- theorem associates.dvd_eq_le +/- theorem associates.eq_of_mul_eq_mul_left +/- theorem associates.le_of_mul_le_mul_left +/- theorem associates.one_or_eq_of_le_of_prime Modified src/algebra/floor.lean +/- theorem floor_ring_unique Modified src/algebra/group/units.lean +/- theorem divp_inv Modified src/algebra/group/with_one.lean +/- theorem with_one.map_eq Modified src/category/basic.lean Modified src/category/bitraversable/instances.lean Modified src/category/monad/writer.lean Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.cofork.condition - def category_theory.limits.cofork.condition + theorem category_theory.limits.fork.condition - def category_theory.limits.fork.condition Modified src/category_theory/limits/shapes/pullbacks.lean +/- theorem category_theory.limits.pullback.condition +/- theorem category_theory.limits.pushout.condition Modified src/data/equiv/algebra.lean +/- theorem equiv.coe_units_equiv_ne_zero +/- def equiv.units_equiv_ne_zero Modified src/data/equiv/basic.lean +/- theorem equiv.symm_trans_swap_trans Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/borel_space.lean +/- theorem measure_theory.borel_eq_subtype +/- theorem measure_theory.borel_induced +/- theorem measure_theory.measurable_of_continuous2 Modified src/measure_theory/l1_space.lean Modified src/measure_theory/measurable_space.lean +/- theorem is_measurable_inl_image +/- theorem is_measurable_inr_image +/- theorem is_measurable_range_inl +/- theorem is_measurable_range_inr Modified src/number_theory/pell.lean +/- theorem pell.eq_of_xn_modeq_lem1 Modified src/topology/instances/polynomial.lean +/- theorem polynomial.continuous_eval 2019-09-26 20:42:25 15ed039 fix(scripts/mk_all): ignore hidden files (#1488) * fix(scripts/mk_all): ignore hidden files Emacs sometimes creates temporary files with names like `.#name.lean`. * Fix comment Co-Authored-By: Floris van Doorn ESTIMATED CHANGES Modified scripts/mk_all.sh 2019-09-26 13:55:55 3cd3341 feat(field_theory/minimal_polynomial): Basics on minimal polynomials (#1449) * chore(ring_theory/algebra): make first type argument explicit in alg_hom Now this works, and it didn't work previously even with `@` ```lean structure alg_equiv (α β γ : Type*) [comm_ring α] [ring β] [ring γ] [algebra α β] [algebra α γ] extends alg_hom α β γ := ``` * Update algebra.lean * feat(field_theory/algebraic_closure) * Remove sorries about minimal polynomials * Define alg_equiv.symm * typo * Remove another sorry, in base_extension * Work in progress * Remove a sorry in maximal_extension_chain * Merge two sorries * More sorries removed * More work on transitivity of algebraicity * WIP * Sorry-free definition of algebraic closure * More or less sorries * Removing some sorries * WIP * feat(field_theory/minimal_polynomial): Basics on minimal polynomials * Remove protected; add docstrings * Open classical locale * Stuff is broken * Rewrite the module doc a bit, revert change to classical * Little fixes * explicit-ify proof * feat(algebra/big_operators): simp lemmas * Remove decidable_eq instances * fix(ring_theory/algebra): get ris of dec_eq assumptions so simp triggers again * break as_sum into its constituent pieces * fix namespace * not sure if this is better or worse * Fix ext naming * More fixes * Fix some renaming issues ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.lt_add_one_iff + theorem nat.lt_one_add_iff Modified src/data/polynomial.lean + theorem polynomial.as_sum + theorem polynomial.coeff_eq_zero_of_nat_degree_lt + theorem polynomial.degree_eq_iff_nat_degree_eq + theorem polynomial.degree_eq_iff_nat_degree_eq_of_pos +/- theorem polynomial.ext + theorem polynomial.ext_iff + theorem polynomial.finset_sum_coeff + theorem polynomial.hom_eval₂ + theorem polynomial.ite_le_nat_degree_coeff +/- theorem polynomial.map_id + theorem polynomial.monic.leading_coeff + theorem polynomial.zero_is_root_of_coeff_zero_eq_zero Added src/field_theory/minimal_polynomial.lean + theorem minimal_polynomial.aeval + theorem minimal_polynomial.algebra_map' + theorem minimal_polynomial.coeff_zero_eq_zero + theorem minimal_polynomial.coeff_zero_ne_zero + theorem minimal_polynomial.degree_le_of_ne_zero + theorem minimal_polynomial.degree_ne_zero + theorem minimal_polynomial.degree_pos + theorem minimal_polynomial.dvd + theorem minimal_polynomial.irreducible + theorem minimal_polynomial.min + theorem minimal_polynomial.monic + theorem minimal_polynomial.ne_zero + theorem minimal_polynomial.not_is_unit + theorem minimal_polynomial.one + theorem minimal_polynomial.prime + theorem minimal_polynomial.root + theorem minimal_polynomial.unique + theorem minimal_polynomial.zero Modified src/ring_theory/algebra.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean 2019-09-26 12:04:21 f92e812 feat(data/setoid): create file about setoids (#1453) * setoid complete lattice * order iso and Galois insertion * added documentation * editing docstrings * not opening lattice twice * partitions * typo * minor edits * editing docstrings * applying review comments * editing implementation notes * partly applied review comments * moved length_scanl * whoops, and removed length_scanl from setoid * editing implementation notes * generalising `of_quotient` a bit more * style tweaks + reviewer changes * removing Bell numbers for now * revert docstring * applying review comments * generalising to_quotient * partly applying review comments * applying review comments * readding list length lemmas ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.exists_of_length_succ + theorem list.last_eq_nth_le + theorem list.length_pos_iff_ne_nil + theorem list.length_pos_of_ne_nil + theorem list.length_scanl + theorem list.ne_nil_of_length_pos Modified src/data/set/lattice.lean + theorem set.disjoint_left + theorem set.disjoint_right + theorem set.sUnion_eq_univ_iff Added src/data/setoid.lean + theorem quotient.eq_rel + theorem setoid.Inf_def + theorem setoid.Inf_le + theorem setoid.Sup_def + theorem setoid.Sup_eq_eqv_gen + def setoid.classes + theorem setoid.classes_eqv_classes + theorem setoid.classes_inj + theorem setoid.classes_mk_classes + def setoid.comap + def setoid.correspondence + theorem setoid.empty_not_mem_classes + theorem setoid.eq_eqv_class_of_mem + theorem setoid.eq_iff_classes_eq + theorem setoid.eq_iff_rel_eq + theorem setoid.eq_of_mem_classes + theorem setoid.eq_of_mem_eqv_class + theorem setoid.eqv_class_mem + theorem setoid.eqv_classes_disjoint + theorem setoid.eqv_classes_of_disjoint_union + theorem setoid.eqv_gen_eq + theorem setoid.eqv_gen_idem + theorem setoid.eqv_gen_le + theorem setoid.eqv_gen_mono + theorem setoid.eqv_gen_of_setoid + theorem setoid.exists_of_mem_partition + theorem setoid.ext' + theorem setoid.ext_iff + def setoid.gi + theorem setoid.inf_def + theorem setoid.inf_iff_and + theorem setoid.injective_iff_ker_bot + theorem setoid.injective_ker_lift + def setoid.is_partition + def setoid.ker + theorem setoid.ker_apply_eq_preimage + theorem setoid.ker_eq_lift_of_injective + theorem setoid.ker_mk_eq + theorem setoid.le_Inf + theorem setoid.le_def + theorem setoid.lift_unique + def setoid.map + def setoid.map_of_surjective + theorem setoid.map_of_surjective_eq_map + theorem setoid.mem_classes + def setoid.mk_classes + theorem setoid.mk_classes_classes + theorem setoid.ne_empty_of_mem_partition + def setoid.partition.order_iso + theorem setoid.refl' + def setoid.rel + def setoid.setoid_of_disjoint_union + theorem setoid.sup_def + theorem setoid.sup_eq_eqv_gen + theorem setoid.symm' + theorem setoid.trans' Modified src/order/galois_connection.lean + theorem order_iso.to_galois_connection 2019-09-26 07:39:54 7afdab6 refactor(data/equiv/algebra): rewrite `ring_equiv` using bundled homs (#1482) * refactor(data/equiv/algebra): rewrite `ring_equiv` using bundled homs Fix some compile errors * Fix compile, add missing docs * Docstrings * Use less `ring_equiv.to_equiv` outside of `data/equiv/algebra` * Join lines ESTIMATED CHANGES Modified src/algebra/ring.lean Modified src/data/equiv/algebra.lean + theorem add_equiv.map_sub + theorem mul_equiv.map_eq_one_iff + theorem mul_equiv.map_inv + theorem mul_equiv.map_ne_one_iff + theorem ring_equiv.apply_symm_apply + theorem ring_equiv.coe_add_equiv + theorem ring_equiv.coe_mul_equiv + theorem ring_equiv.image_eq_preimage + theorem ring_equiv.map_add + theorem ring_equiv.map_mul + theorem ring_equiv.map_neg + theorem ring_equiv.map_neg_one + theorem ring_equiv.map_one + theorem ring_equiv.map_sub + theorem ring_equiv.map_zero + def ring_equiv.of' + def ring_equiv.of + theorem ring_equiv.symm_apply_apply - def ring_equiv.to_add_equiv - theorem ring_equiv.to_equiv_symm - theorem ring_equiv.to_equiv_symm_apply - def ring_equiv.to_mul_equiv + def ring_equiv.to_ring_hom +/- structure ring_equiv Modified src/data/mv_polynomial.lean +/- def mv_polynomial.option_equiv_left +/- def mv_polynomial.option_equiv_right +/- def mv_polynomial.pempty_ring_equiv +/- def mv_polynomial.punit_ring_equiv +/- def mv_polynomial.ring_equiv_congr +/- def mv_polynomial.ring_equiv_of_equiv +/- def mv_polynomial.sum_ring_equiv Modified src/ring_theory/free_comm_ring.lean +/- def free_comm_ring_pempty_equiv_int +/- def free_comm_ring_punit_equiv_polynomial_int +/- def free_ring_pempty_equiv_int +/- def free_ring_punit_equiv_polynomial_int Modified src/ring_theory/ideal_operations.lean Modified src/ring_theory/localization.lean +/- def localization.equiv_of_equiv +/- def localization.fraction_ring.equiv_of_equiv Modified src/ring_theory/maps.lean +/- def comm_ring.anti_equiv_to_equiv +/- def comm_ring.equiv_to_anti_equiv - theorem ring_equiv.map_add - theorem ring_equiv.map_mul - theorem ring_equiv.map_neg - theorem ring_equiv.map_neg_one - theorem ring_equiv.map_one - theorem ring_equiv.map_sub - theorem ring_equiv.map_zero Modified src/ring_theory/noetherian.lean 2019-09-26 00:29:27 2e35a7a feat(int/basic): add simp-lemma int.of_nat_eq_coe (#1486) * feat(int/basic): add simp-lemma int.of_nat_eq_coe * fix errors in the process also add some lemmas about bxor to simplify proofs * use coercion in rat.mk ESTIMATED CHANGES Modified src/data/bool.lean + theorem bool.bxor_bnot_bnot + theorem bool.bxor_bnot_left + theorem bool.bxor_bnot_right Modified src/data/int/basic.lean Modified src/data/rat/basic.lean 2019-09-25 18:11:13 b39040f feat(sanity_check): improvements (#1487) * checkpoint * checkpoint * checkpoint * feat(sanity_check): improvements * Now check for classical.[some|choice] and [gt|ge] in theorem statements * Add [sanity_skip] attribute to skip checks * Add #sanity_check_all to check all declarations * Add `-` after command to only execute fast tests * Reduce code duplication * Make the performed checks configurable. * some cleanup * fix tests * clarification * reviewer comments * fix typo in docstring * reviewer comments * update docstring * Update tactics.md ESTIMATED CHANGES Modified docs/tactics.md Modified src/meta/expr.lean Modified src/tactic/sanity_check.lean Modified test/sanity_check.lean + def bar.foo + theorem foo.foo - theorem foo4 2019-09-25 04:39:17 3e5dc88 chore(scripts): add executable bit to scripts/mk_all.sh, and create/delete sanity_check_mathlib.lean (#1480) * chore(scripts): add executable bit to scripts/mk_all.sh * another * modify mk_all/rm_all to create a file containing #sanity_check_mathlib * add sanity_check_mathlib.lean to .gitignore * Update scripts/mk_all.sh * Update scripts/mk_all.sh Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified .gitignore Modified scripts/mk_all.sh Modified scripts/rm_all.sh 2019-09-25 01:30:42 491a68e cleanup(*): use priority 10 for low priority (#1485) Now we can locally use priorities lower than this low-priority ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/times_cont_diff.lean Modified src/category/bifunctor.lean Modified src/category/bitraversable/instances.lean Modified src/category_theory/adjunction/basic.lean +/- theorem category_theory.adjunction.hom_equiv_naturality_left_symm +/- theorem category_theory.adjunction.hom_equiv_naturality_right Modified src/computability/primrec.lean Modified src/data/fintype.lean +/- theorem fintype.linear_order.is_well_order +/- def unique.fintype Modified src/data/int/basic.lean Modified src/data/nat/cast.lean Modified src/data/num/basic.lean Modified src/data/rat/cast.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/finsupp.lean Modified src/logic/basic.lean Modified src/logic/function.lean Modified src/tactic/finish.lean Modified src/tactic/localized.lean Modified src/tactic/push_neg.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/uniform_space/abstract_completion.lean 2019-09-24 15:16:11 00d440a feat(tactic/import_private): make private definitions available outside of their scope (#1450) * new user command: `import_private` * test case * Update expr.lean * Update examples.lean * Update tactics.md * Update src/tactic/core.lean Co-Authored-By: Rob Lewis * Update tactics.md * Update examples.lean * Update core.lean * Update core.lean * Update src/meta/expr.lean * Update docs/tactics.md * Update examples.lean * Update examples.lean ESTIMATED CHANGES Modified docs/tactics.md Modified src/meta/expr.lean Modified src/tactic/core.lean Modified test/examples.lean 2019-09-24 13:36:31 1eaa292 feat(finset): add has_sep instance (#1477) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.filter_congr_decidable + theorem finset.sep_def Modified test/examples.lean 2019-09-24 08:39:19 5344da4 feat(algebra/big_operators): simp lemmas (#1471) * feat(algebra/big_operators): simp lemmas * remove @[simp] ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_ite + theorem finset.sum_boole_mul + theorem finset.sum_mul_boole Modified src/data/finset.lean + theorem finset.filter_eq 2019-09-24 08:13:37 201174d feat(algebra/continued_fractions): add basic defs/lemmas for continued fractions (#1433) * feat(algebra/continued_fractions): add basic defs/lemmas for continued fractions * Rename termiantes_at to terminated_at, use long names for cont. fracts. * Fix indentation, remove subfolders, fix docstrings ESTIMATED CHANGES Modified docs/references.bib Added src/algebra/continued_fractions/basic.lean + theorem continued_fraction.coe_to_generalized_continued_fraction + theorem continued_fraction.coe_to_simple_continued_fraction + def continued_fraction + theorem generalized_continued_fraction.coe_to_generalized_continued_fraction + def generalized_continued_fraction.continuants + def generalized_continued_fraction.continuants_aux + def generalized_continued_fraction.convergents' + def generalized_continued_fraction.convergents'_aux + def generalized_continued_fraction.convergents + def generalized_continued_fraction.denominators + def generalized_continued_fraction.is_simple_continued_fraction + def generalized_continued_fraction.next_continuants + def generalized_continued_fraction.next_denominator + def generalized_continued_fraction.next_numerator + def generalized_continued_fraction.numerators + theorem generalized_continued_fraction.pair.coe_to_generalized_continued_fraction_pair + def generalized_continued_fraction.partial_denominators + def generalized_continued_fraction.partial_numerators + def generalized_continued_fraction.seq.coe_to_seq + def generalized_continued_fraction.terminated_at + def generalized_continued_fraction.terminates + structure generalized_continued_fraction + theorem simple_continued_fraction.coe_to_generalized_continued_fraction + def simple_continued_fraction.is_regular_continued_fraction + def simple_continued_fraction Added src/algebra/continued_fractions/continuants_recurrence.lean + theorem generalized_continued_fraction.continuants_aux_recurrence + theorem generalized_continued_fraction.continuants_recurrence + theorem generalized_continued_fraction.continuants_recurrence_aux + theorem generalized_continued_fraction.denominators_recurrence + theorem generalized_continued_fraction.numerators_recurrence Added src/algebra/continued_fractions/default.lean Added src/algebra/continued_fractions/translations.lean + theorem generalized_continued_fraction.convergent_eq_conts_a_div_conts_b + theorem generalized_continued_fraction.convergent_eq_num_div_denom + theorem generalized_continued_fraction.denom_eq_conts_b + theorem generalized_continued_fraction.first_continuant_aux_eq_h_one + theorem generalized_continued_fraction.nth_cont_eq_succ_nth_cont_aux + theorem generalized_continued_fraction.num_eq_conts_a + theorem generalized_continued_fraction.obtain_conts_a_of_num + theorem generalized_continued_fraction.obtain_conts_b_of_denom + theorem generalized_continued_fraction.obtain_s_a_of_part_num + theorem generalized_continued_fraction.obtain_s_b_of_part_denom + theorem generalized_continued_fraction.part_denom_eq_s_b + theorem generalized_continued_fraction.part_denom_none_iff_s_none + theorem generalized_continued_fraction.part_num_eq_s_a + theorem generalized_continued_fraction.part_num_none_iff_s_none + theorem generalized_continued_fraction.terminated_at_iff_part_denom_none + theorem generalized_continued_fraction.terminated_at_iff_part_num_none + theorem generalized_continued_fraction.terminated_at_iff_s_none + theorem generalized_continued_fraction.terminated_at_iff_s_terminated_at + theorem generalized_continued_fraction.zeroth_continuant_aux_eq_one_zero + theorem generalized_continued_fraction.zeroth_continuant_eq_h_one + theorem generalized_continued_fraction.zeroth_convergent'_aux_eq_zero + theorem generalized_continued_fraction.zeroth_convergent'_eq_h + theorem generalized_continued_fraction.zeroth_convergent_eq_h Modified src/data/seq/seq.lean + def seq.terminated_at + theorem seq.terminated_stable + def seq.terminates 2019-09-24 05:46:35 327098b feat(tactic/library_search): a more powerful library_search (#1470) * experimental extensions to library_search * upgrades to library_search * remove ! for a later PR * move `run_norm_num` * oops * Update src/tactic/library_search.lean Co-Authored-By: Floris van Doorn * remove run_norm_num for later ESTIMATED CHANGES Modified src/tactic/library_search.lean Modified src/tactic/solve_by_elim.lean Modified test/library_search/basic.lean - def test.library_search.P - def test.library_search.Q - def test.library_search.f + def test.library_search.lt_one + theorem test.library_search.zero_lt_one Modified test/solve_by_elim.lean 2019-09-24 03:51:35 88f37b5 fix(tactic.lift): fix error messages (#1478) ESTIMATED CHANGES Modified src/tactic/lift.lean Modified test/tactics.lean 2019-09-24 00:00:49 425644f refactor(algebra/*): Make `monoid_hom.ext` etc use `∀ x, f x = g x` as an assumption (#1476) ESTIMATED CHANGES Modified src/algebra/category/CommRing/adjunctions.lean Modified src/algebra/category/CommRing/basic.lean Modified src/algebra/category/CommRing/limits.lean Modified src/algebra/category/Mon/basic.lean Modified src/algebra/group/hom.lean + theorem monoid_hom.coe_inj +/- theorem monoid_hom.ext + theorem monoid_hom.ext_iff Modified src/algebra/ring.lean + theorem ring_hom.coe_inj +/- theorem ring_hom.ext + theorem ring_hom.ext_iff Modified src/data/mv_polynomial.lean 2019-09-23 22:04:22 604699b feat(data|set_theory): various new lemmas (#1466) * various changes * move section on map down I need some lemmas about nth for maps, and this seemed like the nicest way to do it * some lemmas * replace app by append in names * lemmas from various proving grounds problems * sanity_check on list.basic * small fixes in ordinal and cardinal also open namespace equiv in ordinal * small changes * add docstring * fix * rename variable * simp caused a problem * update docstring * fix last two comments ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem lt_one_add Modified src/data/equiv/basic.lean Modified src/data/equiv/list.lean + def equiv.list_unit_equiv Modified src/data/fin.lean + theorem fin.coe_one + theorem fin.coe_two + theorem fin.coe_zero +/- theorem fin.injective_cast_le + theorem fin.injective_val + theorem fin.val_one + theorem fin.val_two Modified src/data/list/basic.lean - theorem list.app_subset_of_subset_of_subset +/- theorem list.append_sublist_append + theorem list.append_subset_iff + theorem list.append_subset_of_subset_of_subset +/- theorem list.bind_append +/- theorem list.bind_ret_eq_map +/- theorem list.chain'.iff_mem + theorem list.doubleton_eq + theorem list.empty_eq + theorem list.exists_le_of_sum_le + theorem list.exists_lt_of_sum_lt +/- theorem list.ilast'_mem + theorem list.injective_length + theorem list.injective_length_iff + theorem list.injective_map_iff + theorem list.insert_neg + theorem list.insert_pos + theorem list.join_join +/- theorem list.length_attach +/- theorem list.length_insert_of_mem +/- theorem list.length_insert_of_not_mem +/- theorem list.map_eq_map + theorem list.map_eq_map_iff + theorem list.map_subset_iff - theorem list.nodup_app_comm + theorem list.nodup_append_comm +/- theorem list.nodup_append_of_nodup +/- theorem list.nth_le_attach + theorem list.nth_le_map_rev - theorem list.pairwise_app_comm + theorem list.pairwise_append_comm +/- theorem list.rel_filter_map + theorem list.singleton_eq - theorem list.sublist_app_of_sublist_left - theorem list.sublist_app_of_sublist_right + theorem list.sublist_append_of_sublist_left + theorem list.sublist_append_of_sublist_right - theorem list.subset_app_of_subset_left - theorem list.subset_app_of_subset_right + theorem list.subset_append_of_subset_left + theorem list.subset_append_of_subset_right Modified src/data/nat/basic.lean + theorem nat.pred_eq_succ_iff Modified src/data/set/basic.lean + theorem set.set_of_app_iff Modified src/data/subtype.lean + theorem subtype.forall' Modified src/set_theory/cardinal.lean + theorem cardinal.add_lt_omega_iff + theorem cardinal.lift_eq_nat_iff + theorem cardinal.mk_image_le_lift + theorem cardinal.mk_range_eq_lift + theorem cardinal.mk_sum_compl + theorem cardinal.mul_lt_omega_iff + theorem cardinal.mul_lt_omega_iff_of_ne_zero + theorem cardinal.nat_eq_lift_eq_iff + theorem cardinal.power_le_max_power_one Modified src/set_theory/ordinal.lean + theorem cardinal.add_eq_left + theorem cardinal.add_eq_left_iff + theorem cardinal.add_eq_right + theorem cardinal.add_eq_right_iff + def cardinal.aleph'_equiv - theorem cardinal.aleph_is_limit + theorem cardinal.eq_of_add_eq_of_omega_le + theorem cardinal.extend_function + theorem cardinal.extend_function_finite + theorem cardinal.extend_function_of_lt + theorem cardinal.le_mul_left + theorem cardinal.le_mul_right + theorem cardinal.mk_compl_eq_mk_compl_finite + theorem cardinal.mk_compl_eq_mk_compl_finite_lift + theorem cardinal.mk_compl_eq_mk_compl_finite_same + theorem cardinal.mk_compl_eq_mk_compl_infinite + theorem cardinal.mk_compl_finset_of_omega_le + theorem cardinal.mk_compl_of_omega_le + theorem cardinal.mul_eq_left + theorem cardinal.mul_eq_left_iff + theorem cardinal.mul_eq_right + theorem cardinal.ord_aleph_is_limit +/- theorem cardinal.pow_le + theorem ordinal.bsup_id + theorem ordinal.is_limit_add_iff + theorem ordinal.is_normal.bsup_eq + theorem ordinal.lt_bsup + theorem ordinal.nfp_eq_self +/- def principal_seg.equiv_lt +/- def principal_seg.lt_le +/- theorem principal_seg.lt_le_top +/- def principal_seg.of_element 2019-09-23 19:57:18 fd7840a feat(topology/constructions): is_open_prod_iff' (#1454) * feat(topology/constructions): open_prod_iff' * reviewer's comments * fix build * golfed; is_open_map_fst ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.prod_subset_prod_iff Modified src/topology/constructions.lean + theorem is_open_map_fst + theorem is_open_map_snd + theorem is_open_prod_iff' 2019-09-23 17:36:28 87d1240 feat(tactic/core): derive handler for simple instances (#1475) * feat(tactic/core): derive handler for simple algebraic instances * change comment * use mk_definition * Update src/tactic/core.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/tactic/core.lean Added test/delta_instance.lean + def T + def V 2019-09-22 04:34:09 61ccaf6 chore(*): fix various issues reported by `sanity_check_mathlib` (#1469) * chore(*): fix various issues reported by `sanity_check_mathlib` * Drop a misleading comment, fix the proof ESTIMATED CHANGES Modified src/algebra/direct_limit.lean + theorem add_comm_group.direct_limit.directed_system - def add_comm_group.direct_limit.directed_system Modified src/algebra/field.lean + theorem units.mk0_inj - theorem units.units.mk0_inj Modified src/algebra/group/basic.lean + theorem sub_sub_cancel - def sub_sub_cancel Modified src/algebra/group/with_one.lean Modified src/algebra/ordered_field.lean + theorem div_nonneg - def div_nonneg + theorem div_pos - def div_pos + theorem half_lt_self - def half_lt_self Modified src/algebra/ordered_ring.lean - def nonneg_ring.nonneg_ring.to_linear_nonneg_ring + def nonneg_ring.to_linear_nonneg_ring Modified src/algebra/pointwise.lean + theorem set.pointwise_mul_image_is_semiring_hom - def set.pointwise_mul_image_is_semiring_hom + theorem set.singleton.is_monoid_hom - def set.singleton.is_monoid_hom + theorem set.singleton.is_mul_hom - def set.singleton.is_mul_hom Modified src/category/monad/cont.lean - def cont_t.cont_t.monad_lift + def cont_t.monad_lift Modified src/category/traversable/equiv.lean Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.of_components.app - def category_theory.nat_iso.of_components.app + theorem category_theory.nat_iso.of_components.hom_app - def category_theory.nat_iso.of_components.hom_app + theorem category_theory.nat_iso.of_components.inv_app - def category_theory.nat_iso.of_components.inv_app Modified src/data/equiv/algebra.lean + theorem mul_equiv.apply_symm_apply - def mul_equiv.apply_symm_apply + theorem mul_equiv.map_mul - def mul_equiv.map_mul + theorem mul_equiv.map_one - def mul_equiv.map_one + theorem mul_equiv.symm_apply_apply - def mul_equiv.symm_apply_apply Modified src/data/equiv/basic.lean + def equiv.subtype_quotient_equiv_quotient_subtype - theorem equiv.subtype_quotient_equiv_quotient_subtype Modified src/data/finset.lean + def finset.strong_induction_on - theorem finset.strong_induction_on Modified src/data/finsupp.lean + theorem finsupp.lt_wf - def finsupp.lt_wf Modified src/data/matrix/basic.lean + theorem matrix.is_add_monoid_hom_mul_right - def matrix.is_add_monoid_hom_mul_right Modified src/data/multiset.lean + theorem multiset.map_eq_zero - theorem multiset.multiset.map_eq_zero Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.degrees_neg +/- theorem mv_polynomial.degrees_sub Modified src/data/polynomial.lean + def polynomial.coeff_coe_to_fun + theorem polynomial.degree_lt_wf - def polynomial.degree_lt_wf - def polynomial.polynomial.has_coe_to_fun Modified src/data/rat/basic.lean + def rat.{u} - theorem rat.{u} Modified src/data/rat/order.lean Modified src/group_theory/free_group.lean + theorem free_group.to_word.inj - def free_group.to_word.inj + theorem free_group.to_word.mk - def free_group.to_word.mk Modified src/group_theory/sylow.lean + def sylow.fixed_points_mul_left_cosets_equiv_quotient - theorem sylow.fixed_points_mul_left_cosets_equiv_quotient Modified src/linear_algebra/finsupp_vector_space.lean + def fin_dim_vectorspace_equiv - theorem fin_dim_vectorspace_equiv Modified src/logic/basic.lean +/- theorem imp_intro + def not.elim - theorem not.elim +/- theorem not_of_not_imp Modified src/measure_theory/ae_eq_fun.lean + theorem measure_theory.ae_eq_fun.lift_rel_mk_mk - def measure_theory.ae_eq_fun.lift_rel_mk_mk Modified src/number_theory/dioph.lean + theorem poly.ext - def poly.ext + theorem poly.induction - def poly.induction + theorem poly.isp - def poly.isp Modified src/order/filter/basic.lean Modified src/order/filter/pointwise.lean + theorem filter.pointwise_add_map_is_add_monoid_hom - def filter.pointwise_add_map_is_add_monoid_hom + theorem filter.pointwise_mul_map_is_monoid_hom - def filter.pointwise_mul_map_is_monoid_hom Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideals.lean +/- theorem ideal.is_coprime_def +/- theorem ideal.is_coprime_self +/- theorem ideal.mem_span_pair + theorem ideal.zero_ne_one_of_proper - def ideal.zero_ne_one_of_proper Modified src/ring_theory/power_series.lean + theorem mv_power_series.is_local_ring - def mv_power_series.is_local_ring Modified src/set_theory/ordinal.lean + def embedding_to_cardinal + theorem nonempty_embedding_to_cardinal +/- def ordinal.div_def Modified src/set_theory/pgame.lean + theorem pgame.add_zero_equiv - def pgame.add_zero_equiv + theorem pgame.subsequent.left_move - def pgame.subsequent.left_move + theorem pgame.subsequent.right_move - def pgame.subsequent.right_move + theorem pgame.zero_add_equiv - def pgame.zero_add_equiv Modified src/set_theory/surreal.lean + theorem pgame.numeric.move_left - def pgame.numeric.move_left + theorem pgame.numeric.move_right - def pgame.numeric.move_right Modified src/set_theory/zfc.lean Modified src/tactic/doc_blame.lean Modified src/tactic/monotonicity/interactive.lean + def tactic.interactive.apply_rel - theorem tactic.interactive.apply_rel Modified src/tactic/omega/clause.lean + theorem omega.clause.holds_append - def omega.clause.holds_append Modified src/tactic/omega/coeffs.lean + theorem omega.coeffs.val_between_set - def omega.coeffs.val_between_set + theorem omega.coeffs.val_except_add_eq - def omega.coeffs.val_except_add_eq + theorem omega.coeffs.val_set - def omega.coeffs.val_set Modified src/tactic/omega/nat/form.lean + theorem omega.nat.form.holds_constant - def omega.nat.form.holds_constant Modified src/tactic/omega/nat/preterm.lean + theorem omega.nat.preterm.val_constant - def omega.nat.preterm.val_constant Modified src/tactic/ring.lean +/- theorem tactic.ring.pow_add_rev 2019-09-21 06:12:35 65bf45c fix(category_theory/finite_limits): fix definition, and construct from finite products and equalizers (#1427) * chore(category_theory): require morphisms live in Type * move back to Type * fix(category_theory/finite_limits): fix definition, and construct from finite products and equalizers * fixes * fix duplicate name * make fin_category a mixin * fix * fix * oops * fixes * oops missing universe change * finish documentation * fix namespace * move variables to the right place * don't repeat yourself * update module doc-string now that the files have been merged * inlining has_limit instances ESTIMATED CHANGES Modified src/category_theory/discrete_category.lean Deleted src/category_theory/limits/shapes/constructions/finite_limits.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean - def category_theory.limits.equalizer_diagram.cones_hom - def category_theory.limits.equalizer_diagram.cones_inv - def category_theory.limits.equalizer_diagram.cones_iso - def category_theory.limits.equalizer_diagram + def category_theory.limits.finite_limits_from_equalizers_and_finite_products + def category_theory.limits.has_limit_of_has_products_of_has_equalizers.cones_hom + def category_theory.limits.has_limit_of_has_products_of_has_equalizers.cones_inv + def category_theory.limits.has_limit_of_has_products_of_has_equalizers.cones_iso + def category_theory.limits.has_limit_of_has_products_of_has_equalizers.diagram Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean 2019-09-21 00:47:17 9c89fa5 feat(tactic/interactive): add fconstructor (#1467) ESTIMATED CHANGES Modified src/tactic/interactive.lean 2019-09-20 11:08:05 708a28c chore(algebra/group/units): use `def to_units` instead of `has_lift` (#1431) * chore(algebra/group/units): use `def to_units` instead of `has_lift` * Move, upgrade to `mul_equiv`, add documentation ESTIMATED CHANGES Modified src/algebra/group/units.lean Modified src/data/equiv/algebra.lean + def to_units 2019-09-20 03:28:58 bfe9c6c chore(data/pfun): run `#sanity_check` (#1463) ESTIMATED CHANGES Modified src/data/pfun.lean + theorem pfun.ext' - def pfun.ext' + theorem pfun.ext - def pfun.ext + def pfun.fix_induction - theorem pfun.fix_induction + theorem pfun.mem_preimage - def pfun.mem_preimage + theorem roption.ext' - def roption.ext' + theorem roption.ext - def roption.ext 2019-09-19 15:32:04 ce105fd chore(algebra/group): rename `as_monoid_hom` into `monoid_hom.of`, define `ring_hom.of` (#1443) * chore(algebra/group): rename `as_monoid_hom` into `monoid_hom.of` This is similar to `Mon.of` etc. * Fix compile * Docs, missing universe * Move variables declaration up as suggested by @jcommelin * doc-string ESTIMATED CHANGES Modified src/algebra/associated.lean Modified src/algebra/group/hom.lean - def as_monoid_hom - theorem coe_as_monoid_hom + theorem monoid_hom.coe_of + def monoid_hom.of Modified src/algebra/group/units_hom.lean Modified src/algebra/ring.lean +/- theorem ring_hom.coe_of +/- def ring_hom.of 2019-09-19 13:17:33 d910283 chore(category_theory/endomorphism): make `map_End` and `map_Aut` use bundled homs (#1461) * Migrate `functor.map_End` and `functor.map_Aut` to bundled homs Adjust implicit arguments of `iso.ext` * Add docstrings ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean +/- def category_theory.functor.map_Aut +/- def category_theory.functor.map_End Modified src/category_theory/isomorphism.lean + theorem category_theory.functor.map_iso_refl +/- theorem category_theory.iso.ext +/- theorem category_theory.iso.self_symm_id +/- theorem category_theory.iso.symm_self_id 2019-09-19 13:21:35+02:00 1b8285e chore(readme): Add new maintainers [ci skip] ESTIMATED CHANGES Modified README.md 2019-09-19 02:38:18 b11f0f1 refactor(category_theory): refactor concrete categories (#1380) * trying to use bundled homs * bundled monoids should use bundled homs * fixes * fixes * refactor(*): rewrite concrete categories * Add module documentation * local instance * Move files around; don't touch content yet * Move code around, fix some compile errors * Add `unbundled_hom.lean` * Turn `hom` into an argument of `(un)bundled_hom` For some reason, it helps Lean find coercions from `Ring` category morphisms to functions. * Define `unbundled_hom.mk_has_forget`; fix compile * Add some documentation * Fix compile * chore(category_theory): require morphisms live in Type * move back to Type * tweaks to doc-comments * fixing some formatting * Revert most of the changes to `data/mv_polynomials` * Drop unused argument, add a comment * Simplify universe levels in `concrete_category/basic`. Still fails to compile. * Simplify universe levels in `concrete_category/{un,}bundled_hom` * fixes * Fix an `import` * Doc cleanup * update post #1412 * Drop `simp` * Rename variable Co-Authored-By: Johan Commelin * Rename variable Co-Authored-By: Johan Commelin * Fix more issues reported by @rwbarton * Rename variable Co-Authored-By: Reid Barton * Use `subtype.eq` instead of `subtype.ext.2` * Cleanup * Fix compile: now `ring_hom.ext` takes fewer explicit args * Fix compile * Run `sanity_check` on all files modified in this branch * Fix most of the issues reported * Except for the old ones in `mv_polynomial` (postponed to a separate PR) and a false positive in `single_obj` * Review `∀` vs `Π` * Remove some unnecessary parentheses * add comment * punit_instances: no need to explicitly provide constants and operations * Rename `has_forget` to `has_forget₂` * add comment, simplify comm_ring punit * Drop `private def free_obj` * documentation * fix comment * tweaks * comments * documentation on touched files * many doc-strings ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/category/CommRing/adjunctions.lean +/- def CommRing.adj + theorem CommRing.free_map_coe - theorem CommRing.free_map_val + theorem CommRing.free_obj_coe - theorem CommRing.free_obj_α - def CommRing.hom_equiv Modified src/algebra/category/CommRing/basic.lean - def CommRing.Int.cast - def CommRing.Int.hom_unique + theorem CommRing.comp_eq - def CommRing.forget + theorem CommRing.forget_map_eq_coe + theorem CommRing.forget_obj_eq_coe - def CommRing.forget_to_CommMon + theorem CommRing.id_eq - def CommRing.is_comm_ring_hom +/- def CommRing.of - def CommRing.to_Ring + def CommSemiRing.of + def CommSemiRing - def Ring.forget +/- def Ring.of + def SemiRing.of + def SemiRing Modified src/algebra/category/CommRing/colimits.lean +/- def CommRing.colimits.colimit - theorem CommRing.colimits.naturality_bundled Modified src/algebra/category/CommRing/limits.lean - def CommRing.limit - def CommRing.limit_is_limit Modified src/algebra/category/Group.lean - def AddCommGroup.forget_to_Group - def AddCommGroup.is_add_comm_group_hom - def AddCommGroup.of - def AddCommGroup + def CommGroup.of + def CommGroup +/- def Group.of +/- def Group Modified src/algebra/category/Mon/basic.lean - def CommMon.forget - def CommMon.forget_to_Mon - def CommMon.is_comm_monoid_hom +/- def CommMon.of +/- def CommMon - def Mon.forget - def Mon.hom_equiv_monoid_hom +/- def Mon.of +/- def Mon Modified src/algebra/category/Mon/colimits.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring.lean + theorem is_ring_hom.of_semiring - def is_ring_hom.of_semiring + theorem ring_hom.coe_comp + theorem ring_hom.coe_of +/- def ring_hom.comp + def ring_hom.of Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/category/Cat.lean +/- def category_theory.Cat.of Modified src/category_theory/category/Groupoid.lean +/- def category_theory.Groupoid.of Deleted src/category_theory/concrete_category.lean - theorem category_theory.bundled.bundled_hom_coe - theorem category_theory.bundled.coe_comp - theorem category_theory.bundled.coe_id - theorem category_theory.bundled.concrete_category_comp - theorem category_theory.bundled.concrete_category_id - theorem category_theory.bundled.hom_ext - def category_theory.bundled.map - structure category_theory.bundled - structure category_theory.concrete_category - def category_theory.concrete_functor - def category_theory.forget - def category_theory.mk_ob Added src/category_theory/concrete_category/basic.lean + def category_theory.forget + def category_theory.forget₂ + def category_theory.has_forget₂.mk' Added src/category_theory/concrete_category/bundled.lean + def category_theory.bundled.map + def category_theory.bundled.of + structure category_theory.bundled Added src/category_theory/concrete_category/bundled_hom.lean + theorem category_theory.bundled_hom.coe_comp + theorem category_theory.bundled_hom.coe_id + def category_theory.bundled_hom.full_subcategory_has_forget₂ + def category_theory.bundled_hom.has_coe_to_fun + def category_theory.bundled_hom.mk_has_forget₂ + structure category_theory.bundled_hom Added src/category_theory/concrete_category/default.lean Added src/category_theory/concrete_category/unbundled_hom.lean + def category_theory.unbundled_hom.mk_has_forget₂ Modified src/category_theory/fully_faithful.lean + theorem category_theory.faithful.div_comp + theorem category_theory.faithful.div_faithful + theorem category_theory.faithful.of_comp + theorem category_theory.faithful.of_comp_eq + theorem category_theory.functor.injectivity - def category_theory.functor.injectivity + theorem category_theory.preimage_iso_map_iso Modified src/category_theory/functor.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/single_obj.lean Modified src/data/mv_polynomial.lean + def mv_polynomial.hom_equiv Modified src/logic/function.lean + theorem function.injective.of_comp + theorem function.surjective.of_comp Modified src/measure_theory/category/Meas.lean +/- def Borel +/- def Meas.of Modified src/topology/category/Top/adjunctions.lean +/- def Top.adj₁ +/- def Top.adj₂ Modified src/topology/category/Top/basic.lean - def Top.forget + theorem Top.id_app Modified src/topology/category/Top/epi_mono.lean Modified src/topology/category/Top/limits.lean Modified src/topology/category/TopCommRing.lean - def TopCommRing.forget - def TopCommRing.forget_to_CommRing - def TopCommRing.forget_to_Top - def TopCommRing.forget_to_Type_via_CommRing - def TopCommRing.forget_to_Type_via_Top Modified src/topology/category/UniformSpace.lean - def CpltSepUniformSpace.forget - def CpltSepUniformSpace.forget_to_Type_via_UniformSpace - def CpltSepUniformSpace.forget_to_UniformSpace + theorem UniformSpace.coe_comp + theorem UniformSpace.coe_id + theorem UniformSpace.coe_mk +/- def UniformSpace.completion_hom - def UniformSpace.forget - def UniformSpace.forget_to_Top - def UniformSpace.forget_to_Type_via_Top + theorem UniformSpace.hom_ext Modified src/topology/sheaves/presheaf_of_functions.lean +/- def Top.CommRing_yoneda + theorem Top.continuous_functions.zero Modified src/topology/uniform_space/basic.lean +/- theorem uniform_continuous.comp 2019-09-18 17:59:44 066d053 chore(topology/maps): a few tweaks to open_embedding and closed embeddings (#1459) * chore(topology/maps): a few tweaks to open_embedding and closed embeddings aligning them with recent modification to embedding. From the perfectoid project. * chore(topology/maps): add missing empty line ESTIMATED CHANGES Modified src/topology/maps.lean +/- theorem closed_embedding.closed_iff_image_closed +/- theorem closed_embedding.closed_iff_preimage_closed + theorem closed_embedding.continuous +/- theorem closed_embedding.is_closed_map + structure closed_embedding - def closed_embedding +/- theorem closed_embedding_of_continuous_injective_closed +/- theorem closed_embedding_of_embedding_closed + theorem open_embedding.comp + theorem open_embedding.continuous + structure open_embedding - def open_embedding - theorem open_embedding_compose + theorem subtype_val.closed_embedding + theorem subtype_val.open_embedding 2019-09-18 15:46:57 08390f5 refactor(algebra/big_operators,data/finset): use `finset.disjoint` in definitions (#1456) * Use `finset.disjoint` in `algebra/big_operators` * New lemma `disjoint_filter` It should be a painless step from using `filter_inter_filter_neg_eq` to using this lemma * Update other dependencies of finset.prod_union and finset.prod_bind * Reformat some lines to make them fit within 100 characters * We can actually do away with two non-terminal `simp`s now ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_union Modified src/data/finset.lean + theorem finset.disjoint_filter Modified src/data/nat/totient.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/group_theory/order_of_element.lean Modified src/topology/algebra/infinite_sum.lean 2019-09-18 15:43:01+02:00 b51978d chore(data/mllist): Typo in author name [ci skip] (#1458) ESTIMATED CHANGES Modified src/data/mllist.lean 2019-09-18 15:40:20+02:00 874a15a Update lattice.lean (#1457) ESTIMATED CHANGES Modified src/data/set/lattice.lean 2019-09-17 18:02:24 b41277c feat(set_theory/game): the theory of combinatorial games (#1274) * correcting definition of addition, and splitting content into two files, one about games, one about surreals * add_le_zero_of_le_zero, but without well-foundedness * progress * Mario's well-foundedness proof * getting there! * success! * minor * almost there * progress * off to write some tactics * not quite there * hmmm * getting there! * domineering is hard * removing unneeded theorems * cleanup * add_semigroup surreal * cleanup * short proof * cleaning up * remove equiv_rw * move lemmas about pempty to logic.basic * slightly more comments; still lots to go * documentation * finishing documentation * typo * Update src/logic/basic.lean Co-Authored-By: Rob Lewis * fix references * oops * change statement of equiv.refl_symm * more card_erase lemmas; golf domineering proofs * style changes * fix comment * fixes after Reid's review * some improvements * golfing * subsingleton short * diagnosing decidable * hmmmhmmm * computational domineering * fix missing proofs (need golfing?) * minor * short_of_relabelling * abbreviating * various minor * removing short games and domineering from this PR * style / proof simplification / golfing * some minor golfing * adding Reid to the author line * add @[simp] * adding two lemmas characterising the order relation * separating out game and pgame, and discarding lame lemmas * comment * fixes ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/ordered_group.lean + def ordered_comm_group.mk' Modified src/data/equiv/basic.lean + theorem equiv.refl_symm + theorem equiv.sum_congr_symm Modified src/data/finset.lean + theorem finset.card_erase_le + theorem finset.card_erase_lt_of_mem + theorem finset.card_ne_zero_of_mem Modified src/data/multiset.lean + theorem multiset.card_erase_le + theorem multiset.card_erase_lt_of_mem Modified src/linear_algebra/dimension.lean Modified src/logic/basic.lean + theorem exists_pempty + theorem forall_pempty - theorem nonempty_pempty + theorem not_nonempty_pempty Added src/set_theory/game.lean + def game.add + theorem game.add_assoc + theorem game.add_comm + theorem game.add_le_add_left + theorem game.add_left_neg + theorem game.add_zero + def game.game_partial_order + def game.le + theorem game.le_antisymm + theorem game.le_refl + theorem game.le_trans + def game.lt + def game.neg + theorem game.not_le + def game.ordered_comm_group_game + theorem game.zero_add + def game Added src/set_theory/pgame.lean + def pgame.add + theorem pgame.add_assoc_equiv + def pgame.add_assoc_relabelling + theorem pgame.add_comm_equiv + theorem pgame.add_comm_le + def pgame.add_comm_relabelling + theorem pgame.add_congr + theorem pgame.add_le_add_left + theorem pgame.add_le_add_right + theorem pgame.add_left_neg_equiv + theorem pgame.add_left_neg_le_zero + theorem pgame.add_lt_add_left + theorem pgame.add_lt_add_right + theorem pgame.add_move_left_inl + theorem pgame.add_move_left_inr + theorem pgame.add_move_right_inl + theorem pgame.add_move_right_inr + theorem pgame.add_right_neg_le_zero + def pgame.add_zero_equiv + def pgame.add_zero_relabelling + def pgame.equiv + theorem pgame.equiv_of_relabelling + theorem pgame.equiv_refl + theorem pgame.equiv_symm + theorem pgame.equiv_trans + theorem pgame.le_congr + theorem pgame.le_def + theorem pgame.le_def_lt + theorem pgame.le_iff_neg_ge + theorem pgame.le_iff_sub_nonneg + def pgame.le_lt + theorem pgame.le_of_equiv_of_le + theorem pgame.le_of_le_of_equiv + theorem pgame.le_of_relabelling + theorem pgame.le_of_restricted + theorem pgame.le_refl + theorem pgame.le_trans + theorem pgame.le_trans_aux + theorem pgame.le_zero + theorem pgame.le_zero_iff_zero_le_neg + def pgame.left_moves + def pgame.left_moves_add + theorem pgame.left_moves_mk + def pgame.left_moves_neg + theorem pgame.left_response_spec + theorem pgame.lt_congr + theorem pgame.lt_def + theorem pgame.lt_def_le + theorem pgame.lt_iff_neg_gt + theorem pgame.lt_iff_sub_pos + theorem pgame.lt_irrefl + theorem pgame.lt_mk_of_le + theorem pgame.lt_of_equiv_of_lt + theorem pgame.lt_of_le_mk + theorem pgame.lt_of_le_of_lt + theorem pgame.lt_of_lt_of_equiv + theorem pgame.lt_of_lt_of_le + theorem pgame.lt_of_mk_le + theorem pgame.lt_zero + theorem pgame.mk_add_move_left_inl + theorem pgame.mk_add_move_left_inr + theorem pgame.mk_add_move_right_inl + theorem pgame.mk_add_move_right_inr + theorem pgame.mk_le_mk + theorem pgame.mk_lt_mk + theorem pgame.mk_lt_of_le + def pgame.move_left + theorem pgame.move_left_mk + theorem pgame.move_left_right_moves_neg + theorem pgame.move_left_right_moves_neg_symm + def pgame.move_right + theorem pgame.move_right_left_moves_neg + theorem pgame.move_right_mk + theorem pgame.move_right_right_moves_neg_symm + theorem pgame.ne_of_lt + def pgame.neg + theorem pgame.neg_add_le + def pgame.neg_add_relabelling + theorem pgame.neg_congr + theorem pgame.neg_def + theorem pgame.neg_neg + theorem pgame.neg_zero + theorem pgame.not_le + theorem pgame.not_le_lt + theorem pgame.not_lt + def pgame.of_lists + def pgame.omega + theorem pgame.one_left_moves + theorem pgame.one_move_left + theorem pgame.one_right_moves + def pgame.relabel + theorem pgame.relabel_move_left' + theorem pgame.relabel_move_left + theorem pgame.relabel_move_right' + theorem pgame.relabel_move_right + def pgame.relabel_relabelling + def pgame.relabelling.refl + def pgame.relabelling.symm + inductive pgame.relabelling + def pgame.restricted.refl + inductive pgame.restricted + def pgame.restricted_of_relabelling + def pgame.right_moves + def pgame.right_moves_add + theorem pgame.right_moves_mk + def pgame.right_moves_neg + theorem pgame.right_response_spec + def pgame.star + theorem pgame.star_lt_zero + def pgame.subsequent.left_move + def pgame.subsequent.right_move + inductive pgame.subsequent + theorem pgame.wf_subsequent + def pgame.zero_add_equiv + def pgame.zero_add_relabelling + theorem pgame.zero_le + theorem pgame.zero_le_add_left_neg + theorem pgame.zero_le_add_right_neg + theorem pgame.zero_le_iff_neg_le_zero + theorem pgame.zero_left_moves + theorem pgame.zero_lt + theorem pgame.zero_lt_star + theorem pgame.zero_right_moves + inductive pgame Modified src/set_theory/surreal.lean - def pSurreal.add - def pSurreal.equiv - theorem pSurreal.equiv_refl - theorem pSurreal.equiv_symm - theorem pSurreal.equiv_trans - def pSurreal.inv' - def pSurreal.inv_val - theorem pSurreal.le_congr - def pSurreal.le_lt - theorem pSurreal.le_of_lt - theorem pSurreal.le_refl - theorem pSurreal.le_trans - theorem pSurreal.le_trans_aux - theorem pSurreal.lt_asymm - theorem pSurreal.lt_congr - theorem pSurreal.lt_iff_le_not_le - theorem pSurreal.lt_irrefl - theorem pSurreal.lt_mk_of_le - theorem pSurreal.lt_of_le_mk - theorem pSurreal.lt_of_mk_le - theorem pSurreal.mk_le_mk - theorem pSurreal.mk_lt_mk - theorem pSurreal.mk_lt_of_le - def pSurreal.mul - theorem pSurreal.ne_of_lt - def pSurreal.neg - theorem pSurreal.not_le - theorem pSurreal.not_le_lt - theorem pSurreal.not_lt - def pSurreal.ok - theorem pSurreal.ok_rec - def pSurreal.omega - inductive pSurreal.{u} + theorem pgame.add_lt_add + def pgame.inv' + inductive pgame.inv_ty + def pgame.inv_val + theorem pgame.le_of_lt + theorem pgame.lt_asymm + theorem pgame.lt_iff_le_not_le + def pgame.mul + theorem pgame.numeric.le_move_right + theorem pgame.numeric.lt_move_right + def pgame.numeric.move_left + theorem pgame.numeric.move_left_le + theorem pgame.numeric.move_left_lt + def pgame.numeric.move_right + def pgame.numeric + theorem pgame.numeric_add + theorem pgame.numeric_neg + theorem pgame.numeric_one + theorem pgame.numeric_rec + theorem pgame.numeric_zero + def surreal.add + theorem surreal.add_assoc +/- def surreal.equiv +/- def surreal.lift +/- def surreal.lift₂ +/- def surreal.mk - inductive {u} 2019-09-17 15:50:00 19a246c fix(category_theory): require morphisms are in Type, again (#1412) * chore(category_theory): require morphisms live in Type * move back to Type * fixes ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category/Cat.lean Modified src/category_theory/category/Groupoid.lean Modified src/category_theory/category/default.lean +/- def category_theory.large_category +/- def category_theory.small_category Modified src/category_theory/comma.lean +/- def category_theory.over +/- def category_theory.under Modified src/category_theory/conj.lean Modified src/category_theory/core.lean Modified src/category_theory/currying.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/endomorphism.lean +/- def category_theory.Aut +/- def category_theory.End Modified src/category_theory/functor_category.lean Modified src/category_theory/groupoid.lean +/- def category_theory.large_groupoid +/- def category_theory.small_groupoid Modified src/category_theory/hom_functor.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.map_post +/- theorem category_theory.limits.colimit.pre_post +/- def category_theory.limits.is_colimit.of_faithful +/- def category_theory.limits.is_limit.of_faithful +/- theorem category_theory.limits.limit.map_post +/- theorem category_theory.limits.limit.pre_post Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/finite_limits.lean Modified src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/shapes/terminal.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean +/- def category_theory.monoidal_functor.μ_nat_iso Modified src/category_theory/monoidal/of_has_finite_products.lean Modified src/category_theory/monoidal/types.lean Modified src/category_theory/natural_transformation.lean +/- structure category_theory.nat_trans Modified src/category_theory/pempty.lean +/- def category_theory.functor.empty Modified src/category_theory/products/associator.lean Modified src/category_theory/products/basic.lean Modified src/category_theory/products/bifunctor.lean Modified src/category_theory/sums/associator.lean Modified src/category_theory/sums/basic.lean Modified src/category_theory/types.lean +/- theorem category_theory.types_comp +/- theorem category_theory.types_hom +/- theorem category_theory.types_id Modified src/category_theory/yoneda.lean +/- def category_theory.coyoneda +/- def category_theory.yoneda +/- def category_theory.yoneda_sections +/- def category_theory.yoneda_sections_small Modified src/topology/category/Top/open_nhds.lean Modified src/topology/category/Top/opens.lean Modified src/topology/sheaves/presheaf.lean Modified src/topology/sheaves/stalks.lean 2019-09-17 05:06:09 ab2c546 feat(data/quot): define `quotient.map` and `quotient.map₂` (dep: 1441) (#1442) * chore(algebra/group,logic/relator): review some explicit/implicit arguments * ring_hom.ext too * feat(data/quot): define `quotient.map` and `quotient.map₂` * Add comments * Fix a typo Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/data/quot.lean Modified src/logic/relator.lean 2019-09-17 02:44:20 d4cc179 feat(logic/basic): eq_iff_eq_cancel (#1447) * feat(logic/basic): eq_iff_eq_cancel These lemmas or not meant for `rw` but to be applied, as a sort of congruence lemma. * State lemmas as iff * Make'm simp ESTIMATED CHANGES Modified src/logic/basic.lean + theorem eq_iff_eq_cancel_left + theorem eq_iff_eq_cancel_right 2019-09-17 00:58:35 c412527 feat(data/list/sort): ordered_insert lemmas (#1437) * feat(data/list/sort): ordered_insert lemmas * add a lemma about L.tail.count ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.count_tail Modified src/data/list/sort.lean + theorem list.ordered_insert_count + theorem list.ordered_insert_length + theorem list.ordered_insert_nil + theorem list.sorted.tail 2019-09-16 23:07:50 dd0ff1c feat(data/nat/basic): dvd_add_self_{left,right} (#1448) * feat(data/nat/basic): dvd_add_self_{left,right} Two simp-lemmas of the form ```lean @[simp] protected lemma dvd_add_self_left {m n : ℕ} : m ∣ m + n ↔ m ∣ n := dvd_add_right (dvd_refl m) ``` * Oops, lemmas were protected * Provide version for rings ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem dvd_add_self_left + theorem dvd_add_self_right Modified src/data/nat/basic.lean 2019-09-16 22:49:24 929c186 fix(docs/tutorial/category_theory): fix import (#1440) * fix(docs/tutorial/category_theory): fix import * fix(.travis.yml): Travis stages to build docs/ * cache docs/ in travis build ESTIMATED CHANGES Modified .travis.yml Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean 2019-09-16 21:07:29 a3ccc7a chore(category_theory/notation): update notation for prod and coprod (#1413) * updating notation for categorical prod and coprod * update notation ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.coprod.braiding +/- def category_theory.limits.coprod.desc +/- def category_theory.limits.coprod.inl +/- def category_theory.limits.coprod.inr +/- def category_theory.limits.prod.braiding +/- def category_theory.limits.prod.fst +/- def category_theory.limits.prod.lift +/- def category_theory.limits.prod.snd 2019-09-16 16:01:04+02:00 b2b0de4 feat(algebra/group/basic): mul_left_eq_self etc (#1446) Simp-lemmas for groups of the form a * b = b ↔ a = 1. ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem mul_left_eq_self + theorem mul_right_eq_self 2019-09-16 09:26:53 d7f0e68 chore(algebra/group,logic/relator): review some explicit/implicit args (#1441) * chore(algebra/group,logic/relator): review some explicit/implicit arguments * ring_hom.ext too ESTIMATED CHANGES Modified src/algebra/group/hom.lean +/- theorem monoid_hom.ext Modified src/algebra/group/units.lean +/- theorem divp_eq_iff_mul_eq +/- theorem divp_eq_one_iff_eq +/- theorem units.ext Modified src/algebra/ring.lean +/- theorem ring_hom.ext Modified src/data/list/basic.lean Modified src/data/multiset.lean Modified src/logic/relator.lean 2019-09-14 05:00:40 81a31ca chore(data/*): flipping inequalities (#1436) * chore(data/*): flipping inequalities * some more * Update src/algebra/order_functions.lean * fixing some names * fix * fixes * fixes * making names/comments uniform * fixes * fixes * fix * rename * fixes * fixes * fix * renames * I'm so bad at this * ... * fixes ESTIMATED CHANGES Modified src/algebra/archimedean.lean - theorem pow_unbounded_of_gt_one + theorem pow_unbounded_of_one_lt Modified src/algebra/field_power.lean - theorem fpow_ge_one_of_nonneg +/- theorem fpow_le_one_of_nonpos +/- theorem fpow_nonneg_of_nonneg +/- theorem fpow_pos_of_pos + theorem one_le_fpow_of_nonneg +/- theorem one_lt_fpow +/- theorem one_lt_pow +/- theorem pow_le_max_of_min_le Modified src/algebra/floor.lean +/- theorem ceil_nonneg Modified src/algebra/gcd_domain.lean +/- theorem int.gcd_pos_of_non_zero_left +/- theorem int.gcd_pos_of_non_zero_right Modified src/algebra/group_power.lean +/- theorem add_monoid.smul_sub + theorem one_add_mul_le_pow + theorem one_add_sub_mul_le_pow - theorem pow_ge_one_add_mul - theorem pow_ge_one_add_sub_mul +/- theorem pow_sub Modified src/algebra/order.lean +/- theorem decidable.ne_iff_lt_or_gt Modified src/algebra/order_functions.lean +/- theorem abs_eq Modified src/algebra/ordered_group.lean +/- theorem le_add_of_nonneg_left' +/- theorem le_add_of_nonneg_right' Modified src/algebra/ordered_ring.lean +/- theorem le_mul_iff_one_le_left +/- theorem le_mul_iff_one_le_right - theorem le_mul_of_ge_one_left' - theorem le_mul_of_ge_one_right' + theorem le_mul_of_one_le_left' + theorem le_mul_of_one_le_right' +/- theorem lt_mul_iff_one_lt_left +/- theorem lt_mul_iff_one_lt_right - theorem lt_mul_of_gt_one_right' + theorem lt_mul_of_one_lt_right' +/- theorem mul_le_iff_le_one_left +/- theorem mul_le_iff_le_one_right +/- theorem mul_lt_iff_lt_one_left +/- theorem mul_lt_iff_lt_one_right + theorem mul_nonneg' + theorem mul_pos' - theorem zero_le_mul Modified src/analysis/convex.lean Modified src/analysis/specific_limits.lean Modified src/computability/partrec_code.lean Modified src/computability/primrec.lean Modified src/data/equiv/fin.lean Modified src/data/fin.lean +/- theorem fin.add_nat_val +/- def fin.sub_nat +/- theorem fin.sub_nat_val Modified src/data/finset.lean - theorem finset.Ico.filter_ge - theorem finset.Ico.filter_ge_of_ge - theorem finset.Ico.filter_ge_of_le_bot - theorem finset.Ico.filter_ge_of_top_le + theorem finset.Ico.filter_le + theorem finset.Ico.filter_le_of_le + theorem finset.Ico.filter_le_of_le_bot + theorem finset.Ico.filter_le_of_top_le +/- theorem finset.Ico.pred_singleton Modified src/data/fintype.lean - theorem fintype.exists_ne_of_card_gt_one + theorem fintype.exists_ne_of_one_lt_card Modified src/data/fp/basic.lean Modified src/data/int/basic.lean +/- theorem int.div_le_self +/- theorem int.div_neg' +/- theorem int.div_of_neg_of_pos +/- theorem int.div_pos_of_pos_of_dvd +/- theorem int.dvd_antisymm +/- theorem int.eq_one_of_dvd_one +/- theorem int.eq_one_of_mul_eq_one_left +/- theorem int.eq_one_of_mul_eq_one_right +/- theorem int.le_of_dvd +/- theorem int.lt_div_add_one_mul_self +/- theorem int.mod_lt_of_pos +/- theorem int.mod_nonneg +/- theorem int.mul_div_mul_of_pos +/- theorem int.mul_div_mul_of_pos_left +/- theorem int.mul_mod_mul_of_pos +/- theorem int.neg_succ_of_nat_div +/- theorem int.neg_succ_of_nat_mod Modified src/data/int/modeq.lean +/- theorem int.modeq.exists_unique_equiv +/- theorem int.modeq.exists_unique_equiv_nat Modified src/data/list/basic.lean - theorem list.Ico.filter_ge - theorem list.Ico.filter_ge_of_ge - theorem list.Ico.filter_ge_of_le_bot - theorem list.Ico.filter_ge_of_top_le + theorem list.Ico.filter_le + theorem list.Ico.filter_le_of_le + theorem list.Ico.filter_le_of_le_bot + theorem list.Ico.filter_le_of_top_le +/- theorem list.Ico.pred_singleton - theorem list.nth_ge_len + theorem list.nth_len_le - theorem list.take_all_of_ge + theorem list.take_all_of_le Modified src/data/multiset.lean - theorem multiset.Ico.filter_ge - theorem multiset.Ico.filter_ge_of_ge - theorem multiset.Ico.filter_ge_of_le_bot - theorem multiset.Ico.filter_ge_of_top_le + theorem multiset.Ico.filter_le + theorem multiset.Ico.filter_le_of_le + theorem multiset.Ico.filter_le_of_le_bot + theorem multiset.Ico.filter_le_of_top_le +/- theorem multiset.Ico.pred_singleton Modified src/data/nat/basic.lean +/- theorem nat.add_pos_iff_pos_or_pos +/- theorem nat.add_pos_left +/- theorem nat.add_pos_right +/- theorem nat.dvd_fact +/- theorem nat.fact_pos +/- theorem nat.le_induction +/- theorem nat.le_mul_of_pos_left +/- theorem nat.le_mul_of_pos_right +/- theorem nat.lt_pow_self +/- theorem nat.not_pos_pow_dvd +/- theorem nat.pos_iff_ne_zero +/- theorem nat.pow_lt_pow_succ +/- theorem nat.pow_pos Modified src/data/nat/cast.lean +/- theorem nat.cast_pred Modified src/data/nat/dist.lean +/- theorem nat.dist_pos_of_ne Modified src/data/nat/gcd.lean +/- theorem nat.coprime_div_gcd_div_gcd +/- theorem nat.coprime_of_dvd +/- theorem nat.exists_coprime' +/- theorem nat.exists_coprime +/- theorem nat.gcd_le_left +/- theorem nat.gcd_le_right +/- theorem nat.gcd_pos_of_pos_left +/- theorem nat.gcd_pos_of_pos_right +/- theorem nat.not_coprime_of_dvd_of_dvd Modified src/data/nat/modeq.lean Modified src/data/nat/pairing.lean +/- theorem nat.unpair_lt Modified src/data/nat/parity.lean +/- theorem nat.even_sub Modified src/data/nat/prime.lean - theorem nat.dvd_prime_ge_two + theorem nat.dvd_prime_two_le +/- theorem nat.exists_dvd_of_not_prime2 +/- theorem nat.exists_dvd_of_not_prime +/- theorem nat.exists_infinite_primes +/- theorem nat.exists_prime_and_dvd +/- theorem nat.min_fac_aux_has_prop +/- theorem nat.min_fac_le +/- theorem nat.min_fac_le_of_dvd +/- theorem nat.min_fac_pos +/- theorem nat.not_prime_iff_min_fac_lt - theorem nat.prime.ge_two - theorem nat.prime.gt_one + theorem nat.prime.one_lt +/- theorem nat.prime.pos +/- theorem nat.prime.pred_pos + theorem nat.prime.two_le +/- def nat.prime +/- theorem nat.prime_def_le_sqrt +/- theorem nat.prime_def_lt' +/- theorem nat.prime_def_lt +/- theorem nat.prime_def_min_fac Modified src/data/nat/sqrt.lean +/- theorem nat.sqrt_lt_self +/- theorem nat.sqrt_pos Modified src/data/nat/totient.lean Modified src/data/num/lemmas.lean +/- theorem pos_num.cast_pos +/- theorem pos_num.to_nat_pos Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pnat/basic.lean +/- def nat.to_pnat +/- theorem pnat.pos +/- theorem pnat.sub_coe +/- theorem pnat.to_pnat'_coe +/- def pnat Modified src/data/polynomial.lean Modified src/data/rat/basic.lean Modified src/data/rat/order.lean +/- theorem rat.mk_nonneg Modified src/data/real/irrational.lean Modified src/data/real/nnreal.lean Modified src/data/zmod/basic.lean Modified src/data/zmod/quadratic_reciprocity.lean Modified src/data/zsqrtd/basic.lean +/- theorem zsqrtd.not_sq_le_succ Modified src/data/zsqrtd/gaussian_int.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/sylow.lean Modified src/number_theory/sum_two_squares.lean 2019-09-13 07:38:04 e3234f0 feat(algebra/ring): add coercions from →+* to →* and →+ (#1435) * feat(algebra/ring): add coercions from →+* to →* and →+ * two lemmas simplifying casts * add squash_cast attributes ESTIMATED CHANGES Modified src/algebra/ring.lean + theorem coe_add_monoid_hom + theorem coe_monoid_hom 2019-09-11 23:51:16 590fb89 chore(category_theory/functor_category): improve comment warning about hcomp_assoc [ci skip] (#1434) * expanding comment * no scare quotes ESTIMATED CHANGES Modified src/category_theory/functor_category.lean 2019-09-11 17:42:41 140a606 feat(well_founded_tactics): patch default_dec_tac (#1419) * let simp flip inequalities * feat(well_founded_tactics): patch default_dec_tac * Keeley's suggested syntax, and adding to the docs * more * add docs ESTIMATED CHANGES Modified docs/extras/well_founded_recursion.md Modified docs/tactics.md Modified src/computability/partrec_code.lean Modified src/data/hash_map.lean Modified src/data/list/basic.lean Modified src/data/list/sort.lean Modified src/data/nat/basic.lean + theorem nat.succ_pos' Modified src/data/vector2.lean +/- theorem vector.nth_map Modified src/set_theory/lists.lean Modified src/tactic/basic.lean Added src/tactic/well_founded_tactics.lean 2019-09-11 12:46:21 e27142a chore(*): renaming files constructing category instances (#1432) ESTIMATED CHANGES Deleted src/algebra/CommRing/default.lean Deleted src/algebra/Mon/default.lean Renamed src/algebra/CommRing/adjunctions.lean to src/algebra/category/CommRing/adjunctions.lean Renamed src/algebra/CommRing/basic.lean to src/algebra/category/CommRing/basic.lean Renamed src/algebra/CommRing/colimits.lean to src/algebra/category/CommRing/colimits.lean Added src/algebra/category/CommRing/default.lean Renamed src/algebra/CommRing/limits.lean to src/algebra/category/CommRing/limits.lean Renamed src/group_theory/category.lean to src/algebra/category/Group.lean Renamed src/algebra/Mon/basic.lean to src/algebra/category/Mon/basic.lean Renamed src/algebra/Mon/colimits.lean to src/algebra/category/Mon/colimits.lean Added src/algebra/category/Mon/default.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/category/fold.lean Renamed src/category_theory/Cat.lean to src/category_theory/category/Cat.lean Renamed src/category_theory/groupoid_category.lean to src/category_theory/category/Groupoid.lean Renamed src/category_theory/instances/kleisli.lean to src/category_theory/category/Kleisli.lean Renamed src/category_theory/instances/rel.lean to src/category_theory/category/Rel.lean Renamed src/category_theory/category.lean to src/category_theory/category/default.lean Modified src/category_theory/single_obj.lean Renamed src/measure_theory/Meas.lean to src/measure_theory/category/Meas.lean Modified src/measure_theory/giry_monad.lean Deleted src/topology/Top/default.lean Deleted src/topology/algebra/TopCommRing/default.lean Renamed src/topology/Top/adjunctions.lean to src/topology/category/Top/adjunctions.lean Renamed src/topology/Top/basic.lean to src/topology/category/Top/basic.lean Added src/topology/category/Top/default.lean Renamed src/topology/Top/epi_mono.lean to src/topology/category/Top/epi_mono.lean Renamed src/topology/Top/limits.lean to src/topology/category/Top/limits.lean Renamed src/topology/Top/open_nhds.lean to src/topology/category/Top/open_nhds.lean Renamed src/topology/Top/opens.lean to src/topology/category/Top/opens.lean Renamed src/topology/algebra/TopCommRing/basic.lean to src/topology/category/TopCommRing.lean Renamed src/topology/uniform_space/UniformSpace.lean to src/topology/category/UniformSpace.lean Renamed src/topology/Top/presheaf.lean to src/topology/sheaves/presheaf.lean Renamed src/topology/Top/presheaf_of_functions.lean to src/topology/sheaves/presheaf_of_functions.lean Renamed src/topology/Top/stalks.lean to src/topology/sheaves/stalks.lean 2019-09-11 03:52:18 8a5156f fix(algebra/*/colimits): avoid explicit `infer_instance` (#1430) With an explicit universe level Lean can do it automatically. ESTIMATED CHANGES Modified src/algebra/CommRing/colimits.lean Modified src/algebra/Mon/colimits.lean 2019-09-11 01:49:04 45fe081 feat(logic): make some decidability proofs [inline] (#1393) * feat(logic): make some decidability proofs [inline] * inline more decidability proofs * test * import logic.basic in test ESTIMATED CHANGES Modified src/logic/basic.lean Added test/logic_inline.lean 2019-09-10 23:38:55 8e46fa5 chore(algebra/group/to_additive): map_namespace should make a meta constant (#1409) * chore(algebra/group/to_additive): map_namespace should make a meta constance `map_namespace` now produces a `meta constant` instead of a constant. This means that after importing `group_theory/coset` and typing `#print axioms`, `quotient_group._to_additive` is not in the list, since it is now a `meta constant`. This is a little bit neater, and it doesn't look like we're adding any axioms. * Update to_additive.lean * Update to_additive.lean ESTIMATED CHANGES Modified src/algebra/group/to_additive.lean 2019-09-10 22:44:22 e2f904e feat(tactic/auto_cases): run auto_cases on false and psigma (#1428) ESTIMATED CHANGES Modified src/tactic/auto_cases.lean 2019-09-10 19:55:17 c87ec0e feat(tactic/{abel,ring}): state conditions of tactics more precisely (#1423) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/abel.lean Modified src/tactic/ring.lean Added test/abel.lean 2019-09-10 15:33:29 2dd6398 let simp flip inequalities (#1418) ESTIMATED CHANGES Modified src/algebra/order.lean + theorem ge_iff_le + theorem gt_iff_lt Modified src/data/rat/order.lean Modified src/number_theory/pell.lean Modified src/tactic/linarith.lean 2019-09-10 11:26:37 0935e8b feat(algebra/group/units): add some lemmas about `divp` (#1388) * feat(algebra/group/units): add some lemmas about `divp` * Rename lemmas, add new ones ESTIMATED CHANGES Modified src/algebra/group/units.lean + theorem divp_divp_eq_divp_mul + theorem divp_eq_divp_iff + theorem divp_eq_iff_mul_eq - theorem divp_eq_one + theorem divp_eq_one_iff_eq + theorem divp_inv + theorem divp_mul_divp 2019-09-10 09:32:30 fe1575a chore(topology): sanity_check pass (#1416) * chore(topology): sanity_check pass * improvement * avoid _inst_3 to recover instance ESTIMATED CHANGES Modified src/analysis/asymptotics.lean +/- theorem asymptotics.is_o_iff_tendsto Modified src/analysis/convex.lean +/- theorem convex_on_sum Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem is_bounded_linear_map.is_O_comp Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.is_O_comp Modified src/logic/basic.lean +/- theorem ball_of_forall +/- theorem not_iff Modified src/meta/rb_map.lean Modified src/order/basic.lean + theorem antisymm_of_asymm - def antisymm_of_asymm +/- theorem comp_le_comp_left_of_monotone +/- theorem dense_or_discrete Modified src/order/bounded_lattice.lean +/- theorem with_top.coe_ne_top +/- theorem with_top.top_ne_coe Modified src/order/complete_lattice.lean + theorem lattice.has_Inf_to_nonempty - def lattice.has_Inf_to_nonempty + theorem lattice.has_Sup_to_nonempty - def lattice.has_Sup_to_nonempty +/- theorem lattice.insert_of_has_insert Modified src/order/conditionally_complete_lattice.lean +/- theorem lattice.cInf_interval +/- theorem lattice.cSup_interval Modified src/order/filter/partial.lean + theorem filter.mem_pmap - def filter.mem_pmap + theorem filter.mem_rcomap' - def filter.mem_rcomap' Modified src/order/liminf_limsup.lean +/- theorem filter.liminf_le_liminf +/- theorem filter.liminf_le_limsup +/- theorem filter.limsup_le_limsup Modified src/order/order_iso.lean + def order_embedding.nat_gt - theorem order_embedding.nat_gt + def order_embedding.nat_lt - theorem order_embedding.nat_lt +/- theorem order_embedding.well_founded_iff_no_descending_seq + def order_iso.prod_lex_congr - theorem order_iso.prod_lex_congr + def order_iso.sum_lex_congr - theorem order_iso.sum_lex_congr Modified src/topology/algebra/group.lean + theorem nhds_is_mul_hom - def nhds_is_mul_hom +/- theorem quotient_group_saturate Modified src/topology/algebra/infinite_sum.lean +/- theorem has_sum_hom Modified src/topology/algebra/module.lean +/- theorem continuous_linear_map.coe_add' +/- theorem continuous_linear_map.coe_add +/- theorem continuous_linear_map.coe_apply' +/- theorem continuous_linear_map.coe_apply +/- theorem continuous_linear_map.coe_neg' +/- theorem continuous_linear_map.coe_neg +/- theorem continuous_linear_map.coe_sub' +/- theorem continuous_linear_map.coe_sub Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/ring.lean +/- theorem quotient_ring_saturate Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean +/- theorem mem_closure +/- theorem tendsto_pure_nhds Modified src/topology/constructions.lean +/- theorem continuous_at_subtype_val +/- def dense_embedding.subtype_emb +/- theorem dense_range_prod +/- theorem diagonal_eq_range_diagonal_map +/- theorem is_closed_diagonal +/- theorem is_closed_eq +/- theorem is_closed_prod +/- theorem is_closed_property +/- theorem list.continuous_at_length +/- theorem list.tendsto_cons +/- theorem list.tendsto_cons_iff +/- theorem list.tendsto_insert_nth +/- theorem list.tendsto_nhds +/- theorem locally_compact_of_compact_nhds +/- theorem mem_closure2 +/- theorem normal_of_compact_t2 +/- theorem prod_eq_generate_from +/- theorem prod_generate_from_generate_from_eq +/- theorem prod_subset_compl_diagonal_iff_disjoint +/- theorem tendsto_subtype_rng Modified src/topology/maps.lean + def dense_range.inhabited - theorem dense_range.inhabited +/- theorem embedding.map_nhds_eq + theorem embedding.mk' - def embedding.mk' +/- theorem inducing.map_nhds_eq +/- theorem inducing.nhds_eq_comap Modified src/topology/metric_space/basic.lean +/- theorem subtype.dist_eq Modified src/topology/metric_space/cau_seq_filter.lean +/- theorem sequentially_complete.B2_lim +/- theorem sequentially_complete.B2_pos Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem subtype.edist_eq Modified src/topology/metric_space/gluing.lean +/- theorem metric.glue_dist_glued_points Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean + def isometry.isometric_on_range - theorem isometry.isometric_on_range Modified src/topology/opens.lean + theorem topological_space.opens.gc - def topological_space.opens.gc Modified src/topology/order.lean + theorem continuous_iff_continuous_on_univ - def continuous_iff_continuous_on_univ +/- theorem continuous_within_at_iff_ptendsto_res +/- theorem induced_compose +/- theorem principal_subtype Modified src/topology/separation.lean Modified src/topology/subset_properties.lean +/- theorem compact_image +/- theorem compact_of_closed +/- theorem compact_range +/- theorem compact_univ Modified src/topology/uniform_space/uniform_embedding.lean 2019-09-10 01:55:13 72d6325 feat(sanity_check): greatly improve performance (#1389) * feat(sanity_check): greatly improve performance * move and rename is_in_mathlib_aux * use boolean connectives in some other places * remove some whitespace * fix parentheses, fix tests the tests correctly spotted a mistake I made * add ! as boolean negation * fix binding strength * undo the use of boolean connectives * add back notation ! for bnot ESTIMATED CHANGES Modified src/data/bool.lean Modified src/data/list/defs.lean + def list.mmap_filter Modified src/meta/expr.lean Modified src/tactic/core.lean Modified src/tactic/sanity_check.lean Modified test/sanity_check.lean 2019-09-09 21:11:13 228d5ba feat(algebra/big_operators): sum_eq_zero_iff_of_nonpos (#1424) * feat(algebra/big_operators): sum_eq_zero_iff_of_nonpos * more order_dual instances ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.sum_eq_zero_iff_of_nonpos Modified src/algebra/ordered_group.lean 2019-09-08 16:37:05 313fe11 feat(algebra/floor): Split floor from archimedean file. (#1372) * feat(algebra/floor): Split floor from archimedean file. * feat({algebra,rat}/floor): move lemmas/defs from rat.floor to algebra.floor ESTIMATED CHANGES Modified src/algebra/archimedean.lean - theorem abs_sub_lt_one_of_floor_eq_floor - def ceil - theorem ceil_add_int - theorem ceil_coe - theorem ceil_le - theorem ceil_lt_add_one - theorem ceil_mono - theorem ceil_nonneg - theorem ceil_pos - theorem ceil_sub_int - theorem ceil_zero - def floor - theorem floor_add_fract - theorem floor_add_int - theorem floor_coe - theorem floor_eq_iff - theorem floor_fract - theorem floor_le - theorem floor_lt - theorem floor_mono - theorem floor_nonneg - theorem floor_one - theorem floor_sub_int - theorem floor_zero - def fract - theorem fract_add - theorem fract_add_floor - theorem fract_coe - theorem fract_eq_fract - theorem fract_eq_iff - theorem fract_floor - theorem fract_fract - theorem fract_lt_one - theorem fract_mul_nat - theorem fract_nonneg - theorem fract_zero - theorem le_ceil - theorem le_floor - theorem lt_ceil - theorem lt_floor_add_one - theorem lt_succ_floor - theorem sub_one_lt_floor Added src/algebra/floor.lean + theorem abs_sub_lt_one_of_floor_eq_floor + def ceil + theorem ceil_add_int + theorem ceil_coe + theorem ceil_le + theorem ceil_lt_add_one + theorem ceil_mono + theorem ceil_nonneg + theorem ceil_pos + theorem ceil_sub_int + theorem ceil_zero + def floor + theorem floor_add_fract + theorem floor_add_int + theorem floor_coe + theorem floor_eq_iff + theorem floor_fract + theorem floor_le + theorem floor_lt + theorem floor_mono + theorem floor_nonneg + theorem floor_one + theorem floor_ring_unique + theorem floor_sub_int + theorem floor_zero + def fract + theorem fract_add + theorem fract_add_floor + theorem fract_coe + theorem fract_eq_fract + theorem fract_eq_iff + theorem fract_floor + theorem fract_fract + theorem fract_lt_one + theorem fract_mul_nat + theorem fract_nonneg + theorem fract_zero + theorem le_ceil + theorem le_floor + theorem le_nat_ceil + theorem lt_ceil + theorem lt_floor_add_one + theorem lt_nat_ceil + theorem lt_succ_floor + def nat_ceil + theorem nat_ceil_add_nat + theorem nat_ceil_coe + theorem nat_ceil_le + theorem nat_ceil_lt_add_one + theorem nat_ceil_mono + theorem nat_ceil_zero + theorem sub_one_lt_floor Modified src/data/rat/floor.lean - def rat.ceil - theorem rat.ceil_add_int - theorem rat.ceil_coe - theorem rat.ceil_le - theorem rat.ceil_mono - theorem rat.ceil_sub_int - def rat.floor - theorem rat.floor_add_int - theorem rat.floor_coe - theorem rat.floor_def - theorem rat.floor_le - theorem rat.floor_lt - theorem rat.floor_mono - theorem rat.floor_sub_int - theorem rat.le_ceil - theorem rat.le_floor - theorem rat.le_nat_ceil - theorem rat.lt_nat_ceil - theorem rat.lt_succ_floor - def rat.nat_ceil - theorem rat.nat_ceil_add_nat - theorem rat.nat_ceil_coe - theorem rat.nat_ceil_le - theorem rat.nat_ceil_lt_add_one - theorem rat.nat_ceil_mono - theorem rat.nat_ceil_zero Modified src/tactic/norm_num.lean 2019-09-08 12:00:15 37b6746 feat(data/list/basic): make chain.nil a simp lemma (#1414) ESTIMATED CHANGES Modified src/data/list/basic.lean Modified src/data/list/defs.lean 2019-09-08 08:47:37 6f7224c feat(data/list/defs): move list.sum to list/defs.lean (#1415) * feat(data/list/defs): move list.sum to list/defs.lean * add comment ESTIMATED CHANGES Modified src/data/list/basic.lean Modified src/data/list/defs.lean + def list.sum 2019-09-08 06:22:25 8bdb147 feat(topology/local_homeomorph): local homeomorphisms (#1398) * feat(topology/local_homeomorph): local homeomorphisms * local_homeomorph: reviewer comments ESTIMATED CHANGES Added src/topology/local_homeomorph.lean + theorem homeomorph.refl_to_local_homeomorph + theorem homeomorph.symm_to_local_homeomorph + def homeomorph.to_local_homeomorph + theorem homeomorph.to_local_homeomorph_inv_fun + theorem homeomorph.to_local_homeomorph_source + theorem homeomorph.to_local_homeomorph_target + theorem homeomorph.to_local_homeomorph_to_fun + theorem homeomorph.trans_to_local_homeomorph + theorem local_homeomorph.apply_eq_of_eq_on_source + theorem local_homeomorph.continuous_on_iff_continuous_on_comp_left + theorem local_homeomorph.continuous_on_iff_continuous_on_comp_right + theorem local_homeomorph.eq_of_eq_on_source_univ + theorem local_homeomorph.eq_of_local_equiv_eq + def local_homeomorph.eq_on_source + theorem local_homeomorph.eq_on_source_iff + theorem local_homeomorph.eq_on_source_refl + theorem local_homeomorph.eq_on_source_restr + theorem local_homeomorph.eq_on_source_symm + theorem local_homeomorph.eq_on_source_trans + theorem local_homeomorph.image_trans_source + theorem local_homeomorph.inv_apply_eq_of_eq_on_source + theorem local_homeomorph.inv_image_trans_target + def local_homeomorph.of_set + theorem local_homeomorph.of_set_inv_fun + theorem local_homeomorph.of_set_source + theorem local_homeomorph.of_set_symm + theorem local_homeomorph.of_set_target + theorem local_homeomorph.of_set_to_fun + theorem local_homeomorph.of_set_to_local_equiv + theorem local_homeomorph.of_set_trans' + theorem local_homeomorph.of_set_trans + theorem local_homeomorph.preimage_interior + def local_homeomorph.prod + theorem local_homeomorph.prod_inv_fun + theorem local_homeomorph.prod_source + theorem local_homeomorph.prod_target + theorem local_homeomorph.prod_to_fun + theorem local_homeomorph.prod_to_local_equiv + theorem local_homeomorph.refl_inv_fun + theorem local_homeomorph.refl_local_equiv + theorem local_homeomorph.refl_source + theorem local_homeomorph.refl_symm + theorem local_homeomorph.refl_target + theorem local_homeomorph.refl_to_fun + theorem local_homeomorph.refl_trans + theorem local_homeomorph.restr_eq_of_source_subset + theorem local_homeomorph.restr_inv_fun + theorem local_homeomorph.restr_open_source + theorem local_homeomorph.restr_open_to_local_equiv + theorem local_homeomorph.restr_source' + theorem local_homeomorph.restr_source + theorem local_homeomorph.restr_source_inter + theorem local_homeomorph.restr_target + theorem local_homeomorph.restr_to_fun + theorem local_homeomorph.restr_to_local_equiv' + theorem local_homeomorph.restr_to_local_equiv + theorem local_homeomorph.restr_trans + theorem local_homeomorph.restr_univ + theorem local_homeomorph.source_eq_of_eq_on_source + theorem local_homeomorph.symm_inv_fun + theorem local_homeomorph.symm_source + theorem local_homeomorph.symm_symm + theorem local_homeomorph.symm_target + theorem local_homeomorph.symm_to_fun + theorem local_homeomorph.symm_to_local_equiv + theorem local_homeomorph.target_eq_of_eq_on_source + theorem local_homeomorph.trans_assoc + theorem local_homeomorph.trans_inv_fun + theorem local_homeomorph.trans_of_set' + theorem local_homeomorph.trans_of_set + theorem local_homeomorph.trans_refl + theorem local_homeomorph.trans_self_symm + theorem local_homeomorph.trans_source'' + theorem local_homeomorph.trans_source' + theorem local_homeomorph.trans_source + theorem local_homeomorph.trans_symm_eq_symm_trans_symm + theorem local_homeomorph.trans_symm_self + theorem local_homeomorph.trans_target'' + theorem local_homeomorph.trans_target' + theorem local_homeomorph.trans_target + theorem local_homeomorph.trans_to_fun + theorem local_homeomorph.trans_to_local_equiv + structure local_homeomorph 2019-09-07 05:32:33 10cb0d1 feat(topology/constructions): distributivity of products over sums (#1059) * feat(topology/constructions): distributivity of products over sums * Update src/topology/maps.lean Co-Authored-By: sgouezel * Reverse direction of sigma_prod_distrib ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.sigma_prod_distrib Modified src/data/set/lattice.lean + theorem set.Union_image_preimage_sigma_mk_eq_self Modified src/topology/constructions.lean + def homeomorph.homeomorph_of_continuous_open + def homeomorph.sigma_prod_distrib + theorem is_open_map_sigma + theorem open_embedding_sigma_mk Modified src/topology/maps.lean + theorem closed_embedding.is_closed_map + theorem closed_embedding_of_embedding_closed + theorem open_embedding.is_open_map + theorem open_embedding.open_iff_image_open + theorem open_embedding.open_iff_preimage_open + def open_embedding + theorem open_embedding_compose + theorem open_embedding_id + theorem open_embedding_of_continuous_injective_open + theorem open_embedding_of_embedding_open 2019-09-07 05:17:43 d6a0ac5 refactor(category_theory/limits/shapes/pullbacks): proof golf (#1407) * refactor(category_theory/limits): make is_[co]limit not a class * refactor(category_theory/limits/shapes/pullbacks): proof golf ESTIMATED CHANGES Modified src/category_theory/limits/shapes/pullbacks.lean 2019-09-07 05:00:00 8eab714 refactor(category_theory/limits): make is_[co]limit not a class (#1405) ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.colimit.is_colimit + def category_theory.limits.limit.is_limit Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/terminal.lean 2019-09-06 22:20:07+02:00 a7f268b fix(category_theory/limits/shapes): doc typo [ci skip] (#1406) ESTIMATED CHANGES Modified src/category_theory/limits/shapes/binary_products.lean 2019-09-06 12:45:57+02:00 a5fa162 chore(data/mv_polynomial): use classical logic (#1391) * refactor(linear_algebra/lc): use families not sets * refactor(linear_algebra/lc): merge lc into finsupp * refactor(linear_algebra/lc): localize decidability * refactor(linear_algebra/lc): finsupp instances * refactor(linear_algebra/lc): use families instead of sets * refactor(linear_algebra/lc): remove set argument in lin_indep * refactor(linear_algebra/lc): clean up * refactor(linear_algebra/lc): more clean up * refactor(linear_algebra/lc): set_option in section * refactor(linear_algebra/lc): decidability proof * refactor(linear_algebra/lc): arrow precedence * refactor(linear_algebra/lc): more cleanup * make data.finsupp classical * trouble with data/polynomial * ... * more classical * merge * merge * merge * fix * removing more * minor * ? * progress, using convert * working? * remove some unnecessary converts * fixes * err * oops * various * various * fix free_comm_ring * remove test lines * fix linear_algebra/matrix.lean * Fix errors in power_series.lean * trying to turn instances back on * restore some instances * no joy * fix mv_polynomial errors * another convert ESTIMATED CHANGES Modified src/algebra/CommRing/adjunctions.lean Modified src/data/finsupp.lean +/- theorem finsupp.comap_domain_apply +/- theorem finsupp.count_to_multiset +/- theorem finsupp.eq_zero_of_comap_domain_eq_zero +/- def finsupp.equiv_fun_on_fintype +/- def finsupp.equiv_multiset +/- def finsupp.filter +/- theorem finsupp.filter_curry +/- theorem finsupp.filter_pos_add_filter_neg +/- theorem finsupp.filter_smul +/- def finsupp.finsupp_prod_equiv +/- theorem finsupp.map_domain_comap_domain +/- theorem finsupp.map_domain_finset_sum +/- theorem finsupp.map_domain_smul +/- theorem finsupp.map_range_add +/- theorem finsupp.map_range_finset_sum +/- theorem finsupp.mem_support_finset_sum +/- theorem finsupp.mem_support_multiset_sum +/- theorem finsupp.mem_support_single +/- def finsupp.of_multiset +/- theorem finsupp.of_multiset_apply +/- theorem finsupp.prod_finset_sum_index +/- theorem finsupp.prod_map_range_index +/- theorem finsupp.prod_single +/- def finsupp.restrict_support_equiv +/- theorem finsupp.single_finset_sum +/- theorem finsupp.single_multiset_sum +/- theorem finsupp.single_sum +/- theorem finsupp.single_swap +/- theorem finsupp.smul_single +/- def finsupp.subtype_domain +/- theorem finsupp.sum_comap_domain +/- theorem finsupp.support_curry +/- theorem finsupp.support_eq_empty +/- theorem finsupp.support_subset_iff +/- theorem finsupp.to_multiset_strict_mono Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.coeff_zero_X +/- theorem mv_polynomial.degrees_prod +/- theorem mv_polynomial.degrees_sum +/- theorem mv_polynomial.degrees_zero +/- theorem mv_polynomial.eval_assoc +/- theorem mv_polynomial.eval₂_assoc +/- theorem mv_polynomial.eval₂_cast_comp +/- theorem mv_polynomial.eval₂_hom_X +/- theorem mv_polynomial.eval₂_prod +/- theorem mv_polynomial.eval₂_sum +/- theorem mv_polynomial.map_eval₂ +/- theorem mv_polynomial.map_map +/- theorem mv_polynomial.rename_sub Modified src/data/polynomial.lean +/- theorem polynomial.coeff_C_zero +/- theorem polynomial.coeff_X +/- theorem polynomial.coeff_X_one +/- theorem polynomial.coeff_X_zero +/- theorem polynomial.coeff_one +/- theorem polynomial.coeff_one_zero +/- theorem polynomial.coeff_single +/- theorem polynomial.coeff_sum +/- theorem polynomial.degree_map' +/- theorem polynomial.degree_map_eq_of_injective +/- theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero +/- theorem polynomial.degree_map_le +/- theorem polynomial.degree_sum_le - def polynomial.div_mod_by_monic_aux +/- theorem polynomial.map_div_by_monic +/- theorem polynomial.map_map +/- theorem polynomial.map_mod_by_monic +/- theorem polynomial.map_mod_div_by_monic +/- theorem polynomial.map_neg +/- theorem polynomial.map_sub +/- theorem polynomial.monic_map +/- theorem polynomial.nat_degree_eq_of_degree_eq +/- theorem polynomial.nat_degree_map' + def polynomial.nth_roots - def polynomial.rec_on_horner Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/splitting_field.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/dual.lean Modified src/linear_algebra/finsupp.lean +/- def finsupp.lsum +/- theorem finsupp.lsum_apply +/- theorem finsupp.range_restrict_dom +/- def finsupp.restrict_dom +/- theorem finsupp.restrict_dom_apply +/- theorem finsupp.restrict_dom_comp_subtype +/- theorem finsupp.supported_eq_span_single +/- def finsupp.supported_equiv_finsupp Modified src/linear_algebra/finsupp_vector_space.lean +/- theorem finsupp.is_basis_single +/- theorem finsupp.linear_independent_single Modified src/linear_algebra/matrix.lean Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/polynomial.lean Modified src/ring_theory/power_series.lean +/- theorem power_series.coeff_mk +/- theorem power_series.coeff_trunc + theorem power_series.inv_eq_inv_aux +/- theorem power_series.monomial_zero +/- def power_series.trunc +/- theorem power_series.trunc_C +/- theorem power_series.trunc_add +/- theorem power_series.trunc_one +/- theorem power_series.trunc_zero 2019-09-05 21:37:18 1a0ed80 fix(naming): typo [ci skip] (#1401) * fix(naming): typo [ci skip] * more typos ESTIMATED CHANGES Modified docs/contribute/naming.md 2019-09-05 11:03:20 b1920f5 chore(algebra/ordered_field): add simp attributes to inv_pos' and others (#1400) ESTIMATED CHANGES Modified src/algebra/ordered_field.lean +/- theorem inv_neg' +/- theorem inv_nonneg +/- theorem inv_nonpos +/- theorem inv_pos' 2019-09-05 09:22:42 7f20843 chore(order/filter): rephrase filter.has_le (#1399) The goal of this tiny refactor is to prevent `filter.sets` leaking when proving a filter g is finer than another one f. We want the goal to be `s ∈ f → s ∈ g` instead of the definitionaly equivalent `s ∈ f.sets ∈ g.sets` ESTIMATED CHANGES Modified src/order/filter/basic.lean Modified src/order/filter/lift.lean + theorem filter.mem_lift_iff Modified src/topology/basic.lean 2019-09-05 02:48:09 2854909 feat(bounded_lattice/has_lt): add a `lt` relation independent from `l… (#1366) * feat(bounded_lattice/has_lt): add a `lt` relation independent from `le` for `has_top` * use priority 10 instead of 0 ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/order/bounded_lattice.lean + theorem with_top.none_le + theorem with_top.none_lt_some +/- theorem with_top.some_le_some +/- theorem with_top.some_lt_some 2019-09-05 00:46:57 6292825 feat(data/equiv/local_equiv): define local equivalences (#1359) * feat(data/equiv/local_equiv): define local equivalences * add doc * add extensionality attribute * sanity_check ESTIMATED CHANGES Added src/data/equiv/local_equiv.lean + theorem equiv.refl_to_local_equiv + theorem equiv.symm_to_local_equiv + def equiv.to_local_equiv + theorem equiv.to_local_equiv_inv_fun + theorem equiv.to_local_equiv_source + theorem equiv.to_local_equiv_target + theorem equiv.to_local_equiv_to_fun + theorem equiv.trans_to_local_equiv + theorem local_equiv.apply_eq_of_eq_on_source + theorem local_equiv.bij_on_source + theorem local_equiv.eq_of_eq_on_source_univ + def local_equiv.eq_on_source + theorem local_equiv.eq_on_source_preimage + theorem local_equiv.eq_on_source_refl + theorem local_equiv.eq_on_source_restr + theorem local_equiv.eq_on_source_symm + theorem local_equiv.eq_on_source_trans + theorem local_equiv.image_eq_target_inter_inv_preimage + theorem local_equiv.image_source_eq_target + theorem local_equiv.image_trans_source + theorem local_equiv.inv_apply_eq_of_eq_on_source + theorem local_equiv.inv_image_eq_source_inter_preimage + theorem local_equiv.inv_image_target_eq_source + theorem local_equiv.inv_image_trans_target + def local_equiv.of_set + theorem local_equiv.of_set_inv_fun + theorem local_equiv.of_set_source + theorem local_equiv.of_set_symm + theorem local_equiv.of_set_target + theorem local_equiv.of_set_to_fun + def local_equiv.prod + theorem local_equiv.prod_inv_fun + theorem local_equiv.prod_source + theorem local_equiv.prod_target + theorem local_equiv.prod_to_fun + theorem local_equiv.refl_inv_fun + theorem local_equiv.refl_restr_source + theorem local_equiv.refl_restr_target + theorem local_equiv.refl_source + theorem local_equiv.refl_symm + theorem local_equiv.refl_target + theorem local_equiv.refl_to_fun + theorem local_equiv.refl_trans + theorem local_equiv.restr_eq_of_source_subset + theorem local_equiv.restr_inv_fun + theorem local_equiv.restr_source + theorem local_equiv.restr_target + theorem local_equiv.restr_to_fun + theorem local_equiv.restr_trans + theorem local_equiv.restr_univ + theorem local_equiv.source_eq_of_eq_on_source + theorem local_equiv.source_inter_preimage_inv_preimage + theorem local_equiv.source_subset_preimage_target + theorem local_equiv.symm_inv_fun + theorem local_equiv.symm_source + theorem local_equiv.symm_symm + theorem local_equiv.symm_target + theorem local_equiv.symm_to_fun + theorem local_equiv.target_eq_of_eq_on_source + theorem local_equiv.target_inter_inv_preimage_preimage + theorem local_equiv.target_subset_preimage_source + theorem local_equiv.trans_apply + theorem local_equiv.trans_assoc + theorem local_equiv.trans_inv_apply + theorem local_equiv.trans_inv_fun + theorem local_equiv.trans_refl + theorem local_equiv.trans_refl_restr' + theorem local_equiv.trans_refl_restr + theorem local_equiv.trans_self_symm + theorem local_equiv.trans_source'' + theorem local_equiv.trans_source' + theorem local_equiv.trans_source + theorem local_equiv.trans_symm_eq_symm_trans_symm + theorem local_equiv.trans_symm_self + theorem local_equiv.trans_target'' + theorem local_equiv.trans_target' + theorem local_equiv.trans_target + theorem local_equiv.trans_to_fun + structure local_equiv 2019-09-04 22:48:55 79a1f84 fix(tactic/norm_num): bugfix bad proof application (#1387) * fix(tactic/norm_num): bugfix bad proof application * add test case that used to fail * add try_for * fix typecheck test * increase test timeout ESTIMATED CHANGES Modified src/tactic/norm_num.lean Modified test/norm_num.lean 2019-09-04 20:52:45 3c224f0 feat (logic/basic): exists_eq' (#1397) Not a great name, but `exists_eq_left` and `exists_eq_right` are taken, and it's unlikely to be used except in `simp` ESTIMATED CHANGES Modified src/logic/basic.lean + theorem exists_eq' 2019-09-04 19:28:57 65ffb7b fix(topology/uniform_space): simplify continuity proof (#1396) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean +/- theorem uniform_continuous.continuous +/- theorem uniform_continuous_iff 2019-09-04 17:22:01 06cffeb feat(order): add lemma (#1375) ESTIMATED CHANGES Modified src/algebra/order.lean + theorem decidable.min_le_max 2019-09-04 12:59:55 5d59e8b feat(category_theory): finite products give a monoidal structure (#1340) * providing minimal API for limits of special shapes * apis for special shapes * start * fintype instances * copy-paste from monoidal-categories-reboot * associators, unitors, braidings for binary product * minor * minor * map * minor * instances * blah * chore(category_theory/monoidal): monoidal_category doesn't extend category * minor * minor * assoc lemma * coprod * done? * fix import * names * cleanup * fix reassoc * comments * comments ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.lim.map_π +/- theorem category_theory.limits.limit.lift_π Added src/category_theory/limits/shapes/constructions/finite_limits.lean Added src/category_theory/limits/shapes/constructions/limits.lean Added src/category_theory/monoidal/of_has_finite_products.lean + def category_theory.monoidal_of_has_finite_coproducts + def category_theory.monoidal_of_has_finite_products Modified src/category_theory/monoidal/types.lean 2019-09-04 12:27:02 8cd16b9 feat(category_theory/sums): sums (disjoint unions) of categories (#1357) * feat(category_theory/sum): direct sums of categories * minor * tidying * Fix white space, remove old comments * rearranging, associator * add TODO comment about unitors * fix import * create /basic.lean files ESTIMATED CHANGES Added src/category_theory/hom_functor.lean + theorem category_theory.functor.hom_obj + theorem category_theory.functor.hom_pairing_map Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/opposites.lean - theorem category_theory.functor.hom_obj - theorem category_theory.functor.hom_pairing_map Modified src/category_theory/products/associator.lean Added src/category_theory/products/basic.lean + def category_theory.evaluation + theorem category_theory.evaluation_map_app + theorem category_theory.evaluation_obj_map + theorem category_theory.evaluation_obj_obj + def category_theory.evaluation_uncurried + theorem category_theory.evaluation_uncurried_map + theorem category_theory.evaluation_uncurried_obj + def category_theory.functor.prod + theorem category_theory.functor.prod_map + theorem category_theory.functor.prod_obj + def category_theory.nat_trans.prod + theorem category_theory.nat_trans.prod_app + def category_theory.prod.braiding + def category_theory.prod.fst + theorem category_theory.prod.fst_map + theorem category_theory.prod.fst_obj + def category_theory.prod.inl + theorem category_theory.prod.inl_map + theorem category_theory.prod.inl_obj + def category_theory.prod.inr + theorem category_theory.prod.inr_map + theorem category_theory.prod.inr_obj + def category_theory.prod.snd + theorem category_theory.prod.snd_map + theorem category_theory.prod.snd_obj + def category_theory.prod.swap + theorem category_theory.prod.swap_map + theorem category_theory.prod.swap_obj + def category_theory.prod.symmetry + theorem category_theory.prod_comp + theorem category_theory.prod_comp_fst + theorem category_theory.prod_comp_snd + theorem category_theory.prod_id + theorem category_theory.prod_id_fst + theorem category_theory.prod_id_snd Modified src/category_theory/products/bifunctor.lean Modified src/category_theory/products/default.lean - def category_theory.evaluation - theorem category_theory.evaluation_map_app - theorem category_theory.evaluation_obj_map - theorem category_theory.evaluation_obj_obj - def category_theory.evaluation_uncurried - theorem category_theory.evaluation_uncurried_map - theorem category_theory.evaluation_uncurried_obj - def category_theory.functor.prod - theorem category_theory.functor.prod_map - theorem category_theory.functor.prod_obj - def category_theory.nat_trans.prod - theorem category_theory.nat_trans.prod_app - def category_theory.prod.fst - theorem category_theory.prod.fst_map - theorem category_theory.prod.fst_obj - def category_theory.prod.inl - theorem category_theory.prod.inl_map - theorem category_theory.prod.inl_obj - def category_theory.prod.inr - theorem category_theory.prod.inr_map - theorem category_theory.prod.inr_obj - def category_theory.prod.snd - theorem category_theory.prod.snd_map - theorem category_theory.prod.snd_obj - def category_theory.prod.swap - theorem category_theory.prod.swap_map - theorem category_theory.prod.swap_obj - def category_theory.prod.symmetry - theorem category_theory.prod_comp - theorem category_theory.prod_comp_fst - theorem category_theory.prod_comp_snd - theorem category_theory.prod_id - theorem category_theory.prod_id_fst - theorem category_theory.prod_id_snd Added src/category_theory/sums/associator.lean + def category_theory.sum.associativity + def category_theory.sum.associator + theorem category_theory.sum.associator_map_inl_inl + theorem category_theory.sum.associator_map_inl_inr + theorem category_theory.sum.associator_map_inr + theorem category_theory.sum.associator_obj_inl_inl + theorem category_theory.sum.associator_obj_inl_inr + theorem category_theory.sum.associator_obj_inr + def category_theory.sum.inverse_associator + theorem category_theory.sum.inverse_associator_map_inl + theorem category_theory.sum.inverse_associator_map_inr_inl + theorem category_theory.sum.inverse_associator_map_inr_inr + theorem category_theory.sum.inverse_associator_obj_inl + theorem category_theory.sum.inverse_associator_obj_inr_inl + theorem category_theory.sum.inverse_associator_obj_inr_inr Added src/category_theory/sums/basic.lean + def category_theory.functor.sum + theorem category_theory.functor.sum_map_inl + theorem category_theory.functor.sum_map_inr + theorem category_theory.functor.sum_obj_inl + theorem category_theory.functor.sum_obj_inr + def category_theory.nat_trans.sum + theorem category_theory.nat_trans.sum_app_inl + theorem category_theory.nat_trans.sum_app_inr + def category_theory.sum.inl_ + theorem category_theory.sum.inl_map + theorem category_theory.sum.inl_obj + def category_theory.sum.inr_ + theorem category_theory.sum.inr_map + theorem category_theory.sum.inr_obj + def category_theory.sum.swap.equivalence + def category_theory.sum.swap.symmetry + def category_theory.sum.swap + theorem category_theory.sum.swap_map_inl + theorem category_theory.sum.swap_map_inr + theorem category_theory.sum.swap_obj_inl + theorem category_theory.sum.swap_obj_inr + theorem category_theory.sum_comp_inl + theorem category_theory.sum_comp_inr Added src/category_theory/sums/default.lean Modified src/category_theory/yoneda.lean 2019-09-04 06:33:49 b079298 feat(tactic/doc_blame): Use is_auto_generated (#1395) ESTIMATED CHANGES Modified src/tactic/doc_blame.lean - def name.is_not_auto 2019-09-03 21:08:11 ff47fa3 feat(measure_theory): prove that the Giry monad is a monad in the category_theory sense (#1259) * feat(measure_theory): prove that the Giry monad is a monad in the category_theory sense * Add spaces to fix alignment * document Measure * Add documentation * Add space before colon ESTIMATED CHANGES Modified src/measure_theory/Meas.lean + def Meas.Integral + def Meas.Measure Modified src/measure_theory/giry_monad.lean + theorem measure_theory.measure.join_dirac + theorem measure_theory.measure.join_eq_bind + theorem measure_theory.measure.join_map_dirac + theorem measure_theory.measure.join_map_join + theorem measure_theory.measure.join_map_map + theorem measure_theory.measure.map_dirac Modified src/measure_theory/measurable_space.lean + theorem measurable_pi_apply + theorem measurable_pi_lambda 2019-09-03 18:22:38 b5b40c7 chore(*): use localized command in mathlib (#1319) * chore(*): use localized command in mathlib remove some open_locale instances in files that do not import tactic.basic fix some errors type class inference failure fix some more errors typo fully specify all names in localized notation also add some comments to the doc one more localized import checkpoint there is something seriously wrong with type class inference + the transition from constructive to classical logic. Suppose you want to work purely classically, and state a lemma where the statement requires a proof of decidable equality on one of the types. For an abstract type, the only instance of this is classical.prop_decidable, unless you add explicitly an argument that the respective type has decidable equality (which you tend to not want to do if you only work classically). Now when you apply this lemma to a concrete type, where we can infer decidability of equality, type class inference will complain that we used the wrong instance (which is kinda insane: by unification it knows exactly which instance we want to use). A big problem with this, is that you have no idea you will run into this issues later when stating the lemma: Lean will happily accept it * add TODOs * fix some errors * update .gitignore * fix some timeouts * replace a couple more local notations ESTIMATED CHANGES Modified .gitignore Modified docs/tactics.md Modified src/algebra/CommRing/adjunctions.lean Modified src/algebra/archimedean.lean Modified src/algebra/direct_limit.lean Modified src/algebra/group_power.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/convex.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/analysis/specific_limits.lean Modified src/category_theory/natural_isomorphism.lean Modified src/computability/turing_machine.lean Modified src/data/complex/exponential.lean Modified src/data/list/basic.lean Modified src/data/matrix/basic.lean Modified src/data/matrix/pequiv.lean Modified src/data/multiset.lean Modified src/data/nat/totient.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/pfun.lean Modified src/data/polynomial.lean Modified src/data/rat/basic.lean Modified src/data/rat/cast.lean Modified src/data/rat/order.lean Modified src/data/real/basic.lean Modified src/data/real/cau_seq_completion.lean Modified src/data/real/ennreal.lean Modified src/data/real/hyperreal.lean Modified src/data/real/nnreal.lean Modified src/data/set/countable.lean Modified src/data/set/disjointed.lean Modified src/field_theory/mv_polynomial.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/coset.lean Modified src/group_theory/order_of_element.lean Modified src/linear_algebra/tensor_product.lean Modified src/logic/function.lean Modified src/measure_theory/ae_eq_fun.lean Modified src/measure_theory/bochner_integration.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/decomposition.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.range_map Modified src/measure_theory/l1_space.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/measure_theory/probability_mass_function.lean Modified src/measure_theory/simple_func_dense.lean Modified src/number_theory/dioph.lean Modified src/order/basic.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/basic.lean Modified src/order/filter/filter_product.lean Modified src/order/filter/lift.lean Modified src/order/filter/pointwise.lean Modified src/order/zorn.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/cofinality.lean Modified src/set_theory/ordinal.lean Modified src/set_theory/ordinal_notation.lean Modified src/set_theory/schroeder_bernstein.lean Modified src/tactic/basic.lean Modified src/tactic/default.lean Modified src/tactic/finish.lean Modified src/tactic/localized.lean Modified src/tactic/omega/coeffs.lean Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/dnf.lean Modified src/tactic/omega/nat/form.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/omega/nat/neg_elim.lean Modified src/tactic/omega/nat/preterm.lean Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/push_neg.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/basic.lean Modified src/topology/constructions.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/maps.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/gromov_hausdorff_realized.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/order.lean Modified src/topology/separation.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/cauchy.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/pi.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2019-09-03 17:52:30 4b6fcd9 perf(data/gaussian_int): speed up div and mod (#1394) avoid using `int.cast`, and use `rat.of_int`. This sped up `#eval (⟨1414,152⟩ : gaussian_int) % ⟨123,456⟩` from about 5 seconds to 2 milliseconds ESTIMATED CHANGES Modified src/data/zsqrtd/gaussian_int.lean 2019-09-03 17:20:07 974d413 chore(linear_algebra/determinant): simplify det_mul proof (#1392) * chore(linear_algebra/determinant): simplify det_mul proof Minor improvement to the proof of `det_mul` * make det_mul_aux more readable ESTIMATED CHANGES Modified src/linear_algebra/determinant.lean 2019-09-03 15:36:36 3a58b50 feat(data/equiv/basic): add more functions for equivalences between complex types (#1384) * Add more `equiv` combinators * Fix compile * Minor fixes * Update src/data/equiv/basic.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> ESTIMATED CHANGES Modified src/data/equiv/basic.lean - def equiv.equiv_fib - def equiv.equiv_sigma_subtype + def equiv.sigma_preimage_equiv + def equiv.sigma_subtype_equiv_of_subset + def equiv.sigma_subtype_preimage_equiv + def equiv.sigma_subtype_preimage_equiv_subtype +/- def equiv.subtype_subtype_equiv_subtype + def equiv.subtype_subtype_equiv_subtype_exists + def equiv.subtype_subtype_equiv_subtype_inter + def equiv.subtype_univ_equiv Modified src/group_theory/coset.lean Modified src/group_theory/sylow.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/cofinality.lean 2019-09-03 13:42:57 a199f85 feat(topology/uniform_space): Abstract completions (#1374) * feat(topology/uniform_space): Abstract completions Define abstract completions, study their properties and derived constructions. Use this study in the concrete completion files, and for comparing completions constructed at different level of generality, especially for real numbers. This comes from the perfectoid spaces project. * Apply suggestions from code review by Johan Co-Authored-By: Johan Commelin * Fix build. When I created the PR, github complained it couldn't automatically merge, and I was not careful enough when I merged... * chore(topology/uniform_space): rename completion_pkg * fix(compare_reals): create namespace * Fix build ESTIMATED CHANGES Modified src/topology/algebra/group_completion.lean - theorem uniform_space.completion.is_add_group_hom_prod Modified src/topology/algebra/uniform_ring.lean Modified src/topology/maps.lean + theorem dense_range.nonempty Added src/topology/uniform_space/absolute_value.lean + theorem is_absolute_value.mem_uniformity + def is_absolute_value.uniform_space + def is_absolute_value.uniform_space_core Added src/topology/uniform_space/abstract_completion.lean + def abstract_completion.compare + theorem abstract_completion.compare_coe + def abstract_completion.compare_equiv + theorem abstract_completion.continuous_coe + theorem abstract_completion.continuous_extend + theorem abstract_completion.continuous_map + theorem abstract_completion.continuous_map₂ + theorem abstract_completion.dense' + theorem abstract_completion.dense_inducing + theorem abstract_completion.extend_coe + theorem abstract_completion.extend_comp_coe + theorem abstract_completion.extend_def + theorem abstract_completion.extend_map + theorem abstract_completion.extend_unique + theorem abstract_completion.extension₂_coe_coe + theorem abstract_completion.induction_on + theorem abstract_completion.inverse_compare + theorem abstract_completion.map_coe + theorem abstract_completion.map_comp + theorem abstract_completion.map_id + theorem abstract_completion.map_unique + theorem abstract_completion.map₂_coe_coe + theorem abstract_completion.uniform_continuous_coe + theorem abstract_completion.uniform_continuous_compare + theorem abstract_completion.uniform_continuous_compare_equiv + theorem abstract_completion.uniform_continuous_compare_equiv_symm + theorem abstract_completion.uniform_continuous_extend + theorem abstract_completion.uniform_continuous_extension₂ + theorem abstract_completion.uniform_continuous_map + theorem abstract_completion.uniform_continuous_map₂ + structure abstract_completion Added src/topology/uniform_space/compare_reals.lean + def compare_reals.Bourbaki_pkg + def compare_reals.Bourbakiℝ + def compare_reals.Q + theorem compare_reals.compare_uc + theorem compare_reals.compare_uc_symm + theorem rat.uniform_space_eq + def rational_cau_seq_pkg Modified src/topology/uniform_space/completion.lean + def uniform_space.completion.cpkg - theorem uniform_space.completion.prod_coe_coe - theorem uniform_space.completion.uniform_continuous_prod 2019-09-03 11:51:43 c7d3629 fix(restate_axiom): create lemmas from lemmas (#1390) ESTIMATED CHANGES Modified src/tactic/restate_axiom.lean 2019-09-03 09:24:11+02:00 94205c4 feat(data/fintype): prove `card (subtype p) ≤ card α` (#1383) * feat(data/fintype): prove `card (subtype p) ≤ card α` * Add `cardinal.mk_le_of_subtype` * Rename `mk_le_of_subtype` to `mk_subtype_le`, use it in `mk_set_le` Earlier both `mk_subtype_le` and `mk_set_le` took `set α` as an argument. Now `mk_subtype_le` takes `α → Prop`. ESTIMATED CHANGES Modified src/data/fintype.lean + theorem fintype.card_subtype_le Modified src/data/real/cardinality.lean Modified src/set_theory/cardinal.lean +/- theorem cardinal.mk_subtype_le + theorem cardinal.mk_subtype_le_of_subset 2019-09-02 14:19:49 227b682 feat(category_theory): define `iso.conj` and friends (#1381) * feat(category_theory): define `iso.conj` and friends * Drop 2 `@[simp]` attributes ESTIMATED CHANGES Added src/category_theory/conj.lean + theorem category_theory.functor.map_conj + theorem category_theory.functor.map_conj_Aut + theorem category_theory.functor.map_hom_congr + def category_theory.iso.conj + def category_theory.iso.conj_Aut + theorem category_theory.iso.conj_Aut_apply + theorem category_theory.iso.conj_Aut_gpow + theorem category_theory.iso.conj_Aut_hom + theorem category_theory.iso.conj_Aut_mul + theorem category_theory.iso.conj_Aut_pow + theorem category_theory.iso.conj_Aut_trans + theorem category_theory.iso.conj_apply + theorem category_theory.iso.conj_comp + theorem category_theory.iso.conj_id + theorem category_theory.iso.conj_pow + def category_theory.iso.hom_congr + theorem category_theory.iso.hom_congr_apply + theorem category_theory.iso.hom_congr_comp + theorem category_theory.iso.hom_congr_refl + theorem category_theory.iso.hom_congr_symm + theorem category_theory.iso.hom_congr_trans + theorem category_theory.iso.refl_conj + theorem category_theory.iso.self_symm_conj + theorem category_theory.iso.symm_self_conj + theorem category_theory.iso.trans_conj + theorem category_theory.iso.trans_conj_Aut 2019-09-02 12:18:38 57d4b41 feat(category_theory/limits): construct limits from products and equalizers (#1362) * providing minimal API for limits of special shapes * apis for special shapes * fintype instances * associators, unitors, braidings for binary product * map * instances * assoc lemma * coprod * fix import * names * adding some docs * updating tutorial on limits * minor * uniqueness of morphisms to terminal object * better treatment of has_terminal * various * not there yet * deleting a dumb file * remove constructions for a later PR * getting there * oops * of_nat_iso * feat(category_theory/limits/of_nat_isp) * progress on limits from products and equalizers * Update src/category_theory/limits/limits.lean Co-Authored-By: Johan Commelin * Update src/category_theory/limits/limits.lean Co-Authored-By: Johan Commelin * use @[reassoc] * fixing after rename * use @[reassoc] * fix renaming * complete construction of limits from products and equalizers * cleanup * cleanup * name instance * whitespace * Update src/category_theory/limits/limits.lean Co-Authored-By: Johan Commelin * use simpa ESTIMATED CHANGES Modified src/category_theory/const.lean + theorem category_theory.functor.const.unop_functor_op_obj_map Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocone.equiv + def category_theory.limits.cone.equiv Modified src/category_theory/limits/limits.lean + def category_theory.limits.has_colimit.of_cocones_iso + def category_theory.limits.has_limit.of_cones_iso Modified src/category_theory/limits/shapes/binary_products.lean Added src/category_theory/limits/shapes/constructions/finite_products.lean Added src/category_theory/limits/shapes/constructions/limits_of_products_and_equalizers.lean + def category_theory.limits.equalizer_diagram.cones_hom + def category_theory.limits.equalizer_diagram.cones_inv + def category_theory.limits.equalizer_diagram.cones_iso + def category_theory.limits.equalizer_diagram + def category_theory.limits.limits_from_equalizers_and_products Added src/category_theory/limits/shapes/constructions/pullbacks.lean Added src/category_theory/limits/shapes/constructions/sums.lean 2019-09-02 07:54:36 fe7695b chore(data/nat/gcd): remove pointless parentheses (#1386) ESTIMATED CHANGES Modified src/data/nat/gcd.lean +/- theorem nat.gcd_eq_right_iff_dvd 2019-09-02 06:00:19 d35dc13 feat(data/nat/gcd): add simple lemmas (#1382) * feat(data/nat/gcd): more simple lemmas * Prove `iff` instead of one side implication ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime.gcd_both + theorem nat.coprime.gcd_left + theorem nat.coprime.gcd_mul + theorem nat.coprime.gcd_right - theorem nat.exists_eq_prod_and_dvd_and_dvd + theorem nat.gcd_eq_left_iff_dvd + theorem nat.gcd_eq_right_iff_dvd + theorem nat.gcd_le_left + theorem nat.gcd_le_right + theorem nat.gcd_mul_dvd_mul_gcd + def nat.prod_dvd_and_dvd_of_dvd_prod 2019-09-01 11:29:41 6d2b3ed chore(category_theory/notation): consistently use notation for functor.id (#1378) * chore(category_theory/notation): consistently use notation for functor.id * oops, overzealous search-and-replace * more * more * more ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean +/- def category_theory.adjunction.id Modified src/category_theory/comma.lean +/- def category_theory.comma.map_left_id +/- def category_theory.comma.map_right_id +/- def category_theory.over +/- def category_theory.under Modified src/category_theory/equivalence.lean +/- def category_theory.functor.fun_inv_id +/- def category_theory.functor.inv_fun_id Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean +/- theorem category_theory.functor.id_map +/- theorem category_theory.functor.id_obj Modified src/category_theory/limits/cones.lean +/- def category_theory.limits.cocones.precompose_id +/- def category_theory.limits.cones.postcompose_id Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/monad/adjunction.lean +/- theorem category_theory.adjunction.monad_η_app +/- theorem category_theory.adjunction.monad_μ_app +/- theorem category_theory.monad.comparison_map_f +/- theorem category_theory.monad.comparison_obj_a Modified src/category_theory/monad/basic.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/natural_isomorphism.lean +/- def category_theory.functor.ulift_down_up +/- def category_theory.functor.ulift_up_down Modified src/category_theory/products/default.lean +/- def category_theory.prod.symmetry Modified src/category_theory/whiskering.lean +/- def category_theory.functor.left_unitor +/- def category_theory.functor.right_unitor Modified src/category_theory/yoneda.lean Modified src/topology/Top/opens.lean +/- def topological_space.opens.map_id 2019-08-31 22:37:28 df65dde feat(data/option/basic): eq_some_iff_get_eq (#1370) * feat(data/option/basic): eq_some_iff_get_eq * Update basic.lean ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.eq_some_iff_get_eq 2019-08-31 20:38:30 72ce940 feat(category_theory/limits/of_nat_iso): missing parts of the limits API (#1355) * feat(category_theory/limits/of_nat_isp) * Update src/category_theory/limits/limits.lean Co-Authored-By: Johan Commelin * Update src/category_theory/limits/limits.lean Co-Authored-By: Johan Commelin * use @[reassoc] * fixing after rename * fix renaming ESTIMATED CHANGES Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit.iso_unique_cocone_morphism + theorem category_theory.limits.is_colimit.of_nat_iso.cocone_fac + def category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom + theorem category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom_fac + theorem category_theory.limits.is_colimit.of_nat_iso.cocone_of_hom_of_cocone + def category_theory.limits.is_colimit.of_nat_iso.colimit_cocone + def category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone + theorem category_theory.limits.is_colimit.of_nat_iso.hom_of_cocone_of_hom + def category_theory.limits.is_colimit.of_nat_iso - def category_theory.limits.is_colimit.unique + def category_theory.limits.is_colimit.unique_up_to_iso - def category_theory.limits.is_colimit_iso_unique_cocone_morphism + def category_theory.limits.is_limit.iso_unique_cone_morphism + theorem category_theory.limits.is_limit.of_nat_iso.cone_fac + def category_theory.limits.is_limit.of_nat_iso.cone_of_hom + theorem category_theory.limits.is_limit.of_nat_iso.cone_of_hom_fac + theorem category_theory.limits.is_limit.of_nat_iso.cone_of_hom_of_cone + def category_theory.limits.is_limit.of_nat_iso.hom_of_cone + theorem category_theory.limits.is_limit.of_nat_iso.hom_of_cone_of_hom + def category_theory.limits.is_limit.of_nat_iso.limit_cone + def category_theory.limits.is_limit.of_nat_iso - def category_theory.limits.is_limit.unique + def category_theory.limits.is_limit.unique_up_to_iso - def category_theory.limits.is_limit_iso_unique_cone_morphism Modified src/category_theory/limits/preserves.lean 2019-08-30 20:07:24 455f060 chore(unicode): improve arrows (#1373) * chore(unicode): improve arrows * grammar Co-Authored-By: Johan Commelin * moar ESTIMATED CHANGES Modified docs/extras/simp.md Modified src/category/traversable/basic.lean Modified src/computability/primrec.lean Modified src/data/list/defs.lean Modified src/data/mv_polynomial.lean Modified src/order/filter/basic.lean Modified src/tactic/apply.lean Modified src/tactic/finish.lean 2019-08-30 13:16:52-04:00 4c5c4dc doc(contribute): add detailed instructions for cache-olean [skip ci] (#1367) ESTIMATED CHANGES Modified docs/contribute/index.md 2019-08-30 16:13:59 2db7fa4 feat(sanity_check): improve sanity_check (#1369) * feat(sanity_check): improve sanity_check - add hole command for sanity check (note: hole commands only work when an expression is expected, not when a command is expected, which is unfortunate) - print the type of the unused arguments - print whether an unused argument is a duplicate - better check to filter automatically generated declarations - do not print arguments of type `parse _` - The binding brackets from `tactic.where` are moved to `meta.expr`. The definition is changed so that strict implicit arguments are printed as `{{ ... }}` * typos * improve docstring * Also check for duplicated namespaces Fun fact: I had to remove an unused argument from `decidable_chain'` for my function to work. ESTIMATED CHANGES Modified src/data/list/defs.lean Modified src/meta/expr.lean + def binder_info.brackets Modified src/tactic/core.lean Modified src/tactic/sanity_check.lean Modified src/tactic/where.lean Modified test/sanity_check.lean 2019-08-30 11:48:46 afe51c7 feat(category_theory/limits): special shapes (#1339) * providing minimal API for limits of special shapes * apis for special shapes * fintype instances * associators, unitors, braidings for binary product * map * instances * assoc lemma * coprod * fix import * names * adding some docs * updating tutorial on limits * minor * uniqueness of morphisms to terminal object * better treatment of has_terminal * various * not there yet * deleting a dumb file * remove constructions for a later PR * use @[reassoc] * Update src/category_theory/limits/shapes/finite_products.lean Co-Authored-By: Johan Commelin * improving the colimits tutorial * minor * notation for `prod_obj` and `sigma_obj`. * reverting to `condition` * implicit arguments * more implicit arguments * minor * notational for initial and terminal objects * various * fix notation priorities * remove unused case bash tactic * fix whitespace * comment * notations ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean - def I_0 - def I_1 + def I₀ + def I₁ +/- def X +/- def Y +/- def cylinder - def cylinder_0 - def cylinder_1 + def cylinder₀ + def cylinder₁ - def d +/- def mapping_cone +/- def mapping_cylinder - def mapping_cylinder_0 + def mapping_cylinder₀ - def w Modified src/category_theory/discrete_category.lean +/- def category_theory.functor.of_function + theorem category_theory.functor.of_function_map + theorem category_theory.functor.of_function_obj +/- def category_theory.nat_iso.of_isos +/- def category_theory.nat_trans.of_function + theorem category_theory.nat_trans.of_function_app +/- def category_theory.nat_trans.of_homs Modified src/category_theory/functor_category.lean Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.lim.map_π +/- theorem category_theory.limits.limit.lift_π Modified src/category_theory/limits/shapes/binary_products.lean + theorem category_theory.limits.binary_cofan.mk_π_app_left + theorem category_theory.limits.binary_cofan.mk_π_app_right + theorem category_theory.limits.binary_fan.mk_π_app_left + theorem category_theory.limits.binary_fan.mk_π_app_right + def category_theory.limits.coprod.associator + def category_theory.limits.coprod.braiding + def category_theory.limits.coprod.desc + def category_theory.limits.coprod.inl + def category_theory.limits.coprod.inr + def category_theory.limits.coprod.left_unitor + def category_theory.limits.coprod.map + def category_theory.limits.coprod.right_unitor + theorem category_theory.limits.coprod.symmetry + def category_theory.limits.coprod + def category_theory.limits.map_pair + theorem category_theory.limits.map_pair_left + theorem category_theory.limits.map_pair_right + theorem category_theory.limits.pair_obj_left + theorem category_theory.limits.pair_obj_right + def category_theory.limits.prod.associator + def category_theory.limits.prod.braiding + def category_theory.limits.prod.fst + def category_theory.limits.prod.left_unitor + def category_theory.limits.prod.lift + def category_theory.limits.prod.map + def category_theory.limits.prod.right_unitor + def category_theory.limits.prod.snd + theorem category_theory.limits.prod.symmetry + def category_theory.limits.prod +/- inductive category_theory.limits.walking_pair Modified src/category_theory/limits/shapes/default.lean Modified src/category_theory/limits/shapes/equalizers.lean + theorem category_theory.limits.coequalizer.condition + def category_theory.limits.coequalizer.desc + def category_theory.limits.coequalizer.π + def category_theory.limits.coequalizer + theorem category_theory.limits.equalizer.condition + def category_theory.limits.equalizer.lift + def category_theory.limits.equalizer.ι + def category_theory.limits.equalizer Added src/category_theory/limits/shapes/finite_limits.lean Added src/category_theory/limits/shapes/finite_products.lean Modified src/category_theory/limits/shapes/products.lean + theorem category_theory.limits.cofan.mk_π_app + theorem category_theory.limits.fan.mk_π_app + def category_theory.limits.pi.lift + def category_theory.limits.pi.map + def category_theory.limits.pi.π + def category_theory.limits.pi_obj + def category_theory.limits.sigma.desc + def category_theory.limits.sigma.map + def category_theory.limits.sigma.ι + def category_theory.limits.sigma_obj Modified src/category_theory/limits/shapes/pullbacks.lean + theorem category_theory.limits.pullback.condition + def category_theory.limits.pullback.fst + def category_theory.limits.pullback.lift + def category_theory.limits.pullback.snd + def category_theory.limits.pullback +/- theorem category_theory.limits.pullback_cone.condition + def category_theory.limits.pullback_cone.fst +/- def category_theory.limits.pullback_cone.mk + def category_theory.limits.pullback_cone.snd - def category_theory.limits.pullback_cone.π₁ - def category_theory.limits.pullback_cone.π₂ + theorem category_theory.limits.pushout.condition + def category_theory.limits.pushout.desc + def category_theory.limits.pushout.inl + def category_theory.limits.pushout.inr + def category_theory.limits.pushout +/- theorem category_theory.limits.pushout_cocone.condition + def category_theory.limits.pushout_cocone.inl + def category_theory.limits.pushout_cocone.inr +/- def category_theory.limits.pushout_cocone.mk - def category_theory.limits.pushout_cocone.ι₁ - def category_theory.limits.pushout_cocone.ι₂ Added src/category_theory/limits/shapes/terminal.lean + def category_theory.limits.initial.to + def category_theory.limits.initial + def category_theory.limits.terminal.from + def category_theory.limits.terminal Modified src/category_theory/pempty.lean Modified src/category_theory/single_obj.lean 2019-08-29 21:31:25 1278efd Fix `tactic.exact` timeout in `apply'` (#1371) Sometimes `tactic.exact` may timeout for no reason. See zulip discussion https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/.60apply'.60timeout/near/174415043 ESTIMATED CHANGES Modified src/tactic/apply.lean 2019-08-29 12:31:24 1ff3585 feat(analysis/calculus/times_cont_diff): adding a lemma (#1358) * feat(analysis/calculus/times_cont_diff): adding a lemma * doc * change k to \bbk ESTIMATED CHANGES Modified src/analysis/calculus/times_cont_diff.lean + theorem times_cont_diff_on.differentiable_on 2019-08-28 21:31:26 3b19503 refactor(category_theory/single_obj): migrate to bundled morphisms (#1330) * Define equivalence between `{ f // is_monoid_hom f }` and `monoid_hom` * Migrate `single_obj` to bundled homomorphisms Fix a bug in `to_End`: the old implementation used a wrong monoid structure on `End`. * Fix `Mon.hom_equiv_monoid_hom` as suggested by @jcommelin ESTIMATED CHANGES Modified src/algebra/Mon/basic.lean + def Mon.hom_equiv_monoid_hom Modified src/category_theory/single_obj.lean +/- def category_theory.single_obj.map_hom +/- theorem category_theory.single_obj.map_hom_comp - def category_theory.single_obj.map_hom_equiv +/- theorem category_theory.single_obj.map_hom_id +/- def category_theory.single_obj.to_End +/- theorem category_theory.single_obj.to_End_def - def category_theory.single_obj.to_End_equiv + theorem monoid_hom.comp_to_functor + theorem monoid_hom.id_to_functor + def monoid_hom.to_functor + def units.to_Aut + theorem units.to_Aut_hom + theorem units.to_Aut_inv 2019-08-28 16:20:58 d4c1c0f fix(tactic.basic): add sanity_check import (#1365) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-08-28 10:14:09 721d67a fix(topology/uniform_space): sanity_check pass (#1364) ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean +/- theorem mem_uniformity_is_closed +/- theorem sum.uniformity +/- theorem to_topological_space_prod Modified src/topology/uniform_space/cauchy.lean +/- theorem cauchy_iff_exists_le_nhds +/- theorem cauchy_map_iff_exists_tendsto +/- def cauchy_seq +/- theorem cauchy_seq_tendsto_of_complete +/- theorem cauchy_seq_tendsto_of_is_complete +/- theorem totally_bounded_closure +/- theorem totally_bounded_empty +/- theorem totally_bounded_image +/- theorem totally_bounded_subset Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean +/- theorem uniform_space.uniform_continuous_quotient_lift₂ Modified src/topology/uniform_space/uniform_embedding.lean + theorem uniform_inducing.mk' - def uniform_inducing.mk' 2019-08-28 09:17:30 79dccba refactor: change field notation from k to \bbk (#1363) * refactor: change field notation from k to \bbK * change \bbK to \bbk ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean +/- theorem differentiable.comp +/- theorem differentiable.continuous +/- theorem differentiable.differentiable_on +/- theorem differentiable.mul +/- theorem differentiable.neg +/- theorem differentiable.prod +/- theorem differentiable.smul' +/- theorem differentiable.smul +/- theorem differentiable_at.congr_of_mem_nhds +/- theorem differentiable_at.continuous_at +/- theorem differentiable_at.has_fderiv_at +/- theorem differentiable_at.mul +/- theorem differentiable_at.neg +/- theorem differentiable_at.prod +/- theorem differentiable_at.smul' +/- theorem differentiable_at.smul +/- theorem differentiable_at_const +/- theorem differentiable_at_id +/- theorem differentiable_const +/- theorem differentiable_id +/- theorem differentiable_on.congr_mono +/- theorem differentiable_on.continuous_on +/- theorem differentiable_on.mono +/- theorem differentiable_on.mul +/- theorem differentiable_on.neg +/- theorem differentiable_on.prod +/- theorem differentiable_on.smul' +/- theorem differentiable_on.smul +/- theorem differentiable_on_const +/- theorem differentiable_on_id +/- theorem differentiable_within_at.congr_mono +/- theorem differentiable_within_at.continuous_within_at +/- theorem differentiable_within_at.fderiv_within_congr_mono +/- theorem differentiable_within_at.has_fderiv_within_at +/- theorem differentiable_within_at.mono +/- theorem differentiable_within_at.neg +/- theorem differentiable_within_at.smul +/- theorem differentiable_within_at_const +/- theorem differentiable_within_at_id +/- def fderiv +/- theorem fderiv_const +/- theorem fderiv_id +/- theorem fderiv_mul +/- theorem fderiv_neg +/- theorem fderiv_smul' +/- theorem fderiv_smul +/- def fderiv_within +/- theorem fderiv_within_add +/- theorem fderiv_within_congr +/- theorem fderiv_within_congr_of_mem_nhds_within +/- theorem fderiv_within_const +/- theorem fderiv_within_id +/- theorem fderiv_within_inter +/- theorem fderiv_within_mul +/- theorem fderiv_within_neg +/- theorem fderiv_within_smul' +/- theorem fderiv_within_smul +/- theorem fderiv_within_sub +/- theorem fderiv_within_subset +/- theorem fderiv_within_univ +/- theorem has_fderiv_at.comp +/- theorem has_fderiv_at.comp_has_fderiv_within_at +/- theorem has_fderiv_at.differentiable_at +/- theorem has_fderiv_at.fderiv +/- theorem has_fderiv_at.smul +/- def has_fderiv_at +/- theorem has_fderiv_at_filter.comp +/- theorem has_fderiv_at_filter.smul +/- def has_fderiv_at_filter +/- theorem has_fderiv_at_id +/- theorem has_fderiv_within_at.comp +/- theorem has_fderiv_within_at.smul +/- def has_fderiv_within_at +/- theorem is_bounded_bilinear_map.continuous +/- theorem is_bounded_bilinear_map.differentiable +/- theorem is_bounded_bilinear_map.differentiable_at +/- theorem is_bounded_bilinear_map.differentiable_on +/- theorem is_bounded_bilinear_map.differentiable_within_at +/- theorem is_bounded_bilinear_map.fderiv +/- theorem is_bounded_bilinear_map.fderiv_within +/- theorem is_bounded_bilinear_map.has_fderiv_at +/- theorem is_bounded_bilinear_map.has_fderiv_within_at +/- theorem is_bounded_linear_map.differentiable +/- theorem is_bounded_linear_map.differentiable_at +/- theorem is_bounded_linear_map.differentiable_on +/- theorem is_bounded_linear_map.differentiable_within_at +/- theorem is_bounded_linear_map.fderiv +/- theorem is_bounded_linear_map.fderiv_within +/- theorem is_bounded_linear_map.has_fderiv_at +/- theorem is_bounded_linear_map.has_fderiv_at_filter +/- theorem is_bounded_linear_map.has_fderiv_within_at +/- theorem unique_diff_on.eq +/- theorem unique_diff_within_at.eq Modified src/analysis/calculus/tangent_cone.lean +/- theorem is_open.unique_diff_on +/- theorem is_open.unique_diff_within_at +/- theorem tangent_cone_at.lim_zero +/- theorem tangent_cone_univ +/- theorem unique_diff_on.prod +/- theorem unique_diff_on_inter +/- theorem unique_diff_on_univ +/- theorem unique_diff_within_at.inter +/- theorem unique_diff_within_at.mono +/- theorem unique_diff_within_at_univ Modified src/analysis/calculus/times_cont_diff.lean +/- theorem is_bounded_bilinear_map.times_cont_diff +/- theorem is_bounded_linear_map.times_cont_diff +/- def iterated_continuous_linear_map.normed_group_rec +/- def iterated_continuous_linear_map.normed_space_rec +/- def iterated_continuous_linear_map +/- def iterated_fderiv +/- def iterated_fderiv_within +/- theorem iterated_fderiv_within_congr +/- theorem times_cont_diff.continuous +/- theorem times_cont_diff.continuous_fderiv +/- theorem times_cont_diff.of_le +/- theorem times_cont_diff.of_succ +/- def times_cont_diff +/- theorem times_cont_diff_const +/- theorem times_cont_diff_fst +/- theorem times_cont_diff_id +/- theorem times_cont_diff_on.congr +/- theorem times_cont_diff_on.congr_mono' +/- theorem times_cont_diff_on.congr_mono +/- theorem times_cont_diff_on.continuous_on +/- theorem times_cont_diff_on.mono +/- theorem times_cont_diff_on.of_succ +/- def times_cont_diff_on +/- theorem times_cont_diff_on_rec.differentiable_on +/- theorem times_cont_diff_on_rec.of_succ +/- def times_cont_diff_on_rec +/- theorem times_cont_diff_rec.continuous +/- theorem times_cont_diff_rec.differentiable +/- theorem times_cont_diff_rec.of_succ +/- def times_cont_diff_rec +/- theorem times_cont_diff_snd +/- theorem times_cont_diff_top Modified src/analysis/normed_space/banach.lean +/- theorem exists_preimage_norm_le +/- theorem linear_equiv.is_bounded_inv +/- theorem open_mapping Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem continuous_linear_map.is_bounded_linear_map +/- theorem continuous_linear_map.is_bounded_linear_map_comp_left +/- theorem continuous_linear_map.is_bounded_linear_map_comp_right +/- def is_bounded_bilinear_map.deriv +/- theorem is_bounded_bilinear_map.is_bounded_linear_map_deriv +/- def is_bounded_bilinear_map.linear_deriv +/- theorem is_bounded_bilinear_map.map_sub_left +/- theorem is_bounded_bilinear_map.map_sub_right +/- theorem is_bounded_bilinear_map_deriv_coe +/- theorem is_bounded_linear_map.add +/- theorem is_bounded_linear_map.continuous +/- theorem is_bounded_linear_map.fst +/- theorem is_bounded_linear_map.id +/- theorem is_bounded_linear_map.is_O_comp +/- theorem is_bounded_linear_map.is_O_id +/- theorem is_bounded_linear_map.is_O_sub +/- theorem is_bounded_linear_map.lim_zero_bounded_linear_map +/- theorem is_bounded_linear_map.neg +/- theorem is_bounded_linear_map.smul +/- theorem is_bounded_linear_map.snd +/- theorem is_bounded_linear_map.sub +/- theorem is_bounded_linear_map.tendsto +/- def is_bounded_linear_map.to_continuous_linear_map +/- def is_bounded_linear_map.to_linear_map +/- theorem is_bounded_linear_map.zero +/- structure is_bounded_linear_map Modified src/analysis/normed_space/operator_norm.lean +/- theorem continuous_linear_map.bounds_bdd_below +/- theorem continuous_linear_map.bounds_nonempty +/- theorem continuous_linear_map.is_O_comp +/- theorem continuous_linear_map.is_O_sub +/- theorem continuous_linear_map.norm_id +/- theorem continuous_linear_map.norm_zero +/- theorem continuous_linear_map.scalar_prod_space_iso_norm +/- theorem linear_map.continuous_of_bound +/- def linear_map.with_bound +/- theorem linear_map_with_bound_apply +/- theorem linear_map_with_bound_coe 2019-08-27 23:19:25+02:00 45df75b fix(topology/algebra/uniform_group): tiny priority tweak ESTIMATED CHANGES Modified src/topology/algebra/uniform_group.lean 2019-08-26 17:11:07 cc04ba7 chore(algebra/ring): change semiring_hom to ring_hom (#1361) * added bundled ring homs * removed comment * Tidy and making docstrings consistent * fix spacing * fix typo Co-Authored-By: Johan Commelin * fix typo Co-Authored-By: Johan Commelin * whoops, actually removing instances * change semiring_hom to ring_hom * corrected docstring ESTIMATED CHANGES Modified src/algebra/ring.lean + def ring_hom.comp + theorem ring_hom.ext + def ring_hom.id + theorem ring_hom.map_add + theorem ring_hom.map_mul + theorem ring_hom.map_neg + theorem ring_hom.map_one + theorem ring_hom.map_sub + theorem ring_hom.map_zero + def ring_hom.mk' + structure ring_hom - def semiring_hom.comp - theorem semiring_hom.ext - def semiring_hom.id - theorem semiring_hom.map_add - theorem semiring_hom.map_mul - theorem semiring_hom.map_neg - theorem semiring_hom.map_one - theorem semiring_hom.map_sub - theorem semiring_hom.map_zero - def semiring_hom.mk' - structure semiring_hom 2019-08-26 14:50:25 914c572 feat(data/rat): add lt, le, and eq def lemmas, move casts into rat to basic (#1348) ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean Modified src/data/rat/basic.lean + theorem rat.coe_int_denom + theorem rat.coe_int_eq_mk + theorem rat.coe_int_eq_of_int + theorem rat.coe_int_num + theorem rat.coe_int_num_of_denom_eq_one + theorem rat.coe_nat_denom + theorem rat.coe_nat_eq_mk + theorem rat.coe_nat_num + theorem rat.eq_iff_mul_eq_mul + theorem rat.inv_def' + theorem rat.mk_eq_div + theorem rat.mul_own_denom_eq_num +/- theorem rat.num_denom' +/- theorem rat.num_denom +/- theorem rat.of_int_eq_mk Modified src/data/rat/cast.lean - theorem rat.coe_int_denom - theorem rat.coe_int_eq_mk - theorem rat.coe_int_eq_of_int - theorem rat.coe_int_num - theorem rat.coe_int_num_of_denom_eq_one - theorem rat.coe_nat_denom - theorem rat.coe_nat_eq_mk - theorem rat.coe_nat_num - theorem rat.mk_eq_div Modified src/data/rat/order.lean + theorem rat.div_lt_div_iff_mul_lt_mul + theorem rat.lt_one_iff_num_lt_denom 2019-08-26 08:13:13 7bc18a8 feat(data/fin): coe_eq_val and coe_mk (#1321) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.coe_eq_val + theorem fin.coe_mk + theorem fin.mk_val - def fin.mk_val 2019-08-23 12:07:10+02:00 253a9f7 fix(docs/install): resize extensions icons for consistency [ci skip] ESTIMATED CHANGES Modified docs/install/extensions-icon.png Modified docs/install/new-extensions-icon.png 2019-08-23 12:00:49+02:00 91a9b4b doc(install/*): new VS-code icon [ci skip] ESTIMATED CHANGES Modified docs/install/linux.md Modified docs/install/macos.md Added docs/install/new-extensions-icon.png Modified docs/install/windows.md 2019-08-23 08:45:41 9a42572 feat(tactic/apply'): apply without unfolding type definitions (#1234) * feat(tactic/apply'): apply without unfolding type definitions * Update src/tactic/interactive.lean Co-Authored-By: Rob Lewis * improve doc * more doc * Update core.lean * add test case * add test case * improve treatment of type class instances for apply' * tweak application of instance resolution * fix * move `apply'` to its own file * adjust docs * import apply from tactic.default * fix import in test * Update tactics.lean ESTIMATED CHANGES Added src/tactic/apply.lean + def tactic.reorder_goals Modified src/tactic/core.lean Modified src/tactic/default.lean Modified src/tactic/interactive.lean Added test/apply.lean Modified test/examples.lean Modified test/tactics.lean 2019-08-22 18:22:53 f74cc70 fix(tactic/tauto): use intro1 to deal with negations (#1354) * fix(tactic/tauto): use intro1 to deal with negations * test(tactic/tauto): add tests ESTIMATED CHANGES Modified src/tactic/tauto.lean Modified test/tauto.lean 2019-08-22 15:27:06 40b09aa feat(*): small lemmas from the sensitivity formalization (#1352) * feat(set_theory/cardinal): norm_cast attributes and extra lemma * feat(logic/basic): ne.symm_iff * feat(data/fin): succ_ne_zero * feat(data/bool): bxor_of_ne * feat(algebra/big_operators, data/fintype): {finset,fintype}.card_eq_sum_ones * feat(data/set): range_restrict * feat(data/finset): inter lemmas * Reid's corrections * fixes * fix cardinal power lemma * fixes * Update bool.lean ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.card_eq_sum_ones Modified src/data/bool.lean + theorem bool.bxor_iff_ne Modified src/data/fin.lean + theorem fin.succ_ne_zero Modified src/data/finset.lean + theorem finset.inter_subset_inter + theorem finset.inter_subset_inter_left + theorem finset.inter_subset_inter_right Modified src/data/fintype.lean + theorem fintype.card_eq_sum_ones + theorem fintype.card_of_subsingleton - theorem fintype.fintype.card_of_subsingleton - theorem fintype.fintype.univ_of_subsingleton + theorem fintype.univ_of_subsingleton Modified src/data/set/function.lean + theorem set.range_restrict Modified src/logic/basic.lean + theorem ne_comm Modified src/set_theory/cardinal.lean +/- theorem cardinal.nat_cast_inj +/- theorem cardinal.nat_cast_le +/- theorem cardinal.nat_cast_lt +/- theorem cardinal.nat_cast_pow +/- theorem cardinal.nat_succ + theorem cardinal.pow_cast_right 2019-08-22 10:31:24 f442a41 docs(category/monad,bitraversable): add module docstrings #1260 (#1286) * docs(category/monad,bitraversable): add module docstrings * more docs * still more doc * doc about traversable ESTIMATED CHANGES Modified src/category/bitraversable/basic.lean Modified src/category/bitraversable/instances.lean Modified src/category/bitraversable/lemmas.lean +/- def bitraversable.tfst +/- def bitraversable.tsnd Modified src/category/monad/basic.lean Modified src/category/traversable/basic.lean 2019-08-22 09:32:22+02:00 a489719 Rename Groupoid.lean to groupoid_category.lean (#1353) This fixes a problem with `category_theory/groupoid` and `category_theory/Groupoid` having the same name except for the case of the first letter, which causes a problem on case insensitive file systems. ESTIMATED CHANGES Renamed src/category_theory/Groupoid.lean to src/category_theory/groupoid_category.lean 2019-08-21 19:35:06 8de4273 feat(category_theory/Groupoid): category of groupoids (#1325) * feat(category_theory/Groupoid): category of groupoids * fix comment * more articles ESTIMATED CHANGES Added src/category_theory/Groupoid.lean + def category_theory.Groupoid.forget_to_Cat + def category_theory.Groupoid.objects + def category_theory.Groupoid.of + def category_theory.Groupoid 2019-08-21 12:19:41 35144f2 feat(conv/conv): conv tactics for zooming/saving state (#1351) * feat(conv/conv): conv tactics for zooming/saving state * rob's doc fixes * nicer docs ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/converter/interactive.lean Added test/conv/conv.lean 2019-08-21 11:04:30 3f915fc feat(archive): add the cubing a cube proof (#1343) * feat(archive): add the cubing a cube proof * rename file * add leanpkg configure to travis ESTIMATED CHANGES Modified .travis.yml Added archive/cubing_a_cube.lean + theorem Ico_lemma + theorem b_add_w_le_one + theorem b_le_b + def bcubes + theorem bottom_mem_side + theorem cannot_cube_a_cube + def correct + theorem cube.b_lt_xm + theorem cube.b_mem_bottom + theorem cube.b_mem_side + theorem cube.b_mem_to_set + theorem cube.b_ne_xm + def cube.bottom + theorem cube.head_shift_up + theorem cube.hw' + def cube.shift_up + def cube.side + theorem cube.side_tail + theorem cube.side_unit_cube + theorem cube.tail_shift_up + def cube.to_set + def cube.to_set_disjoint + def cube.to_set_subset + def cube.unit_cube + def cube.xm + structure cube + def decreasing_sequence + theorem exists_mi + def mi + theorem mi_mem_bcubes + theorem mi_minimal + theorem mi_not_on_boundary' + theorem mi_not_on_boundary + theorem mi_strict_minimal + theorem mi_xm_ne_one + theorem nonempty_bcubes + theorem not_correct + def on_boundary + theorem shift_up_bottom_subset_bottoms + theorem side_subset + theorem smallest_on_boundary + theorem strict_mono_sequence_of_cubes + theorem t_le_t + theorem tail_sub + theorem to_set_subset_unit_cube + theorem two_le_mk_bcubes + def valley + def valley_mi + theorem valley_unit_cube + theorem w_lt_w + theorem w_ne_one + theorem zero_le_b + theorem zero_le_of_mem + theorem zero_le_of_mem_side 2019-08-21 05:42:55 c512875 refactor(*): rewrite `to_additive` attribute (#1345) * chore(algebra/group/to_additive): auto add structure fields * Snapshot * Rewrite `@[to_additive]` * Drop more explicit `name` arguments to `to_additive` * Drop more explicit arguments to `to_additive` * Map namespaces with `run_cmd to_additive.map_namespace` * fix(`group_theory/perm/sign`): fix compile * Fix handling of equational lemmas; fix warnings * Use `list.mmap'` ESTIMATED CHANGES Modified src/algebra/big_operators.lean - theorem finset.sum_hom - theorem is_group_hom.finset_prod + theorem is_group_hom.map_finset_prod Modified src/algebra/direct_limit.lean Modified src/algebra/group/basic.lean Modified src/algebra/group/hom.lean - def add_monoid_hom.comp - def add_monoid_hom.ext - def add_monoid_hom.id - def add_monoid_hom.map_add - theorem add_monoid_hom.map_neg +/- theorem add_monoid_hom.map_sub - def add_monoid_hom.map_zero - def add_monoid_hom.mk' - def add_monoid_hom.neg +/- theorem coe_as_monoid_hom + theorem monoid_hom.ext - def monoid_hom.ext - theorem monoid_hom.map_div +/- theorem monoid_hom.map_inv +/- theorem monoid_hom.map_mul + theorem monoid_hom.map_mul_inv +/- theorem monoid_hom.map_one Modified src/algebra/group/to_additive.lean + structure to_additive.value_type Modified src/algebra/group/with_one.lean Modified src/algebra/group_power.lean Modified src/algebra/pi_instances.lean Modified src/algebra/pointwise.lean - def set.pointwise_add_add_monoid - def set.pointwise_add_add_semigroup Modified src/algebra/punit_instances.lean +/- theorem punit.inv_eq +/- theorem punit.mul_eq +/- theorem punit.one_eq Modified src/data/dfinsupp.lean Modified src/data/equiv/algebra.lean - def add_equiv.apply_symm_apply - def add_equiv.map_add - def add_equiv.map_zero - def add_equiv.refl - def add_equiv.symm - def add_equiv.symm_apply_apply - def add_equiv.to_add_monoid_hom - theorem add_equiv.to_equiv_symm - def add_equiv.trans +/- def mul_equiv.apply_symm_apply +/- def mul_equiv.map_one +/- def mul_equiv.refl +/- def mul_equiv.symm +/- def mul_equiv.symm_apply_apply +/- theorem mul_equiv.to_equiv_symm +/- def mul_equiv.trans Modified src/data/finsupp.lean Modified src/data/fintype.lean Modified src/data/list/basic.lean Modified src/data/list/perm.lean Modified src/data/multiset.lean Modified src/data/mv_polynomial.lean Modified src/data/set/finite.lean Modified src/group_theory/coset.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.coe_inv +/- theorem quotient_group.coe_mul +/- theorem quotient_group.coe_one +/- theorem quotient_group.ker_mk +/- theorem quotient_group.lift_mk' +/- theorem quotient_group.lift_mk Modified src/group_theory/subgroup.lean - def add_group.closure - theorem add_group.closure_eq_mclosure - theorem add_group.closure_subset - theorem add_group.exists_list_of_mem_closure - theorem add_group.gmultiples_eq_closure - theorem add_group.image_closure - theorem add_group.in_closure.rec_on + inductive add_group.in_closure - theorem add_group.mem_closure - theorem add_group.mem_closure_union_iff + theorem gmultiples_subset + theorem gpowers_subset +/- theorem group.closure_subgroup - def is_add_subgroup.center - def is_add_subgroup.trivial +/- theorem is_subgroup.mem_trivial Modified src/group_theory/submonoid.lean - def add_monoid.closure - theorem add_monoid.closure_mono - theorem add_monoid.closure_singleton - theorem add_monoid.closure_subset - theorem add_monoid.exists_list_of_mem_closure - theorem add_monoid.image_closure - theorem add_monoid.in_closure.rec_on + inductive add_monoid.in_closure - theorem add_monoid.mem_closure_union_iff - theorem add_monoid.subset_closure - theorem is_add_submonoid_Union_of_directed + theorem multiples.add_mem + theorem powers.mul_mem Modified src/linear_algebra/tensor_product.lean Modified src/meta/expr.lean + def name.map_prefix Modified src/order/filter/pointwise.lean - def filter.pointwise_add Modified src/tactic/algebra.lean Added src/tactic/transport.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/open_subgroup.lean - theorem open_add_subgroup.coe_inf - theorem open_add_subgroup.is_open_of_open_add_subgroup - theorem open_add_subgroup.le_iff - theorem open_add_subgroup.mem_nhds_zero - def open_add_subgroup.prod +/- theorem open_subgroup.coe_inf +/- theorem open_subgroup.le_iff 2019-08-21 03:42:10 733f616 chore(gitignore): ignore files generated by mk_all script (#1328) ESTIMATED CHANGES Modified .gitignore 2019-08-21 01:39:40 8070049 feat(tactic/lift): add lift tactic (#1315) * start on lift_to tactic * finish lift tactic * add instance to lift rat to int this required me to move some lemmas from rat/order to rat/basic which had nothing to do with the order on rat * move test to test/tactic.lean * add header and documentation * add more/better documentation * typo * more documentation * rewrite, minor * move import * remove can_lift attribute now we automatically construct the simp set used to simplify Thanks to @cipher1024 for the idea and writing the main part of this code * remove occurrence of [can_lift] ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/rat/cast.lean + theorem rat.coe_int_num_of_denom_eq_one Modified src/tactic/basic.lean Added src/tactic/lift.lean Modified test/tactics.lean 2019-08-20 23:38:53 26a3e31 chore(category_theory/monoidal): monoidal_category doesn't extend category (#1338) * chore(category_theory/monoidal): monoidal_category doesn't extend category * remove _aux file, simplifying * make notations global, and add doc-strings ESTIMATED CHANGES Modified src/category_theory/monoidal/category.lean +/- def category_theory.tensor_iso Deleted src/category_theory/monoidal/category_aux.lean - def category_theory.assoc_natural - def category_theory.assoc_obj - def category_theory.left_unitor_natural - def category_theory.left_unitor_obj - def category_theory.pentagon - def category_theory.right_unitor_natural - def category_theory.right_unitor_obj - def category_theory.tensor_hom_type - def category_theory.tensor_obj_type - def category_theory.triangle Modified src/category_theory/monoidal/functor.lean 2019-08-20 21:37:32 0dbe3a9 feat(algebra,equiv,logic): add various lemmas (#1342) * add various lemmas * add simp lemma * fix simp * rename to subtype_sigma_equiv ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem fn_min_add_fn_max + theorem fn_min_mul_fn_max + theorem min_add_max + theorem min_mul_max Modified src/algebra/ordered_ring.lean + theorem mul_self_add_mul_self_eq_zero Modified src/algebra/ring.lean + theorem Vieta_formula_quadratic + theorem mul_self_eq_zero + theorem zero_eq_mul_self Modified src/data/equiv/basic.lean + def equiv.subtype_sigma_equiv Modified src/data/list/basic.lean +/- theorem list.tfae_singleton Modified src/logic/basic.lean + theorem eq.congr_left + theorem eq.congr_right + theorem eq_iff_iff 2019-08-20 15:42:54 14024a3 feat(linear_algebra/bilinear_form, linear_algebra/sesquilinear_form, ring_theory/maps): bilinear/sesquilinear forms (#1300) * Create involution.lean * Update involution.lean * Update involution.lean * Rename involution.lean to maps.lean * Create bilinear_form.lean * Create sesquilinear_form.lean * Update sesquilinear_form.lean * Style fixes * Update sesquilinear_form.lean * Style fixes * fix typo ESTIMATED CHANGES Added src/linear_algebra/bilinear_form.lean + def alt_bilin_form.is_alt + theorem alt_bilin_form.neg + theorem alt_bilin_form.self_eq_zero + theorem bilin_form.add_left + theorem bilin_form.add_right + def bilin_form.bilin_linear_map_equiv + theorem bilin_form.ext + def bilin_form.is_ortho + theorem bilin_form.neg_left + theorem bilin_form.neg_right + theorem bilin_form.ortho_smul_left + theorem bilin_form.ortho_smul_right + theorem bilin_form.ortho_zero + theorem bilin_form.smul_left + theorem bilin_form.smul_right + theorem bilin_form.sub_left + theorem bilin_form.sub_right + def bilin_form.to_linear_map + theorem bilin_form.zero_left + theorem bilin_form.zero_right + structure bilin_form + def linear_map.to_bilin + theorem refl_bilin_form.eq_zero + def refl_bilin_form.is_refl + theorem refl_bilin_form.ortho_sym + theorem sym_bilin_form.is_refl + def sym_bilin_form.is_sym + theorem sym_bilin_form.ortho_sym + theorem sym_bilin_form.sym Added src/linear_algebra/sesquilinear_form.lean + def alt_sesq_form.is_alt + theorem alt_sesq_form.neg + theorem alt_sesq_form.self_eq_zero + theorem refl_sesq_form.eq_zero + def refl_sesq_form.is_refl + theorem refl_sesq_form.ortho_sym + theorem sesq_form.add_left + theorem sesq_form.add_right + theorem sesq_form.ext + def sesq_form.is_ortho + theorem sesq_form.neg_left + theorem sesq_form.neg_right + theorem sesq_form.ortho_smul_left + theorem sesq_form.ortho_smul_right + theorem sesq_form.ortho_zero + theorem sesq_form.smul_left + theorem sesq_form.smul_right + theorem sesq_form.sub_left + theorem sesq_form.sub_right + theorem sesq_form.zero_left + theorem sesq_form.zero_right + structure sesq_form + theorem sym_sesq_form.is_refl + def sym_sesq_form.is_sym + theorem sym_sesq_form.ortho_sym + theorem sym_sesq_form.sym Added src/ring_theory/maps.lean + def comm_ring.anti_equiv_to_equiv + theorem comm_ring.anti_hom_to_hom + def comm_ring.equiv_to_anti_equiv + theorem comm_ring.hom_to_anti_hom + theorem is_ring_anti_hom.map_neg + theorem is_ring_anti_hom.map_sub + theorem is_ring_anti_hom.map_zero + theorem ring_anti_equiv.bijective + theorem ring_anti_equiv.map_add + theorem ring_anti_equiv.map_mul + theorem ring_anti_equiv.map_neg + theorem ring_anti_equiv.map_neg_one + theorem ring_anti_equiv.map_one + theorem ring_anti_equiv.map_sub + theorem ring_anti_equiv.map_zero + theorem ring_anti_equiv.map_zero_iff + structure ring_anti_equiv + theorem ring_equiv.bijective + theorem ring_equiv.map_add + theorem ring_equiv.map_mul + theorem ring_equiv.map_neg + theorem ring_equiv.map_neg_one + theorem ring_equiv.map_one + theorem ring_equiv.map_sub + theorem ring_equiv.map_zero + theorem ring_equiv.map_zero_iff + theorem ring_invo.bijective + theorem ring_invo.map_add + theorem ring_invo.map_mul + theorem ring_invo.map_neg + theorem ring_invo.map_neg_one + theorem ring_invo.map_one + theorem ring_invo.map_sub + theorem ring_invo.map_zero + theorem ring_invo.map_zero_iff + def ring_invo.to_ring_anti_equiv + structure ring_invo 2019-08-20 13:12:03 6f747ec feat(data/vector2): nth_map (#1349) * feat(data/vector2): nth_map * Update vector2.lean * Update vector2.lean ESTIMATED CHANGES Modified src/data/vector2.lean + theorem vector.nth_map 2019-08-20 12:14:30 8771432 doc(tactic/ring2): document parts of ring2 (#1208) * doc(tactic/ring2): document parts of ring2 * feat(data/tree): refactor binary trees into their own module * feat(tactic/ring2): resolve correct correctness * chore(tactic/ring2): move copyright into comment * doc(tactic/ring2): wording ESTIMATED CHANGES Added src/data/tree.lean + def tree.get + def tree.get_or_else + def tree.index_of + def tree.map + def tree.of_rbnode + def tree.repr + inductive {u} Modified src/tactic/linarith.lean - def linarith.tree.repr - inductive linarith.{u} Modified src/tactic/ring2.lean - def tactic.ring2.horner_expr.repr + def tactic.ring2.horner_expr.to_string - def tactic.ring2.tree.get - def tactic.ring2.tree.index_of - def tactic.ring2.tree.of_rbnode - inductive tactic.ring2.{u} 2019-08-20 11:13:39+02:00 f3eb8c2 chore(data/matrix): simp attribute for transpose_tranpose (#1350) ESTIMATED CHANGES Modified src/data/matrix/basic.lean +/- theorem matrix.transpose_transpose 2019-08-19 21:05:01 5a309a3 fix(category_theory/eq_to_hom): remove bad simp lemmas (#1346) ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean +/- theorem category_theory.eq_to_hom_app +/- theorem category_theory.eq_to_hom_map +/- theorem category_theory.eq_to_iso_map 2019-08-19 19:01:37 9eefd40 refactor(data/list/min_max): use with_top for maximum and define argmax (#1320) * refactor(data/list/min_max): use option for maximum and define argmax * prove minimum_singleton * fix build * use with_bot for maximum * update comments ESTIMATED CHANGES Modified src/data/equiv/denumerable.lean Modified src/data/list/min_max.lean + def list.argmax + theorem list.argmax_concat + theorem list.argmax_cons + theorem list.argmax_eq_none + theorem list.argmax_eq_some_iff + theorem list.argmax_mem + theorem list.argmax_nil + theorem list.argmax_singleton + theorem list.argmax_two_self + def list.argmax₂ + def list.argmin + theorem list.argmin_concat + theorem list.argmin_cons + theorem list.argmin_eq_none + theorem list.argmin_eq_some_iff + theorem list.argmin_le_of_mem + theorem list.argmin_mem + theorem list.argmin_nil + theorem list.argmin_singleton + theorem list.foldl_argmax₂_eq_none + theorem list.index_of_argmax + theorem list.index_of_argmin + theorem list.le_argmax_of_mem - theorem list.le_maximum_aux_of_mem + theorem list.le_maximum_of_mem' +/- theorem list.le_maximum_of_mem - theorem list.le_minimum_aux_of_mem + theorem list.le_minimum_of_mem' - theorem list.le_minimum_of_mem - theorem list.le_of_foldl_max - theorem list.le_of_foldl_min - theorem list.le_of_foldr_max - theorem list.le_of_foldr_min +/- def list.maximum - def list.maximum_aux - def list.maximum_aux_cons + theorem list.maximum_concat + theorem list.maximum_cons - def list.maximum_cons + theorem list.maximum_eq_coe_iff + theorem list.maximum_eq_none +/- theorem list.maximum_mem + theorem list.maximum_nil + theorem list.maximum_singleton - def list.maximum_singleton + theorem list.mem_argmax_iff + theorem list.mem_argmin_iff - theorem list.mem_foldl_max - theorem list.mem_foldl_min - theorem list.mem_foldr_max - theorem list.mem_foldr_min - theorem list.mem_maximum_aux - theorem list.mem_minimum_aux +/- def list.minimum - def list.minimum_aux - def list.minimum_aux_cons + theorem list.minimum_concat + theorem list.minimum_cons - def list.minimum_cons + theorem list.minimum_eq_coe_iff + theorem list.minimum_eq_none + theorem list.minimum_le_of_mem +/- theorem list.minimum_mem + theorem list.minimum_nil + theorem list.minimum_singleton - def list.minimum_singleton Modified src/tactic/omega/find_scalars.lean 2019-08-19 17:09:44 92fa24c feat(data/fin): val simp lemmas (#1347) * feat(data/fin): val simp lemmas * Update fin.lean ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.cast_add_val + theorem fin.cast_le_val + theorem fin.cast_lt_cast_succ + theorem fin.last_val 2019-08-19 09:36:05-04:00 6fbcc04 feat(tactic/reassoc_axiom): produce associativity-friendly lemmas in category theory (#1341) ESTIMATED CHANGES Modified docs/tactics.md Modified src/category_theory/adjunction/basic.lean +/- theorem category_theory.adjunction.counit_naturality - theorem category_theory.adjunction.counit_naturality_assoc +/- theorem category_theory.adjunction.left_triangle_components - theorem category_theory.adjunction.left_triangle_components_assoc +/- theorem category_theory.adjunction.right_triangle_components - theorem category_theory.adjunction.right_triangle_components_assoc +/- theorem category_theory.adjunction.unit_naturality - theorem category_theory.adjunction.unit_naturality_assoc Modified src/category_theory/eq_to_hom.lean +/- theorem category_theory.eq_to_hom_trans - theorem category_theory.eq_to_hom_trans_assoc Modified src/category_theory/isomorphism.lean - theorem category_theory.iso.hom_inv_id_assoc - theorem category_theory.iso.inv_hom_id_assoc Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colim.ι_map - theorem category_theory.limits.colim.ι_map_assoc +/- theorem category_theory.limits.colimit.ι_desc - theorem category_theory.limits.colimit.ι_desc_assoc +/- theorem category_theory.limits.colimit.ι_post - theorem category_theory.limits.colimit.ι_post_assoc +/- theorem category_theory.limits.colimit.ι_pre - theorem category_theory.limits.colimit.ι_pre_assoc Added src/tactic/reassoc_axiom.lean 2019-08-19 13:15:20 8f09b0f fix(tactic/omega): simplify with mul_one and one_mul (#1344) * Simplify multiplication by one * Remove debug trace * Fix integer version of omega ESTIMATED CHANGES Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/nat/main.lean Modified test/omega.lean 2019-08-19 11:20:20 9c1718a feat(tactic/obtain): make type argument optional (#1327) * feat(tactic/obtain): make type argument optional * fix(tactic/obtain): unnecessary steps * feat(tactic/obtain): simplify cases ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/rcases.lean Modified test/rcases.lean 2019-08-18 19:43:51 ab7d39b feat(data/vector2): update_nth (#1334) * feat(data/vector2): update_nth * naming and docstrings * remove double namespace fom vector.nth_mem ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.exists_iff +/- theorem fin.find_eq_some_iff + theorem fin.forall_iff +/- theorem fin.mem_find_iff Modified src/data/list/basic.lean + theorem list.nth_le_update_nth_eq + theorem list.nth_le_update_nth_of_ne Modified src/data/vector2.lean + theorem vector.mem_iff_nth + theorem vector.nodup_iff_nth_inj + theorem vector.nth_mem + theorem vector.nth_update_nth_eq_if + theorem vector.nth_update_nth_of_ne + theorem vector.nth_update_nth_same + def vector.update_nth 2019-08-17 20:50:04 538d3f6 feat(data/vector2): to_list_map (#1335) ESTIMATED CHANGES Modified src/data/vector2.lean + theorem vector.to_list_map 2019-08-17 18:55:40 66fa499 feat(data/list/basic): list.mem_insert_nth (#1336) * feat(data/list/basic): list.mem_insert_nth * Update src/data/list/basic.lean Co-Authored-By: Floris van Doorn ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.mem_insert_nth 2019-08-16 10:20:57 a1dda1e feat(linear_algebra/matrix): linear maps are linearly equivalent to matrices (#1310) * linear map to matrix (WIP) * WIP * feat (linear_algebra/matrix): lin_equiv_matrix * feat (linear_algebra.basic): linear_equiv.arrow_congr, std_basis_eq_single * change unnecessary vector_space assumption for equiv_fun_basis to module * add docstrings and refactor * add docstrings * move instance to pi_instances * add docstrings + name change * remove duplicate instance ESTIMATED CHANGES Modified src/field_theory/finite_card.lean Modified src/linear_algebra/basic.lean + def linear_equiv.arrow_congr +/- def linear_equiv.congr_right + def linear_equiv.conj + theorem linear_map.std_basis_eq_single Modified src/linear_algebra/basis.lean + def equiv_fun_basis + theorem module.card_fintype - theorem vector_space.card_fintype' +/- theorem vector_space.card_fintype Modified src/linear_algebra/matrix.lean + def lin_equiv_matrix' + def lin_equiv_matrix + def linear_map.to_matrix + def linear_map.to_matrixₗ + theorem to_lin_to_matrix + theorem to_matrix_to_lin 2019-08-16 02:19:14 2e76f36 feat(tactic/sanity_check): add #sanity_check command (#1318) * create a file sanity_check Currently it contains a tactic that detects unused arguments in declarations In the future I want to add other cleaning tactics * fix last tactic * update comment * checkpoint * checkpoint * rewrite sanity_check * update sanity_check * move results to appropriate files * move some declarations Some declarations in tactic.core made more sense in meta.expr tactic.core now imports string.defs (which adds very little) add documentation * add entry to docs/tactic.md * fix errors * some extra documentation * add test * add doc to meta.expr ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/string/defs.lean + def string.popn Modified src/meta/expr.lean Modified src/tactic/core.lean Added src/tactic/sanity_check.lean Added test/sanity_check.lean + def foo1 + def foo2 + theorem foo3 + theorem foo4 2019-08-16 00:19:33 397c016 feat(tactic/finish): parse ematch lemmas with `finish using ...` (#1326) * feat(tactic/finish): parse ematch lemmas with `finish using ...` Add test Add documentation * Add docstrings * Formatting and docstrings * Clean up test * Add even more docstrings clean up match expressions Fix typo ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/finish.lean Added test/finish4.lean + def append1 + theorem hd_rev + theorem log_mul' + def rev 2019-08-15 22:29:27 2e90bed feat(analysis/complex/exponential): prove that rpow is continuous (#1306) * rpow is continuous * Update exponential.lean * Fix things * Fix things * Fix things * Fix things ESTIMATED CHANGES Modified src/algebra/quadratic_discriminant.lean - theorem exists_le_mul + theorem exists_le_mul_self - theorem exists_lt_mul + theorem exists_lt_mul_self Modified src/analysis/complex/exponential.lean + theorem real.abs_rpow_le_abs_rpow + theorem real.continuous_at_log + theorem real.continuous_at_rpow_of_ne_zero + theorem real.continuous_at_rpow_of_pos + theorem real.continuous_log' + theorem real.continuous_log + theorem real.continuous_rpow + theorem real.continuous_rpow_aux1 + theorem real.continuous_rpow_aux2 + theorem real.continuous_rpow_aux3 + theorem real.continuous_rpow_of_ne_zero + theorem real.continuous_rpow_of_pos + theorem real.continuous_sqrt + theorem real.log_lt_log + theorem real.log_lt_log_iff + theorem real.log_neg + theorem real.log_neg_iff + theorem real.log_nonneg + theorem real.log_nonpos + theorem real.log_pos + theorem real.log_pos_iff + theorem real.one_lt_rpow + theorem real.rpow_def_of_neg + theorem real.rpow_def_of_nonpos + theorem real.rpow_def_of_pos + theorem real.rpow_le_rpow_of_exponent_ge + theorem real.rpow_le_rpow_of_exponent_le + theorem real.rpow_lt_one + theorem real.rpow_lt_rpow + theorem real.rpow_lt_rpow_of_exponent_gt + theorem real.rpow_lt_rpow_of_exponent_lt + theorem real.sqrt_eq_rpow + theorem real.tendsto_log_one_zero Modified src/analysis/normed_space/real_inner_product.lean Modified src/analysis/specific_limits.lean - theorem real.continuous_sqrt Modified src/data/complex/exponential.lean + theorem real.exp_lt_one_iff + theorem real.one_lt_exp_iff Modified src/data/real/basic.lean - theorem real.abs_sqrt_sub_sqrt_le_sqrt_abs 2019-08-15 20:26:47 74c25a5 feat(*): lemmas needed for two projects (#1294) * feat(multiplicity|enat): add facts needed for IMO 2019-4 * feat(*): various lemmas needed for the cubing a cube proof * typo * some cleanup * fixes, add choose_two_right * projections for associated.prime and irreducible ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem associates.prime.le_or_le + theorem associates.prime.ne_one + theorem associates.prime.ne_zero + theorem irreducible.is_unit_or_is_unit + theorem irreducible.ne_zero + theorem irreducible.not_unit - theorem ne_zero_of_irreducible +/- theorem not_prime_zero + theorem pow_dvd_pow_iff + theorem prime.div_or_div + theorem prime.ne_zero + theorem prime.not_unit Modified src/algebra/big_operators.lean + theorem finset.prod_le_prod + theorem finset.prod_nat_cast + theorem finset.prod_nonneg + theorem finset.prod_pos Modified src/algebra/order_functions.lean Modified src/algebra/ordered_group.lean + theorem add_le_iff_nonpos_left + theorem add_le_iff_nonpos_right + theorem add_lt_iff_neg_left + theorem add_lt_iff_neg_right Modified src/data/fin.lean + def fin.cons + theorem fin.cons_succ + theorem fin.cons_zero + theorem fin.exists_fin_succ + theorem fin.forall_fin_succ + def fin.tail + theorem fin.tail_cons Modified src/data/finset.lean + theorem finset.exists_min Modified src/data/multiset.lean + theorem multiset.multiset.map_eq_zero Modified src/data/nat/basic.lean + theorem nat.choose_two_right + theorem nat.fact_eq_one + theorem nat.fact_inj + theorem nat.fact_lt + theorem nat.monotone_fact + theorem nat.one_lt_fact + theorem nat.triangle_succ Modified src/data/nat/enat.lean + theorem enat.add_one_le_iff_lt + theorem enat.add_one_le_of_lt + theorem enat.le_of_lt_add_one + theorem enat.lt_add_one + theorem enat.lt_add_one_iff_lt + theorem enat.ne_top_iff + theorem enat.ne_top_of_lt + theorem enat.top_eq_none Modified src/data/padics/padic_norm.lean Modified src/data/pfun.lean + theorem roption.ne_none_iff + theorem roption.some_ne_none Modified src/data/set/finite.lean + theorem set.exists_min Modified src/data/set/intervals.lean + theorem set.eq_of_Ico_disjoint + theorem set.nonempty_Ico_sdiff Modified src/data/set/lattice.lean + theorem set.not_disjoint_iff Modified src/field_theory/splitting_field.lean Modified src/order/basic.lean + theorem reflect_lt Modified src/ring_theory/multiplicity.lean + theorem multiplicity.finset.prod + theorem multiplicity.multiplicity_add_eq_min + theorem multiplicity.multiplicity_add_of_gt + theorem multiplicity.multiplicity_lt_iff_neg_dvd + theorem multiplicity.multiplicity_pow_self + theorem multiplicity.multiplicity_pow_self_of_prime + theorem multiplicity.multiplicity_sub_of_gt Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean 2019-08-15 18:18:27 fa68342 feat(data/rat): move lemmas to right file, add nat cast lemmas, remove (#1333) redundant lemma ESTIMATED CHANGES Modified src/data/rat/basic.lean + theorem rat.of_int_eq_mk Modified src/data/rat/cast.lean + theorem rat.coe_int_eq_mk + theorem rat.coe_int_eq_of_int + theorem rat.coe_nat_eq_mk + theorem rat.mk_eq_div Modified src/data/rat/floor.lean Modified src/data/rat/order.lean - theorem rat.coe_int_eq_mk - theorem rat.coe_int_eq_of_int - theorem rat.mk_eq_div - theorem rat.mk_le - theorem rat.of_int_eq_mk 2019-08-15 15:09:08 73cc56c refactor(data/fintype): shorten proof of card_eq (#1332) ESTIMATED CHANGES Modified src/data/fintype.lean 2019-08-15 11:27:01 ebbbb76 doc(contribute/style): remove outdated syntax [ci skip] (#1329) * doc(contribute/style): remove outdated syntax [ci skip] * doc(contribute/style): mistaken find/replace ESTIMATED CHANGES Modified docs/contribute/style.md 2019-08-15 10:26:30 3d512f7 chore(category_theory/isomorphism): docstring, DRY, add some trivial lemmas (#1309) - add module docstring; - use `as_iso` more aggressively to avoid repeating proofs; - add more trivial lemmas. ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean +/- def category_theory.as_iso +/- theorem category_theory.functor.map_inv + theorem category_theory.functor.map_iso_symm - def category_theory.inv +/- theorem category_theory.is_iso.hom_inv_id +/- theorem category_theory.is_iso.hom_inv_id_assoc +/- theorem category_theory.is_iso.inv_comp +/- theorem category_theory.is_iso.inv_hom_id +/- theorem category_theory.is_iso.inv_hom_id_assoc +/- theorem category_theory.is_iso.inv_id +/- theorem category_theory.is_iso.is_iso.inv_inv +/- theorem category_theory.is_iso.iso.inv_hom +/- theorem category_theory.is_iso.iso.inv_inv +/- theorem category_theory.iso.refl_symm + theorem category_theory.iso.refl_trans + theorem category_theory.iso.self_symm_id + theorem category_theory.iso.self_symm_id_assoc + theorem category_theory.iso.symm_eq_iff + theorem category_theory.iso.symm_self_id + theorem category_theory.iso.symm_self_id_assoc + theorem category_theory.iso.symm_symm_eq + theorem category_theory.iso.trans_assoc + theorem category_theory.iso.trans_refl +/- theorem category_theory.iso.trans_symm 2019-08-15 05:08:24 e48ad0d chore(*): migrate `units.map` to bundled homs (#1331) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem is_unit.map' + theorem is_unit.map + theorem is_unit.mk0 Modified src/algebra/group/hom.lean + def as_monoid_hom + theorem coe_as_monoid_hom Modified src/algebra/group/units_hom.lean + def units.coe_hom + theorem units.coe_hom_apply + theorem units.coe_map' +/- theorem units.coe_map + def units.map' + def units.map +/- theorem units.map_comp +/- theorem units.map_id Modified src/data/equiv/algebra.lean Modified src/data/polynomial.lean Modified src/field_theory/splitting_field.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/power_series.lean 2019-08-14 18:01:25 02548ad fix(data/mllist): fix off-by-one bug in mllist.take (#1298) * Update mllist.lean Changed `n` to `n+1` in line 72. This fixes a bug in the `take` function for monadic lazy lists (mllist). * add a test showing correct behaviour of take ESTIMATED CHANGES Modified src/data/mllist.lean Modified test/mllist.lean 2019-08-14 15:58:41 0bc4a40 feat(data/pequiv): symm_single_apply (#1324) ESTIMATED CHANGES Modified src/data/pequiv.lean + theorem pequiv.symm_single_apply 2019-08-13 15:12:57 2a131d9 fix(.github): typo (#1323) ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md 2019-08-13 15:19:45+02:00 5796465 fix(algebra/ring): fix typo in docstring (#1322) ESTIMATED CHANGES Modified src/algebra/ring.lean 2019-08-12 17:42:15 900c53a feat(scripts): add scripts to import all mathlib files (#1281) * add scripts to import all mathlib files mk_all makes a file all.lean in each subdirectory of src/, importing all files in that directory, including subdirectories rm_all removes the files all.lean * also delete all.olean files * remove unnecessary maxdepth * add comments, and generate comments ESTIMATED CHANGES Added scripts/mk_all.sh Added scripts/rm_all.sh 2019-08-12 17:59:16+02:00 df1fb07 doc(contribute): add link to doc requirements (#1317) ESTIMATED CHANGES Modified docs/contribute/index.md 2019-08-12 15:28:09 92a5424 feat(data/fin): mem_find_iff (#1307) * feat(data/fin): mem_find_iff * add find_eq_some_iff (#1308) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.find_eq_some_iff + theorem fin.mem_find_iff 2019-08-12 13:41:27 f46b0dc feat(algebra/ordered_field): le_div_iff_of_neg (#1311) * feat(algebra/ordered_field): le_div_iff_of_neg * Update ordered_field.lean * Update ordered_field.lean * Update ordered_field.lean * Update ordered_field.lean ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem le_div_iff_of_neg 2019-08-12 11:55:24 3bd3dcd feat(data/option/basic): bind_eq_none' (#1312) * feat(data/option/basic): bind_eq_none' * Update basic.lean * fix build and add simp ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.bind_eq_none' +/- theorem option.bind_eq_none 2019-08-12 10:14:40 01cb33c feat(algebra/ordered_ring): pos_of_mul_neg_left and similar (#1313) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem neg_of_mul_pos_left + theorem neg_of_mul_pos_right + theorem nonneg_of_mul_nonpos_left + theorem nonneg_of_mul_nonpos_right + theorem nonpos_of_mul_nonneg_left + theorem nonpos_of_mul_nonneg_right + theorem pos_of_mul_neg_left + theorem pos_of_mul_neg_right 2019-08-11 09:21:07 37d4eda Delete repeated item (#1316) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean 2019-08-10 04:04:40 3aad7f1 feat(data/matrix/pequiv): partial equivalences to represent matrices (#1228) * feat(matrix/pequiv): partial equivalences to represent matrices * use notation for pequiv * correct imports * finish correcting imports * add some docs * Add documentation * improve documentation ESTIMATED CHANGES Renamed src/data/matrix.lean to src/data/matrix/basic.lean Added src/data/matrix/pequiv.lean + theorem pequiv.matrix_mul_apply + theorem pequiv.mul_matrix_apply + theorem pequiv.single_mul_single + theorem pequiv.single_mul_single_of_ne + theorem pequiv.single_mul_single_right + def pequiv.to_matrix + theorem pequiv.to_matrix_bot + theorem pequiv.to_matrix_injective + theorem pequiv.to_matrix_refl + theorem pequiv.to_matrix_swap + theorem pequiv.to_matrix_symm + theorem pequiv.to_matrix_trans Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/matrix.lean 2019-08-09 09:57:38 a79794a feat(archive): add archive (#1295) * feat(archive): add archive * reformulate sentence ESTIMATED CHANGES Modified .travis.yml Added archive/README.md 2019-08-08 14:14:07+02:00 dd4db5f fix(tactic/linarith): handle neq goals (#1303) ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2019-08-08 02:35:57 9c4dd95 feat (analysis/normed_space): Define real inner product space (#1248) * Inner product space * Change the definition of inner_product_space The original definition introduces an instance loop. See Zulip talks: https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic/ring.20tactic.20works.20at.20one.20place.2C.20fails.20at.20another * Orthogonal Projection Prove the existence of orthogonal projections onto complete subspaces in an inner product space. * Fix names * small fixes ESTIMATED CHANGES Modified src/algebra/ordered_field.lean + theorem nat.one_div_le_one_div + theorem nat.one_div_lt_one_div Modified src/algebra/ordered_ring.lean + theorem mul_self_le_mul_self_of_le_of_neg_le Added src/algebra/quadratic_discriminant.lean + def discrim + theorem discriminant_le_zero + theorem discriminant_lt_zero + theorem exist_quadratic_eq_zero + theorem exists_le_mul + theorem exists_lt_mul + theorem quadratic_eq_zero_iff + theorem quadratic_eq_zero_iff_discrim_eq_square + theorem quadratic_eq_zero_iff_of_discrim_eq_zero + theorem quadratic_ne_zero_of_discrim_ne_square Modified src/analysis/convex.lean + theorem convex_submodule + theorem convex_subspace Added src/analysis/normed_space/real_inner_product.lean + theorem abs_inner_le_norm + theorem exists_norm_eq_infi_of_complete_convex + theorem exists_norm_eq_infi_of_complete_subspace + theorem inner_add_add_self + theorem inner_add_left + theorem inner_add_right + theorem inner_comm + theorem inner_mul_inner_self_le + theorem inner_neg_left + theorem inner_neg_neg + theorem inner_neg_right + theorem inner_self_eq_norm_square + theorem inner_self_eq_zero + theorem inner_self_nonneg + theorem inner_smul_left + theorem inner_smul_right + theorem inner_sub_left + theorem inner_sub_right + theorem inner_sub_sub_self + theorem inner_zero_left + theorem inner_zero_right + theorem norm_add_mul_self + theorem norm_add_pow_two + theorem norm_eq_infi_iff_inner_eq_zero + theorem norm_eq_infi_iff_inner_le_zero + theorem norm_eq_sqrt_inner + theorem norm_sub_mul_self + theorem norm_sub_pow_two + theorem parallelogram_law + theorem parallelogram_law_with_norm Modified src/analysis/specific_limits.lean + theorem real.continuous_sqrt Modified src/data/real/basic.lean +/- theorem real.Sup_univ + theorem real.abs_sqrt_sub_sqrt_le_sqrt_abs Modified src/order/conditionally_complete_lattice.lean + theorem lattice.exists_lt_of_cinfi_lt + theorem lattice.exists_lt_of_lt_csupr Modified src/topology/uniform_space/cauchy.lean + theorem cauchy_seq_tendsto_of_is_complete 2019-08-07 07:50:47 a2a867e feat(algebra/ring): bundled semiring homs (#1305) * added bundled ring homs * removed comment * Tidy and making docstrings consistent * fix spacing * fix typo Co-Authored-By: Johan Commelin * fix typo Co-Authored-By: Johan Commelin * whoops, actually removing instances ESTIMATED CHANGES Modified src/algebra/ring.lean + def semiring_hom.comp + theorem semiring_hom.ext + def semiring_hom.id + theorem semiring_hom.map_add + theorem semiring_hom.map_mul + theorem semiring_hom.map_neg + theorem semiring_hom.map_one + theorem semiring_hom.map_sub + theorem semiring_hom.map_zero + def semiring_hom.mk' + structure semiring_hom 2019-08-06 15:58:05+02:00 57c1d6d chore(data/matrix): protect some lemmas (#1304) ESTIMATED CHANGES Modified src/data/matrix.lean - theorem matrix.add_mul - theorem matrix.mul_add - theorem matrix.mul_zero - theorem matrix.zero_mul 2019-08-05 21:37:42 88ad3cf feat(tactic/push_neg): add optional name argument to contrapose (#1302) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/push_neg.lean Modified test/push_neg.lean 2019-08-05 15:01:21 de83205 refactor(algebra/big_operators) delete duplicates and change names (#1301) * refactor(algebra/big_operators) delete duplicates and change names * fix build ESTIMATED CHANGES Modified src/algebra/big_operators.lean - theorem finset.sum_le_sum' - theorem finset.sum_le_zero' - theorem finset.sum_le_zero + theorem finset.sum_nonneg + theorem finset.sum_nonpos - theorem finset.zero_le_sum' - theorem finset.zero_le_sum Modified src/analysis/convex.lean Modified src/analysis/normed_space/basic.lean Modified src/data/complex/exponential.lean Modified src/data/real/ennreal.lean Modified src/measure_theory/integration.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean 2019-08-05 09:15:59 fc56c85 feat(algebra/order_functions): abs_nonpos_iff (#1299) * feat(algebra/ordered_group): abs_nonpos_iff * Update ordered_group.lean * move to order_functions ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem abs_nonpos_iff 2019-08-04 04:21:08 b46665f chore(ring_theory/algebra): make first type argument explicit in alg_hom (#1296) * chore(ring_theory/algebra): make first type argument explicit in alg_hom Now this works, and it didn't work previously even with `@` ```lean structure alg_equiv (α β γ : Type*) [comm_ring α] [ring β] [ring γ] [algebra α β] [algebra α γ] extends alg_hom α β γ := ``` * Update algebra.lean ESTIMATED CHANGES Modified src/ring_theory/algebra.lean +/- structure alg_hom 2019-08-03 04:14:56 27d34b3 feat(algebra/direct_limit): discrete_field (#1293) ESTIMATED CHANGES Modified src/algebra/direct_limit.lean 2019-08-02 17:15:07 8fe73f3 feat(data/fintype): psigma.fintype (#1291) * feat(data/fintype): psigma.fintype * Update fintype.lean * Swap instance argument order ESTIMATED CHANGES Modified src/data/fintype.lean 2019-08-02 15:14:38 3af92be feat(algebra/module): linear_map.coe_mk (#1290) ESTIMATED CHANGES Modified src/algebra/module.lean + theorem linear_map.coe_mk 2019-08-02 14:52:18 1061238 feat(topology): category of uniform spaces (#1275) * feat(category_theory): uniform spaces * feat(topology/uniform_spaces): CpltSepUniformSpace is a reflective subcategory ESTIMATED CHANGES Added src/topology/uniform_space/UniformSpace.lean + def CpltSepUniformSpace.forget + def CpltSepUniformSpace.forget_to_Type_via_UniformSpace + def CpltSepUniformSpace.forget_to_UniformSpace + def CpltSepUniformSpace.of + def CpltSepUniformSpace.to_UniformSpace + structure CpltSepUniformSpace + def UniformSpace.completion_hom + theorem UniformSpace.completion_hom_val + theorem UniformSpace.extension_comp_coe + theorem UniformSpace.extension_hom_val + def UniformSpace.forget + def UniformSpace.forget_to_Top + def UniformSpace.forget_to_Type_via_Top + def UniformSpace.of + def UniformSpace Modified src/topology/uniform_space/completion.lean + theorem uniform_space.completion.extension_comp_coe +/- theorem uniform_space.completion.map_id 2019-08-02 12:48:54 5b4b208 feat(data/fintype): univ_unique (#1289) ESTIMATED CHANGES Modified src/data/fintype.lean + theorem univ_unique 2019-08-01 17:01:15 766807f feat(data/rat): refactor into smaller files and add documentation (#1284) ESTIMATED CHANGES Modified docs/contribute/doc.md Modified src/algebra/archimedean.lean Modified src/data/fp/basic.lean Modified src/data/padics/padic_norm.lean Modified src/data/rat/basic.lean - theorem rat.abs_def - theorem rat.cast_abs - theorem rat.cast_add - theorem rat.cast_add_of_ne_zero - theorem rat.cast_bit0 - theorem rat.cast_bit1 - theorem rat.cast_coe_int - theorem rat.cast_coe_nat - theorem rat.cast_div - theorem rat.cast_div_of_ne_zero - theorem rat.cast_eq_zero - theorem rat.cast_id - theorem rat.cast_inj - theorem rat.cast_injective - theorem rat.cast_inv - theorem rat.cast_inv_of_ne_zero - theorem rat.cast_le - theorem rat.cast_lt - theorem rat.cast_lt_zero - theorem rat.cast_max - theorem rat.cast_min - theorem rat.cast_mk - theorem rat.cast_mk_of_ne_zero - theorem rat.cast_mul - theorem rat.cast_mul_of_ne_zero - theorem rat.cast_ne_zero - theorem rat.cast_neg - theorem rat.cast_nonneg - theorem rat.cast_nonpos - theorem rat.cast_of_int - theorem rat.cast_one - theorem rat.cast_pos - theorem rat.cast_pow - theorem rat.cast_sub - theorem rat.cast_sub_of_ne_zero - theorem rat.cast_zero - def rat.ceil - theorem rat.ceil_add_int - theorem rat.ceil_coe - theorem rat.ceil_le - theorem rat.ceil_mono - theorem rat.ceil_sub_int - theorem rat.coe_int_denom - theorem rat.coe_int_eq_mk - theorem rat.coe_int_eq_of_int - theorem rat.coe_int_num - theorem rat.coe_nat_denom - theorem rat.coe_nat_num - theorem rat.eq_cast - theorem rat.eq_cast_of_ne_zero - theorem rat.exists_mul_self - def rat.floor - theorem rat.floor_add_int - theorem rat.floor_coe - theorem rat.floor_le - theorem rat.floor_lt - theorem rat.floor_mono - theorem rat.floor_sub_int - theorem rat.le_ceil - theorem rat.le_floor - theorem rat.le_nat_ceil - theorem rat.lt_nat_ceil - theorem rat.lt_succ_floor - theorem rat.mk_eq_div - theorem rat.mk_le - theorem rat.mk_nonneg - theorem rat.mul_cast_comm - def rat.nat_ceil - theorem rat.nat_ceil_add_nat - theorem rat.nat_ceil_coe - theorem rat.nat_ceil_le - theorem rat.nat_ceil_lt_add_one - theorem rat.nat_ceil_mono - theorem rat.nat_ceil_zero - theorem rat.nonneg_iff_zero_le - theorem rat.num_nonneg_iff_zero_le - theorem rat.num_pos_iff_pos - theorem rat.of_int_eq_mk - def rat.sqrt - theorem rat.sqrt_eq - theorem rat.sqrt_nonneg Added src/data/rat/cast.lean + theorem rat.cast_abs + theorem rat.cast_add + theorem rat.cast_add_of_ne_zero + theorem rat.cast_bit0 + theorem rat.cast_bit1 + theorem rat.cast_coe_int + theorem rat.cast_coe_nat + theorem rat.cast_div + theorem rat.cast_div_of_ne_zero + theorem rat.cast_eq_zero + theorem rat.cast_id + theorem rat.cast_inj + theorem rat.cast_injective + theorem rat.cast_inv + theorem rat.cast_inv_of_ne_zero + theorem rat.cast_le + theorem rat.cast_lt + theorem rat.cast_lt_zero + theorem rat.cast_max + theorem rat.cast_min + theorem rat.cast_mk + theorem rat.cast_mk_of_ne_zero + theorem rat.cast_mul + theorem rat.cast_mul_of_ne_zero + theorem rat.cast_ne_zero + theorem rat.cast_neg + theorem rat.cast_nonneg + theorem rat.cast_nonpos + theorem rat.cast_of_int + theorem rat.cast_one + theorem rat.cast_pos + theorem rat.cast_pow + theorem rat.cast_sub + theorem rat.cast_sub_of_ne_zero + theorem rat.cast_zero + theorem rat.coe_int_denom + theorem rat.coe_int_num + theorem rat.coe_nat_denom + theorem rat.coe_nat_num + theorem rat.eq_cast + theorem rat.eq_cast_of_ne_zero + theorem rat.mul_cast_comm Added src/data/rat/default.lean Modified src/data/rat/denumerable.lean Added src/data/rat/floor.lean + def rat.ceil + theorem rat.ceil_add_int + theorem rat.ceil_coe + theorem rat.ceil_le + theorem rat.ceil_mono + theorem rat.ceil_sub_int + def rat.floor + theorem rat.floor_add_int + theorem rat.floor_coe + theorem rat.floor_def + theorem rat.floor_le + theorem rat.floor_lt + theorem rat.floor_mono + theorem rat.floor_sub_int + theorem rat.le_ceil + theorem rat.le_floor + theorem rat.le_nat_ceil + theorem rat.lt_nat_ceil + theorem rat.lt_succ_floor + def rat.nat_ceil + theorem rat.nat_ceil_add_nat + theorem rat.nat_ceil_coe + theorem rat.nat_ceil_le + theorem rat.nat_ceil_lt_add_one + theorem rat.nat_ceil_mono + theorem rat.nat_ceil_zero Added src/data/rat/order.lean + theorem rat.abs_def + theorem rat.coe_int_eq_mk + theorem rat.coe_int_eq_of_int + theorem rat.exists_mul_self + theorem rat.mk_eq_div + theorem rat.mk_le + theorem rat.mk_nonneg + theorem rat.nonneg_iff_zero_le + theorem rat.num_nonneg_iff_zero_le + theorem rat.num_pos_iff_pos + theorem rat.of_int_eq_mk + def rat.sqrt + theorem rat.sqrt_eq + theorem rat.sqrt_nonneg Modified src/tactic/norm_num.lean 2019-08-01 15:02:26 0d66c87 feat(data/seq): add ext proof, nats def, zip_with lemmas, and extract seq property (#1278) ESTIMATED CHANGES Modified src/data/seq/seq.lean + theorem seq.ge_stable + def seq.nats + theorem seq.nats_nth + theorem seq.zip_with_nth_none' + theorem seq.zip_with_nth_none + theorem seq.zip_with_nth_some +/- def seq + def stream.is_seq Modified src/data/seq/wseq.lean 2019-07-31 16:48:18 49be50f doc(data/padics, data/real/cau_seq, algebra): add doc strings, remove unnecessary assumptions (#1283) * doc(data/padics): add doc strings, remove unnecessary prime assumptions * fix(data/real/cau_seq): remove unnecessary hypotheses * fix(algebra/{field, ordered_field}): remove unused assumptions * doc(data/real/cau_seq): document Cauchy sequences * fix(algebra/field): remove obsolete lemma * fix build * fix build * more unnecessary arguments * Update src/data/padics/padic_numbers.lean * Update src/data/padics/padic_numbers.lean * remove another unnecessary argument (suggested by @sgouezel) ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/field.lean +/- theorem div_mul_div_cancel - theorem field.div_mul_div_cancel +/- theorem units.units.mk0_inj Modified src/algebra/ordered_field.lean +/- theorem nat.inv_pos_of_nat +/- theorem nat.one_div_pos_of_nat Modified src/data/padics/hensel.lean Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean +/- theorem padic.coe_inj Modified src/data/real/cau_seq.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/real.lean 2019-07-31 14:37:08 88d60dc feat(data/pnat/basic): coe_bit0 and coe_bit1 (#1288) ESTIMATED CHANGES Modified src/data/pnat/basic.lean + theorem pnat.coe_bit0 + theorem pnat.coe_bit1 2019-07-31 13:28:58 53680f9 feat(data/matrix): mul_sum and sum_mul (#1253) * feat(data/matrix): mul_sum and sum_mul * Update matrix.lean * add comment explaing funny proof ESTIMATED CHANGES Modified src/data/matrix.lean + theorem matrix.is_add_monoid_hom_mul_left + def matrix.is_add_monoid_hom_mul_right 2019-07-31 10:41:10 da46b32 feat(tactic/symmetry_at): apply symmetry on assumptions (#1269) * feat(tactic/symmetry_at): apply symmetry on assumptions * add docstrings ESTIMATED CHANGES Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified test/tactics.lean 2019-07-31 08:37:56 badeb48 feat(data/equiv/algebra): change mul_equiv field to map_mul (#1287) * feat(data/equiv/algebra): bundle field for mul_equiv * adding docs * Update src/data/equiv/algebra.lean * Update src/data/equiv/algebra.lean Co-Authored-By: sgouezel ESTIMATED CHANGES Modified src/category_theory/endomorphism.lean Modified src/data/equiv/algebra.lean + def add_equiv.apply_symm_apply + def add_equiv.map_add + def add_equiv.map_zero + def add_equiv.refl + def add_equiv.symm + def add_equiv.symm_apply_apply + def add_equiv.to_add_monoid_hom + theorem add_equiv.to_equiv_symm + def add_equiv.trans + def mul_equiv.apply_symm_apply + def mul_equiv.map_mul + def mul_equiv.map_one + def mul_equiv.symm_apply_apply + theorem mul_equiv.to_equiv_symm + def mul_equiv.to_monoid_hom Modified src/data/mv_polynomial.lean Modified src/linear_algebra/basic.lean Modified src/ring_theory/free_comm_ring.lean Modified src/ring_theory/noetherian.lean 2019-07-30 11:45:46 9d589d7 feat(data/nat/fib): add Fibonacci sequence (#1279) ESTIMATED CHANGES Added src/data/nat/fib.lean + def nat.fib + theorem nat.fib_le_fib_succ + theorem nat.fib_mono + theorem nat.fib_one + theorem nat.fib_pos + theorem nat.fib_succ_succ + theorem nat.fib_zero + theorem nat.le_fib_self 2019-07-30 06:58:24 0b47675 feat(algebra,data/complex/exponential): add abs_neg_one_pow, remove hyp from div_le_div_of_le_left (#1280) ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem inv_eq_zero Modified src/algebra/group_power.lean + theorem abs_neg_one_pow Modified src/algebra/ordered_field.lean +/- theorem div_le_div_of_le_left Modified src/data/complex/exponential.lean 2019-07-29 21:10:06 132bc56 doc(windows.md): clarify windows instructions (#1165) * doc(windows.md): clarify windows instructions * fix headers * remove msys2 from windows installation instructions * fix sentence * typo Co-Authored-By: sgouezel * doc(windows.md): small changes typos, and explicitly discourage msys2 ESTIMATED CHANGES Modified docs/install/windows.md 2019-07-29 16:17:43 363f187 feat(tactic/extract_goal): create stand-alone examples out of current goal (#1233) * feat(tactic/extract_example): create stand-alone examples out of current goal * feat(tactic/extract_example): add formatting and options * feat(tactic/extract_goal): rename to `extract_goal` * Update src/tactic/interactive.lean Co-Authored-By: Rob Lewis * make instances anonymous when the name starts with `_` * add doc strings * feat(tactic/interactive): exact_goal works on defs ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.ilast'_mem - theorem list.last'_mem Modified src/data/list/defs.lean + def list.ilast' +/- def list.last' Modified src/data/string/defs.lean + def string.is_prefix_of + def string.is_suffix_of Modified src/tactic/core.lean Modified src/tactic/interactive.lean 2019-07-29 14:13:00 ee15f68 doc(category_theory): adding headers and basic comments to files without (#1264) * doc(category_theory): adding headers and basic comments to files without * Update src/category_theory/instances/rel.lean Co-Authored-By: Johan Commelin * fix imports * more comments, references * refs * Update src/category_theory/monad/adjunction.lean Co-Authored-By: Rob Lewis * fixing all the copyright headers * Update src/category_theory/monad/adjunction.lean Co-Authored-By: Rob Lewis * fix import ESTIMATED CHANGES Modified docs/references.bib Modified src/algebra/CommRing/colimits.lean Modified src/algebra/CommRing/limits.lean Modified src/algebra/Mon/colimits.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/adjunction/fully_faithful.lean Modified src/category_theory/comma.lean Modified src/category_theory/const.lean Modified src/category_theory/currying.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/elements.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/instances/kleisli.lean Modified src/category_theory/instances/rel.lean + def category_theory.Rel - def category_theory.rel Modified src/category_theory/isomorphism.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/lattice.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/binary_products.lean Modified src/category_theory/limits/shapes/default.lean Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/types.lean Modified src/category_theory/monad/adjunction.lean Modified src/category_theory/monad/algebra.lean Modified src/category_theory/monad/limits.lean Modified src/category_theory/monoidal/category.lean Modified src/category_theory/monoidal/category_aux.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/monoidal/types.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/opposites.lean Modified src/category_theory/pempty.lean Modified src/category_theory/products/associator.lean Modified src/category_theory/products/bifunctor.lean Modified src/category_theory/products/default.lean Modified src/category_theory/punit.lean Modified src/category_theory/sparse.lean Modified src/category_theory/types.lean Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean Modified src/tactic/auto_cases.lean Modified src/tactic/chain.lean Modified src/tactic/library_search.lean Modified src/tactic/local_cache.lean Modified src/tactic/rewrite_all/basic.lean Modified src/tactic/rewrite_all/congr.lean Modified src/tactic/rewrite_all/default.lean Modified src/tactic/slice.lean Modified src/tactic/tidy.lean Modified src/topology/Top/adjunctions.lean Modified src/topology/Top/basic.lean Modified src/topology/Top/default.lean Modified src/topology/Top/epi_mono.lean Modified src/topology/Top/limits.lean Modified src/topology/Top/open_nhds.lean Modified src/topology/Top/opens.lean Modified src/topology/Top/presheaf.lean Modified src/topology/Top/presheaf_of_functions.lean Modified src/topology/Top/stalks.lean Modified src/topology/algebra/TopCommRing/basic.lean Modified src/topology/algebra/continuous_functions.lean Modified test/fin_cases.lean Modified test/library_search/basic.lean Modified test/library_search/ordered_ring.lean Modified test/library_search/ring_theory.lean Modified test/mllist.lean Modified test/rewrite_all.lean Modified test/tidy.lean 2019-07-29 11:22:47 5adeebf feat(algebra/group/hom): bundled monoid and group homs (#1271) * feat(algebra/group/hom): adding bundled group homs * adding module docstring * moving some group stuff into monoid * responding to PR comments * mk'' -> mk' * spaces before `}` * Update src/algebra/group/hom.lean * Update src/algebra/group/hom.lean * Update src/algebra/group/hom.lean * Update src/algebra/group/hom.lean * Update hom.lean ESTIMATED CHANGES Modified src/algebra/group/hom.lean + def add_monoid_hom.comp + def add_monoid_hom.ext + def add_monoid_hom.id + def add_monoid_hom.map_add + theorem add_monoid_hom.map_neg + theorem add_monoid_hom.map_sub + def add_monoid_hom.map_zero + def add_monoid_hom.mk' + def add_monoid_hom.neg + structure add_monoid_hom + def monoid_hom.comp + def monoid_hom.ext + def monoid_hom.id + theorem monoid_hom.map_div + theorem monoid_hom.map_inv + theorem monoid_hom.map_mul + theorem monoid_hom.map_one + def monoid_hom.mk' + structure monoid_hom 2019-07-28 10:35:05 879da1c fix(algebraic_geometry/presheafedspace): fix lame proofs (#1273) * fix(algebraic_geometry/presheafedspace): fix lame proofs * fix * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean - theorem algebraic_geometry.PresheafedSpace.comp_c Modified src/algebraic_geometry/stalks.lean 2019-07-28 05:13:16 9689f4d feat(tactic/interactive): move `rotate` into interactive namespace (#1272) also document `swap` Add test ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/interactive.lean Modified test/tactics.lean 2019-07-25 14:09:56+02:00 d5a5393 doc(contribute/index.md): add line about large PRs [ci skip] (#1267) ESTIMATED CHANGES Modified docs/contribute/index.md 2019-07-25 10:40:50 03c0d6c feat(algebra/group/basic): add_add_neg_cancel'_right (#1261) * feat(algebra/group/basic): add_add_neg_cancel'_right * fix build ESTIMATED CHANGES Modified src/algebra/group/basic.lean + theorem add_add_neg_cancel'_right Modified src/analysis/convex.lean Modified src/number_theory/pell.lean Modified src/topology/metric_space/isometry.lean 2019-07-25 10:48:28+02:00 926467d doc(contribute/style.md): fix section on comments [ci skip] (#1265) ESTIMATED CHANGES Modified docs/contribute/style.md 2019-07-25 08:45:56 1000ae8 doc(*): new documentation requirements (#1229) * feat(docs/contribute/doc): template for documentation * doc(data/padics/padic_norm): new doc style * doc(docs/contribute/code-review): add link to doc requirements * doc(.github/PULL_REQUEST_TEMPLATE): add link to doc requirements * doc(topology/basic): adds new style documentation * feat(tactic/doc_blame): a user command #doc_blame It lists definitions without docstrings in the current file * perf(tactic/doc_blame): filter declarations earlier * doc(contribute/doc): More doc style explanations * doc(data/padics/padic_norm): finish documenting * doc(docs/contribute/docs): more text about documentation requirements * feat(tactic/doc_blame): add option to blame theorems also * doc(cardinal/ordinal): add some documentation add header to cardinal.lean fix some information in topological_spaces.md (but not all) * fix(data/padics): remove leftover exit command * doc(*): update proposed doc style * doc(docs/contribute/doc.md): update doc style guide * feat(docs/references): add mathlib references bibtex * update doc style in times_cont_diff and add to list of examples * fix(docs/contribute/doc): clarify implementation notes * doc(tactic/doc_blame): add header ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md Modified docs/contribute/code-review.md Added docs/contribute/doc.md Added docs/references.bib Modified docs/theories/topological_spaces.md Modified src/analysis/calculus/times_cont_diff.lean Modified src/data/padics/padic_norm.lean Modified src/set_theory/cardinal.lean Modified src/set_theory/ordinal.lean Modified src/tactic/basic.lean Added src/tactic/doc_blame.lean + def name.is_not_auto Modified src/topology/basic.lean 2019-07-24 15:32:15 5125f11 feat(data/matrix): smul_val (#1262) * feat(data/matrix): smul_val * Update src/data/matrix.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/data/matrix.lean + theorem matrix.smul_val 2019-07-24 11:03:46 ed57916 feat(category_theory): functions to convert is_lawful_functor and is_… (#1258) * feat(category_theory): functions to convert is_lawful_functor and is_lawful_monad to their corresponding category_theory concepts * Fix typo * feat(category): add mjoin_map_pure, mjoin_pure to the simpset (and use <$> notation) ESTIMATED CHANGES Modified src/category/basic.lean + theorem mjoin_map_map + theorem mjoin_map_mjoin + theorem mjoin_map_pure + theorem mjoin_pure Modified src/category_theory/monad/default.lean Added src/category_theory/monad/types.lean Modified src/category_theory/types.lean + def category_theory.of_type_functor + theorem category_theory.of_type_functor_map + theorem category_theory.of_type_functor_obj 2019-07-24 05:14:48 b0c5251 cleanup(category_theory/monoidal): use equiv on prod/punit intead of adding new constants (#1257) ESTIMATED CHANGES Modified src/category_theory/monoidal/types.lean - def category_theory.monoidal.types_associator - def category_theory.monoidal.types_associator_inv - def category_theory.monoidal.types_braiding - def category_theory.monoidal.types_braiding_inv - def category_theory.monoidal.types_left_unitor - def category_theory.monoidal.types_left_unitor_inv - def category_theory.monoidal.types_right_unitor - def category_theory.monoidal.types_right_unitor_inv 2019-07-23 11:10:07 4a5529a feat(data/array): add some simp attributes (#1255) ESTIMATED CHANGES Modified src/data/array/lemmas.lean +/- theorem array.read_foreach +/- theorem array.read_map₂ 2019-07-22 19:45:42 a33315d feat(linear_algebra/dim): findim equivalence (#1217) * feat(linear_algebra/dim): findim equivalence * feat(linear_algebra/dim): two versions of dim_fun * feat(linear_algebra/dim): clean up ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem dim_fin_fun +/- theorem dim_fun + theorem dim_fun_eq_lift_mul Modified src/linear_algebra/finsupp_vector_space.lean +/- theorem eq_bot_iff_dim_eq_zero + def equiv_of_dim_eq_dim - theorem equiv_of_dim_eq_dim + theorem equiv_of_dim_eq_lift_dim + theorem fin_dim_vectorspace_equiv +/- theorem injective_of_surjective Modified src/set_theory/cardinal.lean + theorem cardinal.mk_prod + theorem cardinal.sum_const_eq_lift_mul 2019-07-22 16:29:29 3e77fec feat(linear_algebra/finite_dimensional): finite dimensional vector spaces (#1241) * feat(linear_algebra/finite_dimensional): finite dimensional vector spaces * rw `of_span_finite_eq_top` to `of_fg` * prove infinite.nat_embedding * generalize finite_of_linear_independent to noetherian modules * fix build * fix build (ring_theory/polynomial) ESTIMATED CHANGES Modified src/data/fintype.lean Modified src/linear_algebra/basis.lean +/- theorem eq_of_linear_independent_of_span_subtype + theorem le_of_span_le_span + theorem span_le_span_iff Modified src/linear_algebra/dimension.lean +/- theorem dim_bot + theorem dim_top Added src/linear_algebra/finite_dimensional.lean + theorem finite_dimensional.card_eq_findim + theorem finite_dimensional.dim_lt_omega + theorem finite_dimensional.eq_top_of_findim_eq + theorem finite_dimensional.exists_is_basis_finite + theorem finite_dimensional.findim_eq_dim + theorem finite_dimensional.finite_dimensional_iff_dim_lt_omega + theorem finite_dimensional.of_fg + def finite_dimensional + theorem linear_map.injective_iff_surjective + theorem linear_map.ker_eq_bot_iff_range_eq_top + theorem linear_map.mul_eq_one_comm + theorem linear_map.mul_eq_one_of_mul_eq_one + theorem linear_map.surjective_of_injective Modified src/ring_theory/noetherian.lean + theorem finite_of_linear_independent +/- theorem well_founded_submodule_gt Modified src/ring_theory/polynomial.lean 2019-07-22 11:20:31 fd91660 feat(data/power_series): Add multivariate power series and prove basic API (#1244) * First start on power_series * Innocent changes * Almost a comm_semiring * Defined hom from mv_polynomial to mv_power_series; sorrys remain * Attempt that seem to go nowhere * Working on coeff_mul for polynomials * Small progress * Finish mv_polynomial.coeff_mul * Cleaner proof of mv_polynomial.coeff_mul * Fix build * WIP * Finish proof of mul_assoc * WIP * Golfing coeff_mul * WIP * Crazy wf is crazy * mv_power_series over local ring is local * WIP * Add empty line * wip * wip * WIP * WIP * WIP * Add header comments * WIP * WIP * Fix finsupp build * Fix build, hopefully * Fix build: ideals * More docs * Update src/data/power_series.lean Fix typo. * Fix build -- bump instance search depth * Make changes according to some of the review comments * Use 'formal' in the names * Use 'protected' in more places, remove '@simp's * Make 'inv_eq_zero' an iff * Generalize to non-commutative scalars * Move file * Undo name change, back to 'power_series' * spelling mistake * spelling mistake ESTIMATED CHANGES Modified src/analysis/calculus/mean_value.lean Modified src/data/finsupp.lean + theorem finsupp.le_iff + def finsupp.lt_wf + theorem finsupp.single_eq_zero + theorem finsupp.single_right_inj + theorem finsupp.sum_id_lt_of_lt + theorem finsupp.to_multiset_strict_mono + theorem finsupp.unique_single_eq_iff Modified src/ring_theory/ideals.lean Added src/ring_theory/power_series.lean + def mv_polynomial.to_mv_power_series + theorem mv_polynomial.to_mv_power_series_coeff + def mv_power_series.C + theorem mv_power_series.C_add + theorem mv_power_series.C_mul + theorem mv_power_series.C_one + theorem mv_power_series.C_zero + def mv_power_series.X + def mv_power_series.coeff + theorem mv_power_series.coeff_C + theorem mv_power_series.coeff_C_zero + theorem mv_power_series.coeff_X'' + theorem mv_power_series.coeff_X' + theorem mv_power_series.coeff_X + theorem mv_power_series.coeff_add + theorem mv_power_series.coeff_inv + theorem mv_power_series.coeff_inv_aux + theorem mv_power_series.coeff_inv_of_unit + theorem mv_power_series.coeff_map + theorem mv_power_series.coeff_monomial' + theorem mv_power_series.coeff_monomial + theorem mv_power_series.coeff_mul + theorem mv_power_series.coeff_neg + theorem mv_power_series.coeff_one + theorem mv_power_series.coeff_one_zero + theorem mv_power_series.coeff_trunc + theorem mv_power_series.coeff_zero + theorem mv_power_series.coeff_zero_inv + theorem mv_power_series.coeff_zero_inv_of_unit + theorem mv_power_series.ext + theorem mv_power_series.ext_iff + theorem mv_power_series.inv_eq_zero + def mv_power_series.inv_of_unit + theorem mv_power_series.inv_of_unit_eq' + theorem mv_power_series.inv_of_unit_eq + def mv_power_series.is_local_ring + theorem mv_power_series.is_unit_coeff_zero + def mv_power_series.map + theorem mv_power_series.map_add + theorem mv_power_series.map_comp + theorem mv_power_series.map_id + theorem mv_power_series.map_mul + theorem mv_power_series.map_one + theorem mv_power_series.map_zero + def mv_power_series.monomial + theorem mv_power_series.monomial_add + theorem mv_power_series.monomial_zero + theorem mv_power_series.mul_inv_of_unit + def mv_power_series.trunc + theorem mv_power_series.trunc_C + theorem mv_power_series.trunc_add + theorem mv_power_series.trunc_one + theorem mv_power_series.trunc_zero + def mv_power_series + def polynomial.to_power_series + theorem polynomial.to_power_series_coeff + def power_series.C + theorem power_series.C_add + theorem power_series.C_mul + theorem power_series.C_one + theorem power_series.C_zero + def power_series.X + def power_series.coeff + theorem power_series.coeff_C + theorem power_series.coeff_C_zero + theorem power_series.coeff_X' + theorem power_series.coeff_X + theorem power_series.coeff_add + theorem power_series.coeff_inv + theorem power_series.coeff_inv_aux + theorem power_series.coeff_inv_of_unit + theorem power_series.coeff_map + theorem power_series.coeff_mk + theorem power_series.coeff_monomial' + theorem power_series.coeff_monomial + theorem power_series.coeff_mul + theorem power_series.coeff_one + theorem power_series.coeff_one_zero + theorem power_series.coeff_trunc + theorem power_series.coeff_zero + theorem power_series.coeff_zero_inv + theorem power_series.coeff_zero_inv_of_unit + theorem power_series.ext + theorem power_series.ext_iff + theorem power_series.inv_eq_zero + def power_series.inv_of_unit + theorem power_series.inv_of_unit_eq' + theorem power_series.inv_of_unit_eq + theorem power_series.is_local_ring + def power_series.map + theorem power_series.map_add + theorem power_series.map_comp + theorem power_series.map_id + theorem power_series.map_mul + theorem power_series.map_one + theorem power_series.map_zero + def power_series.mk + def power_series.monomial + theorem power_series.monomial_add + theorem power_series.monomial_eq_mk + theorem power_series.monomial_zero + theorem power_series.mul_inv_of_unit + def power_series.trunc + theorem power_series.trunc_C + theorem power_series.trunc_add + theorem power_series.trunc_one + theorem power_series.trunc_zero + def power_series 2019-07-22 08:00:24 7c09ed5 feat(category_theory/*): define `Cat` and a fully faithful functor `Mon ⥤ Cat` (#1235) * feat(category_theory/*): define `Cat` and a fully faithful functor `Mon ⥤ Cat` * Drop 2 commas * Drop `functor.id_comp` etc, add `Cat.str` instance, adjust module-level comments * Make `α` and `β` arguments of `map_hom_equiv` explicit This way `e α β f` is automatically interpreted as `(e α β).to_fun f`. ESTIMATED CHANGES Added src/category_theory/Cat.lean + def category_theory.Cat.objects + def category_theory.Cat.of + def category_theory.Cat Modified src/category_theory/functor.lean Added src/category_theory/single_obj.lean + def Mon.to_Cat + def category_theory.single_obj.map_hom + theorem category_theory.single_obj.map_hom_comp + def category_theory.single_obj.map_hom_equiv + theorem category_theory.single_obj.map_hom_id + def category_theory.single_obj.to_End + theorem category_theory.single_obj.to_End_def + def category_theory.single_obj.to_End_equiv + def category_theory.single_obj 2019-07-22 09:13:12+02:00 b5a641e chore(data/polynomial): clean up commented code (#1251) Commented code that wasn't removed after a refactor. ESTIMATED CHANGES Modified src/data/polynomial.lean 2019-07-22 01:35:42 f24dc98 feat(logic/unique): forall_iff and exists_iff (#1249) Maybe these should be `@[simp]`. My use case in `fin 1` and it's slightly annoying to have `default (fin 1)` everwhere instead of `0`, but maybe that should also be a `@[simp]` lemma. ESTIMATED CHANGES Modified src/logic/unique.lean + theorem unique.exists_iff + theorem unique.forall_iff 2019-07-22 01:13:25 a8c2923 refactor(ring_theory/noetherian): change order of instance arguments (#1250) Zulip discussion https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Type.20class.20failure This change makes some type class searches work better. ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean 2019-07-20 18:50:28 93419b3 chore(data/equiv/algebra): add `ring.to_mul/add_equiv`, DRY (#1247) ESTIMATED CHANGES Modified src/data/equiv/algebra.lean + def ring_equiv.to_add_equiv + def ring_equiv.to_mul_equiv 2019-07-20 17:33:46 d371da6 fix(group_theory/subgroup): fix some typos introduced in 66a86ffe0 (#1246) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2019-07-20 06:49:37 6e3516d feat(category_theory/monad): monadic adjunctions (#1176) * feat(category_theory/limits): equivalences create limits * equivalence lemma * feat(category_theory/monad): monadic adjunctions * move file * fix * add @[simp] * use right_adjoint_preserves_limits * fix * fix * undo weird changes in topology files * formatting * do colimits too * missing proofs * convert monad to a typeclass decorating a functor * changing name * cleaning up * oops * minor ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + def category_theory.left_adjoint + def category_theory.right_adjoint Added src/category_theory/adjunction/fully_faithful.lean Added src/category_theory/monad/adjunction.lean + theorem category_theory.adjunction.monad_η_app + theorem category_theory.adjunction.monad_μ_app + def category_theory.monad.comparison + def category_theory.monad.comparison_forget + theorem category_theory.monad.comparison_map_f + theorem category_theory.monad.comparison_obj_a + theorem category_theory.reflective.comparison_ess_surj_aux Added src/category_theory/monad/algebra.lean + def category_theory.monad.adj + theorem category_theory.monad.algebra.comp_f + def category_theory.monad.algebra.hom.comp + theorem category_theory.monad.algebra.hom.comp_f + theorem category_theory.monad.algebra.hom.ext + def category_theory.monad.algebra.hom.id + theorem category_theory.monad.algebra.hom.id_f + structure category_theory.monad.algebra.hom + theorem category_theory.monad.algebra.id_f + structure category_theory.monad.algebra + def category_theory.monad.forget + theorem category_theory.monad.forget_map + def category_theory.monad.free + theorem category_theory.monad.free_map_f + theorem category_theory.monad.free_obj_a Added src/category_theory/monad/basic.lean Added src/category_theory/monad/default.lean Added src/category_theory/monad/limits.lean + def category_theory.has_limits_of_reflective + def category_theory.monad.forget_creates_limits.c + theorem category_theory.monad.forget_creates_limits.c_π + def category_theory.monad.forget_creates_limits.cone_point + theorem category_theory.monad.forget_creates_limits.cone_point_a + def category_theory.monad.forget_creates_limits.γ + theorem category_theory.monad.forget_creates_limits.γ_app + def category_theory.monad.forget_creates_limits + def category_theory.monadic_creates_limits Modified src/category_theory/natural_isomorphism.lean + def category_theory.nat_iso.is_iso_app_of_is_iso Modified src/topology/algebra/TopCommRing/basic.lean 2019-07-19 17:09:12 9505e5b fix(data/matrix): use pi.module for the module structure (#1242) * fix(data/matrix): use pi.module for the module structure * Update matrix.lean * Update matrix.lean * Update matrix.lean ESTIMATED CHANGES Modified src/data/matrix.lean 2019-07-19 14:39:27 07ae80f refactor(algebra/*): delete `free_monoid` from `algebra/free`, restore some functions in `algebra/group/with_one` (#1227) * refactor(algebra/*): Remove `free_monoid` from `algebra/free`, fixes #929 * use `namespace with_one` * Add `with_one.coe_is_mul_hom` * Restore `with_one.lift` etc from `algebra/free` `free_monoid.lift` etc * Define `with_one.map` based on the deleted `free_monoid.map` Define using `option.map`, and prove equivalence to `λ f, lift $ coe ∘ f`. ESTIMATED CHANGES Modified src/algebra/free.lean - def semigroup.free_monoid.lift - theorem semigroup.free_monoid.lift_mul - theorem semigroup.free_monoid.lift_of - theorem semigroup.free_monoid.lift_one - theorem semigroup.free_monoid.lift_unique - def semigroup.free_monoid.map - theorem semigroup.free_monoid.map_mul - theorem semigroup.free_monoid.map_of - def semigroup.free_monoid.of - theorem semigroup.free_monoid.of_mul - def semigroup.free_monoid Modified src/algebra/group/with_one.lean +/- theorem with_one.coe_inj +/- theorem with_one.coe_ne_one + def with_one.lift + theorem with_one.lift_coe + theorem with_one.lift_one + theorem with_one.lift_unique + def with_one.map + theorem with_one.map_eq +/- theorem with_one.mul_coe +/- theorem with_one.ne_one_iff_exists +/- theorem with_one.one_ne_coe 2019-07-19 14:09:02 74754ac feat(analysis/calculus/times_cont_diff): multiple differentiability (#1226) * feat(analysis/calculus/times_cont_diff): multiple differentiability * style * style * style and documentation * better wording ESTIMATED CHANGES Added src/analysis/calculus/times_cont_diff.lean + theorem is_bounded_bilinear_map.times_cont_diff + theorem is_bounded_linear_map.times_cont_diff + def iterated_continuous_linear_map.normed_group_rec + def iterated_continuous_linear_map.normed_space_rec + def iterated_continuous_linear_map + def iterated_fderiv + theorem iterated_fderiv_succ + def iterated_fderiv_within + theorem iterated_fderiv_within_congr + theorem iterated_fderiv_within_inter + theorem iterated_fderiv_within_inter_open + theorem iterated_fderiv_within_succ + theorem iterated_fderiv_within_univ + theorem iterated_fderiv_within_zero + theorem iterated_fderiv_zero + theorem times_cont_diff.comp + theorem times_cont_diff.comp_is_bounded_linear + theorem times_cont_diff.continuous + theorem times_cont_diff.continuous_fderiv + theorem times_cont_diff.continuous_fderiv_apply + theorem times_cont_diff.of_le + theorem times_cont_diff.of_succ + theorem times_cont_diff.prod + theorem times_cont_diff.times_cont_diff_fderiv_apply + theorem times_cont_diff.times_cont_diff_on + def times_cont_diff + theorem times_cont_diff_const + theorem times_cont_diff_fst + theorem times_cont_diff_id + theorem times_cont_diff_iff_times_cont_diff_rec + theorem times_cont_diff_on.comp + theorem times_cont_diff_on.comp_is_bounded_linear + theorem times_cont_diff_on.congr + theorem times_cont_diff_on.congr_mono' + theorem times_cont_diff_on.congr_mono + theorem times_cont_diff_on.continuous_on + theorem times_cont_diff_on.continuous_on_fderiv_within + theorem times_cont_diff_on.continuous_on_fderiv_within_apply + theorem times_cont_diff_on.mono + theorem times_cont_diff_on.of_le + theorem times_cont_diff_on.of_succ + theorem times_cont_diff_on.prod + def times_cont_diff_on + theorem times_cont_diff_on_fderiv_within + theorem times_cont_diff_on_fderiv_within_apply + theorem times_cont_diff_on_fderiv_within_nat + theorem times_cont_diff_on_iff_times_cont_diff_on_rec + theorem times_cont_diff_on_of_locally_times_cont_diff_on + theorem times_cont_diff_on_rec.continuous_on_iterated_fderiv_within + theorem times_cont_diff_on_rec.differentiable_on + theorem times_cont_diff_on_rec.of_succ + def times_cont_diff_on_rec + theorem times_cont_diff_on_rec_succ + theorem times_cont_diff_on_rec_univ + theorem times_cont_diff_on_rec_zero + theorem times_cont_diff_on_succ + theorem times_cont_diff_on_top + theorem times_cont_diff_on_univ + theorem times_cont_diff_on_zero + theorem times_cont_diff_rec.continuous + theorem times_cont_diff_rec.differentiable + theorem times_cont_diff_rec.of_succ + def times_cont_diff_rec + theorem times_cont_diff_rec_succ + theorem times_cont_diff_rec_zero + theorem times_cont_diff_snd + theorem times_cont_diff_succ + theorem times_cont_diff_top + theorem times_cont_diff_zero Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_bilinear_map_apply + theorem is_bounded_linear_map.fst + theorem is_bounded_linear_map.snd 2019-07-18 15:15:54 8b102eb feat(topology/algebra/group): define filter pointwise addition (#1215) * Create .DS_Store * Revert "Create .DS_Store" This reverts commit 5612886d493aef59205eddc5a34a75e6e5ba22c1. * feat (topology/algebral/uniform_group) : prove dense_embedding.extend extends continuous linear maps linearly * Update src/algebra/pointwise.lean Co-Authored-By: sgouezel * Fix styles * Add homomorphism instances; fix conflicting names * Update group.lean * Update uniform_group.lean * Add header; prove every topological group is regular * Fix headers and errors * Update pi_instances.lean ESTIMATED CHANGES Modified src/algebra/pi_instances.lean Modified src/algebra/pointwise.lean + theorem set.image_pointwise_mul - theorem set.mul_subset_mul + theorem set.pointwise_mul_eq_Union_mul_left + theorem set.pointwise_mul_eq_Union_mul_right + theorem set.pointwise_mul_ne_empty + theorem set.preimage_pointwise_mul_preimage_subset + theorem set.univ_pointwise_mul_univ Added src/order/filter/pointwise.lean + theorem filter.comap_mul_comap_le + theorem filter.map_pointwise_mul + theorem filter.map_pointwise_one + theorem filter.mem_pointwise_mul + theorem filter.mem_pointwise_one + theorem filter.mul_mem_pointwise_mul + def filter.pointwise_add + def filter.pointwise_add_map_is_add_monoid_hom + def filter.pointwise_mul + theorem filter.pointwise_mul_assoc + theorem filter.pointwise_mul_le_mul + def filter.pointwise_mul_map_is_monoid_hom + def filter.pointwise_mul_monoid + theorem filter.pointwise_mul_ne_bot + theorem filter.pointwise_mul_one + def filter.pointwise_one + theorem filter.pointwise_one_mul + theorem filter.tendsto_mul_mul Modified src/topology/algebra/group.lean + theorem is_closed_map_mul_left + theorem is_closed_map_mul_right + theorem is_open_pointwise_mul_left + theorem is_open_pointwise_mul_right + def nhds_is_mul_hom + theorem nhds_pointwise_mul + theorem topological_group.regular_space + theorem topological_group.t1_space + theorem topological_group.t2_space Modified src/topology/constructions.lean 2019-07-18 06:27:03 e704f94 fix(data/{nat,int}/parity): fix definition of 'even' (#1240) ESTIMATED CHANGES Modified src/data/int/parity.lean +/- def int.even Modified src/data/nat/parity.lean +/- def nat.even 2019-07-17 17:57:06+02:00 86e7287 fix(data/zmod/basic) remove unused argument from instance (#1239) ESTIMATED CHANGES Modified src/data/zmod/basic.lean 2019-07-17 09:56:01 d6fd044 feat(*): add nat.antidiagonal and use it for polynomial.mul_coeff (#1237) ESTIMATED CHANGES Modified src/data/finset.lean + def finset.nat.antidiagonal + theorem finset.nat.antidiagonal_zero + theorem finset.nat.card_antidiagonal + theorem finset.nat.mem_antidiagonal Modified src/data/list/basic.lean + def list.nat.antidiagonal + theorem list.nat.antidiagonal_zero + theorem list.nat.length_antidiagonal + theorem list.nat.mem_antidiagonal + theorem list.nat.nodup_antidiagonal Modified src/data/multiset.lean + def multiset.nat.antidiagonal + theorem multiset.nat.antidiagonal_zero + theorem multiset.nat.card_antidiagonal + theorem multiset.nat.mem_antidiagonal + theorem multiset.nat.nodup_antidiagonal Modified src/data/polynomial.lean + theorem polynomial.coeff_mul - theorem polynomial.coeff_mul_left - theorem polynomial.coeff_mul_right 2019-07-16 22:00:41 8785bd0 refactor(data/multiset): rename diagonal to antidiagonal (#1236) * refactor(data/multiset): rename diagonal to antidiagonal * Add docstrings * fix build * Fix build ESTIMATED CHANGES 2019-07-16 21:01:49 e186fbb feat(data/mv_polynomial): coeff_mul (#1216) * feat(data/mv_polynomial): coeff_mul * refactor(data/multiset): rename diagonal to antidiagonal * Rename diagonal to antidiagonal * Define antidiagonal as to_finsupp instead of to_finset * Add docstrings * fix build * Fix build ESTIMATED CHANGES Modified src/data/finsupp.lean + def finsupp.antidiagonal + theorem finsupp.antidiagonal_zero + theorem finsupp.mem_antidiagonal_support + theorem finsupp.swap_mem_antidiagonal_support + theorem finsupp.to_multiset_to_finsupp + def multiset.to_finsupp + theorem multiset.to_finsupp_add + theorem multiset.to_finsupp_apply + theorem multiset.to_finsupp_singleton + theorem multiset.to_finsupp_support + theorem multiset.to_finsupp_to_multiset + theorem multiset.to_finsupp_zero Modified src/data/multiset.lean + def multiset.antidiagonal + theorem multiset.antidiagonal_coe' + theorem multiset.antidiagonal_coe + theorem multiset.antidiagonal_cons + theorem multiset.antidiagonal_map_fst + theorem multiset.antidiagonal_map_snd + theorem multiset.antidiagonal_zero + theorem multiset.card_antidiagonal - theorem multiset.card_diagonal - def multiset.diagonal - theorem multiset.diagonal_coe' - theorem multiset.diagonal_coe - theorem multiset.diagonal_cons - theorem multiset.diagonal_map_fst - theorem multiset.diagonal_map_snd - theorem multiset.diagonal_zero + theorem multiset.mem_antidiagonal - theorem multiset.mem_diagonal +/- theorem multiset.revzip_powerset_aux' +/- theorem multiset.revzip_powerset_aux Modified src/data/mv_polynomial.lean + theorem mv_polynomial.coeff_X' +/- theorem mv_polynomial.coeff_X + theorem mv_polynomial.coeff_X_pow + theorem mv_polynomial.coeff_mul +/- theorem mv_polynomial.coeff_mul_X' +/- theorem mv_polynomial.coeff_mul_X 2019-07-15 21:35:36 92ac50c chore(data/finset): rename le_min_of_mem to min_le_of_mem (#1231) * chore(data/finset): rename le_min_of_mem to min_le_of_mem * fix build ESTIMATED CHANGES Modified src/data/finset.lean - theorem finset.le_min_of_mem +/- theorem finset.min'_le + theorem finset.min_le_of_mem 2019-07-15 14:48:52 7217f13 feat(data/option/basic): bind_eq_none (#1232) * feat(data/option/basis): bind_eq_none * delete extra line ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.bind_eq_none 2019-07-15 13:09:35 46074fc chore(data/fintype): change `unique.fintype` to priority 0 (#1230) ESTIMATED CHANGES Modified src/data/fintype.lean + def unique.fintype 2019-07-15 00:44:50 0e9ac84 feat(tactic/rcases): add obtain tactic (#1218) * feat(tactic/rcases): add obtain tactic * style(tactic/rcases): line break * doc(docs/tactics): document obtain * feat(tactic/obtain): support := syntax ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/core.lean Modified src/tactic/rcases.lean Modified test/rcases.lean 2019-07-14 11:14:14 dcf0130 feat(data/pequiv): partial equivalences (#1206) * feat(data/pequiv): partial equivalences * Update src/data/pequiv.lean Co-Authored-By: Floris van Doorn * use notation ESTIMATED CHANGES Added src/data/pequiv.lean + def equiv.to_pequiv + theorem equiv.to_pequiv_refl + theorem equiv.to_pequiv_symm + theorem equiv.to_pequiv_trans + theorem pequiv.bot_apply + theorem pequiv.bot_trans + theorem pequiv.coe_mk_apply + theorem pequiv.eq_some_iff + theorem pequiv.ext + theorem pequiv.ext_iff + theorem pequiv.injective_of_forall_is_some + theorem pequiv.injective_of_forall_ne_is_some + theorem pequiv.is_some_symm_get + theorem pequiv.le_def + theorem pequiv.mem_iff_mem + theorem pequiv.mem_of_set_iff + theorem pequiv.mem_of_set_self_iff + theorem pequiv.mem_single + theorem pequiv.mem_single_iff + theorem pequiv.mem_trans + def pequiv.of_set + theorem pequiv.of_set_eq_refl + theorem pequiv.of_set_eq_some_iff + theorem pequiv.of_set_eq_some_self_iff + theorem pequiv.of_set_symm + theorem pequiv.of_set_univ + theorem pequiv.refl_apply + theorem pequiv.refl_trans + theorem pequiv.refl_trans_apply + def pequiv.single + theorem pequiv.single_apply + theorem pequiv.single_apply_of_ne + theorem pequiv.single_subsingleton_eq_refl + theorem pequiv.single_trans_of_eq_none + theorem pequiv.single_trans_of_mem + theorem pequiv.single_trans_single + theorem pequiv.single_trans_single_of_ne + theorem pequiv.symm_bot + theorem pequiv.symm_injective + theorem pequiv.symm_refl + theorem pequiv.symm_refl_apply + theorem pequiv.symm_single + theorem pequiv.symm_symm + theorem pequiv.symm_symm_apply + theorem pequiv.symm_trans + theorem pequiv.symm_trans_rev + theorem pequiv.trans_assoc + theorem pequiv.trans_bot + theorem pequiv.trans_eq_none + theorem pequiv.trans_eq_some + theorem pequiv.trans_refl + theorem pequiv.trans_refl_apply + theorem pequiv.trans_single_of_eq_none + theorem pequiv.trans_single_of_mem + theorem pequiv.trans_symm + theorem pequiv.trans_symm_eq_iff_forall_is_some + structure pequiv 2019-07-14 05:25:05 03e6d0e chore(algebra/group/hom): add `is_monoid_hom.of_mul`, use it (#1225) * Let `to_additive` generate `is_add_monoid_hom.map_add` * Converting `is_mul_hom` into `is_monoid_hom` doesn't require `α` to be a group * Simplify the proof of `is_add_group_hom.map_sub` Avoid `simp` (without `only`) ESTIMATED CHANGES Modified src/algebra/group/hom.lean - theorem is_add_monoid_hom.map_add +/- theorem is_group_hom.map_one - theorem is_group_hom.to_is_monoid_hom + theorem is_monoid_hom.of_mul 2019-07-13 20:54:54 51f2645 feat(pformat): provide `trace!` and `fail!` and allow tactic values (#1222) ESTIMATED CHANGES Modified src/tactic/core.lean 2019-07-13 18:17:06 a1cfc5c feat(logic,data/equiv,prod): various lemmas (#1224) * feat(logic,data/equiv,prod): various lemmas * Update basic.lean * Update basic.lean ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.Pi_curry Modified src/data/prod.lean + theorem prod.map_fst' + theorem prod.map_snd' Modified src/logic/basic.lean + theorem exists_imp_exists' +/- theorem exists_swap +/- theorem forall_swap 2019-07-13 16:25:07 0eea0d9 feat(data/{nat,int}/parity): the 'even' predicate on nat and int (#1219) * feat(data/{nat,int}/parity): the 'even' predicate on nat and int * fix(data/{nat,int}/parity): shorten proof * delete extra comma ESTIMATED CHANGES Added src/data/int/parity.lean + def int.even + theorem int.even_add + theorem int.even_bit0 + theorem int.even_coe_nat + theorem int.even_iff + theorem int.even_mul + theorem int.even_pow + theorem int.even_sub + theorem int.even_zero + theorem int.mod_two_ne_one + theorem int.mod_two_ne_zero + theorem int.not_even_bit1 + theorem int.not_even_one Added src/data/nat/parity.lean + def nat.even + theorem nat.even_add + theorem nat.even_bit0 + theorem nat.even_iff + theorem nat.even_mul + theorem nat.even_pow + theorem nat.even_sub + theorem nat.even_succ + theorem nat.even_zero + theorem nat.mod_two_ne_one + theorem nat.mod_two_ne_zero + theorem nat.not_even_bit1 + theorem nat.not_even_one 2019-07-13 01:46:58 6db5829 feat(data/finmap): extend the API (#1223) ESTIMATED CHANGES Modified src/data/finmap.lean + def finmap.all + def finmap.any + theorem finmap.disjoint.symm + theorem finmap.disjoint.symm_iff + def finmap.disjoint + theorem finmap.disjoint_empty + theorem finmap.disjoint_union_left + theorem finmap.disjoint_union_right +/- theorem finmap.empty_to_finmap + theorem finmap.empty_union + theorem finmap.erase_erase + theorem finmap.erase_union_singleton + theorem finmap.ext_lookup + theorem finmap.insert_insert + theorem finmap.insert_insert_of_ne + theorem finmap.insert_singleton_eq + theorem finmap.insert_union + theorem finmap.lookup_insert_of_ne + theorem finmap.lookup_list_to_finmap + theorem finmap.lookup_singleton_eq + theorem finmap.lookup_union_left_of_not_in + theorem finmap.mem_iff + theorem finmap.mem_list_to_finmap + theorem finmap.mem_of_lookup_eq_some + theorem finmap.mem_singleton + theorem finmap.not_mem_erase_self + def finmap.sdiff + theorem finmap.to_finmap_cons + theorem finmap.to_finmap_nil + theorem finmap.union_assoc + theorem finmap.union_cancel + theorem finmap.union_comm_of_disjoint + theorem finmap.union_empty + def list.to_finmap Modified src/data/list/alist.lean + def alist.disjoint + theorem alist.entries_to_alist + theorem alist.erase_erase + theorem alist.insert_insert + theorem alist.insert_insert_of_ne + theorem alist.insert_singleton_eq + theorem alist.insert_union + theorem alist.lookup_to_alist + theorem alist.to_alist_cons + theorem alist.union_assoc + theorem alist.union_comm_of_disjoint + theorem alist.union_erase + def list.to_alist Modified src/data/list/basic.lean + theorem list.foldl_eq_foldr' + theorem list.foldl_eq_of_comm' + theorem list.foldr_eq_of_comm' + theorem list.mem_enum_from + theorem list.pw_filter_map Modified src/data/list/sigma.lean + def list.erase_dupkeys + theorem list.erase_dupkeys_cons + theorem list.kerase_kerase + theorem list.lookup_erase_dupkeys + theorem list.lookup_ext + theorem list.mem_ext + theorem list.nodupkeys_erase_dupkeys 2019-07-12 21:47:13 5a48be3 chore(data/src/pending): remove unused folder (#1221) ESTIMATED CHANGES Deleted src/pending/default.lean 2019-07-12 20:05:55 fb7dfa1 feat(data/{nat,int,zmod,finset}): add a few useful facts (#1220) * feat(data/finset): add a few useful facts * feat(data/zmod/basic): express neg in terms of residues * feat(data/{nat,int}): add theorem 'mod_mod_of_dvd' ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.bind_inter + theorem finset.filter_insert + theorem finset.filter_inter + theorem finset.filter_singleton + theorem finset.inter_bind + theorem finset.inter_filter + theorem finset.inter_sdiff Modified src/data/int/basic.lean +/- theorem int.mod_mod + theorem int.mod_mod_of_dvd Modified src/data/nat/basic.lean + theorem nat.mod_mod_of_dvd Modified src/data/zmod/basic.lean + theorem zmod.neg_val' + theorem zmod.neg_val 2019-07-12 01:43:22 3d36966 feat(analysis/calculus/mean_value): the mean value inequality (#1212) * feat(analysis/calculus/mean_value): the mean value inequality * remove blank lines ESTIMATED CHANGES Added src/analysis/calculus/mean_value.lean + theorem norm_image_sub_le_of_norm_deriv_le_convex + theorem norm_image_sub_le_of_norm_deriv_le_segment Modified src/analysis/convex.lean + theorem image_Icc_zero_one_eq_segment 2019-07-11 21:03:56 7806586 feat(analysis/calculus/deriv): extended API for derivatives (#1213) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean + theorem differentiable.comp - theorem differentiable.congr' - theorem differentiable.congr +/- theorem differentiable.differentiable_on - theorem differentiable_at.congr + theorem differentiable_at.congr_of_mem_nhds - theorem differentiable_at.fderiv_congr' - theorem differentiable_at.fderiv_congr +/- theorem differentiable_on.mono + theorem differentiable_within_at.congr_of_mem_nhds_within - theorem differentiable_within_at.differentiable_at' +/- theorem differentiable_within_at.mono +/- theorem differentiable_within_at_inter + theorem differentiable_within_at_univ - theorem differentiable_within_univ_at + theorem fderiv_congr_of_mem_nhds + theorem fderiv_within_congr + theorem fderiv_within_congr_of_mem_nhds_within + theorem fderiv_within_inter + theorem fderiv_within_subset - theorem has_fderiv_at.congr + theorem has_fderiv_at.congr_of_mem_nhds +/- theorem has_fderiv_at.fderiv - theorem has_fderiv_at_congr - theorem has_fderiv_at_filter.congr' - theorem has_fderiv_at_filter.congr + theorem has_fderiv_at_filter.congr_of_mem_sets - theorem has_fderiv_at_filter_congr' - theorem has_fderiv_at_filter_congr + theorem has_fderiv_at_filter_congr_of_mem_sets - theorem has_fderiv_within_at.congr + theorem has_fderiv_within_at.congr_of_mem_nhds_within +/- theorem has_fderiv_within_at.fderiv_within - theorem has_fderiv_within_at_congr + theorem has_fderiv_within_at_inter' + theorem has_fderiv_within_at_inter + theorem has_fderiv_within_at_univ - theorem has_fderiv_within_univ_at 2019-07-11 18:24:16 2511faf feat(tactic/localized): localized notation (#1081) * first prototype of localized notation * update * add test file * shorten command, fix test * update documentation * rename files, add to tactic/default * typo * mention that we can use other commands * optimize * only use 1 attribute * add localized command classical instance * use rb_lmap This changes the internal code to avoid import clashes and adds a test to that effect * move rb_lmap.of_list to correct file also update docstring * rename open_notation to open_locale ESTIMATED CHANGES Modified docs/tactics.md Modified src/meta/rb_map.lean Modified src/tactic/default.lean Added src/tactic/localized.lean + def string_hash Added test/localized/import1.lean Added test/localized/import2.lean Added test/localized/import3.lean Added test/localized/localized.lean 2019-07-11 13:58:17 c2cc9a9 refactor(*): change priority of \simeq (#1210) * change priority of \simeq Also change priority of similar notations Remove many unnecessary parentheses * lower precedence on order_embedding and similar also add parentheses in 1 place where they were needed * spacing * add parenthesis ESTIMATED CHANGES Modified src/algebra/gcd_domain.lean +/- def associates_int_equiv_nat Modified src/category_theory/endomorphism.lean +/- def category_theory.Aut.units_End_eqv_Aut Modified src/data/equiv/algebra.lean Modified src/data/equiv/basic.lean +/- def equiv.arrow_prod_equiv_prod_arrow +/- def equiv.bool_equiv_punit_sum_punit +/- def equiv.bool_prod_equiv_sum +/- def equiv.empty_prod +/- def equiv.empty_sum +/- def equiv.int_equiv_nat_sum_nat +/- def equiv.nat_equiv_nat_sum_punit +/- def equiv.nat_sum_punit_equiv_nat +/- def equiv.option_equiv_sum_punit +/- def equiv.pempty_prod +/- def equiv.pempty_sum +/- def equiv.prod_assoc +/- def equiv.prod_comm +/- def equiv.prod_congr +/- def equiv.prod_empty +/- def equiv.prod_pempty +/- def equiv.prod_punit +/- def equiv.prod_sum_distrib +/- def equiv.psum_equiv_sum +/- def equiv.punit_prod +/- theorem equiv.refl_trans +/- def equiv.sigma_equiv_prod +/- def equiv.sigma_equiv_prod_of_equiv +/- def equiv.sum_arrow_equiv_prod_arrow +/- def equiv.sum_assoc +/- def equiv.sum_comm +/- def equiv.sum_congr +/- def equiv.sum_empty +/- def equiv.sum_equiv_sigma_bool +/- def equiv.sum_pempty +/- def equiv.sum_prod_distrib +/- theorem equiv.symm_symm +/- theorem equiv.symm_symm_apply +/- theorem equiv.trans_refl Modified src/data/equiv/denumerable.lean +/- def denumerable.pair Modified src/data/equiv/fin.lean +/- def fin_prod_fin_equiv +/- def sum_fin_sum_equiv Modified src/data/equiv/nat.lean +/- def equiv.bool_prod_nat_equiv_nat +/- def equiv.nat_prod_nat_equiv_nat +/- def equiv.nat_sum_nat_equiv_nat +/- def equiv.prod_equiv_of_equiv_nat Modified src/data/finsupp.lean +/- def finsupp.equiv_multiset Modified src/data/list/sort.lean Modified src/group_theory/coset.lean Modified src/linear_algebra/basic.lean Modified src/order/basic.lean Modified src/order/filter/basic.lean Modified src/order/order_iso.lean Modified src/set_theory/ordinal.lean +/- def initial_seg.lt_or_eq Modified src/topology/constructions.lean +/- def homeomorph.prod_assoc +/- def homeomorph.prod_comm +/- def homeomorph.prod_congr Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean 2019-07-11 10:12:31 86d0f29 refactor(*): make `is_group_hom` extend `is_mul_hom` (#1214) * map_mul/map_add: use explicit parameters Preparing to merge `is_mul_hom` with `is_group_hom` * make `is_group_hom` extend `is_mul_hom`, adjust many proof terms * Add a comment ESTIMATED CHANGES Modified src/algebra/big_operators.lean Modified src/algebra/direct_limit.lean +/- theorem add_comm_group.direct_limit.lift_add +/- theorem add_comm_group.direct_limit.of_add Modified src/algebra/direct_sum.lean Modified src/algebra/group/conj.lean Modified src/algebra/group/hom.lean +/- theorem is_add_monoid_hom.map_add +/- theorem is_group_hom.inv + theorem is_group_hom.mk' +/- theorem is_group_hom.mul +/- theorem is_monoid_hom.map_mul - theorem is_mul_hom.comp' - theorem is_mul_hom.comp - theorem is_mul_hom.id + theorem is_mul_hom.inv + theorem is_mul_hom.mul Modified src/algebra/group/units_hom.lean - theorem units.map_comp' Modified src/algebra/group_power.lean Modified src/algebra/module.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring.lean Modified src/data/dfinsupp.lean Modified src/data/equiv/algebra.lean Modified src/data/mv_polynomial.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/free_abelian_group.lean + theorem free_abelian_group.lift.add' Modified src/group_theory/free_group.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/presented_group.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean Modified src/linear_algebra/tensor_product.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean 2019-07-11 07:41:05 1b1c64b perf(algebraic_geometry/presheafed_space): replace/optimize tidy scripts (#1204) * perf(algebraic_geometry/presheafed_space): replace/optimize tidy scripts This file now takes 20 seconds to compile on my desktop instead of 160. This is a 9% speedup to mathlib overall. * doc(algebraic_geometry/presheafed_space): comments ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean 2019-07-11 04:18:40 cc5870d feat(algebra/ordered_ring): with_top.nat_induction (#1211) ESTIMATED CHANGES Modified src/algebra/ordered_ring.lean + theorem with_top.nat_induction 2019-07-10 21:33:20 5cdebb7 feat(*): Miscellaneous lemmas in algebra (#1188) * Trying things out * feat(ring_theory/*): Misc little lemmas * More little lemmas ESTIMATED CHANGES Modified src/group_theory/subgroup.lean - theorem add_group.closure_mono - theorem add_group.mclosure_inv_subset - theorem add_group.mclosure_subset + theorem group.closure_subgroup Modified src/ring_theory/algebra.lean + theorem span_int_eq + theorem span_int_eq_add_group_closure Modified src/ring_theory/algebra_operations.lean + theorem submodule.mul_subset_mul + theorem submodule.pow_subset_pow + theorem submodule.smul_def + theorem submodule.smul_le_smul + theorem submodule.smul_singleton Modified src/ring_theory/ideal_operations.lean + theorem ideal.map_quotient_self + theorem ideal.pow_le_pow Modified src/ring_theory/ideals.lean + theorem ideal.eq_bot_of_prime + theorem ideal.eq_bot_or_top Modified src/ring_theory/noetherian.lean + theorem submodule.fg_pow 2019-07-10 19:39:24 5aebdc4 fix(*): fix line endings (#1209) ESTIMATED CHANGES Modified src/data/complex/exponential.lean Modified src/data/nat/totient.lean Modified src/meta/rb_map.lean Modified src/tactic/linarith.lean 2019-07-10 18:25:32 0bc4a50 feat(tactic/apply_fun): adds `apply_fun` tactic (#1184) * feat(tactic/apply_fun): adds `apply_fun` tactic * move tests to test folder * elaborate function with expected type * fix merge mistake ESTIMATED CHANGES Modified docs/tactics.md Added src/tactic/apply_fun.lean Modified src/tactic/default.lean Added test/apply_fun.lean 2019-07-10 15:57:51 d2b4380 feat(data/list/basic): list.prod_range_succ, list.sum_range_succ (#1197) * feat(data/list/basic): list.prod_range_succ, list.sum_range_succ * changes from review * remove simp * shorten proof ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.prod_range_succ +/- theorem list.range_concat 2019-07-10 11:22:33-04:00 8939d95 docs(contribute/index.md): #1131 [skip ci] ESTIMATED CHANGES Modified docs/contribute/index.md 2019-07-10 09:10:06-04:00 b00460c doc(README): Add link to website ESTIMATED CHANGES Modified README.md 2019-07-10 05:49:09 fb1848b refactor(topology/algebra/open_subgroup) Finish TODO (#1202) * Create .DS_Store * Revert "Create .DS_Store" This reverts commit 5612886d493aef59205eddc5a34a75e6e5ba22c1. * Finish TODO * Update src/topology/algebra/open_subgroup.lean Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/topology/algebra/open_subgroup.lean 2019-07-10 02:24:53 e25a597 feat(analysis/calculus/tangent_cone): more properties of the tangent cone (#1136) ESTIMATED CHANGES Modified src/analysis/calculus/deriv.lean Modified src/analysis/calculus/tangent_cone.lean +/- theorem is_open.unique_diff_within_at + theorem mem_tangent_cone_of_segment_subset + theorem subset_tangent_cone_prod_left + theorem subset_tangent_cone_prod_right +/- theorem tangent_cone_at.lim_zero + theorem tangent_cone_inter_nhds - theorem tangent_cone_inter_open + theorem unique_diff_on.prod + theorem unique_diff_on_Icc_zero_one + theorem unique_diff_on_convex + theorem unique_diff_on_univ + theorem unique_diff_within_at.inter + theorem unique_diff_within_at.mono + theorem unique_diff_within_at.prod +/- theorem unique_diff_within_at_inter + theorem unique_diff_within_at_univ - theorem unique_diff_within_univ_at 2019-07-10 00:10:18 0cd0d4e feat(meta/pformat): format! macro using `pp` instead of `to_fmt` (#1194) * feat(meta/pformat): format! macro which uses `pp` instead of `to_fmt` * Update core.lean ESTIMATED CHANGES Modified src/tactic/core.lean 2019-07-09 22:27:43 60e4bb9 refactor(category_theory/endomorphism): move to a dedicated file; prove simple lemmas (#1195) * Move definitions of `End` and `Aut` to a dedicated file * Adjust some proofs, use `namespace`, add docstrings * `functor.map` and `functor.map_iso` define homomorphisms of `End/Aut` * Define `functor.map_End` and `functor.map_Aut` ESTIMATED CHANGES Modified src/category/fold.lean Modified src/category_theory/category.lean - theorem category_theory.End.mul_def - theorem category_theory.End.one_def - def category_theory.End Added src/category_theory/endomorphism.lean + def category_theory.Aut.units_End_eqv_Aut + def category_theory.Aut + theorem category_theory.End.mul_def + theorem category_theory.End.one_def + def category_theory.End + def category_theory.functor.map_Aut + def category_theory.functor.map_End Modified src/category_theory/isomorphism.lean - def category_theory.Aut + theorem category_theory.functor.map_iso_trans 2019-07-09 20:34:02 3a7c661 refactor(topology/*): define and use dense_inducing (#1193) * refactor(topology/*): define and dense_inducing Traditionally, topology extends functions defined on dense subspaces (equipped by the induced topology). In mathlib, this was made type-theory-friendly by rather factoring through `dense_embedding` maps. A map `f : α → β` between topological spaces is a dense embedding if its image is dense, it is injective, and it pulls back the topology from `β` to the topology on `α`. It turns out that the injectivity was never used in any serious way. It used not to be used at all until we noticed it could be used to ensure the factorization equation `dense_embedding.extend_e_eq` could be made to hold without any assumption on the map to be extended. But of course this formalization trick is mathematically completely irrelevant. On the other hand, assuming injectivity prevents direct use in uniform spaces completion, because the map from a space to its (separated) completion is injective only when the original space is separated. This is why mathlib ring completion currently assumes a separated topological ring, and the perfectoid spaces project needed a lot of effort to drop that assumption. This commit makes all this completely painless. Along the way, we improve consistency and readability by turning a couple of conjunctions into structures. It also introduces long overdue fix to `function.uncurry` (which suffered from abusive pattern matching, similar to `prod.map`). * Apply suggestions from code review Co-Authored-By: Johan Commelin Co-Authored-By: sgouezel * minor fixes following review * Some more dot notation, consistent naming and field naming ESTIMATED CHANGES Modified src/data/prod.lean + theorem function.injective_prod Modified src/logic/function.lean + theorem function.curry_uncurry' + def function.uncurry' + theorem function.uncurry'_bicompr + theorem function.uncurry'_curry Modified src/measure_theory/bochner_integration.lean Modified src/topology/algebra/group_completion.lean +/- theorem coe_zero Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/uniform_group.lean - theorem dense_embedding.continuous_extend_of_cauchy - theorem dense_embedding.extend_Z_bilin + theorem dense_inducing.extend_Z_bilin Modified src/topology/algebra/uniform_ring.lean +/- theorem uniform_space.completion.continuous_mul' Modified src/topology/constructions.lean + theorem dense_range_prod Modified src/topology/instances/ennreal.lean Modified src/topology/instances/real.lean +/- theorem embedding_of_rat Modified src/topology/maps.lean + theorem closed_embedding.comp - theorem closed_embedding_compose - theorem dense_embedding.closure_image_nhds_of_nhds - theorem dense_embedding.closure_range - theorem dense_embedding.comap_nhds_neq_bot - theorem dense_embedding.continuous_extend - def dense_embedding.extend - theorem dense_embedding.extend_e_eq - theorem dense_embedding.extend_eq +/- theorem dense_embedding.inj_iff - theorem dense_embedding.self_sub_closure_image_preimage_of_open - theorem dense_embedding.tendsto_comap_nhds_nhds - theorem dense_embedding.tendsto_extend + theorem dense_embedding.to_embedding +/- structure dense_embedding + theorem dense_inducing.closure_image_nhds_of_nhds + theorem dense_inducing.closure_range + theorem dense_inducing.comap_nhds_neq_bot + theorem dense_inducing.continuous_extend + def dense_inducing.extend + theorem dense_inducing.extend_e_eq + theorem dense_inducing.extend_eq + theorem dense_inducing.extend_eq_of_cont + theorem dense_inducing.mk' + theorem dense_inducing.nhds_eq_comap + theorem dense_inducing.self_sub_closure_image_preimage_of_open + theorem dense_inducing.tendsto_comap_nhds_nhds + theorem dense_inducing.tendsto_extend + structure dense_inducing + theorem dense_range.comp + theorem dense_range.inhabited + def dense_range + theorem dense_range_iff_closure_eq + theorem embedding.comp + def embedding.mk' + theorem embedding.prod_mk + structure embedding - def embedding - theorem embedding_compose - theorem embedding_prod_mk + theorem inducing.comp + theorem inducing.continuous + theorem inducing.continuous_iff + theorem inducing.map_nhds_eq + theorem inducing.nhds_eq_comap + theorem inducing.prod_mk + theorem inducing.tendsto_nhds_iff + structure inducing + theorem inducing_id + theorem inducing_is_closed + theorem inducing_of_inducing_compose + theorem inducing_open Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/order.lean + theorem induced_iff_nhds_eq - theorem nhds_induced_eq_comap Modified src/topology/stone_cech.lean + theorem dense_inducing_pure Modified src/topology/uniform_space/basic.lean + theorem uniform_continuous₂.comp + def uniform_continuous₂ + theorem uniform_continuous₂_curry + theorem uniform_continuous₂_def Modified src/topology/uniform_space/complete_separated.lean + theorem dense_inducing.continuous_extend_of_cauchy +/- theorem is_closed_of_is_complete Modified src/topology/uniform_space/completion.lean + theorem Cauchy.dense_inducing_pure_cauchy - def Cauchy.prod - theorem Cauchy.prod_pure_cauchy_pure_cauchy - theorem Cauchy.uniform_continuous_prod + theorem Cauchy.uniform_inducing_pure_cauchy + theorem uniform_space.completion.dense_inducing_coe + theorem uniform_space.completion.extension_unique + theorem uniform_space.completion.extension₂_coe_coe +/- theorem uniform_space.completion.map₂_coe_coe + theorem uniform_space.completion.nonempty_completion_iff +/- theorem uniform_space.completion.prod_coe_coe + theorem uniform_space.completion.uniform_continuous_extension₂ - theorem uniform_space.completion.uniform_continuous_map₂' + theorem uniform_space.completion.uniform_continuous_map₂ + theorem uniform_space.completion.uniform_inducing_coe Modified src/topology/uniform_space/uniform_embedding.lean - theorem closure_image_mem_nhds_of_uniform_embedding + theorem closure_image_mem_nhds_of_uniform_inducing +/- theorem complete_space_extension +/- theorem is_complete_image_iff +/- theorem totally_bounded_preimage + theorem uniform_embedding.comp +/- theorem uniform_embedding.dense_embedding +/- theorem uniform_embedding.embedding +/- theorem uniform_embedding.prod - theorem uniform_embedding.uniform_continuous - theorem uniform_embedding.uniform_continuous_iff + structure uniform_embedding - def uniform_embedding +/- theorem uniform_embedding_comap +/- theorem uniform_embedding_def' +/- theorem uniform_embedding_def +/- theorem uniform_embedding_subtype_emb +/- theorem uniform_extend_subtype + theorem uniform_inducing.comp + theorem uniform_inducing.dense_inducing + theorem uniform_inducing.inducing + def uniform_inducing.mk' + theorem uniform_inducing.prod + theorem uniform_inducing.uniform_continuous + theorem uniform_inducing.uniform_continuous_iff + structure uniform_inducing - theorem uniformly_extend_of_emb + theorem uniformly_extend_of_ind +/- theorem uniformly_extend_spec 2019-07-09 15:55:54 0460815 fix(docs/tactics): fix code block (#1201) ESTIMATED CHANGES Modified docs/tactics.md 2019-07-09 15:04:11 0099f06 perf(data/polynomial, field_theory/splitting_field): memory problems (#1200) * perf(data/polynomial): avoid bad instance search * perf(field_theory/splitting_field): local intance priority makes a big difference ESTIMATED CHANGES Modified src/data/polynomial.lean Modified src/field_theory/splitting_field.lean 2019-07-09 12:15:39 13f76d3 feat(tactic): add `convert_to` and `ac_change` (#944) * feat(tactic): add `convert_to` and `ac_change` * style fixes ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/interactive.lean Modified test/tactics.lean 2019-07-09 13:05:07+02:00 d50f634 feat(data/matrix): simp attributes on one_mul and mul_one (#1199) ESTIMATED CHANGES Modified src/data/matrix.lean 2019-07-09 11:06:35+02:00 6670e66 feat(data/matrix): simp attributes on zero_mul and mul_zero (#1198) ESTIMATED CHANGES Modified src/data/matrix.lean +/- theorem matrix.mul_zero +/- theorem matrix.zero_mul 2019-07-09 09:00:44 9071969 feat(data/nat/basic): some nat inequalities (#1189) * feat(data/nat/basic): some inequalities * remove redundant lemmas * simplify proofs * make implicit * shorter proof * rename ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.not_succ_lt_self + theorem nat.two_mul_ne_two_mul_add_one 2019-07-08 20:51:06-04:00 7fc3283 fix(README.md): Remove the AppVeyor badge [skip ci] (#1192) It seems to me that we don't really care about whether the AppVeyor build fails or not. And I don't like the red badge. So I propose to remove it. ESTIMATED CHANGES Modified README.md 2019-07-09 00:20:18+02:00 0cc67a1 chore(data/matrix): remove unnecessary decidable_eq (#1196) This was generating annoying `decidable_eq (fin n)` goals when rewriting. ESTIMATED CHANGES Modified src/data/matrix.lean 2019-07-07 20:48:20 8917419 chore(data/equiv/algebra): use `to_additive` (#1191) - Define `add_equiv` and `add_equiv.*` using `to_additive` - Simplify some instances ESTIMATED CHANGES Modified src/data/equiv/algebra.lean - def add_equiv.refl - def add_equiv.symm - def add_equiv.trans - theorem mul_equiv.one 2019-07-06 22:30:41 55b0b80 fix(src/logic/basic): add [symm] attribute to ne. (#1190) ESTIMATED CHANGES Modified src/logic/basic.lean 2019-07-06 11:29:31 ccf5636 feat(data/option/basic): not_is_some_iff_eq_none and ne_none_iff_is_some (#1186) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.ne_none_iff_is_some + theorem option.not_is_some_iff_eq_none 2019-07-05 20:30:47 12763b9 chore(algebra/group/type_tags): add some missing instances (#1164) * chore(algebra/group/type_tags): add some missing instances * Drop an unused import ESTIMATED CHANGES Modified src/algebra/group/type_tags.lean 2019-07-05 17:03:44 05283d2 fix(category_theory/limits): make is_limit a class, clean up proofs (#1187) * feat(category_theory/limits): equivalences create limits * equivalence lemma * add @[simp] * use right_adjoint_preserves_limits * blech * undo weird changes in topology files * formatting * do colimits too * working! * ? ESTIMATED CHANGES Modified src/algebra/CommRing/colimits.lean Modified src/algebra/Mon/colimits.lean Modified src/category_theory/adjunction/basic.lean - structure category_theory.adjunction.is_left_adjoint - structure category_theory.adjunction.is_right_adjoint Modified src/category_theory/adjunction/limits.lean - def category_theory.adjunction.is_colimit_map_cocone - def category_theory.adjunction.is_limit_map_cone Modified src/category_theory/limits/limits.lean - def category_theory.limits.colimit.is_colimit - def category_theory.limits.limit.is_limit Modified src/category_theory/limits/preserves.lean 2019-07-05 15:44:22 05550ea feat(category_theory/limits): equivalences create limits (#1175) * feat(category_theory/limits): equivalences create limits * equivalence lemma * add @[simp] * use right_adjoint_preserves_limits * undo weird changes in topology files * formatting * do colimits too ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean - def category_theory.adjunction.equivalence.to_adjunction + def category_theory.equivalence.to_adjunction + def category_theory.functor.adjunction Modified src/category_theory/adjunction/limits.lean + def category_theory.adjunction.has_colimit_of_comp_equivalence + def category_theory.adjunction.has_limit_of_comp_equivalence + def category_theory.adjunction.is_colimit_map_cocone + def category_theory.adjunction.is_limit_map_cone - def category_theory.adjunction.left_adjoint_preserves_colimits - def category_theory.adjunction.right_adjoint_preserves_limits Modified src/category_theory/equivalence.lean +/- theorem category_theory.equivalence.counit_inv_functor_comp +/- theorem category_theory.equivalence.functor_unit_comp +/- theorem category_theory.equivalence.inverse_counit_inv_comp +/- theorem category_theory.equivalence.unit_inverse_comp + theorem category_theory.is_equivalence.counit_inv_functor_comp + theorem category_theory.is_equivalence.functor_unit_comp Modified src/category_theory/limits/cones.lean + theorem category_theory.functor.map_cocone_X + theorem category_theory.functor.map_cone_X + def category_theory.functor.map_cone_inv + theorem category_theory.functor.map_cone_inv_X Modified src/category_theory/limits/limits.lean 2019-07-05 05:31:07 27ae77c feat(tactic/tidy): lower the priority of ext in tidy (#1178) * feat(category_theory/adjunction): additional simp lemmas * experimenting with deferring ext in tidy * abbreviate some proofs * refactoring CommRing/adjunctions * renaming ESTIMATED CHANGES Modified src/algebra/CommRing/adjunctions.lean + def CommRing.adj + def CommRing.free + theorem CommRing.free_map_val + theorem CommRing.free_obj_α + def CommRing.hom_equiv - theorem CommRing.polynomial_ring_map_val - theorem CommRing.polynomial_ring_obj_α Modified src/category_theory/adjunction/limits.lean Modified src/tactic/tidy.lean 2019-07-05 05:02:40 4af3976 chore(category_theory): cleanup (#1173) * chore(category_theory): cleanup * oops * remove comment * more uniform? * fix stalks proof? * Update src/algebra/CommRing/basic.lean Co-Authored-By: Johan Commelin * Apply suggestions from code review Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/algebra/CommRing/basic.lean - theorem CommRing.comp_val - theorem CommRing.id_val +/- def CommRing.is_comm_ring_hom Modified src/algebra/CommRing/colimits.lean +/- theorem CommRing.colimits.cocone_naturality_components Modified src/algebra/Mon/colimits.lean +/- theorem Mon.colimits.cocone_naturality_components Modified src/category_theory/concrete_category.lean + theorem category_theory.bundled.coe_comp Modified src/category_theory/isomorphism.lean + theorem category_theory.functor.map_inv Modified src/category_theory/limits/opposites.lean Modified src/category_theory/opposites.lean + def category_theory.is_iso_of_op Modified src/category_theory/whiskering.lean Modified src/topology/Top/stalks.lean Modified src/topology/algebra/TopCommRing/basic.lean +/- def TopCommRing.forget 2019-07-04 19:49:02 569bcf9 feat(algebra/ordered_group): eq_of_abs_non_pos (#1185) * feat(algebra/ordered_group): decidable_linear_ordered_comm_group.eq_of_abs_non_pos * fix(algebra/ordered_group): new line and name ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem decidable_linear_ordered_comm_group.eq_of_abs_sub_nonpos 2019-07-04 18:17:29 c5d4140 feat(data/fin): fin.mk.inj_iff (#1182) Quite surprised this insn't already there. ESTIMATED CHANGES Modified src/data/fin.lean 2019-07-04 16:47:39 1723bee chore(algebra/order_functions): some proofs work for semirings (#1183) * chore(algebra/order_functions): some proofs work for semirings, not only rings * Update order_functions.lean ESTIMATED CHANGES Modified src/algebra/order_functions.lean 2019-07-04 14:31:11 0818bb2 feat(data/fin): mem_find_of_unique (#1181) ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.mem_find_of_unique 2019-07-04 12:14:42 32ce121 chore(topology/maps.lean): Delete a redundant argument (#1179) * Create .DS_Store * Revert "Create .DS_Store" This reverts commit 5612886d493aef59205eddc5a34a75e6e5ba22c1. * Redundant argument ESTIMATED CHANGES Modified src/topology/maps.lean 2019-07-04 10:24:53 34d69b5 chore(data/set): set.mem_preimage_eq becomes an iff (#1174) * chore(data/set): set.mem_preimage_eq becomes an iff named set.mem_preimage * fix(measure_theory/measurable_space): proof broken by mem_preimage change * fix(data/filter/basic) * fix(topology/uniform_space/separation) * fix(measure_theory/integration) ESTIMATED CHANGES Modified src/data/pfun.lean Modified src/data/set/basic.lean + theorem set.mem_preimage - theorem set.mem_preimage_eq Modified src/data/set/finite.lean Modified src/data/set/function.lean Modified src/linear_algebra/basis.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/simple_func_dense.lean Modified src/order/filter/basic.lean Modified src/set_theory/cofinality.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/open_subgroup.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/maps.lean Modified src/topology/metric_space/baire.lean Modified src/topology/metric_space/closeds.lean Modified src/topology/order.lean Modified src/topology/uniform_space/separation.lean 2019-07-04 08:45:49 6493bb6 feat(data/list/basic): nodup_update_nth, mem_diff_iff_of_nodup (#1170) ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.diff_eq_filter_of_nodup + theorem list.mem_diff_iff_of_nodup + theorem list.mem_or_eq_of_mem_update_nth + theorem list.nodup_update_nth 2019-07-04 06:57:24 00de1cb feat(data/list/basic): list.nodup_diff (#1168) * feat(data/list/basic): list.nodup_diff * Update basic.lean * Update basic.lean ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.nodup_diff 2019-07-04 05:16:33 e6b9696 feat(data/option): not_mem_none and bind_assoc (#1177) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.bind_assoc + theorem option.not_mem_none 2019-07-04 03:33:42 4cca114 feat(data/fin): fin.find (#1167) * feat(data/fin): fin.find * add nat_find_mem_find ESTIMATED CHANGES Modified src/data/fin.lean + def fin.find + theorem fin.find_eq_none_iff + theorem fin.find_min' + theorem fin.find_min + theorem fin.find_spec + theorem fin.is_some_find_iff + theorem fin.nat_find_mem_find 2019-07-04 01:39:56 3ee1f85 feat(order/basic): order_dual.inhabited (#1163) ESTIMATED CHANGES Modified src/order/basic.lean 2019-07-03 23:52:50 ae9615c feat(order/pilex): lexicographic ordering on pi types (#1157) * feat(order/pilex): lexicographic ordering on pi types * fix instance name * fix instance name properly * Update basic.lean * remove unnecessary import ESTIMATED CHANGES Modified src/order/basic.lean Added src/order/pilex.lean + def pi.lex + def pilex 2019-07-03 22:09:24 992354c feat(data/fintype): well_foundedness lemmas on fintypes (#1156) * feat(data/fintype): well_foundedness lemmas on fintypes * Update fintype.lean * minor fixes ESTIMATED CHANGES Modified src/data/fintype.lean + theorem fintype.linear_order.is_well_order + theorem fintype.preorder.well_founded + theorem fintype.well_founded_of_trans_of_irrefl 2019-07-03 18:10:52 cb84234 feat(category_theory/yoneda): coyoneda lemmas (#1172) * feat(category_theory/yoneda): coyoneda lemmas * oops, didn't include everything I needed * oops * removing fully_faithful * missing underscore... ESTIMATED CHANGES Modified src/category_theory/equivalence.lean Modified src/category_theory/full_subcategory.lean Modified src/category_theory/fully_faithful.lean + def category_theory.is_iso_of_fully_faithful + theorem category_theory.preimage_comp +/- theorem category_theory.preimage_id + theorem category_theory.preimage_map Modified src/category_theory/types.lean Modified src/category_theory/yoneda.lean + def category_theory.coyoneda.is_iso + theorem category_theory.coyoneda.naturality + def category_theory.yoneda.is_iso 2019-07-03 15:25:41 e4ee18b feat(category_theory/adjunction): additional simp lemmas (#1143) * feat(category_theory/adjunction): additional simp lemmas * spaces Co-Authored-By: Johan Commelin ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean + theorem category_theory.adjunction.counit_naturality + theorem category_theory.adjunction.counit_naturality_assoc + theorem category_theory.adjunction.left_triangle_components_assoc + theorem category_theory.adjunction.right_triangle_components_assoc + theorem category_theory.adjunction.unit_naturality + theorem category_theory.adjunction.unit_naturality_assoc 2019-07-03 12:44:32 f1b5473 feat(data/list/basic): fin_range (#1159) * feat(data/list/basic): fin_range fin_range is like `list.range` but returns a `list (fin n)` instead of a `list nat` * Update basic.lean ESTIMATED CHANGES Modified src/data/list/basic.lean + def list.fin_range + theorem list.length_fin_range + theorem list.mem_fin_range + theorem list.nodup_fin_range 2019-07-03 09:42:00 d2c5309 refactor(linear_algebra/lc): use families not sets (#943) * refactor(linear_algebra/lc): use families not sets * refactor(linear_algebra/lc): merge lc into finsupp * refactor(linear_algebra/lc): localize decidability * refactor(linear_algebra/lc): finsupp instances * refactor(linear_algebra/lc): use families instead of sets * refactor(linear_algebra/lc): remove set argument in lin_indep * refactor(linear_algebra/lc): clean up * refactor(linear_algebra/lc): more clean up * refactor(linear_algebra/lc): set_option in section * refactor(linear_algebra/lc): decidability proof * refactor(linear_algebra/lc): arrow precedence * refactor(linear_algebra/lc): more cleanup * refactor(linear_algebra/lc): move finset.preimage * refactor(linear_algebra/lc): use families not sets * refactor(linear_algebra/lc): merge lc into finsupp * refactor(linear_algebra/lc): localize decidability * refactor(linear_algebra/lc): finsupp instances * refactor(linear_algebra/lc): use families instead of sets * refactor(linear_algebra/lc): remove set argument in lin_indep * refactor(linear_algebra/lc): clean up * refactor(linear_algebra/lc): more clean up * refactor(linear_algebra/lc): set_option in section * refactor(linear_algebra/lc): decidability proof * refactor(linear_algebra/lc): arrow precedence * refactor(linear_algebra/lc): more cleanup * refactor(linear_algebra/lc): move finset.preimage * tidying up. Remove unnecessary dec_eq from dim. Shorten finset.preimage. * fix build * make travis rebuild * fix build * shorten finsupp proofs * shorten more proofs * shorten more proofs * speed up dim_bot * fix build * shorten dimension proof ESTIMATED CHANGES Modified src/algebra/direct_limit.lean Modified src/algebra/module.lean + theorem semimodule.eq_zero_of_zero_eq_one + theorem submodule.subtype_eq_val Modified src/data/finset.lean + theorem finset.exists_mem_iff_ne_empty Modified src/data/finsupp.lean + theorem finsupp.comap_domain_apply + theorem finsupp.emb_domain_inj + theorem finsupp.eq_zero_of_comap_domain_eq_zero + theorem finsupp.map_domain_comap_domain + theorem finsupp.mem_split_support_iff_nonzero + theorem finsupp.sigma_sum + theorem finsupp.sigma_support + theorem finsupp.single_of_emb_domain_single + theorem finsupp.single_swap + theorem finsupp.split_apply + def finsupp.split_support + theorem finsupp.sum_comap_domain - def finsupp.to_comm_ring - def finsupp.to_comm_semiring - def finsupp.to_has_scalar' - def finsupp.to_has_scalar - def finsupp.to_module - def finsupp.to_ring - def finsupp.to_semimodule - def finsupp.to_semiring + theorem finsupp.unique_single Modified src/data/mv_polynomial.lean Modified src/data/polynomial.lean Modified src/data/set/basic.lean + theorem set.range_comp_subset_range + theorem set.sum.elim_range Modified src/data/set/finite.lean + theorem finset.coe_preimage + theorem finset.image_preimage + theorem finset.mem_preimage + theorem finset.prod_preimage +/- theorem set.finite_of_finite_image Modified src/data/set/function.lean + theorem set.inj_on_of_injective Modified src/data/sum.lean + theorem sum.elim_injective + theorem sum.elim_inl + theorem sum.elim_inr Modified src/field_theory/finite_card.lean Modified src/field_theory/mv_polynomial.lean + theorem mv_polynomial.dim_mv_polynomial + theorem mv_polynomial.is_basis_monomials + theorem mv_polynomial.map_range_eq_map + theorem mv_polynomial.mem_restrict_degree + theorem mv_polynomial.mem_restrict_degree_iff_sup + theorem mv_polynomial.mem_restrict_total_degree + def mv_polynomial.restrict_degree + def mv_polynomial.restrict_total_degree Modified src/linear_algebra/basic.lean + theorem linear_map.disjoint_inl_inr + theorem linear_map.map_le_range + theorem linear_map.sup_range_inl_inr + theorem submodule.eq_bot_of_zero_eq_one + theorem submodule.linear_eq_on Modified src/linear_algebra/basis.lean +/- theorem constr_add +/- theorem constr_basis - theorem constr_congr +/- theorem constr_eq +/- theorem constr_neg +/- theorem constr_range +/- theorem constr_self +/- theorem constr_smul +/- theorem constr_sub +/- theorem constr_zero - theorem eq_of_linear_independent_of_span + theorem eq_of_linear_independent_of_span_subtype +/- def equiv_of_is_basis +/- theorem exists_is_basis +/- theorem exists_linear_independent +/- theorem exists_subset_is_basis + theorem is_basis.comp +/- def is_basis.constr +/- theorem is_basis.constr_apply +/- theorem is_basis.ext + theorem is_basis.injective +/- theorem is_basis.mem_span +/- def is_basis.repr +/- theorem is_basis.repr_eq_single +/- theorem is_basis.repr_ker +/- theorem is_basis.repr_range - theorem is_basis.repr_supported +/- theorem is_basis.repr_total +/- theorem is_basis.total_comp_repr +/- theorem is_basis.total_repr +/- def is_basis +/- theorem is_basis_empty +/- theorem is_basis_empty_bot - theorem is_basis_injective +/- theorem is_basis_inl_union_inr +/- theorem is_basis_singleton_one +/- theorem is_basis_span +/- theorem linear_equiv.is_basis + theorem linear_independent.comp - theorem linear_independent.disjoint_ker +/- theorem linear_independent.image + theorem linear_independent.image_subtype - theorem linear_independent.inj_span_iff_inj + theorem linear_independent.injective +/- theorem linear_independent.insert +/- theorem linear_independent.mono - theorem linear_independent.of_image + theorem linear_independent.of_subtype_range +/- def linear_independent.repr +/- theorem linear_independent.repr_eq - theorem linear_independent.repr_eq_repr_of_subset +/- theorem linear_independent.repr_eq_single +/- theorem linear_independent.repr_ker +/- theorem linear_independent.repr_range - theorem linear_independent.repr_supported + theorem linear_independent.restrict_of_comp_subtype - theorem linear_independent.supported_disjoint_ker + theorem linear_independent.to_subtype_range +/- theorem linear_independent.total_comp_repr +/- def linear_independent.total_equiv +/- theorem linear_independent.total_repr +/- theorem linear_independent.unique +/- def linear_independent +/- theorem linear_independent_Union_finite + theorem linear_independent_Union_finite_subtype +/- theorem linear_independent_Union_of_directed +/- theorem linear_independent_bUnion_of_directed + theorem linear_independent_comp_subtype + theorem linear_independent_comp_subtype_disjoint +/- theorem linear_independent_empty + theorem linear_independent_empty_type +/- theorem linear_independent_iff +/- theorem linear_independent_iff_not_mem_span +/- theorem linear_independent_iff_total_on + theorem linear_independent_inl_union_inr' +/- theorem linear_independent_of_finite + theorem linear_independent_of_zero_eq_one +/- theorem linear_independent_singleton + theorem linear_independent_span + theorem linear_independent_subtype + theorem linear_independent_subtype_disjoint + theorem linear_independent_unique - theorem linear_map.linear_independent_image_iff + def module_equiv_finsupp - def module_equiv_lc + theorem ne_zero_of_linear_independent +/- theorem pi.is_basis_fun + theorem pi.is_basis_fun₀ +/- theorem pi.is_basis_std_basis +/- theorem pi.linear_independent_std_basis + theorem surjective_of_linear_independent_of_span +/- theorem vector_space.card_fintype' +/- theorem vector_space.card_fintype - theorem zero_not_mem_of_linear_independent Modified src/linear_algebra/dimension.lean +/- theorem dim_fun' +/- theorem dim_le_injective +/- theorem dim_quotient +/- theorem dim_range_of_surjective +/- theorem dim_span +/- theorem dim_span_of_finset + theorem dim_span_set +/- theorem exists_is_basis_fintype +/- theorem is_basis.le_span +/- theorem is_basis.mk_eq_dim + theorem is_basis.mk_range_eq_dim +/- theorem linear_equiv.dim_eq +/- theorem linear_equiv.dim_eq_lift +/- theorem mk_eq_mk_of_basis +/- theorem rank_finset_sum_le Modified src/linear_algebra/dual.lean +/- def is_basis.coord_fun +/- theorem is_basis.coord_fun_eq_repr +/- def is_basis.dual_basis +/- theorem is_basis.dual_basis_is_basis +/- theorem is_basis.dual_dim_eq + def is_basis.eval_finsupp_at - def is_basis.eval_lc_at +/- theorem is_basis.to_dual_apply +/- theorem is_basis.to_dual_eq_repr +/- def is_basis.to_dual_equiv +/- theorem is_basis.to_dual_range +/- theorem is_basis.to_dual_to_dual Modified src/linear_algebra/finsupp.lean - theorem cardinal_lt_omega_of_dim_lt_omega - theorem cardinal_mk_eq_cardinal_mk_field_pow_dim - theorem eq_bot_iff_dim_eq_zero - theorem equiv_of_dim_eq_dim - theorem finsupp.dim_eq - theorem finsupp.is_basis_single +/- theorem finsupp.ker_lsingle +/- theorem finsupp.lapply_apply - theorem finsupp.linear_independent_single +/- def finsupp.lmap_domain +/- theorem finsupp.lmap_domain_apply + theorem finsupp.lmap_domain_comp + theorem finsupp.lmap_domain_disjoint_ker + theorem finsupp.lmap_domain_id + theorem finsupp.lmap_domain_supported + theorem finsupp.lmap_domain_total +/- theorem finsupp.lsingle_apply + def finsupp.lsum + theorem finsupp.lsum_apply - theorem finsupp.mem_restrict_dom + theorem finsupp.mem_span_iff_total + theorem finsupp.mem_supported' + theorem finsupp.mem_supported + theorem finsupp.range_restrict_dom + theorem finsupp.range_total +/- def finsupp.restrict_dom + theorem finsupp.restrict_dom_apply + theorem finsupp.restrict_dom_comp_subtype - def finsupp.restrict_dom_equiv_finsupp + theorem finsupp.single_mem_supported + theorem finsupp.span_eq_map_total + def finsupp.supported + theorem finsupp.supported_Inter + theorem finsupp.supported_Union + theorem finsupp.supported_comap_lmap_domain + theorem finsupp.supported_empty + theorem finsupp.supported_eq_span_single + def finsupp.supported_equiv_finsupp + theorem finsupp.supported_mono + theorem finsupp.supported_union + theorem finsupp.supported_univ + theorem finsupp.total_apply + theorem finsupp.total_comap_domain + theorem finsupp.total_comp + theorem finsupp.total_emb_domain + theorem finsupp.total_map_domain + theorem finsupp.total_on_range + theorem finsupp.total_range + theorem finsupp.total_single - theorem injective_of_surjective - theorem mv_polynomial.dim_mv_polynomial - theorem mv_polynomial.is_basis_monomials - theorem mv_polynomial.map_range_eq_map - theorem mv_polynomial.mem_restrict_degree - theorem mv_polynomial.mem_restrict_degree_iff_sup - theorem mv_polynomial.mem_restrict_total_degree - def mv_polynomial.restrict_degree - def mv_polynomial.restrict_total_degree Added src/linear_algebra/finsupp_vector_space.lean + theorem cardinal_lt_omega_of_dim_lt_omega + theorem cardinal_mk_eq_cardinal_mk_field_pow_dim + theorem eq_bot_iff_dim_eq_zero + theorem equiv_of_dim_eq_dim + theorem finsupp.dim_eq + theorem finsupp.is_basis_single + theorem finsupp.linear_independent_single + theorem injective_of_surjective Deleted src/linear_algebra/linear_combination.lean - def lc.apply - theorem lc.apply_apply - theorem lc.lsum_apply - theorem lc.map_apply - theorem lc.map_comp - theorem lc.map_disjoint_ker - theorem lc.map_id - theorem lc.map_supported - theorem lc.map_total - theorem lc.mem_supported' - theorem lc.mem_supported - theorem lc.range_restrict_dom - def lc.restrict_dom - theorem lc.restrict_dom_apply - theorem lc.restrict_dom_comp_subtype - theorem lc.single_mem_supported - def lc.supported - theorem lc.supported_Inter - theorem lc.supported_Union - theorem lc.supported_comap_map - theorem lc.supported_empty - theorem lc.supported_eq_span_single - theorem lc.supported_mono - theorem lc.supported_union - theorem lc.supported_univ - theorem lc.total_apply - def lc.total_on - theorem lc.total_on_range - theorem lc.total_range - theorem lc.total_single - def lc - theorem linear_eq_on - theorem mem_span_iff_lc - theorem span_eq_map_lc Modified src/linear_algebra/matrix.lean Modified src/logic/basic.lean + theorem nonempty_pempty +/- theorem not_nonempty_iff_imp_false Modified src/ring_theory/adjoin.lean Modified src/ring_theory/integral_closure.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/cardinal.lean + theorem cardinal.lift_max + theorem cardinal.mk_range_eq_of_inj Modified src/topology/metric_space/closeds.lean Modified src/topology/uniform_space/uniform_embedding.lean 2019-07-03 09:02:02 9a33885 chore(data/matrix): rows and columns the right way around (#1171) * chore(data/matrix): rows and columns the right way around * update matrix.lean ESTIMATED CHANGES Modified src/data/matrix.lean +/- def matrix.col +/- def matrix.minor +/- def matrix.row 2019-07-03 00:58:19 fd5617c feat(measure_theory): Define Bochner integration (#1149) * Create .DS_Store * Revert "Create .DS_Store" This reverts commit 5612886d493aef59205eddc5a34a75e6e5ba22c1. * Define bochner integral * Define bochner integral * Headings * Change used names * Fix styles; Get rid of redundant lemmas * Delete dash lines * changes * Fix everything Things remaining: * extend comments in headings * `integrable` predicate should include measurability * better proofs for simple_func_dense.lean * Fix everything Things remaining: * extend comments in headings * `integrable` predicate should include measurability * better proofs for simple_func_dense.lean * Remove redundant lemma * Fix styles ESTIMATED CHANGES Modified src/algebra/CommRing/colimits.lean +/- theorem CommRing.colimits.cocone_naturality_components Modified src/algebra/Mon/colimits.lean +/- theorem Mon.colimits.cocone_naturality_components Modified src/algebra/big_operators.lean +/- theorem finset.prod_map Modified src/algebra/module.lean +/- theorem is_linear_map.is_linear_map_smul' +/- theorem is_linear_map.is_linear_map_smul Modified src/algebra/ordered_field.lean + theorem nat.inv_pos_of_nat + theorem nat.one_div_pos_of_nat Modified src/analysis/asymptotics.lean Modified src/analysis/complex/exponential.lean +/- theorem real.mul_rpow +/- theorem real.rpow_le_rpow Modified src/analysis/normed_space/basic.lean +/- theorem real.norm_eq_abs Modified src/category_theory/limits/cones.lean +/- theorem category_theory.limits.cones.postcompose_map_hom Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colim.ι_map_assoc +/- theorem category_theory.limits.colimit.hom_iso_hom +/- theorem category_theory.limits.colimit.ι_post_assoc +/- theorem category_theory.limits.colimit.ι_pre_assoc +/- theorem category_theory.limits.limit.hom_iso_hom Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/limits/types.lean +/- theorem category_theory.limits.types.types_limit_lift Modified src/data/dfinsupp.lean Modified src/data/fin.lean +/- theorem fin.cast_succ_cast_lt Modified src/data/finset.lean +/- theorem finset.Ico.image_sub Modified src/data/finsupp.lean +/- theorem finsupp.support_add_eq Modified src/data/holor.lean +/- theorem holor.holor_index_cons_decomp +/- theorem holor.mul_assoc +/- theorem holor.slice_add Modified src/data/lazy_list2.lean Modified src/data/list/basic.lean +/- theorem list.Ico.map_sub Modified src/data/mv_polynomial.lean +/- theorem mv_polynomial.monomial_add_single +/- theorem mv_polynomial.monomial_single_add Modified src/data/nat/basic.lean + theorem nat.find_greatest_eq_zero + theorem nat.find_greatest_of_ne_zero +/- theorem nat.mul_left_eq_self_iff +/- theorem nat.mul_right_eq_self_iff Modified src/data/nat/cast.lean + theorem nat.cast_add_one_pos Modified src/data/polynomial.lean +/- def polynomial.decidable_dvd_monic +/- theorem polynomial.leading_coeff_comp Modified src/data/quot.lean +/- theorem nonempty_quotient_iff +/- theorem quotient.lift_beta +/- theorem quotient.lift_on_beta Modified src/data/real/ennreal.lean + theorem ennreal.coe_nnreal_eq +/- theorem ennreal.le_of_forall_epsilon_le + theorem ennreal.le_of_real_iff_to_real_le + theorem ennreal.lt_of_real_iff_to_real_lt + theorem ennreal.mem_Iio_self_add + theorem ennreal.mem_Ioo_self_sub_add + theorem ennreal.not_mem_Ioo_self_sub + theorem ennreal.of_real_eq_coe_nnreal + theorem ennreal.of_real_le_iff_le_to_real + theorem ennreal.of_real_lt_iff_lt_to_real + theorem ennreal.of_real_mul +/- theorem ennreal.sub_left_inj + theorem ennreal.sub_self + theorem ennreal.to_real_of_real_mul Modified src/data/real/hyperreal.lean +/- theorem hyperreal.abs_lt_real_iff_infinitesimal +/- theorem hyperreal.epsilon_lt_pos +/- theorem hyperreal.exists_st_iff_not_infinite +/- theorem hyperreal.exists_st_of_not_infinite +/- theorem hyperreal.gt_of_neg_of_infinitesimal +/- theorem hyperreal.infinite_iff_abs_lt_abs +/- theorem hyperreal.infinite_iff_infinite_abs +/- theorem hyperreal.infinite_iff_infinite_neg +/- theorem hyperreal.infinite_iff_infinite_pos_abs +/- theorem hyperreal.infinite_iff_infinitesimal_inv +/- theorem hyperreal.infinite_iff_not_exists_st +/- theorem hyperreal.infinite_mul_infinite +/- theorem hyperreal.infinite_mul_of_infinite_not_infinitesimal +/- theorem hyperreal.infinite_mul_of_not_infinitesimal_infinite +/- theorem hyperreal.infinite_neg_add_infinite_neg +/- theorem hyperreal.infinite_neg_add_not_infinite +/- theorem hyperreal.infinite_neg_add_not_infinite_pos +/- theorem hyperreal.infinite_neg_iff_infinite_and_neg +/- theorem hyperreal.infinite_neg_iff_infinite_of_neg +/- theorem hyperreal.infinite_neg_iff_infinite_pos_neg +/- theorem hyperreal.infinite_neg_iff_infinitesimal_inv_neg +/- theorem hyperreal.infinite_neg_mul_infinite_neg +/- theorem hyperreal.infinite_neg_mul_infinite_pos +/- theorem hyperreal.infinite_neg_mul_of_infinite_neg_not_infinitesimal_pos +/- theorem hyperreal.infinite_neg_mul_of_infinite_pos_not_infinitesimal_neg +/- theorem hyperreal.infinite_neg_mul_of_not_infinitesimal_neg_infinite_pos +/- theorem hyperreal.infinite_neg_mul_of_not_infinitesimal_pos_infinite_neg +/- theorem hyperreal.infinite_neg_neg_of_infinite_pos +/- theorem hyperreal.infinite_neg_of_tendsto_bot +/- theorem hyperreal.infinite_of_infinitesimal_inv +/- theorem hyperreal.infinite_omega +/- theorem hyperreal.infinite_pos_abs_iff_infinite_abs +/- theorem hyperreal.infinite_pos_add_infinite_pos +/- theorem hyperreal.infinite_pos_add_not_infinite +/- theorem hyperreal.infinite_pos_add_not_infinite_neg +/- theorem hyperreal.infinite_pos_iff_infinite_and_pos +/- theorem hyperreal.infinite_pos_iff_infinite_neg_neg +/- theorem hyperreal.infinite_pos_iff_infinite_of_nonneg +/- theorem hyperreal.infinite_pos_iff_infinite_of_pos +/- theorem hyperreal.infinite_pos_iff_infinitesimal_inv_pos +/- theorem hyperreal.infinite_pos_mul_infinite_neg +/- theorem hyperreal.infinite_pos_mul_infinite_pos +/- theorem hyperreal.infinite_pos_mul_of_infinite_neg_not_infinitesimal_neg +/- theorem hyperreal.infinite_pos_mul_of_infinite_pos_not_infinitesimal_pos +/- theorem hyperreal.infinite_pos_mul_of_not_infinitesimal_neg_infinite_neg +/- theorem hyperreal.infinite_pos_mul_of_not_infinitesimal_pos_infinite_pos +/- theorem hyperreal.infinite_pos_neg_of_infinite_neg +/- theorem hyperreal.infinite_pos_of_tendsto_top +/- theorem hyperreal.infinite_pos_omega +/- theorem hyperreal.infinitesimal_add +/- theorem hyperreal.infinitesimal_def +/- theorem hyperreal.infinitesimal_epsilon +/- theorem hyperreal.infinitesimal_iff_infinite_inv +/- theorem hyperreal.infinitesimal_inv_of_infinite +/- theorem hyperreal.infinitesimal_mul +/- theorem hyperreal.infinitesimal_neg +/- theorem hyperreal.infinitesimal_neg_iff +/- theorem hyperreal.infinitesimal_neg_iff_infinite_neg_inv +/- theorem hyperreal.infinitesimal_pos_iff_infinite_pos_inv +/- theorem hyperreal.infinitesimal_sub_is_st +/- theorem hyperreal.infinitesimal_sub_st +/- theorem hyperreal.is_st_Sup +/- theorem hyperreal.is_st_add +/- theorem hyperreal.is_st_iff_abs_sub_lt_delta +/- theorem hyperreal.is_st_inj_real +/- theorem hyperreal.is_st_inv +/- theorem hyperreal.is_st_mul +/- theorem hyperreal.is_st_neg +/- theorem hyperreal.is_st_real_iff_eq +/- theorem hyperreal.is_st_refl_real +/- theorem hyperreal.is_st_st' +/- theorem hyperreal.is_st_st +/- theorem hyperreal.is_st_st_of_is_st +/- theorem hyperreal.is_st_symm_real +/- theorem hyperreal.is_st_trans_real +/- theorem hyperreal.lt_neg_of_pos_of_infinitesimal +/- theorem hyperreal.lt_of_pos_of_infinitesimal +/- theorem hyperreal.lt_of_st_lt +/- theorem hyperreal.ne_zero_of_infinite +/- theorem hyperreal.not_infinite_add +/- theorem hyperreal.not_infinite_iff_exist_lt_gt +/- theorem hyperreal.not_infinite_mul +/- theorem hyperreal.not_infinite_neg +/- theorem hyperreal.not_infinite_neg_add_infinite_pos +/- theorem hyperreal.not_infinite_neg_of_infinite_pos +/- theorem hyperreal.not_infinite_of_exists_st +/- theorem hyperreal.not_infinite_of_infinitesimal +/- theorem hyperreal.not_infinite_pos_add_infinite_neg +/- theorem hyperreal.not_infinite_pos_of_infinite_neg +/- theorem hyperreal.not_infinitesimal_of_infinite +/- theorem hyperreal.not_infinitesimal_of_infinite_neg +/- theorem hyperreal.not_infinitesimal_of_infinite_pos +/- theorem hyperreal.not_real_of_infinite +/- theorem hyperreal.not_real_of_infinitesimal_ne_zero +/- theorem hyperreal.st_add +/- theorem hyperreal.st_infinite +/- theorem hyperreal.st_inv +/- theorem hyperreal.st_le_of_le +/- theorem hyperreal.st_mul +/- theorem hyperreal.st_neg +/- theorem hyperreal.st_of_is_st +/- theorem hyperreal.zero_iff_infinitesimal_real Modified src/data/real/nnreal.lean + theorem nnreal.le_of_real_iff_coe_le + theorem nnreal.lt_of_real_iff_coe_lt + theorem nnreal.of_real_le_iff_le_coe + theorem nnreal.of_real_lt_iff_lt_coe + theorem nnreal.of_real_mul Modified src/data/rel.lean +/- theorem rel.core_id +/- def rel Modified src/data/set/basic.lean +/- theorem set.range_coe_subtype + theorem set.range_ite_subset' + theorem set.range_ite_subset Modified src/data/set/countable.lean + def set.enumerate_countable + theorem set.subset_range_enumerate Modified src/data/set/disjointed.lean + theorem set.disjoint_disjointed' + theorem set.disjointed_subset Modified src/data/set/finite.lean + theorem set.finite_range_const + theorem set.finite_range_find_greatest + theorem set.finite_range_ite + theorem set.range_find_greatest_subset Modified src/data/set/lattice.lean +/- theorem set.Union_subset_iff Modified src/group_theory/subgroup.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/dimension.lean +/- theorem dim_map_le Modified src/logic/function.lean +/- theorem function.restrict_eq Added src/measure_theory/ae_eq_fun.lean + def measure_theory.ae_eq_fun.comp + def measure_theory.ae_eq_fun.comp_edist + theorem measure_theory.ae_eq_fun.comp_edist_self + def measure_theory.ae_eq_fun.comp₂ + theorem measure_theory.ae_eq_fun.comp₂_mk_mk + def measure_theory.ae_eq_fun.const + theorem measure_theory.ae_eq_fun.edist_eq_add_add + theorem measure_theory.ae_eq_fun.edist_mk_mk' + theorem measure_theory.ae_eq_fun.edist_mk_mk + theorem measure_theory.ae_eq_fun.edist_smul + def measure_theory.ae_eq_fun.eintegral + theorem measure_theory.ae_eq_fun.eintegral_add + theorem measure_theory.ae_eq_fun.eintegral_eq_zero_iff + theorem measure_theory.ae_eq_fun.eintegral_le_eintegral + theorem measure_theory.ae_eq_fun.eintegral_mk + theorem measure_theory.ae_eq_fun.eintegral_zero + def measure_theory.ae_eq_fun.lift_pred + def measure_theory.ae_eq_fun.lift_rel + def measure_theory.ae_eq_fun.lift_rel_mk_mk + def measure_theory.ae_eq_fun.mk + theorem measure_theory.ae_eq_fun.mk_add_mk + theorem measure_theory.ae_eq_fun.mk_eq_mk + theorem measure_theory.ae_eq_fun.mk_le_mk + theorem measure_theory.ae_eq_fun.neg_mk + theorem measure_theory.ae_eq_fun.one_def + theorem measure_theory.ae_eq_fun.quot_mk_eq_mk + theorem measure_theory.ae_eq_fun.smul_mk + theorem measure_theory.ae_eq_fun.zero_def + def measure_theory.ae_eq_fun Added src/measure_theory/bochner_integration.lean + def measure_theory.integral + def measure_theory.l1.integral + theorem measure_theory.l1.simple_func.dense_embedding_of_simple_func + theorem measure_theory.l1.simple_func.exists_simple_func_near + def measure_theory.l1.simple_func.integral + def measure_theory.l1.simple_func.mk + def measure_theory.l1.simple_func.to_simple_func + theorem measure_theory.l1.simple_func.uniform_continuous_of_simple_func + theorem measure_theory.l1.simple_func.uniform_embedding_of_simple_func + def measure_theory.l1.simple_func Modified src/measure_theory/borel_space.lean + theorem ennreal.measurable_of_real + theorem measure_theory.is_measurable_ball + theorem measure_theory.is_measurable_singleton + theorem measure_theory.measurable_coe_nnnorm + theorem measure_theory.measurable_dist' + theorem measure_theory.measurable_dist + theorem measure_theory.measurable_edist' + theorem measure_theory.measurable_edist + theorem measure_theory.measurable_nndist' + theorem measure_theory.measurable_nndist + theorem measure_theory.measurable_nnnorm' + theorem measure_theory.measurable_nnnorm + theorem measure_theory.measurable_norm' + theorem measure_theory.measurable_norm + theorem measure_theory.measurable_smul' + theorem measure_theory.measurable_smul + theorem nnreal.measurable_of_real Modified src/measure_theory/integration.lean Added src/measure_theory/l1_space.lean + def measure_theory.ae_eq_fun.integrable + theorem measure_theory.ae_eq_fun.integrable_add + theorem measure_theory.ae_eq_fun.integrable_mk + theorem measure_theory.ae_eq_fun.integrable_neg + theorem measure_theory.ae_eq_fun.integrable_smul + theorem measure_theory.ae_eq_fun.integrable_zero + def measure_theory.integrable + theorem measure_theory.integrable_add + theorem measure_theory.integrable_neg + theorem measure_theory.integrable_smul + theorem measure_theory.integrable_zero + theorem measure_theory.l1.add_def + theorem measure_theory.l1.dist_def + def measure_theory.l1.mk + theorem measure_theory.l1.norm_def + theorem measure_theory.l1.smul_def + theorem measure_theory.l1.zero_def + def measure_theory.l1 + theorem measure_theory.lintegral_nnnorm_add + theorem measure_theory.lintegral_nnnorm_neg + theorem measure_theory.lintegral_nnnorm_zero Modified src/measure_theory/measurable_space.lean + theorem measurable_find_greatest + theorem measurable_from_nat + theorem measurable_to_nat Modified src/measure_theory/measure_space.lean Added src/measure_theory/simple_func_dense.lean + theorem measure_theory.simple_func_sequence_tendsto' + theorem measure_theory.simple_func_sequence_tendsto Modified src/order/complete_lattice.lean Modified src/order/conditionally_complete_lattice.lean +/- theorem bdd_below_bot Modified src/order/filter/basic.lean +/- theorem filter.mem_infi +/- theorem filter.mem_infi_finite +/- theorem filter.univ_mem_sets' Modified src/order/filter/filter_product.lean +/- def filter.filter_product.of +/- theorem filter.filter_product.of_inj Modified src/order/filter/lift.lean Modified src/order/fixed_points.lean Modified src/ring_theory/polynomial.lean +/- theorem polynomial.degree_le_mono Modified src/tactic/ext.lean Modified src/tactic/solve_by_elim.lean Modified src/tactic/tfae.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean +/- theorem liminf_eq_of_tendsto +/- theorem limsup_eq_of_tendsto +/- theorem mem_of_is_glb_of_is_closed +/- theorem mem_of_is_lub_of_is_closed +/- theorem tendsto_of_liminf_eq_limsup Modified src/topology/basic.lean + theorem dense_of_subset_dense Modified src/topology/constructions.lean Modified src/topology/instances/ennreal.lean + theorem ennreal.Icc_mem_nhds + theorem ennreal.is_open_Ico_zero + theorem ennreal.nhds_of_ne_top + theorem ennreal.nhds_top + theorem ennreal.nhds_zero Modified src/topology/instances/nnreal.lean +/- theorem nnreal.tendsto_of_real Modified src/topology/metric_space/basic.lean + theorem continuous_nndist + theorem metric.mem_closure_range_iff + theorem metric.mem_closure_range_iff_nat Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.ball_subset Modified src/topology/order.lean Modified src/topology/uniform_space/basic.lean +/- theorem uniformity_lift_le_comp Modified src/topology/uniform_space/separation.lean +/- theorem uniform_space.separation_quotient.uniform_continuous_map Modified test/ext.lean Modified test/linarith.lean Modified test/omega.lean Modified test/solve_by_elim.lean Modified test/tidy.lean +/- def tidy.test.tidy_test_1 2019-07-02 13:11:09 1ef2c2d feat(data/list/basic): filter_true and filter_false (#1169) * feat(data/list/basic): filter_true and filter_false * Update basic.lean * Update basic.lean * Update basic.lean * Update basic.lean ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.filter_false + theorem list.filter_true 2019-07-02 11:28:23 b4989a0 compute the cardinality of real (#1096) * compute the cardinality of real * minor improvements * fix(data/rat/denumerable): change namespace of of_rat * style(src/topology/algebra/infinite_sum): structure proof ESTIMATED CHANGES Modified src/data/equiv/denumerable.lean Modified src/data/equiv/nat.lean + def equiv.pnat_equiv_nat Modified src/data/fintype.lean + theorem not_nonempty_fintype Modified src/data/rat/denumerable.lean + theorem cardinal.mk_rat Added src/data/real/cardinality.lean + def cardinal.cantor_function + def cardinal.cantor_function_aux + theorem cardinal.cantor_function_aux_eq + theorem cardinal.cantor_function_aux_ff + theorem cardinal.cantor_function_aux_nonneg + theorem cardinal.cantor_function_aux_succ + theorem cardinal.cantor_function_aux_tt + theorem cardinal.cantor_function_le + theorem cardinal.cantor_function_succ + theorem cardinal.increasing_cantor_function + theorem cardinal.injective_cantor_function + theorem cardinal.mk_real + theorem cardinal.not_countable_real + theorem cardinal.summable_cantor_function Modified src/set_theory/cardinal.lean + theorem cardinal.denumerable_iff + theorem cardinal.infinite_iff + theorem cardinal.mk_int + theorem cardinal.mk_nat + theorem cardinal.mk_pnat +/- theorem cardinal.mul_def Modified src/set_theory/ordinal.lean + theorem cardinal.power_self_eq Modified src/topology/algebra/infinite_sum.lean + theorem tsum_eq_zero_add 2019-07-02 04:29:06 57b57b3 feat(data/equiv/basic): improve arrow_congr, define conj (#1119) * feat(data/equiv/basic): improve arrow_congr, define conj - redefine `equiv.arrow_congr` without an enclosing `match` - prove some trivial lemmas about `equiv.arrow_congr` - define `equiv.conj`, and prove trivial lemmas about it * chore(data/equiv/basic): add @[simp] Also split some long lines, and swap lhs with rhs in a few lemmas. * Reorder, drop TODO ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- def equiv.arrow_congr + theorem equiv.arrow_congr_apply + theorem equiv.arrow_congr_comp + theorem equiv.arrow_congr_refl + theorem equiv.arrow_congr_symm + theorem equiv.arrow_congr_trans + def equiv.conj + theorem equiv.conj_apply + theorem equiv.conj_comp + theorem equiv.conj_refl + theorem equiv.conj_symm + theorem equiv.conj_trans 2019-07-01 19:35:44 a2c291d feat(data/mv_polynomial): miscellaneous lemmas on eval, rename, etc (#1134) ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.C_eq_coe_nat + theorem mv_polynomial.C_pow +/- theorem mv_polynomial.coeff_X + theorem mv_polynomial.eval_rename_prodmk + theorem mv_polynomial.eval₂_assoc + theorem mv_polynomial.eval₂_congr +/- theorem mv_polynomial.eval₂_eta +/- theorem mv_polynomial.eval₂_mul +/- theorem mv_polynomial.eval₂_pow + theorem mv_polynomial.eval₂_prod + theorem mv_polynomial.eval₂_rename + theorem mv_polynomial.eval₂_rename_prodmk + theorem mv_polynomial.eval₂_sum + theorem mv_polynomial.ext_iff + theorem mv_polynomial.map_injective + theorem mv_polynomial.map_pow + theorem mv_polynomial.rename_eval₂ + theorem mv_polynomial.rename_prodmk_eval₂ 2019-07-01 17:57:38 fcfa2a4 refactor(set_theory/ordinal): restate well_ordering_thm (#1115) Define the relation rather than using an `exists` statement ESTIMATED CHANGES Modified src/set_theory/ordinal.lean + def well_ordering_rel - theorem well_ordering_thm 2019-07-01 17:01:12 f0bf43b feat(order/zorn): chain.image (#1084) * feat(order/zorn): chain.image * golf ESTIMATED CHANGES Modified src/order/zorn.lean + theorem zorn.chain.image 2019-06-29 16:56:28 469da29 feat(data/list/basic): map_nil and map_eq_nil (#1161) * feat(data/list/basic): map_nil and map_eq_nil * Update basic.lean * make Simon's changes ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.map_eq_nil 2019-06-29 13:28:56 0858157 refactor(category_theory/category): reorder arguments of `End.has_mul` (#1128) * Reorder arguments of `End.has_mul` and `Aut.has_mul`, adjust `category/fold` * clean up proofs in `category.fold` ESTIMATED CHANGES Modified src/category/fold.lean + def monoid.foldl.get +/- def monoid.foldl.mk +/- def monoid.foldl +/- def monoid.foldr.get +/- def monoid.foldr.mk +/- def monoid.foldr + def monoid.mfoldl.get +/- def monoid.mfoldl.mk +/- def monoid.mfoldl +/- def monoid.mfoldr.get +/- def monoid.mfoldr.mk + theorem traversable.foldl.unop_of_free_monoid - theorem traversable.foldr.unop_of_free_monoid + theorem traversable.mfoldl.unop_of_free_monoid - theorem traversable.mfoldr.unop_of_free_monoid Modified src/category_theory/category.lean +/- theorem category_theory.End.mul_def Modified src/category_theory/isomorphism.lean Modified src/data/opposite.lean + theorem opposite.op_inj_iff + theorem opposite.unop_inj_iff 2019-06-29 12:31:13 e310349 refactor(ring_theory/ideals): refactor local rings, add local ring homs (#1102) * WIP * refactor(ring_theory/ideals): refactor local rings, add local ring homs * residue_field.map is a field hom * make is_local_ring_hom extends is_ring_hom * refactor local_ring * tiny changes * Bump instance search depth ESTIMATED CHANGES Modified src/data/mv_polynomial.lean Modified src/data/padics/padic_integers.lean Modified src/ring_theory/ideals.lean +/- theorem coe_subset_nonunits + theorem exists_max_ideal_of_mem_nonunits +/- theorem ideal.is_coprime_def +/- theorem ideal.is_coprime_self +/- theorem ideal.mem_span_pair - def is_local_ring.zero_ne_one +/- def is_local_ring + theorem is_unit_of_map_unit + def local_of_is_local_ring + def local_of_nonunits_ideal - theorem local_of_nonunits_ideal + def local_of_unique_max_ideal + def local_of_unit_or_unit_one_sub + theorem local_ring.is_unit_of_mem_nonunits_one_sub_self + theorem local_ring.is_unit_one_sub_self_of_mem_nonunits + theorem local_ring.is_unit_or_is_unit_one_sub_self + theorem local_ring.max_ideal_unique + theorem local_ring.mem_nonunits_ideal + theorem local_ring.nonunits_add + def local_ring.nonunits_ideal + def local_ring.residue_field + theorem map_nonunit - theorem mem_nonunits_ideal +/- theorem mem_nonunits_iff +/- theorem mul_mem_nonunits_left +/- theorem mul_mem_nonunits_right +/- def nonunits - def nonunits_ideal +/- theorem one_not_mem_nonunits +/- theorem zero_mem_nonunits Modified src/ring_theory/localization.lean 2019-06-28 15:11:00 4a5a1a5 fix(data/list/min_max): correct names of mem_maximum and mem_minimum (#1162) * fix(data/list/min_max): correct names of mem_maximum and mem_minimum * Update denumerable.lean ESTIMATED CHANGES Modified src/data/equiv/denumerable.lean Modified src/data/list/min_max.lean + theorem list.maximum_mem - theorem list.mem_maximum - theorem list.mem_minimum + theorem list.minimum_mem 2019-06-28 09:09:55 7d56447 feat(logic/unique): fin 1 is unique (#1158) ESTIMATED CHANGES Modified src/logic/unique.lean 2019-06-27 11:12:29 6bc930a chore(src/tactic/interactive): `convert` docstring (#1148) * chore(src/tactic/interactive): `convert` docstring The `using` option to `convert` was not mentioned in the docstring, and I often struggle to remember the (perhaps slightly exotic?) `using` catchphrase * Update src/tactic/interactive.lean Co-Authored-By: Johan Commelin * Update interactive.lean ESTIMATED CHANGES Modified src/tactic/interactive.lean 2019-06-26 12:11:33 9b0fd36 feat(data/fintype): unique.fintype (#1154) ESTIMATED CHANGES Modified src/data/fintype.lean 2019-06-25 14:30:39 7484ab4 fix(data/matrix): add brackets to mul_neg and neg_mul to correct statement (#1151) * fix(data/matrix): add brackets to mul_neg and neg_mul to correct statement Each side of `mul_neg` was identical. * fix ESTIMATED CHANGES Modified src/data/matrix.lean 2019-06-25 13:00:33 a2aeabb feat(data/finset): length_sort (#1150) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.length_sort Modified src/data/list/sort.lean + theorem list.length_merge_sort Modified src/data/multiset.lean + theorem multiset.length_sort 2019-06-25 13:54:02+02:00 c4a4f79 feat(algebra/pi_instances): pi.ordered_comm_group (#1152) ESTIMATED CHANGES Modified src/algebra/pi_instances.lean 2019-06-24 12:33:51 c7ee110 feat(meta/expr): `simp` and `dsimp` an expr (#1147) * feat(meta/expr): `simp` and `dsimp` an expr * removing def that we don't need yet ESTIMATED CHANGES Modified src/meta/expr.lean 2019-06-23 02:01:56 d7283d7 feat(string): `split_on` a `char` (#1145) * lib: string * type ESTIMATED CHANGES Modified src/data/string/defs.lean + def string.split_on 2019-06-20 08:30:31 a35d682 feat(topology/order): more facts on continuous_on (#1140) ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem continuous_on.inv + theorem continuous_on.sub Modified src/topology/algebra/monoid.lean + theorem continuous_on.mul Modified src/topology/basic.lean + theorem nhds_within_le_of_mem + theorem nhds_within_restrict'' + theorem self_mem_nhds_within Modified src/topology/order.lean + theorem continuous.comp_continuous_on + theorem continuous.continuous_at + theorem continuous_at.preimage_mem_nhds + theorem continuous_on.preimage_closed_of_closed + theorem continuous_on_iff_is_closed + theorem continuous_on_open_iff + theorem continuous_on_open_of_generate_from + theorem continuous_within_at.congr_of_mem_nhds_within + theorem continuous_within_at.continuous_at + theorem continuous_within_at.preimage_mem_nhds_within + theorem continuous_within_at_inter' + theorem continuous_within_at_inter 2019-06-19 21:00:28 e598894 chore(topology/*): reverse order on topological and uniform spaces (#1138) * chore(topology/*): reverse order on topological and uniform spaces * fix(topology/order): private lemma hiding partial order oscillation, following Mario's suggestion * change a temporary name Co-Authored-By: Johan Commelin * forgotten rename ESTIMATED CHANGES Modified src/measure_theory/borel_space.lean +/- theorem ennreal.measurable_sub +/- theorem nnreal.measurable_add +/- theorem nnreal.measurable_mul +/- theorem nnreal.measurable_sub Modified src/order/complete_lattice.lean + theorem lattice.infi_pair + theorem lattice.supr_pair Modified src/topology/Top/adjunctions.lean Modified src/topology/Top/basic.lean Modified src/topology/Top/limits.lean Modified src/topology/algebra/ordered.lean Modified src/topology/bases.lean Modified src/topology/constructions.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean +/- theorem nnreal.continuous_sub' +/- theorem nnreal.continuous_sub Modified src/topology/maps.lean Modified src/topology/order.lean + theorem coinduced_bot - theorem coinduced_inf - theorem coinduced_infi + theorem coinduced_le_iff_le_induced + theorem coinduced_sup + theorem coinduced_supr - theorem coinduced_top +/- theorem continuous_Inf_dom +/- theorem continuous_Inf_rng +/- theorem continuous_Sup_dom +/- theorem continuous_Sup_rng +/- theorem continuous_bot + theorem continuous_iff_coinduced_le - theorem continuous_iff_induced_le - theorem continuous_iff_le_coinduced + theorem continuous_iff_le_induced - theorem continuous_inf_dom + theorem continuous_inf_dom_left + theorem continuous_inf_dom_right + theorem continuous_inf_rng - theorem continuous_inf_rng_left - theorem continuous_inf_rng_right +/- theorem continuous_infi_dom +/- theorem continuous_infi_rng + theorem continuous_sup_dom - theorem continuous_sup_dom_left - theorem continuous_sup_dom_right - theorem continuous_sup_rng + theorem continuous_sup_rng_left + theorem continuous_sup_rng_right +/- theorem continuous_supr_dom +/- theorem continuous_supr_rng +/- theorem continuous_top + theorem eq_bot_of_singletons_open +/- theorem eq_of_nhds_eq_nhds - theorem eq_top_of_singletons_open + theorem gc_coinduced_induced - theorem gc_induced_coinduced - theorem generate_from_le - theorem generate_from_le_iff_subset_is_open - theorem induced_bot + theorem induced_inf + theorem induced_infi - theorem induced_le_iff_le_coinduced - theorem induced_sup - theorem induced_supr + theorem induced_top +/- theorem is_closed_infi_iff - theorem is_open_infi_iff + theorem is_open_supr_iff + theorem le_generate_from + theorem le_generate_from_iff_subset_is_open +/- theorem le_of_nhds_le_nhds + theorem nhds_Inf - theorem nhds_Sup +/- theorem nhds_bot + theorem nhds_inf + theorem nhds_infi - theorem nhds_sup - theorem nhds_supr +/- theorem nhds_top + def tmp_complete_lattice + def tmp_order Modified src/topology/separation.lean Modified src/topology/stone_cech.lean +/- theorem dense_embedding_pure Modified src/topology/uniform_space/basic.lean + theorem inf_uniformity + theorem infi_uniformity - theorem sup_uniformity - theorem supr_uniformity + theorem to_topological_space_Inf - theorem to_topological_space_Sup +/- theorem to_topological_space_bot + theorem to_topological_space_inf + theorem to_topological_space_infi - theorem to_topological_space_sup - theorem to_topological_space_supr +/- theorem to_topological_space_top Modified src/topology/uniform_space/pi.lean 2019-06-19 08:03:18 b1cb48d feat(data/set): simple lemmas, renaming (#1137) * feat(data/set): simple lemmas, renaming * improve projection lemmas * arguments order ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.fst_image_prod + theorem set.fst_image_prod_subset +/- theorem set.preimage_id + theorem set.snd_image_prod + theorem set.snd_image_prod_subset Modified src/data/set/lattice.lean + theorem set.Inter_inter + theorem set.Union_diff + theorem set.Union_inter + theorem set.Union_union + theorem set.bUnion_inter + theorem set.diff_Inter - theorem set.diff_Inter_left + theorem set.diff_Union - theorem set.diff_Union_left - theorem set.diff_Union_right + theorem set.inter_Inter - theorem set.inter_Inter_left - theorem set.inter_Inter_right + theorem set.inter_Union - theorem set.inter_Union_left - theorem set.inter_Union_right + theorem set.inter_bUnion + theorem set.union_Inter - theorem set.union_Inter_left + theorem set.union_Union - theorem set.union_Union_left - theorem set.union_Union_right Modified src/measure_theory/integration.lean +/- theorem measure_theory.limsup_lintegral_le +/- theorem measure_theory.lintegral_supr_ae Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.all_ae_of_all Modified src/measure_theory/outer_measure.lean 2019-06-18 22:06:30 235b899 fix(category_theory/types): rename lemma `ulift_functor.map` (#1133) * fix(category_theory/types): avoid shadowing `ulift_functor.map` by a lemma Now we can use `ulift_functor.map` in the sense `functor.map ulift_functor`. * `ulift_functor.map_spec` → `ulift_functor_map` as suggested by @semorrison in https://github.com/leanprover-community/mathlib/pull/1133#pullrequestreview-250179914 ESTIMATED CHANGES Modified src/category_theory/types.lean - theorem category_theory.ulift_functor.map + theorem category_theory.ulift_functor_map 2019-06-17 13:09:55 d8d25e9 refactor(analysis/normed_space/deriv): split and move to calculus folder (#1135) ESTIMATED CHANGES Renamed src/analysis/normed_space/deriv.lean to src/analysis/calculus/deriv.lean - theorem is_open.unique_diff_on - theorem is_open.unique_diff_within_at - theorem tangent_cone_at.lim_zero - def tangent_cone_at - theorem tangent_cone_inter_open - theorem tangent_cone_mono - theorem tangent_cone_univ - def unique_diff_on - theorem unique_diff_on_inter - def unique_diff_within_at - theorem unique_diff_within_at_inter - theorem unique_diff_within_univ_at Added src/analysis/calculus/tangent_cone.lean + theorem is_open.unique_diff_on + theorem is_open.unique_diff_within_at + theorem tangent_cone_at.lim_zero + def tangent_cone_at + theorem tangent_cone_inter_open + theorem tangent_cone_mono + theorem tangent_cone_univ + def unique_diff_on + theorem unique_diff_on_inter + def unique_diff_within_at + theorem unique_diff_within_at_inter + theorem unique_diff_within_univ_at 2019-06-16 19:28:43 7b715eb Direct limit of modules, abelian groups, rings, and fields. (#754) * stuff * stuff * more stuff * pre merge commit * prove of_zero.exact * remove silly rewrite * slightly shorten proof * direct limit of modules * upgrade mathlib * direct limit of rings * direct limit of fields (WIP) * trying to prove zero_exact for rings * use sqrt 2 instead of F4 * direct limit of field * cleanup for mathlib * remove ununsed lemmas * clean up * docstrings * local * fix build * Replace real with polynomial int in proof * Update basic.lean ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.exists_le Added src/algebra/direct_limit.lean + def add_comm_group.direct_limit.directed_system + def add_comm_group.direct_limit.lift + theorem add_comm_group.direct_limit.lift_add + theorem add_comm_group.direct_limit.lift_neg + theorem add_comm_group.direct_limit.lift_of + theorem add_comm_group.direct_limit.lift_sub + theorem add_comm_group.direct_limit.lift_unique + theorem add_comm_group.direct_limit.lift_zero + theorem add_comm_group.direct_limit.of.zero_exact + def add_comm_group.direct_limit.of + theorem add_comm_group.direct_limit.of_add + theorem add_comm_group.direct_limit.of_f + theorem add_comm_group.direct_limit.of_neg + theorem add_comm_group.direct_limit.of_sub + theorem add_comm_group.direct_limit.of_zero + def add_comm_group.direct_limit + theorem field.direct_limit.exists_inv + theorem module.direct_limit.exists_of + def module.direct_limit.lift + theorem module.direct_limit.lift_of + theorem module.direct_limit.lift_unique + theorem module.direct_limit.of.zero_exact + theorem module.direct_limit.of.zero_exact_aux + def module.direct_limit.of + theorem module.direct_limit.of_f + theorem module.direct_limit.to_module_totalize_of_le + theorem module.direct_limit.totalize_apply + def module.direct_limit + theorem ring.direct_limit.exists_of + theorem ring.direct_limit.induction_on + def ring.direct_limit.lift + theorem ring.direct_limit.lift_add + theorem ring.direct_limit.lift_mul + theorem ring.direct_limit.lift_neg + theorem ring.direct_limit.lift_of + theorem ring.direct_limit.lift_one + theorem ring.direct_limit.lift_pow + theorem ring.direct_limit.lift_sub + theorem ring.direct_limit.lift_unique + theorem ring.direct_limit.lift_zero + theorem ring.direct_limit.of.zero_exact + theorem ring.direct_limit.of.zero_exact_aux2 + theorem ring.direct_limit.of.zero_exact_aux + def ring.direct_limit.of + theorem ring.direct_limit.of_add + theorem ring.direct_limit.of_f + theorem ring.direct_limit.of_inj + theorem ring.direct_limit.of_mul + theorem ring.direct_limit.of_neg + theorem ring.direct_limit.of_one + theorem ring.direct_limit.of_pow + theorem ring.direct_limit.of_sub + theorem ring.direct_limit.of_zero + def ring.direct_limit Modified src/algebra/module.lean + def is_add_group_hom.to_linear_map Modified src/data/dfinsupp.lean + theorem dfinsupp.support_smul Modified src/data/polynomial.lean + theorem polynomial.int_cast_eq_C + theorem polynomial.nat_cast_eq_C + theorem polynomial.nat_degree_int_cast + theorem polynomial.nat_degree_nat_cast Modified src/linear_algebra/direct_sum_module.lean + theorem direct_sum.apply_eq_component + theorem direct_sum.component.lof_self + theorem direct_sum.component.of + def direct_sum.component + theorem direct_sum.ext + theorem direct_sum.ext_iff + theorem direct_sum.lof_apply + theorem direct_sum.single_eq_lof Modified src/linear_algebra/tensor_product.lean Modified src/order/basic.lean Modified src/ring_theory/free_comm_ring.lean + theorem free_comm_ring.exists_finite_support + theorem free_comm_ring.exists_finset_support + def free_comm_ring.is_supported + theorem free_comm_ring.is_supported_add + theorem free_comm_ring.is_supported_int + theorem free_comm_ring.is_supported_mul + theorem free_comm_ring.is_supported_neg + theorem free_comm_ring.is_supported_of + theorem free_comm_ring.is_supported_one + theorem free_comm_ring.is_supported_sub + theorem free_comm_ring.is_supported_upwards + theorem free_comm_ring.is_supported_zero + theorem free_comm_ring.map_subtype_val_restriction + def free_comm_ring.restriction + theorem free_comm_ring.restriction_add + theorem free_comm_ring.restriction_mul + theorem free_comm_ring.restriction_neg + theorem free_comm_ring.restriction_of + theorem free_comm_ring.restriction_one + theorem free_comm_ring.restriction_sub + theorem free_comm_ring.restriction_zero Modified src/ring_theory/free_ring.lean 2019-06-16 19:04:52 38d5c12 feat(ring_theory/integral_closure): integral closure (#1087) * feat(ring_theory/integral_closure): integral closure * update ESTIMATED CHANGES Added src/ring_theory/integral_closure.lean + theorem fg_adjoin_of_finite + theorem fg_adjoin_singleton_of_integral + def integral_closure + theorem integral_closure_idem + def is_integral + theorem is_integral_add + theorem is_integral_algebra_map + theorem is_integral_iff_is_integral_closure_finite + theorem is_integral_mul + theorem is_integral_neg + theorem is_integral_of_mem_closure + theorem is_integral_of_mem_of_fg + theorem is_integral_of_noetherian' + theorem is_integral_of_noetherian + theorem is_integral_of_subring + theorem is_integral_one + theorem is_integral_sub + theorem is_integral_zero + theorem mem_integral_closure_iff_mem_fg 2019-06-15 01:30:00 3ad3522 feat(data/rat/denumerable): computable denumerability of Q (#1104) * feat(data/rat/denumerable): computable denumerability of Q * blah * fix build * remove unnecessary decidable_eq * add header * delete rat.lean and update imports * fix build * prove exists_not_mem_finset * massively speed up encode * minor change ESTIMATED CHANGES Modified src/algebra/archimedean.lean Modified src/data/equiv/denumerable.lean + def denumerable.of_encodable_of_infinite + def nat.subtype.denumerable + theorem nat.subtype.exists_succ + theorem nat.subtype.le_succ_of_forall_lt_le + theorem nat.subtype.lt_succ_iff_le + theorem nat.subtype.lt_succ_self + def nat.subtype.of_nat + theorem nat.subtype.of_nat_surjective + theorem nat.subtype.of_nat_surjective_aux + def nat.subtype.succ + theorem nat.subtype.succ_le_of_lt Modified src/data/equiv/encodable.lean + def encodable.decidable_range_encode + def encodable.equiv_range_encode Modified src/data/fintype.lean + theorem infinite.exists_not_mem_finset + theorem infinite.of_injective + theorem infinite.of_surjective Modified src/data/fp/basic.lean Modified src/data/option/basic.lean + theorem option.get_some + theorem option.some_get Modified src/data/padics/padic_norm.lean Renamed src/data/rat.lean to src/data/rat/basic.lean Added src/data/rat/denumerable.lean Modified src/measure_theory/outer_measure.lean Modified src/order/bounded_lattice.lean Modified src/tactic/norm_num.lean 2019-06-14 17:40:58 5040c81 feat(measure_theory/integration): dominated convergence theorem (#1123) * Create .DS_Store * Revert "Create .DS_Store" This reverts commit 5612886d493aef59205eddc5a34a75e6e5ba22c1. * feat(measure_theory/integration): dominated convergence theorem * Changes to styles * Update ordered.lean * Changes to styles * Update integration.lean * Changes to styles ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.sub_left_inj Modified src/measure_theory/borel_space.lean + theorem ennreal.measurable_add + theorem ennreal.measurable_sub + theorem measure_theory.measurable.infi_Prop + theorem measure_theory.measurable.supr_Prop + theorem nnreal.measurable_add + theorem nnreal.measurable_mul + theorem nnreal.measurable_sub Modified src/measure_theory/integration.lean + theorem measure_theory.dominated_convergence_nn + theorem measure_theory.limsup_lintegral_le + theorem measure_theory.lintegral_infi_ae + theorem measure_theory.lintegral_liminf_le + theorem measure_theory.lintegral_sub + theorem measure_theory.lintegral_supr_ae Modified src/measure_theory/measure_space.lean + theorem measure_theory.all_ae_of_all Modified src/order/liminf_limsup.lean + theorem filter.liminf_eq_supr_infi_of_nat + theorem filter.liminf_le_limsup + theorem filter.limsup_eq_infi_supr_of_nat Modified src/topology/algebra/ordered.lean + theorem liminf_eq_of_tendsto + theorem limsup_eq_of_tendsto + theorem tendsto_of_liminf_eq_limsup Modified src/topology/instances/nnreal.lean + theorem nnreal.continuous_sub' + theorem nnreal.continuous_sub 2019-06-14 13:35:52 5a183f0 provide some proof terms explicitly (#1132) ESTIMATED CHANGES Modified src/algebra/pi_instances.lean Modified src/data/complex/basic.lean Modified src/linear_algebra/basic.lean 2019-06-12 04:45:45 0c627fb chore(algebra/group/hom): drop unused section variables (#1130) ESTIMATED CHANGES Modified src/algebra/group/hom.lean 2019-06-11 21:06:39 3492206 feat(data/mv_polynomial): misc lemmas on rename, map, and eval2 (#1127) ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.coeff_X + theorem mv_polynomial.eval₂_comp_right + theorem mv_polynomial.map_eval₂ + theorem mv_polynomial.map_rename + theorem mv_polynomial.rename_add + theorem mv_polynomial.rename_mul + theorem mv_polynomial.rename_one + theorem mv_polynomial.rename_pow + theorem mv_polynomial.rename_sub + theorem mv_polynomial.rename_zero 2019-06-11 19:10:13 953c612 fix(category_theory): simplifying universes (#1122) ESTIMATED CHANGES Modified src/category_theory/adjunction/basic.lean Modified src/category_theory/adjunction/limits.lean Modified src/category_theory/category.lean +/- theorem category_theory.category.assoc_symm +/- def category_theory.large_category +/- def category_theory.small_category Modified src/category_theory/comma.lean +/- structure category_theory.comma Modified src/category_theory/concrete_category.lean +/- structure category_theory.bundled +/- def category_theory.forget +/- def category_theory.mk_ob Modified src/category_theory/const.lean Modified src/category_theory/core.lean +/- def category_theory.core Modified src/category_theory/discrete_category.lean Modified src/category_theory/epi_mono.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/equivalence.lean +/- structure category_theory.equivalence Modified src/category_theory/full_subcategory.lean +/- def category_theory.induced_category Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean +/- structure category_theory.functor Modified src/category_theory/functor_category.lean Modified src/category_theory/groupoid.lean +/- def category_theory.large_groupoid +/- def category_theory.small_groupoid Modified src/category_theory/isomorphism.lean +/- structure category_theory.iso Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.map_post +/- theorem category_theory.limits.colimit.pre_post +/- def category_theory.limits.is_colimit.of_faithful +/- def category_theory.limits.is_limit.of_faithful +/- theorem category_theory.limits.limit.map_post +/- theorem category_theory.limits.limit.pre_post Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/limits/shapes/binary_products.lean +/- def category_theory.limits.pair_function Modified src/category_theory/limits/shapes/equalizers.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/limits/shapes/pullbacks.lean Modified src/category_theory/monoidal/category.lean +/- def category_theory.tensor_iso Modified src/category_theory/monoidal/category_aux.lean Modified src/category_theory/monoidal/functor.lean Modified src/category_theory/natural_isomorphism.lean +/- def category_theory.iso.app Modified src/category_theory/natural_transformation.lean +/- structure category_theory.nat_trans Modified src/category_theory/opposites.lean Modified src/category_theory/pempty.lean Modified src/category_theory/products/default.lean Modified src/category_theory/punit.lean Modified src/category_theory/sparse.lean Modified src/category_theory/types.lean Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean 2019-06-11 17:46:50 98ece77 refactor(algebra/group): split into smaller files (#1121) * rename `src/algebra/group.lean` → `src/algebra/group/default.lean` * Split algebra/group/default into smaller files No code changes, except for variables declaration and imports * Fix compile * fix compile error: import `anti_hom` in `algebra/group/default` * Drop unused imports ESTIMATED CHANGES Deleted src/algebra/group.lean - theorem add_add_sub_cancel - theorem add_sub_cancel' - theorem add_sub_cancel'_right - theorem add_sub_sub_cancel - def additive - theorem bit0_zero - theorem bit1_zero - theorem conj_inv - theorem conj_mul - def divp - theorem divp_assoc - theorem divp_eq_one - theorem divp_mul_cancel - theorem divp_one - theorem divp_right_inj - theorem divp_self - theorem eq_iff_eq_of_sub_eq_sub - theorem eq_inv_iff_eq_inv - theorem eq_inv_iff_mul_eq_one - theorem eq_inv_mul_iff_mul_eq - theorem eq_mul_inv_iff_mul_eq - theorem eq_of_inv_eq_inv - theorem eq_sub_iff_add_eq' - theorem eq_sub_iff_add_eq - theorem free_add_monoid.add_def - theorem free_add_monoid.zero_def - def free_add_monoid - theorem free_monoid.mul_def - theorem free_monoid.one_def - def free_monoid - theorem inv.is_group_hom - theorem inv_comm_of_comm - theorem inv_eq_iff_inv_eq - theorem inv_eq_iff_mul_eq_one - theorem inv_eq_one - theorem inv_inj' - theorem inv_is_group_anti_hom - theorem inv_mul_eq_iff_eq_mul - theorem inv_ne_one - theorem is_add_group_hom.map_sub - theorem is_add_group_hom.sub - theorem is_add_monoid_hom.map_add - def is_conj - theorem is_conj_iff_eq - theorem is_conj_one_left - theorem is_conj_one_right - theorem is_conj_refl - theorem is_conj_symm - theorem is_conj_trans - theorem is_group_anti_hom.map_inv - theorem is_group_anti_hom.map_one - theorem is_group_hom.injective_iff - theorem is_group_hom.inv - theorem is_group_hom.map_inv - theorem is_group_hom.map_one - theorem is_group_hom.mul - theorem is_group_hom.to_is_monoid_hom - theorem is_monoid_hom.map_mul - theorem is_mul_hom.comp' - theorem is_mul_hom.comp - theorem is_mul_hom.id - theorem left_inverse_add_left_sub - theorem left_inverse_add_right_neg_add - theorem left_inverse_inv - theorem left_inverse_neg_add_add_right - theorem left_inverse_sub_add_left - theorem mul_divp_cancel - theorem mul_eq_one_iff_eq_inv - theorem mul_eq_one_iff_inv_eq - theorem mul_inv_eq_iff_eq_mul - theorem mul_inv_eq_one - theorem mul_left_inj - theorem mul_mul_mul_comm - theorem mul_right_inj - theorem mul_self_iff_eq_one - def multiplicative - theorem nat.units_eq_one - theorem neg_add' - theorem neg_sub_neg - theorem one_divp - theorem sub_add_add_cancel - theorem sub_add_sub_cancel' - theorem sub_add_sub_cancel - theorem sub_eq_iff_eq_add' - theorem sub_eq_iff_eq_add - theorem sub_eq_neg_add - theorem sub_eq_sub_iff_sub_eq_sub - theorem sub_eq_zero - theorem sub_left_inj - theorem sub_ne_zero - theorem sub_right_comm - theorem sub_right_inj - def sub_sub_cancel - theorem sub_sub_sub_cancel_left - theorem sub_sub_sub_cancel_right - theorem units.coe_inv - theorem units.coe_map - theorem units.coe_mul - theorem units.coe_one - theorem units.ext - theorem units.ext_iff - theorem units.inv_mul - theorem units.inv_mul_cancel_left - theorem units.inv_mul_cancel_right - theorem units.map_comp' - theorem units.map_comp - theorem units.map_id - def units.mk_of_mul_eq_one - theorem units.mul_inv - theorem units.mul_inv_cancel_left - theorem units.mul_inv_cancel_right - theorem units.mul_left_inj - theorem units.mul_right_inj - theorem units.val_coe - structure units - theorem with_one.coe_inj - theorem with_one.coe_ne_one - theorem with_one.mul_coe - theorem with_one.ne_one_iff_exists - theorem with_one.one_ne_coe - def with_one - theorem with_zero.coe_one - theorem with_zero.div_coe - theorem with_zero.div_eq_div - theorem with_zero.div_eq_iff_mul_eq - theorem with_zero.div_mul_cancel - theorem with_zero.div_one - theorem with_zero.div_zero - theorem with_zero.inv_coe - theorem with_zero.inv_one - theorem with_zero.inv_zero - theorem with_zero.mul_coe - theorem with_zero.mul_div_cancel - theorem with_zero.mul_inv_rev - theorem with_zero.mul_left_inv - theorem with_zero.mul_right_inv - theorem with_zero.one_div - theorem with_zero.zero_div Added src/algebra/group/anti_hom.lean + theorem inv_is_group_anti_hom + theorem is_group_anti_hom.map_inv + theorem is_group_anti_hom.map_one Added src/algebra/group/basic.lean + theorem add_add_sub_cancel + theorem add_sub_cancel' + theorem add_sub_cancel'_right + theorem add_sub_sub_cancel + theorem bit0_zero + theorem bit1_zero + theorem eq_iff_eq_of_sub_eq_sub + theorem eq_inv_iff_eq_inv + theorem eq_inv_iff_mul_eq_one + theorem eq_inv_mul_iff_mul_eq + theorem eq_mul_inv_iff_mul_eq + theorem eq_of_inv_eq_inv + theorem eq_sub_iff_add_eq' + theorem eq_sub_iff_add_eq + theorem inv_comm_of_comm + theorem inv_eq_iff_inv_eq + theorem inv_eq_iff_mul_eq_one + theorem inv_eq_one + theorem inv_inj' + theorem inv_mul_eq_iff_eq_mul + theorem inv_ne_one + theorem left_inverse_add_left_sub + theorem left_inverse_add_right_neg_add + theorem left_inverse_inv + theorem left_inverse_neg_add_add_right + theorem left_inverse_sub_add_left + theorem mul_eq_one_iff_eq_inv + theorem mul_eq_one_iff_inv_eq + theorem mul_inv_eq_iff_eq_mul + theorem mul_inv_eq_one + theorem mul_left_inj + theorem mul_mul_mul_comm + theorem mul_right_inj + theorem mul_self_iff_eq_one + theorem neg_add' + theorem neg_sub_neg + theorem sub_add_add_cancel + theorem sub_add_sub_cancel' + theorem sub_add_sub_cancel + theorem sub_eq_iff_eq_add' + theorem sub_eq_iff_eq_add + theorem sub_eq_neg_add + theorem sub_eq_sub_iff_sub_eq_sub + theorem sub_eq_zero + theorem sub_left_inj + theorem sub_ne_zero + theorem sub_right_comm + theorem sub_right_inj + def sub_sub_cancel + theorem sub_sub_sub_cancel_left + theorem sub_sub_sub_cancel_right Added src/algebra/group/conj.lean + theorem conj_inv + theorem conj_mul + def is_conj + theorem is_conj_iff_eq + theorem is_conj_one_left + theorem is_conj_one_right + theorem is_conj_refl + theorem is_conj_symm + theorem is_conj_trans Added src/algebra/group/default.lean Added src/algebra/group/free_monoid.lean + theorem free_add_monoid.add_def + theorem free_add_monoid.zero_def + def free_add_monoid + theorem free_monoid.mul_def + theorem free_monoid.one_def + def free_monoid Added src/algebra/group/hom.lean + theorem inv.is_group_hom + theorem is_add_group_hom.map_sub + theorem is_add_group_hom.sub + theorem is_add_monoid_hom.map_add + theorem is_group_hom.injective_iff + theorem is_group_hom.inv + theorem is_group_hom.map_inv + theorem is_group_hom.map_one + theorem is_group_hom.mul + theorem is_group_hom.to_is_monoid_hom + theorem is_monoid_hom.map_mul + theorem is_mul_hom.comp' + theorem is_mul_hom.comp + theorem is_mul_hom.id Added src/algebra/group/to_additive.lean Added src/algebra/group/type_tags.lean + def additive + def multiplicative Added src/algebra/group/units.lean + def divp + theorem divp_assoc + theorem divp_eq_one + theorem divp_mul_cancel + theorem divp_one + theorem divp_right_inj + theorem divp_self + theorem mul_divp_cancel + theorem nat.units_eq_one + theorem one_divp + theorem units.coe_inv + theorem units.coe_mul + theorem units.coe_one + theorem units.ext + theorem units.ext_iff + theorem units.inv_mul + theorem units.inv_mul_cancel_left + theorem units.inv_mul_cancel_right + def units.mk_of_mul_eq_one + theorem units.mul_inv + theorem units.mul_inv_cancel_left + theorem units.mul_inv_cancel_right + theorem units.mul_left_inj + theorem units.mul_right_inj + theorem units.val_coe + structure units Added src/algebra/group/units_hom.lean + theorem units.coe_map + theorem units.map_comp' + theorem units.map_comp + theorem units.map_id Added src/algebra/group/with_one.lean + theorem with_one.coe_inj + theorem with_one.coe_ne_one + theorem with_one.mul_coe + theorem with_one.ne_one_iff_exists + theorem with_one.one_ne_coe + def with_one + theorem with_zero.coe_one + theorem with_zero.div_coe + theorem with_zero.div_eq_div + theorem with_zero.div_eq_iff_mul_eq + theorem with_zero.div_mul_cancel + theorem with_zero.div_one + theorem with_zero.div_zero + theorem with_zero.inv_coe + theorem with_zero.inv_one + theorem with_zero.inv_zero + theorem with_zero.mul_coe + theorem with_zero.mul_div_cancel + theorem with_zero.mul_inv_rev + theorem with_zero.mul_left_inv + theorem with_zero.mul_right_inv + theorem with_zero.one_div + theorem with_zero.zero_div 2019-06-11 12:53:04-04:00 8d0e719 chore(mergify): don't dismiss reviews [ci-skip] (#1124) ESTIMATED CHANGES Modified .mergify.yml 2019-06-11 04:39:39 abfaf8d refactor(group_theory/abelianization): simplify abelianization (#1126) * feat(group_theory/conjugates) : define conjugates define group conjugates and normal closure * feat(algebra/order_functions): generalize strict_mono.monotone (#1022) * trying to merge * feat(group_theory\presented_group): define presented groups Presented groups are defined as a quotient of a free group by the normal subgroup the relations generate. * feat(group_theory\presented_group): define presented groups Presented groups are defined as a quotient of a free group by the normal subgroup the relations generate * Update src/group_theory/presented_group.lean Co-Authored-By: Keeley Hoek * Uniqueness of extension * Tidied up to_group.unique * Removed unnecessary line * Changed naming * refactor(group_theory/abelianization): simplify abelianization The commutator of a group was previously defined using lists. Now it is defined using `normal_closure`. This change simplifies some of the proofs ESTIMATED CHANGES Modified src/group_theory/abelianization.lean + theorem abelianization.commutator_subset_ker +/- theorem abelianization.lift.of 2019-06-10 13:38:37 bd2f35f feat(group_theory/presented_group): define presented groups (#1118) * feat(group_theory/conjugates) : define conjugates define group conjugates and normal closure * feat(algebra/order_functions): generalize strict_mono.monotone (#1022) * trying to merge * feat(group_theory\presented_group): define presented groups Presented groups are defined as a quotient of a free group by the normal subgroup the relations generate. * feat(group_theory\presented_group): define presented groups Presented groups are defined as a quotient of a free group by the normal subgroup the relations generate * Update src/group_theory/presented_group.lean Co-Authored-By: Keeley Hoek * Uniqueness of extension * Tidied up to_group.unique * Removed unnecessary line * Changed naming ESTIMATED CHANGES Added src/group_theory/presented_group.lean + theorem presented_group.closure_rels_subset_ker + def presented_group.of + theorem presented_group.to_group.inv + theorem presented_group.to_group.mul + theorem presented_group.to_group.of + theorem presented_group.to_group.one + theorem presented_group.to_group.unique + def presented_group.to_group + theorem presented_group.to_group_eq_one_of_mem_closure + def presented_group 2019-06-10 08:38:52+01:00 004e0b3 feat (data/pnat): extensions to pnat (#1073) * Extended API, especially divisibility and primes * Positive euclidean algorithm * Disambiguate overloaded :: * Tweak broken proof of flip_is_special * Change to mathlib style * Update src/data/pnat.lean Co-Authored-By: Johan Commelin * Update src/data/pnat.lean Co-Authored-By: Johan Commelin * Adjust style for mathlib * Moved and renamed * Move some material from basic.lean to prime.lean * Move some material from basic.lean to factors.lean * Update import to data.pnat.basic. * Update import to data.pnat.basic * Fix import of data.pnat.basic * Use monoid.pow instead of nat.pow * Fix pnat.pow_succ -> pow_succ; stylistic changes * More systematic use of coercion * More consistent use of coercion * Formatting; change flip' to prod.swap ESTIMATED CHANGES Modified src/data/hash_map.lean Modified src/data/nat/prime.lean + theorem nat.primes.coe_nat_inj + def nat.primes Deleted src/data/pnat.lean - def nat.succ_pnat - theorem nat.succ_pnat_coe - def nat.to_pnat' - def nat.to_pnat - theorem pnat.add_coe - theorem pnat.coe_to_pnat' - theorem pnat.eq - theorem pnat.mk_coe - theorem pnat.mul_coe - theorem pnat.ne_zero - theorem pnat.one_coe - theorem pnat.pos - def pnat.pow - theorem pnat.pow_coe - theorem pnat.to_pnat'_coe - def pnat Added src/data/pnat/basic.lean + theorem nat.primes.coe_pnat_inj + theorem nat.primes.coe_pnat_nat + def nat.succ_pnat + theorem nat.succ_pnat_coe + theorem nat.succ_pnat_inj + def nat.to_pnat' + theorem nat.to_pnat'_coe + def nat.to_pnat + theorem pnat.add_coe + theorem pnat.add_sub_of_lt + theorem pnat.coe_to_pnat' + def pnat.div + theorem pnat.div_coe + def pnat.div_exact + theorem pnat.dvd_antisymm + theorem pnat.dvd_gcd + theorem pnat.dvd_iff'' + theorem pnat.dvd_iff' + theorem pnat.dvd_iff + theorem pnat.dvd_intro + theorem pnat.dvd_lcm_left + theorem pnat.dvd_lcm_right + theorem pnat.dvd_one_iff + theorem pnat.dvd_refl + theorem pnat.dvd_trans + theorem pnat.eq + def pnat.gcd + theorem pnat.gcd_coe + theorem pnat.gcd_dvd_left + theorem pnat.gcd_dvd_right + theorem pnat.gcd_mul_lcm + def pnat.lcm + theorem pnat.lcm_coe + theorem pnat.lcm_dvd + theorem pnat.mk_coe + def pnat.mod + theorem pnat.mod_add_div + theorem pnat.mod_coe + def pnat.mod_div + def pnat.mod_div_aux + theorem pnat.mod_div_aux_spec + theorem pnat.mod_le + theorem pnat.mul_coe + theorem pnat.mul_div_exact + theorem pnat.ne_zero + theorem pnat.one_coe + theorem pnat.one_dvd + theorem pnat.pos + theorem pnat.pow_coe + def pnat.prime + theorem pnat.sub_coe + theorem pnat.to_pnat'_coe + def pnat Added src/data/pnat/factors.lean + theorem pnat.coe_nat_factor_multiset + theorem pnat.count_factor_multiset + def pnat.factor_multiset + def pnat.factor_multiset_equiv + theorem pnat.factor_multiset_gcd + theorem pnat.factor_multiset_lcm + theorem pnat.factor_multiset_le_iff' + theorem pnat.factor_multiset_le_iff + theorem pnat.factor_multiset_mul + theorem pnat.factor_multiset_of_prime + theorem pnat.factor_multiset_one + theorem pnat.factor_multiset_pow + theorem pnat.prod_factor_multiset + theorem prime_multiset.add_sub_of_le + theorem prime_multiset.card_of_prime + theorem prime_multiset.coe_nat_inj + theorem prime_multiset.coe_nat_of_prime + theorem prime_multiset.coe_nat_prime + theorem prime_multiset.coe_pnat_inj + theorem prime_multiset.coe_pnat_nat + theorem prime_multiset.coe_pnat_of_prime + theorem prime_multiset.coe_pnat_prime + theorem prime_multiset.coe_prod + theorem prime_multiset.factor_multiset_prod + def prime_multiset.of_nat_list + def prime_multiset.of_nat_multiset + def prime_multiset.of_pnat_list + def prime_multiset.of_pnat_multiset + def prime_multiset.of_prime + def prime_multiset.prod + theorem prime_multiset.prod_add + theorem prime_multiset.prod_dvd_iff' + theorem prime_multiset.prod_dvd_iff + theorem prime_multiset.prod_inf + theorem prime_multiset.prod_of_nat_list + theorem prime_multiset.prod_of_nat_multiset + theorem prime_multiset.prod_of_pnat_list + theorem prime_multiset.prod_of_pnat_multiset + theorem prime_multiset.prod_of_prime + theorem prime_multiset.prod_smul + theorem prime_multiset.prod_sup + theorem prime_multiset.prod_zero + def prime_multiset.to_nat_multiset + theorem prime_multiset.to_of_nat_multiset + theorem prime_multiset.to_of_pnat_multiset + def prime_multiset.to_pnat_multiset + def prime_multiset Added src/data/pnat/xgcd.lean + def pnat.gcd_a' + theorem pnat.gcd_a'_coe + theorem pnat.gcd_a_eq + def pnat.gcd_b' + theorem pnat.gcd_b'_coe + theorem pnat.gcd_b_eq + def pnat.gcd_d + theorem pnat.gcd_det_eq + theorem pnat.gcd_eq + theorem pnat.gcd_props + theorem pnat.gcd_rel_left' + theorem pnat.gcd_rel_left + theorem pnat.gcd_rel_right' + theorem pnat.gcd_rel_right + def pnat.gcd_w + def pnat.gcd_x + def pnat.gcd_y + def pnat.gcd_z + def pnat.xgcd: + def pnat.xgcd_type.a + def pnat.xgcd_type.b + def pnat.xgcd_type.finish + theorem pnat.xgcd_type.finish_is_reduced + theorem pnat.xgcd_type.finish_is_special + theorem pnat.xgcd_type.finish_v + def pnat.xgcd_type.flip + theorem pnat.xgcd_type.flip_a + theorem pnat.xgcd_type.flip_b + theorem pnat.xgcd_type.flip_is_reduced + theorem pnat.xgcd_type.flip_is_special + theorem pnat.xgcd_type.flip_v + theorem pnat.xgcd_type.flip_w + theorem pnat.xgcd_type.flip_x + theorem pnat.xgcd_type.flip_y + theorem pnat.xgcd_type.flip_z + def pnat.xgcd_type.is_reduced' + def pnat.xgcd_type.is_reduced + theorem pnat.xgcd_type.is_reduced_iff + def pnat.xgcd_type.is_special' + def pnat.xgcd_type.is_special + theorem pnat.xgcd_type.is_special_iff + def pnat.xgcd_type.mk' + def pnat.xgcd_type.q + def pnat.xgcd_type.qp + theorem pnat.xgcd_type.qp_eq + def pnat.xgcd_type.r + def pnat.xgcd_type.reduce + theorem pnat.xgcd_type.reduce_a + theorem pnat.xgcd_type.reduce_b + theorem pnat.xgcd_type.reduce_reduced' + theorem pnat.xgcd_type.reduce_reduced + theorem pnat.xgcd_type.reduce_special' + theorem pnat.xgcd_type.reduce_special + theorem pnat.xgcd_type.reduce_v + theorem pnat.xgcd_type.rq_eq + def pnat.xgcd_type.start + theorem pnat.xgcd_type.start_is_special + theorem pnat.xgcd_type.start_v + def pnat.xgcd_type.step + theorem pnat.xgcd_type.step_is_special + theorem pnat.xgcd_type.step_v + theorem pnat.xgcd_type.step_wf + def pnat.xgcd_type.succ₂ + def pnat.xgcd_type.v + theorem pnat.xgcd_type.v_eq_succ_vp + def pnat.xgcd_type.vp + def pnat.xgcd_type.w + def pnat.xgcd_type.z + structure pnat.xgcd_type Modified src/data/rat.lean Modified src/data/zmod/basic.lean Modified src/set_theory/ordinal_notation.lean 2019-06-08 23:11:29 3f9916e feat(tactic/rewrite_all): tactic to perform the nth occurrence of a rewrite (#999) * feat(tactic/rewrite_all): tactic to perform the nth occurrence of a rewrite * formatting * formatting * perhaps a little bit easier to read? * try renaming * there was a duplicate definition, just not the one lean complained about * Namespaces * I think kabstract works now * Fix * Test * Fix guard * updating test to reflect difference between congr and kabstract * oops * adding Keeley's example * remove kabstract implementation for now * cleanup test file * rename common to basic * Update src/tactic/rewrite_all/default.lean ESTIMATED CHANGES Modified src/data/mllist.lean Added src/tactic/rewrite_all/basic.lean + def side.other + def side.to_string + inductive side Added src/tactic/rewrite_all/congr.lean Added src/tactic/rewrite_all/default.lean Added test/rewrite_all.lean + structure F + structure cat 2019-06-07 16:54:39 b55e44d refactor(analysis/normed_space/basic): change normed_space definition (#1112) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/convex.lean +/- theorem convex_ball +/- theorem convex_closed_ball +/- theorem convex_on_dist Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean + structure normed_group.core + theorem normed_group.tendsto_nhds_zero - structure normed_space.core - theorem normed_space.tendsto_nhds_zero Modified src/analysis/normed_space/bounded_linear_maps.lean +/- structure is_bounded_linear_map Modified src/analysis/normed_space/deriv.lean Modified src/analysis/normed_space/operator_norm.lean + theorem continuous_linear_map.op_norm_neg 2019-06-07 15:21:25 85ed958 feat(data/quot): quot.map: act on non-id maps (#1120) * old version renamed to `quot.map_right` * similar changes to `quot.congr` and `quotient.congr` ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/quot.lean Modified src/topology/algebra/uniform_ring.lean 2019-06-06 16:45:38 f36fdfb refactor(category_theory/equivalence): simplify equivalence.trans (#1114) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean 2019-06-05 07:54:30 a7524b6 refactor(analysis/normed_space/operator_norm): topological modules (#1085) * refactor(analysis/normed_space/operator_norm): topological modules * remove useless typeclass in definition of topological module * refactor(analysis/normed_space/operator_norm): style ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean - theorem continuous_smul Modified src/analysis/normed_space/bounded_linear_maps.lean - theorem bounded_linear_map.is_bounded_linear_map - theorem bounded_linear_map.is_bounded_linear_map_comp_left - theorem bounded_linear_map.is_bounded_linear_map_comp_right + theorem continuous_linear_map.is_bounded_linear_map + theorem continuous_linear_map.is_bounded_linear_map_comp_left + theorem continuous_linear_map.is_bounded_linear_map_comp_right + def is_bounded_bilinear_map.linear_deriv + theorem is_bounded_bilinear_map_deriv_coe - def is_bounded_linear_map.to_bounded_linear_map + def is_bounded_linear_map.to_continuous_linear_map - theorem is_linear_map.bounded_of_continuous_at Modified src/analysis/normed_space/deriv.lean Modified src/analysis/normed_space/operator_norm.lean - theorem bounded_linear_map.add_apply - theorem bounded_linear_map.bounds_bdd_below - theorem bounded_linear_map.bounds_nonempty - theorem bounded_linear_map.coe_add' - theorem bounded_linear_map.coe_add - theorem bounded_linear_map.coe_apply' - theorem bounded_linear_map.coe_apply - theorem bounded_linear_map.coe_coe - theorem bounded_linear_map.coe_comp' - theorem bounded_linear_map.coe_comp - theorem bounded_linear_map.coe_id' - theorem bounded_linear_map.coe_id - theorem bounded_linear_map.coe_neg' - theorem bounded_linear_map.coe_neg - theorem bounded_linear_map.coe_sub' - theorem bounded_linear_map.coe_sub - theorem bounded_linear_map.coe_zero' - theorem bounded_linear_map.coe_zero - def bounded_linear_map.comp - theorem bounded_linear_map.continuous - theorem bounded_linear_map.ext - theorem bounded_linear_map.ext_iff - def bounded_linear_map.id - theorem bounded_linear_map.id_apply - theorem bounded_linear_map.is_O_comp - theorem bounded_linear_map.is_O_id - theorem bounded_linear_map.is_O_sub - theorem bounded_linear_map.le_op_norm - theorem bounded_linear_map.lipschitz - theorem bounded_linear_map.map_add - theorem bounded_linear_map.map_neg - theorem bounded_linear_map.map_smul - theorem bounded_linear_map.map_sub - theorem bounded_linear_map.map_zero - theorem bounded_linear_map.neg_apply - def bounded_linear_map.op_norm - theorem bounded_linear_map.op_norm_comp_le - theorem bounded_linear_map.op_norm_le_bound - theorem bounded_linear_map.op_norm_nonneg - theorem bounded_linear_map.op_norm_smul - theorem bounded_linear_map.op_norm_triangle - theorem bounded_linear_map.op_norm_zero_iff - def bounded_linear_map.prod - theorem bounded_linear_map.ratio_le_op_norm - def bounded_linear_map.scalar_prod_space_iso - theorem bounded_linear_map.smul_apply - theorem bounded_linear_map.sub_apply - theorem bounded_linear_map.unit_le_op_norm - def bounded_linear_map.zero - theorem bounded_linear_map.zero_apply - structure bounded_linear_map + theorem continuous_linear_map.bound + theorem continuous_linear_map.bounds_bdd_below + theorem continuous_linear_map.bounds_nonempty + theorem continuous_linear_map.is_O_comp + theorem continuous_linear_map.is_O_id + theorem continuous_linear_map.is_O_sub + theorem continuous_linear_map.le_op_norm + theorem continuous_linear_map.lipschitz + theorem continuous_linear_map.norm_id + theorem continuous_linear_map.norm_zero + def continuous_linear_map.op_norm + theorem continuous_linear_map.op_norm_comp_le + theorem continuous_linear_map.op_norm_le_bound + theorem continuous_linear_map.op_norm_nonneg + theorem continuous_linear_map.op_norm_smul + theorem continuous_linear_map.op_norm_triangle + theorem continuous_linear_map.op_norm_zero_iff + theorem continuous_linear_map.ratio_le_op_norm + theorem continuous_linear_map.scalar_prod_space_iso_norm + theorem continuous_linear_map.unit_le_op_norm + theorem linear_map.continuous_of_bound + def linear_map.with_bound + theorem linear_map_with_bound_apply + theorem linear_map_with_bound_coe Added src/topology/algebra/module.lean + theorem continuous_linear_map.add_apply + theorem continuous_linear_map.coe_add' + theorem continuous_linear_map.coe_add + theorem continuous_linear_map.coe_apply' + theorem continuous_linear_map.coe_apply + theorem continuous_linear_map.coe_coe + theorem continuous_linear_map.coe_comp' + theorem continuous_linear_map.coe_comp + theorem continuous_linear_map.coe_id' + theorem continuous_linear_map.coe_id + theorem continuous_linear_map.coe_neg' + theorem continuous_linear_map.coe_neg + theorem continuous_linear_map.coe_sub' + theorem continuous_linear_map.coe_sub + theorem continuous_linear_map.coe_zero' + theorem continuous_linear_map.coe_zero + def continuous_linear_map.comp + theorem continuous_linear_map.ext + theorem continuous_linear_map.ext_iff + def continuous_linear_map.id + theorem continuous_linear_map.id_apply + theorem continuous_linear_map.map_add + theorem continuous_linear_map.map_neg + theorem continuous_linear_map.map_smul + theorem continuous_linear_map.map_sub + theorem continuous_linear_map.map_zero + theorem continuous_linear_map.neg_apply + def continuous_linear_map.prod + def continuous_linear_map.scalar_prod_space_iso + theorem continuous_linear_map.smul_apply + theorem continuous_linear_map.sub_apply + def continuous_linear_map.zero + theorem continuous_linear_map.zero_apply + structure continuous_linear_map + theorem continuous_smul' + theorem continuous_smul 2019-06-04 20:49:06 a152f3a chore(doc/install/macos): improve mac install instructions (#1106) * tweaking install instructions * minor * minor * minor * minor * small icon * improve instructions for installing the extension on all OSes * minor ESTIMATED CHANGES Modified docs/install/debian_details.md Added docs/install/extensions-icon.png Modified docs/install/linux.md Modified docs/install/macos.md Modified docs/install/project.md Modified docs/install/windows.md 2019-06-04 14:48:57+01:00 542d25d fix(data/logic/basic): Use a Sort for classical.some_spec2 (#1111) ESTIMATED CHANGES Modified src/logic/basic.lean +/- theorem classical.some_spec2 2019-06-03 22:11:39 dd832f0 feat(topology/basic): is_open_Inter and others (#1108) ESTIMATED CHANGES Modified src/topology/basic.lean +/- theorem is_closed_Union + theorem is_closed_Union_prop + theorem is_closed_bUnion + theorem is_open_Inter + theorem is_open_Inter_prop Modified src/topology/uniform_space/cauchy.lean 2019-06-03 20:36:09 504c0ad feat(data/set/basic): union_inter_distrib lemmas (#1107) * feat(data/set/basic): union_inter_distrib lemmas * add parentheses ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.inter_union_distrib_left + theorem set.inter_union_distrib_right + theorem set.union_inter_distrib_left + theorem set.union_inter_distrib_right 2019-06-03 18:05:35 4263b2b fix(data/nat/gcd): correct order of arguments in nat.coprime_mul_iff_right (#1105) * Not sure how this works * Fix order for coprime_mul_iff_right * Remove spurious file ESTIMATED CHANGES Modified src/data/nat/gcd.lean +/- theorem nat.coprime_mul_iff_right 2019-06-01 20:38:34 38b8054 feat(data/mv_polynomial): add coeff for mv_polynomial (#1101) ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.nat_sub_apply Modified src/data/mv_polynomial.lean + def mv_polynomial.coeff + theorem mv_polynomial.coeff_C + theorem mv_polynomial.coeff_C_mul + theorem mv_polynomial.coeff_add + theorem mv_polynomial.coeff_map + theorem mv_polynomial.coeff_monomial + theorem mv_polynomial.coeff_mul_X' + theorem mv_polynomial.coeff_mul_X + theorem mv_polynomial.coeff_sub + theorem mv_polynomial.coeff_sum + theorem mv_polynomial.coeff_zero + theorem mv_polynomial.coeff_zero_X + theorem mv_polynomial.ext + theorem mv_polynomial.monic_monomial_eq + def mv_polynomial.tmp.coe 2019-05-31 20:59:47 4f6307e feat(topology/algebra/open_subgroup): basics on open subgroups (#1067) * Dump the file into mathlib * feat(algebra/pi_instances): product of submonoids/groups/rings From the perfectoid project. * Small changes * feat(topology/algebra/open_subgroup): basics on open subgroups * Some proof compression * Update src/topology/algebra/open_subgroup.lean ESTIMATED CHANGES Added src/topology/algebra/open_subgroup.lean + theorem ideal.is_open_of_open_subideal + theorem open_add_subgroup.coe_inf + theorem open_add_subgroup.is_open_of_open_add_subgroup + theorem open_add_subgroup.le_iff + theorem open_add_subgroup.mem_nhds_zero + def open_add_subgroup.prod + theorem open_subgroup.coe_inf + theorem open_subgroup.coe_injective + theorem open_subgroup.ext' + theorem open_subgroup.ext + theorem open_subgroup.is_closed + theorem open_subgroup.is_open_of_nonempty_open_subset + theorem open_subgroup.is_open_of_open_subgroup + theorem open_subgroup.le_iff + theorem open_subgroup.mem_nhds_one + def open_subgroup.prod + def open_subgroup + theorem submodule.is_open_of_open_submodule 2019-05-31 19:49:44 6237939 fix(data/nat/enat): change [] to {} in some lemmas (#1054) * fix(data/nat/enat): change [] to {} in some lemmas * Update enat.lean * remove space ESTIMATED CHANGES Modified src/data/nat/enat.lean +/- theorem enat.to_with_top_coe' +/- theorem enat.to_with_top_top' +/- theorem enat.to_with_top_zero' 2019-05-31 17:26:55 8ebea31 feat(category_theory/monoidal): the monoidal category of types (#1100) * feat(category_theory/iso): missing lemmas * formatting * formatting * almost * oops * getting there * one more * sleep * good to go * monoidal category of types * fix names * renaming * linebreak * temporary notations * notations for associator, unitors? * more notation * names * more names * oops * renaming, and namespaces * comment * fix comment * remove unnecessary open, formatting * removing dsimps * replace with simp lemmas * fix * Update types.lean * fix namespace ESTIMATED CHANGES Added src/category_theory/monoidal/types.lean + def category_theory.monoidal.types_associator + def category_theory.monoidal.types_associator_inv + def category_theory.monoidal.types_braiding + def category_theory.monoidal.types_braiding_inv + def category_theory.monoidal.types_left_unitor + def category_theory.monoidal.types_left_unitor_inv + def category_theory.monoidal.types_right_unitor + def category_theory.monoidal.types_right_unitor_inv 2019-05-31 06:43:58 2db435d chore(category_theory): move all instances (e.g. Top, CommRing, Meas) into the root namespace (#1074) * splitting adjunction.lean * chore(CommRing/adjunctions): refactor proofs * remove unnecessary assumptions * add helpful doc-string * cleanup * chore(category_theory): move all instances (e.g. Top, CommRing, Meas) to the root namespace * minor * breaking things, haven't finished yet * deterministic timeout * unfold_coes to the rescue * one more int.cast * yet another int.cast * fix merge * minor * merge * fix imports * fix merge * fix imports/namespaces * more namespace fixes * fixes * delete stray file ESTIMATED CHANGES Modified docs/tutorial/category_theory/calculating_colimits_in_Top.lean Renamed src/category_theory/instances/CommRing/adjunctions.lean to src/algebra/CommRing/adjunctions.lean + theorem CommRing.polynomial_ring_map_val + theorem CommRing.polynomial_ring_obj_α - theorem category_theory.instances.CommRing.polynomial_ring_map_val - theorem category_theory.instances.CommRing.polynomial_ring_obj_α Renamed src/category_theory/instances/CommRing/basic.lean to src/algebra/CommRing/basic.lean + def CommRing.Int.cast + def CommRing.Int.hom_unique + theorem CommRing.comp_val + def CommRing.forget + def CommRing.forget_to_CommMon + theorem CommRing.id_val + def CommRing.is_comm_ring_hom + def CommRing.of + def CommRing.to_Ring + def CommRing + def Ring.forget + def Ring.of + def Ring - def category_theory.instances.CommRing.Int.cast - def category_theory.instances.CommRing.Int.hom_unique - def category_theory.instances.CommRing.Int - theorem category_theory.instances.CommRing.comp_val - def category_theory.instances.CommRing.forget - def category_theory.instances.CommRing.forget_to_CommMon - theorem category_theory.instances.CommRing.hom.ext - theorem category_theory.instances.CommRing.hom_coe_app - theorem category_theory.instances.CommRing.id_val - def category_theory.instances.CommRing.of - def category_theory.instances.CommRing.to_Ring - def category_theory.instances.CommRing - def category_theory.instances.Ring Renamed src/category_theory/instances/CommRing/colimits.lean to src/algebra/CommRing/colimits.lean + def CommRing.colimits.cocone_fun + def CommRing.colimits.cocone_morphism + theorem CommRing.colimits.cocone_naturality + theorem CommRing.colimits.cocone_naturality_components + def CommRing.colimits.colimit + def CommRing.colimits.colimit_cocone + def CommRing.colimits.colimit_is_colimit + def CommRing.colimits.colimit_setoid + def CommRing.colimits.colimit_type + def CommRing.colimits.desc_fun + def CommRing.colimits.desc_fun_lift + def CommRing.colimits.desc_morphism + theorem CommRing.colimits.naturality_bundled + inductive CommRing.colimits.prequotient + theorem CommRing.colimits.quot_add + theorem CommRing.colimits.quot_mul + theorem CommRing.colimits.quot_neg + theorem CommRing.colimits.quot_one + theorem CommRing.colimits.quot_zero + inductive CommRing.colimits.relation - def category_theory.instances.CommRing.colimits.cocone_fun - def category_theory.instances.CommRing.colimits.cocone_morphism - theorem category_theory.instances.CommRing.colimits.cocone_naturality - theorem category_theory.instances.CommRing.colimits.cocone_naturality_components - def category_theory.instances.CommRing.colimits.colimit - def category_theory.instances.CommRing.colimits.colimit_cocone - def category_theory.instances.CommRing.colimits.colimit_is_colimit - def category_theory.instances.CommRing.colimits.colimit_setoid - def category_theory.instances.CommRing.colimits.colimit_type - def category_theory.instances.CommRing.colimits.desc_fun - def category_theory.instances.CommRing.colimits.desc_fun_lift - def category_theory.instances.CommRing.colimits.desc_morphism - theorem category_theory.instances.CommRing.colimits.naturality_bundled - inductive category_theory.instances.CommRing.colimits.prequotient - theorem category_theory.instances.CommRing.colimits.quot_add - theorem category_theory.instances.CommRing.colimits.quot_mul - theorem category_theory.instances.CommRing.colimits.quot_neg - theorem category_theory.instances.CommRing.colimits.quot_one - theorem category_theory.instances.CommRing.colimits.quot_zero - inductive category_theory.instances.CommRing.colimits.relation Renamed src/category_theory/instances/CommRing/default.lean to src/algebra/CommRing/default.lean Renamed src/category_theory/instances/CommRing/limits.lean to src/algebra/CommRing/limits.lean + def CommRing.limit + def CommRing.limit_is_limit - def category_theory.instances.CommRing.limit - def category_theory.instances.CommRing.limit_is_limit Renamed src/category_theory/instances/Mon/basic.lean to src/algebra/Mon/basic.lean + def CommMon.forget + def CommMon.forget_to_Mon + def CommMon.is_comm_monoid_hom + def CommMon.of + def CommMon + def Mon.forget + def Mon.of + def Mon - def category_theory.instances.CommMon.forget_to_Mon - def category_theory.instances.CommMon - def category_theory.instances.Mon - def category_theory.instances.is_comm_monoid_hom Renamed src/category_theory/instances/Mon/colimits.lean to src/algebra/Mon/colimits.lean + def Mon.colimits.cocone_fun + def Mon.colimits.cocone_morphism + theorem Mon.colimits.cocone_naturality + theorem Mon.colimits.cocone_naturality_components + def Mon.colimits.colimit + def Mon.colimits.colimit_cocone + def Mon.colimits.colimit_is_colimit + def Mon.colimits.colimit_setoid + def Mon.colimits.colimit_type + def Mon.colimits.desc_fun + def Mon.colimits.desc_fun_lift + def Mon.colimits.desc_morphism + inductive Mon.colimits.prequotient + theorem Mon.colimits.quot_mul + theorem Mon.colimits.quot_one + inductive Mon.colimits.relation - def category_theory.instances.Mon.colimits.cocone_fun - def category_theory.instances.Mon.colimits.cocone_morphism - theorem category_theory.instances.Mon.colimits.cocone_naturality - theorem category_theory.instances.Mon.colimits.cocone_naturality_components - def category_theory.instances.Mon.colimits.colimit - def category_theory.instances.Mon.colimits.colimit_cocone - def category_theory.instances.Mon.colimits.colimit_is_colimit - def category_theory.instances.Mon.colimits.colimit_setoid - def category_theory.instances.Mon.colimits.colimit_type - def category_theory.instances.Mon.colimits.desc_fun - def category_theory.instances.Mon.colimits.desc_fun_lift - def category_theory.instances.Mon.colimits.desc_morphism - inductive category_theory.instances.Mon.colimits.prequotient - theorem category_theory.instances.Mon.colimits.quot_mul - theorem category_theory.instances.Mon.colimits.quot_one - inductive category_theory.instances.Mon.colimits.relation Renamed src/category_theory/instances/Mon/default.lean to src/algebra/Mon/default.lean Modified src/algebraic_geometry/presheafed_space.lean Modified src/algebraic_geometry/stalks.lean Modified src/category_theory/concrete_category.lean - theorem category_theory.bundled.bundled_hom.ext +/- theorem category_theory.bundled.concrete_category_id + theorem category_theory.bundled.hom_ext Deleted src/category_theory/instances/Top/default.lean Deleted src/category_theory/instances/TopCommRing/default.lean Renamed src/category_theory/instances/groups.lean to src/group_theory/category.lean + def AddCommGroup.forget_to_Group + def AddCommGroup.is_add_comm_group_hom + def AddCommGroup.of + def AddCommGroup + def Group.of + def Group - def category_theory.instances.AddCommGroup.forget_to_Group - def category_theory.instances.AddCommGroup - def category_theory.instances.Group - def category_theory.instances.is_add_comm_group_hom Renamed src/category_theory/instances/measurable_space.lean to src/measure_theory/Meas.lean + def Borel + def Meas.of + def Meas - def category_theory.instances.Borel - def category_theory.instances.Meas Renamed src/category_theory/instances/Top/adjunctions.lean to src/topology/Top/adjunctions.lean + def Top.adj₁ + def Top.adj₂ - def category_theory.instances.Top.adj₁ - def category_theory.instances.Top.adj₂ Renamed src/category_theory/instances/Top/basic.lean to src/topology/Top/basic.lean + def Top.discrete + def Top.forget + def Top.of + def Top.trivial + def Top - def category_theory.instances.Top.discrete - def category_theory.instances.Top.forget - def category_theory.instances.Top.of - def category_theory.instances.Top.trivial - def category_theory.instances.Top Added src/topology/Top/default.lean Renamed src/category_theory/instances/Top/epi_mono.lean to src/topology/Top/epi_mono.lean + theorem Top.epi_iff_surjective + theorem Top.mono_iff_injective - theorem category_theory.instances.Top.epi_iff_surjective - theorem category_theory.instances.Top.mono_iff_injective Renamed src/category_theory/instances/Top/limits.lean to src/topology/Top/limits.lean + def Top.colimit + def Top.colimit_is_colimit + def Top.limit + def Top.limit_is_limit - def category_theory.instances.Top.colimit - def category_theory.instances.Top.colimit_is_colimit - def category_theory.instances.Top.limit - def category_theory.instances.Top.limit_is_limit Renamed src/category_theory/instances/Top/open_nhds.lean to src/topology/Top/open_nhds.lean Renamed src/category_theory/instances/Top/opens.lean to src/topology/Top/opens.lean Renamed src/category_theory/instances/Top/presheaf.lean to src/topology/Top/presheaf.lean + def Top.presheaf.pushforward.comp + theorem Top.presheaf.pushforward.comp_hom_app + theorem Top.presheaf.pushforward.comp_inv_app + def Top.presheaf.pushforward.id + theorem Top.presheaf.pushforward.id_hom_app' + theorem Top.presheaf.pushforward.id_hom_app + theorem Top.presheaf.pushforward.id_inv_app' + def Top.presheaf.pushforward + def Top.presheaf.pushforward_eq + theorem Top.presheaf.pushforward_eq_eq + def Top.presheaf - def category_theory.instances.Top.presheaf.pushforward.comp - theorem category_theory.instances.Top.presheaf.pushforward.comp_hom_app - theorem category_theory.instances.Top.presheaf.pushforward.comp_inv_app - def category_theory.instances.Top.presheaf.pushforward.id - theorem category_theory.instances.Top.presheaf.pushforward.id_hom_app' - theorem category_theory.instances.Top.presheaf.pushforward.id_hom_app - theorem category_theory.instances.Top.presheaf.pushforward.id_inv_app' - def category_theory.instances.Top.presheaf.pushforward - def category_theory.instances.Top.presheaf.pushforward_eq - theorem category_theory.instances.Top.presheaf.pushforward_eq_eq - def category_theory.instances.Top.presheaf Renamed src/category_theory/instances/Top/presheaf_of_functions.lean to src/topology/Top/presheaf_of_functions.lean + def Top.CommRing_yoneda + theorem Top.continuous_functions.add + def Top.continuous_functions.map + theorem Top.continuous_functions.mul + theorem Top.continuous_functions.one + def Top.continuous_functions.pullback + def Top.continuous_functions + def Top.presheaf_to_Top + def Top.presheaf_to_TopCommRing - def category_theory.instances.Top.CommRing_yoneda - theorem category_theory.instances.Top.continuous_functions.add - def category_theory.instances.Top.continuous_functions.map - theorem category_theory.instances.Top.continuous_functions.mul - theorem category_theory.instances.Top.continuous_functions.one - def category_theory.instances.Top.continuous_functions.pullback - def category_theory.instances.Top.continuous_functions - def category_theory.instances.Top.presheaf_to_Top - def category_theory.instances.Top.presheaf_to_TopCommRing Renamed src/category_theory/instances/Top/stalks.lean to src/topology/Top/stalks.lean + def Top.presheaf.stalk + def Top.presheaf.stalk_functor + theorem Top.presheaf.stalk_functor_obj + theorem Top.presheaf.stalk_pushforward.comp + theorem Top.presheaf.stalk_pushforward.id + def Top.presheaf.stalk_pushforward - def category_theory.instances.Top.presheaf.stalk - def category_theory.instances.Top.presheaf.stalk_functor - theorem category_theory.instances.Top.presheaf.stalk_functor_obj - theorem category_theory.instances.Top.presheaf.stalk_pushforward.comp - theorem category_theory.instances.Top.presheaf.stalk_pushforward.id - def category_theory.instances.Top.presheaf.stalk_pushforward Renamed src/category_theory/instances/TopCommRing/basic.lean to src/topology/algebra/TopCommRing/basic.lean + def TopCommRing.forget + def TopCommRing.forget_to_CommRing + def TopCommRing.forget_to_Top + def TopCommRing.forget_to_Type_via_CommRing + def TopCommRing.forget_to_Type_via_Top + def TopCommRing.of + structure TopCommRing - def category_theory.instances.TopCommRing.forget - def category_theory.instances.TopCommRing.forget_to_CommRing - def category_theory.instances.TopCommRing.forget_to_Top - def category_theory.instances.TopCommRing.forget_to_Type_via_CommRing - def category_theory.instances.TopCommRing.forget_to_Type_via_Top - def category_theory.instances.TopCommRing.of - structure category_theory.instances.TopCommRing Added src/topology/algebra/TopCommRing/default.lean 2019-05-30 12:43:47 c49ac06 feat(category_theory/monoidal): monoidal categories, monoidal functors (#1002) * feat(category_theory/iso): missing lemmas * formatting * formatting * almost * oops * getting there * one more * sleep * good to go * fix names * renaming * linebreak * temporary notations * notations for associator, unitors? * more notation * names * more names * oops * renaming, and namespaces * comment * fix comment * remove unnecessary open, formatting * removing dsimps * replace with simp lemmas * fix ESTIMATED CHANGES Added src/category_theory/monoidal/category.lean + theorem category_theory.monoidal_category.associator_inv_naturality + def category_theory.monoidal_category.associator_nat_iso + theorem category_theory.monoidal_category.comp_tensor_id + theorem category_theory.monoidal_category.id_tensor_comp + theorem category_theory.monoidal_category.id_tensor_comp_tensor_id + theorem category_theory.monoidal_category.inv_tensor + def category_theory.monoidal_category.left_assoc_tensor + theorem category_theory.monoidal_category.left_assoc_tensor_map + theorem category_theory.monoidal_category.left_assoc_tensor_obj + theorem category_theory.monoidal_category.left_unitor_inv_naturality + def category_theory.monoidal_category.left_unitor_nat_iso + theorem category_theory.monoidal_category.left_unitor_product_aux + theorem category_theory.monoidal_category.left_unitor_product_aux_perimeter + theorem category_theory.monoidal_category.left_unitor_product_aux_square + theorem category_theory.monoidal_category.left_unitor_product_aux_triangle + theorem category_theory.monoidal_category.left_unitor_tensor + theorem category_theory.monoidal_category.left_unitor_tensor_inv + theorem category_theory.monoidal_category.pentagon_inv + def category_theory.monoidal_category.right_assoc_tensor + theorem category_theory.monoidal_category.right_assoc_tensor_map + theorem category_theory.monoidal_category.right_assoc_tensor_obj + theorem category_theory.monoidal_category.right_unitor_inv_naturality + def category_theory.monoidal_category.right_unitor_nat_iso + theorem category_theory.monoidal_category.right_unitor_product_aux + theorem category_theory.monoidal_category.right_unitor_product_aux_perimeter + theorem category_theory.monoidal_category.right_unitor_product_aux_square + theorem category_theory.monoidal_category.right_unitor_product_aux_triangle + theorem category_theory.monoidal_category.right_unitor_tensor + theorem category_theory.monoidal_category.right_unitor_tensor_inv + def category_theory.monoidal_category.tensor + theorem category_theory.monoidal_category.tensor_id_comp_id_tensor + theorem category_theory.monoidal_category.tensor_left_iff + theorem category_theory.monoidal_category.tensor_right_iff + def category_theory.monoidal_category.tensor_unit_left + def category_theory.monoidal_category.tensor_unit_right + theorem category_theory.monoidal_category.triangle_assoc_comp_left + theorem category_theory.monoidal_category.triangle_assoc_comp_left_inv + theorem category_theory.monoidal_category.triangle_assoc_comp_right + theorem category_theory.monoidal_category.triangle_assoc_comp_right_inv + def category_theory.tensor_iso Added src/category_theory/monoidal/category_aux.lean + def category_theory.assoc_natural + def category_theory.assoc_obj + def category_theory.left_unitor_natural + def category_theory.left_unitor_obj + def category_theory.pentagon + def category_theory.right_unitor_natural + def category_theory.right_unitor_obj + def category_theory.tensor_hom_type + def category_theory.tensor_obj_type + def category_theory.triangle Added src/category_theory/monoidal/functor.lean + def category_theory.lax_monoidal_functor.comp + theorem category_theory.lax_monoidal_functor.comp_map + theorem category_theory.lax_monoidal_functor.comp_obj + theorem category_theory.lax_monoidal_functor.comp_ε + theorem category_theory.lax_monoidal_functor.comp_μ + structure category_theory.lax_monoidal_functor + def category_theory.monoidal_functor.comp + def category_theory.monoidal_functor.id + theorem category_theory.monoidal_functor.id_map + theorem category_theory.monoidal_functor.id_obj + theorem category_theory.monoidal_functor.id_ε + theorem category_theory.monoidal_functor.id_μ + def category_theory.monoidal_functor.ε_iso + def category_theory.monoidal_functor.μ_iso + def category_theory.monoidal_functor.μ_nat_iso + structure category_theory.monoidal_functor 2019-05-29 22:06:00 4845b66 feat(ring_theory): free_ring and free_comm_ring (#734) * feat(ring_theory): free_ring and free_comm_ring * Define isomorphism with mv_polynomial int * Ring hom free_ring -> free_comm_ring; 1 sorry left * Coe from free_ring to free_comm_ring is ring_hom * WIP * WIP * WIP * WIP * Refactoring a bunch of stuff * functor.map_equiv * Fix build * Fix build * Make multiset.subsingleton_equiv computable * Define specific equivs using general machinery * Fix build * Remove old commented code * feat(data/equiv/functor): map_equiv * fix(data/multiset): remove duplicate setoid instance * namespace changes ESTIMATED CHANGES Modified src/group_theory/free_abelian_group.lean Added src/ring_theory/free_comm_ring.lean + def free_comm_ring.lift + theorem free_comm_ring.lift_add + theorem free_comm_ring.lift_comp_of + theorem free_comm_ring.lift_mul + theorem free_comm_ring.lift_neg + theorem free_comm_ring.lift_of + theorem free_comm_ring.lift_one + theorem free_comm_ring.lift_pow + theorem free_comm_ring.lift_sub + theorem free_comm_ring.lift_zero + def free_comm_ring.map + theorem free_comm_ring.map_add + theorem free_comm_ring.map_mul + theorem free_comm_ring.map_neg + theorem free_comm_ring.map_of + theorem free_comm_ring.map_one + theorem free_comm_ring.map_pow + theorem free_comm_ring.map_sub + theorem free_comm_ring.map_zero + def free_comm_ring.of + def free_comm_ring + def free_comm_ring_equiv_mv_polynomial_int + def free_comm_ring_pempty_equiv_int + def free_comm_ring_punit_equiv_polynomial_int + theorem free_ring.coe_eq + def free_ring.subsingleton_equiv_free_comm_ring + def free_ring.to_free_comm_ring + def free_ring_pempty_equiv_int + def free_ring_punit_equiv_polynomial_int Added src/ring_theory/free_ring.lean + def free_ring.lift + theorem free_ring.lift_add + theorem free_ring.lift_comp_of + theorem free_ring.lift_mul + theorem free_ring.lift_neg + theorem free_ring.lift_of + theorem free_ring.lift_one + theorem free_ring.lift_pow + theorem free_ring.lift_sub + theorem free_ring.lift_zero + def free_ring.map + theorem free_ring.map_add + theorem free_ring.map_mul + theorem free_ring.map_neg + theorem free_ring.map_of + theorem free_ring.map_one + theorem free_ring.map_pow + theorem free_ring.map_sub + theorem free_ring.map_zero + def free_ring.of + def free_ring 2019-05-29 11:10:22 d935bc3 feat(presheaves/stalks): stalks of presheafs, and presheafed spaces with extra structure on stalks (#1018) * feat(category_theory/colimits): missing simp lemmas * feat(category_theory): functor.map_nat_iso * define `functor.map_nat_iso`, and relate to whiskering * rename `functor.on_iso` to `functor.map_iso` * add some missing lemmas about whiskering * fix(category_theory): presheaves, unbundled and bundled, and pushforwards * restoring `(opens X)ᵒᵖ` * various changes from working on stalks * rename `nbhds` to `open_nhds` * fix introduced typo * typo * compactify a proof * rename `presheaf` to `presheaf_on_space` * fix(category_theory): turn `has_limits` classes into structures * naming instances to avoid collisions * breaking up instances.topological_spaces * fixing all the other pi-type typclasses * fix import * oops * fix import * feat(category_theory): stalks of sheaves * renaming * fixes after rebase * nothing * yay, got rid of the @s * attempting a very general version of structured stalks * missed one * typo * WIP * oops * the presheaf of continuous functions to ℂ * restoring eq_to_hom simp lemmas * removing unnecessary simp lemma * remove another superfluous lemma * removing the nat_trans and vcomp notations; use \hom and \gg * a simpler proposal * getting rid of vcomp * fix * splitting files * renaming * probably working again? * update notation * remove old lemma * fix * comment out unfinished stuff * cleanup * use iso_whisker_right instead of map_nat_iso * proofs magically got easier? * improve some proofs * moving instances * remove crap * tidy * minimise imports * chore(travis): disable the check for minimal imports * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: semorrison * writing `op_induction` tactic, and improving proofs * squeeze_simping * cleanup * rearranging * cleanup * cleaning up * cleaning up * move * cleaning up * structured stalks * comment * structured stalks * more simp lemmas * formatting * Update src/category_theory/instances/Top/presheaf_of_functions.lean Co-Authored-By: Floris van Doorn * fixes in response to review * tidy regressions... :-( * oops * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: Johan Commelin * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: Johan Commelin * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: Johan Commelin * Update src/category_theory/instances/TopCommRing/basic.lean Co-Authored-By: Johan Commelin * def to lemma * remove useless lemma * explicit associator * broken * can't get proofs to work... * remove superfluous imports * missing headers * change example * reverting changes to tidy * remove presheaf_Z, as it doesn't work at the moment * fixes * fixes * fix * postponing stuff on structured stalks for a later PR * coercions * getting rid of all the `erw` * omitting some proofs * deleting more proofs * convert begin ... end to by * local ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean + theorem algebraic_geometry.PresheafedSpace.as_coe + theorem algebraic_geometry.PresheafedSpace.comp_c_app - theorem algebraic_geometry.PresheafedSpace.comp_f + theorem algebraic_geometry.PresheafedSpace.f_as_coe + theorem algebraic_geometry.PresheafedSpace.hom_mk_coe + theorem algebraic_geometry.PresheafedSpace.id_c_app + theorem algebraic_geometry.PresheafedSpace.id_coe - theorem algebraic_geometry.PresheafedSpace.id_f + theorem algebraic_geometry.PresheafedSpace.mk_coe Added src/algebraic_geometry/stalks.lean + def algebraic_geometry.PresheafedSpace.stalk + theorem algebraic_geometry.PresheafedSpace.stalk_map.comp + theorem algebraic_geometry.PresheafedSpace.stalk_map.id + def algebraic_geometry.PresheafedSpace.stalk_map Modified src/category_theory/functor_category.lean + theorem category_theory.functor.flip_map_app + theorem category_theory.functor.flip_obj_obj Modified src/category_theory/instances/Top/basic.lean + def category_theory.instances.Top.forget Modified src/category_theory/instances/Top/open_nhds.lean + theorem topological_space.open_nhds.map_obj Modified src/category_theory/instances/Top/opens.lean + theorem topological_space.opens.map_obj Modified src/category_theory/instances/Top/presheaf.lean Modified src/category_theory/instances/Top/presheaf_of_functions.lean Added src/category_theory/instances/Top/stalks.lean + def category_theory.instances.Top.presheaf.stalk + def category_theory.instances.Top.presheaf.stalk_functor + theorem category_theory.instances.Top.presheaf.stalk_functor_obj + theorem category_theory.instances.Top.presheaf.stalk_pushforward.comp + theorem category_theory.instances.Top.presheaf.stalk_pushforward.id + def category_theory.instances.Top.presheaf.stalk_pushforward Modified src/category_theory/instances/TopCommRing/basic.lean +/- def category_theory.instances.TopCommRing.forget_to_Type_via_CommRing +/- def category_theory.instances.TopCommRing.forget_to_Type_via_Top Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/natural_transformation.lean Modified src/category_theory/whiskering.lean Modified src/data/opposite.lean 2019-05-29 06:03:02 0de4bba feat(ordered_group): add missing instance (#1094) ESTIMATED CHANGES Modified src/algebra/ordered_group.lean +/- theorem neg_neg_iff_pos 2019-05-28 15:01:35 b20b722 fix(tactic/rcases): add parse desc to rcases/rintro (#1091) ESTIMATED CHANGES Modified src/tactic/rcases.lean Modified test/rcases.lean 2019-05-26 20:12:00 d434397 feat(group_theory/conjugates) : define conjugates (#1029) * feat(algebra/order_functions): generalize strict_mono.monotone (#1022) * moving stuff to where it belongs * removed unecessary import * Changed to union * Update src/group_theory/subgroup.lean Co-Authored-By: Johan Commelin * Stylistic changes * Added authorship * Moved mem_conjugates_of_set * Authorship * Trying fixes * Putting everything in the right order * removed import ESTIMATED CHANGES Modified src/algebra/group.lean + theorem conj_inv + theorem conj_mul Modified src/group_theory/subgroup.lean + theorem group.conj_mem_conjugates_of_set + def group.conjugates + def group.conjugates_of_set + theorem group.conjugates_of_set_mono + theorem group.conjugates_of_set_subset + theorem group.conjugates_of_set_subset_normal_closure + theorem group.conjugates_subset + theorem group.mem_conjugates_of_set_iff + theorem group.mem_conjugates_self + def group.normal_closure + theorem group.normal_closure_mono + theorem group.normal_closure_subset + theorem group.normal_closure_subset_iff + theorem group.subset_conjugates_of_set + theorem group.subset_normal_closure 2019-05-24 05:29:59 c6a7f30 refactor(set_theory/ordinal): shorten proof of well_ordering_thm (#1078) * refactor(set_theory/ordinal): shorten proof of well_ordering_thm§ * Update ordinal.lean * Update ordinal.lean * Update ordinal.lean * Improve readability * shorten proof * Shorten proof ESTIMATED CHANGES Modified src/set_theory/ordinal.lean - theorem chain_ub +/- theorem well_ordering_thm 2019-05-23 13:50:06 62acd6b chore(CommRing/adjunctions): refactor proofs (#1049) * splitting adjunction.lean * chore(CommRing/adjunctions): refactor proofs * remove unnecessary assumptions * add helpful doc-string * cleanup * breaking things, haven't finished yet * deterministic timeout * unfold_coes to the rescue * one more int.cast * yet another int.cast * Update src/data/mv_polynomial.lean Co-Authored-By: Johan Commelin * Update src/data/mv_polynomial.lean Co-Authored-By: Johan Commelin * WIP * Fix build * Fix build ESTIMATED CHANGES Renamed src/category_theory/adjunction.lean to src/category_theory/adjunction/basic.lean - def category_theory.adjunction.cocones_iso - def category_theory.adjunction.cones_iso - def category_theory.adjunction.functoriality_is_left_adjoint - def category_theory.adjunction.functoriality_is_right_adjoint - def category_theory.adjunction.left_adjoint_preserves_colimits - def category_theory.adjunction.right_adjoint_preserves_limits Added src/category_theory/adjunction/default.lean Added src/category_theory/adjunction/limits.lean + def category_theory.adjunction.cocones_iso + def category_theory.adjunction.cones_iso + def category_theory.adjunction.functoriality_is_left_adjoint + def category_theory.adjunction.functoriality_is_right_adjoint + def category_theory.adjunction.left_adjoint_preserves_colimits + def category_theory.adjunction.right_adjoint_preserves_limits Modified src/category_theory/epi_mono.lean Modified src/category_theory/instances/CommRing/adjunctions.lean - theorem category_theory.instances.CommRing.hom_coe_app' Modified src/category_theory/instances/CommRing/basic.lean - def category_theory.instances.CommRing.int.eq_cast' Modified src/category_theory/instances/Top/adjunctions.lean Modified src/category_theory/types.lean +/- theorem category_theory.types_comp +/- theorem category_theory.types_id Modified src/data/int/basic.lean + theorem int.eq_cast' Modified src/data/mv_polynomial.lean + theorem mv_polynomial.eval₂_cast_comp + theorem mv_polynomial.eval₂_hom_X + theorem mv_polynomial.hom_C +/- theorem mv_polynomial.rename_id +/- theorem mv_polynomial.rename_rename Modified src/tactic/tidy.lean 2019-05-23 11:08:00 15fecbd doc(finsupp,category_theory): fixes (#1075) * doc * update emb_domain doc string * typo ESTIMATED CHANGES Modified docs/theories/category_theory.md Modified src/data/finsupp.lean 2019-05-22 19:04:36 d07e3b3 feat(linear_algebra/basic): general_linear_group basics (#1064) * feat(linear_algebra/basic): general_linear_group basics This patch proves that the general_linear_group (defined as units in the endomorphism ring) are equivalent to the group of linear equivalences. * shorten proof of ext * Add mul_equiv * Use coe * Fix stupid error ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_equiv.ext + theorem linear_equiv.to_equiv_injective + def linear_map.general_linear_group.general_linear_equiv + theorem linear_map.general_linear_group.general_linear_equiv_to_linear_map + def linear_map.general_linear_group.of_linear_equiv + def linear_map.general_linear_group.to_linear_equiv 2019-05-22 16:32:40 f004d32 feat(data/nat): various lemmas (#1017) * feat(data/nat): various lemmas * protect a definition * fixes * Rob's suggestions * Mario’s proof (Working offline, let’s see what Travis says) * minigolf ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.div_eq_self + theorem nat.div_le_div_left + theorem nat.eq_of_dvd_quot_one + theorem nat.eq_zero_of_double_le + theorem nat.eq_zero_of_le_div + theorem nat.eq_zero_of_le_half + theorem nat.eq_zero_of_mul_le + theorem nat.lt_mul_of_div_lt 2019-05-21 21:29:42 971ddcc feat(*): image_closure (#1069) Prove that the image of the closure is the closure of the image, for submonoids/groups/rings. From the perfectoid project. ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem add_group.image_closure + theorem group.image_closure Modified src/group_theory/submonoid.lean + theorem add_monoid.image_closure + theorem monoid.image_closure Modified src/ring_theory/subring.lean + theorem ring.image_closure 2019-05-21 16:01:07 3461399 refactor(integration.lean): changing `measure_space` to `measurable_space` (#1072) I've been using this file and `range_const` doesn't seem to require the spurious `measure_space` instance. `measurable_space` seems to suffice. ESTIMATED CHANGES Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.range_const 2019-05-20 19:27:04 cb30c97 feat(algebra/pi_instances): product of submonoids/groups/rings (#1066) From the perfectoid project. ESTIMATED CHANGES Modified src/algebra/pi_instances.lean 2019-05-20 18:35:19 0ab8a89 feat(category_theory): limits in CommRing (#1006) * feat(category_theory): limits in CommRing * by * rename * sections * Update src/category_theory/types.lean Co-Authored-By: Johannes Hölzl ESTIMATED CHANGES Modified src/algebra/pi_instances.lean - def pi.is_ring_hom_pi Modified src/category_theory/instances/CommRing/basic.lean Added src/category_theory/instances/CommRing/limits.lean + def category_theory.instances.CommRing.limit + def category_theory.instances.CommRing.limit_is_limit Modified src/category_theory/limits/types.lean Modified src/category_theory/types.lean + def category_theory.functor.sections 2019-05-20 15:36:59 8cf7c4c chore(topology/algebra/monoid): continuous_mul_left/right (#1065) ESTIMATED CHANGES Modified src/topology/algebra/monoid.lean + theorem continuous_mul_left + theorem continuous_mul_right 2019-05-20 15:11:50 593938c chore(ring_theory/algebra): simp-lemmas for alg_hom.to_linear_map (#1062) * chore(ring_theory/algebra): simp-lemmas for alg_hom.to_linear_map From the perfectoid project. * Stupid error * Update src/ring_theory/algebra.lean Co-Authored-By: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + theorem alg_hom.comp_to_linear_map + theorem alg_hom.id_to_linear_map 2019-05-20 11:52:29 d001abf feat(tactic/basic): adds `contrapose` tactic (#1015) * feat(tactic/basic): adds `contrapose` tactic * fix(tactic/push_neg): fix is_prop testing * Setup error message testing following Rob, add tests for `contrapose` * refactor(tactic/interactive): move noninteractive success_if_fail_with_msg to tactic/core ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/core.lean Modified src/tactic/interactive.lean Modified src/tactic/push_neg.lean + theorem imp_of_not_imp_not Modified test/push_neg.lean 2019-05-20 11:16:53 15a6af2 feat(topology/opens): continuous.comap : opens Y → opens X (#1061) * feat(topology/opens): continuous.comap : opens Y → opens X From the perfectoid project. * Update opens.lean ESTIMATED CHANGES Modified src/topology/opens.lean + def continuous.comap + theorem continuous.comap_id + theorem continuous.comap_mono 2019-05-20 09:26:59 d4c7b7a feat(tactic/linarith): better input syntax linarith only [...] (#1056) * feat(tactic/ring, tactic/linarith): add reducibility parameter * fix(tactic/ring): interactive parsing for argument to ring1 * feat(tactic/linarith): better input syntax linarith only [...] * fix(docs/tactics): fix linarith doc ESTIMATED CHANGES Modified docs/tactics.md Modified src/analysis/complex/exponential.lean Modified src/data/complex/exponential.lean Modified src/tactic/core.lean Modified src/tactic/linarith.lean Modified src/tactic/ring.lean Modified test/linarith.lean Modified test/ring.lean 2019-05-19 17:40:09 f253401 refactor: coherent composition order (#1055) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/complex/exponential.lean Modified src/analysis/normed_space/banach.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/deriv.lean Modified src/analysis/specific_limits.lean Modified src/data/padics/hensel.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/decomposition.lean Modified src/order/filter/basic.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/ordered.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/basic.lean + theorem inter_mem_nhds_within + theorem nhds_within_restrict' Modified src/topology/constructions.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/lipschitz.lean Modified src/topology/order.lean + theorem continuous_at.comp +/- theorem continuous_on.comp + theorem continuous_within_at.comp Modified src/topology/sequences.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean 2019-05-19 13:39:22 cb4c9ee refactor(topology/metric/gromov_hausdorff): make Hausdorff_edist irreducible (#1052) * refactor(topology/metric/gromov_hausdorff): remove linarith calls * refactor(topology/metric/hausdorff_dist): make hausdorff_dist irreducible ESTIMATED CHANGES Modified src/topology/metric_space/hausdorff_distance.lean + theorem emetric.Hausdorff_edist_def 2019-05-19 12:47:56 b9cb69c feat(topology/order): make nhds irreducible (#1043) * feat(topology/order): make nhds irreducible * move nhds irreducible to topology.basic ESTIMATED CHANGES Modified src/topology/basic.lean + theorem le_nhds_iff + theorem nhds_def + theorem nhds_le_of_le Modified src/topology/order.lean 2019-05-18 16:36:44-04:00 73c3f71 feat(tactic/squeeze): remove noise from output (#1047) ESTIMATED CHANGES Modified src/tactic/squeeze.lean 2019-05-18 13:27:57 fa0e757 refactor(data/complex/exponential): improve trig proofs (#1041) * fix(data/complex/exponential): make complex.exp irreducible See discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/-T50000.20challenge Using `ring` (and other tactics) on terms involving `exp` can lead to some unpleasant and unnecessary unfolding. * refactor(data/complex/exponential): improve trig proofs * fix build * fix(algebra/group): prove lemma for comm_semigroup instead of comm_monoid ESTIMATED CHANGES Modified src/algebra/group.lean + theorem add_add_sub_cancel + theorem add_sub_sub_cancel + theorem mul_mul_mul_comm + theorem sub_add_add_cancel Modified src/algebra/group_power.lean + theorem sq_sub_sq Modified src/algebra/ring.lean + theorem mul_self_sub_mul_self Modified src/analysis/complex/exponential.lean Modified src/data/complex/basic.lean + theorem complex.I_sq + theorem complex.eq_conj_iff_re +/- theorem complex.eq_conj_iff_real Modified src/data/complex/exponential.lean + theorem complex.cos_add_sin_I + theorem complex.cos_sub_sin_I + theorem complex.cos_two_mul' + theorem complex.cosh_add_sinh + theorem complex.cosh_mul_I + theorem complex.cosh_sq_sub_sinh_sq + theorem complex.cosh_sub_sinh - theorem complex.sin_pow_two_add_cos_pow_two + theorem complex.sin_sq_add_cos_sq + theorem complex.sinh_add_cosh + theorem complex.sinh_mul_I + theorem complex.two_cos + theorem complex.two_cosh + theorem complex.two_sin + theorem complex.two_sinh - theorem real.cos_pow_two_le_one + theorem real.cos_sq_le_one +/- theorem real.exp_injective +/- theorem real.exp_le_exp +/- theorem real.exp_lt_exp + theorem real.exp_strict_mono - theorem real.sin_pow_two_add_cos_pow_two - theorem real.sin_pow_two_le_one + theorem real.sin_sq_add_cos_sq + theorem real.sin_sq_le_one 2019-05-17 20:21:42 5e5298b feat(adjointify): make definition easier for elaborator (#1045) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean 2019-05-17 18:53:41 45afa86 fix(topology/stone_cech): faster proof from @PatrickMassot (#1042) ESTIMATED CHANGES Modified src/topology/stone_cech.lean 2019-05-17 17:38:35 901178e feat(set_theory/surreal): surreal numbers (#958) * feat(set_theory/surreal): surreal numbers * doc(set_theory/surreal): surreal docs * minor changes in surreal ESTIMATED CHANGES Added src/set_theory/surreal.lean + def pSurreal.add + def pSurreal.equiv + theorem pSurreal.equiv_refl + theorem pSurreal.equiv_symm + theorem pSurreal.equiv_trans + def pSurreal.inv' + def pSurreal.inv_val + theorem pSurreal.le_congr + def pSurreal.le_lt + theorem pSurreal.le_of_lt + theorem pSurreal.le_refl + theorem pSurreal.le_trans + theorem pSurreal.le_trans_aux + theorem pSurreal.lt_asymm + theorem pSurreal.lt_congr + theorem pSurreal.lt_iff_le_not_le + theorem pSurreal.lt_irrefl + theorem pSurreal.lt_mk_of_le + theorem pSurreal.lt_of_le_mk + theorem pSurreal.lt_of_mk_le + theorem pSurreal.mk_le_mk + theorem pSurreal.mk_lt_mk + theorem pSurreal.mk_lt_of_le + def pSurreal.mul + theorem pSurreal.ne_of_lt + def pSurreal.neg + theorem pSurreal.not_le + theorem pSurreal.not_le_lt + theorem pSurreal.not_lt + def pSurreal.ok + theorem pSurreal.ok_rec + def pSurreal.omega + inductive pSurreal.{u} + def surreal.equiv + def surreal.le + def surreal.lift + def surreal.lift₂ + def surreal.lt + def surreal.mk + theorem surreal.not_le + def surreal + inductive {u} 2019-05-17 16:13:20 0b35022 refactor: change variables order in some composition lemmas (#1035) ESTIMATED CHANGES Modified src/analysis/complex/exponential.lean Modified src/analysis/complex/polynomial.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/deriv.lean + theorem has_fderiv_at.comp_has_fderiv_within_at - theorem has_fderiv_within_at.comp_has_fderiv_at Modified src/category_theory/concrete_category.lean Modified src/measure_theory/borel_space.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/integration.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean +/- theorem measure_theory.measure.map_map Modified src/topology/algebra/continuous_functions.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/monoid.lean Modified src/topology/algebra/ring.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean Modified src/topology/basic.lean +/- theorem continuous.comp Modified src/topology/bounded_continuous_function.lean Modified src/topology/compact_open.lean +/- def continuous_map.induced Modified src/topology/constructions.lean Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/maps.lean +/- theorem embedding_compose Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/gromov_hausdorff.lean Modified src/topology/metric_space/isometry.lean +/- theorem isometry.comp Modified src/topology/uniform_space/completion.lean +/- theorem uniform_space.completion.map_comp 2019-05-17 14:46:24 f633c94 feat(tactic/basic): add tactic.rewrite, and sort list (#1039) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-05-17 13:20:21 a6c1f37 fix(data/complex/exponential): make complex.exp irreducible (#1040) See discussion at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/-T50000.20challenge Using `ring` (and other tactics) on terms involving `exp` can lead to some unpleasant and unnecessary unfolding. ESTIMATED CHANGES Modified src/data/complex/exponential.lean 2019-05-17 06:56:38 96ea9b9 chore(opposites): merge two definitions of `opposite` (#1036) * chore(opposites): merge two definitions of `opposite` * merge `opposite.opposite` from `algebra/opposites` with `category_theory.opposite` from `category_theory/opposites`, and put it into `data/opposite` * main reasons: DRY, avoid confusion if both namespaces are open * see https://github.com/leanprover-community/mathlib/pull/538#issuecomment-459488227 * Authors merged from `git blame` output on both original files; I assume my contribution to be trivial * Update opposite.lean ESTIMATED CHANGES Modified src/algebra/opposites.lean - def opposite.op - theorem opposite.op_inj - theorem opposite.op_unop - def opposite.unop - theorem opposite.unop_inj - theorem opposite.unop_op - def opposite Modified src/category_theory/adjunction.lean Modified src/category_theory/const.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/instances/Top/open_nhds.lean Modified src/category_theory/instances/Top/opens.lean Modified src/category_theory/instances/Top/presheaf.lean Modified src/category_theory/instances/Top/presheaf_of_functions.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/limits.lean Modified src/category_theory/limits/opposites.lean Modified src/category_theory/opposites.lean - def category_theory.op - def category_theory.op_induction - theorem category_theory.op_inj - theorem category_theory.op_unop - def category_theory.opposite - def category_theory.unop - theorem category_theory.unop_inj - theorem category_theory.unop_op Modified src/category_theory/yoneda.lean Added src/data/opposite.lean + def opposite.op + def opposite.op_induction + theorem opposite.op_inj + theorem opposite.op_unop + def opposite.opposite + def opposite.unop + theorem opposite.unop_inj + theorem opposite.unop_op 2019-05-17 00:16:39 def48b0 feat(data/nat/basic): make decreasing induction eliminate to Sort (#1032) * add interface for decreasing_induction to Sort * make decreasing_induction a def * add simp tags and explicit type ESTIMATED CHANGES Modified src/data/nat/basic.lean + def nat.decreasing_induction - theorem nat.decreasing_induction + theorem nat.decreasing_induction_self + theorem nat.decreasing_induction_succ' + theorem nat.decreasing_induction_succ + theorem nat.decreasing_induction_succ_left + theorem nat.decreasing_induction_trans + theorem nat.le_rec_on_succ_left 2019-05-16 12:58:27 ad0f42d fix(data/nat/enat): Fix typo in lemma name (#1037) ESTIMATED CHANGES Modified src/data/nat/enat.lean - theorem enat.coe_ne_bot + theorem enat.coe_ne_top 2019-05-16 07:24:12 c75c096 chore(*): reduce imports (#1033) * chore(*): reduce imports * restoring import in later file * fix import ESTIMATED CHANGES Modified src/data/holor.lean Modified src/order/filter/basic.lean +/- theorem filter.hyperfilter_le_cofinite +/- theorem filter.is_ultrafilter_hyperfilter +/- theorem filter.tendsto_at_top_at_bot Modified src/order/filter/filter_product.lean Modified src/order/filter/partial.lean Modified src/topology/algebra/monoid.lean 2019-05-15 17:08:22 b5aae18 feat(category_theory): monos and epis in Type and Top (#1030) * feat(category_theory): monos and epis in Type and Top * imports * add file header * use notation for adjunction ESTIMATED CHANGES Added src/category_theory/epi_mono.lean + theorem category_theory.faithful_reflects_epi + theorem category_theory.faithful_reflects_mono + theorem category_theory.left_adjoint_preserves_epi + theorem category_theory.right_adjoint_preserves_mono Modified src/category_theory/instances/Top/default.lean Added src/category_theory/instances/Top/epi_mono.lean + theorem category_theory.instances.Top.epi_iff_surjective + theorem category_theory.instances.Top.mono_iff_injective Modified src/category_theory/types.lean + theorem category_theory.epi_iff_surjective + def category_theory.hom_of_element + theorem category_theory.hom_of_element_eq_iff + theorem category_theory.mono_iff_injective 2019-05-15 13:26:27 136e67a refactor(topology): change continuous_at_within to continuous_within_at (#1034) ESTIMATED CHANGES Modified src/analysis/normed_space/deriv.lean - theorem differentiable_within_at.continuous_at_within + theorem differentiable_within_at.continuous_within_at - theorem has_fderiv_within_at.continuous_at_within + theorem has_fderiv_within_at.continuous_within_at Modified src/topology/basic.lean - def continuous_at_within +/- def continuous_on + def continuous_within_at Modified src/topology/constructions.lean - theorem continuous_at_within.prod + theorem continuous_within_at.prod Modified src/topology/order.lean - theorem continuous_at.continuous_at_within + theorem continuous_at.continuous_within_at - theorem continuous_at_within.mono - theorem continuous_at_within.tendsto_nhds_within_image - theorem continuous_at_within_iff_continuous_at_restrict - theorem continuous_at_within_iff_ptendsto_res - theorem continuous_at_within_univ + theorem continuous_within_at.mono + theorem continuous_within_at.tendsto_nhds_within_image + theorem continuous_within_at_iff_continuous_at_restrict + theorem continuous_within_at_iff_ptendsto_res + theorem continuous_within_at_univ +/- theorem nhds_within_le_comap 2019-05-15 09:44:25 3022caf feat(tactic/terminal_goal): determine if other goals depend on the current one (#984) * feat(tactics): add "terminal_goal" tactic and relatives * fix(test/tactics): renaming test functions to avoid a name collision * fix(tactic): moving terminal_goal to tactic/basic.lean * fix(test/tactics): open tactics * touching a file, to prompt travis to try again * terminal_goal * fix * merge ESTIMATED CHANGES Modified src/tactic/core.lean Added test/terminal_goal.lean + structure C + def f + structure terminal_goal_struct' + structure terminal_goal_struct + def test_subsingleton_goal_1 + def test_subsingleton_goal_2 + def test_terminal_goal_1 + theorem test_terminal_goal_2 + def test_terminal_goal_3 + def test_terminal_goal_4 2019-05-14 20:21:21 7b579b7 feat(category_theory): adjoint equivalences and limits under equivalences (#986) * feat(category_theory): adjoint equivalences and limits * Define equivalences to be adjoint equivalences. * Show that one triangle law implies the other for equivalences * Prove that having a limit of shape `J` is preserved under an equivalence `J ≌ J'`. * Construct an adjoint equivalence from a (non-adjoint) equivalence * Put `nat_iso.app` in the `iso` namespace, so that we can write `α.app` for `α : F ≅ G`. * Add some basic lemmas about equivalences, isomorphisms. * Move some lemmas from `nat_trans` to `functor_category` and state them using `F ⟶ G` instead of `nat_trans F G` (maybe these files should just be merged?) * Some small tweaks, improvements * opposite of discrete is discrete This also shows that C^op has coproducts if C has products and vice versa Also fix rebase errors * fix error (I don't know what caused this to break) * Use tidy a bit more * construct an adjunction from an equivalence add notation `⊣` for an adjunction. make some arguments of adjunction constructors implicit * use adjunction notation * formatting * do adjointify_η as a natural iso directly, to avoid checking naturality * tersifying * fix errors, a bit of cleanup * fix elements.lean * fix error, address comments ESTIMATED CHANGES Modified src/category_theory/adjunction.lean +/- def category_theory.adjunction.adjunction_of_equiv_left +/- def category_theory.adjunction.adjunction_of_equiv_right +/- def category_theory.adjunction.comp + def category_theory.adjunction.equivalence.to_adjunction +/- def category_theory.adjunction.id +/- def category_theory.adjunction.mk_of_hom_equiv +/- def category_theory.adjunction.mk_of_unit_counit Modified src/category_theory/category.lean +/- theorem category_theory.category.assoc_symm Modified src/category_theory/const.lean Modified src/category_theory/currying.lean Modified src/category_theory/discrete_category.lean + theorem category_theory.discrete.id_def + def category_theory.nat_iso.of_isos + def category_theory.nat_trans.of_homs Modified src/category_theory/elements.lean Modified src/category_theory/equivalence.lean + def category_theory.equivalence.adjointify_η + theorem category_theory.equivalence.adjointify_η_ε + def category_theory.equivalence.counit + theorem category_theory.equivalence.counit_def + theorem category_theory.equivalence.counit_functor + def category_theory.equivalence.counit_inv + theorem category_theory.equivalence.counit_inv_def + theorem category_theory.equivalence.counit_inv_functor_comp + def category_theory.equivalence.fun_inv_id_assoc + theorem category_theory.equivalence.fun_inv_id_assoc_hom_app + theorem category_theory.equivalence.fun_inv_id_assoc_inv_app + theorem category_theory.equivalence.functor_unit + theorem category_theory.equivalence.functor_unit_comp + def category_theory.equivalence.inv_fun_id_assoc + theorem category_theory.equivalence.inv_fun_id_assoc_hom_app + theorem category_theory.equivalence.inv_fun_id_assoc_inv_app + theorem category_theory.equivalence.inverse_counit + theorem category_theory.equivalence.inverse_counit_inv_comp +/- def category_theory.equivalence.refl + def category_theory.equivalence.unit + theorem category_theory.equivalence.unit_def + def category_theory.equivalence.unit_inv + theorem category_theory.equivalence.unit_inv_def + theorem category_theory.equivalence.unit_inverse + theorem category_theory.equivalence.unit_inverse_comp +/- def category_theory.functor.fun_inv_id +/- def category_theory.functor.inv_fun_id Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean Modified src/category_theory/functor_category.lean - theorem category_theory.functor.category.comp_app - theorem category_theory.functor.category.id_app - theorem category_theory.functor.category.nat_trans.app_naturality - theorem category_theory.functor.category.nat_trans.naturality_app + theorem category_theory.nat_trans.app_naturality + theorem category_theory.nat_trans.comp_app + theorem category_theory.nat_trans.congr_app + theorem category_theory.nat_trans.exchange + def category_theory.nat_trans.hcomp + theorem category_theory.nat_trans.hcomp_app + theorem category_theory.nat_trans.id_app + theorem category_theory.nat_trans.naturality_app + theorem category_theory.nat_trans.vcomp_eq_comp Modified src/category_theory/instances/CommRing/adjunctions.lean Modified src/category_theory/instances/Top/adjunctions.lean +/- def category_theory.instances.Top.adj₁ +/- def category_theory.instances.Top.adj₂ Modified src/category_theory/isomorphism.lean + theorem category_theory.is_iso.inv_eq_inv + theorem category_theory.iso.comp_hom_eq_id + theorem category_theory.iso.hom_comp_eq_id + theorem category_theory.iso.hom_eq_inv + theorem category_theory.iso.inv_eq_inv Modified src/category_theory/limits/cones.lean + theorem category_theory.limits.cocones.ext_hom_hom + def category_theory.limits.cocones.precompose_comp + def category_theory.limits.cocones.precompose_equivalence + def category_theory.limits.cocones.precompose_id + theorem category_theory.limits.cones.ext_hom_hom + def category_theory.limits.cones.postcompose_comp + def category_theory.limits.cones.postcompose_equivalence + def category_theory.limits.cones.postcompose_id Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.pre_map' +/- theorem category_theory.limits.colimit.pre_map +/- theorem category_theory.limits.colimit.pre_post + def category_theory.limits.has_colimit_of_equivalence_comp + def category_theory.limits.has_colimit_of_iso + def category_theory.limits.has_colimits_of_shape_of_equivalence + def category_theory.limits.has_limit_of_equivalence_comp + def category_theory.limits.has_limit_of_iso + def category_theory.limits.has_limits_of_shape_of_equivalence +/- theorem category_theory.limits.limit.map_pre' +/- theorem category_theory.limits.limit.map_pre +/- theorem category_theory.limits.limit.pre_post Modified src/category_theory/limits/opposites.lean Modified src/category_theory/limits/shapes/products.lean Modified src/category_theory/natural_isomorphism.lean + def category_theory.iso.app - def category_theory.nat_iso.app +/- theorem category_theory.nat_iso.app_hom +/- theorem category_theory.nat_iso.app_inv - theorem category_theory.nat_iso.comp_app + def category_theory.nat_iso.hcomp + def category_theory.nat_iso.is_iso_of_is_iso_app + theorem category_theory.nat_iso.trans_app Modified src/category_theory/natural_transformation.lean - theorem category_theory.nat_trans.congr_app - theorem category_theory.nat_trans.exchange +/- theorem category_theory.nat_trans.ext - def category_theory.nat_trans.hcomp - theorem category_theory.nat_trans.hcomp_app + theorem category_theory.nat_trans.id_app' - theorem category_theory.nat_trans.id_app - theorem category_theory.nat_trans.vcomp_assoc Modified src/category_theory/products/associator.lean +/- def category_theory.prod.associativity Modified src/category_theory/products/default.lean Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean 2019-05-14 18:15:35 ae8f197 feat(data/nat/basic): decreasing induction (#1031) * feat(data/nat/basic): decreasing induction * feat(data/nat/basic): better proof of decreasing induction ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.decreasing_induction +/- theorem nat.lt_iff_add_one_le +/- theorem nat.zero_max 2019-05-14 14:46:29 e7b64c5 feat(data/equiv/functor): map_equiv (#1026) * feat(data/equiv/functor): map_equiv * golf proofs ESTIMATED CHANGES Added src/data/equiv/functor.lean + def functor.map_equiv 2019-05-14 15:06:32+02:00 02857d5 fix(docs/tactics): fix layout, remove noise ESTIMATED CHANGES Modified docs/tactics.md 2019-05-14 12:43:19 22790e0 feat(tactic): new tactics to normalize casts inside expressions (#988) * new tactics for normalizing casts * update using the norm_cast tactics * minor proof update * minor changes * moved a norm_cast lemma * minor changes * fix(doc/tactics): make headers uniform * nicer proof using discharger * fixed numerals handling by adding simp_cast lemmas * add documentation * fixed unnecessary normalizations in assumption_mod_cast * minor proof update * minor coding style update * documentation update * rename flip_equation to expr.flip_eq * update proofs to remove boiler plate code about casts * revert to old proof * fixed imports and moved attributes * add test file * new attribute system - the attribute norm_cast is split into norm_cast and norm_cast_rev - update of the equation flipping mechanism - update of the numerals handling * syntax fix * change attributes names * test update * small update * add elim_cast attribute * add examples for attributes * new examples ESTIMATED CHANGES Modified docs/tactics.md Modified src/algebra/char_zero.lean +/- theorem nat.cast_inj Modified src/algebra/group_power.lean +/- theorem int.cast_pow +/- theorem int.coe_nat_pow +/- theorem nat.cast_pow Modified src/data/complex/basic.lean +/- theorem complex.abs_cast_nat +/- theorem complex.int_cast_im +/- theorem complex.int_cast_re +/- theorem complex.nat_cast_im +/- theorem complex.nat_cast_re +/- theorem complex.of_real_add +/- theorem complex.of_real_bit0 +/- theorem complex.of_real_bit1 +/- theorem complex.of_real_div +/- theorem complex.of_real_fpow +/- theorem complex.of_real_im +/- theorem complex.of_real_inj +/- theorem complex.of_real_int_cast +/- theorem complex.of_real_inv +/- theorem complex.of_real_mul +/- theorem complex.of_real_nat_cast +/- theorem complex.of_real_neg +/- theorem complex.of_real_one +/- theorem complex.of_real_pow +/- theorem complex.of_real_rat_cast +/- theorem complex.of_real_re +/- theorem complex.of_real_sub +/- theorem complex.of_real_zero +/- theorem complex.rat_cast_im +/- theorem complex.rat_cast_re Modified src/data/int/basic.lean +/- theorem int.cast_abs +/- theorem int.cast_add +/- theorem int.cast_bit0 +/- theorem int.cast_bit1 +/- theorem int.cast_coe_nat +/- theorem int.cast_id +/- theorem int.cast_inj +/- theorem int.cast_le +/- theorem int.cast_lt +/- theorem int.cast_max +/- theorem int.cast_min +/- theorem int.cast_mul +/- theorem int.cast_neg +/- theorem int.cast_neg_of_nat +/- theorem int.cast_neg_succ_of_nat +/- theorem int.cast_one +/- theorem int.cast_sub +/- theorem int.cast_sub_nat_nat +/- theorem int.cast_zero +/- theorem int.coe_nat_abs + theorem int.coe_nat_bit0 + theorem int.coe_nat_bit1 +/- theorem int.coe_nat_div +/- theorem int.coe_nat_dvd +/- theorem int.coe_nat_inj' +/- theorem int.coe_nat_le +/- theorem int.coe_nat_lt Modified src/data/nat/cast.lean +/- theorem nat.abs_cast +/- theorem nat.cast_add +/- theorem nat.cast_bit0 +/- theorem nat.cast_bit1 +/- theorem nat.cast_id +/- theorem nat.cast_le +/- theorem nat.cast_lt +/- theorem nat.cast_max +/- theorem nat.cast_min +/- theorem nat.cast_mul +/- theorem nat.cast_one +/- theorem nat.cast_pred +/- theorem nat.cast_sub +/- theorem nat.cast_succ +/- theorem nat.cast_zero Modified src/data/nat/enat.lean +/- theorem enat.coe_add +/- theorem enat.coe_get +/- theorem enat.coe_le_coe +/- theorem enat.coe_lt_coe +/- theorem enat.coe_one +/- theorem enat.coe_zero Modified src/data/padics/padic_integers.lean +/- theorem padic_int.cast_pow +/- theorem padic_int.coe_add +/- theorem padic_int.coe_coe +/- theorem padic_int.coe_mul +/- theorem padic_int.coe_neg +/- theorem padic_int.coe_one +/- theorem padic_int.coe_sub +/- theorem padic_int.coe_zero Modified src/data/padics/padic_norm.lean Modified src/data/padics/padic_numbers.lean + theorem padic.coe_add + theorem padic.coe_div + theorem padic.coe_inj + theorem padic.coe_mul + theorem padic.coe_neg + theorem padic.coe_one + theorem padic.coe_sub + theorem padic.coe_zero +/- theorem padic_norm_e.eq_padic_norm Modified src/data/rat.lean +/- theorem rat.cast_abs +/- theorem rat.cast_add +/- theorem rat.cast_add_of_ne_zero +/- theorem rat.cast_bit0 +/- theorem rat.cast_bit1 +/- theorem rat.cast_coe_int +/- theorem rat.cast_coe_nat +/- theorem rat.cast_div +/- theorem rat.cast_div_of_ne_zero +/- theorem rat.cast_id +/- theorem rat.cast_inj +/- theorem rat.cast_inv +/- theorem rat.cast_inv_of_ne_zero +/- theorem rat.cast_le +/- theorem rat.cast_lt +/- theorem rat.cast_max +/- theorem rat.cast_min +/- theorem rat.cast_mk +/- theorem rat.cast_mk_of_ne_zero +/- theorem rat.cast_mul +/- theorem rat.cast_mul_of_ne_zero +/- theorem rat.cast_neg +/- theorem rat.cast_one +/- theorem rat.cast_pow +/- theorem rat.cast_sub +/- theorem rat.cast_sub_of_ne_zero +/- theorem rat.cast_zero +/- theorem rat.coe_int_denom +/- theorem rat.coe_int_num +/- theorem rat.coe_nat_denom +/- theorem rat.coe_nat_num Modified src/ring_theory/multiplicity.lean + theorem multiplicity.int.coe_nat_multiplicity + theorem nat.find_le Added src/tactic/norm_cast.lean + theorem ge_from_le + theorem gt_from_lt + theorem ite_cast + theorem ne_from_not_eq Added test/norm_cast.lean 2019-05-14 11:13:33 fe19bdb fix(data/multiset): remove duplicate setoid instance (#1027) * fix(data/multiset): remove duplicate setoid instance * s/ : Type uu// ESTIMATED CHANGES Modified src/data/list/perm.lean +/- theorem list.perm.eqv Modified src/data/multiset.lean + def multiset.subsingleton_equiv 2019-05-14 10:24:51 ade99c8 feat(analysis/normed_space/deriv): more material on derivatives (#966) * feat(analysis/normed_space/deriv): more material on derivatives * feat(analysis/normed_space/deriv): minor improvements * feat(analysis/normed_space/deriv) rename fderiv_at_within to fderiv_within_at * feat(analysis/normed_space/deriv): more systematic renaming * feat(analysis/normed_space/deriv): fix style * modify travis.yml as advised by Simon Hudon * fix travis.yml, second try * feat(analysis/normed_space/deriv): add two missing lemmas ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.prod_rightl + theorem asymptotics.is_O.prod_rightr + theorem asymptotics.is_O_one_of_tendsto + theorem asymptotics.is_O_prod_left + theorem asymptotics.is_o.prod_rightl + theorem asymptotics.is_o.prod_rightr + theorem asymptotics.is_o_prod_left Modified src/analysis/normed_space/basic.lean +/- theorem tendsto_zero_iff_norm_tendsto_zero Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem bounded_linear_map.is_bounded_linear_map_comp_left + theorem bounded_linear_map.is_bounded_linear_map_comp_right + def is_bounded_bilinear_map.deriv + theorem is_bounded_bilinear_map.is_bounded_linear_map_deriv + theorem is_bounded_bilinear_map.map_sub_left + theorem is_bounded_bilinear_map.map_sub_right + structure is_bounded_bilinear_map + theorem is_bounded_bilinear_map_comp + theorem is_bounded_bilinear_map_mul + theorem is_bounded_bilinear_map_smul + theorem is_bounded_linear_map_prod_iso Modified src/analysis/normed_space/deriv.lean + theorem differentiable.add + theorem differentiable.congr' + theorem differentiable.congr + theorem differentiable.continuous + theorem differentiable.differentiable_on + theorem differentiable.fderiv_within + theorem differentiable.mul + theorem differentiable.neg + theorem differentiable.prod + theorem differentiable.smul' + theorem differentiable.smul + theorem differentiable.sub + def differentiable + theorem differentiable_at.add + theorem differentiable_at.comp + theorem differentiable_at.congr + theorem differentiable_at.continuous_at + theorem differentiable_at.differentiable_within_at + theorem differentiable_at.fderiv_congr' + theorem differentiable_at.fderiv_congr + theorem differentiable_at.fderiv_prod + theorem differentiable_at.fderiv_within_prod + theorem differentiable_at.has_fderiv_at + theorem differentiable_at.mul + theorem differentiable_at.neg + theorem differentiable_at.prod + theorem differentiable_at.smul' + theorem differentiable_at.smul + theorem differentiable_at.sub + def differentiable_at + theorem differentiable_at_const + theorem differentiable_at_id + theorem differentiable_const + theorem differentiable_id + theorem differentiable_on.add + theorem differentiable_on.comp + theorem differentiable_on.congr_mono + theorem differentiable_on.continuous_on + theorem differentiable_on.mono + theorem differentiable_on.mul + theorem differentiable_on.neg + theorem differentiable_on.prod + theorem differentiable_on.smul' + theorem differentiable_on.smul + theorem differentiable_on.sub + def differentiable_on + theorem differentiable_on_const + theorem differentiable_on_id + theorem differentiable_on_of_locally_differentiable_on + theorem differentiable_on_univ + theorem differentiable_within_at.add + theorem differentiable_within_at.comp + theorem differentiable_within_at.congr_mono + theorem differentiable_within_at.continuous_at_within + theorem differentiable_within_at.differentiable_at' + theorem differentiable_within_at.differentiable_at + theorem differentiable_within_at.fderiv_within_congr_mono + theorem differentiable_within_at.has_fderiv_within_at + theorem differentiable_within_at.mono + theorem differentiable_within_at.mul + theorem differentiable_within_at.neg + theorem differentiable_within_at.prod + theorem differentiable_within_at.smul' + theorem differentiable_within_at.smul + theorem differentiable_within_at.sub + def differentiable_within_at + theorem differentiable_within_at_const + theorem differentiable_within_at_id + theorem differentiable_within_at_inter + theorem differentiable_within_univ_at + theorem fderiv.comp + def fderiv + theorem fderiv_add - theorem fderiv_at_filter_unique - theorem fderiv_at_unique - theorem fderiv_at_within_open_unique + theorem fderiv_const + theorem fderiv_id + theorem fderiv_mul + theorem fderiv_neg + theorem fderiv_smul' + theorem fderiv_smul + theorem fderiv_sub + theorem fderiv_within.comp + def fderiv_within + theorem fderiv_within_add + theorem fderiv_within_const + theorem fderiv_within_id + theorem fderiv_within_mul + theorem fderiv_within_neg + theorem fderiv_within_smul' + theorem fderiv_within_smul + theorem fderiv_within_sub + theorem fderiv_within_univ + theorem has_fderiv_at.add + theorem has_fderiv_at.differentiable_at + theorem has_fderiv_at.fderiv + theorem has_fderiv_at.has_fderiv_at_filter + theorem has_fderiv_at.has_fderiv_within_at + theorem has_fderiv_at.mul + theorem has_fderiv_at.neg + theorem has_fderiv_at.prod + theorem has_fderiv_at.smul' + theorem has_fderiv_at.smul + theorem has_fderiv_at.sub +/- def has_fderiv_at - theorem has_fderiv_at_add + theorem has_fderiv_at_filter.add + theorem has_fderiv_at_filter.congr' +/- theorem has_fderiv_at_filter.mono + theorem has_fderiv_at_filter.neg + theorem has_fderiv_at_filter.prod + theorem has_fderiv_at_filter.smul + theorem has_fderiv_at_filter.sub +/- def has_fderiv_at_filter - theorem has_fderiv_at_filter_add - theorem has_fderiv_at_filter_neg - theorem has_fderiv_at_filter_of_has_fderiv_at - theorem has_fderiv_at_filter_smul - theorem has_fderiv_at_filter_sub +/- theorem has_fderiv_at_iff_tendsto - theorem has_fderiv_at_neg - theorem has_fderiv_at_smul - theorem has_fderiv_at_sub + theorem has_fderiv_at_unique - theorem has_fderiv_at_within.comp - theorem has_fderiv_at_within.congr - theorem has_fderiv_at_within.continuous_at_within - theorem has_fderiv_at_within.mono - def has_fderiv_at_within - theorem has_fderiv_at_within_add - theorem has_fderiv_at_within_congr - theorem has_fderiv_at_within_const - theorem has_fderiv_at_within_id - theorem has_fderiv_at_within_iff_tendsto - theorem has_fderiv_at_within_neg - theorem has_fderiv_at_within_of_has_fderiv_at - theorem has_fderiv_at_within_smul - theorem has_fderiv_at_within_sub + theorem has_fderiv_within_at.add + theorem has_fderiv_within_at.comp + theorem has_fderiv_within_at.comp_has_fderiv_at + theorem has_fderiv_within_at.congr + theorem has_fderiv_within_at.congr_mono + theorem has_fderiv_within_at.continuous_at_within + theorem has_fderiv_within_at.differentiable_within_at + theorem has_fderiv_within_at.fderiv_within + theorem has_fderiv_within_at.mono + theorem has_fderiv_within_at.mul + theorem has_fderiv_within_at.neg + theorem has_fderiv_within_at.prod + theorem has_fderiv_within_at.smul' + theorem has_fderiv_within_at.smul + theorem has_fderiv_within_at.sub + def has_fderiv_within_at + theorem has_fderiv_within_at_congr + theorem has_fderiv_within_at_const + theorem has_fderiv_within_at_id + theorem has_fderiv_within_at_iff_tendsto + theorem has_fderiv_within_univ_at + theorem is_bounded_bilinear_map.continuous + theorem is_bounded_bilinear_map.differentiable + theorem is_bounded_bilinear_map.differentiable_at + theorem is_bounded_bilinear_map.differentiable_on + theorem is_bounded_bilinear_map.differentiable_within_at + theorem is_bounded_bilinear_map.fderiv + theorem is_bounded_bilinear_map.fderiv_within + theorem is_bounded_bilinear_map.has_fderiv_at + theorem is_bounded_bilinear_map.has_fderiv_within_at + theorem is_bounded_linear_map.differentiable + theorem is_bounded_linear_map.differentiable_at + theorem is_bounded_linear_map.differentiable_on + theorem is_bounded_linear_map.differentiable_within_at + theorem is_bounded_linear_map.fderiv + theorem is_bounded_linear_map.fderiv_within + theorem is_bounded_linear_map.has_fderiv_at + theorem is_bounded_linear_map.has_fderiv_at_filter + theorem is_bounded_linear_map.has_fderiv_within_at + theorem is_open.unique_diff_on + theorem is_open.unique_diff_within_at + theorem tangent_cone_at.lim_zero + def tangent_cone_at + theorem tangent_cone_inter_open + theorem tangent_cone_mono + theorem tangent_cone_univ + theorem unique_diff_on.eq + def unique_diff_on + theorem unique_diff_on_inter + theorem unique_diff_within_at.eq + def unique_diff_within_at + theorem unique_diff_within_at_inter + theorem unique_diff_within_univ_at Modified src/analysis/normed_space/operator_norm.lean + def bounded_linear_map.prod + def bounded_linear_map.scalar_prod_space_iso Modified src/linear_algebra/basic.lean + theorem linear_map.is_linear_map_prod_iso + def linear_map.prod + def linear_map.scalar_prod_space_iso Modified src/topology/constructions.lean + theorem continuous_at.prod + theorem continuous_at_within.prod +/- theorem continuous_inclusion + theorem continuous_on.prod Modified src/topology/order.lean + theorem continuous.continuous_on + theorem continuous_at.continuous_at_within + theorem continuous_at_within.mono + def continuous_iff_continuous_on_univ + theorem continuous_on.comp + theorem continuous_on.congr_mono + theorem continuous_on.mono + theorem continuous_on.preimage_interior_subset_interior_preimage + theorem continuous_on.preimage_open_of_open + theorem continuous_on_const + theorem continuous_on_of_locally_continuous_on 2019-05-14 07:24:40 a72641b squeeze_simp (#1019) ESTIMATED CHANGES Modified src/algebra/group_power.lean Modified src/algebra/pi_instances.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean Modified src/data/fin.lean Modified src/data/semiquot.lean Modified src/data/set/intervals.lean 2019-05-14 05:35:17 cefb9d4 feat(category_theory/opposites): iso.op (#1021) ESTIMATED CHANGES Modified src/category_theory/opposites.lean + theorem category_theory.iso.op_hom + theorem category_theory.iso.op_inv 2019-05-14 01:23:18 6dc0682 feat(algebra/order_functions): generalize strict_mono.monotone (#1022) ESTIMATED CHANGES Modified src/algebra/order_functions.lean +/- theorem strict_mono.monotone 2019-05-13 23:54:13 07ba43e feat(topology/constructions): topology of sum types (#1016) ESTIMATED CHANGES Modified src/data/sigma/basic.lean + theorem injective_sigma_map + theorem injective_sigma_mk Modified src/topology/constructions.lean + theorem closed_embedding_sigma_mk + theorem continuous_sigma + theorem continuous_sigma_map + theorem continuous_sigma_mk + theorem embedding_sigma_map + theorem embedding_sigma_mk + theorem is_closed_map_sigma_mk + theorem is_closed_sigma_iff + theorem is_closed_sigma_mk + theorem is_open_map_sigma_mk + theorem is_open_range_sigma_mk + theorem is_open_sigma_iff Modified src/topology/maps.lean - theorem continuous_Prop - theorem is_open_singleton_true Modified src/topology/order.lean + theorem continuous_Prop + theorem is_closed_infi_iff + theorem is_open_infi_iff + theorem is_open_singleton_true 2019-05-13 22:28:23 f8385b1 feat(data/equiv/basic): equiv.nonempty_iff_nonempty (#1020) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.nonempty_iff_nonempty 2019-05-13 20:36:11 01b345c feat(tactics/interactive): choose uses exists_prop (#1014) * feat(tactics/interactive): choose uses exists_prop * fix build ESTIMATED CHANGES Modified src/tactic/interactive.lean Modified src/topology/bounded_continuous_function.lean Modified test/examples.lean 2019-05-13 20:00:57 c8a0bb6 feat(category_theory/products): missing simp lemmas (#1003) * feat(category_theory/products): missing simp lemmas * cleanup proofs * fix proof * squeeze_simp ESTIMATED CHANGES Modified src/category_theory/products/default.lean +/- def category_theory.evaluation + theorem category_theory.evaluation_map_app + theorem category_theory.evaluation_obj_map + theorem category_theory.evaluation_obj_obj +/- def category_theory.evaluation_uncurried + theorem category_theory.evaluation_uncurried_map + theorem category_theory.evaluation_uncurried_obj +/- theorem category_theory.functor.prod_map +/- theorem category_theory.functor.prod_obj + theorem category_theory.prod.fst_map + theorem category_theory.prod.fst_obj + theorem category_theory.prod.inl_map + theorem category_theory.prod.inl_obj + theorem category_theory.prod.inr_map + theorem category_theory.prod.inr_obj + theorem category_theory.prod.snd_map + theorem category_theory.prod.snd_obj + theorem category_theory.prod.swap_map + theorem category_theory.prod.swap_obj 2019-05-13 19:33:32 6c35df0 feat(category_theory/iso): missing lemmas (#1001) * feat(category_theory/iso): missing lemmas * formatting * formatting * oops * one more * sleep ESTIMATED CHANGES Modified src/algebraic_geometry/presheafed_space.lean Modified src/category_theory/category.lean +/- theorem category_theory.cancel_epi +/- theorem category_theory.cancel_mono Modified src/category_theory/isomorphism.lean + theorem category_theory.eq_of_inv_eq_inv + theorem category_theory.is_iso.inv_comp + theorem category_theory.is_iso.inv_id + theorem category_theory.is_iso.is_iso.inv_inv + theorem category_theory.is_iso.iso.inv_hom + theorem category_theory.is_iso.iso.inv_inv 2019-05-13 18:39:56+02:00 82f151f document the change in scripts (#1024) ESTIMATED CHANGES Modified docs/install/debian.md Modified docs/install/debian_details.md Modified docs/install/linux.md Modified docs/install/macos.md Modified docs/install/windows.md 2019-05-13 15:42:01 70cd00b feat(Top.presheaf_ℂ): presheaves of functions to topological commutative rings (#976) * feat(category_theory/colimits): missing simp lemmas * feat(category_theory): functor.map_nat_iso * define `functor.map_nat_iso`, and relate to whiskering * rename `functor.on_iso` to `functor.map_iso` * add some missing lemmas about whiskering * fix(category_theory): presheaves, unbundled and bundled, and pushforwards * restoring `(opens X)ᵒᵖ` * various changes from working on stalks * rename `nbhds` to `open_nhds` * fix introduced typo * typo * compactify a proof * rename `presheaf` to `presheaf_on_space` * fix(category_theory): turn `has_limits` classes into structures * naming instances to avoid collisions * breaking up instances.topological_spaces * fixing all the other pi-type typclasses * fix import * oops * fix import * missed one * typo * WIP * oops * the presheaf of continuous functions to ℂ * restoring eq_to_hom simp lemmas * removing unnecessary simp lemma * remove another superfluous lemma * removing the nat_trans and vcomp notations; use \hom and \gg * a simpler proposal * getting rid of vcomp * fix * splitting files * renaming * update notation * fix * cleanup * use iso_whisker_right instead of map_nat_iso * proofs magically got easier? * improve some proofs * moving instances * remove crap * tidy * minimise imports * chore(travis): disable the check for minimal imports * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: semorrison * writing `op_induction` tactic, and improving proofs * squeeze_simping * cleanup * rearranging * cleanup * cleaning up * cleaning up * move * Update src/category_theory/instances/Top/presheaf_of_functions.lean Co-Authored-By: Floris van Doorn * fixes in response to review ESTIMATED CHANGES Modified src/category_theory/instances/CommRing/basic.lean + def category_theory.instances.CommRing.of Modified src/category_theory/instances/Top/default.lean Modified src/category_theory/instances/Top/opens.lean + def topological_space.opens.to_Top Added src/category_theory/instances/Top/presheaf_of_functions.lean + def category_theory.instances.Top.CommRing_yoneda + theorem category_theory.instances.Top.continuous_functions.add + def category_theory.instances.Top.continuous_functions.map + theorem category_theory.instances.Top.continuous_functions.mul + theorem category_theory.instances.Top.continuous_functions.one + def category_theory.instances.Top.continuous_functions.pullback + def category_theory.instances.Top.continuous_functions + def category_theory.instances.Top.presheaf_to_Top + def category_theory.instances.Top.presheaf_to_TopCommRing Added src/category_theory/instances/TopCommRing/basic.lean + def category_theory.instances.TopCommRing.forget + def category_theory.instances.TopCommRing.forget_to_CommRing + def category_theory.instances.TopCommRing.forget_to_Top + def category_theory.instances.TopCommRing.forget_to_Type_via_CommRing + def category_theory.instances.TopCommRing.forget_to_Type_via_Top + def category_theory.instances.TopCommRing.of + structure category_theory.instances.TopCommRing Added src/category_theory/instances/TopCommRing/default.lean 2019-05-13 11:21:50-04:00 b9b5bb4 chore(Github): no need to wait for Appveyor anymopre ESTIMATED CHANGES Modified .mergify.yml 2019-05-13 11:12:35-04:00 e42d808 chore(scripts): migrate scripts to own repo (#1011) ESTIMATED CHANGES Modified .travis.yml Deleted appveyor.yml Deleted scripts/auth_github.py Deleted scripts/cache-olean.py Deleted scripts/delayed_interrupt.py Modified scripts/deploy_nightly.sh Deleted scripts/install_debian.sh Deleted scripts/leanpkg-example.toml Deleted scripts/post-checkout Deleted scripts/post-commit Deleted scripts/remote-install-update-mathlib.sh Deleted scripts/setup-dev-scripts.sh Deleted scripts/setup-lean-git-hooks.sh Deleted scripts/update-mathlib.py 2019-05-13 18:20:20+10:00 4864515 feat(category_theory): lemmas about cancellation (#1005) * feat(category_theory): lemmas about cancellation * rename hypotheses * Squeeze proofs ESTIMATED CHANGES Modified src/category_theory/category.lean + theorem category_theory.eq_of_comp_left_eq' + theorem category_theory.eq_of_comp_left_eq + theorem category_theory.eq_of_comp_right_eq' + theorem category_theory.eq_of_comp_right_eq + theorem category_theory.id_of_comp_left_id + theorem category_theory.id_of_comp_right_id 2019-05-12 14:51:35 1e0761e feat(topology/maps): closed embeddings (#1013) * feat(topology/maps): closed embeddings * fix "is_open_map" ESTIMATED CHANGES Modified src/topology/maps.lean + theorem closed_embedding.closed_iff_image_closed + theorem closed_embedding.closed_iff_preimage_closed + def closed_embedding + theorem closed_embedding_compose + theorem closed_embedding_id + theorem closed_embedding_of_continuous_injective_closed + theorem is_closed_map.of_inverse + def is_closed_map 2019-05-12 01:21:18 de5d038 feat(logic/function): comp₂ -- useful for binary operations (#993) * feat(logic/function): comp₂ -- useful for binary operations For example, when working with topological groups it does not suffice to look at `mul : G → G → G`; we need to require that `G × G → G` is continuous. This lemma helps with rewriting back and forth between the curried and the uncurried versions. * Fix: we are already in the function namespace, duh * Replace comp₂ with a generalisation of bicompr * fix error in bitraversable * partially open function namespace in bitraversable ESTIMATED CHANGES Modified src/category/bifunctor.lean - def bifunctor.bicompl - def bifunctor.bicompr Modified src/category/bitraversable/instances.lean +/- def bicompl.bitraverse +/- def bicompr.bitraverse Modified src/logic/function.lean + def function.bicompl + def function.bicompr + theorem function.uncurry_bicompr 2019-05-11 18:16:49-04:00 a154ded fix(docs/*): docs reorganization [skip ci] (#1012) ESTIMATED CHANGES Modified .github/PULL_REQUEST_TEMPLATE.md Modified README.md Renamed docs/code-review.md to docs/contribute/code-review.md Renamed docs/howto-contribute.md to docs/contribute/index.md Renamed docs/naming.md to docs/contribute/naming.md Renamed docs/style.md to docs/contribute/style.md Deleted docs/elan.md Added docs/install/debian.md Renamed docs/install_debian_details.md to docs/install/debian_details.md Added docs/install/linux.md Added docs/install/macos.md Renamed docs/install_debian.md to docs/install/project.md Added docs/install/windows.md 2019-05-11 14:35:23-04:00 8e71cee chore(build): remove script testing on PRs [skip ci] ESTIMATED CHANGES Modified .travis.yml 2019-05-11 13:26:30-04:00 e6d959d docs(algebra/ring): document compatibility hack [skip ci] ESTIMATED CHANGES Modified src/algebra/ring.lean 2019-05-11 12:46:31-04:00 c7d870e chore(compatibility): compatibility with Lean 3.5.0c (#1007) ESTIMATED CHANGES Modified src/algebra/ring.lean + def has_div_of_division_ring Modified src/order/filter/filter_product.lean +/- def filter.bigly_equal +/- theorem filter.filter_product.lt_def' +/- theorem filter.filter_product.lt_def +/- theorem filter.filter_product.max_def +/- theorem filter.filter_product.min_def +/- theorem filter.filter_product.of_abs +/- theorem filter.filter_product.of_div +/- theorem filter.filter_product.of_eq +/- theorem filter.filter_product.of_lt +/- theorem filter.filter_product.of_lt_of_lt +/- theorem filter.filter_product.of_max +/- theorem filter.filter_product.of_min +/- theorem filter.filter_product.of_ne +/- theorem filter.filter_product.of_rel +/- theorem filter.filter_product.of_rel_of_rel +/- theorem filter.filter_product.of_rel_of_rel₂ +/- theorem filter.filter_product.of_rel₂ +/- theorem filter.filter_product.of_seq_add +/- theorem filter.filter_product.of_seq_fun +/- theorem filter.filter_product.of_seq_fun₂ +/- theorem filter.filter_product.of_seq_mul 2019-05-11 15:00:03 60da4f4 feat(data/polynomial): degree_eq_one_of_irreducible_of_root (#1010) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_eq_one_of_irreducible_of_root 2019-05-11 13:14:21 8603e6b refactor(algebra/associated): rename nonzero_of_irreducible to ne_zero_of_irreducible (#1009) ESTIMATED CHANGES Modified src/algebra/associated.lean + theorem ne_zero_of_irreducible - theorem nonzero_of_irreducible Modified src/field_theory/splitting_field.lean Modified src/ring_theory/principal_ideal_domain.lean Modified src/ring_theory/unique_factorization_domain.lean 2019-05-11 00:09:41 6858c2f fix(category/fold): use correct `opposite` (#1008) ESTIMATED CHANGES Modified src/category/fold.lean +/- def monoid.foldr +/- def monoid.mfoldr Modified src/category_theory/opposites.lean - theorem category_theory.opposite.op_mul - theorem category_theory.opposite.op_one - theorem category_theory.opposite.unop_mul - theorem category_theory.opposite.unop_one 2019-05-10 02:32:26 91a7fc2 fix(tactic/basic): missing `conv` from tactic.basic (#1004) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-05-10 00:53:48 e66e1f3 feat(set_theory): add to cardinal, ordinal, cofinality (#963) * feat(set_theory): add to cardinal, ordinal, cofinality The main new fact is the infinite pigeonhole principle Also includes many basic additions * fix name change in other files * address all of Mario's comments * use classical tactic in order/basic I did not use it for well_founded.succ, because that resulted in an error in lt_succ * fix error ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/linear_algebra/dimension.lean Modified src/linear_algebra/finsupp.lean Modified src/measure_theory/measurable_space.lean Modified src/order/basic.lean + theorem not_bounded_iff + theorem not_unbounded_iff +/- theorem well_founded.has_min +/- theorem well_founded.min_mem +/- theorem well_founded.not_lt_min Modified src/order/order_iso.lean + theorem order_iso.ord'' + theorem order_iso.to_equiv_to_fun Modified src/set_theory/cardinal.lean + theorem cardinal.countable_iff + theorem cardinal.finset_card_lt_omega + theorem cardinal.le_mk_iff_exists_subset + theorem cardinal.le_powerlt + theorem cardinal.mk_Union_le + theorem cardinal.mk_bUnion_le - theorem cardinal.mk_eq_of_injective + theorem cardinal.mk_image_eq + theorem cardinal.mk_image_eq_lift + theorem cardinal.mk_image_eq_of_inj_on + theorem cardinal.mk_image_eq_of_inj_on_lift + theorem cardinal.mk_preimage_of_injective + theorem cardinal.mk_preimage_of_injective_lift + theorem cardinal.mk_preimage_of_injective_of_subset_range + theorem cardinal.mk_preimage_of_injective_of_subset_range_lift + theorem cardinal.mk_preimage_of_subset_range + theorem cardinal.mk_preimage_of_subset_range_lift + theorem cardinal.mk_range_eq +/- theorem cardinal.mk_range_le + theorem cardinal.mk_sUnion_le + theorem cardinal.mk_sep + theorem cardinal.mk_set_le + theorem cardinal.mk_subset_ge_of_subset_image + theorem cardinal.mk_subset_ge_of_subset_image_lift + theorem cardinal.mk_subtype_mono + theorem cardinal.mk_subtype_of_equiv + theorem cardinal.out_embedding + theorem cardinal.powerlt_aux + theorem cardinal.powerlt_le + theorem cardinal.powerlt_le_powerlt_left + theorem cardinal.powerlt_max + theorem cardinal.powerlt_succ + theorem cardinal.powerlt_zero + theorem cardinal.succ_ne_zero + theorem cardinal.sup_eq_zero + theorem cardinal.two_le_iff' + theorem cardinal.two_le_iff + theorem cardinal.zero_power_le + theorem cardinal.zero_powerlt Modified src/set_theory/cofinality.lean + theorem cardinal.sup_lt_ord_of_is_regular +/- def order.cof + theorem order.cof_le + theorem order.le_cof + theorem ordinal.cof_type + theorem ordinal.infinite_pigeonhole + theorem ordinal.infinite_pigeonhole_card + theorem ordinal.infinite_pigeonhole_set + theorem ordinal.sup_lt + theorem ordinal.sup_lt_ord + theorem ordinal.unbounded_of_unbounded_Union + theorem ordinal.unbounded_of_unbounded_sUnion + def strict_order.cof Modified src/set_theory/ordinal.lean + theorem cardinal.add_one_eq + theorem cardinal.card_typein_lt + theorem cardinal.card_typein_out_lt + theorem cardinal.lt_ord_succ_card + theorem cardinal.mk_bounded_set_le + theorem cardinal.mk_bounded_set_le_of_omega_le + theorem cardinal.mk_bounded_subset_le + theorem cardinal.mk_ord_out + theorem cardinal.mul_eq_max_of_omega_le_left + theorem cardinal.mul_le_max_of_omega_le_left + theorem cardinal.ord_injective + theorem cardinal.power_nat_le + theorem cardinal.powerlt_omega + theorem cardinal.powerlt_omega_le + theorem ordinal.card_typein + theorem ordinal.enum_le_enum + theorem ordinal.has_succ_of_is_limit + def ordinal.initial_seg_out + theorem ordinal.injective_typein + theorem ordinal.mk_initial_seg + theorem ordinal.order_iso_enum' + theorem ordinal.order_iso_enum + def ordinal.order_iso_out + def ordinal.principal_seg_out + theorem ordinal.sup_succ + theorem ordinal.type_out + theorem ordinal.type_subrel_lt + def ordinal.typein_iso + theorem ordinal.typein_le_typein + theorem ordinal.unbounded_range_of_sup_ge + def principal_seg.lt_equiv + theorem principal_seg.top_lt_top 2019-05-09 09:29:20 5329bf3 feat(algebra/pointwise): More lemmas on pointwise multiplication (#997) * feat(algebra/pointwise): More lemmas on pointwise multiplication * Fix build, hopefully * Fix build * to_additive + fix formatting ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.mem_smul_set + theorem set.mul_subset_mul + def set.pointwise_add_fintype + def set.pointwise_mul_action + def set.pointwise_mul_fintype + def set.pointwise_mul_image_is_semiring_hom + theorem set.smul_set_eq_image 2019-05-09 05:36:49 df5edde refactor(strict_mono): make definition + move to order_functions (#998) * refactor(strict_mono): make definition + move to order_functions * Weaken assumptions from preorder to has_lt ESTIMATED CHANGES Modified src/algebra/order.lean - theorem injective_of_strict_mono - theorem le_iff_le_of_strict_mono - theorem lt_iff_lt_of_strict_mono - theorem ordering.compares_of_strict_mono Modified src/algebra/order_functions.lean + theorem strict_mono.compares + theorem strict_mono.injective + theorem strict_mono.le_iff_le + theorem strict_mono.lt_iff_lt + theorem strict_mono.monotone + def strict_mono + theorem strict_mono_of_monotone_of_injective Modified src/ring_theory/noetherian.lean Modified src/set_theory/ordinal.lean 2019-05-08 22:40:27 8f5d240 refactor(order/basic): make type class args explicit in {*}order.lift (#995) * refactor(order/basic): make type class arguments explicit for {*}order.lift * Let's try again * And another try * Silly typo * Fix error * Oops, missed this one ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/data/fin.lean Modified src/data/real/nnreal.lean Modified src/linear_algebra/basic.lean Modified src/order/basic.lean +/- def decidable_linear_order.lift +/- def linear_order.lift +/- def partial_order.lift +/- def preorder.lift Modified src/order/zorn.lean 2019-05-08 20:20:16 7f9717f feat(*): preorder instances for with_bot and with_zero (#996) * feat(*): preorder instances for with_bot and with_zero * Let's try again ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/order/bounded_lattice.lean 2019-05-08 11:42:00 c9cfafc chore(tactics): splitting tactics and tests into more files (#985) * chore(tactics): splitting tactics and tests into more files, cleaning up dependencies * tweaking comment * introducing `tactic.basic` and fixing imports * fixes * fix copyright * fix some things ESTIMATED CHANGES Modified src/algebra/group.lean Modified src/category/bitraversable/instances.lean Modified src/category/monad/basic.lean Modified src/category/monad/writer.lean Modified src/category_theory/category.lean Modified src/category_theory/functor.lean Modified src/category_theory/natural_isomorphism.lean Modified src/data/list/defs.lean +/- def list.func.add +/- def list.func.neg +/- def list.func.pointwise +/- def list.func.sub Modified src/data/option/basic.lean Modified src/data/padics/hensel.lean Modified src/data/rel.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/set/basic.lean Modified src/group_theory/eckmann_hilton.lean Modified src/logic/basic.lean Modified src/logic/relation.lean Modified src/order/lexicographic.lean Modified src/tactic/algebra.lean Modified src/tactic/auto_cases.lean Modified src/tactic/basic.lean Modified src/tactic/cache.lean Modified src/tactic/chain.lean Modified src/tactic/converter/interactive.lean Added src/tactic/core.lean Modified src/tactic/default.lean Modified src/tactic/elide.lean Modified src/tactic/explode.lean Modified src/tactic/ext.lean Modified src/tactic/find.lean Modified src/tactic/generalize_proofs.lean Modified src/tactic/interactive.lean Modified src/tactic/library_search.lean Modified src/tactic/local_cache.lean Modified src/tactic/monotonicity/basic.lean Modified src/tactic/monotonicity/default.lean Modified src/tactic/monotonicity/interactive.lean Modified src/tactic/monotonicity/lemmas.lean Modified src/tactic/pi_instances.lean Modified src/tactic/rcases.lean Modified src/tactic/replacer.lean Modified src/tactic/rewrite.lean Modified src/tactic/scc.lean Added src/tactic/solve_by_elim.lean Modified src/tactic/squeeze.lean Modified src/tactic/tauto.lean Modified src/tactic/tidy.lean Modified src/tactic/where.lean Modified src/tactic/wlog.lean Added test/conv.lean Added test/convert.lean + theorem singleton_inter_singleton_eq_empty Added test/ext.lean + structure dependent_fields + theorem df.ext + def my_bar + def my_foo + theorem unit.ext Modified test/library_search/ordered_ring.lean Modified test/library_search/ring_theory.lean Modified test/monotonicity.lean Modified test/monotonicity/test_cases.lean Added test/rcases.lean Added test/rewrite.lean Modified test/solve_by_elim.lean Modified test/tactics.lean - structure dependent_fields - theorem df.ext - def my_bar - def my_foo - theorem unit.ext Added test/tauto.lean Added test/wlog.lean 2019-05-08 09:47:14 73a30da feat(group_theory/subgroup): is_subgroup.inter (#994) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean + theorem is_submonoid.inter 2019-05-07 20:44:11-05:00 87cf6e3 feat(category_theory/category_of_elements) (#990) * feat(category_theory/category_of_elements) * Update src/category_theory/elements.lean Co-Authored-By: semorrison * Update src/category_theory/elements.lean Co-Authored-By: semorrison * Update src/category_theory/elements.lean Co-Authored-By: semorrison * Update src/category_theory/punit.lean Co-Authored-By: semorrison * various * remaining simp lemmas ESTIMATED CHANGES Added src/category_theory/elements.lean + def category_theory.category_of_elements.comma_equivalence + def category_theory.category_of_elements.from_comma + theorem category_theory.category_of_elements.from_comma_map + theorem category_theory.category_of_elements.from_comma_obj + def category_theory.category_of_elements.to_comma + theorem category_theory.category_of_elements.to_comma_map + theorem category_theory.category_of_elements.to_comma_obj + def category_theory.category_of_elements.π + theorem category_theory.category_of_elements.π_map + theorem category_theory.category_of_elements.π_obj + def category_theory.functor.elements Modified src/category_theory/punit.lean + def category_theory.functor.star + theorem category_theory.functor.star_map + theorem category_theory.functor.star_obj 2019-05-07 19:03:46 820bac3 building the hyperreal library (#835) * more instances * fix stuff that got weirded * fix stuff that got weird * fix stuff that became weird * build hyperreal library (with sorries) * fix weirdness, prettify etc. * spaces * st lt le lemmas fix type * Update src/data/real/hyperreal.lean Co-Authored-By: abhimanyupallavisudhir <43954672+abhimanyupallavisudhir@users.noreply.github.com> * if then * more stuff * Update hyperreal.lean * Update hyperreal.lean * Update basic.lean * Update basic.lean * Update hyperreal.lean * of_max, of_min, of_abs * Update filter_product.lean * Update hyperreal.lean * abs_def etc. * Update filter_product.lean * hole * Update hyperreal.lean * Update filter_product.lean * Update filter_product.lean * Update filter_product.lean * Update hyperreal.lean * Update hyperreal.lean * Update filter_product.lean * Update hyperreal.lean * Update hyperreal.lean * finally done with all sorries! * Update hyperreal.lean * fix (?) * fix (?) ring issue * real.Sup_univ * st is Sup * st_id_real spacebar * sup --> Sup * fix weirds * dollar signs * 100-column * 100 columns rule * Update hyperreal.lean * removing uparrows * uparrows * some stuff that got away * fix * lift_id * fix? * fix mono, hopefully * fix mono, hopefully * this should work * fix -- no more mono * fixes * fixes * fixes * fixes * ok, fixed ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem neg_neg_iff_pos Modified src/data/real/basic.lean + theorem real.Sup_univ Modified src/data/real/hyperreal.lean + theorem hyperreal.abs_lt_real_iff_infinitesimal +/- theorem hyperreal.epsilon_eq_inv_omega +/- theorem hyperreal.epsilon_lt_pos + theorem hyperreal.eq_of_is_st_real + theorem hyperreal.exists_st_iff_not_infinite + theorem hyperreal.exists_st_of_not_infinite + theorem hyperreal.gt_of_neg_of_infinitesimal + def hyperreal.infinite + theorem hyperreal.infinite_iff_abs_lt_abs + theorem hyperreal.infinite_iff_infinite_abs + theorem hyperreal.infinite_iff_infinite_neg + theorem hyperreal.infinite_iff_infinite_pos_abs + theorem hyperreal.infinite_iff_infinitesimal_inv + theorem hyperreal.infinite_iff_not_exists_st + theorem hyperreal.infinite_mul_infinite + theorem hyperreal.infinite_mul_of_infinite_not_infinitesimal + theorem hyperreal.infinite_mul_of_not_infinitesimal_infinite + def hyperreal.infinite_neg + theorem hyperreal.infinite_neg_add_infinite_neg + theorem hyperreal.infinite_neg_add_not_infinite + theorem hyperreal.infinite_neg_add_not_infinite_pos + theorem hyperreal.infinite_neg_def + theorem hyperreal.infinite_neg_iff_infinite_and_neg + theorem hyperreal.infinite_neg_iff_infinite_of_neg + theorem hyperreal.infinite_neg_iff_infinite_pos_neg + theorem hyperreal.infinite_neg_iff_infinitesimal_inv_neg + theorem hyperreal.infinite_neg_mul_infinite_neg + theorem hyperreal.infinite_neg_mul_infinite_pos + theorem hyperreal.infinite_neg_mul_of_infinite_neg_not_infinitesimal_pos + theorem hyperreal.infinite_neg_mul_of_infinite_pos_not_infinitesimal_neg + theorem hyperreal.infinite_neg_mul_of_not_infinitesimal_neg_infinite_pos + theorem hyperreal.infinite_neg_mul_of_not_infinitesimal_pos_infinite_neg + theorem hyperreal.infinite_neg_neg_of_infinite_pos + theorem hyperreal.infinite_neg_of_tendsto_bot + theorem hyperreal.infinite_of_infinitesimal_inv + theorem hyperreal.infinite_omega + def hyperreal.infinite_pos + theorem hyperreal.infinite_pos_abs_iff_infinite_abs + theorem hyperreal.infinite_pos_add_infinite_pos + theorem hyperreal.infinite_pos_add_not_infinite + theorem hyperreal.infinite_pos_add_not_infinite_neg + theorem hyperreal.infinite_pos_def + theorem hyperreal.infinite_pos_iff_infinite_and_pos + theorem hyperreal.infinite_pos_iff_infinite_neg_neg + theorem hyperreal.infinite_pos_iff_infinite_of_nonneg + theorem hyperreal.infinite_pos_iff_infinite_of_pos + theorem hyperreal.infinite_pos_iff_infinitesimal_inv_pos + theorem hyperreal.infinite_pos_mul_infinite_neg + theorem hyperreal.infinite_pos_mul_infinite_pos + theorem hyperreal.infinite_pos_mul_of_infinite_neg_not_infinitesimal_neg + theorem hyperreal.infinite_pos_mul_of_infinite_pos_not_infinitesimal_pos + theorem hyperreal.infinite_pos_mul_of_not_infinitesimal_neg_infinite_neg + theorem hyperreal.infinite_pos_mul_of_not_infinitesimal_pos_infinite_pos + theorem hyperreal.infinite_pos_neg_of_infinite_neg + theorem hyperreal.infinite_pos_of_tendsto_top + theorem hyperreal.infinite_pos_omega + theorem hyperreal.infinitesimal_add + theorem hyperreal.infinitesimal_def +/- theorem hyperreal.infinitesimal_epsilon + theorem hyperreal.infinitesimal_iff_infinite_inv + theorem hyperreal.infinitesimal_inv_of_infinite + theorem hyperreal.infinitesimal_mul + theorem hyperreal.infinitesimal_neg + theorem hyperreal.infinitesimal_neg_iff + theorem hyperreal.infinitesimal_neg_iff_infinite_neg_inv +/- theorem hyperreal.infinitesimal_of_tendsto_zero + theorem hyperreal.infinitesimal_pos_iff_infinite_pos_inv + theorem hyperreal.infinitesimal_sub_is_st + theorem hyperreal.infinitesimal_sub_st + theorem hyperreal.infinitesimal_zero +/- theorem hyperreal.inv_epsilon_eq_omega + theorem hyperreal.is_st_Sup + theorem hyperreal.is_st_add + theorem hyperreal.is_st_iff_abs_sub_lt_delta + theorem hyperreal.is_st_inj_real + theorem hyperreal.is_st_inv + theorem hyperreal.is_st_le_of_le + theorem hyperreal.is_st_mul + theorem hyperreal.is_st_neg + theorem hyperreal.is_st_of_tendsto + theorem hyperreal.is_st_real_iff_eq + theorem hyperreal.is_st_refl_real + theorem hyperreal.is_st_st' + theorem hyperreal.is_st_st + theorem hyperreal.is_st_st_of_exists_st + theorem hyperreal.is_st_st_of_is_st + theorem hyperreal.is_st_sub + theorem hyperreal.is_st_symm_real + theorem hyperreal.is_st_trans_real +/- theorem hyperreal.is_st_unique + theorem hyperreal.lt_neg_of_pos_of_infinitesimal + theorem hyperreal.lt_of_is_st_lt + theorem hyperreal.lt_of_pos_of_infinitesimal + theorem hyperreal.lt_of_st_lt + theorem hyperreal.ne_zero_of_infinite - theorem hyperreal.neg_lt_of_tendsto_zero_of_neg + theorem hyperreal.neg_lt_of_tendsto_zero_of_pos + theorem hyperreal.neg_of_infinite_neg + theorem hyperreal.not_infinite_add + theorem hyperreal.not_infinite_iff_exist_lt_gt + theorem hyperreal.not_infinite_mul + theorem hyperreal.not_infinite_neg + theorem hyperreal.not_infinite_neg_add_infinite_pos + theorem hyperreal.not_infinite_neg_of_infinite_pos + theorem hyperreal.not_infinite_of_exists_st + theorem hyperreal.not_infinite_of_infinitesimal + theorem hyperreal.not_infinite_pos_add_infinite_neg + theorem hyperreal.not_infinite_pos_of_infinite_neg + theorem hyperreal.not_infinite_real + theorem hyperreal.not_infinite_zero + theorem hyperreal.not_infinitesimal_of_infinite + theorem hyperreal.not_infinitesimal_of_infinite_neg + theorem hyperreal.not_infinitesimal_of_infinite_pos + theorem hyperreal.not_real_of_infinite + theorem hyperreal.not_real_of_infinitesimal_ne_zero + theorem hyperreal.pos_of_infinite_pos + theorem hyperreal.st_add + theorem hyperreal.st_eq_Sup + theorem hyperreal.st_id_real + theorem hyperreal.st_infinite + theorem hyperreal.st_inv + theorem hyperreal.st_le_of_le + theorem hyperreal.st_mul + theorem hyperreal.st_neg + theorem hyperreal.st_of_is_st + theorem hyperreal.zero_iff_infinitesimal_real + theorem hyperreal.zero_of_infinitesimal_real Modified src/order/filter/basic.lean + theorem filter.tendsto_at_top_at_bot Modified src/order/filter/filter_product.lean + theorem filter.filter_product.abs_def + theorem filter.filter_product.lift_id +/- theorem filter.filter_product.lt_def + theorem filter.filter_product.max_def + theorem filter.filter_product.min_def + theorem filter.filter_product.of_abs + theorem filter.filter_product.of_div +/- theorem filter.filter_product.of_eq +/- theorem filter.filter_product.of_eq_coe - theorem filter.filter_product.of_id +/- theorem filter.filter_product.of_le +/- theorem filter.filter_product.of_le_of_le +/- theorem filter.filter_product.of_lt +/- theorem filter.filter_product.of_lt_of_lt + theorem filter.filter_product.of_max + theorem filter.filter_product.of_min +/- theorem filter.filter_product.of_ne +/- theorem filter.filter_product.of_rel +/- theorem filter.filter_product.of_rel_of_rel +/- theorem filter.filter_product.of_rel_of_rel₂ +/- theorem filter.filter_product.of_rel₂ +/- theorem filter.filter_product.of_seq_add +/- theorem filter.filter_product.of_seq_mul + theorem filter.filter_product.of_sub 2019-05-07 17:27:55 4a38d2e feat(scripts): add --build-new flag to cache-olean (#992) ESTIMATED CHANGES Modified scripts/cache-olean.py 2019-05-07 10:49:02-04:00 717033e chore(build): cron build restarts from scratch ESTIMATED CHANGES Modified .travis.yml 2019-05-07 08:45:19 c726c12 feat(category/monad/cont): monad_cont instances for state_t, reader_t, except_t and option_t (#733) * feat(category/monad/cont): monad_cont instances for state_t, reader_t, except_t and option_t * feat(category/monad/writer): writer monad transformer ESTIMATED CHANGES Added src/category/monad/basic.lean + theorem map_eq_bind_pure_comp Modified src/category/monad/cont.lean + def cont + def cont_t.cont_t.monad_lift + def except_t.call_cc + theorem except_t.goto_mk_label + def except_t.mk_label + def option_t.call_cc + theorem option_t.goto_mk_label + def option_t.mk_label + def reader_t.call_cc + theorem reader_t.goto_mk_label + def reader_t.mk_label + def state_t.call_cc + theorem state_t.goto_mk_label + def state_t.mk_label + def writer_t.call_cc + theorem writer_t.goto_mk_label + def writer_t.mk_label Added src/category/monad/writer.lean + def except_t.pass_aux + def option_t.pass_aux + def swap_right + def writer + structure writer_t 2019-05-07 01:25:54-04:00 98ba07b chore(build): fix stages in cron job ESTIMATED CHANGES Modified .travis.yml 2019-05-07 00:28:50-04:00 505f748 chore(build): build against Lean 3.5 nightly build (#989) ESTIMATED CHANGES Modified .travis.yml 2019-05-06 16:50:37 6eba20b feat(category_theory): currying for functors (#981) * feat(category_theory): currying for functors * Update src/category_theory/currying.lean Co-Authored-By: semorrison * compacting * fix import * change from review * rfl on same line ESTIMATED CHANGES Added src/category_theory/currying.lean + theorem category_theory.curry.map_app_app + theorem category_theory.curry.obj_map_app + theorem category_theory.curry.obj_obj_map + theorem category_theory.curry.obj_obj_obj + def category_theory.curry + def category_theory.curry_obj + def category_theory.currying + theorem category_theory.uncurry.map_app + theorem category_theory.uncurry.obj_map + theorem category_theory.uncurry.obj_obj + def category_theory.uncurry 2019-05-06 05:34:58 f536dac six(style.md): fix broken code (#987) ESTIMATED CHANGES Modified docs/style.md 2019-05-05 11:57:30 23270e7 feat(ring_theory/adjoin): adjoining elements to form subalgebras (#756) * feat(ring_theory/adjoin): adjoining elements to form subalgebras * Fix build * Change to_submodule into a coercion * Use pointwise_mul * add simp attribute to adjoin_empty ESTIMATED CHANGES Added src/ring_theory/adjoin.lean + theorem algebra.adjoin_empty + theorem algebra.adjoin_eq_range + theorem algebra.adjoin_eq_span + theorem algebra.adjoin_int + theorem algebra.adjoin_le + theorem algebra.adjoin_le_iff + theorem algebra.adjoin_mono + theorem algebra.adjoin_singleton_eq_range + theorem algebra.adjoin_union + theorem algebra.adjoin_union_coe_submodule + theorem algebra.fg_trans + theorem algebra.subset_adjoin + theorem is_noetherian_ring_closure + theorem is_noetherian_ring_of_fg + def subalgebra.fg + theorem subalgebra.fg_bot + theorem subalgebra.fg_def Modified src/ring_theory/algebra.lean 2019-05-05 07:50:10 3f26ba8 feat(category_theory/products): associators (#982) ESTIMATED CHANGES Added src/category_theory/products/associator.lean + def category_theory.prod.associativity + def category_theory.prod.associator + theorem category_theory.prod.associator_map + theorem category_theory.prod.associator_obj + def category_theory.prod.inverse_associator + theorem category_theory.prod.inverse_associator_map + theorem category_theory.prod.inverse_associator_obj Renamed src/category_theory/bifunctor.lean to src/category_theory/products/bifunctor.lean Renamed src/category_theory/products.lean to src/category_theory/products/default.lean 2019-05-05 07:02:45 1e8f438 feat(presheaves) (#886) * feat(category_theory/colimits): missing simp lemmas * feat(category_theory): functor.map_nat_iso * define `functor.map_nat_iso`, and relate to whiskering * rename `functor.on_iso` to `functor.map_iso` * add some missing lemmas about whiskering * fix(category_theory): presheaves, unbundled and bundled, and pushforwards * restoring `(opens X)ᵒᵖ` * various changes from working on stalks * rename `nbhds` to `open_nhds` * fix introduced typo * typo * compactify a proof * rename `presheaf` to `presheaf_on_space` * fix(category_theory): turn `has_limits` classes into structures * naming instances to avoid collisions * breaking up instances.topological_spaces * fixing all the other pi-type typclasses * fix import * oops * fix import * missed one * typo * restoring eq_to_hom simp lemmas * removing unnecessary simp lemma * remove another superfluous lemma * removing the nat_trans and vcomp notations; use \hom and \gg * a simpler proposal * getting rid of vcomp * fix * splitting files * update notation * fix * cleanup * use iso_whisker_right instead of map_nat_iso * proofs magically got easier? * improve some proofs * remove crap * minimise imports * chore(travis): disable the check for minimal imports * Update src/algebraic_geometry/presheafed_space.lean Co-Authored-By: semorrison * writing `op_induction` tactic, and improving proofs * squeeze_simping * cleanup * rearranging * Update src/category_theory/instances/Top/presheaf.lean Co-Authored-By: semorrison * fix `open` statements, and use `op_induction` * rename terms of PresheafedSpace to X Y Z. rename field from .X to .to_Top * forgetful functor * update comments about unfortunate proofs * add coercion from morphisms of PresheafedSpaces to morphisms in Top ESTIMATED CHANGES Added src/algebraic_geometry/presheafed_space.lean + def algebraic_geometry.PresheafedSpace.comp + theorem algebraic_geometry.PresheafedSpace.comp_c + theorem algebraic_geometry.PresheafedSpace.comp_coe + theorem algebraic_geometry.PresheafedSpace.comp_f + theorem algebraic_geometry.PresheafedSpace.ext + def algebraic_geometry.PresheafedSpace.forget + structure algebraic_geometry.PresheafedSpace.hom + def algebraic_geometry.PresheafedSpace.id + theorem algebraic_geometry.PresheafedSpace.id_c + theorem algebraic_geometry.PresheafedSpace.id_f + structure algebraic_geometry.PresheafedSpace + def category_theory.functor.map_presheaf + theorem category_theory.functor.map_presheaf_map_c + theorem category_theory.functor.map_presheaf_map_f + theorem category_theory.functor.map_presheaf_obj_X + theorem category_theory.functor.map_presheaf_obj_𝒪 + def category_theory.nat_trans.on_presheaf Modified src/category_theory/instances/Top/basic.lean Modified src/category_theory/instances/Top/default.lean Modified src/category_theory/instances/Top/open_nhds.lean Modified src/category_theory/instances/Top/opens.lean Added src/category_theory/instances/Top/presheaf.lean + def category_theory.instances.Top.presheaf.pushforward.comp + theorem category_theory.instances.Top.presheaf.pushforward.comp_hom_app + theorem category_theory.instances.Top.presheaf.pushforward.comp_inv_app + def category_theory.instances.Top.presheaf.pushforward.id + theorem category_theory.instances.Top.presheaf.pushforward.id_hom_app' + theorem category_theory.instances.Top.presheaf.pushforward.id_hom_app + theorem category_theory.instances.Top.presheaf.pushforward.id_inv_app' + def category_theory.instances.Top.presheaf.pushforward + def category_theory.instances.Top.presheaf.pushforward_eq + theorem category_theory.instances.Top.presheaf.pushforward_eq_eq + def category_theory.instances.Top.presheaf Modified src/category_theory/opposites.lean + theorem category_theory.nat_iso.op_hom + theorem category_theory.nat_iso.op_inv + def category_theory.op_induction 2019-05-05 02:40:54 fc8b08b feat(data/set/basic): prod_subset_iff (#980) * feat(data/set/basic): prod_subset_iff * syntax ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.prod_subset_iff 2019-05-04 23:56:50 fbce6e4 fix(data/set/finite): make fintype_seq an instance (#979) ESTIMATED CHANGES Modified src/data/set/finite.lean - def set.fintype_seq 2019-05-04 22:16:39 7dea60b feat(logic/basic): forall_iff_forall_surj (#977) a lemma from the perfectoid project ESTIMATED CHANGES Modified src/logic/basic.lean + theorem forall_iff_forall_surj 2019-05-04 20:01:33 b4d483e feat(colimits): arbitrary colimits in Mon and CommRing (#910) * feat(category_theory): working in Sort rather than Type, as far as possible * missed one * adding a comment about working in Type * remove imax * removing `props`, it's covered by `types`. * fixing comment on `rel` * tweak comment * add matching extend_π lemma * remove unnecessary universe annotation * another missing s/Type/Sort/ * feat(category_theory/shapes): basic shapes of cones and conversions minor tweaks * Moving into src. Everything is borked. * investigating sparse * blech * maybe working again? * removing terrible square/cosquare names * returning to filtered colimits * colimits in Mon * rename * actually jump through the final hoop * experiments * fixing use of ext * feat(colimits): colimits in Mon and CommRing * fixes * removing stuff I didn't mean to have in here * minor * fixes * merge * update after merge * fix import ESTIMATED CHANGES Modified src/category_theory/concrete_category.lean + theorem category_theory.bundled.bundled_hom.ext +/- theorem category_theory.bundled.bundled_hom_coe Modified src/category_theory/instances/CommRing/adjunctions.lean + theorem category_theory.instances.CommRing.hom_coe_app' Modified src/category_theory/instances/CommRing/basic.lean + theorem category_theory.instances.CommRing.hom.ext +/- theorem category_theory.instances.CommRing.hom_coe_app Added src/category_theory/instances/CommRing/colimits.lean + def category_theory.instances.CommRing.colimits.cocone_fun + def category_theory.instances.CommRing.colimits.cocone_morphism + theorem category_theory.instances.CommRing.colimits.cocone_naturality + theorem category_theory.instances.CommRing.colimits.cocone_naturality_components + def category_theory.instances.CommRing.colimits.colimit + def category_theory.instances.CommRing.colimits.colimit_cocone + def category_theory.instances.CommRing.colimits.colimit_is_colimit + def category_theory.instances.CommRing.colimits.colimit_setoid + def category_theory.instances.CommRing.colimits.colimit_type + def category_theory.instances.CommRing.colimits.desc_fun + def category_theory.instances.CommRing.colimits.desc_fun_lift + def category_theory.instances.CommRing.colimits.desc_morphism + theorem category_theory.instances.CommRing.colimits.naturality_bundled + inductive category_theory.instances.CommRing.colimits.prequotient + theorem category_theory.instances.CommRing.colimits.quot_add + theorem category_theory.instances.CommRing.colimits.quot_mul + theorem category_theory.instances.CommRing.colimits.quot_neg + theorem category_theory.instances.CommRing.colimits.quot_one + theorem category_theory.instances.CommRing.colimits.quot_zero + inductive category_theory.instances.CommRing.colimits.relation Modified src/category_theory/instances/CommRing/default.lean Renamed src/category_theory/instances/monoids.lean to src/category_theory/instances/Mon/basic.lean Added src/category_theory/instances/Mon/colimits.lean + def category_theory.instances.Mon.colimits.cocone_fun + def category_theory.instances.Mon.colimits.cocone_morphism + theorem category_theory.instances.Mon.colimits.cocone_naturality + theorem category_theory.instances.Mon.colimits.cocone_naturality_components + def category_theory.instances.Mon.colimits.colimit + def category_theory.instances.Mon.colimits.colimit_cocone + def category_theory.instances.Mon.colimits.colimit_is_colimit + def category_theory.instances.Mon.colimits.colimit_setoid + def category_theory.instances.Mon.colimits.colimit_type + def category_theory.instances.Mon.colimits.desc_fun + def category_theory.instances.Mon.colimits.desc_fun_lift + def category_theory.instances.Mon.colimits.desc_morphism + inductive category_theory.instances.Mon.colimits.prequotient + theorem category_theory.instances.Mon.colimits.quot_mul + theorem category_theory.instances.Mon.colimits.quot_one + inductive category_theory.instances.Mon.colimits.relation Added src/category_theory/instances/Mon/default.lean Modified src/category_theory/limits/cones.lean + theorem category_theory.limits.cocone.naturality_bundled + theorem category_theory.limits.cone.naturality_bundled 2019-05-04 12:06:04-05:00 c7baf8e feat(option/injective_map) (#978) ESTIMATED CHANGES Modified src/data/option/basic.lean + theorem option.injective_map 2019-05-03 21:34:29 f98ffde feat(tactic/decl_mk_const): performance improvement for library_search (#967) * feat(tactic/decl_mk_const): auxiliary tactic for library_search [WIP] * use decl_mk_const in library_search * use decl_mk_const * move into tactic/basic.lean ESTIMATED CHANGES Modified src/tactic/basic.lean Modified src/tactic/library_search.lean Modified test/fin_cases.lean Modified test/library_search/basic.lean Modified test/library_search/ordered_ring.lean Modified test/library_search/ring_theory.lean Modified test/mllist.lean 2019-05-03 13:58:06-04:00 7b1105b chore(build): build only master and its related PRs ESTIMATED CHANGES Modified .travis.yml 2019-05-03 13:37:08-04:00 e747c91 chore(README): put the badges in the README on one line (#975) ESTIMATED CHANGES Modified README.md 2019-05-03 12:35:46-04:00 f2db636 feat(docs/install_debian): Debian startup guide (#974) * feat(docs/install_debian): Debian startup guide * feat(scripts/install_debian): One-line install for Debian [ci skip] * fix(docs/install_debian*): Typos pointed out by Johan Also adds a summary of what will be installed ESTIMATED CHANGES Added docs/install_debian.md Added docs/install_debian_details.md Added scripts/install_debian.sh 2019-05-03 11:30:19-05:00 f5060c4 feat(category_theory/limits): support for special shapes of (co)limits (#938) feat(category_theory/limits): support for special shapes of (co)limits ESTIMATED CHANGES Added docs/tutorial/category_theory/calculating_colimits_in_Top.lean + def I + def I_0 + def I_1 + def R + def X + def Y + def cylinder + def cylinder_0 + def cylinder_1 + def d + def f + def g + def mapping_cone + def mapping_cylinder + def mapping_cylinder_0 + def pt + def q + def to_pt + def w Modified src/category_theory/discrete_category.lean Modified src/category_theory/instances/Top/basic.lean + def category_theory.instances.Top.of Added src/category_theory/limits/shapes/binary_products.lean + def category_theory.limits.binary_cofan.mk + def category_theory.limits.binary_cofan + def category_theory.limits.binary_fan.mk + def category_theory.limits.binary_fan + def category_theory.limits.pair + def category_theory.limits.pair_function + inductive category_theory.limits.walking_pair Added src/category_theory/limits/shapes/default.lean Added src/category_theory/limits/shapes/equalizers.lean + def category_theory.limits.cocone.of_cofork + theorem category_theory.limits.cocone.of_cofork_ι + def category_theory.limits.cofork.condition + def category_theory.limits.cofork.of_cocone + theorem category_theory.limits.cofork.of_cocone_ι + def category_theory.limits.cofork.of_π + def category_theory.limits.cofork.π + def category_theory.limits.cofork + def category_theory.limits.cone.of_fork + theorem category_theory.limits.cone.of_fork_π + def category_theory.limits.fork.condition + def category_theory.limits.fork.of_cone + theorem category_theory.limits.fork.of_cone_π + def category_theory.limits.fork.of_ι + theorem category_theory.limits.fork.of_ι_app_one + theorem category_theory.limits.fork.of_ι_app_zero + def category_theory.limits.fork.ι + def category_theory.limits.fork + def category_theory.limits.parallel_pair + theorem category_theory.limits.parallel_pair_functor_obj + theorem category_theory.limits.parallel_pair_map_left + theorem category_theory.limits.parallel_pair_map_right + inductive category_theory.limits.walking_parallel_pair + def category_theory.limits.walking_parallel_pair_hom.comp + inductive category_theory.limits.walking_parallel_pair_hom + theorem category_theory.limits.walking_parallel_pair_hom_id Added src/category_theory/limits/shapes/products.lean + def category_theory.limits.cofan.mk + def category_theory.limits.cofan + def category_theory.limits.fan.mk + def category_theory.limits.fan Added src/category_theory/limits/shapes/pullbacks.lean + def category_theory.limits.cocone.of_pushout_cocone + theorem category_theory.limits.cocone.of_pushout_cocone_ι + def category_theory.limits.cone.of_pullback_cone + theorem category_theory.limits.cone.of_pullback_cone_π + def category_theory.limits.cospan + theorem category_theory.limits.cospan_left + theorem category_theory.limits.cospan_map_id + theorem category_theory.limits.cospan_map_inl + theorem category_theory.limits.cospan_map_inr + theorem category_theory.limits.cospan_one + theorem category_theory.limits.cospan_right + theorem category_theory.limits.pullback_cone.condition + def category_theory.limits.pullback_cone.mk + def category_theory.limits.pullback_cone.of_cone + theorem category_theory.limits.pullback_cone.of_cone_π + def category_theory.limits.pullback_cone.π₁ + def category_theory.limits.pullback_cone.π₂ + def category_theory.limits.pullback_cone + theorem category_theory.limits.pushout_cocone.condition + def category_theory.limits.pushout_cocone.mk + def category_theory.limits.pushout_cocone.of_cocone + theorem category_theory.limits.pushout_cocone.of_cocone_ι + def category_theory.limits.pushout_cocone.ι₁ + def category_theory.limits.pushout_cocone.ι₂ + def category_theory.limits.pushout_cocone + def category_theory.limits.span + theorem category_theory.limits.span_left + theorem category_theory.limits.span_map_fst + theorem category_theory.limits.span_map_id + theorem category_theory.limits.span_map_snd + theorem category_theory.limits.span_right + theorem category_theory.limits.span_zero + def category_theory.limits.walking_cospan.hom.comp + inductive category_theory.limits.walking_cospan.hom + theorem category_theory.limits.walking_cospan.hom_id + inductive category_theory.limits.walking_cospan + def category_theory.limits.walking_span.hom.comp + inductive category_theory.limits.walking_span.hom + theorem category_theory.limits.walking_span.hom_id + inductive category_theory.limits.walking_span Added src/category_theory/sparse.lean + def category_theory.sparse_category Modified src/tactic/basic.lean 2019-05-03 15:24:11+02:00 219cb1a chore(travis): disable the check for minimal imports (#973) ESTIMATED CHANGES Modified .travis.yml 2019-05-03 14:11:01+01:00 44386cd chore(docs): delete docs/wip.md (#972) * chore(docs): delete docs/wip.md long outdated * remove link in README ESTIMATED CHANGES Modified README.md Deleted docs/wip.md 2019-05-03 10:59:45 3eb7ebc remove code duplication (#971) ESTIMATED CHANGES Modified src/category_theory/natural_isomorphism.lean 2019-05-02 22:55:52+01:00 6956daa fix(data/polynomial): change instance order in polynomial.subsingleton (#970) ESTIMATED CHANGES Modified src/data/polynomial.lean 2019-05-02 17:32:09 60b3c19 fix(scripts/remote-install-update-mathlib): apt shouldn't ask (#969) ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh 2019-05-02 12:29:34-04:00 d288905 fix(script/remote-install-update-mathlib) fix answer reading and requests/urllib3 version conflict (#968) ESTIMATED CHANGES Modified README.md Modified scripts/remote-install-update-mathlib.sh 2019-05-02 08:40:53 8a097f1 feat(ring_theory/ideal_operations): inj_iff_trivial_ker for ring homomorphisms (#951) * feat(ring_theory/ideal_operations): inj_iff_trivial_ker for ring homomorphisms * Update subgroup.lean * Update ideal_operations.lean ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem is_group_hom.trivial_ker_iff_eq_one Modified src/ring_theory/ideal_operations.lean + theorem is_ring_hom.inj_iff_ker_eq_bot + theorem is_ring_hom.injective_iff + def is_ring_hom.ker + theorem is_ring_hom.ker_eq + theorem is_ring_hom.ker_eq_bot_iff_eq_zero 2019-05-02 08:08:14 ef11fb3 feat(category_theory/limits/opposites): (co)limits in opposite categories (#926) * (co)limits in opposite categories * moving lemmas * moving stuff about complete lattices to separate PR * renaming category_of_preorder elsewhere * build limits functor/shape at a time * removing stray commas, and making one-liners * remove non-terminal simps ESTIMATED CHANGES Modified src/category_theory/const.lean + def category_theory.functor.const.op_obj_op + theorem category_theory.functor.const.op_obj_op_hom_app + theorem category_theory.functor.const.op_obj_op_inv_app + def category_theory.functor.const.op_obj_unop + theorem category_theory.functor.const.op_obj_unop_hom_app + theorem category_theory.functor.const.op_obj_unop_inv_app Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocone_left_op_of_cone + theorem category_theory.limits.cocone_left_op_of_cone_X + theorem category_theory.limits.cocone_left_op_of_cone_ι_app + def category_theory.limits.cocone_of_cone_left_op + theorem category_theory.limits.cocone_of_cone_left_op_X + theorem category_theory.limits.cocone_of_cone_left_op_ι_app + def category_theory.limits.cone_left_op_of_cocone + theorem category_theory.limits.cone_left_op_of_cocone_X + theorem category_theory.limits.cone_left_op_of_cocone_π_app + def category_theory.limits.cone_of_cocone_left_op + theorem category_theory.limits.cone_of_cocone_left_op_X + theorem category_theory.limits.cone_of_cocone_left_op_π_app Added src/category_theory/limits/opposites.lean Modified src/category_theory/opposites.lean + theorem category_theory.functor.left_op_map + theorem category_theory.functor.left_op_obj + theorem category_theory.functor.right_op_map + theorem category_theory.functor.right_op_obj + theorem category_theory.nat_trans.left_op_app + theorem category_theory.nat_trans.op_app + theorem category_theory.nat_trans.right_op_app + theorem category_theory.nat_trans.unop_app Modified src/category_theory/yoneda.lean 2019-05-02 04:37:39 69094fc fix(tactic/library_search): iff lemmas with universes (#935) * fix(tactic/library_search): iff lemmas with universes * cleaning up * add crossreference ESTIMATED CHANGES Modified src/tactic/basic.lean Modified src/tactic/library_search.lean Modified test/library_search/basic.lean + def test.library_search.P + def test.library_search.Q + def test.library_search.f Added test/library_search/ordered_ring.lean 2019-05-02 02:35:03 9b7fb5f feat(category_theory/limits): complete lattices have (co)limits (#931) * feat(category_theory/limits): complete lattices have (co)limits * Update lattice.lean ESTIMATED CHANGES Added src/category_theory/limits/lattice.lean 2019-05-01 08:53:51-04:00 b3433a5 feat(script/auth_github): improve messages [ci skip] (#965) ESTIMATED CHANGES Modified scripts/auth_github.py 2019-04-30 20:17:17 c8a2aa9 chore(category_theory): move small_category_of_preorder to preorder namespace (#932) ESTIMATED CHANGES Modified src/category_theory/category.lean 2019-04-30 18:22:31+02:00 7c86814 fix(scripts/remote-install-update-mathlib): try again [ci skip] The previous attempt to install setuptools seems to fails for timing reasons (PyGithub need setuptools after it's downloaded but before it is installed, this is probably also a packaging issue in PyGithub). ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh 2019-04-30 15:20:36 a15fca5 fix(scripts/remote-install-update-mathlib): missing dependency (#964) Also add a `--upgrade` option to `pip install` in case something is already there but outdated ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh 2019-04-30 12:53:25+01:00 8dcce05 feat(analysis/normed_space): open mapping (#900) * The Banach open mapping theorem * improve comments * feat(analysis/normed_space): rebase, fix build ESTIMATED CHANGES Added src/analysis/normed_space/banach.lean + theorem exists_preimage_norm_le + theorem linear_equiv.is_bounded_inv + theorem open_mapping Modified src/analysis/specific_limits.lean + theorem has_sum_geometric_two' +/- theorem has_sum_geometric_two + theorem summable_geometric + theorem summable_geometric_two + theorem tsum_geometric + theorem tsum_geometric_two 2019-04-29 20:12:03 00aaf05 refactor(tactic/interactive): remove dependencies of (#878) `tactic/interactive` on many theories ESTIMATED CHANGES Modified .travis.yml Modified src/algebra/associated.lean Modified src/algebra/big_operators.lean Modified src/algebra/char_p.lean Modified src/algebra/field_power.lean Modified src/algebra/free.lean Modified src/algebra/group_power.lean Modified src/algebra/ordered_ring.lean Modified src/algebra/pointwise.lean Modified src/algebra/punit_instances.lean Modified src/algebra/ring.lean Modified src/analysis/normed_space/basic.lean Modified src/category/bitraversable/basic.lean Modified src/category/monad/cont.lean Modified src/category/traversable/equiv.lean Modified src/category_theory/adjunction.lean Modified src/category_theory/category.lean Modified src/category_theory/comma.lean Modified src/category_theory/core.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/instances/CommRing/basic.lean Modified src/category_theory/instances/Top/basic.lean Modified src/category_theory/instances/Top/open_nhds.lean Modified src/category_theory/instances/Top/opens.lean Modified src/category_theory/instances/groups.lean Modified src/category_theory/instances/measurable_space.lean Modified src/category_theory/instances/monoids.lean Modified src/category_theory/limits/cones.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/opposites.lean Modified src/category_theory/types.lean Modified src/data/analysis/filter.lean Modified src/data/equiv/basic.lean Modified src/data/equiv/list.lean Modified src/data/erased.lean Modified src/data/finset.lean Modified src/data/fintype.lean Modified src/data/hash_map.lean Modified src/data/list/basic.lean Modified src/data/list/defs.lean Modified src/data/list/perm.lean +/- theorem list.nil_subperm Modified src/data/list/sigma.lean Modified src/data/nat/prime.lean Modified src/data/nat/sqrt.lean Modified src/data/num/basic.lean Modified src/data/option/basic.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_norm.lean Modified src/data/pfun.lean Modified src/data/rat.lean Modified src/data/real/basic.lean Modified src/data/seq/computation.lean Modified src/data/seq/seq.lean Modified src/data/set/basic.lean Modified src/data/set/enumerate.lean Modified src/data/set/intervals.lean Modified src/data/vector2.lean Modified src/data/zsqrtd/gaussian_int.lean Modified src/field_theory/finite.lean Modified src/field_theory/splitting_field.lean Modified src/group_theory/eckmann_hilton.lean Modified src/group_theory/free_group.lean Modified src/group_theory/sylow.lean Modified src/linear_algebra/determinant.lean Modified src/logic/basic.lean +/- theorem classical.iff_iff_not_or_and_or_not Modified src/logic/relator.lean Modified src/logic/unique.lean Modified src/measure_theory/giry_monad.lean Modified src/measure_theory/measurable_space.lean Modified src/measure_theory/measure_space.lean Modified src/measure_theory/outer_measure.lean Modified src/number_theory/dioph.lean Modified src/number_theory/pell.lean Modified src/order/basic.lean Modified src/order/conditionally_complete_lattice.lean Modified src/order/filter/default.lean Modified src/order/lexicographic.lean Modified src/order/zorn.lean Modified src/ring_theory/algebra_operations.lean Modified src/ring_theory/polynomial.lean Modified src/set_theory/lists.lean Modified src/tactic/basic.lean Modified src/tactic/chain.lean Modified src/tactic/default.lean Modified src/tactic/interactive.lean Modified src/tactic/omega/nat/dnf.lean Modified src/tactic/omega/nat/main.lean Modified src/tactic/rcases.lean Modified src/tactic/tfae.lean Modified src/tactic/tidy.lean Modified src/tactic/wlog.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean Modified src/topology/bases.lean Modified src/topology/basic.lean Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/polynomial.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/completion.lean Modified src/topology/metric_space/hausdorff_distance.lean Modified src/topology/metric_space/isometry.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean 2019-04-29 12:46:38+02:00 9b3e91b Update elan.md ESTIMATED CHANGES Modified docs/elan.md 2019-04-26 20:52:03 53f9878 refactor(analysis/normed_space): use bundled type for `fderiv` (#956) * feat(analysis/normed_space): refactor fderiv to use bounded_linear_map - uniqueness remains sorry'd - more simp lemmas about bounded_linear_map * refactor uniqueness proof * fix(analysis/normed_space/operator_norm): rename `bound_le_op_norm` to `op_norm_le_bound` - so that the inequality goes the correct way. ESTIMATED CHANGES Modified src/analysis/normed_space/deriv.lean +/- theorem fderiv_at_filter_unique +/- theorem fderiv_at_unique +/- theorem fderiv_at_within_open_unique +/- theorem has_fderiv_at.comp +/- theorem has_fderiv_at.congr +/- theorem has_fderiv_at.continuous_at - theorem has_fderiv_at.is_o +/- def has_fderiv_at +/- theorem has_fderiv_at_add +/- theorem has_fderiv_at_congr +/- theorem has_fderiv_at_filter.comp +/- theorem has_fderiv_at_filter.congr +/- theorem has_fderiv_at_filter.is_O_sub - theorem has_fderiv_at_filter.is_o +/- theorem has_fderiv_at_filter.mono +/- theorem has_fderiv_at_filter.tendsto_nhds +/- def has_fderiv_at_filter +/- theorem has_fderiv_at_filter_add +/- theorem has_fderiv_at_filter_congr' +/- theorem has_fderiv_at_filter_congr +/- theorem has_fderiv_at_filter_id +/- theorem has_fderiv_at_filter_iff_tendsto +/- theorem has_fderiv_at_filter_neg +/- theorem has_fderiv_at_filter_of_has_fderiv_at +/- theorem has_fderiv_at_filter_real_equiv +/- theorem has_fderiv_at_filter_smul +/- theorem has_fderiv_at_filter_sub +/- theorem has_fderiv_at_id +/- theorem has_fderiv_at_iff_tendsto +/- theorem has_fderiv_at_neg +/- theorem has_fderiv_at_smul +/- theorem has_fderiv_at_sub +/- theorem has_fderiv_at_within.comp +/- theorem has_fderiv_at_within.congr +/- theorem has_fderiv_at_within.continuous_at_within +/- theorem has_fderiv_at_within.mono +/- def has_fderiv_at_within +/- theorem has_fderiv_at_within_add +/- theorem has_fderiv_at_within_congr +/- theorem has_fderiv_at_within_id +/- theorem has_fderiv_at_within_iff_tendsto +/- theorem has_fderiv_at_within_neg +/- theorem has_fderiv_at_within_of_has_fderiv_at +/- theorem has_fderiv_at_within_smul +/- theorem has_fderiv_at_within_sub Modified src/analysis/normed_space/operator_norm.lean - theorem bounded_linear_map.bound_le_op_norm + theorem bounded_linear_map.op_norm_le_bound 2019-04-26 22:27:05+02:00 b49bf61 fix(README): update maintainer list ESTIMATED CHANGES Modified README.md 2019-04-26 10:52:46+01:00 0444f9c feat(data/equiv/basic): sum_compl_apply and others (#961) * feat(data/equiv/basic): sum_congr_apply and others * Update basic.lean ESTIMATED CHANGES Modified src/data/equiv/basic.lean + theorem equiv.set.of_eq_apply + theorem equiv.set.of_eq_symm_apply + theorem equiv.set.sum_compl_apply_inl + theorem equiv.set.sum_compl_apply_inr + theorem equiv.set.sum_compl_symm_apply_of_mem + theorem equiv.set.sum_compl_symm_apply_of_not_mem + theorem equiv.set.union_apply_left + theorem equiv.set.union_apply_right + theorem equiv.set.univ_apply + theorem equiv.set.univ_symm_apply + theorem equiv.symm_symm_apply 2019-04-25 18:58:02 038f809 refactor(analysis/normed_space/operator_norm): replace subspace with … (#955) * refactor(analysis/normed_space/operator_norm): replace subspace with structure * refactor(analysis/normed_space/operator_norm): add coercions ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem bounded_linear_map.is_bounded_linear_map + def is_bounded_linear_map.to_bounded_linear_map - theorem mul_inv_eq' Modified src/analysis/normed_space/operator_norm.lean + theorem bounded_linear_map.add_apply + theorem bounded_linear_map.coe_add' + theorem bounded_linear_map.coe_add + theorem bounded_linear_map.coe_apply' + theorem bounded_linear_map.coe_apply + theorem bounded_linear_map.coe_coe + theorem bounded_linear_map.coe_comp' + theorem bounded_linear_map.coe_comp + theorem bounded_linear_map.coe_id' + theorem bounded_linear_map.coe_id + theorem bounded_linear_map.coe_neg' + theorem bounded_linear_map.coe_neg + theorem bounded_linear_map.coe_sub' + theorem bounded_linear_map.coe_sub + theorem bounded_linear_map.coe_zero' +/- theorem bounded_linear_map.coe_zero + theorem bounded_linear_map.continuous + def bounded_linear_map.id + theorem bounded_linear_map.id_apply +/- theorem bounded_linear_map.is_O_sub +/- theorem bounded_linear_map.neg_apply - theorem bounded_linear_map.one_smul + theorem bounded_linear_map.sub_apply - theorem bounded_linear_map.tendsto - def bounded_linear_map.to_linear_map + def bounded_linear_map.zero - theorem bounded_linear_map.zero_smul + structure bounded_linear_map - def bounded_linear_map - def bounded_linear_map_subspace + theorem exists_pos_bound_of_bound - def is_bounded_linear_map.to_bounded_linear_map 2019-04-23 20:15:47 1d9ff68 feat(function/embedding): ext and ext_iff (#962) ESTIMATED CHANGES Modified src/logic/embedding.lean + theorem function.embedding.ext + theorem function.embedding.ext_iff 2019-04-23 07:22:05 0d7b419 fix(ring_theory/adjoin_root): move adjoin_root out of adjoin_root namespace (#960) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean - def adjoin_root.adjoin_root + def adjoin_root 2019-04-22 23:48:35 45456cf refactor(data/equiv/basic): simplify definition of equiv.set.range (#959) * refactor(data/equiv/basic): simplify definition of equiv.set.range * delete duplicate ESTIMATED CHANGES Modified src/data/equiv/basic.lean 2019-04-22 15:00:53 63bbd1c feat(data/list/basic): index_of_inj (#954) * feat(data/list/basic): index_of_inj * make it an iff ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.index_of_inj 2019-04-21 06:07:43-04:00 3478f1f fix(tactic/interactive): allow `convert e using 0` ESTIMATED CHANGES Modified src/tactic/interactive.lean 2019-04-20 18:42:45-04:00 9daa1a5 feat(tactic/clear_except): clear most of the assumptions in context (#957) ESTIMATED CHANGES Modified src/tactic/interactive.lean 2019-04-20 20:07:03 4b9d94d feat(data/[fin]set): add some more basic properties of (finite) sets (#948) * feat(data/[fin]set): add some more basic properties of (finite) sets * update after reviews * fix error, move pairwise_disjoint to lattice as well * fix error ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/finset.lean + theorem finset.filter_union_right + theorem finset.nonempty_iff_ne_empty + theorem finset.subset_image_iff + theorem finset.subset_union_elim + theorem finset.to_set_injective + theorem finset.to_set_sdiff Modified src/data/set/basic.lean + theorem set.compl_empty_iff + theorem set.compl_univ_iff + theorem set.diff_singleton_subset_iff + theorem set.image_congr' + theorem set.image_eq_range + theorem set.image_id' + theorem set.image_image + theorem set.mem_diff_singleton + theorem set.mem_diff_singleton_empty + theorem set.nmem_singleton_empty + theorem set.nonempty_compl + theorem set.nonempty_image + theorem set.preimage_eq_preimage' + theorem set.preimage_subset_preimage_iff + theorem set.subset_insert_diff + theorem set.subset_insert_diff_singleton + theorem set.subset_union_of_subset_left + theorem set.subset_union_of_subset_right + theorem subtype.exists_set_subtype + theorem subtype.range_val Modified src/data/set/finite.lean + theorem set.exists_finset_of_finite + theorem set.finite.coe_to_finset + theorem set.finite_bUnion' Modified src/data/set/function.lean + theorem set.inj_on_comp_of_injective_left + theorem set.inj_on_preimage Modified src/data/set/lattice.lean + theorem disjoint_self + theorem ne_of_disjoint + theorem set.Union_of_singleton + theorem set.Union_range_eq_Union + theorem set.Union_range_eq_sUnion + def set.pairwise_disjoint + theorem set.pairwise_disjoint_elim + theorem set.pairwise_disjoint_range + theorem set.pairwise_disjoint_subset + theorem set.subset_sUnion_of_subset 2019-04-20 15:39:59+02:00 7370cbf feat(tactic/linarith): treat expr atoms up to defeq (#950) ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2019-04-20 09:47:15 784a68c fix(topology/order): Missing Prop annotation (#952) ESTIMATED CHANGES Modified src/topology/order.lean 2019-04-20 00:49:21 e4fc5af feat(tactic/ring): treat expr atoms up to defeq (#949) ESTIMATED CHANGES Modified src/tactic/ring.lean Modified test/ring.lean 2019-04-18 22:33:17-04:00 c1aff1b style(tactic/omega): whitespace and minor tweaks missed the PR review cycle ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.func.add_nil +/- theorem list.func.equiv_of_eq +/- theorem list.func.equiv_symm +/- theorem list.func.forall_val_of_forall_mem +/- theorem list.func.get_map' +/- theorem list.func.get_map +/- theorem list.func.get_neg +/- theorem list.func.get_nil +/- theorem list.func.get_pointwise +/- theorem list.func.get_sub +/- theorem list.func.length_add +/- theorem list.func.length_neg +/- theorem list.func.length_pointwise +/- theorem list.func.length_sub +/- theorem list.func.nil_add +/- theorem list.func.nil_pointwise +/- theorem list.func.nil_sub +/- theorem list.func.pointwise_nil +/- theorem list.func.sub_nil Modified src/tactic/omega/coeffs.lean +/- theorem omega.coeffs.val_between_map_div +/- theorem omega.coeffs.val_except_update_set Modified src/tactic/omega/eq_elim.lean Modified src/tactic/omega/find_ees.lean + structure omega.ee_state Modified src/tactic/omega/int/dnf.lean Modified src/tactic/omega/int/form.lean Modified src/tactic/omega/int/main.lean Modified src/tactic/omega/int/preterm.lean Modified src/tactic/omega/misc.lean Modified src/tactic/omega/nat/dnf.lean Modified src/tactic/omega/nat/form.lean +/- def omega.nat.form.equiv +/- def omega.nat.form.fresh_index +/- def omega.nat.form.holds +/- def omega.nat.form.implies +/- def omega.nat.form.neg_free +/- def omega.nat.form.repr +/- def omega.nat.form.sat +/- def omega.nat.form.sub_free +/- def omega.nat.form.valid +/- inductive omega.nat.form +/- def omega.nat.univ_close +/- theorem omega.nat.univ_close_of_valid +/- theorem omega.nat.valid_of_unsat_not Modified src/tactic/omega/nat/main.lean Modified src/tactic/omega/nat/neg_elim.lean +/- theorem omega.nat.implies_neg_elim_core +/- def omega.nat.is_nnf +/- theorem omega.nat.is_nnf_nnf +/- theorem omega.nat.le_and_le_iff_eq +/- def omega.nat.neg_elim_core +/- theorem omega.nat.neg_free_neg_elim +/- theorem omega.nat.neg_free_neg_elim_core +/- def omega.nat.nnf +/- def omega.nat.push_neg +/- theorem omega.nat.push_neg_equiv Modified src/tactic/omega/nat/preterm.lean +/- def omega.nat.canonize +/- def omega.nat.preterm.fresh_index +/- def omega.nat.preterm.repr +/- def omega.nat.preterm.sub_free +/- def omega.nat.preterm.val +/- theorem omega.nat.preterm.val_add +/- theorem omega.nat.preterm.val_sub +/- theorem omega.nat.val_canonize Modified src/tactic/omega/nat/sub_elim.lean Modified src/tactic/omega/term.lean + def omega.term.to_string Modified test/omega.lean 2019-04-18 20:15:55 d0140dd feat(group_theory/subgroup): additive version of inj_iff_trivial_ker (#947) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2019-04-17 15:33:51 032400b feat(analysis/normed_space): more facts about operator norm (#927) * refactor(analysis/normed_space): refactor and additional lemmas - rename `bounded_linear_maps` to `bounded_linear_map`, `operator_norm` to `op_norm`. - refactor operator norm with an equivalent definition. - change some names and notation to be more consistent with conventions elsewhere in mathlib: replace `bounded_by_*` with `le_*`, `operator_norm_homogeneous` with `op_norm_smul`. - more simp lemmas for bounded_linear_map. - additional results: lipschitz continuity of the operator norm, also that it is submultiplicative. * chore(analysis/normed_space/operator_norm): add attribution * style(analysis/normed_space/operator_norm): use namespace `real` - open `real` instead of `lattice` and omit spurious prefixes. * feat(analysis/normed_space/operator_norm): coercion to linear_map * style(analysis/normed_space/bounded_linear_maps): minor edits - extract variables for brevity of theorem statements. - more consistent naming of variables. * feat(analysis/normed_space/operator_norm): add constructor of bounded_linear_map from is_bounded_linear_map * fix(analysis/normed_space/operator_norm): remove spurious explicit argument * fix(analysis/normed_space): type of bounded linear maps - change the definition of bounded_linear_map to be a type rather than the corresponding subspace, and mark it for unfolding. - rename `bounded_linear_map.from_is_bounded_linear_map` to `is_bounded_linear_map.to_bounded_linear_map`. * feat(analysis/normed_space): analysis results for bounded_linear_maps ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem is_bounded_linear_map.add +/- theorem is_bounded_linear_map.comp +/- theorem is_bounded_linear_map.continuous +/- theorem is_bounded_linear_map.is_O_comp +/- theorem is_bounded_linear_map.is_O_id +/- theorem is_bounded_linear_map.is_O_sub +/- theorem is_bounded_linear_map.lim_zero_bounded_linear_map +/- theorem is_bounded_linear_map.neg +/- theorem is_bounded_linear_map.smul +/- theorem is_bounded_linear_map.sub +/- theorem is_bounded_linear_map.tendsto +/- structure is_bounded_linear_map Modified src/analysis/normed_space/operator_norm.lean - theorem bdd_above_range_norm_image_div_norm - theorem bounded_by_operator_norm + theorem bounded_linear_map.bound_le_op_norm + theorem bounded_linear_map.bounds_bdd_below + theorem bounded_linear_map.bounds_nonempty + theorem bounded_linear_map.coe_zero + def bounded_linear_map.comp + theorem bounded_linear_map.ext + theorem bounded_linear_map.ext_iff + theorem bounded_linear_map.is_O_comp + theorem bounded_linear_map.is_O_id + theorem bounded_linear_map.is_O_sub + theorem bounded_linear_map.le_op_norm + theorem bounded_linear_map.lipschitz + theorem bounded_linear_map.map_add + theorem bounded_linear_map.map_neg + theorem bounded_linear_map.map_smul + theorem bounded_linear_map.map_sub + theorem bounded_linear_map.map_zero + theorem bounded_linear_map.neg_apply + theorem bounded_linear_map.one_smul + def bounded_linear_map.op_norm + theorem bounded_linear_map.op_norm_comp_le + theorem bounded_linear_map.op_norm_nonneg + theorem bounded_linear_map.op_norm_smul + theorem bounded_linear_map.op_norm_triangle + theorem bounded_linear_map.op_norm_zero_iff + theorem bounded_linear_map.ratio_le_op_norm + theorem bounded_linear_map.smul_apply + theorem bounded_linear_map.tendsto + def bounded_linear_map.to_linear_map + theorem bounded_linear_map.unit_le_op_norm + theorem bounded_linear_map.zero_apply + theorem bounded_linear_map.zero_smul + def bounded_linear_map + def bounded_linear_map_subspace - theorem bounded_linear_maps.coe_zero - theorem bounded_linear_maps.map_zero - theorem bounded_linear_maps.one_smul - theorem bounded_linear_maps.smul_coe - theorem bounded_linear_maps.zero_smul - def bounded_linear_maps - theorem exists_bound - theorem ext + def is_bounded_linear_map.to_bounded_linear_map - theorem operator_norm_bounded_by - theorem operator_norm_homogeneous - theorem operator_norm_homogeneous_le - theorem operator_norm_nonneg - theorem operator_norm_triangle - theorem operator_norm_zero_iff - def to_linear_map 2019-04-17 09:53:00-04:00 8b23dad feat(scripts): use apt-get on ubuntu and support older Python versions (#945) ESTIMATED CHANGES Modified .travis.yml Modified scripts/setup-dev-scripts.sh Modified scripts/update-mathlib.py 2019-04-17 11:03:45+02:00 3f4b154 feat(tactic/omega): tactic for linear integer & natural number arithmetic (#827) * feat(tactic/omega): tactic for discharging linear integer and natural number arithmetic goals * refactor(tactic/omega): clean up namespace and notations * Update src/data/list/func.lean Co-Authored-By: skbaek * Add changed files * Refactor val_between_map_div * Use default inhabitants for list.func ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/int/basic.lean + theorem int.add_div_of_dvd + theorem int.default_eq_zero Modified src/data/list/basic.lean +/- theorem list.Ico.filter_ge + theorem list.func.add_nil + theorem list.func.eq_get_of_mem + theorem list.func.eq_of_equiv + theorem list.func.equiv_of_eq + theorem list.func.equiv_refl + theorem list.func.equiv_symm + theorem list.func.equiv_trans + theorem list.func.forall_val_of_forall_mem + theorem list.func.get_add + theorem list.func.get_eq_default_of_le + theorem list.func.get_map' + theorem list.func.get_map + theorem list.func.get_neg + theorem list.func.get_nil + theorem list.func.get_pointwise + theorem list.func.get_set + theorem list.func.get_set_eq_of_ne + theorem list.func.get_sub + theorem list.func.length_add + theorem list.func.length_neg + theorem list.func.length_pointwise + theorem list.func.length_set + theorem list.func.length_sub + theorem list.func.map_add_map + theorem list.func.mem_get_of_le + theorem list.func.mem_get_of_ne_zero + theorem list.func.nil_add + theorem list.func.nil_pointwise + theorem list.func.nil_sub + theorem list.func.pointwise_nil + theorem list.func.sub_nil Modified src/data/list/defs.lean + def list.func.add + def list.func.equiv + def list.func.get + def list.func.neg + def list.func.pointwise + def list.func.set + def list.func.sub + def list.map_with_index + def list.map_with_index_core Modified src/data/nat/basic.lean + theorem nat.lt_iff_add_one_le + theorem nat.max_succ_succ + theorem nat.zero_max Modified src/logic/basic.lean + theorem classical.iff_iff_not_or_and_or_not Added src/tactic/omega/clause.lean + def omega.clause.append + def omega.clause.holds + def omega.clause.holds_append + def omega.clause.sat + def omega.clause.unsat + def omega.clause + def omega.clauses.sat + def omega.clauses.unsat + theorem omega.clauses.unsat_cons + theorem omega.clauses.unsat_nil Added src/tactic/omega/coeffs.lean + theorem omega.coeffs.dvd_val + theorem omega.coeffs.dvd_val_between + theorem omega.coeffs.forall_val_dvd_of_forall_mem_dvd + def omega.coeffs.val + theorem omega.coeffs.val_add + def omega.coeffs.val_between + theorem omega.coeffs.val_between_add + theorem omega.coeffs.val_between_add_val_between + theorem omega.coeffs.val_between_eq_of_le + theorem omega.coeffs.val_between_eq_val_between + theorem omega.coeffs.val_between_eq_zero + theorem omega.coeffs.val_between_map_div + theorem omega.coeffs.val_between_map_mul + theorem omega.coeffs.val_between_neg + theorem omega.coeffs.val_between_nil + def omega.coeffs.val_between_set + theorem omega.coeffs.val_between_sub + theorem omega.coeffs.val_eq_of_le + theorem omega.coeffs.val_eq_zero + def omega.coeffs.val_except + def omega.coeffs.val_except_add_eq + theorem omega.coeffs.val_except_eq_val_except + theorem omega.coeffs.val_except_update_set + theorem omega.coeffs.val_map_div + theorem omega.coeffs.val_neg + theorem omega.coeffs.val_nil + def omega.coeffs.val_set + theorem omega.coeffs.val_sub Added src/tactic/omega/default.lean Added src/tactic/omega/eq_elim.lean + def omega.cancel + def omega.coeffs_reduce + theorem omega.coeffs_reduce_correct + def omega.ee.repr + inductive omega.ee + def omega.eq_elim + theorem omega.mul_symdiv_eq + def omega.rhs + theorem omega.rhs_correct + theorem omega.rhs_correct_aux + theorem omega.sat_empty + theorem omega.sat_eq_elim + def omega.sgm + def omega.subst + theorem omega.subst_correct + def omega.sym_sym + def omega.symdiv + def omega.symmod + theorem omega.symmod_add_one_self + theorem omega.symmod_eq + theorem omega.unsat_of_unsat_eq_elim Added src/tactic/omega/find_ees.lean + def omega.gcd Added src/tactic/omega/find_scalars.lean Added src/tactic/omega/int/dnf.lean + theorem omega.int.clauses_sat_dnf_core + def omega.int.dnf + def omega.int.dnf_core + theorem omega.int.exists_clause_holds + theorem omega.int.implies_neg_elim + def omega.int.is_nnf + theorem omega.int.is_nnf_nnf + theorem omega.int.is_nnf_push_neg + theorem omega.int.le_and_le_iff_eq + def omega.int.neg_elim + def omega.int.neg_free + theorem omega.int.neg_free_neg_elim + def omega.int.nnf + theorem omega.int.nnf_equiv + def omega.int.push_neg + theorem omega.int.push_neg_equiv + theorem omega.int.unsat_of_clauses_unsat Added src/tactic/omega/int/form.lean + def omega.int.form.equiv + def omega.int.form.fresh_index + def omega.int.form.holds + def omega.int.form.implies + def omega.int.form.repr + def omega.int.form.sat + theorem omega.int.form.sat_of_implies_of_sat + theorem omega.int.form.sat_or + def omega.int.form.unsat + def omega.int.form.valid + inductive omega.int.form + def omega.int.univ_close + theorem omega.int.univ_close_of_valid + theorem omega.int.valid_of_unsat_not Added src/tactic/omega/int/main.lean + theorem omega.int.univ_close_of_unsat_clausify Added src/tactic/omega/int/preterm.lean + def omega.int.canonize + def omega.int.preterm.add_one + def omega.int.preterm.fresh_index + def omega.int.preterm.repr + def omega.int.preterm.val + inductive omega.int.preterm + theorem omega.int.val_canonize Added src/tactic/omega/lin_comb.lean + def omega.lin_comb + theorem omega.lin_comb_holds + def omega.unsat_lin_comb + theorem omega.unsat_lin_comb_of + theorem omega.unsat_of_unsat_lin_comb Added src/tactic/omega/main.lean Added src/tactic/omega/misc.lean + theorem omega.fun_mono_2 + theorem omega.pred_mono_2' + theorem omega.pred_mono_2 + def omega.update + theorem omega.update_eq + theorem omega.update_eq_of_ne + def omega.update_zero Added src/tactic/omega/nat/dnf.lean + def omega.nat.bools.or + def omega.nat.dnf + def omega.nat.dnf_core + theorem omega.nat.exists_clause_holds + theorem omega.nat.exists_clause_holds_core + theorem omega.nat.exists_clause_sat + theorem omega.nat.holds_nonneg_consts + theorem omega.nat.holds_nonneg_consts_core + def omega.nat.nonneg_consts + def omega.nat.nonneg_consts_core + def omega.nat.nonnegate + def omega.nat.term.vars + def omega.nat.term.vars_core + def omega.nat.terms.vars + theorem omega.nat.unsat_of_unsat_dnf Added src/tactic/omega/nat/form.lean + def omega.nat.form.equiv + def omega.nat.form.fresh_index + def omega.nat.form.holds + def omega.nat.form.holds_constant + def omega.nat.form.implies + def omega.nat.form.neg_free + def omega.nat.form.repr + def omega.nat.form.sat + theorem omega.nat.form.sat_of_implies_of_sat + theorem omega.nat.form.sat_or + def omega.nat.form.sub_free + def omega.nat.form.unsat + def omega.nat.form.valid + inductive omega.nat.form + def omega.nat.univ_close + theorem omega.nat.univ_close_of_valid + theorem omega.nat.valid_of_unsat_not Added src/tactic/omega/nat/main.lean + theorem omega.nat.univ_close_of_unsat_neg_elim_not Added src/tactic/omega/nat/neg_elim.lean + theorem omega.nat.implies_neg_elim + theorem omega.nat.implies_neg_elim_core + def omega.nat.is_nnf + theorem omega.nat.is_nnf_nnf + theorem omega.nat.is_nnf_push_neg + theorem omega.nat.le_and_le_iff_eq + def omega.nat.neg_elim + def omega.nat.neg_elim_core + theorem omega.nat.neg_free_neg_elim + theorem omega.nat.neg_free_neg_elim_core + def omega.nat.nnf + theorem omega.nat.nnf_equiv + def omega.nat.push_neg + theorem omega.nat.push_neg_equiv Added src/tactic/omega/nat/preterm.lean + def omega.nat.canonize + def omega.nat.preterm.add_one + def omega.nat.preterm.fresh_index + def omega.nat.preterm.repr + def omega.nat.preterm.sub_free + def omega.nat.preterm.val + theorem omega.nat.preterm.val_add + theorem omega.nat.preterm.val_const + def omega.nat.preterm.val_constant + theorem omega.nat.preterm.val_sub + theorem omega.nat.preterm.val_var + inductive omega.nat.preterm + theorem omega.nat.val_canonize Added src/tactic/omega/nat/sub_elim.lean + def omega.nat.form.sub_subst + def omega.nat.form.sub_terms + theorem omega.nat.holds_is_diff + def omega.nat.is_diff + def omega.nat.preterm.sub_subst + def omega.nat.preterm.sub_terms + theorem omega.nat.preterm.val_sub_subst + theorem omega.nat.sat_sub_elim + def omega.nat.sub_elim + def omega.nat.sub_elim_core + def omega.nat.sub_fresh_index + theorem omega.nat.sub_subst_equiv + theorem omega.nat.unsat_of_unsat_sub_elim Added src/tactic/omega/prove_unsats.lean + theorem omega.forall_mem_repeat_zero_eq_zero Added src/tactic/omega/term.lean + def omega.term.add + def omega.term.div + def omega.term.fresh_index + def omega.term.mul + def omega.term.neg + def omega.term.sub + def omega.term.val + theorem omega.term.val_add + theorem omega.term.val_div + theorem omega.term.val_mul + theorem omega.term.val_neg + theorem omega.term.val_sub + def omega.term + def omega.terms.fresh_index Added test/omega.lean 2019-04-16 21:38:18 4b8106b fix(test/local_cache): make the trace text explicit and quiet (#941) (by default) ESTIMATED CHANGES Modified test/local_cache.lean + def do_trace 2019-04-16 20:12:19 7bbbee1 feat(*): various additions to low-level files (#904) * feat(*): various additions to low-level files * fix(data/fin): add missing universe ESTIMATED CHANGES Modified src/algebra/order.lean + def decidable.lt_by_cases Modified src/data/equiv/basic.lean + def equiv.subtype_congr_right + theorem equiv.subtype_congr_right_mk Modified src/data/fin.lean + def {u} Modified src/data/nat/basic.lean + theorem nat.add_sub_cancel_right Modified src/data/subtype.lean + def subtype.coind + theorem subtype.coind_injective + theorem subtype.map_injective + def subtype.restrict + theorem subtype.restrict_apply + theorem subtype.restrict_def + theorem subtype.restrict_injective +/- theorem subtype.val_injective Modified src/logic/basic.lean + theorem congr_arg2 Modified src/logic/embedding.lean Modified src/order/basic.lean + def bounded + theorem trans_trichotomous_left + theorem trans_trichotomous_right + def unbounded Modified src/order/order_iso.lean + theorem injective_of_increasing Modified src/set_theory/cofinality.lean 2019-04-16 18:10:16 2294876 feat(data/finset): powerset_len (subsets of a given size) (#899) * feat(data/finset): powerset_len (subsets of a given size) * fix build ESTIMATED CHANGES Modified src/algebra/char_p.lean Modified src/data/complex/exponential.lean Modified src/data/finset.lean + theorem finset.card_powerset_len + theorem finset.mem_powerset_len + def finset.powerset_len + theorem finset.powerset_len_mono Modified src/data/list/basic.lean + theorem list.append_sublist_append + theorem list.length_of_sublists_len + theorem list.length_sublists_len + theorem list.mem_sublists_len + theorem list.mem_sublists_len_self + theorem list.nodup_sublists_len + def list.sublists_len + def list.sublists_len_aux + theorem list.sublists_len_aux_append + theorem list.sublists_len_aux_eq + theorem list.sublists_len_aux_zero + theorem list.sublists_len_sublist_of_sublist + theorem list.sublists_len_sublist_sublists' + theorem list.sublists_len_succ_cons + theorem list.sublists_len_succ_nil + theorem list.sublists_len_zero Modified src/data/multiset.lean + theorem multiset.card_powerset_len + theorem multiset.mem_powerset_len + theorem multiset.mem_powerset_len_aux + theorem multiset.nodup_powerset_len + def multiset.powerset_len + def multiset.powerset_len_aux + theorem multiset.powerset_len_aux_cons + theorem multiset.powerset_len_aux_eq_map_coe + theorem multiset.powerset_len_aux_nil + theorem multiset.powerset_len_aux_perm + theorem multiset.powerset_len_aux_zero + theorem multiset.powerset_len_coe' + theorem multiset.powerset_len_coe + theorem multiset.powerset_len_cons + theorem multiset.powerset_len_le_powerset + theorem multiset.powerset_len_mono + theorem multiset.powerset_len_zero_left + theorem multiset.powerset_len_zero_right Modified src/data/nat/basic.lean + def nat.choose + theorem nat.choose_eq_fact_div_fact + theorem nat.choose_eq_zero_of_lt + theorem nat.choose_mul_fact_mul_fact + theorem nat.choose_one_right + theorem nat.choose_pos + theorem nat.choose_self + theorem nat.choose_succ_self + theorem nat.choose_succ_succ + theorem nat.choose_zero_right + theorem nat.choose_zero_succ + theorem nat.fact_mul_fact_dvd_fact + theorem nat.succ_mul_choose_eq Modified src/data/nat/choose.lean - def choose - theorem choose_eq_fact_div_fact - theorem choose_eq_zero_of_lt - theorem choose_mul_fact_mul_fact - theorem choose_one_right - theorem choose_pos - theorem choose_self - theorem choose_succ_self - theorem choose_succ_succ - theorem choose_zero_right - theorem choose_zero_succ - theorem fact_mul_fact_dvd_fact - theorem succ_mul_choose_eq Modified src/ring_theory/ideal_operations.lean 2019-04-16 16:32:52 8985a43 feat(data/set/intervals): some interval lemmas (#942) * feat(data/set/intervals): a few more lemmas * one-liners ESTIMATED CHANGES Modified src/data/set/intervals.lean + theorem set.Ioc_self + theorem set.Ioc_subset_Ioc + theorem set.Ioc_subset_Ioc_left + theorem set.Ioc_subset_Ioc_right + theorem set.left_mem_Icc + theorem set.left_mem_Ico + theorem set.left_mem_Ioc + theorem set.left_mem_Ioo + theorem set.right_mem_Icc + theorem set.right_mem_Ico + theorem set.right_mem_Ioc + theorem set.right_mem_Ioo 2019-04-16 07:19:32 361e216 feature(category_theory/instances/Top/open[_nhds]): category of open sets, and open neighbourhoods of a point (merge #920 first) (#922) * rearrange Top * oops, import from the future * the categories of open sets and of open_nhds * missing import * restoring opens, adding headers * Update src/category_theory/instances/Top/open_nhds.lean Co-Authored-By: semorrison * use full_subcategory_inclusion ESTIMATED CHANGES Added src/category_theory/instances/Top/adjunctions.lean + def category_theory.instances.Top.adj₁ + def category_theory.instances.Top.adj₂ Added src/category_theory/instances/Top/basic.lean + def category_theory.instances.Top.discrete + def category_theory.instances.Top.trivial + def category_theory.instances.Top Added src/category_theory/instances/Top/default.lean Added src/category_theory/instances/Top/limits.lean + def category_theory.instances.Top.colimit + def category_theory.instances.Top.colimit_is_colimit + def category_theory.instances.Top.limit + def category_theory.instances.Top.limit_is_limit Added src/category_theory/instances/Top/open_nhds.lean + def topological_space.open_nhds.inclusion + def topological_space.open_nhds.inclusion_map_iso + theorem topological_space.open_nhds.inclusion_map_iso_hom + theorem topological_space.open_nhds.inclusion_map_iso_inv + theorem topological_space.open_nhds.inclusion_obj + def topological_space.open_nhds.map + theorem topological_space.open_nhds.map_id_obj' + theorem topological_space.open_nhds.map_id_obj + theorem topological_space.open_nhds.map_id_obj_unop + theorem topological_space.open_nhds.op_map_id_obj + def topological_space.open_nhds.open_nhds Added src/category_theory/instances/Top/opens.lean + def topological_space.opens.map + def topological_space.opens.map_comp + theorem topological_space.opens.map_comp_hom_app + theorem topological_space.opens.map_comp_inv_app + theorem topological_space.opens.map_comp_obj' + theorem topological_space.opens.map_comp_obj + theorem topological_space.opens.map_comp_obj_unop + def topological_space.opens.map_id + theorem topological_space.opens.map_id_hom_app + theorem topological_space.opens.map_id_inv_app + theorem topological_space.opens.map_id_obj' + theorem topological_space.opens.map_id_obj + theorem topological_space.opens.map_id_obj_unop + def topological_space.opens.map_iso + theorem topological_space.opens.map_iso_hom_app + theorem topological_space.opens.map_iso_inv_app + theorem topological_space.opens.map_iso_refl + theorem topological_space.opens.op_map_comp_obj + theorem topological_space.opens.op_map_id_obj Modified src/category_theory/instances/measurable_space.lean Deleted src/category_theory/instances/topological_spaces.lean - def category_theory.instances.Top.adj₁ - def category_theory.instances.Top.adj₂ - def category_theory.instances.Top.colimit - def category_theory.instances.Top.colimit_is_colimit - def category_theory.instances.Top.discrete - def category_theory.instances.Top.limit - def category_theory.instances.Top.limit_is_limit - def category_theory.instances.Top.trivial - def category_theory.instances.Top - def category_theory.instances.nbhd - def category_theory.instances.nbhds - def topological_space.opens.map - def topological_space.opens.map_id - theorem topological_space.opens.map_id_obj - def topological_space.opens.map_iso - def topological_space.opens.map_iso_id 2019-04-15 19:41:40 5f04e76 feat(nat/basic): add some basic nat inequality lemmas (#937) * feat(nat/basic): add some basic nat inequality lemmas, useful as specific cases of existing ring cases since uses less hypothesis * feat(nat/basic): add some basic nat inequality lemmas, with convention fixes * feat(nat/basic): add some basic nat inequality lemmas, with convention fixes ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.le_mul_of_pos_left + theorem nat.le_mul_of_pos_right + theorem nat.lt_of_div_lt_div 2019-04-15 19:09:47 d06eb85 feat(topology/algebra/continuous_functions): the ring of continuous functions (#923) * feat(topology/algebra/continuous_functions): the ring of continuous functions * filling in the hierarchy * use to_additive ESTIMATED CHANGES Added src/topology/algebra/continuous_functions.lean 2019-04-14 19:26:36-04:00 ca5d4c1 feat(scripts): disable testing the install scripts in external PRs (#936) ESTIMATED CHANGES Modified .travis.yml 2019-04-14 15:16:28+01:00 a1b7dcd fix(algebra/big_operators): change variables in finset.prod_map to remove spurious [comm_monoid β] (#934) The old version involved maps α → β → γ and an instance [comm_monoid γ], but there was also a section variable [comm_monoid β]. In applications of this lemma it is not necessary, and not usually true, that β is a monoid. Change the statement to involve maps α → γ → β so that we already have a monoid structure on the last variable and we do not make spurious assumptions about the second one. ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.prod_map 2019-04-13 21:56:41+02:00 f01934c docs(elan): remove reference to nightly Lean (#928) * docs(elan): Remove reference to nightly Lean. ESTIMATED CHANGES Modified docs/elan.md 2019-04-13 19:13:56+01:00 49c3a04 fix(algebra.field): introduce division_ring_has_div' (#852) * fix division_ring_has_div * priority default * comment ESTIMATED CHANGES Modified src/algebra/field.lean 2019-04-12 12:59:14+02:00 3fe449e feat(algebra/free): free magma, semigroup, monoid (#735) ESTIMATED CHANGES Added src/algebra/free.lean + def free_magma.length + def free_magma.lift + theorem free_magma.lift_mul + theorem free_magma.lift_of + theorem free_magma.lift_unique + def free_magma.map + theorem free_magma.map_mul' + theorem free_magma.map_mul + theorem free_magma.map_of + theorem free_magma.map_pure + theorem free_magma.mul_bind + theorem free_magma.mul_map_seq + theorem free_magma.mul_seq + theorem free_magma.pure_bind + theorem free_magma.pure_seq + def free_magma.repr' + theorem free_magma.traverse_eq + theorem free_magma.traverse_mul' + theorem free_magma.traverse_mul + theorem free_magma.traverse_pure' + theorem free_magma.traverse_pure + inductive free_magma + def free_semigroup.lift' + def free_semigroup.lift + theorem free_semigroup.lift_mul + theorem free_semigroup.lift_of + theorem free_semigroup.lift_of_mul + theorem free_semigroup.lift_unique + def free_semigroup.map + theorem free_semigroup.map_mul' + theorem free_semigroup.map_mul + theorem free_semigroup.map_of + theorem free_semigroup.map_pure + theorem free_semigroup.mul_bind + theorem free_semigroup.mul_map_seq + theorem free_semigroup.mul_seq + def free_semigroup.of + theorem free_semigroup.pure_bind + theorem free_semigroup.pure_seq + def free_semigroup.traverse' + theorem free_semigroup.traverse_eq + theorem free_semigroup.traverse_mul' + theorem free_semigroup.traverse_mul + theorem free_semigroup.traverse_pure' + theorem free_semigroup.traverse_pure + def free_semigroup + def free_semigroup_free_magma + theorem free_semigroup_free_magma_mul + def magma.free_semigroup.lift + theorem magma.free_semigroup.lift_mul + theorem magma.free_semigroup.lift_of + theorem magma.free_semigroup.lift_unique + def magma.free_semigroup.map + theorem magma.free_semigroup.map_mul + theorem magma.free_semigroup.map_of + def magma.free_semigroup.of + theorem magma.free_semigroup.of_mul + theorem magma.free_semigroup.of_mul_assoc + theorem magma.free_semigroup.of_mul_assoc_left + theorem magma.free_semigroup.of_mul_assoc_right + inductive magma.free_semigroup.r + def magma.free_semigroup + def semigroup.free_monoid.lift + theorem semigroup.free_monoid.lift_mul + theorem semigroup.free_monoid.lift_of + theorem semigroup.free_monoid.lift_one + theorem semigroup.free_monoid.lift_unique + def semigroup.free_monoid.map + theorem semigroup.free_monoid.map_mul + theorem semigroup.free_monoid.map_of + def semigroup.free_monoid.of + theorem semigroup.free_monoid.of_mul + def semigroup.free_monoid 2019-04-11 19:08:59 be79f25 refactor(data/int/basic): weaken hypotheses for int.induction_on (#887) * refactor(data/int/basic): weaken hypotheses for int.induction_on * fix build * fix build ESTIMATED CHANGES Modified src/algebra/group_power.lean Modified src/data/int/basic.lean 2019-04-11 14:11:00 36f0c22 feat(submonoid, subgroup, subring): is_ring_hom instances for set.inclusion (#917) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean Modified src/group_theory/submonoid.lean Modified src/ring_theory/subring.lean 2019-04-11 04:11:18-04:00 c1e07a2 fix(tactic/explode): more accurate may_be_proof (#924) ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/explode.lean 2019-04-11 00:50:17 22fcb4e minor changes (#921) ESTIMATED CHANGES Modified src/category_theory/concrete_category.lean + theorem category_theory.bundled.coe_id Modified src/category_theory/eq_to_hom.lean + theorem category_theory.eq_to_hom_op Modified src/category_theory/equivalence.lean Modified src/category_theory/functor_category.lean Modified src/category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.hom_inv_id_app + theorem category_theory.nat_iso.inv_hom_id_app Modified src/category_theory/opposites.lean + theorem category_theory.op_id_unop + theorem category_theory.unop_id_op 2019-04-10 17:49:27 f5d43a9 feat(analysis/normed_space/deriv): show that the differential is unique (2) (#916) * Remove wrong simp attribute * fix typo * characterize convergence at_top in normed spaces * copy some changes from #829 * small elements in normed fields go to zero * derivatives are unique * remove unnecessary lemma * update according to review * remove another empty line ESTIMATED CHANGES Modified src/analysis/normed_space/deriv.lean + theorem fderiv_at_filter_unique + theorem fderiv_at_unique + theorem fderiv_at_within_open_unique Modified src/analysis/specific_limits.lean + theorem tendsto_pow_at_top_nhds_0_of_lt_1_normed_field Modified src/topology/basic.lean + theorem nhds_within_eq_of_open - theorem nhs_within_eq_of_open Modified src/topology/sequences.lean +/- theorem topological_space.seq_tendsto_iff 2019-04-10 17:14:40 41014e5 rename has_sum and is_sum to summable and has_sum (#912) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean - theorem has_sum_iff_vanishing_norm - theorem has_sum_of_has_sum_norm - theorem has_sum_of_norm_bounded +/- theorem norm_tsum_le_tsum_norm + theorem summable_iff_vanishing_norm + theorem summable_of_norm_bounded + theorem summable_of_summable_norm Modified src/analysis/specific_limits.lean + theorem has_sum_geometric + theorem has_sum_geometric_two - theorem has_sum_of_absolute_convergence_real - theorem is_sum_geometric - theorem is_sum_geometric_two + theorem summable_of_absolute_convergence_real Modified src/measure_theory/probability_mass_function.lean - theorem pmf.has_sum_coe + theorem pmf.has_sum_coe_one - theorem pmf.is_sum_coe_one +/- def pmf.pure + theorem pmf.summable_coe +/- theorem pmf.tsum_coe +/- def {u} Modified src/topology/algebra/infinite_sum.lean - theorem cauchy_seq_of_has_sum_dist + theorem cauchy_seq_of_summable_dist +/- def has_sum +/- theorem has_sum_add - theorem has_sum_comp_of_has_sum_of_injective + theorem has_sum_hom - theorem has_sum_iff_cauchy + theorem has_sum_iff_has_sum - theorem has_sum_iff_has_sum_ne_zero - theorem has_sum_iff_has_sum_ne_zero_bij + theorem has_sum_iff_has_sum_of_iso + theorem has_sum_iff_has_sum_of_ne_zero + theorem has_sum_iff_has_sum_of_ne_zero_bij + theorem has_sum_iff_of_summable - theorem has_sum_iff_vanishing + theorem has_sum_ite_eq + theorem has_sum_le + theorem has_sum_le_inj +/- theorem has_sum_mul_left +/- theorem has_sum_mul_right +/- theorem has_sum_neg + theorem has_sum_of_has_sum + theorem has_sum_of_has_sum_ne_zero - theorem has_sum_of_has_sum_of_sub + theorem has_sum_of_iso +/- theorem has_sum_sigma - theorem has_sum_spec +/- theorem has_sum_sub +/- theorem has_sum_sum +/- theorem has_sum_sum_of_ne_finset_zero + theorem has_sum_tsum + theorem has_sum_unique +/- theorem has_sum_zero - def is_sum - theorem is_sum_add - theorem is_sum_hom - theorem is_sum_iff_is_sum - theorem is_sum_iff_is_sum_of_iso - theorem is_sum_iff_is_sum_of_ne_zero - theorem is_sum_iff_is_sum_of_ne_zero_bij - theorem is_sum_iff_of_has_sum - theorem is_sum_ite_eq - theorem is_sum_le - theorem is_sum_le_inj - theorem is_sum_mul_left - theorem is_sum_mul_right - theorem is_sum_neg - theorem is_sum_of_is_sum - theorem is_sum_of_is_sum_ne_zero - theorem is_sum_of_iso - theorem is_sum_sigma - theorem is_sum_sub - theorem is_sum_sum - theorem is_sum_sum_of_ne_finset_zero - theorem is_sum_tsum - theorem is_sum_unique - theorem is_sum_zero + def summable + theorem summable_add + theorem summable_comp_of_summable_of_injective + theorem summable_iff_cauchy + theorem summable_iff_summable_ne_zero + theorem summable_iff_summable_ne_zero_bij + theorem summable_iff_vanishing + theorem summable_mul_left + theorem summable_mul_right + theorem summable_neg + theorem summable_of_summable_of_sub + theorem summable_sigma + theorem summable_spec + theorem summable_sub + theorem summable_sum + theorem summable_sum_of_ne_finset_zero + theorem summable_zero + theorem tendsto_sum_nat_of_has_sum - theorem tendsto_sum_nat_of_is_sum +/- def tsum +/- theorem tsum_add + theorem tsum_eq_has_sum - theorem tsum_eq_is_sum + theorem tsum_eq_tsum_of_has_sum_iff_has_sum - theorem tsum_eq_tsum_of_is_sum_iff_is_sum +/- theorem tsum_le_tsum +/- theorem tsum_mul_left +/- theorem tsum_mul_right +/- theorem tsum_neg +/- theorem tsum_sub +/- theorem tsum_sum +/- theorem tsum_zero Modified src/topology/instances/ennreal.lean + theorem ennreal.has_sum_iff_tendsto_nat - theorem ennreal.is_sum_iff_tendsto_nat + theorem has_sum_iff_tendsto_nat_of_nonneg - theorem has_sum_of_nonneg_of_le - theorem is_sum_iff_tendsto_nat_of_nonneg + theorem nnreal.exists_le_has_sum_of_le - theorem nnreal.exists_le_is_sum_of_le + theorem nnreal.has_sum_iff_tendsto_nat - theorem nnreal.has_sum_of_le - theorem nnreal.is_sum_iff_tendsto_nat + theorem nnreal.summable_of_le + theorem summable_of_nonneg_of_le Modified src/topology/instances/nnreal.lean +/- theorem nnreal.has_sum_coe - theorem nnreal.is_sum_coe + theorem nnreal.summable_coe +/- theorem nnreal.tsum_coe 2019-04-10 16:24:03+01:00 c4b65da fix(mergify): merge if either push or pr build passes. (#918) * fix(mergify): merge if either push or pr build passes. * Update .mergify.yml * Update .mergify.yml ESTIMATED CHANGES Modified .mergify.yml 2019-04-10 09:45:01+01:00 49ccc9f refactor(order/lexicographic): use prod.lex and psigma.lex (#914) * refactor(order/lexicographic): use prod.lex and psigma.lex * update ESTIMATED CHANGES Modified src/order/lexicographic.lean 2019-04-10 07:17:03 8992472 fix(category_theory): make the `nat_trans` arrow `⟹` a synonym for the `hom` arrow (#907) * removing the nat_trans and vcomp notations; use \hom and \gg * a simpler proposal * getting rid of vcomp * fix * update notations in documentation * typo in docs ESTIMATED CHANGES Modified docs/theories/category_theory.md Modified src/category_theory/adjunction.lean Modified src/category_theory/comma.lean +/- def category_theory.comma.map_left +/- def category_theory.comma.map_left_comp +/- def category_theory.comma.map_right +/- def category_theory.comma.map_right_comp +/- def category_theory.comma.nat_trans Modified src/category_theory/discrete_category.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/functor_category.lean +/- theorem category_theory.functor.category.id_app +/- theorem category_theory.functor.category.nat_trans.app_naturality +/- theorem category_theory.functor.category.nat_trans.naturality_app Modified src/category_theory/limits/cones.lean +/- theorem category_theory.functor.cocones_obj Modified src/category_theory/limits/limits.lean +/- def category_theory.limits.is_colimit.hom_iso +/- def category_theory.limits.is_limit.hom_iso Modified src/category_theory/limits/types.lean +/- theorem category_theory.limits.types.types_colimit_map +/- theorem category_theory.limits.types.types_limit_map Modified src/category_theory/natural_isomorphism.lean - theorem category_theory.nat_iso.hom_vcomp_inv - theorem category_theory.nat_iso.inv_vcomp_hom Modified src/category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.congr_app +/- theorem category_theory.nat_trans.exchange +/- theorem category_theory.nat_trans.ext +/- def category_theory.nat_trans.hcomp +/- theorem category_theory.nat_trans.hcomp_app +/- def category_theory.nat_trans.vcomp +/- theorem category_theory.nat_trans.vcomp_app +/- theorem category_theory.nat_trans.vcomp_assoc Modified src/category_theory/products.lean +/- def category_theory.nat_trans.prod +/- theorem category_theory.nat_trans.prod_app Modified src/category_theory/types.lean + theorem category_theory.functor_to_types.comp - theorem category_theory.functor_to_types.vcomp Modified src/category_theory/whiskering.lean +/- theorem category_theory.whisker_left.app +/- def category_theory.whisker_left + theorem category_theory.whisker_left_comp +/- theorem category_theory.whisker_left_twice - theorem category_theory.whisker_left_vcomp +/- theorem category_theory.whisker_right.app +/- def category_theory.whisker_right + theorem category_theory.whisker_right_comp +/- theorem category_theory.whisker_right_left +/- theorem category_theory.whisker_right_twice - theorem category_theory.whisker_right_vcomp +/- theorem category_theory.whiskering_left_map_app_app +/- theorem category_theory.whiskering_left_obj_map +/- theorem category_theory.whiskering_right_map_app_app +/- theorem category_theory.whiskering_right_obj_map Modified src/category_theory/yoneda.lean +/- def category_theory.yoneda_sections +/- def category_theory.yoneda_sections_small 2019-04-10 06:48:16 f04535d feat(category_theory): iso_whisker_(left|right) (#908) * feat(category_theory): iso_whisker_(left|right) * oops, use old notation for now * update after merge ESTIMATED CHANGES Modified src/category_theory/whiskering.lean + def category_theory.iso_whisker_left + theorem category_theory.iso_whisker_left_hom + theorem category_theory.iso_whisker_left_inv + def category_theory.iso_whisker_right + theorem category_theory.iso_whisker_right_hom + theorem category_theory.iso_whisker_right_inv 2019-04-10 02:08:58 86bd577 refactor(algebra/group): is_monoid_hom extends is_mul_hom (#915) * refactor(algebra/group): is_monoid_hom extends is_mul_hom * Fix build ESTIMATED CHANGES Modified src/algebra/group.lean + theorem is_add_monoid_hom.map_add + theorem is_monoid_hom.map_mul Modified src/algebra/group_power.lean Modified src/algebra/module.lean Modified src/algebra/pi_instances.lean Modified src/algebra/punit_instances.lean Modified src/analysis/normed_space/basic.lean Modified src/category/fold.lean Modified src/data/dfinsupp.lean Modified src/data/finsupp.lean Modified src/data/matrix.lean Modified src/data/multiset.lean Modified src/data/nat/cast.lean Modified src/data/polynomial.lean 2019-04-10 00:40:05 f1683a9 feat(data/set/basic): inclusion map (#906) * feat(data/set/basic): inclusion map * add continuous_inclusion * minor style change ESTIMATED CHANGES Modified src/data/set/basic.lean + def set.inclusion + theorem set.inclusion_inclusion + theorem set.inclusion_injective + theorem set.inclusion_self Modified src/topology/constructions.lean + theorem continuous_inclusion 2019-04-10 00:12:57 96d748e refactor(category_theory): rename `functor.on_iso` to `functor.map_iso` (#893) * feat(category_theory): functor.map_nat_iso * define `functor.map_nat_iso`, and relate to whiskering * rename `functor.on_iso` to `functor.map_iso` * add some missing lemmas about whiskering * some more missing whiskering lemmas, while we're at it * removing map_nat_iso ESTIMATED CHANGES Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/equivalence.lean Modified src/category_theory/isomorphism.lean + def category_theory.functor.map_iso + theorem category_theory.functor.map_iso_hom + theorem category_theory.functor.map_iso_inv - def category_theory.functor.on_iso - theorem category_theory.functor.on_iso_hom - theorem category_theory.functor.on_iso_inv + theorem category_theory.iso.symm_mk + theorem category_theory.iso.trans_mk Modified src/category_theory/limits/preserves.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/whiskering.lean + theorem category_theory.whisker_left_id' + theorem category_theory.whisker_right_id' + theorem category_theory.whiskering_left_map_app_app + theorem category_theory.whiskering_left_obj_map + theorem category_theory.whiskering_left_obj_obj + theorem category_theory.whiskering_right_map_app_app + theorem category_theory.whiskering_right_obj_map + theorem category_theory.whiskering_right_obj_obj 2019-04-09 22:44:04 d692499 reorganising category_theory/instances/rings.lean (#909) ESTIMATED CHANGES Added src/category_theory/instances/CommRing/adjunctions.lean + theorem category_theory.instances.CommRing.polynomial_ring_map_val + theorem category_theory.instances.CommRing.polynomial_ring_obj_α Renamed src/category_theory/instances/rings.lean to src/category_theory/instances/CommRing/basic.lean - theorem category_theory.instances.CommRing.polynomial_map_val - theorem category_theory.instances.CommRing.polynomial_obj_α Added src/category_theory/instances/CommRing/default.lean 2019-04-09 19:46:08 4494001 feat(field_theory/subfield): subfields are fields (#888) * feat(field_theory/subfield): subfield are fields * Update subfield.lean ESTIMATED CHANGES Modified src/field_theory/subfield.lean 2019-04-09 13:38:26-04:00 5c4f5f2 chore(build): allow PRs from separate repos to test deployment scripts ESTIMATED CHANGES Modified .travis.yml Modified appveyor.yml 2019-04-09 10:16:41-04:00 c2d79f8 fix(mergify): require travis "push" check to push (#913) This hopefully fixes an error where mergify does not merge a PR is the "pr" build succeeds before the "push" build. In these situations mergify does not merge, because the branch protection settings require both builds to pass. Unfortunately, there doesn't seem to be an option to change the branch protection settings to only require the "pr" build to pass ESTIMATED CHANGES Modified .mergify.yml 2019-04-09 13:50:54+01:00 66a86ff refactor(*): rename is_group_hom.mul to map_mul (#911) * refactor(*): rename is_group_hom.mul to map_mul * Fix splits_mul ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem is_group_anti_hom.map_prod - theorem is_group_anti_hom.prod + theorem is_group_hom.map_multiset_prod + theorem is_group_hom.map_prod - theorem is_group_hom.multiset_prod - theorem is_group_hom.prod Modified src/algebra/direct_sum.lean Modified src/algebra/group.lean + theorem is_add_group_hom.map_sub +/- theorem is_add_group_hom.sub - theorem is_add_group_hom_sub - theorem is_group_anti_hom.inv + theorem is_group_anti_hom.map_inv + theorem is_group_anti_hom.map_one - theorem is_group_anti_hom.one +/- theorem is_group_hom.inv + theorem is_group_hom.map_inv + theorem is_group_hom.map_one + theorem is_group_hom.mul - theorem is_group_hom.one - theorem is_group_hom_inv - theorem is_group_hom_mul Modified src/algebra/group_power.lean +/- theorem is_add_group_hom.gsmul + theorem is_add_group_hom.map_gsmul + theorem is_add_group_hom.map_smul - theorem is_add_group_hom.smul - theorem is_add_group_hom_gsmul - theorem is_group_hom.gpow + theorem is_group_hom.map_gpow + theorem is_group_hom.map_pow - theorem is_group_hom.pow Modified src/analysis/complex/exponential.lean +/- theorem real.angle.coe_gsmul Modified src/field_theory/splitting_field.lean Modified src/group_theory/abelianization.lean Modified src/group_theory/free_abelian_group.lean Modified src/group_theory/free_group.lean Modified src/group_theory/group_action.lean Modified src/group_theory/perm/sign.lean Modified src/group_theory/quotient_group.lean Modified src/group_theory/subgroup.lean Modified src/linear_algebra/tensor_product.lean Modified src/ring_theory/localization.lean Modified src/topology/algebra/group_completion.lean Modified src/topology/algebra/uniform_group.lean Modified src/topology/algebra/uniform_ring.lean 2019-04-09 04:27:55 eb024dc feat(order/lexicographic): lexicographic pre/partial/linear orders (#820) * remove prod.(*)order instances * feat(order/lexicographic): lexicographic pre/partial/linear orders * add lex_decidable_linear_order * identical constructions for dependent pairs * cleaning up * Update lexicographic.lean forgotten `instance` * restore product instances, and add lex type synonym for lexicographic instances * proofs in progress * * define lt * prove lt_iff_le_not_le * refactoring ESTIMATED CHANGES Modified src/order/basic.lean Added src/order/lexicographic.lean + def lex 2019-04-08 22:25:36+01:00 29507a4 feat(group_theory/subgroup): subtype.add_comm_group (#903) ESTIMATED CHANGES Modified src/group_theory/subgroup.lean 2019-04-08 17:11:21 ec51b6e feat(category_theory/colimits): missing simp lemmas (#894) ESTIMATED CHANGES Modified src/category_theory/limits/limits.lean + theorem category_theory.limits.colim.ι_map_assoc + theorem category_theory.limits.colimit.ι_desc_assoc + theorem category_theory.limits.colimit.ι_post_assoc + theorem category_theory.limits.colimit.ι_pre_assoc 2019-04-08 17:49:51+02:00 6d2cf4a fix(doc/extra/tactic_writing): rename mul_left (#902) [ci skip] * fix(doc/extra/tactic_writing): rename mul_left * one more fix ESTIMATED CHANGES Modified docs/extras/tactic_writing.md 2019-04-08 12:50:22+02:00 5f1329a feat(linear_algebra/dual): add dual vector spaces (#881) * feat(linear_algebra/dual): add dual vector spaces Define dual modules and vector spaces and prove the basic theorems: the dual basis isomorphism and evaluation isomorphism in the finite dimensional case, and the corresponding (injectivity) statements in the general case. A variant of `linear_map.ker_eq_bot` and the "inverse" of `is_basis.repr_total` are included. Universe issues make an adaptation of `linear_equiv.dim_eq` necessary. * style(linear_algebra/dual): adapt to remarks from PR dsicussion * style(linear_algebra/dual): reformat proof of `ker_eq_bot'` ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.ker_eq_bot' Modified src/linear_algebra/basis.lean + theorem is_basis.repr_total Modified src/linear_algebra/dimension.lean + theorem exists_is_basis_fintype + theorem linear_equiv.dim_eq_lift Added src/linear_algebra/dual.lean + def is_basis.coord_fun + theorem is_basis.coord_fun_eq_repr + def is_basis.dual_basis + theorem is_basis.dual_basis_is_basis + theorem is_basis.dual_dim_eq + theorem is_basis.dual_lin_independent + def is_basis.eval_lc_at + def is_basis.to_dual + theorem is_basis.to_dual_apply + theorem is_basis.to_dual_eq_repr + def is_basis.to_dual_equiv + def is_basis.to_dual_flip + theorem is_basis.to_dual_inj + theorem is_basis.to_dual_ker + theorem is_basis.to_dual_range + theorem is_basis.to_dual_swap_eq_to_dual + theorem is_basis.to_dual_to_dual + def module.dual.eval + theorem module.dual.eval_apply + def module.dual + theorem vector_space.dual_dim_eq + def vector_space.eval_equiv + theorem vector_space.eval_ker + theorem vector_space.eval_range 2019-04-08 05:21:27 10490ea feat(analysis/complex/polynomial): fundamental theorem of algebra (#851) * feat(data/complex/polynomia): fundamental theorem of algebra * fix build * add docstring * add comment giving link to proof used. * spag * move to analysis/complex * fix data/real/pi * Update src/analysis/complex/polynomial.lean Co-Authored-By: ChrisHughes24 <33847686+ChrisHughes24@users.noreply.github.com> * make Reid's suggested changes * make Reid's suggested changes ESTIMATED CHANGES Renamed src/analysis/exponential.lean to src/analysis/complex/exponential.lean Added src/analysis/complex/polynomial.lean + theorem complex.exists_forall_abs_polynomial_eval_le + theorem complex.exists_root Modified src/data/real/pi.lean Modified src/topology/instances/polynomial.lean + theorem polynomial.tendsto_infinity 2019-04-07 23:05:06-04:00 4fecb10 feat(topology/gromov_hausdorff): the Gromov-Hausdorff space (#883) ESTIMATED CHANGES Added src/topology/metric_space/gromov_hausdorff.lean + def Gromov_Hausdorff.GH_dist + theorem Gromov_Hausdorff.GH_dist_eq_Hausdorff_dist + theorem Gromov_Hausdorff.GH_dist_le_Hausdorff_dist + theorem Gromov_Hausdorff.GH_dist_le_nonempty_compacts_dist + theorem Gromov_Hausdorff.GH_dist_le_of_approx_subsets + theorem Gromov_Hausdorff.GH_space.to_GH_space_rep + theorem Gromov_Hausdorff.Hausdorff_dist_optimal + def Gromov_Hausdorff.aux_gluing + structure Gromov_Hausdorff.aux_gluing_struct + theorem Gromov_Hausdorff.dist_GH_dist + theorem Gromov_Hausdorff.eq_to_GH_space + theorem Gromov_Hausdorff.eq_to_GH_space_iff + theorem Gromov_Hausdorff.second_countable + theorem Gromov_Hausdorff.to_GH_space_continuous + theorem Gromov_Hausdorff.to_GH_space_eq_to_GH_space_iff_isometric + theorem Gromov_Hausdorff.to_GH_space_lipschitz + theorem Gromov_Hausdorff.totally_bounded Added src/topology/metric_space/gromov_hausdorff_realized.lean + def Gromov_Hausdorff.HD + theorem Gromov_Hausdorff.HD_below_aux1 + theorem Gromov_Hausdorff.HD_below_aux2 + theorem Gromov_Hausdorff.HD_candidates_b_dist_le + theorem Gromov_Hausdorff.Hausdorff_dist_optimal_le_HD + def Gromov_Hausdorff.candidates + def Gromov_Hausdorff.candidates_b_dist + theorem Gromov_Hausdorff.candidates_b_dist_mem_candidates_b + def Gromov_Hausdorff.candidates_b_of_candidates + theorem Gromov_Hausdorff.candidates_b_of_candidates_mem + theorem Gromov_Hausdorff.isometry_optimal_GH_injl + theorem Gromov_Hausdorff.isometry_optimal_GH_injr + def Gromov_Hausdorff.optimal_GH_injl + def Gromov_Hausdorff.optimal_GH_injr + def Gromov_Hausdorff.premetric_optimal_GH_dist Modified src/topology/metric_space/isometry.lean + def Kuratowski_embedding.Kuratowski_embedding + theorem Kuratowski_embedding.Kuratowski_embedding_isometry + def Kuratowski_embedding.embedding_of_subset + theorem Kuratowski_embedding.embedding_of_subset_coe + theorem Kuratowski_embedding.embedding_of_subset_dist_le + theorem Kuratowski_embedding.embedding_of_subset_isometry + theorem Kuratowski_embedding.exists_isometric_embedding + def Kuratowski_embedding.nonempty_compacts.Kuratowski_embedding + def Kuratowski_embedding.ℓ_infty_ℝ 2019-04-08 02:41:50 5d81ab1 trying to work out what was wrong with catching signals (#898) ESTIMATED CHANGES Modified scripts/cache-olean.py Modified scripts/setup-dev-scripts.sh Modified scripts/update-mathlib.py 2019-04-08 01:59:38 0a49030 fix(category_theory): turn `has_limits` classes into structures (#896) * fix(category_theory): turn `has_limits` classes into structures * fixing all the other pi-type typclasses * oops ESTIMATED CHANGES Modified src/category_theory/adjunction.lean Modified src/category_theory/instances/topological_spaces.lean Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean - def category_theory.limits.has_colimits - def category_theory.limits.has_colimits_of_shape - def category_theory.limits.has_limits - def category_theory.limits.has_limits_of_shape Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean - def category_theory.limits.preserves_colimits - def category_theory.limits.preserves_colimits_of_shape - def category_theory.limits.preserves_limits - def category_theory.limits.preserves_limits_of_shape - def category_theory.limits.reflects_colimits - def category_theory.limits.reflects_colimits_of_shape - def category_theory.limits.reflects_limits - def category_theory.limits.reflects_limits_of_shape Modified src/category_theory/limits/types.lean 2019-04-07 19:36:21+02:00 483a6c2 feat(data/list/min_max): add minimum (#892) ESTIMATED CHANGES Modified src/data/list/min_max.lean + theorem list.le_minimum_aux_of_mem + theorem list.le_minimum_of_mem + theorem list.le_of_foldl_min + theorem list.le_of_foldr_min + theorem list.mem_foldl_min + theorem list.mem_foldr_min + theorem list.mem_minimum + theorem list.mem_minimum_aux + def list.minimum + def list.minimum_aux + def list.minimum_aux_cons + def list.minimum_cons + def list.minimum_singleton 2019-04-07 16:29:19 891c050 feat(subgroup, subring, subfield): directed Unions of subrings are subrings (#889) ESTIMATED CHANGES Modified src/field_theory/subfield.lean + theorem is_subfield_Union_of_directed Modified src/group_theory/subgroup.lean + theorem is_subgroup_Union_of_directed Modified src/group_theory/submonoid.lean + theorem is_add_submonoid_Union_of_directed + theorem is_submonoid_Union_of_directed Modified src/ring_theory/subring.lean + theorem is_subring_Union_of_directed 2019-04-07 10:29:26+01:00 bd524fc feat(field_theory/subfield): is_subfield instances (#891) ESTIMATED CHANGES Modified src/field_theory/subfield.lean Modified src/group_theory/submonoid.lean + theorem image.is_submonoid Modified src/ring_theory/subring.lean 2019-04-07 01:34:16 7e70ebd feat(data/nat/basic): b = c if b - a = c - a (#862) ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.sub_cancel 2019-04-06 21:04:01-04:00 3000f32 fix(build): external PRs can't use GitHub credentials ESTIMATED CHANGES Modified .travis.yml 2019-04-07 00:21:11+01:00 e4d3ca3 fix(analysis/normed_space/bounded_linear_maps): fix build (#895) ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean 2019-04-06 16:44:31-04:00 31ff5c5 refactor(analysis/normed_space/bounded_linear_maps): nondiscrete normed field ESTIMATED CHANGES Modified src/algebra/module.lean + theorem is_linear_map.map_add + theorem is_linear_map.map_neg + theorem is_linear_map.map_sub + theorem is_linear_map.map_zero Modified src/analysis/normed_space/basic.lean + theorem exists_norm_lt_one + theorem exists_one_lt_norm + theorem norm_fpow +/- theorem norm_pos_iff + theorem rescale_to_shell Modified src/analysis/normed_space/bounded_linear_maps.lean - theorem bounded_continuous_linear_map + theorem is_linear_map.bounded_of_continuous_at Modified src/data/padics/padic_numbers.lean 2019-04-06 16:20:01-04:00 53e7d72 fix(appveyor): build every commit ESTIMATED CHANGES Modified appveyor.yml 2019-04-06 16:14:28-04:00 ae8a1fb refactor(analysis/normed_space/bounded_linear_maps): nondiscrete normed field ESTIMATED CHANGES Modified src/analysis/normed_space/operator_norm.lean + theorem bdd_above_range_norm_image_div_norm - theorem bounded_by_operator_norm_on_unit_ball - theorem bounded_by_operator_norm_on_unit_vector + theorem bounded_linear_maps.coe_zero + theorem bounded_linear_maps.map_zero + theorem bounded_linear_maps.one_smul + theorem bounded_linear_maps.smul_coe + theorem bounded_linear_maps.zero_smul - theorem exists_bound' +/- theorem exists_bound - theorem norm_of_unit_ball_bdd_above +/- theorem operator_norm_bounded_by +/- theorem operator_norm_homogeneous + theorem operator_norm_homogeneous_le +/- theorem operator_norm_triangle + def to_linear_map - theorem zero_in_im_ball 2019-04-06 15:56:00-04:00 8831e0a chore(mergify): require the AppVeyor build to succeed ESTIMATED CHANGES Modified .mergify.yml 2019-04-06 15:08:22-04:00 8fa071f fix(scripts): not all files were deployed through the curl command (#879) ESTIMATED CHANGES Modified .travis.yml Modified README.md Added appveyor.yml Modified scripts/remote-install-update-mathlib.sh Modified scripts/setup-dev-scripts.sh Modified scripts/update-mathlib.py 2019-04-06 18:45:57 8d45ccb feat(category_theory/bifunctor): simp lemmas (#867) * feat(category_theory/bifunctor): simp lemmas * remove need for @, thanks Kenny and Chris! ESTIMATED CHANGES Added src/category_theory/bifunctor.lean + theorem category_theory.bifunctor.diagonal' + theorem category_theory.bifunctor.diagonal + theorem category_theory.bifunctor.map_comp_id + theorem category_theory.bifunctor.map_id + theorem category_theory.bifunctor.map_id_comp 2019-04-06 16:52:11 3360f98 more general hypotheses for integer induction (#885) ESTIMATED CHANGES Modified src/data/int/basic.lean 2019-04-06 10:59:07-04:00 d8a2bc5 feat(algebra/opposites): opposites of operators (#538) ESTIMATED CHANGES Added src/algebra/opposites.lean + def opposite.op + theorem opposite.op_inj + theorem opposite.op_unop + def opposite.unop + theorem opposite.unop_inj + theorem opposite.unop_op + def opposite 2019-04-05 14:05:35-04:00 e0e231d fix(build): match build names ESTIMATED CHANGES Modified .travis.yml 2019-04-05 13:44:34-04:00 d0f8607 fix(scripts): protect `leanpkg test` against timeouts ESTIMATED CHANGES Modified .travis.yml 2019-04-05 11:21:07-04:00 e809df6 fix(scripts): Mac Python's test support doesn't work on Travis ESTIMATED CHANGES Modified .travis.yml 2019-04-05 11:07:11-04:00 d9ec8a8 fix(scripts): not all files were deployed through the curl command ESTIMATED CHANGES Modified .travis.yml Modified README.md Modified scripts/cache-olean.py Added scripts/leanpkg-example.toml Modified scripts/remote-install-update-mathlib.sh Modified scripts/setup-dev-scripts.sh Modified scripts/update-mathlib.py 2019-04-05 14:37:35 78a08eb feat(data/mllist): monadic lazy lists (#865) * feat(data/mllist): monadic lazy lists * oops, fix header * shove into tactic namespace * make mllist into a monad (#880) * make mllist into a monad * looks good. add `take`, and some tests * update authors * cleanup test ESTIMATED CHANGES Added src/data/mllist.lean Added test/mllist.lean + def F + def S + def append 2019-04-05 06:30:13 44d1c7a feat(list.split_on): [1,1,2,3,2,4,4].split_on 2 = [[1,1],[3],[4,4]] (#866) ESTIMATED CHANGES Modified src/data/list/defs.lean + def list.split_on + def list.split_on_p + def list.split_on_p_aux 2019-04-05 06:11:40 901bdbf feat(data/list/min_max): minimum and maximum over list (#884) * feat(data/list/min_max): minimum and maximum over list * Update min_max.lean * replace semicolons ESTIMATED CHANGES Added src/data/list/min_max.lean + theorem list.le_maximum_aux_of_mem + theorem list.le_maximum_of_mem + theorem list.le_of_foldl_max + theorem list.le_of_foldr_max + def list.maximum + def list.maximum_aux + def list.maximum_aux_cons + def list.maximum_cons + def list.maximum_singleton + theorem list.mem_foldl_max + theorem list.mem_foldr_max + theorem list.mem_maximum + theorem list.mem_maximum_aux 2019-04-05 04:01:15 858d111 feat(data/matrix): more basic matrix lemmas (#873) * feat(data/matrix): more basic matrix lemmas * feat(data/matrix): transpose_add ESTIMATED CHANGES Modified src/data/matrix.lean +/- theorem matrix.add_mul +/- theorem matrix.mul_add + theorem matrix.mul_neg + theorem matrix.mul_smul +/- theorem matrix.mul_zero + theorem matrix.neg_mul + theorem matrix.smul_mul + theorem matrix.transpose_add + theorem matrix.transpose_mul + theorem matrix.transpose_neg + theorem matrix.transpose_transpose + theorem matrix.transpose_zero +/- theorem matrix.zero_mul 2019-04-05 03:14:12 0b7ee1b feat(category_theory): introduce the core of a category (#832) ESTIMATED CHANGES Added src/category_theory/core.lean + theorem category_theory.core.comp_hom + def category_theory.core.forget_functor_to_core + def category_theory.core.functor_to_core + theorem category_theory.core.id_hom + def category_theory.core.inclusion + def category_theory.core Modified src/category_theory/isomorphism.lean + theorem category_theory.functor.map_hom_inv + theorem category_theory.functor.map_inv_hom 2019-04-04 20:42:02-04:00 b6c2be4 chore(mergify): delete head branch when merging ESTIMATED CHANGES Modified .mergify.yml 2019-04-04 23:27:46 7aaccae feat(algebra/char_p,field_theory/finite_card): cardinality of finite fields (#819) * First lemma's added * fixed lemmas by switching arguments * vector_space card_fin * char p implies zmod p module * Finite field card * renaming * . * bug fix * move to_module to is_ring_hom.to_module * fix bug * remove unnecessary open * instance instead of thm and remove unnecessary variables * moved cast_is_ring_hom and zmod.to_module to char_p * removed redundent nat.prime * some char_p stuff inside namespace char_p * fix * Moved finite field card to a different file * Removed unnecessary import * Remove unnecessary lemmas * Update src/algebra/char_p.lean Co-Authored-By: CPutz * rename char_p lemmas * Minor changes ESTIMATED CHANGES Modified src/algebra/char_p.lean + theorem char_p.cast_eq_mod + theorem char_p.char_is_prime + theorem char_p.char_is_prime_of_ge_two + theorem char_p.char_is_prime_or_zero + theorem char_p.char_ne_one + theorem char_p.char_ne_zero_of_fintype + theorem char_p.char_p_to_char_zero Modified src/algebra/module.lean + def is_ring_hom.to_module Modified src/data/zmod/basic.lean + def zmod.cast Added src/field_theory/finite_card.lean + theorem finite_field.card' + theorem finite_field.card Modified src/linear_algebra/basis.lean + theorem vector_space.card_fintype' + theorem vector_space.card_fintype 2019-04-04 16:28:11-04:00 3abfda0 chore(github/pr): enable code owners ESTIMATED CHANGES Added CODEOWNERS 2019-04-04 19:04:48 8183a5a feat(data/list/perm): nil_subperm (#882) ESTIMATED CHANGES Modified src/data/list/perm.lean + theorem list.nil_subperm 2019-04-04 17:16:18 384c9be feat (analysis/normed_space/basic.lean): implement reverse triangle inequality (#831) * implement reverse triangle inequality * make parameters explicit ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem norm_reverse_triangle' + theorem norm_reverse_triangle 2019-04-04 08:21:57-04:00 07aa1e3 fix(build): fix Lean version ESTIMATED CHANGES Modified .travis.yml 2019-04-03 17:19:10-04:00 1c69b60 chore(mergify): fix config ESTIMATED CHANGES Modified .mergify.yml 2019-04-03 16:22:27-04:00 7762bc4 chore(mergify): fix config file ESTIMATED CHANGES Modified .mergify.yml 2019-04-03 16:06:06-04:00 d4fd4b2 chore(mergify): use team names instead of user names ESTIMATED CHANGES Modified .mergify.yml 2019-04-03 14:56:14-04:00 2230934 chore(mergify): disable `delete_head_branch` ESTIMATED CHANGES Modified .mergify.yml 2019-04-03 16:30:14+01:00 840ddeb fix(README): fix mergify icon ESTIMATED CHANGES Modified README.md 2019-04-03 08:38:06-04:00 542d179 chore(github/pr): mergify configuration (#871) ESTIMATED CHANGES Added .mergify.yml Modified README.md 2019-04-03 08:10:21-04:00 a0cbe3b feat(data/fin): add `fin.clamp` (#874) ESTIMATED CHANGES Modified src/data/fin.lean +/- def fin.cast + theorem fin.cast_val + def fin.clamp + theorem fin.clamp_val 2019-04-03 05:37:35-04:00 2c735dc feat(ring_theory/algebra_operations): submodules form a semiring (#856) ESTIMATED CHANGES Modified src/algebra/pointwise.lean + theorem set.pointwise_mul_finite Modified src/ring_theory/algebra_operations.lean - theorem algebra.bot_mul - theorem algebra.fg_mul - theorem algebra.mul_bot - theorem algebra.mul_le - theorem algebra.mul_le_mul - theorem algebra.mul_le_mul_left - theorem algebra.mul_le_mul_right - theorem algebra.mul_mem_mul - theorem algebra.mul_mem_mul_rev - theorem algebra.mul_sup - theorem algebra.span_mul_span - theorem algebra.sup_mul + theorem submodule.bot_mul + theorem submodule.mul_bot + theorem submodule.mul_le + theorem submodule.mul_le_mul + theorem submodule.mul_le_mul_left + theorem submodule.mul_le_mul_right + theorem submodule.mul_mem_mul + theorem submodule.mul_mem_mul_rev + theorem submodule.mul_sup + theorem submodule.one_eq_map_top + theorem submodule.one_eq_span + theorem submodule.one_le + theorem submodule.span_mul_span + theorem submodule.sup_mul Modified src/ring_theory/ideal_operations.lean +/- theorem ideal.one_eq_top +/- theorem submodule.bot_smul +/- theorem submodule.smul_bot +/- theorem submodule.top_smul Modified src/ring_theory/noetherian.lean + theorem submodule.fg_mul 2019-04-03 05:35:05-04:00 b9e9328 feat(topology/metric_space/completion): completion of metric spaces (#743) ESTIMATED CHANGES Added src/topology/metric_space/completion.lean + theorem metric.completion.coe_isometry 2019-04-03 09:38:15+02:00 c3aba26 feat(topology/uniform_space/pi): indexed products of uniform spaces (#845) * feat(topology/uniform_space/pi): indexed products of uniform spaces * fix(topology/uniform_space/pi): defeq topology * fix(src/topology/uniform_space/pi): typo Co-Authored-By: PatrickMassot ESTIMATED CHANGES Modified src/topology/uniform_space/basic.lean +/- theorem uniformity_prod Added src/topology/uniform_space/pi.lean + theorem Pi.uniform_continuous_proj + theorem Pi.uniform_space_topology + theorem Pi.uniformity 2019-04-03 02:27:59-04:00 7043a4a feat(algebra/pointwise): pointwise addition and multiplication of sets (#854) ESTIMATED CHANGES Added src/algebra/pointwise.lean + theorem set.empty_pointwise_mul + theorem set.mem_pointwise_mul + theorem set.mem_pointwise_one + theorem set.mul_mem_pointwise_mul + def set.pointwise_add_add_monoid + def set.pointwise_add_add_semigroup + def set.pointwise_inv + def set.pointwise_mul + def set.pointwise_mul_comm_semiring + theorem set.pointwise_mul_empty + theorem set.pointwise_mul_eq_image + def set.pointwise_mul_monoid + def set.pointwise_mul_semigroup + def set.pointwise_mul_semiring + theorem set.pointwise_mul_subset_mul + theorem set.pointwise_mul_union + def set.pointwise_one + def set.singleton.is_monoid_hom + def set.singleton.is_mul_hom + theorem set.union_pointwise_mul 2019-04-02 21:14:02-04:00 f112076 feat(tactic/basic): add `tactic.get_goal` (#876) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-04-02 20:45:14-04:00 e96d6b7 fix(int/basic): change order of instances to int.cast (#877) As discussed at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Problem.20with.20type.20class.20search/near/161848744 Changing the order of arguments lets type class inference fail quickly for `int -> nat` coercions, rather than repeatedly looking for `has_neg` on `nat`. ESTIMATED CHANGES Modified src/data/int/basic.lean 2019-04-02 18:34:18-04:00 ce92e8a chore(.travis.yml): use Lean to determine the Lean version (#714) ESTIMATED CHANGES Modified .travis.yml Added scripts/lean_version.lean + def lean_version_string_core + def main Deleted scripts/lean_version.py 2019-04-02 18:33:34-04:00 6c55989 build(travis): interrupt the build at the first error message (#708) Also make travis_long.sh print its progress messages to stderr. This sidesteps a mysterious issue where piping the output of travis_long.sh to another program caused that output to be lost (probably buffered somewhere?) so Travis would kill the build after 10 minutes. ESTIMATED CHANGES Modified .travis.yml Added scripts/detect_errors.py Modified travis_long.sh 2019-04-02 11:22:44-04:00 13034ba feat(tactic/local_cache): add tactic-block-local caching mechanism (#837) ESTIMATED CHANGES Modified src/meta/expr.lean + def name.from_components Modified src/tactic/basic.lean Added src/tactic/local_cache.lean + def tactic.local_cache.internal.def_local.FNV_OFFSET_BASIS + def tactic.local_cache.internal.def_local.FNV_PRIME + def tactic.local_cache.internal.def_local.RADIX + def tactic.local_cache.internal.def_local.hash_byte + def tactic.local_cache.internal.def_local.hash_string Added test/local_cache.lean + def block_local.TEST_NS_1 + def block_local.TEST_NS_2 + structure block_local.dummy + def block_local.my_def_1 + def block_local.my_def_2 + def block_local.my_definition' + def block_local.my_definition + theorem block_local.my_lemma' + theorem block_local.my_lemma + theorem block_local.my_lemma_1 + theorem block_local.my_lemma_2 + theorem block_local.my_lemma_3 + theorem block_local.my_test_ns + theorem block_local.my_test_ps + def collision.TEST_NS + theorem collision.my_lemma_1 + theorem collision.my_lemma_2 + theorem collision.my_lemma_3 + theorem collision.my_lemma_4 + def def_local.TEST_NS_1 + def def_local.TEST_NS_2 + structure def_local.dummy + def def_local.my_def_1 + def def_local.my_def_2 + def def_local.my_definition' + def def_local.my_definition + theorem def_local.my_lemma' + theorem def_local.my_lemma + theorem def_local.my_lemma_1 + theorem def_local.my_lemma_2 + theorem def_local.my_lemma_3 + theorem def_local.my_test_ns + theorem def_local.my_test_ps 2019-04-02 10:44:43-04:00 7eac178 fix(scripts/update-mathlib): protect file operations from interrupts (#864) ESTIMATED CHANGES Modified .gitignore Added scripts/auth_github.py Modified scripts/cache-olean.py Added scripts/delayed_interrupt.py Modified scripts/setup-dev-scripts.sh Modified scripts/update-mathlib.py 2019-04-02 08:23:50-05:00 f385ad6 Inductive limit of metric spaces (#732) ESTIMATED CHANGES Modified src/topology/metric_space/gluing.lean + def metric.inductive_limit + def metric.inductive_limit_dist + theorem metric.inductive_limit_dist_eq_dist + def metric.inductive_premetric + def metric.to_inductive_limit + theorem metric.to_inductive_limit_commute + theorem metric.to_inductive_limit_isometry 2019-04-02 07:57:52-04:00 727120c fix(build): improve compatibility of caching scripts with Sourcetree (#863) ESTIMATED CHANGES Modified scripts/post-checkout Modified scripts/post-commit 2019-04-01 20:04:58-05:00 5694d15 feat(data/nat/basic): nat.le_rec_on (#585) ESTIMATED CHANGES Modified src/data/nat/basic.lean + def nat.le_rec_on + theorem nat.le_rec_on_injective + theorem nat.le_rec_on_self + theorem nat.le_rec_on_succ' + theorem nat.le_rec_on_succ + theorem nat.le_rec_on_surjective + theorem nat.le_rec_on_trans + theorem nat.of_le_succ 2019-04-01 18:55:36-04:00 8e4542d Merge branch 'congr-2' ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/interactive.lean Added src/tactic/push_neg.lean + theorem push_neg.classical.implies_iff_not_or + theorem push_neg.not_and_eq + theorem push_neg.not_eq + theorem push_neg.not_exists_eq + theorem push_neg.not_forall_eq + theorem push_neg.not_implies_eq + theorem push_neg.not_le_eq + theorem push_neg.not_lt_eq + theorem push_neg.not_not_eq + theorem push_neg.not_or_eq Added test/push_neg.lean 2019-04-01 18:52:21-04:00 ec0a4ea fix(tactic/congr'): some `\iff` goals were erroneously rejected ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/interactive.lean Deleted src/tactic/push_neg.lean - theorem push_neg.classical.implies_iff_not_or - theorem push_neg.not_and_eq - theorem push_neg.not_eq - theorem push_neg.not_exists_eq - theorem push_neg.not_forall_eq - theorem push_neg.not_implies_eq - theorem push_neg.not_le_eq - theorem push_neg.not_lt_eq - theorem push_neg.not_not_eq - theorem push_neg.not_or_eq Deleted test/push_neg.lean 2019-04-01 16:48:53-04:00 5fe470b feat(tactic/push_neg): a tactic pushing negations (#853) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/interactive.lean Added src/tactic/push_neg.lean + theorem push_neg.classical.implies_iff_not_or + theorem push_neg.not_and_eq + theorem push_neg.not_eq + theorem push_neg.not_exists_eq + theorem push_neg.not_forall_eq + theorem push_neg.not_implies_eq + theorem push_neg.not_le_eq + theorem push_neg.not_lt_eq + theorem push_neg.not_not_eq + theorem push_neg.not_or_eq Added test/push_neg.lean 2019-04-01 16:21:09-04:00 5995d46 fix(build): prevent leanchecker from timing out ESTIMATED CHANGES Modified .travis.yml 2019-04-01 16:13:58-04:00 2f088fc feat(category_theory): working in Sort rather than Type (#824) ESTIMATED CHANGES Modified src/category_theory/adjunction.lean Modified src/category_theory/category.lean +/- theorem category_theory.End.mul_def +/- theorem category_theory.End.one_def +/- def category_theory.large_category +/- def category_theory.small_category Modified src/category_theory/comma.lean +/- def category_theory.over +/- def category_theory.under Modified src/category_theory/concrete_category.lean +/- structure category_theory.bundled +/- def category_theory.forget +/- def category_theory.mk_ob Modified src/category_theory/const.lean Modified src/category_theory/discrete_category.lean Modified src/category_theory/eq_to_hom.lean Modified src/category_theory/equivalence.lean +/- structure category_theory.equivalence Modified src/category_theory/full_subcategory.lean +/- def category_theory.induced_category Modified src/category_theory/fully_faithful.lean Modified src/category_theory/functor.lean +/- structure category_theory.functor Modified src/category_theory/functor_category.lean Modified src/category_theory/groupoid.lean +/- def category_theory.large_groupoid +/- def category_theory.small_groupoid Modified src/category_theory/instances/monoids.lean Added src/category_theory/instances/rel.lean + def category_theory.rel Modified src/category_theory/isomorphism.lean +/- structure category_theory.iso Modified src/category_theory/limits/cones.lean + theorem category_theory.limits.cocone.extend_ι + theorem category_theory.limits.cone.extend_π Modified src/category_theory/limits/functor_category.lean Modified src/category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.map_post +/- theorem category_theory.limits.colimit.pre_post +/- def category_theory.limits.is_colimit.of_faithful +/- def category_theory.limits.is_limit.of_faithful +/- theorem category_theory.limits.limit.map_post +/- theorem category_theory.limits.limit.pre_post Modified src/category_theory/limits/over.lean Modified src/category_theory/limits/preserves.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/natural_transformation.lean +/- structure category_theory.nat_trans Modified src/category_theory/opposites.lean +/- theorem category_theory.functor.hom_obj +/- theorem category_theory.functor.hom_pairing_map +/- theorem category_theory.opposite.op_mul +/- theorem category_theory.opposite.op_one +/- theorem category_theory.opposite.unop_mul +/- theorem category_theory.opposite.unop_one +/- def category_theory.opposite Modified src/category_theory/pempty.lean Modified src/category_theory/products.lean Modified src/category_theory/punit.lean Modified src/category_theory/types.lean +/- theorem category_theory.types_comp +/- theorem category_theory.types_hom +/- theorem category_theory.types_id Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean +/- def category_theory.coyoneda +/- def category_theory.yoneda 2019-04-01 22:07:28+02:00 404e2c9 add tutorial about zmod37 (#767) Reference to a mathlib file which no longer exists has been fixed, and a more user-friendly example of an equivalence relation has been added in a tutorial. ESTIMATED CHANGES Modified docs/theories/relations.md Added docs/tutorial/Zmod37.lean + theorem Zmod37.coe_add + theorem Zmod37.coe_mul + theorem Zmod37.coe_neg + theorem Zmod37.congr_add + theorem Zmod37.congr_neg + theorem Zmod37.of_int_one + theorem Zmod37.of_int_zero + theorem cong_mod_equiv + theorem cong_mod_refl + theorem cong_mod_symm + theorem cong_mod_trans 2019-04-01 21:58:17+02:00 867661e docs(tactics): add introduction to the instance cache tactic section ESTIMATED CHANGES Modified docs/tactics.md 2019-04-01 21:55:31+02:00 59e0593 docs(tactics): minor rewrite of exactI, resetI etc I always found these tactics confusing, but I finally figured out what they do and so I rewrote the docs so that I understand them better. ESTIMATED CHANGES Modified docs/tactics.md 2019-04-01 15:08:22-04:00 a1fe39b refactor(analysis/convex): make instance local (#869) ESTIMATED CHANGES Modified src/analysis/convex.lean 2019-04-01 14:48:06-04:00 3bc0f00 fix(scripts/cache-olean): only run the post-checkout hook if we actually changed branches (#857) ESTIMATED CHANGES Modified scripts/post-checkout 2019-04-01 03:01:21-04:00 2851236 feat(data/real/pi): Compute the first three digits of pi (#822) ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem pow_lt_pow Modified src/analysis/exponential.lean + theorem real.sin_gt_sub_cube + theorem real.sin_lt Modified src/data/complex/basic.lean + theorem complex.div_im + theorem complex.div_re Modified src/data/complex/exponential.lean + theorem complex.cos_square + theorem complex.sin_square + theorem real.cos_square + theorem real.sin_square Modified src/data/real/basic.lean +/- theorem real.le_mk_of_forall_le + theorem real.le_sqrt' + theorem real.le_sqrt + theorem real.le_sqrt_of_sqr_le +/- theorem real.mul_self_sqrt +/- theorem real.sqr_sqrt +/- theorem real.sqrt_div +/- theorem real.sqrt_eq_iff_mul_self_eq +/- theorem real.sqrt_eq_iff_sqr_eq +/- theorem real.sqrt_eq_zero' +/- theorem real.sqrt_eq_zero +/- theorem real.sqrt_eq_zero_of_nonpos +/- theorem real.sqrt_inj +/- theorem real.sqrt_le + theorem real.sqrt_le_left + theorem real.sqrt_le_sqrt +/- theorem real.sqrt_lt +/- theorem real.sqrt_mul +/- theorem real.sqrt_mul_self +/- theorem real.sqrt_pos +/- theorem real.sqrt_sqr Added src/data/real/pi.lean + theorem real.cos_pi_div_eight + theorem real.cos_pi_div_four + theorem real.cos_pi_div_sixteen + theorem real.cos_pi_div_thirty_two + theorem real.cos_pi_over_two_pow + theorem real.pi_gt_314 + theorem real.pi_gt_sqrt_two_add_series + theorem real.pi_gt_three + theorem real.pi_lt_315 + theorem real.pi_lt_sqrt_two_add_series + theorem real.sin_pi_div_eight + theorem real.sin_pi_div_four + theorem real.sin_pi_div_sixteen + theorem real.sin_pi_div_thirty_two + theorem real.sin_pi_over_two_pow_succ + theorem real.sin_square_pi_over_two_pow + theorem real.sin_square_pi_over_two_pow_succ + theorem real.sqrt_two_add_series_lt_two + theorem real.sqrt_two_add_series_monotone_left + theorem real.sqrt_two_add_series_nonneg + theorem real.sqrt_two_add_series_one + theorem real.sqrt_two_add_series_step_down + theorem real.sqrt_two_add_series_step_up + theorem real.sqrt_two_add_series_succ + theorem real.sqrt_two_add_series_two + theorem real.sqrt_two_add_series_zero + theorem real.sqrt_two_add_series_zero_nonneg 2019-03-31 21:33:03+02:00 c91e6c2 fix(ring_theory/algebra): remove duplicate theorems to fix build ESTIMATED CHANGES Modified src/ring_theory/algebra.lean - theorem complex.smul_im: - theorem complex.smul_re: 2019-03-31 08:35:59-04:00 9480df5 refactor(computability): unpack fixed_point proof ESTIMATED CHANGES Modified src/computability/partrec_code.lean 2019-03-31 08:35:21-04:00 359cac1 feat(computability): computable_iff_re_compl_re ESTIMATED CHANGES Modified src/computability/halting.lean + theorem computable_pred.computable_iff + theorem computable_pred.computable_iff_re_compl_re + theorem computable_pred.to_re 2019-03-31 08:32:21-04:00 514de77 feat(data/finset): to_finset_eq_empty ESTIMATED CHANGES Modified src/data/finset.lean + theorem multiset.to_finset_eq_empty Modified src/data/multiset.lean + theorem multiset.erase_dup_eq_zero 2019-03-31 08:31:39-04:00 72634d2 feat(data/complex/basic): smul_re,im ESTIMATED CHANGES Modified src/data/complex/basic.lean + theorem complex.smul_im + theorem complex.smul_re 2019-03-31 00:48:41 e1c035d feat(data/polynomial): eval₂_neg ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.eval₂_neg + theorem polynomial.eval₂_sub 2019-03-29 23:56:28 c2bb4c5 refactor(data/zsqrtd/basic): move zsqrtd out of pell and into data (#861) ESTIMATED CHANGES Added src/data/zsqrtd/basic.lean + def zsqrtd.add + theorem zsqrtd.add_def + theorem zsqrtd.add_im + theorem zsqrtd.add_re + theorem zsqrtd.bit0_im + theorem zsqrtd.bit0_re + theorem zsqrtd.bit1_im + theorem zsqrtd.bit1_re + theorem zsqrtd.coe_int_im + theorem zsqrtd.coe_int_re + theorem zsqrtd.coe_int_val + theorem zsqrtd.coe_nat_im + theorem zsqrtd.coe_nat_re + theorem zsqrtd.coe_nat_val + def zsqrtd.conj + theorem zsqrtd.conj_im + theorem zsqrtd.conj_mul + theorem zsqrtd.conj_re + theorem zsqrtd.d_pos + theorem zsqrtd.decompose + theorem zsqrtd.divides_sq_eq_zero + theorem zsqrtd.divides_sq_eq_zero_z + theorem zsqrtd.ext + theorem zsqrtd.le_antisymm + theorem zsqrtd.le_arch + theorem zsqrtd.le_of_le_le + theorem zsqrtd.le_refl + def zsqrtd.mul + theorem zsqrtd.mul_conj + theorem zsqrtd.mul_im + theorem zsqrtd.mul_re + theorem zsqrtd.muld_val + def zsqrtd.neg + theorem zsqrtd.neg_im + theorem zsqrtd.neg_re + def zsqrtd.nonneg + theorem zsqrtd.nonneg_add + theorem zsqrtd.nonneg_add_lem + theorem zsqrtd.nonneg_antisymm + theorem zsqrtd.nonneg_cases + theorem zsqrtd.nonneg_iff_zero_le + theorem zsqrtd.nonneg_mul + theorem zsqrtd.nonneg_mul_lem + theorem zsqrtd.nonneg_muld + theorem zsqrtd.nonneg_smul + def zsqrtd.nonnegg + theorem zsqrtd.nonnegg_cases_left + theorem zsqrtd.nonnegg_cases_right + theorem zsqrtd.nonnegg_comm + theorem zsqrtd.nonnegg_neg_pos + theorem zsqrtd.nonnegg_pos_neg + def zsqrtd.norm + theorem zsqrtd.norm_eq_mul_conj + theorem zsqrtd.norm_eq_one_iff + theorem zsqrtd.norm_int_cast + theorem zsqrtd.norm_mul + theorem zsqrtd.norm_nat_cast + theorem zsqrtd.norm_nonneg + theorem zsqrtd.norm_one + theorem zsqrtd.norm_zero + theorem zsqrtd.not_divides_square + theorem zsqrtd.not_sq_le_succ + def zsqrtd.of_int + theorem zsqrtd.of_int_eq_coe + theorem zsqrtd.of_int_im + theorem zsqrtd.of_int_re + def zsqrtd.one + theorem zsqrtd.one_im + theorem zsqrtd.one_re + theorem zsqrtd.smul_val + theorem zsqrtd.smuld_val + def zsqrtd.sq_le + theorem zsqrtd.sq_le_add + theorem zsqrtd.sq_le_add_mixed + theorem zsqrtd.sq_le_cancel + theorem zsqrtd.sq_le_mul + theorem zsqrtd.sq_le_of_le + theorem zsqrtd.sq_le_smul + def zsqrtd.sqrtd + theorem zsqrtd.sqrtd_im + theorem zsqrtd.sqrtd_re + def zsqrtd.zero + theorem zsqrtd.zero_im + theorem zsqrtd.zero_re + structure zsqrtd Renamed src/data/gaussian_int.lean to src/data/zsqrtd/gaussian_int.lean Modified src/number_theory/pell.lean - def zsqrtd.add - theorem zsqrtd.add_def - theorem zsqrtd.add_im - theorem zsqrtd.add_re - theorem zsqrtd.bit0_im - theorem zsqrtd.bit0_re - theorem zsqrtd.bit1_im - theorem zsqrtd.bit1_re - theorem zsqrtd.coe_int_im - theorem zsqrtd.coe_int_re - theorem zsqrtd.coe_int_val - theorem zsqrtd.coe_nat_im - theorem zsqrtd.coe_nat_re - theorem zsqrtd.coe_nat_val - def zsqrtd.conj - theorem zsqrtd.conj_im - theorem zsqrtd.conj_mul - theorem zsqrtd.conj_re - theorem zsqrtd.d_pos - theorem zsqrtd.decompose - theorem zsqrtd.divides_sq_eq_zero - theorem zsqrtd.divides_sq_eq_zero_z - theorem zsqrtd.ext - theorem zsqrtd.le_antisymm - theorem zsqrtd.le_arch - theorem zsqrtd.le_of_le_le - theorem zsqrtd.le_refl - def zsqrtd.mul - theorem zsqrtd.mul_conj - theorem zsqrtd.mul_im - theorem zsqrtd.mul_re - theorem zsqrtd.muld_val - def zsqrtd.neg - theorem zsqrtd.neg_im - theorem zsqrtd.neg_re - def zsqrtd.nonneg - theorem zsqrtd.nonneg_add - theorem zsqrtd.nonneg_add_lem - theorem zsqrtd.nonneg_antisymm - theorem zsqrtd.nonneg_cases - theorem zsqrtd.nonneg_iff_zero_le - theorem zsqrtd.nonneg_mul - theorem zsqrtd.nonneg_mul_lem - theorem zsqrtd.nonneg_muld - theorem zsqrtd.nonneg_smul - def zsqrtd.nonnegg - theorem zsqrtd.nonnegg_cases_left - theorem zsqrtd.nonnegg_cases_right - theorem zsqrtd.nonnegg_comm - theorem zsqrtd.nonnegg_neg_pos - theorem zsqrtd.nonnegg_pos_neg - def zsqrtd.norm - theorem zsqrtd.norm_eq_mul_conj - theorem zsqrtd.norm_eq_one_iff - theorem zsqrtd.norm_int_cast - theorem zsqrtd.norm_mul - theorem zsqrtd.norm_nat_cast - theorem zsqrtd.norm_nonneg - theorem zsqrtd.norm_one - theorem zsqrtd.norm_zero - theorem zsqrtd.not_divides_square - theorem zsqrtd.not_sq_le_succ - def zsqrtd.of_int - theorem zsqrtd.of_int_eq_coe - theorem zsqrtd.of_int_im - theorem zsqrtd.of_int_re - def zsqrtd.one - theorem zsqrtd.one_im - theorem zsqrtd.one_re - theorem zsqrtd.smul_val - theorem zsqrtd.smuld_val - def zsqrtd.sq_le - theorem zsqrtd.sq_le_add - theorem zsqrtd.sq_le_add_mixed - theorem zsqrtd.sq_le_cancel - theorem zsqrtd.sq_le_mul - theorem zsqrtd.sq_le_of_le - theorem zsqrtd.sq_le_smul - def zsqrtd.sqrtd - theorem zsqrtd.sqrtd_im - theorem zsqrtd.sqrtd_re - def zsqrtd.zero - theorem zsqrtd.zero_im - theorem zsqrtd.zero_re - structure zsqrtd Modified src/number_theory/sum_two_squares.lean 2019-03-29 15:03:34-05:00 dc7de46 feat(analysis/convex): convex sets and functions (#834) ESTIMATED CHANGES Modified src/algebra/module.lean + theorem is_linear_map.is_linear_map_neg + theorem is_linear_map.is_linear_map_smul' + theorem is_linear_map.is_linear_map_smul Added src/analysis/convex.lean + def convex + theorem convex_Icc + theorem convex_Ici + theorem convex_Ico + theorem convex_Iic + theorem convex_Iio + theorem convex_Inter + theorem convex_Ioc + theorem convex_Ioi + theorem convex_Ioo + theorem convex_add + theorem convex_affinity + theorem convex_ball + theorem convex_closed_ball + theorem convex_empty + theorem convex_halfplane + theorem convex_halfspace_ge + theorem convex_halfspace_gt + theorem convex_halfspace_im_gt + theorem convex_halfspace_im_le + theorem convex_halfspace_im_lge + theorem convex_halfspace_im_lt + theorem convex_halfspace_le + theorem convex_halfspace_lt + theorem convex_halfspace_re_gt + theorem convex_halfspace_re_le + theorem convex_halfspace_re_lge + theorem convex_halfspace_re_lt + theorem convex_iff: + theorem convex_iff_div: + theorem convex_inter + theorem convex_le_of_convex_on + theorem convex_linear_image' + theorem convex_linear_image + theorem convex_linear_preimage' + theorem convex_linear_preimage + theorem convex_lt_of_convex_on + theorem convex_neg + theorem convex_neg_preimage + def convex_on + theorem convex_on_add + theorem convex_on_dist + theorem convex_on_iff + theorem convex_on_iff_div: + theorem convex_on_linorder + theorem convex_on_smul + theorem convex_on_subset + theorem convex_on_sum + theorem convex_prod + theorem convex_segment + theorem convex_segment_iff + theorem convex_singleton + theorem convex_smul + theorem convex_smul_preimage + theorem convex_sub + theorem convex_sum + theorem convex_sum_iff + theorem convex_translation + theorem convex_univ + theorem le_on_interval_of_convex_on + theorem left_mem_segment + theorem mem_segment_iff' + theorem mem_segment_iff + theorem right_mem_segment + def segment + theorem segment_eq_Icc + theorem segment_symm + theorem segment_translate + theorem segment_translate_image Modified src/data/set/intervals.lean + theorem set.image_neg_Iic + theorem set.image_neg_Iio Modified src/linear_algebra/basic.lean + theorem is_linear_map.is_linear_map_add + theorem is_linear_map.is_linear_map_sub Modified src/ring_theory/algebra.lean + theorem complex.smul_im: + theorem complex.smul_re: 2019-03-29 13:08:29-04:00 171e913 fix(scripts/remote-install-update-mathlib): add GitPython dependency (#860) ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh 2019-03-28 22:56:01-04:00 2e7f009 fix(scripts/deploy_nightly): pushing to the `lean-3.4.2` branch is sometimes blocked (#859) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2019-03-28 22:11:15-04:00 a4fd55c feat(library_search): a simple library_search function (#839) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/interactive.lean Added src/tactic/library_search.lean + def tactic.library_search.head_symbol_match.to_string + inductive tactic.library_search.head_symbol_match Added test/library_search/basic.lean Added test/library_search/ring_theory.lean 2019-03-28 20:04:39-04:00 59caf11 fix(scripts/update-mathlib): fix imports of python files ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-03-28 19:11:34-04:00 6cd336c fix(scripts/update-mathlib): github authentication ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-03-28 16:32:00-04:00 1c04a32 fix(scripts/update-mathlib): update-mathlib shouldn't need github authentication ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-03-28 14:01:35-04:00 48df321 feat(category_theory/instances): category of groups (#749) ESTIMATED CHANGES Added src/category_theory/instances/groups.lean + def category_theory.instances.AddCommGroup.forget_to_Group + def category_theory.instances.AddCommGroup + def category_theory.instances.Group + def category_theory.instances.is_add_comm_group_hom 2019-03-28 16:25:01 179d4d0 refactor(*): unify group/monoid_action, make semimodule extend action (#850) * refactor(*): unify group/monoid_action, use standard names, make semimodule extend action * Rename action to mul_action * Generalize lemmas. Also, add class for multiplicative action on additive structure * Add pi-instances * Dirty hacky fix * Remove #print and set_option pp.all * clean up proof, avoid diamonds * Fix some build issues * Fix build * Rename mul_action_add to distrib_mul_action * Bump up the type class search depth in some places ESTIMATED CHANGES Modified src/algebra/module.lean - theorem mul_smul - theorem one_smul - theorem smul_add - theorem smul_zero Modified src/algebra/pi_instances.lean Modified src/analysis/asymptotics.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/deriv.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/field_theory/mv_polynomial.lean Modified src/group_theory/group_action.lean - theorem group_action.bijective - def group_action.comp_hom - def group_action.mul_left_cosets - theorem group_action.orbit_eq_iff - def group_action.orbit_rel - def group_action.to_perm - def monoid_action.comp_hom - def monoid_action.fixed_points - theorem monoid_action.mem_fixed_points' - theorem monoid_action.mem_fixed_points - theorem monoid_action.mem_orbit - theorem monoid_action.mem_orbit_iff - theorem monoid_action.mem_orbit_self - theorem monoid_action.mem_stabilizer_iff - def monoid_action.orbit - def monoid_action.stabilizer + theorem mul_action.bijective + def mul_action.comp_hom + def mul_action.fixed_points + theorem mul_action.mem_fixed_points' + theorem mul_action.mem_fixed_points + theorem mul_action.mem_orbit + theorem mul_action.mem_orbit_iff + theorem mul_action.mem_orbit_self + theorem mul_action.mem_stabilizer_iff + def mul_action.mul_left_cosets + def mul_action.orbit + theorem mul_action.orbit_eq_iff + def mul_action.orbit_rel + def mul_action.stabilizer + def mul_action.to_perm + theorem mul_smul + theorem one_smul + theorem smul_add + theorem smul_zero Modified src/group_theory/sylow.lean - theorem group_action.card_modeq_card_fixed_points - theorem group_action.mem_fixed_points_iff_card_orbit_eq_one + theorem mul_action.card_modeq_card_fixed_points + theorem mul_action.mem_fixed_points_iff_card_orbit_eq_one Modified src/linear_algebra/basic.lean Modified src/linear_algebra/basis.lean Modified src/linear_algebra/finsupp.lean Modified src/ring_theory/algebra.lean 2019-03-27 21:28:39-04:00 25bab56 feat(scripts/cache_olean): cache and fetch olean binaries (#766) * script setup and documentation * fetch mathlib nightly when relevant * use credentials to access `github.com` * locate correct git directory, and add prompt * add confirmation message to setup-dev-scripts * adding --build-all option ESTIMATED CHANGES Modified .gitignore Modified README.md Modified docs/howto-contribute.md Added scripts/cache-olean.py Added scripts/post-checkout Added scripts/post-commit Modified scripts/remote-install-update-mathlib.sh Added scripts/setup-dev-scripts.sh Added scripts/setup-lean-git-hooks.sh Deleted scripts/setup-update-mathlib.sh Modified scripts/update-mathlib.py 2019-03-27 21:47:02+01:00 8838ff3 feat(algebra/field_power): add fpow_one, one_fpow, fpow_mul, mul_fpow (closes #855) ESTIMATED CHANGES Modified src/algebra/field.lean +/- theorem inv_eq_zero + theorem neg_inv' + theorem units.mk0_coe Modified src/algebra/field_power.lean + theorem fpow_mul + theorem fpow_one + theorem mul_fpow + theorem one_fpow 2019-03-27 20:15:04+01:00 8429354 feat(analysis): add real.rpow_le_one ESTIMATED CHANGES Modified src/analysis/exponential.lean + theorem real.rpow_le_one 2019-03-27 20:15:04+01:00 4305ad6 feat(analysis): add rpow_pos_of_pos ESTIMATED CHANGES Modified src/analysis/exponential.lean + theorem real.rpow_pos_of_pos 2019-03-27 09:57:35-05:00 02ca494 Remove outparam in normed space (#844) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean +/- theorem is_bounded_linear_map.continuous +/- theorem is_bounded_linear_map.id +/- theorem is_bounded_linear_map.is_O_comp +/- theorem is_bounded_linear_map.is_O_id +/- theorem is_bounded_linear_map.is_O_sub +/- theorem is_bounded_linear_map.lim_zero_bounded_linear_map +/- theorem is_bounded_linear_map.neg +/- theorem is_bounded_linear_map.smul +/- theorem is_bounded_linear_map.sub +/- theorem is_bounded_linear_map.tendsto +/- def is_bounded_linear_map.to_linear_map +/- theorem is_bounded_linear_map.zero +/- structure is_bounded_linear_map Modified src/analysis/normed_space/deriv.lean +/- theorem has_fderiv_at.is_o +/- theorem has_fderiv_at_filter_id +/- theorem has_fderiv_at_id +/- theorem has_fderiv_at_within_id Modified src/analysis/normed_space/operator_norm.lean 2019-03-27 08:20:35-04:00 52fddda feat(algebra/archimedean): lemmas about powers of elements (#802) ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem exists_int_pow_near + theorem exists_nat_pow_near 2019-03-26 16:35:47-05:00 17e40bb feat(tactic/congr): apply to `iff` propositions (#833) ESTIMATED CHANGES Modified src/tactic/interactive.lean Modified test/tactics.lean 2019-03-26 21:53:30+01:00 c3a9028 fix(data/polynomial): (nat_)degree_map' assumed a comm_ring instead of a comm_semiring ESTIMATED CHANGES Modified src/data/polynomial.lean 2019-03-26 19:07:18+01:00 a016652 feat(data/finset): add range_add_one' ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.range_add_one' 2019-03-26 19:07:18+01:00 0ea37e9 feat(algebra/big_operators): add prod_map, sum_map ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_map 2019-03-26 19:07:18+01:00 d3c68fc feat(analysis/normed_space): tendsto_zero_iff_norm_tendsto_zero ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean +/- theorem continuous_norm +/- theorem lim_norm +/- theorem lim_norm_zero + theorem tendsto_zero_iff_norm_tendsto_zero 2019-03-26 19:07:18+01:00 df08058 refactor(analysis/normed_space): rename norm_mul -> norm_mul_le; use norm_mul for the equality in normed fields; and norm_mul_le for the inequality in normed_rings ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/normed_space/basic.lean +/- theorem norm_mul + theorem norm_mul_le +/- theorem norm_pow + theorem norm_pow_le + theorem norm_prod - theorem normed_field.norm_pow Modified src/data/complex/basic.lean + theorem complex.abs_of_nat Modified src/data/padics/padic_integers.lean 2019-03-26 18:22:00+01:00 bd21b0e feat(analyis/normed_space): add normed_field instance for ℂ ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem complex.norm_int + theorem complex.norm_int_of_nonneg + theorem complex.norm_nat + theorem complex.norm_rat + theorem complex.norm_real 2019-03-26 18:22:00+01:00 a01cf86 feat(data/multiset,data/finset): add multiset./finset.le_sum_of_additive ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem finset.abs_sum_le_sum_abs + theorem finset.le_sum_of_subadditive Modified src/analysis/normed_space/basic.lean +/- theorem norm_triangle_sum Modified src/data/multiset.lean + theorem multiset.abs_sum_le_sum_abs + theorem multiset.le_sum_of_subadditive 2019-03-26 18:22:00+01:00 c912253 feat(algebra/group_power): add lt_of_pow_lt_pow ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem lt_of_pow_lt_pow +/- theorem pow_le_pow_of_le_left 2019-03-26 18:22:00+01:00 fd37f96 feat(data/fin): add injective_cast_le ESTIMATED CHANGES Modified src/data/fin.lean + theorem fin.injective_cast_le 2019-03-26 18:22:00+01:00 c0c2edb feat(algebra/big_operators): add Gauss' summation formula ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.sum_range_id + theorem finset.sum_range_id_mul_two 2019-03-26 18:22:00+01:00 cfeb887 feat(data/polynomial): degree_map', nat_degree_map' semiring variant of degree_map, nat_degree_map ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_map' + theorem polynomial.nat_degree_map' 2019-03-26 18:22:00+01:00 aa2c6e2 feat(data/mv_polynomial): more about renaming ESTIMATED CHANGES Modified src/data/mv_polynomial.lean + theorem mv_polynomial.injective_rename + theorem mv_polynomial.rename_eq + theorem mv_polynomial.rename_monomial + theorem mv_polynomial.total_degree_rename_le 2019-03-26 18:22:00+01:00 5b73f46 chore(data/mv_polynomial): use type name as filename ESTIMATED CHANGES Modified src/category_theory/instances/rings.lean Renamed src/data/multivariate_polynomial.lean to src/data/mv_polynomial.lean Modified src/linear_algebra/finsupp.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/polynomial.lean 2019-03-26 18:22:00+01:00 8ccca3f feat(data/finsupp): add emb_domain ESTIMATED CHANGES Modified src/data/finsupp.lean + def finsupp.emb_domain + theorem finsupp.emb_domain_apply + theorem finsupp.emb_domain_eq_map_domain + theorem finsupp.emb_domain_map_range + theorem finsupp.emb_domain_notin_range + theorem finsupp.emb_domain_zero + theorem finsupp.injective_map_domain + theorem finsupp.support_emb_domain 2019-03-26 18:22:00+01:00 d7bd41f feat(linear_algebra/dimension): add exists_mem_ne_zero_of_dim_pos ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem exists_mem_ne_zero_of_dim_pos + theorem exists_mem_ne_zero_of_ne_bot 2019-03-26 18:22:00+01:00 22352ff feat(linear_algebra/dimension): add dim_span_le; add rank_finset_sum_le ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean + theorem dim_span_le + theorem dim_span_of_finset + theorem rank_finset_sum_le + theorem rank_zero 2019-03-26 17:46:31+01:00 f882b8b feat(data/polynomial): rec_on_horner (#739) ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.coeff_mk + theorem polynomial.degree_div_X_lt + theorem polynomial.degree_le_zero_iff + theorem polynomial.degree_lt_degree_mul_X + theorem polynomial.degree_pos_induction_on + def polynomial.div_X + theorem polynomial.div_X_C + theorem polynomial.div_X_add + theorem polynomial.div_X_eq_zero_iff + theorem polynomial.div_X_mul_X_add + def polynomial.nonzero_comm_semiring.of_polynomial_ne + def polynomial.rec_on_horner 2019-03-26 00:11:19 410ae5d feat(group_theory/subgroup): add inv_iff_ker' and related (#790) * feat(group_theory/subgroup): add inv_iff_ker' and related * correcting spacing and adding to_additive attribute * changing name to ker-mk ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean + theorem quotient_group.ker_mk Modified src/group_theory/subgroup.lean + theorem is_group_hom.inv_iff_ker' + theorem is_group_hom.inv_ker_one' + theorem is_group_hom.one_iff_ker_inv' + theorem is_group_hom.one_ker_inv' 2019-03-25 16:03:35-04:00 0bb64a2 feat(tactic/solve_by_elim): working with multiple goals (#838) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/interactive.lean Modified test/solve_by_elim.lean 2019-03-25 19:21:49 291a4f3 refactor(algebra/group_action): use notation for monoid/group actions (#846) * refactor(module_action): bundle and introduce notation * fix(linear_algebra/determinant): fix the coercion issue using a local notation * fix(linear_algebra/dimension): fix build ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/group_theory/group_action.lean + theorem group_action.bijective + def group_action.comp_hom + def group_action.mul_left_cosets + theorem group_action.orbit_eq_iff + def group_action.orbit_rel + def group_action.to_perm - theorem is_group_action.bijective - theorem is_group_action.comp_hom - def is_group_action.mul_left_cosets - theorem is_group_action.orbit_eq_iff - def is_group_action.orbit_rel - def is_group_action.to_perm - theorem is_monoid_action.comp_hom - def is_monoid_action.fixed_points - theorem is_monoid_action.mem_fixed_points' - theorem is_monoid_action.mem_fixed_points - theorem is_monoid_action.mem_orbit - theorem is_monoid_action.mem_orbit_iff - theorem is_monoid_action.mem_orbit_self - theorem is_monoid_action.mem_stabilizer_iff - def is_monoid_action.orbit - def is_monoid_action.stabilizer + def monoid_action.comp_hom + def monoid_action.fixed_points + theorem monoid_action.mem_fixed_points' + theorem monoid_action.mem_fixed_points + theorem monoid_action.mem_orbit + theorem monoid_action.mem_orbit_iff + theorem monoid_action.mem_orbit_self + theorem monoid_action.mem_stabilizer_iff + def monoid_action.orbit + def monoid_action.stabilizer Modified src/group_theory/sylow.lean + theorem group_action.card_modeq_card_fixed_points + theorem group_action.mem_fixed_points_iff_card_orbit_eq_one - theorem is_group_action.card_modeq_card_fixed_points - theorem is_group_action.mem_fixed_points_iff_card_orbit_eq_one Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/dimension.lean 2019-03-25 18:24:08 a1158d8 feat(algebra/module): every abelian group is a Z-module (#848) ESTIMATED CHANGES Modified src/algebra/module.lean 2019-03-25 16:59:27+01:00 cb5e185 refactor(data/equiv): equiv_injective_surjective (#849) ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/fintype.lean Modified src/group_theory/perm/cycles.lean Modified src/group_theory/perm/sign.lean Modified src/linear_algebra/basic.lean Modified src/linear_algebra/determinant.lean Modified src/linear_algebra/dimension.lean Modified src/logic/embedding.lean Modified src/order/order_iso.lean Modified src/ring_theory/localization.lean Modified src/ring_theory/noetherian.lean Modified src/set_theory/cofinality.lean Modified src/topology/constructions.lean 2019-03-23 21:28:16+01:00 cd7402d Minor clarification to simpa doc (#842) ESTIMATED CHANGES Modified docs/tactics.md 2019-03-23 12:56:54-04:00 b0b33ab fix(import): remove relative imports ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/analysis/normed_space/deriv.lean 2019-03-22 16:02:14 c29769f fix(ring_theory/multiplicity): correct spelling mistake in docstring ESTIMATED CHANGES Modified src/ring_theory/multiplicity.lean 2019-03-22 13:22:43+01:00 b5bb446 fix(doc/extra/tactic_writing): fix a minor error (#841) [ci-skip] * fix(doc/extra/tactic_writing): fix a minor error * comma splice ESTIMATED CHANGES Modified docs/extras/tactic_writing.md 2019-03-22 00:28:38 989efab feat(data/equiv/algebra): add add_equiv and mul_equiv (#789) * feat(data/equiv/algebra): add monoid_equiv and group_equiv * refactor; now using mul_equiv; adding add_equiv * tidy * namechange broke my code; now fixed * next effort * switching is_mul_hom back to explicit args * removing more implicits * typo * switching back to implicits (to fix mathlib breakage) * Making is_mul_hom and is_add_hom classes * adding more to_additive ESTIMATED CHANGES Modified src/algebra/group.lean + theorem is_mul_hom.comp' + theorem is_mul_hom.comp + theorem is_mul_hom.id + theorem units.map_comp' + theorem units.map_comp + theorem units.map_id Modified src/data/equiv/algebra.lean + def add_equiv.refl + def add_equiv.symm + def add_equiv.trans + structure add_equiv + theorem mul_equiv.one + def mul_equiv.refl + def mul_equiv.symm + def mul_equiv.trans + structure mul_equiv + def units.map_equiv 2019-03-21 23:44:25 798a08d feat(group_theory/submonoid): add closure_singleton (#810) * feat(group_theory/submonoid): add closure_singleton * adding some to_additive ESTIMATED CHANGES Modified src/group_theory/submonoid.lean + theorem add_monoid.closure_singleton + theorem monoid.closure_singleton + theorem multiples.self_mem + theorem multiples.zero_mem + theorem powers.one_mem + theorem powers.self_mem 2019-03-20 10:16:08-04:00 098c2cb feat(tactic/wlog): `discharger` defaults to classical `tauto` (#836) ESTIMATED CHANGES Modified src/tactic/wlog.lean 2019-03-18 00:04:29 d60d161 feat(linear_algebra/basic): add ring instance (#823) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean - def linear_map.endomorphism_ring +/- def linear_map.general_linear_group Modified src/ring_theory/algebra.lean 2019-03-17 21:08:06 9ff5e8d feat(algebra/punit_instances): punit instances (#828) ESTIMATED CHANGES Added src/algebra/punit_instances.lean + theorem punit.Inf_eq + theorem punit.Sup_eq + theorem punit.add_eq + theorem punit.bot_eq + theorem punit.inf_eq + theorem punit.inv_eq + theorem punit.mul_eq + theorem punit.neg_eq + theorem punit.not_lt + theorem punit.one_eq + theorem punit.smul_eq + theorem punit.sup_eq + theorem punit.top_eq + theorem punit.zero_eq 2019-03-17 21:07:14 df996be fix(topology/algebra/group): fix binders for top group extensionality (#826) ESTIMATED CHANGES Modified src/topology/algebra/group.lean 2019-03-17 09:07:33-05:00 e8bdc7f feat(order/filter/filter_product): build hyperreals (#801) Construction of filter products, ultraproducts, some instances, hyperreal numbers. ESTIMATED CHANGES Modified src/algebra/field.lean + theorem inv_eq_zero Added src/data/real/hyperreal.lean + theorem hyperreal.epsilon_eq_inv_omega + theorem hyperreal.epsilon_lt_pos + theorem hyperreal.epsilon_mul_omega + theorem hyperreal.epsilon_ne_zero + theorem hyperreal.epsilon_pos + theorem hyperreal.gt_of_tendsto_zero_of_neg + def hyperreal.infinitesimal + theorem hyperreal.infinitesimal_epsilon + theorem hyperreal.infinitesimal_of_tendsto_zero + theorem hyperreal.inv_epsilon_eq_omega + def hyperreal.is_st + theorem hyperreal.is_st_unique + theorem hyperreal.lt_of_tendsto_zero_of_pos + theorem hyperreal.neg_lt_of_tendsto_zero_of_neg + theorem hyperreal.omega_ne_zero + theorem hyperreal.omega_pos + def hyperreal Modified src/data/real/nnreal.lean - theorem inv_eq_zero Modified src/data/set/basic.lean + theorem set.set_of_eq_eq_singleton Modified src/order/filter/basic.lean + theorem filter.cofinite_ne_bot + theorem filter.compl_mem_hyperfilter_of_finite + theorem filter.hyperfilter_le_cofinite + theorem filter.is_ultrafilter_hyperfilter + theorem filter.mem_hyperfilter_of_finite_compl + theorem filter.nmem_hyperfilter_of_finite Added src/order/filter/filter_product.lean + def filter.bigly_equal + def filter.filter_product.lift + def filter.filter_product.lift_rel + def filter.filter_product.lift_rel₂ + def filter.filter_product.lift₂ + theorem filter.filter_product.lt_def' + theorem filter.filter_product.lt_def + def filter.filter_product.of + theorem filter.filter_product.of_add + theorem filter.filter_product.of_eq + theorem filter.filter_product.of_eq_coe + theorem filter.filter_product.of_eq_zero + theorem filter.filter_product.of_id + theorem filter.filter_product.of_inj + theorem filter.filter_product.of_inv + theorem filter.filter_product.of_le + theorem filter.filter_product.of_le_of_le + theorem filter.filter_product.of_lt + theorem filter.filter_product.of_lt_of_lt + theorem filter.filter_product.of_mul + theorem filter.filter_product.of_ne + theorem filter.filter_product.of_ne_zero + theorem filter.filter_product.of_neg + theorem filter.filter_product.of_one + theorem filter.filter_product.of_rel + theorem filter.filter_product.of_rel_of_rel + theorem filter.filter_product.of_rel_of_rel₂ + theorem filter.filter_product.of_rel₂ + def filter.filter_product.of_seq + theorem filter.filter_product.of_seq_add + theorem filter.filter_product.of_seq_fun + theorem filter.filter_product.of_seq_fun₂ + theorem filter.filter_product.of_seq_inv + theorem filter.filter_product.of_seq_mul + theorem filter.filter_product.of_seq_neg + theorem filter.filter_product.of_seq_one + theorem filter.filter_product.of_seq_zero + theorem filter.filter_product.of_zero + def filter.filterprod 2019-03-16 09:30:48-05:00 0c2c2bd feat(group_theory/perm/cycles): cycle_factors (#815) ESTIMATED CHANGES Added src/group_theory/perm/cycles.lean + theorem equiv.perm.apply_eq_self_iff_of_same_cycle + def equiv.perm.cycle_factors + def equiv.perm.cycle_factors_aux + def equiv.perm.cycle_of + theorem equiv.perm.cycle_of_apply + theorem equiv.perm.cycle_of_apply_of_not_same_cycle + theorem equiv.perm.cycle_of_apply_of_same_cycle + theorem equiv.perm.cycle_of_apply_self + theorem equiv.perm.cycle_of_cycle + theorem equiv.perm.cycle_of_gpow_apply_self + theorem equiv.perm.cycle_of_inv + theorem equiv.perm.cycle_of_one + theorem equiv.perm.cycle_of_pow_apply_self + theorem equiv.perm.is_cycle_cycle_of + theorem equiv.perm.same_cycle.refl + theorem equiv.perm.same_cycle.symm + theorem equiv.perm.same_cycle.trans + def equiv.perm.same_cycle + theorem equiv.perm.same_cycle_apply + theorem equiv.perm.same_cycle_cycle + theorem equiv.perm.same_cycle_inv + theorem equiv.perm.same_cycle_inv_apply + theorem equiv.perm.same_cycle_of_is_cycle Renamed src/group_theory/perm.lean to src/group_theory/perm/sign.lean + theorem equiv.perm.card_support_swap_mul + theorem equiv.perm.disjoint.symm + def equiv.perm.disjoint + theorem equiv.perm.disjoint_comm + theorem equiv.perm.disjoint_mul_comm + theorem equiv.perm.disjoint_mul_left + theorem equiv.perm.disjoint_mul_right + theorem equiv.perm.disjoint_one_left + theorem equiv.perm.disjoint_one_right + theorem equiv.perm.disjoint_prod_perm + theorem equiv.perm.disjoint_prod_right + theorem equiv.perm.exists_gpow_eq_of_is_cycle - theorem equiv.perm.exists_int_pow_eq_of_is_cycle + theorem equiv.perm.gpow_apply_eq_of_apply_apply_eq_self + theorem equiv.perm.gpow_apply_eq_self_of_apply_eq_self +/- def equiv.perm.is_cycle +/- theorem equiv.perm.is_cycle_inv + theorem equiv.perm.ne_and_ne_of_swap_mul_apply_ne_self + theorem equiv.perm.of_subtype_one + theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self - theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self_int - theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self_nat + theorem equiv.perm.pow_apply_eq_self_of_apply_eq_self + theorem equiv.perm.subtype_perm_one - theorem equiv.perm.support_swap_mul - theorem equiv.perm.support_swap_mul_cycle + theorem equiv.perm.support_swap_mul_eq + theorem equiv.perm.swap_induction_on Modified src/linear_algebra/determinant.lean Modified test/fin_cases.lean 2019-03-16 09:28:41-05:00 7b001c9 feat(data/set/intervals): add missing intervals + some lemmas (#805) The lemmas about Icc ⊆ I** are important for convexity ESTIMATED CHANGES Modified src/data/set/intervals.lean + theorem set.Icc_subset_Icc_iff + theorem set.Icc_subset_Ici_iff + theorem set.Icc_subset_Ico_iff + theorem set.Icc_subset_Iic_iff + theorem set.Icc_subset_Iio_iff + theorem set.Icc_subset_Ioc_iff + theorem set.Icc_subset_Ioi_iff + theorem set.Icc_subset_Ioo_iff + def set.Ici + theorem set.Ici_ne_empty + def set.Iic + theorem set.Iic_ne_empty + def set.Ioc + theorem set.Ioc_eq_empty + def set.Ioi + theorem set.Ioi_ne_empty + theorem set.mem_Ici + theorem set.mem_Iic + theorem set.mem_Ioc + theorem set.mem_Ioi 2019-03-14 10:32:41+01:00 2bf44d3 refactor(*): rename metric_space_subtype to subtype.metric_space (#817) ESTIMATED CHANGES Modified src/data/padics/padic_integers.lean Modified src/topology/metric_space/basic.lean 2019-03-14 10:31:53+01:00 c5afc52 feat(topology/metric_space/baire): Baire theorem (#816) ESTIMATED CHANGES Modified src/data/set/countable.lean + theorem set.countable_prod + theorem set.exists_surjective_of_countable Modified src/data/set/lattice.lean + theorem set.bInter_image + theorem set.bInter_range + theorem set.bUnion_image + theorem set.bUnion_range + theorem set.sInter_bUnion + theorem set.sInter_range + theorem set.sInter_union_sInter + theorem set.sUnion_bUnion + theorem set.sUnion_inter_sUnion + theorem set.sUnion_range Modified src/order/complete_boolean_algebra.lean + theorem lattice.Inf_sup_Inf + theorem lattice.Inf_sup_eq + theorem lattice.Sup_inf_Sup + theorem lattice.Sup_inf_eq Modified src/order/complete_lattice.lean + theorem lattice.infi_le_infi_of_subset + theorem lattice.supr_le_supr_of_subset Modified src/topology/basic.lean + theorem interior_frontier + theorem is_closed_frontier Added src/topology/metric_space/baire.lean + theorem dense_Inter_of_Gδ + theorem dense_Inter_of_open + theorem dense_Inter_of_open_nat + theorem dense_Union_interior_of_closed + theorem dense_bInter_of_Gδ + theorem dense_bInter_of_open + theorem dense_bUnion_interior_of_closed + theorem dense_sInter_of_Gδ + theorem dense_sInter_of_open + theorem dense_sUnion_interior_of_closed + theorem is_Gδ.union + def is_Gδ + theorem is_Gδ_Inter_of_open + theorem is_Gδ_bInter_of_open + theorem is_Gδ_sInter + theorem is_open.is_Gδ + theorem nonempty_interior_of_Union_of_closed Modified src/topology/metric_space/basic.lean + theorem metric.mem_closed_ball_self 2019-03-13 23:45:07-04:00 72100bd feat(tactic/squeeze,hole): remove needless qualifications in names ESTIMATED CHANGES Modified src/meta/rb_map.lean Modified src/tactic/basic.lean Modified src/tactic/squeeze.lean 2019-03-12 13:37:46-04:00 82f79a5 feat(data/list|multiset|finset): lemmas about intervals in nat (#795) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.Ico.image_add + theorem finset.Ico.image_sub + theorem finset.Ico.inter_consecutive - theorem finset.Ico.map_add +/- theorem finset.Ico.pred_singleton + theorem finset.Ico.succ_top' Modified src/data/list/basic.lean + theorem list.Ico.bag_inter_consecutive + theorem list.Ico.inter_consecutive + theorem list.Ico.map_sub +/- theorem list.Ico.pred_singleton + theorem list.map_sub_range' Modified src/data/multiset.lean + theorem multiset.Ico.inter_consecutive + theorem multiset.Ico.map_sub +/- theorem multiset.Ico.pred_singleton 2019-03-12 13:53:34+01:00 2738f9b chore(topology/*): @uniformity α _ becomes 𝓤 α (#814) This is a binder type change and a local notation ESTIMATED CHANGES Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/uniform_group.lean +/- theorem uniformity_eq_comap_nhds_zero' +/- theorem uniformity_eq_comap_nhds_zero +/- theorem uniformity_translate Modified src/topology/metric_space/basic.lean +/- theorem metric.uniformity_dist' +/- theorem metric.uniformity_dist +/- theorem uniformity_edist Modified src/topology/metric_space/cau_seq_filter.lean Modified src/topology/metric_space/emetric_space.lean +/- theorem uniformity_edist'' +/- theorem uniformity_edist' Modified src/topology/uniform_space/basic.lean +/- theorem comp_le_uniformity +/- theorem comp_mem_uniformity_sets +/- theorem comp_symm_of_uniformity +/- theorem interior_mem_uniformity +/- theorem mem_nhds_left +/- theorem mem_nhds_right +/- theorem mem_uniformity_is_closed +/- theorem nhds_eq_comap_uniformity +/- theorem nhds_eq_uniformity +/- theorem nhdset_of_mem_uniformity +/- theorem refl_le_uniformity +/- theorem refl_mem_uniformity +/- theorem symm_le_uniformity +/- theorem symm_of_uniformity +/- theorem tendsto_const_uniformity +/- theorem tendsto_left_nhds_uniformity +/- theorem tendsto_right_nhds_uniformity +/- theorem tendsto_swap_uniformity +/- def uniformity +/- theorem uniformity_eq_symm +/- theorem uniformity_eq_uniformity_closure +/- theorem uniformity_eq_uniformity_interior +/- theorem uniformity_le_symm Modified src/topology/uniform_space/cauchy.lean +/- def cauchy +/- theorem cauchy_iff +/- theorem cauchy_map_iff Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2019-03-12 01:04:54-04:00 3360267 feat(tactic/basic): folding over the environment, to get all declarations (#798) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-03-11 16:11:52-04:00 bde8690 feat(data/alist,data/finmap): union (#750) ESTIMATED CHANGES Modified src/data/finmap.lean + theorem finmap.ext_iff + theorem finmap.induction_on₂ + theorem finmap.induction_on₃ + theorem finmap.keys_union + theorem finmap.lookup_empty + theorem finmap.lookup_union_left + theorem finmap.lookup_union_right +/- theorem finmap.mem_insert + theorem finmap.mem_lookup_union + theorem finmap.mem_lookup_union_middle + theorem finmap.mem_union + def finmap.union + theorem finmap.union_to_finmap Modified src/data/list/alist.lean + theorem alist.empty_entries + theorem alist.empty_union + theorem alist.lookup_empty +/- theorem alist.lookup_insert_ne + theorem alist.lookup_union_left + theorem alist.lookup_union_right +/- theorem alist.mem_insert + theorem alist.mem_lookup_union + theorem alist.mem_lookup_union_middle + theorem alist.mem_union + theorem alist.perm_union + theorem alist.singleton_entries + def alist.union + theorem alist.union_empty + theorem alist.union_entries Modified src/data/list/sigma.lean + theorem list.kerase_append_left + theorem list.kerase_append_right + theorem list.kerase_comm + def list.kunion + theorem list.kunion_cons + theorem list.kunion_kerase + theorem list.kunion_nil + theorem list.kunion_nodupkeys +/- theorem list.lookup_kinsert_ne + theorem list.lookup_kunion_left + theorem list.lookup_kunion_right +/- theorem list.mem_keys_kinsert + theorem list.mem_keys_kunion + theorem list.mem_lookup_kunion + theorem list.mem_lookup_kunion_middle + theorem list.nil_kunion + theorem list.perm_kunion + theorem list.perm_kunion_left + theorem list.perm_kunion_right 2019-03-11 17:09:10+01:00 eb96a25 feat(topology/algebra/group): extensionality for top group structure ESTIMATED CHANGES Modified src/topology/algebra/group.lean + theorem topological_group.ext 2019-03-11 14:06:20 69249d8 feat(topology/algebra/monoid): add is_submonoid.mem_nhds_one (#809) ESTIMATED CHANGES Modified src/topology/algebra/monoid.lean + theorem is_submonoid.mem_nhds_one 2019-03-09 17:49:20-05:00 51c31ce refactor(data/list): rm redundant eq_nil_of_forall_not_mem (#804) ESTIMATED CHANGES Modified src/data/hash_map.lean Modified src/data/list/basic.lean - theorem list.eq_nil_of_forall_not_mem Modified src/data/multiset.lean 2019-03-09 11:34:38 e8818fa feat(data/set/finite): add finite_lt_nat (#807) ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite_lt_nat 2019-03-08 20:10:50 7de57e8 feat(ring_theory/noetherian): Nakayama's Lemma (#778) * feat(ring_theory/noetherian): Nakayama's Lemma * Update src/ring_theory/noetherian.lean Co-Authored-By: kckennylau ESTIMATED CHANGES Modified src/ring_theory/ideal_operations.lean + theorem submodule.mem_smul_span_singleton Modified src/ring_theory/noetherian.lean + theorem submodule.exists_sub_one_mem_and_smul_eq_zero_of_fg_of_le_smul 2019-03-08 15:01:45+01:00 1159fa9 refactot(data/equiv/basic): rename apply_inverse_apply to apply_symm_apply (#800) ESTIMATED CHANGES Modified src/category_theory/adjunction.lean Modified src/data/equiv/basic.lean - theorem equiv.apply_inverse_apply + theorem equiv.apply_symm_apply - theorem equiv.inverse_apply_apply - theorem equiv.inverse_trans_apply + theorem equiv.symm_apply_apply + theorem equiv.symm_trans_apply Modified src/data/equiv/denumerable.lean Modified src/data/finsupp.lean Modified src/data/multivariate_polynomial.lean Modified src/field_theory/perfect_closure.lean Modified src/order/order_iso.lean - theorem order_iso.apply_inverse_apply + theorem order_iso.apply_symm_apply - theorem order_iso.inverse_apply_apply + theorem order_iso.symm_apply_apply Modified src/ring_theory/localization.lean Modified src/set_theory/ordinal.lean 2019-03-08 13:42:54+01:00 b1af140 style(data/list/basic): clean up count_bag_inter ESTIMATED CHANGES Modified src/data/list/basic.lean 2019-03-08 08:46:58+01:00 ffa6d69 feat(*): has_mem (set α) (filter α) (#799) ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/deriv.lean Modified src/analysis/specific_limits.lean Modified src/data/analysis/filter.lean +/- theorem filter.realizer.mem_sets Modified src/data/analysis/topology.lean Modified src/measure_theory/integration.lean +/- theorem measure_theory.simple_func.integral_congr Modified src/measure_theory/measure_space.lean +/- def measure_theory.all_ae Modified src/order/filter/basic.lean +/- theorem filter.bind_mono +/- theorem filter.congr_sets +/- theorem filter.empty_in_sets_eq_bot +/- theorem filter.exists_sets_subset_iff +/- theorem filter.image_mem_map +/- theorem filter.inf_principal_eq_bot +/- theorem filter.infi_sets_induct +/- theorem filter.inhabited_of_mem_sets +/- theorem filter.inter_mem_sets +/- theorem filter.le_def +/- theorem filter.le_map +/- theorem filter.le_map_comap_of_surjective' +/- theorem filter.le_principal_iff +/- theorem filter.map_comap +/- theorem filter.map_comap_of_surjective' +/- theorem filter.map_cong +/- theorem filter.map_inf' +/- theorem filter.mem_at_top +/- theorem filter.mem_bot_sets +/- theorem filter.mem_comap_sets +/- theorem filter.mem_inf_sets_of_left +/- theorem filter.mem_inf_sets_of_right + theorem filter.mem_infi + theorem filter.mem_infi_finite +/- theorem filter.mem_infi_sets +/- theorem filter.mem_map +/- theorem filter.mem_map_sets_iff +/- theorem filter.mem_or_mem_of_ultrafilter +/- theorem filter.mem_principal_self +/- theorem filter.mem_principal_sets +/- theorem filter.mem_pure +/- theorem filter.mem_pure_iff +/- theorem filter.mem_sets_of_neq_bot +/- theorem filter.mem_sets_of_superset +/- theorem filter.mem_top_sets +/- theorem filter.mem_top_sets_iff_forall +/- theorem filter.monotone_mem_sets +/- theorem filter.mp_sets +/- theorem filter.preimage_mem_comap +/- theorem filter.range_mem_map +/- theorem filter.singleton_mem_pure_sets +/- theorem filter.univ_mem_sets' +/- theorem filter.univ_mem_sets Modified src/order/filter/partial.lean +/- def filter.mem_pmap +/- theorem filter.ptendsto'_of_ptendsto Modified src/topology/algebra/group.lean +/- theorem add_group_with_zero_nhd.exists_Z_half +/- theorem exists_nhds_split4 +/- theorem exists_nhds_split +/- theorem exists_nhds_split_inv Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/ordered.lean +/- theorem ge_mem_nhds +/- theorem gt_mem_nhds +/- theorem le_mem_nhds +/- theorem lt_mem_nhds +/- theorem mem_nhds_orderable_dest Modified src/topology/algebra/uniform_group.lean Modified src/topology/bases.lean Modified src/topology/basic.lean +/- theorem is_open_iff_mem_nhds +/- theorem mem_closure_iff_nhds +/- theorem mem_of_nhds Modified src/topology/bounded_continuous_function.lean Modified src/topology/compact_open.lean Modified src/topology/constructions.lean +/- theorem map_nhds_subtype_val_eq Modified src/topology/instances/ennreal.lean +/- theorem ennreal.coe_range_mem_nhds Modified src/topology/maps.lean Modified src/topology/metric_space/basic.lean +/- theorem metric.ball_mem_nhds +/- theorem metric.mem_nhds_iff Modified src/topology/metric_space/cau_seq_filter.lean +/- theorem sequentially_complete.set_seq_of_cau_filter_mem_sets Modified src/topology/metric_space/emetric_space.lean +/- theorem emetric.ball_mem_nhds +/- theorem emetric.mem_nhds_iff Modified src/topology/order.lean +/- theorem map_nhds_induced_eq Modified src/topology/separation.lean +/- theorem compl_singleton_mem_nhds +/- theorem nhds_is_closed Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Modified src/topology/subset_properties.lean Modified src/topology/uniform_space/basic.lean +/- theorem comp_mem_uniformity_sets +/- theorem comp_symm_of_uniformity +/- theorem interior_mem_uniformity + theorem mem_map_sets_iff' +/- theorem mem_uniformity_is_closed +/- theorem nhdset_of_mem_uniformity +/- theorem refl_mem_uniformity +/- theorem symm_of_uniformity Modified src/topology/uniform_space/completion.lean Modified src/topology/uniform_space/separation.lean Modified src/topology/uniform_space/uniform_embedding.lean 2019-03-07 23:35:39+01:00 7e77967 refactor(localization): shorten proofs (#796) * feat(algebra/group): units.coe_map * refactor(localization): shorten proofs * swap order of equality in ring_equiv.symm_to_equiv ESTIMATED CHANGES Modified src/data/equiv/algebra.lean + theorem ring_equiv.to_equiv_symm + theorem ring_equiv.to_equiv_symm_apply Modified src/ring_theory/localization.lean +/- theorem localization.lift'_apply_coe + theorem localization.lift'_mk + theorem localization.map_comp_map + theorem localization.map_id + theorem localization.map_map 2019-03-07 10:17:21-05:00 26bd400 feat(data/list): lemmas about count and bag_inter (#797) ESTIMATED CHANGES Modified src/data/finset.lean + theorem multiset.to_finset_inter Modified src/data/list/basic.lean + theorem list.bag_inter_nil_iff_inter_nil + theorem list.count_bag_inter + theorem list.count_erase_of_ne + theorem list.count_erase_self +/- theorem list.mem_bag_inter Modified src/data/multiset.lean + theorem multiset.coe_inter 2019-03-06 20:07:22-05:00 181647b feat(tactic/basic): utility functions for names (#791) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-03-06 23:01:10 48eaf05 feat(algebra/group): units.coe_map ESTIMATED CHANGES Modified src/algebra/group.lean + theorem units.coe_map 2019-03-06 22:11:42 e286452 feat(data/nat/basic): some lemmas (#792) * feat(data/nat/basic): some lemmas * fixing namespace, moving lemma ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.le_pred_of_lt + theorem nat.one_le_of_lt + theorem nat.pred_one_add + theorem nat.sub_sub_sub_cancel_right 2019-03-06 10:16:34-05:00 61e02dd feat(data/finset): missing fold_map lemma (#794) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.fold_map 2019-03-06 14:21:24 cc753d7 feat(ring_theory/localization): adds induced ring hom between fraction rings (#781) * feat(ring_theory/localization): adds induced ring hom between fraction rings * Break some extremely long lines * Put map in the fraction_ring namespace * Move global variable into statements * Rename rec to lift', make interface for lift, generalise map * Improve simp-lemmas, add docstrings * Rename circ to comp in lemma names ESTIMATED CHANGES Modified src/ring_theory/localization.lean +/- def localization.at_prime + theorem localization.away.lift_coe + theorem localization.away.lift_comp_of + theorem localization.away.lift_of +/- def localization.away +/- theorem localization.coe_add + theorem localization.coe_is_unit' + theorem localization.coe_is_unit +/- theorem localization.coe_mul +/- theorem localization.coe_neg +/- theorem localization.coe_one +/- theorem localization.coe_pow +/- theorem localization.coe_sub +/- theorem localization.coe_zero - theorem localization.eq_zero_of - theorem localization.eq_zero_of_ne_zero_of_mul_eq_zero + def localization.equiv_of_equiv + theorem localization.fraction_ring.eq_zero_of + theorem localization.fraction_ring.eq_zero_of_ne_zero_of_mul_eq_zero + def localization.fraction_ring.equiv_of_equiv + def localization.fraction_ring.inv_aux + def localization.fraction_ring.map + theorem localization.fraction_ring.map_coe + theorem localization.fraction_ring.map_comp_of + theorem localization.fraction_ring.map_of + theorem localization.fraction_ring.mem_non_zero_divisors_iff_ne_zero + theorem localization.fraction_ring.mk_eq_div' + theorem localization.fraction_ring.mk_eq_div + theorem localization.fraction_ring.mk_inv' + theorem localization.fraction_ring.mk_inv + theorem localization.fraction_ring.of.injective +/- def localization.fraction_ring - def localization.inv_aux + def localization.lift' + theorem localization.lift'_apply_coe + theorem localization.lift'_coe + theorem localization.lift'_comp_of + theorem localization.lift'_of + theorem localization.lift_apply_coe + theorem localization.lift_coe + theorem localization.lift_comp_of + theorem localization.lift_of - def localization.loc + def localization.map + theorem localization.map_coe +/- theorem localization.map_comap + theorem localization.map_comp_of + theorem localization.map_of - theorem localization.mem_non_zero_divisors_of_ne_zero +/- def localization.mk + theorem localization.mk_eq - theorem localization.mk_eq_div - theorem localization.ne_zero_of_mem_non_zero_divisors + theorem localization.non_zero_divisors_one_val - theorem localization.of.injective +/- def localization.of +/- theorem localization.of_add + theorem localization.of_is_unit' + theorem localization.of_is_unit +/- theorem localization.of_mul +/- theorem localization.of_neg +/- theorem localization.of_one +/- theorem localization.of_pow +/- theorem localization.of_sub +/- theorem localization.of_zero + def localization.to_units + theorem localization.to_units_coe + def localization 2019-03-05 21:55:19+01:00 1ec0a1f fix(tactic/linarith): correctly parse 0*0 ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2019-03-05 14:15:40-05:00 581cf19 feat(topology): split uniform_space and topological_structure ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/analysis/exponential.lean Modified src/analysis/normed_space/operator_norm.lean Modified src/data/equiv/basic.lean Modified src/data/quot.lean Modified src/logic/basic.lean + theorem {u} Modified src/topology/algebra/group.lean + theorem continuous_inv' + theorem continuous_inv + theorem continuous_sub' + theorem continuous_sub + theorem exists_nhds_split4 + theorem exists_nhds_split + theorem exists_nhds_split_inv + theorem is_open_map_mul_left + theorem is_open_map_mul_right + theorem nhds_one_symm + theorem nhds_translation + theorem nhds_translation_mul_inv + theorem quotient_group.open_coe + theorem quotient_group_saturate + theorem tendsto_inv + theorem tendsto_sub - theorem to_uniform_space_eq - def topological_add_group.to_uniform_space - theorem topological_add_group_is_uniform - theorem uniformity_eq_comap_nhds_zero' Added src/topology/algebra/group_completion.lean + theorem coe_zero + theorem uniform_space.completion.coe_add + theorem uniform_space.completion.coe_neg + theorem uniform_space.completion.is_add_group_hom_extension + theorem uniform_space.completion.is_add_group_hom_map + theorem uniform_space.completion.is_add_group_hom_prod Modified src/topology/algebra/infinite_sum.lean Added src/topology/algebra/monoid.lean + theorem continuous_finset_prod + theorem continuous_list_prod + theorem continuous_mul' + theorem continuous_mul + theorem continuous_multiset_prod + theorem continuous_pow + theorem tendsto_finset_prod + theorem tendsto_list_prod + theorem tendsto_mul' + theorem tendsto_mul + theorem tendsto_multiset_prod Renamed src/topology/algebra/topological_structures.lean to src/topology/algebra/ordered.lean - theorem continuous_finset_prod - theorem continuous_inv' - theorem continuous_inv - theorem continuous_list_prod - theorem continuous_mul' - theorem continuous_mul - theorem continuous_multiset_prod - theorem continuous_pow - theorem continuous_sub' - theorem continuous_sub - theorem exists_nhds_split4 - theorem exists_nhds_split - theorem exists_nhds_split_inv - theorem group_separation_rel - def ideal.closure - theorem ideal.coe_closure - theorem is_open_map_mul_left - theorem is_open_map_mul_right - theorem nhds_one_symm - theorem nhds_translation - theorem nhds_translation_mul_inv - theorem tendsto_finset_prod - theorem tendsto_inv - theorem tendsto_list_prod - theorem tendsto_mul' - theorem tendsto_mul - theorem tendsto_multiset_prod - theorem tendsto_sub - theorem uniform_add_group.mk' - theorem uniform_continuous_add' - theorem uniform_continuous_add - theorem uniform_continuous_neg' - theorem uniform_continuous_neg - theorem uniform_continuous_of_continuous - theorem uniform_continuous_of_tendsto_zero - theorem uniform_continuous_sub' - theorem uniform_continuous_sub - theorem uniform_embedding_translate - theorem uniformity_eq_comap_nhds_zero - theorem uniformity_translate Deleted src/topology/algebra/quotient.lean - theorem quotient_group.open_coe - theorem quotient_group_saturate - theorem quotient_ring.is_open_map_coe - theorem quotient_ring.quotient_map_coe_coe - theorem quotient_ring_saturate - theorem uniform_space.ring_sep_quot - theorem uniform_space.ring_sep_rel - def uniform_space.sep_quot_equiv_ring_quot - theorem {u} Added src/topology/algebra/ring.lean + def ideal.closure + theorem ideal.coe_closure + theorem quotient_ring.is_open_map_coe + theorem quotient_ring.quotient_map_coe_coe + theorem quotient_ring_saturate Added src/topology/algebra/uniform_group.lean + theorem add_comm_group.is_Z_bilin.neg_left + theorem add_comm_group.is_Z_bilin.neg_right + theorem add_comm_group.is_Z_bilin.sub_left + theorem add_comm_group.is_Z_bilin.sub_right + theorem add_comm_group.is_Z_bilin.zero + theorem add_comm_group.is_Z_bilin.zero_left + theorem add_comm_group.is_Z_bilin.zero_right + theorem dense_embedding.continuous_extend_of_cauchy + theorem dense_embedding.extend_Z_bilin + theorem group_separation_rel + theorem is_Z_bilin.tendsto_zero_left + theorem is_Z_bilin.tendsto_zero_right + theorem tendsto_sub_comap_self + theorem to_uniform_space_eq + def topological_add_group.to_uniform_space + theorem topological_add_group_is_uniform + theorem uniform_add_group.mk' + theorem uniform_continuous_add' + theorem uniform_continuous_add + theorem uniform_continuous_neg' + theorem uniform_continuous_neg + theorem uniform_continuous_of_continuous + theorem uniform_continuous_of_tendsto_zero + theorem uniform_continuous_sub' + theorem uniform_continuous_sub + theorem uniform_embedding_translate + theorem uniformity_eq_comap_nhds_zero' + theorem uniformity_eq_comap_nhds_zero + theorem uniformity_translate Added src/topology/algebra/uniform_ring.lean + theorem uniform_space.completion.coe_mul + theorem uniform_space.completion.coe_one + theorem uniform_space.completion.continuous_mul' + theorem uniform_space.completion.continuous_mul + theorem uniform_space.ring_sep_quot + theorem uniform_space.ring_sep_rel + def uniform_space.sep_quot_equiv_ring_quot Modified src/topology/bounded_continuous_function.lean Modified src/topology/instances/polynomial.lean Modified src/topology/instances/real.lean Modified src/topology/metric_space/basic.lean Modified src/topology/metric_space/emetric_space.lean Modified src/topology/uniform_space/basic.lean - def cauchy - theorem cauchy_comap - theorem cauchy_downwards - theorem cauchy_iff - theorem cauchy_iff_exists_le_nhds - theorem cauchy_map - theorem cauchy_map_iff - theorem cauchy_map_iff_exists_tendsto - theorem cauchy_nhds - theorem cauchy_of_totally_bounded_of_ultrafilter - theorem cauchy_prod - theorem cauchy_pure - def cauchy_seq - theorem cauchy_seq_iff_prod_map - theorem cauchy_seq_tendsto_of_complete - theorem closure_image_mem_nhds_of_uniform_embedding - theorem compact_iff_totally_bounded_complete - theorem compact_of_totally_bounded_is_closed - theorem complete_space_extension - theorem complete_space_of_is_complete_univ - theorem complete_univ - theorem dense_embedding.continuous_extend_of_cauchy - theorem is_closed_of_is_complete - def is_complete - theorem is_complete_image_iff - theorem is_complete_of_is_closed - theorem le_nhds_iff_adhp_of_cauchy - theorem le_nhds_lim_of_cauchy - theorem le_nhds_of_cauchy_adhp - def separated - theorem separated_def' - theorem separated_def - theorem separated_equiv - def totally_bounded - theorem totally_bounded_closure - theorem totally_bounded_empty - theorem totally_bounded_iff_filter - theorem totally_bounded_iff_subset - theorem totally_bounded_iff_ultrafilter - theorem totally_bounded_image - theorem totally_bounded_preimage - theorem totally_bounded_subset - theorem uniform_continuous_uniformly_extend - theorem uniform_embedding.dense_embedding - theorem uniform_embedding.embedding - theorem uniform_embedding.prod - theorem uniform_embedding.uniform_continuous - theorem uniform_embedding.uniform_continuous_iff - def uniform_embedding - theorem uniform_embedding_comap - theorem uniform_embedding_def' - theorem uniform_embedding_def - theorem uniform_embedding_subtype_emb - theorem uniform_extend_subtype - theorem uniformly_extend_exists - theorem uniformly_extend_of_emb - theorem uniformly_extend_spec Added src/topology/uniform_space/cauchy.lean + def cauchy + theorem cauchy_comap + theorem cauchy_downwards + theorem cauchy_iff + theorem cauchy_iff_exists_le_nhds + theorem cauchy_map + theorem cauchy_map_iff + theorem cauchy_map_iff_exists_tendsto + theorem cauchy_nhds + theorem cauchy_of_totally_bounded_of_ultrafilter + theorem cauchy_prod + theorem cauchy_pure + def cauchy_seq + theorem cauchy_seq_iff_prod_map + theorem cauchy_seq_tendsto_of_complete + theorem compact_iff_totally_bounded_complete + theorem compact_of_totally_bounded_is_closed + theorem complete_space_of_is_complete_univ + theorem complete_univ + def is_complete + theorem is_complete_of_is_closed + theorem le_nhds_iff_adhp_of_cauchy + theorem le_nhds_lim_of_cauchy + theorem le_nhds_of_cauchy_adhp + def totally_bounded + theorem totally_bounded_closure + theorem totally_bounded_empty + theorem totally_bounded_iff_filter + theorem totally_bounded_iff_subset + theorem totally_bounded_iff_ultrafilter + theorem totally_bounded_image + theorem totally_bounded_subset Added src/topology/uniform_space/complete_separated.lean + theorem is_closed_of_is_complete Modified src/topology/uniform_space/completion.lean - theorem add_comm_group.is_Z_bilin.neg_left - theorem add_comm_group.is_Z_bilin.neg_right - theorem add_comm_group.is_Z_bilin.sub_left - theorem add_comm_group.is_Z_bilin.sub_right - theorem add_comm_group.is_Z_bilin.zero - theorem add_comm_group.is_Z_bilin.zero_left - theorem add_comm_group.is_Z_bilin.zero_right - theorem dense_embedding.extend_Z_bilin - theorem is_Z_bilin.tendsto_zero_left - theorem is_Z_bilin.tendsto_zero_right - theorem tendsto_sub_comap_self - theorem uniform_space.comap_quotient_eq_uniformity - theorem uniform_space.comap_quotient_le_uniformity - theorem uniform_space.completion.coe_add - theorem uniform_space.completion.coe_mul - theorem uniform_space.completion.coe_neg - theorem uniform_space.completion.coe_one - theorem uniform_space.completion.coe_zero - theorem uniform_space.completion.continuous_mul' - theorem uniform_space.completion.continuous_mul - theorem uniform_space.completion.is_add_group_hom_extension - theorem uniform_space.completion.is_add_group_hom_map - theorem uniform_space.completion.is_add_group_hom_prod - theorem uniform_space.eq_of_separated_of_uniform_continuous - theorem uniform_space.separated_of_uniform_continuous - theorem uniform_space.separation_prod - def uniform_space.separation_quotient.lift - theorem uniform_space.separation_quotient.lift_mk - def uniform_space.separation_quotient.map - theorem uniform_space.separation_quotient.map_comp - theorem uniform_space.separation_quotient.map_id - theorem uniform_space.separation_quotient.map_mk - theorem uniform_space.separation_quotient.map_unique - theorem uniform_space.separation_quotient.uniform_continuous_lift - theorem uniform_space.separation_quotient.uniform_continuous_map - def uniform_space.separation_quotient - def uniform_space.separation_setoid - theorem uniform_space.uniform_continuous_quotient - theorem uniform_space.uniform_continuous_quotient_lift - theorem uniform_space.uniform_continuous_quotient_lift₂ - theorem uniform_space.uniform_continuous_quotient_mk - theorem uniform_space.uniformity_quotient Added src/topology/uniform_space/separation.lean + def separated + theorem separated_def' + theorem separated_def + theorem separated_equiv + theorem uniform_space.comap_quotient_eq_uniformity + theorem uniform_space.comap_quotient_le_uniformity + theorem uniform_space.eq_of_separated_of_uniform_continuous + theorem uniform_space.separated_of_uniform_continuous + theorem uniform_space.separation_prod + def uniform_space.separation_quotient.lift + theorem uniform_space.separation_quotient.lift_mk + def uniform_space.separation_quotient.map + theorem uniform_space.separation_quotient.map_comp + theorem uniform_space.separation_quotient.map_id + theorem uniform_space.separation_quotient.map_mk + theorem uniform_space.separation_quotient.map_unique + theorem uniform_space.separation_quotient.uniform_continuous_lift + theorem uniform_space.separation_quotient.uniform_continuous_map + def uniform_space.separation_quotient + def uniform_space.separation_setoid + theorem uniform_space.uniform_continuous_quotient + theorem uniform_space.uniform_continuous_quotient_lift + theorem uniform_space.uniform_continuous_quotient_lift₂ + theorem uniform_space.uniform_continuous_quotient_mk + theorem uniform_space.uniformity_quotient Added src/topology/uniform_space/uniform_embedding.lean + theorem closure_image_mem_nhds_of_uniform_embedding + theorem complete_space_extension + theorem is_complete_image_iff + theorem totally_bounded_preimage + theorem uniform_continuous_uniformly_extend + theorem uniform_embedding.dense_embedding + theorem uniform_embedding.embedding + theorem uniform_embedding.prod + theorem uniform_embedding.uniform_continuous + theorem uniform_embedding.uniform_continuous_iff + def uniform_embedding + theorem uniform_embedding_comap + theorem uniform_embedding_def' + theorem uniform_embedding_def + theorem uniform_embedding_subtype_emb + theorem uniform_extend_subtype + theorem uniformly_extend_exists + theorem uniformly_extend_of_emb + theorem uniformly_extend_spec 2019-03-05 09:50:45+01:00 708c0cf feat(data/multiset): add monad instance (#744) ESTIMATED CHANGES Modified src/data/multiset.lean 2019-03-05 09:44:51+01:00 3525d21 refactor(topology/metric_space/lipschitz): Simplify proof in banach contraction (#788) ESTIMATED CHANGES Modified src/topology/metric_space/lipschitz.lean - theorem lipschitz_with.dist_bound_of_contraction 2019-03-05 09:21:46+01:00 b9f88d1 feat(data/finset): add card_sdiff ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.card_disjoint_union + theorem finset.card_sdiff Modified src/data/fintype.lean 2019-03-05 09:21:46+01:00 682f4b5 feat(linear_algebra): module (vector space) structure for finsupp, matrix, and mv polynomials ESTIMATED CHANGES Modified src/data/finsupp.lean + def finsupp.equiv_fun_on_fintype + theorem finsupp.ext_iff + theorem finsupp.filter_curry + theorem finsupp.filter_sum + theorem finsupp.filter_zero + theorem finsupp.injective_single + theorem finsupp.map_domain_apply + theorem finsupp.map_domain_notin_range + theorem finsupp.map_range_finset_sum + theorem finsupp.map_range_multiset_sum + def finsupp.restrict_support_equiv + theorem finsupp.single_eq_single_iff + theorem finsupp.support_curry Modified src/data/multivariate_polynomial.lean + theorem mv_polynomial.smul_eq_C_mul + theorem mv_polynomial.smul_eval Modified src/field_theory/finite.lean +/- def finite_field.field_of_integral_domain + theorem finite_field.pow_card_sub_one_eq_one Added src/field_theory/mv_polynomial.lean + def mv_polynomial.R + theorem mv_polynomial.degrees_indicator + theorem mv_polynomial.dim_R + theorem mv_polynomial.eq_zero_of_eval_eq_zero + theorem mv_polynomial.eval_indicator_apply_eq_one + theorem mv_polynomial.eval_indicator_apply_eq_zero + def mv_polynomial.evalᵢ + def mv_polynomial.evalₗ + theorem mv_polynomial.evalₗ_apply + def mv_polynomial.indicator + theorem mv_polynomial.indicator_mem_restrict_degree + theorem mv_polynomial.ker_evalₗ + theorem mv_polynomial.map_restrict_dom_evalₗ + theorem mv_polynomial.range_evalᵢ Added src/linear_algebra/finsupp.lean + theorem cardinal_lt_omega_of_dim_lt_omega + theorem cardinal_mk_eq_cardinal_mk_field_pow_dim + theorem eq_bot_iff_dim_eq_zero + theorem equiv_of_dim_eq_dim + theorem finsupp.dim_eq + theorem finsupp.disjoint_lsingle_lsingle + theorem finsupp.infi_ker_lapply_le_bot + theorem finsupp.is_basis_single + theorem finsupp.ker_lsingle + def finsupp.lapply + theorem finsupp.lapply_apply + theorem finsupp.linear_independent_single + def finsupp.lmap_domain + theorem finsupp.lmap_domain_apply + def finsupp.lsingle + theorem finsupp.lsingle_apply + theorem finsupp.lsingle_range_le_ker_lapply + def finsupp.lsubtype_domain + theorem finsupp.lsubtype_domain_apply + theorem finsupp.mem_restrict_dom + def finsupp.restrict_dom + def finsupp.restrict_dom_equiv_finsupp + theorem finsupp.span_single_image + theorem finsupp.supr_lsingle_range + theorem injective_of_surjective + theorem mv_polynomial.dim_mv_polynomial + theorem mv_polynomial.is_basis_monomials + theorem mv_polynomial.map_range_eq_map + theorem mv_polynomial.mem_restrict_degree + theorem mv_polynomial.mem_restrict_degree_iff_sup + theorem mv_polynomial.mem_restrict_total_degree + def mv_polynomial.restrict_degree + def mv_polynomial.restrict_total_degree Added src/linear_algebra/matrix.lean + theorem matrix.diagonal_comp_std_basis + theorem matrix.diagonal_to_lin + def matrix.eval + theorem matrix.ker_diagonal_to_lin + theorem matrix.mul_to_lin + theorem matrix.proj_diagonal + theorem matrix.range_diagonal + theorem matrix.rank_diagonal + theorem matrix.rank_vec_mul_vec + def matrix.to_lin + theorem matrix.to_lin_add + theorem matrix.to_lin_apply + theorem matrix.to_lin_zero 2019-03-05 09:21:46+01:00 738778a feat(data/matrix): basic definitions: transpose; row & column matrix; vector/matrix multiplication ESTIMATED CHANGES Modified src/data/matrix.lean + def matrix.col + def matrix.mul_vec + theorem matrix.mul_vec_diagonal + def matrix.row + def matrix.transpose + def matrix.vec_mul + def matrix.vec_mul_vec + theorem matrix.vec_mul_vec_eq 2019-03-05 09:21:46+01:00 528ff93 refactor(linear_algebra): move multivariate_polynomial to data ESTIMATED CHANGES Modified src/category_theory/instances/rings.lean Renamed src/linear_algebra/multivariate_polynomial.lean to src/data/multivariate_polynomial.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/polynomial.lean 2019-03-05 09:21:46+01:00 891a192 refactor(ring_theory): move matrix to data and determinant to linear_algebra ESTIMATED CHANGES Modified src/data/matrix.lean Modified src/linear_algebra/determinant.lean 2019-03-05 09:21:46+01:00 10a586b feat(linear_algebra): add module (vector_space) structure for function spaces ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + def equiv.to_linear_equiv + theorem linear_equiv.eq_bot_of_equiv + def linear_equiv.smul_of_ne_zero + def linear_equiv.smul_of_unit + theorem linear_map.comp_cod_restrict + def linear_map.diag + theorem linear_map.disjoint_std_basis_std_basis + theorem linear_map.infi_ker_proj + def linear_map.infi_ker_proj_equiv + theorem linear_map.infi_ker_proj_le_supr_range_std_basis + theorem linear_map.ker_pi + theorem linear_map.ker_std_basis + def linear_map.pi + theorem linear_map.pi_apply + theorem linear_map.pi_comp + theorem linear_map.pi_eq_zero + theorem linear_map.pi_zero + def linear_map.proj + theorem linear_map.proj_apply + theorem linear_map.proj_comp_std_basis + theorem linear_map.proj_pi + theorem linear_map.proj_std_basis_ne + theorem linear_map.proj_std_basis_same + def linear_map.std_basis + theorem linear_map.std_basis_apply + theorem linear_map.std_basis_ne + theorem linear_map.std_basis_same + theorem linear_map.subtype_comp_cod_restrict + theorem linear_map.supr_range_std_basis + theorem linear_map.supr_range_std_basis_eq_infi_ker_proj + theorem linear_map.supr_range_std_basis_le_infi_ker_proj + theorem linear_map.update_apply + theorem submodule.disjoint_iff_comap_eq_bot + theorem submodule.eq_zero_of_bot_submodule + theorem submodule.mem_supr_of_mem + theorem submodule.span_univ Modified src/linear_algebra/basis.lean + theorem linear_independent_Union_finite + theorem pi.is_basis_fun + theorem pi.is_basis_std_basis + theorem pi.linear_independent_std_basis Modified src/linear_algebra/dimension.lean + theorem dim_fun' + theorem dim_fun + theorem dim_pi 2019-03-05 09:21:46+01:00 332121d feat(data/fintype): card_univ and card_univ_diff ESTIMATED CHANGES Modified src/data/fintype.lean + theorem finset.card_univ + theorem finset.card_univ_diff 2019-03-05 09:21:45+01:00 c0b1eb1 refactor(data/finset): correct name sdiff_disjoint -> disjoint_sdiff; add sdiff_disjoint ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.disjoint_sdiff + theorem finset.sdiff_disjoint Modified src/topology/algebra/infinite_sum.lean 2019-03-05 09:21:45+01:00 b3c749b remove superflous parameter from bot_eq_zero ESTIMATED CHANGES Modified src/algebra/ordered_group.lean +/- theorem bot_eq_zero 2019-03-05 09:21:45+01:00 73f1a08 feat(data/finset): add filter_empty, filter_subset_filter, prod_filter ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem finset.prod_filter Modified src/data/finset.lean + theorem finset.filter_empty + theorem finset.filter_subset_filter 2019-03-05 09:21:45+01:00 b9ead4d feat(data/finset): add disjoint_bind_left/right ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.disjoint_bind_left + theorem finset.disjoint_bind_right 2019-03-05 09:21:45+01:00 f82f5f2 refactor(algebra): canonically_ordered_monoid extends order_bot ESTIMATED CHANGES Modified src/algebra/ordered_group.lean + theorem bot_eq_zero Modified src/algebra/ordered_ring.lean Modified src/data/multiset.lean Modified src/data/nat/enat.lean Modified src/data/real/nnreal.lean Modified src/set_theory/cardinal.lean 2019-03-05 09:21:45+01:00 f07a558 feat(data/equiv): add subtype_pi_equiv_pi ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.subtype_pi_equiv_pi 2019-03-05 09:21:45+01:00 8070c05 feat(data/set/lattice): more rules for disjoint sets ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.disjoint_compl +/- theorem set.disjoint_diff + theorem set.disjoint_image_image + theorem set.disjoint_singleton_left + theorem set.disjoint_singleton_right 2019-03-05 09:21:45+01:00 c53ac41 feat(data/set): relate range and image to Union ESTIMATED CHANGES Modified src/data/set/lattice.lean + theorem set.image_eq_Union + theorem set.range_eq_Union 2019-03-05 09:21:45+01:00 41038ba feat(data/set): add exists_maximal_wrt ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite.exists_maximal_wrt 2019-03-05 09:21:45+01:00 146d73c feat(data/set): add finite_image_iff_on ESTIMATED CHANGES Modified src/data/set/finite.lean + theorem set.finite_image_iff_on +/- theorem set.finite_of_finite_image + theorem set.finite_of_finite_image_on 2019-03-05 09:21:45+01:00 84a5f4d feat(data/set): add subset_image_iff and subset_range_iff ESTIMATED CHANGES Modified src/data/set/function.lean + theorem set.subset_image_iff + theorem set.subset_range_iff 2019-03-05 09:21:45+01:00 cbe2f61 feat(logic/function): add inv_fun_neg ESTIMATED CHANGES Modified src/logic/function.lean + theorem function.inv_fun_neg 2019-03-05 09:21:45+01:00 73db4c7 feat(logic/function): add injective.ne ESTIMATED CHANGES Modified src/logic/function.lean + theorem function.injective.ne 2019-03-05 09:21:45+01:00 c819617 feat(logic): add plift.down_inj ESTIMATED CHANGES Modified src/logic/basic.lean + theorem plift.down_inj 2019-03-05 09:21:45+01:00 985445f feat(linear_algebra/multivariate_polynomial): relate total_degree to degrees, add, zero, mul ESTIMATED CHANGES Modified src/linear_algebra/multivariate_polynomial.lean + theorem mv_polynomial.total_degree_C + theorem mv_polynomial.total_degree_add + theorem mv_polynomial.total_degree_eq + theorem mv_polynomial.total_degree_finset_prod + theorem mv_polynomial.total_degree_le_degrees_card + theorem mv_polynomial.total_degree_list_prod + theorem mv_polynomial.total_degree_mul + theorem mv_polynomial.total_degree_multiset_prod + theorem mv_polynomial.total_degree_one + theorem mv_polynomial.total_degree_zero 2019-03-05 09:21:45+01:00 78fd58d feat(linear_algebra/multivariate_polynomial): add degrees ESTIMATED CHANGES Modified src/linear_algebra/multivariate_polynomial.lean +/- def mv_polynomial.degree_of + def mv_polynomial.degrees + theorem mv_polynomial.degrees_C + theorem mv_polynomial.degrees_X + theorem mv_polynomial.degrees_add + theorem mv_polynomial.degrees_monomial + theorem mv_polynomial.degrees_monomial_eq + theorem mv_polynomial.degrees_mul + theorem mv_polynomial.degrees_neg + theorem mv_polynomial.degrees_one + theorem mv_polynomial.degrees_pow + theorem mv_polynomial.degrees_prod + theorem mv_polynomial.degrees_sub + theorem mv_polynomial.degrees_sum + theorem mv_polynomial.degrees_zero +/- def mv_polynomial.vars 2019-03-05 09:21:45+01:00 c2d8bc2 feat(data/finsupp): relatie to_multiset to 0, +, single, card, map, prod, and to_finset ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.card_to_multiset + theorem finsupp.prod_to_multiset + theorem finsupp.to_finset_to_multiset + theorem finsupp.to_multiset_add + theorem finsupp.to_multiset_map + theorem finsupp.to_multiset_single + theorem finsupp.to_multiset_zero 2019-03-05 09:21:45+01:00 857842d feat(data/finsupp): add support_mul ESTIMATED CHANGES Modified src/data/finsupp.lean + theorem finsupp.support_mul 2019-03-05 09:21:45+01:00 a77797f feat(data/multiset): add prod_smul ESTIMATED CHANGES Modified src/data/multiset.lean + theorem multiset.prod_smul 2019-03-05 09:21:45+01:00 e924745 feat(data/finset): add multiset.count_sup ESTIMATED CHANGES Modified src/data/finset.lean + theorem multiset.count_sup 2019-03-05 09:21:45+01:00 e07cac5 feat(data/finset): add to_finset_smul ESTIMATED CHANGES Modified src/data/finset.lean + theorem multiset.to_finset_smul 2019-03-05 09:21:45+01:00 f24b01b feat(algebra/group_power): smul and pow are monoid homs ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem is_add_monoid_hom.map_smul + theorem is_monoid_hom.map_pow 2019-03-05 09:21:45+01:00 32642e1 feat(linear_algebra): add dim_sup_add_dim_inf_eq ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.range_of_le + theorem submodule.subtype_comp_of_le Modified src/linear_algebra/dimension.lean + theorem dim_add_dim_split + theorem dim_sup_add_dim_inf_eq 2019-03-04 16:26:09+01:00 f46f0a6 feat(tactic/fin_cases): case bashing on finset, list, and fintype hypotheses. (#775) ESTIMATED CHANGES Modified docs/tactics.md Modified src/data/int/basic.lean + theorem int.add_def + theorem int.mul_def Modified src/data/nat/basic.lean + theorem nat.add_def + theorem nat.mul_def Modified src/tactic/fin_cases.lean Modified test/fin_cases.lean 2019-03-04 12:37:27+01:00 6cd0341 docs(extras/tactic_writing): add ``%%(reflect n)`` to the tactic writing guide (#786) ESTIMATED CHANGES Modified docs/extras/tactic_writing.md 2019-03-03 19:05:12+01:00 201413b chore(topology): Splits topology.basic and topology.continuity (#785) Also, the most basic aspects of continuity are now in topology.basic ESTIMATED CHANGES Modified src/category_theory/instances/topological_spaces.lean Modified src/data/analysis/topology.lean Modified src/topology/algebra/topological_structures.lean Added src/topology/bases.lean + theorem topological_space.Union_basis_of_is_open + theorem topological_space.is_open_Union_countable + theorem topological_space.is_open_generated_countable_inter + theorem topological_space.is_open_of_is_topological_basis + theorem topological_space.is_open_sUnion_countable + def topological_space.is_topological_basis + theorem topological_space.is_topological_basis_of_open_of_nhds + theorem topological_space.is_topological_basis_of_subbasis + theorem topological_space.mem_basis_subset_of_mem_open + theorem topological_space.mem_nhds_of_is_topological_basis + theorem topological_space.sUnion_basis_of_is_open + theorem topological_space.second_countable_topology_induced Modified src/topology/basic.lean - theorem closure_singleton - theorem coinduced_compose - theorem coinduced_id - theorem coinduced_inf - theorem coinduced_infi - theorem coinduced_mono - theorem coinduced_top - def compact - theorem compact_Union_of_compact - theorem compact_adherence_nhdset - theorem compact_bUnion_of_compact - theorem compact_diff - theorem compact_elim_finite_subcover - theorem compact_elim_finite_subcover_image - theorem compact_empty - theorem compact_iff_finite_subcover - theorem compact_iff_ultrafilter_le_nhds - theorem compact_inter - theorem compact_of_closed - theorem compact_of_finite - theorem compact_of_finite_subcover - theorem compact_of_is_closed_subset - theorem compact_singleton - theorem compact_union_of_compact - theorem compact_univ - theorem compl_singleton_mem_nhds - def connected_component + theorem continuous.comp + theorem continuous.tendsto + def continuous + def continuous_at + theorem continuous_at_iff_ultrafilter + def continuous_at_within + theorem continuous_const + theorem continuous_id + theorem continuous_if + theorem continuous_iff_continuous_at + theorem continuous_iff_is_closed + theorem continuous_iff_ultrafilter + def continuous_on - theorem eq_irreducible_component - theorem eq_of_nhds_eq_nhds - theorem eq_of_nhds_neq_bot - theorem eq_top_of_singletons_open - theorem exists_irreducible - theorem exists_mem_inter - theorem exists_open_singleton_of_fintype - theorem gc_induced_coinduced - theorem gc_nhds - theorem generate_from_le - theorem generate_from_le_iff_subset_is_open - theorem generate_from_mono - def gi_generate_from + theorem image_closure_subset_closure_image - theorem induced_bot - theorem induced_compose - theorem induced_generate_from_eq - theorem induced_id - theorem induced_le_iff_le_coinduced - theorem induced_mono - theorem induced_sup - theorem induced_supr - def irreducible_component - theorem irreducible_component_subset_connected_component - theorem irreducible_exists_mem_inter - def is_clopen - theorem is_clopen_compl - theorem is_clopen_compl_iff - theorem is_clopen_diff - theorem is_clopen_empty - theorem is_clopen_iff - theorem is_clopen_inter - theorem is_clopen_union - theorem is_clopen_univ - theorem is_closed_connected_component - theorem is_closed_induced_iff - theorem is_closed_irreducible_component - theorem is_closed_singleton - def is_connected - theorem is_connected_closure - theorem is_connected_connected_component - theorem is_connected_empty - theorem is_connected_of_is_irreducible - theorem is_connected_sUnion - theorem is_connected_singleton - theorem is_connected_union - def is_irreducible - theorem is_irreducible_closure - theorem is_irreducible_empty - theorem is_irreducible_irreducible_component - theorem is_irreducible_singleton - theorem is_open_coinduced - theorem is_open_discrete - theorem is_open_induced_iff - def is_totally_disconnected - theorem is_totally_disconnected_empty - theorem is_totally_disconnected_of_is_totally_separated - theorem is_totally_disconnected_singleton - def is_totally_separated - theorem is_totally_separated_empty - theorem is_totally_separated_singleton - theorem le_of_nhds_le_nhds - theorem lim_eq - theorem lim_nhds_eq - theorem lim_nhds_eq_of_closure - theorem map_nhds_induced_of_surjective + theorem mem_closure - theorem mem_connected_component - theorem mem_irreducible_component - theorem mem_nhds_induced - theorem mem_nhds_subtype - theorem mem_nhds_within_subtype - theorem mk_of_closure_sets - theorem nhds_Sup - theorem nhds_bot - theorem nhds_cons - theorem nhds_discrete - theorem nhds_eq_nhds_iff - theorem nhds_induced - theorem nhds_is_closed - theorem nhds_le_nhds_iff - theorem nhds_list - theorem nhds_mono - theorem nhds_nil - theorem nhds_subtype - theorem nhds_sup - theorem nhds_supr - theorem nhds_top - theorem nhds_within_eq_map_subtype_val - theorem nhds_within_subtype - theorem normal_separation + theorem open_dom_of_pcontinuous + def pcontinuous + theorem pcontinuous_iff' - theorem principal_subtype - theorem quotient_dense_of_dense - theorem subset_connected_component - theorem t2_iff_nhds - theorem t2_iff_ultrafilter - theorem t2_separation - theorem tendsto_nhds_unique - theorem tendsto_nhds_within_iff_subtype - theorem topological_space.Union_basis_of_is_open - def topological_space.closeds - def topological_space.coinduced - def topological_space.generate_from - inductive topological_space.generate_open - def topological_space.induced - theorem topological_space.is_open_Union_countable - theorem topological_space.is_open_generated_countable_inter - theorem topological_space.is_open_of_is_topological_basis - theorem topological_space.is_open_sUnion_countable - def topological_space.is_topological_basis - theorem topological_space.is_topological_basis_of_open_of_nhds - theorem topological_space.is_topological_basis_of_subbasis - theorem topological_space.mem_basis_subset_of_mem_open - theorem topological_space.mem_nhds_of_is_topological_basis - theorem topological_space.nhds_generate_from - theorem topological_space.nhds_mk_of_nhds - def topological_space.nonempty_compacts - theorem topological_space.opens.Sup_s - theorem topological_space.opens.empty_eq - theorem topological_space.opens.ext - def topological_space.opens.gc - def topological_space.opens.gi - theorem topological_space.opens.gi_choice_val - theorem topological_space.opens.inter_eq - def topological_space.opens.interior - def topological_space.opens.is_basis - theorem topological_space.opens.is_basis_iff_cover - theorem topological_space.opens.is_basis_iff_nbhd - theorem topological_space.opens.union_eq - def topological_space.opens - theorem topological_space.sUnion_basis_of_is_open - theorem topological_space.second_countable_topology_induced - theorem topological_space.tendsto_nhds_generate_from Modified src/topology/compact_open.lean Renamed src/topology/continuity.lean to src/topology/constructions.lean - theorem closure_induced - theorem compact_image - theorem compact_range - theorem continuous.comp - theorem continuous.tendsto - def continuous - theorem continuous_Inf_dom - theorem continuous_Inf_rng - theorem continuous_Prop - theorem continuous_Sup_dom - theorem continuous_Sup_rng - def continuous_at - theorem continuous_at_iff_ultrafilter - theorem continuous_at_within.tendsto_nhds_within_image - def continuous_at_within - theorem continuous_at_within_iff_continuous_at_restrict - theorem continuous_at_within_iff_ptendsto_res - theorem continuous_at_within_univ - theorem continuous_bot - theorem continuous_coinduced_dom - theorem continuous_coinduced_rng - theorem continuous_const - theorem continuous_generated_from - theorem continuous_id - theorem continuous_if - theorem continuous_iff_continuous_at - theorem continuous_iff_induced_le - theorem continuous_iff_is_closed - theorem continuous_iff_le_coinduced - theorem continuous_iff_ultrafilter - theorem continuous_induced_dom - theorem continuous_induced_rng - theorem continuous_inf_dom - theorem continuous_inf_rng_left - theorem continuous_inf_rng_right - theorem continuous_infi_dom - theorem continuous_infi_rng - theorem continuous_le_dom - theorem continuous_le_rng - theorem continuous_of_discrete_topology - def continuous_on - theorem continuous_on_iff' - theorem continuous_on_iff - theorem continuous_on_iff_continuous_restrict - theorem continuous_sup_dom_left - theorem continuous_sup_dom_right - theorem continuous_sup_rng - theorem continuous_supr_dom - theorem continuous_supr_rng - theorem continuous_top - theorem dense_embedding.closure_image_nhds_of_nhds - theorem dense_embedding.closure_range - theorem dense_embedding.comap_nhds_neq_bot - theorem dense_embedding.continuous_extend - def dense_embedding.extend - theorem dense_embedding.extend_e_eq - theorem dense_embedding.extend_eq - theorem dense_embedding.inj_iff - theorem dense_embedding.mk' - theorem dense_embedding.self_sub_closure_image_preimage_of_open - theorem dense_embedding.tendsto_comap_nhds_nhds - theorem dense_embedding.tendsto_extend - structure dense_embedding - theorem embedding.closure_eq_preimage_closure_image - theorem embedding.continuous - theorem embedding.continuous_iff - theorem embedding.map_nhds_eq - theorem embedding.tendsto_nhds_iff - def embedding - theorem embedding_compose - theorem embedding_id - theorem embedding_is_closed - theorem embedding_of_embedding_compose - theorem embedding_open - theorem embedding_prod_mk - theorem image_closure_subset_closure_image - theorem is_open_induced - theorem is_open_induced_eq - theorem is_open_map.of_inverse - theorem is_open_map.to_quotient_map - def is_open_map - theorem is_open_map_iff_nhds_le - theorem is_open_singleton_true - theorem map_nhds_induced_eq - theorem mem_closure - theorem nhds_induced_eq_comap - theorem nhds_within_le_comap - def nonempty_compacts.to_closeds - theorem open_dom_of_pcontinuous - def pcontinuous - theorem pcontinuous_iff' - def quotient_map Added src/topology/maps.lean + theorem continuous_Prop + theorem dense_embedding.closure_image_nhds_of_nhds + theorem dense_embedding.closure_range + theorem dense_embedding.comap_nhds_neq_bot + theorem dense_embedding.continuous_extend + def dense_embedding.extend + theorem dense_embedding.extend_e_eq + theorem dense_embedding.extend_eq + theorem dense_embedding.inj_iff + theorem dense_embedding.mk' + theorem dense_embedding.self_sub_closure_image_preimage_of_open + theorem dense_embedding.tendsto_comap_nhds_nhds + theorem dense_embedding.tendsto_extend + structure dense_embedding + theorem embedding.closure_eq_preimage_closure_image + theorem embedding.continuous + theorem embedding.continuous_iff + theorem embedding.map_nhds_eq + theorem embedding.tendsto_nhds_iff + def embedding + theorem embedding_compose + theorem embedding_id + theorem embedding_is_closed + theorem embedding_of_embedding_compose + theorem embedding_open + theorem embedding_prod_mk + theorem is_open_map.of_inverse + theorem is_open_map.to_quotient_map + def is_open_map + theorem is_open_map_iff_nhds_le + theorem is_open_singleton_true + def quotient_map Modified src/topology/metric_space/closeds.lean Added src/topology/opens.lean + def topological_space.closeds + def topological_space.nonempty_compacts.to_closeds + def topological_space.nonempty_compacts + theorem topological_space.opens.Sup_s + theorem topological_space.opens.empty_eq + theorem topological_space.opens.ext + def topological_space.opens.gc + def topological_space.opens.gi + theorem topological_space.opens.gi_choice_val + theorem topological_space.opens.inter_eq + def topological_space.opens.interior + def topological_space.opens.is_basis + theorem topological_space.opens.is_basis_iff_cover + theorem topological_space.opens.is_basis_iff_nbhd + theorem topological_space.opens.union_eq + def topological_space.opens Added src/topology/order.lean + theorem closure_induced + theorem coinduced_compose + theorem coinduced_id + theorem coinduced_inf + theorem coinduced_infi + theorem coinduced_mono + theorem coinduced_top + theorem continuous_Inf_dom + theorem continuous_Inf_rng + theorem continuous_Sup_dom + theorem continuous_Sup_rng + theorem continuous_at_within.tendsto_nhds_within_image + theorem continuous_at_within_iff_continuous_at_restrict + theorem continuous_at_within_iff_ptendsto_res + theorem continuous_at_within_univ + theorem continuous_bot + theorem continuous_coinduced_dom + theorem continuous_coinduced_rng + theorem continuous_generated_from + theorem continuous_iff_induced_le + theorem continuous_iff_le_coinduced + theorem continuous_induced_dom + theorem continuous_induced_rng + theorem continuous_inf_dom + theorem continuous_inf_rng_left + theorem continuous_inf_rng_right + theorem continuous_infi_dom + theorem continuous_infi_rng + theorem continuous_le_dom + theorem continuous_le_rng + theorem continuous_of_discrete_topology + theorem continuous_on_iff' + theorem continuous_on_iff + theorem continuous_on_iff_continuous_restrict + theorem continuous_sup_dom_left + theorem continuous_sup_dom_right + theorem continuous_sup_rng + theorem continuous_supr_dom + theorem continuous_supr_rng + theorem continuous_top + theorem eq_of_nhds_eq_nhds + theorem eq_top_of_singletons_open + theorem gc_induced_coinduced + theorem gc_nhds + theorem generate_from_le + theorem generate_from_le_iff_subset_is_open + theorem generate_from_mono + def gi_generate_from + theorem induced_bot + theorem induced_compose + theorem induced_generate_from_eq + theorem induced_id + theorem induced_le_iff_le_coinduced + theorem induced_mono + theorem induced_sup + theorem induced_supr + theorem is_closed_induced_iff + theorem is_open_coinduced + theorem is_open_discrete + theorem is_open_induced + theorem is_open_induced_eq + theorem is_open_induced_iff + theorem le_of_nhds_le_nhds + theorem map_nhds_induced_eq + theorem map_nhds_induced_of_surjective + theorem mem_nhds_induced + theorem mem_nhds_subtype + theorem mem_nhds_within_subtype + theorem mk_of_closure_sets + theorem nhds_Sup + theorem nhds_bot + theorem nhds_cons + theorem nhds_discrete + theorem nhds_induced + theorem nhds_induced_eq_comap + theorem nhds_list + theorem nhds_mono + theorem nhds_nil + theorem nhds_subtype + theorem nhds_sup + theorem nhds_supr + theorem nhds_top + theorem nhds_within_eq_map_subtype_val + theorem nhds_within_le_comap + theorem nhds_within_subtype + theorem principal_subtype + theorem quotient_dense_of_dense + theorem tendsto_nhds_within_iff_subtype + def topological_space.coinduced + def topological_space.generate_from + inductive topological_space.generate_open + def topological_space.induced + theorem topological_space.nhds_generate_from + theorem topological_space.nhds_mk_of_nhds + theorem topological_space.tendsto_nhds_generate_from Added src/topology/separation.lean + theorem closure_singleton + theorem compl_singleton_mem_nhds + theorem eq_of_nhds_neq_bot + theorem exists_open_singleton_of_fintype + theorem is_closed_singleton + theorem lim_eq + theorem lim_nhds_eq + theorem lim_nhds_eq_of_closure + theorem nhds_eq_nhds_iff + theorem nhds_is_closed + theorem nhds_le_nhds_iff + theorem normal_separation + theorem t2_iff_nhds + theorem t2_iff_ultrafilter + theorem t2_separation + theorem tendsto_nhds_unique Modified src/topology/sequences.lean Modified src/topology/stone_cech.lean Added src/topology/subset_properties.lean + def compact + theorem compact_Union_of_compact + theorem compact_adherence_nhdset + theorem compact_bUnion_of_compact + theorem compact_diff + theorem compact_elim_finite_subcover + theorem compact_elim_finite_subcover_image + theorem compact_empty + theorem compact_iff_finite_subcover + theorem compact_iff_ultrafilter_le_nhds + theorem compact_image + theorem compact_inter + theorem compact_of_closed + theorem compact_of_finite + theorem compact_of_finite_subcover + theorem compact_of_is_closed_subset + theorem compact_range + theorem compact_singleton + theorem compact_union_of_compact + theorem compact_univ + def connected_component + theorem eq_irreducible_component + theorem exists_irreducible + theorem exists_mem_inter + def irreducible_component + theorem irreducible_component_subset_connected_component + theorem irreducible_exists_mem_inter + def is_clopen + theorem is_clopen_compl + theorem is_clopen_compl_iff + theorem is_clopen_diff + theorem is_clopen_empty + theorem is_clopen_iff + theorem is_clopen_inter + theorem is_clopen_union + theorem is_clopen_univ + theorem is_closed_connected_component + theorem is_closed_irreducible_component + def is_connected + theorem is_connected_closure + theorem is_connected_connected_component + theorem is_connected_empty + theorem is_connected_of_is_irreducible + theorem is_connected_sUnion + theorem is_connected_singleton + theorem is_connected_union + def is_irreducible + theorem is_irreducible_closure + theorem is_irreducible_empty + theorem is_irreducible_irreducible_component + theorem is_irreducible_singleton + def is_totally_disconnected + theorem is_totally_disconnected_empty + theorem is_totally_disconnected_of_is_totally_separated + theorem is_totally_disconnected_singleton + def is_totally_separated + theorem is_totally_separated_empty + theorem is_totally_separated_singleton + theorem mem_connected_component + theorem mem_irreducible_component + theorem subset_connected_component Modified src/topology/uniform_space/basic.lean 2019-03-03 11:01:43-05:00 1084868 feat(analysis/{specific_limits,infinite_sum}): Cauchy of geometric bound (#753) ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem cauchy_seq_of_le_geometric Modified src/topology/algebra/infinite_sum.lean + theorem cauchy_seq_of_has_sum_dist 2019-03-03 13:19:35 1f90e18 feat(ring_theory/ideal_operations): Chinese Remainder Theorem (#774) ESTIMATED CHANGES Modified src/ring_theory/ideal_operations.lean + theorem ideal.bijective_quotient_inf_to_pi_quotient + theorem ideal.exists_sub_mem + theorem ideal.exists_sub_one_mem_and_mem + theorem ideal.is_ring_hom_quotient_inf_to_pi_quotient + def ideal.quotient_inf_to_pi_quotient 2019-03-02 17:42:14-05:00 fb8001d hopefully fixed for good this time ESTIMATED CHANGES Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 182b2a3 fix properly ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.nat_abs_mul_self' 2019-03-02 17:42:14-05:00 a4cc8b7 fix build ESTIMATED CHANGES Modified src/data/gaussian_int.lean + theorem gaussian_int.nat_abs_norm_eq Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 a75d57c fix build ESTIMATED CHANGES Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 8dcd071 generalize norm to zsqrtd ESTIMATED CHANGES Modified src/data/gaussian_int.lean + theorem gaussian_int.coe_nat_abs_norm + theorem gaussian_int.nat_abs_norm_mod_lt + theorem gaussian_int.nat_cast_nat_abs_norm - def gaussian_int.norm - theorem gaussian_int.norm_eq_one_iff + theorem gaussian_int.norm_mod_lt - theorem gaussian_int.norm_mul - theorem gaussian_int.norm_nat_cast + theorem gaussian_int.norm_nonneg - theorem gaussian_int.norm_one - theorem gaussian_int.norm_zero Modified src/number_theory/pell.lean + def zsqrtd.norm + theorem zsqrtd.norm_eq_mul_conj + theorem zsqrtd.norm_eq_one_iff + theorem zsqrtd.norm_int_cast + theorem zsqrtd.norm_mul + theorem zsqrtd.norm_nat_cast + theorem zsqrtd.norm_nonneg + theorem zsqrtd.norm_one + theorem zsqrtd.norm_zero Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 d98cae7 fix build ESTIMATED CHANGES Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 5cbd7fa changing names ESTIMATED CHANGES Modified src/data/gaussian_int.lean - theorem gaussian_int.int_cast_im - theorem gaussian_int.int_cast_re - theorem gaussian_int.to_complex_im' + theorem gaussian_int.to_complex_im - theorem gaussian_int.to_complex_re' + theorem gaussian_int.to_complex_re + theorem gaussian_int.to_real_im + theorem gaussian_int.to_real_re Modified src/data/zmod/quadratic_reciprocity.lean + theorem zmodp.exists_pow_two_eq_neg_one_iff_mod_four_ne_three + theorem zmodp.exists_pow_two_eq_prime_iff_of_mod_four_eq_one + theorem zmodp.exists_pow_two_eq_prime_iff_of_mod_four_eq_three - theorem zmodp.is_square_iff_is_not_square_of_mod_four_eq_three - theorem zmodp.is_square_iff_is_square_of_mod_four_eq_one - theorem zmodp.neg_one_is_square_iff_mod_four_ne_three 2019-03-02 17:42:14-05:00 a9dfaba The year is 2019 ESTIMATED CHANGES Modified src/data/gaussian_int.lean Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 c36470f put sum_two_squares in nat.prime namespace ESTIMATED CHANGES Modified src/number_theory/sum_two_squares.lean + theorem nat.prime.sum_two_squares - theorem sum_two_squares 2019-03-02 17:42:14-05:00 d8f0921 move lemmas to correct places ESTIMATED CHANGES Added src/data/gaussian_int.lean + theorem gaussian_int.div_def + theorem gaussian_int.int_cast_im + theorem gaussian_int.int_cast_re + theorem gaussian_int.mod_def + theorem gaussian_int.nat_cast_complex_norm + theorem gaussian_int.nat_cast_real_norm + def gaussian_int.norm + theorem gaussian_int.norm_eq_one_iff + theorem gaussian_int.norm_eq_zero + theorem gaussian_int.norm_le_norm_mul_left + theorem gaussian_int.norm_mul + theorem gaussian_int.norm_nat_cast + theorem gaussian_int.norm_one + theorem gaussian_int.norm_pos + theorem gaussian_int.norm_sq_div_sub_div_lt_one + theorem gaussian_int.norm_sq_le_norm_sq_of_re_le_of_im_le + theorem gaussian_int.norm_zero + def gaussian_int.to_complex + theorem gaussian_int.to_complex_add + theorem gaussian_int.to_complex_def' + theorem gaussian_int.to_complex_def + theorem gaussian_int.to_complex_def₂ + theorem gaussian_int.to_complex_div_im + theorem gaussian_int.to_complex_div_re + theorem gaussian_int.to_complex_eq_zero + theorem gaussian_int.to_complex_im' + theorem gaussian_int.to_complex_inj + theorem gaussian_int.to_complex_mul + theorem gaussian_int.to_complex_neg + theorem gaussian_int.to_complex_one + theorem gaussian_int.to_complex_re' + theorem gaussian_int.to_complex_sub + theorem gaussian_int.to_complex_zero + def gaussian_int Modified src/number_theory/sum_two_squares.lean - theorem gaussian_int.div_def - theorem gaussian_int.int_cast_im - theorem gaussian_int.int_cast_re - theorem gaussian_int.mod_def - theorem gaussian_int.nat_cast_complex_norm - theorem gaussian_int.nat_cast_real_norm - def gaussian_int.norm - theorem gaussian_int.norm_eq_one_iff - theorem gaussian_int.norm_eq_zero - theorem gaussian_int.norm_le_norm_mul_left - theorem gaussian_int.norm_mul - theorem gaussian_int.norm_nat_cast - theorem gaussian_int.norm_one - theorem gaussian_int.norm_pos - theorem gaussian_int.norm_sq_div_sub_div_lt_one - theorem gaussian_int.norm_sq_le_norm_sq_of_re_le_of_im_le - theorem gaussian_int.norm_zero - def gaussian_int.to_complex - theorem gaussian_int.to_complex_add - theorem gaussian_int.to_complex_def' - theorem gaussian_int.to_complex_def - theorem gaussian_int.to_complex_def₂ - theorem gaussian_int.to_complex_div_im - theorem gaussian_int.to_complex_div_re - theorem gaussian_int.to_complex_eq_zero - theorem gaussian_int.to_complex_im' - theorem gaussian_int.to_complex_inj - theorem gaussian_int.to_complex_mul - theorem gaussian_int.to_complex_neg - theorem gaussian_int.to_complex_one - theorem gaussian_int.to_complex_re' - theorem gaussian_int.to_complex_sub - theorem gaussian_int.to_complex_zero - def gaussian_int 2019-03-02 17:42:14-05:00 4e48324 fix build ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.add_eq_one_iff +/- theorem nat.le_induction + theorem nat.mul_eq_one_iff + theorem nat.mul_left_eq_self_iff + theorem nat.mul_right_eq_self_iff Modified src/data/nat/prime.lean - theorem nat.prime.mul_eq_prime_pow_two + theorem nat.prime.mul_eq_prime_pow_two_iff Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 9c9aee4 finish proof of sum two squares ESTIMATED CHANGES Modified src/data/nat/prime.lean + theorem nat.prime.mul_eq_prime_pow_two Modified src/data/zmod/quadratic_reciprocity.lean Modified src/number_theory/sum_two_squares.lean + theorem gaussian_int.norm_eq_one_iff + theorem gaussian_int.norm_le_norm_mul_left + theorem gaussian_int.norm_nat_cast + theorem gaussian_int.norm_one + theorem gaussian_int.norm_zero + theorem sum_two_squares 2019-03-02 17:42:14-05:00 bd86c0d commit properly ESTIMATED CHANGES Modified src/data/zmod/quadratic_reciprocity.lean + theorem zmodp.neg_one_is_square_iff_mod_four_ne_three Modified src/number_theory/pell.lean +/- structure zsqrtd Modified src/number_theory/sum_two_squares.lean 2019-03-02 17:42:14-05:00 49a85f4 prove Z[i] is a euclidean_domain ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem abs_sub_round + theorem rat.cast_round + def round Added src/number_theory/sum_two_squares.lean + theorem gaussian_int.div_def + theorem gaussian_int.int_cast_im + theorem gaussian_int.int_cast_re + theorem gaussian_int.mod_def + theorem gaussian_int.nat_cast_complex_norm + theorem gaussian_int.nat_cast_real_norm + def gaussian_int.norm + theorem gaussian_int.norm_eq_zero + theorem gaussian_int.norm_mul + theorem gaussian_int.norm_pos + theorem gaussian_int.norm_sq_div_sub_div_lt_one + theorem gaussian_int.norm_sq_le_norm_sq_of_re_le_of_im_le + def gaussian_int.to_complex + theorem gaussian_int.to_complex_add + theorem gaussian_int.to_complex_def' + theorem gaussian_int.to_complex_def + theorem gaussian_int.to_complex_def₂ + theorem gaussian_int.to_complex_div_im + theorem gaussian_int.to_complex_div_re + theorem gaussian_int.to_complex_eq_zero + theorem gaussian_int.to_complex_im' + theorem gaussian_int.to_complex_inj + theorem gaussian_int.to_complex_mul + theorem gaussian_int.to_complex_neg + theorem gaussian_int.to_complex_one + theorem gaussian_int.to_complex_re' + theorem gaussian_int.to_complex_sub + theorem gaussian_int.to_complex_zero + def gaussian_int 2019-03-02 19:55:17 1f4f2e4 refactor(*): move matrix.lean to data/ and determinant.lean to linear_algebra/ (#779) ESTIMATED CHANGES Renamed src/ring_theory/matrix.lean to src/data/matrix.lean Renamed src/ring_theory/determinant.lean to src/linear_algebra/determinant.lean 2019-03-01 22:25:45-05:00 8fbf296 feat(topology/metric_space/hausdorff_distance): Hausdorff distance ESTIMATED CHANGES Modified src/topology/basic.lean + def topological_space.closeds + def topological_space.nonempty_compacts Modified src/topology/continuity.lean + def nonempty_compacts.to_closeds Modified src/topology/metric_space/cau_seq_filter.lean + theorem ennreal.cauchy_seq_of_edist_le_half_pow + theorem ennreal.edist_le_two_mul_half_pow + theorem ennreal.half_pow_add_succ + theorem ennreal.half_pow_mono + theorem ennreal.half_pow_pos + theorem ennreal.half_pow_tendsto_zero + theorem sequentially_complete.B2_lim + theorem sequentially_complete.B2_pos - theorem sequentially_complete.FB_lim - theorem sequentially_complete.FB_pos - theorem sequentially_complete.F_lim - theorem sequentially_complete.F_pos Added src/topology/metric_space/closeds.lean + theorem emetric.closeds.edist_eq + theorem emetric.continuous_inf_edist_Hausdorff_edist + theorem emetric.is_closed_subsets_of_is_closed + theorem emetric.nonempty_compacts.is_closed_in_closeds + theorem emetric.nonempty_compacts.to_closeds.uniform_embedding + theorem metric.nonempty_compacts.dist_eq + theorem metric.uniform_continuous_inf_dist_Hausdorff_dist Added src/topology/metric_space/hausdorff_distance.lean + def emetric.Hausdorff_edist + theorem emetric.Hausdorff_edist_closure + theorem emetric.Hausdorff_edist_closure₁ + theorem emetric.Hausdorff_edist_closure₂ + theorem emetric.Hausdorff_edist_comm + theorem emetric.Hausdorff_edist_empty + theorem emetric.Hausdorff_edist_image + theorem emetric.Hausdorff_edist_le_ediam + theorem emetric.Hausdorff_edist_le_of_inf_edist + theorem emetric.Hausdorff_edist_le_of_mem_edist + theorem emetric.Hausdorff_edist_self + theorem emetric.Hausdorff_edist_self_closure + theorem emetric.Hausdorff_edist_triangle + theorem emetric.Hausdorff_edist_zero_iff_closure_eq_closure + theorem emetric.Hausdorff_edist_zero_iff_eq_of_closed + theorem emetric.continuous_inf_edist + theorem emetric.exists_edist_lt_of_Hausdorff_edist_lt + theorem emetric.exists_edist_lt_of_inf_edist_lt + def emetric.inf_edist + theorem emetric.inf_edist_closure + theorem emetric.inf_edist_empty + theorem emetric.inf_edist_image + theorem emetric.inf_edist_le_Hausdorff_edist_of_mem + theorem emetric.inf_edist_le_edist_of_mem + theorem emetric.inf_edist_le_inf_edist_add_Hausdorff_edist + theorem emetric.inf_edist_le_inf_edist_add_edist + theorem emetric.inf_edist_le_inf_edist_of_subset + theorem emetric.inf_edist_singleton + theorem emetric.inf_edist_union + theorem emetric.inf_edist_zero_of_mem + theorem emetric.mem_closure_iff_inf_edist_zero + theorem emetric.mem_iff_ind_edist_zero_of_closed + theorem emetric.ne_empty_of_Hausdorff_edist_ne_top + def metric.Hausdorff_dist + theorem metric.Hausdorff_dist_closure + theorem metric.Hausdorff_dist_closure₁ + theorem metric.Hausdorff_dist_closure₂ + theorem metric.Hausdorff_dist_comm + theorem metric.Hausdorff_dist_empty' + theorem metric.Hausdorff_dist_empty + theorem metric.Hausdorff_dist_image + theorem metric.Hausdorff_dist_le_diam + theorem metric.Hausdorff_dist_le_of_inf_dist + theorem metric.Hausdorff_dist_le_of_mem_dist + theorem metric.Hausdorff_dist_nonneg + theorem metric.Hausdorff_dist_self_closure + theorem metric.Hausdorff_dist_self_zero + theorem metric.Hausdorff_dist_triangle' + theorem metric.Hausdorff_dist_triangle + theorem metric.Hausdorff_dist_zero_iff_closure_eq_closure + theorem metric.Hausdorff_dist_zero_iff_eq_of_closed + theorem metric.Hausdorff_edist_ne_top_of_ne_empty_of_bounded + theorem metric.continuous_inf_dist + theorem metric.exists_dist_lt_of_Hausdorff_dist_lt' + theorem metric.exists_dist_lt_of_Hausdorff_dist_lt + theorem metric.exists_dist_lt_of_inf_dist_lt + def metric.inf_dist + theorem metric.inf_dist_empty + theorem metric.inf_dist_eq_closure + theorem metric.inf_dist_image + theorem metric.inf_dist_le_Hausdorff_dist_of_mem + theorem metric.inf_dist_le_dist_of_mem + theorem metric.inf_dist_le_inf_dist_add_Hausdorff_dist + theorem metric.inf_dist_le_inf_dist_add_dist + theorem metric.inf_dist_le_inf_dist_of_subset + theorem metric.inf_dist_nonneg + theorem metric.inf_dist_singleton + theorem metric.inf_dist_zero_of_mem + theorem metric.inf_edist_ne_top + theorem metric.mem_closure_iff_inf_dist_zero + theorem metric.mem_iff_ind_dist_zero_of_closed + theorem metric.uniform_continuous_inf_dist 2019-03-01 21:24:00-05:00 be88cec feat(analysis/exponential): added inequality lemmas ESTIMATED CHANGES Modified src/analysis/exponential.lean + theorem real.log_le_log + theorem real.mul_rpow + theorem real.one_le_rpow +/- theorem real.pow_nat_rpow_nat_inv + theorem real.rpow_le_rpow Modified src/data/complex/exponential.lean +/- theorem real.exp_le_exp 2019-03-01 21:15:38 0bb0cec feat(group_theory): free_group and free_abelian_group are lawful monads (#737) ESTIMATED CHANGES Modified src/group_theory/free_abelian_group.lean + theorem free_abelian_group.add_bind + theorem free_abelian_group.add_seq + theorem free_abelian_group.map_add + theorem free_abelian_group.map_neg + theorem free_abelian_group.map_pure + theorem free_abelian_group.map_sub + theorem free_abelian_group.map_zero + theorem free_abelian_group.neg_bind + theorem free_abelian_group.neg_seq + theorem free_abelian_group.pure_bind + theorem free_abelian_group.pure_seq + theorem free_abelian_group.seq_add + theorem free_abelian_group.seq_neg + theorem free_abelian_group.seq_sub + theorem free_abelian_group.seq_zero + theorem free_abelian_group.sub_bind + theorem free_abelian_group.sub_seq + theorem free_abelian_group.zero_bind + theorem free_abelian_group.zero_seq Modified src/group_theory/free_group.lean + theorem free_group.inv_bind +/- theorem free_group.map.comp + theorem free_group.map_inv + theorem free_group.map_mul + theorem free_group.map_one + theorem free_group.map_pure + theorem free_group.mul_bind + theorem free_group.one_bind + theorem free_group.pure_bind +/- theorem free_group.quot_lift_mk +/- theorem free_group.quot_lift_on_mk +/- theorem free_group.to_group_eq_prod_map +/- def free_group 2019-03-01 21:14:41 116cfff feat(data/zmod/basic): cast_mod_nat' and cast_mod_int' (#783) * cast_mod_int' * cast_val_int' ESTIMATED CHANGES Modified src/data/zmod/basic.lean + theorem zmod.cast_mod_int' + theorem zmod.cast_mod_nat' + theorem zmod.eq_iff_modeq_int' + theorem zmod.eq_iff_modeq_nat' 2019-03-01 10:20:26-05:00 04b5f88 refactor(analysis/asymptotics): minor formatting changes ESTIMATED CHANGES Modified src/analysis/asymptotics.lean +/- theorem asymptotics.is_O.add +/- theorem asymptotics.is_O.sub +/- theorem asymptotics.is_O.symm +/- theorem asymptotics.is_O_const_mul_left +/- theorem asymptotics.is_O_const_smul_left_iff +/- theorem asymptotics.is_O_refl +/- theorem asymptotics.is_o.add +/- theorem asymptotics.is_o.sub +/- theorem asymptotics.is_o.symm +/- theorem asymptotics.is_o.to_is_O +/- theorem asymptotics.is_o_const_smul_left +/- theorem asymptotics.tendsto_nhds_zero_of_is_o 2019-03-01 10:20:26-05:00 6363212 feat(analysis/normed_space/deriv): generalize to spaces over any normed field ESTIMATED CHANGES Modified src/analysis/normed_space/deriv.lean - theorem has_fderiv_at_filter_equiv_aux + theorem has_fderiv_at_filter_real_equiv 2019-03-01 10:20:26-05:00 89b8915 feat(analysis/normed_space/deriv): add readable proof of chain rule ESTIMATED CHANGES Modified src/analysis/normed_space/deriv.lean 2019-03-01 10:20:26-05:00 5dd1ba5 feat(analysis/*): is_bigo -> is_O, is_littleo -> is_o ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_O.add + theorem asymptotics.is_O.comp + theorem asymptotics.is_O.congr + theorem asymptotics.is_O.congr_left + theorem asymptotics.is_O.congr_of_sub + theorem asymptotics.is_O.congr_right + theorem asymptotics.is_O.mono + theorem asymptotics.is_O.sub + theorem asymptotics.is_O.symm + theorem asymptotics.is_O.trans + theorem asymptotics.is_O.trans_is_o + theorem asymptotics.is_O.trans_tendsto + theorem asymptotics.is_O.tri + def asymptotics.is_O + theorem asymptotics.is_O_comm + theorem asymptotics.is_O_congr + theorem asymptotics.is_O_congr_left + theorem asymptotics.is_O_congr_right + theorem asymptotics.is_O_const_mul_left + theorem asymptotics.is_O_const_mul_left_iff + theorem asymptotics.is_O_const_mul_right_iff + theorem asymptotics.is_O_const_one + theorem asymptotics.is_O_const_smul_left + theorem asymptotics.is_O_const_smul_left_iff + theorem asymptotics.is_O_const_smul_right + theorem asymptotics.is_O_iff + theorem asymptotics.is_O_join + theorem asymptotics.is_O_mul + theorem asymptotics.is_O_neg_left + theorem asymptotics.is_O_neg_right + theorem asymptotics.is_O_norm_left + theorem asymptotics.is_O_norm_right + theorem asymptotics.is_O_of_is_O_const_mul_right + theorem asymptotics.is_O_refl + theorem asymptotics.is_O_refl_left + theorem asymptotics.is_O_smul + theorem asymptotics.is_O_zero + theorem asymptotics.is_O_zero_right_iff - theorem asymptotics.is_bigo.add - theorem asymptotics.is_bigo.comp - theorem asymptotics.is_bigo.congr - theorem asymptotics.is_bigo.congr_left - theorem asymptotics.is_bigo.congr_of_sub - theorem asymptotics.is_bigo.congr_right - theorem asymptotics.is_bigo.mono - theorem asymptotics.is_bigo.sub - theorem asymptotics.is_bigo.symm - theorem asymptotics.is_bigo.trans - theorem asymptotics.is_bigo.trans_is_littleo - theorem asymptotics.is_bigo.trans_tendsto - theorem asymptotics.is_bigo.tri - def asymptotics.is_bigo - theorem asymptotics.is_bigo_comm - theorem asymptotics.is_bigo_congr - theorem asymptotics.is_bigo_congr_left - theorem asymptotics.is_bigo_congr_right - theorem asymptotics.is_bigo_const_mul_left - theorem asymptotics.is_bigo_const_mul_left_iff - theorem asymptotics.is_bigo_const_mul_right_iff - theorem asymptotics.is_bigo_const_one - theorem asymptotics.is_bigo_const_smul_left - theorem asymptotics.is_bigo_const_smul_left_iff - theorem asymptotics.is_bigo_const_smul_right - theorem asymptotics.is_bigo_iff - theorem asymptotics.is_bigo_join - theorem asymptotics.is_bigo_mul - theorem asymptotics.is_bigo_neg_left - theorem asymptotics.is_bigo_neg_right - theorem asymptotics.is_bigo_norm_left - theorem asymptotics.is_bigo_norm_right - theorem asymptotics.is_bigo_of_is_bigo_const_mul_right - theorem asymptotics.is_bigo_refl - theorem asymptotics.is_bigo_refl_left - theorem asymptotics.is_bigo_smul - theorem asymptotics.is_bigo_zero - theorem asymptotics.is_bigo_zero_right_iff - theorem asymptotics.is_littleo.add - theorem asymptotics.is_littleo.comp - theorem asymptotics.is_littleo.congr - theorem asymptotics.is_littleo.congr_left - theorem asymptotics.is_littleo.congr_of_sub - theorem asymptotics.is_littleo.congr_right - theorem asymptotics.is_littleo.mono - theorem asymptotics.is_littleo.sub - theorem asymptotics.is_littleo.symm - theorem asymptotics.is_littleo.to_is_bigo - theorem asymptotics.is_littleo.trans - theorem asymptotics.is_littleo.trans_is_bigo - theorem asymptotics.is_littleo.trans_tendsto - theorem asymptotics.is_littleo.tri - def asymptotics.is_littleo - theorem asymptotics.is_littleo_comm - theorem asymptotics.is_littleo_congr - theorem asymptotics.is_littleo_congr_left - theorem asymptotics.is_littleo_congr_right - theorem asymptotics.is_littleo_const_mul_left - theorem asymptotics.is_littleo_const_mul_left_iff - theorem asymptotics.is_littleo_const_mul_right - theorem asymptotics.is_littleo_const_smul_left - theorem asymptotics.is_littleo_const_smul_left_iff - theorem asymptotics.is_littleo_const_smul_right - theorem asymptotics.is_littleo_iff_tendsto - theorem asymptotics.is_littleo_join - theorem asymptotics.is_littleo_mul - theorem asymptotics.is_littleo_mul_left - theorem asymptotics.is_littleo_mul_right - theorem asymptotics.is_littleo_neg_left - theorem asymptotics.is_littleo_neg_right - theorem asymptotics.is_littleo_norm_left - theorem asymptotics.is_littleo_norm_right - theorem asymptotics.is_littleo_of_is_littleo_const_mul_right - theorem asymptotics.is_littleo_one_iff - theorem asymptotics.is_littleo_refl_left - theorem asymptotics.is_littleo_smul - theorem asymptotics.is_littleo_zero - theorem asymptotics.is_littleo_zero_right_iff + theorem asymptotics.is_o.add + theorem asymptotics.is_o.comp + theorem asymptotics.is_o.congr + theorem asymptotics.is_o.congr_left + theorem asymptotics.is_o.congr_of_sub + theorem asymptotics.is_o.congr_right + theorem asymptotics.is_o.mono + theorem asymptotics.is_o.sub + theorem asymptotics.is_o.symm + theorem asymptotics.is_o.to_is_O + theorem asymptotics.is_o.trans + theorem asymptotics.is_o.trans_is_O + theorem asymptotics.is_o.trans_tendsto + theorem asymptotics.is_o.tri + def asymptotics.is_o + theorem asymptotics.is_o_comm + theorem asymptotics.is_o_congr + theorem asymptotics.is_o_congr_left + theorem asymptotics.is_o_congr_right + theorem asymptotics.is_o_const_mul_left + theorem asymptotics.is_o_const_mul_left_iff + theorem asymptotics.is_o_const_mul_right + theorem asymptotics.is_o_const_smul_left + theorem asymptotics.is_o_const_smul_left_iff + theorem asymptotics.is_o_const_smul_right + theorem asymptotics.is_o_iff_tendsto + theorem asymptotics.is_o_join + theorem asymptotics.is_o_mul + theorem asymptotics.is_o_mul_left + theorem asymptotics.is_o_mul_right + theorem asymptotics.is_o_neg_left + theorem asymptotics.is_o_neg_right + theorem asymptotics.is_o_norm_left + theorem asymptotics.is_o_norm_right + theorem asymptotics.is_o_of_is_o_const_mul_right + theorem asymptotics.is_o_one_iff + theorem asymptotics.is_o_refl_left + theorem asymptotics.is_o_smul + theorem asymptotics.is_o_zero + theorem asymptotics.is_o_zero_right_iff - theorem asymptotics.tendsto_nhds_zero_of_is_littleo + theorem asymptotics.tendsto_nhds_zero_of_is_o Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_linear_map.is_O_comp + theorem is_bounded_linear_map.is_O_id + theorem is_bounded_linear_map.is_O_sub - theorem is_bounded_linear_map.is_bigo_comp - theorem is_bounded_linear_map.is_bigo_id - theorem is_bounded_linear_map.is_bigo_sub Modified src/analysis/normed_space/deriv.lean - theorem has_fderiv_at.is_littleo + theorem has_fderiv_at.is_o + theorem has_fderiv_at_filter.is_O_sub - theorem has_fderiv_at_filter.is_bigo_sub - theorem has_fderiv_at_filter.is_littleo + theorem has_fderiv_at_filter.is_o 2019-03-01 10:20:26-05:00 49ecc7b fix(*): fix things from change tendsto_congr -> tendsto.congr' ESTIMATED CHANGES Modified src/analysis/normed_space/deriv.lean Modified src/analysis/specific_limits.lean Modified src/data/padics/hensel.lean Modified src/order/filter/basic.lean + theorem filter.tendsto.congr'r - theorem filter.tendsto_congr Modified src/topology/algebra/infinite_sum.lean Modified src/topology/instances/ennreal.lean 2019-03-01 10:20:26-05:00 d74804b add has_fderiv_at_filter ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_bigo.congr + theorem asymptotics.is_bigo.congr_of_sub + theorem asymptotics.is_bigo.symm + theorem asymptotics.is_bigo.trans_tendsto + theorem asymptotics.is_bigo.tri + theorem asymptotics.is_bigo_comm + theorem asymptotics.is_bigo_congr + theorem asymptotics.is_bigo_congr_left + theorem asymptotics.is_bigo_congr_right +/- theorem asymptotics.is_bigo_neg_left +/- theorem asymptotics.is_bigo_norm_left + theorem asymptotics.is_bigo_refl_left + theorem asymptotics.is_littleo.congr + theorem asymptotics.is_littleo.congr_of_sub + theorem asymptotics.is_littleo.symm + theorem asymptotics.is_littleo.trans_tendsto + theorem asymptotics.is_littleo.tri + theorem asymptotics.is_littleo_comm + theorem asymptotics.is_littleo_congr + theorem asymptotics.is_littleo_congr_left + theorem asymptotics.is_littleo_congr_right +/- theorem asymptotics.is_littleo_neg_left +/- theorem asymptotics.is_littleo_norm_left + theorem asymptotics.is_littleo_refl_left Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_linear_map.is_bigo_comp Modified src/analysis/normed_space/deriv.lean - theorem chain_rule - theorem chain_rule_at_within - theorem continuous_at_of_has_fderiv_at - theorem continuous_at_within_of_has_fderiv_at_within + theorem has_fderiv_at.comp +/- theorem has_fderiv_at.congr + theorem has_fderiv_at.continuous_at +/- theorem has_fderiv_at_add + theorem has_fderiv_at_congr + theorem has_fderiv_at_filter.comp + theorem has_fderiv_at_filter.congr + theorem has_fderiv_at_filter.is_bigo_sub + theorem has_fderiv_at_filter.is_littleo + theorem has_fderiv_at_filter.mono + theorem has_fderiv_at_filter.tendsto_nhds + def has_fderiv_at_filter + theorem has_fderiv_at_filter_add + theorem has_fderiv_at_filter_congr' + theorem has_fderiv_at_filter_congr + theorem has_fderiv_at_filter_const + theorem has_fderiv_at_filter_equiv_aux + theorem has_fderiv_at_filter_id + theorem has_fderiv_at_filter_iff_tendsto + theorem has_fderiv_at_filter_neg + theorem has_fderiv_at_filter_of_has_fderiv_at + theorem has_fderiv_at_filter_smul + theorem has_fderiv_at_filter_sub +/- theorem has_fderiv_at_neg +/- theorem has_fderiv_at_sub + theorem has_fderiv_at_within.comp + theorem has_fderiv_at_within.continuous_at_within +/- theorem has_fderiv_at_within_add + theorem has_fderiv_at_within_congr - theorem has_fderiv_at_within_equiv_aux +/- theorem has_fderiv_at_within_neg +/- theorem has_fderiv_at_within_of_has_fderiv_at +/- theorem has_fderiv_at_within_sub Modified src/order/filter/basic.lean + theorem filter.congr_sets + theorem filter.tendsto.congr' - theorem filter.tendsto_cong + theorem filter.tendsto_congr Modified src/topology/continuity.lean + theorem continuous_at_within.tendsto_nhds_within_image 2019-03-01 10:20:26-05:00 21b1fcc fix(asymptotics, deriv): minor formatting fixes ESTIMATED CHANGES Modified src/analysis/asymptotics.lean Modified src/analysis/normed_space/deriv.lean 2019-03-01 10:20:26-05:00 16033bb feat(analysis/asymptotics,analysis/normed_space/deriv): improvements and additions ESTIMATED CHANGES Modified src/analysis/asymptotics.lean + theorem asymptotics.is_bigo.congr_left + theorem asymptotics.is_bigo.congr_right + theorem asymptotics.is_bigo.trans + theorem asymptotics.is_bigo.trans_is_littleo + theorem asymptotics.is_bigo_const_mul_left + theorem asymptotics.is_bigo_const_mul_left_iff + theorem asymptotics.is_bigo_const_mul_right_iff + theorem asymptotics.is_bigo_const_one + theorem asymptotics.is_bigo_const_smul_left + theorem asymptotics.is_bigo_const_smul_left_iff + theorem asymptotics.is_bigo_const_smul_right + theorem asymptotics.is_bigo_iff - theorem asymptotics.is_bigo_iff_pos + theorem asymptotics.is_bigo_join + theorem asymptotics.is_bigo_mul - theorem asymptotics.is_bigo_mul_left - theorem asymptotics.is_bigo_mul_right + theorem asymptotics.is_bigo_of_is_bigo_const_mul_right - theorem asymptotics.is_bigo_of_is_bigo_of_is_bigo + theorem asymptotics.is_bigo_refl + theorem asymptotics.is_bigo_smul - theorem asymptotics.is_bigo_smul_left - theorem asymptotics.is_bigo_smul_right +/- theorem asymptotics.is_bigo_zero + theorem asymptotics.is_bigo_zero_right_iff + theorem asymptotics.is_littleo.congr_left + theorem asymptotics.is_littleo.congr_right + theorem asymptotics.is_littleo.trans + theorem asymptotics.is_littleo.trans_is_bigo + theorem asymptotics.is_littleo_const_mul_left + theorem asymptotics.is_littleo_const_mul_left_iff + theorem asymptotics.is_littleo_const_mul_right + theorem asymptotics.is_littleo_const_smul_left + theorem asymptotics.is_littleo_const_smul_left_iff + theorem asymptotics.is_littleo_const_smul_right - theorem asymptotics.is_littleo_iff_pos + theorem asymptotics.is_littleo_join + theorem asymptotics.is_littleo_mul +/- theorem asymptotics.is_littleo_mul_left +/- theorem asymptotics.is_littleo_mul_right - theorem asymptotics.is_littleo_of_is_bigo_of_is_littleo + theorem asymptotics.is_littleo_of_is_littleo_const_mul_right - theorem asymptotics.is_littleo_of_is_littleo_of_is_bigo - theorem asymptotics.is_littleo_of_tendsto + theorem asymptotics.is_littleo_one_iff + theorem asymptotics.is_littleo_smul - theorem asymptotics.is_littleo_smul_left - theorem asymptotics.is_littleo_smul_right +/- theorem asymptotics.is_littleo_zero + theorem asymptotics.is_littleo_zero_right_iff +/- theorem asymptotics.tendsto_nhds_zero_of_is_littleo Modified src/analysis/normed_space/bounded_linear_maps.lean +/- def is_bounded_linear_map.to_linear_map Modified src/analysis/normed_space/deriv.lean +/- theorem chain_rule + theorem chain_rule_at_within + theorem continuous_at_of_has_fderiv_at + theorem continuous_at_within_of_has_fderiv_at_within - theorem continuous_of_has_fderiv - theorem has_fderiv_add + theorem has_fderiv_at.congr + theorem has_fderiv_at.is_littleo + theorem has_fderiv_at_add + theorem has_fderiv_at_const + theorem has_fderiv_at_id + theorem has_fderiv_at_iff_tendsto + theorem has_fderiv_at_neg + theorem has_fderiv_at_smul + theorem has_fderiv_at_sub +/- theorem has_fderiv_at_within.congr + theorem has_fderiv_at_within.mono + theorem has_fderiv_at_within_add + theorem has_fderiv_at_within_const + theorem has_fderiv_at_within_equiv_aux + theorem has_fderiv_at_within_id + theorem has_fderiv_at_within_iff_tendsto - def has_fderiv_at_within_mono + theorem has_fderiv_at_within_neg + theorem has_fderiv_at_within_of_has_fderiv_at + theorem has_fderiv_at_within_smul + theorem has_fderiv_at_within_sub - theorem has_fderiv_const - theorem has_fderiv_equiv_aux - theorem has_fderiv_id - theorem has_fderiv_iff_littleo - theorem has_fderiv_neg - theorem has_fderiv_smul - theorem has_fderiv_sub Modified src/topology/basic.lean 2019-03-01 10:20:26-05:00 6265d26 feat(analysis/normed_space/deriv): start on derivative ESTIMATED CHANGES Modified src/analysis/normed_space/bounded_linear_maps.lean + theorem is_bounded_linear_map.is_bigo_id + theorem is_bounded_linear_map.is_bigo_sub + def is_bounded_linear_map.to_linear_map Added src/analysis/normed_space/deriv.lean + theorem chain_rule + theorem continuous_of_has_fderiv + theorem has_fderiv_add + def has_fderiv_at + theorem has_fderiv_at_within.congr + def has_fderiv_at_within + def has_fderiv_at_within_mono + theorem has_fderiv_const + theorem has_fderiv_equiv_aux + theorem has_fderiv_id + theorem has_fderiv_iff_littleo + theorem has_fderiv_neg + theorem has_fderiv_smul + theorem has_fderiv_sub 2019-03-01 10:20:26-05:00 92a5e0b feat(analysis/asymptotics): start on bigo and littlo ESTIMATED CHANGES Added src/analysis/asymptotics.lean + theorem asymptotics.is_bigo.add + theorem asymptotics.is_bigo.comp + theorem asymptotics.is_bigo.mono + theorem asymptotics.is_bigo.sub + def asymptotics.is_bigo + theorem asymptotics.is_bigo_iff_pos + theorem asymptotics.is_bigo_mul_left + theorem asymptotics.is_bigo_mul_right + theorem asymptotics.is_bigo_neg_left + theorem asymptotics.is_bigo_neg_right + theorem asymptotics.is_bigo_norm_left + theorem asymptotics.is_bigo_norm_right + theorem asymptotics.is_bigo_of_is_bigo_of_is_bigo + theorem asymptotics.is_bigo_smul_left + theorem asymptotics.is_bigo_smul_right + theorem asymptotics.is_bigo_zero + theorem asymptotics.is_littleo.add + theorem asymptotics.is_littleo.comp + theorem asymptotics.is_littleo.mono + theorem asymptotics.is_littleo.sub + theorem asymptotics.is_littleo.to_is_bigo + def asymptotics.is_littleo + theorem asymptotics.is_littleo_iff_pos + theorem asymptotics.is_littleo_iff_tendsto + theorem asymptotics.is_littleo_mul_left + theorem asymptotics.is_littleo_mul_right + theorem asymptotics.is_littleo_neg_left + theorem asymptotics.is_littleo_neg_right + theorem asymptotics.is_littleo_norm_left + theorem asymptotics.is_littleo_norm_right + theorem asymptotics.is_littleo_of_is_bigo_of_is_littleo + theorem asymptotics.is_littleo_of_is_littleo_of_is_bigo + theorem asymptotics.is_littleo_of_tendsto + theorem asymptotics.is_littleo_smul_left + theorem asymptotics.is_littleo_smul_right + theorem asymptotics.is_littleo_zero + theorem asymptotics.tendsto_nhds_zero_of_is_littleo 2019-03-01 10:20:26-05:00 206a7a1 feat(*): add various small lemmas ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem norm_norm + theorem normed_space.tendsto_nhds_zero + theorem tendsto_smul_const Modified src/order/filter/basic.lean + theorem filter.le_comap_top + theorem filter.tendsto.congr Modified src/topology/basic.lean - theorem tendsto_at_within_iff_subtype + theorem tendsto_nhds_within_iff_subtype + theorem tendsto_nhds_within_mono_left + theorem tendsto_nhds_within_mono_right + theorem tendsto_nhds_within_of_tendsto_nhds Modified src/topology/continuity.lean + theorem nhds_within_le_comap 2019-03-01 13:10:17 4f7853a feat(data/list/basic): mem_rotate ESTIMATED CHANGES Modified src/data/list/basic.lean + theorem list.mem_rotate 2019-02-28 20:55:23 05449a0 refactor(ring_theory/localization): rename of to mk, and define of (#765) * refactor(ring_theory/localization): rename of to mk, and define of * Make submonoid implicit variable of 'of' ESTIMATED CHANGES Modified src/ring_theory/localization.lean + theorem localization.coe_mul_mk - theorem localization.coe_mul_of + theorem localization.eq_zero_of + def localization.mk + theorem localization.mk_eq_div + theorem localization.mk_eq_mul_mk_one + theorem localization.mk_mul_cancel_left + theorem localization.mk_mul_cancel_right + theorem localization.mk_mul_mk + theorem localization.mk_self'' + theorem localization.mk_self' + theorem localization.mk_self + theorem localization.of.injective +/- def localization.of +/- theorem localization.of_add - theorem localization.of_eq_div - theorem localization.of_eq_mul_of_one +/- theorem localization.of_mul - theorem localization.of_mul_cancel_left - theorem localization.of_mul_cancel_right - theorem localization.of_mul_of +/- theorem localization.of_neg +/- theorem localization.of_one +/- theorem localization.of_pow - theorem localization.of_self'' - theorem localization.of_self' - theorem localization.of_self +/- theorem localization.of_sub +/- theorem localization.of_zero 2019-02-28 19:14:55 eb033cf feat(ring_theory/ideals): make ideal.quotient.field a discrete_field (#777) ESTIMATED CHANGES Modified src/ring_theory/adjoin_root.lean Modified src/ring_theory/ideals.lean 2019-02-28 17:20:01 e6a3ca8 refactor(algebra/group): generalise and extend the API for with_zero (#762) * refactor(algebra/group): generalise and extend the API for with_zero * Shorter proof. Thanks Chris * Travis, try your best ESTIMATED CHANGES Modified src/algebra/group.lean + theorem with_one.coe_inj + theorem with_one.coe_ne_one + theorem with_one.mul_coe + theorem with_one.ne_one_iff_exists + theorem with_one.one_ne_coe + theorem with_zero.coe_one + theorem with_zero.div_coe + theorem with_zero.div_eq_div + theorem with_zero.div_eq_iff_mul_eq + theorem with_zero.div_mul_cancel + theorem with_zero.div_one + theorem with_zero.div_zero + theorem with_zero.inv_coe + theorem with_zero.inv_one + theorem with_zero.inv_zero + theorem with_zero.mul_coe + theorem with_zero.mul_div_cancel + theorem with_zero.mul_inv_rev + theorem with_zero.mul_left_inv + theorem with_zero.mul_right_inv + theorem with_zero.one_div + theorem with_zero.zero_div 2019-02-28 16:55:44 781d187 feat(group_theory/quotient_group): define ker_lift and prove simp-lemmas (#764) * feat(group_theory/quotient_group): define ker_lift and prove simp-lemmas * Add docstring ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean +/- theorem quotient_group.injective_ker_lift + def quotient_group.ker_lift + theorem quotient_group.ker_lift_mk' + theorem quotient_group.ker_lift_mk 2019-02-28 11:09:35+01:00 81f8530 fix(tactic/linarith): typo ESTIMATED CHANGES Modified src/tactic/linarith.lean 2019-02-28 10:33:40+01:00 08d4d17 feat(topology/basic): Add instances for subset/inter/union for opens(X) (#763) * feat(topology/basic): Add instances for subset/inter/union for opens(X) ESTIMATED CHANGES Modified src/topology/basic.lean + theorem topological_space.opens.empty_eq + theorem topological_space.opens.inter_eq + theorem topological_space.opens.union_eq 2019-02-27 23:53:37+01:00 477338d refactor(data/subtype): organise in namespaces, use variables, add two simp-lemmas (#760) ESTIMATED CHANGES Modified src/data/subtype.lean +/- theorem subtype.coe_eta +/- theorem subtype.coe_ext +/- theorem subtype.coe_mk +/- theorem subtype.exists +/- theorem subtype.ext +/- theorem subtype.forall +/- theorem subtype.mk_eq_mk +/- theorem subtype.val_injective + theorem subtype.val_prop' + theorem subtype.val_prop 2019-02-27 22:46:52 af2cf74 feat(group_theory/quotient_group): map is a group hom (#761) ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean 2019-02-27 22:37:11 dfa855c feat(data/finset) remove unnecessary assumption from card_eq_succ (#772) ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.card_eq_succ 2019-02-27 23:14:03+01:00 cfde449 fix(doc/tactics): linarith doc is outdated [ci-skip] ESTIMATED CHANGES Modified docs/tactics.md 2019-02-27 21:33:02+01:00 6c71ac0 fix(tactic/linarith): fix bug in strengthening of strict nat/int inequalities ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2019-02-27 15:25:19 4667d2c feat(ring_theory/ideal_operations): ideals form a commutative semiring (#771) ESTIMATED CHANGES Modified src/ring_theory/ideal_operations.lean 2019-02-27 14:06:24 05d1d33 fix(algebra/archimedean): swap names of floor_add_fract and fract_add_floor (#770) ESTIMATED CHANGES Modified src/algebra/archimedean.lean +/- theorem floor_add_fract +/- theorem fract_add_floor 2019-02-27 12:02:24+01:00 42d1ed7 feat(linarith): improve handling of strict inequalities in nat and int (#769) * feat(linarith): perform slightly better on ℕ and ℤ by strengthening t < 0 hyps to t + 1 ≤ 0 * remove already completed TODO item ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2019-02-26 22:04:45+01:00 3f47739 fix(docs/howto-contribute): main repository has moved ESTIMATED CHANGES Modified docs/howto-contribute.md 2019-02-26 12:57:23-05:00 7450cc5 fix(scripts/update_mathlib): improve python style and error handling (#759) ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-02-25 16:20:56-05:00 71a7e1c fix(scripts/update-mathlib): cached archived were never expanded ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-02-25 16:01:35-05:00 4222483 fix(scripts/update-mathlib): fix the commit check ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-02-24 23:52:02-05:00 e23553a doc(nat/decidable_prime): add docstrings explaining the two decidable_prime instances (#757) ESTIMATED CHANGES Modified docs/theories/naturals.md Modified src/data/nat/prime.lean 2019-02-24 15:36:34 f922086 feat(ring_theory/polynomial): more operations on polynomials (#679) ESTIMATED CHANGES Modified src/ring_theory/polynomial.lean + theorem is_noetherian_ring_mv_polynomial_fin + theorem is_noetherian_ring_mv_polynomial_of_fintype + theorem polynomial.coeff_restriction' + theorem polynomial.coeff_restriction + theorem polynomial.coeff_to_subring' + theorem polynomial.coeff_to_subring + theorem polynomial.degree_restriction + theorem polynomial.degree_to_subring + theorem polynomial.eval₂_restriction + theorem polynomial.frange_of_subring + theorem polynomial.monic_restriction + theorem polynomial.monic_to_subring + theorem polynomial.nat_degree_restriction + theorem polynomial.nat_degree_to_subring + def polynomial.of_subring + def polynomial.restriction + theorem polynomial.restriction_one + theorem polynomial.restriction_zero + def polynomial.to_subring + theorem polynomial.to_subring_one + theorem polynomial.to_subring_zero 2019-02-24 11:59:27 c9b2d0e chore(linear_algebra/multivariate_polynomial): remove unnecessary decidable_eq assumption (#755) ESTIMATED CHANGES Modified src/linear_algebra/multivariate_polynomial.lean 2019-02-23 11:37:37 ddc016c feat(*): polar co-ordinates, de moivre, trig identities, quotient group for angles (#745) * feat(algebra/group_power): re-PRing polar co-ords * Update group_power.lean * feat(analysis/exponential): re-PRing polar stuff * feat(data.complex.exponential): re-PR polar stuff * fix(analysis.exponential): stylistic * fix(data.complex.exponential): stylistic * fix(analysis/exponential.lean): angle_eq_iff_two_pi_dvd_sub * fix(analysis/exponential): angle_eq_iff_two_pi_dvd_sub ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem pow_lt_pow_of_lt_left + theorem pow_right_inj Modified src/analysis/exponential.lean + def real.angle.angle + theorem real.angle.angle_eq_iff_two_pi_dvd_sub + theorem real.angle.coe_add + theorem real.angle.coe_gsmul + theorem real.angle.coe_neg + theorem real.angle.coe_sub + theorem real.angle.coe_two_pi + theorem real.angle.coe_zero + theorem real.angle.cos_eq_iff_eq_or_eq_neg + theorem real.angle.cos_sin_inj + theorem real.angle.sin_eq_iff_eq_or_add_eq_pi + theorem real.cos_eq_zero_iff + theorem real.cos_sub_cos + theorem real.sin_sub_sin Modified src/data/complex/exponential.lean + theorem complex.cos_add_sin_mul_I_pow + theorem complex.exp_nat_mul + theorem real.exp_nat_mul 2019-02-23 00:41:40 63fa61d fix(analysis/specific_limits): remove useless assumption (#751) ESTIMATED CHANGES Modified src/analysis/specific_limits.lean +/- theorem has_sum_of_absolute_convergence_real 2019-02-21 21:35:05 e739cf5 feat(order_dual): instances for order_dual and shortening proofs (#746) * feat(order_bot): instances for order_bot and shortening proofs * fix(topological_structure); remove unused import ESTIMATED CHANGES Modified src/order/basic.lean Modified src/order/conditionally_complete_lattice.lean Modified src/topology/algebra/topological_structures.lean +/- theorem Liminf_nhds +/- theorem Limsup_eq_of_le_nhds +/- theorem exists_forall_ge_of_compact_of_continuous +/- theorem gt_mem_sets_of_Liminf_gt +/- theorem is_glb_of_is_lub_of_tendsto +/- theorem is_glb_of_mem_nhds + theorem is_lub_of_is_glb_of_tendsto +/- theorem nhds_principal_ne_bot_of_is_glb 2019-02-21 16:24:47 3c3a052 feat(field_theory/subfield): closure of subset in field (#742) ESTIMATED CHANGES Modified src/field_theory/subfield.lean + def field.closure + theorem field.closure_mono + theorem field.closure_subset + theorem field.closure_subset_iff + theorem field.mem_closure + theorem field.ring_closure_subset + theorem field.subset_closure 2019-02-20 18:08:04-05:00 9656485 feat(data/finmap): lift_on₂ (#716) * feat(data/finmap): define lift_on₂ with lift_on ESTIMATED CHANGES Modified src/data/finmap.lean + def finmap.lift_on₂ + theorem finmap.lift_on₂_to_finmap 2019-02-20 17:32:07 8b8ae32 fix(order/basic): give order_dual the correct lt (#741) ESTIMATED CHANGES Modified src/order/basic.lean 2019-02-20 12:33:02 c7202e5 feat(analysis/exponential): pow_nat_rpow_nat_inv (#740) ESTIMATED CHANGES Modified src/analysis/exponential.lean + theorem complex.abs_cpow_inv_nat + theorem real.pow_nat_rpow_nat_inv 2019-02-18 18:07:10 78ce6e4 feat(data/fintype): fintype.of_injective ESTIMATED CHANGES Modified src/data/fintype.lean 2019-02-18 09:48:21-05:00 9a2c13a feat(data/alist,data/finmap): always insert key-value pair (#722) * Change {alist,finmap}.insert to always insert the key-value pair instead of doing nothing if the inserted key is found. This allows for useful theorems such as lookup_insert. * Add list.keys and used key membership instead of exists/forall. This makes proofs easier in some places. * Add a few other useful theorems such as lookup_eq_none, lookup_erase, lookup_erase_ne. ESTIMATED CHANGES Modified src/data/finmap.lean - theorem finmap.insert_of_pos + theorem finmap.lookup_eq_none + theorem finmap.lookup_erase + theorem finmap.lookup_erase_ne + theorem finmap.lookup_insert - theorem finmap.not_mem_empty_entries + theorem multiset.coe_keys + def multiset.keys Modified src/data/list/alist.lean + theorem alist.insert_entries +/- theorem alist.insert_entries_of_neg - theorem alist.insert_of_pos +/- def alist.keys +/- theorem alist.keys_insert + theorem alist.lookup_eq_none + theorem alist.lookup_erase + theorem alist.lookup_erase_ne + theorem alist.lookup_insert + theorem alist.lookup_insert_ne - theorem alist.mem_def +/- theorem alist.mem_insert +/- theorem alist.mem_keys +/- theorem alist.not_mem_empty - theorem alist.not_mem_empty_entries +/- theorem alist.perm_insert Modified src/data/list/sigma.lean + theorem list.exists_of_kerase + theorem list.exists_of_mem_keys + theorem list.kerase_cons_eq + theorem list.kerase_cons_ne + theorem list.kerase_keys_subset - theorem list.kerase_map_fst + theorem list.kerase_nil + theorem list.kerase_of_not_mem_keys + def list.keys + theorem list.keys_cons + theorem list.keys_kerase + theorem list.keys_kreplace + theorem list.keys_nil + def list.kinsert + theorem list.kinsert_def + theorem list.kinsert_nodupkeys - theorem list.kreplace_map_fst + theorem list.lookup_kerase + theorem list.lookup_kerase_ne + theorem list.lookup_kinsert + theorem list.lookup_kinsert_ne + theorem list.mem_keys + theorem list.mem_keys_kerase_of_ne + theorem list.mem_keys_kinsert + theorem list.mem_keys_of_mem + theorem list.mem_keys_of_mem_keys_kerase + theorem list.mem_lookup +/- theorem list.nodupkeys_cons + theorem list.not_eq_key + theorem list.not_mem_keys + theorem list.not_mem_keys_kerase + theorem list.perm_kinsert 2019-02-18 09:45:57 6b4435b feat(data/polynomial): create nonzero_comm_semiring and generalize nonzero_comm_ring lemmas (#736) ESTIMATED CHANGES Modified src/algebra/ring.lean + def nonzero_comm_semiring.of_ne +/- theorem units.coe_ne_zero Modified src/data/polynomial.lean 2019-02-16 21:24:09 c64b67e feat(ring_theory/localization): revamp, ideal embedding (#481) ESTIMATED CHANGES Modified src/ring_theory/localization.lean +/- def localization.at_prime + def localization.away.inv_self +/- def localization.away + theorem localization.coe_add + theorem localization.coe_mul + theorem localization.coe_mul_of + theorem localization.coe_neg + theorem localization.coe_one + theorem localization.coe_pow + theorem localization.coe_sub + theorem localization.coe_zero + def localization.fraction_ring +/- def localization.inv_aux + def localization.le_order_embedding + theorem localization.map_comap + def localization.of + theorem localization.of_add - def localization.of_comm_ring + theorem localization.of_eq_div + theorem localization.of_eq_mul_of_one + theorem localization.of_mul + theorem localization.of_mul_cancel_left + theorem localization.of_mul_cancel_right + theorem localization.of_mul_of + theorem localization.of_neg + theorem localization.of_one + theorem localization.of_pow + theorem localization.of_self'' + theorem localization.of_self' + theorem localization.of_self + theorem localization.of_sub + theorem localization.of_zero - def localization.quotient_ring.field.of_integral_domain - def localization.quotient_ring +/- def localization.r +/- theorem localization.r_of_eq +/- theorem localization.symm 2019-02-15 17:29:36-05:00 17f9bef feat(category/monad/cont): continuation passing monad (#728) ESTIMATED CHANGES Added src/category/monad/cont.lean + def cont_t.map + theorem cont_t.monad_lift_bind + def cont_t.run + theorem cont_t.run_cont_t_map_cont_t + theorem cont_t.run_with_cont_t + def cont_t.with_cont_t + def cont_t + def monad_cont.goto + structure monad_cont.label 2019-02-15 19:37:56 0a6e705 refactor(data/equiv/algebra): move polynomial lemmas from equiv/algebra to mv_polynomial (#731) * refactor(data/equiv/algebra): move polynomial lemma from equiv/algebra to mv_polynomial * remove update-mathlib.py ESTIMATED CHANGES Modified src/category_theory/instances/rings.lean Modified src/data/equiv/algebra.lean - def mv_polynomial.iter_to_sum - theorem mv_polynomial.iter_to_sum_C_C - theorem mv_polynomial.iter_to_sum_C_X - theorem mv_polynomial.iter_to_sum_X - def mv_polynomial.mv_polynomial_equiv_mv_polynomial - def mv_polynomial.option_equiv_left - def mv_polynomial.option_equiv_right - def mv_polynomial.pempty_ring_equiv - def mv_polynomial.punit_ring_equiv - def mv_polynomial.ring_equiv_congr - def mv_polynomial.ring_equiv_of_equiv - def mv_polynomial.sum_ring_equiv - def mv_polynomial.sum_to_iter - theorem mv_polynomial.sum_to_iter_C - theorem mv_polynomial.sum_to_iter_Xl - theorem mv_polynomial.sum_to_iter_Xr Modified src/linear_algebra/multivariate_polynomial.lean + def mv_polynomial.iter_to_sum + theorem mv_polynomial.iter_to_sum_C_C + theorem mv_polynomial.iter_to_sum_C_X + theorem mv_polynomial.iter_to_sum_X + def mv_polynomial.mv_polynomial_equiv_mv_polynomial + def mv_polynomial.option_equiv_left + def mv_polynomial.option_equiv_right + def mv_polynomial.pempty_ring_equiv + def mv_polynomial.punit_ring_equiv + def mv_polynomial.ring_equiv_congr + def mv_polynomial.ring_equiv_of_equiv + def mv_polynomial.sum_ring_equiv + def mv_polynomial.sum_to_iter + theorem mv_polynomial.sum_to_iter_C + theorem mv_polynomial.sum_to_iter_Xl + theorem mv_polynomial.sum_to_iter_Xr Modified src/ring_theory/noetherian.lean 2019-02-15 14:26:25+01:00 d80b03e chore(order/filter/basic): update documentation of filter_upwards ESTIMATED CHANGES Modified src/order/filter/basic.lean 2019-02-15 07:40:09 8730619 chore(topology/algebra/topological_structures): remove unused import (#729) ESTIMATED CHANGES Modified src/topology/algebra/topological_structures.lean 2019-02-14 18:26:14+01:00 ce580d7 refactor(data/equiv): rename subtype_equiv_of_subtype to subtype_congr and subtype_congr to subtype_congr_prop ESTIMATED CHANGES Modified src/data/equiv/basic.lean +/- def equiv.subtype_congr + def equiv.subtype_congr_prop - def equiv.subtype_equiv_of_subtype 2019-02-14 18:04:51+01:00 683519f feat(data/equiv/basic): generalise subtype_equiv_of_subtype (#724) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.subtype_equiv_of_subtype' +/- def equiv.subtype_equiv_of_subtype 2019-02-14 18:04:24+01:00 d4568a4 fix(data/subtype): don't use pattern matching in subtype.map (#725) ESTIMATED CHANGES Modified src/data/subtype.lean 2019-02-13 19:51:35-05:00 5da8605 chore(deploy): clean up deploy_nightly.sh (#720) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2019-02-13 23:30:38+01:00 a6150a3 refactor(data/real): move cau_seq_filter to analysis/metric_space (#723) ESTIMATED CHANGES Modified src/data/padics/hensel.lean Modified src/data/padics/padic_numbers.lean Modified src/topology/bounded_continuous_function.lean Renamed src/data/real/cau_seq_filter.lean to src/topology/metric_space/cau_seq_filter.lean 2019-02-13 17:01:08+01:00 3fd0e60 refactor(topology/algebra/infinite_sum): Cauchy condition for infinite sums generalized to complete topological groups ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem ball_0_eq + theorem has_sum_iff_vanishing_norm + theorem has_sum_of_has_sum_norm + theorem has_sum_of_norm_bounded + theorem norm_tsum_le_tsum_norm Modified src/analysis/specific_limits.lean - theorem has_sum_iff_cauchy - theorem has_sum_of_has_sum_norm Modified src/measure_theory/probability_mass_function.lean +/- def pmf.pure Modified src/order/filter/basic.lean + theorem filter.tendsto_at_top' +/- theorem filter.tendsto_at_top Modified src/topology/algebra/infinite_sum.lean + theorem has_sum_comp_of_has_sum_of_injective + theorem has_sum_iff_cauchy + theorem has_sum_iff_has_sum_ne_zero_bij + theorem has_sum_iff_vanishing +/- theorem has_sum_of_has_sum_of_sub + theorem is_sum_iff_is_sum_of_ne_zero_bij - theorem is_sum_ite + theorem is_sum_ite_eq + theorem is_sum_le_inj + def option.cases_on' - theorem tsum_ite + theorem tsum_ite_eq Modified src/topology/algebra/topological_structures.lean + theorem exists_nhds_split_inv 2019-02-12 22:44:40+01:00 246c280 feat(tactic/basic,tactic/interactive): improvements to set tactic (#712) * feat(tactic/basic,tactic/interactive): improvements to set tactic * feat(tactic/interactive): take optional explicit type in set tactic ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/interactive.lean Modified src/tactic/linarith.lean 2019-02-12 15:50:35-05:00 f6ca16e fix(nightly): improve conditional (#719) ESTIMATED CHANGES Modified scripts/deploy_nightly.sh 2019-02-12 20:15:49+01:00 a4afa90 refactor(analysis/specific_limits): generalize has_sum_of_absolute_convergence to normed_groups ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem norm_triangle_sub + theorem norm_triangle_sum Modified src/analysis/specific_limits.lean + theorem has_sum_iff_cauchy - theorem has_sum_of_absolute_convergence + theorem has_sum_of_absolute_convergence_real + theorem has_sum_of_has_sum_norm - theorem is_sum_iff_tendsto_nat_of_nonneg Modified src/data/finset.lean + theorem finset.disjoint_sdiff Modified src/measure_theory/decomposition.lean Modified src/measure_theory/measure_space.lean - theorem tendsto_at_top_infi_nat - theorem tendsto_at_top_supr_nat Modified src/order/filter/basic.lean +/- theorem filter.tendsto_at_top_at_top + theorem filter.tendsto_at_top_principal Modified src/topology/algebra/topological_structures.lean + theorem infi_eq_of_tendsto + theorem tendsto_at_top_infi_nat + theorem tendsto_at_top_supr_nat Modified src/topology/instances/ennreal.lean + theorem ennreal.is_sum_iff_tendsto_nat +/- theorem has_sum_of_nonneg_of_le + theorem is_sum_iff_tendsto_nat_of_nonneg +/- theorem nnreal.exists_le_is_sum_of_le + theorem nnreal.is_sum_iff_tendsto_nat Modified src/topology/metric_space/basic.lean +/- theorem metric.tendsto_at_top Modified src/topology/uniform_space/basic.lean + theorem cauchy_iff_exists_le_nhds + theorem cauchy_map_iff + theorem cauchy_map_iff_exists_tendsto 2019-02-12 09:33:43-05:00 503a423 feat(update-mathlib): improve setup and error messages ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh Modified scripts/setup-update-mathlib.sh Modified scripts/update-mathlib.py 2019-02-12 15:28:42+01:00 b6a4763 refactor(order/filter): replace tendsto_comp_succ_at_top_iff by tendsto_add_at_top_iff_nat ESTIMATED CHANGES Modified src/analysis/specific_limits.lean - theorem tendsto_comp_succ_at_top_iff +/- theorem tendsto_one_div_add_at_top_nhds_0_nat +/- theorem tendsto_pow_at_top_at_top_of_gt_1_nat Modified src/order/filter/basic.lean + theorem filter.tendsto_add_at_top_iff_nat Modified src/topology/metric_space/lipschitz.lean 2019-02-12 08:46:53-05:00 c4e8414 fix(update-mathlib): install from anywhere in your directory structure ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh 2019-02-12 14:09:42+01:00 f5a85f1 refactor(order/filter): move lift and lift' to separate file ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.prod_eq_empty_iff Modified src/order/filter/basic.lean + theorem filter.bot_prod - theorem filter.comap_eq_lift' - theorem filter.comap_lift'_eq2 - theorem filter.comap_lift'_eq - theorem filter.comap_lift_eq2 - theorem filter.comap_lift_eq - theorem filter.le_lift' - theorem filter.le_lift - theorem filter.lift'_cong - theorem filter.lift'_id - theorem filter.lift'_inf_principal_eq - theorem filter.lift'_infi - theorem filter.lift'_le - theorem filter.lift'_lift'_assoc - theorem filter.lift'_lift_assoc - theorem filter.lift'_mono' - theorem filter.lift'_mono - theorem filter.lift'_neq_bot_iff - theorem filter.lift'_principal - theorem filter.lift_assoc - theorem filter.lift_comm - theorem filter.lift_const - theorem filter.lift_inf - theorem filter.lift_infi' - theorem filter.lift_infi - theorem filter.lift_le - theorem filter.lift_lift'_assoc - theorem filter.lift_lift'_same_eq_lift' - theorem filter.lift_lift'_same_le_lift' - theorem filter.lift_lift_same_eq_lift - theorem filter.lift_lift_same_le_lift - theorem filter.lift_mono' - theorem filter.lift_mono - theorem filter.lift_neq_bot_iff - theorem filter.lift_principal2 - theorem filter.lift_principal - theorem filter.lift_sets_eq - theorem filter.map_lift'_eq2 - theorem filter.map_lift'_eq - theorem filter.map_lift_eq2 - theorem filter.map_lift_eq - theorem filter.mem_lift' - theorem filter.mem_lift'_sets - theorem filter.mem_lift - theorem filter.mem_lift_sets - theorem filter.mem_prod_same_iff - theorem filter.monotone_lift' - theorem filter.monotone_lift - theorem filter.principal_le_lift' - theorem filter.prod_bot1 - theorem filter.prod_bot2 + theorem filter.prod_bot - theorem filter.prod_def + theorem filter.prod_eq_bot - theorem filter.prod_lift'_lift' - theorem filter.prod_lift_lift - theorem filter.prod_same_eq - theorem filter.tendsto_prod_self_iff Added src/order/filter/lift.lean + theorem filter.comap_eq_lift' + theorem filter.comap_lift'_eq2 + theorem filter.comap_lift'_eq + theorem filter.comap_lift_eq2 + theorem filter.comap_lift_eq + theorem filter.le_lift' + theorem filter.le_lift + theorem filter.lift'_cong + theorem filter.lift'_id + theorem filter.lift'_inf_principal_eq + theorem filter.lift'_infi + theorem filter.lift'_le + theorem filter.lift'_lift'_assoc + theorem filter.lift'_lift_assoc + theorem filter.lift'_mono' + theorem filter.lift'_mono + theorem filter.lift'_neq_bot_iff + theorem filter.lift'_principal + theorem filter.lift_assoc + theorem filter.lift_comm + theorem filter.lift_const + theorem filter.lift_inf + theorem filter.lift_infi' + theorem filter.lift_infi + theorem filter.lift_le + theorem filter.lift_lift'_assoc + theorem filter.lift_lift'_same_eq_lift' + theorem filter.lift_lift'_same_le_lift' + theorem filter.lift_lift_same_eq_lift + theorem filter.lift_lift_same_le_lift + theorem filter.lift_mono' + theorem filter.lift_mono + theorem filter.lift_neq_bot_iff + theorem filter.lift_principal2 + theorem filter.lift_principal + theorem filter.lift_sets_eq + theorem filter.map_lift'_eq2 + theorem filter.map_lift'_eq + theorem filter.map_lift_eq2 + theorem filter.map_lift_eq + theorem filter.mem_lift' + theorem filter.mem_lift'_sets + theorem filter.mem_lift + theorem filter.mem_lift_sets + theorem filter.mem_prod_same_iff + theorem filter.monotone_lift' + theorem filter.monotone_lift + theorem filter.principal_le_lift' + theorem filter.prod_def + theorem filter.prod_lift'_lift' + theorem filter.prod_lift_lift + theorem filter.prod_same_eq + theorem filter.tendsto_prod_self_iff Modified src/topology/uniform_space/basic.lean 2019-02-12 11:17:26+01:00 253fe33 refactor(order/filter): generalize map_succ_at_top_eq to arbitrary Galois insertions; generalize tendsto_coe_iff to arbitary order-preserving embeddings ESTIMATED CHANGES Modified src/analysis/specific_limits.lean - theorem map_succ_at_top_eq - theorem tendsto_coe_iff +/- theorem tendsto_comp_succ_at_top_iff Modified src/order/filter/basic.lean +/- theorem filter.at_top_ne_bot + theorem filter.map_add_at_top_eq_nat +/- theorem filter.map_at_top_eq + theorem filter.map_at_top_eq_of_gc + theorem filter.map_div_at_top_eq_nat + theorem filter.map_sub_at_top_eq_nat +/- theorem filter.mem_at_top_sets + theorem filter.tendso_add_at_top_nat + theorem filter.tendso_sub_at_top_nat + theorem filter.tendsto_at_top_embedding Modified src/topology/instances/real.lean + theorem tendsto_coe_int_real_at_top_at_top + theorem tendsto_coe_int_real_at_top_iff + theorem tendsto_coe_nat_real_at_top_at_top + theorem tendsto_coe_nat_real_at_top_iff - theorem tendsto_of_nat_at_top_at_top 2019-02-12 11:17:26+01:00 c853c33 chore(analysis/specific_limits): replace mul_add_one_le_pow by pow_ge_one_add_mul ESTIMATED CHANGES Modified src/analysis/specific_limits.lean - theorem mul_add_one_le_pow 2019-02-12 09:12:26 41e3b6f refactor(data/list): add prop arg for easier usage (#715) ESTIMATED CHANGES Modified src/data/list/basic.lean +/- theorem list.exists_or_eq_self_of_erasep 2019-02-11 20:48:17-05:00 d1ef181 feat(topology/metric_space/gluing): Gluing metric spaces (#695) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean - def metric_space_sum - theorem sum.dist_eq - theorem sum.one_dist_le' - theorem sum.one_dist_le Added src/topology/metric_space/gluing.lean + def metric.glue_dist + theorem metric.glue_dist_glued_points + def metric.glue_metric_approx + def metric.glue_premetric + def metric.glue_space + theorem metric.isometry_on_inl + theorem metric.isometry_on_inr + def metric.metric_space_sum + def metric.sum.dist + theorem metric.sum.dist_eq + theorem metric.sum.dist_eq_glue_dist + theorem metric.sum.one_dist_le' + theorem metric.sum.one_dist_le + theorem metric.to_glue_commute + def metric.to_glue_l + theorem metric.to_glue_l_isometry + def metric.to_glue_r + theorem metric.to_glue_r_isometry 2019-02-11 15:43:36-05:00 8243300 build(nightly): fix nightly ESTIMATED CHANGES Modified .travis.yml Modified scripts/deploy_nightly.sh Modified scripts/lean_version.py 2019-02-11 16:50:18 fb7e42d fix(group_theory/quotient_group): remove duplicate group_hom instance (#713) ESTIMATED CHANGES Modified src/group_theory/quotient_group.lean 2019-02-11 10:13:54+01:00 4b84aac fix(data/finsupp): duplicated instance ESTIMATED CHANGES Modified src/data/finsupp.lean +/- theorem finsupp.mul_sum 2019-02-10 21:50:00 091cad7 feat(algebra/gcd_domain): normalize (#668) ESTIMATED CHANGES Modified src/algebra/gcd_domain.lean + theorem associated_normalize - theorem associated_of_dvd_of_dvd - theorem associates.norm_unit_out + theorem associates.normalize_out +/- theorem associates.out_mk - theorem dvd_antisymm_of_norm + theorem dvd_antisymm_of_normalize_eq + theorem dvd_normalize_iff +/- theorem gcd_eq_left_iff - theorem gcd_eq_mul_norm_unit + theorem gcd_eq_normalize +/- theorem gcd_eq_right_iff +/- theorem gcd_mul_lcm +/- theorem gcd_mul_left +/- theorem gcd_mul_right +/- theorem gcd_same +/- theorem gcd_zero_left +/- theorem gcd_zero_right - theorem int.coe_nat_abs_eq_mul_norm_unit + theorem int.coe_nat_abs_eq_normalize - theorem int.norm_unit_nat_coe - theorem int.norm_unit_of_neg - theorem int.norm_unit_of_nonneg + theorem int.normalize_coe_nat + theorem int.normalize_of_neg + theorem int.normalize_of_nonneg +/- theorem lcm_eq_left_iff - theorem lcm_eq_mul_norm_unit + theorem lcm_eq_normalize +/- theorem lcm_eq_right_iff +/- theorem lcm_mul_left +/- theorem lcm_mul_right +/- theorem lcm_one_left +/- theorem lcm_one_right +/- theorem lcm_same +/- theorem lcm_units_coe_left +/- theorem lcm_units_coe_right - theorem mul_norm_unit_eq_mul_norm_unit - theorem norm_unit_gcd - theorem norm_unit_lcm + def normalize + theorem normalize_associated + theorem normalize_coe_units + theorem normalize_dvd_iff + theorem normalize_eq_normalize + theorem normalize_eq_normalize_iff + theorem normalize_eq_one + theorem normalize_eq_zero + theorem normalize_gcd + theorem normalize_idem + theorem normalize_lcm + theorem normalize_mul + theorem normalize_one + theorem normalize_zero Modified src/data/polynomial.lean - theorem polynomial.monic_mul_norm_unit + theorem polynomial.monic_normalize Modified src/ring_theory/unique_factorization_domain.lean 2019-02-10 12:36:00-05:00 cfe582f Automate the deployment of nightly builds (#707) * build(nightly): automate nightly releases of mathlib ESTIMATED CHANGES Modified .travis.yml Added scripts/deploy_nightly.sh Added scripts/lean_version.py Modified scripts/update-mathlib.py 2019-02-10 16:44:30 9b28db0 refactor(*): refactor associates (#710) ESTIMATED CHANGES Renamed src/ring_theory/associated.lean to src/algebra/associated.lean - theorem associates.dvd_out_iff - theorem associates.norm_unit_out - theorem associates.out_dvd_iff - theorem associates.out_mk - theorem associates.out_mul - theorem associates.out_one - theorem associates.out_top - def associates_int_equiv_nat - theorem irreducible_iff_nat_prime - theorem nat.prime_iff_prime - theorem nat.prime_iff_prime_int Modified src/algebra/gcd_domain.lean + theorem associates.dvd_out_iff + theorem associates.norm_unit_out + theorem associates.out_dvd_iff + theorem associates.out_mk + theorem associates.out_mul + theorem associates.out_one + theorem associates.out_top + def associates_int_equiv_nat + theorem int.coe_gcd + theorem int.coe_lcm + theorem int.coe_nat_abs_eq_mul_norm_unit + theorem int.dvd_gcd + theorem int.dvd_lcm_left + theorem int.dvd_lcm_right + theorem int.gcd_assoc + theorem int.gcd_comm + theorem int.gcd_div + theorem int.gcd_dvd_gcd_mul_left + theorem int.gcd_dvd_gcd_mul_left_right + theorem int.gcd_dvd_gcd_mul_right + theorem int.gcd_dvd_gcd_mul_right_right + theorem int.gcd_dvd_gcd_of_dvd_left + theorem int.gcd_dvd_gcd_of_dvd_right + theorem int.gcd_dvd_left + theorem int.gcd_dvd_right + theorem int.gcd_eq_left + theorem int.gcd_eq_right + theorem int.gcd_eq_zero_iff + theorem int.gcd_mul_lcm + theorem int.gcd_mul_left + theorem int.gcd_mul_right + theorem int.gcd_one_left + theorem int.gcd_one_right + theorem int.gcd_pos_of_non_zero_left + theorem int.gcd_pos_of_non_zero_right + theorem int.gcd_self + theorem int.gcd_zero_left + theorem int.gcd_zero_right + def int.lcm + theorem int.lcm_assoc + theorem int.lcm_comm + theorem int.lcm_def + theorem int.lcm_dvd + theorem int.lcm_one_left + theorem int.lcm_one_right + theorem int.lcm_self + theorem int.lcm_zero_left + theorem int.lcm_zero_right + theorem int.nat_abs_gcd + theorem int.nat_abs_lcm + theorem int.norm_unit_nat_coe + theorem int.norm_unit_of_neg + theorem int.norm_unit_of_nonneg + theorem irreducible_iff_nat_prime + theorem nat.prime_iff_prime + theorem nat.prime_iff_prime_int Modified src/data/int/gcd.lean - theorem int.coe_gcd - theorem int.coe_lcm - theorem int.coe_nat_abs_eq_mul_norm_unit - theorem int.dvd_gcd - theorem int.dvd_lcm_left - theorem int.dvd_lcm_right - theorem int.gcd_assoc - theorem int.gcd_comm - theorem int.gcd_div - theorem int.gcd_dvd_gcd_mul_left - theorem int.gcd_dvd_gcd_mul_left_right - theorem int.gcd_dvd_gcd_mul_right - theorem int.gcd_dvd_gcd_mul_right_right - theorem int.gcd_dvd_gcd_of_dvd_left - theorem int.gcd_dvd_gcd_of_dvd_right - theorem int.gcd_dvd_left - theorem int.gcd_dvd_right - theorem int.gcd_eq_left - theorem int.gcd_eq_right - theorem int.gcd_eq_zero_iff - theorem int.gcd_mul_lcm - theorem int.gcd_mul_left - theorem int.gcd_mul_right - theorem int.gcd_one_left - theorem int.gcd_one_right - theorem int.gcd_pos_of_non_zero_left - theorem int.gcd_pos_of_non_zero_right - theorem int.gcd_self - theorem int.gcd_zero_left - theorem int.gcd_zero_right - def int.lcm - theorem int.lcm_assoc - theorem int.lcm_comm - theorem int.lcm_def - theorem int.lcm_dvd - theorem int.lcm_one_left - theorem int.lcm_one_right - theorem int.lcm_self - theorem int.lcm_zero_left - theorem int.lcm_zero_right - theorem int.nat_abs_gcd - theorem int.nat_abs_lcm - theorem int.norm_unit_nat_coe - theorem int.norm_unit_of_neg - theorem int.norm_unit_of_nonneg Modified src/data/padics/padic_norm.lean Modified src/data/polynomial.lean Modified src/ring_theory/euclidean_domain.lean Modified src/ring_theory/ideals.lean Modified src/ring_theory/multiplicity.lean Modified src/ring_theory/unique_factorization_domain.lean 2019-02-10 14:25:05 c25122b feat(algebra/archimedean): add fractional parts of floor_rings (#709) ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem floor_add_fract + theorem floor_eq_iff + theorem floor_fract + def fract + theorem fract_add + theorem fract_add_floor + theorem fract_coe + theorem fract_eq_fract + theorem fract_eq_iff + theorem fract_floor + theorem fract_fract + theorem fract_lt_one + theorem fract_mul_nat + theorem fract_nonneg + theorem fract_zero Modified src/algebra/group.lean + theorem sub_eq_sub_iff_sub_eq_sub 2019-02-10 14:01:02+01:00 d6f84da feat(tactic/tidy): add `tidy?` syntax for reporting a tactic script (#704) ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/tidy.lean Modified test/tidy.lean +/- structure tidy.test.B +/- def tidy.test.d +/- def tidy.test.tidy_test_0 +/- def tidy.test.tidy_test_1 2019-02-10 10:39:51 ed4c536 feat(data/polynomial): multiplicity of roots of polynomials (#656) * feat(data/polynomial): multiplicity of roots of polynomials * rename lemmas * use section * use `nonzero_comm_ring.of_ne` * refactor(polynomial): weaken decidablility hypothesis * indentation * swap order of arguments ESTIMATED CHANGES Modified src/algebra/ring.lean + def nonzero_comm_ring.of_ne Modified src/data/polynomial.lean + def polynomial.decidable_dvd_monic + theorem polynomial.div_by_monic_mul_pow_root_multiplicity_eq + theorem polynomial.eval_div_by_monic_pow_root_multiplicity_ne_zero + theorem polynomial.monic_mul + theorem polynomial.monic_pow + theorem polynomial.multiplicity_X_sub_C_finite + theorem polynomial.multiplicity_finite_of_degree_pos_of_monic + def polynomial.nonzero_comm_ring.of_polynomial_ne + theorem polynomial.pow_root_multiplicity_dvd + def polynomial.root_multiplicity + theorem polynomial.root_multiplicity_eq_multiplicity 2019-02-09 15:41:40 088f753 refactor(geo_sum): remove duplicate proofs about geometric sums (#706) * feat(data/finset): add range_add_one * feat(algebra/big_operators): geometric sum for semiring, ring and division ring * refactor(geo_sum): remove duplicate proofs about geometric sums ESTIMATED CHANGES Modified src/algebra/big_operators.lean +/- theorem geom_sum + theorem geom_sum_inv Modified src/analysis/specific_limits.lean - theorem sum_geometric' - theorem sum_geometric Modified src/data/complex/basic.lean - theorem complex.inv_zero - theorem complex.mul_inv_cancel Modified src/data/complex/exponential.lean - theorem geo_sum_eq - theorem geo_sum_inv_eq 2019-02-09 15:38:37 484d864 add geometric sum (#701) * feat(data/finset): add range_add_one * feat(algebra/big_operators): geometric sum for semiring, ring and division ring ESTIMATED CHANGES Modified src/algebra/big_operators.lean + theorem geom_sum + theorem geom_sum_mul + theorem geom_sum_mul_add Modified src/data/finset.lean + theorem finset.range_add_one 2019-02-08 20:56:33-05:00 22c7179 build(update-mathlib): adjust the header of python script ESTIMATED CHANGES Modified scripts/update-mathlib.py 2019-02-08 18:41:17-05:00 8b51017 build(update-mathlib): fix installation and documentation ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh Modified scripts/setup-update-mathlib.sh Modified scripts/update-mathlib.py 2019-02-08 17:13:15-05:00 650237b build(update-mathlib): install update-mathlib into `~/.mathlib/bin` ESTIMATED CHANGES Modified scripts/remote-install-update-mathlib.sh Modified scripts/setup-update-mathlib.sh 2019-02-08 17:01:46-05:00 814cb03 build(update-mathlib): fix installation and documentation ESTIMATED CHANGES Modified README.md Added scripts/remote-install-update-mathlib.sh 2019-02-08 16:55:19-05:00 64065f4 build(update-mathlib): improve installation and documentation ESTIMATED CHANGES Modified .travis.yml Modified README.md Modified scripts/update-mathlib.py 2019-02-08 16:11:45-05:00 4227f5c Deploy olean (#697) * deploy(olean): deploy the olean files for every successful builds ESTIMATED CHANGES Modified .travis.yml Modified README.md Added scripts/setup-update-mathlib.sh Added scripts/update-mathlib.py 2019-02-08 19:05:45 11e19d8 refactor(ring_theory/noetherian): make is_noetherian and is_noetherian_ring classes (#689) * refactor(ring_theory/noetherian): make is_noetherian and is_noetherian_ring classes * correct spelling mistake. * add well_founded_submodule_gt ESTIMATED CHANGES Modified src/field_theory/splitting_field.lean Modified src/ring_theory/noetherian.lean - def is_noetherian - theorem is_noetherian_pi - theorem is_noetherian_prod +/- def is_noetherian_ring - theorem is_noetherian_ring_range - theorem ring.is_noetherian_of_fintype + theorem well_founded_submodule_gt Modified src/ring_theory/polynomial.lean +/- theorem ideal.is_fg_degree_le +/- theorem is_noetherian_ring_polynomial Modified src/ring_theory/principal_ideal_domain.lean - theorem principal_ideal_domain.is_noetherian_ring 2019-02-08 13:11:06-05:00 1f50e0d fix(build): fix the output keeping travis builds alive (#702) ESTIMATED CHANGES Modified .travis.yml 2019-02-08 09:43:02-05:00 0f2562e fix(build): fix the output keeping travis builds alive (#700) ESTIMATED CHANGES Modified .travis.yml 2019-02-08 09:28:04-05:00 cfd2b75 feat(order/filter): break filter into smaller files ESTIMATED CHANGES Renamed src/order/filter.lean to src/order/filter/basic.lean - def filter.mem_pmap - def filter.mem_rcomap' - theorem filter.mem_rmap - def filter.pcomap' - def filter.pmap - theorem filter.pmap_res - def filter.ptendsto' - theorem filter.ptendsto'_def - theorem filter.ptendsto'_of_ptendsto - def filter.ptendsto - theorem filter.ptendsto_def - theorem filter.ptendsto_iff_rtendsto - theorem filter.ptendsto_of_ptendsto' - def filter.rcomap' - theorem filter.rcomap'_compose - theorem filter.rcomap'_rcomap' - theorem filter.rcomap'_sets - def filter.rcomap - theorem filter.rcomap_compose - theorem filter.rcomap_rcomap - theorem filter.rcomap_sets - def filter.rmap - theorem filter.rmap_compose - theorem filter.rmap_rmap - theorem filter.rmap_sets - def filter.rtendsto' - theorem filter.rtendsto'_def - def filter.rtendsto - theorem filter.rtendsto_def - theorem filter.rtendsto_iff_le_comap - theorem filter.tendsto_iff_ptendsto - theorem filter.tendsto_iff_ptendsto_univ - theorem filter.tendsto_iff_rtendsto' - theorem filter.tendsto_iff_rtendsto Added src/order/filter/default.lean Added src/order/filter/partial.lean + def filter.mem_pmap + def filter.mem_rcomap' + theorem filter.mem_rmap + def filter.pcomap' + def filter.pmap + theorem filter.pmap_res + def filter.ptendsto' + theorem filter.ptendsto'_def + theorem filter.ptendsto'_of_ptendsto + def filter.ptendsto + theorem filter.ptendsto_def + theorem filter.ptendsto_iff_rtendsto + theorem filter.ptendsto_of_ptendsto' + def filter.rcomap' + theorem filter.rcomap'_compose + theorem filter.rcomap'_rcomap' + theorem filter.rcomap'_sets + def filter.rcomap + theorem filter.rcomap_compose + theorem filter.rcomap_rcomap + theorem filter.rcomap_sets + def filter.rmap + theorem filter.rmap_compose + theorem filter.rmap_rmap + theorem filter.rmap_sets + def filter.rtendsto' + theorem filter.rtendsto'_def + def filter.rtendsto + theorem filter.rtendsto_def + theorem filter.rtendsto_iff_le_comap + theorem filter.tendsto_iff_ptendsto + theorem filter.tendsto_iff_ptendsto_univ + theorem filter.tendsto_iff_rtendsto' + theorem filter.tendsto_iff_rtendsto 2019-02-08 09:28:04-05:00 8db042f feat(data/rel): galois_connection (image r) (core r) ESTIMATED CHANGES Modified src/data/rel.lean +/- theorem rel.core_comp + theorem rel.core_preimage_gc + theorem rel.image_subset_iff +/- theorem rel.preimage_comp +/- def rel.restrict_domain +/- theorem set.preimage_eq 2019-02-08 09:28:04-05:00 b2ba37c chore(*): fix errors introduced by rebasing ESTIMATED CHANGES Deleted analysis/metric_space.lean - theorem abs_dist - theorem abs_dist_sub_le - def ball - theorem ball_disjoint - theorem ball_disjoint_same - theorem ball_eq_empty_iff_nonpos - theorem ball_half_subset - theorem ball_mem_nhds - theorem ball_subset - theorem ball_subset_ball - theorem ball_subset_closed_ball - theorem cauchy_of_metric - theorem cauchy_seq_metric' - theorem cauchy_seq_metric - def closed_ball - theorem continuous_dist' - theorem continuous_dist - theorem continuous_of_metric - theorem continuous_topo_metric - theorem countable_closure_of_compact - theorem dist_comm - theorem dist_eq_edist - theorem dist_eq_nndist - theorem dist_eq_zero - theorem dist_le_zero - theorem dist_mem_uniformity - theorem dist_nonneg - theorem dist_pi_def - theorem dist_pos - theorem dist_self - theorem dist_triangle - theorem dist_triangle_left - theorem dist_triangle_right - theorem edist_dist - theorem edist_eq_dist - theorem edist_eq_nndist - theorem edist_ne_top - theorem eq_of_dist_eq_zero - theorem eq_of_forall_dist_le - theorem eq_of_nndist_eq_zero - theorem exists_ball_subset_ball - theorem exists_delta_of_continuous - theorem finite_cover_balls_of_compact - theorem is_closed_ball - theorem is_open_ball - theorem is_open_metric - theorem lebesgue_number_lemma_of_metric - theorem lebesgue_number_lemma_of_metric_sUnion - theorem mem_ball' - theorem mem_ball - theorem mem_ball_comm - theorem mem_ball_self - theorem mem_closed_ball - theorem mem_closure_iff' - theorem mem_nhds_iff_metric - theorem mem_uniformity_dist - theorem mem_uniformity_dist_edist - theorem metric.mem_nhds_within - theorem metric.ptendsto_nhds_within - theorem metric.rtendsto'_nhds_within - theorem metric.rtendsto_nhds_within - theorem metric.tendsto_nhds_within - def metric_space.induced - def metric_space.replace_uniformity - def metric_space.uniform_space_of_dist - theorem nhds_comap_dist - theorem nhds_eq_metric - def nndist - theorem nndist_comm - theorem nndist_eq_dist - theorem nndist_eq_edist - theorem nndist_eq_zero - theorem nndist_self - theorem nndist_triangle - theorem nndist_triangle_left - theorem nndist_triangle_right - theorem pos_of_mem_ball - theorem real.dist_0_eq_abs - theorem real.dist_eq - theorem second_countable_of_separable_metric_space - theorem subtype.dist_eq - theorem swap_dist - theorem tendsto_at_top_metric - theorem tendsto_dist - theorem tendsto_iff_dist_tendsto_zero - theorem tendsto_nhds_of_metric - theorem tendsto_nhds_topo_metric - theorem totally_bounded_of_metric - theorem uniform_continuous_dist' - theorem uniform_continuous_dist - theorem uniform_continuous_of_metric - theorem uniform_embedding_of_metric - theorem uniformity_dist' - theorem uniformity_dist - theorem uniformity_edist' - theorem uniformity_edist - theorem zero_eq_dist - theorem zero_eq_nndist Deleted data/real/cau_seq_filter.lean - theorem cau_seq_iff_cauchy_seq - theorem cauchy_of_filter_cauchy - theorem complete_of_cauchy_seq_tendsto - theorem filter_cauchy_of_cauchy - theorem sequentially_complete.cauchy_seq_of_dist_tendsto_0 - theorem sequentially_complete.le_nhds_cau_filter_lim - theorem sequentially_complete.mono_of_mono_succ - theorem sequentially_complete.seq_of_cau_filter_is_cauchy' - theorem sequentially_complete.seq_of_cau_filter_is_cauchy - theorem sequentially_complete.seq_of_cau_filter_mem_set_seq - def sequentially_complete.set_seq_of_cau_filter - theorem sequentially_complete.set_seq_of_cau_filter_inhabited - theorem sequentially_complete.set_seq_of_cau_filter_mem_sets - theorem sequentially_complete.set_seq_of_cau_filter_monotone' - theorem sequentially_complete.set_seq_of_cau_filter_monotone - theorem sequentially_complete.set_seq_of_cau_filter_spec - theorem sequentially_complete.tendsto_div - theorem tendsto_limit Modified src/analysis/normed_space/basic.lean Modified src/data/real/cau_seq_filter.lean Modified src/measure_theory/borel_space.lean Modified src/topology/continuity.lean +/- def continuous_at_within +/- theorem continuous_at_within_iff_continuous_at_restrict +/- theorem continuous_at_within_univ Modified src/topology/instances/ennreal.lean Modified src/topology/metric_space/basic.lean Modified src/topology/sequences.lean 2019-02-08 09:28:04-05:00 8e4aafa feat(analysis/metric): convergence wrt nhds_within ESTIMATED CHANGES Modified analysis/metric_space.lean + theorem metric.mem_nhds_within + theorem metric.ptendsto_nhds_within + theorem metric.rtendsto'_nhds_within + theorem metric.rtendsto_nhds_within + theorem metric.tendsto_nhds_within 2019-02-08 09:28:04-05:00 f5d73bd feat(analysis/topology/continuity): add some variations ESTIMATED CHANGES Added analysis/metric_space.lean + theorem abs_dist + theorem abs_dist_sub_le + def ball + theorem ball_disjoint + theorem ball_disjoint_same + theorem ball_eq_empty_iff_nonpos + theorem ball_half_subset + theorem ball_mem_nhds + theorem ball_subset + theorem ball_subset_ball + theorem ball_subset_closed_ball + theorem cauchy_of_metric + theorem cauchy_seq_metric' + theorem cauchy_seq_metric + def closed_ball + theorem continuous_dist' + theorem continuous_dist + theorem continuous_of_metric + theorem continuous_topo_metric + theorem countable_closure_of_compact + theorem dist_comm + theorem dist_eq_edist + theorem dist_eq_nndist + theorem dist_eq_zero + theorem dist_le_zero + theorem dist_mem_uniformity + theorem dist_nonneg + theorem dist_pi_def + theorem dist_pos + theorem dist_self + theorem dist_triangle + theorem dist_triangle_left + theorem dist_triangle_right + theorem edist_dist + theorem edist_eq_dist + theorem edist_eq_nndist + theorem edist_ne_top + theorem eq_of_dist_eq_zero + theorem eq_of_forall_dist_le + theorem eq_of_nndist_eq_zero + theorem exists_ball_subset_ball + theorem exists_delta_of_continuous + theorem finite_cover_balls_of_compact + theorem is_closed_ball + theorem is_open_ball + theorem is_open_metric + theorem lebesgue_number_lemma_of_metric + theorem lebesgue_number_lemma_of_metric_sUnion + theorem mem_ball' + theorem mem_ball + theorem mem_ball_comm + theorem mem_ball_self + theorem mem_closed_ball + theorem mem_closure_iff' + theorem mem_nhds_iff_metric + theorem mem_uniformity_dist + theorem mem_uniformity_dist_edist + def metric_space.induced + def metric_space.replace_uniformity + def metric_space.uniform_space_of_dist + theorem nhds_comap_dist + theorem nhds_eq_metric + def nndist + theorem nndist_comm + theorem nndist_eq_dist + theorem nndist_eq_edist + theorem nndist_eq_zero + theorem nndist_self + theorem nndist_triangle + theorem nndist_triangle_left + theorem nndist_triangle_right + theorem pos_of_mem_ball + theorem real.dist_0_eq_abs + theorem real.dist_eq + theorem second_countable_of_separable_metric_space + theorem subtype.dist_eq + theorem swap_dist + theorem tendsto_at_top_metric + theorem tendsto_dist + theorem tendsto_iff_dist_tendsto_zero + theorem tendsto_nhds_of_metric + theorem tendsto_nhds_topo_metric + theorem totally_bounded_of_metric + theorem uniform_continuous_dist' + theorem uniform_continuous_dist + theorem uniform_continuous_of_metric + theorem uniform_embedding_of_metric + theorem uniformity_dist' + theorem uniformity_dist + theorem uniformity_edist' + theorem uniformity_edist + theorem zero_eq_dist + theorem zero_eq_nndist Added data/real/cau_seq_filter.lean + theorem cau_seq_iff_cauchy_seq + theorem cauchy_of_filter_cauchy + theorem complete_of_cauchy_seq_tendsto + theorem filter_cauchy_of_cauchy + theorem sequentially_complete.cauchy_seq_of_dist_tendsto_0 + theorem sequentially_complete.le_nhds_cau_filter_lim + theorem sequentially_complete.mono_of_mono_succ + theorem sequentially_complete.seq_of_cau_filter_is_cauchy' + theorem sequentially_complete.seq_of_cau_filter_is_cauchy + theorem sequentially_complete.seq_of_cau_filter_mem_set_seq + def sequentially_complete.set_seq_of_cau_filter + theorem sequentially_complete.set_seq_of_cau_filter_inhabited + theorem sequentially_complete.set_seq_of_cau_filter_mem_sets + theorem sequentially_complete.set_seq_of_cau_filter_monotone' + theorem sequentially_complete.set_seq_of_cau_filter_monotone + theorem sequentially_complete.set_seq_of_cau_filter_spec + theorem sequentially_complete.tendsto_div + theorem tendsto_limit Modified src/analysis/exponential.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/data/padics/hensel.lean Modified src/topology/algebra/group.lean Modified src/topology/algebra/infinite_sum.lean Modified src/topology/algebra/topological_structures.lean Modified src/topology/compact_open.lean Modified src/topology/continuity.lean + def continuous_at +/- theorem continuous_at_iff_ultrafilter + theorem continuous_at_subtype_val + def continuous_at_within + theorem continuous_at_within_iff_continuous_at_restrict + theorem continuous_at_within_iff_ptendsto_res + theorem continuous_at_within_univ + theorem continuous_iff_continuous_at - theorem continuous_iff_tendsto + def continuous_on + theorem continuous_on_iff' + theorem continuous_on_iff + theorem continuous_on_iff_continuous_restrict + theorem list.continuous_at_length - theorem list.tendsto_length + theorem open_dom_of_pcontinuous + def pcontinuous + theorem pcontinuous_iff' - theorem tendsto_subtype_val + theorem vector.continuous_at_remove_nth - theorem vector.tendsto_remove_nth Modified src/topology/instances/complex.lean Modified src/topology/instances/ennreal.lean Modified src/topology/instances/nnreal.lean Modified src/topology/instances/real.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean 2019-02-08 09:28:04-05:00 e0b8253 feat (analysis/topology/topological_space): properties of nhds, nhds_within ESTIMATED CHANGES Modified src/topology/basic.lean + theorem all_mem_nhds + theorem all_mem_nhds_filter + theorem map_nhds_induced_of_surjective + theorem map_nhds_within + theorem mem_nhds_induced + theorem mem_nhds_subtype + theorem mem_nhds_within + theorem mem_nhds_within_subtype + theorem nhds_induced + theorem nhds_subtype + def nhds_within + theorem nhds_within_empty + theorem nhds_within_eq + theorem nhds_within_eq_map_subtype_val + theorem nhds_within_eq_nhds_within + theorem nhds_within_inter' + theorem nhds_within_inter + theorem nhds_within_mono + theorem nhds_within_restrict + theorem nhds_within_subtype + theorem nhds_within_union + theorem nhds_within_univ + theorem nhs_within_eq_of_open + theorem principal_subtype + theorem ptendsto'_nhds + theorem ptendsto_nhds + theorem rtendsto'_nhds + theorem rtendsto_nhds + theorem tendsto_at_within_iff_subtype + theorem tendsto_if_nhds_within +/- theorem tendsto_nhds 2019-02-08 09:28:04-05:00 a96fa3b feat(order/filter): convergence for relations and partial functions ESTIMATED CHANGES Modified src/data/pfun.lean +/- def pfun.core +/- def pfun.graph' +/- theorem pfun.mem_core +/- theorem pfun.mem_core_res +/- theorem pfun.preimage_as_subtype +/- theorem roption.mem_restrict Renamed data/rel.lean to src/data/rel.lean Modified src/order/filter.lean + theorem filter.le_map_comap_of_surjective' + theorem filter.le_map_comap_of_surjective + theorem filter.map_comap_of_surjective' + theorem filter.map_comap_of_surjective + theorem filter.mem_inf_principal + def filter.mem_pmap + def filter.mem_rcomap' + theorem filter.mem_rmap + def filter.pcomap' + def filter.pmap + theorem filter.pmap_res + def filter.ptendsto' + theorem filter.ptendsto'_def + theorem filter.ptendsto'_of_ptendsto + def filter.ptendsto + theorem filter.ptendsto_def + theorem filter.ptendsto_iff_rtendsto + theorem filter.ptendsto_of_ptendsto' + def filter.rcomap' + theorem filter.rcomap'_compose + theorem filter.rcomap'_rcomap' + theorem filter.rcomap'_sets + def filter.rcomap + theorem filter.rcomap_compose + theorem filter.rcomap_rcomap + theorem filter.rcomap_sets + def filter.rmap + theorem filter.rmap_compose + theorem filter.rmap_rmap + theorem filter.rmap_sets + def filter.rtendsto' + theorem filter.rtendsto'_def + def filter.rtendsto + theorem filter.rtendsto_def + theorem filter.rtendsto_iff_le_comap + theorem filter.tendsto_if + theorem filter.tendsto_iff_ptendsto + theorem filter.tendsto_iff_ptendsto_univ + theorem filter.tendsto_iff_rtendsto' + theorem filter.tendsto_iff_rtendsto 2019-02-08 09:28:04-05:00 4444464 feat(data/pfun): add restrict, preimage, core, etc. ESTIMATED CHANGES Modified src/data/pfun.lean + theorem pfun.as_subtype_eq_of_mem + theorem pfun.compl_dom_subset_core + def pfun.core + theorem pfun.core_def + theorem pfun.core_eq + theorem pfun.core_inter + theorem pfun.core_mono + theorem pfun.core_res + theorem pfun.core_restrict + theorem pfun.dom_eq + def pfun.graph' + def pfun.image + theorem pfun.image_def + theorem pfun.image_inter + theorem pfun.image_mono + theorem pfun.image_union + theorem pfun.mem_core + theorem pfun.mem_core_res + theorem pfun.mem_dom + theorem pfun.mem_image + def pfun.mem_preimage + theorem pfun.mem_res + theorem pfun.mem_restrict + def pfun.preimage + theorem pfun.preimage_as_subtype + theorem pfun.preimage_def + theorem pfun.preimage_eq + theorem pfun.preimage_inter + theorem pfun.preimage_mono + theorem pfun.preimage_subset_core + theorem pfun.preimage_subset_dom + theorem pfun.preimage_union + theorem pfun.preimage_univ + def pfun.res + theorem pfun.res_univ + theorem roption.mem_eq + theorem roption.mem_restrict 2019-02-08 09:28:04-05:00 cae5c8b fix(data/rel): make composition local notation ESTIMATED CHANGES Modified data/rel.lean 2019-02-08 09:28:04-05:00 4779af7 feat(data/rel): a type for binary relations ESTIMATED CHANGES Added data/rel.lean + def function.graph + def rel.codom + theorem rel.codom_inv + def rel.comp + theorem rel.comp_assoc + theorem rel.comp_left_id + theorem rel.comp_right_id + def rel.core + theorem rel.core_comp + theorem rel.core_id + theorem rel.core_inter + theorem rel.core_mono + theorem rel.core_union + theorem rel.core_univ + def rel.dom + theorem rel.dom_inv + def rel.image + theorem rel.image_comp + theorem rel.image_id + theorem rel.image_inter + theorem rel.image_mono + theorem rel.image_union + theorem rel.image_univ + def rel.inv + theorem rel.inv_comp + theorem rel.inv_def + theorem rel.inv_id + theorem rel.inv_inv + theorem rel.mem_core + theorem rel.mem_image + theorem rel.mem_preimage + def rel.preimage + theorem rel.preimage_comp + theorem rel.preimage_def + theorem rel.preimage_id + theorem rel.preimage_inter + theorem rel.preimage_mono + theorem rel.preimage_union + theorem rel.preimage_univ + def rel.restrict_domain + def rel + theorem set.image_eq + theorem set.preimage_eq + theorem set.preimage_eq_core 2019-02-08 09:28:04-05:00 126d573 feat(data/set/basic,logic/function): small additions and renamings ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.inter_subset + theorem set.subtype.val_range - theorem set.subtype_val_image - theorem set.subtype_val_range + theorem subtype.image_preimage_val + theorem subtype.preimage_val_eq_preimage_val_iff + theorem subtype.val_image + theorem subtype.val_image_subset + theorem subtype.val_image_univ + theorem subtype.val_range Modified src/logic/function.lean + def function.restrict + theorem function.restrict_eq Modified src/order/filter.lean Modified src/topology/continuity.lean 2019-02-07 22:32:47 1ed7ad1 feat(algebra/archimedean): abs_sub_lt_one_of_floor_eq_floor (#693) * abs_diff_lt_one_of_floor_eq_floor * better name ESTIMATED CHANGES Modified src/algebra/archimedean.lean + theorem abs_sub_lt_one_of_floor_eq_floor 2019-02-07 19:37:17+01:00 177b5eb feat(linear_algebra): dimension of the base field is 1 ESTIMATED CHANGES Modified src/algebra/module.lean Modified src/linear_algebra/basis.lean + theorem is_basis_singleton_one Modified src/linear_algebra/dimension.lean + theorem dim_of_field 2019-02-07 19:36:51+01:00 0f24030 refactor(src/data/finset): supr/infi as a directed supr/infi of finite inf/sup ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.inf_congr + theorem finset.sup_congr + theorem lattice.infi_eq_infi_finset + theorem lattice.supr_eq_supr_finset + theorem set.Inter_eq_Inter_finset + theorem set.Union_eq_Union_finset Modified src/data/set/lattice.lean + theorem set.monotone_inter + theorem set.monotone_set_of + theorem set.monotone_union Modified src/order/filter.lean - theorem filter.Inf_sets_eq_finite - theorem filter.binfi_sup_eq +/- theorem filter.infi_sets_eq' + theorem filter.infi_sets_eq_finite +/- theorem filter.infi_sup_eq +/- theorem filter.supr_join - theorem lattice.Inf_eq_finite_sets - theorem lattice.inf_left_comm - theorem lattice.infi_empty_finset - theorem lattice.infi_insert_finset - theorem set.monotone_inter - theorem set.monotone_set_of Modified src/order/lattice.lean + theorem lattice.directed_of_inf + theorem lattice.directed_of_sup + theorem lattice.inf_left_comm + theorem lattice.sup_left_comm 2019-02-07 15:56:26+01:00 eeed321 chore(linear_algebra/basic): relate map/comap/ker/range/comp with 0 and smul; use map/comap Galois connection ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.comp_assoc +/- theorem linear_map.comp_id + theorem linear_map.comp_smul + theorem linear_map.comp_zero +/- theorem linear_map.id_comp + theorem linear_map.ker_smul' + theorem linear_map.ker_smul + theorem linear_map.range_le_bot_iff + theorem linear_map.range_smul' + theorem linear_map.range_smul + theorem linear_map.range_zero + theorem linear_map.smul_comp + theorem linear_map.zero_comp + theorem submodule.comap_inf + theorem submodule.comap_infi + theorem submodule.comap_smul' + theorem submodule.comap_smul + theorem submodule.comap_zero + theorem submodule.gc_map_comap + theorem submodule.map_smul' + theorem submodule.map_smul + theorem submodule.map_sup + theorem submodule.map_supr + theorem submodule.map_zero 2019-02-07 14:58:25+01:00 e98999e chore(algebra/pi_instances): generalize pi.list/multiset/finset_prod/sum_apply to dependent types ESTIMATED CHANGES Modified src/algebra/pi_instances.lean +/- theorem pi.finset_prod_apply +/- theorem pi.list_prod_apply +/- theorem pi.multiset_prod_apply 2019-02-07 14:58:25+01:00 ad7ef86 refactor(set_theory/cardinal): split up mk_Union_le_mk_sigma, add mk_Union_eq_mk_sigma; add equiv congruence for subtype ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.set_congr + def equiv.subtype_congr Modified src/data/set/lattice.lean + theorem set.bijective_sigma_to_Union + theorem set.injective_sigma_to_Union + def set.sigma_to_Union + theorem set.surjective_sigma_to_Union Modified src/set_theory/cardinal.lean + theorem cardinal.mk_Union_eq_sum_mk +/- theorem cardinal.mk_eq_of_injective 2019-02-07 13:13:39+01:00 8a1de24 feat(data/{list/alist,finmap}): implicit key type (#662) * feat(data/{list/alist,finmap}): implicit key type Make the key type α implicit in both alist and finmap. This brings these types into line with the underlying sigma and simplifies usage since α is inferred from the value function type β : α → Type v. * doc(data/list/alist): alist is stored as a linked list ESTIMATED CHANGES Modified src/data/finmap.lean +/- def alist.to_finmap +/- theorem alist.to_finmap_entries +/- theorem alist.to_finmap_eq +/- theorem finmap.empty_to_finmap +/- def finmap.erase +/- theorem finmap.erase_to_finmap +/- theorem finmap.ext +/- def finmap.extract +/- theorem finmap.extract_eq_lookup_erase +/- def finmap.insert +/- theorem finmap.insert_entries_of_neg +/- theorem finmap.insert_of_pos +/- theorem finmap.insert_to_finmap +/- def finmap.keys +/- theorem finmap.keys_empty +/- theorem finmap.keys_erase +/- theorem finmap.keys_erase_to_finset +/- theorem finmap.keys_ext +/- theorem finmap.keys_replace +/- theorem finmap.keys_val +/- theorem finmap.lift_on_to_finmap +/- def finmap.lookup +/- theorem finmap.lookup_is_some +/- theorem finmap.lookup_to_finmap +/- theorem finmap.mem_def +/- theorem finmap.mem_erase +/- theorem finmap.mem_insert +/- theorem finmap.mem_keys +/- theorem finmap.mem_replace +/- theorem finmap.mem_to_finmap +/- theorem finmap.not_mem_empty +/- theorem finmap.not_mem_empty_entries +/- def finmap.replace +/- theorem finmap.replace_to_finmap +/- def finmap.singleton +/- structure finmap Modified src/data/list/alist.lean +/- def alist.erase +/- theorem alist.ext +/- def alist.extract +/- theorem alist.extract_eq_lookup_erase +/- def alist.foldl +/- def alist.insert +/- theorem alist.insert_entries_of_neg +/- theorem alist.insert_of_pos +/- def alist.keys +/- theorem alist.keys_empty +/- theorem alist.keys_erase +/- theorem alist.keys_insert +/- theorem alist.keys_nodup +/- theorem alist.keys_replace +/- def alist.lookup +/- theorem alist.lookup_is_some +/- theorem alist.mem_def +/- theorem alist.mem_erase +/- theorem alist.mem_insert +/- theorem alist.mem_keys +/- theorem alist.mem_of_perm +/- theorem alist.mem_replace +/- theorem alist.not_mem_empty +/- theorem alist.not_mem_empty_entries +/- theorem alist.perm_erase +/- theorem alist.perm_insert +/- theorem alist.perm_lookup +/- theorem alist.perm_replace +/- def alist.replace +/- def alist.singleton +/- structure alist 2019-02-07 13:02:53+01:00 46d1009 feat(analysis/metric_space): Isometries (#657) ESTIMATED CHANGES Added src/topology/metric_space/isometry.lean + theorem emetric.isometry.diam_image + theorem isometric.coe_eq_to_equiv + theorem isometric.coe_eq_to_homeomorph + theorem isometric.image_symm + theorem isometric.preimage_symm + theorem isometric.range_coe + theorem isometric.self_comp_symm + theorem isometric.symm_comp_self + theorem isometric.to_homeomorph_to_equiv + structure isometric + theorem isometry.comp + theorem isometry.continuous + theorem isometry.dist_eq + theorem isometry.edist_eq + theorem isometry.injective + theorem isometry.inv + theorem isometry.isometric_on_range + theorem isometry.isometric_on_range_apply + theorem isometry.uniform_embedding + def isometry + theorem isometry_emetric_iff_metric + theorem isometry_id + theorem isometry_subsingleton + theorem isometry_subtype_val + theorem metric.isometry.diam_image 2019-02-07 10:22:13 8911b8c feat(algebra/order_functions): max_lt_max and min_lt_min (#692) ESTIMATED CHANGES Modified src/algebra/order_functions.lean + theorem max_lt_max + theorem min_lt_min 2019-02-06 20:15:47 51f80a3 feat(data/quot): quotient.ind' (#691) * feat(data/quot): quotient.ind' * correct elaborator tag; theorems not definitions ESTIMATED CHANGES Modified src/data/quot.lean 2019-02-06 10:58:04+01:00 9615b38 feat(data/real): completeness criterion for Cauchy sequences (closes #654) ESTIMATED CHANGES Modified src/data/real/cau_seq_filter.lean +/- theorem complete_of_cauchy_seq_tendsto + theorem emetric.complete_of_convergent_controlled_sequences + theorem metric.complete_of_convergent_controlled_sequences + theorem sequentially_complete.FB_lim + theorem sequentially_complete.FB_pos + theorem sequentially_complete.F_lim + theorem sequentially_complete.F_pos - theorem sequentially_complete.cauchy_seq_of_dist_tendsto_0 +/- theorem sequentially_complete.le_nhds_cau_filter_lim + theorem sequentially_complete.seq_of_cau_filter_bound - theorem sequentially_complete.seq_of_cau_filter_is_cauchy' +/- theorem sequentially_complete.seq_of_cau_filter_mem_set_seq +/- theorem sequentially_complete.set_seq_of_cau_filter_inhabited +/- theorem sequentially_complete.set_seq_of_cau_filter_mem_sets 2019-02-06 10:36:56+01:00 3ac7967 feat(analysis/metric_space): add premetric spaces (closes #652) ESTIMATED CHANGES Added src/topology/metric_space/premetric_space.lean + def premetric.dist_setoid + theorem premetric.metric_quot_dist_eq 2019-02-06 10:29:32+01:00 e93fa30 feat(category/fold): `foldl` and `foldr` for `traversable` structures (#376) ESTIMATED CHANGES Added src/category/fold.lean + def monoid.foldl.mk + def monoid.foldl.of_free_monoid + def monoid.foldl + def monoid.foldr.get + def monoid.foldr.mk + def monoid.foldr.of_free_monoid + def monoid.foldr + def monoid.mfoldl.mk + def monoid.mfoldl.of_free_monoid + def monoid.mfoldl + def monoid.mfoldr.get + def monoid.mfoldr.mk + def monoid.mfoldr.of_free_monoid + def monoid.mfoldr + def traversable.fold_map + theorem traversable.fold_map_hom + theorem traversable.fold_map_hom_free + theorem traversable.fold_map_map + theorem traversable.fold_mfoldl_cons + theorem traversable.fold_mfoldr_cons + theorem traversable.foldl.of_free_monoid_comp_free_mk + def traversable.foldl + theorem traversable.foldl_map + theorem traversable.foldl_to_list + theorem traversable.foldr.of_free_monoid_comp_free_mk + theorem traversable.foldr.unop_of_free_monoid + def traversable.foldr + theorem traversable.foldr_map + theorem traversable.foldr_to_list + def traversable.free.map + theorem traversable.free.map_eq_map + def traversable.free.mk + def traversable.length + theorem traversable.length_to_list + def traversable.map_fold + theorem traversable.mfoldl.of_free_monoid_comp_free_mk + def traversable.mfoldl + theorem traversable.mfoldl_map + theorem traversable.mfoldl_to_list + theorem traversable.mfoldr.of_free_monoid_comp_free_mk + theorem traversable.mfoldr.unop_of_free_monoid + def traversable.mfoldr + theorem traversable.mfoldr_map + theorem traversable.mfoldr_to_list + def traversable.to_list + theorem traversable.to_list_eq_self + theorem traversable.to_list_map + theorem traversable.to_list_spec 2019-02-06 09:59:29+01:00 c82243a feat(analysis/normed_space): bounded linear maps with the operator norm form a normed space (closes #680) ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + structure normed_space.core Added src/analysis/normed_space/operator_norm.lean + theorem bounded_by_operator_norm + theorem bounded_by_operator_norm_on_unit_ball + theorem bounded_by_operator_norm_on_unit_vector + def bounded_linear_maps + theorem exists_bound' + theorem exists_bound + theorem ext + theorem norm_of_unit_ball_bdd_above + theorem operator_norm_bounded_by + theorem operator_norm_homogeneous + theorem operator_norm_nonneg + theorem operator_norm_triangle + theorem operator_norm_zero_iff + theorem zero_in_im_ball Modified src/order/conditionally_complete_lattice.lean + theorem lattice.cSup_intro' 2019-02-05 19:47:08 d5a1b46 to_nat_le_to_nat (#685) ESTIMATED CHANGES Modified src/data/int/basic.lean + theorem int.to_nat_le_to_nat 2019-02-05 14:26:19-05:00 9f79d2e fix(tactic/h_generalize): fix name resolution in h_generalize (#688) ESTIMATED CHANGES Modified src/tactic/interactive.lean 2019-02-05 14:13:55-05:00 a0d8ae1 feat(tactic/replaceable): supplement `def_replacer` with attribute `replaceable` ESTIMATED CHANGES Modified src/data/string.lean - def string.map_tokens Added src/data/string/defs.lean + def string.map_tokens + def string.over_list Modified src/meta/expr.lean + def name.append_suffix Modified src/tactic/replacer.lean 2019-02-04 19:35:17-05:00 178c09d feat(natural_isomorphism): componentwise isos are isos (#671) ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean + theorem category_theory.is_iso.hom_inv_id - def category_theory.is_iso.hom_inv_id + theorem category_theory.is_iso.hom_inv_id_assoc + theorem category_theory.is_iso.inv_hom_id - def category_theory.is_iso.inv_hom_id + theorem category_theory.is_iso.inv_hom_id_assoc Modified src/category_theory/natural_isomorphism.lean 2019-02-04 20:49:37 9a8f1b0 feat(algebra/group_power): gpow_add_one (#683) * feat(algebra/group_power): gpow_add_one * feat(data/nat//basic): int.coe_nat_abs ESTIMATED CHANGES Modified src/algebra/group_power.lean + theorem add_one_gsmul + theorem gpow_add_one + theorem gpow_one_add + theorem one_add_gsmul Modified src/data/int/basic.lean + theorem int.coe_nat_abs 2019-02-04 19:00:17 5395232 remove simp on set_coe_eq_subtype (#682) ESTIMATED CHANGES Modified src/data/set/basic.lean +/- theorem set.set_coe_eq_subtype Modified src/group_theory/sylow.lean Modified src/tactic/subtype_instance.lean 2019-02-04 10:43:58+01:00 5e5f1e2 fix(data/*/Ico): succ_top is too aggressive as a simp lemma (#678) ESTIMATED CHANGES Modified src/data/finset.lean +/- theorem finset.Ico.succ_top Modified src/data/list/basic.lean +/- theorem list.Ico.succ_top Modified src/data/multiset.lean +/- theorem multiset.Ico.succ_top 2019-02-03 22:31:10 2539251 feat(data/nat/cast): abs_cast ESTIMATED CHANGES Modified src/data/nat/cast.lean + theorem nat.abs_cast 2019-02-03 17:00:41-05:00 d01e523 feat(category_theory/kleisli): monoids, const applicative functor and kleisli categories (#660) * feat(category_theory/kleisli): monoids, const applicative functor and kleisli categories ESTIMATED CHANGES Modified src/algebra/group.lean + theorem free_add_monoid.add_def + theorem free_add_monoid.zero_def + def free_add_monoid + theorem free_monoid.mul_def + theorem free_monoid.one_def + def free_monoid Modified src/category/applicative.lean Modified src/category/basic.lean + def fish + theorem fish_assoc + theorem fish_pipe + theorem fish_pure Modified src/category/functor.lean + def functor.add_const.mk + def functor.add_const.run + def functor.const.mk' Modified src/category/traversable/basic.lean Modified src/category_theory/category.lean + theorem category_theory.End.mul_def + theorem category_theory.End.one_def +/- def category_theory.End Added src/category_theory/instances/kleisli.lean + theorem category_theory.Kleisli.comp_def + theorem category_theory.Kleisli.id_def + def category_theory.Kleisli.mk + def category_theory.Kleisli Modified src/category_theory/instances/rings.lean Modified src/category_theory/natural_isomorphism.lean Modified src/category_theory/opposites.lean + theorem category_theory.op_inj + theorem category_theory.opposite.op_mul + theorem category_theory.opposite.op_one + theorem category_theory.opposite.unop_mul + theorem category_theory.opposite.unop_one + theorem category_theory.unop_inj Modified src/data/fintype.lean 2019-02-03 17:01:45+01:00 f5bd340 cleanup(*): removing uses of bare `have` (#676) ESTIMATED CHANGES Modified src/data/int/basic.lean Modified src/linear_algebra/basic.lean 2019-02-03 02:14:48-05:00 544f35c Update README.md ESTIMATED CHANGES Modified README.md 2019-02-03 02:06:28 b3e1e6f fix(README): update URL for build status icon (#681) ESTIMATED CHANGES Modified README.md 2019-02-03 01:08:36 044b6fa feat(algebra/euclidean_domain): discrete field to euclidean domain (#674) ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean 2019-02-02 19:04:50-05:00 3109c4b chore(purge_olean.sh): a few small improvements (#661) * purge empty directories * Only print if an .olean is rm'd. This reduces the noise and reduces the script run time. * use git top-level dir to make the script relocatable * only affect src and test dirs * use bash instead of sed ESTIMATED CHANGES Modified purge_olean.sh 2019-02-02 18:43:29-05:00 8590ff2 fix(functor_category): remove superfluous coercions (#670) ESTIMATED CHANGES Modified src/category_theory/functor_category.lean 2019-02-02 18:42:36-05:00 a09dc9f cleanup(category_theory/cones): tidying up, after making opposites work better (#675) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean +/- def category_theory.functor.cones +/- theorem category_theory.functor.cones_obj 2019-02-02 18:41:09-05:00 b084cfc fix(category_theory/equivalence): duplicated namespace prefix (#669) ESTIMATED CHANGES Modified src/category_theory/equivalence.lean - def category_theory.category_theory.equivalence.equivalence_of_fully_faithfully_ess_surj - def category_theory.category_theory.equivalence.ess_surj_of_equivalence + def category_theory.equivalence.equivalence_of_fully_faithfully_ess_surj + def category_theory.equivalence.ess_surj_of_equivalence 2019-02-02 17:59:12-05:00 e501d02 fix(replacer): better flow control in replacer when tactic fails (#673) The main consequence is better error reporting. ESTIMATED CHANGES Modified src/tactic/replacer.lean 2019-02-02 18:42:12 0393ccb feat(ring_theory/algebra): subalgebra_of_subring (#664) ESTIMATED CHANGES Modified src/ring_theory/algebra.lean + def alg_hom_int - def is_ring_hom.to_ℤ_alg_hom + theorem mem_subalgebra_of_subring - def ring.to_ℤ_algebra + def subalgebra_of_subring 2019-02-01 23:00:55-05:00 f529870 feat(data/nat/gcd/coprime): some easy simp lemmas (#677) ESTIMATED CHANGES Modified src/data/nat/gcd.lean + theorem nat.coprime_one_left_iff + theorem nat.coprime_one_right_iff + theorem nat.coprime_self + theorem nat.coprime_zero_left + theorem nat.coprime_zero_right 2019-02-02 01:41:01 6925e4d feat(algebra/euclidean_domain): lcm (#665) ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.dvd_lcm_left + theorem euclidean_domain.dvd_lcm_right + theorem euclidean_domain.gcd_mul_lcm + def euclidean_domain.lcm + theorem euclidean_domain.lcm_dvd + theorem euclidean_domain.lcm_dvd_iff + theorem euclidean_domain.lcm_eq_zero_iff + theorem euclidean_domain.lcm_zero_left + theorem euclidean_domain.lcm_zero_right 2019-02-01 20:07:31-05:00 fb60145 cleanup: replace `begin intros ...` with lambdas (#672) ESTIMATED CHANGES Modified src/category_theory/whiskering.lean Modified src/category_theory/yoneda.lean Modified src/data/set/basic.lean 2019-02-01 22:48:10 ed0d24a feat(algebra/euclidean_domain): add quotient_zero axiom to euclidean_domain (#666) ESTIMATED CHANGES Modified src/algebra/euclidean_domain.lean + theorem euclidean_domain.div_zero + theorem euclidean_domain.mul_div_assoc +/- theorem euclidean_domain.zero_div Modified src/data/polynomial.lean - theorem polynomial.div_zero 2019-02-01 12:26:22+01:00 d8f6dc4 feat(src/tactic/explode): improve printing of references ESTIMATED CHANGES Modified src/tactic/explode.lean 2019-02-01 12:26:22+01:00 a32de36 feat(src/tactic/explode): add printing for conclusions of sintros ESTIMATED CHANGES Modified src/tactic/explode.lean 2019-02-01 12:26:22+01:00 a08c9a7 add printing for conclusions of sintros ESTIMATED CHANGES Modified src/tactic/explode.lean 2019-02-01 12:13:59+01:00 c9e4f8e fix(tactic/inarith): fix denominator normalization of products ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified test/linarith.lean 2019-02-01 12:13:31+01:00 52adfd7 feat(tactic,tactic/interactive): add set tactic, a variant of let ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/interactive.lean 2019-02-01 09:53:51+01:00 89bc63c feat(ring_theory/noetherian): is_noetherian_ring_range ESTIMATED CHANGES Modified src/ring_theory/noetherian.lean + theorem is_noetherian_ring_range 2019-02-01 00:30:09 8e381f6 feat(ring_theory/algebra_operations): multiplication of submodules of an algebra (#658) ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem submodule.add_eq_sup + theorem submodule.zero_eq_bot Added src/ring_theory/algebra_operations.lean + theorem algebra.bot_mul + theorem algebra.fg_mul + theorem algebra.mul_bot + theorem algebra.mul_le + theorem algebra.mul_le_mul + theorem algebra.mul_le_mul_left + theorem algebra.mul_le_mul_right + theorem algebra.mul_mem_mul + theorem algebra.mul_mem_mul_rev + theorem algebra.mul_sup + theorem algebra.span_mul_span + theorem algebra.sup_mul Modified src/ring_theory/ideal_operations.lean - theorem submodule.add_eq_sup - theorem submodule.zero_eq_bot 2019-01-30 18:20:41-05:00 50a03f7 chore(test): fix test directory structure ESTIMATED CHANGES Renamed test/tests/coinductive.lean to test/coinductive.lean Renamed test/tests/examples.lean to test/examples.lean Renamed test/tests/fin_cases.lean to test/fin_cases.lean Renamed test/tests/finish1.lean to test/finish1.lean Renamed test/tests/finish2.lean to test/finish2.lean Renamed test/tests/finish3.lean to test/finish3.lean Renamed test/tests/linarith.lean to test/linarith.lean Renamed test/tests/mk_iff_of_inductive.lean to test/mk_iff_of_inductive.lean Renamed test/tests/monotonicity.lean to test/monotonicity.lean Renamed test/tests/monotonicity/test_cases.lean to test/monotonicity/test_cases.lean Renamed test/tests/norm_num.lean to test/norm_num.lean Renamed test/tests/replacer.lean to test/replacer.lean Renamed test/tests/restate_axiom.lean to test/restate_axiom.lean Renamed test/tests/ring.lean to test/ring.lean Renamed test/tests/solve_by_elim.lean to test/solve_by_elim.lean Renamed test/tests/split_ifs.lean to test/split_ifs.lean Renamed test/tests/tactics.lean to test/tactics.lean Renamed test/tests/tidy.lean to test/tidy.lean 2019-01-30 18:20:41-05:00 12be0aa refactor(category_theory/instances): rename `examples` to `instances` ESTIMATED CHANGES Renamed src/category_theory/examples/measurable_space.lean to src/category_theory/instances/measurable_space.lean - def category_theory.examples.Borel - def category_theory.examples.Meas + def category_theory.instances.Borel + def category_theory.instances.Meas Renamed src/category_theory/examples/monoids.lean to src/category_theory/instances/monoids.lean - def category_theory.examples.CommMon.forget_to_Mon - def category_theory.examples.CommMon - def category_theory.examples.Mon - def category_theory.examples.is_comm_monoid_hom + def category_theory.instances.CommMon.forget_to_Mon + def category_theory.instances.CommMon + def category_theory.instances.Mon + def category_theory.instances.is_comm_monoid_hom Renamed src/category_theory/examples/rings.lean to src/category_theory/instances/rings.lean - def category_theory.examples.CommRing.Int.cast - def category_theory.examples.CommRing.Int.hom_unique - def category_theory.examples.CommRing.Int - theorem category_theory.examples.CommRing.comp_val - def category_theory.examples.CommRing.forget - def category_theory.examples.CommRing.forget_to_CommMon - theorem category_theory.examples.CommRing.hom_coe_app - theorem category_theory.examples.CommRing.id_val - def category_theory.examples.CommRing.int.eq_cast' - theorem category_theory.examples.CommRing.polynomial_map_val - theorem category_theory.examples.CommRing.polynomial_obj_α - def category_theory.examples.CommRing.to_Ring - def category_theory.examples.CommRing - def category_theory.examples.Ring + def category_theory.instances.CommRing.Int.cast + def category_theory.instances.CommRing.Int.hom_unique + def category_theory.instances.CommRing.Int + theorem category_theory.instances.CommRing.comp_val + def category_theory.instances.CommRing.forget + def category_theory.instances.CommRing.forget_to_CommMon + theorem category_theory.instances.CommRing.hom_coe_app + theorem category_theory.instances.CommRing.id_val + def category_theory.instances.CommRing.int.eq_cast' + theorem category_theory.instances.CommRing.polynomial_map_val + theorem category_theory.instances.CommRing.polynomial_obj_α + def category_theory.instances.CommRing.to_Ring + def category_theory.instances.CommRing + def category_theory.instances.Ring Renamed src/category_theory/examples/topological_spaces.lean to src/category_theory/instances/topological_spaces.lean - def category_theory.examples.Top.adj₁ - def category_theory.examples.Top.adj₂ - def category_theory.examples.Top.colimit - def category_theory.examples.Top.colimit_is_colimit - def category_theory.examples.Top.discrete - def category_theory.examples.Top.limit - def category_theory.examples.Top.limit_is_limit - def category_theory.examples.Top.trivial - def category_theory.examples.Top - def category_theory.examples.nbhd - def category_theory.examples.nbhds + def category_theory.instances.Top.adj₁ + def category_theory.instances.Top.adj₂ + def category_theory.instances.Top.colimit + def category_theory.instances.Top.colimit_is_colimit + def category_theory.instances.Top.discrete + def category_theory.instances.Top.limit + def category_theory.instances.Top.limit_is_limit + def category_theory.instances.Top.trivial + def category_theory.instances.Top + def category_theory.instances.nbhd + def category_theory.instances.nbhds 2019-01-30 17:15:23-05:00 829b49b chore(.travis.yml): use git clean to clean out untracked files (#659) * chore(.travis.yml): use git clean to clean out untracked files and delete more obsolete olean files PR #641 involved renaming a directory. The old directory was still present in the cache, and in this situation `git status` lists the directory as a whole as untracked, so the grep did not find any `.lean` files. ESTIMATED CHANGES Modified .travis.yml Added purge_olean.sh 2019-01-30 17:07:18+01:00 0eb9db6 chore(linear_algebra/multivariate_polynomial): move rename to the right place ESTIMATED CHANGES Modified src/data/equiv/algebra.lean - theorem mv_polynomial.hom_eq_hom - theorem mv_polynomial.is_id - def mv_polynomial.rename - theorem mv_polynomial.rename_C - theorem mv_polynomial.rename_X - theorem mv_polynomial.rename_id - theorem mv_polynomial.rename_rename Modified src/linear_algebra/multivariate_polynomial.lean + theorem mv_polynomial.hom_eq_hom + theorem mv_polynomial.is_id + def mv_polynomial.rename + theorem mv_polynomial.rename_C + theorem mv_polynomial.rename_X + theorem mv_polynomial.rename_id + theorem mv_polynomial.rename_rename 2019-01-30 16:37:18+01:00 a480160 feat(data/polynomial): generalize theorems from nonzero_comm_ring to comm_ring (#653) ESTIMATED CHANGES Modified src/data/polynomial.lean 2019-01-30 16:32:15+01:00 065f083 feat(group_theory): monoid / group closure of union ESTIMATED CHANGES Modified src/group_theory/subgroup.lean + theorem add_group.closure_eq_mclosure + theorem add_group.closure_mono + theorem add_group.exists_list_of_mem_closure + theorem add_group.mclosure_inv_subset + theorem add_group.mclosure_subset + theorem add_group.mem_closure_union_iff + theorem group.closure_eq_mclosure + theorem group.closure_mono + theorem group.exists_list_of_mem_closure + theorem group.mclosure_inv_subset + theorem group.mclosure_subset + theorem group.mem_closure_union_iff Modified src/group_theory/submonoid.lean + theorem add_monoid.closure_mono + theorem add_monoid.mem_closure_union_iff + theorem monoid.closure_mono + theorem monoid.mem_closure_union_iff 2019-01-30 16:16:31+01:00 f7b9d6b refactor(data/equiv/algebra): mv_polynomial mv_polynomial (β ⊕ γ) α ≃r mv_polynomial β (mv_polynomial γ α) ESTIMATED CHANGES Modified src/data/equiv/algebra.lean + theorem mv_polynomial.hom_eq_hom + theorem mv_polynomial.is_id + def mv_polynomial.iter_to_sum + theorem mv_polynomial.iter_to_sum_C_C + theorem mv_polynomial.iter_to_sum_C_X + theorem mv_polynomial.iter_to_sum_X + def mv_polynomial.mv_polynomial_equiv_mv_polynomial - def mv_polynomial.of_option - theorem mv_polynomial.of_option_C - theorem mv_polynomial.of_option_X_none - theorem mv_polynomial.of_option_X_some - theorem mv_polynomial.of_option_add - theorem mv_polynomial.of_option_mul - theorem mv_polynomial.of_option_to_option + def mv_polynomial.option_equiv_left + def mv_polynomial.option_equiv_right - def mv_polynomial.option_ring_equiv + def mv_polynomial.punit_ring_equiv + def mv_polynomial.rename + theorem mv_polynomial.rename_C + theorem mv_polynomial.rename_X + theorem mv_polynomial.rename_id + theorem mv_polynomial.rename_rename + def mv_polynomial.ring_equiv_congr + def mv_polynomial.sum_ring_equiv + def mv_polynomial.sum_to_iter + theorem mv_polynomial.sum_to_iter_C + theorem mv_polynomial.sum_to_iter_Xl + theorem mv_polynomial.sum_to_iter_Xr - def mv_polynomial.to_option - theorem mv_polynomial.to_option_C - theorem mv_polynomial.to_option_C_C - theorem mv_polynomial.to_option_C_X - theorem mv_polynomial.to_option_X - theorem mv_polynomial.to_option_add - theorem mv_polynomial.to_option_mul - theorem mv_polynomial.to_option_of_option Modified src/linear_algebra/multivariate_polynomial.lean + theorem mv_polynomial.eval₂_pow 2019-01-30 10:26:08+01:00 aa944bf feat(analysis/exponential): real powers, `cpow_nat_inv_pow` (#647) ESTIMATED CHANGES Modified src/analysis/exponential.lean + theorem complex.abs_cpow_real + theorem complex.cpow_add + theorem complex.cpow_def + theorem complex.cpow_int_cast + theorem complex.cpow_mul + theorem complex.cpow_nat_cast + theorem complex.cpow_nat_inv_pow + theorem complex.cpow_neg + theorem complex.cpow_one + theorem complex.cpow_zero + theorem complex.of_real_cpow + theorem complex.one_cpow - theorem complex.pow_add - theorem complex.pow_def - theorem complex.pow_int_cast - theorem complex.pow_mul - theorem complex.pow_nat_cast + theorem complex.zero_cpow + theorem real.one_rpow + theorem real.rpow_add + theorem real.rpow_def + theorem real.rpow_def_of_nonneg + theorem real.rpow_int_cast + theorem real.rpow_mul + theorem real.rpow_nat_cast + theorem real.rpow_neg + theorem real.rpow_nonneg_of_nonneg + theorem real.rpow_one + theorem real.rpow_zero + theorem real.zero_rpow 2019-01-30 09:57:02+01:00 626489a feat(topology/metric_space): diameter of a set in metric spaces (#651) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean + theorem metric.bounded_iff_diam_ne_top + def metric.diam + theorem metric.diam_ball + theorem metric.diam_closed_ball + theorem metric.diam_empty + theorem metric.diam_eq_zero_of_unbounded + theorem metric.diam_le_of_forall_dist_le + theorem metric.diam_mono + theorem metric.diam_nonneg + theorem metric.diam_singleton + theorem metric.diam_union' + theorem metric.diam_union + theorem metric.dist_le_diam_of_mem Modified src/topology/metric_space/emetric_space.lean + def emetric.diam + theorem emetric.diam_ball + theorem emetric.diam_closed_ball + theorem emetric.diam_empty + theorem emetric.diam_le_of_forall_edist_le + theorem emetric.diam_mono + theorem emetric.diam_singleton + theorem emetric.diam_union' + theorem emetric.diam_union + theorem emetric.edist_le_diam_of_mem 2019-01-30 09:55:58+01:00 ef35c6c second countability criteria in metric spaces ESTIMATED CHANGES Modified src/topology/continuity.lean + theorem compact_range Modified src/topology/metric_space/basic.lean + theorem metric.second_countable_of_almost_dense_set + theorem metric.second_countable_of_countable_discretization 2019-01-30 09:54:34+01:00 30649f5 cleanup instances/ennreal ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean + theorem continuous_edist' + theorem continuous_edist + theorem continuous_of_le_add_edist + theorem edist_ne_top_of_mem_ball + theorem emetric.cauchy_seq_iff_le_tendsto_0 - theorem emetric.continuous_edist - theorem emetric.edist_ne_top_of_mem_ball - def emetric.metric_space_emetric_ball - theorem emetric.nhds_eq_nhds_emetric_ball + def metric_space_emetric_ball + theorem nhds_eq_nhds_emetric_ball + theorem tendsto_edist 2019-01-30 09:49:08+01:00 afa535e feat(ring_theory/polynomial): hilbert basis theorem ESTIMATED CHANGES Added src/ring_theory/polynomial.lean + def ideal.degree_le + theorem ideal.is_fg_degree_le + def ideal.leading_coeff + def ideal.leading_coeff_nth + theorem ideal.leading_coeff_nth_mono + theorem ideal.mem_leading_coeff + theorem ideal.mem_leading_coeff_nth + theorem ideal.mem_leading_coeff_nth_zero + theorem ideal.mem_of_polynomial + def ideal.of_polynomial + theorem is_noetherian_ring_polynomial + def polynomial.degree_le + theorem polynomial.degree_le_eq_span_X_pow + theorem polynomial.degree_le_mono + theorem polynomial.mem_degree_le 2019-01-29 19:13:38+01:00 860eba6 chore(.): change occurrences of tests directory to test ESTIMATED CHANGES Modified docs/mathlib-overview.md Modified src/tactic/basic.lean 2019-01-29 19:07:10+01:00 247dcb2 feat(linear_algebra): rules for kernel of `of_le`, `cod_restrict`, and `pair` ESTIMATED CHANGES Modified src/linear_algebra/basic.lean + theorem linear_map.ker_cod_restrict + theorem linear_map.ker_pair + theorem linear_map.range_cod_restrict + theorem submodule.ker_of_le 2019-01-29 18:32:34+01:00 4fb6c7d chore(test): rename the test directory so that `leanpkg` will find it ESTIMATED CHANGES Renamed tests/coinductive.lean to test/tests/coinductive.lean Renamed tests/examples.lean to test/tests/examples.lean Renamed tests/fin_cases.lean to test/tests/fin_cases.lean Renamed tests/finish1.lean to test/tests/finish1.lean Renamed tests/finish2.lean to test/tests/finish2.lean Renamed tests/finish3.lean to test/tests/finish3.lean Renamed tests/linarith.lean to test/tests/linarith.lean Renamed tests/mk_iff_of_inductive.lean to test/tests/mk_iff_of_inductive.lean Renamed tests/monotonicity.lean to test/tests/monotonicity.lean Renamed tests/monotonicity/test_cases.lean to test/tests/monotonicity/test_cases.lean Renamed tests/norm_num.lean to test/tests/norm_num.lean Renamed tests/replacer.lean to test/tests/replacer.lean Renamed tests/restate_axiom.lean to test/tests/restate_axiom.lean Renamed tests/ring.lean to test/tests/ring.lean Renamed tests/solve_by_elim.lean to test/tests/solve_by_elim.lean Renamed tests/split_ifs.lean to test/tests/split_ifs.lean Renamed tests/tactics.lean to test/tests/tactics.lean Renamed tests/tidy.lean to test/tests/tidy.lean 2019-01-29 17:18:52+01:00 fc529b6 feat(data/complex/basic): of_real_fpow (#640) ESTIMATED CHANGES Modified src/algebra/field_power.lean + theorem is_field_hom.map_fpow Modified src/data/complex/basic.lean + theorem complex.of_real_fpow +/- theorem complex.of_real_inv 2019-01-29 17:15:53+01:00 d7d90fa docs(tactic/monotonicity/interactive): fix `mono` documentation [ci-skip] ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/monotonicity/interactive.lean 2019-01-29 17:15:30+01:00 0924ac0 fix build ESTIMATED CHANGES Modified src/data/real/nnreal.lean 2019-01-29 17:15:30+01:00 a0e2de9 refactor(*): use decidable_linear_order.lift ESTIMATED CHANGES Modified src/algebra/ordered_group.lean Modified src/data/fin.lean Modified src/data/real/nnreal.lean 2019-01-29 17:15:15+01:00 7cfcce3 feat(data/equiv/algebra): ring equiv for mv_polynomial ESTIMATED CHANGES Modified src/data/equiv/algebra.lean + def mv_polynomial.of_option + theorem mv_polynomial.of_option_C + theorem mv_polynomial.of_option_X_none + theorem mv_polynomial.of_option_X_some + theorem mv_polynomial.of_option_add + theorem mv_polynomial.of_option_mul + theorem mv_polynomial.of_option_to_option + def mv_polynomial.option_ring_equiv + def mv_polynomial.pempty_ring_equiv + def mv_polynomial.ring_equiv_of_equiv + def mv_polynomial.to_option + theorem mv_polynomial.to_option_C + theorem mv_polynomial.to_option_C_C + theorem mv_polynomial.to_option_C_X + theorem mv_polynomial.to_option_X + theorem mv_polynomial.to_option_add + theorem mv_polynomial.to_option_mul + theorem mv_polynomial.to_option_of_option 2019-01-29 13:20:33+01:00 54f4b29 feat(tactic/interactive.lean): clear_aux_decl ESTIMATED CHANGES Modified docs/tactics.md Modified src/tactic/basic.lean Modified src/tactic/interactive.lean Modified tests/tactics.lean 2019-01-29 13:20:13+01:00 8faf8df feat(field_theory/splitting_field): splits predicate on polynomials ESTIMATED CHANGES Modified src/data/polynomial.lean + theorem polynomial.degree_eq_degree_of_associated + theorem polynomial.eq_X_add_C_of_degree_eq_one Added src/field_theory/splitting_field.lean + theorem polynomial.exists_multiset_of_splits + theorem polynomial.exists_root_of_splits + def polynomial.splits + theorem polynomial.splits_C + theorem polynomial.splits_comp_of_splits + theorem polynomial.splits_iff_exists_multiset + theorem polynomial.splits_map_iff + theorem polynomial.splits_mul + theorem polynomial.splits_of_degree_eq_one + theorem polynomial.splits_of_degree_le_one + theorem polynomial.splits_of_exists_multiset + theorem polynomial.splits_of_splits_id + theorem polynomial.splits_of_splits_mul + theorem polynomial.splits_zero Modified src/ring_theory/unique_factorization_domain.lean + theorem unique_factorization_domain.exists_mem_factors_of_dvd 2019-01-29 13:17:09+01:00 8ee4f2d move continuous_of_lipschitz around ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean - theorem continuous_of_lipschitz Modified src/topology/metric_space/lipschitz.lean + theorem continuous_of_lipschitz + theorem uniform_continuous_of_le_add + theorem uniform_continuous_of_lipschitz 2019-01-29 11:39:45+01:00 83edba4 feat(measure_theory): integral is equal and monotone almost-everywhere and for measurable functions it is a.e. strict at 0 ESTIMATED CHANGES Modified src/measure_theory/integration.lean + theorem measure_theory.lintegral_congr_ae + theorem measure_theory.lintegral_eq_zero_iff + theorem measure_theory.lintegral_le_lintegral_ae Modified src/measure_theory/measure_space.lean + def measure_theory.all_ae + theorem measure_theory.all_ae_all_iff + theorem measure_theory.all_ae_congr + theorem measure_theory.all_ae_iff + theorem measure_theory.exists_is_measurable_superset_of_measure_eq_zero + theorem measure_theory.measure.mem_a_e_iff 2019-01-29 09:37:59+01:00 cd41aca Move tendsto_div to a better place ESTIMATED CHANGES Modified src/analysis/specific_limits.lean + theorem tendsto_one_div_add_at_top_nhds_0_nat Modified src/data/real/cau_seq_filter.lean - theorem sequentially_complete.tendsto_div Modified src/topology/sequences.lean 2019-01-28 20:15:38+01:00 042c290 refactor(category_theory/opposites): Make `opposite` irreducible ESTIMATED CHANGES Modified src/category_theory/adjunction.lean Modified src/category_theory/limits/cones.lean +/- theorem category_theory.cocones_map +/- theorem category_theory.cocones_obj +/- def category_theory.functor.cocones +/- theorem category_theory.functor.cones_map_app +/- theorem category_theory.functor.cones_obj +/- def category_theory.limits.cocone.extensions Modified src/category_theory/limits/limits.lean +/- def category_theory.limits.is_colimit.nat_iso +/- def category_theory.limits.limit.hom_iso Modified src/category_theory/opposites.lean - theorem category_theory.functor.category.op_comp_app - theorem category_theory.functor.category.op_id_app +/- theorem category_theory.functor.hom_obj +/- theorem category_theory.functor.op_hom.map_app +/- theorem category_theory.functor.op_hom.obj +/- theorem category_theory.functor.op_inv.obj +/- theorem category_theory.functor.op_map +/- theorem category_theory.functor.op_obj +/- theorem category_theory.functor.unop_map +/- theorem category_theory.functor.unop_obj + def category_theory.has_hom.hom.op + theorem category_theory.has_hom.hom.op_inj + theorem category_theory.has_hom.hom.op_unop + def category_theory.has_hom.hom.unop + theorem category_theory.has_hom.hom.unop_inj + theorem category_theory.has_hom.hom.unop_op +/- def category_theory.op + theorem category_theory.op_comp + theorem category_theory.op_id + theorem category_theory.op_unop + def category_theory.opposite + def category_theory.unop + theorem category_theory.unop_comp + theorem category_theory.unop_id + theorem category_theory.unop_op Modified src/category_theory/yoneda.lean +/- theorem category_theory.coyoneda.map_app +/- theorem category_theory.coyoneda.obj_map +/- theorem category_theory.coyoneda.obj_obj +/- theorem category_theory.yoneda.map_app +/- theorem category_theory.yoneda.obj_map +/- theorem category_theory.yoneda.obj_map_id +/- theorem category_theory.yoneda.obj_obj +/- def category_theory.yoneda_sections +/- def category_theory.yoneda_sections_small 2019-01-28 20:11:16+01:00 d1b7d91 feat(category_theory/limits/cones): forgetful functors ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean + def category_theory.limits.cocones.forget + theorem category_theory.limits.cocones.forget_map + theorem category_theory.limits.cocones.forget_obj + def category_theory.limits.cones.forget + theorem category_theory.limits.cones.forget_map + theorem category_theory.limits.cones.forget_obj 2019-01-28 19:59:32+01:00 b39d6d8 feat(*) refactor module ESTIMATED CHANGES Modified src/algebra/module.lean +/- def is_linear_map.mk' +/- theorem is_linear_map.mk'_apply +/- def linear_map.comp +/- theorem linear_map.comp_apply +/- theorem linear_map.ext +/- theorem linear_map.ext_iff +/- def linear_map.id +/- theorem linear_map.is_linear +/- structure linear_map +/- theorem one_smul +/- theorem submodule.neg_mem +/- structure submodule +/- theorem zero_smul Modified src/algebra/pi_instances.lean Modified src/analysis/normed_space/basic.lean Modified src/analysis/normed_space/bounded_linear_maps.lean Modified src/data/dfinsupp.lean +/- def dfinsupp.lmk +/- theorem dfinsupp.lmk_apply +/- def dfinsupp.lsingle +/- theorem dfinsupp.lsingle_apply +/- theorem dfinsupp.mk_smul Modified src/data/finsupp.lean +/- def finsupp.to_has_scalar' Modified src/linear_algebra/basic.lean - theorem classical.some_spec3 +/- theorem linear_equiv.apply_symm_apply +/- theorem linear_equiv.coe_apply +/- def linear_equiv.congr_right +/- theorem linear_equiv.of_bijective_apply +/- def linear_equiv.of_linear +/- theorem linear_equiv.of_linear_apply +/- theorem linear_equiv.of_linear_symm_apply +/- def linear_equiv.of_top +/- def linear_equiv.refl +/- def linear_equiv.symm +/- theorem linear_equiv.symm_apply_apply +/- def linear_equiv.trans +/- structure linear_equiv +/- def linear_map.cod_restrict +/- theorem linear_map.cod_restrict_apply +/- theorem linear_map.comap_cod_restrict +/- theorem linear_map.comap_injective +/- theorem linear_map.comap_le_comap_iff +/- theorem linear_map.comap_map_eq +/- theorem linear_map.comap_map_eq_self +/- theorem linear_map.comap_pair_prod +/- theorem linear_map.comp_id +/- def linear_map.congr_right +/- def linear_map.copair +/- theorem linear_map.copair_apply +/- theorem linear_map.copair_inl +/- theorem linear_map.copair_inl_inr +/- theorem linear_map.copair_inr +/- theorem linear_map.disjoint_ker' +/- theorem linear_map.disjoint_ker +/- def linear_map.endomorphism_ring +/- def linear_map.fst +/- theorem linear_map.fst_apply +/- theorem linear_map.fst_eq_copair +/- theorem linear_map.fst_pair +/- theorem linear_map.id_comp +/- theorem linear_map.inj_of_disjoint_ker +/- def linear_map.inl +/- theorem linear_map.inl_apply +/- theorem linear_map.inl_eq_pair +/- def linear_map.inr +/- theorem linear_map.inr_apply +/- theorem linear_map.inr_eq_pair +/- def linear_map.inverse +/- def linear_map.ker +/- theorem linear_map.ker_comp +/- theorem linear_map.ker_eq_bot +/- theorem linear_map.ker_eq_top +/- theorem linear_map.ker_id +/- theorem linear_map.ker_le_ker_comp +/- theorem linear_map.ker_zero +/- theorem linear_map.le_ker_iff_map +/- theorem linear_map.map_cod_restrict +/- theorem linear_map.map_comap_eq +/- theorem linear_map.map_comap_eq_self +/- theorem linear_map.map_copair_prod +/- theorem linear_map.map_injective +/- theorem linear_map.map_le_map_iff +/- theorem linear_map.mem_ker +/- theorem linear_map.mem_range +/- theorem linear_map.mul_app +/- theorem linear_map.one_app +/- def linear_map.pair +/- theorem linear_map.pair_apply +/- theorem linear_map.pair_fst_snd +/- def linear_map.range +/- theorem linear_map.range_coe +/- theorem linear_map.range_comp +/- theorem linear_map.range_comp_le_range +/- theorem linear_map.range_eq_top +/- theorem linear_map.range_id +/- theorem linear_map.range_le_iff_comap +/- def linear_map.smul_right +/- theorem linear_map.smul_right_apply +/- def linear_map.snd +/- theorem linear_map.snd_apply +/- theorem linear_map.snd_eq_copair +/- theorem linear_map.snd_pair +/- theorem linear_map.sub_mem_ker_iff +/- theorem linear_map.sum_apply + def linear_map.sup_quotient_to_quotient_inf +/- theorem linear_map.zero_apply +/- def submodule.comap +/- theorem submodule.comap_bot +/- theorem submodule.comap_coe +/- theorem submodule.comap_comp +/- theorem submodule.comap_fst +/- theorem submodule.comap_liftq +/- theorem submodule.comap_mono +/- theorem submodule.comap_snd +/- theorem submodule.comap_top +/- theorem submodule.ker_inl +/- theorem submodule.ker_inr +/- theorem submodule.ker_liftq +/- theorem submodule.ker_liftq_eq_bot +/- theorem submodule.le_comap_map +/- def submodule.liftq +/- theorem submodule.liftq_apply +/- theorem submodule.liftq_mkq +/- def submodule.map +/- theorem submodule.map_bot +/- theorem submodule.map_coe +/- theorem submodule.map_comap_le +/- theorem submodule.map_comp +/- theorem submodule.map_inf_eq_map_inf_comap +/- theorem submodule.map_inl +/- theorem submodule.map_inr +/- theorem submodule.map_le_iff_le_comap + theorem submodule.map_liftq +/- theorem submodule.map_mono +/- theorem submodule.map_top +/- def submodule.mapq +/- theorem submodule.mapq_apply +/- theorem submodule.mapq_mkq +/- theorem submodule.mem_comap +/- theorem submodule.mem_map +/- theorem submodule.mem_map_of_mem +/- theorem submodule.mem_span +/- theorem submodule.mem_span_insert' +/- theorem submodule.mem_span_insert +/- theorem submodule.mem_span_singleton +/- def submodule.mkq +/- def submodule.of_le +/- theorem submodule.prod_comap_inl +/- theorem submodule.prod_comap_inr +/- theorem submodule.prod_map_fst +/- theorem submodule.prod_map_snd +/- theorem submodule.range_fst + theorem submodule.range_liftq +/- theorem submodule.range_snd +/- theorem submodule.span_Union +/- theorem submodule.span_empty +/- theorem submodule.span_eq +/- theorem submodule.span_eq_bot +/- theorem submodule.span_eq_of_le +/- theorem submodule.span_image +/- theorem submodule.span_induction +/- theorem submodule.span_insert_eq_span +/- theorem submodule.span_le +/- theorem submodule.span_mono +/- theorem submodule.span_singleton_eq_bot +/- theorem submodule.span_singleton_eq_range +/- theorem submodule.span_span +/- theorem submodule.span_union +/- theorem submodule.subset_span Modified src/linear_algebra/basis.lean +/- theorem constr_add +/- theorem constr_basis +/- theorem constr_congr +/- theorem constr_eq +/- theorem constr_neg +/- theorem constr_range +/- theorem constr_self +/- theorem constr_sub +/- theorem constr_zero +/- theorem exists_is_basis +/- theorem exists_left_inverse_linear_map_of_injective +/- theorem exists_linear_independent +/- theorem exists_right_inverse_linear_map_of_surjective +/- theorem exists_subset_is_basis +/- theorem is_basis.ext +/- theorem is_basis.mem_span +/- theorem is_basis.repr_range +/- theorem is_basis.repr_supported +/- theorem is_basis.total_comp_repr +/- theorem is_basis.total_repr +/- def is_basis +/- theorem is_basis_empty +/- theorem is_basis_empty_bot +/- theorem is_basis_injective +/- theorem is_basis_span +/- theorem linear_equiv.is_basis +/- theorem linear_independent.disjoint_ker +/- theorem linear_independent.image +/- theorem linear_independent.inj_span_iff_inj +/- theorem linear_independent.insert +/- theorem linear_independent.mono +/- theorem linear_independent.of_image +/- def linear_independent.repr +/- theorem linear_independent.repr_eq +/- theorem linear_independent.repr_range +/- theorem linear_independent.repr_supported +/- theorem linear_independent.total_comp_repr +/- def linear_independent.total_equiv +/- theorem linear_independent.total_repr +/- theorem linear_independent.unique +/- theorem linear_independent_empty +/- theorem linear_independent_iff +/- theorem linear_independent_iff_not_mem_span +/- theorem linear_independent_iff_total_on +/- theorem linear_independent_singleton +/- theorem mem_span_insert_exchange +/- def module_equiv_lc +/- theorem zero_not_mem_of_linear_independent Modified src/linear_algebra/dimension.lean +/- theorem dim_eq_injective +/- theorem dim_eq_surjective +/- theorem dim_le_injective +/- theorem dim_le_surjective +/- theorem dim_range_add_dim_ker +/- theorem dim_range_le +/- theorem dim_range_of_surjective +/- theorem dim_span +/- theorem is_basis.le_span +/- theorem is_basis.mk_eq_dim +/- theorem linear_equiv.dim_eq +/- theorem mk_eq_mk_of_basis +/- def rank +/- theorem rank_add_le +/- theorem rank_comp_le1 +/- theorem rank_comp_le2 +/- theorem rank_le_domain +/- theorem rank_le_range Modified src/linear_algebra/direct_sum_module.lean +/- def direct_sum.lmk +/- def direct_sum.lof +/- theorem direct_sum.mk_smul +/- theorem direct_sum.of_smul +/- theorem direct_sum.to_module.ext +/- theorem direct_sum.to_module.unique +/- def direct_sum.to_module +/- theorem direct_sum.to_module_lof Modified src/linear_algebra/linear_combination.lean +/- theorem lc.map_id +/- theorem lc.map_total +/- theorem lc.range_restrict_dom +/- def lc.restrict_dom +/- theorem lc.supported_empty +/- theorem lc.supported_univ +/- def lc.total_on +/- theorem lc.total_on_range +/- theorem lc.total_range +/- theorem linear_eq_on +/- theorem mem_span_iff_lc +/- theorem span_eq_map_lc Modified src/linear_algebra/tensor_product.lean +/- def linear_map.compl₂ +/- theorem linear_map.compl₂_apply +/- theorem linear_map.compr₂_apply +/- theorem linear_map.ext₂ +/- theorem linear_map.flip_inj +/- def linear_map.lcomp +/- theorem linear_map.lcomp_apply +/- def linear_map.lflip +/- def linear_map.llcomp +/- theorem linear_map.llcomp_apply +/- theorem linear_map.map_smul₂ +/- theorem tensor_product.add_tmul +/- def tensor_product.congr +/- def tensor_product.curry +/- theorem tensor_product.curry_apply +/- def tensor_product.direct_sum +/- theorem tensor_product.ext +/- def tensor_product.lcurry +/- theorem tensor_product.lcurry_apply +/- theorem tensor_product.lift.unique +/- theorem tensor_product.lift_aux.smul +/- def tensor_product.lift_aux +/- def tensor_product.map +/- theorem tensor_product.map_tmul +/- theorem tensor_product.neg_tmul +/- def tensor_product.smul.aux +/- theorem tensor_product.smul_tmul +/- def tensor_product.tmul +/- theorem tensor_product.tmul_add +/- theorem tensor_product.tmul_neg +/- theorem tensor_product.tmul_smul +/- theorem tensor_product.tmul_zero +/- def tensor_product.uncurry +/- theorem tensor_product.uncurry_apply +/- theorem tensor_product.zero_tmul Modified src/measure_theory/outer_measure.lean Modified src/ring_theory/algebra.lean Modified src/ring_theory/ideal_operations.lean +/- theorem submodule.bot_smul +/- theorem submodule.span_smul_span +/- theorem submodule.top_smul Modified src/ring_theory/ideals.lean +/- def ideal.span Modified src/ring_theory/noetherian.lean +/- theorem is_noetherian_of_linear_equiv +/- theorem is_noetherian_of_surjective +/- def submodule.fg Modified src/ring_theory/principal_ideal_domain.lean 2019-01-28 19:52:47+01:00 fd3e5a1 fix(topology/instances/ennreal): fix merge ESTIMATED CHANGES Modified src/topology/instances/ennreal.lean 2019-01-28 19:34:07+01:00 e62c534 add ennreal.to_real ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.of_real_add + theorem ennreal.of_real_eq_zero + theorem ennreal.of_real_le_of_real + theorem ennreal.of_real_le_of_real_iff + theorem ennreal.of_real_lt_of_real_iff + theorem ennreal.of_real_ne_top + theorem ennreal.of_real_one + theorem ennreal.of_real_pos + theorem ennreal.of_real_to_real + theorem ennreal.of_real_zero + theorem ennreal.to_real_add + theorem ennreal.to_real_eq_zero_iff + theorem ennreal.to_real_le_to_real + theorem ennreal.to_real_lt_to_real + theorem ennreal.to_real_nonneg + theorem ennreal.to_real_of_real + theorem ennreal.top_ne_of_real + theorem ennreal.top_to_real + theorem ennreal.zero_to_real Modified src/data/real/nnreal.lean + theorem nnreal.of_real_one Modified src/topology/instances/ennreal.lean + theorem ennreal.continuous_of_real + theorem ennreal.tendsto_of_real Modified src/topology/metric_space/basic.lean + theorem dist_edist - theorem dist_eq_edist - theorem dist_eq_nndist + theorem dist_nndist +/- theorem edist_dist - theorem edist_eq_dist - theorem edist_eq_nndist + theorem edist_nndist + def emetric_space.to_metric_space + theorem metric.emetric_ball + theorem metric.emetric_closed_ball + theorem nndist_dist + theorem nndist_edist - theorem nndist_eq_dist - theorem nndist_eq_edist + theorem sum.dist_eq Modified src/topology/metric_space/emetric_space.lean + theorem emetric.ball_eq_empty_iff + theorem emetric.mem_closed_ball_self 2019-01-28 17:14:45+01:00 8572c6b feat(topology): prove continuity of nndist and edist; `ball a r` is a metric space ESTIMATED CHANGES Modified src/analysis/normed_space/basic.lean + theorem continuous_nnnorm + theorem continuous_smul Modified src/data/real/ennreal.lean + theorem ennreal.infi_ennreal + theorem ennreal.mul_lt_top Modified src/topology/instances/ennreal.lean + theorem emetric.continuous_edist + theorem emetric.edist_ne_top_of_mem_ball + def emetric.metric_space_emetric_ball + theorem emetric.nhds_eq_nhds_emetric_ball + theorem infi_real_pos_eq_infi_nnreal_pos Modified src/topology/instances/nnreal.lean Modified src/topology/metric_space/basic.lean + theorem continuous_nndist' + theorem tendsto_nndist' + theorem uniform_continuous_nndist' Modified src/topology/metric_space/emetric_space.lean + theorem uniformity_edist_nnreal 2019-01-28 10:14:51+01:00 afa31be refactor(linear_algebra/direct_sum_module): move to algebra/direct_sum ESTIMATED CHANGES Added src/algebra/direct_sum.lean + def direct_sum.mk + theorem direct_sum.mk_add + theorem direct_sum.mk_inj + theorem direct_sum.mk_neg + theorem direct_sum.mk_sub + theorem direct_sum.mk_zero + def direct_sum.of + theorem direct_sum.of_add + theorem direct_sum.of_inj + theorem direct_sum.of_neg + theorem direct_sum.of_sub + theorem direct_sum.of_zero + def direct_sum.set_to_set + theorem direct_sum.to_group.unique + def direct_sum.to_group + theorem direct_sum.to_group_add + theorem direct_sum.to_group_neg + theorem direct_sum.to_group_of + theorem direct_sum.to_group_sub + theorem direct_sum.to_group_zero + def direct_sum Modified src/linear_algebra/direct_sum_module.lean + def direct_sum.lmk + def direct_sum.lof + def direct_sum.lset_to_set - def direct_sum.mk - theorem direct_sum.mk_inj + theorem direct_sum.mk_smul - def direct_sum.of - theorem direct_sum.of_inj + theorem direct_sum.of_smul - def direct_sum.set_to_set +/- theorem direct_sum.to_module.ext - theorem direct_sum.to_module.of +/- theorem direct_sum.to_module.unique +/- def direct_sum.to_module - theorem direct_sum.to_module_apply - theorem direct_sum.to_module_aux.add - theorem direct_sum.to_module_aux.smul - def direct_sum.to_module_aux + theorem direct_sum.to_module_lof - def direct_sum Modified src/linear_algebra/tensor_product.lean +/- def tensor_product.direct_sum 2019-01-28 08:02:17+01:00 7199bb3 chore(linear_algebra/dimension): simplify dim_add_le_dim_add_dim ESTIMATED CHANGES Modified src/linear_algebra/dimension.lean Modified src/measure_theory/integration.lean + theorem measure_theory.simple_func.add_apply Modified src/topology/instances/ennreal.lean 2019-01-27 22:50:42+01:00 038e0b2 feat(ring_theory/algebra): remove out_param ESTIMATED CHANGES Modified src/ring_theory/algebra.lean +/- def alg_hom.comap +/- theorem alg_hom.commutes +/- def alg_hom.comp +/- theorem alg_hom.comp_apply +/- theorem alg_hom.comp_assoc +/- theorem alg_hom.comp_id +/- theorem alg_hom.ext +/- theorem alg_hom.id_apply +/- theorem alg_hom.id_comp +/- theorem alg_hom.to_linear_map_inj + def algebra.comap.of_comap + def algebra.comap.to_comap +/- theorem algebra.lmul_apply +/- theorem algebra.lmul_left_apply +/- theorem algebra.lmul_right_apply +/- theorem algebra.map_add +/- theorem algebra.map_mul +/- theorem algebra.map_neg +/- theorem algebra.map_one +/- theorem algebra.map_sub +/- theorem algebra.map_zero +/- theorem algebra.mem_bot +/- theorem algebra.of_id_apply - def algebra.of_subring +/- def algebra.to_comap +/- theorem algebra.to_comap_apply +/- def algebra.to_top +/- def algebra_map +/- def mv_polynomial.aeval +/- theorem mv_polynomial.eval_unique +/- def polynomial.aeval +/- theorem polynomial.eval_unique +/- def subalgebra.val 2019-01-27 22:50:42+01:00 af7a7ee feat(ring_theory/algebra): remove of_core ESTIMATED CHANGES Modified src/ring_theory/algebra.lean - structure algebra.core + theorem algebra.mul_smul_comm - def algebra.of_core + def algebra.of_ring_hom +/- def algebra.of_subring - theorem algebra.smul_mul + theorem algebra.smul_mul_assoc +/- def ring.to_ℤ_algebra 2019-01-27 22:50:42+01:00 79ba61c feat(ring_theory/algebra): make algebra a class ESTIMATED CHANGES Modified src/ring_theory/algebra.lean +/- def alg_hom.comap +/- theorem alg_hom.commutes +/- def alg_hom.comp +/- theorem alg_hom.comp_apply +/- theorem alg_hom.comp_assoc +/- theorem alg_hom.comp_id +/- theorem alg_hom.ext +/- theorem alg_hom.id_apply +/- theorem alg_hom.id_comp +/- def alg_hom.to_linear_map +/- theorem alg_hom.to_linear_map_inj +/- structure alg_hom +/- def algebra.adjoin +/- def algebra.comap +/- theorem algebra.commutes +/- theorem algebra.left_comm +/- def algebra.lmul +/- theorem algebra.lmul_apply +/- def algebra.lmul_left +/- theorem algebra.lmul_left_apply +/- def algebra.lmul_right +/- theorem algebra.lmul_right_apply +/- theorem algebra.map_add +/- theorem algebra.map_mul +/- theorem algebra.map_neg +/- theorem algebra.map_one +/- theorem algebra.map_sub +/- theorem algebra.map_zero +/- theorem algebra.mem_bot +/- theorem algebra.mem_top - def algebra.mv_polynomial +/- def algebra.of_id +/- theorem algebra.of_id_apply - def algebra.polynomial - def algebra.right +/- theorem algebra.smul_def +/- theorem algebra.smul_mul +/- def algebra.to_comap +/- theorem algebra.to_comap_apply +/- def algebra.to_top - structure algebra + def algebra_map +/- def mv_polynomial.aeval +/- theorem mv_polynomial.aeval_def +/- theorem mv_polynomial.eval_unique +/- def polynomial.aeval +/- theorem polynomial.aeval_def +/- theorem polynomial.eval_unique +/- theorem subalgebra.ext +/- theorem subalgebra.mem_coe +/- def subalgebra.to_submodule +/- def subalgebra.val +/- structure subalgebra 2019-01-27 22:50:42+01:00 a0b6cae feat(ring_theory/algebra): define algebra over a commutative ring ESTIMATED CHANGES Added src/ring_theory/algebra.lean + def alg_hom.comap + theorem alg_hom.commutes + def alg_hom.comp + theorem alg_hom.comp_apply + theorem alg_hom.comp_assoc + theorem alg_hom.comp_id + theorem alg_hom.ext + theorem alg_hom.id_apply + theorem alg_hom.id_comp + theorem alg_hom.map_add + theorem alg_hom.map_mul + theorem alg_hom.map_neg + theorem alg_hom.map_one + theorem alg_hom.map_sub + theorem alg_hom.map_zero + def alg_hom.to_linear_map + theorem alg_hom.to_linear_map_apply + theorem alg_hom.to_linear_map_inj + structure alg_hom + def algebra.adjoin + def algebra.comap + theorem algebra.commutes + structure algebra.core + theorem algebra.left_comm + def algebra.lmul + theorem algebra.lmul_apply + def algebra.lmul_left + theorem algebra.lmul_left_apply + def algebra.lmul_right + theorem algebra.lmul_right_apply + theorem algebra.map_add + theorem algebra.map_mul + theorem algebra.map_neg + theorem algebra.map_one + theorem algebra.map_sub + theorem algebra.map_zero + theorem algebra.mem_bot + theorem algebra.mem_top + def algebra.mv_polynomial + def algebra.of_core + def algebra.of_id + theorem algebra.of_id_apply + def algebra.of_subring + def algebra.polynomial + def algebra.right + theorem algebra.smul_def + theorem algebra.smul_mul + def algebra.to_comap + theorem algebra.to_comap_apply + def algebra.to_top + structure algebra + def is_ring_hom.to_ℤ_alg_hom + def mv_polynomial.aeval + theorem mv_polynomial.aeval_def + theorem mv_polynomial.eval_unique + def polynomial.aeval + theorem polynomial.aeval_def + theorem polynomial.eval_unique + def ring.to_ℤ_algebra + def subalgebra.comap + theorem subalgebra.ext + theorem subalgebra.mem_coe + def subalgebra.to_submodule + def subalgebra.under + def subalgebra.val + structure subalgebra 2019-01-27 22:44:50+01:00 1d2eda7 feat(category_theory/isomorphism): as_iso Also clean up some proofs. ESTIMATED CHANGES Modified src/category_theory/isomorphism.lean + def category_theory.as_iso + theorem category_theory.as_iso_hom + theorem category_theory.as_iso_inv +/- def category_theory.functor.on_iso +/- theorem category_theory.iso.ext 2019-01-27 22:43:45+01:00 ccd895f feat(category_theory/types): conversions between iso and equiv ESTIMATED CHANGES Modified src/category_theory/types.lean + def category_theory.iso.to_equiv + theorem category_theory.iso.to_equiv_fun + theorem category_theory.iso.to_equiv_symm_fun + def equiv.to_iso + theorem equiv.to_iso_hom + theorem equiv.to_iso_inv 2019-01-27 22:42:53+01:00 d074b51 refactor(category_theory/concrete_category): move `bundled` to own file ESTIMATED CHANGES Modified src/category_theory/category.lean - structure category_theory.bundled - theorem category_theory.bundled_hom_coe - structure category_theory.concrete_category - theorem category_theory.concrete_category_comp - theorem category_theory.concrete_category_id - def category_theory.mk_ob Added src/category_theory/concrete_category.lean + theorem category_theory.bundled.bundled_hom_coe + theorem category_theory.bundled.concrete_category_comp + theorem category_theory.bundled.concrete_category_id + def category_theory.bundled.map + structure category_theory.bundled + structure category_theory.concrete_category + def category_theory.concrete_functor + def category_theory.forget + def category_theory.mk_ob Modified src/category_theory/examples/measurable_space.lean Modified src/category_theory/examples/monoids.lean Modified src/category_theory/examples/rings.lean Modified src/category_theory/examples/topological_spaces.lean Modified src/category_theory/functor.lean - def category_theory.bundled.map - def category_theory.concrete_functor Modified src/category_theory/types.lean - def category_theory.forget 2019-01-27 22:40:37+01:00 50398e5 feat(category_theory/full_subcategory): induced categories ESTIMATED CHANGES Modified src/category_theory/full_subcategory.lean + theorem category_theory.full_subcategory_inclusion.map + theorem category_theory.full_subcategory_inclusion.obj +/- def category_theory.full_subcategory_inclusion + def category_theory.induced_category + theorem category_theory.induced_functor.hom + theorem category_theory.induced_functor.obj + def category_theory.induced_functor 2019-01-27 22:37:46+01:00 19c2f68 feat(analysis/exponential): complex powers ESTIMATED CHANGES Modified src/analysis/exponential.lean + theorem complex.exp_eq_exp_iff_exists_int + theorem complex.exp_eq_exp_iff_exp_sub_eq_one + theorem complex.exp_eq_one_iff + theorem complex.pow_add + theorem complex.pow_def + theorem complex.pow_int_cast + theorem complex.pow_mul + theorem complex.pow_nat_cast + theorem real.log_mul 2019-01-27 22:33:10+01:00 c057758 feat(data/complex/exponential): exp_eq_one_iff ESTIMATED CHANGES Modified src/data/complex/exponential.lean + theorem real.exp_eq_one_iff 2019-01-27 22:32:41+01:00 db69173 refactor(algebra/field_power): notation for fpow ESTIMATED CHANGES Modified src/algebra/field_power.lean +/- theorem fpow_add +/- theorem fpow_eq_gpow +/- theorem fpow_ge_one_of_nonneg +/- theorem fpow_inv +/- theorem fpow_le_of_le +/- theorem fpow_le_one_of_nonpos +/- theorem fpow_ne_zero_of_ne_zero +/- theorem fpow_neg + theorem fpow_neg_succ_of_nat +/- theorem fpow_nonneg_of_nonneg + theorem fpow_of_nat +/- theorem fpow_pos_of_pos +/- theorem fpow_sub +/- theorem fpow_zero +/- theorem zero_fpow Modified src/data/padics/padic_integers.lean Modified src/data/padics/padic_norm.lean +/- theorem padic_norm.le_of_dvd Modified src/data/padics/padic_numbers.lean 2019-01-27 22:31:44+01:00 d359aa8 feat(order/conditionally_complete_lattice): cinfi_const (#634) ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.range_const Modified src/order/conditionally_complete_lattice.lean + theorem lattice.cinfi_const +/- theorem lattice.cinfi_le + theorem lattice.csupr_const +/- theorem lattice.le_csupr 2019-01-27 22:30:58+01:00 06eba7f update authors on expr.lean (I don't know who's responsible for what) ESTIMATED CHANGES Modified src/meta/expr.lean 2019-01-27 22:30:58+01:00 be5dba9 fix(tactic/norm_num): only check core norm_num output up to numeral structure ESTIMATED CHANGES Modified src/meta/expr.lean Modified src/tactic/norm_num.lean 2019-01-27 22:30:58+01:00 daa7684 refactor(tactic/basic): move non-tactic decls to meta folder ESTIMATED CHANGES Added src/meta/expr.lean Modified src/meta/rb_map.lean Modified src/tactic/basic.lean 2019-01-27 22:28:46+01:00 6781ff0 feat(tactic/linarith): prefer type of goal if there are multiple types ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified tests/linarith.lean 2019-01-27 22:28:46+01:00 8affebd fix(tactic/linarith): remove unused code ESTIMATED CHANGES Modified src/tactic/linarith.lean 2019-01-27 22:28:46+01:00 92508dc fix(tactic/linarith): properly handle problems with inequalities in multiple types When problems have inequalities over multiple types, it's almost safe to process everything at once, since none of the variables overlap. But linarith deals with constants by homogenizing them and the "constant" variables do overlap. This fix creates one call to linarith for each type that appears in a hypothesis. ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified tests/linarith.lean 2019-01-27 00:35:53-05:00 84d1c45 feat(tactic/match-stub): use Lean holes to create a pattern matching skeleton (#630) * feat(tactic/match-stub): use Lean holes to create a pattern matching skeleton * feat(tactic/match-stub): add hole for listing relevant constructors ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-01-25 17:50:12+01:00 315a642 feat(measure_theory): add Hahn decomposition ESTIMATED CHANGES Modified src/data/real/ennreal.lean + theorem ennreal.to_nnreal_add Modified src/data/real/nnreal.lean + theorem nnreal.coe_nonneg Added src/measure_theory/decomposition.lean + theorem measure_theory.hahn_decomposition Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure_eq_inter_diff + theorem measure_theory.tendsto_measure_Inter + theorem measure_theory.tendsto_measure_Union + theorem tendsto_at_top_infi_nat + theorem tendsto_at_top_supr_nat 2019-01-24 16:02:42+01:00 ed2ab1a feat(measure_theory): measures form a complete lattice ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.empty_diff Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.Inf_apply + theorem measure_theory.measure.Inf_caratheodory Modified src/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.Inf_eq_of_function_Inf_gen + def measure_theory.outer_measure.Inf_gen + theorem measure_theory.outer_measure.Inf_gen_empty + theorem measure_theory.outer_measure.Inf_gen_nonempty1 + theorem measure_theory.outer_measure.Inf_gen_nonempty2 + theorem measure_theory.outer_measure.top_caratheodory 2019-01-24 09:18:32+01:00 4aacae3 feat(data/equiv/algebra): instances for transporting algebra across an equiv (#618) ESTIMATED CHANGES Modified src/data/equiv/algebra.lean + theorem equiv.add_def + theorem equiv.inv_def + theorem equiv.mul_def + theorem equiv.neg_def + theorem equiv.one_def + theorem equiv.zero_def 2019-01-24 09:17:37+01:00 c49e89d feat(category_theory/adjunction): definitions, basic proofs, and examples (#619) ESTIMATED CHANGES Added src/category_theory/adjunction.lean + def category_theory.adjunction.adjunction_of_equiv_left + def category_theory.adjunction.adjunction_of_equiv_right + def category_theory.adjunction.cocones_iso + def category_theory.adjunction.comp + def category_theory.adjunction.cones_iso + theorem category_theory.adjunction.core_hom_equiv.hom_equiv_naturality_left + theorem category_theory.adjunction.core_hom_equiv.hom_equiv_naturality_right_symm + structure category_theory.adjunction.core_hom_equiv + structure category_theory.adjunction.core_unit_counit + def category_theory.adjunction.functoriality_is_left_adjoint + def category_theory.adjunction.functoriality_is_right_adjoint + theorem category_theory.adjunction.hom_equiv_naturality_left + theorem category_theory.adjunction.hom_equiv_naturality_left_symm + theorem category_theory.adjunction.hom_equiv_naturality_right + theorem category_theory.adjunction.hom_equiv_naturality_right_symm + def category_theory.adjunction.id + structure category_theory.adjunction.is_left_adjoint + structure category_theory.adjunction.is_right_adjoint + def category_theory.adjunction.left_adjoint_of_equiv + def category_theory.adjunction.left_adjoint_preserves_colimits + theorem category_theory.adjunction.left_triangle + theorem category_theory.adjunction.left_triangle_components + def category_theory.adjunction.mk_of_hom_equiv + def category_theory.adjunction.mk_of_unit_counit + def category_theory.adjunction.right_adjoint_of_equiv + def category_theory.adjunction.right_adjoint_preserves_limits + theorem category_theory.adjunction.right_triangle + theorem category_theory.adjunction.right_triangle_components + structure category_theory.adjunction Modified src/category_theory/category.lean +/- theorem category_theory.bundled_hom_coe +/- theorem category_theory.concrete_category_comp +/- theorem category_theory.concrete_category_id Modified src/category_theory/examples/monoids.lean Modified src/category_theory/examples/rings.lean + def category_theory.examples.CommRing.Int.cast + def category_theory.examples.CommRing.Int.hom_unique + def category_theory.examples.CommRing.Int + theorem category_theory.examples.CommRing.comp_val + def category_theory.examples.CommRing.forget +/- def category_theory.examples.CommRing.forget_to_CommMon + theorem category_theory.examples.CommRing.hom_coe_app + theorem category_theory.examples.CommRing.id_val + def category_theory.examples.CommRing.int.eq_cast' + theorem category_theory.examples.CommRing.polynomial_map_val + theorem category_theory.examples.CommRing.polynomial_obj_α + def category_theory.examples.CommRing.to_Ring - theorem category_theory.examples.CommRing_hom_coe_app Modified src/category_theory/examples/topological_spaces.lean + def category_theory.examples.Top.adj₁ + def category_theory.examples.Top.adj₂ + def category_theory.examples.Top.discrete + def category_theory.examples.Top.trivial Modified src/category_theory/fully_faithful.lean Modified src/category_theory/limits/cones.lean + theorem category_theory.functor.cocones_map_app + theorem category_theory.functor.cones_map_app - def category_theory.limits.cocone.precompose + def category_theory.limits.cocones.precompose + theorem category_theory.limits.cocones.precompose_map_hom + theorem category_theory.limits.cocones.precompose_obj_X + theorem category_theory.limits.cocones.precompose_obj_ι - def category_theory.limits.cone.postcompose + def category_theory.limits.cones.postcompose + theorem category_theory.limits.cones.postcompose_map_hom + theorem category_theory.limits.cones.postcompose_obj_X + theorem category_theory.limits.cones.postcompose_obj_π Modified src/category_theory/limits/limits.lean + def category_theory.limits.is_colimit_iso_unique_cocone_morphism + def category_theory.limits.is_limit_iso_unique_cone_morphism Modified src/data/equiv/basic.lean +/- def equiv.unique_of_equiv 2019-01-23 16:35:39+01:00 0e6c358 feat(set_theory/cardinal): more lemmas on cardinality (#595) ESTIMATED CHANGES Modified src/data/set/basic.lean + def set.image_factorization + theorem set.image_factorization_eq + def set.range_factorization + theorem set.range_factorization_eq + theorem set.surjective_onto_image + theorem set.surjective_onto_range Modified src/set_theory/cardinal.lean + theorem cardinal.mk_image_le + theorem cardinal.mk_le_of_injective + theorem cardinal.mk_le_of_surjective + theorem cardinal.mk_quot_le + theorem cardinal.mk_quotient_le + theorem cardinal.mk_range_le + theorem cardinal.mk_subtype_le + theorem cardinal.mk_univ 2019-01-23 14:24:28+01:00 9be8905 refactor(topology/sequences): restructure proofs ESTIMATED CHANGES Modified src/topology/sequences.lean + theorem continuous.to_sequentially_continuous + theorem continuous_iff_sequentially_continuous + def is_seq_closed + theorem is_seq_closed_iff_is_closed + theorem is_seq_closed_of_def + theorem is_seq_closed_of_is_closed + theorem mem_of_is_closed_sequential + theorem mem_of_is_seq_closed - theorem sequence.const_seq_conv - theorem sequence.cont_iff_seq_cont - theorem sequence.cont_to_seq_cont - theorem sequence.is_mem_of_conv_to_of_is_seq_closed - theorem sequence.is_mem_of_is_closed_of_conv_to - def sequence.is_seq_closed - theorem sequence.is_seq_closed_iff_is_closed - theorem sequence.is_seq_closed_of_def - theorem sequence.is_seq_closed_of_is_closed - theorem sequence.metric_space.seq_tendsto_iff - def sequence.sequential_closure - theorem sequence.sequential_closure_subset_closure - def sequence.sequentially_continuous - theorem sequence.subset_seq_closure - theorem sequence.topological_space.seq_tendsto_iff + def sequential_closure + theorem sequential_closure_subset_closure + def sequentially_continuous + theorem subset_sequential_closure + theorem topological_space.seq_tendsto_iff 2019-01-23 14:24:12+01:00 4018daf feat(topology): sequences, sequential spaces, and sequential continuity (closes #440) Co-Authored-By: Reid Barton ESTIMATED CHANGES Added src/topology/sequences.lean + theorem sequence.const_seq_conv + theorem sequence.cont_iff_seq_cont + theorem sequence.cont_to_seq_cont + theorem sequence.is_mem_of_conv_to_of_is_seq_closed + theorem sequence.is_mem_of_is_closed_of_conv_to + def sequence.is_seq_closed + theorem sequence.is_seq_closed_iff_is_closed + theorem sequence.is_seq_closed_of_def + theorem sequence.is_seq_closed_of_is_closed + theorem sequence.metric_space.seq_tendsto_iff + def sequence.sequential_closure + theorem sequence.sequential_closure_subset_closure + def sequence.sequentially_continuous + theorem sequence.subset_seq_closure + theorem sequence.topological_space.seq_tendsto_iff 2019-01-23 13:24:31+01:00 c06fb67 refactor(category_theory/category): split off has_hom This gives a little more flexibility when defining a category, which will be used for opposite categories. It should also be useful for defining the free category on a graph. ESTIMATED CHANGES Modified src/category_theory/category.lean Modified src/category_theory/opposites.lean +/- theorem category_theory.functor.hom_obj 2019-01-23 12:52:40+01:00 2c95d2a maintain(vscode): add ruler at 100 in editor ESTIMATED CHANGES Modified .vscode/settings.json 2019-01-23 12:52:40+01:00 b2700dd maintain(.vscode): add default settings ESTIMATED CHANGES Added .vscode/settings.json 2019-01-23 12:45:23+01:00 6da9b21 le_induction ESTIMATED CHANGES Modified src/data/nat/basic.lean + theorem nat.le_induction 2019-01-23 12:38:43+01:00 60efaec chore(topology): move contraction_mapping to metric_space/lipschitz ESTIMATED CHANGES Renamed src/contraction_mapping.lean to src/topology/metric_space/lipschitz.lean 2019-01-23 11:48:36+01:00 5317b59 refactor(contraction_mapping): add more proves about Lipschitz continuous functions; cleanup proofs ESTIMATED CHANGES Modified src/algebra/pi_instances.lean - def prod.prod_semilattice_sup Modified src/analysis/normed_space/basic.lean - theorem squeeze_zero Modified src/contraction_mapping.lean - theorem continuous_prod_snd - theorem dist_bound_of_contraction - theorem dist_inequality_of_contraction - theorem fixed_point_exists_of_contraction - theorem fixed_point_of_iteration_limit + theorem fixed_point_of_tendsto_iterate - theorem fixed_point_unique_of_contraction - theorem iterated_lipschitz_of_lipschitz - def lipschitz + theorem lipschitz_with.dist_bound_of_contraction + theorem lipschitz_with.dist_inequality_of_contraction + theorem lipschitz_with.exists_fixed_point_of_contraction + theorem lipschitz_with.fixed_point_unique_of_contraction + def lipschitz_with - theorem tendsto_dist_bound_at_top_nhds_0 - theorem uniform_continuous_of_lipschitz Modified src/order/filter.lean Modified src/topology/metric_space/basic.lean - theorem dist_prod_eq_dist_0 + theorem metric.uniformity_eq_comap_nhds_zero + theorem squeeze_zero Modified src/topology/uniform_space/basic.lean 2019-01-23 11:48:20+01:00 96198b9 feat(contraction_mapping): proof the Banach fixed-point theorem (closes #553) ESTIMATED CHANGES Modified src/algebra/pi_instances.lean + def prod.prod_semilattice_sup Added src/contraction_mapping.lean + theorem continuous_prod_snd + theorem dist_bound_of_contraction + theorem dist_inequality_of_contraction + theorem fixed_point_exists_of_contraction + theorem fixed_point_of_iteration_limit + theorem fixed_point_unique_of_contraction + theorem iterated_lipschitz_of_lipschitz + def lipschitz + theorem tendsto_dist_bound_at_top_nhds_0 + theorem uniform_continuous_of_lipschitz Modified src/data/prod.lean + theorem prod.map_def Modified src/order/filter.lean + theorem filter.prod_at_top_at_top_eq + theorem filter.prod_map_at_top_eq Modified src/topology/metric_space/basic.lean + theorem cauchy_seq_iff_tendsto_dist_at_top_0 + theorem dist_prod_eq_dist_0 Modified src/topology/uniform_space/basic.lean + theorem cauchy_seq_iff_prod_map 2019-01-23 11:43:23+01:00 8a0fd0b feat(order): add order instances for prod ESTIMATED CHANGES Modified src/order/basic.lean Modified src/order/bounded_lattice.lean Modified src/order/complete_lattice.lean Modified src/order/lattice.lean 2019-01-23 08:09:04+01:00 2ae2cf0 feat(linear_algebra/multivariate_polynomial): C_mul' ESTIMATED CHANGES Modified src/linear_algebra/multivariate_polynomial.lean + theorem mv_polynomial.C_mul' 2019-01-22 17:23:23-05:00 8d44fee style(category_theory): adjust precedence of ⥤ (#616) ESTIMATED CHANGES Modified src/category_theory/functor.lean Modified src/category_theory/opposites.lean Modified src/category_theory/products.lean +/- def category_theory.evaluation_uncurried +/- def category_theory.functor.prod +/- def category_theory.prod.fst +/- def category_theory.prod.inl +/- def category_theory.prod.inr +/- def category_theory.prod.snd +/- def category_theory.prod.swap +/- def category_theory.prod.symmetry Modified src/category_theory/types.lean +/- def category_theory.ulift_functor Modified src/category_theory/yoneda.lean +/- def category_theory.yoneda_evaluation +/- def category_theory.yoneda_pairing 2019-01-22 17:21:55-05:00 c9a0b33 refactor(category_theory/fully_faithful): move preimage_id (#615) ESTIMATED CHANGES Modified src/category_theory/fully_faithful.lean + theorem category_theory.preimage_id Modified src/category_theory/opposites.lean - theorem category_theory.functor.preimage_id 2019-01-22 16:49:24+01:00 edfa206 feat(linear_algebra/dimension): more dimension theorems; rank of a linear map ESTIMATED CHANGES Modified src/data/set/basic.lean + theorem set.image_preimage_eq_of_subset Modified src/linear_algebra/basis.lean + theorem is_basis_empty + theorem is_basis_empty_bot + theorem is_basis_injective + theorem is_basis_span Modified src/linear_algebra/dimension.lean + theorem dim_add_le_dim_add_dim + theorem dim_bot + theorem dim_eq_injective + theorem dim_eq_surjective + theorem dim_le_injective + theorem dim_le_of_submodule + theorem dim_le_surjective + theorem dim_map_le + theorem dim_range_le + theorem dim_range_of_surjective + theorem dim_span + theorem dim_submodule_le + def rank + theorem rank_add_le + theorem rank_comp_le1 + theorem rank_comp_le2 + theorem rank_le_domain + theorem rank_le_range Modified src/set_theory/cardinal.lean + theorem cardinal.mk_le_mk_of_subset 2019-01-22 16:02:10+01:00 6e4c9ba feat(linear_algebra/linear_combination): lc lifts vector spaces ESTIMATED CHANGES Modified src/linear_algebra/linear_combination.lean 2019-01-22 16:00:18+01:00 d5a302f chore(linear_algebra): rename file lc to linear_combination ESTIMATED CHANGES Modified src/linear_algebra/basis.lean Renamed src/linear_algebra/lc.lean to src/linear_algebra/linear_combination.lean Modified src/ring_theory/noetherian.lean 2019-01-22 15:32:49+01:00 7baf093 feat(data/list,data/multiset,data/finset): add Ico intervals (closes #496) ESTIMATED CHANGES Modified src/data/finset.lean + theorem finset.Ico.card + theorem finset.Ico.diff_left + theorem finset.Ico.diff_right + theorem finset.Ico.eq_cons + theorem finset.Ico.eq_empty_iff + theorem finset.Ico.eq_empty_of_le + theorem finset.Ico.filter_ge + theorem finset.Ico.filter_ge_of_ge + theorem finset.Ico.filter_ge_of_le_bot + theorem finset.Ico.filter_ge_of_top_le + theorem finset.Ico.filter_lt + theorem finset.Ico.filter_lt_of_ge + theorem finset.Ico.filter_lt_of_le_bot + theorem finset.Ico.filter_lt_of_top_le + theorem finset.Ico.map_add + theorem finset.Ico.mem + theorem finset.Ico.not_mem_top + theorem finset.Ico.pred_singleton + theorem finset.Ico.self_eq_empty + theorem finset.Ico.succ_singleton + theorem finset.Ico.succ_top + theorem finset.Ico.to_finset + theorem finset.Ico.union_consecutive + theorem finset.Ico.val + theorem finset.Ico.zero_bot + def finset.Ico Modified src/data/list/basic.lean + theorem list.Ico.append_consecutive + theorem list.Ico.chain'_succ + theorem list.Ico.eq_cons + theorem list.Ico.eq_empty_iff + theorem list.Ico.eq_nil_of_le + theorem list.Ico.filter_ge + theorem list.Ico.filter_ge_of_ge + theorem list.Ico.filter_ge_of_le_bot + theorem list.Ico.filter_ge_of_top_le + theorem list.Ico.filter_lt + theorem list.Ico.filter_lt_of_ge + theorem list.Ico.filter_lt_of_le_bot + theorem list.Ico.filter_lt_of_top_le + theorem list.Ico.length + theorem list.Ico.map_add + theorem list.Ico.mem + theorem list.Ico.nodup + theorem list.Ico.not_mem_top + theorem list.Ico.pairwise_lt + theorem list.Ico.pred_singleton + theorem list.Ico.self_empty + theorem list.Ico.succ_singleton + theorem list.Ico.succ_top + theorem list.Ico.zero_bot + def list.Ico +/- theorem list.range'_append Modified src/data/multiset.lean + theorem multiset.Ico.add_consecutive + theorem multiset.Ico.card + theorem multiset.Ico.eq_cons + theorem multiset.Ico.eq_zero_iff + theorem multiset.Ico.eq_zero_of_le + theorem multiset.Ico.filter_ge + theorem multiset.Ico.filter_ge_of_ge + theorem multiset.Ico.filter_ge_of_le_bot + theorem multiset.Ico.filter_ge_of_top_le + theorem multiset.Ico.filter_lt + theorem multiset.Ico.filter_lt_of_ge + theorem multiset.Ico.filter_lt_of_le_bot + theorem multiset.Ico.filter_lt_of_top_le + theorem multiset.Ico.map_add + theorem multiset.Ico.mem + theorem multiset.Ico.nodup + theorem multiset.Ico.not_mem_top + theorem multiset.Ico.pred_singleton + theorem multiset.Ico.self_eq_zero + theorem multiset.Ico.succ_singleton + theorem multiset.Ico.succ_top + theorem multiset.Ico.zero_bot + def multiset.Ico + theorem multiset.coe_eq_zero 2019-01-21 20:02:01-05:00 3dc9935 fix(tactic/instance_stub): extend the applicability of instance_stub (#612) ESTIMATED CHANGES Modified src/tactic/basic.lean 2019-01-21 11:12:50+01:00 bc163a6 fix(.travis.yml): produce mathlib.txt only from src/ ESTIMATED CHANGES Modified .travis.yml 2019-01-20 22:50:48-05:00 c1e594b feat(meta, logic, tactic): lean 3.4.2: migrate coinductive_predicates, transfer, relator (#610) ESTIMATED CHANGES Modified leanpkg.toml Modified src/data/list/defs.lean Modified src/logic/relator.lean + def relator.bi_total + def relator.left_total + def relator.left_unique + theorem relator.left_unique_of_rel_eq + def relator.lift_fun + theorem relator.rel_exists_of_left_total + theorem relator.rel_exists_of_total + theorem relator.rel_forall_of_right_total + theorem relator.rel_forall_of_total + theorem relator.rel_imp + theorem relator.rel_not + def relator.right_total + def relator.right_unique Added src/meta/coinductive_predicates.lean + theorem monotonicity.and + theorem monotonicity.const + theorem monotonicity.exists + theorem monotonicity.false + theorem monotonicity.imp + theorem monotonicity.not + theorem monotonicity.or + theorem monotonicity.pi + theorem monotonicity.true + def name.last_string Modified src/tactic/alias.lean Modified src/tactic/explode.lean Modified src/tactic/mk_iff_of_inductive_prop.lean Added src/tactic/transfer.lean Added tests/coinductive.lean + inductive all_list + theorem monotonicity.all_list 2019-01-20 20:42:15-05:00 2c5bc21 feat(topology/emetric_space): basic facts for emetric spaces (#608) ESTIMATED CHANGES Modified src/topology/metric_space/basic.lean - theorem countable_closure_of_compact - theorem second_countable_of_separable_metric_space Modified src/topology/metric_space/emetric_space.lean + theorem edist_triangle4 + def emetric.ball + theorem emetric.ball_disjoint + theorem emetric.ball_mem_nhds + theorem emetric.ball_subset + theorem emetric.ball_subset_ball + theorem emetric.ball_subset_closed_ball - theorem emetric.cauchy_iff + theorem emetric.cauchy_seq_iff' + theorem emetric.cauchy_seq_iff + def emetric.closed_ball + theorem emetric.closed_ball_subset_closed_ball + theorem emetric.countable_closure_of_compact + theorem emetric.exists_ball_subset_ball + theorem emetric.is_open_ball + theorem emetric.is_open_iff + theorem emetric.mem_ball' + theorem emetric.mem_ball + theorem emetric.mem_ball_comm + theorem emetric.mem_ball_self + theorem emetric.mem_closed_ball + theorem emetric.mem_closure_iff' + theorem emetric.mem_nhds_iff + theorem emetric.nhds_eq + theorem emetric.pos_of_mem_ball + theorem emetric.second_countable_of_separable + theorem emetric.tendsto_at_top + theorem emetric.tendsto_nhds + theorem emetric.totally_bounded_iff' + theorem emetric.totally_bounded_iff 2019-01-19 18:43:24-05:00 fa2e399 feat(topology/bounded_continuous_function): constructor in normed groups (#607) ESTIMATED CHANGES Modified src/topology/bounded_continuous_function.lean + def bounded_continuous_function.of_normed_group + def bounded_continuous_function.of_normed_group_discrete 2019-01-18 19:50:09-05:00 3fcba7d feat(logic/basic): add class 'unique' for uniquely inhabited types (#605) ESTIMATED CHANGES Modified src/data/equiv/basic.lean + def equiv.unique_congr + def equiv.unique_of_equiv + def equiv_of_unique_of_unique + def equiv_punit_of_unique + def unique_unique_equiv Added src/logic/unique.lean + theorem unique.default_eq + theorem unique.eq_default + def unique.of_surjective + structure unique 2019-01-18 16:30:23-05:00 41b3fdd feat(topology/real): bounded iff bounded below above (#606) ESTIMATED CHANGES Modified src/topology/instances/real.lean + theorem real.bounded_iff_bdd_below_bdd_above 2019-01-18 15:36:40+01:00 eb1253f feat(measure_theory): add Giry monad ESTIMATED CHANGES Added src/measure_theory/giry_monad.lean + def measure_theory.measure.bind + theorem measure_theory.measure.bind_apply + theorem measure_theory.measure.bind_bind + theorem measure_theory.measure.bind_dirac + theorem measure_theory.measure.dirac_bind + theorem measure_theory.measure.integral_bind + theorem measure_theory.measure.integral_join + def measure_theory.measure.join + theorem measure_theory.measure.join_apply + theorem measure_theory.measure.measurable_bind' + theorem measure_theory.measure.measurable_coe + theorem measure_theory.measure.measurable_dirac + theorem measure_theory.measure.measurable_integral + theorem measure_theory.measure.measurable_join + theorem measure_theory.measure.measurable_map + theorem measure_theory.measure.measurable_of_measurable_coe Modified src/measure_theory/integration.lean + theorem le_sequence_of_directed + theorem measure_theory.lintegral_finset_sum + theorem measure_theory.lintegral_supr_directed + theorem measure_theory.lintegral_tsum + def measure_theory.measure.integral + theorem measure_theory.measure.integral_dirac + theorem measure_theory.measure.integral_map + theorem measure_theory.measure.integral_zero + def measure_theory.measure.with_density + theorem measure_theory.measure.with_density_apply + theorem measure_theory.simple_func.approx_comp + theorem measure_theory.simple_func.eapprox_comp + theorem measure_theory.simple_func.integral_map + theorem monotone_sequence_of_directed - theorem supr_eq_of_tendsto Modified src/measure_theory/measure_space.lean + theorem measure_theory.measure.of_measurable_apply Modified src/order/basic.lean + theorem monotone_of_monotone_nat Modified src/topology/algebra/topological_structures.lean + theorem supr_eq_of_tendsto 2019-01-18 14:10:04+01:00 739d28a refactor(ring_theory/multiplicity): replace padic_val with multiplicity (#495) ESTIMATED CHANGES Modified src/data/padics/padic_norm.lean - theorem padic_val.dvd_of_padic_val_pos - theorem padic_val.is_greatest - theorem padic_val.le_padic_val_of_pow_dvd - theorem padic_val.min_le_padic_val_add - theorem padic_val.padic_val_eq_zero_of_coprime - theorem padic_val.padic_val_eq_zero_of_not_dvd' - theorem padic_val.padic_val_eq_zero_of_not_dvd - theorem padic_val.padic_val_self - theorem padic_val.pow_dvd_iff_le_padic_val - theorem padic_val.pow_dvd_of_le_padic_val - theorem padic_val.spec - theorem padic_val.unique - def padic_val + theorem padic_val_rat.finite_int_prime_iff + theorem padic_val_rat.le_padic_val_rat_add_of_le +/- theorem padic_val_rat.min_le_padic_val_rat_add + theorem padic_val_rat.padic_val_rat_le_padic_val_rat_iff +/- theorem padic_val_rat.padic_val_rat_of_int +/- theorem padic_val_rat.padic_val_rat_self + theorem padic_val_rat_def Modified src/data/padics/padic_numbers.lean Modified src/data/real/irrational.lean + theorem irr_nrt_of_n_not_dvd_multiplicity - theorem irr_nrt_of_n_not_dvd_padic_val + theorem irr_sqrt_of_multiplicity_odd - theorem irr_sqrt_of_padic_val_odd 2019-01-18 13:28:37+01:00 6144710 feat(measure_theory): add equivalence of measurable spaces ESTIMATED CHANGES Modified src/data/equiv/basic.lean Modified src/data/set/basic.lean + theorem set.prod_eq + theorem set.range_coe_subtype Modified src/measure_theory/borel_space.lean + def ennreal.ennreal_equiv_nnreal + def ennreal.ennreal_equiv_sum + theorem ennreal.measurable_coe + theorem ennreal.measurable_mul + theorem ennreal.measurable_of_measurable_nnreal + theorem ennreal.measurable_of_measurable_nnreal_nnreal + def homemorph.to_measurable_equiv +/- def measure_theory.borel + theorem measure_theory.borel_eq_subtype + theorem measure_theory.borel_induced + theorem measure_theory.measurable_finset_sum +/- theorem measure_theory.measurable_of_continuous Modified src/measure_theory/measurable_space.lean + theorem is_measurable_inl_image + theorem is_measurable_inr_image + theorem is_measurable_range_inl + theorem is_measurable_range_inr + theorem is_measurable_subtype_image + theorem measurable_equiv.coe_eq + def measurable_equiv.prod_comm + def measurable_equiv.prod_congr + def measurable_equiv.prod_sum_distrib + def measurable_equiv.refl + def measurable_equiv.set.prod + def measurable_equiv.set.range_inl + def measurable_equiv.set.range_inr + def measurable_equiv.set.singleton + def measurable_equiv.set.univ + def measurable_equiv.sum_congr + def measurable_equiv.sum_prod_distrib + def measurable_equiv.sum_prod_sum + def measurable_equiv.symm + theorem measurable_equiv.symm_to_equiv + def measurable_equiv.trans + theorem measurable_equiv.trans_to_equiv + structure measurable_equiv + theorem measurable_inl + theorem measurable_inr + theorem measurable_of_measurable_union_cover + theorem measurable_sum + theorem measurable_sum_rec + theorem measurable_unit 2019-01-18 13:26:32+01:00 b352d2c refactor(topology): topological_space.induced resembles set.image; second_countable_topology on subtypes; simplify filter.map_comap ESTIMATED CHANGES Modified src/order/filter.lean - theorem filter.le_map_comap' - theorem filter.le_map_comap + theorem filter.map_comap - theorem filter.tendsto_comap'' + theorem filter.tendsto_comap'_iff Modified src/topology/basic.lean + theorem induced_generate_from_eq + theorem topological_space.second_countable_topology_induced Modified src/topology/continuity.lean +/- theorem embedding.map_nhds_eq + theorem is_open_induced_eq +/- theorem map_nhds_induced_eq Modified src/topology/instances/ennreal.lean - theorem ennreal.coe_image_univ_mem_nhds + theorem ennreal.coe_range_mem_nhds Modified src/topology/instances/nnreal.lean Modified src/topology/uniform_space/basic.lean Modified src/topology/uniform_space/completion.lean 2019-01-18 13:20:03+01:00 6b6b04a feat(order/complete_lattice): add rules for supr/infi under image and under propositions ESTIMATED CHANGES Modified src/order/complete_lattice.lean + theorem lattice.infi_eq_dif + theorem lattice.infi_eq_if + theorem lattice.infi_image + theorem lattice.supr_eq_dif + theorem lattice.supr_eq_if + theorem lattice.supr_image 2019-01-18 11:13:09+01:00 f0f06ca refactor(*): analysis reorganization (#598) * split `measure_theory` and `topology` out of analysis * add `instances` sub directories for theories around type class instances ESTIMATED CHANGES Modified docs/theories/topological_spaces.md Modified src/analysis/exponential.lean Renamed src/analysis/normed_space.lean to src/analysis/normed_space/basic.lean Renamed src/analysis/bounded_linear_maps.lean to src/analysis/normed_space/bounded_linear_maps.lean Renamed src/analysis/limits.lean to src/analysis/specific_limits.lean Modified src/category_theory/examples/measurable_space.lean Modified src/category_theory/examples/topological_spaces.lean Modified src/data/analysis/topology.lean Modified src/data/padics/hensel.lean Modified src/data/padics/padic_numbers.lean Modified src/data/real/cau_seq_filter.lean Renamed src/analysis/measure_theory/borel_space.lean to src/measure_theory/borel_space.lean Renamed src/analysis/measure_theory/integration.lean to src/measure_theory/integration.lean Renamed src/analysis/measure_theory/lebesgue_measure.lean to src/measure_theory/lebesgue_measure.lean Renamed src/analysis/measure_theory/measurable_space.lean to src/measure_theory/measurable_space.lean Renamed src/analysis/measure_theory/measure_space.lean to src/measure_theory/measure_space.lean Renamed src/analysis/measure_theory/outer_measure.lean to src/measure_theory/outer_measure.lean Renamed src/analysis/probability_mass_function.lean to src/measure_theory/probability_mass_function.lean Renamed src/analysis/topology/topological_groups.lean to src/topology/algebra/group.lean Renamed src/analysis/topology/infinite_sum.lean to src/topology/algebra/infinite_sum.lean Renamed src/analysis/topology/quotient_topological_structures.lean to src/topology/algebra/quotient.lean Renamed src/analysis/topology/topological_structures.lean to src/topology/algebra/topological_structures.lean Renamed src/analysis/topology/topological_space.lean to src/topology/basic.lean Renamed src/analysis/topology/bounded_continuous_function.lean to src/topology/bounded_continuous_function.lean Renamed src/analysis/topology/continuous_map.lean to src/topology/compact_open.lean Renamed src/analysis/topology/continuity.lean to src/topology/continuity.lean Renamed src/analysis/complex.lean to src/topology/instances/complex.lean Renamed src/analysis/ennreal.lean to src/topology/instances/ennreal.lean Renamed src/analysis/nnreal.lean to src/topology/instances/nnreal.lean Renamed src/analysis/polynomial.lean to src/topology/instances/polynomial.lean Renamed src/analysis/real.lean to src/topology/instances/real.lean Renamed src/analysis/metric_space.lean to src/topology/metric_space/basic.lean Renamed src/analysis/emetric_space.lean to src/topology/metric_space/emetric_space.lean Renamed src/analysis/topology/stone_cech.lean to src/topology/stone_cech.lean Renamed src/analysis/topology/uniform_space.lean to src/topology/uniform_space/basic.lean Renamed src/analysis/topology/completion.lean to src/topology/uniform_space/completion.lean 2019-01-17 19:21:33-05:00 c1f162c fix(tactic/linarith): don't reject expressions with division by variables (#604) norm_hyp_aux should have succeeded (without changing the type of h') in the case where lhs contains 1/x. But mk_single_comp_zero_pf is too clever when given the coeff 1. norm_hyp_aux will still do unnecessary work when it finds e.g. 1/(2*x), but shouldn't fail. ESTIMATED CHANGES Modified src/tactic/linarith.lean Modified tests/linarith.lean 2019-01-17 14:37:38-05:00 ae610a0 feat(ring_theory/adjoin_root): adjoin roots to polynomials (#603) ESTIMATED CHANGES Added src/ring_theory/adjoin_root.lean + def adjoin_root.adjoin_root + theorem adjoin_root.coe_injective + theorem adjoin_root.eval₂_root + theorem adjoin_root.is_root_root + def adjoin_root.lift + theorem adjoin_root.lift_mk + theorem adjoin_root.lift_of + theorem adjoin_root.lift_root + def adjoin_root.mk + theorem adjoin_root.mk_self + theorem adjoin_root.mul_div_root_cancel + def adjoin_root.of + def adjoin_root.root 2019-01-16 08:50:38-05:00 5c37507 doc(elan.md): fix msys2 setup (#594) [ci-skip] For me, adding the suggested line to .profile did not change my path, even after restarting the terminal. Moreover, elan is installed in $USERPROFILE/.elan/bin, not in $HOME/.elan/bin. Adding $USERPROFILE/.elan/bin to the path did not work for me, so I give the full path. ESTIMATED CHANGES Modified docs/elan.md 2019-01-16 08:33:19-05:00 5dd9998 doc(docs/tactics): document `convert` (#601) [ci-skip] ESTIMATED CHANGES Modified docs/tactics.md 2019-01-16 08:14:44-05:00 ab5849e style(category_theory/opposites): increase binding power of ᵒᵖ (#600) ESTIMATED CHANGES Modified src/category_theory/limits/cones.lean +/- def category_theory.functor.cones Modified src/category_theory/opposites.lean Modified src/category_theory/yoneda.lean 2019-01-15 17:43:36-05:00 024da40 refactor(logic/schroeder_bernstein): move to set_theory/ (#599) ESTIMATED CHANGES Modified src/set_theory/cardinal.lean Renamed src/logic/schroeder_bernstein.lean to src/set_theory/schroeder_bernstein.lean 2019-01-15 12:05:23-05:00 d4f80f6 refactor(*): Try again moving everything to src (#597) ESTIMATED CHANGES Renamed category_theory/limits/over.lean to src/category_theory/limits/over.lean Renamed group_theory/sylow.lean to src/group_theory/sylow.lean Renamed ring_theory/euclidean_domain.lean to src/ring_theory/euclidean_domain.lean 2019-01-15 10:51:04-05:00 78f1949 refactor(*): move everything into `src` (#583) ESTIMATED CHANGES Modified leanpkg.toml Renamed algebra/archimedean.lean to src/algebra/archimedean.lean Renamed algebra/big_operators.lean to src/algebra/big_operators.lean Renamed algebra/char_p.lean to src/algebra/char_p.lean Renamed algebra/char_zero.lean to src/algebra/char_zero.lean Renamed algebra/default.lean to src/algebra/default.lean Renamed algebra/euclidean_domain.lean to src/algebra/euclidean_domain.lean Renamed algebra/field.lean to src/algebra/field.lean Renamed algebra/field_power.lean to src/algebra/field_power.lean Renamed algebra/gcd_domain.lean to src/algebra/gcd_domain.lean Renamed algebra/group.lean to src/algebra/group.lean Renamed algebra/group_power.lean to src/algebra/group_power.lean Renamed algebra/module.lean to src/algebra/module.lean Renamed algebra/order.lean to src/algebra/order.lean Renamed algebra/order_functions.lean to src/algebra/order_functions.lean Renamed algebra/ordered_field.lean to src/algebra/ordered_field.lean Renamed algebra/ordered_group.lean to src/algebra/ordered_group.lean Renamed algebra/ordered_ring.lean to src/algebra/ordered_ring.lean Renamed algebra/pi_instances.lean to src/algebra/pi_instances.lean Renamed algebra/ring.lean to src/algebra/ring.lean Renamed analysis/bounded_linear_maps.lean to src/analysis/bounded_linear_maps.lean Renamed analysis/complex.lean to src/analysis/complex.lean Renamed analysis/emetric_space.lean to src/analysis/emetric_space.lean Renamed analysis/ennreal.lean to src/analysis/ennreal.lean Renamed analysis/exponential.lean to src/analysis/exponential.lean Renamed analysis/limits.lean to src/analysis/limits.lean Renamed analysis/measure_theory/borel_space.lean to src/analysis/measure_theory/borel_space.lean Renamed analysis/measure_theory/integration.lean to src/analysis/measure_theory/integration.lean Renamed analysis/measure_theory/lebesgue_measure.lean to src/analysis/measure_theory/lebesgue_measure.lean Renamed analysis/measure_theory/measurable_space.lean to src/analysis/measure_theory/measurable_space.lean Renamed analysis/measure_theory/measure_space.lean to src/analysis/measure_theory/measure_space.lean Renamed analysis/measure_theory/outer_measure.lean to src/analysis/measure_theory/outer_measure.lean Renamed analysis/metric_space.lean to src/analysis/metric_space.lean Renamed analysis/nnreal.lean to src/analysis/nnreal.lean Renamed analysis/normed_space.lean to src/analysis/normed_space.lean Renamed analysis/polynomial.lean to src/analysis/polynomial.lean Renamed analysis/probability_mass_function.lean to src/analysis/probability_mass_function.lean Renamed analysis/real.lean to src/analysis/real.lean Renamed analysis/topology/bounded_continuous_function.lean to src/analysis/topology/bounded_continuous_function.lean Renamed analysis/topology/completion.lean to src/analysis/topology/completion.lean Renamed analysis/topology/continuity.lean to src/analysis/topology/continuity.lean Renamed analysis/topology/continuous_map.lean to src/analysis/topology/continuous_map.lean Renamed analysis/topology/infinite_sum.lean to src/analysis/topology/infinite_sum.lean Renamed analysis/topology/quotient_topological_structures.lean to src/analysis/topology/quotient_topological_structures.lean Renamed analysis/topology/stone_cech.lean to src/analysis/topology/stone_cech.lean Renamed analysis/topology/topological_groups.lean to src/analysis/topology/topological_groups.lean Renamed analysis/topology/topological_space.lean to src/analysis/topology/topological_space.lean Renamed analysis/topology/topological_structures.lean to src/analysis/topology/topological_structures.lean Renamed analysis/topology/uniform_space.lean to src/analysis/topology/uniform_space.lean Renamed category/applicative.lean to src/category/applicative.lean Renamed category/basic.lean to src/category/basic.lean Renamed category/bifunctor.lean to src/category/bifunctor.lean Renamed category/bitraversable/basic.lean to src/category/bitraversable/basic.lean Renamed category/bitraversable/instances.lean to src/category/bitraversable/instances.lean Renamed category/bitraversable/lemmas.lean to src/category/bitraversable/lemmas.lean Renamed category/functor.lean to src/category/functor.lean Renamed category/traversable/basic.lean to src/category/traversable/basic.lean Renamed category/traversable/default.lean to src/category/traversable/default.lean Renamed category/traversable/derive.lean to src/category/traversable/derive.lean Renamed category/traversable/equiv.lean to src/category/traversable/equiv.lean Renamed category/traversable/instances.lean to src/category/traversable/instances.lean Renamed category/traversable/lemmas.lean to src/category/traversable/lemmas.lean Renamed category_theory/category.lean to src/category_theory/category.lean Renamed category_theory/comma.lean to src/category_theory/comma.lean Renamed category_theory/const.lean to src/category_theory/const.lean Renamed category_theory/discrete_category.lean to src/category_theory/discrete_category.lean Renamed category_theory/eq_to_hom.lean to src/category_theory/eq_to_hom.lean Renamed category_theory/equivalence.lean to src/category_theory/equivalence.lean Renamed category_theory/examples/measurable_space.lean to src/category_theory/examples/measurable_space.lean Renamed category_theory/examples/monoids.lean to src/category_theory/examples/monoids.lean Renamed category_theory/examples/rings.lean to src/category_theory/examples/rings.lean Renamed category_theory/examples/topological_spaces.lean to src/category_theory/examples/topological_spaces.lean Renamed category_theory/full_subcategory.lean to src/category_theory/full_subcategory.lean Renamed category_theory/fully_faithful.lean to src/category_theory/fully_faithful.lean Renamed category_theory/functor.lean to src/category_theory/functor.lean Renamed category_theory/functor_category.lean to src/category_theory/functor_category.lean Renamed category_theory/groupoid.lean to src/category_theory/groupoid.lean Renamed category_theory/isomorphism.lean to src/category_theory/isomorphism.lean Renamed category_theory/limits/cones.lean to src/category_theory/limits/cones.lean Renamed category_theory/limits/functor_category.lean to src/category_theory/limits/functor_category.lean Renamed category_theory/limits/limits.lean to src/category_theory/limits/limits.lean Renamed category_theory/limits/preserves.lean to src/category_theory/limits/preserves.lean Renamed category_theory/limits/types.lean to src/category_theory/limits/types.lean Renamed category_theory/natural_isomorphism.lean to src/category_theory/natural_isomorphism.lean Renamed category_theory/natural_transformation.lean to src/category_theory/natural_transformation.lean Renamed category_theory/opposites.lean to src/category_theory/opposites.lean Renamed category_theory/pempty.lean to src/category_theory/pempty.lean Renamed category_theory/products.lean to src/category_theory/products.lean Renamed category_theory/punit.lean to src/category_theory/punit.lean Renamed category_theory/types.lean to src/category_theory/types.lean Renamed category_theory/whiskering.lean to src/category_theory/whiskering.lean Renamed category_theory/yoneda.lean to src/category_theory/yoneda.lean Renamed computability/halting.lean to src/computability/halting.lean Renamed computability/partrec.lean to src/computability/partrec.lean Renamed computability/partrec_code.lean to src/computability/partrec_code.lean Renamed computability/primrec.lean to src/computability/primrec.lean Renamed computability/turing_machine.lean to src/computability/turing_machine.lean Renamed data/analysis/filter.lean to src/data/analysis/filter.lean Renamed data/analysis/topology.lean to src/data/analysis/topology.lean Renamed data/array/lemmas.lean to src/data/array/lemmas.lean Renamed data/bool.lean to src/data/bool.lean Renamed data/buffer/basic.lean to src/data/buffer/basic.lean Renamed data/char.lean to src/data/char.lean Renamed data/complex/basic.lean to src/data/complex/basic.lean Renamed data/complex/exponential.lean to src/data/complex/exponential.lean Renamed data/dfinsupp.lean to src/data/dfinsupp.lean Renamed data/dlist/basic.lean to src/data/dlist/basic.lean Renamed data/dlist/instances.lean to src/data/dlist/instances.lean Renamed data/equiv/algebra.lean to src/data/equiv/algebra.lean Renamed data/equiv/basic.lean to src/data/equiv/basic.lean Renamed data/equiv/denumerable.lean to src/data/equiv/denumerable.lean Renamed data/equiv/encodable.lean to src/data/equiv/encodable.lean Renamed data/equiv/fin.lean to src/data/equiv/fin.lean Renamed data/equiv/list.lean to src/data/equiv/list.lean Renamed data/equiv/nat.lean to src/data/equiv/nat.lean Renamed data/erased.lean to src/data/erased.lean Renamed data/fin.lean to src/data/fin.lean Renamed data/finmap.lean to src/data/finmap.lean Renamed data/finset.lean to src/data/finset.lean Renamed data/finsupp.lean to src/data/finsupp.lean Renamed data/fintype.lean to src/data/fintype.lean Renamed data/fp/basic.lean to src/data/fp/basic.lean Renamed data/hash_map.lean to src/data/hash_map.lean Renamed data/holor.lean to src/data/holor.lean Renamed data/int/basic.lean to src/data/int/basic.lean Renamed data/int/gcd.lean to src/data/int/gcd.lean Renamed data/int/modeq.lean to src/data/int/modeq.lean Renamed data/int/sqrt.lean to src/data/int/sqrt.lean Renamed data/lazy_list2.lean to src/data/lazy_list2.lean Renamed data/list/alist.lean to src/data/list/alist.lean Renamed data/list/basic.lean to src/data/list/basic.lean Renamed data/list/default.lean to src/data/list/default.lean Renamed data/list/defs.lean to src/data/list/defs.lean Renamed data/list/perm.lean to src/data/list/perm.lean Renamed data/list/sigma.lean to src/data/list/sigma.lean Renamed data/list/sort.lean to src/data/list/sort.lean Renamed data/multiset.lean to src/data/multiset.lean Renamed data/nat/basic.lean to src/data/nat/basic.lean Renamed data/nat/cast.lean to src/data/nat/cast.lean Renamed data/nat/choose.lean to src/data/nat/choose.lean Renamed data/nat/dist.lean to src/data/nat/dist.lean Renamed data/nat/enat.lean to src/data/nat/enat.lean Renamed data/nat/gcd.lean to src/data/nat/gcd.lean Renamed data/nat/modeq.lean to src/data/nat/modeq.lean Renamed data/nat/pairing.lean to src/data/nat/pairing.lean Renamed data/nat/prime.lean to src/data/nat/prime.lean Renamed data/nat/sqrt.lean to src/data/nat/sqrt.lean Renamed data/nat/totient.lean to src/data/nat/totient.lean Renamed data/num/basic.lean to src/data/num/basic.lean Renamed data/num/bitwise.lean to src/data/num/bitwise.lean Renamed data/num/lemmas.lean to src/data/num/lemmas.lean Renamed data/option/basic.lean to src/data/option/basic.lean Renamed data/option/defs.lean to src/data/option/defs.lean Renamed data/padics/default.lean to src/data/padics/default.lean Renamed data/padics/hensel.lean to src/data/padics/hensel.lean Renamed data/padics/padic_integers.lean to src/data/padics/padic_integers.lean Renamed data/padics/padic_norm.lean to src/data/padics/padic_norm.lean Renamed data/padics/padic_numbers.lean to src/data/padics/padic_numbers.lean Renamed data/pfun.lean to src/data/pfun.lean Renamed data/pnat.lean to src/data/pnat.lean Renamed data/polynomial.lean to src/data/polynomial.lean Renamed data/prod.lean to src/data/prod.lean Renamed data/quot.lean to src/data/quot.lean Renamed data/rat.lean to src/data/rat.lean Renamed data/real/basic.lean to src/data/real/basic.lean Renamed data/real/cau_seq.lean to src/data/real/cau_seq.lean Renamed data/real/cau_seq_completion.lean to src/data/real/cau_seq_completion.lean Renamed data/real/cau_seq_filter.lean to src/data/real/cau_seq_filter.lean Renamed data/real/ennreal.lean to src/data/real/ennreal.lean Renamed data/real/irrational.lean to src/data/real/irrational.lean Renamed data/real/nnreal.lean to src/data/real/nnreal.lean Renamed data/semiquot.lean to src/data/semiquot.lean Renamed data/seq/computation.lean to src/data/seq/computation.lean Renamed data/seq/parallel.lean to src/data/seq/parallel.lean Renamed data/seq/seq.lean to src/data/seq/seq.lean Renamed data/seq/wseq.lean to src/data/seq/wseq.lean Renamed data/set/basic.lean to src/data/set/basic.lean Renamed data/set/countable.lean to src/data/set/countable.lean Renamed data/set/default.lean to src/data/set/default.lean Renamed data/set/disjointed.lean to src/data/set/disjointed.lean Renamed data/set/enumerate.lean to src/data/set/enumerate.lean Renamed data/set/finite.lean to src/data/set/finite.lean Renamed data/set/function.lean to src/data/set/function.lean Renamed data/set/intervals.lean to src/data/set/intervals.lean Renamed data/set/lattice.lean to src/data/set/lattice.lean Renamed data/sigma/basic.lean to src/data/sigma/basic.lean Renamed data/sigma/default.lean to src/data/sigma/default.lean Renamed data/stream/basic.lean to src/data/stream/basic.lean Renamed data/string.lean to src/data/string.lean Renamed data/subtype.lean to src/data/subtype.lean Renamed data/sum.lean to src/data/sum.lean Renamed data/ulift.lean to src/data/ulift.lean Renamed data/vector2.lean to src/data/vector2.lean Renamed data/zmod/basic.lean to src/data/zmod/basic.lean Renamed data/zmod/quadratic_reciprocity.lean to src/data/zmod/quadratic_reciprocity.lean Renamed field_theory/finite.lean to src/field_theory/finite.lean Renamed field_theory/perfect_closure.lean to src/field_theory/perfect_closure.lean Renamed field_theory/subfield.lean to src/field_theory/subfield.lean Renamed group_theory/abelianization.lean to src/group_theory/abelianization.lean Renamed group_theory/coset.lean to src/group_theory/coset.lean Renamed group_theory/eckmann_hilton.lean to src/group_theory/eckmann_hilton.lean Renamed group_theory/free_abelian_group.lean to src/group_theory/free_abelian_group.lean Renamed group_theory/free_group.lean to src/group_theory/free_group.lean Renamed group_theory/group_action.lean to src/group_theory/group_action.lean Renamed group_theory/order_of_element.lean to src/group_theory/order_of_element.lean Renamed group_theory/perm.lean to src/group_theory/perm.lean Renamed group_theory/quotient_group.lean to src/group_theory/quotient_group.lean Renamed group_theory/subgroup.lean to src/group_theory/subgroup.lean Renamed group_theory/submonoid.lean to src/group_theory/submonoid.lean Renamed linear_algebra/basic.lean to src/linear_algebra/basic.lean Renamed linear_algebra/basis.lean to src/linear_algebra/basis.lean Renamed linear_algebra/default.lean to src/linear_algebra/default.lean Renamed linear_algebra/dimension.lean to src/linear_algebra/dimension.lean Renamed linear_algebra/direct_sum_module.lean to src/linear_algebra/direct_sum_module.lean Renamed linear_algebra/lc.lean to src/linear_algebra/lc.lean Renamed linear_algebra/multivariate_polynomial.lean to src/linear_algebra/multivariate_polynomial.lean Renamed linear_algebra/tensor_product.lean to src/linear_algebra/tensor_product.lean Renamed logic/basic.lean to src/logic/basic.lean Renamed logic/embedding.lean to src/logic/embedding.lean Renamed logic/function.lean to src/logic/function.lean Renamed logic/relation.lean to src/logic/relation.lean Renamed logic/relator.lean to src/logic/relator.lean Renamed logic/schroeder_bernstein.lean to src/logic/schroeder_bernstein.lean Renamed meta/rb_map.lean to src/meta/rb_map.lean Renamed number_theory/dioph.lean to src/number_theory/dioph.lean Renamed number_theory/pell.lean to src/number_theory/pell.lean Renamed order/basic.lean to src/order/basic.lean Renamed order/boolean_algebra.lean to src/order/boolean_algebra.lean Renamed order/bounded_lattice.lean to src/order/bounded_lattice.lean Renamed order/bounds.lean to src/order/bounds.lean Renamed order/complete_boolean_algebra.lean to src/order/complete_boolean_algebra.lean Renamed order/complete_lattice.lean to src/order/complete_lattice.lean Renamed order/conditionally_complete_lattice.lean to src/order/conditionally_complete_lattice.lean Renamed order/default.lean to src/order/default.lean Renamed order/filter.lean to src/order/filter.lean Renamed order/fixed_points.lean to src/order/fixed_points.lean Renamed order/galois_connection.lean to src/order/galois_connection.lean Renamed order/lattice.lean to src/order/lattice.lean Renamed order/liminf_limsup.lean to src/order/liminf_limsup.lean Renamed order/order_iso.lean to src/order/order_iso.lean Renamed order/zorn.lean to src/order/zorn.lean Renamed pending/default.lean to src/pending/default.lean Renamed ring_theory/associated.lean to src/ring_theory/associated.lean Renamed ring_theory/determinant.lean to src/ring_theory/determinant.lean Renamed ring_theory/ideal_operations.lean to src/ring_theory/ideal_operations.lean Renamed ring_theory/ideals.lean to src/ring_theory/ideals.lean Renamed ring_theory/localization.lean to src/ring_theory/localization.lean Renamed ring_theory/matrix.lean to src/ring_theory/matrix.lean Renamed ring_theory/multiplicity.lean to src/ring_theory/multiplicity.lean Renamed ring_theory/noetherian.lean to src/ring_theory/noetherian.lean Renamed ring_theory/principal_ideal_domain.lean to src/ring_theory/principal_ideal_domain.lean Renamed ring_theory/subring.lean to src/ring_theory/subring.lean Renamed ring_theory/unique_factorization_domain.lean to src/ring_theory/unique_factorization_domain.lean Renamed set_theory/cardinal.lean to src/set_theory/cardinal.lean Renamed set_theory/cofinality.lean to src/set_theory/cofinality.lean Renamed set_theory/lists.lean to src/set_theory/lists.lean Renamed set_theory/ordinal.lean to src/set_theory/ordinal.lean Renamed set_theory/ordinal_notation.lean to src/set_theory/ordinal_notation.lean Renamed set_theory/zfc.lean to src/set_theory/zfc.lean Renamed tactic/abel.lean to src/tactic/abel.lean Renamed tactic/algebra.lean to src/tactic/algebra.lean Renamed tactic/alias.lean to src/tactic/alias.lean Renamed tactic/auto_cases.lean to src/tactic/auto_cases.lean Renamed tactic/basic.lean to src/tactic/basic.lean Renamed tactic/cache.lean to src/tactic/cache.lean Renamed tactic/chain.lean to src/tactic/chain.lean Renamed tactic/converter/binders.lean to src/tactic/converter/binders.lean Renamed tactic/converter/interactive.lean to src/tactic/converter/interactive.lean Renamed tactic/converter/old_conv.lean to src/tactic/converter/old_conv.lean Renamed tactic/default.lean to src/tactic/default.lean Renamed tactic/elide.lean to src/tactic/elide.lean Renamed tactic/explode.lean to src/tactic/explode.lean Renamed tactic/ext.lean to src/tactic/ext.lean Renamed tactic/fin_cases.lean to src/tactic/fin_cases.lean Renamed tactic/find.lean to src/tactic/find.lean Renamed tactic/finish.lean to src/tactic/finish.lean Renamed tactic/generalize_proofs.lean to src/tactic/generalize_proofs.lean Renamed tactic/interactive.lean to src/tactic/interactive.lean Renamed tactic/linarith.lean to src/tactic/linarith.lean Renamed tactic/mk_iff_of_inductive_prop.lean to src/tactic/mk_iff_of_inductive_prop.lean Renamed tactic/monotonicity/basic.lean to src/tactic/monotonicity/basic.lean Renamed tactic/monotonicity/default.lean to src/tactic/monotonicity/default.lean Renamed tactic/monotonicity/interactive.lean to src/tactic/monotonicity/interactive.lean Renamed tactic/monotonicity/lemmas.lean to src/tactic/monotonicity/lemmas.lean Renamed tactic/norm_num.lean to src/tactic/norm_num.lean Renamed tactic/pi_instances.lean to src/tactic/pi_instances.lean Renamed tactic/rcases.lean to src/tactic/rcases.lean Renamed tactic/replacer.lean to src/tactic/replacer.lean Renamed tactic/restate_axiom.lean to src/tactic/restate_axiom.lean Renamed tactic/rewrite.lean to src/tactic/rewrite.lean Renamed tactic/ring.lean to src/tactic/ring.lean Renamed tactic/ring2.lean to src/tactic/ring2.lean Renamed tactic/scc.lean to src/tactic/scc.lean Renamed tactic/simpa.lean to src/tactic/simpa.lean Renamed tactic/slice.lean to src/tactic/slice.lean Renamed tactic/split_ifs.lean to src/tactic/split_ifs.lean Renamed tactic/squeeze.lean to src/tactic/squeeze.lean Renamed tactic/subtype_instance.lean to src/tactic/subtype_instance.lean Renamed tactic/tauto.lean to src/tactic/tauto.lean Renamed tactic/tfae.lean to src/tactic/tfae.lean Renamed tactic/tidy.lean to src/tactic/tidy.lean Renamed tactic/where.lean to src/tactic/where.lean Renamed tactic/wlog.lean to src/tactic/wlog.lean 2019-01-15 11:15:57+01:00 0c71016 feat(logic/basic): nonempty.map ESTIMATED CHANGES Modified logic/basic.lean + theorem nonempty.map 2019-01-14 14:48:02+01:00 667dcf3 feat(group_theory/sylow): first sylow theorem (closes #591) ESTIMATED CHANGES Modified group_theory/group_action.lean + theorem is_group_action.comp_hom + def is_group_action.mul_left_cosets + theorem is_monoid_action.comp_hom Modified group_theory/sylow.lean + theorem sylow.exists_subgroup_card_pow_prime + theorem sylow.fixed_points_mul_left_cosets_equiv_quotient + theorem sylow.mem_fixed_points_mul_left_cosets_iff_mem_normalizer 2019-01-14 14:05:58+01:00 f63fb54 doc(tactic/simpa): rewrite simpa doc ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/simpa.lean 2019-01-14 13:34:42+01:00 49c059a refactor(analysis): add metric namespace combines changes from @sgouezel, @PatrickMassot, and @digama0 ESTIMATED CHANGES Modified analysis/bounded_linear_maps.lean Modified analysis/complex.lean Modified analysis/emetric_space.lean + theorem edist_eq_zero + theorem edist_mem_uniformity + theorem edist_triangle_left + theorem edist_triangle_right + theorem emetric.cauchy_iff + theorem emetric.uniform_continuous_iff + theorem emetric.uniform_embedding_iff - theorem emetric_space.cauchy_of_emetric - theorem emetric_space.edist_eq_zero - theorem emetric_space.edist_mem_uniformity - theorem emetric_space.edist_triangle_left - theorem emetric_space.edist_triangle_right - theorem emetric_space.eq_of_forall_edist_le +/- def emetric_space.induced - theorem emetric_space.mem_uniformity_edist +/- def emetric_space.replace_uniformity - theorem emetric_space.subtype.edist_eq - theorem emetric_space.uniform_continuous_of_emetric - theorem emetric_space.uniform_embedding_of_emetric - def emetric_space.uniform_space_of_edist - theorem emetric_space.uniformity_edist'' - theorem emetric_space.uniformity_edist' - theorem emetric_space.zero_eq_edist + theorem eq_of_forall_edist_le + theorem mem_uniformity_edist + theorem subtype.edist_eq + def uniform_space_of_edist + theorem uniformity_edist'' + theorem uniformity_edist' + theorem zero_eq_edist Modified analysis/ennreal.lean Modified analysis/exponential.lean Modified analysis/limits.lean Modified analysis/metric_space.lean - def ball - theorem ball_disjoint - theorem ball_disjoint_same - theorem ball_eq_empty_iff_nonpos - theorem ball_half_subset - theorem ball_mem_nhds - theorem ball_subset - theorem ball_subset_ball - theorem ball_subset_closed_ball - theorem bounded.subset - def bounded - theorem bounded_bUnion - theorem bounded_ball - theorem bounded_closed_ball - theorem bounded_empty - theorem bounded_iff_mem_bounded - theorem bounded_iff_subset_ball - theorem bounded_of_compact - theorem bounded_of_compact_space - theorem bounded_of_finite - theorem bounded_range_iff - theorem bounded_singleton - theorem bounded_union - theorem cauchy_of_metric - theorem cauchy_seq_metric' - theorem cauchy_seq_metric - def closed_ball - theorem closed_ball_subset_closed_ball - theorem compact_iff_closed_bounded - theorem continuous_of_metric - theorem continuous_topo_metric - theorem dist_mem_uniformity - theorem exists_ball_subset_ball - theorem exists_delta_of_continuous - theorem is_closed_ball - theorem is_open_ball - theorem is_open_metric - theorem mem_ball' - theorem mem_ball - theorem mem_ball_comm - theorem mem_ball_self - theorem mem_closed_ball - theorem mem_closure_iff' - theorem mem_nhds_iff_metric - theorem mem_of_closed' - theorem mem_uniformity_dist - theorem mem_uniformity_dist_edist + def metric.ball + theorem metric.ball_disjoint + theorem metric.ball_disjoint_same + theorem metric.ball_eq_empty_iff_nonpos + theorem metric.ball_half_subset + theorem metric.ball_mem_nhds + theorem metric.ball_subset + theorem metric.ball_subset_ball + theorem metric.ball_subset_closed_ball + theorem metric.bounded.subset + def metric.bounded + theorem metric.bounded_bUnion + theorem metric.bounded_ball + theorem metric.bounded_closed_ball + theorem metric.bounded_empty + theorem metric.bounded_iff_mem_bounded + theorem metric.bounded_iff_subset_ball + theorem metric.bounded_of_compact + theorem metric.bounded_of_compact_space + theorem metric.bounded_of_finite + theorem metric.bounded_range_iff + theorem metric.bounded_singleton + theorem metric.bounded_union + theorem metric.cauchy_seq_iff' + theorem metric.cauchy_seq_iff + def metric.closed_ball + theorem metric.closed_ball_subset_closed_ball + theorem metric.compact_iff_closed_bounded + theorem metric.continuous_iff' + theorem metric.continuous_iff + theorem metric.dist_mem_uniformity + theorem metric.exists_ball_subset_ball + theorem metric.exists_delta_of_continuous + theorem metric.is_closed_ball + theorem metric.is_open_ball + theorem metric.is_open_iff + theorem metric.mem_ball' + theorem metric.mem_ball + theorem metric.mem_ball_comm + theorem metric.mem_ball_self + theorem metric.mem_closed_ball + theorem metric.mem_closure_iff' + theorem metric.mem_nhds_iff + theorem metric.mem_of_closed' + theorem metric.mem_uniformity_dist + theorem metric.nhds_eq + theorem metric.pos_of_mem_ball + theorem metric.tendsto_at_top + theorem metric.tendsto_nhds + theorem metric.tendsto_nhds_nhds + theorem metric.totally_bounded_iff + theorem metric.totally_bounded_of_finite_discretization + theorem metric.uniform_continuous_iff + theorem metric.uniform_embedding_iff + theorem metric.uniformity_dist' + theorem metric.uniformity_dist - def metric_space.uniform_space_of_dist - theorem nhds_eq_metric - theorem pos_of_mem_ball - theorem tendsto_at_top_metric - theorem tendsto_nhds_of_metric - theorem tendsto_nhds_topo_metric - theorem totally_bounded_of_finite_discretization - theorem totally_bounded_of_metric - theorem uniform_continuous_of_metric - theorem uniform_embedding_of_metric + def uniform_space_of_dist - theorem uniformity_dist' - theorem uniformity_dist - theorem uniformity_edist' Modified analysis/nnreal.lean Modified analysis/normed_space.lean Modified analysis/real.lean Modified analysis/topology/bounded_continuous_function.lean Modified data/padics/hensel.lean Modified data/padics/padic_integers.lean Modified data/padics/padic_numbers.lean Modified data/real/cau_seq_filter.lean 2019-01-14 13:34:16+01:00 2f9f3df doc(tactic/simpa): update simpa documentation ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/simpa.lean 2019-01-14 13:34:16+01:00 263e8a0 fix(tactic/simpa): only try given expression in "simpa using" ESTIMATED CHANGES Modified data/padics/padic_norm.lean Modified tactic/simpa.lean 2019-01-14 12:27:12+01:00 4de9682 fix(PULL_REQUEST_TEMPLATE): use absolute urls The relative urls do not resolve correctly. ESTIMATED CHANGES Added .github/PULL_REQUEST_TEMPLATE.md Deleted PULL_REQUEST_TEMPLATE.md 2019-01-14 12:03:28+01:00 c7f13fd feat(.vscode): add copyright snippet ESTIMATED CHANGES Added .vscode/copyright.code-snippets 2019-01-13 19:02:05+01:00 b03c0aa feat(group_theory/sylow): Cauchy's theorem (#458) * feat(group_theory): adding add_subgroup and add_submonoid * feat(data/list/basic): rotate a list ESTIMATED CHANGES Modified data/equiv/basic.lean + theorem equiv.subtype_quotient_equiv_quotient_subtype Modified group_theory/coset.lean Modified group_theory/group_action.lean + def is_group_action.orbit_rel Added group_theory/sylow.lean + theorem is_group_action.card_modeq_card_fixed_points + theorem is_group_action.mem_fixed_points_iff_card_orbit_eq_one + theorem quotient_group.card_preimage_mk + theorem sylow.exists_prime_order_of_dvd_card + theorem sylow.mem_vectors_prod_eq_one + theorem sylow.mem_vectors_prod_eq_one_iff + def sylow.mk_vector_prod_eq_one + theorem sylow.mk_vector_prod_eq_one_inj + theorem sylow.one_mem_fixed_points_rotate + theorem sylow.one_mem_vectors_prod_eq_one + def sylow.rotate_vectors_prod_eq_one + def sylow.vectors_prod_eq_one 2019-01-12 10:19:18-05:00 dc6c38a fix(field_theory/subfield): is_subfield should be a Prop (#588) ESTIMATED CHANGES Modified field_theory/subfield.lean 2019-01-11 19:01:39+01:00 e61a464 feat(ring_theory/euclidean_domain): add more specific Euclidean domain stuff (#527) ESTIMATED CHANGES Modified algebra/euclidean_domain.lean + theorem euclidean_domain.eq_div_of_mul_eq_left + theorem euclidean_domain.eq_div_of_mul_eq_right Added ring_theory/euclidean_domain.lean + theorem dvd_or_coprime + theorem gcd_is_unit_iff + theorem is_coprime_of_dvd + theorem span_gcd 2019-01-11 18:59:19+01:00 5c323cd feat(category_theory): over and under categories (#549) ESTIMATED CHANGES Modified category_theory/comma.lean +/- theorem category_theory.comma.map_right_obj_hom + theorem category_theory.over.comp_left + def category_theory.over.forget + theorem category_theory.over.forget_map + theorem category_theory.over.forget_obj + def category_theory.over.hom_mk + theorem category_theory.over.hom_mk_left + theorem category_theory.over.id_left + def category_theory.over.map + theorem category_theory.over.map_map_left + theorem category_theory.over.map_obj_hom + theorem category_theory.over.map_obj_left + def category_theory.over.mk + theorem category_theory.over.mk_hom + theorem category_theory.over.mk_left + theorem category_theory.over.over_morphism.ext + theorem category_theory.over.over_morphism_right + theorem category_theory.over.over_right + def category_theory.over.post + theorem category_theory.over.w + def category_theory.over + theorem category_theory.under.comp_right + def category_theory.under.forget + theorem category_theory.under.forget_map + theorem category_theory.under.forget_obj + def category_theory.under.hom_mk + theorem category_theory.under.hom_mk_right + theorem category_theory.under.id_right + def category_theory.under.map + theorem category_theory.under.map_map_right + theorem category_theory.under.map_obj_hom + theorem category_theory.under.map_obj_right + def category_theory.under.mk + theorem category_theory.under.mk_hom + theorem category_theory.under.mk_right + def category_theory.under.post + theorem category_theory.under.under_left + theorem category_theory.under.under_morphism.ext + theorem category_theory.under.under_morphism_left + theorem category_theory.under.w + def category_theory.under Added category_theory/limits/over.lean + def category_theory.functor.to_cocone + theorem category_theory.functor.to_cocone_X + theorem category_theory.functor.to_cocone_ι + def category_theory.functor.to_cone + theorem category_theory.functor.to_cone_X + theorem category_theory.functor.to_cone_π + def category_theory.over.colimit + theorem category_theory.over.colimit_X_hom + theorem category_theory.over.colimit_ι_app + def category_theory.over.forget_colimit_is_colimit + def category_theory.under.forget_limit_is_limit + def category_theory.under.limit + theorem category_theory.under.limit_X_hom + theorem category_theory.under.limit_π_app 2019-01-11 18:17:13+01:00 c19b4be feat(meta/rb_map): add some monadic filtering ESTIMATED CHANGES Modified meta/rb_map.lean 2019-01-11 17:06:02+01:00 7a9b2e4 Update PULL_REQUEST_TEMPLATE.md ESTIMATED CHANGES Modified PULL_REQUEST_TEMPLATE.md 2019-01-11 17:04:58+01:00 6516c34 doc(README): elect new maintainers ESTIMATED CHANGES Modified README.md 2019-01-11 15:35:42+01:00 4f3f86d chore(ring_theory/subring): remove unused import ESTIMATED CHANGES Modified ring_theory/subring.lean 2019-01-11 11:37:17+01:00 4578796 feat(data/polynomial): various lemmas about degree and monic and coeff ESTIMATED CHANGES Modified data/polynomial.lean +/- theorem polynomial.coeff_X +/- theorem polynomial.coeff_add +/- theorem polynomial.coeff_neg + theorem polynomial.coeff_sub + theorem polynomial.degree_C_mul_X_pow_le + theorem polynomial.degree_X_le + theorem polynomial.degree_X_pow_le + theorem polynomial.degree_le_iff_coeff_zero + theorem polynomial.degree_mod_by_monic_le + theorem polynomial.leading_coeff_mul_X_pow + theorem polynomial.monic_X_add_C + theorem polynomial.monic_X_pow_add + theorem polynomial.monic_X_pow_sub +/- theorem polynomial.monic_X_sub_C + theorem polynomial.monic_of_degree_le + theorem polynomial.nat_degree_le_of_degree_le 2019-01-10 15:26:30-05:00 b1684fe fix(principal_ideal_domain): correct spelling mistake (#582) ESTIMATED CHANGES Modified ring_theory/principal_ideal_domain.lean - theorem principal_ideal_domain.associates_iredducible_iff_prime + theorem principal_ideal_domain.associates_irreducible_iff_prime 2019-01-10 12:11:24+01:00 6e97721 refactor(principal_ideal_domain): simplify proof of PID -> UFD ESTIMATED CHANGES Modified ring_theory/noetherian.lean + theorem is_noetherian_ring.exists_factors Modified ring_theory/principal_ideal_domain.lean - theorem principal_ideal_domain.associated_of_associated_prod_prod + theorem principal_ideal_domain.associates_iredducible_iff_prime - theorem principal_ideal_domain.associates_prime_of_irreducible - theorem principal_ideal_domain.eq_of_prod_eq_associates - theorem principal_ideal_domain.exists_factors + theorem principal_ideal_domain.irreducible_iff_prime - theorem principal_ideal_domain.prime_of_irreducible Modified ring_theory/unique_factorization_domain.lean +/- theorem unique_factorization_domain.irreducible_factors 2019-01-10 12:11:24+01:00 f5bf277 refactor(unique_factorization_domain): simplify definition of UFD ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.dvd_prod Modified ring_theory/associated.lean + theorem associated_mul_left_cancel + theorem associated_mul_right_cancel + theorem dvd_iff_dvd_of_rel_left + theorem dvd_iff_dvd_of_rel_right + theorem dvd_mul_unit_iff + theorem eq_zero_iff_of_associated + theorem exists_associated_mem_of_dvd_prod + theorem irreducible_iff_of_associated + theorem irreducible_of_associated + theorem is_unit_iff_of_associated + theorem is_unit_unit + theorem mul_unit_dvd_iff + theorem ne_zero_iff_of_associated +/- theorem not_prime_zero + theorem prime_iff_of_associated + theorem prime_of_associated + theorem unit_mul_dvd_iff Modified ring_theory/principal_ideal_domain.lean Modified ring_theory/unique_factorization_domain.lean + theorem unique_factorization_domain.factors_irreducible + theorem unique_factorization_domain.induction_on_prime + theorem unique_factorization_domain.irreducible_factors + theorem unique_factorization_domain.irreducible_iff_prime + def unique_factorization_domain.of_unique_irreducible_factorization + theorem unique_factorization_domain.unique + structure unique_irreducible_factorization 2019-01-10 09:46:28+01:00 8b66ebd functions and cardinality (#556) ESTIMATED CHANGES Modified data/set/countable.lean + theorem set.countable_of_injective_of_countable_image Modified data/set/finite.lean + theorem set.finite_subsets_of_finite Modified data/set/function.lean + theorem set.inv_fun_on_image + theorem set.maps_to' + theorem set.maps_to_image + theorem set.maps_to_range 2019-01-09 10:08:23+01:00 f488635 chore(tactic/monotonicity/interactive) use derive for has_reflect (#578) ESTIMATED CHANGES Modified tactic/monotonicity/interactive.lean +/- inductive tactic.interactive.rep_arity 2019-01-09 10:07:56+01:00 af735a5 feat(field_theory/finite): field_of_integral_domain (#579) ESTIMATED CHANGES Modified field_theory/finite.lean + def finite_field.field_of_integral_domain 2019-01-09 09:48:35+01:00 d0532c1 feat(data/polynomial): lemmas about map (#530) ESTIMATED CHANGES Modified algebra/field.lean + theorem is_field_hom.injective Modified algebra/group.lean + theorem is_group_hom.injective_iff Modified data/polynomial.lean + theorem polynomial.coeff_X + theorem polynomial.degree_div_le + theorem polynomial.degree_div_lt + theorem polynomial.degree_map - theorem polynomial.degree_map_eq + theorem polynomial.degree_map_eq_of_injective + theorem polynomial.degree_map_eq_of_leading_coeff_ne_zero +/- theorem polynomial.degree_mul_leading_coeff_inv + theorem polynomial.div_mod_by_monic_unique + theorem polynomial.div_zero + theorem polynomial.eq_X_add_C_of_degree_le_one + theorem polynomial.eval_map +/- theorem polynomial.eval_pow + theorem polynomial.eval₂_hom + theorem polynomial.eval₂_map + theorem polynomial.exists_root_of_degree_eq_one + theorem polynomial.leading_coeff_map + theorem polynomial.map_div + theorem polynomial.map_div_by_monic + theorem polynomial.map_eq_zero + theorem polynomial.map_id + theorem polynomial.map_map + theorem polynomial.map_mod + theorem polynomial.map_mod_by_monic + theorem polynomial.map_mod_div_by_monic + theorem polynomial.map_neg + theorem polynomial.map_sub + theorem polynomial.monic_map +/- theorem polynomial.nat_degree_eq_of_degree_eq + theorem polynomial.nat_degree_map + theorem polynomial.ne_zero_of_monic_of_zero_ne_one 2019-01-05 16:41:07-05:00 2e63635 feat(group_theory/subgroup): simple groups (#572) ESTIMATED CHANGES Modified group_theory/subgroup.lean + theorem additive.simple_add_group_iff + theorem is_subgroup.eq_trivial_iff + theorem multiplicative.simple_group_iff + theorem simple_add_group_of_surjective + theorem simple_group_of_surjective 2019-01-05 16:38:38-05:00 d19c9bc feat(data/fintype): decidable_left_inverse_fintype (#575) ESTIMATED CHANGES Modified data/fintype.lean 2019-01-05 16:37:57-05:00 395aadd feat(group_theory/sign): sign_surjective (#576) ESTIMATED CHANGES Modified group_theory/perm.lean + theorem equiv.perm.sign_surjective 2019-01-05 14:19:05-05:00 b9c5eb0 feat(ring_theory/multiplicity): multiplicity of elements of a ring (#523) ESTIMATED CHANGES Modified algebra/group_power.lean + theorem pow_dvd_pow Modified data/multiset.lean + theorem multiset.card_smul Modified data/nat/basic.lean Modified data/rat.lean + theorem rat.add_num_denom + theorem rat.denom_one + theorem rat.num_one Added ring_theory/multiplicity.lean + theorem multiplicity.dvd_of_multiplicity_pos + theorem multiplicity.eq_some_iff + theorem multiplicity.eq_top_iff + theorem multiplicity.eq_top_iff_not_finite + def multiplicity.finite + theorem multiplicity.finite_def + theorem multiplicity.finite_iff_dom + theorem multiplicity.finite_int_iff + theorem multiplicity.finite_int_iff_nat_abs_finite + theorem multiplicity.finite_mul + theorem multiplicity.finite_mul_aux + theorem multiplicity.finite_mul_iff + theorem multiplicity.finite_nat_iff + theorem multiplicity.finite_of_finite_mul_left + theorem multiplicity.finite_of_finite_mul_right + theorem multiplicity.finite_pow + theorem multiplicity.get_multiplicity_self + theorem multiplicity.get_one_right + theorem multiplicity.is_greatest' + theorem multiplicity.is_greatest + theorem multiplicity.le_multiplicity_of_pow_dvd + theorem multiplicity.min_le_multiplicity_add + theorem multiplicity.multiplicity_eq_zero_of_not_dvd + theorem multiplicity.multiplicity_le_multiplicity_iff + theorem multiplicity.multiplicity_self + theorem multiplicity.multiplicity_unit + theorem multiplicity.ne_zero_of_finite + theorem multiplicity.not_finite_iff_forall + theorem multiplicity.not_unit_of_finite + theorem multiplicity.one_left + theorem multiplicity.one_right + theorem multiplicity.pow + theorem multiplicity.pow_dvd_iff_le_multiplicity + theorem multiplicity.pow_dvd_of_le_multiplicity + theorem multiplicity.pow_multiplicity_dvd + theorem multiplicity.unique' + theorem multiplicity.unique + def multiplicity + theorem multiplicity_eq_zero_of_coprime 2019-01-05 14:17:10-05:00 bc96eca feat(group_theory/quotient_group): quotient_ker_equiv_range (#574) ESTIMATED CHANGES Modified algebra/group.lean Modified group_theory/quotient_group.lean 2019-01-05 14:13:47-05:00 3ff5e93 feat(data/polynomial): polynomials over a field are a normalization domain (#560) ESTIMATED CHANGES Modified data/polynomial.lean + theorem polynomial.coe_norm_unit + theorem polynomial.coeff_coe_units_zero_ne_zero + theorem polynomial.coeff_inv_units + theorem polynomial.degree_coe_units + theorem polynomial.eq_C_of_degree_eq_zero + theorem polynomial.monic_mul_norm_unit + theorem polynomial.nat_degree_coe_units 2019-01-05 14:12:49-05:00 87bf618 feat(data/polynomial): C_neg and C_sub (#561) ESTIMATED CHANGES Modified data/polynomial.lean + theorem polynomial.C_neg + theorem polynomial.C_sub 2019-01-05 14:12:25-05:00 78d0ebf feat(data/multiset): prod_hom and exists_mem_of_rel_of_mem (#562) ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.exists_mem_of_rel_of_mem + theorem multiset.prod_hom + theorem multiset.sum_hom 2019-01-05 14:11:58-05:00 4e509a8 feat(ring_theory/noetherian): irreducible_induction_on (#563) ESTIMATED CHANGES Modified ring_theory/associated.lean - theorem associates.zero_mul + theorem dvd_and_not_dvd_iff Modified ring_theory/ideals.lean + theorem ideal.span_singleton_lt_span_singleton Modified ring_theory/noetherian.lean + theorem is_noetherian_ring.exists_irreducible_factor + theorem is_noetherian_ring.irreducible_induction_on + theorem is_noetherian_ring.well_founded_dvd_not_unit 2019-01-05 14:10:24-05:00 ea0ff05 doc(category_theory): update `category_theory` documentation (#564) [ci-skip] ESTIMATED CHANGES Modified docs/theories/category_theory.md 2019-01-05 14:09:18-05:00 33df7ec feat(data/nat/enat): has_well_founded for enat (#565) ESTIMATED CHANGES Modified data/nat/enat.lean + theorem enat.coe_ne_bot + theorem enat.lt_wf + def enat.to_with_top + theorem enat.to_with_top_coe' + theorem enat.to_with_top_coe + theorem enat.to_with_top_le + theorem enat.to_with_top_lt + theorem enat.to_with_top_top' + theorem enat.to_with_top_top + theorem enat.to_with_top_zero' + theorem enat.to_with_top_zero 2019-01-05 14:06:39-05:00 4bacdf2 feat(logic/basic): inhabited_of_nonempty with instance parameter (#566) ESTIMATED CHANGES Modified logic/basic.lean 2019-01-05 14:05:50-05:00 125feb6 feat(data/multiset): forall_of_pairwise (#569) ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.forall_of_pairwise Modified data/multiset.lean + theorem multiset.forall_of_pairwise 2019-01-05 14:05:30-05:00 da6ec21 feat(algebra/group): is_conj_one_right (#570) ESTIMATED CHANGES Modified algebra/group.lean + theorem is_conj_one_left + theorem is_conj_one_right +/- theorem is_conj_symm +/- theorem is_conj_trans 2019-01-05 14:05:06-05:00 a32fa18 feat(data/finset): finset.card_eq_one (#571) ESTIMATED CHANGES Modified data/finset.lean + theorem finset.card_eq_one 2019-01-05 04:49:24-05:00 40fa9ad fix(analysis/measure_theory): fix build ESTIMATED CHANGES Modified analysis/measure_theory/lebesgue_measure.lean Modified data/real/nnreal.lean + theorem nnreal.of_real_add_of_real 2019-01-04 20:28:21-05:00 93a330e fix(data/real/cau_seq_filter): fix build ESTIMATED CHANGES Modified data/real/cau_seq_filter.lean 2019-01-04 19:43:43-05:00 19e7b1f feat(analysis/topology): Bounded continuous functions (#464) ESTIMATED CHANGES Modified algebra/group.lean + theorem neg_sub_neg Modified analysis/metric_space.lean + theorem bounded.subset + def bounded + theorem bounded_bUnion + theorem bounded_ball + theorem bounded_closed_ball + theorem bounded_empty + theorem bounded_iff_mem_bounded + theorem bounded_iff_subset_ball + theorem bounded_of_compact + theorem bounded_of_compact_space + theorem bounded_of_finite + theorem bounded_range_iff + theorem bounded_singleton + theorem bounded_union + theorem cauchy_seq_bdd + theorem cauchy_seq_iff_le_tendsto_0 + theorem closed_ball_subset_closed_ball + theorem compact_iff_closed_bounded + theorem dist_triangle4 + theorem dist_triangle4_left + theorem dist_triangle4_right + theorem mem_of_closed' +/- theorem tendsto_at_top_metric + theorem totally_bounded_of_finite_discretization Modified analysis/normed_space.lean + def normed_group.of_add_dist' + def normed_group.of_add_dist Added analysis/topology/bounded_continuous_function.lean + theorem bounded_continuous_function.abs_diff_coe_le_dist + theorem bounded_continuous_function.arzela_ascoli + theorem bounded_continuous_function.arzela_ascoli₁ + theorem bounded_continuous_function.arzela_ascoli₂ + theorem bounded_continuous_function.bounded_range + def bounded_continuous_function.cod_restrict + theorem bounded_continuous_function.coe_add + theorem bounded_continuous_function.coe_diff + theorem bounded_continuous_function.coe_le_coe_add_dist + theorem bounded_continuous_function.coe_neg + theorem bounded_continuous_function.coe_zero + def bounded_continuous_function.comp + def bounded_continuous_function.const + theorem bounded_continuous_function.continuous_comp + theorem bounded_continuous_function.continuous_eval + theorem bounded_continuous_function.continuous_evalf + theorem bounded_continuous_function.continuous_evalx + theorem bounded_continuous_function.dist_coe_le_dist + theorem bounded_continuous_function.dist_eq + theorem bounded_continuous_function.dist_le + theorem bounded_continuous_function.dist_set_exists + theorem bounded_continuous_function.dist_zero_of_empty + theorem bounded_continuous_function.equicontinuous_of_continuity_modulus + theorem bounded_continuous_function.ext + theorem bounded_continuous_function.forall_coe_zero_iff_zero + def bounded_continuous_function.mk_of_compact + def bounded_continuous_function.mk_of_discrete + theorem bounded_continuous_function.norm_coe_le_norm + theorem bounded_continuous_function.norm_def + theorem bounded_continuous_function.norm_le + def bounded_continuous_function + theorem continuous_of_lipschitz + theorem continuous_of_locally_uniform_limit_of_continuous + theorem continuous_of_uniform_limit_of_continuous Modified analysis/topology/continuity.lean + theorem compact_iff_compact_space + theorem continuous_of_discrete_topology Modified analysis/topology/uniform_space.lean + theorem totally_bounded_empty Modified data/real/ennreal.lean + theorem ennreal.coe_nonneg + theorem ennreal.coe_pos + theorem ennreal.lt_iff_exists_rat_btwn + theorem ennreal.lt_iff_exists_real_btwn Modified data/real/nnreal.lean + theorem nnreal.of_real_add - theorem nnreal.of_real_add_of_real +/- theorem nnreal.of_real_eq_zero + theorem nnreal.of_real_lt_of_real_iff' +/- theorem nnreal.of_real_lt_of_real_iff +/- theorem nnreal.of_real_of_nonpos + theorem nnreal.of_real_pos - theorem nnreal.zero_lt_of_real Modified data/set/basic.lean + theorem set.range_const_subset Modified data/set/finite.lean + theorem set.finite.of_fintype 2019-01-02 10:12:17-05:00 dcd0466 feat(analysis/topology): complete sets, minor modifications (#557) ESTIMATED CHANGES Modified analysis/limits.lean Modified analysis/metric_space.lean Modified analysis/normed_space.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean + theorem is_closed_of_closure_subset +/- theorem mem_closure_of_tendsto + theorem mem_of_closed_of_tendsto' Modified analysis/topology/topological_structures.lean - theorem Inf_of_Inf_of_monotone_of_continuous + theorem Inf_of_continuous' + theorem Inf_of_continuous - theorem Sup_of_Sup_of_monotone_of_continuous + theorem Sup_of_continuous' + theorem Sup_of_continuous + theorem ge_of_tendsto + theorem infi_of_continuous - theorem infi_of_infi_of_monotone_of_continuous +/- theorem le_of_tendsto + theorem le_of_tendsto_of_tendsto + theorem supr_of_continuous - theorem supr_of_supr_of_monotone_of_continuous Modified analysis/topology/uniform_space.lean + theorem compact_iff_totally_bounded_complete - theorem compact_of_totally_bounded_complete - theorem complete_of_compact_set - theorem complete_of_is_closed + theorem complete_space_of_is_complete_univ + theorem complete_univ + theorem is_closed_of_is_complete + def is_complete + theorem is_complete_image_iff + theorem is_complete_of_is_closed 2019-01-02 08:57:30-05:00 f59f5d5 feat(data/real/ennreal): minor additions to ennreal (#558) ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/metric_space.lean Modified data/real/ennreal.lean + theorem ennreal.add_lt_add_iff_right + theorem ennreal.add_lt_top + theorem ennreal.bit0_eq_top_iff + theorem ennreal.bit0_eq_zero_iff + theorem ennreal.bit0_inj + theorem ennreal.bit1_eq_one_iff + theorem ennreal.bit1_eq_top_iff + theorem ennreal.bit1_inj + theorem ennreal.bit1_ne_zero + theorem ennreal.coe_bit0 + theorem ennreal.coe_bit1 +/- theorem ennreal.coe_div + theorem ennreal.coe_inv +/- theorem ennreal.div_le_iff_le_mul +/- theorem ennreal.div_pos_iff + theorem ennreal.div_zero_iff + theorem ennreal.exists_inv_nat_lt + theorem ennreal.half_lt_self + theorem ennreal.half_pos - theorem ennreal.inv_coe +/- theorem ennreal.inv_eq_top +/- theorem ennreal.inv_eq_zero +/- theorem ennreal.inv_inv +/- theorem ennreal.inv_ne_top +/- theorem ennreal.inv_ne_zero + theorem ennreal.mul_eq_top + theorem ennreal.mul_eq_zero + theorem ennreal.sub_eq_zero_iff_le + theorem ennreal.zero_lt_sub_iff_lt Modified data/real/nnreal.lean +/- theorem nnreal.add_halves + theorem nnreal.half_lt_self +/- theorem nnreal.of_real_le_of_real_iff + theorem nnreal.of_real_lt_of_real_iff 2019-01-02 06:39:37-05:00 50583b9 feat(algebra/order): additional theorems on cmp ESTIMATED CHANGES Modified algebra/order.lean + theorem cmp_compares + theorem cmp_swap + theorem ordering.or_else_eq_lt + theorem ordering.swap_or_else Modified order/basic.lean + def decidable_linear_order.lift 2018-12-28 02:49:24-05:00 17d6263 refactor(category_theory): minimize the amount of universe annotations in category_theory (#552) ESTIMATED CHANGES Modified category_theory/category.lean +/- theorem category_theory.category.assoc_symm +/- def category_theory.large_category +/- def category_theory.small_category Modified category_theory/comma.lean Modified category_theory/const.lean Modified category_theory/discrete_category.lean Modified category_theory/eq_to_hom.lean Modified category_theory/equivalence.lean +/- structure category_theory.equivalence +/- def category_theory.functor.obj_preimage Modified category_theory/examples/topological_spaces.lean Modified category_theory/full_subcategory.lean Modified category_theory/fully_faithful.lean Modified category_theory/functor.lean +/- structure category_theory.functor Modified category_theory/functor_category.lean Modified category_theory/groupoid.lean +/- def category_theory.large_groupoid +/- def category_theory.small_groupoid Modified category_theory/isomorphism.lean +/- structure category_theory.iso Modified category_theory/limits/cones.lean Modified category_theory/limits/functor_category.lean +/- def category_theory.limits.functor_category_is_colimit_cocone Modified category_theory/limits/limits.lean +/- theorem category_theory.limits.colimit.map_post +/- theorem category_theory.limits.colimit.pre_map' +/- theorem category_theory.limits.colimit.pre_post +/- def category_theory.limits.is_colimit.of_faithful +/- def category_theory.limits.is_limit.of_faithful +/- theorem category_theory.limits.limit.map_post +/- theorem category_theory.limits.limit.map_pre' +/- theorem category_theory.limits.limit.pre_post Modified category_theory/limits/preserves.lean Modified category_theory/limits/types.lean Modified category_theory/natural_isomorphism.lean +/- def category_theory.functor.ulift_down_up +/- def category_theory.functor.ulift_up_down Modified category_theory/natural_transformation.lean Modified category_theory/opposites.lean Modified category_theory/pempty.lean Modified category_theory/products.lean Modified category_theory/punit.lean Modified category_theory/types.lean Modified category_theory/whiskering.lean Modified category_theory/yoneda.lean 2018-12-26 19:45:48-05:00 a71628a feat(algebra/order,...): material on orders (#554) ESTIMATED CHANGES Modified algebra/order.lean + theorem le_of_forall_le' + theorem le_of_forall_lt' Modified algebra/order_functions.lean +/- theorem le_max_iff +/- theorem le_min_iff +/- theorem lt_max_iff +/- theorem lt_min_iff +/- theorem max_le_iff +/- theorem max_lt_iff +/- theorem min_le_iff +/- theorem min_lt_iff Modified algebra/ordered_group.lean + theorem with_top.add_lt_add_iff_right + theorem with_top.add_lt_top Modified algebra/ordered_ring.lean + theorem with_top.mul_eq_top_iff Modified data/finset.lean Modified order/bounded_lattice.lean + theorem lattice.ne_bot_of_gt + theorem lattice.ne_top_of_lt Modified order/lattice.lean + theorem lattice.lt_inf_iff + theorem lattice.sup_lt_iff 2018-12-24 20:12:21-05:00 a04c7e2 feat(analysis/topology): miscellaneous topology (#484) * miscellaneous topology * C is a proper metric space * Sum of metric spaces is a def instead of instance * refactor(analysis): shorten/simplify proofs ESTIMATED CHANGES Modified analysis/complex.lean + def complex.real_prod_homeo Modified analysis/metric_space.lean + theorem closed_ball_Icc + def metric_space_sum + theorem prod.dist_eq + theorem sum.one_dist_le' + theorem sum.one_dist_le Modified analysis/real.lean Modified analysis/topology/continuity.lean - theorem compact_of_closed + theorem compact_prod - theorem compact_univ + theorem homeomorph.compact_image + theorem homeomorph.compact_preimage Modified analysis/topology/topological_space.lean + theorem compact_Union_of_compact + theorem compact_of_closed + theorem compact_union_of_compact + theorem compact_univ Modified analysis/topology/topological_structures.lean + theorem Inf_mem_closure + theorem Inf_mem_of_is_closed + theorem Inf_of_Inf_of_monotone_of_continuous + theorem Sup_mem_closure + theorem Sup_mem_of_is_closed + theorem Sup_of_Sup_of_monotone_of_continuous + theorem bdd_above_of_compact + theorem bdd_below_of_compact + theorem cInf_mem_closure + theorem cInf_mem_of_is_closed + theorem cInf_of_cInf_of_monotone_of_continuous + theorem cSup_mem_closure + theorem cSup_mem_of_is_closed + theorem cSup_of_cSup_of_monotone_of_continuous + theorem cinfi_of_cinfi_of_monotone_of_continuous + theorem csupr_of_csupr_of_monotone_of_continuous + theorem exists_forall_ge_of_compact_of_continuous + theorem exists_forall_le_of_compact_of_continuous + theorem infi_of_infi_of_monotone_of_continuous + theorem mem_closure_of_is_glb + theorem mem_closure_of_is_lub + theorem mem_of_is_glb_of_is_closed + theorem mem_of_is_lub_of_is_closed + theorem supr_of_supr_of_monotone_of_continuous Modified analysis/topology/uniform_space.lean + theorem open_of_uniformity_sum_aux + theorem sum.uniformity + def uniform_space.core.sum + theorem uniformity_sum_of_open_aux + theorem union_mem_uniformity_sum Modified data/complex/basic.lean + def complex.real_prod_equiv + theorem complex.real_prod_equiv_apply + theorem complex.real_prod_equiv_symm_im + theorem complex.real_prod_equiv_symm_re Modified data/real/basic.lean Modified data/real/nnreal.lean - theorem set.image_eq_empty Modified data/set/basic.lean + theorem set.exists_mem_of_nonempty + theorem set.image_eq_empty + theorem set.range_eq_empty + theorem set.univ_eq_empty_iff + theorem set.univ_ne_empty Modified data/set/finite.lean + theorem set.finite_univ Modified order/complete_lattice.lean + def lattice.has_Inf_to_nonempty + def lattice.has_Sup_to_nonempty Modified order/conditionally_complete_lattice.lean - theorem bdd_above_Int1 - theorem bdd_above_Int2 +/- theorem bdd_above_empty +/- theorem bdd_above_finite +/- theorem bdd_above_finite_union + theorem bdd_above_inter_left + theorem bdd_above_inter_right + theorem bdd_above_of_bdd_above_of_monotone - theorem bdd_below_Int1 - theorem bdd_below_Int2 +/- theorem bdd_below_empty +/- theorem bdd_below_finite +/- theorem bdd_below_finite_union + theorem bdd_below_inter_left + theorem bdd_below_inter_right + theorem bdd_below_of_bdd_below_of_monotone - theorem lattice.cInf_of_in_of_le + theorem lattice.cInf_of_mem_of_le - theorem lattice.cSup_of_in_of_le + theorem lattice.cSup_of_mem_of_le + theorem lattice.cinfi_le + theorem lattice.cinfi_le_cinfi + theorem lattice.csupr_le + theorem lattice.csupr_le_csupr + theorem lattice.is_glb_cInf + theorem lattice.is_lub_cSup + theorem lattice.le_cinfi + theorem lattice.le_csupr 2018-12-22 01:10:55-05:00 3eb7424 refactor(data/set/basic): remove unused hypotheses in union_inter_cancel_* (#551) ESTIMATED CHANGES Modified analysis/measure_theory/outer_measure.lean Modified data/set/basic.lean +/- theorem set.union_inter_cancel_left +/- theorem set.union_inter_cancel_right 2018-12-21 04:05:56-05:00 cdab35d fix(category_theory/punit): fix regression (#550) ESTIMATED CHANGES Modified category_theory/punit.lean + theorem category_theory.functor.of.map_app + theorem category_theory.functor.of.obj_map + theorem category_theory.functor.of.obj_obj + def category_theory.functor.of 2018-12-21 03:12:01-05:00 b11b83b feat(data/list/basic): rotate a list (#542) ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.drop_all + theorem list.drop_append_of_le_length + theorem list.length_rotate' + theorem list.length_rotate + theorem list.nth_append + theorem list.nth_concat_length: + theorem list.nth_le_append + theorem list.nth_le_repeat + theorem list.nth_le_singleton + theorem list.prod_rotate_eq_one_of_prod_eq_one + theorem list.rotate'_cons_succ + theorem list.rotate'_eq_take_append_drop + theorem list.rotate'_length + theorem list.rotate'_length_mul + theorem list.rotate'_mod + theorem list.rotate'_nil + theorem list.rotate'_rotate' + theorem list.rotate'_zero + theorem list.rotate_cons_succ + theorem list.rotate_eq_rotate' + theorem list.rotate_eq_take_append_drop + theorem list.rotate_length + theorem list.rotate_length_mul + theorem list.rotate_mod + theorem list.rotate_nil + theorem list.rotate_rotate + theorem list.rotate_zero +/- theorem list.take_all + theorem list.take_append_of_le_length Modified data/list/defs.lean + def list.rotate' + def list.rotate Modified data/nat/modeq.lean + theorem list.nth_rotate + theorem list.rotate_eq_self_iff_eq_repeat 2018-12-21 02:35:06-05:00 d7cea06 feat (ring_theory/noetherian) various lemmas (#548) ESTIMATED CHANGES Modified ring_theory/noetherian.lean + theorem is_noetherian_of_fg_of_noetherian + theorem is_noetherian_of_linear_equiv + theorem is_noetherian_of_surjective + theorem is_noetherian_pi + theorem is_noetherian_prod + theorem is_noetherian_ring_of_ring_equiv + theorem is_noetherian_ring_of_surjective + theorem is_noetherian_submodule + theorem is_noetherian_submodule_left + theorem is_noetherian_submodule_right + theorem submodule.fg_bot + theorem submodule.fg_map + theorem submodule.fg_of_fg_map_of_fg_inf_ker + theorem submodule.fg_prod + theorem submodule.fg_sup 2018-12-20 23:14:00-05:00 3762d96 feat(ring_theory/ideals): lift for quotient rings (#529) ESTIMATED CHANGES Modified ring_theory/ideals.lean + theorem ideal.ext + def ideal.is_coprime + theorem ideal.is_coprime_def + theorem ideal.is_coprime_self + theorem ideal.mem_span_pair + def ideal.quotient.lift + theorem ideal.quotient.lift_mk 2018-12-20 23:12:51-05:00 73933b7 feat(category_theory): assorted small changes from the old limits PR (#512) ESTIMATED CHANGES Modified algebra/pi_instances.lean + def pi.is_ring_hom_pi Modified category_theory/category.lean + theorem category_theory.bundled_hom_coe + theorem category_theory.category.assoc_symm Added category_theory/discrete_category.lean + theorem category_theory.discrete.functor_map_id + def category_theory.discrete.lift + def category_theory.discrete + def category_theory.functor.of_function + def category_theory.nat_trans.of_function Modified category_theory/examples/rings.lean +/- def category_theory.examples.CommRing.forget_to_CommMon + theorem category_theory.examples.CommRing_hom_coe_app - def category_theory.examples.is_comm_ring_hom Modified category_theory/examples/topological_spaces.lean - def category_theory.examples.map - def category_theory.examples.map_id - theorem category_theory.examples.map_id_obj - def category_theory.examples.map_iso - def category_theory.examples.map_iso_id + def topological_space.opens.map + def topological_space.opens.map_id + theorem topological_space.opens.map_id_obj + def topological_space.opens.map_iso + def topological_space.opens.map_iso_id Modified category_theory/functor.lean Modified category_theory/functor_category.lean Modified category_theory/limits/cones.lean Modified category_theory/limits/limits.lean + theorem category_theory.limits.colimit.desc_extend + theorem category_theory.limits.limit.lift_extend Modified category_theory/opposites.lean Modified category_theory/pempty.lean +/- def category_theory.functor.empty Modified category_theory/punit.lean - theorem category_theory.functor.of.map_app - theorem category_theory.functor.of.obj_map - theorem category_theory.functor.of.obj_obj - def category_theory.functor.of Added data/ulift.lean + theorem plift.rec.constant + theorem ulift.rec.constant Modified tactic/ext.lean + theorem plift.ext 2018-12-20 09:31:22-05:00 1854dd9 feat(group_theory/order_of_element): lemmas about card of subgroups and normalizer (#545) ESTIMATED CHANGES Modified group_theory/order_of_element.lean + theorem card_eq_card_quotient_mul_card_subgroup + theorem card_quotient_dvd_card + theorem card_subgroup_dvd_card + theorem card_trivial + theorem conj_inj + theorem mem_normalizer_fintype + theorem order_of_eq_one_iff + theorem order_of_one Modified group_theory/subgroup.lean +/- def gmultiples +/- def gpowers + def is_subgroup.normalizer + theorem is_subgroup.subset_normalizer 2018-12-20 09:30:12-05:00 95bdce8 feat(data/set/finite): card_range_of_injective (#543) ESTIMATED CHANGES Modified data/set/finite.lean + theorem set.card_range_of_injective 2018-12-20 09:29:35-05:00 0882f8e feat(data/fintype): exists_ne_of_card_gt_one (#544) ESTIMATED CHANGES Modified data/fintype.lean + theorem card_vector + theorem fintype.exists_ne_of_card_gt_one 2018-12-20 09:28:29-05:00 4335380 feat(data/vector2): vector_zero_subsingleton (#547) ESTIMATED CHANGES Modified data/vector2.lean 2018-12-20 08:15:19-05:00 402e71e feat(order/filter): tendsto_at_top_at_top (#540) ESTIMATED CHANGES Modified order/filter.lean + theorem filter.tendsto_at_top_at_top 2018-12-20 08:14:46-05:00 f64b9aa feat(data/finsupp): frange (#537) ESTIMATED CHANGES Modified data/finsupp.lean + def finsupp.frange + theorem finsupp.frange_single + theorem finsupp.mem_frange + theorem finsupp.zero_not_mem_frange 2018-12-20 08:13:39-05:00 bc21f62 feat(ring_theory/ideal_operations): correspondence under surjection (#534) ESTIMATED CHANGES Modified ring_theory/ideal_operations.lean + theorem ideal.comap_map_of_surjective + def ideal.le_order_embedding_of_surjective + def ideal.lt_order_embedding_of_surjective + theorem ideal.map_comap_of_surjective + theorem ideal.mem_image_of_mem_map_of_surjective + def ideal.order_iso_of_surjective 2018-12-20 08:12:52-05:00 f7697ce feat(data/equiv/algebra): ring_equiv (#533) ESTIMATED CHANGES Modified data/equiv/algebra.lean + structure ring_equiv 2018-12-20 08:12:00-05:00 fc90e00 feat(ring_theory/subring) various lemmas (#532) new lemmas: - is_ring_hom.is_subring_set_range - ring.in_closure.rec_on - ring.closure_mono changed: - ring.exists_list_of_mem_closure ESTIMATED CHANGES Modified ring_theory/subring.lean + theorem ring.closure_mono 2018-12-20 08:10:59-05:00 35ed7f4 feat(data/int/basic) int.cast is ring hom (#531) ESTIMATED CHANGES Modified data/int/basic.lean 2018-12-20 04:57:06-05:00 ddd1376 fix(group_theory/coset): remove bad attributes ESTIMATED CHANGES Modified group_theory/coset.lean 2018-12-20 03:40:45-05:00 caa2076 feat(command): Add `#where` command, dumping environment info (#489) The command tells you your current namespace (wherever you write it), the current `include`s, and the current `variables` which have been used at least once. ESTIMATED CHANGES Modified tactic/basic.lean Added tactic/where.lean + def where.inflate + def where.select_for_which 2018-12-18 00:51:12-05:00 293ba83 feat(category_theory/examples/topological_spaces): limits and colimits (#518) ESTIMATED CHANGES Modified category_theory/category.lean Modified category_theory/examples/topological_spaces.lean + def category_theory.examples.Top.colimit + def category_theory.examples.Top.colimit_is_colimit + def category_theory.examples.Top.limit + def category_theory.examples.Top.limit_is_limit Modified category_theory/limits/limits.lean + def category_theory.limits.is_colimit.of_faithful + def category_theory.limits.is_limit.of_faithful Modified category_theory/types.lean 2018-12-18 00:48:52-05:00 3d4297b feat(category_theory/eq_to_hom): equality of functors; more simp lemmas (#526) ESTIMATED CHANGES Added category_theory/eq_to_hom.lean + def category_theory.eq_to_hom + theorem category_theory.eq_to_hom_app + theorem category_theory.eq_to_hom_map + theorem category_theory.eq_to_hom_refl + theorem category_theory.eq_to_hom_trans + theorem category_theory.eq_to_hom_trans_assoc + theorem category_theory.eq_to_iso.hom + def category_theory.eq_to_iso + theorem category_theory.eq_to_iso_map + theorem category_theory.eq_to_iso_refl + theorem category_theory.eq_to_iso_trans + theorem category_theory.functor.congr_hom + theorem category_theory.functor.congr_obj + theorem category_theory.functor.ext Modified category_theory/examples/topological_spaces.lean Modified category_theory/isomorphism.lean - def category_theory.eq_to_hom - theorem category_theory.eq_to_hom_refl - theorem category_theory.eq_to_hom_trans - theorem category_theory.eq_to_iso.hom - def category_theory.eq_to_iso - theorem category_theory.eq_to_iso_refl - theorem category_theory.eq_to_iso_trans - theorem category_theory.functor.eq_to_iso 2018-12-18 00:45:47-05:00 76a4b15 feat(data/set/basic): make subtype_val_range a simp lemma (#524) ESTIMATED CHANGES Modified data/set/basic.lean +/- theorem set.subtype_val_range 2018-12-17 15:19:10-05:00 2bc9354 feat(data/nat/enat): extended natural numbers (#522) ESTIMATED CHANGES Added data/nat/enat.lean + theorem enat.add_top + theorem enat.coe_add + theorem enat.coe_add_get + theorem enat.coe_get + theorem enat.coe_inj + theorem enat.coe_le_coe + theorem enat.coe_lt_coe + theorem enat.coe_lt_top + theorem enat.coe_one + theorem enat.coe_zero + theorem enat.dom_of_le_some + theorem enat.get_add + theorem enat.get_le_get + theorem enat.get_one + theorem enat.get_zero + theorem enat.inf_eq_min + theorem enat.pos_iff_one_le + theorem enat.sup_eq_max + theorem enat.top_add + def enat Modified data/pfun.lean + theorem roption.get_eq_iff_eq_some + def roption.get_or_else + theorem roption.get_or_else_none + theorem roption.get_or_else_some + theorem roption.get_some + theorem roption.some_get + theorem roption.some_inj 2018-12-17 15:10:48-05:00 418c116 feat(data/polynomial): degree_map (#517) ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.prod_hom + theorem finset.sum_hom Modified algebra/group.lean + theorem inv.is_group_hom + theorem is_group_hom.to_is_monoid_hom Modified algebra/group_power.lean Modified algebra/module.lean Modified algebra/pi_instances.lean + theorem prod.fst.is_group_hom + theorem prod.fst.is_monoid_hom + theorem prod.snd.is_group_hom + theorem prod.snd.is_monoid_hom Modified analysis/topology/infinite_sum.lean Modified data/complex/basic.lean Modified data/complex/exponential.lean Modified data/dfinsupp.lean Modified data/finsupp.lean Modified data/multiset.lean Modified data/nat/cast.lean Modified data/polynomial.lean + theorem polynomial.coeff_map +/- theorem polynomial.coeff_sum + theorem polynomial.degree_map_eq + theorem polynomial.degree_map_le Modified data/real/ennreal.lean Modified data/real/nnreal.lean Modified data/zmod/quadratic_reciprocity.lean Modified linear_algebra/basic.lean Modified linear_algebra/direct_sum_module.lean 2018-12-17 14:47:05-05:00 d947a3a refactor(analysis/topology/continuity): use subtype.val_injective (#525) ESTIMATED CHANGES Modified analysis/topology/continuity.lean 2018-12-17 12:40:24-05:00 21ce531 fix(data/list): fix build ESTIMATED CHANGES Modified data/equiv/list.lean Modified data/list/sigma.lean +/- theorem list.nodupkeys_nil 2018-12-17 12:35:03-05:00 b405158 feat(tactic/explode): improve readability & support proofs using 'suffices' (#516) * improve readability & support proofs using 'suffices' * feat(tactic/explode): improve readability & support proofs using 'suffices' ESTIMATED CHANGES Modified tactic/explode.lean 2018-12-17 11:35:44-05:00 a4b699c feat(order/basic): antisymm_of_asymm ESTIMATED CHANGES Modified order/basic.lean + def antisymm_of_asymm 2018-12-17 11:35:42-05:00 ebf3008 feat(tactic/elide): hide subterms of complicated expressions ESTIMATED CHANGES Modified docs/tactics.md Modified logic/basic.lean + def hidden Modified tactic/basic.lean Added tactic/elide.lean Modified tactic/interactive.lean 2018-12-17 11:35:41-05:00 b7d74c4 feat(data/list): list.chain' for empty chains ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.chain'.iff + theorem list.chain'.iff_mem + theorem list.chain'.imp + theorem list.chain'_iff_pairwise + theorem list.chain'_map + theorem list.chain'_map_of_chain' + theorem list.chain'_of_chain'_map + theorem list.chain'_of_pairwise + theorem list.chain'_singleton + theorem list.chain'_split +/- theorem list.chain.iff_mem +/- theorem list.nodup_nil Modified data/list/defs.lean + def list.chain' Modified data/list/sort.lean +/- theorem list.sorted_nil Modified data/multiset.lean +/- theorem multiset.nodup_zero 2018-12-17 11:01:50-05:00 e9be5c1 fix(category/traversable/instances): fix build ESTIMATED CHANGES Modified category/traversable/instances.lean 2018-12-17 10:50:58-05:00 53b08c1 fix(*): untangle dependency hierarchy ESTIMATED CHANGES Modified algebra/group.lean Modified category/traversable/basic.lean Modified category/traversable/instances.lean Deleted core/data/list.lean - def list.partition_map Deleted core/default.lean Modified data/equiv/basic.lean Modified data/list/basic.lean - inductive list.forall₂ Modified data/list/defs.lean + inductive list.forall₂ + def list.partition_map Modified data/nat/basic.lean Renamed data/option.lean to data/option/basic.lean - def option.filter - def option.guard - def option.iget - theorem option.iget_some - theorem option.is_none_iff_eq_none - def option.lift_or_get - theorem option.mem_def - theorem option.mem_to_list - inductive option.rel - theorem option.some_inj - def option.to_list Added data/option/defs.lean + def option.filter + def option.guard + def option.iget + theorem option.iget_some + theorem option.is_none_iff_eq_none + def option.lift_or_get + theorem option.mem_def + theorem option.mem_to_list + inductive option.rel + theorem option.some_inj + def option.to_list Modified data/pfun.lean Modified data/prod.lean +/- theorem prod.ext Modified logic/embedding.lean Modified logic/function.lean Modified meta/rb_map.lean Modified order/bounded_lattice.lean Modified tactic/auto_cases.lean Modified tactic/chain.lean Modified tactic/ext.lean Modified tactic/interactive.lean Modified tactic/pi_instances.lean Added tactic/simpa.lean Modified tactic/squeeze.lean 2018-12-17 09:19:16-05:00 3ee1071 feat(data/polynomial): lemmas relating unit and irreducible with degree (#514) ESTIMATED CHANGES Modified algebra/ordered_group.lean + theorem with_bot.coe_one Modified algebra/ordered_ring.lean Modified data/nat/basic.lean + theorem nat.one_lt_iff_ne_zero_and_ne_one + theorem nat.with_bot.add_eq_one_iff + theorem nat.with_bot.add_eq_zero_iff Modified data/nat/prime.lean + theorem nat.prime.ne_one Modified data/polynomial.lean + theorem polynomial.X_ne_zero + theorem polynomial.coeff_X_zero + theorem polynomial.coeff_mul_X_zero + theorem polynomial.coeff_zero_eq_eval_zero + theorem polynomial.degree_eq_zero_of_is_unit + theorem polynomial.degree_pos_of_ne_zero_of_nonunit + theorem polynomial.div_by_monic_one + theorem polynomial.irreducible_of_degree_eq_one + theorem polynomial.is_unit_iff_degree_eq_zero + theorem polynomial.mod_by_monic_X + theorem polynomial.mod_by_monic_one + theorem polynomial.monic_X + theorem polynomial.nat_degree_eq_of_degree_eq_some + theorem polynomial.nat_degree_mul_eq + theorem polynomial.zero_le_degree_iff Modified data/zmod/quadratic_reciprocity.lean +/- theorem quadratic_reciprocity_aux.prod_range_p_mul_q_filter_coprime_mod_p +/- theorem zmodp.fermat_little +/- def zmodp.legendre_sym +/- theorem zmodp.legendre_sym_eq_one_or_neg_one +/- theorem zmodp.legendre_sym_eq_pow +/- theorem zmodp.prod_range_prime_erase_zero +/- theorem zmodp.quadratic_reciprocity +/- theorem zmodp.wilsons_lemma Modified ring_theory/associated.lean + theorem associates.mk_one + theorem associates.mk_pow + theorem irreducible_of_prime + theorem is_unit_int + theorem is_unit_pow + theorem nat.prime_iff_prime + theorem nat.prime_iff_prime_int + theorem not_prime_one + theorem succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul 2018-12-17 09:15:28-05:00 d4d05e3 feat(docs/extras/tactic_writing): Tactic writing tutorial (#513) ESTIMATED CHANGES Modified docs/extras.md Added docs/extras/tactic_writing.md 2018-12-17 09:14:26-05:00 e6065a7 chore(tactic/interactive): make squeeze_simp available by default (#521) ESTIMATED CHANGES Modified tactic/interactive.lean 2018-12-17 09:08:53-05:00 b140a07 chore(category_theory/limits/limits): Add missing lemmas (#520) ESTIMATED CHANGES Modified category_theory/limits/limits.lean + theorem category_theory.limits.colimit.pre_id + theorem category_theory.limits.colimit.pre_map' + theorem category_theory.limits.limit.id_pre + theorem category_theory.limits.limit.map_pre' 2018-12-17 08:59:28-05:00 218fe1f feat(category_theory/opposites): opposites of full and faithful functors (#504) ESTIMATED CHANGES Modified category_theory/opposites.lean + theorem category_theory.functor.preimage_id 2018-12-15 12:33:43-05:00 9506e6c feat(category_theory): functoriality of (co)cones (#507) ESTIMATED CHANGES Modified category_theory/limits/cones.lean + def category_theory.cocones + theorem category_theory.cocones_map + theorem category_theory.cocones_obj + def category_theory.cones + theorem category_theory.cones_map + theorem category_theory.cones_obj +/- def category_theory.functor.cocones +/- def category_theory.functor.cones Modified category_theory/limits/limits.lean + def category_theory.limits.colim_coyoneda + def category_theory.limits.lim_yoneda Modified category_theory/opposites.lean + theorem category_theory.functor.category.op_comp_app + theorem category_theory.functor.category.op_id_app 2018-12-15 12:32:06-05:00 072e1ba feat(category_theory/const): Constant functor of object from punit (#508) ESTIMATED CHANGES Modified category_theory/punit.lean + theorem category_theory.functor.of.map_app + theorem category_theory.functor.of.obj_map + theorem category_theory.functor.of.obj_obj + def category_theory.functor.of - def category_theory.functor.of_obj - theorem category_theory.functor.of_obj_obj 2018-12-15 12:31:24-05:00 b1d0501 fix(analysis/topology/topological_space): Improve the lattice structure on opens (#511) ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem topological_space.opens.gi_choice_val 2018-12-15 12:18:12-05:00 1f72be1 feat(category_theory/whiskering): simp-lemmas for unitors and associators (#505) ESTIMATED CHANGES Modified category_theory/whiskering.lean + theorem category_theory.functor.associator_hom_app + theorem category_theory.functor.associator_inv_app + theorem category_theory.functor.left_unitor_hom_app + theorem category_theory.functor.left_unitor_inv_app + theorem category_theory.functor.right_unitor_hom_app + theorem category_theory.functor.right_unitor_inv_app 2018-12-15 12:17:49-05:00 28909a8 feat(category_theory/commas): add simp-lemmas for comma categories (#503) ESTIMATED CHANGES Modified category_theory/comma.lean + theorem category_theory.comma.comp_left + theorem category_theory.comma.comp_right + def category_theory.comma.map_left_comp + theorem category_theory.comma.map_left_comp_hom_app_left + theorem category_theory.comma.map_left_comp_hom_app_right + theorem category_theory.comma.map_left_comp_inv_app_left + theorem category_theory.comma.map_left_comp_inv_app_right + def category_theory.comma.map_left_id + theorem category_theory.comma.map_left_id_hom_app_left + theorem category_theory.comma.map_left_id_hom_app_right + theorem category_theory.comma.map_left_id_inv_app_left + theorem category_theory.comma.map_left_id_inv_app_right + theorem category_theory.comma.map_left_map_left + theorem category_theory.comma.map_left_map_right + theorem category_theory.comma.map_left_obj_hom + theorem category_theory.comma.map_left_obj_left + theorem category_theory.comma.map_left_obj_right + def category_theory.comma.map_right_comp + theorem category_theory.comma.map_right_comp_hom_app_left + theorem category_theory.comma.map_right_comp_hom_app_right + theorem category_theory.comma.map_right_comp_inv_app_left + theorem category_theory.comma.map_right_comp_inv_app_right + def category_theory.comma.map_right_id + theorem category_theory.comma.map_right_id_hom_app_left + theorem category_theory.comma.map_right_id_hom_app_right + theorem category_theory.comma.map_right_id_inv_app_left + theorem category_theory.comma.map_right_id_inv_app_right + theorem category_theory.comma.map_right_map_left + theorem category_theory.comma.map_right_map_right + theorem category_theory.comma.map_right_obj_hom + theorem category_theory.comma.map_right_obj_left + theorem category_theory.comma.map_right_obj_right 2018-12-10 17:44:27-05:00 3ddfc23 fix(order/basic): define preorder.lift lt by restriction This makes it definitionally equal to `inv_image (<) f`, which appears for example in the type of `inv_image.wf`. ESTIMATED CHANGES Modified order/basic.lean 2018-12-05 12:45:33-05:00 257fd84 doc(data/list/basic): improve docstrings [ci-skip] ESTIMATED CHANGES Modified data/list/defs.lean 2018-12-05 08:55:27-05:00 b0d47ea refactor(set_theory/ordinal): minor simplifications ESTIMATED CHANGES Modified set_theory/ordinal.lean +/- theorem initial_seg.antisymm.aux +/- theorem ordinal.enum_lt 2018-12-05 08:54:06-05:00 843a1c3 fix(tactic/norm_num): uninstantiated mvars can confuse things ESTIMATED CHANGES Modified tactic/norm_num.lean 2018-12-05 08:42:51-05:00 94d9ac1 fix(finset): removing bad simp lemmas (#491) ESTIMATED CHANGES Modified algebra/big_operators.lean Modified analysis/limits.lean Modified analysis/measure_theory/outer_measure.lean Modified data/finset.lean +/- theorem finset.insert.comm + theorem finset.range_one +/- theorem finset.range_succ Modified data/nat/choose.lean Modified data/zmod/quadratic_reciprocity.lean Modified group_theory/order_of_element.lean 2018-12-02 17:36:23-05:00 5856459 fix(category_theory/limits): add subsingleton instances in preserves.lean ESTIMATED CHANGES Modified category_theory/limits/preserves.lean 2018-12-02 17:36:23-05:00 af6ee09 fix(category_theory/limits): adding Type annotations in preserves.lean ESTIMATED CHANGES Modified category_theory/limits/preserves.lean +/- def category_theory.limits.preserves_colimits +/- def category_theory.limits.preserves_colimits_of_shape +/- def category_theory.limits.preserves_limits +/- def category_theory.limits.preserves_limits_of_shape +/- def category_theory.limits.reflects_colimits +/- def category_theory.limits.reflects_colimits_of_shape +/- def category_theory.limits.reflects_limits +/- def category_theory.limits.reflects_limits_of_shape 2018-12-02 17:36:23-05:00 74b65e2 fix(category_theory/limits): change argument order on cones.precompose/whisker ESTIMATED CHANGES Modified category_theory/limits/cones.lean +/- def category_theory.limits.cocone.precompose +/- def category_theory.limits.cocone.whisker +/- def category_theory.limits.cone.postcompose +/- def category_theory.limits.cone.whisker 2018-12-02 17:36:23-05:00 4b0a82c feat(category_theory): preservation of (co)limits, (co)limits in functor categories ESTIMATED CHANGES Added category_theory/limits/functor_category.lean + theorem category_theory.limits.cocone.functor_w + theorem category_theory.limits.cone.functor_w + def category_theory.limits.evaluate_functor_category_colimit_cocone + def category_theory.limits.evaluate_functor_category_limit_cone + def category_theory.limits.functor_category_colimit_cocone + def category_theory.limits.functor_category_is_colimit_cocone + def category_theory.limits.functor_category_is_limit_cone + def category_theory.limits.functor_category_limit_cone Added category_theory/limits/preserves.lean + def category_theory.limits.preserves_colimit_of_preserves_colimit_cocone + def category_theory.limits.preserves_colimits + def category_theory.limits.preserves_colimits_of_shape + def category_theory.limits.preserves_limit_of_preserves_limit_cone + def category_theory.limits.preserves_limits + def category_theory.limits.preserves_limits_of_shape + def category_theory.limits.reflects_colimits + def category_theory.limits.reflects_colimits_of_shape + def category_theory.limits.reflects_limits + def category_theory.limits.reflects_limits_of_shape Modified category_theory/natural_transformation.lean + theorem category_theory.nat_trans.congr_app 2018-12-02 17:36:23-05:00 6267717 fix(category_theory/limits): namespaces for is_(co)limit ESTIMATED CHANGES Modified category_theory/limits/cones.lean Modified category_theory/limits/limits.lean +/- def category_theory.limits.is_colimit.desc_cocone_morphism +/- theorem category_theory.limits.is_colimit.hom_desc +/- theorem category_theory.limits.is_colimit.hom_ext +/- def category_theory.limits.is_colimit.hom_iso' +/- def category_theory.limits.is_colimit.hom_iso +/- theorem category_theory.limits.is_colimit.hom_iso_hom +/- def category_theory.limits.is_colimit.mk_cocone_morphism +/- def category_theory.limits.is_colimit.nat_iso +/- def category_theory.limits.is_colimit.of_iso_colimit +/- theorem category_theory.limits.is_colimit.uniq_cocone_morphism +/- def category_theory.limits.is_colimit.unique +/- theorem category_theory.limits.is_limit.hom_ext +/- def category_theory.limits.is_limit.hom_iso' +/- def category_theory.limits.is_limit.hom_iso +/- theorem category_theory.limits.is_limit.hom_iso_hom +/- theorem category_theory.limits.is_limit.hom_lift +/- def category_theory.limits.is_limit.lift_cone_morphism +/- def category_theory.limits.is_limit.mk_cone_morphism +/- def category_theory.limits.is_limit.nat_iso +/- def category_theory.limits.is_limit.of_iso_limit +/- theorem category_theory.limits.is_limit.uniq_cone_morphism +/- def category_theory.limits.is_limit.unique 2018-12-02 17:36:23-05:00 de4f689 feat(category_theory/limits): (co)limits, and (co)limits in Type ESTIMATED CHANGES Added category_theory/limits/limits.lean + theorem category_theory.limits.colim.ι_map + def category_theory.limits.colim + def category_theory.limits.colimit.cocone + def category_theory.limits.colimit.cocone_morphism + theorem category_theory.limits.colimit.cocone_morphism_hom + theorem category_theory.limits.colimit.cocone_ι + def category_theory.limits.colimit.desc + theorem category_theory.limits.colimit.hom_ext + def category_theory.limits.colimit.hom_iso' + def category_theory.limits.colimit.hom_iso + theorem category_theory.limits.colimit.hom_iso_hom + def category_theory.limits.colimit.is_colimit + theorem category_theory.limits.colimit.is_colimit_desc + theorem category_theory.limits.colimit.map_desc + theorem category_theory.limits.colimit.map_post + def category_theory.limits.colimit.post + theorem category_theory.limits.colimit.post_desc + theorem category_theory.limits.colimit.post_post + def category_theory.limits.colimit.pre + theorem category_theory.limits.colimit.pre_desc + theorem category_theory.limits.colimit.pre_map + theorem category_theory.limits.colimit.pre_post + theorem category_theory.limits.colimit.pre_pre + theorem category_theory.limits.colimit.w + def category_theory.limits.colimit.ι + theorem category_theory.limits.colimit.ι_cocone_morphism + theorem category_theory.limits.colimit.ι_desc + theorem category_theory.limits.colimit.ι_post + theorem category_theory.limits.colimit.ι_pre + def category_theory.limits.colimit + def category_theory.limits.has_colimits + def category_theory.limits.has_colimits_of_shape + def category_theory.limits.has_limits + def category_theory.limits.has_limits_of_shape + def category_theory.limits.is_colimit.desc_cocone_morphism + theorem category_theory.limits.is_colimit.hom_desc + theorem category_theory.limits.is_colimit.hom_ext + def category_theory.limits.is_colimit.hom_iso' + def category_theory.limits.is_colimit.hom_iso + theorem category_theory.limits.is_colimit.hom_iso_hom + def category_theory.limits.is_colimit.mk_cocone_morphism + def category_theory.limits.is_colimit.nat_iso + def category_theory.limits.is_colimit.of_iso_colimit + theorem category_theory.limits.is_colimit.uniq_cocone_morphism + def category_theory.limits.is_colimit.unique + structure category_theory.limits.is_colimit + theorem category_theory.limits.is_limit.hom_ext + def category_theory.limits.is_limit.hom_iso' + def category_theory.limits.is_limit.hom_iso + theorem category_theory.limits.is_limit.hom_iso_hom + theorem category_theory.limits.is_limit.hom_lift + def category_theory.limits.is_limit.lift_cone_morphism + def category_theory.limits.is_limit.mk_cone_morphism + def category_theory.limits.is_limit.nat_iso + def category_theory.limits.is_limit.of_iso_limit + theorem category_theory.limits.is_limit.uniq_cone_morphism + def category_theory.limits.is_limit.unique + structure category_theory.limits.is_limit + theorem category_theory.limits.lim.map_π + def category_theory.limits.lim + def category_theory.limits.limit.cone + def category_theory.limits.limit.cone_morphism + theorem category_theory.limits.limit.cone_morphism_hom + theorem category_theory.limits.limit.cone_morphism_π + theorem category_theory.limits.limit.cone_π + theorem category_theory.limits.limit.hom_ext + def category_theory.limits.limit.hom_iso' + def category_theory.limits.limit.hom_iso + theorem category_theory.limits.limit.hom_iso_hom + def category_theory.limits.limit.is_limit + theorem category_theory.limits.limit.is_limit_lift + def category_theory.limits.limit.lift + theorem category_theory.limits.limit.lift_map + theorem category_theory.limits.limit.lift_post + theorem category_theory.limits.limit.lift_pre + theorem category_theory.limits.limit.lift_π + theorem category_theory.limits.limit.map_post + theorem category_theory.limits.limit.map_pre + def category_theory.limits.limit.post + theorem category_theory.limits.limit.post_post + theorem category_theory.limits.limit.post_π + def category_theory.limits.limit.pre + theorem category_theory.limits.limit.pre_post + theorem category_theory.limits.limit.pre_pre + theorem category_theory.limits.limit.pre_π + theorem category_theory.limits.limit.w + def category_theory.limits.limit.π + def category_theory.limits.limit Added category_theory/limits/types.lean + def category_theory.limits.types.colimit + def category_theory.limits.types.colimit_is_colimit + def category_theory.limits.types.limit + def category_theory.limits.types.limit_is_limit + theorem category_theory.limits.types.types_colimit + theorem category_theory.limits.types.types_colimit_desc + theorem category_theory.limits.types.types_colimit_map + theorem category_theory.limits.types.types_colimit_pre + theorem category_theory.limits.types.types_colimit_ι + theorem category_theory.limits.types.types_limit + theorem category_theory.limits.types.types_limit_lift + theorem category_theory.limits.types.types_limit_map + theorem category_theory.limits.types.types_limit_pre + theorem category_theory.limits.types.types_limit_π 2018-12-02 17:36:23-05:00 a5e2ebe feat(category_theory/limits/cones): (co)cones on a diagram ESTIMATED CHANGES Added category_theory/limits/cones.lean + def category_theory.functor.cocones + theorem category_theory.functor.cocones_obj + def category_theory.functor.cones + theorem category_theory.functor.cones_obj + def category_theory.functor.map_cocone + def category_theory.functor.map_cocone_morphism + theorem category_theory.functor.map_cocone_ι + def category_theory.functor.map_cone + def category_theory.functor.map_cone_morphism + theorem category_theory.functor.map_cone_π + def category_theory.limits.cocone.extend + def category_theory.limits.cocone.extensions + def category_theory.limits.cocone.precompose + theorem category_theory.limits.cocone.w + def category_theory.limits.cocone.whisker + theorem category_theory.limits.cocone.whisker_ι_app + structure category_theory.limits.cocone + theorem category_theory.limits.cocone_morphism.ext + structure category_theory.limits.cocone_morphism + theorem category_theory.limits.cocones.comp.hom + def category_theory.limits.cocones.ext + def category_theory.limits.cocones.functoriality + theorem category_theory.limits.cocones.id.hom + def category_theory.limits.cone.extend + def category_theory.limits.cone.extensions + def category_theory.limits.cone.postcompose + theorem category_theory.limits.cone.w + def category_theory.limits.cone.whisker + theorem category_theory.limits.cone.whisker_π_app + structure category_theory.limits.cone + theorem category_theory.limits.cone_morphism.ext + structure category_theory.limits.cone_morphism + theorem category_theory.limits.cones.comp.hom + def category_theory.limits.cones.ext + def category_theory.limits.cones.functoriality + theorem category_theory.limits.cones.id.hom Modified category_theory/natural_isomorphism.lean - def category_theory.functor.assoc - def category_theory.functor.comp_id - def category_theory.functor.id_comp Modified category_theory/yoneda.lean + theorem category_theory.coyoneda.map_app + theorem category_theory.coyoneda.obj_map + theorem category_theory.coyoneda.obj_obj + def category_theory.coyoneda +/- def category_theory.yoneda 2018-12-02 17:36:23-05:00 68c98eb feat(category_theory/isomorphism): lemmas for manipulating isomorphisms ESTIMATED CHANGES Modified category_theory/equivalence.lean Modified category_theory/isomorphism.lean + theorem category_theory.iso.comp_inv_eq + theorem category_theory.iso.eq_comp_inv + theorem category_theory.iso.eq_inv_comp + theorem category_theory.iso.hom_inv_id_assoc + theorem category_theory.iso.inv_comp_eq + theorem category_theory.iso.inv_hom_id_assoc Modified category_theory/natural_isomorphism.lean 2018-12-02 17:36:23-05:00 382abaf feat(category_theory/const): constant functors ESTIMATED CHANGES Added category_theory/const.lean + theorem category_theory.functor.const.map_app + theorem category_theory.functor.const.obj_map + theorem category_theory.functor.const.obj_obj + def category_theory.functor.const + def category_theory.functor.const_comp + theorem category_theory.functor.const_comp_hom_app + theorem category_theory.functor.const_comp_inv_app 2018-12-02 06:41:58-05:00 51afb41 fix(category_theory/yoneda): add componentwise lemma (#480) ESTIMATED CHANGES Modified category_theory/types.lean + theorem category_theory.ulift_functor.map + def category_theory.ulift_trivial Modified category_theory/yoneda.lean + def category_theory.yoneda_sections + def category_theory.yoneda_sections_small 2018-11-29 22:13:08-05:00 2a86b06 fix(order/filter): tendsto_at_top only requires preorder not partial_order ESTIMATED CHANGES Modified order/filter.lean +/- theorem filter.tendsto_at_top 2018-11-29 17:33:38-05:00 9e6572f fix(group_theory/group_action): make is_group_action Prop ESTIMATED CHANGES Modified group_theory/group_action.lean 2018-11-28 05:03:07-05:00 1c0c39c fix(category_theory/equivalences): fixed import (and some docs, and some clumsy proofs) ESTIMATED CHANGES Modified category_theory/equivalence.lean Modified category_theory/yoneda.lean 2018-11-28 04:36:21-05:00 b02bea6 feat(category_theory/equivalence): equivalences, slice tactic (#479) ESTIMATED CHANGES Modified category_theory/category.lean Added category_theory/equivalence.lean + def category_theory.category_theory.equivalence.equivalence_of_fully_faithfully_ess_surj + def category_theory.category_theory.equivalence.ess_surj_of_equivalence + theorem category_theory.equivalence.fun_inv_map + theorem category_theory.equivalence.inv_fun_map + def category_theory.equivalence.refl + def category_theory.equivalence.symm + def category_theory.equivalence.trans + structure category_theory.equivalence + def category_theory.functor.as_equivalence + def category_theory.functor.fun_inv_id + def category_theory.functor.fun_obj_preimage_iso + def category_theory.functor.inv + def category_theory.functor.inv_fun_id + def category_theory.functor.obj_preimage + theorem category_theory.is_equivalence.fun_inv_map + theorem category_theory.is_equivalence.inv_fun_map Modified category_theory/natural_isomorphism.lean + theorem category_theory.nat_iso.hom_app_inv_app_id + theorem category_theory.nat_iso.hom_vcomp_inv + theorem category_theory.nat_iso.inv_app_hom_app_id + theorem category_theory.nat_iso.inv_vcomp_hom Added tactic/slice.lean 2018-11-28 01:31:22-05:00 131b46f feat(data/list): separate out list defs into `data.lists.defs` ESTIMATED CHANGES Modified data/list/basic.lean - inductive list.chain - theorem list.chain_cons - def list.choose - def list.choose_x - def list.concat - def list.count - def list.countp - def list.disjoint - def list.erase_dup - def list.erasep - def list.extractp - def list.find - def list.find_indexes - def list.find_indexes_aux - def list.head' - def list.indexes_of - def list.inits - def list.insert_nth - def list.inth - def list.is_infix - def list.is_prefix - def list.is_suffix - def list.last' - def list.lookmap - def list.map_head - def list.map_last - def list.modify_head - def list.modify_nth - def list.modify_nth_tail - def list.nodup - def list.of_fn - def list.of_fn_aux - def list.of_fn_nth_val - inductive list.pairwise - theorem list.pairwise_cons - def list.permutations - def list.permutations_aux.rec - def list.permutations_aux2 - def list.permutations_aux - def list.prod - def list.product - def list.pw_filter - def list.range' - def list.reduce_option - def list.revzip - def list.scanl - def list.scanr - def list.scanr_aux - def list.sections - def list.split_at - def list.sublists' - def list.sublists'_aux - def list.sublists - def list.sublists_aux - def list.sublists_aux₁ - def list.tails - def list.take' - def list.take_while - def list.tfae - def list.to_array - def list.transpose - def list.transpose_aux Added data/list/defs.lean + inductive list.chain + theorem list.chain_cons + def list.choose + def list.choose_x + def list.concat + def list.count + def list.countp + def list.disjoint + def list.erase_dup + def list.erasep + def list.extractp + def list.find + def list.find_indexes + def list.find_indexes_aux + def list.head' + def list.indexes_of + def list.inits + def list.insert_nth + def list.inth + def list.is_infix + def list.is_prefix + def list.is_suffix + def list.last' + def list.lookmap + def list.map_head + def list.map_last + def list.modify_head + def list.modify_nth + def list.modify_nth_tail + def list.nodup + def list.of_fn + def list.of_fn_aux + def list.of_fn_nth_val + inductive list.pairwise + theorem list.pairwise_cons + def list.permutations + def list.permutations_aux.rec + def list.permutations_aux2 + def list.permutations_aux + def list.prod + def list.product + def list.pw_filter + def list.range' + def list.reduce_option + def list.revzip + def list.scanl + def list.scanr + def list.scanr_aux + def list.sections + def list.split_at + def list.sublists' + def list.sublists'_aux + def list.sublists + def list.sublists_aux + def list.sublists_aux₁ + def list.tails + def list.take' + def list.take_while + def list.tfae + def list.to_array + def list.transpose + def list.transpose_aux 2018-11-27 05:19:28-05:00 98eacf8 feat(tactic/basic,tactic/interactive): generalize use tactic (#497) ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/interactive.lean 2018-11-24 03:58:50-05:00 452c9a2 feat(data/polynomial): nat_degree_comp (#477) ESTIMATED CHANGES Modified algebra/group_power.lean + theorem add_monoid.smul_le_smul + theorem add_monoid.smul_le_smul_of_le_right + theorem with_bot.coe_smul Modified algebra/ordered_group.lean + theorem with_bot.coe_zero +/- theorem with_top.coe_add Modified data/polynomial.lean + theorem polynomial.coeff_comp_degree_mul_degree + theorem polynomial.leading_coeff_comp + theorem polynomial.nat_degree_comp + theorem polynomial.nat_degree_comp_le + theorem polynomial.nat_degree_one + theorem polynomial.nat_degree_pow_eq' + theorem polynomial.nat_degree_pow_eq 2018-11-24 03:57:05-05:00 e628a2c feat(data/finmap): finite maps (#487) * feat(data/list/basic): erasep * feat(data/list/basic): lookup, ndkeys * feat(data/list/sigma,alist): basic functions on association lists * feat(data/finmap): finite maps on multisets * doc(data/finmap): docstrings [ci-skip] * refactor(data/list/{alist,sigma},data/finmap): renaming * knodup -> nodupkeys * val -> entries * nd -> nodupkeys * feat(data/finmap): change keys to finset * fix(data/list/basic): fix build * fix(analysis/{emetric-space,measure-theory/integration}): fix build ESTIMATED CHANGES Modified analysis/emetric_space.lean Modified analysis/measure_theory/integration.lean Added data/finmap.lean + def alist.to_finmap + theorem alist.to_finmap_entries + theorem alist.to_finmap_eq + theorem finmap.empty_to_finmap + def finmap.erase + theorem finmap.erase_to_finmap + theorem finmap.ext + def finmap.extract + theorem finmap.extract_eq_lookup_erase + def finmap.foldl + theorem finmap.induction_on + def finmap.insert + theorem finmap.insert_entries_of_neg + theorem finmap.insert_of_pos + theorem finmap.insert_to_finmap + def finmap.keys + theorem finmap.keys_empty + theorem finmap.keys_erase + theorem finmap.keys_erase_to_finset + theorem finmap.keys_ext + theorem finmap.keys_replace + theorem finmap.keys_singleton + theorem finmap.keys_val + def finmap.lift_on + theorem finmap.lift_on_to_finmap + def finmap.lookup + theorem finmap.lookup_is_some + theorem finmap.lookup_to_finmap + theorem finmap.mem_def + theorem finmap.mem_erase + theorem finmap.mem_insert + theorem finmap.mem_keys + theorem finmap.mem_replace + theorem finmap.mem_to_finmap + theorem finmap.not_mem_empty + theorem finmap.not_mem_empty_entries + def finmap.replace + theorem finmap.replace_to_finmap + def finmap.singleton + structure finmap + theorem multiset.coe_nodupkeys + def multiset.nodupkeys Added data/list/alist.lean + def alist.erase + theorem alist.ext + def alist.extract + theorem alist.extract_eq_lookup_erase + def alist.foldl + def alist.insert + theorem alist.insert_entries_of_neg + theorem alist.insert_of_pos + def alist.keys + theorem alist.keys_empty + theorem alist.keys_erase + theorem alist.keys_insert + theorem alist.keys_nodup + theorem alist.keys_replace + theorem alist.keys_singleton + def alist.lookup + theorem alist.lookup_is_some + theorem alist.mem_def + theorem alist.mem_erase + theorem alist.mem_insert + theorem alist.mem_keys + theorem alist.mem_of_perm + theorem alist.mem_replace + theorem alist.not_mem_empty + theorem alist.not_mem_empty_entries + theorem alist.perm_erase + theorem alist.perm_insert + theorem alist.perm_lookup + theorem alist.perm_replace + def alist.replace + def alist.singleton + structure alist Modified data/list/basic.lean +/- theorem list.erase_append_left +/- theorem list.erase_append_right + theorem list.erase_eq_erasep +/- theorem list.erase_sublist_erase + def list.erasep + theorem list.erasep_append_left + theorem list.erasep_append_right + theorem list.erasep_cons + theorem list.erasep_cons_of_neg + theorem list.erasep_cons_of_pos + theorem list.erasep_map + theorem list.erasep_nil + theorem list.erasep_of_forall_not + theorem list.erasep_sublist + theorem list.erasep_sublist_erasep + theorem list.erasep_subset + theorem list.exists_of_erasep + theorem list.exists_or_eq_self_of_erasep + def list.extractp + theorem list.extractp_eq_find_erasep + theorem list.forall_of_forall_of_pairwise + theorem list.length_erasep_of_mem + theorem list.length_lookmap + def list.lookmap + theorem list.lookmap_congr + theorem list.lookmap_cons_none + theorem list.lookmap_cons_some + theorem list.lookmap_id' + theorem list.lookmap_map_eq + theorem list.lookmap_nil + theorem list.lookmap_none + theorem list.lookmap_of_forall_not + theorem list.lookmap_some +/- theorem list.map_erase + theorem list.mem_erasep_of_neg + theorem list.mem_of_mem_erasep + theorem list.nodup_repeat Modified data/list/perm.lean + theorem list.perm.swap' + theorem list.perm_erasep + theorem list.perm_lookmap + theorem list.perm_option_to_list Added data/list/sigma.lean + theorem list.head_lookup_all + def list.kerase + theorem list.kerase_map_fst + theorem list.kerase_nodupkeys + theorem list.kerase_sublist + def list.kextract + theorem list.kextract_eq_lookup_kerase + def list.kreplace + theorem list.kreplace_map_fst + theorem list.kreplace_nodupkeys + theorem list.kreplace_of_forall_not + theorem list.kreplace_self + def list.lookup + def list.lookup_all + theorem list.lookup_all_cons_eq + theorem list.lookup_all_cons_ne + theorem list.lookup_all_eq_lookup + theorem list.lookup_all_eq_nil + theorem list.lookup_all_length_le_one + theorem list.lookup_all_nil + theorem list.lookup_all_nodup + theorem list.lookup_all_sublist + theorem list.lookup_cons_eq + theorem list.lookup_cons_ne + theorem list.lookup_eq_none + theorem list.lookup_is_some + theorem list.lookup_nil + theorem list.map_lookup_eq_find + theorem list.mem_lookup_all + theorem list.mem_lookup_iff + theorem list.nodup_enum_map_fst + theorem list.nodup_of_nodupkeys + theorem list.nodupkeys.eq_of_fst_eq + theorem list.nodupkeys.eq_of_mk_mem + def list.nodupkeys + theorem list.nodupkeys_cons + theorem list.nodupkeys_iff_pairwise + theorem list.nodupkeys_join + theorem list.nodupkeys_nil + theorem list.nodupkeys_of_sublist + theorem list.nodupkeys_singleton + theorem list.of_mem_lookup + theorem list.perm_kerase + theorem list.perm_kreplace + theorem list.perm_lookup + theorem list.perm_lookup_all + theorem list.perm_nodupkeys Modified data/option.lean +/- theorem option.ext Modified logic/basic.lean + theorem congr_arg_heq 2018-11-24 03:56:32-05:00 e19cd0f fix(*): adding a few @[simp] attributes (#492) * some additional simp lemmas * nat.add_sub_cancel ESTIMATED CHANGES Modified data/multiset.lean +/- theorem multiset.add_sub_cancel +/- theorem multiset.add_sub_cancel_left Modified data/nat/basic.lean Modified data/rat.lean +/- theorem rat.cast_pow Modified number_theory/pell.lean 2018-11-24 03:53:52-05:00 beff80a feat(category_theory): preliminaries for limits (#488) * style(category_theory): avoid long lines * style(category_theory): rename embedding -> fully_faithful * feat(category_theory/opposites): opposite of a functor * style(category_theory/yoneda): minor changes * make category argument implicit * reverse order of arguments in yoneda_lemma * avoid long lines * feat(category_theory/functor_category): functor.flip * feat(category_theory/isomorphism): eq_to_hom * feat(category_theory/comma): comma categories * feat(category_theory): pempty, punit categories * feat(category_theory/products): add curried evaluation bifunctor It will be used later, to prove that (co)limits in diagram categories are computed pointwise. * fixing order of definitions in opposites * constructing fully_faithful instances ESTIMATED CHANGES Modified category_theory/category.lean +/- theorem category_theory.concrete_category_comp +/- theorem category_theory.concrete_category_id Added category_theory/comma.lean + def category_theory.comma.fst + theorem category_theory.comma.fst_map + theorem category_theory.comma.fst_obj + def category_theory.comma.map_left + def category_theory.comma.map_right + def category_theory.comma.nat_trans + def category_theory.comma.snd + theorem category_theory.comma.snd_map + theorem category_theory.comma.snd_obj + structure category_theory.comma + theorem category_theory.comma_morphism.ext + structure category_theory.comma_morphism Modified category_theory/examples/monoids.lean +/- def category_theory.examples.CommMon.forget_to_Mon Modified category_theory/examples/rings.lean Modified category_theory/examples/topological_spaces.lean Modified category_theory/full_subcategory.lean - def category_theory.full_subcategory_embedding + def category_theory.full_subcategory_inclusion Renamed category_theory/embedding.lean to category_theory/fully_faithful.lean +/- theorem category_theory.functor.image_preimage +/- def category_theory.functor.preimage +/- theorem category_theory.preimage_iso_hom +/- theorem category_theory.preimage_iso_inv Modified category_theory/functor.lean +/- def category_theory.bundled.map +/- structure category_theory.functor Modified category_theory/functor_category.lean + theorem category_theory.functor.flip_obj_map Modified category_theory/isomorphism.lean + def category_theory.eq_to_hom + theorem category_theory.eq_to_hom_refl + theorem category_theory.eq_to_hom_trans + theorem category_theory.eq_to_iso.hom +/- def category_theory.eq_to_iso +/- theorem category_theory.eq_to_iso_refl +/- theorem category_theory.eq_to_iso_trans +/- theorem category_theory.functor.eq_to_iso Modified category_theory/opposites.lean +/- theorem category_theory.functor.hom_pairing_map + theorem category_theory.functor.op_hom.map_app + theorem category_theory.functor.op_hom.obj + theorem category_theory.functor.op_inv.map_app + theorem category_theory.functor.op_inv.obj + theorem category_theory.functor.op_map + theorem category_theory.functor.op_obj - theorem category_theory.functor.opposite_map - theorem category_theory.functor.opposite_obj + theorem category_theory.functor.unop_map + theorem category_theory.functor.unop_obj + def category_theory.op_op Added category_theory/pempty.lean + def category_theory.functor.empty Modified category_theory/products.lean +/- def category_theory.evaluation + def category_theory.evaluation_uncurried +/- theorem category_theory.prod_comp + theorem category_theory.prod_comp_fst + theorem category_theory.prod_comp_snd + theorem category_theory.prod_id_fst + theorem category_theory.prod_id_snd Added category_theory/punit.lean + def category_theory.functor.of_obj + theorem category_theory.functor.of_obj_obj Modified category_theory/types.lean Modified category_theory/yoneda.lean +/- theorem category_theory.yoneda.map_app +/- theorem category_theory.yoneda.naturality +/- theorem category_theory.yoneda.obj_map +/- theorem category_theory.yoneda.obj_map_id +/- theorem category_theory.yoneda.obj_obj +/- def category_theory.yoneda_evaluation +/- def category_theory.yoneda_lemma +/- def category_theory.yoneda_pairing Modified docs/theories/category_theory.md 2018-11-22 23:51:18-05:00 de8985c fix(finsupp): remove superfluous typeclass argument (#490) ESTIMATED CHANGES Modified data/finsupp.lean +/- theorem finsupp.filter_pos_add_filter_neg 2018-11-21 09:56:05-05:00 e793967 feat(tactic/interactive): add use tactic (#486) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean 2018-11-21 05:53:45-05:00 0d56447 fix(tactic/linarith): nat preprocessing was rejecting negated hypotheses (#485) ESTIMATED CHANGES Modified tactic/linarith.lean Modified tests/linarith.lean 2018-11-19 16:03:29-05:00 bfe7318 * feat(tactic/mono): new mono and ac_mono tactics (#85) * feat(tactic/mono): new mono and ac_mono tactics * docs(tactic/mono): improve explanation, examples and syntax * feat(tactic/mono): cache the list of mono lemma to facilitate matching * fix(tactic/mono): fix conflict with `has_lt` * update mathlib * move lemmas from ordered ring to monotonicity * rename `monotonic` attribute to `mono` * address PR comments * fix build ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/order.lean + theorem le_implies_le_of_le_of_le Modified algebra/order_functions.lean + theorem abs_le_abs Modified algebra/ordered_group.lean Modified data/list/basic.lean Modified data/option.lean +/- theorem option.is_none_iff_eq_none + theorem option.not_is_some Modified data/set/disjointed.lean Modified data/set/lattice.lean Modified docs/tactics.md Modified logic/basic.lean + theorem imp_imp_imp Modified meta/rb_map.lean Modified order/bounded_lattice.lean +/- theorem with_bot.some_lt_some Modified tactic/basic.lean Modified tactic/default.lean Modified tactic/interactive.lean Added tactic/monotonicity/basic.lean + def tactic.interactive.last_two + structure tactic.interactive.mono_cfg + def tactic.interactive.mono_key + inductive tactic.interactive.mono_selection Added tactic/monotonicity/default.lean Added tactic/monotonicity/interactive.lean + theorem tactic.interactive.apply_rel + def tactic.interactive.list.minimum_on + inductive tactic.interactive.rep_arity Added tactic/monotonicity/lemmas.lean + theorem gt_of_mul_lt_mul_neg_right + theorem mul_mono_nonneg + theorem mul_mono_nonpos + theorem nat.sub_mono_left_strict + theorem nat.sub_mono_right_strict Modified tactic/norm_num.lean Added tests/monotonicity.lean + def P + theorem P_mono + def Q + theorem Q_mono + theorem bar_bar'' + theorem bar_bar' + theorem bar_bar + def list.le' + theorem list.le_refl + theorem list.le_trans + theorem list_le_mono_left + theorem list_le_mono_right Added tests/monotonicity/test_cases.lean 2018-11-17 21:37:06-05:00 8c385bc feat(category_theory): associator and unitors for functors (#478) also check pentagon and triangle ESTIMATED CHANGES Modified category_theory/whiskering.lean + def category_theory.functor.associator + def category_theory.functor.left_unitor + theorem category_theory.functor.pentagon + def category_theory.functor.right_unitor + theorem category_theory.functor.triangle 2018-11-16 19:49:32-05:00 1c60f5b fix(ring_theory/subring): unnecessary classical (#482) ESTIMATED CHANGES Modified ring_theory/subring.lean 2018-11-15 23:08:53+01:00 47b3477 feat(category_theory/whiskering): more whiskering lemmas ESTIMATED CHANGES Modified category_theory/whiskering.lean + theorem category_theory.whisker_left_id + theorem category_theory.whisker_right_id 2018-11-15 23:02:43+01:00 c834715 style(category_theory/natural_transformation): fix hcomp/vcomp notation (#470) ESTIMATED CHANGES Modified category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.vcomp_assoc Modified category_theory/whiskering.lean 2018-11-15 15:29:36-05:00 fce8e7c refactor(algebra/euclidean_domain): euclidean_domain extends nonzero_comm_ring (#476) The euclidean domain axioms imply integral domain, given `nonzero_comm_ring`. Therefore it should extend `nonzero_comm_ring` instead, and an `integral_domain` instance is proven for Euclidean domains. ESTIMATED CHANGES Modified algebra/euclidean_domain.lean 2018-11-14 20:17:14-05:00 c7c0d2a fix(analysis/topology/topological_structures): remove useless decidability assumption (#475) ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean 2018-11-14 15:24:47+01:00 baf59c8 refactor(order/complete_lattice): define supr and infi with range (#474) ESTIMATED CHANGES Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/continuity.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/uniform_space.lean Modified data/set/lattice.lean Modified linear_algebra/basic.lean Modified order/complete_lattice.lean +/- theorem lattice.Inf_range +/- theorem lattice.Sup_range +/- def lattice.infi +/- def lattice.supr Modified order/filter.lean 2018-11-13 18:48:00+01:00 291015d fix(tactic/basic): use `lean.parser.of_tactic'` instead of builtin ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/explode.lean Modified tests/tactics.lean 2018-11-13 18:45:11+01:00 3e78b85 refactor(order/complete_lattice): make supr and infi available in has_Sup and has_Inf (#472) ESTIMATED CHANGES Modified linear_algebra/lc.lean Modified order/complete_lattice.lean +/- def lattice.infi +/- theorem lattice.infi_congr_Prop +/- def lattice.supr +/- theorem lattice.supr_congr_Prop 2018-11-10 18:16:37+01:00 4a013fb feat(analysis): sequential completeness ESTIMATED CHANGES Modified analysis/metric_space.lean + theorem cauchy_seq_metric' + theorem cauchy_seq_metric + theorem continuous_topo_metric +/- theorem exists_delta_of_continuous + theorem tendsto_at_top_metric + theorem tendsto_nhds_topo_metric Modified analysis/topology/uniform_space.lean + def cauchy_seq + theorem cauchy_seq_tendsto_of_complete Modified data/real/cau_seq_filter.lean - theorem cau_filter_lim_spec + theorem cau_seq_iff_cauchy_seq - theorem cau_seq_of_cau_filter_mem_set_seq +/- theorem cauchy_of_filter_cauchy + theorem complete_of_cauchy_seq_tendsto +/- theorem filter_cauchy_of_cauchy - theorem is_cau_seq_of_dist_tendsto_0 - theorem le_nhds_cau_filter_lim - theorem mono_of_mono_succ - theorem seq_of_cau_filter_is_cauchy' - theorem seq_of_cau_filter_is_cauchy - theorem seq_of_cau_filter_mem_set_seq + theorem sequentially_complete.cauchy_seq_of_dist_tendsto_0 + theorem sequentially_complete.le_nhds_cau_filter_lim + theorem sequentially_complete.mono_of_mono_succ + theorem sequentially_complete.seq_of_cau_filter_is_cauchy' + theorem sequentially_complete.seq_of_cau_filter_is_cauchy + theorem sequentially_complete.seq_of_cau_filter_mem_set_seq + def sequentially_complete.set_seq_of_cau_filter + theorem sequentially_complete.set_seq_of_cau_filter_inhabited + theorem sequentially_complete.set_seq_of_cau_filter_mem_sets + theorem sequentially_complete.set_seq_of_cau_filter_monotone' + theorem sequentially_complete.set_seq_of_cau_filter_monotone + theorem sequentially_complete.set_seq_of_cau_filter_spec + theorem sequentially_complete.tendsto_div - def set_seq_of_cau_filter - theorem set_seq_of_cau_filter_inhabited - theorem set_seq_of_cau_filter_mem_sets - theorem set_seq_of_cau_filter_monotone' - theorem set_seq_of_cau_filter_monotone - theorem set_seq_of_cau_filter_spec - theorem tendsto_div +/- theorem tendsto_limit 2018-11-10 17:25:26+01:00 b83fe1e feat(analysis): metric spaces are first countable ESTIMATED CHANGES Modified analysis/metric_space.lean 2018-11-09 13:51:33+01:00 891dfbb chore(*): clean up uses of zorn ESTIMATED CHANGES Modified analysis/metric_space.lean Modified analysis/topology/topological_space.lean Modified linear_algebra/basic.lean Modified linear_algebra/basis.lean Modified logic/schroeder_bernstein.lean Modified order/order_iso.lean Modified order/zorn.lean +/- theorem zorn.zorn_partial_order₀ Modified ring_theory/ideal_operations.lean Modified ring_theory/ideals.lean 2018-11-09 10:43:01+01:00 4fc67f8 feat(data/fintype): add choose_unique and construct inverses to bijections (#421) ESTIMATED CHANGES Modified data/finset.lean + def finset.choose + theorem finset.choose_mem + theorem finset.choose_property + theorem finset.choose_spec + def finset.choose_x Modified data/fintype.lean + def fintype.bij_inv + theorem fintype.bijective_bij_inv + def fintype.choose + theorem fintype.choose_spec + def fintype.choose_x + theorem fintype.left_inverse_bij_inv + theorem fintype.right_inverse_bij_inv Modified data/list/basic.lean + def list.choose + theorem list.choose_mem + theorem list.choose_property + theorem list.choose_spec + def list.choose_x Modified data/multiset.lean + def multiset.choose + theorem multiset.choose_mem + theorem multiset.choose_property + theorem multiset.choose_spec + def multiset.choose_x 2018-11-09 10:22:08+01:00 9f5099e refactor(analysis): add uniform_embedding_comap ESTIMATED CHANGES Modified analysis/emetric_space.lean - theorem emetric_space.induced_uniform_embedding Modified analysis/metric_space.lean - theorem metric_space.induced_uniform_embedding Modified analysis/real.lean Modified analysis/topology/uniform_space.lean + theorem uniform_embedding_comap 2018-11-09 10:22:08+01:00 6273837 feat(analysis): add emetric spaces ESTIMATED CHANGES Modified algebra/ordered_ring.lean + theorem with_top.coe_nat + theorem with_top.nat_ne_top + theorem with_top.top_ne_nat Added analysis/emetric_space.lean + theorem emetric_space.cauchy_of_emetric + theorem emetric_space.edist_eq_zero + theorem emetric_space.edist_mem_uniformity + theorem emetric_space.edist_triangle_left + theorem emetric_space.edist_triangle_right + theorem emetric_space.eq_of_forall_edist_le + def emetric_space.induced + theorem emetric_space.induced_uniform_embedding + theorem emetric_space.mem_uniformity_edist + def emetric_space.replace_uniformity + theorem emetric_space.subtype.edist_eq + theorem emetric_space.uniform_continuous_of_emetric + theorem emetric_space.uniform_embedding_of_emetric + def emetric_space.uniform_space_of_edist + theorem emetric_space.uniformity_edist'' + theorem emetric_space.uniformity_edist' + theorem emetric_space.zero_eq_edist + theorem uniformity_dist_of_mem_uniformity Modified analysis/ennreal.lean Modified analysis/metric_space.lean - theorem coe_dist + theorem dist_eq_edist + theorem dist_eq_nndist + theorem edist_dist + theorem edist_eq_dist + theorem edist_eq_nndist + theorem edist_ne_top + theorem mem_uniformity_dist_edist + theorem nndist_eq_dist + theorem nndist_eq_edist - theorem uniformity_dist_of_mem_uniformity + theorem uniformity_edist' + theorem uniformity_edist Modified data/complex/exponential.lean Modified data/finset.lean + theorem finset.comp_inf_eq_inf_comp + theorem finset.comp_sup_eq_sup_comp + theorem finset.lt_inf + theorem finset.sup_lt Modified data/nat/cast.lean +/- theorem nat.cast_pos Modified data/real/basic.lean Modified data/real/cau_seq_filter.lean Modified data/real/ennreal.lean + theorem ennreal.add_halves + theorem ennreal.add_lt_add + theorem ennreal.coe_div +/- theorem ennreal.coe_nat + theorem ennreal.div_add_div_same + theorem ennreal.div_pos_iff + theorem ennreal.div_self + theorem ennreal.nat_ne_top + theorem ennreal.to_nnreal_eq_zero_iff + theorem ennreal.top_ne_nat + theorem ennreal.zero_to_nnreal Modified data/real/nnreal.lean + theorem nnreal.add_halves + theorem nnreal.div_add_div_same + theorem nnreal.of_real_eq_zero Modified order/bounded_lattice.lean + theorem lattice.bot_lt_iff_ne_bot + theorem lattice.lt_top_iff_ne_top 2018-11-09 09:39:52+01:00 ff8bd5b fix(data/multiset): remove unused argument from `range_zero` (#466) ESTIMATED CHANGES Modified data/multiset.lean +/- theorem multiset.range_zero 2018-11-08 10:16:03+01:00 b0564b2 feat(category_theory): propose removing coercions from category_theory/ (#463) ESTIMATED CHANGES Modified category_theory/embedding.lean +/- theorem category_theory.functor.image_preimage +/- def category_theory.functor.preimage +/- def category_theory.preimage_iso - theorem category_theory.preimage_iso_coe + theorem category_theory.preimage_iso_hom + theorem category_theory.preimage_iso_inv - theorem category_theory.preimage_iso_symm_coe Modified category_theory/examples/topological_spaces.lean +/- theorem category_theory.examples.map_id_obj Modified category_theory/full_subcategory.lean +/- def category_theory.full_subcategory_embedding Modified category_theory/functor.lean +/- theorem category_theory.functor.comp_obj +/- theorem category_theory.functor.id_obj - def category_theory.functor.map - theorem category_theory.functor.map_comp - theorem category_theory.functor.map_id - theorem category_theory.functor.mk_map - theorem category_theory.functor.mk_obj - theorem category_theory.functor.obj_eq_coe Modified category_theory/functor_category.lean +/- theorem category_theory.functor.category.comp_app +/- theorem category_theory.functor.category.id_app +/- theorem category_theory.functor.category.nat_trans.app_naturality +/- theorem category_theory.functor.category.nat_trans.naturality_app Modified category_theory/isomorphism.lean +/- def category_theory.functor.on_iso +/- theorem category_theory.functor.on_iso_hom +/- theorem category_theory.functor.on_iso_inv - theorem category_theory.iso.hom_eq_coe - theorem category_theory.iso.hom_inv_id - theorem category_theory.iso.inv_eq_coe - theorem category_theory.iso.inv_hom_id - theorem category_theory.iso.refl_coe + theorem category_theory.iso.refl_hom + theorem category_theory.iso.refl_inv +/- theorem category_theory.iso.refl_symm - theorem category_theory.iso.refl_symm_coe + theorem category_theory.iso.symm_hom + theorem category_theory.iso.symm_inv - theorem category_theory.iso.trans_coe + theorem category_theory.iso.trans_hom + theorem category_theory.iso.trans_inv +/- theorem category_theory.iso.trans_symm - theorem category_theory.iso.trans_symm_coe Modified category_theory/natural_isomorphism.lean +/- def category_theory.functor.assoc +/- def category_theory.functor.comp_id +/- def category_theory.functor.id_comp +/- def category_theory.nat_iso.app + theorem category_theory.nat_iso.app_hom + theorem category_theory.nat_iso.app_inv +/- theorem category_theory.nat_iso.comp_app - theorem category_theory.nat_iso.hom_eq_coe - theorem category_theory.nat_iso.inv_eq_symm_coe - theorem category_theory.nat_iso.mk_app' - theorem category_theory.nat_iso.mk_app +/- theorem category_theory.nat_iso.naturality_1 +/- theorem category_theory.nat_iso.naturality_2 +/- def category_theory.nat_iso.of_components.app +/- def category_theory.nat_iso.of_components.hom_app +/- def category_theory.nat_iso.of_components.inv_app +/- def category_theory.nat_iso.of_components Modified category_theory/natural_transformation.lean - theorem category_theory.nat_trans.app_eq_coe +/- theorem category_theory.nat_trans.exchange +/- theorem category_theory.nat_trans.ext +/- theorem category_theory.nat_trans.hcomp_app +/- theorem category_theory.nat_trans.id_app - theorem category_theory.nat_trans.mk_app - theorem category_theory.nat_trans.naturality +/- theorem category_theory.nat_trans.vcomp_app Modified category_theory/opposites.lean +/- theorem category_theory.functor.hom_obj +/- theorem category_theory.functor.opposite_obj Modified category_theory/products.lean +/- def category_theory.evaluation +/- theorem category_theory.functor.prod_map +/- theorem category_theory.functor.prod_obj +/- theorem category_theory.nat_trans.prod_app Modified category_theory/types.lean +/- def category_theory.forget +/- theorem category_theory.functor_to_types.hcomp +/- theorem category_theory.functor_to_types.map_comp +/- theorem category_theory.functor_to_types.map_id +/- theorem category_theory.functor_to_types.naturality +/- theorem category_theory.functor_to_types.vcomp - theorem category_theory.types.iso_mk_coe Modified category_theory/whiskering.lean +/- theorem category_theory.whisker_left.app +/- theorem category_theory.whisker_left_vcomp +/- def category_theory.whisker_right +/- theorem category_theory.whisker_right_vcomp +/- def category_theory.whiskering_left Modified category_theory/yoneda.lean +/- theorem category_theory.yoneda.map_app +/- theorem category_theory.yoneda.naturality +/- theorem category_theory.yoneda.obj_map +/- theorem category_theory.yoneda.obj_map_id +/- theorem category_theory.yoneda.obj_obj +/- def category_theory.yoneda +/- def category_theory.yoneda_evaluation +/- def category_theory.yoneda_lemma +/- def category_theory.yoneda_pairing Modified docs/theories/category_theory.md 2018-11-08 09:29:40+01:00 2f38ed7 feat(ring_theory/ideal_operations): define ideal operations (multiplication and radical) (#462) ESTIMATED CHANGES Modified group_theory/free_abelian_group.lean Modified linear_algebra/basic.lean + theorem submodule.mem_Sup_of_directed + theorem submodule.mem_map_of_mem Modified linear_algebra/tensor_product.lean Modified order/order_iso.lean Modified order/zorn.lean + theorem zorn.zorn_partial_order₀ Added ring_theory/ideal_operations.lean + theorem ideal.add_eq_sup + theorem ideal.bot_mul + def ideal.comap + theorem ideal.comap_inf + theorem ideal.comap_mono + theorem ideal.comap_ne_top + theorem ideal.comap_radical + theorem ideal.comap_top + theorem ideal.is_prime.radical + theorem ideal.is_prime.radical_le_iff + theorem ideal.le_comap_mul + theorem ideal.le_comap_sup + theorem ideal.le_radical + def ideal.map + theorem ideal.map_bot + theorem ideal.map_inf_le + theorem ideal.map_le_iff_le_comap + theorem ideal.map_mono + theorem ideal.map_mul + theorem ideal.map_radical_le + theorem ideal.map_sup + theorem ideal.map_top + theorem ideal.mem_comap + theorem ideal.mem_map_of_mem + theorem ideal.mul_bot + theorem ideal.mul_eq_inf_of_coprime + theorem ideal.mul_le + theorem ideal.mul_le_inf + theorem ideal.mul_mem_mul + theorem ideal.mul_mem_mul_rev + theorem ideal.mul_mono + theorem ideal.mul_mono_left + theorem ideal.mul_mono_right + theorem ideal.mul_sup + theorem ideal.mul_top + theorem ideal.one_eq_top + def ideal.radical + theorem ideal.radical_eq_Inf + theorem ideal.radical_eq_top + theorem ideal.radical_idem + theorem ideal.radical_inf + theorem ideal.radical_mono + theorem ideal.radical_mul + theorem ideal.radical_pow + theorem ideal.radical_sup + theorem ideal.radical_top + theorem ideal.span_mul_span + theorem ideal.sup_mul + theorem ideal.top_mul + theorem ideal.zero_eq_bot + theorem submodule.add_eq_sup + def submodule.annihilator + theorem submodule.annihilator_bot + theorem submodule.annihilator_eq_top_iff + theorem submodule.annihilator_mono + theorem submodule.annihilator_supr + theorem submodule.bot_smul + def submodule.colon + theorem submodule.colon_mono + theorem submodule.infi_colon_supr + theorem submodule.mem_annihilator' + theorem submodule.mem_annihilator + theorem submodule.mem_colon' + theorem submodule.mem_colon + theorem submodule.smul_assoc + theorem submodule.smul_bot + theorem submodule.smul_induction_on + theorem submodule.smul_le + theorem submodule.smul_le_right + theorem submodule.smul_mem_smul + theorem submodule.smul_mono + theorem submodule.smul_mono_left + theorem submodule.smul_mono_right + theorem submodule.smul_sup + theorem submodule.span_smul_span + theorem submodule.sup_smul + theorem submodule.top_smul + theorem submodule.zero_eq_bot Modified ring_theory/ideals.lean - def ideal.comap - theorem ideal.comap_ne_top + theorem ideal.is_prime.mem_of_pow_mem - theorem ideal.mem_comap 2018-11-08 09:28:27+01:00 41e8eb3 feat(ring_theory/localization): quotient ring of integral domain is discrete field ESTIMATED CHANGES Modified ring_theory/localization.lean +/- def localization.quotient_ring.field.of_integral_domain 2018-11-06 12:40:58+01:00 89431cf feat(linear_algebra): direct sum ESTIMATED CHANGES Added data/dfinsupp.lean + def decidable_zero_symm + theorem dfinsupp.add_apply + theorem dfinsupp.eq_mk_support + def dfinsupp.erase + theorem dfinsupp.erase_add_single + theorem dfinsupp.erase_apply + theorem dfinsupp.erase_def + theorem dfinsupp.erase_ne + theorem dfinsupp.erase_same + theorem dfinsupp.ext + def dfinsupp.filter + theorem dfinsupp.filter_apply + theorem dfinsupp.filter_apply_neg + theorem dfinsupp.filter_apply_pos + theorem dfinsupp.filter_def + theorem dfinsupp.filter_pos_add_filter_neg + theorem dfinsupp.finite_supp + theorem dfinsupp.induction₂ + def dfinsupp.lmk + theorem dfinsupp.lmk_apply + def dfinsupp.lsingle + theorem dfinsupp.lsingle_apply + def dfinsupp.map_range + theorem dfinsupp.map_range_apply + theorem dfinsupp.map_range_def + theorem dfinsupp.map_range_single + theorem dfinsupp.mem_support_iff + theorem dfinsupp.mem_support_to_fun + def dfinsupp.mk + theorem dfinsupp.mk_add + theorem dfinsupp.mk_apply + theorem dfinsupp.mk_inj + theorem dfinsupp.mk_neg + theorem dfinsupp.mk_smul + theorem dfinsupp.mk_sub + theorem dfinsupp.mk_zero + theorem dfinsupp.neg_apply + structure dfinsupp.pre + def dfinsupp.prod + theorem dfinsupp.prod_add_index + theorem dfinsupp.prod_finset_sum_index + theorem dfinsupp.prod_map_range_index + theorem dfinsupp.prod_neg_index + theorem dfinsupp.prod_single_index + theorem dfinsupp.prod_subtype_domain_index + theorem dfinsupp.prod_sum_index + theorem dfinsupp.prod_zero_index + def dfinsupp.single + theorem dfinsupp.single_add + theorem dfinsupp.single_add_erase + theorem dfinsupp.single_apply + theorem dfinsupp.single_eq_of_ne + theorem dfinsupp.single_eq_same + theorem dfinsupp.single_smul + theorem dfinsupp.single_zero + theorem dfinsupp.smul_apply + theorem dfinsupp.sub_apply + def dfinsupp.subtype_domain + theorem dfinsupp.subtype_domain_add + theorem dfinsupp.subtype_domain_apply + theorem dfinsupp.subtype_domain_def + theorem dfinsupp.subtype_domain_finsupp_sum + theorem dfinsupp.subtype_domain_neg + theorem dfinsupp.subtype_domain_sub + theorem dfinsupp.subtype_domain_sum + theorem dfinsupp.subtype_domain_zero + def dfinsupp.sum + theorem dfinsupp.sum_add + theorem dfinsupp.sum_apply + theorem dfinsupp.sum_neg + theorem dfinsupp.sum_single + theorem dfinsupp.sum_sub_index + theorem dfinsupp.sum_zero + def dfinsupp.support + theorem dfinsupp.support_add + theorem dfinsupp.support_eq_empty + theorem dfinsupp.support_erase + theorem dfinsupp.support_filter + theorem dfinsupp.support_map_range + theorem dfinsupp.support_mk_subset + theorem dfinsupp.support_neg + theorem dfinsupp.support_single_ne_zero + theorem dfinsupp.support_single_subset + theorem dfinsupp.support_subset_iff + theorem dfinsupp.support_subtype_domain + theorem dfinsupp.support_sum + theorem dfinsupp.support_zero + theorem dfinsupp.support_zip_with + def dfinsupp.to_has_scalar + def dfinsupp.to_module + theorem dfinsupp.zero_apply + def dfinsupp.zip_with + theorem dfinsupp.zip_with_apply + theorem dfinsupp.zip_with_def + def dfinsupp Modified data/finset.lean + theorem multiset.to_finset_add + theorem multiset.to_finset_zero Added linear_algebra/direct_sum_module.lean + def direct_sum.mk + theorem direct_sum.mk_inj + def direct_sum.of + theorem direct_sum.of_inj + def direct_sum.set_to_set + theorem direct_sum.to_module.ext + theorem direct_sum.to_module.of + theorem direct_sum.to_module.unique + def direct_sum.to_module + theorem direct_sum.to_module_apply + theorem direct_sum.to_module_aux.add + theorem direct_sum.to_module_aux.smul + def direct_sum.to_module_aux + def direct_sum Modified linear_algebra/tensor_product.lean + def tensor_product.direct_sum 2018-11-05 13:32:36-05:00 0963290 fix(data/real/irrational): fix build ESTIMATED CHANGES Modified data/real/irrational.lean 2018-11-05 17:58:46+01:00 21d4d1c feat(field_theory/perfect_closure): define the perfect closure of a field ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.iterate_cancel + theorem nat.iterate_inj + theorem nat.iterate₀ + theorem nat.iterate₁ + theorem nat.iterate₂ Added field_theory/perfect_closure.lean + theorem frobenius_pth_root + theorem is_ring_hom.pth_root + def perfect_closure.UMP + theorem perfect_closure.eq_iff' + theorem perfect_closure.eq_iff + theorem perfect_closure.eq_pth_root + def perfect_closure.frobenius_equiv + theorem perfect_closure.frobenius_equiv_apply + theorem perfect_closure.frobenius_mk + theorem perfect_closure.int_cast + theorem perfect_closure.mk_zero + theorem perfect_closure.nat_cast + theorem perfect_closure.nat_cast_eq_iff + def perfect_closure.of + theorem perfect_closure.r.sound + inductive perfect_closure.r + def perfect_closure + theorem pth_root_frobenius 2018-11-05 17:58:46+01:00 8eac03c feat(algebra/char_p): define the characteristic of a semiring ESTIMATED CHANGES Added algebra/char_p.lean + theorem add_pow_char + theorem char_p.cast_eq_zero + theorem char_p.eq + theorem char_p.exists + theorem char_p.exists_unique + def frobenius + theorem frobenius_add + theorem frobenius_def + theorem frobenius_inj + theorem frobenius_mul + theorem frobenius_nat_cast + theorem frobenius_neg + theorem frobenius_one + theorem frobenius_sub + theorem frobenius_zero + theorem is_monoid_hom.map_frobenius + theorem ring_char.eq + theorem ring_char.spec Modified algebra/group_power.lean + theorem pow_eq_zero 2018-11-05 17:46:35+01:00 53d4883 refactor(cau_seq): unify real.lim, complex.lim and cau_seq.lim (#433) ESTIMATED CHANGES Modified analysis/real.lean Modified data/complex/basic.lean - theorem complex.eq_lim_of_const_equiv - theorem complex.equiv_lim + theorem complex.equiv_lim_aux - theorem complex.im_const_equiv_of_const_equiv +/- theorem complex.is_cau_seq_conj +/- theorem complex.lim_abs - theorem complex.lim_add +/- theorem complex.lim_conj - theorem complex.lim_const + theorem complex.lim_eq_lim_im_add_lim_re - theorem complex.lim_eq_lim_of_equiv - theorem complex.lim_eq_of_equiv_const - theorem complex.lim_eq_zero_iff + theorem complex.lim_im - theorem complex.lim_inv - theorem complex.lim_mul - theorem complex.lim_mul_lim - theorem complex.lim_neg + theorem complex.lim_re - theorem complex.re_const_equiv_of_const_equiv Modified data/complex/exponential.lean Modified data/padics/hensel.lean Modified data/padics/padic_integers.lean Modified data/padics/padic_numbers.lean Modified data/real/basic.lean - theorem real.eq_lim_of_const_equiv - theorem real.equiv_lim - theorem real.le_lim - theorem real.lim_add - theorem real.lim_const - theorem real.lim_eq_lim_of_equiv - theorem real.lim_eq_of_equiv_const - theorem real.lim_eq_zero_iff - theorem real.lim_inv - theorem real.lim_le - theorem real.lim_lt - theorem real.lim_mul - theorem real.lim_mul_lim - theorem real.lim_neg - theorem real.lt_lim Modified data/real/cau_seq.lean +/- theorem cau_seq.const_equiv - theorem cau_seq.mul_lim_zero + theorem cau_seq.mul_lim_zero_left + theorem cau_seq.mul_lim_zero_right Modified data/real/cau_seq_completion.lean +/- theorem cau_seq.complete + theorem cau_seq.eq_lim_of_const_equiv + theorem cau_seq.equiv_lim + theorem cau_seq.le_lim + theorem cau_seq.lim_add + theorem cau_seq.lim_const + theorem cau_seq.lim_eq_lim_of_equiv + theorem cau_seq.lim_eq_of_equiv_const + theorem cau_seq.lim_eq_zero_iff + theorem cau_seq.lim_inv + theorem cau_seq.lim_le + theorem cau_seq.lim_lt + theorem cau_seq.lim_mul + theorem cau_seq.lim_mul_lim + theorem cau_seq.lim_neg - theorem cau_seq.lim_spec + theorem cau_seq.lt_lim Modified data/real/cau_seq_filter.lean 2018-11-05 17:44:01+01:00 17da277 feat(group_theory/eckmann_hilton): add Eckmann-Hilton (#335) ESTIMATED CHANGES Added group_theory/eckmann_hilton.lean + def eckmann_hilton.comm_group + def eckmann_hilton.comm_monoid + theorem eckmann_hilton.group.is_unital + theorem eckmann_hilton.mul + theorem eckmann_hilton.mul_assoc + theorem eckmann_hilton.mul_comm + theorem eckmann_hilton.one 2018-11-05 17:40:57+01:00 efcb1fb feat(analysis/topology/topological_space): more about discrete spaces ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem eq_top_of_singletons_open 2018-11-05 17:40:31+01:00 1a4d938 hotifx(analysis/topology/continuity): difference with disjoint and `s ∩ t = ∅` ESTIMATED CHANGES Modified analysis/topology/continuity.lean 2018-11-05 17:00:44+01:00 14d99a3 hotfix(data/real/irrational): cast problem ESTIMATED CHANGES Modified data/real/irrational.lean +/- theorem irr_sqrt_two 2018-11-05 10:47:04-05:00 a12d5a1 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 class`is_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 Modified algebra/module.lean - theorem add_smul' +/- theorem add_smul + theorem ideal.add_mem_iff_left + theorem ideal.add_mem_iff_right + theorem ideal.mul_mem_left + theorem ideal.mul_mem_right + theorem ideal.neg_mem_iff + def ideal - theorem is_linear_map.comp - theorem is_linear_map.id - theorem is_linear_map.inverse - theorem is_linear_map.map_add - theorem is_linear_map.map_neg - theorem is_linear_map.map_smul_left - theorem is_linear_map.map_smul_right - theorem is_linear_map.map_sub - theorem is_linear_map.map_sum - theorem is_linear_map.map_zero + def is_linear_map.mk' + theorem is_linear_map.mk'_apply - theorem is_linear_map.neg - theorem is_linear_map.sub - theorem is_linear_map.sum - theorem is_linear_map.zero - structure is_linear_map - theorem is_submodule.Inter_submodule - theorem is_submodule.add - theorem is_submodule.eq_univ_of_contains_unit - theorem is_submodule.neg - theorem is_submodule.smul_ne_0 - theorem is_submodule.sub - theorem is_submodule.sum - theorem is_submodule.univ_of_one_mem - theorem is_submodule.zero + def linear_map.comp + theorem linear_map.comp_apply + theorem linear_map.ext + theorem linear_map.ext_iff + def linear_map.id + theorem linear_map.id_apply + theorem linear_map.is_linear + theorem linear_map.map_add + theorem linear_map.map_neg + theorem linear_map.map_smul + theorem linear_map.map_sub + theorem linear_map.map_sum + theorem linear_map.map_zero + structure linear_map + structure module.core + def module.of_core - theorem mul_smul' +/- theorem mul_smul - theorem one_smul' +/- theorem one_smul - theorem smul_add' +/- theorem smul_add - theorem smul_eq_mul' +/- theorem smul_eq_mul - theorem smul_smul' +/- theorem smul_smul - theorem smul_zero' +/- theorem smul_zero + theorem submodule.add_mem + theorem submodule.add_mem_iff_left + theorem submodule.add_mem_iff_right + theorem submodule.coe_add + theorem submodule.coe_neg + theorem submodule.coe_smul + theorem submodule.coe_sub + theorem submodule.coe_zero + theorem submodule.ext' + theorem submodule.ext + theorem submodule.mem_coe + theorem submodule.neg_mem + theorem submodule.neg_mem_iff + theorem submodule.smul_mem + theorem submodule.smul_mem_iff + theorem submodule.sub_mem + theorem submodule.subtype_apply + theorem submodule.sum_mem + theorem submodule.zero_mem + structure submodule +/- def subspace - theorem zero_smul' +/- theorem zero_smul Modified algebra/order.lean + theorem eq_iff_le_not_lt Modified algebra/pi_instances.lean + theorem prod.inv_mk + theorem prod.mk_mul_mk + theorem prod.one_eq_mk + theorem prod.smul_fst + theorem prod.smul_mk + theorem prod.smul_snd Modified analysis/bounded_linear_maps.lean +/- theorem is_bounded_linear_map.tendsto Modified analysis/normed_space.lean Modified analysis/topology/quotient_topological_structures.lean +/- theorem quotient_ring.is_open_map_coe +/- theorem quotient_ring.quotient_map_coe_coe Modified analysis/topology/topological_structures.lean + def ideal.closure + theorem ideal.coe_closure Modified data/equiv/basic.lean + def equiv.prop_equiv_punit +/- def equiv.true_equiv_punit Modified data/finsupp.lean + theorem finsupp.filter_add +/- theorem finsupp.filter_pos_add_filter_neg + theorem finsupp.filter_single_of_neg + theorem finsupp.filter_single_of_pos + theorem finsupp.filter_smul +/- theorem finsupp.map_domain_id + theorem finsupp.map_domain_smul +/- theorem finsupp.map_domain_zero + theorem finsupp.map_range_add + theorem finsupp.map_range_zero +/- theorem finsupp.smul_apply' + theorem finsupp.smul_single +/- theorem finsupp.sum_single + theorem finsupp.support_smul +/- def finsupp.to_has_scalar' +/- def finsupp.to_has_scalar +/- def finsupp.to_module + def finsupp.to_semimodule Modified data/fintype.lean + theorem fintype.fintype.card_of_subsingleton + theorem fintype.fintype.univ_of_subsingleton + def fintype.of_subsingleton Modified data/holor.lean Modified data/padics/padic_integers.lean + theorem padic_int.is_unit_iff - def padic_int.maximal_ideal - theorem padic_int.maximal_ideal_add - theorem padic_int.maximal_ideal_eq_nonunits - theorem padic_int.maximal_ideal_eq_or_univ_of_subset - theorem padic_int.maximal_ideal_mul - theorem padic_int.maximal_ideal_ne_univ - theorem padic_int.maximal_ideal_unique + theorem padic_int.mem_nonunits + theorem padic_int.norm_lt_one_add + theorem padic_int.norm_lt_one_mul Modified data/padics/padic_numbers.lean +/- theorem padic.rat_dense' +/- theorem padic.rat_dense +/- def padic +/- def padic_norm_e Modified data/polynomial.lean - theorem polynomial.coeff_is_linear + def polynomial.lcoeff + theorem polynomial.lcoeff_apply Modified data/set/basic.lean + theorem set.coe_nonempty_iff_ne_empty + theorem set.pairwise_on.mono' + theorem set.pairwise_on.mono Modified data/set/lattice.lean +/- theorem disjoint_bot_left +/- theorem disjoint_bot_right Modified group_theory/free_abelian_group.lean Modified linear_algebra/basic.lean + theorem classical.some_spec3 - theorem constr_add - theorem constr_basis - theorem constr_congr - theorem constr_eq - theorem constr_im_eq_span - theorem constr_mem_span - theorem constr_neg - theorem constr_smul - theorem constr_sub - theorem constr_zero - theorem eq_of_linear_independent_of_span - def equiv_of_is_basis - theorem exists_finite_card_le_of_finite_of_linear_independent_of_span - theorem exists_is_basis - theorem exists_left_inverse_linear_map_of_injective - theorem exists_linear_independent - theorem exists_of_linear_independent_of_finite_span - theorem exists_right_inverse_linear_map_of_surjective - theorem exists_subset_is_basis +/- theorem finset.smul_sum +/- theorem finsupp.smul_sum - def is_basis.constr - theorem is_basis.eq_linear_map - theorem is_basis.linear_equiv - theorem is_basis.map_constr - theorem is_basis.map_repr - def is_basis - theorem is_linear_map.finsupp_sum - theorem is_submodule_range_smul - theorem lc.is_linear_map_sum - def lc - theorem linear_eq_on + theorem linear_equiv.apply_symm_apply + theorem linear_equiv.coe_apply + def linear_equiv.congr_right - theorem linear_equiv.linear_inv + theorem linear_equiv.of_bijective_apply + def linear_equiv.of_linear + theorem linear_equiv.of_linear_apply + theorem linear_equiv.of_linear_symm_apply + def linear_equiv.of_top + theorem linear_equiv.of_top_apply + theorem linear_equiv.of_top_symm_apply +/- def linear_equiv.refl +/- def linear_equiv.symm + theorem linear_equiv.symm_apply_apply +/- structure linear_equiv - theorem linear_independent.eq_0_of_span - theorem linear_independent.image - theorem linear_independent.inj_span_iff_inj - theorem linear_independent.insert - theorem linear_independent.mono - theorem linear_independent.of_image - def linear_independent.repr - theorem linear_independent.unique - def linear_independent - theorem linear_independent_Union_of_directed - theorem linear_independent_bUnion_of_directed - theorem linear_independent_empty - theorem linear_independent_iff_not_mem_span - theorem linear_independent_singleton - theorem linear_independent_union + theorem linear_map.add_apply + def linear_map.cod_restrict + theorem linear_map.cod_restrict_apply + theorem linear_map.comap_cod_restrict + theorem linear_map.comap_injective + theorem linear_map.comap_le_comap_iff + theorem linear_map.comap_map_eq + theorem linear_map.comap_map_eq_self + theorem linear_map.comap_pair_prod + theorem linear_map.comp_id + def linear_map.congr_right + def linear_map.copair + theorem linear_map.copair_apply + theorem linear_map.copair_inl + theorem linear_map.copair_inl_inr + theorem linear_map.copair_inr + theorem linear_map.disjoint_ker' + theorem linear_map.disjoint_ker + def linear_map.endomorphism_ring + theorem linear_map.finsupp_sum + def linear_map.fst + theorem linear_map.fst_apply + theorem linear_map.fst_eq_copair + theorem linear_map.fst_pair + def linear_map.general_linear_group + theorem linear_map.id_comp + theorem linear_map.inj_of_disjoint_ker + def linear_map.inl + theorem linear_map.inl_apply + theorem linear_map.inl_eq_pair + def linear_map.inr + theorem linear_map.inr_apply + theorem linear_map.inr_eq_pair + def linear_map.inverse + def linear_map.ker + theorem linear_map.ker_comp + theorem linear_map.ker_eq_bot + theorem linear_map.ker_eq_top + theorem linear_map.ker_id + theorem linear_map.ker_le_ker_comp + theorem linear_map.ker_zero + theorem linear_map.le_ker_iff_map - theorem linear_map.linear_independent_image_iff + theorem linear_map.map_cod_restrict + theorem linear_map.map_comap_eq + theorem linear_map.map_comap_eq_self + theorem linear_map.map_copair_prod + theorem linear_map.map_injective + theorem linear_map.map_le_map_iff + theorem linear_map.mem_ker + theorem linear_map.mem_range + theorem linear_map.mul_app + theorem linear_map.neg_apply + theorem linear_map.one_app + def linear_map.pair + theorem linear_map.pair_apply + theorem linear_map.pair_fst_snd + theorem linear_map.prod_eq_inf_comap + theorem linear_map.prod_eq_sup_map + def linear_map.range + theorem linear_map.range_coe + theorem linear_map.range_comp + theorem linear_map.range_comp_le_range + theorem linear_map.range_eq_top + theorem linear_map.range_id + theorem linear_map.range_le_iff_comap + theorem linear_map.smul_apply + def linear_map.smul_right + theorem linear_map.smul_right_apply + def linear_map.snd + theorem linear_map.snd_apply + theorem linear_map.snd_eq_copair + theorem linear_map.snd_pair + theorem linear_map.span_inl_union_inr + theorem linear_map.sub_apply + theorem linear_map.sub_mem_ker_iff + theorem linear_map.sum_apply + theorem linear_map.zero_apply - theorem mem_span_insert - theorem mem_span_insert_exchange - def module_equiv_lc - theorem repr_add - theorem repr_eq - theorem repr_eq_repr_of_subset - theorem repr_eq_single - theorem repr_eq_zero - theorem repr_finsupp_sum - theorem repr_neg - theorem repr_not_span - theorem repr_smul - theorem repr_spec - theorem repr_sub - theorem repr_sum - theorem repr_sum_eq - theorem repr_support - theorem repr_zero - def span - theorem span_empty - theorem span_eq - theorem span_eq_of_is_submodule - theorem span_image_of_linear_map - theorem span_insert - theorem span_insert_eq_span - theorem span_minimal - theorem span_mono - theorem span_singleton - theorem span_span - theorem span_union + theorem submodule.Inf_coe + theorem submodule.Union_coe_of_directed + theorem submodule.bot_coe + def submodule.comap + theorem submodule.comap_bot + theorem submodule.comap_coe + theorem submodule.comap_comp + theorem submodule.comap_fst + theorem submodule.comap_id + theorem submodule.comap_liftq + theorem submodule.comap_map_mkq + def submodule.comap_mkq.le_order_embedding + def submodule.comap_mkq.lt_order_embedding + def submodule.comap_mkq.order_iso + theorem submodule.comap_mkq_embedding_eq + theorem submodule.comap_mono + theorem submodule.comap_snd + theorem submodule.comap_top + theorem submodule.disjoint_def + theorem submodule.eq_top_iff' + theorem submodule.inf_coe + theorem submodule.infi_coe + theorem submodule.ker_inl + theorem submodule.ker_inr + theorem submodule.ker_liftq + theorem submodule.ker_liftq_eq_bot + theorem submodule.ker_mkq + theorem submodule.ker_subtype + theorem submodule.le_comap_map + theorem submodule.le_comap_mkq + theorem submodule.le_def' + theorem submodule.le_def + def submodule.liftq + theorem submodule.liftq_apply + theorem submodule.liftq_mkq + def submodule.map + theorem submodule.map_bot + theorem submodule.map_coe + theorem submodule.map_comap_le + theorem submodule.map_comap_subtype + theorem submodule.map_comp + theorem submodule.map_id + theorem submodule.map_inf_eq_map_inf_comap + theorem submodule.map_inl + theorem submodule.map_inr + theorem submodule.map_le_iff_le_comap + theorem submodule.map_mono + def submodule.map_subtype.le_order_embedding + def submodule.map_subtype.lt_order_embedding + def submodule.map_subtype.order_iso + theorem submodule.map_subtype_embedding_eq + theorem submodule.map_subtype_le + theorem submodule.map_top + def submodule.mapq + theorem submodule.mapq_apply + theorem submodule.mapq_mkq + theorem submodule.mem_bot + theorem submodule.mem_comap + theorem submodule.mem_inf + theorem submodule.mem_infi + theorem submodule.mem_map + theorem submodule.mem_prod + theorem submodule.mem_span + theorem submodule.mem_span_insert' + theorem submodule.mem_span_insert + theorem submodule.mem_span_singleton + theorem submodule.mem_sup + theorem submodule.mem_supr_of_directed + theorem submodule.mem_top + def submodule.mkq + theorem submodule.mkq_apply + theorem submodule.mkq_map_self + def submodule.of_le + theorem submodule.of_le_apply + def submodule.prod + theorem submodule.prod_bot + theorem submodule.prod_coe + theorem submodule.prod_comap_inl + theorem submodule.prod_comap_inr + theorem submodule.prod_inf_prod + theorem submodule.prod_map_fst + theorem submodule.prod_map_snd + theorem submodule.prod_mono + theorem submodule.prod_sup_prod + theorem submodule.prod_top + theorem submodule.quotient.mk'_eq_mk + def submodule.quotient.mk + theorem submodule.quotient.mk_add + theorem submodule.quotient.mk_eq_mk + theorem submodule.quotient.mk_eq_zero + theorem submodule.quotient.mk_neg + theorem submodule.quotient.mk_smul + theorem submodule.quotient.mk_zero + theorem submodule.quotient.quot_mk_eq_mk + def submodule.quotient + def submodule.quotient_rel + theorem submodule.range_fst + theorem submodule.range_mkq + theorem submodule.range_snd + theorem submodule.range_subtype + def submodule.span + theorem submodule.span_Union + theorem submodule.span_empty + theorem submodule.span_eq + theorem submodule.span_eq_bot + theorem submodule.span_eq_of_le + theorem submodule.span_image + theorem submodule.span_induction + theorem submodule.span_insert_eq_span + theorem submodule.span_le + theorem submodule.span_mono + theorem submodule.span_prod_le + theorem submodule.span_singleton_eq_bot + theorem submodule.span_singleton_eq_range + theorem submodule.span_span + theorem submodule.span_union + theorem submodule.subset_span + theorem submodule.top_coe - theorem subset_span - theorem zero_not_mem_of_linear_independent Added linear_algebra/basis.lean + theorem constr_add + theorem constr_basis + theorem constr_congr + theorem constr_eq + theorem constr_neg + theorem constr_range + theorem constr_self + theorem constr_smul + theorem constr_sub + theorem constr_zero + theorem disjoint_span_singleton + theorem eq_of_linear_independent_of_span + def equiv_of_is_basis + theorem exists_finite_card_le_of_finite_of_linear_independent_of_span + theorem exists_is_basis + theorem exists_left_inverse_linear_map_of_injective + theorem exists_linear_independent + theorem exists_of_linear_independent_of_finite_span + theorem exists_right_inverse_linear_map_of_surjective + theorem exists_subset_is_basis + def is_basis.constr + theorem is_basis.constr_apply + theorem is_basis.ext + theorem is_basis.mem_span + def is_basis.repr + theorem is_basis.repr_eq_single + theorem is_basis.repr_ker + theorem is_basis.repr_range + theorem is_basis.repr_supported + theorem is_basis.total_comp_repr + theorem is_basis.total_repr + def is_basis + theorem is_basis_inl_union_inr + theorem linear_equiv.is_basis + theorem linear_independent.disjoint_ker + theorem linear_independent.image + theorem linear_independent.inj_span_iff_inj + theorem linear_independent.insert + theorem linear_independent.mono + theorem linear_independent.of_image + def linear_independent.repr + theorem linear_independent.repr_eq + theorem linear_independent.repr_eq_repr_of_subset + theorem linear_independent.repr_eq_single + theorem linear_independent.repr_ker + theorem linear_independent.repr_range + theorem linear_independent.repr_supported + theorem linear_independent.supported_disjoint_ker + theorem linear_independent.total_comp_repr + def linear_independent.total_equiv + theorem linear_independent.total_repr + theorem linear_independent.unique + def linear_independent + theorem linear_independent_Union_of_directed + theorem linear_independent_bUnion_of_directed + theorem linear_independent_empty + theorem linear_independent_iff + theorem linear_independent_iff_not_mem_span + theorem linear_independent_iff_not_smul_mem_span + theorem linear_independent_iff_total_on + theorem linear_independent_inl_union_inr + theorem linear_independent_of_finite + theorem linear_independent_sUnion_of_directed + theorem linear_independent_singleton + theorem linear_independent_union + theorem linear_map.linear_independent_image_iff + theorem mem_span_insert_exchange + def module_equiv_lc + theorem quotient_prod_linear_equiv + theorem zero_not_mem_of_linear_independent Modified linear_algebra/dimension.lean + theorem dim_prod + theorem dim_quotient + theorem dim_range_add_dim_ker + theorem is_basis.le_span + theorem is_basis.mk_eq_dim + theorem linear_equiv.dim_eq + theorem mk_eq_mk_of_basis - theorem vector_space.basis_le_span +/- def vector_space.dim - theorem vector_space.dim_eq_of_linear_equiv - theorem vector_space.dim_im_add_dim_ker - theorem vector_space.dim_prod - theorem vector_space.dim_quotient - theorem vector_space.mk_basis - theorem vector_space.mk_eq_mk_of_basis Added linear_algebra/lc.lean + def lc.apply + theorem lc.apply_apply + theorem lc.lsum_apply + theorem lc.map_apply + theorem lc.map_comp + theorem lc.map_disjoint_ker + theorem lc.map_id + theorem lc.map_supported + theorem lc.map_total + theorem lc.mem_supported' + theorem lc.mem_supported + theorem lc.range_restrict_dom + def lc.restrict_dom + theorem lc.restrict_dom_apply + theorem lc.restrict_dom_comp_subtype + theorem lc.single_mem_supported + def lc.supported + theorem lc.supported_Inter + theorem lc.supported_Union + theorem lc.supported_comap_map + theorem lc.supported_empty + theorem lc.supported_eq_span_single + theorem lc.supported_mono + theorem lc.supported_union + theorem lc.supported_univ + theorem lc.total_apply + def lc.total_on + theorem lc.total_on_range + theorem lc.total_range + theorem lc.total_single + def lc + theorem linear_eq_on + theorem mem_span_iff_lc + theorem span_eq_map_lc Deleted linear_algebra/linear_map_module.lean - theorem linear_map.add_app - theorem linear_map.ext - def linear_map.im - theorem linear_map.inj_of_trivial_ker - theorem linear_map.is_linear_map_coe - theorem linear_map.is_submodule.add_left_iff - theorem linear_map.is_submodule.neg_iff - def linear_map.ker - theorem linear_map.ker_of_map_eq_map - theorem linear_map.map_add - theorem linear_map.map_neg - theorem linear_map.map_smul - theorem linear_map.map_sub - theorem linear_map.map_zero - theorem linear_map.mem_im - theorem linear_map.mem_ker - theorem linear_map.neg_app - def linear_map.quot_ker_equiv_im - theorem linear_map.smul_app - theorem linear_map.sub_ker - def linear_map.union_quotient_equiv_quotient_inter - theorem linear_map.zero_app - def linear_map - def module.endomorphism_ring - def module.general_linear_group - theorem module.mul_app - theorem module.one_app Modified linear_algebra/multivariate_polynomial.lean Deleted linear_algebra/prod_module.lean - theorem prod.is_basis_inl_union_inr - theorem prod.is_linear_map_prod_fst - theorem prod.is_linear_map_prod_inl - theorem prod.is_linear_map_prod_inr - theorem prod.is_linear_map_prod_mk - theorem prod.is_linear_map_prod_snd - theorem prod.linear_independent_inl_union_inr - theorem prod.span_inl_union_inr - theorem prod.span_prod Deleted linear_algebra/quotient_module.lean - def is_submodule.quotient_rel - theorem quotient_module.coe_add - theorem quotient_module.coe_eq_zero - theorem quotient_module.coe_smul - theorem quotient_module.coe_zero - theorem quotient_module.is_linear_map_quotient_lift - theorem quotient_module.is_linear_map_quotient_mk - def quotient_module.mk - theorem quotient_module.quotient.exists_rep - theorem quotient_module.quotient.injective_lift - def quotient_module.quotient.lift - theorem quotient_module.quotient.lift_mk - def quotient_module.quotient - theorem quotient_module.quotient_prod_linear_equiv Deleted linear_algebra/submodule.lean - def quotient_module.le_order_embedding - def quotient_module.lt_order_embedding - theorem submodule.Union_set_of_directed - theorem submodule.bot_set - theorem submodule.coe_comap - theorem submodule.coe_map - theorem submodule.coe_prod - def submodule.comap - theorem submodule.comap_comp - theorem submodule.comap_id - theorem submodule.comap_map_eq - def submodule.comap_quotient.order_iso - def submodule.comap_quotient - theorem submodule.ext - theorem submodule.injective_comap - theorem submodule.injective_map - def submodule.lt_order_embedding - def submodule.map - theorem submodule.map_comp - theorem submodule.map_id - def submodule.map_subtype.le_order_embedding - def submodule.map_subtype.order_iso - def submodule.map_subtype - theorem submodule.map_subtype_embedding_eq - theorem submodule.map_subtype_subset - theorem submodule.mem_coe - theorem submodule.mem_span_singleton - def submodule.prod - theorem submodule.sInter_set - def submodule.span - theorem submodule.span_empty - theorem submodule.span_singleton_subset - theorem submodule.span_subset_iff - theorem submodule.span_union - theorem submodule.subset_comap_quotient - theorem submodule.top_set - structure {u Deleted linear_algebra/subtype_module.lean - theorem is_submodule.coe_add - theorem is_submodule.coe_neg - theorem is_submodule.coe_smul - theorem is_submodule.coe_zero - theorem is_submodule.is_linear_map_coe - theorem is_submodule.is_linear_map_subtype_mk - theorem is_submodule.is_linear_map_subtype_val - theorem is_submodule.sub_val Modified linear_algebra/tensor_product.lean - theorem is_bilinear_map.comm - theorem is_bilinear_map.comp - theorem is_bilinear_map.linear_left - theorem is_bilinear_map.linear_right - theorem is_bilinear_map.neg_left - theorem is_bilinear_map.neg_right - theorem is_bilinear_map.zero_left - theorem is_bilinear_map.zero_right - structure is_bilinear_map + def linear_map.compl₂ + theorem linear_map.compl₂_apply + def linear_map.compr₂ + theorem linear_map.compr₂_apply + theorem linear_map.ext₂ + def linear_map.flip + theorem linear_map.flip_apply + theorem linear_map.flip_inj + def linear_map.lcomp + theorem linear_map.lcomp_apply + def linear_map.lflip + theorem linear_map.lflip_apply + def linear_map.llcomp + theorem linear_map.llcomp_apply + def linear_map.lsmul + theorem linear_map.lsmul_apply + theorem linear_map.map_add₂ + theorem linear_map.map_neg₂ + theorem linear_map.map_smul₂ + theorem linear_map.map_zero₂ + def linear_map.mk₂ + theorem linear_map.mk₂_apply +/- theorem tensor_product.add_tmul - theorem tensor_product.bilinear + def tensor_product.congr + def tensor_product.curry + theorem tensor_product.curry_apply + theorem tensor_product.ext + def tensor_product.lcurry + theorem tensor_product.lcurry_apply + def tensor_product.lift.equiv + theorem tensor_product.lift.tmul' + theorem tensor_product.lift.tmul + theorem tensor_product.lift.unique + def tensor_product.lift + theorem tensor_product.lift_aux.add + theorem tensor_product.lift_aux.smul + def tensor_product.lift_aux + theorem tensor_product.lift_compr₂ + theorem tensor_product.lift_mk + theorem tensor_product.lift_mk_compr₂ + def tensor_product.map + theorem tensor_product.map_tmul + def tensor_product.mk + theorem tensor_product.mk_apply + theorem tensor_product.mk_compr₂_inj + theorem tensor_product.neg_tmul +/- def tensor_product.smul.aux - theorem tensor_product.smul.is_add_group_hom - def tensor_product.smul +/- theorem tensor_product.smul_tmul - theorem tensor_product.tmul.add_left - theorem tensor_product.tmul.add_right - theorem tensor_product.tmul.smul +/- theorem tensor_product.tmul_add + theorem tensor_product.tmul_neg + theorem tensor_product.tmul_zero - theorem tensor_product.to_module.add - def tensor_product.to_module.equiv - theorem tensor_product.to_module.ext - def tensor_product.to_module.linear - theorem tensor_product.to_module.smul - theorem tensor_product.to_module.tmul - theorem tensor_product.to_module.unique - def tensor_product.to_module + def tensor_product.uncurry + theorem tensor_product.uncurry_apply + theorem tensor_product.zero_tmul Modified logic/basic.lean Modified order/zorn.lean + theorem zorn.chain.mono + theorem zorn.zorn_subset₀ Modified ring_theory/associated.lean + theorem is_unit_iff_exists_inv' + theorem is_unit_iff_exists_inv + theorem is_unit_of_mul_is_unit_left + theorem is_unit_of_mul_is_unit_right + theorem is_unit_zero_iff + theorem mul_dvd_of_is_unit_left + theorem mul_dvd_of_is_unit_right + theorem nonzero_of_irreducible +/- theorem not_is_unit_zero Modified ring_theory/ideals.lean + theorem coe_subset_nonunits + def ideal.comap + theorem ideal.comap_ne_top + theorem ideal.eq_top_iff_one + theorem ideal.eq_top_of_is_unit_mem + theorem ideal.eq_top_of_unit_mem + theorem ideal.exists_le_maximal + theorem ideal.is_maximal.eq_of_le + theorem ideal.is_maximal.exists_inv + theorem ideal.is_maximal.is_prime + def ideal.is_maximal + theorem ideal.is_maximal_iff + theorem ideal.is_prime.mem_or_mem + theorem ideal.is_prime.mem_or_mem_of_mul_eq_zero + def ideal.is_prime + theorem ideal.mem_comap + theorem ideal.mem_span_insert' + theorem ideal.mem_span_insert + theorem ideal.mem_span_singleton' + theorem ideal.mem_span_singleton + theorem ideal.ne_top_iff_one + theorem ideal.quotient.eq_zero_iff_mem + theorem ideal.quotient.exists_inv + def ideal.quotient.map_mk + def ideal.quotient.mk + theorem ideal.quotient.mk_add + theorem ideal.quotient.mk_mul + theorem ideal.quotient.mk_neg + theorem ideal.quotient.mk_one + theorem ideal.quotient.mk_pow + theorem ideal.quotient.mk_sub + theorem ideal.quotient.mk_zero + theorem ideal.quotient.zero_eq_one_iff + theorem ideal.quotient.zero_ne_one_iff + def ideal.quotient + def ideal.span + theorem ideal.span_eq + theorem ideal.span_eq_bot + theorem ideal.span_le + theorem ideal.span_mono + theorem ideal.span_singleton_eq_bot + theorem ideal.span_singleton_eq_top + theorem ideal.span_singleton_le_span_singleton + theorem ideal.span_singleton_one + theorem ideal.span_singleton_prime + theorem ideal.subset_span + def ideal.zero_ne_one_of_proper - theorem is_ideal.mem_trivial - theorem is_ideal.mul_left - theorem is_ideal.mul_right - theorem is_ideal.neg_iff - def is_ideal.trivial + def is_local_ring.zero_ne_one + def is_local_ring - theorem is_maximal_ideal.mk - theorem is_proper_ideal_iff_one_not_mem + theorem local_of_nonunits_ideal - def local_of_nonunits_ideal + theorem mem_nonunits_ideal + theorem mem_nonunits_iff - theorem mem_or_mem_of_mul_eq_zero + theorem mul_mem_nonunits_left + theorem mul_mem_nonunits_right +/- def nonunits + def nonunits_ideal - theorem not_unit_of_mem_proper_ideal + theorem one_not_mem_nonunits - theorem quotient_ring.coe_add - theorem quotient_ring.coe_mul - theorem quotient_ring.coe_neg - theorem quotient_ring.coe_one - theorem quotient_ring.coe_pow - theorem quotient_ring.coe_sub - theorem quotient_ring.coe_zero - theorem quotient_ring.eq_zero_iff_mem - theorem quotient_ring.exists_inv - def quotient_ring.mk - def quotient_ring.quotient - def quotient_ring.quotient_rel + theorem zero_mem_nonunits Modified ring_theory/localization.lean +/- theorem localization.ne_zero_of_mem_non_zero_divisors Modified ring_theory/matrix.lean Modified ring_theory/noetherian.lean - def is_fg +/- def is_noetherian +/- theorem is_noetherian_of_quotient_of_noetherian +/- theorem is_noetherian_of_submodule_of_noetherian +/- theorem ring.is_noetherian_of_fintype +/- def submodule.fg Modified ring_theory/principal_ideal_domain.lean + theorem ideal.is_principal.eq_bot_iff_generator_eq_zero + theorem ideal.is_principal.generator_mem + theorem ideal.is_principal.mem_iff_generator_dvd + theorem ideal.is_principal.span_singleton_generator + theorem is_prime.to_maximal_ideal - theorem is_prime_ideal.to_maximal_ideal - theorem is_principal_ideal.eq_trivial_iff_generator_eq_zero - theorem is_principal_ideal.generator_generates - theorem is_principal_ideal.generator_mem - theorem is_principal_ideal.mem_iff_generator_dvd +/- theorem mod_mem_iff - theorem principal_ideal_domain.is_maximal_ideal_of_irreducible + theorem principal_ideal_domain.is_maximal_of_irreducible Modified set_theory/cardinal.lean - theorem cardinal.mk_empty' + theorem cardinal.mk_emptyc - theorem cardinal.mk_plift_false + theorem cardinal.mk_plift_of_false + theorem cardinal.mk_plift_of_true - theorem cardinal.mk_plift_true - theorem cardinal.mk_union_of_disjiont + theorem cardinal.mk_union_of_disjoint Modified set_theory/ordinal.lean 2018-11-05 10:08:52-05:00 37c0d53 refactor(field_theory/finite): generalize proofs (#429) ESTIMATED CHANGES Modified data/equiv/algebra.lean + theorem equiv.coe_units_equiv_ne_zero + def equiv.units_equiv_ne_zero Modified data/nat/gcd.lean + theorem nat.gcd_gcd_self_left_left + theorem nat.gcd_gcd_self_left_right + theorem nat.gcd_gcd_self_right_left + theorem nat.gcd_gcd_self_right_right + theorem nat.gcd_mul_left_left + theorem nat.gcd_mul_left_right + theorem nat.gcd_mul_right_left + theorem nat.gcd_mul_right_right Modified data/zmod/quadratic_reciprocity.lean Modified field_theory/finite.lean + theorem card_nth_roots_subgroup_units - theorem coe_units_equiv_ne_zero - theorem finite_field.card_nth_roots_units - theorem finite_field.card_order_of_eq_totient - theorem finite_field.card_pow_eq_one_eq_order_of +/- theorem finite_field.card_units +/- theorem finite_field.prod_univ_units_id_eq_neg_one - theorem order_of_pow - def units_equiv_ne_zero Modified group_theory/order_of_element.lean + theorem card_order_of_eq_totient_aux₂ + theorem card_pow_eq_one_eq_order_of_aux + theorem is_cyclic.card_order_of_eq_totient + theorem is_cyclic.card_pow_eq_one_le + def is_cyclic.comm_group + theorem is_cyclic_of_card_pow_eq_one_le + theorem order_of_eq_card_of_forall_mem_gpowers - theorem order_of_eq_card_of_forall_mem_gppowers + theorem order_of_pow + theorem pow_gcd_card_eq_one_iff 2018-11-05 09:56:33-05:00 a64be8d feat(category/bifunctor): Bifunctor and bitraversable (#255) ESTIMATED CHANGES Modified category/applicative.lean Added category/bifunctor.lean + def bifunctor.bicompl + def bifunctor.bicompr + theorem bifunctor.comp_fst + theorem bifunctor.comp_snd + def bifunctor.fst + theorem bifunctor.fst_snd + theorem bifunctor.id_fst + theorem bifunctor.id_snd + def bifunctor.snd + theorem bifunctor.snd_fst Added category/bitraversable/basic.lean + def bisequence Added category/bitraversable/instances.lean + def bicompl.bitraverse + def bicompr.bitraverse + def const.bitraverse + def flip.bitraverse + def prod.bitraverse + def sum.bitraverse Added category/bitraversable/lemmas.lean + theorem bitraversable.comp_tfst + theorem bitraversable.comp_tsnd + theorem bitraversable.id_tfst + theorem bitraversable.id_tsnd + def bitraversable.tfst + theorem bitraversable.tfst_eq_fst_id + theorem bitraversable.tfst_tsnd + def bitraversable.tsnd + theorem bitraversable.tsnd_eq_snd_id + theorem bitraversable.tsnd_tfst Modified category/functor.lean + def functor.add_const + def functor.const.mk + def functor.const.run + def functor.const Modified category/traversable/instances.lean Modified data/sum.lean - def sum.map Modified tactic/basic.lean 2018-11-05 09:50:04-05:00 d556d6a refactor(topology/topological_space): rename open_set to opens and unbundle it (#427) ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem topological_space.opens.Sup_s + theorem topological_space.opens.ext + def topological_space.opens.gc + def topological_space.opens.gi + def topological_space.opens.interior + def topological_space.opens.is_basis + theorem topological_space.opens.is_basis_iff_cover + theorem topological_space.opens.is_basis_iff_nbhd + def topological_space.opens Modified category_theory/examples/topological_spaces.lean + def category_theory.examples.map + def category_theory.examples.map_id + theorem category_theory.examples.map_id_obj + def category_theory.examples.map_iso + def category_theory.examples.map_iso_id + def category_theory.examples.nbhd + def category_theory.examples.nbhds - def category_theory.examples.open_set.map - def category_theory.examples.open_set.map_id - theorem category_theory.examples.open_set.map_id_obj - def category_theory.examples.open_set.map_iso - def category_theory.examples.open_set.map_iso_id - def category_theory.examples.open_set.nbhd - def category_theory.examples.open_set.nbhds - structure category_theory.examples.open_set 2018-11-05 09:43:52-05:00 dcd90a3 feat(order/filter): ultrafilter monad and the Stone-Cech compactification (#434) * feat(order/filter): simplify theory of ultrafilters slightly Introduce an alternate characterization of ultrafilters, and use it to prove ultrafilter_map and ultrafilter_pure. * chore(*): rename ultrafilter to is_ultrafilter * feat(order/filter): the ultrafilter monad * feat(analysis/topology): closure, continuous maps and T2 spaces via ultrafilters For these, first prove that a filter is the intersection of the ultrafilters containing it. * feat(analysis/topology): Normal spaces. Compact Hausdorff spaces are normal. * feat(analysis/topology/stone_cech): the Stone-Čech compactification ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem compact_of_closed + theorem continuous_at_iff_ultrafilter + theorem continuous_iff_ultrafilter + theorem normal_of_compact_t2 Added analysis/topology/stone_cech.lean + theorem continuous_stone_cech_extend + theorem continuous_stone_cech_unit + theorem continuous_ultrafilter_extend + theorem convergent_eqv_pure + theorem dense_embedding_pure + def stone_cech + def stone_cech_extend + theorem stone_cech_extend_extends + def stone_cech_unit + theorem stone_cech_unit_dense + def ultrafilter.extend + def ultrafilter_basis + theorem ultrafilter_basis_is_basis + theorem ultrafilter_comap_pure_nhds + theorem ultrafilter_converges_iff + theorem ultrafilter_extend_eq_iff + theorem ultrafilter_extend_extends + theorem ultrafilter_is_closed_basic + theorem ultrafilter_is_open_basic + theorem ultrafilter_pure_injective Modified analysis/topology/topological_space.lean + theorem mem_closure_iff_ultrafilter + theorem t2_iff_nhds + theorem t2_iff_ultrafilter Modified analysis/topology/uniform_space.lean Modified order/filter.lean +/- theorem filter.exists_ultrafilter + theorem filter.exists_ultrafilter_iff + def filter.is_ultrafilter +/- theorem filter.le_of_ultrafilter +/- theorem filter.mem_of_finite_sUnion_ultrafilter +/- theorem filter.mem_or_compl_mem_of_ultrafilter +/- theorem filter.mem_or_mem_of_ultrafilter + theorem filter.range_mem_map + theorem filter.sup_of_ultrafilters + theorem filter.tendsto_iff_ultrafilter + def filter.ultrafilter.bind + theorem filter.ultrafilter.eq_iff_val_le_val + def filter.ultrafilter.map + def filter.ultrafilter.pure +/- def filter.ultrafilter + theorem filter.ultrafilter_bind + theorem filter.ultrafilter_iff_compl_mem_iff_not_mem +/- theorem filter.ultrafilter_map +/- theorem filter.ultrafilter_of_spec - theorem filter.ultrafilter_of_split +/- theorem filter.ultrafilter_of_ultrafilter +/- theorem filter.ultrafilter_pure +/- theorem filter.ultrafilter_ultrafilter_of +/- theorem filter.ultrafilter_unique 2018-11-05 09:39:57-05:00 62538c8 feat(analysis/metric_spaces): Compact and proper spaces (#430) ESTIMATED CHANGES Modified analysis/metric_space.lean + theorem ball_subset_closed_ball + theorem countable_closure_of_compact + theorem finite_cover_balls_of_compact + theorem mem_closure_iff' + theorem second_countable_of_separable_metric_space Modified analysis/topology/continuity.lean + theorem compact_univ - theorem locally_compact_of_compact Modified analysis/topology/uniform_space.lean + theorem complete_of_compact_set Modified data/real/basic.lean + theorem real.le_of_forall_epsilon_le 2018-11-05 09:03:45-05:00 47a0a22 fix(algebra/ordered_group): make instances defeq (#442) ESTIMATED CHANGES Modified algebra/ordered_group.lean 2018-11-05 09:03:15-05:00 8ae3fb8 feat(ring_theory/subring): ring.closure (#444) ESTIMATED CHANGES Modified group_theory/subgroup.lean + theorem add_group.in_closure.rec_on Modified group_theory/submonoid.lean + theorem add_monoid.in_closure.rec_on Modified ring_theory/subring.lean + def ring.closure + theorem ring.closure_subset + theorem ring.closure_subset_iff + theorem ring.exists_list_of_mem_closure + theorem ring.mem_closure + theorem ring.subset_closure 2018-11-05 09:01:57-05:00 849d2a4 feat(analysis/topology/topological_space): define T0 spaces, T4 spaces, connected and irreducible sets and components (#448) ESTIMATED CHANGES Modified analysis/topology/topological_space.lean +/- theorem closure_singleton + def connected_component + theorem eq_irreducible_component + theorem exists_irreducible + theorem exists_mem_inter + theorem exists_open_singleton_of_fintype + def irreducible_component + theorem irreducible_component_subset_connected_component + theorem irreducible_exists_mem_inter + def is_clopen + theorem is_clopen_compl + theorem is_clopen_compl_iff + theorem is_clopen_diff + theorem is_clopen_empty + theorem is_clopen_iff + theorem is_clopen_inter + theorem is_clopen_union + theorem is_clopen_univ + theorem is_closed_connected_component +/- theorem is_closed_imp + theorem is_closed_irreducible_component + def is_connected + theorem is_connected_closure + theorem is_connected_connected_component + theorem is_connected_empty + theorem is_connected_of_is_irreducible + theorem is_connected_sUnion + theorem is_connected_singleton + theorem is_connected_union + def is_irreducible + theorem is_irreducible_closure + theorem is_irreducible_empty + theorem is_irreducible_irreducible_component + theorem is_irreducible_singleton + def is_totally_disconnected + theorem is_totally_disconnected_empty + theorem is_totally_disconnected_of_is_totally_separated + theorem is_totally_disconnected_singleton + def is_totally_separated + theorem is_totally_separated_empty + theorem is_totally_separated_singleton + theorem mem_connected_component + theorem mem_irreducible_component + theorem normal_separation + theorem subset_connected_component 2018-11-05 08:59:28-05:00 8898f0e feat(data/real/irrational): add basic irrational facts (#453) Joint work by Abhimanyu Pallavi Sudhir, Jean Lo, Calle Sönne, Kenny Lau, and Chris Hughes ESTIMATED CHANGES Modified algebra/group_power.lean + theorem int.nat_abs_pow Added data/int/sqrt.lean + theorem int.exists_mul_self + def int.sqrt + theorem int.sqrt_eq + theorem int.sqrt_nonneg Modified data/nat/sqrt.lean + theorem nat.exists_mul_self Modified data/padics/padic_norm.lean Modified data/rat.lean + theorem rat.abs_def + theorem rat.cast_pow + theorem rat.exists_mul_self + theorem rat.mk_pnat_denom + theorem rat.mk_pnat_num + theorem rat.mul_denom + theorem rat.mul_num + theorem rat.mul_self_denom + theorem rat.mul_self_num + def rat.sqrt + theorem rat.sqrt_eq + theorem rat.sqrt_nonneg Modified data/real/irrational.lean + theorem irr_add_rat_iff_irr + theorem irr_mul_rat_iff_irr + theorem irr_neg + theorem irr_nrt_of_n_not_dvd_padic_val + theorem irr_nrt_of_notint_nrt + theorem irr_of_irr_mul_self + theorem irr_rat_add_iff_irr + theorem irr_rat_add_of_irr + theorem irr_sqrt_of_padic_val_odd + theorem irr_sqrt_of_prime + theorem irr_sqrt_rat_iff + theorem irr_sqrt_two - theorem sqrt_two_irrational 2018-11-05 08:57:04-05:00 94b09d6 refactor(data/real/basic): make real irreducible (#454) ESTIMATED CHANGES Modified analysis/complex.lean Modified analysis/limits.lean +/- theorem tendsto_pow_at_top_at_top_of_gt_1_nat Modified analysis/real.lean Modified data/complex/basic.lean +/- theorem complex.I_mul_I +/- theorem complex.conj_I +/- theorem complex.conj_neg_I +/- theorem complex.conj_of_real +/- theorem complex.conj_one +/- theorem complex.conj_zero +/- theorem complex.norm_sq_I +/- theorem complex.norm_sq_one +/- theorem complex.norm_sq_zero +/- theorem complex.of_real_add +/- theorem complex.of_real_bit0 +/- theorem complex.of_real_bit1 +/- theorem complex.of_real_neg +/- theorem complex.of_real_sub Modified data/complex/exponential.lean Modified data/padics/hensel.lean Modified data/real/basic.lean + def real.comm_ring_aux + def real.mk + theorem real.mk_eq + theorem real.mk_eq_mk + theorem real.quotient_mk_eq_mk 2018-11-05 08:56:18-05:00 c57a9a6 fix(category_theory/isomorphism): use `category_theory.inv` in simp lemmas `category_theory.is_iso.inv` is not the preferred name for this. ESTIMATED CHANGES Modified category_theory/isomorphism.lean +/- def category_theory.is_iso.hom_inv_id +/- def category_theory.is_iso.inv_hom_id 2018-11-05 08:53:41-05:00 354d59e feat(data/nat/basic,algebra/ring): adding two lemmas about division (#385) ESTIMATED CHANGES Modified algebra/ring.lean + theorem dvd_add_left + theorem dvd_add_right Modified data/nat/basic.lean 2018-11-05 13:47:01+01:00 279b9ed feat(ring_theory/matrix): add minor, sub_[left|right|up|down], sub_[left|right]_[up][down] (#389) Also add fin.nat_add. ESTIMATED CHANGES Modified data/fin.lean + def fin.nat_add Modified ring_theory/matrix.lean + def matrix.minor + def matrix.sub_down + def matrix.sub_down_left + def matrix.sub_down_right + def matrix.sub_left + def matrix.sub_right + def matrix.sub_up + def matrix.sub_up_left + def matrix.sub_up_right 2018-11-05 11:45:33+01:00 c56bb3b feat(tactic/norm_num): permit `norm_num(1)` inside `conv` ESTIMATED CHANGES Modified docs/extras/conv.md Modified docs/tactics.md Modified tactic/norm_num.lean Modified tests/tactics.lean 2018-11-05 11:45:33+01:00 b092755 doc(docs/conv): document additions ESTIMATED CHANGES Modified docs/extras/conv.md Modified docs/tactics.md 2018-11-05 11:45:33+01:00 fb57843 feat(tactic/ring(2)): permit `ring` and `ring2` inside `conv` ESTIMATED CHANGES Modified tactic/converter/interactive.lean Modified tactic/ring.lean Modified tactic/ring2.lean Modified tests/tactics.lean 2018-11-05 11:45:33+01:00 d560431 feat(tactic/basic): add `lock_tactic_state` For state-preserving tactic invocations (extracting the result) ESTIMATED CHANGES Modified tactic/basic.lean 2018-11-05 11:45:33+01:00 350e6e2 feat(tactic/conv): add `erw`, `conv_lhs`, and `conv_rhs` ESTIMATED CHANGES Modified docs/extras/conv.md Modified docs/tactics.md Modified tactic/converter/interactive.lean Modified tests/tactics.lean 2018-11-05 05:21:48-05:00 aed8194 feat(docs/extras) add doc about coercions between number types (#443) ESTIMATED CHANGES Added docs/extras/casts.md 2018-11-05 05:20:29-05:00 072a11e feat(data/polynomial): polynomial.comp (#441) ESTIMATED CHANGES Modified data/polynomial.lean + theorem polynomial.C_comp + theorem polynomial.C_pow + theorem polynomial.X_comp + theorem polynomial.add_comp + def polynomial.comp + theorem polynomial.comp_C + theorem polynomial.comp_X + theorem polynomial.comp_one + theorem polynomial.comp_zero +/- theorem polynomial.degree_sum_le + theorem polynomial.eval_comp + theorem polynomial.eval₂_comp + theorem polynomial.eval₂_sum + theorem polynomial.mul_comp + theorem polynomial.one_comp + theorem polynomial.zero_comp 2018-11-05 05:19:00-05:00 1cadd48 feat(data/list): mfoldl, mfoldr theorems; reverse_foldl ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.mfoldl_append + theorem list.mfoldl_cons + theorem list.mfoldl_nil + theorem list.mfoldr_append + theorem list.mfoldr_cons + theorem list.mfoldr_nil + theorem list.reverse_foldl 2018-11-05 05:07:45-05:00 b934956 feat(data/int/basic): make coe_nat_le, coe_nat_lt, coe_nat_inj' into simp lemmas ESTIMATED CHANGES Modified data/int/basic.lean +/- theorem int.coe_nat_inj' +/- theorem int.coe_nat_le +/- theorem int.coe_nat_lt 2018-11-05 05:07:04-05:00 f5ce71f fix(tactic/eval_expr): often crashes when reflecting expressions (#358) ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/replacer.lean 2018-11-05 05:03:22-05:00 f00ed77 feat(data/complex/basic): I_ne_zero and cast_re, cast_im lemmas ESTIMATED CHANGES Modified data/complex/basic.lean + theorem complex.I_ne_zero + theorem complex.int_cast_im + theorem complex.int_cast_re + theorem complex.nat_cast_im + theorem complex.nat_cast_re + theorem complex.rat_cast_im + theorem complex.rat_cast_re 2018-11-03 20:19:22-04:00 3f5ec68 fix(*): make three `trans_apply`s rfl-lemmas ESTIMATED CHANGES Modified data/equiv/basic.lean +/- theorem equiv.trans_apply Modified order/order_iso.lean +/- theorem order_embedding.trans_apply Modified set_theory/ordinal.lean +/- theorem initial_seg.trans_apply 2018-10-31 21:17:26+01:00 74ae8ce fix(data/real,data/rat): make orders on real and rat irreducible ESTIMATED CHANGES Modified analysis/complex.lean Modified data/rat.lean Modified data/real/basic.lean 2018-10-30 12:26:55-04:00 58909bd feat(*): monovariate and multivariate eval\2 now do not take is_semiring_hom as an argument ESTIMATED CHANGES Modified data/polynomial.lean Modified linear_algebra/multivariate_polynomial.lean 2018-10-30 12:24:35-04:00 90982d7 feat(tactic/fin_cases): a tactic to case bash on `fin n` (#352) * feat(tactic/fin_cases): a tactic to case bash on `fin n` * using core is_numeral * removing guard just rely on eval_expr to decide if we have an explicit nat * add parsing, tests, documentation * don't fail if the rewrite fails * fixes ESTIMATED CHANGES Modified data/fin.lean + def fin.mk_val Modified docs/tactics.md Added tactic/fin_cases.lean Added tests/fin_cases.lean 2018-10-30 12:23:50-04:00 e585bed feat(data/int/basic): bounded forall is decidable for integers ESTIMATED CHANGES Modified data/int/basic.lean + theorem int.mem_range_iff + def int.range 2018-10-30 12:23:04-04:00 489050b feat(tactic/tauto): add an option for `tauto` to work in classical logic ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/interactive.lean Modified tactic/tauto.lean Modified tactic/wlog.lean Modified tests/tactics.lean 2018-10-19 00:14:30+02:00 ed84298 feat(analysis/topology): add continuity rules for list and vector insert/remove_nth ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem list.continuous_insert_nth + theorem list.continuous_remove_nth + theorem list.tendsto_cons' + theorem list.tendsto_cons + theorem list.tendsto_cons_iff + theorem list.tendsto_insert_nth' + theorem list.tendsto_insert_nth + theorem list.tendsto_length + theorem list.tendsto_nhds + theorem list.tendsto_remove_nth + theorem tendsto_subtype_rng + theorem tendsto_subtype_val + theorem vector.cons_val + theorem vector.continuous_insert_nth' + theorem vector.continuous_insert_nth + theorem vector.continuous_remove_nth + theorem vector.tendsto_cons + theorem vector.tendsto_insert_nth + theorem vector.tendsto_remove_nth Modified analysis/topology/topological_space.lean + theorem nhds_cons + theorem nhds_nil Modified analysis/topology/uniform_space.lean 2018-10-19 00:03:08+02:00 f6812d5 feat(analysis/topology): add type class for discrete topological spaces ESTIMATED CHANGES Modified analysis/topology/continuity.lean Modified analysis/topology/topological_space.lean + theorem is_open_discrete - theorem is_open_top + theorem nhds_discrete + theorem nhds_top - theorem t2_space_top + theorem tendsto_pure_nhds Modified order/filter.lean + theorem filter.map_prod + theorem filter.mem_map_seq_iff + theorem filter.mem_pure_iff + theorem filter.prod_eq + theorem filter.tendsto_const_pure + theorem filter.tendsto_pure_pure 2018-10-18 23:05:00+02:00 99e14cd feat(group_theory/quotient_group): add map : quotient N -> quotient M ESTIMATED CHANGES Modified group_theory/quotient_group.lean + def quotient_group.map 2018-10-18 23:02:03+02:00 f52d2cc chore(group_theory/free_abelian_group, abelianization): rename to_comm_group, to_add_comm_group -> lift ESTIMATED CHANGES Modified group_theory/abelianization.lean + theorem abelianization.lift.of + theorem abelianization.lift.unique + def abelianization.lift - def abelianization.to_comm_group.is_group_hom - theorem abelianization.to_comm_group.of - theorem abelianization.to_comm_group.unique - def abelianization.to_comm_group Modified group_theory/free_abelian_group.lean + theorem free_abelian_group.lift.map_hom + def free_abelian_group.lift.universal + def free_abelian_group.lift - def free_abelian_group.to_add_comm_group.UMP - def free_abelian_group.to_add_comm_group Modified group_theory/subgroup.lean + theorem group.closure_subset_iff Modified linear_algebra/tensor_product.lean 2018-10-18 13:48:14+02:00 c3e489c chore(data/fin): add cast_add ESTIMATED CHANGES Modified data/fin.lean + def fin.cast_add +/- def fin.cast_le +/- def fin.cast_succ 2018-10-18 09:43:01+02:00 f2beca8 feat(ring_theory): prove principal_ideal_domain is unique factorization domain ESTIMATED CHANGES Modified linear_algebra/submodule.lean + theorem submodule.mem_span_singleton + theorem submodule.span_singleton_subset Modified ring_theory/associated.lean - theorem associated.associated_of_dvd_dvd - theorem associated.associated_one_iff_is_unit - theorem associated.associated_one_of_associated_mul_one - theorem associated.associated_one_of_mul_eq_one - theorem associated.associated_zero_iff_eq_zero - theorem associated.unit_associated_one + theorem associated_mul_mul + theorem associated_of_dvd_dvd + theorem associated_one_iff_is_unit + theorem associated_one_of_associated_mul_one + theorem associated_one_of_mul_eq_one + theorem associated_zero_iff_eq_zero + theorem associates.dvd_eq_le + theorem associates.eq_of_mul_eq_mul_left + theorem associates.exists_mem_multiset_le_of_prime + theorem associates.le_of_mul_le_mul_left + theorem associates.one_or_eq_of_le_of_prime + def associates.prime + theorem associates.prime_mk + theorem exists_mem_multiset_dvd_of_prime +/- theorem is_unit_iff_dvd_one +/- theorem is_unit_iff_forall_dvd - theorem is_unit_mul_units + theorem is_unit_of_dvd_one + theorem is_unit_of_mul_one + theorem not_prime_zero + def prime + theorem unit_associated_one + theorem units.is_unit_mul_units - theorem units.is_unit_of_mul_one Modified ring_theory/principal_ideal_domain.lean +/- theorem is_prime_ideal.to_maximal_ideal +/- theorem mod_mem_iff + theorem principal_ideal_domain.associated_of_associated_prod_prod + theorem principal_ideal_domain.associates_prime_of_irreducible + theorem principal_ideal_domain.eq_of_prod_eq_associates + theorem principal_ideal_domain.exists_factors + theorem principal_ideal_domain.factors_decreasing + theorem principal_ideal_domain.factors_spec + theorem principal_ideal_domain.is_maximal_ideal_of_irreducible + theorem principal_ideal_domain.is_noetherian_ring + theorem principal_ideal_domain.prime_of_irreducible 2018-10-18 09:41:00+02:00 7b876a2 cleanup(data/nat/choose,binomial): move binomial into choose ESTIMATED CHANGES Modified data/complex/exponential.lean Deleted data/nat/binomial.lean - theorem add_pow Modified data/nat/choose.lean + theorem add_pow Modified data/padics/hensel.lean Modified data/polynomial.lean 2018-10-18 09:08:54+02:00 a46e8f7 cleanup(ring_theory/principal_ideal_domain): restructure ESTIMATED CHANGES Modified ring_theory/principal_ideal_domain.lean +/- theorem is_prime_ideal.to_maximal_ideal 2018-10-18 00:33:42+02:00 a3ac630 feat(algebra,group_theory): add various closure properties of subgroup and is_group_hom w.r.t gsmul, prod, sum ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.gsmul_sum + theorem finset.prod_eq_one + theorem is_group_hom.finset_prod + theorem is_group_hom.multiset_prod + theorem is_group_hom_finset_prod Modified algebra/group.lean + theorem is_add_group_hom_sub + theorem is_group_hom_inv + theorem is_group_hom_mul Modified algebra/group_power.lean + theorem gsmul_neg + theorem gsmul_sub + theorem is_add_group_hom.gsmul + theorem is_add_group_hom.smul + theorem is_add_group_hom_gsmul Modified algebra/pi_instances.lean + theorem pi.finset_prod_apply + theorem pi.list_prod_apply + theorem pi.multiset_prod_apply Modified group_theory/subgroup.lean + theorem is_add_subgroup.sub_mem Modified group_theory/submonoid.lean + theorem is_submonoid.finset_prod_mem +/- theorem is_submonoid.list_prod_mem + theorem is_submonoid.multiset_prod_mem 2018-10-17 23:01:03+02:00 ea962a7 chore(analysis/topology/continuity): locally_compact_space is Prop ESTIMATED CHANGES Modified analysis/topology/continuity.lean 2018-10-17 22:49:26+02:00 bac655d feature(data/vector2, data/list): add insert_nth for vectors and lists ESTIMATED CHANGES Modified data/equiv/fin.lean Modified data/fin.lean + theorem fin.cast_succ_inj + theorem fin.eq_iff_veq + theorem fin.pred_inj Modified data/list/basic.lean + def list.insert_nth + theorem list.insert_nth_comm + theorem list.insert_nth_nil + theorem list.insert_nth_remove_nth_of_ge + theorem list.insert_nth_remove_nth_of_le + theorem list.length_insert_nth + theorem list.modify_nth_tail_id + theorem list.modify_nth_tail_modify_nth_tail + theorem list.modify_nth_tail_modify_nth_tail_le + theorem list.modify_nth_tail_modify_nth_tail_same + theorem list.remove_nth_insert_nth Modified data/vector2.lean + def vector.insert_nth + theorem vector.insert_nth_comm + theorem vector.insert_nth_val + def vector.m_of_fn + def vector.mmap + theorem vector.remove_nth_insert_nth + theorem vector.remove_nth_insert_nth_ne + theorem vector.remove_nth_val - def vector.{u} 2018-10-17 20:57:36+02:00 085b1bc cleanup(algebra/group_power): remove inactive to_additive ESTIMATED CHANGES Modified algebra/group_power.lean 2018-10-17 20:56:45+02:00 1008f08 cleanup(tactic): remove example ESTIMATED CHANGES Modified tactic/interactive.lean 2018-10-17 16:12:26+02:00 5a8e28d doc(docs/tactic): unify choose doc (#426) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean 2018-10-17 13:50:02+02:00 72308d8 chore(data/fin): use uniform names; restructure ESTIMATED CHANGES Modified data/equiv/fin.lean + def fin_one_equiv + def fin_two_equiv + def fin_zero_equiv Modified data/fin.lean +/- def fin.add_nat + theorem fin.add_nat_val - def fin.ascend - theorem fin.ascend_descend - theorem fin.ascend_ne +/- def fin.cases +/- theorem fin.cases_succ +/- theorem fin.cases_zero + def fin.cast + def fin.cast_le + def fin.cast_lt + theorem fin.cast_lt_val + def fin.cast_succ + theorem fin.cast_succ_cast_lt + theorem fin.cast_succ_val - def fin.descend - theorem fin.descend_ascend - theorem fin.eq_of_lt_succ_of_not_lt - theorem fin.fin.raise_val - def fin.fin_zero_elim + theorem fin.le_iff_val_le_val - def fin.lower - def fin.lower_left - def fin.lower_right - theorem fin.lower_val + theorem fin.lt_iff_val_lt_val - def fin.nat_add + def fin.pred_above + theorem fin.pred_above_succ_above - def fin.raise - theorem fin.raise_lower - def fin.raise_nat - theorem fin.raise_val + def fin.sub_nat + theorem fin.sub_nat_val + def fin.succ_above + theorem fin.succ_above_descend + theorem fin.succ_above_ne +/- theorem fin.succ_rec_on_succ +/- theorem fin.succ_rec_on_zero + theorem fin.zero_le + def fin_zero_elim Modified data/nat/basic.lean + theorem nat.eq_of_lt_succ_of_not_lt 2018-10-17 13:50:02+02:00 d2b3940 feat(data/fin): ascend / descend for fin ESTIMATED CHANGES Modified data/fin.lean - theorem eq_of_lt_succ_of_not_lt + def fin.ascend + theorem fin.ascend_descend + theorem fin.ascend_ne +/- def fin.cases +/- theorem fin.cases_succ +/- theorem fin.cases_zero + def fin.descend + theorem fin.descend_ascend + theorem fin.eq_of_lt_succ_of_not_lt + theorem fin.fin.raise_val + def fin.fin_zero_elim + def fin.lower + def fin.lower_left + def fin.lower_right + theorem fin.lower_val + theorem fin.pred_succ + theorem fin.raise_lower + def fin.raise_nat + theorem fin.raise_val + theorem fin.succ_pred +/- def fin.succ_rec +/- def fin.succ_rec_on +/- theorem fin.succ_rec_on_succ +/- theorem fin.succ_rec_on_zero - def lower_left - def lower_right - def raise_nat 2018-10-17 13:50:02+02:00 f789969 feat(data/finset): add min' / max' for non-empty finset ESTIMATED CHANGES Modified data/finset.lean + theorem finset.filter_true + theorem finset.le_max' + theorem finset.le_min' + theorem finset.lt_wf + def finset.max' + theorem finset.max'_le + theorem finset.max'_mem + def finset.min' + theorem finset.min'_le + theorem finset.min'_lt_max' + theorem finset.min'_mem 2018-10-17 13:50:02+02:00 ef9566d feat(data/equiv): equivalences for fin * fin and fin + fin ESTIMATED CHANGES Modified data/equiv/basic.lean - theorem equiv.apply_eq_iff_eq_inverse_apply + theorem equiv.eq_symm_apply +/- theorem equiv.ext + theorem equiv.perm.ext + theorem equiv.symm_apply_eq Added data/equiv/fin.lean + def fin_prod_fin_equiv + def sum_fin_sum_equiv 2018-10-17 13:50:02+02:00 b085915 feat(data/list): length_attach, nth_le_attach, nth_le_range, of_fn_eq_pmap, nodup_of_fn (by @kckennylau) ESTIMATED CHANGES Modified data/fintype.lean +/- theorem finset.coe_univ Modified data/list/basic.lean + theorem list.length_attach +/- theorem list.length_of_fn + theorem list.nodup_of_fn + theorem list.nth_le_attach +/- theorem list.nth_le_of_fn + theorem list.nth_le_range + theorem list.of_fn_eq_pmap 2018-10-17 13:50:02+02:00 b454dae feat(group_theory/perm): swap_mul_swal / swap_swap_apply (by @kckennylau) ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.pred_eq_of_eq_succ Modified group_theory/perm.lean +/- theorem equiv.perm.eq_sign_of_surjective_hom +/- theorem equiv.perm.sign_aux3_symm_trans_trans +/- theorem equiv.perm.sign_bij +/- theorem equiv.perm.sign_eq_of_is_swap +/- theorem equiv.perm.sign_eq_sign_of_equiv +/- theorem equiv.perm.sign_inv +/- theorem equiv.perm.sign_mul +/- theorem equiv.perm.sign_of_subtype +/- theorem equiv.perm.sign_one +/- theorem equiv.perm.sign_prod_list_swap + theorem equiv.perm.sign_refl +/- theorem equiv.perm.sign_subtype_perm + theorem equiv.perm.sign_swap' +/- theorem equiv.perm.sign_swap +/- theorem equiv.perm.sign_symm_trans_trans + theorem equiv.perm.swap_mul_self + theorem equiv.perm.swap_swap_apply 2018-10-17 09:46:54+02:00 530e1d1 refactor (data/finset): explicit arguments for subset_union_* and inter_subset_* This change makes them a little easier to apply, and also makes them consistent with their analogues in set.basic. ESTIMATED CHANGES Modified analysis/topology/infinite_sum.lean Modified data/finset.lean +/- theorem finset.inter_subset_left +/- theorem finset.inter_subset_right +/- theorem finset.subset_union_left +/- theorem finset.subset_union_right Modified data/finsupp.lean 2018-10-17 09:25:02+02:00 b5cd974 feat(*): trigonometric functions: exp, log, sin, cos, tan, sinh, cosh, tanh, pi, arcsin, argcos, arg (#386) * `floor_ring` now is parameterized on a `linear_ordered_ring` instead of extending it. * ESTIMATED CHANGES Modified algebra/archimedean.lean + theorem sub_floor_div_mul_lt + theorem sub_floor_div_mul_nonneg Modified algebra/group_power.lean + theorem inv_pow' + theorem pow_le_one Modified algebra/ordered_field.lean + theorem div_le_div_of_le_left + theorem one_le_inv Modified algebra/ordered_ring.lean + theorem mul_le_of_le_one_left + theorem mul_le_of_le_one_right + theorem mul_lt_one_of_nonneg_of_lt_one_left + theorem mul_lt_one_of_nonneg_of_lt_one_right + theorem one_lt_mul_of_le_of_lt + theorem one_lt_mul_of_lt_of_le Modified analysis/complex.lean + theorem complex.continuous_im - theorem complex.continuous_mul + theorem complex.continuous_of_real + theorem complex.continuous_re + theorem complex.uniform_continuous_im + theorem complex.uniform_continuous_of_real + theorem complex.uniform_continuous_re Added analysis/exponential.lean + theorem complex.arg_I + theorem complex.arg_cos_add_sin_mul_I + theorem complex.arg_eq_arg_iff + theorem complex.arg_eq_arg_neg_add_pi_of_im_nonneg_of_re_neg + theorem complex.arg_eq_arg_neg_sub_pi_of_im_neg_of_re_neg + theorem complex.arg_le_pi + theorem complex.arg_neg_I + theorem complex.arg_neg_one + theorem complex.arg_of_real_of_neg + theorem complex.arg_of_real_of_nonneg + theorem complex.arg_one + theorem complex.arg_real_mul + theorem complex.arg_zero + theorem complex.continuous_cos + theorem complex.continuous_cosh + theorem complex.continuous_exp + theorem complex.continuous_sin + theorem complex.continuous_sinh + theorem complex.continuous_tan + theorem complex.cos_add_pi + theorem complex.cos_add_pi_div_two + theorem complex.cos_add_two_pi + theorem complex.cos_arg + theorem complex.cos_int_mul_two_pi + theorem complex.cos_int_mul_two_pi_add_pi + theorem complex.cos_nat_mul_two_pi + theorem complex.cos_pi + theorem complex.cos_pi_div_two + theorem complex.cos_pi_div_two_sub + theorem complex.cos_pi_sub + theorem complex.cos_sub_pi_div_two + theorem complex.cos_two_pi + theorem complex.exp_inj_of_neg_pi_lt_of_le_pi + theorem complex.exp_log + theorem complex.ext_abs_arg + theorem complex.log_I + theorem complex.log_exp + theorem complex.log_im + theorem complex.log_neg_I + theorem complex.log_neg_one + theorem complex.log_one + theorem complex.log_re + theorem complex.log_zero + theorem complex.neg_pi_lt_arg + theorem complex.of_real_log + theorem complex.sin_add_pi + theorem complex.sin_add_pi_div_two + theorem complex.sin_add_two_pi + theorem complex.sin_arg + theorem complex.sin_int_mul_pi + theorem complex.sin_nat_mul_pi + theorem complex.sin_pi + theorem complex.sin_pi_div_two + theorem complex.sin_pi_div_two_sub + theorem complex.sin_pi_sub + theorem complex.sin_sub_pi_div_two + theorem complex.sin_two_pi + theorem complex.tan_arg + theorem complex.tendsto_exp_zero_one + theorem real.abs_div_sqrt_one_add_lt + theorem real.arccos_cos + theorem real.arccos_eq_pi_div_two_sub_arcsin + theorem real.arccos_inj + theorem real.arccos_le_pi + theorem real.arccos_neg + theorem real.arccos_neg_one + theorem real.arccos_nonneg + theorem real.arccos_one + theorem real.arccos_zero + theorem real.arcsin_eq_pi_div_two_sub_arccos + theorem real.arcsin_eq_zero_iff + theorem real.arcsin_inj + theorem real.arcsin_le_pi_div_two + theorem real.arcsin_neg + theorem real.arcsin_neg_one + theorem real.arcsin_nonneg + theorem real.arcsin_nonpos + theorem real.arcsin_one + theorem real.arcsin_pos + theorem real.arcsin_sin + theorem real.arcsin_zero + theorem real.arctan_lt_pi_div_two + theorem real.arctan_neg + theorem real.arctan_tan + theorem real.arctan_zero + theorem real.continuous_cos + theorem real.continuous_cosh + theorem real.continuous_exp + theorem real.continuous_sin + theorem real.continuous_sinh + theorem real.continuous_tan + theorem real.cos_add_pi + theorem real.cos_add_pi_div_two + theorem real.cos_add_two_pi + theorem real.cos_arccos + theorem real.cos_arcsin + theorem real.cos_arcsin_nonneg + theorem real.cos_arctan + theorem real.cos_eq_one_iff + theorem real.cos_eq_one_iff_of_lt_of_lt + theorem real.cos_inj_of_nonneg_of_le_pi + theorem real.cos_int_mul_two_pi + theorem real.cos_int_mul_two_pi_add_pi + theorem real.cos_le_cos_of_nonneg_of_le_pi + theorem real.cos_lt_cos_of_nonneg_of_le_pi + theorem real.cos_lt_cos_of_nonneg_of_le_pi_div_two + theorem real.cos_nat_mul_two_pi + theorem real.cos_neg_of_pi_div_two_lt_of_lt + theorem real.cos_nonneg_of_neg_pi_div_two_le_of_le_pi_div_two + theorem real.cos_nonpos_of_pi_div_two_le_of_le + theorem real.cos_pi + theorem real.cos_pi_div_two + theorem real.cos_pi_div_two_sub + theorem real.cos_pi_sub + theorem real.cos_pos_of_neg_pi_div_two_lt_of_lt_pi_div_two + theorem real.cos_sub_pi_div_two + theorem real.cos_two_pi + theorem real.div_sqrt_one_add_lt_one + theorem real.exists_cos_eq_zero + theorem real.exists_exp_eq_of_pos + theorem real.exists_sin_eq + theorem real.exp_log + theorem real.log_exp + theorem real.log_one + theorem real.log_zero + theorem real.neg_one_lt_div_sqrt_one_add + theorem real.neg_pi_div_two_le_arcsin + theorem real.neg_pi_div_two_lt_arctan + theorem real.one_le_pi_div_two + theorem real.pi_div_two_le_two + theorem real.pi_div_two_pos + theorem real.pi_le_four + theorem real.pi_pos + theorem real.sin_add_pi + theorem real.sin_add_pi_div_two + theorem real.sin_add_two_pi + theorem real.sin_arccos + theorem real.sin_arcsin + theorem real.sin_arctan + theorem real.sin_eq_zero_iff + theorem real.sin_eq_zero_iff_cos_eq + theorem real.sin_eq_zero_iff_of_lt_of_lt + theorem real.sin_inj_of_le_of_le_pi_div_two + theorem real.sin_int_mul_pi + theorem real.sin_le_sin_of_le_of_le_pi_div_two + theorem real.sin_lt_sin_of_le_of_le_pi_div_two + theorem real.sin_nat_mul_pi + theorem real.sin_neg_of_neg_of_neg_pi_lt + theorem real.sin_nonneg_of_nonneg_of_le_pi + theorem real.sin_nonpos_of_nonnpos_of_neg_pi_le + theorem real.sin_pi + theorem real.sin_pi_div_two + theorem real.sin_pi_div_two_sub + theorem real.sin_pi_sub + theorem real.sin_pos_of_pos_of_lt_pi + theorem real.sin_sub_pi_div_two + theorem real.sin_two_pi + theorem real.tan_arctan + theorem real.tan_inj_of_lt_of_lt_pi_div_two + theorem real.tan_lt_tan_of_lt_of_lt_pi_div_two + theorem real.tan_lt_tan_of_nonneg_of_lt_pi_div_two + theorem real.tan_neg_of_neg_of_pi_div_two_lt + theorem real.tan_nonneg_of_nonneg_of_le_pi_div_two + theorem real.tan_nonpos_of_nonpos_of_neg_pi_div_two_le + theorem real.tan_pos_of_pos_of_lt_pi_div_two + theorem real.tan_surjective + theorem real.two_le_pi + theorem real.two_pi_pos Modified analysis/real.lean - theorem real.continuous_mul + theorem real.intermediate_value' + theorem real.intermediate_value Modified data/complex/basic.lean + theorem complex.I_mul_I + theorem complex.abs_cast_nat + theorem complex.abs_im_div_abs_le_one + theorem complex.abs_re_div_abs_le_one + theorem complex.abs_two + theorem complex.bit0_im + theorem complex.bit0_re + theorem complex.bit1_im + theorem complex.bit1_re + theorem complex.conj_neg_I + theorem complex.conj_pow + theorem complex.conj_sub + theorem complex.conj_two + theorem complex.eq_lim_of_const_equiv + theorem complex.im_const_equiv_of_const_equiv + theorem complex.is_cau_seq_abs + theorem complex.is_cau_seq_conj + theorem complex.lim_abs + theorem complex.lim_add + theorem complex.lim_conj + theorem complex.lim_const + theorem complex.lim_eq_lim_of_equiv + theorem complex.lim_eq_of_equiv_const + theorem complex.lim_eq_zero_iff + theorem complex.lim_inv + theorem complex.lim_mul + theorem complex.lim_mul_lim + theorem complex.lim_neg + theorem complex.norm_sq_eq_abs + theorem complex.of_real_pow +/- theorem complex.of_real_zero + theorem complex.re_const_equiv_of_const_equiv Added data/complex/exponential.lean + theorem abv_sum_le_sum_abv + theorem cauchy_product + theorem complex.abs_cos_add_sin_mul_I + theorem complex.abs_exp_eq_iff_re_eq + theorem complex.abs_exp_of_real + theorem complex.abs_exp_sub_one_le + def complex.cos + theorem complex.cos_add + theorem complex.cos_conj + theorem complex.cos_neg + theorem complex.cos_of_real_im + theorem complex.cos_of_real_re + theorem complex.cos_sub + theorem complex.cos_two_mul + theorem complex.cos_zero + def complex.cosh + theorem complex.cosh_add + theorem complex.cosh_conj + theorem complex.cosh_neg + theorem complex.cosh_of_real_im + theorem complex.cosh_of_real_re + theorem complex.cosh_sub + theorem complex.cosh_zero + def complex.exp' + def complex.exp + theorem complex.exp_add + theorem complex.exp_add_mul_I + theorem complex.exp_bound + theorem complex.exp_conj + theorem complex.exp_eq_exp_re_mul_sin_add_cos + theorem complex.exp_mul_I + theorem complex.exp_ne_zero + theorem complex.exp_neg + theorem complex.exp_of_real_im + theorem complex.exp_of_real_re + theorem complex.exp_sub + theorem complex.exp_zero + theorem complex.is_cau_abs_exp + theorem complex.is_cau_exp + theorem complex.of_real_cos + theorem complex.of_real_cos_of_real_re + theorem complex.of_real_cosh + theorem complex.of_real_cosh_of_real_re + theorem complex.of_real_exp + theorem complex.of_real_exp_of_real_re + theorem complex.of_real_sin + theorem complex.of_real_sin_of_real_re + theorem complex.of_real_sinh + theorem complex.of_real_sinh_of_real_re + theorem complex.of_real_tan + theorem complex.of_real_tan_of_real_re + theorem complex.of_real_tanh + theorem complex.of_real_tanh_of_real_re + def complex.sin + theorem complex.sin_add + theorem complex.sin_conj + theorem complex.sin_neg + theorem complex.sin_of_real_im + theorem complex.sin_of_real_re + theorem complex.sin_pow_two_add_cos_pow_two + theorem complex.sin_sub + theorem complex.sin_two_mul + theorem complex.sin_zero + def complex.sinh + theorem complex.sinh_add + theorem complex.sinh_conj + theorem complex.sinh_neg + theorem complex.sinh_of_real_im + theorem complex.sinh_of_real_re + theorem complex.sinh_sub + theorem complex.sinh_zero + theorem complex.sum_div_fact_le + def complex.tan + theorem complex.tan_conj + theorem complex.tan_eq_sin_div_cos + theorem complex.tan_neg + theorem complex.tan_of_real_im + theorem complex.tan_of_real_re + theorem complex.tan_zero + def complex.tanh + theorem complex.tanh_conj + theorem complex.tanh_eq_sinh_div_cosh + theorem complex.tanh_neg + theorem complex.tanh_of_real_im + theorem complex.tanh_of_real_re + theorem complex.tanh_zero + theorem forall_ge_le_of_forall_le_succ + theorem geo_sum_eq + theorem geo_sum_inv_eq + theorem is_cau_geo_series + theorem is_cau_geo_series_const + theorem is_cau_of_decreasing_bounded + theorem is_cau_of_mono_bounded + theorem is_cau_series_of_abv_cau + theorem is_cau_series_of_abv_le_cau + theorem real.abs_cos_le_one + theorem real.abs_exp + theorem real.abs_sin_le_one + theorem real.add_one_le_exp_of_nonneg + def real.cos + theorem real.cos_add + theorem real.cos_bound + theorem real.cos_le_one + theorem real.cos_neg + theorem real.cos_one_le + theorem real.cos_one_pos + theorem real.cos_pos_of_le_one + theorem real.cos_pow_two_le_one + theorem real.cos_sub + theorem real.cos_two_mul + theorem real.cos_two_neg + theorem real.cos_zero + def real.cosh + theorem real.cosh_add + theorem real.cosh_neg + theorem real.cosh_sub + theorem real.cosh_zero + def real.exp + theorem real.exp_add + theorem real.exp_injective + theorem real.exp_le_exp + theorem real.exp_lt_exp + theorem real.exp_ne_zero + theorem real.exp_neg + theorem real.exp_pos + theorem real.exp_sub + theorem real.exp_zero + theorem real.neg_one_le_cos + theorem real.neg_one_le_sin + theorem real.one_le_exp + def real.sin + theorem real.sin_add + theorem real.sin_bound + theorem real.sin_le_one + theorem real.sin_neg + theorem real.sin_pos_of_pos_of_le_one + theorem real.sin_pos_of_pos_of_le_two + theorem real.sin_pow_two_add_cos_pow_two + theorem real.sin_pow_two_le_one + theorem real.sin_sub + theorem real.sin_two_mul + theorem real.sin_zero + def real.sinh + theorem real.sinh_add + theorem real.sinh_neg + theorem real.sinh_sub + theorem real.sinh_zero + def real.tan + theorem real.tan_eq_sin_div_cos + theorem real.tan_neg + theorem real.tan_zero + def real.tanh + theorem real.tanh_eq_sinh_div_cosh + theorem real.tanh_neg + theorem real.tanh_zero + theorem series_ratio_test + theorem sum_range_diag_flip + theorem sum_range_sub_sum_range Modified data/int/basic.lean + theorem int.cast_two + theorem int.mod_two_eq_zero_or_one Modified data/nat/basic.lean + theorem nat.fact_mul_pow_le_fact Modified data/nat/cast.lean + theorem nat.cast_two Modified data/real/basic.lean + theorem real.le_lim + theorem real.lim_le + theorem real.lim_lt + theorem real.lt_lim Modified data/real/cau_seq.lean + theorem cau_seq.le_of_eq_of_le + theorem cau_seq.le_of_exists + theorem cau_seq.le_of_le_of_eq + theorem is_absolute_value.abv_pow 2018-10-16 13:07:50+02:00 792c673 feat(order/galois_connection): make arguemnts to dual implicit ESTIMATED CHANGES Modified order/galois_connection.lean 2018-10-15 17:21:09+02:00 80d688e feat(data/nat/choose): nat.prime.dvd_choose (#419) * feat(data/nat/choose): nat/prime.dvd_choose * use nat namespace * Update prime.lean * improve readability ESTIMATED CHANGES Modified data/nat/choose.lean + theorem nat.prime.dvd_choose Modified data/nat/prime.lean + theorem nat.prime.dvd_fact 2018-10-15 15:12:23+02:00 c5930f5 feat(group_theory.order_of_element): subgroups of cyclic groups are cyclic (#423) * feat(group_theory.order_of_element): subgroups of cyclic groups are cyclic * delete new line ESTIMATED CHANGES Modified group_theory/order_of_element.lean Modified group_theory/subgroup.lean + theorem is_add_subgroup.gsmul_coe + theorem is_subgroup.coe_gpow + theorem is_subgroup.coe_inv Modified group_theory/submonoid.lean + theorem is_add_submonoid.smul_coe + theorem is_submonoid.coe_mul + theorem is_submonoid.coe_one + theorem is_submonoid.coe_pow 2018-10-15 13:39:24+02:00 a33ab12 refactor(analysis/topology): move separation ring to quotient_topological_structures ESTIMATED CHANGES Modified analysis/topology/completion.lean - theorem uniform_space.eq_mpr_heq - theorem uniform_space.ring_sep_quot - theorem uniform_space.ring_sep_rel Modified analysis/topology/quotient_topological_structures.lean - theorem is_open_map_mul_left - theorem is_open_map_mul_right - theorem quotient_ring.quotient_map + theorem quotient_ring.quotient_map_coe_coe + theorem uniform_space.ring_sep_quot + theorem uniform_space.ring_sep_rel + def uniform_space.sep_quot_equiv_ring_quot + theorem {u} Modified analysis/topology/topological_structures.lean + theorem is_open_map_mul_left + theorem is_open_map_mul_right 2018-10-15 13:39:24+02:00 1308077 feature(data/equiv/algebra): add mul left/right and inverse as equivalences ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean Added data/equiv/algebra.lean Modified data/equiv/basic.lean 2018-10-15 13:39:24+02:00 c8ecae8 feature(analysis/topology/continuity): start homeomorphism ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem homeomorph.coe_eq_to_equiv + theorem homeomorph.coinduced_eq + theorem homeomorph.image_symm + theorem homeomorph.induced_eq + theorem homeomorph.preimage_symm + def homeomorph.prod_assoc + def homeomorph.prod_comm + def homeomorph.prod_congr + theorem homeomorph.range_coe + theorem homeomorph.self_comp_symm + theorem homeomorph.symm_comp_self + structure homeomorph Modified data/equiv/basic.lean +/- def equiv.prod_congr 2018-10-15 13:39:24+02:00 af434b5 refactor(analysis/topology): move is_open_map to continuity ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem is_open_map.of_inverse + theorem is_open_map.to_quotient_map + def is_open_map + theorem is_open_map_iff_nhds_le - theorem quotient_map.continuous - theorem quotient_map.continuous_iff - theorem quotient_map_compose - theorem quotient_map_id - theorem quotient_map_of_quotient_map_compose Modified analysis/topology/quotient_topological_structures.lean - theorem is_open_coinduced - theorem is_open_map.of_inverse - theorem is_open_map.to_quotient_map - def is_open_map - theorem is_open_map_iff_nhds_le Modified analysis/topology/topological_space.lean + theorem is_open_coinduced + theorem is_open_induced_iff 2018-10-15 13:39:24+02:00 29675ad refactor(analysis/topology/topological_structures): use to_additive to derive topological_add_monoid and topological_add_group ESTIMATED CHANGES Modified analysis/topology/quotient_topological_structures.lean - theorem continuous_inv' - theorem continuous_inv - theorem is_open_add_translate + theorem is_open_coinduced +/- theorem is_open_map.of_inverse - theorem is_open_map.quotient_map_of_open_of_surj_of_cont + theorem is_open_map.to_quotient_map - theorem is_open_map_iff_nhds_sets + theorem is_open_map_mul_left + theorem is_open_map_mul_right - theorem is_open_ring_add_translate - theorem is_open_translate - theorem quotient_add_group.open_coe - theorem quotient_add_group_saturate - theorem quotient_ring.is_open_map + theorem quotient_ring.is_open_map_coe - theorem quotient_ring.open_coe + theorem quotient_ring.quotient_map Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean - theorem continuous_add' - theorem continuous_add - theorem continuous_finset_sum + theorem continuous_inv' + theorem continuous_inv - theorem continuous_list_sum - theorem continuous_multiset_sum - theorem continuous_neg' - theorem continuous_neg - theorem exists_nhds_half - theorem exists_nhds_quarter + theorem exists_nhds_split4 + theorem exists_nhds_split + theorem nhds_one_symm + theorem nhds_translation_mul_inv - theorem nhds_zero_symm - theorem tendsto_add' - theorem tendsto_add - theorem tendsto_finset_sum + theorem tendsto_inv - theorem tendsto_list_sum - theorem tendsto_multiset_sum - theorem tendsto_neg 2018-10-15 13:39:24+02:00 75046c2 chore(data/quot): add setoid.ext ESTIMATED CHANGES Modified analysis/topology/completion.lean Modified data/quot.lean + theorem setoid.ext 2018-10-15 13:39:24+02:00 2395183 feat(analysis/topology/quotient_topological_structures): endow quotient of topological groups, add groups and rings with a topological whatever structure This is not yet sorted. I'd like to push completions before cleaning this. ESTIMATED CHANGES Modified analysis/topology/completion.lean + theorem uniform_space.eq_mpr_heq + theorem uniform_space.ring_sep_quot + theorem uniform_space.ring_sep_rel Added analysis/topology/quotient_topological_structures.lean + theorem continuous_inv' + theorem continuous_inv + theorem is_open_add_translate + theorem is_open_map.of_inverse + theorem is_open_map.quotient_map_of_open_of_surj_of_cont + def is_open_map + theorem is_open_map_iff_nhds_le + theorem is_open_map_iff_nhds_sets + theorem is_open_ring_add_translate + theorem is_open_translate + theorem quotient_add_group.open_coe + theorem quotient_add_group_saturate + theorem quotient_group.open_coe + theorem quotient_group_saturate + theorem quotient_ring.is_open_map + theorem quotient_ring.open_coe + theorem quotient_ring_saturate 2018-10-15 13:35:49+02:00 7358605 feat(analysis/topology/completion): comm_ring on separation quotient, completion (separation_quotient A) is equivalent to completion A ESTIMATED CHANGES Modified analysis/topology/completion.lean - theorem filter.prod_pure_pure - theorem uniform_space.cauchy_prod - theorem uniform_space.complete_space_separation + def uniform_space.completion.completion_separation_quotient_equiv + theorem uniform_space.completion.ext + theorem uniform_space.completion.extension_map + theorem uniform_space.completion.map_comp + theorem uniform_space.completion.map_id + theorem uniform_space.completion.map_unique + theorem uniform_space.completion.uniform_continuous_completion_separation_quotient_equiv + theorem uniform_space.completion.uniform_continuous_completion_separation_quotient_equiv_symm - theorem uniform_space.separated_separation + def uniform_space.separation_quotient.lift + theorem uniform_space.separation_quotient.lift_mk + def uniform_space.separation_quotient.map + theorem uniform_space.separation_quotient.map_comp + theorem uniform_space.separation_quotient.map_id + theorem uniform_space.separation_quotient.map_mk + theorem uniform_space.separation_quotient.map_unique + theorem uniform_space.separation_quotient.uniform_continuous_lift + theorem uniform_space.separation_quotient.uniform_continuous_map + def uniform_space.separation_quotient - theorem uniform_space.uniform_continuous_of_const Modified analysis/topology/continuity.lean + theorem mem_closure2 + theorem mem_closure Modified analysis/topology/topological_structures.lean - theorem is_ideal_iff Modified data/quot.lean + theorem nonempty_quotient_iff Modified data/set/basic.lean - theorem set.image_subset_iff' Modified order/filter.lean + theorem filter.prod_pure_pure 2018-10-15 13:33:05+02:00 13be74f feat(analysis/topology/topological_structure): ideal closure is ideal ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean + theorem is_ideal_iff Modified data/set/basic.lean + theorem set.image_subset_iff' 2018-10-15 13:33:05+02:00 7697a84 feat(analysis/topology/topological_groups): construct topologies out of a group and a neighbourhood filter at 0 ESTIMATED CHANGES Deleted analysis/topology/complete_groups.lean - theorem add_comm_group.is_Z_bilin.neg_left - theorem add_comm_group.is_Z_bilin.neg_right - theorem add_comm_group.is_Z_bilin.sub_left - theorem add_comm_group.is_Z_bilin.sub_right - theorem add_comm_group.is_Z_bilin.zero - theorem add_comm_group.is_Z_bilin.zero_left - theorem add_comm_group.is_Z_bilin.zero_right - theorem dense_embedding.extend_Z_bilin - theorem is_Z_bilin.tendsto_zero_left - theorem is_Z_bilin.tendsto_zero_right - theorem tendsto_sub_comap_self Modified analysis/topology/completion.lean + theorem add_comm_group.is_Z_bilin.neg_left + theorem add_comm_group.is_Z_bilin.neg_right + theorem add_comm_group.is_Z_bilin.sub_left + theorem add_comm_group.is_Z_bilin.sub_right + theorem add_comm_group.is_Z_bilin.zero + theorem add_comm_group.is_Z_bilin.zero_left + theorem add_comm_group.is_Z_bilin.zero_right + theorem dense_embedding.extend_Z_bilin + theorem is_Z_bilin.tendsto_zero_left + theorem is_Z_bilin.tendsto_zero_right + theorem tendsto_sub_comap_self + theorem uniform_space.completion.coe_mul + theorem uniform_space.completion.coe_one + theorem uniform_space.completion.continuous_mul' + theorem uniform_space.completion.continuous_mul +/- theorem uniform_space.completion.dense + theorem uniform_space.completion.dense_embedding_coe Modified analysis/topology/topological_groups.lean + theorem add_group_with_zero_nhd.add_Z + theorem add_group_with_zero_nhd.exists_Z_half + theorem add_group_with_zero_nhd.neg_Z + theorem add_group_with_zero_nhd.nhds_eq + theorem add_group_with_zero_nhd.nhds_zero_eq_Z - theorem half_nhd - theorem nhds_translation - theorem nhds_zero_symm - theorem quarter_nhd + theorem to_uniform_space_eq + theorem topological_add_group_is_uniform + theorem uniformity_eq_comap_nhds_zero' - theorem uniformity_eq_comap_nhds_zero - def Δ - def δ Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean + theorem exists_nhds_half + theorem exists_nhds_quarter + theorem nhds_translation + theorem nhds_zero_symm Modified order/filter.lean +/- theorem filter.comap_eq_of_inverse + theorem filter.map_eq_of_inverse 2018-10-15 13:33:05+02:00 96d3f95 doc(analysis/topology/completion): document changed organization ESTIMATED CHANGES Modified analysis/topology/completion.lean 2018-10-15 13:33:05+02:00 fbb6e9b feat(analysis/topology): group completion ESTIMATED CHANGES Modified analysis/real.lean - theorem real.Cauchy_eq Added analysis/topology/complete_groups.lean + theorem add_comm_group.is_Z_bilin.neg_left + theorem add_comm_group.is_Z_bilin.neg_right + theorem add_comm_group.is_Z_bilin.sub_left + theorem add_comm_group.is_Z_bilin.sub_right + theorem add_comm_group.is_Z_bilin.zero + theorem add_comm_group.is_Z_bilin.zero_left + theorem add_comm_group.is_Z_bilin.zero_right + theorem dense_embedding.extend_Z_bilin + theorem is_Z_bilin.tendsto_zero_left + theorem is_Z_bilin.tendsto_zero_right + theorem tendsto_sub_comap_self Added analysis/topology/completion.lean + theorem Cauchy.Cauchy_eq + theorem Cauchy.dense_embedding_pure_cauchy + def Cauchy.extend + theorem Cauchy.extend_pure_cauchy + def Cauchy.gen + theorem Cauchy.injective_separated_pure_cauchy + theorem Cauchy.mem_uniformity' + theorem Cauchy.mem_uniformity + theorem Cauchy.monotone_gen + theorem Cauchy.nonempty_Cauchy_iff + def Cauchy.prod + theorem Cauchy.prod_pure_cauchy_pure_cauchy + def Cauchy.pure_cauchy + theorem Cauchy.pure_cauchy_dense + theorem Cauchy.uniform_continuous_extend + theorem Cauchy.uniform_continuous_prod + theorem Cauchy.uniform_embedding_pure_cauchy + def Cauchy + theorem filter.prod_pure_pure + theorem uniform_space.cauchy_prod + theorem uniform_space.comap_quotient_eq_uniformity + theorem uniform_space.comap_quotient_le_uniformity + theorem uniform_space.complete_space_separation + theorem uniform_space.completion.coe_add + theorem uniform_space.completion.coe_neg + theorem uniform_space.completion.coe_zero + theorem uniform_space.completion.comap_coe_eq_uniformity + theorem uniform_space.completion.continuous_coe + theorem uniform_space.completion.continuous_extension + theorem uniform_space.completion.continuous_map + theorem uniform_space.completion.continuous_map₂ + theorem uniform_space.completion.dense + theorem uniform_space.completion.dense₂ + theorem uniform_space.completion.dense₃ + theorem uniform_space.completion.extension_coe + theorem uniform_space.completion.induction_on + theorem uniform_space.completion.induction_on₂ + theorem uniform_space.completion.induction_on₃ + theorem uniform_space.completion.induction_on₄ + theorem uniform_space.completion.is_add_group_hom_extension + theorem uniform_space.completion.is_add_group_hom_map + theorem uniform_space.completion.is_add_group_hom_prod + theorem uniform_space.completion.map_coe + theorem uniform_space.completion.map₂_coe_coe + theorem uniform_space.completion.prod_coe_coe + theorem uniform_space.completion.uniform_continuous_coe + theorem uniform_space.completion.uniform_continuous_extension + theorem uniform_space.completion.uniform_continuous_map + theorem uniform_space.completion.uniform_continuous_map₂' + theorem uniform_space.completion.uniform_continuous_prod + theorem uniform_space.completion.uniform_embedding_coe + def uniform_space.completion + theorem uniform_space.eq_of_separated_of_uniform_continuous + theorem uniform_space.separated_of_uniform_continuous + theorem uniform_space.separated_separation + theorem uniform_space.separation_prod + def uniform_space.separation_setoid + theorem uniform_space.uniform_continuous_of_const + theorem uniform_space.uniform_continuous_quotient + theorem uniform_space.uniform_continuous_quotient_lift + theorem uniform_space.uniform_continuous_quotient_lift₂ + theorem uniform_space.uniform_continuous_quotient_mk + theorem uniform_space.uniformity_quotient Modified analysis/topology/continuity.lean +/- theorem dense_embedding.extend_e_eq +/- theorem dense_embedding.extend_eq + theorem embedding.closure_eq_preimage_closure_image Added analysis/topology/topological_groups.lean + theorem half_nhd + theorem nhds_translation + theorem nhds_zero_symm + theorem quarter_nhd + def topological_add_group.to_uniform_space + theorem uniformity_eq_comap_nhds_zero + def Δ + def δ Modified analysis/topology/topological_structures.lean - theorem dense_or_discrete + theorem group_separation_rel +/- theorem uniform_continuous_add' +/- theorem uniform_continuous_add +/- theorem uniform_continuous_neg' +/- theorem uniform_continuous_neg + theorem uniform_continuous_of_continuous + theorem uniform_continuous_of_tendsto_zero +/- theorem uniform_continuous_sub' +/- theorem uniform_continuous_sub + theorem uniform_embedding_translate + theorem uniformity_eq_comap_nhds_zero + theorem uniformity_translate Modified analysis/topology/uniform_space.lean - def Cauchy.gen - theorem Cauchy.injective_separated_pure_cauchy - theorem Cauchy.mem_uniformity' - theorem Cauchy.mem_uniformity - theorem Cauchy.monotone_gen - def Cauchy.pure_cauchy - theorem Cauchy.pure_cauchy_dense - theorem Cauchy.uniform_embedding_pure_cauchy - def Cauchy + theorem cauchy_prod - theorem comap_quotient_eq_uniformity - theorem comap_quotient_le_uniformity - theorem complete_space_separation + theorem dense_embedding.continuous_extend_of_cauchy - theorem eq_of_separated_of_uniform_continuous + theorem mem_uniformity_of_uniform_continuous_invarant - theorem separated_of_uniform_continuous - theorem separated_separation - theorem separation_prod + theorem uniform_continuous_of_const - theorem uniform_continuous_quotient - theorem uniform_continuous_quotient_lift - theorem uniform_continuous_quotient_lift₂ - theorem uniform_continuous_quotient_mk +/- theorem uniform_continuous_uniformly_extend + theorem uniform_embedding.embedding - theorem uniformity_quotient +/- theorem uniformly_extend_exists +/- theorem uniformly_extend_of_emb +/- theorem uniformly_extend_spec Modified data/set/basic.lean + theorem set.prod_quotient_preimage_eq_image Modified data/set/lattice.lean + theorem set.preimage_Inter + theorem set.preimage_bInter Modified order/basic.lean + theorem dense_or_discrete 2018-10-14 23:27:04-04:00 8150f19 feat(logic/basic): classical.not_not (#418) * feat(logic/basic): classical.not_not * mark as protected ESTIMATED CHANGES Modified logic/basic.lean 2018-10-12 23:59:58+02:00 019b236 fix(category_theory/open_set): Restore the correct order on open_set ESTIMATED CHANGES Modified category_theory/examples/topological_spaces.lean 2018-10-12 10:55:25+02:00 131cf14 feat(group_theory/quotient_group): add to_additive attribute ESTIMATED CHANGES Modified group_theory/quotient_group.lean 2018-10-12 10:54:58+02:00 c8d3c96 feat(tactic/interactive): congr' tries harder ESTIMATED CHANGES Modified tactic/interactive.lean 2018-10-11 08:53:11-04:00 62451d3 cleanup(data/polynomial): simplify proof of coeff_mul_left (#414) ESTIMATED CHANGES Modified data/polynomial.lean 2018-10-11 13:22:43+02:00 0fe2849 chore(analysis/measure_theory): finish characterization of lintegral ESTIMATED CHANGES Modified analysis/measure_theory/integration.lean + theorem measure_theory.lintegral_const_mul + theorem measure_theory.lintegral_supr_const +/- theorem measure_theory.simple_func.bind_const +/- def measure_theory.simple_func.const +/- theorem measure_theory.simple_func.const_apply +/- theorem measure_theory.simple_func.const_mul_eq_map +/- def measure_theory.simple_func.map 2018-10-10 22:50:06+02:00 40f5565 feat(analysis/measure_theory): lower Lebesgue integral under addition, supremum ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_hom_rel + theorem finset.prod_image' Modified analysis/ennreal.lean - theorem ennreal.coe_nat + theorem ennreal.finset_sum_supr_nat + theorem ennreal.mul_Sup + theorem ennreal.mul_supr +/- theorem ennreal.supr_add_supr + theorem ennreal.supr_add_supr_of_monotone + theorem ennreal.supr_mul + theorem ennreal.tendsto_coe_nnreal_nhds_top Modified analysis/measure_theory/borel_space.lean + theorem measure_theory.measurable_coe_int_real + theorem measure_theory.measurable_le Modified analysis/measure_theory/integration.lean - def measure_theory.indicator.size - def measure_theory.indicator.to_fun - theorem measure_theory.indicator.to_fun_val - structure measure_theory.indicator + def measure_theory.lintegral + theorem measure_theory.lintegral_add + theorem measure_theory.lintegral_eq_nnreal + theorem measure_theory.lintegral_eq_supr_eapprox_integral + theorem measure_theory.lintegral_le_lintegral + theorem measure_theory.lintegral_supr + theorem measure_theory.lintegral_zero - def measure_theory.simple_func'.bind - theorem measure_theory.simple_func'.bind_apply - theorem measure_theory.simple_func'.bind_const - theorem measure_theory.simple_func'.bind_itg - theorem measure_theory.simple_func'.bind_sum_measure - theorem measure_theory.simple_func'.coe_def - theorem measure_theory.simple_func'.coe_le_coe - def measure_theory.simple_func'.const - theorem measure_theory.simple_func'.const_apply - theorem measure_theory.simple_func'.ext - theorem measure_theory.simple_func'.is_measurable_cut - def measure_theory.simple_func'.ite - theorem measure_theory.simple_func'.ite_apply - def measure_theory.simple_func'.itg - theorem measure_theory.simple_func'.le_def - def measure_theory.simple_func'.map - theorem measure_theory.simple_func'.map_apply - theorem measure_theory.simple_func'.map_itg - theorem measure_theory.simple_func'.measurable - theorem measure_theory.simple_func'.mem_range - def measure_theory.simple_func'.pair - theorem measure_theory.simple_func'.preimage_measurable - def measure_theory.simple_func'.restrict - theorem measure_theory.simple_func'.restrict_apply - theorem measure_theory.simple_func'.restrict_preimage - def measure_theory.simple_func'.seq - theorem measure_theory.simple_func'.seq_itg - theorem measure_theory.simple_func.add_congr + theorem measure_theory.simple_func.add_eq_map₂ + theorem measure_theory.simple_func.add_integral - theorem measure_theory.simple_func.add_sub_cancel_of_le + def measure_theory.simple_func.approx + theorem measure_theory.simple_func.approx_apply + def measure_theory.simple_func.bind + theorem measure_theory.simple_func.bind_apply + theorem measure_theory.simple_func.bind_const - theorem measure_theory.simple_func.coe_add - theorem measure_theory.simple_func.coe_def - theorem measure_theory.simple_func.coe_le_coe + theorem measure_theory.simple_func.coe_map + def measure_theory.simple_func.const + theorem measure_theory.simple_func.const_apply + theorem measure_theory.simple_func.const_mul_eq_map + theorem measure_theory.simple_func.const_mul_integral + def measure_theory.simple_func.eapprox + def measure_theory.simple_func.ennreal_rat_embed + theorem measure_theory.simple_func.ennreal_rat_embed_encode - theorem measure_theory.simple_func.equiv_def - theorem measure_theory.simple_func.equiv_iff + theorem measure_theory.simple_func.ext - theorem measure_theory.simple_func.finite_range + theorem measure_theory.simple_func.finset_sup_apply + def measure_theory.simple_func.integral + theorem measure_theory.simple_func.integral_congr + theorem measure_theory.simple_func.integral_le_integral + theorem measure_theory.simple_func.integral_sup_le + theorem measure_theory.simple_func.is_measurable_cut + def measure_theory.simple_func.ite + theorem measure_theory.simple_func.ite_apply - def measure_theory.simple_func.itg' - theorem measure_theory.simple_func.itg'_add - theorem measure_theory.simple_func.itg'_eq_sum - theorem measure_theory.simple_func.itg'_eq_sum_of_subset - theorem measure_theory.simple_func.itg'_indicator - theorem measure_theory.simple_func.itg'_mono - theorem measure_theory.simple_func.itg'_zero - def measure_theory.simple_func.itg - theorem measure_theory.simple_func.itg_add - theorem measure_theory.simple_func.itg_mono - theorem measure_theory.simple_func.itg_zero - theorem measure_theory.simple_func.le_antisymm - theorem measure_theory.simple_func.le_antisymm_iff - theorem measure_theory.simple_func.le_def - theorem measure_theory.simple_func.le_iff_exists_add - theorem measure_theory.simple_func.le_of_multiset_le - def measure_theory.simple_func.lift₂ - theorem measure_theory.simple_func.lift₂_finite - theorem measure_theory.simple_func.lift₂_is_measurable - theorem measure_theory.simple_func.lift₂_val + theorem measure_theory.simple_func.lintegral_eq_integral + def measure_theory.simple_func.map + theorem measure_theory.simple_func.map_apply + theorem measure_theory.simple_func.map_integral + theorem measure_theory.simple_func.map_map +/- theorem measure_theory.simple_func.measurable + theorem measure_theory.simple_func.mem_range + theorem measure_theory.simple_func.mem_restrict_range + theorem measure_theory.simple_func.monotone_approx + theorem measure_theory.simple_func.monotone_eapprox + theorem measure_theory.simple_func.mul_apply - def measure_theory.simple_func.of_fun - theorem measure_theory.simple_func.of_fun_apply - theorem measure_theory.simple_func.of_fun_val + def measure_theory.simple_func.pair + theorem measure_theory.simple_func.pair_apply +/- theorem measure_theory.simple_func.preimage_measurable + theorem measure_theory.simple_func.range_const + theorem measure_theory.simple_func.range_map + def measure_theory.simple_func.restrict + theorem measure_theory.simple_func.restrict_apply + theorem measure_theory.simple_func.restrict_const_integral + theorem measure_theory.simple_func.restrict_integral + theorem measure_theory.simple_func.restrict_preimage' + theorem measure_theory.simple_func.restrict_preimage + def measure_theory.simple_func.seq - theorem measure_theory.simple_func.sub_add_cancel_of_le - theorem measure_theory.simple_func.sub_val + theorem measure_theory.simple_func.sup_apply + theorem measure_theory.simple_func.sup_eq_map₂ + theorem measure_theory.simple_func.supr_approx_apply + theorem measure_theory.simple_func.supr_eapprox_apply - def measure_theory.simple_func.to_fun + theorem measure_theory.simple_func.zero_integral - def measure_theory.simple_func - theorem measure_theory.simple_itg_eq - def measure_theory.upper_itg - theorem measure_theory.upper_itg_add_le - def measure_theory.upper_itg_def_subtype - theorem measure_theory.upper_itg_simple +/- structure measure_theory.{u + theorem supr_eq_of_tendsto Modified analysis/measure_theory/measurable_space.lean + theorem measurable_const Modified analysis/measure_theory/measure_space.lean + theorem measure_theory.volume_bUnion_finset Modified data/finset.lean + theorem finset.image_bind_filter_eq + theorem finset.inf_eq_infi + theorem finset.sup_eq_supr Modified data/real/ennreal.lean + theorem ennreal.coe_nat + theorem ennreal.coe_to_nnreal_le_self + theorem ennreal.le_of_forall_lt_one_mul_lt + theorem ennreal.mul_inv_cancel + theorem ennreal.mul_le_if_le_inv + theorem ennreal.supr_coe_nat Modified data/real/nnreal.lean + theorem nnreal.le_of_forall_lt_one_mul_lt + theorem nnreal.lt_inv_iff_mul_lt + theorem nnreal.mul_le_if_le_inv Modified data/set/basic.lean + theorem set.compl_set_of + theorem set.exists_range_iff Modified order/complete_lattice.lean + theorem lattice.Inf_eq_bot +/- theorem lattice.infi_eq_bot + theorem lattice.supr_eq_bot + theorem lattice.supr_eq_top Modified order/filter.lean + theorem filter.tendsto_at_top 2018-10-10 22:50:06+02:00 a25e4a8 feat(analysis/measure_theory/integration): lebesgue integration [WIP] ESTIMATED CHANGES Modified analysis/measure_theory/borel_space.lean + theorem measure_theory.borel_eq_generate_Iio + theorem measure_theory.borel_eq_generate_Ioi + theorem measure_theory.measurable.infi + theorem measure_theory.measurable.is_glb + theorem measure_theory.measurable.is_lub + theorem measure_theory.measurable.supr Added analysis/measure_theory/integration.lean + def measure_theory.indicator.size + def measure_theory.indicator.to_fun + theorem measure_theory.indicator.to_fun_val + structure measure_theory.indicator + def measure_theory.simple_func'.bind + theorem measure_theory.simple_func'.bind_apply + theorem measure_theory.simple_func'.bind_const + theorem measure_theory.simple_func'.bind_itg + theorem measure_theory.simple_func'.bind_sum_measure + theorem measure_theory.simple_func'.coe_def + theorem measure_theory.simple_func'.coe_le_coe + def measure_theory.simple_func'.const + theorem measure_theory.simple_func'.const_apply + theorem measure_theory.simple_func'.ext + theorem measure_theory.simple_func'.is_measurable_cut + def measure_theory.simple_func'.ite + theorem measure_theory.simple_func'.ite_apply + def measure_theory.simple_func'.itg + theorem measure_theory.simple_func'.le_def + def measure_theory.simple_func'.map + theorem measure_theory.simple_func'.map_apply + theorem measure_theory.simple_func'.map_itg + theorem measure_theory.simple_func'.measurable + theorem measure_theory.simple_func'.mem_range + def measure_theory.simple_func'.pair + theorem measure_theory.simple_func'.preimage_measurable + def measure_theory.simple_func'.restrict + theorem measure_theory.simple_func'.restrict_apply + theorem measure_theory.simple_func'.restrict_preimage + def measure_theory.simple_func'.seq + theorem measure_theory.simple_func'.seq_itg + theorem measure_theory.simple_func.add_congr + theorem measure_theory.simple_func.add_sub_cancel_of_le + theorem measure_theory.simple_func.coe_add + theorem measure_theory.simple_func.coe_def + theorem measure_theory.simple_func.coe_le_coe + theorem measure_theory.simple_func.equiv_def + theorem measure_theory.simple_func.equiv_iff + theorem measure_theory.simple_func.finite_range + def measure_theory.simple_func.itg' + theorem measure_theory.simple_func.itg'_add + theorem measure_theory.simple_func.itg'_eq_sum + theorem measure_theory.simple_func.itg'_eq_sum_of_subset + theorem measure_theory.simple_func.itg'_indicator + theorem measure_theory.simple_func.itg'_mono + theorem measure_theory.simple_func.itg'_zero + def measure_theory.simple_func.itg + theorem measure_theory.simple_func.itg_add + theorem measure_theory.simple_func.itg_mono + theorem measure_theory.simple_func.itg_zero + theorem measure_theory.simple_func.le_antisymm + theorem measure_theory.simple_func.le_antisymm_iff + theorem measure_theory.simple_func.le_def + theorem measure_theory.simple_func.le_iff_exists_add + theorem measure_theory.simple_func.le_of_multiset_le + def measure_theory.simple_func.lift₂ + theorem measure_theory.simple_func.lift₂_finite + theorem measure_theory.simple_func.lift₂_is_measurable + theorem measure_theory.simple_func.lift₂_val + theorem measure_theory.simple_func.measurable + def measure_theory.simple_func.of_fun + theorem measure_theory.simple_func.of_fun_apply + theorem measure_theory.simple_func.of_fun_val + theorem measure_theory.simple_func.preimage_measurable + theorem measure_theory.simple_func.sub_add_cancel_of_le + theorem measure_theory.simple_func.sub_val + def measure_theory.simple_func.to_fun + def measure_theory.simple_func + theorem measure_theory.simple_itg_eq + def measure_theory.upper_itg + theorem measure_theory.upper_itg_add_le + def measure_theory.upper_itg_def_subtype + theorem measure_theory.upper_itg_simple + structure measure_theory.{u Modified analysis/measure_theory/lebesgue_measure.lean - def measure_theory.lebesgue - theorem measure_theory.lebesgue_Icc - theorem measure_theory.lebesgue_Ico - theorem measure_theory.lebesgue_Ioo - theorem measure_theory.lebesgue_singleton +/- theorem measure_theory.lebesgue_to_outer_measure - theorem measure_theory.lebesgue_val + theorem measure_theory.real.volume_Icc + theorem measure_theory.real.volume_Ico + theorem measure_theory.real.volume_Ioo + theorem measure_theory.real.volume_singleton + theorem measure_theory.real.volume_val Modified analysis/measure_theory/measurable_space.lean + theorem is_measurable.Inter_Prop + theorem is_measurable.Union_Prop + theorem is_measurable.const + theorem is_measurable.univ - theorem is_measurable_univ Modified analysis/measure_theory/measure_space.lean + def measure_theory.measure.a_e +/- theorem measure_theory.measure_sUnion + def measure_theory.volume + theorem measure_theory.volume_Union + theorem measure_theory.volume_Union_le + theorem measure_theory.volume_Union_null + theorem measure_theory.volume_bUnion + theorem measure_theory.volume_diff + theorem measure_theory.volume_empty + theorem measure_theory.volume_mono + theorem measure_theory.volume_mono_null + theorem measure_theory.volume_sUnion + theorem measure_theory.volume_union + theorem measure_theory.volume_union_le + theorem measure_theory.volume_union_null Modified analysis/topology/topological_space.lean + theorem topological_space.is_open_Union_countable Modified data/set/basic.lean + theorem set.image_subset_range + theorem set.preimage_image_preimage + theorem set.preimage_inter_range Modified data/set/finite.lean +/- theorem set.finite_bUnion Modified data/set/lattice.lean + theorem set.bUnion_of_singleton + theorem set.bUnion_subset_Union + theorem set.preimage_bUnion Modified order/bounds.lean +/- theorem is_glb_Inf + theorem is_glb_lt_iff +/- theorem is_lub_Sup + theorem is_lub_le_iff + theorem le_is_glb_iff + theorem lower_bounds_mono + theorem lt_is_lub_iff + theorem upper_bounds_mono Modified order/order_iso.lean + theorem preimage_equivalence Modified tactic/interactive.lean 2018-10-10 12:53:24-04:00 4dbe0cd doc(elan): further improvements to installation instructions (#412) [ci-skip] ESTIMATED CHANGES Modified docs/elan.md 2018-10-10 04:04:54-04:00 979e238 fix(*): fix build continued ESTIMATED CHANGES Modified data/nat/prime.lean Modified set_theory/lists.lean 2018-10-10 03:27:18-04:00 1a4156d fix(data/nat): fix build ESTIMATED CHANGES Modified data/int/basic.lean +/- theorem int.coe_nat_nonneg Modified data/list/basic.lean Modified data/nat/choose.lean 2018-10-10 03:03:09-04:00 fedee98 feat(data/nat/basic): a few choiceless proofs not sure I can take this much farther without modifying core... ESTIMATED CHANGES Modified algebra/archimedean.lean Modified algebra/order.lean + theorem decidable.eq_or_lt_of_le + theorem decidable.le_iff_le_iff_lt_iff_lt + theorem decidable.le_iff_lt_or_eq + theorem decidable.le_imp_le_iff_lt_imp_lt + theorem decidable.le_imp_le_of_lt_imp_lt + theorem decidable.le_of_not_lt + theorem decidable.le_or_lt + theorem decidable.lt_or_eq_of_le + theorem decidable.lt_or_gt_of_ne + theorem decidable.lt_or_le + theorem decidable.lt_trichotomy + theorem decidable.ne_iff_lt_or_gt + theorem decidable.not_lt + theorem le_imp_le_of_lt_imp_lt + theorem lt_iff_lt_of_le_iff_le' + theorem lt_iff_lt_of_le_iff_le + theorem lt_iff_not_ge' + theorem lt_imp_lt_of_le_imp_le + theorem lt_of_le_of_ne' + theorem lt_of_not_ge' +/- theorem not_le Modified algebra/ordered_field.lean Modified algebra/ordered_ring.lean + theorem decidable.mul_le_mul_left + theorem decidable.mul_le_mul_right Modified computability/partrec.lean Modified data/nat/basic.lean + theorem nat.div_lt_iff_lt_mul' + theorem nat.div_mul_le_self' + theorem nat.le_div_iff_mul_le' Modified data/nat/sqrt.lean Modified data/rat.lean Modified data/real/basic.lean Modified set_theory/cardinal.lean Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean 2018-10-10 03:01:34-04:00 1daf4a8 fix(data/set/lattice): fixing simp lemmas for set monad ESTIMATED CHANGES Modified data/set/lattice.lean +/- theorem set.fmap_eq_image +/- theorem set.mem_seq_iff +/- theorem set.pure_def +/- theorem set.seq_eq_set_seq 2018-10-09 22:59:15-04:00 d867240 feat(data/set/finite): finiteness of set monad ops ESTIMATED CHANGES Modified data/set/finite.lean + theorem set.finite_bUnion + theorem set.finite_bind + theorem set.finite_map + theorem set.finite_pure + theorem set.finite_seq + def set.fintype_bUnion + def set.fintype_bind + def set.fintype_seq 2018-10-09 01:14:15-04:00 5c209ed fix(linear_algebra/dimension): fix build ESTIMATED CHANGES Modified algebra/big_operators.lean Modified linear_algebra/dimension.lean 2018-10-08 15:17:51-04:00 2c11641 refactor(data/polynomial): consistently use coeff not apply (#409) ESTIMATED CHANGES Modified data/polynomial.lean - theorem polynomial.C_apply - theorem polynomial.C_apply_zero - theorem polynomial.C_mul_apply - theorem polynomial.X_apply_one - theorem polynomial.X_pow_apply - theorem polynomial.add_apply + theorem polynomial.apply_eq_coeff - theorem polynomial.apply_nat_degree_eq_zero_of_degree_lt +/- def polynomial.coeff +/- theorem polynomial.coeff_C + theorem polynomial.coeff_C_mul + theorem polynomial.coeff_C_zero - theorem polynomial.coeff_X + theorem polynomial.coeff_X_one +/- theorem polynomial.coeff_add + theorem polynomial.coeff_derivative + theorem polynomial.coeff_eq_zero_of_degree_lt +/- theorem polynomial.coeff_is_linear + theorem polynomial.coeff_mul_degree_add_degree + theorem polynomial.coeff_nat_degree_eq_zero_of_degree_lt + theorem polynomial.coeff_neg + theorem polynomial.coeff_one_zero + theorem polynomial.coeff_single + theorem polynomial.coeff_sum +/- theorem polynomial.degree_le_degree - theorem polynomial.derivative_apply +/- theorem polynomial.eq_C_of_degree_le_zero - theorem polynomial.eq_zero_of_degree_lt +/- theorem polynomial.ext +/- theorem polynomial.le_degree_of_ne_zero +/- theorem polynomial.le_nat_degree_of_ne_zero +/- def polynomial.leading_coeff - theorem polynomial.mul_apply_degree_add_degree - theorem polynomial.neg_apply - theorem polynomial.one_apply_zero + def polynomial.polynomial.has_coe_to_fun - theorem polynomial.zero_apply 2018-10-08 14:51:29-04:00 a694628 fix(tactic/rcases): declare ? token ESTIMATED CHANGES Modified tactic/rcases.lean 2018-10-08 14:30:13-04:00 3aeb64c refactor(*): touching up proofs from 'faster' branch ESTIMATED CHANGES Modified algebra/big_operators.lean Modified algebra/euclidean_domain.lean Modified algebra/field.lean - theorem inv_sub_inv_eq Modified algebra/gcd_domain.lean +/- theorem dvd_lcm_left +/- theorem dvd_lcm_right +/- theorem lcm_dvd_iff Modified algebra/group_power.lean +/- theorem neg_one_pow_eq_or Modified algebra/ordered_group.lean + theorem add_eq_zero_iff' - theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg' Modified analysis/topology/topological_space.lean Modified data/finset.lean +/- theorem finset.card_insert_of_not_mem +/- theorem finset.coe_empty +/- theorem finset.coe_singleton +/- theorem finset.fold_singleton +/- theorem finset.max_singleton' +/- theorem finset.max_singleton +/- theorem finset.mem_singleton +/- theorem finset.min_empty +/- theorem finset.min_singleton +/- theorem list.to_finset_card_of_nodup Modified data/finsupp.lean +/- theorem finsupp.mem_support_iff + theorem finsupp.not_mem_support_iff +/- theorem finsupp.single_apply +/- theorem finsupp.single_eq_of_ne +/- theorem finsupp.single_eq_same Modified data/list/basic.lean +/- theorem list.count_singleton +/- theorem list.forall_mem_nil +/- theorem list.join_eq_nil +/- theorem list.not_exists_mem_nil +/- theorem list.take_zero +/- theorem option.to_list_nodup Modified data/nat/basic.lean + theorem nat.succ_inj' Modified data/polynomial.lean +/- theorem polynomial.nat_degree_zero Modified data/set/lattice.lean + theorem set.sInter_pair + theorem set.sUnion_pair Modified order/basic.lean Modified order/conditionally_complete_lattice.lean +/- theorem bdd_above_finite +/- theorem bdd_above_subset +/- theorem bdd_below_subset Modified order/filter.lean Modified set_theory/ordinal.lean 2018-10-08 14:30:12-04:00 f02a88b chore(*): replace rec_on with induction and match for readability ESTIMATED CHANGES Modified algebra/big_operators.lean Modified algebra/group.lean Modified algebra/group_power.lean Modified data/finset.lean Modified data/list/basic.lean Modified set_theory/ordinal.lean 2018-10-08 14:30:12-04:00 cc2e1ec refactor(*): making mathlib faster again ESTIMATED CHANGES Modified algebra/archimedean.lean Modified algebra/big_operators.lean +/- theorem finset.sum_le_zero' +/- theorem finset.sum_le_zero +/- theorem finset.zero_le_sum' +/- theorem finset.zero_le_sum Modified algebra/char_zero.lean Modified algebra/euclidean_domain.lean Modified algebra/field.lean Modified algebra/field_power.lean Modified algebra/gcd_domain.lean Modified algebra/group.lean +/- theorem bit1_zero +/- theorem divp_one +/- theorem divp_self +/- theorem is_conj_refl Modified algebra/group_power.lean +/- theorem add_monoid.smul_eq_mul' +/- theorem gpow_neg_one +/- theorem inv_pow +/- theorem list.prod_repeat +/- theorem mul_pow +/- theorem neg_one_gsmul +/- theorem neg_one_pow_eq_or +/- theorem one_div_pow +/- theorem pow_mul Modified analysis/topology/topological_space.lean +/- theorem is_closed_empty +/- theorem is_closed_univ Modified analysis/topology/uniform_space.lean Modified computability/turing_machine.lean Modified data/complex/basic.lean +/- theorem complex.conj_I +/- theorem complex.conj_neg +/- theorem complex.conj_of_real +/- theorem complex.conj_one +/- theorem complex.conj_zero +/- theorem complex.norm_sq_I +/- theorem complex.norm_sq_one +/- theorem complex.norm_sq_zero +/- theorem complex.of_real_neg Modified data/finset.lean +/- theorem finset.coe_image +/- theorem finset.coe_inter +/- theorem finset.coe_union +/- theorem finset.empty_inter +/- theorem finset.empty_union +/- theorem finset.image_id +/- theorem finset.image_to_finset +/- theorem finset.insert_eq +/- theorem finset.inter_assoc +/- theorem finset.inter_comm +/- theorem finset.inter_distrib_left +/- theorem finset.inter_distrib_right +/- theorem finset.inter_empty +/- theorem finset.inter_left_comm +/- theorem finset.inter_right_comm +/- theorem finset.inter_self +/- theorem finset.map_refl +/- theorem finset.max_empty +/- theorem finset.mem_erase_of_ne_of_mem +/- theorem finset.mem_image +/- theorem finset.mem_insert_of_mem +/- theorem finset.mem_insert_self +/- theorem finset.mem_map +/- theorem finset.mem_singleton_self +/- theorem finset.mem_union_left +/- theorem finset.mem_union_right +/- theorem finset.ne_of_mem_erase +/- theorem finset.not_mem_erase +/- theorem finset.not_mem_singleton +/- theorem finset.range_succ +/- theorem finset.sigma_mono +/- theorem finset.singleton_inter_of_mem +/- theorem finset.singleton_inter_of_not_mem +/- theorem finset.union_comm +/- theorem finset.union_distrib_left +/- theorem finset.union_distrib_right +/- theorem finset.union_empty +/- theorem finset.union_idempotent +/- theorem finset.union_right_comm +/- theorem finset.union_self Modified data/finsupp.lean Modified data/list/basic.lean +/- theorem list.concat_cons +/- theorem list.index_of_eq_length +/- theorem list.nil_diff +/- theorem list.prefix_concat +/- theorem list.take_zero Modified data/polynomial.lean +/- theorem polynomial.C_0 Modified order/conditionally_complete_lattice.lean Modified order/filter.lean +/- theorem filter.singleton_mem_pure_sets Modified order/lattice.lean Modified set_theory/ordinal.lean +/- theorem cardinal.aleph_zero +/- theorem ordinal.lift_type_fin +/- theorem ordinal.one_lt_omega Modified tactic/squeeze.lean 2018-10-08 04:07:24-04:00 136ef25 feat(ring_theory/determinants): det is a monoid_hom (#406) ESTIMATED CHANGES Modified ring_theory/determinant.lean 2018-10-08 03:07:28-04:00 61d8776 fix(ring_theory/determinant): remove #print (#405) ESTIMATED CHANGES Modified ring_theory/determinant.lean 2018-10-08 00:49:30-04:00 13febee fix(group_theory/perm): fix to_additive use ESTIMATED CHANGES Modified group_theory/perm.lean + theorem finset.sum_univ_perm 2018-10-07 21:29:00-04:00 73f51b8 feat(ring_theory/determinant): determinants (#404) * clean up determinant PR * remove unnecessary type annotations * update copyright * add additive version of prod_attach_univ ESTIMATED CHANGES Modified data/equiv/basic.lean + theorem equiv.swap_apply_self + theorem equiv.swap_mul_self Modified data/fintype.lean + theorem finset.prod_attach_univ Modified group_theory/perm.lean + theorem finset.prod_univ_perm Added ring_theory/determinant.lean + theorem matrix.det_diagonal + theorem matrix.det_mul + theorem matrix.det_mul_aux + theorem matrix.det_one + theorem matrix.det_zero 2018-10-07 21:27:20-04:00 04d8c15 feat(solve_by_elim): improve backtracking behaviour when there are multiple subgoals (#393) ESTIMATED CHANGES Modified data/real/cau_seq_filter.lean Modified tactic/basic.lean Modified tests/solve_by_elim.lean 2018-10-07 09:22:24-04:00 8c68fd1 feat(tactic/auto_cases): split `iff`s into two implications (#344) * feat(tactic/auto_cases): split `iff`s into two implications * add Johan's test case ESTIMATED CHANGES Modified tactic/auto_cases.lean Modified tests/tidy.lean + def tidy.test.g 2018-10-07 09:17:40-04:00 49fea31 feat(tactics/solve_by_elim): add or remove lemmas from the set to apply, with `simp`-like parsing (#382) * feat(tactic/solve_by_elim): modify set of lemmas to apply using `simp`-like syntax * update to syntax: use `with attr` to request all lemmas tagged with an attribute * use non-interactive solve_by_elim in tfae * fix parser ESTIMATED CHANGES Modified category_theory/examples/rings.lean Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean Modified tactic/tfae.lean Modified tactic/wlog.lean Added tests/solve_by_elim.lean + def f Modified tests/tactics.lean 2018-10-07 09:12:40-04:00 3b09151 feat(tactic/squeeze): squeeze_simp tactic (#396) * feat(tactic/squeeze): just the squeeze_simp tactic * docs(tactic/squeeze): add header comments and documentation * Provide a means for other tactics to use squeeze ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/basic.lean Added tactic/squeeze.lean 2018-10-07 09:09:49-04:00 c1f13c0 fix(data/int.basic): rename sub_one_le_iff (#394) ESTIMATED CHANGES Modified data/int/basic.lean +/- theorem int.dvd_of_pow_dvd - theorem int.sub_one_le_iff + theorem int.sub_one_lt_iff 2018-10-07 09:09:28-04:00 d1e34fd fix(algebra/big_operators): remove `comm_monoid` assumption from `sum_nat_cast` (#401) ESTIMATED CHANGES Modified algebra/big_operators.lean 2018-10-07 09:08:52-04:00 276c472 fix(algebra/ring): delete duplicate lemma zero_dvd_iff_eq_zero (#399) ESTIMATED CHANGES Modified algebra/ring.lean - theorem zero_dvd_iff_eq_zero 2018-10-07 07:16:14-04:00 e4ce469 fix(docs/elan): fix homebrew instructions for macOS (#395) ESTIMATED CHANGES Modified docs/elan.md 2018-10-07 07:15:56-04:00 64431ae doc(hole/instance_stub) (#400) ESTIMATED CHANGES Modified README.md Added docs/holes.md 2018-10-07 06:35:55-04:00 46a37a7 feat(hole/instance_stub): tool support for providing snippets (#397) ESTIMATED CHANGES Modified tactic/basic.lean 2018-10-07 02:28:18-04:00 0ddb58c workaround(tactic/tfae): tfae is broken, comment out its tests (#398) ESTIMATED CHANGES Modified tests/tactics.lean 2018-10-06 22:41:00-04:00 2bf7b4b refactor(tactic/tfae): minor tfae modifications ESTIMATED CHANGES Modified data/list/basic.lean Modified tactic/tfae.lean 2018-10-06 22:33:52-04:00 568e405 feat(data/finset): embedding properties of finset.map ESTIMATED CHANGES Modified data/finset.lean + def finset.map_embedding + theorem finset.map_embedding_apply + theorem finset.map_inj +/- theorem finset.map_subset_map + theorem finset.mem_map' +/- theorem finset.mem_map_of_mem + theorem finset.subset.antisymm_iff 2018-10-05 02:18:56-04:00 74f52f1 Expand and contract fin (#387) ESTIMATED CHANGES Modified data/fin.lean + def fin.nat_add + def lower_left + def lower_right + def raise_nat 2018-10-04 15:08:19+02:00 9ec21e4 perf(tactic/scc): produce smaller proofs ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.tfae_of_forall Modified tactic/scc.lean Modified tactic/tfae.lean 2018-10-04 15:08:19+02:00 025b73a chore(tactic/scc): small cleanup ESTIMATED CHANGES Modified tactic/scc.lean 2018-10-04 15:08:19+02:00 ff12b35 docs(tactic/tfae): move doc string ESTIMATED CHANGES Modified data/list/basic.lean 2018-10-04 15:08:19+02:00 d935519 docs(tactic/tfae): fix oversights ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/scc.lean Modified tests/tactics.lean 2018-10-04 15:08:19+02:00 b7d314f feat(tactic/tfae): tactic for decomposing a proof into a set of equivalent propositions which can be proved equivalent by cyclical implications ESTIMATED CHANGES Modified category/basic.lean + def list.mmap_accuml + def list.mmap_accumr Modified data/list/basic.lean + def list.last' + theorem list.last'_mem + theorem list.tfae.out + def list.tfae + theorem list.tfae_cons_cons + theorem list.tfae_cons_of_mem + theorem list.tfae_nil + theorem list.tfae_of_cycle + theorem list.tfae_singleton Modified docs/tactics.md Added tactic/scc.lean Added tactic/tfae.lean + inductive tactic.tfae.arrow Modified tests/tactics.lean 2018-10-03 12:54:45+02:00 a243126 chore(*): replace more axiom_of_choice, classical.some and classical.choice using the choose tactic ESTIMATED CHANGES Modified analysis/real.lean Modified analysis/topology/uniform_space.lean Modified data/multiset.lean Modified data/set/finite.lean Modified tests/examples.lean 2018-10-03 11:24:50+02:00 c1f9f2e refactor(tactics/interactive, *): rename choice to choose and change syntax; use chooose instead of cases of axiom_of_choice ESTIMATED CHANGES Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/continuity.lean Modified analysis/topology/topological_space.lean Modified data/real/basic.lean Modified docs/tactics.md Modified ring_theory/noetherian.lean Modified set_theory/cardinal.lean Modified tactic/basic.lean Modified tactic/interactive.lean Modified tests/examples.lean 2018-10-03 09:30:54+02:00 0cfbf5a feat(tactic/linarith): handle negations of linear hypotheses ESTIMATED CHANGES Modified tactic/linarith.lean Modified tests/linarith.lean 2018-10-02 22:17:27+02:00 fff12f5 chore(analysis/topology): remove duplicate theorems interior_compl_eq and closure_compl_eq (as discovered by @kckennylau) ESTIMATED CHANGES Modified analysis/topology/topological_space.lean +/- theorem closure_compl - theorem closure_compl_eq +/- theorem interior_compl - theorem interior_compl_eq 2018-10-02 22:13:59+02:00 c2df6b1 feat(tactics/interactive): add choice (closes #38) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean Modified tests/examples.lean 2018-10-02 15:12:09+02:00 b84e2db feat(docs/theories): document padics development (close #337) (it hurts to write "maths in lean") ESTIMATED CHANGES Added docs/theories/padics.md 2018-10-02 14:08:34+02:00 1562cc2 feat(data/padics): use prime typeclass ESTIMATED CHANGES Added analysis/polynomial.lean + theorem polynomial.continuous_eval Modified data/padics/hensel.lean +/- theorem hensels_lemma +/- theorem limit_zero_of_norm_tendsto_zero +/- theorem padic_polynomial_dist Modified data/padics/padic_integers.lean +/- def padic_int.add +/- theorem padic_int.add_def +/- theorem padic_int.cast_pow - def padic_int.cau_seq_lim - theorem padic_int.cau_seq_lim_spec +/- theorem padic_int.coe_add +/- theorem padic_int.coe_coe +/- theorem padic_int.coe_mul +/- theorem padic_int.coe_neg +/- theorem padic_int.coe_one +/- theorem padic_int.coe_sub +/- theorem padic_int.coe_zero +/- def padic_int.inv +/- theorem padic_int.inv_mul +/- def padic_int.maximal_ideal +/- theorem padic_int.maximal_ideal_add +/- theorem padic_int.maximal_ideal_eq_nonunits +/- theorem padic_int.maximal_ideal_eq_or_univ_of_subset +/- theorem padic_int.maximal_ideal_mul +/- theorem padic_int.maximal_ideal_ne_univ +/- theorem padic_int.maximal_ideal_unique +/- theorem padic_int.mk_coe +/- theorem padic_int.mk_zero +/- def padic_int.mul +/- theorem padic_int.mul_def +/- theorem padic_int.mul_inv +/- def padic_int.neg - theorem padic_int.tendsto_limit +/- theorem padic_int.val_eq_coe +/- theorem padic_int.zero_def +/- def padic_int +/- theorem padic_norm_z.add_eq_max_of_ne +/- theorem padic_norm_z.eq_of_norm_add_lt_left +/- theorem padic_norm_z.eq_of_norm_add_lt_right +/- theorem padic_norm_z.le_one +/- theorem padic_norm_z.mul +/- theorem padic_norm_z.nonarchimedean +/- theorem padic_norm_z.norm_one +/- theorem padic_norm_z.one +/- theorem padic_norm_z.padic_norm_e_of_padic_int +/- theorem padic_norm_z.padic_norm_z_eq_padic_norm_e +/- theorem padic_norm_z.pow +/- def padic_norm_z Modified data/padics/padic_norm.lean +/- theorem padic_norm.add_eq_max_of_ne +/- theorem padic_norm.le_of_dvd +/- theorem padic_norm.triangle_ineq +/- theorem padic_norm.zero_of_padic_norm_eq_zero +/- def padic_norm Modified data/padics/padic_numbers.lean +/- theorem padic.cast_eq_of_rat +/- theorem padic.cast_eq_of_rat_of_int +/- theorem padic.cast_eq_of_rat_of_nat - def padic.cau_seq_lim - theorem padic.cau_seq_lim_spec +/- theorem padic.complete' +/- theorem padic.const_equiv +/- theorem padic.exi_rat_seq_conv_cauchy +/- def padic.mk +/- theorem padic.mk_eq +/- def padic.of_rat +/- theorem padic.of_rat_add +/- theorem padic.of_rat_div +/- theorem padic.of_rat_eq +/- theorem padic.of_rat_mul +/- theorem padic.of_rat_neg +/- theorem padic.of_rat_one +/- theorem padic.of_rat_sub +/- theorem padic.of_rat_zero +/- theorem padic.padic_norm_e_lim_le +/- theorem padic.rat_dense' +/- theorem padic.rat_dense - theorem padic.tendsto_limit +/- def padic +/- theorem padic_norm_e.add_eq_max_of_ne' +/- theorem padic_norm_e.add_eq_max_of_ne +/- theorem padic_norm_e.defn +/- theorem padic_norm_e.eq_of_norm_add_lt_left +/- theorem padic_norm_e.eq_of_norm_add_lt_right +/- theorem padic_norm_e.eq_padic_norm' +/- theorem padic_norm_e.eq_padic_norm +/- theorem padic_norm_e.eq_rat_norm +/- theorem padic_norm_e.nonarchimedean' +/- theorem padic_norm_e.nonarchimedean +/- theorem padic_norm_e.norm_rat_le_one +/- def padic_norm_e.rat_norm +/- theorem padic_norm_e.sub_rev +/- theorem padic_norm_e.triangle_ineq +/- theorem padic_norm_e.zero_def +/- theorem padic_norm_e.zero_iff +/- def padic_norm_e +/- theorem padic_seq.add_eq_max_of_ne +/- theorem padic_seq.eq_zero_iff_equiv_zero +/- theorem padic_seq.equiv_zero_of_val_eq_of_equiv_zero +/- theorem padic_seq.lift_index_left +/- theorem padic_seq.lift_index_left_left +/- theorem padic_seq.lift_index_right +/- theorem padic_seq.ne_zero_iff_nequiv_zero +/- def padic_seq.norm +/- theorem padic_seq.norm_const +/- theorem padic_seq.norm_eq +/- theorem padic_seq.norm_eq_norm_app_of_nonzero +/- theorem padic_seq.norm_eq_of_add_equiv_zero +/- theorem padic_seq.norm_equiv +/- theorem padic_seq.norm_image +/- theorem padic_seq.norm_mul +/- theorem padic_seq.norm_neg +/- theorem padic_seq.norm_nonarchimedean +/- theorem padic_seq.norm_nonneg +/- theorem padic_seq.norm_nonzero_of_not_equiv_zero +/- theorem padic_seq.norm_one +/- theorem padic_seq.norm_zero_iff +/- theorem padic_seq.not_equiv_zero_const_of_nonzero +/- theorem padic_seq.not_lim_zero_const_of_nonzero +/- theorem padic_seq.stationary +/- def padic_seq.stationary_point +/- theorem padic_seq.stationary_point_spec +/- def padic_seq Modified data/polynomial.lean - theorem polynomial.continuous_eval Modified data/real/basic.lean +/- theorem real.lim_add +/- theorem real.lim_const +/- theorem real.lim_eq_lim_of_equiv +/- theorem real.lim_mul_lim Modified data/real/cau_seq.lean + theorem cau_seq.lim_zero_sub_rev Modified data/real/cau_seq_completion.lean + theorem cau_seq.complete + theorem cau_seq.lim_spec Modified data/real/cau_seq_filter.lean +/- theorem cau_filter_lim_spec - theorem cau_seq_lim_spec - theorem complete_space_of_cauchy_complete + theorem le_nhds_cau_filter_lim - theorem le_nhds_cau_seq_lim +/- theorem set_seq_of_cau_filter_monotone + theorem tendsto_limit 2018-10-02 14:08:34+02:00 e6a1bc3 feat(data/real/cau_seq): relate cauchy sequence completeness and filter completeness ESTIMATED CHANGES Modified algebra/archimedean.lean + theorem exists_nat_one_div_lt Modified algebra/field_power.lean Modified analysis/limits.lean + theorem tendsto_inverse_at_top_nhds_0_nat + theorem tendsto_one_div_at_top_nhds_0_nat Modified data/padics/padic_integers.lean +/- def padic_int.cau_seq_lim - theorem padic_int.complete Modified data/padics/padic_numbers.lean +/- def padic.cau_seq_lim +/- theorem padic.cau_seq_lim_spec +/- theorem padic.padic_norm_e_lim_le Modified data/real/cau_seq_completion.lean +/- def cau_seq.completion.Cauchy +/- theorem cau_seq.completion.cau_seq_zero_ne_one Modified data/real/cau_seq_filter.lean + theorem cau_filter_lim_spec + theorem cau_seq_lim_spec + theorem cau_seq_of_cau_filter_mem_set_seq + theorem complete_space_of_cauchy_complete + theorem is_cau_seq_of_dist_tendsto_0 + theorem le_nhds_cau_seq_lim + theorem mono_of_mono_succ + theorem seq_of_cau_filter_is_cauchy' + theorem seq_of_cau_filter_is_cauchy + theorem seq_of_cau_filter_mem_set_seq + def set_seq_of_cau_filter + theorem set_seq_of_cau_filter_inhabited + theorem set_seq_of_cau_filter_mem_sets + theorem set_seq_of_cau_filter_monotone' + theorem set_seq_of_cau_filter_monotone + theorem set_seq_of_cau_filter_spec + theorem tendsto_div 2018-10-02 14:08:34+02:00 e0b0c53 feat(data/padics): prove Hensel's lemma ESTIMATED CHANGES Modified algebra/field_power.lean + theorem fpow_ge_one_of_nonneg + theorem fpow_le_one_of_nonpos + theorem fpow_neg + theorem fpow_pos_of_pos + theorem fpow_sub + theorem one_lt_fpow + theorem one_lt_pow Modified algebra/group_power.lean + theorem div_sq_cancel + theorem neg_square + theorem pow_le_pow_of_le_left + theorem pow_le_pow_of_le_one + theorem pow_lt_pow_of_lt_one Modified algebra/ordered_ring.lean + theorem mul_le_iff_le_one_left + theorem mul_le_iff_le_one_right + theorem mul_lt_iff_lt_one_left + theorem mul_lt_iff_lt_one_right Modified analysis/limits.lean + theorem tendsto_coe_iff + theorem tendsto_pow_at_top_at_top_of_gt_1_nat Modified analysis/normed_space.lean +/- theorem norm_div +/- theorem norm_inv +/- theorem norm_one + theorem norm_pow + theorem normed_field.norm_pow Modified analysis/topology/topological_structures.lean + theorem continuous_pow Modified data/finsupp.lean + theorem finsupp.sum_sub Modified data/int/modeq.lean + theorem int.modeq.exists_unique_equiv + theorem int.modeq.exists_unique_equiv_nat + theorem int.modeq.mod_coprime + theorem int.modeq.modeq_add_fac Modified data/nat/basic.lean +/- theorem nat.dvd_of_pow_dvd + theorem nat.exists_eq_add_of_le + theorem nat.exists_eq_add_of_lt Added data/padics/default.lean Added data/padics/hensel.lean + theorem hensels_lemma + theorem limit_zero_of_norm_tendsto_zero + theorem padic_polynomial_dist Modified data/padics/padic_integers.lean +/- theorem padic_int.add_def + theorem padic_int.cast_pow + def padic_int.cau_seq_lim + theorem padic_int.cau_seq_lim_spec +/- theorem padic_int.coe_add +/- theorem padic_int.coe_mul +/- theorem padic_int.coe_one +/- theorem padic_int.coe_sub + theorem padic_int.coe_zero + theorem padic_int.complete +/- theorem padic_int.inv_mul +/- theorem padic_int.maximal_ideal_add +/- theorem padic_int.maximal_ideal_mul +/- theorem padic_int.maximal_ideal_ne_univ +/- theorem padic_int.mul_def +/- theorem padic_int.mul_inv + theorem padic_int.tendsto_limit +/- theorem padic_int.zero_def + theorem padic_norm_z.add_eq_max_of_ne + theorem padic_norm_z.eq_of_norm_add_lt_left + theorem padic_norm_z.eq_of_norm_add_lt_right +/- theorem padic_norm_z.le_one +/- theorem padic_norm_z.norm_one + theorem padic_norm_z.one + theorem padic_norm_z.padic_norm_e_of_padic_int + theorem padic_norm_z.padic_norm_z_eq_padic_norm_e + theorem padic_norm_z.padic_val_of_cong_pow_p + theorem padic_norm_z.pow Modified data/padics/padic_norm.lean + theorem padic_norm.le_of_dvd +/- theorem padic_val.padic_val_eq_zero_of_coprime + theorem padic_val.pow_dvd_iff_le_padic_val + theorem padic_val.pow_dvd_of_le_padic_val + theorem padic_val_rat.padic_val_rat_of_int Renamed data/padics/padic_rationals.lean to data/padics/padic_numbers.lean + def padic.cau_seq_lim + theorem padic.cau_seq_lim_spec +/- theorem padic.complete' + theorem padic.padic_norm_e_lim_le + theorem padic.tendsto_limit + theorem padic_norm_e.add_eq_max_of_ne' + theorem padic_norm_e.add_eq_max_of_ne +/- theorem padic_norm_e.defn + theorem padic_norm_e.eq_of_norm_add_lt_left + theorem padic_norm_e.eq_of_norm_add_lt_right + theorem padic_norm_e.norm_rat_le_one + theorem padic_seq.add_eq_max_of_ne + theorem padic_seq.lift_index_left + theorem padic_seq.lift_index_left_left + theorem padic_seq.lift_index_right + theorem padic_seq.norm_eq_of_add_equiv_zero +/- theorem padic_seq.norm_nonarchimedean Modified data/polynomial.lean + def polynomial.binom_expansion + theorem polynomial.continuous_eval + theorem polynomial.derivative_eval + def polynomial.eval_sub_factor + theorem polynomial.eval_sum + def polynomial.pow_add_expansion + def polynomial.pow_sub_pow_factor Modified data/rat.lean + theorem rat.div_num_denom + theorem rat.zero_iff_num_zero Modified data/real/cau_seq.lean Added data/real/cau_seq_filter.lean + theorem cauchy_of_filter_cauchy + theorem filter_cauchy_of_cauchy 2018-10-02 14:02:23+02:00 f040aef feat(data/padics): use has_norm typeclasses for padics ESTIMATED CHANGES Modified algebra/archimedean.lean +/- theorem ceil_nonneg + theorem ceil_zero Modified algebra/field_power.lean Modified analysis/normed_space.lean + theorem norm_div + theorem norm_inv + theorem norm_one + theorem norm_sub_rev Modified data/int/basic.lean + theorem int.dvd_of_pow_dvd - theorem int.pow_div_of_le_of_pow_div_int + theorem int.pow_dvd_of_le_of_pow_dvd Modified data/nat/basic.lean + theorem nat.div_mul_div + theorem nat.dvd_of_pow_dvd - theorem nat.nat.div_mul_div - theorem nat.pow_div_of_le_of_pow_div + theorem nat.pow_dvd_of_le_of_pow_dvd Modified data/padics/padic_integers.lean + theorem padic_int.add_def + theorem padic_int.coe_add + theorem padic_int.coe_coe + theorem padic_int.coe_mul + theorem padic_int.coe_neg + theorem padic_int.coe_one + theorem padic_int.coe_sub + def padic_int.inv + theorem padic_int.inv_mul + def padic_int.maximal_ideal + theorem padic_int.maximal_ideal_add + theorem padic_int.maximal_ideal_eq_nonunits + theorem padic_int.maximal_ideal_eq_or_univ_of_subset + theorem padic_int.maximal_ideal_mul + theorem padic_int.maximal_ideal_ne_univ + theorem padic_int.maximal_ideal_unique + theorem padic_int.mk_coe + theorem padic_int.mk_zero + theorem padic_int.mul_def + theorem padic_int.mul_inv + theorem padic_int.val_eq_coe + theorem padic_int.zero_def +/- def padic_int + theorem padic_norm_z.le_one + theorem padic_norm_z.mul + theorem padic_norm_z.nonarchimedean + theorem padic_norm_z.norm_one + def padic_norm_z Modified data/padics/padic_norm.lean + theorem padic_val.dvd_of_padic_val_pos - theorem padic_val.le_padic_val_of_pow_div + theorem padic_val.le_padic_val_of_pow_dvd + theorem padic_val.padic_val_eq_zero_of_coprime + theorem padic_val.padic_val_eq_zero_of_not_dvd' + theorem padic_val.padic_val_eq_zero_of_not_dvd Modified data/padics/padic_rationals.lean + theorem padic.complete' - theorem padic.complete +/- def padic.lim_seq + theorem padic.rat_dense' +/- theorem padic.rat_dense +/- def padic + theorem padic_norm_e.eq_padic_norm' +/- theorem padic_norm_e.eq_padic_norm + theorem padic_norm_e.eq_rat_norm + theorem padic_norm_e.nonarchimedean' +/- theorem padic_norm_e.nonarchimedean + def padic_norm_e.rat_norm + theorem padic_norm_e.triangle_ineq +/- theorem padic_seq.norm_equiv +/- theorem padic_seq.norm_mul 2018-10-02 13:38:45+02:00 963fc83 doc(docs/elan.md): instructions for building all of a dependency Closes #308. ESTIMATED CHANGES Modified docs/elan.md 2018-10-02 13:38:05+02:00 9339754 docs(elan): updating documentation on installing via elan (#371) * updating documentation for elan * minor * further update of elan docs * update instructions for elan 0.7.1 * noting additional prerequisite on macOS ESTIMATED CHANGES Modified docs/elan.md 2018-10-02 13:36:09+02:00 28443c8 feat(ring_theory/noetherian): zero ring (and finite rings) are Noetherian (closes #341) ESTIMATED CHANGES Modified algebra/ring.lean + theorem eq_zero_of_zero_eq_one + theorem subsingleton_of_zero_eq_one Modified data/polynomial.lean + theorem polynomial.leading_coeff_eq_zero_iff_deg_eq_bot Modified ring_theory/noetherian.lean + theorem ring.is_noetherian_of_fintype + theorem ring.is_noetherian_of_zero_eq_one 2018-10-02 11:34:24+02:00 44b55e6 feat(category_theory/groupoid): groupoids ESTIMATED CHANGES Added category_theory/groupoid.lean + def category_theory.large_groupoid + def category_theory.small_groupoid 2018-10-02 11:34:04+02:00 efa9459 feat(category_theory/whiskering): whiskering nat_trans by functors (#360) * feat(category_theory/whiskering): whiskering nat_trans by functors * simplify whiskering ESTIMATED CHANGES Added category_theory/whiskering.lean + theorem category_theory.whisker_left.app + def category_theory.whisker_left + theorem category_theory.whisker_left_twice + theorem category_theory.whisker_left_vcomp + theorem category_theory.whisker_right.app + def category_theory.whisker_right + theorem category_theory.whisker_right_left + theorem category_theory.whisker_right_twice + theorem category_theory.whisker_right_vcomp + def category_theory.whiskering_left + def category_theory.whiskering_right 2018-10-02 08:05:06+02:00 470b6da feat(data/sum): add monad instance ESTIMATED CHANGES Modified category/applicative.lean Modified category/basic.lean Modified category/functor.lean Modified category/traversable/instances.lean 2018-10-01 20:53:49+02:00 dbb3ff0 feat(data/zmod/quadratic_reciprocity): quadratic reciprocity (#327) * multiplicative group of finite field is cyclic * more stuff * change chinese remainder to def * get rid of nonsense * delete extra line break * one prod_bij left * move lemmas to correct places * delete prod_instances * almost done * move lamms to correct places * more moving lemmas * finished off moving lemmas * fix build * move quadratic reciprocity to zmod * improve readability * remove unnecessary alphas * move `prod_range_id` * fix build * fix build * fix build * fix build * delete mk_of_ne_zero * move odd_mul_odd_div_two * extra a few lemmas * improving readability * delete duplicate lemmas * forgot to save * delete duplicate lemma * indent calc proofs * fix build * fix build * forgot to save * fix build ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.card_bind + theorem finset.card_bind_le +/- theorem finset.prod_const +/- theorem finset.prod_image + theorem finset.prod_involution + theorem finset.prod_nat_pow + theorem finset.prod_pow + theorem finset.prod_range_id_eq_fact +/- theorem finset.sum_const + theorem finset.sum_smul Modified algebra/field.lean + theorem units.units.mk0_inj Modified algebra/field_power.lean Modified algebra/group.lean + theorem units.coe_inv + theorem units.coe_mul + theorem units.coe_one - theorem units.inv_coe - theorem units.mul_coe - theorem units.one_coe Modified algebra/group_power.lean + theorem neg_one_pow_eq_pow_mod_two + theorem units.coe_pow Modified algebra/ordered_ring.lean + theorem one_lt_mul Modified algebra/pi_instances.lean + theorem finset.prod_mk_prod Modified algebra/ring.lean + theorem units.coe_ne_zero + theorem units.inv_eq_self_iff Modified data/finset.lean +/- theorem finset.card_attach + theorem finset.card_congr +/- theorem finset.card_range + theorem finset.card_union_add_card_inter + theorem finset.card_union_le +/- theorem finset.fold_image + theorem finset.surj_on_of_inj_on_of_card_le Modified data/int/modeq.lean + theorem int.mod_mul_left_mod + theorem int.mod_mul_right_mod + theorem int.modeq.gcd_a_modeq + theorem int.modeq.mod_modeq + theorem int.modeq.modeq_and_modeq_iff_modeq_mul + theorem int.modeq.modeq_of_modeq_mul_left + theorem int.modeq.modeq_of_modeq_mul_right Modified data/nat/basic.lean + theorem nat.div_dvd_of_dvd + theorem nat.mod_mul_left_div_self + theorem nat.mod_mul_right_div_self + theorem nat.pred_eq_sub_one + theorem nat.succ_le_iff + theorem nat.two_mul_odd_div_two Modified data/nat/gcd.lean + theorem nat.coprime.mul_dvd_of_dvd_of_dvd + theorem nat.coprime_mul_iff_left + theorem nat.coprime_mul_iff_right Modified data/nat/modeq.lean + theorem nat.mod_mul_left_mod + theorem nat.mod_mul_right_mod + def nat.modeq.chinese_remainder - theorem nat.modeq.chinese_remainder + theorem nat.modeq.coprime_of_mul_modeq_one + theorem nat.modeq.modeq_and_modeq_iff_modeq_mul + theorem nat.modeq.modeq_of_modeq_mul_left + theorem nat.modeq.modeq_of_modeq_mul_right + theorem nat.odd_mul_odd + theorem nat.odd_mul_odd_div_two + theorem nat.odd_of_mod_four_eq_one + theorem nat.odd_of_mod_four_eq_three Modified data/nat/prime.lean + theorem nat.prime.eq_two_or_odd Added data/nat/totient.lean + theorem nat.sum_totient + def nat.totient + theorem nat.totient_le + theorem nat.totient_pos Modified data/quot.lean +/- theorem quotient.mk_out' Modified data/set/basic.lean Modified data/set/finite.lean + theorem set.card_le_of_subset + theorem set.eq_of_subset_of_card_le Renamed data/zmod.lean to data/zmod/basic.lean + theorem zmod.cast_mul_left_val_cast + theorem zmod.cast_mul_right_val_cast + theorem zmod.cast_val_cast_of_dvd + theorem zmod.coe_val_cast_int + theorem zmod.eq_zero_iff_dvd_int + theorem zmod.eq_zero_iff_dvd_nat + theorem zmod.le_div_two_iff_lt_neg + theorem zmod.ne_neg_self + def zmod.units_equiv_coprime + theorem zmodp.card_zmodp + theorem zmodp.coe_val_cast_int + theorem zmodp.eq_zero_iff_dvd_int + theorem zmodp.eq_zero_iff_dvd_nat - theorem zmodp.gcd_a_modeq + theorem zmodp.le_div_two_iff_lt_neg + theorem zmodp.ne_neg_self + theorem zmodp.prime_ne_zero Added data/zmod/quadratic_reciprocity.lean + theorem quadratic_reciprocity_aux.card_range_p_mul_q_filter_not_coprime + theorem quadratic_reciprocity_aux.filter_range_p_mul_q_div_two_eq + theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_div_two_eq + theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_div_two_eq_prod_product + theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_div_two_mod_p_eq + theorem quadratic_reciprocity_aux.prod_filter_range_p_mul_q_not_coprime_eq + theorem quadratic_reciprocity_aux.prod_range_div_two_erase_zero + theorem quadratic_reciprocity_aux.prod_range_p_mul_q_div_two_ite_eq + theorem quadratic_reciprocity_aux.prod_range_p_mul_q_filter_coprime_mod_p + theorem quadratic_reciprocity_aux.range_p_product_range_q_div_two_prod + theorem zmodp.card_units_zmodp + theorem zmodp.euler_criterion + theorem zmodp.euler_criterion_units + theorem zmodp.fermat_little + theorem zmodp.is_square_iff_is_not_square_of_mod_four_eq_three + theorem zmodp.is_square_iff_is_square_of_mod_four_eq_one + def zmodp.legendre_sym + theorem zmodp.legendre_sym_eq_one_or_neg_one + theorem zmodp.legendre_sym_eq_pow + theorem zmodp.pow_div_two_eq_neg_one_or_one + theorem zmodp.prod_range_prime_erase_zero + theorem zmodp.quadratic_reciprocity + theorem zmodp.wilsons_lemma Added field_theory/finite.lean + theorem coe_units_equiv_ne_zero + theorem finite_field.card_nth_roots_units + theorem finite_field.card_order_of_eq_totient + theorem finite_field.card_pow_eq_one_eq_order_of + theorem finite_field.card_units + theorem finite_field.prod_univ_units_id_eq_neg_one + theorem order_of_pow + def units_equiv_ne_zero Modified group_theory/order_of_element.lean + theorem is_cyclic_of_order_of_eq_card + theorem order_of_dvd_of_pow_eq_one + theorem order_of_eq_card_of_forall_mem_gppowers + theorem order_of_le_of_pow_eq_one + theorem pow_card_eq_one + theorem powers_eq_gpowers + theorem sum_card_order_of_eq_card_pow_eq_one Modified number_theory/pell.lean Modified ring_theory/associated.lean 2018-10-01 20:35:10+02:00 f3850c2 feat(algebra/group): add units.map and prove that it is a group hom (#374) ESTIMATED CHANGES Modified algebra/group.lean 2018-10-01 20:34:14+02:00 decb030 style(tactic/*): minor simplifications to tidy-related tactics ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/chain.lean Modified tactic/interactive.lean Modified tactic/tidy.lean 2018-10-01 20:26:32+02:00 87a963b feat(tactic/ext): add apply_cfg argument to ext1 (#346) * feat(tactics/ext): use `applyc _ {new_goals := new_goals.all}` This causes goals to appear in the same order they appear as hypotheses of the `@[extensionality]` lemma, rather than being reordered to put dependent goals first. This doesn't appear to affect any uses of `ext` in mathlib, but is occasionally helpful in the development of category theory. (Indeed, I have been running into tactic mode proofs that fail to typecheck, when using ext, and this avoids the problem) * adding configuration to non-interactive ext1 and a wrapper so tidy can sometimes produce shorter tactic scripts ESTIMATED CHANGES Modified tactic/ext.lean Modified tactic/tidy.lean Modified tests/tactics.lean + structure dependent_fields + theorem df.ext 2018-10-01 20:24:42+02:00 1923c23 feat(data/polynomial): interface general coefficients of a polynomial (#339) * feat(data/polynomial): interface general coefficients of a polynomial * fix(data/polynomial): fixing the code I broke when defining polynomial.ext * fix(data/polynomial): tidy up comments * Update polynomial.lean * adding interface for scalar multiplication and coefficients * feat(data/polynomial): coeff is R-linear ESTIMATED CHANGES Modified data/polynomial.lean + theorem polynomial.C_mul' + def polynomial.coeff + theorem polynomial.coeff_C + theorem polynomial.coeff_C_mul_X + theorem polynomial.coeff_X + theorem polynomial.coeff_X_pow + theorem polynomial.coeff_add + theorem polynomial.coeff_is_linear + theorem polynomial.coeff_mul_X + theorem polynomial.coeff_mul_X_pow + theorem polynomial.coeff_mul_left + theorem polynomial.coeff_mul_right + theorem polynomial.coeff_one + theorem polynomial.coeff_smul + theorem polynomial.coeff_zero + theorem polynomial.ext + theorem polynomial.mul_X_pow_eq_zero 2018-10-01 20:19:59+02:00 282754c fix(tactic/linarith): symmetric case ESTIMATED CHANGES Modified tactic/linarith.lean + theorem linarith.int.coe_nat_mul_bit0 + theorem linarith.int.coe_nat_mul_bit1 + theorem linarith.int.coe_nat_mul_one + theorem linarith.int.coe_nat_mul_zero 2018-10-01 20:19:59+02:00 31ef46a feat(tactic/linarith): don't reject nonlinear hypotheses ESTIMATED CHANGES Modified tactic/linarith.lean + theorem linarith.int.coe_nat_bit0_mul + theorem linarith.int.coe_nat_bit1_mul + theorem linarith.int.coe_nat_one_mul + theorem linarith.int.coe_nat_zero_mul Modified tests/linarith.lean 2018-10-01 18:10:17+02:00 4ba7f23 cleanup(data/holor) ESTIMATED CHANGES Modified data/holor.lean +/- theorem holor.cast_type +/- def holor +/- theorem holor_index.cast_type +/- def holor_index Modified data/list/basic.lean +/- theorem list.drop_drop 2018-10-01 14:51:42+02:00 7c361fa feat(data/holor): holor library ESTIMATED CHANGES Added data/holor.lean + def holor.assoc_left + def holor.assoc_right + theorem holor.cast_type + inductive holor.cprank_max1 + inductive holor.cprank_max + theorem holor.cprank_max_1 + theorem holor.cprank_max_add + theorem holor.cprank_max_mul + theorem holor.cprank_max_nil + theorem holor.cprank_max_sum + theorem holor.cprank_max_upper_bound + theorem holor.cprank_upper_bound + theorem holor.holor_index_cons_decomp + def holor.mul + theorem holor.mul_assoc0 + theorem holor.mul_assoc + theorem holor.mul_left_distrib + theorem holor.mul_right_distrib + theorem holor.mul_scalar_mul + theorem holor.mul_zero + def holor.slice + theorem holor.slice_add + theorem holor.slice_eq + theorem holor.slice_sum + theorem holor.slice_unit_vec_mul + theorem holor.slice_zero + theorem holor.sum_unit_vec_mul_slice + def holor.unit_vec + theorem holor.zero_mul + def holor + def holor_index.assoc_left + def holor_index.assoc_right + theorem holor_index.cast_type + def holor_index.drop + theorem holor_index.drop_drop + theorem holor_index.drop_take + def holor_index.take + theorem holor_index.take_take + def holor_index Modified data/list/basic.lean + theorem list.drop_drop + theorem list.drop_take + theorem list.forall₂_drop + theorem list.forall₂_drop_append + theorem list.forall₂_take + theorem list.forall₂_take_append 2018-10-01 14:40:27+02:00 b66614d refactor(analysis/topology): renamed compact_open to continuous_map; moved locally_compact to a more general position ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem locally_compact_of_compact + theorem locally_compact_of_compact_nhds Renamed analysis/topology/compact_open.lean to analysis/topology/continuous_map.lean - def coev - def compact_open - def compact_open_gen - theorem continuous_coev - theorem continuous_ev - theorem continuous_induced + def continuous_map.coev + def continuous_map.compact_open.gen + theorem continuous_map.continuous_coev + theorem continuous_map.continuous_ev + theorem continuous_map.continuous_induced + def continuous_map.ev + theorem continuous_map.image_coev +/- def continuous_map.induced + def continuous_map - def ev - theorem image_coev - theorem locally_compact_of_compact - theorem locally_compact_of_compact_nhds 2018-09-29 09:32:55-04:00 b5d8fbe fix(data/nat/prime): fix build, add simp attr ESTIMATED CHANGES Modified data/nat/basic.lean Modified data/nat/prime.lean 2018-09-29 07:48:43-04:00 6997caf feat(data/nat/basic): remove superfluous assumptions ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.lt_pred_iff - theorem nat.lt_pred_of_succ_lt + theorem nat.pred_le_iff +/- theorem nat.sub_le_left_iff_le_add +/- theorem nat.sub_le_right_iff_le_add 2018-09-24 21:31:25+02:00 6434658 feat(analysis/topology): locally compact spaces and the compact-open topology ESTIMATED CHANGES Added analysis/topology/compact_open.lean + def coev + def compact_open + def compact_open_gen + theorem continuous_coev + theorem continuous_ev + theorem continuous_induced + def continuous_map.induced + def ev + theorem image_coev + theorem locally_compact_of_compact + theorem locally_compact_of_compact_nhds Modified analysis/topology/topological_space.lean + theorem compact_diff + theorem compact_inter 2018-09-24 15:33:35+02:00 68acd76 feat(group_theory/perm): perm.fintype and card_perm (closed #366) ESTIMATED CHANGES Modified data/fintype.lean + theorem card_perms_of_finset + theorem fintype.card_equiv + theorem fintype.card_perm + def fintype_perm + theorem length_perms_of_list + theorem mem_of_mem_perms_of_list + theorem mem_perms_of_finset_iff + theorem mem_perms_of_list_iff + theorem mem_perms_of_list_of_mem + theorem nodup_perms_of_list + def perms_of_finset + def perms_of_list Modified group_theory/perm.lean 2018-09-24 08:48:09+02:00 cbfe372 fix(category_theory/functor): make obj_eq_coe a rfl-lemma This is needed to, for example, let `dsimp` turn `𝟙 (F.obj X)` into `𝟙 (F X)`. ESTIMATED CHANGES Modified category_theory/functor.lean +/- theorem category_theory.functor.obj_eq_coe 2018-09-23 19:54:43-04:00 ce43eae fix(topological_structures): fix imports ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean 2018-09-23 18:55:03-04:00 8c76cac fix(*): tweaks to 7944cc ESTIMATED CHANGES Modified analysis/topology/topological_space.lean Modified linear_algebra/submodule.lean + def quotient_module.le_order_embedding + def quotient_module.lt_order_embedding - def submodule.submodule_lt_equiv Modified order/basic.lean Modified order/order_iso.lean + def order_embedding.lt_embedding_of_le_embedding 2018-09-23 09:40:57+02:00 e7c7552 feat(analysis/topology/continuity): compactness and embeddings ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem compact_iff_compact_image_of_embedding + theorem compact_iff_compact_in_subtype + theorem compact_iff_compact_univ + theorem embedding.continuous + theorem quotient_map.continuous 2018-09-23 09:40:57+02:00 ab20b5f style(analysis/topology/continuity): minor reorganizations ESTIMATED CHANGES Modified analysis/topology/continuity.lean +/- theorem closure_subtype +/- theorem embedding.tendsto_nhds_iff 2018-09-21 17:57:07+02:00 ca7f118 fix(docs/tactics.md): missing backquote, formatting I think I never previewed when I updated the `linarith` doc before, sorry. ESTIMATED CHANGES Modified docs/tactics.md 2018-09-21 17:46:47+02:00 9a7a611 feat(analysis/topology, order/filter): theorems for the applicative structure on filter; add list topology ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem nhds_list +/- theorem quotient_dense_of_dense + theorem topological_space.nhds_mk_of_nhds Modified order/filter.lean + theorem filter.comap_Sup + theorem filter.comap_supr + theorem filter.le_map + theorem filter.le_seq + theorem filter.map_pure + theorem filter.mem_map_sets_iff + theorem filter.mem_seq_sets_def + theorem filter.mem_seq_sets_iff + theorem filter.mem_traverse_sets + theorem filter.mem_traverse_sets_iff + theorem filter.prod_map_seq_comm + theorem filter.pure_seq_eq_map + theorem filter.seq_assoc + theorem filter.seq_mem_seq_sets +/- theorem filter.seq_mono + theorem filter.seq_pure + theorem filter.sequence_mono + theorem filter.singleton_mem_pure_sets + theorem filter.{l} 2018-09-21 17:46:47+02:00 568a15f refactor(category/traversable): proofs about list instance for traverse, simplify multiset.traverse ESTIMATED CHANGES Modified category/traversable/instances.lean + theorem list.mem_traverse + theorem list.traverse_append + theorem list.traverse_cons + theorem list.traverse_nil - theorem traverse_append Modified data/list/basic.lean + theorem list.forall₂.flip + theorem list.forall₂.mp + theorem list.forall₂_and_left - theorem list.forall₂_flip Modified data/list/perm.lean Modified data/multiset.lean - theorem multiset.coe_append_eq_add_coe - theorem multiset.coe_list_cons_eq_cons_coe - theorem multiset.coe_traverse_cons - theorem multiset.coe_traverse_cons_swap +/- def multiset.traverse 2018-09-21 17:46:47+02:00 618aac9 feat(data/set): add set.seq (use it for the appliative.seq instance for set) ESTIMATED CHANGES Modified data/set/lattice.lean + theorem set.image_seq +/- theorem set.mem_seq_iff + theorem set.prod_eq_seq + theorem set.prod_image_seq_comm + theorem set.pure_def + def set.seq + theorem set.seq_def + theorem set.seq_eq_set_seq + theorem set.seq_mono + theorem set.seq_seq + theorem set.seq_singleton + theorem set.seq_subset + theorem set.singleton_seq 2018-09-21 17:46:47+02:00 a62ec36 refactor(order/filter): remove monad instance on filters; add applicative instance inducing the expected products ESTIMATED CHANGES Modified analysis/topology/topological_space.lean Modified order/filter.lean - theorem filter.mem_return_sets + def filter.seq 2018-09-21 17:46:47+02:00 f53c776 feat(analysis/topology): pi-spaces: topolopgy generation, prove second countability ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem is_open_set_pi + theorem pi_eq_generate_from + theorem pi_generate_from_eq + theorem pi_generate_from_eq_fintype Modified analysis/topology/topological_space.lean + theorem generate_from_mono 2018-09-21 17:46:47+02:00 da7bbd7 feat(data/set): add set.pi ESTIMATED CHANGES Modified data/equiv/basic.lean + def equiv.pi_equiv_subtype_sigma Modified data/equiv/list.lean + def encodable.fintype_arrow + def encodable.fintype_pi Modified data/finset.lean + theorem finset.set_of_mem Modified data/fintype.lean + theorem finset.coe_univ Modified data/set/basic.lean + def set.pi + theorem set.pi_empty_index + theorem set.pi_if + theorem set.pi_insert_index + theorem set.pi_singleton_index + theorem set.sep_set_of + theorem set.sep_univ + theorem set.set_of_mem Modified data/set/countable.lean + theorem set.countable_pi Modified data/set/lattice.lean + theorem set.pi_def Modified logic/basic.lean + theorem rec_heq_of_heq 2018-09-21 17:46:47+02:00 7944cc5 fix(*): fix some problems introduced with 98152392bcd4b3f783602d030a5ab6a9e47e0088 and 9aec1d18d3c4cbad400d7ddcdd63b94d647b0a01 ESTIMATED CHANGES Modified analysis/metric_space.lean Modified analysis/normed_space.lean Modified analysis/topology/topological_space.lean Modified linear_algebra/submodule.lean Modified order/order_iso.lean +/- theorem order_iso.coe_coe_fn Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean +/- theorem initial_seg.coe_coe_fn +/- theorem principal_seg.coe_coe_fn' +/- theorem principal_seg.coe_coe_fn 2018-09-21 00:09:04-04:00 2485d8e fix(*): fix build ESTIMATED CHANGES Modified analysis/topology/topological_space.lean Modified linear_algebra/basic.lean Modified linear_algebra/submodule.lean Modified logic/function.lean +/- theorem function.inv_fun_on_eq' Modified order/basic.lean +/- def order.preimage 2018-09-20 19:46:48-04:00 a4108eb fix(algebra/pi_instances): bugfix ESTIMATED CHANGES Modified algebra/pi_instances.lean Modified linear_algebra/prod_module.lean - theorem is_basis_inl_union_inr - theorem is_linear_map_prod_fst - theorem is_linear_map_prod_inl - theorem is_linear_map_prod_inr - theorem is_linear_map_prod_mk - theorem is_linear_map_prod_snd - theorem linear_independent_inl_union_inr + theorem prod.is_basis_inl_union_inr + theorem prod.is_linear_map_prod_fst + theorem prod.is_linear_map_prod_inl + theorem prod.is_linear_map_prod_inr + theorem prod.is_linear_map_prod_mk + theorem prod.is_linear_map_prod_snd + theorem prod.linear_independent_inl_union_inr + theorem prod.span_inl_union_inr + theorem prod.span_prod - theorem span_inl_union_inr - theorem span_prod 2018-09-20 19:21:02-04:00 9aec1d1 refactor(algebra/pi_instances): move prod instances to pi_instances file ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/pi_instances.lean + theorem prod.fst_inl + theorem prod.fst_inr + theorem prod.fst_inv + theorem prod.fst_mul + theorem prod.fst_one + theorem prod.fst_prod + theorem prod.injective_inl + theorem prod.injective_inr + def prod.inl + theorem prod.inl_eq_inl + theorem prod.inl_eq_inr + def prod.inr + theorem prod.inr_eq_inl + theorem prod.inr_eq_inr + theorem prod.snd_inl + theorem prod.snd_inr + theorem prod.snd_inv + theorem prod.snd_mul + theorem prod.snd_one + theorem prod.snd_prod Modified linear_algebra/prod_module.lean + theorem is_basis_inl_union_inr + theorem is_linear_map_prod_fst + theorem is_linear_map_prod_inl + theorem is_linear_map_prod_inr + theorem is_linear_map_prod_mk + theorem is_linear_map_prod_snd + theorem linear_independent_inl_union_inr - theorem prod.fst_inl - theorem prod.fst_inr - theorem prod.fst_inv - theorem prod.fst_mul - theorem prod.fst_one - theorem prod.fst_prod - theorem prod.injective_inl - theorem prod.injective_inr - def prod.inl - theorem prod.inl_eq_inl - theorem prod.inl_eq_inr - def prod.inr - theorem prod.inr_eq_inl - theorem prod.inr_eq_inr - theorem prod.is_basis_inl_union_inr - theorem prod.is_linear_map_prod_fst - theorem prod.is_linear_map_prod_inl - theorem prod.is_linear_map_prod_inr - theorem prod.is_linear_map_prod_mk - theorem prod.is_linear_map_prod_snd - theorem prod.linear_independent_inl_union_inr - theorem prod.snd_inl - theorem prod.snd_inr - theorem prod.snd_inv - theorem prod.snd_mul - theorem prod.snd_one - theorem prod.snd_prod - theorem prod.span_inl_union_inr - theorem prod.span_prod + theorem span_inl_union_inr + theorem span_prod 2018-09-20 17:49:40-04:00 3ba4e82 feat(data/set/finite): finite_subset_Union, disjoint_mono ESTIMATED CHANGES Modified data/set/finite.lean + theorem set.finite_range + theorem set.finite_subset_Union Modified data/set/lattice.lean + theorem disjoint_mono + theorem disjoint_mono_left + theorem disjoint_mono_right 2018-09-20 17:48:53-04:00 bd26b06 refactor(linear_algebra/basic): move some lemmas to the right place ESTIMATED CHANGES Modified algebra/ring.lean + theorem zero_ne_one_or_forall_eq_0 Modified data/seq/computation.lean Modified data/set/basic.lean + theorem set.diff_self Modified linear_algebra/basic.lean - theorem set.diff_self - theorem zero_ne_one_or_forall_eq_0 2018-09-20 17:46:38-04:00 1758092 feat(data/subtype): subtype.coe_ext ESTIMATED CHANGES Modified data/subtype.lean + theorem subtype.coe_ext 2018-09-20 17:45:33-04:00 9815239 feat(logic/basic): more coe_trans instances ESTIMATED CHANGES Modified logic/basic.lean + theorem coe_fn_coe_base + theorem coe_fn_coe_trans + theorem coe_sort_coe_base + theorem coe_sort_coe_trans 2018-09-20 17:44:42-04:00 0d6bae7 refactor(order/filter): move directed to order.basic, swap definition directed means containing upper bounds, not lower bounds ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem directed.finset_le Modified order/basic.lean + def directed + theorem directed_comp + theorem directed_mono + def directed_on + theorem directed_on_iff_directed + theorem is_antisymm.swap + theorem is_asymm.swap +/- theorem is_irrefl.swap + theorem is_linear_order.swap + theorem is_partial_order.swap + theorem is_preorder.swap + theorem is_refl.swap + theorem is_total.swap + theorem is_total_preorder.swap + def order.preimage Modified order/filter.lean - def directed +/- theorem directed_of_chain - def directed_on +/- theorem directed_on_Union +/- theorem filter.infi_sets_eq' +/- theorem filter.infi_sets_eq +/- theorem filter.map_infi_eq Modified order/order_iso.lean - def order.preimage 2018-09-20 17:41:18-04:00 e054277 feat(order/bounded_lattice): eq_top_mono ESTIMATED CHANGES Modified order/bounded_lattice.lean + theorem lattice.eq_bot_mono + theorem lattice.eq_top_mono 2018-09-20 17:40:57-04:00 84024be feat(order/zorn): more zorn's lemma variants ESTIMATED CHANGES Modified order/zorn.lean + theorem zorn.chain.directed_on + theorem zorn.zorn_subset 2018-09-20 16:00:07+02:00 1da8cc5 feat(analysis/topology/uniform_structure): uniform_space.comap extra lemmas ESTIMATED CHANGES Modified analysis/topology/uniform_space.lean + theorem uniform_continuous_iff + theorem uniform_space.comap_comap_comp + theorem uniform_space_comap_id 2018-09-20 10:45:52+02:00 d0f1b21 feat(data/prod): add id_prod ESTIMATED CHANGES Modified data/prod.lean + theorem prod.id_prod 2018-09-19 11:24:25+02:00 318ec36 feat(group_theory/perm): sign_cycle and sign_bij (#347) ESTIMATED CHANGES Modified algebra/group_power.lean + theorem int.units_pow_eq_pow_mod_two + theorem int.units_pow_two Modified data/equiv/basic.lean +/- theorem equiv.swap_apply_left +/- theorem equiv.swap_apply_right +/- theorem equiv.swap_swap Modified group_theory/perm.lean + theorem equiv.perm.card_support_swap + theorem equiv.perm.eq_inv_iff_eq + theorem equiv.perm.eq_swap_of_is_cycle_of_apply_apply_eq_self + theorem equiv.perm.exists_int_pow_eq_of_is_cycle + theorem equiv.perm.inv_eq_iff_eq + def equiv.perm.is_cycle + theorem equiv.perm.is_cycle_inv + theorem equiv.perm.is_cycle_swap + theorem equiv.perm.is_cycle_swap_mul + theorem equiv.perm.is_cycle_swap_mul_aux₁ + theorem equiv.perm.is_cycle_swap_mul_aux₂ + theorem equiv.perm.is_swap_of_subtype + theorem equiv.perm.mem_iff_of_subtype_apply_mem + theorem equiv.perm.mem_support + theorem equiv.perm.mul_swap_eq_swap_mul + def equiv.perm.of_subtype + theorem equiv.perm.of_subtype_apply_of_not_mem + theorem equiv.perm.of_subtype_subtype_perm + theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self_int + theorem equiv.perm.pow_apply_eq_of_apply_apply_eq_self_nat + theorem equiv.perm.sign_aux3_symm_trans_trans + theorem equiv.perm.sign_bij + theorem equiv.perm.sign_cycle + theorem equiv.perm.sign_eq_sign_of_equiv + theorem equiv.perm.sign_inv + theorem equiv.perm.sign_mul + theorem equiv.perm.sign_of_subtype + theorem equiv.perm.sign_one + theorem equiv.perm.sign_prod_list_swap + theorem equiv.perm.sign_subtype_perm + theorem equiv.perm.sign_symm_trans_trans + def equiv.perm.subtype_perm + theorem equiv.perm.subtype_perm_of_subtype + def equiv.perm.support + theorem equiv.perm.support_swap + theorem equiv.perm.support_swap_mul_cycle + theorem equiv.perm.swap_mul_eq_mul_swap 2018-09-19 11:19:01+02:00 ad9309f feat(data/polynomial): C_inj and dvd_iff_is_root (#359) ESTIMATED CHANGES Modified data/polynomial.lean + theorem polynomial.C_inj + theorem polynomial.dvd_iff_is_root 2018-09-18 23:07:02-04:00 ae0da3d feat(algebra/group_power): zero_pow et al written by Chris Hughes ESTIMATED CHANGES Modified algebra/group_power.lean + theorem zero_pow Modified data/fintype.lean + theorem fintype.injective_iff_bijective + theorem fintype.surjective_iff_bijective 2018-09-18 18:27:23-04:00 61d0c65 refactor(ring_theory/matrix): use pi instances ESTIMATED CHANGES Modified algebra/pi_instances.lean Modified ring_theory/matrix.lean +/- theorem matrix.add_val +/- theorem matrix.neg_val +/- theorem matrix.zero_val 2018-09-18 17:03:51-04:00 5260ab8 feat(ring_theory/matrix): diagonal matrices Joint work with Johan Commelin ESTIMATED CHANGES Modified ring_theory/matrix.lean + def matrix.diagonal + theorem matrix.diagonal_add + theorem matrix.diagonal_mul + theorem matrix.diagonal_mul_diagonal' + theorem matrix.diagonal_mul_diagonal + theorem matrix.diagonal_neg + theorem matrix.diagonal_one + theorem matrix.diagonal_val_eq + theorem matrix.diagonal_val_ne' + theorem matrix.diagonal_val_ne + theorem matrix.diagonal_zero + theorem matrix.mul_diagonal + theorem matrix.mul_eq_mul +/- theorem matrix.mul_val' +/- theorem matrix.mul_val +/- theorem matrix.one_val_eq +/- theorem matrix.one_val_ne' +/- theorem matrix.one_val_ne 2018-09-18 13:08:42-04:00 a72807f feat(ring_theory/matrix): (finally!) adding matrices (#334) Joint work by: Ellen Arlt, Blair Shi, Sean Leather, Scott Morrison, Johan Commelin, Kenny Lau, Johannes Hölzl, Mario Carneiro ESTIMATED CHANGES Added ring_theory/matrix.lean + theorem matrix.add_mul + theorem matrix.add_val + theorem matrix.ext + theorem matrix.ext_iff + theorem matrix.mul_add + theorem matrix.mul_val' + theorem matrix.mul_val + theorem matrix.mul_zero + theorem matrix.neg_val + theorem matrix.one_val + theorem matrix.one_val_eq + theorem matrix.one_val_ne' + theorem matrix.one_val_ne + theorem matrix.zero_mul + theorem matrix.zero_val + def matrix 2018-09-18 15:20:04+02:00 7dedf3c feat(analysis/topology): injective_separated_pure_cauchy ESTIMATED CHANGES Modified analysis/topology/uniform_space.lean + theorem Cauchy.injective_separated_pure_cauchy Modified docs/extras/well_founded_recursion.md 2018-09-17 14:40:15-04:00 2e204f2 feat(category/functor): make `sum` `functor` instance more universe polymorphic ESTIMATED CHANGES Modified category/functor.lean 2018-09-17 14:39:36-04:00 9d28f8b feat(tactic/ext): remove lambda abstractions when inferring a type's name ESTIMATED CHANGES Modified tactic/ext.lean 2018-09-17 13:25:46+02:00 62c69b7 feat(tactic/linarith): option to prove arbitrary goals by exfalso, enabled by default ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/linarith.lean Modified tests/linarith.lean 2018-09-17 11:58:19+02:00 e9af59d feat(algebra/order_functions): add simp rules for min/max_eq_left/right (closes #306) ESTIMATED CHANGES Modified algebra/field_power.lean +/- def fpow +/- theorem fpow_add +/- theorem fpow_inv +/- theorem pow_le_max_of_min_le Modified algebra/order_functions.lean +/- theorem min_add +/- theorem min_sub Modified analysis/measure_theory/lebesgue_measure.lean Modified computability/partrec_code.lean Modified data/list/basic.lean 2018-09-17 09:15:23+02:00 cf260ca feat(category_theory/*): some lemmas about universes ESTIMATED CHANGES Modified category_theory/category.lean Modified category_theory/functor.lean + def category_theory.functor.ulift_down + def category_theory.functor.ulift_up Modified category_theory/natural_isomorphism.lean + def category_theory.functor.ulift_down_up + def category_theory.functor.ulift_up_down 2018-09-15 17:30:09+02:00 04c4abf fix(algebra/group): fix bit0_zero to use (0 : alpha) not (0 : nat) ESTIMATED CHANGES Modified algebra/group.lean +/- theorem bit0_zero +/- theorem bit1_zero 2018-09-15 17:29:12+02:00 39bab47 feat(linear_algebra): dimension theorem (#345) * dimension theorem * more theorems about dimension * cardinal stuff * fix error * move A/S x S = A to quotient_module.lean * remove pempty_equiv_empty ESTIMATED CHANGES Modified data/equiv/basic.lean + def equiv.arrow_punit_equiv_punit - def equiv.arrow_unit_equiv_unit + def equiv.bool_equiv_punit_sum_punit - def equiv.bool_equiv_unit_sum_unit + def equiv.empty_arrow_equiv_punit - def equiv.empty_arrow_equiv_unit + def equiv.empty_equiv_pempty + def equiv.equiv_sigma_subtype + def equiv.false_arrow_equiv_punit - def equiv.false_arrow_equiv_unit + def equiv.nat_equiv_nat_sum_punit - def equiv.nat_equiv_nat_sum_unit + def equiv.nat_sum_punit_equiv_nat - def equiv.nat_sum_unit_equiv_nat + def equiv.option_equiv_sum_punit - def equiv.option_equiv_sum_unit + def equiv.pempty_arrow_equiv_punit - def equiv.pempty_arrow_equiv_unit + def equiv.pempty_of_not_nonempty + def equiv.prod_punit + theorem equiv.prod_punit_apply - def equiv.prod_unit - theorem equiv.prod_unit_apply + def equiv.punit_arrow_equiv + def equiv.punit_prod + theorem equiv.punit_prod_apply + def equiv.true_equiv_punit - def equiv.unit_arrow_equiv - def equiv.unit_prod - theorem equiv.unit_prod_apply Modified data/equiv/encodable.lean Modified data/fintype.lean + theorem fintype.card_punit + theorem fintype.univ_punit Modified linear_algebra/basic.lean + theorem is_basis.linear_equiv Modified linear_algebra/dimension.lean + theorem vector_space.basis_le_span + theorem vector_space.dim_eq_of_linear_equiv + theorem vector_space.dim_im_add_dim_ker + theorem vector_space.dim_prod + theorem vector_space.dim_quotient + theorem vector_space.mk_basis + theorem vector_space.mk_eq_mk_of_basis Modified linear_algebra/quotient_module.lean + theorem quotient_module.quotient_prod_linear_equiv Modified set_theory/cardinal.lean + theorem cardinal.finset_card + theorem cardinal.mk_Prop + theorem cardinal.mk_Union_le_sum_mk + theorem cardinal.mk_bool + theorem cardinal.mk_empty' + theorem cardinal.mk_empty + theorem cardinal.mk_eq_of_injective + theorem cardinal.mk_list_eq_sum_pow + theorem cardinal.mk_option + theorem cardinal.mk_pempty + theorem cardinal.mk_plift_false + theorem cardinal.mk_plift_true + theorem cardinal.mk_punit + theorem cardinal.mk_singleton + theorem cardinal.mk_union_add_mk_inter + theorem cardinal.mk_union_of_disjiont + theorem cardinal.mk_unit Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean + theorem cardinal.mk_list_eq_mk + theorem cardinal.pow_le 2018-09-14 14:57:58+02:00 52bc8b6 fix(analysis/normed_space): Add instance showing that normed field is a normed space over itself ESTIMATED CHANGES Modified analysis/normed_space.lean 2018-09-14 14:51:33+02:00 9daf78b feat(tactic/linarith): basic support for nat (#343) * feat(tactic/linarith): basic support for nats * fix(tactic/linarith): typo ESTIMATED CHANGES Modified tactic/linarith.lean + theorem linarith.int.coe_nat_bit0 + theorem linarith.int.coe_nat_bit1 + theorem linarith.nat_eq_subst + theorem linarith.nat_le_subst + theorem linarith.nat_lt_subst Modified tests/linarith.lean 2018-09-14 14:47:42+02:00 21233b7 fix(category_theory/*): several minor fixes, preparatory to presheaves (#342) * fix(category_theory/*): several minor fixes, preparatory to PR’ing the category of presheaves In category.lean, better proofs in `instance [preorder α] : small_category α := …`. In natural_isomorphism.lean, some rfl lemmas, natural isomorphisms describing functor composition, and formatting In examples/topological_spaces.lean, deciding to reverse the arrows in `open_set X` (the category of open sets, with restrictions), to reduce using opposites later, as well as describing the functoriality of `open_set`. * additional simp lemmas ESTIMATED CHANGES Modified category_theory/category.lean + theorem category_theory.concrete_category_comp + theorem category_theory.concrete_category_id Modified category_theory/examples/topological_spaces.lean + def category_theory.examples.open_set.map + def category_theory.examples.open_set.map_id + theorem category_theory.examples.open_set.map_id_obj + def category_theory.examples.open_set.map_iso + def category_theory.examples.open_set.map_iso_id +/- def category_theory.examples.open_set.nbhd +/- def category_theory.examples.open_set.nbhds +/- structure category_theory.examples.open_set Modified category_theory/natural_isomorphism.lean + def category_theory.functor.assoc + def category_theory.functor.comp_id + def category_theory.functor.id_comp + theorem category_theory.nat_iso.mk_app' + theorem category_theory.nat_iso.mk_app +/- theorem category_theory.nat_iso.naturality_1 +/- theorem category_theory.nat_iso.naturality_2 + def category_theory.nat_iso.of_components.app + def category_theory.nat_iso.of_components.hom_app + def category_theory.nat_iso.of_components.inv_app +/- def category_theory.nat_iso.of_components 2018-09-13 13:42:52-04:00 a770ee5 fix(data/padics/padic_rationals): fix proof ESTIMATED CHANGES Modified data/padics/padic_rationals.lean +/- theorem padic.cast_eq_of_rat +/- theorem padic.complete +/- theorem padic.exi_rat_seq_conv +/- def padic.mk +/- theorem padic.rat_dense +/- theorem padic_norm_e.nonarchimedean +/- theorem padic_norm_e.sub_rev +/- theorem padic_norm_e.zero_def +/- def padic_norm_e +/- theorem padic_seq.norm_equiv +/- theorem padic_seq.norm_nonzero_of_not_equiv_zero +/- theorem padic_seq.stationary 2018-09-13 12:28:42-04:00 46502df feat(algebra/ordered_ring): mul_self_pos ESTIMATED CHANGES Modified algebra/ordered_ring.lean +/- theorem mul_le_one + theorem mul_self_pos 2018-09-13 12:07:41-04:00 bebe170 feat(data/int/order): delete int.order and prove all commented out lemmas (#348) ESTIMATED CHANGES Modified algebra/archimedean.lean Modified data/int/basic.lean + theorem int.coe_nat_succ_pos + theorem int.units_inv_eq_self Deleted data/int/order.lean - theorem int.le_of_of_nat_le_of_nat - theorem int.of_nat_le_of_nat_of_le 2018-09-11 13:05:07+02:00 1206356 fix(doc/tactics): fix typo in documentation of `ext` ESTIMATED CHANGES Modified docs/tactics.md 2018-09-11 10:40:33+02:00 36a82cb feat(tactic/ext): use `rcases` patterns to intro `ext` variables ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/ext.lean Modified tactic/interactive.lean Modified tactic/pi_instances.lean Modified tactic/rcases.lean Modified tests/tactics.lean 2018-09-11 10:07:59+02:00 ffc6bc0 feat(tactic/ext): add support for propext ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/ext.lean 2018-09-11 10:07:59+02:00 c25ca3b feat(tactic/ext): address reviewers' comments ESTIMATED CHANGES Modified core/data/list.lean Modified docs/tactics.md Modified tactic/ext.lean 2018-09-11 10:07:59+02:00 4e3b89c feat(tactic/ext): make the attribute incremental ESTIMATED CHANGES Modified category_theory/isomorphism.lean Added core/data/list.lean + def list.partition_map Added core/default.lean Modified data/list/basic.lean +/- theorem list.erase_diff_erase_sublist_of_sublist +/- theorem list.index_of_eq_length Modified data/sum.lean + def sum.map Modified docs/tactics.md Modified tactic/ext.lean + def ext_param_type Modified tactic/pi_instances.lean 2018-09-11 10:07:59+02:00 6557f51 feat(tactic/ext): add indexing of extensionality lemmas ESTIMATED CHANGES Modified category_theory/isomorphism.lean +/- def category_theory.inv +/- def category_theory.is_iso.hom_inv_id +/- def category_theory.is_iso.inv_hom_id +/- theorem category_theory.iso.hom_inv_id +/- theorem category_theory.iso.inv_hom_id +/- def category_theory.iso.refl +/- def category_theory.iso.symm +/- def category_theory.iso.trans Modified tactic/basic.lean Modified tactic/ext.lean 2018-09-11 10:07:59+02:00 4efdbdb feat(tactic/ext): match extensionality lemma more exactly ESTIMATED CHANGES Modified tactic/basic.lean Modified tests/tactics.lean 2018-09-11 10:07:19+02:00 ba7bd74 feat(category_theory): Yoneda, basic facts about natural isomorphisms, and an extensionality lemma using Yoneda lemma (#326) * feat(category_theory/yoneda_lemma) * feat(category_theory/natural_isomorphisms): basic facts about natural isomorphisms, and an extensionality lemma using Yoneda ESTIMATED CHANGES Added category_theory/natural_isomorphism.lean + def category_theory.nat_iso.app + theorem category_theory.nat_iso.comp_app + theorem category_theory.nat_iso.hom_eq_coe + theorem category_theory.nat_iso.inv_eq_symm_coe + theorem category_theory.nat_iso.naturality_1 + theorem category_theory.nat_iso.naturality_2 + def category_theory.nat_iso.of_components Modified category_theory/types.lean + theorem category_theory.types.iso_mk_coe Added category_theory/yoneda.lean + def category_theory.yoneda.ext + theorem category_theory.yoneda.map_app + theorem category_theory.yoneda.naturality + theorem category_theory.yoneda.obj_map + theorem category_theory.yoneda.obj_map_id + theorem category_theory.yoneda.obj_obj + def category_theory.yoneda + def category_theory.yoneda_evaluation + theorem category_theory.yoneda_evaluation_map_down + def category_theory.yoneda_lemma + def category_theory.yoneda_pairing + theorem category_theory.yoneda_pairing_map 2018-09-10 20:50:08-04:00 40a365a feat(tactic/replacer): add support for parameters in replacer ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/replacer.lean Modified tests/replacer.lean 2018-09-10 22:46:23+02:00 a7995c9 fix(set_theory/cofinality): fix type of omega_is_regular ESTIMATED CHANGES Modified set_theory/cofinality.lean +/- theorem cardinal.omega_is_regular 2018-09-10 22:44:42+02:00 0e06944 feat(data/equiv/basic): quot_equiv_of_quot(') quot_equiv_of_quot matches matches the existing subtype_equiv_of_subtype, but quot_equiv_of_quot' is useful in practice and this definition is careful to use eq.rec only in proofs. ESTIMATED CHANGES Modified data/equiv/basic.lean + def equiv.quot_equiv_of_quot' + def equiv.quot_equiv_of_quot 2018-09-10 22:40:31+02:00 61f4827 fix(logic/basic): remove unnecessary hypothesis from proof_irrel_heq ESTIMATED CHANGES Modified logic/basic.lean +/- theorem proof_irrel_heq 2018-09-10 13:57:55-04:00 b33764d feat(algebra/module): semimodules ESTIMATED CHANGES Modified algebra/module.lean + theorem add_smul' + theorem mul_smul' +/- theorem mul_smul + theorem one_smul' + theorem smul_add' + theorem smul_eq_mul' + theorem smul_smul' + theorem smul_zero' + theorem zero_smul' Modified analysis/measure_theory/outer_measure.lean - theorem measure_theory.outer_measure.add_smul - theorem measure_theory.outer_measure.mul_smul - theorem measure_theory.outer_measure.one_smul - def measure_theory.outer_measure.smul - theorem measure_theory.outer_measure.smul_add - theorem measure_theory.outer_measure.smul_zero - theorem measure_theory.outer_measure.zero_smul Modified tactic/abel.lean 2018-09-10 03:23:58-04:00 56c4919 feat(tactic/abel): decision procedure for comm groups ESTIMATED CHANGES Modified algebra/group_power.lean + theorem gsmul_add + theorem gsmul_zero + theorem mul_gpow +/- theorem one_gpow Added tactic/abel.lean + theorem tactic.abel.const_add_term + theorem tactic.abel.const_add_termg + inductive tactic.abel.normalize_mode + def tactic.abel.smul + def tactic.abel.smulg + theorem tactic.abel.subst_into_smul + theorem tactic.abel.subst_into_smulg + def tactic.abel.term + theorem tactic.abel.term_add_const + theorem tactic.abel.term_add_constg + theorem tactic.abel.term_add_term + theorem tactic.abel.term_add_termg + theorem tactic.abel.term_atom + theorem tactic.abel.term_atomg + theorem tactic.abel.term_neg + theorem tactic.abel.term_smul + theorem tactic.abel.term_smulg + def tactic.abel.termg + theorem tactic.abel.unfold_gsmul + theorem tactic.abel.unfold_smul + theorem tactic.abel.unfold_smulg + theorem tactic.abel.unfold_sub + theorem tactic.abel.zero_smul + theorem tactic.abel.zero_smulg + theorem tactic.abel.zero_term + theorem tactic.abel.zero_termg Modified tactic/norm_num.lean + theorem norm_num.subst_into_neg Modified tactic/ring.lean - def horner +/- theorem tactic.ring.add_neg_eq_sub + def tactic.ring.horner - theorem tactic.ring.subst_into_neg Modified tactic/ring2.lean 2018-09-09 23:23:59-04:00 f10e7ad refactor(tactic/ring): remove unnecessary rat from horner_expr ESTIMATED CHANGES Modified tactic/ring.lean 2018-09-09 23:23:53-04:00 eab064e refactor(tactic/ring): use horner_expr instead of destruct on expr ESTIMATED CHANGES Modified tactic/ring.lean 2018-09-09 23:23:45-04:00 484afdf test(tests/ring): add test file for ring ESTIMATED CHANGES Renamed tests/linarith_tests.lean to tests/linarith.lean Added tests/ring.lean 2018-09-09 20:45:05-04:00 181905e refactor(tactic/linarith): refactoring ESTIMATED CHANGES Modified data/prod.lean Modified meta/rb_map.lean Modified tactic/linarith.lean +/- theorem linarith.add_subst - def linarith.alist_lt +/- def linarith.ineq.is_lt +/- def linarith.ineq.to_string +/- theorem linarith.mul_subst - def linarith.reduce_pair_option +/- theorem linarith.sub_subst 2018-09-09 18:34:27+02:00 4be1ef1 fix ESTIMATED CHANGES Modified ring_theory/ideals.lean 2018-09-09 18:34:27+02:00 5b7edec feat(category_theory): redesign of concrete categories Also exercising it further with `def forget_to_Mon : CommRing ⥤ Mon := …` ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/ring.lean Modified category_theory/category.lean + structure category_theory.bundled +/- structure category_theory.concrete_category + def category_theory.mk_ob Modified category_theory/embedding.lean + theorem category_theory.functor.image_preimage + def category_theory.functor.injectivity + def category_theory.functor.preimage - theorem category_theory.image_preimage - def category_theory.preimage +/- theorem category_theory.preimage_iso_coe +/- theorem category_theory.preimage_iso_symm_coe Modified category_theory/examples/measurable_space.lean +/- def category_theory.examples.Meas Added category_theory/examples/monoids.lean + def category_theory.examples.CommMon.forget_to_Mon + def category_theory.examples.CommMon + def category_theory.examples.Mon + def category_theory.examples.is_comm_monoid_hom Modified category_theory/examples/rings.lean + def category_theory.examples.CommRing.forget_to_CommMon + def category_theory.examples.CommRing + def category_theory.examples.Ring - theorem category_theory.examples.comm_ring_hom.map_add - theorem category_theory.examples.comm_ring_hom.map_mul - theorem category_theory.examples.comm_ring_hom.map_one - def category_theory.examples.{u} Modified category_theory/examples/topological_spaces.lean +/- def category_theory.examples.Top Modified category_theory/functor.lean + def category_theory.bundled.map Modified category_theory/types.lean +/- def category_theory.forget 2018-09-09 18:32:02+02:00 aaa113a fix(tactic/linarith): improve earlier fix ESTIMATED CHANGES Modified tactic/linarith.lean Modified tests/linarith_tests.lean 2018-09-09 18:32:02+02:00 fa747b0 fix(tactic/linarith): proper handling of 0 coefficients in input ESTIMATED CHANGES Modified tactic/linarith.lean 2018-09-09 18:32:02+02:00 675c235 fix(tactic/linarith): make more use of equality hypotheses ESTIMATED CHANGES Modified tactic/linarith.lean Modified tests/linarith_tests.lean 2018-09-09 15:01:18+02:00 53cc7ce refactor(data/polynomial): generalize leading_coeff_X_pow (#329) Generalize `leading_coeff_X_pow` to `comm_semiring` ESTIMATED CHANGES Modified data/polynomial.lean 2018-09-08 19:25:06-04:00 fc1fd3d feat(set_theory/cofinality): sum_lt_of_is_regular ESTIMATED CHANGES Modified set_theory/cardinal.lean +/- theorem cardinal.sup_le Modified set_theory/cofinality.lean + theorem cardinal.sum_lt_of_is_regular + theorem cardinal.sup_lt_of_is_regular Modified set_theory/ordinal.lean + theorem cardinal.add_lt_of_lt + theorem cardinal.mul_lt_of_lt + theorem ordinal.sup_ord 2018-09-08 20:54:21+02:00 73abe2e fix(category_theory/products): fix types of inl/inr/fst/snd (#320) ESTIMATED CHANGES Modified category_theory/products.lean +/- def category_theory.prod.fst +/- def category_theory.prod.inl +/- def category_theory.prod.inr +/- def category_theory.prod.snd 2018-09-08 20:17:26+02:00 5613d2e feat(tactic): add support for quotients to rcases ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean +/- theorem continuous_multiset_sum +/- theorem tendsto_multiset_sum Modified data/equiv/encodable.lean Modified data/multiset.lean +/- theorem multiset.cons_inj_right Modified data/quot.lean +/- theorem quotient.exact' Modified docs/tactics.md Modified group_theory/free_group.lean +/- def free_group.to_word.inj +/- def free_group.to_word.mk Modified ring_theory/associated.lean +/- theorem associates.mul_zero +/- theorem associates.zero_mul Modified ring_theory/unique_factorization_domain.lean Modified set_theory/cardinal.lean +/- theorem cardinal.add_le_add +/- theorem cardinal.cantor +/- theorem cardinal.mul_le_mul +/- theorem cardinal.power_le_power_left +/- theorem cardinal.zero_le Modified tactic/interactive.lean Modified tactic/rcases.lean 2018-09-08 11:44:06+02:00 1b9b139 refactor(linear_algebra/prod_module): move prod.ring (#322) ESTIMATED CHANGES Modified analysis/normed_space.lean Modified linear_algebra/prod_module.lean 2018-09-07 17:43:56+02:00 5aa65d6 order(filter): rename `vmap` to `comap` ESTIMATED CHANGES Modified analysis/metric_space.lean + theorem nhds_comap_dist - theorem nhds_vmap_dist Modified analysis/nnreal.lean Modified analysis/real.lean Modified analysis/topology/continuity.lean + theorem dense_embedding.comap_nhds_neq_bot + theorem dense_embedding.tendsto_comap_nhds_nhds - theorem dense_embedding.tendsto_vmap_nhds_nhds - theorem dense_embedding.vmap_nhds_neq_bot + theorem nhds_induced_eq_comap - theorem nhds_induced_eq_vmap + theorem nhds_subtype_eq_comap - theorem nhds_subtype_eq_vmap Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean +/- theorem filter.map_neg Modified analysis/topology/uniform_space.lean + theorem cauchy_comap - theorem cauchy_vmap + theorem comap_quotient_eq_uniformity + theorem comap_quotient_le_uniformity +/- theorem eq_of_separated_of_uniform_continuous + theorem nhds_eq_comap_uniformity - theorem nhds_eq_vmap_uniformity +/- theorem separated_of_uniform_continuous + theorem to_topological_space_comap - theorem to_topological_space_vmap +/- theorem uniform_continuous.prod_mk + theorem uniform_continuous_comap' + theorem uniform_continuous_comap - theorem uniform_continuous_vmap' - theorem uniform_continuous_vmap + def uniform_space.comap - def uniform_space.vmap - theorem vmap_quotient_eq_uniformity - theorem vmap_quotient_le_uniformity Modified data/analysis/filter.lean Modified order/filter.lean + def filter.comap + theorem filter.comap_bot + theorem filter.comap_comap_comp + theorem filter.comap_eq_lift' + theorem filter.comap_eq_of_inverse + theorem filter.comap_id + theorem filter.comap_inf + theorem filter.comap_infi + theorem filter.comap_lift'_eq2 + theorem filter.comap_lift'_eq + theorem filter.comap_lift_eq2 + theorem filter.comap_lift_eq + theorem filter.comap_map + theorem filter.comap_mono + theorem filter.comap_neq_bot + theorem filter.comap_neq_bot_of_surj + theorem filter.comap_principal + theorem filter.comap_sup + theorem filter.comap_top + theorem filter.gc_map_comap - theorem filter.gc_map_vmap + theorem filter.le_comap_map + theorem filter.le_map_comap' + theorem filter.le_map_comap - theorem filter.le_map_vmap' - theorem filter.le_map_vmap - theorem filter.le_vmap_map +/- theorem filter.map_bot + theorem filter.map_comap_le + theorem filter.map_eq_comap_of_inverse - theorem filter.map_eq_vmap_of_inverse + theorem filter.map_le_iff_le_comap - theorem filter.map_le_iff_le_vmap +/- theorem filter.map_mono +/- theorem filter.map_sup + theorem filter.map_swap_eq_comap_swap - theorem filter.map_swap_eq_vmap_swap - theorem filter.map_vmap_le + theorem filter.mem_comap_sets - theorem filter.mem_vmap_sets + theorem filter.monotone_comap - theorem filter.monotone_vmap + theorem filter.preimage_mem_comap - theorem filter.preimage_mem_vmap + theorem filter.prod_comap_comap_eq +/- theorem filter.prod_comm' - theorem filter.prod_vmap_vmap_eq + theorem filter.sInter_comap_sets - theorem filter.sInter_vmap_sets + theorem filter.tendsto_comap'' + theorem filter.tendsto_comap + theorem filter.tendsto_comap_iff + theorem filter.tendsto_iff_comap - theorem filter.tendsto_iff_vmap - theorem filter.tendsto_vmap'' - theorem filter.tendsto_vmap - theorem filter.tendsto_vmap_iff - def filter.vmap - theorem filter.vmap_bot - theorem filter.vmap_eq_lift' - theorem filter.vmap_eq_of_inverse - theorem filter.vmap_id - theorem filter.vmap_inf - theorem filter.vmap_infi - theorem filter.vmap_lift'_eq2 - theorem filter.vmap_lift'_eq - theorem filter.vmap_lift_eq2 - theorem filter.vmap_lift_eq - theorem filter.vmap_map - theorem filter.vmap_mono - theorem filter.vmap_neq_bot - theorem filter.vmap_neq_bot_of_surj - theorem filter.vmap_principal - theorem filter.vmap_sup - theorem filter.vmap_top - theorem filter.vmap_vmap_comp 2018-09-07 17:32:23+02:00 2524dba fix(algebra/big_operators): change name of `sum_attach` to `finset.sum_attach` ESTIMATED CHANGES Modified algebra/big_operators.lean 2018-09-07 17:30:25+02:00 8f89324 style(linear_algebra/submodule): changed import order; added product construction ESTIMATED CHANGES Modified linear_algebra/submodule.lean + theorem submodule.coe_prod + def submodule.prod 2018-09-07 17:30:25+02:00 085c012 refactor(linear_algebra, ring_theory): rework submodules; move them to linear_algebra ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.image_eq_image + theorem set.image_subset_image_iff + theorem set.injective_image + theorem set.preimage_eq_preimage - theorem set.set_coe.exists - theorem set.set_coe.forall - theorem set.set_coe_cast +/- theorem set.set_coe_eq_subtype + theorem set.surjective_preimage + theorem set_coe.exists + theorem set_coe.ext + theorem set_coe.ext_iff + theorem set_coe.forall + theorem set_coe_cast + theorem subtype.mem Modified linear_algebra/linear_map_module.lean - theorem classical.some_spec2 Modified linear_algebra/quotient_module.lean + theorem quotient_module.coe_eq_zero Added linear_algebra/submodule.lean + theorem submodule.Union_set_of_directed + theorem submodule.bot_set + theorem submodule.coe_comap + theorem submodule.coe_map + def submodule.comap + theorem submodule.comap_comp + theorem submodule.comap_id + theorem submodule.comap_map_eq + def submodule.comap_quotient.order_iso + def submodule.comap_quotient + theorem submodule.ext + theorem submodule.injective_comap + theorem submodule.injective_map + def submodule.lt_order_embedding + def submodule.map + theorem submodule.map_comp + theorem submodule.map_id + def submodule.map_subtype.le_order_embedding + def submodule.map_subtype.order_iso + def submodule.map_subtype + theorem submodule.map_subtype_embedding_eq + theorem submodule.map_subtype_subset + theorem submodule.mem_coe + theorem submodule.sInter_set + def submodule.span + theorem submodule.span_empty + theorem submodule.span_subset_iff + theorem submodule.span_union + def submodule.submodule_lt_equiv + theorem submodule.subset_comap_quotient + theorem submodule.top_set + structure {u Modified linear_algebra/subtype_module.lean - theorem add_val - theorem is_linear_map_subtype_mk - theorem is_linear_map_subtype_val + theorem is_submodule.coe_add + theorem is_submodule.coe_neg + theorem is_submodule.coe_smul + theorem is_submodule.coe_zero + theorem is_submodule.is_linear_map_coe - theorem is_submodule.is_linear_map_inclusion + theorem is_submodule.is_linear_map_subtype_mk + theorem is_submodule.is_linear_map_subtype_val + theorem is_submodule.sub_val - theorem neg_val - theorem smul_val - theorem sub_val - theorem zero_val Modified logic/basic.lean + theorem classical.some_spec2 Modified order/basic.lean + def linear_order.lift + def partial_order.lift + def preorder.lift Deleted ring_theory/correspondence_theorem.lean Modified ring_theory/noetherian.lean - def submodule.univ Deleted ring_theory/submodule.lean - theorem submodule.Union_set_of_directed - theorem submodule.bot_set - theorem submodule.embedding_eq - theorem submodule.eq - theorem submodule.ext - theorem submodule.mem_coe - def submodule.pullback_injective_of_surjective - def submodule.pushforward_injective_of_injective - theorem submodule.sInter_set - def submodule.span - theorem submodule.span_empty - theorem submodule.span_subset_iff - theorem submodule.span_union - theorem submodule.top_set - structure {u Modified set_theory/ordinal.lean 2018-09-07 17:30:25+02:00 4421f46 feat(ring_theory): submodules and quotients of Noetherian modules are Noetherian ESTIMATED CHANGES Modified algebra/order.lean + theorem le_iff_le_of_strict_mono Modified data/set/basic.lean + theorem set.singleton_union +/- theorem set.union_singleton Modified data/set/finite.lean + theorem set.finite.exists_finset_coe Modified linear_algebra/basic.lean Modified linear_algebra/quotient_module.lean + theorem quotient_module.quotient.exists_rep Modified linear_algebra/subtype_module.lean + theorem is_submodule.is_linear_map_inclusion Modified order/conditionally_complete_lattice.lean Modified order/order_iso.lean Added ring_theory/correspondence_theorem.lean Added ring_theory/noetherian.lean + def is_fg + def is_noetherian + theorem is_noetherian_iff_well_founded + theorem is_noetherian_of_quotient_of_noetherian + theorem is_noetherian_of_submodule_of_noetherian + def is_noetherian_ring + def submodule.fg + theorem submodule.fg_def + def submodule.univ Added ring_theory/submodule.lean + theorem submodule.Union_set_of_directed + theorem submodule.bot_set + theorem submodule.embedding_eq + theorem submodule.eq + theorem submodule.ext + theorem submodule.mem_coe + def submodule.pullback_injective_of_surjective + def submodule.pushforward_injective_of_injective + theorem submodule.sInter_set + def submodule.span + theorem submodule.span_empty + theorem submodule.span_subset_iff + theorem submodule.span_union + theorem submodule.top_set + structure {u 2018-09-07 17:27:38+02:00 dce0e64 fix(algebra/big_operators): change name of `sum_eq_single` to `finset.sum_eq_single` (#321) ESTIMATED CHANGES Modified algebra/big_operators.lean Modified data/polynomial.lean 2018-09-07 11:42:25+02:00 4085ca1 feat(category_theory): add measurable space example ESTIMATED CHANGES Added category_theory/examples/measurable_space.lean + def category_theory.examples.Borel + def category_theory.examples.Meas 2018-09-07 11:42:25+02:00 c2a4cf9 feat(category_theory): lift morphism map proof to concrete categories ESTIMATED CHANGES Modified category_theory/examples/topological_spaces.lean + def category_theory.examples.Top + def category_theory.examples.open_set.nbhd + def category_theory.examples.open_set.nbhds + structure category_theory.examples.open_set - def category_theory.examples.topological_spaces.Top - def category_theory.examples.topological_spaces.nbhd - def category_theory.examples.topological_spaces.nbhds - structure category_theory.examples.topological_spaces.open_set Modified category_theory/functor.lean + def category_theory.concrete_functor 2018-09-07 11:42:25+02:00 93e9043 style(category_theory): concrete categories as type class ESTIMATED CHANGES Modified category_theory/category.lean + structure category_theory.concrete_category - def category_theory.concrete_category Modified category_theory/examples/rings.lean - def category_theory.examples.CommRing - def category_theory.examples.comm_ring_hom.comp - theorem category_theory.examples.comm_ring_hom.comp_map - theorem category_theory.examples.comm_ring_hom.ext - def category_theory.examples.comm_ring_hom.id - theorem category_theory.examples.comm_ring_hom.id_map +/- theorem category_theory.examples.comm_ring_hom.map_add +/- theorem category_theory.examples.comm_ring_hom.map_mul +/- theorem category_theory.examples.comm_ring_hom.map_one - structure category_theory.examples.comm_ring_hom + def category_theory.examples.is_comm_ring_hom + def category_theory.examples.{u} Modified category_theory/examples/topological_spaces.lean +/- def category_theory.examples.topological_spaces.Top - theorem category_theory.examples.topological_spaces.continuous_map.ext - structure category_theory.examples.topological_spaces.continuous_map +/- structure category_theory.examples.topological_spaces.open_set Modified category_theory/functor.lean +/- theorem category_theory.functor.comp_map +/- theorem category_theory.functor.map_comp +/- theorem category_theory.functor.map_id +/- theorem category_theory.functor.mk_map +/- theorem category_theory.functor.mk_obj Modified category_theory/types.lean + def category_theory.forget +/- theorem category_theory.functor_to_types.map_id +/- theorem category_theory.functor_to_types.naturality +/- theorem category_theory.types_hom + def category_theory.ulift_functor 2018-09-07 11:42:25+02:00 5c48489 feat(category_theory): construction for a concrete category ESTIMATED CHANGES Modified category_theory/category.lean +/- theorem category_theory.cancel_epi +/- theorem category_theory.cancel_mono + def category_theory.concrete_category 2018-09-07 11:42:25+02:00 840a733 removing unnecessary class ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean 2018-09-07 11:42:25+02:00 d91428c feat(category_theory): the category of topological spaces, and of neighbourhoods of a point. also the category of commutative rings ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean Added category_theory/examples/rings.lean + def category_theory.examples.CommRing + def category_theory.examples.comm_ring_hom.comp + theorem category_theory.examples.comm_ring_hom.comp_map + theorem category_theory.examples.comm_ring_hom.ext + def category_theory.examples.comm_ring_hom.id + theorem category_theory.examples.comm_ring_hom.id_map + theorem category_theory.examples.comm_ring_hom.map_add + theorem category_theory.examples.comm_ring_hom.map_mul + theorem category_theory.examples.comm_ring_hom.map_one + structure category_theory.examples.comm_ring_hom Added category_theory/examples/topological_spaces.lean + def category_theory.examples.topological_spaces.Top + theorem category_theory.examples.topological_spaces.continuous_map.ext + structure category_theory.examples.topological_spaces.continuous_map + def category_theory.examples.topological_spaces.nbhd + def category_theory.examples.topological_spaces.nbhds + structure category_theory.examples.topological_spaces.open_set 2018-09-07 09:20:27+02:00 e95111d fix(tactic/tidy): fix interactive tidy ignoring cfg ESTIMATED CHANGES Modified tactic/tidy.lean 2018-09-06 15:59:41-04:00 77e104c fix(tests/tactics): remove test I don't think this test demonstrates reasonable/expected behavior of `wlog`, and it is not maintained by the modification, so I've removed it. ESTIMATED CHANGES Modified tests/tactics.lean 2018-09-06 15:39:55-04:00 ea61c21 fix(tactic/wlog): fix segfault ESTIMATED CHANGES Modified tactic/wlog.lean 2018-09-06 20:28:13+02:00 3842244 fix(linear_algebra/subtype): simplify lifted operations by using projections instead of match ESTIMATED CHANGES Modified linear_algebra/subtype_module.lean +/- theorem add_val +/- theorem neg_val +/- theorem smul_val 2018-09-06 01:04:28+02:00 f262a07 fix(linear_algebra/quotient_module): ring parameter for base ring of quotient module needs to be implicit, otherwise type class search loops ESTIMATED CHANGES Modified linear_algebra/quotient_module.lean 2018-09-05 23:46:03+02:00 e24f54e fix(linear_algebra/prod): field is implicit parameter of the module / vector space product instances ESTIMATED CHANGES Modified linear_algebra/prod_module.lean 2018-09-05 21:44:40+02:00 016f538 fix(algebra/module): add out_param to base field of vector spaces ESTIMATED CHANGES Modified algebra/module.lean 2018-09-05 14:33:30+02:00 3a3249e feat(data/finsupp): multiset_map_sum/_sum_sum/_index ESTIMATED CHANGES Modified data/finsupp.lean +/- theorem finsupp.map_domain_finset_sum + theorem finsupp.multiset_map_sum + theorem finsupp.multiset_sum_sum + theorem finsupp.multiset_sum_sum_index +/- theorem finsupp.prod_finset_sum_index +/- theorem finsupp.prod_single 2018-09-05 14:19:36+02:00 92b9a00 feat(data/finsupp): to_/of_multiset, curry/uncurry ESTIMATED CHANGES Modified data/finset.lean + theorem finset.mem_subtype Modified data/finsupp.lean - theorem finset.mem_subtype + theorem finsupp.count_to_multiset + def finsupp.equiv_multiset + def finsupp.finsupp_prod_equiv +/- theorem finsupp.map_domain_finset_sum + theorem finsupp.mem_support_finset_sum + theorem finsupp.mem_support_multiset_sum + theorem finsupp.mem_support_single + def finsupp.of_multiset + theorem finsupp.of_multiset_apply +/- theorem finsupp.prod_add_index +/- theorem finsupp.prod_finset_sum_index +/- theorem finsupp.prod_map_domain_index +/- theorem finsupp.prod_sum_index + theorem finsupp.single_finset_sum + theorem finsupp.single_multiset_sum + theorem finsupp.single_sum +/- theorem finsupp.sum_add + theorem finsupp.sum_curry_index +/- theorem finsupp.sum_neg +/- theorem finsupp.sum_sub_index +/- theorem finsupp.sum_zero + def finsupp.to_multiset +/- structure finsupp 2018-09-05 14:05:50+02:00 e105c9e feat(data/multiset): add prod_map_add ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.prod_map_add 2018-09-05 14:04:54+02:00 abd6ab5 refactor(data/prod): add map_fst, map_snd ESTIMATED CHANGES Modified data/prod.lean + theorem prod.map_fst + theorem prod.map_snd 2018-09-05 13:15:42+02:00 ac4f7b1 Revert "doc(docs/elan.md): Clarify instructions for leanpkg build" This reverts commit 89e8cfee313b8bffe70362949577bd575cd09ea5. ESTIMATED CHANGES Modified docs/elan.md 2018-09-05 11:54:07+02:00 9ea38e1 feat(data/finset): option.to_finset ESTIMATED CHANGES Modified data/finset.lean + theorem option.mem_to_finset + def option.to_finset + theorem option.to_finset_none + theorem option.to_finset_some 2018-09-05 11:53:36+02:00 2997ce6 feat(logic/embedding): embedding into option ESTIMATED CHANGES Modified data/option.lean + theorem option.injective_some Modified logic/embedding.lean 2018-09-05 11:52:47+02:00 a2acc61 doc(docs/howto-contribute.md): fix broken links ESTIMATED CHANGES Modified docs/howto-contribute.md 2018-09-05 11:51:46+02:00 89e8cfe doc(docs/elan.md): Clarify instructions for leanpkg build ESTIMATED CHANGES Modified docs/elan.md 2018-09-05 11:51:18+02:00 97cd01b refactor(linear_algebra/quotient_module): avoid using type class inference for setoids (#310) Continuation of #212 . Avoid using type class inference for quotient modules, and introduce a version of `quotient.mk` specifically for quotient modules, whose output type is `quotient β s` rather than `quotient (quotient_rel s)`, which should help type class inference. ESTIMATED CHANGES Modified linear_algebra/linear_map_module.lean Modified linear_algebra/quotient_module.lean - theorem is_submodule.is_linear_map_quotient_lift - theorem is_submodule.is_linear_map_quotient_mk - theorem is_submodule.quotient.injective_lift - def is_submodule.quotient.lift - theorem is_submodule.quotient.lift_mk - def is_submodule.quotient - theorem is_submodule.quotient_rel_eq + theorem quotient_module.coe_add + theorem quotient_module.coe_smul + theorem quotient_module.coe_zero + theorem quotient_module.is_linear_map_quotient_lift + theorem quotient_module.is_linear_map_quotient_mk + def quotient_module.mk + theorem quotient_module.quotient.injective_lift + def quotient_module.quotient.lift + theorem quotient_module.quotient.lift_mk + def quotient_module.quotient Modified ring_theory/ideals.lean 2018-09-05 11:49:04+02:00 681c98f feat(category_theory): full subcategories, preorders, Aut, and End ESTIMATED CHANGES Modified category_theory/category.lean + def category_theory.End Added category_theory/full_subcategory.lean + def category_theory.full_subcategory_embedding Modified category_theory/isomorphism.lean + def category_theory.Aut 2018-09-05 09:08:50+02:00 600d3cf cleanup(data/polynomial): shorten some proofs ESTIMATED CHANGES Modified data/finsupp.lean + theorem finsupp.support_add_eq Modified data/polynomial.lean + theorem polynomial.apply_nat_degree_eq_zero_of_degree_lt + theorem polynomial.degree_le_degree + theorem polynomial.degree_le_nat_degree + theorem polynomial.le_nat_degree_of_ne_zero 2018-09-04 19:56:23+02:00 76de588 feat(data/polynomial): prove degree_derivative_eq ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_eq_single Modified data/polynomial.lean + theorem polynomial.degree_derivative_eq + theorem polynomial.derivative_apply + theorem polynomial.mem_support_derivative + theorem polynomial.nat_degree_zero 2018-09-04 10:43:33+02:00 eb20fd0 feat(data/polynomial): derivative on polynomials ESTIMATED CHANGES Modified data/polynomial.lean + def polynomial.derivative + theorem polynomial.derivative_C + theorem polynomial.derivative_X + theorem polynomial.derivative_add + theorem polynomial.derivative_monomial + theorem polynomial.derivative_mul + theorem polynomial.derivative_one + theorem polynomial.derivative_sum + theorem polynomial.derivative_zero + theorem polynomial.sum_C_mul_X_eq 2018-09-04 02:25:20-04:00 fd43fe0 fix(data/polynomial): fix proofs ESTIMATED CHANGES Modified data/polynomial.lean +/- theorem polynomial.map_C +/- theorem polynomial.map_X 2018-09-04 01:53:38-04:00 7a4125b feat(algebra/field): field homs ESTIMATED CHANGES Modified algebra/field.lean + theorem is_field_hom.map_div' + theorem is_field_hom.map_div + theorem is_field_hom.map_eq_zero + theorem is_field_hom.map_inv' + theorem is_field_hom.map_inv + theorem is_field_hom.map_ne_zero + def is_field_hom 2018-09-04 01:49:52-04:00 2dd78b8 feat(data/polynomial): add eval2 for univariate polys ESTIMATED CHANGES Modified algebra/group_power.lean +/- theorem int.coe_nat_pow + theorem is_semiring_hom.map_pow Modified data/polynomial.lean +/- def polynomial.eval +/- theorem polynomial.eval_C +/- theorem polynomial.eval_X +/- theorem polynomial.eval_add +/- theorem polynomial.eval_mul +/- theorem polynomial.eval_one +/- theorem polynomial.eval_pow +/- theorem polynomial.eval_zero + def polynomial.eval₂ + theorem polynomial.eval₂_C + theorem polynomial.eval₂_X + theorem polynomial.eval₂_add + theorem polynomial.eval₂_mul + theorem polynomial.eval₂_one + theorem polynomial.eval₂_pow + theorem polynomial.eval₂_zero + def polynomial.map + theorem polynomial.map_C + theorem polynomial.map_X + theorem polynomial.map_add + theorem polynomial.map_mul + theorem polynomial.map_one + theorem polynomial.map_pow + theorem polynomial.map_zero Modified linear_algebra/multivariate_polynomial.lean 2018-09-04 00:35:50-04:00 b8ea49b fix(ring_theory/ufd): fix simpa uses ESTIMATED CHANGES Modified ring_theory/unique_factorization_domain.lean 2018-09-03 18:31:34-04:00 4de119e fix(*): fix simpa uses ESTIMATED CHANGES Modified data/padics/padic_norm.lean Modified data/zmod.lean 2018-09-03 16:58:55-04:00 2021a1b perf(tactic/ring): don't do any implicit unfolds ESTIMATED CHANGES Modified tactic/ring.lean + theorem tactic.ring.unfold_div + theorem tactic.ring.unfold_sub 2018-09-03 16:58:38-04:00 1edb79a refactor(ring_theory/associated): rename associated_elements ESTIMATED CHANGES Renamed ring_theory/associated_elements.lean to ring_theory/associated.lean +/- def irreducible + theorem irreducible_or_factor + theorem is_unit_iff_dvd_one + theorem is_unit_iff_forall_dvd + theorem is_unit_of_dvd_unit + theorem of_irreducible_mul Modified ring_theory/unique_factorization_domain.lean 2018-09-03 16:58:38-04:00 956398c refactor(tactic/interactive): improve error reporting for simpa also make simpa fail on no goals or when applied where simp will work ESTIMATED CHANGES Modified algebra/gcd_domain.lean Modified analysis/metric_space.lean Modified analysis/topology/continuity.lean Modified analysis/topology/topological_space.lean Modified data/int/gcd.lean Modified data/padics/padic_norm.lean Modified data/rat.lean +/- theorem rat.denom_neg_eq_denom +/- theorem rat.num_denom_mk +/- theorem rat.num_zero Modified data/real/nnreal.lean Modified set_theory/ordinal.lean Modified tactic/interactive.lean 2018-09-03 12:33:54+02:00 36dd78e feat(category_theory): full and faithful functors, switching products also the evaluation functor, and replace the ↝ arrow with ⥤, by request ESTIMATED CHANGES Modified category_theory/category.lean Added category_theory/embedding.lean + theorem category_theory.image_preimage + def category_theory.preimage + def category_theory.preimage_iso + theorem category_theory.preimage_iso_coe + theorem category_theory.preimage_iso_symm_coe Modified category_theory/functor.lean +/- def category_theory.functor.comp +/- theorem category_theory.functor.comp_map +/- theorem category_theory.functor.comp_obj +/- def category_theory.functor.map +/- theorem category_theory.functor.map_comp +/- theorem category_theory.functor.map_id +/- theorem category_theory.functor.obj_eq_coe Modified category_theory/functor_category.lean +/- theorem category_theory.functor.category.comp_app +/- theorem category_theory.functor.category.id_app +/- theorem category_theory.functor.category.nat_trans.app_naturality +/- theorem category_theory.functor.category.nat_trans.naturality_app Modified category_theory/isomorphism.lean +/- theorem category_theory.functor.eq_to_iso +/- def category_theory.functor.on_iso +/- theorem category_theory.functor.on_iso_hom +/- theorem category_theory.functor.on_iso_inv Modified category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.app_eq_coe +/- theorem category_theory.nat_trans.exchange +/- def category_theory.nat_trans.hcomp +/- theorem category_theory.nat_trans.hcomp_app +/- theorem category_theory.nat_trans.id_app +/- theorem category_theory.nat_trans.mk_app +/- theorem category_theory.nat_trans.naturality +/- structure category_theory.nat_trans Modified category_theory/opposites.lean +/- theorem category_theory.functor.opposite_map +/- theorem category_theory.functor.opposite_obj Modified category_theory/products.lean + def category_theory.evaluation +/- def category_theory.functor.prod +/- theorem category_theory.functor.prod_map +/- theorem category_theory.functor.prod_obj +/- def category_theory.nat_trans.prod +/- theorem category_theory.nat_trans.prod_app +/- def category_theory.prod.fst +/- def category_theory.prod.inl +/- def category_theory.prod.inr +/- def category_theory.prod.snd + def category_theory.prod.swap + def category_theory.prod.symmetry Modified category_theory/types.lean Modified docs/theories/category_theory.md 2018-09-03 12:32:04+02:00 6ddc3fc feat(data/finset): max_of_ne_empty, min_of_ne_empty ESTIMATED CHANGES Modified data/finset.lean + theorem finset.max_of_ne_empty + theorem finset.min_of_ne_empty 2018-09-03 01:27:28+02:00 7ee7614 feat(category_theory/isomorphisms): introduce isomorphisms (#278) * refactor(category_theory): renaming `ulift` to `ulift_functor` to avoid name clashes * feat(category_theory): introduce isomorphisms * doc(category_theory): rewrite * Resolving issues raised by Johannes * moving heterogenous_identity.lean into isomorphism.lean * remove unnecessary `obviously` replacement * refactor(category_theory): using tidy in the category theory library ESTIMATED CHANGES Modified category_theory/category.lean + theorem category_theory.cancel_epi + theorem category_theory.cancel_mono Modified category_theory/functor.lean + theorem category_theory.functor.obj_eq_coe Modified category_theory/functor_category.lean Added category_theory/isomorphism.lean + def category_theory.eq_to_iso + theorem category_theory.eq_to_iso_refl + theorem category_theory.eq_to_iso_trans + theorem category_theory.functor.eq_to_iso + def category_theory.functor.on_iso + theorem category_theory.functor.on_iso_hom + theorem category_theory.functor.on_iso_inv + def category_theory.inv + def category_theory.is_iso.hom_inv_id + def category_theory.is_iso.inv_hom_id + theorem category_theory.iso.ext + theorem category_theory.iso.hom_eq_coe + theorem category_theory.iso.hom_inv_id + theorem category_theory.iso.inv_eq_coe + theorem category_theory.iso.inv_hom_id + def category_theory.iso.refl + theorem category_theory.iso.refl_coe + theorem category_theory.iso.refl_symm + theorem category_theory.iso.refl_symm_coe + def category_theory.iso.symm + def category_theory.iso.trans + theorem category_theory.iso.trans_coe + theorem category_theory.iso.trans_symm + theorem category_theory.iso.trans_symm_coe + structure category_theory.iso Modified category_theory/natural_transformation.lean + theorem category_theory.nat_trans.app_eq_coe +/- theorem category_theory.nat_trans.vcomp_assoc Modified category_theory/opposites.lean Modified category_theory/products.lean Modified category_theory/types.lean Modified docs/theories.md Renamed docs/theories/categories.md to docs/theories/category_theory.md 2018-09-03 00:10:15+02:00 0df6f77 style(linear_algebra/tensor_product): rename of -> tmul and ⊗ₛ -> ⊗ₜ; some cleanup in free_abelian_group ESTIMATED CHANGES Modified group_theory/free_abelian_group.lean - def free_abelian_group.UMP - theorem free_abelian_group.coe_def + def free_abelian_group.to_add_comm_group.UMP - theorem free_abelian_group.to_add_comm_group.add - theorem free_abelian_group.to_add_comm_group.coe - theorem free_abelian_group.to_add_comm_group.ext - def free_abelian_group.to_add_comm_group.is_add_group_hom - theorem free_abelian_group.to_add_comm_group.neg - theorem free_abelian_group.to_add_comm_group.of - theorem free_abelian_group.to_add_comm_group.sub - theorem free_abelian_group.to_add_comm_group.unique - theorem free_abelian_group.to_add_comm_group.zero +/- def free_abelian_group.to_add_comm_group Modified linear_algebra/tensor_product.lean - theorem tensor_product.add_of + theorem tensor_product.add_tmul +/- theorem tensor_product.bilinear - theorem tensor_product.of.add_left - theorem tensor_product.of.add_right - theorem tensor_product.of.smul - def tensor_product.of - theorem tensor_product.of_add - theorem tensor_product.of_smul - theorem tensor_product.smul_of + theorem tensor_product.smul_tmul + theorem tensor_product.tmul.add_left + theorem tensor_product.tmul.add_right + theorem tensor_product.tmul.smul + def tensor_product.tmul + theorem tensor_product.tmul_add + theorem tensor_product.tmul_smul - theorem tensor_product.to_module.of + theorem tensor_product.to_module.tmul 2018-09-02 23:49:36+02:00 40ef7a2 doc(ring_theory/unique_factorization_domain): add document strings ESTIMATED CHANGES Modified ring_theory/unique_factorization_domain.lean 2018-09-02 16:35:13-04:00 b3afef5 perf(tactic/ring): fix long-running mk_app invocations ESTIMATED CHANGES Modified tactic/ring.lean 2018-09-02 20:50:34+02:00 dd0c0ae feat(ring_theory): add unique factorization domain ESTIMATED CHANGES Added ring_theory/unique_factorization_domain.lean + theorem associates.eq_of_factors_eq_factors + theorem associates.eq_of_prod_eq_prod + theorem associates.factor_set.coe_add + def associates.factor_set.prod + theorem associates.factor_set.sup_add_inf_eq_add + def associates.factors' + theorem associates.factors'_cong + def associates.factors + theorem associates.factors_0 + theorem associates.factors_le + theorem associates.factors_mk + theorem associates.factors_mono + theorem associates.factors_mul + theorem associates.factors_prod + theorem associates.map_subtype_val_factors' + theorem associates.prod_add + theorem associates.prod_coe + theorem associates.prod_factors + theorem associates.prod_le + theorem associates.prod_le_prod_iff_le + theorem associates.prod_mono + theorem associates.prod_top + theorem associates.sup_mul_inf + theorem associates.unique' + def associates.{u} + def unique_factorization_domain.to_gcd_domain 2018-09-02 20:50:34+02:00 5f8fafc feat(ring_theory): add associated elements ESTIMATED CHANGES Modified algebra/ring.lean +/- theorem mul_eq_zero + theorem zero_eq_mul Modified data/multiset.lean + theorem multiset.exists_multiset_eq_map_quot_mk + theorem multiset.induction_on_multiset_quot + theorem multiset.injective_map + theorem multiset.map_eq_map + theorem multiset.map_mk_eq_map_mk_of_rel Modified data/nat/basic.lean Modified order/bounded_lattice.lean + theorem with_top.coe_inf + theorem with_top.coe_sup Added ring_theory/associated_elements.lean + theorem associated.associated_of_dvd_dvd + theorem associated.associated_one_iff_is_unit + theorem associated.associated_one_of_associated_mul_one + theorem associated.associated_one_of_mul_eq_one + theorem associated.associated_zero_iff_eq_zero + theorem associated.unit_associated_one + def associated + theorem associates.coe_unit_eq_one + theorem associates.dvd_of_mk_le_mk + theorem associates.dvd_out_iff + theorem associates.forall_associated + theorem associates.irreducible_mk_iff + theorem associates.is_unit_iff_eq_one + theorem associates.is_unit_mk + theorem associates.le_mul_left + theorem associates.le_mul_right + theorem associates.mk_eq_mk_iff_associated + theorem associates.mk_eq_zero_iff_eq_zero + theorem associates.mk_le_mk_iff_dvd_iff + theorem associates.mk_le_mk_of_dvd + theorem associates.mk_mul_mk + theorem associates.mk_zero_eq + theorem associates.mul_eq_one_iff + theorem associates.mul_eq_zero_iff + theorem associates.mul_mono + theorem associates.mul_zero + theorem associates.norm_unit_out + theorem associates.one_eq_mk_one + theorem associates.one_le + theorem associates.out_dvd_iff + theorem associates.out_mk + theorem associates.out_mul + theorem associates.out_one + theorem associates.out_top + theorem associates.prod_eq_one_iff + theorem associates.prod_eq_zero_iff + theorem associates.prod_le_prod + theorem associates.prod_mk + theorem associates.quot_mk_eq_mk + theorem associates.quotient_mk_eq_mk + theorem associates.rel_associated_iff_map_eq_map + theorem associates.zero_mul + theorem associates.zero_ne_one + def associates + def associates_int_equiv_nat + def irreducible + theorem irreducible_iff_nat_prime + def is_unit + theorem is_unit_mul_units + theorem is_unit_nat + theorem is_unit_one + theorem not_irreducible_one + theorem not_irreducible_zero + theorem not_is_unit_zero + theorem units.is_unit_of_mul_one Modified ring_theory/localization.lean 2018-09-02 20:07:13+02:00 059f937 feat(tactic): add linear arithmetic tactic (#301) * feat(data/list, tactic): small helper functions * feat(meta/rb_map): extra operations on native rb_maps * feat(tactic/linarith): add tactic for solving linear arithmetic goals * doc(tactic/linarith): add documentation and tests * chore(tactic/linarith): add copyright * feat(tactic/linarith): allow products of coefficients * feat(tactic/linarith): cut off search early if contradiction is found * feat(tests/linarith_tests): add test * doc(doc/tactics): update doc * feat(tactic/linarith): add config options * feat(tactic/linarith): support equality goals * chore(tactic/linarith): move non-tactic code out of tactic monad * feat(tactic/linarith): support rational coefficients * doc(tactic/linarith): update doc * feat(tactic/linarith): fix obvious inefficiency in canceling denoms * feat(tactic/linarith): efficiency improvements * fix(tactic/linarith): remove unnecessary import and dead code * fix(data/list/basic, meta/rb_map): shorter proofs ESTIMATED CHANGES Modified data/list/basic.lean +/- theorem list.index_of_eq_length + def list.reduce_option Modified docs/tactics.md Added meta/rb_map.lean Modified tactic/basic.lean Added tactic/linarith.lean + theorem linarith.add_subst + def linarith.alist_lt + theorem linarith.div_subst + theorem linarith.eq_of_eq_of_eq + theorem linarith.eq_of_not_lt_of_not_gt + def linarith.ineq.is_lt + def linarith.ineq.max + def linarith.ineq.to_string + inductive linarith.ineq + theorem linarith.le_of_eq_of_le + theorem linarith.le_of_le_of_eq + theorem linarith.lt_of_eq_of_lt + theorem linarith.lt_of_lt_of_eq + theorem linarith.mul_eq + theorem linarith.mul_neg + theorem linarith.mul_nonpos + theorem linarith.mul_subst + theorem linarith.neg_subst + def linarith.reduce_pair_option + theorem linarith.sub_into_lt + theorem linarith.sub_subst + def linarith.tree.repr + inductive linarith.{u} Added tests/linarith_tests.lean 2018-09-02 19:58:41+02:00 8c19da7 feat(data/polynomial): has_repr for polynomials (#302) Not sure if I should change this so that it will always return a string that will not cause any problems if copied and pasted into a lemma. It does this for rationals and integers, although for rationals, it returns something equal to the polynomial you would like, but probably not the polynomial you actually want, i.e. `(2 / 3 : polynomial ℚ)` more or less gives you `(C 2 / C 3)`, rather than `C (2 / 3)`. These expressions are def eq, but not in any reasonable amount of time as soon as the size gets slightly larger. ESTIMATED CHANGES Modified data/polynomial.lean 2018-09-02 19:54:22+02:00 2594f48 style(linear_algebra/tensor_product): renaming and changing some proofs ESTIMATED CHANGES Modified group_theory/free_abelian_group.lean + theorem free_abelian_group.to_add_comm_group.coe + theorem free_abelian_group.to_add_comm_group.sub Modified linear_algebra/tensor_product.lean +/- theorem is_bilinear_map.comm +/- theorem is_bilinear_map.comp + theorem is_bilinear_map.linear_left - theorem is_bilinear_map.linear_pair + theorem is_bilinear_map.linear_right + theorem is_bilinear_map.neg_left - theorem is_bilinear_map.neg_pair + theorem is_bilinear_map.neg_right - theorem is_bilinear_map.pair_linear - theorem is_bilinear_map.pair_neg - theorem is_bilinear_map.pair_zero + theorem is_bilinear_map.zero_left - theorem is_bilinear_map.zero_pair + theorem is_bilinear_map.zero_right +/- structure is_bilinear_map +/- theorem tensor_product.add_of + theorem tensor_product.of.add_left + theorem tensor_product.of.add_right + theorem tensor_product.of.smul +/- theorem tensor_product.of_add +/- theorem tensor_product.of_smul + theorem tensor_product.smul.is_add_group_hom - def tensor_product.smul.is_add_group_hom +/- theorem tensor_product.smul_of +/- def tensor_product 2018-09-02 19:54:22+02:00 4b5ad0e feat(linear_algebra,group_theory): add tensor product and supporting material ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/ring.lean Added group_theory/abelianization.lean + def abelianization.of + def abelianization.to_comm_group.is_group_hom + theorem abelianization.to_comm_group.of + theorem abelianization.to_comm_group.unique + def abelianization.to_comm_group + def abelianization + def commutator Modified group_theory/coset.lean + theorem quotient_group.induction_on' + theorem quotient_group.induction_on Added group_theory/free_abelian_group.lean + def free_abelian_group.UMP + theorem free_abelian_group.coe_def + def free_abelian_group.of + theorem free_abelian_group.to_add_comm_group.add + theorem free_abelian_group.to_add_comm_group.ext + def free_abelian_group.to_add_comm_group.is_add_group_hom + theorem free_abelian_group.to_add_comm_group.neg + theorem free_abelian_group.to_add_comm_group.of + theorem free_abelian_group.to_add_comm_group.unique + theorem free_abelian_group.to_add_comm_group.zero + def free_abelian_group.to_add_comm_group + def free_abelian_group Modified group_theory/quotient_group.lean Modified group_theory/subgroup.lean Added linear_algebra/tensor_product.lean + theorem is_bilinear_map.comm + theorem is_bilinear_map.comp + theorem is_bilinear_map.linear_pair + theorem is_bilinear_map.neg_pair + theorem is_bilinear_map.pair_linear + theorem is_bilinear_map.pair_neg + theorem is_bilinear_map.pair_zero + theorem is_bilinear_map.zero_pair + structure is_bilinear_map + theorem tensor_product.add_of + theorem tensor_product.bilinear + def tensor_product.of + theorem tensor_product.of_add + theorem tensor_product.of_smul + def tensor_product.relators + def tensor_product.smul.aux + def tensor_product.smul.is_add_group_hom + def tensor_product.smul + theorem tensor_product.smul_of + theorem tensor_product.to_module.add + def tensor_product.to_module.equiv + theorem tensor_product.to_module.ext + def tensor_product.to_module.linear + theorem tensor_product.to_module.of + theorem tensor_product.to_module.smul + theorem tensor_product.to_module.unique + def tensor_product.to_module + def tensor_product 2018-09-02 13:36:43-04:00 dd6b035 feat(data/option): add simp lemmas for orelse ESTIMATED CHANGES Modified data/option.lean + theorem option.none_orelse' + theorem option.none_orelse +/- theorem option.orelse_none' +/- theorem option.orelse_none - theorem option.orelse_some' - theorem option.orelse_some + theorem option.some_orelse' + theorem option.some_orelse 2018-09-02 17:21:22 3de3cfb feat(tactic/subtype_instance): generating subtype instances ESTIMATED CHANGES Modified data/list/basic.lean + def list.map_head + def list.map_last Modified data/string.lean + def string.map_tokens Added field_theory/subfield.lean Modified group_theory/subgroup.lean Modified group_theory/submonoid.lean Added ring_theory/subring.lean Added tactic/algebra.lean Modified tactic/basic.lean Added tactic/subtype_instance.lean + def tactic.mk_mem_name 2018-09-01 13:10:14+02:00 b7b05fb style(ring_theory): rename PID to principal_ideal_domain ESTIMATED CHANGES Renamed ring_theory/PID.lean to ring_theory/principal_ideal_domain.lean 2018-08-31 17:48:25+02:00 20b4143 feat(algebra): add normalization and GCD domain; setup for int ESTIMATED CHANGES Added algebra/gcd_domain.lean + theorem associated_of_dvd_of_dvd + theorem dvd_antisymm_of_norm + theorem dvd_gcd_iff + theorem dvd_lcm_left + theorem dvd_lcm_right + theorem gcd_assoc + theorem gcd_comm + theorem gcd_dvd_gcd + theorem gcd_dvd_gcd_mul_left + theorem gcd_dvd_gcd_mul_left_right + theorem gcd_dvd_gcd_mul_right + theorem gcd_dvd_gcd_mul_right_right + theorem gcd_eq_left_iff + theorem gcd_eq_mul_norm_unit + theorem gcd_eq_right_iff + theorem gcd_eq_zero_iff + theorem gcd_mul_lcm + theorem gcd_mul_left + theorem gcd_mul_right + theorem gcd_one_left + theorem gcd_one_right + theorem gcd_same + theorem gcd_zero_left + theorem gcd_zero_right + theorem lcm_assoc + theorem lcm_comm + theorem lcm_dvd + theorem lcm_dvd_iff + theorem lcm_dvd_lcm + theorem lcm_dvd_lcm_mul_left + theorem lcm_dvd_lcm_mul_left_right + theorem lcm_dvd_lcm_mul_right + theorem lcm_dvd_lcm_mul_right_right + theorem lcm_eq_left_iff + theorem lcm_eq_mul_norm_unit + theorem lcm_eq_one_iff + theorem lcm_eq_right_iff + theorem lcm_eq_zero_iff + theorem lcm_mul_left + theorem lcm_mul_right + theorem lcm_one_left + theorem lcm_one_right + theorem lcm_same + theorem lcm_units_coe_left + theorem lcm_units_coe_right + theorem mul_norm_unit_eq_mul_norm_unit + theorem norm_unit_gcd + theorem norm_unit_lcm + theorem norm_unit_mul_norm_unit + theorem norm_unit_one Modified data/int/gcd.lean + theorem int.coe_gcd + theorem int.coe_lcm + theorem int.coe_nat_abs_eq_mul_norm_unit +/- theorem int.dvd_gcd - theorem int.eq_zero_of_gcd_eq_zero_left - theorem int.eq_zero_of_gcd_eq_zero_right +/- theorem int.gcd_assoc +/- theorem int.gcd_comm - theorem int.gcd_dvd + theorem int.gcd_eq_zero_iff +/- theorem int.gcd_one_right +/- theorem int.gcd_self +/- theorem int.gcd_zero_right +/- def int.lcm +/- theorem int.lcm_def +/- theorem int.lcm_dvd +/- theorem int.lcm_one_left +/- theorem int.lcm_one_right +/- theorem int.lcm_self +/- theorem int.lcm_zero_left +/- theorem int.lcm_zero_right + theorem int.nat_abs_gcd + theorem int.nat_abs_lcm + theorem int.norm_unit_nat_coe + theorem int.norm_unit_of_neg + theorem int.norm_unit_of_nonneg 2018-08-31 17:48:25+02:00 5df7cac refactor(data/int/gcd): move int gcd proofs to the GCD theory ESTIMATED CHANGES Modified data/int/basic.lean - theorem int.nat_abs_div - theorem int.nat_abs_dvd_abs_iff - theorem int.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul - def nat.gcd_a - def nat.gcd_b - theorem nat.gcd_eq_gcd_ab - def nat.xgcd - def nat.xgcd_aux - theorem nat.xgcd_aux_P - theorem nat.xgcd_aux_fst - theorem nat.xgcd_aux_rec - theorem nat.xgcd_aux_val - theorem nat.xgcd_val - theorem nat.xgcd_zero_left Modified data/int/gcd.lean +/- theorem int.gcd_comm +/- theorem int.gcd_dvd +/- theorem int.gcd_dvd_left +/- theorem int.gcd_mul_right +/- theorem int.lcm_one_right + theorem int.nat_abs_div + theorem int.nat_abs_dvd_abs_iff + theorem int.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul + def nat.gcd_a + def nat.gcd_b + theorem nat.gcd_eq_gcd_ab + def nat.xgcd + def nat.xgcd_aux + theorem nat.xgcd_aux_P + theorem nat.xgcd_aux_fst + theorem nat.xgcd_aux_rec + theorem nat.xgcd_aux_val + theorem nat.xgcd_val + theorem nat.xgcd_zero_left Modified data/nat/modeq.lean Modified data/padics/padic_norm.lean Modified data/zmod.lean 2018-08-31 17:48:25+02:00 a89f28e feat(data/int/gcd): extended gcd to integers (#218) Resurrected by @johoelzl. The original commit was not available anymore. ESTIMATED CHANGES Modified data/int/basic.lean + theorem int.nat_abs_div + theorem int.nat_abs_dvd_abs_iff +/- theorem int.nat_abs_neg_of_nat Added data/int/gcd.lean + theorem int.dvd_gcd + theorem int.dvd_lcm_left + theorem int.dvd_lcm_right + theorem int.dvd_of_mul_dvd_mul_left + theorem int.dvd_of_mul_dvd_mul_right + theorem int.eq_zero_of_gcd_eq_zero_left + theorem int.eq_zero_of_gcd_eq_zero_right + theorem int.gcd_assoc + theorem int.gcd_comm + theorem int.gcd_div + theorem int.gcd_dvd + theorem int.gcd_dvd_gcd_mul_left + theorem int.gcd_dvd_gcd_mul_left_right + theorem int.gcd_dvd_gcd_mul_right + theorem int.gcd_dvd_gcd_mul_right_right + theorem int.gcd_dvd_gcd_of_dvd_left + theorem int.gcd_dvd_gcd_of_dvd_right + theorem int.gcd_dvd_left + theorem int.gcd_dvd_right + theorem int.gcd_eq_left + theorem int.gcd_eq_right + theorem int.gcd_mul_lcm + theorem int.gcd_mul_left + theorem int.gcd_mul_right + theorem int.gcd_one_left + theorem int.gcd_one_right + theorem int.gcd_pos_of_non_zero_left + theorem int.gcd_pos_of_non_zero_right + theorem int.gcd_self + theorem int.gcd_zero_left + theorem int.gcd_zero_right + def int.lcm + theorem int.lcm_assoc + theorem int.lcm_comm + theorem int.lcm_def + theorem int.lcm_dvd + theorem int.lcm_one_left + theorem int.lcm_one_right + theorem int.lcm_self + theorem int.lcm_zero_left + theorem int.lcm_zero_right 2018-08-31 14:44:58+02:00 ee9bf5c feat(data/equiv): equiv_congr and perm_congr ESTIMATED CHANGES Modified data/equiv/basic.lean + def equiv.equiv_congr + def equiv.perm_congr + theorem equiv.trans_assoc 2018-08-31 09:14:34+02:00 4068d00 feat(data/nat): simp rules for find_greatest ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.find_greatest_eq + theorem nat.find_greatest_of_not + theorem nat.find_greatest_zero 2018-08-31 01:45:14+02:00 2946088 feat(tactic/explode): line by line proof display for proof terms ESTIMATED CHANGES Modified tactic/basic.lean Added tactic/explode.lean + def tactic.explode.head' + inductive tactic.explode.status 2018-08-30 18:39:48+02:00 86c955e feat(data/nat): find_greatest is always bounded ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.find_greatest_le 2018-08-30 17:30:19+02:00 c238aad refactor(data/nat): simplify find_greatest; fix namespace nat.nat.find_greatest -> nat.find_greatest ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.find_greatest_is_greatest + theorem nat.find_greatest_spec + theorem nat.find_greatest_spec_and_le + theorem nat.le_find_greatest +/- theorem nat.mul_pow +/- theorem nat.nat.div_mul_div - theorem nat.nat.find_greatest_is_greatest - theorem nat.nat.find_greatest_spec 2018-08-30 15:34:45+02:00 83edcc0 refactor(data/nat,int): separate int from nat, i.e. do not import any int theory in nat ESTIMATED CHANGES Modified data/int/basic.lean + theorem int.coe_nat_dvd_left + theorem int.coe_nat_dvd_right +/- theorem int.dvd_nat_abs_of_of_nat_dvd +/- theorem int.pow_div_of_le_of_pow_div_int + theorem int.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul + def nat.gcd_a + def nat.gcd_b + theorem nat.gcd_eq_gcd_ab + def nat.xgcd + def nat.xgcd_aux + theorem nat.xgcd_aux_P + theorem nat.xgcd_aux_fst + theorem nat.xgcd_aux_rec + theorem nat.xgcd_aux_val + theorem nat.xgcd_val + theorem nat.xgcd_zero_left Modified data/nat/gcd.lean - def nat.gcd_a - def nat.gcd_b - theorem nat.gcd_eq_gcd_ab - def nat.xgcd - def nat.xgcd_aux - theorem nat.xgcd_aux_P - theorem nat.xgcd_aux_fst - theorem nat.xgcd_aux_rec - theorem nat.xgcd_aux_val - theorem nat.xgcd_val - theorem nat.xgcd_zero_left Modified data/nat/prime.lean - theorem nat.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul_int Modified data/padics/padic_norm.lean Modified data/zmod.lean 2018-08-30 14:55:56+02:00 d245165 refactor(algebra): add more facts about units ESTIMATED CHANGES Modified algebra/field.lean - theorem units.ne_zero Modified algebra/group.lean + def units.mk_of_mul_eq_one Modified algebra/ring.lean + theorem units.coe_dvd + theorem units.coe_mul_dvd + theorem units.dvd_coe + theorem units.dvd_coe_mul + theorem units.ne_zero + theorem zero_dvd_iff_eq_zero 2018-08-30 13:27:07+02:00 b4b05dd feat(logic/basic): introduce pempty ESTIMATED CHANGES Modified data/equiv/basic.lean - def equiv.arrow_empty_unit + def equiv.equiv_pempty + def equiv.false_equiv_pempty + def equiv.pempty_arrow_equiv_unit + def equiv.pempty_equiv_pempty + def equiv.pempty_prod + def equiv.pempty_sum + def equiv.prod_pempty + def equiv.sum_pempty Modified data/fintype.lean + theorem fintype.card_pempty + theorem fintype.univ_pempty Modified logic/basic.lean + def pempty.elim + inductive {u} Modified set_theory/cardinal.lean Modified tactic/auto_cases.lean 2018-08-29 15:07:11+02:00 afd1c06 feat(algebra/group): is_add_group_hom ESTIMATED CHANGES Modified algebra/group.lean + theorem is_add_group_hom.sub 2018-08-29 14:48:07+02:00 b0aadaa cleanup(analysis/bounded_linear_maps): some reorganization ESTIMATED CHANGES Added analysis/bounded_linear_maps.lean + theorem bounded_continuous_linear_map + theorem is_bounded_linear_map.add + theorem is_bounded_linear_map.comp + theorem is_bounded_linear_map.continuous + theorem is_bounded_linear_map.id + theorem is_bounded_linear_map.lim_zero_bounded_linear_map + theorem is_bounded_linear_map.neg + theorem is_bounded_linear_map.smul + theorem is_bounded_linear_map.sub + theorem is_bounded_linear_map.tendsto + theorem is_bounded_linear_map.zero + structure is_bounded_linear_map + theorem is_linear_map.with_bound + theorem mul_inv_eq' Deleted analysis/continuous_linear_maps.lean - theorem bounded_continuous_linear_map - theorem is_bounded_linear_map.add - theorem is_bounded_linear_map.comp - theorem is_bounded_linear_map.continuous - theorem is_bounded_linear_map.id - theorem is_bounded_linear_map.lim_zero_bounded_linear_map - theorem is_bounded_linear_map.neg - theorem is_bounded_linear_map.smul - theorem is_bounded_linear_map.sub - theorem is_bounded_linear_map.zero - def is_bounded_linear_map Modified analysis/metric_space.lean + theorem exists_delta_of_continuous Modified analysis/normed_space.lean + theorem real.norm_eq_abs 2018-08-29 14:48:07+02:00 21a9355 feat(analysis/continuous_linear_maps) ESTIMATED CHANGES Added analysis/continuous_linear_maps.lean + theorem bounded_continuous_linear_map + theorem is_bounded_linear_map.add + theorem is_bounded_linear_map.comp + theorem is_bounded_linear_map.continuous + theorem is_bounded_linear_map.id + theorem is_bounded_linear_map.lim_zero_bounded_linear_map + theorem is_bounded_linear_map.neg + theorem is_bounded_linear_map.smul + theorem is_bounded_linear_map.sub + theorem is_bounded_linear_map.zero + def is_bounded_linear_map 2018-08-29 14:38:32+02:00 49f700c feat(analysis/topology/uniform_space): prepare for completions (#297) ESTIMATED CHANGES Modified analysis/topology/uniform_space.lean + theorem eq_of_separated_of_uniform_continuous + theorem separated_of_uniform_continuous + theorem separation_prod +/- theorem uniform_continuous.prod_mk + theorem uniform_continuous.prod_mk_left + theorem uniform_continuous.prod_mk_right + theorem uniform_continuous_quotient + theorem uniform_continuous_quotient_lift + theorem uniform_continuous_quotient_lift₂ + theorem uniformity_quotient 2018-08-29 02:55:13+02:00 0c11112 feat(logic/function): adds uncurry_def (#293) ESTIMATED CHANGES Modified logic/function.lean + theorem function.uncurry_def 2018-08-29 02:53:42+02:00 b82ba3c feat(data/multiset): multisets are traversable using commutative, applicative functors (#220) ESTIMATED CHANGES Modified category/applicative.lean Modified category/traversable/instances.lean - theorem list.comp_traverse - theorem list.id_traverse - theorem list.naturality - theorem list.traverse_eq_map_id + theorem traverse_append Modified category/traversable/lemmas.lean + theorem traversable.map_traverse' Modified data/multiset.lean + theorem multiset.coe_append_eq_add_coe + theorem multiset.coe_list_cons_eq_cons_coe + theorem multiset.coe_traverse_cons + theorem multiset.coe_traverse_cons_swap + theorem multiset.comp_traverse + theorem multiset.id_traverse + theorem multiset.lift_beta + theorem multiset.map_comp_coe + theorem multiset.map_traverse + theorem multiset.naturality + def multiset.traverse + theorem multiset.traverse_map 2018-08-29 02:46:53+02:00 3e38b73 feat(analysis/topology): density and continuity lemmas (#292) Still from the perfectoid project ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem dense_embedding.closure_image_nhds_of_nhds + theorem dense_embedding.self_sub_closure_image_preimage_of_open + theorem dense_embedding.tendsto_vmap_nhds_nhds Modified analysis/topology/topological_space.lean + theorem dense_iff_inter_open + theorem quotient_dense_of_dense 2018-08-29 02:45:15+02:00 4eca29f doc(docs/howto-contribute.md): How to contribute to mathlib (#291) ESTIMATED CHANGES Modified README.md Added docs/howto-contribute.md 2018-08-29 02:42:39+02:00 79bb95c feat(analysis/topology, data/set): some zerology (#295) ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem closure_empty_iff Modified data/set/basic.lean + theorem set.nonempty_iff_univ_ne_empty + theorem set.nonempty_of_nonempty_range 2018-08-29 02:26:04+02:00 49fb2db fix(docs/style): precise a style rule and fixes a github markdown issue (#290) ESTIMATED CHANGES Modified docs/style.md 2018-08-29 00:28:03+02:00 bab3813 feat(ring_theory/PID): PIDs and xgcd for ED (#298) ESTIMATED CHANGES Modified algebra/euclidean_domain.lean + def euclidean_domain.gcd_a + def euclidean_domain.gcd_b + theorem euclidean_domain.gcd_eq_gcd_ab + theorem euclidean_domain.mod_eq_sub_mul_div + def euclidean_domain.xgcd + def euclidean_domain.xgcd_aux + theorem euclidean_domain.xgcd_aux_P + theorem euclidean_domain.xgcd_aux_fst + theorem euclidean_domain.xgcd_aux_rec + theorem euclidean_domain.xgcd_aux_val + theorem euclidean_domain.xgcd_val + theorem euclidean_domain.xgcd_zero_left Modified algebra/ring.lean + theorem zero_dvd_iff Added ring_theory/PID.lean + theorem is_prime_ideal.to_maximal_ideal + theorem is_principal_ideal.eq_trivial_iff_generator_eq_zero + theorem is_principal_ideal.generator_generates + theorem is_principal_ideal.generator_mem + theorem is_principal_ideal.mem_iff_generator_dvd + theorem mod_mem_iff Modified ring_theory/ideals.lean + theorem is_ideal.mem_trivial +/- theorem is_maximal_ideal.mk +/- theorem is_proper_ideal_iff_one_not_mem +/- theorem quotient_ring.eq_zero_iff_mem 2018-08-28 20:10:13+02:00 cd73115 refactor(data/set/basic): clean up #288 and #289 ESTIMATED CHANGES Modified data/set/basic.lean - theorem set.mem_prod' + theorem set.mk_mem_prod +/- theorem set.univ_prod_univ Modified order/filter.lean - theorem filter.inter_vmap_sets + theorem filter.sInter_vmap_sets +/- theorem filter.vmap_eq_of_inverse 2018-08-28 20:09:53+02:00 8d3bd80 feat(tactic/tidy): add tidy tactic (#285) ESTIMATED CHANGES Modified docs/tactics.md Added tactic/auto_cases.lean Modified tactic/basic.lean Added tactic/chain.lean + inductive tactic.tactic_script Modified tactic/interactive.lean Added tactic/tidy.lean Modified tests/tactics.lean Added tests/tidy.lean + structure tidy.test.A + structure tidy.test.B + structure tidy.test.C + structure tidy.test.D + def tidy.test.d + def tidy.test.f + def tidy.test.tidy_test_0 + def tidy.test.tidy_test_1 2018-08-28 19:40:10+02:00 9ad32e7 feat(order/filter): More lemmas from perfectoid project (#289) ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.prod_sub_preimage_iff - theorem set.sub_preimage_iff Modified order/filter.lean + theorem filter.inter_vmap_sets + theorem filter.tendsto_prod_iff + theorem filter.tendsto_prod_self_iff + theorem filter.vmap_eq_of_inverse 2018-08-28 19:38:58+02:00 3f65a93 fix(tactic/restate_axiom): change default naming in restate_axiom (#286) * beginning renaming * modifying names in restate_axiom * removing ematch attributes from category_theory * improving behaviour of `restate_axiom`, documenting and testing * oops ESTIMATED CHANGES Modified category_theory/category.lean Modified category_theory/functor.lean + theorem category_theory.functor.map_comp - theorem category_theory.functor.map_comp_lemma + theorem category_theory.functor.map_id - theorem category_theory.functor.map_id_lemma Modified category_theory/functor_category.lean +/- theorem category_theory.functor.category.comp_app +/- theorem category_theory.functor.category.id_app +/- theorem category_theory.functor.category.nat_trans.app_naturality +/- theorem category_theory.functor.category.nat_trans.naturality_app Modified category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.exchange + theorem category_theory.nat_trans.naturality - theorem category_theory.nat_trans.naturality_lemma +/- theorem category_theory.nat_trans.vcomp_assoc Modified category_theory/opposites.lean Modified category_theory/products.lean +/- theorem category_theory.functor.prod_map +/- theorem category_theory.functor.prod_obj +/- theorem category_theory.nat_trans.prod_app +/- theorem category_theory.prod_comp +/- theorem category_theory.prod_id Modified category_theory/types.lean +/- theorem category_theory.functor_to_types.map_comp +/- theorem category_theory.functor_to_types.map_id +/- theorem category_theory.functor_to_types.naturality Modified docs/tactics.md Modified tactic/restate_axiom.lean Added tests/restate_axiom.lean + structure A 2018-08-28 17:33:14+02:00 ed5a338 feat(data/set/basic): some more basic set lemmas (#288) ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.inter_singleton_ne_empty + theorem set.mem_prod' + theorem set.preimage_subset_iff + theorem set.sub_preimage_iff 2018-08-28 15:08:37+02:00 39ffeab feat(analysis): add normed spaces ESTIMATED CHANGES Added analysis/normed_space.lean + theorem abs_norm_sub_norm_le + theorem coe_nnnorm + theorem continuous_norm + theorem dist_eq_norm + theorem dist_norm_norm_le + theorem dist_zero_right + theorem lim_norm + theorem lim_norm_zero + theorem nndist_eq_nnnorm + theorem nndist_nnnorm_nnnorm_le + def nnnorm + theorem nnnorm_eq_zero + theorem nnnorm_neg + theorem nnnorm_smul + theorem nnnorm_triangle + theorem nnnorm_zero + theorem norm_eq_zero + theorem norm_fst_le + theorem norm_le_zero_iff + theorem norm_mul + theorem norm_neg + theorem norm_nonneg + theorem norm_pos_iff + theorem norm_smul + theorem norm_snd_le + theorem norm_triangle + theorem norm_zero + theorem squeeze_zero + theorem tendsto_iff_norm_tendsto_zero + theorem tendsto_smul 2018-08-28 15:05:42+02:00 2b9c9a8 refactor(analysis): add nndist; add finite product of metric spaces; prepare for normed spaces ESTIMATED CHANGES Modified analysis/complex.lean Modified analysis/ennreal.lean - theorem topological_space.nhds_swap - theorem topological_space.prod_mem_nhds_sets - theorem topological_space.tendsto_nhds_generate_from - theorem topological_space.tendsto_prod_mk_nhds Modified analysis/metric_space.lean + theorem coe_dist - def dist + theorem dist_pi_def + theorem eq_of_nndist_eq_zero + def nndist + theorem nndist_comm + theorem nndist_eq_zero + theorem nndist_self + theorem nndist_triangle + theorem nndist_triangle_left + theorem nndist_triangle_right + theorem zero_eq_nndist Modified analysis/nnreal.lean Modified analysis/topology/continuity.lean + theorem embedding.map_nhds_eq + theorem nhds_swap + theorem prod_mem_nhds_sets + theorem tendsto_prod_mk_nhds Modified analysis/topology/topological_space.lean + theorem topological_space.tendsto_nhds_generate_from Modified data/finset.lean + theorem finset.image_const +/- theorem finset.inf_insert +/- theorem finset.inf_singleton +/- theorem finset.inf_union + theorem finset.le_inf_iff + theorem finset.max_singleton' +/- theorem finset.sup_insert + theorem finset.sup_le_iff +/- theorem finset.sup_singleton +/- theorem finset.sup_union Modified data/real/nnreal.lean + theorem nnreal.bot_eq_zero + theorem nnreal.mul_finset_sup + theorem nnreal.mul_sup 2018-08-28 15:05:42+02:00 41f5674 fix(algebra/pi_modules): pi instance for module shouldn't search for the ring structure ESTIMATED CHANGES Modified algebra/pi_instances.lean 2018-08-28 14:39:03+02:00 5c221a3 feat(order/conditionally_complete_lattic): nat is a conditionally complete linear order with bottom ESTIMATED CHANGES Modified algebra/ordered_ring.lean Modified data/equiv/list.lean Modified order/conditionally_complete_lattice.lean + theorem lattice.Inf_nat_def + theorem lattice.Sup_nat_def 2018-08-28 10:22:25+02:00 de67f54 feat(data/real): cauchy sequence limit lemmas (#61) ESTIMATED CHANGES Modified data/real/basic.lean + theorem real.eq_lim_of_const_equiv + theorem real.lim_add + theorem real.lim_const + theorem real.lim_eq_lim_of_equiv + theorem real.lim_eq_of_equiv_const + theorem real.lim_eq_zero_iff + theorem real.lim_inv + theorem real.lim_mul + theorem real.lim_mul_lim + theorem real.lim_neg Modified data/real/cau_seq.lean + theorem cau_seq.const_inv 2018-08-28 00:08:50+02:00 c420885 fix(tactic/interactive): try reflexivity after substs (#275) This brings `substs` closer to being equivalent to a sequence of `subst`. ESTIMATED CHANGES Modified tactic/interactive.lean 2018-08-28 00:06:47+02:00 bca8d49 chore(data/array, data/buffer): Array and buffer cleanup (#277) ESTIMATED CHANGES Modified data/array/lemmas.lean +/- theorem array.mem.def +/- theorem array.mem_rev_list + theorem array.mem_rev_list_aux - theorem array.mem_rev_list_core +/- theorem array.mem_to_list +/- theorem array.mem_to_list_enum +/- theorem array.push_back_rev_list + theorem array.push_back_rev_list_aux - theorem array.push_back_rev_list_core +/- theorem array.push_back_to_list +/- theorem array.read_foreach +/- theorem array.read_foreach_aux +/- theorem array.read_map +/- theorem array.read_map₂ +/- theorem array.rev_list_foldr +/- theorem array.rev_list_foldr_aux +/- theorem array.rev_list_length_aux +/- theorem array.rev_list_reverse + theorem array.rev_list_reverse_aux - theorem array.rev_list_reverse_core +/- theorem array.to_list_foldl +/- theorem array.to_list_nth +/- theorem array.to_list_nth_le' +/- theorem array.to_list_nth_le + theorem array.to_list_nth_le_aux - theorem array.to_list_nth_le_core +/- theorem array.to_list_of_heq +/- theorem array.to_list_reverse +/- theorem array.write_to_list +/- def equiv.d_array_equiv_fin Modified data/buffer/basic.lean +/- theorem buffer.ext +/- theorem buffer.to_list_append_list Modified data/hash_map.lean 2018-08-27 23:02:59+02:00 c52b317 refactor(data/finsupp): generalise finsupp.to_module (#284) ESTIMATED CHANGES Modified data/finsupp.lean + theorem finsupp.smul_apply' +/- theorem finsupp.smul_apply + def finsupp.to_has_scalar' +/- def finsupp.to_has_scalar +/- def finsupp.to_module Modified data/polynomial.lean Modified linear_algebra/basic.lean Modified linear_algebra/multivariate_polynomial.lean 2018-08-27 16:48:59+02:00 9aa2bb0 feat(data/fin): last (#273) ESTIMATED CHANGES Modified data/fin.lean + def fin.last + theorem fin.le_last 2018-08-27 16:48:29+02:00 a3a9e24 bug(tactic/interactive): make `solve_by_elim` fail on no goals (#279) ESTIMATED CHANGES Modified tactic/basic.lean Modified tests/tactics.lean 2018-08-27 16:46:13+02:00 c13a771 feat(data/list): join_eq_nil, join_repeat_nil (#274) ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.join_eq_nil + theorem list.join_repeat_nil 2018-08-27 14:37:37+02:00 92e9d64 feat(category_theory): restating functor.map and nat_trans.app (#268) ESTIMATED CHANGES Modified category_theory/functor.lean - theorem category_theory.functor.coe_def +/- theorem category_theory.functor.comp_map + def category_theory.functor.map + theorem category_theory.functor.map_comp_lemma + theorem category_theory.functor.map_id_lemma + theorem category_theory.functor.mk_map + theorem category_theory.functor.mk_obj Modified category_theory/functor_category.lean +/- theorem category_theory.functor.category.comp_app +/- theorem category_theory.functor.category.nat_trans.app_naturality +/- theorem category_theory.functor.category.nat_trans.naturality_app Modified category_theory/natural_transformation.lean - theorem category_theory.nat_trans.coe_def +/- theorem category_theory.nat_trans.exchange +/- theorem category_theory.nat_trans.hcomp_app + theorem category_theory.nat_trans.mk_app + theorem category_theory.nat_trans.naturality_lemma +/- theorem category_theory.nat_trans.vcomp_assoc Modified category_theory/opposites.lean Modified category_theory/products.lean Modified category_theory/types.lean 2018-08-27 14:18:50+02:00 e955897 fix(travis.yml): adding a third stage to the travis build (#281) ESTIMATED CHANGES Modified .travis.yml 2018-08-22 19:50:16+02:00 58cfe9f bug(ext): failure on ext lemmas with no hypotheses (#269) ESTIMATED CHANGES Modified tactic/basic.lean Modified tests/tactics.lean + theorem unit.ext 2018-08-22 19:48:06+02:00 d18a3a8 doc(docs/tactics): add information on congr' (#270) [ci-skip] ESTIMATED CHANGES Modified docs/tactics.md 2018-08-22 19:46:57+02:00 0934d7d refactor(data/nat/prime): mem_factors_iff_dvd (#272) ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.dvd_prod Modified data/nat/prime.lean + theorem nat.mem_factors_iff_dvd - theorem nat.mem_factors_of_dvd 2018-08-22 19:37:12+02:00 974987c refactor(data/nat/prime): cleanup exists_infinite_primes (#271) * removing unnecessary initial step * giving names to ambiguous copies of `this` ESTIMATED CHANGES Modified data/nat/prime.lean +/- theorem nat.exists_infinite_primes +/- theorem nat.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul +/- theorem nat.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul_int 2018-08-21 22:05:08+02:00 b3fc801 refactor(data/real/nnreal): derive order structure for ennreal from with_top nnreal ESTIMATED CHANGES Modified algebra/ordered_group.lean + theorem le_add_left + theorem le_add_right - theorem with_bot.bot_lt_some - theorem with_bot.coe_lt_coe + theorem with_top.add_eq_top + theorem with_top.add_lt_add_iff_left - theorem with_top.coe_ne_top - theorem with_top.top_ne_coe + theorem with_top.zero_lt_coe + theorem with_top.zero_lt_top Modified algebra/ordered_ring.lean +/- theorem mul_le_one - theorem option.bind_comm + theorem with_top.coe_mul - theorem with_top.coe_mul_coe - theorem with_top.none_eq_top - theorem with_top.some_eq_coe + theorem with_top.top_mul_top Modified analysis/ennreal.lean - theorem ennreal.Inf_add - theorem ennreal.add_infi - theorem ennreal.coe_eq_coe + theorem ennreal.coe_image_univ_mem_nhds - theorem ennreal.coe_mul + theorem ennreal.coe_nat - theorem ennreal.coe_one + theorem ennreal.continuous_coe - theorem ennreal.continuous_of_real + theorem ennreal.embedding_coe - theorem ennreal.exists_pos_sum_of_encodable - theorem ennreal.infi_add - theorem ennreal.infi_add_infi - theorem ennreal.infi_of_real - theorem ennreal.infi_sum + theorem ennreal.is_open_ne_top + theorem ennreal.nhds_coe + theorem ennreal.nhds_coe_coe - theorem ennreal.nhds_of_real_eq_map_of_real_nhds - theorem ennreal.nhds_of_real_eq_map_of_real_nhds_nonneg - theorem ennreal.sub_infi +/- theorem ennreal.sub_supr - theorem ennreal.supr_of_real + theorem ennreal.tendsto_coe - theorem ennreal.tendsto_coe_iff + theorem ennreal.tendsto_nhds_top - theorem ennreal.tendsto_of_ennreal - theorem ennreal.tendsto_of_real - theorem ennreal.tendsto_of_real_iff + theorem ennreal.tendsto_to_nnreal +/- theorem has_sum_of_nonneg_of_le + theorem nnreal.exists_le_is_sum_of_le +/- theorem nnreal.has_sum_of_le + theorem topological_space.nhds_swap + theorem topological_space.prod_mem_nhds_sets + theorem topological_space.tendsto_nhds_generate_from + theorem topological_space.tendsto_prod_mk_nhds Modified analysis/limits.lean + theorem ennreal.exists_pos_sum_of_encodable + theorem nnreal.exists_pos_sum_of_encodable Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/nnreal.lean + theorem nnreal.continuous_coe + theorem nnreal.continuous_of_real + theorem nnreal.tendsto_of_real + theorem nnreal.tendsto_sub + theorem nnreal.tsum_coe Modified analysis/probability_mass_function.lean Modified analysis/topology/continuity.lean +/- theorem embedding.tendsto_nhds_iff Modified data/option.lean + theorem option.bind_comm Modified data/real/basic.lean + theorem real.Inf_empty + theorem real.Inf_of_not_bdd_below + theorem real.Sup_empty + theorem real.Sup_of_not_bdd_above +/- def real.of_rat Modified data/real/ennreal.lean + theorem ennreal.Inf_add + theorem ennreal.add_eq_top + theorem ennreal.add_infi - theorem ennreal.add_infty + theorem ennreal.add_lt_add_iff_left +/- theorem ennreal.add_sub_self + theorem ennreal.add_top + theorem ennreal.bot_eq_zero + theorem ennreal.coe_Inf + theorem ennreal.coe_Sup + theorem ennreal.coe_add + theorem ennreal.coe_eq_coe + theorem ennreal.coe_eq_one + theorem ennreal.coe_eq_zero + theorem ennreal.coe_finset_prod + theorem ennreal.coe_finset_sum + theorem ennreal.coe_le_coe + theorem ennreal.coe_le_iff + theorem ennreal.coe_le_one_iff + theorem ennreal.coe_lt_coe + theorem ennreal.coe_lt_one_iff + theorem ennreal.coe_lt_top + theorem ennreal.coe_mem_upper_bounds + theorem ennreal.coe_mul + theorem ennreal.coe_ne_top + theorem ennreal.coe_one + theorem ennreal.coe_sub + theorem ennreal.coe_to_nnreal + theorem ennreal.coe_zero + theorem ennreal.div_def + theorem ennreal.div_le_iff_le_mul +/- theorem ennreal.forall_ennreal + theorem ennreal.infi_add + theorem ennreal.infi_add_infi + theorem ennreal.infi_sum - theorem ennreal.infty_add - theorem ennreal.infty_le_iff - theorem ennreal.infty_mem_upper_bounds - theorem ennreal.infty_mul - theorem ennreal.infty_mul_of_real - theorem ennreal.infty_ne_of_real - theorem ennreal.infty_ne_zero - theorem ennreal.infty_sub_of_real + theorem ennreal.inv_coe + theorem ennreal.inv_eq_top + theorem ennreal.inv_eq_zero - theorem ennreal.inv_infty +/- theorem ennreal.inv_inv + theorem ennreal.inv_le_iff_le_mul + theorem ennreal.inv_ne_top + theorem ennreal.inv_ne_zero - theorem ennreal.inv_of_real + theorem ennreal.inv_top - theorem ennreal.is_lub_of_real - theorem ennreal.le_add_left - theorem ennreal.le_add_right + theorem ennreal.le_coe_iff - theorem ennreal.le_def + theorem ennreal.le_div_iff_mul_le - theorem ennreal.le_infty + theorem ennreal.le_inv_iff_mul_le +/- theorem ennreal.le_of_forall_epsilon_le - theorem ennreal.le_of_real_iff - theorem ennreal.le_zero_iff_eq +/- theorem ennreal.lt_add_right + theorem ennreal.lt_iff_exists_coe - theorem ennreal.lt_iff_exists_of_real + theorem ennreal.mul_eq_mul_left - theorem ennreal.mul_infty - theorem ennreal.mul_le_mul + theorem ennreal.mul_le_mul_left + theorem ennreal.mul_top + theorem ennreal.none_eq_top - theorem ennreal.not_infty_lt +/- theorem ennreal.not_lt_zero + theorem ennreal.not_top_le_coe - def ennreal.of_ennreal - theorem ennreal.of_ennreal_of_real - theorem ennreal.of_nonneg_real_eq_of_real - def ennreal.of_real - theorem ennreal.of_real_add - theorem ennreal.of_real_add_le - theorem ennreal.of_real_eq_of_real_of - theorem ennreal.of_real_eq_one_iff - theorem ennreal.of_real_eq_zero_iff - theorem ennreal.of_real_le_of_real - theorem ennreal.of_real_le_of_real_iff - theorem ennreal.of_real_lt_infty - theorem ennreal.of_real_lt_of_real_iff - theorem ennreal.of_real_lt_of_real_iff_cases - theorem ennreal.of_real_mem_upper_bounds - theorem ennreal.of_real_mul_infty - theorem ennreal.of_real_mul_of_real - theorem ennreal.of_real_ne_infty - theorem ennreal.of_real_ne_of_real_of - theorem ennreal.of_real_of_ennreal - theorem ennreal.of_real_of_nonpos - theorem ennreal.of_real_of_not_nonneg - theorem ennreal.of_real_one - theorem ennreal.of_real_sub_of_real - theorem ennreal.of_real_zero + theorem ennreal.one_eq_coe - theorem ennreal.one_eq_of_real_iff + theorem ennreal.one_le_coe_iff - theorem ennreal.one_le_of_real_iff + theorem ennreal.one_lt_zero_iff + theorem ennreal.one_ne_top + theorem ennreal.some_eq_coe +/- theorem ennreal.sub_add_cancel_of_le + theorem ennreal.sub_infi - theorem ennreal.sum_of_real + theorem ennreal.supr_sub + theorem ennreal.to_nnreal_coe + theorem ennreal.top_add + theorem ennreal.top_mem_upper_bounds + theorem ennreal.top_mul + theorem ennreal.top_mul_top + theorem ennreal.top_ne_coe + theorem ennreal.top_ne_one + theorem ennreal.top_ne_zero + theorem ennreal.top_sub_coe + theorem ennreal.top_to_nnreal + theorem ennreal.zero_eq_coe - theorem ennreal.zero_eq_of_real_iff - theorem ennreal.zero_le_of_ennreal + theorem ennreal.zero_lt_coe_iff - theorem ennreal.zero_lt_of_real_iff - theorem ennreal.zero_ne_infty + theorem ennreal.zero_ne_top Modified data/real/nnreal.lean + theorem inv_eq_zero + theorem nnreal.add_sub_cancel' + theorem nnreal.add_sub_cancel + theorem nnreal.bdd_above_coe + theorem nnreal.bdd_below_coe + theorem nnreal.coe_Inf + theorem nnreal.coe_Sup + theorem nnreal.coe_of_real + theorem nnreal.div_def + theorem nnreal.inv_eq_zero + theorem nnreal.inv_inv + theorem nnreal.inv_le + theorem nnreal.inv_le_of_le_mul + theorem nnreal.inv_mul_cancel + theorem nnreal.inv_pos + theorem nnreal.inv_zero + theorem nnreal.le_inv_iff_mul_le + theorem nnreal.le_of_forall_epsilon_le + theorem nnreal.lt_iff_exists_rat_btwn + theorem nnreal.mul_eq_mul_left + theorem nnreal.mul_inv_cancel + theorem nnreal.of_real_add_le + theorem nnreal.of_real_add_of_real + theorem nnreal.of_real_coe + theorem nnreal.of_real_le_of_real + theorem nnreal.of_real_le_of_real_iff + theorem nnreal.of_real_of_nonpos + theorem nnreal.of_real_zero + theorem nnreal.prod_coe + theorem nnreal.smul_coe + theorem nnreal.sub_add_cancel_of_le + theorem nnreal.sub_eq_zero + theorem nnreal.sub_le_iff_le_add +/- theorem nnreal.sum_coe + theorem nnreal.zero_le_coe + theorem nnreal.zero_lt_of_real + theorem set.image_eq_empty Modified order/bounded_lattice.lean + theorem with_bot.bot_lt_coe + theorem with_bot.bot_lt_some + theorem with_bot.coe_eq_coe + theorem with_bot.coe_lt_coe + theorem with_bot.none_eq_bot + theorem with_bot.some_eq_coe + theorem with_top.coe_eq_coe + theorem with_top.coe_le_iff + theorem with_top.coe_lt_coe + theorem with_top.coe_lt_top + theorem with_top.coe_ne_top + theorem with_top.le_coe_iff + theorem with_top.lt_iff_exists_coe + theorem with_top.none_eq_top + theorem with_top.not_top_le_coe + theorem with_top.some_eq_coe + theorem with_top.top_ne_coe Modified order/conditionally_complete_lattice.lean - theorem bdd_above_bot + theorem bdd_below_bot + theorem lattice.cSup_empty + theorem with_top.coe_Inf + theorem with_top.coe_Sup + theorem with_top.has_glb + theorem with_top.has_lub + theorem with_top.is_glb_Inf + theorem with_top.is_lub_Sup Modified order/filter.lean + theorem filter.tendsto_map'_iff Modified order/galois_connection.lean 2018-08-21 21:22:03+02:00 82512ee refactor(analysis/ennreal): use canonically_ordered_comm_semiring (with_top α) ESTIMATED CHANGES Modified algebra/ordered_group.lean + theorem with_top.add_top + theorem with_top.coe_add + theorem with_top.coe_ne_top + theorem with_top.top_add + theorem with_top.top_ne_coe Modified algebra/ordered_ring.lean + theorem canonically_ordered_semiring.mul_le_mul + theorem option.bind_comm + theorem with_top.coe_eq_zero + theorem with_top.coe_mul_coe + theorem with_top.coe_zero + theorem with_top.mul_coe + theorem with_top.mul_def + theorem with_top.mul_top + theorem with_top.none_eq_top + theorem with_top.some_eq_coe + theorem with_top.top_mul + theorem with_top.top_ne_zero + theorem with_top.zero_eq_coe + theorem with_top.zero_ne_top Modified data/real/ennreal.lean +/- theorem ennreal.infty_ne_of_real +/- theorem ennreal.infty_ne_zero +/- theorem ennreal.of_real_ne_infty +/- theorem ennreal.zero_ne_infty + def ennreal - inductive ennreal Modified data/real/nnreal.lean 2018-08-21 21:22:03+02:00 6f31637 refactor(analysis/nnreal): split up into data.real and analysis part ESTIMATED CHANGES Modified analysis/nnreal.lean - theorem nnreal.sum_coe - def nnreal Added data/real/nnreal.lean + theorem nnreal.sum_coe + def nnreal 2018-08-21 21:22:03+02:00 ca1b2d1 refactor(analysis/measure_theory/measurable_space): derive complete lattice structure from Galois insertion ESTIMATED CHANGES Modified analysis/measure_theory/measurable_space.lean + theorem measurable_space.generate_from_le_iff + def measurable_space.gi_generate_from + theorem measurable_space.is_measurable_bot_iff + theorem measurable_space.is_measurable_top + theorem measurable_space.mk_of_closure_sets Modified analysis/measure_theory/measure_space.lean Modified analysis/topology/continuity.lean 2018-08-18 12:55:12+02:00 29ad1c8 feat(order/complete_lattice): add rewrite rules for Inf/Sup/infi/supr for pi and Prop ESTIMATED CHANGES Modified order/complete_lattice.lean + theorem lattice.Inf_Prop_eq + theorem lattice.Inf_apply + theorem lattice.Sup_Prop_eq + theorem lattice.Sup_apply + theorem lattice.infi_Prop_eq + theorem lattice.infi_apply + theorem lattice.supr_Prop_eq + theorem lattice.supr_apply 2018-08-18 12:55:12+02:00 202ac15 refactor(analysis/topology/topological_space): simplify proof of nhds_supr using Galois connection ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem gc_nhds + theorem nhds_Sup + theorem nhds_bot +/- theorem nhds_mono +/- theorem nhds_supr + theorem pure_le_nhds - theorem return_le_nhds - theorem sup_eq_generate_from - theorem supr_eq_generate_from Modified analysis/topology/uniform_space.lean 2018-08-18 12:55:12+02:00 6cab92e refactor(analysis/topology/topological_space): derive complete lattice structure from Galois insertion ESTIMATED CHANGES Modified analysis/topology/continuity.lean - theorem coinduced_compose - theorem coinduced_id - theorem induced_compose - theorem induced_id Modified analysis/topology/topological_space.lean + theorem coinduced_compose + theorem coinduced_id + theorem generate_from_le_iff_subset_is_open + def gi_generate_from + theorem induced_compose + theorem induced_id + theorem is_open_fold + theorem is_open_top + theorem mk_of_closure_sets Modified analysis/topology/uniform_space.lean Modified order/galois_connection.lean + theorem galois_insertion.l_u_eq 2018-08-18 12:55:12+02:00 f9434fa refactor(order/filter): derive complete lattice structure from Galois insertion ESTIMATED CHANGES Modified analysis/topology/uniform_space.lean Modified order/filter.lean + theorem filter.Sup_sets_eq + theorem filter.bot_sets_eq + def filter.generate + theorem filter.generate_Union + theorem filter.generate_empty + inductive filter.generate_sets + theorem filter.generate_union + theorem filter.generate_univ + def filter.gi_generate +/- theorem filter.mem_Sup_sets +/- theorem filter.mem_supr_sets + theorem filter.mem_top_sets - theorem filter.mem_top_sets_iff + theorem filter.mem_top_sets_iff_forall + theorem filter.mk_of_closure_sets +/- theorem filter.principal_empty +/- theorem filter.principal_univ + theorem filter.sets_iff_generate + theorem filter.sup_sets_eq + def lattice.complete_lattice.copy 2018-08-18 12:55:12+02:00 a423cc7 refactor(order/filter): simplify filter structure ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/real.lean Modified analysis/topology/continuity.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/analysis/filter.lean Modified order/filter.lean - theorem filter.filter.ext +/- theorem filter.inter_mem_sets + theorem filter.mem_sets_of_superset +/- structure filter Modified order/liminf_limsup.lean 2018-08-18 12:55:12+02:00 849ed4f feat(order/galois_connection): add Galois insertion and lattice lifts along a Galois insertion ESTIMATED CHANGES Modified analysis/measure_theory/measurable_space.lean +/- theorem measurable_space.comap_map_le +/- theorem measurable_space.le_map_comap Modified order/filter.lean +/- theorem filter.le_vmap_map +/- theorem filter.map_vmap_le Modified order/galois_connection.lean - theorem galois_connection.decreasing_l_u - theorem galois_connection.increasing_u_l + theorem galois_connection.l_Sup + theorem galois_connection.l_u_le + theorem galois_connection.le_u_l + def galois_connection.lift_order_bot + theorem galois_connection.u_Inf + def galois_insertion.lift_bounded_lattice + def galois_insertion.lift_complete_lattice + def galois_insertion.lift_lattice + def galois_insertion.lift_order_top + def galois_insertion.lift_semilattice_inf + def galois_insertion.lift_semilattice_sup + structure galois_insertion 2018-08-18 01:02:27-04:00 0ff11df refactor(group_theory/order_of_element): use gpowers instead of range (#265) ESTIMATED CHANGES Modified group_theory/order_of_element.lean +/- theorem exists_pow_eq_one + theorem mem_gpowers_iff_mem_range_order_of - theorem mem_range_gpow_iff_mem_range_order_of + theorem order_eq_card_gpowers - theorem order_eq_card_range_gpow - theorem order_of_ne_zero + theorem order_of_pos 2018-08-18 01:00:59-04:00 29508f2 doc(tactic/solve_by_elim): update doc (#266) [ci-skip] ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean 2018-08-18 01:00:24-04:00 157004c feat(data/list/basic): some more theorems about sublist (#264) ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.erase_diff_erase_sublist_of_sublist Modified data/list/perm.lean + theorem list.erase_subperm + theorem list.erase_subperm_erase 2018-08-18 00:57:52-04:00 dfc9f8e chore(build): prune deleted .lean files and their .olean files ESTIMATED CHANGES Modified .travis.yml 2018-08-18 00:55:17-04:00 cfb27cb feat(category_theory): opposites, and the category of types (#249) ESTIMATED CHANGES Modified category_theory/category.lean Modified category_theory/functor.lean Modified category_theory/functor_category.lean Modified category_theory/natural_transformation.lean Added category_theory/opposites.lean + theorem category_theory.functor.hom_obj + theorem category_theory.functor.hom_pairing_map + theorem category_theory.functor.opposite_map + theorem category_theory.functor.opposite_obj + def category_theory.op Modified category_theory/products.lean +/- theorem category_theory.functor.prod_map +/- theorem category_theory.functor.prod_obj +/- theorem category_theory.nat_trans.prod_app Added category_theory/types.lean + theorem category_theory.functor_to_types.hcomp + theorem category_theory.functor_to_types.map_comp + theorem category_theory.functor_to_types.map_id + theorem category_theory.functor_to_types.naturality + theorem category_theory.functor_to_types.vcomp + theorem category_theory.types_comp + theorem category_theory.types_hom + theorem category_theory.types_id Modified tactic/ext.lean + theorem ulift.ext 2018-08-16 11:32:39-04:00 12d103c fix(padics/padic_norm): remove spurious import ESTIMATED CHANGES Modified data/padics/padic_norm.lean +/- theorem padic_norm.add_eq_max_of_ne +/- theorem padic_val.is_greatest +/- theorem padic_val.le_padic_val_of_pow_div +/- theorem padic_val.min_le_padic_val_add +/- theorem padic_val.spec +/- theorem padic_val.unique +/- def padic_val 2018-08-16 11:31:57-04:00 1bca59b refactor(tactic/basic): simplify definition ESTIMATED CHANGES Modified tactic/basic.lean 2018-08-16 11:23:04-04:00 93817f1 feat(data/padics): p-adic numbers (#262) ESTIMATED CHANGES Modified algebra/archimedean.lean + theorem ceil_nonneg + theorem ceil_pos Added algebra/field_power.lean + def fpow + theorem fpow_add + theorem fpow_eq_gpow + theorem fpow_inv + theorem fpow_le_of_le + theorem fpow_ne_zero_of_ne_zero + theorem fpow_nonneg_of_nonneg + theorem fpow_zero + theorem pow_le_max_of_min_le + theorem unit_pow + theorem zero_fpow + theorem zero_gpow Modified algebra/order_functions.lean + theorem le_of_max_le_left + theorem le_of_max_le_right + theorem max_le_add_of_nonneg + theorem min_add + theorem min_le_add_of_nonneg_left + theorem min_le_add_of_nonneg_right + theorem min_sub Modified algebra/ordered_field.lean + theorem inv_le_one Modified algebra/ordered_ring.lean + theorem mul_le_one Modified data/int/basic.lean + theorem int.dvd_nat_abs_of_of_nat_dvd + theorem int.eq_mul_div_of_mul_eq_mul_of_dvd_left + theorem int.nat_abs_ne_zero_of_ne_zero + theorem int.of_nat_dvd_of_dvd_nat_abs + theorem int.pow_div_of_le_of_pow_div_int Modified data/nat/basic.lean + theorem nat.dvd_div_of_mul_dvd + theorem nat.lt_pow_self + theorem nat.mul_dvd_of_dvd_div + theorem nat.nat.div_mul_div + theorem nat.nat.find_greatest_is_greatest + theorem nat.nat.find_greatest_spec + theorem nat.not_pos_pow_dvd + theorem nat.one_pow + theorem nat.pow_div_of_le_of_pow_div + theorem nat.pow_eq_mul_pow_sub + theorem nat.pow_lt_pow_succ + theorem nat.pow_pos Modified data/nat/prime.lean + theorem nat.prime.ne_zero + theorem nat.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul + theorem nat.succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul_int Added data/padics/padic_integers.lean + def padic_int.add + def padic_int.mul + def padic_int.neg + def padic_int Added data/padics/padic_norm.lean + theorem padic_norm.add_eq_max_of_ne + theorem padic_norm.triangle_ineq + theorem padic_norm.zero_of_padic_norm_eq_zero + def padic_norm + theorem padic_val.is_greatest + theorem padic_val.le_padic_val_of_pow_div + theorem padic_val.min_le_padic_val_add + theorem padic_val.padic_val_self + theorem padic_val.spec + theorem padic_val.unique + def padic_val + theorem padic_val_rat.min_le_padic_val_rat_add + theorem padic_val_rat.padic_val_rat_self + def padic_val_rat Added data/padics/padic_rationals.lean + theorem padic.cast_eq_of_rat + theorem padic.cast_eq_of_rat_of_int + theorem padic.cast_eq_of_rat_of_nat + theorem padic.complete + theorem padic.const_equiv + theorem padic.exi_rat_seq_conv + theorem padic.exi_rat_seq_conv_cauchy + def padic.lim_seq + def padic.mk + theorem padic.mk_eq + def padic.of_rat + theorem padic.of_rat_add + theorem padic.of_rat_div + theorem padic.of_rat_eq + theorem padic.of_rat_mul + theorem padic.of_rat_neg + theorem padic.of_rat_one + theorem padic.of_rat_sub + theorem padic.of_rat_zero + theorem padic.rat_dense + def padic + theorem padic_norm_e.defn + theorem padic_norm_e.eq_padic_norm + theorem padic_norm_e.nonarchimedean + theorem padic_norm_e.sub_rev + theorem padic_norm_e.zero_def + theorem padic_norm_e.zero_iff + def padic_norm_e + theorem padic_seq.eq_zero_iff_equiv_zero + theorem padic_seq.equiv_zero_of_val_eq_of_equiv_zero + theorem padic_seq.ne_zero_iff_nequiv_zero + def padic_seq.norm + theorem padic_seq.norm_const + theorem padic_seq.norm_eq + theorem padic_seq.norm_eq_norm_app_of_nonzero + theorem padic_seq.norm_equiv + theorem padic_seq.norm_image + theorem padic_seq.norm_mul + theorem padic_seq.norm_neg + theorem padic_seq.norm_nonarchimedean + theorem padic_seq.norm_nonneg + theorem padic_seq.norm_nonzero_of_not_equiv_zero + theorem padic_seq.norm_one + theorem padic_seq.norm_zero_iff + theorem padic_seq.not_equiv_zero_const_of_nonzero + theorem padic_seq.not_lim_zero_const_of_nonzero + theorem padic_seq.stationary + def padic_seq.stationary_point + theorem padic_seq.stationary_point_spec + def padic_seq Modified data/rat.lean + theorem rat.denom_ne_zero + theorem rat.denom_neg_eq_denom + theorem rat.mk_denom_ne_zero_of_ne_zero + theorem rat.mk_ne_zero_of_ne_zero + theorem rat.mk_num_ne_zero_of_ne_zero + theorem rat.mul_num_denom + theorem rat.num_denom_mk +/- theorem rat.num_dvd + theorem rat.num_ne_zero_of_ne_zero + theorem rat.num_neg_eq_neg_num + theorem rat.num_zero + theorem rat.zero_of_num_zero Modified data/real/basic.lean - theorem real.inv_mk - theorem real.inv_zero - def real.mk - theorem real.mk_add - theorem real.mk_eq - theorem real.mk_eq_mk - theorem real.mk_eq_zero - theorem real.mk_mul - theorem real.mk_neg +/- def real.of_rat - theorem real.of_rat_add - theorem real.of_rat_mul - theorem real.of_rat_neg - theorem real.of_rat_one - theorem real.of_rat_zero +/- def real Modified data/real/cau_seq.lean + theorem cau_seq.mul_equiv_zero' + theorem cau_seq.mul_equiv_zero + theorem cau_seq.mul_not_equiv_zero + theorem cau_seq.not_lim_zero_of_not_congr_zero + theorem cau_seq.one_not_equiv_zero Added data/real/cau_seq_completion.lean + def cau_seq.completion.Cauchy + theorem cau_seq.completion.cau_seq_zero_ne_one + theorem cau_seq.completion.inv_mk + theorem cau_seq.completion.inv_zero + def cau_seq.completion.mk + theorem cau_seq.completion.mk_add + theorem cau_seq.completion.mk_eq + theorem cau_seq.completion.mk_eq_mk + theorem cau_seq.completion.mk_eq_zero + theorem cau_seq.completion.mk_mul + theorem cau_seq.completion.mk_neg + def cau_seq.completion.of_rat + theorem cau_seq.completion.of_rat_add + theorem cau_seq.completion.of_rat_div + theorem cau_seq.completion.of_rat_inv + theorem cau_seq.completion.of_rat_mul + theorem cau_seq.completion.of_rat_neg + theorem cau_seq.completion.of_rat_one + theorem cau_seq.completion.of_rat_sub + theorem cau_seq.completion.of_rat_zero + theorem cau_seq.completion.zero_ne_one 2018-08-16 07:09:33-04:00 47a377d refactor(group_theory/quotient_group): remove duplicate definition (#259) ESTIMATED CHANGES Modified group_theory/coset.lean - theorem left_cosets.coe_gpow - theorem left_cosets.coe_inv - theorem left_cosets.coe_mul - theorem left_cosets.coe_one - theorem left_cosets.coe_pow - theorem left_cosets.eq_class_eq_left_coset - def left_cosets.mk - def left_cosets - def left_rel + theorem quotient_group.eq_class_eq_left_coset + def quotient_group.left_rel + def quotient_group.mk + def quotient_group.quotient Modified group_theory/group_action.lean +/- theorem is_group_action.orbit_eq_iff Modified group_theory/order_of_element.lean Modified group_theory/quotient_group.lean - theorem group.quotient.injective_ker_lift - def group.quotient.lift - theorem group.quotient.lift_mk' - theorem group.quotient.lift_mk - def group.quotient.mk + theorem quotient_group.coe_gpow + theorem quotient_group.coe_inv + theorem quotient_group.coe_mul + theorem quotient_group.coe_one + theorem quotient_group.coe_pow + theorem quotient_group.injective_ker_lift + def quotient_group.lift + theorem quotient_group.lift_mk' + theorem quotient_group.lift_mk Modified group_theory/subgroup.lean + theorem normal_subgroup_of_comm_group 2018-08-16 06:58:15-04:00 032e21d feat(topological_structures): frontier_lt_subset_eq Based on a suggestion by Luca Gerolla ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem frontier_compl Modified analysis/topology/topological_structures.lean + theorem frontier_lt_subset_eq 2018-08-15 20:54:08-04:00 d468921 fix(tactic/basic): fix build ESTIMATED CHANGES Modified tactic/basic.lean 2018-08-15 20:47:08-04:00 bde2132 feat(category/traversable): derive traversable instances Authors: Simon Hudon, Mario Carneiro ESTIMATED CHANGES Modified category/applicative.lean + theorem applicative.ext +/- theorem applicative.map_seq_map +/- theorem applicative.pure_seq_eq_map' + theorem comp.applicative_comp_id + theorem comp.applicative_id_comp +/- theorem comp.map_pure +/- theorem comp.pure_seq_eq_map +/- theorem comp.seq_assoc +/- theorem comp.seq_pure Modified category/basic.lean + def list.mpartition +/- theorem map_seq +/- def mtry +/- def mzip_with' +/- theorem pure_id'_seq +/- theorem seq_map_assoc +/- def succeeds Modified category/functor.lean + theorem functor.comp.functor_comp_id + theorem functor.comp.functor_id_comp +/- theorem functor.comp.map_mk + def functor.comp.mk + def functor.comp.run + def functor.comp - structure functor.comp + theorem functor.ext Modified category/traversable/basic.lean +/- theorem applicative_transformation.preserves_map +/- theorem applicative_transformation.preserves_pure +/- def sequence Added category/traversable/derive.lean Modified category/traversable/equiv.lean Modified category/traversable/instances.lean - theorem id.comp_traverse - theorem id.id_traverse - theorem id.map_traverse - theorem id.naturality - theorem id.traverse_map +/- theorem list.comp_traverse +/- theorem list.id_traverse - theorem list.map_traverse +/- theorem list.naturality + theorem list.traverse_eq_map_id - theorem list.traverse_map +/- theorem option.comp_traverse +/- theorem option.id_traverse - theorem option.map_traverse +/- theorem option.naturality + theorem option.traverse_eq_map_id - theorem option.traverse_map Modified category/traversable/lemmas.lean +/- theorem traversable.comp_sequence + theorem traversable.map_eq_traverse_id + theorem traversable.map_traverse +/- theorem traversable.naturality' + theorem traversable.naturality_pf +/- def traversable.pure_transformation + theorem traversable.pure_transformation_apply + theorem traversable.pure_traverse - theorem traversable.purity + theorem traversable.traverse_comp + theorem traversable.traverse_eq_map_id' - theorem traversable.traverse_eq_map_ident + theorem traversable.traverse_id + theorem traversable.traverse_map' + theorem traversable.traverse_map Modified data/vector2.lean + def vector.to_array Modified tactic/basic.lean Modified tactic/wlog.lean Modified tests/examples.lean + inductive either + structure my_struct2 + structure my_struct + inductive rec_data3 Modified tests/tactics.lean 2018-08-15 20:29:33-04:00 d288f07 feat(docs/*): Docs theories (#251) Authors: Patrick Massot, Kevin Buzzard, Chris Hughes, Scott Morrison ESTIMATED CHANGES Modified README.md Modified docs/extras.md Added docs/mathlib-overview.md Modified docs/theories.md Added docs/theories/linear_algebra.md Added docs/theories/measure.md Added docs/theories/number_theory.md Added docs/theories/polynomials.md Deleted docs/theories/quotients.md Modified docs/theories/relations.md Modified docs/wip.md 2018-08-15 20:25:34-04:00 5d791c6 feat(data/polynomial): nth_roots (#260) ESTIMATED CHANGES Modified data/polynomial.lean + theorem polynomial.C_add + theorem polynomial.C_mul - theorem polynomial.C_mul_C + theorem polynomial.X_pow_sub_C_ne_zero + theorem polynomial.card_nth_roots + theorem polynomial.card_roots_X_pow_sub_C + theorem polynomial.degree_X_pow + theorem polynomial.degree_X_pow_sub_C + theorem polynomial.eval_pow + theorem polynomial.leading_coeff_X_pow + theorem polynomial.mem_nth_roots 2018-08-15 20:22:47-04:00 6e21c48 feat(data/multiset): count_filter ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.count_filter + theorem list.countp_filter +/- theorem list.filter_filter Modified data/multiset.lean + theorem multiset.count_filter + theorem multiset.countp_filter 2018-08-15 18:43:52-04:00 46229d2 feat(data/multiset): filter_congr, filter_filter ESTIMATED CHANGES Modified data/finset.lean + theorem finset.filter_congr Modified data/list/basic.lean + theorem list.filter_filter Modified data/multiset.lean + theorem multiset.filter_add_filter + theorem multiset.filter_add_not + theorem multiset.filter_congr + theorem multiset.filter_filter 2018-08-15 18:17:20-04:00 4c843f2 refactor(category/basic): move {list,option}.traverse to category.basic ESTIMATED CHANGES Modified category/basic.lean Modified category/traversable/instances.lean Modified tactic/basic.lean 2018-08-15 18:16:17-04:00 1aae37c refactor(tactic/basic): move meta.expr to tactic.basic, cleanup ESTIMATED CHANGES Deleted meta/expr.lean Modified tactic/basic.lean Modified tactic/interactive.lean Modified tactic/rewrite.lean 2018-08-15 18:14:01-04:00 0738d4e feat(tactic/basic): environment.is_structure ESTIMATED CHANGES Modified tactic/basic.lean 2018-08-15 15:47:27-04:00 4a7103d refactor(topology/uniform_space): proof simplification / extension ESTIMATED CHANGES Modified analysis/metric_space.lean - theorem lebesgue_number_lemma + theorem lebesgue_number_lemma_of_metric + theorem lebesgue_number_lemma_of_metric_sUnion Modified analysis/topology/uniform_space.lean - theorem assoc_comp_rel + theorem comp_rel_assoc - theorem lebesgue_entourage_lemma + theorem lebesgue_number_lemma + theorem lebesgue_number_lemma_sUnion 2018-08-15 10:16:37-04:00 b4dc0a5 feat(analysis/metric_space): Lebesgue number lemma for uniform spaces and metric spaces (#237) ESTIMATED CHANGES Modified analysis/metric_space.lean + theorem lebesgue_number_lemma Modified analysis/topology/uniform_space.lean + theorem assoc_comp_rel + theorem lebesgue_entourage_lemma 2018-08-14 13:14:13-04:00 7c1d3b4 refactor(data/equiv/basic): simplify definition of `equiv.of_bijective` ESTIMATED CHANGES Modified data/equiv/basic.lean +/- theorem equiv.of_bijective_to_fun 2018-08-14 16:11:37+02:00 add16e9 feat(order): add order_dual (similar to with_top/with_bot) and dual order instances ESTIMATED CHANGES Modified order/basic.lean - theorem le_dual_eq_le + def order_dual - def partial_order.dual - def preorder.dual Modified order/bounded_lattice.lean Modified order/complete_lattice.lean + theorem lattice.Inf_eq_top + theorem lattice.Sup_eq_bot +/- theorem lattice.infi_const + theorem lattice.infi_eq_bot + theorem lattice.infi_eq_top +/- theorem lattice.infi_top + def lattice.ord_continuous + theorem lattice.ord_continuous_mono + theorem lattice.ord_continuous_sup +/- theorem lattice.supr_bot +/- theorem lattice.supr_const - def ord_continuous - theorem ord_continuous_mono - theorem ord_continuous_sup Modified order/galois_connection.lean Modified order/lattice.lean 2018-08-14 05:14:40-04:00 f81c764 doc(data/rat): todo [ci-skip] ESTIMATED CHANGES Modified data/rat.lean 2018-08-14 05:07:05-04:00 6359010 feat(data/list/perm): subperm_cons_diff and subset_cons_diff (#256) ESTIMATED CHANGES Modified data/list/perm.lean + theorem list.subperm_cons_diff + theorem list.subset_cons_diff 2018-08-14 04:59:55-04:00 e53c2bb perf(data/rat): add more extra typeclass instances ESTIMATED CHANGES Modified data/rat.lean Modified data/real/basic.lean Modified data/real/cau_seq.lean Modified tactic/basic.lean 2018-08-14 01:44:16-04:00 638b7fd feat(set_theory/cardinal): finite lower bound on cardinality ESTIMATED CHANGES Modified data/fintype.lean + theorem fintype.card_coe Modified data/set/finite.lean + theorem set.finite.exists_finset Modified set_theory/cardinal.lean + theorem cardinal.card_le_of_finset 2018-08-14 01:42:29-04:00 9699f8d feat(data/multiset): some more theorems about diagonal ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.diagonal_coe' +/- theorem multiset.diagonal_coe + theorem multiset.diagonal_cons + theorem multiset.diagonal_zero + theorem multiset.revzip_powerset_aux' +/- theorem multiset.revzip_powerset_aux - theorem multiset.revzip_powerset_aux_eq_map + theorem multiset.revzip_powerset_aux_lemma + theorem multiset.revzip_powerset_aux_perm_aux' Modified data/pfun.lean 2018-08-14 01:41:49-04:00 d016186 fix(tactic/norm_num): make norm_num only apply to current goal ESTIMATED CHANGES Modified tactic/norm_num.lean 2018-08-13 07:53:08-04:00 8692959 feat(data/list/basic): diff_sublist_of_sublist ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.diff_sublist_of_sublist 2018-08-13 11:25:34+02:00 4bc2287 fix(.): fix up ext usages (c.f. 7cfc299fcdcae715dc0ac33cba0cd1aefa9777cd) ESTIMATED CHANGES Modified data/buffer/basic.lean Modified data/polynomial.lean Modified tests/tactics.lean 2018-08-13 03:50:00-04:00 89d71ad fix(tactic/basic): make `try_intros` not fail given too few names ESTIMATED CHANGES Modified tactic/basic.lean 2018-08-13 03:05:01-04:00 9ea9324 fix(category/basic): change "try" to "mtry" ESTIMATED CHANGES Modified category/applicative.lean Modified category/basic.lean + def mtry - def try Modified tactic/converter/old_conv.lean 2018-08-13 02:53:31-04:00 7714632 fix(category/basic): fix build ESTIMATED CHANGES Modified category/basic.lean +/- def try 2018-08-13 02:46:45-04:00 7cfc299 refactor(tactic/interactive): minor cleanup, change `ext` notation ESTIMATED CHANGES Modified category/basic.lean + def succeeds + def try Modified data/real/basic.lean Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/converter/old_conv.lean Modified tactic/ext.lean Modified tactic/replacer.lean 2018-08-12 08:52:56-04:00 522d3ea refactor(data/list/basic): simplify proof ESTIMATED CHANGES Modified data/list/basic.lean +/- theorem list.mem_diff_of_mem 2018-08-12 17:09:22+10:00 26ef0a0 feat(data/list/basic): diff_subset and mem_diff_of_mem ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.diff_subset + theorem list.mem_diff_of_mem 2018-08-11 03:59:51-04:00 6bf879d fix(category_theory): consistent use of coercions, consistent naming (#248) ESTIMATED CHANGES Modified category_theory/functor.lean +/- theorem category_theory.functor.comp_obj Modified category_theory/products.lean - theorem category_theory.prod.category.comp - def category_theory.prod.category.fst - theorem category_theory.prod.category.id - def category_theory.prod.category.inl - def category_theory.prod.category.inr - def category_theory.prod.category.snd + def category_theory.prod.fst + def category_theory.prod.inl + def category_theory.prod.inr + def category_theory.prod.snd + theorem category_theory.prod_comp + theorem category_theory.prod_id 2018-08-10 14:02:33-04:00 e34fec8 fix(tests/examples): fix test ESTIMATED CHANGES Modified tests/examples.lean 2018-08-10 12:44:38-04:00 57194fa fix(tactic/wlog): fix issue causing segfault ESTIMATED CHANGES Modified algebra/ring.lean Modified data/stream/basic.lean Modified logic/relation.lean Modified tactic/wlog.lean 2018-08-10 12:44:38-04:00 a679c98 refactor(data/multiset): shorten proof ESTIMATED CHANGES Modified data/multiset.lean 2018-08-10 10:05:03-04:00 24aeeaf feat(data/zmod): integers mod n (#159) ESTIMATED CHANGES Modified data/int/basic.lean + theorem int.coe_nat_ne_zero_iff_pos + theorem int.coe_nat_nonneg + theorem int.mod_mod Modified data/int/modeq.lean +/- theorem int.modeq.coe_nat_modeq_iff Added data/zmod.lean + theorem zmod.add_val + theorem zmod.card_zmod + theorem zmod.cast_mod_int + theorem zmod.cast_mod_nat + theorem zmod.cast_self_eq_zero + theorem zmod.cast_val + theorem zmod.eq_iff_modeq_int + theorem zmod.eq_iff_modeq_nat + theorem zmod.mk_eq_cast + theorem zmod.mul_val + theorem zmod.one_val + theorem zmod.val_cast_int + theorem zmod.val_cast_nat + theorem zmod.val_cast_of_lt + theorem zmod.zero_val + def zmod + theorem zmodp.add_val + theorem zmodp.cast_mod_int + theorem zmodp.cast_mod_nat + theorem zmodp.cast_self_eq_zero: + theorem zmodp.cast_val + theorem zmodp.eq_iff_modeq_int + theorem zmodp.eq_iff_modeq_nat + theorem zmodp.gcd_a_modeq + theorem zmodp.mk_eq_cast + theorem zmodp.mul_inv_eq_gcd + theorem zmodp.mul_val + theorem zmodp.one_val + theorem zmodp.val_cast_int + theorem zmodp.val_cast_nat + theorem zmodp.val_cast_of_lt + theorem zmodp.zero_val + def zmodp 2018-08-10 09:44:20-04:00 e1312b4 feat(group_theory/perm): signatures of permutations (#231) ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem is_group_anti_hom.prod +/- theorem is_group_hom.prod Modified algebra/group.lean + def is_conj + theorem is_conj_iff_eq + theorem is_conj_refl + theorem is_conj_symm + theorem is_conj_trans Modified data/equiv/basic.lean +/- theorem equiv.inverse_trans_apply + theorem equiv.refl_trans + theorem equiv.swap_inv + theorem equiv.symm_trans + theorem equiv.symm_trans_swap_trans + theorem equiv.trans_refl + theorem equiv.trans_symm Modified data/fin.lean Modified data/finset.lean + def finset.attach_fin + theorem finset.card_attach_fin + theorem finset.eq_empty_iff_forall_not_mem + theorem finset.mem_attach_fin + theorem finset.mem_sort Modified data/fintype.lean + theorem fintype.card_units_int Modified data/multiset.lean + theorem multiset.mem_sort Added group_theory/perm.lean + theorem equiv.perm.eq_sign_of_surjective_hom + def equiv.perm.fin_pairs_lt + theorem equiv.perm.is_conj_swap + def equiv.perm.is_swap + theorem equiv.perm.mem_fin_pairs_lt + def equiv.perm.sign + def equiv.perm.sign_aux2 + def equiv.perm.sign_aux3 + theorem equiv.perm.sign_aux3_mul_and_swap + def equiv.perm.sign_aux + theorem equiv.perm.sign_aux_eq_sign_aux2 + theorem equiv.perm.sign_aux_inv + theorem equiv.perm.sign_aux_mul + theorem equiv.perm.sign_aux_one + theorem equiv.perm.sign_aux_swap + def equiv.perm.sign_bij_aux + theorem equiv.perm.sign_bij_aux_inj + theorem equiv.perm.sign_bij_aux_mem + theorem equiv.perm.sign_bij_aux_surj + theorem equiv.perm.sign_eq_of_is_swap + theorem equiv.perm.sign_swap + theorem equiv.perm.support_swap_mul + def equiv.perm.swap_factors + def equiv.perm.swap_factors_aux + theorem equiv.perm.swap_mul_swap_mul_swap + def equiv.perm.trunc_swap_factors 2018-08-10 09:14:19-04:00 251a8c3 feat(tactic/assoc_rewrite): new tactic for implicitly applying associativity before rewriting (#228) ESTIMATED CHANGES Modified docs/tactics.md Added tactic/rewrite.lean Modified tests/tactics.lean 2018-08-10 09:07:20-04:00 ff25083 feat(data/list/basic): nil_diff and diff_sublist (#235) ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.diff_sublist + theorem list.nil_diff + def list.reverse_rec_on - theorem list.reverse_rec_on 2018-08-10 09:06:41-04:00 26ef419 feat(data/fintype): fintype and decidable_eq for partial functions (#236) ESTIMATED CHANGES Modified data/fintype.lean Modified logic/function.lean 2018-08-10 09:04:15-04:00 e2521c3 feat(data/set/finite): card_image_of_injective and other minor lemmas (#245) ESTIMATED CHANGES Modified data/finset.lean + theorem finset.coe_ssubset Modified data/set/basic.lean + theorem set.ssubset_iff_subset_not_subset Modified data/set/finite.lean + theorem finset.coe_to_finset' + theorem set.card_image_of_inj_on + theorem set.card_image_of_injective + theorem set.card_lt_card 2018-08-10 08:52:34-04:00 d400510 feat(data/nat/binomial): the binomial theorem (#214) ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_range_succ' + theorem finset.prod_range_succ + theorem finset.sum_range_succ' Added data/nat/binomial.lean + theorem add_pow 2018-08-10 08:50:52-04:00 54ce15b refactor(ring_theory/ideals): avoid using type class inference for setoids in quotient rings and groups (#212) ESTIMATED CHANGES Modified algebra/group_power.lean + theorem is_group_hom.gpow + theorem is_group_hom.pow Modified data/quot.lean + theorem quotient.exact' + theorem quotient.mk_out' + theorem quotient.out_eq' + theorem quotient.sound' Modified group_theory/coset.lean + theorem left_cosets.coe_gpow + theorem left_cosets.coe_inv + theorem left_cosets.coe_mul + theorem left_cosets.coe_one + theorem left_cosets.coe_pow +/- theorem left_cosets.eq_class_eq_left_coset + def left_cosets.mk Modified ring_theory/ideals.lean - theorem is_ideal.exists_inv - def is_ideal.quotient - theorem is_ideal.quotient_eq_zero_iff_mem - def is_ideal.quotient_rel + def is_ideal.trivial + theorem quotient_ring.coe_add + theorem quotient_ring.coe_mul + theorem quotient_ring.coe_neg + theorem quotient_ring.coe_one + theorem quotient_ring.coe_pow + theorem quotient_ring.coe_sub + theorem quotient_ring.coe_zero + theorem quotient_ring.eq_zero_iff_mem + theorem quotient_ring.exists_inv + def quotient_ring.mk + def quotient_ring.quotient + def quotient_ring.quotient_rel 2018-08-10 07:12:29-04:00 5b9914b style(group_theory/quotient_group): code style ESTIMATED CHANGES Modified group_theory/quotient_group.lean +/- def group.quotient.lift +/- theorem group.quotient.lift_mk' +/- theorem group.quotient.lift_mk 2018-08-10 07:05:33-04:00 d279ddb feat(group_theory): adding basic theory of quotient groups ESTIMATED CHANGES Added group_theory/quotient_group.lean + theorem group.quotient.injective_ker_lift + def group.quotient.lift + theorem group.quotient.lift_mk' + theorem group.quotient.lift_mk + def group.quotient.mk 2018-08-10 07:04:00-04:00 0f42b27 feat(group_theory/submonoid,subgroup): merge with add_* versions ESTIMATED CHANGES Modified algebra/group.lean Deleted group_theory/add_subgroup.lean - def add_group.closure - theorem add_group.closure_subset - theorem add_group.gmultiples_eq_closure - inductive add_group.in_closure - theorem add_group.mem_closure - theorem add_group.subset_closure - def gmultiples - theorem injective_add - theorem is_add_subgroup.add_mem_cancel_left - theorem is_add_subgroup.add_mem_cancel_right - def is_add_subgroup.center - theorem is_add_subgroup.gsmul_mem - theorem is_add_subgroup.mem_center - theorem is_add_subgroup.mem_norm_comm - theorem is_add_subgroup.mem_norm_comm_iff - theorem is_add_subgroup.mem_trivial - theorem is_add_subgroup.neg_mem_iff - theorem is_add_subgroup.of_sub - def is_add_subgroup.trivial - theorem is_add_subgroup.trivial_eq_closure - theorem mem_gmultiples Deleted group_theory/add_submonoid.lean - def add_monoid.closure - theorem add_monoid.closure_subset - theorem add_monoid.exists_list_of_mem_closure - inductive add_monoid.in_closure - theorem add_monoid.subset_closure - theorem is_add_submonoid.list_sum_mem - theorem is_add_submonoid.multiple_subset - theorem is_add_submonoid.smul_mem - def multiples Modified group_theory/subgroup.lean + def add_group.closure + theorem add_group.closure_subset + theorem add_group.gmultiples_eq_closure + theorem add_group.mem_closure + theorem additive.is_add_subgroup_iff + theorem additive.normal_add_subgroup_iff + def gmultiples +/- theorem group.subset_closure + def is_add_subgroup.center + theorem is_add_subgroup.gsmul_mem + theorem is_add_subgroup.of_sub + def is_add_subgroup.trivial +/- theorem is_subgroup.mem_center +/- theorem is_subgroup.mem_norm_comm +/- theorem is_subgroup.mem_norm_comm_iff +/- theorem is_subgroup.of_div + theorem mem_gmultiples +/- theorem mem_gpowers + theorem multiplicative.is_subgroup_iff + theorem multiplicative.normal_subgroup_iff Modified group_theory/submonoid.lean + def add_monoid.closure + theorem add_monoid.closure_subset + theorem add_monoid.exists_list_of_mem_closure + theorem add_monoid.subset_closure + theorem additive.is_add_submonoid_iff + theorem is_add_submonoid.multiple_subset + theorem is_add_submonoid.smul_mem +/- theorem is_submonoid.pow_mem + def multiples + theorem multiplicative.is_submonoid_iff 2018-08-10 07:04:00-04:00 1d5dd0d feat(group_theory): adding add_subgroup and add_submonoid ESTIMATED CHANGES Added group_theory/add_subgroup.lean + def add_group.closure + theorem add_group.closure_subset + theorem add_group.gmultiples_eq_closure + inductive add_group.in_closure + theorem add_group.mem_closure + theorem add_group.subset_closure + def gmultiples + theorem injective_add + theorem is_add_subgroup.add_mem_cancel_left + theorem is_add_subgroup.add_mem_cancel_right + def is_add_subgroup.center + theorem is_add_subgroup.gsmul_mem + theorem is_add_subgroup.mem_center + theorem is_add_subgroup.mem_norm_comm + theorem is_add_subgroup.mem_norm_comm_iff + theorem is_add_subgroup.mem_trivial + theorem is_add_subgroup.neg_mem_iff + theorem is_add_subgroup.of_sub + def is_add_subgroup.trivial + theorem is_add_subgroup.trivial_eq_closure + theorem mem_gmultiples Added group_theory/add_submonoid.lean + def add_monoid.closure + theorem add_monoid.closure_subset + theorem add_monoid.exists_list_of_mem_closure + inductive add_monoid.in_closure + theorem add_monoid.subset_closure + theorem is_add_submonoid.list_sum_mem + theorem is_add_submonoid.multiple_subset + theorem is_add_submonoid.smul_mem + def multiples 2018-08-10 05:37:13-04:00 e1d92c2 fix(tactic/replacer): fix tests ESTIMATED CHANGES Modified tactic/replacer.lean Modified tests/replacer.lean 2018-08-09 12:09:07-04:00 bf3dde1 refactor(set_theory/cardinal): remove noncomputable theory ESTIMATED CHANGES Modified set_theory/cardinal.lean - def cardinal.min - def cardinal.succ - def cardinal.sup 2018-08-09 12:09:07-04:00 a995a3a perf(tactic/replacer): use if instead of match ESTIMATED CHANGES Modified tactic/replacer.lean 2018-08-09 12:06:27-04:00 55c2cfd fix(docs/theories/integers): typo pointed out by Bryan Gin-ge Chen (#244) ESTIMATED CHANGES Modified docs/theories/integers.md 2018-08-09 02:41:57-04:00 a52c240 doc(replacer): documentation and test (#243) ESTIMATED CHANGES Modified category_theory/category.lean Modified docs/tactics.md Added tests/replacer.lean 2018-08-08 14:39:58-04:00 a917810 refactor(tactic/interactive): merge rcases_hint -> rcases? ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean - structure tactic.interactive.rcases_config 2018-08-08 10:51:30-04:00 8a19a98 feat(tactic/replacer): replaceable tactics ESTIMATED CHANGES Modified tactic/interactive.lean Added tactic/replacer.lean 2018-08-08 06:57:37-04:00 732ec0e feat(tactic/rcases): rcases_hint, rintro_hint ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean + structure tactic.interactive.rcases_config - def tactic.interactive.rcases_patt_inverted Modified tactic/rcases.lean + def tactic.merge_list - def tactic.rcases_patt.name - inductive tactic.rcases_patt 2018-08-08 00:44:37-04:00 fe7cd33 refactor(category_theory/products): tweak PR after merge ESTIMATED CHANGES Modified analysis/nnreal.lean + def nnreal Modified category_theory/functor.lean + def category_theory.functor.comp Modified category_theory/functor_category.lean + theorem category_theory.functor.category.comp_app + theorem category_theory.functor.category.id_app + theorem category_theory.functor.category.nat_trans.app_naturality + theorem category_theory.functor.category.nat_trans.naturality_app - theorem category_theory.functor_category.comp_app - theorem category_theory.functor_category.id_app - theorem category_theory.functor_category.nat_trans.app_naturality - theorem category_theory.functor_category.nat_trans.naturality_app Modified category_theory/natural_transformation.lean +/- theorem category_theory.nat_trans.exchange + def category_theory.nat_trans.hcomp + def category_theory.nat_trans.vcomp Modified category_theory/products.lean + def category_theory.functor.prod + theorem category_theory.functor.prod_map + theorem category_theory.functor.prod_obj - theorem category_theory.functor.product_map - theorem category_theory.functor.product_obj + def category_theory.nat_trans.prod + theorem category_theory.nat_trans.prod_app - theorem category_theory.nat_trans.product_app + theorem category_theory.prod.category.comp + def category_theory.prod.category.fst + theorem category_theory.prod.category.id + def category_theory.prod.category.inl + def category_theory.prod.category.inr + def category_theory.prod.category.snd - theorem category_theory.product_category.comp - theorem category_theory.product_category.id Modified order/bounds.lean + def is_glb + def is_greatest + def is_least + def is_lub + def lower_bounds + def upper_bounds Modified tactic/basic.lean 2018-08-08 00:32:10-04:00 02cf7a6 feat(category_theory): product categories and functor categories (#239) ESTIMATED CHANGES Added category_theory/functor_category.lean + theorem category_theory.functor_category.comp_app + theorem category_theory.functor_category.id_app + theorem category_theory.functor_category.nat_trans.app_naturality + theorem category_theory.functor_category.nat_trans.naturality_app Added category_theory/products.lean + theorem category_theory.functor.product_map + theorem category_theory.functor.product_obj + theorem category_theory.nat_trans.product_app + theorem category_theory.product_category.comp + theorem category_theory.product_category.id 2018-08-08 00:29:39-04:00 47a6a6f fix(tactic/interactive): try_for should fail if the tactic fails ESTIMATED CHANGES Modified tactic/interactive.lean 2018-08-08 00:29:39-04:00 417f29a fix(linear_algebra/multivariate_polynomial): remove some @[simp] ESTIMATED CHANGES Modified linear_algebra/multivariate_polynomial.lean +/- theorem mv_polynomial.C_mul_monomial +/- theorem mv_polynomial.eval_monomial +/- theorem mv_polynomial.eval₂_mul_monomial 2018-08-07 20:28:50-04:00 bd7f1b0 feat(data/fintype): injective_iff_surjective (#240) ESTIMATED CHANGES Modified data/fintype.lean +/- theorem fintype.card_le_of_injective + theorem fintype.injective_iff_surjective + theorem fintype.injective_iff_surjective_of_equiv 2018-08-07 06:43:17-04:00 9b1be73 feat(category_theory): basic definitions (#152) * feat(category_theory): basic definitions * fixing formatting in documentation * corrections from review * removing second ematch attribute on associativity_lemma * being slightly more careful about variables (I don't think there were any actual errors, but I was sometimes using an argument when there was a variable of the same name available.) * fix(notation): transformation components Using `@>` per @rwbarton's suggestion. * fix(notation): more conventional notation for composition * adjusting namespaces, capitalisation, and headers * move functor/default.lean to functor.lean (Later PRs will add more files to the functor/ directory, but that can wait.) * oops * fixing indentation * namespace for instances * removing unnecessary `@>` notation for natural transformations * renaming, namespacing, and removing a spurious attribute * better naming, namespaces, and coercions * updating documentation * renaming id * reordering definitions * rfl lemmas for has_one * formatting * formatting * renaming: snake_case * renaming coe rfl lemmas * functoriality -> map_comp * rfl lemmas for identity C and identity F (reducing both to `1`) * renaming ext lemma to `ext` * rename `natural_transformation` to `nat_trans` * rename `make_lemma` to `restate_axiom` * renaming nat_trans.components to nat_trans.app * oops, fix import * adding doc_comments, and `protected` * formatting * removing `has_one` instances, per zulip chat, and adding a `vcomp.assoc` lemma * removing the attribute that `restate_axiom` used to add (it was causing a problem on travis, but not locally? anyway it's useless) * fixing names ESTIMATED CHANGES Added category_theory/category.lean + def category_theory.large_category + def category_theory.small_category Added category_theory/functor.lean + theorem category_theory.functor.coe_def + theorem category_theory.functor.comp_map + theorem category_theory.functor.comp_obj + theorem category_theory.functor.id_map + theorem category_theory.functor.id_obj + structure category_theory.functor Added category_theory/natural_transformation.lean + theorem category_theory.nat_trans.coe_def + theorem category_theory.nat_trans.exchange + theorem category_theory.nat_trans.ext + theorem category_theory.nat_trans.hcomp_app + theorem category_theory.nat_trans.id_app + theorem category_theory.nat_trans.vcomp_app + theorem category_theory.nat_trans.vcomp_assoc + structure category_theory.nat_trans Added docs/theories/categories.md Added tactic/restate_axiom.lean 2018-08-07 05:51:20-04:00 235129a feat(linear_algebra/multivariate_polynomial): Add `_sub` and `_neg` lemmas, and make them simp. (#238) ESTIMATED CHANGES Modified linear_algebra/multivariate_polynomial.lean +/- theorem mv_polynomial.C_add +/- theorem mv_polynomial.C_mul + theorem mv_polynomial.C_neg + theorem mv_polynomial.C_sub +/- theorem mv_polynomial.eval_add +/- theorem mv_polynomial.eval_monomial +/- theorem mv_polynomial.eval_mul + theorem mv_polynomial.eval_neg + theorem mv_polynomial.eval_sub +/- theorem mv_polynomial.eval₂_add +/- theorem mv_polynomial.eval₂_monomial +/- theorem mv_polynomial.eval₂_mul_monomial + theorem mv_polynomial.eval₂_neg + theorem mv_polynomial.eval₂_sub + theorem mv_polynomial.map_neg + theorem mv_polynomial.map_sub 2018-08-06 20:05:15-04:00 8dc0393 feat(data/multiset): adding two lemmas about singletons (#234) ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.erase_dup_singleton + theorem multiset.powerset_cons + theorem multiset.powerset_zero + theorem multiset.repeat_one + theorem multiset.repeat_succ + theorem multiset.repeat_zero 2018-08-06 11:05:42-04:00 18bd614 feat(algebra/group_power): adding various cast power lemmas for nat and int (#230) ESTIMATED CHANGES Modified algebra/group_power.lean + theorem int.cast_pow + theorem int.coe_nat_pow + theorem nat.cast_pow Modified data/nat/basic.lean + theorem nat.pow_two 2018-08-06 06:43:02-04:00 cf0bf2a fix(data/seq/wseq): fix build ESTIMATED CHANGES Modified data/seq/wseq.lean 2018-08-06 05:08:26-04:00 8d13bb9 feat(list/basic,multiset): list.revzip, multiset.diagonal ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.forall₂.imp + theorem list.length_revzip + theorem list.length_zip + theorem list.mem_zip + theorem list.reverse_revzip + def list.revzip + theorem list.revzip_map_fst + theorem list.revzip_map_snd + theorem list.revzip_swap + theorem list.unzip_eq_map + theorem list.unzip_left + theorem list.unzip_revzip + theorem list.unzip_right + theorem list.unzip_swap + theorem list.unzip_zip + theorem list.unzip_zip_left + theorem list.unzip_zip_right + theorem list.zip_append + theorem list.zip_map' + theorem list.zip_map + theorem list.zip_map_left + theorem list.zip_map_right + theorem list.zip_swap Modified data/list/perm.lean + theorem list.revzip_sublists' + theorem list.revzip_sublists Modified data/multiset.lean + theorem multiset.card_diagonal +/- theorem multiset.coe_eq_coe + def multiset.diagonal + theorem multiset.diagonal_coe + theorem multiset.diagonal_map_fst + theorem multiset.diagonal_map_snd + theorem multiset.mem_diagonal + theorem multiset.mem_powerset_aux + theorem multiset.revzip_powerset_aux + theorem multiset.revzip_powerset_aux_eq_map + theorem multiset.revzip_powerset_aux_perm Modified data/prod.lean 2018-08-05 22:52:53-04:00 e4b652f refactor(data/real/basic): rename for consistency ESTIMATED CHANGES Modified analysis/real.lean - theorem exists_supremum_real Modified data/real/basic.lean - theorem real.Sup_is_lub Modified data/real/ennreal.lean 2018-08-05 22:50:26-04:00 e7f1103 fix(topology/topological_structures): remove decidability assumption ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean Modified order/basic.lean 2018-08-05 22:48:47-04:00 599df28 feat(linear_algebra/mv_polynomial): composition lemmas ESTIMATED CHANGES Modified linear_algebra/multivariate_polynomial.lean +/- def mv_polynomial.eval +/- theorem mv_polynomial.eval_C +/- theorem mv_polynomial.eval_X +/- theorem mv_polynomial.eval_add + theorem mv_polynomial.eval_assoc +/- theorem mv_polynomial.eval_mul +/- theorem mv_polynomial.eval_zero + def mv_polynomial.eval₂ + theorem mv_polynomial.eval₂_C + theorem mv_polynomial.eval₂_X + theorem mv_polynomial.eval₂_add + theorem mv_polynomial.eval₂_comp_left + theorem mv_polynomial.eval₂_eq_eval_map + theorem mv_polynomial.eval₂_eta + theorem mv_polynomial.eval₂_monomial + theorem mv_polynomial.eval₂_mul + theorem mv_polynomial.eval₂_mul_monomial + theorem mv_polynomial.eval₂_one + theorem mv_polynomial.eval₂_zero +/- def mv_polynomial.map +/- theorem mv_polynomial.map_C +/- theorem mv_polynomial.map_X + theorem mv_polynomial.map_id + theorem mv_polynomial.map_map +/- theorem mv_polynomial.map_one - def mv_polynomial.map₂ - theorem mv_polynomial.map₂_C - theorem mv_polynomial.map₂_X - theorem mv_polynomial.map₂_add - theorem mv_polynomial.map₂_monomial - theorem mv_polynomial.map₂_mul - theorem mv_polynomial.map₂_mul_monomial - theorem mv_polynomial.map₂_one - theorem mv_polynomial.map₂_zero 2018-08-04 19:53:15-04:00 2d0eb8c feat(linear_algebra/mv_polynomial): map function, map2 ESTIMATED CHANGES Modified data/finsupp.lean + theorem finsupp.map_range_single Modified linear_algebra/multivariate_polynomial.lean + theorem mv_polynomial.C_add + theorem mv_polynomial.C_mul +/- def mv_polynomial.eval +/- theorem mv_polynomial.eval_C +/- theorem mv_polynomial.eval_X +/- theorem mv_polynomial.eval_add +/- theorem mv_polynomial.eval_mul - theorem mv_polynomial.eval_mul_monomial +/- theorem mv_polynomial.eval_zero + def mv_polynomial.map + theorem mv_polynomial.map_C + theorem mv_polynomial.map_X + theorem mv_polynomial.map_add + theorem mv_polynomial.map_monomial + theorem mv_polynomial.map_mul + theorem mv_polynomial.map_one + def mv_polynomial.map₂ + theorem mv_polynomial.map₂_C + theorem mv_polynomial.map₂_X + theorem mv_polynomial.map₂_add + theorem mv_polynomial.map₂_monomial + theorem mv_polynomial.map₂_mul + theorem mv_polynomial.map₂_mul_monomial + theorem mv_polynomial.map₂_one + theorem mv_polynomial.map₂_zero 2018-08-04 18:47:15-04:00 1b93719 feat(algebra/ring): units.neg and associated matter ESTIMATED CHANGES Modified algebra/group.lean + theorem nat.units_eq_one +/- theorem units.ext + theorem units.ext_iff +/- theorem units.inv_coe +/- theorem units.inv_mul +/- theorem units.inv_mul_cancel_left +/- theorem units.inv_mul_cancel_right +/- theorem units.mul_coe +/- theorem units.mul_inv +/- theorem units.mul_inv_cancel_left +/- theorem units.mul_inv_cancel_right +/- theorem units.mul_left_inj +/- theorem units.mul_right_inj +/- theorem units.one_coe +/- theorem units.val_coe Modified algebra/ordered_group.lean + theorem units.coe_le_coe + theorem units.coe_lt_coe + theorem units.max_coe + theorem units.min_coe Modified algebra/ring.lean +/- theorem bit0_eq_two_mul +/- theorem mul_two Modified data/int/basic.lean + theorem int.units_eq_one_or + theorem int.units_nat_abs Modified ring_theory/localization.lean + def localization.inv_aux 2018-08-04 18:43:51-04:00 e40bee5 feat(algebra/ring): semiring homs ESTIMATED CHANGES Modified algebra/ring.lean + def is_ring_hom.of_semiring 2018-08-04 18:40:37-04:00 7ec5e87 feat(set_theory/lists): finite ZFA ESTIMATED CHANGES Added set_theory/lists.lean + def finsets + def lists'.cons + theorem lists'.cons_subset + theorem lists'.mem_cons + theorem lists'.mem_def + theorem lists'.mem_equiv_left + theorem lists'.mem_of_subset' + theorem lists'.mem_of_subset + def lists'.of_list + theorem lists'.of_list_subset + theorem lists'.of_to_list + theorem lists'.subset.refl + theorem lists'.subset.trans + theorem lists'.subset_def + theorem lists'.subset_nil + def lists'.to_list + theorem lists'.to_list_cons + theorem lists'.to_of_list + def lists.atom + theorem lists.equiv.antisymm_iff + def lists.equiv.decidable_meas + theorem lists.equiv.symm + theorem lists.equiv.trans + theorem lists.equiv_atom + def lists.induction_mut + def lists.is_list + theorem lists.is_list_of_mem + theorem lists.is_list_to_list + theorem lists.lt_sizeof_cons' + def lists.mem + def lists.of' + def lists.of_list + theorem lists.of_to_list + theorem lists.sizeof_pos + def lists.to_list + theorem lists.to_of_list + def lists + inductive {u} Modified set_theory/zfc.lean 2018-08-03 05:53:29-04:00 8731789 feat(data/vector2): vector.ext (#232) ESTIMATED CHANGES Modified data/vector2.lean + theorem vector.ext 2018-07-30 20:35:12+02:00 cecbf2b doc(tactics/pi_instance): add description in `tactics.md` (#229) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean Modified tactic/pi_instances.lean 2018-07-30 12:01:49+02:00 fed6c58 feat(algebra/euclidean_domain): change definition of ED and instance for polynomials (#211) ESTIMATED CHANGES Modified algebra/euclidean_domain.lean + theorem euclidean_domain.lt_one + theorem euclidean_domain.mod_lt + theorem euclidean_domain.mul_right_not_lt +/- theorem euclidean_domain.val_dvd_le - theorem euclidean_domain.val_le_mul_right - theorem euclidean_domain.val_lt_one - theorem euclidean_domain.val_mod_lt Modified data/polynomial.lean + theorem polynomial.degree_add_div + theorem polynomial.degree_le_mul_left + theorem polynomial.div_def + theorem polynomial.div_eq_zero_iff + theorem polynomial.mod_def + theorem polynomial.mod_eq_self_iff 2018-07-30 11:48:54+02:00 08e0e1d feat(category/traversable): instances for various collections (#217) ESTIMATED CHANGES Added category/traversable/equiv.lean Modified data/array/lemmas.lean + theorem array.to_list_of_heq + def equiv.vector_equiv_array + def equiv.vector_equiv_fin Added data/buffer/basic.lean + theorem buffer.append_list_mk_buffer + theorem buffer.ext + def buffer.list_equiv_buffer + theorem buffer.to_list_append_list Added data/dlist/instances.lean + def dlist.list_equiv_dlist Modified data/equiv/basic.lean Added data/lazy_list2.lean + def lazy_list.list_equiv_lazy_list + def lazy_list.thunk.mk Modified data/multiset.lean Modified data/vector2.lean - def equiv.vector_equiv_array - def equiv.vector_equiv_fin Modified logic/basic.lean + theorem heq_of_eq_mp Modified tactic/interactive.lean 2018-07-30 11:27:47+02:00 7dc1f5d feat(algebra/pi_instances): more automation (#222) ESTIMATED CHANGES Modified algebra/pi_instances.lean Modified group_theory/coset.lean Modified meta/expr.lean Modified order/bounded_lattice.lean Modified order/complete_lattice.lean Modified tactic/interactive.lean Added tactic/pi_instances.lean 2018-07-30 11:06:42+02:00 fc88dd4 fix(tactic/split_ifs): do not process the same condition twice (#224) ESTIMATED CHANGES Modified tactic/split_ifs.lean 2018-07-30 11:01:09+02:00 22d811d chore(doc/style): mention how to handle ';' ESTIMATED CHANGES Modified docs/style.md 2018-07-30 10:56:07+02:00 0371f6e feat(data/equiv/basic): basic equiv lemmas and decidable_eq (#225) ESTIMATED CHANGES Modified data/equiv/basic.lean + theorem equiv.inverse_trans_apply + theorem equiv.perm.apply_inv_self + theorem equiv.perm.inv_apply_self + theorem equiv.perm.inv_def + theorem equiv.perm.mul_apply + theorem equiv.perm.mul_def - theorem equiv.perm.mul_val + theorem equiv.perm.one_apply + theorem equiv.perm.one_def - theorem equiv.perm.one_val Modified data/fintype.lean 2018-07-30 10:41:45+02:00 e67f2ad chore(analysis/topology/uniform_space): remove redundant prod_uniformity (redundant to uniformity_prod) ESTIMATED CHANGES Modified analysis/metric_space.lean Modified analysis/topology/uniform_space.lean - theorem prod_uniformity +/- theorem uniformity_prod 2018-07-30 10:25:10+02:00 8d4f582 chore(data/list): add prod.erase; cleanup ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.eq_or_ne_mem_of_mem + theorem list.prod_erase +/- theorem list.take'_eq_take 2018-07-27 23:51:05-04:00 460df5e feat(tactic/norm_num): add support for primality proving ESTIMATED CHANGES Modified data/nat/gcd.lean + theorem nat.exists_coprime' +/- theorem nat.exists_eq_prod_and_dvd_and_dvd Modified data/nat/prime.lean +/- theorem nat.min_fac_eq +/- theorem nat.min_fac_le_of_dvd + theorem nat.not_prime_mul Modified tactic/norm_num.lean + theorem norm_num.is_prime_helper + theorem norm_num.min_fac_bit0 + theorem norm_num.min_fac_helper.n_pos + def norm_num.min_fac_helper + theorem norm_num.min_fac_helper_0 + theorem norm_num.min_fac_helper_1 + theorem norm_num.min_fac_helper_2 + theorem norm_num.min_fac_helper_3 + theorem norm_num.min_fac_helper_4 + theorem norm_num.min_fac_helper_5 + theorem norm_num.min_fac_ne_bit0 + theorem norm_num.not_prime_helper Modified tactic/ring.lean 2018-07-27 13:21:15-04:00 4d8ce7e feat(data/fin): linear order and eta (#223) ESTIMATED CHANGES Modified data/fin.lean 2018-07-25 19:05:48+02:00 85bc75a fix(data/list/basic): typo in pariwise_iff ESTIMATED CHANGES Modified data/list/basic.lean 2018-07-24 16:33:28+02:00 f9cf9d3 feat(category/traversable): basic classes for traversable collections ESTIMATED CHANGES Added category/traversable/basic.lean + theorem applicative_transformation.preserves_map + theorem applicative_transformation.preserves_pure + theorem applicative_transformation.preserves_seq + structure applicative_transformation + def sequence Added category/traversable/default.lean Added category/traversable/instances.lean + theorem id.comp_traverse + theorem id.id_traverse + theorem id.map_traverse + theorem id.naturality + theorem id.traverse_map + theorem list.comp_traverse + theorem list.id_traverse + theorem list.map_traverse + theorem list.naturality + theorem list.traverse_map + theorem option.comp_traverse + theorem option.id_traverse + theorem option.map_traverse + theorem option.naturality + theorem option.traverse_map Added category/traversable/lemmas.lean + theorem traversable.comp_sequence + theorem traversable.id_sequence + theorem traversable.naturality' + def traversable.pure_transformation + theorem traversable.purity + theorem traversable.traverse_eq_map_ident 2018-07-24 05:15:31-04:00 8270475 doc(wip): finite map (#215) [ci-skip] ESTIMATED CHANGES Modified docs/wip.md 2018-07-23 20:06:20-04:00 6abb0d4 feat(algebra/pi_instances): more pi instances ESTIMATED CHANGES Modified algebra/pi_instances.lean Modified order/basic.lean Modified order/bounded_lattice.lean Modified order/complete_lattice.lean 2018-07-22 15:03:49-04:00 e74ff76 refactor(data/nat/gcd): simplify proof of pow_dvd_pow_iff ESTIMATED CHANGES Modified algebra/ring.lean Modified data/nat/basic.lean + theorem nat.pow_dvd_pow_of_dvd Modified data/nat/gcd.lean - theorem nat.dvd_of_pow_dvd_pow + theorem nat.pow_dvd_pow_iff 2018-07-22 14:37:11-04:00 ffb7229 feat(data/nat/gcd): dvd_of_pow_dvd_pow ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.mul_pow Modified data/nat/gcd.lean + theorem nat.dvd_of_pow_dvd_pow 2018-07-21 14:23:10-04:00 e429aac fix(computability/turing_machine): missed a spot ESTIMATED CHANGES Modified computability/turing_machine.lean 2018-07-21 14:02:13-04:00 8bf72b2 chore(tactic/interactive): change swap so it does what it says it is supposed to move the nth goal to the front, not rotate all the goals ESTIMATED CHANGES Modified tactic/interactive.lean 2018-07-21 13:58:02-04:00 682025f fix(*): fix build, use rw consistently ESTIMATED CHANGES Modified algebra/ring.lean Modified computability/primrec.lean Modified data/int/order.lean Modified data/seq/wseq.lean Modified data/set/basic.lean Modified order/galois_connection.lean 2018-07-21 12:10:36-04:00 e7321bb fix(data/option): fix universe levels in option.map_some etc. ESTIMATED CHANGES Modified computability/partrec.lean Modified computability/partrec_code.lean Modified computability/primrec.lean Modified computability/turing_machine.lean Modified data/equiv/denumerable.lean Modified data/equiv/encodable.lean Modified data/list/basic.lean Modified data/option.lean +/- theorem option.bind_eq_some +/- theorem option.map_eq_some +/- theorem option.map_none +/- theorem option.map_some +/- theorem option.none_bind +/- inductive option.rel +/- theorem option.seq_some +/- theorem option.some_bind Modified data/seq/seq.lean Modified data/seq/wseq.lean 2018-07-21 02:09:53-04:00 fb952fe refactor(analysis/ennreal): split and move to data.real ESTIMATED CHANGES Modified analysis/ennreal.lean - theorem ennreal.add_infty - theorem ennreal.add_left_inj - theorem ennreal.add_right_inj - theorem ennreal.add_sub_cancel_of_le - theorem ennreal.add_sub_self' - theorem ennreal.add_sub_self - theorem ennreal.forall_ennreal - theorem ennreal.infty_add - theorem ennreal.infty_le_iff - theorem ennreal.infty_mem_upper_bounds - theorem ennreal.infty_mul - theorem ennreal.infty_mul_of_real - theorem ennreal.infty_ne_of_real - theorem ennreal.infty_ne_zero - theorem ennreal.infty_sub_of_real - theorem ennreal.inv_infty - theorem ennreal.inv_inv - theorem ennreal.inv_of_real - theorem ennreal.inv_zero - theorem ennreal.is_lub_of_real - theorem ennreal.le_add_left - theorem ennreal.le_add_right - theorem ennreal.le_def - theorem ennreal.le_infty - theorem ennreal.le_of_forall_epsilon_le - theorem ennreal.le_of_real_iff - theorem ennreal.le_zero_iff_eq - theorem ennreal.lt_add_right - theorem ennreal.lt_iff_exists_of_real - theorem ennreal.mul_infty - theorem ennreal.mul_le_mul - theorem ennreal.not_infty_lt - theorem ennreal.not_lt_zero - def ennreal.of_ennreal - theorem ennreal.of_ennreal_of_real - theorem ennreal.of_nonneg_real_eq_of_real - def ennreal.of_real - theorem ennreal.of_real_add - theorem ennreal.of_real_add_le - theorem ennreal.of_real_eq_of_real_of - theorem ennreal.of_real_eq_one_iff - theorem ennreal.of_real_eq_zero_iff - theorem ennreal.of_real_le_of_real - theorem ennreal.of_real_le_of_real_iff - theorem ennreal.of_real_lt_infty - theorem ennreal.of_real_lt_of_real_iff - theorem ennreal.of_real_lt_of_real_iff_cases - theorem ennreal.of_real_mem_upper_bounds - theorem ennreal.of_real_mul_infty - theorem ennreal.of_real_mul_of_real - theorem ennreal.of_real_ne_infty - theorem ennreal.of_real_ne_of_real_of - theorem ennreal.of_real_of_ennreal - theorem ennreal.of_real_of_nonpos - theorem ennreal.of_real_of_not_nonneg - theorem ennreal.of_real_one - theorem ennreal.of_real_sub_of_real - theorem ennreal.of_real_zero - theorem ennreal.one_eq_of_real_iff - theorem ennreal.one_le_of_real_iff - theorem ennreal.sub_add_cancel_of_le - theorem ennreal.sub_add_self_eq_max - theorem ennreal.sub_eq_zero_of_le - theorem ennreal.sub_infty - theorem ennreal.sub_le_self - theorem ennreal.sub_le_sub - theorem ennreal.sub_sub_cancel - theorem ennreal.sub_zero - theorem ennreal.sum_of_real - theorem ennreal.zero_eq_of_real_iff - theorem ennreal.zero_le_of_ennreal - theorem ennreal.zero_lt_of_real_iff - theorem ennreal.zero_ne_infty - theorem ennreal.zero_sub - inductive ennreal Modified data/real/basic.lean + theorem real.Sup_is_lub Added data/real/ennreal.lean + theorem ennreal.add_infty + theorem ennreal.add_left_inj + theorem ennreal.add_right_inj + theorem ennreal.add_sub_cancel_of_le + theorem ennreal.add_sub_self' + theorem ennreal.add_sub_self + theorem ennreal.forall_ennreal + theorem ennreal.infty_add + theorem ennreal.infty_le_iff + theorem ennreal.infty_mem_upper_bounds + theorem ennreal.infty_mul + theorem ennreal.infty_mul_of_real + theorem ennreal.infty_ne_of_real + theorem ennreal.infty_ne_zero + theorem ennreal.infty_sub_of_real + theorem ennreal.inv_infty + theorem ennreal.inv_inv + theorem ennreal.inv_of_real + theorem ennreal.inv_zero + theorem ennreal.is_lub_of_real + theorem ennreal.le_add_left + theorem ennreal.le_add_right + theorem ennreal.le_def + theorem ennreal.le_infty + theorem ennreal.le_of_forall_epsilon_le + theorem ennreal.le_of_real_iff + theorem ennreal.le_zero_iff_eq + theorem ennreal.lt_add_right + theorem ennreal.lt_iff_exists_of_real + theorem ennreal.mul_infty + theorem ennreal.mul_le_mul + theorem ennreal.not_infty_lt + theorem ennreal.not_lt_zero + def ennreal.of_ennreal + theorem ennreal.of_ennreal_of_real + theorem ennreal.of_nonneg_real_eq_of_real + def ennreal.of_real + theorem ennreal.of_real_add + theorem ennreal.of_real_add_le + theorem ennreal.of_real_eq_of_real_of + theorem ennreal.of_real_eq_one_iff + theorem ennreal.of_real_eq_zero_iff + theorem ennreal.of_real_le_of_real + theorem ennreal.of_real_le_of_real_iff + theorem ennreal.of_real_lt_infty + theorem ennreal.of_real_lt_of_real_iff + theorem ennreal.of_real_lt_of_real_iff_cases + theorem ennreal.of_real_mem_upper_bounds + theorem ennreal.of_real_mul_infty + theorem ennreal.of_real_mul_of_real + theorem ennreal.of_real_ne_infty + theorem ennreal.of_real_ne_of_real_of + theorem ennreal.of_real_of_ennreal + theorem ennreal.of_real_of_nonpos + theorem ennreal.of_real_of_not_nonneg + theorem ennreal.of_real_one + theorem ennreal.of_real_sub_of_real + theorem ennreal.of_real_zero + theorem ennreal.one_eq_of_real_iff + theorem ennreal.one_le_of_real_iff + theorem ennreal.sub_add_cancel_of_le + theorem ennreal.sub_add_self_eq_max + theorem ennreal.sub_eq_zero_of_le + theorem ennreal.sub_infty + theorem ennreal.sub_le_self + theorem ennreal.sub_le_sub + theorem ennreal.sub_sub_cancel + theorem ennreal.sub_zero + theorem ennreal.sum_of_real + theorem ennreal.zero_eq_of_real_iff + theorem ennreal.zero_le_of_ennreal + theorem ennreal.zero_lt_of_real_iff + theorem ennreal.zero_ne_infty + theorem ennreal.zero_sub + inductive ennreal Modified data/set/lattice.lean + def set.kern_image Modified order/bounds.lean Modified order/galois_connection.lean - def set.kern_image 2018-07-20 01:17:21-04:00 23a5591 feat(tactic/h_generalize): remove `cast` expressions from goal (#198) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean Modified tests/tactics.lean 2018-07-19 15:34:44-04:00 29639b3 feat(analysis/measure_theory): optimize proofs; trim, is_complete ESTIMATED CHANGES Modified algebra/ordered_field.lean + theorem one_half_lt_one + theorem one_half_pos Modified analysis/ennreal.lean + theorem ennreal.add_left_inj + theorem ennreal.add_right_inj + theorem ennreal.add_sub_self' + theorem ennreal.add_supr + theorem ennreal.exists_pos_sum_of_encodable + theorem ennreal.of_real_add_le + theorem ennreal.sub_infi + theorem ennreal.sub_le_self + theorem ennreal.sub_sub_cancel +/- theorem ennreal.sub_supr + theorem ennreal.supr_add_supr Modified analysis/limits.lean + theorem is_sum_geometric_two + def pos_sum_of_encodable Modified analysis/measure_theory/borel_space.lean + def measure_theory.borel - theorem measure_theory.borel_eq_generate_from_Iio_rat - theorem measure_theory.borel_eq_generate_from_Ioo_rat + theorem measure_theory.borel_prod_le - theorem measure_theory.is_topological_basis_Ioo_rat + theorem real.borel_eq_generate_from_Iio_rat + theorem real.borel_eq_generate_from_Ioo_rat Modified analysis/measure_theory/lebesgue_measure.lean + theorem measure_theory.is_lebesgue_measurable_Iio - theorem measure_theory.le_lebesgue_length +/- def measure_theory.lebesgue + theorem measure_theory.lebesgue_Icc +/- def measure_theory.lebesgue_length + theorem measure_theory.lebesgue_length_Icc - theorem measure_theory.lebesgue_length_Ico' +/- theorem measure_theory.lebesgue_length_Ico + theorem measure_theory.lebesgue_length_Ioo + theorem measure_theory.lebesgue_length_eq_infi_Icc + theorem measure_theory.lebesgue_length_eq_infi_Ioo + theorem measure_theory.lebesgue_length_mono + theorem measure_theory.lebesgue_outer_Icc +/- theorem measure_theory.lebesgue_outer_Ico + theorem measure_theory.lebesgue_outer_Ioo - theorem measure_theory.lebesgue_outer_is_measurable_Iio + theorem measure_theory.lebesgue_outer_le_length + theorem measure_theory.lebesgue_outer_singleton + theorem measure_theory.lebesgue_outer_trim +/- theorem measure_theory.lebesgue_singleton + theorem measure_theory.lebesgue_to_outer_measure + theorem measure_theory.lebesgue_val - theorem measure_theory.tendsto_of_nat_at_top_at_top Modified analysis/measure_theory/measurable_space.lean + theorem encodable.Union_decode2 + theorem encodable.Union_decode2_cases + theorem is_measurable.Inter + theorem is_measurable.Union + theorem is_measurable.bInter + theorem is_measurable.bUnion + theorem is_measurable.compl + theorem is_measurable.compl_iff + theorem is_measurable.diff + theorem is_measurable.disjointed + theorem is_measurable.empty + theorem is_measurable.inter + theorem is_measurable.sInter + theorem is_measurable.sUnion + theorem is_measurable.sub + theorem is_measurable.union +/- def is_measurable - theorem is_measurable_Inter - theorem is_measurable_Union - theorem is_measurable_Union_nat - theorem is_measurable_bInter - theorem is_measurable_bUnion - theorem is_measurable_compl - theorem is_measurable_disjointed - theorem is_measurable_empty - theorem is_measurable_inter - theorem is_measurable_sInter - theorem is_measurable_sUnion - theorem is_measurable_sdiff - theorem is_measurable_sub - theorem is_measurable_union + theorem measurable.comp + theorem measurable.if + theorem measurable.preimage + theorem measurable.prod - theorem measurable_comp - theorem measurable_if - theorem measurable_prod + theorem measurable_space.Union_decode2_disjoint_on - theorem measurable_space.dynkin_system.dynkin_system_eq + theorem measurable_space.dynkin_system.ext +/- theorem measurable_space.dynkin_system.generate_le + theorem measurable_space.dynkin_system.has_Union + theorem measurable_space.dynkin_system.has_compl_iff + theorem measurable_space.dynkin_system.has_diff - theorem measurable_space.dynkin_system.has_sdiff +/- theorem measurable_space.dynkin_system.has_union +/- def measurable_space.dynkin_system.restrict_on + theorem measurable_space.ext + theorem measurable_space.is_measurable_Inf + theorem measurable_space.is_measurable_inf + theorem measurable_space.is_measurable_infi - theorem measurable_space_eq Modified analysis/measure_theory/measure_space.lean + def completion + theorem is_measurable.diff_null + theorem is_measurable.is_null_measurable + theorem is_null_measurable.Union_nat + theorem is_null_measurable.compl + theorem is_null_measurable.diff_null + theorem is_null_measurable.union_null + def is_null_measurable + theorem is_null_measurable_iff + theorem is_null_measurable_measure_eq + theorem is_null_measurable_of_complete +/- theorem measure_theory.le_to_outer_measure_caratheodory + def measure_theory.measure' + theorem measure_theory.measure'_Union + theorem measure_theory.measure'_Union_le_tsum_nat' + theorem measure_theory.measure'_Union_le_tsum_nat + theorem measure_theory.measure'_Union_nat + theorem measure_theory.measure'_empty + theorem measure_theory.measure'_eq + theorem measure_theory.measure'_mono + theorem measure_theory.measure'_union + theorem measure_theory.measure.add_apply + theorem measure_theory.measure.add_to_outer_measure + def measure_theory.measure.count + def measure_theory.measure.dirac + theorem measure_theory.measure.dirac_apply + theorem measure_theory.measure.ext + def measure_theory.measure.is_complete + theorem measure_theory.measure.le_iff' + theorem measure_theory.measure.le_iff + def measure_theory.measure.map + theorem measure_theory.measure.map_apply + theorem measure_theory.measure.map_id + theorem measure_theory.measure.map_map + def measure_theory.measure.of_measurable + def measure_theory.measure.sum + theorem measure_theory.measure.to_outer_measure_le + theorem measure_theory.measure.zero_apply + theorem measure_theory.measure.zero_to_outer_measure + structure measure_theory.measure + theorem measure_theory.measure_Union + theorem measure_theory.measure_Union_le - theorem measure_theory.measure_Union_le_tsum_nat - theorem measure_theory.measure_Union_nat + theorem measure_theory.measure_Union_null +/- theorem measure_theory.measure_bUnion + theorem measure_theory.measure_diff +/- theorem measure_theory.measure_empty + theorem measure_theory.measure_eq_infi + theorem measure_theory.measure_eq_measure' + theorem measure_theory.measure_eq_outer_measure' + theorem measure_theory.measure_eq_trim +/- theorem measure_theory.measure_mono + theorem measure_theory.measure_mono_null +/- theorem measure_theory.measure_sUnion - theorem measure_theory.measure_sdiff - def measure_theory.measure_space.count - def measure_theory.measure_space.dirac - def measure_theory.measure_space.map - theorem measure_theory.measure_space.map_comp - theorem measure_theory.measure_space.map_id - theorem measure_theory.measure_space.map_measure - def measure_theory.measure_space.sum - structure measure_theory.measure_space - theorem measure_theory.measure_space_eq - theorem measure_theory.measure_space_eq_of + theorem measure_theory.measure_union_le + theorem measure_theory.measure_union_null + def measure_theory.outer_measure' + theorem measure_theory.outer_measure'_eq + theorem measure_theory.outer_measure'_eq_measure' + theorem measure_theory.outer_measure.le_trim_iff +/- def measure_theory.outer_measure.to_measure + def measure_theory.outer_measure.trim + theorem measure_theory.outer_measure.trim_add + theorem measure_theory.outer_measure.trim_congr + theorem measure_theory.outer_measure.trim_eq + theorem measure_theory.outer_measure.trim_eq_infi' + theorem measure_theory.outer_measure.trim_eq_infi + theorem measure_theory.outer_measure.trim_ge + theorem measure_theory.outer_measure.trim_le_trim + theorem measure_theory.outer_measure.trim_sum_ge + theorem measure_theory.outer_measure.trim_trim + theorem measure_theory.outer_measure.trim_zero + theorem measure_theory.to_measure_apply + theorem measure_theory.to_measure_to_outer_measure + theorem measure_theory.to_outer_measure_apply + theorem measure_theory.to_outer_measure_eq_outer_measure' +/- theorem measure_theory.to_outer_measure_to_measure + theorem null_is_null_measurable + def null_measurable Modified analysis/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.Sup_apply + theorem measure_theory.outer_measure.Union_aux + theorem measure_theory.outer_measure.Union_null + theorem measure_theory.outer_measure.add_apply + theorem measure_theory.outer_measure.add_smul - theorem measure_theory.outer_measure.caratheodory_is_measurable_eq + def measure_theory.outer_measure.dirac + theorem measure_theory.outer_measure.dirac_apply + theorem measure_theory.outer_measure.dirac_caratheodory + theorem measure_theory.outer_measure.empty' + theorem measure_theory.outer_measure.ext + theorem measure_theory.outer_measure.is_caratheodory + theorem measure_theory.outer_measure.is_caratheodory_le + theorem measure_theory.outer_measure.le_add_caratheodory + theorem measure_theory.outer_measure.le_of_function + theorem measure_theory.outer_measure.le_smul_caratheodory + theorem measure_theory.outer_measure.le_sum_caratheodory + def measure_theory.outer_measure.map + theorem measure_theory.outer_measure.map_apply + theorem measure_theory.outer_measure.map_id + theorem measure_theory.outer_measure.map_map + theorem measure_theory.outer_measure.mono' + theorem measure_theory.outer_measure.mul_smul + theorem measure_theory.outer_measure.one_smul - theorem measure_theory.outer_measure.outer_measure_eq + def measure_theory.outer_measure.smul + theorem measure_theory.outer_measure.smul_add + theorem measure_theory.outer_measure.smul_apply + theorem measure_theory.outer_measure.smul_dirac_apply + theorem measure_theory.outer_measure.smul_zero - theorem measure_theory.outer_measure.subadditive + def measure_theory.outer_measure.sum + theorem measure_theory.outer_measure.sum_apply + theorem measure_theory.outer_measure.sup_apply + theorem measure_theory.outer_measure.supr_apply + theorem measure_theory.outer_measure.top_apply + theorem measure_theory.outer_measure.union_null + theorem measure_theory.outer_measure.zero_apply + theorem measure_theory.outer_measure.zero_caratheodory + theorem measure_theory.outer_measure.zero_smul Modified analysis/real.lean + theorem compact_Icc - theorem compact_ivl +/- theorem rat.totally_bounded_Icc + theorem real.is_topological_basis_Ioo_rat +/- theorem real.totally_bounded_Icc + theorem tendsto_of_nat_at_top_at_top Modified analysis/topology/infinite_sum.lean +/- theorem has_sum_mul_left +/- theorem has_sum_mul_right +/- theorem is_sum_mul_left +/- theorem is_sum_mul_right + theorem tsum_equiv + theorem tsum_fintype +/- theorem tsum_mul_left +/- theorem tsum_mul_right Modified analysis/topology/topological_space.lean + theorem topological_space.is_open_sUnion_countable Modified analysis/topology/topological_structures.lean +/- theorem closure_le_eq + theorem is_closed_Icc Modified data/set/basic.lean +/- theorem set.mem_diff - theorem set.mem_diff_eq - theorem set.mem_diff_iff + theorem set.mem_diff_of_mem + theorem set.union_diff_distrib Modified data/set/countable.lean Modified data/set/disjointed.lean + theorem pairwise_disjoint_on_bool + theorem pairwise_on_bool + theorem set.Inter_lt_succ + theorem set.Union_disjointed + theorem set.Union_disjointed_of_mono + theorem set.Union_lt_succ - theorem set.disjointed_Union Modified data/set/intervals.lean + def set.Icc + theorem set.Icc_diff_Ico_eq_singleton + theorem set.Icc_eq_empty + theorem set.Icc_eq_empty_iff + theorem set.Icc_self + theorem set.Icc_subset_Icc + theorem set.Icc_subset_Icc_left + theorem set.Icc_subset_Icc_right + theorem set.Icc_subset_Ico_right + theorem set.Ico_diff_Iio + theorem set.Ico_diff_Ioo_eq_singleton +/- theorem set.Ico_eq_Ico_iff +/- theorem set.Ico_eq_empty +/- theorem set.Ico_eq_empty_iff + theorem set.Ico_inter_Iio - theorem set.Ico_inter_Iio_eq - theorem set.Ico_sdiff_Iio_eq - theorem set.Ico_sdiff_Ioo_eq_singleton +/- theorem set.Ico_self + theorem set.Ico_subset_Icc_self + theorem set.Ico_subset_Ico +/- theorem set.Ico_subset_Ico_iff +/- theorem set.Ico_subset_Ico_left +/- theorem set.Ico_subset_Ico_right +/- theorem set.Ico_subset_Iio_self + theorem set.Iio_ne_empty + theorem set.Ioo_eq_empty + theorem set.Ioo_eq_empty_iff - theorem set.Ioo_eq_empty_of_ge +/- theorem set.Ioo_self + theorem set.Ioo_subset_Icc_self +/- theorem set.Ioo_subset_Ico_self + theorem set.Ioo_subset_Ioo + theorem set.Ioo_subset_Ioo_iff + theorem set.Ioo_subset_Ioo_left + theorem set.Ioo_subset_Ioo_right + theorem set.mem_Icc + theorem set.mem_Ico + theorem set.mem_Iio + theorem set.mem_Ioo Modified order/complete_lattice.lean +/- theorem lattice.infi_and +/- theorem lattice.infi_prod +/- theorem lattice.infi_sigma +/- theorem lattice.infi_subtype +/- theorem lattice.supr_and +/- theorem lattice.supr_prod +/- theorem lattice.supr_sigma +/- theorem lattice.supr_subtype 2018-07-19 10:10:59-04:00 bd90a93 fix(group_theory/group_action): move is_group_action out of namespace ESTIMATED CHANGES Modified group_theory/group_action.lean 2018-07-19 09:29:24-04:00 2b9780a feat(data/finset): disjoint_val (#206) ESTIMATED CHANGES Modified data/finset.lean + theorem finset.disjoint_val 2018-07-19 09:29:24-04:00 1e0c38b feat(data/multiset): sup and inf for multisets ESTIMATED CHANGES Modified data/finset.lean + theorem finset.inf_val + theorem finset.sup_val Modified data/multiset.lean + def multiset.inf + theorem multiset.inf_add + theorem multiset.inf_cons + theorem multiset.inf_erase_dup + theorem multiset.inf_le + theorem multiset.inf_mono + theorem multiset.inf_ndinsert + theorem multiset.inf_ndunion + theorem multiset.inf_singleton + theorem multiset.inf_union + theorem multiset.inf_zero + theorem multiset.le_inf + theorem multiset.le_sup + theorem multiset.prod_singleton + def multiset.sup + theorem multiset.sup_add + theorem multiset.sup_cons + theorem multiset.sup_erase_dup + theorem multiset.sup_le + theorem multiset.sup_mono + theorem multiset.sup_ndinsert + theorem multiset.sup_ndunion + theorem multiset.sup_singleton + theorem multiset.sup_union + theorem multiset.sup_zero 2018-07-19 06:54:38-04:00 50f18e6 feat(group_theory/group_action): group actions and orbit stabilizer (#204) ESTIMATED CHANGES Added group_theory/group_action.lean + theorem is_group_action.bijective + theorem is_group_action.orbit_eq_iff + def is_group_action.to_perm + def is_monoid_action.fixed_points + theorem is_monoid_action.mem_fixed_points' + theorem is_monoid_action.mem_fixed_points + theorem is_monoid_action.mem_orbit + theorem is_monoid_action.mem_orbit_iff + theorem is_monoid_action.mem_orbit_self + theorem is_monoid_action.mem_stabilizer_iff + def is_monoid_action.orbit + def is_monoid_action.stabilizer 2018-07-19 03:56:30-04:00 9f79309 fix(data/multiset): fix build, cleanup mem_pi ESTIMATED CHANGES Modified data/multiset.lean +/- theorem multiset.mem_singleton +/- theorem multiset.pi_zero + theorem multiset.singleton_eq_singleton 2018-07-19 03:18:09-04:00 37f3e32 fix(algebra/big_operators): fix build ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.card_pi Modified data/finset.lean + theorem finset.card_singleton +/- theorem finset.insert_empty_eq_singleton +/- theorem finset.pi_empty +/- theorem finset.singleton_eq_singleton Modified data/multiset.lean +/- theorem multiset.card_singleton +/- theorem multiset.pi_zero 2018-07-19 02:36:49-04:00 aedbc12 feat(data/fintype): card lemmas (#168) ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.card_pi + theorem finset.prod_const + theorem finset.sum_const Modified data/fintype.lean + theorem fintype.card_eq_one_iff + theorem fintype.card_eq_zero_iff + theorem fintype.card_fun + theorem fintype.card_le_of_injective + theorem fintype.card_le_one_iff + theorem fintype.card_pi + theorem fintype.card_pos_iff 2018-07-19 00:25:14-04:00 c2f54ad fix(tactic/refine_struct): fix support for source structures ESTIMATED CHANGES Modified tactic/interactive.lean Modified tests/examples.lean 2018-07-18 14:10:50+02:00 9a30235 chore(data/polynomial): move auxiliary definitions/theorems to appropriate places ESTIMATED CHANGES Modified algebra/ordered_group.lean + theorem with_bot.add_bot + theorem with_bot.bot_add + theorem with_bot.bot_lt_some + theorem with_bot.coe_add + theorem with_bot.coe_lt_coe Modified algebra/ring.lean Modified data/finsupp.lean + theorem finsupp.mul_sum + theorem finsupp.sum_mul Modified data/polynomial.lean - theorem finsupp.mul_sum - theorem finsupp.sum_mul - theorem with_bot.add_bot - theorem with_bot.bot_add - theorem with_bot.bot_lt_some - theorem with_bot.coe_add - theorem with_bot.coe_lt_coe 2018-07-18 14:10:50+02:00 d9daeff refactor(data/polynomial): move polynomials to data; replace monomial by `C a * X^n` ESTIMATED CHANGES Modified algebra/big_operators.lean Modified data/finsupp.lean Renamed linear_algebra/univariate_polynomial.lean to data/polynomial.lean + theorem finsupp.mul_sum + theorem finsupp.sum_mul +/- def polynomial.C +/- theorem polynomial.C_0 - theorem polynomial.C_mul_monomial +/- def polynomial.X +/- theorem polynomial.X_apply_one + theorem polynomial.X_pow_apply - theorem polynomial.X_pow_eq_monomial +/- theorem polynomial.add_apply +/- theorem polynomial.degree_C + theorem polynomial.degree_C_le +/- theorem polynomial.degree_X +/- theorem polynomial.degree_add_div_by_monic +/- theorem polynomial.degree_div_by_monic_lt +/- def polynomial.degree_lt_wf +/- theorem polynomial.degree_mod_by_monic_lt +/- theorem polynomial.degree_monomial +/- theorem polynomial.degree_monomial_le + theorem polynomial.degree_one_le +/- theorem polynomial.degree_pow_eq +/- def polynomial.div +/- def polynomial.div_mod_by_monic_aux - theorem polynomial.eval_monomial - theorem polynomial.eval_mul_monomial + theorem polynomial.eval_one - theorem polynomial.induction_on +/- theorem polynomial.leading_coeff_X +/- theorem polynomial.leading_coeff_monomial +/- theorem polynomial.leading_coeff_mul +/- theorem polynomial.leading_coeff_one +/- theorem polynomial.mod_by_monic_add_div +/- theorem polynomial.monic_mul_leading_coeff_inv - def polynomial.monomial - theorem polynomial.monomial_add_left - theorem polynomial.monomial_add_right - theorem polynomial.monomial_apply - theorem polynomial.monomial_apply_self - theorem polynomial.monomial_eq - theorem polynomial.monomial_induction_on - theorem polynomial.monomial_mul_monomial - theorem polynomial.monomial_zero_right +/- theorem polynomial.mul_div_by_monic_eq_iff_is_root +/- def polynomial.nat_degree +/- theorem polynomial.ne_zero_of_monic +/- theorem polynomial.ne_zero_of_ne_zero_of_monic +/- theorem polynomial.root_X_sub_C + theorem polynomial.single_eq_C_mul_X +/- theorem polynomial.subsingleton_of_monic_zero +/- theorem with_bot.coe_add 2018-07-18 14:10:50+02:00 ce990c5 feat(linear_algebra/univariate_polynomial): univariate polynomials ESTIMATED CHANGES Modified data/finset.lean + theorem finset.max_eq_none + theorem finset.min_eq_none Added linear_algebra/univariate_polynomial.lean + def polynomial.C + theorem polynomial.C_0 + theorem polynomial.C_1 + theorem polynomial.C_apply + theorem polynomial.C_apply_zero + theorem polynomial.C_mul_C + theorem polynomial.C_mul_apply + theorem polynomial.C_mul_monomial + def polynomial.X + theorem polynomial.X_apply_one + theorem polynomial.X_pow_eq_monomial + theorem polynomial.add_apply + theorem polynomial.card_roots + def polynomial.degree + theorem polynomial.degree_C + theorem polynomial.degree_X + theorem polynomial.degree_X_sub_C + theorem polynomial.degree_add_div_by_monic + theorem polynomial.degree_add_eq_of_degree_lt + theorem polynomial.degree_add_eq_of_leading_coeff_add_ne_zero + theorem polynomial.degree_add_le + theorem polynomial.degree_div_by_monic_le + theorem polynomial.degree_div_by_monic_lt + theorem polynomial.degree_eq_bot + theorem polynomial.degree_eq_nat_degree + theorem polynomial.degree_erase_le + theorem polynomial.degree_erase_lt + def polynomial.degree_lt_wf + theorem polynomial.degree_mod_by_monic_lt + theorem polynomial.degree_monomial + theorem polynomial.degree_monomial_le + theorem polynomial.degree_mul_eq' + theorem polynomial.degree_mul_eq + theorem polynomial.degree_mul_le + theorem polynomial.degree_mul_leading_coeff_inv + theorem polynomial.degree_neg + theorem polynomial.degree_one + theorem polynomial.degree_pos_of_root + theorem polynomial.degree_pow_eq' + theorem polynomial.degree_pow_eq + theorem polynomial.degree_pow_le + theorem polynomial.degree_sub_lt + theorem polynomial.degree_sum_le + theorem polynomial.degree_zero + def polynomial.div + def polynomial.div_by_monic + theorem polynomial.div_by_monic_eq_div + theorem polynomial.div_by_monic_eq_of_not_monic + theorem polynomial.div_by_monic_eq_zero_iff + theorem polynomial.div_by_monic_zero + def polynomial.div_mod_by_monic_aux + theorem polynomial.div_wf_lemma + theorem polynomial.dvd_iff_mod_by_monic_eq_zero + theorem polynomial.eq_C_of_degree_le_zero + theorem polynomial.eq_zero_of_degree_lt + def polynomial.eval + theorem polynomial.eval_C + theorem polynomial.eval_X + theorem polynomial.eval_add + theorem polynomial.eval_monomial + theorem polynomial.eval_mul + theorem polynomial.eval_mul_monomial + theorem polynomial.eval_neg + theorem polynomial.eval_sub + theorem polynomial.eval_zero + theorem polynomial.exists_finset_roots + theorem polynomial.induction_on + theorem polynomial.is_root.def + def polynomial.is_root + theorem polynomial.le_degree_of_ne_zero + def polynomial.leading_coeff + theorem polynomial.leading_coeff_C + theorem polynomial.leading_coeff_X + theorem polynomial.leading_coeff_add_of_degree_eq + theorem polynomial.leading_coeff_add_of_degree_lt + theorem polynomial.leading_coeff_eq_zero + theorem polynomial.leading_coeff_monomial + theorem polynomial.leading_coeff_mul' + theorem polynomial.leading_coeff_mul + theorem polynomial.leading_coeff_one + theorem polynomial.leading_coeff_pow' + theorem polynomial.leading_coeff_pow + theorem polynomial.leading_coeff_zero + theorem polynomial.mem_roots + def polynomial.mod + theorem polynomial.mod_X_sub_C_eq_C_eval + def polynomial.mod_by_monic + theorem polynomial.mod_by_monic_X_sub_C_eq_C_eval + theorem polynomial.mod_by_monic_add_div + theorem polynomial.mod_by_monic_eq_mod + theorem polynomial.mod_by_monic_eq_of_not_monic + theorem polynomial.mod_by_monic_eq_self_iff + theorem polynomial.mod_by_monic_eq_sub_mul_div + theorem polynomial.mod_by_monic_zero + theorem polynomial.monic.def + def polynomial.monic + theorem polynomial.monic_X_sub_C + theorem polynomial.monic_mul_leading_coeff_inv + theorem polynomial.monic_one + def polynomial.monomial + theorem polynomial.monomial_add_left + theorem polynomial.monomial_add_right + theorem polynomial.monomial_apply + theorem polynomial.monomial_apply_self + theorem polynomial.monomial_eq + theorem polynomial.monomial_induction_on + theorem polynomial.monomial_mul_monomial + theorem polynomial.monomial_zero_right + theorem polynomial.mul_apply_degree_add_degree + theorem polynomial.mul_div_by_monic_eq_iff_is_root + theorem polynomial.mul_div_eq_iff_is_root + def polynomial.nat_degree + theorem polynomial.nat_degree_C + theorem polynomial.nat_degree_eq_of_degree_eq + theorem polynomial.nat_degree_mul_eq' + theorem polynomial.ne_zero_of_degree_gt + theorem polynomial.ne_zero_of_monic + theorem polynomial.ne_zero_of_ne_zero_of_monic + theorem polynomial.neg_apply + theorem polynomial.not_monic_zero + theorem polynomial.one_apply_zero + theorem polynomial.root_X_sub_C + theorem polynomial.root_mul_left_of_is_root + theorem polynomial.root_mul_right_of_is_root + theorem polynomial.root_or_root_of_root_mul + theorem polynomial.subsingleton_of_monic_zero + theorem polynomial.support_zero + theorem polynomial.zero_apply + theorem polynomial.zero_div_by_monic + theorem polynomial.zero_mod_by_monic + def polynomial + theorem with_bot.add_bot + theorem with_bot.bot_add + theorem with_bot.bot_lt_some + theorem with_bot.coe_add + theorem with_bot.coe_lt_coe Modified order/bounded_lattice.lean + theorem with_bot.well_founded_lt + theorem with_top.well_founded_lt 2018-07-17 22:43:01-04:00 a0dd286 fix(*): fix build ESTIMATED CHANGES Modified analysis/ennreal.lean Modified ring_theory/ideals.lean 2018-07-17 18:00:59-04:00 7f8b088 feat(tactic/basic): fix environment.in_current_file ESTIMATED CHANGES Modified tactic/basic.lean 2018-07-17 17:16:55-04:00 980a01e feat(ring_theory/ideals): quotient rings (#196) ESTIMATED CHANGES Modified ring_theory/ideals.lean + theorem is_ideal.exists_inv + theorem is_ideal.mul_left + theorem is_ideal.mul_right + theorem is_ideal.neg_iff + def is_ideal.quotient + theorem is_ideal.quotient_eq_zero_iff_mem + def is_ideal.quotient_rel + theorem is_proper_ideal_iff_one_not_mem - theorem not_unit_of_mem_maximal_ideal + theorem not_unit_of_mem_proper_ideal 2018-07-17 01:32:25-04:00 421a1cd fix(measure_theory/measure_space): fix build ESTIMATED CHANGES Modified analysis/measure_theory/measure_space.lean 2018-07-17 00:35:02-04:00 f92d239 chore(travis.yml): checkout old files in both stages ESTIMATED CHANGES Modified .travis.yml 2018-07-17 00:30:54-04:00 b267edc refactor(data/set/countable): define countable in terms of encodable ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/topology/topological_space.lean Modified computability/halting.lean Modified data/equiv/encodable.lean + theorem encodable.decode2_is_partial_inv + theorem encodable.mem_decode2' Modified data/set/countable.lean + def set.countable.to_encodable - theorem set.countable.to_encodable +/- def set.countable +/- theorem set.countable_encodable' +/- theorem set.countable_encodable + theorem set.countable_iff_exists_inj_on + theorem set.countable_iff_exists_injective +/- theorem set.countable_image + theorem set.countable_range +/- theorem set.countable_set_of_finite_subset +/- theorem set.countable_singleton Modified data/set/function.lean + theorem set.inj_on_iff_injective + theorem set.surj_on_iff_surjective Modified logic/function.lean + theorem function.is_partial_inv_left + theorem function.partial_inv_left 2018-07-16 23:17:06-04:00 ee4ff47 chore(travis.yml): update lean files before pre-build ESTIMATED CHANGES Modified .travis.yml 2018-07-16 22:13:58-04:00 95a3c47 fix(.): fix build ESTIMATED CHANGES Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/topological_space.lean Modified data/finset.lean +/- theorem finset.disjoint_empty_left +/- theorem finset.disjoint_empty_right + theorem finset.inf_eq_inter + theorem finset.sup_eq_union Modified data/set/disjointed.lean 2018-07-16 20:46:11-04:00 bdc90f6 feat(data/set/basic): more set theorems, normalize naming ESTIMATED CHANGES Modified algebra/module.lean - theorem set.sInter_eq_Inter Modified analysis/topology/topological_space.lean +/- theorem is_open_diff Modified analysis/topology/uniform_space.lean Modified data/analysis/topology.lean Modified data/set/basic.lean + theorem set.compl_subset_compl + theorem set.diff_eq_empty + theorem set.diff_eq_self + theorem set.diff_inter_self - theorem set.diff_neq_empty - theorem set.diff_right_antimono + theorem set.diff_singleton_eq_self + theorem set.diff_subset_diff_left + theorem set.diff_subset_diff_right + theorem set.diff_union_self + theorem set.insert_diff + theorem set.insert_diff_singleton - theorem set.insert_sdiff + theorem set.inter_diff_assoc + theorem set.inter_diff_self +/- theorem set.inter_subset_inter_left +/- theorem set.inter_subset_inter_right + theorem set.inter_union_diff + theorem set.union_diff_cancel_left + theorem set.union_diff_cancel_right + theorem set.union_diff_left + theorem set.union_diff_right + theorem set.union_diff_self + theorem set.union_inter_cancel_left + theorem set.union_inter_cancel_right +/- theorem set.union_subset_union + theorem set.union_subset_union_left + theorem set.union_subset_union_right Modified data/set/disjointed.lean Modified data/set/finite.lean Modified data/set/lattice.lean + theorem disjoint.comm + theorem disjoint.eq_bot + theorem disjoint.symm +/- def disjoint +/- theorem disjoint_bot_left +/- theorem disjoint_bot_right - theorem disjoint_comm + theorem disjoint_iff - theorem disjoint_symm + theorem set.Inter_const +/- theorem set.Inter_eq_comp_Union_comp - theorem set.Inter_eq_sInter_image + theorem set.Inter_eq_sInter_range + theorem set.Inter_inter_distrib + theorem set.Inter_subset + theorem set.Union_const +/- theorem set.Union_eq_comp_Inter_comp + theorem set.Union_eq_range_sigma - theorem set.Union_eq_sUnion_image + theorem set.Union_eq_sUnion_range + theorem set.Union_union_distrib + theorem set.bInter_eq_Inter + theorem set.bUnion_eq_Union +/- theorem set.compl_Inter +/- theorem set.compl_Union - theorem set.compl_subset_compl_iff_subset + theorem set.diff_Inter_left + theorem set.diff_Union_left + theorem set.diff_Union_right + theorem set.disjoint_diff - theorem set.insert_sdiff_singleton + theorem set.inter_Inter_left + theorem set.inter_Inter_right + theorem set.inter_Union_left + theorem set.inter_Union_right - theorem set.inter_distrib_Union_left - theorem set.inter_distrib_Union_right + theorem set.inter_eq_Inter +/- theorem set.mem_Inter - theorem set.mem_Inter_eq + theorem set.mem_Inter_of_mem + theorem set.mem_Union - theorem set.mem_Union_eq +/- theorem set.mem_sInter - theorem set.mem_sInter_eq +/- theorem set.mem_sUnion - theorem set.mem_sUnion_eq + theorem set.mem_sUnion_of_mem + theorem set.range_sigma_eq_Union_range + theorem set.sInter_eq_Inter + theorem set.sInter_eq_bInter +/- theorem set.sInter_subset_of_mem + theorem set.sInter_subset_sInter - theorem set.sUnion_eq_Union' +/- theorem set.sUnion_eq_Union + theorem set.sUnion_eq_bUnion +/- theorem set.sUnion_subset_iff + theorem set.sUnion_subset_sUnion - theorem set.sdiff_empty - theorem set.sdiff_eq: - theorem set.sdiff_inter_same - theorem set.sdiff_singleton_eq_same - theorem set.sdiff_subset_sdiff - theorem set.sdiff_union_same + theorem set.sub_eq_diff +/- theorem set.subset_Union +/- theorem set.subset_sUnion_of_mem + theorem set.union_Inter_left + theorem set.union_Union_left + theorem set.union_Union_right - theorem set.union_distrib_Inter_left + theorem set.union_eq_Union - theorem set.union_of_subset_right - theorem set.union_same_compl - theorem set.union_sdiff_left - theorem set.union_sdiff_right - theorem set.union_sdiff_same Modified linear_algebra/basic.lean Modified logic/schroeder_bernstein.lean Modified order/filter.lean Modified order/galois_connection.lean 2018-07-16 20:17:22-04:00 9f6bcd0 refactor(data/bool): decidable forall bool ESTIMATED CHANGES Modified data/bool.lean - theorem bool.absurd_of_eq_ff_of_eq_tt +/- theorem bool.band_assoc +/- theorem bool.band_comm +/- theorem bool.band_elim_left +/- theorem bool.band_elim_right +/- theorem bool.band_intro +/- theorem bool.band_left_comm +/- theorem bool.bor_assoc +/- theorem bool.bor_comm +/- theorem bool.bor_left_comm +/- theorem bool.bxor_assoc +/- theorem bool.bxor_comm +/- theorem bool.bxor_left_comm +/- theorem bool.eq_ff_of_bnot_eq_tt +/- theorem bool.eq_ff_of_ne_tt +/- theorem bool.eq_tt_of_bnot_eq_ff +/- theorem bool.eq_tt_of_ne_ff + theorem bool.exists_bool + theorem bool.forall_bool 2018-07-16 20:16:24-04:00 8685bf2 refactor(topology/continuity): remove inhabited from dense extend ESTIMATED CHANGES Modified analysis/topology/continuity.lean - theorem dense_embedding.continuous_ext + theorem dense_embedding.continuous_extend - def dense_embedding.ext - theorem dense_embedding.ext_e_eq - theorem dense_embedding.ext_eq + def dense_embedding.extend + theorem dense_embedding.extend_e_eq + theorem dense_embedding.extend_eq - theorem dense_embedding.tendsto_ext + theorem dense_embedding.tendsto_extend Modified analysis/topology/uniform_space.lean 2018-07-16 20:03:13-04:00 57f07e0 refactor(data/set/basic): rename set.set_eq_def -> set.ext_iff ESTIMATED CHANGES Modified analysis/metric_space.lean Modified data/finset.lean +/- theorem finset.coe_image +/- theorem finset.coe_inter +/- theorem finset.coe_union Modified data/semiquot.lean Modified data/set/basic.lean + theorem set.ext_iff - theorem set.set_eq_def Modified data/set/finite.lean Modified group_theory/subgroup.lean Modified linear_algebra/basic.lean Modified order/filter.lean Modified ring_theory/ideals.lean Modified set_theory/zfc.lean 2018-07-16 19:52:54-04:00 4c6d7e2 feat(tactic/interactive): add apply_rules tactic (#190) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean Modified tests/tactics.lean 2018-07-16 19:44:31-04:00 6495c20 feat(algebra/order_functions): abs_eq ESTIMATED CHANGES Modified algebra/order_functions.lean + theorem abs_eq 2018-07-16 19:42:41-04:00 b0de694 feat(tactic/tauto): improve coverage and performances of tauto (#180) ESTIMATED CHANGES Modified logic/basic.lean + theorem iff_iff_and_or_not_and_not Modified tactic/basic.lean Modified tactic/interactive.lean Added tactic/tauto.lean Modified tests/examples.lean Modified tests/tactics.lean 2018-07-16 19:40:28-04:00 c3e24f3 docs(code-review): add check list (#195) [ci-skip] ESTIMATED CHANGES Added PULL_REQUEST_TEMPLATE.md Added docs/code-review.md 2018-07-16 19:39:17-04:00 3a79975 feat(data/quot): quot.hrec_on₂, quotient.hrec_on₂ (#197) ESTIMATED CHANGES Modified data/quot.lean 2018-07-16 19:34:21-04:00 dd6cc57 chore(build): make travis build fail quicker when errors are found ESTIMATED CHANGES Modified .travis.yml Added travis_long.sh 2018-07-16 19:33:09-04:00 631207b feat(data/multiset,...): card_eq_one based on #200 ESTIMATED CHANGES Modified algebra/group_power.lean + theorem neg_one_pow_eq_or Modified data/list/basic.lean + theorem list.length_eq_one Modified data/multiset.lean + theorem multiset.card_eq_one + theorem multiset.empty_eq_zero + theorem multiset.strong_induction_eq Modified logic/basic.lean + theorem and.congr_right_iff 2018-07-16 19:25:02-04:00 ab8813a feat(tactic/interactive): alias "rintros" for "rintro" ESTIMATED CHANGES Modified tactic/interactive.lean 2018-07-16 15:11:29+01:00 df8fc18 feat(data/list/perm): extract cons_subperm_of_mem from subperm_of_subset_nodup (#173) ESTIMATED CHANGES Modified data/list/perm.lean + theorem list.cons_subperm_of_mem 2018-07-16 14:06:55+02:00 20fca1c feat(data/finset): disjoint finsets ESTIMATED CHANGES Modified data/finset.lean + theorem finset.card_disjoint_union + theorem finset.disjoint_empty_left + theorem finset.disjoint_empty_right + theorem finset.disjoint_iff_inter_eq_empty + theorem finset.disjoint_iff_ne + theorem finset.disjoint_insert_left + theorem finset.disjoint_insert_right + theorem finset.disjoint_left + theorem finset.disjoint_of_subset_left + theorem finset.disjoint_of_subset_right + theorem finset.disjoint_right + theorem finset.disjoint_singleton + theorem finset.disjoint_union_left + theorem finset.disjoint_union_right - theorem finset.inter_eq_empty_iff_disjoint + theorem finset.singleton_disjoint Modified data/set/lattice.lean + theorem disjoint_comm 2018-07-16 12:59:35+01:00 844c665 feat(category/applicative): `id` and `comp` functors; proofs by `norm` (#184) ESTIMATED CHANGES Added category/applicative.lean + theorem applicative.map_seq_map + theorem applicative.pure_seq_eq_map' + theorem comp.map_pure + theorem comp.pure_seq_eq_map + theorem comp.seq_assoc + theorem comp.seq_mk + theorem comp.seq_pure Modified category/basic.lean - theorem map_map - def mmap₂ + def mzip_with' + def mzip_with Added category/functor.lean + theorem functor.comp.map_mk + structure functor.comp + theorem functor.map_comp_map + theorem functor.map_id + def id.mk Modified data/prod.lean Modified data/set/basic.lean Added tactic/ext.lean Modified tactic/interactive.lean Modified tests/tactics.lean 2018-07-12 18:02:46-04:00 8dda9cd fix(analysis/topology/continuity): remove an extraneous constraint ESTIMATED CHANGES Modified analysis/topology/continuity.lean +/- theorem continuous_subtype_is_closed_cover 2018-07-12 18:00:11-04:00 42ba098 feat(data/set/basic): diff_subset_iff, diff_subset_comm ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.diff_subset_comm + theorem set.diff_subset_iff 2018-07-12 17:59:05-04:00 17bf1ae feat(analysis/topology/continuity): embedding_inl, embedding_inr ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem embedding_inl + theorem embedding_inr 2018-07-12 08:42:03-04:00 21b918b feat(data/fintype): decidable forall and exists (#189) ESTIMATED CHANGES Modified data/finset.lean Modified data/fintype.lean Modified data/multiset.lean + def multiset.decidable_exists_multiset 2018-07-11 21:00:56-04:00 b1a314f chore(build): Break build process into two parts ESTIMATED CHANGES Modified .travis.yml 2018-07-11 01:33:37-04:00 8d72f62 Revert "chore(build): Break build process into two parts" This reverts commit 890847df6618c5559a4170c36d61bf693f57086d. ESTIMATED CHANGES Modified .travis.yml 2018-07-11 00:08:43-04:00 890847d chore(build): Break build process into two parts ESTIMATED CHANGES Modified .travis.yml 2018-07-08 15:26:47-04:00 c8ad5cf fix(computability/turing_machine): fix import ESTIMATED CHANGES Modified computability/turing_machine.lean 2018-07-08 14:39:57-04:00 e5d5abd feat(data/pfun,...): add some isomorphism theorems ESTIMATED CHANGES Modified data/equiv/basic.lean + def equiv.set_value + theorem equiv.set_value_eq Modified data/fintype.lean Modified data/list/basic.lean + theorem list.filter_of_map Modified data/multiset.lean + def multiset.strong_induction_on - theorem multiset.strong_induction_on Modified data/pfun.lean + def pfun.equiv_subtype + theorem roption.eta + theorem roption.of_option_dom + theorem roption.of_option_eq_get 2018-07-07 02:03:44-04:00 71953e0 feat(order/basic): add extensionality for order structures ESTIMATED CHANGES Modified order/basic.lean + theorem linear_order.ext + theorem partial_order.ext + theorem preorder.ext Modified order/bounded_lattice.lean + theorem lattice.bounded_lattice.ext + theorem lattice.order_bot.ext + theorem lattice.order_bot.ext_bot + theorem lattice.order_top.ext + theorem lattice.order_top.ext_top + theorem with_bot.inf_eq_min + theorem with_bot.lattice_eq_DLO + theorem with_bot.sup_eq_max + theorem with_top.inf_eq_min + theorem with_top.lattice_eq_DLO + theorem with_top.sup_eq_max Modified order/lattice.lean + theorem lattice.inf_eq_min + theorem lattice.lattice.ext + theorem lattice.semilattice_inf.ext + theorem lattice.semilattice_inf.ext_inf + theorem lattice.semilattice_sup.ext + theorem lattice.semilattice_sup.ext_sup + theorem lattice.sup_eq_max 2018-07-06 09:04:17-04:00 ab1861a feat(data/subtype): setoid (subtype p) ESTIMATED CHANGES Modified data/subtype.lean + theorem subtype.equiv_iff + theorem subtype.equivalence 2018-07-06 09:04:17-04:00 d54950a refactor(data/subtype): move out of data/sigma/basic.lean ESTIMATED CHANGES Modified data/equiv/denumerable.lean Modified data/set/basic.lean Modified data/sigma/basic.lean - theorem subtype.coe_eta - theorem subtype.coe_mk - theorem subtype.exists - theorem subtype.ext - theorem subtype.forall - def subtype.map - theorem subtype.map_comp - theorem subtype.map_id - theorem subtype.mk_eq_mk - theorem subtype.val_injective Added data/subtype.lean + theorem subtype.coe_eta + theorem subtype.coe_mk + theorem subtype.exists + theorem subtype.ext + theorem subtype.forall + def subtype.map + theorem subtype.map_comp + theorem subtype.map_id + theorem subtype.mk_eq_mk + theorem subtype.val_injective Modified data/vector2.lean Modified order/basic.lean 2018-07-06 03:46:34-04:00 d194f38 refactor(tactic/rcases): use haveI in tactic.cache ESTIMATED CHANGES Modified tactic/rcases.lean 2018-07-06 03:44:23-04:00 28e011d feat(tactic/cache): split cache related tactics off from `tactic.interactive` ESTIMATED CHANGES Modified data/option.lean Modified logic/basic.lean + theorem not_iff Added tactic/cache.lean Modified tactic/interactive.lean - theorem tactic.interactive.iff.trans - theorem tactic.interactive.imp.swap - theorem tactic.interactive.imp_not_comm - theorem tactic.interactive.not_and_distrib' - theorem tactic.interactive.not_and_distrib - theorem tactic.interactive.not_and_of_not_or_not - theorem tactic.interactive.not_or_distrib - theorem tactic.interactive.or_iff_not_imp_left - theorem tactic.interactive.or_iff_not_imp_right Modified tests/examples.lean 2018-07-06 03:44:23-04:00 06f4778 feat(tactic/tauto): handle `or` in goal ESTIMATED CHANGES Modified tactic/interactive.lean + theorem tactic.interactive.iff.trans + theorem tactic.interactive.imp.swap + theorem tactic.interactive.imp_not_comm + theorem tactic.interactive.not_and_distrib' + theorem tactic.interactive.not_and_distrib + theorem tactic.interactive.not_and_of_not_or_not + theorem tactic.interactive.not_or_distrib + theorem tactic.interactive.or_iff_not_imp_left + theorem tactic.interactive.or_iff_not_imp_right Modified tests/examples.lean 2018-07-06 02:31:12-04:00 b4a8548 feat(tactic/rcases): add rintro tactic ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean Modified tactic/rcases.lean 2018-07-04 13:08:30-04:00 a784602 feat(tactic/tauto): consider `true` and `false` ESTIMATED CHANGES Modified tactic/interactive.lean Modified tests/examples.lean 2018-07-02 18:50:42-04:00 a2e847d fix(algebra/ordered_group): define (0:with_bot) to unfold correctly ESTIMATED CHANGES Modified algebra/ordered_group.lean 2018-07-02 07:22:16-04:00 ff4eeed feat(computability/turing_machine): reduce to 2-symbol TMs ESTIMATED CHANGES Modified computability/turing_machine.lean + def turing.TM0.cfg.map +/- def turing.TM0.init + def turing.TM0.machine.map + theorem turing.TM0.machine.map_respects + theorem turing.TM0.machine.map_step + theorem turing.TM0.map_init +/- theorem turing.TM0.step_supports + def turing.TM0.stmt.map +/- def turing.TM0.supports + theorem turing.TM0.univ_supports + def turing.TM0to1.tr + def turing.TM0to1.tr_cfg + theorem turing.TM0to1.tr_respects + inductive turing.TM0to1.Λ' +/- def turing.TM1.init +/- def turing.TM1.step_aux +/- def turing.TM1to0.tr_cfg +/- theorem turing.TM1to0.tr_supports + theorem turing.TM1to1.exists_enc_dec + def turing.TM1to1.move + def turing.TM1to1.read + def turing.TM1to1.read_aux + theorem turing.TM1to1.step_aux_move + theorem turing.TM1to1.step_aux_read + theorem turing.TM1to1.step_aux_write + theorem turing.TM1to1.supports_stmt_move + theorem turing.TM1to1.supports_stmt_read + theorem turing.TM1to1.supports_stmt_write + def turing.TM1to1.tr + def turing.TM1to1.tr_cfg + def turing.TM1to1.tr_normal + theorem turing.TM1to1.tr_respects + theorem turing.TM1to1.tr_supports + def turing.TM1to1.tr_tape' + theorem turing.TM1to1.tr_tape'_move_left + theorem turing.TM1to1.tr_tape'_move_right + def turing.TM1to1.tr_tape + theorem turing.TM1to1.tr_tape_drop_right + theorem turing.TM1to1.tr_tape_take_right + def turing.TM1to1.write + inductive turing.TM1to1.Λ' +/- def turing.TM2.init +/- def turing.TM2.step_aux +/- theorem turing.TM2to1.tr_respects_aux₃ - def turing.TM2to1.Λ'_inh + def turing.pointed_map + theorem turing.reaches.to₀ + theorem turing.reaches₀.head + theorem turing.reaches₀.refl + theorem turing.reaches₀.single + theorem turing.reaches₀.tail' + theorem turing.reaches₀.tail + theorem turing.reaches₀.trans + def turing.reaches₀ + theorem turing.reaches₀_eq + theorem turing.reaches₁.to₀ + theorem turing.reaches₁_fwd + def turing.tape.map + theorem turing.tape.map_fst + theorem turing.tape.map_mk + theorem turing.tape.map_move + theorem turing.tape.map_write + def turing.tape.mk' Modified data/bool.lean + theorem bool.default_bool + theorem bool.to_bool_eq Modified data/fin.lean + def fin.add_nat Modified data/finset.lean + theorem finset.coe_empty + theorem finset.coe_erase + theorem finset.coe_filter + theorem finset.coe_image + theorem finset.coe_inj + theorem finset.coe_insert + theorem finset.coe_inter + theorem finset.coe_sdiff + theorem finset.coe_singleton + theorem finset.coe_subset + theorem finset.coe_union + theorem finset.mem_coe + def finset.to_set Modified data/fintype.lean Modified data/list/basic.lean + theorem list.bind_append + theorem list.drop_add + theorem list.drop_left' + theorem list.drop_left + theorem list.drop_one + theorem list.ne_nil_of_mem + theorem list.reverse_repeat + def list.take' + theorem list.take'_eq_take + theorem list.take'_left' + theorem list.take'_left + theorem list.take'_length + theorem list.take'_nil + theorem list.take_left' + theorem list.take_left Modified data/set/finite.lean - theorem finset.coe_empty - theorem finset.coe_eq_coe - theorem finset.coe_erase - theorem finset.coe_filter - theorem finset.coe_image - theorem finset.coe_insert - theorem finset.coe_inter - theorem finset.coe_sdiff - theorem finset.coe_singleton - theorem finset.coe_subseteq_coe - theorem finset.coe_union - theorem finset.mem_coe - def finset.to_set Modified data/vector2.lean +/- theorem vector.mk_to_list + def vector.reverse Modified linear_algebra/basic.lean Modified logic/embedding.lean + theorem function.embedding.set_value_eq 2018-07-02 13:11:51+02:00 b5e07ad fix(analysis/topology): prod.ext is now prod.ext_iff ESTIMATED CHANGES Modified analysis/topology/continuity.lean 2018-07-02 11:47:11+02:00 3f66b3a feat(analysis/topology/continuity): generalized tube lemma and some corollaries ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem closed_of_compact + theorem compact_compact_separated + theorem continuous_swap + theorem diagonal_eq_range_diagonal_map + theorem generalized_tube_lemma + theorem nhds_contain_boxes.comm + theorem nhds_contain_boxes.symm + def nhds_contain_boxes + theorem nhds_contain_boxes_of_compact + theorem nhds_contain_boxes_of_singleton + theorem prod_subset_compl_diagonal_iff_disjoint Modified analysis/topology/topological_space.lean + theorem is_open_bInter + theorem is_open_bUnion 2018-07-02 11:47:11+02:00 225dd84 feat(data/set/lattice): add more lemmas pertaining to bInter, bUnion ESTIMATED CHANGES Modified data/set/lattice.lean + theorem set.bInter_subset_bInter_right + theorem set.bUnion_subset_bUnion_right + theorem set.compl_bInter + theorem set.compl_bUnion 2018-06-30 23:04:40-04:00 7b0c150 refactor(data/equiv): reorganize data.equiv deps ESTIMATED CHANGES Modified computability/primrec.lean Modified data/array/lemmas.lean + def equiv.array_equiv_fin + def equiv.d_array_equiv_fin Renamed data/equiv.lean to data/equiv/basic.lean - def equiv.array_equiv_fin - def equiv.bool_prod_nat_equiv_nat - def equiv.d_array_equiv_fin - def equiv.int_equiv_nat - def equiv.nat_prod_nat_equiv_nat - def equiv.nat_sum_bool_equiv_nat - def equiv.nat_sum_nat_equiv_nat - def equiv.prod_equiv_of_equiv_nat - def equiv.vector_equiv_array - def equiv.vector_equiv_fin - theorem function.left_inverse.comp - theorem function.left_inverse.f_g_eq_id - theorem function.right_inverse.comp - theorem function.right_inverse.g_f_eq_id Added data/equiv/denumerable.lean + theorem denumerable.decode_eq_of_nat + theorem denumerable.decode_is_some + theorem denumerable.encode_of_nat + def denumerable.equiv₂ + def denumerable.eqv + def denumerable.mk' + def denumerable.of_equiv + theorem denumerable.of_equiv_of_nat + def denumerable.of_nat + theorem denumerable.of_nat_encode + theorem denumerable.of_nat_nat + theorem denumerable.of_nat_of_decode + def denumerable.pair + theorem denumerable.prod_nat_of_nat + theorem denumerable.prod_of_nat_val + theorem denumerable.sigma_of_nat_val Renamed data/encodable.lean to data/equiv/encodable.lean - def encodable.decode_list - theorem encodable.decode_list_succ - theorem encodable.decode_list_zero - def encodable.decode_multiset - def encodable.encodable_of_list - def encodable.encode_list - theorem encodable.encode_list_cons - theorem encodable.encode_list_nil - def encodable.encode_multiset - theorem encodable.length_le_encode - def encodable.trunc_encodable_of_fintype Renamed data/denumerable.lean to data/equiv/list.lean - theorem denumerable.decode_eq_of_nat - theorem denumerable.decode_is_some - theorem denumerable.encode_of_nat - def denumerable.equiv₂ - def denumerable.eqv - def denumerable.mk' - def denumerable.of_equiv - theorem denumerable.of_equiv_of_nat - def denumerable.of_nat - theorem denumerable.of_nat_encode - theorem denumerable.of_nat_nat - theorem denumerable.of_nat_of_decode - def denumerable.pair - theorem denumerable.prod_nat_of_nat - theorem denumerable.prod_of_nat_val - theorem denumerable.sigma_of_nat_val + def encodable.decode_list + theorem encodable.decode_list_succ + theorem encodable.decode_list_zero + def encodable.decode_multiset + def encodable.encodable_of_list + def encodable.encode_list + theorem encodable.encode_list_cons + theorem encodable.encode_list_nil + def encodable.encode_multiset + theorem encodable.length_le_encode + def encodable.trunc_encodable_of_fintype Added data/equiv/nat.lean + def equiv.bool_prod_nat_equiv_nat + def equiv.int_equiv_nat + def equiv.nat_prod_nat_equiv_nat + def equiv.nat_sum_nat_equiv_nat + def equiv.prod_equiv_of_equiv_nat Modified data/erased.lean Modified data/fintype.lean Modified data/rat.lean Modified data/real/cau_seq.lean Modified data/set/basic.lean + theorem set.image_congr + theorem set.subtype_val_image + theorem set.subtype_val_range Modified data/set/countable.lean Modified data/set/enumerate.lean Modified data/set/lattice.lean - theorem set.image_congr - theorem set.subtype_val_image - theorem set.subtype_val_range Modified data/vector2.lean + def equiv.vector_equiv_array + def equiv.vector_equiv_fin Modified group_theory/coset.lean Modified group_theory/free_group.lean Modified logic/embedding.lean Modified logic/function.lean + theorem function.left_inverse.comp + theorem function.left_inverse.comp_eq_id + theorem function.right_inverse.comp + theorem function.right_inverse.comp_eq_id Modified order/order_iso.lean 2018-06-30 00:43:36-04:00 913f702 feat(computability/turing_machine): rework proofs, simplify TM lang ESTIMATED CHANGES Modified algebra/group_power.lean Modified computability/turing_machine.lean +/- def turing.TM0.eval + def turing.TM0.init +/- def turing.TM1.eval + def turing.TM1.init - def turing.TM1.reaches + def turing.TM1.step_aux - def turing.TM1to0.tr' +/- def turing.TM1to0.tr + def turing.TM1to0.tr_aux +/- def turing.TM1to0.tr_cfg + theorem turing.TM1to0.tr_eval - theorem turing.TM1to0.tr_reaches + theorem turing.TM1to0.tr_respects +/- theorem turing.TM1to0.tr_supports +/- def turing.TM1to0.Λ' +/- def turing.TM2.eval + def turing.TM2.init - theorem turing.TM2.move_until_left_reaches₁ - theorem turing.TM2.move_until_right_reaches₁ - def turing.TM2.reaches₁ - theorem turing.TM2.reaches₁_step + inductive turing.TM2to1.st_act + def turing.TM2to1.st_run + def turing.TM2to1.st_var + def turing.TM2to1.st_write + def turing.TM2to1.stackel.get + def turing.TM2to1.stackel.is_bottom + def turing.TM2to1.stackel.is_top + inductive turing.TM2to1.stackel + def turing.TM2to1.stackel_equiv + theorem turing.TM2to1.step_run + theorem turing.TM2to1.supports_run - def turing.TM2to1.tr' + inductive turing.TM2to1.tr_cfg - def turing.TM2to1.tr_cfg + theorem turing.TM2to1.tr_cfg_init + theorem turing.TM2to1.tr_eval + theorem turing.TM2to1.tr_eval_dom + def turing.TM2to1.tr_init + def turing.TM2to1.tr_normal + theorem turing.TM2to1.tr_normal_run - theorem turing.TM2to1.tr_reaches + theorem turing.TM2to1.tr_respects + theorem turing.TM2to1.tr_respects_aux + theorem turing.TM2to1.tr_respects_aux₁ + theorem turing.TM2to1.tr_respects_aux₂ + theorem turing.TM2to1.tr_respects_aux₃ + def turing.TM2to1.tr_st_act + def turing.TM2to1.tr_stk + theorem turing.TM2to1.tr_stmts₁_run + theorem turing.TM2to1.{l} + def turing.TM2to1.Γ' + inductive turing.TM2to1.Λ' - def turing.TM2to1.Λ' + def turing.TM2to1.Λ'_inh - structure turing.TM3.cfg - def turing.TM3.eval - def turing.TM3.reaches - def turing.TM3.step - def turing.TM3.step_aux - theorem turing.TM3.step_supports - inductive turing.TM3.stmt - theorem turing.TM3.stmts_supports_stmt - theorem turing.TM3.stmts_trans - theorem turing.TM3.stmts₁_self - theorem turing.TM3.stmts₁_supports_stmt_mono - theorem turing.TM3.stmts₁_trans - def turing.TM3.supports - def turing.TM3.supports_stmt - def turing.TM3to2.at_stack - def turing.TM3to2.stackel.get - def turing.TM3to2.stackel.is_bottom - def turing.TM3to2.stackel.is_top - inductive turing.TM3to2.stackel - def turing.TM3to2.stackel_equiv - def turing.TM3to2.tr - inductive turing.TM3to2.tr_cfg - theorem turing.TM3to2.tr_reaches - def turing.TM3to2.tr_stk - theorem turing.TM3to2.tr_supports - def turing.TM3to2.Γ' - def turing.TM3to2.Λ' - def turing.dir.rev + theorem turing.eval_maximal + theorem turing.eval_maximal₁ + def turing.frespects + theorem turing.frespects_eq + theorem turing.fun_respects + theorem turing.mem_eval + def turing.reaches + theorem turing.reaches_eval + theorem turing.reaches_total + def turing.reaches₁ + theorem turing.reaches₁_eq + def turing.respects + theorem turing.tr_eval' + theorem turing.tr_eval + theorem turing.tr_eval_dom + theorem turing.tr_eval_rev + theorem turing.tr_reaches + theorem turing.tr_reaches_rev + theorem turing.tr_reaches₁ Modified data/fintype.lean + def finset.insert_none + theorem finset.mem_insert_none + theorem finset.some_mem_insert_none Modified data/list/basic.lean + theorem list.map_repeat + theorem list.map_reverse_core + theorem list.map_tail +/- theorem list.repeat_add + theorem list.repeat_succ + theorem list.reverse_core_eq + theorem list.tail_repeat Modified data/option.lean + theorem option.eq_none_iff_forall_not_mem + theorem option.mem_unique Modified data/pfun.lean +/- theorem pfun.fix_induction Modified logic/relation.lean + theorem relation.refl_trans_gen.total_of_right_unique 2018-06-30 00:36:55-04:00 cfb5dfd refactor(data/finset): use partial_order to define lattice structure ESTIMATED CHANGES Modified data/finset.lean 2018-06-30 00:36:27-04:00 ddbb813 feat(data/fintype): finite choices, computably ESTIMATED CHANGES Modified data/fintype.lean + def quotient.fin_choice + def quotient.fin_choice_aux + theorem quotient.fin_choice_aux_eq + theorem quotient.fin_choice_eq Modified data/quot.lean + theorem quotient.choice_eq 2018-06-25 20:05:43-04:00 a7b749f fix(order/boolean_algebra): neg_unique: replace rsimp proof, speed up build ESTIMATED CHANGES Modified order/boolean_algebra.lean 2018-06-25 05:45:48-04:00 97a1d1b feat(data/fintype): more fintype instances (#145) ESTIMATED CHANGES Modified data/fintype.lean Modified data/set/finite.lean 2018-06-25 05:43:26-04:00 90aeb8e feat(tactic/solve_by_elim): writing a symm_apply tactic for solve_by_elim (#164) writing a symm_apply tactic, and have solve_by_elim use it, per discussion with @SimonHudon ESTIMATED CHANGES Modified tactic/interactive.lean Modified tests/tactics.lean 2018-06-25 05:42:30-04:00 a39c5ca correcting comment ESTIMATED CHANGES Modified algebra/euclidean_domain.lean 2018-06-25 05:41:01-04:00 0a13c05 feat(list/basic): map_subset from #166 ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.map_subset 2018-06-25 05:35:22-04:00 4ec65f5 fix(data/list/basic): simplify last_append, speed up build ESTIMATED CHANGES Modified data/list/basic.lean 2018-06-25 05:29:11-04:00 516b254 feat(tactic/ring2): alternative ring tactic ESTIMATED CHANGES Modified data/num/lemmas.lean +/- theorem num.cast_sub' + theorem num.to_znum_inj + theorem znum.abs_to_znum Added tactic/ring2.lean + theorem tactic.ring2.correctness + def tactic.ring2.csring_expr.eval + inductive tactic.ring2.csring_expr + def tactic.ring2.horner_expr.add + def tactic.ring2.horner_expr.add_aux + def tactic.ring2.horner_expr.add_const + def tactic.ring2.horner_expr.atom + def tactic.ring2.horner_expr.cseval + theorem tactic.ring2.horner_expr.cseval_add + theorem tactic.ring2.horner_expr.cseval_add_const + theorem tactic.ring2.horner_expr.cseval_atom + theorem tactic.ring2.horner_expr.cseval_horner' + theorem tactic.ring2.horner_expr.cseval_mul + theorem tactic.ring2.horner_expr.cseval_mul_const + theorem tactic.ring2.horner_expr.cseval_of_csexpr + theorem tactic.ring2.horner_expr.cseval_pow + def tactic.ring2.horner_expr.horner' + def tactic.ring2.horner_expr.inv + def tactic.ring2.horner_expr.is_cs + def tactic.ring2.horner_expr.mul + def tactic.ring2.horner_expr.mul_aux + def tactic.ring2.horner_expr.mul_const + def tactic.ring2.horner_expr.neg + def tactic.ring2.horner_expr.of_csexpr + def tactic.ring2.horner_expr.pow + def tactic.ring2.horner_expr.repr + inductive tactic.ring2.horner_expr + def tactic.ring2.tree.get + def tactic.ring2.tree.index_of + def tactic.ring2.tree.of_rbnode + inductive tactic.ring2.{u} 2018-06-21 08:06:52-04:00 4082136 feat(tactic/refine_struct): match `{ .. }` in subexpressions (#162) ESTIMATED CHANGES Modified tactic/interactive.lean Modified tests/tactics.lean + def my_bar + def my_foo 2018-06-21 08:05:27-04:00 aa55cba fix(order/lattice): typo ESTIMATED CHANGES Modified order/lattice.lean 2018-06-20 22:42:18-04:00 905345a fix(data/array/lemmas,...): fix build ESTIMATED CHANGES Modified data/array/lemmas.lean Modified set_theory/cofinality.lean 2018-06-20 21:42:57-04:00 a30b7c7 feat(data/string): fix string_lt, add repr for multiset, pnat ESTIMATED CHANGES Added data/char.lean Modified data/finset.lean Modified data/list/basic.lean + theorem list.lex.append_left + theorem list.lex.append_right + theorem list.lex.cons_iff +/- theorem list.lex.imp + theorem list.lex.ne_iff + theorem list.lex.to_ne +/- inductive list.lex - theorem list.lex_append_left - theorem list.lex_append_right - theorem list.lex_ne_iff - theorem list.ne_of_lex_ne + theorem list.nil_lt_cons +/- theorem list.reverse_cons' +/- theorem list.reverse_cons Modified data/list/perm.lean Modified data/multiset.lean Modified data/pnat.lean Added data/string.lean + theorem string.le_iff_to_list_le + theorem string.lt_iff_to_list_lt + def string.ltb + theorem string.to_list_inj Modified order/basic.lean +/- theorem is_order_connected.neg_trans +/- theorem is_strict_weak_order_of_is_order_connected 2018-06-19 14:32:22-04:00 fbe1047 feat(tactic/refine_struct): add `refine_struct` to use goal tags (#147) ESTIMATED CHANGES Modified algebra/pi_instances.lean Modified category/basic.lean + def mmap₂ Added data/dlist/basic.lean + def dlist.join Modified data/multiset.lean Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean 2018-06-19 09:53:45-04:00 2216460 Merge branch 'master' of github.com:leanprover/mathlib ESTIMATED CHANGES Modified analysis/topology/continuity.lean Modified analysis/topology/uniform_space.lean Modified category/basic.lean + theorem id_map' + theorem is_comm_applicative.commutative_map + theorem map_map + theorem map_seq + theorem pure_id'_seq + theorem seq_map_assoc Modified computability/partrec.lean +/- theorem partrec.comp 2018-06-19 08:25:55-04:00 f22285c feat(algebra/pi_instances): add apply lemmas (#149) ESTIMATED CHANGES Modified algebra/pi_instances.lean + theorem pi.add_apply + theorem pi.inv_apply + theorem pi.mul_apply + theorem pi.neg_apply + theorem pi.one_apply + theorem pi.smul_apply + theorem pi.zero_apply 2018-06-19 08:19:49-04:00 0a0e8a5 feat(tactic/ext): `ext` now applies to `prod`; fix `ext` on function types (#158) ESTIMATED CHANGES Modified analysis/metric_space.lean Modified analysis/topology/topological_space.lean Modified data/prod.lean +/- theorem prod.ext + theorem prod.ext_iff Modified docs/tactics.md Modified tactic/basic.lean Modified tactic/interactive.lean Modified tests/tactics.lean 2018-06-19 08:17:52-04:00 0087c2c feat(analysis/topology): quotient spaces and quotient maps (#155) * style(analysis/topology): simplify induced_mono and induced_sup * style(analysis/topology/topological_space): reorganize section constructions * feat(analysis/topology/topological_space): add more galois connection lemmas * feat(analysis/topology): quotient spaces and quotient maps ESTIMATED CHANGES Modified analysis/topology/continuity.lean + theorem coinduced_compose + theorem coinduced_id + theorem continuous_quot_lift + theorem continuous_quot_mk + theorem continuous_quotient_lift + theorem continuous_quotient_mk - theorem induced_mono - theorem induced_sup + theorem quotient_map.continuous_iff + def quotient_map + theorem quotient_map_compose + theorem quotient_map_id + theorem quotient_map_of_quotient_map_compose + theorem quotient_map_quot_mk + theorem quotient_map_quotient_mk Modified analysis/topology/topological_space.lean + theorem coinduced_inf + theorem coinduced_infi + theorem coinduced_mono + theorem coinduced_top + theorem gc_induced_coinduced + theorem induced_bot + theorem induced_mono + theorem induced_sup + theorem induced_supr 2018-06-19 08:13:31-04:00 5e0b137 feat (group_theory/coset): quotient by normal subgroup is a group ESTIMATED CHANGES Modified group_theory/coset.lean 2018-06-19 08:12:39-04:00 8609a3d feat(split_ifs): fail if no progress (#153) ESTIMATED CHANGES Modified tactic/split_ifs.lean Modified tests/split_ifs.lean 2018-06-19 08:11:25-04:00 f8e3965 blah ESTIMATED CHANGES Modified algebra/ring.lean 2018-06-19 08:09:27-04:00 4e2aea5 feat(data/option): is_some and is_none simp theorems ESTIMATED CHANGES Modified data/hash_map.lean Modified data/option.lean + theorem option.is_none_none + theorem option.is_none_some + theorem option.is_some_none + theorem option.is_some_some 2018-06-19 08:08:36-04:00 e1f795d chore(data/list/basic): minor cleanup of find variables (#137) ESTIMATED CHANGES Modified analysis/topology/continuity.lean Modified analysis/topology/uniform_space.lean Modified category/basic.lean - theorem id_map' - theorem is_comm_applicative.commutative_map - theorem map_map - theorem map_seq - theorem pure_id'_seq - theorem seq_map_assoc Modified computability/partrec.lean +/- theorem partrec.comp Modified data/list/basic.lean +/- def list.find +/- theorem list.find_cons_of_neg +/- theorem list.find_cons_of_pos +/- theorem list.find_eq_none +/- theorem list.find_mem +/- theorem list.find_nil +/- theorem list.find_some 2018-06-17 10:20:07-04:00 896455c feat(category): add functor_norm simp_attr, and class is_comm_applicative ESTIMATED CHANGES Modified analysis/topology/continuity.lean Modified analysis/topology/uniform_space.lean Modified category/basic.lean + theorem id_map' + theorem is_comm_applicative.commutative_map + theorem map_map + theorem map_seq + theorem pure_id'_seq + theorem seq_map_assoc Modified computability/partrec.lean +/- theorem partrec.comp 2018-06-16 17:39:03-04:00 85bc56a feat(computability/turing_machine): finish stack machine proof ESTIMATED CHANGES Modified algebra/group_power.lean Modified computability/turing_machine.lean - theorem turing.TM2.move_until_left_reaches + theorem turing.TM2.move_until_left_reaches₁ - theorem turing.TM2.move_until_right_reaches + theorem turing.TM2.move_until_right_reaches₁ + def turing.TM2.reaches₁ + theorem turing.TM2.reaches₁_step +/- def turing.TM3.eval +/- def turing.TM3to2.at_stack - theorem turing.TM3to2.at_stack_supports - def turing.TM3to2.pop - def turing.TM3to2.push - def turing.TM3to2.stack_val +/- def turing.TM3to2.stackel.get +/- def turing.TM3to2.stackel.is_bottom +/- def turing.TM3to2.stackel.is_top +/- inductive turing.TM3to2.stackel +/- def turing.TM3to2.stackel_equiv + theorem turing.TM3to2.tr_reaches + def turing.TM3to2.tr_stk - def turing.TM3to2.tr_tape - def turing.TM3to2.Γ'.write_stack + def turing.TM3to2.Γ' - structure turing.TM3to2.Γ' - def turing.TM3to2.Γ'_equiv + def turing.dwrite + theorem turing.dwrite_eq + theorem turing.dwrite_ne + theorem turing.dwrite_self +/- theorem turing.tape.move_left_nth +/- theorem turing.tape.move_right_nth + theorem turing.tape.nth_zero +/- theorem turing.tape.write_nth Modified data/list/basic.lean + theorem list.map_eq_append_split + theorem list.repeat_add Modified group_theory/free_group.lean Modified logic/relation.lean + theorem relation.refl_trans_gen_iff_eq_or_trans_gen + theorem relation.trans_gen.head' + theorem relation.trans_gen.head'_iff + theorem relation.trans_gen.head + theorem relation.trans_gen.tail' + theorem relation.trans_gen.tail'_iff + theorem relation.trans_gen.to_refl + theorem relation.trans_gen.trans + theorem relation.trans_gen.trans_left + theorem relation.trans_gen.trans_right + inductive relation.trans_gen 2018-06-15 05:11:08+07:00 fba4d89 fix(analysis/topology/continuity): remove unused code ESTIMATED CHANGES Modified analysis/topology/continuity.lean +/- theorem continuous_apply 2018-06-13 01:28:56+07:00 fe590ca fix(data/num/lemmas): fix formatting ESTIMATED CHANGES Modified data/num/lemmas.lean +/- theorem pos_num.cast_one' +/- theorem pos_num.cast_one + theorem pos_num.one_add 2018-06-13 00:32:23+07:00 4f32a4b feat(data/num/basic): to_nat' function for efficient nat -> num in VM ESTIMATED CHANGES Modified data/num/basic.lean + def num.of_nat' + def znum.of_int' Modified data/num/lemmas.lean + theorem num.cast_zero' + theorem num.of_nat'_eq + theorem num.of_nat_cast + theorem pos_num.cast_one' + theorem znum.cast_zero' + theorem znum.of_int'_eq + theorem znum.of_int_cast + theorem znum.of_nat_cast 2018-06-12 22:37:08+07:00 99101ea feat(data/num/basic): add div,mod,gcd for num,znum ESTIMATED CHANGES Modified algebra/ordered_ring.lean + theorem mul_lt_mul'' Modified data/int/basic.lean + theorem int.coe_nat_div + theorem int.mem_to_nat' +/- theorem int.neg_succ_of_nat_div +/- theorem int.of_nat_div + def int.to_nat' Modified data/num/basic.lean + def num.div2 + def num.div + def num.gcd + def num.gcd_aux + def num.mod + def num.nat_size + def pos_num.div' + def pos_num.divmod + def pos_num.divmod_aux + def pos_num.mod' + def pos_num.nat_size + def pos_num.sqrt_aux1 + def pos_num.sqrt_aux + def znum.abs + def znum.div + def znum.gcd + def znum.mod Modified data/num/lemmas.lean + theorem num.cast_bit0 + theorem num.cast_bit1 + theorem num.cast_of_znum + theorem num.cast_pos + theorem num.div_to_nat + theorem num.dvd_iff_mod_eq_zero + theorem num.dvd_to_nat + theorem num.gcd_to_nat + theorem num.gcd_to_nat_aux + theorem num.mem_of_znum' + theorem num.mod_to_nat + theorem num.nat_size_to_nat +/- theorem num.of_nat_to_znum +/- theorem num.of_nat_to_znum_neg + theorem num.of_znum'_to_nat + theorem num.of_znum_to_nat + theorem num.size_eq_nat_size + theorem num.size_to_nat + theorem num.sub_to_nat + theorem num.to_nat_to_int +/- theorem pos_num.cast_inj + theorem pos_num.div'_to_nat + theorem pos_num.divmod_to_nat + theorem pos_num.divmod_to_nat_aux + theorem pos_num.mod'_to_nat + theorem pos_num.nat_size_pos + theorem pos_num.nat_size_to_nat + theorem pos_num.size_eq_nat_size + theorem pos_num.to_int_eq_succ_pred + theorem pos_num.to_nat_eq_succ_pred + theorem pos_num.to_nat_to_int + theorem znum.abs_to_nat + theorem znum.div_to_int + theorem znum.dvd_iff_mod_eq_zero + theorem znum.dvd_to_int + theorem znum.gcd_to_nat + theorem znum.mod_to_int 2018-06-12 22:37:08+07:00 3c554a3 refactor(data/equiv): move subtype.map ESTIMATED CHANGES Modified data/equiv.lean +/- def equiv.decidable_eq_of_equiv +/- def equiv.inhabited_of_equiv - def subtype.map - theorem subtype.map_comp - theorem subtype.map_id Modified data/sigma/basic.lean + def subtype.map + theorem subtype.map_comp + theorem subtype.map_id 2018-06-12 22:37:08+07:00 0865bce fix(tactic/ring): fix normalization bugs fixes #84 ESTIMATED CHANGES Modified tactic/ring.lean +/- theorem tactic.ring.horner_add_horner_gt +/- theorem tactic.ring.horner_add_horner_lt 2018-06-11 14:05:37+07:00 90fc912 feat(data/list): add parametricity for perm ESTIMATED CHANGES Modified data/list/perm.lean + theorem list.forall₂_comp_perm_eq_perm_comp_forall₂ + theorem list.perm_comp_forall₂ + theorem list.perm_comp_perm + theorem list.rel_perm + theorem list.rel_perm_imp 2018-06-11 14:05:37+07:00 9546e62 feat(data/list): add parametricity rules for list operations ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.bi_unique_forall₂ + theorem list.filter_map_cons + theorem list.forall₂_cons_left_iff + theorem list.forall₂_cons_right_iff + theorem list.forall₂_eq_eq_eq + theorem list.forall₂_flip + theorem list.forall₂_map_left_iff + theorem list.forall₂_map_right_iff - theorem list.forall₂_nil_left + theorem list.forall₂_nil_left_iff - theorem list.forall₂_nil_right + theorem list.forall₂_nil_right_iff + theorem list.forall₂_refl + theorem list.forall₂_same + theorem list.left_unique_forall₂ + theorem list.rel_append + theorem list.rel_bind + theorem list.rel_filter + theorem list.rel_filter_map + theorem list.rel_foldl + theorem list.rel_foldr + theorem list.rel_join + theorem list.rel_map + theorem list.rel_mem + theorem list.rel_nodup + theorem list.rel_prod + theorem list.rel_sections + theorem list.right_unique_forall₂ 2018-06-11 14:05:09+07:00 1416ebb feat(data/option): add relator option.rel ESTIMATED CHANGES Modified data/option.lean + inductive option.rel 2018-06-11 14:04:44+07:00 205e3b4 feat(logic/relation): add relation composition, map, and bi_unique ESTIMATED CHANGES Modified logic/relation.lean + def relation.comp + theorem relation.comp_assoc + theorem relation.comp_eq + theorem relation.comp_iff + theorem relation.eq_comp + theorem relation.flip_comp + theorem relation.iff_comp Added logic/relator.lean + def relator.bi_unique + theorem relator.left_unique_flip + theorem relator.rel_and + theorem relator.rel_eq + theorem relator.rel_iff + theorem relator.rel_or 2018-06-02 10:36:21-04:00 344192a refactor(computability): move out of data directory ESTIMATED CHANGES Renamed data/computability/halting.lean to computability/halting.lean Renamed data/computability/partrec.lean to computability/partrec.lean Renamed data/computability/partrec_code.lean to computability/partrec_code.lean Renamed data/computability/primrec.lean to computability/primrec.lean Renamed data/computability/turing_machine.lean to computability/turing_machine.lean 2018-06-02 10:36:16-04:00 5603595 feat(computability/turing_machine): proving the TM reductions ESTIMATED CHANGES Modified data/computability/turing_machine.lean + structure turing.TM0.cfg + def turing.TM0.eval + def turing.TM0.machine - structure turing.TM0.machine + def turing.TM0.reaches - structure turing.TM0.state +/- def turing.TM0.step + structure turing.TM1.cfg + def turing.TM1.eval + def turing.TM1.reaches - structure turing.TM1.state +/- def turing.TM1.step +/- theorem turing.TM1.step_supports + theorem turing.TM1.stmts_supports_stmt + theorem turing.TM1.stmts_trans +/- theorem turing.TM1.stmts₁_self + theorem turing.TM1.stmts₁_supports_stmt_mono + theorem turing.TM1.stmts₁_trans +/- def turing.TM1.supports +/- def turing.TM1.supports_stmt + def turing.TM1to0.tr' + def turing.TM1to0.tr + def turing.TM1to0.tr_cfg + theorem turing.TM1to0.tr_reaches + theorem turing.TM1to0.tr_supports - def turing.TM1to0.trans - def turing.TM1to0.translate + def turing.TM1to0.Λ' + structure turing.TM2.cfg + def turing.TM2.eval + theorem turing.TM2.move_until_left_reaches + theorem turing.TM2.move_until_right_reaches + def turing.TM2.reaches - structure turing.TM2.state +/- def turing.TM2.step +/- def turing.TM2.step_aux + theorem turing.TM2.step_supports + theorem turing.TM2.stmts_supports_stmt + theorem turing.TM2.stmts_trans + theorem turing.TM2.stmts₁_self + theorem turing.TM2.stmts₁_supports_stmt_mono + theorem turing.TM2.stmts₁_trans + def turing.TM2.supports + def turing.TM2.supports_stmt + def turing.TM2to1.tr' + def turing.TM2to1.tr + def turing.TM2to1.tr_cfg + theorem turing.TM2to1.tr_reaches + theorem turing.TM2to1.tr_supports - def turing.TM2to1.translate' - def turing.TM2to1.translate + def turing.TM2to1.Λ' + structure turing.TM3.cfg + def turing.TM3.eval - structure turing.TM3.machine + def turing.TM3.reaches - structure turing.TM3.state +/- def turing.TM3.step +/- def turing.TM3.step_aux + theorem turing.TM3.step_supports + theorem turing.TM3.stmts_supports_stmt + theorem turing.TM3.stmts_trans + theorem turing.TM3.stmts₁_self + theorem turing.TM3.stmts₁_supports_stmt_mono + theorem turing.TM3.stmts₁_trans + def turing.TM3.supports + def turing.TM3.supports_stmt - structure turing.TM3to2.alph + theorem turing.TM3to2.at_stack_supports + def turing.TM3to2.stack_val + def turing.TM3to2.tr + inductive turing.TM3to2.tr_cfg + theorem turing.TM3to2.tr_supports + def turing.TM3to2.tr_tape - def turing.TM3to2.translate + def turing.TM3to2.Γ'.write_stack + structure turing.TM3to2.Γ' + def turing.TM3to2.Γ'_equiv + def turing.TM3to2.Λ' + def turing.eval - def turing.move_tape + def turing.tape.mk + def turing.tape.move + theorem turing.tape.move_left_nth + theorem turing.tape.move_right_nth + def turing.tape.nth + def turing.tape.write + theorem turing.tape.write_nth + theorem turing.tape.write_self + def turing.tape Modified data/equiv.lean +/- def equiv.d_array_equiv_fin Modified data/finset.lean +/- theorem finset.pi_insert Modified data/fintype.lean + theorem fintype.card_option Modified data/multiset.lean Modified logic/basic.lean - theorem exists_eq' +/- theorem exists_eq + theorem exists_eq_left' + theorem exists_eq_left Modified logic/relation.lean + theorem relation.refl_trans_gen_closed + theorem relation.refl_trans_gen_eq_self + theorem relation.refl_trans_gen_idem + theorem relation.refl_trans_gen_lift' - theorem relation.refl_trans_gen_refl_trans_gen 2018-06-01 22:49:29-04:00 dd1c558 feat(algebra/ordered_group): with_bot as an ordered monoid ESTIMATED CHANGES Modified algebra/ordered_group.lean 2018-06-01 22:48:49-04:00 372bdab feat(algebra/archimedean): some more floor thms ESTIMATED CHANGES Modified algebra/archimedean.lean + theorem floor_one + theorem floor_zero + theorem rat.cast_floor 2018-05-31 03:00:24-04:00 b375264 feat(computability/turing_machine): add TMs and reductions ESTIMATED CHANGES Modified data/array/lemmas.lean Modified data/computability/halting.lean Added data/computability/turing_machine.lean + structure turing.TM0.machine + structure turing.TM0.state + def turing.TM0.step + theorem turing.TM0.step_supports + inductive turing.TM0.stmt + def turing.TM0.supports + structure turing.TM1.state + def turing.TM1.step + theorem turing.TM1.step_supports + inductive turing.TM1.stmt + theorem turing.TM1.stmts₁_self + def turing.TM1.supports + def turing.TM1.supports_stmt + def turing.TM1to0.trans + def turing.TM1to0.translate + structure turing.TM2.state + def turing.TM2.step + def turing.TM2.step_aux + inductive turing.TM2.stmt + def turing.TM2to1.translate' + def turing.TM2to1.translate + structure turing.TM3.machine + structure turing.TM3.state + def turing.TM3.step + def turing.TM3.step_aux + inductive turing.TM3.stmt + structure turing.TM3to2.alph + def turing.TM3to2.at_stack + def turing.TM3to2.pop + def turing.TM3to2.push + def turing.TM3to2.stackel.get + def turing.TM3to2.stackel.is_bottom + def turing.TM3to2.stackel.is_top + inductive turing.TM3to2.stackel + def turing.TM3to2.stackel_equiv + def turing.TM3to2.translate + def turing.dir.rev + inductive turing.dir + def turing.move_tape Modified data/fintype.lean Modified data/real/basic.lean +/- def real Modified data/sum.lean 2018-05-30 15:29:43-04:00 bdd54ac feat(data/computablility): reduced partrec ESTIMATED CHANGES Modified data/computability/halting.lean + theorem nat.partrec'.comp' + theorem nat.partrec'.comp₁ + theorem nat.partrec'.head + theorem nat.partrec'.idv + theorem nat.partrec'.of_eq + theorem nat.partrec'.of_part + theorem nat.partrec'.of_prim + theorem nat.partrec'.part_iff + theorem nat.partrec'.part_iff₁ + theorem nat.partrec'.part_iff₂ + theorem nat.partrec'.rfind_opt + theorem nat.partrec'.tail + theorem nat.partrec'.to_part + theorem nat.partrec'.vec.prim + def nat.partrec'.vec + theorem nat.partrec'.vec_iff + inductive nat.partrec' Modified data/computability/partrec.lean + theorem computable.fin_app + theorem computable.list_of_fn + theorem computable.vector_cons + theorem computable.vector_head + theorem computable.vector_length + theorem computable.vector_nth' + theorem computable.vector_nth + theorem computable.vector_of_fn' + theorem computable.vector_of_fn + theorem computable.vector_tail + theorem computable.vector_to_list + theorem partrec.vector_m_of_fn + theorem vector.m_of_fn_roption_some Modified data/computability/partrec_code.lean + theorem nat.partrec.code.eval_eq_rfind_opt Modified data/computability/primrec.lean +/- theorem nat.primrec'.idv - def nat.primrec'.primvec - theorem nat.primrec'.primvec_iff + def nat.primrec'.vec + theorem nat.primrec'.vec_iff Modified data/vector2.lean + theorem vector.m_of_fn_pure + theorem vector.mmap_cons + theorem vector.mmap_nil + def vector.{u} 2018-05-29 18:57:49-04:00 00a2eb4 feat(algebra/group_power): mul_two_nonneg ESTIMATED CHANGES Modified algebra/group_power.lean + theorem pow_two_nonneg 2018-05-29 17:20:24-04:00 40bd947 feat(computability/primrec): add traditional primrec definition This shows that the pairing function with its square roots does not give any additional power. ESTIMATED CHANGES Modified data/computability/primrec.lean + theorem nat.primrec'.add + theorem nat.primrec'.comp' + theorem nat.primrec'.comp₁ + theorem nat.primrec'.comp₂ + theorem nat.primrec'.const + theorem nat.primrec'.head + theorem nat.primrec'.idv + theorem nat.primrec'.if_lt + theorem nat.primrec'.mkpair + theorem nat.primrec'.mul + theorem nat.primrec'.of_eq + theorem nat.primrec'.of_prim + theorem nat.primrec'.prec' + theorem nat.primrec'.pred + theorem nat.primrec'.prim_iff + theorem nat.primrec'.prim_iff₁ + theorem nat.primrec'.prim_iff₂ + def nat.primrec'.primvec + theorem nat.primrec'.primvec_iff + theorem nat.primrec'.sqrt + theorem nat.primrec'.sub + theorem nat.primrec'.tail + theorem nat.primrec'.to_prim + theorem nat.primrec'.unpair₁ + theorem nat.primrec'.unpair₂ + inductive nat.primrec' + def primcodable.subtype + theorem primrec.fin_app + theorem primrec.fin_curry + theorem primrec.fin_curry₁ + theorem primrec.fin_succ + theorem primrec.fin_val + theorem primrec.fin_val_iff + theorem primrec.list_head' + theorem primrec.list_head + theorem primrec.list_of_fn + theorem primrec.list_tail + theorem primrec.nat_lt + theorem primrec.nat_sqrt + theorem primrec.of_equiv + theorem primrec.of_equiv_iff + theorem primrec.of_equiv_symm + theorem primrec.of_equiv_symm_iff + theorem primrec.subtype_val + theorem primrec.subtype_val_iff + theorem primrec.vector_cons + theorem primrec.vector_head + theorem primrec.vector_length + theorem primrec.vector_nth' + theorem primrec.vector_nth + theorem primrec.vector_of_fn' + theorem primrec.vector_of_fn + theorem primrec.vector_tail + theorem primrec.vector_to_list + theorem primrec.vector_to_list_iff Modified data/encodable.lean Modified data/equiv.lean + def equiv.array_equiv_fin + def equiv.d_array_equiv_fin + def equiv.fin_equiv_subtype + def equiv.vector_equiv_array + def equiv.vector_equiv_fin Modified data/fin.lean + def fin.cases + theorem fin.cases_succ + theorem fin.cases_zero Modified data/list/basic.lean + theorem list.array_eq_of_fn +/- theorem list.cons_head_tail + def list.head' +/- theorem list.head_append +/- theorem list.head_cons + theorem list.head_eq_head' + theorem list.length_of_fn + theorem list.length_of_fn_aux + theorem list.nth_le_of_fn + theorem list.nth_of_fn + theorem list.nth_of_fn_aux + def list.of_fn + def list.of_fn_aux + theorem list.of_fn_nth_le + def list.of_fn_nth_val + theorem list.of_fn_succ + theorem list.of_fn_zero Modified data/nat/sqrt.lean + theorem nat.eq_sqrt + theorem nat.sqrt_succ_le_succ_sqrt Modified data/set/basic.lean +/- theorem set.image_empty +/- theorem set.image_id Modified data/sigma/basic.lean + theorem subtype.ext + theorem subtype.val_injective Added data/vector2.lean + theorem vector.head'_to_list + theorem vector.head_of_fn + theorem vector.mk_to_list + theorem vector.nth_cons_succ + theorem vector.nth_cons_zero + theorem vector.nth_eq_nth_le + theorem vector.nth_of_fn + theorem vector.nth_tail + theorem vector.nth_zero + theorem vector.of_fn_nth + theorem vector.tail_of_fn + theorem vector.to_list_injective + theorem vector.to_list_of_fn Modified logic/embedding.lean 2018-05-29 17:20:24-04:00 5fea16e feat(category/basic): $< notation for reversed application ESTIMATED CHANGES Modified category/basic.lean 2018-05-29 15:48:54+02:00 a2d2537 feat(analysis/probability_mass_function): add bernoulli ESTIMATED CHANGES Modified analysis/nnreal.lean Modified analysis/probability_mass_function.lean + def pmf.bernoulli + def pmf.of_fintype 2018-05-29 15:08:43+02:00 4f9e951 feat(analysis): add probability mass functions ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.sum_nat_cast + theorem multiset.to_finset_sum_count_eq Modified analysis/ennreal.lean + theorem ennreal.coe_eq_coe + theorem ennreal.coe_mul + theorem ennreal.coe_one + theorem ennreal.tendsto_coe_iff + theorem ennreal.tendsto_of_real_iff + theorem has_sum_of_nonneg_of_le + theorem nnreal.has_sum_of_le Modified analysis/nnreal.lean + theorem nnreal.has_sum_coe + theorem nnreal.is_sum_coe + theorem nnreal.sum_coe + theorem nnreal.tendsto_coe Added analysis/probability_mass_function.lean + def pmf.bind + theorem pmf.bind_apply + theorem pmf.bind_bind + theorem pmf.bind_comm + theorem pmf.bind_pure + theorem pmf.bind_pure_comp + theorem pmf.coe_bind_apply + theorem pmf.coe_le_one + theorem pmf.has_sum_coe + theorem pmf.is_sum_coe_one + def pmf.map + theorem pmf.map_comp + theorem pmf.map_id + def pmf.of_multiset + def pmf.pure + theorem pmf.pure_apply + theorem pmf.pure_bind + theorem pmf.pure_map + def pmf.seq + def pmf.support + theorem pmf.tsum_coe + def {u} Modified analysis/topology/infinite_sum.lean + theorem is_sum_iff_of_has_sum + theorem is_sum_ite + theorem tsum_ite Modified data/finset.lean + theorem multiset.to_finset_cons Modified data/multiset.lean +/- theorem multiset.count_eq_zero_of_not_mem Modified order/filter.lean + theorem filter.le_of_map_le_map_inj_iff 2018-05-29 04:19:54-04:00 eaa1b93 feat(data.list.basic): forall_mem_singleton, forall_mem_append ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.forall_mem_append + theorem list.forall_mem_singleton 2018-05-29 03:47:46-04:00 a6be523 feat(data/list/basic): map_erase, map_diff, map_union ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.map_diff + theorem list.map_erase + theorem list.map_foldl_erase Modified data/multiset.lean + theorem multiset.map_union 2018-05-28 15:36:19+02:00 0022068 fix(tactics/wlog): allow union instead of disjunction; assume disjunction in strict associcated order; fix discharger ESTIMATED CHANGES Modified data/set/enumerate.lean Modified tactic/wlog.lean Modified tests/tactics.lean 2018-05-28 14:30:41+02:00 1dbd8c6 feat(data/equiv): image, preimage under equivalences; simp rules for perm.val (#102) ESTIMATED CHANGES Modified data/equiv.lean + theorem equiv.left_inverse_symm + theorem equiv.perm.mul_val + theorem equiv.perm.one_val + theorem equiv.right_inverse_symm + theorem equiv.symm_image_image 2018-05-27 22:50:42-04:00 c53f9f1 refactor(algebra/euclidean_domain): clean up proofs ESTIMATED CHANGES Modified algebra/euclidean_domain.lean + theorem euclidean_domain.div_add_mod +/- theorem euclidean_domain.div_self - theorem euclidean_domain.dvd_mod + theorem euclidean_domain.dvd_mod_iff - theorem euclidean_domain.dvd_mod_self +/- theorem euclidean_domain.gcd.induction - theorem euclidean_domain.gcd_decreasing +/- theorem euclidean_domain.gcd_dvd + theorem euclidean_domain.gcd_eq_left - theorem euclidean_domain.gcd_next + theorem euclidean_domain.gcd_val + theorem euclidean_domain.mod_eq_zero - theorem euclidean_domain.mod_lt +/- theorem euclidean_domain.mod_zero + theorem euclidean_domain.mul_div_cancel + theorem euclidean_domain.mul_div_cancel_left - theorem euclidean_domain.neq_zero_lt_mod_lt + theorem euclidean_domain.val_le_mul_right + theorem euclidean_domain.val_mod_lt +/- theorem euclidean_domain.zero_div Modified analysis/topology/infinite_sum.lean Modified linear_algebra/multivariate_polynomial.lean - theorem finsupp.single_induction_on 2018-05-27 19:47:56-04:00 9f0d1d8 fix(analysis/limits): fix ambiguous import (fin)set.range ESTIMATED CHANGES Modified analysis/limits.lean Modified analysis/topology/infinite_sum.lean 2018-05-27 18:15:30-04:00 ad92a9b feat(algebra/group,...): add with_zero, with_one structures other ways to add an element to an algebraic structure: * Add a top or bottom to an order (with_top, with_bot) * add a unit to a semigroup (with_zero, with_one) * add a zero to a multiplicative semigroup (with_zero) * add an infinite element to an additive semigroup (with_top) ESTIMATED CHANGES Modified algebra/group.lean + def with_one Modified algebra/ordered_group.lean + def with_zero.ordered_comm_monoid Modified algebra/ring.lean Modified data/option.lean Modified order/bounded_lattice.lean - theorem lattice.with_bot.some_le - theorem lattice.with_bot.some_le_some - def lattice.with_bot - theorem lattice.with_top.le_some - theorem lattice.with_top.some_le_some - def lattice.with_top + theorem with_bot.coe_le + theorem with_bot.coe_le_coe + theorem with_bot.some_le_some + theorem with_bot.some_lt_some + def with_bot + theorem with_top.coe_le_coe + theorem with_top.le_coe + theorem with_top.some_le_some + theorem with_top.some_lt_some + def with_top Modified order/lattice.lean 2018-05-27 18:15:30-04:00 431d997 feat(nat/basic): mod_mod ESTIMATED CHANGES Modified data/nat/basic.lean + theorem nat.mod_mod Modified data/nat/modeq.lean + theorem nat.modeq.mod_modeq 2018-05-27 18:15:30-04:00 4c1a826 refactor(data/set/finite): use hypotheses for fintype assumptions in simp rules ESTIMATED CHANGES Modified data/set/finite.lean +/- theorem set.card_insert + theorem set.empty_card' +/- theorem set.empty_card Modified number_theory/pell.lean 2018-05-27 18:15:30-04:00 f563ac8 chore(data/pnat): remove nat -> pnat coercion ESTIMATED CHANGES Modified analysis/real.lean Modified data/finset.lean - theorem finset.max_eq_inf_with_top + theorem finset.min_eq_inf_with_top Modified data/pnat.lean - theorem pnat.coe_nat_coe + theorem pnat.coe_to_pnat' - theorem pnat.nat_coe_coe 2018-05-27 18:15:30-04:00 b7012fb fix(tactic/norm_num): use norm_num to discharge simp goals ESTIMATED CHANGES Modified tactic/norm_num.lean 2018-05-25 16:15:06+02:00 6811f13 fix(data/list/perm): remove unused code (#143) ESTIMATED CHANGES Modified data/list/perm.lean - theorem list.xswap 2018-05-25 05:57:39-04:00 bcec475 chore(leanpkg.toml): update version to 3.4.1 ESTIMATED CHANGES Modified leanpkg.toml 2018-05-25 05:55:41-04:00 1991869 feat(order/bounded_lattice): with_bot, with_top structures ESTIMATED CHANGES Modified data/finset.lean + def finset.inf + theorem finset.inf_empty + theorem finset.inf_insert + theorem finset.inf_le + theorem finset.inf_mono + theorem finset.inf_mono_fun + theorem finset.inf_singleton + theorem finset.inf_union + theorem finset.le_inf + theorem finset.le_sup + theorem finset.max_eq_inf_with_top + theorem finset.max_eq_sup_with_bot + theorem finset.singleton_bind +/- theorem finset.subset_iff + def finset.sup + theorem finset.sup_empty + theorem finset.sup_insert + theorem finset.sup_le + theorem finset.sup_mono + theorem finset.sup_mono_fun + theorem finset.sup_singleton + theorem finset.sup_union Modified data/finsupp.lean + theorem finsupp.erase_add_single + theorem finsupp.induction₂ +/- theorem finsupp.single_add_erase Modified data/option.lean + theorem option.ext Modified linear_algebra/multivariate_polynomial.lean - theorem finset.bind_singleton2 - theorem finset.le_sup - def finset.sup - theorem finset.sup_empty - theorem finset.sup_insert - theorem finset.sup_le - theorem finset.sup_mono - theorem finset.sup_mono_fun - theorem finset.sup_singleton - theorem finset.sup_union Modified order/bounded_lattice.lean + theorem lattice.with_bot.some_le + theorem lattice.with_bot.some_le_some + def lattice.with_bot + theorem lattice.with_top.le_some + theorem lattice.with_top.some_le_some + def lattice.with_top Modified order/lattice.lean 2018-05-25 01:14:13-04:00 94dc067 refactor(order/lattice): move top/bot to bounded_lattice ESTIMATED CHANGES Modified order/bounded_lattice.lean + theorem lattice.bot_inf_eq + theorem lattice.bot_le + theorem lattice.bot_sup_eq + theorem lattice.bot_unique + theorem lattice.eq_bot_iff + theorem lattice.eq_top_iff + theorem lattice.inf_bot_eq + theorem lattice.inf_eq_top_iff + theorem lattice.inf_top_eq + theorem lattice.le_bot_iff + theorem lattice.le_top + theorem lattice.neq_bot_of_le_neq_bot + theorem lattice.not_lt_bot + theorem lattice.not_top_lt + theorem lattice.sup_bot_eq + theorem lattice.sup_eq_bot_iff + theorem lattice.sup_top_eq + theorem lattice.top_inf_eq + theorem lattice.top_le_iff + theorem lattice.top_sup_eq + theorem lattice.top_unique Modified order/lattice.lean - theorem lattice.bot_inf_eq - theorem lattice.bot_le - theorem lattice.bot_sup_eq - theorem lattice.bot_unique - theorem lattice.eq_bot_iff - theorem lattice.eq_top_iff - theorem lattice.inf_bot_eq - theorem lattice.inf_eq_top_iff - theorem lattice.inf_top_eq - theorem lattice.le_bot_iff - theorem lattice.le_top - theorem lattice.neq_bot_of_le_neq_bot - theorem lattice.not_lt_bot - theorem lattice.not_top_lt - theorem lattice.sup_bot_eq - theorem lattice.sup_eq_bot_iff - theorem lattice.sup_top_eq - theorem lattice.top_inf_eq - theorem lattice.top_le_iff - theorem lattice.top_sup_eq - theorem lattice.top_unique 2018-05-25 01:14:13-04:00 4117ff4 refactor(algebra/order_functions): reorganize new lemmas ESTIMATED CHANGES Modified algebra/order_functions.lean + theorem max_choice + theorem min_choice Modified logic/basic.lean - theorem if_choice - theorem max_choice - theorem min_choice Modified order/lattice.lean 2018-05-24 15:55:26+02:00 9303bc0 feat(analysis/ennreal): add further type class instances for nonnegative reals ESTIMATED CHANGES Modified algebra/ordered_group.lean + theorem le_zero_iff_eq Modified analysis/nnreal.lean - theorem nnreal.add_val - theorem nnreal.le_zero_iff_eq - theorem nnreal.mul_val - theorem nnreal.val_one - theorem nnreal.val_zero Modified set_theory/cofinality.lean 2018-05-24 15:55:26+02:00 02f8f48 feat(analysis/nnreal): define the nonnegative reals NB: This file has a lot in common with `ennreal.lean`, the extended nonnegative reals. ESTIMATED CHANGES Added analysis/nnreal.lean + theorem nnreal.add_val + theorem nnreal.le_zero_iff_eq + theorem nnreal.mul_val + theorem nnreal.val_one + theorem nnreal.val_zero 2018-05-24 09:39:41+02:00 2c94668 fix(data/fin): rename raise_fin -> fin.raise; simp lemmas for fin (#138) ESTIMATED CHANGES Modified data/fin.lean + theorem fin.pred_val + def fin.raise + theorem fin.succ_val - def raise_fin 2018-05-23 19:20:55+02:00 d91a267 fix(data/list/basic): protected list.sigma (#140) ESTIMATED CHANGES Modified data/list/basic.lean - def list.sigma 2018-05-23 19:20:25+02:00 94a4b07 doc(docs/extras): some notes on well founded recursion (#127) ESTIMATED CHANGES Added docs/extras/well_founded_recursion.md 2018-05-23 19:16:42+02:00 23bd3f2 doc(docs/extra/simp): adding reference to simpa (#106) ESTIMATED CHANGES Modified docs/extras/simp.md 2018-05-23 18:54:35+02:00 add172d chore(tactic/default): move split_ifs import to tactic.interactive ESTIMATED CHANGES Modified tactic/default.lean Modified tactic/interactive.lean 2018-05-23 18:54:35+02:00 d442907 fix(tactic/split_if): clarify behavior ESTIMATED CHANGES Modified tactic/split_ifs.lean 2018-05-23 18:54:35+02:00 509934f feat(tactic/split_ifs): add if-splitter ESTIMATED CHANGES Modified algebra/euclidean_domain.lean Modified data/equiv.lean Modified data/list/basic.lean Modified tactic/default.lean Added tactic/split_ifs.lean Added tests/split_ifs.lean 2018-05-23 17:29:32+02:00 f458eef feat(analysis/topology): add tendsto and continuity rules for big operators ESTIMATED CHANGES Modified analysis/measure_theory/borel_space.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_structures.lean +/- theorem continuous_add' +/- theorem continuous_add + theorem continuous_finset_prod + theorem continuous_finset_sum + theorem continuous_list_prod + theorem continuous_list_sum + theorem continuous_mul' +/- theorem continuous_mul + theorem continuous_multiset_prod + theorem continuous_multiset_sum +/- theorem tendsto_add' +/- theorem tendsto_add + theorem tendsto_finset_prod + theorem tendsto_finset_sum + theorem tendsto_list_prod + theorem tendsto_list_sum + theorem tendsto_mul' +/- theorem tendsto_mul + theorem tendsto_multiset_prod + theorem tendsto_multiset_sum - theorem tendsto_sum 2018-05-23 17:17:56+02:00 a54be05 feat(analysis/topology): add continuity rules for supr, Sup, and pi spaces ESTIMATED CHANGES Modified analysis/topology/continuity.lean +/- theorem compact_pi_infinite +/- theorem continuous_Inf_rng + theorem continuous_Sup_dom + theorem continuous_Sup_rng + theorem continuous_apply +/- theorem continuous_infi_rng + theorem continuous_pi +/- theorem continuous_subtype_nhds_cover + theorem continuous_supr_dom + theorem continuous_supr_rng +/- theorem nhds_pi 2018-05-23 15:22:09+02:00 cff886b feat(data/finset): max and min ESTIMATED CHANGES Modified data/finset.lean + theorem finset.le_max_of_mem + theorem finset.le_min_of_mem + theorem finset.max_empty + theorem finset.max_insert + theorem finset.max_of_mem + theorem finset.max_singleton + theorem finset.mem_of_max + theorem finset.mem_of_min + theorem finset.min_empty + theorem finset.min_insert + theorem finset.min_of_mem + theorem finset.min_singleton Modified data/option.lean + theorem option.lift_or_get_choice - theorem option.lift_or_get_is_some_left - theorem option.lift_or_get_is_some_right Modified logic/basic.lean + theorem if_choice + theorem max_choice + theorem min_choice Modified order/lattice.lean 2018-05-23 15:22:09+02:00 d1ea272 feat(data/option): lift_or_get ESTIMATED CHANGES Modified data/option.lean + def option.lift_or_get + theorem option.lift_or_get_is_some_left + theorem option.lift_or_get_is_some_right 2018-05-22 05:26:41-04:00 d62bf56 feat(computability/halting): halting problem ESTIMATED CHANGES Added data/computability/halting.lean + theorem computable_pred.halting_problem + theorem computable_pred.of_eq + theorem computable_pred.rice + theorem computable_pred.rice₂ + def computable_pred + theorem nat.partrec.merge' + theorem partrec.cond + theorem partrec.merge' + theorem partrec.merge + theorem partrec.sum_cases + def re_pred Modified data/computability/partrec.lean + def nat.rfind_opt + theorem nat.rfind_opt_dom + theorem nat.rfind_opt_mono + theorem nat.rfind_opt_spec + theorem partrec.bind_decode2_iff + theorem partrec.map_encode_iff + theorem partrec.rfind_opt + theorem primrec₂.to_comp Modified data/computability/partrec_code.lean + theorem nat.partrec.code.const_prim + def nat.partrec.code.curry + theorem nat.partrec.code.curry_prim + theorem nat.partrec.code.eval_const + theorem nat.partrec.code.eval_curry + theorem nat.partrec.code.eval_id + theorem nat.partrec.code.fixed_point + theorem nat.partrec.code.fixed_point₂ Modified data/computability/primrec.lean + theorem primrec.option_guard +/- theorem primrec.option_is_some + theorem primrec.option_orelse Modified data/encodable.lean + def encodable.decode2 + theorem encodable.decode2_inj + theorem encodable.encodek2 + theorem encodable.mem_decode2 Modified data/option.lean + theorem option.orelse_none' + theorem option.orelse_none + theorem option.orelse_some' + theorem option.orelse_some Modified data/pfun.lean + theorem roption.bind_some_right + theorem roption.eq_none_iff' + theorem roption.get_eq_of_mem + theorem roption.get_mem 2018-05-21 11:44:37-04:00 f0bcba5 feat(computability/partrec_code): Kleene normal form theorem among other things ESTIMATED CHANGES Modified category/basic.lean + theorem guard_false + theorem guard_true Modified data/computability/partrec.lean + theorem computable.bind_decode_iff + theorem computable.cond + theorem computable.encode_iff + theorem computable.list_append + theorem computable.list_concat + theorem computable.list_cons + theorem computable.list_length + theorem computable.list_nth + theorem computable.list_reverse + theorem computable.map_decode_iff + theorem computable.nat_bodd + theorem computable.nat_cases + theorem computable.nat_div2 + theorem computable.nat_strong_rec + theorem computable.option_bind + theorem computable.option_cases + theorem computable.option_map + theorem computable.option_some + theorem computable.option_some_iff + theorem computable.pred + theorem computable.succ + theorem computable.sum_cases + theorem computable.sum_inl + theorem computable.sum_inr + theorem computable.unpair - theorem nat.partrec.code.comp_prim - def nat.partrec.code.encode_code - def nat.partrec.code.eval - def nat.partrec.code.evaln - theorem nat.partrec.code.exists_code - def nat.partrec.code.of_nat_code - theorem nat.partrec.code.pair_prim - theorem nat.partrec.code.prec_prim - theorem nat.partrec.code.rec_prim - theorem nat.partrec.code.rfind_prim - inductive nat.partrec.code - theorem nat.partrec.rfind' + theorem partrec.fix + theorem partrec.nat_cases_right + theorem partrec.option_cases_right + theorem partrec.option_some_iff + theorem partrec.sum_cases_left + theorem partrec.sum_cases_right Added data/computability/partrec_code.lean + theorem nat.partrec.code.comp_prim + def nat.partrec.code.encode_code + theorem nat.partrec.code.encode_code_eq + theorem nat.partrec.code.encode_lt_comp + theorem nat.partrec.code.encode_lt_pair + theorem nat.partrec.code.encode_lt_prec + theorem nat.partrec.code.encode_lt_rfind' + def nat.partrec.code.eval + theorem nat.partrec.code.eval_part + def nat.partrec.code.evaln + theorem nat.partrec.code.evaln_bound + theorem nat.partrec.code.evaln_complete + theorem nat.partrec.code.evaln_mono + theorem nat.partrec.code.evaln_prim + theorem nat.partrec.code.evaln_sound + theorem nat.partrec.code.exists_code + def nat.partrec.code.of_nat_code + theorem nat.partrec.code.of_nat_code_eq + theorem nat.partrec.code.pair_prim + theorem nat.partrec.code.prec_prim + theorem nat.partrec.code.rec_computable + theorem nat.partrec.code.rec_prim' + theorem nat.partrec.code.rec_prim + theorem nat.partrec.code.rfind_prim + inductive nat.partrec.code + theorem nat.partrec.rfind' Modified data/computability/primrec.lean + theorem primrec.list_range + theorem primrec.nat_max + theorem primrec.nat_min + theorem primrec.option_is_some Modified data/nat/pairing.lean + theorem nat.mkpair_lt_mkpair_left + theorem nat.mkpair_lt_mkpair_right Modified data/option.lean + theorem option.bind_eq_some' + theorem option.guard_eq_some' + theorem option.map_eq_some' + theorem option.none_bind' + theorem option.some_bind' Modified data/pfun.lean + theorem pfun.fix_induction +/- theorem pfun.mem_fix_iff + theorem roption.bind_dom + theorem roption.mem_coe 2018-05-21 11:41:40-04:00 fe5c86c fix(tactic/interactive): fix congr bug, rename congr_n to congr' ESTIMATED CHANGES Modified data/list/basic.lean Modified data/real/basic.lean Modified docs/tactics.md Modified logic/basic.lean + theorem proof_irrel_heq Modified set_theory/ordinal.lean Modified set_theory/ordinal_notation.lean Modified tactic/interactive.lean 2018-05-20 06:37:12-04:00 741469a fix(tactic/interactive): make rcases handle nested constructors correctly The line changed by this commit was wrong because `k` might contain further constructors, which also need to be "inverted". Fixes #56. * doc(tactic): Internal documentation for rcases * style(tactic/rcases): eliminate an unused recursive parameter * style(*): use rcases more ESTIMATED CHANGES Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_structures.lean Modified data/list/basic.lean Modified data/real/basic.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean Modified group_theory/free_group.lean Modified order/filter.lean Modified ring_theory/localization.lean Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean Modified tactic/interactive.lean + def tactic.interactive.rcases_patt_inverted Modified tactic/rcases.lean + def tactic.list_Pi + def tactic.list_Sigma Modified tests/tactics.lean 2018-05-19 21:28:26-04:00 fc20442 feat(computability/partrec): partial recursion, Godel numbering ESTIMATED CHANGES Modified data/bool.lean + theorem bool.ff_eq_to_bool_iff + theorem bool.tt_eq_to_bool_iff Modified data/computability/partrec.lean + theorem computable.comp + theorem computable.comp₂ + theorem computable.const + theorem computable.fst + theorem computable.nat_elim + theorem computable.of_eq + theorem computable.of_option + theorem computable.pair + theorem computable.part + theorem computable.snd + theorem computable.to₂ + def computable + theorem computable₂.comp + theorem computable₂.comp₂ + theorem computable₂.part + def computable₂ + theorem nat.mem_rfind + theorem nat.partrec.code.comp_prim + def nat.partrec.code.encode_code + def nat.partrec.code.eval + def nat.partrec.code.evaln + theorem nat.partrec.code.exists_code + def nat.partrec.code.of_nat_code + theorem nat.partrec.code.pair_prim + theorem nat.partrec.code.prec_prim + theorem nat.partrec.code.rec_prim + theorem nat.partrec.code.rfind_prim + inductive nat.partrec.code + theorem nat.partrec.none +/- theorem nat.partrec.of_eq + theorem nat.partrec.of_eq_tot + theorem nat.partrec.of_primrec + theorem nat.partrec.ppred + theorem nat.partrec.prec' - theorem nat.partrec.prim + theorem nat.partrec.rfind' + def nat.rfind + theorem nat.rfind_dom' + theorem nat.rfind_dom + theorem nat.rfind_min' + theorem nat.rfind_min + theorem nat.rfind_spec + def nat.rfind_x + theorem nat.rfind_zero_none + theorem partrec.comp + theorem partrec.const' + theorem partrec.map + theorem partrec.nat_elim + theorem partrec.nat_iff + theorem partrec.none + theorem partrec.of_eq + theorem partrec.of_eq_tot + theorem partrec.rfind + theorem partrec.to₂ + def partrec + theorem partrec₂.comp + theorem partrec₂.comp₂ + theorem partrec₂.unpaired' + theorem partrec₂.unpaired + def partrec₂ + theorem primrec.to_comp Modified data/computability/primrec.lean +/- theorem nat.primrec.of_eq +/- theorem primrec.comp + theorem primrec.list_concat + theorem primrec.nat_strong_rec +/- theorem primrec.of_eq +/- theorem primrec₂.of_eq Modified data/denumerable.lean + def equiv.list_equiv_self_of_equiv_nat + def equiv.list_nat_equiv_nat Modified data/encodable.lean + theorem encodable.decode_nat + theorem encodable.encode_nat Modified data/equiv.lean - def equiv.list_equiv_self_of_equiv_nat - def equiv.list_nat_equiv_nat Modified data/nat/basic.lean + theorem nat.bodd_bit0 + theorem nat.bodd_bit1 + theorem nat.div2_bit0 + theorem nat.div2_bit1 Modified data/nat/pairing.lean + theorem nat.le_mkpair_right - theorem nat.unpair_le + theorem nat.unpair_le_left + theorem nat.unpair_le_right Modified data/pfun.lean +/- theorem pfun.bind_defined + theorem pfun.dom_of_mem_fix + def pfun.fix + theorem pfun.mem_fix_iff +/- def pfun - def roption.bind + theorem roption.bind_map + theorem roption.bind_none +/- theorem roption.bind_some_eq_map + theorem roption.coe_none + theorem roption.coe_some +/- theorem roption.dom_iff_mem + theorem roption.eq_none_iff + theorem roption.eq_some_iff - theorem roption.eq_some_of_mem + theorem roption.map_bind + theorem roption.map_id' + theorem roption.map_map + theorem roption.map_none + theorem roption.mem_assert + theorem roption.mem_assert_iff + theorem roption.not_mem_none - structure roption + structure {u} 2018-05-18 05:14:19-04:00 38d5536 feat(computability/partrec): starting work on partial recursive funcs ESTIMATED CHANGES Added data/computability/partrec.lean + theorem nat.partrec.of_eq + theorem nat.partrec.prim + inductive nat.partrec Modified data/computability/primrec.lean +/- def nat.unpaired Modified data/pfun.lean + def pfun.bind + theorem pfun.coe_val + def pfun.ext' + def pfun.ext + theorem pfun.lift_eq_coe + def pfun.map + def roption.bind + theorem roption.bind_eq_bind + theorem roption.bind_some - theorem roption.eq_ret_of_mem + theorem roption.eq_some_of_mem - theorem roption.exists_of_mem_bind + def roption.ext' + def roption.ext + def roption.map + theorem roption.map_eq_map + theorem roption.map_some + theorem roption.mem_bind_iff + theorem roption.mem_map + theorem roption.mem_map_iff + theorem roption.mem_of_option - theorem roption.mem_ret - theorem roption.mem_ret_iff +/- theorem roption.mem_some + theorem roption.mem_some_iff + theorem roption.mem_to_option + def roption.none +/- theorem roption.of_to_option + theorem roption.ret_eq_some + def roption.some - theorem roption.some_bind +/- theorem roption.to_of_option 2018-05-18 05:10:04-04:00 92feaf9 feat(computability/primrec): list definitions are primrec ESTIMATED CHANGES Modified data/computability/primrec.lean + theorem primrec.list_append + theorem primrec.list_cases + theorem primrec.list_cons +/- theorem primrec.list_find_index + theorem primrec.list_find_index₁ + theorem primrec.list_foldl + theorem primrec.list_foldr +/- theorem primrec.list_index_of + theorem primrec.list_index_of₁ +/- theorem primrec.list_inth + theorem primrec.list_join + theorem primrec.list_length + theorem primrec.list_map +/- theorem primrec.list_nth + theorem primrec.list_nth₁ + theorem primrec.list_rec + theorem primrec.list_reverse - theorem primrec.nat_cases1 + theorem primrec.nat_cases₁ - theorem primrec.nat_elim1 + theorem primrec.nat_elim₁ + theorem primrec.nat_iterate - theorem primrec.option_bind1 + theorem primrec.option_bind₁ - theorem primrec.option_map1 + theorem primrec.option_map₁ + theorem primrec.sum_cases + theorem primrec.sum_inl + theorem primrec.sum_inr + theorem primrec.to₂ Modified data/denumerable.lean + theorem denumerable.list_of_nat_succ + theorem denumerable.list_of_nat_zero Modified data/encodable.lean + theorem encodable.decode_list_succ + theorem encodable.decode_list_zero + theorem encodable.decode_sum_val + theorem encodable.encode_inl + theorem encodable.encode_inr + theorem encodable.encode_list_cons + theorem encodable.encode_list_nil + theorem encodable.length_le_encode Modified data/list/basic.lean + theorem list.drop_nil Modified data/nat/basic.lean - def nat.foldl - def nat.foldr + theorem nat.iterate_add + theorem nat.iterate_succ' + theorem nat.iterate_succ + theorem nat.iterate_zero Modified data/nat/pairing.lean + theorem nat.le_mkpair_left +/- def nat.mkpair +/- theorem nat.mkpair_unpair +/- def nat.unpair +/- theorem nat.unpair_le +/- theorem nat.unpair_lt +/- theorem nat.unpair_mkpair Modified order/order_iso.lean Modified set_theory/ordinal.lean - theorem ordinal.foldr_le_nfp + theorem ordinal.iterate_le_nfp 2018-05-17 04:23:08-04:00 e017f0f feat(data/computability): primrec, denumerable ESTIMATED CHANGES Modified analysis/limits.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean + theorem topological_space.Union_basis_of_is_open + theorem topological_space.sUnion_basis_of_is_open Modified data/bool.lean +/- theorem bool.cond_ff + theorem bool.cond_to_bool +/- theorem bool.cond_tt + theorem bool.to_bool_and + theorem bool.to_bool_not + theorem bool.to_bool_or Added data/computability/primrec.lean + def nat.cases + theorem nat.cases_succ + theorem nat.cases_zero + def nat.elim + theorem nat.elim_succ + theorem nat.elim_zero + theorem nat.primrec.add + theorem nat.primrec.cases1 + theorem nat.primrec.cases + theorem nat.primrec.const + theorem nat.primrec.mul + theorem nat.primrec.of_eq + theorem nat.primrec.pow + theorem nat.primrec.prec1 + theorem nat.primrec.pred + theorem nat.primrec.sub + theorem nat.primrec.swap' + inductive nat.primrec + def nat.unpaired + def primcodable.of_equiv + theorem primrec.bind_decode_iff + theorem primrec.comp + theorem primrec.comp₂ + theorem primrec.cond + theorem primrec.const + theorem primrec.dom_bool + theorem primrec.dom_bool₂ + theorem primrec.dom_denumerable + theorem primrec.dom_fintype + theorem primrec.encdec + theorem primrec.encode_iff + theorem primrec.fst + theorem primrec.ite + theorem primrec.list_find_index + theorem primrec.list_index_of + theorem primrec.list_inth + theorem primrec.list_nth + theorem primrec.map_decode_iff + theorem primrec.nat_add + theorem primrec.nat_bit0 + theorem primrec.nat_bit1 + theorem primrec.nat_bit + theorem primrec.nat_bodd + theorem primrec.nat_bodd_div2 + theorem primrec.nat_cases' + theorem primrec.nat_cases1 + theorem primrec.nat_cases + theorem primrec.nat_div2 + theorem primrec.nat_div + theorem primrec.nat_div_mod + theorem primrec.nat_elim' + theorem primrec.nat_elim1 + theorem primrec.nat_elim + theorem primrec.nat_iff + theorem primrec.nat_le + theorem primrec.nat_mod + theorem primrec.nat_mul + theorem primrec.nat_sub + theorem primrec.of_eq + theorem primrec.of_nat_iff + theorem primrec.option_bind1 + theorem primrec.option_bind + theorem primrec.option_cases + theorem primrec.option_iget + theorem primrec.option_map1 + theorem primrec.option_map + theorem primrec.option_some + theorem primrec.option_some_iff + theorem primrec.pair + theorem primrec.pred + theorem primrec.snd + theorem primrec.succ + theorem primrec.unpair + def primrec + theorem primrec_pred.comp + theorem primrec_pred.of_eq + def primrec_pred + theorem primrec_rel.comp + theorem primrec_rel.comp₂ + theorem primrec_rel.of_eq + def primrec_rel + theorem primrec₂.comp + theorem primrec₂.comp₂ + theorem primrec₂.const + theorem primrec₂.curry + theorem primrec₂.encode_iff + theorem primrec₂.left + theorem primrec₂.mkpair + theorem primrec₂.nat_iff' + theorem primrec₂.nat_iff + theorem primrec₂.of_eq + theorem primrec₂.of_nat_iff + theorem primrec₂.option_some_iff + theorem primrec₂.right + theorem primrec₂.swap + theorem primrec₂.uncurry + theorem primrec₂.unpaired' + theorem primrec₂.unpaired + def primrec₂ Added data/denumerable.lean + theorem denumerable.decode_eq_of_nat + theorem denumerable.decode_is_some + theorem denumerable.denumerable_list_aux + theorem denumerable.encode_of_nat + def denumerable.equiv₂ + def denumerable.eqv + def denumerable.lower' + def denumerable.lower + theorem denumerable.lower_raise' + theorem denumerable.lower_raise + def denumerable.mk' + def denumerable.of_equiv + theorem denumerable.of_equiv_of_nat + def denumerable.of_nat + theorem denumerable.of_nat_encode + theorem denumerable.of_nat_nat + theorem denumerable.of_nat_of_decode + def denumerable.pair + theorem denumerable.prod_nat_of_nat + theorem denumerable.prod_of_nat_val + def denumerable.raise' + theorem denumerable.raise'_chain + def denumerable.raise'_finset + theorem denumerable.raise'_sorted + def denumerable.raise + theorem denumerable.raise_chain + theorem denumerable.raise_lower' + theorem denumerable.raise_lower + theorem denumerable.raise_sorted + theorem denumerable.sigma_of_nat_val Modified data/encodable.lean + def encodable.decidable_eq_of_encodable + theorem encodable.decode_ge_two + def encodable.decode_list + def encodable.decode_multiset + theorem encodable.decode_of_equiv + theorem encodable.decode_one + theorem encodable.decode_option_succ + theorem encodable.decode_option_zero + theorem encodable.decode_prod_val + def encodable.decode_sigma + theorem encodable.decode_sigma_val + def encodable.decode_subtype + def encodable.decode_sum + theorem encodable.decode_unit_succ + theorem encodable.decode_unit_zero + theorem encodable.decode_zero + def encodable.encodable_of_list + theorem encodable.encode_ff + theorem encodable.encode_injective + def encodable.encode_list + def encodable.encode_multiset + theorem encodable.encode_none + theorem encodable.encode_of_equiv + theorem encodable.encode_prod_val + def encodable.encode_sigma + theorem encodable.encode_sigma_val + theorem encodable.encode_some + theorem encodable.encode_star + def encodable.encode_subtype + def encodable.encode_sum + theorem encodable.encode_tt + def encodable.of_equiv + def encodable.of_left_injection + def encodable.of_left_inverse + def encodable.trunc_encodable_of_fintype - def encodable_of_equiv - def encodable_of_left_injection - def encodable_of_list - theorem encode_injective - def trunc_encodable_of_fintype Modified data/equiv.lean + theorem equiv.symm_symm Modified data/finset.lean + theorem finset.attach_map_val + def finset.map + theorem finset.map_empty + theorem finset.map_eq_empty + theorem finset.map_eq_image + theorem finset.map_filter + theorem finset.map_insert + theorem finset.map_inter + theorem finset.map_map + theorem finset.map_refl + theorem finset.map_singleton + theorem finset.map_subset_map + theorem finset.map_to_finset + theorem finset.map_union + theorem finset.map_val + theorem finset.mem_map + theorem finset.mem_map_of_mem + theorem finset.sort_sorted_lt Modified data/fintype.lean + theorem fintype.exists_univ_list Modified data/list/basic.lean + theorem list.filter_congr + theorem list.foldl_ext + theorem list.foldr_ext + theorem list.map_add_range' + theorem list.nth_le_map' + theorem list.nth_le_map + theorem list.nth_map + theorem list.pairwise.and + theorem list.pairwise.imp₂ + theorem list.range'_eq_map_range + theorem list.range_succ_eq_map + theorem list.reverse_range' Modified data/list/sort.lean +/- theorem list.eq_of_sorted_of_perm + theorem list.merge_sort_eq_self Modified data/multiset.lean Modified data/nat/basic.lean Modified data/nat/pairing.lean +/- theorem nat.mkpair_unpair +/- theorem nat.unpair_mkpair Modified data/option.lean + theorem option.map_none' + theorem option.map_some' Modified data/rat.lean Modified data/semiquot.lean + theorem semiquot.is_pure.min + theorem semiquot.is_pure.mono + theorem semiquot.is_pure_iff + theorem semiquot.pure_inj Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean Modified data/set/countable.lean Modified logic/basic.lean + theorem and.right_comm + theorem and.rotate Modified logic/embedding.lean + def function.embedding.subtype Modified order/basic.lean 2018-05-16 10:16:22+02:00 fe7d573 refactor(data/set/enumerate): proof enumeration_inj using wlog ESTIMATED CHANGES Modified data/set/enumerate.lean +/- theorem set.enumerate_inj 2018-05-16 10:16:22+02:00 d8c33e8 feat(tactic): generalize wlog to support multiple variables and cases, allow to provide case rule ESTIMATED CHANGES Modified tactic/default.lean Modified tactic/interactive.lean Added tactic/wlog.lean Modified tests/tactics.lean 2018-05-10 15:29:47+02:00 2cd640a feat(data/multiset): add sections ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.bind_map Modified data/multiset.lean + theorem multiset.bind_add + theorem multiset.bind_assoc +/- theorem multiset.bind_bind + theorem multiset.bind_cons + theorem multiset.bind_map + theorem multiset.bind_map_comm + theorem multiset.bind_zero + theorem multiset.card_sections + theorem multiset.coe_sections +/- theorem multiset.map_bind + theorem multiset.map_id' + theorem multiset.mem_sections + theorem multiset.prod_map_one + theorem multiset.prod_map_sum + theorem multiset.rel_bind + def multiset.sections + theorem multiset.sections_add + theorem multiset.sections_cons + theorem multiset.sections_zero + theorem multiset.sum_map_mul_left + theorem multiset.sum_map_mul_right + theorem multiset.sum_map_zero 2018-05-10 15:29:29+02:00 62833ca feat(data/multiset): add relator ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.card_eq_card_of_rel + theorem multiset.cons_eq_cons + theorem multiset.cons_ne_zero + theorem multiset.rel.add + theorem multiset.rel.mono + inductive multiset.rel + theorem multiset.rel_add_left + theorem multiset.rel_add_right + theorem multiset.rel_cons_left + theorem multiset.rel_cons_right + theorem multiset.rel_eq + theorem multiset.rel_eq_refl + theorem multiset.rel_flip + theorem multiset.rel_flip_eq + theorem multiset.rel_join + theorem multiset.rel_map + theorem multiset.rel_map_left + theorem multiset.rel_map_right + theorem multiset.rel_zero_left + theorem multiset.rel_zero_right + theorem multiset.zero_ne_cons Modified tests/mk_iff_of_inductive.lean - inductive multiset.rel 2018-05-10 12:12:25+02:00 d10c3bb fix(order/complete_boolean_algebra): replace finish proof by simp (finish was very slow) ESTIMATED CHANGES Modified order/complete_boolean_algebra.lean 2018-05-09 06:19:46-04:00 fc6f57a feat(data/list/basic): list.forall2, list.sections ESTIMATED CHANGES Modified data/list/basic.lean + inductive list.forall₂ + theorem list.forall₂_cons + theorem list.forall₂_iff_zip + theorem list.forall₂_length_eq + theorem list.forall₂_nil_left + theorem list.forall₂_nil_right + theorem list.forall₂_zip + theorem list.mem_sections + theorem list.mem_sections_length + def list.sections 2018-05-09 06:04:38-04:00 42f5ea0 feat(data/semiquot): semiquotient types ESTIMATED CHANGES Modified data/fp/basic.lean - def fp.float.default_nan - structure fp.nan_pl - def fp.shift2 + def int.shift2 Modified data/quot.lean + theorem true_equivalence + def trunc.bind + def trunc.map Modified data/rat.lean + theorem rat.num_nonneg_iff_zero_le + theorem rat.num_pos_iff_pos Added data/semiquot.lean + def semiquot.bind + def semiquot.blur' + def semiquot.blur + theorem semiquot.blur_eq_blur' + theorem semiquot.eq_mk_of_mem + theorem semiquot.eq_pure + theorem semiquot.exists_mem + theorem semiquot.ext + theorem semiquot.ext_s + def semiquot.get + theorem semiquot.get_mem + def semiquot.is_pure + theorem semiquot.is_pure_of_subsingleton + theorem semiquot.is_pure_univ + def semiquot.lift_on + theorem semiquot.lift_on_of_mem + def semiquot.map + theorem semiquot.mem_bind + theorem semiquot.mem_blur' + theorem semiquot.mem_map + theorem semiquot.mem_pure' + theorem semiquot.mem_pure + theorem semiquot.mem_pure_self + theorem semiquot.mem_univ + def semiquot.mk + theorem semiquot.ne_empty + def semiquot.of_trunc + theorem semiquot.pure_is_pure + theorem semiquot.pure_le + def semiquot.to_trunc + def semiquot.univ + theorem semiquot.univ_unique + structure {u} Modified data/set/lattice.lean + theorem set.mem_bInter_iff + theorem set.mem_bUnion_iff Modified logic/basic.lean + theorem eq_equivalence 2018-05-09 06:04:38-04:00 b31c30d refactor(logic/function): constructive proof of cantor_injective ESTIMATED CHANGES Modified logic/function.lean +/- theorem function.cantor_injective 2018-05-09 11:41:31+02:00 54df4d9 feat(linear_algebra/multivariate_polynomial): change order of eval arguments; show that eval is ring homomorphism (closes https://github.com/leanprover/mathlib/pull/134) ESTIMATED CHANGES Modified linear_algebra/multivariate_polynomial.lean +/- def mv_polynomial.eval 2018-05-09 10:46:03+02:00 b5eddd8 fix(data/set/basic): mark subset.refl as @[refl] ESTIMATED CHANGES Modified analysis/measure_theory/outer_measure.lean Modified data/set/basic.lean +/- theorem set.subset.refl 2018-05-04 16:10:27+02:00 e4c64fd feat(tactic/mk_iff_of_inductive_prop): add tactic to represent inductives using logical connectives ESTIMATED CHANGES Modified data/list/basic.lean Modified logic/relation.lean +/- theorem relation.refl_gen.to_refl_trans_gen +/- theorem relation.refl_trans_gen.cases_tail - theorem relation.refl_trans_gen.cases_tail_iff Modified tactic/default.lean Added tactic/mk_iff_of_inductive_prop.lean Added tests/mk_iff_of_inductive.lean + inductive multiset.rel + inductive test.is_true 2018-05-03 13:46:52-04:00 fa7a180 feat(tactic/solve_by_elim): make solve_by_elim easier to use correctly (#131) ESTIMATED CHANGES Modified tactic/interactive.lean 2018-05-03 14:41:35+02:00 ef43edf feat(data/finset): add list.to_finset theorems ESTIMATED CHANGES Modified data/finset.lean + theorem list.to_finset_card_of_nodup + theorem list.to_finset_cons + theorem list.to_finset_nil Modified data/list/basic.lean + theorem list.erase_dup_idempotent + theorem list.pw_filter_idempotent 2018-05-03 11:23:10+02:00 02c2b56 feat(analysis/topology/topological_space): t2 instances for constructions of limit type ESTIMATED CHANGES Modified analysis/topology/topological_space.lean 2018-04-29 01:27:12-04:00 a97101d fix(docs/naming): use names in use (#122) ESTIMATED CHANGES Modified docs/naming.md 2018-04-26 18:29:10+02:00 48485a2 refactor(logic/relation,group_theory/free_group): add theory for reflextive/transitive relations & use them for the free group reduction ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.append_eq_append_iff + theorem list.append_eq_cons_iff + theorem list.append_eq_has_append + theorem list.cons_eq_append_iff + theorem list.infix_cons + theorem list.nil_eq_append_iff Modified data/list/perm.lean Modified group_theory/free_group.lean - theorem free_group.church_rosser - theorem free_group.church_rosser_1 + theorem free_group.equivalence_join_red + theorem free_group.eqv_gen_step_iff_join_red - def free_group.inv + theorem free_group.inv_mk + theorem free_group.join_red_of_step +/- theorem free_group.map.comp + theorem free_group.one_eq_mk +/- theorem free_group.red.antisymm - theorem free_group.red.append + theorem free_group.red.append_append + theorem free_group.red.append_append_left_iff - theorem free_group.red.bnot + theorem free_group.red.church_rosser - theorem free_group.red.cons - theorem free_group.red.cons_bnot - theorem free_group.red.cons_bnot_rev + theorem free_group.red.cons_cons + theorem free_group.red.cons_cons_iff - theorem free_group.red.cons_iff + theorem free_group.red.cons_nil_iff_singleton + theorem free_group.red.exact - theorem free_group.red.inv_of_red_nil.aux - theorem free_group.red.inv_of_red_nil - theorem free_group.red.inv_of_red_of_ne.aux +/- theorem free_group.red.inv_of_red_of_ne +/- theorem free_group.red.length - theorem free_group.red.nil.aux - theorem free_group.red.nil + theorem free_group.red.nil_iff + theorem free_group.red.not_step_nil + theorem free_group.red.not_step_singleton - theorem free_group.red.of_cons - theorem free_group.red.of_step + theorem free_group.red.red_iff_irreducible + theorem free_group.red.refl - theorem free_group.red.singleton.aux - theorem free_group.red.singleton + theorem free_group.red.singleton_iff - theorem free_group.red.sizeof + theorem free_group.red.sizeof_of_step +/- theorem free_group.red.step.append_left + theorem free_group.red.step.append_left_iff +/- theorem free_group.red.step.append_right +/- theorem free_group.red.step.bnot_rev - theorem free_group.red.step.church_rosser.aux2 - theorem free_group.red.step.church_rosser.aux - theorem free_group.red.step.church_rosser +/- theorem free_group.red.step.cons +/- theorem free_group.red.step.cons_bnot + theorem free_group.red.step.cons_bnot_rev + theorem free_group.red.step.cons_cons_iff + theorem free_group.red.step.cons_left_iff + theorem free_group.red.step.diamond - theorem free_group.red.step.eqv_gen_of_red - theorem free_group.red.step.exact - theorem free_group.red.step.inv +/- theorem free_group.red.step.length - theorem free_group.red.step.sound +/- theorem free_group.red.step.sublist + theorem free_group.red.step.to_red +/- theorem free_group.red.sublist + theorem free_group.red.to_append_iff - theorem free_group.red.to_group - theorem free_group.red.trans.aux +/- theorem free_group.red.trans + def free_group.red - inductive free_group.red +/- theorem free_group.reduce.not +/- theorem free_group.to_group_eq_prod_map +/- def free_group - theorem list.append_eq_has_append - theorem list.infix_cons Added logic/relation.lean + theorem relation.church_rosser + theorem relation.equivalence_join + theorem relation.equivalence_join_refl_trans_gen + theorem relation.eqv_gen_iff_of_equivalence + theorem relation.eqv_gen_mono + def relation.join + theorem relation.join_of_equivalence + theorem relation.join_of_single + theorem relation.refl_gen.to_refl_trans_gen + inductive relation.refl_gen + theorem relation.refl_trans_gen.cases_head + theorem relation.refl_trans_gen.cases_head_iff + theorem relation.refl_trans_gen.cases_tail + theorem relation.refl_trans_gen.cases_tail_iff + theorem relation.refl_trans_gen.head + theorem relation.refl_trans_gen.head_induction_on + theorem relation.refl_trans_gen.single + theorem relation.refl_trans_gen.trans + theorem relation.refl_trans_gen.trans_induction_on + inductive relation.refl_trans_gen + theorem relation.refl_trans_gen_iff_eq + theorem relation.refl_trans_gen_lift + theorem relation.refl_trans_gen_mono + theorem relation.refl_trans_gen_of_equivalence + theorem relation.refl_trans_gen_of_transitive_reflexive + theorem relation.refl_trans_gen_refl_trans_gen + theorem relation.reflexive_join + theorem relation.reflexive_refl_trans_gen + theorem relation.symmetric_join + theorem relation.transitive_join + theorem relation.transitive_refl_trans_gen 2018-04-25 14:35:58+02:00 5df2ee7 style(group_theory): move free_group from algebra to group_theory ESTIMATED CHANGES Renamed algebra/free_group.lean to group_theory/free_group.lean +/- theorem free_group.red.inv_of_red_of_ne.aux 2018-04-25 14:28:21+02:00 716decc feat(algebra): add free groups (#89) ESTIMATED CHANGES Added algebra/free_group.lean + theorem free_group.church_rosser + theorem free_group.church_rosser_1 + def free_group.free_group_congr + def free_group.free_group_empty_equiv_unit + def free_group.free_group_unit_equiv_int + def free_group.inv + def free_group.map.aux + theorem free_group.map.comp + theorem free_group.map.id' + theorem free_group.map.id + theorem free_group.map.inv + theorem free_group.map.mk + theorem free_group.map.mul + theorem free_group.map.of + theorem free_group.map.one + theorem free_group.map.unique + def free_group.map + theorem free_group.map_eq_to_group + def free_group.mk + theorem free_group.mul_mk + theorem free_group.of.inj + def free_group.of + theorem free_group.prod.inv + theorem free_group.prod.mul + theorem free_group.prod.of + theorem free_group.prod.one + theorem free_group.prod.unique + def free_group.prod + theorem free_group.prod_mk + theorem free_group.quot_lift_mk + theorem free_group.quot_lift_on_mk + theorem free_group.quot_mk_eq_mk + theorem free_group.red.antisymm + theorem free_group.red.append + theorem free_group.red.bnot + theorem free_group.red.cons + theorem free_group.red.cons_bnot + theorem free_group.red.cons_bnot_rev + theorem free_group.red.cons_iff + theorem free_group.red.enum.complete + theorem free_group.red.enum.sound + def free_group.red.enum + theorem free_group.red.inv_of_red_nil.aux + theorem free_group.red.inv_of_red_nil + theorem free_group.red.inv_of_red_of_ne.aux + theorem free_group.red.inv_of_red_of_ne + theorem free_group.red.length + theorem free_group.red.nil.aux + theorem free_group.red.nil + theorem free_group.red.of_cons + theorem free_group.red.of_step + theorem free_group.red.singleton.aux + theorem free_group.red.singleton + theorem free_group.red.sizeof + theorem free_group.red.step.append_left + theorem free_group.red.step.append_right + theorem free_group.red.step.bnot_rev + theorem free_group.red.step.church_rosser.aux2 + theorem free_group.red.step.church_rosser.aux + theorem free_group.red.step.church_rosser + theorem free_group.red.step.cons + theorem free_group.red.step.cons_bnot + theorem free_group.red.step.eqv_gen_of_red + theorem free_group.red.step.exact + theorem free_group.red.step.inv + theorem free_group.red.step.length + theorem free_group.red.step.sound + theorem free_group.red.step.sublist + theorem free_group.red.step.to_group + inductive free_group.red.step + theorem free_group.red.sublist + theorem free_group.red.to_group + theorem free_group.red.trans.aux + theorem free_group.red.trans + inductive free_group.red + def free_group.reduce.church_rosser + theorem free_group.reduce.cons + theorem free_group.reduce.eq_of_red + theorem free_group.reduce.exact + theorem free_group.reduce.idem + theorem free_group.reduce.min + theorem free_group.reduce.not + theorem free_group.reduce.red + theorem free_group.reduce.rev + theorem free_group.reduce.self + theorem free_group.reduce.sound + theorem free_group.reduce.step.eq + def free_group.reduce + theorem free_group.sum.inv + theorem free_group.sum.of + theorem free_group.sum.one + theorem free_group.sum.sum + def free_group.sum + theorem free_group.sum_mk + def free_group.to_group.aux + theorem free_group.to_group.inv + theorem free_group.to_group.mk + theorem free_group.to_group.mul + theorem free_group.to_group.of + theorem free_group.to_group.of_eq + theorem free_group.to_group.one + theorem free_group.to_group.range_eq_closure + theorem free_group.to_group.range_subset + theorem free_group.to_group.unique + def free_group.to_group + theorem free_group.to_group_eq_prod_map + def free_group.to_word.inj + def free_group.to_word.mk + def free_group.to_word + def free_group + theorem list.append_eq_has_append + theorem list.infix_cons Modified group_theory/subgroup.lean 2018-04-25 13:44:07+02:00 e6264eb feat(order/conditionally_complete_lattice): add instance complete_linear_order -> conditionally_complete_linear_order; add cSup/cInf_interval ESTIMATED CHANGES Modified order/conditionally_complete_lattice.lean + theorem lattice.cInf_interval + theorem lattice.cSup_interval 2018-04-25 13:06:49+02:00 bf04127 feat(order): add liminf and limsup over filters (c.f. Sébastien Gouëzel's #115) ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean + theorem Liminf_eq_of_le_nhds + theorem Liminf_nhds + theorem Limsup_eq_of_le_nhds + theorem Limsup_nhds + theorem gt_mem_sets_of_Liminf_gt + theorem is_bounded_ge_nhds + theorem is_bounded_le_nhds + theorem is_bounded_under_ge_of_tendsto + theorem is_bounded_under_le_of_tendsto + theorem is_cobounded_ge_nhds + theorem is_cobounded_le_nhds + theorem is_cobounded_under_ge_of_tendsto + theorem is_cobounded_under_le_of_tendsto + theorem le_nhds_of_Limsup_eq_Liminf + theorem lt_mem_sets_of_Limsup_lt Modified logic/basic.lean + theorem exists_true_iff_nonempty Modified order/conditionally_complete_lattice.lean + theorem lattice.cInf_lower_bounds_eq_cSup + theorem lattice.cSup_upper_bounds_eq_cInf Modified order/lattice.lean + theorem lattice.forall_le_or_exists_lt_inf + theorem lattice.forall_le_or_exists_lt_sup Added order/liminf_limsup.lean + def filter.Liminf + theorem filter.Liminf_bot + theorem filter.Liminf_eq_supr_Inf + theorem filter.Liminf_le_Liminf + theorem filter.Liminf_le_Liminf_of_le + theorem filter.Liminf_le_Limsup + theorem filter.Liminf_le_of_le + theorem filter.Liminf_principal + theorem filter.Liminf_top + def filter.Limsup + theorem filter.Limsup_bot + theorem filter.Limsup_eq_infi_Sup + theorem filter.Limsup_le_Limsup + theorem filter.Limsup_le_Limsup_of_le + theorem filter.Limsup_le_of_le + theorem filter.Limsup_principal + theorem filter.Limsup_top + def filter.is_bounded + theorem filter.is_bounded_bot + theorem filter.is_bounded_ge_of_bot + theorem filter.is_bounded_iff + theorem filter.is_bounded_le_of_top + theorem filter.is_bounded_of_le + theorem filter.is_bounded_principal + theorem filter.is_bounded_sup + theorem filter.is_bounded_top + def filter.is_bounded_under + theorem filter.is_bounded_under_inf + theorem filter.is_bounded_under_of + theorem filter.is_bounded_under_of_is_bounded + theorem filter.is_bounded_under_sup + theorem filter.is_cobounded.mk + def filter.is_cobounded + theorem filter.is_cobounded_bot + theorem filter.is_cobounded_ge_of_top + theorem filter.is_cobounded_le_of_bot + theorem filter.is_cobounded_of_is_bounded + theorem filter.is_cobounded_of_le + theorem filter.is_cobounded_principal + theorem filter.is_cobounded_top + def filter.is_cobounded_under + theorem filter.le_Liminf_of_le + theorem filter.le_Limsup_of_le + def filter.liminf + theorem filter.liminf_eq + theorem filter.liminf_eq_supr_infi + theorem filter.liminf_le_liminf + def filter.limsup + theorem filter.limsup_eq + theorem filter.limsup_eq_infi_supr + theorem filter.limsup_le_limsup 2018-04-24 22:18:49-04:00 78d28c5 fix(*): update to lean ESTIMATED CHANGES Modified data/finset.lean + theorem finset.insert_val_of_not_mem +/- theorem finset.mem_pi +/- def finset.pi.empty + theorem finset.pi_val Modified data/list/basic.lean +/- theorem list.append_eq_nil Modified leanpkg.toml Modified set_theory/zfc.lean + theorem pSet.resp.eval_val - def pSet.resp.eval_val 2018-04-24 21:11:29-04:00 44271cf feat(tactic/interactive): add `clean` tactic for removing identity junk and annotations added to terms by common tactics like dsimp ESTIMATED CHANGES Modified tactic/interactive.lean Modified tests/tactics.lean 2018-04-24 20:17:52-04:00 e4c09d4 feat(analysis/topology/topological_space): a finite union of compact sets is compact (#117) ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem compact_bUnion_of_compact + theorem compact_of_finite 2018-04-24 20:16:10-04:00 e4e4659 feat(tactic/generalize_hyp): a version of `generalize` that also applies to assumptions (#110) ESTIMATED CHANGES Modified tactic/interactive.lean + theorem tactic.interactive.{u} Modified tests/tactics.lean 2018-04-24 17:00:19-04:00 f87135b feat(algebra/pi_instances): Adds pi instances for common algebraic structures ESTIMATED CHANGES Added algebra/pi_instances.lean 2018-04-24 15:57:06-04:00 3b73ea1 feat(tactic/convert): tactic similar to `refine` (#116) ... but which generates equality proof obligations for every discrepancy between the goal and the type of the rule ESTIMATED CHANGES Modified tactic/interactive.lean Renamed tests/wlog.lean to tests/tactics.lean 2018-04-24 14:30:20-04:00 7dcd6f5 feat(tactic/interactive): adding a discharger argument to solve_by_elim (#108) ESTIMATED CHANGES Modified docs/tactics.md Modified tactic/interactive.lean 2018-04-24 14:26:32-04:00 009968e feat(docs/tactic): document congr_n and unfold_coes (#105) ESTIMATED CHANGES Modified docs/tactics.md 2018-04-24 14:25:48-04:00 44391c9 doc(docs/elan.md): a short setup guide A short guide on getting started with Lean, mathlib and elan. Adds a link to docs/elan.md in README.md ESTIMATED CHANGES Modified README.md Added docs/elan.md 2018-04-24 14:24:59-04:00 23c07fd feat(docs/extras/cc) Documents the cc tactic From explanations and experiments by Simon, Gabriel and Kenny at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/cc.20is.20so.20powerful ESTIMATED CHANGES Modified docs/extras.md Added docs/extras/cc.md 2018-04-24 14:22:35-04:00 e2c7421 feat(tactic/ext): new `ext` tactic and corresponding `extensionality` attribute ESTIMATED CHANGES Modified data/finset.lean + theorem finset.ext' Modified data/list/basic.lean Modified data/multiset.lean + theorem multiset.ext' Modified data/set/basic.lean Added data/stream/basic.lean Modified docs/tactics.md Modified tactic/interactive.lean Modified tests/examples.lean 2018-04-24 14:15:55-04:00 d862939 fix(tactic/wlog): in the proof of completeness, useful assumptions were not visible ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/interactive.lean Modified tests/wlog.lean 2018-04-19 08:49:27-04:00 c13c5ea fix(ordinal): fix looping simp ESTIMATED CHANGES Modified set_theory/ordinal.lean 2018-04-19 07:58:36-04:00 2d935cb refactor(lebesgue_measure): clean up proofs ESTIMATED CHANGES Modified algebra/ordered_group.lean + theorem lt_sub - theorem lt_sub_iff - theorem sub_lt_iff Modified algebra/ordered_ring.lean Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/lebesgue_measure.lean +/- theorem measure_theory.le_lebesgue_length +/- theorem measure_theory.lebesgue_Ico +/- theorem measure_theory.lebesgue_Ioo + theorem measure_theory.lebesgue_length_Ico' +/- theorem measure_theory.lebesgue_length_Ico - theorem measure_theory.lebesgue_length_Ico_le_lebesgue_length_Ico +/- theorem measure_theory.lebesgue_outer_Ico Modified analysis/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.of_function_le Modified analysis/topology/topological_structures.lean Modified data/int/basic.lean Modified data/set/intervals.lean + theorem set.Ico_sdiff_Ioo_eq_singleton + theorem set.Ico_self + theorem set.Ico_subset_Ico_left + theorem set.Ico_subset_Ico_right + theorem set.Ico_subset_Iio_self + theorem set.Ico_subset_Ioo_left + theorem set.Ioo_self + theorem set.Ioo_subset_Ico_self 2018-04-19 04:40:28-04:00 7d1ab38 feat(list/basic,...): minor modifications & additions based on Zulip conversations and requests ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/ring.lean - def nonunits Modified data/list/basic.lean +/- theorem list.append_inj_left' +/- theorem list.append_inj_left +/- theorem list.append_inj_right' +/- theorem list.append_inj_right +/- theorem list.append_left_cancel + theorem list.append_left_inj +/- theorem list.append_right_cancel + theorem list.append_right_inj + theorem list.drop_suffix + theorem list.prefix_append_left_inj + theorem list.prefix_cons_inj + theorem list.prefix_iff_eq_append + theorem list.prefix_iff_eq_take + theorem list.suffix_iff_eq_append + theorem list.suffix_iff_eq_drop + theorem list.take_prefix Modified data/set/basic.lean +/- theorem set.image_preimage_eq +/- theorem set.preimage_image_eq Modified logic/basic.lean +/- def decidable_of_iff' +/- def decidable_of_iff + theorem exists_prop_of_false + theorem exists_prop_of_true + theorem forall_prop_of_false + theorem forall_prop_of_true +/- theorem not_and_not_right +/- theorem not_and_of_not_or_not +/- theorem not_imp_of_and_not + theorem not_nonempty_iff_imp_false Modified ring_theory/ideals.lean + def nonunits 2018-04-17 21:08:42-04:00 ed09867 feat(data/list/basic): prefix_or_prefix ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.nil_infix + theorem list.nil_prefix + theorem list.nil_suffix + theorem list.prefix_of_prefix_length_le + theorem list.prefix_or_prefix_of_prefix + theorem list.reverse_prefix + theorem list.reverse_suffix + theorem list.suffix_of_suffix_length_le + theorem list.suffix_or_suffix_of_suffix 2018-04-17 01:53:53-04:00 d9daa10 chore(group_theory): fixups ESTIMATED CHANGES Modified algebra/group.lean - theorem is_group_anti_hom.mul - def is_group_anti_hom - theorem is_group_hom.mul - def is_group_hom Modified group_theory/coset.lean + def left_rel Modified group_theory/order_of_element.lean Modified group_theory/subgroup.lean +/- theorem is_group_hom.inj_iff_trivial_ker +/- theorem is_group_hom.trivial_ker_of_inj +/- theorem is_subgroup.trivial_eq_closure Modified group_theory/submonoid.lean 2018-04-16 19:39:05-04:00 4f42fbf feat(data/option): more option stuff ESTIMATED CHANGES Modified algebra/big_operators.lean Modified algebra/group.lean +/- def is_group_hom Modified data/list/basic.lean + theorem option.to_list_nodup Modified data/option.lean +/- theorem option.bind_eq_some +/- theorem option.bind_some + theorem option.get_mem + theorem option.get_of_mem +/- theorem option.guard_eq_some + theorem option.iget_mem + theorem option.iget_of_mem + theorem option.iget_some +/- theorem option.is_none_iff_eq_none +/- theorem option.is_some_iff_exists +/- theorem option.map_eq_some +/- theorem option.map_id' +/- theorem option.map_none +/- theorem option.map_some +/- theorem option.mem_def + theorem option.mem_to_list +/- theorem option.none_bind +/- theorem option.seq_some +/- theorem option.some_bind +/- theorem option.some_inj 2018-04-16 19:01:44-04:00 d5c73c0 chore(*): trailing spaces ESTIMATED CHANGES Modified algebra/archimedean.lean +/- theorem pow_unbounded_of_gt_one Modified algebra/euclidean_domain.lean +/- theorem euclidean_domain.gcd_one_left +/- theorem euclidean_domain.gcd_zero_left +/- theorem euclidean_domain.mod_one +/- theorem euclidean_domain.mod_zero Modified algebra/ordered_group.lean Modified algebra/ring.lean Modified analysis/metric_space.lean Modified data/int/modeq.lean +/- theorem int.modeq.modeq_neg Modified data/nat/choose.lean +/- theorem choose_succ_self Modified data/nat/prime.lean +/- theorem nat.mem_list_primes_of_dvd_prod +/- theorem nat.prod_factors Modified data/num/basic.lean Modified data/real/cau_seq.lean Modified data/seq/wseq.lean Modified data/set/function.lean Modified logic/function.lean +/- theorem function.hfunext Modified order/galois_connection.lean Modified order/order_iso.lean Modified set_theory/cofinality.lean +/- theorem ordinal.cof_eq_one_iff_is_succ +/- theorem ordinal.cof_eq_zero +/- theorem ordinal.cof_succ +/- theorem ordinal.cof_zero Modified set_theory/ordinal_notation.lean +/- theorem onote.split_eq_scale_split' Modified tactic/alias.lean Modified tactic/norm_num.lean Modified tactic/ring.lean Modified tests/examples.lean 2018-04-16 19:00:13-04:00 b7db508 feat(analysis/topology/topological_space): basis elements are open ESTIMATED CHANGES Modified analysis/topology/topological_space.lean + theorem topological_space.is_open_of_is_topological_basis + theorem topological_space.mem_basis_subset_of_mem_open 2018-04-16 19:00:13-04:00 6dd2bc0 feat(data/option): more option decidability ESTIMATED CHANGES Modified data/bool.lean + theorem bool.not_ff Modified data/option.lean + theorem option.is_none_iff_eq_none +/- def option.to_list Modified logic/basic.lean + def decidable_of_bool 2018-04-16 20:29:17+02:00 f2361dc fix(group_theory/coset): left_cosets.left_cosets -> left_cosets.eq_class_eq_left_coset is now a theorem ESTIMATED CHANGES Modified group_theory/coset.lean + theorem left_cosets.eq_class_eq_left_coset - def left_cosets.left_coset 2018-04-16 20:09:50+02:00 910de7e refactor(group_theory/coset): left_cosets is now a quotient (#103) ESTIMATED CHANGES Modified data/equiv.lean + def equiv.equiv_fib Modified group_theory/coset.lean - theorem is_subgroup.Union_left_cosets_eq_univ - theorem is_subgroup.group_equiv_left_cosets_times_subgroup + def is_subgroup.left_coset_equiv_subgroup - theorem is_subgroup.left_cosets_disjoint - theorem is_subgroup.left_cosets_equiv_subgroup - theorem is_subgroup.pairwise_left_cosets_disjoint - theorem is_subgroup.subgroup_mem_left_cosets + def left_cosets.left_coset +/- def left_cosets Modified group_theory/order_of_element.lean 2018-04-15 17:58:13+02:00 479a122 doc(doc): add topological space doc (#101) ESTIMATED CHANGES Added docs/theories/topological_spaces.md 2018-04-15 17:41:57+02:00 c34f202 Adding some notes on calc ESTIMATED CHANGES Modified docs/extras.md Added docs/extras/calc.md 2018-04-15 17:39:03+02:00 21d5618 feat(docs/styles): Some more indentation guidelines (#95) Fixed also a typo pointed out by Scott ESTIMATED CHANGES Modified docs/style.md 2018-04-15 17:36:59+02:00 f1179bd feat(algebra/big_operators): update prod_bij_ne_one (#100) ESTIMATED CHANGES Modified algebra/big_operators.lean Modified linear_algebra/basic.lean 2018-04-13 19:25:49+02:00 5605233 feat(algebra/big_operators): add prod_sum (equating the product over a sum to the sum of all combinations) ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_sum Modified data/finset.lean + theorem finset.attach_empty + theorem finset.attach_insert + theorem finset.injective_pi_cons + def finset.pi.cons + theorem finset.pi.cons_ne + theorem finset.pi.cons_same + def finset.pi.empty + theorem finset.pi_empty + theorem finset.pi_insert Modified data/multiset.lean + theorem multiset.attach_ndinsert + theorem multiset.disjoint_map_map + theorem multiset.injective_pi_cons + theorem multiset.map_id + theorem multiset.map_singleton + theorem multiset.nodup_bind + theorem multiset.nodup_pi + def multiset.pairwise + theorem multiset.pairwise_coe_iff_pairwise + theorem multiset.pairwise_of_nodup + theorem multiset.pmap_cons + theorem multiset.pmap_zero + theorem multiset.prod_bind 2018-04-11 17:11:19+02:00 f1e46e1 fix(.travis.yml): fix some elan ESTIMATED CHANGES Modified .travis.yml 2018-04-11 16:41:07+02:00 b13f404 chore(.travis.yml): show some elan ESTIMATED CHANGES Modified .travis.yml 2018-04-11 15:17:30+02:00 5f360e3 feat(group_theory): add group.closure, the subgroup generated by a set ESTIMATED CHANGES Modified group_theory/subgroup.lean + def group.closure + theorem group.closure_subset + theorem group.gpowers_eq_closure + inductive group.in_closure + theorem group.mem_closure + theorem group.subset_closure + theorem is_subgroup.trivial_eq_closure + theorem mem_gpowers Modified group_theory/submonoid.lean 2018-04-11 14:49:46+02:00 fea2491 chore(group_theory): move order_of into its own file; base costes on left_coset ESTIMATED CHANGES Modified group_theory/coset.lean + theorem is_subgroup.Union_left_cosets_eq_univ + theorem is_subgroup.group_equiv_left_cosets_times_subgroup + theorem is_subgroup.left_cosets_disjoint + theorem is_subgroup.left_cosets_equiv_subgroup + theorem is_subgroup.pairwise_left_cosets_disjoint + theorem is_subgroup.subgroup_mem_left_cosets +/- def left_coset +/- theorem left_coset_assoc +/- def left_coset_equiv +/- theorem left_coset_equiv_rel +/- theorem left_coset_mem_left_coset +/- theorem left_coset_right_coset + def left_cosets +/- theorem mem_left_coset +/- theorem mem_left_coset_iff +/- theorem mem_left_coset_left_coset +/- theorem mem_own_left_coset +/- theorem mem_own_right_coset +/- theorem mem_right_coset +/- theorem mem_right_coset_iff +/- theorem mem_right_coset_right_coset +/- theorem normal_of_eq_cosets +/- def right_coset +/- theorem right_coset_assoc +/- theorem right_coset_mem_right_coset Added group_theory/order_of_element.lean + theorem exists_gpow_eq_one + theorem exists_pow_eq_one + theorem finset.mem_range_iff_mem_finset_range_of_mod_eq + theorem gpow_eq_mod_order_of + theorem mem_range_gpow_iff_mem_range_order_of + theorem order_eq_card_range_gpow + def order_of + theorem order_of_dvd_card_univ + theorem order_of_le_card_univ + theorem order_of_ne_zero + theorem pow_eq_mod_order_of + theorem pow_injective_of_lt_order_of + theorem pow_order_of_eq_one Modified group_theory/subgroup.lean - def cosets - theorem exists_gpow_eq_one - theorem exists_pow_eq_one - theorem finset.mem_range_iff_mem_finset_range_of_mod_eq - theorem gpow_eq_mod_order_of +/- theorem injective_mul - theorem is_subgroup.Union_cosets_eq_univ - theorem is_subgroup.cosets_disjoint - theorem is_subgroup.cosets_equiv_subgroup - theorem is_subgroup.group_equiv_cosets_times_subgroup - theorem is_subgroup.mul_image - theorem is_subgroup.pairwise_cosets_disjoint - theorem is_subgroup.subgroup_mem_cosets - theorem mem_range_gpow_iff_mem_range_order_of - theorem order_eq_card_range_gpow - def order_of - theorem order_of_dvd_card_univ - theorem order_of_le_card_univ - theorem order_of_ne_zero - theorem pow_eq_mod_order_of - theorem pow_injective_of_lt_order_of - theorem pow_order_of_eq_one 2018-04-11 13:50:33+02:00 d2ab199 chore(group_theory): simplify proofs; generalize some theorems ESTIMATED CHANGES Modified group_theory/coset.lean +/- theorem eq_cosets_of_normal +/- theorem left_coset_assoc +/- theorem left_coset_right_coset + theorem mem_left_coset_iff - theorem mem_mem_left_coset + theorem mem_right_coset_iff +/- theorem normal_of_eq_cosets +/- theorem one_left_coset - theorem one_right_coset +/- theorem right_coset_assoc + theorem right_coset_one Modified group_theory/subgroup.lean + theorem is_group_hom.inj_iff_trivial_ker - theorem is_group_hom.inj_iff_trivial_kernel + theorem is_group_hom.inj_of_trivial_ker - theorem is_group_hom.inj_of_trivial_kernel +/- theorem is_group_hom.inv_iff_ker - theorem is_group_hom.inv_ker + def is_group_hom.ker - theorem is_group_hom.ker_inv - def is_group_hom.kernel + theorem is_group_hom.mem_ker - theorem is_group_hom.mem_ker_one +/- theorem is_group_hom.one_ker_inv + theorem is_group_hom.trivial_ker_of_inj - theorem is_group_hom.trivial_kernel_of_inj - theorem is_subgroup.eq_one_of_trivial_mem + theorem is_subgroup.mem_center +/- theorem is_subgroup.mem_norm_comm + theorem is_subgroup.mem_norm_comm_iff + theorem is_subgroup.mem_trivial - theorem is_subgroup.trivial_mem_of_eq_one 2018-04-11 10:25:21+02:00 ea0fb11 style(group_theory): try to follow conventions (calc indentation, lowercase names, ...) ESTIMATED CHANGES Modified group_theory/coset.lean +/- theorem eq_cosets_of_normal +/- def left_coset +/- theorem left_coset_assoc +/- def left_coset_equiv +/- theorem left_coset_equiv_rel +/- theorem left_coset_mem_left_coset +/- theorem left_coset_right_coset +/- theorem mem_left_coset +/- theorem mem_left_coset_left_coset +/- theorem mem_mem_left_coset +/- theorem mem_own_left_coset +/- theorem mem_own_right_coset +/- theorem mem_right_coset +/- theorem mem_right_coset_right_coset +/- theorem normal_iff_eq_cosets +/- theorem normal_of_eq_cosets +/- theorem one_left_coset +/- theorem one_right_coset +/- def right_coset +/- theorem right_coset_assoc +/- theorem right_coset_mem_right_coset Modified group_theory/subgroup.lean +/- def cosets +/- theorem injective_mul +/- theorem is_group_hom.inj_iff_trivial_kernel +/- theorem is_group_hom.inj_of_trivial_kernel +/- theorem is_group_hom.inv_iff_ker +/- theorem is_group_hom.inv_ker +/- theorem is_group_hom.inv_ker_one +/- theorem is_group_hom.ker_inv +/- def is_group_hom.kernel +/- theorem is_group_hom.mem_ker_one +/- theorem is_group_hom.one_iff_ker_inv +/- theorem is_group_hom.one_ker_inv +/- theorem is_group_hom.trivial_kernel_of_inj +/- def is_subgroup.center +/- theorem is_subgroup.eq_one_of_trivial_mem +/- theorem is_subgroup.mem_norm_comm +/- def is_subgroup.trivial +/- theorem is_subgroup.trivial_mem_of_eq_one 2018-04-11 10:24:33+02:00 fa86d34 feat(group_theory): add left/right cosets and normal subgroups ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem is_group_anti_hom.prod +/- theorem is_group_hom.prod Modified algebra/group.lean +/- theorem is_group_anti_hom.inv +/- theorem is_group_anti_hom.mul +/- theorem is_group_hom.inv +/- theorem is_group_hom.mul +/- def is_group_hom Added group_theory/coset.lean + theorem eq_cosets_of_normal + def left_coset + theorem left_coset_assoc + def left_coset_equiv + theorem left_coset_equiv_rel + theorem left_coset_mem_left_coset + theorem left_coset_right_coset + theorem mem_left_coset + theorem mem_left_coset_left_coset + theorem mem_mem_left_coset + theorem mem_own_left_coset + theorem mem_own_right_coset + theorem mem_right_coset + theorem mem_right_coset_right_coset + theorem normal_iff_eq_cosets + theorem normal_of_eq_cosets + theorem one_left_coset + theorem one_right_coset + def right_coset + theorem right_coset_assoc + theorem right_coset_mem_right_coset Modified group_theory/subgroup.lean + theorem is_group_hom.inj_iff_trivial_kernel + theorem is_group_hom.inj_of_trivial_kernel + theorem is_group_hom.inv_iff_ker + theorem is_group_hom.inv_ker + theorem is_group_hom.inv_ker_one + theorem is_group_hom.ker_inv + def is_group_hom.kernel + theorem is_group_hom.mem_ker_one + theorem is_group_hom.one_iff_ker_inv + theorem is_group_hom.one_ker_inv + theorem is_group_hom.trivial_kernel_of_inj + def is_subgroup.center + theorem is_subgroup.eq_one_of_trivial_mem + theorem is_subgroup.mem_norm_comm + def is_subgroup.trivial + theorem is_subgroup.trivial_mem_of_eq_one 2018-04-10 14:38:56+02:00 f85330a feat(group_theory/submonoid): relate monoid closure to list product ESTIMATED CHANGES Modified group_theory/submonoid.lean + theorem is_submonoid.list_prod_mem +/- theorem is_submonoid.pow_mem + theorem is_submonoid.power_subset + theorem monoid.exists_list_of_mem_closure 2018-04-10 13:58:37+02:00 4a15503 refactor(ring_theory): unify monoid closure in ring theory with the one in group theory ESTIMATED CHANGES Modified group_theory/submonoid.lean + theorem monoid.closure_subset - theorem monoid.is_submonoid_closure + theorem monoid.subset_closure Modified ring_theory/localization.lean - def localization.closure - inductive localization.in_closure - theorem localization.subset_closure 2018-04-10 13:13:52+02:00 ec18563 feat(group_theory): add subtype instanes for group and monoid; monoid closure ESTIMATED CHANGES Modified group_theory/subgroup.lean Modified group_theory/submonoid.lean + def monoid.closure + inductive monoid.in_closure + theorem monoid.is_submonoid_closure 2018-04-10 13:02:43+02:00 88960f0 refactor(algebra): move is_submonoid to group_theory and base is_subgroup on is_submonoid ESTIMATED CHANGES Modified algebra/group.lean +/- theorem inv_is_group_anti_hom +/- def is_group_anti_hom +/- def is_group_hom Modified algebra/group_power.lean - def powers Modified data/list/basic.lean Modified group_theory/subgroup.lean + def gpowers + theorem injective_mul +/- theorem is_subgroup.cosets_disjoint + theorem is_subgroup.gpow_mem - theorem is_subgroup.injective_mul - theorem is_subgroup.inv_mem +/- theorem is_subgroup.inv_mem_iff +/- theorem is_subgroup.mul_image - theorem is_subgroup.mul_mem + theorem is_subgroup.mul_mem_cancel_left + theorem is_subgroup.mul_mem_cancel_right + theorem is_subgroup.of_div +/- theorem is_subgroup.subgroup_mem_cosets - structure is_subgroup - theorem is_subgroup_range_gpow Added group_theory/submonoid.lean + theorem is_submonoid.pow_mem + def powers Modified ring_theory/localization.lean 2018-04-09 14:39:12-04:00 bd0a555 fix(algebra/group_power): remove has_smul This was causing notation overload problems with module smul ESTIMATED CHANGES Modified algebra/archimedean.lean Modified algebra/group_power.lean +/- theorem add_monoid.mul_smul' +/- theorem add_monoid.neg_smul +/- theorem add_monoid.smul_add +/- theorem add_monoid.smul_neg_comm +/- theorem add_monoid.smul_nonneg +/- theorem gpow_coe_nat +/- theorem gpow_neg_succ +/- theorem gpow_of_nat +/- theorem gsmul_add_comm +/- theorem gsmul_coe_nat +/- theorem gsmul_eq_mul' +/- theorem gsmul_eq_mul +/- theorem gsmul_neg_succ +/- theorem gsmul_of_nat +/- theorem mul_gsmul_assoc +/- theorem mul_gsmul_left Modified data/multiset.lean 2018-04-09 11:32:20+02:00 b02733d fix(data/finset): change argument order of finset.induction(_on) so that the induction tactic accepts them ESTIMATED CHANGES Modified data/finset.lean 2018-04-09 10:30:13+02:00 018cfdd feat(linear_algebra/multivariate_polynomial): make theory computational ESTIMATED CHANGES Modified linear_algebra/multivariate_polynomial.lean +/- theorem finset.bind_singleton2 +/- theorem finsupp.single_induction_on 2018-04-08 01:00:54-04:00 2bd5e21 feat(data/int/modeq): Modular arithmetic for integers ESTIMATED CHANGES Added data/int/modeq.lean + theorem int.modeq.coe_nat_modeq_iff + theorem int.modeq.modeq_add + theorem int.modeq.modeq_add_cancel_left + theorem int.modeq.modeq_add_cancel_right + theorem int.modeq.modeq_iff_dvd + theorem int.modeq.modeq_mul + theorem int.modeq.modeq_mul_left' + theorem int.modeq.modeq_mul_left + theorem int.modeq.modeq_mul_right' + theorem int.modeq.modeq_mul_right + theorem int.modeq.modeq_neg + theorem int.modeq.modeq_of_dvd_of_modeq + theorem int.modeq.modeq_sub + theorem int.modeq.modeq_zero_iff + def int.modeq 2018-04-08 00:45:25-04:00 6815830 chore(measure_theory/measure_space): add coe_fn instance ESTIMATED CHANGES Modified analysis/measure_theory/lebesgue_measure.lean +/- theorem measure_theory.lebesgue_Ico +/- theorem measure_theory.lebesgue_Ioo +/- theorem measure_theory.lebesgue_singleton Modified analysis/measure_theory/measure_space.lean +/- theorem measure_theory.measure_Union_le_tsum_nat +/- theorem measure_theory.measure_empty +/- theorem measure_theory.measure_mono +/- theorem measure_theory.measure_space_eq 2018-04-08 00:35:55-04:00 03d5bd9 fix(*): update to lean ESTIMATED CHANGES Modified .travis.yml Modified algebra/group_power.lean +/- theorem div_pow +/- theorem division_ring.inv_pow +/- theorem inv_gpow +/- theorem inv_pow +/- theorem mul_pow +/- theorem one_div_pow +/- theorem pow_abs +/- theorem pow_inv +/- theorem pow_inv_comm +/- def powers Modified analysis/limits.lean Modified analysis/measure_theory/outer_measure.lean Modified data/int/basic.lean +/- theorem int.shiftl_eq_mul_pow +/- theorem int.shiftr_eq_div_pow Modified data/nat/sqrt.lean Modified data/pnat.lean +/- theorem pnat.pow_coe Modified group_theory/subgroup.lean +/- theorem exists_pow_eq_one +/- theorem is_subgroup_range_gpow +/- theorem order_eq_card_range_gpow +/- theorem pow_eq_mod_order_of +/- theorem pow_order_of_eq_one Modified leanpkg.toml Modified linear_algebra/multivariate_polynomial.lean Modified number_theory/pell.lean Modified set_theory/cardinal.lean +/- theorem cardinal.nat_cast_pow Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean +/- theorem ordinal.mul_omega_power_power +/- theorem ordinal.nat_cast_power Modified set_theory/ordinal_notation.lean + theorem onote.power_def +/- theorem onote.repr_power Modified tactic/ring.lean +/- theorem tactic.ring.pow_add_rev +/- theorem tactic.ring.pow_add_rev_right 2018-04-07 22:38:50-04:00 e9b9014 feat(data/erased): VM-erased data type ESTIMATED CHANGES Added data/erased.lean + def erased.bind + theorem erased.bind_eq_out + def erased.choice + def erased.join + theorem erased.join_eq_out + def erased.mk + theorem erased.mk_out + theorem erased.nonempty_iff + theorem erased.out_mk + theorem erased.out_proof + def erased.out_type + def erased Modified data/set/basic.lean +/- theorem set.mem_singleton_iff 2018-04-05 01:29:34-04:00 22e671c fix(travis.yml): fix travis setup for new nightlies ESTIMATED CHANGES Modified .travis.yml Modified leanpkg.toml 2018-04-05 01:05:02-04:00 81264ec fix(leanpkg.toml): remove lean_version I will keep marking the nightly version here, but I will leave it commented out until I can figure out how to make travis work with it ESTIMATED CHANGES Modified leanpkg.toml 2018-04-05 00:59:52-04:00 08f19fd chore(data/nat/prime): style and minor modifications ESTIMATED CHANGES Modified data/nat/prime.lean + theorem nat.factors_lemma +/- theorem nat.perm_of_prod_eq_prod 2018-04-05 00:35:23-04:00 efa4f92 feat(data/nat/prime): lemmas about nat.factors ESTIMATED CHANGES Modified data/nat/prime.lean + theorem nat.factors_unique + theorem nat.mem_factors + theorem nat.mem_factors_of_dvd + theorem nat.mem_list_primes_of_dvd_prod + theorem nat.perm_of_prod_eq_prod + theorem nat.prod_factors 2018-04-05 00:22:45-04:00 2d370e9 feat(algebra/euclidean_domain): euclidean domains / euclidean algorithm ESTIMATED CHANGES Added algebra/euclidean_domain.lean + theorem euclidean_domain.div_self + theorem euclidean_domain.dvd_gcd + theorem euclidean_domain.dvd_mod + theorem euclidean_domain.dvd_mod_self + theorem euclidean_domain.gcd.induction + def euclidean_domain.gcd + theorem euclidean_domain.gcd_decreasing + theorem euclidean_domain.gcd_dvd + theorem euclidean_domain.gcd_dvd_left + theorem euclidean_domain.gcd_dvd_right + theorem euclidean_domain.gcd_next + theorem euclidean_domain.gcd_one_left + theorem euclidean_domain.gcd_self + theorem euclidean_domain.gcd_zero_left + theorem euclidean_domain.gcd_zero_right + theorem euclidean_domain.mod_lt + theorem euclidean_domain.mod_one + theorem euclidean_domain.mod_self + theorem euclidean_domain.mod_zero + theorem euclidean_domain.neq_zero_lt_mod_lt + theorem euclidean_domain.val_dvd_le + theorem euclidean_domain.val_lt_one + theorem euclidean_domain.zero_div + theorem euclidean_domain.zero_mod 2018-04-05 00:16:34-04:00 467f60f feat(data/nat/basic): add div_le_div_right Based on #91 by @MonoidMusician ESTIMATED CHANGES Modified data/nat/basic.lean 2018-04-05 00:13:56-04:00 47f1384 doc(docs/extras): Adding notes on simp ESTIMATED CHANGES Added docs/extras/simp.md 2018-04-05 00:12:09-04:00 73d481a adding explanation of "change" ESTIMATED CHANGES Modified docs/extras/conv.md 2018-04-05 00:07:53-04:00 c87f1e6 fix(*): finish lean update ESTIMATED CHANGES Modified data/pnat.lean +/- def pnat.pow + theorem pnat.pow_coe Modified leanpkg.toml Modified set_theory/ordinal_notation.lean Modified tactic/norm_num.lean Modified tests/norm_num.lean 2018-04-03 21:23:26-04:00 5717986 fix(*): update to lean also add mathlib nightly version to leanpkg.toml ESTIMATED CHANGES Modified algebra/archimedean.lean Modified algebra/big_operators.lean +/- theorem finset.prod_const_one + theorem finset.sum_const_zero Modified algebra/group.lean + def additive + def multiplicative Modified algebra/group_power.lean + theorem add_gsmul +/- theorem add_monoid.add_smul + theorem add_monoid.mul_smul' + theorem add_monoid.mul_smul +/- theorem add_monoid.mul_smul_assoc + theorem add_monoid.mul_smul_left - theorem add_monoid.mul_smul_right +/- theorem add_monoid.neg_smul +/- theorem add_monoid.one_smul + def add_monoid.smul + theorem add_monoid.smul_add +/- theorem add_monoid.smul_eq_mul' +/- theorem add_monoid.smul_eq_mul - theorem add_monoid.smul_mul + theorem add_monoid.smul_neg_comm +/- theorem add_monoid.smul_nonneg +/- theorem add_monoid.smul_one + theorem add_monoid.smul_sub + theorem add_monoid.smul_zero +/- theorem add_monoid.zero_smul + theorem bit0_gsmul + theorem bit0_smul + theorem bit1_gsmul + theorem bit1_smul +/- def gpow +/- theorem gpow_add +/- theorem gpow_bit0 +/- theorem gpow_bit1 +/- theorem gpow_coe_nat + theorem gpow_mul' +/- theorem gpow_mul +/- theorem gpow_mul_comm +/- theorem gpow_neg +/- theorem gpow_neg_one + theorem gpow_neg_succ + theorem gpow_of_nat +/- theorem gpow_one +/- theorem gpow_zero + def gsmul + theorem gsmul_add_comm - theorem gsmul_bit1 + theorem gsmul_coe_nat +/- theorem gsmul_eq_mul' +/- theorem gsmul_eq_mul + theorem gsmul_mul' +/- theorem gsmul_mul - theorem gsmul_neg - theorem gsmul_neg_one + theorem gsmul_neg_succ + theorem gsmul_of_nat - theorem gsmul_one +/- theorem inv_gpow +/- theorem list.sum_repeat +/- theorem mul_gsmul_assoc + theorem mul_gsmul_left - theorem mul_gsmul_right +/- theorem nat.pow_eq_pow + theorem neg_gsmul + theorem neg_one_gsmul +/- theorem one_gpow + theorem one_gsmul +/- theorem pow_abs + theorem pow_mul' +/- theorem pow_mul_comm +/- theorem pow_zero + theorem smul_add_comm' + theorem smul_add_comm - theorem smul_bit1 - theorem smul_succ' - theorem smul_succ - theorem smul_two + theorem succ_smul' + theorem succ_smul + theorem two_smul + theorem zero_gsmul Modified analysis/limits.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/topological_space.lean Modified data/int/basic.lean +/- theorem int.shiftl_eq_mul_pow +/- theorem int.shiftr_eq_div_pow Modified data/multiset.lean +/- theorem multiset.count_smul +/- theorem multiset.prod_repeat + theorem multiset.sum_map_sum_map + theorem multiset.sum_repeat Modified data/nat/sqrt.lean Modified data/real/basic.lean Modified data/set/lattice.lean - theorem set.subset.antisymm_iff Modified group_theory/subgroup.lean +/- theorem exists_gpow_eq_one +/- theorem exists_pow_eq_one +/- theorem gpow_eq_mod_order_of +/- theorem is_subgroup_range_gpow +/- theorem order_eq_card_range_gpow +/- theorem pow_eq_mod_order_of +/- theorem pow_order_of_eq_one Modified leanpkg.toml Modified linear_algebra/multivariate_polynomial.lean Modified number_theory/pell.lean Modified ring_theory/localization.lean Modified set_theory/cardinal.lean +/- theorem cardinal.nat_cast_pow Modified set_theory/ordinal.lean +/- theorem ordinal.nat_cast_power Modified tactic/norm_num.lean Modified tactic/ring.lean Modified tests/norm_num.lean 2018-04-01 22:10:37-04:00 777f6b4 feat(data/set/basic): add some more set lemmas ESTIMATED CHANGES Modified data/analysis/filter.lean Modified data/set/basic.lean + theorem set.compl_subset_comm + theorem set.compl_subset_iff_union - theorem set.compl_subset_of_compl_subset +/- theorem set.compl_union_self +/- theorem set.eq_empty_of_subset_empty +/- theorem set.eq_univ_of_univ_subset +/- theorem set.exists_mem_of_ne_empty + theorem set.image_compl_eq + theorem set.image_compl_subset +/- theorem set.image_empty +/- theorem set.image_inter + theorem set.image_univ_of_surjective + theorem set.mem_compl_image - theorem set.mem_image_compl +/- theorem set.mem_univ - theorem set.mem_univ_eq - theorem set.mem_univ_iff + theorem set.subset.antisymm_iff + theorem set.subset_compl_comm + theorem set.subset_compl_iff_disjoint + theorem set.subset_image_compl +/- theorem set.union_compl_self + theorem set.univ_subset_iff 2018-04-01 21:30:17-04:00 d80ca59 feat(data/fin): add fz/fs recursor for fin ESTIMATED CHANGES Modified data/fin.lean + def fin.succ_rec + def fin.succ_rec_on + theorem fin.succ_rec_on_succ + theorem fin.succ_rec_on_zero 2018-03-30 14:05:43+02:00 162edc3 feat(order): add complete lattice of fixed points (Knaster-Tarski) by Kenny Lau https://github.com/leanprover/mathlib/pull/88 ESTIMATED CHANGES Modified order/basic.lean + theorem ge_of_eq Modified order/fixed_points.lean - theorem ge_of_eq + theorem lattice.fixed_points.Sup_le_f_of_fixed_points + theorem lattice.fixed_points.f_le_Inf_of_fixed_points + theorem lattice.fixed_points.f_le_inf_of_fixed_points + def lattice.fixed_points.next + theorem lattice.fixed_points.next_eq + def lattice.fixed_points.next_fixed + theorem lattice.fixed_points.next_le + def lattice.fixed_points.prev + theorem lattice.fixed_points.prev_eq + def lattice.fixed_points.prev_fixed + theorem lattice.fixed_points.prev_le + theorem lattice.fixed_points.sup_le_f_of_fixed_points + def lattice.fixed_points 2018-03-29 17:23:46+02:00 c54d431 fix(.): unit is now an abbreviation: unit := punit.{1} ESTIMATED CHANGES Modified data/encodable.lean Modified data/equiv.lean +/- def equiv.arrow_empty_unit +/- def equiv.arrow_unit_equiv_unit +/- def equiv.bool_equiv_unit_sum_unit +/- def equiv.empty_arrow_equiv_unit +/- def equiv.false_arrow_equiv_unit +/- def equiv.nat_equiv_nat_sum_unit +/- def equiv.nat_sum_unit_equiv_nat +/- def equiv.option_equiv_sum_unit +/- def equiv.prod_unit +/- theorem equiv.prod_unit_apply + def equiv.punit_equiv_punit +/- def equiv.unit_arrow_equiv +/- def equiv.unit_prod +/- theorem equiv.unit_prod_apply Modified set_theory/ordinal.lean +/- theorem ordinal.is_normal.limit_le 2018-03-25 19:59:40-04:00 d84af03 fix(data/option): revert to lean commit 28f414 ESTIMATED CHANGES Modified data/option.lean 2018-03-22 14:08:02+01:00 e5c1c5e fix(number_theory/dipoh): has_map.map -> functor.map ESTIMATED CHANGES Modified number_theory/dioph.lean 2018-03-22 11:27:24+01:00 a357b79 feat(analysis): measurable_if ESTIMATED CHANGES Modified analysis/measure_theory/measurable_space.lean + theorem measurable_if 2018-03-21 19:31:04-04:00 868bbc6 fix(*): update to lean ESTIMATED CHANGES Modified category/basic.lean - theorem bind_assoc - theorem pure_seq_eq_map Modified data/list/basic.lean Modified data/nat/basic.lean Modified data/option.lean + theorem option.map_id' Modified data/pfun.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean Modified data/set/lattice.lean Modified order/filter.lean Modified tactic/converter/binders.lean Modified tactic/converter/old_conv.lean 2018-03-21 19:31:04-04:00 638265c fix(set_theory/zfc): improve pSet.equiv.eq I claimed in the comment that this converse was not provable, but it is (because equiv is embedded in the definition of mem). Thanks to Vinoth Kumar Raman for bringing this to my attention. ESTIMATED CHANGES Modified set_theory/zfc.lean +/- theorem pSet.equiv.eq + theorem pSet.equiv_iff_mem 2018-03-21 19:31:04-04:00 f3660df chore(logic/basic): protect classical logic theorems You can't use these theorems with `open classical` anyway, because of disambiguation with the `_root_` theorems of the same name. ESTIMATED CHANGES Modified logic/basic.lean - theorem classical.forall_or_distrib_left - theorem classical.not_forall - theorem classical.or_iff_not_imp_left - theorem classical.or_iff_not_imp_right 2018-03-21 18:56:23-04:00 486e4ed fix(test suite): remove `sorry` warning in test suite ESTIMATED CHANGES Modified tests/wlog.lean 2018-03-15 00:57:20-04:00 f7977ff feat(data/finset): add finset.powerset ESTIMATED CHANGES Modified data/finset.lean + theorem finset.card_powerset + theorem finset.empty_mem_powerset + theorem finset.mem_powerset + theorem finset.mem_powerset_self + def finset.powerset + theorem finset.powerset_mono Modified data/list/basic.lean + theorem list.length_sublists' +/- theorem list.length_sublists + theorem list.map_sublists'_aux + theorem list.mem_sublists' +/- theorem list.nodup_map + theorem list.nodup_map_iff + theorem list.nodup_sublists' + theorem list.pairwise_sublists' +/- theorem list.pairwise_sublists + theorem list.reverse_injective + def list.sublists' + def list.sublists'_aux + theorem list.sublists'_aux_append + theorem list.sublists'_aux_eq_sublists' + theorem list.sublists'_cons + theorem list.sublists'_eq_sublists + theorem list.sublists'_nil + theorem list.sublists'_reverse + theorem list.sublists'_singleton + theorem list.sublists_eq_sublists' + theorem list.sublists_reverse Modified data/list/perm.lean + theorem list.perm_ext_sublist_nodup + theorem list.sublists_cons_perm_append + theorem list.sublists_perm_sublists' Modified data/multiset.lean + theorem multiset.card_powerset + theorem multiset.map_single_le_powerset + theorem multiset.mem_powerset + theorem multiset.nodup_powerset +/- def multiset.pmap + def multiset.powerset + def multiset.powerset_aux' + theorem multiset.powerset_aux'_cons + theorem multiset.powerset_aux'_nil + theorem multiset.powerset_aux'_perm + def multiset.powerset_aux + theorem multiset.powerset_aux_eq_map_coe + theorem multiset.powerset_aux_perm + theorem multiset.powerset_aux_perm_powerset_aux' + theorem multiset.powerset_coe' + theorem multiset.powerset_coe 2018-03-13 05:57:49-04:00 4ceb545 feat(data/list/basic): stuff about `list.sublists` ESTIMATED CHANGES Modified analysis/topology/topological_space.lean Modified data/list/basic.lean + theorem list.bind_eq_bind + theorem list.bind_ret_eq_map + theorem list.cons_subset +/- theorem list.cons_subset_of_subset_of_mem + theorem list.length_eq_zero + theorem list.length_sublists + theorem list.lex.imp + inductive list.lex + theorem list.lex_append_left + theorem list.lex_append_right + theorem list.lex_ne_iff + theorem list.map_eq_map + theorem list.map_ret_sublist_sublists +/- theorem list.mem_sublists + theorem list.ne_of_lex_ne + theorem list.nodup_sublists + theorem list.pairwise_sublists + theorem list.reverse_eq_nil + theorem list.reverse_inj +/- theorem list.reverse_nil + theorem list.reverse_rec_on +/- theorem list.reverse_singleton + theorem list.sublists_append + theorem list.sublists_aux_cons_append + theorem list.sublists_aux_cons_eq_sublists_aux₁ - theorem list.sublists_aux_eq_foldl + theorem list.sublists_aux_eq_foldr.aux + theorem list.sublists_aux_eq_foldr + theorem list.sublists_aux_ne_nil + def list.sublists_aux₁ + theorem list.sublists_aux₁_append + theorem list.sublists_aux₁_bind + theorem list.sublists_aux₁_concat + theorem list.sublists_aux₁_eq_sublists_aux + theorem list.sublists_concat + theorem list.sublists_nil + theorem list.sublists_singleton + theorem list.subset_def 2018-03-12 20:45:43+01:00 5f8c26c feat(analysis/measure_theory): measures are embedded in outer measures; add map, dirac, and sum measures ESTIMATED CHANGES Modified analysis/ennreal.lean + theorem ennreal.tsum_supr_eq Modified analysis/measure_theory/measure_space.lean - def measure_theory.count + theorem measure_theory.le_to_outer_measure_caratheodory + def measure_theory.measure_space.count + def measure_theory.measure_space.dirac + def measure_theory.measure_space.map + theorem measure_theory.measure_space.map_comp + theorem measure_theory.measure_space.map_id + theorem measure_theory.measure_space.map_measure + def measure_theory.measure_space.sum + theorem measure_theory.to_outer_measure_to_measure 2018-03-12 17:09:31+01:00 36a061b feat(analysis/measure_theory): outer_measures form a complete lattice ESTIMATED CHANGES Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean + theorem measure_theory.outer_measure.outer_measure_eq +/- theorem measure_theory.outer_measure.subadditive 2018-03-11 14:26:05+01:00 64a8d56 chore(order/filter): simplify definition of filter.prod; cleanup ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/real.lean Modified analysis/topology/continuity.lean Modified analysis/topology/topological_space.lean + theorem nhds_sup Modified analysis/topology/uniform_space.lean +/- theorem uniformity_le_symm Modified data/analysis/filter.lean Modified order/filter.lean + theorem filter.le_lift + theorem filter.lift_const + theorem filter.lift_inf + theorem filter.lift_principal2 +/- theorem filter.map_lift_eq + theorem filter.map_swap_eq_vmap_swap - theorem filter.map_swap_vmap_swap_eq + theorem filter.mem_prod_iff - theorem filter.mem_prod_sets + theorem filter.prod_bot1 + theorem filter.prod_bot2 + theorem filter.prod_comm' +/- theorem filter.prod_def +/- theorem filter.prod_mem_prod +/- theorem filter.prod_neq_bot +/- theorem filter.prod_principal_principal +/- theorem filter.vmap_lift_eq 2018-03-10 20:37:53+01:00 b154092 feat(data/finsupp): make finsupp computable; add induction rule; removed comap_domain ESTIMATED CHANGES Modified data/finsupp.lean + theorem finset.mem_subtype +/- theorem finsupp.add_apply - def finsupp.comap_domain - theorem finsupp.comap_domain_add - theorem finsupp.comap_domain_apply - theorem finsupp.comap_domain_finsupp_sum - theorem finsupp.comap_domain_neg - theorem finsupp.comap_domain_sub - theorem finsupp.comap_domain_sum - theorem finsupp.comap_domain_zero + def finsupp.erase + theorem finsupp.erase_ne + theorem finsupp.erase_same +/- def finsupp.filter +/- theorem finsupp.filter_pos_add_filter_neg +/- theorem finsupp.finite_supp +/- theorem finsupp.map_domain_finset_sum +/- def finsupp.map_range +/- theorem finsupp.map_range_apply +/- theorem finsupp.mem_support_iff + def finsupp.on_finset + theorem finsupp.on_finset_apply - theorem finsupp.prod_comap_domain_index +/- theorem finsupp.prod_finset_sum_index +/- theorem finsupp.prod_map_range_index +/- theorem finsupp.prod_neg_index +/- theorem finsupp.prod_single +/- theorem finsupp.prod_single_index +/- theorem finsupp.prod_sum_index +/- theorem finsupp.single_add + theorem finsupp.single_add_erase +/- theorem finsupp.single_apply +/- theorem finsupp.single_eq_of_ne +/- theorem finsupp.single_eq_same +/- theorem finsupp.single_zero +/- def finsupp.subtype_domain +/- theorem finsupp.subtype_domain_zero +/- theorem finsupp.sum_apply - def finsupp.support +/- theorem finsupp.support_add + theorem finsupp.support_eq_empty + theorem finsupp.support_erase +/- theorem finsupp.support_map_range + theorem finsupp.support_on_finset_subset +/- theorem finsupp.support_single_ne_zero +/- theorem finsupp.support_single_subset +/- theorem finsupp.support_subset_iff + theorem finsupp.support_subtype_domain +/- theorem finsupp.support_sum +/- theorem finsupp.support_zero +/- theorem finsupp.support_zip_with +/- def finsupp.zip_with +/- theorem finsupp.zip_with_apply + structure finsupp - def finsupp Modified linear_algebra/basic.lean 2018-03-10 13:38:59+01:00 b97b7c3 feat(group_theory): add a little bit of group theory; prove of Lagrange's theorem ESTIMATED CHANGES Modified data/equiv.lean + def equiv.subtype_subtype_equiv_subtype Modified data/finset.lean + theorem finset.card_attach + theorem finset.card_eq_of_bijective + theorem finset.card_le_card_of_inj_on + theorem finset.card_le_of_inj_on Modified data/fintype.lean + def fintype.fintype_prod_left + def fintype.fintype_prod_right Modified data/int/basic.lean Modified data/multiset.lean + theorem multiset.card_attach Modified data/set/finite.lean + theorem set.infinite_univ_nat + theorem set.not_injective_int_fintype + theorem set.not_injective_nat_fintype Added group_theory/subgroup.lean + def cosets + theorem exists_gpow_eq_one + theorem exists_pow_eq_one + theorem finset.mem_range_iff_mem_finset_range_of_mod_eq + theorem gpow_eq_mod_order_of + theorem is_subgroup.Union_cosets_eq_univ + theorem is_subgroup.cosets_disjoint + theorem is_subgroup.cosets_equiv_subgroup + theorem is_subgroup.group_equiv_cosets_times_subgroup + theorem is_subgroup.injective_mul + theorem is_subgroup.inv_mem + theorem is_subgroup.inv_mem_iff + theorem is_subgroup.mul_image + theorem is_subgroup.mul_mem + theorem is_subgroup.pairwise_cosets_disjoint + theorem is_subgroup.subgroup_mem_cosets + structure is_subgroup + theorem is_subgroup_range_gpow + theorem mem_range_gpow_iff_mem_range_order_of + theorem order_eq_card_range_gpow + def order_of + theorem order_of_dvd_card_univ + theorem order_of_le_card_univ + theorem order_of_ne_zero + theorem pow_eq_mod_order_of + theorem pow_injective_of_lt_order_of + theorem pow_order_of_eq_one Modified set_theory/cardinal.lean 2018-03-10 12:39:38+01:00 d010717 chore(linear_algebra): flatten hierarchy, move algebra/linear_algebra to linear_algebra ESTIMATED CHANGES Deleted algebra/linear_algebra/default.lean Renamed algebra/linear_algebra/basic.lean to linear_algebra/basic.lean Added linear_algebra/default.lean Renamed algebra/linear_algebra/dimension.lean to linear_algebra/dimension.lean Renamed algebra/linear_algebra/linear_map_module.lean to linear_algebra/linear_map_module.lean Renamed algebra/linear_algebra/multivariate_polynomial.lean to linear_algebra/multivariate_polynomial.lean Renamed algebra/linear_algebra/prod_module.lean to linear_algebra/prod_module.lean Renamed algebra/linear_algebra/quotient_module.lean to linear_algebra/quotient_module.lean Renamed algebra/linear_algebra/subtype_module.lean to linear_algebra/subtype_module.lean 2018-03-09 15:55:09+01:00 d78c8ea chore(ring_theory): cleaned up ideals ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean Modified data/set/basic.lean + theorem set.exists_of_ssubset Modified logic/basic.lean + theorem classical.or_iff_not_imp_left + theorem classical.or_iff_not_imp_right Modified order/filter.lean Modified order/zorn.lean Modified ring_theory/ideals.lean +/- theorem is_maximal_ideal.mk +/- def local_of_nonunits_ideal +/- theorem not_unit_of_mem_maximal_ideal Modified ring_theory/localization.lean 2018-03-09 14:39:42+01:00 06c54b3 chore(ring_theory): introduce r_of_eq for localization ESTIMATED CHANGES Modified ring_theory/localization.lean +/- def localization.of_comm_ring + theorem localization.r_of_eq +/- theorem localization.refl 2018-03-09 14:39:42+01:00 e658d36 chore(ring_theory): fix indentation ESTIMATED CHANGES Modified ring_theory/localization.lean 2018-03-08 16:21:02+01:00 a6960f5 chore(ring_theory): add copyright headers ESTIMATED CHANGES Modified ring_theory/ideals.lean Modified ring_theory/localization.lean 2018-03-08 13:57:16+01:00 fe0f2a3 fix(analysis/topology/topological_structures): remove unnecessary hypothesis ESTIMATED CHANGES Modified analysis/topology/topological_structures.lean +/- theorem tendsto_of_tendsto_of_tendsto_of_le_of_le 2018-03-08 11:45:04+01:00 a7d8c5f feat(tactic): add `wlog` (without loss of generality), `tauto`, `auto` and `xassumption` * `tauto`: for simple tautologies; * `auto`: discharging the goals that follow directly from a few assumption applications; * `xassumption`: similar to `assumption` but matches against the head of assumptions instead of the whole thing ESTIMATED CHANGES Modified meta/expr.lean Modified tactic/basic.lean Modified tactic/interactive.lean Added tests/wlog.lean 2018-03-08 11:25:28+01:00 c852939 feat(ring_theory): move localization ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/group_power.lean + def powers Deleted algebra/localization.lean - def loc.add - def loc.add_aux - def loc.loc - def loc.mul - def loc.mul_aux - def loc.neg - def loc.neg_aux Modified algebra/module.lean + theorem is_submodule.eq_univ_of_contains_unit + theorem is_submodule.univ_of_one_mem Modified algebra/ring.lean + theorem is_ring_hom.map_neg + theorem is_ring_hom.map_sub + theorem is_ring_hom.map_zero + def nonunits Modified data/quot.lean + theorem quotient.lift_beta + theorem quotient.lift_on_beta Added ring_theory/ideals.lean + theorem is_maximal_ideal.mk + def local_of_nonunits_ideal + theorem mem_or_mem_of_mul_eq_zero + theorem not_unit_of_mem_maximal_ideal Added ring_theory/localization.lean + def localization.at_prime + def localization.away + def localization.closure + theorem localization.eq_zero_of_ne_zero_of_mul_eq_zero + inductive localization.in_closure + def localization.loc + theorem localization.mem_non_zero_divisors_of_ne_zero + theorem localization.ne_zero_of_mem_non_zero_divisors + def localization.non_zero_divisors + def localization.of_comm_ring + def localization.quotient_ring.field.of_integral_domain + def localization.quotient_ring + def localization.r + theorem localization.refl + theorem localization.subset_closure + theorem localization.symm + theorem localization.trans 2018-03-08 10:42:28+01:00 0b81b24 feat(analysis/topological_structures): add tendsto_of_tendsto_of_tendsto_of_le_of_le ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/topology/topological_structures.lean + theorem tendsto_of_tendsto_of_tendsto_of_le_of_le +/- theorem tendsto_orderable 2018-03-08 09:55:42+01:00 353c494 fix(docs): more converter -> conversion ESTIMATED CHANGES Modified docs/extras.md Modified docs/extras/conv.md 2018-03-08 09:51:03+01:00 fa25539 feat(docs/extras/conv): Documents conv mode (#73) ESTIMATED CHANGES Modified README.md Added docs/extras.md Added docs/extras/conv.md 2018-03-07 13:47:04+01:00 22237f4 feat(data/fintype): pi is closed under fintype & decidable_eq ESTIMATED CHANGES Modified data/fintype.lean 2018-03-07 13:47:00+01:00 e6afbf5 feat(data/finset): add Cartesian product over dependent functions ESTIMATED CHANGES Modified data/finset.lean + theorem finset.mem_pi + def finset.pi 2018-03-07 13:46:54+01:00 10cf239 feat(data/multiset): add Cartesian product over dependent functions ESTIMATED CHANGES Modified data/multiset.lean +/- theorem multiset.bind_bind +/- theorem multiset.bind_hcongr + theorem multiset.card_pi +/- theorem multiset.map_hcongr + theorem multiset.mem_pi + def multiset.pi.cons + theorem multiset.pi.cons_ne + theorem multiset.pi.cons_same + theorem multiset.pi.cons_swap + def multiset.pi.empty + def multiset.pi + theorem multiset.pi_cons + theorem multiset.pi_zero 2018-03-07 13:46:54+01:00 be4a35f feat(data/multiset): add dependent recursor for multisets ESTIMATED CHANGES Modified data/list/basic.lean Modified data/list/perm.lean + theorem list.rec_heq_of_perm Modified data/multiset.lean + theorem multiset.rec_on_0 + theorem multiset.rec_on_cons 2018-03-07 13:46:39+01:00 eef3a4d feat(data/multiset): add map_hcongr, bind_hcongr, bind_bind, attach_zero, and attach_cons ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.attach_cons + theorem multiset.attach_zero + theorem multiset.bind_bind + theorem multiset.bind_congr + theorem multiset.bind_hcongr + theorem multiset.card_singleton + theorem multiset.count_bind + theorem multiset.map_bind + theorem multiset.map_hcongr + theorem multiset.mem_cons_of_mem + theorem multiset.prod_map_mul + theorem multiset.prod_map_prod_map 2018-03-07 13:46:39+01:00 bbd0203 feat(data/multiset): decidable equality for functions whose domain is bounded by multisets ESTIMATED CHANGES Modified data/multiset.lean 2018-03-07 13:46:32+01:00 dc8c35f feat(logic/function): add hfunext and funext_iff ESTIMATED CHANGES Modified logic/function.lean + theorem function.funext_iff + theorem function.hfunext 2018-03-06 16:12:46-05:00 33be7dc doc(docs/theories): Description of other set-like types From #75 ESTIMATED CHANGES Modified docs/theories.md Modified docs/theories/sets.md 2018-03-05 21:58:36+01:00 65cab91 doc(order/filter): add documentation for `filter_upward` ESTIMATED CHANGES Modified order/filter.lean +/- theorem filter.tendsto_vmap_iff 2018-03-05 18:18:38+01:00 5193194 feat(order/filter): reorder filter theory; add filter_upwards tactic ESTIMATED CHANGES Modified analysis/topology/topological_space.lean Modified analysis/topology/uniform_space.lean Modified order/filter.lean +/- theorem filter.Inter_mem_sets +/- theorem filter.exists_sets_subset_iff +/- theorem filter.filter.ext +/- theorem filter.filter_eq_iff +/- theorem filter.inter_mem_sets +/- theorem filter.mem_inf_sets_of_left +/- theorem filter.mem_inf_sets_of_right + theorem filter.mp_sets + theorem filter.tendsto_inf_left + theorem filter.tendsto_inf_right +/- theorem filter.univ_mem_sets' +/- theorem filter.univ_mem_sets 2018-03-05 17:55:59+01:00 0487a32 chore(*): cleanup ESTIMATED CHANGES Modified analysis/topology/topological_space.lean Modified logic/function.lean + theorem function.comp_apply + def function.update + theorem function.update_noteq + theorem function.update_same Modified order/filter.lean +/- theorem filter.binfi_sup_eq +/- theorem filter.infi_sup_eq + theorem lattice.inf_left_comm + theorem lattice.infi_empty_finset + theorem lattice.infi_insert_finset 2018-03-05 16:11:22+01:00 ec9dac3 chore(*): update to Lean d6d44a19 ESTIMATED CHANGES Modified data/encodable.lean Modified data/equiv.lean Modified data/list/basic.lean +/- theorem list.exists_of_mem_bind +/- theorem list.length_bind +/- theorem list.mem_bind +/- theorem list.mem_bind_of_mem Modified data/option.lean + theorem option.seq_some Modified data/prod.lean - theorem prod.mk.eta Modified tactic/converter/old_conv.lean 2018-02-26 19:33:33-05:00 f98626c chore(.travis.yml): add notification hook ESTIMATED CHANGES Modified .travis.yml 2018-02-25 08:41:54-05:00 8f680d0 fix(docs/tactics): update instance cache tactics doc (#70) ESTIMATED CHANGES Modified docs/tactics.md 2018-02-25 05:09:48-05:00 14e10bb fix(*): update to lean ESTIMATED CHANGES Modified analysis/topology/topological_space.lean +/- theorem topological_space_eq Modified data/list/basic.lean Modified data/nat/basic.lean Modified data/seq/computation.lean Modified data/set/countable.lean Modified data/set/finite.lean Modified order/order_iso.lean Modified set_theory/cardinal.lean Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean Modified set_theory/ordinal_notation.lean Modified tactic/basic.lean Modified tactic/finish.lean Modified tactic/interactive.lean 2018-02-25 00:08:30-05:00 c88a9e6 doc(docs/tactics): Document the find command (#67) ESTIMATED CHANGES Modified docs/tactics.md 2018-02-22 19:42:03-05:00 1630725 feat(data/finset): insert_union_distrib (#66) * chore(data/finset): match style guide * feat(data/finset): insert_union_distrib ESTIMATED CHANGES Modified data/finset.lean +/- theorem finset.insert_union + theorem finset.insert_union_distrib +/- theorem finset.union_insert 2018-02-22 15:14:26-05:00 49b196c feat(data/multiset): erase_lt ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.erase_lt 2018-02-22 14:08:57-05:00 d68c8ae feat(set_theory/cardinal): some missing power theorems ESTIMATED CHANGES Modified set_theory/cardinal.lean + theorem cardinal.nat_cast_pow + theorem cardinal.power_add + theorem cardinal.power_lt_omega + theorem cardinal.power_one - theorem cardinal.power_sum 2018-02-21 20:14:45-05:00 22a52c3 fix(tactic/find): update to lean ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/find.lean 2018-02-21 04:29:29-05:00 8ae1cef feat(tactic/find): add @Kha's #find command ESTIMATED CHANGES Added tactic/find.lean 2018-02-20 22:14:23-05:00 e2a562a refactor(analysis/topology): simplify is_topological_basis_of_open_of_nhds ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.prod_attach +/- theorem finset.prod_bij +/- theorem finset.prod_bij_ne_one Modified analysis/measure_theory/borel_space.lean Modified analysis/topology/topological_space.lean Modified data/encodable.lean Modified data/fintype.lean + def set_fintype 2018-02-20 22:12:18-05:00 ebcbb6b doc(.): MD documentation (#58) ESTIMATED CHANGES Modified README.md Added docs/naming.md Renamed style.md to docs/style.md Added docs/tactics.md Added docs/theories.md Added docs/theories/functions.md Added docs/theories/groups.md Added docs/theories/integers.md Added docs/theories/naturals.md Added docs/theories/orders.md Added docs/theories/quotients.md Added docs/theories/relations.md Added docs/theories/rings_fields.md Added docs/theories/sets.md Added docs/wip.md 2018-02-20 15:36:49+01:00 140c672 feat(algebra/order_functions): add abs_le_max_abs_abs; and relations between mul and max / min (suggested by @PatrickMassot) ESTIMATED CHANGES Modified algebra/order_functions.lean + theorem abs_le_max_abs_abs + theorem max_mul_mul_le_max_mul_max + theorem monotone_mul_of_nonneg + theorem mul_max_of_nonneg + theorem mul_min_of_nonneg 2018-02-20 15:22:36+01:00 3e683f4 chore(algebra,order): cleanup min / max using the lattice theory ESTIMATED CHANGES Modified algebra/default.lean Renamed algebra/functions.lean to algebra/order_functions.lean + theorem le_max_iff - theorem le_max_left_iff_true + theorem le_max_left_of_le - theorem le_max_right_iff_true + theorem le_max_right_of_le +/- theorem le_min_iff + theorem max_distrib_of_monotone +/- theorem max_le_iff + theorem max_le_max +/- theorem max_min_distrib_left +/- theorem max_min_distrib_right + theorem min_distrib_of_monotone + theorem min_le_iff + theorem min_le_left_of_le + theorem min_le_min + theorem min_le_right_of_le + theorem min_lt_iff +/- theorem min_max_distrib_left +/- theorem min_max_distrib_right Modified data/finset.lean Modified data/int/basic.lean Modified data/multiset.lean Modified data/set/intervals.lean Modified order/boolean_algebra.lean - theorem lattice.eq_of_sup_eq_inf_eq - theorem lattice.inf_eq_bot_iff_le_compl - theorem lattice.inf_sup_left - theorem lattice.inf_sup_right - theorem lattice.le_sup_inf - theorem lattice.sup_inf_left - theorem lattice.sup_inf_right Modified order/bounded_lattice.lean + theorem lattice.inf_eq_bot_iff_le_compl Modified order/lattice.lean + theorem lattice.eq_of_sup_eq_inf_eq + theorem lattice.inf_sup_left + theorem lattice.inf_sup_right + theorem lattice.le_sup_inf + theorem lattice.sup_inf_left + theorem lattice.sup_inf_right 2018-02-20 10:43:29+01:00 504a2dc Create choose.lean (#48) deat(data/nat): add choose function to compute the binomial coefficients ESTIMATED CHANGES Added data/nat/choose.lean + def choose + theorem choose_eq_fact_div_fact + theorem choose_eq_zero_of_lt + theorem choose_mul_fact_mul_fact + theorem choose_one_right + theorem choose_pos + theorem choose_self + theorem choose_succ_self + theorem choose_succ_succ + theorem choose_zero_right + theorem choose_zero_succ + theorem fact_mul_fact_dvd_fact + theorem succ_mul_choose_eq 2018-02-19 11:00:25+01:00 3c25d94 feat(algebra/archimedean): pow_unbounded_of_gt_one (#50) ESTIMATED CHANGES Modified algebra/archimedean.lean + theorem pow_unbounded_of_gt_one 2018-02-19 10:55:46+01:00 500dcc9 feat(analysis/metric_space): add tendsto_iff_dist_tendsto_zero ESTIMATED CHANGES Modified analysis/metric_space.lean + theorem abs_dist + theorem nhds_vmap_dist + theorem real.dist_0_eq_abs + theorem tendsto_iff_dist_tendsto_zero Modified analysis/topology/continuity.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified order/filter.lean - theorem filter.le_vmap_iff_map_le + theorem filter.map_le_iff_le_vmap - theorem filter.map_le_iff_vmap_le - theorem filter.tendsto_vmap' + theorem filter.tendsto_vmap_iff 2018-02-19 10:38:12+01:00 3ef7c7d fix(analysis/metric_space): remove unnecessary topological_space assumption from tendsto_dist ESTIMATED CHANGES Modified analysis/metric_space.lean +/- theorem tendsto_dist 2018-02-18 00:16:10-05:00 9b306b2 feat(option.to_list) ESTIMATED CHANGES Modified data/option.lean + def option.to_list 2018-02-15 11:21:33+01:00 ff4af0d feat(data/list): add append_eq_nil and update_nth_eq_nil ESTIMATED CHANGES Modified data/list/basic.lean + theorem list.append_eq_nil + theorem list.update_nth_eq_nil 2018-02-15 10:43:12+01:00 c0153c1 feat(data/multiset): add smielattie_sup_bot instance; add disjoint_union_left/_right ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.disjoint_union_left + theorem multiset.disjoint_union_right 2018-02-15 09:34:21+01:00 8741b64 feat(algebra/group_power): add pow_inv and pow_abs ESTIMATED CHANGES Modified algebra/group_power.lean + theorem pow_abs + theorem pow_inv 2018-02-14 13:33:17+01:00 eb32bfb feat(data/multiset): disjoint_ndinsert theorems ESTIMATED CHANGES Modified data/multiset.lean + theorem multiset.disjoint_ndinsert_left + theorem multiset.disjoint_ndinsert_right 2018-02-12 07:11:07-05:00 6ff5f3e feat(data/equiv): generalize list_equiv_of_equiv over universes (#52) ESTIMATED CHANGES Modified data/equiv.lean +/- def equiv.list_equiv_of_equiv 2018-02-08 22:50:08-05:00 5dd3419 feat(order/conditionally_complete_lattice): Conditionally complete lattices ESTIMATED CHANGES Modified data/real/basic.lean +/- theorem real.exists_floor +/- theorem real.mk_add +/- theorem real.mk_mul +/- theorem real.mk_neg Modified data/set/basic.lean +/- theorem set.inter_univ +/- theorem set.subset_union_left +/- theorem set.subset_union_right + theorem set.union_empty_iff +/- theorem set.union_subset_iff +/- theorem set.univ_inter Added order/conditionally_complete_lattice.lean + theorem bdd_above.mk + def bdd_above + theorem bdd_above_Int1 + theorem bdd_above_Int2 + theorem bdd_above_bot + theorem bdd_above_empty + theorem bdd_above_finite + theorem bdd_above_finite_union + theorem bdd_above_insert + theorem bdd_above_singleton + theorem bdd_above_subset + theorem bdd_above_top + theorem bdd_above_union + theorem bdd_below.mk + def bdd_below + theorem bdd_below_Int1 + theorem bdd_below_Int2 + theorem bdd_below_empty + theorem bdd_below_finite + theorem bdd_below_finite_union + theorem bdd_below_insert + theorem bdd_below_singleton + theorem bdd_below_subset + theorem bdd_below_union + theorem lattice.cInf_insert + theorem lattice.cInf_intro + theorem lattice.cInf_le + theorem lattice.cInf_le_cInf + theorem lattice.cInf_le_cSup + theorem lattice.cInf_le_of_le + theorem lattice.cInf_lt_of_lt + theorem lattice.cInf_of_in_of_le + theorem lattice.cInf_singleton + theorem lattice.cInf_union + theorem lattice.cSup_insert + theorem lattice.cSup_inter_le + theorem lattice.cSup_intro + theorem lattice.cSup_le + theorem lattice.cSup_le_cSup + theorem lattice.cSup_le_iff + theorem lattice.cSup_of_in_of_le + theorem lattice.cSup_singleton + theorem lattice.cSup_union + theorem lattice.exists_lt_of_cInf_lt + theorem lattice.exists_lt_of_lt_cSup + theorem lattice.le_cInf + theorem lattice.le_cInf_iff + theorem lattice.le_cInf_inter + theorem lattice.le_cSup + theorem lattice.le_cSup_of_le + theorem lattice.lt_cSup_of_lt Modified order/lattice.lean +/- theorem lattice.inf_le_left +/- theorem lattice.inf_le_right +/- theorem lattice.le_sup_left +/- theorem lattice.le_sup_right 2018-02-08 22:39:23-05:00 6ef721e feat(data/finset): not_mem theorems Adapted from #44 ESTIMATED CHANGES Modified data/finset.lean + theorem finset.not_mem_singleton + theorem finset.not_mem_union Modified logic/basic.lean + theorem ne_of_mem_of_not_mem 2018-02-06 17:03:30-05:00 14a19bf fix(*): update to lean Adding typeclasses to the context must now be done with `haveI`, `introsI`, etc. ESTIMATED CHANGES Modified algebra/archimedean.lean Modified algebra/big_operators.lean Modified algebra/field.lean Modified algebra/linear_algebra/linear_map_module.lean Modified algebra/linear_algebra/subtype_module.lean Modified algebra/module.lean +/- theorem one_smul Modified analysis/metric_space.lean Modified analysis/real.lean Modified analysis/topology/continuity.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean + def uniform_space.mk' Modified data/analysis/filter.lean Modified data/analysis/topology.lean Modified data/finset.lean Modified data/fintype.lean Modified data/list/basic.lean Modified data/list/perm.lean Modified data/nat/basic.lean Modified data/num/lemmas.lean Modified data/real/cau_seq.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/set/countable.lean Modified data/set/finite.lean Modified data/sum.lean Modified logic/basic.lean Modified logic/embedding.lean Modified order/basic.lean Modified order/order_iso.lean Modified set_theory/cardinal.lean Modified set_theory/cofinality.lean Modified set_theory/ordinal.lean Modified set_theory/ordinal_notation.lean Modified set_theory/zfc.lean Modified tactic/basic.lean Modified tactic/interactive.lean Modified tactic/rcases.lean 2018-02-05 01:47:42-05:00 5da3eb0 Fix universe parameter in permutation group ESTIMATED CHANGES Modified data/equiv.lean 2018-02-05 01:47:42-05:00 cb4449f Permutation group instance for any type ESTIMATED CHANGES Modified data/equiv.lean + theorem equiv.ext 2018-02-01 22:14:26-05:00 03fefd4 Create localization.lean ESTIMATED CHANGES Added algebra/localization.lean + def loc.add + def loc.add_aux + def loc.loc + def loc.mul + def loc.mul_aux + def loc.neg + def loc.neg_aux 2018-02-01 19:43:27-05:00 e0539dd fix(data/hash_map,...): update to lean ESTIMATED CHANGES Modified data/hash_map.lean Modified set_theory/cardinal.lean Modified set_theory/cofinality.lean 2018-01-26 03:15:01-05:00 edd62de fix(set_theory/zfc): update to lean ESTIMATED CHANGES Modified set_theory/zfc.lean +/- def Class.fval +/- theorem Class.mem_hom_left +/- theorem Class.mem_hom_right 2018-01-26 02:52:13-05:00 f46d32b feat(algebra/archimedean): generalize real thms to archimedean fields ESTIMATED CHANGES Added algebra/archimedean.lean + theorem archimedean_iff_nat_le + theorem archimedean_iff_nat_lt + theorem archimedean_iff_rat_le + theorem archimedean_iff_rat_lt + def ceil + theorem ceil_add_int + theorem ceil_coe + theorem ceil_le + theorem ceil_lt_add_one + theorem ceil_mono + theorem ceil_sub_int + theorem exists_floor + theorem exists_int_gt + theorem exists_int_lt + theorem exists_nat_gt + theorem exists_pos_rat_lt + theorem exists_rat_btwn + theorem exists_rat_gt + theorem exists_rat_lt + theorem exists_rat_near + def floor + theorem floor_add_int + theorem floor_coe + theorem floor_le + theorem floor_lt + theorem floor_mono + theorem floor_nonneg + theorem floor_sub_int + theorem le_ceil + theorem le_floor + theorem lt_ceil + theorem lt_floor_add_one + theorem lt_succ_floor + theorem sub_one_lt_floor Modified algebra/group_power.lean + theorem add_monoid.mul_smul_assoc + theorem add_monoid.mul_smul_right + theorem add_monoid.one_smul + theorem add_monoid.smul_eq_mul' + theorem add_monoid.smul_eq_mul + theorem add_monoid.smul_nonneg + theorem gsmul_eq_mul' + theorem gsmul_eq_mul + theorem mul_gsmul_assoc + theorem mul_gsmul_right + theorem one_le_pow_of_one_le + theorem pow_ge_one_add_mul + theorem pow_ge_one_add_sub_mul - theorem pow_ge_one_of_ge_one +/- theorem pow_nonneg +/- theorem pow_pos Modified analysis/complex.lean Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/real.lean Renamed data/complex.lean to data/complex/basic.lean + theorem complex.abs_le_abs_re_add_abs_im + theorem complex.equiv_lim + theorem complex.is_cau_seq_im + theorem complex.is_cau_seq_re + theorem complex.re_add_im Modified data/rat.lean + theorem rat.coe_int_denom + theorem rat.coe_int_num + theorem rat.coe_nat_denom + theorem rat.coe_nat_num Modified data/real/basic.lean - theorem real.ceil_add_int - theorem real.ceil_coe - theorem real.ceil_le - theorem real.ceil_lt_add_one - theorem real.ceil_mono - theorem real.ceil_sub_int - theorem real.exists_int_gt - theorem real.exists_int_lt - theorem real.exists_nat_gt - theorem real.exists_pos_rat_lt - theorem real.exists_rat_btwn - theorem real.exists_rat_gt - theorem real.exists_rat_lt - theorem real.exists_rat_near' - theorem real.exists_rat_near - theorem real.floor_add_int - theorem real.floor_coe - theorem real.floor_le - theorem real.floor_lt - theorem real.floor_mono - theorem real.floor_nonneg - theorem real.floor_sub_int - theorem real.le_ceil - theorem real.le_floor +/- theorem real.le_mk_of_forall_le - theorem real.lt_ceil - theorem real.lt_floor_add_one - theorem real.lt_succ_floor +/- theorem real.mk_le_of_forall_le +/- theorem real.mk_near_of_forall_near - theorem real.sub_one_lt_floor Modified data/real/cau_seq.lean + theorem cau_seq.is_cau + theorem cau_seq.mk_to_fun Modified set_theory/ordinal_notation.lean 2018-01-25 01:34:48-05:00 0e42187 fix(algebra/module): fix module typeclass resolution Before this change, any looping typeclass instance on `ring` (like `ring A -> ring (f A)`) would cause unrelated typeclass problems such as `has_add B` to search for `module ?M B` and then `ring ?M`, leading to an infinite number of applications of the looping ring instance. leanprover/lean#1881 promises to fix this, but until then here is a workaround. ESTIMATED CHANGES Modified algebra/linear_algebra/linear_map_module.lean Modified algebra/linear_algebra/prod_module.lean Modified algebra/linear_algebra/quotient_module.lean Modified algebra/linear_algebra/subtype_module.lean Modified algebra/module.lean 2018-01-24 14:25:32-05:00 7fba1af fix(analysis/metric_space): remove superfluous typeclass assumptions ESTIMATED CHANGES Modified analysis/metric_space.lean +/- theorem continuous_of_metric +/- theorem tendsto_dist +/- theorem tendsto_nhds_of_metric +/- theorem uniform_continuous_of_metric +/- theorem uniform_embedding_of_metric 2018-01-23 03:30:58-05:00 acb9093 feat(analysis/complex): complex numbers are a top ring ESTIMATED CHANGES Modified analysis/complex.lean + theorem complex.continuous_abs + theorem complex.continuous_inv' + theorem complex.continuous_inv + theorem complex.continuous_mul +/- theorem complex.dist_eq + theorem complex.tendsto_inv + theorem complex.uniform_continuous_abs + theorem complex.uniform_continuous_add + theorem complex.uniform_continuous_inv + theorem complex.uniform_continuous_mul + theorem complex.uniform_continuous_mul_const + theorem complex.uniform_continuous_neg Modified data/complex.lean + theorem complex.abs_abs_sub_le_abs_sub Modified data/real/cau_seq.lean + theorem is_absolute_value.abs_abv_sub_le_abv_sub + theorem is_absolute_value.sub_abv_le_abv_sub 2018-01-23 03:07:52-05:00 65c5cb9 refactor(data/real): generalize cau_seq to arbitrary metrics the intent is to use this also for the complex numbers ESTIMATED CHANGES Modified analysis/metric_space.lean Modified analysis/real.lean Modified data/complex.lean + theorem complex.abs_div + theorem complex.abs_inv +/- theorem complex.abs_neg +/- theorem complex.abs_pos +/- theorem complex.abs_sub +/- theorem complex.abs_sub_le Renamed data/real.lean to data/real/basic.lean - theorem cau_seq.abs_pos_of_not_lim_zero - theorem cau_seq.add_apply - theorem cau_seq.add_lim_zero - theorem cau_seq.add_pos - theorem cau_seq.bounded' - theorem cau_seq.bounded - theorem cau_seq.cauchy - theorem cau_seq.cauchy₂ - theorem cau_seq.cauchy₃ - def cau_seq.const - theorem cau_seq.const_add - theorem cau_seq.const_apply - theorem cau_seq.const_equiv - theorem cau_seq.const_inj - theorem cau_seq.const_le - theorem cau_seq.const_lim_zero - theorem cau_seq.const_lt - theorem cau_seq.const_mul - theorem cau_seq.const_neg - theorem cau_seq.const_pos - theorem cau_seq.const_sub - theorem cau_seq.equiv_def₃ - theorem cau_seq.exists_gt - theorem cau_seq.exists_lt - theorem cau_seq.ext - def cau_seq.inv - theorem cau_seq.inv_apply - theorem cau_seq.inv_aux - theorem cau_seq.inv_mul_cancel - theorem cau_seq.le_antisymm - theorem cau_seq.le_total - def cau_seq.lim_zero - theorem cau_seq.lim_zero_congr - theorem cau_seq.lt_irrefl - theorem cau_seq.lt_of_eq_of_lt - theorem cau_seq.lt_of_lt_of_eq - theorem cau_seq.lt_total - theorem cau_seq.lt_trans - theorem cau_seq.mul_apply - theorem cau_seq.mul_lim_zero - theorem cau_seq.mul_pos - theorem cau_seq.neg_apply - theorem cau_seq.neg_lim_zero - theorem cau_seq.not_lim_zero_of_pos - def cau_seq.of_eq - theorem cau_seq.of_near - theorem cau_seq.one_apply - def cau_seq.pos - theorem cau_seq.pos_add_lim_zero - theorem cau_seq.sub_apply - theorem cau_seq.sub_lim_zero - theorem cau_seq.trichotomy - theorem cau_seq.zero_apply - theorem cau_seq.zero_lim_zero - def cau_seq - theorem exists_forall_ge_and - theorem is_cau_seq.cauchy₂ - theorem is_cau_seq.cauchy₃ - def is_cau_seq - theorem rat_add_continuous_lemma - theorem rat_inv_continuous_lemma - theorem rat_mul_continuous_lemma +/- theorem real.cau_seq_converges +/- theorem real.equiv_lim - def real.irrational +/- theorem real.is_cau_seq_iff_lift +/- theorem real.le_mk_of_forall_le +/- def real.mk +/- theorem real.mk_add +/- theorem real.mk_le +/- theorem real.mk_le_of_forall_le +/- theorem real.mk_lt +/- theorem real.mk_mul +/- theorem real.mk_near_of_forall_near +/- theorem real.mk_neg +/- theorem real.mk_pos +/- def real.of_rat +/- def real.sqrt_aux +/- theorem real.sqrt_aux_nonneg - theorem real.sqrt_two_irrational +/- def real Added data/real/cau_seq.lean + theorem cau_seq.abv_pos_of_not_lim_zero + theorem cau_seq.add_apply + theorem cau_seq.add_lim_zero + theorem cau_seq.add_pos + theorem cau_seq.bounded' + theorem cau_seq.bounded + theorem cau_seq.cauchy + theorem cau_seq.cauchy₂ + theorem cau_seq.cauchy₃ + def cau_seq.const + theorem cau_seq.const_add + theorem cau_seq.const_apply + theorem cau_seq.const_equiv + theorem cau_seq.const_inj + theorem cau_seq.const_le + theorem cau_seq.const_lim_zero + theorem cau_seq.const_lt + theorem cau_seq.const_mul + theorem cau_seq.const_neg + theorem cau_seq.const_pos + theorem cau_seq.const_sub + theorem cau_seq.equiv_def₃ + theorem cau_seq.exists_gt + theorem cau_seq.exists_lt + theorem cau_seq.ext + def cau_seq.inv + theorem cau_seq.inv_apply + theorem cau_seq.inv_aux + theorem cau_seq.inv_mul_cancel + theorem cau_seq.le_antisymm + theorem cau_seq.le_total + def cau_seq.lim_zero + theorem cau_seq.lim_zero_congr + theorem cau_seq.lt_irrefl + theorem cau_seq.lt_of_eq_of_lt + theorem cau_seq.lt_of_lt_of_eq + theorem cau_seq.lt_total + theorem cau_seq.lt_trans + theorem cau_seq.mul_apply + theorem cau_seq.mul_lim_zero + theorem cau_seq.mul_pos + theorem cau_seq.neg_apply + theorem cau_seq.neg_lim_zero + theorem cau_seq.not_lim_zero_of_pos + def cau_seq.of_eq + theorem cau_seq.of_near + theorem cau_seq.one_apply + def cau_seq.pos + theorem cau_seq.pos_add_lim_zero + theorem cau_seq.sub_apply + theorem cau_seq.sub_lim_zero + theorem cau_seq.trichotomy + theorem cau_seq.zero_apply + theorem cau_seq.zero_lim_zero + def cau_seq + theorem exists_forall_ge_and + theorem is_absolute_value.abv_div + theorem is_absolute_value.abv_inv + theorem is_absolute_value.abv_neg + theorem is_absolute_value.abv_one' + theorem is_absolute_value.abv_one + theorem is_absolute_value.abv_pos + theorem is_absolute_value.abv_sub + theorem is_absolute_value.abv_sub_le + theorem is_absolute_value.abv_zero + theorem is_cau_seq.cauchy₂ + theorem is_cau_seq.cauchy₃ + def is_cau_seq + theorem rat_add_continuous_lemma + theorem rat_inv_continuous_lemma + theorem rat_mul_continuous_lemma Added data/real/irrational.lean + def irrational + theorem sqrt_two_irrational 2018-01-23 00:14:20-05:00 5fe8fbf feat(data/complex): properties of the complex absolute value function ESTIMATED CHANGES Modified algebra/field.lean Added analysis/complex.lean + theorem complex.dist_eq Modified data/complex.lean + theorem complex.abs_I + theorem complex.abs_abs + theorem complex.abs_add + theorem complex.abs_conj + theorem complex.abs_eq_zero + theorem complex.abs_im_le_abs + theorem complex.abs_mul + theorem complex.abs_neg + theorem complex.abs_nonneg + theorem complex.abs_of_nonneg + theorem complex.abs_of_real + theorem complex.abs_one + theorem complex.abs_pos + theorem complex.abs_re_le_abs + theorem complex.abs_sub + theorem complex.abs_sub_le + theorem complex.abs_zero + theorem complex.conj_I + theorem complex.conj_add + theorem complex.conj_bijective + theorem complex.conj_conj + theorem complex.conj_div + theorem complex.conj_eq_zero + theorem complex.conj_inj + theorem complex.conj_inv + theorem complex.conj_mul + theorem complex.conj_neg + theorem complex.conj_one + theorem complex.conj_zero + theorem complex.im_le_abs + theorem complex.im_sq_le_norm_sq + theorem complex.mul_self_abs + theorem complex.norm_sq_I + theorem complex.norm_sq_add + theorem complex.norm_sq_conj + theorem complex.norm_sq_div + theorem complex.norm_sq_inv + theorem complex.norm_sq_mul + theorem complex.norm_sq_neg +/- theorem complex.norm_sq_one + theorem complex.norm_sq_sub +/- theorem complex.norm_sq_zero + theorem complex.re_le_abs + theorem complex.re_sq_le_norm_sq Modified data/real.lean + theorem real.sqrt_mul_self_eq_abs + theorem real.sqrt_sqr_eq_abs 2018-01-21 23:57:42-05:00 5a65212 feat(data/real): real square root function, sqrt 2 is irrational ESTIMATED CHANGES Added algebra/char_zero.lean + theorem add_group.char_zero_of_inj_zero + theorem add_halves' + theorem add_self_eq_zero + theorem bit0_eq_zero + theorem char_zero_of_inj_zero + theorem half_add_self + theorem half_sub + theorem nat.cast_eq_zero + theorem nat.cast_inj + theorem nat.cast_injective + theorem nat.cast_ne_zero + theorem ordered_cancel_comm_monoid.char_zero_of_inj_zero + theorem sub_half + theorem two_ne_zero' Modified algebra/field.lean + theorem div_eq_iff_mul_eq Modified algebra/group_power.lean + theorem pow_two + theorem smul_two Modified algebra/ordered_field.lean + theorem div_nonneg' + theorem inv_lt_zero + theorem inv_neg' + theorem inv_nonneg + theorem inv_nonpos + theorem inv_pos' + theorem mul_self_inj_of_nonneg Modified algebra/ring.lean + theorem bit0_eq_two_mul Modified data/complex.lean + theorem complex.add_conj + theorem complex.eq_conj_iff_real + theorem complex.of_real_bit0 + theorem complex.of_real_bit1 + theorem complex.of_real_div + theorem complex.re_eq_add_conj + theorem complex.sub_conj Modified data/int/basic.lean Modified data/nat/cast.lean - theorem add_group.char_zero_of_inj_zero - theorem char_zero_of_inj_zero - theorem nat.cast_eq_zero - theorem nat.cast_inj - theorem nat.cast_injective - theorem nat.cast_ne_zero - theorem ordered_cancel_comm_monoid.char_zero_of_inj_zero Modified data/nat/prime.lean - theorem nat.dvd_of_prime_of_dvd_pow + theorem nat.prime.dvd_of_dvd_pow Modified data/real.lean +/- theorem cau_seq.cauchy₂ +/- theorem cau_seq.cauchy₃ - def cau_seq.mk_of_near - theorem cau_seq.mk_of_near_equiv - theorem cau_seq.mk_of_near_fun + theorem cau_seq.of_near +/- def cau_seq + theorem is_cau_seq.cauchy₂ + theorem is_cau_seq.cauchy₃ + def is_cau_seq + def real.irrational + theorem real.is_cau_seq_iff_lift + theorem real.mk_near_of_forall_near + theorem real.mul_self_sqrt + theorem real.of_near + theorem real.sqr_sqrt + def real.sqrt_aux + theorem real.sqrt_aux_nonneg + theorem real.sqrt_div + theorem real.sqrt_eq_iff_mul_self_eq + theorem real.sqrt_eq_iff_sqr_eq + theorem real.sqrt_eq_zero' + theorem real.sqrt_eq_zero + theorem real.sqrt_eq_zero_of_nonpos + theorem real.sqrt_exists + theorem real.sqrt_inj + theorem real.sqrt_inv + theorem real.sqrt_le + theorem real.sqrt_lt + theorem real.sqrt_mul' + theorem real.sqrt_mul + theorem real.sqrt_mul_self + theorem real.sqrt_nonneg + theorem real.sqrt_one + theorem real.sqrt_pos + theorem real.sqrt_prop + theorem real.sqrt_sqr + theorem real.sqrt_two_irrational + theorem real.sqrt_zero 2018-01-20 21:28:43-05:00 ffafdc6 feat(tactic/ring): extend ring tactic to allow division by constants ESTIMATED CHANGES Modified tactic/ring.lean 2018-01-20 17:03:57-05:00 bcbf0d5 refactor(data/complex): clean up proofs ESTIMATED CHANGES Modified data/complex.lean +/- def complex.I +/- theorem complex.I_im +/- theorem complex.I_re +/- theorem complex.add_im +/- theorem complex.add_re - theorem complex.coe_im - theorem complex.coe_re + def complex.conj +/- theorem complex.conj_im + theorem complex.conj_of_real +/- theorem complex.conj_re - def complex.conjugate - theorem complex.eq_iff_re_eq_and_im_eq - theorem complex.eq_of_re_eq_and_im_eq +/- theorem complex.eta + theorem complex.ext + theorem complex.ext_iff - theorem complex.im_eq_zero_of_complex_nat + theorem complex.inv_def + theorem complex.inv_im + theorem complex.inv_re + theorem complex.inv_zero + theorem complex.mk_eq_add_mul_I + theorem complex.mul_conj +/- theorem complex.mul_im + theorem complex.mul_inv_cancel +/- theorem complex.mul_re +/- theorem complex.neg_im +/- theorem complex.neg_re + def complex.norm_sq + theorem complex.norm_sq_eq_zero + theorem complex.norm_sq_nonneg + theorem complex.norm_sq_of_real + theorem complex.norm_sq_one + theorem complex.norm_sq_pos + theorem complex.norm_sq_zero - def complex.norm_squared - theorem complex.norm_squared_pos_of_nonzero +/- def complex.of_real - theorem complex.of_real_abs_squared +/- theorem complex.of_real_add +/- theorem complex.of_real_eq_coe + theorem complex.of_real_eq_zero + theorem complex.of_real_im + theorem complex.of_real_inj - theorem complex.of_real_injective + theorem complex.of_real_int_cast - theorem complex.of_real_int_eq_complex_int +/- theorem complex.of_real_inv +/- theorem complex.of_real_mul + theorem complex.of_real_nat_cast - theorem complex.of_real_nat_eq_complex_nat + theorem complex.of_real_ne_zero +/- theorem complex.of_real_neg +/- theorem complex.of_real_one + theorem complex.of_real_rat_cast + theorem complex.of_real_re +/- theorem complex.of_real_sub +/- theorem complex.of_real_zero +/- theorem complex.one_im +/- theorem complex.one_re - theorem complex.proj_im - theorem complex.proj_re +/- theorem complex.sub_im +/- theorem complex.sub_re +/- theorem complex.zero_im +/- theorem complex.zero_re Modified data/real.lean Modified tactic/interactive.lean Modified tactic/ring.lean 2018-01-19 17:05:43-05:00 baa4b09 feat(analysis/real): swap out the definition of real, shorten proofs ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/metric_space.lean Modified analysis/real.lean - theorem abs_real_eq_abs - theorem closure_of_rat_image_le_eq - theorem closure_of_rat_image_le_le_eq + theorem closure_of_rat_image_lt - theorem coe_rat_eq_of_rat +/- theorem compact_ivl - theorem continuous_abs_rat - theorem continuous_abs_real - theorem continuous_inv_real' - theorem continuous_inv_real - theorem continuous_mul_real' - theorem continuous_mul_real + theorem continuous_of_rat +/- theorem dense_embedding_of_rat - theorem dense_embedding_of_rat_of_rat + theorem embedding_of_rat - theorem exists_gt_of_rat - theorem exists_lt_nat - theorem exists_lt_of_rat - theorem exists_lt_rat - theorem exists_pos_of_rat - theorem exists_rat_btwn - theorem exists_rat_lt - def lift_rat_fun - theorem lift_rat_fun_of_rat - def lift_rat_op - theorem lift_rat_op_of_rat_of_rat - theorem map_neg_rat - theorem map_neg_real - theorem max_of_rat - theorem mem_nonneg_of_continuous2 - theorem mem_uniformity_rat - theorem mem_uniformity_real_iff - theorem mem_zero_nhd - theorem mem_zero_nhd_iff - theorem mem_zero_nhd_le - theorem min_of_rat - theorem nhds_0_eq_zero_nhd - theorem nhds_eq_map_zero_nhd - theorem nhds_eq_real - def nonneg - theorem nonneg_antisymm - def of_rat - theorem of_rat_abs - theorem of_rat_add - theorem of_rat_inj - theorem of_rat_injective - theorem of_rat_inv - theorem of_rat_le - theorem of_rat_lt - theorem of_rat_mem_nonneg - theorem of_rat_mem_nonneg_iff - theorem of_rat_mul - theorem of_rat_neg - theorem of_rat_one - theorem of_rat_sub - theorem of_rat_zero - theorem preimage_neg_rat - theorem pure_zero_le_zero_nhd + theorem rat.continuous_abs + theorem rat.continuous_mul + theorem rat.dist_eq + theorem rat.totally_bounded_Icc + theorem rat.uniform_continuous_abs + theorem rat.uniform_continuous_add + theorem rat.uniform_continuous_neg + theorem real.Cauchy_eq + theorem real.Ioo_eq_ball + theorem real.ball_eq_Ioo + theorem real.continuous_abs + theorem real.continuous_inv' + theorem real.continuous_inv + theorem real.continuous_mul - theorem real.le_def - theorem real.neg_preimage_closure + theorem real.tendsto_inv + theorem real.totally_bounded_Icc + theorem real.totally_bounded_Ico + theorem real.totally_bounded_Ioo + theorem real.totally_bounded_ball + theorem real.uniform_continuous_abs + theorem real.uniform_continuous_add + theorem real.uniform_continuous_inv + theorem real.uniform_continuous_mul + theorem real.uniform_continuous_mul_const + theorem real.uniform_continuous_neg - def real - theorem tendsto_add_rat_zero' - theorem tendsto_add_rat_zero - theorem tendsto_inv_pos_rat - theorem tendsto_inv_rat - theorem tendsto_inv_real - theorem tendsto_mul_bnd_rat' - theorem tendsto_mul_bnd_rat - theorem tendsto_mul_rat' - theorem tendsto_neg_rat_zero - theorem tendsto_sub_rat' - theorem tendsto_sub_uniformity_zero_nhd' - theorem tendsto_sub_uniformity_zero_nhd - theorem tendsto_zero_nhds - theorem totally_bounded_01_rat - theorem two_eq_of_rat_two - theorem uniform_continuous_abs_rat - theorem uniform_continuous_abs_real - theorem uniform_continuous_add_rat - theorem uniform_continuous_add_real - theorem uniform_continuous_inv_pos_rat - theorem uniform_continuous_mul_rat - theorem uniform_continuous_neg_rat - theorem uniform_continuous_neg_real + theorem uniform_continuous_of_rat - theorem uniform_continuous_rat' - theorem uniform_continuous_rat - theorem uniform_embedding_add_rat - theorem uniform_embedding_mul_rat +/- theorem uniform_embedding_of_rat - theorem uniformity_rat - theorem zero_le_iff_nonneg - def zero_nhd Modified analysis/topology/topological_structures.lean +/- theorem is_closed_ge' +/- theorem is_closed_le' Renamed analysis/complex.lean to data/complex.lean 2018-01-19 16:18:40-05:00 bb1a9f2 feat(data/real,*): supporting material for metric spaces ESTIMATED CHANGES Modified algebra/functions.lean + theorem abs_abs_sub_le_abs_sub + theorem abs_sub_le_iff + theorem abs_sub_lt_iff + def sub_abs_le_abs_sub Modified algebra/group.lean + theorem sub_right_comm + def sub_sub_cancel - theorem sub_sub_swap Modified algebra/module.lean Modified algebra/ordered_field.lean + theorem div_le_iff' + theorem div_lt_iff' + theorem le_div_iff' + theorem lt_div_iff' Modified algebra/ordered_group.lean + theorem add_neg_le_iff_le_add' + theorem add_neg_le_iff_le_add + theorem le_sub_iff_add_le' + theorem le_sub_iff_add_le - theorem le_sub_left_iff_add_le - theorem le_sub_right_iff_add_le + theorem lt_sub_iff_add_lt' + theorem lt_sub_iff_add_lt - theorem lt_sub_left_iff_add_lt - theorem lt_sub_right_iff_add_lt + theorem neg_add_le_iff_le_add' - theorem neg_add_le_iff_le_add_right + theorem neg_le_sub_iff_le_add' - theorem neg_le_sub_iff_le_add_left + theorem neg_lt_sub_iff_lt_add' - theorem neg_lt_sub_iff_lt_add_left + theorem sub_le_iff_le_add' + theorem sub_le_iff_le_add - theorem sub_left_le_iff_le_add - theorem sub_left_lt_iff_lt_add + theorem sub_lt_iff_lt_add' + theorem sub_lt_iff_lt_add - theorem sub_right_le_iff_le_add - theorem sub_right_lt_iff_lt_add Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/metric_space.lean + theorem abs_dist_sub_le + def ball + theorem ball_disjoint + theorem ball_disjoint_same + theorem ball_eq_empty_iff_nonpos + theorem ball_half_subset + theorem ball_mem_nhds + theorem ball_subset + theorem ball_subset_ball + theorem cauchy_of_metric + theorem continuous_of_metric + theorem dist_eq_zero - theorem dist_eq_zero_iff + theorem dist_le_zero - theorem dist_le_zero_iff + theorem dist_mem_uniformity + theorem dist_pos - theorem dist_pos_of_ne + theorem dist_triangle_left + theorem dist_triangle_right + theorem exists_ball_subset_ball + theorem is_closed_ball - theorem is_closed_closed_ball + theorem is_open_ball +/- theorem is_open_metric - theorem is_open_open_ball + theorem mem_ball' + theorem mem_ball + theorem mem_ball_comm + theorem mem_ball_self + theorem mem_closed_ball + theorem mem_nhds_iff_metric - theorem mem_nhds_sets_iff_metric - theorem mem_open_ball + def metric_space.induced + theorem metric_space.induced_uniform_embedding + def metric_space.replace_uniformity - theorem ne_of_dist_pos +/- theorem nhds_eq_metric - def open_ball - theorem open_ball_eq_empty_of_nonpos - theorem open_ball_subset_open_ball_of_le + theorem pos_of_mem_ball - theorem pos_of_mem_open_ball + theorem real.dist_eq + theorem subtype.dist_eq + theorem swap_dist + theorem tendsto_nhds_of_metric + theorem totally_bounded_of_metric + theorem uniform_continuous_of_metric + theorem uniform_embedding_of_metric + theorem uniformity_dist_of_mem_uniformity + theorem zero_eq_dist - theorem zero_eq_dist_iff Modified analysis/real.lean - theorem neg_preimage_closure - theorem preimage_neg_real + theorem real.neg_preimage_closure - theorem tendsto_of_uniform_continuous_subtype Modified analysis/topology/continuity.lean + theorem continuous.comp + theorem continuous.prod_mk + theorem continuous.tendsto - theorem continuous_compose - theorem continuous_eq_le_coinduced + theorem continuous_iff_le_coinduced - theorem continuous_iff_of_embedding +/- theorem continuous_inf_rng_left +/- theorem continuous_inf_rng_right + theorem continuous_le_dom + theorem continuous_le_rng - theorem continuous_prod_mk +/- theorem continuous_sup_dom_left +/- theorem continuous_sup_dom_right - theorem dense_embedding.closure_image_univ + theorem dense_embedding.closure_range +/- theorem dense_embedding.inj_iff + theorem dense_embedding.mk' + theorem embedding.continuous_iff + theorem embedding.tendsto_nhds_iff +/- theorem is_open_prod - theorem tendsto_nhds_iff_of_embedding Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean + theorem mem_closure_iff + theorem mem_closure_iff_nhds Modified analysis/topology/topological_structures.lean + theorem filter.map_neg + theorem induced_orderable_topology' + theorem induced_orderable_topology + theorem neg_preimage_closure + theorem preimage_neg + theorem uniform_add_group.mk' Modified analysis/topology/uniform_space.lean + theorem Cauchy.mem_uniformity' + theorem Cauchy.mem_uniformity +/- theorem Cauchy.pure_cauchy_dense - theorem continuous_of_uniform - theorem dense_embedding_of_uniform_embedding + theorem id_rel_subset + theorem le_nhds_lim_of_cauchy + theorem mem_comp_rel + theorem mem_id_rel +/- theorem mem_nhds_left +/- theorem mem_nhds_right + def separated + theorem separated_def' + theorem separated_def + theorem tendsto_of_uniform_continuous_subtype + theorem totally_bounded_iff_subset + theorem totally_bounded_preimage + theorem uniform_continuous.comp + theorem uniform_continuous.continuous + theorem uniform_continuous.prod_mk + def uniform_continuous - theorem uniform_continuous_compose + theorem uniform_continuous_def - theorem uniform_continuous_of_embedding - theorem uniform_continuous_prod_mk + theorem uniform_embedding.dense_embedding + theorem uniform_embedding.prod + theorem uniform_embedding.uniform_continuous + theorem uniform_embedding.uniform_continuous_iff + def uniform_embedding + theorem uniform_embedding_def' + theorem uniform_embedding_def - theorem uniform_embedding_prod + def uniform_space.core.mk' Modified data/analysis/filter.lean Modified data/equiv.lean Modified data/fp/basic.lean Modified data/hash_map.lean Modified data/int/basic.lean + theorem int.cast_injective Modified data/list/basic.lean Modified data/list/perm.lean Modified data/nat/cast.lean + theorem nat.cast_injective Modified data/rat.lean + theorem rat.cast_injective Modified data/real.lean - theorem NEW.real.Inf_le - theorem NEW.real.Sup_le - theorem NEW.real.Sup_le_ub - theorem NEW.real.add_lt_add_iff_left - theorem NEW.real.ceil_add_int - theorem NEW.real.ceil_coe - theorem NEW.real.ceil_le - theorem NEW.real.ceil_lt_add_one - theorem NEW.real.ceil_mono - theorem NEW.real.ceil_sub_int - theorem NEW.real.exists_floor - theorem NEW.real.exists_int_gt - theorem NEW.real.exists_int_lt - theorem NEW.real.exists_nat_gt - theorem NEW.real.exists_pos_rat_lt - theorem NEW.real.exists_rat_btwn - theorem NEW.real.exists_rat_gt - theorem NEW.real.exists_rat_lt - theorem NEW.real.exists_rat_near' - theorem NEW.real.exists_rat_near - theorem NEW.real.exists_sup - theorem NEW.real.floor_add_int - theorem NEW.real.floor_coe - theorem NEW.real.floor_le - theorem NEW.real.floor_lt - theorem NEW.real.floor_mono - theorem NEW.real.floor_sub_int - theorem NEW.real.inv_mk - theorem NEW.real.inv_zero - theorem NEW.real.lb_le_Inf - theorem NEW.real.le_Inf - theorem NEW.real.le_Sup - theorem NEW.real.le_ceil - theorem NEW.real.le_floor - theorem NEW.real.le_mk_of_forall_le - theorem NEW.real.lt_ceil - theorem NEW.real.lt_floor_add_one - theorem NEW.real.lt_succ_floor - def NEW.real.mk - theorem NEW.real.mk_add - theorem NEW.real.mk_eq - theorem NEW.real.mk_eq_mk - theorem NEW.real.mk_eq_zero - theorem NEW.real.mk_le - theorem NEW.real.mk_le_of_forall_le - theorem NEW.real.mk_lt - theorem NEW.real.mk_mul - theorem NEW.real.mk_neg - theorem NEW.real.mk_pos - def NEW.real.of_rat - theorem NEW.real.of_rat_add - theorem NEW.real.of_rat_eq_cast - theorem NEW.real.of_rat_lt - theorem NEW.real.of_rat_mul - theorem NEW.real.of_rat_neg - theorem NEW.real.of_rat_one - theorem NEW.real.of_rat_sub - theorem NEW.real.of_rat_zero - theorem NEW.real.sub_one_lt_floor - def NEW.real + theorem cau_seq.abs_pos_of_not_lim_zero + theorem cau_seq.add_apply + theorem cau_seq.add_lim_zero + theorem cau_seq.add_pos + theorem cau_seq.bounded' + theorem cau_seq.bounded + theorem cau_seq.cauchy + theorem cau_seq.cauchy₂ + theorem cau_seq.cauchy₃ + def cau_seq.const + theorem cau_seq.const_add + theorem cau_seq.const_apply + theorem cau_seq.const_equiv + theorem cau_seq.const_inj + theorem cau_seq.const_le + theorem cau_seq.const_lim_zero + theorem cau_seq.const_lt + theorem cau_seq.const_mul + theorem cau_seq.const_neg + theorem cau_seq.const_pos + theorem cau_seq.const_sub + theorem cau_seq.equiv_def₃ + theorem cau_seq.exists_gt + theorem cau_seq.exists_lt + theorem cau_seq.ext + def cau_seq.inv + theorem cau_seq.inv_apply + theorem cau_seq.inv_aux + theorem cau_seq.inv_mul_cancel + theorem cau_seq.le_antisymm + theorem cau_seq.le_total + def cau_seq.lim_zero + theorem cau_seq.lim_zero_congr + theorem cau_seq.lt_irrefl + theorem cau_seq.lt_of_eq_of_lt + theorem cau_seq.lt_of_lt_of_eq + theorem cau_seq.lt_total + theorem cau_seq.lt_trans + def cau_seq.mk_of_near + theorem cau_seq.mk_of_near_equiv + theorem cau_seq.mk_of_near_fun + theorem cau_seq.mul_apply + theorem cau_seq.mul_lim_zero + theorem cau_seq.mul_pos + theorem cau_seq.neg_apply + theorem cau_seq.neg_lim_zero + theorem cau_seq.not_lim_zero_of_pos + def cau_seq.of_eq + theorem cau_seq.one_apply + def cau_seq.pos + theorem cau_seq.pos_add_lim_zero + theorem cau_seq.sub_apply + theorem cau_seq.sub_lim_zero + theorem cau_seq.trichotomy + theorem cau_seq.zero_apply + theorem cau_seq.zero_lim_zero + def cau_seq - theorem rat.cau_seq.abs_pos_of_not_lim_zero - theorem rat.cau_seq.add_apply - theorem rat.cau_seq.add_lim_zero - theorem rat.cau_seq.add_pos - theorem rat.cau_seq.bounded' - theorem rat.cau_seq.bounded - theorem rat.cau_seq.cauchy - theorem rat.cau_seq.cauchy₂ - theorem rat.cau_seq.cauchy₃ - theorem rat.cau_seq.ext - def rat.cau_seq.inv - theorem rat.cau_seq.inv_apply - theorem rat.cau_seq.inv_aux - theorem rat.cau_seq.inv_mul_cancel - theorem rat.cau_seq.le_antisymm - theorem rat.cau_seq.le_total - def rat.cau_seq.lim_zero - theorem rat.cau_seq.lim_zero_congr - theorem rat.cau_seq.lt_irrefl - theorem rat.cau_seq.lt_of_eq_of_lt - theorem rat.cau_seq.lt_of_lt_of_eq - theorem rat.cau_seq.lt_trans - theorem rat.cau_seq.mul_apply - theorem rat.cau_seq.mul_lim_zero - theorem rat.cau_seq.mul_pos - theorem rat.cau_seq.neg_apply - theorem rat.cau_seq.neg_lim_zero - theorem rat.cau_seq.not_lim_zero_of_pos - def rat.cau_seq.of_eq - def rat.cau_seq.of_rat - theorem rat.cau_seq.of_rat_add - theorem rat.cau_seq.of_rat_apply - theorem rat.cau_seq.of_rat_lim_zero - theorem rat.cau_seq.of_rat_mul - theorem rat.cau_seq.of_rat_neg - theorem rat.cau_seq.of_rat_pos - theorem rat.cau_seq.of_rat_sub - theorem rat.cau_seq.one_apply - def rat.cau_seq.pos - theorem rat.cau_seq.pos_add_lim_zero - theorem rat.cau_seq.sub_apply - theorem rat.cau_seq.sub_lim_zero - theorem rat.cau_seq.trichotomy - theorem rat.cau_seq.zero_apply - theorem rat.cau_seq.zero_lim_zero - def rat.cau_seq + theorem rat_add_continuous_lemma + theorem rat_inv_continuous_lemma + theorem rat_mul_continuous_lemma + theorem real.Inf_le + theorem real.Inf_lt + theorem real.Sup_le + theorem real.Sup_le_ub + theorem real.add_lt_add_iff_left + theorem real.cau_seq_converges + theorem real.ceil_add_int + theorem real.ceil_coe + theorem real.ceil_le + theorem real.ceil_lt_add_one + theorem real.ceil_mono + theorem real.ceil_sub_int + theorem real.equiv_lim + theorem real.exists_floor + theorem real.exists_int_gt + theorem real.exists_int_lt + theorem real.exists_nat_gt + theorem real.exists_pos_rat_lt + theorem real.exists_rat_btwn + theorem real.exists_rat_gt + theorem real.exists_rat_lt + theorem real.exists_rat_near' + theorem real.exists_rat_near + theorem real.exists_sup + theorem real.floor_add_int + theorem real.floor_coe + theorem real.floor_le + theorem real.floor_lt + theorem real.floor_mono + theorem real.floor_nonneg + theorem real.floor_sub_int + theorem real.inv_mk + theorem real.inv_zero + theorem real.lb_le_Inf + theorem real.le_Inf + theorem real.le_Sup + theorem real.le_ceil + theorem real.le_floor + theorem real.le_mk_of_forall_le + theorem real.lt_Sup + theorem real.lt_ceil + theorem real.lt_floor_add_one + theorem real.lt_succ_floor + def real.mk + theorem real.mk_add + theorem real.mk_eq + theorem real.mk_eq_mk + theorem real.mk_eq_zero + theorem real.mk_le + theorem real.mk_le_of_forall_le + theorem real.mk_lt + theorem real.mk_mul + theorem real.mk_neg + theorem real.mk_pos + def real.of_rat + theorem real.of_rat_add + theorem real.of_rat_eq_cast + theorem real.of_rat_lt + theorem real.of_rat_mul + theorem real.of_rat_neg + theorem real.of_rat_one + theorem real.of_rat_sub + theorem real.of_rat_zero + theorem real.sub_one_lt_floor + def real Modified data/set/basic.lean + theorem set.image_preimage_eq_inter_range - theorem set.image_preimage_eq_inter_rng + theorem set.image_univ +/- theorem set.mem_range +/- theorem set.preimage_image_eq + theorem set.prod_range_range_eq - theorem set.quot_mk_image_univ_eq + theorem set.quot_mk_range_eq + theorem set.range_comp - theorem set.range_compose - theorem set.range_eq_image + theorem set.range_subset_iff Modified data/set/finite.lean + theorem set.finite_preimage Modified data/set/lattice.lean +/- theorem set.Inter_eq_sInter_image +/- theorem set.Union_eq_sUnion_image + theorem set.bInter_subset_bInter_left + theorem set.bUnion_subset_bUnion_left + theorem set.subtype_val_range Modified logic/basic.lean + def Exists.imp - theorem exists_of_exists - theorem forall_of_forall Modified logic/function.lean + theorem function.bijective_iff_has_inverse + theorem function.injective_iff_has_left_inverse + theorem function.left_inverse_surj_inv + theorem function.surjective_iff_has_right_inverse Modified order/filter.lean + theorem filter.filter.ext + theorem filter.filter_eq_iff + theorem filter.le_def + theorem filter.mem_Sup_sets - theorem filter.mem_at_top_iff + theorem filter.mem_at_top_sets +/- theorem filter.mem_bind_sets - theorem filter.mem_lift'_iff + theorem filter.mem_lift'_sets - theorem filter.mem_lift_iff + theorem filter.mem_lift_sets +/- theorem filter.mem_map + theorem filter.mem_principal_self +/- theorem filter.mem_principal_sets - theorem filter.mem_prod_iff + theorem filter.mem_prod_sets + theorem filter.mem_pure_sets +/- theorem filter.mem_return_sets + theorem filter.mem_supr_sets - theorem filter.mem_vmap + theorem filter.mem_vmap_sets +/- theorem filter.monotone_map +/- theorem filter.monotone_vmap + theorem filter.pure_neq_bot - theorem filter.return_neq_bot + theorem filter.tendsto.comp + theorem filter.tendsto.prod_mk - theorem filter.tendsto_compose + theorem filter.tendsto_def + theorem filter.tendsto_iff_vmap +/- theorem filter.tendsto_inf - theorem filter.tendsto_inf_left +/- theorem filter.tendsto_infi' +/- theorem filter.tendsto_infi + theorem filter.tendsto_le_left + theorem filter.tendsto_le_right +/- theorem filter.tendsto_principal +/- theorem filter.tendsto_principal_principal - theorem filter.tendsto_prod_mk Modified order/galois_connection.lean 2018-01-17 17:53:52-05:00 0ac694c fix(tactic/interactive): update to lean ESTIMATED CHANGES Modified tactic/interactive.lean 2018-01-16 16:08:50-05:00 e11da6e feat(data/real): variants on archimedean property ESTIMATED CHANGES Modified data/real.lean - theorem NEW.real.archimedean + theorem NEW.real.exists_int_gt + theorem NEW.real.exists_int_lt + theorem NEW.real.exists_nat_gt + theorem NEW.real.exists_rat_gt + theorem NEW.real.exists_rat_lt 2018-01-16 05:29:44-05:00 d84dfb1 feat(data/real): completeness of the (new) real numbers ESTIMATED CHANGES Modified algebra/group.lean - theorem le_sub_iff_add_le + theorem sub_add_sub_cancel' - theorem sub_le_iff_le_add Modified algebra/ordered_field.lean + theorem inv_le - theorem inv_le_inv' +/- theorem inv_le_inv + theorem inv_le_inv_of_le + theorem inv_lt + theorem le_inv + theorem lt_inv Modified algebra/ordered_group.lean +/- theorem le_neg_add_iff_add_le + theorem le_sub +/- theorem le_sub_right_iff_add_le +/- theorem lt_sub_right_iff_add_lt +/- theorem sub_right_le_iff_le_add +/- theorem sub_right_lt_iff_lt_add Modified algebra/ordered_ring.lean + theorem sub_one_lt Modified analysis/ennreal.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/metric_space.lean Modified analysis/real.lean Modified analysis/topology/topological_structures.lean Modified data/int/basic.lean + theorem int.add_one_le_iff + theorem int.exists_greatest_of_bdd + theorem int.exists_least_of_bdd + theorem int.le_sub_one_iff + theorem int.lt_add_one_iff +/- theorem int.of_nat_add_neg_succ_of_nat_of_ge +/- theorem int.of_nat_add_neg_succ_of_nat_of_lt + theorem int.sub_one_le_iff Modified data/int/order.lean - theorem int.exists_greatest_of_bdd - theorem int.exists_least_of_bdd Modified data/pnat.lean + theorem pnat.coe_nat_coe Modified data/rat.lean Modified data/real.lean + theorem NEW.real.Inf_le + theorem NEW.real.Sup_le + theorem NEW.real.Sup_le_ub + theorem NEW.real.ceil_add_int + theorem NEW.real.ceil_coe + theorem NEW.real.ceil_le + theorem NEW.real.ceil_lt_add_one + theorem NEW.real.ceil_mono + theorem NEW.real.ceil_sub_int + theorem NEW.real.exists_floor + theorem NEW.real.exists_sup + theorem NEW.real.floor_add_int + theorem NEW.real.floor_coe + theorem NEW.real.floor_le + theorem NEW.real.floor_lt + theorem NEW.real.floor_mono + theorem NEW.real.floor_sub_int + theorem NEW.real.lb_le_Inf + theorem NEW.real.le_Inf + theorem NEW.real.le_Sup + theorem NEW.real.le_ceil + theorem NEW.real.le_floor + theorem NEW.real.le_mk_of_forall_le + theorem NEW.real.lt_ceil + theorem NEW.real.lt_floor_add_one + theorem NEW.real.lt_succ_floor + theorem NEW.real.mk_le_of_forall_le + theorem NEW.real.sub_one_lt_floor 2018-01-15 07:59:59-05:00 04cac95 feat(data/real): reals from first principles This is beginning work on a simpler implementation of real numbers, based on Cauchy sequences, to help alleviate some of the issues we have seen with loading times and timeouts when working with real numbers. If everything goes according to plan, `analysis/real.lean` will be the development for the topology of the reals, but the initial construction will have no topology prerequisites. ESTIMATED CHANGES Modified algebra/functions.lean + theorem abs_pos_iff Added algebra/linear_algebra/dimension.lean + def vector_space.dim Modified algebra/linear_algebra/linear_map_module.lean Modified analysis/ennreal.lean Modified analysis/real.lean Modified data/bool.lean + theorem bool.of_to_bool_iff Modified data/int/basic.lean +/- theorem int.cast_id + theorem int.eq_cast Modified data/nat/basic.lean Modified data/nat/cast.lean +/- theorem nat.cast_id + theorem nat.eq_cast' + theorem nat.eq_cast Modified data/rat.lean + theorem rat.eq_cast + theorem rat.eq_cast_of_ne_zero Added data/real.lean + theorem NEW.real.add_lt_add_iff_left + theorem NEW.real.archimedean + theorem NEW.real.exists_pos_rat_lt + theorem NEW.real.exists_rat_btwn + theorem NEW.real.exists_rat_near' + theorem NEW.real.exists_rat_near + theorem NEW.real.inv_mk + theorem NEW.real.inv_zero + def NEW.real.mk + theorem NEW.real.mk_add + theorem NEW.real.mk_eq + theorem NEW.real.mk_eq_mk + theorem NEW.real.mk_eq_zero + theorem NEW.real.mk_le + theorem NEW.real.mk_lt + theorem NEW.real.mk_mul + theorem NEW.real.mk_neg + theorem NEW.real.mk_pos + def NEW.real.of_rat + theorem NEW.real.of_rat_add + theorem NEW.real.of_rat_eq_cast + theorem NEW.real.of_rat_lt + theorem NEW.real.of_rat_mul + theorem NEW.real.of_rat_neg + theorem NEW.real.of_rat_one + theorem NEW.real.of_rat_sub + theorem NEW.real.of_rat_zero + def NEW.real + theorem exists_forall_ge_and + theorem rat.cau_seq.abs_pos_of_not_lim_zero + theorem rat.cau_seq.add_apply + theorem rat.cau_seq.add_lim_zero + theorem rat.cau_seq.add_pos + theorem rat.cau_seq.bounded' + theorem rat.cau_seq.bounded + theorem rat.cau_seq.cauchy + theorem rat.cau_seq.cauchy₂ + theorem rat.cau_seq.cauchy₃ + theorem rat.cau_seq.ext + def rat.cau_seq.inv + theorem rat.cau_seq.inv_apply + theorem rat.cau_seq.inv_aux + theorem rat.cau_seq.inv_mul_cancel + theorem rat.cau_seq.le_antisymm + theorem rat.cau_seq.le_total + def rat.cau_seq.lim_zero + theorem rat.cau_seq.lim_zero_congr + theorem rat.cau_seq.lt_irrefl + theorem rat.cau_seq.lt_of_eq_of_lt + theorem rat.cau_seq.lt_of_lt_of_eq + theorem rat.cau_seq.lt_trans + theorem rat.cau_seq.mul_apply + theorem rat.cau_seq.mul_lim_zero + theorem rat.cau_seq.mul_pos + theorem rat.cau_seq.neg_apply + theorem rat.cau_seq.neg_lim_zero + theorem rat.cau_seq.not_lim_zero_of_pos + def rat.cau_seq.of_eq + def rat.cau_seq.of_rat + theorem rat.cau_seq.of_rat_add + theorem rat.cau_seq.of_rat_apply + theorem rat.cau_seq.of_rat_lim_zero + theorem rat.cau_seq.of_rat_mul + theorem rat.cau_seq.of_rat_neg + theorem rat.cau_seq.of_rat_pos + theorem rat.cau_seq.of_rat_sub + theorem rat.cau_seq.one_apply + def rat.cau_seq.pos + theorem rat.cau_seq.pos_add_lim_zero + theorem rat.cau_seq.sub_apply + theorem rat.cau_seq.sub_lim_zero + theorem rat.cau_seq.trichotomy + theorem rat.cau_seq.zero_apply + theorem rat.cau_seq.zero_lim_zero + def rat.cau_seq Modified pending/default.lean - theorem of_to_bool_iff Modified tactic/alias.lean 2018-01-14 21:59:50-05:00 65db966 feat(algebra/field): more division lemmas ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.single_le_sum Modified algebra/field.lean - theorem abs_inv + theorem add_div + theorem div_div_cancel + theorem div_div_div_cancel_right + theorem div_eq_div_iff + theorem div_eq_mul_inv + theorem div_eq_zero_iff - theorem div_le_iff_le_mul_of_pos + theorem div_mul_comm + theorem div_mul_div_cancel + theorem div_ne_zero + theorem div_ne_zero_iff + theorem div_neg + theorem div_right_comm + theorem div_right_inj +/- theorem division_ring.inv_comm_of_comm - theorem division_ring.inv_div + theorem division_ring.inv_eq_iff + theorem division_ring.inv_inj - theorem division_ring.neg_inv + theorem divp_eq_div + theorem divp_mk0 + theorem field.div_div_cancel + theorem field.div_div_div_cancel_right + theorem field.div_mul_div_cancel + theorem field.div_right_comm + theorem inv_add_inv + theorem inv_div + theorem inv_div_left - theorem inv_le_inv - theorem inv_lt_one - theorem inv_neg - theorem inv_pos + theorem inv_sub_inv - theorem ivl_stretch - theorem ivl_translate - theorem le_div_iff_mul_le_of_pos - theorem lt_div_iff + theorem mul_comm_div + theorem mul_div_comm + theorem mul_div_right_comm + theorem neg_inv - theorem one_lt_inv + theorem sub_div + theorem units.inv_eq_inv + def units.mk0 + theorem units.mk0_inv + theorem units.mk0_val + theorem units.ne_zero Modified algebra/functions.lean + def abs_add Modified algebra/group.lean + def divp + theorem divp_assoc + theorem divp_eq_one + theorem divp_mul_cancel + theorem divp_one + theorem divp_right_inj + theorem divp_self + theorem mul_divp_cancel +/- theorem mul_left_inj +/- theorem mul_right_inj + theorem one_divp + theorem units.ext + theorem units.inv_coe + theorem units.inv_mul + theorem units.inv_mul_cancel_left + theorem units.inv_mul_cancel_right + theorem units.mul_coe + theorem units.mul_inv + theorem units.mul_inv_cancel_left + theorem units.mul_inv_cancel_right + theorem units.mul_left_inj + theorem units.mul_right_inj + theorem units.one_coe + theorem units.val_coe + structure units Modified algebra/group_power.lean Modified algebra/linear_algebra/basic.lean - theorem is_submodule_span Modified algebra/module.lean Modified algebra/order.lean + theorem exists_ge_of_linear Added algebra/ordered_field.lean + theorem abs_inv + theorem div_le_div_left + theorem div_le_div_right + theorem div_le_div_right_of_neg + theorem div_le_iff + theorem div_le_iff_of_neg + theorem div_le_one_iff_le + theorem div_lt_div' + theorem div_lt_div + theorem div_lt_div_iff + theorem div_lt_div_left + theorem div_lt_div_right + theorem div_lt_div_right_of_neg + theorem div_lt_iff + theorem div_lt_iff_of_neg + theorem div_lt_one_iff_lt + def div_nonneg + def div_pos + def half_lt_self + theorem half_pos + theorem inv_le_inv' + theorem inv_le_inv + theorem inv_lt_inv + theorem inv_lt_one + theorem inv_neg + theorem inv_pos + theorem ivl_stretch + theorem ivl_translate + theorem le_div_iff + theorem lt_div_iff + theorem one_div_le_one_div + theorem one_div_lt_one_div + theorem one_le_div_iff_le + theorem one_lt_div_iff_lt + theorem one_lt_inv Modified algebra/ordered_group.lean Modified algebra/ordered_ring.lean + theorem lt_add_one +/- theorem one_lt_two Modified algebra/ring.lean - theorem add_div - theorem div_eq_mul_inv - theorem neg_inv - theorem units.ext - theorem units.inv_coe - theorem units.inv_mul - theorem units.mul_coe - theorem units.mul_inv - theorem units.one_coe - theorem units.val_coe - structure units 2018-01-14 17:36:13-05:00 0d6d12a feat(tactic/interactive): replace tactic ESTIMATED CHANGES Modified tactic/interactive.lean 2018-01-14 01:53:04-05:00 edde6f5 feat(tactic/ring): use `ring` for rewriting into pretty print format ESTIMATED CHANGES Modified tactic/basic.lean Modified tactic/ring.lean + theorem tactic.ring.add_neg_eq_sub + theorem tactic.ring.horner_def' + theorem tactic.ring.mul_assoc_rev + inductive tactic.ring.normalize_mode + theorem tactic.ring.pow_add_rev + theorem tactic.ring.pow_add_rev_right 2018-01-13 19:43:41-05:00 c75b072 fix(*): update to lean ESTIMATED CHANGES Modified data/array/lemmas.lean Modified data/list/basic.lean Modified data/list/perm.lean Modified data/option.lean - theorem option.none_ne_some +/- theorem option.some_inj Modified data/rat.lean Modified data/seq/wseq.lean Modified set_theory/ordinal_notation.lean Modified tactic/converter/binders.lean 2018-01-13 10:22:46-05:00 df7175f fix(tactic/ring): bugfix ESTIMATED CHANGES Modified tactic/ring.lean 2018-01-13 04:32:47-05:00 341fd51 fix(tactic/ring): bugfix ESTIMATED CHANGES Modified tactic/ring.lean +/- theorem tactic.ring.horner_add_horner_eq 2018-01-13 03:25:35-05:00 2e2d89b feat(tactic/ring): tactic for ring equality ESTIMATED CHANGES Modified algebra/group_power.lean +/- theorem add_monoid.smul_one +/- theorem pow_one Modified data/pnat.lean +/- def nat.to_pnat Added tactic/basic.lean Modified tactic/interactive.lean Modified tactic/norm_num.lean Added tactic/ring.lean + def horner + theorem tactic.ring.const_add_horner + theorem tactic.ring.horner_add_const + theorem tactic.ring.horner_add_horner_eq + theorem tactic.ring.horner_add_horner_gt + theorem tactic.ring.horner_add_horner_lt + theorem tactic.ring.horner_atom + theorem tactic.ring.horner_const_mul + theorem tactic.ring.horner_horner + theorem tactic.ring.horner_mul_const + theorem tactic.ring.horner_mul_horner + theorem tactic.ring.horner_mul_horner_zero + theorem tactic.ring.horner_neg + theorem tactic.ring.horner_pow + theorem tactic.ring.subst_into_neg + theorem tactic.ring.subst_into_pow + theorem tactic.ring.zero_horner 2018-01-12 13:08:48-05:00 c39b43f feat(analysis/metric_space): sup metric for product of metric spaces ESTIMATED CHANGES Modified algebra/linear_algebra/multivariate_polynomial.lean Modified analysis/metric_space.lean + theorem dist_le_zero_iff Modified analysis/topology/topological_space.lean Modified analysis/topology/uniform_space.lean + theorem prod_uniformity Modified data/equiv.lean Modified data/prod.lean + theorem prod.ext +/- theorem prod.mk.eta Modified order/complete_lattice.lean +/- theorem lattice.infi_inf_eq 2018-01-11 23:22:32-05:00 1dddcf6 doc(*): blurbs galore Document all `def`, `class`, and `inductive` that are reasonably public-facing ESTIMATED CHANGES Modified algebra/big_operators.lean Modified algebra/group.lean Modified algebra/group_power.lean Modified algebra/linear_algebra/basic.lean Modified algebra/linear_algebra/linear_map_module.lean Modified algebra/linear_algebra/multivariate_polynomial.lean Modified algebra/linear_algebra/quotient_module.lean Modified algebra/module.lean Modified algebra/order.lean Modified algebra/ordered_group.lean Modified algebra/ordered_ring.lean Modified algebra/ring.lean Modified analysis/ennreal.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/metric_space.lean Modified analysis/topology/continuity.lean +/- def continuous +/- theorem is_open_induced Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean +/- theorem tendsto_nhds Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean + def cauchy Modified data/analysis/filter.lean Modified data/analysis/topology.lean Modified data/encodable.lean Modified data/equiv.lean Modified data/fin.lean Modified data/finset.lean Modified data/finsupp.lean +/- theorem finsupp.comap_domain_apply +/- theorem finsupp.comap_domain_zero +/- theorem finsupp.one_def +/- theorem finsupp.smul_apply Modified data/fintype.lean Modified data/fp/basic.lean Modified data/hash_map.lean +/- def bucket_array.modify +/- def bucket_array.write +/- def hash_map.of_list Modified data/int/basic.lean Modified data/list/basic.lean Modified data/list/perm.lean Modified data/list/sort.lean Modified data/multiset.lean Modified data/nat/basic.lean Modified data/nat/cast.lean Modified data/nat/dist.lean Modified data/nat/gcd.lean Modified data/nat/modeq.lean Modified data/nat/pairing.lean Modified data/nat/prime.lean Modified data/nat/sqrt.lean Modified data/num/basic.lean +/- theorem snum.bit_one Modified data/option.lean Modified data/pfun.lean Modified data/pnat.lean Modified data/prod.lean +/- theorem prod.fst_swap +/- theorem prod.snd_swap +/- def prod.swap +/- theorem prod.swap_swap Modified data/quot.lean Modified data/rat.lean Modified data/seq/computation.lean +/- def computation.destruct + theorem computation.eq_thinkN' - def computation.eq_thinkN' + theorem computation.eq_thinkN - def computation.eq_thinkN +/- def computation.equiv + theorem computation.exists_results_of_mem - def computation.exists_results_of_mem + theorem computation.get_eq_of_mem - def computation.get_eq_of_mem + theorem computation.get_eq_of_promises - def computation.get_eq_of_promises +/- theorem computation.get_equiv + theorem computation.get_mem - def computation.get_mem + theorem computation.get_promises - def computation.get_promises +/- theorem computation.lift_eq_iff_equiv + theorem computation.lift_rel.equiv - def computation.lift_rel.equiv + theorem computation.lift_rel.imp - def computation.lift_rel.imp + theorem computation.lift_rel.refl - def computation.lift_rel.refl + theorem computation.lift_rel.symm - def computation.lift_rel.symm + theorem computation.lift_rel.trans - def computation.lift_rel.trans + theorem computation.mem_of_get_eq - def computation.mem_of_get_eq + theorem computation.mem_of_promises - def computation.mem_of_promises +/- def computation.orelse +/- theorem computation.orelse_ret +/- theorem computation.orelse_think +/- theorem computation.promises_congr + theorem computation.rel_of_lift_rel - def computation.rel_of_lift_rel + theorem computation.results.len_unique - def computation.results.len_unique + theorem computation.results.length - def computation.results.length + theorem computation.results.mem - def computation.results.mem + theorem computation.results.terminates - def computation.results.terminates + theorem computation.results.val_unique - def computation.results.val_unique + theorem computation.results_of_terminates' - def computation.results_of_terminates' + theorem computation.results_of_terminates - def computation.results_of_terminates +/- theorem computation.ret_orelse +/- theorem computation.terminates_congr + theorem computation.terminates_of_lift_rel - def computation.terminates_of_lift_rel Modified data/seq/parallel.lean Modified data/seq/seq.lean + theorem seq.corec_eq - def seq.corec_eq + theorem seq.mem_append_left - def seq.mem_append_left + theorem seq.of_list_append - def seq.of_list_append + theorem seq.of_list_cons - def seq.of_list_cons + theorem seq.of_list_nil - def seq.of_list_nil + theorem seq.of_mem_append - def seq.of_mem_append + theorem seq.of_stream_append - def seq.of_stream_append + theorem seq.of_stream_cons - def seq.of_stream_cons +/- def seq.omap Modified data/seq/wseq.lean +/- def wseq.bisim_o +/- def wseq.destruct_append.aux +/- def wseq.destruct_join.aux +/- def wseq.drop.aux + theorem wseq.drop.aux_none - def wseq.drop.aux_none + theorem wseq.join_cons - def wseq.join_cons + theorem wseq.join_nil - def wseq.join_nil + theorem wseq.join_think - def wseq.join_think + theorem wseq.lift_rel.equiv - def wseq.lift_rel.equiv + theorem wseq.lift_rel.refl - def wseq.lift_rel.refl + theorem wseq.lift_rel.swap - def wseq.lift_rel.swap + theorem wseq.lift_rel.swap_lem - def wseq.lift_rel.swap_lem + theorem wseq.lift_rel.symm - def wseq.lift_rel.symm + theorem wseq.lift_rel.trans - def wseq.lift_rel.trans + theorem wseq.lift_rel_cons - def wseq.lift_rel_cons + theorem wseq.lift_rel_nil - def wseq.lift_rel_nil + theorem wseq.lift_rel_o.swap - def wseq.lift_rel_o.swap +/- def wseq.lift_rel_o + theorem wseq.lift_rel_think_left - def wseq.lift_rel_think_left + theorem wseq.lift_rel_think_right - def wseq.lift_rel_think_right + theorem wseq.mem_append_left - def wseq.mem_append_left + theorem wseq.of_list_cons - def wseq.of_list_cons + theorem wseq.of_list_nil - def wseq.of_list_nil + theorem wseq.of_mem_append - def wseq.of_mem_append +/- def wseq.tail.aux + theorem wseq.to_list'_cons - def wseq.to_list'_cons + theorem wseq.to_list'_map - def wseq.to_list'_map + theorem wseq.to_list'_nil - def wseq.to_list'_nil + theorem wseq.to_list'_think - def wseq.to_list'_think + theorem wseq.to_list_cons - def wseq.to_list_cons + theorem wseq.to_list_nil - def wseq.to_list_nil Modified data/set/basic.lean + theorem set.mem_image_elim - def set.mem_image_elim + theorem set.mem_image_elim_on - def set.mem_image_elim_on Modified data/set/disjointed.lean Modified data/set/finite.lean Modified data/set/function.lean +/- def set.maps_to + theorem set.maps_to_univ - theorem set.maps_to_univ_univ Modified data/set/lattice.lean Modified data/sigma/basic.lean Modified data/sum.lean +/- def sum.swap Modified logic/embedding.lean Modified logic/function.lean Modified number_theory/dioph.lean + theorem dioph.proj_dioph_of_nat - def dioph.proj_dioph_of_nat +/- def fin2.add +/- def fin2.elim0 +/- def fin2.insert_perm +/- def fin2.left +/- def fin2.of_nat' +/- def fin2.opt_of_nat +/- def fin2.remap_left + def fin2.to_nat +/- theorem int.eq_nat_abs_iff_mul +/- def list_all +/- def option.cons + theorem option.cons_head_tail - def option.cons_head_tail - def poly.pow +/- def sum.join +/- def vector3.append +/- theorem vector3.append_add +/- theorem vector3.append_cons +/- theorem vector3.append_insert +/- theorem vector3.append_left +/- theorem vector3.append_nil +/- def vector3.cons +/- def vector3.cons_elim +/- theorem vector3.cons_elim_cons +/- theorem vector3.cons_fs +/- theorem vector3.cons_fz +/- theorem vector3.cons_head_tail +/- theorem vector3.eq_nil +/- def vector3.head +/- def vector3.insert +/- theorem vector3.insert_fs +/- theorem vector3.insert_fz +/- def vector3.nil +/- def vector3.nil_elim +/- def vector3.nth +/- def vector3.of_fn +/- theorem vector3.rec_on_cons +/- theorem vector3.rec_on_nil +/- def vector3.tail Modified number_theory/pell.lean + theorem pell.is_pell_conj - def pell.is_pell_conj + theorem pell.is_pell_mul - def pell.is_pell_mul + theorem pell.is_pell_nat - def pell.is_pell_nat + theorem pell.is_pell_norm - def pell.is_pell_norm + theorem pell.is_pell_one - def pell.is_pell_one + theorem pell.is_pell_pell_zd - def pell.is_pell_pell_zd + theorem pell.n_lt_a_pow - def pell.n_lt_a_pow +/- def pell.pell + theorem pell.xn_ge_a_pow - def pell.xn_ge_a_pow + theorem zsqrtd.nonnegg_cases_left - def zsqrtd.nonnegg_cases_left + theorem zsqrtd.nonnegg_cases_right - def zsqrtd.nonnegg_cases_right + theorem zsqrtd.nonnegg_comm - def zsqrtd.nonnegg_comm + theorem zsqrtd.nonnegg_neg_pos - def zsqrtd.nonnegg_neg_pos + theorem zsqrtd.nonnegg_pos_neg - def zsqrtd.nonnegg_pos_neg Modified order/basic.lean + theorem is_irrefl.swap - def is_irrefl.swap + theorem is_irrefl_of_is_asymm - def is_irrefl_of_is_asymm + theorem is_strict_order.swap - def is_strict_order.swap + theorem is_strict_total_order'.swap - def is_strict_total_order'.swap + theorem is_strict_weak_order_of_is_order_connected - def is_strict_weak_order_of_is_order_connected + theorem is_trans.swap - def is_trans.swap + theorem is_trichotomous.swap - def is_trichotomous.swap Modified order/boolean_algebra.lean Modified order/bounded_lattice.lean Modified order/complete_boolean_algebra.lean Modified order/complete_lattice.lean +/- theorem lattice.Inf_le +/- theorem lattice.le_Sup Modified order/filter.lean +/- def directed +/- def directed_on +/- theorem filter.lift_le +/- def filter.tendsto - def upwards Modified order/fixed_points.lean Modified order/galois_connection.lean Modified order/lattice.lean Modified order/order_iso.lean Modified order/zorn.lean Modified set_theory/cardinal.lean Modified set_theory/cofinality.lean +/- theorem cardinal.lt_cof_power Modified set_theory/ordinal.lean + theorem initial_seg.unique_of_extensional - def initial_seg.unique_of_extensional +/- theorem order_embedding.collapse_apply +/- def ordinal.typein +/- def principal_seg.cod_restrict Modified set_theory/ordinal_notation.lean Modified set_theory/zfc.lean +/- def Class.Class_to_Cong +/- def Class.Cong_to_Class +/- def Class.Union +/- theorem Class.Union_hom +/- theorem Class.diff_hom +/- theorem Class.empty_hom +/- def Class.fval +/- theorem Class.fval_ex +/- theorem Class.insert_hom +/- theorem Class.inter_hom +/- def Class.iota +/- theorem Class.iota_ex +/- theorem Class.iota_val +/- theorem Class.mem_hom_left +/- theorem Class.mem_hom_right +/- theorem Class.mem_univ +/- theorem Class.of_Set.inj +/- def Class.of_Set +/- def Class.powerset +/- theorem Class.powerset_hom +/- theorem Class.sep_hom +/- theorem Class.subset_hom +/- def Class.to_Set +/- theorem Class.to_Set_of_Set +/- theorem Class.union_hom +/- def Class.univ +/- def Set.Union +/- theorem Set.Union_lem +/- theorem Set.Union_singleton + theorem Set.choice_is_func - def Set.choice_is_func + theorem Set.choice_mem - def Set.choice_mem + theorem Set.choice_mem_aux - def Set.choice_mem_aux +/- def Set.empty + theorem Set.eq_empty - def Set.eq_empty + theorem Set.ext - def Set.ext + theorem Set.ext_iff - def Set.ext_iff +/- def Set.funs + theorem Set.image.mk - def Set.image.mk +/- def Set.image +/- theorem Set.induction_on +/- def Set.is_func + theorem Set.map_fval - def Set.map_fval +/- theorem Set.map_is_func +/- theorem Set.map_unique +/- def Set.mem +/- theorem Set.mem_Union +/- theorem Set.mem_diff + theorem Set.mem_empty - def Set.mem_empty + theorem Set.mem_funs - def Set.mem_funs + theorem Set.mem_image - def Set.mem_image + theorem Set.mem_insert - def Set.mem_insert +/- theorem Set.mem_inter +/- theorem Set.mem_map +/- theorem Set.mem_pair +/- theorem Set.mem_pair_sep +/- theorem Set.mem_powerset + theorem Set.mem_prod - def Set.mem_prod +/- theorem Set.mem_sep +/- theorem Set.mem_singleton' +/- theorem Set.mem_singleton +/- theorem Set.mem_union + def Set.mk + theorem Set.mk_eq +/- def Set.omega +/- theorem Set.omega_succ +/- theorem Set.omega_zero +/- def Set.pair + theorem Set.pair_inj - def Set.pair_inj + theorem Set.pair_mem_prod - def Set.pair_mem_prod +/- def Set.pair_sep +/- def Set.powerset +/- def Set.prod +/- theorem Set.regularity +/- theorem Set.singleton_inj +/- theorem Set.subset_iff +/- def Set.to_set +/- def pSet.Union +/- def pSet.arity.equiv + theorem pSet.definable.eq - def pSet.definable.eq +/- def pSet.definable.eq_mk +/- def pSet.definable.resp +/- inductive pSet.definable +/- def pSet.embed + theorem pSet.equiv.eq - def pSet.equiv.eq + theorem pSet.equiv.euc - def pSet.equiv.euc + theorem pSet.equiv.ext - def pSet.equiv.ext + theorem pSet.equiv.refl - def pSet.equiv.refl + theorem pSet.equiv.symm - def pSet.equiv.symm + theorem pSet.equiv.trans - def pSet.equiv.trans +/- def pSet.equiv +/- def pSet.func +/- def pSet.image + theorem pSet.lift_mem_embed - def pSet.lift_mem_embed + theorem pSet.mem.congr_left - def pSet.mem.congr_left + theorem pSet.mem.congr_right - def pSet.mem.congr_right + theorem pSet.mem.ext - def pSet.mem.ext + theorem pSet.mem.mk - def pSet.mem.mk +/- def pSet.mem +/- theorem pSet.mem_Union + theorem pSet.mem_empty - def pSet.mem_empty + theorem pSet.mem_image - def pSet.mem_image +/- theorem pSet.mem_powerset + theorem pSet.mk_type_func - def pSet.mk_type_func +/- def pSet.of_nat +/- def pSet.omega +/- def pSet.powerset +/- def pSet.resp.equiv + theorem pSet.resp.euc - def pSet.resp.euc +/- def pSet.resp.eval +/- def pSet.resp.eval_aux +/- def pSet.resp.eval_val +/- def pSet.resp.f + theorem pSet.resp.refl - def pSet.resp.refl +/- def pSet.resp + theorem pSet.subset.congr_left - def pSet.subset.congr_left + theorem pSet.subset.congr_right - def pSet.subset.congr_right +/- def pSet.to_set +/- def pSet.type Modified tactic/interactive.lean Modified tactic/norm_num.lean 2018-01-11 16:26:08-05:00 2ffd72c refactor(order/basic): remove "increasing/decreasing" unusual defs ESTIMATED CHANGES Modified order/basic.lean + def partial_order.dual - def partial_order_dual + def preorder.dual - def preorder_dual Modified order/galois_connection.lean +/- theorem galois_connection.decreasing_l_u +/- theorem galois_connection.increasing_u_l + def set.kern_image 2018-01-11 16:21:21-05:00 09e0899 fix(analysis/ennreal): fix long-running proofs ESTIMATED CHANGES Modified algebra/functions.lean +/- theorem abs_le +/- theorem abs_lt Modified algebra/linear_algebra/basic.lean Modified analysis/ennreal.lean + theorem ennreal.of_real_add - theorem ennreal.of_real_add_of_real Modified analysis/measure_theory/lebesgue_measure.lean Modified order/filter.lean Modified order/zorn.lean Modified set_theory/ordinal.lean 2018-01-11 12:23:27-05:00 7fd7ea8 fix(analysis/real): more irreducible ESTIMATED CHANGES Modified algebra/linear_algebra/prod_module.lean Modified analysis/ennreal.lean Modified analysis/real.lean + theorem max_of_rat - theorem max_of_rat_of_rat + theorem min_of_rat - theorem min_of_rat_of_rat + theorem of_rat_le - theorem of_rat_le_of_rat + theorem real.le_def +/- theorem two_eq_of_rat_two 2018-01-11 06:57:19-05:00 27920e9 fix(data/list/basic,...): update to lean ESTIMATED CHANGES Modified data/hash_map.lean Modified data/list/basic.lean 2018-01-10 03:03:39-05:00 dc28573 fix(number_theory/pell,...): update to lean ESTIMATED CHANGES Modified number_theory/pell.lean Modified set_theory/ordinal_notation.lean 2018-01-07 14:32:08-05:00 5ff51dc feat(analysis/complex): complex numbers as a field ESTIMATED CHANGES Added analysis/complex.lean + def complex.I + theorem complex.I_im + theorem complex.I_re + theorem complex.add_im + theorem complex.add_re + theorem complex.coe_im + theorem complex.coe_re + theorem complex.conj_im + theorem complex.conj_re + def complex.conjugate + theorem complex.eq_iff_re_eq_and_im_eq + theorem complex.eq_of_re_eq_and_im_eq + theorem complex.eta + theorem complex.im_eq_zero_of_complex_nat + theorem complex.mul_im + theorem complex.mul_re + theorem complex.neg_im + theorem complex.neg_re + def complex.norm_squared + theorem complex.norm_squared_pos_of_nonzero + def complex.of_real + theorem complex.of_real_abs_squared + theorem complex.of_real_add + theorem complex.of_real_eq_coe + theorem complex.of_real_injective + theorem complex.of_real_int_eq_complex_int + theorem complex.of_real_inv + theorem complex.of_real_mul + theorem complex.of_real_nat_eq_complex_nat + theorem complex.of_real_neg + theorem complex.of_real_one + theorem complex.of_real_sub + theorem complex.of_real_zero + theorem complex.one_im + theorem complex.one_re + theorem complex.proj_im + theorem complex.proj_re + theorem complex.sub_im + theorem complex.sub_re + theorem complex.zero_im + theorem complex.zero_re + structure complex 2018-01-06 18:57:25-05:00 182c303 feat(set_theory/cofinality): regular/inaccessible cards, Konig's theorem, next fixpoint function ESTIMATED CHANGES Modified algebra/functions.lean + theorem abs_one Modified data/equiv.lean + def equiv.Pi_congr_right Modified logic/embedding.lean + def function.embedding.Pi_congr_right + def function.embedding.sigma_congr_right Modified logic/function.lean + theorem function.inv_fun_surjective Modified set_theory/cardinal.lean + theorem cardinal.add_def + theorem cardinal.cantor' + theorem cardinal.lift_id' +/- theorem cardinal.lift_id + theorem cardinal.lift_succ + theorem cardinal.lift_two_power + theorem cardinal.lt_succ + theorem cardinal.mk_out + theorem cardinal.mul_def + theorem cardinal.omega_pos + theorem cardinal.one_le_iff_ne_zero + theorem cardinal.one_le_iff_pos + theorem cardinal.pos_iff_ne_zero + theorem cardinal.power_def + theorem cardinal.power_ne_zero + def cardinal.prod + theorem cardinal.prod_const + theorem cardinal.prod_eq_zero + theorem cardinal.prod_le_prod + theorem cardinal.prod_mk + theorem cardinal.prod_ne_zero +/- def cardinal.sum + theorem cardinal.sum_const + theorem cardinal.sum_le_sum + theorem cardinal.sum_le_sup + theorem cardinal.sum_lt_prod + theorem cardinal.sum_mk + theorem cardinal.sup_le_sum + theorem cardinal.sup_le_sup Added set_theory/cofinality.lean + theorem cardinal.cof_is_regular + theorem cardinal.is_inaccessible.mk + def cardinal.is_inaccessible + def cardinal.is_limit + def cardinal.is_regular + theorem cardinal.is_strong_limit.is_limit + def cardinal.is_strong_limit + theorem cardinal.lt_cof_power + theorem cardinal.lt_power_cof + theorem cardinal.omega_is_regular + theorem cardinal.succ_is_regular + theorem cardinal.univ_inaccessible + def order.cof + theorem order_iso.cof.aux + theorem order_iso.cof + def ordinal.cof + theorem ordinal.cof_add + theorem ordinal.cof_bsup_le + theorem ordinal.cof_bsup_le_lift + theorem ordinal.cof_cof + theorem ordinal.cof_eq' + theorem ordinal.cof_eq + theorem ordinal.cof_eq_one_iff_is_succ + theorem ordinal.cof_eq_zero + theorem ordinal.cof_le_card + theorem ordinal.cof_omega + theorem ordinal.cof_ord_le + theorem ordinal.cof_succ + theorem ordinal.cof_sup_le + theorem ordinal.cof_sup_le_lift + theorem ordinal.cof_type_le + theorem ordinal.cof_univ + theorem ordinal.cof_zero + theorem ordinal.le_cof_type + theorem ordinal.lift_cof + theorem ordinal.lt_cof_type + theorem ordinal.omega_le_cof + theorem ordinal.ord_cof_eq Modified set_theory/ordinal.lean + theorem cardinal.lift_lt_univ' + theorem cardinal.lift_lt_univ + theorem cardinal.lift_univ + theorem cardinal.lt_univ' + theorem cardinal.lt_univ + theorem cardinal.mk_cardinal + theorem cardinal.ord_univ + theorem cardinal.type_cardinal + def cardinal.univ + theorem cardinal.univ_id + theorem cardinal.univ_umax - def cof - def order.cof - theorem order_iso.cof.aux - theorem order_iso.cof + theorem ordinal.card_univ - theorem ordinal.cof_add - theorem ordinal.cof_bsup_le - theorem ordinal.cof_bsup_le_lift - theorem ordinal.cof_cof - theorem ordinal.cof_eq - theorem ordinal.cof_eq_one_iff_is_succ - theorem ordinal.cof_eq_zero - theorem ordinal.cof_le_card - theorem ordinal.cof_succ - theorem ordinal.cof_sup_le - theorem ordinal.cof_sup_le_lift - theorem ordinal.cof_type_le - theorem ordinal.cof_zero + def ordinal.deriv + theorem ordinal.deriv_is_normal + theorem ordinal.deriv_limit + theorem ordinal.deriv_succ + theorem ordinal.deriv_zero + theorem ordinal.foldr_le_nfp + theorem ordinal.is_normal.bsup + theorem ordinal.is_normal.deriv_fp + theorem ordinal.is_normal.fp_iff_deriv + theorem ordinal.is_normal.le_nfp + theorem ordinal.is_normal.lt_nfp + theorem ordinal.is_normal.nfp_fp + theorem ordinal.is_normal.nfp_le + theorem ordinal.is_normal.nfp_le_fp + theorem ordinal.is_normal.sup - theorem ordinal.le_cof_type + theorem ordinal.le_nfp_self +/- theorem ordinal.lift.principal_seg_top + theorem ordinal.lift_id' +/- theorem ordinal.lift_id + theorem ordinal.lift_type + theorem ordinal.lift_univ - theorem ordinal.lt_cof_type + theorem ordinal.lt_sup + def ordinal.nfp + theorem ordinal.not_zero_is_limit - theorem ordinal.ord_cof_eq + def ordinal.univ + theorem ordinal.univ_id + theorem ordinal.univ_umax Modified set_theory/ordinal_notation.lean 2018-01-06 00:50:12+01:00 4f7835e feat(analysis): add default setup for uniform space of metric space ESTIMATED CHANGES Modified analysis/metric_space.lean + def metric_space.uniform_space_of_dist 2018-01-04 09:05:50-05:00 0b7b912 feat(set_theory/ordinal_notation): correctness of ordinal power ESTIMATED CHANGES Modified algebra/order.lean +/- theorem le_or_lt Modified data/pnat.lean + theorem nat.succ_pnat_coe + theorem pnat.add_coe + theorem pnat.eq + theorem pnat.mk_coe + theorem pnat.mul_coe + theorem pnat.nat_coe_coe - theorem pnat.nat_coe_val +/- theorem pnat.ne_zero + theorem pnat.one_coe + theorem pnat.pos + def pnat.pow - theorem pnat.to_pnat'_val Modified logic/basic.lean + theorem coe_coe Modified set_theory/ordinal.lean + theorem ordinal.add_le_add_iff_right + theorem ordinal.add_lt_omega_power + theorem ordinal.add_right_cancel + theorem ordinal.add_sub_add_cancel + theorem ordinal.dvd_add + theorem ordinal.dvd_add_iff + theorem ordinal.dvd_antisymm + theorem ordinal.dvd_mul_of_dvd + theorem ordinal.dvd_trans + theorem ordinal.is_limit_iff_omega_dvd + theorem ordinal.is_normal.limit_le + theorem ordinal.le_of_dvd + theorem ordinal.lt_limit - theorem ordinal.mul_assoc + theorem ordinal.mul_is_limit_left + theorem ordinal.mul_lt_omega_power + theorem ordinal.mul_omega_dvd - theorem ordinal.mul_omega_power - theorem ordinal.mul_one + theorem ordinal.mul_sub + theorem ordinal.nat_cast_succ - theorem ordinal.one_mul + theorem ordinal.power_dvd_power + theorem ordinal.power_dvd_power_iff + theorem ordinal.power_lt_omega + theorem ordinal.power_omega + theorem ordinal.sub_eq_of_add_eq + theorem ordinal.sub_is_limit + theorem ordinal.sub_sub - theorem ordinal.succ_nat_cast +/- theorem ordinal.zero_dvd Modified set_theory/ordinal_notation.lean + def nonote.below + def nonote.mk + def nonote.oadd + def nonote.power + def nonote.rec_on +/- theorem nonote.repr_add +/- theorem nonote.repr_mul + theorem nonote.repr_power + theorem nonote.repr_sub + theorem onote.NF.below_of_lt' +/- theorem onote.NF.below_of_lt +/- theorem onote.NF.fst +/- theorem onote.NF.oadd + theorem onote.NF.of_dvd_omega + theorem onote.NF.of_dvd_omega_power +/- theorem onote.NF.snd' +/- theorem onote.NF.snd - theorem onote.NF.zero + theorem onote.NF.zero_of_zero +/- def onote.NF +/- theorem onote.NF_below.fst +/- theorem onote.NF_below.lt +/- theorem onote.NF_below.oadd +/- theorem onote.NF_below.repr_lt +/- theorem onote.NF_below.snd +/- theorem onote.NF_below_iff_top_below - theorem onote.NF_of_nat + theorem onote.NF_repr_split' + theorem onote.NF_repr_split - theorem onote.add_NF +/- theorem onote.cmp_compares +/- theorem onote.le_def +/- theorem onote.lt_def - theorem onote.mul_NF + def onote.mul_nat + theorem onote.mul_nat_eq_mul + theorem onote.mul_zero + theorem onote.oadd_add +/- theorem onote.oadd_lt_oadd_3 + theorem onote.oadd_mul +/- theorem onote.oadd_pos + def onote.omega +/- theorem onote.omega_le_oadd +/- def onote.power_aux + def onote.repr' +/- theorem onote.repr_add +/- theorem onote.repr_inj +/- theorem onote.repr_mul + theorem onote.repr_power + theorem onote.repr_power_aux₁ + theorem onote.repr_power_aux₂ + theorem onote.repr_scale + theorem onote.repr_sub +/- def onote.scale + theorem onote.scale_eq_mul + theorem onote.scale_power_aux +/- def onote.split' +/- def onote.split + theorem onote.split_add_lt + theorem onote.split_dvd + theorem onote.split_eq_scale_split' + theorem onote.sub_NF_below + def onote.to_string + def onote.to_string_aux1 + theorem onote.zero_add + theorem onote.zero_mul 2018-01-04 09:05:02-05:00 3f2435e refactor(algebra/group): clean up PR commit ESTIMATED CHANGES Modified algebra/big_operators.lean - theorem anti_mph_prod +/- theorem inv_prod + theorem is_group_anti_hom.prod + theorem is_group_hom.prod - theorem mph_prod Modified algebra/group.lean - theorem group_anti_hom.inv - theorem group_anti_hom.inv_is_group_anti_hom - theorem group_anti_hom.one - theorem group_hom.inv - theorem group_hom.one + theorem inv_is_group_anti_hom + theorem is_group_anti_hom.inv + theorem is_group_anti_hom.mul + theorem is_group_anti_hom.one + theorem is_group_hom.inv + theorem is_group_hom.mul + theorem is_group_hom.one 2018-01-02 16:52:49-05:00 12bd22b Group morphisms (#30) * feat(algebra/group): morphisms and antimorphisms Definitions, image of one and inverses, and computation on a product of more than two elements in big_operators. ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem anti_mph_prod + theorem inv_prod + theorem mph_prod Modified algebra/group.lean + theorem group_anti_hom.inv + theorem group_anti_hom.inv_is_group_anti_hom + theorem group_anti_hom.one + theorem group_hom.inv + theorem group_hom.one + def is_group_anti_hom + def is_group_hom 2018-01-02 04:28:01-05:00 37c3120 feat(set_theory/ordinal_notation): ordinal notations for ordinals < e0 This allows us to compute with small countable ordinals using trees of nats. ESTIMATED CHANGES Modified algebra/order.lean + theorem injective_of_strict_mono +/- theorem lt_iff_lt_of_strict_mono + theorem ordering.compares.eq_eq + theorem ordering.compares.eq_gt + theorem ordering.compares.eq_lt + theorem ordering.compares.inj + def ordering.compares + theorem ordering.compares_of_strict_mono Modified data/nat/cast.lean +/- theorem nat.cast_add_one Modified data/pnat.lean +/- def nat.succ_pnat +/- def nat.to_pnat' +/- def nat.to_pnat +/- theorem pnat.nat_coe_val + theorem pnat.ne_zero +/- theorem pnat.to_pnat'_coe +/- theorem pnat.to_pnat'_val Modified logic/basic.lean + theorem imp_or_distrib' + theorem imp_or_distrib Renamed theories/number_theory/dioph.lean to number_theory/dioph.lean Renamed theories/number_theory/pell.lean to number_theory/pell.lean Renamed data/cardinal.lean to set_theory/cardinal.lean Renamed data/ordinal.lean to set_theory/ordinal.lean + theorem ordinal.add_mul_limit + theorem ordinal.add_mul_limit_aux + theorem ordinal.add_mul_succ + theorem ordinal.bsup_type + theorem ordinal.cof_bsup_le + theorem ordinal.cof_bsup_le_lift + theorem ordinal.nat_cast_pos Added set_theory/ordinal_notation.lean + def nonote.cmp + theorem nonote.cmp_compares + def nonote.of_nat + theorem nonote.repr_add + theorem nonote.repr_mul + def nonote + theorem onote.NF.below_of_lt + theorem onote.NF.fst + theorem onote.NF.oadd + theorem onote.NF.snd' + theorem onote.NF.snd + theorem onote.NF.zero + def onote.NF + theorem onote.NF_below.fst + theorem onote.NF_below.lt + theorem onote.NF_below.mono + theorem onote.NF_below.oadd + theorem onote.NF_below.repr_lt + theorem onote.NF_below.snd + inductive onote.NF_below + theorem onote.NF_below_iff_top_below + theorem onote.NF_below_of_nat + theorem onote.NF_below_zero + theorem onote.NF_of_nat + def onote.add + theorem onote.add_NF + theorem onote.add_NF_below + def onote.cmp + theorem onote.cmp_compares + theorem onote.eq_of_cmp_eq + theorem onote.le_def + theorem onote.lt_def + def onote.mul + theorem onote.mul_NF + theorem onote.oadd_lt_oadd_1 + theorem onote.oadd_lt_oadd_2 + theorem onote.oadd_lt_oadd_3 + theorem onote.oadd_mul_NF_below + theorem onote.oadd_pos + def onote.of_nat + theorem onote.of_nat_one + theorem onote.omega_le_oadd + def onote.power + def onote.power_aux + theorem onote.repr_add + theorem onote.repr_inj + theorem onote.repr_mul + theorem onote.repr_of_nat + theorem onote.repr_one + def onote.scale + def onote.split' + def onote.split + def onote.sub + def onote.top_below + theorem onote.zero_def + theorem onote.zero_lt_one + inductive onote Renamed theories/set_theory.lean to set_theory/zfc.lean Modified tactic/interactive.lean 2017-12-31 16:53:38-05:00 1bc2ac7 feat(data/ordinal): is_normal, omin, power/log, CNF, indecomposables, addition and multiplication of infinite cardinals ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean Modified algebra/module.lean Modified algebra/order.lean + theorem lt_iff_lt_of_strict_mono Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/cardinal.lean + theorem cardinal.add_le_add + theorem cardinal.add_le_add_left + theorem cardinal.add_le_add_right + theorem cardinal.add_lt_omega - theorem cardinal.add_mono + theorem cardinal.le_add_left + theorem cardinal.le_add_right +/- theorem cardinal.le_iff_exists_add +/- theorem cardinal.le_zero + theorem cardinal.mul_le_mul + theorem cardinal.mul_le_mul_left + theorem cardinal.mul_le_mul_right + theorem cardinal.mul_lt_omega - theorem cardinal.mul_mono + theorem cardinal.omega_le + theorem cardinal.one_lt_omega + theorem cardinal.power_le_power_left + theorem cardinal.power_le_power_right - theorem cardinal.power_mono_left - theorem cardinal.power_mono_right +/- theorem cardinal.zero_le Modified data/equiv.lean Modified data/ordinal.lean + theorem cardinal.add_eq_max + theorem cardinal.add_eq_self + def cardinal.aleph'.order_iso + theorem cardinal.aleph'.order_iso_coe + def cardinal.aleph' + theorem cardinal.aleph'_aleph_idx + theorem cardinal.aleph'_is_normal + theorem cardinal.aleph'_le + theorem cardinal.aleph'_le_of_limit + theorem cardinal.aleph'_lt + theorem cardinal.aleph'_nat + theorem cardinal.aleph'_omega + theorem cardinal.aleph'_succ + theorem cardinal.aleph'_zero + def cardinal.aleph + theorem cardinal.aleph_idx_aleph' + theorem cardinal.aleph_is_limit + theorem cardinal.aleph_is_normal + theorem cardinal.aleph_le + theorem cardinal.aleph_lt + theorem cardinal.aleph_succ + theorem cardinal.aleph_zero + theorem cardinal.exists_aleph + theorem cardinal.mul_eq_max + theorem cardinal.mul_eq_self + theorem cardinal.omega_le_aleph' + theorem cardinal.omega_le_aleph + theorem cardinal.ord_card_le + def cof + def ordinal.CNF + theorem ordinal.CNF_aux + theorem ordinal.CNF_foldr + theorem ordinal.CNF_fst_le + theorem ordinal.CNF_fst_le_log + theorem ordinal.CNF_ne_zero + theorem ordinal.CNF_pairwise + theorem ordinal.CNF_pairwise_aux + theorem ordinal.CNF_rec_ne_zero + theorem ordinal.CNF_rec_zero + theorem ordinal.CNF_snd_lt + theorem ordinal.CNF_sorted + theorem ordinal.CNF_zero + theorem ordinal.add_absorp + theorem ordinal.add_absorp_iff +/- theorem ordinal.add_is_limit + theorem ordinal.add_is_normal +/- theorem ordinal.add_le_add_iff_left +/- theorem ordinal.add_le_add_left + theorem ordinal.add_left_cancel + theorem ordinal.add_lt_omega + theorem ordinal.add_omega + theorem ordinal.add_omega_power - def ordinal.aleph'.order_iso - theorem ordinal.aleph'.order_iso_coe - def ordinal.aleph' - theorem ordinal.aleph'_aleph_idx - theorem ordinal.aleph'_le - theorem ordinal.aleph'_lt - theorem ordinal.aleph'_succ - def ordinal.aleph - theorem ordinal.aleph_idx_aleph' - def ordinal.cof + theorem ordinal.cof_sup_le + theorem ordinal.cof_sup_le_lift + theorem ordinal.is_limit.nat_lt + theorem ordinal.is_limit.one_lt + theorem ordinal.is_limit.pos + theorem ordinal.is_normal.inj + theorem ordinal.is_normal.is_limit + theorem ordinal.is_normal.le_iff + theorem ordinal.is_normal.le_self + theorem ordinal.is_normal.le_set' + theorem ordinal.is_normal.le_set + theorem ordinal.is_normal.limit_lt + theorem ordinal.is_normal.lt_iff + theorem ordinal.is_normal.refl + theorem ordinal.is_normal.trans + def ordinal.is_normal +/- theorem ordinal.le_add_right + theorem ordinal.le_log + theorem ordinal.le_omin + theorem ordinal.le_power_self +/- theorem ordinal.le_sup + def ordinal.log + theorem ordinal.log_def + theorem ordinal.log_le_log + theorem ordinal.log_le_self + theorem ordinal.log_lt + theorem ordinal.log_not_one_lt + theorem ordinal.log_zero + theorem ordinal.lt_mul_of_limit + theorem ordinal.lt_power_of_limit + theorem ordinal.lt_power_succ_log + theorem ordinal.mul_add_one + theorem ordinal.mul_is_normal + theorem ordinal.mul_le_mul + theorem ordinal.mul_lt_omega + theorem ordinal.mul_ne_zero + theorem ordinal.mul_omega + theorem ordinal.mul_omega_power + theorem ordinal.mul_omega_power_power +/- theorem ordinal.mul_succ + theorem ordinal.nat_cast_div + theorem ordinal.nat_cast_eq_zero + theorem ordinal.nat_cast_mod + theorem ordinal.nat_cast_mul + theorem ordinal.nat_cast_ne_zero + theorem ordinal.nat_cast_power + theorem ordinal.nat_cast_sub + theorem ordinal.omega_ne_zero + theorem ordinal.omega_pos + def ordinal.omin + theorem ordinal.omin_le + theorem ordinal.omin_mem + theorem ordinal.one_CNF + theorem ordinal.one_le_iff_ne_zero + theorem ordinal.one_le_iff_pos + theorem ordinal.one_lt_omega + theorem ordinal.one_power - theorem ordinal.ord_card_le - theorem ordinal.pos_of_is_limit + theorem ordinal.power_add + theorem ordinal.power_is_limit + theorem ordinal.power_is_limit_left + theorem ordinal.power_is_normal +/- theorem ordinal.power_le_of_limit + theorem ordinal.power_le_power_iff_right + theorem ordinal.power_le_power_left + theorem ordinal.power_le_power_right +/- theorem ordinal.power_limit + theorem ordinal.power_log_le + theorem ordinal.power_lt_power_iff_right + theorem ordinal.power_lt_power_left_of_succ + theorem ordinal.power_mul + theorem ordinal.power_ne_zero + theorem ordinal.power_one + theorem ordinal.power_pos + theorem ordinal.power_right_inj +/- theorem ordinal.power_succ +/- theorem ordinal.power_zero + theorem ordinal.sub_eq_zero_iff_le + theorem ordinal.succ_eq_add_one +/- theorem ordinal.succ_le + theorem ordinal.succ_log_def +/- theorem ordinal.succ_ne_zero + theorem ordinal.succ_pos + theorem ordinal.zero_CNF + theorem ordinal.zero_lt_one + theorem ordinal.zero_power' + theorem ordinal.zero_power Modified data/prod.lean Modified data/quot.lean Modified data/set/basic.lean +/- theorem set.compl_image_set_of +/- theorem set.compl_subset_of_compl_subset +/- theorem set.diff_diff +/- theorem set.diff_empty +/- theorem set.diff_neq_empty +/- theorem set.diff_right_antimono +/- theorem set.diff_subset_diff +/- theorem set.empty_prod +/- theorem set.forall_range_iff +/- theorem set.image_inter +/- theorem set.image_inter_on +/- theorem set.image_preimage_eq_inter_rng +/- theorem set.image_singleton +/- theorem set.image_swap_prod +/- theorem set.insert_prod +/- theorem set.insert_subset +/- theorem set.insert_subset_insert +/- theorem set.insert_union +/- theorem set.inter_assoc +/- theorem set.inter_comm +/- theorem set.inter_left_comm + theorem set.inter_singleton_eq_empty +/- theorem set.mem_image_of_injective +/- theorem set.mem_of_mem_of_subset +/- theorem set.mem_prod +/- theorem set.mem_prod_eq +/- theorem set.mem_range +/- theorem set.mem_range_self +/- theorem set.ne_empty_iff_exists_mem +/- theorem set.not_eq_empty_iff_exists +/- theorem set.not_not_mem +/- theorem set.not_subset +/- theorem set.prod_empty +/- theorem set.prod_image_image_eq +/- theorem set.prod_insert +/- theorem set.prod_inter_prod +/- theorem set.prod_mk_mem_set_prod_eq +/- theorem set.prod_mono +/- theorem set.prod_neq_empty_iff +/- theorem set.prod_singleton_singleton +/- theorem set.quot_mk_image_univ_eq +/- theorem set.range_compose +/- theorem set.range_eq_image +/- theorem set.range_id +/- theorem set.range_iff_surjective +/- theorem set.set_compr_eq_eq_singleton +/- theorem set.set_of_mem_eq + theorem set.singleton_inter_eq_empty +/- theorem set.union_assoc +/- theorem set.union_comm +/- theorem set.union_insert - theorem set.union_insert_eq +/- theorem set.union_left_comm + theorem set.union_singleton +/- theorem set.univ_eq_true_false +/- theorem set.univ_prod_univ Modified data/set/lattice.lean Modified logic/embedding.lean + def set.embedding_of_subset Modified order/basic.lean + def decidable_linear_order_of_STO' + def linear_order_of_STO' + def partial_order_of_SO 2017-12-23 10:06:18-05:00 0abe086 feat(data/ordinal): mul, div, mod, dvd, sub, power ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean Modified data/cardinal.lean + theorem cardinal.le_zero + theorem cardinal.omega_ne_zero Modified data/equiv.lean + theorem equiv.prod_assoc_apply + theorem equiv.prod_sum_distrib_apply_left + theorem equiv.prod_sum_distrib_apply_right + theorem equiv.prod_unit_apply + theorem equiv.sum_prod_distrib_apply_left + theorem equiv.sum_prod_distrib_apply_right + theorem equiv.unit_prod_apply Modified data/ordinal.lean + theorem cardinal.add_one_of_omega_le + theorem cardinal.ord_is_limit + theorem ordinal.add_is_limit + theorem ordinal.add_le_of_limit + theorem ordinal.add_sub_cancel_of_le + theorem ordinal.card_mul + theorem ordinal.card_succ + theorem ordinal.div_add_mod + def ordinal.div_def + theorem ordinal.div_eq_zero_of_lt + theorem ordinal.div_le + theorem ordinal.div_le_of_le_mul + theorem ordinal.div_lt + theorem ordinal.div_mul_cancel + theorem ordinal.div_one + theorem ordinal.div_self + theorem ordinal.div_zero + theorem ordinal.dvd_def + theorem ordinal.dvd_mul + theorem ordinal.dvd_zero + theorem ordinal.le_div + theorem ordinal.le_of_mul_le_mul_left + theorem ordinal.le_succ_of_is_limit + theorem ordinal.le_zero + theorem ordinal.limit_le + theorem ordinal.limit_rec_on_limit + theorem ordinal.limit_rec_on_succ + theorem ordinal.limit_rec_on_zero + theorem ordinal.lt_div + theorem ordinal.lt_mul_div_add + theorem ordinal.lt_mul_succ_div + theorem ordinal.lt_succ + theorem ordinal.mod_def + theorem ordinal.mod_eq_of_lt + theorem ordinal.mod_lt + theorem ordinal.mod_one + theorem ordinal.mod_self + theorem ordinal.mod_zero + theorem ordinal.mul_add + theorem ordinal.mul_add_div + theorem ordinal.mul_assoc + theorem ordinal.mul_div_cancel + theorem ordinal.mul_div_le + theorem ordinal.mul_is_limit + theorem ordinal.mul_le_mul_iff_left + theorem ordinal.mul_le_mul_left + theorem ordinal.mul_le_mul_right + theorem ordinal.mul_le_of_limit + theorem ordinal.mul_left_inj + theorem ordinal.mul_lt_mul_iff_left + theorem ordinal.mul_lt_mul_of_pos_left + theorem ordinal.mul_lt_of_lt_div + theorem ordinal.mul_one + theorem ordinal.mul_pos + theorem ordinal.mul_succ + theorem ordinal.mul_zero + theorem ordinal.not_succ_is_limit + theorem ordinal.not_succ_of_is_limit + theorem ordinal.one_add_of_omega_le + theorem ordinal.one_add_omega + theorem ordinal.one_dvd + theorem ordinal.one_eq_lift_type_unit + theorem ordinal.one_eq_type_unit + theorem ordinal.one_mul + theorem ordinal.pos_iff_ne_zero + def ordinal.power + theorem ordinal.power_le_of_limit + theorem ordinal.power_limit + theorem ordinal.power_succ + theorem ordinal.power_zero + theorem ordinal.sub_le_self + theorem ordinal.sub_self + theorem ordinal.sub_zero + theorem ordinal.succ_lt_of_is_limit + theorem ordinal.type_add + theorem ordinal.type_eq_zero_iff_empty + theorem ordinal.type_mul + theorem ordinal.typein_apply + theorem ordinal.zero_div + theorem ordinal.zero_dvd + theorem ordinal.zero_eq_lift_type_empty + theorem ordinal.zero_eq_type_empty + theorem ordinal.zero_mod + theorem ordinal.zero_mul + theorem ordinal.zero_sub Modified data/prod.lean + theorem prod.lex_def Modified data/set/countable.lean Modified data/set/lattice.lean Modified data/sigma/basic.lean + theorem subtype.mk_eq_mk Modified data/sum.lean + theorem sum.inl_ne_inr + theorem sum.inr_ne_inl Modified order/basic.lean - def empty_relation.is_well_order Modified order/order_iso.lean + theorem order_embedding.nat_gt + theorem subrel.order_embedding_apply + theorem subrel_val 2017-12-21 06:51:34-05:00 5f4d890 feat(data/ordinal): omega is least limit ordinal ESTIMATED CHANGES Modified algebra/order.lean +/- theorem le_iff_le_iff_lt_iff_lt +/- theorem le_imp_le_iff_lt_imp_lt Modified data/cardinal.lean + theorem cardinal.le_lift_iff + theorem cardinal.lift_omega + theorem cardinal.lt_lift_iff + theorem cardinal.lt_omega_iff_finite + theorem cardinal.lt_omega_iff_fintype Modified data/ordinal.lean +/- theorem cardinal.card_ord + theorem cardinal.lift_ord +/- theorem cardinal.ord_le_ord +/- theorem cardinal.ord_lt_ord +/- theorem cardinal.ord_nat + theorem cardinal.ord_omega + theorem ordinal.card_eq_nat + theorem ordinal.card_le_nat + theorem ordinal.card_lt_nat + theorem ordinal.fintype_card + theorem ordinal.le_lift_iff + theorem ordinal.lift_down' +/- theorem ordinal.lift_down + theorem ordinal.lift_nat_cast + theorem ordinal.lift_type_fin + theorem ordinal.lt_lift_iff + theorem ordinal.lt_omega + theorem ordinal.nat_cast_inj + theorem ordinal.nat_cast_le + theorem ordinal.nat_cast_lt + theorem ordinal.nat_le_card + theorem ordinal.nat_lt_card + theorem ordinal.nat_lt_limit + theorem ordinal.nat_lt_omega + theorem ordinal.omega_is_limit + theorem ordinal.omega_le + theorem ordinal.omega_le_of_is_limit + theorem ordinal.type_fin Modified logic/basic.lean + theorem false_ne_true - theorem false_neq_true +/- theorem iff_of_eq Modified logic/schroeder_bernstein.lean +/- theorem function.embedding.injective_min Modified order/order_iso.lean + def fin.val.order_embedding + def fin_fin.order_embedding + def order_iso.to_order_embedding 2017-12-20 23:25:17-05:00 49a63b7 refactor(data/ordinal): rearrange files, more cofinality ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean Modified analysis/real.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/uniform_space.lean Modified data/cardinal.lean - theorem cardinal.embedding.antisymm - def cardinal.embedding.arrow_congr_left - def cardinal.embedding.arrow_congr_right - theorem cardinal.embedding.coe_fn_mk - theorem cardinal.embedding.inj' - theorem cardinal.embedding.injective_min - def cardinal.embedding.prod_congr - theorem cardinal.embedding.refl_apply - theorem cardinal.embedding.schroeder_bernstein - def cardinal.embedding.sum_congr - theorem cardinal.embedding.sum_congr_apply_inl - theorem cardinal.embedding.sum_congr_apply_inr - theorem cardinal.embedding.to_fun_eq_coe - theorem cardinal.embedding.total - theorem cardinal.embedding.trans_apply - structure cardinal.embedding + theorem cardinal.lift_down + theorem cardinal.lt_omega - theorem equiv.to_embedding_coe_fn Modified data/ordinal.lean - def empty_relation.is_well_order - def is_irrefl.swap - def is_irrefl_of_is_asymm - def is_strict_order.swap - def is_strict_total_order'.swap - def is_strict_weak_order_of_is_order_connected - def is_trans.swap - def is_trichotomous.swap - def order.preimage - def order_embedding.cod_restrict - theorem order_embedding.cod_restrict_apply - theorem order_embedding.coe_fn_mk - theorem order_embedding.coe_fn_to_embedding - theorem order_embedding.eq_of_to_fun_eq - theorem order_embedding.eq_preimage - theorem order_embedding.nat_lt - def order_embedding.of_monotone - theorem order_embedding.of_monotone_coe - theorem order_embedding.ord' - def order_embedding.preimage - theorem order_embedding.refl_apply - def order_embedding.rsymm - theorem order_embedding.trans_apply - theorem order_embedding.well_founded_iff_no_descending_seq - structure order_embedding - theorem order_iso.apply_inverse_apply - theorem order_iso.coe_coe_fn - theorem order_iso.coe_fn_mk - theorem order_iso.coe_fn_symm_mk - theorem order_iso.coe_fn_to_equiv - theorem order_iso.eq_of_to_fun_eq - theorem order_iso.inverse_apply_apply - def order_iso.of_surjective - theorem order_iso.of_surjective_coe - theorem order_iso.ord' - def order_iso.preimage - theorem order_iso.prod_lex_congr - theorem order_iso.refl_apply - theorem order_iso.sum_lex_congr - theorem order_iso.trans_apply - structure order_iso +/- theorem ordinal.card_omega + theorem ordinal.cof_add + theorem ordinal.cof_cof + theorem ordinal.cof_eq +/- theorem ordinal.cof_eq_one_iff_is_succ - theorem ordinal.exists_of_cof + theorem ordinal.lift_card + theorem ordinal.lift_is_limit + theorem ordinal.lift_is_succ + theorem ordinal.lift_pred + theorem ordinal.lift_succ + theorem ordinal.ord_cof_eq + theorem ordinal.type_ne_zero_iff_nonempty - def set_coe_embedding - def subrel - theorem well_founded.has_min - def well_founded.min - theorem well_founded.min_mem - theorem well_founded.not_lt_min Modified data/set/finite.lean +/- theorem set.finite_image Modified data/sigma/basic.lean +/- theorem psigma.mk.inj_iff + theorem subtype.coe_eta + theorem subtype.coe_mk Modified logic/basic.lean + theorem Exists.fst + theorem Exists.snd Added logic/embedding.lean + theorem equiv.to_embedding_coe_fn + def function.embedding.arrow_congr_left + def function.embedding.cod_restrict + theorem function.embedding.cod_restrict_apply + theorem function.embedding.coe_fn_mk + theorem function.embedding.inj' + def function.embedding.prod_congr + theorem function.embedding.refl_apply + def function.embedding.sum_congr + theorem function.embedding.sum_congr_apply_inl + theorem function.embedding.sum_congr_apply_inr + theorem function.embedding.to_fun_eq_coe + theorem function.embedding.trans_apply + structure function.embedding Modified logic/function.lean +/- def function.injective.decidable_eq +/- theorem function.injective.eq_iff +/- theorem function.injective_of_partial_inv +/- theorem function.injective_of_partial_inv_right +/- def function.is_partial_inv +/- theorem function.partial_inv_of_injective +/- theorem function.surj_inv_eq Added logic/schroeder_bernstein.lean + theorem function.embedding.antisymm + theorem function.embedding.injective_min + theorem function.embedding.schroeder_bernstein + theorem function.embedding.total Modified order/basic.lean + def empty_relation.is_well_order + def is_irrefl.swap + def is_irrefl_of_is_asymm + theorem is_order_connected.neg_trans + def is_strict_order.swap + def is_strict_total_order'.swap + def is_strict_weak_order_of_is_order_connected + def is_trans.swap + def is_trichotomous.swap + theorem well_founded.has_min + theorem well_founded.min_mem + theorem well_founded.not_lt_min Modified order/filter.lean Added order/order_iso.lean + def order.preimage + def order_embedding.cod_restrict + theorem order_embedding.cod_restrict_apply + theorem order_embedding.coe_fn_mk + theorem order_embedding.coe_fn_to_embedding + theorem order_embedding.eq_of_to_fun_eq + theorem order_embedding.eq_preimage + theorem order_embedding.nat_lt + def order_embedding.of_monotone + theorem order_embedding.of_monotone_coe + theorem order_embedding.ord' + def order_embedding.preimage + theorem order_embedding.refl_apply + def order_embedding.rsymm + theorem order_embedding.trans_apply + theorem order_embedding.well_founded_iff_no_descending_seq + structure order_embedding + theorem order_iso.apply_inverse_apply + theorem order_iso.coe_coe_fn + theorem order_iso.coe_fn_mk + theorem order_iso.coe_fn_symm_mk + theorem order_iso.coe_fn_to_equiv + theorem order_iso.eq_of_to_fun_eq + theorem order_iso.inverse_apply_apply + theorem order_iso.of_surjective_coe + theorem order_iso.ord' + def order_iso.preimage + theorem order_iso.prod_lex_congr + theorem order_iso.refl_apply + theorem order_iso.sum_lex_congr + theorem order_iso.trans_apply + structure order_iso + def set_coe_embedding + def subrel 2017-12-19 04:59:43-05:00 7726a92 feat(data/ordinal): sup, cofinality, subtraction ESTIMATED CHANGES Modified algebra/order.lean + theorem le_of_forall_le + theorem le_of_forall_lt Modified algebra/ordered_ring.lean + theorem zero_le_mul Modified analysis/ennreal.lean - theorem zero_le_mul Modified analysis/metric_space.lean Modified data/cardinal.lean +/- theorem cardinal.le_min + theorem cardinal.le_one_iff_subsingleton +/- theorem cardinal.lift_min +/- def cardinal.min +/- theorem cardinal.min_eq +/- theorem cardinal.min_le + theorem cardinal.nat_lt_omega - theorem cardinal.nat_lt_ω +/- theorem cardinal.ne_zero_iff_nonempty + def cardinal.omega +/- theorem cardinal.prop_eq_two + theorem cardinal.succ_zero + theorem cardinal.zero_lt_one - def cardinal.ω Modified data/fintype.lean + theorem fintype.card_of_subtype + theorem fintype.subtype_card Modified data/ordinal.lean + def cardinal.ord_eq_min - theorem cardinal.ord_eq_min + theorem cardinal.ord_nat + theorem order_iso.cof.aux + theorem order_iso.cof + theorem ordinal.add_le_add_right + theorem ordinal.add_lt_add_iff_left + theorem ordinal.add_sub_cancel + theorem ordinal.aleph'_succ +/- def ordinal.aleph + def ordinal.bsup + theorem ordinal.bsup_le + theorem ordinal.card_eq_zero + theorem ordinal.card_omega + def ordinal.cof + theorem ordinal.cof_eq_one_iff_is_succ + theorem ordinal.cof_eq_zero + theorem ordinal.cof_le_card + theorem ordinal.cof_succ + theorem ordinal.cof_type_le + theorem ordinal.cof_zero + theorem ordinal.exists_of_cof + def ordinal.is_limit +/- theorem ordinal.le_add_left + theorem ordinal.le_add_sub + theorem ordinal.le_bsup + theorem ordinal.le_cof_type +/- theorem ordinal.le_min + theorem ordinal.le_sup +/- theorem ordinal.le_total +/- theorem ordinal.lift_min + theorem ordinal.lift_omega - theorem ordinal.lift_ω + def ordinal.limit_rec_on + theorem ordinal.lt_cof_type + theorem ordinal.lt_of_add_lt_add_right + theorem ordinal.lt_pred + theorem ordinal.lt_sub +/- def ordinal.min +/- theorem ordinal.min_eq +/- theorem ordinal.min_le + def ordinal.omega + theorem ordinal.pos_of_is_limit + def ordinal.pred + theorem ordinal.pred_eq_iff_not_succ + theorem ordinal.pred_le + theorem ordinal.pred_le_self + theorem ordinal.pred_lt_iff_is_succ + theorem ordinal.pred_succ + def ordinal.sub + theorem ordinal.sub_le + theorem ordinal.succ_inj + theorem ordinal.succ_le + theorem ordinal.succ_le_succ + theorem ordinal.succ_lt_of_not_succ + theorem ordinal.succ_lt_succ + theorem ordinal.succ_nat_cast + theorem ordinal.succ_ne_zero + theorem ordinal.succ_pred_iff_is_succ + theorem ordinal.succ_zero + def ordinal.sup + theorem ordinal.sup_le + theorem ordinal.zero_or_succ_or_limit - def ordinal.ω Modified data/set/finite.lean + theorem set.card_fintype_insert' + theorem set.card_fintype_of_finset' + theorem set.card_fintype_of_finset + theorem set.card_insert + theorem set.card_singleton + theorem set.empty_card Modified order/basic.lean - theorem eq_of_le_of_forall_ge + theorem eq_of_le_of_forall_ge_of_dense - theorem eq_of_le_of_forall_le + theorem eq_of_le_of_forall_le_of_dense - theorem le_of_forall_ge + theorem le_of_forall_ge_of_dense - theorem le_of_forall_le + theorem le_of_forall_le_of_dense 2017-12-18 08:38:41-05:00 f6bbca7 feat(data/ordinal): universe lifts, alephs ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.card_sigma Modified algebra/group_power.lean + theorem nat.smul_eq_mul Modified algebra/module.lean Modified data/cardinal.lean + theorem cardinal.add_one_le_succ + theorem cardinal.fintype_card + theorem cardinal.le_mk_iff_exists_set + def cardinal.lift + theorem cardinal.lift_add + theorem cardinal.lift_id + theorem cardinal.lift_inj + theorem cardinal.lift_le + theorem cardinal.lift_lift + theorem cardinal.lift_lt + theorem cardinal.lift_min + theorem cardinal.lift_mk + theorem cardinal.lift_mk_eq + theorem cardinal.lift_mk_fin + theorem cardinal.lift_mk_le + theorem cardinal.lift_mul + theorem cardinal.lift_nat_cast + theorem cardinal.lift_one + theorem cardinal.lift_power + theorem cardinal.lift_umax + theorem cardinal.lift_zero + theorem cardinal.lt_succ_self + theorem cardinal.mk_def + theorem cardinal.mk_fin + theorem cardinal.nat_cast_inj + theorem cardinal.nat_cast_le + theorem cardinal.nat_cast_lt + theorem cardinal.nat_lt_ω + theorem cardinal.nat_succ + def cardinal.succ + theorem cardinal.succ_le +/- def cardinal.ω Modified data/finset.lean +/- theorem finset.bind_mono + theorem finset.card_image_of_inj_on + theorem finset.card_image_of_injective + theorem finset.card_product Modified data/fintype.lean + theorem finset.eq_univ_iff_forall +/- theorem finset.mem_univ +/- theorem finset.mem_univ_val + theorem fintype.card_bool + theorem fintype.card_congr + theorem fintype.card_empty + theorem fintype.card_eq + theorem fintype.card_fin + theorem fintype.card_prod + theorem fintype.card_sigma + theorem fintype.card_sum + theorem fintype.card_ulift + theorem fintype.card_unit +/- def fintype.of_equiv + theorem fintype.of_equiv_card + theorem fintype.univ_bool + theorem fintype.univ_empty + theorem fintype.univ_unit Modified data/list/basic.lean + theorem list.length_pmap + theorem list.nth_le_index_of Modified data/multiset.lean + theorem multiset.card_bind + theorem multiset.card_join + theorem multiset.card_map + theorem multiset.card_pmap + theorem multiset.card_product + theorem multiset.card_sigma Modified data/ordinal.lean + theorem cardinal.aleph_idx.init + def cardinal.aleph_idx.initial_seg + theorem cardinal.aleph_idx.initial_seg_coe + def cardinal.aleph_idx.order_iso + theorem cardinal.aleph_idx.order_iso_coe + def cardinal.aleph_idx + theorem cardinal.aleph_idx_le + theorem cardinal.aleph_idx_lt + theorem cardinal.card_ord + theorem cardinal.lt_ord + def cardinal.ord.order_embedding + theorem cardinal.ord.order_embedding_coe +/- theorem cardinal.ord_eq_min +/- theorem cardinal.ord_le +/- theorem cardinal.ord_le_ord + theorem cardinal.ord_le_type + theorem cardinal.ord_lt_ord + theorem cardinal.ord_zero + def order.cof - theorem order_iso.of_surjective_apply + theorem order_iso.of_surjective_coe + theorem order_iso.prod_lex_congr + theorem order_iso.sum_lex_congr + def ordinal.aleph'.order_iso + theorem ordinal.aleph'.order_iso_coe + def ordinal.aleph' + theorem ordinal.aleph'_aleph_idx + theorem ordinal.aleph'_le + theorem ordinal.aleph'_lt + def ordinal.aleph + theorem ordinal.aleph_idx_aleph' + theorem ordinal.card_nat + theorem ordinal.card_type + def ordinal.lift.initial_seg + theorem ordinal.lift.initial_seg_coe + def ordinal.lift.principal_seg + theorem ordinal.lift.principal_seg_coe + theorem ordinal.lift.principal_seg_top' + theorem ordinal.lift.principal_seg_top + def ordinal.lift + theorem ordinal.lift_add + theorem ordinal.lift_down + theorem ordinal.lift_id + theorem ordinal.lift_inj + theorem ordinal.lift_le + theorem ordinal.lift_lift + theorem ordinal.lift_lt + theorem ordinal.lift_min + theorem ordinal.lift_mul + theorem ordinal.lift_one + theorem ordinal.lift_type_eq + theorem ordinal.lift_type_le + theorem ordinal.lift_type_lt + theorem ordinal.lift_umax + theorem ordinal.lift_zero + theorem ordinal.lift_ω + theorem ordinal.lt_succ_self + theorem ordinal.ord_card_le + theorem ordinal.type_le' - theorem ordinal.type_le_of_order_embedding + def ordinal.typein.principal_seg + theorem ordinal.typein.principal_seg_coe + def ordinal.ω 2017-12-17 14:11:42-05:00 52330fa fix(data/ordinal): update to lean ESTIMATED CHANGES Modified data/ordinal.lean 2017-12-17 04:47:45-05:00 dba8d0e fix(data/ordinal): fix unsound proof here's hoping lean will notice that the last proof is not correct ESTIMATED CHANGES Modified data/ordinal.lean 2017-12-17 02:45:25-05:00 b19c222 feat(data/ordinal): ordinal collapse, ordinals ordering, ESTIMATED CHANGES Modified algebra/group_power.lean Modified data/cardinal.lean + theorem cardinal.embedding.sum_congr_apply_inl + theorem cardinal.embedding.sum_congr_apply_inr + def cardinal.mk Modified data/equiv.lean + def equiv.empty_prod + def equiv.empty_sum + theorem equiv.prod_congr_apply + def equiv.prod_empty - def equiv.prod_empty_left - def equiv.prod_empty_right + def equiv.prod_unit - def equiv.prod_unit_left - def equiv.prod_unit_right + theorem equiv.sum_assoc_apply_in1 + theorem equiv.sum_assoc_apply_in2 + theorem equiv.sum_assoc_apply_in3 + theorem equiv.sum_congr_apply_inl + theorem equiv.sum_congr_apply_inr + def equiv.sum_empty - def equiv.sum_empty_left - def equiv.sum_empty_right + def equiv.unit_prod Modified data/ordinal.lean + def cardinal.ord + theorem cardinal.ord_eq + theorem cardinal.ord_eq_min + theorem cardinal.ord_le + theorem cardinal.ord_le_ord + def initial_seg.le_add + theorem initial_seg.le_add_apply + def order_embedding.collapse + theorem order_embedding.collapse_F.lt + theorem order_embedding.collapse_F.not_lt + def order_embedding.collapse_F + theorem order_embedding.collapse_apply + def order_embedding.of_monotone - theorem order_embedding.of_monotone + theorem order_embedding.of_monotone_coe + def order_embedding.preimage + theorem ordinal.add_le_add_iff_left + theorem ordinal.add_le_add_left + theorem ordinal.add_succ + theorem ordinal.card_add + theorem ordinal.card_le_card + theorem ordinal.card_one + theorem ordinal.card_zero + theorem ordinal.le_add_left + theorem ordinal.le_add_right + theorem ordinal.le_min + theorem ordinal.le_total + def ordinal.min + theorem ordinal.min_eq + theorem ordinal.min_le + def ordinal.succ + theorem ordinal.type_le_of_order_embedding + theorem ordinal.zero_le - def prod.lex.is_well_order - def sum.lex.is_well_order + theorem well_founded.has_min + def well_founded.min + theorem well_founded.min_mem + theorem well_founded.not_lt_min Modified data/set/basic.lean +/- theorem set.mem_range + theorem set.mem_range_self Modified logic/basic.lean + def empty.elim - theorem empty.elim Modified order/complete_lattice.lean Modified tactic/alias.lean Modified tactic/interactive.lean 2017-12-15 22:45:11-05:00 95507bf chore(algebra/module): update to lean inout => out_param ESTIMATED CHANGES Modified algebra/module.lean 2017-12-15 13:40:09+01:00 01f1d23 refactor(style.md): copy naming conventions from the library_dev repository. ESTIMATED CHANGES Modified style.md 2017-12-14 21:29:14+01:00 7948318 feat(logic/basic): add rewrite rules for nonempty ESTIMATED CHANGES Modified logic/basic.lean + theorem classical.nonempty_pi + theorem nonempty.exists + theorem nonempty.forall + theorem nonempty_Prop + theorem nonempty_empty + theorem nonempty_plift + theorem nonempty_pprod + theorem nonempty_prod + theorem nonempty_psigma + theorem nonempty_psum + theorem nonempty_sigma + theorem nonempty_subtype + theorem nonempty_sum + theorem nonempty_ulift 2017-12-14 12:50:11+01:00 d27f7ac chore(style.md): rename and some cleanup ESTIMATED CHANGES Renamed library_style.md to style.md 2017-12-14 12:42:51+01:00 f8476fd feat(library_style): resurrecting Jeremy's library_style.org as md file ESTIMATED CHANGES Added library_style.md 2017-12-14 11:39:08+01:00 0f50ba7 feat(.travis.yml): export and run leanchecker This should detect multiple definitions with the same name as in #27. ESTIMATED CHANGES Modified .travis.yml 2017-12-14 11:13:01+01:00 86e494d fix(data/encodable): make decidable_eq_of_encodable priority 0 ESTIMATED CHANGES Modified data/encodable.lean 2017-12-14 11:08:41+01:00 2dbf07a chore(.): adapt to change `by_cases t with h` to `by_cases h : t` 746134d11ceec378a53ffd3b7ab8626fb291f3bd ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/measure_theory/measurable_space.lean Modified data/array/lemmas.lean Modified data/equiv.lean +/- theorem equiv.set.image_apply +/- theorem equiv.set.range_apply Modified data/finset.lean Modified data/finsupp.lean Modified data/hash_map.lean Modified data/list/basic.lean Modified data/list/perm.lean Modified data/list/sort.lean Modified data/multiset.lean Modified data/nat/basic.lean Modified data/nat/modeq.lean Modified data/nat/pairing.lean Modified data/nat/prime.lean Modified data/ordinal.lean Modified data/rat.lean 2017-12-13 17:34:22+01:00 ea19776 refactor(data/finsupp): generalize module construction for finsupp ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean - theorem lc.smul_apply - theorem lc.sum_smul_index Modified algebra/linear_algebra/multivariate_polynomial.lean Modified data/finsupp.lean +/- theorem finsupp.neg_apply +/- def finsupp.prod +/- theorem finsupp.prod_map_range_index +/- theorem finsupp.prod_neg_index +/- theorem finsupp.prod_single_index +/- theorem finsupp.prod_zero_index + theorem finsupp.smul_apply +/- theorem finsupp.sub_apply +/- def finsupp.sum + theorem finsupp.sum_smul_index + def finsupp.to_has_scalar + def finsupp.to_module 2017-12-13 16:52:33+01:00 b29ab1b feat(data/finsupp): add support_neg ESTIMATED CHANGES Modified data/finsupp.lean + theorem finsupp.support_neg 2017-12-13 13:09:54+01:00 a2d6148 feat(algebra/linear_algebra): add multivariate polynomials ESTIMATED CHANGES Added algebra/linear_algebra/multivariate_polynomial.lean + theorem finset.bind_singleton2 + theorem finset.le_sup + def finset.sup + theorem finset.sup_empty + theorem finset.sup_insert + theorem finset.sup_le + theorem finset.sup_mono + theorem finset.sup_mono_fun + theorem finset.sup_singleton + theorem finset.sup_union + theorem finsupp.single_induction_on + def mv_polynomial.C + theorem mv_polynomial.C_0 + theorem mv_polynomial.C_1 + theorem mv_polynomial.C_mul_monomial + def mv_polynomial.X + theorem mv_polynomial.X_pow_eq_single + def mv_polynomial.degree_of + def mv_polynomial.eval + theorem mv_polynomial.eval_C + theorem mv_polynomial.eval_X + theorem mv_polynomial.eval_add + theorem mv_polynomial.eval_monomial + theorem mv_polynomial.eval_mul + theorem mv_polynomial.eval_mul_monomial + theorem mv_polynomial.eval_zero + theorem mv_polynomial.induction_on + def mv_polynomial.monomial + theorem mv_polynomial.monomial_add_single + theorem mv_polynomial.monomial_eq + theorem mv_polynomial.monomial_single_add + def mv_polynomial.total_degree + def mv_polynomial.vars + theorem mv_polynomial.vars_0 + theorem mv_polynomial.vars_C + theorem mv_polynomial.vars_X + theorem mv_polynomial.vars_monomial + def mv_polynomial 2017-12-13 13:09:17+01:00 8369c7d feat(data/finsupp): big product over finsupp (big sum is now derived from it) ESTIMATED CHANGES Modified data/finsupp.lean + def finsupp.prod + theorem finsupp.prod_add_index + theorem finsupp.prod_comap_domain_index + theorem finsupp.prod_finset_sum_index + theorem finsupp.prod_map_domain_index + theorem finsupp.prod_map_range_index + theorem finsupp.prod_neg_index + theorem finsupp.prod_single_index + theorem finsupp.prod_subtype_domain_index + theorem finsupp.prod_sum_index + theorem finsupp.prod_zero_index - theorem finsupp.sum_add_index - theorem finsupp.sum_comap_domain_index - theorem finsupp.sum_finset_sum_index - theorem finsupp.sum_map_domain_index - theorem finsupp.sum_map_range_index - theorem finsupp.sum_neg_index - theorem finsupp.sum_single_index - theorem finsupp.sum_subtype_domain_index - theorem finsupp.sum_sum_index - theorem finsupp.sum_zero_index 2017-12-13 12:21:45+01:00 421c332 fix(algebra/big_operators): congruence rules need to provide equations for all rewritable positions ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.prod_congr Modified algebra/linear_algebra/basic.lean Modified analysis/topology/infinite_sum.lean Modified data/finsupp.lean 2017-12-13 12:21:45+01:00 81908b0 chore(algebra/linear_algebra): second isomorphism proof ESTIMATED CHANGES Modified algebra/linear_algebra/linear_map_module.lean 2017-12-13 04:31:56-05:00 a243710 feat(data/ordinal): well ordering theorem Note to self: this proof seems more cumbersome than it should be. I will see if the proof is easier if we bypass Zorn's lemma. ESTIMATED CHANGES Modified algebra/big_operators.lean Modified data/cardinal.lean + theorem cardinal.embedding.coe_fn_mk Modified data/hash_map.lean Modified data/list/basic.lean Modified data/ordinal.lean + theorem chain_ub + def empty_relation.is_well_order + def prod.lex.is_well_order + def sum.lex.is_well_order + theorem well_ordering_thm Modified data/set/basic.lean + theorem set.set_of_subset_set_of Modified data/sigma/basic.lean + theorem psigma.mk.inj_iff - theorem psigma.mk_eq_mk_iff + theorem sigma.exists + theorem sigma.forall + theorem sigma.mk.inj_iff - theorem sigma.mk_eq_mk_iff + theorem subtype.exists + theorem subtype.forall Added data/sum.lean + theorem sum.exists + theorem sum.forall + theorem sum.inl.inj_iff + theorem sum.inr.inj_iff + inductive sum.lex + theorem sum.lex_acc_inl + theorem sum.lex_acc_inr + theorem sum.lex_inl_inl + theorem sum.lex_inr_inl + theorem sum.lex_inr_inr + theorem sum.lex_wf + def sum.swap + theorem sum.swap_left_inverse + theorem sum.swap_right_inverse + theorem sum.swap_swap + theorem sum.swap_swap_eq Modified logic/basic.lean - theorem eq_iff_le_and_le - theorem set_of_subset_set_of - theorem sigma.exists - theorem sigma.forall - theorem sigma.mk.inj_iff - theorem subtype.exists - theorem subtype.forall Modified order/filter.lean Modified order/zorn.lean + theorem zorn.chain.directed +/- theorem zorn.chain.total + theorem zorn.chain.total_of_refl 2017-12-12 16:06:26-05:00 bd99ad7 feat(data/fin): fin.succ.inj ESTIMATED CHANGES Modified data/fin.lean 2017-12-11 23:34:49-05:00 d3149ba fix(*): update to lean ESTIMATED CHANGES Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/topological_space.lean Modified data/set/disjointed.lean Modified data/set/enumerate.lean Modified order/zorn.lean 2017-12-11 12:19:07-05:00 6b10d8d chore(tests/finish3): rename definition with same name ESTIMATED CHANGES Modified tests/finish3.lean + theorem foo': - theorem foo: 2017-12-11 12:19:07-05:00 be79f9f chore(data/cardinal): put embedding into cardinal namespace ESTIMATED CHANGES Modified data/cardinal.lean + theorem cardinal.embedding.antisymm + def cardinal.embedding.arrow_congr_left + def cardinal.embedding.arrow_congr_right + theorem cardinal.embedding.inj' + theorem cardinal.embedding.injective_min + def cardinal.embedding.prod_congr + theorem cardinal.embedding.refl_apply + theorem cardinal.embedding.schroeder_bernstein + def cardinal.embedding.sum_congr + theorem cardinal.embedding.to_fun_eq_coe + theorem cardinal.embedding.total + theorem cardinal.embedding.trans_apply + structure cardinal.embedding - theorem embedding.antisymm - def embedding.arrow_congr_left - def embedding.arrow_congr_right - theorem embedding.inj' - theorem embedding.injective_min - def embedding.prod_congr - theorem embedding.refl_apply - theorem embedding.schroeder_bernstein - def embedding.sum_congr - theorem embedding.to_fun_eq_coe - theorem embedding.total - theorem embedding.trans_apply - structure embedding Modified data/ordinal.lean 2017-12-11 14:09:28+01:00 ee7ede9 feat(algebra/linear_algebra): proof first and second isomorphism laws ESTIMATED CHANGES Modified algebra/linear_algebra/linear_map_module.lean + theorem classical.some_spec2 + theorem linear_map.is_submodule.add_left_iff + theorem linear_map.is_submodule.neg_iff + def linear_map.quot_ker_equiv_im + def linear_map.union_quotient_equiv_quotient_inter Modified algebra/linear_algebra/quotient_module.lean + theorem is_submodule.quotient.lift_mk + theorem is_submodule.quotient_rel_eq Modified algebra/linear_algebra/subtype_module.lean +/- theorem is_linear_map_subtype_mk +/- theorem sub_val 2017-12-11 14:09:28+01:00 01c3b8f feature(algebra/linear_algebra): define linear equivalence ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean + def equiv_of_is_basis + theorem linear_equiv.linear_inv + def linear_equiv.refl + def linear_equiv.symm + def linear_equiv.trans + structure linear_equiv + theorem linear_independent_singleton + theorem mem_span_insert + theorem set.diff_self 2017-12-11 14:09:28+01:00 85a1667 refactor(data/equiv): state refl, symm, and trans rules for equiv using projection. This gives more powerful rfl rules ESTIMATED CHANGES Modified data/equiv.lean + theorem function.left_inverse.comp + theorem function.right_inverse.comp 2017-12-11 05:07:46-05:00 03074f1 feat(data/ordinal): more ordinals ESTIMATED CHANGES Modified data/bool.lean Modified data/ordinal.lean + def initial_seg.cod_restrict + theorem initial_seg.cod_restrict_apply + theorem initial_seg.coe_coe_fn + def initial_seg.le_lt + theorem initial_seg.le_lt_apply + def initial_seg.lt_or_eq + theorem initial_seg.lt_or_eq_apply_left + theorem initial_seg.lt_or_eq_apply_right + def order_embedding.cod_restrict + theorem order_embedding.cod_restrict_apply + def ordinal.enum + theorem ordinal.enum_lt + theorem ordinal.enum_type + theorem ordinal.enum_typein + theorem ordinal.induction_on - def ordinal.le + def ordinal.type + theorem ordinal.type_def' + theorem ordinal.type_def + theorem ordinal.type_eq + theorem ordinal.type_le + theorem ordinal.type_lt + def ordinal.typein + theorem ordinal.typein_enum + theorem ordinal.typein_inj + theorem ordinal.typein_lt_type + theorem ordinal.typein_lt_typein + theorem ordinal.typein_surj + theorem ordinal.typein_top + theorem ordinal.wf + def principal_seg.cod_restrict + theorem principal_seg.cod_restrict_apply + theorem principal_seg.cod_restrict_top + theorem principal_seg.equiv_lt_top - def principal_seg.le_lt - theorem principal_seg.le_lt_apply + theorem principal_seg.lt_le_top + theorem principal_seg.lt_top + def principal_seg.of_element + theorem principal_seg.of_element_apply + theorem principal_seg.of_element_top + theorem principal_seg.top_eq + theorem principal_seg.trans_top +/- def set_coe_embedding + def subrel 2017-12-10 08:36:32-05:00 a758ffb feat(data/ordinal): ordinal numbers ESTIMATED CHANGES Modified data/cardinal.lean +/- theorem cardinal.add_mono +/- theorem cardinal.le_iff_exists_add +/- theorem cardinal.mul_mono +/- theorem cardinal.mul_power +/- theorem cardinal.one_power +/- theorem cardinal.power_mono_left +/- theorem cardinal.power_mono_right +/- theorem cardinal.power_mul +/- theorem cardinal.power_sum +/- theorem cardinal.power_zero +/- theorem cardinal.prop_eq_two +/- theorem cardinal.zero_le +/- theorem cardinal.zero_power +/- theorem embedding.antisymm + theorem embedding.inj' + theorem embedding.refl_apply +/- theorem embedding.schroeder_bernstein + theorem embedding.to_fun_eq_coe +/- theorem embedding.total + theorem embedding.trans_apply - theorem equiv.of_bijective + theorem equiv.to_embedding_coe_fn Modified data/equiv.lean + theorem equiv.cast_apply - theorem equiv.comp_apply - def equiv.id - theorem equiv.id_apply + theorem equiv.of_bijective_to_fun + theorem equiv.refl_apply + theorem equiv.set.image_apply + theorem equiv.set.range_apply +/- theorem equiv.swap_self +/- theorem equiv.swap_swap + theorem equiv.trans_apply Modified data/nat/basic.lean + def nat.foldl + def nat.foldr Added data/ordinal.lean + structure Well_order + theorem initial_seg.antisymm.aux + def initial_seg.antisymm + theorem initial_seg.antisymm_symm + theorem initial_seg.antisymm_to_fun + theorem initial_seg.coe_fn_mk + theorem initial_seg.coe_fn_to_order_embedding + theorem initial_seg.eq_or_principal + theorem initial_seg.init' + theorem initial_seg.init_iff + def initial_seg.of_iso + theorem initial_seg.of_iso_apply + theorem initial_seg.refl_apply + theorem initial_seg.trans_apply + def initial_seg.unique_of_extensional + structure initial_seg + def is_irrefl.swap + def is_irrefl_of_is_asymm + def is_strict_order.swap + def is_strict_total_order'.swap + def is_strict_weak_order_of_is_order_connected + def is_trans.swap + def is_trichotomous.swap + def order.preimage + theorem order_embedding.coe_fn_mk + theorem order_embedding.coe_fn_to_embedding + theorem order_embedding.eq_of_to_fun_eq + theorem order_embedding.eq_preimage + theorem order_embedding.nat_lt + theorem order_embedding.of_monotone + theorem order_embedding.ord' + theorem order_embedding.refl_apply + def order_embedding.rsymm + theorem order_embedding.trans_apply + theorem order_embedding.well_founded_iff_no_descending_seq + structure order_embedding + theorem order_iso.apply_inverse_apply + theorem order_iso.coe_coe_fn + theorem order_iso.coe_fn_mk + theorem order_iso.coe_fn_symm_mk + theorem order_iso.coe_fn_to_equiv + theorem order_iso.eq_of_to_fun_eq + theorem order_iso.inverse_apply_apply + def order_iso.of_surjective + theorem order_iso.of_surjective_apply + theorem order_iso.ord' + def order_iso.preimage + theorem order_iso.refl_apply + theorem order_iso.trans_apply + structure order_iso + def ordinal.card + def ordinal.le + def ordinal.lt + def ordinal + theorem principal_seg.coe_coe_fn' + theorem principal_seg.coe_coe_fn + theorem principal_seg.coe_fn_mk + theorem principal_seg.coe_fn_to_order_embedding + theorem principal_seg.down' + def principal_seg.equiv_lt + theorem principal_seg.equiv_lt_apply + theorem principal_seg.init + theorem principal_seg.init_iff + theorem principal_seg.irrefl + def principal_seg.le_lt + theorem principal_seg.le_lt_apply + def principal_seg.lt_le + theorem principal_seg.lt_le_apply + theorem principal_seg.trans_apply + structure principal_seg + def set_coe_embedding Modified data/set/basic.lean + theorem set.set_coe_cast 2017-12-09 22:14:32-05:00 aef5c88 feat(algebra/group_power): more gpow lemmas ESTIMATED CHANGES Modified algebra/group_power.lean +/- theorem add_monoid.neg_smul + theorem div_pow + theorem division_ring.inv_pow +/- def gpow + theorem gpow_bit0 + theorem gpow_bit1 + theorem gpow_coe_nat + theorem gpow_mul + theorem gpow_neg + theorem gpow_neg_one + theorem gpow_one + theorem gpow_zero + theorem gsmul_bit1 + theorem gsmul_mul + theorem gsmul_neg + theorem gsmul_neg_one + theorem gsmul_one + theorem inv_gpow +/- theorem inv_pow + theorem one_div_pow + theorem one_gpow - theorem pow_inv +/- theorem pow_ne_zero Modified algebra/ring.lean Modified analysis/limits.lean Modified data/int/basic.lean + theorem int.coe_nat_mul_neg_succ + theorem int.neg_succ_mul_coe_nat + theorem int.neg_succ_mul_neg_succ 2017-12-08 17:29:17+01:00 8cfcef0 feat(algebra/linear_algebra): add product construction for modules ESTIMATED CHANGES Added algebra/linear_algebra/prod_module.lean + theorem prod.fst_inl + theorem prod.fst_inr + theorem prod.fst_inv + theorem prod.fst_mul + theorem prod.fst_one + theorem prod.fst_prod + theorem prod.injective_inl + theorem prod.injective_inr + def prod.inl + theorem prod.inl_eq_inl + theorem prod.inl_eq_inr + def prod.inr + theorem prod.inr_eq_inl + theorem prod.inr_eq_inr + theorem prod.is_basis_inl_union_inr + theorem prod.is_linear_map_prod_fst + theorem prod.is_linear_map_prod_inl + theorem prod.is_linear_map_prod_inr + theorem prod.is_linear_map_prod_mk + theorem prod.is_linear_map_prod_snd + theorem prod.linear_independent_inl_union_inr + theorem prod.snd_inl + theorem prod.snd_inr + theorem prod.snd_inv + theorem prod.snd_mul + theorem prod.snd_one + theorem prod.snd_prod + theorem prod.span_inl_union_inr + theorem prod.span_prod 2017-12-08 17:29:17+01:00 8fab107 refactor(algebra/module): split of type constructions and move quotient, subtype and linear_map to their own theories in algebra/linear_algebra ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/linear_algebra/basic.lean + theorem linear_independent_union Added algebra/linear_algebra/linear_map_module.lean + theorem linear_map.add_app + theorem linear_map.ext + def linear_map.im + theorem linear_map.inj_of_trivial_ker + theorem linear_map.is_linear_map_coe + def linear_map.ker + theorem linear_map.ker_of_map_eq_map + theorem linear_map.map_add + theorem linear_map.map_neg + theorem linear_map.map_smul + theorem linear_map.map_sub + theorem linear_map.map_zero + theorem linear_map.mem_im + theorem linear_map.mem_ker + theorem linear_map.neg_app + theorem linear_map.smul_app + theorem linear_map.sub_ker + theorem linear_map.zero_app + def linear_map + def module.endomorphism_ring + def module.general_linear_group + theorem module.mul_app + theorem module.one_app Added algebra/linear_algebra/quotient_module.lean + theorem is_submodule.is_linear_map_quotient_lift + theorem is_submodule.is_linear_map_quotient_mk + theorem is_submodule.quotient.injective_lift + def is_submodule.quotient.lift + def is_submodule.quotient + def is_submodule.quotient_rel Added algebra/linear_algebra/subtype_module.lean + theorem add_val + theorem is_linear_map_subtype_mk + theorem is_linear_map_subtype_val + theorem neg_val + theorem smul_val + theorem sub_val + theorem zero_val Modified algebra/module.lean - theorem is_submodule.add_val - theorem is_submodule.is_linear_map_quotient_lift - theorem is_submodule.is_linear_map_quotient_mk - theorem is_submodule.is_linear_map_subtype_mk - theorem is_submodule.is_linear_map_subtype_val - theorem is_submodule.neg_val - theorem is_submodule.quotient.injective_lift - def is_submodule.quotient.lift - def is_submodule.quotient - def is_submodule.quotient_rel - theorem is_submodule.smul_val - theorem is_submodule.sub_val - theorem is_submodule.zero_val - theorem linear_map.add_app - theorem linear_map.ext - def linear_map.im - theorem linear_map.inj_of_trivial_ker - theorem linear_map.is_linear_map_coe - def linear_map.ker - theorem linear_map.ker_of_map_eq_map - theorem linear_map.map_add - theorem linear_map.map_neg - theorem linear_map.map_smul - theorem linear_map.map_sub - theorem linear_map.map_zero - theorem linear_map.mem_im - theorem linear_map.mem_ker - theorem linear_map.neg_app - theorem linear_map.smul_app - theorem linear_map.sub_ker - theorem linear_map.zero_app - def linear_map - def module.endomorphism_ring - def module.general_linear_group - theorem module.mul_app - theorem module.one_app Modified data/finsupp.lean + def finsupp.filter + theorem finsupp.filter_apply_neg + theorem finsupp.filter_apply_pos + theorem finsupp.filter_pos_add_filter_neg + theorem finsupp.support_filter + theorem finsupp.support_subset_iff Modified data/set/basic.lean + theorem set.mem_image_of_injective 2017-12-08 17:29:17+01:00 fccc5d3 refactor(algebra/linear_algebra): move zero_not_mem_of_linear_independent from vector_space to module (zero_ne_one should be a typeclass in Prop not in Type) ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean + theorem zero_ne_one_or_forall_eq_0 +/- theorem zero_not_mem_of_linear_independent 2017-12-08 08:32:13-05:00 bd013e8 feat(data/dardinal): wellordering of cardinals ESTIMATED CHANGES Modified algebra/linear_algebra/basic.lean +/- theorem exists_is_basis + theorem exists_subset_is_basis Modified analysis/measure_theory/measurable_space.lean Modified analysis/metric_space.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean Modified data/bool.lean + theorem bool.to_bool_coe Modified data/cardinal.lean + theorem cardinal.cantor + theorem cardinal.le_iff_exists_add + theorem cardinal.le_min + theorem cardinal.le_sum + theorem cardinal.le_sup + def cardinal.min + theorem cardinal.min_eq + theorem cardinal.min_le +/- theorem cardinal.mul_power + theorem cardinal.ne_zero_iff_nonempty +/- theorem cardinal.one_power +/- theorem cardinal.power_mono_left +/- theorem cardinal.power_mono_right +/- theorem cardinal.power_mul +/- theorem cardinal.power_sum +/- theorem cardinal.power_zero + theorem cardinal.prop_eq_two + def cardinal.sum + def cardinal.sup + theorem cardinal.sup_le + theorem cardinal.zero_le +/- theorem cardinal.zero_power - theorem embedding.exists_injective_or_surjective + theorem embedding.injective_min - def embedding.option.Sup - theorem embedding.option.Sup_le - theorem embedding.option.eq_of_le_some - inductive embedding.option.le - theorem embedding.option.le_Sup - theorem embedding.option.mem_of_Sup_eq_some - def embedding.option.strict_partial_order - def embedding.pfun.partial_order - def embedding.pfun +/- theorem embedding.total Modified data/equiv.lean Modified data/finset.lean +/- theorem finset.case_strong_induction_on + theorem finset.le_iff_subset + theorem finset.lt_iff_ssubset +/- theorem finset.strong_induction_on + theorem finset.val_lt_iff Modified data/multiset.lean + theorem multiset.case_strong_induction_on + theorem multiset.strong_induction_on Modified data/set/basic.lean + theorem set.empty_prod + theorem set.eq_empty_iff_forall_not_mem - theorem set.eq_empty_of_forall_not_mem + theorem set.image_swap_eq_preimage_swap + theorem set.image_swap_prod + theorem set.insert_prod +/- theorem set.mem_insert_iff + theorem set.mem_prod + theorem set.mem_prod_eq + theorem set.prod_empty + theorem set.prod_image_image_eq + theorem set.prod_insert + theorem set.prod_inter_prod + theorem set.prod_mk_mem_set_prod_eq + theorem set.prod_mono + theorem set.prod_neq_empty_iff + theorem set.prod_preimage_eq + theorem set.prod_singleton_singleton + theorem set.univ_prod_univ Modified data/set/default.lean Modified data/set/disjointed.lean Modified data/set/enumerate.lean Modified data/set/finite.lean Modified data/set/intervals.lean Modified data/set/lattice.lean - theorem bind_def - theorem fmap_eq_image - theorem image_Union - theorem image_congr - theorem mem_seq_iff - theorem monotone_preimage - theorem preimage_Union - theorem preimage_sUnion + theorem set.bind_def + theorem set.fmap_eq_image + theorem set.image_Union + theorem set.image_congr + theorem set.mem_seq_iff + theorem set.monotone_preimage + theorem set.monotone_prod + theorem set.preimage_Union + theorem set.preimage_sUnion + theorem set.subtype_val_image + theorem set.univ_subtype - theorem subtype_val_image - theorem univ_subtype Deleted data/set/prod.lean - theorem set.empty_prod - theorem set.image_swap_eq_preimage_swap - theorem set.image_swap_prod - theorem set.insert_prod - theorem set.mem_prod - theorem set.mem_prod_eq - theorem set.monotone_prod - theorem set.prod_empty - theorem set.prod_image_image_eq - theorem set.prod_insert - theorem set.prod_inter_prod - theorem set.prod_mk_mem_set_prod_eq - theorem set.prod_mono - theorem set.prod_neq_empty_iff - theorem set.prod_preimage_eq - theorem set.prod_singleton_singleton - theorem set.univ_prod_univ Modified logic/basic.lean + theorem empty.elim Modified logic/function.lean + theorem function.cantor_injective + theorem function.cantor_surjective Modified order/zorn.lean + theorem zorn.chain.total Modified theories/number_theory/dioph.lean - def arity - def curry - def uncurry + theorem vector3.append_add - def vector3.append_add + theorem vector3.append_cons - def vector3.append_cons + theorem vector3.append_left - def vector3.append_left + theorem vector3.append_nil - def vector3.append_nil + theorem vector3.cons_fs - def vector3.cons_fs + theorem vector3.cons_fz - def vector3.cons_fz + theorem vector3.insert_fs - def vector3.insert_fs 2017-12-08 10:51:42+01:00 b547de0 chore(data/finsupp): replace { n with ... } syntax with { ..., .. n } (the former is deprecated) ESTIMATED CHANGES Modified data/finsupp.lean 2017-12-08 10:48:54+01:00 e1e80b4 chore(.): replace ginduction by induction; changed in lean revision 49e7a642c35e83ed16cbc573deef5bd3b6dfc627 ESTIMATED CHANGES Modified data/hash_map.lean Modified data/int/basic.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean Modified theories/set_theory.lean 2017-12-07 17:25:25+01:00 c32d01d feat(algebra/linear_algebra): add basic theory on linear algebra ESTIMATED CHANGES Added algebra/linear_algebra/basic.lean + theorem constr_add + theorem constr_basis + theorem constr_congr + theorem constr_eq + theorem constr_im_eq_span + theorem constr_mem_span + theorem constr_neg + theorem constr_smul + theorem constr_sub + theorem constr_zero + theorem eq_of_linear_independent_of_span + theorem exists_finite_card_le_of_finite_of_linear_independent_of_span + theorem exists_is_basis + theorem exists_left_inverse_linear_map_of_injective + theorem exists_linear_independent + theorem exists_of_linear_independent_of_finite_span + theorem exists_right_inverse_linear_map_of_surjective + theorem finset.smul_sum + theorem finsupp.smul_sum + def is_basis.constr + theorem is_basis.eq_linear_map + theorem is_basis.map_constr + theorem is_basis.map_repr + def is_basis + theorem is_linear_map.finsupp_sum + theorem is_submodule_range_smul + theorem is_submodule_span + theorem lc.is_linear_map_sum + theorem lc.smul_apply + theorem lc.sum_smul_index + def lc + theorem linear_eq_on + theorem linear_independent.eq_0_of_span + theorem linear_independent.image + theorem linear_independent.inj_span_iff_inj + theorem linear_independent.insert + theorem linear_independent.mono + theorem linear_independent.of_image + def linear_independent.repr + theorem linear_independent.unique + def linear_independent + theorem linear_independent_Union_of_directed + theorem linear_independent_bUnion_of_directed + theorem linear_independent_empty + theorem linear_independent_iff_not_mem_span + theorem linear_map.linear_independent_image_iff + theorem mem_span_insert_exchange + def module_equiv_lc + theorem repr_add + theorem repr_eq + theorem repr_eq_repr_of_subset + theorem repr_eq_single + theorem repr_eq_zero + theorem repr_finsupp_sum + theorem repr_neg + theorem repr_not_span + theorem repr_smul + theorem repr_spec + theorem repr_sub + theorem repr_sum + theorem repr_sum_eq + theorem repr_support + theorem repr_zero + def span + theorem span_empty + theorem span_eq + theorem span_eq_of_is_submodule + theorem span_image_of_linear_map + theorem span_insert + theorem span_insert_eq_span + theorem span_minimal + theorem span_mono + theorem span_singleton + theorem span_span + theorem span_union + theorem subset_span + theorem zero_not_mem_of_linear_independent Added algebra/linear_algebra/default.lean 2017-12-07 17:24:30+01:00 f09abb1 feat(data/finsupp): add type of functions with finite support ESTIMATED CHANGES Added data/finsupp.lean + theorem finsupp.add_apply + def finsupp.comap_domain + theorem finsupp.comap_domain_add + theorem finsupp.comap_domain_apply + theorem finsupp.comap_domain_finsupp_sum + theorem finsupp.comap_domain_neg + theorem finsupp.comap_domain_sub + theorem finsupp.comap_domain_sum + theorem finsupp.comap_domain_zero + theorem finsupp.ext + theorem finsupp.finite_supp + def finsupp.map_domain + theorem finsupp.map_domain_add + theorem finsupp.map_domain_comp + theorem finsupp.map_domain_congr + theorem finsupp.map_domain_finset_sum + theorem finsupp.map_domain_id + theorem finsupp.map_domain_single + theorem finsupp.map_domain_sum + theorem finsupp.map_domain_support + theorem finsupp.map_domain_zero + def finsupp.map_range + theorem finsupp.map_range_apply + theorem finsupp.mem_support_iff + theorem finsupp.mul_def + theorem finsupp.neg_apply + theorem finsupp.one_def + theorem finsupp.prod_single + def finsupp.single + theorem finsupp.single_add + theorem finsupp.single_apply + theorem finsupp.single_eq_of_ne + theorem finsupp.single_eq_same + theorem finsupp.single_mul_single + theorem finsupp.single_zero + theorem finsupp.sub_apply + def finsupp.subtype_domain + theorem finsupp.subtype_domain_add + theorem finsupp.subtype_domain_apply + theorem finsupp.subtype_domain_finsupp_sum + theorem finsupp.subtype_domain_neg + theorem finsupp.subtype_domain_sub + theorem finsupp.subtype_domain_sum + theorem finsupp.subtype_domain_zero + def finsupp.sum + theorem finsupp.sum_add + theorem finsupp.sum_add_index + theorem finsupp.sum_apply + theorem finsupp.sum_comap_domain_index + theorem finsupp.sum_finset_sum_index + theorem finsupp.sum_map_domain_index + theorem finsupp.sum_map_range_index + theorem finsupp.sum_neg + theorem finsupp.sum_neg_index + theorem finsupp.sum_single + theorem finsupp.sum_single_index + theorem finsupp.sum_sub_index + theorem finsupp.sum_subtype_domain_index + theorem finsupp.sum_sum_index + theorem finsupp.sum_zero + theorem finsupp.sum_zero_index + def finsupp.support + theorem finsupp.support_add + theorem finsupp.support_map_range + theorem finsupp.support_single_ne_zero + theorem finsupp.support_single_subset + theorem finsupp.support_sum + theorem finsupp.support_zero + theorem finsupp.support_zip_with + def finsupp.to_comm_ring + def finsupp.to_comm_semiring + def finsupp.to_ring + def finsupp.to_semiring + theorem finsupp.zero_apply + def finsupp.zip_with + theorem finsupp.zip_with_apply + def finsupp 2017-12-07 17:22:37+01:00 fcf0bfa feat(data/set/finite): add finite_to_set, finset.coe_to_finset ESTIMATED CHANGES Modified data/set/finite.lean +/- theorem finset.coe_filter + theorem finset.coe_to_finset + theorem finset.finite_to_set 2017-12-07 17:18:54+01:00 5e42425 fix(algebra/module): fix type universes in is_linear_map.sum ESTIMATED CHANGES Modified algebra/module.lean +/- theorem is_linear_map.sum 2017-12-07 14:42:09+01:00 0995ac1 feat(algebra/module): the inverse of a linear map is linear ESTIMATED CHANGES Modified algebra/module.lean + theorem is_linear_map.inverse + theorem is_submodule.smul_ne_0 2017-12-07 14:04:24+01:00 645bf60 core(algebra/module): generalize map_smul_left; add is_submodule.range ESTIMATED CHANGES Modified algebra/module.lean +/- theorem is_linear_map.map_smul_left 2017-12-07 00:39:32-05:00 5f642d8 refactor(*): remove local simp AC lemmas Using local simp lemmas everywhere for mul_assoc and friends defeats the purpose of the change in core. Now theorems are proven with only the AC lemmas actually used in the proof. ESTIMATED CHANGES Modified algebra/field.lean + theorem div_eq_inv_mul Modified algebra/functions.lean + theorem le_max_left_iff_true + theorem le_max_right_iff_true + theorem max.left_comm + theorem max.right_comm + theorem min_right_comm Modified algebra/group_power.lean Modified algebra/order.lean +/- theorem le_of_not_lt + theorem le_or_lt + theorem lt_or_le +/- theorem not_le +/- theorem not_lt Modified analysis/ennreal.lean + theorem ennreal.le_def +/- theorem ennreal.of_real_lt_of_real_iff_cases Modified analysis/limits.lean Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measurable_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/real.lean - theorem eq_0_of_nonneg_of_neg_nonneg + theorem nonneg_antisymm +/- theorem uniform_embedding_mul_rat Modified analysis/topology/continuity.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean +/- theorem is_closed_iff_nhds + theorem is_open_iff_forall_mem_open +/- theorem is_open_iff_mem_nhds +/- theorem is_open_iff_nhds + theorem mem_interior + theorem subset_interior_iff_open Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/analysis/filter.lean Modified data/analysis/topology.lean Modified data/cardinal.lean Modified data/finset.lean +/- theorem finset.insert_eq +/- theorem finset.insert_subset +/- theorem finset.insert_union +/- theorem finset.inter_assoc +/- theorem finset.inter_comm +/- theorem finset.inter_left_comm +/- theorem finset.inter_right_comm +/- theorem finset.union_assoc +/- theorem finset.union_comm +/- theorem finset.union_insert +/- theorem finset.union_left_comm Modified data/multiset.lean Modified data/nat/sqrt.lean Modified data/num/lemmas.lean Modified data/rat.lean Modified data/set/countable.lean Modified data/set/disjointed.lean Modified data/set/intervals.lean Modified logic/function.lean Modified order/basic.lean - theorem le_max_left_iff_true - theorem le_max_right_iff_true - theorem max.left_comm - theorem max.right_comm - theorem min_right_comm - theorem not_le_iff - theorem not_lt_iff Modified order/filter.lean Modified order/zorn.lean Modified tactic/converter/interactive.lean Modified theories/number_theory/dioph.lean Modified theories/number_theory/pell.lean 2017-12-06 17:16:14+01:00 a3a2faa feat(algebra/big_operators): add renameing rules under bijection ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_attach + theorem finset.prod_bij + theorem finset.prod_bij_ne_one Modified data/finset.lean + theorem finset.attach_image_val 2017-12-06 16:48:38+01:00 e5c4eb1 feat(data/set): add lift converting finset to set ESTIMATED CHANGES Modified data/set/default.lean Modified data/set/finite.lean + theorem finset.coe_bind + theorem finset.coe_empty + theorem finset.coe_eq_coe + theorem finset.coe_erase + theorem finset.coe_filter + theorem finset.coe_image + theorem finset.coe_insert + theorem finset.coe_inter + theorem finset.coe_sdiff + theorem finset.coe_singleton + theorem finset.coe_subseteq_coe + theorem finset.coe_union + theorem finset.mem_coe + def finset.to_set 2017-12-06 16:42:20+01:00 7f9dd51 feat(data/finset): add strong induction rules for finset ESTIMATED CHANGES Modified data/finset.lean + theorem finset.card_eq_succ + theorem finset.card_le_of_subset + theorem finset.card_lt_card + theorem finset.case_strong_induction_on + theorem finset.eq_of_subset_of_card_le + theorem finset.strong_induction_on 2017-12-06 16:21:41+01:00 81e53e8 feat(data/finset): add ssubset ESTIMATED CHANGES Modified data/finset.lean + theorem finset.erase_ssubset + theorem finset.ssubset_iff + theorem finset.ssubset_insert 2017-12-06 13:30:50+01:00 f9b39eb feature(.): add various theorems ESTIMATED CHANGES Modified data/finset.lean + theorem finset.bind_mono + theorem finset.bind_singleton Modified data/prod.lean + theorem prod.eq_iff_fst_eq_snd_eq + theorem prod.exists + theorem prod.forall +/- theorem prod.fst_swap +/- theorem prod.mk.eta + theorem prod.mk.inj_iff +/- theorem prod.snd_swap +/- def prod.swap +/- theorem prod.swap_left_inverse +/- theorem prod.swap_prod_mk +/- theorem prod.swap_right_inverse +/- theorem prod.swap_swap +/- theorem prod.swap_swap_eq Modified data/set/basic.lean + theorem set.diff_diff + theorem set.insert_sdiff + theorem set.insert_subset + theorem set.insert_subset_insert + theorem set.insert_union +/- theorem set.nonempty_of_inter_nonempty_left +/- theorem set.nonempty_of_inter_nonempty_right +/- theorem set.not_not_mem + theorem set.not_subset +/- theorem set.ssubset_def + theorem set.union_insert Modified data/set/finite.lean + theorem set.finite.dinduction_on + theorem set.to_finset_insert Modified logic/basic.lean - theorem prod.exists - theorem prod.forall - theorem prod.mk.inj_iff 2017-12-06 06:02:26-05:00 fd803b6 chore(.): adapt to change bc89ebc19c93392419b7bab8b68271db12855dc5 (improve how induction hypotheses are named) ESTIMATED CHANGES Modified data/analysis/filter.lean Modified data/list/basic.lean Modified data/list/perm.lean Modified data/multiset.lean Modified data/num/lemmas.lean Modified tests/finish3.lean 2017-12-05 15:23:53-05:00 c43e013 fix(theories/number_theory/pell,*): fix broken proofs, less simp AC ESTIMATED CHANGES Modified algebra/module.lean +/- theorem is_submodule.add_val +/- theorem is_submodule.neg_val Modified algebra/ring.lean Modified data/bool.lean + theorem bool.coe_to_bool - theorem bool.to_bool_bool Modified data/hash_map.lean Modified data/list/basic.lean Modified data/nat/basic.lean Modified data/nat/gcd.lean Modified data/nat/sqrt.lean Modified data/num/lemmas.lean Modified data/seq/parallel.lean Modified data/seq/wseq.lean Modified data/set/basic.lean Modified data/set/lattice.lean Modified data/set/prod.lean Modified theories/number_theory/dioph.lean Modified theories/number_theory/pell.lean Modified theories/set_theory.lean 2017-12-05 18:39:28+01:00 e9e51db fix(data/sigma): use Sort for psigma ESTIMATED CHANGES Modified data/sigma/basic.lean 2017-12-05 18:13:32+01:00 0e3b156 fix(algebra/module): remove instance endomorphism_ring, it breaks real.lean ESTIMATED CHANGES Modified algebra/module.lean + def module.endomorphism_ring +/- def module.general_linear_group 2017-12-05 18:03:32+01:00 394d721 feat(algebra/module): add quotient module ESTIMATED CHANGES Modified algebra/module.lean + theorem is_submodule.is_linear_map_quotient_lift + theorem is_submodule.is_linear_map_quotient_mk + theorem is_submodule.quotient.injective_lift + def is_submodule.quotient.lift + def is_submodule.quotient + def is_submodule.quotient_rel 2017-12-05 17:24:36+01:00 dcfb9a0 refactor(algebra/module): add is_linear_map as predicate ESTIMATED CHANGES Modified algebra/module.lean + theorem is_linear_map.comp + theorem is_linear_map.id + theorem is_linear_map.map_add + theorem is_linear_map.map_neg + theorem is_linear_map.map_smul_left + theorem is_linear_map.map_smul_right + theorem is_linear_map.map_sub + theorem is_linear_map.map_sum + theorem is_linear_map.map_zero + theorem is_linear_map.neg + theorem is_linear_map.sub + theorem is_linear_map.sum + theorem is_linear_map.zero + structure is_linear_map + theorem is_submodule.Inter_submodule + theorem is_submodule.is_linear_map_subtype_mk + theorem is_submodule.is_linear_map_subtype_val +/- theorem is_submodule.sub_val +/- theorem linear_map.add_app +/- theorem linear_map.ext +/- def linear_map.im + theorem linear_map.is_linear_map_coe +/- def linear_map.ker + theorem linear_map.map_add - theorem linear_map.map_add_app +/- theorem linear_map.map_neg + theorem linear_map.map_smul - theorem linear_map.map_smul_app +/- theorem linear_map.map_sub +/- theorem linear_map.map_zero +/- theorem linear_map.mem_im +/- theorem linear_map.neg_app +/- theorem linear_map.smul_app +/- theorem linear_map.zero_app + def linear_map - structure linear_map - def module.endomorphism_ring +/- def module.general_linear_group +/- theorem module.mul_app +/- theorem module.one_app + theorem set.sInter_eq_Inter + theorem smul_eq_mul 2017-12-05 14:35:49+01:00 88202b6 refactor(algebra/module): clean up is_submodule projections ESTIMATED CHANGES Modified algebra/module.lean + theorem is_submodule.add +/- theorem is_submodule.add_val +/- theorem is_submodule.neg +/- theorem is_submodule.neg_val +/- theorem is_submodule.sub + theorem is_submodule.sub_val + theorem is_submodule.sum + theorem is_submodule.zero 2017-12-05 14:15:07+01:00 90ed0ab refactor(algebra/module): rename submodule -> is_submodule, smul_left_distrib -> smul_add, smul_right_distrib -> add_smul, smul_sub_left_distrib -> smul_sub, sub_smul_right_distrib -> sub_smul ESTIMATED CHANGES Modified algebra/module.lean + theorem add_smul + theorem is_submodule.add_val + theorem is_submodule.neg + theorem is_submodule.neg_val + theorem is_submodule.smul_val + theorem is_submodule.sub + theorem is_submodule.zero_val + theorem smul_add - theorem smul_left_distrib - theorem smul_right_distrib + theorem smul_sub - theorem smul_sub_left_distrib + theorem sub_smul - theorem sub_smul_right_distrib - theorem submodule.add_val - theorem submodule.neg - theorem submodule.neg_val - theorem submodule.smul_val - theorem submodule.sub - theorem submodule.zero_val 2017-12-05 12:33:55+01:00 6ebe286 refactor(.): use new funext tactic ESTIMATED CHANGES Modified analysis/measure_theory/measure_space.lean Modified analysis/metric_space.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/analysis/topology.lean Modified data/equiv.lean Modified data/int/basic.lean +/- theorem int.mod_add_cancel_right +/- theorem int.mod_sub_cancel_right Modified data/list/basic.lean Modified data/list/perm.lean Modified data/pfun.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean Modified order/complete_lattice.lean Modified order/filter.lean 2017-12-05 12:04:46+01:00 8273536 chore(.): adapt to change 6d96741010f5f36f2f4f046e4b2b8276eb2b04d4 (provide names for constructor arguments) ESTIMATED CHANGES Modified data/nat/basic.lean Modified data/option.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean Modified data/set/basic.lean Modified tactic/finish.lean Modified tests/finish3.lean 2017-12-05 11:24:13+01:00 f6474f0 chore(.): adapt to change b7322e28c12d274ccec992b7fc49d35b2e56a2a4 (remove AC simp rules) ESTIMATED CHANGES Modified algebra/field.lean Modified algebra/group_power.lean Modified algebra/module.lean Modified algebra/ring.lean Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/metric_space.lean Modified analysis/real.lean Modified analysis/topology/continuity.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/analysis/filter.lean Modified data/analysis/topology.lean Modified data/array/lemmas.lean Modified data/finset.lean +/- def finset.fold Modified data/hash_map.lean Modified data/list/basic.lean +/- theorem list.diff_nil +/- theorem list.pw_filter_nil Modified data/list/perm.lean Modified data/list/sort.lean Modified data/multiset.lean + theorem multiset.quot_mk_to_coe'' Modified data/nat/basic.lean Modified data/nat/gcd.lean Modified data/nat/modeq.lean Modified data/nat/sqrt.lean Modified data/num/lemmas.lean Modified data/rat.lean Modified data/seq/wseq.lean Modified data/set/basic.lean Modified data/set/countable.lean Modified data/set/finite.lean Modified data/set/lattice.lean Modified data/set/prod.lean Modified logic/basic.lean Modified order/complete_lattice.lean Modified order/filter.lean Modified order/zorn.lean Modified pending/default.lean + theorem of_to_bool_iff Modified tactic/finish.lean Modified tests/finish3.lean Modified theories/number_theory/dioph.lean +/- theorem dioph.dioph_comp +/- theorem dioph.dioph_fn_comp Modified theories/number_theory/pell.lean Modified theories/set_theory.lean 2017-12-04 23:24:01-05:00 2dadfdb feat(tactic/norm_num): add {nat,int}.mod ESTIMATED CHANGES Modified tactic/norm_num.lean + theorem norm_num.int_mod_helper + theorem norm_num.nat_mod_helper 2017-12-04 23:05:57-05:00 8d27f70 feat(tactic/norm_num): add support for {nat,int}.div ESTIMATED CHANGES Modified data/rat.lean Modified tactic/norm_num.lean + theorem norm_num.int_div_helper + theorem norm_num.nat_div_helper Modified tests/norm_num.lean 2017-12-04 21:23:11-05:00 b1981c9 chore(theories/number_theory/dioph): cleanup ESTIMATED CHANGES Modified data/int/basic.lean Modified theories/number_theory/dioph.lean +/- theorem dioph.abs_poly_dioph +/- theorem dioph.of_no_dummies +/- theorem poly.add_eval - theorem poly.add_val +/- theorem poly.const_eval - def poly.eval +/- def poly.ext +/- def poly.isp +/- theorem poly.mul_eval - theorem poly.mul_val +/- theorem poly.neg_eval - theorem poly.neg_val +/- theorem poly.one_eval - theorem poly.one_val +/- theorem poly.proj_eval +/- theorem poly.remap_eval +/- theorem poly.sub_eval - theorem poly.sub_val +/- def poly.subst +/- theorem poly.subst_eval +/- theorem poly.sumsq_eq_zero +/- theorem poly.sumsq_nonneg +/- theorem poly.zero_eval - theorem poly.zero_val - inductive vector2 2017-12-01 08:02:15-05:00 7191e39 feat(theories/number_theory/dioph): Pell equation, diophantine equations ESTIMATED CHANGES Modified algebra/group.lean + theorem bit0_zero + theorem bit1_zero Modified data/int/basic.lean + theorem int.coe_nat_mod + theorem int.mod_add_cancel_left + theorem int.mod_add_cancel_right + theorem int.mod_eq_mod_iff_mod_sub_eq_zero - theorem int.mod_eq_mod_of_add_mod_eq_add_mod_left - theorem int.mod_eq_mod_of_add_mod_eq_add_mod_right + theorem int.mod_sub_cancel_right + theorem int.to_nat_coe_nat + theorem int.to_nat_of_nonneg Modified data/nat/gcd.lean +/- theorem nat.coprime.gcd_eq_one +/- theorem nat.coprime.symm + def nat.gcd_a + def nat.gcd_b + theorem nat.gcd_eq_gcd_ab + def nat.xgcd + def nat.xgcd_aux + theorem nat.xgcd_aux_P + theorem nat.xgcd_aux_fst + theorem nat.xgcd_aux_rec + theorem nat.xgcd_aux_val + theorem nat.xgcd_val + theorem nat.xgcd_zero_left Added data/nat/modeq.lean + theorem nat.modeq.chinese_remainder + theorem nat.modeq.dvd_of_modeq + theorem nat.modeq.modeq_add + theorem nat.modeq.modeq_add_cancel_left + theorem nat.modeq.modeq_add_cancel_right + theorem nat.modeq.modeq_iff_dvd + theorem nat.modeq.modeq_mul + theorem nat.modeq.modeq_mul_left' + theorem nat.modeq.modeq_mul_left + theorem nat.modeq.modeq_mul_right' + theorem nat.modeq.modeq_mul_right + theorem nat.modeq.modeq_of_dvd + theorem nat.modeq.modeq_of_dvd_of_modeq + theorem nat.modeq.modeq_zero_iff + def nat.modeq Modified data/pfun.lean +/- def pfun.graph + theorem pfun.lift_graph Added theories/number_theory/dioph.lean + def arity + def curry + theorem dioph.abs_poly_dioph + theorem dioph.add_dioph + theorem dioph.and_dioph + theorem dioph.const_dioph + theorem dioph.dioph_comp2 + theorem dioph.dioph_comp + def dioph.dioph_fn + theorem dioph.dioph_fn_comp1 + theorem dioph.dioph_fn_comp2 + theorem dioph.dioph_fn_comp + theorem dioph.dioph_fn_compn + theorem dioph.dioph_fn_iff_pfun + theorem dioph.dioph_fn_vec + theorem dioph.dioph_fn_vec_comp1 + theorem dioph.dioph_list_all + def dioph.dioph_pfun + theorem dioph.dioph_pfun_comp1 + theorem dioph.dioph_pfun_vec + theorem dioph.div_dioph + theorem dioph.dom_dioph + theorem dioph.dvd_dioph + theorem dioph.eq_dioph + theorem dioph.ex1_dioph + theorem dioph.ex_dioph + theorem dioph.ext + theorem dioph.inject_dummies + theorem dioph.inject_dummies_lem + theorem dioph.le_dioph + theorem dioph.lt_dioph + theorem dioph.mod_dioph + theorem dioph.modeq_dioph + theorem dioph.mul_dioph + theorem dioph.ne_dioph + theorem dioph.of_no_dummies + theorem dioph.or_dioph + theorem dioph.pell_dioph + theorem dioph.pow_dioph + theorem dioph.proj_dioph + def dioph.proj_dioph_of_nat + theorem dioph.reindex_dioph + theorem dioph.reindex_dioph_fn + theorem dioph.sub_dioph + theorem dioph.vec_ex1_dioph + theorem dioph.xn_dioph + def dioph + theorem exists_vector_succ + theorem exists_vector_zero + def fin2.add + def fin2.elim0 + def fin2.insert_perm + def fin2.left + def fin2.of_nat' + def fin2.opt_of_nat + def fin2.remap_left + inductive fin2 + theorem int.eq_nat_abs_iff_mul + inductive is_poly + theorem list_all.imp + def list_all + theorem list_all_congr + theorem list_all_cons + theorem list_all_iff_forall + theorem list_all_map + def option.cons + def option.cons_head_tail + def poly.add + theorem poly.add_eval + theorem poly.add_val + def poly.const + theorem poly.const_eval + def poly.eval + def poly.ext + def poly.induction + def poly.isp + def poly.mul + theorem poly.mul_eval + theorem poly.mul_val + def poly.neg + theorem poly.neg_eval + theorem poly.neg_val + def poly.one + theorem poly.one_eval + theorem poly.one_val + def poly.pow + def poly.proj + theorem poly.proj_eval + def poly.remap + theorem poly.remap_eval + def poly.sub + theorem poly.sub_eval + theorem poly.sub_val + def poly.subst + theorem poly.subst_eval + def poly.sumsq + theorem poly.sumsq_eq_zero + theorem poly.sumsq_nonneg + def poly.zero + theorem poly.zero_eval + theorem poly.zero_val + def poly + def sum.join + def uncurry + inductive vector2 + def vector3.append + def vector3.append_add + def vector3.append_cons + theorem vector3.append_insert + def vector3.append_left + def vector3.append_nil + def vector3.cons + def vector3.cons_elim + theorem vector3.cons_elim_cons + def vector3.cons_fs + def vector3.cons_fz + theorem vector3.cons_head_tail + theorem vector3.eq_nil + def vector3.head + def vector3.insert + def vector3.insert_fs + theorem vector3.insert_fz + def vector3.nil + def vector3.nil_elim + def vector3.nth + def vector3.of_fn + theorem vector3.rec_on_cons + theorem vector3.rec_on_nil + def vector3.tail + def vector3 + def vector_all + theorem vector_all_iff_forall + theorem vector_allp.imp + def vector_allp + theorem vector_allp_cons + theorem vector_allp_iff_forall + theorem vector_allp_nil + theorem vector_allp_singleton + def vector_ex + theorem vector_ex_iff_exists Added theories/number_theory/pell.lean + theorem pell.asq_pos + def pell.az + theorem pell.d_pos + theorem pell.dvd_of_ysq_dvd + theorem pell.dz_val + theorem pell.eq_of_xn_modeq' + theorem pell.eq_of_xn_modeq + theorem pell.eq_of_xn_modeq_le + theorem pell.eq_of_xn_modeq_lem1 + theorem pell.eq_of_xn_modeq_lem2 + theorem pell.eq_of_xn_modeq_lem3 + theorem pell.eq_pell + theorem pell.eq_pell_lem + theorem pell.eq_pell_zd + theorem pell.eq_pow_of_pell + theorem pell.eq_pow_of_pell_lem + def pell.is_pell + def pell.is_pell_conj + def pell.is_pell_mul + def pell.is_pell_nat + def pell.is_pell_norm + def pell.is_pell_one + def pell.is_pell_pell_zd + theorem pell.matiyasevic + theorem pell.modeq_of_xn_modeq + def pell.n_lt_a_pow + theorem pell.n_lt_xn + def pell.pell + theorem pell.pell_eq + theorem pell.pell_eqz + theorem pell.pell_val + def pell.pell_zd + theorem pell.pell_zd_add + theorem pell.pell_zd_im + theorem pell.pell_zd_re + theorem pell.pell_zd_sub + theorem pell.pell_zd_succ + theorem pell.pell_zd_succ_succ + theorem pell.x_increasing + theorem pell.x_pos + theorem pell.x_sub_y_dvd_pow + theorem pell.x_sub_y_dvd_pow_lem + def pell.xn + theorem pell.xn_add + def pell.xn_ge_a_pow + theorem pell.xn_modeq_x2n_add + theorem pell.xn_modeq_x2n_add_lem + theorem pell.xn_modeq_x2n_sub + theorem pell.xn_modeq_x2n_sub_lem + theorem pell.xn_modeq_x4n_add + theorem pell.xn_modeq_x4n_sub + theorem pell.xn_one + theorem pell.xn_succ + theorem pell.xn_succ_succ + theorem pell.xn_zero + theorem pell.xy_coprime + theorem pell.xy_modeq_of_modeq + theorem pell.xy_modeq_yn + theorem pell.xy_succ_succ + def pell.xz + theorem pell.xz_sub + theorem pell.xz_succ + theorem pell.xz_succ_succ + theorem pell.y_dvd_iff + theorem pell.y_increasing + theorem pell.y_mul_dvd + def pell.yn + theorem pell.yn_add + theorem pell.yn_ge_n + theorem pell.yn_modeq_a_sub_one + theorem pell.yn_modeq_two + theorem pell.yn_one + theorem pell.yn_succ + theorem pell.yn_succ_succ + theorem pell.yn_zero + theorem pell.ysq_dvd_yy + def pell.yz + theorem pell.yz_sub + theorem pell.yz_succ + theorem pell.yz_succ_succ + def zsqrtd.add + theorem zsqrtd.add_def + theorem zsqrtd.add_im + theorem zsqrtd.add_re + theorem zsqrtd.bit0_im + theorem zsqrtd.bit0_re + theorem zsqrtd.bit1_im + theorem zsqrtd.bit1_re + theorem zsqrtd.coe_int_im + theorem zsqrtd.coe_int_re + theorem zsqrtd.coe_int_val + theorem zsqrtd.coe_nat_im + theorem zsqrtd.coe_nat_re + theorem zsqrtd.coe_nat_val + def zsqrtd.conj + theorem zsqrtd.conj_im + theorem zsqrtd.conj_mul + theorem zsqrtd.conj_re + theorem zsqrtd.d_pos + theorem zsqrtd.decompose + theorem zsqrtd.divides_sq_eq_zero + theorem zsqrtd.divides_sq_eq_zero_z + theorem zsqrtd.ext + theorem zsqrtd.le_antisymm + theorem zsqrtd.le_arch + theorem zsqrtd.le_of_le_le + theorem zsqrtd.le_refl + def zsqrtd.mul + theorem zsqrtd.mul_conj + theorem zsqrtd.mul_im + theorem zsqrtd.mul_re + theorem zsqrtd.muld_val + def zsqrtd.neg + theorem zsqrtd.neg_im + theorem zsqrtd.neg_re + def zsqrtd.nonneg + theorem zsqrtd.nonneg_add + theorem zsqrtd.nonneg_add_lem + theorem zsqrtd.nonneg_antisymm + theorem zsqrtd.nonneg_cases + theorem zsqrtd.nonneg_iff_zero_le + theorem zsqrtd.nonneg_mul + theorem zsqrtd.nonneg_mul_lem + theorem zsqrtd.nonneg_muld + theorem zsqrtd.nonneg_smul + def zsqrtd.nonnegg + def zsqrtd.nonnegg_cases_left + def zsqrtd.nonnegg_cases_right + def zsqrtd.nonnegg_comm + def zsqrtd.nonnegg_neg_pos + def zsqrtd.nonnegg_pos_neg + theorem zsqrtd.not_divides_square + theorem zsqrtd.not_sq_le_succ + def zsqrtd.of_int + theorem zsqrtd.of_int_eq_coe + theorem zsqrtd.of_int_im + theorem zsqrtd.of_int_re + def zsqrtd.one + theorem zsqrtd.one_im + theorem zsqrtd.one_re + theorem zsqrtd.smul_val + theorem zsqrtd.smuld_val + def zsqrtd.sq_le + theorem zsqrtd.sq_le_add + theorem zsqrtd.sq_le_add_mixed + theorem zsqrtd.sq_le_cancel + theorem zsqrtd.sq_le_mul + theorem zsqrtd.sq_le_of_le + theorem zsqrtd.sq_le_smul + def zsqrtd.sqrtd + theorem zsqrtd.sqrtd_im + theorem zsqrtd.sqrtd_re + def zsqrtd.zero + theorem zsqrtd.zero_im + theorem zsqrtd.zero_re + structure zsqrtd 2017-11-30 22:10:19-05:00 f57e59f feat(data/analysis): calculations with filters / topologies + misc ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.exists_ne_one_of_prod_ne_one +/- theorem finset.prod_bind + theorem finset.prod_eq_fold +/- theorem finset.prod_image +/- theorem finset.prod_insert +/- theorem finset.prod_sdiff +/- theorem finset.prod_sigma +/- theorem finset.prod_singleton +/- theorem finset.prod_union +/- theorem finset.prod_union_inter Modified algebra/ordered_group.lean +/- theorem zero_le Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean + theorem is_open_iff_mem_nhds + theorem mem_interior_iff_mem_nhds +/- theorem topological_space.mem_nhds_of_is_topological_basis Added data/analysis/filter.lean + theorem cfilter.coe_mk + theorem cfilter.mem_to_filter_sets + def cfilter.of_equiv + theorem cfilter.of_equiv_val + def cfilter.to_filter + structure cfilter + theorem filter.realizer.bot_F + theorem filter.realizer.bot_σ + theorem filter.realizer.le_iff + theorem filter.realizer.map_F + theorem filter.realizer.map_σ + theorem filter.realizer.mem_sets + theorem filter.realizer.ne_bot_iff + def filter.realizer.of_eq + def filter.realizer.of_equiv + theorem filter.realizer.of_equiv_F + theorem filter.realizer.of_equiv_σ + def filter.realizer.of_filter + theorem filter.realizer.principal_F + theorem filter.realizer.principal_σ + theorem filter.realizer.tendsto_iff + theorem filter.realizer.top_F + theorem filter.realizer.top_σ + structure filter.realizer Added data/analysis/topology.lean + def compact.realizer + theorem ctop.coe_mk + theorem ctop.mem_nhds_to_topsp + def ctop.of_equiv + theorem ctop.of_equiv_val + theorem ctop.realizer.ext' + theorem ctop.realizer.ext + theorem ctop.realizer.is_closed_iff + theorem ctop.realizer.is_open_iff + theorem ctop.realizer.mem_interior_iff + theorem ctop.realizer.nhds_F + theorem ctop.realizer.nhds_σ + def ctop.realizer.of_equiv + theorem ctop.realizer.of_equiv_F + theorem ctop.realizer.of_equiv_σ + theorem ctop.realizer.tendsto_nhds_iff + structure ctop.realizer + theorem ctop.to_topsp_is_topological_basis + structure ctop + theorem locally_finite.realizer.to_locally_finite + structure locally_finite.realizer + theorem locally_finite_iff_exists_realizer Modified data/equiv.lean +/- theorem equiv.apply_eq_iff_eq +/- theorem equiv.apply_inverse_apply +/- theorem equiv.inverse_apply_apply Modified data/finset.lean +/- theorem finset.fold_image +/- theorem finset.fold_insert +/- theorem finset.fold_insert_idem +/- theorem finset.fold_singleton +/- theorem finset.fold_union_inter +/- theorem finset.image_singleton + theorem finset.insert_empty_eq_singleton - theorem finset.insert_singelton_self_eq + theorem finset.insert_singleton_self_eq + theorem finset.inter_eq_empty_iff_disjoint +/- theorem finset.inter_singleton_of_mem +/- theorem finset.inter_singleton_of_not_mem +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_self + def finset.singleton + theorem finset.singleton_eq_singleton +/- theorem finset.singleton_inj +/- theorem finset.singleton_inter_of_mem +/- theorem finset.singleton_inter_of_not_mem +/- theorem finset.singleton_ne_empty +/- theorem finset.singleton_val Modified data/fintype.lean + def fintype.card + def fintype.equiv_fin + theorem fintype.exists_equiv_fin Modified data/list/basic.lean + theorem list.nodup_iff_nth_le_inj + theorem list.pairwise_iff_nth_le Modified data/multiset.lean Modified data/nat/prime.lean + def nat.factors Modified data/quot.lean + theorem nonempty_of_trunc Modified data/set/basic.lean + theorem set.eq_univ_iff_forall +/- theorem set.eq_univ_of_forall +/- theorem set.inter_subset_left +/- theorem set.inter_subset_right +/- theorem set.range_id + theorem set.range_iff_surjective - theorem set.range_of_surjective +/- theorem set.subset_empty_iff + theorem set.subset_eq_empty + theorem set.subset_inter_iff + theorem set.subset_ne_empty Modified data/set/finite.lean - inductive set.finite' + theorem set.finite_mem_finset Modified logic/basic.lean + theorem iff_iff_eq + theorem iff_of_eq Modified order/basic.lean +/- def monotone Modified order/filter.lean + def filter.bind +/- theorem filter.bind_def +/- theorem filter.bind_mono2 +/- theorem filter.bind_mono +/- theorem filter.bind_sup - theorem filter.fmap_principal + theorem filter.map_def +/- theorem filter.mem_bind_sets +/- theorem filter.principal_bind 2017-11-30 22:10:19-05:00 b207991 refactor(data/multiset): move multiset, finset, ordered_monoid ESTIMATED CHANGES Modified algebra/big_operators.lean Modified algebra/default.lean Modified algebra/ordered_group.lean + theorem add_eq_zero_iff + theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg' + theorem add_le_add' + theorem add_le_add_left' + theorem add_le_add_right' + theorem add_le_of_le_of_nonpos' + theorem add_le_of_nonpos_of_le' + theorem add_lt_of_lt_of_neg' + theorem add_lt_of_lt_of_nonpos' + theorem add_lt_of_neg_of_lt' + theorem add_lt_of_nonpos_of_lt' + theorem add_neg' + theorem add_neg_of_neg_of_nonpos' + theorem add_neg_of_nonpos_of_neg' + theorem add_nonneg' + theorem add_nonpos' + theorem add_pos' + theorem add_pos_of_nonneg_of_pos' + theorem add_pos_of_pos_of_nonneg' + theorem le_add_of_le_of_nonneg' + theorem le_add_of_nonneg_left' + theorem le_add_of_nonneg_of_le' + theorem le_add_of_nonneg_right' + theorem le_iff_exists_add + theorem lt_add_of_lt_of_nonneg' + theorem lt_add_of_lt_of_pos' + theorem lt_add_of_nonneg_of_lt' + theorem lt_add_of_pos_of_lt' + theorem lt_of_add_lt_add_left' + theorem lt_of_add_lt_add_right' + theorem zero_le Deleted algebra/ordered_monoid.lean - theorem add_eq_zero_iff - theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg' - theorem add_le_add' - theorem add_le_add_left' - theorem add_le_add_right' - theorem add_le_of_le_of_nonpos' - theorem add_le_of_nonpos_of_le' - theorem add_lt_of_lt_of_neg' - theorem add_lt_of_lt_of_nonpos' - theorem add_lt_of_neg_of_lt' - theorem add_lt_of_nonpos_of_lt' - theorem add_neg' - theorem add_neg_of_neg_of_nonpos' - theorem add_neg_of_nonpos_of_neg' - theorem add_nonneg' - theorem add_nonpos' - theorem add_pos' - theorem add_pos_of_nonneg_of_pos' - theorem add_pos_of_pos_of_nonneg' - theorem le_add_of_le_of_nonneg' - theorem le_add_of_nonneg_left' - theorem le_add_of_nonneg_of_le' - theorem le_add_of_nonneg_right' - theorem le_iff_exists_add - theorem lt_add_of_lt_of_nonneg' - theorem lt_add_of_lt_of_pos' - theorem lt_add_of_nonneg_of_lt' - theorem lt_add_of_pos_of_lt' - theorem lt_of_add_lt_add_left' - theorem lt_of_add_lt_add_right' - theorem zero_le Modified analysis/ennreal.lean Modified data/encodable.lean Renamed data/finset/basic.lean to data/finset.lean Deleted data/finset/default.lean Renamed data/finset/fintype.lean to data/fintype.lean Renamed data/multiset/basic.lean to data/multiset.lean Modified data/set/finite.lean 2017-11-30 22:10:19-05:00 f9b6671 Revert "fix(algebra/group): workaround for #1871" This reverts commit b9dcc64a998c417551d95f3b0d9b8ee8b690d21b. ESTIMATED CHANGES Modified algebra/group.lean 2017-11-28 19:14:05+01:00 67aecac fix(data/option): adapt to https://github.com/leanprover/lean/commit/f6b113849b367d49fc4a506f0698c7f1e062851e ESTIMATED CHANGES Modified data/option.lean 2017-11-24 05:22:02-05:00 2c84af1 feat(data/set/finite): unify fintype and finite developments Here fintype is the "constructive" one, which exhibits a list enumerating the set (quotiented over permutations), while "finite" merely states the existence of such a list. ESTIMATED CHANGES Modified algebra/big_operators.lean Modified analysis/real.lean Modified analysis/topology/topological_space.lean +/- theorem is_open_sInter Modified analysis/topology/uniform_space.lean Modified data/bool.lean Modified data/encodable.lean + def encodable_of_list + def trunc_encodable_of_fintype Modified data/finset/basic.lean Modified data/finset/fintype.lean + theorem finset.mem_univ_val Modified data/list/basic.lean +/- theorem list.nodup_filter_map Modified data/set/basic.lean + theorem set.mem_def Modified data/set/countable.lean +/- theorem set.countable.to_encodable +/- theorem set.countable_encodable' +/- theorem set.countable_finite Modified data/set/finite.lean + inductive set.finite' + theorem set.finite.induction_on + theorem set.finite.mem_to_finset + def set.finite - inductive set.finite + theorem set.finite_Union + theorem set.finite_empty +/- theorem set.finite_image +/- theorem set.finite_insert +/- theorem set.finite_le_nat +/- theorem set.finite_prod +/- theorem set.finite_sUnion +/- theorem set.finite_singleton +/- theorem set.finite_subset +/- theorem set.finite_union + def set.fintype_insert' + def set.fintype_of_finset + def set.fintype_of_fintype_image + def set.fintype_subset + theorem set.mem_to_finset + theorem set.mem_to_finset_val + def set.to_finset Modified data/set/lattice.lean + theorem set.sUnion_eq_Union' Modified logic/basic.lean Modified logic/function.lean + theorem function.injective_of_partial_inv + theorem function.injective_of_partial_inv_right + def function.is_partial_inv - theorem function.partial_inv_eq - theorem function.partial_inv_eq_of_eq + theorem function.partial_inv_of_injective Modified order/filter.lean Modified tests/finish3.lean 2017-11-24 05:19:35-05:00 e576429 feat(data/multiset): filter_map ESTIMATED CHANGES Modified data/multiset/basic.lean + theorem multiset.coe_filter_map + theorem multiset.filter_filter_map + def multiset.filter_map + theorem multiset.filter_map_cons_none + theorem multiset.filter_map_cons_some + theorem multiset.filter_map_eq_filter + theorem multiset.filter_map_eq_map + theorem multiset.filter_map_filter + theorem multiset.filter_map_filter_map + theorem multiset.filter_map_le_filter_map + theorem multiset.filter_map_map + theorem multiset.filter_map_some + theorem multiset.filter_map_zero + theorem multiset.map_filter_map + theorem multiset.map_filter_map_of_inv + theorem multiset.mem_filter_map + theorem multiset.nodup_filter_map 2017-11-24 05:18:50-05:00 bade51a feat(data/quot): add trunc type (like nonempty in Type) It is named after the propositional truncation operator in HoTT, although of course the behavior is a bit different in a proof irrelevant setting. ESTIMATED CHANGES Modified data/quot.lean +/- theorem forall_quotient_iff + theorem quot.out_eq + theorem quotient.mk_out + theorem quotient.out_eq + theorem trunc.exists_rep + theorem trunc.ind + def trunc.lift + def trunc.mk + theorem trunc.out_eq + def {u} 2017-11-23 23:33:09-05:00 16d40d7 feat(data/finset): fintype, multiset.sort, list.pmap ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.prod_bind +/- theorem finset.prod_product Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/continuity.lean Modified data/encodable.lean Modified data/equiv.lean +/- theorem equiv.apply_eq_iff_eq +/- theorem equiv.apply_eq_iff_eq_inverse_apply +/- theorem equiv.apply_inverse_apply + def equiv.arrow_empty_unit - theorem equiv.arrow_empty_unit +/- theorem equiv.coe_fn_mk +/- theorem equiv.coe_fn_symm_mk +/- theorem equiv.comp_apply + def equiv.empty_of_not_nonempty - theorem equiv.empty_of_not_nonempty - theorem equiv.eq_iff_eq_of_injective +/- theorem equiv.eq_of_to_fun_eq +/- theorem equiv.id_apply +/- theorem equiv.inverse_apply_apply + def equiv.sum_equiv_sigma_bool +/- theorem equiv.swap_apply_def +/- theorem equiv.swap_apply_left +/- theorem equiv.swap_apply_of_ne_of_ne +/- theorem equiv.swap_apply_right +/- theorem equiv.swap_comm +/- theorem equiv.swap_comp_apply +/- theorem equiv.swap_core_comm +/- theorem equiv.swap_core_self +/- theorem equiv.swap_core_swap_core +/- theorem equiv.swap_self +/- theorem equiv.swap_swap +/- theorem function.left_inverse.f_g_eq_id +/- theorem function.right_inverse.g_f_eq_id +/- theorem subtype.map_comp +/- theorem subtype.map_id Modified data/finset/basic.lean + def finset.attach + theorem finset.attach_val + theorem finset.bind_empty + theorem finset.bind_image + theorem finset.bind_insert + theorem finset.bind_to_finset + theorem finset.bind_val + def finset.fold + theorem finset.fold_congr + theorem finset.fold_empty + theorem finset.fold_hom + theorem finset.fold_image + theorem finset.fold_insert + theorem finset.fold_insert_idem + theorem finset.fold_op_distrib + theorem finset.fold_singleton + theorem finset.fold_union_inter + theorem finset.image_bind + theorem finset.mem_attach + theorem finset.mem_bind + theorem finset.mem_mk + theorem finset.mem_product + theorem finset.mem_sigma - theorem finset.mem_univ + theorem finset.product_eq_bind + theorem finset.product_val + theorem finset.sigma_eq_bind + theorem finset.sigma_mono + def finset.sort + theorem finset.sort_eq + theorem finset.sort_nodup + theorem finset.sort_sorted + theorem finset.sort_to_finset - theorem finset.subset_univ - def finset.univ - def fintype.of_list - def fintype.of_multiset Modified data/finset/default.lean Added data/finset/fintype.lean + theorem finset.mem_univ + theorem finset.subset_univ + def finset.univ + def fintype.of_bijective + def fintype.of_equiv + def fintype.of_list + def fintype.of_multiset + def fintype.of_surjective Deleted data/finset/fold.lean - theorem finset.bind_empty - theorem finset.bind_image - theorem finset.bind_insert - theorem finset.bind_to_finset - def finset.fold - theorem finset.fold_congr - theorem finset.fold_empty - theorem finset.fold_hom - theorem finset.fold_image - theorem finset.fold_insert - theorem finset.fold_insert_idem - theorem finset.fold_op_distrib - theorem finset.fold_singleton - theorem finset.fold_union_inter - theorem finset.image_bind - theorem finset.mem_bind - theorem finset.mem_product - theorem finset.mem_sigma - theorem finset.product_eq_bind - theorem finset.product_val - theorem finset.sigma_mono Modified data/list/basic.lean + def list.attach + theorem list.attach_map_val + theorem list.length_sigma + theorem list.map_pmap + theorem list.mem_attach + theorem list.mem_pmap + theorem list.mem_sigma + theorem list.nil_sigma + theorem list.nodup_attach + theorem list.nodup_pmap + theorem list.nodup_sigma + def list.pmap + theorem list.pmap_congr + theorem list.pmap_eq_map + theorem list.pmap_eq_map_attach + def list.sigma + theorem list.sigma_cons + theorem list.sigma_nil Modified data/list/perm.lean + theorem list.perm_pmap Modified data/list/sort.lean +/- def list.split Modified data/multiset/basic.lean + theorem multiset.add_sigma + def multiset.attach + theorem multiset.attach_map_val + theorem multiset.coe_attach + theorem multiset.coe_pmap + theorem multiset.coe_sigma + theorem multiset.coe_sort + theorem multiset.cons_sigma + theorem multiset.count_smul + theorem multiset.le_smul_erase_dup + theorem multiset.map_pmap + theorem multiset.mem_attach + theorem multiset.mem_pmap + theorem multiset.mem_sigma + theorem multiset.nodup_attach + theorem multiset.nodup_pmap + theorem multiset.nodup_sigma + def multiset.pmap + theorem multiset.pmap_congr + theorem multiset.pmap_eq_map + theorem multiset.pmap_eq_map_attach + theorem multiset.prod_repeat + theorem multiset.sigma_add + theorem multiset.sigma_singleton + def multiset.sort + theorem multiset.sort_eq + theorem multiset.sort_sorted + theorem multiset.zero_sigma Modified logic/basic.lean +/- theorem and_iff_left_of_imp +/- theorem and_iff_right_of_imp +/- theorem classical.cases +/- theorem classical.or_not +/- theorem false_neq_true +/- theorem forall_2_true_iff +/- theorem forall_3_true_iff +/- theorem forall_true_iff' +/- theorem heq_iff_eq Modified logic/function.lean + def function.injective.decidable_eq +/- theorem function.injective.eq_iff 2017-11-23 22:09:45-05:00 c03c16d feat(algebra/group_power): remove overloaded ^ notation, add smul ESTIMATED CHANGES Modified algebra/field.lean + theorem division_ring.inv_comm_of_comm - theorem inv_comm_of_comm Modified algebra/group.lean + theorem inv_comm_of_comm Modified algebra/group_power.lean + theorem add_monoid.add_smul + theorem add_monoid.neg_smul + theorem add_monoid.smul_mul + theorem add_monoid.smul_one + theorem add_monoid.zero_smul - theorem has_pow_nat_eq_pow_nat + theorem list.sum_repeat +/- def monoid.pow + theorem nat.pow_eq_pow - theorem nat.pow_eq_pow_nat - def pow_int +/- theorem pow_inv_comm - def pow_nat +/- theorem pow_one +/- theorem pow_zero + theorem smul_bit1 + theorem smul_succ' + theorem smul_succ Modified analysis/limits.lean Modified analysis/measure_theory/outer_measure.lean Modified data/rat.lean Modified tactic/norm_num.lean Modified tests/norm_num.lean 2017-11-23 06:50:37-05:00 33aa50b feat(tactic/generalize_proofs): generalize proofs tactic Borrowed from leanprover/lean#1704 ESTIMATED CHANGES Added tactic/generalize_proofs.lean Modified tactic/interactive.lean 2017-11-22 05:33:59-05:00 902b94d refactor(data/finset): redefine finsets as subtype of multisets ESTIMATED CHANGES Modified algebra/big_operators.lean - theorem finset.prod_to_finset_of_nodup Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/topology/continuity.lean +/- structure dense_embedding Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_structures.lean Modified data/encodable.lean Modified data/finset/basic.lean +/- def finset.card + theorem finset.card_def + theorem finset.card_eq_zero +/- theorem finset.card_erase_of_mem +/- theorem finset.card_insert_le +/- theorem finset.card_insert_of_not_mem + theorem finset.card_pos +/- theorem finset.card_range +/- theorem finset.empty_inter +/- theorem finset.empty_subset +/- theorem finset.empty_union + theorem finset.empty_val - theorem finset.eq_empty_of_card_eq_zero +/- theorem finset.eq_empty_of_forall_not_mem - theorem finset.eq_empty_of_subset_empty + theorem finset.eq_of_veq +/- def finset.erase + theorem finset.erase_dup_eq_self - theorem finset.erase_dup_map_erase_dup_eq +/- theorem finset.erase_empty +/- theorem finset.erase_eq_of_not_mem +/- theorem finset.erase_insert +/- theorem finset.erase_insert_subset +/- theorem finset.erase_subset +/- theorem finset.erase_subset_erase - theorem finset.erase_subset_of_subset_insert + theorem finset.erase_val +/- theorem finset.exists_mem_of_ne_empty +/- theorem finset.exists_nat_subset_range +/- theorem finset.ext + def finset.filter + theorem finset.filter_and +/- theorem finset.filter_false +/- theorem finset.filter_filter +/- theorem finset.filter_inter_filter_neg_eq + theorem finset.filter_not + theorem finset.filter_or +/- theorem finset.filter_subset +/- theorem finset.filter_union +/- theorem finset.filter_union_filter_neg_eq + theorem finset.filter_val - theorem finset.forall_of_forall_insert + theorem finset.has_insert_eq_insert + def finset.image +/- theorem finset.image_empty + theorem finset.image_eq_empty - theorem finset.image_eq_empty_iff +/- theorem finset.image_filter +/- theorem finset.image_id +/- theorem finset.image_image +/- theorem finset.image_insert +/- theorem finset.image_inter +/- theorem finset.image_singleton +/- theorem finset.image_subset_image +/- theorem finset.image_to_finset - theorem finset.image_to_finset_of_nodup +/- theorem finset.image_union + theorem finset.image_val + theorem finset.image_val_of_inj_on +/- theorem finset.insert.comm + theorem finset.insert_def +/- theorem finset.insert_eq +/- theorem finset.insert_eq_of_mem +/- theorem finset.insert_erase +/- theorem finset.insert_erase_subset +/- theorem finset.insert_idem +/- theorem finset.insert_ne_empty +/- theorem finset.insert_singelton_self_eq + theorem finset.insert_subset +/- theorem finset.insert_subset_insert +/- theorem finset.insert_union + theorem finset.insert_val' + theorem finset.insert_val +/- theorem finset.inter_assoc +/- theorem finset.inter_comm +/- theorem finset.inter_empty +/- theorem finset.inter_left_comm +/- theorem finset.inter_right_comm + theorem finset.inter_sdiff_self +/- theorem finset.inter_self +/- theorem finset.inter_subset_left +/- theorem finset.inter_subset_right + theorem finset.inter_val + theorem finset.inter_val_nd - def finset.mem + theorem finset.mem_def +/- theorem finset.mem_erase +/- theorem finset.mem_erase_of_ne_of_mem +/- theorem finset.mem_filter + theorem finset.mem_image - theorem finset.mem_image_iff + theorem finset.mem_image_of_mem +/- theorem finset.mem_insert +/- theorem finset.mem_insert_of_mem +/- theorem finset.mem_insert_self +/- theorem finset.mem_inter - theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_erase +/- theorem finset.mem_of_mem_insert_of_ne +/- theorem finset.mem_of_mem_inter_left +/- theorem finset.mem_of_mem_inter_right - theorem finset.mem_of_mem_list + theorem finset.mem_of_subset - theorem finset.mem_of_subset_of_mem - theorem finset.mem_or_mem_of_mem_union +/- theorem finset.mem_range + theorem finset.mem_sdiff - theorem finset.mem_sdiff_iff +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_self - theorem finset.mem_to_finset - theorem finset.mem_to_finset_of_mem - theorem finset.mem_to_finset_of_nodup_eq +/- theorem finset.mem_union +/- theorem finset.mem_union_left +/- theorem finset.mem_union_right + theorem finset.mem_univ - theorem finset.ne_empty_of_card_eq_succ + theorem finset.ne_empty_of_mem +/- theorem finset.ne_of_mem_erase +/- theorem finset.not_mem_empty +/- theorem finset.not_mem_erase +/- theorem finset.not_mem_range_self +/- def finset.range +/- theorem finset.range_subset +/- theorem finset.range_succ + theorem finset.range_val + theorem finset.sdiff_eq_filter +/- theorem finset.sdiff_inter_self +/- theorem finset.sdiff_subset_sdiff +/- theorem finset.sdiff_union_of_subset +/- theorem finset.singleton_inj +/- theorem finset.singleton_ne_empty + theorem finset.singleton_val +/- theorem finset.subset.refl +/- theorem finset.subset.trans + theorem finset.subset_def + theorem finset.subset_empty - theorem finset.subset_empty_iff +/- theorem finset.subset_iff +/- theorem finset.subset_insert +/- theorem finset.subset_insert_iff - theorem finset.subset_insert_of_erase_subset +/- theorem finset.subset_union_left +/- theorem finset.subset_union_right + theorem finset.subset_univ - def finset.to_finset - theorem finset.to_finset_eq_of_nodup - def finset.to_finset_of_nodup +/- theorem finset.union_assoc +/- theorem finset.union_comm +/- theorem finset.union_empty +/- theorem finset.union_idempotent +/- theorem finset.union_insert +/- theorem finset.union_left_comm +/- theorem finset.union_right_comm + theorem finset.union_sdiff_of_subset +/- theorem finset.union_self +/- theorem finset.union_subset + theorem finset.union_val + theorem finset.union_val_nd + def finset.univ + theorem finset.val_eq_zero + theorem finset.val_inj + theorem finset.val_le_iff + structure finset + def fintype.of_list + def fintype.of_multiset + theorem list.mem_to_finset + def list.to_finset + theorem list.to_finset_eq + theorem list.to_finset_val + theorem multiset.mem_to_finset + def multiset.to_finset + theorem multiset.to_finset_eq + theorem multiset.to_finset_val - def nodup_list - def to_nodup_list - def to_nodup_list_of_nodup - def {u} Modified data/finset/fold.lean +/- theorem finset.bind_empty +/- theorem finset.bind_image +/- theorem finset.bind_insert + theorem finset.bind_to_finset +/- def finset.fold +/- theorem finset.fold_congr +/- theorem finset.fold_empty +/- theorem finset.fold_hom +/- theorem finset.fold_image +/- theorem finset.fold_insert +/- theorem finset.fold_insert_idem +/- theorem finset.fold_op_distrib +/- theorem finset.fold_singleton - theorem finset.fold_to_finset_of_nodup +/- theorem finset.fold_union_inter +/- theorem finset.image_bind + theorem finset.mem_bind - theorem finset.mem_bind_iff + theorem finset.mem_product - theorem finset.mem_product_iff + theorem finset.mem_sigma - theorem finset.mem_sigma_iff + theorem finset.product_eq_bind + theorem finset.product_val +/- theorem finset.sigma_mono Modified data/list/basic.lean + theorem list.map_sublist_map + theorem list.range_concat Modified data/multiset/basic.lean +/- theorem multiset.add_inter_distrib +/- theorem multiset.add_union_distrib + theorem multiset.card_eq_zero + theorem multiset.card_pos + theorem multiset.coe_fold_l + theorem multiset.coe_fold_r + theorem multiset.cons_inter_distrib + theorem multiset.cons_union_distrib + theorem multiset.erase_dup_cons + theorem multiset.erase_dup_ext + theorem multiset.erase_dup_map_erase_dup_eq + theorem multiset.erase_dup_subset' + def multiset.fold + theorem multiset.fold_add + theorem multiset.fold_cons'_left + theorem multiset.fold_cons'_right + theorem multiset.fold_cons_left + theorem multiset.fold_cons_right + theorem multiset.fold_distrib + theorem multiset.fold_eq_foldl + theorem multiset.fold_eq_foldr + theorem multiset.fold_erase_dup_idem + theorem multiset.fold_hom + theorem multiset.fold_singleton + theorem multiset.fold_union_inter + theorem multiset.fold_zero +/- theorem multiset.inter_add_distrib + theorem multiset.map_congr + theorem multiset.map_le_map + theorem multiset.map_subset_map + theorem multiset.mem_bind + theorem multiset.mem_join + theorem multiset.mem_product + theorem multiset.mem_sub_of_nodup +/- theorem multiset.nodup_erase_dup + theorem multiset.nodup_inter_left - theorem multiset.nodup_inter_of_nodup + theorem multiset.nodup_inter_right +/- theorem multiset.nodup_ndinsert + theorem multiset.nodup_union + theorem multiset.product_singleton + theorem multiset.range_succ + theorem multiset.range_zero + theorem multiset.singleton_le + theorem multiset.subset_erase_dup' + theorem multiset.subset_zero - theorem multiset.subset_zero_iff +/- theorem multiset.union_add_distrib Modified data/nat/basic.lean +/- theorem nat.sub_le_right_iff_le_add Modified data/set/countable.lean Modified order/filter.lean 2017-11-22 05:32:47-05:00 df546eb feat(data/set/basic): add coercion from set to type ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.set_coe.exists + theorem set.set_coe.forall + theorem set.set_coe_eq_subtype 2017-11-22 05:26:27-05:00 d548725 feat(tactic/rcases): support 'rfl' in rcases patterns for subst Using the special keyword `rfl` in an rcases pattern, as in `rcases h with ⟨a, rfl⟩ | b`, will now perform `subst` on the indicated argument, when it is an equality. ESTIMATED CHANGES Modified data/hash_map.lean Modified data/list/perm.lean Modified data/list/sort.lean Modified data/multiset/basic.lean Modified tactic/interactive.lean Modified tactic/rcases.lean 2017-11-20 20:36:26-05:00 b9dcc64 fix(algebra/group): workaround for #1871 Currently, user attributes are not stored in `olean` files, which leads to segfault issues when referencing them using `user_attribute.get_param`. To work around this, we duplicate the stored data in an extra `def`, which *is* stored in the `olean` file. ESTIMATED CHANGES Modified algebra/group.lean 2017-11-20 01:30:51-05:00 40d2b50 fix(algebra/order): update to lean The new `not_lt_of_lt` in core is not substitutable for this one because it is in the new algebraic hierarchy and mathlib is still on the old one. But this isn't used anywhere, so I'll just remove it instead of renaming. ESTIMATED CHANGES Modified algebra/order.lean - theorem not_lt_of_lt 2017-11-20 01:09:21-05:00 f467c81 feat(data/multiset): disjoint, nodup, finset ops ESTIMATED CHANGES Modified data/list/basic.lean +/- def list.disjoint - theorem list.disjoint_append_of_disjoint_left +/- theorem list.erase_dup_append +/- theorem list.sublist_suffix_of_union Modified data/multiset/basic.lean +/- def multiset.card +/- theorem multiset.card_cons - theorem multiset.card_empty +/- theorem multiset.card_erase_of_mem - theorem multiset.card_insert_le - theorem multiset.card_insert_of_not_mem +/- theorem multiset.card_range + theorem multiset.coe_disjoint + theorem multiset.coe_erase_dup + theorem multiset.coe_ndinsert + theorem multiset.coe_ndinter + theorem multiset.coe_ndunion + theorem multiset.coe_nodup + theorem multiset.coe_subset + theorem multiset.cons_erase + theorem multiset.cons_ndinter_of_mem + theorem multiset.cons_ndunion + theorem multiset.cons_subset + theorem multiset.count_eq_one_of_mem + theorem multiset.disjoint.symm + def multiset.disjoint + theorem multiset.disjoint_add_left + theorem multiset.disjoint_add_right + theorem multiset.disjoint_comm + theorem multiset.disjoint_cons_left + theorem multiset.disjoint_cons_right + theorem multiset.disjoint_iff_ne + theorem multiset.disjoint_left + theorem multiset.disjoint_of_le_left + theorem multiset.disjoint_of_le_right + theorem multiset.disjoint_of_nodup_add + theorem multiset.disjoint_of_subset_left + theorem multiset.disjoint_of_subset_right + theorem multiset.disjoint_right + theorem multiset.disjoint_singleton - theorem multiset.empty_inter - theorem multiset.eq_cons_erase - theorem multiset.eq_empty_of_card_eq_zero - theorem multiset.eq_zero_of_le_zero +/- def multiset.erase + def multiset.erase_dup + theorem multiset.erase_dup_add + theorem multiset.erase_dup_cons_of_mem + theorem multiset.erase_dup_cons_of_not_mem + theorem multiset.erase_dup_eq_self + theorem multiset.erase_dup_le - theorem multiset.erase_dup_map_erase_dup_eq + theorem multiset.erase_dup_subset + theorem multiset.erase_dup_zero - theorem multiset.erase_empty - theorem multiset.erase_eq_of_not_mem - theorem multiset.erase_insert - theorem multiset.erase_insert_subset +/- theorem multiset.erase_subset - theorem multiset.erase_subset_erase - theorem multiset.erase_subset_of_subset_insert - theorem multiset.exists_mem_empty_iff - theorem multiset.exists_mem_insert - theorem multiset.exists_nat_subset_range - theorem multiset.filter_false - theorem multiset.filter_filter - theorem multiset.filter_inter_filter_neg_eq +/- theorem multiset.filter_subset +/- theorem multiset.filter_union - theorem multiset.filter_union_filter_neg_eq - theorem multiset.forall_mem_empty_iff - theorem multiset.forall_mem_insert + theorem multiset.forall_mem_ne - theorem multiset.image_empty - theorem multiset.image_eq_empty_iff - theorem multiset.image_filter - theorem multiset.image_id - theorem multiset.image_image - theorem multiset.image_insert - theorem multiset.image_inter - theorem multiset.image_singleton - theorem multiset.image_subset_image - theorem multiset.image_to_multiset - theorem multiset.image_to_multiset_of_nodup - theorem multiset.image_union - theorem multiset.insert_erase - theorem multiset.insert_erase_subset - theorem multiset.insert_inter_of_mem - theorem multiset.insert_inter_of_not_mem - theorem multiset.inter_assoc +/- theorem multiset.inter_comm - theorem multiset.inter_distrib_left - theorem multiset.inter_distrib_right - theorem multiset.inter_empty + theorem multiset.inter_eq_zero_iff_disjoint - theorem multiset.inter_insert_of_mem - theorem multiset.inter_insert_of_not_mem + theorem multiset.inter_le_ndinter - theorem multiset.inter_left_comm - theorem multiset.inter_right_comm - theorem multiset.inter_self - theorem multiset.inter_singleton_of_mem - theorem multiset.inter_singleton_of_not_mem - theorem multiset.inter_subset_left - theorem multiset.inter_subset_right + theorem multiset.le_erase_dup + theorem multiset.le_iff_subset + theorem multiset.le_inter_iff + theorem multiset.le_ndinsert_self + theorem multiset.le_ndinter + theorem multiset.le_ndunion_left + theorem multiset.le_ndunion_right + theorem multiset.le_zero + theorem multiset.length_ndinsert_of_mem + theorem multiset.length_ndinsert_of_not_mem + theorem multiset.mem_add - theorem multiset.mem_erase + theorem multiset.mem_erase_dup + theorem multiset.mem_erase_iff_of_nodup - theorem multiset.mem_erase_of_ne_of_mem + theorem multiset.mem_erase_of_nodup +/- theorem multiset.mem_filter - theorem multiset.mem_image_iff +/- theorem multiset.mem_inter - theorem multiset.mem_inter_of_mem + theorem multiset.mem_ndinsert + theorem multiset.mem_ndinsert_of_mem + theorem multiset.mem_ndinsert_self + theorem multiset.mem_ndinter + theorem multiset.mem_ndunion +/- theorem multiset.mem_of_le +/- theorem multiset.mem_of_mem_erase - theorem multiset.mem_of_mem_inter_left - theorem multiset.mem_of_mem_inter_right +/- theorem multiset.mem_of_subset +/- theorem multiset.mem_range - theorem multiset.mem_sdiff_iff + theorem multiset.mem_union + theorem multiset.ndinsert_le + theorem multiset.ndinsert_of_mem + theorem multiset.ndinsert_of_not_mem + theorem multiset.ndinsert_zero + def multiset.ndinter + theorem multiset.ndinter_cons_of_not_mem + theorem multiset.ndinter_eq_inter + theorem multiset.ndinter_eq_zero_iff_disjoint + theorem multiset.ndinter_le_left + theorem multiset.ndinter_le_right + theorem multiset.ndinter_subset_right + def multiset.ndunion + theorem multiset.ndunion_eq_union + theorem multiset.ndunion_le + theorem multiset.ndunion_le_add + theorem multiset.ndunion_le_union - theorem multiset.ne_empty_of_card_eq_succ - theorem multiset.ne_of_mem_erase + theorem multiset.nodup_add + theorem multiset.nodup_add_of_nodup + theorem multiset.nodup_cons + theorem multiset.nodup_cons_of_nodup + theorem multiset.nodup_erase_dup + theorem multiset.nodup_erase_eq_filter + theorem multiset.nodup_erase_of_nodup + theorem multiset.nodup_ext + theorem multiset.nodup_filter + theorem multiset.nodup_iff_count_le_one + theorem multiset.nodup_iff_le + theorem multiset.nodup_inter_of_nodup + theorem multiset.nodup_map + theorem multiset.nodup_map_on + theorem multiset.nodup_ndinsert + theorem multiset.nodup_ndinter + theorem multiset.nodup_ndunion + theorem multiset.nodup_of_le + theorem multiset.nodup_of_nodup_cons + theorem multiset.nodup_of_nodup_map + theorem multiset.nodup_product + theorem multiset.nodup_range + theorem multiset.nodup_singleton + theorem multiset.nodup_zero - theorem multiset.not_mem_erase + theorem multiset.not_mem_of_nodup_cons +/- theorem multiset.not_mem_range_self + theorem multiset.not_nodup_pair +/- def multiset.range + theorem multiset.range_le +/- theorem multiset.range_subset - theorem multiset.range_succ - theorem multiset.range_zero - theorem multiset.sdiff_inter_self - theorem multiset.sdiff_subset_sdiff - theorem multiset.sdiff_union_of_subset + theorem multiset.singleton_disjoint - theorem multiset.singleton_inter_of_mem - theorem multiset.singleton_inter_of_not_mem + theorem multiset.sub_le_self +/- theorem multiset.subset.refl +/- theorem multiset.subset.trans + theorem multiset.subset_erase_dup +/- theorem multiset.subset_iff - theorem multiset.subset_insert_iff - theorem multiset.subset_insert_of_erase_subset - theorem multiset.subset_inter + theorem multiset.subset_ndunion_left +/- theorem multiset.subset_of_le + theorem multiset.union_def - theorem multiset.union_distrib_left - theorem multiset.union_distrib_right + theorem multiset.union_le_add + theorem multiset.union_le_iff + theorem multiset.zero_disjoint + theorem multiset.zero_ndinter + theorem multiset.zero_ndunion +/- theorem multiset.zero_subset 2017-11-19 21:14:37-05:00 76a5fea fix(*): finish converting structure notation to {, ..s} style ESTIMATED CHANGES Modified analysis/measure_theory/measurable_space.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/finset/basic.lean Modified data/multiset/basic.lean Modified data/num/lemmas.lean Modified data/pfun.lean Modified data/rat.lean Modified data/seq/computation.lean Modified data/set/lattice.lean Modified order/basic.lean Modified order/boolean_algebra.lean Modified order/bounded_lattice.lean Modified order/complete_boolean_algebra.lean Modified order/complete_lattice.lean Modified order/filter.lean Modified order/lattice.lean Modified tactic/converter/binders.lean Modified tactic/converter/old_conv.lean Modified tactic/finish.lean 2017-11-19 19:49:02-05:00 5d65b0a fix(algebra/ring): update to lean ESTIMATED CHANGES Modified algebra/module.lean Modified algebra/ring.lean 2017-11-19 05:53:48-05:00 8067812 feat(data/multiset): filter, count, distrib lattice ESTIMATED CHANGES Modified data/list/basic.lean - theorem list.count_cons_ge_count + theorem list.count_le_count_cons +/- theorem list.count_pos - theorem list.count_pos_of_mem + theorem list.countp_pos - theorem list.countp_pos_of_mem + theorem list.diff_append + theorem list.eq_of_sublist_of_length_le - theorem list.exists_mem_of_countp_pos + theorem list.length_pos_iff_exists_mem +/- theorem list.map_const - theorem list.mem_of_count_pos Modified data/list/perm.lean Modified data/multiset/basic.lean + theorem multiset.add_inter_distrib + theorem multiset.add_union_distrib +/- theorem multiset.card_add + theorem multiset.card_pos_iff_exists_mem + theorem multiset.card_repeat + theorem multiset.card_sub + theorem multiset.coe_count + theorem multiset.coe_countp + theorem multiset.coe_filter + def multiset.count + theorem multiset.count_add + theorem multiset.count_cons_of_ne + theorem multiset.count_cons_self + theorem multiset.count_eq_zero + theorem multiset.count_eq_zero_of_not_mem + theorem multiset.count_erase_of_ne + theorem multiset.count_erase_self + theorem multiset.count_inter + theorem multiset.count_le_count_cons + theorem multiset.count_le_of_le + theorem multiset.count_pos + theorem multiset.count_repeat + theorem multiset.count_singleton + theorem multiset.count_sub + theorem multiset.count_union + theorem multiset.count_zero + def multiset.countp + theorem multiset.countp_add + theorem multiset.countp_cons_of_neg + theorem multiset.countp_cons_of_pos + theorem multiset.countp_eq_card_filter + theorem multiset.countp_le_of_le + theorem multiset.countp_pos + theorem multiset.countp_pos_of_mem + theorem multiset.countp_sub + theorem multiset.countp_zero - theorem multiset.empty_subset - theorem multiset.eq_empty_of_forall_not_mem - theorem multiset.eq_empty_of_subset_empty +/- theorem multiset.eq_of_le_of_card_le + theorem multiset.eq_of_mem_map_const + theorem multiset.eq_of_mem_repeat + theorem multiset.eq_repeat' + theorem multiset.eq_repeat + theorem multiset.eq_repeat_of_mem + theorem multiset.eq_zero_of_forall_not_mem +/- theorem multiset.eq_zero_of_le_zero + theorem multiset.eq_zero_of_subset_zero - theorem multiset.exists_mem_of_ne_empty + theorem multiset.exists_mem_of_ne_zero + theorem multiset.ext + def multiset.filter + theorem multiset.filter_add + theorem multiset.filter_cons_of_neg + theorem multiset.filter_cons_of_pos + theorem multiset.filter_eq_nil + theorem multiset.filter_eq_self + theorem multiset.filter_inter + theorem multiset.filter_le + theorem multiset.filter_le_filter + theorem multiset.filter_sub +/- theorem multiset.filter_subset +/- theorem multiset.filter_union + theorem multiset.filter_zero + theorem multiset.inf_eq_inter + theorem multiset.inter_add_distrib + theorem multiset.le_count_iff_repeat_le + theorem multiset.le_filter + theorem multiset.le_iff_count + theorem multiset.map_const +/- theorem multiset.mem_filter + theorem multiset.mem_filter_of_mem + theorem multiset.mem_of_mem_filter - theorem multiset.not_mem_empty + theorem multiset.not_mem_zero + theorem multiset.of_mem_filter + def multiset.repeat + theorem multiset.repeat_le_coe + theorem multiset.repeat_subset_singleton +/- theorem multiset.singleton_coe + theorem multiset.sub_add' + theorem multiset.sub_add_inter + theorem multiset.sub_inter - theorem multiset.subset_empty_iff + theorem multiset.subset_zero_iff + theorem multiset.sup_eq_union + theorem multiset.union_add_distrib + theorem multiset.union_add_inter + theorem multiset.zero_subset Modified data/nat/basic.lean + theorem nat.pred_sub + theorem nat.sub_add_eq_max + theorem nat.sub_add_min + theorem nat.sub_min 2017-11-19 00:41:14-05:00 f9de183 feat(data/multiset): working on multisets, fix rcases bug ESTIMATED CHANGES Modified algebra/functions.lean + theorem max_min_distrib_left + theorem max_min_distrib_right + theorem min_max_distrib_left + theorem min_max_distrib_right Modified analysis/topology/uniform_space.lean Modified data/list/basic.lean + theorem list.bag_inter_nil + theorem list.bag_inter_sublist_left + theorem list.cons_bag_inter_of_neg + theorem list.cons_bag_inter_of_pos + theorem list.length_bind + theorem list.length_join + theorem list.mem_bag_inter + theorem list.mem_erase_of_ne - theorem list.mem_erase_of_ne_of_mem + theorem list.nil_bag_inter + theorem list.nth_range' + theorem list.nth_range - def list.permutations_aux.F - def list.permutations_aux.eqn_1 - def list.permutations_aux.eqn_2 + def list.permutations_aux.rec +/- def list.permutations_aux2 +/- def list.permutations_aux + theorem list.permutations_aux_cons + theorem list.permutations_aux_nil + theorem list.sum_const_nat Modified data/list/perm.lean + theorem list.foldr_permutations_aux2 + theorem list.length_foldr_permutations_aux2' + theorem list.length_foldr_permutations_aux2 + theorem list.length_permutations + theorem list.length_permutations_aux2 + theorem list.length_permutations_aux + theorem list.mem_foldr_permutations_aux2 + theorem list.mem_permutations + theorem list.mem_permutations_aux2' + theorem list.mem_permutations_aux2 + theorem list.mem_permutations_aux_of_perm + theorem list.mem_permutations_of_perm_lemma + theorem list.perm_bag_inter_left + theorem list.perm_bag_inter_right +/- theorem list.perm_diff_right + theorem list.perm_nil + theorem list.perm_of_mem_permutations + theorem list.perm_of_mem_permutations_aux + theorem list.permutations_aux2_append + theorem list.permutations_aux2_fst + theorem list.permutations_aux2_snd_cons + theorem list.permutations_aux2_snd_nil Modified data/multiset/basic.lean + theorem multiset.add_bind + theorem multiset.add_product + def multiset.bind + theorem multiset.coe_bind +/- theorem multiset.coe_eq_coe +/- theorem multiset.coe_foldl +/- theorem multiset.coe_foldr + theorem multiset.coe_map + theorem multiset.coe_prod + theorem multiset.coe_product + theorem multiset.cons_bind + theorem multiset.cons_inter_of_neg + theorem multiset.cons_inter_of_pos + theorem multiset.cons_product + theorem multiset.foldl_add + theorem multiset.foldl_cons + theorem multiset.foldl_zero + theorem multiset.foldr_add + theorem multiset.foldr_cons + theorem multiset.foldr_zero + def multiset.inter +/- theorem multiset.inter_comm + theorem multiset.inter_le_left + theorem multiset.inter_le_right + theorem multiset.inter_zero + theorem multiset.join_add + theorem multiset.join_cons + theorem multiset.join_zero + theorem multiset.le_inter +/- theorem multiset.le_union_left +/- theorem multiset.le_union_right + theorem multiset.map_add + theorem multiset.map_cons + theorem multiset.map_map + theorem multiset.map_zero + theorem multiset.mem_erase_of_ne +/- theorem multiset.mem_erase_of_ne_of_mem + theorem multiset.prod_add + theorem multiset.prod_cons + theorem multiset.prod_eq_foldl - def multiset.prod_eq_foldl + theorem multiset.prod_eq_foldr - def multiset.prod_eq_foldr + theorem multiset.prod_zero + def multiset.product + theorem multiset.product_add - def multiset.sum +/- theorem multiset.union_comm + theorem multiset.zero_bind + theorem multiset.zero_inter + theorem multiset.zero_product Modified data/quot.lean - theorem quot_mk_image_univ_eq + theorem quotient.eq Modified data/set/basic.lean + theorem set.quot_mk_image_univ_eq Modified order/boolean_algebra.lean Modified order/lattice.lean + theorem lattice.sup_le_sup_left + theorem lattice.sup_le_sup_right Modified tactic/rcases.lean Modified theories/set_theory.lean +/- inductive pSet.definable 2017-11-18 23:18:32-05:00 d579a56 fix(*): update to lean ESTIMATED CHANGES Modified algebra/module.lean Modified algebra/ordered_group.lean Modified algebra/ordered_ring.lean Modified algebra/ring.lean Modified analysis/ennreal.lean Modified analysis/metric_space.lean Modified analysis/real.lean Modified analysis/topology/topological_structures.lean Modified order/filter.lean 2017-11-15 13:52:33-05:00 6e9d2d5 fix(data/num): update to lean ESTIMATED CHANGES Modified data/num/basic.lean Modified data/num/lemmas.lean 2017-11-10 11:32:15+01:00 afddab6 chore(algebra/module): hide ring parameters, vector_space is no a proper class, remove dual, change variables to implicits the ring type is often unnecessary it can be computed from the module instance. Also a lot of parameters to lemmas should be implicits as they can be computed from assumptions or the expteced type.. @kckennylau: I removed `dual` as it does not make sense to take about all possible *module structures* possible on the function space `linear_map α β α`. I guess `dual` should be just `linear_map α β α`. ESTIMATED CHANGES Modified algebra/module.lean +/- def linear_map.im +/- def linear_map.ker +/- theorem linear_map.ker_of_map_eq_map +/- theorem linear_map.mem_ker +/- structure linear_map - def module.dual +/- theorem module.mul_app +/- theorem smul_smul +/- theorem submodule.neg +/- theorem submodule.sub +/- def subspace - def vector_space 2017-11-10 05:26:42-05:00 0f8a5c8 refactor(algebra/group): Use a user attr for to_additive Parts of this commit are redundant pending leanprover/lean#1857 . ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.prod_congr +/- theorem finset.prod_const_one +/- theorem finset.prod_empty +/- theorem finset.prod_image +/- theorem finset.prod_insert +/- theorem finset.prod_inv_distrib +/- theorem finset.prod_singleton +/- theorem finset.prod_to_finset_of_nodup - theorem list.prod_append - theorem list.prod_cons - theorem list.prod_eq_of_perm - theorem list.prod_join - theorem list.prod_nil - theorem list.prod_repeat - theorem list.prod_reverse Modified algebra/group.lean +/- theorem inv_eq_one +/- theorem inv_inj' +/- theorem inv_ne_one +/- theorem mul_left_inj +/- theorem mul_right_inj +/- theorem mul_self_iff_eq_one Modified algebra/group_power.lean + theorem list.prod_repeat Modified data/finset/fold.lean - theorem list.fold_op_eq_of_perm - theorem list.foldl_assoc - theorem list.foldl_assoc_comm_cons - theorem list.foldl_op_eq_op_foldr_assoc - theorem list.map_congr Modified data/list/basic.lean + theorem list.foldl_assoc + theorem list.foldl_assoc_comm_cons + theorem list.foldl_op_eq_op_foldr_assoc + theorem list.map_congr + theorem list.prod_append + theorem list.prod_cons + theorem list.prod_join + theorem list.prod_nil - def list.sum Modified data/list/perm.lean + theorem list.fold_op_eq_of_perm + theorem list.prod_eq_of_perm + theorem list.prod_reverse Modified data/nat/basic.lean +/- theorem nat.size_one 2017-11-09 12:33:00+01:00 04dd132 feat(algebra/big_operators): exists_ne_(one|zero)_of_(prod|sum)_ne_(one|zero) ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.exists_ne_one_of_prod_ne_one 2017-11-09 12:33:00+01:00 5923cd0 feat(data/set/finite): finite_of_finite_image ESTIMATED CHANGES Modified data/set/finite.lean + theorem set.finite_of_finite_image Modified logic/function.lean + theorem function.inv_fun_comp 2017-11-07 19:26:04-05:00 d95bff0 refactor(data/hash_map): improve hash_map proof Decrease dependence on implementation details of `array` ESTIMATED CHANGES Modified data/array/lemmas.lean +/- theorem array.rev_list_length +/- theorem array.rev_list_reverse +/- theorem array.to_list_length + theorem array.to_list_nth_le' +/- theorem array.to_list_reverse + theorem array.write_to_list Modified data/hash_map.lean +/- def bucket_array.as_list - theorem bucket_array.foldl_eq_lem + theorem hash_map.mk_valid - theorem hash_map.valid.as_list_length - theorem hash_map.valid.eq' - theorem hash_map.valid.eq +/- theorem hash_map.valid.find_aux_iff + theorem hash_map.valid.idx_enum + theorem hash_map.valid.idx_enum_1 - theorem hash_map.valid.mk +/- theorem hash_map.valid.modify - theorem hash_map.valid.nodup - theorem hash_map.valid.nodupd + structure hash_map.valid - def hash_map.valid - theorem hash_map.valid_aux.eq - theorem hash_map.valid_aux.nodup - theorem hash_map.valid_aux.unfold_cons - inductive hash_map.valid_aux Modified data/list/basic.lean + theorem list.drop_eq_nth_le_cons + theorem list.join_append + theorem list.modify_nth_eq_take_cons_drop + theorem list.modify_nth_length + theorem list.modify_nth_tail_length +/- theorem list.nth_update_nth_of_lt + theorem list.update_nth_eq_take_cons_drop + theorem list.update_nth_length Modified tactic/interactive.lean 2017-11-07 06:09:41-05:00 4ae6a57 fix(data/array): update to lean ESTIMATED CHANGES Modified data/array/lemmas.lean + theorem array.mem.def - theorem array.mem_iff_list_mem - theorem array.mem_iff_rev_list_mem - theorem array.mem_iff_rev_list_mem_core + theorem array.mem_rev_list + theorem array.mem_rev_list_core + theorem array.mem_to_list + theorem array.mem_to_list_enum +/- theorem array.push_back_rev_list +/- theorem array.push_back_rev_list_core +/- theorem array.push_back_to_list + theorem array.read_foreach - def array.read_foreach + theorem array.read_foreach_aux - def array.read_foreach_aux + theorem array.read_map - def array.read_map + theorem array.read_map₂ - def array.read_map₂ - theorem array.read_write - theorem array.read_write_eq - theorem array.read_write_ne + theorem array.rev_list_foldr + theorem array.rev_list_foldr_aux +/- theorem array.rev_list_length +/- theorem array.rev_list_length_aux +/- theorem array.rev_list_reverse +/- theorem array.rev_list_reverse_core + theorem array.to_list_foldl +/- theorem array.to_list_length +/- theorem array.to_list_nth - theorem array.to_list_nth_core + theorem array.to_list_nth_le + theorem array.to_list_nth_le_core +/- theorem array.to_list_reverse +/- theorem array.to_list_to_array Modified data/hash_map.lean + theorem hash_map.valid.nodupd Modified data/list/basic.lean + theorem list.enum_from_map_fst + theorem list.enum_from_map_snd + theorem list.enum_from_nth + theorem list.enum_map_fst + theorem list.enum_map_snd + theorem list.enum_nth +/- theorem list.eq_nil_of_map_eq_nil +/- theorem list.ext +/- theorem list.foldl_append + theorem list.foldl_join + theorem list.foldr_join + theorem list.infix_of_mem_join + theorem list.length_enum + theorem list.length_enum_from + theorem list.map_join + theorem list.mem_iff_nth + theorem list.mem_iff_nth_le + def list.modify_head + def list.modify_nth + theorem list.modify_nth_eq_take_drop + theorem list.modify_nth_eq_update_nth + def list.modify_nth_tail + theorem list.modify_nth_tail_eq_take_drop + theorem list.nth_eq_some +/- theorem list.nth_ge_len + theorem list.nth_le_mem +/- theorem list.nth_le_nth + theorem list.nth_le_of_mem +/- theorem list.nth_le_reverse_aux1 +/- theorem list.nth_le_reverse_aux2 + theorem list.nth_mem + theorem list.nth_modify_nth + theorem list.nth_modify_nth_eq + theorem list.nth_modify_nth_ne + theorem list.nth_of_mem + theorem list.nth_update_nth_eq + theorem list.nth_update_nth_ne + theorem list.nth_update_nth_of_lt + theorem list.pairwise.and_mem - theorem list.pairwise.iff_mem + theorem list.pairwise.iff_of_mem + theorem list.pairwise.imp_mem + theorem list.pairwise.imp_of_mem + theorem list.remove_nth_eq_nth_tail +/- def list.to_array + theorem list.update_nth_eq_modify_nth 2017-11-06 11:35:36+01:00 2bc7fd4 feat(data/cardinal): theory for cardinal arithmetic ESTIMATED CHANGES Added data/cardinal.lean + theorem cardinal.add_mono + theorem cardinal.mul_mono + theorem cardinal.mul_power + theorem cardinal.one_power + theorem cardinal.power_mono_left + theorem cardinal.power_mono_right + theorem cardinal.power_mul + theorem cardinal.power_sum + theorem cardinal.power_zero + theorem cardinal.zero_power + def cardinal.ω + def cardinal + theorem embedding.antisymm + def embedding.arrow_congr_left + def embedding.arrow_congr_right + theorem embedding.exists_injective_or_surjective + def embedding.option.Sup + theorem embedding.option.Sup_le + theorem embedding.option.eq_of_le_some + inductive embedding.option.le + theorem embedding.option.le_Sup + theorem embedding.option.mem_of_Sup_eq_some + def embedding.option.strict_partial_order + def embedding.pfun.partial_order + def embedding.pfun + def embedding.prod_congr + theorem embedding.schroeder_bernstein + def embedding.sum_congr + theorem embedding.total + structure embedding + theorem equiv.of_bijective Modified data/equiv.lean + theorem equiv.arrow_empty_unit + theorem equiv.empty_of_not_nonempty Modified data/set/lattice.lean + theorem image_congr 2017-11-06 03:28:38-05:00 d62cefd refactor(algebra/module): clean up PR commit ESTIMATED CHANGES Modified algebra/module.lean - theorem eq_zero_of_add_self_eq +/- theorem linear_map.add_app +/- theorem linear_map.ext - theorem linear_map.im.add_im - theorem linear_map.im.mem_im - theorem linear_map.im.neg_im - theorem linear_map.im.smul_im - theorem linear_map.im.zero_im +/- def linear_map.im + theorem linear_map.inj_of_trivial_ker - theorem linear_map.ker.inj_of_trivial_ker - theorem linear_map.ker.ker_of_map_eq_map - theorem linear_map.ker.mem_ker - theorem linear_map.ker.sub_ker +/- def linear_map.ker + theorem linear_map.ker_of_map_eq_map +/- theorem linear_map.map_add_app +/- theorem linear_map.map_neg +/- theorem linear_map.map_smul_app +/- theorem linear_map.map_sub + theorem linear_map.mem_im + theorem linear_map.mem_ker +/- theorem linear_map.neg_app +/- theorem linear_map.smul_app + theorem linear_map.sub_ker +/- theorem linear_map.zero_app +/- structure linear_map - theorem module.add_comp - theorem module.comp_add - theorem module.comp_app - theorem module.comp_assoc - theorem module.comp_id +/- def module.dual +/- def module.endomorphism_ring +/- def module.general_linear_group - def module.id - theorem module.id_app - theorem module.id_comp + theorem module.mul_app + theorem module.one_app +/- theorem mul_smul + theorem neg_one_smul +/- theorem neg_smul +/- theorem one_smul +/- theorem smul_left_distrib +/- theorem smul_neg +/- theorem smul_right_distrib +/- theorem smul_smul +/- theorem smul_sub_left_distrib +/- theorem smul_zero +/- theorem sub_smul_right_distrib +/- theorem submodule.add_val + theorem submodule.neg +/- theorem submodule.neg_val +/- theorem submodule.smul_val +/- theorem submodule.sub +/- theorem submodule.zero_val + def subspace + def vector_space +/- theorem zero_smul Modified algebra/ring.lean + theorem units.ext - def units.ext + theorem units.inv_coe +/- theorem units.inv_mul - theorem units.inv_val' + theorem units.mul_coe - theorem units.mul_four + theorem units.mul_inv - theorem units.mul_val + theorem units.one_coe - theorem units.one_val + theorem units.val_coe Deleted algebra/vector_space.lean - def vector_space.dual - def vector_space.general_linear_group 2017-11-06 01:31:01-05:00 5cb7fb0 feat(algebra/vector_space): modules and vector spaces, linear spaces ESTIMATED CHANGES Modified algebra/module.lean + theorem eq_zero_of_add_self_eq + theorem linear_map.add_app + theorem linear_map.ext + theorem linear_map.im.add_im + theorem linear_map.im.mem_im + theorem linear_map.im.neg_im + theorem linear_map.im.smul_im + theorem linear_map.im.zero_im + def linear_map.im + theorem linear_map.ker.inj_of_trivial_ker + theorem linear_map.ker.ker_of_map_eq_map + theorem linear_map.ker.mem_ker + theorem linear_map.ker.sub_ker + def linear_map.ker + theorem linear_map.map_add_app + theorem linear_map.map_neg + theorem linear_map.map_smul_app + theorem linear_map.map_sub + theorem linear_map.map_zero + theorem linear_map.neg_app + theorem linear_map.smul_app + theorem linear_map.zero_app + structure linear_map + theorem module.add_comp + theorem module.comp_add + theorem module.comp_app + theorem module.comp_assoc + theorem module.comp_id + def module.dual + def module.endomorphism_ring + def module.general_linear_group + def module.id + theorem module.id_app + theorem module.id_comp - def ring.to_module + theorem smul_smul + theorem submodule.add_val + theorem submodule.neg_val + theorem submodule.smul_val + theorem submodule.sub + theorem submodule.zero_val Modified algebra/ring.lean + def units.ext + theorem units.inv_mul + theorem units.inv_val' + theorem units.mul_four + theorem units.mul_val + theorem units.one_val + structure units Added algebra/vector_space.lean + def vector_space.dual + def vector_space.general_linear_group 2017-11-06 01:26:58-05:00 0947f96 feat(data/multiset): working on multiset.union ESTIMATED CHANGES Modified algebra/group.lean Modified data/int/basic.lean + theorem int.mul_sign Modified data/list/basic.lean + theorem list.erase_sublist_erase + theorem list.sublist_or_mem_of_sublist Modified data/multiset/basic.lean +/- theorem multiset.add_cons + theorem multiset.add_sub_cancel + theorem multiset.add_sub_cancel_left +/- theorem multiset.add_sub_of_le + theorem multiset.cons_add +/- theorem multiset.eq_cons_erase + theorem multiset.eq_union_left + theorem multiset.eq_union_right + theorem multiset.erase_le_erase + theorem multiset.erase_le_iff_le_cons + theorem multiset.insert_eq_cons + theorem multiset.le_cons_erase + theorem multiset.le_cons_of_not_mem + theorem multiset.le_sub_add + theorem multiset.le_union_left + theorem multiset.le_union_right +/- theorem multiset.mem_singleton +/- theorem multiset.mem_singleton_self + def multiset.ndinsert + def multiset.nodup +/- theorem multiset.singleton_inj +/- theorem multiset.singleton_ne_zero +/- theorem multiset.sub_add_cancel + theorem multiset.sub_le_iff_le_add + theorem multiset.sub_le_sub_left + theorem multiset.sub_le_sub_right + def multiset.union + theorem multiset.union_comm + theorem multiset.union_le + theorem multiset.union_le_union_left + theorem multiset.union_le_union_right 2017-11-05 17:42:46-05:00 2aa6c87 feat(tactic/norm_num): add support for inv and locations in norm_num ESTIMATED CHANGES Modified tactic/norm_num.lean Modified tests/norm_num.lean 2017-11-05 01:30:21-04:00 d743fdf feat(data/sigma): duplicate sigma basics for psigma ESTIMATED CHANGES Modified data/sigma/basic.lean + def psigma.map + theorem psigma.mk_eq_mk_iff +/- def sigma.map +/- theorem sigma.mk_eq_mk_iff 2017-11-05 00:29:59-05:00 8e99f98 fix(algebra/field): update to lean ESTIMATED CHANGES Modified algebra/field.lean - theorem division_ring.inv_inv - theorem division_ring.one_div_div - theorem inv_ne_zero Modified algebra/ring.lean + theorem mul_neg_one - theorem mul_neg_one_eq_neg + theorem neg_one_mul 2017-11-02 17:13:43-04:00 2da9bef feat(data/nat/cast,...): add char_zero typeclass for cast_inj As pointed out by @kbuzzard, the complex numbers are an important example of an unordered characteristic zero field for which we will want cast_inj to be available. ESTIMATED CHANGES Modified data/int/basic.lean +/- theorem int.cast_eq_zero +/- theorem int.cast_inj +/- theorem int.cast_ne_zero Modified data/nat/cast.lean + theorem add_group.char_zero_of_inj_zero + theorem char_zero_of_inj_zero +/- theorem nat.cast_eq_zero +/- theorem nat.cast_inj +/- theorem nat.cast_ne_zero + theorem ordered_cancel_comm_monoid.char_zero_of_inj_zero Modified data/rat.lean +/- theorem rat.cast_add +/- theorem rat.cast_bit0 +/- theorem rat.cast_bit1 +/- theorem rat.cast_div +/- theorem rat.cast_eq_zero +/- theorem rat.cast_inj +/- theorem rat.cast_inv +/- theorem rat.cast_mk +/- theorem rat.cast_mul +/- theorem rat.cast_ne_zero +/- theorem rat.cast_sub 2017-11-02 02:32:37-04:00 2883c1b feat(data/num/lemmas): finish znum isomorphism proof ESTIMATED CHANGES Modified data/num/lemmas.lean + theorem num.cast_add +/- theorem num.cast_inj +/- theorem num.cast_le +/- theorem num.cast_lt +/- theorem num.cast_mul +/- theorem pos_num.cast_inj +/- theorem pos_num.cast_le +/- theorem pos_num.cast_lt +/- theorem pos_num.cast_mul - theorem znum.add_of_nat +/- theorem znum.cast_add + theorem znum.cast_inj + theorem znum.cast_le + theorem znum.cast_lt + theorem znum.cast_mul + theorem znum.cast_succ + theorem znum.cmp_to_int + theorem znum.le_to_int + theorem znum.lt_to_int + theorem znum.mul_to_int + theorem znum.to_int_inj + theorem znum.to_of_int 2017-11-02 00:06:37-04:00 efb37f8 fix(theories/set_theory): workaround for noncomputability bug in lean ESTIMATED CHANGES Modified theories/set_theory.lean 2017-11-01 22:19:53-04:00 0c0c007 test(tests/norm_num): more tests from #16 ESTIMATED CHANGES Modified tactic/norm_num.lean Modified tests/norm_num.lean 2017-11-01 22:14:14-04:00 7339f59 fix(tactic/norm_num): bugfix ESTIMATED CHANGES Modified tactic/norm_num.lean Modified tests/norm_num.lean 2017-11-01 21:23:52-04:00 5a262df fix(tactic/norm_num): fix performance bug in norm_num ESTIMATED CHANGES Modified tactic/norm_num.lean Modified tests/norm_num.lean 2017-11-01 04:36:53-04:00 6eedc0e feat(tactic/norm_num): rewrite norm_num to use simp instead of reflection ESTIMATED CHANGES Modified tactic/interactive.lean Modified tactic/norm_num.lean - theorem norm_num.bit0_le_one - theorem norm_num.bit0_le_zero + theorem norm_num.bit0_zero - theorem norm_num.bit1_le_bit0 - theorem norm_num.bit1_le_one - theorem norm_num.bit1_le_zero + theorem norm_num.bit1_zero + theorem norm_num.lt_add_of_pos_helper - theorem norm_num.one_le_bit0 - theorem norm_num.one_le_bit1 - theorem norm_num.one_le_one - theorem norm_num.pow_bit0 +/- theorem norm_num.pow_bit0_helper - theorem norm_num.pow_bit1 +/- theorem norm_num.pow_bit1_helper - theorem norm_num.pow_eq_pow_nat - theorem norm_num.pow_eq_pow_nat_helper - theorem norm_num.pow_one - theorem norm_num.pow_zero - theorem norm_num.zero_le_bit0 - theorem norm_num.zero_le_bit1 - theorem norm_num.zero_le_one - theorem norm_num.zero_le_zero - def num.add1 - def num.add_n - theorem num.bit0_le_bit0 - theorem num.denote_add1 - theorem num.denote_le_denote_of_num_le - theorem num.denote_le_denote_of_pos_num_le - theorem num.denote_le_denote_of_znum_le - def num.num_le - theorem num.one_le_denote - def num.pos_le - theorem num.zero_le_denote - def num.znum_le - inductive tactic.interactive.denotation - def tactic.interactive.znum.to_neg - def tactic.interactive.znum.to_pos Modified tests/norm_num.lean 2017-11-01 04:35:13-04:00 0663945 feat(data/num,data/multiset): more properties of binary numbers, begin multisets ESTIMATED CHANGES Modified algebra/field.lean + theorem division_ring.inv_div + theorem division_ring.inv_inv + theorem division_ring.one_div_div + theorem inv_ne_zero Modified algebra/group_power.lean + theorem has_pow_nat_eq_pow_nat + theorem pow_bit0 + theorem pow_bit1 Modified algebra/ordered_group.lean + theorem bit0_pos Modified algebra/ordered_ring.lean + theorem bit1_pos' + theorem bit1_pos Modified data/int/basic.lean + theorem int.cast_coe_nat' Added data/multiset/basic.lean + theorem multiset.add_cons + theorem multiset.add_sub_of_le + def multiset.card + theorem multiset.card_add + theorem multiset.card_cons + theorem multiset.card_empty + theorem multiset.card_erase_of_mem + theorem multiset.card_insert_le + theorem multiset.card_insert_of_not_mem + theorem multiset.card_le_of_le + theorem multiset.card_lt_of_lt + theorem multiset.card_range + theorem multiset.card_zero + theorem multiset.coe_add + theorem multiset.coe_card + theorem multiset.coe_eq_coe + theorem multiset.coe_erase + theorem multiset.coe_foldl + theorem multiset.coe_foldr + theorem multiset.coe_foldr_swap + theorem multiset.coe_join + theorem multiset.coe_le + theorem multiset.coe_nil_eq_zero + theorem multiset.coe_reverse + theorem multiset.coe_sub + def multiset.cons + theorem multiset.cons_coe + theorem multiset.cons_inj_left + theorem multiset.cons_inj_right + theorem multiset.cons_le_cons + theorem multiset.cons_le_cons_iff + theorem multiset.cons_swap + theorem multiset.empty_inter + theorem multiset.empty_subset + theorem multiset.eq_cons_erase + theorem multiset.eq_empty_of_card_eq_zero + theorem multiset.eq_empty_of_forall_not_mem + theorem multiset.eq_empty_of_subset_empty + theorem multiset.eq_of_le_of_card_le + theorem multiset.eq_zero_of_le_zero + def multiset.erase + theorem multiset.erase_add_left_neg + theorem multiset.erase_add_left_pos + theorem multiset.erase_add_right_neg + theorem multiset.erase_add_right_pos + theorem multiset.erase_comm + theorem multiset.erase_cons_head + theorem multiset.erase_cons_tail + theorem multiset.erase_dup_map_erase_dup_eq + theorem multiset.erase_empty + theorem multiset.erase_eq_of_not_mem + theorem multiset.erase_insert + theorem multiset.erase_insert_subset + theorem multiset.erase_le + theorem multiset.erase_of_not_mem + theorem multiset.erase_subset + theorem multiset.erase_subset_erase + theorem multiset.erase_subset_of_subset_insert + theorem multiset.erase_zero + theorem multiset.exists_cons_of_mem + theorem multiset.exists_mem_empty_iff + theorem multiset.exists_mem_insert + theorem multiset.exists_mem_of_ne_empty + theorem multiset.exists_nat_subset_range + theorem multiset.filter_false + theorem multiset.filter_filter + theorem multiset.filter_inter_filter_neg_eq + theorem multiset.filter_subset + theorem multiset.filter_union + theorem multiset.filter_union_filter_neg_eq + def multiset.foldl + theorem multiset.foldl_swap + def multiset.foldr + theorem multiset.foldr_swap + theorem multiset.forall_mem_empty_iff + theorem multiset.forall_mem_insert + theorem multiset.image_empty + theorem multiset.image_eq_empty_iff + theorem multiset.image_filter + theorem multiset.image_id + theorem multiset.image_image + theorem multiset.image_insert + theorem multiset.image_inter + theorem multiset.image_singleton + theorem multiset.image_subset_image + theorem multiset.image_to_multiset + theorem multiset.image_to_multiset_of_nodup + theorem multiset.image_union + theorem multiset.insert_erase + theorem multiset.insert_erase_subset + theorem multiset.insert_inter_of_mem + theorem multiset.insert_inter_of_not_mem + theorem multiset.inter_assoc + theorem multiset.inter_comm + theorem multiset.inter_distrib_left + theorem multiset.inter_distrib_right + theorem multiset.inter_empty + theorem multiset.inter_insert_of_mem + theorem multiset.inter_insert_of_not_mem + theorem multiset.inter_left_comm + theorem multiset.inter_right_comm + theorem multiset.inter_self + theorem multiset.inter_singleton_of_mem + theorem multiset.inter_singleton_of_not_mem + theorem multiset.inter_subset_left + theorem multiset.inter_subset_right + def multiset.join + theorem multiset.le_add_left + theorem multiset.le_add_right + theorem multiset.le_cons_self + theorem multiset.le_iff_exists_add + theorem multiset.le_induction_on + theorem multiset.lt_cons_self + theorem multiset.lt_iff_cons_le + def multiset.map + def multiset.mem + theorem multiset.mem_coe + theorem multiset.mem_cons + theorem multiset.mem_cons_self + theorem multiset.mem_erase + theorem multiset.mem_erase_of_ne_of_mem + theorem multiset.mem_filter + theorem multiset.mem_image_iff + theorem multiset.mem_inter + theorem multiset.mem_inter_of_mem + theorem multiset.mem_map + theorem multiset.mem_map_of_inj + theorem multiset.mem_map_of_mem + theorem multiset.mem_of_le + theorem multiset.mem_of_mem_erase + theorem multiset.mem_of_mem_inter_left + theorem multiset.mem_of_mem_inter_right + theorem multiset.mem_of_subset + theorem multiset.mem_range + theorem multiset.mem_sdiff_iff + theorem multiset.mem_singleton + theorem multiset.mem_singleton_self + theorem multiset.ne_empty_of_card_eq_succ + theorem multiset.ne_of_mem_erase + theorem multiset.not_mem_empty + theorem multiset.not_mem_erase + theorem multiset.not_mem_range_self + def multiset.prod + def multiset.prod_eq_foldl + def multiset.prod_eq_foldr + theorem multiset.quot_mk_to_coe' + theorem multiset.quot_mk_to_coe + def multiset.range + theorem multiset.range_subset + theorem multiset.range_succ + theorem multiset.range_zero + theorem multiset.sdiff_inter_self + theorem multiset.sdiff_subset_sdiff + theorem multiset.sdiff_union_of_subset + theorem multiset.singleton_add + theorem multiset.singleton_coe + theorem multiset.singleton_inj + theorem multiset.singleton_inter_of_mem + theorem multiset.singleton_inter_of_not_mem + theorem multiset.singleton_ne_zero + theorem multiset.sub_add_cancel + theorem multiset.sub_cons + theorem multiset.sub_eq_fold_erase + theorem multiset.sub_zero + theorem multiset.subset.refl + theorem multiset.subset.trans + theorem multiset.subset_empty_iff + theorem multiset.subset_iff + theorem multiset.subset_insert_iff + theorem multiset.subset_insert_of_erase_subset + theorem multiset.subset_inter + theorem multiset.subset_of_le + def multiset.sum + theorem multiset.union_distrib_left + theorem multiset.union_distrib_right + theorem multiset.zero_le + def {u} Modified data/nat/basic.lean + def nat.ppred + theorem nat.ppred_eq_none + theorem nat.ppred_eq_pred + theorem nat.ppred_eq_some + theorem nat.pred_eq_ppred + def nat.psub + theorem nat.psub_add + theorem nat.psub_eq_none + theorem nat.psub_eq_some + theorem nat.psub_eq_sub + theorem nat.size_one + theorem nat.sub_eq_psub Modified data/nat/cast.lean +/- theorem nat.cast_bit0 +/- theorem nat.cast_bit1 Modified data/num/basic.lean - def num.of_nat + def num.of_znum' + def num.of_znum + def num.ppred + def num.psub + def num.sub' + def num.to_znum_neg + def pos_num.of_znum' + def pos_num.of_znum +/- def pos_num.pred' +/- def pos_num.pred - def pos_num.psub + def pos_num.sub' Modified data/num/lemmas.lean +/- theorem num.add_of_nat + theorem num.add_one + theorem num.add_to_nat + theorem num.add_to_znum + theorem num.bit0_of_bit0 + theorem num.bit1_of_bit1 - theorem num.cast_add - theorem num.cast_cmp' - theorem num.cast_cmp +/- theorem num.cast_one + theorem num.cast_sub' +/- theorem num.cast_succ' + theorem num.cast_to_int + theorem num.cast_to_nat + theorem num.cast_to_znum + theorem num.cast_to_znum_neg +/- theorem num.cast_zero + theorem num.cmp_to_nat + theorem num.le_to_nat + theorem num.lt_to_nat + theorem num.mul_to_nat +/- theorem num.of_nat_inj + theorem num.of_nat_to_znum + theorem num.of_nat_to_znum_neg + theorem num.ppred_to_nat + theorem num.succ'_to_nat + theorem num.succ_to_nat +/- theorem num.to_nat_inj + theorem num.zneg_to_znum + theorem num.zneg_to_znum_neg + theorem pos_num.add_to_nat +/- theorem pos_num.cast_add - theorem pos_num.cast_add_comm - theorem pos_num.cast_add_comm_lemma_1 - theorem pos_num.cast_add_comm_lemma_2 - theorem pos_num.cast_add_one_comm + theorem pos_num.cast_bit0 + theorem pos_num.cast_bit1 - theorem pos_num.cast_cmp' - theorem pos_num.cast_cmp +/- theorem pos_num.cast_mul +/- theorem pos_num.cast_one + theorem pos_num.cast_sub' +/- theorem pos_num.cast_succ + theorem pos_num.cast_to_int + theorem pos_num.cast_to_nat + theorem pos_num.cast_to_num + theorem pos_num.cast_to_znum + theorem pos_num.cmp_to_nat + theorem pos_num.cmp_to_nat_lemma + theorem pos_num.le_to_nat + theorem pos_num.lt_to_nat + theorem pos_num.mul_to_nat +/- theorem pos_num.of_to_nat - theorem pos_num.one_add +/- theorem pos_num.one_le_cast + theorem pos_num.one_sub' + theorem pos_num.pred'_succ' +/- theorem pos_num.pred'_to_nat + theorem pos_num.size_to_nat + theorem pos_num.sub'_one + theorem pos_num.succ'_pred' + theorem pos_num.succ_to_nat +/- theorem pos_num.to_nat_inj + theorem pos_num.to_nat_pos + theorem znum.add_of_nat + theorem znum.add_one + theorem znum.add_zero + theorem znum.bit0_of_bit0 + theorem znum.bit1_of_bit1 + theorem znum.cast_add + theorem znum.cast_bit0 + theorem znum.cast_bit1 + theorem znum.cast_bitm1 + theorem znum.cast_neg +/- theorem znum.cast_one + theorem znum.cast_pos + theorem znum.cast_to_int +/- theorem znum.cast_zero + theorem znum.cast_zneg + theorem znum.neg_of_int + theorem znum.neg_zero + theorem znum.of_to_int + theorem znum.zero_add + theorem znum.zneg_bit1 + theorem znum.zneg_bitm1 + theorem znum.zneg_neg + theorem znum.zneg_pos + theorem znum.zneg_pred + theorem znum.zneg_succ + theorem znum.zneg_zneg Modified data/option.lean - theorem option.bind_none +/- theorem option.bind_some + theorem option.none_bind + theorem option.some_bind Modified data/rat.lean + theorem rat.cast_div + theorem rat.cast_div_of_ne_zero + theorem rat.cast_inv + theorem rat.cast_inv_of_ne_zero Modified data/seq/seq.lean 2017-10-25 22:24:56-04:00 ff43691 fix(analysis/real): remove import for old file note: exists_subtype is now subtype.exists in logic/basic ESTIMATED CHANGES Modified analysis/real.lean 2017-10-25 21:55:10-04:00 3cd6229 refactor(analysis/real): use more coe instead of of_rat ESTIMATED CHANGES Modified analysis/ennreal.lean Modified analysis/measure_theory/borel_space.lean - theorem measure_theory.borel_eq_generate_from_Iio_of_rat + theorem measure_theory.borel_eq_generate_from_Iio_rat - theorem measure_theory.borel_eq_generate_from_Ioo_of_rat_of_rat + theorem measure_theory.borel_eq_generate_from_Ioo_rat - theorem measure_theory.is_topological_basis_Ioo_of_rat_of_rat + theorem measure_theory.is_topological_basis_Ioo_rat Modified analysis/measure_theory/lebesgue_measure.lean Modified analysis/real.lean - theorem exists_lt_of_rat_of_rat_gt + theorem exists_lt_rat + theorem exists_rat_btwn + theorem exists_rat_lt Modified data/int/basic.lean + theorem int.cast_abs + theorem int.cast_max + theorem int.cast_min Modified data/nat/cast.lean + theorem nat.cast_max + theorem nat.cast_min Modified data/rat.lean + theorem rat.cast_abs + theorem rat.cast_max + theorem rat.cast_min Deleted data/subtype.lean - theorem exists_subtype - theorem forall_subtype 2017-10-24 22:57:22-04:00 2dd035a Merge remote-tracking branch 'cipher1024/master' ESTIMATED CHANGES Added meta/expr.lean Added tactic/norm_num.lean + theorem norm_num.bit0_le_one + theorem norm_num.bit0_le_zero + theorem norm_num.bit1_le_bit0 + theorem norm_num.bit1_le_one + theorem norm_num.bit1_le_zero + theorem norm_num.one_le_bit0 + theorem norm_num.one_le_bit1 + theorem norm_num.one_le_one + theorem norm_num.pow_bit0 + theorem norm_num.pow_bit0_helper + theorem norm_num.pow_bit1 + theorem norm_num.pow_bit1_helper + theorem norm_num.pow_eq_pow_nat + theorem norm_num.pow_eq_pow_nat_helper + theorem norm_num.pow_one + theorem norm_num.pow_zero + theorem norm_num.zero_le_bit0 + theorem norm_num.zero_le_bit1 + theorem norm_num.zero_le_one + theorem norm_num.zero_le_zero + def num.add1 + def num.add_n + theorem num.bit0_le_bit0 + theorem num.denote_add1 + theorem num.denote_le_denote_of_num_le + theorem num.denote_le_denote_of_pos_num_le + theorem num.denote_le_denote_of_znum_le + def num.num_le + theorem num.one_le_denote + def num.pos_le + theorem num.zero_le_denote + def num.znum_le + inductive tactic.interactive.denotation + def tactic.interactive.znum.to_neg + def tactic.interactive.znum.to_pos Added tests/norm_num.lean 2017-10-24 22:31:12-04:00 dd9f766 feat(data/num,data/nat/cast,...): nat,num,int,rat.cast, list stuff ESTIMATED CHANGES Modified algebra/field.lean + theorem inv_comm_of_comm Modified algebra/group.lean + theorem eq_inv_iff_mul_eq_one +/- theorem eq_inv_mul_iff_mul_eq +/- theorem eq_mul_inv_iff_mul_eq +/- theorem eq_sub_iff_add_eq + theorem inv_eq_iff_mul_eq_one +/- theorem inv_mul_eq_iff_eq_mul +/- theorem mul_inv_eq_iff_eq_mul Modified algebra/group_power.lean + theorem nat.pow_eq_pow_nat Modified algebra/ordered_ring.lean + theorem mul_nonneg_iff_right_nonneg_of_pos Modified analysis/limits.lean +/- theorem mul_add_one_le_pow Modified analysis/measure_theory/lebesgue_measure.lean +/- theorem measure_theory.tendsto_of_nat_at_top_at_top Modified analysis/metric_space.lean Deleted analysis/of_nat.lean - theorem exists_lt_of_nat - theorem int_of_nat_eq_of_nat - def of_nat - theorem of_nat_add - theorem of_nat_bit0 - theorem of_nat_bit1 - theorem of_nat_le_of_nat - theorem of_nat_le_of_nat_iff - theorem of_nat_mul - theorem of_nat_one - theorem of_nat_pos - theorem of_nat_sub - theorem rat_coe_eq_of_nat - theorem rat_of_nat_eq_of_nat - theorem real_of_rat_of_nat_eq_of_nat - theorem zero_le_of_nat Modified analysis/real.lean + theorem coe_rat_eq_of_rat + theorem exists_lt_nat +/- def lift_rat_fun +/- def lift_rat_op Modified data/encodable.lean +/- def encodable_of_equiv Modified data/equiv.lean + theorem equiv.apply_inverse_apply + def equiv.int_equiv_nat + def equiv.int_equiv_nat_sum_nat + def equiv.psigma_equiv_sigma + def equiv.psum_equiv_sum + def equiv.sigma_congr_left + def equiv.sigma_congr_right + def equiv.sigma_equiv_prod + def equiv.sigma_equiv_prod_of_equiv Modified data/finset/basic.lean Modified data/int/basic.lean + theorem int.cast_add + theorem int.cast_bit0 + theorem int.cast_bit1 + theorem int.cast_coe_nat + theorem int.cast_eq_zero + theorem int.cast_id + theorem int.cast_inj + theorem int.cast_le + theorem int.cast_lt + theorem int.cast_lt_zero + theorem int.cast_mul + theorem int.cast_ne_zero + theorem int.cast_neg + theorem int.cast_neg_of_nat + theorem int.cast_neg_succ_of_nat + theorem int.cast_nonneg + theorem int.cast_nonpos + theorem int.cast_of_nat + theorem int.cast_one + theorem int.cast_pos + theorem int.cast_sub + theorem int.cast_sub_nat_nat + theorem int.cast_zero + theorem int.coe_nat_dvd - theorem int.coe_nat_dvd_coe_nat_iff - theorem int.coe_nat_dvd_coe_nat_of_dvd - theorem int.coe_nat_dvd_left - theorem int.coe_nat_dvd_right + theorem int.coe_nat_eq_zero + theorem int.coe_nat_inj' + theorem int.coe_nat_le + theorem int.coe_nat_lt + theorem int.coe_nat_ne_zero + theorem int.coe_nat_pos + theorem int.dvd_nat_abs - theorem int.dvd_of_coe_nat_dvd_coe_nat + theorem int.mul_cast_comm + theorem int.nat_abs_dvd + theorem int.nat_cast_eq_coe_nat Modified data/list/basic.lean + theorem list.diff_cons + theorem list.diff_eq_foldl + theorem list.diff_nil + theorem list.erase_comm Modified data/list/perm.lean + theorem list.count_le_of_subperm + theorem list.countp_le_of_subperm + theorem list.exists_perm_append_of_sublist - theorem list.exists_sublist_perm_of_subset_nodup + theorem list.length_le_of_subperm - theorem list.mem_iff_mem_of_perm +/- theorem list.mem_of_perm + theorem list.perm.subperm_left + theorem list.perm.subperm_right - theorem list.perm_app_inv_right + theorem list.perm_app_right_iff + theorem list.perm_diff_left + theorem list.perm_diff_right + theorem list.perm_subset + theorem list.subperm.antisymm + theorem list.subperm.exists_of_length_lt + theorem list.subperm.perm_of_length_le + theorem list.subperm.refl + theorem list.subperm.trans + def list.subperm + theorem list.subperm_app_left + theorem list.subperm_app_right + theorem list.subperm_cons + theorem list.subperm_of_perm + theorem list.subperm_of_sublist + theorem list.subperm_of_subset_nodup + theorem list.subset_of_subperm Modified data/list/sort.lean Added data/nat/cast.lean + theorem nat.cast_add + theorem nat.cast_add_one + theorem nat.cast_bit0 + theorem nat.cast_bit1 + theorem nat.cast_eq_zero + theorem nat.cast_id + theorem nat.cast_inj + theorem nat.cast_le + theorem nat.cast_lt + theorem nat.cast_mul + theorem nat.cast_ne_zero + theorem nat.cast_nonneg + theorem nat.cast_one + theorem nat.cast_pos + theorem nat.cast_pred + theorem nat.cast_sub + theorem nat.cast_succ + theorem nat.cast_zero + theorem nat.mul_cast_comm Modified data/num/basic.lean - def int.of_znum - def int.znum_coe - def nat.of_num - def nat.of_pos_num - def num.nat_num_coe +/- def nzsnum.drec' +/- def snum.drec' + def znum.cmp Modified data/num/bitwise.lean Modified data/num/lemmas.lean - theorem num.add_to_nat + theorem num.cast_add + theorem num.cast_cmp' + theorem num.cast_cmp + theorem num.cast_inj + theorem num.cast_le + theorem num.cast_lt + theorem num.cast_mul + theorem num.cast_one + theorem num.cast_succ' + theorem num.cast_succ + theorem num.cast_zero - theorem num.cmp_dec + theorem num.cmp_eq +/- theorem num.lt_iff_cmp - theorem num.mul_to_nat - theorem num.one_to_nat - theorem num.succ'_to_nat - theorem num.succ_to_nat - theorem num.zero_to_nat - theorem pos_num.add_to_nat + theorem pos_num.cast_add + theorem pos_num.cast_add_comm + theorem pos_num.cast_add_comm_lemma_1 + theorem pos_num.cast_add_comm_lemma_2 + theorem pos_num.cast_add_one_comm + theorem pos_num.cast_cmp' + theorem pos_num.cast_cmp + theorem pos_num.cast_inj + theorem pos_num.cast_le + theorem pos_num.cast_lt + theorem pos_num.cast_mul + theorem pos_num.cast_one + theorem pos_num.cast_pos + theorem pos_num.cast_succ - theorem pos_num.cmp_dec - theorem pos_num.cmp_dec_theorem + theorem pos_num.cmp_eq +/- theorem pos_num.lt_iff_cmp - theorem pos_num.mul_to_nat + theorem pos_num.one_le_cast - theorem pos_num.one_to_nat - theorem pos_num.succ_to_nat +/- theorem pos_num.to_nat_inj - theorem pos_num.to_nat_pos + theorem znum.cast_one + theorem znum.cast_zero Deleted data/num/norm_num.lean - theorem norm_num.bit0_le_one - theorem norm_num.bit0_le_zero - theorem norm_num.bit1_le_bit0 - theorem norm_num.bit1_le_one - theorem norm_num.bit1_le_zero - theorem norm_num.one_le_bit0 - theorem norm_num.one_le_bit1 - theorem norm_num.one_le_one - theorem norm_num.pow_bit0 - theorem norm_num.pow_bit0_helper - theorem norm_num.pow_bit1 - theorem norm_num.pow_bit1_helper - theorem norm_num.pow_eq_pow_nat - theorem norm_num.pow_eq_pow_nat_helper - theorem norm_num.pow_one - theorem norm_num.pow_zero - theorem norm_num.zero_le_bit0 - theorem norm_num.zero_le_bit1 - theorem norm_num.zero_le_one - theorem norm_num.zero_le_zero - def num.add1 - def num.add_n - theorem num.bit0_le_bit0 - theorem num.denote_add1 - theorem num.denote_le_denote_of_num_le - theorem num.denote_le_denote_of_pos_num_le - theorem num.denote_le_denote_of_znum_le - def num.num_le - theorem num.one_le_denote - def num.pos_le - theorem num.zero_le_denote - def num.znum_le - inductive tactic.interactive.denotation - def tactic.interactive.znum.to_neg - def tactic.interactive.znum.to_pos Modified data/option.lean + theorem option.bind_eq_some + theorem option.bind_none +/- theorem option.bind_some +/- def option.filter +/- def option.guard +/- theorem option.guard_eq_some +/- def option.iget + theorem option.is_some_iff_exists + theorem option.map_eq_some + theorem option.map_none + theorem option.map_some +/- theorem option.mem_def + theorem option.none_ne_some +/- theorem option.some_inj Modified data/rat.lean - def linear_order_cases_on - theorem linear_order_cases_on_eq - theorem linear_order_cases_on_gt - theorem linear_order_cases_on_lt - theorem mul_nonneg_iff_right_nonneg_of_pos + theorem rat.cast_add + theorem rat.cast_add_of_ne_zero + theorem rat.cast_bit0 + theorem rat.cast_bit1 + theorem rat.cast_coe_int + theorem rat.cast_coe_nat + theorem rat.cast_eq_zero + theorem rat.cast_id + theorem rat.cast_inj + theorem rat.cast_le + theorem rat.cast_lt + theorem rat.cast_lt_zero + theorem rat.cast_mk + theorem rat.cast_mk_of_ne_zero + theorem rat.cast_mul + theorem rat.cast_mul_of_ne_zero + theorem rat.cast_ne_zero + theorem rat.cast_neg + theorem rat.cast_nonneg + theorem rat.cast_nonpos + theorem rat.cast_of_int + theorem rat.cast_one + theorem rat.cast_pos + theorem rat.cast_sub + theorem rat.cast_sub_of_ne_zero + theorem rat.cast_zero - theorem rat.coe_int_add +/- theorem rat.coe_int_eq_mk + theorem rat.coe_int_eq_of_int - theorem rat.coe_int_inj - theorem rat.coe_int_le - theorem rat.coe_int_lt - theorem rat.coe_int_mul - theorem rat.coe_int_neg - theorem rat.coe_int_one - theorem rat.coe_int_sub - theorem rat.coe_nat_rat_eq_mk + theorem rat.denom_dvd + theorem rat.mk_eq_div + theorem rat.mul_cast_comm + theorem rat.num_dvd + theorem rat.of_int_eq_mk Modified data/set/enumerate.lean Deleted meta/expr.lean 2017-10-17 00:02:03-04:00 2e7651a feat(data/num): add tactics for evaluating arithmetic expressions made of literals, including `x \le y` and `x ^ y` ESTIMATED CHANGES Modified data/num/basic.lean + def cast_znum + def int.znum_coe + def num.nat_num_coe Modified data/num/lemmas.lean Added data/num/norm_num.lean + theorem norm_num.bit0_le_one + theorem norm_num.bit0_le_zero + theorem norm_num.bit1_le_bit0 + theorem norm_num.bit1_le_one + theorem norm_num.bit1_le_zero + theorem norm_num.one_le_bit0 + theorem norm_num.one_le_bit1 + theorem norm_num.one_le_one + theorem norm_num.pow_bit0 + theorem norm_num.pow_bit0_helper + theorem norm_num.pow_bit1 + theorem norm_num.pow_bit1_helper + theorem norm_num.pow_eq_pow_nat + theorem norm_num.pow_eq_pow_nat_helper + theorem norm_num.pow_one + theorem norm_num.pow_zero + theorem norm_num.zero_le_bit0 + theorem norm_num.zero_le_bit1 + theorem norm_num.zero_le_one + theorem norm_num.zero_le_zero + def num.add1 + def num.add_n + theorem num.bit0_le_bit0 + theorem num.denote_add1 + theorem num.denote_le_denote_of_num_le + theorem num.denote_le_denote_of_pos_num_le + theorem num.denote_le_denote_of_znum_le + def num.num_le + theorem num.one_le_denote + def num.pos_le + theorem num.zero_le_denote + def num.znum_le + inductive tactic.interactive.denotation + def tactic.interactive.znum.to_neg + def tactic.interactive.znum.to_pos Added meta/expr.lean 2017-10-15 02:26:24-04:00 5ad8020 Merge remote-tracking branch 'minchaowu/master' ESTIMATED CHANGES Modified analysis/real.lean Modified analysis/topology/continuity.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/uniform_space.lean Modified data/set/basic.lean + theorem set.image_subset_iff - theorem set.image_subset_iff_subset_preimage + theorem set.inter_preimage_subset + theorem set.preimage_diff + theorem set.subset_image_union + theorem set.union_preimage_subset Added data/set/function.lean + theorem set.bij_on.mk + def set.bij_on + theorem set.bij_on_comp + theorem set.bij_on_of_eq_on + theorem set.bij_on_of_inv_on + theorem set.bijective_iff_bij_on_univ + theorem set.eq_on_of_left_inv_of_right_inv + theorem set.image_eq_of_bij_on + theorem set.image_eq_of_maps_to_of_surj_on + theorem set.image_subset_of_maps_to + theorem set.image_subset_of_maps_to_of_subset + def set.inj_on + theorem set.inj_on_comp + theorem set.inj_on_empty + theorem set.inj_on_of_bij_on + theorem set.inj_on_of_eq_on + theorem set.inj_on_of_inj_on_of_subset + theorem set.inj_on_of_left_inv_on + theorem set.injective_iff_inj_on_univ + def set.inv_on + def set.left_inv_on + theorem set.left_inv_on_comp + theorem set.left_inv_on_of_eq_on_left + theorem set.left_inv_on_of_eq_on_right + theorem set.left_inv_on_of_surj_on_right_inv_on + def set.maps_to + theorem set.maps_to_comp + theorem set.maps_to_of_bij_on + theorem set.maps_to_of_eq_on + theorem set.maps_to_univ_univ + def set.right_inv_on + theorem set.right_inv_on_comp + theorem set.right_inv_on_of_eq_on_left + theorem set.right_inv_on_of_eq_on_right + theorem set.right_inv_on_of_inj_on_of_left_inv_on + def set.surj_on + theorem set.surj_on_comp + theorem set.surj_on_of_bij_on + theorem set.surj_on_of_eq_on + theorem set.surj_on_of_right_inv_on + theorem set.surjective_iff_surj_on_univ Modified order/filter.lean Modified order/galois_connection.lean 2017-10-15 01:58:58-04:00 8f4327a feat(*): working on list/basic, robusting simp proofs ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem list.prod_repeat - theorem list.prod_replicate Modified algebra/field.lean + theorem division_ring.neg_inv Modified algebra/functions.lean + theorem lt_max_iff Modified analysis/ennreal.lean Modified analysis/limits.lean Modified analysis/measure_theory/borel_space.lean Modified analysis/measure_theory/measure_space.lean Modified analysis/measure_theory/outer_measure.lean Modified analysis/metric_space.lean Modified analysis/of_nat.lean Modified analysis/real.lean + theorem of_rat_inj + theorem of_rat_injective + theorem of_rat_lt - theorem of_rat_lt_of_rat Modified analysis/topology/continuity.lean Modified analysis/topology/infinite_sum.lean Modified analysis/topology/topological_space.lean Modified analysis/topology/topological_structures.lean Modified analysis/topology/uniform_space.lean Modified data/bool.lean - theorem bool.band_eq_ff - theorem bool.band_eq_tt - theorem bool.band_ff - theorem bool.band_self - theorem bool.band_tt - theorem bool.bnot_bnot - theorem bool.bor_eq_ff - theorem bool.bor_eq_tt - theorem bool.bor_ff +/- theorem bool.bor_inl +/- theorem bool.bor_inr - theorem bool.bor_tt - def bool.bxor - theorem bool.bxor_ff - theorem bool.bxor_self - theorem bool.bxor_tt + theorem bool.coe_sort_ff + theorem bool.coe_sort_tt - theorem bool.coe_tt - theorem bool.ff_band - theorem bool.ff_bor - theorem bool.ff_bxor - theorem bool.ff_bxor_ff - theorem bool.ff_bxor_tt - theorem bool.or_of_bor_eq + theorem bool.to_bool_bool + theorem bool.to_bool_false + theorem bool.to_bool_true - theorem bool.tt_band - theorem bool.tt_bor - theorem bool.tt_bxor - theorem bool.tt_bxor_ff - theorem bool.tt_bxor_tt Modified data/encodable.lean + theorem encode_injective Modified data/equiv.lean + def equiv.list_equiv_of_equiv + def equiv.list_equiv_self_of_equiv_nat + def equiv.list_nat_equiv_nat Modified data/finset/basic.lean + theorem finset.card_range - theorem finset.card_upto + theorem finset.exists_mem_insert - theorem finset.exists_mem_insert_iff + theorem finset.exists_nat_subset_range - theorem finset.exists_nat_subset_upto + theorem finset.forall_mem_insert - theorem finset.forall_mem_insert_iff - theorem finset.lt_of_mem_upto - theorem finset.mem_empty_iff + theorem finset.mem_erase - theorem finset.mem_erase_iff + theorem finset.mem_filter - theorem finset.mem_filter_iff +/- theorem finset.mem_insert - theorem finset.mem_insert_iff + theorem finset.mem_insert_self +/- theorem finset.mem_inter - theorem finset.mem_inter_iff + theorem finset.mem_inter_of_mem +/- theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_list + theorem finset.mem_range +/- theorem finset.mem_sdiff_iff +/- theorem finset.mem_singleton_self +/- theorem finset.mem_to_finset - theorem finset.mem_to_finset_iff + theorem finset.mem_to_finset_of_mem + theorem finset.mem_union - theorem finset.mem_union_iff - theorem finset.mem_upto_iff - theorem finset.mem_upto_of_lt - theorem finset.mem_upto_succ_of_mem_upto +/- theorem finset.not_mem_empty + theorem finset.not_mem_range_self - theorem finset.not_mem_upto + def finset.range + theorem finset.range_subset + theorem finset.range_succ + theorem finset.range_zero - def finset.upto - theorem finset.upto_subset_upto_iff - theorem finset.upto_succ - theorem finset.upto_zero - theorem lt_max_iff Modified data/finset/fold.lean - theorem heq_iff_eq Modified data/hash_map.lean +/- theorem bucket_array.mem_as_list +/- theorem hash_map.contains_aux_iff +/- theorem hash_map.find_aux_iff Modified data/list/basic.lean + theorem list.all_cons + theorem list.all_iff_forall + theorem list.all_iff_forall_prop + theorem list.all_nil + theorem list.any_cons + theorem list.any_iff_exists + theorem list.any_iff_exists_prop + theorem list.any_nil + theorem list.any_of_mem + theorem list.append_inj' + theorem list.append_inj_left' + theorem list.append_inj_right' + theorem list.append_left_cancel + theorem list.append_right_cancel - theorem list.append_right_inj + theorem list.append_sublist_append_left + theorem list.append_sublist_append_of_sublist_right + theorem list.append_sublist_append_right + theorem list.chain.iff + theorem list.chain.iff_mem + theorem list.chain.imp + inductive list.chain + theorem list.chain_cons + theorem list.chain_iff_pairwise + theorem list.chain_lt_range' + theorem list.chain_map + theorem list.chain_map_of_chain + theorem list.chain_of_chain_cons + theorem list.chain_of_chain_map + theorem list.chain_of_pairwise + theorem list.chain_singleton + theorem list.chain_split + theorem list.chain_succ_range' +/- def list.concat +/- theorem list.concat_eq_append + theorem list.cons_inj' +/- theorem list.cons_inj + theorem list.cons_sublist_cons_iff + theorem list.cons_union +/- def list.count +/- theorem list.count_append + theorem list.count_eq_one_of_mem + theorem list.count_le_of_sublist + theorem list.count_pos +/- theorem list.count_pos_of_mem + theorem list.count_repeat + def list.countp + theorem list.countp_append + theorem list.countp_cons_of_neg + theorem list.countp_cons_of_pos + theorem list.countp_eq_length_filter + theorem list.countp_le_of_sublist + theorem list.countp_nil + theorem list.countp_pos_of_mem + theorem list.disjoint.symm + def list.disjoint + theorem list.disjoint_append_left + theorem list.disjoint_append_of_disjoint_left + theorem list.disjoint_append_right + theorem list.disjoint_comm + theorem list.disjoint_cons_left + theorem list.disjoint_cons_right + theorem list.disjoint_iff_ne + theorem list.disjoint_left + theorem list.disjoint_nil_left + theorem list.disjoint_of_disjoint_append_left_left + theorem list.disjoint_of_disjoint_append_left_right + theorem list.disjoint_of_disjoint_append_right_left + theorem list.disjoint_of_disjoint_append_right_right + theorem list.disjoint_of_disjoint_cons_left + theorem list.disjoint_of_disjoint_cons_right + theorem list.disjoint_of_nodup_append + theorem list.disjoint_of_subset_left + theorem list.disjoint_of_subset_right + theorem list.disjoint_right + theorem list.disjoint_singleton + theorem list.eq_nil_iff_forall_not_mem +/- theorem list.eq_nil_of_infix_nil +/- theorem list.eq_nil_of_prefix_nil +/- theorem list.eq_nil_of_suffix_nil + theorem list.eq_of_infix_of_length_eq - theorem list.eq_of_map_const + theorem list.eq_of_mem_map_const + theorem list.eq_of_mem_repeat + theorem list.eq_of_mem_singleton + theorem list.eq_of_prefix_of_length_eq + theorem list.eq_of_sublist_of_length_eq + theorem list.eq_of_suffix_of_length_eq + theorem list.eq_or_mem_of_mem_insert + theorem list.eq_repeat' + theorem list.eq_repeat + theorem list.eq_repeat_of_mem + theorem list.erase_append_left + theorem list.erase_append_right + theorem list.erase_cons + theorem list.erase_cons_head + theorem list.erase_cons_tail + def list.erase_dup + theorem list.erase_dup_append + theorem list.erase_dup_cons_of_mem' + theorem list.erase_dup_cons_of_mem + theorem list.erase_dup_cons_of_not_mem' + theorem list.erase_dup_cons_of_not_mem + theorem list.erase_dup_eq_self + theorem list.erase_dup_nil + theorem list.erase_dup_sublist + theorem list.erase_dup_subset + theorem list.erase_nil + theorem list.erase_of_not_mem + theorem list.erase_sublist + theorem list.erase_subset + theorem list.exists_erase_eq + theorem list.exists_mem_cons_iff + theorem list.exists_mem_cons_of + theorem list.exists_mem_cons_of_exists + theorem list.exists_mem_of_countp_pos + theorem list.exists_mem_of_length_pos +/- theorem list.exists_of_mem_bind + theorem list.filter_eq_nil + theorem list.filter_eq_self + theorem list.filter_filter_map + theorem list.filter_map_cons_none + theorem list.filter_map_cons_some + theorem list.filter_map_eq_filter + theorem list.filter_map_eq_map + theorem list.filter_map_filter + theorem list.filter_map_filter_map + theorem list.filter_map_map + theorem list.filter_map_nil + theorem list.filter_map_some + theorem list.filter_map_sublist_filter_map + theorem list.filter_sublist_filter +/- theorem list.filter_subset +/- def list.find + theorem list.find_cons_of_neg + theorem list.find_cons_of_pos + theorem list.find_eq_none + theorem list.find_mem + theorem list.find_nil + theorem list.find_some + theorem list.foldl1_eq_foldr1 + theorem list.foldl_append + theorem list.foldl_cons + theorem list.foldl_eq_foldr + theorem list.foldl_eq_of_comm_of_assoc + theorem list.foldl_nil + theorem list.foldl_reverse + theorem list.foldr_append + theorem list.foldr_cons +/- theorem list.foldr_eta + theorem list.foldr_nil + theorem list.foldr_reverse + theorem list.forall_mem_cons' + theorem list.forall_mem_cons + theorem list.forall_mem_inter_of_forall_left + theorem list.forall_mem_inter_of_forall_right + theorem list.forall_mem_ne + theorem list.forall_mem_nil + theorem list.forall_mem_of_forall_mem_cons + theorem list.forall_mem_of_forall_mem_union_left + theorem list.forall_mem_of_forall_mem_union_right + theorem list.forall_mem_pw_filter + theorem list.forall_mem_union +/- theorem list.head_eq_of_cons_eq +/- theorem list.infix_append +/- theorem list.infix_iff_prefix_suffix +/- theorem list.infix_of_prefix +/- theorem list.infix_of_suffix +/- theorem list.infix_refl +/- def list.inits + theorem list.insert.def + theorem list.insert_nil + theorem list.insert_of_mem + theorem list.insert_of_not_mem + theorem list.inter_cons_of_mem + theorem list.inter_cons_of_not_mem + theorem list.inter_eq_nil_iff_disjoint + theorem list.inter_nil + theorem list.inter_subset_left + theorem list.inter_subset_right +/- def list.inth + theorem list.iota_eq_reverse_range' + theorem list.is_infix.trans + theorem list.is_prefix.trans + theorem list.is_suffix.trans + theorem list.le_count_iff_repeat_sublist +/- theorem list.length_concat + theorem list.length_erase_of_mem + theorem list.length_insert_of_mem + theorem list.length_insert_of_not_mem + theorem list.length_iota +/- theorem list.length_le_of_infix + theorem list.length_product + theorem list.length_range' + theorem list.length_range +/- theorem list.map_concat + theorem list.map_const + theorem list.map_filter_map + theorem list.map_filter_map_of_inv + theorem list.map₂_nil +/- theorem list.mem_bind - theorem list.mem_bind_iff + theorem list.mem_bind_of_mem + theorem list.mem_erase_dup + theorem list.mem_erase_iff_of_nodup + theorem list.mem_erase_of_ne_of_mem + theorem list.mem_erase_of_nodup + theorem list.mem_filter - theorem list.mem_filter_iff + theorem list.mem_filter_map +/- theorem list.mem_filter_of_mem - theorem list.mem_iff_count_pos +/- theorem list.mem_inits + theorem list.mem_insert_iff + theorem list.mem_insert_of_mem + theorem list.mem_insert_self + theorem list.mem_inter + theorem list.mem_inter_of_mem_of_mem + theorem list.mem_iota +/- theorem list.mem_join - theorem list.mem_join_iff + theorem list.mem_join_of_mem +/- theorem list.mem_map - theorem list.mem_map_iff + theorem list.mem_map_of_inj + theorem list.mem_map_of_mem +/- theorem list.mem_of_count_pos + theorem list.mem_of_mem_erase +/- theorem list.mem_of_mem_filter + theorem list.mem_of_mem_inter_left + theorem list.mem_of_mem_inter_right + theorem list.mem_product + theorem list.mem_range' + theorem list.mem_range +/- theorem list.mem_reverse +/- theorem list.mem_singleton - theorem list.mem_singleton_iff + theorem list.mem_singleton_self +/- theorem list.mem_split +/- theorem list.mem_sublists +/- theorem list.mem_tails + theorem list.mem_union + theorem list.mem_union_left + theorem list.mem_union_right + theorem list.nil_map₂ + theorem list.nil_product + theorem list.nil_union + def list.nodup + theorem list.nodup_app_comm + theorem list.nodup_append + theorem list.nodup_append_of_nodup + theorem list.nodup_bind + theorem list.nodup_concat + theorem list.nodup_cons + theorem list.nodup_cons_of_nodup + theorem list.nodup_erase_dup + theorem list.nodup_erase_eq_filter + theorem list.nodup_erase_of_nodup + theorem list.nodup_filter + theorem list.nodup_filter_map + theorem list.nodup_iff_count_le_one + theorem list.nodup_iff_sublist + theorem list.nodup_insert + theorem list.nodup_inter_of_nodup + theorem list.nodup_iota + theorem list.nodup_join + theorem list.nodup_map + theorem list.nodup_map_on + theorem list.nodup_middle + theorem list.nodup_nil + theorem list.nodup_of_nodup_append_left + theorem list.nodup_of_nodup_append_right + theorem list.nodup_of_nodup_cons + theorem list.nodup_of_nodup_map + theorem list.nodup_of_sublist + theorem list.nodup_product + theorem list.nodup_range' + theorem list.nodup_range + theorem list.nodup_reverse + theorem list.nodup_singleton + theorem list.nodup_union + theorem list.not_exists_mem_nil +/- theorem list.not_mem_append + theorem list.not_mem_of_nodup_cons + theorem list.not_mem_range_self + theorem list.not_nodup_cons_of_mem + theorem list.not_nodup_pair +/- theorem list.of_mem_filter + theorem list.or_exists_of_exists_mem_cons + theorem list.pairwise.iff + theorem list.pairwise.iff_mem + theorem list.pairwise.imp + inductive list.pairwise + theorem list.pairwise_app_comm + theorem list.pairwise_append + theorem list.pairwise_cons + theorem list.pairwise_filter + theorem list.pairwise_filter_map + theorem list.pairwise_filter_map_of_pairwise + theorem list.pairwise_filter_of_pairwise + theorem list.pairwise_gt_iota + theorem list.pairwise_join + theorem list.pairwise_lt_range' + theorem list.pairwise_lt_range + theorem list.pairwise_map + theorem list.pairwise_map_of_pairwise + theorem list.pairwise_middle + theorem list.pairwise_of_forall + theorem list.pairwise_of_pairwise_cons + theorem list.pairwise_of_pairwise_map + theorem list.pairwise_of_sublist + theorem list.pairwise_pair + theorem list.pairwise_pw_filter + theorem list.pairwise_reverse + theorem list.pairwise_singleton +/- theorem list.prefix_append + theorem list.prefix_concat +/- theorem list.prefix_refl + def list.prod + def list.product + theorem list.product_cons + theorem list.product_nil + def list.pw_filter + theorem list.pw_filter_cons_of_neg + theorem list.pw_filter_cons_of_pos + theorem list.pw_filter_eq_self + theorem list.pw_filter_nil + theorem list.pw_filter_sublist + theorem list.pw_filter_subset + def list.range' + theorem list.range'_append + theorem list.range'_concat + theorem list.range'_sublist_right + theorem list.range'_subset_right + theorem list.range_core_range' + theorem list.range_eq_range' + theorem list.range_sublist + theorem list.range_subset + theorem list.rel_of_chain_cons + theorem list.rel_of_pairwise_cons + theorem list.repeat_sublist_repeat + theorem list.repeat_subset_singleton + theorem list.reverse_cons' + theorem list.reverse_sublist + theorem list.reverse_sublist_iff +/- theorem list.scanr_aux_cons +/- theorem list.scanr_cons +/- theorem list.scanr_nil + theorem list.singleton_disjoint + theorem list.singleton_sublist +/- theorem list.span_eq_take_drop + theorem list.sublist_antisymm +/- theorem list.sublist_app_of_sublist_left +/- theorem list.sublist_app_of_sublist_right +/- theorem list.sublist_of_infix + theorem list.sublist_of_prefix + theorem list.sublist_of_suffix + theorem list.sublist_suffix_of_union +/- theorem list.sublists_aux_cons_cons +/- theorem list.sublists_aux_eq_foldl + theorem list.subset_erase_dup + theorem list.subset_inter +/- theorem list.suffix_append + theorem list.suffix_cons + theorem list.suffix_insert +/- theorem list.suffix_refl + theorem list.suffix_union_right +/- def list.sum +/- theorem list.tail_eq_of_cons_eq +/- def list.tails +/- theorem list.take_while_append_drop + theorem list.union_sublist_append + theorem list.unzip_cons + theorem list.unzip_nil + theorem list.zip_cons_cons + theorem list.zip_nil_left + theorem list.zip_nil_right + theorem list.zip_unzip Deleted data/list/comb.lean - theorem list.all_cons - theorem list.all_eq_tt_iff - theorem list.all_eq_tt_of_forall - theorem list.all_nil - theorem list.any_cons - theorem list.any_eq_tt_iff - theorem list.any_nil - theorem list.any_of_mem - def list.dinj - def list.dinj₁ - def list.dmap - theorem list.dmap_cons_of_neg - theorem list.dmap_cons_of_pos - theorem list.dmap_nil - theorem list.eq_of_mem_map_pair₁ - theorem list.exists_mem_cons_iff - theorem list.exists_mem_cons_of - theorem list.exists_mem_cons_of_exists - theorem list.exists_of_any_eq_tt - theorem list.exists_of_mem_dmap - def list.flat - theorem list.foldl_append - theorem list.foldl_cons - theorem list.foldl_eq_foldr - theorem list.foldl_eq_of_comm_of_assoc - theorem list.foldl_nil - theorem list.foldl_reverse - theorem list.foldr_append - theorem list.foldr_cons - theorem list.foldr_nil - theorem list.foldr_reverse - theorem list.forall_mem_cons - theorem list.forall_mem_cons_iff - theorem list.forall_mem_eq_tt_of_all_eq_tt - theorem list.forall_mem_nil - theorem list.forall_mem_of_forall_mem_cons - theorem list.length_mapAccumR - theorem list.length_mapAccumR₂ - theorem list.length_product - theorem list.length_replicate - def list.mapAccumR - def list.mapAccumR₂ - theorem list.map_dmap_of_inv_of_pos - theorem list.map₂_nil1 - theorem list.map₂_nil2 - theorem list.mem_dmap - theorem list.mem_of_dinj_of_mem_dmap - theorem list.mem_of_mem_map_pair₁ - theorem list.mem_of_mem_product_left - theorem list.mem_of_mem_product_right - theorem list.mem_product - theorem list.nil_product - theorem list.not_exists_mem_nil - theorem list.not_mem_dmap_of_dinj_of_not_mem - theorem list.of_forall_mem_cons - theorem list.or_exists_of_exists_mem_cons - def list.product - theorem list.product_cons - theorem list.product_nil - def list.replicate - theorem list.unzip_cons' - theorem list.unzip_cons - theorem list.unzip_nil - theorem list.zip_cons_cons - theorem list.zip_nil_left - theorem list.zip_nil_right - theorem list.zip_unzip Modified data/list/default.lean Modified data/list/perm.lean + theorem list.concat_perm + theorem list.cons_perm_iff_perm_erase + theorem list.eq_nil_of_perm_nil + theorem list.eq_singleton_of_perm + theorem list.eq_singleton_of_perm_inv + theorem list.erase_perm_erase + theorem list.exists_perm_sublist + theorem list.exists_sublist_perm_of_subset_nodup + theorem list.foldl_eq_of_perm + theorem list.foldr_eq_of_perm + theorem list.mem_iff_mem_of_perm + theorem list.mem_of_perm + theorem list.not_perm_nil_cons - theorem list.perm.count_eq_count_of_perm - def list.perm.decidable_perm - def list.perm.decidable_perm_aux - theorem list.perm.eq_nil_of_perm_nil - theorem list.perm.eq_singleton_of_perm - theorem list.perm.eq_singleton_of_perm_inv +/- theorem list.perm.eqv - theorem list.perm.erase_perm_erase_of_perm - theorem list.perm.foldl_eq_of_perm - theorem list.perm.foldr_eq_of_perm - theorem list.perm.length_eq_length_of_perm - theorem list.perm.length_eq_of_qeq - theorem list.perm.mem_cons_of_qeq - theorem list.perm.mem_head_of_qeq - theorem list.perm.mem_iff_mem_of_perm - theorem list.perm.mem_of_perm - theorem list.perm.mem_tail_of_qeq - theorem list.perm.nodup_of_perm_of_nodup - theorem list.perm.not_mem_of_perm - theorem list.perm.not_perm_nil_cons - theorem list.perm.perm_app - theorem list.perm.perm_app_comm - theorem list.perm.perm_app_cons - theorem list.perm.perm_app_inv - theorem list.perm.perm_app_inv_left - theorem list.perm.perm_app_inv_right - theorem list.perm.perm_app_left - theorem list.perm.perm_app_right - theorem list.perm.perm_cons_app - theorem list.perm.perm_cons_app_cons - theorem list.perm.perm_cons_app_simp - theorem list.perm.perm_cons_inv - theorem list.perm.perm_erase - theorem list.perm.perm_erase_dup_of_perm - theorem list.perm.perm_ext - theorem list.perm.perm_filter - theorem list.perm.perm_iff_forall_count_eq_count - theorem list.perm.perm_iff_forall_mem_count_eq_count - theorem list.perm.perm_induction_on - theorem list.perm.perm_insert - theorem list.perm.perm_insert_insert - theorem list.perm.perm_inter - theorem list.perm.perm_inter_left - theorem list.perm.perm_inter_right - theorem list.perm.perm_inv_core - theorem list.perm.perm_map - theorem list.perm.perm_middle - theorem list.perm.perm_middle_simp - theorem list.perm.perm_of_forall_count_eq - theorem list.perm.perm_of_qeq - theorem list.perm.perm_product - theorem list.perm.perm_product_left - theorem list.perm.perm_product_right - theorem list.perm.perm_rev - theorem list.perm.perm_rev_simp - theorem list.perm.perm_union - theorem list.perm.perm_union_left - theorem list.perm.perm_union_right - inductive list.perm.qeq - theorem list.perm.qeq_app - theorem list.perm.qeq_of_mem - theorem list.perm.qeq_split - theorem list.perm.subset_of_mem_of_subset_of_qeq - theorem list.perm.xswap + theorem list.perm_app + theorem list.perm_app_comm + theorem list.perm_app_cons + theorem list.perm_app_inv_right + theorem list.perm_app_left + theorem list.perm_app_left_iff + theorem list.perm_app_right + theorem list.perm_bind_left + theorem list.perm_bind_right + theorem list.perm_cons + theorem list.perm_cons_app + theorem list.perm_cons_app_cons + theorem list.perm_cons_inv + theorem list.perm_count + theorem list.perm_countp + theorem list.perm_erase + theorem list.perm_erase_dup_of_perm + theorem list.perm_ext + theorem list.perm_filter + theorem list.perm_filter_map + theorem list.perm_iff_count + theorem list.perm_induction_on + theorem list.perm_insert + theorem list.perm_insert_swap + theorem list.perm_inter + theorem list.perm_inter_left + theorem list.perm_inter_right + theorem list.perm_inv_core + theorem list.perm_length + theorem list.perm_map + theorem list.perm_middle + theorem list.perm_nodup + theorem list.perm_pairwise + theorem list.perm_product + theorem list.perm_product_left + theorem list.perm_product_right + theorem list.perm_repeat + theorem list.perm_union + theorem list.perm_union_left + theorem list.perm_union_right + theorem list.reverse_perm + theorem list.xswap Deleted data/list/set.lean - theorem list.cons_union - theorem list.disjoint.symm - def list.disjoint - theorem list.disjoint_append_of_disjoint_left - theorem list.disjoint_comm - theorem list.disjoint_cons_of_not_mem_of_disjoint - theorem list.disjoint_left - theorem list.disjoint_nil_left - theorem list.disjoint_of_disjoint_append_left_left - theorem list.disjoint_of_disjoint_append_left_right - theorem list.disjoint_of_disjoint_append_right_left - theorem list.disjoint_of_disjoint_append_right_right - theorem list.disjoint_of_disjoint_cons_left - theorem list.disjoint_of_disjoint_cons_right - theorem list.disjoint_of_nodup_append - theorem list.disjoint_of_subset_left - theorem list.disjoint_of_subset_right - theorem list.disjoint_right - theorem list.disjoint_singleton - theorem list.dmap_nodup_of_dinj - theorem list.eq_or_mem_of_mem_insert - theorem list.erase_append_left - theorem list.erase_append_right - theorem list.erase_cons_head - theorem list.erase_cons_tail - def list.erase_dup - theorem list.erase_dup_cons_of_mem - theorem list.erase_dup_cons_of_not_mem - theorem list.erase_dup_eq_of_nodup - theorem list.erase_dup_nil - theorem list.erase_dup_sublist - theorem list.erase_dup_subset - theorem list.erase_nil - theorem list.erase_of_not_mem - theorem list.erase_sublist - theorem list.erase_subset - theorem list.forall_mem_insert_of_forall_mem - theorem list.forall_mem_inter_of_forall_left - theorem list.forall_mem_inter_of_forall_right - theorem list.forall_mem_of_forall_mem_union_left - theorem list.forall_mem_of_forall_mem_union_right - theorem list.forall_mem_union - theorem list.insert.def - theorem list.insert_nil - theorem list.insert_of_mem - theorem list.insert_of_not_mem - theorem list.inter_cons_of_mem - theorem list.inter_cons_of_not_mem - theorem list.inter_eq_nil_of_disjoint - theorem list.inter_nil - theorem list.length_erase_of_mem - theorem list.length_erase_of_not_mem - theorem list.length_insert_of_mem - theorem list.length_insert_of_not_mem - theorem list.length_upto - theorem list.lt_of_mem_upto - theorem list.mem_erase_dup - theorem list.mem_erase_iff_of_nodup - theorem list.mem_erase_of_ne_of_mem - theorem list.mem_erase_of_nodup - theorem list.mem_insert_iff - theorem list.mem_insert_of_mem - theorem list.mem_insert_self - theorem list.mem_inter_iff - theorem list.mem_inter_of_mem_of_mem - theorem list.mem_of_mem_erase - theorem list.mem_of_mem_inter_left - theorem list.mem_of_mem_inter_right - theorem list.mem_or_mem_of_mem_union - theorem list.mem_union_iff - theorem list.mem_union_left - theorem list.mem_union_right - theorem list.mem_upto_of_lt - theorem list.mem_upto_succ_of_mem_upto - theorem list.nil_union - inductive list.nodup - theorem list.nodup_app_comm - theorem list.nodup_append - theorem list.nodup_concat - theorem list.nodup_cons - theorem list.nodup_erase_dup - theorem list.nodup_erase_of_nodup - theorem list.nodup_filter - theorem list.nodup_head - theorem list.nodup_insert - theorem list.nodup_inter_of_nodup - theorem list.nodup_map - theorem list.nodup_map_on - theorem list.nodup_middle - theorem list.nodup_nil - theorem list.nodup_of_nodup_append_left - theorem list.nodup_of_nodup_append_right - theorem list.nodup_of_nodup_cons - theorem list.nodup_of_nodup_map - theorem list.nodup_of_sublist - theorem list.nodup_product - theorem list.nodup_singleton - theorem list.nodup_union - theorem list.nodup_upto - theorem list.not_mem_of_nodup_cons - theorem list.not_nodup_cons_of_mem - theorem list.not_nodup_cons_of_not_nodup - theorem list.singleton_disjoint - theorem list.subset_erase_dup - def list.upto - theorem list.upto_ne_nil_of_ne_zero - theorem list.upto_nil - theorem list.upto_step - theorem list.upto_succ Modified data/list/sort.lean +/- theorem list.eq_of_sorted_of_perm - theorem list.forall_mem_rel_of_sorted_cons +/- def list.insertion_sort +/- def list.ordered_insert + theorem list.rel_of_sorted_cons +/- def list.sorted +/- theorem list.sorted_cons +/- theorem list.sorted_nil +/- theorem list.sorted_of_sorted_cons +/- theorem list.sorted_singleton Modified data/nat/pairing.lean + theorem nat.mkpair_unpair' Modified data/option.lean +/- def option.filter + def option.guard + theorem option.guard_eq_some +/- def option.iget + theorem option.mem_def + theorem option.some_inj Modified data/prod.lean + theorem prod.swap_left_inverse + theorem prod.swap_right_inverse Modified data/rat.lean Modified data/seq/wseq.lean Modified data/set/basic.lean +/- theorem set.ball_image_iff + theorem set.compl_image +/- theorem set.forall_range_iff +/- theorem set.image_eq_preimage_of_inverse + theorem set.image_preimage_eq - theorem set.image_subset_eq + theorem set.image_subset_preimage_of_inverse - theorem set.image_union_supset - theorem set.inter_preimage_subset +/- theorem set.mem_image + theorem set.mem_image_iff_bex +/- theorem set.mem_image_iff_of_inverse +/- theorem set.mem_of_eq_of_mem +/- def set.pairwise_on - theorem set.preimage_diff +/- theorem set.preimage_image_eq + theorem set.preimage_subset_image_of_inverse +/- theorem set.range_of_surjective +/- theorem set.subset.trans +/- theorem set.subset_preimage_image - theorem set.union_preimage_subset Modified data/set/countable.lean +/- def set.countable - def set.encodable_of_inj Modified data/set/enumerate.lean Deleted data/set/function.lean - theorem set.bij_on.mk - def set.bij_on - theorem set.bij_on_comp - theorem set.bij_on_of_eq_on - theorem set.bij_on_of_inv_on - theorem set.bijective_iff_bij_on_univ - theorem set.eq_on_of_left_inv_of_right_inv - theorem set.image_eq_of_bij_on - theorem set.image_eq_of_maps_to_of_surj_on - theorem set.image_subset_of_maps_to - theorem set.image_subset_of_maps_to_of_subset - def set.inj_on - theorem set.inj_on_comp - theorem set.inj_on_empty - theorem set.inj_on_of_bij_on - theorem set.inj_on_of_eq_on - theorem set.inj_on_of_inj_on_of_subset - theorem set.inj_on_of_left_inv_on - theorem set.injective_iff_inj_on_univ - def set.inv_on - def set.left_inv_on - theorem set.left_inv_on_comp - theorem set.left_inv_on_of_eq_on_left - theorem set.left_inv_on_of_eq_on_right - theorem set.left_inv_on_of_surj_on_right_inv_on - def set.maps_to - theorem set.maps_to_comp - theorem set.maps_to_of_bij_on - theorem set.maps_to_of_eq_on - theorem set.maps_to_univ_univ - def set.right_inv_on - theorem set.right_inv_on_comp - theorem set.right_inv_on_of_eq_on_left - theorem set.right_inv_on_of_eq_on_right - theorem set.right_inv_on_of_inj_on_of_left_inv_on - def set.surj_on - theorem set.surj_on_comp - theorem set.surj_on_of_bij_on - theorem set.surj_on_of_eq_on - theorem set.surj_on_of_right_inv_on - theorem set.surjective_iff_surj_on_univ Modified data/set/prod.lean + theorem set.mem_prod +/- theorem set.mem_prod_eq Modified logic/basic.lean + theorem and_iff_left_of_imp + theorem and_iff_right_of_imp + theorem exists_and_distrib_right + theorem heq_iff_eq + theorem sigma.exists + theorem sigma.forall + theorem sigma.mk.inj_iff + theorem subtype.exists + theorem subtype.forall Renamed logic/function_inverse.lean to logic/function.lean + theorem function.injective.eq_iff + theorem function.injective.has_left_inverse + theorem function.injective_surj_inv + theorem function.inv_fun_eq + theorem function.inv_fun_eq_of_injective_of_right_inverse + theorem function.inv_fun_on_eq' + theorem function.inv_fun_on_eq + theorem function.inv_fun_on_mem + theorem function.inv_fun_on_neg + theorem function.inv_fun_on_pos + theorem function.left_inverse_inv_fun + theorem function.partial_inv_eq + theorem function.partial_inv_eq_of_eq + theorem function.right_inverse_inv_fun + theorem function.right_inverse_surj_inv + theorem function.surj_inv_eq + theorem function.surjective.has_right_inverse - theorem set.has_left_inverse - theorem set.has_right_inverse - theorem set.injective_surj_inv - def set.inv_fun - theorem set.inv_fun_eq - theorem set.inv_fun_eq_of_injective_of_right_inverse - def set.inv_fun_on - theorem set.inv_fun_on_eq' - theorem set.inv_fun_on_eq - theorem set.inv_fun_on_mem - theorem set.inv_fun_on_neg - theorem set.inv_fun_on_pos - theorem set.left_inverse_inv_fun - theorem set.right_inverse_inv_fun - theorem set.right_inverse_surj_inv - def set.surj_inv - theorem set.surj_inv_eq Modified order/filter.lean Modified tactic/interactive.lean Modified tactic/rcases.lean 2017-10-02 00:06:27-05:00 e951a75 Merge branch 'master' into master ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.image_preimage_subset + theorem set.image_subset_eq + theorem set.image_union_supset + theorem set.inter_preimage_subset + theorem set.preimage_diff + theorem set.subset_preimage_image + theorem set.union_preimage_subset Added data/set/function.lean + theorem set.bij_on.mk + def set.bij_on + theorem set.bij_on_comp + theorem set.bij_on_of_eq_on + theorem set.bij_on_of_inv_on + theorem set.bijective_iff_bij_on_univ + theorem set.eq_on_of_left_inv_of_right_inv + theorem set.image_eq_of_bij_on + theorem set.image_eq_of_maps_to_of_surj_on + theorem set.image_subset_of_maps_to + theorem set.image_subset_of_maps_to_of_subset + def set.inj_on + theorem set.inj_on_comp + theorem set.inj_on_empty + theorem set.inj_on_of_bij_on + theorem set.inj_on_of_eq_on + theorem set.inj_on_of_inj_on_of_subset + theorem set.inj_on_of_left_inv_on + theorem set.injective_iff_inj_on_univ + def set.inv_on + def set.left_inv_on + theorem set.left_inv_on_comp + theorem set.left_inv_on_of_eq_on_left + theorem set.left_inv_on_of_eq_on_right + theorem set.left_inv_on_of_surj_on_right_inv_on + def set.maps_to + theorem set.maps_to_comp + theorem set.maps_to_of_bij_on + theorem set.maps_to_of_eq_on + theorem set.maps_to_univ_univ + def set.right_inv_on + theorem set.right_inv_on_comp + theorem set.right_inv_on_of_eq_on_left + theorem set.right_inv_on_of_eq_on_right + theorem set.right_inv_on_of_inj_on_of_left_inv_on + def set.surj_on + theorem set.surj_on_comp + theorem set.surj_on_of_bij_on + theorem set.surj_on_of_eq_on + theorem set.surj_on_of_right_inv_on + theorem set.surjective_iff_surj_on_univ 2017-09-28 19:28:00-04:00 e7b2a0f style(analysis): renames the topology directory to analysis and introduced topology and measure_theory subdirectories ESTIMATED CHANGES Renamed topology/ennreal.lean to analysis/ennreal.lean Renamed topology/limits.lean to analysis/limits.lean + theorem has_sum_of_absolute_convergence + theorem is_sum_iff_tendsto_nat_of_nonneg Renamed topology/borel_space.lean to analysis/measure_theory/borel_space.lean Renamed topology/lebesgue_measure.lean to analysis/measure_theory/lebesgue_measure.lean Renamed topology/measurable_space.lean to analysis/measure_theory/measurable_space.lean Renamed topology/measure.lean to analysis/measure_theory/measure_space.lean Renamed topology/outer_measure.lean to analysis/measure_theory/outer_measure.lean Renamed topology/metric_space.lean to analysis/metric_space.lean Renamed topology/of_nat.lean to analysis/of_nat.lean Renamed topology/real.lean to analysis/real.lean Renamed topology/continuity.lean to analysis/topology/continuity.lean Renamed topology/infinite_sum.lean to analysis/topology/infinite_sum.lean - theorem has_sum_of_absolute_convergence - theorem is_sum_iff_tendsto_nat_of_nonneg Renamed topology/topological_space.lean to analysis/topology/topological_space.lean Renamed topology/topological_structures.lean to analysis/topology/topological_structures.lean Renamed topology/uniform_space.lean to analysis/topology/uniform_space.lean 2017-09-28 19:16:36-04:00 afefdcb chore(topology): move general theorems to the corresponding theories ESTIMATED CHANGES Added algebra/default.lean Modified algebra/field.lean + theorem inv_le_inv + theorem one_lt_inv Modified algebra/ordered_group.lean + theorem lt_sub_iff + theorem sub_lt_iff Modified algebra/ordered_ring.lean + theorem one_lt_two Modified algebra/ring.lean + theorem add_div + theorem div_eq_mul_inv + theorem neg_inv Added data/quot.lean + theorem forall_quotient_iff + theorem quot_mk_image_univ_eq Modified data/set/basic.lean + theorem set.image_preimage_eq_inter_rng Added data/set/disjointed.lean + def pairwise + theorem set.disjoint_disjointed + def set.disjointed + theorem set.disjointed_Union + theorem set.disjointed_induct + theorem set.disjointed_of_mono Modified data/set/lattice.lean + theorem subtype_val_image Modified data/set/prod.lean + theorem set.univ_prod_univ Added data/subtype.lean + theorem exists_subtype + theorem forall_subtype Modified order/complete_lattice.lean + theorem lattice.binfi_inf + theorem lattice.infi_bool_eq + theorem lattice.supr_bool_eq Modified order/filter.lean + theorem filter.at_top_ne_bot + theorem filter.inf_principal_eq_bot + theorem filter.map_at_top_eq + theorem filter.mem_at_top + theorem filter.mem_at_top_iff + theorem filter.mem_infi_sets_finset + theorem filter.tendsto_finset_image_at_top_at_top Modified topology/borel_space.lean + theorem measure_theory.borel_eq_generate_from_Iio_of_rat + theorem measure_theory.borel_eq_generate_from_Ioo_of_rat_of_rat + theorem measure_theory.is_topological_basis_Ioo_of_rat_of_rat Modified topology/continuity.lean + theorem continuous_if - theorem image_preimage_eq_inter_rng - theorem subtype.val_image - theorem univ_prod_univ Modified topology/ennreal.lean - theorem supr_bool_eq Modified topology/infinite_sum.lean - theorem add_div - theorem at_top_ne_bot - theorem cauchy_iff - theorem filter.mem_at_top - theorem filter.mem_infi_sets_finset - theorem forall_and_distrib' - theorem map_at_top_eq - theorem mem_at_top_iff - theorem mem_closure_of_tendsto - theorem tendsto_finset_image_at_top_at_top Modified topology/lebesgue_measure.lean - theorem borel_eq_generate_from_Iio_of_rat - theorem borel_eq_generate_from_Ioo_of_rat_of_rat - theorem inv_le_inv - theorem is_topological_basis_Ioo_of_rat_of_rat - theorem is_topological_basis_of_open_of_nhds - theorem max_of_rat_of_rat - theorem min_of_rat_of_rat Modified topology/limits.lean - theorem div_eq_mul_inv - theorem exists_lt_of_nat - theorem int_of_nat_eq_of_nat - theorem neg_inv - def of_nat - theorem of_nat_add - theorem of_nat_bit0 - theorem of_nat_bit1 - theorem of_nat_le_of_nat - theorem of_nat_le_of_nat_iff - theorem of_nat_mul - theorem of_nat_one - theorem of_nat_pos - theorem of_nat_sub - theorem one_lt_inv - theorem rat_coe_eq_of_nat - theorem rat_of_nat_eq_of_nat - theorem real_of_rat_of_nat_eq_of_nat - theorem zero_le_of_nat Modified topology/measurable_space.lean - def pairwise - theorem set.disjoint_disjointed - def set.disjointed - theorem set.disjointed_Union - theorem set.disjointed_induct - theorem set.disjointed_of_mono Modified topology/metric_space.lean - theorem exists_subtype Added topology/of_nat.lean + theorem exists_lt_of_nat + theorem int_of_nat_eq_of_nat + def of_nat + theorem of_nat_add + theorem of_nat_bit0 + theorem of_nat_bit1 + theorem of_nat_le_of_nat + theorem of_nat_le_of_nat_iff + theorem of_nat_mul + theorem of_nat_one + theorem of_nat_pos + theorem of_nat_sub + theorem rat_coe_eq_of_nat + theorem rat_of_nat_eq_of_nat + theorem real_of_rat_of_nat_eq_of_nat + theorem zero_le_of_nat Modified topology/real.lean - theorem forall_subtype_iff - theorem lt_sub_iff + theorem max_of_rat_of_rat + theorem min_of_rat_of_rat - theorem one_lt_two - theorem orderable_topology_of_nhds_abs - theorem quot_mk_image_univ_eq - theorem sub_lt_iff Modified topology/topological_space.lean + theorem closure_compl + def frontier + theorem frontier_eq_closure_inter_closure + theorem interior_compl + theorem mem_closure_of_tendsto + theorem topological_space.is_topological_basis_of_open_of_nhds Modified topology/topological_structures.lean - theorem binfi_inf - theorem closure_compl - theorem continuous_if - def frontier - theorem frontier_eq_closure_inter_closure - theorem inf_principal_eq_bot - theorem interior_compl + theorem orderable_topology_of_nhds_abs Modified topology/uniform_space.lean + theorem cauchy_iff - theorem forall_quotient_iff 2017-09-28 18:16:44-04:00 7e7c6f5 feat(topology): various additions (preparation for the nonnegative integral) ESTIMATED CHANGES Modified data/set/countable.lean Modified data/set/finite.lean + theorem set.finite_prod Modified data/set/prod.lean + theorem set.empty_prod + theorem set.insert_prod + theorem set.prod_empty + theorem set.prod_insert Modified topology/borel_space.lean +/- theorem measure_theory.borel_prod +/- theorem measure_theory.measurable_add +/- theorem measure_theory.measurable_mul +/- theorem measure_theory.measurable_neg +/- theorem measure_theory.measurable_of_continuous2 +/- theorem measure_theory.measurable_of_continuous +/- theorem measure_theory.measurable_sub Modified topology/ennreal.lean Modified topology/infinite_sum.lean + theorem tsum_eq_single 2017-09-28 18:08:23-04:00 c3aeb53 feat(topology): add Lebesgue measure ESTIMATED CHANGES Modified algebra/field.lean + theorem inv_lt_one Modified data/rat.lean Modified data/set/basic.lean + theorem set.range_eq_image Modified data/set/countable.lean +/- theorem set.countable_Union + theorem set.countable_Union_Prop + theorem set.countable_bUnion Modified data/set/default.lean Added data/set/intervals.lean + def set.Ico + theorem set.Ico_eq_Ico_iff + theorem set.Ico_eq_empty + theorem set.Ico_eq_empty_iff + theorem set.Ico_inter_Iio_eq + theorem set.Ico_sdiff_Iio_eq + theorem set.Ico_subset_Ico_iff + def set.Iio + def set.Ioo + theorem set.Ioo_eq_empty_of_ge + theorem set.Ioo_inter_Ioo Modified data/set/lattice.lean + theorem set.sdiff_inter_same + theorem set.sdiff_union_same + theorem set.subset.antisymm_iff + theorem set.union_of_subset_right Modified logic/basic.lean + theorem classical.or_not Modified order/bounds.lean + theorem ne_empty_of_is_glb + theorem ne_empty_of_is_lub Modified order/complete_lattice.lean + theorem lattice.Inf_lt_iff + theorem lattice.Sup_eq_top + theorem lattice.infi_lt_iff + theorem lattice.lt_Sup_iff + theorem lattice.lt_supr_iff Modified topology/borel_space.lean + theorem measure_theory.is_measurable_Ico + theorem measure_theory.is_measurable_Iio + theorem measure_theory.is_measurable_Ioo Modified topology/continuity.lean + theorem prod_generate_from_generate_from_eq Modified topology/ennreal.lean - theorem Inf_lt_iff - theorem Sup_eq_top + theorem ennreal.add_infi + theorem ennreal.add_sub_self + theorem ennreal.infi_add + theorem ennreal.infi_add_infi + theorem ennreal.infi_of_real + theorem ennreal.infi_sum + theorem ennreal.infty_sub_of_real - theorem ennreal.le_sub_iff_add_le + theorem ennreal.of_real_le_of_real + theorem ennreal.of_real_sub_of_real + theorem ennreal.sub_supr + theorem ennreal.supr_of_real - theorem infi_lt_iff - theorem lt_Sup_iff - theorem lt_supr_iff + theorem supr_bool_eq Modified topology/lebesgue_measure.lean - def Ico - theorem Ico_eq_Ico_iff - theorem Ico_eq_empty - theorem Ico_eq_empty_iff - theorem Ico_inter_Iio_eq - theorem Ico_sdiff_Iio_eq - theorem Ico_subset_Ico_iff - def Iio + theorem borel_eq_generate_from_Iio_of_rat + theorem borel_eq_generate_from_Ioo_of_rat_of_rat + theorem inv_le_inv - theorem is_lub_of_is_lub_of_tendsto + theorem is_topological_basis_Ioo_of_rat_of_rat + theorem is_topological_basis_of_open_of_nhds + theorem max_of_rat_of_rat + def measure_theory.lebesgue + theorem measure_theory.lebesgue_Ico + theorem measure_theory.lebesgue_Ioo + theorem measure_theory.lebesgue_singleton + theorem measure_theory.tendsto_of_nat_at_top_at_top + theorem min_of_rat_of_rat - theorem nhds_principal_ne_top_of_is_lub - theorem set.subset.antisymm_iff Modified topology/limits.lean + theorem of_nat_pos Modified topology/measurable_space.lean + theorem is_measurable_set_prod + theorem measurable_fst + theorem measurable_prod + theorem measurable_prod_mk + theorem measurable_snd + theorem measurable_space.comap_generate_from + theorem measurable_space.generate_from_le_generate_from + theorem measurable_space.generate_from_sup_generate_from + theorem measurable_subtype_mk + theorem measurable_subtype_val + theorem set.disjointed_of_mono Modified topology/measure.lean + theorem measure_theory.measure_Inter_eq_infi_nat + theorem measure_theory.measure_Union_eq_supr_nat - theorem measure_theory.measure_Union_le_nat + theorem measure_theory.measure_Union_le_tsum_nat +/- theorem measure_theory.measure_empty - theorem measure_theory.measure_eq_measure_of +/- theorem measure_theory.measure_mono + theorem measure_theory.measure_sdiff - def measure_theory.measure_space.measure +/- theorem measure_theory.measure_union + def measure_theory.outer_measure.to_measure - theorem supr_bool_eq Modified topology/outer_measure.lean - theorem classical.or_not - theorem ennreal.add_infi - theorem ennreal.infi_add - theorem ennreal.infi_add_infi - theorem ennreal.infi_sum - theorem inv_lt_one + theorem measure_theory.outer_measure.caratheodory_is_measurable + theorem measure_theory.outer_measure.caratheodory_is_measurable_eq - def measure_theory.outer_measure.inf - theorem measure_theory.outer_measure.inf_space_is_measurable - def measure_theory.outer_measure.measure - def measure_theory.outer_measure.space - theorem measure_theory.outer_measure.space_is_measurable_eq Modified topology/real.lean + theorem exists_gt_of_rat + theorem exists_lt_of_rat_of_rat_gt Modified topology/topological_space.lean + theorem induced_le_iff_le_coinduced + def topological_space.is_topological_basis + theorem topological_space.is_topological_basis_of_subbasis + theorem topological_space.mem_nhds_of_is_topological_basis Modified topology/topological_structures.lean + theorem closure_compl + theorem closure_le_eq + theorem continuous_if + theorem continuous_max + theorem continuous_min + theorem continuous_sub' + def frontier + theorem frontier_eq_closure_inter_closure + theorem frontier_le_subset_eq + theorem interior_compl + theorem is_glb_of_is_glb_of_tendsto + theorem is_glb_of_is_lub_of_tendsto + theorem is_glb_of_mem_nhds + theorem is_lub_of_is_lub_of_tendsto + theorem is_lub_of_mem_nhds + theorem is_open_Iio + theorem is_open_Ioo + theorem nhds_principal_ne_bot_of_is_glb + theorem nhds_principal_ne_bot_of_is_lub + theorem tendsto_max + theorem tendsto_min 2017-09-28 18:07:43-04:00 4297eeb feat(topology): add Borel spaces ESTIMATED CHANGES Modified data/set/basic.lean - theorem set.image_preimage_subset - theorem set.image_subset_eq - theorem set.image_union_supset - theorem set.inter_preimage_subset - theorem set.preimage_diff - theorem set.subset_preimage_image - theorem set.union_preimage_subset Modified data/set/countable.lean +/- theorem set.countable_empty + theorem set.countable_set_of_finite_subset +/- theorem set.countable_singleton Deleted data/set/function.lean - theorem set.bij_on.mk - def set.bij_on - theorem set.bij_on_comp - theorem set.bij_on_of_eq_on - theorem set.bij_on_of_inv_on - theorem set.bijective_iff_bij_on_univ - theorem set.eq_on_of_left_inv_of_right_inv - theorem set.image_eq_of_bij_on - theorem set.image_eq_of_maps_to_of_surj_on - theorem set.image_subset_of_maps_to - theorem set.image_subset_of_maps_to_of_subset - def set.inj_on - theorem set.inj_on_comp - theorem set.inj_on_empty - theorem set.inj_on_of_bij_on - theorem set.inj_on_of_eq_on - theorem set.inj_on_of_inj_on_of_subset - theorem set.inj_on_of_left_inv_on - theorem set.injective_iff_inj_on_univ - def set.inv_on - def set.left_inv_on - theorem set.left_inv_on_comp - theorem set.left_inv_on_of_eq_on_left - theorem set.left_inv_on_of_eq_on_right - theorem set.left_inv_on_of_surj_on_right_inv_on - def set.maps_to - theorem set.maps_to_comp - theorem set.maps_to_of_bij_on - theorem set.maps_to_of_eq_on - theorem set.maps_to_univ_univ - def set.right_inv_on - theorem set.right_inv_on_comp - theorem set.right_inv_on_of_eq_on_left - theorem set.right_inv_on_of_eq_on_right - theorem set.right_inv_on_of_inj_on_of_left_inv_on - def set.surj_on - theorem set.surj_on_comp - theorem set.surj_on_of_bij_on - theorem set.surj_on_of_eq_on - theorem set.surj_on_of_right_inv_on - theorem set.surjective_iff_surj_on_univ Modified data/set/lattice.lean + theorem bind_def + def disjoint + theorem disjoint_bot_left + theorem disjoint_bot_right + theorem disjoint_symm + theorem fmap_eq_image + theorem image_Union + theorem mem_seq_iff + theorem monotone_preimage + theorem preimage_Union + theorem preimage_sUnion + theorem set.Inter_neg + theorem set.Inter_pos + theorem set.Inter_univ + theorem set.Union_empty + theorem set.Union_neg + theorem set.Union_pos - theorem set.bind_def - def set.disjoint - theorem set.disjoint_bot_left - theorem set.disjoint_bot_right - theorem set.disjoint_symm - theorem set.fmap_eq_image - theorem set.image_Union - theorem set.mem_seq_iff - theorem set.monotone_preimage - theorem set.preimage_Union - theorem set.preimage_sUnion + theorem set.sdiff_empty + theorem set.sdiff_eq: + theorem set.union_sdiff_left + theorem set.union_sdiff_right - theorem set.univ_subtype + theorem univ_subtype Modified order/complete_lattice.lean + theorem lattice.infi_neg + theorem lattice.infi_pos + theorem lattice.supr_neg + theorem lattice.supr_pos Added topology/borel_space.lean + theorem measure_theory.borel_comap + theorem measure_theory.borel_eq_generate_from_of_subbasis + theorem measure_theory.borel_prod + theorem measure_theory.is_measurable_closure + theorem measure_theory.is_measurable_interior + theorem measure_theory.is_measurable_of_is_closed + theorem measure_theory.is_measurable_of_is_open + theorem measure_theory.measurable_add + theorem measure_theory.measurable_mul + theorem measure_theory.measurable_neg + theorem measure_theory.measurable_of_continuous2 + theorem measure_theory.measurable_of_continuous + theorem measure_theory.measurable_sub Modified topology/measurable_space.lean Modified topology/outer_measure.lean - theorem Inter_neg - theorem Inter_pos - theorem Inter_univ - theorem Union_empty - theorem Union_neg - theorem Union_pos - theorem sdiff_empty - theorem sdiff_eq: - theorem union_sdiff_left - theorem union_sdiff_right Modified topology/topological_space.lean + theorem is_open_sInter + theorem topological_space.is_open_generated_countable_inter Modified topology/topological_structures.lean - theorem infi_neg - theorem infi_pos - theorem supr_neg - theorem supr_pos 2017-09-22 12:52:07-05:00 865ba36 feat(data/set): add functions over sets ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.image_preimage_subset + theorem set.image_subset_eq + theorem set.image_union_supset + theorem set.inter_preimage_subset + theorem set.preimage_diff + theorem set.subset_preimage_image + theorem set.union_preimage_subset Modified data/set/countable.lean +/- theorem set.countable_empty - theorem set.countable_set_of_finite_subset +/- theorem set.countable_singleton Added data/set/function.lean + theorem set.bij_on.mk + def set.bij_on + theorem set.bij_on_comp + theorem set.bij_on_of_eq_on + theorem set.bij_on_of_inv_on + theorem set.bijective_iff_bij_on_univ + theorem set.eq_on_of_left_inv_of_right_inv + theorem set.image_eq_of_bij_on + theorem set.image_eq_of_maps_to_of_surj_on + theorem set.image_subset_of_maps_to + theorem set.image_subset_of_maps_to_of_subset + def set.inj_on + theorem set.inj_on_comp + theorem set.inj_on_empty + theorem set.inj_on_of_bij_on + theorem set.inj_on_of_eq_on + theorem set.inj_on_of_inj_on_of_subset + theorem set.inj_on_of_left_inv_on + theorem set.injective_iff_inj_on_univ + def set.inv_on + def set.left_inv_on + theorem set.left_inv_on_comp + theorem set.left_inv_on_of_eq_on_left + theorem set.left_inv_on_of_eq_on_right + theorem set.left_inv_on_of_surj_on_right_inv_on + def set.maps_to + theorem set.maps_to_comp + theorem set.maps_to_of_bij_on + theorem set.maps_to_of_eq_on + theorem set.maps_to_univ_univ + def set.right_inv_on + theorem set.right_inv_on_comp + theorem set.right_inv_on_of_eq_on_left + theorem set.right_inv_on_of_eq_on_right + theorem set.right_inv_on_of_inj_on_of_left_inv_on + def set.surj_on + theorem set.surj_on_comp + theorem set.surj_on_of_bij_on + theorem set.surj_on_of_eq_on + theorem set.surj_on_of_right_inv_on + theorem set.surjective_iff_surj_on_univ Modified data/set/lattice.lean - theorem bind_def - def disjoint - theorem disjoint_bot_left - theorem disjoint_bot_right - theorem disjoint_symm - theorem fmap_eq_image - theorem image_Union - theorem mem_seq_iff - theorem monotone_preimage - theorem preimage_Union - theorem preimage_sUnion - theorem set.Inter_neg - theorem set.Inter_pos - theorem set.Inter_univ - theorem set.Union_empty - theorem set.Union_neg - theorem set.Union_pos + theorem set.bind_def + def set.disjoint + theorem set.disjoint_bot_left + theorem set.disjoint_bot_right + theorem set.disjoint_symm + theorem set.fmap_eq_image + theorem set.image_Union + theorem set.mem_seq_iff + theorem set.monotone_preimage + theorem set.preimage_Union + theorem set.preimage_sUnion - theorem set.sdiff_empty - theorem set.sdiff_eq: - theorem set.union_sdiff_left - theorem set.union_sdiff_right + theorem set.univ_subtype - theorem univ_subtype Modified order/complete_lattice.lean - theorem lattice.infi_neg - theorem lattice.infi_pos - theorem lattice.supr_neg - theorem lattice.supr_pos Modified topology/measurable_space.lean Modified topology/outer_measure.lean + theorem Inter_neg + theorem Inter_pos + theorem Inter_univ + theorem Union_empty + theorem Union_neg + theorem Union_pos + theorem sdiff_empty + theorem sdiff_eq: + theorem union_sdiff_left + theorem union_sdiff_right Modified topology/topological_space.lean - theorem is_open_sInter - theorem topological_space.is_open_generated_countable_inter Modified topology/topological_structures.lean + theorem infi_neg + theorem infi_pos + theorem supr_neg + theorem supr_pos 2017-09-22 12:31:19-04:00 e0abdab feat(topology/topological_space): add countablility and separability axioms for topological spaces ESTIMATED CHANGES Modified data/set/countable.lean +/- theorem set.countable_empty + theorem set.countable_set_of_finite_subset +/- theorem set.countable_singleton Modified data/set/lattice.lean + theorem bind_def + def disjoint + theorem disjoint_bot_left + theorem disjoint_bot_right + theorem disjoint_symm + theorem fmap_eq_image + theorem image_Union + theorem mem_seq_iff + theorem monotone_preimage + theorem preimage_Union + theorem preimage_sUnion + theorem set.Inter_neg + theorem set.Inter_pos + theorem set.Inter_univ + theorem set.Union_empty + theorem set.Union_neg + theorem set.Union_pos - theorem set.bind_def - def set.disjoint - theorem set.disjoint_bot_left - theorem set.disjoint_bot_right - theorem set.disjoint_symm - theorem set.fmap_eq_image - theorem set.image_Union - theorem set.mem_seq_iff - theorem set.monotone_preimage - theorem set.preimage_Union - theorem set.preimage_sUnion + theorem set.sdiff_empty + theorem set.sdiff_eq: + theorem set.union_sdiff_left + theorem set.union_sdiff_right - theorem set.univ_subtype + theorem univ_subtype Modified order/complete_lattice.lean + theorem lattice.infi_neg + theorem lattice.infi_pos + theorem lattice.supr_neg + theorem lattice.supr_pos Modified topology/measurable_space.lean Modified topology/outer_measure.lean - theorem Inter_neg - theorem Inter_pos - theorem Inter_univ - theorem Union_empty - theorem Union_neg - theorem Union_pos - theorem sdiff_empty - theorem sdiff_eq: - theorem union_sdiff_left - theorem union_sdiff_right Modified topology/topological_space.lean + theorem is_open_sInter + theorem topological_space.is_open_generated_countable_inter Modified topology/topological_structures.lean - theorem infi_neg - theorem infi_pos - theorem supr_neg - theorem supr_pos 2017-09-21 15:10:53-05:00 d5e009f Merge branch 'master' of https://github.com/leanprover/mathlib ESTIMATED CHANGES 2017-09-21 13:22:44-04:00 5bb145e feat(topology/lebesgue_measure): add Lebesgue outer measure; show that the lower half open interval is measurable ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.abs_sum_le_sum_abs + theorem finset.prod_sdiff Modified algebra/field.lean + theorem inv_pos Modified algebra/group_power.lean + theorem inv_inv' + theorem inv_one +/- theorem pow_ge_one_of_ge_one + theorem pow_inv + theorem pow_le_pow + theorem pow_ne_zero + theorem pow_nonneg +/- theorem pow_pos +/- theorem pow_succ' Modified algebra/ordered_monoid.lean Modified data/finset/basic.lean + theorem finset.exists_nat_subset_upto + theorem finset.not_mem_upto + theorem finset.sdiff_subset_sdiff +/- theorem finset.subset.refl + theorem finset.upto_subset_upto_iff +/- theorem finset.upto_succ +/- theorem finset.upto_zero + theorem lt_max_iff Modified data/set/lattice.lean + theorem set.sdiff_subset_sdiff + theorem set.subset_Union Modified order/boolean_algebra.lean + theorem lattice.sub_le_sub Modified topology/ennreal.lean + theorem Inf_lt_iff + theorem ennreal.le_of_forall_epsilon_le + theorem ennreal.lt_add_right + theorem ennreal.sum_of_real + theorem ennreal.supr_add + theorem infi_lt_iff - theorem inv_inv' - theorem inv_pos Modified topology/infinite_sum.lean + theorem add_div + theorem filter.mem_at_top + theorem has_sum_of_absolute_convergence + theorem is_sum_iff_tendsto_nat_of_nonneg + theorem tendsto_sum_nat_of_is_sum Added topology/lebesgue_measure.lean + def Ico + theorem Ico_eq_Ico_iff + theorem Ico_eq_empty + theorem Ico_eq_empty_iff + theorem Ico_inter_Iio_eq + theorem Ico_sdiff_Iio_eq + theorem Ico_subset_Ico_iff + def Iio + theorem is_lub_of_is_lub_of_tendsto + theorem measure_theory.le_lebesgue_length + def measure_theory.lebesgue_length + theorem measure_theory.lebesgue_length_Ico + theorem measure_theory.lebesgue_length_Ico_le_lebesgue_length_Ico + theorem measure_theory.lebesgue_length_empty + theorem measure_theory.lebesgue_length_subadditive + def measure_theory.lebesgue_outer + theorem measure_theory.lebesgue_outer_Ico + theorem measure_theory.lebesgue_outer_is_measurable_Iio + theorem nhds_principal_ne_top_of_is_lub + theorem set.subset.antisymm_iff Added topology/limits.lean + theorem div_eq_mul_inv + theorem exists_lt_of_nat + theorem int_of_nat_eq_of_nat + theorem is_sum_geometric + theorem map_succ_at_top_eq + theorem mul_add_one_le_pow + theorem neg_inv + def of_nat + theorem of_nat_add + theorem of_nat_bit0 + theorem of_nat_bit1 + theorem of_nat_le_of_nat + theorem of_nat_le_of_nat_iff + theorem of_nat_mul + theorem of_nat_one + theorem of_nat_sub + theorem one_lt_inv + theorem rat_coe_eq_of_nat + theorem rat_of_nat_eq_of_nat + theorem real_of_rat_of_nat_eq_of_nat + theorem sum_geometric' + theorem sum_geometric + theorem tendsto_comp_succ_at_top_iff + theorem tendsto_inverse_at_top_nhds_0 + theorem tendsto_pow_at_top_at_top_of_gt_1 + theorem tendsto_pow_at_top_nhds_0_of_lt_1 + theorem zero_le_of_nat Modified topology/measure.lean Modified topology/metric_space.lean + theorem mem_uniformity_dist Added topology/outer_measure.lean + theorem Inter_neg + theorem Inter_pos + theorem Inter_univ + theorem Union_empty + theorem Union_neg + theorem Union_pos + theorem classical.or_not + theorem ennreal.add_infi + theorem ennreal.infi_add + theorem ennreal.infi_add_infi + theorem ennreal.infi_sum + theorem inv_lt_one + def measure_theory.outer_measure.inf + theorem measure_theory.outer_measure.inf_space_is_measurable + def measure_theory.outer_measure.measure + def measure_theory.outer_measure.space + theorem measure_theory.outer_measure.space_is_measurable_eq + theorem measure_theory.outer_measure.subadditive + structure measure_theory.outer_measure + theorem sdiff_empty + theorem sdiff_eq: + theorem union_sdiff_left + theorem union_sdiff_right Modified topology/real.lean +/- theorem one_lt_two 2017-09-21 10:33:23-05:00 d9865ae Merge branch 'master' of https://github.com/leanprover/mathlib ESTIMATED CHANGES Modified algebra/big_operators.lean - theorem finset.abs_sum_le_sum_abs - theorem finset.prod_sdiff Modified algebra/field.lean - theorem inv_pos Modified algebra/group_power.lean - theorem inv_inv' - theorem inv_one +/- theorem pow_ge_one_of_ge_one - theorem pow_inv - theorem pow_le_pow - theorem pow_ne_zero - theorem pow_nonneg +/- theorem pow_pos +/- theorem pow_succ' Modified algebra/ordered_monoid.lean Modified data/finset/basic.lean - theorem finset.exists_nat_subset_upto - theorem finset.not_mem_upto - theorem finset.sdiff_subset_sdiff +/- theorem finset.subset.refl - theorem finset.upto_subset_upto_iff +/- theorem finset.upto_succ +/- theorem finset.upto_zero - theorem lt_max_iff Modified data/set/lattice.lean - theorem set.sdiff_subset_sdiff - theorem set.subset_Union Modified order/boolean_algebra.lean - theorem lattice.sub_le_sub Modified topology/ennreal.lean - theorem Inf_lt_iff - theorem ennreal.le_of_forall_epsilon_le - theorem ennreal.lt_add_right - theorem ennreal.sum_of_real - theorem ennreal.supr_add - theorem infi_lt_iff + theorem inv_inv' + theorem inv_pos Modified topology/infinite_sum.lean - theorem add_div - theorem filter.mem_at_top - theorem has_sum_of_absolute_convergence - theorem is_sum_iff_tendsto_nat_of_nonneg - theorem tendsto_sum_nat_of_is_sum Deleted topology/limits.lean - theorem div_eq_mul_inv - theorem exists_lt_of_nat - theorem int_of_nat_eq_of_nat - theorem is_sum_geometric - theorem map_succ_at_top_eq - theorem mul_add_one_le_pow - theorem neg_inv - def of_nat - theorem of_nat_add - theorem of_nat_bit0 - theorem of_nat_bit1 - theorem of_nat_le_of_nat - theorem of_nat_le_of_nat_iff - theorem of_nat_mul - theorem of_nat_one - theorem of_nat_sub - theorem one_lt_inv - theorem rat_coe_eq_of_nat - theorem rat_of_nat_eq_of_nat - theorem real_of_rat_of_nat_eq_of_nat - theorem sum_geometric' - theorem sum_geometric - theorem tendsto_comp_succ_at_top_iff - theorem tendsto_inverse_at_top_nhds_0 - theorem tendsto_pow_at_top_at_top_of_gt_1 - theorem tendsto_pow_at_top_nhds_0_of_lt_1 - theorem zero_le_of_nat Modified topology/measure.lean Modified topology/metric_space.lean - theorem mem_uniformity_dist Deleted topology/outer_measure.lean - theorem Inter_neg - theorem Inter_pos - theorem Inter_univ - theorem Union_empty - theorem Union_neg - theorem Union_pos - theorem classical.or_not - theorem ennreal.add_infi - theorem ennreal.infi_add - theorem ennreal.infi_add_infi - theorem ennreal.infi_sum - theorem inv_lt_one - def measure_theory.outer_measure.inf - theorem measure_theory.outer_measure.inf_space_is_measurable - def measure_theory.outer_measure.measure - def measure_theory.outer_measure.space - theorem measure_theory.outer_measure.space_is_measurable_eq - theorem measure_theory.outer_measure.subadditive - structure measure_theory.outer_measure - theorem sdiff_empty - theorem sdiff_eq: - theorem union_sdiff_left - theorem union_sdiff_right Modified topology/real.lean +/- theorem one_lt_two 2017-09-20 20:02:04-04:00 4235594 feat(topology/outer_measure): add outer measures and tools for Caratheodorys extension method ESTIMATED CHANGES Modified algebra/field.lean + theorem inv_pos Modified algebra/ordered_monoid.lean Modified data/finset/basic.lean +/- theorem finset.subset.refl +/- theorem finset.upto_succ +/- theorem finset.upto_zero + theorem lt_max_iff Modified data/set/lattice.lean + theorem set.sdiff_subset_sdiff + theorem set.subset_Union Modified order/boolean_algebra.lean + theorem lattice.sub_le_sub Modified topology/ennreal.lean + theorem Inf_lt_iff + theorem ennreal.le_of_forall_epsilon_le + theorem ennreal.lt_add_right + theorem ennreal.sum_of_real + theorem ennreal.supr_add + theorem infi_lt_iff - theorem inv_inv' - theorem inv_pos Modified topology/limits.lean - theorem inv_pos Modified topology/measure.lean Added topology/outer_measure.lean + theorem Inter_neg + theorem Inter_pos + theorem Inter_univ + theorem Union_empty + theorem Union_neg + theorem Union_pos + theorem classical.or_not + theorem ennreal.add_infi + theorem ennreal.infi_add + theorem ennreal.infi_add_infi + theorem ennreal.infi_sum + theorem inv_lt_one + def measure_theory.outer_measure.inf + theorem measure_theory.outer_measure.inf_space_is_measurable + def measure_theory.outer_measure.measure + def measure_theory.outer_measure.space + theorem measure_theory.outer_measure.space_is_measurable_eq + theorem measure_theory.outer_measure.subadditive + structure measure_theory.outer_measure + theorem sdiff_empty + theorem sdiff_eq: + theorem union_sdiff_left + theorem union_sdiff_right Modified topology/real.lean +/- theorem one_lt_two 2017-09-20 18:29:06-04:00 4698828 feat(topology): prove geometric series ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.abs_sum_le_sum_abs + theorem finset.prod_sdiff Modified algebra/group_power.lean + theorem inv_inv' + theorem inv_one +/- theorem pow_ge_one_of_ge_one + theorem pow_inv + theorem pow_le_pow + theorem pow_ne_zero + theorem pow_nonneg +/- theorem pow_pos +/- theorem pow_succ' Modified data/finset/basic.lean + theorem finset.exists_nat_subset_upto + theorem finset.not_mem_upto + theorem finset.sdiff_subset_sdiff + theorem finset.upto_subset_upto_iff Modified topology/infinite_sum.lean + theorem add_div + theorem filter.mem_at_top + theorem has_sum_of_absolute_convergence + theorem is_sum_iff_tendsto_nat_of_nonneg + theorem tendsto_sum_nat_of_is_sum Added topology/limits.lean + theorem div_eq_mul_inv + theorem exists_lt_of_nat + theorem int_of_nat_eq_of_nat + theorem inv_pos + theorem is_sum_geometric + theorem map_succ_at_top_eq + theorem mul_add_one_le_pow + theorem neg_inv + def of_nat + theorem of_nat_add + theorem of_nat_bit0 + theorem of_nat_bit1 + theorem of_nat_le_of_nat + theorem of_nat_le_of_nat_iff + theorem of_nat_mul + theorem of_nat_one + theorem of_nat_sub + theorem one_lt_inv + theorem rat_coe_eq_of_nat + theorem rat_of_nat_eq_of_nat + theorem real_of_rat_of_nat_eq_of_nat + theorem sum_geometric' + theorem sum_geometric + theorem tendsto_comp_succ_at_top_iff + theorem tendsto_inverse_at_top_nhds_0 + theorem tendsto_pow_at_top_at_top_of_gt_1 + theorem tendsto_pow_at_top_nhds_0_of_lt_1 + theorem zero_le_of_nat Modified topology/metric_space.lean + theorem mem_uniformity_dist Modified topology/real.lean 2017-09-19 02:55:14-04:00 6b93e93 refactor(data/equiv,encodable): refactor/simplify proofs ESTIMATED CHANGES Modified data/encodable.lean +/- def encodable.choose +/- theorem encodable.choose_spec + def encodable.choose_x - def encodable.pn - theorem succ_ne_zero Modified data/equiv.lean +/- theorem equiv.apply_eq_iff_eq_inverse_apply +/- def equiv.bool_prod_equiv_sum + def equiv.bool_prod_nat_equiv_nat +/- theorem equiv.coe_fn_symm_mk + def equiv.equiv_empty +/- def equiv.false_equiv_empty +/- theorem equiv.inverse_apply_apply +/- def equiv.nat_equiv_nat_sum_unit +/- def equiv.nat_prod_nat_equiv_nat +/- def equiv.nat_sum_bool_equiv_nat + def equiv.nat_sum_nat_equiv_nat +/- def equiv.nat_sum_unit_equiv_nat + def equiv.option_equiv_sum_unit + def equiv.prod_equiv_of_equiv_nat +/- def equiv.subtype_equiv_of_subtype Modified data/fin.lean Modified data/nat/basic.lean + theorem nat.bodd_div2_eq Modified data/option.lean + theorem option.bind_some Modified data/set/enumerate.lean - theorem option.bind_some Modified tactic/interactive.lean 2017-09-18 22:41:41-04:00 1e4c869 doc(tactic/interactive): rename simpf -> simpa, document rcases and simpa ESTIMATED CHANGES Modified algebra/ordered_group.lean Modified algebra/ordered_ring.lean Modified data/nat/pairing.lean Modified data/nat/sqrt.lean Modified tactic/interactive.lean Modified topology/real.lean Modified topology/topological_space.lean Modified topology/uniform_space.lean 2017-09-18 22:08:42-04:00 cb4a92e chore(algebra/ordered_ring): fix names, update to lean ESTIMATED CHANGES Modified algebra/ordered_ring.lean Modified data/nat/pairing.lean + theorem nat.unpair_le +/- theorem nat.unpair_lt - theorem nat.unpair_lt_aux 2017-09-18 21:57:48-04:00 06e797b refactor(data/nat/pairing): improve proof readability in response to review comments on 0acdf1c ESTIMATED CHANGES Modified data/nat/pairing.lean +/- theorem nat.unpair_lt 2017-09-17 15:38:03-04:00 0acdf1c feat(data/nat): better sqrt + pairing, prime numbers, renames... ESTIMATED CHANGES Modified algebra/functions.lean + theorem lt_min_iff + theorem max_lt_iff Modified algebra/group_power.lean Modified algebra/order.lean + theorem eq_or_lt_of_le + theorem lt_iff_le_and_ne Modified algebra/ring.lean + theorem mul_dvd_mul_iff_left + theorem mul_dvd_mul_iff_right Modified data/finset/basic.lean Modified data/int/basic.lean Modified data/nat/basic.lean + theorem nat.bit0_le_bit + theorem nat.bit_le + theorem nat.bit_le_bit1 + theorem nat.bit_lt_bit0 + theorem nat.bit_lt_bit + theorem nat.bit_ne_zero + theorem nat.dvd_fact + def nat.fact + theorem nat.fact_dvd_fact + theorem nat.fact_le + theorem nat.fact_ne_zero + theorem nat.fact_one + theorem nat.fact_pos + theorem nat.fact_succ + theorem nat.fact_zero +/- theorem nat.le_add_one_iff +/- theorem nat.le_zero_iff + theorem nat.lt_pred_of_succ_lt + theorem nat.lt_size + theorem nat.lt_size_self + theorem nat.lt_succ_iff - theorem nat.lt_succ_iff_le + theorem nat.lt_succ_iff_lt_or_eq + theorem nat.mul_self_inj + theorem nat.pos_iff_ne_zero' + theorem nat.pos_iff_ne_zero + theorem nat.pow_add + theorem nat.pow_dvd_pow + theorem nat.shiftl'_ne_zero_left + theorem nat.shiftl'_tt_ne_zero + theorem nat.size_bit0 + theorem nat.size_bit1 + theorem nat.size_bit + theorem nat.size_eq_zero + theorem nat.size_le + theorem nat.size_le_size + theorem nat.size_pos + theorem nat.size_pow + theorem nat.size_shiftl' + theorem nat.size_shiftl + theorem nat.size_zero + theorem nat.sub_le_left_iff_le_add + theorem nat.sub_le_right_iff_le_add +/- theorem nat.succ_le_succ_iff Deleted data/nat/bquant.lean - def ball' - def ball - theorem ball_of_ball_succ' - theorem ball_of_ball_succ - theorem ball_succ_of_ball - theorem ball_zero' - theorem ball_zero - theorem not_ball_of_not - theorem not_ball_succ_of_not_ball - def step_p Renamed data/nat/sub.lean to data/nat/dist.lean Modified data/nat/gcd.lean + theorem nat.coprime.coprime_dvd_left + theorem nat.coprime.coprime_dvd_right + theorem nat.coprime.coprime_mul_left + theorem nat.coprime.coprime_mul_left_right + theorem nat.coprime.coprime_mul_right + theorem nat.coprime.coprime_mul_right_right + theorem nat.coprime.dvd_of_dvd_mul_left + theorem nat.coprime.dvd_of_dvd_mul_right + theorem nat.coprime.eq_one_of_dvd + theorem nat.coprime.gcd_eq_one + theorem nat.coprime.gcd_mul_left_cancel + theorem nat.coprime.gcd_mul_left_cancel_right + theorem nat.coprime.gcd_mul_right_cancel + theorem nat.coprime.gcd_mul_right_cancel_right + theorem nat.coprime.mul + theorem nat.coprime.mul_right + theorem nat.coprime.pow + theorem nat.coprime.pow_left + theorem nat.coprime.pow_right + theorem nat.coprime.symm - theorem nat.coprime_mul - theorem nat.coprime_mul_right - theorem nat.coprime_of_coprime_dvd_left - theorem nat.coprime_of_coprime_dvd_right - theorem nat.coprime_of_coprime_mul_left - theorem nat.coprime_of_coprime_mul_left_right - theorem nat.coprime_of_coprime_mul_right - theorem nat.coprime_of_coprime_mul_right_right - theorem nat.coprime_pow - theorem nat.coprime_pow_left - theorem nat.coprime_pow_right - theorem nat.coprime_swap - theorem nat.dvd_of_coprime_of_dvd_mul_left - theorem nat.dvd_of_coprime_of_dvd_mul_right + theorem nat.gcd_eq_left - theorem nat.gcd_eq_one_of_coprime + theorem nat.gcd_eq_right - theorem nat.gcd_mul_left_cancel_of_coprime - theorem nat.gcd_mul_left_cancel_of_coprime_right - theorem nat.gcd_mul_right_cancel_of_coprime - theorem nat.gcd_mul_right_cancel_of_coprime_right Modified data/nat/pairing.lean +/- theorem nat.unpair_lt +/- theorem nat.unpair_lt_aux Added data/nat/prime.lean + theorem nat.coprime_or_dvd_of_prime + theorem nat.coprime_pow_primes + theorem nat.coprime_primes + def nat.decidable_prime_1 + theorem nat.dvd_of_prime_of_dvd_pow + theorem nat.dvd_prime + theorem nat.dvd_prime_ge_two + theorem nat.dvd_prime_pow + theorem nat.exists_dvd_of_not_prime2 + theorem nat.exists_dvd_of_not_prime + theorem nat.exists_infinite_primes + theorem nat.exists_prime_and_dvd + def nat.min_fac + def nat.min_fac_aux + theorem nat.min_fac_aux_has_prop + theorem nat.min_fac_dvd + theorem nat.min_fac_eq + theorem nat.min_fac_has_prop + theorem nat.min_fac_le + theorem nat.min_fac_le_of_dvd + theorem nat.min_fac_one + theorem nat.min_fac_pos + theorem nat.min_fac_prime + theorem nat.min_fac_zero + theorem nat.not_prime_iff_min_fac_lt + theorem nat.not_prime_one + theorem nat.not_prime_zero + theorem nat.prime.coprime_iff_not_dvd + theorem nat.prime.coprime_pow_of_not_dvd + theorem nat.prime.dvd_iff_not_coprime + theorem nat.prime.dvd_mul + theorem nat.prime.ge_two + theorem nat.prime.gt_one + theorem nat.prime.not_dvd_mul + theorem nat.prime.not_dvd_one + theorem nat.prime.pos + theorem nat.prime.pred_pos + def nat.prime + theorem nat.prime_def_le_sqrt + theorem nat.prime_def_lt' + theorem nat.prime_def_lt + theorem nat.prime_def_min_fac + theorem nat.prime_three + theorem nat.prime_two + theorem nat.succ_pred_prime Modified data/nat/sqrt.lean - theorem nat.eq_zero_of_sqrt_eq_zero + theorem nat.le_sqrt +/- theorem nat.le_three_of_sqrt_eq_one + theorem nat.lt_succ_sqrt - theorem nat.mul_square_cancel + def nat.sqrt + theorem nat.sqrt_add_eq + def nat.sqrt_aux + theorem nat.sqrt_aux_0 + theorem nat.sqrt_aux_1 + theorem nat.sqrt_aux_2 + theorem nat.sqrt_aux_dec +/- theorem nat.sqrt_eq + theorem nat.sqrt_eq_zero + theorem nat.sqrt_le + theorem nat.sqrt_le_add + theorem nat.sqrt_le_self + theorem nat.sqrt_le_sqrt - theorem nat.sqrt_lower +/- theorem nat.sqrt_lt + theorem nat.sqrt_lt_self - theorem nat.sqrt_mono - theorem nat.sqrt_mul_eq + theorem nat.sqrt_pos - theorem nat.sqrt_pos_of_pos - theorem nat.sqrt_upper Modified data/rat.lean Modified logic/basic.lean + theorem not.imp Modified tactic/rcases.lean Modified topology/measurable_space.lean - theorem nat.lt_succ_iff Modified topology/topological_structures.lean - theorem lt_min_iff - theorem max_lt_iff 2017-09-16 03:26:54-04:00 f542d42 chore(algebra/ordered_ring): update to lean ESTIMATED CHANGES Modified algebra/ordered_ring.lean - theorem linear_ordered_ring.eq_zero_or_eq_zero_of_mul_eq_zero 2017-09-16 02:55:01-04:00 fe1ad4b feat(data/rat): derive properties of rat floor and ceil ESTIMATED CHANGES Modified data/int/basic.lean + theorem int.le_to_nat + theorem int.lt_succ_self + theorem int.pred_self_lt + theorem int.to_nat_eq_max + theorem int.to_nat_le Modified data/rat.lean + theorem rat.ceil_add_int + theorem rat.ceil_coe + theorem rat.ceil_le + theorem rat.ceil_mono + theorem rat.ceil_sub_int +/- theorem rat.coe_int_add +/- theorem rat.coe_int_eq_mk + theorem rat.coe_int_inj + theorem rat.coe_int_le + theorem rat.coe_int_lt + theorem rat.coe_int_mul + theorem rat.coe_int_neg +/- theorem rat.coe_int_one +/- theorem rat.coe_int_sub +/- theorem rat.coe_nat_rat_eq_mk - theorem rat.exists_upper_nat_bound + theorem rat.floor_add_int + theorem rat.floor_coe + theorem rat.floor_le + theorem rat.floor_lt + theorem rat.floor_mono + theorem rat.floor_sub_int + theorem rat.le_ceil + theorem rat.le_floor + theorem rat.le_nat_ceil - theorem rat.le_of_of_int_le_of_int + theorem rat.lt_nat_ceil + theorem rat.lt_succ_floor + theorem rat.mk_le +/- def rat.nat_ceil + theorem rat.nat_ceil_add_nat - theorem rat.nat_ceil_add_one_eq + theorem rat.nat_ceil_coe + theorem rat.nat_ceil_le +/- theorem rat.nat_ceil_lt_add_one - theorem rat.nat_ceil_min +/- theorem rat.nat_ceil_mono - theorem rat.nat_ceil_spec +/- theorem rat.nat_ceil_zero + theorem rat.sub_def Modified topology/real.lean 2017-09-16 02:53:53-04:00 a1c3e2d feat(algebra): new algebra theorems (more iff) ESTIMATED CHANGES Modified algebra/big_operators.lean Added algebra/functions.lean + theorem abs_eq_zero + theorem abs_le + theorem abs_lt + theorem le_min_iff + theorem max_le_iff Modified algebra/group.lean - theorem abs_eq_zero_iff - theorem abs_le_iff - theorem abs_lt_iff + theorem add_sub_cancel' + theorem add_sub_cancel'_right - theorem eq_iff_sub_eq_zero +/- theorem eq_inv_iff_eq_inv + theorem eq_inv_mul_iff_mul_eq + theorem eq_mul_inv_iff_mul_eq + theorem eq_of_inv_eq_inv - theorem eq_of_mul_inv_eq_one - theorem eq_one_of_inv_eq_one + theorem eq_sub_iff_add_eq' +/- theorem eq_sub_iff_add_eq + theorem inv_eq_iff_inv_eq - theorem inv_eq_inv_iff_eq + theorem inv_eq_one - theorem inv_eq_one_iff_eq_one + theorem inv_inj' + theorem inv_mul_eq_iff_eq_mul + theorem inv_ne_one +/- theorem le_sub_iff_add_le +/- theorem left_inverse_inv - theorem mul_eq_iff_eq_inv_mul - theorem mul_eq_iff_eq_mul_inv + theorem mul_eq_one_iff_eq_inv + theorem mul_eq_one_iff_inv_eq + theorem mul_inv_eq_iff_eq_mul + theorem mul_inv_eq_one + theorem mul_left_inj + theorem mul_right_inj + theorem mul_self_iff_eq_one + theorem neg_add' + theorem sub_add_sub_cancel + theorem sub_eq_iff_eq_add' +/- theorem sub_eq_iff_eq_add + theorem sub_eq_neg_add + theorem sub_eq_zero +/- theorem sub_le_iff_le_add + theorem sub_left_inj + theorem sub_ne_zero + theorem sub_right_inj + theorem sub_sub_sub_cancel_left + theorem sub_sub_sub_cancel_right + theorem sub_sub_swap Added algebra/order.lean + theorem eq_of_forall_ge_iff + theorem eq_of_forall_le_iff + theorem le_iff_eq_or_lt + theorem le_iff_le_iff_lt_iff_lt + theorem le_imp_le_iff_lt_imp_lt + theorem le_of_not_lt + theorem not_le + theorem not_le_of_lt + theorem not_lt + theorem not_lt_iff_eq_or_lt + theorem not_lt_of_le + theorem not_lt_of_lt Added algebra/ordered_group.lean + theorem add_eq_zero_iff_eq_zero_of_nonneg + theorem add_le_add_iff_left + theorem add_le_add_iff_right + theorem add_lt_add_iff_left + theorem add_lt_add_iff_right + theorem le_add_iff_nonneg_left + theorem le_add_iff_nonneg_right + theorem le_neg + theorem le_neg_add_iff_add_le + theorem le_sub_left_iff_add_le + theorem le_sub_right_iff_add_le + theorem lt_add_iff_pos_left + theorem lt_add_iff_pos_right + theorem lt_neg + theorem lt_neg_add_iff_add_lt + theorem lt_sub_left_iff_add_lt + theorem lt_sub_right_iff_add_lt + theorem neg_add_le_iff_le_add + theorem neg_add_le_iff_le_add_right + theorem neg_add_lt_iff_lt_add + theorem neg_add_lt_iff_lt_add_right + theorem neg_le + theorem neg_le_neg_iff + theorem neg_le_sub_iff_le_add + theorem neg_le_sub_iff_le_add_left + theorem neg_lt + theorem neg_lt_neg_iff + theorem neg_lt_sub_iff_lt_add + theorem neg_lt_sub_iff_lt_add_left + theorem neg_lt_zero + theorem neg_nonneg + theorem neg_nonpos + theorem neg_pos + theorem nonneg_comm_group.nonneg_def + theorem nonneg_comm_group.nonneg_total_iff + theorem nonneg_comm_group.not_zero_pos + theorem nonneg_comm_group.pos_def + def nonneg_comm_group.to_decidable_linear_ordered_comm_group + theorem nonneg_comm_group.zero_lt_iff_nonneg_nonneg + theorem sub_le + theorem sub_le_self_iff + theorem sub_le_sub_iff_left + theorem sub_le_sub_iff_right + theorem sub_left_le_iff_le_add + theorem sub_left_lt_iff_lt_add + theorem sub_lt + theorem sub_lt_self_iff + theorem sub_lt_sub_iff_left + theorem sub_lt_sub_iff_right + theorem sub_lt_zero + theorem sub_nonneg + theorem sub_nonpos + theorem sub_pos + theorem sub_right_le_iff_le_add + theorem sub_right_lt_iff_lt_add Added algebra/ordered_ring.lean + theorem le_mul_iff_one_le_left + theorem le_mul_iff_one_le_right + theorem le_mul_of_ge_one_left' + theorem le_mul_of_ge_one_right' + theorem linear_ordered_ring.eq_zero_or_eq_zero_of_mul_eq_zero + theorem lt_mul_iff_one_lt_left + theorem lt_mul_iff_one_lt_right + theorem lt_mul_of_gt_one_right' + theorem mul_le_mul_left + theorem mul_le_mul_left_of_neg + theorem mul_le_mul_right + theorem mul_le_mul_right_of_neg + theorem mul_lt_mul_left + theorem mul_lt_mul_left_of_neg + theorem mul_lt_mul_right + theorem mul_lt_mul_right_of_neg + def nonneg_ring.nonneg_ring.to_linear_nonneg_ring Modified algebra/ring.lean + theorem domain.mul_left_inj + theorem domain.mul_right_inj + theorem dvd_neg +/- theorem eq_of_mul_eq_mul_left_of_ne_zero +/- theorem eq_of_mul_eq_mul_right_of_ne_zero + theorem eq_zero_of_mul_eq_self_left' + theorem eq_zero_of_mul_eq_self_right' + theorem mul_eq_zero + theorem mul_ne_zero' + theorem mul_ne_zero_comm' + theorem mul_two +/- theorem ne_zero_and_ne_zero_of_mul_ne_zero + theorem neg_dvd Modified topology/ennreal.lean Modified topology/metric_space.lean Modified topology/real.lean 2017-09-16 02:51:50-04:00 a967d8d feat(tactic/interactive): allow exprs in simpf, interactive try_for ESTIMATED CHANGES Modified tactic/interactive.lean 2017-09-13 17:34:12-04:00 f705963 feat(topology/measure): introduce measures ESTIMATED CHANGES Modified data/set/lattice.lean +/- theorem set.Union_subset_Union2 +/- theorem set.inter_distrib_Union_left + theorem set.inter_distrib_Union_right Modified topology/ennreal.lean - theorem ennreal.add_le_add - theorem ennreal.lt_of_add_lt_add_left + theorem lt_supr_iff Modified topology/infinite_sum.lean + theorem has_sum_sigma + theorem is_sum_iff_is_sum_of_iso + theorem is_sum_le + theorem tsum_eq_sum + theorem tsum_eq_tsum_of_is_sum_iff_is_sum + theorem tsum_eq_tsum_of_iso + theorem tsum_eq_tsum_of_ne_zero_bij + theorem tsum_le_tsum + theorem tsum_sigma Modified topology/measurable_space.lean + theorem is_measurable_disjointed + def pairwise +/- theorem set.disjoint_disjointed + theorem set.disjointed_induct Added topology/measure.lean + def measure_theory.count + theorem measure_theory.measure_Union_le_nat + theorem measure_theory.measure_Union_nat + theorem measure_theory.measure_bUnion + theorem measure_theory.measure_empty + theorem measure_theory.measure_eq_measure_of + theorem measure_theory.measure_mono + theorem measure_theory.measure_sUnion + def measure_theory.measure_space.measure + structure measure_theory.measure_space + theorem measure_theory.measure_space_eq + theorem measure_theory.measure_space_eq_of + theorem measure_theory.measure_union + theorem supr_bool_eq Modified topology/topological_structures.lean +/- theorem binfi_inf + theorem inf_principal_eq_bot + theorem infi_neg + theorem infi_pos +/- theorem le_of_tendsto - theorem mem_nhds_lattice_unbounded + theorem mem_nhds_orderable_dest + theorem mem_nhds_unbounded + theorem supr_neg + theorem supr_pos 2017-09-13 14:20:42-04:00 0b16336 feat(topology/infinite_sum): strengten bijection proof ESTIMATED CHANGES Modified topology/infinite_sum.lean + theorem tsum_eq_tsum_of_ne_zero +/- theorem tsum_zero 2017-09-13 14:19:50-04:00 e9b077c chore(data/equiv): use has_coe_to_fun ESTIMATED CHANGES Modified data/equiv.lean +/- theorem equiv.apply_eq_iff_eq +/- theorem equiv.apply_eq_iff_eq_inverse_apply + theorem equiv.coe_fn_mk + theorem equiv.coe_fn_symm_mk +/- theorem equiv.comp_apply +/- theorem equiv.eq_of_to_fun_eq - def equiv.fn +/- theorem equiv.id_apply - def equiv.inv +/- theorem equiv.inverse_apply_apply +/- def equiv.subtype_equiv_of_subtype +/- theorem equiv.swap_apply_def +/- theorem equiv.swap_apply_left +/- theorem equiv.swap_apply_of_ne_of_ne +/- theorem equiv.swap_apply_right 2017-09-11 21:55:00-04:00 bf58bf4 feat(topology/measurable_space): induction rule for sigma-algebras with intersection-stable generators; uses Dynkin systems ESTIMATED CHANGES Modified topology/measurable_space.lean + theorem is_measurable_univ + theorem measurable_generate_from + theorem measurable_space.dynkin_system.dynkin_system_eq + def measurable_space.dynkin_system.generate + theorem measurable_space.dynkin_system.generate_from_eq + inductive measurable_space.dynkin_system.generate_has + theorem measurable_space.dynkin_system.generate_inter + theorem measurable_space.dynkin_system.generate_le + theorem measurable_space.dynkin_system.has_sdiff + theorem measurable_space.dynkin_system.has_union + theorem measurable_space.dynkin_system.has_univ + def measurable_space.dynkin_system.of_measurable_space + theorem measurable_space.dynkin_system.of_measurable_space_le_of_measurable_space_iff + theorem measurable_space.dynkin_system.of_measurable_space_to_measurable_space + def measurable_space.dynkin_system.restrict_on + def measurable_space.dynkin_system.to_measurable_space + structure measurable_space.dynkin_system + def measurable_space.generate_from + theorem measurable_space.generate_from_le + inductive measurable_space.generate_measurable + theorem measurable_space.induction_on_inter + theorem measurable_space.is_measurable_generate_from + theorem nat.lt_succ_iff + theorem set.disjoint_disjointed + def set.disjointed + theorem set.disjointed_Union 2017-09-11 14:57:55-04:00 74c3e6e feat(topology/measurable_space): measurable sets invariant under (countable) set operations ESTIMATED CHANGES Modified topology/measurable_space.lean + theorem is_measurable_Inter +/- theorem is_measurable_Union + theorem is_measurable_Union_nat + theorem is_measurable_bInter + theorem is_measurable_bUnion + theorem is_measurable_inter + theorem is_measurable_sInter + theorem is_measurable_sUnion + theorem is_measurable_sdiff + theorem is_measurable_sub + theorem is_measurable_union 2017-09-11 13:56:06-04:00 b890425 feat(topology/ennreal): ennreal forms a topological monoid ESTIMATED CHANGES Modified order/filter.lean + theorem filter.tendsto_inf_left Modified topology/ennreal.lean + theorem ennreal.nhds_of_real_eq_map_of_real_nhds_nonneg Modified topology/real.lean - theorem ge_mem_nhds - theorem gt_mem_nhds - theorem le_mem_nhds - theorem lt_mem_nhds Modified topology/topological_structures.lean + theorem ge_mem_nhds + theorem gt_mem_nhds + theorem le_mem_nhds + theorem lt_mem_nhds 2017-09-11 11:58:16-04:00 8ed673d feat(data/set/countable): finite sets are countable ESTIMATED CHANGES Modified data/encodable.lean Modified data/set/countable.lean + theorem set.countable_Union + theorem set.countable_finite + theorem set.countable_insert + theorem set.countable_union 2017-09-11 11:32:25-04:00 28b46a2 fix(data/set/countable): finish proof countable_sUnion ESTIMATED CHANGES Modified data/set/countable.lean - theorem option.bind_some +/- theorem set.countable_sUnion - def set.enumerate - theorem set.enumerate_eq_none - theorem set.enumerate_eq_none_of_sel - theorem set.enumerate_inj - theorem set.enumerate_mem Added data/set/enumerate.lean + theorem option.bind_some + def set.enumerate + theorem set.enumerate_eq_none + theorem set.enumerate_eq_none_of_sel + theorem set.enumerate_inj + theorem set.enumerate_mem 2017-09-10 23:28:41-04:00 8ee2629 feat(data/set): add countable sets ESTIMATED CHANGES Modified data/encodable.lean Added data/set/countable.lean + theorem option.bind_some + theorem set.countable.to_encodable + def set.countable + theorem set.countable_empty + theorem set.countable_encodable' + theorem set.countable_encodable + theorem set.countable_iff_exists_surjective + theorem set.countable_image + theorem set.countable_sUnion + theorem set.countable_singleton + theorem set.countable_subset + def set.encodable_of_inj + def set.enumerate + theorem set.enumerate_eq_none + theorem set.enumerate_eq_none_of_sel + theorem set.enumerate_inj + theorem set.enumerate_mem Modified data/set/finite.lean + def set.infinite Modified logic/function_inverse.lean + theorem set.inv_fun_on_eq' Modified order/filter.lean 2017-09-10 20:33:16-04:00 7e06124 feat(logic): add small theory on inverse functions ESTIMATED CHANGES Added logic/function_inverse.lean + theorem set.has_left_inverse + theorem set.has_right_inverse + theorem set.injective_surj_inv + def set.inv_fun + theorem set.inv_fun_eq + theorem set.inv_fun_eq_of_injective_of_right_inverse + def set.inv_fun_on + theorem set.inv_fun_on_eq + theorem set.inv_fun_on_mem + theorem set.inv_fun_on_neg + theorem set.inv_fun_on_pos + theorem set.left_inverse_inv_fun + theorem set.right_inverse_inv_fun + theorem set.right_inverse_surj_inv + def set.surj_inv + theorem set.surj_inv_eq 2017-09-09 12:48:22-04:00 a5f32d2 feat(data/encodable): port countable choice from Lean2 ESTIMATED CHANGES Modified data/encodable.lean + theorem encodable.axiom_of_choice + def encodable.choose + theorem encodable.choose_spec + def encodable.pn + theorem encodable.skolem + def quot.encodable_quotient + def quot.rep + theorem quot.rep_spec 2017-09-08 20:06:26-04:00 3399baa feat(data/encodable): ported data/encodable.lean from Lean2 ESTIMATED CHANGES Added data/encodable.lean + def encodable_of_equiv + def encodable_of_left_injection + theorem succ_ne_zero Modified data/list/sort.lean + theorem list.eq_of_sorted_of_perm - theorem list.sorted_insert_sort + theorem list.sorted_insertion_sort 2017-09-08 18:07:24-04:00 741065b chore(data/equiv): using nat pairing ESTIMATED CHANGES Modified data/equiv.lean + def equiv.nat_prod_nat_equiv_nat 2017-09-08 18:05:53-04:00 22c8fae feat(data/nat/pairing): ported data/nat/pairing.lean from Lean2 ESTIMATED CHANGES Added data/nat/pairing.lean + def nat.mkpair + theorem nat.mkpair_unpair + def nat.unpair + theorem nat.unpair_lt + theorem nat.unpair_lt_aux + theorem nat.unpair_mkpair 2017-09-08 17:19:17-04:00 7c67c29 feat(data/nat/sqrt): ported data/nat/sqrt.lean from Lean2 ESTIMATED CHANGES Added data/nat/sqrt.lean + theorem nat.eq_zero_of_sqrt_eq_zero + theorem nat.le_three_of_sqrt_eq_one + theorem nat.mul_square_cancel + theorem nat.sqrt_eq + theorem nat.sqrt_lower + theorem nat.sqrt_lt + theorem nat.sqrt_mono + theorem nat.sqrt_mul_eq + theorem nat.sqrt_pos_of_pos + theorem nat.sqrt_upper 2017-09-08 14:50:51-04:00 445a5a4 fix(topology/real): remove (unnecessary) admit ESTIMATED CHANGES Modified topology/real.lean 2017-09-08 14:49:07-04:00 8ef8f81 feat(data/equiv): port data/equiv.lean from Lean2 ESTIMATED CHANGES Added data/equiv.lean + theorem equiv.apply_eq_iff_eq + theorem equiv.apply_eq_iff_eq_inverse_apply + def equiv.arrow_arrow_equiv_prod_arrow + def equiv.arrow_congr + def equiv.arrow_prod_equiv_prod_arrow + def equiv.arrow_unit_equiv_unit + def equiv.bool_equiv_unit_sum_unit + def equiv.bool_prod_equiv_sum + theorem equiv.comp_apply + def equiv.decidable_eq_of_equiv + def equiv.empty_arrow_equiv_unit + theorem equiv.eq_iff_eq_of_injective + theorem equiv.eq_of_to_fun_eq + def equiv.false_arrow_equiv_unit + def equiv.false_equiv_empty + def equiv.fn + def equiv.id + theorem equiv.id_apply + def equiv.inhabited_of_equiv + def equiv.inv + theorem equiv.inverse_apply_apply + def equiv.nat_equiv_nat_sum_unit + def equiv.nat_sum_bool_equiv_nat + def equiv.nat_sum_unit_equiv_nat + def equiv.perm + def equiv.prod_assoc + def equiv.prod_comm + def equiv.prod_congr + def equiv.prod_empty_left + def equiv.prod_empty_right + def equiv.prod_sum_distrib + def equiv.prod_unit_left + def equiv.prod_unit_right + def equiv.subtype_equiv_of_subtype + def equiv.sum_arrow_equiv_prod_arrow + def equiv.sum_assoc + def equiv.sum_comm + def equiv.sum_congr + def equiv.sum_empty_left + def equiv.sum_empty_right + def equiv.sum_prod_distrib + def equiv.swap + theorem equiv.swap_apply_def + theorem equiv.swap_apply_left + theorem equiv.swap_apply_of_ne_of_ne + theorem equiv.swap_apply_right + theorem equiv.swap_comm + theorem equiv.swap_comp_apply + def equiv.swap_core + theorem equiv.swap_core_comm + theorem equiv.swap_core_self + theorem equiv.swap_core_swap_core + theorem equiv.swap_self + theorem equiv.swap_swap + def equiv.unit_arrow_equiv + structure equiv + theorem function.left_inverse.f_g_eq_id + theorem function.right_inverse.g_f_eq_id + def subtype.map + theorem subtype.map_comp + theorem subtype.map_id 2017-09-07 20:38:33-04:00 ddeefb8 feat(topology/topological_structures,ennreal): show continuity of of_ennreal and of_real ESTIMATED CHANGES Modified data/set/basic.lean + theorem set.image_inter_on +/- theorem set.mem_range Modified order/filter.lean + theorem filter.eq_of_map_eq_map_inj' + theorem filter.le_of_map_le_map_inj' +/- theorem filter.map_binfi_eq + theorem filter.map_inf' + theorem filter.tendsto_principal Modified order/lattice.lean + theorem lattice.not_lt_bot + theorem lattice.not_top_lt Modified topology/ennreal.lean + theorem ennreal.nhds_of_real_eq_map_of_real_nhds + theorem ennreal.tendsto_of_ennreal + theorem ennreal.tendsto_of_real Modified topology/topological_space.lean + theorem is_open_neg Modified topology/topological_structures.lean + theorem binfi_inf + theorem is_closed_ge' + theorem is_closed_le' +/- theorem is_open_gt' +/- theorem is_open_lt' + theorem lt_min_iff + theorem max_lt_iff + theorem mem_nhds_lattice_unbounded + theorem nhds_bot_orderable + theorem nhds_eq_orderable + theorem nhds_orderable_unbounded + theorem nhds_top_orderable + theorem tendsto_orderable + theorem tendsto_orderable_unbounded 2017-09-06 19:31:17-04:00 32f3f45 feat(topology): restructure order topologies; (start) proof that ennreal is a topological monoid ESTIMATED CHANGES Modified algebra/group.lean + theorem abs_lt_iff Modified topology/ennreal.lean + theorem ennreal.continuous_of_real + theorem ennreal.inv_infty + theorem ennreal.inv_inv + theorem ennreal.inv_of_real + theorem ennreal.inv_zero + theorem ennreal.not_lt_zero + theorem ennreal.of_real_lt_of_real_iff_cases + theorem ennreal.of_real_of_nonpos + theorem ennreal.of_real_of_not_nonneg + theorem ennreal.one_le_of_real_iff + theorem ennreal.zero_lt_of_real_iff + theorem inv_inv' + theorem inv_pos Modified topology/real.lean - theorem is_closed_imp + theorem lt_sub_iff + theorem nhds_eq_real + theorem orderable_topology_of_nhds_abs + theorem sub_lt_iff Modified topology/topological_space.lean +/- theorem closure_diff + theorem is_closed_imp + theorem is_open_and + theorem is_open_const + theorem mem_of_closed_of_tendsto Modified topology/topological_structures.lean + theorem is_open_gt' + theorem is_open_iff_generate_intervals + theorem is_open_lt' - theorem is_open_lt_fst_snd + theorem le_of_tendsto Modified topology/uniform_space.lean + theorem nhds_eq_vmap_uniformity 2017-09-06 16:19:02-04:00 17e48db fix(data/list/comb): implement fix from rlewis1988 ESTIMATED CHANGES Modified data/list/comb.lean 2017-09-05 22:38:07-04:00 f80ae1f feat(topology/infinite_sum): add tsum (with ∑ notation) and has_sum; add lemmas for different algebraic structures ESTIMATED CHANGES Modified topology/continuity.lean +/- theorem continuous_const Modified topology/infinite_sum.lean - theorem exists_is_sum_of_is_sum + def has_sum + theorem has_sum_add + theorem has_sum_iff_has_sum_ne_zero + theorem has_sum_mul_left + theorem has_sum_mul_right + theorem has_sum_neg + theorem has_sum_of_has_sum_of_sub + theorem has_sum_spec + theorem has_sum_sub + theorem has_sum_sum + theorem has_sum_sum_of_ne_finset_zero + theorem has_sum_zero +/- theorem is_sum_hom + theorem is_sum_mul_left + theorem is_sum_mul_right + theorem is_sum_neg + theorem is_sum_sub + theorem is_sum_sum_of_ne_finset_zero - theorem is_sum_sum_of_ne_zero + theorem is_sum_tsum + theorem is_sum_unique + def tsum + theorem tsum_add + theorem tsum_eq_is_sum + theorem tsum_mul_left + theorem tsum_mul_right + theorem tsum_neg + theorem tsum_sub + theorem tsum_sum + theorem tsum_zero Modified topology/real.lean Modified topology/topological_structures.lean +/- theorem continuous_mul +/- theorem tendsto_mul 2017-09-05 19:48:25-04:00 1e4f6cc chore(data/seq,data/hash_map): adapt to changes in injection tactic (https://github.com/leanprover/lean/commit/8a10d4c72c948cd1b7af02f316e553e202b1368f) ESTIMATED CHANGES Modified data/hash_map.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean Modified data/seq/wseq.lean 2017-09-05 19:32:31-04:00 c6747ee chore(topology/uniform_space): use Type* and Sort* ESTIMATED CHANGES Modified topology/uniform_space.lean +/- def id_rel +/- theorem supr_uniformity +/- theorem to_topological_space_supr +/- theorem uniform_embedding_prod +/- theorem uniform_embedding_subtype_emb +/- theorem uniform_extend_subtype 2017-09-05 19:32:31-04:00 7c38416 feat(data/sigma,data/finset,algebra): add support for the sigma type to finset and big operators ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_sigma Modified data/finset/fold.lean + theorem finset.mem_sigma_iff + theorem finset.sigma_mono + theorem heq_iff_eq Added data/sigma/basic.lean + def sigma.map + theorem sigma.mk_eq_mk_iff Added data/sigma/default.lean Modified topology/infinite_sum.lean +/- theorem is_sum_sigma 2017-09-05 19:24:56-04:00 7d8e3f3 feat(algebra): add ordered (non-cancellative) additive monoid; use for sum-big operator ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.sum_eq_zero_iff_of_nonneg + theorem finset.sum_le_sum' + theorem finset.sum_le_sum_of_ne_zero + theorem finset.sum_le_sum_of_subset + theorem finset.sum_le_sum_of_subset_of_nonneg + theorem finset.sum_le_zero' + theorem finset.zero_le_sum' Added algebra/ordered_monoid.lean + theorem add_eq_zero_iff + theorem add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg' + theorem add_le_add' + theorem add_le_add_left' + theorem add_le_add_right' + theorem add_le_of_le_of_nonpos' + theorem add_le_of_nonpos_of_le' + theorem add_lt_of_lt_of_neg' + theorem add_lt_of_lt_of_nonpos' + theorem add_lt_of_neg_of_lt' + theorem add_lt_of_nonpos_of_lt' + theorem add_neg' + theorem add_neg_of_neg_of_nonpos' + theorem add_neg_of_nonpos_of_neg' + theorem add_nonneg' + theorem add_nonpos' + theorem add_pos' + theorem add_pos_of_nonneg_of_pos' + theorem add_pos_of_pos_of_nonneg' + theorem le_add_of_le_of_nonneg' + theorem le_add_of_nonneg_left' + theorem le_add_of_nonneg_of_le' + theorem le_add_of_nonneg_right' + theorem le_iff_exists_add + theorem lt_add_of_lt_of_nonneg' + theorem lt_add_of_lt_of_pos' + theorem lt_add_of_nonneg_of_lt' + theorem lt_add_of_pos_of_lt' + theorem lt_of_add_lt_add_left' + theorem lt_of_add_lt_add_right' + theorem zero_le 2017-09-05 15:09:41-04:00 fde992f chore(*): use `induction generalizing` ESTIMATED CHANGES Modified data/int/basic.lean +/- theorem int.of_nat_add_neg_succ_of_nat_of_ge +/- theorem int.of_nat_add_neg_succ_of_nat_of_lt Modified data/list/basic.lean Modified data/list/comb.lean Modified data/num/lemmas.lean Modified data/seq/computation.lean Modified data/seq/parallel.lean Modified data/seq/seq.lean 2017-09-05 15:05:29-04:00 a8a1a91 chore(topology/uniform_space): simplify proof (suggested by @gebner) ESTIMATED CHANGES Modified topology/uniform_space.lean 2017-09-05 14:15:01-04:00 ba95269 feat(topology): introduce infinite sums on topological monoids ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_bind + theorem finset.prod_comm + theorem finset.prod_product + theorem finset.prod_subset Modified data/finset/basic.lean + theorem finset.filter_false + theorem finset.filter_filter + theorem finset.filter_inter_filter_neg_eq + theorem finset.filter_subset + theorem finset.filter_union + theorem finset.filter_union_filter_neg_eq + theorem finset.image_empty + theorem finset.image_eq_empty_iff + theorem finset.image_filter + theorem finset.image_insert + theorem finset.image_inter + theorem finset.image_singleton + theorem finset.image_subset_image + theorem finset.image_union + theorem finset.inter_subset_left + theorem finset.inter_subset_right + theorem finset.mem_filter_iff + theorem finset.mem_image_iff + theorem finset.mem_sdiff_iff + theorem finset.mem_to_finset_iff + theorem finset.sdiff_inter_self + theorem finset.sdiff_union_of_subset + theorem finset.subset_inter + theorem finset.subset_union_left + theorem finset.subset_union_right + theorem finset.union_idempotent + theorem finset.union_subset - def finset +/- def nodup_list + def {u} Modified data/finset/fold.lean + theorem finset.bind_empty + theorem finset.bind_image + theorem finset.bind_insert + theorem finset.fold_insert_idem + theorem finset.image_bind + theorem finset.mem_bind_iff + theorem finset.mem_product_iff Modified data/list/basic.lean + theorem list.mem_filter_iff Modified logic/basic.lean Modified order/complete_lattice.lean + theorem lattice.infi_top + theorem lattice.supr_bot Added topology/infinite_sum.lean + theorem at_top_ne_bot + theorem cauchy_iff + theorem exists_is_sum_of_is_sum + theorem filter.mem_infi_sets_finset + theorem forall_and_distrib' + def is_sum + theorem is_sum_add + theorem is_sum_hom + theorem is_sum_iff_is_sum + theorem is_sum_iff_is_sum_of_ne_zero + theorem is_sum_of_is_sum + theorem is_sum_of_is_sum_ne_zero + theorem is_sum_of_iso + theorem is_sum_sigma + theorem is_sum_sum + theorem is_sum_sum_of_ne_zero + theorem is_sum_zero + theorem map_at_top_eq + theorem mem_at_top_iff + theorem mem_closure_of_tendsto + theorem tendsto_finset_image_at_top_at_top Modified topology/topological_structures.lean + theorem tendsto_add' + theorem tendsto_sum + theorem uniform_continuous_add' + theorem uniform_continuous_add + theorem uniform_continuous_neg' + theorem uniform_continuous_neg + theorem uniform_continuous_sub' + theorem uniform_continuous_sub Modified topology/uniform_space.lean + theorem uniform_continuous_id 2017-09-05 12:47:49-05:00 6c321fe Merge branch 'master' of https://github.com/leanprover/mathlib ESTIMATED CHANGES 2017-09-05 10:33:20-04:00 c7a3c75 fix(data/seq): option_bind, option_map -> option.bind, option.map (changed in Lean) ESTIMATED CHANGES Modified data/seq/parallel.lean Modified data/seq/seq.lean +/- theorem seq.map_nth Modified data/seq/wseq.lean +/- def wseq.map 2017-09-04 12:33:01-04:00 80e1474 fix(logic/basic): fix simp performance issue Having `forall_true_iff'` as a simp lemma caused way too much backtracking, so only the 2 and 3 implication versions are added as simp lemmas, and the user can add `forall_true_iff'` to their simp set if they need to reduce more. ESTIMATED CHANGES Modified logic/basic.lean + theorem forall_2_true_iff + theorem forall_3_true_iff +/- theorem forall_true_iff' + theorem imp.swap Modified order/filter.lean 2017-09-03 23:13:00-04:00 086ac36 feat(tactic/interactive): simpf tactic, more logic refactor ESTIMATED CHANGES Modified logic/basic.lean - theorem imp_of_not_or + theorem not_and' + theorem not_and - theorem not_and_iff_imp' - theorem not_and_iff_imp + theorem not_and_not_right Modified order/zorn.lean Modified tactic/interactive.lean Modified topology/ennreal.lean Modified topology/topological_space.lean Modified topology/uniform_space.lean 2017-09-03 20:55:23-04:00 8faac5f refactor(logic/basic): refactor logic theorems ESTIMATED CHANGES Modified algebra/big_operators.lean - theorem exists_false Modified data/finset/basic.lean - theorem finset.eq_of_mem_singleton - theorem finset.eq_of_singleton_eq +/- theorem finset.mem_singleton - theorem finset.mem_singleton_iff - theorem finset.mem_singleton_of_eq + theorem finset.mem_singleton_self + theorem finset.singleton_inj + theorem finset.subset_iff - theorem finset.subset_of_forall - theorem or_self_or - theorem perm_insert_cons_of_not_mem Modified data/finset/fold.lean +/- theorem finset.fold_congr +/- theorem list.map_congr Modified data/list/basic.lean Modified data/list/comb.lean Modified data/list/perm.lean Modified data/list/set.lean Modified data/seq/seq.lean Modified data/set/basic.lean + theorem set.ball_empty_iff + theorem set.ball_image_iff + theorem set.ball_image_of_ball + theorem set.ball_insert_iff - theorem set.bounded_forall_empty_iff - theorem set.bounded_forall_image_iff - theorem set.bounded_forall_image_of_bounded_forall - theorem set.bounded_forall_insert_iff + theorem set.mem_union - theorem set.mem_union_iff + theorem set.not_not_mem - theorem set.not_not_mem_iff Modified data/set/lattice.lean Modified logic/basic.lean + theorem and.imp_left + theorem and.imp_right - theorem and_distrib - theorem and_distrib_right +/- theorem and_iff_not_or_not + theorem and_imp - theorem and_imp_iff - theorem and_implies_iff - theorem and_implies_left - theorem and_implies_right - theorem and_not_of_not_implies - theorem and_of_and_of_imp_left - theorem and_of_and_of_imp_right - theorem and_of_and_of_implies_of_implies + theorem and_or_distrib_left + theorem and_or_distrib_right + theorem ball.imp_left + theorem ball.imp_right + theorem ball_and_distrib + theorem ball_congr + theorem ball_of_forall + theorem ball_true_iff + theorem bex.elim + theorem bex.imp_left + theorem bex.imp_right + theorem bex.intro + theorem bex_congr + theorem bex_def + theorem bex_imp_distrib + theorem bex_of_exists + theorem bex_or_distrib - theorem bexists.elim - theorem bexists.intro - theorem bexists_congr - theorem bexists_def - theorem bexists_implies_distrib - theorem bexists_implies_of_bforall_implies - theorem bexists_not_of_not_bforall - theorem bexists_of_bexists - theorem bexists_of_exists - theorem bexists_or_distrib - theorem bforall_and_distrib - theorem bforall_congr - theorem bforall_implies_of_bexists_implies - theorem bforall_not_of_not_bexists - theorem bforall_of_bforall - theorem bforall_of_forall - theorem bforall_true_iff - theorem classical.bexists_not_of_not_bforall - theorem classical.exists_not_of_not_forall + theorem classical.not_ball - theorem classical.not_bforall_iff_bexists_not + theorem classical.not_forall - theorem classical.not_forall_iff + def decidable_of_iff' + def decidable_of_iff +/- theorem eq_iff_le_and_le + theorem exists_const + theorem exists_eq' + theorem exists_eq + theorem exists_eq_right' + theorem exists_eq_right + theorem exists_false + theorem exists_imp_distrib - theorem exists_implies_distrib - theorem exists_implies_of_forall_implies - theorem exists_not_of_not_forall + theorem exists_of_bex - theorem exists_of_bexists +/- theorem exists_of_exists +/- theorem exists_or_distrib - theorem exists_p_iff_p + theorem exists_prop - theorem exists_prop_iff + theorem exists_swap +/- theorem forall_and_distrib + theorem forall_const + theorem forall_eq' +/- theorem forall_eq - theorem forall_implies_of_exists_implies + theorem forall_of_ball - theorem forall_of_bforall +/- theorem forall_of_forall + theorem forall_or_of_or_forall - theorem forall_p_iff_p + theorem forall_swap + theorem forall_true_iff' +/- theorem forall_true_iff + theorem iff_def' +/- theorem iff_def + theorem iff_false_left + theorem iff_false_right + theorem iff_not_comm + theorem iff_of_false + theorem iff_of_true + theorem iff_true_left + theorem iff_true_right + theorem imp_and_distrib + theorem imp_false + theorem imp_iff_not_or + theorem imp_iff_right + theorem imp_intro + theorem imp_not_comm + theorem imp_of_not_or + theorem imp_self + theorem imp_true_iff - theorem implies_and_iff - theorem implies_false_iff - theorem implies_iff - theorem implies_iff_not_or - theorem implies_intro - theorem implies_of_not_or - theorem implies_self + theorem not.elim + theorem not.imp_symm + theorem not_and_distrib' + theorem not_and_distrib - theorem not_and_iff + theorem not_and_iff_imp' + theorem not_and_iff_imp - theorem not_and_iff_imp_not - theorem not_and_not_of_not_or + theorem not_ball + theorem not_ball_of_bex_not + theorem not_bex - theorem not_bexists_iff_bforall_not - theorem not_bexists_of_bforall_not - theorem not_bforall_iff_bexists_not - theorem not_bforall_of_bexists_not + theorem not_exists - theorem not_exists_iff + theorem not_exists_not + theorem not_forall - theorem not_forall_iff + theorem not_forall_not +/- theorem not_forall_of_exists_not + theorem not_iff_comm + theorem not_iff_not + theorem not_imp + theorem not_imp_comm - theorem not_imp_iff_not_imp + theorem not_imp_not + theorem not_imp_of_and_not - theorem not_implies_iff - theorem not_implies_of_and_not + theorem not_not - theorem not_not_elim - theorem not_not_iff + theorem not_not_of_not_imp - theorem not_not_of_not_implies + theorem not_of_not_imp - theorem not_of_not_implies + theorem not_or_distrib - theorem not_or_iff - theorem not_or_not_of_not_and' - theorem not_or_not_of_not_and + theorem not_or_of_imp - theorem not_or_of_implies - theorem not_or_of_not_and_not + theorem of_not_imp - theorem of_not_implies + theorem of_not_not + theorem or_and_distrib_left + theorem or_and_distrib_right - theorem or_distrib - theorem or_distrib_right +/- theorem or_iff_not_and_not + theorem or_iff_not_imp_left + theorem or_iff_not_imp_right - theorem or_iff_or + theorem or_imp_distrib - theorem or_imp_iff_and_imp - theorem or_implies_distrib - theorem or_of_not_implies' - theorem or_of_not_implies + theorem or_of_or_of_imp_left + theorem or_of_or_of_imp_of_imp + theorem or_of_or_of_imp_right - theorem or_of_or_of_implies_left - theorem or_of_or_of_implies_of_implies - theorem or_of_or_of_implies_right - theorem or_resolve_left - theorem or_resolve_right +/- theorem prod.exists +/- theorem prod.forall +/- theorem prod.mk.inj_iff - theorem {u - theorem {u} Modified order/bounds.lean Modified order/filter.lean Modified order/zorn.lean Modified tactic/finish.lean +/- theorem auto.classical.implies_iff_not_or +/- theorem auto.not_and_eq +/- theorem auto.not_exists_eq +/- theorem auto.not_forall_eq +/- theorem auto.not_implies_eq +/- theorem auto.not_not_eq +/- theorem auto.not_or_eq Modified topology/continuity.lean Modified topology/ennreal.lean Modified topology/measurable_space.lean Modified topology/metric_space.lean +/- theorem continuous_dist' +/- theorem continuous_dist +/- theorem dist_comm +/- theorem dist_eq_zero_iff +/- theorem dist_nonneg +/- theorem dist_pos_of_ne +/- theorem dist_self +/- theorem dist_triangle +/- theorem eq_of_dist_eq_zero +/- theorem eq_of_forall_dist_le +/- theorem exists_subtype +/- theorem ne_of_dist_pos +/- theorem open_ball_subset_open_ball_of_le +/- theorem tendsto_dist +/- theorem uniform_continuous_dist' +/- theorem uniform_continuous_dist +/- theorem uniformity_dist' +/- theorem uniformity_dist +/- theorem zero_eq_dist_iff Modified topology/real.lean Modified topology/topological_space.lean Modified topology/topological_structures.lean Modified topology/uniform_space.lean 2017-09-02 19:56:17-04:00 74cfa93 fix(data/list/perm): fix broken match This reverts commit 3d817686fdb02eba0f51ab303a4d5b50ac2a9f5e. ESTIMATED CHANGES Modified data/list/perm.lean 2017-08-30 20:12:20-04:00 dbc8f86 feat(topology/measurable_space): measurability is closed under id and comp ESTIMATED CHANGES Modified topology/measurable_space.lean +/- def measurable + theorem measurable_comp + theorem measurable_id 2017-08-30 18:33:58-04:00 4ef0ea8 feat(topology/ennreal): add subtraction ESTIMATED CHANGES Modified order/complete_lattice.lean Modified topology/ennreal.lean + theorem Sup_eq_top + theorem ennreal.Inf_add + theorem ennreal.Sup_add + theorem ennreal.add_sub_cancel_of_le + theorem ennreal.le_add_left + theorem ennreal.le_add_right + theorem ennreal.le_sub_iff_add_le + theorem ennreal.lt_iff_exists_of_real + theorem ennreal.lt_of_add_lt_add_left + theorem ennreal.not_infty_lt + theorem ennreal.of_real_lt_infty +/- theorem ennreal.of_real_lt_of_real_iff + theorem ennreal.sub_add_cancel_of_le + theorem ennreal.sub_add_self_eq_max + theorem ennreal.sub_eq_zero_of_le + theorem ennreal.sub_infty + theorem ennreal.sub_le_sub + theorem ennreal.sub_zero + theorem ennreal.zero_sub + theorem lt_Sup_iff 2017-08-30 11:17:07-05:00 f93f7e7 Merge branch 'master' of https://github.com/leanprover/mathlib ESTIMATED CHANGES 2017-08-29 23:40:45-04:00 cb7fb9b feat(topology): basic setup for measurable spaces ESTIMATED CHANGES Added topology/measurable_space.lean + def is_measurable + theorem is_measurable_Union + theorem is_measurable_compl + theorem is_measurable_empty + def measurable + theorem measurable_space.comap_bot + theorem measurable_space.comap_comp + theorem measurable_space.comap_id + theorem measurable_space.comap_le_iff_le_map + theorem measurable_space.comap_map_le + theorem measurable_space.comap_mono + theorem measurable_space.comap_sup + theorem measurable_space.comap_supr + theorem measurable_space.gc_comap_map + theorem measurable_space.le_map_comap + theorem measurable_space.map_comp + theorem measurable_space.map_id + theorem measurable_space.map_inf + theorem measurable_space.map_infi + theorem measurable_space.map_mono + theorem measurable_space.map_top + theorem measurable_space.monotone_comap + theorem measurable_space.monotone_map + structure measurable_space + theorem measurable_space_eq 2017-08-29 19:20:11-04:00 51042cd feat(topology/ennreal): add extended non-negative real numbers ESTIMATED CHANGES Modified algebra/big_operators.lean Added topology/ennreal.lean + theorem ennreal.add_infty + theorem ennreal.add_le_add + theorem ennreal.forall_ennreal + theorem ennreal.infty_add + theorem ennreal.infty_le_iff + theorem ennreal.infty_mem_upper_bounds + theorem ennreal.infty_mul + theorem ennreal.infty_mul_of_real + theorem ennreal.infty_ne_of_real + theorem ennreal.infty_ne_zero + theorem ennreal.is_lub_of_real + theorem ennreal.le_infty + theorem ennreal.le_of_real_iff + theorem ennreal.le_zero_iff_eq + theorem ennreal.mul_infty + theorem ennreal.mul_le_mul + def ennreal.of_ennreal + theorem ennreal.of_ennreal_of_real + theorem ennreal.of_nonneg_real_eq_of_real + def ennreal.of_real + theorem ennreal.of_real_add_of_real + theorem ennreal.of_real_eq_of_real_of + theorem ennreal.of_real_eq_one_iff + theorem ennreal.of_real_eq_zero_iff + theorem ennreal.of_real_le_of_real_iff + theorem ennreal.of_real_lt_of_real_iff + theorem ennreal.of_real_mem_upper_bounds + theorem ennreal.of_real_mul_infty + theorem ennreal.of_real_mul_of_real + theorem ennreal.of_real_ne_infty + theorem ennreal.of_real_ne_of_real_of + theorem ennreal.of_real_of_ennreal + theorem ennreal.of_real_one + theorem ennreal.of_real_zero + theorem ennreal.one_eq_of_real_iff + theorem ennreal.zero_eq_of_real_iff + theorem ennreal.zero_le_of_ennreal + theorem ennreal.zero_ne_infty + inductive ennreal + theorem zero_le_mul Modified topology/real.lean +/- theorem exists_supremum_real 2017-08-28 21:34:47-04:00 76ae12c fix(algbera/big_operators): remove simp attr for sum/mul-distributivity rules ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.mul_sum +/- theorem finset.sum_mul 2017-08-28 21:30:00-04:00 edfbf3c feat(algebra/big_operators): add semiring and integral_domain rules ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem exists_false + theorem finset.mul_sum + theorem finset.prod_const_one + theorem finset.prod_eq_zero + theorem finset.prod_eq_zero_iff +/- theorem finset.prod_hom +/- theorem finset.prod_inv_distrib + theorem finset.sum_le_sum + theorem finset.sum_le_zero + theorem finset.sum_mul +/- theorem finset.sum_sub_distrib + theorem finset.zero_le_sum 2017-08-28 19:34:30-04:00 50ed0e4 feat(algebra/big_operators): add congruence rule and morphism laws ESTIMATED CHANGES Modified algebra/big_operators.lean + theorem finset.prod_congr +/- theorem finset.prod_empty + theorem finset.prod_hom +/- theorem finset.prod_image +/- theorem finset.prod_insert + theorem finset.prod_inv_distrib +/- theorem finset.prod_mul_distrib +/- theorem finset.prod_singleton +/- theorem finset.prod_to_finset_of_nodup + theorem finset.sum_sub_distrib Modified data/finset/fold.lean + theorem finset.fold_congr +/- theorem finset.fold_hom +/- theorem finset.fold_image +/- theorem finset.fold_insert +/- theorem finset.fold_op_distrib +/- theorem finset.fold_singleton + theorem list.map_congr 2017-08-28 18:34:33-04:00 4ed43d9 feat(data/finset): add fold; add simp rules for insert, empty, singleton and mem ESTIMATED CHANGES Modified algebra/big_operators.lean +/- theorem finset.prod_insert - theorem finset.prod_to_finset + theorem finset.prod_to_finset_of_nodup + theorem finset.prod_union_inter - theorem finset.prod_union_inter_eq - theorem foldl_mul_assoc - theorem foldl_mul_eq_mul_foldr + theorem list.prod_append + theorem list.prod_cons + theorem list.prod_eq_of_perm + theorem list.prod_join + theorem list.prod_nil + theorem list.prod_replicate + theorem list.prod_reverse - theorem prod_append - theorem prod_cons - theorem prod_eq_of_perm - theorem prod_join - theorem prod_nil - theorem prod_replicate Modified data/finset/basic.lean +/- theorem finset.card_empty +/- theorem finset.card_erase_of_mem - theorem finset.card_erase_of_not_mem +/- theorem finset.card_insert_le - theorem finset.card_insert_of_mem +/- theorem finset.card_insert_of_not_mem +/- theorem finset.card_upto +/- theorem finset.empty_inter +/- theorem finset.empty_subset +/- theorem finset.empty_union +/- theorem finset.eq_empty_of_card_eq_zero +/- theorem finset.eq_empty_of_forall_not_mem +/- theorem finset.eq_empty_of_subset_empty +/- theorem finset.eq_of_mem_singleton +/- theorem finset.eq_of_singleton_eq - theorem finset.eq_of_subset_of_subset - theorem finset.eq_or_mem_of_mem_insert +/- theorem finset.erase_empty +/- theorem finset.erase_eq_of_not_mem +/- theorem finset.erase_insert +/- theorem finset.erase_insert_subset +/- theorem finset.erase_subset +/- theorem finset.erase_subset_erase +/- theorem finset.erase_subset_of_subset_insert +/- theorem finset.exists_mem_of_ne_empty +/- theorem finset.forall_of_forall_insert +/- theorem finset.insert.comm +/- theorem finset.insert_eq +/- theorem finset.insert_eq_of_mem +/- theorem finset.insert_erase +/- theorem finset.insert_erase_subset + theorem finset.insert_idem +/- theorem finset.insert_inter_of_mem +/- theorem finset.insert_inter_of_not_mem + theorem finset.insert_ne_empty + theorem finset.insert_singelton_self_eq +/- theorem finset.insert_subset_insert +/- theorem finset.insert_union +/- theorem finset.inter_assoc +/- theorem finset.inter_comm +/- theorem finset.inter_empty + theorem finset.inter_insert_of_mem + theorem finset.inter_insert_of_not_mem +/- theorem finset.inter_left_comm +/- theorem finset.inter_right_comm +/- theorem finset.inter_self + theorem finset.inter_singleton_of_mem + theorem finset.inter_singleton_of_not_mem +/- theorem finset.lt_of_mem_upto +/- theorem finset.mem_empty_iff +/- theorem finset.mem_erase_iff +/- theorem finset.mem_erase_of_ne_of_mem +/- theorem finset.mem_insert +/- theorem finset.mem_insert_iff +/- theorem finset.mem_insert_of_mem +/- theorem finset.mem_inter_iff +/- theorem finset.mem_of_mem_erase +/- theorem finset.mem_of_mem_insert_of_ne +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_iff +/- theorem finset.mem_singleton_of_eq - theorem finset.mem_to_finset_of_nodup + theorem finset.mem_to_finset_of_nodup_eq +/- theorem finset.mem_union_iff - theorem finset.mem_union_l - theorem finset.mem_union_r +/- theorem finset.mem_upto_iff +/- theorem finset.mem_upto_of_lt +/- theorem finset.mem_upto_succ_of_mem_upto +/- theorem finset.ne_empty_of_card_eq_succ +/- theorem finset.ne_of_mem_erase +/- theorem finset.not_mem_empty +/- theorem finset.not_mem_erase - theorem finset.pair_eq_singleton - theorem finset.perm_insert_cons_of_not_mem +/- theorem finset.singleton_inter_of_mem +/- theorem finset.singleton_inter_of_not_mem +/- theorem finset.singleton_ne_empty +/- theorem finset.subset_insert +/- theorem finset.subset_insert_of_erase_subset +/- theorem finset.union_assoc +/- theorem finset.union_comm +/- theorem finset.union_empty + theorem finset.union_insert +/- theorem finset.union_self +/- def finset.upto +/- theorem finset.upto_succ + theorem or_self_or + theorem perm_insert_cons_of_not_mem Added data/finset/default.lean Added data/finset/fold.lean + def finset.fold + theorem finset.fold_empty + theorem finset.fold_hom + theorem finset.fold_image + theorem finset.fold_insert + theorem finset.fold_op_distrib + theorem finset.fold_singleton + theorem finset.fold_to_finset_of_nodup + theorem finset.fold_union_inter + theorem list.fold_op_eq_of_perm + theorem list.foldl_assoc + theorem list.foldl_assoc_comm_cons + theorem list.foldl_op_eq_op_foldr_assoc Modified data/list/set.lean + theorem list.mem_erase_iff_of_nodup +/- theorem list.mem_erase_of_nodup 2017-08-28 12:56:25-05:00 1aa7efa Merge remote-tracking branch 'upstream/master' ESTIMATED CHANGES 2017-08-27 20:58:30-04:00 b031441 feat(algebra): add small theory of big operators on commutative monoids ESTIMATED CHANGES Added algebra/big_operators.lean + theorem finset.prod_empty + theorem finset.prod_image + theorem finset.prod_insert + theorem finset.prod_mul_distrib + theorem finset.prod_singleton + theorem finset.prod_to_finset + theorem finset.prod_union + theorem finset.prod_union_inter_eq + theorem foldl_mul_assoc + theorem foldl_mul_eq_mul_foldr + theorem prod_append + theorem prod_cons + theorem prod_eq_of_perm + theorem prod_join + theorem prod_nil + theorem prod_replicate 2017-08-27 20:57:59-04:00 c17d11b fix(data/finset): use the type class projections for insert; hide most constants using protected; add image of finset ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.card_empty - def finset.empty +/- theorem finset.empty_inter +/- theorem finset.empty_subset +/- theorem finset.empty_union +/- theorem finset.eq_empty_of_subset_empty +/- theorem finset.eq_of_mem_singleton +/- theorem finset.eq_of_singleton_eq + theorem finset.erase_dup_map_erase_dup_eq +/- theorem finset.erase_insert +/- theorem finset.erase_insert_subset + theorem finset.image_id + theorem finset.image_image + theorem finset.image_to_finset + theorem finset.image_to_finset_of_nodup +/- theorem finset.insert.comm - def finset.insert +/- theorem finset.insert_eq +/- theorem finset.insert_eq_of_mem + theorem finset.insert_inter_of_mem + theorem finset.insert_inter_of_not_mem +/- theorem finset.insert_subset_insert +/- theorem finset.insert_union - def finset.inter +/- theorem finset.inter_empty +/- theorem finset.mem_insert +/- theorem finset.mem_insert_iff +/- theorem finset.mem_singleton_iff +/- theorem finset.perm_insert_cons_of_not_mem +/- theorem finset.singleton_inter_of_mem +/- theorem finset.singleton_inter_of_not_mem - def finset.subset - def finset.subset_aux +/- theorem finset.subset_empty_iff - def finset.union +/- theorem finset.union_empty +/- theorem finset.upto_succ +/- theorem finset.upto_zero +/- def to_nodup_list_of_nodup Modified data/list/set.lean +/- theorem list.length_erase_of_not_mem +/- theorem list.nodup_map + theorem list.nodup_map_on 2017-08-27 13:33:07-04:00 f2b4d2e refactor(data/finset): use generic set notation for finsets ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.erase_insert +/- theorem finset.erase_insert_subset +/- theorem finset.exists_mem_empty_iff +/- theorem finset.exists_mem_insert_iff +/- theorem finset.forall_mem_empty_iff +/- theorem finset.forall_mem_insert_iff +/- theorem finset.insert.comm +/- theorem finset.insert_eq +/- theorem finset.insert_eq_of_mem +/- theorem finset.insert_subset_insert +/- theorem finset.insert_union +/- theorem finset.mem_insert +/- theorem finset.mem_insert_iff +/- theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_list +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_iff +/- theorem finset.mem_singleton_of_eq +/- theorem finset.pair_eq_singleton +/- theorem finset.singleton_ne_empty +/- theorem finset.upto_succ 2017-08-27 13:33:07-04:00 79ed1c3 refactor(data/finset): add type class instances ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.eq_of_mem_singleton +/- theorem finset.eq_of_singleton_eq - theorem finset.exists_mem_empty_eq +/- theorem finset.exists_mem_empty_iff - theorem finset.exists_mem_insert_eq +/- theorem finset.exists_mem_insert_iff - theorem finset.forall_mem_empty_eq +/- theorem finset.forall_mem_empty_iff - theorem finset.forall_mem_insert_eq +/- theorem finset.forall_mem_insert_iff +/- theorem finset.forall_of_forall_insert +/- theorem finset.insert_eq - theorem finset.mem_empty_eq - theorem finset.mem_erase_eq - theorem finset.mem_insert_eq - theorem finset.mem_inter_eq +/- theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_list +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_iff +/- theorem finset.mem_singleton_of_eq - theorem finset.mem_union_eq - theorem finset.mem_upto_eq +/- theorem finset.pair_eq_singleton +/- theorem finset.singleton_ne_empty +/- theorem finset.upto_succ 2017-08-27 13:33:07-04:00 73ae11b refactor(data/finset): fix formatting issues ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.mem_empty_iff +/- theorem finset.not_mem_empty +/- def finset.subset_aux +/- def finset +/- def nodup_list 2017-08-27 13:33:07-04:00 8dbee5b feat(data/finset): add basics for finsets ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.eq_of_mem_singleton +/- theorem finset.eq_of_singleton_eq +/- theorem finset.erase_insert +/- theorem finset.erase_insert_subset + theorem finset.exists_mem_empty_eq +/- theorem finset.exists_mem_empty_iff + theorem finset.exists_mem_insert_eq +/- theorem finset.exists_mem_insert_iff + theorem finset.forall_mem_empty_eq +/- theorem finset.forall_mem_empty_iff + theorem finset.forall_mem_insert_eq +/- theorem finset.forall_mem_insert_iff +/- theorem finset.forall_of_forall_insert +/- theorem finset.insert.comm +/- theorem finset.insert_eq +/- theorem finset.insert_eq_of_mem +/- theorem finset.insert_subset_insert +/- theorem finset.insert_union + theorem finset.mem_empty_eq +/- theorem finset.mem_empty_iff + theorem finset.mem_erase_eq +/- theorem finset.mem_insert + theorem finset.mem_insert_eq +/- theorem finset.mem_insert_iff + theorem finset.mem_inter_eq +/- theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_list +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_iff +/- theorem finset.mem_singleton_of_eq + theorem finset.mem_union_eq + theorem finset.mem_upto_eq +/- theorem finset.not_mem_empty +/- theorem finset.pair_eq_singleton +/- theorem finset.singleton_ne_empty +/- def finset.subset_aux +/- theorem finset.upto_succ +/- def finset +/- def nodup_list 2017-08-27 12:30:11-05:00 e678531 refactor(data/finset): use generic set notation for finsets ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.eq_of_mem_singleton +/- theorem finset.eq_of_singleton_eq 2017-08-27 12:05:34-05:00 b64eb68 refactor(data/finset): use generic set notation for finsets ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.erase_insert +/- theorem finset.erase_insert_subset +/- theorem finset.exists_mem_empty_iff +/- theorem finset.exists_mem_insert_iff +/- theorem finset.forall_mem_empty_iff +/- theorem finset.forall_mem_insert_iff +/- theorem finset.insert.comm +/- theorem finset.insert_eq +/- theorem finset.insert_eq_of_mem +/- theorem finset.insert_subset_insert +/- theorem finset.insert_union +/- theorem finset.mem_insert +/- theorem finset.mem_insert_iff +/- theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_list +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_iff +/- theorem finset.mem_singleton_of_eq +/- theorem finset.pair_eq_singleton +/- theorem finset.singleton_ne_empty +/- theorem finset.upto_succ 2017-08-27 12:05:00-05:00 5292cf1 Merge branch 'master' of https://github.com/leanprover/mathlib ESTIMATED CHANGES Added data/finset/basic.lean + def finset.card + theorem finset.card_empty + theorem finset.card_erase_of_mem + theorem finset.card_erase_of_not_mem + theorem finset.card_insert_le + theorem finset.card_insert_of_mem + theorem finset.card_insert_of_not_mem + theorem finset.card_upto + def finset.empty + theorem finset.empty_inter + theorem finset.empty_subset + theorem finset.empty_union + theorem finset.eq_empty_of_card_eq_zero + theorem finset.eq_empty_of_forall_not_mem + theorem finset.eq_empty_of_subset_empty + theorem finset.eq_of_mem_singleton + theorem finset.eq_of_singleton_eq + theorem finset.eq_of_subset_of_subset + theorem finset.eq_or_mem_of_mem_insert + def finset.erase + theorem finset.erase_empty + theorem finset.erase_eq_of_not_mem + theorem finset.erase_insert + theorem finset.erase_insert_subset + theorem finset.erase_subset + theorem finset.erase_subset_erase + theorem finset.erase_subset_of_subset_insert + theorem finset.exists_mem_empty_iff + theorem finset.exists_mem_insert_iff + theorem finset.exists_mem_of_ne_empty + theorem finset.ext + theorem finset.forall_mem_empty_iff + theorem finset.forall_mem_insert_iff + theorem finset.forall_of_forall_insert + theorem finset.insert.comm + def finset.insert + theorem finset.insert_eq + theorem finset.insert_eq_of_mem + theorem finset.insert_erase + theorem finset.insert_erase_subset + theorem finset.insert_subset_insert + theorem finset.insert_union + def finset.inter + theorem finset.inter_assoc + theorem finset.inter_comm + theorem finset.inter_distrib_left + theorem finset.inter_distrib_right + theorem finset.inter_empty + theorem finset.inter_left_comm + theorem finset.inter_right_comm + theorem finset.inter_self + theorem finset.lt_of_mem_upto + def finset.mem + theorem finset.mem_empty_iff + theorem finset.mem_erase_iff + theorem finset.mem_erase_of_ne_of_mem + theorem finset.mem_insert + theorem finset.mem_insert_iff + theorem finset.mem_insert_of_mem + theorem finset.mem_inter + theorem finset.mem_inter_iff + theorem finset.mem_list_of_mem + theorem finset.mem_of_mem_erase + theorem finset.mem_of_mem_insert_of_ne + theorem finset.mem_of_mem_inter_left + theorem finset.mem_of_mem_inter_right + theorem finset.mem_of_mem_list + theorem finset.mem_of_subset_of_mem + theorem finset.mem_or_mem_of_mem_union + theorem finset.mem_singleton + theorem finset.mem_singleton_iff + theorem finset.mem_singleton_of_eq + theorem finset.mem_to_finset + theorem finset.mem_to_finset_of_nodup + theorem finset.mem_union_iff + theorem finset.mem_union_l + theorem finset.mem_union_left + theorem finset.mem_union_r + theorem finset.mem_union_right + theorem finset.mem_upto_iff + theorem finset.mem_upto_of_lt + theorem finset.mem_upto_succ_of_mem_upto + theorem finset.ne_empty_of_card_eq_succ + theorem finset.ne_of_mem_erase + theorem finset.not_mem_empty + theorem finset.not_mem_erase + theorem finset.pair_eq_singleton + theorem finset.perm_insert_cons_of_not_mem + theorem finset.singleton_inter_of_mem + theorem finset.singleton_inter_of_not_mem + theorem finset.singleton_ne_empty + theorem finset.subset.antisymm + theorem finset.subset.refl + theorem finset.subset.trans + def finset.subset + def finset.subset_aux + theorem finset.subset_empty_iff + theorem finset.subset_insert + theorem finset.subset_insert_iff + theorem finset.subset_insert_of_erase_subset + theorem finset.subset_of_forall + def finset.to_finset + theorem finset.to_finset_eq_of_nodup + def finset.to_finset_of_nodup + def finset.union + theorem finset.union_assoc + theorem finset.union_comm + theorem finset.union_distrib_left + theorem finset.union_distrib_right + theorem finset.union_empty + theorem finset.union_left_comm + theorem finset.union_right_comm + theorem finset.union_self + def finset.upto + theorem finset.upto_succ + theorem finset.upto_zero + def finset + def nodup_list + def to_nodup_list + def to_nodup_list_of_nodup Modified data/list/set.lean + theorem list.length_erase_of_not_mem 2017-08-27 12:26:42-04:00 1f992c9 fix(.): adapt to Lean changes: type class parameters to structures are now type class parameters in the projections and constructor ESTIMATED CHANGES Modified algebra/module.lean +/- theorem mul_smul +/- theorem smul_left_distrib +/- theorem smul_right_distrib Modified data/fp/basic.lean +/- def fp.float.default_nan Modified order/basic.lean Modified topology/topological_space.lean +/- theorem t2_separation Modified topology/topological_structures.lean 2017-08-26 15:40:07-04:00 5b3b136 feat(topology): port metric space from lean2 ESTIMATED CHANGES Modified algebra/field.lean Modified algebra/group.lean + theorem abs_eq_zero_iff Modified data/rat.lean Modified order/basic.lean + theorem dense + theorem eq_of_le_of_forall_ge + theorem eq_of_le_of_forall_le + theorem le_of_forall_ge + theorem le_of_forall_le + theorem no_bot + theorem no_top Modified order/complete_lattice.lean - theorem lattice.foo' - theorem lattice.foo + theorem lattice.inf_infi + theorem lattice.infi_inf Modified order/filter.lean +/- theorem filter.mem_prod_iff +/- theorem filter.mem_prod_same_iff +/- theorem filter.prod_comm + theorem filter.prod_def + theorem filter.prod_infi_left + theorem filter.prod_infi_right +/- theorem filter.prod_mem_prod +/- theorem filter.prod_same_eq + theorem filter.tendsto_infi' + theorem filter.tendsto_infi + theorem filter.tendsto_principal_principal Added topology/metric_space.lean + def closed_ball + theorem continuous_dist' + theorem continuous_dist + def dist + theorem dist_comm + theorem dist_eq_zero_iff + theorem dist_nonneg + theorem dist_pos_of_ne + theorem dist_self + theorem dist_triangle + theorem eq_of_dist_eq_zero + theorem eq_of_forall_dist_le + theorem exists_subtype + theorem is_closed_closed_ball + theorem is_open_metric + theorem is_open_open_ball + theorem mem_nhds_sets_iff_metric + theorem mem_open_ball + theorem ne_of_dist_pos + theorem nhds_eq_metric + def open_ball + theorem open_ball_eq_empty_of_nonpos + theorem open_ball_subset_open_ball_of_le + theorem pos_of_mem_open_ball + theorem tendsto_dist + theorem uniform_continuous_dist' + theorem uniform_continuous_dist + theorem uniformity_dist' + theorem uniformity_dist + theorem zero_eq_dist_iff Modified topology/real.lean - theorem zero_lt_two Modified topology/uniform_space.lean + theorem uniformity_prod_eq_prod 2017-08-26 15:40:07-04:00 f1fba68 feat(algebra): porting modules from lean2 ESTIMATED CHANGES Added algebra/module.lean + theorem mul_smul + theorem neg_smul + theorem one_smul + def ring.to_module + theorem smul_left_distrib + theorem smul_neg + theorem smul_right_distrib + theorem smul_sub_left_distrib + theorem smul_zero + theorem sub_smul_right_distrib + theorem zero_smul 2017-08-26 15:40:07-04:00 d1cbb8f fix(algebra/group): add every transport theorem from main Lean repository ESTIMATED CHANGES Modified algebra/group.lean Deleted data/finset/basic.lean - def finset.card - theorem finset.card_empty - theorem finset.card_erase_of_mem - theorem finset.card_erase_of_not_mem - theorem finset.card_insert_le - theorem finset.card_insert_of_mem - theorem finset.card_insert_of_not_mem - theorem finset.card_upto - def finset.empty - theorem finset.empty_inter - theorem finset.empty_subset - theorem finset.empty_union - theorem finset.eq_empty_of_card_eq_zero - theorem finset.eq_empty_of_forall_not_mem - theorem finset.eq_empty_of_subset_empty - theorem finset.eq_of_mem_singleton - theorem finset.eq_of_singleton_eq - theorem finset.eq_of_subset_of_subset - theorem finset.eq_or_mem_of_mem_insert - def finset.erase - theorem finset.erase_empty - theorem finset.erase_eq_of_not_mem - theorem finset.erase_insert - theorem finset.erase_insert_subset - theorem finset.erase_subset - theorem finset.erase_subset_erase - theorem finset.erase_subset_of_subset_insert - theorem finset.exists_mem_empty_iff - theorem finset.exists_mem_insert_iff - theorem finset.exists_mem_of_ne_empty - theorem finset.ext - theorem finset.forall_mem_empty_iff - theorem finset.forall_mem_insert_iff - theorem finset.forall_of_forall_insert - theorem finset.insert.comm - def finset.insert - theorem finset.insert_eq - theorem finset.insert_eq_of_mem - theorem finset.insert_erase - theorem finset.insert_erase_subset - theorem finset.insert_subset_insert - theorem finset.insert_union - def finset.inter - theorem finset.inter_assoc - theorem finset.inter_comm - theorem finset.inter_distrib_left - theorem finset.inter_distrib_right - theorem finset.inter_empty - theorem finset.inter_left_comm - theorem finset.inter_right_comm - theorem finset.inter_self - theorem finset.lt_of_mem_upto - def finset.mem - theorem finset.mem_empty_iff - theorem finset.mem_erase_iff - theorem finset.mem_erase_of_ne_of_mem - theorem finset.mem_insert - theorem finset.mem_insert_iff - theorem finset.mem_insert_of_mem - theorem finset.mem_inter - theorem finset.mem_inter_iff - theorem finset.mem_list_of_mem - theorem finset.mem_of_mem_erase - theorem finset.mem_of_mem_insert_of_ne - theorem finset.mem_of_mem_inter_left - theorem finset.mem_of_mem_inter_right - theorem finset.mem_of_mem_list - theorem finset.mem_of_subset_of_mem - theorem finset.mem_or_mem_of_mem_union - theorem finset.mem_singleton - theorem finset.mem_singleton_iff - theorem finset.mem_singleton_of_eq - theorem finset.mem_to_finset - theorem finset.mem_to_finset_of_nodup - theorem finset.mem_union_iff - theorem finset.mem_union_l - theorem finset.mem_union_left - theorem finset.mem_union_r - theorem finset.mem_union_right - theorem finset.mem_upto_iff - theorem finset.mem_upto_of_lt - theorem finset.mem_upto_succ_of_mem_upto - theorem finset.ne_empty_of_card_eq_succ - theorem finset.ne_of_mem_erase - theorem finset.not_mem_empty - theorem finset.not_mem_erase - theorem finset.pair_eq_singleton - theorem finset.perm_insert_cons_of_not_mem - theorem finset.singleton_inter_of_mem - theorem finset.singleton_inter_of_not_mem - theorem finset.singleton_ne_empty - theorem finset.subset.antisymm - theorem finset.subset.refl - theorem finset.subset.trans - def finset.subset - def finset.subset_aux - theorem finset.subset_empty_iff - theorem finset.subset_insert - theorem finset.subset_insert_iff - theorem finset.subset_insert_of_erase_subset - theorem finset.subset_of_forall - def finset.to_finset - theorem finset.to_finset_eq_of_nodup - def finset.to_finset_of_nodup - def finset.union - theorem finset.union_assoc - theorem finset.union_comm - theorem finset.union_distrib_left - theorem finset.union_distrib_right - theorem finset.union_empty - theorem finset.union_left_comm - theorem finset.union_right_comm - theorem finset.union_self - def finset.upto - theorem finset.upto_succ - theorem finset.upto_zero - def finset - def nodup_list - def to_nodup_list - def to_nodup_list_of_nodup Modified data/list/set.lean - theorem list.length_erase_of_not_mem Modified topology/real.lean 2017-08-26 13:03:40-05:00 67a2f39 refactor(data/finset): add type class instances ESTIMATED CHANGES Modified data/finset/basic.lean +/- theorem finset.eq_of_mem_singleton +/- theorem finset.eq_of_singleton_eq - theorem finset.exists_mem_empty_eq +/- theorem finset.exists_mem_empty_iff - theorem finset.exists_mem_insert_eq +/- theorem finset.exists_mem_insert_iff - theorem finset.forall_mem_empty_eq +/- theorem finset.forall_mem_empty_iff - theorem finset.forall_mem_insert_eq +/- theorem finset.forall_mem_insert_iff +/- theorem finset.forall_of_forall_insert +/- theorem finset.insert_eq - theorem finset.mem_empty_eq - theorem finset.mem_erase_eq - theorem finset.mem_insert_eq - theorem finset.mem_inter_eq +/- theorem finset.mem_list_of_mem +/- theorem finset.mem_of_mem_list +/- theorem finset.mem_singleton +/- theorem finset.mem_singleton_iff +/- theorem finset.mem_singleton_of_eq - theorem finset.mem_union_eq - theorem finset.mem_upto_eq +/- theorem finset.pair_eq_singleton +/- theorem finset.singleton_ne_empty +/- theorem finset.upto_succ 2017-08-26 12:24:58-05:00 cde1bd8 Merge branch 'master' of https://github.com/leanprover/mathlib ESTIMATED CHANGES Modified topology/continuity.lean + theorem is_open_prod + theorem is_open_prod_iff - theorem is_open_set_prod Modified topology/real.lean - theorem continuous_add_rat - theorem continuous_add_real' - theorem continuous_add_real - theorem continuous_neg_rat - theorem continuous_neg_real - theorem continuous_sub_real +/- theorem exists_supremum_real - theorem is_closed_ge - theorem is_closed_le - theorem is_closed_le_real - theorem is_open_gt - theorem is_open_lt - theorem is_open_lt_real - theorem tendsto_add_rat - theorem tendsto_mul_rat - theorem tendsto_neg_rat Added topology/topological_structures.lean + theorem continuous_add' + theorem continuous_add + theorem continuous_mul + theorem continuous_neg' + theorem continuous_neg + theorem continuous_sub + theorem dense_or_discrete + theorem is_closed_le + theorem is_open_lt + theorem is_open_lt_fst_snd + theorem order_separated + theorem tendsto_add + theorem tendsto_mul + theorem tendsto_neg + theorem tendsto_sub 2017-08-25 13:00:17-05:00 dff0ffd refactor(data/finset): fix formatting issues ESTIMATED CHANGES Added data/finset/basic.lean + def finset.card + theorem finset.card_empty + theorem finset.card_erase_of_mem + theorem finset.card_erase_of_not_mem + theorem finset.card_insert_le + theorem finset.card_insert_of_mem + theorem finset.card_insert_of_not_mem + theorem finset.card_upto + def finset.empty + theorem finset.empty_inter + theorem finset.empty_subset + theorem finset.empty_union + theorem finset.eq_empty_of_card_eq_zero + theorem finset.eq_empty_of_forall_not_mem + theorem finset.eq_empty_of_subset_empty + theorem finset.eq_of_mem_singleton + theorem finset.eq_of_singleton_eq + theorem finset.eq_of_subset_of_subset + theorem finset.eq_or_mem_of_mem_insert + def finset.erase + theorem finset.erase_empty + theorem finset.erase_eq_of_not_mem + theorem finset.erase_insert + theorem finset.erase_insert_subset + theorem finset.erase_subset + theorem finset.erase_subset_erase + theorem finset.erase_subset_of_subset_insert + theorem finset.exists_mem_empty_eq + theorem finset.exists_mem_empty_iff + theorem finset.exists_mem_insert_eq + theorem finset.exists_mem_insert_iff + theorem finset.exists_mem_of_ne_empty + theorem finset.ext + theorem finset.forall_mem_empty_eq + theorem finset.forall_mem_empty_iff + theorem finset.forall_mem_insert_eq + theorem finset.forall_mem_insert_iff + theorem finset.forall_of_forall_insert + theorem finset.insert.comm + def finset.insert + theorem finset.insert_eq + theorem finset.insert_eq_of_mem + theorem finset.insert_erase + theorem finset.insert_erase_subset + theorem finset.insert_subset_insert + theorem finset.insert_union + def finset.inter + theorem finset.inter_assoc + theorem finset.inter_comm + theorem finset.inter_distrib_left + theorem finset.inter_distrib_right + theorem finset.inter_empty + theorem finset.inter_left_comm + theorem finset.inter_right_comm + theorem finset.inter_self + theorem finset.lt_of_mem_upto + def finset.mem + theorem finset.mem_empty_eq + theorem finset.mem_empty_iff + theorem finset.mem_erase_eq + theorem finset.mem_erase_iff + theorem finset.mem_erase_of_ne_of_mem + theorem finset.mem_insert + theorem finset.mem_insert_eq + theorem finset.mem_insert_iff + theorem finset.mem_insert_of_mem + theorem finset.mem_inter + theorem finset.mem_inter_eq + theorem finset.mem_inter_iff + theorem finset.mem_list_of_mem + theorem finset.mem_of_mem_erase + theorem finset.mem_of_mem_insert_of_ne + theorem finset.mem_of_mem_inter_left + theorem finset.mem_of_mem_inter_right + theorem finset.mem_of_mem_list + theorem finset.mem_of_subset_of_mem + theorem finset.mem_or_mem_of_mem_union + theorem finset.mem_singleton + theorem finset.mem_singleton_iff + theorem finset.mem_singleton_of_eq + theorem finset.mem_to_finset + theorem finset.mem_to_finset_of_nodup + theorem finset.mem_union_eq + theorem finset.mem_union_iff + theorem finset.mem_union_l + theorem finset.mem_union_left + theorem finset.mem_union_r + theorem finset.mem_union_right + theorem finset.mem_upto_eq + theorem finset.mem_upto_iff + theorem finset.mem_upto_of_lt + theorem finset.mem_upto_succ_of_mem_upto + theorem finset.ne_empty_of_card_eq_succ + theorem finset.ne_of_mem_erase + theorem finset.not_mem_empty + theorem finset.not_mem_erase + theorem finset.pair_eq_singleton + theorem finset.perm_insert_cons_of_not_mem + theorem finset.singleton_inter_of_mem + theorem finset.singleton_inter_of_not_mem + theorem finset.singleton_ne_empty + theorem finset.subset.antisymm + theorem finset.subset.refl + theorem finset.subset.trans + def finset.subset + def finset.subset_aux + theorem finset.subset_empty_iff + theorem finset.subset_insert + theorem finset.subset_insert_iff + theorem finset.subset_insert_of_erase_subset + theorem finset.subset_of_forall + def finset.to_finset + theorem finset.to_finset_eq_of_nodup + def finset.to_finset_of_nodup + def finset.union + theorem finset.union_assoc + theorem finset.union_comm + theorem finset.union_distrib_left + theorem finset.union_distrib_right + theorem finset.union_empty + theorem finset.union_left_comm + theorem finset.union_right_comm + theorem finset.union_self + def finset.upto + theorem finset.upto_succ + theorem finset.upto_zero + def finset + def nodup_list + def to_nodup_list + def to_nodup_list_of_nodup Modified data/list/set.lean + theorem list.length_erase_of_not_mem Modified topology/continuity.lean - theorem is_open_prod - theorem is_open_prod_iff + theorem is_open_set_prod Modified topology/real.lean + theorem continuous_add_rat + theorem continuous_add_real' + theorem continuous_add_real + theorem continuous_neg_rat + theorem continuous_neg_real + theorem continuous_sub_real +/- theorem exists_supremum_real + theorem is_closed_ge + theorem is_closed_le + theorem is_closed_le_real + theorem is_open_gt + theorem is_open_lt + theorem is_open_lt_real + theorem tendsto_add_rat + theorem tendsto_mul_rat + theorem tendsto_neg_rat Deleted topology/topological_structures.lean - theorem continuous_add' - theorem continuous_add - theorem continuous_mul - theorem continuous_neg' - theorem continuous_neg - theorem continuous_sub - theorem dense_or_discrete - theorem is_closed_le - theorem is_open_lt - theorem is_open_lt_fst_snd - theorem order_separated - theorem tendsto_add - theorem tendsto_mul - theorem tendsto_neg - theorem tendsto_sub 2017-08-24 19:09:36-04:00 7c72de2 feat(topology): add topological structures for groups, ring, and linear orders; add instances for rat and real ESTIMATED CHANGES Deleted data/finset/basic.lean - def finset.card - theorem finset.card_empty - theorem finset.card_erase_of_mem - theorem finset.card_erase_of_not_mem - theorem finset.card_insert_le - theorem finset.card_insert_of_mem - theorem finset.card_insert_of_not_mem - theorem finset.card_upto - def finset.empty - theorem finset.empty_inter - theorem finset.empty_subset - theorem finset.empty_union - theorem finset.eq_empty_of_card_eq_zero - theorem finset.eq_empty_of_forall_not_mem - theorem finset.eq_empty_of_subset_empty - theorem finset.eq_of_mem_singleton - theorem finset.eq_of_singleton_eq - theorem finset.eq_of_subset_of_subset - theorem finset.eq_or_mem_of_mem_insert - def finset.erase - theorem finset.erase_empty - theorem finset.erase_eq_of_not_mem - theorem finset.erase_insert - theorem finset.erase_insert_subset - theorem finset.erase_subset - theorem finset.erase_subset_erase - theorem finset.erase_subset_of_subset_insert - theorem finset.exists_mem_empty_eq - theorem finset.exists_mem_empty_iff - theorem finset.exists_mem_insert_eq - theorem finset.exists_mem_insert_iff - theorem finset.exists_mem_of_ne_empty - theorem finset.ext - theorem finset.forall_mem_empty_eq - theorem finset.forall_mem_empty_iff - theorem finset.forall_mem_insert_eq - theorem finset.forall_mem_insert_iff - theorem finset.forall_of_forall_insert - theorem finset.insert.comm - def finset.insert - theorem finset.insert_eq - theorem finset.insert_eq_of_mem - theorem finset.insert_erase - theorem finset.insert_erase_subset - theorem finset.insert_subset_insert - theorem finset.insert_union - def finset.inter - theorem finset.inter_assoc - theorem finset.inter_comm - theorem finset.inter_distrib_left - theorem finset.inter_distrib_right - theorem finset.inter_empty - theorem finset.inter_left_comm - theorem finset.inter_right_comm - theorem finset.inter_self - theorem finset.lt_of_mem_upto - def finset.mem - theorem finset.mem_empty_eq - theorem finset.mem_empty_iff - theorem finset.mem_erase_eq - theorem finset.mem_erase_iff - theorem finset.mem_erase_of_ne_of_mem - theorem finset.mem_insert - theorem finset.mem_insert_eq - theorem finset.mem_insert_iff - theorem finset.mem_insert_of_mem - theorem finset.mem_inter - theorem finset.mem_inter_eq - theorem finset.mem_inter_iff - theorem finset.mem_list_of_mem - theorem finset.mem_of_mem_erase - theorem finset.mem_of_mem_insert_of_ne - theorem finset.mem_of_mem_inter_left - theorem finset.mem_of_mem_inter_right - theorem finset.mem_of_mem_list - theorem finset.mem_of_subset_of_mem - theorem finset.mem_or_mem_of_mem_union - theorem finset.mem_singleton - theorem finset.mem_singleton_iff - theorem finset.mem_singleton_of_eq - theorem finset.mem_to_finset - theorem finset.mem_to_finset_of_nodup - theorem finset.mem_union_eq - theorem finset.mem_union_iff - theorem finset.mem_union_l - theorem finset.mem_union_left - theorem finset.mem_union_r - theorem finset.mem_union_right - theorem finset.mem_upto_eq - theorem finset.mem_upto_iff - theorem finset.mem_upto_of_lt - theorem finset.mem_upto_succ_of_mem_upto - theorem finset.ne_empty_of_card_eq_succ - theorem finset.ne_of_mem_erase - theorem finset.not_mem_empty - theorem finset.not_mem_erase - theorem finset.pair_eq_singleton - theorem finset.perm_insert_cons_of_not_mem - theorem finset.singleton_inter_of_mem - theorem finset.singleton_inter_of_not_mem - theorem finset.singleton_ne_empty - theorem finset.subset.antisymm - theorem finset.subset.refl - theorem finset.subset.trans - def finset.subset - def finset.subset_aux - theorem finset.subset_empty_iff - theorem finset.subset_insert - theorem finset.subset_insert_iff - theorem finset.subset_insert_of_erase_subset - theorem finset.subset_of_forall - def finset.to_finset - theorem finset.to_finset_eq_of_nodup - def finset.to_finset_of_nodup - def finset.union - theorem finset.union_assoc - theorem finset.union_comm - theorem finset.union_distrib_left - theorem finset.union_distrib_right - theorem finset.union_empty - theorem finset.union_left_comm - theorem finset.union_right_comm - theorem finset.union_self - def finset.upto - theorem finset.upto_succ - theorem finset.upto_zero - def finset - def nodup_list - def to_nodup_list - def to_nodup_list_of_nodup Modified data/list/set.lean - theorem list.length_erase_of_not_mem Modified topology/continuity.lean + theorem is_open_prod + theorem is_open_prod_iff - theorem is_open_set_prod Modified topology/real.lean - theorem continuous_add_rat - theorem continuous_add_real' - theorem continuous_add_real - theorem continuous_neg_rat - theorem continuous_neg_real - theorem continuous_sub_real +/- theorem exists_supremum_real - theorem is_closed_ge - theorem is_closed_le - theorem is_closed_le_real - theorem is_open_gt - theorem is_open_lt - theorem is_open_lt_real - theorem tendsto_add_rat - theorem tendsto_mul_rat - theorem tendsto_neg_rat Added topology/topological_structures.lean + theorem continuous_add' + theorem continuous_add + theorem continuous_mul + theorem continuous_neg' + theorem continuous_neg + theorem continuous_sub + theorem dense_or_discrete + theorem is_closed_le + theorem is_open_lt + theorem is_open_lt_fst_snd + theorem order_separated + theorem tendsto_add + theorem tendsto_mul + theorem tendsto_neg + theorem tendsto_sub 2017-08-24 16:21:01-05:00 7df585e feat(data/finset): add basics for finsets ESTIMATED CHANGES Added data/finset/basic.lean + def finset.card + theorem finset.card_empty + theorem finset.card_erase_of_mem + theorem finset.card_erase_of_not_mem + theorem finset.card_insert_le + theorem finset.card_insert_of_mem + theorem finset.card_insert_of_not_mem + theorem finset.card_upto + def finset.empty + theorem finset.empty_inter + theorem finset.empty_subset + theorem finset.empty_union + theorem finset.eq_empty_of_card_eq_zero + theorem finset.eq_empty_of_forall_not_mem + theorem finset.eq_empty_of_subset_empty + theorem finset.eq_of_mem_singleton + theorem finset.eq_of_singleton_eq + theorem finset.eq_of_subset_of_subset + theorem finset.eq_or_mem_of_mem_insert + def finset.erase + theorem finset.erase_empty + theorem finset.erase_eq_of_not_mem + theorem finset.erase_insert + theorem finset.erase_insert_subset + theorem finset.erase_subset + theorem finset.erase_subset_erase + theorem finset.erase_subset_of_subset_insert + theorem finset.exists_mem_empty_eq + theorem finset.exists_mem_empty_iff + theorem finset.exists_mem_insert_eq + theorem finset.exists_mem_insert_iff + theorem finset.exists_mem_of_ne_empty + theorem finset.ext + theorem finset.forall_mem_empty_eq + theorem finset.forall_mem_empty_iff + theorem finset.forall_mem_insert_eq + theorem finset.forall_mem_insert_iff + theorem finset.forall_of_forall_insert + theorem finset.insert.comm + def finset.insert + theorem finset.insert_eq + theorem finset.insert_eq_of_mem + theorem finset.insert_erase + theorem finset.insert_erase_subset + theorem finset.insert_subset_insert + theorem finset.insert_union + def finset.inter + theorem finset.inter_assoc + theorem finset.inter_comm + theorem finset.inter_distrib_left + theorem finset.inter_distrib_right + theorem finset.inter_empty + theorem finset.inter_left_comm + theorem finset.inter_right_comm + theorem finset.inter_self + theorem finset.lt_of_mem_upto + def finset.mem + theorem finset.mem_empty_eq + theorem finset.mem_empty_iff + theorem finset.mem_erase_eq + theorem finset.mem_erase_iff + theorem finset.mem_erase_of_ne_of_mem + theorem finset.mem_insert + theorem finset.mem_insert_eq + theorem finset.mem_insert_iff + theorem finset.mem_insert_of_mem + theorem finset.mem_inter + theorem finset.mem_inter_eq + theorem finset.mem_inter_iff + theorem finset.mem_list_of_mem + theorem finset.mem_of_mem_erase + theorem finset.mem_of_mem_insert_of_ne + theorem finset.mem_of_mem_inter_left + theorem finset.mem_of_mem_inter_right + theorem finset.mem_of_mem_list + theorem finset.mem_of_subset_of_mem + theorem finset.mem_or_mem_of_mem_union + theorem finset.mem_singleton + theorem finset.mem_singleton_iff + theorem finset.mem_singleton_of_eq + theorem finset.mem_to_finset + theorem finset.mem_to_finset_of_nodup + theorem finset.mem_union_eq + theorem finset.mem_union_iff + theorem finset.mem_union_l + theorem finset.mem_union_left + theorem finset.mem_union_r + theorem finset.mem_union_right + theorem finset.mem_upto_eq + theorem finset.mem_upto_iff + theorem finset.mem_upto_of_lt + theorem finset.mem_upto_succ_of_mem_upto + theorem finset.ne_empty_of_card_eq_succ + theorem finset.ne_of_mem_erase + theorem finset.not_mem_empty + theorem finset.not_mem_erase + theorem finset.pair_eq_singleton + theorem finset.perm_insert_cons_of_not_mem + theorem finset.singleton_inter_of_mem + theorem finset.singleton_inter_of_not_mem + theorem finset.singleton_ne_empty + theorem finset.subset.antisymm + theorem finset.subset.refl + theorem finset.subset.trans + def finset.subset + def finset.subset_aux + theorem finset.subset_empty_iff + theorem finset.subset_insert + theorem finset.subset_insert_iff + theorem finset.subset_insert_of_erase_subset + theorem finset.subset_of_forall + def finset.to_finset + theorem finset.to_finset_eq_of_nodup + def finset.to_finset_of_nodup + def finset.union + theorem finset.union_assoc + theorem finset.union_comm + theorem finset.union_distrib_left + theorem finset.union_distrib_right + theorem finset.union_empty + theorem finset.union_left_comm + theorem finset.union_right_comm + theorem finset.union_self + def finset.upto + theorem finset.upto_succ + theorem finset.upto_zero + def finset + def nodup_list + def to_nodup_list + def to_nodup_list_of_nodup Modified data/list/set.lean + theorem list.length_erase_of_not_mem 2017-08-24 13:50:09-04:00 33b22b0 data/option: add filter ESTIMATED CHANGES Modified data/option.lean + def option.filter 2017-08-24 13:46:34-04:00 4320c41 chore(*): rename stdlib to mathlib ESTIMATED CHANGES Modified README.md Modified leanpkg.toml 2017-08-24 13:34:45-04:00 9566a5b Merge pull request #10 from johoelzl/repair rat is order-dense in real; cleanup continuity proof for inv ESTIMATED CHANGES 2017-08-23 16:42:36-04:00 963bcad rat is order-dense in real; cleanup continuity proof for inv ESTIMATED CHANGES Modified topology/real.lean - theorem closure_of_rat_image_eq + theorem closure_of_rat_image_le_eq + theorem closure_of_rat_image_le_le_eq + theorem exists_pos_of_rat + theorem ge_mem_nhds + theorem le_mem_nhds + theorem mem_zero_nhd_le +/- theorem tendsto_mul_bnd_rat 2017-08-23 16:41:48-04:00 d708489 adapt to Lean changes ESTIMATED CHANGES Modified theories/set_theory.lean +/- def pSet.resp.eval_val 2017-08-22 17:03:16-04:00 3d81768 fix(data/list/perm): replace broken match with cases proof ESTIMATED CHANGES Modified data/list/perm.lean 2017-08-22 16:36:24-04:00 2780e70 Adapt to changes in equation compiler: * Names are not necessary propagated when `rfl` is eliminated on two variables. Replace `rfl` by `eq.refl n`. * it looks like that delta, beta, eta conversion rules are applied later now, so some statements of the form `assume tendsto ESTIMATED CHANGES Modified algebra/lattice/filter.lean + def filter.tendsto + theorem filter.tendsto_compose + theorem filter.tendsto_cong + theorem filter.tendsto_fst + theorem filter.tendsto_id' + theorem filter.tendsto_id + theorem filter.tendsto_inf + theorem filter.tendsto_map' + theorem filter.tendsto_map + theorem filter.tendsto_prod_mk + theorem filter.tendsto_snd + theorem filter.tendsto_vmap'' + theorem filter.tendsto_vmap' + theorem filter.tendsto_vmap - def filter.towards - theorem filter.towards_compose - theorem filter.towards_cong - theorem filter.towards_fst - theorem filter.towards_id' - theorem filter.towards_id - theorem filter.towards_inf - theorem filter.towards_map' - theorem filter.towards_map - theorem filter.towards_prod_mk - theorem filter.towards_snd - theorem filter.towards_vmap'' - theorem filter.towards_vmap' - theorem filter.towards_vmap Modified topology/continuity.lean + theorem continuous_iff_tendsto - theorem continuous_iff_towards + theorem dense_embedding.tendsto_ext - theorem dense_embedding.towards_ext + theorem tendsto_nhds_iff_of_embedding - theorem towards_nhds_iff_of_embedding Modified topology/real.lean +/- theorem lift_rat_fun_of_rat +/- theorem of_rat_add +/- theorem of_rat_inv +/- theorem of_rat_mul +/- theorem of_rat_neg +/- theorem of_rat_one +/- theorem of_rat_sub +/- theorem of_rat_zero + theorem tendsto_add_rat + theorem tendsto_add_rat_zero' + theorem tendsto_add_rat_zero + theorem tendsto_inv_pos_rat + theorem tendsto_inv_rat + theorem tendsto_inv_real + theorem tendsto_mul_bnd_rat' + theorem tendsto_mul_bnd_rat + theorem tendsto_mul_rat' + theorem tendsto_mul_rat + theorem tendsto_neg_rat + theorem tendsto_neg_rat_zero + theorem tendsto_of_uniform_continuous_subtype + theorem tendsto_sub_rat' + theorem tendsto_sub_uniformity_zero_nhd' + theorem tendsto_sub_uniformity_zero_nhd + theorem tendsto_zero_nhds - theorem towards_add_rat - theorem towards_add_rat_zero' - theorem towards_add_rat_zero - theorem towards_inv_pos_rat - theorem towards_inv_rat - theorem towards_inv_real - theorem towards_mul_bnd_rat' - theorem towards_mul_bnd_rat - theorem towards_mul_rat' - theorem towards_mul_rat - theorem towards_neg_rat - theorem towards_neg_rat_zero - theorem towards_of_uniform_continuous_subtype - theorem towards_sub_rat' - theorem towards_sub_uniformity_zero_nhd' - theorem towards_sub_uniformity_zero_nhd - theorem towards_zero_nhds Modified topology/topological_space.lean + theorem tendsto_const_nhds + theorem tendsto_nhds + theorem tendsto_nhds_unique - theorem towards_const_nhds - theorem towards_nhds - theorem towards_nhds_unique Modified topology/uniform_space.lean + theorem tendsto_const_uniformity + theorem tendsto_left_nhds_uniformity + theorem tendsto_prod_uniformity_fst + theorem tendsto_prod_uniformity_snd + theorem tendsto_right_nhds_uniformity + theorem tendsto_swap_uniformity - theorem towards_const_uniformity - theorem towards_left_nhds_uniformity - theorem towards_prod_uniformity_fst - theorem towards_prod_uniformity_snd - theorem towards_right_nhds_uniformity - theorem towards_swap_uniformity 2017-08-10 16:41:03-04:00 2ac1f20 rename open -> is_open, closed -> is_closed ESTIMATED CHANGES Modified topology/continuity.lean - theorem closed_diagonal - theorem closed_eq - theorem closed_prod - theorem closed_property2 - theorem closed_property3 - theorem closed_property +/- def continuous +/- theorem continuous_Prop - theorem continuous_iff_closed + theorem continuous_iff_is_closed - theorem continuous_subtype_closed_cover + theorem continuous_subtype_is_closed_cover - theorem embedding_closed + theorem embedding_is_closed + theorem is_closed_diagonal + theorem is_closed_eq + theorem is_closed_prod + theorem is_closed_property2 + theorem is_closed_property3 + theorem is_closed_property + theorem is_open_induced + theorem is_open_set_prod + theorem is_open_singleton_true - theorem open_induced - theorem open_set_prod - theorem open_singleton_true Modified topology/real.lean - theorem closed_ge - theorem closed_imp - theorem closed_le - theorem closed_le_real + theorem is_closed_ge + theorem is_closed_imp + theorem is_closed_le + theorem is_closed_le_real + theorem is_open_gt + theorem is_open_lt + theorem is_open_lt_real - theorem open_gt - theorem open_lt - theorem open_lt_real Modified topology/topological_space.lean - def closed - theorem closed_Inter - theorem closed_Union - theorem closed_Union_of_locally_finite - theorem closed_closure - theorem closed_compl_iff - theorem closed_empty - theorem closed_iff_nhds - theorem closed_induced_iff - theorem closed_inter - theorem closed_sInter - theorem closed_singleton - theorem closed_union - theorem closed_univ +/- def closure - theorem closure_eq_iff_closed + theorem closure_eq_iff_is_closed - theorem closure_eq_of_closed + theorem closure_eq_of_is_closed +/- theorem closure_inter_open +/- theorem closure_minimal - theorem closure_subset_iff_subset_of_closed + theorem closure_subset_iff_subset_of_is_closed - theorem compact_of_closed_subset + theorem compact_of_is_closed_subset +/- theorem generate_from_le +/- def interior +/- theorem interior_eq_iff_open +/- theorem interior_eq_of_open +/- theorem interior_maximal - theorem interior_union_closed_of_interior_empty + theorem interior_union_is_closed_of_interior_empty + def is_closed + theorem is_closed_Inter + theorem is_closed_Union + theorem is_closed_Union_of_locally_finite + theorem is_closed_closure + theorem is_closed_compl_iff + theorem is_closed_empty + theorem is_closed_iff_nhds + theorem is_closed_induced_iff + theorem is_closed_inter + theorem is_closed_sInter + theorem is_closed_singleton + theorem is_closed_union + theorem is_closed_univ + def is_open + theorem is_open_Union + theorem is_open_compl_iff + theorem is_open_diff + theorem is_open_empty + theorem is_open_iff_nhds + theorem is_open_inter + theorem is_open_interior + theorem is_open_sUnion + theorem is_open_union + theorem is_open_univ +/- theorem mem_nhds_sets +/- def nhds - theorem nhds_closed + theorem nhds_is_closed +/- theorem nhds_sets - def open' - theorem open_Union - theorem open_compl_iff - theorem open_diff - theorem open_empty - theorem open_iff_nhds - theorem open_inter - theorem open_interior - theorem open_sUnion - theorem open_union - theorem open_univ +/- theorem subset_interior_iff_subset_of_open +/- theorem topological_space_eq +/- theorem towards_nhds Modified topology/uniform_space.lean - theorem compact_of_totally_bounded_closed + theorem compact_of_totally_bounded_is_closed - theorem complete_of_closed + theorem complete_of_is_closed + theorem is_open_uniformity - theorem mem_uniformity_closed + theorem mem_uniformity_is_closed - theorem open_uniformity 2017-08-10 16:36:59-04:00 7882677 construct reals as complete, linear ordered field ESTIMATED CHANGES Added algebra/field.lean + theorem abs_inv + theorem div_le_iff_le_mul_of_pos + theorem inv_neg + theorem inv_sub_inv_eq + theorem ivl_stretch + theorem ivl_translate + theorem le_div_iff_mul_le_of_pos + theorem lt_div_iff Modified algebra/group.lean + theorem abs_le_iff + theorem le_sub_iff_add_le + theorem sub_le_iff_le_add Modified algebra/lattice/complete_lattice.lean + def ord_continuous + theorem ord_continuous_mono + theorem ord_continuous_sup Modified algebra/lattice/filter.lean +/- theorem Union_subset_Union2 +/- theorem Union_subset_Union +/- theorem Union_subset_Union_const +/- theorem bind_assoc + theorem classical.cases +/- theorem compl_image_set_of +/- theorem diff_empty +/- theorem diff_neq_empty +/- theorem directed_on_Union +/- theorem eq_of_sup_eq_inf_eq + theorem false_neq_true +/- theorem filter.Inf_sets_eq_finite +/- theorem filter.Inter_mem_sets +/- theorem filter.bind_def +/- theorem filter.bind_mono2 +/- theorem filter.bind_mono +/- theorem filter.bind_sup +/- theorem filter.binfi_sup_eq +/- theorem filter.empty_in_sets_eq_bot +/- theorem filter.exists_sets_subset_iff +/- theorem filter.exists_ultrafilter +/- theorem filter.filter_eq +/- theorem filter.filter_eq_bot_of_not_nonempty +/- theorem filter.fmap_principal +/- theorem filter.forall_sets_neq_empty_iff_neq_bot +/- theorem filter.image_mem_map +/- theorem filter.inf_principal +/- theorem filter.infi_neq_bot_iff_of_directed +/- theorem filter.infi_neq_bot_of_directed +/- theorem filter.infi_sets_eq' +/- theorem filter.infi_sets_eq +/- theorem filter.infi_sets_induct +/- theorem filter.infi_sup_eq +/- theorem filter.inhabited_of_mem_sets + theorem filter.inter_mem_inf_sets +/- theorem filter.inter_mem_sets +/- theorem filter.join_principal_eq_Sup +/- theorem filter.le_lift' + theorem filter.le_map_vmap' +/- theorem filter.le_map_vmap +/- theorem filter.le_of_ultrafilter +/- theorem filter.le_principal_iff +/- theorem filter.le_vmap_iff_map_le +/- theorem filter.le_vmap_map +/- theorem filter.lift'_cong +/- theorem filter.lift'_id +/- theorem filter.lift'_inf_principal_eq +/- theorem filter.lift'_infi + theorem filter.lift'_le +/- theorem filter.lift'_lift'_assoc +/- theorem filter.lift'_lift_assoc +/- theorem filter.lift'_mono' +/- theorem filter.lift'_mono +/- theorem filter.lift'_neq_bot_iff +/- theorem filter.lift'_principal +/- theorem filter.lift_assoc +/- theorem filter.lift_comm +/- theorem filter.lift_infi' +/- theorem filter.lift_infi + theorem filter.lift_le +/- theorem filter.lift_lift'_assoc +/- theorem filter.lift_lift'_same_eq_lift' +/- theorem filter.lift_lift'_same_le_lift' +/- theorem filter.lift_lift_same_eq_lift +/- theorem filter.lift_lift_same_le_lift +/- theorem filter.lift_mono' +/- theorem filter.lift_mono +/- theorem filter.lift_neq_bot_iff +/- theorem filter.lift_principal +/- theorem filter.lift_sets_eq +/- theorem filter.map_binfi_eq +/- theorem filter.map_bot +/- theorem filter.map_compose + theorem filter.map_cong +/- theorem filter.map_eq_bot_iff +/- theorem filter.map_eq_vmap_of_inverse +/- theorem filter.map_id + theorem filter.map_inf +/- theorem filter.map_infi_eq +/- theorem filter.map_infi_le + theorem filter.map_inj +/- theorem filter.map_lift'_eq2 +/- theorem filter.map_lift'_eq +/- theorem filter.map_lift_eq2 +/- theorem filter.map_lift_eq + theorem filter.map_map +/- theorem filter.map_mono + theorem filter.map_ne_bot +/- theorem filter.map_principal +/- theorem filter.map_sup +/- theorem filter.map_swap_vmap_swap_eq +/- theorem filter.map_vmap_le +/- theorem filter.mem_bind_sets +/- theorem filter.mem_bot_sets +/- theorem filter.mem_inf_sets +/- theorem filter.mem_inf_sets_of_left +/- theorem filter.mem_inf_sets_of_right +/- theorem filter.mem_infi_sets +/- theorem filter.mem_join_sets +/- theorem filter.mem_lift' +/- theorem filter.mem_lift'_iff +/- theorem filter.mem_lift +/- theorem filter.mem_lift_iff +/- theorem filter.mem_map +/- theorem filter.mem_of_finite_Union_ultrafilter +/- theorem filter.mem_of_finite_sUnion_ultrafilter +/- theorem filter.mem_or_compl_mem_of_ultrafilter +/- theorem filter.mem_or_mem_of_ultrafilter +/- theorem filter.mem_principal_sets +/- theorem filter.mem_prod_iff +/- theorem filter.mem_prod_same_iff +/- theorem filter.mem_pure +/- theorem filter.mem_return_sets +/- theorem filter.mem_sets_of_neq_bot +/- theorem filter.mem_sup_sets +/- theorem filter.mem_top_sets_iff + theorem filter.mem_vmap - theorem filter.mem_vmap_of_mem +/- theorem filter.monotone_map +/- theorem filter.monotone_mem_sets +/- theorem filter.monotone_principal +/- theorem filter.monotone_vmap +/- theorem filter.preimage_mem_vmap +/- theorem filter.principal_bind +/- theorem filter.principal_empty +/- theorem filter.principal_eq_bot_iff +/- theorem filter.principal_eq_iff_eq +/- theorem filter.principal_le_lift' +/- theorem filter.principal_mono +/- theorem filter.principal_univ +/- theorem filter.prod_comm +/- theorem filter.prod_inf_prod +/- theorem filter.prod_lift'_lift' +/- theorem filter.prod_lift_lift +/- theorem filter.prod_map_map_eq +/- theorem filter.prod_mem_prod +/- theorem filter.prod_mono +/- theorem filter.prod_neq_bot +/- theorem filter.prod_principal_principal +/- theorem filter.prod_same_eq +/- theorem filter.prod_vmap_vmap_eq +/- theorem filter.pure_def +/- theorem filter.return_neq_bot +/- theorem filter.seq_mono +/- theorem filter.sup_join +/- theorem filter.sup_principal +/- theorem filter.supr_join +/- theorem filter.supr_map +/- theorem filter.supr_principal +/- theorem filter.supr_sets_eq + theorem filter.towards_compose + theorem filter.towards_cong + theorem filter.towards_fst + theorem filter.towards_id' + theorem filter.towards_id + theorem filter.towards_inf + theorem filter.towards_map' + theorem filter.towards_map + theorem filter.towards_prod_mk + theorem filter.towards_snd + theorem filter.towards_vmap'' + theorem filter.towards_vmap' + theorem filter.towards_vmap +/- theorem filter.ultrafilter_map +/- theorem filter.ultrafilter_of_le +/- theorem filter.ultrafilter_of_spec +/- theorem filter.ultrafilter_of_split +/- theorem filter.ultrafilter_of_ultrafilter +/- theorem filter.ultrafilter_pure +/- theorem filter.ultrafilter_ultrafilter_of +/- theorem filter.ultrafilter_unique +/- theorem filter.univ_mem_sets' +/- theorem filter.univ_mem_sets + theorem filter.vmap_bot + theorem filter.vmap_inf + theorem filter.vmap_infi +/- theorem filter.vmap_lift_eq +/- theorem filter.vmap_map +/- theorem filter.vmap_mono +/- theorem filter.vmap_neq_bot +/- theorem filter.vmap_neq_bot_of_surj + theorem filter.vmap_sup +/- theorem filter.vmap_vmap_comp +/- theorem implies_implies_true_iff +/- theorem inf_eq_bot_iff_le_compl +/- theorem lattice.Inf_eq_finite_sets +/- theorem map_bind +/- theorem neg_subset_neg_iff_subset +/- theorem not_not_mem_iff + theorem not_or_iff_implies +/- theorem prod.fst_swap +/- theorem prod.mk.eta +/- theorem prod.snd_swap +/- theorem prod.swap_prod_mk +/- theorem prod.swap_swap +/- theorem prod.swap_swap_eq +/- theorem pure_seq_eq_map +/- theorem sUnion_eq_Union +/- theorem sUnion_mono +/- theorem seq_bind_eq +/- theorem seq_eq_bind_map +/- theorem set.bind_def +/- theorem set.diff_right_antimono +/- theorem set.fmap_eq_image + theorem set.image_Union - theorem set.image_eq_preimage_of_inverse + theorem set.image_inter + theorem set.image_singleton +/- theorem set.image_swap_prod - theorem set.mem_image_iff_of_inverse +/- theorem set.mem_prod_eq +/- theorem set.mem_seq_iff +/- theorem set.ne_empty_iff_exists_mem + theorem set.not_eq_empty_iff_exists +/- theorem set.prod_image_image_eq +/- theorem set.prod_inter_prod +/- theorem set.prod_mk_mem_set_prod_eq +/- theorem set.prod_mono +/- theorem set.prod_neq_empty_iff +/- theorem set.prod_singleton_singleton +/- theorem set.set_of_mem_eq + theorem set.univ_eq_true_false +/- theorem singleton_neq_emptyset Modified algebra/order.lean + theorem not_le_iff + theorem not_lt_iff + def partial_order_dual - def weak_order_dual Modified algebra/ring.lean Modified data/int/order.lean + theorem int.le_of_of_nat_le_of_nat + theorem int.of_nat_le_of_nat_of_le Modified data/nat/basic.lean + theorem nat.le_add_one_iff + theorem nat.le_zero_iff Modified data/rat.lean + theorem rat.coe_int_add + theorem rat.coe_int_eq_mk + theorem rat.coe_int_one + theorem rat.coe_int_sub + theorem rat.coe_nat_rat_eq_mk + theorem rat.exists_upper_nat_bound + theorem rat.le_of_of_int_le_of_int + def rat.nat_ceil + theorem rat.nat_ceil_add_one_eq + theorem rat.nat_ceil_lt_add_one + theorem rat.nat_ceil_min + theorem rat.nat_ceil_mono + theorem rat.nat_ceil_spec + theorem rat.nat_ceil_zero Modified data/set/basic.lean + theorem set.image_eq_preimage_of_inverse + theorem set.mem_image_iff_of_inverse + theorem set.mem_of_eq_of_mem + theorem set.set_compr_eq_eq_singleton +/- theorem set.subset.trans Modified data/set/finite.lean + theorem set.finite_le_nat Modified data/set/lattice.lean + theorem set.monotone_image Modified topology/continuity.lean - theorem classical.cases + theorem closed_diagonal + theorem closed_eq + theorem closed_prod + theorem closed_property2 + theorem closed_property3 + theorem closed_property + theorem closure_induced +/- theorem closure_prod_eq + theorem closure_subtype + theorem compact_image +/- theorem compact_pi_infinite +/- theorem continuous_Inf_dom +/- theorem continuous_Inf_rng +/- theorem continuous_Prop +/- theorem continuous_bot +/- theorem continuous_coinduced_dom +/- theorem continuous_coinduced_rng +/- theorem continuous_compose + theorem continuous_const +/- theorem continuous_eq_le_coinduced +/- theorem continuous_fst +/- theorem continuous_id + theorem continuous_iff_closed +/- theorem continuous_iff_induced_le + theorem continuous_iff_of_embedding +/- theorem continuous_iff_towards +/- theorem continuous_induced_dom +/- theorem continuous_induced_rng +/- theorem continuous_inf_dom +/- theorem continuous_inf_rng_left +/- theorem continuous_inf_rng_right +/- theorem continuous_infi_dom +/- theorem continuous_infi_rng +/- theorem continuous_inl +/- theorem continuous_inr +/- theorem continuous_prod_mk +/- theorem continuous_snd + theorem continuous_subtype_closed_cover +/- theorem continuous_subtype_mk +/- theorem continuous_subtype_nhds_cover +/- theorem continuous_subtype_val +/- theorem continuous_sum_rec +/- theorem continuous_sup_dom_left +/- theorem continuous_sup_dom_right +/- theorem continuous_sup_rng +/- theorem continuous_top + theorem dense_embedding.closure_image_univ + theorem dense_embedding.continuous_ext + def dense_embedding.ext + theorem dense_embedding.ext_e_eq + theorem dense_embedding.ext_eq + theorem dense_embedding.inj_iff + def dense_embedding.subtype_emb + theorem dense_embedding.towards_ext + theorem dense_embedding.vmap_nhds_neq_bot + structure dense_embedding + def embedding + theorem embedding_closed + theorem embedding_compose + theorem embedding_graph + theorem embedding_id + theorem embedding_of_embedding_compose + theorem embedding_open + theorem embedding_prod_mk + theorem embedding_subtype_val - theorem false_neq_true + theorem image_closure_subset_closure_image + theorem image_preimage_eq_inter_rng + theorem induced_compose + theorem induced_id + theorem induced_mono + theorem induced_sup +/- theorem map_nhds_induced_eq +/- theorem map_nhds_subtype_val_eq + theorem mem_closure_of_continuous2 + theorem mem_closure_of_continuous +/- theorem nhds_induced_eq_vmap +/- theorem nhds_pi +/- theorem nhds_prod_eq + theorem nhds_subtype_eq_vmap +/- theorem open_set_prod +/- theorem open_singleton_true +/- theorem prod_eq_generate_from +/- theorem subtype.val_image + theorem towards_nhds_iff_of_embedding - theorem univ_eq_true_false + theorem univ_prod_univ Added topology/real.lean + theorem abs_real_eq_abs + theorem closed_ge + theorem closed_imp + theorem closed_le + theorem closed_le_real + theorem closure_of_rat_image_eq + theorem compact_ivl + theorem continuous_abs_rat + theorem continuous_abs_real + theorem continuous_add_rat + theorem continuous_add_real' + theorem continuous_add_real + theorem continuous_inv_real' + theorem continuous_inv_real + theorem continuous_mul_real' + theorem continuous_mul_real + theorem continuous_neg_rat + theorem continuous_neg_real + theorem continuous_sub_real + theorem dense_embedding_of_rat + theorem dense_embedding_of_rat_of_rat + theorem eq_0_of_nonneg_of_neg_nonneg + theorem exists_lt_of_rat + theorem exists_supremum_real + theorem forall_subtype_iff + theorem gt_mem_nhds + def lift_rat_fun + theorem lift_rat_fun_of_rat + def lift_rat_op + theorem lift_rat_op_of_rat_of_rat + theorem lt_mem_nhds + theorem map_neg_rat + theorem map_neg_real + theorem mem_nonneg_of_continuous2 + theorem mem_uniformity_rat + theorem mem_uniformity_real_iff + theorem mem_zero_nhd + theorem mem_zero_nhd_iff + theorem neg_preimage_closure + theorem nhds_0_eq_zero_nhd + theorem nhds_eq_map_zero_nhd + def nonneg + def of_rat + theorem of_rat_abs + theorem of_rat_add + theorem of_rat_inv + theorem of_rat_le_of_rat + theorem of_rat_lt_of_rat + theorem of_rat_mem_nonneg + theorem of_rat_mem_nonneg_iff + theorem of_rat_mul + theorem of_rat_neg + theorem of_rat_one + theorem of_rat_sub + theorem of_rat_zero + theorem one_lt_two + theorem open_gt + theorem open_lt + theorem open_lt_real + theorem preimage_neg_rat + theorem preimage_neg_real + theorem pure_zero_le_zero_nhd + theorem quot_mk_image_univ_eq + def real + theorem totally_bounded_01_rat + theorem towards_add_rat + theorem towards_add_rat_zero' + theorem towards_add_rat_zero + theorem towards_inv_pos_rat + theorem towards_inv_rat + theorem towards_inv_real + theorem towards_mul_bnd_rat' + theorem towards_mul_bnd_rat + theorem towards_mul_rat' + theorem towards_mul_rat + theorem towards_neg_rat + theorem towards_neg_rat_zero + theorem towards_of_uniform_continuous_subtype + theorem towards_sub_rat' + theorem towards_sub_uniformity_zero_nhd' + theorem towards_sub_uniformity_zero_nhd + theorem towards_zero_nhds + theorem two_eq_of_rat_two + theorem uniform_continuous_abs_rat + theorem uniform_continuous_abs_real + theorem uniform_continuous_add_rat + theorem uniform_continuous_add_real + theorem uniform_continuous_inv_pos_rat + theorem uniform_continuous_mul_rat + theorem uniform_continuous_neg_rat + theorem uniform_continuous_neg_real + theorem uniform_continuous_rat' + theorem uniform_continuous_rat + theorem uniform_embedding_add_rat + theorem uniform_embedding_mul_rat + theorem uniform_embedding_of_rat + theorem uniformity_rat + theorem zero_le_iff_nonneg + theorem zero_lt_two + def zero_nhd Modified topology/topological_space.lean +/- theorem closed_Inter + theorem closed_Union +/- theorem closed_Union_of_locally_finite +/- theorem closed_closure + theorem closed_compl_iff - theorem closed_compl_iff_open +/- theorem closed_empty +/- theorem closed_iff_nhds + theorem closed_induced_iff + theorem closed_inter +/- theorem closed_sInter + theorem closed_singleton +/- theorem closed_union +/- theorem closed_univ +/- theorem closure_closure +/- theorem closure_compl_eq + theorem closure_diff +/- theorem closure_empty +/- theorem closure_eq_compl_interior_compl +/- theorem closure_eq_iff_closed +/- theorem closure_eq_nhds +/- theorem closure_eq_of_closed + theorem closure_inter_open +/- theorem closure_minimal +/- theorem closure_mono + theorem closure_singleton +/- theorem closure_subset_iff_subset_of_closed +/- theorem closure_union +/- theorem closure_univ +/- def compact +/- theorem compact_adherence_nhdset + theorem compact_elim_finite_subcover + theorem compact_elim_finite_subcover_image + theorem compact_empty + theorem compact_iff_finite_subcover +/- theorem compact_iff_ultrafilter_le_nhds + theorem compact_of_closed_subset + theorem compact_of_finite_subcover + theorem compact_singleton + theorem compl_singleton_mem_nhds + theorem compl_subset_of_compl_subset + theorem diff_subset_diff +/- theorem eq_of_nhds_eq_nhds +/- theorem eq_of_nhds_neq_bot - theorem finite_subcover_of_compact +/- theorem generate_from_le +/- theorem interior_compl_eq +/- theorem interior_empty +/- theorem interior_eq_iff_open +/- theorem interior_eq_nhds +/- theorem interior_eq_of_open +/- theorem interior_inter +/- theorem interior_interior +/- theorem interior_maximal +/- theorem interior_mono +/- theorem interior_subset +/- theorem interior_subset_closure +/- theorem interior_union_closed_of_interior_empty +/- theorem interior_univ +/- theorem le_of_nhds_le_nhds + theorem lim_eq + theorem lim_nhds_eq + theorem lim_nhds_eq_of_closure + theorem lim_spec + theorem locally_finite_of_finite + theorem locally_finite_subset +/- theorem map_nhds +/- theorem mem_nhds_sets +/- theorem mem_nhds_sets_iff + theorem mem_of_mem_of_subset + theorem mem_of_nhds + theorem nhds_closed + theorem nhds_eq_nhds_iff + theorem nhds_le_nhds_iff +/- theorem nhds_mono +/- theorem nhds_neq_bot +/- theorem nhds_sets +/- theorem nhds_supr + theorem not_and_iff_imp_not - theorem not_eq_empty_iff_exists +/- theorem open_Union + theorem open_compl_iff - theorem open_compl_iff_closed +/- theorem open_diff +/- theorem open_empty +/- theorem open_iff_nhds +/- theorem open_inter +/- theorem open_interior +/- theorem open_sUnion + theorem open_union +/- theorem open_univ +/- theorem return_le_nhds +/- theorem subset_closure +/- theorem subset_interior_iff_subset_of_open +/- theorem sup_eq_generate_from +/- theorem supr_eq_generate_from + theorem t2_separation +/- theorem t2_space_top +/- theorem topological_space.nhds_generate_from +/- theorem topological_space_eq + theorem towards_const_nhds + theorem towards_nhds + theorem towards_nhds_unique + theorem univ_subtype Modified topology/uniform_space.lean +/- theorem Cauchy.monotone_gen +/- theorem Cauchy.pure_cauchy_dense +/- theorem Cauchy.uniform_embedding_pure_cauchy - def cauchy +/- theorem cauchy_downwards +/- theorem cauchy_map +/- theorem cauchy_nhds +/- theorem cauchy_of_totally_bounded_of_ultrafilter +/- theorem cauchy_pure +/- theorem cauchy_vmap +/- theorem closure_eq_inter_uniformity + theorem closure_image_mem_nhds_of_uniform_embedding +/- theorem comp_le_uniformity3 +/- theorem comp_le_uniformity +/- theorem comp_mem_uniformity_sets +/- def comp_rel +/- theorem comp_symm_of_uniformity +/- theorem compact_of_totally_bounded_closed +/- theorem compact_of_totally_bounded_complete +/- theorem complete_of_closed +/- theorem complete_space_extension +/- theorem complete_space_separation +/- theorem continuous_of_uniform + theorem dense_embedding_of_uniform_embedding + theorem forall_quotient_iff +/- theorem id_comp_rel +/- theorem interior_mem_uniformity +/- theorem le_nhds_iff_adhp_of_cauchy +/- theorem le_nhds_of_cauchy_adhp +/- theorem lift_nhds_left +/- theorem lift_nhds_right +/- theorem mem_nhds_left +/- theorem mem_nhds_right +/- theorem mem_nhds_uniformity_iff + theorem mem_uniform_prod + theorem mem_uniformity_closed +/- theorem nhds_eq_uniformity +/- theorem nhds_eq_uniformity_prod +/- theorem nhds_nhds_eq_uniformity_uniformity_prod +/- theorem nhdset_of_mem_uniformity + theorem open_uniformity +/- theorem prod_mk_mem_comp_rel +/- theorem refl_le_uniformity +/- theorem refl_mem_uniformity - def separated +/- theorem separated_equiv + theorem separated_separation + theorem sup_uniformity +/- theorem supr_uniformity +/- theorem symm_le_uniformity +/- theorem symm_of_uniformity + theorem to_topological_space_Sup +/- theorem to_topological_space_bot +/- theorem to_topological_space_mono + theorem to_topological_space_prod + theorem to_topological_space_subtype + theorem to_topological_space_sup +/- theorem to_topological_space_supr +/- theorem to_topological_space_top + theorem totally_bounded_closure +/- theorem totally_bounded_iff_filter +/- theorem totally_bounded_iff_ultrafilter + theorem totally_bounded_image + theorem totally_bounded_subset + theorem towards_const_uniformity + theorem towards_left_nhds_uniformity + theorem towards_prod_uniformity_fst + theorem towards_prod_uniformity_snd + theorem towards_right_nhds_uniformity + theorem towards_swap_uniformity - def uniform_continuous + theorem uniform_continuous_compose + theorem uniform_continuous_const + theorem uniform_continuous_fst +/- theorem uniform_continuous_of_embedding + theorem uniform_continuous_prod_mk +/- theorem uniform_continuous_quotient_mk + theorem uniform_continuous_snd + theorem uniform_continuous_subtype_mk + theorem uniform_continuous_subtype_val +/- theorem uniform_continuous_uniformly_extend + theorem uniform_continuous_vmap' +/- theorem uniform_continuous_vmap - def uniform_embedding + theorem uniform_embedding_prod + theorem uniform_embedding_subtype_emb + theorem uniform_extend_subtype + def uniform_space.core.to_topological_space + structure uniform_space.core + theorem uniform_space.core_eq + def uniform_space.of_core + def uniform_space.of_core_eq + theorem uniform_space.of_core_eq_to_core + theorem uniform_space.to_core_to_topological_space +/- theorem uniform_space_eq +/- def uniformity +/- theorem uniformity_eq_symm +/- theorem uniformity_eq_uniformity_closure +/- theorem uniformity_eq_uniformity_interior +/- theorem uniformity_le_symm +/- theorem uniformity_lift_le_comp + theorem uniformity_prod + theorem uniformity_subtype + theorem uniformly_extend_exists +/- theorem uniformly_extend_of_emb +/- theorem uniformly_extend_spec - theorem uniformly_extend_unique + theorem vmap_quotient_eq_uniformity +/- theorem vmap_quotient_le_uniformity 2017-08-02 22:32:47+01:00 64b6151 refactor(data/set/basic,*): vimage -> preimage, add notation ESTIMATED CHANGES Modified algebra/lattice/filter.lean +/- theorem filter.mem_vmap_of_mem + theorem filter.preimage_mem_vmap - theorem filter.vimage_mem_vmap +/- theorem filter.vmap_principal + theorem set.image_eq_preimage_of_inverse - theorem set.image_eq_vimage_of_inverse + theorem set.image_swap_eq_preimage_swap - theorem set.image_swap_eq_vimage_swap + theorem set.preimage_set_of_eq + theorem set.prod_preimage_eq - theorem set.prod_vimage_eq - theorem set.vimage_set_of_eq Modified data/set/basic.lean + theorem set.eq_preimage_subtype_val_iff - theorem set.eq_vimage_subtype_val_iff +/- theorem set.image_comp +/- theorem set.image_empty +/- theorem set.image_id +/- theorem set.image_subset + theorem set.image_subset_iff_subset_preimage - theorem set.image_subset_iff_subset_vimage +/- def set.mem_image_elim_on +/- theorem set.mem_image_eq +/- theorem set.mem_image_of_mem + theorem set.mem_preimage_eq - theorem set.mem_vimage_eq +/- theorem set.mono_image + def set.preimage + theorem set.preimage_comp + theorem set.preimage_compl + theorem set.preimage_empty + theorem set.preimage_id + theorem set.preimage_image_eq + theorem set.preimage_inter + theorem set.preimage_mono + theorem set.preimage_union + theorem set.preimage_univ - def set.vimage - theorem set.vimage_comp - theorem set.vimage_compl - theorem set.vimage_empty - theorem set.vimage_id - theorem set.vimage_image_eq - theorem set.vimage_inter - theorem set.vimage_mono - theorem set.vimage_union - theorem set.vimage_univ Modified data/set/lattice.lean + theorem set.monotone_preimage - theorem set.monotone_vimage + theorem set.preimage_Union + theorem set.preimage_sUnion - theorem set.vimage_Union - theorem set.vimage_sUnion Modified topology/continuity.lean +/- def continuous +/- theorem open_induced Modified topology/topological_space.lean Modified topology/uniform_space.lean 2017-08-02 22:17:36+01:00 41a2376 refactor(algebra/group,group_power): clean up proofs ESTIMATED CHANGES Modified algebra/group.lean +/- theorem eq_iff_eq_of_sub_eq_sub +/- theorem eq_iff_sub_eq_zero +/- theorem eq_inv_iff_eq_inv +/- theorem eq_of_mul_inv_eq_one +/- theorem eq_one_of_inv_eq_one +/- theorem eq_sub_iff_add_eq +/- theorem inv_eq_inv_iff_eq +/- theorem inv_eq_one_iff_eq_one +/- theorem left_inverse_add_left_sub +/- theorem left_inverse_add_right_neg_add +/- theorem left_inverse_inv +/- theorem left_inverse_neg_add_add_right +/- theorem left_inverse_sub_add_left +/- theorem mul_eq_iff_eq_inv_mul +/- theorem mul_eq_iff_eq_mul_inv +/- theorem sub_eq_iff_eq_add Modified algebra/group_power.lean - theorem gpow_comm + theorem gpow_mul_comm +/- theorem one_pow +/- theorem pow_add - theorem pow_comm +/- def pow_int + theorem pow_mul_comm' + theorem pow_mul_comm +/- def pow_nat +/- theorem pow_succ' +/- theorem pow_succ 2017-08-02 16:24:02+01:00 3e9e4b6 refactor(*): move theorems and do minor polishing ESTIMATED CHANGES Modified data/bool.lean Modified data/list/basic.lean +/- theorem list.concat_cons Modified data/list/sort.lean - theorem nat.add_pos_iff_pos_or_pos - theorem nat.add_pos_left - theorem nat.add_pos_right - theorem nat.lt_succ_iff_le - theorem nat.succ_le_succ_iff Modified data/nat/basic.lean + theorem nat.add_pos_iff_pos_or_pos + theorem nat.add_pos_left + theorem nat.add_pos_right + theorem nat.lt_succ_iff_le + theorem nat.succ_le_succ_iff Modified logic/basic.lean + theorem and_implies_iff + theorem bexists_def + theorem iff_def + theorem implies_and_iff Modified tactic/finish.lean - theorem curry_iff - theorem iff_def - theorem implies_and_iff - theorem {u} 2017-08-02 16:21:24+01:00 da0c346 fix(*): fix wrt changes in lean ESTIMATED CHANGES Modified algebra/lattice/bounded_lattice.lean Modified algebra/lattice/complete_lattice.lean - theorem lattice.Inf_le_iff + theorem lattice.Sup_le_iff + theorem lattice.le_Inf_iff - theorem lattice.le_Sup_iff Modified algebra/lattice/filter.lean +/- theorem directed_of_chain +/- def filter.at_bot +/- def filter.at_top +/- theorem filter.monotone_lift' +/- theorem filter.monotone_lift - theorem lattice.Sup_le_iff +/- theorem set.monotone_inter +/- theorem set.monotone_prod +/- theorem set.monotone_set_of Modified algebra/lattice/fixed_points.lean +/- theorem ge_of_eq Modified algebra/order.lean +/- theorem comp_le_comp_left_of_monotone Modified data/num/lemmas.lean Modified data/set/basic.lean +/- theorem set.mem_set_of_eq Modified tactic/alias.lean - def tactic.alias.alias_attr Modified topology/uniform_space.lean +/- theorem monotone_comp_rel 2017-08-02 15:24:33+01:00 6392b05 refactor(*): switch from order_pair to partial_order ESTIMATED CHANGES Modified algebra/lattice/basic.lean +/- theorem le_antisymm' Modified algebra/lattice/bounded_lattice.lean Modified algebra/lattice/complete_lattice.lean Modified algebra/lattice/filter.lean +/- theorem directed_of_chain +/- def filter.at_bot +/- def filter.at_top +/- theorem filter.monotone_lift' +/- theorem filter.monotone_lift +/- theorem set.monotone_inter +/- theorem set.monotone_prod +/- theorem set.monotone_set_of Modified algebra/lattice/fixed_points.lean +/- theorem ge_of_eq +/- theorem lattice.gfp_comp +/- theorem lattice.lfp_comp Modified algebra/lattice/zorn.lean + theorem zorn.zorn_partial_order - theorem zorn.zorn_weak_order Modified algebra/order.lean +/- theorem comp_le_comp_left_of_monotone +/- theorem le_dual_eq_le +/- def weak_order_dual Modified data/hash_map.lean Modified data/list/set.lean Modified data/num/lemmas.lean Modified data/rat.lean +/- def rat.mk_nat +/- def rat.mk_pnat Modified data/set/lattice.lean Modified logic/basic.lean +/- theorem eq_iff_le_and_le Modified topology/topological_space.lean Modified topology/uniform_space.lean +/- theorem monotone_comp_rel 2017-08-01 03:44:00+01:00 fe81186 fix(tactic/alias): autogenerated alias names ESTIMATED CHANGES Modified tactic/alias.lean 2017-08-01 02:30:49+01:00 1191b4d feat(tactic/alias): support biconditional aliases ESTIMATED CHANGES Modified tactic/alias.lean - def alias_attr + def tactic.alias.alias_attr 2017-08-01 00:53:25+01:00 fb21c1a feat(tactic/alias): alias command ESTIMATED CHANGES Added tactic/alias.lean + def alias_attr 2017-07-30 00:50:04+01:00 8f65496 feat(data/fp): first pass at a floating point model Hopefully this will be eventually moved to init so it can get a native representation. ESTIMATED CHANGES Added data/fp/basic.lean + def fp.div_nat_lt_two_pow + def fp.emax + def fp.emin + def fp.float.default_nan + def fp.float.is_finite + theorem fp.float.zero.valid + def fp.float.zero + inductive fp.float + structure fp.nan_pl + def fp.prec + inductive fp.rmode + def fp.shift2 + def fp.to_rat + def fp.valid_finite 2017-07-30 00:48:02+01:00 bce43b3 feat(data/rat): new rat representation using canonical elements This yields better performance in long rational computations provided the numbers can be simplified. ESTIMATED CHANGES Modified algebra/group.lean Modified data/int/basic.lean + theorem int.coe_nat_dvd_left + theorem int.coe_nat_dvd_right + theorem int.div_sign + theorem int.nat_abs_add_le + theorem int.nat_abs_mul + theorem int.nat_abs_neg_of_nat + theorem int.nat_succ_eq_int_succ + theorem int.neg_nat_succ + theorem int.neg_pred + theorem int.neg_succ + theorem int.neg_succ_of_nat_eq' + def int.pred + theorem int.pred_nat_succ + theorem int.pred_neg_pred + theorem int.pred_succ + theorem int.sign_mul + def int.succ + theorem int.succ_neg_nat_succ + theorem int.succ_neg_succ + theorem int.succ_pred Modified data/nat/basic.lean Modified data/nat/gcd.lean - theorem nat.comprime_one_left - theorem nat.comprime_one_right + theorem nat.coprime_one_left + theorem nat.coprime_one_right Modified data/num/lemmas.lean Modified data/rat.lean +/- theorem linear_order_cases_on_eq +/- theorem linear_order_cases_on_gt +/- theorem linear_order_cases_on_lt - theorem not_antimono + theorem rat.add_def + def rat.ceil + theorem rat.div_mk_div_cancel_left + def rat.floor + theorem rat.inv_def + theorem rat.lift_binop_eq + def rat.mk + theorem rat.mk_eq + theorem rat.mk_eq_zero + def rat.mk_nat + theorem rat.mk_nat_eq + theorem rat.mk_nonneg + def rat.mk_pnat + theorem rat.mk_pnat_eq + theorem rat.mk_zero + theorem rat.mul_def + theorem rat.neg_def + theorem rat.nonneg_iff_zero_le + theorem rat.num_denom' + theorem rat.num_denom + def rat.of_int + theorem rat.zero_mk + theorem rat.zero_mk_nat + theorem rat.zero_mk_pnat + theorem rat.{u} + structure rat - def rat Modified data/seq/computation.lean Modified data/seq/seq.lean Modified pending/default.lean Modified tactic/converter/binders.lean +/- theorem mem_image 2017-07-28 16:56:17+01:00 bfe2db7 fix(*): adapt to lean ESTIMATED CHANGES Modified algebra/group.lean Modified data/list/basic.lean - def list.filter_map Modified data/rat.lean Modified pending/default.lean - theorem nat.shiftl_succ - theorem nat.shiftl_zero Modified tactic/converter/binders.lean 2017-07-27 14:02:57+01:00 b37966e chore(.travis.yml): add Travis CI support ESTIMATED CHANGES Added .travis.yml Modified README.md 2017-07-26 14:25:09+01:00 b8ea20f fix(data): bitvec and vector are in the main repo ESTIMATED CHANGES Deleted data/bitvec.lean - def bitvec.adc - def bitvec.add_lsb - def bitvec.and - def bitvec.append - def bitvec.bits_to_nat - theorem bitvec.bits_to_nat_to_bool - theorem bitvec.bits_to_nat_to_list - def bitvec.fill_shr - def bitvec.not - theorem bitvec.of_nat_succ - def bitvec.or - def bitvec.sbb - def bitvec.sborrow - def bitvec.sge - def bitvec.sgt - def bitvec.shl - def bitvec.sle - def bitvec.slt - def bitvec.sshr - theorem bitvec.to_nat_append - theorem bitvec.to_nat_of_nat - def bitvec.uborrow - def bitvec.uge - def bitvec.ugt - def bitvec.ule - def bitvec.ult - def bitvec.ushr - def bitvec.xor - def bitvec Modified data/list/basic.lean - theorem list.eq_nil_of_length_eq_zero - theorem list.length_map₂ - theorem list.length_remove_nth - theorem list.length_take - theorem list.length_take_le - def list.map₂ - theorem list.ne_nil_of_length_eq_succ - def list.nth_le - def list.remove_nth - def list.update_nth Modified data/list/comb.lean - theorem list.length_map_accumr - theorem list.length_map_accumr₂ - def list.map_accumr - def list.map_accumr₂ Modified data/nat/basic.lean - theorem nat.add_div_left - theorem nat.add_div_right - theorem nat.add_mod_left - theorem nat.add_mod_right - theorem nat.add_mul_div_left - theorem nat.add_mul_div_right - theorem nat.add_mul_mod_self_left - theorem nat.add_mul_mod_self_right - theorem nat.add_one_ne_zero - theorem nat.binary_rec_eq - theorem nat.bitwise_bit - theorem nat.bitwise_bit_aux - theorem nat.bitwise_swap - theorem nat.bitwise_zero - theorem nat.bitwise_zero_left - theorem nat.bitwise_zero_right - theorem nat.bodd_bit - theorem nat.cond_to_bool_mod_two - theorem nat.discriminate - theorem nat.div2_bit - theorem nat.div_mul_le_self - theorem nat.dvd_antisymm - theorem nat.dvd_iff_mod_eq_zero - theorem nat.dvd_mod_iff - theorem nat.dvd_of_mod_eq_zero - theorem nat.dvd_of_mul_dvd_mul_left - theorem nat.dvd_of_mul_dvd_mul_right - theorem nat.dvd_sub - theorem nat.eq_one_of_dvd_one - theorem nat.eq_zero_of_add_eq_zero - theorem nat.eq_zero_of_mul_eq_zero - theorem nat.eq_zero_or_eq_succ_pred - theorem nat.exists_eq_succ_of_ne_zero - def nat.iterate - theorem nat.land_bit - theorem nat.ldiff_bit - theorem nat.le_lt_antisymm - theorem nat.le_mul_self - theorem nat.le_of_dvd - theorem nat.le_succ_of_pred_le - theorem nat.lor_bit - theorem nat.lt_le_antisymm - theorem nat.lt_succ_of_lt - theorem nat.lxor_bit - theorem nat.min_succ_succ - theorem nat.mod_eq_zero_of_dvd - theorem nat.mod_le - theorem nat.mod_pow_succ - theorem nat.mul_div_left - theorem nat.mul_div_right - theorem nat.mul_mod_left - theorem nat.mul_mod_mul_left - theorem nat.mul_mod_mul_right - theorem nat.mul_mod_right - theorem nat.mul_pred_left - theorem nat.mul_pred_right - theorem nat.mul_self_le_mul_self - theorem nat.mul_self_le_mul_self_iff - theorem nat.mul_self_lt_mul_self - theorem nat.mul_self_lt_mul_self_iff - theorem nat.mul_sub_div - theorem nat.one_add - def nat.one_pos - theorem nat.one_shiftl - theorem nat.one_succ_zero - theorem nat.pos_of_dvd_of_pos - theorem nat.pos_pow_of_pos - theorem nat.pow_le_pow_of_le_left - theorem nat.pow_le_pow_of_le_right - theorem nat.pow_lt_pow_of_lt_left - theorem nat.pow_lt_pow_of_lt_right - theorem nat.pow_one - theorem nat.pred_inj - theorem nat.shiftl'_add - theorem nat.shiftl'_sub - theorem nat.shiftl'_tt_eq_mul_pow - theorem nat.shiftl_add - theorem nat.shiftl_eq_mul_pow - theorem nat.shiftl_sub - theorem nat.shiftr_add - theorem nat.shiftr_eq_div_pow - theorem nat.sub_add_min_cancel - theorem nat.sub_eq_sub_min - theorem nat.sub_induction - theorem nat.sub_mul_div - theorem nat.sub_mul_mod - theorem nat.sub_one_sub_lt - theorem nat.succ_add_eq_succ_add - theorem nat.succ_inj - theorem nat.succ_mul_succ_eq - theorem nat.succ_sub - theorem nat.succ_sub_sub_succ - theorem nat.test_bit_bitwise - theorem nat.test_bit_land - theorem nat.test_bit_ldiff - theorem nat.test_bit_lor - theorem nat.test_bit_lxor - theorem nat.test_bit_succ - theorem nat.test_bit_zero - theorem nat.two_step_induction - theorem nat.zero_pow - theorem nat.zero_shiftl - theorem nat.zero_shiftr Modified data/num/basic.lean Deleted data/vector.lean - def vector.append - def vector.cons - theorem vector.cons_head_tail - def vector.drop - def vector.elim - def vector.head - theorem vector.head_cons - def vector.length - def vector.map - def vector.map_accumr - def vector.map_accumr₂ - theorem vector.map_cons - theorem vector.map_nil - def vector.map₂ - def vector.nil - def vector.nth - def vector.of_fn - def vector.remove_nth - def vector.repeat - def vector.tail - theorem vector.tail_cons - def vector.take - def vector.to_list - theorem vector.to_list_append - theorem vector.to_list_cons - theorem vector.to_list_drop - theorem vector.to_list_length - theorem vector.to_list_mk - theorem vector.to_list_nil - theorem vector.to_list_take - def vector 2017-07-25 13:51:39+01:00 9451087 refactor(*): move in list lemmas, adapt to change in list.union ESTIMATED CHANGES Modified data/hash_map.lean + theorem hash_map.insert_lemma - theorem hash_map.insert_theorem Modified data/list/basic.lean + def list.concat + theorem list.concat_eq_append + def list.filter_map + def list.find + def list.find_indexes + def list.find_indexes_aux + theorem list.index_of_cons_eq + theorem list.index_of_cons_ne - theorem list.index_of_cons_of_eq - theorem list.index_of_cons_of_ne + theorem list.index_of_cons_self + theorem list.index_of_eq_length +/- theorem list.index_of_lt_length +/- theorem list.index_of_nth + theorem list.index_of_nth_le +/- theorem list.index_of_of_not_mem + def list.indexes_of + def list.inits + def list.is_infix + def list.is_prefix + def list.is_suffix + theorem list.length_concat + theorem list.map_concat + def list.map₂ - theorem list.mem_append_of_mem_or_mem - theorem list.mem_or_mem_of_mem_append +/- theorem list.mem_split +/- theorem list.not_mem_append - theorem list.not_mem_of_index_of_eq_length - theorem list.not_mem_of_not_mem_append_left - theorem list.not_mem_of_not_mem_append_right + def list.nth_le + def list.remove_nth + def list.scanl + def list.scanr + def list.scanr_aux + def list.split_at +/- theorem list.sublist.refl +/- theorem list.sublist.trans + def list.sublists + def list.sublists_aux + def list.sum + def list.tails + def list.take_while + def list.to_array + def list.transpose + def list.transpose_aux + def list.update_nth Modified data/list/comb.lean Modified data/list/perm.lean +/- theorem list.perm.perm_insert +/- theorem list.perm.perm_insert_insert Modified data/list/set.lean + theorem list.cons_union - theorem list.disjoint.comm + theorem list.disjoint.symm + theorem list.disjoint_comm - theorem list.disjoint_nil_right + theorem list.disjoint_singleton - theorem list.erase_cons +/- theorem list.erase_dup_cons_of_mem +/- theorem list.erase_dup_cons_of_not_mem +/- theorem list.erase_dup_eq_of_nodup +/- theorem list.erase_dup_nil +/- theorem list.erase_nil +/- theorem list.insert.def +/- theorem list.insert_of_not_mem +/- theorem list.mem_erase_dup - theorem list.mem_erase_dup_iff +/- theorem list.mem_insert_iff - theorem list.mem_of_mem_erase_dup +/- theorem list.mem_or_mem_of_mem_union +/- theorem list.mem_union_iff + theorem list.nil_union + theorem list.nodup_append - theorem list.nodup_append_of_nodup_of_nodup_of_disjoint + theorem list.nodup_union - theorem list.nodup_union_of_nodup_of_nodup + theorem list.singleton_disjoint - theorem list.union_cons - theorem list.union_nil Modified data/set/basic.lean +/- theorem set.mem_empty_eq +/- theorem set.mem_image_eq +/- theorem set.mem_sep_eq Modified logic/basic.lean +/- theorem set_of_subset_set_of Modified tactic/finish.lean 2017-07-24 00:42:20+01:00 aa78466 refactor(*): move in some nat lemmas and other lemmas from init ESTIMATED CHANGES Added data/array/lemmas.lean + theorem array.mem_iff_list_mem + theorem array.mem_iff_rev_list_mem + theorem array.mem_iff_rev_list_mem_core + theorem array.push_back_rev_list + theorem array.push_back_rev_list_core + theorem array.push_back_to_list + def array.read_foreach + def array.read_foreach_aux + def array.read_map + def array.read_map₂ + theorem array.read_write + theorem array.read_write_eq + theorem array.read_write_ne + theorem array.rev_list_length + theorem array.rev_list_length_aux + theorem array.rev_list_reverse + theorem array.rev_list_reverse_core + theorem array.to_array_to_list + theorem array.to_list_length + theorem array.to_list_nth + theorem array.to_list_nth_core + theorem array.to_list_reverse + theorem array.to_list_to_array Modified data/bitvec.lean Modified data/fin.lean - theorem lt_succ_of_lt Modified data/hash_map.lean Modified data/int/basic.lean + theorem int.abs_div_le_abs + theorem int.add_mod_eq_add_mod_left + theorem int.add_mod_eq_add_mod_right + theorem int.add_mod_mod + theorem int.add_mod_self + theorem int.add_mod_self_left + theorem int.add_mul_mod_self + theorem int.add_mul_mod_self_left + theorem int.bit0_val + theorem int.bit1_val + theorem int.bit_coe_nat + theorem int.bit_decomp + theorem int.bit_neg_succ + theorem int.bit_val + theorem int.bit_zero + theorem int.bitwise_and + theorem int.bitwise_bit + theorem int.bitwise_diff + theorem int.bitwise_or + theorem int.bitwise_xor + theorem int.bodd_add + theorem int.bodd_add_div2 + theorem int.bodd_bit + theorem int.bodd_mul + theorem int.bodd_neg + theorem int.bodd_neg_of_nat + theorem int.bodd_one + theorem int.bodd_sub_nat_nat + theorem int.bodd_two + theorem int.bodd_zero + theorem int.coe_nat_dvd_coe_nat_iff + theorem int.coe_nat_dvd_coe_nat_of_dvd + theorem int.div2_bit + theorem int.div2_val + theorem int.div_dvd_div + theorem int.div_eq_div_of_mul_eq_mul + theorem int.div_eq_zero_of_lt + theorem int.div_eq_zero_of_lt_abs + theorem int.div_le_self + theorem int.div_mul_cancel_of_mod_eq_zero + theorem int.div_neg' + theorem int.div_of_neg_of_pos + theorem int.div_pos_of_pos_of_dvd + theorem int.dvd_antisymm + theorem int.dvd_iff_mod_eq_zero + theorem int.dvd_of_coe_nat_dvd_coe_nat + theorem int.dvd_of_mod_eq_zero + theorem int.eq_one_of_dvd_one + theorem int.eq_one_of_mul_eq_one_left + theorem int.eq_one_of_mul_eq_one_right + theorem int.land_bit + theorem int.ldiff_bit + theorem int.le_of_dvd + theorem int.lnot_bit + theorem int.lor_bit + theorem int.lt_div_add_one_mul_self + theorem int.lxor_bit + theorem int.mod_abs + theorem int.mod_add_div + theorem int.mod_add_div_aux + theorem int.mod_add_mod + theorem int.mod_def + theorem int.mod_eq_mod_of_add_mod_eq_add_mod_left + theorem int.mod_eq_mod_of_add_mod_eq_add_mod_right + theorem int.mod_eq_of_lt + theorem int.mod_eq_zero_of_dvd + theorem int.mod_lt + theorem int.mod_lt_of_pos + theorem int.mod_neg + theorem int.mod_nonneg + theorem int.mod_one + theorem int.mod_self + theorem int.mod_zero + theorem int.mul_div_cancel_of_mod_eq_zero + theorem int.mul_div_mul_of_pos + theorem int.mul_div_mul_of_pos_left + theorem int.mul_mod_left + theorem int.mul_mod_mul_of_pos + theorem int.mul_mod_right + theorem int.neg_div_of_dvd + theorem int.neg_succ_of_nat_div + theorem int.neg_succ_of_nat_mod + theorem int.of_nat_div + theorem int.of_nat_mod + theorem int.one_shiftl + theorem int.shiftl_add + theorem int.shiftl_coe_nat + theorem int.shiftl_eq_mul_pow + theorem int.shiftl_neg + theorem int.shiftl_neg_succ + theorem int.shiftl_sub + theorem int.shiftr_add + theorem int.shiftr_coe_nat + theorem int.shiftr_eq_div_pow + theorem int.shiftr_neg + theorem int.shiftr_neg_succ + theorem int.test_bit_bitwise + theorem int.test_bit_land + theorem int.test_bit_ldiff + theorem int.test_bit_lnot + theorem int.test_bit_lor + theorem int.test_bit_lxor + theorem int.test_bit_succ + theorem int.test_bit_zero + theorem int.zero_mod + theorem int.zero_shiftl + theorem int.zero_shiftr + def int.{u} - def nat_succ_eq_int_succ - theorem neg_nat_succ - theorem neg_pred - theorem neg_succ - theorem neg_succ_of_nat_eq' - theorem of_nat_sub - def pred - theorem pred_nat_succ - theorem pred_neg_pred - theorem pred_succ - def rec_nat_on - theorem rec_nat_on_neg - def succ - theorem succ_neg_nat_succ - theorem succ_neg_succ - theorem succ_pred Modified data/int/order.lean + theorem int.exists_greatest_of_bdd + theorem int.exists_least_of_bdd Modified data/list/basic.lean + theorem list.app_subset_of_subset_of_subset - theorem list.append.assoc + theorem list.append_foldl + theorem list.append_foldr + theorem list.append_inj + theorem list.append_inj_left + theorem list.append_inj_right + theorem list.append_ne_nil_of_ne_nil_left + theorem list.append_ne_nil_of_ne_nil_right + theorem list.append_right_inj + theorem list.concat_eq_reverse_cons + theorem list.cons_head_tail +/- theorem list.cons_ne_nil + theorem list.cons_sublist_cons + theorem list.cons_subset_of_subset_of_mem + theorem list.eq_nil_of_forall_not_mem + theorem list.eq_nil_of_infix_nil + theorem list.eq_nil_of_length_eq_zero + theorem list.eq_nil_of_map_eq_nil + theorem list.eq_nil_of_prefix_nil + theorem list.eq_nil_of_sublist_nil + theorem list.eq_nil_of_subset_nil + theorem list.eq_nil_of_suffix_nil + theorem list.eq_of_map_const + theorem list.exists_of_mem_bind + theorem list.exists_of_mem_join + theorem list.exists_of_mem_map + theorem list.ext + theorem list.ext_le + theorem list.filter_subset + theorem list.foldl_hom + theorem list.foldl_map + theorem list.foldr_eta + theorem list.foldr_hom + theorem list.foldr_map + theorem list.head_append + theorem list.infix_append + theorem list.infix_iff_prefix_suffix + theorem list.infix_of_prefix + theorem list.infix_of_suffix + theorem list.infix_refl +/- def list.inth - theorem list.inth_succ - theorem list.inth_zero - def list.ith - theorem list.ith_succ - theorem list.ith_zero + theorem list.last_append + theorem list.last_concat + theorem list.last_cons + theorem list.length_le_of_infix + theorem list.length_map₂ + theorem list.length_pos_of_mem + theorem list.length_remove_nth + theorem list.length_reverse + theorem list.length_take + theorem list.length_take_le - theorem list.length_taken_le + theorem list.map_id' + theorem list.map_reverse + theorem list.mem_append_of_mem_or_mem + theorem list.mem_bind + theorem list.mem_bind_iff + theorem list.mem_filter_of_mem + theorem list.mem_inits + theorem list.mem_join + theorem list.mem_join_iff + theorem list.mem_map + theorem list.mem_map_iff + theorem list.mem_of_mem_cons_of_mem + theorem list.mem_of_mem_filter + theorem list.mem_of_ne_of_mem + theorem list.mem_or_mem_of_mem_append + theorem list.mem_reverse + theorem list.mem_singleton + theorem list.mem_singleton_iff + theorem list.mem_split + theorem list.mem_sublists + theorem list.mem_tails + theorem list.ne_and_not_mem_of_not_mem_cons + theorem list.ne_nil_of_length_eq_succ + theorem list.ne_of_not_mem_cons + theorem list.nil_sublist + theorem list.not_mem_append + theorem list.not_mem_cons_of_ne_of_not_mem + theorem list.not_mem_of_not_mem_append_left + theorem list.not_mem_of_not_mem_append_right + theorem list.not_mem_of_not_mem_cons - theorem list.nth_eq_some + theorem list.nth_ge_len + theorem list.nth_le_nth + theorem list.nth_le_reverse + theorem list.nth_le_reverse_aux1 + theorem list.nth_le_reverse_aux2 + theorem list.of_mem_filter + theorem list.prefix_append + theorem list.prefix_refl + theorem list.reverse_append + theorem list.reverse_cons + theorem list.reverse_nil + theorem list.reverse_reverse + theorem list.reverse_singleton + theorem list.scanr_aux_cons + theorem list.scanr_cons + theorem list.scanr_nil + theorem list.span_eq_take_drop + theorem list.split_at_eq_take_drop + theorem list.sublist.refl + theorem list.sublist.trans + theorem list.sublist_app_of_sublist_left + theorem list.sublist_app_of_sublist_right + theorem list.sublist_append_left + theorem list.sublist_append_right + theorem list.sublist_cons + theorem list.sublist_cons_of_sublist + theorem list.sublist_of_cons_sublist + theorem list.sublist_of_cons_sublist_cons + theorem list.sublist_of_infix + theorem list.sublists_aux_cons_cons + theorem list.sublists_aux_eq_foldl + theorem list.subset_app_of_subset_left + theorem list.subset_app_of_subset_right + theorem list.subset_of_sublist + theorem list.suffix_append + theorem list.suffix_refl + theorem list.take_all + theorem list.take_all_of_ge + theorem list.take_append_drop + theorem list.take_cons + theorem list.take_nil + theorem list.take_take + theorem list.take_while_append_drop + theorem list.take_zero - theorem list.taken_all - theorem list.taken_all_of_ge - theorem list.taken_cons - theorem list.taken_nil - theorem list.taken_zero Modified data/list/perm.lean Modified data/nat/basic.lean - def iterate + theorem nat.add_div_left + theorem nat.add_div_right + theorem nat.add_mod_left + theorem nat.add_mod_right + theorem nat.add_mul_div_left + theorem nat.add_mul_div_right + theorem nat.add_mul_mod_self_left + theorem nat.add_mul_mod_self_right - theorem nat.add_one + theorem nat.binary_rec_eq + theorem nat.bitwise_bit + theorem nat.bitwise_bit_aux + theorem nat.bitwise_swap + theorem nat.bitwise_zero + theorem nat.bitwise_zero_left + theorem nat.bitwise_zero_right + theorem nat.bodd_bit + theorem nat.cond_to_bool_mod_two +/- theorem nat.discriminate + theorem nat.div2_bit + theorem nat.div_mul_le_self + theorem nat.dvd_antisymm + theorem nat.dvd_iff_mod_eq_zero + theorem nat.dvd_mod_iff + theorem nat.dvd_of_mod_eq_zero + theorem nat.dvd_of_mul_dvd_mul_left + theorem nat.dvd_of_mul_dvd_mul_right + theorem nat.dvd_sub + theorem nat.eq_one_of_dvd_one + theorem nat.eq_zero_of_mul_eq_zero + def nat.iterate + theorem nat.land_bit + theorem nat.ldiff_bit + theorem nat.le_lt_antisymm + theorem nat.le_mul_self + theorem nat.le_of_dvd + theorem nat.le_succ_of_pred_le + theorem nat.lor_bit + theorem nat.lt_le_antisymm + theorem nat.lt_succ_of_lt + theorem nat.lxor_bit + theorem nat.min_succ_succ + theorem nat.mod_eq_zero_of_dvd + theorem nat.mod_le + theorem nat.mod_pow_succ + theorem nat.mul_div_left + theorem nat.mul_div_right + theorem nat.mul_mod_left + theorem nat.mul_mod_mul_left + theorem nat.mul_mod_mul_right + theorem nat.mul_mod_right + theorem nat.mul_pred_left + theorem nat.mul_pred_right + theorem nat.mul_self_le_mul_self + theorem nat.mul_self_le_mul_self_iff + theorem nat.mul_self_lt_mul_self + theorem nat.mul_self_lt_mul_self_iff + theorem nat.mul_sub_div + def nat.one_pos + theorem nat.one_shiftl + theorem nat.pos_of_dvd_of_pos + theorem nat.pos_pow_of_pos + theorem nat.pow_le_pow_of_le_left + theorem nat.pow_le_pow_of_le_right + theorem nat.pow_lt_pow_of_lt_left + theorem nat.pow_lt_pow_of_lt_right + theorem nat.pow_one + theorem nat.pred_inj + theorem nat.shiftl'_add + theorem nat.shiftl'_sub + theorem nat.shiftl'_tt_eq_mul_pow + theorem nat.shiftl_add + theorem nat.shiftl_eq_mul_pow + theorem nat.shiftl_sub + theorem nat.shiftr_add + theorem nat.shiftr_eq_div_pow + theorem nat.sub_add_min_cancel + theorem nat.sub_eq_sub_min + theorem nat.sub_mul_div + theorem nat.sub_mul_mod + theorem nat.sub_one_sub_lt + theorem nat.succ_mul_succ_eq + theorem nat.succ_sub + theorem nat.succ_sub_sub_succ + theorem nat.test_bit_bitwise + theorem nat.test_bit_land + theorem nat.test_bit_ldiff + theorem nat.test_bit_lor + theorem nat.test_bit_lxor + theorem nat.test_bit_succ + theorem nat.test_bit_zero + theorem nat.zero_pow + theorem nat.zero_shiftl + theorem nat.zero_shiftr Modified data/nat/gcd.lean Modified data/nat/sub.lean Added data/option.lean + def option.iget Modified data/seq/computation.lean Modified data/seq/wseq.lean Modified data/stream.lean 2017-07-23 19:02:57+01:00 1b6322f chore(*): rfl-lemmas on same line ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/lattice/filter.lean +/- theorem filter.join_principal_eq_Sup +/- theorem filter.mem_join_sets +/- theorem filter.mem_principal_sets +/- theorem filter.principal_empty +/- theorem filter.principal_univ +/- theorem set.fmap_eq_image +/- theorem set.set_of_mem_eq Modified algebra/order.lean Modified data/bool.lean +/- theorem bool.bnot_false +/- theorem bool.bnot_true +/- theorem bool.cond_ff +/- theorem bool.cond_tt Modified data/list/basic.lean +/- theorem list.count_nil +/- theorem list.head_cons +/- theorem list.index_of_cons +/- theorem list.index_of_nil +/- theorem list.inth_succ +/- theorem list.inth_zero +/- theorem list.ith_zero +/- theorem list.last_singleton +/- theorem list.tail_cons +/- theorem list.tail_nil Modified data/stream.lean +/- theorem stream.all_def +/- theorem stream.any_def +/- theorem stream.approx_succ +/- theorem stream.approx_zero +/- theorem stream.composition +/- theorem stream.cons_append_stream +/- theorem stream.corec_def +/- theorem stream.corec_id_f_eq_iterate +/- theorem stream.drop_succ +/- theorem stream.even_tail +/- theorem stream.head_cons +/- theorem stream.head_even +/- theorem stream.head_iterate +/- theorem stream.head_map +/- theorem stream.head_zip +/- theorem stream.homomorphism +/- theorem stream.identity +/- theorem stream.inits_tail +/- theorem stream.interchange +/- theorem stream.map_const +/- theorem stream.map_eq_apply +/- theorem stream.map_id +/- theorem stream.map_map +/- theorem stream.map_tail +/- theorem stream.nil_append_stream +/- theorem stream.nth_const +/- theorem stream.nth_drop +/- theorem stream.nth_map +/- theorem stream.nth_nats +/- theorem stream.nth_succ +/- theorem stream.nth_zero_cons +/- theorem stream.nth_zero_iterate +/- theorem stream.nth_zip +/- theorem stream.odd_eq +/- theorem stream.tail_cons +/- theorem stream.tail_eq_drop +/- theorem stream.tail_zip +/- theorem stream.tails_eq_iterate Modified topology/continuity.lean 2017-07-23 18:59:39+01:00 4a28535 refactor(*): attributes on same line ESTIMATED CHANGES Modified algebra/lattice/boolean_algebra.lean +/- theorem lattice.inf_neg_eq_bot +/- theorem lattice.neg_bot +/- theorem lattice.neg_eq_neg_iff +/- theorem lattice.neg_inf +/- theorem lattice.neg_inf_eq_bot +/- theorem lattice.neg_neg +/- theorem lattice.neg_sup +/- theorem lattice.neg_sup_eq_top +/- theorem lattice.neg_top +/- theorem lattice.sup_neg_eq_top Modified algebra/lattice/complete_lattice.lean +/- theorem lattice.Inf_empty +/- theorem lattice.Inf_insert +/- theorem lattice.Inf_le +/- theorem lattice.Inf_le_iff +/- theorem lattice.Inf_singleton +/- theorem lattice.Inf_univ +/- theorem lattice.Sup_empty +/- theorem lattice.Sup_insert +/- theorem lattice.Sup_singleton +/- theorem lattice.Sup_univ +/- theorem lattice.foo' +/- theorem lattice.foo +/- theorem lattice.infi_congr_Prop +/- theorem lattice.infi_const +/- theorem lattice.infi_empty +/- theorem lattice.infi_emptyset +/- theorem lattice.infi_exists +/- theorem lattice.infi_false +/- theorem lattice.infi_infi_eq_left +/- theorem lattice.infi_infi_eq_right +/- theorem lattice.infi_insert +/- theorem lattice.infi_le' +/- theorem lattice.infi_singleton +/- theorem lattice.infi_true +/- theorem lattice.infi_union +/- theorem lattice.infi_unit +/- theorem lattice.infi_univ +/- theorem lattice.le_Sup +/- theorem lattice.le_Sup_iff +/- theorem lattice.le_infi_iff +/- theorem lattice.le_supr' +/- theorem lattice.supr_congr_Prop +/- theorem lattice.supr_const +/- theorem lattice.supr_empty +/- theorem lattice.supr_emptyset +/- theorem lattice.supr_exists +/- theorem lattice.supr_false +/- theorem lattice.supr_insert +/- theorem lattice.supr_le_iff +/- theorem lattice.supr_singleton +/- theorem lattice.supr_supr_eq_left +/- theorem lattice.supr_supr_eq_right +/- theorem lattice.supr_true +/- theorem lattice.supr_union +/- theorem lattice.supr_unit +/- theorem lattice.supr_univ Modified algebra/lattice/filter.lean +/- theorem diff_empty +/- theorem filter.fmap_principal +/- theorem filter.inf_principal +/- theorem filter.infi_sets_induct +/- theorem filter.join_principal_eq_Sup +/- theorem filter.le_principal_iff +/- theorem filter.lift'_id +/- theorem filter.map_bot +/- theorem filter.map_compose +/- theorem filter.map_eq_bot_iff +/- theorem filter.map_id +/- theorem filter.map_principal +/- theorem filter.map_sup +/- theorem filter.mem_bot_sets +/- theorem filter.mem_inf_sets +/- theorem filter.mem_join_sets +/- theorem filter.mem_map +/- theorem filter.mem_principal_sets +/- theorem filter.mem_pure +/- theorem filter.mem_sup_sets +/- theorem filter.mem_top_sets_iff +/- theorem filter.principal_eq_bot_iff +/- theorem filter.principal_eq_iff_eq +/- theorem filter.sup_join +/- theorem filter.sup_principal +/- theorem filter.supr_join +/- theorem filter.supr_map +/- theorem filter.supr_principal +/- theorem filter.vmap_principal +/- theorem not_not_mem_iff +/- theorem prod.fst_swap +/- theorem prod.snd_swap +/- theorem prod.swap_prod_mk +/- theorem prod.swap_swap +/- theorem prod.swap_swap_eq +/- theorem set.prod_mk_mem_set_prod_eq +/- theorem set.prod_singleton_singleton +/- theorem set.set_of_mem_eq +/- theorem set.vimage_set_of_eq +/- theorem singleton_neq_emptyset Modified data/bool.lean +/- theorem bool.absurd_of_eq_ff_of_eq_tt +/- theorem bool.band_assoc +/- theorem bool.band_comm +/- theorem bool.band_elim_left +/- theorem bool.band_elim_right +/- theorem bool.band_eq_ff +/- theorem bool.band_eq_tt +/- theorem bool.band_ff +/- theorem bool.band_intro +/- theorem bool.band_left_comm +/- theorem bool.band_self +/- theorem bool.band_tt +/- theorem bool.bnot_bnot +/- theorem bool.bnot_false +/- theorem bool.bnot_true +/- theorem bool.bor_assoc +/- theorem bool.bor_comm +/- theorem bool.bor_eq_ff +/- theorem bool.bor_eq_tt +/- theorem bool.bor_ff +/- theorem bool.bor_inl +/- theorem bool.bor_inr +/- theorem bool.bor_left_comm +/- theorem bool.bor_tt +/- def bool.bxor +/- theorem bool.bxor_assoc +/- theorem bool.bxor_comm +/- theorem bool.bxor_ff +/- theorem bool.bxor_left_comm +/- theorem bool.bxor_self +/- theorem bool.bxor_tt +/- theorem bool.coe_tt +/- theorem bool.cond_ff +/- theorem bool.cond_tt +/- theorem bool.dichotomy +/- theorem bool.eq_ff_of_bnot_eq_tt +/- theorem bool.eq_ff_of_ne_tt +/- theorem bool.eq_tt_of_bnot_eq_ff +/- theorem bool.eq_tt_of_ne_ff +/- theorem bool.ff_band +/- theorem bool.ff_bor +/- theorem bool.ff_bxor +/- theorem bool.ff_bxor_ff +/- theorem bool.ff_bxor_tt +/- theorem bool.or_of_bor_eq +/- theorem bool.tt_band +/- theorem bool.tt_bor +/- theorem bool.tt_bxor +/- theorem bool.tt_bxor_ff +/- theorem bool.tt_bxor_tt Modified data/list/basic.lean +/- theorem list.append.assoc +/- theorem list.concat_append +/- theorem list.concat_ne_nil +/- theorem list.cons_ne_nil +/- theorem list.count_append +/- theorem list.count_concat +/- theorem list.count_cons_of_ne +/- theorem list.count_cons_self +/- theorem list.count_eq_zero_of_not_mem +/- theorem list.count_nil +/- theorem list.head_cons +/- theorem list.index_of_cons_of_eq +/- theorem list.index_of_cons_of_ne +/- theorem list.index_of_nil +/- theorem list.index_of_of_not_mem +/- theorem list.ith_succ +/- theorem list.ith_zero +/- theorem list.last_cons_cons +/- theorem list.last_singleton +/- theorem list.tail_cons +/- theorem list.tail_nil +/- theorem list.taken_nil +/- theorem list.taken_zero Modified data/list/comb.lean +/- theorem list.all_cons +/- theorem list.all_nil +/- theorem list.any_cons +/- theorem list.any_nil - def list.decidable_exists_mem - def list.decidable_forall_mem +/- theorem list.exists_mem_cons_iff +/- theorem list.foldl_append +/- theorem list.foldl_cons +/- theorem list.foldl_nil +/- theorem list.foldr_append +/- theorem list.foldr_cons +/- theorem list.foldr_nil +/- theorem list.forall_mem_cons_iff +/- theorem list.length_map_accumr +/- theorem list.length_map_accumr₂ +/- theorem list.length_replicate +/- theorem list.unzip_cons +/- theorem list.unzip_nil +/- theorem list.zip_cons_cons +/- theorem list.zip_nil_left +/- theorem list.zip_nil_right Modified data/list/perm.lean +/- theorem list.perm.perm_app_comm +/- theorem list.perm.perm_cons_app_simp +/- theorem list.perm.perm_induction_on +/- theorem list.perm.perm_map +/- theorem list.perm.perm_rev_simp Modified data/list/set.lean +/- theorem list.erase_cons_head +/- theorem list.erase_cons_tail +/- theorem list.erase_nil +/- theorem list.erase_of_not_mem +/- theorem list.insert_nil +/- theorem list.insert_of_mem +/- theorem list.insert_of_not_mem +/- theorem list.inter_cons_of_mem +/- theorem list.inter_cons_of_not_mem +/- theorem list.inter_nil +/- theorem list.length_erase_of_mem +/- theorem list.length_insert_of_mem +/- theorem list.length_insert_of_not_mem +/- theorem list.length_upto +/- theorem list.mem_erase_dup_iff +/- theorem list.mem_insert_iff +/- theorem list.mem_insert_of_mem +/- theorem list.mem_insert_self +/- theorem list.mem_inter_iff +/- theorem list.mem_union_iff +/- theorem list.union_cons +/- theorem list.union_nil +/- theorem list.upto_nil +/- theorem list.upto_succ Modified data/list/sort.lean Modified data/nat/basic.lean +/- theorem nat.succ_add_eq_succ_add Modified data/nat/sub.lean +/- theorem nat.dist_comm +/- theorem nat.dist_self Modified data/rat.lean - def rat.decidable_nonneg Modified data/set/basic.lean +/- theorem set.insert_eq_of_mem +/- theorem set.mem_insert_iff +/- theorem set.mem_sep_eq Modified data/set/finite.lean +/- theorem set.finite_insert +/- theorem set.finite_singleton Modified data/set/lattice.lean +/- def set.Inter +/- def set.Union +/- theorem set.bInter_empty +/- theorem set.bInter_insert +/- theorem set.bInter_singleton +/- theorem set.bInter_univ +/- theorem set.bUnion_empty +/- theorem set.bUnion_insert +/- theorem set.bUnion_singleton +/- theorem set.bUnion_univ +/- theorem set.insert_sdiff_singleton +/- theorem set.mem_Inter_eq +/- theorem set.mem_Union_eq +/- theorem set.mem_sInter_eq +/- theorem set.mem_sUnion_eq +/- def set.sInter +/- theorem set.sInter_empty +/- theorem set.sInter_image +/- theorem set.sInter_insert +/- theorem set.sInter_singleton +/- theorem set.sUnion_empty +/- theorem set.sUnion_image +/- theorem set.sUnion_insert +/- theorem set.sUnion_singleton +/- theorem set.sdiff_singleton_eq_same +/- theorem set.union_same_compl Modified logic/basic.lean +/- theorem prod.exists +/- theorem prod.forall +/- theorem prod.mk.inj_iff +/- theorem set_of_subset_set_of Modified tactic/converter/binders.lean +/- theorem mem_image Modified tests/examples.lean +/- theorem mem_set_of Modified topology/continuity.lean +/- theorem false_neq_true +/- theorem open_singleton_true Modified topology/topological_space.lean +/- theorem closed_closure +/- theorem closed_compl_iff_open +/- theorem closed_empty +/- theorem closed_univ +/- theorem closure_closure +/- theorem closure_compl_eq +/- theorem closure_empty +/- theorem closure_union +/- theorem closure_univ +/- theorem interior_compl_eq +/- theorem interior_empty +/- theorem interior_inter +/- theorem interior_interior +/- theorem interior_univ +/- theorem nhds_neq_bot +/- theorem open_compl_iff_closed +/- theorem open_empty +/- theorem open_interior +/- theorem open_univ 2017-07-23 18:39:51+01:00 a4b157b chore(data/nat): remove addl ESTIMATED CHANGES Modified data/nat/basic.lean - theorem nat.add_eq_addl - def nat.addl - theorem nat.addl_succ_left - theorem nat.addl_succ_right - theorem nat.addl_zero_left - theorem nat.addl_zero_right - theorem nat.zero_has_zero 2017-07-23 18:29:16+01:00 5816424 refactor(*): use 'lemma' iff statement is private ESTIMATED CHANGES Modified algebra/lattice/basic.lean +/- theorem lattice.bot_inf_eq +/- theorem lattice.bot_le +/- theorem lattice.bot_sup_eq +/- theorem lattice.bot_unique +/- theorem lattice.eq_bot_iff +/- theorem lattice.eq_top_iff +/- theorem lattice.inf_assoc +/- theorem lattice.inf_bot_eq +/- theorem lattice.inf_comm +/- theorem lattice.inf_eq_top_iff +/- theorem lattice.inf_idem +/- theorem lattice.inf_le_inf +/- theorem lattice.inf_le_left' +/- theorem lattice.inf_le_left +/- theorem lattice.inf_le_left_of_le +/- theorem lattice.inf_le_right' +/- theorem lattice.inf_le_right +/- theorem lattice.inf_le_right_of_le +/- theorem lattice.inf_of_le_left +/- theorem lattice.inf_of_le_right +/- theorem lattice.inf_sup_self +/- theorem lattice.inf_top_eq +/- theorem lattice.le_bot_iff +/- theorem lattice.le_inf +/- theorem lattice.le_inf_iff +/- theorem lattice.le_inf_sup +/- theorem lattice.le_of_inf_eq +/- theorem lattice.le_of_sup_eq +/- theorem lattice.le_sup_left' +/- theorem lattice.le_sup_left +/- theorem lattice.le_sup_left_of_le +/- theorem lattice.le_sup_right' +/- theorem lattice.le_sup_right +/- theorem lattice.le_sup_right_of_le +/- theorem lattice.le_top +/- theorem lattice.neq_bot_of_le_neq_bot +/- theorem lattice.sup_assoc +/- theorem lattice.sup_bot_eq +/- theorem lattice.sup_comm +/- theorem lattice.sup_eq_bot_iff +/- theorem lattice.sup_idem +/- theorem lattice.sup_inf_le +/- theorem lattice.sup_inf_self +/- theorem lattice.sup_le +/- theorem lattice.sup_le_iff +/- theorem lattice.sup_le_sup +/- theorem lattice.sup_of_le_left +/- theorem lattice.sup_of_le_right +/- theorem lattice.sup_top_eq +/- theorem lattice.top_inf_eq +/- theorem lattice.top_le_iff +/- theorem lattice.top_sup_eq +/- theorem lattice.top_unique +/- theorem le_antisymm' Modified algebra/lattice/boolean_algebra.lean +/- theorem lattice.inf_neg_eq_bot +/- theorem lattice.inf_sup_left +/- theorem lattice.inf_sup_right +/- theorem lattice.le_neg_of_le_neg +/- theorem lattice.le_sup_inf +/- theorem lattice.neg_bot +/- theorem lattice.neg_eq_neg_iff +/- theorem lattice.neg_eq_neg_of_eq +/- theorem lattice.neg_inf +/- theorem lattice.neg_inf_eq_bot +/- theorem lattice.neg_le_iff_neg_le +/- theorem lattice.neg_le_neg +/- theorem lattice.neg_le_neg_iff_le +/- theorem lattice.neg_le_of_neg_le +/- theorem lattice.neg_neg +/- theorem lattice.neg_sup +/- theorem lattice.neg_sup_eq_top +/- theorem lattice.neg_top +/- theorem lattice.neg_unique +/- theorem lattice.sub_eq +/- theorem lattice.sub_eq_left +/- theorem lattice.sup_inf_left +/- theorem lattice.sup_inf_right +/- theorem lattice.sup_neg_eq_top +/- theorem lattice.sup_sub_same Modified algebra/lattice/bounded_lattice.lean +/- theorem lattice.monotone_and +/- theorem lattice.monotone_or Modified algebra/lattice/complete_boolean_algebra.lean +/- theorem lattice.inf_Sup_eq +/- theorem lattice.neg_Inf +/- theorem lattice.neg_Sup +/- theorem lattice.neg_infi +/- theorem lattice.neg_supr +/- theorem lattice.sup_Inf_eq Modified algebra/lattice/complete_lattice.lean +/- theorem lattice.Inf_empty +/- theorem lattice.Inf_eq_infi +/- theorem lattice.Inf_image +/- theorem lattice.Inf_insert +/- theorem lattice.Inf_le +/- theorem lattice.Inf_le_Inf +/- theorem lattice.Inf_le_Sup +/- theorem lattice.Inf_le_iff +/- theorem lattice.Inf_le_of_le +/- theorem lattice.Inf_singleton +/- theorem lattice.Inf_union +/- theorem lattice.Inf_univ +/- theorem lattice.Sup_empty +/- theorem lattice.Sup_eq_supr +/- theorem lattice.Sup_image +/- theorem lattice.Sup_insert +/- theorem lattice.Sup_inter_le +/- theorem lattice.Sup_le +/- theorem lattice.Sup_le_Sup +/- theorem lattice.Sup_singleton +/- theorem lattice.Sup_union +/- theorem lattice.Sup_univ +/- theorem lattice.foo' +/- theorem lattice.foo +/- theorem lattice.infi_and +/- theorem lattice.infi_comm +/- theorem lattice.infi_congr_Prop +/- theorem lattice.infi_const +/- theorem lattice.infi_empty +/- theorem lattice.infi_emptyset +/- theorem lattice.infi_exists +/- theorem lattice.infi_false +/- theorem lattice.infi_inf_eq +/- theorem lattice.infi_infi_eq_left +/- theorem lattice.infi_infi_eq_right +/- theorem lattice.infi_insert +/- theorem lattice.infi_le' +/- theorem lattice.infi_le +/- theorem lattice.infi_le_infi2 +/- theorem lattice.infi_le_infi +/- theorem lattice.infi_le_infi_const +/- theorem lattice.infi_le_of_le +/- theorem lattice.infi_or +/- theorem lattice.infi_prod +/- theorem lattice.infi_sigma +/- theorem lattice.infi_singleton +/- theorem lattice.infi_subtype +/- theorem lattice.infi_sum +/- theorem lattice.infi_true +/- theorem lattice.infi_union +/- theorem lattice.infi_unit +/- theorem lattice.infi_univ +/- theorem lattice.le_Inf +/- theorem lattice.le_Inf_inter +/- theorem lattice.le_Sup +/- theorem lattice.le_Sup_iff +/- theorem lattice.le_Sup_of_le +/- theorem lattice.le_infi +/- theorem lattice.le_infi_iff +/- theorem lattice.le_supr' +/- theorem lattice.le_supr +/- theorem lattice.le_supr_of_le +/- theorem lattice.monotone_Inf_of_monotone +/- theorem lattice.monotone_Sup_of_monotone +/- theorem lattice.supr_and +/- theorem lattice.supr_comm +/- theorem lattice.supr_congr_Prop +/- theorem lattice.supr_const +/- theorem lattice.supr_empty +/- theorem lattice.supr_emptyset +/- theorem lattice.supr_exists +/- theorem lattice.supr_false +/- theorem lattice.supr_insert +/- theorem lattice.supr_le +/- theorem lattice.supr_le_iff +/- theorem lattice.supr_le_supr2 +/- theorem lattice.supr_le_supr +/- theorem lattice.supr_le_supr_const +/- theorem lattice.supr_or +/- theorem lattice.supr_prod +/- theorem lattice.supr_sigma +/- theorem lattice.supr_singleton +/- theorem lattice.supr_subtype +/- theorem lattice.supr_sum +/- theorem lattice.supr_sup_eq +/- theorem lattice.supr_supr_eq_left +/- theorem lattice.supr_supr_eq_right +/- theorem lattice.supr_true +/- theorem lattice.supr_union +/- theorem lattice.supr_unit +/- theorem lattice.supr_univ Modified algebra/lattice/filter.lean +/- theorem Union_subset_Union2 +/- theorem Union_subset_Union +/- theorem Union_subset_Union_const +/- theorem compl_image_set_of +/- theorem diff_empty +/- theorem diff_neq_empty +/- theorem directed_of_chain +/- theorem directed_on_Union +/- theorem eq_of_sup_eq_inf_eq +/- theorem filter.Inf_sets_eq_finite +/- theorem filter.Inter_mem_sets +/- theorem filter.bind_mono2 +/- theorem filter.bind_mono +/- theorem filter.bind_sup +/- theorem filter.binfi_sup_eq +/- theorem filter.empty_in_sets_eq_bot +/- theorem filter.exists_sets_subset_iff +/- theorem filter.exists_ultrafilter +/- theorem filter.filter_eq +/- theorem filter.filter_eq_bot_of_not_nonempty +/- theorem filter.fmap_principal +/- theorem filter.forall_sets_neq_empty_iff_neq_bot +/- theorem filter.image_mem_map +/- theorem filter.inf_principal +/- theorem filter.infi_neq_bot_iff_of_directed +/- theorem filter.infi_neq_bot_of_directed +/- theorem filter.infi_sets_eq' +/- theorem filter.infi_sets_eq +/- theorem filter.infi_sets_induct +/- theorem filter.infi_sup_eq +/- theorem filter.inhabited_of_mem_sets +/- theorem filter.inter_mem_sets +/- theorem filter.join_principal_eq_Sup +/- theorem filter.le_lift' +/- theorem filter.le_map_vmap +/- theorem filter.le_of_ultrafilter +/- theorem filter.le_principal_iff +/- theorem filter.le_vmap_iff_map_le +/- theorem filter.le_vmap_map +/- theorem filter.lift'_cong +/- theorem filter.lift'_id +/- theorem filter.lift'_inf_principal_eq +/- theorem filter.lift'_infi +/- theorem filter.lift'_lift'_assoc +/- theorem filter.lift'_lift_assoc +/- theorem filter.lift'_mono' +/- theorem filter.lift'_mono +/- theorem filter.lift'_neq_bot_iff +/- theorem filter.lift'_principal +/- theorem filter.lift_assoc +/- theorem filter.lift_comm +/- theorem filter.lift_infi' +/- theorem filter.lift_infi +/- theorem filter.lift_lift'_assoc +/- theorem filter.lift_lift'_same_eq_lift' +/- theorem filter.lift_lift'_same_le_lift' +/- theorem filter.lift_lift_same_eq_lift +/- theorem filter.lift_lift_same_le_lift +/- theorem filter.lift_mono' +/- theorem filter.lift_mono +/- theorem filter.lift_neq_bot_iff +/- theorem filter.lift_principal +/- theorem filter.lift_sets_eq +/- theorem filter.map_binfi_eq +/- theorem filter.map_bot +/- theorem filter.map_compose +/- theorem filter.map_eq_bot_iff +/- theorem filter.map_eq_vmap_of_inverse +/- theorem filter.map_id +/- theorem filter.map_infi_eq +/- theorem filter.map_infi_le +/- theorem filter.map_lift'_eq2 +/- theorem filter.map_lift'_eq +/- theorem filter.map_lift_eq2 +/- theorem filter.map_lift_eq +/- theorem filter.map_mono +/- theorem filter.map_principal +/- theorem filter.map_sup +/- theorem filter.map_swap_vmap_swap_eq +/- theorem filter.map_vmap_le +/- theorem filter.mem_bind_sets +/- theorem filter.mem_bot_sets +/- theorem filter.mem_inf_sets +/- theorem filter.mem_inf_sets_of_left +/- theorem filter.mem_inf_sets_of_right +/- theorem filter.mem_infi_sets +/- theorem filter.mem_join_sets +/- theorem filter.mem_lift' +/- theorem filter.mem_lift'_iff +/- theorem filter.mem_lift +/- theorem filter.mem_lift_iff +/- theorem filter.mem_map +/- theorem filter.mem_of_finite_Union_ultrafilter +/- theorem filter.mem_of_finite_sUnion_ultrafilter +/- theorem filter.mem_or_compl_mem_of_ultrafilter +/- theorem filter.mem_or_mem_of_ultrafilter +/- theorem filter.mem_principal_sets +/- theorem filter.mem_prod_iff +/- theorem filter.mem_prod_same_iff +/- theorem filter.mem_pure +/- theorem filter.mem_return_sets +/- theorem filter.mem_sets_of_neq_bot +/- theorem filter.mem_sup_sets +/- theorem filter.mem_top_sets_iff +/- theorem filter.mem_vmap_of_mem +/- theorem filter.monotone_lift' +/- theorem filter.monotone_lift +/- theorem filter.monotone_map +/- theorem filter.monotone_mem_sets +/- theorem filter.monotone_principal +/- theorem filter.monotone_vmap +/- theorem filter.principal_bind +/- theorem filter.principal_empty +/- theorem filter.principal_eq_bot_iff +/- theorem filter.principal_eq_iff_eq +/- theorem filter.principal_le_lift' +/- theorem filter.principal_mono +/- theorem filter.principal_univ +/- theorem filter.prod_comm +/- theorem filter.prod_inf_prod +/- theorem filter.prod_lift'_lift' +/- theorem filter.prod_lift_lift +/- theorem filter.prod_map_map_eq +/- theorem filter.prod_mem_prod +/- theorem filter.prod_mono +/- theorem filter.prod_neq_bot +/- theorem filter.prod_principal_principal +/- theorem filter.prod_same_eq +/- theorem filter.prod_vmap_vmap_eq +/- theorem filter.return_neq_bot +/- theorem filter.seq_mono +/- theorem filter.sup_join +/- theorem filter.sup_principal +/- theorem filter.supr_join +/- theorem filter.supr_map +/- theorem filter.supr_principal +/- theorem filter.supr_sets_eq +/- theorem filter.ultrafilter_map +/- theorem filter.ultrafilter_of_le +/- theorem filter.ultrafilter_of_spec +/- theorem filter.ultrafilter_of_split +/- theorem filter.ultrafilter_of_ultrafilter +/- theorem filter.ultrafilter_pure +/- theorem filter.ultrafilter_ultrafilter_of +/- theorem filter.ultrafilter_unique +/- theorem filter.univ_mem_sets' +/- theorem filter.univ_mem_sets +/- theorem filter.vimage_mem_vmap +/- theorem filter.vmap_eq_lift' +/- theorem filter.vmap_lift'_eq2 +/- theorem filter.vmap_lift'_eq +/- theorem filter.vmap_lift_eq2 +/- theorem filter.vmap_lift_eq +/- theorem filter.vmap_map +/- theorem filter.vmap_mono +/- theorem filter.vmap_neq_bot +/- theorem filter.vmap_neq_bot_of_surj +/- theorem filter.vmap_principal +/- theorem filter.vmap_vmap_comp +/- theorem implies_implies_true_iff +/- theorem inf_eq_bot_iff_le_compl +/- theorem lattice.Inf_eq_finite_sets +/- theorem lattice.Sup_le_iff +/- theorem neg_subset_neg_iff_subset +/- theorem not_not_mem_iff +/- theorem prod.fst_swap +/- theorem prod.mk.eta +/- theorem prod.snd_swap +/- theorem prod.swap_prod_mk +/- theorem prod.swap_swap +/- theorem prod.swap_swap_eq +/- theorem pure_seq_eq_map +/- theorem sUnion_eq_Union +/- theorem sUnion_mono +/- theorem set.diff_right_antimono +/- theorem set.fmap_eq_image +/- theorem set.image_eq_vimage_of_inverse +/- theorem set.image_swap_eq_vimage_swap +/- theorem set.image_swap_prod +/- theorem set.mem_image_iff_of_inverse +/- theorem set.mem_prod_eq +/- theorem set.mem_seq_iff +/- theorem set.monotone_inter +/- theorem set.monotone_prod +/- theorem set.monotone_set_of +/- theorem set.prod_image_image_eq +/- theorem set.prod_inter_prod +/- theorem set.prod_mk_mem_set_prod_eq +/- theorem set.prod_mono +/- theorem set.prod_neq_empty_iff +/- theorem set.prod_singleton_singleton +/- theorem set.prod_vimage_eq +/- theorem set.set_of_mem_eq +/- theorem set.vimage_set_of_eq +/- theorem singleton_neq_emptyset Modified algebra/lattice/fixed_points.lean +/- theorem ge_of_eq +/- theorem lattice.gfp_comp +/- theorem lattice.gfp_eq +/- theorem lattice.gfp_gfp +/- theorem lattice.gfp_induct +/- theorem lattice.gfp_le +/- theorem lattice.le_gfp +/- theorem lattice.le_lfp +/- theorem lattice.lfp_comp +/- theorem lattice.lfp_eq +/- theorem lattice.lfp_induct +/- theorem lattice.lfp_le +/- theorem lattice.lfp_lfp +/- theorem lattice.monotone_gfp +/- theorem lattice.monotone_lfp Modified algebra/lattice/zorn.lean +/- theorem zorn.chain_chain_closure +/- theorem zorn.chain_closure_closure +/- theorem zorn.chain_closure_empty +/- theorem zorn.chain_closure_succ_fixpoint +/- theorem zorn.chain_closure_succ_fixpoint_iff +/- theorem zorn.chain_closure_total +/- theorem zorn.chain_insert +/- theorem zorn.chain_succ +/- theorem zorn.max_chain_spec +/- theorem zorn.succ_increasing +/- theorem zorn.succ_spec +/- theorem zorn.super_of_not_max +/- theorem zorn.zorn +/- theorem zorn.zorn_weak_order Modified algebra/order.lean +/- theorem comp_le_comp_left_of_monotone +/- theorem le_dual_eq_le +/- theorem monotone_app +/- theorem monotone_comp +/- theorem monotone_const +/- theorem monotone_id +/- theorem monotone_lam Modified data/bitvec.lean +/- theorem bitvec.bits_to_nat_to_list +/- theorem bitvec.of_nat_succ Modified data/bool.lean +/- theorem bool.bxor_assoc +/- theorem bool.bxor_comm +/- theorem bool.bxor_ff +/- theorem bool.bxor_left_comm +/- theorem bool.bxor_self +/- theorem bool.bxor_tt +/- theorem bool.ff_bxor +/- theorem bool.ff_bxor_ff +/- theorem bool.ff_bxor_tt +/- theorem bool.tt_bxor +/- theorem bool.tt_bxor_ff +/- theorem bool.tt_bxor_tt Modified data/fin.lean +/- theorem eq_of_lt_succ_of_not_lt +/- theorem lt_succ_of_lt Modified data/hash_map.lean +/- theorem bucket_array.foldl_eq_lem - theorem hash_map.append_of_modify_aux - theorem hash_map.insert_lemma + theorem hash_map.insert_theorem - theorem hash_map.valid.modify_aux1 - theorem hash_map.valid.modify_aux2 - theorem hash_map.valid_aux.insert_lemma1 Modified data/int/basic.lean +/- theorem int.neg_add_neg Modified data/list/basic.lean +/- theorem list.cons_inj +/- theorem list.cons_ne_nil +/- theorem list.count_append +/- theorem list.count_concat +/- theorem list.count_cons' +/- theorem list.count_cons +/- theorem list.count_cons_ge_count +/- theorem list.count_cons_of_ne +/- theorem list.count_cons_self +/- theorem list.count_eq_zero_of_not_mem +/- theorem list.count_nil +/- theorem list.count_pos_of_mem +/- theorem list.count_singleton +/- theorem list.head_eq_of_cons_eq +/- theorem list.index_of_le_length +/- theorem list.index_of_lt_length +/- theorem list.ith_succ +/- theorem list.ith_zero +/- theorem list.last_cons_cons +/- theorem list.last_singleton +/- theorem list.length_taken_le +/- theorem list.mem_iff_count_pos +/- theorem list.mem_of_count_pos +/- theorem list.not_mem_of_count_eq_zero +/- theorem list.not_mem_of_index_of_eq_length +/- theorem list.tail_eq_of_cons_eq +/- theorem list.taken_all +/- theorem list.taken_all_of_ge +/- theorem list.taken_cons +/- theorem list.taken_nil +/- theorem list.taken_zero Modified data/list/comb.lean +/- theorem list.dmap_cons_of_neg +/- theorem list.dmap_cons_of_pos +/- theorem list.dmap_nil +/- theorem list.exists_of_mem_dmap +/- theorem list.map_dmap_of_inv_of_pos +/- theorem list.mem_dmap +/- theorem list.mem_of_dinj_of_mem_dmap +/- theorem list.not_mem_dmap_of_dinj_of_not_mem Modified data/list/perm.lean +/- theorem list.perm.perm_insert_insert +/- theorem list.perm.perm_of_qeq Modified data/list/set.lean +/- theorem list.disjoint.comm +/- theorem list.disjoint_append_of_disjoint_left +/- theorem list.disjoint_cons_of_not_mem_of_disjoint +/- theorem list.disjoint_left +/- theorem list.disjoint_nil_left +/- theorem list.disjoint_nil_right +/- theorem list.disjoint_of_disjoint_append_left_left +/- theorem list.disjoint_of_disjoint_append_left_right +/- theorem list.disjoint_of_disjoint_append_right_left +/- theorem list.disjoint_of_disjoint_append_right_right +/- theorem list.disjoint_of_disjoint_cons_left +/- theorem list.disjoint_of_disjoint_cons_right +/- theorem list.disjoint_of_subset_left +/- theorem list.disjoint_of_subset_right +/- theorem list.disjoint_right +/- theorem list.dmap_nodup_of_dinj +/- theorem list.erase_append_left +/- theorem list.erase_append_right +/- theorem list.erase_cons +/- theorem list.erase_cons_head +/- theorem list.erase_cons_tail +/- theorem list.erase_nil +/- theorem list.erase_of_not_mem +/- theorem list.erase_sublist +/- theorem list.erase_subset +/- theorem list.length_erase_of_mem +/- theorem list.upto_step Modified data/list/sort.lean +/- theorem nat.lt_succ_iff_le +/- theorem nat.succ_le_succ_iff Modified data/nat/basic.lean +/- theorem nat.addl_succ_left +/- theorem nat.addl_zero_left +/- theorem nat.one_succ_zero +/- theorem nat.zero_has_zero Modified data/nat/gcd.lean +/- theorem nat.gcd_eq_one_of_coprime Modified data/nat/sub.lean +/- theorem nat.dist_pos_of_ne +/- theorem nat.dist_succ_succ Modified data/num/lemmas.lean +/- theorem num.bitwise_to_nat +/- theorem num.land_to_nat +/- theorem num.ldiff_to_nat +/- theorem num.lor_to_nat +/- theorem num.lxor_to_nat +/- theorem num.shiftl_to_nat +/- theorem num.shiftr_to_nat +/- theorem num.test_bit_to_nat - theorem pos_num.cmp_dec_lemma + theorem pos_num.cmp_dec_theorem Modified data/rat.lean +/- theorem linear_order_cases_on_eq +/- theorem linear_order_cases_on_gt +/- theorem linear_order_cases_on_lt +/- theorem mul_nonneg_iff_right_nonneg_of_pos +/- theorem not_antimono Modified data/seq/computation.lean +/- theorem computation.destruct_map +/- theorem computation.eq_of_bisim +/- theorem computation.lift_rel_rec.lem +/- theorem computation.map_comp +/- theorem computation.map_ret' +/- theorem computation.map_ret +/- theorem computation.map_think' +/- theorem computation.map_think +/- theorem computation.ret_bind +/- theorem computation.return_def +/- theorem computation.think_bind Modified data/seq/parallel.lean +/- theorem computation.map_parallel +/- theorem computation.parallel_congr_lem +/- theorem computation.terminates_parallel.aux Modified data/seq/seq.lean +/- theorem seq.append_assoc +/- theorem seq.append_nil +/- theorem seq.coinduction2 +/- theorem seq.coinduction +/- theorem seq.cons_append +/- theorem seq.eq_of_bisim +/- theorem seq.eq_or_mem_of_mem_cons +/- theorem seq.exists_of_mem_map +/- theorem seq.join_append +/- theorem seq.join_cons +/- theorem seq.join_cons_cons +/- theorem seq.join_cons_nil +/- theorem seq.join_nil +/- theorem seq.map_comp +/- theorem seq.map_cons +/- theorem seq.map_id +/- theorem seq.map_nil +/- theorem seq.map_nth +/- theorem seq.map_tail +/- theorem seq.mem_cons +/- theorem seq.mem_cons_iff +/- theorem seq.mem_cons_of_mem +/- theorem seq.nil_append +/- theorem seq1.join_cons +/- theorem seq1.join_nil Modified data/seq/wseq.lean +/- theorem wseq.append_assoc +/- theorem wseq.append_nil +/- theorem wseq.cons_append +/- theorem wseq.destruct_append +/- theorem wseq.destruct_join +/- theorem wseq.destruct_map +/- theorem wseq.exists_of_mem_map +/- theorem wseq.join_append +/- theorem wseq.map_comp +/- theorem wseq.map_cons +/- theorem wseq.map_nil +/- theorem wseq.map_think +/- theorem wseq.nil_append +/- theorem wseq.think_append Modified data/set/basic.lean +/- theorem set.set_of_false Modified data/set/finite.lean +/- theorem set.finite_image +/- theorem set.finite_insert +/- theorem set.finite_sUnion +/- theorem set.finite_singleton +/- theorem set.finite_subset +/- theorem set.finite_union Modified data/stream.lean +/- theorem stream.all_def +/- theorem stream.any_def +/- theorem stream.append_append_stream +/- theorem stream.append_approx_drop +/- theorem stream.append_stream_head_tail +/- theorem stream.approx_succ +/- theorem stream.approx_zero +/- theorem stream.bisim_simple +/- theorem stream.coinduction +/- theorem stream.composition +/- theorem stream.cons_append_stream +/- theorem stream.cons_nth_inits_core +/- theorem stream.const_eq +/- theorem stream.corec'_eq +/- theorem stream.corec_def +/- theorem stream.corec_eq +/- theorem stream.corec_id_f_eq_iterate +/- theorem stream.corec_id_id_eq_const +/- theorem stream.cycle_eq +/- theorem stream.cycle_singleton +/- theorem stream.drop_append_stream +/- theorem stream.drop_const +/- theorem stream.drop_drop +/- theorem stream.drop_map +/- theorem stream.drop_succ +/- theorem stream.drop_zip +/- theorem stream.eq_of_bisim +/- theorem stream.eq_or_mem_of_mem_cons +/- theorem stream.even_cons_cons +/- theorem stream.even_interleave +/- theorem stream.even_tail +/- theorem stream.exists_of_mem_map +/- theorem stream.head_cons +/- theorem stream.head_even +/- theorem stream.head_iterate +/- theorem stream.head_map +/- theorem stream.head_zip +/- theorem stream.homomorphism +/- theorem stream.identity +/- theorem stream.inits_core_eq +/- theorem stream.inits_eq +/- theorem stream.inits_tail +/- theorem stream.interchange +/- theorem stream.interleave_eq +/- theorem stream.interleave_even_odd +/- theorem stream.interleave_tail_tail +/- theorem stream.iterate_eq +/- theorem stream.iterate_id +/- theorem stream.map_append_stream +/- theorem stream.map_cons +/- theorem stream.map_const +/- theorem stream.map_eq +/- theorem stream.map_eq_apply +/- theorem stream.map_id +/- theorem stream.map_iterate +/- theorem stream.map_map +/- theorem stream.map_tail +/- theorem stream.mem_append_stream_left +/- theorem stream.mem_append_stream_right +/- theorem stream.mem_cons +/- theorem stream.mem_cons_of_mem +/- theorem stream.mem_const +/- theorem stream.mem_cycle +/- theorem stream.mem_interleave_left +/- theorem stream.mem_interleave_right +/- theorem stream.mem_map +/- theorem stream.mem_of_mem_even +/- theorem stream.mem_of_mem_odd +/- theorem stream.mem_of_nth_eq +/- theorem stream.nats_eq +/- theorem stream.nil_append_stream +/- theorem stream.nth_approx +/- theorem stream.nth_const +/- theorem stream.nth_drop +/- theorem stream.nth_even +/- theorem stream.nth_inits +/- theorem stream.nth_interleave_left +/- theorem stream.nth_interleave_right +/- theorem stream.nth_map +/- theorem stream.nth_nats +/- theorem stream.nth_odd +/- theorem stream.nth_of_bisim +/- theorem stream.nth_succ +/- theorem stream.nth_succ_iterate +/- theorem stream.nth_tails +/- theorem stream.nth_unfolds_head_tail +/- theorem stream.nth_zero_cons +/- theorem stream.nth_zero_iterate +/- theorem stream.nth_zip +/- theorem stream.odd_eq +/- theorem stream.tail_cons +/- theorem stream.tail_const +/- theorem stream.tail_drop +/- theorem stream.tail_eq_drop +/- theorem stream.tail_even +/- theorem stream.tail_inits +/- theorem stream.tail_interleave +/- theorem stream.tail_iterate +/- theorem stream.tail_map +/- theorem stream.tail_zip +/- theorem stream.tails_eq +/- theorem stream.tails_eq_iterate - theorem stream.take_lemma + theorem stream.take_theorem +/- theorem stream.unfolds_eq +/- theorem stream.unfolds_head_eq +/- theorem stream.zip_eq +/- theorem stream.zip_inits_tails Modified data/vector.lean +/- theorem vector.map_cons +/- theorem vector.map_nil +/- theorem vector.to_list_append +/- theorem vector.to_list_cons +/- theorem vector.to_list_drop +/- theorem vector.to_list_length +/- theorem vector.to_list_mk +/- theorem vector.to_list_nil +/- theorem vector.to_list_take Modified logic/basic.lean +/- theorem eq_iff_le_and_le +/- theorem forall_eq +/- theorem not_imp_iff_not_imp +/- theorem or_imp_iff_and_imp +/- theorem or_of_not_implies' +/- theorem or_of_not_implies +/- theorem prod.exists +/- theorem prod.forall +/- theorem prod.mk.inj_iff +/- theorem set_of_subset_set_of Modified tactic/converter/binders.lean +/- theorem Inf_image +/- theorem Sup_image +/- theorem mem_image +/- theorem {u Modified tests/examples.lean +/- theorem mem_set_of Modified tests/finish2.lean +/- theorem NoMember Modified topology/continuity.lean +/- theorem closure_prod_eq +/- theorem compact_pi_infinite +/- theorem continuous_Inf_dom +/- theorem continuous_Inf_rng +/- theorem continuous_Prop +/- theorem continuous_bot +/- theorem continuous_coinduced_dom +/- theorem continuous_coinduced_rng +/- theorem continuous_compose +/- theorem continuous_eq_le_coinduced +/- theorem continuous_fst +/- theorem continuous_generated_from +/- theorem continuous_id +/- theorem continuous_iff_induced_le +/- theorem continuous_iff_towards +/- theorem continuous_induced_dom +/- theorem continuous_induced_rng +/- theorem continuous_inf_dom +/- theorem continuous_inf_rng_left +/- theorem continuous_inf_rng_right +/- theorem continuous_infi_dom +/- theorem continuous_infi_rng +/- theorem continuous_inl +/- theorem continuous_inr +/- theorem continuous_prod_mk +/- theorem continuous_snd +/- theorem continuous_subtype_mk +/- theorem continuous_subtype_nhds_cover +/- theorem continuous_subtype_val +/- theorem continuous_sum_rec +/- theorem continuous_sup_dom_left +/- theorem continuous_sup_dom_right +/- theorem continuous_sup_rng +/- theorem continuous_top +/- theorem false_neq_true +/- theorem map_nhds_induced_eq +/- theorem map_nhds_subtype_val_eq +/- theorem nhds_induced_eq_vmap +/- theorem nhds_pi +/- theorem nhds_prod_eq +/- theorem open_induced +/- theorem open_set_prod +/- theorem open_singleton_true +/- theorem prod_eq_generate_from +/- theorem subtype.val_image +/- theorem univ_eq_true_false Modified topology/topological_space.lean +/- theorem closed_Inter +/- theorem closed_Union_of_locally_finite +/- theorem closed_closure +/- theorem closed_compl_iff_open +/- theorem closed_empty +/- theorem closed_iff_nhds +/- theorem closed_sInter +/- theorem closed_union +/- theorem closed_univ +/- theorem closure_closure +/- theorem closure_compl_eq +/- theorem closure_empty +/- theorem closure_eq_compl_interior_compl +/- theorem closure_eq_iff_closed +/- theorem closure_eq_nhds +/- theorem closure_eq_of_closed +/- theorem closure_minimal +/- theorem closure_mono +/- theorem closure_subset_iff_subset_of_closed +/- theorem closure_union +/- theorem closure_univ +/- theorem compact_adherence_nhdset +/- theorem compact_iff_ultrafilter_le_nhds +/- theorem eq_of_nhds_eq_nhds +/- theorem eq_of_nhds_neq_bot +/- theorem finite_subcover_of_compact +/- theorem generate_from_le +/- theorem interior_compl_eq +/- theorem interior_empty +/- theorem interior_eq_iff_open +/- theorem interior_eq_nhds +/- theorem interior_eq_of_open +/- theorem interior_inter +/- theorem interior_interior +/- theorem interior_maximal +/- theorem interior_mono +/- theorem interior_subset +/- theorem interior_subset_closure +/- theorem interior_union_closed_of_interior_empty +/- theorem interior_univ +/- theorem le_of_nhds_le_nhds +/- theorem map_nhds +/- theorem mem_nhds_sets +/- theorem mem_nhds_sets_iff +/- theorem nhds_mono +/- theorem nhds_neq_bot +/- theorem nhds_sets +/- theorem nhds_supr +/- theorem open_Union +/- theorem open_compl_iff_closed +/- theorem open_diff +/- theorem open_empty +/- theorem open_iff_nhds +/- theorem open_inter +/- theorem open_interior +/- theorem open_sUnion +/- theorem open_univ +/- theorem return_le_nhds +/- theorem subset_closure +/- theorem subset_interior_iff_subset_of_open +/- theorem sup_eq_generate_from +/- theorem supr_eq_generate_from +/- theorem t2_space_top +/- theorem topological_space.nhds_generate_from +/- theorem topological_space_eq Modified topology/uniform_space.lean +/- theorem Cauchy.monotone_gen +/- theorem Cauchy.pure_cauchy_dense +/- theorem Cauchy.uniform_embedding_pure_cauchy +/- theorem cauchy_downwards +/- theorem cauchy_map +/- theorem cauchy_nhds +/- theorem cauchy_of_totally_bounded_of_ultrafilter +/- theorem cauchy_pure +/- theorem cauchy_vmap +/- theorem closure_eq_inter_uniformity +/- theorem comp_le_uniformity3 +/- theorem comp_le_uniformity +/- theorem comp_mem_uniformity_sets +/- theorem comp_symm_of_uniformity +/- theorem compact_of_totally_bounded_closed +/- theorem compact_of_totally_bounded_complete +/- theorem complete_of_closed +/- theorem complete_space_extension +/- theorem complete_space_separation +/- theorem continuous_of_uniform +/- theorem id_comp_rel +/- theorem interior_mem_uniformity +/- theorem le_nhds_iff_adhp_of_cauchy +/- theorem le_nhds_of_cauchy_adhp +/- theorem lift_nhds_left +/- theorem lift_nhds_right +/- theorem mem_nhds_left +/- theorem mem_nhds_right +/- theorem mem_nhds_uniformity_iff +/- theorem monotone_comp_rel +/- theorem nhds_eq_uniformity +/- theorem nhds_eq_uniformity_prod +/- theorem nhds_nhds_eq_uniformity_uniformity_prod +/- theorem nhdset_of_mem_uniformity +/- theorem prod_mk_mem_comp_rel +/- theorem refl_le_uniformity +/- theorem refl_mem_uniformity +/- theorem separated_equiv +/- theorem supr_uniformity +/- theorem swap_id_rel +/- theorem symm_le_uniformity +/- theorem symm_of_uniformity +/- theorem to_topological_space_bot +/- theorem to_topological_space_mono +/- theorem to_topological_space_supr +/- theorem to_topological_space_top +/- theorem to_topological_space_vmap +/- theorem totally_bounded_iff_filter +/- theorem totally_bounded_iff_ultrafilter +/- theorem uniform_continuous_of_embedding +/- theorem uniform_continuous_quotient_mk +/- theorem uniform_continuous_uniformly_extend +/- theorem uniform_continuous_vmap +/- theorem uniform_space_eq +/- theorem uniformity_eq_symm +/- theorem uniformity_eq_uniformity_closure +/- theorem uniformity_eq_uniformity_interior +/- theorem uniformity_le_symm +/- theorem uniformity_lift_le_comp +/- theorem uniformity_lift_le_swap +/- theorem uniformly_extend_of_emb +/- theorem uniformly_extend_spec +/- theorem uniformly_extend_unique +/- theorem vmap_quotient_le_uniformity 2017-07-23 18:13:37+01:00 b9f1d64 refactor(*): use . instead of ^. ESTIMATED CHANGES Modified algebra/group.lean Modified algebra/lattice/basic.lean Modified algebra/lattice/boolean_algebra.lean Modified algebra/lattice/complete_boolean_algebra.lean Modified algebra/lattice/complete_lattice.lean Modified algebra/lattice/filter.lean +/- theorem filter.bind_mono +/- theorem filter.empty_in_sets_eq_bot +/- theorem filter.filter_eq +/- theorem filter.inhabited_of_mem_sets +/- theorem filter.inter_mem_sets +/- theorem filter.le_principal_iff +/- theorem filter.lift'_cong +/- theorem filter.lift'_mono' +/- theorem filter.lift'_mono +/- theorem filter.lift'_neq_bot_iff +/- theorem filter.lift_mono' +/- theorem filter.lift_mono +/- theorem filter.lift_neq_bot_iff +/- theorem filter.lift_sets_eq +/- theorem filter.map_lift'_eq +/- theorem filter.mem_bot_sets +/- theorem filter.mem_join_sets +/- theorem filter.mem_lift' +/- theorem filter.mem_lift'_iff +/- theorem filter.mem_lift +/- theorem filter.mem_principal_sets +/- theorem filter.mem_return_sets +/- theorem filter.monotone_mem_sets +/- theorem filter.principal_le_lift' +/- theorem filter.prod_same_eq +/- theorem filter.supr_sets_eq +/- theorem filter.univ_mem_sets' +/- theorem filter.univ_mem_sets Modified algebra/lattice/fixed_points.lean Modified algebra/ring.lean Modified data/list/basic.lean Modified data/list/comb.lean Modified data/list/set.lean Modified data/list/sort.lean Modified data/rat.lean Modified data/set/basic.lean Modified data/set/finite.lean Modified data/set/lattice.lean Modified logic/basic.lean Modified tactic/finish.lean Modified topology/continuity.lean +/- theorem map_nhds_induced_eq +/- theorem map_nhds_subtype_val_eq Modified topology/topological_space.lean +/- theorem nhds_sets +/- theorem topological_space_eq Modified topology/uniform_space.lean 2017-07-23 18:07:49+01:00 9d01cb8 refactor(algebra/lattice): use *experiment files, move set.lattice to .basic ESTIMATED CHANGES Modified algebra/lattice/basic.lean +/- theorem lattice.bot_inf_eq +/- theorem lattice.bot_le +/- theorem lattice.bot_sup_eq +/- theorem lattice.inf_bot_eq +/- theorem lattice.inf_eq_top_iff +/- theorem lattice.inf_idem + theorem lattice.inf_le_left' + theorem lattice.inf_le_right' +/- theorem lattice.inf_top_eq + theorem lattice.le_bot_iff +/- theorem lattice.le_inf_iff + theorem lattice.le_sup_left' + theorem lattice.le_sup_right' +/- theorem lattice.le_top +/- theorem lattice.sup_bot_eq +/- theorem lattice.sup_eq_bot_iff +/- theorem lattice.sup_idem +/- theorem lattice.sup_le_iff +/- theorem lattice.sup_top_eq +/- theorem lattice.top_inf_eq + theorem lattice.top_le_iff +/- theorem lattice.top_sup_eq + theorem le_antisymm' Deleted algebra/lattice/basic_experiment.lean - theorem lattice.bot_inf_eq - theorem lattice.bot_le - theorem lattice.bot_sup_eq - theorem lattice.bot_unique - theorem lattice.eq_bot_iff - theorem lattice.eq_top_iff - def lattice.imp - theorem lattice.inf_assoc - theorem lattice.inf_bot_eq - theorem lattice.inf_comm - theorem lattice.inf_eq_top_iff - theorem lattice.inf_idem - theorem lattice.inf_le_inf - theorem lattice.inf_le_left' - theorem lattice.inf_le_left - theorem lattice.inf_le_left_of_le - theorem lattice.inf_le_right' - theorem lattice.inf_le_right - theorem lattice.inf_le_right_of_le - theorem lattice.inf_of_le_left - theorem lattice.inf_of_le_right - theorem lattice.inf_sup_self - theorem lattice.inf_top_eq - theorem lattice.le_bot_iff - theorem lattice.le_inf - theorem lattice.le_inf_iff - theorem lattice.le_inf_sup - theorem lattice.le_of_inf_eq - theorem lattice.le_of_sup_eq - theorem lattice.le_sup_left' - theorem lattice.le_sup_left - theorem lattice.le_sup_left_of_le - theorem lattice.le_sup_right' - theorem lattice.le_sup_right - theorem lattice.le_sup_right_of_le - theorem lattice.le_top - theorem lattice.neq_bot_of_le_neq_bot - theorem lattice.sup_assoc - theorem lattice.sup_bot_eq - theorem lattice.sup_comm - theorem lattice.sup_eq_bot_iff - theorem lattice.sup_idem - theorem lattice.sup_inf_le - theorem lattice.sup_inf_self - theorem lattice.sup_le - theorem lattice.sup_le_iff - theorem lattice.sup_le_sup - theorem lattice.sup_of_le_left - theorem lattice.sup_of_le_right - theorem lattice.sup_top_eq - theorem lattice.top_inf_eq - theorem lattice.top_le_iff - theorem lattice.top_sup_eq - theorem lattice.top_unique - theorem le_antisymm' Modified algebra/lattice/bounded_lattice.lean Deleted algebra/lattice/bounded_lattice_experiment.lean - theorem lattice.monotone_and - theorem lattice.monotone_or Modified algebra/lattice/complete_boolean_algebra.lean Modified algebra/lattice/complete_lattice.lean + theorem lattice.foo' + theorem lattice.foo + theorem lattice.infi_le' + theorem lattice.le_supr' - theorem set.subset_union_left - theorem set.subset_union_right Deleted algebra/lattice/complete_lattice_experiment.lean - theorem insert_def - theorem insert_eq_of_mem - theorem insert_of_has_insert - theorem inter_def - theorem inter_left_comm - def lattice.Inf - theorem lattice.Inf_empty - theorem lattice.Inf_eq_infi - theorem lattice.Inf_image - theorem lattice.Inf_insert - theorem lattice.Inf_le - theorem lattice.Inf_le_Inf - theorem lattice.Inf_le_Sup - theorem lattice.Inf_le_iff - theorem lattice.Inf_le_of_le - theorem lattice.Inf_singleton - theorem lattice.Inf_union - theorem lattice.Inf_univ - def lattice.Sup - theorem lattice.Sup_empty - theorem lattice.Sup_eq_supr - theorem lattice.Sup_image - theorem lattice.Sup_insert - theorem lattice.Sup_inter_le - theorem lattice.Sup_le - theorem lattice.Sup_le_Sup - theorem lattice.Sup_singleton - theorem lattice.Sup_union - theorem lattice.Sup_univ - theorem lattice.foo' - theorem lattice.foo - def lattice.infi - theorem lattice.infi_and - theorem lattice.infi_comm - theorem lattice.infi_congr_Prop - theorem lattice.infi_const - theorem lattice.infi_empty - theorem lattice.infi_emptyset - theorem lattice.infi_exists - theorem lattice.infi_false - theorem lattice.infi_inf_eq - theorem lattice.infi_infi_eq_left - theorem lattice.infi_infi_eq_right - theorem lattice.infi_insert - theorem lattice.infi_le' - theorem lattice.infi_le - theorem lattice.infi_le_infi2 - theorem lattice.infi_le_infi - theorem lattice.infi_le_infi_const - theorem lattice.infi_le_of_le - theorem lattice.infi_or - theorem lattice.infi_prod - theorem lattice.infi_sigma - theorem lattice.infi_singleton - theorem lattice.infi_subtype - theorem lattice.infi_sum - theorem lattice.infi_true - theorem lattice.infi_union - theorem lattice.infi_unit - theorem lattice.infi_univ - theorem lattice.insert_of_has_insert - theorem lattice.le_Inf - theorem lattice.le_Inf_inter - theorem lattice.le_Sup - theorem lattice.le_Sup_iff - theorem lattice.le_Sup_of_le - theorem lattice.le_infi - theorem lattice.le_infi_iff - theorem lattice.le_supr' - theorem lattice.le_supr - theorem lattice.le_supr_of_le - theorem lattice.monotone_Inf_of_monotone - theorem lattice.monotone_Sup_of_monotone - def lattice.supr - theorem lattice.supr_and - theorem lattice.supr_comm - theorem lattice.supr_congr_Prop - theorem lattice.supr_const - theorem lattice.supr_empty - theorem lattice.supr_emptyset - theorem lattice.supr_exists - theorem lattice.supr_false - theorem lattice.supr_insert - theorem lattice.supr_le - theorem lattice.supr_le_iff - theorem lattice.supr_le_supr2 - theorem lattice.supr_le_supr - theorem lattice.supr_le_supr_const - theorem lattice.supr_or - theorem lattice.supr_prod - theorem lattice.supr_sigma - theorem lattice.supr_singleton - theorem lattice.supr_subtype - theorem lattice.supr_sum - theorem lattice.supr_sup_eq - theorem lattice.supr_supr_eq_left - theorem lattice.supr_supr_eq_right - theorem lattice.supr_true - theorem lattice.supr_union - theorem lattice.supr_unit - theorem lattice.supr_univ - theorem mem_insert_iff - theorem mem_inter_eq - theorem mem_set_of - theorem mem_set_of_eq - theorem mem_singleton - theorem mem_singleton_iff - theorem mem_union_eq - theorem mem_univ_eq - theorem nmem_set_of_eq - theorem set_eq_def - theorem set_of_false - theorem singleton_def - theorem singleton_eq_singleton_iff - theorem subset_def - theorem subset_insert - theorem subset_univ - theorem union_def - theorem union_left_comm Modified data/seq/wseq.lean Modified data/set/basic.lean + theorem set.bounded_forall_empty_iff + theorem set.bounded_forall_image_iff + theorem set.bounded_forall_image_of_bounded_forall + theorem set.bounded_forall_insert_iff + theorem set.compl_comp_compl + theorem set.compl_compl + theorem set.compl_compl_image + theorem set.compl_empty + theorem set.compl_eq_univ_diff + theorem set.compl_inter + theorem set.compl_inter_self + theorem set.compl_union + theorem set.compl_union_self + theorem set.compl_univ + theorem set.diff_eq + theorem set.diff_subset + theorem set.empty_def +/- theorem set.empty_inter + theorem set.empty_ne_univ +/- theorem set.empty_subset +/- theorem set.empty_union +/- theorem set.eq_empty_of_forall_not_mem +/- theorem set.eq_empty_of_subset_empty + theorem set.eq_of_mem_singleton +/- theorem set.eq_of_subset_of_subset + def set.eq_on + theorem set.eq_or_mem_of_mem_insert + theorem set.eq_sep_of_subset + theorem set.eq_univ_of_forall + theorem set.eq_univ_of_univ_subset + theorem set.eq_vimage_subtype_val_iff + theorem set.exists_mem_of_ne_empty +/- theorem set.ext + theorem set.fix_set_compl + theorem set.forall_insert_of_forall + theorem set.forall_not_of_sep_empty + theorem set.forall_of_forall_insert + theorem set.image_comp + theorem set.image_empty + theorem set.image_eq_image_of_eq_on + theorem set.image_id + theorem set.image_insert_eq + theorem set.image_subset + theorem set.image_subset_iff_subset_vimage + theorem set.image_union + theorem set.insert_comm + theorem set.insert_def + theorem set.insert_eq + theorem set.insert_eq_of_mem + theorem set.insert_ne_empty + theorem set.insert_of_has_insert +/- theorem set.inter_assoc +/- theorem set.inter_comm + theorem set.inter_compl_self + theorem set.inter_def + theorem set.inter_distrib_left + theorem set.inter_distrib_right +/- theorem set.inter_empty + theorem set.inter_eq_compl_compl_union_compl + theorem set.inter_eq_self_of_subset_left + theorem set.inter_eq_self_of_subset_right + theorem set.inter_left_comm + theorem set.inter_right_comm +/- theorem set.inter_self + theorem set.inter_subset_inter + theorem set.inter_subset_inter_left + theorem set.inter_subset_inter_right + theorem set.inter_subset_left + theorem set.inter_subset_right + theorem set.inter_univ + theorem set.mem_compl + theorem set.mem_compl_eq + theorem set.mem_compl_iff + theorem set.mem_diff + theorem set.mem_diff_eq + theorem set.mem_diff_iff +/- theorem set.mem_empty_eq + theorem set.mem_image + theorem set.mem_image_compl + def set.mem_image_elim + def set.mem_image_elim_on + theorem set.mem_image_eq + theorem set.mem_image_of_mem + theorem set.mem_insert + theorem set.mem_insert_iff + theorem set.mem_insert_of_mem + theorem set.mem_inter + theorem set.mem_inter_eq + theorem set.mem_inter_iff + theorem set.mem_of_mem_diff + theorem set.mem_of_mem_insert_of_ne + theorem set.mem_of_mem_inter_left + theorem set.mem_of_mem_inter_right +/- theorem set.mem_of_subset_of_mem + theorem set.mem_or_mem_of_mem_union + theorem set.mem_powerset + theorem set.mem_powerset_iff + theorem set.mem_sep + theorem set.mem_sep_eq + theorem set.mem_sep_iff + theorem set.mem_set_of_eq + theorem set.mem_singleton + theorem set.mem_singleton_iff + theorem set.mem_singleton_of_eq + theorem set.mem_union.elim + theorem set.mem_union_eq + theorem set.mem_union_iff + theorem set.mem_union_left + theorem set.mem_union_right + theorem set.mem_univ + theorem set.mem_univ_eq + theorem set.mem_univ_iff + theorem set.mem_vimage_eq + theorem set.mono_image +/- theorem set.ne_empty_of_mem + theorem set.nmem_set_of_eq + theorem set.nonempty_of_inter_nonempty_left + theorem set.nonempty_of_inter_nonempty_right +/- theorem set.not_mem_empty + theorem set.not_mem_of_mem_compl + theorem set.not_mem_of_mem_diff + theorem set.pair_eq_singleton + def set.pairwise_on + theorem set.sep_subset + theorem set.set_eq_def + theorem set.set_of_false + theorem set.singleton_def + theorem set.singleton_eq_singleton_iff + theorem set.singleton_ne_empty + theorem set.singleton_subset_iff + theorem set.ssubset_def + theorem set.ssubset_insert + def set.strict_subset +/- theorem set.subset.antisymm +/- theorem set.subset.refl +/- theorem set.subset.trans + theorem set.subset_def + theorem set.subset_empty_iff + theorem set.subset_insert + theorem set.subset_inter + theorem set.subset_of_mem_powerset + theorem set.subset_union_left + theorem set.subset_union_right + theorem set.subset_univ +/- theorem set.union_assoc +/- theorem set.union_comm + theorem set.union_compl_self + theorem set.union_def + theorem set.union_diff_cancel + theorem set.union_distrib_left + theorem set.union_distrib_right +/- theorem set.union_empty + theorem set.union_eq_compl_compl_inter_compl + theorem set.union_eq_self_of_subset_left + theorem set.union_eq_self_of_subset_right + theorem set.union_insert_eq + theorem set.union_left_comm + theorem set.union_right_comm +/- theorem set.union_self + theorem set.union_subset + theorem set.union_subset_iff + theorem set.union_subset_union + theorem set.univ_def + theorem set.univ_inter + def set.vimage + theorem set.vimage_comp + theorem set.vimage_compl + theorem set.vimage_empty + theorem set.vimage_id + theorem set.vimage_image_eq + theorem set.vimage_inter + theorem set.vimage_mono + theorem set.vimage_union + theorem set.vimage_univ Modified data/set/lattice.lean - theorem set.bounded_forall_empty_iff - theorem set.bounded_forall_image_iff - theorem set.bounded_forall_image_of_bounded_forall - theorem set.bounded_forall_insert_iff - theorem set.compl_comp_compl - theorem set.compl_compl - theorem set.compl_compl_image - theorem set.compl_empty - theorem set.compl_eq_univ_diff - theorem set.compl_inter - theorem set.compl_inter_self - theorem set.compl_union - theorem set.compl_union_self - theorem set.compl_univ - theorem set.diff_eq - theorem set.diff_subset +/- theorem set.disjoint_bot_left +/- theorem set.disjoint_bot_right +/- theorem set.disjoint_symm - theorem set.empty_ne_univ - theorem set.eq_of_mem_singleton - def set.eq_on - theorem set.eq_or_mem_of_mem_insert - theorem set.eq_sep_of_subset - theorem set.eq_univ_of_forall - theorem set.eq_univ_of_univ_subset - theorem set.eq_vimage_subtype_val_iff - theorem set.exists_mem_of_ne_empty - theorem set.fix_set_compl - theorem set.forall_insert_of_forall - theorem set.forall_not_of_sep_empty - theorem set.forall_of_forall_insert - theorem set.image_comp - theorem set.image_empty - theorem set.image_eq_image_of_eq_on - theorem set.image_id - theorem set.image_insert_eq - theorem set.image_subset - theorem set.image_subset_iff_subset_vimage - theorem set.image_union - theorem set.insert_comm - theorem set.insert_def - theorem set.insert_eq - theorem set.insert_eq_of_mem - theorem set.insert_ne_empty - theorem set.insert_of_has_insert +/- theorem set.insert_sdiff_singleton - theorem set.inter_compl_self - theorem set.inter_def - theorem set.inter_distrib_left - theorem set.inter_distrib_right - theorem set.inter_eq_compl_compl_union_compl - theorem set.inter_eq_self_of_subset_left - theorem set.inter_eq_self_of_subset_right - theorem set.inter_left_comm - theorem set.inter_right_comm - theorem set.inter_subset_inter - theorem set.inter_subset_inter_left - theorem set.inter_subset_inter_right - theorem set.inter_subset_left - theorem set.inter_subset_right - theorem set.inter_univ - theorem set.mem_compl - theorem set.mem_compl_eq - theorem set.mem_compl_iff - theorem set.mem_diff - theorem set.mem_diff_eq - theorem set.mem_diff_iff - theorem set.mem_image - theorem set.mem_image_compl - def set.mem_image_elim - def set.mem_image_elim_on - theorem set.mem_image_eq - theorem set.mem_image_of_mem - theorem set.mem_insert - theorem set.mem_insert_iff - theorem set.mem_insert_of_mem - theorem set.mem_inter - theorem set.mem_inter_eq - theorem set.mem_inter_iff - theorem set.mem_of_mem_diff - theorem set.mem_of_mem_insert_of_ne - theorem set.mem_of_mem_inter_left - theorem set.mem_of_mem_inter_right - theorem set.mem_or_mem_of_mem_union - theorem set.mem_powerset - theorem set.mem_powerset_iff - theorem set.mem_sep - theorem set.mem_sep_eq - theorem set.mem_sep_iff - theorem set.mem_set_of - theorem set.mem_set_of_eq - theorem set.mem_singleton - theorem set.mem_singleton_iff - theorem set.mem_singleton_of_eq - theorem set.mem_union.elim - theorem set.mem_union_eq - theorem set.mem_union_iff - theorem set.mem_union_left - theorem set.mem_union_right - theorem set.mem_unionl - theorem set.mem_unionr - theorem set.mem_univ - theorem set.mem_univ_eq - theorem set.mem_univ_iff - theorem set.mem_vimage_eq - theorem set.mono_image +/- theorem set.monotone_vimage - theorem set.nmem_set_of_eq - theorem set.nonempty_of_inter_nonempty_left - theorem set.nonempty_of_inter_nonempty_right - theorem set.not_mem_of_mem_compl - theorem set.not_mem_of_mem_diff - theorem set.pair_eq_singleton - def set.pairwise_on +/- theorem set.sdiff_singleton_eq_same - theorem set.sep_subset - theorem set.set_eq_def - theorem set.set_of_false - theorem set.singleton_def - theorem set.singleton_eq_singleton_iff - theorem set.singleton_ne_empty - theorem set.singleton_subset_iff - theorem set.ssubset_def - theorem set.ssubset_insert - def set.strict_subset - theorem set.subset_def - theorem set.subset_empty_iff - theorem set.subset_insert - theorem set.subset_inter - theorem set.subset_of_mem_powerset - theorem set.subset_univ - theorem set.union_compl_self - theorem set.union_def - theorem set.union_diff_cancel - theorem set.union_distrib_left - theorem set.union_distrib_right - theorem set.union_eq_compl_compl_inter_compl - theorem set.union_eq_self_of_subset_left - theorem set.union_eq_self_of_subset_right - theorem set.union_insert_eq - theorem set.union_left_comm - theorem set.union_right_comm +/- theorem set.union_same_compl +/- theorem set.union_sdiff_same - theorem set.union_subset - theorem set.union_subset_iff - theorem set.union_subset_union - theorem set.univ_def - theorem set.univ_inter - def set.vimage +/- theorem set.vimage_Union - theorem set.vimage_comp - theorem set.vimage_compl - theorem set.vimage_empty - theorem set.vimage_id - theorem set.vimage_image_eq - theorem set.vimage_inter - theorem set.vimage_mono +/- theorem set.vimage_sUnion - theorem set.vimage_union - theorem set.vimage_univ Deleted tests/finish_set_basic.lean - theorem set.bounded_forall_empty_iff - theorem set.bounded_forall_image_iff - theorem set.bounded_forall_image_of_bounded_forall - theorem set.bounded_forall_insert_iff - theorem set.compl_comp_compl - theorem set.compl_compl - theorem set.compl_compl_image - theorem set.compl_empty - theorem set.compl_eq_univ_diff - theorem set.compl_inter - theorem set.compl_inter_self - theorem set.compl_union - theorem set.compl_union_self - theorem set.compl_univ - theorem set.diff_eq - theorem set.diff_subset - theorem set.empty_def - theorem set.empty_ne_univ - theorem set.eq_of_mem_singleton - def set.eq_on - theorem set.eq_or_mem_of_mem_insert - theorem set.eq_sep_of_subset - theorem set.eq_univ_of_forall - theorem set.eq_univ_of_univ_subset - theorem set.exists_mem_of_ne_empty - theorem set.fix_set_compl - theorem set.forall_insert_of_forall - theorem set.forall_not_of_sep_empty - theorem set.forall_of_forall_insert - theorem set.image_comp - theorem set.image_empty - theorem set.image_eq_image_of_eq_on - theorem set.image_id - theorem set.image_insert_eq - theorem set.image_subset - theorem set.image_union - theorem set.insert_comm - theorem set.insert_def - theorem set.insert_eq - theorem set.insert_eq_of_mem - theorem set.insert_ne_empty - theorem set.insert_of_has_insert - theorem set.inter_compl_self - theorem set.inter_def - theorem set.inter_distrib_left - theorem set.inter_distrib_right - theorem set.inter_eq_compl_compl_union_compl - theorem set.inter_eq_self_of_subset_left - theorem set.inter_eq_self_of_subset_right - theorem set.inter_left_comm - theorem set.inter_right_comm - theorem set.inter_subset_inter_left - theorem set.inter_subset_inter_right - theorem set.inter_subset_left - theorem set.inter_subset_right - theorem set.inter_univ - theorem set.mem_compl - theorem set.mem_compl_eq - theorem set.mem_compl_iff - theorem set.mem_diff - theorem set.mem_diff_eq - theorem set.mem_diff_iff - theorem set.mem_image - theorem set.mem_image_compl - def set.mem_image_elim - def set.mem_image_elim_on - theorem set.mem_image_eq - theorem set.mem_image_of_mem - theorem set.mem_insert - theorem set.mem_insert_iff - theorem set.mem_insert_of_mem - theorem set.mem_inter - theorem set.mem_inter_eq - theorem set.mem_inter_iff - theorem set.mem_of_mem_diff - theorem set.mem_of_mem_insert_of_ne - theorem set.mem_of_mem_inter_left - theorem set.mem_of_mem_inter_right - theorem set.mem_or_mem_of_mem_union - theorem set.mem_powerset - theorem set.mem_powerset_iff - theorem set.mem_sep - theorem set.mem_sep_eq - theorem set.mem_sep_iff - theorem set.mem_set_of - theorem set.mem_singleton - theorem set.mem_singleton_iff - theorem set.mem_singleton_of_eq - theorem set.mem_union.elim - theorem set.mem_union_eq - theorem set.mem_union_iff - theorem set.mem_union_left - theorem set.mem_union_right - theorem set.mem_unionl - theorem set.mem_unionr - theorem set.mem_univ - theorem set.mem_univ_eq - theorem set.mem_univ_iff - theorem set.nonempty_of_inter_nonempty_left - theorem set.nonempty_of_inter_nonempty_right - theorem set.not_mem_of_mem_compl - theorem set.not_mem_of_mem_diff - theorem set.pair_eq_singleton - theorem set.sep_subset - theorem set.set_eq_def - theorem set.singleton_def - theorem set.singleton_ne_empty - def set.strict_subset - theorem set.subset_def - theorem set.subset_empty_iff - theorem set.subset_insert - theorem set.subset_inter - theorem set.subset_of_mem_powerset - theorem set.subset_univ - theorem set.union_compl_self - theorem set.union_def - theorem set.union_diff_cancel - theorem set.union_distrib_left - theorem set.union_distrib_right - theorem set.union_eq_compl_compl_inter_compl - theorem set.union_eq_self_of_subset_left - theorem set.union_eq_self_of_subset_right - theorem set.union_left_comm - theorem set.union_right_comm - theorem set.union_subset - theorem set.univ_def - theorem set.univ_inter Modified theories/set_theory.lean Modified topology/continuity.lean Modified topology/topological_space.lean 2017-07-23 15:39:35+01:00 32beb92 refactor(*): tools -> tactic, remove experimental stuff ESTIMATED CHANGES Modified algebra/group_power.lean Modified algebra/lattice/basic_experiment.lean Modified data/int/basic.lean Modified data/set/lattice.lean Renamed tools/converter/binders.lean to tactic/converter/binders.lean Renamed tools/converter/interactive.lean to tactic/converter/interactive.lean Renamed tools/converter/old_conv.lean to tactic/converter/old_conv.lean Renamed tools/auto/finish.lean to tactic/finish.lean Modified tests/finish1.lean Modified tests/finish2.lean Modified tests/finish3.lean Modified tests/finish_set_basic.lean Deleted tools/auto/mk_inhabitant.lean Deleted tools/parser/modal.lean - def form_of_string Deleted tools/parser/parser.lean - def list.deterministic_or - def parser.apply - def parser.chainl1 - def parser.chainl1_rest - def parser.chainl - def parser.chainr1 - def parser.chainr1_rest - def parser.chainr - def parser.item - def parser.many1 - def parser.many - def parser.many_aux - def parser.parse - def parser.parser_bignum - def parser.sat - def parser.sepby1 - def parser.sepby - def parser.space - def parser.symb - def parser.take_char - def parser.take_string - def parser.take_string_aux - def parser.token - def parser - def parser_bind - def parser_fmap - def parser_pure - theorem {u - theorem {u} Deleted tools/tactic/tactic.lean 2017-07-23 15:31:56+01:00 bb8b8f8 refactor(tests): consolidate tests ESTIMATED CHANGES Renamed tools/tactic/examples.lean to tests/examples.lean Renamed tools/auto/experiments/test1.lean to tests/finish1.lean Renamed tools/auto/experiments/test2.lean to tests/finish2.lean Renamed tools/auto/experiments/test3.lean to tests/finish3.lean Renamed tools/auto/experiments/set_basic.lean to tests/finish_set_basic.lean Modified tools/parser/modal.lean 2017-07-23 15:24:21+01:00 ae65643 refactor(*): use absolute paths ESTIMATED CHANGES Modified algebra/group_power.lean Modified algebra/lattice/basic.lean Modified algebra/lattice/basic_experiment.lean Modified algebra/lattice/boolean_algebra.lean Modified algebra/lattice/bounded_lattice.lean Modified algebra/lattice/bounded_lattice_experiment.lean Modified algebra/lattice/complete_boolean_algebra.lean Modified algebra/lattice/complete_lattice.lean Modified algebra/lattice/complete_lattice_experiment.lean Modified algebra/lattice/default.lean Modified algebra/lattice/filter.lean Modified algebra/lattice/fixed_points.lean Modified data/int/basic.lean Modified data/int/order.lean Modified data/list/default.lean Modified data/list/perm.lean Modified data/list/set.lean Modified data/list/sort.lean Modified data/nat/bquant.lean Modified data/num/bitwise.lean Modified data/num/lemmas.lean Modified data/pfun.lean Modified data/set/default.lean Modified data/set/finite.lean Modified tools/parser/modal.lean Modified topology/continuity.lean Modified topology/uniform_space.lean 2017-07-23 15:16:51+01:00 deb1681 refactor(*): import content from lean/library/data and library_dev ESTIMATED CHANGES Added .gitignore Added algebra/group.lean + theorem eq_iff_eq_of_sub_eq_sub + theorem eq_iff_sub_eq_zero + theorem eq_inv_iff_eq_inv + theorem eq_of_mul_inv_eq_one + theorem eq_one_of_inv_eq_one + theorem eq_sub_iff_add_eq + theorem inv_eq_inv_iff_eq + theorem inv_eq_one_iff_eq_one + theorem left_inverse_add_left_sub + theorem left_inverse_add_right_neg_add + theorem left_inverse_inv + theorem left_inverse_neg_add_add_right + theorem left_inverse_sub_add_left + theorem mul_eq_iff_eq_inv_mul + theorem mul_eq_iff_eq_mul_inv + theorem sub_eq_iff_eq_add Added algebra/group_power.lean + def gpow + theorem gpow_add + theorem gpow_comm + theorem inv_pow + def monoid.pow + theorem mul_pow + theorem one_pow + theorem pow_add + theorem pow_comm + theorem pow_ge_one_of_ge_one + def pow_int + theorem pow_inv_comm + theorem pow_mul + def pow_nat + theorem pow_one + theorem pow_pos + theorem pow_sub + theorem pow_succ' + theorem pow_succ + theorem pow_zero Added algebra/lattice/README.md Added algebra/lattice/basic.lean + theorem lattice.bot_inf_eq + theorem lattice.bot_le + theorem lattice.bot_sup_eq + theorem lattice.bot_unique + theorem lattice.eq_bot_iff + theorem lattice.eq_top_iff + theorem lattice.inf_assoc + theorem lattice.inf_bot_eq + theorem lattice.inf_comm + theorem lattice.inf_eq_top_iff + theorem lattice.inf_idem + theorem lattice.inf_le_inf + theorem lattice.inf_le_left + theorem lattice.inf_le_left_of_le + theorem lattice.inf_le_right + theorem lattice.inf_le_right_of_le + theorem lattice.inf_of_le_left + theorem lattice.inf_of_le_right + theorem lattice.inf_sup_self + theorem lattice.inf_top_eq + theorem lattice.le_inf + theorem lattice.le_inf_iff + theorem lattice.le_inf_sup + theorem lattice.le_of_inf_eq + theorem lattice.le_of_sup_eq + theorem lattice.le_sup_left + theorem lattice.le_sup_left_of_le + theorem lattice.le_sup_right + theorem lattice.le_sup_right_of_le + theorem lattice.le_top + theorem lattice.neq_bot_of_le_neq_bot + theorem lattice.sup_assoc + theorem lattice.sup_bot_eq + theorem lattice.sup_comm + theorem lattice.sup_eq_bot_iff + theorem lattice.sup_idem + theorem lattice.sup_inf_le + theorem lattice.sup_inf_self + theorem lattice.sup_le + theorem lattice.sup_le_iff + theorem lattice.sup_le_sup + theorem lattice.sup_of_le_left + theorem lattice.sup_of_le_right + theorem lattice.sup_top_eq + theorem lattice.top_inf_eq + theorem lattice.top_sup_eq + theorem lattice.top_unique Added algebra/lattice/basic_experiment.lean + theorem lattice.bot_inf_eq + theorem lattice.bot_le + theorem lattice.bot_sup_eq + theorem lattice.bot_unique + theorem lattice.eq_bot_iff + theorem lattice.eq_top_iff + def lattice.imp + theorem lattice.inf_assoc + theorem lattice.inf_bot_eq + theorem lattice.inf_comm + theorem lattice.inf_eq_top_iff + theorem lattice.inf_idem + theorem lattice.inf_le_inf + theorem lattice.inf_le_left' + theorem lattice.inf_le_left + theorem lattice.inf_le_left_of_le + theorem lattice.inf_le_right' + theorem lattice.inf_le_right + theorem lattice.inf_le_right_of_le + theorem lattice.inf_of_le_left + theorem lattice.inf_of_le_right + theorem lattice.inf_sup_self + theorem lattice.inf_top_eq + theorem lattice.le_bot_iff + theorem lattice.le_inf + theorem lattice.le_inf_iff + theorem lattice.le_inf_sup + theorem lattice.le_of_inf_eq + theorem lattice.le_of_sup_eq + theorem lattice.le_sup_left' + theorem lattice.le_sup_left + theorem lattice.le_sup_left_of_le + theorem lattice.le_sup_right' + theorem lattice.le_sup_right + theorem lattice.le_sup_right_of_le + theorem lattice.le_top + theorem lattice.neq_bot_of_le_neq_bot + theorem lattice.sup_assoc + theorem lattice.sup_bot_eq + theorem lattice.sup_comm + theorem lattice.sup_eq_bot_iff + theorem lattice.sup_idem + theorem lattice.sup_inf_le + theorem lattice.sup_inf_self + theorem lattice.sup_le + theorem lattice.sup_le_iff + theorem lattice.sup_le_sup + theorem lattice.sup_of_le_left + theorem lattice.sup_of_le_right + theorem lattice.sup_top_eq + theorem lattice.top_inf_eq + theorem lattice.top_le_iff + theorem lattice.top_sup_eq + theorem lattice.top_unique + theorem le_antisymm' Added algebra/lattice/boolean_algebra.lean + theorem lattice.inf_neg_eq_bot + theorem lattice.inf_sup_left + theorem lattice.inf_sup_right + theorem lattice.le_neg_of_le_neg + theorem lattice.le_sup_inf + theorem lattice.neg_bot + theorem lattice.neg_eq_neg_iff + theorem lattice.neg_eq_neg_of_eq + theorem lattice.neg_inf + theorem lattice.neg_inf_eq_bot + theorem lattice.neg_le_iff_neg_le + theorem lattice.neg_le_neg + theorem lattice.neg_le_neg_iff_le + theorem lattice.neg_le_of_neg_le + theorem lattice.neg_neg + theorem lattice.neg_sup + theorem lattice.neg_sup_eq_top + theorem lattice.neg_top + theorem lattice.neg_unique + theorem lattice.sub_eq + theorem lattice.sub_eq_left + theorem lattice.sup_inf_left + theorem lattice.sup_inf_right + theorem lattice.sup_neg_eq_top + theorem lattice.sup_sub_same Added algebra/lattice/bounded_lattice.lean + theorem lattice.monotone_and + theorem lattice.monotone_or Added algebra/lattice/bounded_lattice_experiment.lean + theorem lattice.monotone_and + theorem lattice.monotone_or Added algebra/lattice/complete_boolean_algebra.lean + theorem lattice.inf_Sup_eq + theorem lattice.neg_Inf + theorem lattice.neg_Sup + theorem lattice.neg_infi + theorem lattice.neg_supr + theorem lattice.sup_Inf_eq Added algebra/lattice/complete_lattice.lean + def lattice.Inf + theorem lattice.Inf_empty + theorem lattice.Inf_eq_infi + theorem lattice.Inf_image + theorem lattice.Inf_insert + theorem lattice.Inf_le + theorem lattice.Inf_le_Inf + theorem lattice.Inf_le_Sup + theorem lattice.Inf_le_iff + theorem lattice.Inf_le_of_le + theorem lattice.Inf_singleton + theorem lattice.Inf_union + theorem lattice.Inf_univ + def lattice.Sup + theorem lattice.Sup_empty + theorem lattice.Sup_eq_supr + theorem lattice.Sup_image + theorem lattice.Sup_insert + theorem lattice.Sup_inter_le + theorem lattice.Sup_le + theorem lattice.Sup_le_Sup + theorem lattice.Sup_singleton + theorem lattice.Sup_union + theorem lattice.Sup_univ + def lattice.infi + theorem lattice.infi_and + theorem lattice.infi_comm + theorem lattice.infi_congr_Prop + theorem lattice.infi_const + theorem lattice.infi_empty + theorem lattice.infi_emptyset + theorem lattice.infi_exists + theorem lattice.infi_false + theorem lattice.infi_inf_eq + theorem lattice.infi_infi_eq_left + theorem lattice.infi_infi_eq_right + theorem lattice.infi_insert + theorem lattice.infi_le + theorem lattice.infi_le_infi2 + theorem lattice.infi_le_infi + theorem lattice.infi_le_infi_const + theorem lattice.infi_le_of_le + theorem lattice.infi_or + theorem lattice.infi_prod + theorem lattice.infi_sigma + theorem lattice.infi_singleton + theorem lattice.infi_subtype + theorem lattice.infi_sum + theorem lattice.infi_true + theorem lattice.infi_union + theorem lattice.infi_unit + theorem lattice.infi_univ + theorem lattice.insert_of_has_insert + theorem lattice.le_Inf + theorem lattice.le_Inf_inter + theorem lattice.le_Sup + theorem lattice.le_Sup_iff + theorem lattice.le_Sup_of_le + theorem lattice.le_infi + theorem lattice.le_infi_iff + theorem lattice.le_supr + theorem lattice.le_supr_of_le + theorem lattice.monotone_Inf_of_monotone + theorem lattice.monotone_Sup_of_monotone + def lattice.supr + theorem lattice.supr_and + theorem lattice.supr_comm + theorem lattice.supr_congr_Prop + theorem lattice.supr_const + theorem lattice.supr_empty + theorem lattice.supr_emptyset + theorem lattice.supr_exists + theorem lattice.supr_false + theorem lattice.supr_insert + theorem lattice.supr_le + theorem lattice.supr_le_iff + theorem lattice.supr_le_supr2 + theorem lattice.supr_le_supr + theorem lattice.supr_le_supr_const + theorem lattice.supr_or + theorem lattice.supr_prod + theorem lattice.supr_sigma + theorem lattice.supr_singleton + theorem lattice.supr_subtype + theorem lattice.supr_sum + theorem lattice.supr_sup_eq + theorem lattice.supr_supr_eq_left + theorem lattice.supr_supr_eq_right + theorem lattice.supr_true + theorem lattice.supr_union + theorem lattice.supr_unit + theorem lattice.supr_univ + theorem set.subset_union_left + theorem set.subset_union_right Added algebra/lattice/complete_lattice_experiment.lean + theorem insert_def + theorem insert_eq_of_mem + theorem insert_of_has_insert + theorem inter_def + theorem inter_left_comm + def lattice.Inf + theorem lattice.Inf_empty + theorem lattice.Inf_eq_infi + theorem lattice.Inf_image + theorem lattice.Inf_insert + theorem lattice.Inf_le + theorem lattice.Inf_le_Inf + theorem lattice.Inf_le_Sup + theorem lattice.Inf_le_iff + theorem lattice.Inf_le_of_le + theorem lattice.Inf_singleton + theorem lattice.Inf_union + theorem lattice.Inf_univ + def lattice.Sup + theorem lattice.Sup_empty + theorem lattice.Sup_eq_supr + theorem lattice.Sup_image + theorem lattice.Sup_insert + theorem lattice.Sup_inter_le + theorem lattice.Sup_le + theorem lattice.Sup_le_Sup + theorem lattice.Sup_singleton + theorem lattice.Sup_union + theorem lattice.Sup_univ + theorem lattice.foo' + theorem lattice.foo + def lattice.infi + theorem lattice.infi_and + theorem lattice.infi_comm + theorem lattice.infi_congr_Prop + theorem lattice.infi_const + theorem lattice.infi_empty + theorem lattice.infi_emptyset + theorem lattice.infi_exists + theorem lattice.infi_false + theorem lattice.infi_inf_eq + theorem lattice.infi_infi_eq_left + theorem lattice.infi_infi_eq_right + theorem lattice.infi_insert + theorem lattice.infi_le' + theorem lattice.infi_le + theorem lattice.infi_le_infi2 + theorem lattice.infi_le_infi + theorem lattice.infi_le_infi_const + theorem lattice.infi_le_of_le + theorem lattice.infi_or + theorem lattice.infi_prod + theorem lattice.infi_sigma + theorem lattice.infi_singleton + theorem lattice.infi_subtype + theorem lattice.infi_sum + theorem lattice.infi_true + theorem lattice.infi_union + theorem lattice.infi_unit + theorem lattice.infi_univ + theorem lattice.insert_of_has_insert + theorem lattice.le_Inf + theorem lattice.le_Inf_inter + theorem lattice.le_Sup + theorem lattice.le_Sup_iff + theorem lattice.le_Sup_of_le + theorem lattice.le_infi + theorem lattice.le_infi_iff + theorem lattice.le_supr' + theorem lattice.le_supr + theorem lattice.le_supr_of_le + theorem lattice.monotone_Inf_of_monotone + theorem lattice.monotone_Sup_of_monotone + def lattice.supr + theorem lattice.supr_and + theorem lattice.supr_comm + theorem lattice.supr_congr_Prop + theorem lattice.supr_const + theorem lattice.supr_empty + theorem lattice.supr_emptyset + theorem lattice.supr_exists + theorem lattice.supr_false + theorem lattice.supr_insert + theorem lattice.supr_le + theorem lattice.supr_le_iff + theorem lattice.supr_le_supr2 + theorem lattice.supr_le_supr + theorem lattice.supr_le_supr_const + theorem lattice.supr_or + theorem lattice.supr_prod + theorem lattice.supr_sigma + theorem lattice.supr_singleton + theorem lattice.supr_subtype + theorem lattice.supr_sum + theorem lattice.supr_sup_eq + theorem lattice.supr_supr_eq_left + theorem lattice.supr_supr_eq_right + theorem lattice.supr_true + theorem lattice.supr_union + theorem lattice.supr_unit + theorem lattice.supr_univ + theorem mem_insert_iff + theorem mem_inter_eq + theorem mem_set_of + theorem mem_set_of_eq + theorem mem_singleton + theorem mem_singleton_iff + theorem mem_union_eq + theorem mem_univ_eq + theorem nmem_set_of_eq + theorem set_eq_def + theorem set_of_false + theorem singleton_def + theorem singleton_eq_singleton_iff + theorem subset_def + theorem subset_insert + theorem subset_univ + theorem union_def + theorem union_left_comm Added algebra/lattice/default.lean Added algebra/lattice/filter.lean + theorem Union_subset_Union2 + theorem Union_subset_Union + theorem Union_subset_Union_const + theorem bind_assoc + theorem compl_image_set_of + theorem diff_empty + theorem diff_neq_empty + def directed + theorem directed_of_chain + def directed_on + theorem directed_on_Union + theorem eq_of_sup_eq_inf_eq + theorem filter.Inf_sets_eq_finite + theorem filter.Inter_mem_sets + def filter.at_bot + def filter.at_top + theorem filter.bind_def + theorem filter.bind_mono2 + theorem filter.bind_mono + theorem filter.bind_sup + theorem filter.binfi_sup_eq + def filter.cofinite + theorem filter.empty_in_sets_eq_bot + theorem filter.exists_sets_subset_iff + theorem filter.exists_ultrafilter + theorem filter.filter_eq + theorem filter.filter_eq_bot_of_not_nonempty + theorem filter.fmap_principal + theorem filter.forall_sets_neq_empty_iff_neq_bot + theorem filter.image_mem_map + theorem filter.inf_principal + theorem filter.infi_neq_bot_iff_of_directed + theorem filter.infi_neq_bot_of_directed + theorem filter.infi_sets_eq' + theorem filter.infi_sets_eq + theorem filter.infi_sets_induct + theorem filter.infi_sup_eq + theorem filter.inhabited_of_mem_sets + theorem filter.inter_mem_sets + def filter.join + theorem filter.join_principal_eq_Sup + theorem filter.le_lift' + theorem filter.le_map_vmap + theorem filter.le_of_ultrafilter + theorem filter.le_principal_iff + theorem filter.le_vmap_iff_map_le + theorem filter.le_vmap_map + theorem filter.lift'_cong + theorem filter.lift'_id + theorem filter.lift'_inf_principal_eq + theorem filter.lift'_infi + theorem filter.lift'_lift'_assoc + theorem filter.lift'_lift_assoc + theorem filter.lift'_mono' + theorem filter.lift'_mono + theorem filter.lift'_neq_bot_iff + theorem filter.lift'_principal + theorem filter.lift_assoc + theorem filter.lift_comm + theorem filter.lift_infi' + theorem filter.lift_infi + theorem filter.lift_lift'_assoc + theorem filter.lift_lift'_same_eq_lift' + theorem filter.lift_lift'_same_le_lift' + theorem filter.lift_lift_same_eq_lift + theorem filter.lift_lift_same_le_lift + theorem filter.lift_mono' + theorem filter.lift_mono + theorem filter.lift_neq_bot_iff + theorem filter.lift_principal + theorem filter.lift_sets_eq + def filter.map + theorem filter.map_binfi_eq + theorem filter.map_bot + theorem filter.map_compose + theorem filter.map_eq_bot_iff + theorem filter.map_eq_vmap_of_inverse + theorem filter.map_id + theorem filter.map_infi_eq + theorem filter.map_infi_le + theorem filter.map_lift'_eq2 + theorem filter.map_lift'_eq + theorem filter.map_lift_eq2 + theorem filter.map_lift_eq + theorem filter.map_mono + theorem filter.map_principal + theorem filter.map_sup + theorem filter.map_swap_vmap_swap_eq + theorem filter.map_vmap_le + theorem filter.mem_bind_sets + theorem filter.mem_bot_sets + theorem filter.mem_inf_sets + theorem filter.mem_inf_sets_of_left + theorem filter.mem_inf_sets_of_right + theorem filter.mem_infi_sets + theorem filter.mem_join_sets + theorem filter.mem_lift' + theorem filter.mem_lift'_iff + theorem filter.mem_lift + theorem filter.mem_lift_iff + theorem filter.mem_map + theorem filter.mem_of_finite_Union_ultrafilter + theorem filter.mem_of_finite_sUnion_ultrafilter + theorem filter.mem_or_compl_mem_of_ultrafilter + theorem filter.mem_or_mem_of_ultrafilter + theorem filter.mem_principal_sets + theorem filter.mem_prod_iff + theorem filter.mem_prod_same_iff + theorem filter.mem_pure + theorem filter.mem_return_sets + theorem filter.mem_sets_of_neq_bot + theorem filter.mem_sup_sets + theorem filter.mem_top_sets_iff + theorem filter.mem_vmap_of_mem + theorem filter.monotone_lift' + theorem filter.monotone_lift + theorem filter.monotone_map + theorem filter.monotone_mem_sets + theorem filter.monotone_principal + theorem filter.monotone_vmap + def filter.principal + theorem filter.principal_bind + theorem filter.principal_empty + theorem filter.principal_eq_bot_iff + theorem filter.principal_eq_iff_eq + theorem filter.principal_le_lift' + theorem filter.principal_mono + theorem filter.principal_univ + theorem filter.prod_comm + theorem filter.prod_inf_prod + theorem filter.prod_lift'_lift' + theorem filter.prod_lift_lift + theorem filter.prod_map_map_eq + theorem filter.prod_mem_prod + theorem filter.prod_mono + theorem filter.prod_neq_bot + theorem filter.prod_principal_principal + theorem filter.prod_same_eq + theorem filter.prod_vmap_vmap_eq + theorem filter.pure_def + theorem filter.return_neq_bot + theorem filter.seq_mono + theorem filter.sup_join + theorem filter.sup_principal + theorem filter.supr_join + theorem filter.supr_map + theorem filter.supr_principal + theorem filter.supr_sets_eq + def filter.towards + def filter.ultrafilter + theorem filter.ultrafilter_map + theorem filter.ultrafilter_of_le + theorem filter.ultrafilter_of_spec + theorem filter.ultrafilter_of_split + theorem filter.ultrafilter_of_ultrafilter + theorem filter.ultrafilter_pure + theorem filter.ultrafilter_ultrafilter_of + theorem filter.ultrafilter_unique + theorem filter.univ_mem_sets' + theorem filter.univ_mem_sets + theorem filter.vimage_mem_vmap + def filter.vmap + theorem filter.vmap_eq_lift' + theorem filter.vmap_lift'_eq2 + theorem filter.vmap_lift'_eq + theorem filter.vmap_lift_eq2 + theorem filter.vmap_lift_eq + theorem filter.vmap_map + theorem filter.vmap_mono + theorem filter.vmap_neq_bot + theorem filter.vmap_neq_bot_of_surj + theorem filter.vmap_principal + theorem filter.vmap_vmap_comp + structure filter + theorem implies_implies_true_iff + theorem inf_eq_bot_iff_le_compl + theorem lattice.Inf_eq_finite_sets + theorem lattice.Sup_le_iff + theorem map_bind + theorem neg_subset_neg_iff_subset + theorem not_not_mem_iff + theorem prod.fst_swap + theorem prod.mk.eta + theorem prod.snd_swap + def prod.swap + theorem prod.swap_prod_mk + theorem prod.swap_swap + theorem prod.swap_swap_eq + theorem pure_seq_eq_map + theorem sUnion_eq_Union + theorem sUnion_mono + theorem seq_bind_eq + theorem seq_eq_bind_map + theorem set.bind_def + theorem set.diff_right_antimono + theorem set.fmap_eq_image + theorem set.image_eq_vimage_of_inverse + theorem set.image_swap_eq_vimage_swap + theorem set.image_swap_prod + theorem set.mem_image_iff_of_inverse + theorem set.mem_prod_eq + theorem set.mem_seq_iff + theorem set.monotone_inter + theorem set.monotone_prod + theorem set.monotone_set_of + theorem set.ne_empty_iff_exists_mem + theorem set.prod_image_image_eq + theorem set.prod_inter_prod + theorem set.prod_mk_mem_set_prod_eq + theorem set.prod_mono + theorem set.prod_neq_empty_iff + theorem set.prod_singleton_singleton + theorem set.prod_vimage_eq + theorem set.set_of_mem_eq + theorem set.vimage_set_of_eq + theorem singleton_neq_emptyset + def upwards Added algebra/lattice/fixed_points.lean + theorem ge_of_eq + def lattice.gfp + theorem lattice.gfp_comp + theorem lattice.gfp_eq + theorem lattice.gfp_gfp + theorem lattice.gfp_induct + theorem lattice.gfp_le + theorem lattice.le_gfp + theorem lattice.le_lfp + def lattice.lfp + theorem lattice.lfp_comp + theorem lattice.lfp_eq + theorem lattice.lfp_induct + theorem lattice.lfp_le + theorem lattice.lfp_lfp + theorem lattice.monotone_gfp + theorem lattice.monotone_lfp Added algebra/lattice/zorn.lean + def zorn.chain + theorem zorn.chain_chain_closure + inductive zorn.chain_closure + theorem zorn.chain_closure_closure + theorem zorn.chain_closure_empty + theorem zorn.chain_closure_succ_fixpoint + theorem zorn.chain_closure_succ_fixpoint_iff + theorem zorn.chain_closure_total + theorem zorn.chain_insert + theorem zorn.chain_succ + def zorn.is_max_chain + def zorn.max_chain + theorem zorn.max_chain_spec + def zorn.succ_chain + theorem zorn.succ_increasing + theorem zorn.succ_spec + def zorn.super_chain + theorem zorn.super_of_not_max + theorem zorn.zorn + theorem zorn.zorn_weak_order Added algebra/order.lean + theorem comp_le_comp_left_of_monotone + theorem le_dual_eq_le + theorem le_max_left_iff_true + theorem le_max_right_iff_true + theorem max.left_comm + theorem max.right_comm + theorem min_right_comm + def monotone + theorem monotone_app + theorem monotone_comp + theorem monotone_const + theorem monotone_id + theorem monotone_lam + def weak_order_dual Added algebra/ring.lean + theorem eq_of_mul_eq_mul_left_of_ne_zero + theorem eq_of_mul_eq_mul_right_of_ne_zero + theorem mul_add_eq_mul_add_iff_sub_mul_add_eq + theorem mul_neg_one_eq_neg + theorem ne_zero_and_ne_zero_of_mul_ne_zero + theorem sub_mul_add_eq_of_mul_add_eq_mul_add Added data/bitvec.lean + def bitvec.adc + def bitvec.add_lsb + def bitvec.and + def bitvec.append + def bitvec.bits_to_nat + theorem bitvec.bits_to_nat_to_bool + theorem bitvec.bits_to_nat_to_list + def bitvec.fill_shr + def bitvec.not + theorem bitvec.of_nat_succ + def bitvec.or + def bitvec.sbb + def bitvec.sborrow + def bitvec.sge + def bitvec.sgt + def bitvec.shl + def bitvec.sle + def bitvec.slt + def bitvec.sshr + theorem bitvec.to_nat_append + theorem bitvec.to_nat_of_nat + def bitvec.uborrow + def bitvec.uge + def bitvec.ugt + def bitvec.ule + def bitvec.ult + def bitvec.ushr + def bitvec.xor + def bitvec Added data/bool.lean + theorem bool.absurd_of_eq_ff_of_eq_tt + theorem bool.band_assoc + theorem bool.band_comm + theorem bool.band_elim_left + theorem bool.band_elim_right + theorem bool.band_eq_ff + theorem bool.band_eq_tt + theorem bool.band_ff + theorem bool.band_intro + theorem bool.band_left_comm + theorem bool.band_self + theorem bool.band_tt + theorem bool.bnot_bnot + theorem bool.bnot_false + theorem bool.bnot_true + theorem bool.bor_assoc + theorem bool.bor_comm + theorem bool.bor_eq_ff + theorem bool.bor_eq_tt + theorem bool.bor_ff + theorem bool.bor_inl + theorem bool.bor_inr + theorem bool.bor_left_comm + theorem bool.bor_tt + def bool.bxor + theorem bool.bxor_assoc + theorem bool.bxor_comm + theorem bool.bxor_ff + theorem bool.bxor_left_comm + theorem bool.bxor_self + theorem bool.bxor_tt + theorem bool.coe_tt + theorem bool.cond_ff + theorem bool.cond_tt + theorem bool.dichotomy + theorem bool.eq_ff_of_bnot_eq_tt + theorem bool.eq_ff_of_ne_tt + theorem bool.eq_tt_of_bnot_eq_ff + theorem bool.eq_tt_of_ne_ff + theorem bool.ff_band + theorem bool.ff_bor + theorem bool.ff_bxor + theorem bool.ff_bxor_ff + theorem bool.ff_bxor_tt + theorem bool.or_of_bor_eq + theorem bool.tt_band + theorem bool.tt_bor + theorem bool.tt_bxor + theorem bool.tt_bxor_ff + theorem bool.tt_bxor_tt Added data/fin.lean + theorem eq_of_lt_succ_of_not_lt + theorem lt_succ_of_lt + def raise_fin Added data/hash_map.lean + def bucket_array.as_list + def bucket_array.foldl + theorem bucket_array.foldl_eq + theorem bucket_array.foldl_eq_lem + theorem bucket_array.mem_as_list + def bucket_array.modify + def bucket_array.read + def bucket_array.write + def bucket_array + theorem hash_map.append_of_modify + theorem hash_map.append_of_modify_aux + def hash_map.contains + def hash_map.contains_aux + theorem hash_map.contains_aux_iff + theorem hash_map.contains_iff + def hash_map.entries + theorem hash_map.entries_empty + def hash_map.erase + def hash_map.erase_aux + def hash_map.find + def hash_map.find_aux + theorem hash_map.find_aux_iff + theorem hash_map.find_empty + theorem hash_map.find_erase + theorem hash_map.find_erase_eq + theorem hash_map.find_erase_ne + theorem hash_map.find_iff + theorem hash_map.find_insert + theorem hash_map.find_insert_eq + theorem hash_map.find_insert_ne + def hash_map.fold + def hash_map.insert + def hash_map.insert_all + theorem hash_map.insert_lemma + def hash_map.keys + theorem hash_map.keys_empty + theorem hash_map.mem_erase + theorem hash_map.mem_insert + theorem hash_map.mk_as_list + def hash_map.mk_idx + theorem hash_map.not_contains_empty + def hash_map.of_list + def hash_map.reinsert_aux + def hash_map.replace_aux + theorem hash_map.valid.as_list_length + theorem hash_map.valid.as_list_nodup + theorem hash_map.valid.contains_aux_iff + theorem hash_map.valid.eq' + theorem hash_map.valid.eq + theorem hash_map.valid.erase + theorem hash_map.valid.erase_aux + theorem hash_map.valid.find_aux_iff + theorem hash_map.valid.insert + theorem hash_map.valid.mk + theorem hash_map.valid.modify + theorem hash_map.valid.modify_aux1 + theorem hash_map.valid.modify_aux2 + theorem hash_map.valid.nodup + theorem hash_map.valid.replace + theorem hash_map.valid.replace_aux + def hash_map.valid + theorem hash_map.valid_aux.eq + theorem hash_map.valid_aux.insert_lemma1 + theorem hash_map.valid_aux.nodup + theorem hash_map.valid_aux.unfold_cons + inductive hash_map.valid_aux + structure hash_map + def mk_hash_map Added data/int/basic.lean + theorem int.neg_add_neg + theorem int.of_nat_add_neg_succ_of_nat_of_ge + theorem int.of_nat_add_neg_succ_of_nat_of_lt + def nat_succ_eq_int_succ + theorem neg_nat_succ + theorem neg_pred + theorem neg_succ + theorem neg_succ_of_nat_eq' + theorem of_nat_sub + def pred + theorem pred_nat_succ + theorem pred_neg_pred + theorem pred_succ + def rec_nat_on + theorem rec_nat_on_neg + def succ + theorem succ_neg_nat_succ + theorem succ_neg_succ + theorem succ_pred Added data/int/order.lean Added data/lazy_list.lean + def lazy_list.append + def lazy_list.approx + def lazy_list.filter + def lazy_list.for + def lazy_list.head + def lazy_list.join + def lazy_list.map + def lazy_list.map₂ + def lazy_list.nth + def lazy_list.of_list + def lazy_list.singleton + def lazy_list.tail + def lazy_list.to_list + def lazy_list.zip + inductive lazy_list Added data/list/basic.lean + theorem list.append.assoc + theorem list.append_concat + theorem list.concat_append + theorem list.concat_cons + theorem list.concat_ne_nil + theorem list.concat_nil + theorem list.cons_inj + theorem list.cons_ne_nil + def list.count + theorem list.count_append + theorem list.count_concat + theorem list.count_cons' + theorem list.count_cons + theorem list.count_cons_ge_count + theorem list.count_cons_of_ne + theorem list.count_cons_self + theorem list.count_eq_zero_of_not_mem + theorem list.count_nil + theorem list.count_pos_of_mem + theorem list.count_singleton + theorem list.head_cons + theorem list.head_eq_of_cons_eq + theorem list.index_of_cons + theorem list.index_of_cons_of_eq + theorem list.index_of_cons_of_ne + theorem list.index_of_le_length + theorem list.index_of_lt_length + theorem list.index_of_nil + theorem list.index_of_nth + theorem list.index_of_of_not_mem + def list.inth + theorem list.inth_succ + theorem list.inth_zero + def list.ith + theorem list.ith_succ + theorem list.ith_zero + theorem list.last_congr + theorem list.last_cons_cons + theorem list.last_singleton + theorem list.length_taken_le + theorem list.mem_iff_count_pos + theorem list.mem_of_count_pos + theorem list.not_mem_of_count_eq_zero + theorem list.not_mem_of_index_of_eq_length + theorem list.nth_eq_some + def list.permutations + def list.permutations_aux.F + def list.permutations_aux.eqn_1 + def list.permutations_aux.eqn_2 + def list.permutations_aux2 + def list.permutations_aux + theorem list.tail_cons + theorem list.tail_eq_of_cons_eq + theorem list.tail_nil + theorem list.taken_all + theorem list.taken_all_of_ge + theorem list.taken_cons + theorem list.taken_nil + theorem list.taken_zero Added data/list/comb.lean + theorem list.all_cons + theorem list.all_eq_tt_iff + theorem list.all_eq_tt_of_forall + theorem list.all_nil + theorem list.any_cons + theorem list.any_eq_tt_iff + theorem list.any_nil + theorem list.any_of_mem + def list.decidable_exists_mem + def list.decidable_forall_mem + def list.dinj + def list.dinj₁ + def list.dmap + theorem list.dmap_cons_of_neg + theorem list.dmap_cons_of_pos + theorem list.dmap_nil + theorem list.eq_of_mem_map_pair₁ + theorem list.exists_mem_cons_iff + theorem list.exists_mem_cons_of + theorem list.exists_mem_cons_of_exists + theorem list.exists_of_any_eq_tt + theorem list.exists_of_mem_dmap + def list.flat + theorem list.foldl_append + theorem list.foldl_cons + theorem list.foldl_eq_foldr + theorem list.foldl_eq_of_comm_of_assoc + theorem list.foldl_nil + theorem list.foldl_reverse + theorem list.foldr_append + theorem list.foldr_cons + theorem list.foldr_nil + theorem list.foldr_reverse + theorem list.forall_mem_cons + theorem list.forall_mem_cons_iff + theorem list.forall_mem_eq_tt_of_all_eq_tt + theorem list.forall_mem_nil + theorem list.forall_mem_of_forall_mem_cons + theorem list.length_mapAccumR + theorem list.length_mapAccumR₂ + theorem list.length_map_accumr + theorem list.length_map_accumr₂ + theorem list.length_product + theorem list.length_replicate + def list.mapAccumR + def list.mapAccumR₂ + def list.map_accumr + def list.map_accumr₂ + theorem list.map_dmap_of_inv_of_pos + theorem list.map₂_nil1 + theorem list.map₂_nil2 + theorem list.mem_dmap + theorem list.mem_of_dinj_of_mem_dmap + theorem list.mem_of_mem_map_pair₁ + theorem list.mem_of_mem_product_left + theorem list.mem_of_mem_product_right + theorem list.mem_product + theorem list.nil_product + theorem list.not_exists_mem_nil + theorem list.not_mem_dmap_of_dinj_of_not_mem + theorem list.of_forall_mem_cons + theorem list.or_exists_of_exists_mem_cons + def list.product + theorem list.product_cons + theorem list.product_nil + def list.replicate + theorem list.unzip_cons' + theorem list.unzip_cons + theorem list.unzip_nil + theorem list.zip_cons_cons + theorem list.zip_nil_left + theorem list.zip_nil_right + theorem list.zip_unzip Added data/list/default.lean Added data/list/perm.lean + theorem list.perm.count_eq_count_of_perm + theorem list.perm.eq_nil_of_perm_nil + theorem list.perm.eq_singleton_of_perm + theorem list.perm.eq_singleton_of_perm_inv + theorem list.perm.eqv + theorem list.perm.erase_perm_erase_of_perm + theorem list.perm.foldl_eq_of_perm + theorem list.perm.foldr_eq_of_perm + theorem list.perm.length_eq_length_of_perm + theorem list.perm.length_eq_of_qeq + theorem list.perm.mem_cons_of_qeq + theorem list.perm.mem_head_of_qeq + theorem list.perm.mem_iff_mem_of_perm + theorem list.perm.mem_of_perm + theorem list.perm.mem_tail_of_qeq + theorem list.perm.nodup_of_perm_of_nodup + theorem list.perm.not_mem_of_perm + theorem list.perm.not_perm_nil_cons + theorem list.perm.perm_app + theorem list.perm.perm_app_comm + theorem list.perm.perm_app_inv + theorem list.perm.perm_app_inv_left + theorem list.perm.perm_app_inv_right + theorem list.perm.perm_app_left + theorem list.perm.perm_app_right + theorem list.perm.perm_cons_app + theorem list.perm.perm_cons_app_cons + theorem list.perm.perm_cons_app_simp + theorem list.perm.perm_cons_inv + theorem list.perm.perm_erase + theorem list.perm.perm_erase_dup_of_perm + theorem list.perm.perm_ext + theorem list.perm.perm_filter + theorem list.perm.perm_iff_forall_count_eq_count + theorem list.perm.perm_iff_forall_mem_count_eq_count + theorem list.perm.perm_induction_on + theorem list.perm.perm_insert + theorem list.perm.perm_insert_insert + theorem list.perm.perm_inter + theorem list.perm.perm_inter_left + theorem list.perm.perm_inter_right + theorem list.perm.perm_inv_core + theorem list.perm.perm_map + theorem list.perm.perm_middle + theorem list.perm.perm_middle_simp + theorem list.perm.perm_of_forall_count_eq + theorem list.perm.perm_of_qeq + theorem list.perm.perm_product + theorem list.perm.perm_product_left + theorem list.perm.perm_product_right + theorem list.perm.perm_rev + theorem list.perm.perm_rev_simp + theorem list.perm.perm_union + theorem list.perm.perm_union_left + theorem list.perm.perm_union_right + inductive list.perm.qeq + theorem list.perm.qeq_app + theorem list.perm.qeq_of_mem + theorem list.perm.qeq_split + theorem list.perm.xswap + inductive list.perm Added data/list/set.lean + theorem list.disjoint.comm + def list.disjoint + theorem list.disjoint_append_of_disjoint_left + theorem list.disjoint_cons_of_not_mem_of_disjoint + theorem list.disjoint_left + theorem list.disjoint_nil_left + theorem list.disjoint_nil_right + theorem list.disjoint_of_disjoint_append_left_left + theorem list.disjoint_of_disjoint_append_left_right + theorem list.disjoint_of_disjoint_append_right_left + theorem list.disjoint_of_disjoint_append_right_right + theorem list.disjoint_of_disjoint_cons_left + theorem list.disjoint_of_disjoint_cons_right + theorem list.disjoint_of_nodup_append + theorem list.disjoint_of_subset_left + theorem list.disjoint_of_subset_right + theorem list.disjoint_right + theorem list.dmap_nodup_of_dinj + theorem list.eq_or_mem_of_mem_insert + theorem list.erase_append_left + theorem list.erase_append_right + theorem list.erase_cons + theorem list.erase_cons_head + theorem list.erase_cons_tail + def list.erase_dup + theorem list.erase_dup_cons_of_mem + theorem list.erase_dup_cons_of_not_mem + theorem list.erase_dup_eq_of_nodup + theorem list.erase_dup_nil + theorem list.erase_dup_sublist + theorem list.erase_dup_subset + theorem list.erase_nil + theorem list.erase_of_not_mem + theorem list.erase_sublist + theorem list.erase_subset + theorem list.forall_mem_insert_of_forall_mem + theorem list.forall_mem_inter_of_forall_left + theorem list.forall_mem_inter_of_forall_right + theorem list.forall_mem_of_forall_mem_union_left + theorem list.forall_mem_of_forall_mem_union_right + theorem list.forall_mem_union + theorem list.insert.def + theorem list.insert_nil + theorem list.insert_of_mem + theorem list.insert_of_not_mem + theorem list.inter_cons_of_mem + theorem list.inter_cons_of_not_mem + theorem list.inter_eq_nil_of_disjoint + theorem list.inter_nil + theorem list.length_erase_of_mem + theorem list.length_insert_of_mem + theorem list.length_insert_of_not_mem + theorem list.length_upto + theorem list.lt_of_mem_upto + theorem list.mem_erase_dup + theorem list.mem_erase_dup_iff + theorem list.mem_erase_of_ne_of_mem + theorem list.mem_erase_of_nodup + theorem list.mem_insert_iff + theorem list.mem_insert_of_mem + theorem list.mem_insert_self + theorem list.mem_inter_iff + theorem list.mem_inter_of_mem_of_mem + theorem list.mem_of_mem_erase + theorem list.mem_of_mem_erase_dup + theorem list.mem_of_mem_inter_left + theorem list.mem_of_mem_inter_right + theorem list.mem_or_mem_of_mem_union + theorem list.mem_union_iff + theorem list.mem_union_left + theorem list.mem_union_right + theorem list.mem_upto_of_lt + theorem list.mem_upto_succ_of_mem_upto + inductive list.nodup + theorem list.nodup_app_comm + theorem list.nodup_append_of_nodup_of_nodup_of_disjoint + theorem list.nodup_concat + theorem list.nodup_cons + theorem list.nodup_erase_dup + theorem list.nodup_erase_of_nodup + theorem list.nodup_filter + theorem list.nodup_head + theorem list.nodup_insert + theorem list.nodup_inter_of_nodup + theorem list.nodup_map + theorem list.nodup_middle + theorem list.nodup_nil + theorem list.nodup_of_nodup_append_left + theorem list.nodup_of_nodup_append_right + theorem list.nodup_of_nodup_cons + theorem list.nodup_of_nodup_map + theorem list.nodup_of_sublist + theorem list.nodup_product + theorem list.nodup_singleton + theorem list.nodup_union_of_nodup_of_nodup + theorem list.nodup_upto + theorem list.not_mem_of_nodup_cons + theorem list.not_nodup_cons_of_mem + theorem list.not_nodup_cons_of_not_nodup + theorem list.subset_erase_dup + theorem list.union_cons + theorem list.union_nil + def list.upto + theorem list.upto_ne_nil_of_ne_zero + theorem list.upto_nil + theorem list.upto_step + theorem list.upto_succ Added data/list/sort.lean + theorem list.forall_mem_rel_of_sorted_cons + def list.insertion_sort + theorem list.length_split_le + theorem list.length_split_lt + def list.merge + def list.merge_sort + theorem list.merge_sort_cons_cons + def list.ordered_insert + theorem list.perm_insertion_sort + theorem list.perm_merge + theorem list.perm_merge_sort + theorem list.perm_ordered_insert + theorem list.perm_split + def list.sorted + theorem list.sorted_cons + theorem list.sorted_insert_sort + theorem list.sorted_merge + theorem list.sorted_merge_sort + theorem list.sorted_nil + theorem list.sorted_of_sorted_cons + theorem list.sorted_ordered_insert + theorem list.sorted_singleton + def list.split + theorem list.split_cons_of_eq + theorem nat.add_pos_iff_pos_or_pos + theorem nat.add_pos_left + theorem nat.add_pos_right + theorem nat.lt_succ_iff_le + theorem nat.succ_le_succ_iff Added data/nat/basic.lean + def iterate + theorem nat.add_eq_addl + theorem nat.add_one + theorem nat.add_one_ne_zero + def nat.addl + theorem nat.addl_succ_left + theorem nat.addl_succ_right + theorem nat.addl_zero_left + theorem nat.addl_zero_right + theorem nat.discriminate + theorem nat.eq_zero_of_add_eq_zero + theorem nat.eq_zero_or_eq_succ_pred + theorem nat.exists_eq_succ_of_ne_zero + theorem nat.one_add + theorem nat.one_succ_zero + theorem nat.sub_induction + theorem nat.succ_add_eq_succ_add + theorem nat.succ_inj + theorem nat.two_step_induction + theorem nat.zero_has_zero Added data/nat/bquant.lean + def ball' + def ball + theorem ball_of_ball_succ' + theorem ball_of_ball_succ + theorem ball_succ_of_ball + theorem ball_zero' + theorem ball_zero + theorem not_ball_of_not + theorem not_ball_succ_of_not_ball + def step_p Added data/nat/gcd.lean + theorem nat.comprime_one_left + theorem nat.comprime_one_right + theorem nat.coprime_div_gcd_div_gcd + theorem nat.coprime_mul + theorem nat.coprime_mul_right + theorem nat.coprime_of_coprime_dvd_left + theorem nat.coprime_of_coprime_dvd_right + theorem nat.coprime_of_coprime_mul_left + theorem nat.coprime_of_coprime_mul_left_right + theorem nat.coprime_of_coprime_mul_right + theorem nat.coprime_of_coprime_mul_right_right + theorem nat.coprime_of_dvd' + theorem nat.coprime_of_dvd + theorem nat.coprime_pow + theorem nat.coprime_pow_left + theorem nat.coprime_pow_right + theorem nat.coprime_swap + theorem nat.dvd_gcd + theorem nat.dvd_lcm_left + theorem nat.dvd_lcm_right + theorem nat.dvd_of_coprime_of_dvd_mul_left + theorem nat.dvd_of_coprime_of_dvd_mul_right + theorem nat.eq_zero_of_gcd_eq_zero_left + theorem nat.eq_zero_of_gcd_eq_zero_right + theorem nat.exists_coprime + theorem nat.exists_eq_prod_and_dvd_and_dvd + theorem nat.gcd_assoc + theorem nat.gcd_comm + theorem nat.gcd_div + theorem nat.gcd_dvd + theorem nat.gcd_dvd_gcd_mul_left + theorem nat.gcd_dvd_gcd_mul_left_right + theorem nat.gcd_dvd_gcd_mul_right + theorem nat.gcd_dvd_gcd_mul_right_right + theorem nat.gcd_dvd_gcd_of_dvd_left + theorem nat.gcd_dvd_gcd_of_dvd_right + theorem nat.gcd_dvd_left + theorem nat.gcd_dvd_right + theorem nat.gcd_eq_one_of_coprime + theorem nat.gcd_mul_lcm + theorem nat.gcd_mul_left + theorem nat.gcd_mul_left_cancel_of_coprime + theorem nat.gcd_mul_left_cancel_of_coprime_right + theorem nat.gcd_mul_right + theorem nat.gcd_mul_right_cancel_of_coprime + theorem nat.gcd_mul_right_cancel_of_coprime_right + theorem nat.gcd_one_right + theorem nat.gcd_pos_of_pos_left + theorem nat.gcd_pos_of_pos_right + theorem nat.lcm_assoc + theorem nat.lcm_comm + theorem nat.lcm_dvd + theorem nat.lcm_one_left + theorem nat.lcm_one_right + theorem nat.lcm_self + theorem nat.lcm_zero_left + theorem nat.lcm_zero_right + theorem nat.not_coprime_of_dvd_of_dvd Added data/nat/sub.lean + theorem nat.dist.def + theorem nat.dist.triangle_inequality + def nat.dist + theorem nat.dist_add_add_left + theorem nat.dist_add_add_right + theorem nat.dist_comm + theorem nat.dist_eq_intro + theorem nat.dist_eq_sub_of_ge + theorem nat.dist_eq_sub_of_le + theorem nat.dist_eq_zero + theorem nat.dist_mul_left + theorem nat.dist_mul_right + theorem nat.dist_pos_of_ne + theorem nat.dist_self + theorem nat.dist_succ_succ + theorem nat.dist_zero_left + theorem nat.dist_zero_right + theorem nat.eq_of_dist_eq_zero Added data/num/basic.lean + def cast_num + def cast_pos_num + def int.of_snum + def int.of_znum + def nat.of_num + def nat.of_pos_num + def num.bit + def num.cmp + def num.of_nat + def num.pred + def num.size + def num.succ' + def num.succ + def num.to_znum + inductive num + def nzsnum.bit0 + def nzsnum.bit1 + def nzsnum.drec' + def nzsnum.head + def nzsnum.not + def nzsnum.sign + def nzsnum.tail + inductive nzsnum + def pos_num.bit + def pos_num.cmp + def pos_num.is_one + def pos_num.of_nat + def pos_num.of_nat_succ + def pos_num.pred' + def pos_num.pred + def pos_num.psub + def pos_num.size + def pos_num.succ + inductive pos_num + def snum.bit0 + def snum.bit1 + def snum.bit + theorem snum.bit_one + theorem snum.bit_zero + def snum.bits + def snum.cadd + def snum.czadd + def snum.drec' + def snum.head + def snum.not + def snum.pred + def snum.rec' + def snum.sign + def snum.succ + def snum.tail + def snum.test_bit + inductive snum + def znum.pred + def znum.succ + def znum.zneg + inductive znum Added data/num/bitwise.lean + def num.land + def num.ldiff + def num.lor + def num.lxor + def num.one_bits + def num.shiftl + def num.shiftr + def num.test_bit + def pos_num.land + def pos_num.ldiff + def pos_num.lor + def pos_num.lxor + def pos_num.one_bits + def pos_num.shiftl + def pos_num.shiftr + def pos_num.test_bit Added data/num/lemmas.lean + theorem num.add_of_nat + theorem num.add_succ + theorem num.add_to_nat + theorem num.add_zero + theorem num.bit_to_nat + theorem num.bitwise_to_nat + theorem num.cmp_dec + theorem num.cmp_swap + theorem num.land_to_nat + theorem num.ldiff_to_nat + theorem num.le_iff_cmp + theorem num.lor_to_nat + theorem num.lt_iff_cmp + theorem num.lxor_to_nat + theorem num.mul_to_nat + theorem num.of_nat_inj + theorem num.of_to_nat + theorem num.one_to_nat + theorem num.pred_to_nat + theorem num.shiftl_to_nat + theorem num.shiftr_to_nat + theorem num.succ'_to_nat + theorem num.succ_to_nat + theorem num.test_bit_to_nat + theorem num.to_nat_inj + theorem num.to_of_nat + theorem num.zero_add + theorem num.zero_to_nat + theorem pos_num.add_one + theorem pos_num.add_succ + theorem pos_num.add_to_nat + theorem pos_num.bit0_of_bit0 + theorem pos_num.bit1_of_bit1 + theorem pos_num.bit_to_nat + theorem pos_num.cmp_dec + theorem pos_num.cmp_dec_lemma + theorem pos_num.cmp_swap + theorem pos_num.le_iff_cmp + theorem pos_num.lt_iff_cmp + theorem pos_num.mul_to_nat + theorem pos_num.of_to_nat + theorem pos_num.one_add + theorem pos_num.one_to_nat + theorem pos_num.pred'_to_nat + theorem pos_num.pred_to_nat + theorem pos_num.succ_to_nat + theorem pos_num.to_nat_inj + theorem pos_num.to_nat_pos Added data/pfun.lean + def pfun.as_subtype + theorem pfun.bind_defined + def pfun.dom + theorem pfun.dom_iff_graph + def pfun.eval_opt + def pfun.fn + def pfun.graph + theorem pfun.pure_defined + def pfun.ran + def pfun.restrict + def pfun + def roption.assert + theorem roption.assert_defined + theorem roption.bind_assoc + theorem roption.bind_defined + theorem roption.bind_some_eq_map + theorem roption.dom_iff_mem + theorem roption.eq_ret_of_mem + theorem roption.exists_of_mem_bind + theorem roption.mem_bind + theorem roption.mem_ret + theorem roption.mem_ret_iff + theorem roption.mem_some + theorem roption.mem_unique + def roption.of_option + theorem roption.of_to_option + def roption.restrict + theorem roption.some_bind + theorem roption.to_of_option + def roption.to_option + structure roption Added data/pnat.lean + def nat.succ_pnat + def nat.to_pnat' + def nat.to_pnat + theorem pnat.nat_coe_val + theorem pnat.to_pnat'_coe + theorem pnat.to_pnat'_val + def pnat Added data/rat.lean + def linear_order_cases_on + theorem linear_order_cases_on_eq + theorem linear_order_cases_on_gt + theorem linear_order_cases_on_lt + theorem mul_nonneg_iff_right_nonneg_of_pos + theorem not_antimono + def rat.decidable_nonneg + def rat Added data/seq/computation.lean + def computation.bind.F + def computation.bind.G + def computation.bind + theorem computation.bind_assoc + theorem computation.bind_congr + theorem computation.bind_promises + theorem computation.bind_ret' + theorem computation.bind_ret + def computation.bisim_o + def computation.cases_on + def computation.corec.F + def computation.corec + def computation.corec_eq + def computation.destruct + theorem computation.destruct_empty + theorem computation.destruct_eq_ret + theorem computation.destruct_eq_think + theorem computation.destruct_map + theorem computation.destruct_ret + theorem computation.destruct_think + def computation.empty + theorem computation.empty_orelse + theorem computation.empty_promises + theorem computation.eq_empty_of_not_terminates + theorem computation.eq_of_bisim + theorem computation.eq_of_ret_mem + def computation.eq_thinkN' + def computation.eq_thinkN + theorem computation.equiv.equivalence + theorem computation.equiv.refl + theorem computation.equiv.symm + theorem computation.equiv.trans + def computation.equiv + theorem computation.equiv_of_mem + theorem computation.equiv_ret_of_mem + theorem computation.exists_of_lift_rel_left + theorem computation.exists_of_lift_rel_right + theorem computation.exists_of_mem_bind + theorem computation.exists_of_mem_map + def computation.exists_results_of_mem + def computation.get + theorem computation.get_bind + def computation.get_eq_of_mem + def computation.get_eq_of_promises + theorem computation.get_equiv + def computation.get_mem + def computation.get_promises + theorem computation.get_ret + theorem computation.get_think + theorem computation.get_thinkN + theorem computation.has_bind_eq_bind + theorem computation.has_map_eq_map + def computation.head + theorem computation.head_empty + theorem computation.head_ret + theorem computation.head_think + def computation.is_bisimulation + def computation.join + theorem computation.le_stable + def computation.length + theorem computation.length_bind + theorem computation.length_ret + theorem computation.length_think + theorem computation.length_thinkN + theorem computation.lift_eq_iff_equiv + def computation.lift_rel.equiv + def computation.lift_rel.imp + def computation.lift_rel.refl + theorem computation.lift_rel.swap + def computation.lift_rel.symm + def computation.lift_rel.trans + def computation.lift_rel + def computation.lift_rel_aux.ret_left + def computation.lift_rel_aux.ret_right + theorem computation.lift_rel_aux.swap + def computation.lift_rel_aux + theorem computation.lift_rel_bind + theorem computation.lift_rel_congr + theorem computation.lift_rel_def + theorem computation.lift_rel_map + theorem computation.lift_rel_mem_cases + theorem computation.lift_rel_of_mem + theorem computation.lift_rel_rec.lem + theorem computation.lift_rel_rec + theorem computation.lift_rel_return + theorem computation.lift_rel_return_left + theorem computation.lift_rel_return_right + theorem computation.lift_rel_think_left + theorem computation.lift_rel_think_right + def computation.lmap + def computation.map + theorem computation.map_comp + theorem computation.map_congr + theorem computation.map_id + theorem computation.map_ret' + theorem computation.map_ret + theorem computation.map_think' + theorem computation.map_think + theorem computation.mem_bind + theorem computation.mem_map + def computation.mem_of_get_eq + def computation.mem_of_promises + theorem computation.mem_promises + def computation.mem_rec_on + theorem computation.mem_unique + theorem computation.not_mem_empty + theorem computation.not_terminates_empty + theorem computation.of_results_bind + theorem computation.of_results_think + theorem computation.of_thinkN_terminates + theorem computation.of_think_mem + theorem computation.of_think_terminates + def computation.orelse + theorem computation.orelse_empty + theorem computation.orelse_ret + theorem computation.orelse_think + def computation.promises + theorem computation.promises_congr + def computation.rel_of_lift_rel + def computation.results.len_unique + def computation.results.length + def computation.results.mem + def computation.results.terminates + def computation.results.val_unique + def computation.results + theorem computation.results_bind + def computation.results_of_terminates' + def computation.results_of_terminates + theorem computation.results_ret + theorem computation.results_think + theorem computation.results_thinkN + theorem computation.results_thinkN_ret + theorem computation.results_think_iff + theorem computation.ret_bind + theorem computation.ret_mem + theorem computation.ret_orelse + def computation.return + theorem computation.return_def + def computation.rmap + def computation.run_for + def computation.tail + theorem computation.tail_empty + theorem computation.tail_ret + theorem computation.tail_think + def computation.terminates + theorem computation.terminates_congr + theorem computation.terminates_def + theorem computation.terminates_map_iff + def computation.terminates_of_lift_rel + theorem computation.terminates_of_mem + def computation.terminates_rec_on + def computation.think + def computation.thinkN + theorem computation.thinkN_equiv + theorem computation.thinkN_mem + theorem computation.think_bind + theorem computation.think_empty + theorem computation.think_equiv + theorem computation.think_mem + def computation Added data/seq/parallel.lean + theorem computation.exists_of_mem_parallel + theorem computation.map_parallel + theorem computation.mem_parallel + def computation.parallel.aux1 + def computation.parallel.aux2 + def computation.parallel + theorem computation.parallel_congr_left + theorem computation.parallel_congr_lem + theorem computation.parallel_congr_right + theorem computation.parallel_empty + theorem computation.parallel_promises + def computation.parallel_rec + theorem computation.terminates_parallel.aux + theorem computation.terminates_parallel Added data/seq/seq.lean + def seq.append + theorem seq.append_assoc + theorem seq.append_nil + def seq.bisim_o + def seq.cases_on + theorem seq.coinduction2 + theorem seq.coinduction + def seq.cons + theorem seq.cons_append + def seq.corec.F + def seq.corec + def seq.corec_eq + def seq.destruct + theorem seq.destruct_cons + theorem seq.destruct_eq_cons + theorem seq.destruct_eq_nil + theorem seq.destruct_nil + def seq.drop + theorem seq.dropn_add + theorem seq.dropn_tail + theorem seq.eq_of_bisim + theorem seq.eq_or_mem_of_mem_cons + theorem seq.exists_of_mem_map + def seq.head + theorem seq.head_cons + theorem seq.head_dropn + theorem seq.head_eq_destruct + theorem seq.head_nil + def seq.is_bisimulation + def seq.join + theorem seq.join_append + theorem seq.join_cons + theorem seq.join_cons_cons + theorem seq.join_cons_nil + theorem seq.join_nil + theorem seq.le_stable + def seq.map + theorem seq.map_append + theorem seq.map_comp + theorem seq.map_cons + theorem seq.map_id + theorem seq.map_nil + theorem seq.map_nth + theorem seq.map_tail + def seq.mem_append_left + theorem seq.mem_cons + theorem seq.mem_cons_iff + theorem seq.mem_cons_of_mem + theorem seq.mem_map + theorem seq.mem_rec_on + def seq.nil + theorem seq.nil_append + theorem seq.not_mem_nil + def seq.nth + theorem seq.nth_tail + def seq.of_lazy_list + def seq.of_list + def seq.of_list_append + def seq.of_list_cons + def seq.of_list_nil + def seq.of_mem_append + def seq.of_stream + def seq.of_stream_append + def seq.of_stream_cons + def seq.omap + def seq.split_at + def seq.tail + theorem seq.tail_cons + theorem seq.tail_nil + def seq.take + def seq.to_list' + def seq.to_list + def seq.to_list_or_stream + def seq.to_stream + def seq.unzip + def seq.zip + def seq.zip_with + def seq1.bind + theorem seq1.bind_assoc + theorem seq1.bind_ret + def seq1.join + theorem seq1.join_cons + theorem seq1.join_join + theorem seq1.join_map_ret + theorem seq1.join_nil + def seq1.map + theorem seq1.map_id + theorem seq1.map_join' + theorem seq1.map_join + def seq1.ret + theorem seq1.ret_bind + def seq1.to_seq + def seq1 + def seq Added data/seq/wseq.lean + def wseq.all + def wseq.any + def wseq.append + theorem wseq.append_assoc + theorem wseq.append_nil + def wseq.bind + theorem wseq.bind_assoc + theorem wseq.bind_congr + theorem wseq.bind_ret + theorem wseq.bisim_o.imp + def wseq.bisim_o + def wseq.cases_on + def wseq.collect + def wseq.compute + def wseq.cons + theorem wseq.cons_append + theorem wseq.cons_congr + def wseq.destruct + def wseq.destruct_append.aux + theorem wseq.destruct_append + theorem wseq.destruct_congr + theorem wseq.destruct_congr_iff + theorem wseq.destruct_cons + theorem wseq.destruct_dropn + theorem wseq.destruct_flatten + def wseq.destruct_join.aux + theorem wseq.destruct_join + theorem wseq.destruct_map + theorem wseq.destruct_nil + theorem wseq.destruct_of_seq + theorem wseq.destruct_some_of_destruct_tail_some + theorem wseq.destruct_tail + theorem wseq.destruct_terminates_of_nth_terminates + theorem wseq.destruct_think + def wseq.drop.aux + def wseq.drop.aux_none + def wseq.drop + theorem wseq.dropn_add + theorem wseq.dropn_congr + theorem wseq.dropn_cons + theorem wseq.dropn_nil + theorem wseq.dropn_of_seq + theorem wseq.dropn_tail + theorem wseq.dropn_think + theorem wseq.eq_or_mem_iff_mem + theorem wseq.equiv.equivalence + theorem wseq.equiv.ext + theorem wseq.equiv.refl + theorem wseq.equiv.symm + theorem wseq.equiv.trans + def wseq.equiv + theorem wseq.exists_dropn_of_mem + theorem wseq.exists_nth_of_mem + theorem wseq.exists_of_lift_rel_left + theorem wseq.exists_of_lift_rel_right + theorem wseq.exists_of_mem_bind + theorem wseq.exists_of_mem_join + theorem wseq.exists_of_mem_map + def wseq.filter + def wseq.filter_map + def wseq.find + def wseq.find_index + def wseq.find_indexes + def wseq.flatten + theorem wseq.flatten_congr + theorem wseq.flatten_equiv + theorem wseq.flatten_ret + theorem wseq.flatten_think + def wseq.get + def wseq.head + theorem wseq.head_congr + theorem wseq.head_cons + theorem wseq.head_nil + theorem wseq.head_of_seq + theorem wseq.head_some_of_head_tail_some + theorem wseq.head_some_of_nth_some + theorem wseq.head_terminates_iff + theorem wseq.head_terminates_of_head_tail_terminates + theorem wseq.head_terminates_of_mem + theorem wseq.head_terminates_of_nth_terminates + theorem wseq.head_think + def wseq.index_of + def wseq.indexes_of + def wseq.inits + def wseq.is_empty + def wseq.is_finite + def wseq.join + theorem wseq.join_append + theorem wseq.join_congr + def wseq.join_cons + theorem wseq.join_join + theorem wseq.join_map_ret + def wseq.join_nil + theorem wseq.join_ret + def wseq.join_think + def wseq.length + theorem wseq.length_eq_map + def wseq.lift_rel.equiv + def wseq.lift_rel.refl + def wseq.lift_rel.swap + def wseq.lift_rel.swap_lem + def wseq.lift_rel.symm + def wseq.lift_rel.trans + def wseq.lift_rel + theorem wseq.lift_rel_append + theorem wseq.lift_rel_bind + def wseq.lift_rel_cons + theorem wseq.lift_rel_destruct + theorem wseq.lift_rel_destruct_iff + theorem wseq.lift_rel_dropn_destruct + theorem wseq.lift_rel_flatten + theorem wseq.lift_rel_join.lem + theorem wseq.lift_rel_join + theorem wseq.lift_rel_map + def wseq.lift_rel_nil + theorem wseq.lift_rel_o.imp + theorem wseq.lift_rel_o.imp_right + def wseq.lift_rel_o.swap + def wseq.lift_rel_o + def wseq.lift_rel_think_left + def wseq.lift_rel_think_right + def wseq.map + theorem wseq.map_append + theorem wseq.map_comp + theorem wseq.map_congr + theorem wseq.map_cons + theorem wseq.map_id + theorem wseq.map_join + theorem wseq.map_nil + theorem wseq.map_ret + theorem wseq.map_think + def wseq.mem_append_left + theorem wseq.mem_congr + theorem wseq.mem_cons + theorem wseq.mem_cons_iff + theorem wseq.mem_cons_of_mem + theorem wseq.mem_map + theorem wseq.mem_of_mem_dropn + theorem wseq.mem_of_mem_tail + theorem wseq.mem_rec_on + theorem wseq.mem_think + def wseq.nil + theorem wseq.nil_append + theorem wseq.not_mem_nil + def wseq.nth + theorem wseq.nth_add + theorem wseq.nth_congr + theorem wseq.nth_mem + theorem wseq.nth_of_seq + theorem wseq.nth_tail + theorem wseq.nth_terminates_le + def wseq.of_list + def wseq.of_list_cons + def wseq.of_list_nil + def wseq.of_mem_append + def wseq.of_seq + def wseq.of_stream + def wseq.productive + theorem wseq.productive_congr + def wseq.remove_nth + def wseq.ret + theorem wseq.ret_bind + def wseq.scanl + theorem wseq.seq_destruct_cons + theorem wseq.seq_destruct_nil + theorem wseq.seq_destruct_think + def wseq.split_at + def wseq.tail.aux + def wseq.tail + theorem wseq.tail_congr + theorem wseq.tail_cons + theorem wseq.tail_nil + theorem wseq.tail_of_seq + theorem wseq.tail_think + def wseq.take + def wseq.think + theorem wseq.think_append + theorem wseq.think_congr + theorem wseq.think_equiv + def wseq.to_list'_cons + def wseq.to_list'_map + def wseq.to_list'_nil + def wseq.to_list'_think + def wseq.to_list + def wseq.to_list_cons + def wseq.to_list_nil + theorem wseq.to_list_of_list + def wseq.to_seq + theorem wseq.to_seq_of_seq + def wseq.union + def wseq.update_nth + def wseq.zip + def wseq.zip_with + def wseq Added data/set/basic.lean + theorem set.empty_inter + theorem set.empty_subset + theorem set.empty_union + theorem set.eq_empty_of_forall_not_mem + theorem set.eq_empty_of_subset_empty + theorem set.eq_of_subset_of_subset + theorem set.ext + theorem set.inter_assoc + theorem set.inter_comm + theorem set.inter_empty + theorem set.inter_self + theorem set.mem_empty_eq + theorem set.mem_of_subset_of_mem + theorem set.ne_empty_of_mem + theorem set.not_mem_empty + theorem set.subset.antisymm + theorem set.subset.refl + theorem set.subset.trans + theorem set.union_assoc + theorem set.union_comm + theorem set.union_empty + theorem set.union_self Added data/set/default.lean Added data/set/finite.lean + inductive set.finite + theorem set.finite_image + theorem set.finite_insert + theorem set.finite_sUnion + theorem set.finite_singleton + theorem set.finite_subset + theorem set.finite_union Added data/set/lattice.lean + def set.Inter + theorem set.Inter_eq_comp_Union_comp + theorem set.Inter_eq_sInter_image + def set.Union + theorem set.Union_eq_comp_Inter_comp + theorem set.Union_eq_sUnion_image + theorem set.Union_subset + theorem set.Union_subset_iff + theorem set.bInter_empty + theorem set.bInter_insert + theorem set.bInter_pair + theorem set.bInter_singleton + theorem set.bInter_subset_of_mem + theorem set.bInter_union + theorem set.bInter_univ + theorem set.bUnion_empty + theorem set.bUnion_insert + theorem set.bUnion_pair + theorem set.bUnion_singleton + theorem set.bUnion_subset + theorem set.bUnion_union + theorem set.bUnion_univ + theorem set.bounded_forall_empty_iff + theorem set.bounded_forall_image_iff + theorem set.bounded_forall_image_of_bounded_forall + theorem set.bounded_forall_insert_iff + theorem set.compl_Inter + theorem set.compl_Union + theorem set.compl_comp_compl + theorem set.compl_compl + theorem set.compl_compl_image + theorem set.compl_empty + theorem set.compl_eq_univ_diff + theorem set.compl_inter + theorem set.compl_inter_self + theorem set.compl_sInter + theorem set.compl_sUnion + theorem set.compl_union + theorem set.compl_union_self + theorem set.compl_univ + theorem set.diff_eq + theorem set.diff_subset + def set.disjoint + theorem set.disjoint_bot_left + theorem set.disjoint_bot_right + theorem set.disjoint_symm + theorem set.empty_ne_univ + theorem set.eq_of_mem_singleton + def set.eq_on + theorem set.eq_or_mem_of_mem_insert + theorem set.eq_sep_of_subset + theorem set.eq_univ_of_forall + theorem set.eq_univ_of_univ_subset + theorem set.eq_vimage_subtype_val_iff + theorem set.exists_mem_of_ne_empty + theorem set.fix_set_compl + theorem set.forall_insert_of_forall + theorem set.forall_not_of_sep_empty + theorem set.forall_of_forall_insert + theorem set.image_comp + theorem set.image_empty + theorem set.image_eq_image_of_eq_on + theorem set.image_id + theorem set.image_insert_eq + theorem set.image_subset + theorem set.image_subset_iff_subset_vimage + theorem set.image_union + theorem set.insert_comm + theorem set.insert_def + theorem set.insert_eq + theorem set.insert_eq_of_mem + theorem set.insert_ne_empty + theorem set.insert_of_has_insert + theorem set.insert_sdiff_singleton + theorem set.inter_compl_self + theorem set.inter_def + theorem set.inter_distrib_Union_left + theorem set.inter_distrib_left + theorem set.inter_distrib_right + theorem set.inter_empty_of_inter_sUnion_empty + theorem set.inter_eq_compl_compl_union_compl + theorem set.inter_eq_self_of_subset_left + theorem set.inter_eq_self_of_subset_right + theorem set.inter_left_comm + theorem set.inter_right_comm + theorem set.inter_subset_inter + theorem set.inter_subset_inter_left + theorem set.inter_subset_inter_right + theorem set.inter_subset_left + theorem set.inter_subset_right + theorem set.inter_univ + theorem set.mem_Inter + theorem set.mem_Inter_eq + theorem set.mem_Union_eq + theorem set.mem_bInter + theorem set.mem_bUnion + theorem set.mem_compl + theorem set.mem_compl_eq + theorem set.mem_compl_iff + theorem set.mem_diff + theorem set.mem_diff_eq + theorem set.mem_diff_iff + theorem set.mem_image + theorem set.mem_image_compl + def set.mem_image_elim + def set.mem_image_elim_on + theorem set.mem_image_eq + theorem set.mem_image_of_mem + theorem set.mem_insert + theorem set.mem_insert_iff + theorem set.mem_insert_of_mem + theorem set.mem_inter + theorem set.mem_inter_eq + theorem set.mem_inter_iff + theorem set.mem_of_mem_diff + theorem set.mem_of_mem_insert_of_ne + theorem set.mem_of_mem_inter_left + theorem set.mem_of_mem_inter_right + theorem set.mem_or_mem_of_mem_union + theorem set.mem_powerset + theorem set.mem_powerset_iff + theorem set.mem_sInter + theorem set.mem_sInter_eq + theorem set.mem_sUnion + theorem set.mem_sUnion_eq + theorem set.mem_sep + theorem set.mem_sep_eq + theorem set.mem_sep_iff + theorem set.mem_set_of + theorem set.mem_set_of_eq + theorem set.mem_singleton + theorem set.mem_singleton_iff + theorem set.mem_singleton_of_eq + theorem set.mem_union.elim + theorem set.mem_union_eq + theorem set.mem_union_iff + theorem set.mem_union_left + theorem set.mem_union_right + theorem set.mem_unionl + theorem set.mem_unionr + theorem set.mem_univ + theorem set.mem_univ_eq + theorem set.mem_univ_iff + theorem set.mem_vimage_eq + theorem set.mono_image + theorem set.monotone_vimage + theorem set.nmem_set_of_eq + theorem set.nonempty_of_inter_nonempty_left + theorem set.nonempty_of_inter_nonempty_right + theorem set.not_mem_of_mem_compl + theorem set.not_mem_of_mem_diff + theorem set.not_mem_of_not_mem_sUnion + theorem set.pair_eq_singleton + def set.pairwise_on + def set.sInter + theorem set.sInter_empty + theorem set.sInter_eq_comp_sUnion_compl + theorem set.sInter_image + theorem set.sInter_insert + theorem set.sInter_singleton + theorem set.sInter_subset_of_mem + theorem set.sInter_union + theorem set.sUnion_empty + theorem set.sUnion_eq_compl_sInter_compl + theorem set.sUnion_image + theorem set.sUnion_insert + theorem set.sUnion_singleton + theorem set.sUnion_subset + theorem set.sUnion_subset_iff + theorem set.sUnion_union + theorem set.sdiff_singleton_eq_same + theorem set.sep_subset + theorem set.set_eq_def + theorem set.set_of_false + theorem set.singleton_def + theorem set.singleton_eq_singleton_iff + theorem set.singleton_ne_empty + theorem set.singleton_subset_iff + theorem set.ssubset_def + theorem set.ssubset_insert + def set.strict_subset + theorem set.subset_Inter + theorem set.subset_bInter + theorem set.subset_bUnion_of_mem + theorem set.subset_def + theorem set.subset_empty_iff + theorem set.subset_insert + theorem set.subset_inter + theorem set.subset_of_mem_powerset + theorem set.subset_sInter + theorem set.subset_sUnion_of_mem + theorem set.subset_univ + theorem set.union_compl_self + theorem set.union_def + theorem set.union_diff_cancel + theorem set.union_distrib_Inter_left + theorem set.union_distrib_left + theorem set.union_distrib_right + theorem set.union_eq_compl_compl_inter_compl + theorem set.union_eq_self_of_subset_left + theorem set.union_eq_self_of_subset_right + theorem set.union_insert_eq + theorem set.union_left_comm + theorem set.union_right_comm + theorem set.union_same_compl + theorem set.union_sdiff_same + theorem set.union_subset + theorem set.union_subset_iff + theorem set.union_subset_union + theorem set.univ_def + theorem set.univ_inter + def set.vimage + theorem set.vimage_Union + theorem set.vimage_comp + theorem set.vimage_compl + theorem set.vimage_empty + theorem set.vimage_id + theorem set.vimage_image_eq + theorem set.vimage_inter + theorem set.vimage_mono + theorem set.vimage_sUnion + theorem set.vimage_union + theorem set.vimage_univ Added data/stream.lean + def stream.all + theorem stream.all_def + def stream.any + theorem stream.any_def + theorem stream.append_append_stream + theorem stream.append_approx_drop + def stream.append_stream + theorem stream.append_stream_head_tail + def stream.apply + def stream.approx + theorem stream.approx_succ + theorem stream.approx_zero + theorem stream.bisim_simple + theorem stream.coinduction + theorem stream.composition + def stream.cons + theorem stream.cons_append_stream + theorem stream.cons_nth_inits_core + def stream.const + theorem stream.const_eq + def stream.corec' + theorem stream.corec'_eq + def stream.corec + theorem stream.corec_def + theorem stream.corec_eq + theorem stream.corec_id_f_eq_iterate + theorem stream.corec_id_id_eq_const + def stream.corec_on + def stream.cycle + theorem stream.cycle_eq + theorem stream.cycle_singleton + def stream.drop + theorem stream.drop_append_stream + theorem stream.drop_const + theorem stream.drop_drop + theorem stream.drop_map + theorem stream.drop_succ + theorem stream.drop_zip + theorem stream.eq_of_bisim + theorem stream.eq_or_mem_of_mem_cons + def stream.even + theorem stream.even_cons_cons + theorem stream.even_interleave + theorem stream.even_tail + theorem stream.exists_of_mem_map + def stream.head + theorem stream.head_cons + theorem stream.head_even + theorem stream.head_iterate + theorem stream.head_map + theorem stream.head_zip + theorem stream.homomorphism + theorem stream.identity + def stream.inits + def stream.inits_core + theorem stream.inits_core_eq + theorem stream.inits_eq + theorem stream.inits_tail + theorem stream.interchange + def stream.interleave + theorem stream.interleave_eq + theorem stream.interleave_even_odd + theorem stream.interleave_tail_tail + def stream.is_bisimulation + def stream.iterate + theorem stream.iterate_eq + theorem stream.iterate_id + def stream.map + theorem stream.map_append_stream + theorem stream.map_cons + theorem stream.map_const + theorem stream.map_eq + theorem stream.map_eq_apply + theorem stream.map_id + theorem stream.map_iterate + theorem stream.map_map + theorem stream.map_tail + theorem stream.mem_append_stream_left + theorem stream.mem_append_stream_right + theorem stream.mem_cons + theorem stream.mem_cons_of_mem + theorem stream.mem_const + theorem stream.mem_cycle + theorem stream.mem_interleave_left + theorem stream.mem_interleave_right + theorem stream.mem_map + theorem stream.mem_of_mem_even + theorem stream.mem_of_mem_odd + theorem stream.mem_of_nth_eq + def stream.nats + theorem stream.nats_eq + theorem stream.nil_append_stream + def stream.nth + theorem stream.nth_approx + theorem stream.nth_const + theorem stream.nth_drop + theorem stream.nth_even + theorem stream.nth_inits + theorem stream.nth_interleave_left + theorem stream.nth_interleave_right + theorem stream.nth_map + theorem stream.nth_nats + theorem stream.nth_odd + theorem stream.nth_of_bisim + theorem stream.nth_succ + theorem stream.nth_succ_iterate + theorem stream.nth_tails + theorem stream.nth_unfolds_head_tail + theorem stream.nth_zero_cons + theorem stream.nth_zero_iterate + theorem stream.nth_zip + def stream.odd + theorem stream.odd_eq + def stream.pure + def stream.tail + theorem stream.tail_cons + theorem stream.tail_const + theorem stream.tail_drop + theorem stream.tail_eq_drop + theorem stream.tail_even + theorem stream.tail_inits + theorem stream.tail_interleave + theorem stream.tail_iterate + theorem stream.tail_map + theorem stream.tail_zip + def stream.tails + theorem stream.tails_eq + theorem stream.tails_eq_iterate + theorem stream.take_lemma + def stream.unfolds + theorem stream.unfolds_eq + theorem stream.unfolds_head_eq + def stream.zip + theorem stream.zip_eq + theorem stream.zip_inits_tails + def stream Added data/vector.lean + def vector.append + def vector.cons + theorem vector.cons_head_tail + def vector.drop + def vector.elim + def vector.head + theorem vector.head_cons + def vector.length + def vector.map + def vector.map_accumr + def vector.map_accumr₂ + theorem vector.map_cons + theorem vector.map_nil + def vector.map₂ + def vector.nil + def vector.nth + def vector.of_fn + def vector.remove_nth + def vector.repeat + def vector.tail + theorem vector.tail_cons + def vector.take + def vector.to_list + theorem vector.to_list_append + theorem vector.to_list_cons + theorem vector.to_list_drop + theorem vector.to_list_length + theorem vector.to_list_mk + theorem vector.to_list_nil + theorem vector.to_list_take + def vector Added leanpkg.toml Added logic/basic.lean + theorem and_distrib + theorem and_distrib_right + theorem and_iff_not_or_not + theorem and_imp_iff + theorem and_implies_left + theorem and_implies_right + theorem and_not_of_not_implies + theorem and_not_self_iff + theorem and_of_and_of_imp_left + theorem and_of_and_of_imp_right + theorem and_of_and_of_implies_of_implies + theorem bexists.elim + theorem bexists.intro + theorem bexists_congr + theorem bexists_implies_distrib + theorem bexists_implies_of_bforall_implies + theorem bexists_not_of_not_bforall + theorem bexists_of_bexists + theorem bexists_of_exists + theorem bexists_or_distrib + theorem bforall_and_distrib + theorem bforall_congr + theorem bforall_implies_of_bexists_implies + theorem bforall_not_of_not_bexists + theorem bforall_of_bforall + theorem bforall_of_forall + theorem bforall_true_iff + theorem by_contradiction + theorem classical.bexists_not_of_not_bforall + theorem classical.exists_not_of_not_forall + theorem classical.forall_or_distrib_left + theorem classical.not_bforall_iff_bexists_not + theorem classical.not_forall_iff + theorem dec_em + theorem eq_iff_le_and_le + theorem exists_and_distrib_left + theorem exists_implies_distrib + theorem exists_implies_of_forall_implies + theorem exists_not_of_not_forall + theorem exists_of_bexists + theorem exists_of_exists + theorem exists_or_distrib + theorem exists_p_iff_p + theorem exists_prop_iff + theorem forall_and_distrib + theorem forall_eq + theorem forall_implies_of_exists_implies + theorem forall_of_bforall + theorem forall_of_forall + theorem forall_or_distrib_left + theorem forall_p_iff_p + theorem forall_true_iff + theorem implies_false_iff + theorem implies_iff + theorem implies_iff_not_or + theorem implies_intro + theorem implies_of_not_or + theorem implies_self + theorem not_and_iff + theorem not_and_not_of_not_or + theorem not_and_of_not_left + theorem not_and_of_not_or_not + theorem not_and_of_not_right + theorem not_and_self_iff + theorem not_bexists_iff_bforall_not + theorem not_bexists_of_bforall_not + theorem not_bforall_iff_bexists_not + theorem not_bforall_of_bexists_not + theorem not_exists_iff + theorem not_exists_of_forall_not + theorem not_forall_iff + theorem not_forall_of_exists_not + theorem not_imp_iff_not_imp + theorem not_implies_iff + theorem not_implies_of_and_not + theorem not_not_elim + theorem not_not_iff + theorem not_not_of_not_implies + theorem not_of_not_implies + theorem not_or_iff + theorem not_or_not_of_not_and' + theorem not_or_not_of_not_and + theorem not_or_of_implies + theorem not_or_of_not_and_not + theorem of_not_implies + theorem or.elim3 + theorem or_distrib + theorem or_distrib_right + theorem or_iff_not_and_not + theorem or_iff_or + theorem or_imp_iff_and_imp + theorem or_implies_distrib + theorem or_of_not_implies' + theorem or_of_not_implies + theorem or_of_or_of_implies_left + theorem or_of_or_of_implies_of_implies + theorem or_of_or_of_implies_right + theorem or_resolve_left + theorem or_resolve_right + theorem peirce' + theorem peirce + theorem prod.exists + theorem prod.forall + theorem prod.mk.inj_iff + theorem set_of_subset_set_of + theorem {u} Added pending/default.lean + theorem nat.shiftl_succ + theorem nat.shiftl_zero Added theories/set_theory.lean + def Class.Class_to_Cong + def Class.Cong_to_Class + def Class.Union + theorem Class.Union_hom + theorem Class.diff_hom + theorem Class.empty_hom + def Class.fval + theorem Class.fval_ex + theorem Class.insert_hom + theorem Class.inter_hom + def Class.iota + theorem Class.iota_ex + theorem Class.iota_val + theorem Class.mem_hom_left + theorem Class.mem_hom_right + theorem Class.mem_univ + theorem Class.of_Set.inj + def Class.of_Set + def Class.powerset + theorem Class.powerset_hom + theorem Class.sep_hom + theorem Class.subset_hom + def Class.to_Set + theorem Class.to_Set_of_Set + theorem Class.union_hom + def Class.univ + def Class + def Set.Union + theorem Set.Union_lem + theorem Set.Union_singleton + def Set.choice_is_func + def Set.choice_mem + def Set.choice_mem_aux + def Set.empty + def Set.eq_empty + def Set.ext + def Set.ext_iff + def Set.funs + def Set.image.mk + def Set.image + theorem Set.induction_on + def Set.is_func + def Set.map_fval + theorem Set.map_is_func + theorem Set.map_unique + def Set.mem + theorem Set.mem_Union + theorem Set.mem_diff + def Set.mem_empty + def Set.mem_funs + def Set.mem_image + def Set.mem_insert + theorem Set.mem_inter + theorem Set.mem_map + theorem Set.mem_pair + theorem Set.mem_pair_sep + theorem Set.mem_powerset + def Set.mem_prod + theorem Set.mem_sep + theorem Set.mem_singleton' + theorem Set.mem_singleton + theorem Set.mem_union + def Set.omega + theorem Set.omega_succ + theorem Set.omega_zero + def Set.pair + def Set.pair_inj + def Set.pair_mem_prod + def Set.pair_sep + def Set.powerset + def Set.prod + theorem Set.regularity + theorem Set.singleton_inj + theorem Set.subset_iff + def Set.to_set + def Set + def arity + def pSet.Union + def pSet.arity.equiv + def pSet.definable.eq + def pSet.definable.eq_mk + def pSet.definable.resp + inductive pSet.definable + def pSet.embed + def pSet.equiv.eq + def pSet.equiv.euc + def pSet.equiv.ext + def pSet.equiv.refl + def pSet.equiv.symm + def pSet.equiv.trans + def pSet.equiv + def pSet.func + def pSet.image + def pSet.lift_mem_embed + def pSet.mem.congr_left + def pSet.mem.congr_right + def pSet.mem.ext + def pSet.mem.mk + def pSet.mem + theorem pSet.mem_Union + def pSet.mem_empty + def pSet.mem_image + theorem pSet.mem_powerset + def pSet.mk_type_func + def pSet.of_nat + def pSet.omega + def pSet.powerset + def pSet.resp.equiv + def pSet.resp.euc + def pSet.resp.eval + def pSet.resp.eval_aux + def pSet.resp.eval_val + def pSet.resp.f + def pSet.resp.refl + def pSet.resp + def pSet.subset.congr_left + def pSet.subset.congr_right + def pSet.to_set + def pSet.type + inductive pSet Added tools/auto/experiments/set_basic.lean + theorem set.bounded_forall_empty_iff + theorem set.bounded_forall_image_iff + theorem set.bounded_forall_image_of_bounded_forall + theorem set.bounded_forall_insert_iff + theorem set.compl_comp_compl + theorem set.compl_compl + theorem set.compl_compl_image + theorem set.compl_empty + theorem set.compl_eq_univ_diff + theorem set.compl_inter + theorem set.compl_inter_self + theorem set.compl_union + theorem set.compl_union_self + theorem set.compl_univ + theorem set.diff_eq + theorem set.diff_subset + theorem set.empty_def + theorem set.empty_ne_univ + theorem set.eq_of_mem_singleton + def set.eq_on + theorem set.eq_or_mem_of_mem_insert + theorem set.eq_sep_of_subset + theorem set.eq_univ_of_forall + theorem set.eq_univ_of_univ_subset + theorem set.exists_mem_of_ne_empty + theorem set.fix_set_compl + theorem set.forall_insert_of_forall + theorem set.forall_not_of_sep_empty + theorem set.forall_of_forall_insert + theorem set.image_comp + theorem set.image_empty + theorem set.image_eq_image_of_eq_on + theorem set.image_id + theorem set.image_insert_eq + theorem set.image_subset + theorem set.image_union + theorem set.insert_comm + theorem set.insert_def + theorem set.insert_eq + theorem set.insert_eq_of_mem + theorem set.insert_ne_empty + theorem set.insert_of_has_insert + theorem set.inter_compl_self + theorem set.inter_def + theorem set.inter_distrib_left + theorem set.inter_distrib_right + theorem set.inter_eq_compl_compl_union_compl + theorem set.inter_eq_self_of_subset_left + theorem set.inter_eq_self_of_subset_right + theorem set.inter_left_comm + theorem set.inter_right_comm + theorem set.inter_subset_inter_left + theorem set.inter_subset_inter_right + theorem set.inter_subset_left + theorem set.inter_subset_right + theorem set.inter_univ + theorem set.mem_compl + theorem set.mem_compl_eq + theorem set.mem_compl_iff + theorem set.mem_diff + theorem set.mem_diff_eq + theorem set.mem_diff_iff + theorem set.mem_image + theorem set.mem_image_compl + def set.mem_image_elim + def set.mem_image_elim_on + theorem set.mem_image_eq + theorem set.mem_image_of_mem + theorem set.mem_insert + theorem set.mem_insert_iff + theorem set.mem_insert_of_mem + theorem set.mem_inter + theorem set.mem_inter_eq + theorem set.mem_inter_iff + theorem set.mem_of_mem_diff + theorem set.mem_of_mem_insert_of_ne + theorem set.mem_of_mem_inter_left + theorem set.mem_of_mem_inter_right + theorem set.mem_or_mem_of_mem_union + theorem set.mem_powerset + theorem set.mem_powerset_iff + theorem set.mem_sep + theorem set.mem_sep_eq + theorem set.mem_sep_iff + theorem set.mem_set_of + theorem set.mem_singleton + theorem set.mem_singleton_iff + theorem set.mem_singleton_of_eq + theorem set.mem_union.elim + theorem set.mem_union_eq + theorem set.mem_union_iff + theorem set.mem_union_left + theorem set.mem_union_right + theorem set.mem_unionl + theorem set.mem_unionr + theorem set.mem_univ + theorem set.mem_univ_eq + theorem set.mem_univ_iff + theorem set.nonempty_of_inter_nonempty_left + theorem set.nonempty_of_inter_nonempty_right + theorem set.not_mem_of_mem_compl + theorem set.not_mem_of_mem_diff + theorem set.pair_eq_singleton + theorem set.sep_subset + theorem set.set_eq_def + theorem set.singleton_def + theorem set.singleton_ne_empty + def set.strict_subset + theorem set.subset_def + theorem set.subset_empty_iff + theorem set.subset_insert + theorem set.subset_inter + theorem set.subset_of_mem_powerset + theorem set.subset_univ + theorem set.union_compl_self + theorem set.union_def + theorem set.union_diff_cancel + theorem set.union_distrib_left + theorem set.union_distrib_right + theorem set.union_eq_compl_compl_inter_compl + theorem set.union_eq_self_of_subset_left + theorem set.union_eq_self_of_subset_right + theorem set.union_left_comm + theorem set.union_right_comm + theorem set.union_subset + theorem set.univ_def + theorem set.univ_inter Added tools/auto/experiments/test1.lean Added tools/auto/experiments/test2.lean + theorem NoMember + inductive and3 + inductive or3 Added tools/auto/experiments/test3.lean + theorem foo: Added tools/auto/finish.lean + structure auto.auto_config + theorem auto.by_contradiction_trick + inductive auto.case_option + theorem auto.classical.implies_iff_not_or + def auto.classical_normalize_lemma_names + def auto.common_normalize_lemma_names + theorem auto.not_and_eq + theorem auto.not_exists_eq + theorem auto.not_forall_eq + theorem auto.not_implies_eq + theorem auto.not_not_eq + theorem auto.not_or_eq + theorem curry_iff + theorem iff_def + theorem implies_and_iff + theorem {u} Added tools/auto/mk_inhabitant.lean Added tools/converter/binders.lean + theorem Inf_image + theorem Sup_image + theorem mem_image + theorem {u Added tools/converter/interactive.lean Added tools/converter/old_conv.lean Added tools/parser/modal.lean + def form_of_string Added tools/parser/parser.lean + def list.deterministic_or + def parser.apply + def parser.chainl1 + def parser.chainl1_rest + def parser.chainl + def parser.chainr1 + def parser.chainr1_rest + def parser.chainr + def parser.item + def parser.many1 + def parser.many + def parser.many_aux + def parser.parse + def parser.parser_bignum + def parser.sat + def parser.sepby1 + def parser.sepby + def parser.space + def parser.symb + def parser.take_char + def parser.take_string + def parser.take_string_aux + def parser.token + def parser + def parser_bind + def parser_fmap + def parser_pure + theorem {u + theorem {u} Added tools/tactic/examples.lean + theorem inter_def + theorem mem_set_of + def my_id + def my_id_def + theorem subset_def + theorem subset_inter + theorem union_def + theorem union_subset Added tools/tactic/tactic.lean Added topology/continuity.lean + theorem classical.cases + theorem closure_prod_eq + theorem compact_pi_infinite + def continuous + theorem continuous_Inf_dom + theorem continuous_Inf_rng + theorem continuous_Prop + theorem continuous_bot + theorem continuous_coinduced_dom + theorem continuous_coinduced_rng + theorem continuous_compose + theorem continuous_eq_le_coinduced + theorem continuous_fst + theorem continuous_generated_from + theorem continuous_id + theorem continuous_iff_induced_le + theorem continuous_iff_towards + theorem continuous_induced_dom + theorem continuous_induced_rng + theorem continuous_inf_dom + theorem continuous_inf_rng_left + theorem continuous_inf_rng_right + theorem continuous_infi_dom + theorem continuous_infi_rng + theorem continuous_inl + theorem continuous_inr + theorem continuous_prod_mk + theorem continuous_snd + theorem continuous_subtype_mk + theorem continuous_subtype_nhds_cover + theorem continuous_subtype_val + theorem continuous_sum_rec + theorem continuous_sup_dom_left + theorem continuous_sup_dom_right + theorem continuous_sup_rng + theorem continuous_top + theorem false_neq_true + theorem map_nhds_induced_eq + theorem map_nhds_subtype_val_eq + theorem nhds_induced_eq_vmap + theorem nhds_pi + theorem nhds_prod_eq + theorem open_induced + theorem open_set_prod + theorem open_singleton_true + theorem prod_eq_generate_from + theorem subtype.val_image + theorem univ_eq_true_false Added topology/topological_space.lean + def closed + theorem closed_Inter + theorem closed_Union_of_locally_finite + theorem closed_closure + theorem closed_compl_iff_open + theorem closed_empty + theorem closed_iff_nhds + theorem closed_sInter + theorem closed_union + theorem closed_univ + def closure + theorem closure_closure + theorem closure_compl_eq + theorem closure_empty + theorem closure_eq_compl_interior_compl + theorem closure_eq_iff_closed + theorem closure_eq_nhds + theorem closure_eq_of_closed + theorem closure_minimal + theorem closure_mono + theorem closure_subset_iff_subset_of_closed + theorem closure_union + theorem closure_univ + def compact + theorem compact_adherence_nhdset + theorem compact_iff_ultrafilter_le_nhds + theorem eq_of_nhds_eq_nhds + theorem eq_of_nhds_neq_bot + theorem finite_subcover_of_compact + theorem generate_from_le + def interior + theorem interior_compl_eq + theorem interior_empty + theorem interior_eq_iff_open + theorem interior_eq_nhds + theorem interior_eq_of_open + theorem interior_inter + theorem interior_interior + theorem interior_maximal + theorem interior_mono + theorem interior_subset + theorem interior_subset_closure + theorem interior_union_closed_of_interior_empty + theorem interior_univ + theorem le_of_nhds_le_nhds + def locally_finite + theorem map_nhds + theorem mem_nhds_sets + theorem mem_nhds_sets_iff + def nhds + theorem nhds_mono + theorem nhds_neq_bot + theorem nhds_sets + theorem nhds_supr + theorem not_eq_empty_iff_exists + def open' + theorem open_Union + theorem open_compl_iff_closed + theorem open_diff + theorem open_empty + theorem open_iff_nhds + theorem open_inter + theorem open_interior + theorem open_sUnion + theorem open_univ + theorem return_le_nhds + theorem subset_closure + theorem subset_interior_iff_subset_of_open + theorem sup_eq_generate_from + theorem supr_eq_generate_from + theorem t2_space_top + def topological_space.coinduced + def topological_space.generate_from + inductive topological_space.generate_open + def topological_space.induced + theorem topological_space.nhds_generate_from + structure topological_space + theorem topological_space_eq Added topology/uniform_space.lean + def Cauchy.gen + theorem Cauchy.monotone_gen + def Cauchy.pure_cauchy + theorem Cauchy.pure_cauchy_dense + theorem Cauchy.uniform_embedding_pure_cauchy + def Cauchy + def cauchy + theorem cauchy_downwards + theorem cauchy_map + theorem cauchy_nhds + theorem cauchy_of_totally_bounded_of_ultrafilter + theorem cauchy_pure + theorem cauchy_vmap + theorem closure_eq_inter_uniformity + theorem comp_le_uniformity3 + theorem comp_le_uniformity + theorem comp_mem_uniformity_sets + def comp_rel + theorem comp_symm_of_uniformity + theorem compact_of_totally_bounded_closed + theorem compact_of_totally_bounded_complete + theorem complete_of_closed + theorem complete_space_extension + theorem complete_space_separation + theorem continuous_of_uniform + theorem id_comp_rel + def id_rel + theorem interior_mem_uniformity + theorem le_nhds_iff_adhp_of_cauchy + theorem le_nhds_of_cauchy_adhp + theorem lift_nhds_left + theorem lift_nhds_right + theorem mem_nhds_left + theorem mem_nhds_right + theorem mem_nhds_uniformity_iff + theorem monotone_comp_rel + theorem nhds_eq_uniformity + theorem nhds_eq_uniformity_prod + theorem nhds_nhds_eq_uniformity_uniformity_prod + theorem nhdset_of_mem_uniformity + theorem prod_mk_mem_comp_rel + theorem refl_le_uniformity + theorem refl_mem_uniformity + def separated + theorem separated_equiv + theorem supr_uniformity + theorem swap_id_rel + theorem symm_le_uniformity + theorem symm_of_uniformity + theorem to_topological_space_bot + theorem to_topological_space_mono + theorem to_topological_space_supr + theorem to_topological_space_top + theorem to_topological_space_vmap + def totally_bounded + theorem totally_bounded_iff_filter + theorem totally_bounded_iff_ultrafilter + def uniform_continuous + theorem uniform_continuous_of_embedding + theorem uniform_continuous_quotient_mk + theorem uniform_continuous_uniformly_extend + theorem uniform_continuous_vmap + def uniform_embedding + def uniform_space.vmap + theorem uniform_space_eq + def uniformity + theorem uniformity_eq_symm + theorem uniformity_eq_uniformity_closure + theorem uniformity_eq_uniformity_interior + theorem uniformity_le_symm + theorem uniformity_lift_le_comp + theorem uniformity_lift_le_swap + theorem uniformly_extend_of_emb + theorem uniformly_extend_spec + theorem uniformly_extend_unique + theorem vmap_quotient_le_uniformity 2017-07-21 01:02:10-07:00 21aca92 Initial commit ESTIMATED CHANGES